From 55146b977a608485aab3f10e8d52f055c231f347 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 10 Feb 2025 15:02:12 +0100 Subject: [PATCH 001/698] REMOVE_EVS_DUPLICATES in acelp_core_dec_fx() --- lib_com/gs_inact_switching_fx.c | 65 +++++++++++++++++++++++++------- lib_com/gs_noisefill_fx.c | 55 ++++++++++++++++++--------- lib_com/options.h | 2 + lib_com/prot_fx.h | 3 ++ lib_dec/FEC_scale_syn_fx.c | 10 +++++ lib_dec/acelp_core_dec_fx.c | 57 +++++++++++++++++++++++++++- lib_dec/acelp_core_dec_ivas_fx.c | 15 +++++++- lib_dec/dec_gen_voic_fx.c | 14 ++++++- lib_dec/gs_dec_fx.c | 12 +++++- 9 files changed, 196 insertions(+), 37 deletions(-) diff --git a/lib_com/gs_inact_switching_fx.c b/lib_com/gs_inact_switching_fx.c index 5dfe6b1d6..52635d502 100644 --- a/lib_com/gs_inact_switching_fx.c +++ b/lib_com/gs_inact_switching_fx.c @@ -253,31 +253,68 @@ void Inac_switch_ematch_ivas_fx( exp = sub( exp, 14 ); IF( LT_16( i, 2 ) ) { - FOR( j = 0; j < 8; j++ ) +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( element_mode, EVS_MONO ) ) { - L_tmp = L_mult0( *pt_exc, ftmp ); - L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/ - *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/ - move16(); - pt_exc++; + FOR( j = 0; j < 8; j++ ) + { + L_tmp = L_mult( *pt_exc, ftmp ); + L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/ + *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/ + move16(); + pt_exc++; + } + } + ELSE +#endif + { + FOR( j = 0; j < 8; j++ ) + { + L_tmp = L_mult0( *pt_exc, ftmp ); + L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/ + *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/ + move16(); + pt_exc++; + } } } ELSE { - FOR( j = 0; j < 16; j++ ) +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( element_mode, EVS_MONO ) ) { - L_tmp = L_mult0( *pt_exc, ftmp ); - L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/ - *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/ - move16(); - pt_exc++; + FOR( j = 0; j < 16; j++ ) + { + L_tmp = L_mult( *pt_exc, ftmp ); + L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/ + *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/ + move16(); + pt_exc++; + } + } + ELSE +#endif + { + FOR( j = 0; j < 16; j++ ) + { + L_tmp = L_mult0( *pt_exc, ftmp ); + L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc) -> Q(15+Q_exc)*/ + *pt_exc = round_fx_sat( L_tmp ); /*Q_exc - 1*/ + move16(); + pt_exc++; + } } } } /* Going back to time */ - Scale_sig( dct_exc_tmp, 240, 1 ); // Q_exc - Scale_sig( exc2, 240, 1 ); // Q_exc +#ifdef REMOVE_EVS_DUPLICATES + IF( GT_16( element_mode, EVS_MONO ) ) +#endif + { + Scale_sig( dct_exc_tmp, 240, 1 ); // Q_exc + Scale_sig( exc2, 240, 1 ); // Q_exc + } edct_16fx( dct_exc_tmp, exc2, L_frame, 5, element_mode ); } diff --git a/lib_com/gs_noisefill_fx.c b/lib_com/gs_noisefill_fx.c index d2a576dbe..5cf285bf2 100644 --- a/lib_com/gs_noisefill_fx.c +++ b/lib_com/gs_noisefill_fx.c @@ -1412,32 +1412,51 @@ void highband_exc_dct_in_ivas_fx( } } #endif - Word16 Q_tmp = *Q_exc; - move16(); - Word16 Q_old = *Q_exc; - move16(); - Comp_and_apply_gain_ivas_fx( exc_diffQ, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 0, Qexc_diffQ, Q_exc ); - IF( exc_wo_nf != NULL ) +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( element_mode, EVS_MONO ) ) { - Comp_and_apply_gain_ivas_fx( exc_wo_nf, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 1, Qexc_diffQ, &Q_tmp ); - IF( GT_16( Q_tmp, *Q_exc ) ) - { - Scale_sig( exc_wo_nf, L_frame, sub( *Q_exc, Q_tmp ) ); - } - ELSE IF( LT_16( Q_tmp, *Q_exc ) ) + Comp_and_apply_gain_fx( exc_diffQ, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 0, Qexc_diffQ, *Q_exc ); + + IF( exc_wo_nf != NULL ) { - Scale_sig( exc_diffQ, L_frame, sub( Q_tmp, *Q_exc ) ); - *Q_exc = Q_tmp; - move16(); + Comp_and_apply_gain_fx( exc_wo_nf, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 1, Qexc_diffQ, *Q_exc ); + Vr_add( exc_dct_in, exc_wo_nf, exc_wo_nf, L_frame ); } - Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) ); - Vr_add( exc_dct_in, exc_wo_nf, exc_wo_nf, L_frame ); } ELSE { - Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) ); +#endif + Word16 Q_tmp = *Q_exc; + move16(); + Word16 Q_old = *Q_exc; + move16(); + Comp_and_apply_gain_ivas_fx( exc_diffQ, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 0, Qexc_diffQ, Q_exc ); + + IF( exc_wo_nf != NULL ) + { + Comp_and_apply_gain_ivas_fx( exc_wo_nf, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 1, Qexc_diffQ, &Q_tmp ); + IF( GT_16( Q_tmp, *Q_exc ) ) + { + Scale_sig( exc_wo_nf, L_frame, sub( *Q_exc, Q_tmp ) ); + } + ELSE IF( LT_16( Q_tmp, *Q_exc ) ) + { + Scale_sig( exc_diffQ, L_frame, sub( Q_tmp, *Q_exc ) ); + *Q_exc = Q_tmp; + move16(); + } + Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) ); + Vr_add( exc_dct_in, exc_wo_nf, exc_wo_nf, L_frame ); + } + ELSE + { + Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) ); + } +#ifdef REMOVE_EVS_DUPLICATES } +#endif + /*--------------------------------------------------------------------------------------* * add the correction layer to the LF bins, * and add the quantized pulses or the noise for the higher part of the spectrum diff --git a/lib_com/options.h b/lib_com/options.h index 1b2c15f87..c34882a0e 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -154,4 +154,6 @@ #define FIX_ISSUE_1245 /* Ittiam: Fix for issue 1245: Basop Encoder: Audible noise for silent Stereo input DTX on @24.4 kbps, @32 kbps*/ #define FIX_MINOR_SVD_WMOPS_MR1010X /* FhG: Minor WMOPS tuning, bit-exact to previous version, saves about 8.2 WMOPS for MR1010 */ #define SVD_WMOPS_OPT /* Ittiam : SVD related optimizations */ + +#define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions */ #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index fbd3b27f3..bef07e952 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -8242,6 +8242,9 @@ void FEC_scale_syn_ivas_fx( Word16 *mem_syn, /* o: initial synthesis filter states */ Word16 Q_exc, Word16 Q_syn, +#ifdef REMOVE_EVS_DUPLICATES + const Word16 element_mode, /* i : element mode */ +#endif const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */ const Word16 force_scaling /* i: force scaling */ ); diff --git a/lib_dec/FEC_scale_syn_fx.c b/lib_dec/FEC_scale_syn_fx.c index d664aa9fb..f6439b166 100644 --- a/lib_dec/FEC_scale_syn_fx.c +++ b/lib_dec/FEC_scale_syn_fx.c @@ -641,6 +641,9 @@ void FEC_scale_syn_ivas_fx( Word16 *mem_syn, /* o: initial synthesis filter states Q_syn*/ Word16 Q_exc, Word16 Q_syn, +#ifdef REMOVE_EVS_DUPLICATES + const Word16 element_mode, /* i : element mode */ +#endif const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */ const Word16 force_scaling /* i: force scaling */ ) @@ -735,8 +738,15 @@ void FEC_scale_syn_ivas_fx( /*-----------------------------------------------------------------* * Find the energy/gain at the end of the frame *-----------------------------------------------------------------*/ + tmp = sub( 3, getScaleFactor16( synth, L_frame ) ); + +#ifdef REMOVE_EVS_DUPLICATES + test(); + IF( tmp > 0 && GT_16( element_mode, EVS_MONO ) ) +#else IF( tmp > 0 ) +#endif { Word16 synth_tmp[L_FRAME16k]; Copy_Scale_sig( synth, synth_tmp, L_frame, -tmp ); // Q_synth - tmp diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index a41a0c813..e3770b997 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -777,14 +777,21 @@ ivas_error acelp_core_dec_fx( move16(); } +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_tmp, 1, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_tmp, 1, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); - +#endif test(); test(); IF( EQ_16( st_fx->coder_type, TRANSITION ) && LT_16( tc_subfr_fx, L_SUBFR ) && EQ_16( st_fx->L_frame, L_FRAME ) ) { +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_fx, 2, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_fx, 2, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#endif } } @@ -827,8 +834,12 @@ ivas_error acelp_core_dec_fx( if ( !tdm_lp_reuse_flag ) #endif { +#ifdef REMOVE_EVS_DUPLICATES + lsf_dec_ivas_fx( st_fx, tc_subfr_fx, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode, tdm_lsfQ_PCh ); +#else lsf_dec_fx( st_fx, tc_subfr_fx, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode, tdm_lsfQ_PCh ); +#endif } #ifdef ADD_LRTD else @@ -953,7 +964,11 @@ ivas_error acelp_core_dec_fx( IF( st_fx->stab_fac_fx == 0 && st_fx->old_bfi_cnt > 0 && NE_16( st_fx->clas_dec, VOICED_CLAS ) && NE_16( st_fx->clas_dec, ONSET ) && st_fx->relax_prev_lsf_interp == 0 && !( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && EQ_16( st_fx->idchan, 1 ) ) ) { +#ifdef REMOVE_EVS_DUPLICATES + int_lsp4_ivas_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 ); +#else int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 ); +#endif } /*---------------------------------------------------------------* @@ -1005,7 +1020,11 @@ ivas_error acelp_core_dec_fx( ELSE IF( EQ_16( st_fx->coder_type, UNVOICED ) ) { /* UNVOICED frames */ +#ifdef REMOVE_EVS_DUPLICATES + decod_unvoiced_ivas_fx( st_fx, Aq_fx, Es_pred_fx, uc_two_stage_flag, st_fx->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, gain_buf ); +#else decod_unvoiced_fx( st_fx, Aq_fx, st_fx->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, gain_buf ); +#endif } ELSE IF( EQ_16( st_fx->ppp_mode_dec, 1 ) ) { @@ -1026,17 +1045,26 @@ ivas_error acelp_core_dec_fx( } ELSE IF( EQ_16( st_fx->coder_type, AUDIO ) || ( ( st_fx->coder_type == INACTIVE ) && LE_32( st_fx->core_brate, MAX_GSC_INACTIVE_BRATE ) ) ) { +#ifdef REMOVE_EVS_DUPLICATES + decod_audio_ivas_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf, + 0, 0, 0, NULL ); +#else decod_audio_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf #ifdef ADD_LRTD , tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf #endif ); +#endif tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/ } ELSE { +#ifdef REMOVE_EVS_DUPLICATES + IF( NE_32( ( error = decod_gen_voic_ivas_fx( st_fx, st_fx->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf, 0, NULL ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = decod_gen_voic_fx( st_fx, st_fx->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf /*, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf*/ ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -1049,6 +1077,7 @@ ivas_error acelp_core_dec_fx( /* synthesis for ACELP core switching and SWB BWE */ syn_12k8_fx( st_fx->L_frame, Aq_fx, exc_fx, temp_buf_fx, st_fx->mem_syn1_fx, 1, st_fx->Q_exc, -1 ); + /* save and delay synthesis to be used by SWB BWE */ IF( hBWE_FD != NULL ) { @@ -1059,7 +1088,11 @@ ivas_error acelp_core_dec_fx( * Apply energy matching when switching to inactive frames *-----------------------------------------------------------------*/ +#ifdef REMOVE_EVS_DUPLICATES + Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode, 0, EVS_MONO ); +#else Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode ); +#endif /*------------------------------------------------------------* * Decode information and modify the excitation signal of stationary unvoiced frames *------------------------------------------------------------*/ @@ -1187,9 +1220,16 @@ ivas_error acelp_core_dec_fx( k = add( k, 1 ); } +#ifdef REMOVE_EVS_DUPLICATES + FEC_scale_syn_ivas_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, + &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, + exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 ); + +#else FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); +#endif test(); test(); @@ -1268,8 +1308,13 @@ ivas_error acelp_core_dec_fx( { save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx ); } + /* Apply energy matching when switching to inactive frames */ +#ifdef REMOVE_EVS_DUPLICATES + Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode, 0, EVS_MONO ); +#else Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode ); +#endif /* udate past excitation signals for LD music post-filter */ IF( hMusicPF != NULL ) @@ -1343,9 +1388,15 @@ ivas_error acelp_core_dec_fx( * (smoothing is performed in the excitation domain and signal is resynthesized after) *------------------------------------------------------------*/ +#ifdef REMOVE_EVS_DUPLICATES + FEC_scale_syn_ivas_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, + &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, + exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 ); +#else FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); +#endif } /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */ @@ -1440,7 +1491,11 @@ ivas_error acelp_core_dec_fx( Copy( syn_fx, temp_buf + L_SYN_MEM, L_FRAME16k ); st_fx->hPFstat->on = 1; move16(); +#ifdef REMOVE_EVS_DUPLICATES + formant_post_filt_ivas_fx( st_fx->hPFstat, temp_buf + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME16k, st_fx->lp_noise, st_fx->total_brate, 0 ); +#else formant_post_filt_fx( st_fx->hPFstat, temp_buf + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME16k, st_fx->lp_noise, st_fx->total_brate, 0 ); +#endif } ELSE IF( GE_16( st_fx->last_bwidth, WB ) ) { diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 24427c5d2..8d6b63833 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -47,12 +47,15 @@ #include "wmc_auto.h" #include "ivas_prot_fx.h" +static void rescale_fdCngDec( HANDLE_FD_CNG_DEC hFdCngDec, Word16 old_NoiseExp ); + + /*-------------------------------------------------------------------* * acelp_core_dec_ivas_fx() * * ACELP core decoder *-------------------------------------------------------------------*/ -static void rescale_fdCngDec( HANDLE_FD_CNG_DEC hFdCngDec, Word16 old_NoiseExp ); + ivas_error acelp_core_dec_ivas_fx( Decoder_State *st, /* i/o: decoder state structure */ Word16 output_fx[], /* o : synthesis @internal Fs Q_syn*/ @@ -350,6 +353,7 @@ ivas_error acelp_core_dec_ivas_fx( int_fs = INT_FS_16k; move16(); } + test(); /* reset post-filter in case of switching */ if ( st->hPFstat != NULL && ( st->hPFstat->on == 0 ) ) @@ -368,6 +372,7 @@ ivas_error acelp_core_dec_ivas_fx( move16(); } test(); + /* TD stereo parameters */ IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( st->idchan, 1 ) ) { @@ -1225,7 +1230,11 @@ ivas_error acelp_core_dec_ivas_fx( Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, NB_SUBFR16k, -Q6 ); // Q0 FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction, &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, +#ifdef REMOVE_EVS_DUPLICATES + exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 ); +#else exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, 0 ); +#endif test(); test(); test(); @@ -1380,7 +1389,11 @@ ivas_error acelp_core_dec_ivas_fx( FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction, &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, +#ifdef REMOVE_EVS_DUPLICATES + exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 ); +#else exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, 0 ); +#endif } /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */ diff --git a/lib_dec/dec_gen_voic_fx.c b/lib_dec/dec_gen_voic_fx.c index 1abd3d58b..190431fb8 100644 --- a/lib_dec/dec_gen_voic_fx.c +++ b/lib_dec/dec_gen_voic_fx.c @@ -809,8 +809,18 @@ ivas_error decod_gen_voic_ivas_fx( } ELSE { - enhancer_ivas_fx2( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx, - norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + enhancer_fx( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx, + norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); + } + ELSE +#endif + { + enhancer_ivas_fx2( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx, + norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); + } } p_Aq_fx += ( M + 1 ); diff --git a/lib_dec/gs_dec_fx.c b/lib_dec/gs_dec_fx.c index c237bc987..93c346a7d 100644 --- a/lib_dec/gs_dec_fx.c +++ b/lib_dec/gs_dec_fx.c @@ -1514,7 +1514,17 @@ void gsc_dec_ivas_fx( { i--; } - mean_gain = gsc_gaindec_ivas_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */ + +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + mean_gain = gsc_gaindec_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */ + } + ELSE +#endif + { + mean_gain = gsc_gaindec_ivas_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */ + } #else mean_gain = gsc_gaindec_fx( st_fx, Ener_per_bd_iQ, st_fx->core_brate, hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); -- GitLab From ef2485345725198d55c50d1db33506c25ea13845 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 10 Feb 2025 16:13:32 +0100 Subject: [PATCH 002/698] fix --- lib_dec/dec_gen_voic_fx.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib_dec/dec_gen_voic_fx.c b/lib_dec/dec_gen_voic_fx.c index 190431fb8..8ee335e3f 100644 --- a/lib_dec/dec_gen_voic_fx.c +++ b/lib_dec/dec_gen_voic_fx.c @@ -699,7 +699,16 @@ ivas_error decod_gen_voic_ivas_fx( } /* update LP filtered gains for the case of frame erasures */ - lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame ); + } + ELSE +#endif + { + lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame ); + } /*----------------------------------------------------------------------* * Find the total excitation -- GitLab From 68e8c9810d6eea2113b278f0d618cd629340e9c2 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 10 Feb 2025 17:04:05 +0100 Subject: [PATCH 003/698] fix --- lib_com/gs_noisefill_fx.c | 5 +++++ lib_dec/acelp_core_dec_fx.c | 3 +-- lib_dec/gs_dec_fx.c | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib_com/gs_noisefill_fx.c b/lib_com/gs_noisefill_fx.c index 5cf285bf2..1ccc697fb 100644 --- a/lib_com/gs_noisefill_fx.c +++ b/lib_com/gs_noisefill_fx.c @@ -1496,7 +1496,12 @@ void highband_exc_dct_in_ivas_fx( Q_hb_exc = 0; move16(); envelop_modify_fx( exc_diffQ, seed_tcx, last_bin, Ener_per_bd_iQ, *Q_exc, &Q_hb_exc ); +#ifdef REMOVE_EVS_DUPLICATES + test(); + IF( GT_16( *Q_exc, Q_hb_exc ) && GT_16( element_mode, EVS_MONO ) ) +#else IF( GT_16( *Q_exc, Q_hb_exc ) ) +#endif { Scale_sig( exc_wo_nf, L_frame, sub( Q_hb_exc, *Q_exc ) ); *Q_exc = Q_hb_exc; diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index e3770b997..779df2fa4 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -1046,8 +1046,7 @@ ivas_error acelp_core_dec_fx( ELSE IF( EQ_16( st_fx->coder_type, AUDIO ) || ( ( st_fx->coder_type == INACTIVE ) && LE_32( st_fx->core_brate, MAX_GSC_INACTIVE_BRATE ) ) ) { #ifdef REMOVE_EVS_DUPLICATES - decod_audio_ivas_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf, - 0, 0, 0, NULL ); + decod_audio_ivas_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf, 0, 0, 0, NULL ); #else decod_audio_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf #ifdef ADD_LRTD diff --git a/lib_dec/gs_dec_fx.c b/lib_dec/gs_dec_fx.c index 93c346a7d..72e07e57f 100644 --- a/lib_dec/gs_dec_fx.c +++ b/lib_dec/gs_dec_fx.c @@ -993,9 +993,11 @@ void decod_audio_ivas_fx( } } #endif + Word16 Q_exc_old = st_fx->Q_exc; move16(); gsc_dec_ivas_fx( st_fx, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st_fx->coder_type, &last_bin, lsf_new, exc_wo_nf, &st_fx->Q_exc ); + IF( NE_16( Q_exc_old, st_fx->Q_exc ) ) { Q_exc_old = sub( Q_exc_old, st_fx->Q_exc ); -- GitLab From fb7b4020601f61bc9e4fd51df65763967bf977a6 Mon Sep 17 00:00:00 2001 From: vaclav Date: Mon, 10 Feb 2025 17:47:12 +0100 Subject: [PATCH 004/698] fix --- lib_dec/dec_uv_fx.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/lib_dec/dec_uv_fx.c b/lib_dec/dec_uv_fx.c index ffb49be38..6a15732a0 100644 --- a/lib_dec/dec_uv_fx.c +++ b/lib_dec/dec_uv_fx.c @@ -247,10 +247,18 @@ void decod_unvoiced_ivas_fx( * Excitation enhancements (update of total excitation signal) *----------------------------------------------------------------*/ - /*enhancer_fx(st_fx->core_brate, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx, - norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &(st_fx->dm_fx), st_fx->Q_exc);*/ - enhancer_ivas_fx( MODE1, st_fx->core_brate, uc_two_stage_flag, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx, - norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx /*Q9/Q12?*/, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + enhancer_fx( st_fx->core_brate, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx, + norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); + } + ELSE +#endif + { + enhancer_ivas_fx( MODE1, st_fx->core_brate, uc_two_stage_flag, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx, + norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx /*Q9/Q12?*/, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); + } Word16 tmp_idx; tmp_idx = 0; @@ -258,9 +266,16 @@ void decod_unvoiced_ivas_fx( if ( i_subfr_fx != 0 ) { idiv1616( i_subfr_fx, L_SUBFR ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + tmp_idx = idiv1616( i_subfr_fx, L_SUBFR ); + } +#endif } voice_factors_fx[tmp_idx] = 0; move16(); + interp_code_5over2_fx( &exc_fx[i_subfr_fx], &bwe_exc_fx[( ( i_subfr_fx * 2 * HIBND_ACB_L_FAC ) >> 1 )], L_SUBFR ); p_Aq_fx += ( M + 1 ); -- GitLab From ba6f7e27c1e7cf4abb7f2cdd755c9afa0fe11ba8 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 11 Feb 2025 10:35:49 +0100 Subject: [PATCH 005/698] REMOVE_EVS_DUPLICATES2 --- lib_com/options.h | 1 + lib_dec/acelp_core_dec_fx.c | 15 ++++++++++++++- lib_dec/fd_cng_dec_fx.c | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index c34882a0e..f45ee973d 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -156,4 +156,5 @@ #define SVD_WMOPS_OPT /* Ittiam : SVD related optimizations */ #define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions */ +#define REMOVE_EVS_DUPLICATES2 #endif diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index 779df2fa4..46826654e 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -432,7 +432,11 @@ ivas_error acelp_core_dec_fx( } /* update synthesis filter memories */ +#ifdef REMOVE_EVS_DUPLICATES2 + ivas_synth_mem_updt2_fx( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec ); +#else synth_mem_updt2( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec ); +#endif #else synth_mem_updt2( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, DEC ); #endif @@ -630,8 +634,11 @@ ivas_error acelp_core_dec_fx( /* decode CNG parameters */ IF( st_fx->cng_type == LP_CNG ) { - +#ifdef REMOVE_EVS_DUPLICATES2 + CNG_dec_ivas_fx( st_fx, st_fx->last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env ); +#else CNG_dec_fx( st_fx, st_fx->last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env ); +#endif #ifdef IVAS_CODE local_element_mode = st_fx->element_mode; move16(); @@ -684,6 +691,7 @@ ivas_error acelp_core_dec_fx( } } #endif + //generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 1, nchan_out ); generate_comfort_noise_dec_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 2, -1 ); FdCng_exc( st_fx->hFdCngDec->hFdCngCom, &st_fx->CNG_mode, st_fx->L_frame, st_fx->lsp_old_fx, st_fx->first_CNG, st_fx->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx ); @@ -1556,12 +1564,17 @@ ivas_error acelp_core_dec_fx( move32(); } /*Noise estimate*/ +#ifdef REMOVE_EVS_DUPLICATES2 + IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) && !st_fx->cng_ism_flag ) +#else IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) /* && !st->cng_ism_flag IVAS_CODE */ ) +#endif { #ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT PMT( "Code for IVAS_CODE_CNG_FIX185_PLC_FADEOUT not done" ) ApplyFdCng_fx( syn, st_fx->Q_syn, NULL, realBuffer, imagBuffer, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); #else + //ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, realBuffer, imagBuffer, NULL, st_fx, 0, ( st_fx->coder_type == AUDIO && !st_fx->GSC_noisy_speech ) ); ApplyFdCng_fx( syn_fx, st_fx->Q_syn, realBuffer, imagBuffer, NULL, st_fx, 0, ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) ); #endif } diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index c683b25b6..0b2682f3a 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -955,7 +955,12 @@ Word16 ApplyFdCng_fx( test(); IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { +#ifdef REMOVE_EVS_DUPLICATES2 + scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); + +#else scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); +#endif } hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp; move16(); @@ -1037,8 +1042,13 @@ Word16 ApplyFdCng_fx( IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) ) { /* At initialization, interpolate the bin/band-wise levels from the partition levels */ +#ifdef REMOVE_EVS_DUPLICATES2 + scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, + hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); +#else scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); +#endif *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; move16(); } @@ -1054,8 +1064,13 @@ Word16 ApplyFdCng_fx( /* Interpolate the CLDFB band levels from the SID (partition) levels */ IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) ) { +#ifdef REMOVE_EVS_DUPLICATES2 + scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, + hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); +#else scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); +#endif *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; move16(); -- GitLab From 3241b0c1448ff4da5a680ef8e0c7c026c905b809 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 11 Feb 2025 13:10:14 +0100 Subject: [PATCH 006/698] REMOVE_EVS_DUPLICATES2 --- lib_dec/acelp_core_dec_fx.c | 129 ++++++++++++++++++++++++++++++++++-- lib_dec/fd_cng_dec_fx.c | 45 +++++++++++-- 2 files changed, 164 insertions(+), 10 deletions(-) diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index 46826654e..db6ba759d 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -661,7 +661,7 @@ ivas_error acelp_core_dec_fx( test(); IF( EQ_32( st_fx->core_brate, SID_2k40 ) && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) { - FdCng_decodeSID_fx( st_fx->hFdCngDec->hFdCngCom, st_fx ); + FdCng_decodeSID_fx( st_fx->hFdCngDec->hFdCngCom, st_fx ); // VE: 2 variants needed *sid_bw = 0; move16(); } @@ -691,8 +691,7 @@ ivas_error acelp_core_dec_fx( } } #endif - //generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 1, nchan_out ); - generate_comfort_noise_dec_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 2, -1 ); + generate_comfort_noise_dec_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 2, -1 ); // VE: 2 variants needed FdCng_exc( st_fx->hFdCngDec->hFdCngCom, &st_fx->CNG_mode, st_fx->L_frame, st_fx->lsp_old_fx, st_fx->first_CNG, st_fx->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx ); @@ -709,10 +708,29 @@ ivas_error acelp_core_dec_fx( } i = st_fx->Q_exc; move16(); +#ifdef REMOVE_EVS_DUPLICATES2 + test(); + IF( st_fx->hMusicPF && st_fx->hGSCDec ) + { + Rescale_exc( st_fx->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, + imult1616( st_fx->L_frame, HIBND_ACB_L_FAC ), 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); + } + IF( st_fx->hPFstat != NULL ) + { + Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale, + &st_fx->mem_deemph_fx, st_fx->hBPF->pst_old_syn_fx, &st_fx->hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 0, 0, NULL ); + } + ELSE + { + Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale, + &st_fx->mem_deemph_fx, NULL, NULL, &st_fx->agc_mem_fx[1], NULL, 0, 0, NULL ); + } +#else Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, st_fx->L_frame * HIBND_ACB_L_FAC, 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale, &st_fx->mem_deemph_fx, hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 0, 0, NULL ); +#endif Copy_Scale_sig( exc2_fx, exc2_fx, st_fx->L_frame, sub( st_fx->Q_exc, i ) ); // Q_exc /* update past excitation signals for LD music post-filter */ @@ -725,7 +743,7 @@ ivas_error acelp_core_dec_fx( FOR( i = 0; i < DCT_L_POST; i++ ) { /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/ - hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) ); + hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) ); // VE: 2 variants needed move16(); } } @@ -1574,8 +1592,11 @@ ivas_error acelp_core_dec_fx( PMT( "Code for IVAS_CODE_CNG_FIX185_PLC_FADEOUT not done" ) ApplyFdCng_fx( syn, st_fx->Q_syn, NULL, realBuffer, imagBuffer, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); #else - //ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, realBuffer, imagBuffer, NULL, st_fx, 0, ( st_fx->coder_type == AUDIO && !st_fx->GSC_noisy_speech ) ); +#ifdef REMOVE_EVS_DUPLICATES2 + ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, realBuffer, imagBuffer, NULL, st_fx, 0, ( st_fx->coder_type == AUDIO && !st_fx->GSC_noisy_speech ) ); +#else ApplyFdCng_fx( syn_fx, st_fx->Q_syn, realBuffer, imagBuffer, NULL, st_fx, 0, ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) ); +#endif #endif } /* CNA: Generate additional comfort noise to mask potential coding artefacts */ @@ -1759,6 +1780,82 @@ ivas_error acelp_core_dec_fx( bass_psfilter_fx( st_fx->hBPF, st_fx->Opt_AMR_WB, syn_fx, st_fx->L_frame, pitch_buf_fx, st_fx->bpf_off, st_fx->stab_fac_fx, &st_fx->stab_fac_smooth_fx, st_fx->coder_type, st_fx->Q_syn, bpf_error_signal ); } + +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + /* analysis of the synthesis at internal sampling rate */ + cldfbAnalysisFiltering( st_fx->cldfbAna, realBuffer, imagBuffer, &scaleFactor, syn_fx, negate( st_fx->Q_syn ), CLDFB_NO_COL_MAX, workBuffer ); + + scaleFactor.hb_scale = scaleFactor.lb_scale; + move16(); + + /* analysis and add the BPF error signal */ + i = 0; + move16(); + if ( st_fx->bpf_off == 0 ) + { + i = CLDFB_NO_COL_MAX; + move16(); + } + + addBassPostFilter_fx( bpf_error_signal, realBuffer, imagBuffer, st_fx->cldfbBPF, workBuffer, negate( st_fx->Q_syn ), + i, st_fx->cldfbAna->no_col, st_fx->cldfbAna->no_channels, &scaleFactor ); + + /* set output mask for upsampling */ + IF( EQ_16( st_fx->bwidth, NB ) ) + { + /* set NB mask for upsampling */ + st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, 10 ); + move16(); + } + ELSE IF( NE_16( st_fx->cldfbSyn->bandsToZero, sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ) ) ) + { + /* in case of BW switching, re-init to default */ + st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ); + move16(); + } + + /*WB/SWB-FD_CNG*/ + scaleFactor.hb_scale = scaleFactor.lb_scale; + move16(); + + test(); + IF( !st_fx->cng_sba_flag || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) + { + test(); + test(); + test(); + IF( ( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) && ( EQ_16( st_fx->cng_type, FD_CNG ) ) && ( LT_16( st_fx->hFdCngDec->hFdCngCom->numCoreBands, st_fx->cldfbSyn->no_channels ) ) ) + { + generate_comfort_noise_dec_hf_fx( realBuffer, imagBuffer, &scaleFactor.hb_scale, st_fx ); + + st_fx->cldfbSyn->bandsToZero = 0; + move16(); + IF( LT_16( st_fx->hFdCngDec->hFdCngCom->regularStopBand, st_fx->cldfbSyn->no_channels ) ) + { + st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->hFdCngDec->hFdCngCom->regularStopBand ); + move16(); + } + st_fx->cldfbSyn->lsb = st_fx->cldfbAna->no_channels; + move16(); + } + } + + /* synthesis of the combined signal */ + st_fx->Q_syn2 = st_fx->Q_syn; + move16(); + cldfbSynthesisFiltering( st_fx->cldfbSyn, realBuffer, imagBuffer, &scaleFactor, synth_out, negate( st_fx->Q_syn2 ), CLDFB_NO_COL_MAX, workBuffer ); + + /* Bring CLDFB output to Q0 */ + Scale_sig( synth_out, output_frame, negate( st_fx->Q_syn2 ) ); + st_fx->Q_syn2 = 0; + move16(); + + /* save synthesis - needed in case of core switching */ + Copy( synth_out, st_fx->previoussynth_fx, output_frame ); + } +#else test(); IF( NE_16( st_fx->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft ) { @@ -1881,6 +1978,7 @@ ivas_error acelp_core_dec_fx( /* save synthesis - needed in case of core switching */ Copy( synth_out, st_fx->previoussynth_fx, output_frame ); } +#endif #ifdef IVAS_CODE ELSE { @@ -1924,13 +2022,34 @@ ivas_error acelp_core_dec_fx( IF( ( EQ_16( st_fx->L_frame, L_FRAME ) && NE_16( st_fx->bwidth, NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st_fx->extl, -1 ) || EQ_16( st_fx->extl, SWB_CNG ) || ( EQ_16( st_fx->extl, WB_BWE ) && st_fx->extl_brate == 0 && NE_16( st_fx->coder_type, AUDIO ) ) ) ) ) { +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, + st_fx->Q_syn2, st_fx->hBWE_zero->delay_syn_hf_fx, &st_fx->hBWE_zero->memExp1, st_fx->hBWE_zero->mem_hp_interp_fx, st_fx->extl, st_fx->CNG_mode ); + } + ELSE + { + hf_synth_reset_fx( st_fx->hBWE_zero ); + } +#else hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, st_fx->Q_syn2, st_fx->hBWE_zero->delay_syn_hf_fx, &st_fx->hBWE_zero->memExp1, st_fx->hBWE_zero->mem_hp_interp_fx, st_fx->extl, st_fx->CNG_mode ); + +#endif } +#ifdef REMOVE_EVS_DUPLICATES2 ELSE { hf_synth_reset_fx( st_fx->hBWE_zero ); +#ifdef MSAN_FIX + IF( NE_16( st_fx->element_mode, EVS_MONO ) ) // TBV: tmp hack - it is a bug in EVS but conditon is here to keep EVS bit-exact + { + set16_fx( st_fx->hBWE_zero->mem_hp400_fx, 0, 6 ); + } +#endif } +#endif } /*-----------------------------------------------------------------* diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 0b2682f3a..7b4eef9f2 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -957,7 +957,6 @@ Word16 ApplyFdCng_fx( { #ifdef REMOVE_EVS_DUPLICATES2 scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); - #else scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); #endif @@ -1279,7 +1278,16 @@ Word16 ApplyFdCng_ivas_fx( ( !st->BER_detect ) ) { /* Perform noise estimation at the decoder */ - perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); + } + ELSE +#endif + { + perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); + } /* Update the shaping parameters */ test(); @@ -1522,7 +1530,16 @@ Word16 ApplyFdCng_ivas_fx( IF( hFdCngCom->active_frame_counter > 0 ) { /* Perform noise estimation in active frames in the decoder for downward updates */ - perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); + } + ELSE +#endif + { + perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); + } } } @@ -1580,7 +1597,16 @@ Word16 ApplyFdCng_ivas_fx( IF( st != NULL && EQ_16( st->cng_type, LP_CNG ) ) { /* Perform noise estimation on inactive phase at the decoder */ - perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); + } + ELSE +#endif + { + perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); + } /* Update the shaping parameters */ @@ -1833,7 +1859,16 @@ Word16 ApplyFdCng_ivas_fx( IF( EQ_16( st->codec_mode, MODE2 ) ) { /* Generate comfort noise during SID or zero frames */ - generate_comfort_noise_dec_ivas_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + generate_comfort_noise_dec_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 ); + } + ELSE +#endif + { + generate_comfort_noise_dec_ivas_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 ); + } } BREAK; -- GitLab From ee29e3294f378e60e425a50e62ffa1b2875de886 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 11 Feb 2025 13:54:52 +0100 Subject: [PATCH 007/698] fix --- lib_dec/fd_cng_dec_fx.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 7b4eef9f2..bf10d9c17 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -955,11 +955,7 @@ Word16 ApplyFdCng_fx( test(); IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { -#ifdef REMOVE_EVS_DUPLICATES2 - scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); -#else scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); -#endif } hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp; move16(); @@ -1041,13 +1037,8 @@ Word16 ApplyFdCng_fx( IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) ) { /* At initialization, interpolate the bin/band-wise levels from the partition levels */ -#ifdef REMOVE_EVS_DUPLICATES2 - scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, - hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); -#else scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); -#endif *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; move16(); } @@ -1063,14 +1054,8 @@ Word16 ApplyFdCng_fx( /* Interpolate the CLDFB band levels from the SID (partition) levels */ IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) ) { -#ifdef REMOVE_EVS_DUPLICATES2 - scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, - hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); -#else scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); -#endif - *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; move16(); } -- GitLab From 5e2edf84fe18ea27bb9d8c91ff2d6f0e7ffcd9cb Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 11 Feb 2025 14:34:33 +0100 Subject: [PATCH 008/698] fix --- lib_dec/amr_wb_dec_fx.c | 8 ++++++++ lib_dec/evs_dec_fx.c | 4 ++++ lib_dec/fd_cng_dec_fx.c | 30 ++++++++++++++++++++++++++---- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/lib_dec/amr_wb_dec_fx.c b/lib_dec/amr_wb_dec_fx.c index d45655903..b3fbc0233 100644 --- a/lib_dec/amr_wb_dec_fx.c +++ b/lib_dec/amr_wb_dec_fx.c @@ -374,7 +374,11 @@ ivas_error amr_wb_dec_fx( IF( EQ_32( st_fx->core_brate, FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_1k75 ) ) { /* decode CNG parameters */ +#ifdef REMOVE_EVS_DUPLICATES2 + CNG_dec_ivas_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, &sid_bw, q_env ); +#else CNG_dec_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, &sid_bw, q_env ); +#endif /* comfort noise generation */ CNG_exc_fx( st_fx->core_brate, L_FRAME, &st_fx->hTdCngDec->Enew_fx, &st_fx->hTdCngDec->cng_seed, exc_fx, exc2_fx, &st_fx->lp_ener_fx, st_fx->last_core_brate, @@ -795,8 +799,12 @@ ivas_error amr_wb_dec_fx( #ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT PMT( "Fixed point not done here " ) ApplyFdCng_fx( syn, NULL, NULL, NULL, st, 0, 0 ); +#else +#ifdef REMOVE_EVS_DUPLICATES2 + ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, NULL, NULL, NULL, st_fx, 0, 0 ); #else ApplyFdCng_fx( syn_fx, st_fx->Q_syn, NULL, NULL, NULL, st_fx, 0, 0 ); +#endif #endif st_fx->hFdCngDec->hFdCngCom->frame_type_previous = st_fx->m_frame_type; move16(); diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index de6448433..fee893c4b 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -999,8 +999,12 @@ ivas_error evs_dec_fx( move32(); #ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT ApplyFdCng_fx( output, NULL, realBuffer, imagBuffer, st, concealWholeFrame, 0 ); +#else +#ifdef REMOVE_EVS_DUPLICATES2 + ApplyFdCng_ivas_fx( output_sp, 0, NULL, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); #else ApplyFdCng_fx( output_sp, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); +#endif #endif /* Generate additional comfort noise to mask potential coding artefacts */ test(); diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index bf10d9c17..0fba4e644 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1276,7 +1276,14 @@ Word16 ApplyFdCng_ivas_fx( /* Update the shaping parameters */ test(); - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); + } + ELSE +#endif + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); } @@ -1596,7 +1603,14 @@ Word16 ApplyFdCng_ivas_fx( /* Update the shaping parameters */ test(); - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); + } + ELSE +#endif + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); } @@ -1675,8 +1689,16 @@ Word16 ApplyFdCng_ivas_fx( IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) ) { /* At initialization, interpolate the bin/band-wise levels from the partition levels */ - scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, - hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); + } + ELSE +#endif + { + scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); + } *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; move16(); } -- GitLab From 5826482915088a6b53715c625a974c00d21004a1 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 11 Feb 2025 15:19:24 +0100 Subject: [PATCH 009/698] fix --- lib_dec/fd_cng_dec_fx.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 0fba4e644..af670f0d0 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1711,8 +1711,16 @@ Word16 ApplyFdCng_ivas_fx( /* Interpolate the CLDFB band levels from the SID (partition) levels */ IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) ) { - scalebands_fx( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, - hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + scalebands( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); + } + ELSE +#endif + { + scalebands_fx( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); + } *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; move16(); -- GitLab From e8fa2b8809206c5783edfbecea256352e97d28f3 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 11 Feb 2025 15:52:56 +0100 Subject: [PATCH 010/698] fix --- lib_dec/acelp_core_dec_fx.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index db6ba759d..3a96a6225 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -712,8 +712,19 @@ ivas_error acelp_core_dec_fx( test(); IF( st_fx->hMusicPF && st_fx->hGSCDec ) { - Rescale_exc( st_fx->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, - imult1616( st_fx->L_frame, HIBND_ACB_L_FAC ), 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + // VE: TBV: 'st_fx->L_frame * HIBND_ACB_L_FAC' should be corrected + Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, + st_fx->L_frame * HIBND_ACB_L_FAC, 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); + } + ELSE +#endif + { + Rescale_exc( st_fx->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, + imult1616( st_fx->L_frame, HIBND_ACB_L_FAC ), 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); + } } IF( st_fx->hPFstat != NULL ) { @@ -2043,7 +2054,7 @@ ivas_error acelp_core_dec_fx( { hf_synth_reset_fx( st_fx->hBWE_zero ); #ifdef MSAN_FIX - IF( NE_16( st_fx->element_mode, EVS_MONO ) ) // TBV: tmp hack - it is a bug in EVS but conditon is here to keep EVS bit-exact + IF( NE_16( st_fx->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but conditon is here to keep EVS bit-exact { set16_fx( st_fx->hBWE_zero->mem_hp400_fx, 0, 6 ); } -- GitLab From 4276239737d482ee265d2eec90166ed4ee51c48a Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 11 Feb 2025 20:34:33 +0100 Subject: [PATCH 011/698] remove acelp_core_dec_fx() --- lib_dec/acelp_core_dec_fx.c | 18 +- lib_dec/acelp_core_dec_ivas_fx.c | 905 +++++++++++++++++++------------ lib_dec/amr_wb_dec_fx.c | 4 +- lib_dec/decision_matrix_dec_fx.c | 15 + lib_dec/evs_dec_fx.c | 7 +- lib_dec/fd_cng_dec_fx.c | 16 +- 6 files changed, 606 insertions(+), 359 deletions(-) diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index 3a96a6225..fc35cb754 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -432,7 +432,7 @@ ivas_error acelp_core_dec_fx( } /* update synthesis filter memories */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES ivas_synth_mem_updt2_fx( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec ); #else synth_mem_updt2( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec ); @@ -634,7 +634,7 @@ ivas_error acelp_core_dec_fx( /* decode CNG parameters */ IF( st_fx->cng_type == LP_CNG ) { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES CNG_dec_ivas_fx( st_fx, st_fx->last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env ); #else CNG_dec_fx( st_fx, st_fx->last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env ); @@ -708,11 +708,11 @@ ivas_error acelp_core_dec_fx( } i = st_fx->Q_exc; move16(); -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES test(); IF( st_fx->hMusicPF && st_fx->hGSCDec ) { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { // VE: TBV: 'st_fx->L_frame * HIBND_ACB_L_FAC' should be corrected @@ -1593,7 +1593,7 @@ ivas_error acelp_core_dec_fx( move32(); } /*Noise estimate*/ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) && !st_fx->cng_ism_flag ) #else IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) /* && !st->cng_ism_flag IVAS_CODE */ ) @@ -1603,7 +1603,7 @@ ivas_error acelp_core_dec_fx( PMT( "Code for IVAS_CODE_CNG_FIX185_PLC_FADEOUT not done" ) ApplyFdCng_fx( syn, st_fx->Q_syn, NULL, realBuffer, imagBuffer, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); #else -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, realBuffer, imagBuffer, NULL, st_fx, 0, ( st_fx->coder_type == AUDIO && !st_fx->GSC_noisy_speech ) ); #else ApplyFdCng_fx( syn_fx, st_fx->Q_syn, realBuffer, imagBuffer, NULL, st_fx, 0, ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) ); @@ -1792,7 +1792,7 @@ ivas_error acelp_core_dec_fx( st_fx->stab_fac_fx, &st_fx->stab_fac_smooth_fx, st_fx->coder_type, st_fx->Q_syn, bpf_error_signal ); } -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { /* analysis of the synthesis at internal sampling rate */ @@ -2033,7 +2033,7 @@ ivas_error acelp_core_dec_fx( IF( ( EQ_16( st_fx->L_frame, L_FRAME ) && NE_16( st_fx->bwidth, NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st_fx->extl, -1 ) || EQ_16( st_fx->extl, SWB_CNG ) || ( EQ_16( st_fx->extl, WB_BWE ) && st_fx->extl_brate == 0 && NE_16( st_fx->coder_type, AUDIO ) ) ) ) ) { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, @@ -2049,7 +2049,7 @@ ivas_error acelp_core_dec_fx( #endif } -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES ELSE { hf_synth_reset_fx( st_fx->hBWE_zero ); diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 8d6b63833..f02e6d337 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -151,7 +151,6 @@ ivas_error acelp_core_dec_ivas_fx( error = IVAS_ERR_OK; move32(); - test(); test(); test(); @@ -664,11 +663,21 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( EQ_32( st->core_brate, SID_2k40 ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { - Word16 old_NoiseEstExp = st->hFdCngDec->hFdCngCom->sidNoiseEstExp; - move16(); - FdCng_decodeSID_ivas_fx( st ); - rescale_fdCngDec( st->hFdCngDec, sub( old_NoiseEstExp, st->hFdCngDec->hFdCngCom->sidNoiseEstExp ) ); - Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, sub( norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] ), Q2 ) ); // Qx +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + FdCng_decodeSID_fx( st->hFdCngDec->hFdCngCom, st ); + } + ELSE +#endif + { + Word16 old_NoiseEstExp = st->hFdCngDec->hFdCngCom->sidNoiseEstExp; + move16(); + FdCng_decodeSID_ivas_fx( st ); + rescale_fdCngDec( st->hFdCngDec, sub( old_NoiseEstExp, st->hFdCngDec->hFdCngCom->sidNoiseEstExp ) ); + Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, sub( norm_s( st->hFdCngDec->hFdCngCom->A_cng[0] ), Q2 ) ); // Qx + } + *sid_bw = 0; move16(); } @@ -720,7 +729,16 @@ ivas_error acelp_core_dec_ivas_fx( } } - generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 1, nchan_out ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + generate_comfort_noise_dec_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 2, -1 ); + } + ELSE +#endif + { + generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 1, nchan_out ); + } FdCng_exc( st->hFdCngDec->hFdCngCom, &st->CNG_mode, st->L_frame, st->lsp_old_fx, st->first_CNG, st->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx ); @@ -740,8 +758,19 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( st->hMusicPF && st->hGSCDec ) { - Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame, - imult1616( st->L_frame, HIBND_ACB_L_FAC ), 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + // VE: TBV: 'st_fx->L_frame * HIBND_ACB_L_FAC' should be corrected + Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame, + st->L_frame * HIBND_ACB_L_FAC, 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE ); + } + ELSE +#endif + { + Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame, + imult1616( st->L_frame, HIBND_ACB_L_FAC ), 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE ); + } } IF( st->hPFstat != NULL ) { @@ -763,14 +792,26 @@ ivas_error acelp_core_dec_ivas_fx( /* Update music post processing values */ /* Filter energies update */ - FOR( i = 0; i < DCT_L_POST; i++ ) +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) { - st->hMusicPF->filt_lfE_fx[i] = add( 9830, mult_r( 22937, st->hMusicPF->filt_lfE_fx[i] ) ); // Q15, 9830 =.3f in Q15, 22937=.7f in Q15 - move16(); + FOR( i = 0; i < DCT_L_POST; i++ ) + { + st->hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, st->hMusicPF->filt_lfE_fx[i] ) ); + move16(); + } + } + ELSE +#endif + { + FOR( i = 0; i < DCT_L_POST; i++ ) + { + st->hMusicPF->filt_lfE_fx[i] = add( 9830, mult_r( 22937, st->hMusicPF->filt_lfE_fx[i] ) ); // Q15, 9830 =.3f in Q15, 22937=.7f in Q15 + move16(); + } } } - /* synthesis at 12.8kHz sampling rate */ #ifndef FIX_1100_REMOVE_LPC_RESCALING Aq_fx[0] = ONE_IN_Q12; @@ -778,15 +819,28 @@ ivas_error acelp_core_dec_ivas_fx( move16(); syn_12k8_fx( st->L_frame, Aq_fx, exc2_fx, psyn_fx, st->mem_syn2_fx, 1, st->Q_exc, st->Q_syn ); syn_12k8_fx( st->L_frame, Aq_fx, exc3_fx, syn1_fx, st->mem_syn3_fx, 1, st->Q_exc, st->Q_syn ); - st->Q_syn_cng = st->Q_syn; - move16(); - st->Q_exc_cng = st->Q_exc; - move16(); + /* reset the decoder */ CNG_reset_dec_fx( st, pitch_buf_fx, voice_factors_fx ); - /* update st->mem_syn1 for ACELP core switching */ - Copy_Scale_sig( st->mem_syn3_fx, st->mem_syn1_fx, M, sub( -1, st->Q_syn ) ); // Q(-1) + +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + /* update st_fx->mem_syn1 for ACELP core switching */ + Copy( st->mem_syn3_fx, st->mem_syn1_fx, M ); + } + ELSE +#endif + { + st->Q_syn_cng = st->Q_syn; + move16(); + st->Q_exc_cng = st->Q_exc; + move16(); + + /* update st->mem_syn1 for ACELP core switching */ + Copy_Scale_sig( st->mem_syn3_fx, st->mem_syn1_fx, M, sub( -1, st->Q_syn ) ); // Q(-1) + } /* update old synthesis for classification */ Copy( syn1_fx + st->L_frame - L_SYN_MEM_CLAS_ESTIM, st->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM ); @@ -1157,13 +1211,30 @@ ivas_error acelp_core_dec_ivas_fx( Word16 qdct = 0; move16(); /* Extrapolation of the last future part, windowing and high resolution DCT transform */ - Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_core, st->element_mode, pitch_buf_fx, st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + // VE: TBV: this is a bug in EVS - 'st->last_coder_type' should be replaced by 'st->core_brate' + Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_coder_type, st->element_mode, pitch_buf_fx, + st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct ); + } + ELSE +#endif + { + Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_core, st->element_mode, pitch_buf_fx, st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct ); + } /* LD music post-filter */ LD_music_post_filter_fx( st->hMusicPF, dct_buffer_fx, dct_buffer_fx, st->core_brate, &st->hMusicPF->Old_ener_Q, AUDIO, last_coder_type, qdct ); /* Inverse DCT transform, retrieval of the aligned excitation, re-synthesis */ - Copy( st->mem_syn2_fx, mem_tmp_fx, M ); /*Q_syn*/ +#ifdef REMOVE_EVS_DUPLICATES + IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBC whether needed in IVAS +#endif + { + Copy( st->mem_syn2_fx, mem_tmp_fx, M ); /*Q_syn*/ + } + Post_music_postP_fx( dct_buffer_fx, exc2_fx, st->mem_syn2_fx, st->mem_syn2_fx, Aq_fx, psyn_fx, &st->Q_exc, &st->prev_Q_syn, &st->Q_syn, st->mem_syn_clas_estim_fx, 0, &st->mem_deemph_fx, st->hBPF->pst_old_syn_fx, &st->hBPF->pst_mem_deemp_err_fx, &st->agc_mem_fx[1], st->hPFstat, temp_buf_fx, mem_tmp_fx ); @@ -1209,6 +1280,7 @@ ivas_error acelp_core_dec_ivas_fx( /*------------------------------------------------------------* * FEC - Estimate the classification information *------------------------------------------------------------*/ + FEC_clas_estim_fx( st, st->Opt_AMR_WB, st->L_frame, &st->clas_dec, st->coder_type, pitch_buf_fx, psyn_fx, &st->lp_ener_FER_fx, &st->decision_hyst, NULL, NULL, NULL, NULL, 0, NULL, st->Q_syn, temp_buf_fx, @@ -1586,19 +1658,28 @@ ivas_error acelp_core_dec_ivas_fx( } ELSE IF( NE_16( st->element_mode, IVAS_CPE_DFT ) ) { - IF( st->idchan == 0 ) +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) { - IF( NE_16( st->element_mode, last_element_mode ) ) + generate_masking_noise_fx( psyn_fx, st->Q_syn, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0 ); + } + ELSE +#endif + { + IF( st->idchan == 0 ) { - set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st->hFdCngDec->hFdCngCom->fftlen ); + IF( NE_16( st->element_mode, last_element_mode ) ) + { + set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st->hFdCngDec->hFdCngCom->fftlen ); + } + Word32 psyn_32_fx[L_FRAME16k]; + Word16 exp; + Copy_Scale_sig_16_32_no_sat( psyn_fx, psyn_32_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( Q6, st->Q_syn ) ); // Q6 + Copy_Scale_sig_16_32_no_sat( st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), Q15 ); // Q15 + generate_masking_noise_ivas_fx( psyn_32_fx, &exp, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0, 0, 0, st->element_mode, hStereoCng, nchan_out ); + Copy_Scale_sig_32_16( psyn_32_fx, psyn_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( st->Q_syn, exp ) ); // Q = st->Q_syn + Copy_Scale_sig_32_16( st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), -Q15 ); // Q0 } - Word32 psyn_32_fx[L_FRAME16k]; - Word16 exp; - Copy_Scale_sig_16_32_no_sat( psyn_fx, psyn_32_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( Q6, st->Q_syn ) ); // Q6 - Copy_Scale_sig_16_32_no_sat( st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), Q15 ); // Q15 - generate_masking_noise_ivas_fx( psyn_32_fx, &exp, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0, 0, 0, st->element_mode, hStereoCng, nchan_out ); - Copy_Scale_sig_32_16( psyn_32_fx, psyn_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( st->Q_syn, exp ) ); // Q = st->Q_syn - Copy_Scale_sig_32_16( st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), -Q15 ); // Q0 } } } @@ -1685,36 +1766,27 @@ ivas_error acelp_core_dec_ivas_fx( * Bass post-filter *----------------------------------------------------------------*/ - /* check if the CLDFB works on the right sample rate */ - IF( NE_16( imult1616( st->cldfbAna->no_channels, st->cldfbAna->no_col ), st->L_frame ) ) +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) { - resampleCldfb_ivas_fx( st->cldfbAna, L_mult0( st->L_frame, FRAMES_PER_SEC ) ); - resampleCldfb_ivas_fx( st->cldfbBPF, L_mult0( st->L_frame, FRAMES_PER_SEC ) ); + CLDFB_SCALE_FACTOR scaleFactor; + Word32 workBuffer[128 * 3]; - IF( st->ini_frame > 0 ) + /* check if the CLDFB works on the right sample rate */ + IF( ( st->cldfbAna->usb * st->cldfbAna->no_col ) != st->L_frame ) { - st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ); - move16(); - } - } - - /* analyze pitch coherence for bass post-filter */ + /* resample to ACELP internal sampling rate */ + Word16 newCldfbBands = CLDFB_getNumChannels( L_mult0( st->L_frame, FRAMES_PER_SEC ) ); + resampleCldfb( st->cldfbAna, newCldfbBands, st->L_frame, 0 ); + resampleCldfb( st->cldfbBPF, newCldfbBands, st->L_frame, 0 ); - Word32 pitch_buf_fx_q20[12]; - - Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, Q4 ); // Q(x+4) - Word16 lim = shr( st->L_frame, 6 ); - FOR( Word16 lp = 0; lp < lim; lp++ ) - { - pitch_buf_fx_q20[lp] = L_shl( pitch_buf_fx[lp], Q14 ); - move32(); - } - bpf_pitch_coherence_ivas_fx( st, pitch_buf_fx_q20 ); - Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, -Q4 ); // Qx + IF( st->ini_frame > 0 ) + { + st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ); + move16(); + } + } - test(); - IF( !( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->bpf_off ) ) - { test(); IF( NE_16( st->L_frame, st->last_L_frame ) && NE_16( st->last_codec_mode, MODE2 ) ) { @@ -1730,89 +1802,26 @@ ivas_error acelp_core_dec_ivas_fx( bass_psfilter_fx( st->hBPF, st->Opt_AMR_WB, psyn_fx, st->L_frame, pitch_buf_fx, st->bpf_off, st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx ); - } - Word32 syn_tmp_32_fx[L_FRAME16k + L_SUBFR], *syn_32_fx; - set32_fx( syn_tmp_32_fx, 0, L_FRAME16k + L_SUBFR ); - syn_32_fx = syn_tmp_32_fx + L_SUBFR; - test(); - IF( NE_16( st->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft ) - { - /* analysis of the synthesis at internal sampling rate */ - Word32 realBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; - Word32 imagBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; - Word32 *pRealSave_fx[CLDFB_NO_COL_MAX], *pImagSave_fx[CLDFB_NO_COL_MAX]; - FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) - { - pRealSave_fx[i] = realBufferSave_fx[i]; - pImagSave_fx[i] = imagBufferSave_fx[i]; - } -#ifndef MSAN_FIX - Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1 -#endif - IF( st->p_bpf_noise_buf_32 ) - { -#ifdef MSAN_FIX - Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1 -#endif - Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame ); - Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11 - } -#ifdef MSAN_FIX - FOR( i = 0; i < st->L_frame; i++ ) -#else - for ( i = 0; i < L_FRAME16k; i++ ) -#endif - { - syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) ); // Q12 - move32(); - } + /* analysis of the synthesis at internal sampling rate */ + cldfbAnalysisFiltering( st->cldfbAna, realBuffer_fx, imagBuffer_fx, &scaleFactor, psyn_fx, negate( st->Q_syn ), CLDFB_NO_COL_MAX, workBuffer ); - Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels ); - Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12 - st->cldfbAna->Q_cldfb_state = Q12; + scaleFactor.hb_scale = scaleFactor.lb_scale; move16(); - cldfbAnalysis_ivas_fx( syn_32_fx, realBuffer_fx, imagBuffer_fx, -1, st->cldfbAna ); - Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11 - st->cldfbAna->Q_cldfb_state = Q11; - move16(); - /* analysis and add the BPF error signal */ - Word32 tmp_bpf_error_signal_fx[L_FRAME16k]; - Word16 q_bpf_error_signal; - Word16 cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels ); - q_bpf_error_signal = Q6; - move16(); -#ifdef MSAN_FIX -#ifdef FIX_ISSUE_1237 - Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, st->L_frame, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 -#else - Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, st->L_frame, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 -#endif -#else - Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, q_bpf_error_signal - st->Q_syn ); // Q6 -#endif - FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) - { - Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 - Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 - } - Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6) - st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal; - move16(); - tmp = -1; + /* analysis and add the BPF error signal */ + i = 0; move16(); - if ( st->bpf_off ) + if ( st->bpf_off == 0 ) { - tmp = 0; + i = CLDFB_NO_COL_MAX; move16(); } - addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx, tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF ); - Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( ( sub( q_bpf_error_signal, Q10 ) ) ) ); // Q10 - st->cldfbBPF->Q_cldfb_state = Q10; - move16(); + addBassPostFilter_fx( bpf_error_signal_16fx, realBuffer_fx, imagBuffer_fx, st->cldfbBPF, workBuffer, negate( st->Q_syn ), + i, st->cldfbAna->no_col, st->cldfbAna->no_channels, &scaleFactor ); + /* set output mask for upsampling */ IF( EQ_16( st->bwidth, NB ) ) { @@ -1826,118 +1835,405 @@ ivas_error acelp_core_dec_ivas_fx( st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ); move16(); } + + /*WB/SWB-FD_CNG*/ + scaleFactor.hb_scale = scaleFactor.lb_scale; + move16(); + test(); - IF( !st->cng_sba_flag || EQ_16( st->element_mode, IVAS_CPE_MDCT ) ) + test(); + test(); + IF( ( ( st->core_brate == FRAME_NO_DATA ) || EQ_32( st->core_brate, SID_2k40 ) ) && ( EQ_16( st->cng_type, FD_CNG ) ) && ( LT_16( st->hFdCngDec->hFdCngCom->numCoreBands, st->cldfbSyn->no_channels ) ) ) { - test(); - test(); - test(); - /*WB/SWB-FD_CNG*/ - IF( ( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) ) && ( EQ_16( st->cng_type, FD_CNG ) ) && ( LT_16( st->hFdCngDec->hFdCngCom->numCoreBands, st->cldfbSyn->no_channels ) ) ) + generate_comfort_noise_dec_hf_fx( realBuffer_fx, imagBuffer_fx, &scaleFactor.hb_scale, st ); + + st->cldfbSyn->bandsToZero = 0; + move16(); + IF( LT_16( st->hFdCngDec->hFdCngCom->regularStopBand, st->cldfbSyn->no_channels ) ) { - Word16 tmpBufferScale = 0; + st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->hFdCngDec->hFdCngCom->regularStopBand ); move16(); - generate_comfort_noise_dec_hf_ivas_fx( realBuffer_fx, imagBuffer_fx, /*realBuffer, imagBuffer,*/ &tmpBufferScale, st->hFdCngDec->hFdCngCom, st->cng_ism_flag ); + } + st->cldfbSyn->lsb = st->cldfbAna->no_channels; + move16(); + } - FOR( i = 0; i < st->hFdCngDec->hFdCngCom->numSlots; i++ ) - { - Scale_sig32( realBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0 - Scale_sig32( imagBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0 - } + /* synthesis of the combined signal */ + st->Q_syn2 = st->Q_syn; + move16(); + cldfbSynthesisFiltering( st->cldfbSyn, realBuffer_fx, imagBuffer_fx, &scaleFactor, synth_fx16, negate( st->Q_syn2 ), CLDFB_NO_COL_MAX, workBuffer ); + + /* Bring CLDFB output to Q0 */ + Scale_sig( synth_fx16, output_frame, negate( st->Q_syn2 ) ); + st->Q_syn2 = 0; + move16(); + + /* save synthesis - needed in case of core switching */ + Copy( synth_fx16, st->previoussynth_fx, output_frame ); + } + ELSE +#endif + { + /* check if the CLDFB works on the right sample rate */ + IF( NE_16( imult1616( st->cldfbAna->no_channels, st->cldfbAna->no_col ), st->L_frame ) ) + { + resampleCldfb_ivas_fx( st->cldfbAna, L_mult0( st->L_frame, FRAMES_PER_SEC ) ); + resampleCldfb_ivas_fx( st->cldfbBPF, L_mult0( st->L_frame, FRAMES_PER_SEC ) ); + + IF( st->ini_frame > 0 ) + { + st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ); + move16(); + } + } + + /* analyze pitch coherence for bass post-filter */ + + Word32 pitch_buf_fx_q20[12]; - IF( LT_16( st->hFdCngDec->hFdCngCom->regularStopBand, st->cldfbSyn->no_channels ) ) + Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, Q4 ); // Q(x+4) + Word16 lim = shr( st->L_frame, 6 ); + FOR( Word16 lp = 0; lp < lim; lp++ ) + { + pitch_buf_fx_q20[lp] = L_shl( pitch_buf_fx[lp], Q14 ); + move32(); + } + bpf_pitch_coherence_ivas_fx( st, pitch_buf_fx_q20 ); + Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, -Q4 ); // Qx + + test(); + IF( !( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->bpf_off ) ) + { + test(); + IF( NE_16( st->L_frame, st->last_L_frame ) && NE_16( st->last_codec_mode, MODE2 ) ) + { + IF( EQ_16( st->L_frame, L_FRAME ) ) { - st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->hFdCngDec->hFdCngCom->regularStopBand ); - move16(); + retro_interp5_4_fx( st->hBPF->pst_old_syn_fx ); } - ELSE + ELSE IF( EQ_16( st->L_frame, L_FRAME16k ) ) { - st->cldfbSyn->bandsToZero = 0; - move16(); + retro_interp4_5_fx( psyn_fx, st->hBPF->pst_old_syn_fx ); } } + + bass_psfilter_fx( st->hBPF, st->Opt_AMR_WB, psyn_fx, st->L_frame, pitch_buf_fx, st->bpf_off, + st->stab_fac_fx, &st->stab_fac_smooth_fx, st->coder_type, st->Q_syn, bpf_error_signal_16fx ); } - IF( save_hb_synth_fx16 != NULL ) + Word32 syn_tmp_32_fx[L_FRAME16k + L_SUBFR], *syn_32_fx; + set32_fx( syn_tmp_32_fx, 0, L_FRAME16k + L_SUBFR ); + syn_32_fx = syn_tmp_32_fx + L_SUBFR; + test(); + IF( NE_16( st->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft ) { - /* save and then zero-out lowband */ - Word16 Q_real = 0, Q_imag = 0; - Word32 max_real = 0, max_imag = 0; + /* analysis of the synthesis at internal sampling rate */ + Word32 realBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 imagBufferSave_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 *pRealSave_fx[CLDFB_NO_COL_MAX], *pImagSave_fx[CLDFB_NO_COL_MAX]; + FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) + { + pRealSave_fx[i] = realBufferSave_fx[i]; + pImagSave_fx[i] = imagBufferSave_fx[i]; + } +#ifndef MSAN_FIX + Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1 +#endif + IF( st->p_bpf_noise_buf_32 ) + { +#ifdef MSAN_FIX + Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1 +#endif + Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame ); + Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11 + } + +#ifdef MSAN_FIX + FOR( i = 0; i < st->L_frame; i++ ) +#else + for ( i = 0; i < L_FRAME16k; i++ ) +#endif + { + syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) ); // Q12 + move32(); + } + + Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels ); + Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12 + st->cldfbAna->Q_cldfb_state = Q12; move16(); + cldfbAnalysis_ivas_fx( syn_32_fx, realBuffer_fx, imagBuffer_fx, -1, st->cldfbAna ); + Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11 + st->cldfbAna->Q_cldfb_state = Q11; move16(); - move32(); - move32(); + /* analysis and add the BPF error signal */ + Word32 tmp_bpf_error_signal_fx[L_FRAME16k]; + Word16 q_bpf_error_signal; + Word16 cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels ); + + q_bpf_error_signal = Q6; + move16(); +#ifdef MSAN_FIX +#ifdef FIX_ISSUE_1237 + Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, st->L_frame, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 +#else + Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, st->L_frame, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 +#endif +#else + Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, q_bpf_error_signal - st->Q_syn ); // Q6 +#endif FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) { - FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) - { - max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) ); - max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) ); - } + Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 + Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 } - Word32 max_val = L_max( max_real, max_imag ); - Q_imag = sub( norm_l( max_val ), 3 ) /* Guard bits */; - Q_real = Q_imag; + Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6) + st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal; move16(); - FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) + tmp = -1; + move16(); + if ( st->bpf_off ) { - scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real - scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_imag ); // Q_imag + tmp = 0; + move16(); } - scale_sig32_r( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // (Q_real-1) - st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 ); + + addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx, tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF ); + Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( ( sub( q_bpf_error_signal, Q10 ) ) ) ); // Q10 + st->cldfbBPF->Q_cldfb_state = Q10; move16(); -#ifndef MSAN_FIX - Scale_sig32( save_hb_synth_fx, L_FRAME48k, sub( Q_real, 1 ) ); // Q_real-1 -#endif + /* set output mask for upsampling */ + IF( EQ_16( st->bwidth, NB ) ) + { + /* set NB mask for upsampling */ + st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, 10 ); + move16(); + } + ELSE IF( NE_16( st->cldfbSyn->bandsToZero, sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ) ) ) + { + /* in case of BW switching, re-init to default */ + st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->cldfbAna->no_channels ); + move16(); + } + test(); + IF( !st->cng_sba_flag || EQ_16( st->element_mode, IVAS_CPE_MDCT ) ) + { + test(); + test(); + test(); + /*WB/SWB-FD_CNG*/ + IF( ( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) ) && ( EQ_16( st->cng_type, FD_CNG ) ) && ( LT_16( st->hFdCngDec->hFdCngCom->numCoreBands, st->cldfbSyn->no_channels ) ) ) + { + Word16 tmpBufferScale = 0; + move16(); + generate_comfort_noise_dec_hf_ivas_fx( realBuffer_fx, imagBuffer_fx, /*realBuffer, imagBuffer,*/ &tmpBufferScale, st->hFdCngDec->hFdCngCom, st->cng_ism_flag ); + + FOR( i = 0; i < st->hFdCngDec->hFdCngCom->numSlots; i++ ) + { + Scale_sig32( realBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0 + Scale_sig32( imagBuffer_fx[i] + st->hFdCngDec->hFdCngCom->numCoreBands, sub( st->hFdCngDec->hFdCngCom->regularStopBand, st->hFdCngDec->hFdCngCom->numCoreBands ), sub( add( tmpBufferScale, 15 ), Q31 ) ); // Q0 + } - FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + IF( LT_16( st->hFdCngDec->hFdCngCom->regularStopBand, st->cldfbSyn->no_channels ) ) + { + st->cldfbSyn->bandsToZero = sub( st->cldfbSyn->no_channels, st->hFdCngDec->hFdCngCom->regularStopBand ); + move16(); + } + ELSE + { + st->cldfbSyn->bandsToZero = 0; + move16(); + } + } + } + + IF( save_hb_synth_fx16 != NULL ) { + /* save and then zero-out lowband */ + Word16 Q_real = 0, Q_imag = 0; + Word32 max_real = 0, max_imag = 0; + move16(); + move16(); + move32(); + move32(); FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) { - realBufferSave_fx[i][j] = realBuffer_fx[i][j]; - imagBufferSave_fx[i][j] = imagBuffer_fx[i][j]; - move32(); - move32(); - IF( LT_16( j, st->hFdCngDec->hFdCngCom->numCoreBands ) && LT_16( i, st->hFdCngDec->hFdCngCom->numSlots ) ) + FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) ); + max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) ); + } + } + Word32 max_val = L_max( max_real, max_imag ); + Q_imag = sub( norm_l( max_val ), 3 ) /* Guard bits */; + Q_real = Q_imag; + move16(); + FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) + { + scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real + scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_imag ); // Q_imag + } + scale_sig32_r( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // (Q_real-1) + st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 ); + move16(); +#ifndef MSAN_FIX + Scale_sig32( save_hb_synth_fx, L_FRAME48k, sub( Q_real, 1 ) ); // Q_real-1 +#endif + + FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) { - realBuffer_fx[i][j] = 0; - imagBuffer_fx[i][j] = 0; + realBufferSave_fx[i][j] = realBuffer_fx[i][j]; + imagBufferSave_fx[i][j] = imagBuffer_fx[i][j]; move32(); move32(); + IF( LT_16( j, st->hFdCngDec->hFdCngCom->numCoreBands ) && LT_16( i, st->hFdCngDec->hFdCngCom->numSlots ) ) + { + realBuffer_fx[i][j] = 0; + imagBuffer_fx[i][j] = 0; + move32(); + move32(); + } } } - } - cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, st->cldfbSynHB ); + cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, save_hb_synth_fx, -1, st->cldfbSynHB ); - Scale_sig32( save_hb_synth_fx, L_FRAME48k, negate( ( sub( Q_real, 1 ) ) ) ); // Q0 - Scale_sig32( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 - st->cldfbSynHB->Q_cldfb_state = Q10; - move16(); - /* restore lowband */ - FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + Scale_sig32( save_hb_synth_fx, L_FRAME48k, negate( ( sub( Q_real, 1 ) ) ) ); // Q0 + Scale_sig32( st->cldfbSynHB->cldfb_state_fx, st->cldfbSynHB->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 + st->cldfbSynHB->Q_cldfb_state = Q10; + move16(); + /* restore lowband */ + FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) + { + realBuffer_fx[i][j] = realBufferSave_fx[i][j]; + imagBuffer_fx[i][j] = imagBufferSave_fx[i][j]; + move32(); + move32(); + } + } + Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // Q_real-1 + st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 ); + move16(); + cldfbSynthesis_ivas_fx( pRealSave_fx, pImagSave_fx, synth_fx, -1, st->cldfbSyn ); + Scale_sig32( synth_fx, L_FRAME48k, negate( sub( Q_real, 1 ) ) ); // Q0 + Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 + st->cldfbSynHB->Q_cldfb_state = Q10; + move16(); + } + ELSE { + /* synthesis of the combined signal */ + Word16 Q_real, Q_imag; + Word32 max_real, max_imag; + Q_real = 0; + Q_imag = 0; + max_real = 0; + max_imag = 0; + move16(); + move16(); + move32(); + move32(); FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) { - realBuffer_fx[i][j] = realBufferSave_fx[i][j]; - imagBuffer_fx[i][j] = imagBufferSave_fx[i][j]; - move32(); - move32(); + FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) ); + max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) ); + } } + Word32 max_val = L_max( max_real, max_imag ); + Q_imag = sub( norm_l( max_val ), 3 ) /* Guard bits */; + Q_real = Q_imag; + move16(); + FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) + { + scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real + scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real + } + scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1) + st->cldfbSyn->Q_cldfb_state = sub( Q_real, 1 ); + move16(); +#ifndef MSAN_FIX + Scale_sig32( synth_fx, L_FRAME48k, Q_real - 1 ); +#endif + + cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx, -1, st->cldfbSyn ); +#ifdef MSAN_FIX + scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0 +#else + Scale_sig32( synth_fx, L_FRAME48k, -( Q_real - 1 ) ); +#endif + scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 + st->cldfbSyn->Q_cldfb_state = Q10; + move16(); } - Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); // Q_real-1 - st->cldfbSynHB->Q_cldfb_state = sub( Q_real, 1 ); - move16(); - cldfbSynthesis_ivas_fx( pRealSave_fx, pImagSave_fx, synth_fx, -1, st->cldfbSyn ); - Scale_sig32( synth_fx, L_FRAME48k, negate( sub( Q_real, 1 ) ) ); // Q0 - Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 - st->cldfbSynHB->Q_cldfb_state = Q10; - move16(); + + /* save synthesis - needed in case of core switching */ + Copy32( synth_fx, st->previoussynth_fx_32, output_frame ); // Q0 } ELSE { - /* synthesis of the combined signal */ + Word16 nSamples = NS2SA_FX2( i_mult( st->L_frame, FRAMES_PER_SEC ), FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ); /* IVAS-64: optimization is likely possible here (don't resample the whole frame) */ + + /* analysis of the synthesis at internal sampling rate - needed for DFT stereo -> TD stereo switching */ +#ifndef MSAN_FIX + for ( i = 0; i < L_FRAME16k; i++ ) +#else + FOR( i = 0; i < st->L_frame; i++ ) +#endif + { + syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) ); + move32(); + } + + Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels ); + Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12 + st->cldfbAna->Q_cldfb_state = Q12; + move16(); + cldfbAnalysis_ivas_fx( syn_32_fx + sub( st->L_frame, nSamples ), realBuffer_fx, imagBuffer_fx, nSamples, st->cldfbAna ); + + Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11 + st->cldfbAna->Q_cldfb_state = Q11; + move16(); /* analysis and add the BPF error signal - needed for DFT stereo -> TD stereo switching */ + Word32 tmp_bpf_error_signal_fx[L_FRAME16k]; + Word16 q_bpf_error_signal; + Word16 cldfb_state_offset; + cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels ); + + // Get Q-factor + q_bpf_error_signal = Q6; + move16(); +#ifdef FIX_ISSUE_1237 + Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 +#else + Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 +#endif + FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) + { + Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 + Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 + } + Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6) + st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal; + move16(); + tmp = 0; + move16(); + if ( !st->bpf_off ) + { + tmp = nSamples; + move16(); + } + addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx + sub( st->L_frame, nSamples ), tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF ); + + + Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( sub( q_bpf_error_signal, Q10 ) ) ); // Q10 + st->cldfbBPF->Q_cldfb_state = Q10; + move16(); + /* synthesis of the combined signal - needed for DFT stereo -> TD stereo switching */ Word16 Q_real, Q_imag; Word32 max_real, max_imag; Q_real = 0; @@ -1966,151 +2262,46 @@ ivas_error acelp_core_dec_ivas_fx( scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real } scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1) - st->cldfbSyn->Q_cldfb_state = sub( Q_real, 1 ); - move16(); #ifndef MSAN_FIX Scale_sig32( synth_fx, L_FRAME48k, Q_real - 1 ); #endif - cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx, -1, st->cldfbSyn ); + cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*dummy*/, NS2SA( st->output_Fs, FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ), st->cldfbSyn ); + #ifdef MSAN_FIX - scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0 + Scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0 #else Scale_sig32( synth_fx, L_FRAME48k, -( Q_real - 1 ) ); #endif - scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 + Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 st->cldfbSyn->Q_cldfb_state = Q10; move16(); - } - - /* save synthesis - needed in case of core switching */ - Copy32( synth_fx, st->previoussynth_fx_32, output_frame ); // Q0 - } - ELSE - { - Word16 nSamples = NS2SA_FX2( i_mult( st->L_frame, FRAMES_PER_SEC ), FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ); /* IVAS-64: optimization is likely possible here (don't resample the whole frame) */ + IF( st->p_bpf_noise_buf_32 ) + { + Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1 + Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame ); - /* analysis of the synthesis at internal sampling rate - needed for DFT stereo -> TD stereo switching */ -#ifndef MSAN_FIX - for ( i = 0; i < L_FRAME16k; i++ ) -#else - FOR( i = 0; i < st->L_frame; i++ ) -#endif - { - syn_32_fx[i] = L_shr( L_deposit_h( psyn_fx[i] ), add( 4, st->Q_syn ) ); - move32(); - } + Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11 + } - Word16 offset = sub( st->cldfbAna->p_filter_length, st->cldfbAna->no_channels ); - Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12 - st->cldfbAna->Q_cldfb_state = Q12; - move16(); - cldfbAnalysis_ivas_fx( syn_32_fx + sub( st->L_frame, nSamples ), realBuffer_fx, imagBuffer_fx, nSamples, st->cldfbAna ); - - Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11 - st->cldfbAna->Q_cldfb_state = Q11; - move16(); /* analysis and add the BPF error signal - needed for DFT stereo -> TD stereo switching */ - Word32 tmp_bpf_error_signal_fx[L_FRAME16k]; - Word16 q_bpf_error_signal; - Word16 cldfb_state_offset; - cldfb_state_offset = sub( st->cldfbBPF->p_filter_length, st->cldfbBPF->no_channels ); - - // Get Q-factor - q_bpf_error_signal = Q6; - move16(); -#ifdef FIX_ISSUE_1237 - Copy_Scale_sig_16_32_no_sat( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 -#else - Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, tmp_bpf_error_signal_fx, L_FRAME16k, sub( q_bpf_error_signal, st->Q_syn ) ); // Q6 -#endif - FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) - { - Scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 - Scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, -Q7 ); // Q0 - } - Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, sub( q_bpf_error_signal, Q10 ) ); // q_bpf_error_signal (Q6) - st->cldfbBPF->Q_cldfb_state = q_bpf_error_signal; - move16(); - tmp = 0; - move16(); - if ( !st->bpf_off ) - { - tmp = nSamples; - move16(); + set32_fx( synth_fx, 0, output_frame ); } - addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx + sub( st->L_frame, nSamples ), tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF ); - - Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( sub( q_bpf_error_signal, Q10 ) ) ); // Q10 - st->cldfbBPF->Q_cldfb_state = Q10; - move16(); - /* synthesis of the combined signal - needed for DFT stereo -> TD stereo switching */ - Word16 Q_real, Q_imag; - Word32 max_real, max_imag; - Q_real = 0; - Q_imag = 0; - max_real = 0; - max_imag = 0; - move16(); - move16(); - move32(); - move32(); - FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) - { - FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) - { - max_real = L_max( max_real, L_abs( realBuffer_fx[i][j] ) ); - max_imag = L_max( max_imag, L_abs( imagBuffer_fx[i][j] ) ); - } - } - Word32 max_val = L_max( max_real, max_imag ); - Q_imag = sub( norm_l( max_val ), 3 ) /* Guard bits */; - Q_real = Q_imag; - move16(); - FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) - { - scale_sig32( realBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real - scale_sig32( imagBuffer_fx[i], CLDFB_NO_CHANNELS_MAX, Q_real ); // Q_real - } - scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1) + /* Copy output signal */ #ifndef MSAN_FIX - Scale_sig32( synth_fx, L_FRAME48k, Q_real - 1 ); -#endif - - cldfbSynthesis_ivas_fx( realBuffer_fx, imagBuffer_fx, synth_fx /*dummy*/, NS2SA( st->output_Fs, FRAME_SIZE_NS /*DELAY_CLDFB_NS*/ ), st->cldfbSyn ); - -#ifdef MSAN_FIX - Scale_sig32( synth_fx, output_frame, negate( sub( Q_real, 1 ) ) ); // Q0 + Scale_sig( syn_tmp_fx, L_FRAME16k + L_SUBFR, -st->Q_syn ); #else - Scale_sig32( synth_fx, L_FRAME48k, -( Q_real - 1 ) ); + Scale_sig( syn_tmp_fx, add( st->L_frame, L_SUBFR ), negate( st->Q_syn ) ); // Q0 #endif - Scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q10, sub( Q_real, 1 ) ) ); // Q10 - st->cldfbSyn->Q_cldfb_state = Q10; - move16(); - IF( st->p_bpf_noise_buf_32 ) + IF( st->element_mode > EVS_MONO ) { - Copy_Scale_sig_16_32_DEPREC( bpf_error_signal_16fx, bpf_error_signal_fx, st->L_frame, -1 ); // Q_syn-1 - Copy32( bpf_error_signal_fx, st->p_bpf_noise_buf_32, st->L_frame ); - - Scale_sig32( st->p_bpf_noise_buf_32, st->L_frame, sub( Q11, sub( st->Q_syn, 1 ) ) ); // Q11 + Copy( psyn_fx, output_fx, st->L_frame ); /*Q_syn*/ } - set32_fx( synth_fx, 0, output_frame ); - } - - /* Copy output signal */ -#ifndef MSAN_FIX - Scale_sig( syn_tmp_fx, L_FRAME16k + L_SUBFR, -st->Q_syn ); -#else - Scale_sig( syn_tmp_fx, add( st->L_frame, L_SUBFR ), negate( st->Q_syn ) ); // Q0 -#endif - IF( st->element_mode > EVS_MONO ) - { - Copy( psyn_fx, output_fx, st->L_frame ); /*Q_syn*/ + st->Q_syn2 = 0; + move16(); } - st->Q_syn2 = 0; - move16(); /*-----------------------------------------------------------------* * Bandwidth extension 6kHz-7kHz *-----------------------------------------------------------------*/ @@ -2126,26 +2317,41 @@ ivas_error acelp_core_dec_ivas_fx( IF( ( EQ_16( st->L_frame, L_FRAME ) && ( st->bwidth != NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st->extl, -1 ) || EQ_16( st->extl, SWB_CNG ) || ( EQ_16( st->extl, WB_BWE ) && st->extl_brate == 0 && NE_16( st->coder_type, AUDIO ) ) ) ) ) { +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, + st->Q_syn2, st->hBWE_zero->delay_syn_hf_fx, &st->hBWE_zero->memExp1, st->hBWE_zero->mem_hp_interp_fx, st->extl, st->CNG_mode ); + } + ELSE +#endif + { #ifdef MSAN_FIX - Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q0 + Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q0 #else - Copy_Scale_sig_32_16( synth_fx, synth_fx16, L_FRAME48k, 0 ); + Copy_Scale_sig_32_16( synth_fx, synth_fx16, L_FRAME48k, 0 ); #endif - hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, - psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2, st->hBWE_zero->delay_syn_hf_fx, &st->hBWE_zero->memExp1, - st->hBWE_zero->mem_hp_interp_fx, st->extl, st->CNG_mode ); + hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, + psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2, st->hBWE_zero->delay_syn_hf_fx, &st->hBWE_zero->memExp1, + st->hBWE_zero->mem_hp_interp_fx, st->extl, st->CNG_mode ); #ifdef MSAN_FIX - Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 ); + Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 ); #else - Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, L_FRAME48k, 0 ); + Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, L_FRAME48k, 0 ); #endif + } } ELSE { hf_synth_reset_fx( st->hBWE_zero ); +#ifdef REMOVE_EVS_DUPLICATES2 + IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but conditon is here to keep EVS bit-exact +#endif + { #ifdef MSAN_FIX - set16_fx( st->hBWE_zero->mem_hp400_fx, 0, 6 ); + set16_fx( st->hBWE_zero->mem_hp400_fx, 0, 6 ); #endif + } } } @@ -2180,13 +2386,23 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( !st->ppp_mode_dec && ( st->idchan == 0 || NE_16( st->element_mode, IVAS_CPE_TD ) || ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && st->tdm_LRTD_flag ) ) ) { +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + non_linearity_fx( bwe_exc_fx, bwe_exc_extended_fx, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, + st->coder_type, voice_factors_fx, st->L_frame ); + } + ELSE +#endif + { #ifdef FIX_ISSUE_1237 - Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc + Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc #else - Copy_Scale_sig_16_32_DEPREC( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc + Copy_Scale_sig_16_32_DEPREC( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc #endif - non_linearity_ivas_fx( bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); - Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, negate( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc + non_linearity_ivas_fx( bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); + Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, negate( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc + } } test(); if ( st->core_brate == FRAME_NO_DATA || EQ_32( st->core_brate, SID_2k40 ) ) @@ -2195,6 +2411,7 @@ ivas_error acelp_core_dec_ivas_fx( move32(); } } + /*----------------------------------------------------------------------* * Updates *----------------------------------------------------------------------*/ @@ -2205,10 +2422,19 @@ ivas_error acelp_core_dec_ivas_fx( IF( GT_32( st->core_brate, SID_2k40 ) && st->hTdCngDec != NULL && st->hFdCngDec != NULL ) { /* update CNG parameters in active frames */ - cng_params_upd_ivas_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size, - st->hTdCngDec->ho_lsp_circ_fx, st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate, st->element_mode, - st->hFdCngDec->hFdCngCom->CngBandwidth ); - +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + cng_params_upd_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size, st->hTdCngDec->ho_lsp_circ_fx, + st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate ); + } + ELSE +#endif + { + cng_params_upd_ivas_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size, + st->hTdCngDec->ho_lsp_circ_fx, st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate, st->element_mode, + st->hFdCngDec->hFdCngCom->CngBandwidth ); + } /* Set 16k LSP flag for CNG buffer */ st->hTdCngDec->ho_16k_lsp[st->hTdCngDec->ho_circ_ptr] = 0; @@ -2220,6 +2446,9 @@ ivas_error acelp_core_dec_ivas_fx( } } +#ifdef REMOVE_EVS_DUPLICATES + IF( NE_16( st->element_mode, EVS_MONO ) ) +#endif { IF( save_hb_synth_fx16 ) { diff --git a/lib_dec/amr_wb_dec_fx.c b/lib_dec/amr_wb_dec_fx.c index b3fbc0233..8a2ef7b40 100644 --- a/lib_dec/amr_wb_dec_fx.c +++ b/lib_dec/amr_wb_dec_fx.c @@ -374,7 +374,7 @@ ivas_error amr_wb_dec_fx( IF( EQ_32( st_fx->core_brate, FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_1k75 ) ) { /* decode CNG parameters */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES CNG_dec_ivas_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, &sid_bw, q_env ); #else CNG_dec_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, &sid_bw, q_env ); @@ -800,7 +800,7 @@ ivas_error amr_wb_dec_fx( PMT( "Fixed point not done here " ) ApplyFdCng_fx( syn, NULL, NULL, NULL, st, 0, 0 ); #else -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, NULL, NULL, NULL, st_fx, 0, 0 ); #else ApplyFdCng_fx( syn_fx, st_fx->Q_syn, NULL, NULL, NULL, st_fx, 0, 0 ); diff --git a/lib_dec/decision_matrix_dec_fx.c b/lib_dec/decision_matrix_dec_fx.c index 9c0020223..ff03f8bc5 100644 --- a/lib_dec/decision_matrix_dec_fx.c +++ b/lib_dec/decision_matrix_dec_fx.c @@ -713,5 +713,20 @@ void decision_matrix_dec_fx( move16(); } +#ifdef REMOVE_EVS_DUPLICATES2 + /*-----------------------------------------------------------------* + * set inactive coder_type flag in ACELP core + *-----------------------------------------------------------------*/ + + st->inactive_coder_type_flag = 0; /* AVQ by default */ + move16(); + + if ( LE_32( st->total_brate, MAX_GSC_INACTIVE_BRATE ) ) + { + st->inactive_coder_type_flag = 1; /* GSC */ + move16(); + } + +#endif return; } diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index fee893c4b..2f0873ba5 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -346,8 +346,11 @@ ivas_error evs_dec_fx( IF( EQ_16( st_fx->core, ACELP_CORE ) ) { /* ACELP core decoder */ - +#ifdef REMOVE_EVS_DUPLICATES2 + IF( ( error = acelp_core_dec_ivas_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) +#else IF( ( error = acelp_core_dec_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -1000,7 +1003,7 @@ ivas_error evs_dec_fx( #ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT ApplyFdCng_fx( output, NULL, realBuffer, imagBuffer, st, concealWholeFrame, 0 ); #else -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES ApplyFdCng_ivas_fx( output_sp, 0, NULL, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); #else ApplyFdCng_fx( output_sp, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index af670f0d0..a3c9b5826 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1263,7 +1263,7 @@ Word16 ApplyFdCng_ivas_fx( ( !st->BER_detect ) ) { /* Perform noise estimation at the decoder */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); @@ -1276,7 +1276,7 @@ Word16 ApplyFdCng_ivas_fx( /* Update the shaping parameters */ test(); -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); @@ -1522,7 +1522,7 @@ Word16 ApplyFdCng_ivas_fx( IF( hFdCngCom->active_frame_counter > 0 ) { /* Perform noise estimation in active frames in the decoder for downward updates */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); @@ -1589,7 +1589,7 @@ Word16 ApplyFdCng_ivas_fx( IF( st != NULL && EQ_16( st->cng_type, LP_CNG ) ) { /* Perform noise estimation on inactive phase at the decoder */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); @@ -1603,7 +1603,7 @@ Word16 ApplyFdCng_ivas_fx( /* Update the shaping parameters */ test(); -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); @@ -1689,7 +1689,7 @@ Word16 ApplyFdCng_ivas_fx( IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) ) { /* At initialization, interpolate the bin/band-wise levels from the partition levels */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); @@ -1711,7 +1711,7 @@ Word16 ApplyFdCng_ivas_fx( /* Interpolate the CLDFB band levels from the SID (partition) levels */ IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) ) { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); @@ -1874,7 +1874,7 @@ Word16 ApplyFdCng_ivas_fx( IF( EQ_16( st->codec_mode, MODE2 ) ) { /* Generate comfort noise during SID or zero frames */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { generate_comfort_noise_dec_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 ); -- GitLab From 3fcb6e833731821485d4855821e600021da26cec Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 08:56:01 +0100 Subject: [PATCH 012/698] fix NB PF - tmp hack --- lib_dec/acelp_core_dec_ivas_fx.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index f02e6d337..90360d635 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -1498,7 +1498,18 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( st->last_bwidth == NB && st->hPFstat != NULL ) { - Copy( pitch_buf_fx, pitch_buf_tmp, NB_SUBFR16k ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); + } + ELSE +#endif + { + // VE: TBV: tmp hack - this is a bug in IVAS + Copy( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr ); + } + IF( st->bwidth == NB ) { st->hPFstat->on = 1; -- GitLab From 0a01289c10e58a9ab2ecfa93a0061768fd7d11fc Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 09:55:43 +0100 Subject: [PATCH 013/698] try revert acelp_core_dec_fx() --- lib_dec/evs_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index 2f0873ba5..ada1a68de 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -346,7 +346,7 @@ ivas_error evs_dec_fx( IF( EQ_16( st_fx->core, ACELP_CORE ) ) { /* ACELP core decoder */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES2aa IF( ( error = acelp_core_dec_ivas_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) #else IF( ( error = acelp_core_dec_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) -- GitLab From b2e1ffd8a00ee1b64d0a8f963182946b67874649 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 10:27:06 +0100 Subject: [PATCH 014/698] fix CNA --- lib_dec/acelp_core_dec_ivas_fx.c | 22 +++++++++++++++++++--- lib_dec/evs_dec_fx.c | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 90360d635..09d370760 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -1748,10 +1748,26 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( ( st->flag_cna == 0 ) && EQ_16( st->L_frame, L_FRAME16k ) && EQ_16( st->last_flag_cna, 1 ) && ( ( st->last_core == ACELP_CORE && !( EQ_16( st->last_coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->Last_GSC_noisy_speech_flag ) ) ) || EQ_16( st->last_core, AMR_WB_CORE ) ) ) { - FOR( i = 0; i < ( st->hFdCngDec->hFdCngCom->frameSize ) / 2; i++ ) +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) { - psyn_fx[i] = add( psyn_fx[i], shr_r( mult_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * ( st->hFdCngDec->hFdCngCom->frameSize / 4 )], st->hFdCngDec->hFdCngCom->fftlenFac ), -st->Q_syn ) ); - move16(); + // VE:TBC - in FLP, it is: + // v_multc( st->hFdCngDec->hFdCngCom->olapBufferSynth2 + 5 * st->L_frame / 4, 256.f, temp_buf, st->L_frame / 2 ); + // v_add( temp_buf, syn, syn, st->L_frame / 2 ); + FOR( i = 0; i < st->L_frame / 2; i++ ) + { + psyn_fx[i] = add( psyn_fx[i], shr_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * st->L_frame / 4], negate( st->Q_syn ) ) ); + move16(); + } + } + ELSE +#endif + { + FOR( i = 0; i < ( st->hFdCngDec->hFdCngCom->frameSize ) / 2; i++ ) + { + psyn_fx[i] = add( psyn_fx[i], shr_r( mult_r( st->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * ( st->hFdCngDec->hFdCngCom->frameSize / 4 )], st->hFdCngDec->hFdCngCom->fftlenFac ), -st->Q_syn ) ); + move16(); + } } } diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index ada1a68de..2f0873ba5 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -346,7 +346,7 @@ ivas_error evs_dec_fx( IF( EQ_16( st_fx->core, ACELP_CORE ) ) { /* ACELP core decoder */ -#ifdef REMOVE_EVS_DUPLICATES2aa +#ifdef REMOVE_EVS_DUPLICATES2 IF( ( error = acelp_core_dec_ivas_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) #else IF( ( error = acelp_core_dec_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) -- GitLab From 94c98bdb687a8609009c9fe94b80c33329734b41 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 11:30:34 +0100 Subject: [PATCH 015/698] REMOVE_EVS_DUPLICATES3 --- lib_com/bits_alloc_fx.c | 3 ++- lib_com/gs_inact_switching_fx.c | 5 +++-- lib_com/prot_fx.h | 32 ++++++++++++++++++++---------- lib_dec/FEC_fx.c | 4 ++++ lib_dec/FEC_scale_syn_fx.c | 3 ++- lib_dec/acelp_core_switch_dec_fx.c | 6 ++++++ lib_dec/amr_wb_dec_fx.c | 17 ++++++++++++++++ lib_dec/cng_dec_fx.c | 3 ++- lib_dec/dec_ace_fx.c | 6 ++++++ lib_dec/dec_gen_voic_fx.c | 3 ++- lib_dec/dec_pit_exc_fx.c | 3 +++ lib_dec/dec_uv_fx.c | 3 ++- lib_dec/evs_dec_fx.c | 2 +- lib_dec/fd_cng_dec_fx.c | 4 +++- lib_dec/gs_dec_fx.c | 18 +++++++++++++++-- lib_dec/lsf_dec_fx.c | 3 ++- lib_enc/acelp_core_enc_fx.c | 28 ++++++++++++++++++++++++-- lib_enc/acelp_core_switch_enc_fx.c | 6 ++++++ lib_enc/transition_enc_fx.c | 27 +++++++++++++++++++++++++ 19 files changed, 152 insertions(+), 24 deletions(-) diff --git a/lib_com/bits_alloc_fx.c b/lib_com/bits_alloc_fx.c index 83a98a85f..53c5ca474 100644 --- a/lib_com/bits_alloc_fx.c +++ b/lib_com/bits_alloc_fx.c @@ -761,6 +761,7 @@ static ivas_error acelp_FCB_allocator_ivas( * - per channel bitrate minimum is 13250 kbps for ACELP@16kHz *--------------------------------------------------------------------*/ +#ifndef REMOVE_EVS_DUPLICATES ivas_error config_acelp1( const Word16 enc_dec, /* i : encoder/decoder flag */ const Word32 total_brate, /* i : total bitrate */ @@ -1875,7 +1876,7 @@ ivas_error config_acelp1( * - should be in range of <6700; 24350> for ACELP@12.8kHz * - per channel bitrate minimum is 13250 kbps for ACELP@16kHz *--------------------------------------------------------------------*/ - +#endif ivas_error config_acelp1_IVAS( const Word16 enc_dec, /* i : encoder/decoder flag */ const Word32 total_brate, /* i : total bitrate */ diff --git a/lib_com/gs_inact_switching_fx.c b/lib_com/gs_inact_switching_fx.c index 52635d502..5e74feb0c 100644 --- a/lib_com/gs_inact_switching_fx.c +++ b/lib_com/gs_inact_switching_fx.c @@ -38,6 +38,8 @@ /* RETURN ARGUMENTS : */ /* _ None */ /*========================================================================*/ + +#ifndef REMOVE_EVS_DUPLICATES void Inac_swtch_ematch_fx( Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */ @@ -155,8 +157,7 @@ void Inac_swtch_ematch_fx( return; } - - +#endif void Inac_switch_ematch_ivas_fx( Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index bef07e952..f80814a0e 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -4776,6 +4776,7 @@ Word16 BITS_ALLOC_config_acelp( const Word16 narrowband, const Word16 nb_subfr ); +#ifndef REMOVE_EVS_DUPLICATES3 ivas_error config_acelp1( const Word16 enc_dec, /* i : encoder/decoder flag */ const Word32 total_brate, /* i : total bitrate */ @@ -4802,7 +4803,7 @@ ivas_error config_acelp1( const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */ const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */ ); - +#endif Word16 set_ACELP_flag( const Word16 element_mode, /* i : element mode */ const Word32 element_brate, /* i : element bitrate */ @@ -5762,6 +5763,7 @@ void tcx_ltp_post32( Word32 *tcx_buf, /* sig_q */ Word16 sig_q ); +#ifndef REMOVE_EVS_DUPLICATES3 // gs_inact_switching_fx.c void Inac_swtch_ematch_fx( Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ @@ -5777,6 +5779,7 @@ void Inac_swtch_ematch_fx( const short last_core, /* i : Last core used */ const short last_codec_mode /* i : Last codec mode */ ); +#endif void Inac_switch_ematch_ivas_fx( Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ @@ -6035,6 +6038,7 @@ void td_bwe_dec_init_fx( const Word32 output_Fs /* i : output sampling rate */ ); +#ifndef REMOVE_EVS_DUPLICATES3 // lsf_dec_fx.c void lsf_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ @@ -6048,7 +6052,7 @@ void lsf_dec_fx( , const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/ ); - +#endif void lsf_dec_ivas_fx( Decoder_State *st_fx, /* i/o: State structure */ const Word16 tc_subfr, /* i : TC subframe index Q0*/ @@ -6204,6 +6208,7 @@ void lsf_mid_dec_fx( Word16 lsp_mid[] /* o : quantized LSPs Q15*/ ); +#ifndef REMOVE_EVS_DUPLICATES3 // cng_dec_fx.c void CNG_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ @@ -6214,7 +6219,7 @@ void CNG_dec_fx( Word16 *allow_cn_step, /* o : allow CN step Q0 */ Word16 *sid_bw, /* i : 0-NB/WB, 1-SWB SID Q0 */ Word32 *q_env ); - +#endif void CNG_dec_ivas_fx( Decoder_State *st_fx, /* i/o: State structure */ const Word16 last_element_mode, /* i : last element mode Q0 */ @@ -6819,6 +6824,7 @@ void PulseResynchronization_fx( Word32 /*float*/ const pitchEnd /*i Q16*/ ); +#ifndef REMOVE_EVS_DUPLICATES3 // gs_dec_fx.c void decod_audio_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -6833,7 +6839,7 @@ void decod_audio_fx( , Word16 *gain_buf /*Q14*/ ); - +#endif void decod_audio_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ @@ -6852,6 +6858,7 @@ void decod_audio_ivas_fx( const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6*/ ); +#ifndef REMOVE_EVS_DUPLICATES3 void gsc_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ @@ -6864,7 +6871,7 @@ void gsc_dec_fx( const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/ Word16 Q_exc ); - +#endif void gsc_dec_ivas_fx( Decoder_State *st_fx, /* i/o: State structure */ Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ @@ -7080,6 +7087,7 @@ void re8_PPV_fx( Word16 y[] /* o : point in RE8 (8-dimensional integer vector) Q0 */ ); +#ifndef REMOVE_EVS_DUPLICATES3 // dec_pit_exc_fx.c void dec_pit_exc_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -7099,7 +7107,7 @@ void dec_pit_exc_fx( const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */ #endif ); - +#endif void dec_pit_exc_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* i : LP filter coefficient */ @@ -7539,6 +7547,7 @@ void configureFdCngDec_fx( const Word16 Last_L_frame, const Word16 element_mode ); +#ifndef REMOVE_EVS_DUPLICATES3 /* Apply the CLDFB-based CNG */ Word16 ApplyFdCng_fx( Word16 *timeDomainInput, /* i : pointer to time domain i */ @@ -7552,7 +7561,7 @@ Word16 ApplyFdCng_fx( Decoder_State *st, const Word16 concealWholeFrame, /* i : binary flag indicating frame loss */ Word16 is_music ); - +#endif Word16 ApplyFdCng_ivas_fx( Word16 *timeDomainInput, /* i : pointer to time domain input */ Word16 Q, @@ -8185,6 +8194,7 @@ void FEC_pitch_estim_fx( Word16 element_mode /* i : element mode */ ); +#ifndef REMOVE_EVS_DUPLICATES3 // FEC_scale_sync_fx.c void FEC_scale_syn_fx( const Word16 L_frame, /* i : length of the frame */ @@ -8215,7 +8225,7 @@ void FEC_scale_syn_fx( const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */ const Word16 force_scaling /* i: force scaling */ ); - +#endif void FEC_scale_syn_ivas_fx( const Word16 L_frame, /* i : length of the frame */ Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/ @@ -8532,6 +8542,7 @@ Word16 FEC_synchro_exc_fx( /* o : do_WI flag const Word16 Old_pitch /* i : Pitch use to create temporary adaptive codebook */ ); +#ifndef REMOVE_EVS_DUPLICATES3 // dec_uv_fx.c void decod_unvoiced_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -8544,7 +8555,7 @@ void decod_unvoiced_fx( Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */ Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */ Word16 *gain_buf ); - +#endif void decod_unvoiced_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ @@ -8588,6 +8599,7 @@ void gaus_L2_dec( Word16 *seed_acelp /*i/o : random seed Q0 */ ); +#ifndef REMOVE_EVS_DUPLICATES3 // dec_gen_voic_fx.c ivas_error decod_gen_voic_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -8604,7 +8616,7 @@ ivas_error decod_gen_voic_fx( Word16 *unbits, /* number of unused bits */ Word16 *gain_buf /*Q14*/ ); - +#endif ivas_error decod_gen_voic_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 L_frame, /* i : length of the frame */ diff --git a/lib_dec/FEC_fx.c b/lib_dec/FEC_fx.c index 0686996f3..ae222b3ca 100644 --- a/lib_dec/FEC_fx.c +++ b/lib_dec/FEC_fx.c @@ -511,6 +511,9 @@ void FEC_exc_estim_fx( /* st_fx->L_frame / L_SUBFR */ tmp = shr( st_fx->L_frame, 6 ); /* Replication of the last spectrum, with a slight downscaling of its dynamic */ +#ifdef REMOVE_EVS_DUPLICATES + gsc_dec_ivas_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, &st_fx->Q_exc ); +#else IF( st_fx->element_mode == EVS_MONO ) { gsc_dec_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, st_fx->Q_exc ); @@ -519,6 +522,7 @@ void FEC_exc_estim_fx( { gsc_dec_ivas_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, &st_fx->Q_exc ); } +#endif *tmp_noise = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/ move16(); /* Transform back to time domain */ diff --git a/lib_dec/FEC_scale_syn_fx.c b/lib_dec/FEC_scale_syn_fx.c index f6439b166..714a60166 100644 --- a/lib_dec/FEC_scale_syn_fx.c +++ b/lib_dec/FEC_scale_syn_fx.c @@ -50,6 +50,7 @@ /* _ None */ /*========================================================================*/ +#ifndef REMOVE_EVS_DUPLICATES void FEC_scale_syn_fx( const Word16 L_frame, /* i : length of the frame */ Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/ @@ -614,7 +615,7 @@ void FEC_scale_syn_fx( return; } - +#endif void FEC_scale_syn_ivas_fx( const Word16 L_frame, /* i : length of the frame */ Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/ diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c index f347cdb7e..6bdf57083 100644 --- a/lib_dec/acelp_core_switch_dec_fx.c +++ b/lib_dec/acelp_core_switch_dec_fx.c @@ -128,7 +128,13 @@ ivas_error acelp_core_switch_dec_fx( /*----------------------------------------------------------------* * Excitation decoding *----------------------------------------------------------------*/ + +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( DEC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, GENERIC, -1, -1, &decode_bwe /* dummy */, &i, st_fx->element_mode, &i /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, 0, 0 ); +#else config_acelp1( DEC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, GENERIC, -1, -1, &decode_bwe /* dummy */, &i, st_fx->element_mode, &i /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, 0, 0 ); +#endif + decod_gen_voic_core_switch_fx( st_fx, L_frame_for_cs, 0, Aq, exc, cbrate, &st_fx->Q_exc ); /*----------------------------------------------------------------* diff --git a/lib_dec/amr_wb_dec_fx.c b/lib_dec/amr_wb_dec_fx.c index 8a2ef7b40..8881b26ba 100644 --- a/lib_dec/amr_wb_dec_fx.c +++ b/lib_dec/amr_wb_dec_fx.c @@ -631,9 +631,15 @@ ivas_error amr_wb_dec_fx( move16(); } +#ifdef REMOVE_EVS_DUPLICATES + FEC_scale_syn_ivas_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, MOVING_AVERAGE, + &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, + exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 ); +#else FEC_scale_syn_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, MOVING_AVERAGE, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); +#endif frame_ener_fx( L_FRAME, st_fx->clas_dec, syn_fx, pitch_buf_tmp[3], &st_fx->enr_old_fx, L_FRAME, st_fx->Q_syn, 3, 0 ); } @@ -712,10 +718,17 @@ ivas_error amr_wb_dec_fx( * (smoothing is performed in the excitation domain and signal is resynthesized after) *------------------------------------------------------------*/ +#ifdef REMOVE_EVS_DUPLICATES + FEC_scale_syn_ivas_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, + MOVING_AVERAGE, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, + st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, + st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, 0, 0 ); +#else FEC_scale_syn_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, MOVING_AVERAGE, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, 0, 0 ); +#endif /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */ frame_ener_fx( L_FRAME, st_fx->last_good, syn_fx, shr( FEC_pitch_fx, 6 ), &st_fx->enr_old_fx, L_FRAME, st_fx->Q_syn, 3, 0 ); @@ -772,7 +785,11 @@ ivas_error amr_wb_dec_fx( st_fx->hPFstat->on = 1; move16(); test(); +#ifdef REMOVE_EVS_DUPLICATES + formant_post_filt_ivas_fx( st_fx->hPFstat, tmp_buffer_fx + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME, L_shl( st_fx->psf_lp_noise_fx, 15 ), st_fx->total_brate, sub( amr_io_class, AUDIO_CLAS ) == 0 ); +#else formant_post_filt_fx( st_fx->hPFstat, tmp_buffer_fx + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME, L_shl( st_fx->psf_lp_noise_fx, 15 ), st_fx->total_brate, sub( amr_io_class, AUDIO_CLAS ) == 0 ); +#endif } /*----------------------------------------------------------------* diff --git a/lib_dec/cng_dec_fx.c b/lib_dec/cng_dec_fx.c index 3590dae71..3f6a97b98 100644 --- a/lib_dec/cng_dec_fx.c +++ b/lib_dec/cng_dec_fx.c @@ -26,6 +26,7 @@ static void shb_CNG_decod_ivas_fx( Decoder_State *st_fx, const Word16 *synth_fx, * Decode residual signal energy *-----------------------------------------------------------------*/ +#ifndef REMOVE_EVS_DUPLICATES void CNG_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ const Word16 last_element_mode, /* i : last element mode Q0 */ @@ -696,7 +697,7 @@ void CNG_dec_fx( return; } - +#endif void CNG_dec_ivas_fx( Decoder_State *st_fx, /* i/o: State structure */ const Word16 last_element_mode, /* i : last element mode Q0 */ diff --git a/lib_dec/dec_ace_fx.c b/lib_dec/dec_ace_fx.c index e327d4cfb..cb7556b24 100644 --- a/lib_dec/dec_ace_fx.c +++ b/lib_dec/dec_ace_fx.c @@ -681,9 +681,15 @@ void decoder_acelp_fx( move16(); } +#ifdef REMOVE_EVS_DUPLICATES + FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, syn, pBuf_scaleSyn, st->enr_old_fx, 0, + st->coder_type, LSF_Q_prediction, &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, + exc, exc2, A, &( st->old_enr_LP ), mem_back, mem_syn, st->Q_exc, st->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, force_scale_syn ); +#else FEC_scale_syn_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, syn, pBuf_scaleSyn, st->enr_old_fx, 0, st->coder_type, LSF_Q_prediction, &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, exc, exc2, A, &( st->old_enr_LP ), mem_back, mem_syn, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, force_scale_syn ); +#endif } /* update ACELP synthesis memory */ Copy( mem_syn, st->mem_syn2_fx, M ); diff --git a/lib_dec/dec_gen_voic_fx.c b/lib_dec/dec_gen_voic_fx.c index 8ee335e3f..c369c4865 100644 --- a/lib_dec/dec_gen_voic_fx.c +++ b/lib_dec/dec_gen_voic_fx.c @@ -36,6 +36,7 @@ /* _ None */ /*======================================================================*/ +#ifndef REMOVE_EVS_DUPLICATES ivas_error decod_gen_voic_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 L_frame, /* i : length of the frame */ @@ -503,7 +504,7 @@ ivas_error decod_gen_voic_fx( /* RETURN ARGUMENTS : */ /* _ None */ /*======================================================================*/ - +#endif ivas_error decod_gen_voic_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 L_frame, /* i : length of the frame */ diff --git a/lib_dec/dec_pit_exc_fx.c b/lib_dec/dec_pit_exc_fx.c index 4e18eebce..bc12fd306 100644 --- a/lib_dec/dec_pit_exc_fx.c +++ b/lib_dec/dec_pit_exc_fx.c @@ -29,6 +29,8 @@ /* RETURN ARGUMENTS : */ /* _ None */ /*==========================================================================*/ + +#ifndef REMOVE_EVS_DUPLICATES void dec_pit_exc_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* i : LP filter coefficient */ @@ -456,6 +458,7 @@ void dec_pit_exc_fx( /* RETURN ARGUMENTS : */ /* _ None */ /*==========================================================================*/ +#endif void dec_pit_exc_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* i : LP filter coefficient */ diff --git a/lib_dec/dec_uv_fx.c b/lib_dec/dec_uv_fx.c index 6a15732a0..e98858996 100644 --- a/lib_dec/dec_uv_fx.c +++ b/lib_dec/dec_uv_fx.c @@ -25,6 +25,7 @@ static void gain_dec_gacelp_uv_fx( * Decode unvoiced (UC) frames *-------------------------------------------------------------------*/ +#ifndef REMOVE_EVS_DUPLICATES void decod_unvoiced_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ @@ -112,7 +113,7 @@ void decod_unvoiced_fx( * * Decode unvoiced (UC) frames *-------------------------------------------------------------------*/ - +#endif void decod_unvoiced_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index 2f0873ba5..ada1a68de 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -346,7 +346,7 @@ ivas_error evs_dec_fx( IF( EQ_16( st_fx->core, ACELP_CORE ) ) { /* ACELP core decoder */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES2aa IF( ( error = acelp_core_dec_ivas_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) #else IF( ( error = acelp_core_dec_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index a3c9b5826..b17113495 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -572,6 +572,8 @@ void deleteFdCngDec_fx( HANDLE_FD_CNG_DEC *hFdCngDec ) Returns: error */ + +#ifndef REMOVE_EVS_DUPLICATES Word16 ApplyFdCng_fx( Word16 *timeDomainInput, /* i : pointer to time domain input Q*/ Word16 Q, @@ -1160,7 +1162,7 @@ Word16 ApplyFdCng_fx( return 0; } - +#endif Word16 ApplyFdCng_ivas_fx( Word16 *timeDomainInput, /* i : pointer to time domain input Q*/ Word16 Q, diff --git a/lib_dec/gs_dec_fx.c b/lib_dec/gs_dec_fx.c index 72e07e57f..622fe6a26 100644 --- a/lib_dec/gs_dec_fx.c +++ b/lib_dec/gs_dec_fx.c @@ -31,6 +31,8 @@ /* RETURN ARGUMENTS : */ /* _ None */ /*==========================================================================*/ + +#ifndef REMOVE_EVS_DUPLICATES void decod_audio_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ @@ -96,12 +98,18 @@ void decod_audio_fx( st_fx->GSC_noisy_speech = 0; /* Q0 */ move16(); } + /* set bit-allocation */ #ifdef ADD_LRTD config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#else +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); #else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); #endif +#endif + /*---------------------------------------------------------------* * Decode energy dynamics *---------------------------------------------------------------*/ @@ -529,6 +537,7 @@ void decod_audio_fx( /* RETURN ARGUMENTS : */ /* _ None */ /*==========================================================================*/ +#endif void decod_audio_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ @@ -600,12 +609,14 @@ void decod_audio_ivas_fx( st_fx->GSC_noisy_speech = 0; move16(); } + /* set bit-allocation */ -#if 1 // def ADD_LRTD +#if 1 // def ADD_LRTD or def REMOVE_EVS_DUPLICATES config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); #else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); #endif + /*---------------------------------------------------------------* * Decode energy dynamics *---------------------------------------------------------------*/ @@ -825,7 +836,7 @@ void decod_audio_ivas_fx( Es_pred_dec_fx( &Es_pred, indice, nbits, 0 ); } -#if 1 // def ADD_LRTD +#if 1 // def ADD_LRTD or def REMOVE_EVS_DUPLICATES dec_pit_exc_ivas_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); #else dec_pit_exc_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf ); @@ -1077,6 +1088,8 @@ void decod_audio_ivas_fx( /* RETURN ARGUMENTS : */ /* _None */ /*==========================================================================*/ + +#ifndef REMOVE_EVS_DUPLICATES void gsc_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ @@ -1404,6 +1417,7 @@ void gsc_dec_fx( /* RETURN ARGUMENTS : */ /* _None */ /*==========================================================================*/ +#endif void gsc_dec_ivas_fx( Decoder_State *st_fx, /* i/o: State structure */ Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ diff --git a/lib_dec/lsf_dec_fx.c b/lib_dec/lsf_dec_fx.c index 50b5ec341..40628a5bb 100644 --- a/lib_dec/lsf_dec_fx.c +++ b/lib_dec/lsf_dec_fx.c @@ -100,6 +100,7 @@ static void dqlsf_CNG_fx( /* _ None */ /*===========================================================================*/ +#ifndef REMOVE_EVS_DUPLICATES void lsf_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ const Word16 tc_subfr, /* i : TC subframe index Q0*/ @@ -353,7 +354,7 @@ void lsf_dec_fx( /* RETURN ARGUMENTS : */ /* _ None */ /*===========================================================================*/ - +#endif void lsf_dec_ivas_fx( Decoder_State *st_fx, /* i/o: State structure */ const Word16 tc_subfr, /* i : TC subframe index Q0*/ diff --git a/lib_enc/acelp_core_enc_fx.c b/lib_enc/acelp_core_enc_fx.c index 6449367c8..97254972d 100644 --- a/lib_enc/acelp_core_enc_fx.c +++ b/lib_enc/acelp_core_enc_fx.c @@ -401,10 +401,17 @@ ivas_error acelp_core_enc_fx( test(); IF( !nelp_mode && !ppp_mode ) { +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, + st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, tc_subfr_fx, 0, &nb_bits, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, + st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); + +#else config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, tc_subfr_fx, 0, &nb_bits, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#endif } /*-----------------------------------------------------------------* @@ -537,9 +544,15 @@ ivas_error acelp_core_enc_fx( { tc_classif_enc_fx( Q_new, st_fx->L_frame, &tc_subfr_fx, &position, attack_flag, st_fx->pitch[0], res_fx ); +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, + -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, tc_subfr_fx, 1, NULL, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, + tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#else config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, tc_subfr_fx, 1, NULL, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#endif } /*---------------------------------------------------------------* @@ -604,9 +617,15 @@ ivas_error acelp_core_enc_fx( lsp_mid_bck_fx, mCb1_fx, Bin_E_fx, Bin_E_old_fx, mem_syn_bck_fx, mem_w0_bck_fx, streaklimit_fx, pstreaklen_fx ); /* Configure ACELP bit allocation */ +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, + -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, tc_subfr_fx, 0, &nb_bits, unbits_fx, 0, &uc_two_stage_flag, 0, 0, + st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#else config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, tc_subfr_fx, 0, &nb_bits, unbits_fx, 0, &uc_two_stage_flag, 0, 0, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); +#endif /* redo LSF quantization */ #ifdef LSF_RE_USE_SECONDARY_CHANNEL @@ -1267,7 +1286,9 @@ ivas_error acelp_core_enc_ivas_fx( test(); IF( !nelp_mode && !ppp_mode ) { - config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, tc_subfr, 0, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); + config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, + st->GSC_noisy_speech, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, tc_subfr, 0, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, + st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); } /*-----------------------------------------------------------------* @@ -1404,7 +1425,9 @@ ivas_error acelp_core_enc_ivas_fx( { tc_classif_enc_fx( Q_new, st->L_frame, &tc_subfr, &position, attack_flag, st->pitch[0], res_fx ); - config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, tc_subfr, 1, NULL, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); + config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, + -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, tc_subfr, 1, NULL, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, + st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); } /*---------------------------------------------------------------* @@ -1461,6 +1484,7 @@ ivas_error acelp_core_enc_ivas_fx( { /* restore memories of LSF quantizer and synthesis filter */ lsf_syn_mem_restore_ivas_fx( st, tilt_code_bck_fx, gc_threshold_bck_fx, clip_var_bck_fx, next_force_sf_bck, lsp_new, lsp_mid, clip_var_fx, mem_AR_fx, mem_MA_fx, lsp_new_bck_fx, lsp_mid_bck_fx, Bin_E_fx, Bin_E_old_fx, mem_syn_bck_fx, mem_w0_bck_fx, streaklimit_fx, pstreaklen ); + /* Configure ACELP bit allocation */ config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, tc_subfr, 0, &nb_bits, unbits, 0, &uc_two_stage_flag, 0, 0, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c index d521d85a2..70a84c198 100644 --- a/lib_enc/acelp_core_switch_enc_fx.c +++ b/lib_enc/acelp_core_switch_enc_fx.c @@ -148,8 +148,14 @@ void acelp_core_switch_enc_fx( /*----------------------------------------------------------------* * Excitation encoding *----------------------------------------------------------------*/ + +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, + GENERIC, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ ); +#else config_acelp1( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, GENERIC, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ ); +#endif encod_gen_voic_core_switch_fx( st_fx, st_fx->last_L_frame, inp, Aq, A, T_op, exc, cbrate, shift, Q_new ); diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c index 02372138d..adb529ca6 100644 --- a/lib_enc/transition_enc_fx.c +++ b/lib_enc/transition_enc_fx.c @@ -213,10 +213,16 @@ void transition_enc_fx( IF( EQ_16( *tc_subfr, TC_0_0 ) ) { /* this is called only to compute unused bits */ +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, TC_0_0, 3, NULL, unbits_ACELP, + st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#else config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, TC_0_0, 3, NULL, unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#endif } *clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, sub( shift_wsp, 1 ) ); move16(); @@ -325,10 +331,17 @@ void transition_enc_fx( IF( LE_16( sub( i_subfr, *tc_subfr ), L_SUBFR ) ) { +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, *tc_subfr, 2, NULL, + unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#else config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, *tc_subfr, 2, NULL, unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#endif } + /*-----------------------------------------------------------------* * get number of bits for pitch encoding *-----------------------------------------------------------------*/ @@ -1033,11 +1046,18 @@ void transition_enc_ivas_fx( IF( EQ_16( *tc_subfr, TC_0_0 ) ) { +#ifdef REMOVE_EVS_DUPLICATES + /* this is called only to compute unused bits */ + config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, TC_0_0, 3, NULL, unbits_ACELP, + st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#else /* this is called only to compute unused bits */ config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, TC_0_0, 3, NULL, unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#endif } *clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, sub( shift_wsp, 1 ) ); move16(); @@ -1146,10 +1166,17 @@ void transition_enc_ivas_fx( IF( LE_16( sub( i_subfr, *tc_subfr ), L_SUBFR ) ) { +#ifdef REMOVE_EVS_DUPLICATES + config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, *tc_subfr, 2, NULL, + unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#else config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, *tc_subfr, 2, NULL, unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); +#endif } + /*-----------------------------------------------------------------* * get number of bits for pitch encoding *-----------------------------------------------------------------*/ -- GitLab From b45ca67f12f69b4f452fa9facf50911748af6f74 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 12:00:06 +0100 Subject: [PATCH 016/698] fix build --- lib_com/bits_alloc_fx.c | 3 ++- lib_com/prot_fx.h | 3 ++- lib_dec/acelp_core_switch_dec_fx.c | 6 +++++- lib_dec/dec_amr_wb_fx.c | 5 +++++ lib_dec/dec_gen_voic_fx.c | 3 ++- lib_dec/dec_uv_fx.c | 11 ++++++++++- lib_dec/pit_dec_fx.c | 4 ++-- 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/lib_com/bits_alloc_fx.c b/lib_com/bits_alloc_fx.c index 53c5ca474..1d8a90048 100644 --- a/lib_com/bits_alloc_fx.c +++ b/lib_com/bits_alloc_fx.c @@ -439,6 +439,7 @@ static Word16 fcb_table( * Routine to allocate fixed innovation codebook bit-budget *--------------------------------------------------------------------*/ +#ifndef REMOVE_EVS_DUPLICATES static ivas_error acelp_FCB_allocator( Word16 *nBits, /* i/o: available bit-budget */ Word16 fixed_cdk_index[], /* o : codebook index Q0 */ @@ -599,7 +600,7 @@ static ivas_error acelp_FCB_allocator( return error; } - +#endif static ivas_error acelp_FCB_allocator_ivas( Word16 *nBits, /* i/o: available bit-budget */ Word16 fixed_cdk_index[], /* o : codebook index Q0 */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index f80814a0e..34b72e544 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -7166,6 +7166,7 @@ void Mode2_delta_pit_dec( Word16 **pt_indice /* i/o: pointer to Vector of Q indexes */ ); +#ifndef REMOVE_EVS_DUPLICATES3 Word16 pit_decode_fx( /* o : floating pitch value */ Decoder_State *st_fx, /* i/o: decoder state structure */ const Word32 core_brate, /* i : core bitrate */ @@ -7185,7 +7186,7 @@ Word16 pit_decode_fx( /* o : floating pitch value const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */ #endif ); - +#endif Word16 pit_decode_ivas_fx( /* o : floating pitch value */ Decoder_State *st_fx, /* i/o: decoder state structure */ const Word32 core_brate, /* i : core bitrate */ diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c index 6bdf57083..36bac44ec 100644 --- a/lib_dec/acelp_core_switch_dec_fx.c +++ b/lib_dec/acelp_core_switch_dec_fx.c @@ -825,7 +825,7 @@ ivas_error acelp_core_switch_dec_bfi_ivas_fx( #ifdef FIX_ISSUE_1237 Copy_Scale_sig_16_32_no_sat( syn, syn32, L_FRAME16k, Qtmp ); // Q(11) #else - Copy_Scale_sig_16_32_DEPREC( syn, syn32, L_FRAME16k, Qtmp ); // Q(11) + Copy_Scale_sig_16_32_DEPREC( syn, syn32, L_FRAME16k, Qtmp ); // Q(11) #endif IF( NE_32( ( error = cldfb_save_memory_ivas_fx( st_fx->cldfbAna ) ), IVAS_ERR_OK ) ) { @@ -919,7 +919,11 @@ static void decod_gen_voic_core_switch_fx( * Decode pitch lag *----------------------------------------------------------------------*/ +#ifdef REMOVE_EVS_DUPLICATES3 + pitch = pit_decode_ivas_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); /*Q6*/ +#else pitch = pit_decode_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); /*Q6*/ +#endif /*--------------------------------------------------------------* * Find the adaptive codebook vector. diff --git a/lib_dec/dec_amr_wb_fx.c b/lib_dec/dec_amr_wb_fx.c index baea98a2c..8a980f68d 100644 --- a/lib_dec/dec_amr_wb_fx.c +++ b/lib_dec/dec_amr_wb_fx.c @@ -71,12 +71,17 @@ void decod_amr_wb_fx( * Decode pitch lag *----------------------------------------------------------------------*/ +#ifdef REMOVE_EVS_DUPLICATES + *pt_pitch_fx = pit_decode_ivas_fx( st_fx, st_fx->core_brate, 1, L_FRAME, i_subfr, -1, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); +#else *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 1, L_FRAME, i_subfr, -1, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR #ifdef ADD_LRTD , 0, NULL #endif ); +#endif + /*--------------------------------------------------------------* * Find the adaptive codebook vector *--------------------------------------------------------------*/ diff --git a/lib_dec/dec_gen_voic_fx.c b/lib_dec/dec_gen_voic_fx.c index c369c4865..bcbef190f 100644 --- a/lib_dec/dec_gen_voic_fx.c +++ b/lib_dec/dec_gen_voic_fx.c @@ -677,6 +677,7 @@ ivas_error decod_gen_voic_ivas_fx( IF( LE_32( st_fx->core_brate, ACELP_8k00 ) ) { + // VE: function to be merged? gain_dec_lbr_ivas_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR ); } ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) ) @@ -801,7 +802,7 @@ ivas_error decod_gen_voic_ivas_fx( { idx = idiv1616( i_subfr_fx, L_SUBFR ); } - + // VE: function to be merged prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, diff --git a/lib_dec/dec_uv_fx.c b/lib_dec/dec_uv_fx.c index e98858996..6a9fbcf3f 100644 --- a/lib_dec/dec_uv_fx.c +++ b/lib_dec/dec_uv_fx.c @@ -208,7 +208,16 @@ void decod_unvoiced_ivas_fx( move16(); /* update LP filtered gains for the case of frame erasures */ - lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) + { + lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME ); + } + ELSE +#endif + { + lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME ); + } /*-------------------------------------------------------* * - Find the total excitation. * diff --git a/lib_dec/pit_dec_fx.c b/lib_dec/pit_dec_fx.c index b72c2bae1..6c37bb906 100644 --- a/lib_dec/pit_dec_fx.c +++ b/lib_dec/pit_dec_fx.c @@ -319,7 +319,7 @@ void Mode2_delta_pit_dec( /* _ (Word16 ) pitch : close loop integer pitch Q6 */ /*=======================================================================*/ - +#ifndef REMOVE_EVS_DUPLICATES3 Word16 pit_decode_fx( /* o : floating pitch value */ Decoder_State *st_fx, /* i/o: decoder state structure */ const Word32 core_brate, /* i : core bitrate */ @@ -599,7 +599,7 @@ Word16 pit_decode_fx( /* o : floating pitch value /* _ (Word16 ) pitch : close loop integer pitch Q6 */ /*=======================================================================*/ - +#endif Word16 pit_decode_ivas_fx( /* o : floating pitch value */ Decoder_State *st_fx, /* i/o: decoder state structure */ const Word32 core_brate, /* i : core bitrate */ -- GitLab From 4bc1b7981ad272a770c662102f661f5f7adf6837 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 12:51:07 +0100 Subject: [PATCH 017/698] REMOVE_EVS_DUPLICATES3 --- lib_com/options.h | 2 +- lib_com/prot_fx.h | 3 ++- lib_dec/acelp_core_dec_ivas_fx.c | 2 +- lib_dec/acelp_core_switch_dec_fx.c | 2 +- lib_dec/dec_post_fx.c | 10 +++++++--- lib_dec/decision_matrix_dec_fx.c | 2 +- lib_dec/evs_dec_fx.c | 2 +- lib_dec/post_dec_fx.c | 16 ++++++++++++++++ 8 files changed, 30 insertions(+), 9 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index f45ee973d..b30960266 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -156,5 +156,5 @@ #define SVD_WMOPS_OPT /* Ittiam : SVD related optimizations */ #define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions */ -#define REMOVE_EVS_DUPLICATES2 +#define REMOVE_EVS_DUPLICATES3 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 34b72e544..8c823e1f1 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -6639,6 +6639,7 @@ void nb_post_filt_fx( const Word16 disable_hpf /* i : flag to diabled HPF */ ); +#ifndef REMOVE_EVS_DUPLICATES void formant_post_filt_fx( PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *synth_in, /* i : 12k8 synthesis */ @@ -6649,7 +6650,7 @@ void formant_post_filt_fx( Word32 rate, /* (i) : bit-rate */ const Word16 off_flag /* i : off flag */ ); - +#endif void formant_post_filt_ivas_fx( PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *synth_in, /* i : 12k8 synthesis */ diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 09d370760..7c9e50b85 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -2371,7 +2371,7 @@ ivas_error acelp_core_dec_ivas_fx( ELSE { hf_synth_reset_fx( st->hBWE_zero ); -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but conditon is here to keep EVS bit-exact #endif { diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c index 36bac44ec..7a6348905 100644 --- a/lib_dec/acelp_core_switch_dec_fx.c +++ b/lib_dec/acelp_core_switch_dec_fx.c @@ -920,7 +920,7 @@ static void decod_gen_voic_core_switch_fx( *----------------------------------------------------------------------*/ #ifdef REMOVE_EVS_DUPLICATES3 - pitch = pit_decode_ivas_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); /*Q6*/ + pitch = pit_decode_ivas_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); /*Q6*/ #else pitch = pit_decode_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); /*Q6*/ #endif diff --git a/lib_dec/dec_post_fx.c b/lib_dec/dec_post_fx.c index a6e06db54..df3fb1f8f 100644 --- a/lib_dec/dec_post_fx.c +++ b/lib_dec/dec_post_fx.c @@ -33,8 +33,9 @@ static void calc_st_filt_local_fx( Word16 *apond2, Word16 *apond1, Word16 *parco static void modify_pst_param_fx( const Word16 lp_noise, Word16 *g1, Word16 *g2, const Word16 coder_type, Word16 *gain_factor ); +#ifndef REMOVE_EVS_DUPLICATES static void Dec_formant_postfilt_fx( PFSTAT_HANDLE hPFstat, Word16 *signal_ptr, Word16 *coeff, Word16 *sig_out, Word16 gamma1, Word16 gamma2 ); - +#endif static void Dec_formant_postfilt_ivas_fx( PFSTAT_HANDLE hPFstat, Word16 *signal_ptr, Word16 *coeff, Word16 *sig_out, Word16 gamma1, Word16 gamma2 ); static void calc_st_filt_ivas_fx( Word16 *apond2, Word16 *apond1, Word16 *parcor0, Word16 *sig_ltp_ptr, Word16 *mem_zero, const Word16 extl ); @@ -255,6 +256,8 @@ static void Dec_postfilt_fx( * * Main routine to perform formant post filtering *--------------------------------------------------------------------------*/ + +#ifndef REMOVE_EVS_DUPLICATES void formant_post_filt_fx( PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *synth_in, /* i : 12k8 synthesis */ @@ -379,7 +382,7 @@ void formant_post_filt_fx( p_Aq += ( M + 1 ); } } - +#endif void formant_post_filt_ivas_fx( PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *synth_in, /* i : 12k8 synthesis */ @@ -519,6 +522,7 @@ void formant_post_filt_ivas_fx( * k1 = 1st parcor calculated on {hi} * gamma3 = gamma3_minus if k1<0, gamma3_plus if k1>0 *----------------------------------------------------------------------------*/ +#ifndef REMOVE_EVS_DUPLICATES static void Dec_formant_postfilt_fx( PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/ @@ -597,7 +601,7 @@ static void Dec_formant_postfilt_fx( return; } - +#endif static void Dec_formant_postfilt_ivas_fx( PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/ diff --git a/lib_dec/decision_matrix_dec_fx.c b/lib_dec/decision_matrix_dec_fx.c index ff03f8bc5..8433960b2 100644 --- a/lib_dec/decision_matrix_dec_fx.c +++ b/lib_dec/decision_matrix_dec_fx.c @@ -713,7 +713,7 @@ void decision_matrix_dec_fx( move16(); } -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES /*-----------------------------------------------------------------* * set inactive coder_type flag in ACELP core *-----------------------------------------------------------------*/ diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index ada1a68de..1a7338315 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -346,7 +346,7 @@ ivas_error evs_dec_fx( IF( EQ_16( st_fx->core, ACELP_CORE ) ) { /* ACELP core decoder */ -#ifdef REMOVE_EVS_DUPLICATES2aa +#ifdef REMOVE_EVS_DUPLICATES IF( ( error = acelp_core_dec_ivas_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) #else IF( ( error = acelp_core_dec_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) diff --git a/lib_dec/post_dec_fx.c b/lib_dec/post_dec_fx.c index d581f810a..b5d56d8fb 100644 --- a/lib_dec/post_dec_fx.c +++ b/lib_dec/post_dec_fx.c @@ -139,13 +139,21 @@ void post_decoder( { st->hPFstat->on = 1; move16(); +#ifdef REMOVE_EVS_DUPLICATES + formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); +#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); +#endif } ELSE { st->hPFstat->on = 0; move16(); +#ifdef REMOVE_EVS_DUPLICATES + formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); +#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); +#endif } } @@ -302,13 +310,21 @@ void post_decoder_ivas_fx( { st->hPFstat->on = 1; move16(); +#ifdef REMOVE_EVS_DUPLICATES + formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); +#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); +#endif } ELSE { st->hPFstat->on = 0; move16(); +#ifdef REMOVE_EVS_DUPLICATES + formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); +#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); +#endif } } -- GitLab From e4e68a27ef3d8305598a922e2fd8e7916282b9dc Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 15:29:00 +0100 Subject: [PATCH 018/698] fix old_syn_12k8_16k_fx[] --- lib_dec/acelp_core_dec_ivas_fx.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 7c9e50b85..e7b1032a2 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -849,7 +849,16 @@ ivas_error acelp_core_dec_ivas_fx( Copy_Scale_sig( syn1_fx, temp_buf_fx, st->L_frame, sub( -1, st->Q_syn ) ); // Q_syn IF( st->hBWE_FD != NULL ) { - save_old_syn_fx( st->L_frame, syn1_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - this is likely a bug in IVAS + { + save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx ); + } + ELSE +#endif + { + save_old_syn_fx( st->L_frame, syn1_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx ); + } } } -- GitLab From 9ad83d1c7250046e9403523c67c33ac488bcafc5 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 12 Feb 2025 17:09:53 +0100 Subject: [PATCH 019/698] REMOVE_EVS_DUPLICATES2 --- lib_com/options.h | 4 +- lib_com/prot_fx.h | 32 +++++++++------ lib_com/swb_tbe_com_fx.c | 3 +- lib_dec/acelp_core_dec_fx.c | 12 +++--- lib_dec/acelp_core_dec_ivas_fx.c | 11 +++-- lib_dec/acelp_core_switch_dec_fx.c | 2 +- lib_dec/dec_LPD_fx.c | 5 +++ lib_dec/dec_ace_fx.c | 5 +++ lib_dec/dec_gen_voic_fx.c | 3 +- lib_dec/dec_tran_fx.c | 8 ++++ lib_dec/gain_dec_fx.c | 4 +- lib_dec/init_dec_fx.c | 1 - lib_dec/pit_dec_fx.c | 2 +- lib_enc/analy_lp_fx.c | 65 +++++++++++++++++++----------- lib_enc/cod_ace_fx.c | 6 +++ lib_enc/enc_gen_voic_fx.c | 7 ++++ lib_enc/enc_tran_fx.c | 5 +++ lib_enc/init_enc_fx.c | 1 - lib_enc/ivas_core_pre_proc.c | 9 +++++ lib_enc/ivas_core_pre_proc_front.c | 4 ++ lib_enc/ivas_front_vad.c | 5 +++ lib_enc/pre_proc_fx.c | 10 ++++- lib_enc/prot_fx_enc.h | 31 ++++++++------ 23 files changed, 163 insertions(+), 72 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index b30960266..dd2eef974 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -155,6 +155,6 @@ #define FIX_MINOR_SVD_WMOPS_MR1010X /* FhG: Minor WMOPS tuning, bit-exact to previous version, saves about 8.2 WMOPS for MR1010 */ #define SVD_WMOPS_OPT /* Ittiam : SVD related optimizations */ -#define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions */ -#define REMOVE_EVS_DUPLICATES3 +#define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions, ACELP low-band decoder */ +#define REMOVE_EVS_DUPLICATES2 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 8c823e1f1..c90b7551a 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3220,6 +3220,7 @@ void synthesise_fb_high_band_fx( Word16 bpf_memory_Q[], Word16 Qout ); +#ifndef REMOVE_EVS_DUPLICATES2 void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ #ifdef ADD_IVAS_TBE_CODE @@ -3247,6 +3248,7 @@ void prep_tbe_exc_fx( const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ #endif ); +#endif void prep_tbe_exc_ivas_fx( const Word16 L_frame_fx, /* i : length of the frame */ @@ -4776,7 +4778,7 @@ Word16 BITS_ALLOC_config_acelp( const Word16 narrowband, const Word16 nb_subfr ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES ivas_error config_acelp1( const Word16 enc_dec, /* i : encoder/decoder flag */ const Word32 total_brate, /* i : total bitrate */ @@ -5763,7 +5765,7 @@ void tcx_ltp_post32( Word32 *tcx_buf, /* sig_q */ Word16 sig_q ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // gs_inact_switching_fx.c void Inac_swtch_ematch_fx( Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ @@ -6038,7 +6040,7 @@ void td_bwe_dec_init_fx( const Word32 output_Fs /* i : output sampling rate */ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // lsf_dec_fx.c void lsf_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ @@ -6208,7 +6210,7 @@ void lsf_mid_dec_fx( Word16 lsp_mid[] /* o : quantized LSPs Q15*/ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // cng_dec_fx.c void CNG_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ @@ -6825,7 +6827,7 @@ void PulseResynchronization_fx( Word32 /*float*/ const pitchEnd /*i Q16*/ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // gs_dec_fx.c void decod_audio_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -6859,7 +6861,7 @@ void decod_audio_ivas_fx( const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6*/ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES void gsc_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ @@ -6940,6 +6942,7 @@ void gain_dec_mless_fx( Word32 *norm_gain_code_fx /* o : norm. gain of the codebook excitation Q16*/ ); +#ifndef REMOVE_EVS_DUPLICATES void gain_dec_lbr_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ const Word16 coder_type, /* i : coding type */ @@ -6954,6 +6957,7 @@ void gain_dec_lbr_fx( , const Word16 L_subfr /* i : subfr lenght */ ); +#endif void gain_dec_lbr_ivas_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ @@ -7088,7 +7092,7 @@ void re8_PPV_fx( Word16 y[] /* o : point in RE8 (8-dimensional integer vector) Q0 */ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // dec_pit_exc_fx.c void dec_pit_exc_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -7167,7 +7171,7 @@ void Mode2_delta_pit_dec( Word16 **pt_indice /* i/o: pointer to Vector of Q indexes */ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES Word16 pit_decode_fx( /* o : floating pitch value */ Decoder_State *st_fx, /* i/o: decoder state structure */ const Word32 core_brate, /* i : core bitrate */ @@ -7549,7 +7553,7 @@ void configureFdCngDec_fx( const Word16 Last_L_frame, const Word16 element_mode ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES /* Apply the CLDFB-based CNG */ Word16 ApplyFdCng_fx( Word16 *timeDomainInput, /* i : pointer to time domain i */ @@ -8196,7 +8200,7 @@ void FEC_pitch_estim_fx( Word16 element_mode /* i : element mode */ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // FEC_scale_sync_fx.c void FEC_scale_syn_fx( const Word16 L_frame, /* i : length of the frame */ @@ -8544,7 +8548,7 @@ Word16 FEC_synchro_exc_fx( /* o : do_WI flag const Word16 Old_pitch /* i : Pitch use to create temporary adaptive codebook */ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // dec_uv_fx.c void decod_unvoiced_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -8601,7 +8605,7 @@ void gaus_L2_dec( Word16 *seed_acelp /*i/o : random seed Q0 */ ); -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES // dec_gen_voic_fx.c ivas_error decod_gen_voic_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ @@ -9565,6 +9569,8 @@ void d_gain_pred_fx( Word16 *Es_pred, /* o : predicited scaled innovation energy */ Word16 **pt_indice /* i/o: pointer to the buffer of indices */ ); + +#ifndef REMOVE_EVS_DUPLICATES // acelp_core_dec_fx.c ivas_error acelp_core_dec_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ @@ -9590,7 +9596,7 @@ ivas_error acelp_core_dec_fx( STEREO_CNG_DEC_HANDLE hStereoCng, /* i : stereo CNG handle */ const Word16 read_sid_info /* i : read SID info flag */ ); - +#endif // evs_dec_fx.c ivas_error evs_dec_fx( Decoder_State *st_fx, /* i/o : Decoder state structure */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 92271c1f1..c7a8fd1f0 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7131,6 +7131,7 @@ void tbe_celp_exc( /* _ None */ /*======================================================================================*/ +#ifndef REMOVE_EVS_DUPLICATES2 void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ #ifdef ADD_IVAS_TBE_CODE @@ -7299,7 +7300,7 @@ void prep_tbe_exc_fx( /* RETURN ARGUMENTS : */ /* _ None */ /*======================================================================================*/ - +#endif void prep_tbe_exc_ivas_fx( const Word16 L_frame_fx, /* i : length of the frame */ #if 1 // def ADD_IVAS_TBE_CODE diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index fc35cb754..e81ae0428 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -10,6 +10,8 @@ #include "ivas_prot_fx.h" #include "ivas_cnst.h" /* Common constants */ #include "cnst.h" /* Common constants */ + +#ifndef REMOVE_EVS_DUPLICATES /*==========================================================================*/ /* FUNCTION : void acelp_core_dec_fx () */ /*--------------------------------------------------------------------------*/ @@ -661,7 +663,7 @@ ivas_error acelp_core_dec_fx( test(); IF( EQ_32( st_fx->core_brate, SID_2k40 ) && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) { - FdCng_decodeSID_fx( st_fx->hFdCngDec->hFdCngCom, st_fx ); // VE: 2 variants needed + FdCng_decodeSID_fx( st_fx->hFdCngDec->hFdCngCom, st_fx ); *sid_bw = 0; move16(); } @@ -691,7 +693,7 @@ ivas_error acelp_core_dec_fx( } } #endif - generate_comfort_noise_dec_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 2, -1 ); // VE: 2 variants needed + generate_comfort_noise_dec_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 2, -1 ); FdCng_exc( st_fx->hFdCngDec->hFdCngCom, &st_fx->CNG_mode, st_fx->L_frame, st_fx->lsp_old_fx, st_fx->first_CNG, st_fx->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx ); @@ -715,7 +717,6 @@ ivas_error acelp_core_dec_fx( #ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { - // VE: TBV: 'st_fx->L_frame * HIBND_ACB_L_FAC' should be corrected Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, st_fx->L_frame * HIBND_ACB_L_FAC, 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); } @@ -754,7 +755,7 @@ ivas_error acelp_core_dec_fx( FOR( i = 0; i < DCT_L_POST; i++ ) { /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/ - hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) ); // VE: 2 variants needed + hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) ); move16(); } } @@ -2054,7 +2055,7 @@ ivas_error acelp_core_dec_fx( { hf_synth_reset_fx( st_fx->hBWE_zero ); #ifdef MSAN_FIX - IF( NE_16( st_fx->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but conditon is here to keep EVS bit-exact + IF( NE_16( st_fx->element_mode, EVS_MONO ) ) { set16_fx( st_fx->hBWE_zero->mem_hp400_fx, 0, 6 ); } @@ -2132,3 +2133,4 @@ ivas_error acelp_core_dec_fx( return IVAS_ERR_OK; } +#endif diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index e7b1032a2..fcfbe1e66 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -761,7 +761,7 @@ ivas_error acelp_core_dec_ivas_fx( #ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { - // VE: TBV: 'st_fx->L_frame * HIBND_ACB_L_FAC' should be corrected + // VE: TBV: should 'st_fx->L_frame * HIBND_ACB_L_FAC' be corrected in EVS? Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame, st->L_frame * HIBND_ACB_L_FAC, 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE ); } @@ -1223,7 +1223,7 @@ ivas_error acelp_core_dec_ivas_fx( #ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { - // VE: TBV: this is a bug in EVS - 'st->last_coder_type' should be replaced by 'st->core_brate' + // VE: TBV: this is likely a bug in EVS - 'st->last_coder_type' should be replaced by 'st->core_brate' Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_coder_type, st->element_mode, pitch_buf_fx, st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct ); } @@ -1760,7 +1760,7 @@ ivas_error acelp_core_dec_ivas_fx( #ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { - // VE:TBC - in FLP, it is: + // VE: TBV - is it correct in EVS? in FLP, it is: // v_multc( st->hFdCngDec->hFdCngCom->olapBufferSynth2 + 5 * st->L_frame / 4, 256.f, temp_buf, st->L_frame / 2 ); // v_add( temp_buf, syn, syn, st->L_frame / 2 ); FOR( i = 0; i < st->L_frame / 2; i++ ) @@ -2381,7 +2381,7 @@ ivas_error acelp_core_dec_ivas_fx( { hf_synth_reset_fx( st->hBWE_zero ); #ifdef REMOVE_EVS_DUPLICATES - IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but conditon is here to keep EVS bit-exact + IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but condition is here to keep EVS bit-exact for the moment #endif { #ifdef MSAN_FIX @@ -2425,8 +2425,7 @@ ivas_error acelp_core_dec_ivas_fx( #ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { - non_linearity_fx( bwe_exc_fx, bwe_exc_extended_fx, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, - st->coder_type, voice_factors_fx, st->L_frame ); + non_linearity_fx( bwe_exc_fx, bwe_exc_extended_fx, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); } ELSE #endif diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c index 7a6348905..81beffb34 100644 --- a/lib_dec/acelp_core_switch_dec_fx.c +++ b/lib_dec/acelp_core_switch_dec_fx.c @@ -919,7 +919,7 @@ static void decod_gen_voic_core_switch_fx( * Decode pitch lag *----------------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES3 +#ifdef REMOVE_EVS_DUPLICATES pitch = pit_decode_ivas_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); /*Q6*/ #else pitch = pit_decode_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); /*Q6*/ diff --git a/lib_dec/dec_LPD_fx.c b/lib_dec/dec_LPD_fx.c index f3443349a..c722418f7 100644 --- a/lib_dec/dec_LPD_fx.c +++ b/lib_dec/dec_LPD_fx.c @@ -555,7 +555,12 @@ void decoder_LPD_fx( st->relax_prev_lsf_interp = 2; move16(); } + +#ifdef REMOVE_EVS_DUPLICATES2 + int_lsp4_ivas_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp ); +#else int_lsp4_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp ); +#endif } ELSE { diff --git a/lib_dec/dec_ace_fx.c b/lib_dec/dec_ace_fx.c index cb7556b24..5d644c289 100644 --- a/lib_dec/dec_ace_fx.c +++ b/lib_dec/dec_ace_fx.c @@ -532,6 +532,10 @@ void decoder_acelp_fx( move16(); IF( st->igf != 0 ) { +#ifdef REMOVE_EVS_DUPLICATES2 + prep_tbe_exc_ivas_fx( st->L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc, + gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 ); +#else prep_tbe_exc_fx( st->L_frame, #ifdef ADD_IVAS_TBE_CODE L_SUBFR, @@ -543,6 +547,7 @@ void decoder_acelp_fx( st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 #endif ); +#endif } /*---------------------------------------------------------* diff --git a/lib_dec/dec_gen_voic_fx.c b/lib_dec/dec_gen_voic_fx.c index bcbef190f..c369c4865 100644 --- a/lib_dec/dec_gen_voic_fx.c +++ b/lib_dec/dec_gen_voic_fx.c @@ -677,7 +677,6 @@ ivas_error decod_gen_voic_ivas_fx( IF( LE_32( st_fx->core_brate, ACELP_8k00 ) ) { - // VE: function to be merged? gain_dec_lbr_ivas_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR ); } ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) ) @@ -802,7 +801,7 @@ ivas_error decod_gen_voic_ivas_fx( { idx = idiv1616( i_subfr_fx, L_SUBFR ); } - // VE: function to be merged + prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, diff --git a/lib_dec/dec_tran_fx.c b/lib_dec/dec_tran_fx.c index e886fd337..96eace777 100644 --- a/lib_dec/dec_tran_fx.c +++ b/lib_dec/dec_tran_fx.c @@ -253,9 +253,17 @@ void decod_tran_fx( { tmp_idx_2 = idiv1616( i_subfr, L_SUBFR ); } + +#ifdef REMOVE_EVS_DUPLICATES2 + prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, + &voice_factors_fx[tmp_idx_2], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, + st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, + st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); +#else prep_tbe_exc_fx( L_frame_fx, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[tmp_idx_2], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate ); +#endif /*----------------------------------------------------------------* * Excitation enhancements (update of total excitation signal) diff --git a/lib_dec/gain_dec_fx.c b/lib_dec/gain_dec_fx.c index 5e1712231..00eca187d 100644 --- a/lib_dec/gain_dec_fx.c +++ b/lib_dec/gain_dec_fx.c @@ -601,6 +601,8 @@ void gain_dec_mless_fx( /* RETURN ARGUMENTS : */ /* _ None */ /*==================================================================================*/ + +#ifndef REMOVE_EVS_DUPLICATES void gain_dec_lbr_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ const Word16 coder_type, /* i : coding type */ @@ -969,7 +971,7 @@ void gain_dec_lbr_fx( return; } - +#endif void gain_dec_lbr_ivas_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ const Word16 coder_type, /* i : coding type */ diff --git a/lib_dec/init_dec_fx.c b/lib_dec/init_dec_fx.c index d709ff5fc..8aa4f45e1 100644 --- a/lib_dec/init_dec_fx.c +++ b/lib_dec/init_dec_fx.c @@ -483,7 +483,6 @@ ivas_error init_decoder_fx( } /* TCX core */ - // VE: reduction possible for MCT_CHAN_MODE_LFE channel - see I1-172 IF( idchan == 0 || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) { IF( ( st_fx->hTcxDec = (TCX_DEC_HANDLE) malloc( sizeof( TCX_DEC_DATA ) ) ) == NULL ) diff --git a/lib_dec/pit_dec_fx.c b/lib_dec/pit_dec_fx.c index 6c37bb906..b7f0abec3 100644 --- a/lib_dec/pit_dec_fx.c +++ b/lib_dec/pit_dec_fx.c @@ -319,7 +319,7 @@ void Mode2_delta_pit_dec( /* _ (Word16 ) pitch : close loop integer pitch Q6 */ /*=======================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES3 +#ifndef REMOVE_EVS_DUPLICATES Word16 pit_decode_fx( /* o : floating pitch value */ Decoder_State *st_fx, /* i/o: decoder state structure */ const Word32 core_brate, /* i : core bitrate */ diff --git a/lib_enc/analy_lp_fx.c b/lib_enc/analy_lp_fx.c index c2f9d0585..b5764ec43 100644 --- a/lib_enc/analy_lp_fx.c +++ b/lib_enc/analy_lp_fx.c @@ -24,19 +24,22 @@ * - update LSPs for the next frame *-------------------------------------------------------------------*/ void analy_lp_ivas_fx( - const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ - const Word16 L_frame, /* i :(q0) length of the frame */ - const Word16 L_look, /* i :(q0) look-ahead */ - Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ - Word16 A[], /* o :(q14) A(z) filter coefficients */ - Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 lsp_new[], /* o :(q15) current frame LSPs */ - Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ - Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ - const Word16 Top[2], /* i :(q0) open loop pitch lag */ - const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ - const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ + const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ + const Word16 L_frame, /* i :(q0) length of the frame */ + const Word16 L_look, /* i :(q0) look-ahead */ + Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ + Word16 A[], /* o :(q14) A(z) filter coefficients */ + Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 lsp_new[], /* o :(q15) current frame LSPs */ + Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ + Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ + const Word16 Top[2], /* i :(q0) open loop pitch lag */ + const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ + const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ +#ifdef REMOVE_EVS_DUPLICATES2 + const Word16 element_mode, /* i : element mode */ +#endif const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ Word16 Q_new, /*i: stores Q for speech*/ Word16 *Q_r /*stores q for ener*/ ) @@ -74,19 +77,24 @@ void analy_lp_ivas_fx( /* Autocorrelations */ autocorr_fx( pt, M, r_h, r_l, &Q_r[1 - i_subfr], wind_length, wind, 0, 0 ); - /*if ( r[0] < 100.0f && no_thr == 0 )*/ - /*r[0] = 100.0f*/ - IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( L_Comp( r_h[0], r_l[0] ) /* Q_r[1 - i_subfr]*/, sub( 31, add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ) ), 100 /*q0*/, 31 ), -1 ) ) +#ifdef REMOVE_EVS_DUPLICATES2 + IF( NE_16( element_mode, EVS_MONO ) ) +#endif { - /*Q_min stores min of 24 and the actual Q for r*/ - Word16 Q_min = s_min( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), 24 ); /* comparing q with 24 because exponent of 100 is 7 so max q should be 24*/ - L_Extract( L_shl( 100, Q_min ), &r_h[0], &r_l[0] ); /*extracting high and low components of r[0]*/ - FOR( i = 1; i < 17; i++ ) + /*if ( r[0] < 100.0f && no_thr == 0 )*/ + /*r[0] = 100.0f*/ + IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( L_Comp( r_h[0], r_l[0] ) /* Q_r[1 - i_subfr]*/, sub( 31, add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ) ), 100 /*q0*/, 31 ), -1 ) ) { - L_Extract( L_shr( L_Comp( r_h[i], r_l[i] ), sub( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), Q_min ) ), &r_h[i], &r_l[i] ); /*scaling all the values to q24*/ + /*Q_min stores min of 24 and the actual Q for r*/ + Word16 Q_min = s_min( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), 24 ); /* comparing q with 24 because exponent of 100 is 7 so max q should be 24*/ + L_Extract( L_shl( 100, Q_min ), &r_h[0], &r_l[0] ); /*extracting high and low components of r[0]*/ + FOR( i = 1; i < 17; i++ ) + { + L_Extract( L_shr( L_Comp( r_h[i], r_l[i] ), sub( add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ), Q_min ) ), &r_h[i], &r_l[i] ); /*scaling all the values to q24*/ + } + Q_r[1 - i_subfr] = sub( Q_min, shl( Q_new, 1 ) ); /*updating the q (subtracting shl( Q_new, 1 ) as in later part it is being added-> to maintain q24 )*/ + move16(); } - Q_r[1 - i_subfr] = sub( Q_min, shl( Q_new, 1 ) ); /*updating the q (subtracting shl( Q_new, 1 ) as in later part it is being added-> to maintain q24 )*/ - move16(); } /* Lag windowing */ @@ -124,6 +132,7 @@ void analy_lp_ivas_fx( return; } +#ifndef REMOVE_EVS_DUPLICATES2 void analy_lp_fx( const Word16 speech[], /* i : pointer to the speech frame Q_new*/ const Word16 L_frame, /* i : length of the frame Q0*/ @@ -195,12 +204,20 @@ void analy_lp_fx( IF( EQ_16( sec_chan_low_rate, 1 ) ) { /* LSP interpolation */ +#ifdef REMOVE_EVS_DUPLICATES2 + int_lsp4_ivas_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, -2 ); +#else int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, -2 ); +#endif } ELSE { /* LSP interpolation */ +#ifdef REMOVE_EVS_DUPLICATES2 + int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, 0 ); +#else int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, 0 ); +#endif } Copy( lsp_new, lsp_old, M ); /* Q15 */ *ener = L_Comp( epsP_h[M], epsP_l[M] ); /* Q_r */ @@ -208,7 +225,7 @@ void analy_lp_fx( return; } - +#endif /*-------------------------------------------------------------------* * analy_lp_AMR_WB() diff --git a/lib_enc/cod_ace_fx.c b/lib_enc/cod_ace_fx.c index e701b8e46..aa823cbda 100644 --- a/lib_enc/cod_ace_fx.c +++ b/lib_enc/cod_ace_fx.c @@ -409,8 +409,14 @@ Word16 coder_acelp_fx( /* o : SEGSNR for CL decision * IF( st->igf != 0 ) { +#ifdef REMOVE_EVS_DUPLICATES2 + prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], + bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate, + st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); +#else prep_tbe_exc_fx( L_frame, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate ); +#endif } /*---------------------------------------------------------* diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c index 6f71b8ba1..39cdba524 100644 --- a/lib_enc/enc_gen_voic_fx.c +++ b/lib_enc/enc_gen_voic_fx.c @@ -368,9 +368,16 @@ void encod_gen_voic_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ +#ifdef REMOVE_EVS_DUPLICATES2 + prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, + &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new, + T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, + st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); +#else prep_tbe_exc_fx( L_frame, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate ); +#endif /*-----------------------------------------------------------------* * Synthesize speech to update mem_syn[]. diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index b4495d4ff..66167c138 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -309,8 +309,13 @@ Word16 encod_tran_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ +#ifdef REMOVE_EVS_DUPLICATES2 + prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], + bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); +#else prep_tbe_exc_fx( L_frame_fx, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate ); +#endif /*-----------------------------------------------------------------* * Synthesize speech to update mem_syn[]. diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 89bbdc898..be2355f08 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -760,7 +760,6 @@ ivas_error init_encoder_fx( * TCX core *-----------------------------------------------------------------*/ - // VE: reduction possible for MCT_CHAN_MODE_LFE channel - see I1-172 test(); IF( idchan == 0 || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) { diff --git a/lib_enc/ivas_core_pre_proc.c b/lib_enc/ivas_core_pre_proc.c index 541cc620c..bce78a8ee 100644 --- a/lib_enc/ivas_core_pre_proc.c +++ b/lib_enc/ivas_core_pre_proc.c @@ -1134,11 +1134,20 @@ ivas_error ivas_compute_core_buffers_fx( IF( Q_new ) { +#ifdef REMOVE_EVS_DUPLICATES2 + analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, sub( *Q_new, 1 ), Q_r ); +#else analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, 0, sub( *Q_new, 1 ), Q_r ); +#endif } ELSE { +#ifdef REMOVE_EVS_DUPLICATES2 + analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, -1, Q_r ); + +#else analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, 0, -1, Q_r ); +#endif } /*--------------------------------------------------------------* diff --git a/lib_enc/ivas_core_pre_proc_front.c b/lib_enc/ivas_core_pre_proc_front.c index fd9b79617..24112da14 100644 --- a/lib_enc/ivas_core_pre_proc_front.c +++ b/lib_enc/ivas_core_pre_proc_front.c @@ -1196,8 +1196,12 @@ ivas_error pre_proc_front_ivas_fx( move16(); } +#ifdef REMOVE_EVS_DUPLICATES2 + analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, element_mode, i, Q_new_loc, Q_r ); +#else analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, i, Q_new_loc, Q_r ); +#endif FOR( Word16 idx = 0; idx < M + 1; idx++ ) { diff --git a/lib_enc/ivas_front_vad.c b/lib_enc/ivas_front_vad.c index f52bdadb4..751744102 100644 --- a/lib_enc/ivas_front_vad.c +++ b/lib_enc/ivas_front_vad.c @@ -673,7 +673,12 @@ ivas_error front_vad_spar_fx( hFrontVad->q_buffer_12k8 = Q_inp_12k8; move16(); +#ifdef REMOVE_EVS_DUPLICATES2 + analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, st->element_mode, 0, Q_inp_12k8, Q_r ); +#else analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, 0 /* <-- sec_chan_low_rate */, Q_inp_12k8, Q_r ); +#endif + FOR( Word16 i = 0; i <= M; i++ ) { epsP_fx[i] = L_Comp( epsP_h[i], epsP_l[i] ); // Q_r[0] diff --git a/lib_enc/pre_proc_fx.c b/lib_enc/pre_proc_fx.c index bd3d4cb34..c119b59dc 100644 --- a/lib_enc/pre_proc_fx.c +++ b/lib_enc/pre_proc_fx.c @@ -214,7 +214,7 @@ void pre_proc_fx( * Change the sampling frequency to 12.8 kHz *----------------------------------------------------------------*/ Word16 Q_new_inp, mem_decim_size; // TO be removed - modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, ( const Word16 )( EQ_16( st->max_bwidth, NB ) ), &Q_new_inp, &mem_decim_size ); + modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, (const Word16) ( EQ_16( st->max_bwidth, NB ) ), &Q_new_inp, &mem_decim_size ); Copy( new_inp_12k8, st->buf_speech_enc + L_FRAME32k, L_FRAME ); Scale_sig( st->buf_speech_enc + L_FRAME32k, L_FRAME, 1 ); /*------------------------------------------------------------------* @@ -419,7 +419,11 @@ void pre_proc_fx( alw_voicing[1] = st->voicing_fx[2]; move16(); +#ifdef REMOVE_EVS_DUPLICATES2 + analy_lp_ivas_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, EVS_MONO, 0, *Q_new, Q_r ); +#else analy_lp_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r ); +#endif lsp2lsf_fx( lsp_new, lsf_new, M, INT_FS_12k8 ); stab_fac = lsf_stab_fx( lsf_new, st->lsf_old1_fx, 0, L_FRAME ); @@ -1152,7 +1156,11 @@ void pre_proc_fx( Copy( st->lsp_old1_fx, st->lspold_enc_fx, M ); } +#ifdef REMOVE_EVS_DUPLICATES2 + analy_lp_ivas_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, EVS_MONO, 0, *Q_new, Q_r ); +#else analy_lp_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r ); +#endif /*--------------------------------------------------------------* * Compute Weighted Input diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index bc08aae24..666192389 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -70,23 +70,27 @@ ivas_error acelp_core_enc_fx( #endif ); void analy_lp_ivas_fx( - const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ - const Word16 L_frame, /* i :(q0) length of the frame */ - const Word16 L_look, /* i :(q0) look-ahead */ - Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ - Word16 A[], /* o :(q14) A(z) filter coefficients */ - Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 lsp_new[], /* o :(q15) current frame LSPs */ - Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ - Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ - const Word16 Top[2], /* i :(q0) open loop pitch lag */ - const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ - const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ + const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ + const Word16 L_frame, /* i :(q0) length of the frame */ + const Word16 L_look, /* i :(q0) look-ahead */ + Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ + Word16 A[], /* o :(q14) A(z) filter coefficients */ + Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 lsp_new[], /* o :(q15) current frame LSPs */ + Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ + Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ + const Word16 Top[2], /* i :(q0) open loop pitch lag */ + const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ + const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ +#ifdef REMOVE_EVS_DUPLICATES2 + const Word16 element_mode, /* i : element mode */ +#endif const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ Word16 Q_new, /*i: stores Q for speech*/ Word16 *Q_r /*stores q for ener*/ ); +#ifndef REMOVE_EVS_DUPLICATES2 void analy_lp_fx( const Word16 speech[], /* i : pointer to the speech frame Q_new*/ const Word16 L_frame, /* i : length of the frame Q0*/ @@ -104,6 +108,7 @@ void analy_lp_fx( const Word16 sec_chan_low_rate, /* i : flag to signal second channel Q0*/ Word16 Q_new, Word16 *Q_r ); +#endif void AVQ_cod_fx( /* o: comfort noise gain factor */ const Word16 xri[], /* i: vector to quantize */ -- GitLab From 2cc9768f631e7f312c11885862964c999769dd40 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 6 Mar 2025 14:43:59 +0100 Subject: [PATCH 020/698] clang-format --- lib_dec/fd_cng_dec_fx.c | 4 ++-- lib_enc/pre_proc_fx.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 65a20bfae..11af48a85 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1243,7 +1243,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); } @@ -1570,7 +1570,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); } diff --git a/lib_enc/pre_proc_fx.c b/lib_enc/pre_proc_fx.c index 88eb78a60..062dc3fa4 100644 --- a/lib_enc/pre_proc_fx.c +++ b/lib_enc/pre_proc_fx.c @@ -214,7 +214,7 @@ void pre_proc_fx( * Change the sampling frequency to 12.8 kHz *----------------------------------------------------------------*/ Word16 Q_new_inp, mem_decim_size; // TO be removed - modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, (const Word16) ( EQ_16( st->max_bwidth, NB ) ), &Q_new_inp, &mem_decim_size ); + modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, ( const Word16 )( EQ_16( st->max_bwidth, NB ) ), &Q_new_inp, &mem_decim_size ); Copy( new_inp_12k8, st->buf_speech_enc + L_FRAME32k, L_FRAME ); Scale_sig( st->buf_speech_enc + L_FRAME32k, L_FRAME, 1 ); /*------------------------------------------------------------------* -- GitLab From 3b55b2d8511ffd924e0ed55b3f5d335860ef1a4d Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Wed, 12 Mar 2025 12:00:22 +0100 Subject: [PATCH 021/698] Use round_fx instead of extract_h for angle computation. --- lib_com/options.h | 1 + lib_dec/ivas_dirac_dec_fx.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index d03261715..4272caefe 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -172,4 +172,5 @@ #define DOT_PROD_CHOLESKY_64BIT /* FhG: Issue 1323, optimized 64 bit implementation of dot_product_cholesky() */ #define OPT_BASOP_ADD_v1 /* optimizations to avoid usage of BASOP_Util_Add_MantExp */ #define FIX_ISSUE_1327 /* Ittiam: Fix for issue 1327: Glitch when stereo is switching from TD to FD*/ +#define FIX_1379_MASA_ANGLE_ROUND #endif diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index d8288e561..7ad651af1 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1446,10 +1446,17 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { +#ifdef FIX_1379_MASA_ANGLE_ROUND + hSpatParamRendCom->azimuth[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); + move16(); + hSpatParamRendCom->elevation[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); + move16(); +#else hSpatParamRendCom->azimuth[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); move16(); hSpatParamRendCom->elevation[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); move16(); +#endif hSpatParamRendCom->energy_ratio1_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block]; move32(); hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( ONE_IN_Q30, q_direction->band_data[band].energy_ratio_fx[block] ); @@ -1494,10 +1501,17 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { +#ifdef FIX_1379_MASA_ANGLE_ROUND + hSpatParamRendCom->azimuth2[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); + move16(); + hSpatParamRendCom->elevation2[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); + move16(); +#else hSpatParamRendCom->azimuth2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); move16(); hSpatParamRendCom->elevation2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); move16(); +#endif hSpatParamRendCom->energy_ratio2_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block]; move32(); hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b], q_direction->band_data[band].energy_ratio_fx[block] ); @@ -1704,8 +1718,13 @@ void ivas_qmetadata_to_dirac_fx( IF( hodirac_flag ) { +#ifdef FIX_1379_MASA_ANGLE_ROUND + azi = round_fx( L_shr( ( L_add( azimuth_fx, ONE_IN_Q21 ) ), 6 ) ); + ele = round_fx( L_shr( ( L_add( elevation_fx, ONE_IN_Q21 ) ), 6 ) ); +#else azi = extract_h( L_shr( ( L_add( azimuth_fx, ONE_IN_Q21 ) ), 6 ) ); ele = extract_h( L_shr( ( L_add( elevation_fx, ONE_IN_Q21 ) ), 6 ) ); +#endif /*addition of one to compensate precision loss*/ if ( azi < 0 ) { @@ -1741,8 +1760,13 @@ void ivas_qmetadata_to_dirac_fx( final_1_32 = BASOP_Util_Add_Mant32Exp( final_1_32, final_1_exp, ONE_IN_Q30, 0, &final_1_exp ); /*0.5 in q31*/ final_2_32 = BASOP_Util_Add_Mant32Exp( final_2_32, final_2_exp, ONE_IN_Q30, 0, &final_2_exp ); +#ifdef FIX_1379_MASA_ANGLE_ROUND + azi = round_fx( L_shr( final_1_32, sub( sub( 31, final_1_exp ), 16 ) ) ); + ele = round_fx( L_shr( final_2_32, sub( sub( 31, final_2_exp ), 16 ) ) ); +#else azi = extract_h( L_shr( final_1_32, sub( sub( 31, final_1_exp ), 16 ) ) ); ele = extract_h( L_shr( final_2_32, sub( sub( 31, final_2_exp ), 16 ) ) ); +#endif /*addition of one to compensate precision loss*/ if ( azi < 0 ) @@ -3597,7 +3621,9 @@ void ivas_dirac_dec_render_sf_fx( { Word16 j, k, j2, l; Word16 num_objects, nchan_out_woLFE, lfe_index; +#ifndef FIX_1379_MASA_ANGLE_ROUND Word16 az1, el1; +#endif Word16 n_slots_to_render; Word16 n_samples_to_render; Word16 interp_offset; @@ -3631,13 +3657,20 @@ void ivas_dirac_dec_render_sf_fx( Word16 el_q0 = extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, Q22 ) ); Word32 az1_32, el1_32; rotateAziEle_fixed( az_q0, el_q0, &az1_32, &el1_32, st_ivas->hCombinedOrientationData->Rmat_fx[0], st_ivas->hIntSetup.is_planar_setup ); +#ifndef FIX_1379_MASA_ANGLE_ROUND az1 = extract_h( az1_32 ); el1 = extract_h( el1_32 ); +#endif IF( st_ivas->hEFAPdata != NULL ) { +#ifdef FIX_1379_MASA_ANGLE_ROUND + const Word32 azi_fx = L_shl( az1_32, Q22-Q16 ); // Q16 -> Q22 + const Word32 ele_fx = L_shl( el1_32, Q22-Q16 ); // Q16 -> Q22 +#else const Word32 azi_fx = L_shl( az1, Q22 ); // Q0 -> Q22 const Word32 ele_fx = L_shl( el1, Q22 ); // Q0 -> Q22 +#endif efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], azi_fx, ele_fx, EFAP_MODE_EFAP ); } } -- GitLab From 820ea273d5140a00c5696978276e99729b1b11ab Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Wed, 12 Mar 2025 12:02:11 +0100 Subject: [PATCH 022/698] Use round_fx instead of extract_h for angle computation. format fix. --- lib_dec/ivas_dirac_dec_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 7ad651af1..26c7e3441 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -3665,8 +3665,8 @@ void ivas_dirac_dec_render_sf_fx( IF( st_ivas->hEFAPdata != NULL ) { #ifdef FIX_1379_MASA_ANGLE_ROUND - const Word32 azi_fx = L_shl( az1_32, Q22-Q16 ); // Q16 -> Q22 - const Word32 ele_fx = L_shl( el1_32, Q22-Q16 ); // Q16 -> Q22 + const Word32 azi_fx = L_shl( az1_32, Q22 - Q16 ); // Q16 -> Q22 + const Word32 ele_fx = L_shl( el1_32, Q22 - Q16 ); // Q16 -> Q22 #else const Word32 azi_fx = L_shl( az1, Q22 ); // Q0 -> Q22 const Word32 ele_fx = L_shl( el1, Q22 ); // Q0 -> Q22 -- GitLab From 4714a44d70693d2ffbbb4eb5ba2f717b14df91f2 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 11 Mar 2025 12:32:57 +0530 Subject: [PATCH 023/698] Fix for 3GPP issue 1341: Usage of open/deleteCldfb() functions - multiple variants Link #1341 --- lib_com/cldfb.c | 107 +++-------------------- lib_com/cnst.h | 6 +- lib_com/prot_fx.h | 15 +--- lib_dec/init_dec_fx.c | 6 +- lib_dec/ivas_corecoder_dec_reconfig_fx.c | 4 +- lib_dec/ivas_init_dec.c | 4 +- lib_dec/ivas_sce_dec_fx.c | 2 +- lib_dec/ivas_stereo_mdct_stereo_dec_fx.c | 4 +- lib_dec/ivas_stereo_switching_dec_fx.c | 10 +-- lib_enc/init_enc_fx.c | 4 +- lib_enc/ivas_masa_enc_fx.c | 4 +- lib_enc/ivas_omasa_enc_fx.c | 4 +- lib_enc/ivas_stereo_switching_enc_fx.c | 10 +-- lib_enc/ivas_stereo_td_enc_fx.c | 8 +- lib_rend/ivas_dirac_ana_fx.c | 2 +- lib_rend/ivas_masa_merge_fx.c | 2 +- lib_rend/ivas_mcmasa_ana_fx.c | 2 +- lib_rend/ivas_omasa_ana_fx.c | 2 +- lib_rend/lib_rend.c | 4 +- 19 files changed, 53 insertions(+), 147 deletions(-) diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c index 38195b65d..7fc8026b5 100644 --- a/lib_com/cldfb.c +++ b/lib_com/cldfb.c @@ -1364,8 +1364,8 @@ ivas_error openCldfb_ivas_fx( HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */ CLDFB_TYPE type, /* i : analysis or synthesis */ const Word32 sampling_rate, /* i : sampling rate */ - CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ -) + CLDFB_PROTOTYPE prototype, /* i : CLDFB version (1.25ms/5ms delay) */ + CODE_TYPE code_type ) { HANDLE_CLDFB_FILTER_BANK hs; Word16 buf_len; @@ -1379,7 +1379,14 @@ ivas_error openCldfb_ivas_fx( move32(); hs->prototype = prototype; move32(); - configureCldfb_ivas_fx( hs, sampling_rate ); + IF( code_type == IVAS_ENC ) + { + configureCldfb_ivas_enc_fx( hs, sampling_rate ); + } + ELSE + { + configureCldfb_ivas_fx( hs, sampling_rate ); + } hs->memory32 = NULL; hs->FilterStates = NULL; hs->memory_length = 0; @@ -1413,65 +1420,6 @@ ivas_error openCldfb_ivas_fx( return IVAS_ERR_OK; } -ivas_error openCldfb_ivas_enc( - HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */ - CLDFB_TYPE type, /* i : analysis or synthesis */ - const Word32 sampling_rate, /* i : sampling rate */ - CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ -) -{ - HANDLE_CLDFB_FILTER_BANK hs; - Word16 buf_len; - - IF( ( hs = (HANDLE_CLDFB_FILTER_BANK) malloc( sizeof( CLDFB_FILTER_BANK ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); - } - - hs->type = type; - move32(); - hs->prototype = prototype; - move32(); - - configureCldfb_ivas_enc_fx( hs, sampling_rate ); - hs->memory_length = 0; - move32(); - - IF( type == CLDFB_ANALYSIS ) - { - buf_len = sub( hs->p_filter_length, hs->no_channels ); - hs->FilterStates = (Word16 *) malloc( ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); - hs->FilterStates_eg = 0; - move16(); - } - ELSE - { - buf_len = hs->p_filter_length; - move16(); - hs->FilterStates = (Word16 *) malloc( 2 * ( 9 + 16 ) * CLDFB_getNumChannels( sampling_rate ) * sizeof( Word16 ) ); - hs->FilterStates_eg = 0; - move16(); - } - - if ( ( hs->cldfb_state_fx = (Word32 *) malloc( buf_len * sizeof( Word32 ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for CLDFB" ); - } - hs->cldfb_state_length = buf_len; // Temporarily added to store the length of buffer - move16(); - hs->cldfb_size = buf_len; /*for having original size at intermediatery conversion, will be removed on removing conversion*/ - move16(); - set32_fx( hs->cldfb_state_fx, 0, buf_len ); - hs->Q_cldfb_state = 0; - move16(); - set16_fx( hs->FilterStates, 0, i_mult( 9 + 16, hs->no_channels ) ); - set16_fx( hs->FilterStates_e, 0, sizeof( hs->FilterStates_e ) / sizeof( hs->FilterStates_e[0] ) ); - - *h_cldfb = hs; - - return IVAS_ERR_OK; -} - /*-------------------------------------------------------------------* * resampleCldfb_ivas() * @@ -1563,41 +1511,6 @@ void analysisCldfbEncoder_ivas_fx( return; } - -/*-------------------------------------------------------------------* - * GetEnergyCldfb_ivas() - * - * Remove handle - *--------------------------------------------------------------------*/ - -void deleteCldfb_ivas( - HANDLE_CLDFB_FILTER_BANK *h_cldfb /* i/o: filter bank handle */ -) -{ - HANDLE_CLDFB_FILTER_BANK hs = *h_cldfb; - - test(); - IF( h_cldfb == NULL || *h_cldfb == NULL ) - { - return; - } - - IF( hs->cldfb_state_fx ) - { - free( hs->cldfb_state_fx ); - } - - IF( hs->FilterStates ) - { - free( hs->FilterStates ); - } - - free( hs ); - *h_cldfb = NULL; - - return; -} - void deleteCldfb_ivas_fx( HANDLE_CLDFB_FILTER_BANK *h_cldfb /* i/o: filter bank handle */ ) diff --git a/lib_com/cnst.h b/lib_com/cnst.h index 7c93498af..3c014325e 100644 --- a/lib_com/cnst.h +++ b/lib_com/cnst.h @@ -803,7 +803,11 @@ typedef enum CLDFB_ANALYSIS, CLDFB_SYNTHESIS } CLDFB_TYPE; - +typedef enum +{ + IVAS_ENC, + IVAS_DEC_REND +} CODE_TYPE; typedef enum { CLDFB_PROTOTYPE_1_25MS, diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index db0953cd9..c1aefbe36 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -9803,8 +9803,8 @@ ivas_error openCldfb_ivas_fx( HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */ CLDFB_TYPE type, /* i : analysis or synthesis */ const Word32 sampling_rate, /* i : sampling rate */ - CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ -); + CLDFB_PROTOTYPE prototype, /* i : CLDFB version (1.25ms/5ms delay) */ + CODE_TYPE code_type ); Word32 rand_gauss_fx( Word32 *x, @@ -11944,13 +11944,6 @@ ivas_error openCldfb_ivas( CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ ); -ivas_error openCldfb_ivas_enc( - HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */ - CLDFB_TYPE type, /* i : analysis or synthesis */ - const Word32 sampling_rate, /* i : sampling rate */ - CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ -); - void resampleCldfb_ivas( HANDLE_CLDFB_FILTER_BANK hs, /* i/o: filter bank handle */ const Word32 newSamplerate /* i : new samplerate to operate */ @@ -11960,10 +11953,6 @@ ivas_error cldfb_save_memory_ivas( HANDLE_CLDFB_FILTER_BANK hs /* i/o: filter bank handle */ ); -void deleteCldfb_ivas( - HANDLE_CLDFB_FILTER_BANK *h_cldfb /* i/o: filter bank handle */ -); - /*! r: flag indicating a valid bitrate */ Word16 is_EVS_bitrate( const Word32 ivas_total_brate, /* i : EVS total bitrate */ diff --git a/lib_dec/init_dec_fx.c b/lib_dec/init_dec_fx.c index 3865cd61c..4e0cfda18 100644 --- a/lib_dec/init_dec_fx.c +++ b/lib_dec/init_dec_fx.c @@ -1447,13 +1447,13 @@ ivas_error init_decoder_ivas_fx( IF( ( idchan == 0 && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) || EQ_16( st_fx->element_mode, IVAS_CPE_TD ) ) { /* open analysis for max. SR 48kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } /* open analysis BPF for max. SR 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -1465,7 +1465,7 @@ ivas_error init_decoder_ivas_fx( } /* open synthesis for output SR */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbSyn, CLDFB_SYNTHESIS, st_fx->output_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbSyn, CLDFB_SYNTHESIS, st_fx->output_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_corecoder_dec_reconfig_fx.c b/lib_dec/ivas_corecoder_dec_reconfig_fx.c index 25c0bea42..111c0be0e 100644 --- a/lib_dec/ivas_corecoder_dec_reconfig_fx.c +++ b/lib_dec/ivas_corecoder_dec_reconfig_fx.c @@ -602,7 +602,7 @@ ivas_error ivas_cldfb_dec_reconfig_fx( /* create additional CLDFB synthesis instances */ FOR( i = numCldfbAnalyses_old; i < numCldfbAnalyses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -622,7 +622,7 @@ ivas_error ivas_cldfb_dec_reconfig_fx( /* create additional CLDFB synthesis instances */ FOR( i = numCldfbSyntheses_old; i < numCldfbSyntheses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index b11669460..236eaad54 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -2264,7 +2264,7 @@ ivas_error ivas_init_decoder_fx( FOR( i = 0; i < numCldfbAnalyses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -2276,7 +2276,7 @@ ivas_error ivas_init_decoder_fx( FOR( i = 0; i < numCldfbSyntheses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_sce_dec_fx.c b/lib_dec/ivas_sce_dec_fx.c index a6be10c08..cc3980b12 100644 --- a/lib_dec/ivas_sce_dec_fx.c +++ b/lib_dec/ivas_sce_dec_fx.c @@ -438,7 +438,7 @@ ivas_error create_sce_dec( IF( EQ_16( (Word16) st_ivas->ivas_format, SBA_FORMAT ) && ( EQ_16( (Word16) st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) || ( EQ_16( (Word16) st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) && EQ_16( st_ivas->nchan_transport, 1 ) ) ) ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynHB, CLDFB_SYNTHESIS, st->output_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynHB, CLDFB_SYNTHESIS, st->output_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c index 3f39bd9ac..c8dde0837 100644 --- a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c +++ b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c @@ -601,7 +601,7 @@ ivas_error initMdctStereoDtxData_fx( IF( st->cldfbAna == NULL ) { /* open analysis for max. sampling rate 48kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -610,7 +610,7 @@ ivas_error initMdctStereoDtxData_fx( IF( st->cldfbBPF == NULL ) { /* open analysis BPF for max. internal sampling rate 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_stereo_switching_dec_fx.c b/lib_dec/ivas_stereo_switching_dec_fx.c index 09b683a16..34eef94ed 100644 --- a/lib_dec/ivas_stereo_switching_dec_fx.c +++ b/lib_dec/ivas_stereo_switching_dec_fx.c @@ -205,7 +205,7 @@ static ivas_error allocate_CoreCoder_fx( IF( st->cldfbAna == NULL ) { /* open analysis for max. sampling rate 48kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -214,7 +214,7 @@ static ivas_error allocate_CoreCoder_fx( IF( st->cldfbBPF == NULL ) { /* open analysis BPF for max. internal sampling rate 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -752,7 +752,7 @@ ivas_error stereo_memory_dec_fx( IF( st->cldfbAna == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -761,7 +761,7 @@ ivas_error stereo_memory_dec_fx( IF( st->cldfbBPF == NULL ) { /* open analysis BPF for max. internal sampling rate 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -1100,7 +1100,7 @@ ivas_error stereo_memory_dec_fx( { IF( hCPE->hCoreCoder[i]->cldfbSyn == NULL ) /* could be NULL when we had the MCT LFE channel */ { - IF( NE_32( ( error = openCldfb_ivas_fx( &hCPE->hCoreCoder[i]->cldfbSyn, CLDFB_SYNTHESIS, hCPE->hCoreCoder[i]->output_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &hCPE->hCoreCoder[i]->cldfbSyn, CLDFB_SYNTHESIS, hCPE->hCoreCoder[i]->output_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 615ca1b33..f0338b461 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -1695,7 +1695,7 @@ ivas_error init_encoder_ivas_fx( test(); IF( ( NE_16( st->element_mode, IVAS_CPE_MDCT ) && idchan == 0 ) || ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->Opt_DTX_ON ) ) { - IF( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ) != IVAS_ERR_OK ) { return error; } @@ -1809,7 +1809,7 @@ ivas_error init_encoder_ivas_fx( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD BWE\n" ) ); } - IF( ( error = openCldfb_ivas_enc( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index 6960629c8..9fdebed7a 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -152,7 +152,7 @@ ivas_error ivas_masa_enc_open_fx( FOR( i = 0; i < hMasa->data.num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_enc( &( hMasa->data.cldfbAnaEnc[i] ), CLDFB_ANALYSIS, hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasa->data.cldfbAnaEnc[i] ), CLDFB_ANALYSIS, hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) { return error; } @@ -260,7 +260,7 @@ void ivas_masa_enc_close_fx( FOR( i = 0; i < ( *hMasa )->data.num_Cldfb_instances; i++ ) { - deleteCldfb_ivas( &( ( *hMasa )->data.cldfbAnaEnc[i] ) ); + deleteCldfb_ivas_fx( &( ( *hMasa )->data.cldfbAnaEnc[i] ) ); } IF( ( *hMasa )->data.hOmasaData != NULL ) diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c index 5d79265f4..50fb49355 100644 --- a/lib_enc/ivas_omasa_enc_fx.c +++ b/lib_enc/ivas_omasa_enc_fx.c @@ -124,7 +124,7 @@ ivas_error ivas_omasa_enc_open_fx( move16(); FOR( i = 0; i < hOMasa->num_Cldfb_instances; i++ ) { - IF( ( error = openCldfb_ivas_enc( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, st_ivas->hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, st_ivas->hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_ENC ) ) != IVAS_ERR_OK ) { return error; } @@ -227,7 +227,7 @@ void ivas_omasa_enc_close_fx( FOR( i = 0; i < ( *hOMasa )->num_Cldfb_instances; i++ ) { - deleteCldfb_ivas( &( ( *hOMasa )->cldfbAnaEnc[i] ) ); + deleteCldfb_ivas_fx( &( ( *hOMasa )->cldfbAnaEnc[i] ) ); } FOR( i = 0; i < DIRAC_NUM_DIMS; i++ ) diff --git a/lib_enc/ivas_stereo_switching_enc_fx.c b/lib_enc/ivas_stereo_switching_enc_fx.c index 2fe8b6c84..6c7a1e68d 100644 --- a/lib_enc/ivas_stereo_switching_enc_fx.c +++ b/lib_enc/ivas_stereo_switching_enc_fx.c @@ -366,8 +366,8 @@ ivas_error stereo_memory_enc_fx( IF( EQ_16( hCPE->last_element_mode, IVAS_CPE_MDCT ) && ( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) || EQ_16( hCPE->element_mode, IVAS_CPE_TD ) ) ) { /* Deallocate MDCT CNG structures */ - deleteCldfb_ivas( &hCPE->hCoreCoder[0]->cldfbAnaEnc ); - deleteCldfb_ivas( &hCPE->hCoreCoder[1]->cldfbAnaEnc ); + deleteCldfb_ivas_fx( &hCPE->hCoreCoder[0]->cldfbAnaEnc ); + deleteCldfb_ivas_fx( &hCPE->hCoreCoder[1]->cldfbAnaEnc ); IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) ) { @@ -417,7 +417,7 @@ ivas_error stereo_memory_enc_fx( /* allocate CLDFB for primary channel */ IF( st->cldfbAnaEnc == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) { return error; } @@ -433,7 +433,7 @@ ivas_error stereo_memory_enc_fx( IF( st->cldfbSynTd == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) { return error; } @@ -587,7 +587,7 @@ ivas_error stereo_memory_enc_fx( FOR( i = 0; i < CPE_CHANNELS; i++ ) { st = hCPE->hCoreCoder[i]; - IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/ivas_stereo_td_enc_fx.c b/lib_enc/ivas_stereo_td_enc_fx.c index d2ff2c0c2..de9bc09b5 100644 --- a/lib_enc/ivas_stereo_td_enc_fx.c +++ b/lib_enc/ivas_stereo_td_enc_fx.c @@ -263,7 +263,7 @@ ivas_error stereo_set_tdm_fx( /* deallocate CLDFB ana for secondary channel */ IF( st->cldfbAnaEnc != NULL ) { - deleteCldfb_ivas( &st->cldfbAnaEnc ); + deleteCldfb_ivas_fx( &st->cldfbAnaEnc ); } /* deallocate BWEs for secondary channel */ @@ -275,7 +275,7 @@ ivas_error stereo_set_tdm_fx( st->hBWE_TD = NULL; } - deleteCldfb_ivas( &st->cldfbSynTd ); + deleteCldfb_ivas_fx( &st->cldfbSynTd ); IF( st->hBWE_FD != NULL ) { @@ -309,7 +309,7 @@ ivas_error stereo_set_tdm_fx( /* allocate CLDFB ana for secondary channel */ IF( st->cldfbAnaEnc == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) { return error; } @@ -322,7 +322,7 @@ ivas_error stereo_set_tdm_fx( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD BWE\n" ) ); } - IF( NE_32( ( error = openCldfb_ivas_enc( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/ivas_dirac_ana_fx.c b/lib_rend/ivas_dirac_ana_fx.c index 93a100e17..5dd3f8384 100644 --- a/lib_rend/ivas_dirac_ana_fx.c +++ b/lib_rend/ivas_dirac_ana_fx.c @@ -107,7 +107,7 @@ ivas_error ivas_dirac_ana_open_fx( move16(); FOR( i = 0; i < hDirAC->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hDirAC->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hDirAC->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/ivas_masa_merge_fx.c b/lib_rend/ivas_masa_merge_fx.c index 430fab2c7..3aa9f62a9 100644 --- a/lib_rend/ivas_masa_merge_fx.c +++ b/lib_rend/ivas_masa_merge_fx.c @@ -499,7 +499,7 @@ ivas_error masaPrerendOpen_fx( move16(); FOR( i = 0; i < hMasaPrerend->num_Cldfb_instances; i++ ) { - IF( ( error = openCldfb_ivas_fx( &( hMasaPrerend->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &( hMasaPrerend->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_rend/ivas_mcmasa_ana_fx.c b/lib_rend/ivas_mcmasa_ana_fx.c index 8b56b6855..d56ba2685 100644 --- a/lib_rend/ivas_mcmasa_ana_fx.c +++ b/lib_rend/ivas_mcmasa_ana_fx.c @@ -224,7 +224,7 @@ ivas_error ivas_mcmasa_ana_open( move16(); FOR( i = 0; i < hMcMasa->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/ivas_omasa_ana_fx.c b/lib_rend/ivas_omasa_ana_fx.c index 2c28b32bd..1d849a90f 100644 --- a/lib_rend/ivas_omasa_ana_fx.c +++ b/lib_rend/ivas_omasa_ana_fx.c @@ -133,7 +133,7 @@ ivas_error ivas_omasa_ana_open( hOMasa->num_Cldfb_instances = numAnalysisChannels; FOR( i = 0; i < hOMasa->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 2c81911a1..041f278f1 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -8187,7 +8187,7 @@ static ivas_error initMasaExtRenderer( { FOR( i = 0; i < hMasaExtRend->nchan_input; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbAnaRend[i] ), CLDFB_ANALYSIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbAnaRend[i] ), CLDFB_ANALYSIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } @@ -8195,7 +8195,7 @@ static ivas_error initMasaExtRenderer( FOR( i = 0; i < hMasaExtRend->nchan_output; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbSynRend[i] ), CLDFB_SYNTHESIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbSynRend[i] ), CLDFB_SYNTHESIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) { return error; } -- GitLab From b3f172527adda62f08af43cb0d81f7b553e0f8f2 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 12 Mar 2025 11:42:57 +0530 Subject: [PATCH 024/698] Address review comments --- lib_com/cldfb.c | 10 ++++++---- lib_com/cnst.h | 6 +----- lib_com/prot_fx.h | 2 +- lib_dec/init_dec_fx.c | 6 +++--- lib_dec/ivas_corecoder_dec_reconfig_fx.c | 4 ++-- lib_dec/ivas_init_dec.c | 4 ++-- lib_dec/ivas_sce_dec_fx.c | 2 +- lib_dec/ivas_stereo_mdct_stereo_dec_fx.c | 4 ++-- lib_dec/ivas_stereo_switching_dec_fx.c | 10 +++++----- lib_enc/init_enc_fx.c | 4 ++-- lib_enc/ivas_masa_enc_fx.c | 2 +- lib_enc/ivas_omasa_enc_fx.c | 2 +- lib_enc/ivas_stereo_switching_enc_fx.c | 6 +++--- lib_enc/ivas_stereo_td_enc_fx.c | 4 ++-- lib_rend/ivas_dirac_ana_fx.c | 2 +- lib_rend/ivas_masa_merge_fx.c | 2 +- lib_rend/ivas_mcmasa_ana_fx.c | 2 +- lib_rend/ivas_omasa_ana_fx.c | 2 +- lib_rend/lib_rend.c | 4 ++-- 19 files changed, 38 insertions(+), 40 deletions(-) diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c index 7fc8026b5..246a8a8e8 100644 --- a/lib_com/cldfb.c +++ b/lib_com/cldfb.c @@ -1365,7 +1365,7 @@ ivas_error openCldfb_ivas_fx( CLDFB_TYPE type, /* i : analysis or synthesis */ const Word32 sampling_rate, /* i : sampling rate */ CLDFB_PROTOTYPE prototype, /* i : CLDFB version (1.25ms/5ms delay) */ - CODE_TYPE code_type ) + const Word16 enc_dec ) /* i : encoder/decoder flag */ { HANDLE_CLDFB_FILTER_BANK hs; Word16 buf_len; @@ -1379,14 +1379,17 @@ ivas_error openCldfb_ivas_fx( move32(); hs->prototype = prototype; move32(); - IF( code_type == IVAS_ENC ) + IF( enc_dec == ENC ) { configureCldfb_ivas_enc_fx( hs, sampling_rate ); + hs->Q_cldfb_state = 0; } ELSE { configureCldfb_ivas_fx( hs, sampling_rate ); + hs->Q_cldfb_state = Q11; } + move16(); hs->memory32 = NULL; hs->FilterStates = NULL; hs->memory_length = 0; @@ -1412,8 +1415,7 @@ ivas_error openCldfb_ivas_fx( hs->cldfb_size = buf_len; /*for having original size at intermediatery conversion, will be removed on removing conversion*/ move16(); set32_fx( hs->cldfb_state_fx, 0, buf_len ); - hs->Q_cldfb_state = Q11; - move16(); + *h_cldfb = hs; move16(); diff --git a/lib_com/cnst.h b/lib_com/cnst.h index 3c014325e..7c93498af 100644 --- a/lib_com/cnst.h +++ b/lib_com/cnst.h @@ -803,11 +803,7 @@ typedef enum CLDFB_ANALYSIS, CLDFB_SYNTHESIS } CLDFB_TYPE; -typedef enum -{ - IVAS_ENC, - IVAS_DEC_REND -} CODE_TYPE; + typedef enum { CLDFB_PROTOTYPE_1_25MS, diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index c1aefbe36..9fe14b5bd 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -9804,7 +9804,7 @@ ivas_error openCldfb_ivas_fx( CLDFB_TYPE type, /* i : analysis or synthesis */ const Word32 sampling_rate, /* i : sampling rate */ CLDFB_PROTOTYPE prototype, /* i : CLDFB version (1.25ms/5ms delay) */ - CODE_TYPE code_type ); + const Word16 enc_dec ); /* i : encoder/decoder flag */ Word32 rand_gauss_fx( Word32 *x, diff --git a/lib_dec/init_dec_fx.c b/lib_dec/init_dec_fx.c index 4e0cfda18..bd8a2cbd3 100644 --- a/lib_dec/init_dec_fx.c +++ b/lib_dec/init_dec_fx.c @@ -1447,13 +1447,13 @@ ivas_error init_decoder_ivas_fx( IF( ( idchan == 0 && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) || EQ_16( st_fx->element_mode, IVAS_CPE_TD ) ) { /* open analysis for max. SR 48kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } /* open analysis BPF for max. SR 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -1465,7 +1465,7 @@ ivas_error init_decoder_ivas_fx( } /* open synthesis for output SR */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbSyn, CLDFB_SYNTHESIS, st_fx->output_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st_fx->cldfbSyn, CLDFB_SYNTHESIS, st_fx->output_Fs, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_corecoder_dec_reconfig_fx.c b/lib_dec/ivas_corecoder_dec_reconfig_fx.c index 111c0be0e..8333f146f 100644 --- a/lib_dec/ivas_corecoder_dec_reconfig_fx.c +++ b/lib_dec/ivas_corecoder_dec_reconfig_fx.c @@ -602,7 +602,7 @@ ivas_error ivas_cldfb_dec_reconfig_fx( /* create additional CLDFB synthesis instances */ FOR( i = numCldfbAnalyses_old; i < numCldfbAnalyses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -622,7 +622,7 @@ ivas_error ivas_cldfb_dec_reconfig_fx( /* create additional CLDFB synthesis instances */ FOR( i = numCldfbSyntheses_old; i < numCldfbSyntheses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 236eaad54..1ab797ded 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -2264,7 +2264,7 @@ ivas_error ivas_init_decoder_fx( FOR( i = 0; i < numCldfbAnalyses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -2276,7 +2276,7 @@ ivas_error ivas_init_decoder_fx( FOR( i = 0; i < numCldfbSyntheses; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_sce_dec_fx.c b/lib_dec/ivas_sce_dec_fx.c index cc3980b12..12549f49d 100644 --- a/lib_dec/ivas_sce_dec_fx.c +++ b/lib_dec/ivas_sce_dec_fx.c @@ -438,7 +438,7 @@ ivas_error create_sce_dec( IF( EQ_16( (Word16) st_ivas->ivas_format, SBA_FORMAT ) && ( EQ_16( (Word16) st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) || ( EQ_16( (Word16) st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) && EQ_16( st_ivas->nchan_transport, 1 ) ) ) ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynHB, CLDFB_SYNTHESIS, st->output_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynHB, CLDFB_SYNTHESIS, st->output_Fs, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c index c8dde0837..5b1378a89 100644 --- a/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c +++ b/lib_dec/ivas_stereo_mdct_stereo_dec_fx.c @@ -601,7 +601,7 @@ ivas_error initMdctStereoDtxData_fx( IF( st->cldfbAna == NULL ) { /* open analysis for max. sampling rate 48kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -610,7 +610,7 @@ ivas_error initMdctStereoDtxData_fx( IF( st->cldfbBPF == NULL ) { /* open analysis BPF for max. internal sampling rate 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_stereo_switching_dec_fx.c b/lib_dec/ivas_stereo_switching_dec_fx.c index 34eef94ed..c70e606ac 100644 --- a/lib_dec/ivas_stereo_switching_dec_fx.c +++ b/lib_dec/ivas_stereo_switching_dec_fx.c @@ -205,7 +205,7 @@ static ivas_error allocate_CoreCoder_fx( IF( st->cldfbAna == NULL ) { /* open analysis for max. sampling rate 48kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -214,7 +214,7 @@ static ivas_error allocate_CoreCoder_fx( IF( st->cldfbBPF == NULL ) { /* open analysis BPF for max. internal sampling rate 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -752,7 +752,7 @@ ivas_error stereo_memory_dec_fx( IF( st->cldfbAna == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAna, CLDFB_ANALYSIS, 48000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -761,7 +761,7 @@ ivas_error stereo_memory_dec_fx( IF( st->cldfbBPF == NULL ) { /* open analysis BPF for max. internal sampling rate 16kHz */ - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbBPF, CLDFB_ANALYSIS, 16000, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -1100,7 +1100,7 @@ ivas_error stereo_memory_dec_fx( { IF( hCPE->hCoreCoder[i]->cldfbSyn == NULL ) /* could be NULL when we had the MCT LFE channel */ { - IF( NE_32( ( error = openCldfb_ivas_fx( &hCPE->hCoreCoder[i]->cldfbSyn, CLDFB_SYNTHESIS, hCPE->hCoreCoder[i]->output_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &hCPE->hCoreCoder[i]->cldfbSyn, CLDFB_SYNTHESIS, hCPE->hCoreCoder[i]->output_Fs, CLDFB_PROTOTYPE_1_25MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index f0338b461..cd5db5377 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -1695,7 +1695,7 @@ ivas_error init_encoder_ivas_fx( test(); IF( ( NE_16( st->element_mode, IVAS_CPE_MDCT ) && idchan == 0 ) || ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->Opt_DTX_ON ) ) { - IF( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK ) { return error; } @@ -1809,7 +1809,7 @@ ivas_error init_encoder_ivas_fx( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD BWE\n" ) ); } - IF( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index 9fdebed7a..da1f836df 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -152,7 +152,7 @@ ivas_error ivas_masa_enc_open_fx( FOR( i = 0; i < hMasa->data.num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasa->data.cldfbAnaEnc[i] ), CLDFB_ANALYSIS, hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasa->data.cldfbAnaEnc[i] ), CLDFB_ANALYSIS, hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, ENC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c index 50fb49355..b5258712b 100644 --- a/lib_enc/ivas_omasa_enc_fx.c +++ b/lib_enc/ivas_omasa_enc_fx.c @@ -124,7 +124,7 @@ ivas_error ivas_omasa_enc_open_fx( move16(); FOR( i = 0; i < hOMasa->num_Cldfb_instances; i++ ) { - IF( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, st_ivas->hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_ENC ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, st_ivas->hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS, ENC ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_enc/ivas_stereo_switching_enc_fx.c b/lib_enc/ivas_stereo_switching_enc_fx.c index 6c7a1e68d..0a526561a 100644 --- a/lib_enc/ivas_stereo_switching_enc_fx.c +++ b/lib_enc/ivas_stereo_switching_enc_fx.c @@ -417,7 +417,7 @@ ivas_error stereo_memory_enc_fx( /* allocate CLDFB for primary channel */ IF( st->cldfbAnaEnc == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) ) { return error; } @@ -433,7 +433,7 @@ ivas_error stereo_memory_enc_fx( IF( st->cldfbSynTd == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) ) { return error; } @@ -587,7 +587,7 @@ ivas_error stereo_memory_enc_fx( FOR( i = 0; i < CPE_CHANNELS; i++ ) { st = hCPE->hCoreCoder[i]; - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/ivas_stereo_td_enc_fx.c b/lib_enc/ivas_stereo_td_enc_fx.c index de9bc09b5..1544aab76 100644 --- a/lib_enc/ivas_stereo_td_enc_fx.c +++ b/lib_enc/ivas_stereo_td_enc_fx.c @@ -309,7 +309,7 @@ ivas_error stereo_set_tdm_fx( /* allocate CLDFB ana for secondary channel */ IF( st->cldfbAnaEnc == NULL ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) ) { return error; } @@ -322,7 +322,7 @@ ivas_error stereo_set_tdm_fx( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD BWE\n" ) ); } - IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, IVAS_ENC ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/ivas_dirac_ana_fx.c b/lib_rend/ivas_dirac_ana_fx.c index 5dd3f8384..1a5013059 100644 --- a/lib_rend/ivas_dirac_ana_fx.c +++ b/lib_rend/ivas_dirac_ana_fx.c @@ -107,7 +107,7 @@ ivas_error ivas_dirac_ana_open_fx( move16(); FOR( i = 0; i < hDirAC->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hDirAC->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hDirAC->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/ivas_masa_merge_fx.c b/lib_rend/ivas_masa_merge_fx.c index 3aa9f62a9..c74477365 100644 --- a/lib_rend/ivas_masa_merge_fx.c +++ b/lib_rend/ivas_masa_merge_fx.c @@ -499,7 +499,7 @@ ivas_error masaPrerendOpen_fx( move16(); FOR( i = 0; i < hMasaPrerend->num_Cldfb_instances; i++ ) { - IF( ( error = openCldfb_ivas_fx( &( hMasaPrerend->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ) != IVAS_ERR_OK ) + IF( ( error = openCldfb_ivas_fx( &( hMasaPrerend->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_rend/ivas_mcmasa_ana_fx.c b/lib_rend/ivas_mcmasa_ana_fx.c index d56ba2685..e17b2f9f6 100644 --- a/lib_rend/ivas_mcmasa_ana_fx.c +++ b/lib_rend/ivas_mcmasa_ana_fx.c @@ -224,7 +224,7 @@ ivas_error ivas_mcmasa_ana_open( move16(); FOR( i = 0; i < hMcMasa->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMcMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/ivas_omasa_ana_fx.c b/lib_rend/ivas_omasa_ana_fx.c index 1d849a90f..5e175fae5 100644 --- a/lib_rend/ivas_omasa_ana_fx.c +++ b/lib_rend/ivas_omasa_ana_fx.c @@ -133,7 +133,7 @@ ivas_error ivas_omasa_ana_open( hOMasa->num_Cldfb_instances = numAnalysisChannels; FOR( i = 0; i < hOMasa->num_Cldfb_instances; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, input_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 041f278f1..129f72388 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -8187,7 +8187,7 @@ static ivas_error initMasaExtRenderer( { FOR( i = 0; i < hMasaExtRend->nchan_input; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbAnaRend[i] ), CLDFB_ANALYSIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbAnaRend[i] ), CLDFB_ANALYSIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } @@ -8195,7 +8195,7 @@ static ivas_error initMasaExtRenderer( FOR( i = 0; i < hMasaExtRend->nchan_output; i++ ) { - IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbSynRend[i] ), CLDFB_SYNTHESIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, IVAS_DEC_REND ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = openCldfb_ivas_fx( &( hMasaExtRend->cldfbSynRend[i] ), CLDFB_SYNTHESIS, *inputMasa->base.ctx.pOutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) { return error; } -- GitLab From ba11d5e9e26ead4c2d50d98825b80dcfef56024d Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 19 Mar 2025 13:20:45 +0100 Subject: [PATCH 025/698] merge REMOVE_EVS_DUPLICATES2 into REMOVE_EVS_DUPLICATES --- lib_com/options.h | 1 - lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 2 +- lib_dec/acelp_core_dec_fx.c | 3 +-- lib_dec/dec_LPD_fx.c | 2 +- lib_dec/dec_ace_fx.c | 2 +- lib_dec/dec_tran_fx.c | 2 +- lib_enc/analy_lp_fx.c | 10 +++++----- lib_enc/cod_ace_fx.c | 2 +- lib_enc/enc_gen_voic_fx.c | 2 +- lib_enc/enc_tran_fx.c | 2 +- lib_enc/ivas_core_pre_proc_front_fx.c | 2 +- lib_enc/ivas_core_pre_proc_fx.c | 4 ++-- lib_enc/ivas_front_vad_fx.c | 2 +- lib_enc/pre_proc_fx.c | 6 +++--- lib_enc/prot_fx_enc.h | 4 ++-- 16 files changed, 23 insertions(+), 25 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 4e17909b0..9d6f852ac 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -176,5 +176,4 @@ #define FIX_ISSUE_1376 /* VA: Fix for issue 1376 (issue with GSC excitation) */ #define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions, ACELP low-band decoder */ -#define REMOVE_EVS_DUPLICATES2 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 99925342c..8c42651b2 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3284,7 +3284,7 @@ void synthesise_fb_high_band_fx( Word16 bpf_memory_Q[], Word16 Qout ); -#ifndef REMOVE_EVS_DUPLICATES2 +#ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ #ifdef ADD_IVAS_TBE_CODE diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e279f0d48..af0a37011 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7324,7 +7324,7 @@ void tbe_celp_exc( /* _ None */ /*======================================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES2 +#ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ #ifdef ADD_IVAS_TBE_CODE diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index b0fe937cd..d336c80ed 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -1658,8 +1658,7 @@ ivas_error acelp_core_dec_fx( hf_synth_reset_fx( st_fx->hBWE_zero ); } #else - hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, - st_fx->Q_syn2, st_fx->hBWE_zero->delay_syn_hf_fx, &st_fx->hBWE_zero->memExp1, st_fx->hBWE_zero->mem_hp_interp_fx, st_fx->extl, st_fx->CNG_mode ); + hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, st_fx->Q_syn2 ); #endif } diff --git a/lib_dec/dec_LPD_fx.c b/lib_dec/dec_LPD_fx.c index f74c3e913..f53234ded 100644 --- a/lib_dec/dec_LPD_fx.c +++ b/lib_dec/dec_LPD_fx.c @@ -556,7 +556,7 @@ void decoder_LPD_fx( move16(); } -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES int_lsp4_ivas_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp ); #else int_lsp4_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp ); diff --git a/lib_dec/dec_ace_fx.c b/lib_dec/dec_ace_fx.c index 5d644c289..16f749156 100644 --- a/lib_dec/dec_ace_fx.c +++ b/lib_dec/dec_ace_fx.c @@ -532,7 +532,7 @@ void decoder_acelp_fx( move16(); IF( st->igf != 0 ) { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES prep_tbe_exc_ivas_fx( st->L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc, gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 ); #else diff --git a/lib_dec/dec_tran_fx.c b/lib_dec/dec_tran_fx.c index 96eace777..c5b06724a 100644 --- a/lib_dec/dec_tran_fx.c +++ b/lib_dec/dec_tran_fx.c @@ -254,7 +254,7 @@ void decod_tran_fx( tmp_idx_2 = idiv1616( i_subfr, L_SUBFR ); } -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[tmp_idx_2], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, diff --git a/lib_enc/analy_lp_fx.c b/lib_enc/analy_lp_fx.c index b5764ec43..78a02eeec 100644 --- a/lib_enc/analy_lp_fx.c +++ b/lib_enc/analy_lp_fx.c @@ -37,7 +37,7 @@ void analy_lp_ivas_fx( const Word16 Top[2], /* i :(q0) open loop pitch lag */ const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES const Word16 element_mode, /* i : element mode */ #endif const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ @@ -77,7 +77,7 @@ void analy_lp_ivas_fx( /* Autocorrelations */ autocorr_fx( pt, M, r_h, r_l, &Q_r[1 - i_subfr], wind_length, wind, 0, 0 ); -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES IF( NE_16( element_mode, EVS_MONO ) ) #endif { @@ -132,7 +132,7 @@ void analy_lp_ivas_fx( return; } -#ifndef REMOVE_EVS_DUPLICATES2 +#ifndef REMOVE_EVS_DUPLICATES void analy_lp_fx( const Word16 speech[], /* i : pointer to the speech frame Q_new*/ const Word16 L_frame, /* i : length of the frame Q0*/ @@ -204,7 +204,7 @@ void analy_lp_fx( IF( EQ_16( sec_chan_low_rate, 1 ) ) { /* LSP interpolation */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES int_lsp4_ivas_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, -2 ); #else int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, -2 ); @@ -213,7 +213,7 @@ void analy_lp_fx( ELSE { /* LSP interpolation */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, 0 ); #else int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, 0 ); diff --git a/lib_enc/cod_ace_fx.c b/lib_enc/cod_ace_fx.c index aa823cbda..743874351 100644 --- a/lib_enc/cod_ace_fx.c +++ b/lib_enc/cod_ace_fx.c @@ -409,7 +409,7 @@ Word16 coder_acelp_fx( /* o : SEGSNR for CL decision * IF( st->igf != 0 ) { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c index e82b1d243..519fd776b 100644 --- a/lib_enc/enc_gen_voic_fx.c +++ b/lib_enc/enc_gen_voic_fx.c @@ -367,7 +367,7 @@ void encod_gen_voic_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index 25368fac5..fce1ceb0c 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -308,7 +308,7 @@ Word16 encod_tran_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); #else diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index 6920aa6f5..d686f109f 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -1210,7 +1210,7 @@ ivas_error pre_proc_front_ivas_fx( move16(); } -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, element_mode, i, Q_new_loc, Q_r ); #else analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c index 6be8c474e..cbc0bd5a6 100644 --- a/lib_enc/ivas_core_pre_proc_fx.c +++ b/lib_enc/ivas_core_pre_proc_fx.c @@ -1138,7 +1138,7 @@ ivas_error ivas_compute_core_buffers_fx( IF( Q_new ) { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, sub( *Q_new, 1 ), Q_r ); #else analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, 0, sub( *Q_new, 1 ), Q_r ); @@ -1146,7 +1146,7 @@ ivas_error ivas_compute_core_buffers_fx( } ELSE { -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, -1, Q_r ); #else diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c index eaa6e6146..3e9ff3284 100644 --- a/lib_enc/ivas_front_vad_fx.c +++ b/lib_enc/ivas_front_vad_fx.c @@ -647,7 +647,7 @@ ivas_error front_vad_spar_fx( hFrontVad->q_buffer_12k8 = Q_inp_12k8; move16(); -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, st->element_mode, 0, Q_inp_12k8, Q_r ); #else analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, 0 /* <-- sec_chan_low_rate */, Q_inp_12k8, Q_r ); diff --git a/lib_enc/pre_proc_fx.c b/lib_enc/pre_proc_fx.c index 062dc3fa4..a5d619359 100644 --- a/lib_enc/pre_proc_fx.c +++ b/lib_enc/pre_proc_fx.c @@ -214,7 +214,7 @@ void pre_proc_fx( * Change the sampling frequency to 12.8 kHz *----------------------------------------------------------------*/ Word16 Q_new_inp, mem_decim_size; // TO be removed - modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, ( const Word16 )( EQ_16( st->max_bwidth, NB ) ), &Q_new_inp, &mem_decim_size ); + modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, (const Word16) ( EQ_16( st->max_bwidth, NB ) ), &Q_new_inp, &mem_decim_size ); Copy( new_inp_12k8, st->buf_speech_enc + L_FRAME32k, L_FRAME ); Scale_sig( st->buf_speech_enc + L_FRAME32k, L_FRAME, 1 ); /*------------------------------------------------------------------* @@ -415,7 +415,7 @@ void pre_proc_fx( alw_voicing[1] = st->voicing_fx[2]; move16(); -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES analy_lp_ivas_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, EVS_MONO, 0, *Q_new, Q_r ); #else analy_lp_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r ); @@ -1136,7 +1136,7 @@ void pre_proc_fx( Copy( st->lsp_old1_fx, st->lspold_enc_fx, M ); } -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES analy_lp_ivas_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, EVS_MONO, 0, *Q_new, Q_r ); #else analy_lp_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r ); diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 8bfce57a0..2427d92a8 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -82,14 +82,14 @@ void analy_lp_ivas_fx( const Word16 Top[2], /* i :(q0) open loop pitch lag */ const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ -#ifdef REMOVE_EVS_DUPLICATES2 +#ifdef REMOVE_EVS_DUPLICATES const Word16 element_mode, /* i : element mode */ #endif const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ Word16 Q_new, /*i: stores Q for speech*/ Word16 *Q_r /*stores q for ener*/ ); -#ifndef REMOVE_EVS_DUPLICATES2 +#ifndef REMOVE_EVS_DUPLICATES void analy_lp_fx( const Word16 speech[], /* i : pointer to the speech frame Q_new*/ const Word16 L_frame, /* i : length of the frame Q0*/ -- GitLab From fe1734da642d7873d24d1ba64cb20dccf9c06be1 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 19 Mar 2025 13:36:13 +0100 Subject: [PATCH 026/698] cleaning --- lib_dec/acelp_core_dec_fx.c | 202 +----------------------------------- 1 file changed, 4 insertions(+), 198 deletions(-) diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index d336c80ed..71976a730 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -359,11 +359,7 @@ ivas_error acelp_core_dec_fx( } /* update synthesis filter memories */ -#ifdef REMOVE_EVS_DUPLICATES - ivas_synth_mem_updt2_fx( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec ); -#else synth_mem_updt2( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec ); -#endif Copy( st_fx->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); // Q_exc Copy_Scale_sig( st_fx->mem_syn2_fx, st_fx->mem_syn1_fx, M, sub( -1, st_fx->Q_syn ) ); /*Q-1*/ @@ -559,11 +555,8 @@ ivas_error acelp_core_dec_fx( /* decode CNG parameters */ IF( st_fx->cng_type == LP_CNG ) { -#ifdef REMOVE_EVS_DUPLICATES - CNG_dec_ivas_fx( st_fx, st_fx->last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env ); -#else + CNG_dec_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env ); -#endif /* comfort noise generation */ CNG_exc_fx( st_fx->core_brate, st_fx->L_frame, &st_fx->hTdCngDec->Enew_fx, &st_fx->hTdCngDec->cng_seed, exc_fx, exc2_fx, &st_fx->lp_ener_fx, st_fx->last_core_brate, @@ -599,39 +592,10 @@ ivas_error acelp_core_dec_fx( } i = st_fx->Q_exc; move16(); -#ifdef REMOVE_EVS_DUPLICATES - test(); - IF( st_fx->hMusicPF && st_fx->hGSCDec ) - { -#ifdef REMOVE_EVS_DUPLICATES - IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) - { - Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, - st_fx->L_frame * HIBND_ACB_L_FAC, 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); - } - ELSE -#endif - { - Rescale_exc( st_fx->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, - imult1616( st_fx->L_frame, HIBND_ACB_L_FAC ), 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); - } - } - IF( st_fx->hPFstat != NULL ) - { - Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale, - &st_fx->mem_deemph_fx, st_fx->hBPF->pst_old_syn_fx, &st_fx->hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 0, 0, NULL ); - } - ELSE - { - Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale, - &st_fx->mem_deemph_fx, NULL, NULL, &st_fx->agc_mem_fx[1], NULL, 0, 0, NULL ); - } -#else Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, st_fx->L_frame * HIBND_ACB_L_FAC, 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale, &st_fx->mem_deemph_fx, hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 0, 0, NULL ); -#endif Copy_Scale_sig( exc2_fx, exc2_fx, st_fx->L_frame, sub( st_fx->Q_exc, i ) ); // Q_exc /* update past excitation signals for LD music post-filter */ @@ -705,11 +669,7 @@ ivas_error acelp_core_dec_fx( } #ifdef NONBE_FIX_GSC_BSTR -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_tmp, 1, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); -#else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, tc_subfr_tmp, 1, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); -#endif #else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_tmp, 1, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); #endif @@ -719,11 +679,7 @@ ivas_error acelp_core_dec_fx( IF( EQ_16( st_fx->coder_type, TRANSITION ) && LT_16( tc_subfr_fx, L_SUBFR ) && EQ_16( st_fx->L_frame, L_FRAME ) ) { #ifdef NONBE_FIX_GSC_BSTR -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_fx, 2, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); -#else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, TRANSITION, -1, tc_subfr_fx, 2, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); -#endif #else config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, tc_subfr_fx, 2, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); #endif @@ -815,11 +771,7 @@ ivas_error acelp_core_dec_fx( IF( st_fx->stab_fac_fx == 0 && st_fx->old_bfi_cnt > 0 && NE_16( st_fx->clas_dec, VOICED_CLAS ) && NE_16( st_fx->clas_dec, ONSET ) && st_fx->relax_prev_lsf_interp == 0 && !( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && EQ_16( st_fx->idchan, 1 ) ) ) { -#ifdef REMOVE_EVS_DUPLICATES - int_lsp4_ivas_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 ); -#else int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 ); -#endif } /*---------------------------------------------------------------* @@ -851,11 +803,7 @@ ivas_error acelp_core_dec_fx( ELSE IF( EQ_16( st_fx->coder_type, UNVOICED ) ) { /* UNVOICED frames */ -#ifdef REMOVE_EVS_DUPLICATES - decod_unvoiced_ivas_fx( st_fx, Aq_fx, Es_pred_fx, uc_two_stage_flag, st_fx->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, gain_buf ); -#else decod_unvoiced_fx( st_fx, Aq_fx, st_fx->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, gain_buf ); -#endif } ELSE IF( EQ_16( st_fx->ppp_mode_dec, 1 ) ) { @@ -872,28 +820,16 @@ ivas_error acelp_core_dec_fx( } ELSE IF( EQ_16( st_fx->coder_type, TRANSITION ) ) { -#ifdef REMOVE_EVS_DUPLICATES - decod_tran_ivas_fx( st_fx, st_fx->L_frame, tc_subfr_fx, Aq_fx, Es_pred_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, sharpFlag, gain_buf ); -#else decod_tran_fx( st_fx, st_fx->L_frame, tc_subfr_fx, Aq_fx, Es_pred_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, sharpFlag, gain_buf ); -#endif } ELSE IF( EQ_16( st_fx->coder_type, AUDIO ) || ( ( st_fx->coder_type == INACTIVE ) && LE_32( st_fx->core_brate, MAX_GSC_INACTIVE_BRATE ) ) ) { -#ifdef REMOVE_EVS_DUPLICATES - decod_audio_ivas_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf ); -#else decod_audio_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf ); -#endif tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/ } ELSE { -#ifdef REMOVE_EVS_DUPLICATES - IF( NE_32( ( error = decod_gen_voic_ivas_fx( st_fx, st_fx->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf, 0, NULL ) ), IVAS_ERR_OK ) ) -#else IF( NE_32( ( error = decod_gen_voic_fx( st_fx, st_fx->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf /*, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf*/ ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -906,7 +842,6 @@ ivas_error acelp_core_dec_fx( /* synthesis for ACELP core switching and SWB BWE */ syn_12k8_fx( st_fx->L_frame, Aq_fx, exc_fx, temp_buf_fx, st_fx->mem_syn1_fx, 1, st_fx->Q_exc, -1 ); - /* save and delay synthesis to be used by SWB BWE */ IF( hBWE_FD != NULL ) { @@ -917,11 +852,7 @@ ivas_error acelp_core_dec_fx( * Apply energy matching when switching to inactive frames *-----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode, 0, EVS_MONO ); -#else Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode ); -#endif /*------------------------------------------------------------* * Decode information and modify the excitation signal of stationary unvoiced frames *------------------------------------------------------------*/ @@ -1049,13 +980,9 @@ ivas_error acelp_core_dec_fx( k = add( k, 1 ); } -#ifdef REMOVE_EVS_DUPLICATES - FEC_scale_syn_ivas_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, - &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, - exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 ); -#else - FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); -#endif + FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, + &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, + exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); test(); test(); @@ -1134,13 +1061,8 @@ ivas_error acelp_core_dec_fx( { save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx ); } - /* Apply energy matching when switching to inactive frames */ -#ifdef REMOVE_EVS_DUPLICATES - Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode, 0, EVS_MONO ); -#else Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode ); -#endif /* udate past excitation signals for LD music post-filter */ IF( hMusicPF != NULL ) @@ -1214,15 +1136,9 @@ ivas_error acelp_core_dec_fx( * (smoothing is performed in the excitation domain and signal is resynthesized after) *------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - FEC_scale_syn_ivas_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, - &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, - exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 ); -#else FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); -#endif } /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */ @@ -1317,11 +1233,7 @@ ivas_error acelp_core_dec_fx( Copy( syn_fx, temp_buf + L_SYN_MEM, L_FRAME16k ); st_fx->hPFstat->on = 1; move16(); -#ifdef REMOVE_EVS_DUPLICATES - formant_post_filt_ivas_fx( st_fx->hPFstat, temp_buf + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME16k, st_fx->lp_noise, st_fx->total_brate, 0 ); -#else formant_post_filt_fx( st_fx->hPFstat, temp_buf + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME16k, st_fx->lp_noise, st_fx->total_brate, 0 ); -#endif } ELSE IF( GE_16( st_fx->last_bwidth, WB ) ) { @@ -1383,21 +1295,13 @@ ivas_error acelp_core_dec_fx( move32(); } /*Noise estimate*/ -#ifdef REMOVE_EVS_DUPLICATES - IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) && !st_fx->cng_ism_flag ) -#else IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) /* && !st->cng_ism_flag IVAS_CODE */ ) -#endif { #ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT PMT( "Code for IVAS_CODE_CNG_FIX185_PLC_FADEOUT not done" ) ApplyFdCng_fx( syn, st_fx->Q_syn, NULL, realBuffer, imagBuffer, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); -#else -#ifdef REMOVE_EVS_DUPLICATES - ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, realBuffer, imagBuffer, NULL, st_fx, 0, ( st_fx->coder_type == AUDIO && !st_fx->GSC_noisy_speech ) ); #else ApplyFdCng_fx( syn_fx, st_fx->Q_syn, realBuffer, imagBuffer, NULL, st_fx, 0, ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) ); -#endif #endif } /* CNA: Generate additional comfort noise to mask potential coding artefacts */ @@ -1480,82 +1384,6 @@ ivas_error acelp_core_dec_fx( bass_psfilter_fx( st_fx->hBPF, st_fx->Opt_AMR_WB, syn_fx, st_fx->L_frame, pitch_buf_fx, st_fx->bpf_off, st_fx->stab_fac_fx, &st_fx->stab_fac_smooth_fx, st_fx->coder_type, st_fx->Q_syn, bpf_error_signal ); } - -#ifdef REMOVE_EVS_DUPLICATES - IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) - { - /* analysis of the synthesis at internal sampling rate */ - cldfbAnalysisFiltering( st_fx->cldfbAna, realBuffer, imagBuffer, &scaleFactor, syn_fx, negate( st_fx->Q_syn ), CLDFB_NO_COL_MAX, workBuffer ); - - scaleFactor.hb_scale = scaleFactor.lb_scale; - move16(); - - /* analysis and add the BPF error signal */ - i = 0; - move16(); - if ( st_fx->bpf_off == 0 ) - { - i = CLDFB_NO_COL_MAX; - move16(); - } - - addBassPostFilter_fx( bpf_error_signal, realBuffer, imagBuffer, st_fx->cldfbBPF, workBuffer, negate( st_fx->Q_syn ), - i, st_fx->cldfbAna->no_col, st_fx->cldfbAna->no_channels, &scaleFactor ); - - /* set output mask for upsampling */ - IF( EQ_16( st_fx->bwidth, NB ) ) - { - /* set NB mask for upsampling */ - st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, 10 ); - move16(); - } - ELSE IF( NE_16( st_fx->cldfbSyn->bandsToZero, sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ) ) ) - { - /* in case of BW switching, re-init to default */ - st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ); - move16(); - } - - /*WB/SWB-FD_CNG*/ - scaleFactor.hb_scale = scaleFactor.lb_scale; - move16(); - - test(); - IF( !st_fx->cng_sba_flag || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) - { - test(); - test(); - test(); - IF( ( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) && ( EQ_16( st_fx->cng_type, FD_CNG ) ) && ( LT_16( st_fx->hFdCngDec->hFdCngCom->numCoreBands, st_fx->cldfbSyn->no_channels ) ) ) - { - generate_comfort_noise_dec_hf_fx( realBuffer, imagBuffer, &scaleFactor.hb_scale, st_fx ); - - st_fx->cldfbSyn->bandsToZero = 0; - move16(); - IF( LT_16( st_fx->hFdCngDec->hFdCngCom->regularStopBand, st_fx->cldfbSyn->no_channels ) ) - { - st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->hFdCngDec->hFdCngCom->regularStopBand ); - move16(); - } - st_fx->cldfbSyn->lsb = st_fx->cldfbAna->no_channels; - move16(); - } - } - - /* synthesis of the combined signal */ - st_fx->Q_syn2 = st_fx->Q_syn; - move16(); - cldfbSynthesisFiltering( st_fx->cldfbSyn, realBuffer, imagBuffer, &scaleFactor, synth_out, negate( st_fx->Q_syn2 ), CLDFB_NO_COL_MAX, workBuffer ); - - /* Bring CLDFB output to Q0 */ - Scale_sig( synth_out, output_frame, negate( st_fx->Q_syn2 ) ); - st_fx->Q_syn2 = 0; - move16(); - - /* save synthesis - needed in case of core switching */ - Copy( synth_out, st_fx->previoussynth_fx, output_frame ); - } -#else test(); IF( NE_16( st_fx->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft ) { @@ -1630,7 +1458,6 @@ ivas_error acelp_core_dec_fx( /* save synthesis - needed in case of core switching */ Copy( synth_out, st_fx->previoussynth_fx, output_frame ); } -#endif /*-----------------------------------------------------------------* * Bandwidth extension 6kHz-7kHz @@ -1647,33 +1474,12 @@ ivas_error acelp_core_dec_fx( IF( ( EQ_16( st_fx->L_frame, L_FRAME ) && NE_16( st_fx->bwidth, NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st_fx->extl, -1 ) || EQ_16( st_fx->extl, SWB_CNG ) || ( EQ_16( st_fx->extl, WB_BWE ) && st_fx->extl_brate == 0 && NE_16( st_fx->coder_type, AUDIO ) ) ) ) ) { -#ifdef REMOVE_EVS_DUPLICATES - IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) - { - hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, - st_fx->Q_syn2, st_fx->hBWE_zero->delay_syn_hf_fx, &st_fx->hBWE_zero->memExp1, st_fx->hBWE_zero->mem_hp_interp_fx, st_fx->extl, st_fx->CNG_mode ); - } - ELSE - { - hf_synth_reset_fx( st_fx->hBWE_zero ); - } -#else hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, st_fx->Q_syn2 ); - -#endif } -#ifdef REMOVE_EVS_DUPLICATES ELSE { hf_synth_reset_fx( st_fx->hBWE_zero ); -#ifdef MSAN_FIX - IF( NE_16( st_fx->element_mode, EVS_MONO ) ) - { - set16_fx( st_fx->hBWE_zero->mem_hp400_fx, 0, 6 ); - } -#endif } -#endif } /*-----------------------------------------------------------------* -- GitLab From aeb3579d8691ce91d31fe54a95f1fd7be2417b5c Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 19 Mar 2025 14:39:36 +0100 Subject: [PATCH 027/698] clang-format --- lib_dec/acelp_core_switch_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c index 1a856bcda..0b0e7f1b4 100644 --- a/lib_dec/acelp_core_switch_dec_fx.c +++ b/lib_dec/acelp_core_switch_dec_fx.c @@ -826,7 +826,7 @@ ivas_error acelp_core_switch_dec_bfi_ivas_fx( #ifdef FIX_ISSUE_1237 Copy_Scale_sig_16_32_no_sat( syn, syn32, L_FRAME16k, Qtmp ); // Q(11) #else - Copy_Scale_sig_16_32_DEPREC( syn, syn32, L_FRAME16k, Qtmp ); // Q(11) + Copy_Scale_sig_16_32_DEPREC( syn, syn32, L_FRAME16k, Qtmp ); // Q(11) #endif IF( NE_32( ( error = cldfb_save_memory_ivas_fx( st_fx->cldfbAna ) ), IVAS_ERR_OK ) ) { -- GitLab From 35a2935e2ff025aa9fd7b0b0524c0745f361551e Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 19 Mar 2025 14:45:27 +0100 Subject: [PATCH 028/698] fix merge issue causing build error --- lib_dec/acelp_core_dec_ivas_fx.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 86cbb3618..35e71287e 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -45,8 +45,6 @@ #include "wmc_auto.h" #include "ivas_prot_fx.h" -static void rescale_fdCngDec( HANDLE_FD_CNG_DEC hFdCngDec, Word16 old_NoiseExp ); - /*-------------------------------------------------------------------* * acelp_core_dec_ivas_fx() @@ -2589,9 +2587,3 @@ ivas_error acelp_core_dec_ivas_fx( pop_wmops(); return error; } - - -static void rescale_fdCngDec( HANDLE_FD_CNG_DEC hFdCngDec, Word16 Exp_diff ) -{ - Scale_sig32( hFdCngDec->hFdCngCom->sidNoiseEstLp, NPART, Exp_diff ); -} -- GitLab From e538224816eff3d9455bc28e81be5d5eb29c18d0 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 20 Mar 2025 11:24:07 +0100 Subject: [PATCH 029/698] [revert-me] change branch for getting the scripts --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 91fbd0569..a42d849c6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" LEVEL_SCALING: "1.0" IVAS_PIPELINE_NAME: '' - BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch" + BASOP_CI_BRANCH_PC_REPO: "ci/split-output-files-b4-comparison" PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" TESTCASE_TIMEOUT_STV: 900 TESTCASE_TIMEOUT_LTV: 2400 -- GitLab From 7cd676169f61f8c3016e85673416355e6d3833cb Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 20 Mar 2025 11:28:53 +0100 Subject: [PATCH 030/698] add split comparison support to CI config --- .gitlab-ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a42d849c6..7dc0f45f6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -44,6 +44,7 @@ variables: ENCODER_TEST: "" DELTA_ODG: "" COMPARE_DMX: "" + SPLIT_COMPARISON: "" SKIP_REGRESSION_CHECK: "" FAILED_TESTCASES_LIST: "failed-testcases.txt" ERRORS_TESTCASES_LIST: "errors-testcases.txt" @@ -402,6 +403,7 @@ stages: - REPORT_ARG="" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; fi # DMX comparison only in manual job with no other metrics - if [ "$COMPARE_DMX" = "true" ]; then @@ -1416,6 +1418,7 @@ ivas-pytest-compare_ref-long-enc: - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=1.0 + - SPLIT_COMPARISON="true" <<: *ivas-pytest-anchor ivas-pytest-compare_ref-long-dec: @@ -1427,6 +1430,7 @@ ivas-pytest-compare_ref-long-dec: - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - LEVEL_SCALING=1.0 + - SPLIT_COMPARISON="true" <<: *ivas-pytest-anchor ivas-pytest-compare_ref-long-enc-lev-10: @@ -1438,6 +1442,7 @@ ivas-pytest-compare_ref-long-enc-lev-10: - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=0.3162 + - SPLIT_COMPARISON="true" <<: *ivas-pytest-anchor ivas-pytest-compare_ref-long-dec-lev-10: @@ -1449,6 +1454,7 @@ ivas-pytest-compare_ref-long-dec-lev-10: - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - LEVEL_SCALING=0.3162 + - SPLIT_COMPARISON="true" <<: *ivas-pytest-anchor ivas-pytest-compare_ref-long-enc-lev+10: @@ -1460,6 +1466,7 @@ ivas-pytest-compare_ref-long-enc-lev+10: - DUT_DECODER_PATH=./$REF_DECODER_PATH - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - LEVEL_SCALING=3.162 + - SPLIT_COMPARISON="true" <<: *ivas-pytest-anchor ivas-pytest-compare_ref-long-dec-lev+10: @@ -1471,6 +1478,7 @@ ivas-pytest-compare_ref-long-dec-lev+10: - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - TEST_SUITE="$LONG_TEST_SUITE" - LEVEL_SCALING=3.162 + - SPLIT_COMPARISON="true" <<: *ivas-pytest-anchor ivas-smoke-test-saturation: -- GitLab From e73fb419ee9c8c74d68cd744eb9df07a92f68a0b Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 21 Mar 2025 11:16:02 +0100 Subject: [PATCH 031/698] create two sets of histograms + respective webpages --- .gitlab-ci.yml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7dc0f45f6..15f70e917 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -371,10 +371,12 @@ stages: variables: # keep "mld" in artifact name for backwards compatibility reasons CSV_ARTIFACT_NAME: "mld--$CI_JOB_NAME-$CI_JOB_ID--sha-$CI_COMMIT_SHORT_SHA.csv" + CSV_ARTIFACT_SPLIT: "mld--split--$CI_JOB_NAME-$CI_JOB_ID--sha-$CI_COMMIT_SHORT_SHA.csv" MERGED_CSV_ARTIFACT_NAME: "$CI_JOB_NAME--merged_csv--$CI_JOB_ID.csv" PAGES_HTML_ARTIFACT_NAME: "$CI_JOB_NAME-index.html" SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" + IMAGES_ARTIFACT_SPLIT: "images_split_$CI_JOB_NAME" script: - set -euxo pipefail - *print-common-info @@ -417,10 +419,29 @@ stages: - python3 -m pytest --tb=no $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml $comp_args -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true + ### create histograms - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME $REPORT_ARG + # if split comparison is done, we need to create two pages, one for the "whole file" values and one for the "split" values + - if [ "$SPLIT_COMPARISON" = "true" ]; then + # use -v flag ("inverse") to also have the header in the output file + - grep -v "_whole" $CSV_ARTIFACT_NAME > $CSV_ARTIFACT_SPLIT + - grep -v "_split" $CSV_ARTIFACT_NAME > $CSV_ARTIFACT_NAME + - mkdir $IMAGES_ARTIFACT_SPLIT + - for MEASURE in $summary_args;do + - python3 scripts/create_histogram_summary.py $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT/summary_"$MEASURE".csv $IMAGES_ARTIFACT_SPLIT/summary_"$MEASURE".png --measure $MEASURE + - done + - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_SPLIT --measures $summary_args + - else + # touch files to suppress warning for missing artifacts + - touch $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT + - fi + + # this part creates the "whole file" histograms - mkdir $IMAGES_ARTIFACT_NAME - - for MEASURE in $summary_args;do python3 scripts/create_histogram_summary.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".csv $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".png --measure $MEASURE; done - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME --measures $summary_args + - for MEASURE in $summary_args;do + - python3 scripts/create_histogram_summary.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".csv $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".png --measure $MEASURE; + - done + - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $summary_args - if [ $USE_LTV -eq 1 ] && [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then - id_previous=$(python3 ci/get_id_of_last_job_occurence.py $CI_DEFAULT_BRANCH $CI_JOB_NAME $CI_PROJECT_ID) @@ -460,9 +481,11 @@ stages: - report.html - $PAGES_HTML_ARTIFACT_NAME - $CSV_ARTIFACT_NAME + - $CSV_ARTIFACT_SPLIT - $MERGED_CSV_ARTIFACT_NAME - $SUMMARY_HTML_ARTIFACT_NAME - $IMAGES_ARTIFACT_NAME + - $IMAGES_ARTIFACT_SPLIT expose_as: "pytest compare results" reports: junit: -- GitLab From 7699604cbeba5c4b0b36310220d689d2b157f8d4 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 21 Mar 2025 14:32:20 +0100 Subject: [PATCH 032/698] workaround for grep with input=output --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 15f70e917..33a38214e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -425,7 +425,8 @@ stages: - if [ "$SPLIT_COMPARISON" = "true" ]; then # use -v flag ("inverse") to also have the header in the output file - grep -v "_whole" $CSV_ARTIFACT_NAME > $CSV_ARTIFACT_SPLIT - - grep -v "_split" $CSV_ARTIFACT_NAME > $CSV_ARTIFACT_NAME + - cp $CSV_ARTIFACT_NAME tmp.csv + - grep -v "_split" tmp.csv > $CSV_ARTIFACT_NAME - mkdir $IMAGES_ARTIFACT_SPLIT - for MEASURE in $summary_args;do - python3 scripts/create_histogram_summary.py $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT/summary_"$MEASURE".csv $IMAGES_ARTIFACT_SPLIT/summary_"$MEASURE".png --measure $MEASURE -- GitLab From 9c244dff1eb59d3e8b6a8eebddf12a295ddf02d4 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 21 Mar 2025 14:34:00 +0100 Subject: [PATCH 033/698] [revert-me] limit to stereo testcases for faster testing --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 33a38214e..57378accb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -224,7 +224,7 @@ stages: - enc_dmx_arg="--compare_enc_dmx" - fi - - python3 -m pytest $TEST_SUITE -v --update_ref 1 $enc_stats_arg $enc_dmx_arg --create_ref -n auto --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? + - python3 -m pytest $TEST_SUITE -k stereo -v --update_ref 1 $enc_stats_arg $enc_dmx_arg --create_ref -n auto --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? .update-scripts-repo: &update-scripts-repo - cd $SCRIPTS_DIR @@ -416,7 +416,7 @@ stages: ### run pytest - exit_code=0 - - python3 -m pytest --tb=no $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml $comp_args -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? + - python3 -m pytest -k stereo --tb=no $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml $comp_args -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true ### create histograms -- GitLab From cbaf8b9d93e19d7127a83fac9d21b7336ce35768 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 21 Mar 2025 16:00:36 +0100 Subject: [PATCH 034/698] Revert "[revert-me] limit to stereo testcases for faster testing" This reverts commit 9c244dff1eb59d3e8b6a8eebddf12a295ddf02d4. --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 57378accb..33a38214e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -224,7 +224,7 @@ stages: - enc_dmx_arg="--compare_enc_dmx" - fi - - python3 -m pytest $TEST_SUITE -k stereo -v --update_ref 1 $enc_stats_arg $enc_dmx_arg --create_ref -n auto --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? + - python3 -m pytest $TEST_SUITE -v --update_ref 1 $enc_stats_arg $enc_dmx_arg --create_ref -n auto --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? .update-scripts-repo: &update-scripts-repo - cd $SCRIPTS_DIR @@ -416,7 +416,7 @@ stages: ### run pytest - exit_code=0 - - python3 -m pytest -k stereo --tb=no $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml $comp_args -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? + - python3 -m pytest --tb=no $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml $comp_args -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true ### create histograms -- GitLab From de86dcf18c360f6e5154c30de8cb8090e191ddf1 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Mon, 24 Mar 2025 08:55:42 +0100 Subject: [PATCH 035/698] Port fix FIX_963_USAN_ERROR to address division-by-zero in Stereo CNG --- lib_com/options.h | 1 + lib_enc/ivas_stereo_dft_enc_itd_fx.c | 32 ++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3b3adbf01..6de35cc23 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -189,6 +189,7 @@ #define FIX_929_RENDERER_CMDL /* Nokia: issue #929: renderer command line option */ #define NONBE_FIX_BINAURAL_ROOM_IR_REVERBERATOR /* FhG: re-enable acidentially disabled reverberator for BINAURAL_ROOM_IR */ #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ +#define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index af10f7dea..2853cb989 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1713,11 +1713,24 @@ void stereo_dft_enc_compute_itd_fx( move16(); } // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); - +#ifdef FIX_963_USAN_ERROR + IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) + { + cng_xcorr_filt = CORR_FILT_Q31; + move32(); + cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 + } + ELSE + { + cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); + cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 + cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 + } +#else cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 - +#endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); FOR( i = 1; i < NFFT / 4; i++ ) @@ -1773,6 +1786,20 @@ void stereo_dft_enc_compute_itd_fx( { /* expectedNumUpdates updated after call to dtx() in SID frames */ // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); +#ifdef FIX_963_USAN_ERROR + IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) + { + cng_xcorr_filt = CORR_FILT_Q31; + move32(); + cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 + } + ELSE + { + cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); + cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 + cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 + } +#else IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) != 0 ) { cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); @@ -1785,6 +1812,7 @@ void stereo_dft_enc_compute_itd_fx( move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } +#endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); hStereoDft->sfm_fx = cng_xcorr_filt; -- GitLab From ca78d64b8655295422fafd8100f4bd609b71a8c9 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 24 Mar 2025 10:53:47 +0100 Subject: [PATCH 036/698] [revert-me] use other branch for testing --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 33a38214e..7f9c4b622 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" LEVEL_SCALING: "1.0" IVAS_PIPELINE_NAME: '' - BASOP_CI_BRANCH_PC_REPO: "ci/split-output-files-b4-comparison" + BASOP_CI_BRANCH_PC_REPO: "kiene/tmp-branch-for-ltv-split-testing" PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" TESTCASE_TIMEOUT_STV: 900 TESTCASE_TIMEOUT_LTV: 2400 -- GitLab From 542102d19ee03f87649465f81b357f905e50d55b Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 24 Mar 2025 10:56:26 +0100 Subject: [PATCH 037/698] exclude JBM from split comparison splitting is only done on wav outputs, but not on tracefiles --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7f9c4b622..18ee8f878 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -405,7 +405,7 @@ stages: - REPORT_ARG="" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k 'not JBM'" fi # DMX comparison only in manual job with no other metrics - if [ "$COMPARE_DMX" = "true" ]; then -- GitLab From 80cef4c62c104565540aed445c886e6d3876fc24 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 24 Mar 2025 12:25:04 +0100 Subject: [PATCH 038/698] try different env var export --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 18ee8f878..ee9864b39 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -405,7 +405,7 @@ stages: - REPORT_ARG="" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k 'not JBM'" fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k not JBM" fi # DMX comparison only in manual job with no other metrics - if [ "$COMPARE_DMX" = "true" ]; then -- GitLab From 1c525e918c69a670c88b58cf98bc4e7e088eedcd Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 24 Mar 2025 12:31:59 +0100 Subject: [PATCH 039/698] move reference creation to also exclude JBM cases there --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee9864b39..95e4fa282 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -397,7 +397,6 @@ stages: - if [ "$COMPARE_DMX" = "true" ] || [ "$ENCODER_TEST" = "true" ]; then - BUILD_WITH_DEBUG_MODE_INFO="true" - fi - - *build-and-create-float-ref-outputs - comp_args="--mld --ssnr --odg" @@ -407,6 +406,8 @@ stages: - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k not JBM" fi + - *build-and-create-float-ref-outputs + # DMX comparison only in manual job with no other metrics - if [ "$COMPARE_DMX" = "true" ]; then - comp_args="--compare_enc_dmx" -- GitLab From 5c3730f6c0ac44821c85cc9af520ef5f3b368806 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 24 Mar 2025 12:37:23 +0100 Subject: [PATCH 040/698] fix missing ; --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 95e4fa282..5d9caaa88 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -404,7 +404,7 @@ stages: - REPORT_ARG="" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k not JBM" fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k not JBM"; fi - *build-and-create-float-ref-outputs -- GitLab From 86bf628facb296a90adc606fe831a8167539b17d Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 24 Mar 2025 12:47:04 +0100 Subject: [PATCH 041/698] add escaped qoutes --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5d9caaa88..836829bbc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -404,7 +404,7 @@ stages: - REPORT_ARG="" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k not JBM"; fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k \"not JBM\""; fi - *build-and-create-float-ref-outputs -- GitLab From 47bf67bd01e16f22d9733aab5bc358091631e41d Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 24 Mar 2025 15:15:28 +0100 Subject: [PATCH 042/698] fewer testcases for testing --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 836829bbc..f7db000f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -404,7 +404,7 @@ stages: - REPORT_ARG="" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k \"not JBM\""; fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k \"not JBM\ and stereo and at""; fi - *build-and-create-float-ref-outputs -- GitLab From e737679cced80aae23567ec5c340f2700cfe6e05 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 25 Mar 2025 09:09:07 +0100 Subject: [PATCH 043/698] Add some push/pops --- lib_dec/ivas_core_dec_fx.c | 64 +++++++++++++++++++++++++++++++------- lib_dec/ivas_jbm_dec_fx.c | 20 ++++++++++-- lib_dec/swb_tbe_dec_fx.c | 2 ++ 3 files changed, 71 insertions(+), 15 deletions(-) diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index 588640d0a..c367125e7 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -114,12 +114,12 @@ ivas_error ivas_core_dec_fx( error = IVAS_ERR_OK; move32(); - push_wmops( "ivas_core_dec" ); + push_wmops( "ivas_core_dec (ICD)" ); /*------------------------------------------------------------------* * General initialization *-----------------------------------------------------------------*/ - + push_wmops( "ICD init" ); use_cldfb_for_dft = 0; move16(); tdm_LRTD_flag = -1; @@ -368,7 +368,9 @@ ivas_error ivas_core_dec_fx( { save_hb_synth_32_fx = NULL; } + pop_wmops(); /*push_wmops( "ICD init" );*/ + push_wmops( "ICD SID, sanity" ); /*------------------------------------------------------------------* * Decode SID for MDCT-Stereo DTX mode *-----------------------------------------------------------------*/ @@ -396,7 +398,9 @@ ivas_error ivas_core_dec_fx( { ivas_combined_format_brate_sanity_fx( element_brate, sts[0]->core, sts[0]->total_brate, &( sts[0]->core_brate ), &( sts[0]->inactive_coder_type_flag ), &tmps ); } + pop_wmops(); /*push_wmops( "ICD SID, sanity" );*/ + push_wmops( "ICD Coredec" ); /*------------------------------------------------------------------* * Core Decoding *-----------------------------------------------------------------*/ @@ -481,6 +485,7 @@ ivas_error ivas_core_dec_fx( IF( st->core == ACELP_CORE ) { + push_wmops( "ICD ACELP" ); /* ACELP core decoder */ Word16 old_syn_12k8_16k_fx_16[L_FRAME16k]; Word16 save_hb_synth_fx_arr[L_FRAME48k], *save_hb_synth_16_fx; @@ -553,14 +558,16 @@ ivas_error ivas_core_dec_fx( } Copy_Scale_sig_16_32_DEPREC( old_syn_12k8_16k_fx_16, old_syn_12k8_16k_fx[n], L_FRAME16k, Q11 - ( -Q1 ) ); // Q(11 - (-1)) + pop_wmops(); /*push_wmops( "ICD ACELP" );*/ } - + Copy_Scale_sig_32_16( st->previoussynth_fx_32, st->previoussynth_fx, L_FRAME48k, 0 ); // Q0 test(); test(); IF( ( EQ_16( st->core, TCX_20_CORE ) || EQ_16( st->core, TCX_10_CORE ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { + push_wmops( "ICD TCX" ); Word16 Qsyn_temp; IVAS_FORMAT ivas_format; @@ -615,10 +622,12 @@ ivas_error ivas_core_dec_fx( } st->hBPF->pst_mem_deemp_err_fx = extract_l( st->mem_error ); move16(); + pop_wmops(); /*push_wmops( "ICD TCX" );*/ } - + IF( EQ_16( st->core, HQ_CORE ) ) { + push_wmops( "ICD HQ decoding" ); /* HQ core decoder */ Word16 Q_output; @@ -632,6 +641,7 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_output ) ); // Q11 Scale_sig( synth_16_fx[n], output_frame, negate( Q_synth ) ); // Q0 Scale_sig( output_16_fx[n], L_FRAME48k, negate( Q_output ) ); // Q0 + pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ } /*---------------------------------------------------------------------* @@ -649,7 +659,7 @@ ivas_error ivas_core_dec_fx( } } /* n_channels loop */ - + pop_wmops(); /*push_wmops( "ICD Coredec" );*/ /*---------------------------------------------------------------------* * MDCT stereo: joint TCX Core Decoding @@ -657,6 +667,7 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( sts[0]->element_mode, IVAS_CPE_MDCT ) ) { + push_wmops( "ICD jTCX Coredec" ); /* active-frame decoding */ IF( GT_32( sts[0]->core_brate, SID_2k40 ) ) { @@ -785,6 +796,7 @@ ivas_error ivas_core_dec_fx( } } } + pop_wmops(); /*push_wmops( "ICD jTCX Coredec" );*/ } /*---------------------------------------------------------------------* @@ -794,6 +806,7 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( sts[0]->element_mode, IVAS_CPE_TD ) && hStereoCng != NULL ) { + push_wmops( "ICD Stereo CNG Updates" ); /* To be cleaned up once the caller function is converted // These changes are for system testing of fixed changes made */ Word16 Q_c_PS_LT, Q_output; Word32 c_PS_LT_fx; @@ -809,12 +822,14 @@ ivas_error ivas_core_dec_fx( stereo_cng_compute_PScorr_fx( output_32_fx[0], output_32_fx[1], &Q_output, &c_PS_LT_fx, Q_c_PS_LT, sts[0]->L_frame, sts[1]->L_frame ); hStereoCng->c_PS_LT_fx = extract_h( c_PS_LT_fx ); + pop_wmops(); /*push_wmops( "ICD Stereo CNG Updates" );*/ } /*---------------------------------------------------------------------* * Postprocessing, BWEs and updates *---------------------------------------------------------------------*/ + push_wmops( "ICD Postproc, BWE, updates (ICD PP)" ); FOR( n = 0; n < n_channels; n++ ) { st = sts[n]; @@ -825,6 +840,7 @@ ivas_error ivas_core_dec_fx( * TD-BWE for ACELP to TCX transitions *---------------------------------------------------------------------*/ + push_wmops( "ICD PP TDBWE ACELPTCX trans" ); /*core_switching_post_dec*/ Q_synth = sub( 15, e_sig[0] ); @@ -898,11 +914,12 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->mem_resamp_HB_fx_32, INTERP_3_1_MEM_LEN, sub( Q11, hBWE_TD->prev_Qx ) ); // Q11 Copy( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->state_32and48k_WB_upsample_fx, ( 2 * ALLPASSSECTIONS_STEEP ) ); } + pop_wmops(); /*push_wmops( "ICD PP TDBWE ACELPTCX trans" );*/ /*---------------------------------------------------------------------* * Postprocessing for ACELP/MDCT core switching *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP ACELP/MDCT switch" ); /* save synth and output in case of SBA DirAC stereo output as core switching is done outside of core decoder */ test(); test(); @@ -937,11 +954,12 @@ ivas_error ivas_core_dec_fx( { Copy( sts[0]->previoussynth_fx, sts[1]->previoussynth_fx, st->hTcxDec->L_frameTCX ); } + pop_wmops(); /*push_wmops( "ICD PP ACELP/MDCT switch" );*/ /*---------------------------------------------------------------------* * Pre-processing for bandwidth switching *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP BWswitch preproc" ); ivas_bw_switching_pre_proc_fx( st, last_element_brate, nchan_out, old_syn_12k8_16k_fx[n], old_syn_fx, q_audio ); IF( st->hHQ_core == NULL ) @@ -988,12 +1006,13 @@ ivas_error ivas_core_dec_fx( hBWE_FD->prev_flag = hBWE_FD->prev_flag; move16(); } + pop_wmops(); /*push_wmops( "ICD PP BWswitch preproc" );*/ /*---------------------------------------------------------------------* * WB TBE decoding * WB BWE decoding *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP TBE/BWE" ); Word16 Q_input, Q_hb_synth_fx, Q_synth_fx; Word16 Q_syn_hb, sf; @@ -1021,8 +1040,9 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( st->extl, WB_TBE ) ) { /* WB TBE decoder */ - + push_wmops( "ICD PP TBE/BWE wb_tbe_dec" ); ivas_wb_tbe_dec_fx( st, st->coder_type, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], hb_synth_16_fx[n], &Q_hb_synth_fx ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_tbe_dec" );*/ } ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( n, 1 ) && !tdm_LRTD_flag && NE_16( st->extl, -1 ) && st->bws_cnt == 0 && st->extl_brate == 0 ) { @@ -1030,8 +1050,10 @@ ivas_error ivas_core_dec_fx( } ELSE IF( EQ_16( st->extl, WB_BWE ) && st->bws_cnt == 0 ) { + push_wmops( "ICD PP TBE/BWE wb_bwe_dec" ); /* WB BWE decoder */ Q_hb_synth_fx = ivas_wb_bwe_dec_fx( st, output_16_fx[n], synth_16_fx[n], hb_synth_16_fx[n], use_cldfb_for_dft, output_frame, voice_factors_fx[n], pitch_buf_fx[n], &Q_synth_fx ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_bwe_dec" );*/ } /* Memories Re-Scaling */ @@ -1075,8 +1097,10 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, FB_TBE ) || ( NE_16( st->coder_type, AUDIO ) && NE_16( st->coder_type, INACTIVE ) && GE_32( st->core_brate, SID_2k40 ) && EQ_16( st->core, ACELP_CORE ) && !st->con_tcx && GE_32( output_Fs, 32000 ) && GT_16( st->bwidth, NB ) && st->bws_cnt > 0 ) ) { + push_wmops( "ICD PP TBE/BWE swb_tbe_dec" ); /* SWB TBE decoder */ ivas_swb_tbe_dec_fx( st, hStereoICBWE, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], old_syn_12k8_16k_fx[n], tmp_buffer_fx /*fb_exc*/, hb_synth_32_fx[n], pitch_buf_fx[n], &Q_white_exc ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec" );*/ Copy_Scale_sig_16_32_no_sat( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap_fx_32, L_SHB_LAHEAD, sub( Q11, hBWE_TD->prev_Q_bwe_syn2 ) ); // Q11 Copy_Scale_sig_32_16( hBWE_TD->old_tbe_synth_fx_32, hBWE_TD->old_tbe_synth_fx, L_SHB_TRANSITION_LENGTH, sub( hBWE_TD->prev_Qx, Q11 ) ); // prev_Qx @@ -1091,18 +1115,22 @@ ivas_error ivas_core_dec_fx( /* FB TBE decoder */ IF( EQ_16( st->extl, FB_TBE ) ) { + push_wmops( "ICD PP TBE/BWE fb_tbe_dec" ); fb_tbe_dec_ivas_fx( st, tmp_buffer_fx /*fb_exc*/, Q_white_exc, hb_synth_32_fx[n], 0, tmp_buffer_fx /*fb_synth_ref*/, Q_white_exc, output_frame ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE fb_tbe_dec" );*/ } } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) || ( GE_32( output_Fs, 32000 ) && st->core == ACELP_CORE && st->bwidth > NB && st->bws_cnt > 0 && !st->ppp_mode_dec && !( EQ_16( st->nelp_mode_dec, 1 ) && EQ_16( st->bfi, 1 ) ) ) ) { /* SWB BWE decoder */ + push_wmops( "ICD PP TBE/BWE swb_bwe_dec" ); Q_syn_hb = swb_bwe_dec_fx32( st, output_32_fx[n], synth_32_fx[n], hb_synth_32_fx[n], use_cldfb_for_dft, output_frame ); - + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ Scale_sig32( hb_synth_32_fx[n], output_frame, sub( Q11, Q_syn_hb ) ); // Q11 Copy_Scale_sig_32_16( hBWE_FD->L_old_wtda_swb_fx32, hBWE_FD->L_old_wtda_swb_fx, output_frame, sub( hBWE_FD->old_wtda_swb_fx_exp, Q11 ) ); // old_wtda_swb_fx_exp } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE" );*/ /*---------------------------------------------------------------------* * FEC - recovery after lost HQ core (smoothing of the BWE component) @@ -1141,6 +1169,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( GE_16( output_frame, L_FRAME32k ) && st->hTdCngDec != NULL ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && GE_16( st->bwidth, SWB ) && st->hTdCngDec != NULL ) ) { + push_wmops( "ICD PP SWB CNG" ); /* SHB CNG decoder */ Word16 synth_fxl[960]; /* Q-2 */ Word16 q; @@ -1162,6 +1191,7 @@ ivas_error ivas_core_dec_fx( Scale_sig( hBWE_TD->state_lpc_syn_fx, LPC_SHB_ORDER, negate( sub( Q8, hBWE_TD->prev_Q_bwe_syn ) ) ); // Q0 Copy_Scale_sig_16_32_no_sat( hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, 2 * ALLPASSSECTIONS_STEEP, negate( sub( hBWE_TD->prev_Q_bwe_syn2, Q11 ) ) ); + pop_wmops(); /* push_wmops( "ICD PP SWB CNG" );*/ } /*-------------------------------------------------------------------* @@ -1171,6 +1201,7 @@ ivas_error ivas_core_dec_fx( test(); IF( n == 0 && GE_16( st->element_mode, IVAS_CPE_DFT ) ) { + push_wmops( "ICD PP IC-BWE" ); Word16 q; q = 11; move16(); @@ -1192,10 +1223,12 @@ ivas_error ivas_core_dec_fx( Scale_sig32( hb_synth_32_fx[0], output_frame, sub( Q11, q ) ); // Q11 Scale_sig32( hb_synth_32_fx[1], output_frame, sub( Q11, q ) ); // Q11 } + pop_wmops(); /*push_wmops( "ICD PP IC-BWE" );*/ } IF( EQ_16( st->element_mode, EVS_MONO ) ) { + push_wmops( "ICD PP BFI" ); /*----------------------------------------------------------------* * BFI waveform adjustment *----------------------------------------------------------------*/ @@ -1223,6 +1256,7 @@ ivas_error ivas_core_dec_fx( st->hPlcInfo->Pitch_fx = 0; move16(); } + pop_wmops(); /*push_wmops( "ICD PP BFI" );*/ } /*----------------------------------------------------------------* @@ -1235,6 +1269,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( NE_16( st->extl, -1 ) && ( NE_16( st->extl, IGF_BWE ) || st->last_core == ACELP_CORE ) ) || ( st->bws_cnt > 0 && st->core == ACELP_CORE ) ) { + push_wmops( "ICD PP Sync BWE" ); /* Calculate an additional delay of extension layer components to be synchronized with ACELP synthesis */ IF( EQ_16( st->L_frame, L_FRAME ) ) { @@ -1388,6 +1423,7 @@ ivas_error ivas_core_dec_fx( st->hTdCngDec->last_shb_ener_fx_32 = L_shl_sat( L_tmp, sub( exp, 20 ) ); /*Q11*/ move32(); } + pop_wmops(); /*push_wmops( "ICD PP Sync BWE" );*/ } test(); @@ -1403,7 +1439,7 @@ ivas_error ivas_core_dec_fx( * - core switching in DFT stereo * - updates for potential TD->DFT stereo switching *----------------------------------------------------------------*/ - + push_wmops( "ICD PP TCXLTP" ); IF( st->hHQ_core != NULL ) { Copy_Scale_sig_16_32_no_sat( st->hHQ_core->old_out_LB_fx, st->hHQ_core->old_out_LB_fx32, L_FRAME32k, sub( Q11, st->hHQ_core->Q_old_wtda_LB ) ); // Q11 @@ -1460,6 +1496,7 @@ ivas_error ivas_core_dec_fx( } Copy32( synth_32_fx[n], output_32_fx[n], output_frame ); + pop_wmops(); /*push_wmops( "ICD PP TCXLTP" );*/ /*--------------------------------------------------------* * Common updates @@ -1468,6 +1505,7 @@ ivas_error ivas_core_dec_fx( Word16 exp_max; Word32 output_fx_loc[L_FRAME48k]; + push_wmops( "ICD PP commonupdates" ); exp_max = 0; move16(); @@ -1522,6 +1560,8 @@ ivas_error ivas_core_dec_fx( Scale_sig( st->delay_buf_out_fx, NS2SA_FX2( st->output_Fs, DELAY_CLDFB_NS ), negate( exp_max ) ); // Q0 + pop_wmops(); /*push_wmops( "ICD PP commonupdates" );*/ + } /* n_channels loop */ FOR( n = 0; n < n_channels; n++ ) @@ -1540,7 +1580,7 @@ ivas_error ivas_core_dec_fx( move16(); } } - + pop_wmops(); /*push_wmops( "ICD Postproc, BWE, updates (ICD PP)" );*/ pop_wmops(); return error; } diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 93e8bb4eb..31ac1a768 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -96,12 +96,13 @@ ivas_error ivas_jbm_dec_tc_fx( CPE_DEC_HANDLE hCPE; SCE_DEC_HANDLE hSCE; - push_wmops( "ivas_jbm_dec_tc" ); + push_wmops( "ivas_jbm_dec_tc (JBM)" ); /*----------------------------------------------------------------* * Initialization of local vars after struct has been set *----------------------------------------------------------------*/ + push_wmops( "JBM init" ); output_Fs = st_ivas->hDecoderConfig->output_Fs; move32(); nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; @@ -134,7 +135,7 @@ ivas_error ivas_jbm_dec_tc_fx( } Word16 ch; - + pop_wmops(); /*push_wmops( "JBM init" );*/ /*----------------------------------------------------------------* * Decoding + pre-rendering @@ -152,6 +153,7 @@ ivas_error ivas_jbm_dec_tc_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) { + push_wmops( "JBM STEREO" ); st_ivas->hCPE[0]->element_brate = ivas_total_brate; move32(); Word16 q_output = 11; @@ -192,9 +194,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 } } + pop_wmops(); /*push_wmops( "JBM STEREO" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { + push_wmops( "JBM ISM" ); /* Metadata decoding and configuration */ test(); IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) @@ -279,9 +283,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } + pop_wmops();/*push_wmops( "JBM ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { + push_wmops( "JBM SBA/MASA" ); set16_fx( nb_bits_metadata, 0, MAX_SCE ); @@ -688,9 +694,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } + pop_wmops();/*push_wmops( "JBM SBA/MASA" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { + push_wmops( "JBM MASA_ISM" ); Word16 nchan_ism, nchan_transport_ism; Word16 dirac_bs_md_write_idx; @@ -821,9 +829,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[n], output_frame, sub( Q11, output_q ) ); // Q11 } } + pop_wmops(); /*push_wmops( "JBM MASA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { + push_wmops( "JBM SBA_ISM" ); Word16 nchan_ism, sba_ch_idx; set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); @@ -1092,10 +1102,11 @@ ivas_error ivas_jbm_dec_tc_fx( v_add_32( p_output_fx[n], p_output_fx[n + s_max( nchan_out, nchan_ism )], p_output_fx[n], output_frame ); } } + pop_wmops(); /*push_wmops( "JBM SBA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) { - + push_wmops( "JBM MC" ); // st = (st_ivas->nSCE > 0) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; IF( st_ivas->nSCE > 0 ) { @@ -1468,6 +1479,7 @@ ivas_error ivas_jbm_dec_tc_fx( ivas_mono_stereo_downmix_mcmasa_fx( st_ivas, p_output_fx, output_frame ); } } + pop_wmops(); /*push_wmops( "JBM MC" );*/ } /*----------------------------------------------------------------* @@ -1476,7 +1488,9 @@ ivas_error ivas_jbm_dec_tc_fx( IF( EQ_16( st_ivas->hDecoderConfig->Opt_tsm, 1 ) ) { + push_wmops( "JBM syn_out" ); ivas_syn_output_f_fx( p_output_fx, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data_fx ); + pop_wmops();/*push_wmops( "JBM syn_out" );*/ } ELSE { diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 1b51a29fb..1e7af58c8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4713,7 +4713,9 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ + push_wmops( "synthesise_fb_high_band" ); synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) -- GitLab From 3a315e7b4f6b65f2fab68da9a828595775b655d3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 25 Mar 2025 09:29:47 +0100 Subject: [PATCH 044/698] apply clang format patch --- lib_dec/ivas_core_dec_fx.c | 12 ++++++------ lib_dec/ivas_jbm_dec_fx.c | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index c367125e7..c0686bdfd 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -558,9 +558,9 @@ ivas_error ivas_core_dec_fx( } Copy_Scale_sig_16_32_DEPREC( old_syn_12k8_16k_fx_16, old_syn_12k8_16k_fx[n], L_FRAME16k, Q11 - ( -Q1 ) ); // Q(11 - (-1)) - pop_wmops(); /*push_wmops( "ICD ACELP" );*/ + pop_wmops(); /*push_wmops( "ICD ACELP" );*/ } - + Copy_Scale_sig_32_16( st->previoussynth_fx_32, st->previoussynth_fx, L_FRAME48k, 0 ); // Q0 test(); @@ -624,7 +624,7 @@ ivas_error ivas_core_dec_fx( move16(); pop_wmops(); /*push_wmops( "ICD TCX" );*/ } - + IF( EQ_16( st->core, HQ_CORE ) ) { push_wmops( "ICD HQ decoding" ); @@ -641,7 +641,7 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_output ) ); // Q11 Scale_sig( synth_16_fx[n], output_frame, negate( Q_synth ) ); // Q0 Scale_sig( output_16_fx[n], L_FRAME48k, negate( Q_output ) ); // Q0 - pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ + pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ } /*---------------------------------------------------------------------* @@ -658,7 +658,7 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[0]->old_pitch_buf_16_fx, hCPE->hCoreCoder[0]->old_pitch_buf_fx, add( imult1616( 2, NB_SUBFR16k ), 2 ), Q10 ); // Q16 } - } /* n_channels loop */ + } /* n_channels loop */ pop_wmops(); /*push_wmops( "ICD Coredec" );*/ /*---------------------------------------------------------------------* @@ -1125,7 +1125,7 @@ ivas_error ivas_core_dec_fx( /* SWB BWE decoder */ push_wmops( "ICD PP TBE/BWE swb_bwe_dec" ); Q_syn_hb = swb_bwe_dec_fx32( st, output_32_fx[n], synth_32_fx[n], hb_synth_32_fx[n], use_cldfb_for_dft, output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ Scale_sig32( hb_synth_32_fx[n], output_frame, sub( Q11, Q_syn_hb ) ); // Q11 Copy_Scale_sig_32_16( hBWE_FD->L_old_wtda_swb_fx32, hBWE_FD->L_old_wtda_swb_fx, output_frame, sub( hBWE_FD->old_wtda_swb_fx_exp, Q11 ) ); // old_wtda_swb_fx_exp diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 31ac1a768..4745bc5f0 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -283,7 +283,7 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops();/*push_wmops( "JBM ISM" );*/ + pop_wmops(); /*push_wmops( "JBM ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { @@ -694,7 +694,7 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops();/*push_wmops( "JBM SBA/MASA" );*/ + pop_wmops(); /*push_wmops( "JBM SBA/MASA" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { @@ -1490,7 +1490,7 @@ ivas_error ivas_jbm_dec_tc_fx( { push_wmops( "JBM syn_out" ); ivas_syn_output_f_fx( p_output_fx, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data_fx ); - pop_wmops();/*push_wmops( "JBM syn_out" );*/ + pop_wmops(); /*push_wmops( "JBM syn_out" );*/ } ELSE { -- GitLab From 74e7078328609715793fb3388b4b6fc52bc8880f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 25 Mar 2025 12:58:54 +0100 Subject: [PATCH 045/698] add FIX_1439_SPEEDUP_elliptic_bpf_48k_generic STAGE1 --- lib_com/swb_tbe_com_fx.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2a2841966..d066448c1 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6693,6 +6693,8 @@ void wb_tbe_extras_reset_synth_fx( * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic + void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -6721,6 +6723,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6763,6 +6766,24 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic //STAGE1 + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY = W_add( 0, 0 ); + W_tmpX = W_deposit32_l( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ) ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_sub( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 ) ) ); /*Q_input_fx + 11*/ + move32(); + } +#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6776,6 +6797,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } +#endif + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -7004,6 +7027,7 @@ void synthesise_fb_high_band_fx( Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" ); /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7019,6 +7043,7 @@ void synthesise_fb_high_band_fx( } exp_tmp = sub( Q_fb_exc, 2 ); + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" ); IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ @@ -7029,6 +7054,10 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ + + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); temp1 = sum2_fx_mod( tmp, L_FRAME48k ); L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ @@ -7085,6 +7114,7 @@ void synthesise_fb_high_band_fx( move16(); } } + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; } -- GitLab From 446323f00943955d97a8db2069a04c13daca77a4 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 25 Mar 2025 13:04:15 +0100 Subject: [PATCH 046/698] apply clang format patch --- lib_com/swb_tbe_com_fx.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d066448c1..90d703cdd 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6766,7 +6766,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic //STAGE1 +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic // STAGE1 FOR( i = 4; i < L_FRAME48k; i++ ) { Word64 W_tmpX; @@ -6797,7 +6797,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } -#endif +#endif memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; @@ -7054,10 +7054,10 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); temp1 = sum2_fx_mod( tmp, L_FRAME48k ); L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ -- GitLab From 9938e11dacdd2d926276133ae94515f158f69647 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 25 Mar 2025 14:32:11 +0100 Subject: [PATCH 047/698] fix FIX_1439_SPEEDUP_elliptic_bpf_48k_generic STAGE1 --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 90d703cdd..3f0bcf66c 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6780,7 +6780,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_sub( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); } #else -- GitLab From ff8566555dc4026028908632573ba986fcce3c9b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 25 Mar 2025 15:51:45 +0100 Subject: [PATCH 048/698] introduced FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 and FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3, also FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 --- lib_com/prot_fx.h | 16 +++++++++ lib_com/swb_tbe_com_fx.c | 70 +++++++++++++++++++++++++++++++++++----- lib_enc/swb_tbe_enc_fx.c | 13 +++++++- 3 files changed, 90 insertions(+), 9 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index d7ed9a140..0baa329fd 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,6 +59,10 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 /*----------------------------------------------------------------------------------* * Prototypes of global macros @@ -3258,6 +3262,17 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 +void elliptic_bpf_48k_generic_fx( + const Word16* input_fx, /* i : i signal Q_input_fx */ + Word16 *Q_input_fx, + Word16 output_fx[], /* o : output signal */ + Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ + Word16 memory_fx_Q[], + const Word16 full_band_bpf[][5], /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ + const Word32 *output32_fx, + const Word16 *scale_output32_fx); +#else void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : i signal Q_input_fx */ Word16 *Q_input_fx, @@ -3266,6 +3281,7 @@ void elliptic_bpf_48k_generic_fx( Word16 memory_fx_Q[], const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ); +#endif void synthesise_fb_high_band_fx( const Word16 excitation_in[], /* i : full band excitation */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 3f0bcf66c..1dbe841a3 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -18,6 +18,8 @@ #define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ #define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ + + /*-----------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------*/ @@ -6692,9 +6694,8 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ - -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic - +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 +#else void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -6703,6 +6704,7 @@ void elliptic_bpf_48k_generic_fx( Word16 memory_fx_Q[], const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ) +#endif { Word16 i, j; Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; @@ -6766,14 +6768,14 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic // STAGE1 +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 FOR( i = 4; i < L_FRAME48k; i++ ) { Word64 W_tmpX; - Word64 W_tmpY = W_add( 0, 0 ); - W_tmpX = W_deposit32_l( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ) ); + Word64 W_tmpY; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); @@ -6853,6 +6855,26 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6867,7 +6889,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } - +#endif Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -6936,7 +6958,29 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -6954,6 +6998,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } +#endif memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -7047,12 +7092,21 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, NULL, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx, tmp32, scale_tmp32 ); +#else elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); +#endif } ELSE { /* for 12.8kHz ACELP core */ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, NULL, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx, tmp32, scale_tmp32 ); +#else elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); +#endif + } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 2b8f487bd..5d860c96f 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7324,8 +7324,11 @@ void fb_tbe_enc_fx( exp_temp = sub( exp_temp, 1 ); Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx, NULL, NULL ); +#else elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#endif Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7449,11 +7452,19 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx, NULL, NULL ); +#else elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#endif } ELSE { +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx, NULL, NULL ); +#else elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#endif } test(); -- GitLab From e3f013ae239351874fd1d87cc7abe9d7f1e1ce3d Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 25 Mar 2025 15:52:19 +0100 Subject: [PATCH 049/698] deactivated all speedups --- lib_com/prot_fx.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 0baa329fd..e3d0668a1 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,9 +59,9 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 /*----------------------------------------------------------------------------------* -- GitLab From 44ade3447be3a5b798713ca270cc025965076141 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 11:33:01 +0100 Subject: [PATCH 050/698] introduce FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig and FIX_1439_SPEEDUP_sum2_fx_mod , delete FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 - activate FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig which should be BE --- lib_com/prot_fx.h | 20 ++-- lib_com/swb_tbe_com_fx.c | 214 +++++++++++++++++++++++++++++++++------ lib_com/tools_fx.c | 18 +++- lib_enc/swb_tbe_enc_fx.c | 12 --- 4 files changed, 205 insertions(+), 59 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index e3d0668a1..567545b60 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -62,7 +62,13 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +//#define FIX_1439_SPEEDUP_sum2_fx_mod // 3liner // 0.25 WMOPS + +// Numbers ALL: 83,2 +// Numbers beOnly: 86,162 +// NUmbers none: 88,183 + /*----------------------------------------------------------------------------------* * Prototypes of global macros @@ -3262,17 +3268,6 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 -void elliptic_bpf_48k_generic_fx( - const Word16* input_fx, /* i : i signal Q_input_fx */ - Word16 *Q_input_fx, - Word16 output_fx[], /* o : output signal */ - Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ - Word16 memory_fx_Q[], - const Word16 full_band_bpf[][5], /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ - const Word32 *output32_fx, - const Word16 *scale_output32_fx); -#else void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : i signal Q_input_fx */ Word16 *Q_input_fx, @@ -3281,7 +3276,6 @@ void elliptic_bpf_48k_generic_fx( Word16 memory_fx_Q[], const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ); -#endif void synthesise_fb_high_band_fx( const Word16 excitation_in[], /* i : full band excitation */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1dbe841a3..a0ae3dd10 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6694,8 +6694,6 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 -#else void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -6704,12 +6702,12 @@ void elliptic_bpf_48k_generic_fx( Word16 memory_fx_Q[], const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ) -#endif { Word16 i, j; Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; + Word32 L_output[L_FRAME48k]; FOR( i = 0; i < 4; i++ ) { @@ -6769,36 +6767,190 @@ void elliptic_bpf_48k_generic_fx( L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 - FOR( i = 4; i < L_FRAME48k; i++ ) +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { Word64 W_tmpX; Word64 W_tmpY; + i = 4; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); + i++; + + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + FOR( ; i < L_FRAME48k / 3; ) + { + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //2 + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); // 3 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //4 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //5 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); // 3 + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //4 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //5 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //4 + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //5 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //7 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } } + ELSE #else - FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + } + } +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + { + i = 4; + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //1 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + FOR( ; i < L_FRAME48k / 3; ) + { + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //4 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //8 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } } + ELSE +#else + { + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } + } +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ #endif @@ -6857,6 +7009,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 4; i < L_FRAME48k; i++ ) { Word64 W_tmpX; @@ -6874,7 +7027,8 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } -#else + +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6889,7 +7043,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } -#endif +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -7025,11 +7179,14 @@ void elliptic_bpf_48k_generic_fx( move16(); move16(); Q_temp2 = norm_l( L_tmpMax ); - Scale_sig32( L_output, 960, Q_temp2 ); - FOR( i = 0; i < 960; i++ ) + { - output_fx[i] = extract_h( L_output[i] ); - move16(); + Scale_sig32( L_output, 960, Q_temp2 ); + FOR( i = 0; i < 960; i++ ) + { + output_fx[i] = extract_h( L_output[i] ); + move16(); + } } *Q_input_fx = sub( add( add( *Q_input_fx, Q_temp ), Q_temp2 ), 15 ); move16(); /* BASOP_NOGLOB */ @@ -7066,11 +7223,11 @@ void synthesise_fb_high_band_fx( { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; - Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; + Word16 tmp[L_FRAME48k]; push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" ); /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ @@ -7092,20 +7249,12 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, NULL, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx, tmp32, scale_tmp32 ); -#else elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); -#endif } ELSE { /* for 12.8kHz ACELP core */ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, NULL, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx, tmp32, scale_tmp32 ); -#else elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); -#endif } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ @@ -7113,7 +7262,6 @@ void synthesise_fb_high_band_fx( push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); temp1 = sum2_fx_mod( tmp, L_FRAME48k ); - L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ exp = norm_l( L_tmp ); tmp3 = extract_h( L_shl( L_tmp, exp ) ); diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 5219d076c..23c2accb2 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -446,6 +446,21 @@ Word32 sum2_fx_mod( /* o : sum of all squared vector element const Word16 lvec /* i : length of input vector */ ) { +#ifdef FIX_1439_SPEEDUP_sum2_fx_mod + Word16 i; + Word64 W_tmp; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + W_tmp = W_add(0, 0 ); + FOR( i = 0; i < lvec; i++ ) + { + W_tmp = W_mac_16_16( W_tmp, vec[i], vec[i] ); + } + return W_sat_l(W_shr(W_tmp, 9)); +#else Word16 i; Word32 L_tmp; #ifdef BASOP_NOGLOB_DECLARE_LOCAL @@ -458,8 +473,9 @@ Word32 sum2_fx_mod( /* o : sum of all squared vector element { L_tmp = L_add_o( L_tmp, L_shr( L_mult_o( vec[i], vec[i], &Overflow ), 9 ), &Overflow ); } - return L_tmp; +#endif + } /*-------------------------------------------------------------------* * Copy: diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 5d860c96f..6d4761c2f 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7324,11 +7324,7 @@ void fb_tbe_enc_fx( exp_temp = sub( exp_temp, 1 ); Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx, NULL, NULL ); -#else elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -#endif Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7452,19 +7448,11 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx, NULL, NULL ); -#else elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -#endif } ELSE { -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_OUT32 - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx, NULL, NULL ); -#else elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -#endif } test(); -- GitLab From 15247b5509c25c3e30b44bd9b8a797dbe87c8f1b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 11:35:58 +0100 Subject: [PATCH 051/698] apply clang format patch --- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 6 ++---- lib_com/tools_fx.c | 5 ++--- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 29ca3986d..4151de02e 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -62,7 +62,7 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS //#define FIX_1439_SPEEDUP_sum2_fx_mod // 3liner // 0.25 WMOPS // Numbers ALL: 83,2 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a0ae3dd10..0c7e1befc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -19,7 +19,6 @@ #define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ - /*-----------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------*/ @@ -6954,7 +6953,7 @@ void elliptic_bpf_48k_generic_fx( #endif - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; @@ -7028,7 +7027,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7255,7 +7254,6 @@ void synthesise_fb_high_band_fx( { /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); - } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 23c2accb2..7ffc10700 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -454,12 +454,12 @@ Word32 sum2_fx_mod( /* o : sum of all squared vector element move32(); #endif - W_tmp = W_add(0, 0 ); + W_tmp = W_add( 0, 0 ); FOR( i = 0; i < lvec; i++ ) { W_tmp = W_mac_16_16( W_tmp, vec[i], vec[i] ); } - return W_sat_l(W_shr(W_tmp, 9)); + return W_sat_l( W_shr( W_tmp, 9 ) ); #else Word16 i; Word32 L_tmp; @@ -475,7 +475,6 @@ Word32 sum2_fx_mod( /* o : sum of all squared vector element } return L_tmp; #endif - } /*-------------------------------------------------------------------* * Copy: -- GitLab From d9be131549ca6401e0183bde59701f8c61605f29 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 11:39:18 +0100 Subject: [PATCH 052/698] one instruction less in FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 0c7e1befc..1b61b2bb8 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6896,7 +6896,7 @@ void elliptic_bpf_48k_generic_fx( FOR( ; i < L_FRAME48k / 3; ) { // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -- GitLab From e8ff93c5c166e7c3ad888d8d3d5f3064c5615a21 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 11:41:22 +0100 Subject: [PATCH 053/698] apply clang format patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1b61b2bb8..b5a658136 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6896,7 +6896,7 @@ void elliptic_bpf_48k_generic_fx( FOR( ; i < L_FRAME48k / 3; ) { // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -- GitLab From b5f196f20774a9426f7107654c76857cf7b787a6 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 11:57:41 +0100 Subject: [PATCH 054/698] deactivated all speedups --- lib_com/prot_fx.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 4151de02e..d57f93d91 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -62,11 +62,11 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS //#define FIX_1439_SPEEDUP_sum2_fx_mod // 3liner // 0.25 WMOPS // Numbers ALL: 83,2 -// Numbers beOnly: 86,162 +// Numbers beOnly: 86,156 // NUmbers none: 88,183 -- GitLab From d64e1fa0fd98594c6fe4a99c5f016da8d1a3d80d Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 11:09:24 +0000 Subject: [PATCH 055/698] del macro FIX_1439_SPEEDUP_sum2_fx_mod --- lib_com/prot_fx.h | 3 +-- lib_com/swb_tbe_com_fx.c | 3 --- lib_com/tools_fx.c | 17 +---------------- lib_enc/swb_tbe_enc_fx.c | 1 + 4 files changed, 3 insertions(+), 21 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index d57f93d91..b64de07f8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -63,9 +63,8 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS -//#define FIX_1439_SPEEDUP_sum2_fx_mod // 3liner // 0.25 WMOPS -// Numbers ALL: 83,2 +// Numbers ALL: 83,45 // Numbers beOnly: 86,156 // NUmbers none: 88,183 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index b5a658136..e2221a33c 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7178,14 +7178,11 @@ void elliptic_bpf_48k_generic_fx( move16(); move16(); Q_temp2 = norm_l( L_tmpMax ); - - { Scale_sig32( L_output, 960, Q_temp2 ); FOR( i = 0; i < 960; i++ ) { output_fx[i] = extract_h( L_output[i] ); move16(); - } } *Q_input_fx = sub( add( add( *Q_input_fx, Q_temp ), Q_temp2 ), 15 ); move16(); /* BASOP_NOGLOB */ diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 7ffc10700..5219d076c 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -446,21 +446,6 @@ Word32 sum2_fx_mod( /* o : sum of all squared vector element const Word16 lvec /* i : length of input vector */ ) { -#ifdef FIX_1439_SPEEDUP_sum2_fx_mod - Word16 i; - Word64 W_tmp; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - W_tmp = W_add( 0, 0 ); - FOR( i = 0; i < lvec; i++ ) - { - W_tmp = W_mac_16_16( W_tmp, vec[i], vec[i] ); - } - return W_sat_l( W_shr( W_tmp, 9 ) ); -#else Word16 i; Word32 L_tmp; #ifdef BASOP_NOGLOB_DECLARE_LOCAL @@ -473,8 +458,8 @@ Word32 sum2_fx_mod( /* o : sum of all squared vector element { L_tmp = L_add_o( L_tmp, L_shr( L_mult_o( vec[i], vec[i], &Overflow ), 9 ), &Overflow ); } + return L_tmp; -#endif } /*-------------------------------------------------------------------* * Copy: diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 542eee644..c5d5e651e 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7324,6 +7324,7 @@ void fb_tbe_enc_fx( exp_temp = sub( exp_temp, 1 ); Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; -- GitLab From 7ba6c5a392d1f689a24ede6adabc91872876e7ed Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 12:11:27 +0100 Subject: [PATCH 056/698] apply clang format patch --- lib_com/swb_tbe_com_fx.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e2221a33c..6dda9a39f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7178,11 +7178,11 @@ void elliptic_bpf_48k_generic_fx( move16(); move16(); Q_temp2 = norm_l( L_tmpMax ); - Scale_sig32( L_output, 960, Q_temp2 ); - FOR( i = 0; i < 960; i++ ) - { - output_fx[i] = extract_h( L_output[i] ); - move16(); + Scale_sig32( L_output, 960, Q_temp2 ); + FOR( i = 0; i < 960; i++ ) + { + output_fx[i] = extract_h( L_output[i] ); + move16(); } *Q_input_fx = sub( add( add( *Q_input_fx, Q_temp ), Q_temp2 ), 15 ); move16(); /* BASOP_NOGLOB */ -- GitLab From ad8bba9cfa444272263390af7345b25b115ffad4 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 12:30:58 +0100 Subject: [PATCH 057/698] delete FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig --- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 184 ++++----------------------------------- 2 files changed, 16 insertions(+), 170 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index b64de07f8..8a282fac6 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -62,7 +62,7 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS - deleted completely // Numbers ALL: 83,45 // Numbers beOnly: 86,156 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 6dda9a39f..b2a414afe 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6766,194 +6766,40 @@ void elliptic_bpf_48k_generic_fx( L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + FOR( i = 4; i < L_FRAME48k; i++ ) { Word64 W_tmpX; Word64 W_tmpY; - i = 4; - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); - i++; - - FOR( ; i < L_FRAME48k / 3; ) - { - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //2 - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); // 3 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //4 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //5 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); // 3 - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //4 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //5 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //4 - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //5 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //7 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } } - ELSE -#else - { - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - } - } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ #else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) - { - i = 4; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //1 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - i++; - - FOR( ; i < L_FRAME48k / 3; ) - { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //4 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //8 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } - } - ELSE -#else - { - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ #endif - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; -- GitLab From eaa539013d7c11e202990bb7fad44a7322a70fad Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 12:34:52 +0100 Subject: [PATCH 058/698] follow-up: apply clang format patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index b2a414afe..9a54a26f6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6782,7 +6782,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); } -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 82e1f8758cacf2127fd0509672fd3bf5897850cd Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 12:42:39 +0100 Subject: [PATCH 059/698] delete FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1, STAGE2 and STAGE 3 completely --- lib_com/prot_fx.h | 6 ++-- lib_com/swb_tbe_com_fx.c | 68 ++-------------------------------------- 2 files changed, 6 insertions(+), 68 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 8a282fac6..48232000a 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,9 +59,9 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //deleted completely +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //deleted completely +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //deleted completely //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS - deleted completely // Numbers ALL: 83,45 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 9a54a26f6..f2b850533 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6765,24 +6765,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - } -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6796,8 +6779,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } -#endif - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -6853,27 +6834,6 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 - - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } - -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6888,7 +6848,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ + Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -6957,29 +6917,7 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } -#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -6997,7 +6935,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -#endif + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; -- GitLab From 00f17224f34a586a272a98c13c2cad6b3d645336 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 11:52:15 +0000 Subject: [PATCH 060/698] del all changes --- lib_com/prot_fx.h | 9 ------ lib_com/swb_tbe_com_fx.c | 19 +++--------- lib_dec/ivas_core_dec_fx.c | 62 +++++++------------------------------- lib_dec/ivas_jbm_dec_fx.c | 20 ++---------- lib_dec/swb_tbe_dec_fx.c | 2 -- 5 files changed, 18 insertions(+), 94 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 48232000a..851b461bf 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,15 +59,6 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //deleted completely -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //deleted completely -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //deleted completely -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS - deleted completely - -// Numbers ALL: 83,45 -// Numbers beOnly: 86,156 -// NUmbers none: 88,183 - /*----------------------------------------------------------------------------------* * Prototypes of global macros diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index f2b850533..2a2841966 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -18,7 +18,6 @@ #define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ #define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ - /*-----------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------*/ @@ -6693,6 +6692,7 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ + void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -6704,9 +6704,8 @@ void elliptic_bpf_48k_generic_fx( { Word16 i, j; Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; - Word32 L_output[L_FRAME48k]; FOR( i = 0; i < 4; i++ ) { @@ -6722,7 +6721,6 @@ void elliptic_bpf_48k_generic_fx( move32(); } - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6765,7 +6763,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6833,7 +6830,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6935,7 +6931,6 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -7003,13 +6998,12 @@ void synthesise_fb_high_band_fx( { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; + Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; - Word16 tmp[L_FRAME48k]; - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" ); /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7025,7 +7019,6 @@ void synthesise_fb_high_band_fx( } exp_tmp = sub( Q_fb_exc, 2 ); - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" ); IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ @@ -7036,11 +7029,8 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ - - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); temp1 = sum2_fx_mod( tmp, L_FRAME48k ); + L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ exp = norm_l( L_tmp ); tmp3 = extract_h( L_shl( L_tmp, exp ) ); @@ -7095,7 +7085,6 @@ void synthesise_fb_high_band_fx( move16(); } } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; } diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index c0686bdfd..588640d0a 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -114,12 +114,12 @@ ivas_error ivas_core_dec_fx( error = IVAS_ERR_OK; move32(); - push_wmops( "ivas_core_dec (ICD)" ); + push_wmops( "ivas_core_dec" ); /*------------------------------------------------------------------* * General initialization *-----------------------------------------------------------------*/ - push_wmops( "ICD init" ); + use_cldfb_for_dft = 0; move16(); tdm_LRTD_flag = -1; @@ -368,9 +368,7 @@ ivas_error ivas_core_dec_fx( { save_hb_synth_32_fx = NULL; } - pop_wmops(); /*push_wmops( "ICD init" );*/ - push_wmops( "ICD SID, sanity" ); /*------------------------------------------------------------------* * Decode SID for MDCT-Stereo DTX mode *-----------------------------------------------------------------*/ @@ -398,9 +396,7 @@ ivas_error ivas_core_dec_fx( { ivas_combined_format_brate_sanity_fx( element_brate, sts[0]->core, sts[0]->total_brate, &( sts[0]->core_brate ), &( sts[0]->inactive_coder_type_flag ), &tmps ); } - pop_wmops(); /*push_wmops( "ICD SID, sanity" );*/ - push_wmops( "ICD Coredec" ); /*------------------------------------------------------------------* * Core Decoding *-----------------------------------------------------------------*/ @@ -485,7 +481,6 @@ ivas_error ivas_core_dec_fx( IF( st->core == ACELP_CORE ) { - push_wmops( "ICD ACELP" ); /* ACELP core decoder */ Word16 old_syn_12k8_16k_fx_16[L_FRAME16k]; Word16 save_hb_synth_fx_arr[L_FRAME48k], *save_hb_synth_16_fx; @@ -558,7 +553,6 @@ ivas_error ivas_core_dec_fx( } Copy_Scale_sig_16_32_DEPREC( old_syn_12k8_16k_fx_16, old_syn_12k8_16k_fx[n], L_FRAME16k, Q11 - ( -Q1 ) ); // Q(11 - (-1)) - pop_wmops(); /*push_wmops( "ICD ACELP" );*/ } Copy_Scale_sig_32_16( st->previoussynth_fx_32, st->previoussynth_fx, L_FRAME48k, 0 ); // Q0 @@ -567,7 +561,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( EQ_16( st->core, TCX_20_CORE ) || EQ_16( st->core, TCX_10_CORE ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { - push_wmops( "ICD TCX" ); Word16 Qsyn_temp; IVAS_FORMAT ivas_format; @@ -622,12 +615,10 @@ ivas_error ivas_core_dec_fx( } st->hBPF->pst_mem_deemp_err_fx = extract_l( st->mem_error ); move16(); - pop_wmops(); /*push_wmops( "ICD TCX" );*/ } IF( EQ_16( st->core, HQ_CORE ) ) { - push_wmops( "ICD HQ decoding" ); /* HQ core decoder */ Word16 Q_output; @@ -641,7 +632,6 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_output ) ); // Q11 Scale_sig( synth_16_fx[n], output_frame, negate( Q_synth ) ); // Q0 Scale_sig( output_16_fx[n], L_FRAME48k, negate( Q_output ) ); // Q0 - pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ } /*---------------------------------------------------------------------* @@ -658,8 +648,8 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[0]->old_pitch_buf_16_fx, hCPE->hCoreCoder[0]->old_pitch_buf_fx, add( imult1616( 2, NB_SUBFR16k ), 2 ), Q10 ); // Q16 } - } /* n_channels loop */ - pop_wmops(); /*push_wmops( "ICD Coredec" );*/ + } /* n_channels loop */ + /*---------------------------------------------------------------------* * MDCT stereo: joint TCX Core Decoding @@ -667,7 +657,6 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( sts[0]->element_mode, IVAS_CPE_MDCT ) ) { - push_wmops( "ICD jTCX Coredec" ); /* active-frame decoding */ IF( GT_32( sts[0]->core_brate, SID_2k40 ) ) { @@ -796,7 +785,6 @@ ivas_error ivas_core_dec_fx( } } } - pop_wmops(); /*push_wmops( "ICD jTCX Coredec" );*/ } /*---------------------------------------------------------------------* @@ -806,7 +794,6 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( sts[0]->element_mode, IVAS_CPE_TD ) && hStereoCng != NULL ) { - push_wmops( "ICD Stereo CNG Updates" ); /* To be cleaned up once the caller function is converted // These changes are for system testing of fixed changes made */ Word16 Q_c_PS_LT, Q_output; Word32 c_PS_LT_fx; @@ -822,14 +809,12 @@ ivas_error ivas_core_dec_fx( stereo_cng_compute_PScorr_fx( output_32_fx[0], output_32_fx[1], &Q_output, &c_PS_LT_fx, Q_c_PS_LT, sts[0]->L_frame, sts[1]->L_frame ); hStereoCng->c_PS_LT_fx = extract_h( c_PS_LT_fx ); - pop_wmops(); /*push_wmops( "ICD Stereo CNG Updates" );*/ } /*---------------------------------------------------------------------* * Postprocessing, BWEs and updates *---------------------------------------------------------------------*/ - push_wmops( "ICD Postproc, BWE, updates (ICD PP)" ); FOR( n = 0; n < n_channels; n++ ) { st = sts[n]; @@ -840,7 +825,6 @@ ivas_error ivas_core_dec_fx( * TD-BWE for ACELP to TCX transitions *---------------------------------------------------------------------*/ - push_wmops( "ICD PP TDBWE ACELPTCX trans" ); /*core_switching_post_dec*/ Q_synth = sub( 15, e_sig[0] ); @@ -914,12 +898,11 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->mem_resamp_HB_fx_32, INTERP_3_1_MEM_LEN, sub( Q11, hBWE_TD->prev_Qx ) ); // Q11 Copy( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->state_32and48k_WB_upsample_fx, ( 2 * ALLPASSSECTIONS_STEEP ) ); } - pop_wmops(); /*push_wmops( "ICD PP TDBWE ACELPTCX trans" );*/ /*---------------------------------------------------------------------* * Postprocessing for ACELP/MDCT core switching *---------------------------------------------------------------------*/ - push_wmops( "ICD PP ACELP/MDCT switch" ); + /* save synth and output in case of SBA DirAC stereo output as core switching is done outside of core decoder */ test(); test(); @@ -954,12 +937,11 @@ ivas_error ivas_core_dec_fx( { Copy( sts[0]->previoussynth_fx, sts[1]->previoussynth_fx, st->hTcxDec->L_frameTCX ); } - pop_wmops(); /*push_wmops( "ICD PP ACELP/MDCT switch" );*/ /*---------------------------------------------------------------------* * Pre-processing for bandwidth switching *---------------------------------------------------------------------*/ - push_wmops( "ICD PP BWswitch preproc" ); + ivas_bw_switching_pre_proc_fx( st, last_element_brate, nchan_out, old_syn_12k8_16k_fx[n], old_syn_fx, q_audio ); IF( st->hHQ_core == NULL ) @@ -1006,13 +988,12 @@ ivas_error ivas_core_dec_fx( hBWE_FD->prev_flag = hBWE_FD->prev_flag; move16(); } - pop_wmops(); /*push_wmops( "ICD PP BWswitch preproc" );*/ /*---------------------------------------------------------------------* * WB TBE decoding * WB BWE decoding *---------------------------------------------------------------------*/ - push_wmops( "ICD PP TBE/BWE" ); + Word16 Q_input, Q_hb_synth_fx, Q_synth_fx; Word16 Q_syn_hb, sf; @@ -1040,9 +1021,8 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( st->extl, WB_TBE ) ) { /* WB TBE decoder */ - push_wmops( "ICD PP TBE/BWE wb_tbe_dec" ); + ivas_wb_tbe_dec_fx( st, st->coder_type, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], hb_synth_16_fx[n], &Q_hb_synth_fx ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_tbe_dec" );*/ } ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( n, 1 ) && !tdm_LRTD_flag && NE_16( st->extl, -1 ) && st->bws_cnt == 0 && st->extl_brate == 0 ) { @@ -1050,10 +1030,8 @@ ivas_error ivas_core_dec_fx( } ELSE IF( EQ_16( st->extl, WB_BWE ) && st->bws_cnt == 0 ) { - push_wmops( "ICD PP TBE/BWE wb_bwe_dec" ); /* WB BWE decoder */ Q_hb_synth_fx = ivas_wb_bwe_dec_fx( st, output_16_fx[n], synth_16_fx[n], hb_synth_16_fx[n], use_cldfb_for_dft, output_frame, voice_factors_fx[n], pitch_buf_fx[n], &Q_synth_fx ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_bwe_dec" );*/ } /* Memories Re-Scaling */ @@ -1097,10 +1075,8 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, FB_TBE ) || ( NE_16( st->coder_type, AUDIO ) && NE_16( st->coder_type, INACTIVE ) && GE_32( st->core_brate, SID_2k40 ) && EQ_16( st->core, ACELP_CORE ) && !st->con_tcx && GE_32( output_Fs, 32000 ) && GT_16( st->bwidth, NB ) && st->bws_cnt > 0 ) ) { - push_wmops( "ICD PP TBE/BWE swb_tbe_dec" ); /* SWB TBE decoder */ ivas_swb_tbe_dec_fx( st, hStereoICBWE, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], old_syn_12k8_16k_fx[n], tmp_buffer_fx /*fb_exc*/, hb_synth_32_fx[n], pitch_buf_fx[n], &Q_white_exc ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec" );*/ Copy_Scale_sig_16_32_no_sat( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap_fx_32, L_SHB_LAHEAD, sub( Q11, hBWE_TD->prev_Q_bwe_syn2 ) ); // Q11 Copy_Scale_sig_32_16( hBWE_TD->old_tbe_synth_fx_32, hBWE_TD->old_tbe_synth_fx, L_SHB_TRANSITION_LENGTH, sub( hBWE_TD->prev_Qx, Q11 ) ); // prev_Qx @@ -1115,22 +1091,18 @@ ivas_error ivas_core_dec_fx( /* FB TBE decoder */ IF( EQ_16( st->extl, FB_TBE ) ) { - push_wmops( "ICD PP TBE/BWE fb_tbe_dec" ); fb_tbe_dec_ivas_fx( st, tmp_buffer_fx /*fb_exc*/, Q_white_exc, hb_synth_32_fx[n], 0, tmp_buffer_fx /*fb_synth_ref*/, Q_white_exc, output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE fb_tbe_dec" );*/ } } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) || ( GE_32( output_Fs, 32000 ) && st->core == ACELP_CORE && st->bwidth > NB && st->bws_cnt > 0 && !st->ppp_mode_dec && !( EQ_16( st->nelp_mode_dec, 1 ) && EQ_16( st->bfi, 1 ) ) ) ) { /* SWB BWE decoder */ - push_wmops( "ICD PP TBE/BWE swb_bwe_dec" ); Q_syn_hb = swb_bwe_dec_fx32( st, output_32_fx[n], synth_32_fx[n], hb_synth_32_fx[n], use_cldfb_for_dft, output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ + Scale_sig32( hb_synth_32_fx[n], output_frame, sub( Q11, Q_syn_hb ) ); // Q11 Copy_Scale_sig_32_16( hBWE_FD->L_old_wtda_swb_fx32, hBWE_FD->L_old_wtda_swb_fx, output_frame, sub( hBWE_FD->old_wtda_swb_fx_exp, Q11 ) ); // old_wtda_swb_fx_exp } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE" );*/ /*---------------------------------------------------------------------* * FEC - recovery after lost HQ core (smoothing of the BWE component) @@ -1169,7 +1141,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( GE_16( output_frame, L_FRAME32k ) && st->hTdCngDec != NULL ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && GE_16( st->bwidth, SWB ) && st->hTdCngDec != NULL ) ) { - push_wmops( "ICD PP SWB CNG" ); /* SHB CNG decoder */ Word16 synth_fxl[960]; /* Q-2 */ Word16 q; @@ -1191,7 +1162,6 @@ ivas_error ivas_core_dec_fx( Scale_sig( hBWE_TD->state_lpc_syn_fx, LPC_SHB_ORDER, negate( sub( Q8, hBWE_TD->prev_Q_bwe_syn ) ) ); // Q0 Copy_Scale_sig_16_32_no_sat( hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, 2 * ALLPASSSECTIONS_STEEP, negate( sub( hBWE_TD->prev_Q_bwe_syn2, Q11 ) ) ); - pop_wmops(); /* push_wmops( "ICD PP SWB CNG" );*/ } /*-------------------------------------------------------------------* @@ -1201,7 +1171,6 @@ ivas_error ivas_core_dec_fx( test(); IF( n == 0 && GE_16( st->element_mode, IVAS_CPE_DFT ) ) { - push_wmops( "ICD PP IC-BWE" ); Word16 q; q = 11; move16(); @@ -1223,12 +1192,10 @@ ivas_error ivas_core_dec_fx( Scale_sig32( hb_synth_32_fx[0], output_frame, sub( Q11, q ) ); // Q11 Scale_sig32( hb_synth_32_fx[1], output_frame, sub( Q11, q ) ); // Q11 } - pop_wmops(); /*push_wmops( "ICD PP IC-BWE" );*/ } IF( EQ_16( st->element_mode, EVS_MONO ) ) { - push_wmops( "ICD PP BFI" ); /*----------------------------------------------------------------* * BFI waveform adjustment *----------------------------------------------------------------*/ @@ -1256,7 +1223,6 @@ ivas_error ivas_core_dec_fx( st->hPlcInfo->Pitch_fx = 0; move16(); } - pop_wmops(); /*push_wmops( "ICD PP BFI" );*/ } /*----------------------------------------------------------------* @@ -1269,7 +1235,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( NE_16( st->extl, -1 ) && ( NE_16( st->extl, IGF_BWE ) || st->last_core == ACELP_CORE ) ) || ( st->bws_cnt > 0 && st->core == ACELP_CORE ) ) { - push_wmops( "ICD PP Sync BWE" ); /* Calculate an additional delay of extension layer components to be synchronized with ACELP synthesis */ IF( EQ_16( st->L_frame, L_FRAME ) ) { @@ -1423,7 +1388,6 @@ ivas_error ivas_core_dec_fx( st->hTdCngDec->last_shb_ener_fx_32 = L_shl_sat( L_tmp, sub( exp, 20 ) ); /*Q11*/ move32(); } - pop_wmops(); /*push_wmops( "ICD PP Sync BWE" );*/ } test(); @@ -1439,7 +1403,7 @@ ivas_error ivas_core_dec_fx( * - core switching in DFT stereo * - updates for potential TD->DFT stereo switching *----------------------------------------------------------------*/ - push_wmops( "ICD PP TCXLTP" ); + IF( st->hHQ_core != NULL ) { Copy_Scale_sig_16_32_no_sat( st->hHQ_core->old_out_LB_fx, st->hHQ_core->old_out_LB_fx32, L_FRAME32k, sub( Q11, st->hHQ_core->Q_old_wtda_LB ) ); // Q11 @@ -1496,7 +1460,6 @@ ivas_error ivas_core_dec_fx( } Copy32( synth_32_fx[n], output_32_fx[n], output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TCXLTP" );*/ /*--------------------------------------------------------* * Common updates @@ -1505,7 +1468,6 @@ ivas_error ivas_core_dec_fx( Word16 exp_max; Word32 output_fx_loc[L_FRAME48k]; - push_wmops( "ICD PP commonupdates" ); exp_max = 0; move16(); @@ -1560,8 +1522,6 @@ ivas_error ivas_core_dec_fx( Scale_sig( st->delay_buf_out_fx, NS2SA_FX2( st->output_Fs, DELAY_CLDFB_NS ), negate( exp_max ) ); // Q0 - pop_wmops(); /*push_wmops( "ICD PP commonupdates" );*/ - } /* n_channels loop */ FOR( n = 0; n < n_channels; n++ ) @@ -1580,7 +1540,7 @@ ivas_error ivas_core_dec_fx( move16(); } } - pop_wmops(); /*push_wmops( "ICD Postproc, BWE, updates (ICD PP)" );*/ + pop_wmops(); return error; } diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 4745bc5f0..93e8bb4eb 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -96,13 +96,12 @@ ivas_error ivas_jbm_dec_tc_fx( CPE_DEC_HANDLE hCPE; SCE_DEC_HANDLE hSCE; - push_wmops( "ivas_jbm_dec_tc (JBM)" ); + push_wmops( "ivas_jbm_dec_tc" ); /*----------------------------------------------------------------* * Initialization of local vars after struct has been set *----------------------------------------------------------------*/ - push_wmops( "JBM init" ); output_Fs = st_ivas->hDecoderConfig->output_Fs; move32(); nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; @@ -135,7 +134,7 @@ ivas_error ivas_jbm_dec_tc_fx( } Word16 ch; - pop_wmops(); /*push_wmops( "JBM init" );*/ + /*----------------------------------------------------------------* * Decoding + pre-rendering @@ -153,7 +152,6 @@ ivas_error ivas_jbm_dec_tc_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) { - push_wmops( "JBM STEREO" ); st_ivas->hCPE[0]->element_brate = ivas_total_brate; move32(); Word16 q_output = 11; @@ -194,11 +192,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 } } - pop_wmops(); /*push_wmops( "JBM STEREO" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { - push_wmops( "JBM ISM" ); /* Metadata decoding and configuration */ test(); IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) @@ -283,11 +279,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops(); /*push_wmops( "JBM ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { - push_wmops( "JBM SBA/MASA" ); set16_fx( nb_bits_metadata, 0, MAX_SCE ); @@ -694,11 +688,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops(); /*push_wmops( "JBM SBA/MASA" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { - push_wmops( "JBM MASA_ISM" ); Word16 nchan_ism, nchan_transport_ism; Word16 dirac_bs_md_write_idx; @@ -829,11 +821,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[n], output_frame, sub( Q11, output_q ) ); // Q11 } } - pop_wmops(); /*push_wmops( "JBM MASA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { - push_wmops( "JBM SBA_ISM" ); Word16 nchan_ism, sba_ch_idx; set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); @@ -1102,11 +1092,10 @@ ivas_error ivas_jbm_dec_tc_fx( v_add_32( p_output_fx[n], p_output_fx[n + s_max( nchan_out, nchan_ism )], p_output_fx[n], output_frame ); } } - pop_wmops(); /*push_wmops( "JBM SBA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) { - push_wmops( "JBM MC" ); + // st = (st_ivas->nSCE > 0) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; IF( st_ivas->nSCE > 0 ) { @@ -1479,7 +1468,6 @@ ivas_error ivas_jbm_dec_tc_fx( ivas_mono_stereo_downmix_mcmasa_fx( st_ivas, p_output_fx, output_frame ); } } - pop_wmops(); /*push_wmops( "JBM MC" );*/ } /*----------------------------------------------------------------* @@ -1488,9 +1476,7 @@ ivas_error ivas_jbm_dec_tc_fx( IF( EQ_16( st_ivas->hDecoderConfig->Opt_tsm, 1 ) ) { - push_wmops( "JBM syn_out" ); ivas_syn_output_f_fx( p_output_fx, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data_fx ); - pop_wmops(); /*push_wmops( "JBM syn_out" );*/ } ELSE { diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 1e7af58c8..1b51a29fb 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4713,9 +4713,7 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - push_wmops( "synthesise_fb_high_band" ); synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); - pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) -- GitLab From f320213c7f16efabac023d217a03a4220cd18683 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 14:10:06 +0100 Subject: [PATCH 061/698] Revert "del all changes" This reverts commit 00f17224f34a586a272a98c13c2cad6b3d645336. --- lib_com/prot_fx.h | 9 ++++++ lib_com/swb_tbe_com_fx.c | 19 +++++++++--- lib_dec/ivas_core_dec_fx.c | 62 +++++++++++++++++++++++++++++++------- lib_dec/ivas_jbm_dec_fx.c | 20 ++++++++++-- lib_dec/swb_tbe_dec_fx.c | 2 ++ 5 files changed, 94 insertions(+), 18 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 851b461bf..48232000a 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,6 +59,15 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //deleted completely +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //deleted completely +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //deleted completely +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS - deleted completely + +// Numbers ALL: 83,45 +// Numbers beOnly: 86,156 +// NUmbers none: 88,183 + /*----------------------------------------------------------------------------------* * Prototypes of global macros diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2a2841966..f2b850533 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -18,6 +18,7 @@ #define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ #define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ + /*-----------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------*/ @@ -6692,7 +6693,6 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ - void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -6704,8 +6704,9 @@ void elliptic_bpf_48k_generic_fx( { Word16 i, j; Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; + Word32 L_output[L_FRAME48k]; FOR( i = 0; i < 4; i++ ) { @@ -6721,6 +6722,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6763,6 +6765,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6830,6 +6833,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6931,6 +6935,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -6998,12 +7003,13 @@ void synthesise_fb_high_band_fx( { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; - Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; + Word16 tmp[L_FRAME48k]; + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" ); /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7019,6 +7025,7 @@ void synthesise_fb_high_band_fx( } exp_tmp = sub( Q_fb_exc, 2 ); + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" ); IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ @@ -7029,8 +7036,11 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } - temp1 = sum2_fx_mod( tmp, L_FRAME48k ); + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); + temp1 = sum2_fx_mod( tmp, L_FRAME48k ); L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ exp = norm_l( L_tmp ); tmp3 = extract_h( L_shl( L_tmp, exp ) ); @@ -7085,6 +7095,7 @@ void synthesise_fb_high_band_fx( move16(); } } + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; } diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index 588640d0a..c0686bdfd 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -114,12 +114,12 @@ ivas_error ivas_core_dec_fx( error = IVAS_ERR_OK; move32(); - push_wmops( "ivas_core_dec" ); + push_wmops( "ivas_core_dec (ICD)" ); /*------------------------------------------------------------------* * General initialization *-----------------------------------------------------------------*/ - + push_wmops( "ICD init" ); use_cldfb_for_dft = 0; move16(); tdm_LRTD_flag = -1; @@ -368,7 +368,9 @@ ivas_error ivas_core_dec_fx( { save_hb_synth_32_fx = NULL; } + pop_wmops(); /*push_wmops( "ICD init" );*/ + push_wmops( "ICD SID, sanity" ); /*------------------------------------------------------------------* * Decode SID for MDCT-Stereo DTX mode *-----------------------------------------------------------------*/ @@ -396,7 +398,9 @@ ivas_error ivas_core_dec_fx( { ivas_combined_format_brate_sanity_fx( element_brate, sts[0]->core, sts[0]->total_brate, &( sts[0]->core_brate ), &( sts[0]->inactive_coder_type_flag ), &tmps ); } + pop_wmops(); /*push_wmops( "ICD SID, sanity" );*/ + push_wmops( "ICD Coredec" ); /*------------------------------------------------------------------* * Core Decoding *-----------------------------------------------------------------*/ @@ -481,6 +485,7 @@ ivas_error ivas_core_dec_fx( IF( st->core == ACELP_CORE ) { + push_wmops( "ICD ACELP" ); /* ACELP core decoder */ Word16 old_syn_12k8_16k_fx_16[L_FRAME16k]; Word16 save_hb_synth_fx_arr[L_FRAME48k], *save_hb_synth_16_fx; @@ -553,6 +558,7 @@ ivas_error ivas_core_dec_fx( } Copy_Scale_sig_16_32_DEPREC( old_syn_12k8_16k_fx_16, old_syn_12k8_16k_fx[n], L_FRAME16k, Q11 - ( -Q1 ) ); // Q(11 - (-1)) + pop_wmops(); /*push_wmops( "ICD ACELP" );*/ } Copy_Scale_sig_32_16( st->previoussynth_fx_32, st->previoussynth_fx, L_FRAME48k, 0 ); // Q0 @@ -561,6 +567,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( EQ_16( st->core, TCX_20_CORE ) || EQ_16( st->core, TCX_10_CORE ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { + push_wmops( "ICD TCX" ); Word16 Qsyn_temp; IVAS_FORMAT ivas_format; @@ -615,10 +622,12 @@ ivas_error ivas_core_dec_fx( } st->hBPF->pst_mem_deemp_err_fx = extract_l( st->mem_error ); move16(); + pop_wmops(); /*push_wmops( "ICD TCX" );*/ } IF( EQ_16( st->core, HQ_CORE ) ) { + push_wmops( "ICD HQ decoding" ); /* HQ core decoder */ Word16 Q_output; @@ -632,6 +641,7 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_output ) ); // Q11 Scale_sig( synth_16_fx[n], output_frame, negate( Q_synth ) ); // Q0 Scale_sig( output_16_fx[n], L_FRAME48k, negate( Q_output ) ); // Q0 + pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ } /*---------------------------------------------------------------------* @@ -648,8 +658,8 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[0]->old_pitch_buf_16_fx, hCPE->hCoreCoder[0]->old_pitch_buf_fx, add( imult1616( 2, NB_SUBFR16k ), 2 ), Q10 ); // Q16 } - } /* n_channels loop */ - + } /* n_channels loop */ + pop_wmops(); /*push_wmops( "ICD Coredec" );*/ /*---------------------------------------------------------------------* * MDCT stereo: joint TCX Core Decoding @@ -657,6 +667,7 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( sts[0]->element_mode, IVAS_CPE_MDCT ) ) { + push_wmops( "ICD jTCX Coredec" ); /* active-frame decoding */ IF( GT_32( sts[0]->core_brate, SID_2k40 ) ) { @@ -785,6 +796,7 @@ ivas_error ivas_core_dec_fx( } } } + pop_wmops(); /*push_wmops( "ICD jTCX Coredec" );*/ } /*---------------------------------------------------------------------* @@ -794,6 +806,7 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( sts[0]->element_mode, IVAS_CPE_TD ) && hStereoCng != NULL ) { + push_wmops( "ICD Stereo CNG Updates" ); /* To be cleaned up once the caller function is converted // These changes are for system testing of fixed changes made */ Word16 Q_c_PS_LT, Q_output; Word32 c_PS_LT_fx; @@ -809,12 +822,14 @@ ivas_error ivas_core_dec_fx( stereo_cng_compute_PScorr_fx( output_32_fx[0], output_32_fx[1], &Q_output, &c_PS_LT_fx, Q_c_PS_LT, sts[0]->L_frame, sts[1]->L_frame ); hStereoCng->c_PS_LT_fx = extract_h( c_PS_LT_fx ); + pop_wmops(); /*push_wmops( "ICD Stereo CNG Updates" );*/ } /*---------------------------------------------------------------------* * Postprocessing, BWEs and updates *---------------------------------------------------------------------*/ + push_wmops( "ICD Postproc, BWE, updates (ICD PP)" ); FOR( n = 0; n < n_channels; n++ ) { st = sts[n]; @@ -825,6 +840,7 @@ ivas_error ivas_core_dec_fx( * TD-BWE for ACELP to TCX transitions *---------------------------------------------------------------------*/ + push_wmops( "ICD PP TDBWE ACELPTCX trans" ); /*core_switching_post_dec*/ Q_synth = sub( 15, e_sig[0] ); @@ -898,11 +914,12 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->mem_resamp_HB_fx_32, INTERP_3_1_MEM_LEN, sub( Q11, hBWE_TD->prev_Qx ) ); // Q11 Copy( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->state_32and48k_WB_upsample_fx, ( 2 * ALLPASSSECTIONS_STEEP ) ); } + pop_wmops(); /*push_wmops( "ICD PP TDBWE ACELPTCX trans" );*/ /*---------------------------------------------------------------------* * Postprocessing for ACELP/MDCT core switching *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP ACELP/MDCT switch" ); /* save synth and output in case of SBA DirAC stereo output as core switching is done outside of core decoder */ test(); test(); @@ -937,11 +954,12 @@ ivas_error ivas_core_dec_fx( { Copy( sts[0]->previoussynth_fx, sts[1]->previoussynth_fx, st->hTcxDec->L_frameTCX ); } + pop_wmops(); /*push_wmops( "ICD PP ACELP/MDCT switch" );*/ /*---------------------------------------------------------------------* * Pre-processing for bandwidth switching *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP BWswitch preproc" ); ivas_bw_switching_pre_proc_fx( st, last_element_brate, nchan_out, old_syn_12k8_16k_fx[n], old_syn_fx, q_audio ); IF( st->hHQ_core == NULL ) @@ -988,12 +1006,13 @@ ivas_error ivas_core_dec_fx( hBWE_FD->prev_flag = hBWE_FD->prev_flag; move16(); } + pop_wmops(); /*push_wmops( "ICD PP BWswitch preproc" );*/ /*---------------------------------------------------------------------* * WB TBE decoding * WB BWE decoding *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP TBE/BWE" ); Word16 Q_input, Q_hb_synth_fx, Q_synth_fx; Word16 Q_syn_hb, sf; @@ -1021,8 +1040,9 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( st->extl, WB_TBE ) ) { /* WB TBE decoder */ - + push_wmops( "ICD PP TBE/BWE wb_tbe_dec" ); ivas_wb_tbe_dec_fx( st, st->coder_type, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], hb_synth_16_fx[n], &Q_hb_synth_fx ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_tbe_dec" );*/ } ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( n, 1 ) && !tdm_LRTD_flag && NE_16( st->extl, -1 ) && st->bws_cnt == 0 && st->extl_brate == 0 ) { @@ -1030,8 +1050,10 @@ ivas_error ivas_core_dec_fx( } ELSE IF( EQ_16( st->extl, WB_BWE ) && st->bws_cnt == 0 ) { + push_wmops( "ICD PP TBE/BWE wb_bwe_dec" ); /* WB BWE decoder */ Q_hb_synth_fx = ivas_wb_bwe_dec_fx( st, output_16_fx[n], synth_16_fx[n], hb_synth_16_fx[n], use_cldfb_for_dft, output_frame, voice_factors_fx[n], pitch_buf_fx[n], &Q_synth_fx ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_bwe_dec" );*/ } /* Memories Re-Scaling */ @@ -1075,8 +1097,10 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, FB_TBE ) || ( NE_16( st->coder_type, AUDIO ) && NE_16( st->coder_type, INACTIVE ) && GE_32( st->core_brate, SID_2k40 ) && EQ_16( st->core, ACELP_CORE ) && !st->con_tcx && GE_32( output_Fs, 32000 ) && GT_16( st->bwidth, NB ) && st->bws_cnt > 0 ) ) { + push_wmops( "ICD PP TBE/BWE swb_tbe_dec" ); /* SWB TBE decoder */ ivas_swb_tbe_dec_fx( st, hStereoICBWE, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], old_syn_12k8_16k_fx[n], tmp_buffer_fx /*fb_exc*/, hb_synth_32_fx[n], pitch_buf_fx[n], &Q_white_exc ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec" );*/ Copy_Scale_sig_16_32_no_sat( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap_fx_32, L_SHB_LAHEAD, sub( Q11, hBWE_TD->prev_Q_bwe_syn2 ) ); // Q11 Copy_Scale_sig_32_16( hBWE_TD->old_tbe_synth_fx_32, hBWE_TD->old_tbe_synth_fx, L_SHB_TRANSITION_LENGTH, sub( hBWE_TD->prev_Qx, Q11 ) ); // prev_Qx @@ -1091,18 +1115,22 @@ ivas_error ivas_core_dec_fx( /* FB TBE decoder */ IF( EQ_16( st->extl, FB_TBE ) ) { + push_wmops( "ICD PP TBE/BWE fb_tbe_dec" ); fb_tbe_dec_ivas_fx( st, tmp_buffer_fx /*fb_exc*/, Q_white_exc, hb_synth_32_fx[n], 0, tmp_buffer_fx /*fb_synth_ref*/, Q_white_exc, output_frame ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE fb_tbe_dec" );*/ } } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) || ( GE_32( output_Fs, 32000 ) && st->core == ACELP_CORE && st->bwidth > NB && st->bws_cnt > 0 && !st->ppp_mode_dec && !( EQ_16( st->nelp_mode_dec, 1 ) && EQ_16( st->bfi, 1 ) ) ) ) { /* SWB BWE decoder */ + push_wmops( "ICD PP TBE/BWE swb_bwe_dec" ); Q_syn_hb = swb_bwe_dec_fx32( st, output_32_fx[n], synth_32_fx[n], hb_synth_32_fx[n], use_cldfb_for_dft, output_frame ); - + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ Scale_sig32( hb_synth_32_fx[n], output_frame, sub( Q11, Q_syn_hb ) ); // Q11 Copy_Scale_sig_32_16( hBWE_FD->L_old_wtda_swb_fx32, hBWE_FD->L_old_wtda_swb_fx, output_frame, sub( hBWE_FD->old_wtda_swb_fx_exp, Q11 ) ); // old_wtda_swb_fx_exp } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE" );*/ /*---------------------------------------------------------------------* * FEC - recovery after lost HQ core (smoothing of the BWE component) @@ -1141,6 +1169,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( GE_16( output_frame, L_FRAME32k ) && st->hTdCngDec != NULL ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && GE_16( st->bwidth, SWB ) && st->hTdCngDec != NULL ) ) { + push_wmops( "ICD PP SWB CNG" ); /* SHB CNG decoder */ Word16 synth_fxl[960]; /* Q-2 */ Word16 q; @@ -1162,6 +1191,7 @@ ivas_error ivas_core_dec_fx( Scale_sig( hBWE_TD->state_lpc_syn_fx, LPC_SHB_ORDER, negate( sub( Q8, hBWE_TD->prev_Q_bwe_syn ) ) ); // Q0 Copy_Scale_sig_16_32_no_sat( hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, 2 * ALLPASSSECTIONS_STEEP, negate( sub( hBWE_TD->prev_Q_bwe_syn2, Q11 ) ) ); + pop_wmops(); /* push_wmops( "ICD PP SWB CNG" );*/ } /*-------------------------------------------------------------------* @@ -1171,6 +1201,7 @@ ivas_error ivas_core_dec_fx( test(); IF( n == 0 && GE_16( st->element_mode, IVAS_CPE_DFT ) ) { + push_wmops( "ICD PP IC-BWE" ); Word16 q; q = 11; move16(); @@ -1192,10 +1223,12 @@ ivas_error ivas_core_dec_fx( Scale_sig32( hb_synth_32_fx[0], output_frame, sub( Q11, q ) ); // Q11 Scale_sig32( hb_synth_32_fx[1], output_frame, sub( Q11, q ) ); // Q11 } + pop_wmops(); /*push_wmops( "ICD PP IC-BWE" );*/ } IF( EQ_16( st->element_mode, EVS_MONO ) ) { + push_wmops( "ICD PP BFI" ); /*----------------------------------------------------------------* * BFI waveform adjustment *----------------------------------------------------------------*/ @@ -1223,6 +1256,7 @@ ivas_error ivas_core_dec_fx( st->hPlcInfo->Pitch_fx = 0; move16(); } + pop_wmops(); /*push_wmops( "ICD PP BFI" );*/ } /*----------------------------------------------------------------* @@ -1235,6 +1269,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( NE_16( st->extl, -1 ) && ( NE_16( st->extl, IGF_BWE ) || st->last_core == ACELP_CORE ) ) || ( st->bws_cnt > 0 && st->core == ACELP_CORE ) ) { + push_wmops( "ICD PP Sync BWE" ); /* Calculate an additional delay of extension layer components to be synchronized with ACELP synthesis */ IF( EQ_16( st->L_frame, L_FRAME ) ) { @@ -1388,6 +1423,7 @@ ivas_error ivas_core_dec_fx( st->hTdCngDec->last_shb_ener_fx_32 = L_shl_sat( L_tmp, sub( exp, 20 ) ); /*Q11*/ move32(); } + pop_wmops(); /*push_wmops( "ICD PP Sync BWE" );*/ } test(); @@ -1403,7 +1439,7 @@ ivas_error ivas_core_dec_fx( * - core switching in DFT stereo * - updates for potential TD->DFT stereo switching *----------------------------------------------------------------*/ - + push_wmops( "ICD PP TCXLTP" ); IF( st->hHQ_core != NULL ) { Copy_Scale_sig_16_32_no_sat( st->hHQ_core->old_out_LB_fx, st->hHQ_core->old_out_LB_fx32, L_FRAME32k, sub( Q11, st->hHQ_core->Q_old_wtda_LB ) ); // Q11 @@ -1460,6 +1496,7 @@ ivas_error ivas_core_dec_fx( } Copy32( synth_32_fx[n], output_32_fx[n], output_frame ); + pop_wmops(); /*push_wmops( "ICD PP TCXLTP" );*/ /*--------------------------------------------------------* * Common updates @@ -1468,6 +1505,7 @@ ivas_error ivas_core_dec_fx( Word16 exp_max; Word32 output_fx_loc[L_FRAME48k]; + push_wmops( "ICD PP commonupdates" ); exp_max = 0; move16(); @@ -1522,6 +1560,8 @@ ivas_error ivas_core_dec_fx( Scale_sig( st->delay_buf_out_fx, NS2SA_FX2( st->output_Fs, DELAY_CLDFB_NS ), negate( exp_max ) ); // Q0 + pop_wmops(); /*push_wmops( "ICD PP commonupdates" );*/ + } /* n_channels loop */ FOR( n = 0; n < n_channels; n++ ) @@ -1540,7 +1580,7 @@ ivas_error ivas_core_dec_fx( move16(); } } - + pop_wmops(); /*push_wmops( "ICD Postproc, BWE, updates (ICD PP)" );*/ pop_wmops(); return error; } diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 93e8bb4eb..4745bc5f0 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -96,12 +96,13 @@ ivas_error ivas_jbm_dec_tc_fx( CPE_DEC_HANDLE hCPE; SCE_DEC_HANDLE hSCE; - push_wmops( "ivas_jbm_dec_tc" ); + push_wmops( "ivas_jbm_dec_tc (JBM)" ); /*----------------------------------------------------------------* * Initialization of local vars after struct has been set *----------------------------------------------------------------*/ + push_wmops( "JBM init" ); output_Fs = st_ivas->hDecoderConfig->output_Fs; move32(); nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; @@ -134,7 +135,7 @@ ivas_error ivas_jbm_dec_tc_fx( } Word16 ch; - + pop_wmops(); /*push_wmops( "JBM init" );*/ /*----------------------------------------------------------------* * Decoding + pre-rendering @@ -152,6 +153,7 @@ ivas_error ivas_jbm_dec_tc_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) { + push_wmops( "JBM STEREO" ); st_ivas->hCPE[0]->element_brate = ivas_total_brate; move32(); Word16 q_output = 11; @@ -192,9 +194,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 } } + pop_wmops(); /*push_wmops( "JBM STEREO" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { + push_wmops( "JBM ISM" ); /* Metadata decoding and configuration */ test(); IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) @@ -279,9 +283,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } + pop_wmops(); /*push_wmops( "JBM ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { + push_wmops( "JBM SBA/MASA" ); set16_fx( nb_bits_metadata, 0, MAX_SCE ); @@ -688,9 +694,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } + pop_wmops(); /*push_wmops( "JBM SBA/MASA" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { + push_wmops( "JBM MASA_ISM" ); Word16 nchan_ism, nchan_transport_ism; Word16 dirac_bs_md_write_idx; @@ -821,9 +829,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[n], output_frame, sub( Q11, output_q ) ); // Q11 } } + pop_wmops(); /*push_wmops( "JBM MASA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { + push_wmops( "JBM SBA_ISM" ); Word16 nchan_ism, sba_ch_idx; set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); @@ -1092,10 +1102,11 @@ ivas_error ivas_jbm_dec_tc_fx( v_add_32( p_output_fx[n], p_output_fx[n + s_max( nchan_out, nchan_ism )], p_output_fx[n], output_frame ); } } + pop_wmops(); /*push_wmops( "JBM SBA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) { - + push_wmops( "JBM MC" ); // st = (st_ivas->nSCE > 0) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; IF( st_ivas->nSCE > 0 ) { @@ -1468,6 +1479,7 @@ ivas_error ivas_jbm_dec_tc_fx( ivas_mono_stereo_downmix_mcmasa_fx( st_ivas, p_output_fx, output_frame ); } } + pop_wmops(); /*push_wmops( "JBM MC" );*/ } /*----------------------------------------------------------------* @@ -1476,7 +1488,9 @@ ivas_error ivas_jbm_dec_tc_fx( IF( EQ_16( st_ivas->hDecoderConfig->Opt_tsm, 1 ) ) { + push_wmops( "JBM syn_out" ); ivas_syn_output_f_fx( p_output_fx, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data_fx ); + pop_wmops(); /*push_wmops( "JBM syn_out" );*/ } ELSE { diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 1b51a29fb..1e7af58c8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4713,7 +4713,9 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ + push_wmops( "synthesise_fb_high_band" ); synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) -- GitLab From 3f98982fcc6f4c5dcd29a491e24d9d5b12dc3684 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 14:10:37 +0100 Subject: [PATCH 062/698] Revert "delete FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1, STAGE2 and STAGE 3 completely" This reverts commit 82e1f8758cacf2127fd0509672fd3bf5897850cd. --- lib_com/prot_fx.h | 6 ++-- lib_com/swb_tbe_com_fx.c | 68 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 48232000a..8a282fac6 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,9 +59,9 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //deleted completely -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //deleted completely -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //deleted completely +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS - deleted completely // Numbers ALL: 83,45 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index f2b850533..9a54a26f6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6765,7 +6765,24 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + } +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6779,6 +6796,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } +#endif + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -6834,6 +6853,27 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } + +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6848,7 +6888,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } - +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -6917,7 +6957,29 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -6935,7 +6997,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - +#endif memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; -- GitLab From 9fe773a1e9745f1c9a8ceb8d219dda40be756f29 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 14:10:50 +0100 Subject: [PATCH 063/698] Revert "follow-up: apply clang format patch" This reverts commit eaa539013d7c11e202990bb7fad44a7322a70fad. --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 9a54a26f6..b2a414afe 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6782,7 +6782,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); } -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From d39775e561d75da6c5593ff8b8edafc6d684f3fb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 14:11:10 +0100 Subject: [PATCH 064/698] Revert "delete FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig" This reverts commit ad8bba9cfa444272263390af7345b25b115ffad4. --- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 184 +++++++++++++++++++++++++++++++++++---- 2 files changed, 170 insertions(+), 16 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 8a282fac6..b64de07f8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -62,7 +62,7 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS - deleted completely +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS // Numbers ALL: 83,45 // Numbers beOnly: 86,156 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index b2a414afe..6dda9a39f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6766,40 +6766,194 @@ void elliptic_bpf_48k_generic_fx( L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 - FOR( i = 4; i < L_FRAME48k; i++ ) +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { Word64 W_tmpX; Word64 W_tmpY; + i = 4; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); + i++; + + FOR( ; i < L_FRAME48k / 3; ) + { + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //2 + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); // 3 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //4 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //5 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); // 3 + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //4 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //5 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //4 + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //5 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //7 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } } -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ - FOR( i = 4; i < L_FRAME48k; i++ ) + ELSE +#else { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + } + } +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + { + i = 4; + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //1 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + FOR( ; i < L_FRAME48k / 3; ) + { + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //4 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //8 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } + } + ELSE +#else + { + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } } +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ #endif - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; -- GitLab From 3376fb0af295c9175ae317460529d4412e33812c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 15:04:13 +0100 Subject: [PATCH 065/698] activate FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig for be test --- lib_com/prot_fx.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index b64de07f8..06cc69ee5 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,16 +59,22 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 +// *** Currently checking be-nes of all-inactive (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50048 -- DONE GREEN! +// *** Currently checking be speedups ( only FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes +// --> next test: check nonbe speedups +// //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS // Numbers ALL: 83,45 // Numbers beOnly: 86,156 // NUmbers none: 88,183 + + /*----------------------------------------------------------------------------------* * Prototypes of global macros *----------------------------------------------------------------------------------*/ -- GitLab From 849100836e5b419631533f9876f643fc32fa5f9f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 15:19:53 +0100 Subject: [PATCH 066/698] minor change --- lib_com/prot_fx.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 06cc69ee5..1b4857508 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,7 +60,7 @@ #define TCX_IMDCT_HEADROOM 1 // *** Currently checking be-nes of all-inactive (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50048 -- DONE GREEN! -// *** Currently checking be speedups ( only FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes +// *** Currently checking be speedups ( only FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) // --> next test: check nonbe speedups // //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 -- GitLab From 487a8968adfacb6c60b79586317c07c7e7fe72b6 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 15:22:00 +0100 Subject: [PATCH 067/698] apply clang format patch --- lib_com/prot_fx.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1b4857508..a50d1656c 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -62,7 +62,7 @@ // *** Currently checking be-nes of all-inactive (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50048 -- DONE GREEN! // *** Currently checking be speedups ( only FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) // --> next test: check nonbe speedups -// +// //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 @@ -73,8 +73,6 @@ // NUmbers none: 88,183 - - /*----------------------------------------------------------------------------------* * Prototypes of global macros *----------------------------------------------------------------------------------*/ -- GitLab From 1a15ab5b2c336b949add726ff189f512788bc43e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 16:01:16 +0100 Subject: [PATCH 068/698] added some push/pop wmops --- lib_dec/swb_tbe_dec_fx.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 1e7af58c8..43110cfb8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -5519,6 +5519,8 @@ void ivas_swb_tbe_dec_fx( hBWE_TD = st->hBWE_TD; + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" ); + /* initializations */ GainFrame_fx = 0; move32(); @@ -5559,7 +5561,9 @@ void ivas_swb_tbe_dec_fx( tilt_swb_fec_fx = hBWE_TD->tilt_swb_fec_fx; move16(); } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" );*/ + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART B" ); /* WB/SWB bandwidth switching */ test(); test(); @@ -5883,6 +5887,9 @@ void ivas_swb_tbe_dec_fx( } } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART B" );*/ + + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART C" ); /* get the gainshape delay */ Copy( &hBWE_TD->GainShape_Delay_fx[4], &hBWE_TD->GainShape_Delay_fx[0], NUM_SHB_SUBFR / 4 ); FOR( i = 0; i < NUM_SHB_SUBFR / 4; i++ ) @@ -5921,7 +5928,9 @@ void ivas_swb_tbe_dec_fx( { set16_fx( vf_modified_fx, 0, NB_SUBFR16k ); } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART C" );*/ + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART D" ); /* SHB LSF from current frame; and convert to LSP for interpolation */ E_LPC_lsf_lsp_conversion( lsf_shb_fx, lsp_shb_2_fx, LPC_SHB_ORDER ); @@ -6075,6 +6084,9 @@ void ivas_swb_tbe_dec_fx( } } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART D" );*/ + + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART E" ); /* Save the SWB LSP values from current frame for interpolation */ Copy( lsp_shb_2_fx, hBWE_TD->swb_lsp_prev_interp_fx, LPC_SHB_ORDER ); @@ -6128,7 +6140,9 @@ void ivas_swb_tbe_dec_fx( Copy( lpc_shb_fx, &lpc_shb_sf_fx[i_mult( j, ( LPC_SHB_ORDER + 1 ) )], LPC_SHB_ORDER + 1 ); } } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART E" );*/ + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART F" ); /* From low band excitation, generate highband excitation */ /* -------- start of memory rescaling -------- */ @@ -6329,6 +6343,10 @@ void ivas_swb_tbe_dec_fx( } } ener_fx = s_max( 1, round_fx_sat( L_shl_sat( L_ener, sub( 18, shl( Q_bwe_exc, 1 ) ) ) ) ); /* Q2: 2*Q_bwe_exc+18-2*Q_bwe_exc-16 */ + + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART F" );*/ + + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART G" ); /* WB/SWB bandwidth switching */ IF( st->bws_cnt > 0 ) { @@ -6646,7 +6664,10 @@ void ivas_swb_tbe_dec_fx( hBWE_TD->prev_Q_bwe_syn = Q_bwe_exc; move16(); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART G" );*/ + + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART H" ); /* Gain shape smoothing after quantization */ test(); IF( EQ_32( st->extl_brate, SWB_TBE_1k10 ) || EQ_32( st->extl_brate, SWB_TBE_1k75 ) ) @@ -6839,6 +6860,9 @@ void ivas_swb_tbe_dec_fx( } } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART H" );*/ + + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART J" ); /* adjust the FEC frame energy */ IF( st->bfi ) { @@ -6996,6 +7020,10 @@ void ivas_swb_tbe_dec_fx( move32(); } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART J" );*/ + + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART K" ); + /* generate 32kHz SHB synthesis from 12.8(16)kHz signal */ GenSHBSynth_fx32( shaped_shb_excitation_fx_32, error_fx, hBWE_TD->genSHBsynth_Hilbert_Mem_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->L_frame, &( hBWE_TD->syn_dm_phase ) ); Copy_Scale_sig_32_16( st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, 2 * ALLPASSSECTIONS_STEEP, -( Q11 - Q_bwe_exc ) ); @@ -7132,5 +7160,7 @@ void ivas_swb_tbe_dec_fx( hBWE_TD->prev_Qx = Q_bwe_exc; move16(); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART K" );*/ + return; } -- GitLab From bba34f621436a2f64b4a6357816974485c597a10 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 16:08:31 +0100 Subject: [PATCH 069/698] mofified FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig to not differ from original --- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 90 ++++++++++++++++++++-------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index a50d1656c..19560b368 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,7 +60,7 @@ #define TCX_IMDCT_HEADROOM 1 // *** Currently checking be-nes of all-inactive (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50048 -- DONE GREEN! -// *** Currently checking be speedups ( only FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) +// *** Currently checking be speedups ( only modified version of FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) // --> next test: check nonbe speedups // //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 6dda9a39f..d58825e59 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6869,65 +6869,65 @@ void elliptic_bpf_48k_generic_fx( IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { i = 4; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //0 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //1 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; FOR( ; i < L_FRAME48k / 3; ) { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat(L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX); //3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //4 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //8 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //8 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; } -- GitLab From 46c6fcf39f425f82cd782e5e184b87dd80cc3f46 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 26 Mar 2025 16:21:14 +0100 Subject: [PATCH 070/698] delete most of the recently added push/pop wmops --- lib_dec/swb_tbe_dec_fx.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 43110cfb8..2b42e5b0d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -5519,7 +5519,6 @@ void ivas_swb_tbe_dec_fx( hBWE_TD = st->hBWE_TD; - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" ); /* initializations */ GainFrame_fx = 0; @@ -5561,9 +5560,7 @@ void ivas_swb_tbe_dec_fx( tilt_swb_fec_fx = hBWE_TD->tilt_swb_fec_fx; move16(); } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART B" ); /* WB/SWB bandwidth switching */ test(); test(); @@ -5887,9 +5884,6 @@ void ivas_swb_tbe_dec_fx( } } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART B" );*/ - - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART C" ); /* get the gainshape delay */ Copy( &hBWE_TD->GainShape_Delay_fx[4], &hBWE_TD->GainShape_Delay_fx[0], NUM_SHB_SUBFR / 4 ); FOR( i = 0; i < NUM_SHB_SUBFR / 4; i++ ) @@ -5928,9 +5922,7 @@ void ivas_swb_tbe_dec_fx( { set16_fx( vf_modified_fx, 0, NB_SUBFR16k ); } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART C" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART D" ); /* SHB LSF from current frame; and convert to LSP for interpolation */ E_LPC_lsf_lsp_conversion( lsf_shb_fx, lsp_shb_2_fx, LPC_SHB_ORDER ); @@ -6084,9 +6076,6 @@ void ivas_swb_tbe_dec_fx( } } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART D" );*/ - - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART E" ); /* Save the SWB LSP values from current frame for interpolation */ Copy( lsp_shb_2_fx, hBWE_TD->swb_lsp_prev_interp_fx, LPC_SHB_ORDER ); @@ -6140,9 +6129,7 @@ void ivas_swb_tbe_dec_fx( Copy( lpc_shb_fx, &lpc_shb_sf_fx[i_mult( j, ( LPC_SHB_ORDER + 1 ) )], LPC_SHB_ORDER + 1 ); } } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART E" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART F" ); /* From low band excitation, generate highband excitation */ /* -------- start of memory rescaling -------- */ @@ -6344,9 +6331,6 @@ void ivas_swb_tbe_dec_fx( } ener_fx = s_max( 1, round_fx_sat( L_shl_sat( L_ener, sub( 18, shl( Q_bwe_exc, 1 ) ) ) ) ); /* Q2: 2*Q_bwe_exc+18-2*Q_bwe_exc-16 */ - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART F" );*/ - - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART G" ); /* WB/SWB bandwidth switching */ IF( st->bws_cnt > 0 ) { @@ -6664,10 +6648,6 @@ void ivas_swb_tbe_dec_fx( hBWE_TD->prev_Q_bwe_syn = Q_bwe_exc; move16(); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART G" );*/ - - - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART H" ); /* Gain shape smoothing after quantization */ test(); IF( EQ_32( st->extl_brate, SWB_TBE_1k10 ) || EQ_32( st->extl_brate, SWB_TBE_1k75 ) ) @@ -6860,9 +6840,6 @@ void ivas_swb_tbe_dec_fx( } } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART H" );*/ - - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART J" ); /* adjust the FEC frame energy */ IF( st->bfi ) { @@ -7020,8 +6997,6 @@ void ivas_swb_tbe_dec_fx( move32(); } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART J" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART K" ); /* generate 32kHz SHB synthesis from 12.8(16)kHz signal */ -- GitLab From 128cb148a9380ccff30b26f257b06eada4b205fd Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Thu, 27 Mar 2025 13:00:16 +0100 Subject: [PATCH 071/698] Improve accuracy of no_phi_masa_inv_fx table and remove all other azimuth/elevation roundings. --- lib_com/ivas_rom_com_fx.c | 15 +++++++++++++++ lib_dec/ivas_dirac_dec_fx.c | 14 +++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lib_com/ivas_rom_com_fx.c b/lib_com/ivas_rom_com_fx.c index a7a8bdcbf..ffb18d6d2 100644 --- a/lib_com/ivas_rom_com_fx.c +++ b/lib_com/ivas_rom_com_fx.c @@ -1545,6 +1545,7 @@ const Word16 ivas_param_mc_quant_icc_fx[PARAM_MC_SZ_ICC_QUANTIZER] = { /* from 1 to 11 bits*/ /*q factor = 8*/ const Word32 no_phi_masa_inv_fx[NO_SPHERICAL_GRIDS][MAX_NO_THETA] = { +#ifndef FIX_1379_MASA_ANGLE_ROUND { 1073741824 }, { 536870912 }, { 536870912, 1073741824 }, @@ -1556,8 +1557,22 @@ const Word32 no_phi_masa_inv_fx[NO_SPHERICAL_GRIDS][MAX_NO_THETA] = { { 44739242, 45691141, 47721858, 52377649, 61356675, 76695844, 107374182, 178956970, 1073741824, 2147483647 }, { 35791394, 35791394, 37025580, 38347922, 39768215, 42949672, 46684427, 52377649, 59652323, 71582788, 93368854, 126322567, 214748364, 2147483647 }, { 24129029, 24129029, 24403223, 24970740, 25565281, 26512143, 27889398, 29417584, 31580641, 34087042, 37675151, 42107522, 48806446, 56512727, 71582788, 93368854, 143165576, 268435456, 2147483647 } +#else + { 1073741824 }, + { 536870912 }, + { 536870912, 1073741824 }, + { 268435456, 536870912 }, + { 178956971, 306783378, 1073741824, 2147483647 }, + { 153391689, 165191050, 238609294, 1073741824, 2147483647 }, + { 97612893, 102261126, 126322568, 195225786, 715827883, 2147483647 }, + { 65075262, 67108864, 74051160, 93368854, 126322568, 238609294, 2147483647 }, + { 44739243, 45691141, 47721859, 52377650, 61356676, 76695845, 107374182, 178956971, 1073741824, 2147483647 }, + { 35791394, 35791394, 37025580, 38347922, 39768216, 42949673, 46684427, 52377650, 59652324, 71582788, 93368854, 126322568, 214748365, 2147483647 }, + { 24129030, 24129030, 24403223, 24970740, 25565282, 26512144, 27889398, 29417584, 31580642, 34087042, 37675152, 42107523, 48806447, 56512728, 71582788, 93368854, 143165577, 268435456, 2147483647 }, +#endif }; + const Word32 azimuth_cb_fx[8] = { 0, -754974720, -377487360, 377487360, -188743680, 188743680, -566231040, 566231040 }; diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index c72c0d6c8..bd49d13d6 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1446,7 +1446,7 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND +#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT hSpatParamRendCom->azimuth[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); move16(); hSpatParamRendCom->elevation[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); @@ -1501,7 +1501,7 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND +#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT hSpatParamRendCom->azimuth2[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); move16(); hSpatParamRendCom->elevation2[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); @@ -1718,7 +1718,7 @@ void ivas_qmetadata_to_dirac_fx( IF( hodirac_flag ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND +#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT azi = round_fx( L_shr( ( L_add( azimuth_fx, ONE_IN_Q21 ) ), 6 ) ); ele = round_fx( L_shr( ( L_add( elevation_fx, ONE_IN_Q21 ) ), 6 ) ); #else @@ -1760,7 +1760,7 @@ void ivas_qmetadata_to_dirac_fx( final_1_32 = BASOP_Util_Add_Mant32Exp( final_1_32, final_1_exp, ONE_IN_Q30, 0, &final_1_exp ); /*0.5 in q31*/ final_2_32 = BASOP_Util_Add_Mant32Exp( final_2_32, final_2_exp, ONE_IN_Q30, 0, &final_2_exp ); -#ifdef FIX_1379_MASA_ANGLE_ROUND +#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT azi = round_fx( L_shr( final_1_32, sub( sub( 31, final_1_exp ), 16 ) ) ); ele = round_fx( L_shr( final_2_32, sub( sub( 31, final_2_exp ), 16 ) ) ); #else @@ -3626,7 +3626,7 @@ void ivas_dirac_dec_render_sf_fx( { Word16 j, k, j2, l; Word16 num_objects, nchan_out_woLFE, lfe_index; -#ifndef FIX_1379_MASA_ANGLE_ROUND +#ifndef FIX_1379_MASA_ANGLE_ROUND_NOT Word16 az1, el1; #endif Word16 n_slots_to_render; @@ -3662,14 +3662,14 @@ void ivas_dirac_dec_render_sf_fx( Word16 el_q0 = extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, Q22 ) ); Word32 az1_32, el1_32; rotateAziEle_fixed( az_q0, el_q0, &az1_32, &el1_32, st_ivas->hCombinedOrientationData->Rmat_fx[0], st_ivas->hIntSetup.is_planar_setup ); -#ifndef FIX_1379_MASA_ANGLE_ROUND +#ifndef FIX_1379_MASA_ANGLE_ROUND_NOT az1 = extract_h( az1_32 ); el1 = extract_h( el1_32 ); #endif IF( st_ivas->hEFAPdata != NULL ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND +#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT const Word32 azi_fx = L_shl( az1_32, Q22 - Q16 ); // Q16 -> Q22 const Word32 ele_fx = L_shl( el1_32, Q22 - Q16 ); // Q16 -> Q22 #else -- GitLab From 97754fe6471c6857bc76feb9de337b6513f58c63 Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Thu, 27 Mar 2025 18:14:37 +0100 Subject: [PATCH 072/698] Remove wrong round_fx(). Reactivate simplification which also fixes instrumentation (implicit Word16 to Word32 conversion). --- lib_dec/ivas_dirac_dec_fx.c | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index bd49d13d6..c06047113 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1446,17 +1446,10 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT - hSpatParamRendCom->azimuth[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); - move16(); - hSpatParamRendCom->elevation[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); - move16(); -#else hSpatParamRendCom->azimuth[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); move16(); hSpatParamRendCom->elevation[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); move16(); -#endif hSpatParamRendCom->energy_ratio1_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block]; move32(); hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( ONE_IN_Q30, q_direction->band_data[band].energy_ratio_fx[block] ); @@ -1501,17 +1494,10 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT - hSpatParamRendCom->azimuth2[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); - move16(); - hSpatParamRendCom->elevation2[meta_write_index][b] = round_fx( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); - move16(); -#else hSpatParamRendCom->azimuth2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); move16(); hSpatParamRendCom->elevation2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); move16(); -#endif hSpatParamRendCom->energy_ratio2_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block]; move32(); hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b], q_direction->band_data[band].energy_ratio_fx[block] ); @@ -1718,13 +1704,8 @@ void ivas_qmetadata_to_dirac_fx( IF( hodirac_flag ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT - azi = round_fx( L_shr( ( L_add( azimuth_fx, ONE_IN_Q21 ) ), 6 ) ); - ele = round_fx( L_shr( ( L_add( elevation_fx, ONE_IN_Q21 ) ), 6 ) ); -#else azi = extract_h( L_shr( ( L_add( azimuth_fx, ONE_IN_Q21 ) ), 6 ) ); ele = extract_h( L_shr( ( L_add( elevation_fx, ONE_IN_Q21 ) ), 6 ) ); -#endif /*addition of one to compensate precision loss*/ if ( azi < 0 ) { @@ -1760,13 +1741,8 @@ void ivas_qmetadata_to_dirac_fx( final_1_32 = BASOP_Util_Add_Mant32Exp( final_1_32, final_1_exp, ONE_IN_Q30, 0, &final_1_exp ); /*0.5 in q31*/ final_2_32 = BASOP_Util_Add_Mant32Exp( final_2_32, final_2_exp, ONE_IN_Q30, 0, &final_2_exp ); -#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT - azi = round_fx( L_shr( final_1_32, sub( sub( 31, final_1_exp ), 16 ) ) ); - ele = round_fx( L_shr( final_2_32, sub( sub( 31, final_2_exp ), 16 ) ) ); -#else azi = extract_h( L_shr( final_1_32, sub( sub( 31, final_1_exp ), 16 ) ) ); ele = extract_h( L_shr( final_2_32, sub( sub( 31, final_2_exp ), 16 ) ) ); -#endif /*addition of one to compensate precision loss*/ if ( azi < 0 ) @@ -3626,7 +3602,7 @@ void ivas_dirac_dec_render_sf_fx( { Word16 j, k, j2, l; Word16 num_objects, nchan_out_woLFE, lfe_index; -#ifndef FIX_1379_MASA_ANGLE_ROUND_NOT +#ifndef FIX_1379_MASA_ANGLE_ROUND Word16 az1, el1; #endif Word16 n_slots_to_render; @@ -3662,14 +3638,14 @@ void ivas_dirac_dec_render_sf_fx( Word16 el_q0 = extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, Q22 ) ); Word32 az1_32, el1_32; rotateAziEle_fixed( az_q0, el_q0, &az1_32, &el1_32, st_ivas->hCombinedOrientationData->Rmat_fx[0], st_ivas->hIntSetup.is_planar_setup ); -#ifndef FIX_1379_MASA_ANGLE_ROUND_NOT +#ifndef FIX_1379_MASA_ANGLE_ROUND az1 = extract_h( az1_32 ); el1 = extract_h( el1_32 ); #endif IF( st_ivas->hEFAPdata != NULL ) { -#ifdef FIX_1379_MASA_ANGLE_ROUND_NOT +#ifdef FIX_1379_MASA_ANGLE_ROUND const Word32 azi_fx = L_shl( az1_32, Q22 - Q16 ); // Q16 -> Q22 const Word32 ele_fx = L_shl( el1_32, Q22 - Q16 ); // Q16 -> Q22 #else -- GitLab From 3660990879c1d4c8526770e863e0e30abe6c0aaf Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 28 Mar 2025 19:49:59 +0100 Subject: [PATCH 073/698] fix --- lib_dec/fd_cng_dec_fx.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 6579de9fa..b3fbb225e 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1574,15 +1574,25 @@ Word16 ApplyFdCng_ivas_fx( /* This sets the new CNG levels until a SID update overwrites it */ Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); /* This sets the new CNG levels until a SID update overwrites it */ /*Q31 - hFdCngDec->bandNoiseShape_exp*/ - Word16 shift1 = L_norm_arr( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); - Word16 shift2 = L_norm_arr( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ) ); - Word16 shift = s_max( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), sub( *cngNoiseLevel_exp, shift2 ) ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp; + move16(); + } + ELSE +#endif + { + Word16 shift1 = L_norm_arr( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); + Word16 shift2 = L_norm_arr( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ) ); + Word16 shift = s_max( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), sub( *cngNoiseLevel_exp, shift2 ) ); - scale_sig32( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), shift ) ); - scale_sig32( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ), sub( sub( *cngNoiseLevel_exp, shift2 ), shift ) ); + scale_sig32( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), shift ) ); + scale_sig32( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ), sub( sub( *cngNoiseLevel_exp, shift2 ), shift ) ); - *cngNoiseLevel_exp = shift; - move16(); + *cngNoiseLevel_exp = shift; + move16(); + } /*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/ tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); -- GitLab From ff1ecd8743402a7cb90cffda09c2dc9c9bab382f Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 28 Mar 2025 15:05:26 +0530 Subject: [PATCH 074/698] Q mismatch fix in stereo_icBWE_enc_ivas_fx stack --- lib_com/deemph.c | 11 ++--- lib_com/prot_fx.h | 1 - lib_dec/ivas_stereo_icbwe_dec_fx.c | 2 +- lib_enc/ivas_stereo_ica_enc_fx.c | 8 ++-- lib_enc/ivas_stereo_icbwe_enc_fx.c | 64 +++++++++++++++++++----------- 5 files changed, 49 insertions(+), 37 deletions(-) diff --git a/lib_com/deemph.c b/lib_com/deemph.c index c03a050bc..9bc20cb6f 100644 --- a/lib_com/deemph.c +++ b/lib_com/deemph.c @@ -41,26 +41,23 @@ void deemph_fx_32( - Word16 shift, /*scaled output*/ Word32 *signal, /* i/o: signal Qx*/ const Word16 mu, /* i : deemphasis factor Q15*/ const Word16 L, /* i : vector size */ - Word32 *mem /* i/o: memory (y[-1]) Qx+shift*/ + Word32 *mem /* i/o: memory (y[-1]) Qx*/ ) { Word16 i; - signal[0] = L_add( signal[0], Mpy_32_16_1( ( *mem ), mu ) ); /*Qx*/ + signal[0] = Madd_32_16( signal[0], *mem, mu ); // Qx move32(); FOR( i = 1; i < L; i++ ) { - signal[i] = L_add( signal[i], Mpy_32_16_1( signal[i - 1], mu ) ); /*Qx*/ - signal[i] = L_shl( signal[i], shift ); /*Qx+shift*/ - move32(); + signal[i] = Madd_32_16( signal[i], signal[i - 1], mu ); // Qx move32(); } - *mem = signal[L - 1]; /*Qx+shift*/ + *mem = signal[L - 1]; // Qx move32(); return; diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 851b461bf..ffd1d6032 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -1651,7 +1651,6 @@ void deemph_fx( void E_UTIL_deemph2( Word16 shift, Word16 *x, const Word16 mu, const Word16 L, Word16 *mem ); void deemph_fx_32( - Word16 shift, /* i : scaled output */ Word32 *signal, /* i/o: signal */ const Word16 mu, /* i : deemphasis factor */ const Word16 L, /* i : vector size */ diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index c9f7cac92..c7bc98566 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -611,7 +611,7 @@ void stereo_icBWE_dec_fx( Q_syn_shb = tmp; move16(); - deemph_fx_32( 0, shb_synth_nonref_fx + L_SHB_LAHEAD, specMapping_fx, L_FRAME16k, &( hStereoICBWE->memShbSpecMapping_fx ) ); + deemph_fx_32( shb_synth_nonref_fx + L_SHB_LAHEAD, specMapping_fx, L_FRAME16k, &( hStereoICBWE->memShbSpecMapping_fx ) ); hStereoICBWE->prev_Q_memshbspec = Q_syn_shb; move16(); Copy32( shb_synth_nonref_fx + L_FRAME16k, hStereoICBWE->mem_syn_shb_nonref_fx, L_SHB_LAHEAD ); /* Q_syn_shb */ diff --git a/lib_enc/ivas_stereo_ica_enc_fx.c b/lib_enc/ivas_stereo_ica_enc_fx.c index 78ea50d7e..a8a088f20 100644 --- a/lib_enc/ivas_stereo_ica_enc_fx.c +++ b/lib_enc/ivas_stereo_ica_enc_fx.c @@ -408,8 +408,8 @@ static void deEmphResample_fx( /* De-emphasis, 1/(1-mu z^-1), and resample, stage 1 */ - deemph_fx_32( 0, buf1_fx, PREEMPH_FAC_16k, input_frame, &hStereoTCA->memdecim_fx[0] ); - deemph_fx_32( 0, buf2_fx, PREEMPH_FAC_16k, input_frame, &hStereoTCA->memdecim_fx[1] ); + deemph_fx_32( buf1_fx, PREEMPH_FAC_16k, input_frame, &hStereoTCA->memdecim_fx[0] ); + deemph_fx_32( buf2_fx, PREEMPH_FAC_16k, input_frame, &hStereoTCA->memdecim_fx[1] ); FOR( i = 0; i < ( input_frame / dsFac1 ); i++ ) { @@ -420,8 +420,8 @@ static void deEmphResample_fx( } /* De-emphasis, 1/(1-mu z^-1), and resample, stage 2 */ - deemph_fx_32( 0, tempBuf1_fx, PREEMPH_FAC_16k, idiv1616( input_frame, dsFac1 ), &hStereoTCA->memdecim_fx[2] ); - deemph_fx_32( 0, tempBuf2_fx, PREEMPH_FAC_16k, idiv1616( input_frame, dsFac1 ), &hStereoTCA->memdecim_fx[3] ); + deemph_fx_32( tempBuf1_fx, PREEMPH_FAC_16k, idiv1616( input_frame, dsFac1 ), &hStereoTCA->memdecim_fx[2] ); + deemph_fx_32( tempBuf2_fx, PREEMPH_FAC_16k, idiv1616( input_frame, dsFac1 ), &hStereoTCA->memdecim_fx[3] ); FOR( i = 0; i < ( input_frame / dsFactor ); i++ ) { diff --git a/lib_enc/ivas_stereo_icbwe_enc_fx.c b/lib_enc/ivas_stereo_icbwe_enc_fx.c index 02d20543b..eba30f762 100644 --- a/lib_enc/ivas_stereo_icbwe_enc_fx.c +++ b/lib_enc/ivas_stereo_icbwe_enc_fx.c @@ -102,14 +102,15 @@ static Word16 ic_bwe_enc_specMapping_ivas_fx( const Word32 *shb_frame_target_fx, /* i : target shb Q31-shb_frame_target_e*/ Word16 shb_frame_target_e, Word32 *shb_synth_nonref_fx, /* o : non-ref shb synth Q31-shb_synth_nonref_e*/ - Word16 shb_synth_nonref_e, + Word16 *shb_synth_nonref_e, Word32 *specMapping_fx, /* i/o: current frame's mapping Qx*/ - Word32 *memShbSpecMapping_fx, /* i/o: current frame's mapping Qx*/ - Word32 *memShbSpecXcorr_fx, /* i/o: ic bwe spec mapping scorr memory Q31-memShbSpecXcorr_e*/ + Word32 *memShbSpecMapping_fx, /* i/o: current frame's mapping Q31-memShbSpecMapping_e*/ + Word16 *memShbSpecMapping_e, + Word32 *memShbSpecXcorr_fx, /* i/o: ic bwe spec mapping scorr memory Q31-memShbSpecXcorr_e*/ Word16 *memShbSpecXcorr_e ) { Word16 idx; - + Word16 max_exp; Word16 Txx1_fx = 0, Txx2_fx = 0, Txx3_fx = 0, T_desired_fx = 0; Word16 Txx1_e = 0, Txx2_e = 0, Txx3_e = 0, T_desired_e = 0; Word16 T_nonref_target_fx, temp_fx; @@ -136,10 +137,10 @@ static Word16 ic_bwe_enc_specMapping_ivas_fx( temp11_fx = dotp_fixed_ivas_fx( shb_frame_target_fx, shb_frame_target_e, shb_frame_target_fx + 1, shb_frame_target_e, L_FRAME16k - 1, &temp11_exp ); /* Q31-temp1_exp */ /* Calculate rxx(1)/rxx(0) of the non ref synth */ - temp0_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, shb_synth_nonref_e, shb_synth_nonref_fx, shb_synth_nonref_e, L_FRAME16k - 3, &temp0_exp ); /* Q31-temp0_exp */ - temp1_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, shb_synth_nonref_e, shb_synth_nonref_fx + 1, shb_synth_nonref_e, L_FRAME16k - 3, &temp1_exp ); /* Q31-temp1_exp */ - temp2_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, shb_synth_nonref_e, shb_synth_nonref_fx + 2, shb_synth_nonref_e, L_FRAME16k - 3, &temp2_exp ); /* Q31-temp2_exp */ - temp3_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, shb_synth_nonref_e, shb_synth_nonref_fx + 3, shb_synth_nonref_e, L_FRAME16k - 3, &temp3_exp ); /* Q31-temp3_exp */ + temp0_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, *shb_synth_nonref_e, shb_synth_nonref_fx, *shb_synth_nonref_e, L_FRAME16k - 3, &temp0_exp ); /* Q31-temp0_exp */ + temp1_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, *shb_synth_nonref_e, shb_synth_nonref_fx + 1, *shb_synth_nonref_e, L_FRAME16k - 3, &temp1_exp ); /* Q31-temp1_exp */ + temp2_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, *shb_synth_nonref_e, shb_synth_nonref_fx + 2, *shb_synth_nonref_e, L_FRAME16k - 3, &temp2_exp ); /* Q31-temp2_exp */ + temp3_fx = dotp_fixed_ivas_fx( shb_synth_nonref_fx, *shb_synth_nonref_e, shb_synth_nonref_fx + 3, *shb_synth_nonref_e, L_FRAME16k - 3, &temp3_exp ); /* Q31-temp3_exp */ exp = s_max( *memShbSpecXcorr_e, s_max( s_max( s_max( temp00_exp, temp11_exp ), s_max( temp0_exp, temp1_exp ) ), s_max( temp2_exp, temp3_exp ) ) ); @@ -291,8 +292,19 @@ static Word16 ic_bwe_enc_specMapping_ivas_fx( *specMapping_fx = L_deposit_h( specMapping16 ); move32(); + max_exp = s_max( sub( *memShbSpecMapping_e, norm_l( *memShbSpecMapping_fx ) ), *shb_synth_nonref_e ); + + *memShbSpecMapping_fx = L_shl( *memShbSpecMapping_fx, sub( *memShbSpecMapping_e, max_exp ) ); // max_exp + move32(); + *memShbSpecMapping_e = max_exp; + move16(); + + scale_sig32( shb_synth_nonref_fx, L_FRAME16k, sub( *shb_synth_nonref_e, max_exp ) ); // max_exp + *shb_synth_nonref_e = max_exp; + move16(); + /* IC-BWE spec mapping */ - deemph_fx_32( 0, shb_synth_nonref_fx, extract_h( *specMapping_fx ), L_FRAME16k, memShbSpecMapping_fx ); + deemph_fx_32( shb_synth_nonref_fx, specMapping16, L_FRAME16k, memShbSpecMapping_fx ); // shb_synth_nonref_e return idx; } @@ -429,7 +441,7 @@ static void icbwe_dft_stereo_param_ivas_fx( STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i : */ Encoder_State *st, /* i/o: */ Word32 *shb_synth_nonref_fx, /* i/o: Q31-shb_synth_nonref_e*/ - Word16 shb_synth_nonref_e /* i/o: */ + Word16 *shb_synth_nonref_e /* i/o: */ ) { Word16 slopeILD_fx; @@ -439,7 +451,7 @@ static void icbwe_dft_stereo_param_ivas_fx( Word32 *nrg_L_fx, *nrg_R_fx, *nrg_DMX_fx; Word32 sum_nrg_L_fx, sum_nrg_R_fx, sum_nrg_DMX_fx; const Word32 spec_table_fx[4] = { -1288490189, -858993459, -429496730, 0 }; // Q31 - const Word16 slope_table_fx16[4] = { -17788, -10577, -4822, 0 }; // Q13 + const Word16 slope_table_fx16[4] = { -278, -165, -75, 0 }; // Q7 BSTR_ENC_HANDLE hBstr = st->hBstr; normFac_fx = 1342177280; /* 1000 * (10/((14400+10400)/2 - (6400+10400)/2)) */ // Q29 @@ -505,6 +517,7 @@ static void icbwe_dft_stereo_param_ivas_fx( IF( ( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, WB_TBE ) || EQ_16( st->extl, FB_TBE ) ) && EQ_16( st->flag_ACELP16k, 1 ) ) { /* Spec Mapping Estimate */ + Word16 max_exp; Word16 tmp1, exp1; Word32 L_tmp, L_tmp1; L_tmp = Mpy_32_32( hStereoICBWE->mem_nrg_L_fx[1], hStereoICBWE->mem_nrg_R_fx[0] ); // hStereoICBWE->mem_nrg_L_fx_e[1] + hStereoICBWE->mem_nrg_R_fx_e[1] @@ -527,10 +540,20 @@ static void icbwe_dft_stereo_param_ivas_fx( } hStereoICBWE->prevSpecMapping_fx = spec_table_fx[spIndx]; // q31 - /* ic bwe spec mapping application */ - deemph_fx_32( 0, shb_synth_nonref_fx, extract_l( L_shr( hStereoICBWE->prevSpecMapping_fx, 16 ) ), L_FRAME16k, &hStereoICBWE->memShbSpecMapping_fx ); // shb_synth_nonref_e - hStereoICBWE->memShbSpecMapping_e = shb_synth_nonref_e; + + max_exp = s_max( *shb_synth_nonref_e, sub( hStereoICBWE->memShbSpecMapping_e, norm_l( hStereoICBWE->memShbSpecMapping_fx ) ) ); + + hStereoICBWE->memShbSpecMapping_fx = L_shl( hStereoICBWE->memShbSpecMapping_fx, sub( hStereoICBWE->memShbSpecMapping_e, max_exp ) ); // max_exp + move32(); + hStereoICBWE->memShbSpecMapping_e = max_exp; + move16(); + + scale_sig32( shb_synth_nonref_fx, L_FRAME16k, sub( *shb_synth_nonref_e, max_exp ) ); + *shb_synth_nonref_e = max_exp; move16(); + + /* ic bwe spec mapping application */ + deemph_fx_32( shb_synth_nonref_fx, extract_h( hStereoICBWE->prevSpecMapping_fx ), L_FRAME16k, &hStereoICBWE->memShbSpecMapping_fx ); // shb_synth_nonref_e } ELSE { @@ -572,7 +595,7 @@ static void icbwe_dft_stereo_param_ivas_fx( move32(); move16(); - gsIndx = ic_bwe_enc_gsMapping_ivas_fx( hStereoICBWE->gDes_pastFrame_fx, hStereoICBWE->gDes_pastFrame_e, hStereoICBWE->shbSynthRef_fx, hStereoICBWE->shbSynthRef_e, shb_synth_nonref_fx, &shb_synth_nonref_e, &( hStereoICBWE->prevgsMapping_fx ), &( hStereoICBWE->prevgsMapping_e ), hStereoICBWE->memGsEnerMap_fx, &hStereoICBWE->memGsEnerMap_e, st->element_mode ); /* Q0 */ + gsIndx = ic_bwe_enc_gsMapping_ivas_fx( hStereoICBWE->gDes_pastFrame_fx, hStereoICBWE->gDes_pastFrame_e, hStereoICBWE->shbSynthRef_fx, hStereoICBWE->shbSynthRef_e, shb_synth_nonref_fx, shb_synth_nonref_e, &( hStereoICBWE->prevgsMapping_fx ), &( hStereoICBWE->prevgsMapping_e ), hStereoICBWE->memGsEnerMap_fx, &hStereoICBWE->memGsEnerMap_e, st->element_mode ); /* Q0 */ hStereoICBWE->gDes_pastFrame_fx = L_deposit_h( gDes_fx ); /* Q31-exp */ hStereoICBWE->gDes_pastFrame_e = exp; @@ -800,7 +823,7 @@ void stereo_icBWE_enc_ivas_fx( move16(); } - icbwe_dft_stereo_param_ivas_fx( hStereoICBWE, hStereoDft, st, shb_synth_nonref_fx, shb_synth_nonref_e ); + icbwe_dft_stereo_param_ivas_fx( hStereoICBWE, hStereoDft, st, shb_synth_nonref_fx, &shb_synth_nonref_e ); } ELSE { @@ -1020,14 +1043,7 @@ void stereo_icBWE_enc_ivas_fx( IF( ( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, WB_TBE ) || EQ_16( st->extl, FB_TBE ) ) && EQ_16( st->flag_ACELP16k, 1 ) ) { /* IC BWE spectral mapping */ - Word32 max_abs_val; - maximum_abs_32_fx( shb_synth_nonref_fx, L_FRAME16k, &max_abs_val ); - IF( max_abs_val > 0 ) - { - scale_sig32( shb_synth_nonref_fx, L_FRAME16k, -1 ); - shb_synth_nonref_e = sub( shb_synth_nonref_e, -1 ); - } - spIndx = ic_bwe_enc_specMapping_ivas_fx( shb_frame_nonref_fx, shb_frame_nonref_e, shb_synth_nonref_fx, shb_synth_nonref_e, &( hStereoICBWE->prevSpecMapping_fx ), &( hStereoICBWE->memShbSpecMapping_fx ), hStereoICBWE->memShbSpecXcorr_fx, &( hStereoICBWE->memShbSpecXcorr_e ) ); /* Q0 */ + spIndx = ic_bwe_enc_specMapping_ivas_fx( shb_frame_nonref_fx, shb_frame_nonref_e, shb_synth_nonref_fx, &shb_synth_nonref_e, &( hStereoICBWE->prevSpecMapping_fx ), &( hStereoICBWE->memShbSpecMapping_fx ), &( hStereoICBWE->memShbSpecMapping_e ), hStereoICBWE->memShbSpecXcorr_fx, &( hStereoICBWE->memShbSpecXcorr_e ) ); /* Q0 */ } ELSE { -- GitLab From eb76c9cb525514513b14b663f4a9f7bce45ab6b8 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 28 Mar 2025 16:33:13 +0530 Subject: [PATCH 075/698] Crash fix when Debugging mode was enabled --- lib_enc/ivas_core_pre_proc_front_fx.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index 0eb6d1887..ec752e71a 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -242,8 +242,16 @@ ivas_error pre_proc_front_ivas_fx( move16(); #ifdef DEBUG_MODE_INFO - in_buff_temp = hSCE->hCoreCoder[n]->input32_fx; - in_q_temp = hSCE->hCoreCoder[n]->q_inp32; + IF( hSCE != NULL ) + { + in_buff_temp = hSCE->hCoreCoder[n]->input32_fx; + in_q_temp = hSCE->hCoreCoder[n]->q_inp32; + } + ELSE + { + in_buff_temp = hCPE->hCoreCoder[n]->input32_fx; + in_q_temp = hCPE->hCoreCoder[n]->q_inp32; + } #endif -- GitLab From 7e5738514934f1352dbda55ef54544ff955754b8 Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Wed, 26 Mar 2025 14:54:23 +0100 Subject: [PATCH 076/698] minimal code cleanup in ivas_smc_gmm_fx(). There were two unncessary IF clauses which could be replaced with L_max. --- lib_enc/speech_music_classif_fx.c | 49 ++++++++++++------------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index 63c0d5d54..189e6a8e2 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -856,16 +856,8 @@ static Word16 sp_mus_classif_gmm_fx( /* o : decis FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { /*mx = PS_norm[i] > st->past_PS[i] ? PS_norm[i] : st->past_PS[i];*/ - IF( GT_32( PS_norm[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) ) - { - mx = PS_norm[i]; - move16(); /*Q25 */ - } - ELSE - { - mx = hSpMusClas->past_PS_fx[i - LOWEST_FBIN]; - move16(); /*Q25 */ - } + mx = L_max( PS_norm[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); + move16(); /*Q25 */ /*ps_sta += mx / (dPS[i] + 1e-5f);*/ IF( !dPS[i] ) @@ -1611,7 +1603,7 @@ Word16 ivas_smc_gmm_fx( Word32 ps_fx[N_SMC_MIXTURES], pm_fx[N_SMC_MIXTURES], pn_fx[N_SMC_MIXTURES]; Word64 wprob_fx; Word32 fvm_fx[N_PCA_COEF]; - Word32 sum_PS_fx, ps_diff_fx, ps_sta_fx; + Word32 sum_PS_fx, ps_diff_fx; Word32 dlp_fx, wrelE_fx, wdrop_fx, wght_fx; Word32 wrise_fx; Word16 dlp_mean2var_fx; @@ -1989,32 +1981,29 @@ Word16 ivas_smc_gmm_fx( move32(); /* [14] ps_sta (spectral stationarity) */ - ps_sta_fx = 0; - move32(); - Word16 ps_sta_exp = 0; - move16(); - FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { - IF( GT_32( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) ) + Word32 ps_sta_fx = 0; + move32(); + Word16 ps_sta_exp = 0; + move16(); + Word32 avoid_divide_by_zero; + avoid_divide_by_zero = L_shr( 21475, sub( 31, Qfact_PS_past ) ); // 21475 = 1e-5 in Q31 + FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { - temp32 = BASOP_Util_Divide3232_Scale_cadence( PS_norm_fx[i], ( L_add( dPS_fx[i], L_shr( 21475, sub( 31, Qfact_PS_past ) ) ) ), &temp_exp ); // 31-temp_exp + Word32 tmp_max; + tmp_max = L_max(PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); + + temp32 = BASOP_Util_Divide3232_Scale_cadence( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp move32(); ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp ); move32(); } - ELSE - { - // ps_sta += hSpMusClas->past_PS[i - LOWEST_FBIN] / ( dPS[i] + 1e-5f ); - temp32 = BASOP_Util_Divide3232_Scale_cadence( hSpMusClas->past_PS_fx[i - LOWEST_FBIN], ( L_add( dPS_fx[i], L_shr( 21475, sub( 31, Qfact_PS_past ) ) ) ), &temp_exp ); // 31-temp_exp - ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp ); - } + temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) ); + temp32_log = Mpy_32_32( temp32_log, 1488522239 ); /*logf(x) = log2(x)*logf(2)*/ + *pFV_fx++ = L_shr( temp32_log, Q5 ); // logf( ps_sta + 1e-5f ); + move32(); + MVR2R_WORD32( &PS_norm_fx[LOWEST_FBIN], hSpMusClas->past_PS_fx, HIGHEST_FBIN - LOWEST_FBIN ); } - // temp32_log = L_add( BASOP_Util_Log2( L_add( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) ); - temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) ); - temp32_log = Mpy_32_32( temp32_log, 1488522239 ); /*logf(x) = log2(x)*logf(2)*/ - *pFV_fx++ = L_shr( temp32_log, Q5 ); // logf( ps_sta + 1e-5f ); - move32(); - MVR2R_WORD32( &PS_norm_fx[LOWEST_FBIN], hSpMusClas->past_PS_fx, HIGHEST_FBIN - LOWEST_FBIN ); /* save ps_diff and ps_sta features for XTALK and UNCLR classifier */ IF( hStereoClassif != NULL ) -- GitLab From a4a0941a200ae798dd1e99b5e7ccf75e8645a244 Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Wed, 26 Mar 2025 15:24:44 +0100 Subject: [PATCH 077/698] applied the clang patch. --- lib_enc/speech_music_classif_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index 189e6a8e2..c293ceb3d 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -1991,7 +1991,7 @@ Word16 ivas_smc_gmm_fx( FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { Word32 tmp_max; - tmp_max = L_max(PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); + tmp_max = L_max( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); temp32 = BASOP_Util_Divide3232_Scale_cadence( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp move32(); -- GitLab From dbb240ebb931eafa0778e3479c5e21f0edf0b833 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Fri, 28 Mar 2025 13:45:15 +0100 Subject: [PATCH 078/698] remove unnecessary moves16(), move32(), keep closer to original code --- lib_enc/speech_music_classif_fx.c | 40 ++++++++++++++----------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index c293ceb3d..3f6449a0c 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -856,8 +856,7 @@ static Word16 sp_mus_classif_gmm_fx( /* o : decis FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { /*mx = PS_norm[i] > st->past_PS[i] ? PS_norm[i] : st->past_PS[i];*/ - mx = L_max( PS_norm[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); - move16(); /*Q25 */ + mx = L_max( PS_norm[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); /*Q25 */ /*ps_sta += mx / (dPS[i] + 1e-5f);*/ IF( !dPS[i] ) @@ -1981,29 +1980,26 @@ Word16 ivas_smc_gmm_fx( move32(); /* [14] ps_sta (spectral stationarity) */ + Word32 ps_sta_fx = 0; + move32(); + Word16 ps_sta_exp = 0; + move16(); + Word32 avoid_divide_by_zero; + avoid_divide_by_zero = L_shr( 21475, sub( 31, Qfact_PS_past ) ); // 21475 = 1e-5 in Q31 + + FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { - Word32 ps_sta_fx = 0; - move32(); - Word16 ps_sta_exp = 0; - move16(); - Word32 avoid_divide_by_zero; - avoid_divide_by_zero = L_shr( 21475, sub( 31, Qfact_PS_past ) ); // 21475 = 1e-5 in Q31 - FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) - { - Word32 tmp_max; - tmp_max = L_max( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); + Word32 tmp_max; + tmp_max = L_max( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); - temp32 = BASOP_Util_Divide3232_Scale_cadence( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp - move32(); - ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp ); - move32(); - } - temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) ); - temp32_log = Mpy_32_32( temp32_log, 1488522239 ); /*logf(x) = log2(x)*logf(2)*/ - *pFV_fx++ = L_shr( temp32_log, Q5 ); // logf( ps_sta + 1e-5f ); - move32(); - MVR2R_WORD32( &PS_norm_fx[LOWEST_FBIN], hSpMusClas->past_PS_fx, HIGHEST_FBIN - LOWEST_FBIN ); + temp32 = BASOP_Util_Divide3232_Scale_cadence( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp + ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp ); } + temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) ); + temp32_log = Mpy_32_32( temp32_log, 1488522239 ); /*logf(x) = log2(x)*logf(2)*/ + *pFV_fx++ = L_shr( temp32_log, Q5 ); // logf( ps_sta + 1e-5f ); + move32(); + MVR2R_WORD32( &PS_norm_fx[LOWEST_FBIN], hSpMusClas->past_PS_fx, HIGHEST_FBIN - LOWEST_FBIN ); /* save ps_diff and ps_sta features for XTALK and UNCLR classifier */ IF( hStereoClassif != NULL ) -- GitLab From 7acfb9dbb809362d8822d6de601b99f4f60820ef Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 11 Feb 2025 14:53:41 +0100 Subject: [PATCH 079/698] improve high complexity of param_mc_prm_est: MC/7-1-4/128kBit reduced by 166 WMOPS --- lib_com/options.h | 17 +++++-- lib_enc/ivas_mc_param_enc_fx.c | 83 ++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 4 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index a25ba565e..e35eca130 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -68,9 +68,18 @@ #endif /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ -//#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ -#define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ -#define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ -#define FIX_1310_SPEEDUP_ivas_dirac_dec_output_synthesis_process_slot /*FhG: WMOPS tuning, nonbe*/ #define FIX_1379_MASA_ANGLE_ROUND +#define FIX_1101_IVAS_SPAR_DEC_UPMIXER_SF_USE_MADD_ADD_WEIGHTS /* FhG: Defines 1.0f-weight variables, uses Madd operation instead of L_add_sat */ +#define FIX_1101_IVAS_SPAR_DEC_UPMIXER_SF_SPLIT_LOOPS /* FhG: Splits single loop with IF-statements into two low-complex loops */ +#define FIX_1101_IVAS_SPAR_DEC_UPMIXER_SF_HQ_CONSTANTS /* FhG: IMPROVE PRECISION: Uses 1/6 and 1/20 in full-precise Q31 constants instead of Q15 */ +#define FIX_1101_IVAS_SPAR_DEC_UPMIXER_SF_USE_UNIQUE_SHL /* FhG: Uses unique shift amount in each loop iteration */ +#define FIX_11_1_IVAS_SPAR_DEC_UPMIXER_SF_RND_COEFFS /* FhG ivas_spar_com.c: Zeroes very small negative coeffs via L_shr_r (was L_shr) */ +#define FIX_ISSUE_1237 /* VA: replacement of Copy_Scale_sig_16_32_DEPREC() that are doing 16 bits left shift by Copy_Scale_sig_16_32_no_sat() */ +#define FIX_ISSUE_1237_KEEP_EVS_BE /* VA: Fix to keep EVS bitexactness to 26.444 */ +#define FIX_ISSUE_1214 /* Ittiam: Fix for issue 1214: Energy leakage in IGF tiles for MDCT-stereo @64kbps SWB*/ +#define FIX_881_HILBERT_FILTER /* VA: improve the precision of the Hilbert filter to remove 2kHz unwanted tone */ +#define FIX_ISSUE_1245 /* Ittiam: Fix for issue 1245: Basop Encoder: Audible noise for silent Stereo input DTX on @24.4 kbps, @32 kbps*/ +#define FIX_MINOR_SVD_WMOPS_MR1010X /* FhG: Minor WMOPS tuning, bit-exact to previous version, saves about 8.2 WMOPS for MR1010 */ +#define SVD_WMOPS_OPT /* Ittiam : SVD related optimizations */ +#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */ #endif diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 039bbdf98..37ae4ef91 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -720,9 +720,16 @@ static void ivas_param_mc_param_est_enc_fx( } } +#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST + Word16 gb = find_guarded_bits_fx( l_ts ); + Word16 add20gb = add( 20, gb ); +#endif + FOR( ts = start_ts; ts < num_time_slots; ts++ ) { +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST Word16 gb = find_guarded_bits_fx( l_ts ); +#endif ivas_fb_mixer_get_windowed_fr_fx( hParamMC->hFbMixer, pcm_in_fx, p_slot_frame_f_real_fx, p_slot_frame_f_imag_fx, l_ts, l_ts, hParamMC->hFbMixer->fb_cfg->num_in_chans, gb ); ivas_fb_mixer_update_prior_input_fx( hParamMC->hFbMixer, pcm_in_fx, l_ts, hParamMC->hFbMixer->fb_cfg->num_in_chans ); @@ -807,10 +814,25 @@ static void ivas_param_mc_param_est_enc_fx( { FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST a_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &a_e ); b_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &b_e ); c_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &c_e ); d_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &d_e ); +#else + a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band]); + a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e); + a_e = sub(add20gb, a_e); + b_e = norm_l( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band] ); + b_fx = L_shl( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], b_e ); + b_e = sub( add20gb, b_e ); + c_e = norm_l( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band] ); + c_fx = L_shl( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], c_e ); + c_e = sub( add20gb, c_e ); + d_e = norm_l( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band] ); + d_fx = L_shl( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], d_e ); + d_e = sub( add20gb, d_e ); +#endif /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); @@ -841,6 +863,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST dmx_real_fx[ch_idx1] = 0; move32(); dmx_real_e[ch_idx1] = 0; @@ -860,13 +883,49 @@ static void ivas_param_mc_param_est_enc_fx( move32(); p_dmx_fac_fx++; } +#else + Word32 real_fx = L_add(0, 0); + Word16 real_e = 0; + move16(); + Word32 imag_fx = L_add( 0, 0 ); + Word16 imag_e = 0; + move16(); + + FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ ) + { + L_tmp = Mpy_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ); + real_fx = BASOP_Util_Add_Mant32Exp( real_fx, real_e, L_tmp, add20gb, &real_e ); + L_tmp = Mpy_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ); + imag_fx = BASOP_Util_Add_Mant32Exp( imag_fx, imag_e, L_tmp, add( 20, gb ), &imag_e ); + p_dmx_fac_fx++; + } + dmx_real_fx[ch_idx1] = real_fx; + move32(); + dmx_real_e[ch_idx1] = real_e; + move16(); + dmx_imag_fx[ch_idx1] = imag_fx; + move32(); + dmx_imag_e[ch_idx1] = imag_e; + move16(); +#endif } /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { +#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST + a_fx = dmx_real_fx[ch_idx1]; + move32(); + a_e = dmx_real_e[ch_idx1]; + move16(); + b_fx = dmx_imag_fx[ch_idx1]; + move32(); + b_e = dmx_imag_e[ch_idx1]; + move16(); +#endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST a_fx = dmx_real_fx[ch_idx1]; move32(); a_e = dmx_real_e[ch_idx1]; @@ -888,6 +947,12 @@ static void ivas_param_mc_param_est_enc_fx( L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e, &Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] ); +#else + /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ + L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, dmx_real_fx[ch_idx2] ), add( a_e, dmx_real_e[ch_idx2] ), Mpy_32_32( b_fx, dmx_imag_fx[ch_idx2] ), add( b_e, dmx_imag_e[ch_idx2] ), &tmp_e ); + Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e, + &Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] ); +#endif move32(); } } @@ -895,12 +960,30 @@ static void ivas_param_mc_param_est_enc_fx( /* Cy for input channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_input; ++ch_idx1 ) { +#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST + a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] ); + a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e ); + a_e = sub( add20gb, a_e ); + b_e = norm_l( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band] ); + b_fx = L_shl( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], b_e ); + b_e = sub( add20gb, b_e ); +#endif FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST a_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &a_e ); b_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &b_e ); c_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &c_e ); d_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &d_e ); +#else + + c_e = norm_l( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band] ); + c_fx = L_shl( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], c_e ); + c_e = sub( add20gb, c_e ); + d_e = norm_l( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band] ); + d_fx = L_shl( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], d_e ); + d_e = sub( add20gb, d_e ); +#endif /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); -- GitLab From 26732f809b1397fe77800cf545d195caf95f3b92 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 11 Feb 2025 15:26:46 +0100 Subject: [PATCH 080/698] fix clang-fomat-issues --- lib_enc/ivas_mc_param_enc_fx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 37ae4ef91..788273b94 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -820,9 +820,9 @@ static void ivas_param_mc_param_est_enc_fx( c_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &c_e ); d_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &d_e ); #else - a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band]); - a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e); - a_e = sub(add20gb, a_e); + a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] ); + a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e ); + a_e = sub( add20gb, a_e ); b_e = norm_l( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band] ); b_fx = L_shl( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], b_e ); b_e = sub( add20gb, b_e ); @@ -884,7 +884,7 @@ static void ivas_param_mc_param_est_enc_fx( p_dmx_fac_fx++; } #else - Word32 real_fx = L_add(0, 0); + Word32 real_fx = L_add( 0, 0 ); Word16 real_e = 0; move16(); Word32 imag_fx = L_add( 0, 0 ); -- GitLab From 0a4281e6c2204efcd9d764477c2fb69f99a85b4e Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 13 Feb 2025 22:07:15 +0100 Subject: [PATCH 081/698] completed tuning of MC param: no more BE now --- lib_com/options.h | 3 +- lib_enc/ivas_mc_param_enc_fx.c | 59 ++++++++++++++++++++++++++++------ 2 files changed, 51 insertions(+), 11 deletions(-) mode change 100644 => 100755 lib_enc/ivas_mc_param_enc_fx.c diff --git a/lib_com/options.h b/lib_com/options.h index e35eca130..bfff1b66a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,5 +81,6 @@ #define FIX_ISSUE_1245 /* Ittiam: Fix for issue 1245: Basop Encoder: Audible noise for silent Stereo input DTX on @24.4 kbps, @32 kbps*/ #define FIX_MINOR_SVD_WMOPS_MR1010X /* FhG: Minor WMOPS tuning, bit-exact to previous version, saves about 8.2 WMOPS for MR1010 */ #define SVD_WMOPS_OPT /* Ittiam : SVD related optimizations */ -#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */ +#define NONBE_FIX_1087_OOB_SBA_DTX_RS /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */ +#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version */ #endif diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c old mode 100644 new mode 100755 index 788273b94..d150b1473 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -812,6 +812,24 @@ static void ivas_param_mc_param_est_enc_fx( /* Cy for input channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_input; ++ch_idx1 ) { +#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST + a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] ); + a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e ); + a_e = sub( add20gb, a_e ); + if ( a_fx == 0 ) + { + a_e = 0; + move16(); + } + b_e = norm_l( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band] ); + b_fx = L_shl( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], b_e ); + b_e = sub( add20gb, b_e ); + if ( b_fx == 0 ) + { + b_e = 0; + move16(); + } +#endif FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { #ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST @@ -820,20 +838,23 @@ static void ivas_param_mc_param_est_enc_fx( c_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &c_e ); d_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &d_e ); #else - a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] ); - a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e ); - a_e = sub( add20gb, a_e ); - b_e = norm_l( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band] ); - b_fx = L_shl( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], b_e ); - b_e = sub( add20gb, b_e ); c_e = norm_l( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band] ); c_fx = L_shl( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], c_e ); c_e = sub( add20gb, c_e ); + if ( c_fx == 0 ) + { + c_e = 0; + move16(); + } d_e = norm_l( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band] ); d_fx = L_shl( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], d_e ); d_e = sub( add20gb, d_e ); + if ( d_fx == 0 ) + { + d_e = 0; + move16(); + } #endif - /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cy_sum_e[cur_param_band][ch_idx1][ch_idx2], @@ -896,7 +917,7 @@ static void ivas_param_mc_param_est_enc_fx( L_tmp = Mpy_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ); real_fx = BASOP_Util_Add_Mant32Exp( real_fx, real_e, L_tmp, add20gb, &real_e ); L_tmp = Mpy_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ); - imag_fx = BASOP_Util_Add_Mant32Exp( imag_fx, imag_e, L_tmp, add( 20, gb ), &imag_e ); + imag_fx = BASOP_Util_Add_Mant32Exp( imag_fx, imag_e, L_tmp, add20gb, &imag_e ); p_dmx_fac_fx++; } dmx_real_fx[ch_idx1] = real_fx; @@ -964,9 +985,19 @@ static void ivas_param_mc_param_est_enc_fx( a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] ); a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e ); a_e = sub( add20gb, a_e ); + if ( a_fx == 0 ) + { + a_e = 0; + move16(); + } b_e = norm_l( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band] ); b_fx = L_shl( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], b_e ); b_e = sub( add20gb, b_e ); + if ( b_fx == 0 ) + { + b_e = 0; + move16(); + } #endif FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { @@ -976,15 +1007,23 @@ static void ivas_param_mc_param_est_enc_fx( c_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &c_e ); d_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &d_e ); #else - c_e = norm_l( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band] ); c_fx = L_shl( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], c_e ); c_e = sub( add20gb, c_e ); + if ( c_fx == 0 ) + { + c_e = 0; + move16(); + } d_e = norm_l( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band] ); d_fx = L_shl( slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band], d_e ); d_e = sub( add20gb, d_e ); + if ( d_fx == 0 ) + { + d_e = 0; + move16(); + } #endif - /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cy_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e, -- GitLab From a54e71469275581829e4f24cc5229f075e308393 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 20 Feb 2025 10:23:33 +0100 Subject: [PATCH 082/698] version now with 2 macros for NONBE and BE code parts --- lib_enc/ivas_mc_param_enc_fx.c | 44 ++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index d150b1473..c1a8e5877 100755 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -720,14 +720,14 @@ static void ivas_param_mc_param_est_enc_fx( } } -#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#if defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE ) || defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE ) Word16 gb = find_guarded_bits_fx( l_ts ); Word16 add20gb = add( 20, gb ); #endif FOR( ts = start_ts; ts < num_time_slots; ts++ ) { -#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#if !defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE ) && !defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE ) Word16 gb = find_guarded_bits_fx( l_ts ); #endif ivas_fb_mixer_get_windowed_fr_fx( hParamMC->hFbMixer, pcm_in_fx, p_slot_frame_f_real_fx, p_slot_frame_f_imag_fx, l_ts, l_ts, hParamMC->hFbMixer->fb_cfg->num_in_chans, gb ); @@ -738,6 +738,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( i = 0; i < nchan_input; i++ ) { pcm_in_fx[i] += l_ts; + move32(); } /* Computing the downmix */ FOR( cur_param_band = 0; cur_param_band < hParamMC->max_param_band_abs_cov; cur_param_band++ ) @@ -755,6 +756,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE dmx_real_fx[ch_idx1] = 0; move32(); dmx_real_e[ch_idx1] = 0; @@ -773,6 +775,28 @@ static void ivas_param_mc_param_est_enc_fx( move32(); p_dmx_fac_fx++; } +#else + Word32 real_fx = L_add(0,0); + Word16 real_e = add(0, 0); + Word32 imag_fx = L_add( 0, 0 ); + Word16 imag_e = add( 0, 0 ); + FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ ) + { + L_tmp = Mpy_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ); + real_fx = BASOP_Util_Add_Mant32Exp( real_fx, real_e, L_tmp, add20gb, &real_e ); + L_tmp = Mpy_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ); + imag_fx = BASOP_Util_Add_Mant32Exp( imag_fx, imag_e, L_tmp, add20gb, &imag_e ); + p_dmx_fac_fx++; + } + dmx_real_fx[ch_idx1] = real_fx; + dmx_real_e[ch_idx1] = real_e; + dmx_imag_fx[ch_idx1] = imag_fx; + dmx_imag_e[ch_idx1] = imag_e; + move32(); + move16(); + move32(); + move16(); +#endif } /* Cx for transport channels */ @@ -812,7 +836,7 @@ static void ivas_param_mc_param_est_enc_fx( /* Cy for input channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_input; ++ch_idx1 ) { -#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] ); a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e ); a_e = sub( add20gb, a_e ); @@ -832,7 +856,7 @@ static void ivas_param_mc_param_est_enc_fx( #endif FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { -#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE a_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &a_e ); b_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &b_e ); c_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &c_e ); @@ -884,7 +908,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE dmx_real_fx[ch_idx1] = 0; move32(); dmx_real_e[ch_idx1] = 0; @@ -934,7 +958,7 @@ static void ivas_param_mc_param_est_enc_fx( /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE a_fx = dmx_real_fx[ch_idx1]; move32(); a_e = dmx_real_e[ch_idx1]; @@ -946,7 +970,7 @@ static void ivas_param_mc_param_est_enc_fx( #endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { -#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE a_fx = dmx_real_fx[ch_idx1]; move32(); a_e = dmx_real_e[ch_idx1]; @@ -981,7 +1005,7 @@ static void ivas_param_mc_param_est_enc_fx( /* Cy for input channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_input; ++ch_idx1 ) { -#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE a_e = norm_l( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band] ); a_fx = L_shl( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], a_e ); a_e = sub( add20gb, a_e ); @@ -1001,7 +1025,7 @@ static void ivas_param_mc_param_est_enc_fx( #endif FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { -#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST +#ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE a_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &a_e ); b_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_imag_fx[ch_idx1][cur_cldfb_band], add( 20, gb ), 0, 0, &b_e ); c_fx = BASOP_Util_Add_Mant32Exp( slot_frame_f_real_fx[ch_idx2][cur_cldfb_band], add( 20, gb ), 0, 0, &c_e ); @@ -1028,7 +1052,7 @@ static void ivas_param_mc_param_est_enc_fx( L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cy_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e, &Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] ); - move32(); +pri move32(); } } } -- GitLab From 10a3bd68e413c0a5632f78c975bbee1bd1ca2553 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 20 Feb 2025 10:25:46 +0100 Subject: [PATCH 083/698] fix stupid typo --- lib_enc/ivas_mc_param_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index c1a8e5877..1e681d030 100755 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -1052,7 +1052,7 @@ static void ivas_param_mc_param_est_enc_fx( L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cy_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e, &Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] ); -pri move32(); + move32(); } } } -- GitLab From 6116f7b9779c57d13914f1454bd8c7d8c7f19d83 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 20 Feb 2025 10:28:27 +0100 Subject: [PATCH 084/698] fix clang-format-issues --- lib_enc/ivas_mc_param_enc_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100755 => 100644 lib_enc/ivas_mc_param_enc_fx.c diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c old mode 100755 new mode 100644 index 1e681d030..92cd33e2f --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -776,8 +776,8 @@ static void ivas_param_mc_param_est_enc_fx( p_dmx_fac_fx++; } #else - Word32 real_fx = L_add(0,0); - Word16 real_e = add(0, 0); + Word32 real_fx = L_add( 0, 0 ); + Word16 real_e = add( 0, 0 ); Word32 imag_fx = L_add( 0, 0 ); Word16 imag_e = add( 0, 0 ); FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ ) -- GitLab From 05442c393d4e0db6bc2c220fcfbf1ecf2c40cacb Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 20 Feb 2025 11:32:40 +0100 Subject: [PATCH 085/698] deactivated temporarily the NONBE part of this MR to check the pipeline results --- lib_com/options.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index bfff1b66a..c83adeb3a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,6 +81,11 @@ #define FIX_ISSUE_1245 /* Ittiam: Fix for issue 1245: Basop Encoder: Audible noise for silent Stereo input DTX on @24.4 kbps, @32 kbps*/ #define FIX_MINOR_SVD_WMOPS_MR1010X /* FhG: Minor WMOPS tuning, bit-exact to previous version, saves about 8.2 WMOPS for MR1010 */ #define SVD_WMOPS_OPT /* Ittiam : SVD related optimizations */ -#define NONBE_FIX_1087_OOB_SBA_DTX_RS /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */ -#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version */ +// #define NONBE_FIX_1087_OOB_SBA_DTX_RS /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */ +/* Both following 2 macros (IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST*) are independent from each other, they refer to different code blocks */ +#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */ +//#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version */ +#define NONBE_FIX_1087_OOB_SBA_DTX_RS /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */ +#define FIX_ISSUE_1279 /* VA: correction of wrong scaling update */ +#define FIX_ISSUE_1247 #endif -- GitLab From fc387514c9302e926028e13f5bdd8c150f8fc743 Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 20 Feb 2025 14:57:16 +0100 Subject: [PATCH 086/698] reactivated NONBE modifications to see pipeline effects --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index c83adeb3a..6b0cbedc8 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,7 +84,7 @@ // #define NONBE_FIX_1087_OOB_SBA_DTX_RS /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */ /* Both following 2 macros (IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST*) are independent from each other, they refer to different code blocks */ #define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */ -//#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version */ +#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version */ #define NONBE_FIX_1087_OOB_SBA_DTX_RS /* VA: issue 1087: Extend the length of the buffer for MCT decoding to avoid out-of-bound writing in SBA SID bitrate switching decoding */ #define FIX_ISSUE_1279 /* VA: correction of wrong scaling update */ #define FIX_ISSUE_1247 -- GitLab From a580e8872979581d899534faa09f43d79d8b76dc Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 25 Mar 2025 13:55:52 -0400 Subject: [PATCH 087/698] replace EVS push_indice_fx with push_indice (from IVAS) --- lib_com/bitstream_fx.c | 6 +-- lib_com/gs_gains_fx.c | 28 ++++++------- lib_com/hq_tools_fx.c | 4 +- lib_com/pvq_com_fx.c | 2 +- lib_enc/FEC_enc_fx.c | 6 +-- lib_enc/acelp_core_enc_fx.c | 4 +- lib_enc/acelp_core_switch_enc_fx.c | 8 ++-- lib_enc/amr_wb_enc_fx.c | 2 +- lib_enc/avq_cod_fx.c | 20 +++++----- lib_enc/cng_enc_fx.c | 24 +++++------ lib_enc/cod2t32_fx.c | 6 +-- lib_enc/cod4t64_fx.c | 30 +++++++------- lib_enc/decision_matrix_enc_fx.c | 64 +++++++++++++++--------------- lib_enc/enc_amr_wb_fx.c | 4 +- lib_enc/enc_gen_voic_fx.c | 6 +-- lib_enc/enc_higher_acelp_fx.c | 4 +- lib_enc/enc_pit_exc_fx.c | 6 +-- lib_enc/enc_tran_fx.c | 62 ++++++++++++++--------------- lib_enc/enc_uv_fx.c | 2 +- lib_enc/eval_pit_contr_fx.c | 6 +-- lib_enc/fd_cng_enc_fx.c | 12 +++--- lib_enc/gain_enc_fx.c | 20 +++++----- lib_enc/gaus_enc_fx.c | 6 +-- lib_enc/gs_enc_fx.c | 20 +++++----- lib_enc/hq_classifier_enc_fx.c | 8 ++-- lib_enc/hq_core_enc_fx.c | 8 ++-- lib_enc/hq_env_enc_fx.c | 24 +++++------ lib_enc/hq_hr_enc_fx.c | 4 +- lib_enc/hq_lr_enc_fx.c | 62 ++++++++++++++--------------- lib_enc/hvq_enc_fx.c | 2 +- lib_enc/isf_enc_amr_wb_fx.c | 34 ++++++++-------- lib_enc/lsf_enc_fx.c | 18 ++++----- lib_enc/nelp_enc_fx.c | 8 ++-- lib_enc/peak_vq_enc_fx.c | 36 ++++++++--------- lib_enc/pit_enc_fx.c | 8 ++-- lib_enc/ppp_enc_fx.c | 8 ++-- lib_enc/range_enc_fx.c | 8 ++-- lib_enc/stat_noise_uv_enc_fx.c | 2 +- lib_enc/swb_bwe_enc_fx.c | 46 ++++++++++----------- lib_enc/swb_bwe_enc_hr_fx.c | 22 +++++----- lib_enc/swb_bwe_enc_lr_fx.c | 6 +-- lib_enc/swb_tbe_enc_fx.c | 28 ++++++------- lib_enc/tcq_core_enc_fx.c | 4 +- lib_enc/transition_enc_fx.c | 36 ++++++++--------- lib_enc/voiced_enc_fx.c | 2 +- 45 files changed, 363 insertions(+), 363 deletions(-) diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index e144c2cc9..667958264 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -240,11 +240,11 @@ Word16 rate2EVSmode( } /*-------------------------------------------------------------------* - * push_indice_fx( ) + * push_indice( ) * * Push a new indice into the buffer *-------------------------------------------------------------------*/ - +#if 0 void push_indice_fx( BSTR_ENC_HANDLE hBstr, /* i/o: encoder state structure */ Word16 id, /* i : ID of the indice */ @@ -288,7 +288,7 @@ void push_indice_fx( return; } - +#endif /*-------------------------------------------------------------------* * push_next_indice_fx() * * Push a new indice into the buffer at the next position diff --git a/lib_com/gs_gains_fx.c b/lib_com/gs_gains_fx.c index 35236b603..ecfe9aae0 100644 --- a/lib_com/gs_gains_fx.c +++ b/lib_com/gs_gains_fx.c @@ -1028,7 +1028,7 @@ Word16 gsc_gainQ_fx( /*Q12*/ mean_4g[0] = round_fx( L_tmp ); move16(); idx_g = vquant_fx( mean_4g, Gain_meanNB_fx, mean_4g, Gain_mean_dicNB_fx, 1, 64 ); - push_indice_fx( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); + push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); FOR( i = 0; i < Mbands_gn; i++ ) { @@ -1040,21 +1040,21 @@ Word16 gsc_gainQ_fx( /*Q12*/ move16(); set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 ); idx_g = vquant_fx( y_gain_tmp, Mean_dic_NB_fx, y_gain_tmp, Gain_dic1_NB_fx, 3, 64 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); IF( LT_32( core_brate, ACELP_9k60 ) ) { idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NB_fx, 3, 32 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NB_fx, 4, 16 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); } ELSE { idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NBHR_fx, 3, 64 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NBHR_fx, 4, 128 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 7 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 ); } /*add end */ test(); @@ -1122,7 +1122,7 @@ Word16 gsc_gainQ_fx( /*Q12*/ move16(); idx_g = vquant_fx( mean_4g, mean_m_fx, mean_4g, mean_gain_dic_fx, 1, 64 ); - push_indice_fx( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); + push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); FOR( i = 0; i < Mbands_gn; i++ ) { @@ -1148,11 +1148,11 @@ Word16 gsc_gainQ_fx( /*Q12*/ move16(); idx_g = vquant_fx( y_gain_tmp2, YGain_mean_LR_fx, y_gain_tmp2, YGain_dic1_LR_fx, 3, 32 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); idx_g = vquant_fx( y_gain_tmp2 + 3, YGain_mean_LR_fx + 3, y_gain_tmp2 + 3, YGain_dic2_LR_fx, 4, 32 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); idx_g = vquant_fx( y_gain_tmp2 + 7, YGain_mean_LR_fx + 7, y_gain_tmp2 + 7, YGain_dic3_LR_fx, 5, 32 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); set16_fx( y_gain_tmp2 + 12, 0, MBANDS_GN - 12 ); /* Update to quantized vector */ @@ -1185,13 +1185,13 @@ Word16 gsc_gainQ_fx( /*Q12*/ ELSE { idx_g = vquant_fx( y_gain_tmp, YG_mean16_fx, y_gain_tmp, YG_dicMR_1_fx, 4, 64 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16_fx + 4, y_gain_tmp + 4, YG_dicMR_2_fx, 4, 32 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16_fx + 8, y_gain_tmp + 8, YG_dicMR_3_fx, 4, 32 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16_fx + 12, y_gain_tmp + 12, YG_dicMR_4_fx, 4, 16 ); - push_indice_fx( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); } } diff --git a/lib_com/hq_tools_fx.c b/lib_com/hq_tools_fx.c index cf3ce202e..0e00b9428 100644 --- a/lib_com/hq_tools_fx.c +++ b/lib_com/hq_tools_fx.c @@ -2036,7 +2036,7 @@ Word16 calc_nor_delta_hf_fx( /* updating norm & storing delta norm */ add_bits_denv = 2; move16(); - push_indice_fx( hBstr, IND_DELTA_ENV_HQ, sub( bitsforDelta, 2 ), 2 ); + push_indice( hBstr, IND_DELTA_ENV_HQ, sub( bitsforDelta, 2 ), 2 ); FOR( i = num_env_bands; i < nb_sfm; ++i ) { IF( Rsubband[i] != 0 ) @@ -2052,7 +2052,7 @@ Word16 calc_nor_delta_hf_fx( delta = min_delta; /*Q0*/ move16(); } - push_indice_fx( hBstr, IND_DELTA_ENV_HQ, delta - min_delta, bitsforDelta ); + push_indice( hBstr, IND_DELTA_ENV_HQ, delta - min_delta, bitsforDelta ); ynrm[i] = add( ynrm[i], delta ); /*Q0*/ move16(); add_bits_denv = add( add_bits_denv, bitsforDelta ); diff --git a/lib_com/pvq_com_fx.c b/lib_com/pvq_com_fx.c index 479bc04d9..9cf1226d8 100644 --- a/lib_com/pvq_com_fx.c +++ b/lib_com/pvq_com_fx.c @@ -622,7 +622,7 @@ void fine_gain_quant_fx( gain_db = round_fx_sat( L_shl_o( L_tmp, 17, &Overflow ) ); idx = squant_fx( gain_db, &gain_dbq, finegain_fx[gbits - 1], gain_cb_size[gbits - 1] ); - push_indice_fx( hBstr, IND_PVQ_FINE_GAIN, idx, gbits ); + push_indice( hBstr, IND_PVQ_FINE_GAIN, idx, gbits ); L_tmp = L_mult0( gain_dbq, 21771 ); /* 21771=0.05*log2(10) */ /* 14+17=31 */ L_tmp = L_shr( L_tmp, 15 ); /* Q16 */ diff --git a/lib_enc/FEC_enc_fx.c b/lib_enc/FEC_enc_fx.c index 87243e8d2..69b14eb9b 100644 --- a/lib_enc/FEC_enc_fx.c +++ b/lib_enc/FEC_enc_fx.c @@ -94,7 +94,7 @@ void FEC_encode_fx( index = 3; move16(); } - push_indice_fx( hBstr, IND_FEC_CLAS, index, FEC_BITS_CLS ); + push_indice( hBstr, IND_FEC_CLAS, index, FEC_BITS_CLS ); } /*-----------------------------------------------------------------* @@ -117,7 +117,7 @@ void FEC_encode_fx( tmpS = s_min( tmpS, 31 ); tmpS = s_max( tmpS, 0 ); - push_indice_fx( hBstr, IND_FEC_ENR, tmpS, FEC_BITS_ENR ); + push_indice( hBstr, IND_FEC_ENR, tmpS, FEC_BITS_ENR ); } /*-----------------------------------------------------------------* * Encode last glottal pulse position (8 bits) @@ -157,7 +157,7 @@ void FEC_encode_fx( maxi = add( maxi, 128 ); /* use 8 bits (MSB represent the sign of the pulse) Q0*/ } - push_indice_fx( hBstr, IND_FEC_POS, maxi, FEC_BITS_POS ); + push_indice( hBstr, IND_FEC_POS, maxi, FEC_BITS_POS ); } maxi = 0; move16(); diff --git a/lib_enc/acelp_core_enc_fx.c b/lib_enc/acelp_core_enc_fx.c index f9f941dbd..795f03403 100644 --- a/lib_enc/acelp_core_enc_fx.c +++ b/lib_enc/acelp_core_enc_fx.c @@ -472,7 +472,7 @@ ivas_error acelp_core_enc_fx( IF( nb_bits > 0 ) { Es_pred_enc_fx( &Es_pred_fx, &indice, st_fx->L_frame, res_fx, st_fx->voicing_fx, nb_bits, 0, Q_new ); - push_indice_fx( st_fx->hBstr, IND_ES_PRED, indice, nb_bits ); + push_indice( st_fx->hBstr, IND_ES_PRED, indice, nb_bits ); } @@ -619,7 +619,7 @@ ivas_error acelp_core_enc_fx( WHILE( nBits > 0 ) { i = s_min( nBits, 16 ); // Q0 - push_indice_fx( st_fx->hBstr, IND_UNUSED, 0, i ); + push_indice( st_fx->hBstr, IND_UNUSED, 0, i ); nBits = sub( nBits, i ); // Q0 } } diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c index f9058b9b9..9b0ed8b58 100644 --- a/lib_enc/acelp_core_switch_enc_fx.c +++ b/lib_enc/acelp_core_switch_enc_fx.c @@ -441,7 +441,7 @@ static void encod_gen_voic_core_switch_fx( IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) { - push_indice_fx( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); + push_indice( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); } /*-----------------------------------------------------------------* @@ -489,7 +489,7 @@ static void encod_gen_voic_core_switch_fx( /* write reserved bits */ IF( unbits ) { - push_indice_fx( hBstr, IND_UNUSED, 0, unbits ); + push_indice( hBstr, IND_UNUSED, 0, unbits ); } /*-----------------------------------------------------------------* @@ -838,7 +838,7 @@ static void bwe_switch_enc_fx( } } - push_indice_fx( hBstr, IND_CORE_SWITCHING_AUDIO_DELAY, d1m_fx, AUDIODELAYBITS ); + push_indice( hBstr, IND_CORE_SWITCHING_AUDIO_DELAY, d1m_fx, AUDIODELAYBITS ); tmp = add( i_mult2( d1m_fx, delta_fx ), fdelay_fx ); /* Q0 */ ptmp = &hb_synth_tmp_fx[tmp]; /* Q0 */ @@ -867,7 +867,7 @@ static void bwe_switch_enc_fx( L_tmp1 = L_shl( L_tmp1, sub( q_tmp2, 24 ) ); gain_fx = round_fx_o( Isqrt( L_tmp1 ), &Overflow ); /*Q12 */ ind1_fx = usquant_fx( gain_fx, &gain_fx, shr( MINVALUEOFFIRSTGAIN_FX, 1 ), shr( DELTAOFFIRSTGAIN_FX, 4 ), ( 1 << NOOFGAINBITS1 ) ); /* Q0 */ - push_indice_fx( hBstr, IND_CORE_SWITCHING_AUDIO_GAIN, ind1_fx, NOOFGAINBITS1 ); + push_indice( hBstr, IND_CORE_SWITCHING_AUDIO_GAIN, ind1_fx, NOOFGAINBITS1 ); return; } diff --git a/lib_enc/amr_wb_enc_fx.c b/lib_enc/amr_wb_enc_fx.c index b1b2257e2..6f46e5c12 100644 --- a/lib_enc/amr_wb_enc_fx.c +++ b/lib_enc/amr_wb_enc_fx.c @@ -548,7 +548,7 @@ void amr_wb_enc_fx( * Write VAD information into the bitstream in AMR-WB IO mode *--------------------------------------------------------------------------------------*/ - push_indice_fx( st->hBstr, IND_VAD_FLAG, st->vad_flag, 1 ); + push_indice( st->hBstr, IND_VAD_FLAG, st->vad_flag, 1 ); } /*-----------------------------------------------------------------* diff --git a/lib_enc/avq_cod_fx.c b/lib_enc/avq_cod_fx.c index 962b715cd..b3a49c59e 100644 --- a/lib_enc/avq_cod_fx.c +++ b/lib_enc/avq_cod_fx.c @@ -384,20 +384,20 @@ void AVQ_encmux_fx( /* write the unary code */ FOR( ; j > 16; j -= 16 ) { - push_indice_fx( hBstr, nq_ind, 65535, 16 ); + push_indice( hBstr, nq_ind, 65535, 16 ); bits = sub( bits, 16 ); } IF( j > 0 ) { - push_indice_fx( hBstr, nq_ind, extract_l( L_sub( L_shl( 1L, j ), 1L ) ), j ); + push_indice( hBstr, nq_ind, extract_l( L_sub( L_shl( 1L, j ), 1L ) ), j ); bits = sub( bits, j ); } } IF( !overflow ) { /* write the stop bit */ - push_indice_fx( hBstr, nq_ind, 0, 1 ); + push_indice( hBstr, nq_ind, 0, 1 ); bits = sub( bits, 1 ); } @@ -506,13 +506,13 @@ void AVQ_encmux_fx( IF( j > 0 ) { /* write the unary code */ - push_indice_fx( hBstr, nq_ind, sub( shl( 1, j ), 1 ), j ); + push_indice( hBstr, nq_ind, sub( shl( 1, j ), 1 ), j ); } IF( nq[i] != 0 ) { /* write the stop bit */ - push_indice_fx( hBstr, nq_ind, 0, 1 ); + push_indice( hBstr, nq_ind, 0, 1 ); } /*Compute AVQ code book number from unused Bits */ @@ -1099,32 +1099,32 @@ static void wrte_cv( ELSE IF( LT_16( nq, 5 ) ) /* Q2, Q3, Q4 */ { nq4 = shl( nq, 2 ); - push_indice_fx( hBstr, i_ind, I, nq4 ); + push_indice( hBstr, i_ind, I, nq4 ); bits = sub( bits, nq4 ); } ELSE IF( EQ_16( s_and( nq, 1 ), 0 ) ) /* Q4 + Voronoi extensions r=1,2,3,... */ { - push_indice_fx( hBstr, i_ind, I, 4 * 4 ); + push_indice( hBstr, i_ind, I, 4 * 4 ); bits = sub( bits, 4 * 4 ); /*pos = (int16_t)(nq / 2 - 2);*/ /* Voronoi order determination */ pos = sub( shr( nq, 1 ), 2 ); FOR( j = 0; j < 8; j++ ) { - push_indice_fx( hBstr, kv_ind, kv[j], pos ); + push_indice( hBstr, kv_ind, kv[j], pos ); } bits = sub( bits, shl( pos, 3 ) ); } ELSE /* Q3 + Voronoi extensions r=1,2,3,... */ { - push_indice_fx( hBstr, i_ind, I, 4 * 3 ); + push_indice( hBstr, i_ind, I, 4 * 3 ); bits = sub( bits, 4 * 3 ); /*pos = (int16_t)(nq / 2 - 1);*/ /* Voronoi order determination */ pos = sub( shr( nq, 1 ), 1 ); FOR( j = 0; j < 8; j++ ) { - push_indice_fx( hBstr, kv_ind, kv[j], pos ); + push_indice( hBstr, kv_ind, kv[j], pos ); } bits = sub( bits, shl( pos, 3 ) ); diff --git a/lib_enc/cng_enc_fx.c b/lib_enc/cng_enc_fx.c index e2b29ba59..221454970 100644 --- a/lib_enc/cng_enc_fx.c +++ b/lib_enc/cng_enc_fx.c @@ -975,7 +975,7 @@ void CNG_enc_fx( hTdCngEnc->old_enr_index = enr_index; move16(); - push_indice_fx( hBstr, IND_ENERGY, enr_index, num_bits ); + push_indice( hBstr, IND_ENERGY, enr_index, num_bits ); if ( enr_index == 0 ) { enr_index = -5; @@ -1063,7 +1063,7 @@ void CNG_enc_fx( move16(); } } - push_indice_fx( hBstr, IND_CNG_ENV1, min1_idx, 6 ); + push_indice( hBstr, IND_CNG_ENV1, min1_idx, 6 ); /* get quantized res_env_details */ FOR( i = 0; i < NUM_ENV_CNG; i++ ) { @@ -1122,28 +1122,28 @@ void CNG_enc_fx( /* dithering bit for AMR-WB IO mode is always set to 0 */ IF( EQ_32( st_fx->core_brate, SID_1k75 ) ) { - push_indice_fx( hBstr, IND_DITHERING, 0, 1 ); + push_indice( hBstr, IND_DITHERING, 0, 1 ); } IF( EQ_32( st_fx->core_brate, SID_2k40 ) ) { IF( EQ_16( st_fx->L_frame, L_FRAME16k ) ) { - push_indice_fx( hBstr, IND_ACELP_16KHZ, 1, 1 ); + push_indice( hBstr, IND_ACELP_16KHZ, 1, 1 ); } ELSE { - push_indice_fx( hBstr, IND_ACELP_16KHZ, 0, 1 ); + push_indice( hBstr, IND_ACELP_16KHZ, 0, 1 ); } - push_indice_fx( hBstr, IND_CNG_HO, s_min( hTdCngEnc->burst_ho_cnt, 7 ), 3 ); + push_indice( hBstr, IND_CNG_HO, s_min( hTdCngEnc->burst_ho_cnt, 7 ), 3 ); hTdCngEnc->num_ho = m; move16(); - push_indice_fx( hBstr, IND_SID_TYPE, 0, 1 ); + push_indice( hBstr, IND_SID_TYPE, 0, 1 ); test(); IF( LT_32( st_fx->input_Fs, 32000 ) && NE_16( st_fx->element_mode, IVAS_CPE_DFT ) ) { - push_indice_fx( hBstr, IND_SID_BW, 0, 1 ); + push_indice( hBstr, IND_SID_BW, 0, 1 ); *sid_bw = 0; move16(); } @@ -2458,8 +2458,8 @@ static void shb_CNG_encod_fx( idx_ener_fx = s_max( idx_ener_fx, 0 ); } - push_indice_fx( hBstr, IND_SHB_CNG_GAIN, idx_ener_fx, 4 ); - push_indice_fx( hBstr, IND_SID_BW, 1, 1 ); + push_indice( hBstr, IND_SHB_CNG_GAIN, idx_ener_fx, 4 ); + push_indice( hBstr, IND_SID_BW, 1, 1 ); hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, hBstr->ind_list[IND_CNG_ENV1].nb_bits ); hBstr->ind_list[IND_CNG_ENV1].nb_bits = -1; move16(); @@ -2470,7 +2470,7 @@ static void shb_CNG_encod_fx( } else { - push_indice_fx( hBstr, IND_UNUSED, 0, 2 ); + push_indice( hBstr, IND_UNUSED, 0, 2 ); } hTdCngEnc->ho_sid_bw = L_shl( L_and( hTdCngEnc->ho_sid_bw, (Word32) 0x3fffffffL ), 1 ); hTdCngEnc->ho_sid_bw = L_or( hTdCngEnc->ho_sid_bw, 0x1L ); @@ -2482,7 +2482,7 @@ static void shb_CNG_encod_fx( IF( EQ_32( st_fx->core_brate, SID_2k40 ) ) { hTdCngEnc->ho_sid_bw = L_shl( L_and( hTdCngEnc->ho_sid_bw, (Word32) 0x3fffffffL ), 1 ); - push_indice_fx( hBstr, IND_SID_BW, 0, 1 ); + push_indice( hBstr, IND_SID_BW, 0, 1 ); } } diff --git a/lib_enc/cod2t32_fx.c b/lib_enc/cod2t32_fx.c index a948a4656..dc967e656 100644 --- a/lib_enc/cod2t32_fx.c +++ b/lib_enc/cod2t32_fx.c @@ -292,7 +292,7 @@ void acelp_2t32_fx( } { /* write index to array of indices */ - push_indice_fx( hBstr, IND_ALG_CDBK_2T32, index, 12 ); + push_indice( hBstr, IND_ALG_CDBK_2T32, index, 12 ); } return; } @@ -636,11 +636,11 @@ void acelp_1t64_fx( } IF( EQ_16( L_subfr, L_SUBFR ) ) { - push_indice_fx( hBstr, IND_ALG_CDBK_1T64, index, 7 ); + push_indice( hBstr, IND_ALG_CDBK_1T64, index, 7 ); } ELSE /* L_subfr == 2*L_SUBFR */ { - push_indice_fx( hBstr, IND_ALG_CDBK_1T64, index, 8 ); + push_indice( hBstr, IND_ALG_CDBK_1T64, index, 8 ); } return; diff --git a/lib_enc/cod4t64_fx.c b/lib_enc/cod4t64_fx.c index 99b794b42..457a129b8 100644 --- a/lib_enc/cod4t64_fx.c +++ b/lib_enc/cod4t64_fx.c @@ -330,11 +330,11 @@ Word16 acelp_4t64_fx( bitcnt = s_and( nbbits, 15 ); FOR( i = 0; i < wordcnt; i++ ) { - push_indice_fx( hBstr, IND_ALG_CDBK_4T64, indexing_indices[i], 16 ); + push_indice( hBstr, IND_ALG_CDBK_4T64, indexing_indices[i], 16 ); } IF( bitcnt ) { - push_indice_fx( hBstr, IND_ALG_CDBK_4T64, indexing_indices[i], bitcnt ); + push_indice( hBstr, IND_ALG_CDBK_4T64, indexing_indices[i], bitcnt ); } } ELSE @@ -347,7 +347,7 @@ Word16 acelp_4t64_fx( { k = i_mult2( track, NPMAXPT ); index = quant_1p_N1_fx( ind[k], 4 ); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64, index, 5 ); + push_indice( hBstr, IND_ALG_CDBK_4T64, index, 5 ); } } ELSE IF( EQ_16( nbbits, 36 ) ) @@ -357,7 +357,7 @@ Word16 acelp_4t64_fx( k = i_mult2( track, NPMAXPT ); /* k = track * NPMAXPT;*/ index = quant_2p_2N1_fx( ind[k], ind[k + 1], 4 ); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64, index, 9 ); + push_indice( hBstr, IND_ALG_CDBK_4T64, index, 9 ); } } ELSE IF( EQ_16( nbbits, 44 ) ) /* AMR-WB pulse indexing */ @@ -366,14 +366,14 @@ Word16 acelp_4t64_fx( { k = i_mult2( track, NPMAXPT ); index = quant_3p_3N1_fx( ind[k], ind[k + 1], ind[k + 2], 4 ); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64, index, 13 ); + push_indice( hBstr, IND_ALG_CDBK_4T64, index, 13 ); } FOR( track = 2; track < NB_TRACK_FCB_4T; track++ ) { k = i_mult2( track, NPMAXPT ); index = quant_2p_2N1_fx( ind[k], ind[k + 1], 4 ); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64, index, 9 ); + push_indice( hBstr, IND_ALG_CDBK_4T64, index, 9 ); } } ELSE IF( EQ_16( nbbits, 52 ) ) /* AMR-WB pulse indexing */ @@ -382,7 +382,7 @@ Word16 acelp_4t64_fx( { k = i_mult2( track, NPMAXPT ); index = quant_3p_3N1_fx( ind[k], ind[k + 1], ind[k + 2], 4 ); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64, index, 13 ); + push_indice( hBstr, IND_ALG_CDBK_4T64, index, 13 ); } } ELSE IF( EQ_16( nbbits, 64 ) ) /* AMR-WB pulse indexing */ @@ -393,7 +393,7 @@ Word16 acelp_4t64_fx( L_index = quant_4p_4N_fx( &ind[k], 4 ); index = extract_l( L_shr( L_index, 14 ) & 3 ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_1, index, 2 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_1, index, 2 ); } FOR( track = 0; track < NB_TRACK_FCB_4T; track++ ) @@ -402,7 +402,7 @@ Word16 acelp_4t64_fx( L_index = quant_4p_4N_fx( &ind[k], 4 ); index = extract_l( L_index & 0x3FFF ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_2, index, 14 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_2, index, 14 ); } } ELSE IF( EQ_16( nbbits, 72 ) ) @@ -413,7 +413,7 @@ Word16 acelp_4t64_fx( L_index = quant_5p_5N_fx( &ind[k], 4 ); index = extract_l( L_shr( L_index, 10 ) & 0x03FF ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_1, index, 10 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_1, index, 10 ); } FOR( track = 2; track < NB_TRACK_FCB_4T; track++ ) @@ -422,7 +422,7 @@ Word16 acelp_4t64_fx( L_index = quant_4p_4N_fx( &ind[k], 4 ); index = extract_l( L_shr( L_index, 14 ) & 3 ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_1, index, 2 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_1, index, 2 ); } FOR( track = 0; track < ( NB_TRACK_FCB_4T - 2 ); track++ ) @@ -431,7 +431,7 @@ Word16 acelp_4t64_fx( L_index = quant_5p_5N_fx( &ind[k], 4 ); index = extract_l( L_index & 0x03FF ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_2, index, 10 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_2, index, 10 ); } FOR( track = 2; track < NB_TRACK_FCB_4T; track++ ) @@ -440,7 +440,7 @@ Word16 acelp_4t64_fx( L_index = quant_4p_4N_fx( &ind[k], 4 ); index = extract_l( L_index & 0x3FFF ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_2, index, 14 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_2, index, 14 ); } } ELSE IF( EQ_16( nbbits, 88 ) ) @@ -451,7 +451,7 @@ Word16 acelp_4t64_fx( L_index = quant_6p_6N_2_fx( &ind[k], 4 ); index = extract_l( L_shr( L_index, 11 ) & 0x07FF ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_1, index, 11 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_1, index, 11 ); } FOR( track = 0; track < NB_TRACK_FCB_4T; track++ ) @@ -460,7 +460,7 @@ Word16 acelp_4t64_fx( L_index = quant_6p_6N_2_fx( &ind[k], 4 ); index = extract_l( L_index & 0x07FF ); logic16(); - push_indice_fx( hBstr, IND_ALG_CDBK_4T64_2, index, 11 ); + push_indice( hBstr, IND_ALG_CDBK_4T64_2, index, 11 ); } } } diff --git a/lib_enc/decision_matrix_enc_fx.c b/lib_enc/decision_matrix_enc_fx.c index c95bc9d5b..63a13aa1a 100644 --- a/lib_enc/decision_matrix_enc_fx.c +++ b/lib_enc/decision_matrix_enc_fx.c @@ -449,14 +449,14 @@ Word16 signalling_mode1_tcx20_enc_fx( num_bits = add( num_bits, nBits ); IF( push != 0 ) { - push_indice_fx( hBstr, IND_ACELP_SIGNALLING, sub( idx, start_idx ), nBits ); + push_indice( hBstr, IND_ACELP_SIGNALLING, sub( idx, start_idx ), nBits ); } /* HQ/TCX core switching flag */ num_bits = add( num_bits, 1 ); IF( push != 0 ) { - push_indice_fx( hBstr, IND_MDCT_CORE, 1, 1 ); + push_indice( hBstr, IND_MDCT_CORE, 1, 1 ); } } ELSE @@ -467,7 +467,7 @@ Word16 signalling_mode1_tcx20_enc_fx( num_bits = add( num_bits, 1 ); IF( push != 0 ) { - push_indice_fx( hBstr, IND_CORE, 1, 1 ); + push_indice( hBstr, IND_CORE, 1, 1 ); } } @@ -475,7 +475,7 @@ Word16 signalling_mode1_tcx20_enc_fx( num_bits = add( num_bits, 1 ); IF( push != 0 ) { - push_indice_fx( hBstr, IND_MDCT_CORE, 1, 1 ); + push_indice( hBstr, IND_MDCT_CORE, 1, 1 ); } num_bits = add( num_bits, 2 ); @@ -484,19 +484,19 @@ Word16 signalling_mode1_tcx20_enc_fx( /* write band-width (needed for different I/O sampling rate support) */ IF( EQ_16( st->bwidth, NB ) ) { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 0, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 0, 2 ); } ELSE IF( EQ_16( st->bwidth, WB ) ) { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 1, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 1, 2 ); } ELSE IF( EQ_16( st->bwidth, SWB ) ) { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 2, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 2, 2 ); } ELSE /* st->bwidth == FB */ { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 3, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 3, 2 ); } } } @@ -534,21 +534,21 @@ void signalling_enc_fx( test(); IF( ( st_fx->last_core == ACELP_CORE ) || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) { - push_indice_fx( hBstr, IND_HQ_SWITCHING_FLG, 1, 1 ); + push_indice( hBstr, IND_HQ_SWITCHING_FLG, 1, 1 ); /* write ACELP L_frame info */ IF( EQ_16( st_fx->last_L_frame, L_FRAME ) ) { - push_indice_fx( hBstr, IND_LAST_L_FRAME, 0, 1 ); + push_indice( hBstr, IND_LAST_L_FRAME, 0, 1 ); } ELSE { - push_indice_fx( hBstr, IND_LAST_L_FRAME, 1, 1 ); + push_indice( hBstr, IND_LAST_L_FRAME, 1, 1 ); } } ELSE { - push_indice_fx( hBstr, IND_HQ_SWITCHING_FLG, 0, 1 ); + push_indice( hBstr, IND_HQ_SWITCHING_FLG, 0, 1 ); } return; @@ -574,7 +574,7 @@ void signalling_enc_fx( IF( EQ_16( ppp_mode, 1 ) || EQ_16( nelp_mode, 1 ) ) { /* 1 bit to distinguish between 2.8kbps PPP/NELP frame and SID frame */ - push_indice_fx( hBstr, IND_CORE, 0, 1 ); + push_indice( hBstr, IND_CORE, 0, 1 ); /* SC-VBR: 0 - PPP_NB, 1 - PPP_WB, 2 - NELP_NB, 3 - NELP_WB */ test(); test(); @@ -586,19 +586,19 @@ void signalling_enc_fx( test(); IF( EQ_16( st_fx->coder_type, VOICED ) && EQ_16( st_fx->bwidth, NB ) && EQ_16( ppp_mode, 1 ) ) { - push_indice_fx( hBstr, IND_PPP_NELP_MODE, 0, 2 ); + push_indice( hBstr, IND_PPP_NELP_MODE, 0, 2 ); } ELSE IF( EQ_16( st_fx->coder_type, VOICED ) && NE_16( st_fx->bwidth, NB ) && EQ_16( ppp_mode, 1 ) ) { - push_indice_fx( hBstr, IND_PPP_NELP_MODE, 1, 2 ); + push_indice( hBstr, IND_PPP_NELP_MODE, 1, 2 ); } ELSE IF( EQ_16( st_fx->coder_type, UNVOICED ) && EQ_16( st_fx->bwidth, NB ) && EQ_16( nelp_mode, 1 ) ) { - push_indice_fx( hBstr, IND_PPP_NELP_MODE, 2, 2 ); + push_indice( hBstr, IND_PPP_NELP_MODE, 2, 2 ); } ELSE IF( EQ_16( st_fx->coder_type, UNVOICED ) && NE_16( st_fx->bwidth, NB ) && EQ_16( nelp_mode, 1 ) ) { - push_indice_fx( hBstr, IND_PPP_NELP_MODE, 3, 2 ); + push_indice( hBstr, IND_PPP_NELP_MODE, 3, 2 ); } } ELSE IF( NE_32( st_fx->core_brate, SID_2k40 ) && ( st_fx->core_brate != FRAME_NO_DATA ) ) @@ -606,7 +606,7 @@ void signalling_enc_fx( /* write the ACELP/HQ core selection bit */ IF( GE_32( st_fx->total_brate, ACELP_24k40 ) ) { - push_indice_fx( hBstr, IND_CORE, 0, 1 ); + push_indice( hBstr, IND_CORE, 0, 1 ); } /* find the section in the ACELP signalling table corresponding to bitrate */ @@ -652,7 +652,7 @@ void signalling_enc_fx( idx++; } - push_indice_fx( hBstr, IND_ACELP_SIGNALLING, idx - start_idx, nBits ); + push_indice( hBstr, IND_ACELP_SIGNALLING, idx - start_idx, nBits ); } /* write extension layer flag to distinguish between TBE (0) and BWE (1) */ @@ -664,11 +664,11 @@ void signalling_enc_fx( test(); IF( EQ_16( st_fx->extl, WB_TBE ) || EQ_16( st_fx->extl, SWB_TBE ) || EQ_16( st_fx->extl, FB_TBE ) ) { - push_indice_fx( hBstr, IND_BWE_FLAG, 0, 1 ); + push_indice( hBstr, IND_BWE_FLAG, 0, 1 ); } ELSE IF( EQ_16( st_fx->extl, WB_BWE ) || EQ_16( st_fx->extl, SWB_BWE ) || EQ_16( st_fx->extl, FB_BWE ) ) { - push_indice_fx( hBstr, IND_BWE_FLAG, 1, 1 ); + push_indice( hBstr, IND_BWE_FLAG, 1, 1 ); } } } @@ -678,24 +678,24 @@ void signalling_enc_fx( test(); IF( ( st_fx->last_core == ACELP_CORE ) || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) { - push_indice_fx( hBstr, IND_HQ_SWITCHING_FLG, 1, 1 ); + push_indice( hBstr, IND_HQ_SWITCHING_FLG, 1, 1 ); /* write ACELP L_frame info */ IF( EQ_16( st_fx->last_L_frame, L_FRAME ) ) { - push_indice_fx( hBstr, IND_LAST_L_FRAME, 0, 1 ); + push_indice( hBstr, IND_LAST_L_FRAME, 0, 1 ); } ELSE { - push_indice_fx( hBstr, IND_LAST_L_FRAME, 1, 1 ); + push_indice( hBstr, IND_LAST_L_FRAME, 1, 1 ); } } ELSE { - push_indice_fx( hBstr, IND_HQ_SWITCHING_FLG, 0, 1 ); + push_indice( hBstr, IND_HQ_SWITCHING_FLG, 0, 1 ); } /* HQ/TCX core switching flag */ - push_indice_fx( hBstr, IND_MDCT_CORE, 0, 1 ); + push_indice( hBstr, IND_MDCT_CORE, 0, 1 ); /* Use ACELP signaling for LR MDCT */ IF( LE_32( st_fx->total_brate, ACELP_16k40 ) ) @@ -719,7 +719,7 @@ void signalling_enc_fx( idx++; } - push_indice_fx( hBstr, IND_ACELP_SIGNALLING, idx - start_idx, nBits ); + push_indice( hBstr, IND_ACELP_SIGNALLING, idx - start_idx, nBits ); } ELSE { @@ -727,25 +727,25 @@ void signalling_enc_fx( IF( LE_32( st_fx->core_brate, ACELP_64k ) ) { /* write ACELP/HQ core indication flag */ - push_indice_fx( hBstr, IND_CORE, 1, 1 ); + push_indice( hBstr, IND_CORE, 1, 1 ); } /* write band-width (needed for different I/O sampling rate support) */ IF( EQ_16( st_fx->bwidth, NB ) ) { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 0, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 0, 2 ); } ELSE IF( EQ_16( st_fx->bwidth, WB ) ) { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 1, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 1, 2 ); } ELSE IF( EQ_16( st_fx->bwidth, SWB ) ) { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 2, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 2, 2 ); } ELSE /* st_fx->bwidth == FB */ { - push_indice_fx( hBstr, IND_HQ_BWIDTH, 3, 2 ); + push_indice( hBstr, IND_HQ_BWIDTH, 3, 2 ); } } } diff --git a/lib_enc/enc_amr_wb_fx.c b/lib_enc/enc_amr_wb_fx.c index 08a20bbb9..4c5268017 100644 --- a/lib_enc/enc_amr_wb_fx.c +++ b/lib_enc/enc_amr_wb_fx.c @@ -170,7 +170,7 @@ void encod_amr_wb_fx( IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) { - push_indice_fx( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); + push_indice( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); } /*-----------------------------------------------------------------* @@ -243,7 +243,7 @@ void encod_amr_wb_fx( hVAD->hangover_cnt, &hAmrwb_IO->gain_alpha_fx, &hf_gain_fx[i_subfr / L_SUBFR], add( Q_new, 1 ), st->Q_syn ); } - push_indice_fx( hBstr, IND_HF_GAIN_MODIFICATION, hf_gain_fx[i_subfr / L_SUBFR], 4 ); + push_indice( hBstr, IND_HF_GAIN_MODIFICATION, hf_gain_fx[i_subfr / L_SUBFR], 4 ); } p_Aw += ( M + 1 ); diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c index 62f740fb2..00c7d28d7 100644 --- a/lib_enc/enc_gen_voic_fx.c +++ b/lib_enc/enc_gen_voic_fx.c @@ -179,7 +179,7 @@ void encod_gen_voic_fx( move16(); } - push_indice_fx( hBstr, IND_HARM_FLAG_ACELP, harm_flag_acelp, 1 ); + push_indice( hBstr, IND_HARM_FLAG_ACELP, harm_flag_acelp, 1 ); } /*------------------------------------------------------------------* @@ -239,7 +239,7 @@ void encod_gen_voic_fx( IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) { - push_indice_fx( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); + push_indice( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); } /*st_fx->lowrate_pitchGain = 0.9f * st_fx->lowrate_pitchGain + 0.1f * gain_pit_fx;*/ @@ -387,7 +387,7 @@ void encod_gen_voic_fx( WHILE( unbits_PI_fx > 0 ) { i = s_min( unbits_PI_fx, 16 ); - push_indice_fx( hBstr, IND_UNUSED, 0, i ); + push_indice( hBstr, IND_UNUSED, 0, i ); unbits_PI_fx -= i; } IF( st_fx->Opt_SC_VBR ) diff --git a/lib_enc/enc_higher_acelp_fx.c b/lib_enc/enc_higher_acelp_fx.c index 64a11be5b..bf248bb5a 100644 --- a/lib_enc/enc_higher_acelp_fx.c +++ b/lib_enc/enc_higher_acelp_fx.c @@ -242,7 +242,7 @@ void transf_cdbk_enc_fx( Ltmp = L_shl( Ltmp, add( e_den, 9 ) ); /* Q18*/ *gain_preQ = round_fx( Ltmp ); /* Q2*/ } - push_indice_fx( st_fx->hBstr, IND_AVQ_GAIN, index, G_AVQ_BITS ); + push_indice( st_fx->hBstr, IND_AVQ_GAIN, index, G_AVQ_BITS ); /*--------------------------------------------------------------* * Encode and multiplex subvectors into bit-stream @@ -276,7 +276,7 @@ void transf_cdbk_enc_fx( WHILE( *unbits > 0 ) { i = s_min( *unbits, 16 ); - push_indice_fx( st_fx->hBstr, IND_UNUSED, 0, i ); + push_indice( st_fx->hBstr, IND_UNUSED, 0, i ); *unbits -= i; } } diff --git a/lib_enc/enc_pit_exc_fx.c b/lib_enc/enc_pit_exc_fx.c index 957e41516..3cb2cc066 100644 --- a/lib_enc/enc_pit_exc_fx.c +++ b/lib_enc/enc_pit_exc_fx.c @@ -291,7 +291,7 @@ void enc_pit_exc_fx( IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) { - push_indice_fx( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); + push_indice( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); } /*st_fx->lowrate_pitchGain = 0.9f * st_fx->lowrate_pitchGain + 0.1f * gain_pit;*/ @@ -312,12 +312,12 @@ void enc_pit_exc_fx( IF( GE_32( st_fx->core_brate, MIN_RATE_FCB ) ) { pit_idx = vquant_fx( &gain_pit, mean_gp_fx, &gain_pit, dic_gp_fx, 1, 32 ); /* Q0 */ - push_indice_fx( hBstr, IND_PIT_IDX, pit_idx, 5 ); + push_indice( hBstr, IND_PIT_IDX, pit_idx, 5 ); } ELSE { pit_idx = vquant_fx( &gain_pit, mean_gp_fx, &gain_pit, dic_gp_fx, 1, 16 ); /* Q0 */ - push_indice_fx( hBstr, IND_PIT_IDX, pit_idx, 4 ); + push_indice( hBstr, IND_PIT_IDX, pit_idx, 4 ); } } else if ( use_fcb == 2 ) diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index 4cda393d5..d6935dd0c 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -327,7 +327,7 @@ Word16 encod_tran_fx( WHILE( unbits_PI > 0 ) { i = s_min( unbits_PI, 16 ); - push_indice_fx( hBstr, IND_UNUSED, 0, i ); + push_indice( hBstr, IND_UNUSED, 0, i ); unbits_PI -= i; } @@ -336,72 +336,72 @@ Word16 encod_tran_fx( { IF( EQ_16( tc_subfr, TC_0_0 ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); } ELSE IF( EQ_16( tc_subfr, TC_0_64 ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); } ELSE IF( EQ_16( tc_subfr, TC_0_128 ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); } ELSE IF( EQ_16( tc_subfr, TC_0_192 ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); } ELSE IF( EQ_16( tc_subfr, L_SUBFR ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); } ELSE IF( EQ_16( tc_subfr, 2 * L_SUBFR ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); } ELSE IF( EQ_16( tc_subfr, 3 * L_SUBFR ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); } } ELSE /* L_frame == L_FRAME16k */ { IF( tc_subfr == 0 ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 2 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 2 ); } ELSE IF( EQ_16( tc_subfr, L_SUBFR ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 2 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 2 ); } ELSE IF( EQ_16( tc_subfr, 2 * L_SUBFR ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 2, 2 ); + push_indice( hBstr, IND_TC_SUBFR, 2, 2 ); } ELSE IF( EQ_16( tc_subfr, 3 * L_SUBFR ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 3, 2 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 0, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 3, 2 ); + push_indice( hBstr, IND_TC_SUBFR, 0, 1 ); } ELSE IF( EQ_16( tc_subfr, 4 * L_SUBFR ) ) { - push_indice_fx( hBstr, IND_TC_SUBFR, 3, 2 ); - push_indice_fx( hBstr, IND_TC_SUBFR, 1, 1 ); + push_indice( hBstr, IND_TC_SUBFR, 3, 2 ); + push_indice( hBstr, IND_TC_SUBFR, 1, 1 ); } } diff --git a/lib_enc/enc_uv_fx.c b/lib_enc/enc_uv_fx.c index 8a77b9e2b..a8612725b 100644 --- a/lib_enc/enc_uv_fx.c +++ b/lib_enc/enc_uv_fx.c @@ -153,7 +153,7 @@ void encod_unvoiced_fx( #ifdef DEBUGGING assert( st_fx->acelp_cfg.gains_mode[i_subfr_idx] == 7 && "Error: UC two-stage, only 5+2 gain Q is supported" ); #endif - push_indice_fx( st_fx->hBstr, IND_GAIN, index, st_fx->acelp_cfg.gains_mode[i_subfr_idx] ); + push_indice( st_fx->hBstr, IND_GAIN, index, st_fx->acelp_cfg.gains_mode[i_subfr_idx] ); gp_clip_test_gain_pit_fx( st_fx->element_mode, st_fx->core_brate, gain_pit_fx, st_fx->clip_var_fx ); diff --git a/lib_enc/eval_pit_contr_fx.c b/lib_enc/eval_pit_contr_fx.c index aef5fd637..df629f295 100644 --- a/lib_enc/eval_pit_contr_fx.c +++ b/lib_enc/eval_pit_contr_fx.c @@ -409,17 +409,17 @@ Word16 Pit_exc_contribution_len_fx( /* o : bin where pit IF( EQ_16( st_fx->coder_type, INACTIVE ) ) { - push_indice_fx( hBstr, IND_PIT_CONTR_IDX, pit_contr_idx, 1 ); + push_indice( hBstr, IND_PIT_CONTR_IDX, pit_contr_idx, 1 ); } } ELSE { - push_indice_fx( hBstr, IND_PIT_CONTR_IDX, pit_contr_idx, 3 ); + push_indice( hBstr, IND_PIT_CONTR_IDX, pit_contr_idx, 3 ); } } ELSE { - push_indice_fx( hBstr, IND_PIT_CONTR_IDX, pit_contr_idx, 4 ); + push_indice( hBstr, IND_PIT_CONTR_IDX, pit_contr_idx, 4 ); } return last_pit_bin; diff --git a/lib_enc/fd_cng_enc_fx.c b/lib_enc/fd_cng_enc_fx.c index e51e2b682..2eb13646c 100644 --- a/lib_enc/fd_cng_enc_fx.c +++ b/lib_enc/fd_cng_enc_fx.c @@ -1217,21 +1217,21 @@ void FdCng_encodeSID_fx( HANDLE_FD_CNG_ENC stenc, /* i/o: pointer to FD_CNG stru } ELSE { - push_indice_fx( hBstr, IND_SID_TYPE, 1, 1 ); - push_indice_fx( hBstr, IND_ACELP_16KHZ, corest->bwidth, 2 ); + push_indice( hBstr, IND_SID_TYPE, 1, 1 ); + push_indice( hBstr, IND_ACELP_16KHZ, corest->bwidth, 2 ); IF( EQ_16( corest->L_frame, L_FRAME16k ) ) { - push_indice_fx( hBstr, IND_ACELP_16KHZ, 1, 1 ); + push_indice( hBstr, IND_ACELP_16KHZ, 1, 1 ); } ELSE { - push_indice_fx( hBstr, IND_ACELP_16KHZ, 0, 1 ); + push_indice( hBstr, IND_ACELP_16KHZ, 0, 1 ); } FOR( i = 0; i < stages_37bits; i++ ) { - push_indice_fx( hBstr, IND_LSF, indices[i], bits_37bits[i] ); + push_indice( hBstr, IND_LSF, indices[i], bits_37bits[i] ); } - push_indice_fx( hBstr, IND_ENERGY, index, 7 ); + push_indice( hBstr, IND_ENERGY, index, 7 ); } /* Interpolate the bin/band-wise levels from the partition levels */ diff --git a/lib_enc/gain_enc_fx.c b/lib_enc/gain_enc_fx.c index 0321cd763..0ccb31ccf 100644 --- a/lib_enc/gain_enc_fx.c +++ b/lib_enc/gain_enc_fx.c @@ -428,7 +428,7 @@ void gain_enc_mless_fx( tmp1 = mult_r( G_PITCH_MAX_MINUS_MIN_TC192_Q13, div_s( 1, sub( shl( 1, nBits ), 1 ) ) ); /*Q13*/ /* set quantization step */ index = usquant_fx( *gain_pit, gain_pit, G_PITCH_MIN_TC192_Q14, tmp1, shl( 1, nBits ) ); move16(); - push_indice_fx( hBstr, IND_GAIN_PIT, index, nBits ); + push_indice( hBstr, IND_GAIN_PIT, index, nBits ); /* gain_code Q */ /**gain_code /= gcode0;*/ @@ -441,7 +441,7 @@ void gain_enc_mless_fx( } index = gain_quant_fx( gain_code, &gain_code16, LG10_G_CODE_MIN_TC192_Q14, LG10_G_CODE_MAX_TC192_Q13, nBits2, &expg ); - push_indice_fx( hBstr, IND_GAIN_CODE, index, nBits2 ); + push_indice( hBstr, IND_GAIN_CODE, index, nBits2 ); L_tmp = L_mult( gain_code16, gcode0 ); /*Q0*Q0 -> Q1*/ *gain_code = L_shl_o( L_tmp, add( add( expg, exp_gcode0 ), 15 ), &Overflow ); /*Q16*/ } @@ -508,7 +508,7 @@ void gain_enc_mless_fx( * search for the best quantizer *-----------------------------------------------------------------*/ index = Find_Opt_gainQ_fx( coeff, exp_coeff, gain_pit, gain_code, gcode0, exp_gcode0, qua_table, size ); // Q0 - push_indice_fx( hBstr, IND_GAIN, index, nBits ); + push_indice( hBstr, IND_GAIN, index, nBits ); } /* *norm_gain_code = *gain_code / *gain_inov; */ @@ -1108,7 +1108,7 @@ void gain_enc_SQ_fx( tmp1 = mult_r( G_PITCH_MAX_Q13, div_s( 1, sub( shl( 1, nBits_pitch ), 1 ) ) ); /*Q13*/ /* set quantization step */ index = usquant_fx( *gain_pit, gain_pit, G_PITCH_MIN_Q14, tmp1, shl( 1, nBits_pitch ) ); // Q0 - push_indice_fx( hBstr, IND_GAIN_PIT, index, nBits_pitch ); + push_indice( hBstr, IND_GAIN_PIT, index, nBits_pitch ); /* gain_code Q */ /* *gain_code /= gcode0; */ @@ -1121,7 +1121,7 @@ void gain_enc_SQ_fx( } index = gain_quant_fx( gain_code, &gain_code16, LG10_G_CODE_MIN_Q14, LG10_G_CODE_MAX_Q13, nBits_code, &expg ); - push_indice_fx( hBstr, IND_GAIN_CODE, index, nBits_code ); + push_indice( hBstr, IND_GAIN_CODE, index, nBits_code ); L_tmp = L_mult( gain_code16, gcode0 ); /*Q0*Q0 -> Q1*/ *gain_code = L_shl_sat( L_tmp, add( add( expg, exp_gcode0 ), 15 ) ); move32(); /*Q16*/ @@ -1601,7 +1601,7 @@ void gain_enc_tc_fx( *gain_code_fx = L_shl( L_tmp, add( add( expg, exp_gcode0 ), 15 ) ); /*Q16*/ move32(); - push_indice_fx( hBstr, IND_GAIN_CODE, index, nBits ); + push_indice( hBstr, IND_GAIN_CODE, index, nBits ); } ELSE { @@ -1632,7 +1632,7 @@ void gain_enc_tc_fx( L_tmp = L_mult( wgain_code, gcode0_fx ); /* Q13*Q0 -> Q14 */ *gain_code_fx = L_shl( L_tmp, add( exp_gcode0, 2 ) ); move32(); /* Q14 -> Q16 */ - push_indice_fx( hBstr, IND_GAIN_CODE, index, nBits ); + push_indice( hBstr, IND_GAIN_CODE, index, nBits ); } ELSE /* nBits == 3 */ { @@ -1642,7 +1642,7 @@ void gain_enc_tc_fx( L_tmp = L_mult( wgain_code, gcode0_fx ); /* Q13*Q0 -> Q14 */ *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 2 ) ); move32(); /* Q14 -> Q16 */ - push_indice_fx( hBstr, IND_GAIN_CODE, index, nBits ); + push_indice( hBstr, IND_GAIN_CODE, index, nBits ); } } @@ -2438,7 +2438,7 @@ void gain_enc_lbr_fx( *norm_gain_code = L_shr( Mult_32_16( *gain_code, tmp ), sub( 1, exp ) ); // Q16 move32(); { - push_indice_fx( hBstr, IND_GAIN, index, nBits ); + push_indice( hBstr, IND_GAIN, index, nBits ); } return; } @@ -3223,7 +3223,7 @@ void gain_enc_amr_wb_fx( *norm_gain_code = L_shr( Mult_32_16( *gain_code, tmp ), sub( 1, exp ) ); // Q16 move32(); - push_indice_fx( hBstr, IND_GAIN, index, nBits ); + push_indice( hBstr, IND_GAIN, index, nBits ); return; } diff --git a/lib_enc/gaus_enc_fx.c b/lib_enc/gaus_enc_fx.c index edddc6a88..081cf7ef0 100644 --- a/lib_enc/gaus_enc_fx.c +++ b/lib_enc/gaus_enc_fx.c @@ -96,7 +96,7 @@ Word16 gaus_encode_fx( move16(); /* low bound = -30; stepSize = 1.71875; inv_stepSize = 0.5818181 */ idx = gain_enc_gaus_fx( gain_code, nb_bits, -7680, 28160, 19065 ); /* Q0 */ - push_indice_fx( st_fx->hBstr, IND_GAIN, idx, nb_bits ); + push_indice( st_fx->hBstr, IND_GAIN, idx, nb_bits ); /*----------------------------------------------------------------* * Total excitation for Unvoiced coders @@ -638,8 +638,8 @@ void gauss2v_fx( idx = cod_2pos_fx( i, j, sign1, sign2, nvec ); /* Q0 */ move16(); - push_indice_fx( hBstr, IND_GAUS_CDBK_INDEX, idx, 2 * nb_bits + 1 ); - push_indice_fx( hBstr, IND_TILT_FACTOR, index_delta, 3 ); + push_indice( hBstr, IND_GAUS_CDBK_INDEX, idx, 2 * nb_bits + 1 ); + push_indice( hBstr, IND_TILT_FACTOR, index_delta, 3 ); /*----------------------------------------------------------------* * Find quantized gain diff --git a/lib_enc/gs_enc_fx.c b/lib_enc/gs_enc_fx.c index 1642d1253..1a3d2cb56 100644 --- a/lib_enc/gs_enc_fx.c +++ b/lib_enc/gs_enc_fx.c @@ -82,16 +82,16 @@ void encod_audio_fx( test(); IF( ( st_fx->element_mode > EVS_MONO ) && st_fx->idchan == 0 ) { - push_indice_fx( hBstr, IND_GSC_IVAS_SP, st_fx->GSC_IVAS_mode, 2 ); + push_indice( hBstr, IND_GSC_IVAS_SP, st_fx->GSC_IVAS_mode, 2 ); } #endif IF( attack_flag > 0 ) { - push_indice_fx( hBstr, IND_GSC_ATTACK, 1, 1 ); + push_indice( hBstr, IND_GSC_ATTACK, 1, 1 ); } ELSE { - push_indice_fx( hBstr, IND_GSC_ATTACK, 0, 1 ); + push_indice( hBstr, IND_GSC_ATTACK, 0, 1 ); } @@ -105,7 +105,7 @@ void encod_audio_fx( IF( GE_16( st_fx->GSC_IVAS_mode, 1 ) || ( NE_16( st_fx->coder_type, INACTIVE ) && ( ( EQ_16( st_fx->element_mode, EVS_MONO ) && GE_32( st_fx->total_brate, ACELP_13k20 ) ) || ( GT_16( st_fx->element_mode, EVS_MONO ) && GT_32( st_fx->total_brate, MIN_BRATE_GSC_NOISY_FLAG ) && GE_16( st_fx->bwidth, SWB ) && !st_fx->flag_ACELP16k ) ) ) ) { - push_indice_fx( hBstr, IND_GSC_SWB_SPEECH, st_fx->GSC_noisy_speech, 1 ); + push_indice( hBstr, IND_GSC_SWB_SPEECH, st_fx->GSC_noisy_speech, 1 ); } /*---------------------------------------------------------------* * Find and encode the number of subframes @@ -185,12 +185,12 @@ void encod_audio_fx( IF( EQ_16( st_fx->L_frame, L_FRAME16k ) && GE_32( st_fx->core_brate, MIN_RATE_4SBFR ) ) { - push_indice_fx( hBstr, IND_HF_NOISE, nb_subfr_flag, 2 ); + push_indice( hBstr, IND_HF_NOISE, nb_subfr_flag, 2 ); } ELSE IF( GE_32( st_fx->core_brate, ACELP_9k60 ) ) { /* nb_subfr_flag can only have the value 0 or 1 */ - push_indice_fx( hBstr, IND_HF_NOISE, nb_subfr_flag, 1 ); + push_indice( hBstr, IND_HF_NOISE, nb_subfr_flag, 1 ); } } test(); @@ -227,7 +227,7 @@ void encod_audio_fx( move16(); } Es_pred_enc_fx( &Es_pred, &indice, st_fx->L_frame, res, st_fx->voicing_fx, nb_bits, 0, Q_new ); - push_indice_fx( hBstr, IND_ES_PRED, indice, nb_bits ); + push_indice( hBstr, IND_ES_PRED, indice, nb_bits ); } enc_pit_exc_fx( st_fx, speech, Aw, Aq, Es_pred, res, synth, exc, &T0_tmp, @@ -290,7 +290,7 @@ void encod_audio_fx( { hGSCEnc->noise_lev = s_max( hGSCEnc->noise_lev, NOISE_LEVEL_SP2 ); move16(); - push_indice_fx( hBstr, IND_NOISE_LEVEL, sub( hGSCEnc->noise_lev, NOISE_LEVEL_SP2 ), 2 ); + push_indice( hBstr, IND_NOISE_LEVEL, sub( hGSCEnc->noise_lev, NOISE_LEVEL_SP2 ), 2 ); } ELSE IF( st_fx->GSC_noisy_speech ) { @@ -300,7 +300,7 @@ void encod_audio_fx( } ELSE { - push_indice_fx( hBstr, IND_NOISE_LEVEL, sub( hGSCEnc->noise_lev, NOISE_LEVEL_SP0 ), 3 ); + push_indice( hBstr, IND_NOISE_LEVEL, sub( hGSCEnc->noise_lev, NOISE_LEVEL_SP0 ), 3 ); } /*---------------------------------------------------------------* @@ -931,7 +931,7 @@ void gsc_enc_fx( WHILE( bit > 0 ) { i = s_min( bit, 16 ); - push_indice_fx( hBstr, IND_UNUSED, 0, i ); + push_indice( hBstr, IND_UNUSED, 0, i ); bit = sub( bit, i ); } /* Reorder Q bands */ diff --git a/lib_enc/hq_classifier_enc_fx.c b/lib_enc/hq_classifier_enc_fx.c index 2b53082f7..300e31e8e 100644 --- a/lib_enc/hq_classifier_enc_fx.c +++ b/lib_enc/hq_classifier_enc_fx.c @@ -258,16 +258,16 @@ Word16 hq_classifier_enc_fx( /* o : Consumed bits { IF( GE_16( *hqswb_clas, HQ_GEN_SWB ) ) { - push_indice_fx( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas - 5, bits ); + push_indice( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas - 5, bits ); } ELSE { - push_indice_fx( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits ); + push_indice( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits ); } } ELSE { - push_indice_fx( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits ); + push_indice( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits ); } test(); @@ -343,7 +343,7 @@ Word16 hq_classifier_enc_fx( /* o : Consumed bits move16(); } /* write signalling info to the bitstream */ - push_indice_fx( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits ); + push_indice( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits ); IF( LE_32( st_fx->core_brate, HQ_32k ) && EQ_16( *hqswb_clas, HQ_NORMAL ) ) { diff --git a/lib_enc/hq_core_enc_fx.c b/lib_enc/hq_core_enc_fx.c index ff19cfebc..66430cb8e 100644 --- a/lib_enc/hq_core_enc_fx.c +++ b/lib_enc/hq_core_enc_fx.c @@ -229,12 +229,12 @@ void hq_core_enc_fx( { IF( Voicing_flag > 0 ) { - push_indice_fx( hBstr, IND_HQ_VOICING_FLAG, 1, 1 ); + push_indice( hBstr, IND_HQ_VOICING_FLAG, 1, 1 ); num_bits = sub( num_bits, 1 ); } ELSE { - push_indice_fx( hBstr, IND_HQ_VOICING_FLAG, 0, 1 ); + push_indice( hBstr, IND_HQ_VOICING_FLAG, 0, 1 ); num_bits = sub( num_bits, 1 ); } } @@ -278,13 +278,13 @@ void hq_core_enc_fx( WHILE( num_bits >= 16 ) { - push_indice_fx( hBstr, IND_UNUSED, 0, 16 ); + push_indice( hBstr, IND_UNUSED, 0, 16 ); num_bits = sub( num_bits, 16 ); } IF( num_bits != 0 ) { - push_indice_fx( hBstr, IND_UNUSED, 0, num_bits ); + push_indice( hBstr, IND_UNUSED, 0, num_bits ); } #ifdef ADD_IVAS_HQ_CODE if ( st->element_mode > EVS_MONO && ( st->last_core == ACELP_CORE || st->last_core == AMR_WB_CORE ) ) diff --git a/lib_enc/hq_env_enc_fx.c b/lib_enc/hq_env_enc_fx.c index 5d47710ed..f033bd685 100644 --- a/lib_enc/hq_env_enc_fx.c +++ b/lib_enc/hq_env_enc_fx.c @@ -295,13 +295,13 @@ Word16 encode_envelope_indices_fx( /* o : Number of b test(); IF( EQ_16( flag_HQ2, LOW_RATE_HQ_CORE_TRAN ) || EQ_16( flag_HQ2, LOW_RATE_HQ_CORE ) ) { - push_indice_fx( hBstr, IND_HQ2_DENG_HMODE, *LCmode, BITS_DE_HMODE ); - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, difidx[0], BITS_DE_FCOMP ); + push_indice( hBstr, IND_HQ2_DENG_HMODE, *LCmode, BITS_DE_HMODE ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, difidx[0], BITS_DE_FCOMP ); } ELSE { - push_indice_fx( hBstr, IND_LC_MODE, *LCmode, 2 ); - push_indice_fx( hBstr, IND_YNRM, difidx[0], NORM0_BITS ); + push_indice( hBstr, IND_LC_MODE, *LCmode, 2 ); + push_indice( hBstr, IND_YNRM, difidx[0], NORM0_BITS ); } test(); @@ -331,7 +331,7 @@ Word16 encode_envelope_indices_fx( /* o : Number of b m = lshr( m, 1 ); /* Q0 */ } - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, v, r ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, v, r ); } } ELSE @@ -370,7 +370,7 @@ Word16 encode_envelope_indices_fx( /* o : Number of b move16(); } } - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, m, r ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, m, r ); prevj = j; move16(); } @@ -419,11 +419,11 @@ Word16 encode_envelope_indices_fx( /* o : Number of b IF( EQ_16( flag_HQ2, LOW_RATE_HQ_CORE ) ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, m, r ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, m, r ); } ELSE { - push_indice_fx( hBstr, IND_YNRM, m, r ); + push_indice( hBstr, IND_YNRM, m, r ); } prevj = j; @@ -515,11 +515,11 @@ Word16 encode_envelope_indices_fx( /* o : Number of b IF( flag_HQ2 == 0 ) { - push_indice_fx( hBstr, IND_YNRM, v, r ); + push_indice( hBstr, IND_YNRM, v, r ); } ELSE { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, v, r ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, v, r ); } } } @@ -536,14 +536,14 @@ Word16 encode_envelope_indices_fx( /* o : Number of b r = huffsizn[j]; /* Q0 */ move16(); - push_indice_fx( hBstr, IND_YNRM, m, r ); + push_indice( hBstr, IND_YNRM, m, r ); } } ELSE { FOR( i = 1; i < num_sfm; i++ ) { - push_indice_fx( hBstr, IND_YNRM, difidx[i], NORMI_BITS ); + push_indice( hBstr, IND_YNRM, difidx[i], NORMI_BITS ); } } } diff --git a/lib_enc/hq_hr_enc_fx.c b/lib_enc/hq_hr_enc_fx.c index 1cd516b43..705db9ecd 100644 --- a/lib_enc/hq_hr_enc_fx.c +++ b/lib_enc/hq_hr_enc_fx.c @@ -236,12 +236,12 @@ void hq_hr_enc_fx( IF( EQ_16( hqswb_clas, HQ_GEN_SWB ) || EQ_16( hqswb_clas, HQ_GEN_FB ) ) { nf_idx = noise_adjust_fx( t_audio_norm, 12, R, sfm_start, sfm_end, s_max( core_sfm, sub( num_env_bands, 1 ) ) ); /* Q0 */ - push_indice_fx( st_fx->hBstr, IND_NF_IDX, nf_idx, 2 ); + push_indice( st_fx->hBstr, IND_NF_IDX, nf_idx, 2 ); } ELSE { nf_idx = noise_adjust_fx( t_audio_norm, 12, R, sfm_start, sfm_end, core_sfm ); /* Q0 */ - push_indice_fx( st_fx->hBstr, IND_NF_IDX, nf_idx, 2 ); + push_indice( st_fx->hBstr, IND_NF_IDX, nf_idx, 2 ); } } /* updates */ diff --git a/lib_enc/hq_lr_enc_fx.c b/lib_enc/hq_lr_enc_fx.c index 9aca0f646..af2780682 100644 --- a/lib_enc/hq_lr_enc_fx.c +++ b/lib_enc/hq_lr_enc_fx.c @@ -115,7 +115,7 @@ static void spt_shorten_domain_set_fx( move16(); } } - push_indice_fx( st_fx->hBstr, IND_HQ2_SPT_SHORTEN, spt_shorten_flag[j], 1 ); + push_indice( st_fx->hBstr, IND_HQ2_SPT_SHORTEN, spt_shorten_flag[j], 1 ); *bit_budget = sub( *bit_budget, 1 ); /* Q0 */ move16(); } @@ -313,7 +313,7 @@ void hq_lr_enc_fx( } /* write the classification information into the bitstream */ - push_indice_fx( hBstr, IND_HQ2_SWB_CLAS, hqswb_clas_fx, 2 ); + push_indice( hBstr, IND_HQ2_SWB_CLAS, hqswb_clas_fx, 2 ); ( *num_bits_fx ) = sub( *num_bits_fx, 2 ); move16(); IF( EQ_16( hqswb_clas_fx, HQ_NORMAL ) ) @@ -325,7 +325,7 @@ void hq_lr_enc_fx( ELSE { /* write the transient bit into the bitstream */ - push_indice_fx( st_fx->hBstr, IND_HQ2_SWB_CLAS, is_transient_fx, 1 ); + push_indice( st_fx->hBstr, IND_HQ2_SWB_CLAS, is_transient_fx, 1 ); /* subtract one bit for the transient flag */ ( *num_bits_fx ) = sub( ( *num_bits_fx ), 1 ); @@ -741,7 +741,7 @@ void hq_lr_enc_fx( /* encode the last p2a_bands-1 subbands bit-allocation index of the previous frame */ FOR( i = 0; i < 2; i++ ) { - push_indice_fx( st_fx->hBstr, IND_HQ2_LAST_BA_MAX_BAND, hHQ_core->last_bitalloc_max_band[i], 1 ); + push_indice( st_fx->hBstr, IND_HQ2_LAST_BA_MAX_BAND, hHQ_core->last_bitalloc_max_band[i], 1 ); } } ELSE IF( is_transient_fx == 0 && EQ_16( inner_frame_fx, L_FRAME16k ) ) @@ -970,7 +970,7 @@ void hq_lr_enc_fx( /* encode the last p2a_bands-1 subbands bit-allocation index of the previous frame */ FOR( i = 0; i < 2; i++ ) { - push_indice_fx( st_fx->hBstr, IND_HQ2_LAST_BA_MAX_BAND, hHQ_core->last_bitalloc_max_band[i], 1 ); + push_indice( st_fx->hBstr, IND_HQ2_LAST_BA_MAX_BAND, hHQ_core->last_bitalloc_max_band[i], 1 ); } } ELSE IF( EQ_16( st_fx->bwidth, SWB ) && EQ_16( hqswb_clas_fx, HQ_HARMONIC ) && ( EQ_32( L_bwe_br, HQ_16k40 ) || EQ_32( L_bwe_br, HQ_13k20 ) ) ) @@ -2213,7 +2213,7 @@ static Word16 small_symbol_enc_fx( /* o : bits /* Encoding LSB bit packing */ FOR( i = 0; i < BANDS; ++i ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, LSB[i], BITS_DE_LSB ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, LSB[i], BITS_DE_LSB ); } } @@ -2526,74 +2526,74 @@ static Word16 large_symbol_enc_fx( /* o : bits /* Encoding MSB bits */ IF( *hLCmode0 == 0 ) { - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE, 0, BITS_DE_8SMODE ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE, 0, BITS_DE_8SMODE ); bits = BITS_DE_8SMODE; move16(); IF( cnt_outlyer0 == 0 ) { - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE_N0, 0, BITS_DE_8SMODE_N0 ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE_N0, 0, BITS_DE_8SMODE_N0 ); bits = add( bits, BITS_DE_8SMODE_N0 ); IF( EQ_16( cnt_outlyer, 1 ) ) { /* 01 */ - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE_N1, 1, BITS_DE_8SMODE_N1 ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE_N1, 1, BITS_DE_8SMODE_N1 ); bits = add( bits, BITS_DE_8SMODE_N1 ); /* Q0 */ - push_indice_fx( hBstr, IND_HQ2_DENG_8SPOS, pos_outlyer, BITS_DE_8SPOS ); + push_indice( hBstr, IND_HQ2_DENG_8SPOS, pos_outlyer, BITS_DE_8SPOS ); bits = add( bits, BITS_DE_8SPOS ); - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[pos_outlyer] + ABS_ENG_OFFSET, BITS_ABS_ENG ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[pos_outlyer] + ABS_ENG_OFFSET, BITS_ABS_ENG ); bits = add( bits, BITS_ABS_ENG ); } ELSE { /* 00 */ - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE_N1, 0, BITS_DE_8SMODE_N1 ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE_N1, 0, BITS_DE_8SMODE_N1 ); bits = add( bits, BITS_DE_8SMODE_N1 ); /* Q0 */ } FOR( i = 0; i < pos_outlyer; ++i ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); bitsmode0 = add( bitsmode0, hessize[tdifidx0[i] + 4] ); /* Q0 */ } FOR( i = ( pos_outlyer + 1 ); i < BANDS; ++i ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); bitsmode0 = add( bitsmode0, hessize[tdifidx0[i] + 4] ); /* Q0 */ } } ELSE IF( EQ_16( cnt_outlyer0, 1 ) ) { - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE_N0, 1, BITS_DE_8SMODE_N0 ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE_N0, 1, BITS_DE_8SMODE_N0 ); bits = add( bits, BITS_DE_8SMODE_N0 ); IF( EQ_16( cnt_outlyer, 1 ) ) { - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE_N1, 1, BITS_DE_8SMODE_N1 ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE_N1, 1, BITS_DE_8SMODE_N1 ); bits = add( bits, BITS_DE_8SMODE_N1 ); /* Q0 */ - push_indice_fx( hBstr, IND_HQ2_DENG_8SPOS, pos_outlyer, BITS_DE_8SPOS ); + push_indice( hBstr, IND_HQ2_DENG_8SPOS, pos_outlyer, BITS_DE_8SPOS ); bits = add( bits, BITS_DE_8SPOS ); - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[0] + ABS_ENG_OFFSET, BITS_ABS_ENG ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[0] + ABS_ENG_OFFSET, BITS_ABS_ENG ); bits = add( bits, BITS_ABS_ENG ); - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[pos_outlyer] + ABS_ENG_OFFSET, BITS_ABS_ENG ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[pos_outlyer] + ABS_ENG_OFFSET, BITS_ABS_ENG ); bits = add( bits, BITS_ABS_ENG ); } ELSE { - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE_N1, 0, BITS_DE_8SMODE_N1 ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE_N1, 0, BITS_DE_8SMODE_N1 ); bits = add( bits, BITS_DE_8SMODE_N1 ); /* Q0 */ - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[0] + ABS_ENG_OFFSET, BITS_ABS_ENG ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, qbidx[0] + ABS_ENG_OFFSET, BITS_ABS_ENG ); bits = add( bits, BITS_ABS_ENG ); /* Q0 */ } FOR( i = 1; i < pos_outlyer; ++i ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); bits = add( bits, hessize[tdifidx0[i] + 4] ); /* Q0 */ } FOR( i = pos_outlyer + 1; i < BANDS; ++i ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx0[i] + 4], hessize[tdifidx0[i] + 4] ); bits = add( bits, hessize[tdifidx0[i] + 4] ); /* Q0 */ } } @@ -2601,12 +2601,12 @@ static Word16 large_symbol_enc_fx( /* o : bits ELSE { bits = add( BITS_DE_8SMODE, BITS_MAX_DEPTH ); /* Q0 */ - push_indice_fx( hBstr, IND_HQ2_DENG_8SMODE, 1, BITS_DE_8SMODE ); - push_indice_fx( hBstr, IND_HQ2_DENG_8SDEPTH, lsbdepth1, BITS_MAX_DEPTH ); + push_indice( hBstr, IND_HQ2_DENG_8SMODE, 1, BITS_DE_8SMODE ); + push_indice( hBstr, IND_HQ2_DENG_8SDEPTH, lsbdepth1, BITS_MAX_DEPTH ); FOR( i = 0; i < BANDS; ++i ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx1[i] + 4], hessize[tdifidx1[i] + 4] ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, hescode[tdifidx1[i] + 4], hessize[tdifidx1[i] + 4] ); bits = add( bits, hessize[tdifidx1[i] + 4] ); /* Q0 */ } @@ -2614,7 +2614,7 @@ static Word16 large_symbol_enc_fx( /* o : bits { FOR( i = 0; i < BANDS; ++i ) { - push_indice_fx( hBstr, IND_HQ2_DIFF_ENERGY, LSB1[i], lsbdepth1 ); + push_indice( hBstr, IND_HQ2_DIFF_ENERGY, LSB1[i], lsbdepth1 ); } /*bits += BANDS * lsbdepth1; */ bits = add( bits, extract_h( L_shl( L_mult( BANDS, lsbdepth1 ), 15 ) ) ); /* Q0 */ @@ -3115,7 +3115,7 @@ static Word16 band_energy_quant_fx( { deng_cmode = 0; move16(); - push_indice_fx( hBstr, IND_HQ2_DENG_MODE, deng_cmode, BITS_DE_CMODE ); + push_indice( hBstr, IND_HQ2_DENG_MODE, deng_cmode, BITS_DE_CMODE ); large_symbol_enc_fx( hBstr, bq2_fx, bands_fx, &hLCmode0, 1 ); deng_bits = add( ebits, BITS_DE_CMODE ); /* Q0 */ } @@ -3124,7 +3124,7 @@ static Word16 band_energy_quant_fx( /* setting energy difference coding mode and storing it */ deng_cmode = 1; move16(); - push_indice_fx( hBstr, IND_HQ2_DENG_MODE, deng_cmode, BITS_DE_CMODE ); + push_indice( hBstr, IND_HQ2_DENG_MODE, deng_cmode, BITS_DE_CMODE ); deng_bits = add( hbits, BITS_DE_CMODE ); /* Q0 */ @@ -3479,7 +3479,7 @@ static Word16 p2a_threshold_quant_fx( move16(); } - push_indice_fx( hBstr, IND_HQ2_P2A_FLAGS, p2a_flags_fx[k], 1 ); + push_indice( hBstr, IND_HQ2_P2A_FLAGS, p2a_flags_fx[k], 1 ); j = add( j, 1 ); } @@ -3768,7 +3768,7 @@ static void mdct_spectrum_fine_gain_enc_fx( move16(); } - push_indice_fx( st_fx->hBstr, IND_HQ2_SUBBAND_GAIN, imin_fx, gqbits ); + push_indice( st_fx->hBstr, IND_HQ2_SUBBAND_GAIN, imin_fx, gqbits ); } return; diff --git a/lib_enc/hvq_enc_fx.c b/lib_enc/hvq_enc_fx.c index b06a1734d..a0acd0bfd 100644 --- a/lib_enc/hvq_enc_fx.c +++ b/lib_enc/hvq_enc_fx.c @@ -335,7 +335,7 @@ Word16 hvq_enc_fx( /*o : Consumed bits q_noise_level[i] = 0; move16(); } - push_indice_fx( st_fx->hBstr, IND_HVQ_BWE_NL, q_noise_level_idx[i], 2 ); + push_indice( st_fx->hBstr, IND_HVQ_BWE_NL, q_noise_level_idx[i], 2 ); bits_used = add( bits_used, 2 ); noise_level[i] = q_noise_level[i]; /* in Q15 */ diff --git a/lib_enc/isf_enc_amr_wb_fx.c b/lib_enc/isf_enc_amr_wb_fx.c index 4851ed155..d58998565 100644 --- a/lib_enc/isf_enc_amr_wb_fx.c +++ b/lib_enc/isf_enc_amr_wb_fx.c @@ -173,11 +173,11 @@ static void qisf_ns_28b_fx( indice[4] = add( sub_VQ_fx( &isf[12], dico5_ns_28b_fx + 4, 4, DICO5_NS_28b - 1, &tmp ), 1 ); /* First vector has a problem -> do not allow */ move16(); /* write indices to array */ - push_indice_fx( hBstr, IND_ISF_0_0, indice[0], 6 ); - push_indice_fx( hBstr, IND_ISF_0_1, indice[1], 6 ); - push_indice_fx( hBstr, IND_ISF_0_2, indice[2], 6 ); - push_indice_fx( hBstr, IND_ISF_0_3, indice[3], 5 ); - push_indice_fx( hBstr, IND_ISF_0_4, indice[4], 5 ); + push_indice( hBstr, IND_ISF_0_0, indice[0], 6 ); + push_indice( hBstr, IND_ISF_0_1, indice[1], 6 ); + push_indice( hBstr, IND_ISF_0_2, indice[2], 6 ); + push_indice( hBstr, IND_ISF_0_3, indice[3], 5 ); + push_indice( hBstr, IND_ISF_0_4, indice[4], 5 ); /* decoding the ISFs */ disf_ns_28b_fx( indice, isf ); @@ -305,11 +305,11 @@ static void qisf_2s_36b_fx( indice[0] = Indirect_dico1[indice[0]]; move16(); /* Make interoperable with G722.2 */ - push_indice_fx( hBstr, IND_ISF_0_0, indice[0], 8 ); - push_indice_fx( hBstr, IND_ISF_0_1, indice[1], 8 ); - push_indice_fx( hBstr, IND_ISF_1_0, indice[2], 7 ); - push_indice_fx( hBstr, IND_ISF_1_1, indice[3], 7 ); - push_indice_fx( hBstr, IND_ISF_1_2, indice[4], 6 ); + push_indice( hBstr, IND_ISF_0_0, indice[0], 8 ); + push_indice( hBstr, IND_ISF_0_1, indice[1], 8 ); + push_indice( hBstr, IND_ISF_1_0, indice[2], 7 ); + push_indice( hBstr, IND_ISF_1_1, indice[3], 7 ); + push_indice( hBstr, IND_ISF_1_2, indice[4], 6 ); return; } @@ -442,13 +442,13 @@ static void qisf_2s_46b_fx( indice[0] = Indirect_dico1[indice[0]]; move16(); /* Make interoperable with G722.2 */ - push_indice_fx( hBstr, IND_ISF_0_0, indice[0], 8 ); - push_indice_fx( hBstr, IND_ISF_0_1, indice[1], 8 ); - push_indice_fx( hBstr, IND_ISF_1_0, indice[2], 6 ); - push_indice_fx( hBstr, IND_ISF_1_1, indice[3], 7 ); - push_indice_fx( hBstr, IND_ISF_1_2, indice[4], 7 ); - push_indice_fx( hBstr, IND_ISF_1_3, indice[5], 5 ); - push_indice_fx( hBstr, IND_ISF_1_4, indice[6], 5 ); + push_indice( hBstr, IND_ISF_0_0, indice[0], 8 ); + push_indice( hBstr, IND_ISF_0_1, indice[1], 8 ); + push_indice( hBstr, IND_ISF_1_0, indice[2], 6 ); + push_indice( hBstr, IND_ISF_1_1, indice[3], 7 ); + push_indice( hBstr, IND_ISF_1_2, indice[4], 7 ); + push_indice( hBstr, IND_ISF_1_3, indice[5], 5 ); + push_indice( hBstr, IND_ISF_1_4, indice[6], 5 ); return; } diff --git a/lib_enc/lsf_enc_fx.c b/lib_enc/lsf_enc_fx.c index e6d08c49d..8fe425d74 100644 --- a/lib_enc/lsf_enc_fx.c +++ b/lib_enc/lsf_enc_fx.c @@ -647,11 +647,11 @@ static void lsfq_CNG_fx( Vr_add( qlsf, &CNG_SN1_fx[idx_cv * M], qlsf, M ); /* write the VQ index to the bitstream */ - push_indice_fx( hBstr, IND_ISF_0_0, idx_cv, 4 ); + push_indice( hBstr, IND_ISF_0_0, idx_cv, 4 ); /* write the LVQ index to the bitstream */ - push_indice_fx( hBstr, IND_ISF_0_1, idx_lvq[0], LEN_INDICE ); - push_indice_fx( hBstr, IND_ISF_0_1, idx_lvq[1], LSF_BITS_CNG - 4 - LEN_INDICE ); + push_indice( hBstr, IND_ISF_0_1, idx_lvq[0], LEN_INDICE ); + push_indice( hBstr, IND_ISF_0_1, idx_lvq[1], LSF_BITS_CNG - 4 - LEN_INDICE ); return; } @@ -1117,13 +1117,13 @@ void lsf_end_enc_fx( IF( EQ_16( coder_type_org, GENERIC ) && EQ_32( st->sr_core, INT_FS_16k ) ) { /* VOICED =2 and GENERIC=3, so "coder_type-2" means VOICED =0 and GENERIC=1*/ - push_indice_fx( hBstr, IND_LSF_PREDICTOR_SELECT_BIT, sub( coder_type, 2 ), 1 ); + push_indice( hBstr, IND_LSF_PREDICTOR_SELECT_BIT, sub( coder_type, 2 ), 1 ); } /* write predictor selection bit */ IF( EQ_16( predmode, 2 ) ) { - push_indice_fx( st->hBstr, IND_LSF_PREDICTOR_SELECT_BIT, safety_net, 1 ); + push_indice( st->hBstr, IND_LSF_PREDICTOR_SELECT_BIT, safety_net, 1 ); } test(); @@ -1134,7 +1134,7 @@ void lsf_end_enc_fx( Bit_alloc1 = &BC_TCVQ_BIT_ALLOC_40B[1]; FOR( i = 0; i < ( M / 2 ) + 3; i++ ) { - push_indice_fx( hBstr, IND_LSF, TCQIdx[i], Bit_alloc1[i] ); + push_indice( hBstr, IND_LSF, TCQIdx[i], Bit_alloc1[i] ); } } ELSE @@ -1175,7 +1175,7 @@ void lsf_end_enc_fx( move16(); cumleft -= num_bits; move16(); - push_indice_fx( hBstr, IND_LSF, indice[i], num_bits ); + push_indice( hBstr, IND_LSF, indice[i], num_bits ); } WHILE( cumleft > 0 ) @@ -1195,7 +1195,7 @@ void lsf_end_enc_fx( } cumleft = sub( cumleft, num_bits ); - push_indice_fx( hBstr, IND_LSF, indice[i], num_bits ); + push_indice( hBstr, IND_LSF, indice[i], num_bits ); i = add( i, 1 ); } } @@ -3636,7 +3636,7 @@ static void lsf_mid_enc_fx( /* convert LSFs back to LSPs */ lsf2lsp_fx( qlsf, lsp, M, int_fs ); - push_indice_fx( hBstr, IND_MID_FRAME_LSF_INDEX, idx, nb_bits ); + push_indice( hBstr, IND_MID_FRAME_LSF_INDEX, idx, nb_bits ); return; } diff --git a/lib_enc/nelp_enc_fx.c b/lib_enc/nelp_enc_fx.c index a7588283a..391191175 100644 --- a/lib_enc/nelp_enc_fx.c +++ b/lib_enc/nelp_enc_fx.c @@ -698,9 +698,9 @@ void nelp_encoder_fx( } ELSE { - push_indice_fx( hBstr, IND_IG1, iG1_fx, 5 ); - push_indice_fx( hBstr, IND_IG2A, iG2_fx[0], 6 ); - push_indice_fx( hBstr, IND_IG2B, iG2_fx[1], 6 ); + push_indice( hBstr, IND_IG1, iG1_fx, 5 ); + push_indice( hBstr, IND_IG2A, iG2_fx[0], 6 ); + push_indice( hBstr, IND_IG2B, iG2_fx[1], 6 ); } test(); @@ -1019,7 +1019,7 @@ void nelp_encoder_fx( } ELSE { - push_indice_fx( hBstr, IND_NELP_FID, fid, 2 ); + push_indice( hBstr, IND_NELP_FID, fid, 2 ); } } diff --git a/lib_enc/peak_vq_enc_fx.c b/lib_enc/peak_vq_enc_fx.c index aa4763aa6..dffab4900 100644 --- a/lib_enc/peak_vq_enc_fx.c +++ b/lib_enc/peak_vq_enc_fx.c @@ -559,13 +559,13 @@ Word16 peak_vq_enc_fx( move32(); nf_gains[i] = L_shr( acc, 1 + 2 ); /* nf_gains in Q12. dicn_fx is in Q14. Need extra shift +2. */ move32(); - push_indice_fx( hBstr, IND_HVQ_NF_GAIN, indx, 5 ); + push_indice( hBstr, IND_HVQ_NF_GAIN, indx, 5 ); bits = add( bits, 5 ); } /* Signal number of peaks */ i = sub( max_peaks, vq_peaks ); - push_indice_fx( hBstr, IND_NUM_PEAKS, i, 5 ); + push_indice( hBstr, IND_NUM_PEAKS, i, 5 ); bits = add( bits, 5 ); /* Identify position of first peak and arrange peak gains by position */ @@ -677,8 +677,8 @@ Word16 peak_vq_enc_fx( move16(); } - push_indice_fx( hBstr, IND_FLAGN, FlagN, 1 ); - push_indice_fx( hBstr, IND_PG_IDX, pgain_difidx[0], GAIN0_BITS ); + push_indice( hBstr, IND_FLAGN, FlagN, 1 ); + push_indice( hBstr, IND_PG_IDX, pgain_difidx[0], GAIN0_BITS ); IF( FlagN ) { @@ -692,7 +692,7 @@ Word16 peak_vq_enc_fx( r = pgain_huffsizn[j]; move16(); - push_indice_fx( hBstr, IND_PG_IDX, m, r ); + push_indice( hBstr, IND_PG_IDX, m, r ); } } ELSE @@ -700,7 +700,7 @@ Word16 peak_vq_enc_fx( pPgainDifIdx = &pgain_difidx[1]; FOR( i = 0; i < vqPeaksMinus1; i++ ) { - push_indice_fx( hBstr, IND_PG_IDX, ( *pPgainDifIdx++ ), GAINI_BITS ); + push_indice( hBstr, IND_PG_IDX, ( *pPgainDifIdx++ ), GAINI_BITS ); } } @@ -727,13 +727,13 @@ Word16 peak_vq_enc_fx( num_overlap_bins = sub( 5, sub( vq_peak_idx[i + 1], vq_peak_idx[i] ) ); indx = sub( vq_peak_idx[i], 2 ); quant_peaks_fx( hBstr, &coefs[indx], &coefs_out[indx], &peak_gains[i], &vq_cb_idx, num_overlap_bins, core_brate, vq_peaks ); - push_indice_fx( hBstr, IND_HVQ_PEAKS, vq_cb_idx, 8 ); + push_indice( hBstr, IND_HVQ_PEAKS, vq_cb_idx, 8 ); bits = add( bits, 9 ); } indx = sub( vq_peak_idx[i], 2 ); quant_peaks_fx( hBstr, &coefs[indx], &coefs_out[indx], &peak_gains[i], &vq_cb_idx, 0, core_brate, vq_peaks ); - push_indice_fx( hBstr, IND_HVQ_PEAKS, vq_cb_idx, 8 ); + push_indice( hBstr, IND_HVQ_PEAKS, vq_cb_idx, 8 ); bits = add( bits, 9 ); /* Quantize peak positions and sign with HVQ */ @@ -826,7 +826,7 @@ Word16 peak_vq_enc_fx( move16(); } - push_indice_fx( hBstr, IND_HVQ_PVQ_GAIN, pvq_norm[k], HVQ_PVQ_GAIN_BITS ); + push_indice( hBstr, IND_HVQ_PVQ_GAIN, pvq_norm[k], HVQ_PVQ_GAIN_BITS ); pvq_bits = add( pvq_bits, HVQ_PVQ_GAIN_BITS ); pvq_norm[k] = add( pvq_norm[k], 8 ); @@ -1148,7 +1148,7 @@ static void quant_peaks_fx( { *vq_idx = w_vquant_fx( x, Qx, weights, xq, hvq_peak_cb_fx, cbSize, 0 ); move16(); - push_indice_fx( hBstr, IND_HVQ_PEAKS, 0, 1 ); + push_indice( hBstr, IND_HVQ_PEAKS, 0, 1 ); } ELSE IF( EQ_16( cb_class, 1 ) ) { @@ -1157,7 +1157,7 @@ static void quant_peaks_fx( move16(); *vq_idx = add( *vq_idx, sub( HVQ_CB_SIZE / 2, search_overlap ) ); move16(); - push_indice_fx( hBstr, IND_HVQ_PEAKS, 0, 1 ); + push_indice( hBstr, IND_HVQ_PEAKS, 0, 1 ); } ELSE IF( EQ_16( cb_class, 2 ) ) { @@ -1166,13 +1166,13 @@ static void quant_peaks_fx( move16(); *vq_idx = add( *vq_idx, sub( HVQ_CB_SIZE / 2, search_overlap ) ); move16(); - push_indice_fx( hBstr, IND_HVQ_PEAKS, 1, 1 ); + push_indice( hBstr, IND_HVQ_PEAKS, 1, 1 ); } ELSE { *vq_idx = w_vquant_fx( x, Qx, weights, xq, hvq_peak_cb_fx, cbSize, 1 ); move16(); - push_indice_fx( hBstr, IND_HVQ_PEAKS, 1, 1 ); + push_indice( hBstr, IND_HVQ_PEAKS, 1, 1 ); } FOR( i = 0; i < 4; i++ ) @@ -1458,23 +1458,23 @@ static Word16 hvq_code_pos_fx( test(); IF( GT_16( delta_bits, sparse_bits ) || delta_bits < 0 ) { - push_indice_fx( hBstr, IND_POS_IDX, HVQ_CP_SPARSE, 1 ); + push_indice( hBstr, IND_POS_IDX, HVQ_CP_SPARSE, 1 ); FOR( i = 0; i < sparse_bits; i++ ) { - push_indice_fx( hBstr, IND_POS_IDX, sparse_result[i], 1 ); + push_indice( hBstr, IND_POS_IDX, sparse_result[i], 1 ); } bits = add( add( bits, sparse_bits ), 1 ); } ELSE { - push_indice_fx( hBstr, IND_POS_IDX, HVQ_CP_DELTA, 1 ); + push_indice( hBstr, IND_POS_IDX, HVQ_CP_DELTA, 1 ); FOR( i = 0; i < num_peaks; i++ ) { j = delta[i]; move16(); - push_indice_fx( hBstr, IND_POS_IDX, hvq_cp_huff_val[j], hvq_cp_huff_len[j] ); + push_indice( hBstr, IND_POS_IDX, hvq_cp_huff_val[j], hvq_cp_huff_len[j] ); } bits = add( add( bits, delta_bits ), 1 ); } @@ -1489,7 +1489,7 @@ static Word16 hvq_code_pos_fx( tmp = 0; move16(); } - push_indice_fx( hBstr, IND_POS_IDX, tmp, 1 ); + push_indice( hBstr, IND_POS_IDX, tmp, 1 ); } bits = add( bits, num_peaks ); diff --git a/lib_enc/pit_enc_fx.c b/lib_enc/pit_enc_fx.c index b19fb7e56..8eea1b3d5 100644 --- a/lib_enc/pit_enc_fx.c +++ b/lib_enc/pit_enc_fx.c @@ -1787,7 +1787,7 @@ void pit_Q_enc_fx( } { - push_indice_fx( hBstr, IND_PITCH, pitch_index, nBits ); + push_indice( hBstr, IND_PITCH, pitch_index, nBits ); } return; @@ -1919,7 +1919,7 @@ void pit16k_Q_enc_fx( } } - push_indice_fx( hBstr, IND_PITCH, pitch_index, nBits ); + push_indice( hBstr, IND_PITCH, pitch_index, nBits ); } ELSE IF( EQ_16( nBits, 9 ) ) /* absolute encoding with 9 bits */ { @@ -1949,14 +1949,14 @@ void pit16k_Q_enc_fx( } } - push_indice_fx( hBstr, IND_PITCH, pitch_index, 9 ); + push_indice( hBstr, IND_PITCH, pitch_index, 9 ); } ELSE /* nBits == 6 */ /* relative encoding with 6 bits */ { /*pitch_index = (T0 - *T0_min) * 4 + T0_frac;*/ pitch_index = add( shl( sub( T0, *T0_min ), 2 ), T0_frac ); - push_indice_fx( hBstr, IND_PITCH, pitch_index, nBits ); + push_indice( hBstr, IND_PITCH, pitch_index, nBits ); } limit_T0_fx( L_FRAME16k, 8, L_SUBFR, limit_flag, T0, T0_frac, T0_min, T0_max ); diff --git a/lib_enc/ppp_enc_fx.c b/lib_enc/ppp_enc_fx.c index 9afb27065..ac3d5836a 100644 --- a/lib_enc/ppp_enc_fx.c +++ b/lib_enc/ppp_enc_fx.c @@ -171,9 +171,9 @@ ivas_error ppp_quarter_encoder_fx( CURRCW_Q_FX->upper_cut_off_freq_of_interest_fx = (Word16) find_remd( Ltempn, 20971, &Ltempd ); move16(); - push_indice_fx( hBstr, IND_AMP0, AMP_IDX_fx[0], 6 ); - push_indice_fx( hBstr, IND_AMP1, AMP_IDX_fx[1], 6 ); - push_indice_fx( hBstr, IND_POWER, POWER_IDX_FX, 6 ); + push_indice( hBstr, IND_AMP0, AMP_IDX_fx[0], 6 ); + push_indice( hBstr, IND_AMP1, AMP_IDX_fx[1], 6 ); + push_indice( hBstr, IND_POWER, POWER_IDX_FX, 6 ); /*Phase copying is done through copy_phase instead of car2pol and pol2car */ copy_phase_fx( TARGETCW_FX, *CURRCW_Q_FX, TARGETCW_FX ); @@ -199,7 +199,7 @@ ivas_error ppp_quarter_encoder_fx( /*DTFS_phaseShift( CURRCW_Q,(float)(PI2*tmp/CURRCW_Q->lag) ); */ Q2phaseShift_fx( CURRCW_Q_FX, tmp_fx, CURRCW_Q_FX->lag_fx, S_fx, C_fx ); - push_indice_fx( hBstr, IND_GLOBAL_ALIGNMENT, shr( add( tmp_fx, 12 ), 2 ), 3 ); + push_indice( hBstr, IND_GLOBAL_ALIGNMENT, shr( add( tmp_fx, 12 ), 2 ), 3 ); free( PREVDTFS_FX ); return error; diff --git a/lib_enc/range_enc_fx.c b/lib_enc/range_enc_fx.c index 689b313d8..767b2ecb5 100644 --- a/lib_enc/range_enc_fx.c +++ b/lib_enc/range_enc_fx.c @@ -423,14 +423,14 @@ void rc_enc_bits_fx( IF( GT_16( bits, 16 ) ) { - push_indice_fx( hBstr, sub( IND_RC_END, hPVQ->rc_offset ), u_extract_l( UL_lshr( value, 16 ) ), sub( bits, 16 ) ); + push_indice( hBstr, sub( IND_RC_END, hPVQ->rc_offset ), u_extract_l( UL_lshr( value, 16 ) ), sub( bits, 16 ) ); hPVQ->rc_offset = add( hPVQ->rc_offset, 1 ); // Q0 - push_indice_fx( hBstr, sub( IND_RC_END, hPVQ->rc_offset ), u_extract_l( UL_and( value, 0x0000ffff ) ), 16 ); + push_indice( hBstr, sub( IND_RC_END, hPVQ->rc_offset ), u_extract_l( UL_and( value, 0x0000ffff ) ), 16 ); hPVQ->rc_offset = add( hPVQ->rc_offset, 1 ); // Q0 } ELSE { - push_indice_fx( hBstr, sub( IND_RC_END, hPVQ->rc_offset ), u_extract_l( value ), bits ); + push_indice( hBstr, sub( IND_RC_END, hPVQ->rc_offset ), u_extract_l( value ), bits ); hPVQ->rc_offset = add( hPVQ->rc_offset, 1 ); // Q0 } } @@ -516,7 +516,7 @@ static void rc_enc_write_fx( Word16 bits /* i : Number of bits Q0*/ ) { - push_indice_fx( hBstr, IND_RC_START, byte, bits ); + push_indice( hBstr, IND_RC_START, byte, bits ); return; } diff --git a/lib_enc/stat_noise_uv_enc_fx.c b/lib_enc/stat_noise_uv_enc_fx.c index 0a20db8ed..1445559a1 100644 --- a/lib_enc/stat_noise_uv_enc_fx.c +++ b/lib_enc/stat_noise_uv_enc_fx.c @@ -94,7 +94,7 @@ void stat_noise_uv_enc_fx( noisiness = s_max( noisiness, 0 ); noisiness = s_min( noisiness, 31 ); - push_indice_fx( st_fx->hBstr, IND_NOISINESS, noisiness, 5 ); + push_indice( st_fx->hBstr, IND_NOISINESS, noisiness, 5 ); } /*-----------------------------------------------------------------* diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c index 26c8382ca..1ebef7404 100644 --- a/lib_enc/swb_bwe_enc_fx.c +++ b/lib_enc/swb_bwe_enc_fx.c @@ -186,7 +186,7 @@ void wb_bwe_enc_fx( Q_synth = sub( add( sub( new_input_fx_exp, 16 ), scl ), 1 ); mode = WB_BWE_encoding_fx( coder_type, yorig_fx, WB_fenv_fx, st_fx, Q_synth, Q_synth ); - push_indice_fx( st_fx->hBstr, IND_WB_CLASS, sub( mode, 2 ), 1 ); + push_indice( st_fx->hBstr, IND_WB_CLASS, sub( mode, 2 ), 1 ); } hBWE_FD->prev_mode = mode; @@ -820,7 +820,7 @@ void swb_bwe_enc_fx( /* write FB BWE frame gain to the bitstream */ IF( EQ_16( st_fx->extl, FB_BWE ) ) { - push_indice_fx( st_fx->hBstr, IND_FB_SLOPE, idxGain, NUM_BITS_FB_FRAMEGAIN ); + push_indice( st_fx->hBstr, IND_FB_SLOPE, idxGain, NUM_BITS_FB_FRAMEGAIN ); } return; @@ -2476,7 +2476,7 @@ Word16 WB_BWE_encoding_fx( /* o : classification of wb index = WB_BWE_fenv_q_fx( WB_fenv_fx, F_2_5_fx, 32, 2 ); - push_indice_fx( st_fx->hBstr, IND_WB_FENV, index, 5 ); + push_indice( st_fx->hBstr, IND_WB_FENV, index, 5 ); return ( mode ); } @@ -2665,7 +2665,7 @@ static Word16 SWB_BWE_encoding_fx( { mode = IsTransient; move16(); - push_indice_fx( hBstr, IND_SWB_CLASS, mode, 2 ); + push_indice( hBstr, IND_SWB_CLASS, mode, 2 ); /* Energy for the different bands and global energies */ global_gain_fx = L_deposit_l( 0 ); @@ -2924,13 +2924,13 @@ static Word16 SWB_BWE_encoding_fx( index = shr( add( SWB_tenv_tmp_fx[n_band], 1024 ), 11 ); } - push_indice_fx( hBstr, IND_SWB_TENV, index, 4 ); + push_indice( hBstr, IND_SWB_TENV, index, 4 ); } MSVQ_Interpol_Tran_fx( SWB_fenv_fx, indice ); - push_indice_fx( hBstr, IND_SWB_FENV, indice[0], 7 ); - push_indice_fx( hBstr, IND_SWB_FENV, indice[1], 6 ); + push_indice( hBstr, IND_SWB_FENV, indice[0], 7 ); + push_indice( hBstr, IND_SWB_FENV, indice[1], 6 ); } ELSE { @@ -2955,7 +2955,7 @@ static Word16 SWB_BWE_encoding_fx( global_gain_fx = L_shr( global_gain_fx, 1 ); /*2*Q_shb */ mode = FD_BWE_class_fx( yos_fx, global_gain_fx, tilt_nb_fx, Q_synth, Q_shb, st_fx ); - push_indice_fx( hBstr, IND_SWB_CLASS, mode, 2 ); + push_indice( hBstr, IND_SWB_CLASS, mode, 2 ); energy_control_fx( st_fx, ACELP_CORE, mode, -1, yos_fx, st_offset, energy_factor_fx, Q_synth_lf ); @@ -2990,11 +2990,11 @@ static Word16 SWB_BWE_encoding_fx( /* Energy VQ */ msvq_interpol_fx( SWB_fenv_fx, w_env_fx, indice ); - push_indice_fx( hBstr, IND_SWB_FENV, indice[0], 5 ); - push_indice_fx( hBstr, IND_SWB_FENV, indice[1], 7 ); - push_indice_fx( hBstr, IND_SWB_FENV, indice[2], 6 ); - push_indice_fx( hBstr, IND_SWB_FENV, indice[3], 5 ); - push_indice_fx( hBstr, IND_SWB_FENV, indice[4], 6 ); + push_indice( hBstr, IND_SWB_FENV, indice[0], 5 ); + push_indice( hBstr, IND_SWB_FENV, indice[1], 7 ); + push_indice( hBstr, IND_SWB_FENV, indice[2], 6 ); + push_indice( hBstr, IND_SWB_FENV, indice[3], 5 ); + push_indice( hBstr, IND_SWB_FENV, indice[4], 6 ); } hBWE_FD->prev_mode = mode; move16(); @@ -3939,7 +3939,7 @@ void hq_generic_encoding_fx( IF( EQ_16( hHQ_core->hq_generic_speech_class, 1 ) ) { - push_indice_fx( hBstr, IND_HQ_SWB_EXC_SP_CLAS, 1, 1 ); + push_indice( hBstr, IND_HQ_SWB_EXC_SP_CLAS, 1, 1 ); *hq_generic_exc_clas = HQ_GENERIC_SP_EXC; move16(); } @@ -3947,8 +3947,8 @@ void hq_generic_encoding_fx( { *hq_generic_exc_clas = decision_hq_generic_class_fx_32( coefs_fx, hq_generic_offset ); move16(); - push_indice_fx( hBstr, IND_HQ_SWB_EXC_SP_CLAS, 0, 1 ); - push_indice_fx( hBstr, IND_HQ_SWB_EXC_CLAS, *hq_generic_exc_clas, 1 ); + push_indice( hBstr, IND_HQ_SWB_EXC_SP_CLAS, 0, 1 ); + push_indice( hBstr, IND_HQ_SWB_EXC_CLAS, *hq_generic_exc_clas, 1 ); } FOR( n_band = 0; n_band < nenv; n_band++ ) @@ -4069,23 +4069,23 @@ void hq_generic_encoding_fx( move16(); } - push_indice_fx( hBstr, IND_SWB_FENV_HQ, indice[0], 5 ); - push_indice_fx( hBstr, IND_SWB_FENV_HQ, indice[1], 7 ); - push_indice_fx( hBstr, IND_SWB_FENV_HQ, indice[2], 6 ); - push_indice_fx( hBstr, IND_SWB_FENV_HQ, indice[3], 5 ); + push_indice( hBstr, IND_SWB_FENV_HQ, indice[0], 5 ); + push_indice( hBstr, IND_SWB_FENV_HQ, indice[1], 7 ); + push_indice( hBstr, IND_SWB_FENV_HQ, indice[2], 6 ); + push_indice( hBstr, IND_SWB_FENV_HQ, indice[3], 5 ); IF( LE_16( hq_generic_offset, HQ_GENERIC_FOFFSET_24K4 ) ) { - push_indice_fx( hBstr, IND_SWB_FENV_HQ, indice[4], 6 ); + push_indice( hBstr, IND_SWB_FENV_HQ, indice[4], 6 ); } ELSE { - push_indice_fx( hBstr, IND_SWB_FENV_HQ, indice[4], 5 ); + push_indice( hBstr, IND_SWB_FENV_HQ, indice[4], 5 ); } IF( EQ_16( st_fx->bwidth, FB ) ) { - push_indice_fx( hBstr, IND_FB_FENV_HQ, indice[5], 5 ); + push_indice( hBstr, IND_FB_FENV_HQ, indice[5], 5 ); } FOR( n_band = 0; n_band < nenv; n_band++ ) diff --git a/lib_enc/swb_bwe_enc_hr_fx.c b/lib_enc/swb_bwe_enc_hr_fx.c index fd4a9f125..8b5a17353 100644 --- a/lib_enc/swb_bwe_enc_hr_fx.c +++ b/lib_enc/swb_bwe_enc_hr_fx.c @@ -189,7 +189,7 @@ void swb_bwe_enc_hr_fx( st_fx->EnergyLT_fx_exp = exp1; move16(); - push_indice_fx( hBstr, IND_HR_IS_TRANSIENT, is_transient, 1 ); + push_indice( hBstr, IND_HR_IS_TRANSIENT, is_transient, 1 ); /*---------------------------------------------------------------------* * OLA and MDCT @@ -309,7 +309,7 @@ void swb_bwe_enc_hr_fx( ind1 = gain_quant_fx( &L_gain_fx, &gain1_fx, LG10_MIN_GLOB_GAIN_BWE_HR_Q14, LG10_MAX_GLOB_GAIN_BWE_HR_Q13, NBITS_GLOB_GAIN_BWE_HR, &exp1 ); - push_indice_fx( hBstr, IND_HR_GAIN, ind1, NBITS_GLOB_GAIN_BWE_HR ); + push_indice( hBstr, IND_HR_GAIN, ind1, NBITS_GLOB_GAIN_BWE_HR ); nBits = sub( nBits, NBITS_GLOB_GAIN_BWE_HR ); /* normalization with global gain */ @@ -353,7 +353,7 @@ void swb_bwe_enc_hr_fx( { ind1 = en_band_quant_fx( en_band_fx, swb_hr_env_code3_fx, NUM_ENVLOPE_CODE_HR_TR ); - push_indice_fx( hBstr, IND_HR_ENVELOPE, ind1, NBITS_ENVELOPE_BWE_HR_TR ); + push_indice( hBstr, IND_HR_ENVELOPE, ind1, NBITS_ENVELOPE_BWE_HR_TR ); nBits = sub( nBits, NBITS_ENVELOPE_BWE_HR_TR ); ind2 = ind1; move16(); @@ -369,7 +369,7 @@ void swb_bwe_enc_hr_fx( ind1 = en_band_quant_fx( en_band_fx, swb_hr_env_code3_fx + ( NUM_ENVLOPE_CODE_HR_TR2 * 2 ), NUM_ENVLOPE_CODE_HR_TR2 ); } - push_indice_fx( hBstr, IND_HR_ENVELOPE, ind1, NBITS_ENVELOPE_BWE_HR_TR - 1 ); + push_indice( hBstr, IND_HR_ENVELOPE, ind1, NBITS_ENVELOPE_BWE_HR_TR - 1 ); nBits = sub( nBits, NBITS_ENVELOPE_BWE_HR_TR - 1 ); } @@ -439,7 +439,7 @@ void swb_bwe_enc_hr_fx( L_en_noncoded_fx = L_deposit_h( en_band_fx[N_BANDS_TRANS_BWE_HR - 1] ); /* to Put in Q16+9 */ } - push_indice_fx( hBstr, IND_HR_HF_GAIN, ind1, NBITS_HF_GAIN_BWE_HR ); + push_indice( hBstr, IND_HR_HF_GAIN, ind1, NBITS_HF_GAIN_BWE_HR ); nBits = sub( nBits, NBITS_HF_GAIN_BWE_HR ); } ELSE @@ -507,7 +507,7 @@ void swb_bwe_enc_hr_fx( L_gain_fx = L_shr( L_tmp, sub( 31 - 16, exp2 ) ); /* 31: 'L_tmp' is already in Q31 */ ind1 = gain_quant_fx( &L_gain_fx, &gain1_fx, LG10_MIN_GLOB_GAIN_BWE_HR_Q14, LG10_MAX_GLOB_GAIN_BWE_HR_Q13, NBITS_GLOB_GAIN_BWE_HR, &exp1 ); - push_indice_fx( hBstr, IND_HR_GAIN, ind1, NBITS_GLOB_GAIN_BWE_HR ); + push_indice( hBstr, IND_HR_GAIN, ind1, NBITS_GLOB_GAIN_BWE_HR ); nBits = sub( nBits, NBITS_GLOB_GAIN_BWE_HR ); /* normalization with global gain */ @@ -547,8 +547,8 @@ void swb_bwe_enc_hr_fx( ind1 = en_band_quant_fx( en_band_fx, swb_hr_env_code1_fx, NUM_ENVLOPE_CODE_HR1 ); ind2 = en_band_quant_fx( en_band_fx + 2, swb_hr_env_code2_fx, NUM_ENVLOPE_CODE_HR2 ); - push_indice_fx( hBstr, IND_HR_ENVELOPE, ind1, NBITS_ENVELOPE_BWE_HR1 ); - push_indice_fx( hBstr, IND_HR_ENVELOPE, ind2, NBITS_ENVELOPE_BWE_HR2 ); + push_indice( hBstr, IND_HR_ENVELOPE, ind1, NBITS_ENVELOPE_BWE_HR1 ); + push_indice( hBstr, IND_HR_ENVELOPE, ind2, NBITS_ENVELOPE_BWE_HR2 ); nBits = sub( nBits, NBITS_ENVELOPE_BWE_HR1 + NBITS_ENVELOPE_BWE_HR2 ); @@ -673,7 +673,7 @@ void swb_bwe_enc_hr_fx( L_en_noncoded_fx = L_mult0( min_env_fx, 16384 ); } - push_indice_fx( hBstr, IND_HR_HF_GAIN, ind1, NBITS_HF_GAIN_BWE_HR ); + push_indice( hBstr, IND_HR_HF_GAIN, ind1, NBITS_HF_GAIN_BWE_HR ); nBits = sub( nBits, NBITS_HF_GAIN_BWE_HR ); } ELSE @@ -758,7 +758,7 @@ void swb_bwe_enc_hr_fx( /* Put in Q16 */ L_gain_fx = L_shr( L_temp, sub( 31 - 16, temp2 ) ); /* 31: 'L_temp' is already in Q31 */ ind1 = gain_quant_fx( &L_gain_fx, &gain2_fx, LG10_MIN_GLOB_GAIN_BWE_HR_Q14, LG10_MAX_GLOB_GAIN_BWE_HR_Q13, NBITS_GLOB_GAIN_BWE_HR, &exp2 ); - push_indice_fx( hBstr, IND_HR_GAIN, ind1, NBITS_GLOB_GAIN_BWE_HR ); + push_indice( hBstr, IND_HR_GAIN, ind1, NBITS_GLOB_GAIN_BWE_HR ); nBits = sub( nBits, NBITS_GLOB_GAIN_BWE_HR ); /* normalize with global gain */ @@ -784,7 +784,7 @@ void swb_bwe_enc_hr_fx( WHILE( nBits > 0 ) { i = s_min( nBits, 16 ); - push_indice_fx( hBstr, IND_UNUSED, 0, i ); + push_indice( hBstr, IND_UNUSED, 0, i ); nBits = sub( nBits, i ); } return; diff --git a/lib_enc/swb_bwe_enc_lr_fx.c b/lib_enc/swb_bwe_enc_lr_fx.c index 1a397c514..938cdd971 100644 --- a/lib_enc/swb_bwe_enc_lr_fx.c +++ b/lib_enc/swb_bwe_enc_lr_fx.c @@ -806,7 +806,7 @@ static void gethar_noisegn_fx( } } - push_indice_fx( hBstr, IND_NOISEG, imin_fx, 2 ); + push_indice( hBstr, IND_NOISEG, imin_fx, 2 ); /*g=(float) pow (10.0f,gain_table[imin]);*/ L_temp = L_mult( gain_table_SWB_BWE_fx[imin_fx], 27213 ); /* Q14+Q13+1=Q28 log(10)/log(2)=3.3219 27213.23(Q13) */ @@ -909,7 +909,7 @@ static void EncodeSWBSubbands_fx( /* Write the indices into the bitstream */ FOR( k = 0; k < nBands_search_fx; k++ ) { - push_indice_fx( st_fx->hBstr, IND_LAGINDICES, lagIndices_fx[k], bits_lagIndices_mode0_Har[k] ); + push_indice( st_fx->hBstr, IND_LAGINDICES, lagIndices_fx[k], bits_lagIndices_mode0_Har[k] ); } IF( flag_dis == 0 ) @@ -974,7 +974,7 @@ static void EncodeSWBSubbands_fx( } ELSE { - push_indice_fx( st_fx->hBstr, IND_LAGINDICES, lagIndices_fx[k], bits_lagIndices_modeNormal[k] ); + push_indice( st_fx->hBstr, IND_LAGINDICES, lagIndices_fx[k], bits_lagIndices_modeNormal[k] ); } } diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index c5d5e651e..1a14e7acb 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -866,7 +866,7 @@ void wb_tbe_enc_fx( } ELSE { - push_indice_fx( st_fx->hBstr, IND_SHB_LSF, i, NUM_BITS_LBR_WB_LSF ); + push_indice( st_fx->hBstr, IND_SHB_LSF, i, NUM_BITS_LBR_WB_LSF ); } Copy( lbr_wb_bwe_lsfvq_cbook_2bit_fx + i * LPC_SHB_ORDER_LBR_WB, lsp_wb, LPC_SHB_ORDER_LBR_WB ); @@ -928,7 +928,7 @@ void wb_tbe_enc_fx( } ELSE { - push_indice_fx( st_fx->hBstr, IND_SHB_LSF, i, NUM_BITS_WB_LSF ); + push_indice( st_fx->hBstr, IND_SHB_LSF, i, NUM_BITS_WB_LSF ); } Copy( wb_bwe_lsfvq_cbook_8bit_fx + i * LPC_SHB_ORDER_WB, lsp_wb, LPC_SHB_ORDER_WB ); @@ -1162,7 +1162,7 @@ void wb_tbe_enc_fx( } ELSE { - push_indice_fx( st_fx->hBstr, IND_UV_FLAG, uv_flag, 1 ); + push_indice( st_fx->hBstr, IND_UV_FLAG, uv_flag, 1 ); /* Quantization of the subframe gain parameter */ QuantizeSHBsubgains_fx( st_fx, GainShape, st_fx->extl ); @@ -2482,7 +2482,7 @@ void swb_tbe_enc_fx( } ELSE { - push_indice_fx( st_fx->hBstr, IND_SHB_VF, vf_ind_fx, NUM_BITS_SHB_VF ); + push_indice( st_fx->hBstr, IND_SHB_VF, vf_ind_fx, NUM_BITS_SHB_VF ); } } @@ -5330,7 +5330,7 @@ static void QuantizeSHBsubgains_fx( idxSubGain = closest_centroid_lc_fx( subgains + NUM_SHB_SUBFR / 4, HBCB_SubGain5bit_fx, 1 << NUM_BITS_SHB_SUBGAINS ); Copy( HBCB_SubGain5bit_fx + idxSubGain * NUM_SHB_SUBFR / 4, subgains, NUM_SHB_SUBFR / 4 ); - push_indice_fx( hBstr, IND_SHB_SUBGAIN, idxSubGain, NUM_BITS_SHB_SUBGAINS ); + push_indice( hBstr, IND_SHB_SUBGAIN, idxSubGain, NUM_BITS_SHB_SUBGAINS ); FOR( i = 0; i < NUM_SHB_SUBFR / 4; i++ ) { @@ -5401,7 +5401,7 @@ static void QuantizeSHBsubgains_fx( move16(); IF( NE_16( st_fx->codec_mode, MODE2 ) ) { - push_indice_fx( hBstr, IND_SHB_SUBGAIN, idxSubGain, NUM_BITS_SHB_SUBGAINS ); + push_indice( hBstr, IND_SHB_SUBGAIN, idxSubGain, NUM_BITS_SHB_SUBGAINS ); } } @@ -5596,7 +5596,7 @@ static void Quant_shb_ener_sf_fx( move16(); IF( NE_16( st_fx->codec_mode, MODE2 ) ) { - push_indice_fx( st_fx->hBstr, IND_SHB_ENER_SF, idxSubEner_fx, NUM_BITS_SHB_ENER_SF ); + push_indice( st_fx->hBstr, IND_SHB_ENER_SF, idxSubEner_fx, NUM_BITS_SHB_ENER_SF ); } return; } @@ -5683,7 +5683,7 @@ static void Quant_shb_res_gshape_fx( move16(); IF( NE_16( st_fx->codec_mode, MODE2 ) ) { - push_indice_fx( st_fx->hBstr, IND_SHB_RES_GS1 + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS ); + push_indice( st_fx->hBstr, IND_SHB_RES_GS1 + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS ); } } } @@ -5787,7 +5787,7 @@ static void QuantizeSHBframegain_fx( 1 << NUM_BITS_SHB_FrameGain, &idxFrameGain, &Q_GainFrame, SHBCB_FrameGain64_fx ); - push_indice_fx( st_fx->hBstr, IND_SHB_FRAMEGAIN, idxFrameGain, NUM_BITS_SHB_FrameGain ); + push_indice( st_fx->hBstr, IND_SHB_FRAMEGAIN, idxFrameGain, NUM_BITS_SHB_FrameGain ); *rf_gainFrame_ind = idxFrameGain; move16(); /* Q18 */ } @@ -5852,7 +5852,7 @@ static void QuantizeSHBframegain_fx( move16(); IF( NE_16( st_fx->codec_mode, MODE2 ) ) { - push_indice_fx( st_fx->hBstr, IND_SHB_FRAMEGAIN, idxFrameGain, NUM_BITS_SHB_FRAMEGAIN ); + push_indice( st_fx->hBstr, IND_SHB_FRAMEGAIN, idxFrameGain, NUM_BITS_SHB_FRAMEGAIN ); } *rf_gainFrame_ind = idxFrameGain; move16(); @@ -7176,7 +7176,7 @@ static void Quant_BWE_LSF_fx( move16(); IF( NE_16( st_fx->codec_mode, MODE2 ) ) { - push_indice_fx( hBstr, IND_SHB_LSF, lsf_idx[i], lsf_q_num_bits[i] ); + push_indice( hBstr, IND_SHB_LSF, lsf_idx[i], lsf_q_num_bits[i] ); } } @@ -7186,7 +7186,7 @@ static void Quant_BWE_LSF_fx( move16(); IF( NE_16( st_fx->codec_mode, MODE2 ) ) { - push_indice_fx( hBstr, IND_SHB_MIRROR, m_idx, MIRROR_POINT_BITS ); + push_indice( hBstr, IND_SHB_MIRROR, m_idx, MIRROR_POINT_BITS ); } grid_idx = Find_LSF_grid_fx( lsf, lsf_q, m ); @@ -7194,7 +7194,7 @@ static void Quant_BWE_LSF_fx( hBWE_TD->grid_idx = grid_idx; IF( NE_16( st_fx->codec_mode, MODE2 ) ) { - push_indice_fx( hBstr, IND_SHB_GRID, grid_idx, NUM_LSF_GRID_BITS ); + push_indice( hBstr, IND_SHB_GRID, grid_idx, NUM_LSF_GRID_BITS ); } FOR( i = 0; i < LPC_SHB_ORDER; i++ ) @@ -7407,7 +7407,7 @@ void fb_tbe_enc_fx( } ELSE { - push_indice_fx( st->hBstr, IND_FB_SLOPE, idxGain, 4 ); + push_indice( st->hBstr, IND_FB_SLOPE, idxGain, 4 ); } return; diff --git a/lib_enc/tcq_core_enc_fx.c b/lib_enc/tcq_core_enc_fx.c index 82088be50..d5841094f 100644 --- a/lib_enc/tcq_core_enc_fx.c +++ b/lib_enc/tcq_core_enc_fx.c @@ -449,11 +449,11 @@ ivas_error tcq_core_LR_enc_fx( j = sub( bit_budget, shl( nb_bytes, 3 ) ); FOR( i = 0; i < nb_bytes; i++ ) { - push_indice_fx( hBstr, IND_HQ2_SUBBAND_TCQ, pbs_fx->buf[i], 8 ); + push_indice( hBstr, IND_HQ2_SUBBAND_TCQ, pbs_fx->buf[i], 8 ); } IF( j > 0 ) { - push_indice_fx( hBstr, IND_HQ2_SUBBAND_TCQ, shr( pbs_fx->buf[nb_bytes], ( 8 - j ) ), j ); + push_indice( hBstr, IND_HQ2_SUBBAND_TCQ, shr( pbs_fx->buf[nb_bytes], ( 8 - j ) ), j ); } /* Clear decoding buffer */ set32_fx( coefs_quant_fx, 0, sfm_end[BANDS - 1] + 1 ); diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c index 7fe813d12..253cc9717 100644 --- a/lib_enc/transition_enc_fx.c +++ b/lib_enc/transition_enc_fx.c @@ -389,7 +389,7 @@ void transition_enc_fx( /* 7bit ENCODER */ /* index = (*T0-pit_start)*2 + *T0_frac/2;*/ index = add( shl( sub( *T0, pit_start ), 1 ), shr( *T0_frac, 1 ) ); - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); /* Find the adaptive codebook vector - ACELP long-term prediction */ pred_lt4( &exc_fx[i_subfr], &exc_fx[i_subfr], *T0, *T0_frac, L_SUBFR + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP ); @@ -438,7 +438,7 @@ void transition_enc_fx( limit_T0_fx( L_FRAME, 8, pit_flag, limit_flag, *T0, 0, T0_min, T0_max ); /* find T0_min and T0_max for delta search */ index = add( shl( sub( *T0, pit_start ), 1 ), shr( *T0_frac, 1 ) ); - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); /* Find the adaptive codebook vector - ACELP long-term prediction */ pred_lt4( &exc_fx[i_subfr], &exc_fx[i_subfr], *T0, *T0_frac, L_SUBFR + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP ); @@ -502,7 +502,7 @@ void transition_enc_fx( *T0_frac = 0; move16(); } - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); /* Find the adaptive codebook vector - ACELP long-term prediction */ pred_lt4( &exc_fx[i_subfr], &exc_fx[i_subfr], *T0, *T0_frac, L_SUBFR + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP ); @@ -526,7 +526,7 @@ void transition_enc_fx( *T0 = pitch_fr4_fx( &exc_fx[i_subfr], xn_fx, h1_fx, *T0_min, *T0_max, T0_frac, pit_flag, limit_flag, PIT_MIN, PIT_FR1_8b, L_FRAME, L_SUBFR ); move16(); index = delta_pit_enc_fx( 2, *T0, *T0_frac, *T0_min ); - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); /* Find the adaptive codebook vector - ACELP long-term prediction */ pred_lt4( &exc_fx[i_subfr], &exc_fx[i_subfr], *T0, *T0_frac, L_SUBFR + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP ); @@ -607,7 +607,7 @@ void transition_enc_fx( IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) { - push_indice_fx( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); + push_indice( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); } } @@ -768,7 +768,7 @@ void transition_enc_fx( /*index = (*T0)*2 + ((*T0_frac)>>1) - (PIT16k_FR2_TC0_2SUBFR*2) + ((PIT16k_FR2_TC0_2SUBFR-PIT16k_MIN)*4);*/ index = add( sub( add( shl( *T0, 1 ), shr( *T0_frac, 1 ) ), ( PIT16k_FR2_TC0_2SUBFR * 2 ) ), ( PIT16k_FR2_TC0_2SUBFR - PIT16k_MIN ) * 4 ); } - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); } ELSE IF( EQ_16( nBits, 6 ) ) { @@ -777,7 +777,7 @@ void transition_enc_fx( move16(); index = delta_pit_enc_fx( 4, *T0, *T0_frac, *T0_min ); - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); } IF( EQ_16( nBits, 6 ) ) { @@ -804,7 +804,7 @@ void transition_enc_fx( move16(); set16_fx( &exc_fx[i_subfr], 0, L_SUBFR + 1 ); /* set excitation for current subrame to 0 */ - push_indice_fx( hBstr, IND_LP_FILT_SELECT, 0, 1 ); /* this bit is actually not needed */ + push_indice( hBstr, IND_LP_FILT_SELECT, 0, 1 ); /* this bit is actually not needed */ Copy( xn_fx, xn2_fx, L_SUBFR ); /* target vector for codebook search */ set16_fx( y1_fx, 0, L_SUBFR ); /* set filtered adaptive excitation to 0 */ @@ -839,7 +839,7 @@ void transition_enc_fx( IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) { - push_indice_fx( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); + push_indice( hBstr, IND_LP_FILT_SELECT, lp_select, 1 ); } *Jopt_flag = 1; @@ -1886,7 +1886,7 @@ static void tc_enc_fx( /* write pitch index */ IF( ( GE_16( *T0, L_SUBFR ) ) && ( NE_16( *tc_subfr, 3 * L_SUBFR ) ) ) { - push_indice_fx( hBstr, IND_PITCH, 0, nBits ); + push_indice( hBstr, IND_PITCH, 0, nBits ); } ELSE IF( EQ_16( *tc_subfr, 3 * L_SUBFR ) ) { @@ -1898,7 +1898,7 @@ static void tc_enc_fx( { index = abs_pit_enc_fx( 2, 0, *T0, *T0_frac ); } - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); limit_T0_fx( L_FRAME, 8, 0, 0, *T0, 0, T0_min, T0_max ); } @@ -1907,12 +1907,12 @@ static void tc_enc_fx( IF( EQ_16( nBits, 6 ) ) { index = delta_pit_enc_fx( 2, *T0, *T0_frac, PIT_MIN - 1 ); - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); } ELSE { index = delta_pit_enc_fx( 0, *T0, *T0_frac, PIT_MIN - 1 ); - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); } } } @@ -1926,13 +1926,13 @@ static void tc_enc_fx( ELSE IF( EQ_16( nBits, 6 ) ) { index = add( shl( sub( *T0, PIT16k_MIN ), 1 ), shr( *T0_frac, 1 ) ); - push_indice_fx( hBstr, IND_PITCH, index, nBits ); + push_indice( hBstr, IND_PITCH, index, nBits ); } } - push_indice_fx( hBstr, IND_TC_IMP_SHAPE, imp_shape, 3 ); - push_indice_fx( hBstr, IND_TC_IMP_POS, imp_pos, 6 ); - push_indice_fx( hBstr, IND_TC_IMP_SIGN, pitch_sign_fx, 1 ); - push_indice_fx( hBstr, IND_TC_IMP_GAIN, pitch_index, 3 ); + push_indice( hBstr, IND_TC_IMP_SHAPE, imp_shape, 3 ); + push_indice( hBstr, IND_TC_IMP_POS, imp_pos, 6 ); + push_indice( hBstr, IND_TC_IMP_SIGN, pitch_sign_fx, 1 ); + push_indice( hBstr, IND_TC_IMP_GAIN, pitch_index, 3 ); *position = add( imp_pos, i_subfr ); move16(); diff --git a/lib_enc/voiced_enc_fx.c b/lib_enc/voiced_enc_fx.c index b0dba61de..8081b2909 100644 --- a/lib_enc/voiced_enc_fx.c +++ b/lib_enc/voiced_enc_fx.c @@ -1156,7 +1156,7 @@ ivas_error ppp_voiced_encoder_fx( { Q_delta_lag = add( delta_lag_E, 11 ); /* to make it positive always */ - push_indice_fx( hBstr, IND_DELTALAG, Q_delta_lag, 5 ); + push_indice( hBstr, IND_DELTALAG, Q_delta_lag, 5 ); } WIsyn_fx( *dtfs_temp_fx, CURRP_Q_E_FX, lpc2_fx, &( hSC_VBR->ph_offset_E_fx ), out_fx, L_FRAME, 0, S_fx, C_fx, -- GitLab From dd98b3e4fa57b4bc8b07e175610df09427ba1916 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 25 Mar 2025 14:01:42 -0400 Subject: [PATCH 088/698] fix clang --- lib_enc/transition_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c index 253cc9717..6718552c5 100644 --- a/lib_enc/transition_enc_fx.c +++ b/lib_enc/transition_enc_fx.c @@ -803,7 +803,7 @@ void transition_enc_fx( *Jopt_flag = 0; move16(); - set16_fx( &exc_fx[i_subfr], 0, L_SUBFR + 1 ); /* set excitation for current subrame to 0 */ + set16_fx( &exc_fx[i_subfr], 0, L_SUBFR + 1 ); /* set excitation for current subrame to 0 */ push_indice( hBstr, IND_LP_FILT_SELECT, 0, 1 ); /* this bit is actually not needed */ Copy( xn_fx, xn2_fx, L_SUBFR ); /* target vector for codebook search */ -- GitLab From 7fa6d1bb0c0fe89cb8226b89a80803ed9f59d4b5 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 25 Mar 2025 14:05:40 -0400 Subject: [PATCH 089/698] replace EVS push_next_indice_fx byt IVAS one --- lib_com/bitstream_fx.c | 4 +- lib_com/igf_base_fx.c | 2 +- lib_com/parameter_bitmaping_fx.c | 2 +- lib_enc/ACcontextMapping_enc_fx.c | 2 +- lib_enc/ari_hm_enc_fx.c | 4 +- lib_enc/decision_matrix_enc_fx.c | 4 +- lib_enc/enc_prm_fx.c | 130 +++++++++++++++--------------- lib_enc/evs_enc_fx.c | 14 ++-- lib_enc/fd_cng_enc_fx.c | 4 +- lib_enc/guided_plc_enc_fx.c | 6 +- lib_enc/igf_enc_fx.c | 4 +- lib_enc/igf_scf_enc_fx.c | 2 +- lib_enc/lsf_msvq_ma_enc_fx.c | 10 +-- lib_enc/qlpc_avq_fx.c | 20 ++--- lib_enc/swb_tbe_enc_fx.c | 28 +++---- 15 files changed, 118 insertions(+), 118 deletions(-) diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index 667958264..8cb968bf1 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -288,9 +288,8 @@ void push_indice_fx( return; } -#endif /*-------------------------------------------------------------------* - * push_next_indice_fx() * + * push_next_indice() * * Push a new indice into the buffer at the next position *-------------------------------------------------------------------*/ @@ -315,6 +314,7 @@ void push_next_indice_fx( return; } +#endif /*-------------------------------------------------------------------* diff --git a/lib_com/igf_base_fx.c b/lib_com/igf_base_fx.c index fbccdb519..44cf27c5f 100644 --- a/lib_com/igf_base_fx.c +++ b/lib_com/igf_base_fx.c @@ -1242,7 +1242,7 @@ void IGFCommonFuncsWriteSerialBit( IF( hBstr ) { - push_next_indice_fx( hBstr, bit, 1 ); + push_next_indice( hBstr, bit, 1 ); } *pBitOffset = add( *pBitOffset, 1 ); move16(); diff --git a/lib_com/parameter_bitmaping_fx.c b/lib_com/parameter_bitmaping_fx.c index 0846c618b..923872090 100644 --- a/lib_com/parameter_bitmaping_fx.c +++ b/lib_com/parameter_bitmaping_fx.c @@ -21,7 +21,7 @@ static Word16 PutIntoBitstream_fx( value = *( *pStream )++; codedValue = EncodeValue( value, index ); - push_next_indice_fx( hBstr, codedValue, nBits ); + push_next_indice( hBstr, codedValue, nBits ); return value; } diff --git a/lib_enc/ACcontextMapping_enc_fx.c b/lib_enc/ACcontextMapping_enc_fx.c index c52fddf97..4e02b1f11 100644 --- a/lib_enc/ACcontextMapping_enc_fx.c +++ b/lib_enc/ACcontextMapping_enc_fx.c @@ -343,7 +343,7 @@ void ACcontextMapping_encode2_no_mem_s17_LC_fx( /* Push number of encoded tuples */ value = sub( shr( lastnz, 1 ), 1 ); /* Q0 */ - push_next_indice_fx( hBstr, value, nbbits_ntuples ); + push_next_indice( hBstr, value, nbbits_ntuples ); /* Push arithmetic coded bits */ push_next_bits_fx( hBstr, &ptr[nbbits_ntuples], sub( bp, nbbits_ntuples ) ); diff --git a/lib_enc/ari_hm_enc_fx.c b/lib_enc/ari_hm_enc_fx.c index 76d48ccf4..343f1890f 100644 --- a/lib_enc/ari_hm_enc_fx.c +++ b/lib_enc/ari_hm_enc_fx.c @@ -42,12 +42,12 @@ Word16 EncodeIndex_fx( NumRatioBitsBwLtpIndx = NumRatioBits[Bandwidth][LtpPitchIndex]; move16(); - push_next_indice_fx( hBst, s_and( PeriodicityIndex, 0xff ), NumRatioBitsBwLtpIndx ); + push_next_indice( hBst, s_and( PeriodicityIndex, 0xff ), NumRatioBitsBwLtpIndx ); return NumRatioBitsBwLtpIndx; } ELSE { - push_next_indice_fx( hBst, PeriodicityIndex, 8 ); + push_next_indice( hBst, PeriodicityIndex, 8 ); return 8; } } diff --git a/lib_enc/decision_matrix_enc_fx.c b/lib_enc/decision_matrix_enc_fx.c index 63a13aa1a..bc5feeb6b 100644 --- a/lib_enc/decision_matrix_enc_fx.c +++ b/lib_enc/decision_matrix_enc_fx.c @@ -527,8 +527,8 @@ void signalling_enc_fx( assert( !st_fx->tcxonly ); assert( st_fx->core == HQ_CORE ); - push_next_indice_fx( hBstr, 1, 1 ); /* TCX */ - push_next_indice_fx( hBstr, 1, 1 ); /* HQ_CORE */ + push_next_indice( hBstr, 1, 1 ); /* TCX */ + push_next_indice( hBstr, 1, 1 ); /* HQ_CORE */ /* write ACELP->HQ core switching flag */ test(); diff --git a/lib_enc/enc_prm_fx.c b/lib_enc/enc_prm_fx.c index ecd4e2f01..6c052e596 100644 --- a/lib_enc/enc_prm_fx.c +++ b/lib_enc/enc_prm_fx.c @@ -33,7 +33,7 @@ static void enc_prm_hm( } /* Flag */ - push_next_indice_fx( hBstr, prm_hm[0], 1 ); + push_next_indice( hBstr, prm_hm[0], 1 ); IF( prm_hm[0] ) { @@ -50,7 +50,7 @@ static void enc_prm_hm( IF( EQ_16( st->hTcxCfg->coder_type, VOICED ) ) { /* Gain index */ - push_next_indice_fx( hBstr, prm_hm[2], kTcxHmNumGainBits ); + push_next_indice( hBstr, prm_hm[2], kTcxHmNumGainBits ); } } } @@ -152,7 +152,7 @@ void enc_prm_rf_ivas_fx( index = 3; move16(); } - push_next_indice_fx( hBstr, index, 2 ); + push_next_indice( hBstr, index, 2 ); IF( EQ_16( rf_frame_type, RF_TCXFD ) ) { @@ -296,9 +296,9 @@ void enc_prm_rf_fx( /* LSF indices */ IF( EQ_16( rf_frame_type, RF_TCXFD ) ) { - push_next_indice_fx( hBstr, hRF->rf_indx_lsf[fec_offset][0], lsf_numbits[0] ); /* VQ 1 */ - push_next_indice_fx( hBstr, hRF->rf_indx_lsf[fec_offset][1], lsf_numbits[1] ); /* VQ 2 */ - push_next_indice_fx( hBstr, hRF->rf_indx_lsf[fec_offset][2], lsf_numbits[2] ); /* VQ 3 */ + push_next_indice( hBstr, hRF->rf_indx_lsf[fec_offset][0], lsf_numbits[0] ); /* VQ 1 */ + push_next_indice( hBstr, hRF->rf_indx_lsf[fec_offset][1], lsf_numbits[1] ); /* VQ 2 */ + push_next_indice( hBstr, hRF->rf_indx_lsf[fec_offset][2], lsf_numbits[2] ); /* VQ 3 */ } /* classification */ @@ -324,12 +324,12 @@ void enc_prm_rf_fx( index = 3; move16(); } - push_next_indice_fx( hBstr, index, 2 ); + push_next_indice( hBstr, index, 2 ); IF( EQ_16( rf_frame_type, RF_TCXFD ) ) { /* TCX global gain = 7 bits */ - push_next_indice_fx( hBstr, hRF->rf_gain_tcx[fec_offset], 7 ); + push_next_indice( hBstr, hRF->rf_gain_tcx[fec_offset], 7 ); /*window info 1 bit for long overlap 2 if minimum or half overlap*/ @@ -345,35 +345,35 @@ void enc_prm_rf_fx( test(); IF( ( EQ_16( rf_frame_type, RF_TCXTD1 ) || EQ_16( rf_frame_type, RF_TCXTD2 ) ) && hTcxEnc->tcxltp != 0 ) { - push_next_indice_fx( hBstr, hRF->rf_tcxltp_param[fec_offset], 9 ); + push_next_indice( hBstr, hRF->rf_tcxltp_param[fec_offset], 9 ); } } } ELSE IF( EQ_16( rf_frame_type, 7 ) ) /* NELP bitstream writing */ { /* LSF indices */ - push_next_indice_fx( hBstr, hRF->rf_indx_lsf[fec_offset][0], 8 ); /* VQ 1 */ - push_next_indice_fx( hBstr, hRF->rf_indx_lsf[fec_offset][1], 8 ); /* VQ 2 */ + push_next_indice( hBstr, hRF->rf_indx_lsf[fec_offset][0], 8 ); /* VQ 1 */ + push_next_indice( hBstr, hRF->rf_indx_lsf[fec_offset][1], 8 ); /* VQ 2 */ /* NELP gain indices */ - push_next_indice_fx( hBstr, hRF->rf_indx_nelp_iG1[fec_offset], 5 ); - push_next_indice_fx( hBstr, hRF->rf_indx_nelp_iG2[fec_offset][0], 6 ); - push_next_indice_fx( hBstr, hRF->rf_indx_nelp_iG2[fec_offset][1], 6 ); + push_next_indice( hBstr, hRF->rf_indx_nelp_iG1[fec_offset], 5 ); + push_next_indice( hBstr, hRF->rf_indx_nelp_iG2[fec_offset][0], 6 ); + push_next_indice( hBstr, hRF->rf_indx_nelp_iG2[fec_offset][1], 6 ); /* NELP filter selection index */ - push_next_indice_fx( hBstr, hRF->rf_indx_nelp_fid[fec_offset], 2 ); + push_next_indice( hBstr, hRF->rf_indx_nelp_fid[fec_offset], 2 ); /* tbe gainFr */ - push_next_indice_fx( hBstr, hRF->rf_indx_tbeGainFr[fec_offset], 5 ); + push_next_indice( hBstr, hRF->rf_indx_tbeGainFr[fec_offset], 5 ); } ELSE IF( GE_16( rf_frame_type, 4 ) ) /* rf_frame_type ALL_PRED: 4, NO_PRED: 5, GEN_PRED: 6 */ { /* LSF indices */ - push_next_indice_fx( hBstr, hRF->rf_indx_lsf[fec_offset][0], 8 ); /* VQ 1 */ - push_next_indice_fx( hBstr, hRF->rf_indx_lsf[fec_offset][1], 8 ); /* VQ 2 */ + push_next_indice( hBstr, hRF->rf_indx_lsf[fec_offset][0], 8 ); /* VQ 1 */ + push_next_indice( hBstr, hRF->rf_indx_lsf[fec_offset][1], 8 ); /* VQ 2 */ /* ES pred */ - push_next_indice_fx( hBstr, hRF->rf_indx_EsPred[fec_offset], 3 ); + push_next_indice( hBstr, hRF->rf_indx_EsPred[fec_offset], 3 ); ltp_mode = ACELP_LTP_MODE[1][1][rf_frame_type]; /* Q0 */ ltf_mode = ACELP_LTF_MODE[1][1][rf_frame_type]; /* Q0 */ @@ -386,13 +386,13 @@ void enc_prm_rf_fx( n = ACELP_LTP_BITS_SFR[ltp_mode][sfr]; IF( n != 0 ) { - push_next_indice_fx( hBstr, hRF->rf_indx_pitch[fec_offset][sfr], n ); + push_next_indice( hBstr, hRF->rf_indx_pitch[fec_offset][sfr], n ); } /* Adaptive codebook filtering (1 bit) */ IF( EQ_16( ltf_mode, 2 ) ) { - push_next_indice_fx( hBstr, hRF->rf_indx_ltfMode[fec_offset][sfr], 1 ); + push_next_indice( hBstr, hRF->rf_indx_ltfMode[fec_offset][sfr], 1 ); } /*Innovative codebook*/ @@ -403,7 +403,7 @@ void enc_prm_rf_fx( ( EQ_16( rf_frame_type, RF_GENPRED ) && ( sfr == 0 || EQ_16( sfr, 2 ) ) ) ) { - push_next_indice_fx( hBstr, hRF->rf_indx_fcb[fec_offset][sfr], 7 ); + push_next_indice( hBstr, hRF->rf_indx_fcb[fec_offset][sfr], 7 ); } /* Gains (5b, 6b or 7b / subfr) */ @@ -411,11 +411,11 @@ void enc_prm_rf_fx( IF( sfr == 0 || EQ_16( sfr, 2 ) ) { n = ACELP_GAINS_BITS[gains_mode]; - push_next_indice_fx( hBstr, hRF->rf_indx_gain[fec_offset][sfr], n ); + push_next_indice( hBstr, hRF->rf_indx_gain[fec_offset][sfr], n ); } } /* tbe gainFr */ - push_next_indice_fx( hBstr, hRF->rf_indx_tbeGainFr[fec_offset], 2 ); + push_next_indice( hBstr, hRF->rf_indx_tbeGainFr[fec_offset], 2 ); } /***************/ @@ -429,15 +429,15 @@ void enc_prm_rf_fx( test(); IF( EQ_16( fec_offset, 2 ) ) { - push_next_indice_fx( hBstr, 0, 2 ); + push_next_indice( hBstr, 0, 2 ); } ELSE IF( EQ_16( fec_offset, 3 ) || EQ_16( fec_offset, 5 ) || EQ_16( fec_offset, 7 ) ) { - push_next_indice_fx( hBstr, ( fec_offset - 1 ) / 2, 2 ); + push_next_indice( hBstr, ( fec_offset - 1 ) / 2, 2 ); } /* write RF frame type last in the bitstream */ - push_next_indice_fx( hBstr, rf_frame_type, 3 ); + push_next_indice( hBstr, rf_frame_type, 3 ); } @@ -533,7 +533,7 @@ void enc_prm_fx( IF( st->tcxonly ) { - push_next_indice_fx( hBstr, core == TCX_10_CORE, 1 ); + push_next_indice( hBstr, core == TCX_10_CORE, 1 ); { index = 3; move16(); @@ -553,7 +553,7 @@ void enc_prm_fx( index = 2; move16(); } - push_next_indice_fx( hBstr, index, 2 ); + push_next_indice( hBstr, index, 2 ); } } ELSE @@ -581,13 +581,13 @@ void enc_prm_fx( { idx = add( idx, 1 ); /* Q0 */ } - push_next_indice_fx( hBstr, idx - start_idx, nBits ); - push_next_indice_fx( hBstr, 0, 1 ); /* Indicate to the decoder that the core is ACELP*/ + push_next_indice( hBstr, idx - start_idx, nBits ); + push_next_indice( hBstr, 0, 1 ); /* Indicate to the decoder that the core is ACELP*/ nbits_start = 3; /* Q0 */ } ELSE { - push_next_indice_fx( hBstr, coder_type, 3 ); + push_next_indice( hBstr, coder_type, 3 ); } } ELSE @@ -595,15 +595,15 @@ void enc_prm_fx( IF( EQ_16( st->mdct_sw, MODE1 ) ) { /* 2 bits instead of 3 as TCX is already signaled */ - push_next_indice_fx( hBstr, st->hTcxCfg->coder_type, 2 ); + push_next_indice( hBstr, st->hTcxCfg->coder_type, 2 ); } ELSE { IF( EQ_16( st->mdct_sw_enable, MODE2 ) ) { - push_next_indice_fx( hBstr, 1, 1 ); /* TCX */ - push_next_indice_fx( hBstr, 0, 1 ); /* not HQ_CORE */ - push_next_indice_fx( hBstr, st->hTcxCfg->coder_type, 2 ); + push_next_indice( hBstr, 1, 1 ); /* TCX */ + push_next_indice( hBstr, 0, 1 ); /* not HQ_CORE */ + push_next_indice( hBstr, st->hTcxCfg->coder_type, 2 ); } ELSE { @@ -641,13 +641,13 @@ void enc_prm_fx( { idx = add( idx, 1 ); } - push_next_indice_fx( hBstr, idx - start_idx, nBits ); - push_next_indice_fx( hBstr, 1, 1 ); /* Indicate to the decoder that the core is TCX*/ + push_next_indice( hBstr, idx - start_idx, nBits ); + push_next_indice( hBstr, 1, 1 ); /* Indicate to the decoder that the core is TCX*/ nbits_start = 3; } ELSE { - push_next_indice_fx( hBstr, 4 + st->hTcxCfg->coder_type, 3 ); + push_next_indice( hBstr, 4 + st->hTcxCfg->coder_type, 3 ); } } } @@ -667,7 +667,7 @@ void enc_prm_fx( tmp = TCX_20_CORE; move16(); } - push_next_indice_fx( hBstr, tmp, 1 ); + push_next_indice( hBstr, tmp, 1 ); } /* write TCX overlap mode (1 bit: full, 2 bits: half or no overlap) */ @@ -696,7 +696,7 @@ void enc_prm_fx( overlap_code = 0; move16(); } - push_next_indice_fx( hBstr, overlap_code, nbits_tcx ); + push_next_indice( hBstr, overlap_code, nbits_tcx ); } IF( st->hPlcExt->enableGplc ) @@ -719,7 +719,7 @@ void enc_prm_fx( IF( EQ_16( core, ACELP_CORE ) ) { - push_next_indice_fx( hBstr, st->glr_idx[0], G_LPC_RECOVERY_BITS ); + push_next_indice( hBstr, st->glr_idx[0], G_LPC_RECOVERY_BITS ); } } @@ -789,7 +789,7 @@ void enc_prm_fx( IF( n != 0 ) { - push_next_indice_fx( hBstr, st->bpf_gain_param, n ); + push_next_indice( hBstr, st->bpf_gain_param, n ); } /* Mean energy (2 or 3 bits) */ @@ -797,7 +797,7 @@ void enc_prm_fx( IF( n != 0 ) { - push_next_indice_fx( hBstr, prm[j++], n ); + push_next_indice( hBstr, prm[j++], n ); } /* Subframe parameters */ @@ -810,14 +810,14 @@ void enc_prm_fx( IF( n != 0 ) { - push_next_indice_fx( hBstr, prm[j++], n ); + push_next_indice( hBstr, prm[j++], n ); } /* Adaptive codebook filtering (1 bit) */ IF( EQ_16( st->acelp_cfg.ltf_mode, 2 ) ) { - push_next_indice_fx( hBstr, prm[j++], 1 ); + push_next_indice( hBstr, prm[j++], 1 ); } /*Innovative codebook*/ @@ -839,12 +839,12 @@ void enc_prm_fx( FOR( ix = 0; ix < wordcnt; ix++ ) { - push_next_indice_fx( hBstr, prm[j++], 16 ); + push_next_indice( hBstr, prm[j++], 16 ); } IF( bitcnt ) { - push_next_indice_fx( hBstr, prm[j++], bitcnt ); + push_next_indice( hBstr, prm[j++], bitcnt ); } j = add( j_old, 8 ); /* Q0 */ @@ -852,7 +852,7 @@ void enc_prm_fx( /* Gains (5b, 6b or 7b / subfr) */ n = ACELP_GAINS_BITS[st->acelp_cfg.gains_mode[sfr]]; - push_next_indice_fx( hBstr, prm[j++], n ); + push_next_indice( hBstr, prm[j++], n ); } /*end of for(sfr)*/ } /*end of mode[0]==0*/ @@ -866,14 +866,14 @@ void enc_prm_fx( move16(); IF( st->enablePlcWaveadjust ) { - push_next_indice_fx( hBstr, st->Tonal_SideInfo, 1 ); + push_next_indice( hBstr, st->Tonal_SideInfo, 1 ); } /* TCX Gain = 7 bits */ - push_next_indice_fx( hBstr, prm[j++], 7 ); + push_next_indice( hBstr, prm[j++], 7 ); /* TCX Noise Filling = NBITS_NOISE_FILL_LEVEL bits */ - push_next_indice_fx( hBstr, prm[j++], NBITS_NOISE_FILL_LEVEL ); + push_next_indice( hBstr, prm[j++], NBITS_NOISE_FILL_LEVEL ); /* LTP data */ test(); @@ -881,13 +881,13 @@ void enc_prm_fx( { IF( prm[j] ) { - push_next_indice_fx( hBstr, 1, 1 ); - push_next_indice_fx( hBstr, prm[j + 1], 9 ); - push_next_indice_fx( hBstr, prm[j + 2], 2 ); + push_next_indice( hBstr, 1, 1 ); + push_next_indice( hBstr, prm[j + 1], 9 ); + push_next_indice( hBstr, prm[j + 2], 2 ); } ELSE { - push_next_indice_fx( hBstr, 0, 1 ); + push_next_indice( hBstr, 0, 1 ); } } j = add( j, 3 ); @@ -932,7 +932,7 @@ void enc_prm_fx( test(); IF( st->hTcxCfg->ctx_hm && NE_16( last_core, ACELP_CORE ) ) { - push_next_indice_fx( hBstr, prm[j], 1 ); + push_next_indice( hBstr, prm[j], 1 ); IF( prm[j] ) { @@ -1015,14 +1015,14 @@ void enc_prm_fx( test(); IF( st->enablePlcWaveadjust && k ) { - push_next_indice_fx( hBstr, st->Tonal_SideInfo, 1 ); + push_next_indice( hBstr, st->Tonal_SideInfo, 1 ); } /* TCX Gain = 7 bits */ - push_next_indice_fx( hBstr, prm[j++], 7 ); + push_next_indice( hBstr, prm[j++], 7 ); /* TCX Noise Filling = NBITS_NOISE_FILL_LEVEL bits */ - push_next_indice_fx( hBstr, prm[j++], NBITS_NOISE_FILL_LEVEL ); + push_next_indice( hBstr, prm[j++], NBITS_NOISE_FILL_LEVEL ); /* LTP data */ test(); @@ -1031,13 +1031,13 @@ void enc_prm_fx( { IF( prm[j] ) { - push_next_indice_fx( hBstr, 1, 1 ); - push_next_indice_fx( hBstr, prm[j + 1], 9 ); - push_next_indice_fx( hBstr, prm[j + 2], 2 ); + push_next_indice( hBstr, 1, 1 ); + push_next_indice( hBstr, prm[j + 1], 9 ); + push_next_indice( hBstr, prm[j + 2], 2 ); } ELSE { - push_next_indice_fx( hBstr, 0, 1 ); + push_next_indice( hBstr, 0, 1 ); } } j = add( j, 3 ); @@ -1079,7 +1079,7 @@ void enc_prm_fx( test(); IF( st->hTcxCfg->ctx_hm && !( last_core == ACELP_CORE && k == 0 ) ) { - push_next_indice_fx( hBstr, prm[j], 1 ); + push_next_indice( hBstr, prm[j], 1 ); IF( prm[j] ) { diff --git a/lib_enc/evs_enc_fx.c b/lib_enc/evs_enc_fx.c index c86b7e061..396e97c6f 100644 --- a/lib_enc/evs_enc_fx.c +++ b/lib_enc/evs_enc_fx.c @@ -419,7 +419,7 @@ ivas_error evs_enc_fx( FOR( i = 0; i < padBits; i++ ) { - push_next_indice_fx( hBstr, 0, 1 ); + push_next_indice( hBstr, 0, 1 ); } } @@ -678,19 +678,19 @@ static void writeFrameHeader_loc( Encoder_State *st ) IF( EQ_16( st->cng_type, FD_CNG ) ) { /* write SID/CNG type flag */ - push_next_indice_fx( hBstr, 1, 1 ); + push_next_indice( hBstr, 1, 1 ); /* write bandwidth mode */ - push_next_indice_fx( hBstr, st->bwidth, 2 ); + push_next_indice( hBstr, st->bwidth, 2 ); /* write L_frame */ IF( EQ_16( st->L_frame, L_FRAME ) ) { - push_next_indice_fx( hBstr, 0, 1 ); + push_next_indice( hBstr, 0, 1 ); } ELSE { - push_next_indice_fx( hBstr, 1, 1 ); + push_next_indice( hBstr, 1, 1 ); } } } @@ -698,7 +698,7 @@ static void writeFrameHeader_loc( Encoder_State *st ) { IF( st->rf_mode == 0 ) { - push_next_indice_fx( hBstr, sub( st->bwidth, FrameSizeConfig[st->frame_size_index].bandwidth_min ), FrameSizeConfig[st->frame_size_index].bandwidth_bits ); + push_next_indice( hBstr, sub( st->bwidth, FrameSizeConfig[st->frame_size_index].bandwidth_min ), FrameSizeConfig[st->frame_size_index].bandwidth_bits ); } } @@ -706,7 +706,7 @@ static void writeFrameHeader_loc( Encoder_State *st ) test(); IF( FrameSizeConfig[st->frame_size_index].reserved_bits && st->rf_mode == 0 ) { - push_next_indice_fx( hBstr, 0, FrameSizeConfig[st->frame_size_index].reserved_bits ); + push_next_indice( hBstr, 0, FrameSizeConfig[st->frame_size_index].reserved_bits ); } } diff --git a/lib_enc/fd_cng_enc_fx.c b/lib_enc/fd_cng_enc_fx.c index 2eb13646c..d182e4a44 100644 --- a/lib_enc/fd_cng_enc_fx.c +++ b/lib_enc/fd_cng_enc_fx.c @@ -1211,9 +1211,9 @@ void FdCng_encodeSID_fx( HANDLE_FD_CNG_ENC stenc, /* i/o: pointer to FD_CNG stru { FOR( i = 0; i < stages_37bits; i++ ) { - push_next_indice_fx( hBstr, indices[i], bits_37bits[i] ); + push_next_indice( hBstr, indices[i], bits_37bits[i] ); } - push_next_indice_fx( hBstr, index, 7 ); + push_next_indice( hBstr, index, 7 ); } ELSE { diff --git a/lib_enc/guided_plc_enc_fx.c b/lib_enc/guided_plc_enc_fx.c index 60a3f8f50..81e50d099 100644 --- a/lib_enc/guided_plc_enc_fx.c +++ b/lib_enc/guided_plc_enc_fx.c @@ -215,7 +215,7 @@ void enc_prm_side_Info_fx( IF( GT_16( hPlc_Ext->nBits, 1 ) ) { - push_next_indice_fx( st->hBstr, 1, 1 ); + push_next_indice( st->hBstr, 1, 1 ); diff_pitch = sub( hPlc_Ext->T0, hPlc_Ext->T0_4th ); test(); @@ -225,11 +225,11 @@ void enc_prm_side_Info_fx( move16(); } - push_next_indice_fx( st->hBstr, add( diff_pitch, search_range ), bits_per_subfr ); + push_next_indice( st->hBstr, add( diff_pitch, search_range ), bits_per_subfr ); } ELSE { - push_next_indice_fx( st->hBstr, 0, 1 ); + push_next_indice( st->hBstr, 0, 1 ); } return; diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c index cc4840876..f5c13df57 100644 --- a/lib_enc/igf_enc_fx.c +++ b/lib_enc/igf_enc_fx.c @@ -1513,13 +1513,13 @@ Word16 IGFEncWriteConcatenatedBitstream_fx( tmp = shr( hPrivateData->igfBitstreamBits, 3 ); FOR( i = 0; i < tmp; i++ ) { - push_next_indice_fx( hBstr, pBitstream[i], 8 ); + push_next_indice( hBstr, pBitstream[i], 8 ); } bitsLeft = s_and( hPrivateData->igfBitstreamBits, 0x7 ); IF( bitsLeft > 0 ) { - push_next_indice_fx( hBstr, shr( pBitstream[i], sub( 8, bitsLeft ) ), bitsLeft ); + push_next_indice( hBstr, shr( pBitstream[i], sub( 8, bitsLeft ) ), bitsLeft ); } return hInstance->infoTotalBitsWritten; diff --git a/lib_enc/igf_scf_enc_fx.c b/lib_enc/igf_scf_enc_fx.c index 8659d53a1..ed52349dc 100644 --- a/lib_enc/igf_scf_enc_fx.c +++ b/lib_enc/igf_scf_enc_fx.c @@ -358,7 +358,7 @@ Word16 IGFSCFEncoderEncode_fx( { FOR( i = 0; i < hPublicData->ptrBitIndex; ++i ) { - push_next_indice_fx( hBstr, ptr[i], 1 ); + push_next_indice( hBstr, ptr[i], 1 ); } } diff --git a/lib_enc/lsf_msvq_ma_enc_fx.c b/lib_enc/lsf_msvq_ma_enc_fx.c index aa2255c68..8f6a21d03 100644 --- a/lib_enc/lsf_msvq_ma_enc_fx.c +++ b/lib_enc/lsf_msvq_ma_enc_fx.c @@ -834,7 +834,7 @@ Word16 enc_lsf_tcxlpc_fx( move16(); FOR( i = 0; i < TCXLPC_NUMSTAGES; ++i ) { - push_next_indice_fx( hBstr, **indices, lsf_numbits[i] ); + push_next_indice( hBstr, **indices, lsf_numbits[i] ); ++*indices; } @@ -843,7 +843,7 @@ Word16 enc_lsf_tcxlpc_fx( NumBits = add( NumBits, TCXLPC_IND_NUMBITS ); FOR( i = 0; i < TCXLPC_IND_NUMSTAGES; ++i ) { - push_next_indice_fx( hBstr, **indices, lsf_ind_numbits[i] ); + push_next_indice( hBstr, **indices, lsf_ind_numbits[i] ); ++*indices; } } @@ -909,7 +909,7 @@ Word16 lsf_msvq_ma_encprm_fx( FOR( i = 0; i < no_indices; i++ ) { - push_next_indice_fx( hBstr, *param_lpc, bits_param_lpc[i] ); + push_next_indice( hBstr, *param_lpc, bits_param_lpc[i] ); param_lpc++; nbits_lpc = add( nbits_lpc, bits_param_lpc[i] ); } @@ -919,7 +919,7 @@ Word16 lsf_msvq_ma_encprm_fx( IF( ( core == ACELP_CORE ) && acelp_midLpc ) { - push_next_indice_fx( hBstr, *param_lpc, bits_midlpc ); + push_next_indice( hBstr, *param_lpc, bits_midlpc ); nbits_lpc = add( nbits_lpc, bits_midlpc ); } } @@ -981,7 +981,7 @@ Word16 lsf_bctcvq_encprm_fx( FOR( i = 0; i < no_indices; i++ ) { - push_next_indice_fx( hBstr, *param_lpc, bits_param_lpc[i] ); + push_next_indice( hBstr, *param_lpc, bits_param_lpc[i] ); param_lpc++; nbits_lpc = add( nbits_lpc, bits_param_lpc[i] ); } diff --git a/lib_enc/qlpc_avq_fx.c b/lib_enc/qlpc_avq_fx.c index 13e0a3cf7..288612e43 100644 --- a/lib_enc/qlpc_avq_fx.c +++ b/lib_enc/qlpc_avq_fx.c @@ -143,12 +143,12 @@ static Word16 unary_code( FOR( ; ind > 0; ind-- ) { - push_next_indice_fx( hBstr, 1, 1 ); + push_next_indice( hBstr, 1, 1 ); nb_bits = add( nb_bits, 1 ); // Q0 } /* Stop bit */ - push_next_indice_fx( hBstr, 0, 1 ); + push_next_indice( hBstr, 0, 1 ); return ( nb_bits ); } @@ -195,7 +195,7 @@ static Word16 unpack4bits( IF( nbits == 0 ) { - push_next_indice_fx( hBstr, 0, 0 ); + push_next_indice( hBstr, 0, 0 ); i = 1; move16(); } @@ -206,10 +206,10 @@ static Word16 unpack4bits( FOR( ; nbits > 4; nbits -= 4 ) { - push_next_indice_fx( hBstr, prm[i], 4 ); + push_next_indice( hBstr, prm[i], 4 ); i = add( i, 1 ); } - push_next_indice_fx( hBstr, prm[i], nbits ); + push_next_indice( hBstr, prm[i], nbits ); i = add( i, 1 ); } @@ -330,7 +330,7 @@ Word16 encode_lpc_avq_fx( { nb = 1; move16(); - push_next_indice_fx( hBstr, q_type, nb ); + push_next_indice( hBstr, q_type, nb ); } nb_bits = add( nb_bits, nb ); // Q0 @@ -342,7 +342,7 @@ Word16 encode_lpc_avq_fx( IF( ( ( q_type == 0 ) && NE_16( element_mode, IVAS_CPE_MDCT ) ) || ( ( q_type == 0 ) && ( GE_16( st1, 0 ) ) && EQ_16( element_mode, IVAS_CPE_MDCT ) ) ) { /* Absolute quantizer with 1st stage stochastic codebook */ - push_next_indice_fx( hBstr, st1, bits_for_abs_quant ); + push_next_indice( hBstr, st1, bits_for_abs_quant ); nb_bits = add( nb_bits, bits_for_abs_quant ); // Q0 } @@ -350,7 +350,7 @@ Word16 encode_lpc_avq_fx( test(); IF( EQ_16( element_mode, IVAS_CPE_MDCT ) && EQ_16( stereo_mode, 3 ) && st1 < 0 ) { - push_next_indice_fx( hBstr, add( st1, 2 ), 1 ); + push_next_indice( hBstr, add( st1, 2 ), 1 ); nb_bits = add( nb_bits, 1 ); // Q0 } @@ -368,7 +368,7 @@ Word16 encode_lpc_avq_fx( move16(); i = 3; } - push_next_indice_fx( hBstr, i, 2 ); + push_next_indice( hBstr, i, 2 ); i = sub( qn2, 2 ); @@ -377,7 +377,7 @@ Word16 encode_lpc_avq_fx( move16(); i = 3; } - push_next_indice_fx( hBstr, i, 2 ); + push_next_indice( hBstr, i, 2 ); /* Unary code for abs and rel LPC0/LPC2 */ /* Q5 = 0, Q6=10, Q0=110, Q7=1110, ... */ diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 1a14e7acb..316a5b549 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7579,10 +7579,10 @@ void tbe_write_bitstream_fx( IF( ( st_fx->rf_mode || EQ_32( st_fx->total_brate, ACELP_9k60 ) ) && ( EQ_16( st_fx->bwidth, WB ) ) ) { /* WB LSF */ - push_next_indice_fx( hBstr, hBWE_TD->lsf_WB, NUM_BITS_LBR_WB_LSF ); + push_next_indice( hBstr, hBWE_TD->lsf_WB, NUM_BITS_LBR_WB_LSF ); /* WB frame */ - push_next_indice_fx( hBstr, hBWE_TD->gFrame_WB, NUM_BITS_SHB_FrameGain_LBR_WB ); + push_next_indice( hBstr, hBWE_TD->gFrame_WB, NUM_BITS_SHB_FrameGain_LBR_WB ); } ELSE IF( ( GE_32( st_fx->total_brate, ACELP_9k60 ) ) && ( LE_32( st_fx->total_brate, ACELP_32k ) ) && ( ( EQ_16( st_fx->bwidth, SWB ) ) || ( EQ_16( st_fx->bwidth, FB ) ) ) ) @@ -7592,53 +7592,53 @@ void tbe_write_bitstream_fx( test(); IF( ( EQ_16( st_fx->rf_mode, 1 ) ) || EQ_32( st_fx->total_brate, ACELP_9k60 ) ) { - push_next_indice_fx( hBstr, hBWE_TD->lsf_idx[0], 8 ); + push_next_indice( hBstr, hBWE_TD->lsf_idx[0], 8 ); } ELSE { FOR( i = 0; i < NUM_Q_LSF; i++ ) { - push_next_indice_fx( hBstr, hBWE_TD->lsf_idx[i], lsf_q_num_bits[i] ); + push_next_indice( hBstr, hBWE_TD->lsf_idx[i], lsf_q_num_bits[i] ); } /* LSF mirror points */ - push_next_indice_fx( hBstr, hBWE_TD->m_idx, MIRROR_POINT_BITS ); + push_next_indice( hBstr, hBWE_TD->m_idx, MIRROR_POINT_BITS ); /* LSF grid points */ - push_next_indice_fx( hBstr, hBWE_TD->grid_idx, NUM_LSF_GRID_BITS ); + push_next_indice( hBstr, hBWE_TD->grid_idx, NUM_LSF_GRID_BITS ); } /* Gain shape */ - push_next_indice_fx( hBstr, hBWE_TD->idxSubGains, NUM_BITS_SHB_SUBGAINS ); + push_next_indice( hBstr, hBWE_TD->idxSubGains, NUM_BITS_SHB_SUBGAINS ); /* frame gain */ - push_next_indice_fx( hBstr, hBWE_TD->idxFrameGain, NUM_BITS_SHB_FRAMEGAIN ); + push_next_indice( hBstr, hBWE_TD->idxFrameGain, NUM_BITS_SHB_FRAMEGAIN ); IF( GE_32( st_fx->total_brate, ACELP_24k40 ) ) { /* sub frame energy*/ - push_next_indice_fx( hBstr, hBWE_TD->idx_shb_fr_gain, NUM_BITS_SHB_ENER_SF ); + push_next_indice( hBstr, hBWE_TD->idx_shb_fr_gain, NUM_BITS_SHB_ENER_SF ); /* gain shapes residual */ FOR( i = 0; i < NB_SUBFR16k; i++ ) { - push_next_indice_fx( hBstr, hBWE_TD->idx_res_gs[i], NUM_BITS_SHB_RES_GS ); + push_next_indice( hBstr, hBWE_TD->idx_res_gs[i], NUM_BITS_SHB_RES_GS ); } /* voicing factor */ - push_next_indice_fx( hBstr, hBWE_TD->idx_mixFac, NUM_BITS_SHB_VF ); + push_next_indice( hBstr, hBWE_TD->idx_mixFac, NUM_BITS_SHB_VF ); } IF( EQ_16( st_fx->tec_tfa, 1 ) ) { - push_next_indice_fx( hBstr, st_fx->tec_flag, BITS_TEC ); - push_next_indice_fx( hBstr, st_fx->tfa_flag, BITS_TFA ); + push_next_indice( hBstr, st_fx->tec_flag, BITS_TEC ); + push_next_indice( hBstr, st_fx->tfa_flag, BITS_TFA ); } } IF( EQ_16( st_fx->bwidth, FB ) ) { - push_next_indice_fx( hBstr, hBWE_TD->idxGain, 4 ); + push_next_indice( hBstr, hBWE_TD->idxGain, 4 ); } } -- GitLab From 469705796bbf1af9839f5b0042e670c2dbd6eaff Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 25 Mar 2025 15:03:51 -0400 Subject: [PATCH 090/698] replace other EVS bitstream related stuff --- lib_com/bitstream_fx.c | 9 ++++++--- lib_enc/ACcontextMapping_enc_fx.c | 6 +++--- lib_enc/enc_prm_fx.c | 2 +- lib_enc/igf_enc.c | 4 ++-- lib_enc/igf_enc_fx.c | 4 ++-- lib_enc/lib_enc.c | 2 ++ lib_enc/tcx_utils_enc_fx.c | 26 +++++++++++++++++++++----- 7 files changed, 37 insertions(+), 16 deletions(-) diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index 8cb968bf1..d3aab2616 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -314,11 +314,10 @@ void push_next_indice_fx( return; } -#endif /*-------------------------------------------------------------------* - * push_next_bits_fx() + * push_next_bits() * Push a bit buffer into the buffer at the next position *-------------------------------------------------------------------*/ @@ -368,6 +367,7 @@ void push_next_bits_fx( hBstr->nb_bits_tot = add( hBstr->nb_bits_tot, nb_bits ); move16(); } +#endif /*-------------------------------------------------------------------* * get_next_indice_fx( ) @@ -565,6 +565,7 @@ void reset_indices_dec_fx( * * Write the buffer of indices to a file *-------------------------------------------------------------------*/ +#if 0 void write_indices_fx( Encoder_State *st_fx, /* i/o: encoder state structure */ @@ -663,12 +664,13 @@ void write_indices_fx( return; } +#endif /*-------------------------------------------------------------------* * write_indices_buf_fx() * * Write the buffer of indices to a file *-------------------------------------------------------------------*/ - +#if 0 void write_indices_buf_fx( Encoder_State *st_fx, /* i/o: encoder state structure */ BSTR_ENC_HANDLE hBstr, /* i/o: encoder state structure */ @@ -772,6 +774,7 @@ void write_indices_buf_fx( return; } +#endif /*-------------------------------------------------------------------* * indices_to_serial() * diff --git a/lib_enc/ACcontextMapping_enc_fx.c b/lib_enc/ACcontextMapping_enc_fx.c index 4e02b1f11..43bd30fd4 100644 --- a/lib_enc/ACcontextMapping_enc_fx.c +++ b/lib_enc/ACcontextMapping_enc_fx.c @@ -346,10 +346,10 @@ void ACcontextMapping_encode2_no_mem_s17_LC_fx( push_next_indice( hBstr, value, nbbits_ntuples ); /* Push arithmetic coded bits */ - push_next_bits_fx( hBstr, &ptr[nbbits_ntuples], sub( bp, nbbits_ntuples ) ); + push_next_bits( hBstr, (UWord16 *) &ptr[nbbits_ntuples], sub( bp, nbbits_ntuples ) ); /* Push sign bits */ - push_next_bits_fx( hBstr, signs, nbbits_signs ); + push_next_bits( hBstr, (UWord16 *) signs, nbbits_signs ); bp = add( bp, nbbits_signs ); /* Q0 */ /*write residual Quantization bits*/ @@ -372,7 +372,7 @@ void ACcontextMapping_encode2_no_mem_s17_LC_fx( assert( bp + k <= nbbits ); /* Push the rest of the buffer */ - push_next_bits_fx( hBstr, &ptr[bp], sub( nbbits, bp ) ); + push_next_bits( hBstr, (UWord16 *) &ptr[bp], sub( nbbits, bp ) ); return /*(bp+nbbits_lsbs)*/; /*return only for debug plot*/ } diff --git a/lib_enc/enc_prm_fx.c b/lib_enc/enc_prm_fx.c index 6c052e596..1d619e6c5 100644 --- a/lib_enc/enc_prm_fx.c +++ b/lib_enc/enc_prm_fx.c @@ -965,7 +965,7 @@ void enc_prm_fx( IF( hTcxEnc->tcx_lpc_shaped_ari != 0 ) { - push_next_bits_fx( hBstr, &prm[++j], nbits_tcx ); + push_next_bits( hBstr, ( UWord16 * ) &prm[++j], nbits_tcx ); j = add( j, nbits_tcx ); /* Q0 */ } ELSE diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c index 2680bd9f6..d0c9fa329 100644 --- a/lib_enc/igf_enc.c +++ b/lib_enc/igf_enc.c @@ -2429,7 +2429,7 @@ void IGFEncSetMode_ivas_fx( * * IGF bitstream concatenation for TCX10 modes *-------------------------------------------------------------------*/ - +#if 0 /* Float code */ void IGFEncConcatenateBitstream( const IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i : instance handle of IGF Encoder */ const Word16 bsBits, /* i : number of IGF bits written to list of indices */ @@ -2487,7 +2487,7 @@ move16(); return; } - +#endif /*-------------------------------------------------------------------* * IGFEncResetTCX10BitCounter_ivas_fx() diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c index f5c13df57..a8a64422f 100644 --- a/lib_enc/igf_enc_fx.c +++ b/lib_enc/igf_enc_fx.c @@ -1449,7 +1449,7 @@ hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, nb_bits_written ); return; } - +#if 0 /* old bitstream */ /**********************************************************************/ /* IGF bitsream concatenation for TCX10 modes **************************************************************************/ @@ -1475,7 +1475,7 @@ void IGFEncConcatenateBitstream_fx( const IGF_ENC_INSTANCE_HANDLE hInstance, /** move16(); return; } - +#endif /**********************************************************************/ /* IGF reset bitsream bit counter for TCX10 modes **************************************************************************/ diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index 877fc2045..b17ba61df 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1892,6 +1892,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( } /* write indices into bitstream buffer */ +#if 0 IF( hEncoderConfig->element_mode_init == EVS_MONO ) { test(); @@ -1905,6 +1906,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( } } ELSE +#endif { write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits ); } diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index 7d268b92a..fd6293124 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -3650,7 +3650,7 @@ Word16 tcx_res_Q_spec_ivas_fx( return bits; } - +#if 1 //TV void ProcessIGF_fx( IGF_ENC_INSTANCE_HANDLE const hInstance, /**< in: instance handle of IGF Encoder */ Encoder_State *st, /**< in: Encoder state */ @@ -3667,8 +3667,9 @@ void ProcessIGF_fx( Word16 igfGridIdx; Word16 isIndepFlag; Word16 bsBits; - Word16 bsStart; + Word16 bsStart, pBsStart; BSTR_ENC_HANDLE hBstr = st->hBstr; + IGF_ENC_INSTANCE_HANDLE hIGFEnc = st->hIGFEnc; isIndepFlag = 1; @@ -3721,6 +3722,8 @@ void ProcessIGF_fx( Word16 Q_A; Word16 predictionGain = 0; Word16 *flatteningTrigger = &( st->hIGFEnc->flatteningTrigger ); + + move32(); move16(); move16(); @@ -3750,6 +3753,7 @@ void ProcessIGF_fx( { IGFEncWriteBitstream_fx( hInstance, NULL, &hInstance->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag ); } +#if 0 ELSE { IGFEncWriteBitstream_fx( hInstance, st->hBstr, &hInstance->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag ); @@ -3760,8 +3764,20 @@ void ProcessIGF_fx( { IGFEncConcatenateBitstream_fx( hInstance, bsBits, &hBstr->next_ind_fx, &hBstr->nb_bits_tot, hBstr->ind_list ); } -} +#else + ELSE + { + pBsStart = hBstr->nb_ind_tot; + move16(); + + IGFEncWriteBitstream_ivas_fx( hIGFEnc, hBstr, &hIGFEnc->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag ); + bsBits = sub( hBstr->nb_ind_tot, pBsStart ); + IGFEncConcatenateBitstream_ivas_fx( hIGFEnc, bsBits, hBstr ); + } +#endif +} + #endif void attenuateNbSpectrum_fx( Word16 L_frame, Word32 *spectrum ) { Word16 i, length, att; @@ -3877,7 +3893,7 @@ void ProcessIGF_ivas_fx( IGFEncWriteBitstream_ivas_fx( hIGFEnc, hBstr, &hIGFEnc->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag ); bsBits = sub( hBstr->nb_ind_tot, pBsStart ); - IGFEncConcatenateBitstream( hIGFEnc, bsBits, hBstr ); + IGFEncConcatenateBitstream_ivas_fx( hIGFEnc, bsBits, hBstr ); } return; @@ -3981,7 +3997,7 @@ void ProcessStereoIGF_fx( IGFEncWriteBitstream_ivas_fx( hIGFEnc[ch], hBstr, &hIGFEnc[ch]->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag ); bsBits = sub( hBstr->nb_ind_tot, pBsStart ); - IGFEncConcatenateBitstream( hIGFEnc[ch], bsBits, hBstr ); + IGFEncConcatenateBitstream_ivas_fx( hIGFEnc[ch], bsBits, hBstr ); } } return; -- GitLab From 9a216fbc8ecfdb3dc23206dbaf79e82cfa70819c Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 25 Mar 2025 15:06:06 -0400 Subject: [PATCH 091/698] fix clang --- lib_com/bitstream_fx.c | 2 +- lib_enc/enc_prm_fx.c | 4 ++-- lib_enc/tcx_utils_enc_fx.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index d3aab2616..f0e564a8a 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -664,7 +664,7 @@ void write_indices_fx( return; } -#endif +#endif /*-------------------------------------------------------------------* * write_indices_buf_fx() * diff --git a/lib_enc/enc_prm_fx.c b/lib_enc/enc_prm_fx.c index 1d619e6c5..6d6a2d575 100644 --- a/lib_enc/enc_prm_fx.c +++ b/lib_enc/enc_prm_fx.c @@ -583,7 +583,7 @@ void enc_prm_fx( } push_next_indice( hBstr, idx - start_idx, nBits ); push_next_indice( hBstr, 0, 1 ); /* Indicate to the decoder that the core is ACELP*/ - nbits_start = 3; /* Q0 */ + nbits_start = 3; /* Q0 */ } ELSE { @@ -965,7 +965,7 @@ void enc_prm_fx( IF( hTcxEnc->tcx_lpc_shaped_ari != 0 ) { - push_next_bits( hBstr, ( UWord16 * ) &prm[++j], nbits_tcx ); + push_next_bits( hBstr, (UWord16 *) &prm[++j], nbits_tcx ); j = add( j, nbits_tcx ); /* Q0 */ } ELSE diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index fd6293124..06de6a2fa 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -3650,7 +3650,7 @@ Word16 tcx_res_Q_spec_ivas_fx( return bits; } -#if 1 //TV +#if 1 // TV void ProcessIGF_fx( IGF_ENC_INSTANCE_HANDLE const hInstance, /**< in: instance handle of IGF Encoder */ Encoder_State *st, /**< in: Encoder state */ @@ -3777,7 +3777,7 @@ void ProcessIGF_fx( } #endif } - #endif +#endif void attenuateNbSpectrum_fx( Word16 L_frame, Word32 *spectrum ) { Word16 i, length, att; -- GitLab From 112e0cd6b0455ab87b74ddc78ada386a7d5b8f2d Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Tue, 25 Mar 2025 15:13:41 -0400 Subject: [PATCH 092/698] fix clang --- lib_enc/tcx_utils_enc_fx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index 06de6a2fa..ec1db2cf3 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -3667,7 +3667,11 @@ void ProcessIGF_fx( Word16 igfGridIdx; Word16 isIndepFlag; Word16 bsBits; +#if 0 Word16 bsStart, pBsStart; +#else + Word16 pBsStart; +#endif BSTR_ENC_HANDLE hBstr = st->hBstr; IGF_ENC_INSTANCE_HANDLE hIGFEnc = st->hIGFEnc; @@ -3744,8 +3748,9 @@ void ProcessIGF_fx( } } +#if 0 bsStart = hBstr->next_ind_fx; - +#endif move16(); hInstance->infoTotalBitsPerFrameWritten = 0; move16(); -- GitLab From 95ea2c5fb0bd8883ade9207dc5d36262b91f8f2f Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Wed, 26 Mar 2025 09:06:17 -0400 Subject: [PATCH 093/698] work on encoder config duplication --- lib_enc/ivas_init_enc_fx.c | 46 ++++++++++++++++++-------------------- lib_enc/lib_enc.c | 10 ++++++--- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c index 57858b03e..19996e2e4 100644 --- a/lib_enc/ivas_init_enc_fx.c +++ b/lib_enc/ivas_init_enc_fx.c @@ -463,7 +463,7 @@ void ivas_initialize_handles_enc_fx( * * Initialize IVAS encoder state structure *-------------------------------------------------------------------*/ - +#if 0 ivas_error ivas_init_encoder( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ ) @@ -1073,6 +1073,7 @@ ivas_error ivas_init_encoder( } return error; } +#endif ivas_error ivas_init_encoder_fx( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ ) @@ -1100,10 +1101,10 @@ ivas_error ivas_init_encoder_fx( hEncoderConfig->last_ivas_total_brate = ivas_total_brate; /* Q0 */ move32(); - IF( NE_16( ivas_format, MONO_FORMAT ) ) + if ( NE_16( ivas_format, MONO_FORMAT ) ) { /* In IVAS, ensure that minimum coded bandwidth is WB */ - hEncoderConfig->max_bwidth = extract_l( L_max( hEncoderConfig->max_bwidth, WB ) ); /* Q0 */ + hEncoderConfig->max_bwidth = s_max( hEncoderConfig->max_bwidth, WB ); /* Q0 */ move16(); } st_ivas->ism_mode = ISM_MODE_NONE; @@ -1142,7 +1143,10 @@ ivas_error ivas_init_encoder_fx( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point input audio buffer!\n" ) ); } + set32_fx( st_ivas->p_data_fx[n], 0, extract_l( Mpy_32_16_1( input_Fs, INV_FRAME_PER_SEC_Q15 ) ) ); } + st_ivas->q_data_fx = Q11; + move16(); FOR( ; n < MAX_INPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) { st_ivas->p_data_fx[n] = NULL; @@ -1196,7 +1200,7 @@ ivas_error ivas_init_encoder_fx( /*-----------------------------------------------------------------* * Allocate and initialize SCE/CPE and other handles *-----------------------------------------------------------------*/ - test(); + IF( EQ_32( ivas_format, MONO_FORMAT ) ) { st_ivas->nSCE = 1; /* in mono, there is always only one SCE */ @@ -1209,19 +1213,9 @@ ivas_error ivas_init_encoder_fx( move16(); test(); - IF( st_ivas->hEncoderConfig->element_mode_init == EVS_MONO ) + IF( NE_32( ( error = create_evs_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) { - IF( NE_32( ( error = create_evs_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE - { - IF( ( error = create_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ) != IVAS_ERR_OK ) - { - return error; - } + return error; } /* prepare stereo downmix for EVS */ @@ -1342,7 +1336,7 @@ ivas_error ivas_init_encoder_fx( FOR( n = 0; n < CPE_CHANNELS; n++ ) { - IF( hEncoderConfig->Opt_DTX_ON ) + if ( hEncoderConfig->Opt_DTX_ON ) { st_ivas->hCPE[cpe_id]->hCoreCoder[n]->cng_sba_flag = 1; move16(); @@ -1350,7 +1344,7 @@ ivas_error ivas_init_encoder_fx( } } - IF( st_ivas->nCPE > 1 ) + IF( GT_16( st_ivas->nCPE, 1 ) ) { IF( ( error = create_mct_enc_fx( st_ivas ) ) != IVAS_ERR_OK ) { @@ -1358,7 +1352,7 @@ ivas_error ivas_init_encoder_fx( } } } - ELSE IF( EQ_32( ivas_format, MASA_ISM_FORMAT ) ) + ELSE IF( EQ_16( ivas_format, MASA_ISM_FORMAT ) ) { Word32 ism_total_brate; Word16 k; @@ -1428,12 +1422,12 @@ ivas_error ivas_init_encoder_fx( ELSE IF( EQ_32( ivas_format, SBA_ISM_FORMAT ) ) { st_ivas->ism_mode = ISM_MODE_NONE; - move32(); + move16(); IF( GE_32( ivas_total_brate, IVAS_256k ) ) { st_ivas->ism_mode = ISM_SBA_MODE_DISC; - move32(); + move16(); } IF( ( error = ivas_ism_metadata_enc_create_fx( st_ivas, hEncoderConfig->nchan_ism, element_brate_tmp ) ) != IVAS_ERR_OK ) @@ -1523,7 +1517,7 @@ ivas_error ivas_init_encoder_fx( return error; } - IF( NE_32( st_ivas->mc_mode, MC_MODE_MCT ) ) + IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) ) { st_ivas->nSCE = 0; move16(); @@ -1596,7 +1590,9 @@ ivas_error ivas_init_encoder_fx( FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) { - IF( ( error = create_cpe_enc_fx( st_ivas, cpe_id, ivas_total_brate / ( st_ivas->nCPE + st_ivas->nSCE ) ) ) != IVAS_ERR_OK ) + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nCPE, st_ivas->nSCE ), &res_dec, &res_frac, 0 ); + IF( ( error = create_cpe_enc_fx( st_ivas, cpe_id, res_dec ) ) != IVAS_ERR_OK ) { return error; } @@ -1658,7 +1654,9 @@ ivas_error ivas_init_encoder_fx( *-----------------------------------------------------------------*/ /* set number of input channels used for analysis/coding */ - n = getNumChanAnalysis_fx( st_ivas ); + n = getNumChanAnalysis_fx( st_ivas ); /* Q0 */ + move16(); + IF( n > 0 ) { IF( ( st_ivas->mem_hp20_in_fx = (Word32 **) malloc( n * sizeof( Word32 * ) ) ) == NULL ) diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index b17ba61df..52734b4bd 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -70,7 +70,7 @@ struct IVAS_ENC * Local functions *---------------------------------------------------------------------*/ -static ivas_error configureEncoder_fx( IVAS_ENC_HANDLE hIvasEnc, const Word32 inputFs, const Word32 initBitrate, const IVAS_ENC_BANDWIDTH initBandwidth, const IVAS_ENC_DTX_CONFIG dtxConfig, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig ); +//static ivas_error configureEncoder_fx( IVAS_ENC_HANDLE hIvasEnc, const Word32 inputFs, const Word32 initBitrate, const IVAS_ENC_BANDWIDTH initBandwidth, const IVAS_ENC_DTX_CONFIG dtxConfig, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig ); static ivas_error setBandwidth_fx( IVAS_ENC_HANDLE hIvasEnc, const IVAS_ENC_BANDWIDTH maxBandwidth ); static ivas_error setChannelAwareConfig_fx( IVAS_ENC_HANDLE hIvasEnc, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig ); static ivas_error sanitizeBandwidth_fx( const IVAS_ENC_HANDLE hIvasEnc ); @@ -609,6 +609,7 @@ ivas_error IVAS_ENC_ConfigureForAmbisonics( return error; } +#if 0 ivas_error IVAS_ENC_ConfigureForAmbisonics_fx( IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */ const Word32 inputFs, /* i : input sampling frequency */ @@ -649,11 +650,12 @@ ivas_error IVAS_ENC_ConfigureForAmbisonics_fx( hIvasEnc->maxBandwidthUser = max_bwidth_user; - error = configureEncoder_fx( hIvasEnc, inputFs, bitrate, maxBandwidth, dtxConfig, IVAS_ENC_GetDefaultChannelAwareConfig() ); + error = configureEncoder( hIvasEnc, inputFs, bitrate, maxBandwidth, dtxConfig, IVAS_ENC_GetDefaultChannelAwareConfig() ); return error; } +#endif /*---------------------------------------------------------------------* * IVAS_ENC_ConfigureForSBAObjects() * @@ -1188,7 +1190,7 @@ static ivas_error configureEncoder( * Finalize initialization *-----------------------------------------------------------------*/ - IF( ( error = ivas_init_encoder( st_ivas ) ) != IVAS_ERR_OK ) + IF( ( error = ivas_init_encoder_fx( st_ivas ) ) != IVAS_ERR_OK ) { return error; } @@ -1211,6 +1213,7 @@ static ivas_error configureEncoder( return error; } +#if 0 static ivas_error configureEncoder_fx( IVAS_ENC_HANDLE hIvasEnc, const Word32 inputFs, @@ -1543,6 +1546,7 @@ static ivas_error configureEncoder_fx( return error; } +#endif /*---------------------------------------------------------------------* * IVAS_ENC_GetDelay() * -- GitLab From e8635700ca462990bef565bfc8529611f790732c Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Wed, 26 Mar 2025 13:46:47 -0400 Subject: [PATCH 094/698] Addition of compiler switch, code compiles and run, but not BE --- lib_com/bitstream_fx.c | 7 +++--- lib_enc/igf_enc.c | 2 +- lib_enc/igf_enc_fx.c | 2 +- lib_enc/init_enc_fx.c | 48 ++++++++++++++++++++++++++++---------- lib_enc/ivas_init_enc_fx.c | 7 +++--- lib_enc/ivas_sce_enc_fx.c | 27 +++++++++++++++++---- lib_enc/lib_enc.c | 6 ++--- lib_enc/tcx_utils_enc_fx.c | 6 ++--- 8 files changed, 74 insertions(+), 31 deletions(-) diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index f0e564a8a..f29dc6aee 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -244,7 +244,7 @@ Word16 rate2EVSmode( * * Push a new indice into the buffer *-------------------------------------------------------------------*/ -#if 0 +#ifndef HARM_PUSH_BIT void push_indice_fx( BSTR_ENC_HANDLE hBstr, /* i/o: encoder state structure */ Word16 id, /* i : ID of the indice */ @@ -565,8 +565,7 @@ void reset_indices_dec_fx( * * Write the buffer of indices to a file *-------------------------------------------------------------------*/ -#if 0 - +#ifndef HARM_PUSH_BIT void write_indices_fx( Encoder_State *st_fx, /* i/o: encoder state structure */ BSTR_ENC_HANDLE hBstr, /* i/o: encoder state structure */ @@ -670,7 +669,7 @@ void write_indices_fx( * * Write the buffer of indices to a file *-------------------------------------------------------------------*/ -#if 0 +#ifndef HARM_PUSH_BIT void write_indices_buf_fx( Encoder_State *st_fx, /* i/o: encoder state structure */ BSTR_ENC_HANDLE hBstr, /* i/o: encoder state structure */ diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c index d0c9fa329..c8e8974c2 100644 --- a/lib_enc/igf_enc.c +++ b/lib_enc/igf_enc.c @@ -2429,7 +2429,7 @@ void IGFEncSetMode_ivas_fx( * * IGF bitstream concatenation for TCX10 modes *-------------------------------------------------------------------*/ -#if 0 /* Float code */ +#ifndef HARM_PUSH_BIT /* Float code */ void IGFEncConcatenateBitstream( const IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i : instance handle of IGF Encoder */ const Word16 bsBits, /* i : number of IGF bits written to list of indices */ diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c index a8a64422f..96f8d0202 100644 --- a/lib_enc/igf_enc_fx.c +++ b/lib_enc/igf_enc_fx.c @@ -1449,7 +1449,7 @@ hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, nb_bits_written ); return; } -#if 0 /* old bitstream */ +#ifndef HARM_PUSH_BIT /* old bitstream */ /**********************************************************************/ /* IGF bitsream concatenation for TCX10 modes **************************************************************************/ diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index ea944dd75..4913e410d 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -20,6 +20,7 @@ * * Initialization of state variables *-----------------------------------------------------------------------*/ +#if 1 ivas_error init_encoder_fx( Encoder_State *st_fx /* i/o: Encoder static variables structure */ ) @@ -946,6 +947,7 @@ ivas_error init_encoder_fx( move32(); return error; } +#endif /*-----------------------------------------------------------------------* * LPDmem_enc_init_fx() * @@ -1498,14 +1500,7 @@ ivas_error init_encoder_ivas_fx( IF( st->element_mode == EVS_MONO ) { /* This is done to as in EVS T_CldfbVadState structure is present in Encoder State */ - /* - if ( ( st->hVAD_CLDFB = (VAD_CLDFB_HANDLE) malloc( sizeof( T_CldfbVadState ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for CLDFB VAD\n" ) ); - } - */ st->hVAD_CLDFB = &st->vad_st; - vad_init_fx( st->hVAD_CLDFB ); } ELSE @@ -1670,9 +1665,23 @@ ivas_error init_encoder_ivas_fx( test(); IF( ( NE_16( st->element_mode, IVAS_CPE_MDCT ) && idchan == 0 ) || ( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && st->Opt_DTX_ON ) ) { - IF( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK ) + IF( EQ_16( st->element_mode, EVS_MONO ) ) { - return error; + /* open analysis for input SR */ + st->input_frame_fx = extract_l( Mult_32_16( st->input_Fs, 0x0290 ) ); + + if ( ( error = openCldfb( &st->cldfbAnaEnc, CLDFB_ANALYSIS, CLDFB_getNumChannels( st->input_Fs ), st->input_frame_fx ) ) != IVAS_ERR_OK ) + { + return error; + } + } + ELSE + { + + IF( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK ) + { + return error; + } } } ELSE @@ -1784,11 +1793,20 @@ ivas_error init_encoder_ivas_fx( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD BWE\n" ) ); } - IF( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK ) + IF( st->element_mode == EVS_MONO ) { - return error; + if ( ( error = openCldfb( &st->cldfbSynTd, CLDFB_SYNTHESIS, CLDFB_getNumChannels( 16000 ), L_FRAME16k ) ) != IVAS_ERR_OK ) + { + return error; + } + } + ELSE + { + IF( ( error = openCldfb_ivas_fx( &st->cldfbSynTd, CLDFB_SYNTHESIS, 16000, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK ) + { + return error; + } } - InitSWBencBuffer_ivas_fx( st ); ResetSHBbuffer_Enc_fx( st ); } @@ -2144,7 +2162,13 @@ ivas_error init_encoder_ivas_fx( } ELSE { +#ifndef HARM_ENC_INIT InitTransientDetection_ivas_fx( frame_length, NS2SA_FX2( st->input_Fs, DELAY_FIR_RESAMPL_NS ), st->hTranDet, 0 ); +#else + InitTransientDetection_fx( extract_l( Mult_32_16( st->input_Fs, 0x0290 ) ), + NS2SA_FX2( st->input_Fs, DELAY_FIR_RESAMPL_NS ), + &st->transientDetection ); +#endif } /*-----------------------------------------------------------------* diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c index 19996e2e4..7c72d4780 100644 --- a/lib_enc/ivas_init_enc_fx.c +++ b/lib_enc/ivas_init_enc_fx.c @@ -269,7 +269,7 @@ Word16 getNumChanAnalysis_fx( return n; } - +#ifndef HARM_ENC_INIT /*-------------------------------------------------------------------* * copy_encoder_config_ivas_fx() * @@ -321,6 +321,7 @@ void copy_encoder_config_ivas_fx( return; } +#endif /*-------------------------------------------------------------------* * copy_encoder_config_fx() * @@ -463,7 +464,7 @@ void ivas_initialize_handles_enc_fx( * * Initialize IVAS encoder state structure *-------------------------------------------------------------------*/ -#if 0 +#ifndef HARM_ENC_INIT ivas_error ivas_init_encoder( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ ) @@ -1213,7 +1214,7 @@ ivas_error ivas_init_encoder_fx( move16(); test(); - IF( NE_32( ( error = create_evs_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = create_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/ivas_sce_enc_fx.c b/lib_enc/ivas_sce_enc_fx.c index f1631ba4f..3f80cce2b 100644 --- a/lib_enc/ivas_sce_enc_fx.c +++ b/lib_enc/ivas_sce_enc_fx.c @@ -466,12 +466,31 @@ ivas_error create_sce_enc_fx( st->mct_chan_mode = MCT_CHAN_MODE_REGULAR; move32(); move32(); - + st->max_bwidth = st_ivas->hEncoderConfig->max_bwidth; + st->input_Fs = st_ivas->hEncoderConfig->input_Fs; + st->input_frame_fx = extract_l( Mult_32_16( st->input_Fs, 0x0290 ) ); +#if 0 + IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) + //IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } +#else IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) + //IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) { return error; } - hSCE->hCoreCoder[0] = st; + //IF( NE_32( ( error = init_encoder_fx( st) ), IVAS_ERR_OK ) ) + //{ + // return error; + //} + + //st->hBstr->ind_list = ind_list; + // st_fx->hBstr->ind_list_fx = st->hBstr->ind_list; + //reset_indices_enc_fx( st->hBstr, MAX_NUM_INDICES ); +#endif + hSCE->hCoreCoder[0] = st; st_ivas->hSCE[sce_id] = hSCE; @@ -483,7 +502,7 @@ ivas_error create_sce_enc_fx( * * Create, allocate and initialize EVS encoder SCE handle *-------------------------------------------------------------------------*/ - +#if 0 ivas_error create_evs_sce_enc_fx( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ const Word16 sce_id, /* i : SCE # identifier */ @@ -614,7 +633,7 @@ ivas_error create_evs_sce_enc_fx( return error; } - +#endif /*------------------------------------------------------------------------- * destroy_sce_enc_fx() * diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index 52734b4bd..fdf410df5 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -609,7 +609,7 @@ ivas_error IVAS_ENC_ConfigureForAmbisonics( return error; } -#if 0 +#ifndef HARM_ENC_INIT ivas_error IVAS_ENC_ConfigureForAmbisonics_fx( IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */ const Word32 inputFs, /* i : input sampling frequency */ @@ -1213,7 +1213,7 @@ static ivas_error configureEncoder( return error; } -#if 0 +#ifndef HARM_ENC_INIT static ivas_error configureEncoder_fx( IVAS_ENC_HANDLE hIvasEnc, const Word32 inputFs, @@ -1896,7 +1896,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( } /* write indices into bitstream buffer */ -#if 0 +#ifndef HARM_PUSH_BIT IF( hEncoderConfig->element_mode_init == EVS_MONO ) { test(); diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index ec1db2cf3..5bea901bb 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -3667,7 +3667,7 @@ void ProcessIGF_fx( Word16 igfGridIdx; Word16 isIndepFlag; Word16 bsBits; -#if 0 +#ifndef HARM_PUSH_BIT Word16 bsStart, pBsStart; #else Word16 pBsStart; @@ -3748,7 +3748,7 @@ void ProcessIGF_fx( } } -#if 0 +#ifndef HARM_PUSH_BIT bsStart = hBstr->next_ind_fx; #endif move16(); @@ -3758,7 +3758,7 @@ void ProcessIGF_fx( { IGFEncWriteBitstream_fx( hInstance, NULL, &hInstance->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag ); } -#if 0 +#ifndef HARM_PUSH_BIT ELSE { IGFEncWriteBitstream_fx( hInstance, st->hBstr, &hInstance->infoTotalBitsPerFrameWritten, igfGridIdx, isIndepFlag ); -- GitLab From a5992c0d0657a48d492bd8258ccd44a56fb15add Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Wed, 26 Mar 2025 14:08:20 -0400 Subject: [PATCH 095/698] fix BE issue, still crashed mid-file --- lib_enc/ivas_init_enc_fx.c | 10 ++++++++-- lib_enc/ivas_sce_enc_fx.c | 41 +++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c index 7c72d4780..04b99f039 100644 --- a/lib_enc/ivas_init_enc_fx.c +++ b/lib_enc/ivas_init_enc_fx.c @@ -1212,13 +1212,19 @@ ivas_error ivas_init_encoder_fx( move16(); sce_id = 0; move16(); - +#ifndef HARM_SCE_INIT + test(); + IF( NE_32( ( error = create_evs_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } +#else test(); IF( NE_32( ( error = create_sce_enc_fx( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) { return error; } - +#endif /* prepare stereo downmix for EVS */ IF( EQ_16( hEncoderConfig->stereo_dmx_evs, 1 ) ) { diff --git a/lib_enc/ivas_sce_enc_fx.c b/lib_enc/ivas_sce_enc_fx.c index 3f80cce2b..2e1aed092 100644 --- a/lib_enc/ivas_sce_enc_fx.c +++ b/lib_enc/ivas_sce_enc_fx.c @@ -469,27 +469,11 @@ ivas_error create_sce_enc_fx( st->max_bwidth = st_ivas->hEncoderConfig->max_bwidth; st->input_Fs = st_ivas->hEncoderConfig->input_Fs; st->input_frame_fx = extract_l( Mult_32_16( st->input_Fs, 0x0290 ) ); -#if 0 - IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) - //IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } -#else + IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) - //IF( NE_32( ( error = init_encoder_ivas_fx( st, st_ivas, 0, st_ivas->hEncoderConfig->var_SID_rate_flag, st_ivas->hEncoderConfig->interval_SID, 0, st_ivas->ism_mode, hSCE->element_brate ) ), IVAS_ERR_OK ) ) { return error; } - //IF( NE_32( ( error = init_encoder_fx( st) ), IVAS_ERR_OK ) ) - //{ - // return error; - //} - - //st->hBstr->ind_list = ind_list; - // st_fx->hBstr->ind_list_fx = st->hBstr->ind_list; - //reset_indices_enc_fx( st->hBstr, MAX_NUM_INDICES ); -#endif hSCE->hCoreCoder[0] = st; st_ivas->hSCE[sce_id] = hSCE; @@ -502,7 +486,7 @@ ivas_error create_sce_enc_fx( * * Create, allocate and initialize EVS encoder SCE handle *-------------------------------------------------------------------------*/ -#if 0 +#ifndef HARM_SCE_INIT ivas_error create_evs_sce_enc_fx( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ const Word16 sce_id, /* i : SCE # identifier */ @@ -624,9 +608,30 @@ ivas_error create_evs_sce_enc_fx( { return error; } +#ifdef HARM_PUSH_BIT + /*-----------------------------------------------------------------* + * Bitstream + *-----------------------------------------------------------------*/ + IF( ( st_fx->hBstr = (BSTR_ENC_HANDLE) malloc( sizeof( BSTR_ENC_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Bitstream structure\n" ) ); + } + + /* set pointer to the buffer of indices */ + st_fx->hBstr->ind_list = st_ivas->ind_list; + st_fx->hBstr->ivas_ind_list_zero = &st_ivas->ind_list; + st_fx->hBstr->ivas_max_num_indices = &st_ivas->ivas_max_num_indices; + st_fx->hBstr->nb_ind_tot = 0; + move16(); + st_fx->hBstr->nb_bits_tot = 0; + move16(); + st_fx->hBstr->st_ivas = st_ivas; +#else st_fx->hBstr->ind_list = ind_list; // st_fx->hBstr->ind_list_fx = st->hBstr->ind_list; reset_indices_enc_fx( st_fx->hBstr, MAX_NUM_INDICES ); +#endif + hSCE->hCoreCoder[0] = st_fx; st_ivas->hSCE[sce_id] = hSCE; -- GitLab From 3891a5187d17cdd2e3b49eddf983989ea42a73b9 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Thu, 27 Mar 2025 09:43:27 -0400 Subject: [PATCH 096/698] fix during switching --- lib_com/bitstream_fx.c | 3 ++- lib_enc/acelp_core_switch_enc_fx.c | 18 +++++++++++++++++- lib_enc/stat_enc.h | 3 ++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index f29dc6aee..07a6a632f 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -530,11 +530,12 @@ void reset_indices_enc_fx( move16(); hBstr->nb_bits_tot = 0; move16(); +#ifndef HARM_PUSH_BIT hBstr->next_ind_fx = 0; move16(); hBstr->last_ind_fx = -1; move16(); - +#endif FOR( i = 0; i < max_num_indices; i++ ) { hBstr->ind_list[i].nb_bits = -1; diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c index 9b0ed8b58..8226748f7 100644 --- a/lib_enc/acelp_core_switch_enc_fx.c +++ b/lib_enc/acelp_core_switch_enc_fx.c @@ -62,7 +62,10 @@ void acelp_core_switch_enc_fx( Word16 Aq[2 * ( M + 1 )]; LPD_state_HANDLE hLPDmem; /* ACELP LPDmem memories */ BSTR_ENC_HANDLE hBstr = st_fx->hBstr; - +#ifdef HARM_PUSH_BIT + UWord16 value; + Word16 nb_bits; +#endif hLPDmem = st_fx->hLPDmem; /* initializations */ @@ -153,6 +156,18 @@ void acelp_core_switch_enc_fx( encod_gen_voic_core_switch_fx( st_fx, st_fx->last_L_frame, inp, Aq, A, T_op, exc, cbrate, shift, Q_new ); +#ifdef HARM_PUSH_BIT + i = find_indice( hBstr, TAG_ACELP_SUBFR_LOOP_START, &value, &nb_bits ); +#ifdef DEBUGGING + assert( i >= 0 && "Internal error in ACELP core switching - unable to find ACELP subframe indices!" ); +#endif + while ( hBstr->ind_list[i].id == TAG_ACELP_SUBFR_LOOP_START ) + { + push_indice( hBstr, IND_CORE_SWITCHING_CELP_SUBFRAME, hBstr->ind_list[i].value, hBstr->ind_list[i].nb_bits ); + i++; + } + delete_indice( hBstr, TAG_ACELP_SUBFR_LOOP_START ); +#else /*----------------------------------------------------------------* * bit-stream: modify the layer of sub frame CELP *----------------------------------------------------------------*/ @@ -165,6 +180,7 @@ void acelp_core_switch_enc_fx( hBstr->ind_list[TAG_ACELP_SUBFR_LOOP_START + i].nb_bits = -1; /* Q0 */ move16(); } +#endif /*----------------------------------------------------------------* * BWE encoding *----------------------------------------------------------------*/ diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 64ab13ea2..5305a8bdc 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -92,9 +92,10 @@ typedef struct bitstream_enc_data_structure void *st_ivas; /* IVAS encoder structure */ // Word16 nb_bits_tot_fx; /* total number of bits already written */ // Indice *ind_list_fx; /* list of indices */ +#ifndef HARM_PUSH_BIT Word16 next_ind_fx; /* pointer to the next empty slot in the list of indices */ Word16 last_ind_fx; /* last written indice */ - +#endif } BSTR_ENC_DATA, *BSTR_ENC_HANDLE; /*----------------------------------------------------------------------------------* -- GitLab From 6b9dde261138ff69f80e1932e3156250ccdd672d Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Thu, 27 Mar 2025 09:50:15 -0400 Subject: [PATCH 097/698] fix when erasing indices --- lib_enc/cng_enc_fx.c | 4 ++++ lib_enc/eval_pit_contr_fx.c | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib_enc/cng_enc_fx.c b/lib_enc/cng_enc_fx.c index 221454970..d6cb59b17 100644 --- a/lib_enc/cng_enc_fx.c +++ b/lib_enc/cng_enc_fx.c @@ -2460,8 +2460,12 @@ static void shb_CNG_encod_fx( push_indice( hBstr, IND_SHB_CNG_GAIN, idx_ener_fx, 4 ); push_indice( hBstr, IND_SID_BW, 1, 1 ); +#ifdef HARM_PUSH_BIT + delete_indice( hBstr, IND_CNG_ENV1 ); +#else hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, hBstr->ind_list[IND_CNG_ENV1].nb_bits ); hBstr->ind_list[IND_CNG_ENV1].nb_bits = -1; +#endif move16(); move16(); diff --git a/lib_enc/eval_pit_contr_fx.c b/lib_enc/eval_pit_contr_fx.c index df629f295..5e1c8dfe3 100644 --- a/lib_enc/eval_pit_contr_fx.c +++ b/lib_enc/eval_pit_contr_fx.c @@ -378,6 +378,16 @@ Word16 Pit_exc_contribution_len_fx( /* o : bin where pit move16(); set16_fx( pitch_buf, shl( L_SUBFR, 6 ), NB_SUBFR16k ); + +#ifdef HARM_PUSH_BIT + /* pitch contribution useless - delete all previously written indices belonging to pitch contribution */ + for ( i = TAG_ACELP_SUBFR_LOOP_START; i < TAG_ACELP_SUBFR_LOOP_END; i++ ) + { + delete_indice( hBstr, i ); + } + + delete_indice( hBstr, IND_ES_PRED ); +#else /* pitch contribution useless - delete all previously written indices belonging to pitch contribution */ FOR( i = TAG_ACELP_SUBFR_LOOP_START; i < TAG_ACELP_SUBFR_LOOP_END; i++ ) { @@ -396,6 +406,7 @@ Word16 Pit_exc_contribution_len_fx( /* o : bin where pit hBstr->ind_list[IND_ES_PRED].nb_bits = -1; move16(); } +#endif } IF( LT_32( st_fx->core_brate, CFREQ_BITRATE ) ) { -- GitLab From c0db989af3499a2dc4741b2059c6e6b6449524af Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Thu, 27 Mar 2025 09:54:11 -0400 Subject: [PATCH 098/698] fix clang --- lib_enc/cng_enc_fx.c | 2 +- lib_enc/igf_enc_fx.c | 2 +- lib_enc/init_enc_fx.c | 2 +- lib_enc/ivas_sce_enc_fx.c | 2 +- lib_enc/lib_enc.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_enc/cng_enc_fx.c b/lib_enc/cng_enc_fx.c index d6cb59b17..b031ca528 100644 --- a/lib_enc/cng_enc_fx.c +++ b/lib_enc/cng_enc_fx.c @@ -2460,7 +2460,7 @@ static void shb_CNG_encod_fx( push_indice( hBstr, IND_SHB_CNG_GAIN, idx_ener_fx, 4 ); push_indice( hBstr, IND_SID_BW, 1, 1 ); -#ifdef HARM_PUSH_BIT +#ifdef HARM_PUSH_BIT delete_indice( hBstr, IND_CNG_ENV1 ); #else hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, hBstr->ind_list[IND_CNG_ENV1].nb_bits ); diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c index 96f8d0202..f508b313f 100644 --- a/lib_enc/igf_enc_fx.c +++ b/lib_enc/igf_enc_fx.c @@ -1449,7 +1449,7 @@ hBstr->nb_bits_tot = sub( hBstr->nb_bits_tot, nb_bits_written ); return; } -#ifndef HARM_PUSH_BIT /* old bitstream */ +#ifndef HARM_PUSH_BIT /* old bitstream */ /**********************************************************************/ /* IGF bitsream concatenation for TCX10 modes **************************************************************************/ diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 4913e410d..60e6019aa 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -1675,7 +1675,7 @@ ivas_error init_encoder_ivas_fx( return error; } } - ELSE + ELSE { IF( ( error = openCldfb_ivas_fx( &st->cldfbAnaEnc, CLDFB_ANALYSIS, st->input_Fs, CLDFB_PROTOTYPE_1_25MS, ENC ) ) != IVAS_ERR_OK ) diff --git a/lib_enc/ivas_sce_enc_fx.c b/lib_enc/ivas_sce_enc_fx.c index 2e1aed092..41127a98e 100644 --- a/lib_enc/ivas_sce_enc_fx.c +++ b/lib_enc/ivas_sce_enc_fx.c @@ -474,7 +474,7 @@ ivas_error create_sce_enc_fx( { return error; } - hSCE->hCoreCoder[0] = st; + hSCE->hCoreCoder[0] = st; st_ivas->hSCE[sce_id] = hSCE; diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index fdf410df5..dd01386d8 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -70,7 +70,7 @@ struct IVAS_ENC * Local functions *---------------------------------------------------------------------*/ -//static ivas_error configureEncoder_fx( IVAS_ENC_HANDLE hIvasEnc, const Word32 inputFs, const Word32 initBitrate, const IVAS_ENC_BANDWIDTH initBandwidth, const IVAS_ENC_DTX_CONFIG dtxConfig, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig ); +// static ivas_error configureEncoder_fx( IVAS_ENC_HANDLE hIvasEnc, const Word32 inputFs, const Word32 initBitrate, const IVAS_ENC_BANDWIDTH initBandwidth, const IVAS_ENC_DTX_CONFIG dtxConfig, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig ); static ivas_error setBandwidth_fx( IVAS_ENC_HANDLE hIvasEnc, const IVAS_ENC_BANDWIDTH maxBandwidth ); static ivas_error setChannelAwareConfig_fx( IVAS_ENC_HANDLE hIvasEnc, const IVAS_ENC_CHANNEL_AWARE_CONFIG caConfig ); static ivas_error sanitizeBandwidth_fx( const IVAS_ENC_HANDLE hIvasEnc ); -- GitLab From b0162e358ff26d71df3c137718ba8b22ac3b023a Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Thu, 27 Mar 2025 11:34:05 -0400 Subject: [PATCH 099/698] fix reset indice for dtx case --- lib_enc/dtx_fx.c | 4 ++++ lib_enc/enc_ppp_fx.c | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib_enc/dtx_fx.c b/lib_enc/dtx_fx.c index 9a66572ab..6d8a29795 100644 --- a/lib_enc/dtx_fx.c +++ b/lib_enc/dtx_fx.c @@ -838,7 +838,11 @@ void dtx_fx( /* reset the bitstream (IVAS format signalling was already written) */ IF( NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) && st_fx->hBstr != NULL ) { +#ifdef HARM_PUSH_BIT + reset_indices_enc_fx( st_fx->hBstr, st_fx->hBstr->nb_ind_tot ); +#else reset_indices_enc_fx( st_fx->hBstr, MAX_NUM_INDICES ); +#endif } } diff --git a/lib_enc/enc_ppp_fx.c b/lib_enc/enc_ppp_fx.c index c2aeaa7ca..9d1ffad60 100644 --- a/lib_enc/enc_ppp_fx.c +++ b/lib_enc/enc_ppp_fx.c @@ -189,8 +189,11 @@ ivas_error encod_ppp_fx( /* We write signalling indices again only in case of bump_up */ /* delete previous indices */ +#ifdef HARM_PUSH_BIT + reset_indices_enc_fx( hBstr, hBstr->nb_ind_tot ); +#else reset_indices_enc_fx( hBstr, MAX_NUM_INDICES ); - +#endif /* signalling matrix (writing of signalling bits) */ signalling_enc_fx( st_fx ); } @@ -373,8 +376,11 @@ ivas_error encod_ppp_ivas_fx( /* We write signalling indices again only in case of bump_up */ /* delete previous indices */ +#ifdef HARM_PUSH_BIT + reset_indices_enc_fx( hBstr, hBstr->nb_ind_tot ); +#else reset_indices_enc_fx( hBstr, MAX_NUM_INDICES ); - +#endif /* signalling matrix (writing of signalling bits) */ signalling_enc_fx( st_fx ); } -- GitLab From faf1f546c95d0ea2d6dc16419b8e87dac5d92e57 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Thu, 27 Mar 2025 12:52:49 -0400 Subject: [PATCH 100/698] Fix bitrate switching --- lib_enc/lib_enc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index dd01386d8..063f39dea 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1817,6 +1817,16 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( /* set pointers to the new buffers of indices in each element */ FOR( n = 0; n < st_ivas->nSCE; n++ ) { +#ifdef HARM_PUSH_BIT + st_ivas->hSCE[n]->hCoreCoder[0]->hBstr->ind_list = st_ivas->ind_list; + st_ivas->hSCE[n]->hCoreCoder[0]->hBstr->ivas_ind_list_zero = &st_ivas->ind_list; + + if ( st_ivas->hSCE[n]->hMetaData != NULL ) + { + st_ivas->hSCE[n]->hMetaData->ind_list = st_ivas->ind_list_metadata; + st_ivas->hSCE[n]->hMetaData->ivas_ind_list_zero = &st_ivas->ind_list_metadata; + } +#else test(); IF( !( hIvasEnc->hCoreCoder == NULL && EQ_32( hEncoderConfig->ivas_format, MONO_FORMAT ) ) ) { @@ -1832,6 +1842,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( st_ivas->hSCE[n]->hMetaData->ind_list = st_ivas->ind_list_metadata; st_ivas->hSCE[n]->hMetaData->ivas_ind_list_zero = &st_ivas->ind_list_metadata; } +#endif } FOR( n = 0; n < st_ivas->nCPE; n++ ) -- GitLab From 7f70a132985455dcf07605cb195ace3a99637457 Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Mon, 31 Mar 2025 11:41:23 +0200 Subject: [PATCH 101/698] Activate FIX_1379_MASA_ANGLE_ROUND (merge conflict resolution) --- lib_com/options.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib_com/options.h b/lib_com/options.h index 4653bb460..59a6b3508 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -68,6 +68,7 @@ #endif /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ +#define FIX_1379_MASA_ANGLE_ROUND //#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ #define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ #define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ -- GitLab From 731ee44c7b9420febc977a032b4258304a977d49 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 11:29:12 +0200 Subject: [PATCH 102/698] introduce FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 --- lib_com/prot_fx.h | 8 +++++++- lib_dec/swb_tbe_dec_fx.c | 21 +++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 19560b368..f74c3071d 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,7 +60,7 @@ #define TCX_IMDCT_HEADROOM 1 // *** Currently checking be-nes of all-inactive (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50048 -- DONE GREEN! -// *** Currently checking be speedups ( only modified version of FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) +// *** Currently checking be speedups ( only modified version of FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50073 // --> next test: check nonbe speedups // //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 @@ -73,6 +73,12 @@ // NUmbers none: 88,183 +//----------------------------------------------------------------------- +//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE - pipes TBD +// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) + + + /*----------------------------------------------------------------------------------* * Prototypes of global macros *----------------------------------------------------------------------------------*/ diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 2b42e5b0d..3bc2868a2 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -6997,13 +6997,16 @@ void ivas_swb_tbe_dec_fx( move32(); } - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART K" ); + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" ); + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" ); /* generate 32kHz SHB synthesis from 12.8(16)kHz signal */ GenSHBSynth_fx32( shaped_shb_excitation_fx_32, error_fx, hBWE_TD->genSHBsynth_Hilbert_Mem_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->L_frame, &( hBWE_TD->syn_dm_phase ) ); Copy_Scale_sig_32_16( st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, 2 * ALLPASSSECTIONS_STEEP, -( Q11 - Q_bwe_exc ) ); Copy32( error_fx + L_FRAME32k - L_SHB_TRANSITION_LENGTH, hBWE_TD->old_tbe_synth_fx_32, L_SHB_TRANSITION_LENGTH ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" );*/ + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" ); /* resample SHB synthesis (if needed) and scale down */ synth_scale_fx = 32767; move16(); /* 1.0 in Q15 */ @@ -7027,14 +7030,25 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); + +#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 + Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 +#endif + FOR( i = 0; i < L_FRAME16k; i++ ) { +#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } +#else + Word16 idx; + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ + L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ +#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); @@ -7097,7 +7111,9 @@ void ivas_swb_tbe_dec_fx( Decimate_allpass_steep_fx32( error_fx, hBWE_TD->mem_resamp_HB_32k_fx_32, L_FRAME32k, synth_fx ); } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" );*/ + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" ); /* Update previous frame parameters for FEC */ Copy( lsf_shb_fx, hBWE_TD->lsp_prevfrm_fx, LPC_SHB_ORDER ); IF( EQ_16( st->codec_mode, MODE1 ) ) @@ -7134,8 +7150,9 @@ void ivas_swb_tbe_dec_fx( move16(); hBWE_TD->prev_Qx = Q_bwe_exc; move16(); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" );*/ - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART K" );*/ + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" );*/ return; } -- GitLab From a4e12092354a192740be4e4c76947ddb52088384 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 11:33:21 +0200 Subject: [PATCH 103/698] deactivate all speedups --- lib_com/prot_fx.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index f74c3071d..5ab70a690 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -66,7 +66,7 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS // Numbers ALL: 83,45 // Numbers beOnly: 86,156 -- GitLab From a92a989cb0e0e181be2d633a81635b25ce9d3895 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 11:38:34 +0200 Subject: [PATCH 104/698] apply clang format patch --- lib_com/prot_fx.h | 1 - lib_com/swb_tbe_com_fx.c | 90 ++++++++++++++++++++-------------------- lib_dec/swb_tbe_dec_fx.c | 2 +- 3 files changed, 46 insertions(+), 47 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 4b9832a24..2be66fe1f 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -78,7 +78,6 @@ // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) - /*----------------------------------------------------------------------------------* * Prototypes of global macros *----------------------------------------------------------------------------------*/ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d58825e59..12ab2c9b0 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6869,65 +6869,65 @@ void elliptic_bpf_48k_generic_fx( IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { i = 4; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //0 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; FOR( ; i < L_FRAME48k / 3; ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat(L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX); //3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); //4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); //5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); //6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); //7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); //8 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; } diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 3bc2868a2..e73e541d0 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7032,7 +7032,7 @@ void ivas_swb_tbe_dec_fx( move16(); #ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 - Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 + Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 #endif FOR( i = 0; i < L_FRAME16k; i++ ) -- GitLab From 8b8c300aefb6b52b7cad8b390cbffcdecc0184ff Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 11:53:55 +0200 Subject: [PATCH 105/698] fixed and activated FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig to test BEnes --- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 2be66fe1f..652afe49c 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -66,7 +66,7 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS // Numbers ALL: 83,45 // Numbers beOnly: 86,156 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 12ab2c9b0..43250e441 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6843,7 +6843,7 @@ void elliptic_bpf_48k_generic_fx( } } ELSE -#else +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ { FOR( i = 4; i < L_FRAME48k; i++ ) { @@ -6862,7 +6862,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ + #else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig test(); @@ -6933,7 +6933,7 @@ void elliptic_bpf_48k_generic_fx( } } ELSE -#else +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ { FOR( i = 4; i < L_FRAME48k; i++ ) { @@ -6949,7 +6949,6 @@ void elliptic_bpf_48k_generic_fx( move32(); } } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ #endif -- GitLab From 38702cd5c3fc81cc7fac45ade3c955ea0991b992 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 12:24:28 +0200 Subject: [PATCH 106/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 43250e441..95428c21d 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6863,7 +6863,7 @@ void elliptic_bpf_48k_generic_fx( } } -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig test(); IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) @@ -6952,7 +6952,7 @@ void elliptic_bpf_48k_generic_fx( #endif - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; -- GitLab From 6eb0cd70d55fb5bc62b92530660ad4e5eabdd73a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 12:58:08 +0200 Subject: [PATCH 107/698] fixed and activated FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 95428c21d..5fe3c6feb 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6800,7 +6800,7 @@ void elliptic_bpf_48k_generic_fx( move32(); i++; - FOR( ; i < L_FRAME48k / 3; ) + FOR( ; i < L_FRAME48k; ) { // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //2 W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); // 3 @@ -6893,7 +6893,7 @@ void elliptic_bpf_48k_generic_fx( move32(); i++; - FOR( ; i < L_FRAME48k / 3; ) + FOR( ; i < L_FRAME48k; ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From f05199c15fed0855831d2f7bc55578dca010df22 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 13:37:01 +0200 Subject: [PATCH 108/698] add intended version of FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - should be BE --- lib_com/prot_fx.h | 8 ++++---- lib_com/swb_tbe_com_fx.c | 40 ++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 652afe49c..929872cf1 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -66,11 +66,11 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 2 WMOPS +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 1 WMOPS -// Numbers ALL: 83,45 -// Numbers beOnly: 86,156 -// NUmbers none: 88,183 +// Numbers ALL: +// Numbers beOnly: 87,344 +// NUmbers none: 88,236 //----------------------------------------------------------------------- diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5fe3c6feb..d3c098b03 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6870,37 +6870,37 @@ void elliptic_bpf_48k_generic_fx( { i = 4; L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; FOR( ; i < L_FRAME48k; ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6908,25 +6908,25 @@ void elliptic_bpf_48k_generic_fx( i++; L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; -- GitLab From 1053f32f15c322af2dc07f3782f8d878103cfe8a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 13:39:40 +0200 Subject: [PATCH 109/698] minor: comments --- lib_com/prot_fx.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 929872cf1..055515fca 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -63,12 +63,12 @@ // *** Currently checking be speedups ( only modified version of FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50073 // --> next test: check nonbe speedups // -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 1 WMOPS -// Numbers ALL: +// Numbers ALL: 84,189 // Numbers beOnly: 87,344 // NUmbers none: 88,236 -- GitLab From 88f73bf5943924910ebd93ef5167089d23b8818a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 13:41:34 +0200 Subject: [PATCH 110/698] apply clang format patch --- lib_com/swb_tbe_com_fx.c | 76 ++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d3c098b03..a4ded2bb5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6869,64 +6869,64 @@ void elliptic_bpf_48k_generic_fx( IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { i = 4; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; FOR( ; i < L_FRAME48k; ) { - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; -- GitLab From e506102c2e7be503b61e528cc605c01136aa36a7 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 15:25:03 +0200 Subject: [PATCH 111/698] activate FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 to test BEnes --- lib_com/prot_fx.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 055515fca..0344456e9 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -59,14 +59,12 @@ #define TCX_IMDCT_SCALE 15 #define TCX_IMDCT_HEADROOM 1 -// *** Currently checking be-nes of all-inactive (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50048 -- DONE GREEN! -// *** Currently checking be speedups ( only modified version of FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig) for be-nes (should not fail!) https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50073 -// --> next test: check nonbe speedups + // -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // 1 WMOPS +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // \ +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // > 3.1 WOPS +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // / +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // .9 WMOPS -- all pipes green , BE // Numbers ALL: 84,189 // Numbers beOnly: 87,344 @@ -74,7 +72,7 @@ //----------------------------------------------------------------------- -//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE - pipes TBD +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE - pipes TBD // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) -- GitLab From 16c3fe08f2569ece6fae744dce05e8638ba39830 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 15:29:54 +0200 Subject: [PATCH 112/698] apply clang format patch --- lib_com/prot_fx.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 0344456e9..31d67098b 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -62,7 +62,7 @@ // //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // \ -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // > 3.1 WOPS +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // > 3.1 WOPS //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // / #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // .9 WMOPS -- all pipes green , BE -- GitLab From c864af93164520a9907db2134ce307152a179aae Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 15:47:57 +0200 Subject: [PATCH 113/698] fix multi line comment warning --- lib_com/prot_fx.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 31d67098b..62d1168ce 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,10 +60,10 @@ #define TCX_IMDCT_HEADROOM 1 -// -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // \ -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // > 3.1 WOPS -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // / + +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // | > 3.1 WOPS +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // .9 WMOPS -- all pipes green , BE // Numbers ALL: 84,189 -- GitLab From c2b954488d33fa1b43967bb06b5a4eed6ec04b08 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 15:52:31 +0200 Subject: [PATCH 114/698] apply clang format patch --- lib_com/prot_fx.h | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 62d1168ce..af393e5c6 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,7 +60,6 @@ #define TCX_IMDCT_HEADROOM 1 - //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // | > 3.1 WOPS //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // | -- GitLab From 0c377506f3a16129badb751787766eedc1a35ba3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 16:31:38 +0200 Subject: [PATCH 115/698] FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1, 2, 3 activation --- lib_com/prot_fx.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index af393e5c6..ea2c0c9e8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,18 +60,18 @@ #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // | > 3.1 WOPS -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // be // .9 WMOPS -- all pipes green , BE - +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // | > 3.1 WOPS +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green +// ^^^^^^^^ // Numbers ALL: 84,189 // Numbers beOnly: 87,344 // NUmbers none: 88,236 //----------------------------------------------------------------------- -#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE - pipes TBD +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) -- GitLab From c87aa384050f075c0e270c011c081a0b8a25f737 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 1 Apr 2025 16:39:49 +0200 Subject: [PATCH 116/698] apply clang format patch --- lib_com/prot_fx.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index ea2c0c9e8..883ef5492 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,11 +60,11 @@ #define TCX_IMDCT_HEADROOM 1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 //nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 //nonbe // | > 3.1 WOPS -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 //nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green -// ^^^^^^^^ +// ^^^^^^^^ // Numbers ALL: 84,189 // Numbers beOnly: 87,344 // NUmbers none: 88,236 -- GitLab From 4786581cd17e23de3cbc31b85596d6a52c32af13 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 09:38:38 +0200 Subject: [PATCH 117/698] deactivated all speedups but FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat in tools_fx.c - is it be? --- lib_com/prot_fx.h | 10 +++++----- lib_com/tools_fx.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 883ef5492..01970f37b 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,10 +60,10 @@ #define TCX_IMDCT_HEADROOM 1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green // ^^^^^^^^ // Numbers ALL: 84,189 // Numbers beOnly: 87,344 @@ -71,7 +71,7 @@ //----------------------------------------------------------------------- -#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! +//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 5219d076c..ddacd9d09 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -760,6 +760,7 @@ void Copy_Scale_sig_16_32_DEPREC( } } +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat void Copy_Scale_sig_16_32_no_sat( const Word16 x[], /* i : signal to scale input Qx */ Word32 y[], /* o : scaled signal output Qx */ @@ -794,6 +795,41 @@ void Copy_Scale_sig_16_32_no_sat( } return; } +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat +//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); + + IF( L_tmp >= 0x7FFF ) + { + FOR( i = 0; i < lg; i++ ) + { + // y[i] = L_mult0(x[i], L_tmp); + y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + move32(); /* saturation can occur here */ +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + if ( tmp32 != y[i] ) + assert( 0 ); +#endif + } + return; + } + + //ELSE + { + Word16 tmp = extract_l( L_tmp ); + FOR( i = 0; i < lg; i++ ) + { + y[i] = L_mult(x[i], L_tmp); + move32(); /* saturation can occur here */ +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + if ( tmp32 != y[i] ) + assert( 0 ); +#endif + } + } +#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { @@ -801,6 +837,7 @@ void Copy_Scale_sig_16_32_no_sat( y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ } +#endif } void Copy_Scale_sig_32_16( -- GitLab From 11d2a43def1639f505ac3b3b640b6e8caefb76a7 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 09:40:54 +0200 Subject: [PATCH 118/698] applied clang format patch --- lib_com/tools_fx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index ddacd9d09..d0dddd4d1 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -796,7 +796,7 @@ void Copy_Scale_sig_16_32_no_sat( return; } #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat -//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + //#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); IF( L_tmp >= 0x7FFF ) @@ -814,13 +814,13 @@ void Copy_Scale_sig_16_32_no_sat( } return; } - - //ELSE + + // ELSE { Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { - y[i] = L_mult(x[i], L_tmp); + y[i] = L_mult( x[i], L_tmp ); move32(); /* saturation can occur here */ #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); -- GitLab From 484696efae01af32ad89bebaebbbd0c3335cc763 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 09:46:35 +0200 Subject: [PATCH 119/698] fix warning unused variable --- lib_com/tools_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index d0dddd4d1..0ca7f54ad 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -817,7 +817,7 @@ void Copy_Scale_sig_16_32_no_sat( // ELSE { - Word16 tmp = extract_l( L_tmp ); + //Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { y[i] = L_mult( x[i], L_tmp ); -- GitLab From 8408cc86cc6af04795636103c1ee0f4abe6bfca7 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 09:47:08 +0200 Subject: [PATCH 120/698] fix clang format pipeline warning --- lib_com/tools_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 0ca7f54ad..957c8a42a 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -817,7 +817,7 @@ void Copy_Scale_sig_16_32_no_sat( // ELSE { - //Word16 tmp = extract_l( L_tmp ); + // Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { y[i] = L_mult( x[i], L_tmp ); -- GitLab From c64a0a025d136cf681e95c615f766cd84387f499 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 11:18:01 +0200 Subject: [PATCH 121/698] activate only be speedups - is really be? --- lib_com/options.h | 9 ++++++++- lib_com/prot_fx.h | 9 +-------- lib_com/tools_fx.c | 13 ------------- lib_dec/ivas_stereo_icbwe_dec_fx.c | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 4653bb460..910f8094e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -/*#define WMOPS*/ /* Activate complexity and memory counters */ +//#define WMOPS /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -78,4 +78,11 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT + +// new speedups - pipe running +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ + #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 01970f37b..bffb85ba8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -61,17 +61,10 @@ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green -// ^^^^^^^^ -// Numbers ALL: 84,189 -// Numbers beOnly: 87,344 -// NUmbers none: 88,236 - //----------------------------------------------------------------------- -//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 957c8a42a..d5ec36928 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -760,7 +760,6 @@ void Copy_Scale_sig_16_32_DEPREC( } } -#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat void Copy_Scale_sig_16_32_no_sat( const Word16 x[], /* i : signal to scale input Qx */ Word32 y[], /* o : scaled signal output Qx */ @@ -796,7 +795,6 @@ void Copy_Scale_sig_16_32_no_sat( return; } #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat - //#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); IF( L_tmp >= 0x7FFF ) @@ -806,15 +804,9 @@ void Copy_Scale_sig_16_32_no_sat( // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST - Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - if ( tmp32 != y[i] ) - assert( 0 ); -#endif } return; } - // ELSE { // Word16 tmp = extract_l( L_tmp ); @@ -822,11 +814,6 @@ void Copy_Scale_sig_16_32_no_sat( { y[i] = L_mult( x[i], L_tmp ); move32(); /* saturation can occur here */ -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST - Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - if ( tmp32 != y[i] ) - assert( 0 ); -#endif } } #else diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index c7bc98566..4acfcf6d9 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,8 +904,22 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); +#endif FOR( i = 0; i < winLen_fx; i++ ) { +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ + L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ + tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ + synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ + move32(); + if ( LE_16( alpha_fx, winSlope_fx_ ) ) + { + alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ + } +#else L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ @@ -915,6 +929,7 @@ void stereo_icBWE_dec_fx( { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } +#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) -- GitLab From cd84bf62258688461fd1130d3847f254b694ef13 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 12:34:57 +0200 Subject: [PATCH 122/698] fix precission in FIX_1439_SPEEDUP_elliptic_bpf_48k_generic STAGE1-3, activate, check again BEness --- lib_com/prot_fx.h | 6 +++--- lib_com/swb_tbe_com_fx.c | 24 ++++++++++++++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index bffb85ba8..d64744426 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,9 +60,9 @@ #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a4ded2bb5..66daa4835 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6783,7 +6783,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6796,7 +6797,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6811,7 +6813,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6824,7 +6827,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6837,7 +6841,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; } @@ -6858,7 +6863,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } } @@ -7021,7 +7027,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } @@ -7128,7 +7135,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -- GitLab From 50e83868d65d789c4c2fdc12161e3fcf8ce811bb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 12:37:28 +0200 Subject: [PATCH 123/698] clang format patch --- lib_com/prot_fx.h | 6 +++--- lib_com/swb_tbe_com_fx.c | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index d64744426..709c7350a 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,9 +60,9 @@ #define TCX_IMDCT_HEADROOM 1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 66daa4835..9b78b6a0a 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6783,7 +6783,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6797,7 +6797,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6813,7 +6813,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6827,7 +6827,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6841,7 +6841,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6863,7 +6863,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } @@ -7027,7 +7027,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + // L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); @@ -7135,7 +7135,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + // L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); -- GitLab From f6035b9357c963cbf78e463f3bb825caab75aaa5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 13:45:10 +0200 Subject: [PATCH 124/698] fix FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 --- lib_com/prot_fx.h | 6 +++--- lib_dec/swb_tbe_dec_fx.c | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 709c7350a..fc10b7d3d 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,9 +60,9 @@ #define TCX_IMDCT_HEADROOM 1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50610 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index e73e541d0..dd49465b1 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7047,7 +7047,6 @@ void ivas_swb_tbe_dec_fx( #else Word16 idx; idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ - L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ #endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ -- GitLab From 1d9afdc3dde8edc997ee137879e2f195961dd31a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 13:54:56 +0200 Subject: [PATCH 125/698] clang patch --- lib_dec/swb_tbe_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index dd49465b1..36a499f7d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7046,7 +7046,7 @@ void ivas_swb_tbe_dec_fx( } #else Word16 idx; - idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ #endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ -- GitLab From 5ad8f6474e933567260b3fe5ae3c6a5dc9652dcf Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:21:19 +0200 Subject: [PATCH 126/698] only cleaned upo- moved macros to options.h --- lib_com/options.h | 11 ++++++++++- lib_com/prot_fx.h | 8 -------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 910f8094e..d9a11b6a0 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -79,10 +79,19 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT -// new speedups - pipe running +//------------------------------------------------------------------------------------------------ +// new speedups - pipe running - 2.4 WMOPS (88.236 clean, 85.828 BE macros) #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.2 WMOPS, pipe https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50610 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | + + +// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) + + #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index fc10b7d3d..ffd1d6032 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,14 +60,6 @@ #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50610 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | - -//----------------------------------------------------------------------- -// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) - - /*----------------------------------------------------------------------------------* * Prototypes of global macros *----------------------------------------------------------------------------------*/ -- GitLab From 14ffa173ca0e1cba1519aca563184cb00ecefeb3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:23:40 +0200 Subject: [PATCH 127/698] Revert "only cleaned upo- moved macros to options.h" This reverts commit 5ad8f6474e933567260b3fe5ae3c6a5dc9652dcf. --- lib_com/options.h | 11 +---------- lib_com/prot_fx.h | 8 ++++++++ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index d9a11b6a0..910f8094e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -79,19 +79,10 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT -//------------------------------------------------------------------------------------------------ -// new speedups - pipe running - 2.4 WMOPS (88.236 clean, 85.828 BE macros) +// new speedups - pipe running #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.2 WMOPS, pipe https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50610 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | - - -// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) - - #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index ffd1d6032..fc10b7d3d 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,6 +60,14 @@ #define TCX_IMDCT_HEADROOM 1 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50610 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | + +//----------------------------------------------------------------------- +// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) + + /*----------------------------------------------------------------------------------* * Prototypes of global macros *----------------------------------------------------------------------------------*/ -- GitLab From 6adb90e0d7b137350d2c4617abaf2349032772ec Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:23:57 +0200 Subject: [PATCH 128/698] Revert "clang patch" This reverts commit 1d9afdc3dde8edc997ee137879e2f195961dd31a. --- lib_dec/swb_tbe_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 36a499f7d..dd49465b1 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7046,7 +7046,7 @@ void ivas_swb_tbe_dec_fx( } #else Word16 idx; - idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ #endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ -- GitLab From 267c42789813eb8a5d84a16d6ea6d7a3d51e5bd4 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:24:11 +0200 Subject: [PATCH 129/698] Revert "fix FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0" This reverts commit f6035b9357c963cbf78e463f3bb825caab75aaa5. --- lib_com/prot_fx.h | 6 +++--- lib_dec/swb_tbe_dec_fx.c | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index fc10b7d3d..709c7350a 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,9 +60,9 @@ #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50610 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index dd49465b1..e73e541d0 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7047,6 +7047,7 @@ void ivas_swb_tbe_dec_fx( #else Word16 idx; idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ + L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ #endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ -- GitLab From 04de54be85ffb795b72aa44249c5516443a956da Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:24:33 +0200 Subject: [PATCH 130/698] Revert "clang format patch" This reverts commit 50e83868d65d789c4c2fdc12161e3fcf8ce811bb. --- lib_com/prot_fx.h | 6 +++--- lib_com/swb_tbe_com_fx.c | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 709c7350a..d64744426 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,9 +60,9 @@ #define TCX_IMDCT_HEADROOM 1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 9b78b6a0a..66daa4835 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6783,7 +6783,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6797,7 +6797,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6813,7 +6813,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6827,7 +6827,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6841,7 +6841,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6863,7 +6863,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - // L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } @@ -7027,7 +7027,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - // L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); @@ -7135,7 +7135,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - // L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); -- GitLab From 05d9348d8fcbd9b587438233c3f3e60dbfba99b8 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:24:59 +0200 Subject: [PATCH 131/698] Revert "fix precission in FIX_1439_SPEEDUP_elliptic_bpf_48k_generic STAGE1-3, activate, check again BEness" This reverts commit cd84bf62258688461fd1130d3847f254b694ef13. --- lib_com/prot_fx.h | 6 +++--- lib_com/swb_tbe_com_fx.c | 24 ++++++++---------------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index d64744426..bffb85ba8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,9 +60,9 @@ #define TCX_IMDCT_HEADROOM 1 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 66daa4835..a4ded2bb5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6783,8 +6783,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6797,8 +6796,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6813,8 +6811,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6827,8 +6824,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6841,8 +6837,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); i++; } @@ -6863,8 +6858,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ move32(); } } @@ -7027,8 +7021,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } @@ -7135,8 +7128,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -- GitLab From 95e62c63d66b42e391dda75f12c033344f1a7591 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:47:22 +0200 Subject: [PATCH 132/698] deactivate all speedups --- lib_com/options.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 910f8094e..6616402cc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,9 +80,9 @@ //#define HARM_SCE_INIT // new speedups - pipe running -#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ #endif -- GitLab From 3703d5c6f8b76d2d02a8b420ab92db65625ca5fc Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 16:04:34 +0200 Subject: [PATCH 133/698] add FIX_1439_SPEEDUP_synthesise_fb_high_band_fx macro --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 6616402cc..e791e2835 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,5 +84,5 @@ //#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ //#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ - +//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // 0.4 WMOPS - BE? #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a4ded2bb5..7ad52ba6f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7298,6 +7298,47 @@ void synthesise_fb_high_band_fx( tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { +#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx + L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ + Word32 L_tmp32; + Word16 tmp16; + + if ( L_tmp < 0 ) + { + L_tmp32 = L_negate( L_tmp ); + } + if ( L_tmp < 0 ) + { + L_tmp32 = L_shl_sat( L_tmp32, tmp3 ); + } + if ( L_tmp < 0 ) + { + tmp16 = extract_h( L_tmp32); + } + if ( L_tmp < 0 ) + { + tmp16 = negate( tmp16 ); + } + + if ( L_tmp == 0 ) + { + tmp16 = 0; + move16(); + } + + if ( L_tmp > 0 ) + { + L_tmp32 = L_shl_sat( L_tmp, tmp3 ); + } + if ( L_tmp > 0 ) + { + tmp16 = extract_h( L_tmp32 ); + } + + output[i] = tmp16; + move16(); + +#else L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { @@ -7309,6 +7350,7 @@ void synthesise_fb_high_band_fx( output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); } +#endif } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; -- GitLab From 1b9bff76c733f36e9f19b12c87c1788c19446dc7 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 13:45:10 +0200 Subject: [PATCH 134/698] fix FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 --- lib_dec/swb_tbe_dec_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index e73e541d0..dd49465b1 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7047,7 +7047,6 @@ void ivas_swb_tbe_dec_fx( #else Word16 idx; idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ - L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ #endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ -- GitLab From 2d8375baf11bf77e84261b65de13258a8e238d5a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 16:08:25 +0200 Subject: [PATCH 135/698] move all speedup macros to options.h --- lib_com/options.h | 9 ++++++++- lib_com/prot_fx.h | 8 -------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index e791e2835..1efda0251 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -79,10 +79,17 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT -// new speedups - pipe running +// new speedups //#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ //#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ //#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ //#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // 0.4 WMOPS - BE? + +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | + +//----------------------------------------------------------------------- +// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index bffb85ba8..ffd1d6032 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -60,14 +60,6 @@ #define TCX_IMDCT_HEADROOM 1 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | - -//----------------------------------------------------------------------- -// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) - - /*----------------------------------------------------------------------------------* * Prototypes of global macros *----------------------------------------------------------------------------------*/ -- GitLab From babf4e8b6709a7ce79c7e7e0bc95914b46879676 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 16:10:09 +0200 Subject: [PATCH 136/698] apply clang patch --- lib_com/swb_tbe_com_fx.c | 4 ++-- lib_dec/swb_tbe_dec_fx.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 7ad52ba6f..500e2fd02 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7302,7 +7302,7 @@ void synthesise_fb_high_band_fx( L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ Word32 L_tmp32; Word16 tmp16; - + if ( L_tmp < 0 ) { L_tmp32 = L_negate( L_tmp ); @@ -7313,7 +7313,7 @@ void synthesise_fb_high_band_fx( } if ( L_tmp < 0 ) { - tmp16 = extract_h( L_tmp32); + tmp16 = extract_h( L_tmp32 ); } if ( L_tmp < 0 ) { diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index dd49465b1..36a499f7d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7046,7 +7046,7 @@ void ivas_swb_tbe_dec_fx( } #else Word16 idx; - idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ #endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ -- GitLab From b677480fe59ceaf1b9345a10cafe36f50e122418 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:13:59 +0000 Subject: [PATCH 137/698] --- revert ALL changes --- --- lib_com/options.h | 16 +- lib_com/swb_tbe_com_fx.c | 278 +---------------------------- lib_com/tools_fx.c | 24 --- lib_dec/ivas_core_dec_fx.c | 62 ++----- lib_dec/ivas_jbm_dec_fx.c | 20 +-- lib_dec/ivas_stereo_icbwe_dec_fx.c | 15 -- lib_dec/swb_tbe_dec_fx.c | 25 +-- 7 files changed, 21 insertions(+), 419 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1efda0251..4653bb460 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -//#define WMOPS /* Activate complexity and memory counters */ +/*#define WMOPS*/ /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -78,18 +78,4 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT - -// new speedups -//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // 0.4 WMOPS - BE? - -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | - -//----------------------------------------------------------------------- -// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 500e2fd02..25c6c32bf 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -18,7 +18,6 @@ #define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ #define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ - /*-----------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------*/ @@ -6693,6 +6692,7 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ + void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -6704,9 +6704,8 @@ void elliptic_bpf_48k_generic_fx( { Word16 i, j; Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; - Word32 L_output[L_FRAME48k]; FOR( i = 0; i < 4; i++ ) { @@ -6722,7 +6721,6 @@ void elliptic_bpf_48k_generic_fx( move32(); } - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6765,176 +6763,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) - { - Word64 W_tmpX; - Word64 W_tmpY; - i = 4; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - FOR( ; i < L_FRAME48k; ) - { - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //2 - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); // 3 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //4 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //5 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); // 3 - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //4 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //5 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //4 - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //5 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //7 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - { - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - move32(); - } - } - -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) - { - i = 4; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - FOR( ; i < L_FRAME48k; ) - { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - { FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6948,9 +6776,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } - } -#endif - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -7005,28 +6830,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 - - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } - -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7041,7 +6844,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ + Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -7110,29 +6913,7 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } -#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -7150,7 +6931,6 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -#endif memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -7218,13 +6998,12 @@ void synthesise_fb_high_band_fx( { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; + Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; - Word16 tmp[L_FRAME48k]; - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" ); /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7240,7 +7019,6 @@ void synthesise_fb_high_band_fx( } exp_tmp = sub( Q_fb_exc, 2 ); - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" ); IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ @@ -7251,11 +7029,8 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ - - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); temp1 = sum2_fx_mod( tmp, L_FRAME48k ); + L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ exp = norm_l( L_tmp ); tmp3 = extract_h( L_shl( L_tmp, exp ) ); @@ -7298,47 +7073,6 @@ void synthesise_fb_high_band_fx( tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { -#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx - L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - Word32 L_tmp32; - Word16 tmp16; - - if ( L_tmp < 0 ) - { - L_tmp32 = L_negate( L_tmp ); - } - if ( L_tmp < 0 ) - { - L_tmp32 = L_shl_sat( L_tmp32, tmp3 ); - } - if ( L_tmp < 0 ) - { - tmp16 = extract_h( L_tmp32 ); - } - if ( L_tmp < 0 ) - { - tmp16 = negate( tmp16 ); - } - - if ( L_tmp == 0 ) - { - tmp16 = 0; - move16(); - } - - if ( L_tmp > 0 ) - { - L_tmp32 = L_shl_sat( L_tmp, tmp3 ); - } - if ( L_tmp > 0 ) - { - tmp16 = extract_h( L_tmp32 ); - } - - output[i] = tmp16; - move16(); - -#else L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { @@ -7350,9 +7084,7 @@ void synthesise_fb_high_band_fx( output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); } -#endif } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; } diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index d5ec36928..15bba151e 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,37 +794,13 @@ void Copy_Scale_sig_16_32_no_sat( } return; } -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); - - IF( L_tmp >= 0x7FFF ) - { FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ } - return; - } - // ELSE - { - // Word16 tmp = extract_l( L_tmp ); - FOR( i = 0; i < lg; i++ ) - { - y[i] = L_mult( x[i], L_tmp ); - move32(); /* saturation can occur here */ - } - } -#else - L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); - FOR( i = 0; i < lg; i++ ) - { - // y[i] = L_mult0(x[i], L_tmp); - y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ - } -#endif } void Copy_Scale_sig_32_16( diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index db6dad33f..03f0e4b40 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -116,12 +116,12 @@ ivas_error ivas_core_dec_fx( error = IVAS_ERR_OK; move32(); - push_wmops( "ivas_core_dec (ICD)" ); + push_wmops( "ivas_core_dec" ); /*------------------------------------------------------------------* * General initialization *-----------------------------------------------------------------*/ - push_wmops( "ICD init" ); + use_cldfb_for_dft = 0; move16(); tdm_LRTD_flag = -1; @@ -370,9 +370,7 @@ ivas_error ivas_core_dec_fx( { save_hb_synth_32_fx = NULL; } - pop_wmops(); /*push_wmops( "ICD init" );*/ - push_wmops( "ICD SID, sanity" ); /*------------------------------------------------------------------* * Decode SID for MDCT-Stereo DTX mode *-----------------------------------------------------------------*/ @@ -400,9 +398,7 @@ ivas_error ivas_core_dec_fx( { ivas_combined_format_brate_sanity_fx( element_brate, sts[0]->core, sts[0]->total_brate, &( sts[0]->core_brate ), &( sts[0]->inactive_coder_type_flag ), &tmps ); } - pop_wmops(); /*push_wmops( "ICD SID, sanity" );*/ - push_wmops( "ICD Coredec" ); /*------------------------------------------------------------------* * Core Decoding *-----------------------------------------------------------------*/ @@ -487,7 +483,6 @@ ivas_error ivas_core_dec_fx( IF( st->core == ACELP_CORE ) { - push_wmops( "ICD ACELP" ); /* ACELP core decoder */ Word16 old_syn_12k8_16k_fx_16[L_FRAME16k]; Word16 save_hb_synth_fx_arr[L_FRAME48k], *save_hb_synth_16_fx; @@ -560,7 +555,6 @@ ivas_error ivas_core_dec_fx( } Copy_Scale_sig_16_32_DEPREC( old_syn_12k8_16k_fx_16, old_syn_12k8_16k_fx[n], L_FRAME16k, Q11 - ( -Q1 ) ); // Q(11 - (-1)) - pop_wmops(); /*push_wmops( "ICD ACELP" );*/ } Copy_Scale_sig_32_16( st->previoussynth_fx_32, st->previoussynth_fx, L_FRAME48k, 0 ); // Q0 @@ -569,7 +563,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( EQ_16( st->core, TCX_20_CORE ) || EQ_16( st->core, TCX_10_CORE ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { - push_wmops( "ICD TCX" ); Word16 Qsyn_temp; IVAS_FORMAT ivas_format; @@ -624,12 +617,10 @@ ivas_error ivas_core_dec_fx( } st->hBPF->pst_mem_deemp_err_fx = extract_l( st->mem_error ); move16(); - pop_wmops(); /*push_wmops( "ICD TCX" );*/ } IF( EQ_16( st->core, HQ_CORE ) ) { - push_wmops( "ICD HQ decoding" ); /* HQ core decoder */ Word16 Q_output; @@ -643,7 +634,6 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_output ) ); // Q11 Scale_sig( synth_16_fx[n], output_frame, negate( Q_synth ) ); // Q0 Scale_sig( output_16_fx[n], L_FRAME48k, negate( Q_output ) ); // Q0 - pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ } /*---------------------------------------------------------------------* @@ -660,8 +650,8 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[0]->old_pitch_buf_16_fx, hCPE->hCoreCoder[0]->old_pitch_buf_fx, add( imult1616( 2, NB_SUBFR16k ), 2 ), Q10 ); // Q16 } - } /* n_channels loop */ - pop_wmops(); /*push_wmops( "ICD Coredec" );*/ + } /* n_channels loop */ + /*---------------------------------------------------------------------* * MDCT stereo: joint TCX Core Decoding @@ -669,7 +659,6 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( sts[0]->element_mode, IVAS_CPE_MDCT ) ) { - push_wmops( "ICD jTCX Coredec" ); /* active-frame decoding */ IF( GT_32( sts[0]->core_brate, SID_2k40 ) ) { @@ -798,7 +787,6 @@ ivas_error ivas_core_dec_fx( } } } - pop_wmops(); /*push_wmops( "ICD jTCX Coredec" );*/ } /*---------------------------------------------------------------------* @@ -808,7 +796,6 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( sts[0]->element_mode, IVAS_CPE_TD ) && hStereoCng != NULL ) { - push_wmops( "ICD Stereo CNG Updates" ); /* To be cleaned up once the caller function is converted // These changes are for system testing of fixed changes made */ Word16 Q_c_PS_LT, Q_output; Word32 c_PS_LT_fx; @@ -824,14 +811,12 @@ ivas_error ivas_core_dec_fx( stereo_cng_compute_PScorr_fx( output_32_fx[0], output_32_fx[1], &Q_output, &c_PS_LT_fx, Q_c_PS_LT, sts[0]->L_frame, sts[1]->L_frame ); hStereoCng->c_PS_LT_fx = extract_h( c_PS_LT_fx ); - pop_wmops(); /*push_wmops( "ICD Stereo CNG Updates" );*/ } /*---------------------------------------------------------------------* * Postprocessing, BWEs and updates *---------------------------------------------------------------------*/ - push_wmops( "ICD Postproc, BWE, updates (ICD PP)" ); FOR( n = 0; n < n_channels; n++ ) { st = sts[n]; @@ -842,7 +827,6 @@ ivas_error ivas_core_dec_fx( * TD-BWE for ACELP to TCX transitions *---------------------------------------------------------------------*/ - push_wmops( "ICD PP TDBWE ACELPTCX trans" ); /*core_switching_post_dec*/ Q_synth = sub( 15, e_sig[0] ); @@ -916,12 +900,11 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->mem_resamp_HB_fx_32, INTERP_3_1_MEM_LEN, sub( Q11, hBWE_TD->prev_Qx ) ); // Q11 Copy( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->state_32and48k_WB_upsample_fx, ( 2 * ALLPASSSECTIONS_STEEP ) ); } - pop_wmops(); /*push_wmops( "ICD PP TDBWE ACELPTCX trans" );*/ /*---------------------------------------------------------------------* * Postprocessing for ACELP/MDCT core switching *---------------------------------------------------------------------*/ - push_wmops( "ICD PP ACELP/MDCT switch" ); + /* save synth and output in case of SBA DirAC stereo output as core switching is done outside of core decoder */ test(); test(); @@ -956,12 +939,11 @@ ivas_error ivas_core_dec_fx( { Copy( sts[0]->previoussynth_fx, sts[1]->previoussynth_fx, st->hTcxDec->L_frameTCX ); } - pop_wmops(); /*push_wmops( "ICD PP ACELP/MDCT switch" );*/ /*---------------------------------------------------------------------* * Pre-processing for bandwidth switching *---------------------------------------------------------------------*/ - push_wmops( "ICD PP BWswitch preproc" ); + ivas_bw_switching_pre_proc_fx( st, last_element_brate, nchan_out, old_syn_12k8_16k_fx[n], old_syn_fx, q_audio ); IF( st->hHQ_core == NULL ) @@ -1008,13 +990,12 @@ ivas_error ivas_core_dec_fx( hBWE_FD->prev_flag = hBWE_FD->prev_flag; move16(); } - pop_wmops(); /*push_wmops( "ICD PP BWswitch preproc" );*/ /*---------------------------------------------------------------------* * WB TBE decoding * WB BWE decoding *---------------------------------------------------------------------*/ - push_wmops( "ICD PP TBE/BWE" ); + Word16 Q_input, Q_hb_synth_fx, Q_synth_fx; Word16 Q_syn_hb, sf; @@ -1042,9 +1023,8 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( st->extl, WB_TBE ) ) { /* WB TBE decoder */ - push_wmops( "ICD PP TBE/BWE wb_tbe_dec" ); + ivas_wb_tbe_dec_fx( st, st->coder_type, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], hb_synth_16_fx[n], &Q_hb_synth_fx ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_tbe_dec" );*/ } ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( n, 1 ) && !tdm_LRTD_flag && NE_16( st->extl, -1 ) && st->bws_cnt == 0 && st->extl_brate == 0 ) { @@ -1052,10 +1032,8 @@ ivas_error ivas_core_dec_fx( } ELSE IF( EQ_16( st->extl, WB_BWE ) && st->bws_cnt == 0 ) { - push_wmops( "ICD PP TBE/BWE wb_bwe_dec" ); /* WB BWE decoder */ Q_hb_synth_fx = ivas_wb_bwe_dec_fx( st, output_16_fx[n], synth_16_fx[n], hb_synth_16_fx[n], use_cldfb_for_dft, output_frame, voice_factors_fx[n], pitch_buf_fx[n], &Q_synth_fx ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_bwe_dec" );*/ } /* Memories Re-Scaling */ @@ -1099,10 +1077,8 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, FB_TBE ) || ( NE_16( st->coder_type, AUDIO ) && NE_16( st->coder_type, INACTIVE ) && GE_32( st->core_brate, SID_2k40 ) && EQ_16( st->core, ACELP_CORE ) && !st->con_tcx && GE_32( output_Fs, 32000 ) && GT_16( st->bwidth, NB ) && st->bws_cnt > 0 ) ) { - push_wmops( "ICD PP TBE/BWE swb_tbe_dec" ); /* SWB TBE decoder */ ivas_swb_tbe_dec_fx( st, hStereoICBWE, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], old_syn_12k8_16k_fx[n], tmp_buffer_fx /*fb_exc*/, hb_synth_32_fx[n], pitch_buf_fx[n], &Q_white_exc ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec" );*/ Copy_Scale_sig_16_32_no_sat( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap_fx_32, L_SHB_LAHEAD, sub( Q11, hBWE_TD->prev_Q_bwe_syn2 ) ); // Q11 Copy_Scale_sig_32_16( hBWE_TD->old_tbe_synth_fx_32, hBWE_TD->old_tbe_synth_fx, L_SHB_TRANSITION_LENGTH, sub( hBWE_TD->prev_Qx, Q11 ) ); // prev_Qx @@ -1117,22 +1093,18 @@ ivas_error ivas_core_dec_fx( /* FB TBE decoder */ IF( EQ_16( st->extl, FB_TBE ) ) { - push_wmops( "ICD PP TBE/BWE fb_tbe_dec" ); fb_tbe_dec_ivas_fx( st, tmp_buffer_fx /*fb_exc*/, Q_white_exc, hb_synth_32_fx[n], 0, tmp_buffer_fx /*fb_synth_ref*/, Q_white_exc, output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE fb_tbe_dec" );*/ } } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) || ( GE_32( output_Fs, 32000 ) && st->core == ACELP_CORE && st->bwidth > NB && st->bws_cnt > 0 && !st->ppp_mode_dec && !( EQ_16( st->nelp_mode_dec, 1 ) && EQ_16( st->bfi, 1 ) ) ) ) { /* SWB BWE decoder */ - push_wmops( "ICD PP TBE/BWE swb_bwe_dec" ); Q_syn_hb = swb_bwe_dec_fx32( st, output_32_fx[n], synth_32_fx[n], hb_synth_32_fx[n], use_cldfb_for_dft, output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ + Scale_sig32( hb_synth_32_fx[n], output_frame, sub( Q11, Q_syn_hb ) ); // Q11 Copy_Scale_sig_32_16( hBWE_FD->L_old_wtda_swb_fx32, hBWE_FD->L_old_wtda_swb_fx, output_frame, sub( hBWE_FD->old_wtda_swb_fx_exp, Q11 ) ); // old_wtda_swb_fx_exp } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE" );*/ /*---------------------------------------------------------------------* * FEC - recovery after lost HQ core (smoothing of the BWE component) @@ -1171,7 +1143,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( GE_16( output_frame, L_FRAME32k ) && st->hTdCngDec != NULL ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && GE_16( st->bwidth, SWB ) && st->hTdCngDec != NULL ) ) { - push_wmops( "ICD PP SWB CNG" ); /* SHB CNG decoder */ Word16 synth_fxl[960]; /* Q-2 */ Word16 q; @@ -1193,7 +1164,6 @@ ivas_error ivas_core_dec_fx( Scale_sig( hBWE_TD->state_lpc_syn_fx, LPC_SHB_ORDER, negate( sub( Q8, hBWE_TD->prev_Q_bwe_syn ) ) ); // Q0 Copy_Scale_sig_16_32_no_sat( hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, 2 * ALLPASSSECTIONS_STEEP, negate( sub( hBWE_TD->prev_Q_bwe_syn2, Q11 ) ) ); - pop_wmops(); /* push_wmops( "ICD PP SWB CNG" );*/ } /*-------------------------------------------------------------------* @@ -1203,7 +1173,6 @@ ivas_error ivas_core_dec_fx( test(); IF( n == 0 && GE_16( st->element_mode, IVAS_CPE_DFT ) ) { - push_wmops( "ICD PP IC-BWE" ); Word16 q; q = 11; move16(); @@ -1225,12 +1194,10 @@ ivas_error ivas_core_dec_fx( Scale_sig32( hb_synth_32_fx[0], output_frame, sub( Q11, q ) ); // Q11 Scale_sig32( hb_synth_32_fx[1], output_frame, sub( Q11, q ) ); // Q11 } - pop_wmops(); /*push_wmops( "ICD PP IC-BWE" );*/ } IF( EQ_16( st->element_mode, EVS_MONO ) ) { - push_wmops( "ICD PP BFI" ); /*----------------------------------------------------------------* * BFI waveform adjustment *----------------------------------------------------------------*/ @@ -1258,7 +1225,6 @@ ivas_error ivas_core_dec_fx( st->hPlcInfo->Pitch_fx = 0; move16(); } - pop_wmops(); /*push_wmops( "ICD PP BFI" );*/ } /*----------------------------------------------------------------* @@ -1271,7 +1237,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( NE_16( st->extl, -1 ) && ( NE_16( st->extl, IGF_BWE ) || st->last_core == ACELP_CORE ) ) || ( st->bws_cnt > 0 && st->core == ACELP_CORE ) ) { - push_wmops( "ICD PP Sync BWE" ); /* Calculate an additional delay of extension layer components to be synchronized with ACELP synthesis */ IF( EQ_16( st->L_frame, L_FRAME ) ) { @@ -1425,7 +1390,6 @@ ivas_error ivas_core_dec_fx( st->hTdCngDec->last_shb_ener_fx_32 = L_shl_sat( L_tmp, sub( exp, 20 ) ); /*Q11*/ move32(); } - pop_wmops(); /*push_wmops( "ICD PP Sync BWE" );*/ } test(); @@ -1441,7 +1405,7 @@ ivas_error ivas_core_dec_fx( * - core switching in DFT stereo * - updates for potential TD->DFT stereo switching *----------------------------------------------------------------*/ - push_wmops( "ICD PP TCXLTP" ); + IF( st->hHQ_core != NULL ) { Copy_Scale_sig_16_32_no_sat( st->hHQ_core->old_out_LB_fx, st->hHQ_core->old_out_LB_fx32, L_FRAME32k, sub( Q11, st->hHQ_core->Q_old_wtda_LB ) ); // Q11 @@ -1498,7 +1462,6 @@ ivas_error ivas_core_dec_fx( } Copy32( synth_32_fx[n], output_32_fx[n], output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TCXLTP" );*/ /*--------------------------------------------------------* * Common updates @@ -1507,7 +1470,6 @@ ivas_error ivas_core_dec_fx( Word16 exp_max; Word32 output_fx_loc[L_FRAME48k]; - push_wmops( "ICD PP commonupdates" ); exp_max = 0; move16(); @@ -1562,8 +1524,6 @@ ivas_error ivas_core_dec_fx( Scale_sig( st->delay_buf_out_fx, NS2SA_FX2( st->output_Fs, DELAY_CLDFB_NS ), negate( exp_max ) ); // Q0 - pop_wmops(); /*push_wmops( "ICD PP commonupdates" );*/ - } /* n_channels loop */ FOR( n = 0; n < n_channels; n++ ) @@ -1582,7 +1542,7 @@ ivas_error ivas_core_dec_fx( move16(); } } - pop_wmops(); /*push_wmops( "ICD Postproc, BWE, updates (ICD PP)" );*/ + pop_wmops(); return error; } diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 4745bc5f0..93e8bb4eb 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -96,13 +96,12 @@ ivas_error ivas_jbm_dec_tc_fx( CPE_DEC_HANDLE hCPE; SCE_DEC_HANDLE hSCE; - push_wmops( "ivas_jbm_dec_tc (JBM)" ); + push_wmops( "ivas_jbm_dec_tc" ); /*----------------------------------------------------------------* * Initialization of local vars after struct has been set *----------------------------------------------------------------*/ - push_wmops( "JBM init" ); output_Fs = st_ivas->hDecoderConfig->output_Fs; move32(); nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; @@ -135,7 +134,7 @@ ivas_error ivas_jbm_dec_tc_fx( } Word16 ch; - pop_wmops(); /*push_wmops( "JBM init" );*/ + /*----------------------------------------------------------------* * Decoding + pre-rendering @@ -153,7 +152,6 @@ ivas_error ivas_jbm_dec_tc_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) { - push_wmops( "JBM STEREO" ); st_ivas->hCPE[0]->element_brate = ivas_total_brate; move32(); Word16 q_output = 11; @@ -194,11 +192,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 } } - pop_wmops(); /*push_wmops( "JBM STEREO" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { - push_wmops( "JBM ISM" ); /* Metadata decoding and configuration */ test(); IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) @@ -283,11 +279,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops(); /*push_wmops( "JBM ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { - push_wmops( "JBM SBA/MASA" ); set16_fx( nb_bits_metadata, 0, MAX_SCE ); @@ -694,11 +688,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops(); /*push_wmops( "JBM SBA/MASA" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { - push_wmops( "JBM MASA_ISM" ); Word16 nchan_ism, nchan_transport_ism; Word16 dirac_bs_md_write_idx; @@ -829,11 +821,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[n], output_frame, sub( Q11, output_q ) ); // Q11 } } - pop_wmops(); /*push_wmops( "JBM MASA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { - push_wmops( "JBM SBA_ISM" ); Word16 nchan_ism, sba_ch_idx; set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); @@ -1102,11 +1092,10 @@ ivas_error ivas_jbm_dec_tc_fx( v_add_32( p_output_fx[n], p_output_fx[n + s_max( nchan_out, nchan_ism )], p_output_fx[n], output_frame ); } } - pop_wmops(); /*push_wmops( "JBM SBA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) { - push_wmops( "JBM MC" ); + // st = (st_ivas->nSCE > 0) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; IF( st_ivas->nSCE > 0 ) { @@ -1479,7 +1468,6 @@ ivas_error ivas_jbm_dec_tc_fx( ivas_mono_stereo_downmix_mcmasa_fx( st_ivas, p_output_fx, output_frame ); } } - pop_wmops(); /*push_wmops( "JBM MC" );*/ } /*----------------------------------------------------------------* @@ -1488,9 +1476,7 @@ ivas_error ivas_jbm_dec_tc_fx( IF( EQ_16( st_ivas->hDecoderConfig->Opt_tsm, 1 ) ) { - push_wmops( "JBM syn_out" ); ivas_syn_output_f_fx( p_output_fx, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data_fx ); - pop_wmops(); /*push_wmops( "JBM syn_out" );*/ } ELSE { diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index 4acfcf6d9..c7bc98566 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,22 +904,8 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); -#endif FOR( i = 0; i < winLen_fx; i++ ) { -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ - L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ - tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ - synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ - move32(); - if ( LE_16( alpha_fx, winSlope_fx_ ) ) - { - alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ - } -#else L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ @@ -929,7 +915,6 @@ void stereo_icBWE_dec_fx( { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } -#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 36a499f7d..1b51a29fb 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4713,9 +4713,7 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - push_wmops( "synthesise_fb_high_band" ); synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); - pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) @@ -5519,7 +5517,6 @@ void ivas_swb_tbe_dec_fx( hBWE_TD = st->hBWE_TD; - /* initializations */ GainFrame_fx = 0; move32(); @@ -6330,7 +6327,6 @@ void ivas_swb_tbe_dec_fx( } } ener_fx = s_max( 1, round_fx_sat( L_shl_sat( L_ener, sub( 18, shl( Q_bwe_exc, 1 ) ) ) ) ); /* Q2: 2*Q_bwe_exc+18-2*Q_bwe_exc-16 */ - /* WB/SWB bandwidth switching */ IF( st->bws_cnt > 0 ) { @@ -6648,6 +6644,7 @@ void ivas_swb_tbe_dec_fx( hBWE_TD->prev_Q_bwe_syn = Q_bwe_exc; move16(); + /* Gain shape smoothing after quantization */ test(); IF( EQ_32( st->extl_brate, SWB_TBE_1k10 ) || EQ_32( st->extl_brate, SWB_TBE_1k75 ) ) @@ -6997,16 +6994,11 @@ void ivas_swb_tbe_dec_fx( move32(); } - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" ); - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" ); - /* generate 32kHz SHB synthesis from 12.8(16)kHz signal */ GenSHBSynth_fx32( shaped_shb_excitation_fx_32, error_fx, hBWE_TD->genSHBsynth_Hilbert_Mem_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->L_frame, &( hBWE_TD->syn_dm_phase ) ); Copy_Scale_sig_32_16( st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, 2 * ALLPASSSECTIONS_STEEP, -( Q11 - Q_bwe_exc ) ); Copy32( error_fx + L_FRAME32k - L_SHB_TRANSITION_LENGTH, hBWE_TD->old_tbe_synth_fx_32, L_SHB_TRANSITION_LENGTH ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" ); /* resample SHB synthesis (if needed) and scale down */ synth_scale_fx = 32767; move16(); /* 1.0 in Q15 */ @@ -7030,24 +7022,14 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); - -#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 - Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 -#endif - FOR( i = 0; i < L_FRAME16k; i++ ) { -#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } -#else - Word16 idx; - idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ -#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); @@ -7110,9 +7092,7 @@ void ivas_swb_tbe_dec_fx( Decimate_allpass_steep_fx32( error_fx, hBWE_TD->mem_resamp_HB_32k_fx_32, L_FRAME32k, synth_fx ); } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" ); /* Update previous frame parameters for FEC */ Copy( lsf_shb_fx, hBWE_TD->lsp_prevfrm_fx, LPC_SHB_ORDER ); IF( EQ_16( st->codec_mode, MODE1 ) ) @@ -7149,9 +7129,6 @@ void ivas_swb_tbe_dec_fx( move16(); hBWE_TD->prev_Qx = Q_bwe_exc; move16(); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" );*/ - - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" );*/ return; } -- GitLab From c1ec7869b0f26b14b17860ff4cc0649b3b3461d3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 14:15:20 +0000 Subject: [PATCH 138/698] --- revert MORE chenges--- --- lib_com/swb_tbe_com_fx.c | 26 +++++++++++++------------- lib_com/tools_fx.c | 12 ++++++------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 25c6c32bf..2a2841966 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6763,19 +6763,19 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 15bba151e..5219d076c 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -795,12 +795,12 @@ void Copy_Scale_sig_16_32_no_sat( return; } L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); - FOR( i = 0; i < lg; i++ ) - { - // y[i] = L_mult0(x[i], L_tmp); - y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ - } + FOR( i = 0; i < lg; i++ ) + { + // y[i] = L_mult0(x[i], L_tmp); + y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + move32(); /* saturation can occur here */ + } } void Copy_Scale_sig_32_16( -- GitLab From 1eb52db50774f77743f15e2f5a9c9cd60c16db24 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 09:43:46 +0200 Subject: [PATCH 139/698] Revert "--- revert MORE chenges---" This reverts commit c1ec7869b0f26b14b17860ff4cc0649b3b3461d3. --- lib_com/swb_tbe_com_fx.c | 26 +++++++++++++------------- lib_com/tools_fx.c | 12 ++++++------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2a2841966..25c6c32bf 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6763,19 +6763,19 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 5219d076c..15bba151e 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -795,12 +795,12 @@ void Copy_Scale_sig_16_32_no_sat( return; } L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); - FOR( i = 0; i < lg; i++ ) - { - // y[i] = L_mult0(x[i], L_tmp); - y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ - } + FOR( i = 0; i < lg; i++ ) + { + // y[i] = L_mult0(x[i], L_tmp); + y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + move32(); /* saturation can occur here */ + } } void Copy_Scale_sig_32_16( -- GitLab From fbca4d3889480434d04fc303b144b31d9985c98f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 09:44:08 +0200 Subject: [PATCH 140/698] Revert " --- revert ALL changes ---" This reverts commit b677480fe59ceaf1b9345a10cafe36f50e122418. --- lib_com/options.h | 16 +- lib_com/swb_tbe_com_fx.c | 278 ++++++++++++++++++++++++++++- lib_com/tools_fx.c | 24 +++ lib_dec/ivas_core_dec_fx.c | 62 +++++-- lib_dec/ivas_jbm_dec_fx.c | 20 ++- lib_dec/ivas_stereo_icbwe_dec_fx.c | 15 ++ lib_dec/swb_tbe_dec_fx.c | 25 ++- 7 files changed, 419 insertions(+), 21 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 4653bb460..1efda0251 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -/*#define WMOPS*/ /* Activate complexity and memory counters */ +//#define WMOPS /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -78,4 +78,18 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT + +// new speedups +//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // 0.4 WMOPS - BE? + +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | + +//----------------------------------------------------------------------- +// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 25c6c32bf..500e2fd02 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -18,6 +18,7 @@ #define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ #define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ + /*-----------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------*/ @@ -6692,7 +6693,6 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ - void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -6704,8 +6704,9 @@ void elliptic_bpf_48k_generic_fx( { Word16 i, j; Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; + Word32 L_output[L_FRAME48k]; FOR( i = 0; i < 4; i++ ) { @@ -6721,6 +6722,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6763,6 +6765,176 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + { + Word64 W_tmpX; + Word64 W_tmpY; + i = 4; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + FOR( ; i < L_FRAME48k; ) + { + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //2 + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); // 3 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //4 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //5 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); // 3 + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //4 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //5 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //4 + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //5 + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); // 6 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //7 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } + } + ELSE +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ + { + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + move32(); + } + } + +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + { + i = 4; + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + FOR( ; i < L_FRAME48k; ) + { + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } + } + ELSE +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ + { FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6776,6 +6948,9 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } + } +#endif + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -6830,6 +7005,28 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } + +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6844,7 +7041,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } - +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -6913,7 +7110,29 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -6931,6 +7150,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } +#endif memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -6998,12 +7218,13 @@ void synthesise_fb_high_band_fx( { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; - Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; + Word16 tmp[L_FRAME48k]; + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" ); /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7019,6 +7240,7 @@ void synthesise_fb_high_band_fx( } exp_tmp = sub( Q_fb_exc, 2 ); + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" ); IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ @@ -7029,8 +7251,11 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } - temp1 = sum2_fx_mod( tmp, L_FRAME48k ); + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); + temp1 = sum2_fx_mod( tmp, L_FRAME48k ); L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ exp = norm_l( L_tmp ); tmp3 = extract_h( L_shl( L_tmp, exp ) ); @@ -7073,6 +7298,47 @@ void synthesise_fb_high_band_fx( tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { +#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx + L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ + Word32 L_tmp32; + Word16 tmp16; + + if ( L_tmp < 0 ) + { + L_tmp32 = L_negate( L_tmp ); + } + if ( L_tmp < 0 ) + { + L_tmp32 = L_shl_sat( L_tmp32, tmp3 ); + } + if ( L_tmp < 0 ) + { + tmp16 = extract_h( L_tmp32 ); + } + if ( L_tmp < 0 ) + { + tmp16 = negate( tmp16 ); + } + + if ( L_tmp == 0 ) + { + tmp16 = 0; + move16(); + } + + if ( L_tmp > 0 ) + { + L_tmp32 = L_shl_sat( L_tmp, tmp3 ); + } + if ( L_tmp > 0 ) + { + tmp16 = extract_h( L_tmp32 ); + } + + output[i] = tmp16; + move16(); + +#else L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { @@ -7084,7 +7350,9 @@ void synthesise_fb_high_band_fx( output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); } +#endif } + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; } diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 15bba151e..d5ec36928 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,13 +794,37 @@ void Copy_Scale_sig_16_32_no_sat( } return; } +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); + + IF( L_tmp >= 0x7FFF ) + { FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ } + return; + } + // ELSE + { + // Word16 tmp = extract_l( L_tmp ); + FOR( i = 0; i < lg; i++ ) + { + y[i] = L_mult( x[i], L_tmp ); + move32(); /* saturation can occur here */ + } + } +#else + L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); + FOR( i = 0; i < lg; i++ ) + { + // y[i] = L_mult0(x[i], L_tmp); + y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + move32(); /* saturation can occur here */ + } +#endif } void Copy_Scale_sig_32_16( diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index 03f0e4b40..db6dad33f 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -116,12 +116,12 @@ ivas_error ivas_core_dec_fx( error = IVAS_ERR_OK; move32(); - push_wmops( "ivas_core_dec" ); + push_wmops( "ivas_core_dec (ICD)" ); /*------------------------------------------------------------------* * General initialization *-----------------------------------------------------------------*/ - + push_wmops( "ICD init" ); use_cldfb_for_dft = 0; move16(); tdm_LRTD_flag = -1; @@ -370,7 +370,9 @@ ivas_error ivas_core_dec_fx( { save_hb_synth_32_fx = NULL; } + pop_wmops(); /*push_wmops( "ICD init" );*/ + push_wmops( "ICD SID, sanity" ); /*------------------------------------------------------------------* * Decode SID for MDCT-Stereo DTX mode *-----------------------------------------------------------------*/ @@ -398,7 +400,9 @@ ivas_error ivas_core_dec_fx( { ivas_combined_format_brate_sanity_fx( element_brate, sts[0]->core, sts[0]->total_brate, &( sts[0]->core_brate ), &( sts[0]->inactive_coder_type_flag ), &tmps ); } + pop_wmops(); /*push_wmops( "ICD SID, sanity" );*/ + push_wmops( "ICD Coredec" ); /*------------------------------------------------------------------* * Core Decoding *-----------------------------------------------------------------*/ @@ -483,6 +487,7 @@ ivas_error ivas_core_dec_fx( IF( st->core == ACELP_CORE ) { + push_wmops( "ICD ACELP" ); /* ACELP core decoder */ Word16 old_syn_12k8_16k_fx_16[L_FRAME16k]; Word16 save_hb_synth_fx_arr[L_FRAME48k], *save_hb_synth_16_fx; @@ -555,6 +560,7 @@ ivas_error ivas_core_dec_fx( } Copy_Scale_sig_16_32_DEPREC( old_syn_12k8_16k_fx_16, old_syn_12k8_16k_fx[n], L_FRAME16k, Q11 - ( -Q1 ) ); // Q(11 - (-1)) + pop_wmops(); /*push_wmops( "ICD ACELP" );*/ } Copy_Scale_sig_32_16( st->previoussynth_fx_32, st->previoussynth_fx, L_FRAME48k, 0 ); // Q0 @@ -563,6 +569,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( EQ_16( st->core, TCX_20_CORE ) || EQ_16( st->core, TCX_10_CORE ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { + push_wmops( "ICD TCX" ); Word16 Qsyn_temp; IVAS_FORMAT ivas_format; @@ -617,10 +624,12 @@ ivas_error ivas_core_dec_fx( } st->hBPF->pst_mem_deemp_err_fx = extract_l( st->mem_error ); move16(); + pop_wmops(); /*push_wmops( "ICD TCX" );*/ } IF( EQ_16( st->core, HQ_CORE ) ) { + push_wmops( "ICD HQ decoding" ); /* HQ core decoder */ Word16 Q_output; @@ -634,6 +643,7 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_output ) ); // Q11 Scale_sig( synth_16_fx[n], output_frame, negate( Q_synth ) ); // Q0 Scale_sig( output_16_fx[n], L_FRAME48k, negate( Q_output ) ); // Q0 + pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ } /*---------------------------------------------------------------------* @@ -650,8 +660,8 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[0]->old_pitch_buf_16_fx, hCPE->hCoreCoder[0]->old_pitch_buf_fx, add( imult1616( 2, NB_SUBFR16k ), 2 ), Q10 ); // Q16 } - } /* n_channels loop */ - + } /* n_channels loop */ + pop_wmops(); /*push_wmops( "ICD Coredec" );*/ /*---------------------------------------------------------------------* * MDCT stereo: joint TCX Core Decoding @@ -659,6 +669,7 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( sts[0]->element_mode, IVAS_CPE_MDCT ) ) { + push_wmops( "ICD jTCX Coredec" ); /* active-frame decoding */ IF( GT_32( sts[0]->core_brate, SID_2k40 ) ) { @@ -787,6 +798,7 @@ ivas_error ivas_core_dec_fx( } } } + pop_wmops(); /*push_wmops( "ICD jTCX Coredec" );*/ } /*---------------------------------------------------------------------* @@ -796,6 +808,7 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( sts[0]->element_mode, IVAS_CPE_TD ) && hStereoCng != NULL ) { + push_wmops( "ICD Stereo CNG Updates" ); /* To be cleaned up once the caller function is converted // These changes are for system testing of fixed changes made */ Word16 Q_c_PS_LT, Q_output; Word32 c_PS_LT_fx; @@ -811,12 +824,14 @@ ivas_error ivas_core_dec_fx( stereo_cng_compute_PScorr_fx( output_32_fx[0], output_32_fx[1], &Q_output, &c_PS_LT_fx, Q_c_PS_LT, sts[0]->L_frame, sts[1]->L_frame ); hStereoCng->c_PS_LT_fx = extract_h( c_PS_LT_fx ); + pop_wmops(); /*push_wmops( "ICD Stereo CNG Updates" );*/ } /*---------------------------------------------------------------------* * Postprocessing, BWEs and updates *---------------------------------------------------------------------*/ + push_wmops( "ICD Postproc, BWE, updates (ICD PP)" ); FOR( n = 0; n < n_channels; n++ ) { st = sts[n]; @@ -827,6 +842,7 @@ ivas_error ivas_core_dec_fx( * TD-BWE for ACELP to TCX transitions *---------------------------------------------------------------------*/ + push_wmops( "ICD PP TDBWE ACELPTCX trans" ); /*core_switching_post_dec*/ Q_synth = sub( 15, e_sig[0] ); @@ -900,11 +916,12 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->mem_resamp_HB_fx_32, INTERP_3_1_MEM_LEN, sub( Q11, hBWE_TD->prev_Qx ) ); // Q11 Copy( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->state_32and48k_WB_upsample_fx, ( 2 * ALLPASSSECTIONS_STEEP ) ); } + pop_wmops(); /*push_wmops( "ICD PP TDBWE ACELPTCX trans" );*/ /*---------------------------------------------------------------------* * Postprocessing for ACELP/MDCT core switching *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP ACELP/MDCT switch" ); /* save synth and output in case of SBA DirAC stereo output as core switching is done outside of core decoder */ test(); test(); @@ -939,11 +956,12 @@ ivas_error ivas_core_dec_fx( { Copy( sts[0]->previoussynth_fx, sts[1]->previoussynth_fx, st->hTcxDec->L_frameTCX ); } + pop_wmops(); /*push_wmops( "ICD PP ACELP/MDCT switch" );*/ /*---------------------------------------------------------------------* * Pre-processing for bandwidth switching *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP BWswitch preproc" ); ivas_bw_switching_pre_proc_fx( st, last_element_brate, nchan_out, old_syn_12k8_16k_fx[n], old_syn_fx, q_audio ); IF( st->hHQ_core == NULL ) @@ -990,12 +1008,13 @@ ivas_error ivas_core_dec_fx( hBWE_FD->prev_flag = hBWE_FD->prev_flag; move16(); } + pop_wmops(); /*push_wmops( "ICD PP BWswitch preproc" );*/ /*---------------------------------------------------------------------* * WB TBE decoding * WB BWE decoding *---------------------------------------------------------------------*/ - + push_wmops( "ICD PP TBE/BWE" ); Word16 Q_input, Q_hb_synth_fx, Q_synth_fx; Word16 Q_syn_hb, sf; @@ -1023,8 +1042,9 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( st->extl, WB_TBE ) ) { /* WB TBE decoder */ - + push_wmops( "ICD PP TBE/BWE wb_tbe_dec" ); ivas_wb_tbe_dec_fx( st, st->coder_type, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], hb_synth_16_fx[n], &Q_hb_synth_fx ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_tbe_dec" );*/ } ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( n, 1 ) && !tdm_LRTD_flag && NE_16( st->extl, -1 ) && st->bws_cnt == 0 && st->extl_brate == 0 ) { @@ -1032,8 +1052,10 @@ ivas_error ivas_core_dec_fx( } ELSE IF( EQ_16( st->extl, WB_BWE ) && st->bws_cnt == 0 ) { + push_wmops( "ICD PP TBE/BWE wb_bwe_dec" ); /* WB BWE decoder */ Q_hb_synth_fx = ivas_wb_bwe_dec_fx( st, output_16_fx[n], synth_16_fx[n], hb_synth_16_fx[n], use_cldfb_for_dft, output_frame, voice_factors_fx[n], pitch_buf_fx[n], &Q_synth_fx ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_bwe_dec" );*/ } /* Memories Re-Scaling */ @@ -1077,8 +1099,10 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, FB_TBE ) || ( NE_16( st->coder_type, AUDIO ) && NE_16( st->coder_type, INACTIVE ) && GE_32( st->core_brate, SID_2k40 ) && EQ_16( st->core, ACELP_CORE ) && !st->con_tcx && GE_32( output_Fs, 32000 ) && GT_16( st->bwidth, NB ) && st->bws_cnt > 0 ) ) { + push_wmops( "ICD PP TBE/BWE swb_tbe_dec" ); /* SWB TBE decoder */ ivas_swb_tbe_dec_fx( st, hStereoICBWE, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], old_syn_12k8_16k_fx[n], tmp_buffer_fx /*fb_exc*/, hb_synth_32_fx[n], pitch_buf_fx[n], &Q_white_exc ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec" );*/ Copy_Scale_sig_16_32_no_sat( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap_fx_32, L_SHB_LAHEAD, sub( Q11, hBWE_TD->prev_Q_bwe_syn2 ) ); // Q11 Copy_Scale_sig_32_16( hBWE_TD->old_tbe_synth_fx_32, hBWE_TD->old_tbe_synth_fx, L_SHB_TRANSITION_LENGTH, sub( hBWE_TD->prev_Qx, Q11 ) ); // prev_Qx @@ -1093,18 +1117,22 @@ ivas_error ivas_core_dec_fx( /* FB TBE decoder */ IF( EQ_16( st->extl, FB_TBE ) ) { + push_wmops( "ICD PP TBE/BWE fb_tbe_dec" ); fb_tbe_dec_ivas_fx( st, tmp_buffer_fx /*fb_exc*/, Q_white_exc, hb_synth_32_fx[n], 0, tmp_buffer_fx /*fb_synth_ref*/, Q_white_exc, output_frame ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE fb_tbe_dec" );*/ } } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) || ( GE_32( output_Fs, 32000 ) && st->core == ACELP_CORE && st->bwidth > NB && st->bws_cnt > 0 && !st->ppp_mode_dec && !( EQ_16( st->nelp_mode_dec, 1 ) && EQ_16( st->bfi, 1 ) ) ) ) { /* SWB BWE decoder */ + push_wmops( "ICD PP TBE/BWE swb_bwe_dec" ); Q_syn_hb = swb_bwe_dec_fx32( st, output_32_fx[n], synth_32_fx[n], hb_synth_32_fx[n], use_cldfb_for_dft, output_frame ); - + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ Scale_sig32( hb_synth_32_fx[n], output_frame, sub( Q11, Q_syn_hb ) ); // Q11 Copy_Scale_sig_32_16( hBWE_FD->L_old_wtda_swb_fx32, hBWE_FD->L_old_wtda_swb_fx, output_frame, sub( hBWE_FD->old_wtda_swb_fx_exp, Q11 ) ); // old_wtda_swb_fx_exp } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE" );*/ /*---------------------------------------------------------------------* * FEC - recovery after lost HQ core (smoothing of the BWE component) @@ -1143,6 +1171,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( GE_16( output_frame, L_FRAME32k ) && st->hTdCngDec != NULL ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && GE_16( st->bwidth, SWB ) && st->hTdCngDec != NULL ) ) { + push_wmops( "ICD PP SWB CNG" ); /* SHB CNG decoder */ Word16 synth_fxl[960]; /* Q-2 */ Word16 q; @@ -1164,6 +1193,7 @@ ivas_error ivas_core_dec_fx( Scale_sig( hBWE_TD->state_lpc_syn_fx, LPC_SHB_ORDER, negate( sub( Q8, hBWE_TD->prev_Q_bwe_syn ) ) ); // Q0 Copy_Scale_sig_16_32_no_sat( hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, 2 * ALLPASSSECTIONS_STEEP, negate( sub( hBWE_TD->prev_Q_bwe_syn2, Q11 ) ) ); + pop_wmops(); /* push_wmops( "ICD PP SWB CNG" );*/ } /*-------------------------------------------------------------------* @@ -1173,6 +1203,7 @@ ivas_error ivas_core_dec_fx( test(); IF( n == 0 && GE_16( st->element_mode, IVAS_CPE_DFT ) ) { + push_wmops( "ICD PP IC-BWE" ); Word16 q; q = 11; move16(); @@ -1194,10 +1225,12 @@ ivas_error ivas_core_dec_fx( Scale_sig32( hb_synth_32_fx[0], output_frame, sub( Q11, q ) ); // Q11 Scale_sig32( hb_synth_32_fx[1], output_frame, sub( Q11, q ) ); // Q11 } + pop_wmops(); /*push_wmops( "ICD PP IC-BWE" );*/ } IF( EQ_16( st->element_mode, EVS_MONO ) ) { + push_wmops( "ICD PP BFI" ); /*----------------------------------------------------------------* * BFI waveform adjustment *----------------------------------------------------------------*/ @@ -1225,6 +1258,7 @@ ivas_error ivas_core_dec_fx( st->hPlcInfo->Pitch_fx = 0; move16(); } + pop_wmops(); /*push_wmops( "ICD PP BFI" );*/ } /*----------------------------------------------------------------* @@ -1237,6 +1271,7 @@ ivas_error ivas_core_dec_fx( test(); IF( ( NE_16( st->extl, -1 ) && ( NE_16( st->extl, IGF_BWE ) || st->last_core == ACELP_CORE ) ) || ( st->bws_cnt > 0 && st->core == ACELP_CORE ) ) { + push_wmops( "ICD PP Sync BWE" ); /* Calculate an additional delay of extension layer components to be synchronized with ACELP synthesis */ IF( EQ_16( st->L_frame, L_FRAME ) ) { @@ -1390,6 +1425,7 @@ ivas_error ivas_core_dec_fx( st->hTdCngDec->last_shb_ener_fx_32 = L_shl_sat( L_tmp, sub( exp, 20 ) ); /*Q11*/ move32(); } + pop_wmops(); /*push_wmops( "ICD PP Sync BWE" );*/ } test(); @@ -1405,7 +1441,7 @@ ivas_error ivas_core_dec_fx( * - core switching in DFT stereo * - updates for potential TD->DFT stereo switching *----------------------------------------------------------------*/ - + push_wmops( "ICD PP TCXLTP" ); IF( st->hHQ_core != NULL ) { Copy_Scale_sig_16_32_no_sat( st->hHQ_core->old_out_LB_fx, st->hHQ_core->old_out_LB_fx32, L_FRAME32k, sub( Q11, st->hHQ_core->Q_old_wtda_LB ) ); // Q11 @@ -1462,6 +1498,7 @@ ivas_error ivas_core_dec_fx( } Copy32( synth_32_fx[n], output_32_fx[n], output_frame ); + pop_wmops(); /*push_wmops( "ICD PP TCXLTP" );*/ /*--------------------------------------------------------* * Common updates @@ -1470,6 +1507,7 @@ ivas_error ivas_core_dec_fx( Word16 exp_max; Word32 output_fx_loc[L_FRAME48k]; + push_wmops( "ICD PP commonupdates" ); exp_max = 0; move16(); @@ -1524,6 +1562,8 @@ ivas_error ivas_core_dec_fx( Scale_sig( st->delay_buf_out_fx, NS2SA_FX2( st->output_Fs, DELAY_CLDFB_NS ), negate( exp_max ) ); // Q0 + pop_wmops(); /*push_wmops( "ICD PP commonupdates" );*/ + } /* n_channels loop */ FOR( n = 0; n < n_channels; n++ ) @@ -1542,7 +1582,7 @@ ivas_error ivas_core_dec_fx( move16(); } } - + pop_wmops(); /*push_wmops( "ICD Postproc, BWE, updates (ICD PP)" );*/ pop_wmops(); return error; } diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 93e8bb4eb..4745bc5f0 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -96,12 +96,13 @@ ivas_error ivas_jbm_dec_tc_fx( CPE_DEC_HANDLE hCPE; SCE_DEC_HANDLE hSCE; - push_wmops( "ivas_jbm_dec_tc" ); + push_wmops( "ivas_jbm_dec_tc (JBM)" ); /*----------------------------------------------------------------* * Initialization of local vars after struct has been set *----------------------------------------------------------------*/ + push_wmops( "JBM init" ); output_Fs = st_ivas->hDecoderConfig->output_Fs; move32(); nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; @@ -134,7 +135,7 @@ ivas_error ivas_jbm_dec_tc_fx( } Word16 ch; - + pop_wmops(); /*push_wmops( "JBM init" );*/ /*----------------------------------------------------------------* * Decoding + pre-rendering @@ -152,6 +153,7 @@ ivas_error ivas_jbm_dec_tc_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) { + push_wmops( "JBM STEREO" ); st_ivas->hCPE[0]->element_brate = ivas_total_brate; move32(); Word16 q_output = 11; @@ -192,9 +194,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 } } + pop_wmops(); /*push_wmops( "JBM STEREO" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { + push_wmops( "JBM ISM" ); /* Metadata decoding and configuration */ test(); IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) @@ -279,9 +283,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } + pop_wmops(); /*push_wmops( "JBM ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { + push_wmops( "JBM SBA/MASA" ); set16_fx( nb_bits_metadata, 0, MAX_SCE ); @@ -688,9 +694,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } + pop_wmops(); /*push_wmops( "JBM SBA/MASA" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { + push_wmops( "JBM MASA_ISM" ); Word16 nchan_ism, nchan_transport_ism; Word16 dirac_bs_md_write_idx; @@ -821,9 +829,11 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[n], output_frame, sub( Q11, output_q ) ); // Q11 } } + pop_wmops(); /*push_wmops( "JBM MASA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { + push_wmops( "JBM SBA_ISM" ); Word16 nchan_ism, sba_ch_idx; set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); @@ -1092,10 +1102,11 @@ ivas_error ivas_jbm_dec_tc_fx( v_add_32( p_output_fx[n], p_output_fx[n + s_max( nchan_out, nchan_ism )], p_output_fx[n], output_frame ); } } + pop_wmops(); /*push_wmops( "JBM SBA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) { - + push_wmops( "JBM MC" ); // st = (st_ivas->nSCE > 0) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; IF( st_ivas->nSCE > 0 ) { @@ -1468,6 +1479,7 @@ ivas_error ivas_jbm_dec_tc_fx( ivas_mono_stereo_downmix_mcmasa_fx( st_ivas, p_output_fx, output_frame ); } } + pop_wmops(); /*push_wmops( "JBM MC" );*/ } /*----------------------------------------------------------------* @@ -1476,7 +1488,9 @@ ivas_error ivas_jbm_dec_tc_fx( IF( EQ_16( st_ivas->hDecoderConfig->Opt_tsm, 1 ) ) { + push_wmops( "JBM syn_out" ); ivas_syn_output_f_fx( p_output_fx, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data_fx ); + pop_wmops(); /*push_wmops( "JBM syn_out" );*/ } ELSE { diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index c7bc98566..4acfcf6d9 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,8 +904,22 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); +#endif FOR( i = 0; i < winLen_fx; i++ ) { +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ + L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ + tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ + synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ + move32(); + if ( LE_16( alpha_fx, winSlope_fx_ ) ) + { + alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ + } +#else L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ @@ -915,6 +929,7 @@ void stereo_icBWE_dec_fx( { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } +#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 1b51a29fb..36a499f7d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4713,7 +4713,9 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ + push_wmops( "synthesise_fb_high_band" ); synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) @@ -5517,6 +5519,7 @@ void ivas_swb_tbe_dec_fx( hBWE_TD = st->hBWE_TD; + /* initializations */ GainFrame_fx = 0; move32(); @@ -6327,6 +6330,7 @@ void ivas_swb_tbe_dec_fx( } } ener_fx = s_max( 1, round_fx_sat( L_shl_sat( L_ener, sub( 18, shl( Q_bwe_exc, 1 ) ) ) ) ); /* Q2: 2*Q_bwe_exc+18-2*Q_bwe_exc-16 */ + /* WB/SWB bandwidth switching */ IF( st->bws_cnt > 0 ) { @@ -6644,7 +6648,6 @@ void ivas_swb_tbe_dec_fx( hBWE_TD->prev_Q_bwe_syn = Q_bwe_exc; move16(); - /* Gain shape smoothing after quantization */ test(); IF( EQ_32( st->extl_brate, SWB_TBE_1k10 ) || EQ_32( st->extl_brate, SWB_TBE_1k75 ) ) @@ -6994,11 +6997,16 @@ void ivas_swb_tbe_dec_fx( move32(); } + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" ); + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" ); + /* generate 32kHz SHB synthesis from 12.8(16)kHz signal */ GenSHBSynth_fx32( shaped_shb_excitation_fx_32, error_fx, hBWE_TD->genSHBsynth_Hilbert_Mem_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->L_frame, &( hBWE_TD->syn_dm_phase ) ); Copy_Scale_sig_32_16( st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, 2 * ALLPASSSECTIONS_STEEP, -( Q11 - Q_bwe_exc ) ); Copy32( error_fx + L_FRAME32k - L_SHB_TRANSITION_LENGTH, hBWE_TD->old_tbe_synth_fx_32, L_SHB_TRANSITION_LENGTH ); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" );*/ + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" ); /* resample SHB synthesis (if needed) and scale down */ synth_scale_fx = 32767; move16(); /* 1.0 in Q15 */ @@ -7022,14 +7030,24 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); + +#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 + Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 +#endif + FOR( i = 0; i < L_FRAME16k; i++ ) { +#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } +#else + Word16 idx; + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ +#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); @@ -7092,7 +7110,9 @@ void ivas_swb_tbe_dec_fx( Decimate_allpass_steep_fx32( error_fx, hBWE_TD->mem_resamp_HB_32k_fx_32, L_FRAME32k, synth_fx ); } + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" );*/ + push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" ); /* Update previous frame parameters for FEC */ Copy( lsf_shb_fx, hBWE_TD->lsp_prevfrm_fx, LPC_SHB_ORDER ); IF( EQ_16( st->codec_mode, MODE1 ) ) @@ -7129,6 +7149,9 @@ void ivas_swb_tbe_dec_fx( move16(); hBWE_TD->prev_Qx = Q_bwe_exc; move16(); + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" );*/ + + pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" );*/ return; } -- GitLab From 7a6eb577a26e04425f2a6c66e9ffd76532f39b01 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 09:41:08 +0200 Subject: [PATCH 141/698] Revert "correct instrumentation (should be BE)" This reverts commit 32c9de3dcce4d724aafddc804b12b21cee389d5f. -- GitLab From 56152c372114fb80bec10df6f3f3c3795ad76702 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 09:52:14 +0200 Subject: [PATCH 142/698] correct instrumentation --- lib_com/options.h | 21 +++++++++++---------- lib_com/tools_fx.c | 6 +++--- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1efda0251..a95d04541 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -//#define WMOPS /* Activate complexity and memory counters */ +#define WMOPS /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -80,15 +80,16 @@ //#define HARM_SCE_INIT // new speedups -//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // 0.4 WMOPS - BE? - -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | < TODO: check border cases +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS according pipe +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | + +//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? +// +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index d5ec36928..b04f3b84e 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -809,11 +809,11 @@ void Copy_Scale_sig_16_32_no_sat( } // ELSE { - // Word16 tmp = extract_l( L_tmp ); + Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { - y[i] = L_mult( x[i], L_tmp ); - move32(); /* saturation can occur here */ + y[i] = L_mult( x[i], tmp ); + move32(); } } #else -- GitLab From 82c2d8ee7a0bef0bfb878a72cfcb59a9027dd6d0 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 09:52:47 +0200 Subject: [PATCH 143/698] activated all BE changes, including new FIX_1439_SPEEDUP_synthesise_fb_high_band_fx for BE testing --- lib_com/options.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index a95d04541..54f4ea2d9 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -85,8 +85,8 @@ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? -// +#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? + //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | -- GitLab From 96bdfba5324b038e4d353f21a9945fe2d5b1f320 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 11:11:34 +0200 Subject: [PATCH 144/698] cleanup FIX_1439_SPEEDUP_stereo_icBWE_dec_fx --- lib_dec/ivas_stereo_icbwe_dec_fx.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index 4acfcf6d9..772eb2d7d 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -909,22 +909,17 @@ void stereo_icBWE_dec_fx( #endif FOR( i = 0; i < winLen_fx; i++ ) { -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ move32(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx if ( LE_16( alpha_fx, winSlope_fx_ ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } #else - L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ - L_tmp = L_mac0( L_tmp, sub( 32767 /* 1.0 in Q15*/, alpha_fx ), hStereoICBWE->icbweM2Ref_prev_fx ); /* Q29 */ - tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ - synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ - move32(); IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ -- GitLab From 687d77c114b050a49db63ff0846dc226cc83d1cd Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 12:28:46 +0200 Subject: [PATCH 145/698] creating FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST --- lib_com/tools_fx.c | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index b04f3b84e..d004a14ee 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -759,14 +759,26 @@ void Copy_Scale_sig_16_32_DEPREC( move32(); /* saturation can occur here */ } } +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST +void Copy_Scale_sig_16_32_no_sat( + Word16 x[], /* i : signal to scale input Qx */ + Word32 y[], /* o : scaled signal output Qx */ + Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ + ) +#else void Copy_Scale_sig_16_32_no_sat( const Word16 x[], /* i : signal to scale input Qx */ Word32 y[], /* o : scaled signal output Qx */ const Word16 lg, /* i : size of x[] Q0 */ const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ ) +#endif { + Word16 i; Word32 L_tmp; #ifdef BASOP_NOGLOB_DECLARE_LOCAL @@ -795,27 +807,50 @@ void Copy_Scale_sig_16_32_no_sat( return; } #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + lg = 1; + for (int i_exp = 0; i_exp < 35; i_exp++) + { + for ( short i_x = 0x8000; i_x < 0x7FFF; i_x ++) + { + L_tmp = L_shl_o( 1, i_exp - 1, &Overflow ); + +#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); +#endif IF( L_tmp >= 0x7FFF ) { FOR( i = 0; i < lg; i++ ) { +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + x[i] = i_x; +#endif // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ } - return; } - // ELSE + ELSE { Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + x[i] = i_x; +#endif y[i] = L_mult( x[i], tmp ); move32(); } } +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST + int test = W_extract_l( W_mult_32_16( L_tmp, x[0] ) ); + + if ( test != y[0] ) + assert( 0 ); + } //i_x + } //i_exp +#endif #else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) -- GitLab From 244f515f8d7f88be03f30a8031c23c213bc7a414 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 12:29:16 +0200 Subject: [PATCH 146/698] Revert "creating FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST" This reverts commit 687d77c114b050a49db63ff0846dc226cc83d1cd. --- lib_com/tools_fx.c | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index d004a14ee..b04f3b84e 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -759,26 +759,14 @@ void Copy_Scale_sig_16_32_DEPREC( move32(); /* saturation can occur here */ } } -#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST - -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST -void Copy_Scale_sig_16_32_no_sat( - Word16 x[], /* i : signal to scale input Qx */ - Word32 y[], /* o : scaled signal output Qx */ - Word16 lg, /* i : size of x[] Q0 */ - const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ - ) -#else void Copy_Scale_sig_16_32_no_sat( const Word16 x[], /* i : signal to scale input Qx */ Word32 y[], /* o : scaled signal output Qx */ const Word16 lg, /* i : size of x[] Q0 */ const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ ) -#endif { - Word16 i; Word32 L_tmp; #ifdef BASOP_NOGLOB_DECLARE_LOCAL @@ -807,50 +795,27 @@ void Copy_Scale_sig_16_32_no_sat( return; } #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST - lg = 1; - for (int i_exp = 0; i_exp < 35; i_exp++) - { - for ( short i_x = 0x8000; i_x < 0x7FFF; i_x ++) - { - L_tmp = L_shl_o( 1, i_exp - 1, &Overflow ); - -#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); -#endif IF( L_tmp >= 0x7FFF ) { FOR( i = 0; i < lg; i++ ) { -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST - x[i] = i_x; -#endif // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ } + return; } - ELSE + // ELSE { Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST - x[i] = i_x; -#endif y[i] = L_mult( x[i], tmp ); move32(); } } -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST - int test = W_extract_l( W_mult_32_16( L_tmp, x[0] ) ); - - if ( test != y[0] ) - assert( 0 ); - } //i_x - } //i_exp -#endif #else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) -- GitLab From 775e4bc484c06a8a73fd35d4b8a7b3c4fce352a1 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 12:30:20 +0200 Subject: [PATCH 147/698] minor: comment --- lib_com/tools_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index b04f3b84e..756b5be80 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -803,7 +803,7 @@ void Copy_Scale_sig_16_32_no_sat( { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ + move32(); /* Overflow can occur here */ } return; } @@ -822,7 +822,7 @@ void Copy_Scale_sig_16_32_no_sat( { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ + move32(); /* Overflow can occur here */ } #endif } -- GitLab From fa36afd7a872d440be20679e693a204d88930bf8 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 14:17:43 +0200 Subject: [PATCH 148/698] add FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST --- lib_com/swb_tbe_com_fx.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 500e2fd02..3cf8e88e9 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7295,14 +7295,24 @@ void synthesise_fb_high_band_fx( *prev_fbbwe_ratio = shr( ratio, 1 ); move16(); } +#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { -#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ +#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx Word32 L_tmp32; Word16 tmp16; - +#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST + Word32 L_tmp_a[5] = { 0x80000000, 0xC0000000, 0, 0x40000000, 0x7FFFFFFF}; + Word16 tmp3_a[15] = { -35, -32, -31, -15, -3, -1, 0, 1, 3, 15, 31, 32, 35 }; + for (int i_lta = 0; i_lta < 5; i_lta++) + for ( int i_t3a = 0; i_t3a < 13; i_t3a++ ) + { + L_tmp = L_tmp_a[i_lta]; + tmp3 = tmp3_a[i_t3a]; +#endif + if ( L_tmp < 0 ) { L_tmp32 = L_negate( L_tmp ); @@ -7334,12 +7344,29 @@ void synthesise_fb_high_band_fx( { tmp16 = extract_h( L_tmp32 ); } - +#ifndef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST output[i] = tmp16; move16(); +#else + IF( L_tmp < 0 ) + { + output[i] = negate( extract_h( L_shl_sat( L_negate( L_tmp ), tmp3 ) ) ); /*Qout*/ + move16(); + } + ELSE + { + output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ + move16(); + } + if ( output[i] != tmp16 ) + assert( 0 ); +#endif + +#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST + } +#endif #else - L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { output[i] = negate( extract_h( L_shl_sat( L_negate( L_tmp ), tmp3 ) ) ); /*Qout*/ -- GitLab From ba2977a632ae81faa3fcacda2316a4644c052776 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 3 Apr 2025 14:17:56 +0200 Subject: [PATCH 149/698] Revert "add FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST" This reverts commit fa36afd7a872d440be20679e693a204d88930bf8. --- lib_com/swb_tbe_com_fx.c | 35 ++++------------------------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 3cf8e88e9..500e2fd02 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7295,24 +7295,14 @@ void synthesise_fb_high_band_fx( *prev_fbbwe_ratio = shr( ratio, 1 ); move16(); } -#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { - L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ #ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx + L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ Word32 L_tmp32; Word16 tmp16; -#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST - Word32 L_tmp_a[5] = { 0x80000000, 0xC0000000, 0, 0x40000000, 0x7FFFFFFF}; - Word16 tmp3_a[15] = { -35, -32, -31, -15, -3, -1, 0, 1, 3, 15, 31, 32, 35 }; - for (int i_lta = 0; i_lta < 5; i_lta++) - for ( int i_t3a = 0; i_t3a < 13; i_t3a++ ) - { - L_tmp = L_tmp_a[i_lta]; - tmp3 = tmp3_a[i_t3a]; -#endif - + if ( L_tmp < 0 ) { L_tmp32 = L_negate( L_tmp ); @@ -7344,29 +7334,12 @@ void synthesise_fb_high_band_fx( { tmp16 = extract_h( L_tmp32 ); } -#ifndef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST + output[i] = tmp16; move16(); -#else - IF( L_tmp < 0 ) - { - output[i] = negate( extract_h( L_shl_sat( L_negate( L_tmp ), tmp3 ) ) ); /*Qout*/ - move16(); - } - ELSE - { - output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ - move16(); - } - if ( output[i] != tmp16 ) - assert( 0 ); -#endif - -#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx_TEST - } -#endif #else + L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { output[i] = negate( extract_h( L_shl_sat( L_negate( L_tmp ), tmp3 ) ) ); /*Qout*/ -- GitLab From 5d6fc20e9d26d7e8c70212cfad104a7fed363d83 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 2 Apr 2025 12:34:57 +0200 Subject: [PATCH 150/698] fix precission in FIX_1439_SPEEDUP_elliptic_bpf_48k_generic STAGE1-3, activate, check again BEness --- lib_com/swb_tbe_com_fx.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 500e2fd02..5128e42e3 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6783,7 +6783,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6796,7 +6797,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6811,7 +6813,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6824,7 +6827,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; @@ -6837,7 +6841,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; } @@ -6858,7 +6863,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } } @@ -7021,7 +7027,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } @@ -7128,7 +7135,8 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -- GitLab From 32bba36dea4533cbf1bd6f01fd786a4fa434a203 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 4 Apr 2025 09:02:46 +0200 Subject: [PATCH 151/698] add FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat --- lib_com/options.h | 4 ++++ lib_com/tools_fx.c | 26 +++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 2b88deb5d..8962098b9 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,4 +80,8 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT +// +// new speedups +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | + #endif diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 5219d076c..756b5be80 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,13 +794,37 @@ void Copy_Scale_sig_16_32_no_sat( } return; } +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat + L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); + + IF( L_tmp >= 0x7FFF ) + { + FOR( i = 0; i < lg; i++ ) + { + // y[i] = L_mult0(x[i], L_tmp); + y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + move32(); /* Overflow can occur here */ + } + return; + } + // ELSE + { + Word16 tmp = extract_l( L_tmp ); + FOR( i = 0; i < lg; i++ ) + { + y[i] = L_mult( x[i], tmp ); + move32(); + } + } +#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ + move32(); /* Overflow can occur here */ } +#endif } void Copy_Scale_sig_32_16( -- GitLab From e430720c9c5a2246b69a245e3f349e2f2f2f49cf Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 4 Apr 2025 09:05:27 +0200 Subject: [PATCH 152/698] add FIX_1439_SPEEDUP_stereo_icBWE_dec_fx --- lib_com/options.h | 1 + lib_dec/ivas_stereo_icbwe_dec_fx.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 8962098b9..787f0338a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -83,5 +83,6 @@ // // new speedups #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | #endif diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index c7bc98566..772eb2d7d 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,6 +904,9 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); +#endif FOR( i = 0; i < winLen_fx; i++ ) { L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ @@ -911,10 +914,17 @@ void stereo_icBWE_dec_fx( tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ move32(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + if ( LE_16( alpha_fx, winSlope_fx_ ) ) + { + alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ + } +#else IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } +#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) -- GitLab From 932c3f55d6d41abac3f13a470e6a1f8906516228 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 4 Apr 2025 09:08:32 +0200 Subject: [PATCH 153/698] add FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx --- lib_com/options.h | 1 + lib_dec/swb_tbe_dec_fx.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 787f0338a..3a96cb998 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,5 +84,6 @@ // new speedups #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | #endif diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 1b51a29fb..00be6455d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7022,14 +7022,24 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); + +#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx + Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 +#endif + FOR( i = 0; i < L_FRAME16k; i++ ) { +#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } +#else + Word16 idx; + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ +#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); -- GitLab From f1e32ecf14d70eafaf0f4d86c4b57ec75f62cffb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 4 Apr 2025 09:13:38 +0200 Subject: [PATCH 154/698] add FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig --- lib_com/options.h | 1 + lib_com/swb_tbe_com_fx.c | 93 +++++++++++++++++++++++++++++++++++----- 2 files changed, 84 insertions(+), 10 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3a96cb998..3e8725112 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -85,5 +85,6 @@ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2a2841966..062c131ee 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6763,18 +6763,91 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + { + i = 4; + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; + + FOR( ; i < L_FRAME48k; ) + { + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } + } + ELSE +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ + { + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } } memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; -- GitLab From 866a91131bef01ce1db3654162fcee71cdfd925a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 4 Apr 2025 09:18:27 +0200 Subject: [PATCH 155/698] add FIX_1439_SPEEDUP_synthesise_fb_high_band_fx --- lib_com/options.h | 4 +++- lib_com/swb_tbe_com_fx.c | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3e8725112..571b5edd3 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -83,8 +83,10 @@ // // new speedups #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? + #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 062c131ee..af52c2564 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7146,6 +7146,50 @@ void synthesise_fb_high_band_fx( tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { +#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx + L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ + Word32 L_tmp32; + Word16 tmp16; + + // if (L_tmp < 0) + if ( L_tmp < 0 ) + { + L_tmp32 = L_negate( L_tmp ); + } + if ( L_tmp < 0 ) + { + L_tmp32 = L_shl_sat( L_tmp32, tmp3 ); + } + if ( L_tmp < 0 ) + { + tmp16 = extract_h( L_tmp32 ); + } + if ( L_tmp < 0 ) + { + tmp16 = negate( tmp16 ); + } + + // if (L_tmp == 0) + if ( L_tmp == 0 ) + { + tmp16 = 0; + move16(); + } + + // if (L_tmp > 0) + if ( L_tmp > 0 ) + { + L_tmp32 = L_shl_sat( L_tmp, tmp3 ); + } + if ( L_tmp > 0 ) + { + tmp16 = extract_h( L_tmp32 ); + } + + output[i] = tmp16; + move16(); + +#else L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { @@ -7157,6 +7201,7 @@ void synthesise_fb_high_band_fx( output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); } +#endif } return; } -- GitLab From 00053a90002504d72c527fa12c852af44830bf42 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 4 Apr 2025 09:20:44 +0200 Subject: [PATCH 156/698] deactivate all speedups --- lib_com/options.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 571b5edd3..13f7c7f18 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -82,11 +82,11 @@ //#define HARM_SCE_INIT // // new speedups -#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS -#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | +//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | +//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS +//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? +//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? #endif -- GitLab From 40ea7cb4e2dba433511e5fe47bb4130e997c6bbb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 4 Apr 2025 10:03:20 +0200 Subject: [PATCH 157/698] activated all speedups (BE) --- lib_com/options.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 13f7c7f18..571b5edd3 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -82,11 +82,11 @@ //#define HARM_SCE_INIT // // new speedups -//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS -//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? +#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? #endif -- GitLab From 6d8e151543207ae117f5624b4bd4ef201b003884 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 7 Apr 2025 13:06:15 +0200 Subject: [PATCH 158/698] fix PYTEST_ADDOPTS string --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f7db000f7..fcaa06d57 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -404,7 +404,7 @@ stages: - REPORT_ARG="" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k \"not JBM\ and stereo and at""; fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k \"not JBM and stereo and at\""; fi - *build-and-create-float-ref-outputs -- GitLab From 5f5ee69577d1095ccf087de5ff12ea933b19466f Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 28 Mar 2025 11:41:17 +0100 Subject: [PATCH 159/698] adapt CI config to new versions of scripts --- .gitlab-ci.yml | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fcaa06d57..37bd9c601 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -375,6 +375,7 @@ stages: MERGED_CSV_ARTIFACT_NAME: "$CI_JOB_NAME--merged_csv--$CI_JOB_ID.csv" PAGES_HTML_ARTIFACT_NAME: "$CI_JOB_NAME-index.html" SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" + SUMMARY_HTML_ARTIFACT_SPLIT: "summary_split_$CI_JOB_NAME.html" IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" IMAGES_ARTIFACT_SPLIT: "images_split_$CI_JOB_NAME" script: @@ -400,10 +401,9 @@ stages: - comp_args="--mld --ssnr --odg" - - summary_args="MLD DIFF SSNR ODG" - - REPORT_ARG="" + - MEASURES_FOR_REPORT="MLD MAX_ABS_DIFF MIN_SSNR MIN_ODG" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; summary_args="${summary_args} DELTA_ODG"; REPORT_ARG="--delta_odg"; fi + - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; MEASURES_FOR_REPORT="$MEASURES_FOR_REPORT DELTA_ODG"; fi - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k \"not JBM and stereo and at\""; fi - *build-and-create-float-ref-outputs @@ -421,30 +421,20 @@ stages: - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true ### create histograms - - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME $REPORT_ARG - # if split comparison is done, we need to create two pages, one for the "whole file" values and one for the "split" values + - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME --split-csv-file $CSV_ARTIFACT_SPLIT + + # first for "whole" files comparison + - python3 scripts/create_histograms.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT + - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT + - if [ "$SPLIT_COMPARISON" = "true" ]; then - # use -v flag ("inverse") to also have the header in the output file - - grep -v "_whole" $CSV_ARTIFACT_NAME > $CSV_ARTIFACT_SPLIT - - cp $CSV_ARTIFACT_NAME tmp.csv - - grep -v "_split" tmp.csv > $CSV_ARTIFACT_NAME - - mkdir $IMAGES_ARTIFACT_SPLIT - - for MEASURE in $summary_args;do - - python3 scripts/create_histogram_summary.py $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT/summary_"$MEASURE".csv $IMAGES_ARTIFACT_SPLIT/summary_"$MEASURE".png --measure $MEASURE - - done - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_SPLIT --measures $summary_args + - python3 scripts/create_histograms.py $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT --measures $MEASURES_FOR_REPORT + - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_SPLIT $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_SPLIT --measures $MEASURES_FOR_REPORT - else # touch files to suppress warning for missing artifacts - touch $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT - fi - # this part creates the "whole file" histograms - - mkdir $IMAGES_ARTIFACT_NAME - - for MEASURE in $summary_args;do - - python3 scripts/create_histogram_summary.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".csv $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".png --measure $MEASURE; - - done - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $summary_args - - if [ $USE_LTV -eq 1 ] && [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then - id_previous=$(python3 ci/get_id_of_last_job_occurence.py $CI_DEFAULT_BRANCH $CI_JOB_NAME $CI_PROJECT_ID) - echo "Job ID from variables - $CI_JOB_ID, Job ID from script - $id_previous" @@ -486,6 +476,7 @@ stages: - $CSV_ARTIFACT_SPLIT - $MERGED_CSV_ARTIFACT_NAME - $SUMMARY_HTML_ARTIFACT_NAME + - $SUMMARY_HTML_ARTIFACT_SPLIT - $IMAGES_ARTIFACT_NAME - $IMAGES_ARTIFACT_SPLIT expose_as: "pytest compare results" -- GitLab From 4b93dfab26d87fc7c321d3734a141fededc753a1 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 28 Mar 2025 14:37:12 +0100 Subject: [PATCH 160/698] remove format filter again to run whole test suite --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 37bd9c601..6b70851fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -404,7 +404,7 @@ stages: - MEASURES_FOR_REPORT="MLD MAX_ABS_DIFF MIN_SSNR MIN_ODG" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; MEASURES_FOR_REPORT="$MEASURES_FOR_REPORT DELTA_ODG"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; export PYTEST_ADDOPTS="-k \"not JBM and stereo and at\""; fi + - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; fi - *build-and-create-float-ref-outputs -- GitLab From de5e4c1b921998e6239c0e8fedd53db59f733ef0 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 1 Apr 2025 14:11:58 +0200 Subject: [PATCH 161/698] add --write-out-histograms flag --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6b70851fb..75618d54e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -424,11 +424,11 @@ stages: - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME --split-csv-file $CSV_ARTIFACT_SPLIT # first for "whole" files comparison - - python3 scripts/create_histograms.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT + - python3 scripts/create_histograms.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT - if [ "$SPLIT_COMPARISON" = "true" ]; then - - python3 scripts/create_histograms.py $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT --measures $MEASURES_FOR_REPORT + - python3 scripts/create_histograms.py $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT --measures $MEASURES_FOR_REPORT --write-out-histograms - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_SPLIT $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_SPLIT --measures $MEASURES_FOR_REPORT - else # touch files to suppress warning for missing artifacts -- GitLab From 9140ad05bc5806e66a042ed176a39be6be5cf725 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 7 Apr 2025 12:13:38 +0200 Subject: [PATCH 162/698] adapt other uses of parse_xml_report.py to new version --- .gitlab-ci.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 75618d54e..4eb08fe7a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,6 +52,7 @@ variables: FLOAT_REF_COMMIT_FILE: "float-ref-git-sha" CUT_COMMIT_FILE: "CuT-git-sha" MERGE_TARGET_COMMIT_FILE: "merge-target-git-sha" + MEASURES_FOR_REPORT: "MLD MAX_ABS_DIFF MIN_SSNR MIN_ODG" MANUAL_PIPELINE_TYPE: description: "Type for the manual pipeline run. Use 'pytest-compare' to run comparison test against reference float codec." value: 'default' @@ -401,7 +402,8 @@ stages: - comp_args="--mld --ssnr --odg" - - MEASURES_FOR_REPORT="MLD MAX_ABS_DIFF MIN_SSNR MIN_ODG" + - INV_LEVEL_SCALING=$(awk "BEGIN {print 1.0 / $LEVEL_SCALING}") + - comp_args="--mld --ssnr --odg --scalefac $INV_LEVEL_SCALING" - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; MEASURES_FOR_REPORT="$MEASURES_FOR_REPORT DELTA_ODG"; fi - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; fi @@ -667,9 +669,9 @@ stages: # Store branch outputs for comparison - mv tests/dut tests/dut_branch - # create the summary based on the branch - - for MEASURE in MLD DIFF SSNR ODG;do python3 scripts/create_histogram_summary.py $CSV_BRANCH $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".csv $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".png --measure $MEASURE; done - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME + # create the summary based on the branch only + - python3 scripts/create_histograms.py $CSV_BRANCH $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT + - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT ### run main now - git checkout $CI_MERGE_REQUEST_TARGET_BRANCH_NAME -- GitLab From 876c438b3570702e13864c1873b3f5526880c731 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 07:26:02 +0200 Subject: [PATCH 163/698] rename FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 to FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx - deactivate BE macros, they are already in another branch --- lib_com/options.h | 21 ++++++++++----------- lib_dec/swb_tbe_dec_fx.c | 4 ++-- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 54f4ea2d9..3a2a1035f 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -79,17 +79,16 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT -// new speedups -#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | < TODO: check border cases -#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS according pipe -#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | - -#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? - -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | +// new speedups - BE ones already in another branch +//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | +//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS +//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | +//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? Need for a manual test as long as be tests dont work + +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //----------------------------------------------------------------------- // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 36a499f7d..bb0d6f2e0 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7031,13 +7031,13 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); -#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 +#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 #endif FOR( i = 0; i < L_FRAME16k; i++ ) { -#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 +#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word16 idx = 0; move16(); IF( i != 0 ) -- GitLab From ee0587a7120d5c204d0c58968a1ee13b4fedb586 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 07:41:52 +0200 Subject: [PATCH 164/698] added FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic version 1 --- lib_com/options.h | 1 + lib_com/swb_tbe_com_fx.c | 13 +++++++++++++ lib_enc/swb_tbe_enc_fx.c | 12 +++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 571b5edd3..58899a74b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,6 +86,7 @@ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index af52c2564..00c33406d 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6703,14 +6703,22 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic_ + Word16 memory_fx0[4][4], memory_fx[4], Q_temp, Q_temp2; +#else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; +#endif Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; FOR( i = 0; i < 4; i++ ) { memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic_ + memory_fx[i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); +#else memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); +#endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); @@ -7070,7 +7078,12 @@ void synthesise_fb_high_band_fx( Word16 Qout ) { Word16 i, j; +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 excitation_in_interp3_buffer[L_FRAME48k + 4]; + Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4; +#else Word16 excitation_in_interp3[L_FRAME48k]; +#endif Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 316a5b549..ef499ad6a 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7299,13 +7299,18 @@ void fb_tbe_enc_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; - Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_buffer[L_FRAME48k + 4]; + Word16 *input_fhb = &input_fhb_buffer[0] + 4; +#else + Word16 input_fhb[L_FRAME48k]; +#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); @@ -7422,7 +7427,12 @@ void fb_tbe_enc_ivas_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4]; + Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4; +#else Word16 input_fhb_new[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS )]; +#endif Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word64 fb_exc_energy; -- GitLab From feeb6bd7c714e7abcb84cdc35273ad3026a2aad5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 09:35:09 +0200 Subject: [PATCH 165/698] remap memory_fx and memory2_fx - more changes TBD - check BEnes --- lib_com/swb_tbe_com_fx.c | 43 ++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a9fd95434..86765d156 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6704,20 +6704,27 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic_ - Word16 memory_fx0[4][4], memory_fx[4], Q_temp, Q_temp2; +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 memory_fx0, Q_temp, Q_temp2; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output[L_FRAME48k], L_tmpX, L_tmpMax; + + Word32 *L_tmp = &L_tmp_buffer[4]; + Word32 *L_tmp2 = &L_tmp2_buffer[4]; + Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; + Word16 *memory_fx = &input_fx[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; -#endif Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; +#endif Word32 memory2_fx_2[4], memory2_fx_3[4]; FOR( i = 0; i < 4; i++ ) { - memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic_ - memory_fx[i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + memory_fx0 = extract_l( memory_fx2[0][i] ); + memory_fx[i] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); #else + memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); #endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); @@ -6730,20 +6737,34 @@ void elliptic_bpf_48k_generic_fx( move32(); } +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( memory_fx[0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6752,8 +6773,13 @@ void elliptic_bpf_48k_generic_fx( L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6762,7 +6788,12 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +#endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 48a64bc5d6b5c35c1ec4d2686d7a1bc264a442ff Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 11:06:24 +0200 Subject: [PATCH 166/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 86765d156..bef75e4bf 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6743,11 +6743,11 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6761,10 +6761,10 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6777,8 +6777,8 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6792,7 +6792,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ #else - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ #endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 78aa1b4bb67c5ee28aba0f7c65c2741f6a023b96 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 11:12:41 +0200 Subject: [PATCH 167/698] remapping of memory2_fx_2 and memory2_fx_3 --- lib_com/swb_tbe_com_fx.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bef75e4bf..eda963d23 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6706,17 +6706,21 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output[L_FRAME48k], L_tmpX, L_tmpMax; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; Word16 *memory_fx = &input_fx[-4]; + Word32 *memory2_fx_2 = &L_tmp2[-4]; + Word32 *L_output = &L_output_buffer[0]; + Word32 *memory2_fx_3 = &L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; -#endif Word32 memory2_fx_2[4], memory2_fx_3[4]; +#endif + FOR( i = 0; i < 4; i++ ) { -- GitLab From 95d1adb8639be170b79c9be0f281b81c3d0c2a27 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 12:54:40 +0200 Subject: [PATCH 168/698] delete memory2_fx, memory_fx, memory2_fx_2, memory2_fx_3 --- lib_com/swb_tbe_com_fx.c | 241 ++++++++++++++++++++++++++++++++------- 1 file changed, 201 insertions(+), 40 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index eda963d23..e6ee1d5c3 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6695,7 +6695,11 @@ void wb_tbe_extras_reset_synth_fx( *-------------------------------------------------------------------*/ void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ @@ -6710,11 +6714,11 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; - Word16 *memory_fx = &input_fx[-4]; - Word32 *memory2_fx_2 = &L_tmp2[-4]; + //Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; + //Word16 *memory_fx = &input_fx[-4]; + //Word32 *memory2_fx_2 = &L_tmp2[-4]; Word32 *L_output = &L_output_buffer[0]; - Word32 *memory2_fx_3 = &L_output[-4]; + //Word32 *memory2_fx_3 = &L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6726,14 +6730,17 @@ void elliptic_bpf_48k_generic_fx( { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); - memory_fx[i] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); + input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); -#endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); +#endif move32(); move32(); move32(); @@ -6742,71 +6749,103 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif + + #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -#endif - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif + #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig test(); @@ -6903,6 +6942,18 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + move32(); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6913,6 +6964,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); +#endif + + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); +#else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6924,6 +6991,20 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); +#endif + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); +#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6935,6 +7016,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); +#endif + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6947,6 +7044,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#endif + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6977,12 +7076,31 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); +#else + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); +#endif move32(); move32(); } +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + move32(); + L_tmpMax = L_abs( L_output[0] ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -6994,7 +7112,21 @@ void elliptic_bpf_48k_generic_fx( L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7006,7 +7138,21 @@ void elliptic_bpf_48k_generic_fx( L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7018,7 +7164,21 @@ void elliptic_bpf_48k_generic_fx( L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7030,6 +7190,7 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#endif FOR( i = 4; i < L_FRAME48k; i++ ) { -- GitLab From 997c2e89ac3bba53c78862977722e94a950ed2b4 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 12:56:32 +0200 Subject: [PATCH 169/698] fix error conflicting types --- lib_com/prot_fx.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1452d8e2e..13b6fe2d8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,11 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( - const Word16 input_fx[], /* i : i signal Q_input_fx */ +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else + const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ -- GitLab From 9bc5392af628dd9716f787c74554dc9e7820521e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 13:14:17 +0200 Subject: [PATCH 170/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 197 +++++++++++++++++++-------------------- 1 file changed, 98 insertions(+), 99 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e6ee1d5c3..10177bca7 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6714,11 +6714,11 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - //Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; - //Word16 *memory_fx = &input_fx[-4]; - //Word32 *memory2_fx_2 = &L_tmp2[-4]; + // Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; + // Word16 *memory_fx = &input_fx[-4]; + // Word32 *memory2_fx_2 = &L_tmp2[-4]; Word32 *L_output = &L_output_buffer[0]; - //Word32 *memory2_fx_3 = &L_output[-4]; + // Word32 *memory2_fx_3 = &L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6733,7 +6733,7 @@ void elliptic_bpf_48k_generic_fx( input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); @@ -6749,22 +6749,22 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6773,23 +6773,23 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6797,51 +6797,50 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #endif - #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #endif @@ -6943,15 +6942,15 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6969,15 +6968,15 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); #else L_tmpMax = L_abs( L_tmp2[0] ); @@ -6995,14 +6994,14 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); #else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); @@ -7020,15 +7019,15 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); #else @@ -7079,11 +7078,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + move32(); #else - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); #endif move32(); move32(); @@ -7117,13 +7116,13 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); #else -- GitLab From f4efc581ee3386141a7b4ba83ab4430138d76fba Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 13:40:44 +0200 Subject: [PATCH 171/698] Revert "clang format patch" This reverts commit 9bc5392af628dd9716f787c74554dc9e7820521e. --- lib_com/swb_tbe_com_fx.c | 197 ++++++++++++++++++++------------------- 1 file changed, 99 insertions(+), 98 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 10177bca7..e6ee1d5c3 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6714,11 +6714,11 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - // Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; - // Word16 *memory_fx = &input_fx[-4]; - // Word32 *memory2_fx_2 = &L_tmp2[-4]; + //Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; + //Word16 *memory_fx = &input_fx[-4]; + //Word32 *memory2_fx_2 = &L_tmp2[-4]; Word32 *L_output = &L_output_buffer[0]; - // Word32 *memory2_fx_3 = &L_output[-4]; + //Word32 *memory2_fx_3 = &L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6733,7 +6733,7 @@ void elliptic_bpf_48k_generic_fx( input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? + //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); @@ -6749,22 +6749,22 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6773,23 +6773,23 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6797,50 +6797,51 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #endif + #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #endif @@ -6942,15 +6943,15 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6968,15 +6969,15 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); #else L_tmpMax = L_abs( L_tmp2[0] ); @@ -6994,14 +6995,14 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); #else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); @@ -7019,15 +7020,15 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); #else @@ -7078,11 +7079,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + move32(); #else - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); #endif move32(); move32(); @@ -7116,13 +7117,13 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); #else -- GitLab From 9781a471204e1ebcf521ab1b74300f72b806eca5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 13:40:54 +0200 Subject: [PATCH 172/698] Revert "fix error conflicting types" This reverts commit 997c2e89ac3bba53c78862977722e94a950ed2b4. --- lib_com/prot_fx.h | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 13b6fe2d8..1452d8e2e 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,11 +3258,7 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif + const Word16 input_fx[], /* i : i signal Q_input_fx */ Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ -- GitLab From 5a6b1cccab516d7f7b2b8b0cf7526e57119273bf Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 13:41:11 +0200 Subject: [PATCH 173/698] Revert "delete memory2_fx, memory_fx, memory2_fx_2, memory2_fx_3" This reverts commit 95d1adb8639be170b79c9be0f281b81c3d0c2a27. --- lib_com/swb_tbe_com_fx.c | 241 +++++++-------------------------------- 1 file changed, 40 insertions(+), 201 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e6ee1d5c3..eda963d23 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6695,11 +6695,7 @@ void wb_tbe_extras_reset_synth_fx( *-------------------------------------------------------------------*/ void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ @@ -6714,11 +6710,11 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - //Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; - //Word16 *memory_fx = &input_fx[-4]; - //Word32 *memory2_fx_2 = &L_tmp2[-4]; + Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; + Word16 *memory_fx = &input_fx[-4]; + Word32 *memory2_fx_2 = &L_tmp2[-4]; Word32 *L_output = &L_output_buffer[0]; - //Word32 *memory2_fx_3 = &L_output[-4]; + Word32 *memory2_fx_3 = &L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6730,17 +6726,14 @@ void elliptic_bpf_48k_generic_fx( { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); - input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); - L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? + memory_fx[i] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); +#endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); -#endif move32(); move32(); move32(); @@ -6749,103 +6742,71 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif - - #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif - #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig test(); @@ -6942,18 +6903,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - move32(); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6964,22 +6913,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); -#endif - - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); -#else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6991,20 +6924,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); -#endif - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); -#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7016,22 +6935,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); -#endif - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7044,8 +6947,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#endif - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7076,31 +6977,12 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); -#else - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); -#endif + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); move32(); move32(); } -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - move32(); - L_tmpMax = L_abs( L_output[0] ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7112,21 +6994,7 @@ void elliptic_bpf_48k_generic_fx( L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7138,21 +7006,7 @@ void elliptic_bpf_48k_generic_fx( L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7164,21 +7018,7 @@ void elliptic_bpf_48k_generic_fx( L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7190,7 +7030,6 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#endif FOR( i = 4; i < L_FRAME48k; i++ ) { -- GitLab From 425a67b9280368e30cd32f97f725814e26fe8776 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 13:41:29 +0200 Subject: [PATCH 174/698] Revert "remapping of memory2_fx_2 and memory2_fx_3" This reverts commit 78aa1b4bb67c5ee28aba0f7c65c2741f6a023b96. --- lib_com/swb_tbe_com_fx.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index eda963d23..bef75e4bf 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6706,21 +6706,17 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output[L_FRAME48k], L_tmpX, L_tmpMax; Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; Word16 *memory_fx = &input_fx[-4]; - Word32 *memory2_fx_2 = &L_tmp2[-4]; - Word32 *L_output = &L_output_buffer[0]; - Word32 *memory2_fx_3 = &L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; - Word32 memory2_fx_2[4], memory2_fx_3[4]; #endif - + Word32 memory2_fx_2[4], memory2_fx_3[4]; FOR( i = 0; i < 4; i++ ) { -- GitLab From 205dcb45d5f71f507499708379d056e7069e7b27 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 12:56:32 +0200 Subject: [PATCH 175/698] fix error conflicting types --- lib_com/prot_fx.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1452d8e2e..13b6fe2d8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,11 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( - const Word16 input_fx[], /* i : i signal Q_input_fx */ +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else + const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ -- GitLab From fc8d9864050fa076cccdba719213097ba40cb59c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 13:47:52 +0200 Subject: [PATCH 176/698] follow-up : fix conflicting types --- lib_com/swb_tbe_com_fx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bef75e4bf..d75cae8fc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6695,7 +6695,11 @@ void wb_tbe_extras_reset_synth_fx( *-------------------------------------------------------------------*/ void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ -- GitLab From ff5630499370c5ab37bdcad83a4ae000a19d5d80 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:02:40 +0200 Subject: [PATCH 177/698] fix segfault --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d75cae8fc..5fc7588fd 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6733,7 +6733,7 @@ void elliptic_bpf_48k_generic_fx( #endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); -- GitLab From c52dbd20ab98074c0e5f1b470334f4ee918cfadc Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:07:02 +0200 Subject: [PATCH 178/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5fc7588fd..5e3eb007f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6733,7 +6733,7 @@ void elliptic_bpf_48k_generic_fx( #endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); -- GitLab From 91bc9889207580a123c2e561e2a4a6e8e8e6824c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 12:54:40 +0200 Subject: [PATCH 179/698] delete memory2_fx, memory_fx, memory2_fx_2, memory2_fx_3 --- lib_com/swb_tbe_com_fx.c | 235 ++++++++++++++++++++++++++++++++------- 1 file changed, 195 insertions(+), 40 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5e3eb007f..e620290c4 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6710,12 +6710,11 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output[L_FRAME48k], L_tmpX, L_tmpMax; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; - Word16 *memory_fx = &input_fx[-4]; + Word32 *L_output = &L_output_buffer[0]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6726,14 +6725,16 @@ void elliptic_bpf_48k_generic_fx( { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); - memory_fx[i] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); + input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); -#endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? +#endif move32(); move32(); move32(); @@ -6742,71 +6743,103 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif + + #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -#endif - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif + #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig test(); @@ -6903,6 +6936,18 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + move32(); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6913,6 +6958,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); +#endif + + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); +#else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6924,6 +6985,20 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); +#endif + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); +#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6935,6 +7010,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); +#endif + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6947,6 +7038,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#endif + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6977,12 +7070,31 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); +#else + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); +#endif move32(); move32(); } +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + move32(); + L_tmpMax = L_abs( L_output[0] ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -6994,7 +7106,21 @@ void elliptic_bpf_48k_generic_fx( L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7006,7 +7132,21 @@ void elliptic_bpf_48k_generic_fx( L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7018,7 +7158,21 @@ void elliptic_bpf_48k_generic_fx( L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7030,6 +7184,7 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#endif FOR( i = 4; i < L_FRAME48k; i++ ) { -- GitLab From f1d1be180b1b22ef1c677427589c3b4c307c3a05 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:37:18 +0200 Subject: [PATCH 180/698] reintegrate loops, cleaning tbd --- lib_com/swb_tbe_com_fx.c | 268 ++++++++++++++++++++------------------- 1 file changed, 140 insertions(+), 128 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e620290c4..eb8626354 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6743,16 +6743,16 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + //L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6767,16 +6767,16 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + //L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6791,16 +6791,16 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + //L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6817,16 +6817,16 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + //L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6841,7 +6841,7 @@ void elliptic_bpf_48k_generic_fx( #endif -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig +#if defiend( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) test(); IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { @@ -6912,7 +6912,11 @@ void elliptic_bpf_48k_generic_fx( ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ { +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + FOR( i = 0; i < L_FRAME48k; i++ ) +#else FOR( i = 4; i < L_FRAME48k; i++ ) +#endif { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6937,16 +6941,16 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - move32(); + //L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + //L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + //move32(); #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6962,17 +6966,17 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); + //L_tmpMax = L_abs( L_tmp2[0] ); + //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //move32(); #else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6988,16 +6992,16 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + //L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //move32(); #else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7013,18 +7017,18 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); #else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7040,7 +7044,11 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); #endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + FOR( i = 0; i < L_FRAME48k; i++ ) +#else FOR( i = 4; i < L_FRAME48k; i++ ) +#endif { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7083,17 +7091,17 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - move32(); - L_tmpMax = L_abs( L_output[0] ); + //L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //move32(); + //L_tmpMax = L_abs( L_output[0] ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7109,17 +7117,17 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + //L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7135,17 +7143,17 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + //L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + //L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7161,17 +7169,17 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + //L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7186,7 +7194,11 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); #endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + FOR( i = 0; i < L_FRAME48k; i++ ) +#else FOR( i = 4; i < L_FRAME48k; i++ ) +#endif { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ -- GitLab From 7cf8b43a129509dafe5057e33dbea7dbb2d9b720 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:41:07 +0200 Subject: [PATCH 181/698] clean up reintegratd loops - tbd: make upsempledsig macro work again --- lib_com/swb_tbe_com_fx.c | 111 ++------------------------------------- 1 file changed, 3 insertions(+), 108 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index eb8626354..5702ef0f2 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6742,18 +6742,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); -#else +#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6764,20 +6753,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); -#else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6788,20 +6764,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); -#else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6812,22 +6775,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif - - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); -#else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6940,18 +6888,8 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - //L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - //move32(); -#else + +#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6962,22 +6900,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); -#endif - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpMax = L_abs( L_tmp2[0] ); - //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //move32(); -#else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6989,20 +6912,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - //L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //move32(); -#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7014,22 +6924,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -- GitLab From 0aa63c3ff3ea9d0fbbf507050019fd5e9ce048ab Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:46:16 +0200 Subject: [PATCH 182/698] make upsempledsig macro work again - tbd: cleanup --- lib_com/swb_tbe_com_fx.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5702ef0f2..7ddd76842 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6866,6 +6866,18 @@ void elliptic_bpf_48k_generic_fx( FOR( i = 4; i < L_FRAME48k; i++ ) #endif { +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); +#else L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6876,6 +6888,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif } } -- GitLab From efe4596efd93a8668e536d65c9f8f746ffbd8908 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:50:41 +0200 Subject: [PATCH 183/698] more reintegrating loops and cleaning up - also fix - TBD: make upsampled work again - select only for correct filters --- lib_com/swb_tbe_com_fx.c | 56 +--------------------------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 7ddd76842..bdc947c7e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6998,19 +6998,7 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //move32(); - //L_tmpMax = L_abs( L_output[0] ); -#else +#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7022,21 +7010,7 @@ void elliptic_bpf_48k_generic_fx( L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7048,21 +7022,7 @@ void elliptic_bpf_48k_generic_fx( L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - //L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7074,21 +7034,7 @@ void elliptic_bpf_48k_generic_fx( L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 3ad6e7e543ea7a6bfffbcb8032eb067b24c40c7f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:54:27 +0200 Subject: [PATCH 184/698] make upsampled work again - select only for correct filters --- lib_com/swb_tbe_com_fx.c | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bdc947c7e..3544cab74 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6859,6 +6859,10 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ + +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic FOR( i = 0; i < L_FRAME48k; i++ ) @@ -6866,18 +6870,27 @@ void elliptic_bpf_48k_generic_fx( FOR( i = 4; i < L_FRAME48k; i++ ) #endif { -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + } + } + ELSE +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ + { +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + FOR( i = 0; i < L_FRAME48k; i++ ) #else + FOR( i = 4; i < L_FRAME48k; i++ ) +#endif + { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6888,10 +6901,11 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif } } + + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; -- GitLab From 707c22919241ee73a0313d49b041e560a7a97919 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 15:57:38 +0200 Subject: [PATCH 185/698] clang format patch and fix preproc cmd --- lib_com/swb_tbe_com_fx.c | 69 ++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 3544cab74..bf425c066 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6733,7 +6733,7 @@ void elliptic_bpf_48k_generic_fx( memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); // useless? #endif move32(); move32(); @@ -6743,53 +6743,53 @@ void elliptic_bpf_48k_generic_fx( } #ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #endif -#if defiend( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) +#if defined( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) test(); IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { @@ -6859,9 +6859,9 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - + #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); + test(); IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic @@ -6905,7 +6905,6 @@ void elliptic_bpf_48k_generic_fx( } - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; @@ -7003,11 +7002,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + move32(); #else - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); #endif move32(); move32(); -- GitLab From 97c8d64e0605051e876f31e6babc3dc5fcd21d06 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 16:11:13 +0200 Subject: [PATCH 186/698] fix unused variable error --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bf425c066..4d22dda27 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6718,8 +6718,8 @@ void elliptic_bpf_48k_generic_fx( #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; -#endif Word32 memory2_fx_2[4], memory2_fx_3[4]; +#endif FOR( i = 0; i < 4; i++ ) { -- GitLab From 7c29e0fcda0a77f713dd7814cce8c1464bc0cf8d Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 8 Apr 2025 16:24:21 +0200 Subject: [PATCH 187/698] replace non-intuitive condition by intuitive one --- lib_com/prot_fx.h | 4 ++++ lib_com/swb_tbe_com_fx.c | 32 +++++++++++++++++++++----------- lib_enc/swb_tbe_enc_fx.c | 18 +++++++++++++++--- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 13b6fe2d8..c1ff2895b 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3268,6 +3268,10 @@ void elliptic_bpf_48k_generic_fx( Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ Word16 memory_fx_Q[], const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + , + const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ +#endif ); void synthesise_fb_high_band_fx( diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 4d22dda27..259680930 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,15 +6696,19 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fx[], /* i : input signal Q_input_fx*/ + Word16 input_fx[], /* i : input signal Q_input_fx*/ #else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ + const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif Word16 *Q_input_fx, - Word16 output_fx[], /* o : output signal memory_fx_Q */ - Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ + Word16 output_fx[], /* o : output signal memory_fx_Q */ + Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ Word16 memory_fx_Q[], - const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ + const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + , + const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ +#endif ) { Word16 i, j; @@ -6790,8 +6794,7 @@ void elliptic_bpf_48k_generic_fx( #if defined( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + IF( isUpsampledBy3 ) { i = 4; L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ @@ -6861,8 +6864,7 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) + IF( isUpsampledBy3 ) { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic FOR( i = 0; i < L_FRAME48k; i++ ) @@ -7178,12 +7180,20 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + , 1 +#endif + ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + ,1 +#endif + ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index ef499ad6a..707b0b5f8 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,7 +7330,11 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + ,0 +#endif + ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7459,11 +7463,19 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + ,0 +#endif + ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + ,0 +#endif + ); } test(); -- GitLab From de9181e67e6964e6247aae01f2ebfa50e06325ee Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 07:33:51 +0200 Subject: [PATCH 188/698] fic FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig/FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic, deactivate both --- lib_com/options.h | 4 +-- lib_com/swb_tbe_com_fx.c | 78 +++++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 58899a74b..27d728add 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -85,8 +85,8 @@ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ +//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | +//#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 259680930..2099087e2 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6862,51 +6862,63 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - IF( isUpsampledBy3 ) { +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + IF( isUpsampledBy3 ) + { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k; i++ ) + { + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } #else - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } #endif - { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); } - } - ELSE + ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - { + { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k; i++ ) #else - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR( i = 4; i < L_FRAME48k; i++ ) #endif - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } } } - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; -- GitLab From 94f1b674fd648b93a0914289537ac5c4df79e9ec Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 07:37:44 +0200 Subject: [PATCH 189/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 34 ++++++++++++++++++---------------- lib_enc/swb_tbe_enc_fx.c | 21 ++++++++++++--------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2099087e2..63cda170f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,18 +6696,18 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fx[], /* i : input signal Q_input_fx*/ + Word16 input_fx[], /* i : input signal Q_input_fx*/ #else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ + const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif Word16 *Q_input_fx, - Word16 output_fx[], /* o : output signal memory_fx_Q */ - Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ + Word16 output_fx[], /* o : output signal memory_fx_Q */ + Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ Word16 memory_fx_Q[], - const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ + const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig , - const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ + const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ #endif ) { @@ -6883,14 +6883,14 @@ void elliptic_bpf_48k_generic_fx( #else FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } @@ -7194,17 +7194,19 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , 1 -#endif + , + 1 +#endif ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,1 -#endif + , + 1 +#endif ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 707b0b5f8..4b0f5af57 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,10 +7330,11 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,0 -#endif + , + 0 +#endif ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; @@ -7463,18 +7464,20 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,0 -#endif + , + 0 +#endif ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,0 -#endif + , + 0 +#endif ); } -- GitLab From a28eea915544f8fe15aff0a3be34ab2128933c57 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 08:35:28 +0200 Subject: [PATCH 190/698] activate FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 27d728add..8f0573deb 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,7 +86,7 @@ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ +#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? -- GitLab From 563f5f5b326993e31557ddde5091dcfb24083f34 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:09:56 +0200 Subject: [PATCH 191/698] Revert "activate FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic" This reverts commit a28eea915544f8fe15aff0a3be34ab2128933c57. --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 8f0573deb..27d728add 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,7 +86,7 @@ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ +//#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? -- GitLab From 9a9bad211d9169230953123b80d8fa9b054228b5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:05 +0200 Subject: [PATCH 192/698] Revert "clang format patch" This reverts commit 94f1b674fd648b93a0914289537ac5c4df79e9ec. --- lib_com/swb_tbe_com_fx.c | 34 ++++++++++++++++------------------ lib_enc/swb_tbe_enc_fx.c | 21 +++++++++------------ 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 63cda170f..2099087e2 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,18 +6696,18 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fx[], /* i : input signal Q_input_fx*/ + Word16 input_fx[], /* i : input signal Q_input_fx*/ #else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ + const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif Word16 *Q_input_fx, - Word16 output_fx[], /* o : output signal memory_fx_Q */ - Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ + Word16 output_fx[], /* o : output signal memory_fx_Q */ + Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ Word16 memory_fx_Q[], - const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ + const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig , - const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ + const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ #endif ) { @@ -6883,14 +6883,14 @@ void elliptic_bpf_48k_generic_fx( #else FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } @@ -7194,19 +7194,17 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , - 1 -#endif + , 1 +#endif ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , - 1 -#endif + ,1 +#endif ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 4b0f5af57..707b0b5f8 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,11 +7330,10 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , - 0 -#endif + ,0 +#endif ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; @@ -7464,20 +7463,18 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , - 0 -#endif + ,0 +#endif ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , - 0 -#endif + ,0 +#endif ); } -- GitLab From bddbb00d9d9c3361c1a2ee4fc0c7736c7e5ad6bb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:14 +0200 Subject: [PATCH 193/698] Revert "fic FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig/FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic, deactivate both" This reverts commit de9181e67e6964e6247aae01f2ebfa50e06325ee. --- lib_com/options.h | 4 +-- lib_com/swb_tbe_com_fx.c | 78 +++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 47 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 27d728add..58899a74b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -85,8 +85,8 @@ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | +#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2099087e2..259680930 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6862,63 +6862,51 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - { + #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - IF( isUpsampledBy3 ) - { + IF( isUpsampledBy3 ) + { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) - { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + FOR( i = 0; i < L_FRAME48k; i++ ) #else - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + FOR( i = 4; i < L_FRAME48k; i++ ) #endif + { + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); } - ELSE + } + ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - { + { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k; i++ ) #else - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR( i = 4; i < L_FRAME48k; i++ ) #endif - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); } } + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; -- GitLab From e19417766ac4ba1fcd699d141d6a9466c040fbd9 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:21 +0200 Subject: [PATCH 194/698] Revert "replace non-intuitive condition by intuitive one" This reverts commit 7c29e0fcda0a77f713dd7814cce8c1464bc0cf8d. --- lib_com/prot_fx.h | 4 ---- lib_com/swb_tbe_com_fx.c | 32 +++++++++++--------------------- lib_enc/swb_tbe_enc_fx.c | 18 +++--------------- 3 files changed, 14 insertions(+), 40 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index c1ff2895b..13b6fe2d8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3268,10 +3268,6 @@ void elliptic_bpf_48k_generic_fx( Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ Word16 memory_fx_Q[], const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , - const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ -#endif ); void synthesise_fb_high_band_fx( diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 259680930..4d22dda27 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,19 +6696,15 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fx[], /* i : input signal Q_input_fx*/ + Word16 input_fx[], /* i : input signal Q_input_fx*/ #else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ + const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif Word16 *Q_input_fx, - Word16 output_fx[], /* o : output signal memory_fx_Q */ - Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ + Word16 output_fx[], /* o : output signal memory_fx_Q */ + Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ Word16 memory_fx_Q[], - const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , - const int isUpsampledBy3 /* i : input signal is upsampled by factor 3 by inserting zeros */ -#endif + const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ) { Word16 i, j; @@ -6794,7 +6790,8 @@ void elliptic_bpf_48k_generic_fx( #if defined( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) - IF( isUpsampledBy3 ) + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { i = 4; L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ @@ -6864,7 +6861,8 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - IF( isUpsampledBy3 ) + test(); + IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic FOR( i = 0; i < L_FRAME48k; i++ ) @@ -7180,20 +7178,12 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - , 1 -#endif - ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,1 -#endif - ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 707b0b5f8..ef499ad6a 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,11 +7330,7 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,0 -#endif - ); + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7463,19 +7459,11 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,0 -#endif - ); + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - ,0 -#endif - ); + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From 2c9293c346144dca73a6c31682d4b026970ea1c3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:29 +0200 Subject: [PATCH 195/698] Revert "fix unused variable error" This reverts commit 97c8d64e0605051e876f31e6babc3dc5fcd21d06. --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 4d22dda27..bf425c066 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6718,8 +6718,8 @@ void elliptic_bpf_48k_generic_fx( #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; - Word32 memory2_fx_2[4], memory2_fx_3[4]; #endif + Word32 memory2_fx_2[4], memory2_fx_3[4]; FOR( i = 0; i < 4; i++ ) { -- GitLab From adaae746412c624118fa7efa0b74fdc4a7991388 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:35 +0200 Subject: [PATCH 196/698] Revert "clang format patch and fix preproc cmd" This reverts commit 707c22919241ee73a0313d49b041e560a7a97919. --- lib_com/swb_tbe_com_fx.c | 69 ++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bf425c066..3544cab74 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6733,7 +6733,7 @@ void elliptic_bpf_48k_generic_fx( memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); // useless? + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? #endif move32(); move32(); @@ -6743,53 +6743,53 @@ void elliptic_bpf_48k_generic_fx( } #ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #endif -#if defined( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) +#if defiend( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) test(); IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { @@ -6859,9 +6859,9 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - + #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); + test(); IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic @@ -6905,6 +6905,7 @@ void elliptic_bpf_48k_generic_fx( } + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; @@ -7002,11 +7003,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + move32(); #else - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); #endif move32(); move32(); -- GitLab From da263e0a8b21315afa6d995f8e1d4522f91ee82f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:45 +0200 Subject: [PATCH 197/698] Revert "make upsampled work again - select only for correct filters" This reverts commit 3ad6e7e543ea7a6bfffbcb8032eb067b24c40c7f. --- lib_com/swb_tbe_com_fx.c | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 3544cab74..bdc947c7e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6859,10 +6859,6 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic FOR( i = 0; i < L_FRAME48k; i++ ) @@ -6870,27 +6866,18 @@ void elliptic_bpf_48k_generic_fx( FOR( i = 4; i < L_FRAME48k; i++ ) #endif { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ - { -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) #else - FOR( i = 4; i < L_FRAME48k; i++ ) -#endif - { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6901,11 +6888,10 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif } } - - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; -- GitLab From fe148b9c1ce20f1456aa5b13b82c30c557ad4ac3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:51 +0200 Subject: [PATCH 198/698] Revert "more reintegrating loops and cleaning up - also fix - TBD: make upsampled work again - select only for correct filters" This reverts commit efe4596efd93a8668e536d65c9f8f746ffbd8908. --- lib_com/swb_tbe_com_fx.c | 56 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bdc947c7e..7ddd76842 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6998,7 +6998,19 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } -#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + //move32(); + //L_tmpMax = L_abs( L_output[0] ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7010,7 +7022,21 @@ void elliptic_bpf_48k_generic_fx( L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7022,7 +7048,21 @@ void elliptic_bpf_48k_generic_fx( L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + //L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7034,7 +7074,21 @@ void elliptic_bpf_48k_generic_fx( L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 6593f4f1f1cc2f0adec85ce2ef15418d4294af91 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:10:57 +0200 Subject: [PATCH 199/698] Revert "make upsempledsig macro work again - tbd: cleanup" This reverts commit 0aa63c3ff3ea9d0fbbf507050019fd5e9ce048ab. --- lib_com/swb_tbe_com_fx.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 7ddd76842..5702ef0f2 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6866,18 +6866,6 @@ void elliptic_bpf_48k_generic_fx( FOR( i = 4; i < L_FRAME48k; i++ ) #endif { -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); -#else L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6888,7 +6876,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif } } -- GitLab From ee542585bb8b2d205f2892f4081e60bc5deae1ec Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:11:03 +0200 Subject: [PATCH 200/698] Revert "clean up reintegratd loops - tbd: make upsempledsig macro work again" This reverts commit 7cf8b43a129509dafe5057e33dbea7dbb2d9b720. --- lib_com/swb_tbe_com_fx.c | 111 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 108 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5702ef0f2..eb8626354 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6742,7 +6742,18 @@ void elliptic_bpf_48k_generic_fx( move32(); } -#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); +#else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6753,7 +6764,20 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); +#else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6764,7 +6788,20 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); +#else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6775,7 +6812,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif + + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //move32(); +#else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6888,8 +6940,18 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - -#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + //L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + //move32(); +#else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6900,7 +6962,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); +#endif + +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpMax = L_abs( L_tmp2[0] ); + //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //move32(); +#else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6912,7 +6989,20 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + //L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //move32(); +#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6924,7 +7014,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); +#endif +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + //L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + //move32(); + //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -- GitLab From 6c53bd6ea8f8fb08246f081402a687defd0f07e1 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:11:10 +0200 Subject: [PATCH 201/698] Revert "reintegrate loops, cleaning tbd" This reverts commit f1d1be180b1b22ef1c677427589c3b4c307c3a05. --- lib_com/swb_tbe_com_fx.c | 268 +++++++++++++++++++-------------------- 1 file changed, 128 insertions(+), 140 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index eb8626354..e620290c4 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6743,16 +6743,16 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6767,16 +6767,16 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6791,16 +6791,16 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6817,16 +6817,16 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //move32(); + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6841,7 +6841,7 @@ void elliptic_bpf_48k_generic_fx( #endif -#if defiend( FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig ) && !defined( FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic ) +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig test(); IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) { @@ -6912,11 +6912,7 @@ void elliptic_bpf_48k_generic_fx( ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ { -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) -#else FOR( i = 4; i < L_FRAME48k; i++ ) -#endif { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6941,16 +6937,16 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - //L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - //move32(); + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + move32(); #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6966,17 +6962,17 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpMax = L_abs( L_tmp2[0] ); - //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //move32(); + L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); #else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6992,16 +6988,16 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - //L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); #else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7017,18 +7013,18 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - //L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - //L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); #else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7044,11 +7040,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); #endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) -#else FOR( i = 4; i < L_FRAME48k; i++ ) -#endif { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7091,17 +7083,17 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - //move32(); - //L_tmpMax = L_abs( L_output[0] ); + L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + move32(); + L_tmpMax = L_abs( L_output[0] ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7117,17 +7109,17 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7143,17 +7135,17 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - //L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7169,17 +7161,17 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - //L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - //move32(); - //L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7194,11 +7186,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); #endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < L_FRAME48k; i++ ) -#else FOR( i = 4; i < L_FRAME48k; i++ ) -#endif { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ -- GitLab From 5f3aadb59778bf164c5684ef69b66cc9a8617f40 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:11:17 +0200 Subject: [PATCH 202/698] Revert "delete memory2_fx, memory_fx, memory2_fx_2, memory2_fx_3" This reverts commit 91bc9889207580a123c2e561e2a4a6e8e8e6824c. --- lib_com/swb_tbe_com_fx.c | 235 +++++++-------------------------------- 1 file changed, 40 insertions(+), 195 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e620290c4..5e3eb007f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6710,11 +6710,12 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output[L_FRAME48k], L_tmpX, L_tmpMax; Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *L_output = &L_output_buffer[0]; + Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; + Word16 *memory_fx = &input_fx[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6725,16 +6726,14 @@ void elliptic_bpf_48k_generic_fx( { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); - input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); - L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + memory_fx[i] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); +#endif memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //useless? -#endif + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -6743,103 +6742,71 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif - - #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif - #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig test(); @@ -6936,18 +6903,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - move32(); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6958,22 +6913,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); -#endif - - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); -#else L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6985,20 +6924,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); -#endif - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); -#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7010,22 +6935,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); -#endif - -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#else L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7038,8 +6947,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#endif - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7070,31 +6977,12 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); -#else - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); -#endif + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); move32(); move32(); } -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - move32(); - L_tmpMax = L_abs( L_output[0] ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7106,21 +6994,7 @@ void elliptic_bpf_48k_generic_fx( L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7132,21 +7006,7 @@ void elliptic_bpf_48k_generic_fx( L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7158,21 +7018,7 @@ void elliptic_bpf_48k_generic_fx( L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); -#endif -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7184,7 +7030,6 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#endif FOR( i = 4; i < L_FRAME48k; i++ ) { -- GitLab From 8ea93bb69f1479cfcca377cf931dd8ce0611732f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:17:05 +0200 Subject: [PATCH 203/698] replace memory2_fx[1] by L_tmp[-4] --- lib_com/swb_tbe_com_fx.c | 42 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5e3eb007f..d84be8fcc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6731,7 +6731,7 @@ void elliptic_bpf_48k_generic_fx( memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); #endif - memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); @@ -6753,10 +6753,10 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); @@ -6772,9 +6772,9 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic @@ -6789,8 +6789,8 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic @@ -6805,7 +6805,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig @@ -6903,10 +6903,10 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ @@ -6914,9 +6914,9 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ @@ -6925,8 +6925,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6936,7 +6936,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -- GitLab From 4bd709768e353df914f49fc625cc68c86dcb786f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:21:47 +0200 Subject: [PATCH 204/698] delete memory2_fx[] --- lib_com/swb_tbe_com_fx.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d84be8fcc..fa3293f31 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6714,7 +6714,6 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *memory2_fx[3] = { NULL, &L_tmp[-4], &L_tmp2[-4] }; Word16 *memory_fx = &input_fx[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; @@ -6732,7 +6731,7 @@ void elliptic_bpf_48k_generic_fx( memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); #endif L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); @@ -6908,10 +6907,10 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); L_tmpMax = L_abs( L_tmp2[0] ); L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6920,9 +6919,9 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); L_tmpX = L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6932,8 +6931,8 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6944,7 +6943,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); FOR( i = 4; i < L_FRAME48k; i++ ) -- GitLab From 2e44a40ee0c3a13df76efa757ca09779d2aa69c8 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:27:49 +0200 Subject: [PATCH 205/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 128 +++++++++++++++++++-------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index fa3293f31..c14877c2a 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6750,12 +6750,12 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); @@ -6767,13 +6767,13 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic @@ -6783,13 +6783,13 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #endif - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic @@ -6797,14 +6797,14 @@ void elliptic_bpf_48k_generic_fx( #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ #endif - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig @@ -6902,48 +6902,48 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); FOR( i = 4; i < L_FRAME48k; i++ ) -- GitLab From 8bf813ae7b6bfbe7df581c6287a621220c80d125 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:28:39 +0200 Subject: [PATCH 206/698] replace memory_fx by input_fx[-4] and delete memory_fx --- lib_com/swb_tbe_com_fx.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c14877c2a..a0b00380e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6714,7 +6714,6 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word16 *memory_fx = &input_fx[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6725,7 +6724,7 @@ void elliptic_bpf_48k_generic_fx( { #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); - memory_fx[i] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); + input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); @@ -6741,10 +6740,10 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6760,9 +6759,9 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6777,8 +6776,8 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6793,7 +6792,7 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ #endif -- GitLab From 1523048c6db4c83b0b7ff43691cd0c652d435683 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:35:45 +0200 Subject: [PATCH 207/698] replace memory2_fx_2 with Ltmp2[-4] and delete memory2_fx_2 --- lib_com/swb_tbe_com_fx.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a0b00380e..901739af8 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6711,14 +6711,15 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output[L_FRAME48k], L_tmpX, L_tmpMax; + Word32 memory2_fx_3[4]; Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; -#endif Word32 memory2_fx_2[4], memory2_fx_3[4]; +#endif FOR( i = 0; i < 4; i++ ) { @@ -6975,16 +6976,16 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); } - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ @@ -6993,9 +6994,9 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_abs( L_output[0] ); - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ @@ -7005,8 +7006,8 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ @@ -7017,7 +7018,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 832ee83e0b76a8a82d70a81551aaffbe1b2e351b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:39:16 +0200 Subject: [PATCH 208/698] repoint memory2_fx_3 to L_output[4] which points to L_output_buffer[0] which has a size of (L_FRAME48k + 4) elements --- lib_com/swb_tbe_com_fx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 901739af8..ea4e398b7 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6710,11 +6710,12 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output[L_FRAME48k], L_tmpX, L_tmpMax; - Word32 memory2_fx_3[4]; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; + Word32 *L_output = L_output_buffer[4]; + Word32 *memory2_fx_3 = L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; -- GitLab From e5909c8a6fa50dc7d6d6f04469503c850254cc4c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:44:04 +0200 Subject: [PATCH 209/698] replace memory2_fx_3 with L_output[-4] and delete memory2_fx_3 --- lib_com/swb_tbe_com_fx.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index ea4e398b7..2ff20d7b7 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6715,7 +6715,6 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; Word32 *L_output = L_output_buffer[4]; - Word32 *memory2_fx_3 = L_output[-4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; @@ -6978,7 +6977,7 @@ void elliptic_bpf_48k_generic_fx( FOR( j = 0; j < 4; j++ ) { L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -6988,10 +6987,10 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); @@ -7001,9 +7000,9 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); @@ -7014,8 +7013,8 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); @@ -7027,7 +7026,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -- GitLab From 67f9f2ccdf00dace12278242afd5e61097186f41 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 09:48:03 +0200 Subject: [PATCH 210/698] follow-up to 832ee83 : fix type error --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2ff20d7b7..79fa2c5d9 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6714,7 +6714,7 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *L_output = L_output_buffer[4]; + Word32 *L_output = &L_output_buffer[4]; #else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; -- GitLab From bdf812bdbfdb1398ba7606f7baab4ffa4a23dcba Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 10:06:07 +0200 Subject: [PATCH 211/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 79fa2c5d9..c0c624e55 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6741,7 +6741,7 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6760,7 +6760,7 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else @@ -6777,7 +6777,7 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ #else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From a3807f9bd7cce0e96af354c38fbb45b36e2fb370 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 10:53:01 +0200 Subject: [PATCH 212/698] reintegrate loops - Upsampled-SPEEDUP not working --- Workspace_msvc/decoder.vcxproj | 344 +++++++------- Workspace_msvc/encoder.vcxproj | 354 +++++++-------- Workspace_msvc/lib_com.vcxproj | 680 ++++++++++++++-------------- Workspace_msvc/lib_debug.vcxproj | 240 +++++----- Workspace_msvc/lib_dec.vcxproj | 710 ++++++++++++++--------------- Workspace_msvc/lib_enc.vcxproj | 742 +++++++++++++++---------------- Workspace_msvc/lib_rend.vcxproj | 414 ++++++++--------- Workspace_msvc/lib_util.vcxproj | 312 ++++++------- Workspace_msvc/renderer.vcxproj | 358 +++++++-------- lib_com/swb_tbe_com_fx.c | 41 +- 10 files changed, 2092 insertions(+), 2103 deletions(-) diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index ca0d96f44..c3a5a71d8 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -1,173 +1,173 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 9578e488d..75b13f9bd 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 7a2aa8a7f..337fc98e2 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index 929dd72a8..b6a8a7dd3 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 2d06d29aa..60a24021f 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 86dcef905..7fe2ad96c 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index e47858ae3..10abdb438 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 86730b859..1cfb3e588 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index 70a130e31..ecd8b04aa 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c0c624e55..bfef8a445 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6709,6 +6709,7 @@ void elliptic_bpf_48k_generic_fx( { Word16 i, j; #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#define elliptic_bpf_48k_generic_loopstart 0 Word16 memory_fx0, Q_temp, Q_temp2; Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; @@ -6716,6 +6717,7 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp2 = &L_tmp2_buffer[4]; Word32 *L_output = &L_output_buffer[4]; #else +#define elliptic_bpf_48k_generic_loopstart 4 Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; @@ -6740,34 +6742,22 @@ void elliptic_bpf_48k_generic_fx( move32(); } -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#else +#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#else + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6776,13 +6766,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6792,11 +6777,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -#else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -#endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6877,8 +6858,9 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ { - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6902,6 +6884,8 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); + +#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6946,7 +6930,9 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ + + FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6982,6 +6968,8 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } + +#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7029,8 +7017,9 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ -- GitLab From 38f6813f2722952f262bb9179c27787e002745e5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 10:58:52 +0200 Subject: [PATCH 213/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bfef8a445..1c8ba8ee5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6743,10 +6743,10 @@ void elliptic_bpf_48k_generic_fx( } #ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6755,9 +6755,9 @@ void elliptic_bpf_48k_generic_fx( move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6766,8 +6766,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6777,7 +6777,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 362d92bc1499a8181ddf5d93c0c1a862e9f73576 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:12:16 +0200 Subject: [PATCH 214/698] fix warning non-initialized L_tmpMax --- lib_com/swb_tbe_com_fx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1c8ba8ee5..e6919b0b6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6930,6 +6930,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#else + L_tmpMax = L_add( 0, 0 ); #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) @@ -7017,6 +7019,8 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#else + L_tmpMax = L_add( 0, 0 ); #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) -- GitLab From 373da4cf73ac8a6dc77b3097e82dbdd501624036 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:13:28 +0200 Subject: [PATCH 215/698] fix warning non-initialized L_tmp32, tmp16 --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e6919b0b6..bdaf47b69 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7189,8 +7189,8 @@ void synthesise_fb_high_band_fx( { #ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - Word32 L_tmp32; - Word16 tmp16; + Word32 L_tmp32 = L_add( 0, 0 ); + Word16 tmp16 = add( 0, 0 ); // if (L_tmp < 0) if ( L_tmp < 0 ) -- GitLab From 8c30014c3929668569850190b796ad6bd9e4a2f4 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:21:54 +0200 Subject: [PATCH 216/698] Revert "fix warning non-initialized L_tmp32, tmp16" This reverts commit 373da4cf73ac8a6dc77b3097e82dbdd501624036. --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bdaf47b69..e6919b0b6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7189,8 +7189,8 @@ void synthesise_fb_high_band_fx( { #ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - Word32 L_tmp32 = L_add( 0, 0 ); - Word16 tmp16 = add( 0, 0 ); + Word32 L_tmp32; + Word16 tmp16; // if (L_tmp < 0) if ( L_tmp < 0 ) -- GitLab From ac596390b751a3ede6bd9eb71875050d04c0bec3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:22:05 +0200 Subject: [PATCH 217/698] Revert "fix warning non-initialized L_tmpMax" This reverts commit 362d92bc1499a8181ddf5d93c0c1a862e9f73576. --- lib_com/swb_tbe_com_fx.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e6919b0b6..1c8ba8ee5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6930,8 +6930,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#else - L_tmpMax = L_add( 0, 0 ); #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) @@ -7019,8 +7017,6 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#else - L_tmpMax = L_add( 0, 0 ); #endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) -- GitLab From e9394af140f4b0709742f3bb7c4ff12952d9722f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:22:29 +0200 Subject: [PATCH 218/698] Revert "clang format patch" This reverts commit 38f6813f2722952f262bb9179c27787e002745e5. --- lib_com/swb_tbe_com_fx.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1c8ba8ee5..bfef8a445 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6743,10 +6743,10 @@ void elliptic_bpf_48k_generic_fx( } #ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6755,9 +6755,9 @@ void elliptic_bpf_48k_generic_fx( move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6766,8 +6766,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6777,7 +6777,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 884dbfd4231fd621ea073923ad827800d6045b5f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:22:45 +0200 Subject: [PATCH 219/698] Revert "reintegrate loops - Upsampled-SPEEDUP not working" This reverts commit a3807f9bd7cce0e96af354c38fbb45b36e2fb370. --- Workspace_msvc/decoder.vcxproj | 344 +++++++------- Workspace_msvc/encoder.vcxproj | 354 +++++++-------- Workspace_msvc/lib_com.vcxproj | 680 ++++++++++++++-------------- Workspace_msvc/lib_debug.vcxproj | 240 +++++----- Workspace_msvc/lib_dec.vcxproj | 710 ++++++++++++++--------------- Workspace_msvc/lib_enc.vcxproj | 742 +++++++++++++++---------------- Workspace_msvc/lib_rend.vcxproj | 414 ++++++++--------- Workspace_msvc/lib_util.vcxproj | 312 ++++++------- Workspace_msvc/renderer.vcxproj | 358 +++++++-------- lib_com/swb_tbe_com_fx.c | 41 +- 10 files changed, 2103 insertions(+), 2092 deletions(-) diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index c3a5a71d8..ca0d96f44 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -1,173 +1,173 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 75b13f9bd..9578e488d 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 337fc98e2..7a2aa8a7f 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0 - - - - StaticLibrary - v143 - false - MultiByte - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index b6a8a7dd3..929dd72a8 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0 - - - - StaticLibrary - v143 - MultiByte - - - StaticLibrary - v143 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 60a24021f..2d06d29aa 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0 - - - StaticLibrary - v143 - false - MultiByte - - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 7fe2ad96c..86dcef905 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0 - - - - StaticLibrary - v143 - false - MultiByte - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index 10abdb438..e47858ae3 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0 - - - StaticLibrary - v143 - false - MultiByte - - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 1cfb3e588..86730b859 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0 - - - - StaticLibrary - v143 - MultiByte - - - StaticLibrary - v143 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index ecd8b04aa..70a130e31 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bfef8a445..c0c624e55 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6709,7 +6709,6 @@ void elliptic_bpf_48k_generic_fx( { Word16 i, j; #ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic -#define elliptic_bpf_48k_generic_loopstart 0 Word16 memory_fx0, Q_temp, Q_temp2; Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; @@ -6717,7 +6716,6 @@ void elliptic_bpf_48k_generic_fx( Word32 *L_tmp2 = &L_tmp2_buffer[4]; Word32 *L_output = &L_output_buffer[4]; #else -#define elliptic_bpf_48k_generic_loopstart 4 Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; @@ -6742,22 +6740,34 @@ void elliptic_bpf_48k_generic_fx( move32(); } -#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6766,8 +6776,13 @@ void elliptic_bpf_48k_generic_fx( L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6777,7 +6792,11 @@ void elliptic_bpf_48k_generic_fx( L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +#else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +#endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6858,9 +6877,8 @@ void elliptic_bpf_48k_generic_fx( } ELSE #endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ { - FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6884,8 +6902,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - -#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6930,9 +6946,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - - FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6968,8 +6982,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } - -#ifndef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7017,9 +7029,8 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - FOR( i = elliptic_bpf_48k_generic_loopstart; i < L_FRAME48k; i++ ) + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ -- GitLab From b013d8b3c6d3e8e9760349c69c189787429458c7 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:47:17 +0200 Subject: [PATCH 220/698] change macros FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig and FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic to FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - unrolls still active, loops starting at 4. no speedup functionality yet --- lib_com/options.h | 5 +- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 250 +++++++++++++++++++++++---------------- lib_enc/swb_tbe_enc_fx.c | 4 +- 4 files changed, 157 insertions(+), 104 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 58899a74b..42ea9fce4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -85,8 +85,9 @@ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | - TBDeleted, code integrated in FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic +#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity *//*- TBDeleted, code integrated in FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 13b6fe2d8..8eb1a5c80 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,7 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 input_fx[], /* i : input signal Q_input_fx*/ #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c0c624e55..fd1a043e1 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6695,7 +6695,7 @@ void wb_tbe_extras_reset_synth_fx( *-------------------------------------------------------------------*/ void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 input_fx[], /* i : input signal Q_input_fx*/ #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -6708,7 +6708,7 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; @@ -6723,7 +6723,7 @@ void elliptic_bpf_48k_generic_fx( FOR( i = 0; i < 4; i++ ) { -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); #else @@ -6740,49 +6740,75 @@ void elliptic_bpf_48k_generic_fx( move32(); } -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#else - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#else - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif /*FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); #else - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -#endif + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6792,11 +6818,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -#else L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -#endif L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6806,77 +6828,8 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) - { - i = 4; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - FOR( ; i < L_FRAME48k; ) - { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ { FOR( i = 4; i < L_FRAME48k; i++ ) { @@ -6902,6 +6855,8 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6946,6 +6901,52 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#else + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + move32(); + L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#endif FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6982,6 +6983,7 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7029,6 +7031,56 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#else + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + move32(); + L_tmpMax = L_abs( L_output[0] ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + +#endif FOR( i = 4; i < L_FRAME48k; i++ ) { @@ -7113,7 +7165,7 @@ void synthesise_fb_high_band_fx( Word16 Qout ) { Word16 i, j; -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 excitation_in_interp3_buffer[L_FRAME48k + 4]; Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4; #else diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index ef499ad6a..2d1e6b226 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7305,7 +7305,7 @@ void fb_tbe_enc_fx( Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 input_fhb_buffer[L_FRAME48k + 4]; Word16 *input_fhb = &input_fhb_buffer[0] + 4; #else @@ -7427,7 +7427,7 @@ void fb_tbe_enc_ivas_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; -#ifdef FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4]; Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4; #else -- GitLab From 9d02d6b3d7218ceb6a41f4444ccd4baafa21db32 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 11:48:56 +0200 Subject: [PATCH 221/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index fd1a043e1..eb294ce4f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6741,40 +6741,40 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6818,7 +6818,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From ada8a986cf568a58e7fca4741e5394ee40b4fbd8 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:02:27 +0200 Subject: [PATCH 222/698] integrate loops into speedup if and else branch --- lib_com/swb_tbe_com_fx.c | 103 +++++++++++++++++++++++++++++---------- 1 file changed, 76 insertions(+), 27 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index eb294ce4f..2d8a94fb1 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6784,6 +6784,20 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6828,23 +6842,22 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif + + FOR( i = 4; i < L_FRAME48k; i++ ) { - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); } +#endif memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -6901,6 +6914,21 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6946,21 +6974,22 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#endif + FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } +#endif + Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); @@ -7031,6 +7060,24 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7080,8 +7127,6 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#endif - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -7099,6 +7144,10 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } + +#endif + + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; -- GitLab From bbeea3d01908ccfa716a64677c4206cbf882af19 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:05:56 +0200 Subject: [PATCH 223/698] integrate loops into speedup if and else branch part 2 --- lib_com/swb_tbe_com_fx.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2d8a94fb1..045207844 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6741,6 +6741,8 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + int i = 0; + L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6751,6 +6753,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6762,6 +6765,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6773,6 +6777,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6784,8 +6789,9 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR( ; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6870,6 +6876,8 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + int i = 0; + L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6880,7 +6888,9 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); + i++; L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6891,7 +6901,9 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + i++; L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6902,7 +6914,9 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + i++; L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6913,9 +6927,10 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); + i++; L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR( ; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7013,6 +7028,8 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + int i = 0; + L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7024,6 +7041,7 @@ void elliptic_bpf_48k_generic_fx( L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); L_tmpMax = L_abs( L_output[0] ); + i++; L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7036,6 +7054,7 @@ void elliptic_bpf_48k_generic_fx( L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + i++; L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ @@ -7048,6 +7067,7 @@ void elliptic_bpf_48k_generic_fx( L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + i++; L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7060,8 +7080,9 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + i++; - FOR( i = 4; i < L_FRAME48k; i++ ) + FOR(; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ -- GitLab From ead5a949b11851cd312909773f9abff92f8f898c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:06:55 +0200 Subject: [PATCH 224/698] integrate loops into speedup if and else branch part 3 --- lib_com/swb_tbe_com_fx.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 045207844..e89e25de8 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6697,6 +6697,7 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 input_fx[], /* i : input signal Q_input_fx*/ + int i; #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif @@ -6741,7 +6742,7 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - int i = 0; + i = 0; L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6876,7 +6877,7 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - int i = 0; + i = 0; L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7028,7 +7029,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - int i = 0; + i = 0; L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 95b2b85957ae2f96d722868458cc72b346513104 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:09:40 +0200 Subject: [PATCH 225/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e89e25de8..808ac1495 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6701,7 +6701,7 @@ void elliptic_bpf_48k_generic_fx( #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif - Word16 *Q_input_fx, + Word16 * Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ Word16 memory_fx_Q[], @@ -7083,7 +7083,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); i++; - FOR(; i < L_FRAME48k; i++ ) + FOR( ; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ -- GitLab From 60ccd1121e766b75c22d0e9e1c128b004a57c6de Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:10:25 +0200 Subject: [PATCH 226/698] fix build error --- lib_com/swb_tbe_com_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 808ac1495..2e3937c1b 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6697,7 +6697,6 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 input_fx[], /* i : input signal Q_input_fx*/ - int i; #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif -- GitLab From 146e7cd9e69115433cf667bdc2c0163285f29529 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:12:39 +0200 Subject: [PATCH 227/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2e3937c1b..7f81060ef 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6700,7 +6700,7 @@ void elliptic_bpf_48k_generic_fx( #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ #endif - Word16 * Q_input_fx, + Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ Word16 memory_fx_Q[], -- GitLab From 3482733adc3f46e3b7b32130490d00a0982198ff Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:23:21 +0200 Subject: [PATCH 228/698] replace unrolled loop bodies by rolled ones - slight change: subs and adds alternate and saturate now --- lib_com/swb_tbe_com_fx.c | 232 +++++++++++++++++++-------------------- 1 file changed, 116 insertions(+), 116 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 7f81060ef..466f11af5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6743,51 +6743,51 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic i = 0; - L_tmpX = L_shr( L_mult( input_fx[0 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[1 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[2 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[3 - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; @@ -6878,57 +6878,57 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic i = 0; - L_tmpX = L_shr( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); i++; - L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); i++; - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); i++; - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); i++; - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); FOR( ; i < L_FRAME48k; i++ ) { @@ -7030,56 +7030,56 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic i = 0; - L_tmpX = L_shr( Mult_32_16( L_tmp2[0 - 4], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); - L_tmpMax = L_abs( L_output[0] ); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); i++; - L_tmpX = L_shr( Mult_32_16( L_tmp2[1 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); i++; - L_tmpX = L_shr( Mult_32_16( L_tmp2[2 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); i++; - L_tmpX = L_shr( Mult_32_16( L_tmp2[3 - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[3 - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); i++; FOR( ; i < L_FRAME48k; i++ ) -- GitLab From 58dc59bcc05d5d79a7b1a602e732b6055c5aab15 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:37:16 +0200 Subject: [PATCH 229/698] clang format patch --- lib_com/swb_tbe_com_fx.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 466f11af5..5369972c5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7069,13 +7069,13 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); i++; - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); -- GitLab From 5813c00d8007d85875a08d8c372fef55afee6e8a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 12:39:26 +0200 Subject: [PATCH 230/698] fix warning uninitialized --- lib_com/swb_tbe_com_fx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5369972c5..b2223a174 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6710,7 +6710,8 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX, L_tmpMax; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; + Word32 L_tmpMax = L_add( 0, 0 ); Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; -- GitLab From 834a5383d1f5697814384c1d6212179afbc01ba5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 13:22:04 +0200 Subject: [PATCH 231/698] delete unnecessary unrolls --- lib_com/options.h | 16 ++-- lib_com/swb_tbe_com_fx.c | 164 +-------------------------------------- 2 files changed, 9 insertions(+), 171 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 42ea9fce4..6063c208a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,15 +80,11 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT -// -// new speedups -#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS -#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | - TBDeleted, code integrated in FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic -#define FIX_1439_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity *//*- TBDeleted, code integrated in FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity */ - -#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares another speedup patch*/ + +#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index b2223a174..386b7285f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6742,57 +6742,7 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - i = 0; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - FOR( ; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6877,61 +6827,7 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - i = 0; - - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - i++; - - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - i++; - - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - i++; - - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - i++; - - FOR( ; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7029,61 +6925,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - i = 0; - - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - i++; - - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - i++; - - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - i++; - - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - i++; - - FOR( ; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ -- GitLab From 3ad19ded3976182c9c04b30e15b8d0dcd89236d1 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 13:47:25 +0200 Subject: [PATCH 232/698] introduced STAGE2, but still not functional and inactive - implemented speedup for STAGE0 and activated --- lib_com/options.h | 5 +- lib_com/prot_fx.h | 4 ++ lib_com/swb_tbe_com_fx.c | 127 +++++++++++++++++++++++++++++++++++---- lib_enc/swb_tbe_enc_fx.c | 25 +++++++- 4 files changed, 145 insertions(+), 16 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 6063c208a..6b7dcd93d 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -83,8 +83,9 @@ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares another speedup patch*/ - #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / + #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 8eb1a5c80..702cdea12 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,11 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS; +#endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 386b7285f..76ae12e85 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6695,7 +6695,11 @@ void wb_tbe_extras_reset_synth_fx( *-------------------------------------------------------------------*/ void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS; +#endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ #else const Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -6742,19 +6746,57 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } +#else + IF( !IsUpsampled3 ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } + } + ELSE + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } + } +#endif #else L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6827,6 +6869,26 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + // L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#else FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6841,6 +6903,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } +#endif #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6925,6 +6988,30 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( 0 = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + // L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#else FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -6942,6 +7029,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } +#endif #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7108,12 +7196,29 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx + + ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx + ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 2d1e6b226..484b81742 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,7 +7330,14 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7459,11 +7466,23 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , 1 // IsUpsampled3 + , 1 // isIVAS +#endif + ); } test(); -- GitLab From e9ed6057fb87635180b9ba5248a63565f3cb9b12 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 13:51:31 +0200 Subject: [PATCH 233/698] clang patch --- lib_com/swb_tbe_com_fx.c | 19 +++++++++---------- lib_enc/swb_tbe_enc_fx.c | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 76ae12e85..34f6367ff 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6784,14 +6784,14 @@ void elliptic_bpf_48k_generic_fx( { FOR( i = 0; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } @@ -7217,8 +7217,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 #endif - excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx - ); + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 484b81742..adcf85c54 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7466,22 +7466,24 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( + elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 1 // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 0, // IsUpsampled3 + 0, // IsUpsampled3 #endif - input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , 1 // IsUpsampled3 - , 1 // isIVAS -#endif + , + 1 // IsUpsampled3 + , + 1 // isIVAS +#endif ); } -- GitLab From 3c7264633c174dea95b44d7ffa2c5f0b63234240 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 13:54:19 +0200 Subject: [PATCH 234/698] fix build error --- lib_enc/swb_tbe_enc_fx.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index adcf85c54..be0dd84e5 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7477,14 +7477,14 @@ void fb_tbe_enc_ivas_fx( } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx + elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - 1 // IsUpsampled3 - , - 1 // isIVAS + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 #endif - ); + input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From 02fef875c959af3e8a45981a0c3b49526a26bbf9 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 14:48:19 +0200 Subject: [PATCH 235/698] unrolled BEspeedup by 3 --- lib_com/swb_tbe_com_fx.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 34f6367ff..16ffc719e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6782,7 +6782,7 @@ void elliptic_bpf_48k_generic_fx( } ELSE { - FOR( i = 0; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k;) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6794,6 +6794,31 @@ void elliptic_bpf_48k_generic_fx( // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + i++; + + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; } } #endif -- GitLab From 1a17fbc2bf8327b882a47fbf3a1825e008c32c51 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 9 Apr 2025 14:50:36 +0200 Subject: [PATCH 236/698] clang patch --- lib_com/swb_tbe_com_fx.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 16ffc719e..16c35701e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6782,7 +6782,7 @@ void elliptic_bpf_48k_generic_fx( } ELSE { - FOR( i = 0; i < L_FRAME48k;) + FOR( i = 0; i < L_FRAME48k; ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6796,24 +6796,24 @@ void elliptic_bpf_48k_generic_fx( move32(); i++; - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -- GitLab From 7436e9696b190bd4af140cd645d42a2c9a033993 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 9 Apr 2025 16:40:06 +0200 Subject: [PATCH 237/698] adjust to new scripts in compare-to-input test --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d7de529a5..5950fa19b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -836,8 +836,8 @@ stages: # create summary - mkdir $IMAGES_ARTIFACT_NAME - - for MEASURE in MLD DIFF SSNR ODG;do python3 scripts/create_histogram_summary.py report-diff.csv $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".csv $IMAGES_ARTIFACT_NAME/summary_"$MEASURE".png --measure $MEASURE --diff; done - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME + - python3 scripts/create_histograms.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms --no-bins + - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME --measures $MEASURES_FOR_REPORT - exit 0 -- GitLab From f2927e211fa53161b7e9876803c484efddd52577 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 9 Apr 2025 16:56:05 +0200 Subject: [PATCH 238/698] fix histogram command --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5950fa19b..b4a1405cd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -836,7 +836,7 @@ stages: # create summary - mkdir $IMAGES_ARTIFACT_NAME - - python3 scripts/create_histograms.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms --no-bins + - python3 scripts/create_histograms.py report-diff.csv $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms --no-bins - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME --measures $MEASURES_FOR_REPORT - exit 0 -- GitLab From 4e6d3527c28936f542a435eb303c22c52f0d4e2d Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 9 Apr 2025 18:20:46 +0200 Subject: [PATCH 239/698] fix command again --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b4a1405cd..46e941af8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -837,7 +837,7 @@ stages: # create summary - mkdir $IMAGES_ARTIFACT_NAME - python3 scripts/create_histograms.py report-diff.csv $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms --no-bins - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME --measures $MEASURES_FOR_REPORT + - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT - exit 0 -- GitLab From f5a6d8c16ceade57b154badb6b9998a5d70e11d3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 08:50:45 +0200 Subject: [PATCH 240/698] fix error in unrolled upsampled3 functionality --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 16c35701e..f3ce08a93 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6810,7 +6810,7 @@ void elliptic_bpf_48k_generic_fx( // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 6dcde3530c81a763aa2f3204ecaf6df5a61de6fe Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 08:59:36 +0200 Subject: [PATCH 241/698] apply clang format patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index f3ce08a93..b0047802d 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6810,7 +6810,7 @@ void elliptic_bpf_48k_generic_fx( // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 74d86e358fa5dbc771e10ab63d8c9a0bc6d23e65 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 09:18:05 +0200 Subject: [PATCH 242/698] deactivate upsampled3 --- lib_com/swb_tbe_com_fx.c | 46 ++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index b0047802d..215f2a84f 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6716,6 +6716,10 @@ void elliptic_bpf_48k_generic_fx( Word16 memory_fx0, Q_temp, Q_temp2; Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; Word32 L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + Word64 W_tmpX; + Word64 W_tmpY; +#endif Word32 *L_tmp = &L_tmp_buffer[4]; Word32 *L_tmp2 = &L_tmp2_buffer[4]; @@ -6746,28 +6750,24 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - } -#else - IF( !IsUpsampled3 ) + IF( 1 /* !IsUpsampled3*/ ) { FOR( i = 0; i < L_FRAME48k; i++ ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6778,6 +6778,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } } ELSE @@ -6806,7 +6807,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - i++; + i++; // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6821,8 +6822,7 @@ void elliptic_bpf_48k_generic_fx( i++; } } -#endif -#else +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6881,7 +6881,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } -#endif +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; -- GitLab From 61bcd699753813516bbe7124b2598c0429c7643b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 09:20:11 +0200 Subject: [PATCH 243/698] clang patch --- lib_com/swb_tbe_com_fx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 215f2a84f..de843d9ed 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6755,7 +6755,7 @@ void elliptic_bpf_48k_generic_fx( FOR( i = 0; i < L_FRAME48k; i++ ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); @@ -6767,7 +6767,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6807,7 +6807,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - i++; + i++; // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6822,7 +6822,7 @@ void elliptic_bpf_48k_generic_fx( i++; } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 169b2dcb971e696a01b785c9e5b65b17afb507e3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 09:22:46 +0200 Subject: [PATCH 244/698] fix unused variable error --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index de843d9ed..a1866d831 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6750,7 +6750,7 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - IF( 1 /* !IsUpsampled3*/ ) + IF( 1 || !IsUpsampled3 ) { FOR( i = 0; i < L_FRAME48k; i++ ) { -- GitLab From 21a7f761078722c6c18d4d43ed07f3890571ca53 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 09:57:25 +0200 Subject: [PATCH 245/698] fix and activate upsampled3 --- lib_com/swb_tbe_com_fx.c | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a1866d831..8d5cdfcda 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6750,7 +6750,7 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - IF( 1 || !IsUpsampled3 ) + IF( !IsUpsampled3 ) { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6785,38 +6785,38 @@ void elliptic_bpf_48k_generic_fx( { FOR( i = 0; i < L_FRAME48k; ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; -- GitLab From cdc6a0c27c0465e84f8d02475938a77f407d92c5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 10:25:12 +0200 Subject: [PATCH 246/698] move stage2 code into loops --- lib_com/swb_tbe_com_fx.c | 115 ++++++++++++++++++++++++--------------- 1 file changed, 70 insertions(+), 45 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 8d5cdfcda..a71251ba4 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6785,41 +6785,82 @@ void elliptic_bpf_48k_generic_fx( { FOR( i = 0; i < L_FRAME48k; ) { - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; +#else + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - //L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - //L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } } #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ @@ -6894,11 +6935,9 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { - Word64 W_tmpX; - Word64 W_tmpY; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); @@ -6908,14 +6947,10 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - // L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } -#else - FOR( i = 0; i < L_FRAME48k; i++ ) - { +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ @@ -6927,8 +6962,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } -#endif #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7013,32 +7048,22 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( 0 = 4; i < L_FRAME48k; i++ ) + FOR( i = 0; i < L_FRAME48k; i++ ) { - Word64 W_tmpX; - Word64 W_tmpY; - +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - // L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } -#else - FOR( i = 0; i < L_FRAME48k; i++ ) - { +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ @@ -7053,8 +7078,8 @@ void elliptic_bpf_48k_generic_fx( L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } -#endif #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 4b91e6417af3003e1d4010668693331211a89fc3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 10:33:37 +0200 Subject: [PATCH 247/698] Delete unused code within upsampled3-section --- lib_com/swb_tbe_com_fx.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a71251ba4..520aa67ea 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6786,12 +6786,9 @@ void elliptic_bpf_48k_generic_fx( FOR( i = 0; i < L_FRAME48k; ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); @@ -6800,37 +6797,27 @@ void elliptic_bpf_48k_generic_fx( i++; W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; #else - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6838,25 +6825,18 @@ void elliptic_bpf_48k_generic_fx( i++; L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; -- GitLab From 171201666215606eb2f1f75d7725bdd6745d7ab3 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 10:42:10 +0200 Subject: [PATCH 248/698] clang patch --- lib_com/swb_tbe_com_fx.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 520aa67ea..7b1fe9cd2 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6815,28 +6815,28 @@ void elliptic_bpf_48k_generic_fx( move32(); i++; #else - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; -- GitLab From 57b563d4c0df7df61d76f4411f6d22b17c76e8aa Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 11:19:11 +0200 Subject: [PATCH 249/698] place a FOR loop identifier in every preproc branch --- lib_com/swb_tbe_com_fx.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 7b1fe9cd2..7baa27b75 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6752,9 +6752,9 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic IF( !IsUpsampled3 ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); @@ -6767,7 +6767,10 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6778,14 +6781,14 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } ELSE { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); @@ -6814,7 +6817,10 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); i++; + } #else + FOR( i = 0; i < L_FRAME48k; ) + { L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6840,8 +6846,8 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); i++; -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6915,9 +6921,9 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); @@ -6930,7 +6936,10 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ @@ -6942,8 +6951,9 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + #else L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7028,9 +7038,9 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); @@ -7043,7 +7053,10 @@ void elliptic_bpf_48k_generic_fx( L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ @@ -7058,8 +7071,8 @@ void elliptic_bpf_48k_generic_fx( L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ #else L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From d41a00b7701d562e031629d9f028e37add6d356e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 11:59:52 +0200 Subject: [PATCH 250/698] deactivate STAGE2 and func1 - implement func1 --- lib_com/options.h | 1 + lib_com/swb_tbe_com_fx.c | 133 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 128 insertions(+), 6 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 6b7dcd93d..35d09abf5 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -87,5 +87,6 @@ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 7baa27b75..bff330286 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6687,6 +6687,112 @@ void wb_tbe_extras_reset_synth_fx( return; } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 L_tmpMax ) +{ + Word32 L_tmpX; + Word16 i; + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + } +#else + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } +#endif + } /*IsUpsampled3*/ + ELSE + { /*IsUpsampled3*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ +} +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * @@ -6715,7 +6821,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; - Word32 L_tmpMax = L_add( 0, 0 ); + Word32 L_tmpMax; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word64 W_tmpX; Word64 W_tmpY; @@ -6750,6 +6856,10 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); +#else IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -6783,7 +6893,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } + } /*IsUpsampled3*/ ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -6848,7 +6958,9 @@ void elliptic_bpf_48k_generic_fx( i++; } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } + } /*IsUpsampled3*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6921,6 +7033,10 @@ void elliptic_bpf_48k_generic_fx( move32(); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); +#else #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6953,8 +7069,8 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - -#else +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7038,6 +7154,10 @@ void elliptic_bpf_48k_generic_fx( move32(); } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); +#else #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7073,7 +7193,8 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ -#else +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 60212ef02f092f66dd92147fb54af52b90f920e2 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 12:09:07 +0200 Subject: [PATCH 251/698] implement maxabs in func1, STAGE2 and func1 still inactive --- lib_com/swb_tbe_com_fx.c | 72 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index bff330286..2974ccac1 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6688,10 +6688,13 @@ void wb_tbe_extras_reset_synth_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 L_tmpMax ) +inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) { Word32 L_tmpX; Word16 i; + Word32 L_tmpMax2 = *L_tmpMax; + Word32 L_tmpAbs; + move32(); IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -6708,6 +6711,14 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } } #else FOR( i = 0; i < L_FRAME48k; i++ ) @@ -6722,6 +6733,15 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } #endif } /*IsUpsampled3*/ @@ -6738,6 +6758,14 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } i++; W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); @@ -6748,6 +6776,14 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } i++; W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); @@ -6757,6 +6793,14 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } i++; } #else @@ -6769,6 +6813,14 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } i++; L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6778,6 +6830,14 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } i++; L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -6786,10 +6846,20 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } i++; } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ + *L_tmpMax = L_tmpMax2; + move32(); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -- GitLab From 090be8f36fd988d1aebf50bcf1c3ee50569139e0 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 12:11:20 +0200 Subject: [PATCH 252/698] clang patch --- lib_com/swb_tbe_com_fx.c | 239 +++++++++++++++++++-------------------- 1 file changed, 119 insertions(+), 120 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2974ccac1..f1492b0b4 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6723,14 +6723,14 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t #else FOR( i = 0; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); if ( L_tmpMax > 0 ) @@ -6741,125 +6741,124 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } - } #endif - } /*IsUpsampled3*/ - ELSE - { /*IsUpsampled3*/ + } /*IsUpsampled3*/ + ELSE + { /*IsUpsampled3*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } + i++; + } #else - FOR( i = 0; i < L_FRAME48k; ) + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ - *L_tmpMax = L_tmpMax2; - move32(); + } /*IsUpsampled3*/ + *L_tmpMax = L_tmpMax2; + move32(); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ @@ -6948,7 +6947,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7140,7 +7139,7 @@ void elliptic_bpf_48k_generic_fx( } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7264,7 +7263,7 @@ void elliptic_bpf_48k_generic_fx( } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 2294ff5ff00a5425cf0136481de99a58b042d265 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:00:38 +0200 Subject: [PATCH 253/698] swb_tbe_com: coments general: use ISAVAS information to switch STAGE2 on and off --- lib_com/prot_fx.h | 6 +++++- lib_com/swb_tbe_com_fx.c | 20 ++++++++++++-------- lib_dec/swb_tbe_dec_fx.c | 12 ++++++++++-- lib_enc/swb_tbe_enc_fx.c | 6 +++--- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 702cdea12..a230a83c7 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3285,7 +3285,11 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout ); + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , Word16 isIVAS +#endif +); void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index f1492b0b4..8977dae08 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6926,9 +6926,9 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); -#else +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -7103,9 +7103,9 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); -#else +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7226,7 +7226,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); -#else +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7396,7 +7396,11 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout ) + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , Word16 isIVAS +#endif +) { Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic @@ -7431,7 +7435,7 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 @@ -7445,7 +7449,7 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 00be6455d..4f8c04eb6 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,7 +4644,11 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + ,0 /*isIVAS*/ +#endif + ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4713,7 +4717,11 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , Word16 1 /*isIVAS*/ +#endif + ); test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index be0dd84e5..3fe74d1a0 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7332,7 +7332,7 @@ void fb_tbe_enc_fx( elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 0 // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7468,7 +7468,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 1 // isIVAS - is this corret? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7479,7 +7479,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 1 // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -- GitLab From 7d06c195a51eb028b63585b0de04bbb01dea6a16 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:08:17 +0200 Subject: [PATCH 254/698] activate func1 --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 35d09abf5..37a941590 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -87,6 +87,6 @@ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From 1e85b77367047724ac26f7b5f70fdaa06e399ba9 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:21:23 +0200 Subject: [PATCH 255/698] remove all BE changes --- lib_com/options.h | 7 +- lib_com/swb_tbe_com_fx.c | 195 ----------------------------- lib_com/tools_fx.c | 24 ---- lib_dec/ivas_stereo_icbwe_dec_fx.c | 10 -- lib_dec/swb_tbe_dec_fx.c | 5 - 5 files changed, 1 insertion(+), 240 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index bb95f74df..99c6e8eb6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,12 +81,7 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT -// new speedups - BE ones already in another branch -//#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | 2.4 WMOPS -//#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig /*FhG: reduces WMOPS - bit-exact*/ // | -//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx // | 0.4 WMOPS - BE? Need for a manual test as long as be tests dont work + #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 9e85b4175..3fec692dc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6767,89 +6767,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); #ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) - { - Word64 W_tmpX; - Word64 W_tmpY; - i = 4; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - FOR( ; i < L_FRAME48k; ) - { - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //2 - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); // 3 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //4 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //5 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); // 3 - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //4 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); //5 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //7 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - // W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); //4 - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); //5 - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); // 6 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); //7 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - // W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); //8 - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ { FOR( i = 4; i < L_FRAME48k; i++ ) { @@ -6871,76 +6788,6 @@ void elliptic_bpf_48k_generic_fx( } #else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig - test(); - IF( full_band_bpf_fx == full_band_bpf_3_fx || full_band_bpf_fx == full_band_bpf_1_fx ) - { - i = 4; - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 0 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 1 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - FOR( ; i < L_FRAME48k; ) - { - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 2 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 3 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - // L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); // 4 /*Q_input_fx + 13 + 1 - 3*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); // 5 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); // 6 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); // 7 /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - // L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); // 8 /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig*/ { FOR( i = 4; i < L_FRAME48k; i++ ) { @@ -7307,47 +7154,6 @@ void synthesise_fb_high_band_fx( tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { -#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx - L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - Word32 L_tmp32; - Word16 tmp16; - - if ( L_tmp < 0 ) - { - L_tmp32 = L_negate( L_tmp ); - } - if ( L_tmp < 0 ) - { - L_tmp32 = L_shl_sat( L_tmp32, tmp3 ); - } - if ( L_tmp < 0 ) - { - tmp16 = extract_h( L_tmp32 ); - } - if ( L_tmp < 0 ) - { - tmp16 = negate( tmp16 ); - } - - if ( L_tmp == 0 ) - { - tmp16 = 0; - move16(); - } - - if ( L_tmp > 0 ) - { - L_tmp32 = L_shl_sat( L_tmp, tmp3 ); - } - if ( L_tmp > 0 ) - { - tmp16 = extract_h( L_tmp32 ); - } - - output[i] = tmp16; - move16(); - -#else L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { @@ -7359,7 +7165,6 @@ void synthesise_fb_high_band_fx( output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); } -#endif } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 756b5be80..8316452ba 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,29 +794,6 @@ void Copy_Scale_sig_16_32_no_sat( } return; } -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat - L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); - - IF( L_tmp >= 0x7FFF ) - { - FOR( i = 0; i < lg; i++ ) - { - // y[i] = L_mult0(x[i], L_tmp); - y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* Overflow can occur here */ - } - return; - } - // ELSE - { - Word16 tmp = extract_l( L_tmp ); - FOR( i = 0; i < lg; i++ ) - { - y[i] = L_mult( x[i], tmp ); - move32(); - } - } -#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { @@ -824,7 +801,6 @@ void Copy_Scale_sig_16_32_no_sat( y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* Overflow can occur here */ } -#endif } void Copy_Scale_sig_32_16( diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index 772eb2d7d..c7bc98566 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,9 +904,6 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); -#endif FOR( i = 0; i < winLen_fx; i++ ) { L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ @@ -914,17 +911,10 @@ void stereo_icBWE_dec_fx( tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ move32(); -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - if ( LE_16( alpha_fx, winSlope_fx_ ) ) - { - alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ - } -#else IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } -#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index bb0d6f2e0..8da680bf8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7037,17 +7037,12 @@ void ivas_swb_tbe_dec_fx( FOR( i = 0; i < L_FRAME16k; i++ ) { -#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } -#else - Word16 idx; - idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ -#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); -- GitLab From 88c2dd4595710a177de9832a967949c96d654c69 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:30:40 +0200 Subject: [PATCH 256/698] add changes from BE branch concerning elliptic_bpf_48k - deactivated STAGE2 and func1 --- lib_com/options.h | 11 +- lib_com/prot_fx.h | 18 +- lib_com/swb_tbe_com_fx.c | 588 +++++++++++++++++++++++++++++++-------- lib_dec/swb_tbe_dec_fx.c | 15 +- lib_enc/swb_tbe_enc_fx.c | 39 ++- 5 files changed, 534 insertions(+), 137 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 99c6e8eb6..efd9f65cf 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,13 +80,8 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - - -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | - -//----------------------------------------------------------------------- -// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1452d8e2e..9435087b4 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,15 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( - const Word16 input_fx[], /* i : i signal Q_input_fx */ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS; +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else + const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ @@ -3277,8 +3285,12 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout ); - + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 isIVAS +#endif +); void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ #ifdef ADD_IVAS_TBE_CODE diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 3fec692dc..b83aa0413 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6688,14 +6688,198 @@ void wb_tbe_extras_reset_synth_fx( return; } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +{ + Word32 L_tmpX; + Word16 i; + Word32 L_tmpMax2 = *L_tmpMax; + Word32 L_tmpAbs; + move32(); + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#else + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#endif + } /*IsUpsampled3*/ + ELSE + { /*IsUpsampled3*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ + *L_tmpMax = L_tmpMax2; + move32(); +} +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ + void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS; +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ @@ -6704,18 +6888,36 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 memory_fx0, Q_temp, Q_temp2; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; + Word32 L_tmpMax; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + Word64 W_tmpX; + Word64 W_tmpY; +#endif + + Word32 *L_tmp = &L_tmp_buffer[4]; + Word32 *L_tmp2 = &L_tmp2_buffer[4]; + Word32 *L_output = &L_output_buffer[4]; +#else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; - Word32 L_output[L_FRAME48k]; +#endif FOR( i = 0; i < 4; i++ ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + memory_fx0 = extract_l( memory_fx2[0][i] ); + input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); +#else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); - memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); +#endif + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -6723,55 +6925,17 @@ void elliptic_bpf_48k_generic_fx( move32(); } - - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + IF( !IsUpsampled3 ) { - FOR( i = 4; i < L_FRAME48k; i++ ) +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) { - Word64 W_tmpX; - Word64 W_tmpY; + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); @@ -6781,15 +6945,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } - } - -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ - { - FOR( i = 4; i < L_FRAME48k; i++ ) +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6802,9 +6962,135 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } - } -#endif +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ + ELSE + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -6815,6 +7101,46 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6860,43 +7186,22 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 4; i < L_FRAME48k; i++ ) { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } +#endif + -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -6912,12 +7217,54 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -6965,30 +7312,7 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } -#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -7006,7 +7330,10 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } + #endif + + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -7070,7 +7397,12 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout ) + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 isIVAS +#endif +) { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; @@ -7100,12 +7432,28 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx + + ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 8da680bf8..b8ebb033e 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,7 +4644,12 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + 0 /*isIVAS*/ +#endif + ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4714,7 +4719,13 @@ void fb_tbe_dec_ivas_fx( /* FB TBE synthesis */ push_wmops( "synthesise_fb_high_band" ); - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + /* FB TBE synthesis */ + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 1 /*isIVAS*/ +#endif + ); pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 316a5b549..3fe74d1a0 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7299,13 +7299,18 @@ void fb_tbe_enc_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; - Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_buffer[L_FRAME48k + 4]; + Word16 *input_fhb = &input_fhb_buffer[0] + 4; +#else + Word16 input_fhb[L_FRAME48k]; +#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); @@ -7325,7 +7330,14 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 0 // isIVAS - is this correct? +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7422,7 +7434,12 @@ void fb_tbe_enc_ivas_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4]; + Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4; +#else Word16 input_fhb_new[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS )]; +#endif Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word64 fb_exc_energy; @@ -7449,11 +7466,25 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS - is this corret? +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS - is this correct? +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From 006443f447927c1029638f3cc55e932fcff8fec8 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:33:04 +0200 Subject: [PATCH 257/698] clang patch --- lib_com/prot_fx.h | 3 ++- lib_com/swb_tbe_com_fx.c | 9 +++++---- lib_dec/swb_tbe_dec_fx.c | 18 ++++++++++-------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index a230a83c7..bab4533cb 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3287,7 +3287,8 @@ void synthesise_fb_high_band_fx( Word16 bpf_memory_Q[], Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , Word16 isIVAS + , + Word16 isIVAS #endif ); diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 8977dae08..accee64bc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7103,7 +7103,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -7396,9 +7396,10 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , Word16 isIVAS + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 isIVAS #endif ) { diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 4f8c04eb6..5c0f43639 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,10 +4644,11 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - ,0 /*isIVAS*/ -#endif + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + 0 /*isIVAS*/ +#endif ); /* add the fb_synth component to the hb_synth component */ @@ -4717,10 +4718,11 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , Word16 1 /*isIVAS*/ -#endif + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 1 /*isIVAS*/ +#endif ); test(); -- GitLab From 771fc273d21d96517467e04592381eb8f7d3001c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:08:30 +0200 Subject: [PATCH 258/698] fix type error --- Workspace_msvc/decoder.vcxproj | 344 +++++++------- Workspace_msvc/encoder.vcxproj | 354 +++++++-------- Workspace_msvc/lib_com.vcxproj | 680 ++++++++++++++-------------- Workspace_msvc/lib_debug.vcxproj | 240 +++++----- Workspace_msvc/lib_dec.vcxproj | 710 ++++++++++++++--------------- Workspace_msvc/lib_enc.vcxproj | 742 +++++++++++++++---------------- Workspace_msvc/lib_rend.vcxproj | 414 ++++++++--------- Workspace_msvc/lib_util.vcxproj | 312 ++++++------- Workspace_msvc/renderer.vcxproj | 358 +++++++-------- lib_com/swb_tbe_com_fx.c | 2 +- 10 files changed, 2078 insertions(+), 2078 deletions(-) diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index ca0d96f44..c3a5a71d8 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -1,173 +1,173 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 9578e488d..75b13f9bd 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 7a2aa8a7f..337fc98e2 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index 929dd72a8..b6a8a7dd3 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 2d06d29aa..60a24021f 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 86dcef905..7fe2ad96c 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index e47858ae3..10abdb438 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 86730b859..1cfb3e588 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index 70a130e31..ecd8b04aa 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index accee64bc..624bafa78 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6688,7 +6688,7 @@ void wb_tbe_extras_reset_synth_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) { Word32 L_tmpX; Word16 i; -- GitLab From 0aecdf09691c911aa34cab9db235b5f0bdc1cc21 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:09:50 +0200 Subject: [PATCH 259/698] fix type error --- lib_com/swb_tbe_com_fx.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 624bafa78..67240e540 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6711,11 +6711,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6733,11 +6733,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6757,11 +6757,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6775,11 +6775,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6792,11 +6792,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6812,11 +6812,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6829,11 +6829,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6845,11 +6845,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } -- GitLab From 1c6062c62decac67f36200ac02de64d361b94ecb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:15:33 +0200 Subject: [PATCH 260/698] deactivate func1, activate STAGE2 --- lib_com/options.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 37a941590..dc144cd1a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,7 +86,7 @@ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From ce94cf8dd649ca3ff7f2520340de30de222ab5ee Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:47:01 +0200 Subject: [PATCH 261/698] fix build errors --- lib_com/options.h | 2 +- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 303 +++++++++++++++++++++------------------ lib_dec/swb_tbe_dec_fx.c | 2 +- lib_enc/swb_tbe_enc_fx.c | 6 +- 5 files changed, 169 insertions(+), 146 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index dc144cd1a..8651c0671 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,7 +86,7 @@ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index bab4533cb..292c82206 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3259,7 +3259,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; + int isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 67240e540..e14fda2a2 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6871,7 +6871,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; + int isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -6889,8 +6889,9 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; Word32 L_tmpMax; + Word32 L_tmpX; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word64 W_tmpX; Word64 W_tmpY; @@ -6932,101 +6933,111 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) + IF( isIVAS ) { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } } -#else - FOR( i = 0; i < L_FRAME48k; ) + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ @@ -7107,37 +7118,43 @@ void elliptic_bpf_48k_generic_fx( elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7228,40 +7245,46 @@ void elliptic_bpf_48k_generic_fx( elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ @@ -7436,7 +7459,7 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS + isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 @@ -7450,7 +7473,7 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS + isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 5c0f43639..2994c2878 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4721,7 +4721,7 @@ void fb_tbe_dec_ivas_fx( synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , - Word16 1 /*isIVAS*/ + 1 /*isIVAS*/ #endif ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 3fe74d1a0..f42bd262a 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7332,7 +7332,7 @@ void fb_tbe_enc_fx( elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 0 // isIVAS - is this correct? + 0, // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7468,7 +7468,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS - is this corret? + 1, // isIVAS - is this corret? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7479,7 +7479,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS - is this correct? + 1, // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -- GitLab From bc0565c1160cf97a4d23b9137fc608955e6bd890 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:15:33 +0200 Subject: [PATCH 262/698] deactivate func1, activate STAGE2 --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index efd9f65cf..01900a847 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,7 +81,7 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From 7fd231f4e0784a996a9b24484030cc875f3219a1 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:57:27 +0200 Subject: [PATCH 263/698] fix build errors --- lib_com/swb_tbe_com_fx.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index b83aa0413..5c2c74e2e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6712,11 +6712,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6734,11 +6734,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6758,11 +6758,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6776,11 +6776,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6793,11 +6793,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6813,11 +6813,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6830,11 +6830,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6846,18 +6846,18 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( L_tmpMax > 0 ) + if ( *L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } i++; } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ + } /*IsUpsampled3*/ *L_tmpMax = L_tmpMax2; move32(); } -- GitLab From 523e8caa7d6c10b1ba758de621e9f5ca6e9619b4 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:47:01 +0200 Subject: [PATCH 264/698] fix build errors --- lib_com/options.h | 2 +- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 303 +++++++++++++++++++++------------------ lib_dec/swb_tbe_dec_fx.c | 2 +- lib_enc/swb_tbe_enc_fx.c | 6 +- 5 files changed, 169 insertions(+), 146 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 01900a847..1325dacfa 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,7 +81,7 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 9435087b4..359320af7 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3259,7 +3259,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; + int isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5c2c74e2e..828f4b5af 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6872,7 +6872,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; + int isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -6890,8 +6890,9 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; Word32 L_tmpMax; + Word32 L_tmpX; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word64 W_tmpX; Word64 W_tmpY; @@ -6933,101 +6934,111 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) + IF( isIVAS ) { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } } -#else - FOR( i = 0; i < L_FRAME48k; ) + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ @@ -7108,37 +7119,43 @@ void elliptic_bpf_48k_generic_fx( elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7229,40 +7246,46 @@ void elliptic_bpf_48k_generic_fx( elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ @@ -7434,7 +7457,7 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS + isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 @@ -7448,7 +7471,7 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS + isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index b8ebb033e..636702daa 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4723,7 +4723,7 @@ void fb_tbe_dec_ivas_fx( synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , - Word16 1 /*isIVAS*/ + 1 /*isIVAS*/ #endif ); pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 3fe74d1a0..f42bd262a 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7332,7 +7332,7 @@ void fb_tbe_enc_fx( elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 0 // isIVAS - is this correct? + 0, // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7468,7 +7468,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS - is this corret? + 1, // isIVAS - is this corret? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7479,7 +7479,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS - is this correct? + 1, // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -- GitLab From cbe487105f4baa613fc699d2caebb95e8f6e0c25 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:58:58 +0200 Subject: [PATCH 265/698] deactivate STAGE2 and func1 --- Workspace_msvc/decoder.vcxproj | 344 +++++++------- Workspace_msvc/encoder.vcxproj | 354 +++++++-------- Workspace_msvc/lib_com.vcxproj | 680 ++++++++++++++-------------- Workspace_msvc/lib_debug.vcxproj | 240 +++++----- Workspace_msvc/lib_dec.vcxproj | 710 ++++++++++++++--------------- Workspace_msvc/lib_enc.vcxproj | 742 +++++++++++++++---------------- Workspace_msvc/lib_rend.vcxproj | 414 ++++++++--------- Workspace_msvc/lib_util.vcxproj | 312 ++++++------- Workspace_msvc/renderer.vcxproj | 358 +++++++-------- lib_com/options.h | 2 +- 10 files changed, 2078 insertions(+), 2078 deletions(-) diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index ca0d96f44..c3a5a71d8 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -1,173 +1,173 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 9578e488d..75b13f9bd 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 7a2aa8a7f..337fc98e2 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index 929dd72a8..b6a8a7dd3 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 2d06d29aa..60a24021f 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 86dcef905..7fe2ad96c 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index e47858ae3..10abdb438 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 86730b859..1cfb3e588 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index 70a130e31..ecd8b04aa 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/lib_com/options.h b/lib_com/options.h index 1325dacfa..71dd19d71 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,7 +81,7 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From 423e399a8be328d6e320b9e66d41a10f5c835126 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 15:03:50 +0200 Subject: [PATCH 266/698] delete func1 --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 187 --------------------------------------- 2 files changed, 1 insertion(+), 188 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 71dd19d71..6d02885cc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -82,6 +82,6 @@ //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 828f4b5af..8416a2e7d 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6688,181 +6688,6 @@ void wb_tbe_extras_reset_synth_fx( return; } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) -{ - Word32 L_tmpX; - Word16 i; - Word32 L_tmpMax2 = *L_tmpMax; - Word32 L_tmpAbs; - move32(); - IF( !IsUpsampled3 ) - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#else - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#endif - } /*IsUpsampled3*/ - ELSE - { /*IsUpsampled3*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#else - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ - *L_tmpMax = L_tmpMax2; - move32(); -} -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * @@ -6928,9 +6753,6 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -7040,7 +6862,6 @@ void elliptic_bpf_48k_generic_fx( } } } /*IsUpsampled3*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7115,9 +6936,6 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 IF( isIVAS ) { @@ -7156,7 +6974,6 @@ void elliptic_bpf_48k_generic_fx( } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7242,9 +7059,6 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 IF( isIVAS ) { @@ -7286,7 +7100,6 @@ void elliptic_bpf_48k_generic_fx( } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From bedb83f789423aa88f0016787ee00cf7fb751b4c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 15:08:59 +0200 Subject: [PATCH 267/698] delete all non-BE changes --- lib_com/options.h | 4 - lib_com/prot_fx.h | 8 - lib_com/swb_tbe_com_fx.c | 444 +-------------------------------------- lib_dec/swb_tbe_dec_fx.c | 14 +- lib_enc/swb_tbe_enc_fx.c | 37 +--- 5 files changed, 7 insertions(+), 500 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 8651c0671..a3a65fe55 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -85,8 +85,4 @@ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 292c82206..93da4d66a 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,15 +3258,7 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS, -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 IsUpsampled3, - Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e14fda2a2..2b86715a4 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6687,181 +6687,6 @@ void wb_tbe_extras_reset_synth_fx( return; } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) -{ - Word32 L_tmpX; - Word16 i; - Word32 L_tmpMax2 = *L_tmpMax; - Word32 L_tmpAbs; - move32(); - IF( !IsUpsampled3 ) - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#else - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#endif - } /*IsUpsampled3*/ - ELSE - { /*IsUpsampled3*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#else - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ - *L_tmpMax = L_tmpMax2; - move32(); -} -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * @@ -6870,15 +6695,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t *-------------------------------------------------------------------*/ void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS, -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 IsUpsampled3, - Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ @@ -6887,34 +6704,14 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; - Word32 L_tmpMax; - Word32 L_tmpX; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - Word64 W_tmpX; - Word64 W_tmpY; -#endif - - Word32 *L_tmp = &L_tmp_buffer[4]; - Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *L_output = &L_output_buffer[4]; -#else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; -#endif FOR( i = 0; i < 4; i++ ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - memory_fx0 = extract_l( memory_fx2[0][i] ); - input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); -#else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); -#endif L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); @@ -6925,123 +6722,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - IF( !IsUpsampled3 ) - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - } - } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } - } - } /*IsUpsampled3*/ - ELSE - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } - } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } - } - } /*IsUpsampled3*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7100,7 +6781,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -7112,51 +6792,7 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } - } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } - } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7215,8 +6851,6 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } -#endif - Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); @@ -7239,54 +6873,7 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - } - -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7353,8 +6940,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -#endif - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; @@ -7420,19 +7005,10 @@ void synthesise_fb_high_band_fx( Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS -#endif ) { Word16 i, j; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 excitation_in_interp3_buffer[L_FRAME48k + 4]; - Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4; -#else Word16 excitation_in_interp3[L_FRAME48k]; -#endif Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; @@ -7457,28 +7033,12 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 1, // IsUpsampled3 -#endif - excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx - - ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 1, // IsUpsampled3 -#endif - excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 2994c2878..ebe7a847a 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,12 +4644,7 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - 0 /*isIVAS*/ -#endif - ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4718,12 +4713,7 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - 1 /*isIVAS*/ -#endif - ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index f42bd262a..272d9a4b9 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7305,12 +7305,7 @@ void fb_tbe_enc_fx( Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fhb_buffer[L_FRAME48k + 4]; - Word16 *input_fhb = &input_fhb_buffer[0] + 4; -#else Word16 input_fhb[L_FRAME48k]; -#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); @@ -7330,14 +7325,7 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 0, // isIVAS - is this correct? -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 0, // IsUpsampled3 -#endif - input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7434,12 +7422,7 @@ void fb_tbe_enc_ivas_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4]; - Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4; -#else Word16 input_fhb_new[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS )]; -#endif Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word64 fb_exc_energy; @@ -7466,25 +7449,11 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS - is this corret? -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 0, // IsUpsampled3 -#endif - input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS - is this correct? -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 0, // IsUpsampled3 -#endif - input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From a3746c8f8e832ece31b48ec7b47bfa8216a0bb34 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 15:21:13 +0200 Subject: [PATCH 268/698] clang patch --- lib_com/swb_tbe_com_fx.c | 7 +++---- lib_dec/swb_tbe_dec_fx.c | 4 ++-- lib_enc/swb_tbe_enc_fx.c | 6 +++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2b86715a4..c9361cbe6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7004,8 +7004,7 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout -) + Word16 Qout ) { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; @@ -7033,12 +7032,12 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index ebe7a847a..00be6455d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,7 +4644,7 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4713,7 +4713,7 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 272d9a4b9..a72a7ced1 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7325,7 +7325,7 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7449,11 +7449,11 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From 3ea49c9a6976c614a9d5606562ff79ef3c16eaae Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 15:22:15 +0200 Subject: [PATCH 269/698] clang patch --- lib_com/options.h | 1 - lib_com/swb_tbe_com_fx.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 6d02885cc..942f5cfd6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -82,6 +82,5 @@ //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 8416a2e7d..1d7a9a5b7 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6974,7 +6974,7 @@ void elliptic_bpf_48k_generic_fx( } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7100,7 +7100,7 @@ void elliptic_bpf_48k_generic_fx( } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From d44257b3667886b4ac0daab94cdf1a1d0ada1a38 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 15:28:41 +0200 Subject: [PATCH 270/698] fix memory --- lib_com/swb_tbe_com_fx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c9361cbe6..14a40e7b9 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6712,9 +6712,9 @@ void elliptic_bpf_48k_generic_fx( { memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); - L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //is this change be? move32(); move32(); move32(); -- GitLab From 21eae1a712187057531458a0a2a2ba5f763a8c15 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:30:43 +0000 Subject: [PATCH 271/698] revert all changes in elliptic_bpf_48k_generic_fx , but 1 --- lib_com/swb_tbe_com_fx.c | 105 ++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 57 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 14a40e7b9..5ce4d8ad7 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6722,52 +6722,48 @@ void elliptic_bpf_48k_generic_fx( move32(); } - - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6791,8 +6787,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6837,19 +6831,19 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } Q_temp = norm_l( L_tmpMax ); @@ -6867,13 +6861,12 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); } - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -6939,8 +6932,6 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; -- GitLab From 5a9847e0933fbb07c5c052125a70865ff4aaff34 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:35:20 +0000 Subject: [PATCH 272/698] revert vcxproj changes --- Workspace_msvc/decoder.vcxproj | 6 +++--- Workspace_msvc/encoder.vcxproj | 6 +++--- Workspace_msvc/lib_com.vcxproj | 6 +++--- Workspace_msvc/lib_debug.vcxproj | 6 +++--- Workspace_msvc/lib_dec.vcxproj | 6 +++--- Workspace_msvc/lib_enc.vcxproj | 6 +++--- Workspace_msvc/lib_rend.vcxproj | 6 +++--- Workspace_msvc/lib_util.vcxproj | 6 +++--- Workspace_msvc/renderer.vcxproj | 6 +++--- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index c3a5a71d8..9c5f8787a 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -14,18 +14,18 @@ decoder {E3DCBC31-7FC9-D127-E000-529F8460D5FD} decoder - 10.0 + 10.0.17763.0 Application - v143 + v141 false MultiByte Application - v143 + v141 false MultiByte diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 75b13f9bd..5ec7a2c01 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -14,18 +14,18 @@ encoder {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} encoder - 10.0 + 10.0.17763.0 Application - v143 + v141 false MultiByte Application - v143 + v141 false MultiByte diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 337fc98e2..5cbb9a2bb 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -13,18 +13,18 @@ {39EC200D-7795-4FF8-B214-B24EDA5526AE} common - 10.0 + 10.0.17763.0 StaticLibrary - v143 + v141 false MultiByte StaticLibrary - v143 + v141 false MultiByte diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index b6a8a7dd3..157e32f9d 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -13,17 +13,17 @@ {54509728-928B-44D9-A118-A6F92F08B34F} debug - 10.0 + 10.0.17763.0 StaticLibrary - v143 + v141 MultiByte StaticLibrary - v143 + v141 MultiByte true diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 60a24021f..bddcb0dbf 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -14,18 +14,18 @@ lib_dec {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} evs_dec - 10.0 + 10.0.17763.0 StaticLibrary - v143 + v141 false MultiByte StaticLibrary - v143 + v141 false MultiByte diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 7fe2ad96c..95298d456 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -14,18 +14,18 @@ lib_enc {824DA4CF-06F0-45C9-929A-8792F0E19C3E} evs_enc - 10.0 + 10.0.17763.0 StaticLibrary - v143 + v141 false MultiByte StaticLibrary - v143 + v141 false MultiByte diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index 10abdb438..0810f2a85 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -14,18 +14,18 @@ lib_rend {718DE063-A18B-BB72-9150-62B892E6FFA6} evs_dec - 10.0 + 10.0.17763.0 StaticLibrary - v143 + v141 false MultiByte StaticLibrary - v143 + v141 false MultiByte diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 1cfb3e588..ebb82c6c0 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -13,17 +13,17 @@ {2FA8F384-0775-F3B7-F8C3-85209222FC70} utility - 10.0 + 10.0.17763.0 StaticLibrary - v143 + v141 MultiByte StaticLibrary - v143 + v141 MultiByte true diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index ecd8b04aa..fc00b0348 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -14,18 +14,18 @@ renderer {12B4C8A5-1E06-4E30-B443-D1F916F52B47} renderer - 10.0 + 10.0.17763.0 Application - v143 + v141 false MultiByte Application - v143 + v141 false MultiByte -- GitLab From cf0b0aa0d7cc200915fdc1e36102efcf4d09ab7c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 15:50:09 +0200 Subject: [PATCH 273/698] revert vcxproj changes --- Workspace_msvc/decoder.vcxproj | 344 +++++++------- Workspace_msvc/encoder.vcxproj | 354 +++++++-------- Workspace_msvc/lib_com.vcxproj | 680 ++++++++++++++-------------- Workspace_msvc/lib_debug.vcxproj | 240 +++++----- Workspace_msvc/lib_dec.vcxproj | 710 ++++++++++++++--------------- Workspace_msvc/lib_enc.vcxproj | 742 +++++++++++++++---------------- Workspace_msvc/lib_rend.vcxproj | 414 ++++++++--------- Workspace_msvc/lib_util.vcxproj | 312 ++++++------- Workspace_msvc/renderer.vcxproj | 358 +++++++-------- 9 files changed, 2077 insertions(+), 2077 deletions(-) diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index 9c5f8787a..ca0d96f44 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -1,173 +1,173 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 5ec7a2c01..9578e488d 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 5cbb9a2bb..7a2aa8a7f 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index 157e32f9d..929dd72a8 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index bddcb0dbf..2d06d29aa 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 95298d456..86dcef905 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index 0810f2a85..e47858ae3 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index ebb82c6c0..86730b859 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index fc00b0348..70a130e31 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file -- GitLab From 2633f5751459385a6a8dddc59f3abdd7f56aef72 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:52:32 +0000 Subject: [PATCH 274/698] revert unnecesary changes --- lib_enc/swb_tbe_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index a72a7ced1..316a5b549 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7299,13 +7299,13 @@ void fb_tbe_enc_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; + Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; - Word16 input_fhb[L_FRAME48k]; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); -- GitLab From 673d0f595183ffb52564f3530d34e220c98f55ba Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 15:54:34 +0200 Subject: [PATCH 275/698] revert vcxproj changes --- Workspace_msvc/decoder.vcxproj | 344 +++++++------- Workspace_msvc/encoder.vcxproj | 354 +++++++-------- Workspace_msvc/lib_com.vcxproj | 680 ++++++++++++++-------------- Workspace_msvc/lib_debug.vcxproj | 240 +++++----- Workspace_msvc/lib_dec.vcxproj | 710 ++++++++++++++--------------- Workspace_msvc/lib_enc.vcxproj | 742 +++++++++++++++---------------- Workspace_msvc/lib_rend.vcxproj | 414 ++++++++--------- Workspace_msvc/lib_util.vcxproj | 312 ++++++------- Workspace_msvc/renderer.vcxproj | 358 +++++++-------- 9 files changed, 2077 insertions(+), 2077 deletions(-) diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index c3a5a71d8..ca0d96f44 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -1,173 +1,173 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 75b13f9bd..9578e488d 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 337fc98e2..7a2aa8a7f 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0 - - - - StaticLibrary - v143 - false - MultiByte - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index b6a8a7dd3..929dd72a8 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0 - - - - StaticLibrary - v143 - MultiByte - - - StaticLibrary - v143 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 60a24021f..2d06d29aa 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0 - - - StaticLibrary - v143 - false - MultiByte - - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 7fe2ad96c..86dcef905 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0 - - - - StaticLibrary - v143 - false - MultiByte - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index 10abdb438..e47858ae3 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0 - - - StaticLibrary - v143 - false - MultiByte - - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 1cfb3e588..86730b859 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0 - - - - StaticLibrary - v143 - MultiByte - - - StaticLibrary - v143 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index ecd8b04aa..70a130e31 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file -- GitLab From 15dda6ba60e7042909660554a9213876d87901e1 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:05:55 +0200 Subject: [PATCH 276/698] clang patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5ce4d8ad7..d3dc614aa 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6714,7 +6714,7 @@ void elliptic_bpf_48k_generic_fx( memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - //memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //is this change be? + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //is this change be? move32(); move32(); move32(); -- GitLab From 5bae86227e83790d932c36f68db42e4d5f8787a2 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:09:18 +0200 Subject: [PATCH 277/698] Revert "clang patch" This reverts commit 3ea49c9a6976c614a9d5606562ff79ef3c16eaae. --- lib_com/options.h | 1 + lib_com/swb_tbe_com_fx.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 942f5cfd6..6d02885cc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -82,5 +82,6 @@ //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1d7a9a5b7..8416a2e7d 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6974,7 +6974,7 @@ void elliptic_bpf_48k_generic_fx( } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7100,7 +7100,7 @@ void elliptic_bpf_48k_generic_fx( } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 28ac4dc13474fc61114879e9e095ab1c6b1c2821 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:09:20 +0200 Subject: [PATCH 278/698] Revert "delete func1" This reverts commit 423e399a8be328d6e320b9e66d41a10f5c835126. --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 187 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 6d02885cc..71dd19d71 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -82,6 +82,6 @@ //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 8416a2e7d..828f4b5af 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6688,6 +6688,181 @@ void wb_tbe_extras_reset_synth_fx( return; } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +{ + Word32 L_tmpX; + Word16 i; + Word32 L_tmpMax2 = *L_tmpMax; + Word32 L_tmpAbs; + move32(); + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#else + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#endif + } /*IsUpsampled3*/ + ELSE + { /*IsUpsampled3*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ + *L_tmpMax = L_tmpMax2; + move32(); +} +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * @@ -6753,6 +6928,9 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -6862,6 +7040,7 @@ void elliptic_bpf_48k_generic_fx( } } } /*IsUpsampled3*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6936,6 +7115,9 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 IF( isIVAS ) { @@ -6974,6 +7156,7 @@ void elliptic_bpf_48k_generic_fx( } } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7059,6 +7242,9 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 IF( isIVAS ) { @@ -7100,6 +7286,7 @@ void elliptic_bpf_48k_generic_fx( } } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From f1e9bdaefabbe3f66377b64c6453f5acfa87a423 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:09:22 +0200 Subject: [PATCH 279/698] Revert "deactivate STAGE2 and func1" This reverts commit cbe487105f4baa613fc699d2caebb95e8f6e0c25. --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 71dd19d71..1325dacfa 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,7 +81,7 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From 5f65ef0682f03fc3693cff73f42998bf757b99d7 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:09:24 +0200 Subject: [PATCH 280/698] Revert "fix build errors" This reverts commit 523e8caa7d6c10b1ba758de621e9f5ca6e9619b4. --- lib_com/options.h | 2 +- lib_com/prot_fx.h | 2 +- lib_com/swb_tbe_com_fx.c | 303 ++++++++++++++++++--------------------- lib_dec/swb_tbe_dec_fx.c | 2 +- lib_enc/swb_tbe_enc_fx.c | 6 +- 5 files changed, 146 insertions(+), 169 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1325dacfa..01900a847 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,7 +81,7 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 359320af7..9435087b4 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3259,7 +3259,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS, + int isIVAS; #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 828f4b5af..5c2c74e2e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6872,7 +6872,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS, + int isIVAS; #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -6890,9 +6890,8 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; Word32 L_tmpMax; - Word32 L_tmpX; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word64 W_tmpX; Word64 W_tmpY; @@ -6934,111 +6933,101 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - } + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) + FOR( i = 0; i < L_FRAME48k; ) { - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else + FOR( i = 0; i < L_FRAME48k; ) { - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ @@ -7119,43 +7108,37 @@ void elliptic_bpf_48k_generic_fx( elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } - +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7246,46 +7229,40 @@ void elliptic_bpf_48k_generic_fx( elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - ELSE -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ @@ -7457,7 +7434,7 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, + isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 @@ -7471,7 +7448,7 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, + isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 636702daa..b8ebb033e 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4723,7 +4723,7 @@ void fb_tbe_dec_ivas_fx( synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , - 1 /*isIVAS*/ + Word16 1 /*isIVAS*/ #endif ); pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index f42bd262a..3fe74d1a0 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7332,7 +7332,7 @@ void fb_tbe_enc_fx( elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 0, // isIVAS - is this correct? + 0 // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7468,7 +7468,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS - is this corret? + 1 // isIVAS - is this corret? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7479,7 +7479,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS - is this correct? + 1 // isIVAS - is this correct? #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -- GitLab From f0779e9616693f311140b10bb9967f13f8d2fa58 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:09:25 +0200 Subject: [PATCH 281/698] Revert "fix build errors" This reverts commit 7fd231f4e0784a996a9b24484030cc875f3219a1. --- lib_com/swb_tbe_com_fx.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5c2c74e2e..b83aa0413 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6712,11 +6712,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6734,11 +6734,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6758,11 +6758,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6776,11 +6776,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6793,11 +6793,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6813,11 +6813,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6830,11 +6830,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } @@ -6846,18 +6846,18 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } i++; } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ + } /*IsUpsampled3*/ *L_tmpMax = L_tmpMax2; move32(); } -- GitLab From 4dffc7c6f5fa863979d7c224fdb8ce8cfc08d186 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:09:28 +0200 Subject: [PATCH 282/698] Revert "deactivate func1, activate STAGE2" This reverts commit bc0565c1160cf97a4d23b9137fc608955e6bd890. --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 01900a847..efd9f65cf 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -81,7 +81,7 @@ #define HARM_ENC_INIT //#define HARM_SCE_INIT #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From 903b7f4ff344e567ac72e0ddfa17bb490b0360b2 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:09:30 +0200 Subject: [PATCH 283/698] Revert "add changes from BE branch concerning elliptic_bpf_48k - deactivated STAGE2 and func1" This reverts commit 88c2dd4595710a177de9832a967949c96d654c69. --- lib_com/options.h | 11 +- lib_com/prot_fx.h | 18 +- lib_com/swb_tbe_com_fx.c | 588 ++++++++------------------------------- lib_dec/swb_tbe_dec_fx.c | 15 +- lib_enc/swb_tbe_enc_fx.c | 39 +-- 5 files changed, 137 insertions(+), 534 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index efd9f65cf..99c6e8eb6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,8 +80,13 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + + +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 +#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | + +//----------------------------------------------------------------------- +// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 9435087b4..1452d8e2e 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,15 +3258,7 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 IsUpsampled3, - Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif + const Word16 input_fx[], /* i : i signal Q_input_fx */ Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ @@ -3285,12 +3277,8 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS -#endif -); + Word16 Qout ); + void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ #ifdef ADD_IVAS_TBE_CODE diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index b83aa0413..3fec692dc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6688,198 +6688,14 @@ void wb_tbe_extras_reset_synth_fx( return; } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) -{ - Word32 L_tmpX; - Word16 i; - Word32 L_tmpMax2 = *L_tmpMax; - Word32 L_tmpAbs; - move32(); - IF( !IsUpsampled3 ) - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#else - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#endif - } /*IsUpsampled3*/ - ELSE - { /*IsUpsampled3*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#else - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ - *L_tmpMax = L_tmpMax2; - move32(); -} -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ - void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 IsUpsampled3, - Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ @@ -6888,36 +6704,18 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; - Word32 L_tmpMax; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - Word64 W_tmpX; - Word64 W_tmpY; -#endif - - Word32 *L_tmp = &L_tmp_buffer[4]; - Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *L_output = &L_output_buffer[4]; -#else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; -#endif + Word32 L_output[L_FRAME48k]; FOR( i = 0; i < 4; i++ ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - memory_fx0 = extract_l( memory_fx2[0][i] ); - input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); -#else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); -#endif - L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -6925,17 +6723,55 @@ void elliptic_bpf_48k_generic_fx( move32(); } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - IF( !IsUpsampled3 ) + + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + FOR( i = 4; i < L_FRAME48k; i++ ) { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + Word64 W_tmpX; + Word64 W_tmpY; W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); @@ -6945,11 +6781,15 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + } + +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ + { + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6962,135 +6802,9 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ - ELSE - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } -#else - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#endif + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -7101,46 +6815,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7186,22 +6860,43 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + Word64 W_tmpX; + Word64 W_tmpY; + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } -#endif - +#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -7217,54 +6912,12 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7312,7 +6965,30 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 + FOR( i = 4; i < L_FRAME48k; i++ ) + { + Word64 W_tmpX; + Word64 W_tmpY; + + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -7330,10 +7006,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - #endif - - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -7397,12 +7070,7 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS -#endif -) + Word16 Qout ) { Word16 i, j; Word16 excitation_in_interp3[L_FRAME48k]; @@ -7432,28 +7100,12 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 1, // IsUpsampled3 -#endif - excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx - - ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 1, // IsUpsampled3 -#endif - excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index b8ebb033e..8da680bf8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,12 +4644,7 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - 0 /*isIVAS*/ -#endif - ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4719,13 +4714,7 @@ void fb_tbe_dec_ivas_fx( /* FB TBE synthesis */ push_wmops( "synthesise_fb_high_band" ); - /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 1 /*isIVAS*/ -#endif - ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 3fe74d1a0..316a5b549 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7299,18 +7299,13 @@ void fb_tbe_enc_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; + Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fhb_buffer[L_FRAME48k + 4]; - Word16 *input_fhb = &input_fhb_buffer[0] + 4; -#else - Word16 input_fhb[L_FRAME48k]; -#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); @@ -7330,14 +7325,7 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 0 // isIVAS - is this correct? -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 0, // IsUpsampled3 -#endif - input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7434,12 +7422,7 @@ void fb_tbe_enc_ivas_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4]; - Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4; -#else Word16 input_fhb_new[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS )]; -#endif Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word64 fb_exc_energy; @@ -7466,25 +7449,11 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS - is this corret? -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 0, // IsUpsampled3 -#endif - input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS - is this correct? -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 0, // IsUpsampled3 -#endif - input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From d041f1fd191ded0cbb84e62a70067289b0be815f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:18:58 +0200 Subject: [PATCH 284/698] reapply all nonbe hanges from be branch - inactive --- lib_com/options.h | 12 +- lib_com/prot_fx.h | 37 ++- lib_com/swb_tbe_com_fx.c | 654 ++++++++++++++++++++++++++++++--------- lib_dec/swb_tbe_dec_fx.c | 14 +- lib_enc/swb_tbe_enc_fx.c | 39 ++- 5 files changed, 589 insertions(+), 167 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 99c6e8eb6..85318d23a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,13 +80,7 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT - - - -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | 3.1 WMOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 -#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | - -//----------------------------------------------------------------------- -// OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1452d8e2e..028822857 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,15 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( - const Word16 input_fx[], /* i : i signal Q_input_fx */ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS, +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else + const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ @@ -3267,17 +3275,22 @@ void elliptic_bpf_48k_generic_fx( ); void synthesise_fb_high_band_fx( - const Word16 excitation_in[], /* i : full band excitation */ - Word16 Q_fb_exc, - Word16 output[], /* o : high band speech - 14.0 to 20 kHz */ - const Word32 fb_exc_energy, /* i : full band excitation energy */ - const Word16 ratio, /* i : energy ratio */ - const Word16 L_frame, /* i : ACELP frame length */ - const Word16 bfi, /* i : fec flag */ - Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ - Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ - Word16 bpf_memory_Q[], - Word16 Qout ); + const Word16 excitation_in[], /* i : full band excitation */ + Word16 Q_fb_exc, + Word16 output[], /* o : high band speech - 14.0 to 20 kHz */ + const Word32 fb_exc_energy, /* i : full band excitation energy */ + const Word16 ratio, /* i : energy ratio */ + const Word16 L_frame, /* i : ACELP frame length */ + const Word16 bfi, /* i : fec flag */ + Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ + Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ + Word16 bpf_memory_Q[], + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 isIVAS +#endif + ); void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 3fec692dc..6648a1351 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6687,6 +6687,180 @@ void wb_tbe_extras_reset_synth_fx( return; } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +{ + Word32 L_tmpX; + Word16 i; + Word32 L_tmpMax2 = *L_tmpMax; + Word32 L_tmpAbs; + move32(); + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#else + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#endif + } /*IsUpsampled3*/ + ELSE + { /*IsUpsampled3*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ + *L_tmpMax = L_tmpMax2; + move32(); +} +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() @@ -6694,8 +6868,17 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ + void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS, +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ @@ -6704,18 +6887,37 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 memory_fx0, Q_temp, Q_temp2; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; + Word32 L_tmpMax; + Word32 L_tmpX; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + Word64 W_tmpX; + Word64 W_tmpY; +#endif + + Word32 *L_tmp = &L_tmp_buffer[4]; + Word32 *L_tmp2 = &L_tmp2_buffer[4]; + Word32 *L_output = &L_output_buffer[4]; +#else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; - Word32 L_output[L_FRAME48k]; +#endif FOR( i = 0; i < 4; i++ ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + memory_fx0 = extract_l( memory_fx2[0][i] ); + input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); +#else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); - memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); +#endif + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -6723,88 +6925,182 @@ void elliptic_bpf_48k_generic_fx( move32(); } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + } + } + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } + } + } /*IsUpsampled3*/ + ELSE + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } + } + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } + } + } /*IsUpsampled3*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 - { - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - //L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - } - } -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1*/ + + FOR( i = 4; i < L_FRAME48k; i++ ) { - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); } -#endif - +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -6815,6 +7111,52 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } + } + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } + } + +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6860,43 +7202,22 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 4; i < L_FRAME48k; i++ ) { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - //L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } +#endif + -#else /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } -#endif /*FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2*/ Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -6912,12 +7233,60 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } + } + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } + } + +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -6965,30 +7334,7 @@ void elliptic_bpf_48k_generic_fx( L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -#ifdef FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 - FOR( i = 4; i < L_FRAME48k; i++ ) - { - Word64 W_tmpX; - Word64 W_tmpY; - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - //L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 + 16 ), W_shl( W_tmpY, 2 - 16 ) ) ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } -#else FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -7006,7 +7352,10 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } + #endif + + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -7044,6 +7393,7 @@ void elliptic_bpf_48k_generic_fx( return; } + /*-------------------------------------------------------------------* * synthesise_fb_high_band() * @@ -7070,17 +7420,26 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout ) + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 isIVAS +#endif +) { Word16 i, j; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 excitation_in_interp3_buffer[L_FRAME48k + 4]; + Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4; +#else Word16 excitation_in_interp3[L_FRAME48k]; +#endif + Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; - Word16 tmp[L_FRAME48k]; - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" ); /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7096,16 +7455,31 @@ void synthesise_fb_high_band_fx( } exp_tmp = sub( Q_fb_exc, 2 ); - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" ); IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + isIVAS, +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx + + ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + isIVAS, +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 8da680bf8..dfa12a5bd 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,7 +4644,12 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + 0 /*isIVAS*/ +#endif + ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4714,7 +4719,12 @@ void fb_tbe_dec_ivas_fx( /* FB TBE synthesis */ push_wmops( "synthesise_fb_high_band" ); - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + 1 /*isIVAS*/ +#endif + ); pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ test(); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 316a5b549..f42bd262a 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7299,13 +7299,18 @@ void fb_tbe_enc_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; - Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_buffer[L_FRAME48k + 4]; + Word16 *input_fhb = &input_fhb_buffer[0] + 4; +#else + Word16 input_fhb[L_FRAME48k]; +#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); @@ -7325,7 +7330,14 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 0, // isIVAS - is this correct? +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7422,7 +7434,12 @@ void fb_tbe_enc_ivas_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4]; + Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4; +#else Word16 input_fhb_new[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS )]; +#endif Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word64 fb_exc_energy; @@ -7449,11 +7466,25 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1, // isIVAS - is this corret? +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1, // isIVAS - is this correct? +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From 28bd30c2e59d2c59b75fbc23c426648c92307c3e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:43:15 +0200 Subject: [PATCH 285/698] clang patch --- lib_com/prot_fx.h | 28 ++++++++++++++-------------- lib_com/swb_tbe_com_fx.c | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 028822857..292c82206 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3275,22 +3275,22 @@ void elliptic_bpf_48k_generic_fx( ); void synthesise_fb_high_band_fx( - const Word16 excitation_in[], /* i : full band excitation */ - Word16 Q_fb_exc, - Word16 output[], /* o : high band speech - 14.0 to 20 kHz */ - const Word32 fb_exc_energy, /* i : full band excitation energy */ - const Word16 ratio, /* i : energy ratio */ - const Word16 L_frame, /* i : ACELP frame length */ - const Word16 bfi, /* i : fec flag */ - Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ - Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ - Word16 bpf_memory_Q[], - Word16 Qout + const Word16 excitation_in[], /* i : full band excitation */ + Word16 Q_fb_exc, + Word16 output[], /* o : high band speech - 14.0 to 20 kHz */ + const Word32 fb_exc_energy, /* i : full band excitation energy */ + const Word16 ratio, /* i : energy ratio */ + const Word16 L_frame, /* i : ACELP frame length */ + const Word16 bfi, /* i : fec flag */ + Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ + Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ + Word16 bpf_memory_Q[], + Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS + , + Word16 isIVAS #endif - ); +); void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 6648a1351..8be5c88bb 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6856,7 +6856,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_t i++; } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ + } /*IsUpsampled3*/ *L_tmpMax = L_tmpMax2; move32(); } -- GitLab From a2ecf205c2505903656e4ee7c61787e6008660aa Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:45:12 +0200 Subject: [PATCH 286/698] activate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 85318d23a..1b46169e1 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,7 +80,7 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From 6c8cfde86b1871323d017b7ba38ccb317c7902d2 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 14:51:28 +0000 Subject: [PATCH 287/698] revert some unwanted changes --- lib_com/swb_tbe_com_fx.c | 110 +++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 56 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 8be5c88bb..06df9ec49 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -19,7 +19,6 @@ #define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ #define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ - /*-----------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------*/ @@ -6911,13 +6910,16 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); + memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); #endif - L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -7042,51 +7044,48 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7201,19 +7200,19 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } #endif @@ -7233,8 +7232,8 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -7393,7 +7392,6 @@ void elliptic_bpf_48k_generic_fx( return; } - /*-------------------------------------------------------------------* * synthesise_fb_high_band() * -- GitLab From 05632ea436e66f0b43a6031372be9c6f6a168d37 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 16:53:59 +0200 Subject: [PATCH 288/698] clang patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 06df9ec49..d017914dc 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6912,7 +6912,7 @@ void elliptic_bpf_48k_generic_fx( input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); #else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); -- GitLab From fc16917f1c0dd1df6bfc204e00021fd8b5266851 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Thu, 10 Apr 2025 12:18:55 -0400 Subject: [PATCH 289/698] possible fix to 1421 --- lib_com/options.h | 3 +++ lib_enc/enc_gen_voic_fx.c | 22 +++++++++++++++++++++- lib_enc/enc_tran_fx.c | 29 +++++++++++++++++++++++++++-- lib_enc/transition_enc_fx.c | 12 ++++++++++++ 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 2b88deb5d..45cc3dc42 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -80,4 +80,7 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT + +#define TEST_HR + #endif diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c index 22af9097d..e694b60c2 100644 --- a/lib_enc/enc_gen_voic_fx.c +++ b/lib_enc/enc_gen_voic_fx.c @@ -518,7 +518,12 @@ void encod_gen_voic_ivas_fx( set16_fx( code_preQ_fx, 0, L_SUBFR ); shift_wsp = add( Q_new, shift ); - +#ifdef TEST_HR + if ( LT_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) ) + { + shift_wsp = sub( shift_wsp, 1 ); + } +#endif /* set and write harmonicity flag */ harm_flag_acelp = 0; move16(); @@ -621,18 +626,33 @@ void encod_gen_voic_ivas_fx( IF( LE_32( st_fx->core_brate, ACELP_8k00 ) ) { +#ifdef TEST_HR + gain_enc_lbr_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->coder_type, i_subfr_fx, xn_fx, y1_fx, shift_wsp, y2_fx, code_fx, + &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, gc_mem, gp_mem, clip_gain_fx, L_SUBFR ); +#else gain_enc_lbr_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->coder_type, i_subfr_fx, xn_fx, y1_fx, sub( shift_wsp, 1 ), y2_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, gc_mem, gp_mem, clip_gain_fx, L_SUBFR ); +#endif } ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) ) { +#ifdef TEST_HR + gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr_fx, xn_fx, y1_fx, y2_fx, code_fx, Es_pred_fx, + &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx, shift_wsp ); +#else gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr_fx, xn_fx, y1_fx, y2_fx, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx, sub( shift_wsp, 1 ) ); +#endif } ELSE { +#ifdef TEST_HR + gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame, i_subfr_fx, -1, xn_fx, y1_fx, shift_wsp, y2_fx, code_fx, Es_pred_fx, + &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx ); +#else gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame, i_subfr_fx, -1, xn_fx, y1_fx, sub( shift_wsp, 1 ), y2_fx, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, g_corr_fx, clip_gain_fx ); +#endif } IF( st_fx->Opt_SC_VBR ) { diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index d6935dd0c..8e4f13116 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -520,7 +520,12 @@ Word16 encod_tran_ivas_fx( move16(); set16_fx( code_preQ, 0, L_SUBFR ); shift_wsp = add( Q_new, shift ); - +#ifdef TEST_HR + if ( LT_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) ) + { + shift_wsp = sub( shift_wsp, 1 ); + } +#endif /*----------------------------------------------------------------* * ACELP subframe loop *----------------------------------------------------------------*/ @@ -540,8 +545,11 @@ Word16 encod_tran_ivas_fx( q_h1 = sub( 14, norm_s( h1[0] ) ); Copy_Scale_sig( h1, h2_fx, L_SUBFR, sub( 11, q_h1 ) ); /*Q11*/ +#ifdef TEST_HR + Scale_sig( h1, L_SUBFR, sub( 14, q_h1 ) ); +#else Scale_sig( h1, L_SUBFR, sub( 13, q_h1 ) ); - +#endif /* scaling of xn[] to limit dynamic at 12 bits */ Scale_sig( xn, L_SUBFR, shift ); @@ -559,7 +567,9 @@ Word16 encod_tran_ivas_fx( IF( GE_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) ) { +#ifndef TEST_HR Scale_sig( h1, L_SUBFR, add( 1, shift ) ); /* set h1[] in Q14 with scaling for convolution */ +#endif transf_cdbk_enc_ivas_fx( st_fx, 0, i_subfr, cn, exc_fx, p_Aq, Aw_fx, h1, xn, xn2, y1, y2, Es_pred_fx, &gain_pit, gain_code, g_corr, clip_gain, &gain_preQ, code_preQ, unbits, Q_new, shift ); } @@ -587,22 +597,37 @@ Word16 encod_tran_ivas_fx( IF( Jopt_flag == 0 ) { /* SQ gain_code */ +#ifdef TEST_HR + gain_enc_tc_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y2, code, Es_pred_fx, + &gain_pit, &gain_code, &gain_inov, &norm_gain_code, shift_wsp ); +#else gain_enc_tc_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y2, code, Es_pred_fx, &gain_pit, &gain_code, &gain_inov, &norm_gain_code, sub( shift_wsp, 1 ) ); +#endif } ELSE { IF( GT_32( st_fx->core_brate, ACELP_32k ) ) { /* SQ gain_pit and gain_code */ +#ifdef TEST_HR + gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y1, y2, code, Es_pred_fx, + &gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain, shift_wsp ); +#else gain_enc_SQ_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, i_subfr, xn, y1, y2, code, Es_pred_fx, &gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain, sub( shift_wsp, 1 ) ); +#endif } ELSE { /* VQ gain_pit and gain_code */ +#ifdef TEST_HR + gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame_fx, i_subfr, tc_subfr, xn, y1, shift_wsp, y2, code, Es_pred_fx, + &gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain ); +#else gain_enc_mless_ivas_fx( hBstr, st_fx->acelp_cfg.gains_mode, st_fx->element_mode, L_frame_fx, i_subfr, tc_subfr, xn, y1, sub( shift_wsp, 1 ), y2, code, Es_pred_fx, &gain_pit, &gain_code, &gain_inov, &norm_gain_code, g_corr, clip_gain ); +#endif } } gp_clip_test_gain_pit_fx( st_fx->element_mode, st_fx->core_brate, gain_pit, st_fx->clip_var_fx ); diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c index 6718552c5..99e8b44fa 100644 --- a/lib_enc/transition_enc_fx.c +++ b/lib_enc/transition_enc_fx.c @@ -1423,7 +1423,11 @@ void transition_enc_ivas_fx( *clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, ( Q_new + shift - 1 ) ); move16(); +#ifdef TEST_HR + Copy( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 )); +#else Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 1 ); +#endif lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx_q15, xn_fx, y1_fx, xn2_fx, L_SUBFR, st_fx->L_frame, g_corr_fx, *clip_gain, gain_pit_fx, &lp_flag ); @@ -1660,7 +1664,11 @@ void transition_enc_ivas_fx( *clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, Q_new ); move16(); +#ifdef TEST_HR + Copy( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ) ); +#else Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 1 ); +#endif lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx_q15, xn_fx, y1_fx, xn2_fx, L_SUBFR, st_fx->L_frame, g_corr_fx, *clip_gain, gain_pit_fx, &lp_flag ); IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) @@ -2082,7 +2090,11 @@ static void tc_enc_ivas_fx( /*--------------------------------------------------------------* * compute glottal-shape codebook excitation *--------------------------------------------------------------*/ +#ifdef TEST_HR + Copy( h1, h1_fx, L_SUBFR + ( M + 1 ) ); +#else Copy_Scale_sig( h1, h1_fx, L_SUBFR + ( M + 1 ), 1 ); +#endif /* create filtered glottal codebook contribution */ conv_fx( &exc_fx[i_subfr], h1_fx, yy1_fx, L_SUBFR ); -- GitLab From b98f74c7404d96d9ae934b4746d723fe1aec7803 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Thu, 10 Apr 2025 12:24:43 -0400 Subject: [PATCH 290/698] fix clang --- lib_enc/transition_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c index 99e8b44fa..9f630da66 100644 --- a/lib_enc/transition_enc_fx.c +++ b/lib_enc/transition_enc_fx.c @@ -1424,7 +1424,7 @@ void transition_enc_ivas_fx( move16(); #ifdef TEST_HR - Copy( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 )); + Copy( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ) ); #else Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 1 ); #endif -- GitLab From 70678f13d9dcd5fec96c87f605769ec7bca4d707 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 08:00:09 +0200 Subject: [PATCH 291/698] fix memory error in FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic --- lib_com/swb_tbe_com_fx.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d017914dc..8a4a44c7b 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7230,15 +7230,17 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic FOR( j = 0; j < 4; j++ ) { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); move32(); move32(); } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); @@ -7286,6 +7288,15 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + FOR( j = 0; j < 4; j++ ) + { + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + } + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From 5fe189beaf3e0537bfcb840690ae8048d2bad78a Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 08:16:01 +0200 Subject: [PATCH 292/698] fix conflict --- lib_com/options.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index e2d92e670..796c29dda 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -82,12 +82,9 @@ #define HARM_PUSH_BIT #define HARM_ENC_INIT //#define HARM_SCE_INIT -<<<<<<< HEAD +#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ +#define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -======= -#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ -#define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ ->>>>>>> main #endif -- GitLab From 83e6adf7d674df3ed1eb016605ec5e954359919b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 08:44:39 +0200 Subject: [PATCH 293/698] deactivate all speedups --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 796c29dda..d9dc70338 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,7 +84,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 8a4a44c7b..72857d1fb 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6687,13 +6687,40 @@ void wb_tbe_extras_reset_synth_fx( return; } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -inline static void elliptic_bpf_48k_generic_func1( Word16 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +static inline Word64 wmac_1616( Word64 x1, Word16 x2, Word16 x3 ) +{ + return W_mac_16_16( x1, x2, x3 ); +} + +static inline Word64 wmac_3216( Word64 x1, Word32 x2, Word16 x3 ) +{ + return W_mac_32_16( x1, x2, x3 ); +} + +static inline Word64 wmsu_3216( Word64 x1, Word32 x2, Word16 x3 ) +{ + return W_msu_32_16( x1, x2, x3 ); +} + +inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *input32_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) { Word32 L_tmpX; Word16 i; Word32 L_tmpMax2 = *L_tmpMax; Word32 L_tmpAbs; move32(); + + if(input16_fx > 0) + { + Word64 ( *wmac )( Word64, Word16, Word16 ); + Word64 ( *wmsu )( Word64, Word32, Word16 ); + } + if( input32_fx > 0 ) + { + Word64 ( *wmac )( Word64, Word32, Word16 ); + Word64 ( *wmsu )( Word64, Word32, Word16 ); + } + IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -- GitLab From 4cf3a55949a04cde9957911a047e48481a0c27ff Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 08:46:31 +0200 Subject: [PATCH 294/698] clang patch --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 72857d1fb..916bd3588 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6710,12 +6710,12 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i Word32 L_tmpAbs; move32(); - if(input16_fx > 0) + if ( input16_fx > 0 ) { Word64 ( *wmac )( Word64, Word16, Word16 ); Word64 ( *wmsu )( Word64, Word32, Word16 ); } - if( input32_fx > 0 ) + if ( input32_fx > 0 ) { Word64 ( *wmac )( Word64, Word32, Word16 ); Word64 ( *wmsu )( Word64, Word32, Word16 ); -- GitLab From cfeceee1088b315b9949acfee3392c0d75e1bc76 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 09:21:58 +0200 Subject: [PATCH 295/698] synched FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic with be branch, changed func1 --- lib_com/swb_tbe_com_fx.c | 127 ++++++++++++--------------------------- 1 file changed, 37 insertions(+), 90 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 916bd3588..4dc678913 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6697,9 +6697,14 @@ static inline Word64 wmac_3216( Word64 x1, Word32 x2, Word16 x3 ) return W_mac_32_16( x1, x2, x3 ); } -static inline Word64 wmsu_3216( Word64 x1, Word32 x2, Word16 x3 ) +static inline Word64 finalSat16( Word64 W_tmpx, Word64 W_tmpy ) { - return W_msu_32_16( x1, x2, x3 ); + return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +} + +static inline Word64 finalSat32( Word64 W_tmpx, Word64 W_tmpy ) +{ + return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); } inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *input32_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) @@ -6713,12 +6718,16 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i if ( input16_fx > 0 ) { Word64 ( *wmac )( Word64, Word16, Word16 ); - Word64 ( *wmsu )( Word64, Word32, Word16 ); + Word64 ( *finalSat )( Word64, Word64 ); + wmac = wmac_1616; + finalSat = finalSat16; } if ( input32_fx > 0 ) { Word64 ( *wmac )( Word64, Word32, Word16 ); - Word64 ( *wmsu )( Word64, Word32, Word16 ); + Word64 ( *finalSat )( Word64, Word64 ); + wmac = wmac_3216; + finalSat = finalSat32; } IF( !IsUpsampled3 ) @@ -6726,16 +6735,16 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ move32(); if ( *L_tmpMax > 0 ) { @@ -6747,27 +6756,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i } } #else - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } + assert( 0 ); /*kein bock*/ #endif } /*IsUpsampled3*/ ELSE @@ -6829,58 +6818,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i i++; } #else - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } + assert( 0 ); /*kein bock*/ #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ *L_tmpMax = L_tmpMax2; @@ -6932,32 +6870,41 @@ void elliptic_bpf_48k_generic_fx( Word32 memory2_fx_2[4], memory2_fx_3[4]; #endif - FOR( i = 0; i < 4; i++ ) - { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + { + FOR( i = 0; i < 4; i++ ) memory_fx0 = extract_l( memory_fx2[0][i] ); input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + move32(); + move32(); + } #else + FOR( i = 0; i < 4; i++ ) + { memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); -#endif move32(); move32(); move32(); move32(); move32(); } + } +#endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); + elliptic_bpf_48k_generic_func1( input_fx, 0, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ IF( !IsUpsampled3 ) { @@ -7141,7 +7088,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); + elliptic_bpf_48k_generic_func1( 0, L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 IF( isIVAS ) @@ -7270,7 +7217,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); + elliptic_bpf_48k_generic_func1( 0, L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 IF( isIVAS ) @@ -7323,7 +7270,7 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } - + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From c72ae0ff80b67d3ba36abea7b14bd60bf43fbf8b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 09:26:02 +0200 Subject: [PATCH 296/698] clang patch --- lib_com/swb_tbe_com_fx.c | 360 +++++++++++++++++++-------------------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 4dc678913..24d05a27c 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6872,7 +6872,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic { - FOR( i = 0; i < 4; i++ ) + FOR( i = 0; i < 4; i++ ) memory_fx0 = extract_l( memory_fx2[0][i] ); input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); @@ -6898,7 +6898,7 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } - } +} #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic @@ -7018,61 +7018,61 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +move32(); + +L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +move32(); + +L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +move32(); +L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +move32(); +FOR( i = 4; i < L_FRAME48k; i++ ) +{ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } +} #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; @@ -7130,64 +7130,64 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - move32(); - L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ +L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ +L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ +move32(); +L_tmpMax = L_abs( L_tmp2[0] ); +L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +move32(); +L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); +L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +move32(); +L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); +L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ +L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ +move32(); +L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); +FOR( i = 4; i < L_FRAME48k; i++ ) +{ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); +} #endif @@ -7262,80 +7262,80 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - FOR( j = 0; j < 4; j++ ) - { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - } - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - move32(); - L_tmpMax = L_abs( L_output[0] ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ +FOR( j = 0; j < 4; j++ ) +{ + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); +} - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ +L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ +L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ +move32(); +L_tmpMax = L_abs( L_output[0] ); + +L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ +L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ +L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ +move32(); +L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + +L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ +L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ +L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +move32(); +L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + +L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ +move32(); +L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + +FOR( i = 4; i < L_FRAME48k; i++ ) +{ + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); +} #endif -- GitLab From 3c2f24ba4a8f61246524a6b1f8c02edcdd3eedf2 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 09:38:47 +0200 Subject: [PATCH 297/698] fix error - deactivate all speedups --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index d9dc70338..fac5b1dfc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,7 +84,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +////#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 24d05a27c..9405f0aaf 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6871,8 +6871,8 @@ void elliptic_bpf_48k_generic_fx( #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + FOR( i = 0; i < 4; i++ ) { - FOR( i = 0; i < 4; i++ ) memory_fx0 = extract_l( memory_fx2[0][i] ); input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); @@ -6898,7 +6898,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } -} #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic -- GitLab From fa009ccaa2ae8c3bd9c7a3f9bde78511f84ccb8e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 09:42:03 +0200 Subject: [PATCH 298/698] clang patch --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 356 +++++++++++++++++++-------------------- 2 files changed, 179 insertions(+), 179 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index fac5b1dfc..d9dc70338 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,7 +84,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ -////#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 9405f0aaf..1e8ded1ca 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7017,61 +7017,61 @@ void elliptic_bpf_48k_generic_fx( #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ -L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -move32(); - -L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -move32(); - -L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -move32(); -L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ -move32(); -FOR( i = 4; i < L_FRAME48k; i++ ) -{ - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); -} + + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; @@ -7129,64 +7129,64 @@ FOR( i = 4; i < L_FRAME48k; i++ ) #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ -L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ -L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ -move32(); -L_tmpMax = L_abs( L_tmp2[0] ); -L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -move32(); -L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); -L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -move32(); -L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); -L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ -L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ -move32(); -L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); -FOR( i = 4; i < L_FRAME48k; i++ ) -{ - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); -} + L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } #endif @@ -7261,80 +7261,80 @@ FOR( i = 4; i < L_FRAME48k; i++ ) #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ -FOR( j = 0; j < 4; j++ ) -{ - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + FOR( j = 0; j < 4; j++ ) + { + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + } + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ move32(); + L_tmpMax = L_abs( L_output[0] ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); -} + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); -L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ -L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ -L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ -move32(); -L_tmpMax = L_abs( L_output[0] ); - -L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ -L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ -L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ -move32(); -L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); - -L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ -L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ -L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ -move32(); -L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); - -L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ -L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ -L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ -move32(); -L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); - -FOR( i = 4; i < L_FRAME48k; i++ ) -{ - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); -} + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } #endif -- GitLab From 89cdfaf59e5cb05b12fd5ec649a3abccd8b11674 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 09:50:56 +0200 Subject: [PATCH 299/698] some more work on func1 --- lib_com/swb_tbe_com_fx.c | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1e8ded1ca..8044e9367 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6686,7 +6686,7 @@ void wb_tbe_extras_reset_synth_fx( return; } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +#if defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 ) && defined (FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1) static inline Word64 wmac_1616( Word64 x1, Word16 x2, Word16 x3 ) { return W_mac_16_16( x1, x2, x3 ); @@ -6719,6 +6719,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i { Word64 ( *wmac )( Word64, Word16, Word16 ); Word64 ( *finalSat )( Word64, Word64 ); + Word16 *input_fx = input16_fx; wmac = wmac_1616; finalSat = finalSat16; } @@ -6726,13 +6727,13 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i { Word64 ( *wmac )( Word64, Word32, Word16 ); Word64 ( *finalSat )( Word64, Word64 ); + Word32 *input_fx = input32_fx; wmac = wmac_3216; finalSat = finalSat32; } IF( !IsUpsampled3 ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); @@ -6755,22 +6756,18 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } } -#else - assert( 0 ); /*kein bock*/ -#endif } /*IsUpsampled3*/ ELSE { /*IsUpsampled3*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; ) { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpX = wmac( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ move32(); if ( *L_tmpMax > 0 ) { @@ -6782,13 +6779,13 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i } i++; - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ move32(); if ( *L_tmpMax > 0 ) { @@ -6801,11 +6798,11 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i i++; W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpX = wmac( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ move32(); if ( *L_tmpMax > 0 ) { @@ -6817,9 +6814,6 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i } i++; } -#else - assert( 0 ); /*kein bock*/ -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ *L_tmpMax = L_tmpMax2; move32(); -- GitLab From db082f377b3ccd6b196d1cf00e1ca12f554b09de Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 10:07:27 +0200 Subject: [PATCH 300/698] clang patch --- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index d9dc70338..796c29dda 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,7 +84,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 8044e9367..1008b9554 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7043,6 +7043,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From eeb01697dd5a4a88011c6a4ae198d372b401a475 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 10:10:00 +0200 Subject: [PATCH 301/698] clang patch --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1008b9554..6a97ae0c5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6686,7 +6686,7 @@ void wb_tbe_extras_reset_synth_fx( return; } -#if defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 ) && defined (FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1) +#if defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 ) && defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 ) static inline Word64 wmac_1616( Word64 x1, Word16 x2, Word16 x3 ) { return W_mac_16_16( x1, x2, x3 ); @@ -6814,7 +6814,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i } i++; } - } /*IsUpsampled3*/ + } /*IsUpsampled3*/ *L_tmpMax = L_tmpMax2; move32(); } -- GitLab From 840a1e90837b3748ea00b38206c339f108f62fb2 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Fri, 11 Apr 2025 10:33:10 +0200 Subject: [PATCH 302/698] lib_rend: replace BASOP_Util_Divide3232_Scale_cadence() by BASOP_Util_Divide3232_Scale_newton() --- .../ivas_dirac_dec_binaural_functions_fx.c | 44 +++++++++---------- lib_rend/ivas_dirac_output_synthesis_dec_fx.c | 20 ++++----- lib_rend/ivas_dirac_rend_fx.c | 10 ++--- lib_rend/ivas_orient_trk_fx.c | 14 +++--- lib_rend/ivas_reverb_filter_design_fx.c | 22 +++++----- lib_rend/ivas_rotation_fx.c | 2 +- lib_rend/ivas_shoebox_fx.c | 8 ++-- lib_rend/lib_rend.c | 4 +- 8 files changed, 62 insertions(+), 62 deletions(-) diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index ce602160f..59ba8062e 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -1655,7 +1655,7 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric move32(); /* Formulate average diffuseness over frame */ - frameMeanDiffuseness = BASOP_Util_Divide3232_Scale_cadence( frameMeanDiffuseness, L_max( EPSILLON_FX, frameMeanDiffusenessEneWeight_fx[bin] ), &exp ); // exp = exp + 31 - q_meanEnePerCh - exp1 + frameMeanDiffuseness = BASOP_Util_Divide3232_Scale_newton( frameMeanDiffuseness, L_max( EPSILLON_FX, frameMeanDiffusenessEneWeight_fx[bin] ), &exp ); // exp = exp + 31 - q_meanEnePerCh - exp1 exp = sub( exp, sub( sub( 31, q_meanEnePerCh ), exp1 ) ); hDiracDecBin->frameMeanDiffuseness_fx[bin] = L_shl( frameMeanDiffuseness, sub( exp, 2 ) ); // Q29 move32(); @@ -1687,7 +1687,7 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric move16(); den = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEnePrev_fx[0][bin], hDiracDecBin->ChEnePrev_e[0][bin], hDiracDecBin->ChEnePrev_fx[1][bin], hDiracDecBin->ChEnePrev_e[1][bin], &den_e ); den = L_max( 1, den ); - IIReneLimiter_fx = BASOP_Util_Divide3232_Scale_cadence( num, den, &exp ); + IIReneLimiter_fx = BASOP_Util_Divide3232_Scale_newton( num, den, &exp ); exp = add( sub( num_e, den_e ), add( 5, exp ) ); IF( L_shr_sat( IIReneLimiter_fx, sub( 31, exp ) ) > 0 ) { @@ -3310,7 +3310,7 @@ static void eig2x2_fx( tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 ); #if 1 - tmp2 = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, tmp3, &exp ); + tmp2 = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, tmp3, &exp ); exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) ); normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2 q_tmp2 = sub( 31, exp ); @@ -3386,7 +3386,7 @@ static void eig2x2_fx( tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 ); #if 1 - tmp2 = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, tmp3, &exp ); + tmp2 = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, tmp3, &exp ); exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) ); normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2 q_tmp2 = sub( 31, exp ); @@ -3731,11 +3731,11 @@ static void chol2x2_fx( // 4611686 = 1e-12 in Q62 IF( outRe[0][0] == 0 ) { - outRe[1][0] = BASOP_Util_Divide3232_Scale_cadence( c_re, 4611686, &exp ); + outRe[1][0] = BASOP_Util_Divide3232_Scale_newton( c_re, 4611686, &exp ); move32(); q_re2 = add( sub( 31, exp ), sub( q_c, 62 ) ); - outIm[1][0] = BASOP_Util_Divide3232_Scale_cadence( c_im, 4611686, &exp ); + outIm[1][0] = BASOP_Util_Divide3232_Scale_newton( c_im, 4611686, &exp ); move32(); q_im = add( sub( 31, exp ), sub( q_c, 62 ) ); } @@ -3792,7 +3792,7 @@ static void chol2x2_fx( } ELSE { - temp = BASOP_Util_Divide3232_Scale_cadence( temp, e1, &exp ); + temp = BASOP_Util_Divide3232_Scale_newton( temp, e1, &exp ); q_tmp = add( sub( 31, exp ), sub( q_tmp, q_e ) ); } if ( temp == 0 ) @@ -3837,7 +3837,7 @@ static void chol2x2_fx( // 4611686 = Q62 IF( outRe[1][1] == 0 ) { - // outRe[0][1] = BASOP_Util_Divide3232_Scale_cadence( c_re, 4611686, &exp ); + // outRe[0][1] = BASOP_Util_Divide3232_Scale_newton( c_re, 4611686, &exp ); Word32 tmp1 = 1953125005; /* 1/4611686 Q62 */ exp = 9; @@ -3845,7 +3845,7 @@ static void chol2x2_fx( move32(); q_re2 = add( sub( 31, exp ), sub( q_c, 62 ) ); - // outIm[0][1] = BASOP_Util_Divide3232_Scale_cadence( -c_im, 4611686, &exp ); + // outIm[0][1] = BASOP_Util_Divide3232_Scale_newton( -c_im, 4611686, &exp ); outIm[0][1] = Mpy_32_32( tmp1, -c_im ); move32(); q_im = add( sub( 31, exp ), sub( q_c, 62 ) ); @@ -3853,13 +3853,13 @@ static void chol2x2_fx( ELSE { { - // outRe[0][1] = BASOP_Util_Divide3232_Scale_cadence( c_re, outRe[1][1], &exp ); - Word32 tmp1 = BASOP_Util_Divide3232_Scale_cadence( 0x7FFFFFFF, outRe[1][1], &exp ); + // outRe[0][1] = BASOP_Util_Divide3232_Scale_newton( c_re, outRe[1][1], &exp ); + Word32 tmp1 = BASOP_Util_Divide3232_Scale_newton( 0x7FFFFFFF, outRe[1][1], &exp ); outRe[0][1] = Mpy_32_32( tmp1, c_re ); move32(); q_re2 = add( sub( 31, exp ), sub( q_c, q_re1 ) ); - // outIm[0][1] = BASOP_Util_Divide3232_Scale_cadence( -c_im, outRe[1][1], &exp ); + // outIm[0][1] = BASOP_Util_Divide3232_Scale_newton( -c_im, outRe[1][1], &exp ); outIm[0][1] = Mpy_32_32( tmp1, -c_im ); move32(); q_im = add( sub( 31, exp ), sub( q_c, q_re1 ) ); @@ -3882,12 +3882,12 @@ static void chol2x2_fx( // 4611686 = 1e-12 in Q62 IF( e2 == 0 ) { - temp = BASOP_Util_Divide3232_Scale_cadence( temp, 4611686, &exp ); + temp = BASOP_Util_Divide3232_Scale_newton( temp, 4611686, &exp ); q_tmp = add( sub( 31, exp ), sub( q_tmp, 62 ) ); } ELSE { - temp = BASOP_Util_Divide3232_Scale_cadence( temp, e2, &exp ); + temp = BASOP_Util_Divide3232_Scale_newton( temp, e2, &exp ); q_tmp = add( sub( 31, exp ), sub( q_tmp, q_e ) ); } if ( temp == 0 ) @@ -4035,7 +4035,7 @@ static void formulate2x2MixingMatrix_fx( } ELSE { - maxEneDiv_fx = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, maxEne_fx, &exp ); + maxEneDiv_fx = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, maxEne_fx, &exp ); q_maxEneDiv = add( sub( 31, exp ), sub( Q30, q_maxEne ) ); } exp = norm_l( maxEneDiv_fx ); @@ -4100,7 +4100,7 @@ static void formulate2x2MixingMatrix_fx( } ELSE { - temp = BASOP_Util_Divide3232_Scale_cadence( E_out1, 4611686, &exp ); // 4611686 = Q62 + temp = BASOP_Util_Divide3232_Scale_newton( E_out1, 4611686, &exp ); // 4611686 = Q62 exp = sub( exp, sub( q_eout, 62 ) ); Ghat_fx[0] = Sqrt32( temp, &exp ); // Q = 31 - exp } @@ -4109,7 +4109,7 @@ static void formulate2x2MixingMatrix_fx( { temp = BASOP_Util_Add_Mant32Exp( temp, sub( 31, q_ein ), EPSILON_MANT, EPSILON_EXP, &exp_temp ); - temp = BASOP_Util_Divide3232_Scale_cadence( E_out1, temp, &exp ); + temp = BASOP_Util_Divide3232_Scale_newton( E_out1, temp, &exp ); exp = sub( exp, sub( q_eout, sub( 31, exp_temp ) ) ); Ghat_fx[0] = Sqrt32( temp, &exp ); // Q = 31 - exp } @@ -4127,7 +4127,7 @@ static void formulate2x2MixingMatrix_fx( } ELSE { - temp = BASOP_Util_Divide3232_Scale_cadence( E_out2, 4611686, &exp1 ); // 4611686 = Q62 + temp = BASOP_Util_Divide3232_Scale_newton( E_out2, 4611686, &exp1 ); // 4611686 = Q62 exp1 = sub( exp1, sub( q_eout, 62 ) ); Ghat_fx[1] = Sqrt32( temp, &exp1 ); // Q = 31 - exp1 } @@ -4136,7 +4136,7 @@ static void formulate2x2MixingMatrix_fx( { temp = BASOP_Util_Add_Mant32Exp( temp, sub( 31, q_ein ), EPSILON_MANT, EPSILON_EXP, &exp_temp ); - temp = BASOP_Util_Divide3232_Scale_cadence( E_out2, temp, &exp1 ); + temp = BASOP_Util_Divide3232_Scale_newton( E_out2, temp, &exp1 ); exp1 = sub( exp1, sub( q_eout, sub( 31, exp_temp ) ) ); Ghat_fx[1] = Sqrt32( temp, &exp1 ); // Q = 31 - exp1 } @@ -4195,7 +4195,7 @@ static void formulate2x2MixingMatrix_fx( } ELSE { - temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, D_fx[0], &exp ); + temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, D_fx[0], &exp ); exp = sub( exp, sub( Q30, q_D ) ); } div_fx[0] = Sqrt32( temp, &exp ); // Q = 31 - exp @@ -4328,7 +4328,7 @@ static void formulate2x2MixingMatrix_fx( Word16 Pre_shift, Pim_shift; temp = BASOP_Util_Add_Mant32Exp( Sx_fx[chB], sub( 31, q_Sx ), EPSILON_MANT, EPSILON_EXP, &exp_temp ); - temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, temp, &exp ); + temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, temp, &exp ); Pre_shift = norm_l( Pre_fx[chA][chB] ); Pim_shift = norm_l( Pim_fx[chA][chB] ); Pre_fx[chA][chB] = Mpy_32_32( L_shl( Pre_fx[chA][chB], Pre_shift ), temp ); @@ -4372,7 +4372,7 @@ static void formulate2x2MixingMatrix_fx( { Word16 Pre_shift, Pim_shift; temp = BASOP_Util_Add_Mant32Exp( Sx_fx[chB], sub( 31, q_Sx ), EPSILON_MANT, EPSILON_EXP, &exp_temp ); - temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, temp, &exp ); + temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, temp, &exp ); q_temp = add( sub( sub( q_P, exp ), sub( 31, Q30 ) ), exp_temp ); Pre_shift = norm_l( Pre_fx[0][chB] ); diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index 7b446a80e..0cdbe3a10 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -2097,9 +2097,9 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( move16(); exp1 = 0; move16(); - tmp32 = BASOP_Util_Divide3232_Scale_cadence( L_shl( p_cy_auto_dir_smooth[num_freq_bands], sub( q_com, q_cy_auto_dir_smooth_local[1] ) ), - ( L_add( Sqrt32( h_dirac_output_synthesis_state->direct_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp) - &exp1 ); + tmp32 = BASOP_Util_Divide3232_Scale_newton( L_shl( p_cy_auto_dir_smooth[num_freq_bands], sub( q_com, q_cy_auto_dir_smooth_local[1] ) ), + ( L_add( Sqrt32( h_dirac_output_synthesis_state->direct_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp) + &exp1 ); target_power_y = L_shr( tmp32, 1 ); // Q31 + (q_com - (31 - exp)) q_target_power_y = add( sub( Q31, exp1 ), sub( q_com, sub( Q31, exp ) ) ); q_target_power_y = sub( q_target_power_y, 1 ); @@ -2108,9 +2108,9 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( move16(); exp1 = 0; move16(); - tmp32 = BASOP_Util_Divide3232_Scale_cadence( L_shl( p_cy_auto_diff_smooth[num_freq_bands], sub( q_com, h_dirac_output_synthesis_state->q_cy_auto_diff_smooth ) ), - ( L_add( Sqrt32( h_dirac_output_synthesis_state->diffuse_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp) - &exp1 ); + tmp32 = BASOP_Util_Divide3232_Scale_newton( L_shl( p_cy_auto_diff_smooth[num_freq_bands], sub( q_com, h_dirac_output_synthesis_state->q_cy_auto_diff_smooth ) ), + ( L_add( Sqrt32( h_dirac_output_synthesis_state->diffuse_power_factor_fx[0], &exp ), EPSILON_FX ) ), // (Q31 - exp) + &exp1 ); target_power_y1 = L_shr( tmp32, 1 ); // Q31 + (q_com - (31 - exp)) q_target_power_y1 = add( sub( Q31, exp1 ), sub( q_com, sub( Q31, exp ) ) ); q_target_power_y1 = sub( q_target_power_y1, 1 ); @@ -2268,7 +2268,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( IF( EQ_32( *( p_power_smooth_prev ), EPSILON_FX ) ) { p_power_smooth_prev++; - L_tmp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q31, EPSILON_FX, &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/ + L_tmp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q31, EPSILON_FX, &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/ exp_arr[k * num_freq_bands + l] = exp; move16(); @@ -2277,7 +2277,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( } ELSE { - L_tmp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q31, *( p_power_smooth_prev++ ), &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/ + L_tmp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q31, *( p_power_smooth_prev++ ), &exp ); /*Q=31-(exp-(31-q_proto_power_smooth))*/ exp_arr[k * num_freq_bands + l] = exp; move16(); @@ -2495,7 +2495,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( exp = 0; move16(); - L_tmp = BASOP_Util_Divide3232_Scale_cadence( *( p_cy_auto_diff_smooth_prev++ ), ( *( p_power_diff_smooth_prev++ ) ), &exp ); // (Q31 - exp) + (q_a - q_b) + L_tmp = BASOP_Util_Divide3232_Scale_newton( *( p_cy_auto_diff_smooth_prev++ ), ( *( p_power_diff_smooth_prev++ ) ), &exp ); // (Q31 - exp) + (q_a - q_b) exp = sub( Q31, add( sub( Q31, exp ), sub( h_dirac_output_synthesis_state->q_cy_auto_diff_smooth_prev, h_dirac_output_synthesis_state->proto_power_diff_smooth_q ) ) ); *( p_gains_diff ) = Sqrt32( L_tmp, &exp ); // (31 - exp) @@ -3982,7 +3982,7 @@ void ivas_lfe_synth_with_filters_fx( } ELSE { - lfeGain_fx = extract_h( BASOP_Util_Divide3232_Scale_cadence( hMasaLfeSynth->targetEneLfeSmooth_fx, L_add( EPSILON_FX, hMasaLfeSynth->transportEneSmooth_fx ), &lfeGain_fx_exp ) ); /*Q(31-(lfeGain_fx_exp+hMasaLfeSynth->transportEneSmooth_q-hMasaLfeSynth->targetEneLfeSmooth_q))-16*/ + lfeGain_fx = extract_h( BASOP_Util_Divide3232_Scale_newton( hMasaLfeSynth->targetEneLfeSmooth_fx, L_add( EPSILON_FX, hMasaLfeSynth->transportEneSmooth_fx ), &lfeGain_fx_exp ) ); /*Q(31-(lfeGain_fx_exp+hMasaLfeSynth->transportEneSmooth_q-hMasaLfeSynth->targetEneLfeSmooth_q))-16*/ lfeGain_fx_exp = add( sub( hMasaLfeSynth->transportEneSmooth_q, hMasaLfeSynth->targetEneLfeSmooth_q ), lfeGain_fx_exp ); lfeGain_fx = Sqrt16( lfeGain_fx, &lfeGain_fx_exp ); // Q15-lfeGain_fx_exp lfeGain_fx = shl_r( lfeGain_fx, lfeGain_fx_exp ); // Q15 diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index f67f3761b..9de710b36 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -2691,8 +2691,8 @@ void protoSignalComputation2_fx( q_lr_bb_power = stereo_type_detect->q_right_bb_power; move16(); } - q_lr_bb_power = sub( q_lr_bb_power, 1 ); /* = (lr_bb_power_fx * 2) */ - temp = BASOP_Util_Divide3232_Scale_cadence( lr_bb_power_fx, L_add( stereo_type_detect->total_bb_power_fx, EPSILON_FX ), &exp ); // Q(31-(exp+stereo_type_detect->q_total_bb_power-q_lr_bb_power)) + q_lr_bb_power = sub( q_lr_bb_power, 1 ); /* = (lr_bb_power_fx * 2) */ + temp = BASOP_Util_Divide3232_Scale_newton( lr_bb_power_fx, L_add( stereo_type_detect->total_bb_power_fx, EPSILON_FX ), &exp ); // Q(31-(exp+stereo_type_detect->q_total_bb_power-q_lr_bb_power)) exp = sub( 31, add( sub( 31, exp ), sub( q_lr_bb_power, stereo_type_detect->q_total_bb_power ) ) ); temp = BASOP_Util_Log2( temp ); // q25 IF( NE_32( temp, MIN_32 ) ) @@ -2740,8 +2740,8 @@ void protoSignalComputation2_fx( move32(); q_lr_hi_power = stereo_type_detect->q_right_hi_power; } - q_lr_hi_power = sub( q_lr_hi_power, 1 ); /* = (q_lr_hi_power * 2) */ - temp = BASOP_Util_Divide3232_Scale_cadence( lr_hi_power_fx, L_add( stereo_type_detect->total_hi_power_fx, EPSILON_FX ), &exp ); // Q=31-(exp+ stereo_type_detect->q_total_hi_power-q_lr_hi_power) + q_lr_hi_power = sub( q_lr_hi_power, 1 ); /* = (q_lr_hi_power * 2) */ + temp = BASOP_Util_Divide3232_Scale_newton( lr_hi_power_fx, L_add( stereo_type_detect->total_hi_power_fx, EPSILON_FX ), &exp ); // Q=31-(exp+ stereo_type_detect->q_total_hi_power-q_lr_hi_power) exp = sub( 31, add( sub( 31, exp ), sub( q_lr_hi_power, stereo_type_detect->q_total_hi_power ) ) ); temp = BASOP_Util_Log2( temp ); // q25 IF( NE_32( temp, MIN_32 ) ) @@ -3419,7 +3419,7 @@ void computeDirectionAngles_fx( } ELSE { - temp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, intensityNorm, &exp ); // Q=31-(exp-(30-q_intensityNorm)) + temp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, intensityNorm, &exp ); // Q=31-(exp-(30-q_intensityNorm)) exp = sub( exp, sub( Q30, q_intensityNorm ) ); temp = Sqrt32( temp, &exp ); // Q=31-exp q_temp = sub( 31, exp ); diff --git a/lib_rend/ivas_orient_trk_fx.c b/lib_rend/ivas_orient_trk_fx.c index a25a8db53..6ed7cf3b1 100644 --- a/lib_rend/ivas_orient_trk_fx.c +++ b/lib_rend/ivas_orient_trk_fx.c @@ -140,22 +140,22 @@ static void QuaternionDivision_fx( { Word16 scale_e, result_e = 0, w_q, x_q, y_q, z_q, result_q; - r->w_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.w_fx ), d, &scale_e ); + r->w_fx = BASOP_Util_Divide3232_Scale_newton( ( q.w_fx ), d, &scale_e ); move32(); result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) ); // e+e1-e2// w_q = sub( Q31, result_e ); - r->x_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.x_fx ), d, &scale_e ); + r->x_fx = BASOP_Util_Divide3232_Scale_newton( ( q.x_fx ), d, &scale_e ); move32(); result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) ); x_q = sub( Q31, result_e ); - r->y_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.y_fx ), d, &scale_e ); + r->y_fx = BASOP_Util_Divide3232_Scale_newton( ( q.y_fx ), d, &scale_e ); move32(); result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) ); y_q = sub( Q31, result_e ); - r->z_fx = BASOP_Util_Divide3232_Scale_cadence( ( q.z_fx ), d, &scale_e ); + r->z_fx = BASOP_Util_Divide3232_Scale_newton( ( q.z_fx ), d, &scale_e ); move32(); result_e = add( scale_e, sub( sub( Q31, q.q_fact ), den_e ) ); z_q = sub( Q31, result_e ); @@ -505,15 +505,15 @@ static IVAS_VECTOR3 VectorNormalize_fx( move16(); length_fx = VectorLength_fx( p, &q_len ); - result_fx.x_fx = BASOP_Util_Divide3232_Scale_cadence( p.x_fx, length_fx, &scale ); + result_fx.x_fx = BASOP_Util_Divide3232_Scale_newton( p.x_fx, length_fx, &scale ); move32(); x_qfact = sub( Q31, add( scale, sub( q_len, p.q_fact ) ) ); // e+(e1-e2)// - result_fx.y_fx = BASOP_Util_Divide3232_Scale_cadence( p.y_fx, length_fx, &scale ); + result_fx.y_fx = BASOP_Util_Divide3232_Scale_newton( p.y_fx, length_fx, &scale ); move32(); y_qfact = sub( Q31, add( scale, sub( q_len, p.q_fact ) ) ); - result_fx.z_fx = BASOP_Util_Divide3232_Scale_cadence( p.z_fx, length_fx, &scale ); + result_fx.z_fx = BASOP_Util_Divide3232_Scale_newton( p.z_fx, length_fx, &scale ); move32(); z_qfact = sub( Q31, add( scale, sub( q_len, p.q_fact ) ) ); diff --git a/lib_rend/ivas_reverb_filter_design_fx.c b/lib_rend/ivas_reverb_filter_design_fx.c index 62c97f88f..c70e8d667 100644 --- a/lib_rend/ivas_reverb_filter_design_fx.c +++ b/lib_rend/ivas_reverb_filter_design_fx.c @@ -411,7 +411,7 @@ static void response_step_limit_fx( IF( X[i] ) { - desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i - 1], &div_e ); + desiredChange = BASOP_Util_Divide3232_Scale_newton( X[i], X[i - 1], &div_e ); desiredChange_q = sub( 31, ( div_e ) ); } @@ -459,7 +459,7 @@ static void response_step_limit_fx( IF( X[i] ) { - desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i + 1], &div_e ); + desiredChange = BASOP_Util_Divide3232_Scale_newton( X[i], X[i + 1], &div_e ); desiredChange_q = sub( 31, ( div_e ) ); } IF( GT_16( desiredChange_q, 30 ) ) @@ -742,9 +742,9 @@ void ivas_reverb_calc_color_levels_fx( move16(); cos_w = getCosWord16R2( (Word16) L_abs( L_shl( Mpy_32_32( pFc[freq_idx], fs_inverted ), 3 ) ) ); // q = 15 H_filter = L_add( L_shr( L_add( L_shr( Mpy_32_32( coefB[0], coefB[0] ), 1 ), L_shr( Mpy_32_32( coefB[1], coefB[1] ), 1 ) ), 2 ), L_shr( Mpy_32_32( coefB[0], Mpy_32_32( coefB[1], L_shl( cos_w, 15 ) ) ), 1 ) ); // q = 28 - H_filter = BASOP_Util_Divide3232_Scale_cadence( H_filter, L_add( ONE_IN_Q28, L_shr( L_add( L_shr( Mpy_32_32( coefA[1], coefA[1] ), 2 ), Mpy_32_32( coefA[1], L_shl( cos_w, 15 ) ) ), 1 ) ), &temp ); + H_filter = BASOP_Util_Divide3232_Scale_newton( H_filter, L_add( ONE_IN_Q28, L_shr( L_add( L_shr( Mpy_32_32( coefA[1], coefA[1] ), 2 ), Mpy_32_32( coefA[1], L_shl( cos_w, 15 ) ) ), 1 ) ), &temp ); H_filter = Sqrt32( H_filter, &temp ); - T60_est = BASOP_Util_Divide3232_Scale_cadence( L_shl( i_mult( -3, pLoop_delays[loop_idx] ), 2 ), Mpy_32_32( Mpy_32_32( L_add( BASOP_Util_Log2( H_filter ), L_shl( temp, 25 ) ), LOG10_2_Q31 ), L_shl( output_Fs, 8 ) ), &temp ); // conversion of log2 to log10. + T60_est = BASOP_Util_Divide3232_Scale_newton( L_shl( i_mult( -3, pLoop_delays[loop_idx] ), 2 ), Mpy_32_32( Mpy_32_32( L_add( BASOP_Util_Log2( H_filter ), L_shl( temp, 25 ) ), LOG10_2_Q31 ), L_shl( output_Fs, 8 ) ), &temp ); // conversion of log2 to log10. t60[freq_idx] = BASOP_Util_Add_Mant32Exp( T60_est, temp, t60[freq_idx], t60_e[freq_idx], &result_e ); move16(); t60_e[freq_idx] = result_e; @@ -775,14 +775,14 @@ void ivas_reverb_calc_color_levels_fx( { Word16 temp, temp1, temp2, temp3 = 0, temp4, temp5; move16(); - Word32 var1 = BASOP_Util_Divide3232_Scale_cadence( (Word32) i_mult( -6, minDelay ), L_shr( Mpy_32_32( t60[freq_idx], L_shl( output_Fs, 11 ) ), sub( 11, t60_e[freq_idx] ) ), &temp ); + Word32 var1 = BASOP_Util_Divide3232_Scale_newton( (Word32) i_mult( -6, minDelay ), L_shr( Mpy_32_32( t60[freq_idx], L_shl( output_Fs, 11 ) ), sub( 11, t60_e[freq_idx] ) ), &temp ); var1 = Mpy_32_32( var1, LOG2_10_Q29 ); // e = temp + (31 - 29) Word32 A0_square_est = BASOP_util_Pow2( var1, add( temp, 31 - 29 ), &temp ); Word16 alpha_e; - Word32 alpha = BASOP_Util_Divide3232_Scale_cadence( -log__0_001, t60[freq_idx], &alpha_e ); // alpha_e = 1 + alpha_e + (3 - t60_e[257]) + Word32 alpha = BASOP_Util_Divide3232_Scale_newton( -log__0_001, t60[freq_idx], &alpha_e ); // alpha_e = 1 + alpha_e + (3 - t60_e[257]) - Word32 div11 = BASOP_Util_Divide3232_Scale_cadence( A0_square_est, alpha, &temp1 ); // e = temp1 + (temp - alpha_e) - Word32 div2 = BASOP_Util_Divide3232_Scale_cadence( L_shl( output_Fs, 11 ), L_shr( L_add( Mpy_32_16_1( 1884631649, shl( minDelayDiff, 3 ) ), 14037339 ), 8 ), &temp2 ); // e = temp2, 26.7741 in Q19, 0.8776 in Q31 + Word32 div11 = BASOP_Util_Divide3232_Scale_newton( A0_square_est, alpha, &temp1 ); // e = temp1 + (temp - alpha_e) + Word32 div2 = BASOP_Util_Divide3232_Scale_newton( L_shl( output_Fs, 11 ), L_shr( L_add( Mpy_32_16_1( 1884631649, shl( minDelayDiff, 3 ) ), 14037339 ), 8 ), &temp2 ); // e = temp2, 26.7741 in Q19, 0.8776 in Q31 const Word32 revPredNormEnergy = Mpy_32_32( div2, div11 ); // q = (15 - temp2) + (15 - temp1) - 15 + 1 // L_max @@ -794,7 +794,7 @@ void ivas_reverb_calc_color_levels_fx( L_tmp = W_extract_h( W_shl( W_tmp1, W_shift ) ); temp4 = sub( 3, W_shift ); div2 = Sqrt32( L_tmp, &temp4 ); - pTarget_color_L[freq_idx] = BASOP_Util_Divide3232_Scale_cadence( div2, div1, &temp5 ); + pTarget_color_L[freq_idx] = BASOP_Util_Divide3232_Scale_newton( div2, div1, &temp5 ); move32(); temp5 = add( temp5, sub( temp4, temp3 ) ); pTarget_color_L_e[freq_idx] = temp5; @@ -807,7 +807,7 @@ void ivas_reverb_calc_color_levels_fx( L_tmp = W_extract_h( W_shl( W_tmp2, W_shift ) ); temp4 = sub( 3, W_shift ); div2 = Sqrt32( L_tmp, &temp4 ); - pTarget_color_R[freq_idx] = BASOP_Util_Divide3232_Scale_cadence( div2, div1, &temp5 ); + pTarget_color_R[freq_idx] = BASOP_Util_Divide3232_Scale_newton( div2, div1, &temp5 ); move32(); temp5 = add( temp5, sub( temp4, temp3 ) ); pTarget_color_R_e[freq_idx] = temp5; @@ -825,7 +825,7 @@ void ivas_reverb_calc_color_levels_fx( Word32 div1; Word16 temp = 0; move16(); - div1 = BASOP_Util_Divide3232_Scale_cadence( L_mult0( 1000, sub( freq_count, 1 ) ), L_shr( output_Fs, 1 ), &temp ); + div1 = BASOP_Util_Divide3232_Scale_newton( L_mult0( 1000, sub( freq_count, 1 ) ), L_shr( output_Fs, 1 ), &temp ); div1 = BASOP_Util_Add_Mant32Exp( div1, temp, ONE_IN_Q30, 1, &temp ); idx_pivot = extract_l( L_shr( div1, sub( 31, temp ) ) ); /* Perform step limiting */ diff --git a/lib_rend/ivas_rotation_fx.c b/lib_rend/ivas_rotation_fx.c index e6f8f2653..1633f42d0 100644 --- a/lib_rend/ivas_rotation_fx.c +++ b/lib_rend/ivas_rotation_fx.c @@ -1974,7 +1974,7 @@ static void external_target_interpolation_fx( move16(); Word32 tmp; /* Calculate the interpolation increment and coefficient */ - tmp = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q30, L_shl( L_deposit_l( hExtOrientationData->numFramesToTargetOrientation[i] ), 2 ), &tmp_e ); + tmp = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, L_shl( L_deposit_l( hExtOrientationData->numFramesToTargetOrientation[i] ), 2 ), &tmp_e ); hCombinedOrientationData->interpolationIncrement_fx = L_shl( tmp, sub( tmp_e, 31 ) ); /* Q30 */ move32(); hCombinedOrientationData->interpolationCoefficient_fx = hCombinedOrientationData->interpolationIncrement_fx; diff --git a/lib_rend/ivas_shoebox_fx.c b/lib_rend/ivas_shoebox_fx.c index 1a4496085..0156e70b5 100644 --- a/lib_rend/ivas_shoebox_fx.c +++ b/lib_rend/ivas_shoebox_fx.c @@ -387,7 +387,7 @@ static Word32 shoebox_get_euclidian_distance_internal_fx( { q = Q22; move16(); - t = (Word32) BASOP_Util_Divide3232_Scale_cadence( *scale, absxk, &q ); + t = (Word32) BASOP_Util_Divide3232_Scale_newton( *scale, absxk, &q ); out_tmp = W_extract_h( W_shl( W_mult_32_32( out_tmp, t ), q ) ); // Q22 + Q31 + Q1 - 32 = Q22 out_tmp = W_extract_h( W_shl( W_mult_32_32( out_tmp, t ), q ) ); // Q22 + Q31 + Q1 - 32 = Q22 @@ -397,7 +397,7 @@ static Word32 shoebox_get_euclidian_distance_internal_fx( } ELSE { - t = (Word32) BASOP_Util_Divide3232_Scale_cadence( absxk, *scale, &q ); + t = (Word32) BASOP_Util_Divide3232_Scale_newton( absxk, *scale, &q ); t = W_extract_h( W_shl( W_mult_32_32( t, t ), sub( shl( q, 1 ), 9 ) ) ); // Q31 + Q31 + Q1 - 9 - 32 = Q22 out_tmp = L_add( out_tmp, t ); // Q22 move32(); @@ -407,7 +407,7 @@ static Word32 shoebox_get_euclidian_distance_internal_fx( IF( GE_32( absxk, *scale ) ) { - t = (Word32) BASOP_Util_Divide3232_Scale_cadence( *scale, absxk, &q ); + t = (Word32) BASOP_Util_Divide3232_Scale_newton( *scale, absxk, &q ); out_tmp = W_extract_h( W_shl( W_mult_32_32( out_tmp, t ), q ) ); // Q22 + Q31 + Q1 - 32 = Q22 out_tmp = W_extract_h( W_shl( W_mult_32_32( out_tmp, t ), q ) ); // Q22 + Q31 + Q1 - 32 = Q22 @@ -417,7 +417,7 @@ static Word32 shoebox_get_euclidian_distance_internal_fx( } ELSE { - t = (Word32) BASOP_Util_Divide3232_Scale_cadence( absxk, *scale, &q ); + t = (Word32) BASOP_Util_Divide3232_Scale_newton( absxk, *scale, &q ); t = W_extract_h( W_shl( W_mult_32_32( t, t ), sub( shl( q, 1 ), 9 ) ) ); // Q31 + Q31 + Q1 - 9 - 32 = Q22 out_tmp = L_add( out_tmp, t ); // Q22 } diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 7e526ca77..859768784 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -6836,7 +6836,7 @@ static void renderMasaToMasa( move32(); FOR( dir = 0; dir < numDirs; dir++ ) { - tmp = BASOP_Util_Divide3232_Scale_cadence( inMeta->directional_meta[dir].energy_ratio_fx[sf][band], ratioSum_fx, &tmp_e ); + tmp = BASOP_Util_Divide3232_Scale_newton( inMeta->directional_meta[dir].energy_ratio_fx[sf][band], ratioSum_fx, &tmp_e ); inMeta->directional_meta[dir].energy_ratio_fx[sf][band] = L_shl( tmp, sub( tmp_e, 1 ) ); /* Q30 */ move32(); } @@ -6844,7 +6844,7 @@ static void renderMasaToMasa( move16(); tmp = 0; move32(); - tmp = BASOP_Util_Divide3232_Scale_cadence( inMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], ratioSum_fx, &tmp_e ); + tmp = BASOP_Util_Divide3232_Scale_newton( inMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], ratioSum_fx, &tmp_e ); inMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] = L_shl( tmp, sub( tmp_e, 1 ) ); /* Q30 */ move32(); } -- GitLab From e1d19cecb18720009dcb45d33196ba192b69fe09 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 11:30:57 +0200 Subject: [PATCH 303/698] checkin state of BE branch in commit 090be8f3 --- lib_com/options.h | 14 + lib_com/prot_fx.h | 10 +- lib_com/swb_tbe_com_fx.c | 573 ++++++++++++++++++++++++++--- lib_com/tools_fx.c | 26 +- lib_dec/ivas_stereo_icbwe_dec_fx.c | 10 + lib_dec/swb_tbe_dec_fx.c | 10 + lib_enc/swb_tbe_enc_fx.c | 39 +- 7 files changed, 623 insertions(+), 59 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index e8a44d873..c76765742 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -72,6 +72,11 @@ #define FIX_1378_ACELP_OUT_OF_BOUNDS /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ + +#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ +#define MERGE_REQ + + //#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ #define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ #define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ @@ -84,4 +89,13 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ + +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1452d8e2e..702cdea12 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,15 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( - const Word16 input_fx[], /* i : i signal Q_input_fx */ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS; +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else + const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 238b478c5..f1492b0b4 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6687,6 +6687,181 @@ void wb_tbe_extras_reset_synth_fx( return; } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +{ + Word32 L_tmpX; + Word16 i; + Word32 L_tmpMax2 = *L_tmpMax; + Word32 L_tmpAbs; + move32(); + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#else + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#endif + } /*IsUpsampled3*/ + ELSE + { /*IsUpsampled3*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ + *L_tmpMax = L_tmpMax2; + move32(); +} +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * @@ -6695,7 +6870,15 @@ void wb_tbe_extras_reset_synth_fx( *-------------------------------------------------------------------*/ void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS; +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal memory_fx_Q */ Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ @@ -6704,17 +6887,36 @@ void elliptic_bpf_48k_generic_fx( ) { Word16 i, j; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 memory_fx0, Q_temp, Q_temp2; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; + Word32 L_tmpMax; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + Word64 W_tmpX; + Word64 W_tmpY; +#endif + + Word32 *L_tmp = &L_tmp_buffer[4]; + Word32 *L_tmp2 = &L_tmp2_buffer[4]; + Word32 *L_output = &L_output_buffer[4]; +#else Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; Word32 memory2_fx_2[4], memory2_fx_3[4]; +#endif FOR( i = 0; i < 4; i++ ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + memory_fx0 = extract_l( memory_fx2[0][i] ); + input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); +#else memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); - memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); +#endif + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); move32(); move32(); move32(); @@ -6722,48 +6924,158 @@ void elliptic_bpf_48k_generic_fx( move32(); } - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); +#else + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + } +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ + ELSE + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); + + FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6777,6 +7089,7 @@ void elliptic_bpf_48k_generic_fx( L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; @@ -6787,6 +7100,46 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); +#else +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -6831,20 +7184,22 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } +#endif + Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); @@ -6861,12 +7216,54 @@ void elliptic_bpf_48k_generic_fx( move32(); FOR( j = 0; j < 4; j++ ) { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); + move32(); move32(); + } +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); +#else +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -6932,6 +7329,10 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } + +#endif + + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; @@ -6998,7 +7399,12 @@ void synthesise_fb_high_band_fx( Word16 Qout ) { Word16 i, j; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 excitation_in_interp3_buffer[L_FRAME48k + 4]; + Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4; +#else Word16 excitation_in_interp3[L_FRAME48k]; +#endif Word16 tmp[L_FRAME48k]; Word32 temp1; Word32 ratio2; @@ -7023,12 +7429,28 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx + + ); } ELSE { /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); @@ -7074,6 +7496,50 @@ void synthesise_fb_high_band_fx( tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { +#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx + L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ + Word32 L_tmp32; + Word16 tmp16; + + // if (L_tmp < 0) + if ( L_tmp < 0 ) + { + L_tmp32 = L_negate( L_tmp ); + } + if ( L_tmp < 0 ) + { + L_tmp32 = L_shl_sat( L_tmp32, tmp3 ); + } + if ( L_tmp < 0 ) + { + tmp16 = extract_h( L_tmp32 ); + } + if ( L_tmp < 0 ) + { + tmp16 = negate( tmp16 ); + } + + // if (L_tmp == 0) + if ( L_tmp == 0 ) + { + tmp16 = 0; + move16(); + } + + // if (L_tmp > 0) + if ( L_tmp > 0 ) + { + L_tmp32 = L_shl_sat( L_tmp, tmp3 ); + } + if ( L_tmp > 0 ) + { + tmp16 = extract_h( L_tmp32 ); + } + + output[i] = tmp16; + move16(); + +#else L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { @@ -7085,6 +7551,7 @@ void synthesise_fb_high_band_fx( output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); } +#endif } return; } diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 5219d076c..756b5be80 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,13 +794,37 @@ void Copy_Scale_sig_16_32_no_sat( } return; } +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat + L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); + + IF( L_tmp >= 0x7FFF ) + { + FOR( i = 0; i < lg; i++ ) + { + // y[i] = L_mult0(x[i], L_tmp); + y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + move32(); /* Overflow can occur here */ + } + return; + } + // ELSE + { + Word16 tmp = extract_l( L_tmp ); + FOR( i = 0; i < lg; i++ ) + { + y[i] = L_mult( x[i], tmp ); + move32(); + } + } +#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ + move32(); /* Overflow can occur here */ } +#endif } void Copy_Scale_sig_32_16( diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index c7bc98566..772eb2d7d 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,6 +904,9 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); +#endif FOR( i = 0; i < winLen_fx; i++ ) { L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ @@ -911,10 +914,17 @@ void stereo_icBWE_dec_fx( tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ move32(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + if ( LE_16( alpha_fx, winSlope_fx_ ) ) + { + alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ + } +#else IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } +#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 1b51a29fb..00be6455d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7022,14 +7022,24 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); + +#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx + Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 +#endif + FOR( i = 0; i < L_FRAME16k; i++ ) { +#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } +#else + Word16 idx; + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ +#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 316a5b549..be0dd84e5 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7299,13 +7299,18 @@ void fb_tbe_enc_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; - Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_buffer[L_FRAME48k + 4]; + Word16 *input_fhb = &input_fhb_buffer[0] + 4; +#else + Word16 input_fhb[L_FRAME48k]; +#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); @@ -7325,7 +7330,14 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); - elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7422,7 +7434,12 @@ void fb_tbe_enc_ivas_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_new_buffer[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) + 4]; + Word16 *input_fhb_new = &input_fhb_new_buffer[0] + 4; +#else Word16 input_fhb_new[L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS )]; +#endif Word16 input_fhb[L_FRAME48k]; Word16 Sample_Delay_HP; Word64 fb_exc_energy; @@ -7449,11 +7466,25 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { - elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } ELSE { - elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + 1 // isIVAS +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 0, // IsUpsampled3 +#endif + input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); } test(); -- GitLab From 8aa08f4f18d666485c9ed7a36b05a31478b70634 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Fri, 11 Apr 2025 09:45:17 +0000 Subject: [PATCH 304/698] last cleanups --- lib_com/prot_fx.h | 9 ++------- lib_com/swb_tbe_com_fx.c | 1 - 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 93da4d66a..1452d8e2e 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3258,7 +3258,7 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); void elliptic_bpf_48k_generic_fx( - const Word16 input_fx[], /* i : input signal Q_input_fx*/ + const Word16 input_fx[], /* i : i signal Q_input_fx */ Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ @@ -3277,12 +3277,7 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS -#endif -); + Word16 Qout ); void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d3dc614aa..ca0c39b17 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6714,7 +6714,6 @@ void elliptic_bpf_48k_generic_fx( memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); //is this change be? move32(); move32(); move32(); -- GitLab From e0d2ebe1640492ea5322ee5f68f5685380db2d73 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 11 Apr 2025 17:00:53 +0530 Subject: [PATCH 305/698] Fix for 3GPP issue 1458: Crash with new testcase in pytest suite - ISM with DTX, bitrate switching + JBM to BINAURAL_ROOM_IR Link #1458 --- lib_dec/ivas_jbm_dec_fx.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 8c5a9e9af..74af57bd5 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2550,7 +2550,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( DECODER_TC_BUFFER_HANDLE hTcBuffer; Word32 output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; Word32 *p_output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; - Word16 nchan_in, nchan_out; + Word16 nchan_in, nchan_out, gd_bits, n_chan_inp, i, shift; IF( !st_ivas->hDecoderConfig->Opt_tsm ) { return IVAS_ERR_OK; @@ -2637,17 +2637,44 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( /* Convert to CICPxx; used also for ISM->CICP19->binaural_room rendering */ set16_fx( st_ivas->hIsmRendererData->interpolator_fx, 32767, hTcBuffer->n_samples_granularity ); // 32767=1.0f in Q15 - ivas_ism_render_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ); + ivas_ism_render_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity ); st_ivas->hCrendWrapper->p_io_qfactor = &st_ivas->hCrendWrapper->io_qfactor; *st_ivas->hCrendWrapper->p_io_qfactor = 11; move16(); + + shift = MAX_16; + move16(); + n_chan_inp = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe ); + + FOR( i = 0; i < n_chan_inp; i++ ) + { + shift = s_min( shift, L_norm_arr( p_output_fx[i], hTcBuffer->n_samples_granularity ) ); + } + + gd_bits = sub( find_guarded_bits_fx( imult1616( hTcBuffer->subframe_nbslots[0], hTcBuffer->n_samples_granularity ) ), shift ); + + *st_ivas->hCrendWrapper->p_io_qfactor = sub( *st_ivas->hCrendWrapper->p_io_qfactor, gd_bits ); + move16(); + + FOR( i = 0; i < n_chan_inp; i++ ) + { + scale_sig32( p_output_fx[i], hTcBuffer->n_samples_granularity, sub( *st_ivas->hCrendWrapper->p_io_qfactor, Q11 ) ); // Q(*st_ivas->hCrendWrapper->p_io_qfactor) + } + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) { return error; } + + FOR( i = 0; i < n_chan_inp; i++ ) + { + scale_sig32( p_output_fx[i], hTcBuffer->n_samples_granularity, sub( Q11, *st_ivas->hCrendWrapper->p_io_qfactor ) ); // Q(11) + } + *st_ivas->hCrendWrapper->p_io_qfactor = Q11; + move16(); } } ELSE -- GitLab From 5feaf0b4d57d671ffa92ff849db93bc4f683e081 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 11 Apr 2025 19:26:25 +0530 Subject: [PATCH 306/698] Fix for 3GPP issue 1465: Decoder crash for low bitrate OSBA in ivas_spar_dec_upmixer_sf_fx() Link #1465 --- lib_com/cldfb.c | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c index 720ee37a0..6a9581498 100644 --- a/lib_com/cldfb.c +++ b/lib_com/cldfb.c @@ -901,7 +901,7 @@ void cldfbAnalysis_ts_fx_fixed_q( const Word16 *ptr_pf_fx; Word16 ptr_pf_sf; Word32 *timeBuffer_fx, buffer_fx[( CLDFB_NO_CHANNELS_MAX * CLDFB_NO_COL_MAX ) + ( 9 * CLDFB_NO_CHANNELS_MAX )]; - Word16 offset, frameSize; + Word16 offset, frameSize, gb, hr, shift; offset = sub( h_cldfb->p_filter_length, h_cldfb->no_channels ); frameSize = i_mult( h_cldfb->no_channels, h_cldfb->no_col ); @@ -1071,18 +1071,42 @@ void cldfbAnalysis_ts_fx_fixed_q( *q_cldfb = sub( *q_cldfb, 2 ); move16(); + gb = find_guarded_bits_fx( M1 ); + hr = L_norm_arr( iBuffer_fx, M1 ); + + IF( LT_16( hr, gb ) ) + { + scale_sig32( iBuffer_fx, M1, sub( hr, gb ) ); + } + /* FFT of DCT IV */ fft_cldfb_fx( iBuffer_fx, M2 ); /* post modulation of DCT IV */ - FOR( k = 0; k < M2; k++ ) + IF( LT_16( hr, gb ) ) { - /* do it inplace */ - /*cplxMult(&imagBuffer[2*k],&imagBuffer[M1-1-(2*k)],iBuffer[2*k],iBuffer[2*k+1],rot_vctr_re[k],rot_vctr_im[k]);*/ - imagBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ); // q - 5 - imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = Madd_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ); // q - 5 - move32(); - move32(); + shift = sub( gb, hr ); + FOR( k = 0; k < M2; k++ ) + { + /* do it inplace */ + /*cplxMult(&imagBuffer[2*k],&imagBuffer[M1-1-(2*k)],iBuffer[2*k],iBuffer[2*k+1],rot_vctr_re[k],rot_vctr_im[k]);*/ + imagBuffer_fx[2 * k] = L_shl( Msub_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ), shift ); // q - 5 + imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = L_shl( Madd_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ), shift ); // q - 5 + move32(); + move32(); + } + } + ELSE + { + FOR( k = 0; k < M2; k++ ) + { + /* do it inplace */ + /*cplxMult(&imagBuffer[2*k],&imagBuffer[M1-1-(2*k)],iBuffer[2*k],iBuffer[2*k+1],rot_vctr_re[k],rot_vctr_im[k]);*/ + imagBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ); // q - 5 + imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = Madd_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ); // q - 5 + move32(); + move32(); + } } IF( EQ_32( h_cldfb->prototype, CLDFB_PROTOTYPE_5_00MS ) ) -- GitLab From 7ab90bd2823d95a91cdd30a511e73b5ec1cf86c4 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 11 Apr 2025 21:19:26 +0530 Subject: [PATCH 307/698] Fix for 3GPP issue 1480: BASOP assert in MDCT-Stereo Stereo pre-processing with music signal Link #1480 --- lib_enc/ivas_mdct_core_enc_fx.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c index e744c7f47..52a88064a 100644 --- a/lib_enc/ivas_mdct_core_enc_fx.c +++ b/lib_enc/ivas_mdct_core_enc_fx.c @@ -815,6 +815,7 @@ static UWord16 enc_ste_pre_mdct( Word16 mdst_exp1[2 * 960], mdst_exp2[2 * 960]; Word16 x1, x2, x3, x4, ans, tmp; Word32 maxSqrValue_fx; + Word64 sumL_64fx, sumR_64fx; IF( LT_16( nSamplesMax, 512 ) ) { @@ -885,7 +886,9 @@ static UWord16 enc_ste_pre_mdct( { return 0; } - + sumL_64fx = 0, sumR_64fx = 0; + move64(); + move64(); FOR( s = fadeInOff; s < nSampProc; s++ ) { Word32 absMagnL_fx, absMagnR_fx; @@ -898,8 +901,8 @@ static UWord16 enc_ste_pre_mdct( absMagnR_fx = Sqrt32( L_add( Mpy_32_32( sigR1_fx[s], sigR1_fx[s] ), Mpy_32_32( sigI1_fx[s], sigI1_fx[s] ) ), &absMagnR_e ); corr_fx = L_add( corr_fx, L_add( Mpy_32_32( sigR0_fx[s], sigR1_fx[s] ), Mpy_32_32( sigI0_fx[s], sigI1_fx[s] ) ) ); // q_com*2 - 31 - sumL_fx = L_add( sumL_fx, L_add( L_shr( sigR0_fx[s], 1 ), L_shr( sigI0_fx[s], 1 ) ) ); // q_com -1 - sumR_fx = L_add( sumR_fx, L_add( L_shr( sigR1_fx[s], 1 ), L_shr( sigI1_fx[s], 1 ) ) ); // q_com - 1 + sumL_64fx = W_add( sumL_64fx, W_add( sigR0_fx[s], sigI0_fx[s] ) ); // q_com + sumR_64fx = W_add( sumR_64fx, W_add( sigR1_fx[s], sigI1_fx[s] ) ); // q_com sumMagnL_fx = BASOP_Util_Add_Mant32Exp( sumMagnL_fx, sumMagnL_e, absMagnL_fx, absMagnL_e, &sumMagnL_e ); sumMagnR_fx = BASOP_Util_Add_Mant32Exp( sumMagnR_fx, sumMagnR_e, absMagnR_fx, absMagnR_e, &sumMagnR_e ); sumPrdLR_fx = BASOP_Util_Add_Mant32Exp( sumPrdLR_fx, sumPrdLR_e, Mpy_32_32( absMagnL_fx, absMagnR_fx ), add( absMagnL_e, absMagnR_e ), &sumPrdLR_e ); @@ -911,7 +914,14 @@ static UWord16 enc_ste_pre_mdct( temp1 = L_shl( preproLen, x1 ); corr_fx = Mpy_32_32( corr_fx, temp1 ); x1 = sub( 62, add( shl( *q_com, 1 ), x1 ) ); - corr_fx = BASOP_Util_Add_Mant32Exp( corr_fx, x1, Mpy_32_32( sumL_fx, sumR_fx ), sub( 62, shl( sub( *q_com, 1 ), 1 ) ), &x1 ); + + x2 = W_norm( sumL_64fx ); + sumL_fx = W_extract_h( W_shl( sumL_64fx, x2 ) ); + + x3 = W_norm( sumR_64fx ); + sumR_fx = W_extract_h( W_shl( sumR_64fx, x3 ) ); + + corr_fx = BASOP_Util_Add_Mant32Exp( corr_fx, x1, Mpy_32_32( sumL_fx, sumR_fx ), sub( 62, add( sub( add( *q_com, x2 ), 32 ), sub( add( *q_com, x3 ), 32 ) ) ), &x1 ); IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( corr_fx, x1, -maxSqrValue_fx, 52 ), -1 ) ) { -- GitLab From 198464b72b08fa9dc2a61cb660ca7c590159c723 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 14 Apr 2025 17:15:12 +0200 Subject: [PATCH 308/698] hardcode output of BASOP_Util_Divide3232_Scale_cadence() for fad_r calculation --- lib_enc/ivas_stereo_dmx_evs_fx.c | 54 ++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 625ff8ee9..0afb69279 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -2419,7 +2419,34 @@ ivas_error stereo_dmx_evs_init_encoder_fx( fad_g = hStereoDmxEVS->hPHA->fad_g_fx; // fad_r = 1.0f / (float) ( fad_len + 1 ); +#if 1 + SWITCH( fad_len ) + { + case STEREO_DMX_EVS_FAD_LEN_16: + fad_r = 13338408; + move32(); + tmp_e = -6; + move16(); + BREAK; + case STEREO_DMX_EVS_FAD_LEN_32: + fad_r = 856317467; + move32(); + tmp_e = -7; + move16(); + BREAK; + case STEREO_DMX_EVS_FAD_LEN_48: + fad_r = 571471740; + move32(); + tmp_e = -7; + move16(); + BREAK; + default: + fad_r = BASOP_Util_Divide3232_Scale_newton( 1, add( fad_len, 1 ), &tmp_e ); + BREAK; + } +#else fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e ); +#endif fad_r = L_shl_r( fad_r, tmp_e ); fad_len2 = shr( fad_len, 1 ); FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len2; ( n++, m-- ) ) @@ -2537,7 +2564,34 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; // fad_r = 1.0f / (float) ( fad_len + 1 ); +#if 1 + SWITCH( fad_len ) + { + case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 16: + fad_r = 856317467; + move32(); + tmp_e = -7; + move16(); + BREAK; + case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 32: + fad_r = 857653375; + move32(); + tmp_e = -8; + move16(); + BREAK; + case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 48: + fad_r = 572066403; + move32(); + tmp_e = -8; + move16(); + BREAK; + default: + fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e ); + BREAK; + } +#else fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e ); +#endif fad_r = L_shl_r( fad_r, tmp_e ); fad_len2 = shr( fad_len, 1 ); FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len2; ( n++, m-- ) ) -- GitLab From eba16468ee36235c6df9c87e5f69ed7a6427ebb0 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 14 Apr 2025 17:23:10 +0200 Subject: [PATCH 309/698] fix wrong value, use correct division --- lib_enc/ivas_stereo_dmx_evs_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 0afb69279..042a2e541 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -2423,7 +2423,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( SWITCH( fad_len ) { case STEREO_DMX_EVS_FAD_LEN_16: - fad_r = 13338408; + fad_r = 853658096; move32(); tmp_e = -6; move16(); @@ -2586,7 +2586,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); BREAK; default: - fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e ); + fad_r = BASOP_Util_Divide3232_Scale_newton( 1, add( fad_len, 1 ), &tmp_e ); BREAK; } #else -- GitLab From 6ec556d214525169cfb3831444b80f3671384839 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Mon, 14 Apr 2025 22:35:36 +0530 Subject: [PATCH 310/698] Fix for 3GPP issue 1478: Encoder crash (assert) in ISM1, GSC encoder --- lib_com/gs_preech_fx.c | 42 +++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/lib_com/gs_preech_fx.c b/lib_com/gs_preech_fx.c index 3b3eaa777..48ec22a22 100644 --- a/lib_com/gs_preech_fx.c +++ b/lib_com/gs_preech_fx.c @@ -177,9 +177,10 @@ void pre_echo_att_ivas_fx( move16(); Word16 ratio_fx; Word16 attack_pos_fx, i; - Word32 L_tmp, L_tmp1; - Word16 tmp, n1, n2, exp, frac1, frac2; + Word32 L_tmp; + Word16 tmp, tmp_e; Word32 etmp1_fx; + Word16 etmp_e; Word16 att_len; test(); @@ -220,32 +221,19 @@ void pre_echo_att_ivas_fx( IF( GT_32( etmp_fx, *Last_frame_ener_fx ) && attack_pos_fx > 0 ) { /* Find the average energy before the attack */ - L_tmp = sum32_fx( finc_fx, attack_pos_fx ); /*Q1 */ - L_tmp1 = L_shr( L_mult( attack_pos_fx, attack_pos_fx ), 1 ); /*Q0 */ - tmp = round_fx( Isqrt( L_tmp1 ) ); /*Q15 */ - L_tmp = L_shr( L_tmp, 2 ); /*Q1 ; ATT_SEG_LEN=4 */ - etmp_fx = Mult_32_16( L_tmp, tmp ); /*Q1 */ - - etmp_fx = L_shr( etmp_fx, add( 1 - 4, shl( Q_new, 1 ) ) ); /* makes etmp i nQ4 as *Last_frame_ener_fx */ - /* Find the correction factor and apply it before the attack */ - /* ratio = (float)sqrt(*Last_frame_ener/etmp);*/ - /* = isqrt(etmp/(*Last_frame_ener)) */ - etmp_fx = L_max( etmp_fx, 1 ); - *Last_frame_ener_fx = L_max( *Last_frame_ener_fx, 1 ); - move32(); - n1 = norm_l( etmp_fx ); - n2 = norm_l( *Last_frame_ener_fx ); - - n1 = sub( n1, 1 ); - exp = sub( n1, n2 ); - - frac1 = round_fx( L_shl( etmp_fx, n1 ) ); - frac2 = round_fx_sat( L_shl_sat( *Last_frame_ener_fx, n2 ) ); - L_tmp = L_mult0( 128, div_s( frac1, frac2 ) ); /* s = gain_out / gain_in */ - L_tmp = L_shr( L_tmp, exp ); /* add exponent */ + etmp_fx = sum32_fx( finc_fx, attack_pos_fx ); + etmp_e = sub( 31, add( shl( Q_new, 1 ), 1 ) ); + etmp_fx = L_add( etmp_fx, L_shr( 21474836 /*0.01 in Q31*/, etmp_e ) ); /* etmp = etmp + 0.01; (exp = etmp_e) */ + etmp_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( etmp_fx, L_mult0( attack_pos_fx, ATT_SEG_LEN ), &tmp_e ) ); + tmp_e = add( tmp_e, sub( etmp_e, 31 ) ); + etmp_e = tmp_e; + move16(); - L_tmp = Isqrt( L_tmp ); - ratio_fx = round_fx( L_shl( L_tmp, 9 ) ); + /* Find the correction factor and apply it before the attack */ + tmp = BASOP_Util_Divide3232_Scale( *Last_frame_ener_fx, etmp_fx, &tmp_e ); /* numerator Q = 2 * Q_new + 1; denominator Q = 31 - tmp_e */ + tmp_e = add( tmp_e, sub( sub( 31, etmp_e ), add( shl( Q_new, 1 ), 1 ) ) ); /* tmp_e = tmp_e + (31 - tmp_e) - (2 * Q_new + 1) */ + tmp = Sqrt16( tmp, &tmp_e ); + ratio_fx = shr( tmp, sub( 2, tmp_e ) ); /* Q13 */ /* Pre-echo atttenuation should never increase the energy */ ratio_fx = s_min( ratio_fx, 8192 /* 1 in Q13 */ ); /* Q13 */ -- GitLab From 83a63d925cfc8a4c15e2321740580238f1249c01 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Mon, 14 Apr 2025 22:38:47 +0530 Subject: [PATCH 311/698] Fix for 3GPP issue 1455: ParamMC Encoder: Missing energy for BASOP in 10kHz region --- lib_enc/ivas_mc_param_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index d0316be0f..22eacdb32 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -2222,7 +2222,7 @@ static void ivas_param_mc_dec2bin_fx( /* convert value to bitstream, MSB first */ FOR( idx = 0; idx < N; idx++ ) { - bits[idx] = (UWord16) s_and( shr( val, sub( N, sub( 1, idx ) ) ), 1 ); + bits[idx] = (UWord16) s_and( shr( val, sub( sub( N, 1 ), idx ) ), 1 ); move16(); } -- GitLab From 2434c3f7e07b1fec6fb1d1ad8869102bb742728d Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 14 Apr 2025 21:53:22 +0200 Subject: [PATCH 312/698] lib_com: replace BASOP_Util_Divide3232_Scale_cadence by BASOP_Util_Divide3232_Scale_newton --- lib_com/ivas_dirac_com_fx.c | 2 +- lib_com/ivas_qspherical_com_fx.c | 6 +++--- lib_com/ivas_spar_com_fx.c | 4 ++-- lib_com/ivas_transient_det_fx.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib_com/ivas_dirac_com_fx.c b/lib_com/ivas_dirac_com_fx.c index b16b94f1d..4279065b0 100644 --- a/lib_com/ivas_dirac_com_fx.c +++ b/lib_com/ivas_dirac_com_fx.c @@ -1034,7 +1034,7 @@ void computeDiffuseness_fixed( exp1 = sub( 31, q_intensity_slow ); tmp = Sqrt32( p_tmp[i], &exp1 ); - tmp = BASOP_Util_Divide3232_Scale_cadence( tmp, L_add( energy_slow[i], EPSILLON_FX ), &exp2 ); + tmp = BASOP_Util_Divide3232_Scale_newton( tmp, L_add( energy_slow[i], EPSILLON_FX ), &exp2 ); q_tmp = add( sub( 31, exp2 ), sub( sub( 31, exp1 ), q_ene ) ); IF( LT_16( q_tmp, Q30 ) ) diff --git a/lib_com/ivas_qspherical_com_fx.c b/lib_com/ivas_qspherical_com_fx.c index 6661026a8..844c3ecde 100644 --- a/lib_com/ivas_qspherical_com_fx.c +++ b/lib_com/ivas_qspherical_com_fx.c @@ -314,9 +314,9 @@ Word16 quantize_phi_enc_fx( Word32 temp_res; Word16 temp_e; - delta_phi_fx = BASOP_Util_Divide3232_Scale_cadence( 360, n, &temp_e ); + delta_phi_fx = BASOP_Util_Divide3232_Scale_newton( 360, n, &temp_e ); delta_phi_fx = L_shl( delta_phi_fx, sub( temp_e, 9 ) ); - inv_delta_phi_fx = BASOP_Util_Divide3232_Scale_cadence( n, 360, &temp_e ); + inv_delta_phi_fx = BASOP_Util_Divide3232_Scale_newton( n, 360, &temp_e ); IF( EQ_16( n, 1 ) ) { @@ -661,7 +661,7 @@ Word16 quantize_phi_chan_compand_fx( /* quantize companded value */ // delta_phi = 360.0f / (float) n; - delta_phi = BASOP_Util_Divide3232_Scale_cadence( 360, n, &tmp_e ); + delta_phi = BASOP_Util_Divide3232_Scale_newton( 360, n, &tmp_e ); delta_phi = L_shr( delta_phi, sub( 9, tmp_e ) ); // Q22 // id_phi = (int16_t) round_f( ( phi / (float) delta_phi ) ); id_phi = BASOP_Util_Divide3232_Scale( phi, delta_phi, &tmp_e ); // Q15 diff --git a/lib_com/ivas_spar_com_fx.c b/lib_com/ivas_spar_com_fx.c index 8aaeb7f63..c2ad11e26 100644 --- a/lib_com/ivas_spar_com_fx.c +++ b/lib_com/ivas_spar_com_fx.c @@ -985,7 +985,7 @@ static void ivas_get_pred_coeffs_enc_fx( move32(); dm_g_q[b] = Q29; move16(); - DM_F[b] = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // Q=(31-(s_dm_f+2+num_f_e-den_f_e)) + DM_F[b] = BASOP_Util_Divide3232_Scale_newton( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // Q=(31-(s_dm_f+2+num_f_e-den_f_e)) move32(); DM_F_q[b] = sub( 31, add( s_dm_f, sub( add( 2, num_f_e ), den_f_e ) ) ); move16(); @@ -1514,7 +1514,7 @@ static void ivas_get_pred_coeffs_fx( den_f = L_max( den_f, 1 ); // Q=31-den_f_e dm_g[b] = activew_quad_thresh; // Q29 move32(); - DM_F[b] = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // s_dm_f+2+num_f_e-den_f_e + DM_F[b] = BASOP_Util_Divide3232_Scale_newton( Mpy_32_32( dm_g[b], num_f ), den_f, &s_dm_f ); // s_dm_f+2+num_f_e-den_f_e move32(); s_dm_f = add( s_dm_f, sub( add( 2, num_f_e ), den_f_e ) ); /*Resultant exp for DM_F s_dm_f +( 2 + num_f_e ) - den_f_e*/ div_shift = sub( s_dm_f, 1 ); diff --git a/lib_com/ivas_transient_det_fx.c b/lib_com/ivas_transient_det_fx.c index 3b9a8cfd7..fb8679ebc 100644 --- a/lib_com/ivas_transient_det_fx.c +++ b/lib_com/ivas_transient_det_fx.c @@ -353,7 +353,7 @@ static Word32 ivas_calc_duck_gain_fx( test(); IF( ( env_1 != 0 ) && ( env_2 != 0 ) ) { - L_tmp = BASOP_Util_Divide3232_Scale_cadence( env_1, env_2, &tmp_e ); + L_tmp = BASOP_Util_Divide3232_Scale_newton( env_1, env_2, &tmp_e ); L_tmp = L_shl( L_tmp, add( sub( env1_e, env2_e ), tmp_e ) ); duck_gain_out = Mpy_32_32( duck_mult_fac, L_tmp ); /*Q29*/ -- GitLab From faeaeb84596e0e13cb1a3037b228104730cda03c Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 14 Apr 2025 22:04:05 +0200 Subject: [PATCH 313/698] lib_enc: replace BASOP_Util_Divide3232_Scale_cadence() by BASOP_Util_Divide3232_Scale_newton() with exception of ivas_stereo_dmx_evs_fx.c --- lib_enc/find_tilt_fx.c | 2 +- lib_enc/hq_classifier_enc_fx.c | 2 +- lib_enc/ivas_enc_cov_handler_fx.c | 2 +- lib_enc/ivas_masa_enc_fx.c | 24 ++++---- lib_enc/ivas_mdct_core_enc_fx.c | 10 +-- lib_enc/ivas_qmetadata_enc_fx.c | 12 ++-- lib_enc/ivas_stereo_classifier_fx.c | 14 ++--- lib_enc/ivas_stereo_cng_enc_fx.c | 12 ++-- lib_enc/ivas_stereo_dft_enc_fx.c | 78 ++++++++++++------------ lib_enc/ivas_stereo_dft_enc_itd_fx.c | 50 +++++++-------- lib_enc/ivas_stereo_eclvq_enc_fx.c | 20 +++--- lib_enc/ivas_stereo_ica_enc_fx.c | 10 +-- lib_enc/ivas_stereo_mdct_stereo_enc_fx.c | 4 +- lib_enc/ivas_stereo_td_analysis_fx.c | 6 +- lib_enc/ivas_tcx_core_enc_fx.c | 2 +- lib_enc/speech_music_classif_fx.c | 4 +- lib_enc/tcx_utils_enc_fx.c | 2 +- lib_enc/transient_detection_fx.c | 6 +- 18 files changed, 130 insertions(+), 130 deletions(-) diff --git a/lib_enc/find_tilt_fx.c b/lib_enc/find_tilt_fx.c index ed8ff425e..dc78719d2 100644 --- a/lib_enc/find_tilt_fx.c +++ b/lib_enc/find_tilt_fx.c @@ -329,7 +329,7 @@ void find_tilt_ivas_fx( { hp_bckr = L_deposit_l( 1 ); } - Ltmp = BASOP_Util_Divide3232_Scale_cadence( lp_bckr, hp_bckr, &e_tmp ); + Ltmp = BASOP_Util_Divide3232_Scale_newton( lp_bckr, hp_bckr, &e_tmp ); Ltmp = Mpy_32_16_r( Ltmp, 3277 /* 0.1f in Q15 */ ); Ltmp = L_shr_sat( Ltmp, sub( 15, e_tmp ) ); *bckr_tilt_lt = L_add_sat( Mpy_32_16_r( *bckr_tilt_lt, 29491 /* 0.9f in Q15 */ ), Ltmp ); // Q16 diff --git a/lib_enc/hq_classifier_enc_fx.c b/lib_enc/hq_classifier_enc_fx.c index 300e31e8e..d82eebfb5 100644 --- a/lib_enc/hq_classifier_enc_fx.c +++ b/lib_enc/hq_classifier_enc_fx.c @@ -143,7 +143,7 @@ static Word16 hf_spectrum_sparseness_fx( Word16 l_shift = W_norm( inv_rms_fx ); inv_rms32_fx = W_extract_h( W_shl( inv_rms_fx, l_shift ) ); // Q15+l_shift-32 Word16 q_rms = sub( add( Q15, l_shift ), 32 ); // q_rms - inv_rms32_div_fx = BASOP_Util_Divide3232_Scale_cadence( inv_rms32_fx, L_SPEC_HB, &inv_rms32_e ); /* Q31-inv_rms32_e */ + inv_rms32_div_fx = BASOP_Util_Divide3232_Scale_newton( inv_rms32_fx, L_SPEC_HB, &inv_rms32_e ); /* Q31-inv_rms32_e */ inv_rms32_e = sub( 31, add( sub( Q31, inv_rms32_e ), q_rms ) ); // inv_rms = 1.0f / (float) sqrtf( inv_rms / L_SPEC_HB ); inv_rms32_fx = ISqrt32( inv_rms32_div_fx, &inv_rms32_e ); /* Q31-inv_rms32_e */ diff --git a/lib_enc/ivas_enc_cov_handler_fx.c b/lib_enc/ivas_enc_cov_handler_fx.c index c05d59b90..138e1467d 100644 --- a/lib_enc/ivas_enc_cov_handler_fx.c +++ b/lib_enc/ivas_enc_cov_handler_fx.c @@ -271,7 +271,7 @@ static Word16 ivas_spar_get_activeW_flag_fx( } ELSE { - L_tmp = BASOP_Util_Divide3232_Scale_cadence( hCovEnc->bb_var_lt_fx[0], side_ch_var, &exp_diff ); // (Q31 - exp_diff) + L_tmp = BASOP_Util_Divide3232_Scale_newton( hCovEnc->bb_var_lt_fx[0], side_ch_var, &exp_diff ); // (Q31 - exp_diff) en_ratio = L_shl_sat( L_tmp, exp_diff ); // Q31 IF( LT_32( en_ratio, Mpy_32_32( IVAS_SPAR_DYN_ACTIVEW_THRESH_FX, IVAS_SPAR_DYN_ACTIVEW_THRESH_FX ) ) ) // LHS Q31 :: RHS Q31 { diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index 2b9ffef15..5c5de97ab 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -1477,7 +1477,7 @@ static void combine_freqbands_and_subframes_fx( move16(); hMeta->directional_meta[i].energy_ratio_fx[j][k] = - BASOP_Util_Divide3232_Scale_cadence( vecLen, L_add( energySum, EPSILON_FX ), &exp_diff ); /*exp_diff+vecLen_e-energySum_e*/ + BASOP_Util_Divide3232_Scale_newton( vecLen, L_add( energySum, EPSILON_FX ), &exp_diff ); /*exp_diff+vecLen_e-energySum_e*/ move32(); exp_diff = add( exp_diff, sub( vecLen_e, energySum_e ) ); hMeta->directional_meta[i].energy_ratio_fx[j][k] = @@ -1585,7 +1585,7 @@ static void combine_freqbands_and_subframes_fx( { energyRatioSum = BASOP_Util_Add_Mant32Exp( energyRatioSum, energyRatioSum_e, Mpy_32_32( energy[j][k], hMeta->directional_meta[i].energy_ratio_fx[j][k] ), add( energy_e[j][k], 1 ), &energyRatioSum_e ); // 31-energyRatioSum_e } - energyRatioTemp = BASOP_Util_Divide3232_Scale_cadence( energyRatioSum, L_add( energySum, EPSILON_FX ), &exp_diff ); + energyRatioTemp = BASOP_Util_Divide3232_Scale_newton( energyRatioSum, L_add( energySum, EPSILON_FX ), &exp_diff ); exp_diff = add( exp_diff, sub( energyRatioSum_e, energySum_e ) ); energyRatioTemp = L_shl( energyRatioTemp, sub( exp_diff, 1 ) ); // Q30 @@ -2264,13 +2264,13 @@ static void compensate_energy_ratios_fx( FOR( dir = 0; dir < numDirs; dir++ ) { hMeta->directional_meta[dir].energy_ratio_fx[sf][band] = - BASOP_Util_Divide3232_Scale_cadence( hMeta->directional_meta[dir].energy_ratio_fx[sf][band], ratioSum, &exp_diff ); + BASOP_Util_Divide3232_Scale_newton( hMeta->directional_meta[dir].energy_ratio_fx[sf][band], ratioSum, &exp_diff ); move32(); hMeta->directional_meta[dir].energy_ratio_fx[sf][band] = L_shl( hMeta->directional_meta[dir].energy_ratio_fx[sf][band], sub( exp_diff, Q1 ) ); // Q30 move32(); } hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] = - BASOP_Util_Divide3232_Scale_cadence( hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], ratioSum, &exp_diff ); + BASOP_Util_Divide3232_Scale_newton( hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], ratioSum, &exp_diff ); move32(); hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band] = L_shl( hMeta->common_meta.diffuse_to_total_ratio_fx[sf][band], sub( exp_diff, Q1 ) ); // Q30 move32(); @@ -2406,7 +2406,7 @@ static void reduce_metadata_further_fx( IF( hMasa->data.onset_detector_1_fx != 0 ) { - onset_filter = L_max( BASOP_Util_Divide3232_Scale_cadence( hMasa->data.onset_detector_2_fx, hMasa->data.onset_detector_1_fx, &onset_filter_e ), 0 ); + onset_filter = L_max( BASOP_Util_Divide3232_Scale_newton( hMasa->data.onset_detector_2_fx, hMasa->data.onset_detector_1_fx, &onset_filter_e ), 0 ); IF( BASOP_Util_Cmp_Mant32Exp( onset_filter, onset_filter_e, ONE_IN_Q31, 0 ) > 0 ) { @@ -2433,7 +2433,7 @@ static void reduce_metadata_further_fx( Word32 bandRatio; // threshold = totalEnergySum / ( MAX_PARAM_SPATIAL_SUBFRAMES * LOWBITRATE_NUM_BANDS ) * 0.5f; /* Average energy multiplied with energy ratio of 0.5f */ - threshold = BASOP_Util_Divide3232_Scale_cadence( totalEnergySum, ( MAX_PARAM_SPATIAL_SUBFRAMES * LOWBITRATE_NUM_BANDS ) * 2, &exp ); /* Average energy multiplied with energy ratio of 0.5f */ + threshold = BASOP_Util_Divide3232_Scale_newton( totalEnergySum, ( MAX_PARAM_SPATIAL_SUBFRAMES * LOWBITRATE_NUM_BANDS ) * 2, &exp ); /* Average energy multiplied with energy ratio of 0.5f */ exp = add( exp, sub( sub( 31, add( hMasa->data.q_energy, tmp2 ) ), 31 ) ); bandRatio = hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[0]; // Q30 move32(); @@ -2468,7 +2468,7 @@ static void reduce_metadata_further_fx( } IF( totalEnergySum != 0 ) { - meanRatio = BASOP_Util_Divide3232_Scale_cadence( meanRatio, totalEnergySum, &exp ); + meanRatio = BASOP_Util_Divide3232_Scale_newton( meanRatio, totalEnergySum, &exp ); exp = add( add( exp, 1 ), tmp2 ); // 31 - (hMasa->data.q_energy - 1) - 31 - hMasa->data.q_energy - tmp2 => 1 + tmp2 } ELSE @@ -4730,7 +4730,7 @@ static void ivas_encode_masaism_metadata_fx( FOR( obj = 0; obj < nchan_ism; obj++ ) { - hOmasaData->energy_ratio_ism_fx[sf][0][obj] = BASOP_Util_Divide3232_Scale_cadence( energy_ism_ind[obj], energy_ism, &L_tmp_e ); + hOmasaData->energy_ratio_ism_fx[sf][0][obj] = BASOP_Util_Divide3232_Scale_newton( energy_ism_ind[obj], energy_ism, &L_tmp_e ); move32(); L_tmp_e = add( L_tmp_e, sub( energy_ism_ind_e[obj], energy_ism_e ) ); /* Scaling to Q30 */ @@ -4740,7 +4740,7 @@ static void ivas_encode_masaism_metadata_fx( L_tmp = BASOP_Util_Add_Mant32Exp( eneBand32, eneBand_exp, energy_ism, energy_ism_e, &L_tmp_e ); IF( L_tmp != 0 ) { - hOmasaData->masa_to_total_energy_ratio_fx[sf][0] = BASOP_Util_Divide3232_Scale_cadence( eneBand32, L_tmp, &tmp ); + hOmasaData->masa_to_total_energy_ratio_fx[sf][0] = BASOP_Util_Divide3232_Scale_newton( eneBand32, L_tmp, &tmp ); move32(); tmp = add( tmp, sub( eneBand_exp, L_tmp_e ) ); /* Scaling to Q30 */ @@ -4791,7 +4791,7 @@ static void ivas_encode_masaism_metadata_fx( { FOR( obj = 0; obj < nchan_ism; obj++ ) { - hOmasaData->energy_ratio_ism_fx[0][band][obj] = BASOP_Util_Divide3232_Scale_cadence( energy_ism_ind[obj], energy_ism, &L_tmp_e ); + hOmasaData->energy_ratio_ism_fx[0][band][obj] = BASOP_Util_Divide3232_Scale_newton( energy_ism_ind[obj], energy_ism, &L_tmp_e ); move32(); L_tmp_e = add( L_tmp_e, sub( energy_ism_ind_e[obj], energy_ism_e ) ); /* Scaling to Q30 */ @@ -4819,7 +4819,7 @@ static void ivas_encode_masaism_metadata_fx( L_tmp = BASOP_Util_Add_Mant32Exp( eneBand32, eneBand_exp, energy_ism, energy_ism_e, &L_tmp_e ); IF( L_tmp != 0 ) { - hOmasaData->masa_to_total_energy_ratio_fx[0][band] = BASOP_Util_Divide3232_Scale_cadence( eneBand32, L_tmp, &tmp ); + hOmasaData->masa_to_total_energy_ratio_fx[0][band] = BASOP_Util_Divide3232_Scale_newton( eneBand32, L_tmp, &tmp ); move32(); tmp = add( tmp, sub( eneBand_exp, L_tmp_e ) ); /* Scaling to Q30 */ @@ -4876,7 +4876,7 @@ static void ivas_encode_masaism_metadata_fx( L_tmp = BASOP_Util_Add_Mant32Exp( eneBand32, eneBand_exp, hOmasaData->energy_ism_fx[sf][band], hOmasaData->energy_ism_fx_e[sf][band], &L_tmp_e ); IF( L_tmp != 0 ) { - hOmasaData->masa_to_total_energy_ratio_fx[sf][band] = BASOP_Util_Divide3232_Scale_cadence( eneBand32, L_tmp, &tmp ); + hOmasaData->masa_to_total_energy_ratio_fx[sf][band] = BASOP_Util_Divide3232_Scale_newton( eneBand32, L_tmp, &tmp ); move32(); tmp = add( tmp, sub( eneBand_exp, L_tmp_e ) ); /* Scaling to Q30 */ diff --git a/lib_enc/ivas_mdct_core_enc_fx.c b/lib_enc/ivas_mdct_core_enc_fx.c index e744c7f47..401e1360d 100644 --- a/lib_enc/ivas_mdct_core_enc_fx.c +++ b/lib_enc/ivas_mdct_core_enc_fx.c @@ -233,7 +233,7 @@ static Word16 kernel_switch_detect_fx( L_tmp1 = Sqrt32( L_tmp1, &exp_tmp1 ); L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, L_tmp1, exp_tmp1, &exp_tmp ); L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, ONE_IN_Q30, 1, &exp_tmp ); - cov00 = BASOP_Util_Divide3232_Scale_cadence( cov00, L_tmp, &exp_tmp1 ); + cov00 = BASOP_Util_Divide3232_Scale_newton( cov00, L_tmp, &exp_tmp1 ); exp_tmp = add( exp_tmp1, sub( sub( Q31, q_com ), exp_tmp ) ); /* Added saturation to handle overflows when value is very close to 1.f */ cov00 = L_shl_sat( cov00, exp_tmp ); // Q31 @@ -247,7 +247,7 @@ static Word16 kernel_switch_detect_fx( L_tmp1 = Sqrt32( L_tmp1, &exp_tmp1 ); L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, L_tmp1, exp_tmp1, &exp_tmp ); L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, exp_tmp, ONE_IN_Q30, 1, &exp_tmp ); - cov90 = BASOP_Util_Divide3232_Scale_cadence( cov90, L_tmp, &exp_tmp1 ); + cov90 = BASOP_Util_Divide3232_Scale_newton( cov90, L_tmp, &exp_tmp1 ); exp_tmp = add( exp_tmp1, sub( sub( Q31, q_com ), exp_tmp ) ); /* Added saturation to handle overflows when value is very close to 1.f */ cov90 = L_shl_sat( cov90, exp_tmp ); // Q31 @@ -735,7 +735,7 @@ static void applyStereoPreProcessingCplx( d_q = sub( 31, d_q ); deno = L_max( L_shl_sat( 1, d_q ), d_fx ); - sq_imp = BASOP_Util_Divide3232_Scale_cadence( n_fx, deno, &exp ); + sq_imp = BASOP_Util_Divide3232_Scale_newton( n_fx, deno, &exp ); exp = add( exp, sub( d_q, n_q ) ); d_fx = Sqrt32( sq_imp, &exp ); *mdctSample1_fx = Mpy_32_32( dmxR1_fx, d_fx ); @@ -764,7 +764,7 @@ static void applyStereoPreProcessingCplx( d_q = sub( 31, d_q ); deno = L_max( L_shl_sat( 1, d_q ), d_fx ); - sq_imp = BASOP_Util_Divide3232_Scale_cadence( n_fx, deno, &exp ); + sq_imp = BASOP_Util_Divide3232_Scale_newton( n_fx, deno, &exp ); exp = add( exp, sub( d_q, n_q ) ); d_fx = Sqrt32( sq_imp, &exp ); *mdctSample2_fx = Mpy_32_32( dmxR2_fx, d_fx ); @@ -956,7 +956,7 @@ static UWord16 enc_ste_pre_mdct( ELSE { Word16 exp1; - corr_fx = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_32( corr_fx, corr_fx ), Mpy_32_32( sumL_fx, sumR_fx ), &exp1 ); + corr_fx = BASOP_Util_Divide3232_Scale_newton( Mpy_32_32( corr_fx, corr_fx ), Mpy_32_32( sumL_fx, sumR_fx ), &exp1 ); corr_e = add( exp1, sub( shl( corr_e, 1 ), add( sumL_e, sumR_e ) ) ); } test(); diff --git a/lib_enc/ivas_qmetadata_enc_fx.c b/lib_enc/ivas_qmetadata_enc_fx.c index 10380f422..79a4adee7 100644 --- a/lib_enc/ivas_qmetadata_enc_fx.c +++ b/lib_enc/ivas_qmetadata_enc_fx.c @@ -1332,12 +1332,12 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512_fx( ratioSum = L_add( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] ); IF( GT_32( ratioSum, ONE_IN_Q30 /*1.0f*/ ) ) { - hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], ratioSum, &div_e ); + hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], ratioSum, &div_e ); hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[0].band_data[j].energy_ratio_fx[k], sub( div_e, 1 ) ); move32(); move32(); - hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e ); + hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e ); hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], sub( div_e, 1 ) ); move32(); move32(); @@ -1385,12 +1385,12 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512_fx( IF( GT_32( ratioSum, ONE_IN_Q30 /*1.0f*/ ) ) { - hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k], ratioSum, &div_e ); + hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k], ratioSum, &div_e ); hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio_fx[k], sub( div_e, 1 ) ); move32(); move32(); - hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_cadence( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e ); + hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = BASOP_Util_Divide3232_Scale_newton( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], ratioSum, &div_e ); hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k] = L_shl( hQMetaData->q_direction[1].band_data[j].energy_ratio_fx[k], sub( div_e, 1 ) ); move32(); move32(); @@ -6619,7 +6619,7 @@ void ivas_omasa_encode_masa_to_total_fx( { j = imult1616( k, len_stream ); /* quantize with fixed common step */ - L_tmp = BASOP_Util_Divide3232_Scale_cadence( dct_data[j], step, &tmp_e ); + L_tmp = BASOP_Util_Divide3232_Scale_newton( dct_data[j], step, &tmp_e ); tmp_e = add( tmp_e, Q6 ); q_idx[j] = rint_new_fx( L_shr( L_tmp, sub( 15, tmp_e ) ) /* Q16 */ ); // Q0 move16(); @@ -6642,7 +6642,7 @@ void ivas_omasa_encode_masa_to_total_fx( { FOR( i = 1; i < len_stream; i++ ) { - L_tmp = BASOP_Util_Divide3232_Scale_cadence( dct_data[j + i], step, &tmp_e ); + L_tmp = BASOP_Util_Divide3232_Scale_newton( dct_data[j + i], step, &tmp_e ); tmp_e = add( tmp_e, Q6 ); q_idx[j + i] = rint_new_fx( L_shr( L_tmp, sub( 15, tmp_e ) ) ); move16(); diff --git a/lib_enc/ivas_stereo_classifier_fx.c b/lib_enc/ivas_stereo_classifier_fx.c index 3e69a0ca6..3a040517a 100644 --- a/lib_enc/ivas_stereo_classifier_fx.c +++ b/lib_enc/ivas_stereo_classifier_fx.c @@ -890,7 +890,7 @@ void unclr_classifier_td_fx( move16(); /* mean & std removal */ - fvn = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_td[i] ), unclr_scale_td[i], &exp ); + fvn = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_td[i] ), unclr_scale_td[i], &exp ); fvn = Mpy_32_32( fvn, unclr_coef_td[i] ); // Q = 31-exp+15-31 = 15-exp exp = add( exp, 16 ); // exp = 31-(15-exp) = 16+exp @@ -1016,7 +1016,7 @@ void unclr_classifier_dft_fx( /* mean & std removal */ // fvn[i] = (hStereoClassif->unclr_fv[ind] - unclr_mean_dft[i]) / unclr_scale_dft[i]; - fvn[i] = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_dft_Q15[i] ), unclr_scale_dft_Q15[i], &fvn_e[i] ); + fvn[i] = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->unclr_fv_fx[ind], unclr_mean_dft_Q15[i] ), unclr_scale_dft_Q15[i], &fvn_e[i] ); move32(); /* LR */ @@ -1157,7 +1157,7 @@ void xtalk_classifier_td_fx( move16(); /* mean & std removal */ - fvn = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ), xtalk_scale_td[i], &exp ); + fvn = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_td[i] ), xtalk_scale_td[i], &exp ); fvn = Mpy_32_32( fvn, xtalk_coef_td[i] ); // Q = 31-exp+15-31 = 15-exp exp = add( exp, 16 ); // exp = 31-(15-exp) = 16+exp @@ -1372,7 +1372,7 @@ void xtalk_classifier_dft_fx( // ratio_m1_m2 = fabsf( m1 * m2 ) / fabsf( m1 + m2 + 1.0f ); Word16 exp; - ratio_m1_m2 = BASOP_Util_Divide3232_Scale_cadence( L_abs( Mpy_32_32( m1, m2 ) ), L_abs( L_add( L_add( L_shr( m1, 2 ), L_shr( m2, 2 ) ), ONE_IN_Q29 ) ), &exp ); + ratio_m1_m2 = BASOP_Util_Divide3232_Scale_newton( L_abs( Mpy_32_32( m1, m2 ) ), L_abs( L_add( L_add( L_shr( m1, 2 ), L_shr( m2, 2 ) ), ONE_IN_Q29 ) ), &exp ); exp = sub( exp, 2 ); // m2_m2 = hItd->prev_m2 * m2; m2_m2 = Mpy_32_32( hItd->prev_m2_fx, m2 ); @@ -1406,7 +1406,7 @@ void xtalk_classifier_dft_fx( /* mean & std removal */ // fvn[i] = ( hStereoClassif->xtalk_fv[ind] - xtalk_mean_dft[i] ) / xtalk_scale_dft[i]; - fvn[i] = BASOP_Util_Divide3232_Scale_cadence( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_dft_q15[i] ), xtalk_scale_dft_q15[i], &exp ); // Q15 + fvn[i] = BASOP_Util_Divide3232_Scale_newton( L_sub( hStereoClassif->xtalk_fv_fx[ind], xtalk_mean_dft_q15[i] ), xtalk_scale_dft_q15[i], &exp ); // Q15 move32(); fvn[i] = L_shl_sat( fvn[i], sub( exp, 2 ) ); // Q29 move32(); @@ -1755,7 +1755,7 @@ static Word32 redge_detect_fx( { // edge_slope = ( inp_max - inp_min ) / i; L_temp = BASOP_Util_Add_Mant32Exp( inp_max, 0, L_negate( inp_min ), 0, &L_temp_e ); - edge_slope = BASOP_Util_Divide3232_Scale_cadence( L_temp, i, &edge_slope_e ); + edge_slope = BASOP_Util_Divide3232_Scale_newton( L_temp, i, &edge_slope_e ); edge_slope_e = add( edge_slope_e, sub( L_temp_e, 31 ) ); edge[i] = err0; move32(); @@ -1788,7 +1788,7 @@ static Word32 redge_detect_fx( } // edge[i] /= i + 1; - edge[i] = BASOP_Util_Divide3232_Scale_cadence( edge[i], add( i, 1 ), &L_temp_e ); + edge[i] = BASOP_Util_Divide3232_Scale_newton( edge[i], add( i, 1 ), &L_temp_e ); move32(); edge_e[i] = add( L_temp_e, sub( edge_e[i], 31 ) ); move16(); diff --git a/lib_enc/ivas_stereo_cng_enc_fx.c b/lib_enc/ivas_stereo_cng_enc_fx.c index aa7c2d0aa..b73a57f46 100644 --- a/lib_enc/ivas_stereo_cng_enc_fx.c +++ b/lib_enc/ivas_stereo_cng_enc_fx.c @@ -101,7 +101,7 @@ void stereo_dft_enc_sid_calc_coh_fx( L_tmp1_e = sub( add( hStereoDft->Spd_L_smooth_fx_e, hStereoDft->Spd_R_smooth_fx_e ), W_tmp_q ); L_tmp2 = BASOP_Util_Add_Mant32Exp( Mpy_32_32( hStereoDft->xspec_smooth_fx[2 * k], hStereoDft->xspec_smooth_fx[2 * k] ), shl( hStereoDft->xspec_smooth_fx_e[2 * k], 1 ), Mpy_32_32( hStereoDft->xspec_smooth_fx[2 * k + 1], hStereoDft->xspec_smooth_fx[2 * k + 1] ), shl( hStereoDft->xspec_smooth_fx_e[2 * k + 1], 1 ), &L_tmp2_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e ); - L_tmp3 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp3_e ); + L_tmp3 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp3_e ); L_tmp3_e = add( L_tmp3_e, sub( L_tmp1_e, L_tmp2_e ) ); L_tmp3 = Mpy_32_32( prev_cohBand[b], L_tmp3 ); xspec_scale = Sqrt32( L_tmp3, &L_tmp3_e ); @@ -137,7 +137,7 @@ void stereo_dft_enc_sid_calc_coh_fx( L_tmp2 = W_extract_h( W_shl( W_tmp, W_tmp_q ) ); L_tmp2_e = sub( add( hStereoDft->Spd_L_smooth_fx_e, hStereoDft->Spd_R_smooth_fx_e ), W_tmp_q ); L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e ); - L_tmp3 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp3_e ); + L_tmp3 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp3_e ); L_tmp3_e = add( L_tmp3_e, sub( L_tmp1_e, L_tmp2_e ) ); L_tmp3 = Mpy_32_32( coh_weight, L_tmp3 ); L_tmp3_e = add( coh_weight_e, L_tmp3_e ); @@ -150,7 +150,7 @@ void stereo_dft_enc_sid_calc_coh_fx( IF( coh_weight_sum > 0 ) { // cohBand[b] = cohBand[b] / coh_weight_sum; - cohBand[b] = BASOP_Util_Divide3232_Scale_cadence( cohBand[b], coh_weight_sum, &L_tmp1_e ); + cohBand[b] = BASOP_Util_Divide3232_Scale_newton( cohBand[b], coh_weight_sum, &L_tmp1_e ); move32(); cohBand_e[b] = add( L_tmp1_e, sub( cohBand_e[b], coh_weight_sum_e ) ); move16(); @@ -510,7 +510,7 @@ void stereo_dft_cng_side_gain_fx( hStereoCng->prev_sg_average_fx[b] = hStereoCng->sg_average_fx[b]; move32(); // hStereoCng->sg_average[b] = hStereoCng->sg_average[b] / (float) hStereoCng->sg_average_counter; - hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( hStereoCng->sg_average_fx[b], hStereoCng->sg_average_counter, &tmp_e ); + hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_newton( hStereoCng->sg_average_fx[b], hStereoCng->sg_average_counter, &tmp_e ); move32(); tmp_e = sub( tmp_e, 31 - 5 ); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub( tmp_e, 5 ) ); // Q31 @@ -535,7 +535,7 @@ void stereo_dft_cng_side_gain_fx( tmp = hStereoCng->sg_average_fx[b]; move32(); // hStereoCng->sg_average[b] = ( hStereoCng->sg_average[b] + prev_weight * hStereoCng->prev_sg_average[b] ) / ( (float) hStereoCng->sg_average_counter + prev_weight * (float) hStereoCng->prev_sg_average_counter ); - hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_cadence( L_add( hStereoCng->sg_average_fx[b], Mpy_32_16_1( hStereoCng->prev_sg_average_fx[b], prev_weight ) ), L_add( L_shl( hStereoCng->sg_average_counter, Q15 ), L_mult0( prev_weight, hStereoCng->prev_sg_average_counter ) ), &tmp_e ); + hStereoCng->sg_average_fx[b] = BASOP_Util_Divide3232_Scale_newton( L_add( hStereoCng->sg_average_fx[b], Mpy_32_16_1( hStereoCng->prev_sg_average_fx[b], prev_weight ) ), L_add( L_shl( hStereoCng->sg_average_counter, Q15 ), L_mult0( prev_weight, hStereoCng->prev_sg_average_counter ) ), &tmp_e ); move32(); tmp_e = sub( tmp_e, 16 - 5 ); hStereoCng->sg_average_fx[b] = L_shl_r( hStereoCng->sg_average_fx[b], sub( tmp_e, 5 ) ); // Q26 @@ -571,7 +571,7 @@ void stereo_dft_cng_side_gain_fx( W_tmp_q = W_norm( W_tmp ); hStereoDft->sidSideGain_fx[b] = W_extract_h( W_shl( W_tmp, W_tmp_q ) ); move32(); - hStereoDft->sidSideGain_fx[b] = BASOP_Util_Divide3232_Scale_cadence( hStereoDft->sidSideGain_fx[b], sgSum, &tmp_e ); + hStereoDft->sidSideGain_fx[b] = BASOP_Util_Divide3232_Scale_newton( hStereoDft->sidSideGain_fx[b], sgSum, &tmp_e ); move32(); tmp_e = sub( tmp_e, W_tmp_q ); hStereoDft->sidSideGain_fx[b] = L_shl_sat( hStereoDft->sidSideGain_fx[b], tmp_e ); // Q31: saturation is fine since stereo_dft_quantize_res_gains_fx limits value to 1.0 diff --git a/lib_enc/ivas_stereo_dft_enc_fx.c b/lib_enc/ivas_stereo_dft_enc_fx.c index 01318af28..6406158b4 100644 --- a/lib_enc/ivas_stereo_dft_enc_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_fx.c @@ -880,7 +880,7 @@ void stereo_dft_enc_update_fx( // hStereoDft->res_cod_line_max = (int16_t) ( 0.5f + ( hStereoDft->band_limits[hStereoDft->res_cod_band_max] - 1 ) * 2.f * hStereoDft->N / (float) ( hStereoDft->NFFT ) ); Word32 tmp = L_shl( L_mult0( sub( hStereoDft->band_limits[hStereoDft->res_cod_band_max], 1 ), hStereoDft->N ), 1 ); Word16 exp; - tmp = BASOP_Util_Divide3232_Scale_cadence( tmp, hStereoDft->NFFT, &exp ); + tmp = BASOP_Util_Divide3232_Scale_newton( tmp, hStereoDft->NFFT, &exp ); hStereoDft->res_cod_line_max = extract_l( L_shr( tmp, sub( 31, exp ) ) ); move16(); // hStereoDft->res_cod_line_max = 8 * (hStereoDft->res_cod_line_max / 8); @@ -1226,7 +1226,7 @@ Word32 stereo_dft_enc_synthesize_fx( zp = STEREO_DFT_ZP_12k8_ENC; move16(); // fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT ); - fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp ); + fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp ); fac_fx = L_shl( fac_fx, temp_exp ); ovl = STEREO_DFT_OVL_12k8; move16(); @@ -1250,7 +1250,7 @@ Word32 stereo_dft_enc_synthesize_fx( zp = STEREO_DFT_ZP_16k_ENC; move16(); // fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT ); - fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp ); + fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp ); fac_fx = L_shl( fac_fx, temp_exp ); ovl = STEREO_DFT_OVL_16k; move16(); @@ -1283,7 +1283,7 @@ Word32 stereo_dft_enc_synthesize_fx( zp = STEREO_DFT_ZP_32k_ENC; move16(); // fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT ); - fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp ); + fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp ); fac_fx = L_shl( fac_fx, temp_exp ); ovl = STEREO_DFT_OVL_32k; move16(); @@ -1307,7 +1307,7 @@ Word32 stereo_dft_enc_synthesize_fx( zp = STEREO_DFT_ZP_8k_ENC; move16(); // fac = (float) ( NFFT ) / (float) ( hStereoDft->NFFT ); - fac_fx = BASOP_Util_Divide3232_Scale_cadence( NFFT, hStereoDft->NFFT, &temp_exp ); + fac_fx = BASOP_Util_Divide3232_Scale_newton( NFFT, hStereoDft->NFFT, &temp_exp ); fac_fx = L_shl( fac_fx, temp_exp ); ovl = STEREO_DFT_OVL_8k; move16(); @@ -1511,7 +1511,7 @@ Word32 stereo_dft_enc_synthesize_fx( move32(); // output[offset + N + i] = ( tmp[zp + N + i] - ifft_deviation ) / win_ana[ovl - 1 - i] + ifft_deviation; Word16 L_temp_e; - Word32 L_temp = BASOP_Util_Divide3232_Scale_cadence( L_sub_sat( tmp_fx[zp + N + i], ifft_deviation ), L_deposit_h( win_ana_fx[ovl - 1 - i] ), &L_temp_e ); + Word32 L_temp = BASOP_Util_Divide3232_Scale_newton( L_sub_sat( tmp_fx[zp + N + i], ifft_deviation ), L_deposit_h( win_ana_fx[ovl - 1 - i] ), &L_temp_e ); L_temp = L_shl_sat( L_temp, L_temp_e ); output_fx[offset + N + i] = L_add_sat( L_temp, ifft_deviation ); // Q15 move32(); @@ -1733,7 +1733,7 @@ void stereo_dft_enc_process_fx( } // if ( fabsf( hStereoDft->hItd->deltaItd[k_offset] * 32000.f / input_Fs ) > 80.0f ) - tmp_32fx = L_abs( BASOP_Util_Divide3232_Scale_cadence( hStereoDft->hItd->deltaItd_fx[k_offset], input_Fs, &tmp_e ) ); + tmp_32fx = L_abs( BASOP_Util_Divide3232_Scale_newton( hStereoDft->hItd->deltaItd_fx[k_offset], input_Fs, &tmp_e ) ); tmp_e = add( tmp_e, 15 - 31 ); IF( BASOP_Util_Cmp_Mant32Exp( tmp_32fx, tmp_e, 5368709 /* 80.0f / 32000.f in Q31 */, 0 ) > 0 ) { @@ -2026,13 +2026,13 @@ void stereo_dft_enc_process_fx( // wR = sqrtf( 0.5f * ( comb_nrgL + comb_nrgR ) + frac_dot_prod ) / sum_abs; L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp1, sub( L_tmp1_e, 1 ), frac_dot_prod, frac_dot_prod_e, &L_tmp1_e ); L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e ); - wR = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &wR_e ); + wR = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &wR_e ); wR_e = add( wR_e, sub( L_tmp1_e, sum_abs_e ) ); // wL = wR + sqrtf( 2.f ) * ( 1.f - ( sqrtf( Sr + Si ) / sum_abs ) ); L_tmp1 = BASOP_Util_Add_Mant32Exp( Sr, Sr_e, Si, Si_e, &L_tmp1_e ); L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &L_tmp2_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &L_tmp2_e ); L_tmp2_e = add( L_tmp2_e, sub( L_tmp1_e, sum_abs_e ) ); L_tmp2 = L_shl_sat( L_tmp2, L_tmp2_e ); // Q31 saturation expected L_tmp1 = L_sub( MAX_32, L_tmp2 ); // Q31 @@ -2111,13 +2111,13 @@ void stereo_dft_enc_process_fx( // wR = sqrtf( 0.5f * ( comb_nrgL + comb_nrgR ) + frac_dot_prod ) / sum_abs; L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp1, sub( L_tmp1_e, 1 ), frac_dot_prod, frac_dot_prod_e, &L_tmp1_e ); L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e ); - wR = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &wR_e ); + wR = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &wR_e ); wR_e = add( wR_e, sub( L_tmp1_e, sum_abs_e ) ); // wL = wR + sqrtf( 2.f ) * ( 1.f - ( sqrtf( Sr + Si ) / sum_abs ) ); L_tmp1 = BASOP_Util_Add_Mant32Exp( Sr, Sr_e, Si, Si_e, &L_tmp1_e ); L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &L_tmp2_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &L_tmp2_e ); L_tmp2_e = add( L_tmp2_e, sub( L_tmp1_e, sum_abs_e ) ); L_tmp2 = L_shl_sat( L_tmp2, L_tmp2_e ); // Q31 saturation expected L_tmp1 = L_sub( MAX_32, L_tmp2 ); // Q31 @@ -2191,7 +2191,7 @@ void stereo_dft_enc_process_fx( // wR = sqrtf( 0.5f * ( sum_nrg_L2 + sum_nrg_R2 ) + dot_prod_nrg_ratio[b] ) / sum_abs; L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp3, sub( L_tmp3_e, 1 ), dot_prod_nrg_ratio_fx[b], dot_prod_nrg_ratio_fx_e[b], &L_tmp1_e ); L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e ); - wR = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &wR_e ); + wR = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &wR_e ); wR_e = add( wR_e, sub( L_tmp1_e, sum_abs_e ) ); // wL = wR + sqrtf( 2.f ) * ( 1.f - sqrtf( sum_nrg_Mid ) / sum_abs ); @@ -2200,7 +2200,7 @@ void stereo_dft_enc_process_fx( L_tmp1_e = sum_nrg_Mid_e; move16(); L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_abs, &L_tmp2_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_abs, &L_tmp2_e ); L_tmp2_e = add( L_tmp2_e, sub( L_tmp1_e, sum_abs_e ) ); L_tmp2 = L_shl_sat( L_tmp2, L_tmp2_e ); // Q31 saturation expected L_tmp1 = L_sub( MAX_32, L_tmp2 ); // Q31 @@ -2478,7 +2478,7 @@ static void stereo_dft_enc_get_res_cod_mode_flag_fx( L_tmp1 = L_sub( MAX_32, g ); // Q31 L_tmp2 = BASOP_Util_Add_Mant32Exp( hStereoDft->res_cod_NRG_S_fx[b], hStereoDft->res_cod_NRG_S_fx_e[b], Mpy_32_32( Mpy_32_32( L_tmp1, L_tmp1 ), hStereoDft->res_cod_NRG_M_fx[b] ), hStereoDft->res_cod_NRG_M_fx_e[b], &L_tmp2_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, MAX_32, 0, &L_tmp2_e ); - L_tmp1 = BASOP_Util_Divide3232_Scale_cadence( hStereoDft->res_cod_NRG_S_fx[b], L_tmp2, &L_tmp1_e ); + L_tmp1 = BASOP_Util_Divide3232_Scale_newton( hStereoDft->res_cod_NRG_S_fx[b], L_tmp2, &L_tmp1_e ); L_tmp1_e = add( L_tmp1_e, sub( hStereoDft->res_cod_NRG_S_fx_e[b], L_tmp2_e ) ); L_tmp1 = L_shl( L_tmp1, L_tmp1_e ); // Q31 *res_dmx_ratio = L_max( L_tmp1, *res_dmx_ratio ); @@ -2494,7 +2494,7 @@ static void stereo_dft_enc_get_res_cod_mode_flag_fx( /*Calculate the energy ratio of the inter-frame */ //*frame_nrg_ratio = dmx_res_all / hStereoDft->dmx_res_all_prev; - *frame_nrg_ratio = BASOP_Util_Divide3232_Scale_cadence( dmx_res_all, hStereoDft->dmx_res_all_prev_fx, &L_tmp1_e ); + *frame_nrg_ratio = BASOP_Util_Divide3232_Scale_newton( dmx_res_all, hStereoDft->dmx_res_all_prev_fx, &L_tmp1_e ); move32(); L_tmp1_e = add( L_tmp1_e, sub( dmx_res_all_e, hStereoDft->dmx_res_all_prev_fx_e ) ); *frame_nrg_ratio = L_shr_r_sat( *frame_nrg_ratio, sub( 3, L_tmp1_e ) ); // Q28 @@ -2741,7 +2741,7 @@ void stereo_dft_enc_res_fx( L_tmp2_e = hStereoDft->res_cod_NRG_M_fx_e[b]; L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, hStereoDft->res_cod_NRG_S_fx[b], hStereoDft->res_cod_NRG_S_fx_e[b], &L_tmp2_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, MAX_32, 0, &L_tmp2_e ); - in_phase_ratio = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &in_phase_ratio_e ); + in_phase_ratio = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &in_phase_ratio_e ); in_phase_ratio_e = add( in_phase_ratio_e, sub( hStereoDft->res_cod_NRG_M_fx_e[b], L_tmp2_e ) ); in_phase_ratio = L_shl_sat( in_phase_ratio, in_phase_ratio_e ); // Q31 : bound from 0.0 to 1.0 in_phase_ratio = L_max( 0, in_phase_ratio ); @@ -3512,7 +3512,7 @@ static void stereo_dft_enc_compute_prm_fx( W_shift = W_norm( W_tmp ); L_tmp2 = W_extract_h( W_shl( W_tmp, W_shift ) ); L_tmp2_e = sub( add( sub_nrg_DMX2_e, 31 ), W_shift ); - L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e ); + L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e ); L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) ); L_tmp = L_shl( L_tmp, L_tmp_e ); // Q31hStereoDft->gainIPD_sm_fx = L_add( L_shr( hStereoDft->gainIPD_sm_fx, 1 ), L_ gain_IPD = L_add_sat( gain_IPD, L_tmp ); // Q31: saturation expected @@ -3597,7 +3597,7 @@ static void stereo_dft_enc_compute_prm_fx( // dot_prod_nrg_ratio[b2] = sum_past_dot_prod_abs2 / ( sum_past_nrgL2 + sum_past_nrgR2 + EPSILON ); L_tmp2 = BASOP_Util_Add_Mant32Exp( sum_past_nrgL2, sum_past_nrgL2_e, sum_past_nrgR2, sum_past_nrgR2_e, &L_tmp2_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e ); - dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_cadence( sum_past_dot_prod_abs2, L_tmp2, &L_tmp_e ); + dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_newton( sum_past_dot_prod_abs2, L_tmp2, &L_tmp_e ); move32(); L_tmp_e = add( L_tmp_e, sub( sum_past_dot_prod_abs2_e, L_tmp2_e ) ); dot_prod_nrg_ratio_fx[b2] = L_shl( dot_prod_nrg_ratio_fx[b2], L_tmp_e ); // Q31 @@ -3624,7 +3624,7 @@ static void stereo_dft_enc_compute_prm_fx( // dot_prod_nrg_ratio[b2] /= ( sum_nrg_L2 + sum_nrg_R2 + EPSILON ); L_tmp2 = BASOP_Util_Add_Mant32Exp( sum_nrg_L2, sum_nrg_L2_e, sum_nrg_R2, sum_nrg_R2_e, &L_tmp2_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( L_tmp2, L_tmp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e ); - dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_cadence( dot_prod_nrg_ratio_fx[b2], L_tmp2, &L_tmp_e ); + dot_prod_nrg_ratio_fx[b2] = BASOP_Util_Divide3232_Scale_newton( dot_prod_nrg_ratio_fx[b2], L_tmp2, &L_tmp_e ); move32(); L_tmp_e = add( L_tmp_e, sub( dot_prod_nrg_ratio_fx_e[b2], L_tmp2_e ) ); dot_prod_nrg_ratio_fx[b2] = L_shl( dot_prod_nrg_ratio_fx[b2], L_tmp_e ); // Q31 @@ -3691,7 +3691,7 @@ static void stereo_dft_enc_compute_prm_fx( } // c = sqrtf( sum_past_nrgL / sum_past_nrgR ); - c = BASOP_Util_Divide3232_Scale_cadence( sum_past_nrgL, sum_past_nrgR, &c_e ); + c = BASOP_Util_Divide3232_Scale_newton( sum_past_nrgL, sum_past_nrgR, &c_e ); c_e = add( c_e, sub( sum_past_nrgL_e, sum_past_nrgR_e ) ); c = Sqrt32( c, &c_e ); // sum_past_nrg_dmx = sum_past_nrgL + sum_past_nrgR + 2 * sum_past_dot_prod_abs; @@ -3718,7 +3718,7 @@ static void stereo_dft_enc_compute_prm_fx( { // g = ( sum_past_nrgL - sum_past_nrgR ) / ( sum_past_nrg_dmx ); L_tmp1 = BASOP_Util_Add_Mant32Exp( sum_past_nrgL, sum_past_nrgL_e, L_negate( sum_past_nrgR ), sum_past_nrgR_e, &L_tmp1_e ); - L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, sum_past_nrg_dmx, &L_tmp_e ); + L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp1, sum_past_nrg_dmx, &L_tmp_e ); L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, sum_past_nrg_dmx_e ) ); g = L_shl_sat( L_tmp, L_tmp_e ); // Q31 saturation expected pSideGain[b] = g; @@ -3731,7 +3731,7 @@ static void stereo_dft_enc_compute_prm_fx( // pSideGain[b] = ( c - 1 ) / ( c + 1 ); L_tmp1 = BASOP_Util_Add_Mant32Exp( c, c_e, MIN_32, 0, &L_tmp1_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( c, c_e, MAX_32, 0, &L_tmp2_e ); - L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e ); + L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e ); L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) ); pSideGain[b] = L_shl_sat( L_tmp, L_tmp_e ); // Q31 saturation expected move32(); @@ -3774,7 +3774,7 @@ static void stereo_dft_enc_compute_prm_fx( // pPredGain[b] = sqrtf( pPredGain[b] / ( reg + sum_past_nrg_dmx ) ); L_tmp2 = BASOP_Util_Add_Mant32Exp( reg, reg_e, sum_past_nrg_dmx, sum_past_nrg_dmx_e, &L_tmp2_e ); - L_tmp1 = BASOP_Util_Divide3232_Scale_cadence( L_tmp, L_tmp2, &L_tmp1_e ); + L_tmp1 = BASOP_Util_Divide3232_Scale_newton( L_tmp, L_tmp2, &L_tmp1_e ); L_tmp1_e = add( L_tmp1_e, sub( L_tmp_e, L_tmp2_e ) ); L_tmp1 = Sqrt32( L_tmp1, &L_tmp1_e ); pPredGain[b] = L_shl( L_tmp1, L_tmp1_e ); // Q31 @@ -3913,14 +3913,14 @@ static void stereo_dft_enc_compute_prm_fx( } // c = sqrtf( sum_energy_L / sum_energy_R ); - c = BASOP_Util_Divide3232_Scale_cadence( sum_energy_L, sum_energy_R, &c_e ); + c = BASOP_Util_Divide3232_Scale_newton( sum_energy_L, sum_energy_R, &c_e ); c_e = add( c_e, sub( sum_energy_L_e, sum_energy_R_e ) ); c = Sqrt32( c, &c_e ); // g = fabsf( ( c - 1 ) / ( c + 1 ) ); L_tmp1 = BASOP_Util_Add_Mant32Exp( c, c_e, MIN_32, 0, &L_tmp1_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( c, c_e, MAX_32, 0, &L_tmp2_e ); - g = L_abs( BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e ) ); + g = L_abs( BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e ) ); L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) ); g = L_shl_sat( g, L_tmp_e ); // Q31 saturation expected IF( GT_32( g, 1717986918 /*0.8f in Q31*/ ) ) @@ -4326,7 +4326,7 @@ static Word32 stereo_dft_calc_mean_ipd_change_fx( ipd_mean_change = L_add( ipd_mean_change, ipd_change[b] ); } // ipd_mean_change /= gipd_band_max; - ipd_mean_change = BASOP_Util_Divide3232_Scale_cadence( ipd_mean_change, gipd_band_max, &ipd_mean_change_e ); + ipd_mean_change = BASOP_Util_Divide3232_Scale_newton( ipd_mean_change, gipd_band_max, &ipd_mean_change_e ); ipd_mean_change_e = add( ipd_mean_change_e, 18 - 31 ); ipd_mean_change = L_shr( ipd_mean_change, sub( 18, ipd_mean_change_e ) ); // Q13 @@ -4510,13 +4510,13 @@ static void stereo_dft_enc_get_reverb_flag_fx( FOR( b = 0; b <= s_min( hStereoDft->nbands, 6 ); b++ ) /* choose the subbands used for stereo filling */ { // norm_dmx = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_DMX[b]); - norm_dmx = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e ); + norm_dmx = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e ); norm_dmx_e = add( norm_dmx_e, sub( 31, sub_nrg_DMX_e[b] ) ); // norm_l = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_L[b]); - norm_l = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e ); + norm_l = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e ); norm_l_e = add( norm_l_e, sub( 31, sub_nrg_L_e[b] ) ); // norm_r = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_R[b]); - norm_r = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e ); + norm_r = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e ); norm_r_e = add( norm_r_e, sub( 31, sub_nrg_R_e[b] ) ); FOR( i = hStereoDft->band_limits[b]; i < hStereoDft->band_limits[b + 1]; i++ ) /* normalization on each subbands */ @@ -4562,13 +4562,13 @@ static void stereo_dft_enc_get_reverb_flag_fx( FOR( ; b < s_min( hStereoDft->nbands, 10 ); b++ ) /* choose the subbands used for stereo filling */ { // norm_dmx = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_DMX[b]); - norm_dmx = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e ); + norm_dmx = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_DMX[b], &norm_dmx_e ); norm_dmx_e = add( norm_dmx_e, sub( 31, sub_nrg_DMX_e[b] ) ); // norm_l = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_L[b]); - norm_l = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e ); + norm_l = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_L[b], &norm_l_e ); norm_l_e = add( norm_l_e, sub( 31, sub_nrg_L_e[b] ) ); // norm_r = ((hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]) / sub_nrg_R[b]); - norm_r = BASOP_Util_Divide3232_Scale_cadence( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e ); + norm_r = BASOP_Util_Divide3232_Scale_newton( sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), sub_nrg_R[b], &norm_r_e ); norm_r_e = add( norm_r_e, sub( 31, sub_nrg_R_e[b] ) ); FOR( i = hStereoDft->band_limits[b]; i < hStereoDft->band_limits[b + 1]; i++ ) /* normalization on each subbands */ @@ -4614,7 +4614,7 @@ static void stereo_dft_enc_get_reverb_flag_fx( FOR( b = 0; b < hStereoDft->nbands; b++ ) /* choose the subbands used for stereo filling */ { // sub_nrg_DMX[b] /= (hStereoDft->band_limits[b + 1] - hStereoDft->band_limits[b]); - sub_nrg_DMX[b] = BASOP_Util_Divide3232_Scale_cadence( sub_nrg_DMX[b], sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), &L_tmp_e ); + sub_nrg_DMX[b] = BASOP_Util_Divide3232_Scale_newton( sub_nrg_DMX[b], sub( hStereoDft->band_limits[b + 1], hStereoDft->band_limits[b] ), &L_tmp_e ); move32(); sub_nrg_DMX_e[b] = add( L_tmp_e, sub( sub_nrg_DMX_e[b], 31 ) ); move16(); @@ -4735,12 +4735,12 @@ static void stereo_dft_enc_get_reverb_flag_fx( // fac = ((diff_l_l > diff_r_l) ? diff_r_l / diff_l_l : diff_l_l / diff_r_l); IF( BASOP_Util_Cmp_Mant32Exp( diff_l_l, diff_l_l_e, diff_r_l, diff_r_l_e ) > 0 ) { - fac = BASOP_Util_Divide3232_Scale_cadence( diff_r_l, diff_l_l, &L_tmp_e ); + fac = BASOP_Util_Divide3232_Scale_newton( diff_r_l, diff_l_l, &L_tmp_e ); L_tmp_e = add( L_tmp_e, sub( diff_r_l_e, diff_l_l_e ) ); } ELSE { - fac = BASOP_Util_Divide3232_Scale_cadence( diff_l_l, diff_r_l, &L_tmp_e ); + fac = BASOP_Util_Divide3232_Scale_newton( diff_l_l, diff_r_l, &L_tmp_e ); L_tmp_e = add( L_tmp_e, sub( diff_l_l_e, diff_r_l_e ) ); } fac = L_shl_sat( fac, L_tmp_e ); // Q31 @@ -4792,7 +4792,7 @@ static Word32 stereo_dft_gain_offset_fx( * function @ 32kHz from which the values are interpolated: */ k0 = shr( tau, 3 ); // alpha = s_and(tau, 7) / 8.f; - alpha = BASOP_Util_Divide3232_Scale_cadence( s_and( tau, 7 ), 8, &alpha_e ); + alpha = BASOP_Util_Divide3232_Scale_newton( s_and( tau, 7 ), 8, &alpha_e ); alpha = L_shl( alpha, alpha_e ); // Q31 // wnt = (1 - alpha) * Wn_table[k0] + alpha * Wn_table[k0 + 1]; wnt = L_add( Mpy_32_32( L_sub( MAX_32, alpha ), Wn_table_fx[k0] ), Mpy_32_32( alpha, Wn_table_fx[k0 + 1] ) ); // Q31 @@ -4803,12 +4803,12 @@ static Word32 stereo_dft_gain_offset_fx( L_tmp1 = BASOP_Util_Add_Mant32Exp( MAX_32, 0, c, c_e, &L_tmp1_e ); L_tmp1 = Mpy_32_32( L_tmp1, L_tmp1 ); L_tmp1_e = shl( L_tmp1_e, 1 ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( L_tmp, L_tmp1, &L_tmp2_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_newton( L_tmp, L_tmp1, &L_tmp2_e ); L_tmp2_e = add( add( L_tmp2_e, sub( L_tmp_e, L_tmp1_e ) ), 3 /*multiply by 8*/ ); L_tmp2 = Mpy_32_32( L_tmp2, L_sub( MAX_32, wnt ) ); L_tmp1 = BASOP_Util_Add_Mant32Exp( MAX_32, 0, L_tmp, L_tmp_e, &L_tmp1_e ); L_tmp1 = BASOP_Util_Add_Mant32Exp( L_tmp1, L_tmp1_e, Mpy_32_32( c, wnt ), add( c_e, 1 ), &L_tmp1_e ); - L_tmp = BASOP_Util_Divide3232_Scale_cadence( L_tmp2, L_tmp1, &L_tmp_e ); + L_tmp = BASOP_Util_Divide3232_Scale_newton( L_tmp2, L_tmp1, &L_tmp_e ); L_tmp_e = add( L_tmp_e, sub( L_tmp2_e, L_tmp1_e ) ); L_tmp = Sqrt32( L_tmp, &L_tmp_e ); go = L_shl( L_tmp, L_tmp_e ); @@ -4838,7 +4838,7 @@ static void stereo_dft_enc_calculate_nrg_for_icbwe_fx( Word32 tmp; // bandResDft = ( (float) input_Fs ) / hStereoDft->NFFT; - bandResDft = BASOP_Util_Divide3232_Scale_cadence( input_Fs, hStereoDft->NFFT, &bandResDft_e ); + bandResDft = BASOP_Util_Divide3232_Scale_newton( input_Fs, hStereoDft->NFFT, &bandResDft_e ); // shbBins[0] = (int16_t) ( 6400 / bandResDft ); shbBins[0] = BASOP_Util_Divide3232_Scale( 6400, bandResDft, &tmp_e ); move16(); diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index b7429e2e7..1beacd19a 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -232,7 +232,7 @@ static Word32 itd_vad_ms_snr_calc_fx( move32(); } // E_band[i] = E_band[i] / ( itd_vad_band_tbl[i + 1] - itd_vad_band_tbl[i] ); - E_band[i] = BASOP_Util_Divide3232_Scale_cadence( E_band[i], L_sub( itd_vad_band_tbl[i + 1], itd_vad_band_tbl[i] ), &exp ); + E_band[i] = BASOP_Util_Divide3232_Scale_newton( E_band[i], L_sub( itd_vad_band_tbl[i + 1], itd_vad_band_tbl[i] ), &exp ); move32(); E_band_e[i] = add( exp, sub( E_band_e[i], 31 ) ); move16(); @@ -245,7 +245,7 @@ static Word32 itd_vad_ms_snr_calc_fx( FOR( i = 0; i < STEREO_DFT_ITD_VAD_BAND_NUM; i++ ) { // snr[i] = E_band[i] / E_band_n[i]; - snr[i] = BASOP_Util_Divide3232_Scale_cadence( E_band[i], E_band_n[i], &snr_e[i] ); + snr[i] = BASOP_Util_Divide3232_Scale_newton( E_band[i], E_band_n[i], &snr_e[i] ); move32(); snr_e[i] = add( snr_e[i], sub( E_band_e[i], E_band_n_exp[i] ) ); move16(); @@ -327,7 +327,7 @@ static void itd_vad_background_update_fx( L_temp = L_shl( *vad_frm_cnt, q_temp ); L_temp_e = sub( 31, q_temp ); L_temp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( E_band_n[i], L_temp ), add( E_band_n_exp[i], L_temp_e ), E_band[i], E_band_e[i], &L_temp_e ); - E_band_n[i] = BASOP_Util_Divide3232_Scale_cadence( L_temp, L_add( *vad_frm_cnt, 1 ), &E_band_n_e_tmp ); + E_band_n[i] = BASOP_Util_Divide3232_Scale_newton( L_temp, L_add( *vad_frm_cnt, 1 ), &E_band_n_e_tmp ); move32(); E_band_n_exp[i] = add( E_band_n_e_tmp, sub( L_temp_e, 31 ) ); move16(); @@ -536,7 +536,7 @@ static Word32 calc_mean_E_ratio_fx( L_temp1 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, fi[b], fi_e[b], &L_temp1_e ); L_temp2 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, L_negate( fi[b] ), fi_e[b], &L_temp2_e ); L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_temp2_e ); - Er[b] = BASOP_Util_Divide3232_Scale_cadence( L_temp1, L_temp2, &Er_e[b] ); + Er[b] = BASOP_Util_Divide3232_Scale_newton( L_temp1, L_temp2, &Er_e[b] ); move32(); Er_e[b] = add( Er_e[b], sub( L_temp1_e, L_temp2_e ) ); move16(); @@ -585,7 +585,7 @@ static Word32 calc_mean_E_ratio_fx( L_temp1 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, total_fi, total_fi_e, &L_temp1_e ); L_temp2 = BASOP_Util_Add_Mant32Exp( acorr, acorr_e, L_negate( total_fi ), total_fi_e, &L_temp2_e ); L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, EPSILON_FX_M, EPSILON_FX_E, &L_temp2_e ); - *total_mEr = BASOP_Util_Divide3232_Scale_cadence( L_temp1, L_temp2, total_mEr_e ); + *total_mEr = BASOP_Util_Divide3232_Scale_newton( L_temp1, L_temp2, total_mEr_e ); move32(); *total_mEr_e = add( *total_mEr_e, sub( L_temp1_e, L_temp2_e ) ); move16(); @@ -1302,14 +1302,14 @@ void stereo_dft_enc_compute_itd_fx( // g_ILD = sqrtf( sum_nrg_L / ( sum_nrg_R + 1.0f ) ); L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_R, sum_nrg_R_e, MAX_32, 0, &L_temp_e ); - g_ILD = BASOP_Util_Divide3232_Scale_cadence( sum_nrg_L, L_temp, &g_ILD_e ); + g_ILD = BASOP_Util_Divide3232_Scale_newton( sum_nrg_L, L_temp, &g_ILD_e ); g_ILD_e = add( g_ILD_e, sub( sum_nrg_L_e, L_temp_e ) ); g_ILD = Sqrt32( g_ILD, &g_ILD_e ); // g_ILD = fabsf( ( g_ILD - 1 ) / ( g_ILD + 1 ) ); L_temp = BASOP_Util_Add_Mant32Exp( g_ILD, g_ILD_e, MIN_32, 0, &L_temp_e ); L_temp2 = BASOP_Util_Add_Mant32Exp( g_ILD, g_ILD_e, MAX_32, 0, &L_temp2_e ); - g_ILD = L_abs( BASOP_Util_Divide3232_Scale_cadence( L_temp, L_temp2, &g_ILD_e ) ); + g_ILD = L_abs( BASOP_Util_Divide3232_Scale_newton( L_temp, L_temp2, &g_ILD_e ) ); g_ILD_e = add( g_ILD_e, sub( L_temp_e, L_temp2_e ) ); g_ILD = L_shl_sat( g_ILD, g_ILD_e ); // Q31 @@ -1339,7 +1339,7 @@ void stereo_dft_enc_compute_itd_fx( // g_IPD = ( sum_nrg_L + sum_nrg_R + 2 * grand_dot_prod_real ) / grand_nrg_DMX; L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, sum_nrg_R, sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, grand_dot_prod_real, add( grand_dot_prod_real_e, 1 ), &L_temp_e ); - g_IPD = BASOP_Util_Divide3232_Scale_cadence( L_temp, grand_nrg_DMX, &g_IPD_e ); + g_IPD = BASOP_Util_Divide3232_Scale_newton( L_temp, grand_nrg_DMX, &g_IPD_e ); g_IPD_e = add( g_IPD_e, sub( L_temp_e, grand_nrg_DMX_e ) ); // if ( g_IPD >= 1.0f ) IF( BASOP_Util_Cmp_Mant32Exp( g_IPD, g_IPD_e, ONE_IN_Q29 - ONE_IN_Q14 /*Adjusting threshold for precision loss*/, 2 ) >= 0 ) @@ -1366,7 +1366,7 @@ void stereo_dft_enc_compute_itd_fx( // angle_rot = fabsf( atanf( 2.0f * ( grand_dot_prod_real ) / ( sum_nrg_L - sum_nrg_R + 1.0f ) ) ); L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, MAX_32, 0, &L_temp_e ); - L_temp2 = BASOP_Util_Divide3232_Scale_cadence( grand_dot_prod_real, L_temp, &L_temp2_e ); + L_temp2 = BASOP_Util_Divide3232_Scale_newton( grand_dot_prod_real, L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ); angle_rot = L_abs( BASOP_util_atan( L_shr_r_sat( L_temp2, ( sub( 6, L_temp2_e ) ) ) ) ); // Q14 // angle_rot = L_abs( BASOP_util_atan2( grand_dot_prod_real, L_temp, sub( add( grand_dot_prod_real_e, 1 ), L_temp_e ) ) ); // Q13 @@ -1378,7 +1378,7 @@ void stereo_dft_enc_compute_itd_fx( // g_side = fabsf( sum_nrg_L - sum_nrg_R ) / ( grand_nrg_DMX ); L_temp = L_abs( BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ) ); - g_side = BASOP_Util_Divide3232_Scale_cadence( L_temp, grand_nrg_DMX, &g_side_e ); + g_side = BASOP_Util_Divide3232_Scale_newton( L_temp, grand_nrg_DMX, &g_side_e ); g_side_e = add( g_side_e, sub( L_temp_e, grand_nrg_DMX_e ) ); g_side = L_shl_sat( g_side, g_side_e ); // Q31 g_side_e = 0; @@ -1443,7 +1443,7 @@ void stereo_dft_enc_compute_itd_fx( ELSE { // sfm_L = expf( log_prod_L / ( NFFT_mid ) ) / ( sum_abs_L / ( NFFT_mid ) ); - L_temp = BASOP_Util_Divide3232_Scale_cadence( log_prod_L, NFFT_mid, &L_temp_e ); + L_temp = BASOP_Util_Divide3232_Scale_newton( log_prod_L, NFFT_mid, &L_temp_e ); L_temp_e = add( L_temp_e, sub( log_prod_L_e, 31 ) ); L_temp = BASOP_Util_fPow( 1459366444 /*2.718 in Q29*/, 2, L_temp, L_temp_e, &L_temp_e ); q_temp = norm_l( NFFT_mid ); @@ -1451,7 +1451,7 @@ void stereo_dft_enc_compute_itd_fx( L_temp2_e = sub( 31, q_temp ); L_temp = Mpy_32_32( L_temp, L_temp2 ); L_temp_e = add( L_temp_e, L_temp2_e ); - sfm_L = BASOP_Util_Divide3232_Scale_cadence( L_temp, sum_abs_L, &sfm_L_e ); + sfm_L = BASOP_Util_Divide3232_Scale_newton( L_temp, sum_abs_L, &sfm_L_e ); sfm_L_e = add( sfm_L_e, sub( L_temp_e, sum_abs_L_e ) ); sfm_L = L_shl_sat( sfm_L, sfm_L_e ); // Q31 - should be rechecked for -10dB tests } @@ -1467,7 +1467,7 @@ void stereo_dft_enc_compute_itd_fx( ELSE { // sfm_R = expf( log_prod_R / ( NFFT_mid ) ) / ( sum_abs_R / ( NFFT_mid ) ); - L_temp = BASOP_Util_Divide3232_Scale_cadence( log_prod_R, NFFT_mid, &L_temp_e ); + L_temp = BASOP_Util_Divide3232_Scale_newton( log_prod_R, NFFT_mid, &L_temp_e ); L_temp_e = add( L_temp_e, sub( log_prod_R_e, 31 ) ); L_temp = BASOP_Util_fPow( 1459366444 /*2.718 in Q29*/, 2, L_temp, L_temp_e, &L_temp_e ); q_temp = norm_l( NFFT_mid ); @@ -1475,7 +1475,7 @@ void stereo_dft_enc_compute_itd_fx( L_temp2_e = sub( 31, q_temp ); L_temp = Mpy_32_32( L_temp, L_temp2 ); L_temp_e = add( L_temp_e, L_temp2_e ); - sfm_R = BASOP_Util_Divide3232_Scale_cadence( L_temp, sum_abs_R, &sfm_L_e ); + sfm_R = BASOP_Util_Divide3232_Scale_newton( L_temp, sum_abs_R, &sfm_L_e ); sfm_R_e = add( sfm_L_e, sub( L_temp_e, sum_abs_R_e ) ); // sfm_R = L_shl_r( sfm_R, sfm_R_e ); // Q31 sfm_R = L_shl_sat( sfm_R, sfm_R_e ); // Q31 @@ -1663,7 +1663,7 @@ void stereo_dft_enc_compute_itd_fx( } // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); - cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); + cng_xcorr_filt = BASOP_Util_Divide3232_Scale_newton( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 @@ -1724,7 +1724,7 @@ void stereo_dft_enc_compute_itd_fx( // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) != 0 ) { - cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); + cng_xcorr_filt = BASOP_Util_Divide3232_Scale_newton( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 } @@ -1917,7 +1917,7 @@ void stereo_dft_enc_compute_itd_fx( } // tmpf1 = (float) ( NFFT / 2 + 1 ) / tmpf3; - tmpf1 = BASOP_Util_Divide3232_Scale_cadence( add( shr( NFFT, 1 ), 1 ), tmpf3, &tmpf1_e ); + tmpf1 = BASOP_Util_Divide3232_Scale_newton( add( shr( NFFT, 1 ), 1 ), tmpf3, &tmpf1_e ); tmpf1_e = add( tmpf1_e, sub( 31, tmpf3_e ) ); FOR( i = 0; i < NFFT; i++ ) { @@ -1995,7 +1995,7 @@ void stereo_dft_enc_compute_itd_fx( L_temp = L_abs( BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, L_negate( sum_nrg_R ), sum_nrg_R_e, &L_temp_e ) ); L_temp2 = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, sum_nrg_R, sum_nrg_R_e, &L_temp2_e ); L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, 1407374883, -16, &L_temp2_e ); - es_em = BASOP_Util_Divide3232_Scale_cadence( L_temp, L_temp2, &es_em_e ); + es_em = BASOP_Util_Divide3232_Scale_newton( L_temp, L_temp2, &es_em_e ); es_em_e = add( es_em_e, sub( L_temp_e, L_temp2_e ) ); hStereoClassif->unclr_fv_fx[E_es_em] = L_shr_r( es_em, sub( 16, es_em_e ) ); // Q15 @@ -2027,7 +2027,7 @@ void stereo_dft_enc_compute_itd_fx( move16(); } L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, 1407374883, -16, &L_temp2_e ); - d_prodL_prodR = BASOP_Util_Divide3232_Scale_cadence( L_temp, L_temp2, &d_prodL_prodR_e ); + d_prodL_prodR = BASOP_Util_Divide3232_Scale_newton( L_temp, L_temp2, &d_prodL_prodR_e ); d_prodL_prodR_e = add( d_prodL_prodR_e, sub( L_temp_e, L_temp2_e ) ); d_prodL_prodR = BASOP_Util_Add_Mant32Exp( d_prodL_prodR, d_prodL_prodR_e, MAX_32, 0, &d_prodL_prodR_e ); d_prodL_prodR = BASOP_Util_Loge( d_prodL_prodR, d_prodL_prodR_e ); // Q25 @@ -2046,7 +2046,7 @@ void stereo_dft_enc_compute_itd_fx( // xcorr_abs[i] = logf( xcorr_abs[i] / ( sum_nrg_L + sum_nrg_R + 1e-5f ) + 1e-5f ); L_temp = BASOP_Util_Add_Mant32Exp( sum_nrg_L, sum_nrg_L_e, sum_nrg_R, sum_nrg_R_e, &L_temp_e ); L_temp = BASOP_Util_Add_Mant32Exp( L_temp, L_temp_e, 1407374883, -16, &L_temp_e ); - L_temp2 = BASOP_Util_Divide3232_Scale_cadence( xcorr_abs[i], L_temp, &L_temp2_e ); + L_temp2 = BASOP_Util_Divide3232_Scale_newton( xcorr_abs[i], L_temp, &L_temp2_e ); L_temp2_e = add( L_temp2_e, sub( xcorr_abs_e[i], L_temp_e ) ); L_temp2 = BASOP_Util_Add_Mant32Exp( L_temp2, L_temp2_e, 1407374883, -16, &L_temp2_e ); xcorr_abs[i] = BASOP_Util_Loge( L_temp2, L_temp2_e ); @@ -2112,12 +2112,12 @@ void stereo_dft_enc_compute_itd_fx( move16(); // hStereoClassif->ave_ener_L = sum_nrg_L / ( NFFT_mid * NFFT_mid ); - hStereoClassif->ave_ener_L_fx = BASOP_Util_Divide3232_Scale_cadence( sum_nrg_L, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_L_fx_e ); + hStereoClassif->ave_ener_L_fx = BASOP_Util_Divide3232_Scale_newton( sum_nrg_L, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_L_fx_e ); move32(); hStereoClassif->ave_ener_L_fx_e = add( hStereoClassif->ave_ener_L_fx_e, sub( sum_nrg_L_e, 31 ) ); move16(); // hStereoClassif->ave_ener_R = sum_nrg_R / ( NFFT_mid * NFFT_mid ); - hStereoClassif->ave_ener_R_fx = BASOP_Util_Divide3232_Scale_cadence( sum_nrg_R, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_R_fx_e ); + hStereoClassif->ave_ener_R_fx = BASOP_Util_Divide3232_Scale_newton( sum_nrg_R, L_mult0( NFFT_mid, NFFT_mid ), &hStereoClassif->ave_ener_R_fx_e ); move32(); hStereoClassif->ave_ener_R_fx_e = add( hStereoClassif->ave_ener_R_fx_e, sub( sum_nrg_R_e, 31 ) ); move16(); @@ -2145,7 +2145,7 @@ void stereo_dft_enc_compute_itd_fx( { // thres *= 1.0f + 1.f * min( 1.f, max( 0.f, ( -1.0f * sfm_L + 0.5f ) / ( 0.5f - 0.2f ) ) ); L_temp = BASOP_Util_Add_Mant32Exp( L_negate( sfm_L ), 0, ONE_IN_Q30, 0, &L_temp_e ); - L_temp2 = BASOP_Util_Divide3232_Scale_cadence( L_temp, 644245094, &L_temp2_e ); + L_temp2 = BASOP_Util_Divide3232_Scale_newton( L_temp, 644245094, &L_temp2_e ); L_temp2_e = add( L_temp2_e, L_temp_e - 0 ); L_temp2 = L_shl_sat( L_temp2, sub( L_temp2_e, 1 ) ); // Q30 L_temp2_e = 1; @@ -2363,7 +2363,7 @@ void stereo_dft_enc_compute_itd_fx( L_temp = Mpy_32_32( den_cor_cur, den_cor_prev ); L_temp_e = add( den_cor_cur_e, den_cor_prev_e ); L_temp = Sqrt32( L_temp, &L_temp_e ); - cor_lb[i] = BASOP_Util_Divide3232_Scale_cadence( num_cor, L_temp, &cor_lb_e[i] ); + cor_lb[i] = BASOP_Util_Divide3232_Scale_newton( num_cor, L_temp, &cor_lb_e[i] ); move32(); cor_lb_e[i] = add( cor_lb_e[i], sub( num_cor_e, L_temp_e ) ); move16(); @@ -2375,7 +2375,7 @@ void stereo_dft_enc_compute_itd_fx( // par_L[i] = xcorr_max / ( sum_nrg_L_tmp + FLT_MIN ); IF( xcorr_max ) { - par_L[i] = BASOP_Util_Divide3232_Scale_cadence( xcorr_max, sum_nrg_L_tmp, &par_L_e[i] ); + par_L[i] = BASOP_Util_Divide3232_Scale_newton( xcorr_max, sum_nrg_L_tmp, &par_L_e[i] ); move32(); par_L_e[i] = add( par_L_e[i], sub( xcorr_max_e, sum_nrg_L_tmp_e ) ); move16(); diff --git a/lib_enc/ivas_stereo_eclvq_enc_fx.c b/lib_enc/ivas_stereo_eclvq_enc_fx.c index 3abc07811..dc2cf18a0 100644 --- a/lib_enc/ivas_stereo_eclvq_enc_fx.c +++ b/lib_enc/ivas_stereo_eclvq_enc_fx.c @@ -89,7 +89,7 @@ void ECSQ_quantize_vector_fx( } ELSE { - inv_global_gain = BASOP_Util_Divide3232_Scale_cadence( ONE_IN_Q15, global_gain, &inv_global_gain_e ); + inv_global_gain = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q15, global_gain, &inv_global_gain_e ); inv_global_gain = L_shl( inv_global_gain, inv_global_gain_e ); // Q31 FOR( i = 0; i < N; ++i ) { @@ -140,7 +140,7 @@ Word32 ECSQ_compute_optimal_gain_fx( // Q15 IF( sum_sq_output != 0 ) { // optimal_global_gain = sum_input_output / sum_sq_output; - optimal_global_gain = BASOP_Util_Divide3232_Scale_cadence( sum_input_output, sum_sq_output, &optimal_global_gain_e ); // 31 - ( sum_input_output_e - 31 + optimal_global_gain_e ) = 62 - ( sum_input_output_e + optimal_global_gain_e ) + optimal_global_gain = BASOP_Util_Divide3232_Scale_newton( sum_input_output, sum_sq_output, &optimal_global_gain_e ); // 31 - ( sum_input_output_e - 31 + optimal_global_gain_e ) = 62 - ( sum_input_output_e + optimal_global_gain_e ) optimal_global_gain = L_shr( optimal_global_gain, sub( sub( 62, add( sum_input_output_e, optimal_global_gain_e ) ), 15 ) ); // Q15 } @@ -427,7 +427,7 @@ static Word16 get_best_param_fx( IF( LE_16( sub( count, count0 ), ECSQ_NONZERO_MAX ) && EQ_32( sum_abs, L_shl( sub( count, count0 ), 10 ) ) ) { //*avg_abs_sum = ( sum_abs + 0.25f * count0 ) / count; - *avg_abs_sum = BASOP_Util_Divide3232_Scale_cadence( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e ); + *avg_abs_sum = BASOP_Util_Divide3232_Scale_newton( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e ); move32(); *avg_abs_sum = L_shr_r( *avg_abs_sum, sub( 21, L_tmp_e ) ); // Q10 move32(); @@ -438,7 +438,7 @@ static Word16 get_best_param_fx( } //*avg_abs_sum = ( sum_abs + 0.25f * count0 ) / count; - *avg_abs_sum = BASOP_Util_Divide3232_Scale_cadence( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e ); + *avg_abs_sum = BASOP_Util_Divide3232_Scale_newton( L_add( sum_abs, L_shl( count0, 8 ) ), L_shl( count, 10 ), &L_tmp_e ); move32(); *avg_abs_sum = L_shr_r( *avg_abs_sum, sub( 21, L_tmp_e ) ); // Q10 move32(); @@ -478,7 +478,7 @@ static Word32 get_est_size_fx( // Q10 // if ( param < 0 ) //{ // //two_to_param = 1.0f / two_to_param; - // two_to_param = BASOP_Util_Divide3232_Scale_cadence( 1, two_to_param,&two_to_param_e); + // two_to_param = BASOP_Util_Divide3232_Scale_newton( 1, two_to_param,&two_to_param_e); // } IF( NE_16( param, ECSQ_ALL_ZERO_PARAM ) ) /* not all values are zeros */ @@ -508,7 +508,7 @@ static Word32 get_est_size_fx( // Q10 nonzero = sub( N, N0 ); // required_avg_abs_sum = ( nonzero + 0.25f * N0 ) / N; /* the vector must have nonzero +-1 and N0 zeros */ - required_avg_abs_sum = BASOP_Util_Divide3232_Scale_cadence( L_add( L_shl( nonzero, 10 ), L_shl( N0, 8 ) ), L_shl( N, 10 ), &required_avg_abs_sum_e ); /* the vector must have nonzero +-1 and N0 zeros */ + required_avg_abs_sum = BASOP_Util_Divide3232_Scale_newton( L_add( L_shl( nonzero, 10 ), L_shl( N0, 8 ) ), L_shl( N, 10 ), &required_avg_abs_sum_e ); /* the vector must have nonzero +-1 and N0 zeros */ required_avg_abs_sum = L_shr_r( required_avg_abs_sum, sub( 21, required_avg_abs_sum_e ) ); // Q10 test(); @@ -847,18 +847,18 @@ Word32 ECSQ_encode_target_SNR_fx( /* target_ratio is the target ratio between the sum squared values of input and sum squared values of quantization error */ // target_ratio = powf( 10.0f, target_SNR / 10.0f ); - L_tmp1 = BASOP_Util_Divide3232_Scale_cadence( target_SNR, 10, &L_tmp1_e ); + L_tmp1 = BASOP_Util_Divide3232_Scale_newton( target_SNR, 10, &L_tmp1_e ); L_tmp1_e = add( L_tmp1_e, 6 - 31 ); target_ratio = BASOP_Util_fPow( 10 << 27, 4, L_tmp1, L_tmp1_e, &target_ratio_e ); // target_sum_squared_error = sum_squared / target_ratio; - target_sum_squared_error = BASOP_Util_Divide3232_Scale_cadence( sum_squared, target_ratio, &target_sum_squared_error_e ); + target_sum_squared_error = BASOP_Util_Divide3232_Scale_newton( sum_squared, target_ratio, &target_sum_squared_error_e ); target_sum_squared_error_e = add( target_sum_squared_error_e, sub( sum_squared_e, target_ratio_e ) ); /* the mean of squared quantization error for uniform scalar quantization is 1 / 12, approximately 0.0833 */ /* when including global_gain, the relationship is target_sum_squared_error ~ (0.0833 * N) * global_gain ^ 2 */ /* the representable range for global_gain is from 1 (global_gain_index 0) to 29145 (global_gain_index 126) inclusive */ // global_gain = sqrtf( target_sum_squared_error / ( 0.0833f * (float) N ) ); - global_gain = BASOP_Util_Divide3232_Scale_cadence( target_sum_squared_error, L_mult0( 5459 /*0.0833f in Q16*/, N ), &global_gain_e ); + global_gain = BASOP_Util_Divide3232_Scale_newton( target_sum_squared_error, L_mult0( 5459 /*0.0833f in Q16*/, N ), &global_gain_e ); global_gain_e = add( global_gain_e, sub( target_sum_squared_error_e, 15 ) ); global_gain = Sqrt32( global_gain, &global_gain_e ); global_gain = L_shr( global_gain, sub( 16, global_gain_e ) ); // Q15 @@ -885,7 +885,7 @@ Word32 ECSQ_encode_target_SNR_fx( adjust_size = L_sub( test_size, max_bits_fixpt ); /* assume doubling the quantization step size will reduce the entropy with (up to) one bit */ // adjust_global_gain_index = (int16_t) ceil( adjust_size / ( 1024.0f * N * log_base2( global_gain_step ) ) ); - adjust_global_gain_index = BASOP_Util_Divide3232_Scale_cadence( adjust_size, N, &tmp_e ); + adjust_global_gain_index = BASOP_Util_Divide3232_Scale_newton( adjust_size, N, &tmp_e ); adjust_global_gain_index = Mpy_32_32( adjust_global_gain_index, 17816838 /*/ ( 1024.0f * log_base2( global_gain_step ) )*/ ); IF( NE_32( adjust_global_gain_index, L_shl( L_shr( adjust_global_gain_index, sub( 31, tmp_e ) ), sub( 31, tmp_e ) ) ) ) { diff --git a/lib_enc/ivas_stereo_ica_enc_fx.c b/lib_enc/ivas_stereo_ica_enc_fx.c index a8a088f20..61057fbca 100644 --- a/lib_enc/ivas_stereo_ica_enc_fx.c +++ b/lib_enc/ivas_stereo_ica_enc_fx.c @@ -150,7 +150,7 @@ static void tcaTargetCh_LA_fx( deno_exp = 0; move16(); } - gAdj = BASOP_Util_Divide3232_Scale_cadence( tempF2, deno, &gAdj_exp ); /* Q31-gAdj_exp */ + gAdj = BASOP_Util_Divide3232_Scale_newton( tempF2, deno, &gAdj_exp ); /* Q31-gAdj_exp */ gAdj_exp = add( gAdj_exp, sub( tempF2_exp, deno_exp ) ); } @@ -923,7 +923,7 @@ static void corrStatsEst_fx( IF( tempF_fx != 0 ) { temp32 = BASOP_Util_Add_Mant32Exp( XY_hat_fx, XY_hat_exp, L_negate( Mpy_32_32( X_hat_fx, Y_hat_fx ) ), add( X_hat_exp, Y_hat_exp ), &exp ); /* Q31-exp */ - beta_reg_fx = BASOP_Util_Divide3232_Scale_cadence( temp32, tempF_fx, &beta_reg_exp ); /* Q31-beta_reg_exp */ + beta_reg_fx = BASOP_Util_Divide3232_Scale_newton( temp32, tempF_fx, &beta_reg_exp ); /* Q31-beta_reg_exp */ if ( beta_reg_fx ) { beta_reg_exp = add( beta_reg_exp, sub( exp, tempF_exp ) ); @@ -2345,9 +2345,9 @@ static void unclr_calc_corr_features_fx( move32(); } - ic_Lm = BASOP_Util_Divide3232_Scale_cadence( corrL, ener, &exp1 ); /* Q31-exp1 */ + ic_Lm = BASOP_Util_Divide3232_Scale_newton( corrL, ener, &exp1 ); /* Q31-exp1 */ exp1 = add( exp1, sub( corrL_exp, ener_exp ) ); - ic_Rm = BASOP_Util_Divide3232_Scale_cadence( corrR, ener, &exp2 ); /* Q31-exp2 */ + ic_Rm = BASOP_Util_Divide3232_Scale_newton( corrR, ener, &exp2 ); /* Q31-exp2 */ exp2 = add( exp2, sub( corrR_exp, ener_exp ) ); m_corrL_corrR = L_sub( L_max( L_abs( L_shl( ic_Lm, sub( exp1, s_max( exp1, exp2 ) ) ) ), L_abs( L_shl( ic_Rm, sub( exp2, s_max( exp1, exp2 ) ) ) ) ), L_min( L_abs( L_shl( ic_Lm, sub( exp1, s_max( exp1, exp2 ) ) ) ), L_abs( L_shl( ic_Rm, sub( exp2, s_max( exp1, exp2 ) ) ) ) ) ); // s_max(exp1, exp2) @@ -2405,7 +2405,7 @@ static void unclr_calc_corr_features_fx( } ELSE { - *corrEst_ncorr = BASOP_Util_Divide3232_Scale_cadence( num, den, &exp ); /* Q31-corrEst_ncorr_exp */ + *corrEst_ncorr = BASOP_Util_Divide3232_Scale_newton( num, den, &exp ); /* Q31-corrEst_ncorr_exp */ *corrEst_ncorr_exp = add( exp, sub( num_exp, den_exp ) ); move32(); move16(); diff --git a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c index 9a1198e20..b1eae7862 100644 --- a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c @@ -382,14 +382,14 @@ void stereo_coder_tcx_fx( Word16 fTemp_e, tmp_e; Word32 fTemp_fx = BASOP_Util_Add_Mant32Exp( nrgRatio_fx[0], nrgRatio_e[0], nrgRatio_fx[1], nrgRatio_e[1], &fTemp_e ); /* Q31-fTemp_e */ fTemp_e = sub( fTemp_e, 1 ); - nrgRatio_fx[0] = BASOP_Util_Divide3232_Scale_cadence( fTemp_fx, nrgRatio_fx[0], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[0] */ + nrgRatio_fx[0] = BASOP_Util_Divide3232_Scale_newton( fTemp_fx, nrgRatio_fx[0], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[0] */ move32(); nrgRatio_e[0] = add( tmp_e, sub( fTemp_e, nrgRatio_e[0] ) ); move16(); nrgRatio_fx[0] = Sqrt32( nrgRatio_fx[0], &nrgRatio_e[0] ); /* Q31-nrgRatio_e[0] */ move32(); - nrgRatio_fx[1] = BASOP_Util_Divide3232_Scale_cadence( fTemp_fx, nrgRatio_fx[1], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[1] */ + nrgRatio_fx[1] = BASOP_Util_Divide3232_Scale_newton( fTemp_fx, nrgRatio_fx[1], &tmp_e ); /* Q31 - tmp_e - fTemp_e + nrgRatio_e[1] */ move32(); nrgRatio_e[1] = add( tmp_e, sub( fTemp_e, nrgRatio_e[1] ) ); move16(); diff --git a/lib_enc/ivas_stereo_td_analysis_fx.c b/lib_enc/ivas_stereo_td_analysis_fx.c index 6ffd05c0c..6a107e91f 100644 --- a/lib_enc/ivas_stereo_td_analysis_fx.c +++ b/lib_enc/ivas_stereo_td_analysis_fx.c @@ -2013,7 +2013,7 @@ static void Get_corr_n_fx( } ELSE { - *ic_Lm = BASOP_Util_Divide3232_Scale_cadence( corrL, ener, &exp_diff ); // (Q31 - exp_diff) + *ic_Lm = BASOP_Util_Divide3232_Scale_newton( corrL, ener, &exp_diff ); // (Q31 - exp_diff) move32(); IF( *ic_Lm == 0 ) { @@ -2025,7 +2025,7 @@ static void Get_corr_n_fx( *q_ic_Lm = sub( Q31, exp_diff ); move16(); } - *ic_Rm = BASOP_Util_Divide3232_Scale_cadence( corrR, ener, &exp_diff ); // (Q31 - exp_diff) + *ic_Rm = BASOP_Util_Divide3232_Scale_newton( corrR, ener, &exp_diff ); // (Q31 - exp_diff) move16(); IF( *ic_Rm == 0 ) { @@ -2041,7 +2041,7 @@ static void Get_corr_n_fx( /* *es_em = 10 * ( log10f( sqrtf( ener_side / len ) ) - log10f( sqrtf( ener / len ) ) ); is simplified to *es_em = 10 * ( log10f( sqrtf( ener_side / ener ) ) ); */ - L_tmp = BASOP_Util_Divide3232_Scale_cadence( ener_side, ener, &exp_diff ); // (Q31 - exp_diff) + L_tmp = BASOP_Util_Divide3232_Scale_newton( ener_side, ener, &exp_diff ); // (Q31 - exp_diff) L_tmp = Sqrt32( L_tmp, &exp_diff ); /* (Q31 - exp_diff) */ L_tmp = BASOP_Util_Log2( L_tmp ); /* Q25 */ *es_em = Mpy_32_32( Mpy_32_32( L_add( L_tmp, L_shl( exp_diff, Q25 ) ), LOG10_2_Q31 ), TEN_IN_Q27 ); // (Q25, Q27) -> Q21 diff --git a/lib_enc/ivas_tcx_core_enc_fx.c b/lib_enc/ivas_tcx_core_enc_fx.c index fd84d2f21..5f2e9a8e0 100644 --- a/lib_enc/ivas_tcx_core_enc_fx.c +++ b/lib_enc/ivas_tcx_core_enc_fx.c @@ -1086,7 +1086,7 @@ Word16 ivas_acelp_tcx20_switching_fx( nrg_s = BASOP_Util_Add_Mant32Exp( nrg_s, e_num, Mpy_32_32( y_fx[i], y_fx[i] ), shl( e_x, 1 ), &e_num ); /* Q31-e_num */ nrg_n = BASOP_Util_Add_Mant32Exp( nrg_n, e_den, Mpy_32_32( x_fx[i], x_fx[i] ), shl( temp_ene_e, 1 ), &e_den ); /* Q31-e_den */ } - res_cod_SNR_M[iter] = BASOP_Util_Divide3232_Scale_cadence( nrg_s, nrg_n, &temp_e ); /* Q31-res_cod_SNR_M_e[iter] */ + res_cod_SNR_M[iter] = BASOP_Util_Divide3232_Scale_newton( nrg_s, nrg_n, &temp_e ); /* Q31-res_cod_SNR_M_e[iter] */ move32(); res_cod_SNR_M_e[iter] = add( temp_e, sub( e_num, e_den ) ); move16(); diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index 3f6449a0c..ecccc8011 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -1961,7 +1961,7 @@ Word16 ivas_smc_gmm_fx( FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { - temp32 = BASOP_Util_Divide3232_Scale_cadence( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp + temp32 = BASOP_Util_Divide3232_Scale_newton( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp PS_norm_fx[i] = L_shl( temp32, sub( Qfact_PS_past, add( sub( 31, temp_exp ), sub( Qfact_PS, sub( 31, sum_PS_e ) ) ) ) ); // Qfact_PS_past move32(); dPS_fx[i] = L_abs( L_sub( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) ); @@ -1992,7 +1992,7 @@ Word16 ivas_smc_gmm_fx( Word32 tmp_max; tmp_max = L_max( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); - temp32 = BASOP_Util_Divide3232_Scale_cadence( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp + temp32 = BASOP_Util_Divide3232_Scale_newton( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp ); } temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) ); diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index 2abe538e4..228e522bf 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -2786,7 +2786,7 @@ void tcx_noise_factor_ivas_fx( /* noise level factor: average of segment magnitudes of noise bins */ IF( n > 0 ) { - tmp4 = BASOP_Util_Divide3232_Scale_cadence( Mpy_32_16_1( sqErrorNrg, att ), n, &s ); + tmp4 = BASOP_Util_Divide3232_Scale_newton( Mpy_32_16_1( sqErrorNrg, att ), n, &s ); s = add( add( exp_sqErrorNrg, -15 ), s ); BASOP_SATURATE_WARNING_OFF_EVS; tmp4 = L_shl_o( tmp4, s, &Overflow ); diff --git a/lib_enc/transient_detection_fx.c b/lib_enc/transient_detection_fx.c index 60d661db4..2ade624b6 100644 --- a/lib_enc/transient_detection_fx.c +++ b/lib_enc/transient_detection_fx.c @@ -458,7 +458,7 @@ Word32 GetTCXAvgTemporalFlatnessMeasure_ivas_fx( struct TransientDetection const } /* exponent = AVG_FLAT_E */ - i = BASOP_Util_Divide3232_Scale_cadence( sumTempFlatness, nTotBlocks, &exp ); + i = BASOP_Util_Divide3232_Scale_newton( sumTempFlatness, nTotBlocks, &exp ); exp = add( exp, sub( sumTempFlatness_exp, 31 ) ); i = L_shl_sat( i, sub( exp, 10 ) ); // Can be saturated, since it is used for comparision againt 3.25/20.0f, Q21 return i; @@ -1569,12 +1569,12 @@ static void CalculateSubblockEnergies_ivas_fx( Word16 const *input, Word16 nSamp IF( GT_32( w0, w1 ) ) { - pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_cadence( w0, w1, &k ); + pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_newton( w0, w1, &k ); pSubblockNrgChange_exp[w] = k; } ELSE { - pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_cadence( w1, w0, &k ); + pSubblockNrgChange[w] = BASOP_Util_Divide3232_Scale_newton( w1, w0, &k ); pSubblockNrgChange_exp[w] = k; } move32(); -- GitLab From ae29b091c06820aec13831523e343bce6ea25781 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 14 Apr 2025 23:22:47 +0200 Subject: [PATCH 314/698] formatting --- lib_enc/hq_classifier_enc_fx.c | 4 ++-- lib_enc/ivas_enc_cov_handler_fx.c | 2 +- lib_enc/ivas_stereo_eclvq_enc_fx.c | 4 ++-- lib_enc/ivas_stereo_ica_enc_fx.c | 2 +- lib_enc/ivas_stereo_td_analysis_fx.c | 2 +- lib_enc/speech_music_classif_fx.c | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib_enc/hq_classifier_enc_fx.c b/lib_enc/hq_classifier_enc_fx.c index d82eebfb5..558ae89a7 100644 --- a/lib_enc/hq_classifier_enc_fx.c +++ b/lib_enc/hq_classifier_enc_fx.c @@ -141,8 +141,8 @@ static Word16 hf_spectrum_sparseness_fx( } } Word16 l_shift = W_norm( inv_rms_fx ); - inv_rms32_fx = W_extract_h( W_shl( inv_rms_fx, l_shift ) ); // Q15+l_shift-32 - Word16 q_rms = sub( add( Q15, l_shift ), 32 ); // q_rms + inv_rms32_fx = W_extract_h( W_shl( inv_rms_fx, l_shift ) ); // Q15+l_shift-32 + Word16 q_rms = sub( add( Q15, l_shift ), 32 ); // q_rms inv_rms32_div_fx = BASOP_Util_Divide3232_Scale_newton( inv_rms32_fx, L_SPEC_HB, &inv_rms32_e ); /* Q31-inv_rms32_e */ inv_rms32_e = sub( 31, add( sub( Q31, inv_rms32_e ), q_rms ) ); // inv_rms = 1.0f / (float) sqrtf( inv_rms / L_SPEC_HB ); diff --git a/lib_enc/ivas_enc_cov_handler_fx.c b/lib_enc/ivas_enc_cov_handler_fx.c index 138e1467d..59c38aa5d 100644 --- a/lib_enc/ivas_enc_cov_handler_fx.c +++ b/lib_enc/ivas_enc_cov_handler_fx.c @@ -271,7 +271,7 @@ static Word16 ivas_spar_get_activeW_flag_fx( } ELSE { - L_tmp = BASOP_Util_Divide3232_Scale_newton( hCovEnc->bb_var_lt_fx[0], side_ch_var, &exp_diff ); // (Q31 - exp_diff) + L_tmp = BASOP_Util_Divide3232_Scale_newton( hCovEnc->bb_var_lt_fx[0], side_ch_var, &exp_diff ); // (Q31 - exp_diff) en_ratio = L_shl_sat( L_tmp, exp_diff ); // Q31 IF( LT_32( en_ratio, Mpy_32_32( IVAS_SPAR_DYN_ACTIVEW_THRESH_FX, IVAS_SPAR_DYN_ACTIVEW_THRESH_FX ) ) ) // LHS Q31 :: RHS Q31 { diff --git a/lib_enc/ivas_stereo_eclvq_enc_fx.c b/lib_enc/ivas_stereo_eclvq_enc_fx.c index dc2cf18a0..a09daffe0 100644 --- a/lib_enc/ivas_stereo_eclvq_enc_fx.c +++ b/lib_enc/ivas_stereo_eclvq_enc_fx.c @@ -140,7 +140,7 @@ Word32 ECSQ_compute_optimal_gain_fx( // Q15 IF( sum_sq_output != 0 ) { // optimal_global_gain = sum_input_output / sum_sq_output; - optimal_global_gain = BASOP_Util_Divide3232_Scale_newton( sum_input_output, sum_sq_output, &optimal_global_gain_e ); // 31 - ( sum_input_output_e - 31 + optimal_global_gain_e ) = 62 - ( sum_input_output_e + optimal_global_gain_e ) + optimal_global_gain = BASOP_Util_Divide3232_Scale_newton( sum_input_output, sum_sq_output, &optimal_global_gain_e ); // 31 - ( sum_input_output_e - 31 + optimal_global_gain_e ) = 62 - ( sum_input_output_e + optimal_global_gain_e ) optimal_global_gain = L_shr( optimal_global_gain, sub( sub( 62, add( sum_input_output_e, optimal_global_gain_e ) ), 15 ) ); // Q15 } @@ -509,7 +509,7 @@ static Word32 get_est_size_fx( // Q10 // required_avg_abs_sum = ( nonzero + 0.25f * N0 ) / N; /* the vector must have nonzero +-1 and N0 zeros */ required_avg_abs_sum = BASOP_Util_Divide3232_Scale_newton( L_add( L_shl( nonzero, 10 ), L_shl( N0, 8 ) ), L_shl( N, 10 ), &required_avg_abs_sum_e ); /* the vector must have nonzero +-1 and N0 zeros */ - required_avg_abs_sum = L_shr_r( required_avg_abs_sum, sub( 21, required_avg_abs_sum_e ) ); // Q10 + required_avg_abs_sum = L_shr_r( required_avg_abs_sum, sub( 21, required_avg_abs_sum_e ) ); // Q10 test(); IF( EQ_32( avg_abs_sum, required_avg_abs_sum ) && LE_16( nonzero, ECSQ_NONZERO_MAX ) ) diff --git a/lib_enc/ivas_stereo_ica_enc_fx.c b/lib_enc/ivas_stereo_ica_enc_fx.c index 61057fbca..6057ace6b 100644 --- a/lib_enc/ivas_stereo_ica_enc_fx.c +++ b/lib_enc/ivas_stereo_ica_enc_fx.c @@ -923,7 +923,7 @@ static void corrStatsEst_fx( IF( tempF_fx != 0 ) { temp32 = BASOP_Util_Add_Mant32Exp( XY_hat_fx, XY_hat_exp, L_negate( Mpy_32_32( X_hat_fx, Y_hat_fx ) ), add( X_hat_exp, Y_hat_exp ), &exp ); /* Q31-exp */ - beta_reg_fx = BASOP_Util_Divide3232_Scale_newton( temp32, tempF_fx, &beta_reg_exp ); /* Q31-beta_reg_exp */ + beta_reg_fx = BASOP_Util_Divide3232_Scale_newton( temp32, tempF_fx, &beta_reg_exp ); /* Q31-beta_reg_exp */ if ( beta_reg_fx ) { beta_reg_exp = add( beta_reg_exp, sub( exp, tempF_exp ) ); diff --git a/lib_enc/ivas_stereo_td_analysis_fx.c b/lib_enc/ivas_stereo_td_analysis_fx.c index 6a107e91f..1856370f6 100644 --- a/lib_enc/ivas_stereo_td_analysis_fx.c +++ b/lib_enc/ivas_stereo_td_analysis_fx.c @@ -2041,7 +2041,7 @@ static void Get_corr_n_fx( /* *es_em = 10 * ( log10f( sqrtf( ener_side / len ) ) - log10f( sqrtf( ener / len ) ) ); is simplified to *es_em = 10 * ( log10f( sqrtf( ener_side / ener ) ) ); */ - L_tmp = BASOP_Util_Divide3232_Scale_newton( ener_side, ener, &exp_diff ); // (Q31 - exp_diff) + L_tmp = BASOP_Util_Divide3232_Scale_newton( ener_side, ener, &exp_diff ); // (Q31 - exp_diff) L_tmp = Sqrt32( L_tmp, &exp_diff ); /* (Q31 - exp_diff) */ L_tmp = BASOP_Util_Log2( L_tmp ); /* Q25 */ *es_em = Mpy_32_32( Mpy_32_32( L_add( L_tmp, L_shl( exp_diff, Q25 ) ), LOG10_2_Q31 ), TEN_IN_Q27 ); // (Q25, Q27) -> Q21 diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index ecccc8011..3852d6dc4 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -1961,7 +1961,7 @@ Word16 ivas_smc_gmm_fx( FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { - temp32 = BASOP_Util_Divide3232_Scale_newton( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp + temp32 = BASOP_Util_Divide3232_Scale_newton( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp PS_norm_fx[i] = L_shl( temp32, sub( Qfact_PS_past, add( sub( 31, temp_exp ), sub( Qfact_PS, sub( 31, sum_PS_e ) ) ) ) ); // Qfact_PS_past move32(); dPS_fx[i] = L_abs( L_sub( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) ); -- GitLab From 8fa203f853f0539e0ecb66f7b58e9f56bac85de5 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Thu, 10 Apr 2025 13:00:38 +0200 Subject: [PATCH 315/698] switch on STAGE2 --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 48df856c7..b51ccda4b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -90,6 +90,6 @@ #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From eca9c911fa0623cdabe25df442ab43c3c93fa13d Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 07:42:32 +0200 Subject: [PATCH 316/698] clang patch --- lib_com/swb_tbe_com_fx.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 436213825..95d31cba3 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7029,14 +7029,14 @@ void elliptic_bpf_48k_generic_fx( L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7325,7 +7325,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -8042,7 +8042,7 @@ void prep_tbe_exc_fx( void prep_tbe_exc_ivas_fx( const Word16 L_frame_fx, /* i : length of the frame */ -#if 1 // def ADD_IVAS_TBE_CODE +#if 1 // def ADD_IVAS_TBE_CODE const Word16 L_subfr, #endif const Word16 i_subfr_fx, /* i : subframe index */ @@ -8059,7 +8059,7 @@ void prep_tbe_exc_ivas_fx( Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ Word32 core_brate -#if 1 // def ADD_IVAS_TBE_CODE +#if 1 // def ADD_IVAS_TBE_CODE , /* i : core bitrate */ const Word16 element_mode, /* i : element mode */ const Word16 idchan, /* i : channel ID */ -- GitLab From 132d8b831cb0e12e433df95bc50ce3ef25659063 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 11 Apr 2025 20:57:11 +0530 Subject: [PATCH 317/698] Fix for 3GPP issue 1472: Precision issue with power spectrum causes different behavior with silent channels in MCT Link #1472 --- lib_com/ivas_sns_com_fx.c | 13 ++++++++++--- lib_enc/ivas_core_enc_fx.c | 27 ++++++++++++++++++++++++++- lib_enc/ivas_core_pre_proc_front_fx.c | 13 ------------- lib_enc/ivas_core_pre_proc_fx.c | 12 +++++++----- lib_enc/ivas_cpe_enc_fx.c | 2 +- 5 files changed, 44 insertions(+), 23 deletions(-) diff --git a/lib_com/ivas_sns_com_fx.c b/lib_com/ivas_sns_com_fx.c index fa64b0092..f1e44be78 100644 --- a/lib_com/ivas_sns_com_fx.c +++ b/lib_com/ivas_sns_com_fx.c @@ -200,9 +200,16 @@ void sns_compute_scf_fx( /* mean = sum / FDNS_NPTS; -Q6 is for division with FDNS_NPTS and -Q1 is to reduce Q by one */ - mean = W_shl_sat_l( sum, -Q7 ); // q_out - nf = Mpy_32_32( mean, 214748 /* powf( 10.0f, -4.0f ) in Q31 */ ); // q_out - nf = L_max( nf, L_shl( 256, sub( q_out, 40 ) ) /* powf( 2.0f, -32.0f ) in Q40 */ ); // q_out + mean = W_shl_sat_l( sum, -Q7 ); // q_out + nf = Mpy_32_32( mean, 214748 /* powf( 10.0f, -4.0f ) in Q31 */ ); // q_out + + IF( LE_32( nf, L_shl_sat( 256, sub( q_out, 40 ) ) ) ) /* powf( 2.0f, -32.0f ) in Q40 */ + { + nf = 256; + move32(); + q_out = 40; + move16(); + } FOR( i = 0; i < FDNS_NPTS; i++ ) { diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 3c62a0d18..066d105d5 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -419,7 +419,6 @@ ivas_error ivas_core_enc_fx( } } - /*---------------------------------------------------------------------* * MDCT stereo: joint TCX Core Encoding *---------------------------------------------------------------------*/ @@ -532,6 +531,12 @@ ivas_error ivas_core_enc_fx( st->hTcxEnc->exp_buf_speech_ltp = st->exp_buf_speech_enc; move16(); } + Scale_sig( st->input_fx, input_frame, sub( -1, st->q_inp ) ); + Scale_sig( st->input_fx - input_frame, input_frame, sub( -1, st->q_old_inp ) ); + st->q_inp = -1; + move16(); + st->q_old_inp = -1; + move16(); } Word16 Q_spec_old[2], L_spec; @@ -612,6 +617,8 @@ ivas_error ivas_core_enc_fx( * Postprocessing, BWEs and Updates *---------------------------------------------------------------------*/ + Word16 tmp_input_fx[L_FRAME48k], tmp_old_input_fx[L_FRAME48k], q_inp[2]; + FOR( n = 0; n < n_CoreChannels; n++ ) { st = sts[n]; @@ -626,6 +633,17 @@ ivas_error ivas_core_enc_fx( move16(); } + Copy( st->input_fx - input_frame, tmp_old_input_fx, input_frame ); + Copy( st->input_fx, tmp_input_fx, input_frame ); + q_inp[0] = st->q_old_inp; + q_inp[1] = st->q_inp; + + Scale_sig( st->input_fx - input_frame, 2 * input_frame, sub( -1, st->q_inp ) ); + st->q_inp = -1; + move16(); + st->q_old_inp = -1; + move16(); + /*---------------------------------------------------------------------* * Postprocessing for ACELP/HQ core switching *---------------------------------------------------------------------*/ @@ -787,6 +805,13 @@ ivas_error ivas_core_enc_fx( } } + Copy( tmp_old_input_fx, st->input_fx - input_frame, input_frame ); + Copy( tmp_input_fx, st->input_fx, input_frame ); + st->q_old_inp = q_inp[0]; + move16(); + st->q_inp = q_inp[1]; + move16(); + /*---------------------------------------------------------------------* * Channel-aware mode - write signaling information into the bitstream *---------------------------------------------------------------------*/ diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index 0d6a5901a..bac22a5b7 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -1575,12 +1575,6 @@ ivas_error pre_proc_front_ivas_fx( move16(); IF( flag_16k_smc ) { - Scale_sig( st->input_fx - input_frame, input_frame_full, sub( -1, st->q_inp ) ); /* Q(-1) */ - st->q_inp = -1; - move16(); - st->q_old_inp = -1; - move16(); - Word16 Q_old_inp_16k = -1; move16(); @@ -1718,13 +1712,6 @@ ivas_error pre_proc_front_ivas_fx( st->exp_old_inp_12k8 = sub( Q15, add( *Q_new, shift ) ); move16(); - Scale_sig( st->input_fx - input_frame, input_frame_full, sub( -1, st->q_inp ) ); - st->q_inp = -1; - move16(); - st->q_old_inp = -1; - move16(); - - // Scale_sig( old_inp_12k8_fx, L_INP_12k8, negate( add( *Q_new, 1 ) ) ); *Q_new = sub( *Q_new, Q_inp_const ); // ivas_core_enc will assume inp signal (12k8 and 16k) in Q_new - 1 move16(); diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c index 781d290ac..b2ec13983 100644 --- a/lib_enc/ivas_core_pre_proc_fx.c +++ b/lib_enc/ivas_core_pre_proc_fx.c @@ -565,9 +565,6 @@ ivas_error pre_proc_ivas_fx( Scale_sig( st->buf_speech_enc_pe, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k, sub( Q_old_inp_16k, sub( Q15, st->exp_buf_speech_enc_pe ) ) ); /* Q15 - Q_old_inp_16k */ st->exp_buf_speech_enc_pe = sub( Q15, Q_old_inp_16k ); move16(); - Scale_sig( st->input_fx, input_frame, sub( -1, st->q_inp ) ); - st->q_inp = -1; - move16(); Scale_sig( st->buf_wspeech_enc, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320, sub( Q_old_inp_16k, sub( Q15, st->exp_buf_wspeech_enc ) ) ); /* Q15 - Q_old_inp_16k */ st->mem_wsp_enc = shl( st->mem_wsp_enc, sub( Q_old_inp_16k, sub( Q15, st->exp_buf_wspeech_enc ) ) ); // Q_old_inp_16k move16(); @@ -713,7 +710,7 @@ ivas_error ivas_compute_core_buffers_fx( Word16 *inp_16k_fx, *new_inp_16k_fx; Word16 delay, element_mode; Word16 temp1F_icatdmResampBuf_fx[L_FILT_MAX]; /* temp buffers for ICA TDM resamplers */ - Word16 mem_decim16k_dummy_fx[2 * L_FILT_MAX]; + Word16 mem_decim16k_dummy_fx[2 * L_FILT_MAX], input_buf_fx[L_FRAME48k * 2]; Word16 *signal_in_fx; Word16 lMemRecalc, lMemRecalc_16k, L_frame_tmp, L_look; Word32 input_Fs; @@ -733,7 +730,12 @@ ivas_error ivas_compute_core_buffers_fx( set16_fx( new_inp_resamp16k_fx, 0, L_FRAME16k ); set16_fx( epsP_h, 0, M + 1 ); set16_fx( epsP_l, 0, M + 1 ); - signal_in_fx = st->input_fx; /* st->q_inp */ + set16_fx( input_buf_fx, 0, L_FRAME48k * 2 ); + + Copy_Scale_sig( st->input_fx - input_frame, input_buf_fx, input_frame, sub( -1, st->q_old_inp ) ); + Copy_Scale_sig( st->input_fx, input_buf_fx + input_frame, input_frame, sub( -1, st->q_inp ) ); + + signal_in_fx = &input_buf_fx[input_frame]; /* st->q_inp */ input_Fs = st->input_Fs; /* Q0 */ move32(); diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index 1bb31810d..b5ed69560 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -430,7 +430,7 @@ ivas_error ivas_cpe_enc_fx( stereo_tca_enc_fx( hCPE, input_frame ); - shift = s_min( 0, sub( add( L_norm_arr( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), sts[0]->q_inp32 ), 16 ) ); + shift = sub( add( L_norm_arr( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), sts[0]->q_inp32 ), 16 ); shift = s_min( shift, sub( add( L_norm_arr( sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), sts[1]->q_inp32 ), 16 ) ); Copy_Scale_sig32_16( sts[0]->input_buff32_fx, sts[0]->input_buff_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( add( Q16, shift ), sts[0]->q_inp32 ) ); // shift Copy_Scale_sig32_16( sts[1]->input_buff32_fx, sts[1]->input_buff_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( add( Q16, shift ), sts[1]->q_inp32 ) ); // shift -- GitLab From 4fcbe7002858a6c2efdcb22ce037452b1e0d93bb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 08:41:15 +0200 Subject: [PATCH 318/698] Revert "clang patch" This reverts commit eca9c911fa0623cdabe25df442ab43c3c93fa13d. --- lib_com/swb_tbe_com_fx.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 95d31cba3..436213825 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7029,14 +7029,14 @@ void elliptic_bpf_48k_generic_fx( L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7325,7 +7325,7 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ FOR( i = 0; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ @@ -8042,7 +8042,7 @@ void prep_tbe_exc_fx( void prep_tbe_exc_ivas_fx( const Word16 L_frame_fx, /* i : length of the frame */ -#if 1 // def ADD_IVAS_TBE_CODE +#if 1 // def ADD_IVAS_TBE_CODE const Word16 L_subfr, #endif const Word16 i_subfr_fx, /* i : subframe index */ @@ -8059,7 +8059,7 @@ void prep_tbe_exc_ivas_fx( Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ Word32 core_brate -#if 1 // def ADD_IVAS_TBE_CODE +#if 1 // def ADD_IVAS_TBE_CODE , /* i : core bitrate */ const Word16 element_mode, /* i : element mode */ const Word16 idchan, /* i : channel ID */ -- GitLab From 9f6be5f43f56398387993bf25399145a4a69a050 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 08:41:51 +0200 Subject: [PATCH 319/698] Revert "switch on STAGE2" This reverts commit 8fa203f853f0539e0ecb66f7b58e9f56bac85de5. --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index b51ccda4b..48df856c7 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -90,6 +90,6 @@ #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif -- GitLab From 9ff3085f6c46bf4909f0925b1112fcf20f7c16a0 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 08:57:51 +0200 Subject: [PATCH 320/698] trying to revert ugly stuff and bring swb_tbe_com_fx.c back to state like e1d19cec --- lib_com/swb_tbe_com_fx.c | 553 ++++++++++++++++----------------------- 1 file changed, 232 insertions(+), 321 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 436213825..f1492b0b4 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6686,135 +6686,177 @@ void wb_tbe_extras_reset_synth_fx( return; } -#if defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 ) && defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 ) -static inline Word64 wmac_1616( Word64 x1, Word16 x2, Word16 x3 ) -{ - return W_mac_16_16( x1, x2, x3 ); -} - -static inline Word64 wmac_3216( Word64 x1, Word32 x2, Word16 x3 ) -{ - return W_mac_32_16( x1, x2, x3 ); -} - -static inline Word64 finalSat16( Word64 W_tmpx, Word64 W_tmpy ) -{ - return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -} -static inline Word64 finalSat32( Word64 W_tmpx, Word64 W_tmpy ) -{ - return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); -} - -inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *input32_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 +inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) { Word32 L_tmpX; Word16 i; Word32 L_tmpMax2 = *L_tmpMax; Word32 L_tmpAbs; move32(); - - if ( input16_fx > 0 ) - { - Word64 ( *wmac )( Word64, Word16, Word16 ); - Word64 ( *finalSat )( Word64, Word64 ); - Word16 *input_fx = input16_fx; - wmac = wmac_1616; - finalSat = finalSat16; - } - if ( input32_fx > 0 ) - { - Word64 ( *wmac )( Word64, Word32, Word16 ); - Word64 ( *finalSat )( Word64, Word64 ); - Word32 *input_fx = input32_fx; - wmac = wmac_3216; - finalSat = finalSat32; - } - IF( !IsUpsampled3 ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { - W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } } +#else + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } +#endif } /*IsUpsampled3*/ ELSE { /*IsUpsampled3*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; ) { - W_tmpX = wmac( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } i++; - W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } i++; W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = wmac( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ move32(); - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpAbs = L_abs( L_tmp[i] ); } - if ( *L_tmpMax > 0 ) + if ( L_tmpMax > 0 ) { L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); } i++; } - } /*IsUpsampled3*/ +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + if ( L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ *L_tmpMax = L_tmpMax2; move32(); } @@ -6829,7 +6871,7 @@ inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *i void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS, + int isIVAS; #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -6847,9 +6889,8 @@ void elliptic_bpf_48k_generic_fx( Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4], L_tmpX; Word32 L_tmpMax; - Word32 L_tmpX; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word64 W_tmpX; Word64 W_tmpY; @@ -6864,21 +6905,6 @@ void elliptic_bpf_48k_generic_fx( Word32 memory2_fx_2[4], memory2_fx_3[4]; #endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < 4; i++ ) - { - memory_fx0 = extract_l( memory_fx2[0][i] ); - input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); - L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - move32(); - move32(); - } -#else FOR( i = 0; i < 4; i++ ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic @@ -6896,138 +6922,92 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - move32(); - move32(); } -#endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( input_fx, 0, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); +#else IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - } + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } - } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; ) { - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } - } - } /*IsUpsampled3*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } +#else + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ @@ -7038,26 +7018,28 @@ void elliptic_bpf_48k_generic_fx( move32(); i++; - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + } /*IsUpsampled3*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7121,47 +7103,41 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( 0, L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); +#else #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } - +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7238,64 +7214,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); - -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - FOR( j = 0; j < 4; j++ ) - { - L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - } - - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( 0, L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - } - -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ FOR( j = 0; j < 4; j++ ) { L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); @@ -7343,7 +7261,9 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ @@ -7476,12 +7396,7 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS -#endif -) + Word16 Qout ) { Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic @@ -7516,7 +7431,7 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, + 1 // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 @@ -7530,18 +7445,15 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, + 1 // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 #endif excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ - - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); temp1 = sum2_fx_mod( tmp, L_FRAME48k ); + L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ exp = norm_l( L_tmp ); tmp3 = extract_h( L_shl( L_tmp, exp ) ); @@ -7641,7 +7553,6 @@ void synthesise_fb_high_band_fx( } #endif } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ return; } -- GitLab From 9703b0235de80170320a73d212765280ec29c07c Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 09:25:53 +0200 Subject: [PATCH 321/698] bring back to state e1d19cec --- lib_com/options.h | 10 ++++-- lib_com/prot_fx.h | 9 ++---- lib_dec/ivas_core_dec_fx.c | 62 +++++++------------------------------- lib_dec/ivas_jbm_dec_fx.c | 20 ++---------- lib_dec/swb_tbe_dec_fx.c | 29 ++---------------- lib_enc/swb_tbe_enc_fx.c | 6 ++-- 6 files changed, 30 insertions(+), 106 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 48df856c7..c76765742 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -#define WMOPS /* Activate complexity and memory counters */ +/*#define WMOPS*/ /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -89,7 +89,13 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ +#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ +#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ + #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 92dd8311b..59c9e2f8c 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3266,7 +3266,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS, + int isIVAS; #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -3292,12 +3292,7 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS -#endif -); + Word16 Qout ); void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index db6dad33f..03f0e4b40 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -116,12 +116,12 @@ ivas_error ivas_core_dec_fx( error = IVAS_ERR_OK; move32(); - push_wmops( "ivas_core_dec (ICD)" ); + push_wmops( "ivas_core_dec" ); /*------------------------------------------------------------------* * General initialization *-----------------------------------------------------------------*/ - push_wmops( "ICD init" ); + use_cldfb_for_dft = 0; move16(); tdm_LRTD_flag = -1; @@ -370,9 +370,7 @@ ivas_error ivas_core_dec_fx( { save_hb_synth_32_fx = NULL; } - pop_wmops(); /*push_wmops( "ICD init" );*/ - push_wmops( "ICD SID, sanity" ); /*------------------------------------------------------------------* * Decode SID for MDCT-Stereo DTX mode *-----------------------------------------------------------------*/ @@ -400,9 +398,7 @@ ivas_error ivas_core_dec_fx( { ivas_combined_format_brate_sanity_fx( element_brate, sts[0]->core, sts[0]->total_brate, &( sts[0]->core_brate ), &( sts[0]->inactive_coder_type_flag ), &tmps ); } - pop_wmops(); /*push_wmops( "ICD SID, sanity" );*/ - push_wmops( "ICD Coredec" ); /*------------------------------------------------------------------* * Core Decoding *-----------------------------------------------------------------*/ @@ -487,7 +483,6 @@ ivas_error ivas_core_dec_fx( IF( st->core == ACELP_CORE ) { - push_wmops( "ICD ACELP" ); /* ACELP core decoder */ Word16 old_syn_12k8_16k_fx_16[L_FRAME16k]; Word16 save_hb_synth_fx_arr[L_FRAME48k], *save_hb_synth_16_fx; @@ -560,7 +555,6 @@ ivas_error ivas_core_dec_fx( } Copy_Scale_sig_16_32_DEPREC( old_syn_12k8_16k_fx_16, old_syn_12k8_16k_fx[n], L_FRAME16k, Q11 - ( -Q1 ) ); // Q(11 - (-1)) - pop_wmops(); /*push_wmops( "ICD ACELP" );*/ } Copy_Scale_sig_32_16( st->previoussynth_fx_32, st->previoussynth_fx, L_FRAME48k, 0 ); // Q0 @@ -569,7 +563,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( EQ_16( st->core, TCX_20_CORE ) || EQ_16( st->core, TCX_10_CORE ) ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { - push_wmops( "ICD TCX" ); Word16 Qsyn_temp; IVAS_FORMAT ivas_format; @@ -624,12 +617,10 @@ ivas_error ivas_core_dec_fx( } st->hBPF->pst_mem_deemp_err_fx = extract_l( st->mem_error ); move16(); - pop_wmops(); /*push_wmops( "ICD TCX" );*/ } IF( EQ_16( st->core, HQ_CORE ) ) { - push_wmops( "ICD HQ decoding" ); /* HQ core decoder */ Word16 Q_output; @@ -643,7 +634,6 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_output ) ); // Q11 Scale_sig( synth_16_fx[n], output_frame, negate( Q_synth ) ); // Q0 Scale_sig( output_16_fx[n], L_FRAME48k, negate( Q_output ) ); // Q0 - pop_wmops(); /*push_wmops( "ICD HQ decoding" );*/ } /*---------------------------------------------------------------------* @@ -660,8 +650,8 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[0]->old_pitch_buf_16_fx, hCPE->hCoreCoder[0]->old_pitch_buf_fx, add( imult1616( 2, NB_SUBFR16k ), 2 ), Q10 ); // Q16 } - } /* n_channels loop */ - pop_wmops(); /*push_wmops( "ICD Coredec" );*/ + } /* n_channels loop */ + /*---------------------------------------------------------------------* * MDCT stereo: joint TCX Core Decoding @@ -669,7 +659,6 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( sts[0]->element_mode, IVAS_CPE_MDCT ) ) { - push_wmops( "ICD jTCX Coredec" ); /* active-frame decoding */ IF( GT_32( sts[0]->core_brate, SID_2k40 ) ) { @@ -798,7 +787,6 @@ ivas_error ivas_core_dec_fx( } } } - pop_wmops(); /*push_wmops( "ICD jTCX Coredec" );*/ } /*---------------------------------------------------------------------* @@ -808,7 +796,6 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( sts[0]->element_mode, IVAS_CPE_TD ) && hStereoCng != NULL ) { - push_wmops( "ICD Stereo CNG Updates" ); /* To be cleaned up once the caller function is converted // These changes are for system testing of fixed changes made */ Word16 Q_c_PS_LT, Q_output; Word32 c_PS_LT_fx; @@ -824,14 +811,12 @@ ivas_error ivas_core_dec_fx( stereo_cng_compute_PScorr_fx( output_32_fx[0], output_32_fx[1], &Q_output, &c_PS_LT_fx, Q_c_PS_LT, sts[0]->L_frame, sts[1]->L_frame ); hStereoCng->c_PS_LT_fx = extract_h( c_PS_LT_fx ); - pop_wmops(); /*push_wmops( "ICD Stereo CNG Updates" );*/ } /*---------------------------------------------------------------------* * Postprocessing, BWEs and updates *---------------------------------------------------------------------*/ - push_wmops( "ICD Postproc, BWE, updates (ICD PP)" ); FOR( n = 0; n < n_channels; n++ ) { st = sts[n]; @@ -842,7 +827,6 @@ ivas_error ivas_core_dec_fx( * TD-BWE for ACELP to TCX transitions *---------------------------------------------------------------------*/ - push_wmops( "ICD PP TDBWE ACELPTCX trans" ); /*core_switching_post_dec*/ Q_synth = sub( 15, e_sig[0] ); @@ -916,12 +900,11 @@ ivas_error ivas_core_dec_fx( Copy_Scale_sig_16_32_no_sat( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->mem_resamp_HB_fx_32, INTERP_3_1_MEM_LEN, sub( Q11, hBWE_TD->prev_Qx ) ); // Q11 Copy( hBWE_TD->mem_resamp_HB_fx, hBWE_TD->state_32and48k_WB_upsample_fx, ( 2 * ALLPASSSECTIONS_STEEP ) ); } - pop_wmops(); /*push_wmops( "ICD PP TDBWE ACELPTCX trans" );*/ /*---------------------------------------------------------------------* * Postprocessing for ACELP/MDCT core switching *---------------------------------------------------------------------*/ - push_wmops( "ICD PP ACELP/MDCT switch" ); + /* save synth and output in case of SBA DirAC stereo output as core switching is done outside of core decoder */ test(); test(); @@ -956,12 +939,11 @@ ivas_error ivas_core_dec_fx( { Copy( sts[0]->previoussynth_fx, sts[1]->previoussynth_fx, st->hTcxDec->L_frameTCX ); } - pop_wmops(); /*push_wmops( "ICD PP ACELP/MDCT switch" );*/ /*---------------------------------------------------------------------* * Pre-processing for bandwidth switching *---------------------------------------------------------------------*/ - push_wmops( "ICD PP BWswitch preproc" ); + ivas_bw_switching_pre_proc_fx( st, last_element_brate, nchan_out, old_syn_12k8_16k_fx[n], old_syn_fx, q_audio ); IF( st->hHQ_core == NULL ) @@ -1008,13 +990,12 @@ ivas_error ivas_core_dec_fx( hBWE_FD->prev_flag = hBWE_FD->prev_flag; move16(); } - pop_wmops(); /*push_wmops( "ICD PP BWswitch preproc" );*/ /*---------------------------------------------------------------------* * WB TBE decoding * WB BWE decoding *---------------------------------------------------------------------*/ - push_wmops( "ICD PP TBE/BWE" ); + Word16 Q_input, Q_hb_synth_fx, Q_synth_fx; Word16 Q_syn_hb, sf; @@ -1042,9 +1023,8 @@ ivas_error ivas_core_dec_fx( IF( EQ_16( st->extl, WB_TBE ) ) { /* WB TBE decoder */ - push_wmops( "ICD PP TBE/BWE wb_tbe_dec" ); + ivas_wb_tbe_dec_fx( st, st->coder_type, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], hb_synth_16_fx[n], &Q_hb_synth_fx ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_tbe_dec" );*/ } ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && EQ_16( n, 1 ) && !tdm_LRTD_flag && NE_16( st->extl, -1 ) && st->bws_cnt == 0 && st->extl_brate == 0 ) { @@ -1052,10 +1032,8 @@ ivas_error ivas_core_dec_fx( } ELSE IF( EQ_16( st->extl, WB_BWE ) && st->bws_cnt == 0 ) { - push_wmops( "ICD PP TBE/BWE wb_bwe_dec" ); /* WB BWE decoder */ Q_hb_synth_fx = ivas_wb_bwe_dec_fx( st, output_16_fx[n], synth_16_fx[n], hb_synth_16_fx[n], use_cldfb_for_dft, output_frame, voice_factors_fx[n], pitch_buf_fx[n], &Q_synth_fx ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE wb_bwe_dec" );*/ } /* Memories Re-Scaling */ @@ -1099,10 +1077,8 @@ ivas_error ivas_core_dec_fx( test(); IF( EQ_16( st->extl, SWB_TBE ) || EQ_16( st->extl, FB_TBE ) || ( NE_16( st->coder_type, AUDIO ) && NE_16( st->coder_type, INACTIVE ) && GE_32( st->core_brate, SID_2k40 ) && EQ_16( st->core, ACELP_CORE ) && !st->con_tcx && GE_32( output_Fs, 32000 ) && GT_16( st->bwidth, NB ) && st->bws_cnt > 0 ) ) { - push_wmops( "ICD PP TBE/BWE swb_tbe_dec" ); /* SWB TBE decoder */ ivas_swb_tbe_dec_fx( st, hStereoICBWE, bwe_exc_extended_fx[n], st->Q_exc, voice_factors_fx[n], old_syn_12k8_16k_fx[n], tmp_buffer_fx /*fb_exc*/, hb_synth_32_fx[n], pitch_buf_fx[n], &Q_white_exc ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec" );*/ Copy_Scale_sig_16_32_no_sat( hBWE_TD->syn_overlap_fx, hBWE_TD->syn_overlap_fx_32, L_SHB_LAHEAD, sub( Q11, hBWE_TD->prev_Q_bwe_syn2 ) ); // Q11 Copy_Scale_sig_32_16( hBWE_TD->old_tbe_synth_fx_32, hBWE_TD->old_tbe_synth_fx, L_SHB_TRANSITION_LENGTH, sub( hBWE_TD->prev_Qx, Q11 ) ); // prev_Qx @@ -1117,22 +1093,18 @@ ivas_error ivas_core_dec_fx( /* FB TBE decoder */ IF( EQ_16( st->extl, FB_TBE ) ) { - push_wmops( "ICD PP TBE/BWE fb_tbe_dec" ); fb_tbe_dec_ivas_fx( st, tmp_buffer_fx /*fb_exc*/, Q_white_exc, hb_synth_32_fx[n], 0, tmp_buffer_fx /*fb_synth_ref*/, Q_white_exc, output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE fb_tbe_dec" );*/ } } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) || ( GE_32( output_Fs, 32000 ) && st->core == ACELP_CORE && st->bwidth > NB && st->bws_cnt > 0 && !st->ppp_mode_dec && !( EQ_16( st->nelp_mode_dec, 1 ) && EQ_16( st->bfi, 1 ) ) ) ) { /* SWB BWE decoder */ - push_wmops( "ICD PP TBE/BWE swb_bwe_dec" ); Q_syn_hb = swb_bwe_dec_fx32( st, output_32_fx[n], synth_32_fx[n], hb_synth_32_fx[n], use_cldfb_for_dft, output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_bwe_dec" );*/ + Scale_sig32( hb_synth_32_fx[n], output_frame, sub( Q11, Q_syn_hb ) ); // Q11 Copy_Scale_sig_32_16( hBWE_FD->L_old_wtda_swb_fx32, hBWE_FD->L_old_wtda_swb_fx, output_frame, sub( hBWE_FD->old_wtda_swb_fx_exp, Q11 ) ); // old_wtda_swb_fx_exp } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE" );*/ /*---------------------------------------------------------------------* * FEC - recovery after lost HQ core (smoothing of the BWE component) @@ -1171,7 +1143,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( GE_16( output_frame, L_FRAME32k ) && st->hTdCngDec != NULL ) || ( EQ_16( st->element_mode, IVAS_CPE_DFT ) && GE_16( st->bwidth, SWB ) && st->hTdCngDec != NULL ) ) { - push_wmops( "ICD PP SWB CNG" ); /* SHB CNG decoder */ Word16 synth_fxl[960]; /* Q-2 */ Word16 q; @@ -1193,7 +1164,6 @@ ivas_error ivas_core_dec_fx( Scale_sig( hBWE_TD->state_lpc_syn_fx, LPC_SHB_ORDER, negate( sub( Q8, hBWE_TD->prev_Q_bwe_syn ) ) ); // Q0 Copy_Scale_sig_16_32_no_sat( hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, 2 * ALLPASSSECTIONS_STEEP, negate( sub( hBWE_TD->prev_Q_bwe_syn2, Q11 ) ) ); - pop_wmops(); /* push_wmops( "ICD PP SWB CNG" );*/ } /*-------------------------------------------------------------------* @@ -1203,7 +1173,6 @@ ivas_error ivas_core_dec_fx( test(); IF( n == 0 && GE_16( st->element_mode, IVAS_CPE_DFT ) ) { - push_wmops( "ICD PP IC-BWE" ); Word16 q; q = 11; move16(); @@ -1225,12 +1194,10 @@ ivas_error ivas_core_dec_fx( Scale_sig32( hb_synth_32_fx[0], output_frame, sub( Q11, q ) ); // Q11 Scale_sig32( hb_synth_32_fx[1], output_frame, sub( Q11, q ) ); // Q11 } - pop_wmops(); /*push_wmops( "ICD PP IC-BWE" );*/ } IF( EQ_16( st->element_mode, EVS_MONO ) ) { - push_wmops( "ICD PP BFI" ); /*----------------------------------------------------------------* * BFI waveform adjustment *----------------------------------------------------------------*/ @@ -1258,7 +1225,6 @@ ivas_error ivas_core_dec_fx( st->hPlcInfo->Pitch_fx = 0; move16(); } - pop_wmops(); /*push_wmops( "ICD PP BFI" );*/ } /*----------------------------------------------------------------* @@ -1271,7 +1237,6 @@ ivas_error ivas_core_dec_fx( test(); IF( ( NE_16( st->extl, -1 ) && ( NE_16( st->extl, IGF_BWE ) || st->last_core == ACELP_CORE ) ) || ( st->bws_cnt > 0 && st->core == ACELP_CORE ) ) { - push_wmops( "ICD PP Sync BWE" ); /* Calculate an additional delay of extension layer components to be synchronized with ACELP synthesis */ IF( EQ_16( st->L_frame, L_FRAME ) ) { @@ -1425,7 +1390,6 @@ ivas_error ivas_core_dec_fx( st->hTdCngDec->last_shb_ener_fx_32 = L_shl_sat( L_tmp, sub( exp, 20 ) ); /*Q11*/ move32(); } - pop_wmops(); /*push_wmops( "ICD PP Sync BWE" );*/ } test(); @@ -1441,7 +1405,7 @@ ivas_error ivas_core_dec_fx( * - core switching in DFT stereo * - updates for potential TD->DFT stereo switching *----------------------------------------------------------------*/ - push_wmops( "ICD PP TCXLTP" ); + IF( st->hHQ_core != NULL ) { Copy_Scale_sig_16_32_no_sat( st->hHQ_core->old_out_LB_fx, st->hHQ_core->old_out_LB_fx32, L_FRAME32k, sub( Q11, st->hHQ_core->Q_old_wtda_LB ) ); // Q11 @@ -1498,7 +1462,6 @@ ivas_error ivas_core_dec_fx( } Copy32( synth_32_fx[n], output_32_fx[n], output_frame ); - pop_wmops(); /*push_wmops( "ICD PP TCXLTP" );*/ /*--------------------------------------------------------* * Common updates @@ -1507,7 +1470,6 @@ ivas_error ivas_core_dec_fx( Word16 exp_max; Word32 output_fx_loc[L_FRAME48k]; - push_wmops( "ICD PP commonupdates" ); exp_max = 0; move16(); @@ -1562,8 +1524,6 @@ ivas_error ivas_core_dec_fx( Scale_sig( st->delay_buf_out_fx, NS2SA_FX2( st->output_Fs, DELAY_CLDFB_NS ), negate( exp_max ) ); // Q0 - pop_wmops(); /*push_wmops( "ICD PP commonupdates" );*/ - } /* n_channels loop */ FOR( n = 0; n < n_channels; n++ ) @@ -1582,7 +1542,7 @@ ivas_error ivas_core_dec_fx( move16(); } } - pop_wmops(); /*push_wmops( "ICD Postproc, BWE, updates (ICD PP)" );*/ + pop_wmops(); return error; } diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 90385dfb5..8c5a9e9af 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -96,13 +96,12 @@ ivas_error ivas_jbm_dec_tc_fx( CPE_DEC_HANDLE hCPE; SCE_DEC_HANDLE hSCE; - push_wmops( "ivas_jbm_dec_tc (JBM)" ); + push_wmops( "ivas_jbm_dec_tc" ); /*----------------------------------------------------------------* * Initialization of local vars after struct has been set *----------------------------------------------------------------*/ - push_wmops( "JBM init" ); output_Fs = st_ivas->hDecoderConfig->output_Fs; move32(); nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; @@ -135,7 +134,7 @@ ivas_error ivas_jbm_dec_tc_fx( } Word16 ch; - pop_wmops(); /*push_wmops( "JBM init" );*/ + /*----------------------------------------------------------------* * Decoding + pre-rendering @@ -153,7 +152,6 @@ ivas_error ivas_jbm_dec_tc_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) { - push_wmops( "JBM STEREO" ); st_ivas->hCPE[0]->element_brate = ivas_total_brate; move32(); Word16 q_output = 11; @@ -194,11 +192,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 } } - pop_wmops(); /*push_wmops( "JBM STEREO" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { - push_wmops( "JBM ISM" ); /* Metadata decoding and configuration */ test(); IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) @@ -283,11 +279,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops(); /*push_wmops( "JBM ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { - push_wmops( "JBM SBA/MASA" ); set16_fx( nb_bits_metadata, 0, MAX_SCE ); @@ -694,11 +688,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, 1 ); // Q-1 -> Q } } - pop_wmops(); /*push_wmops( "JBM SBA/MASA" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { - push_wmops( "JBM MASA_ISM" ); Word16 nchan_ism, nchan_transport_ism; Word16 dirac_bs_md_write_idx; @@ -829,11 +821,9 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[n], output_frame, sub( Q11, output_q ) ); // Q11 } } - pop_wmops(); /*push_wmops( "JBM MASA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { - push_wmops( "JBM SBA_ISM" ); Word16 nchan_ism, sba_ch_idx; set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); @@ -1102,11 +1092,10 @@ ivas_error ivas_jbm_dec_tc_fx( v_add_32( p_output_fx[n], p_output_fx[n + s_max( nchan_out, nchan_ism )], p_output_fx[n], output_frame ); } } - pop_wmops(); /*push_wmops( "JBM SBA_ISM" );*/ } ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) { - push_wmops( "JBM MC" ); + // st = (st_ivas->nSCE > 0) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; IF( st_ivas->nSCE > 0 ) { @@ -1479,7 +1468,6 @@ ivas_error ivas_jbm_dec_tc_fx( ivas_mono_stereo_downmix_mcmasa_fx( st_ivas, p_output_fx, output_frame ); } } - pop_wmops(); /*push_wmops( "JBM MC" );*/ } /*----------------------------------------------------------------* @@ -1488,9 +1476,7 @@ ivas_error ivas_jbm_dec_tc_fx( IF( EQ_16( st_ivas->hDecoderConfig->Opt_tsm, 1 ) ) { - push_wmops( "JBM syn_out" ); ivas_syn_output_f_fx( p_output_fx, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data_fx ); - pop_wmops(); /*push_wmops( "JBM syn_out" );*/ } ELSE { diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index dd1690fd4..00be6455d 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,12 +4644,7 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - 0 /*isIVAS*/ -#endif - ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4718,14 +4713,7 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - push_wmops( "synthesise_fb_high_band" ); - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - 1 /*isIVAS*/ -#endif - ); - pop_wmops(); /*push_wmops( "synthesise_fb_high_band" );*/ + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) @@ -5529,7 +5517,6 @@ void ivas_swb_tbe_dec_fx( hBWE_TD = st->hBWE_TD; - /* initializations */ GainFrame_fx = 0; move32(); @@ -6340,7 +6327,6 @@ void ivas_swb_tbe_dec_fx( } } ener_fx = s_max( 1, round_fx_sat( L_shl_sat( L_ener, sub( 18, shl( Q_bwe_exc, 1 ) ) ) ) ); /* Q2: 2*Q_bwe_exc+18-2*Q_bwe_exc-16 */ - /* WB/SWB bandwidth switching */ IF( st->bws_cnt > 0 ) { @@ -6658,6 +6644,7 @@ void ivas_swb_tbe_dec_fx( hBWE_TD->prev_Q_bwe_syn = Q_bwe_exc; move16(); + /* Gain shape smoothing after quantization */ test(); IF( EQ_32( st->extl_brate, SWB_TBE_1k10 ) || EQ_32( st->extl_brate, SWB_TBE_1k75 ) ) @@ -7007,16 +6994,11 @@ void ivas_swb_tbe_dec_fx( move32(); } - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" ); - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" ); - /* generate 32kHz SHB synthesis from 12.8(16)kHz signal */ GenSHBSynth_fx32( shaped_shb_excitation_fx_32, error_fx, hBWE_TD->genSHBsynth_Hilbert_Mem_fx, hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->L_frame, &( hBWE_TD->syn_dm_phase ) ); Copy_Scale_sig_32_16( st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx_32, st->hBWE_TD->genSHBsynth_state_lsyn_filt_shb_local_fx, 2 * ALLPASSSECTIONS_STEEP, -( Q11 - Q_bwe_exc ) ); Copy32( error_fx + L_FRAME32k - L_SHB_TRANSITION_LENGTH, hBWE_TD->old_tbe_synth_fx_32, L_SHB_TRANSITION_LENGTH ); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.1" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" ); /* resample SHB synthesis (if needed) and scale down */ synth_scale_fx = 32767; move16(); /* 1.0 in Q15 */ @@ -7120,9 +7102,7 @@ void ivas_swb_tbe_dec_fx( Decimate_allpass_steep_fx32( error_fx, hBWE_TD->mem_resamp_HB_32k_fx_32, L_FRAME32k, synth_fx ); } - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.2" );*/ - push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" ); /* Update previous frame parameters for FEC */ Copy( lsf_shb_fx, hBWE_TD->lsp_prevfrm_fx, LPC_SHB_ORDER ); IF( EQ_16( st->codec_mode, MODE1 ) ) @@ -7159,9 +7139,6 @@ void ivas_swb_tbe_dec_fx( move16(); hBWE_TD->prev_Qx = Q_bwe_exc; move16(); - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A.3" );*/ - - pop_wmops(); /*push_wmops( "ICD PP TBE/BWE swb_tbe_dec PART A" );*/ return; } diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index f42bd262a..be0dd84e5 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7332,7 +7332,7 @@ void fb_tbe_enc_fx( elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 0, // isIVAS - is this correct? + 1 // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7468,7 +7468,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS - is this corret? + 1 // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7479,7 +7479,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS - is this correct? + 1 // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -- GitLab From 6513a57e88afb8d5a95ec27739fa484ad1a8af47 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 10:34:10 +0200 Subject: [PATCH 322/698] Some bugs in STGE2 code, introduce FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS introduce FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW and deactivate it to test old elliptic_bpf_48k_generic function --- lib_com/options.h | 5 +- lib_com/prot_fx.h | 8 +- lib_com/swb_tbe_com_fx.c | 293 ++++++++++++++++++++++++++++++++++++++- lib_dec/swb_tbe_dec_fx.c | 16 ++- lib_enc/swb_tbe_enc_fx.c | 10 +- 5 files changed, 319 insertions(+), 13 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index c76765742..3ec71d78b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -95,7 +95,10 @@ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS* / +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ + +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 59c9e2f8c..018e3ef93 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3266,7 +3266,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; + Word16 isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -3292,7 +3292,11 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout ); + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , Word16 isIVAS +#endif +); void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index f1492b0b4..1e806bd6a 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6868,10 +6868,10 @@ inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_t * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ - +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS; + Word16 isIVAS, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -7370,6 +7370,285 @@ void elliptic_bpf_48k_generic_fx( return; } + +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW*/ +void elliptic_bpf_48k_generic_fx( + const Word16 input_fx[], /* i : input signal Q_input_fx*/ + Word16 *Q_input_fx, + Word16 output_fx[], /* o : output signal memory_fx_Q */ + Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ + Word16 memory_fx_Q[], + const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ +) +{ + Word16 i, j; + Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 memory2_fx_2[4], memory2_fx_3[4]; + + FOR( i = 0; i < 4; i++ ) + { + memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); + memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); + memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + move32(); + move32(); + } + + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } + + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; + memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; + memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; + memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; + move32(); + move32(); + move32(); + move32(); + move32(); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + move32(); + L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } + + Q_temp = norm_l( L_tmpMax ); + Q_temp = sub( Q_temp, 4 ); + Scale_sig32( L_tmp2, 960, Q_temp ); + + memory_fx2[1][0] = L_tmp[L_FRAME48k - 4]; + memory_fx2[1][1] = L_tmp[L_FRAME48k - 3]; + memory_fx2[1][2] = L_tmp[L_FRAME48k - 2]; + memory_fx2[1][3] = L_tmp[L_FRAME48k - 1]; + move32(); + move32(); + move32(); + move32(); + move32(); + FOR( j = 0; j < 4; j++ ) + { + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + } + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + move32(); + L_tmpMax = L_abs( L_output[0] ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; + memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; + memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; + memory_fx2[2][3] = L_tmp2[L_FRAME48k - 1]; + memory_fx2[3][0] = L_output[L_FRAME48k - 4]; + memory_fx2[3][1] = L_output[L_FRAME48k - 3]; + memory_fx2[3][2] = L_output[L_FRAME48k - 2]; + memory_fx2[3][3] = L_output[L_FRAME48k - 1]; + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + memory_fx_Q[0] = *Q_input_fx; + memory_fx_Q[1] = add( *Q_input_fx, 11 ); + memory_fx_Q[2] = add( add( *Q_input_fx, 6 ), Q_temp ); + memory_fx_Q[3] = add( add( *Q_input_fx, 1 ), Q_temp ); + move16(); + move16(); + move16(); + move16(); + Q_temp2 = norm_l( L_tmpMax ); + Scale_sig32( L_output, 960, Q_temp2 ); + FOR( i = 0; i < 960; i++ ) + { + output_fx[i] = extract_h( L_output[i] ); + move16(); + } + *Q_input_fx = sub( add( add( *Q_input_fx, Q_temp ), Q_temp2 ), 15 ); + move16(); /* BASOP_NOGLOB */ + + return; +} +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW*/ + /*-------------------------------------------------------------------* * synthesise_fb_high_band() * @@ -7396,7 +7675,11 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout ) + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , Word16 isIVAS +#endif +) { Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic @@ -7431,7 +7714,7 @@ void synthesise_fb_high_band_fx( /* for 16kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 1, // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 @@ -7445,7 +7728,7 @@ void synthesise_fb_high_band_fx( /* for 12.8kHz ACELP core */ elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 1, // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 00be6455d..c31008f5f 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,7 +4644,15 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS + , 1 +#else + , 0 +#endif +#endif + ); /* add the fb_synth component to the hb_synth component */ /* v_add_fx( hb_synth, fb_synth, hb_synth, L_FRAME48k );*/ @@ -4713,7 +4721,11 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp ); + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , 1 +#endif + ); test(); IF( GE_16( st->element_mode, IVAS_CPE_DFT ) && ( st->idchan == 0 ) ) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index be0dd84e5..30be6bedc 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7332,7 +7332,11 @@ void fb_tbe_enc_fx( elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS + 1, // isIVAS +#else + 0, // isIVAS +#endif #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7468,7 +7472,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 1, // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 @@ -7479,7 +7483,7 @@ void fb_tbe_enc_ivas_fx( { elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1 // isIVAS + 1, // isIVAS #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -- GitLab From a92d246a5f8be1868eb1bf99fd1264670041c5d8 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 10:34:50 +0200 Subject: [PATCH 323/698] deactivate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW to test old bpf --- .vs/IVAS_BASOP/v17/.wsuo | Bin 0 -> 29696 bytes .vs/IVAS_BASOP/v17/DocumentLayout.json | 59 + .vs/VSWorkspaceState.json | 7 + IVAS_cod.exe | Bin 0 -> 6157824 bytes Workspace_msvc/decoder.vcxproj | 344 +- Workspace_msvc/encoder.vcxproj | 354 +- Workspace_msvc/lib_com.vcxproj | 680 +- Workspace_msvc/lib_debug.vcxproj | 240 +- Workspace_msvc/lib_dec.vcxproj | 710 +- Workspace_msvc/lib_enc.vcxproj | 742 +-- Workspace_msvc/lib_rend.vcxproj | 414 +- Workspace_msvc/lib_util.vcxproj | 312 +- Workspace_msvc/renderer.vcxproj | 358 +- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c.bak | 8216 ++++++++++++++++++++++++ 15 files changed, 10360 insertions(+), 2078 deletions(-) create mode 100644 .vs/IVAS_BASOP/v17/.wsuo create mode 100644 .vs/IVAS_BASOP/v17/DocumentLayout.json create mode 100644 .vs/VSWorkspaceState.json create mode 100644 IVAS_cod.exe create mode 100644 lib_com/swb_tbe_com_fx.c.bak diff --git a/.vs/IVAS_BASOP/v17/.wsuo b/.vs/IVAS_BASOP/v17/.wsuo new file mode 100644 index 0000000000000000000000000000000000000000..b5ba4cc2e3848c523ea1f3f0f636f280abb28b55 GIT binary patch literal 29696 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 M1Dfdoh($ literal 0 HcmV?d00001 diff --git a/.vs/IVAS_BASOP/v17/DocumentLayout.json b/.vs/IVAS_BASOP/v17/DocumentLayout.json new file mode 100644 index 000000000..f96d16342 --- /dev/null +++ b/.vs/IVAS_BASOP/v17/DocumentLayout.json @@ -0,0 +1,59 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\work\\IVAS\\src\\IVAS_BASOP\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, + { + "$type": "Bookmark", + "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:130:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:132:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + }, + { + "$type": "Bookmark", + "Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:129:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" + }, + { + "$type": "Bookmark", + "Name": "ST:134:0:{1fc202d4-d401-403c-9834-5b218574bb67}" + }, + { + "$type": "Bookmark", + "Name": "ST:133:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" + }, + { + "$type": "Bookmark", + "Name": "ST:128:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 000000000..f874ddaef --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\Workspace_msvc.sln", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/IVAS_cod.exe b/IVAS_cod.exe new file mode 100644 index 0000000000000000000000000000000000000000..aa3ccb696899271daeb2cd4ae2c93d36f6022116 GIT binary patch literal 6157824 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~Q20qk1_nO)U3?5%IL|8XVDvew7?P1$tWZ#t zpI(%htB{X2XFEIVzDbC=xbHuhEPO)J6zf%O5{^yhmmjC7C1J?h`S=ivW^TzG}os0}Y z^iL-bgWt|UnaLR-v!T{uPywzC3_gs^3~iGC(qWPh7?>Hk8Tqss6ap9+MEJnM2R3Ul zFbFU(Fc<_dFfcek*h~xzY+zXg%@7a=2}}kCP`EaN6@v7EG=pid2vipXgG+NXgAJUA zn{hxtnjr+YGy{WvG{{v56$Swe1&jzTI!mu4wW5T9fq`8v0OBB!UqOigNudG*LxNsW zN@7VO14BSGH^lET+zbpVpfErvbYNg`(1R#rVA;;Zz%U`2fuW3vfuSK9p$HOc2T%k? zIRhR7q1|r+yInatUH>%J{sE=YdKoB#zom?kfuXtf4+DS8AqED9ml;e93?MlL28McF zD1*O6n2CX*+xJi7OGW_(hECr<&9#4&_}gtjqM?8Ot4zHhlNL1F>pAtUVys z3=nG*h;;?TS^;9c0kP(RSSpieGrXJvVwr$gT_9Enh}8gMl}w(^@Vaux3=mbcV*`lF z-f;v(rR=x>qGETv0a0N)1g6Ypcd5>x?|0h*$mxJV-KfISRm-YAR_3%uu9N@ zVT+&x!#+U=h7*Dg43`8Q814u}f9;3ee1pd$n^ z*G$NP!2!w+5OiQj5p-b46Lesx5OiQ@5_DiVbLPyM(C#@9}4K^=;Z45VCnQ?>2~1gbm9QJF9xI*?1%)2BQhb5NCCAbz~UJU%}02w-@KSP zOA8!1AU}fq-}okniGd+3ym#-EzyJU5oDE7lAi2-07dqUY!(e>0)AbMkepim>AFQ=1 z84u>oX2@cC@r6qVGJ(t$$`-6Xf=nt^Y7cABn z_`C|G*a^x3xje+Xd2^c?hJav-QN^|Nk5J zf=Cud28Lp$*K99rr)e=v=@V7RAizb0%js}cSH-!G^cID~znZOd*JN3ce|NnztoChoC*#UOM39uu2kANKk zBH@nMF%{&9sUWdqEutW;485%&D&R#f)DbcuNA!Zk0$;qm33Wt?M1}%L9BSJ|n0P6F zx2wQ$2NO^XzC6Lez>uK=QU=w&3Z|??B0~ct4%I#hCJxgMa`nqjkaiuAGN|@!n6eUy z3=@zzRC_Q?yp#uGI}-x~!)xCR3y>P9UVWIF5{V2OkT_JYI7}R-7nH_c3qqn*0350v zES+8!p!jb-#FW+<`s1a6AOk~&1IQ3)++4Z=4VF@gv~J%YY0U>2L20HtRN$DC2jfcy zka`y+^^0KY`CIQYFfbtN0oemjXSKGyy;uJJ{~ws)Gk-P%NDAa2o(X|3CYXVeDo^Wy zdY3d^C3o%GhcHdWV&4ijyc#cHtz)~WhfQu_7ynhXv=7PsoPZ` ztuw&xbqGX?xkdrPNU0ZxsA1?16-es_Tani3WcOOT8|tEf`QXg6ogJEa;!MFVdT~t% zoOuF;7#Lo%3otNb%m8^Dny^=1hX)kcNuDTve|epsfgxiBlKM)Rdj8gOP)!6%7u~)B zX`PM%$X?~&@A`v(zb{AgOBU;c{Jpk}3=A2dB#snfuzax{Y$9sDH~`KUAQGeroH-Xv z0_O{m7<#@4^@L>3H6V9FQ`g07Fn{rMhYB2b0yn2$n`CSNse$IFwMc4w1&%w0fIRbB z0OCf0ZeN~mk%^rFF=^edKhl~HFs607{(!~)7PQ!(WC9NB<{yluK_LBz1mg^eK88{S z+}jRJ^%@^2;>lZEd`2sNL;3MdZ5a2fpZbqeJ@@37#K2kfV=@M-JV^AdDQ@% zz7rTT4uFyZoow9eKufB*mI-#-;ZHUDC);o;v87Ha;%T&I@t2I4e9nA3I` zft~ikKmeRdSMxJ4yf)z9-wW3Lld*&cZW2?eM25tI*$i2XFD|oy?Fx8N1=0OdALN;i z1&G4=;uTn+NF!%va9ZF2l}0cB@GvlBOhD2y53WT5oYMptk>ls(8IbxpNb2)o>iJs@ zK`mfV65;_BR>;~wA%~O^M8FkP=nrr$kbQyyRC)%-)dR1Q+ef$Fa21B_5k zCrcMNXJ*0#KsDQok1pUe&%f&a4;j3uCOVS2Hf85%B0hLBLb#Rm@6P(B8R-l?FX zCMe^<0#L!_`U4W5K`*X@mGZP6sN+G7R%o)VSIc+;F*_b+HXB$2$BR0M**|$17+%{# zl(W>SWk@Up7efXx<<|`$PVt8*KLt|G2g(55Ub`UOcu0WTIpbxA^W zP2pu=Fg}ph>G}m!r22k=7U*C2_lJJzb`{{??;&D+k-v8d1E~H-Y8TYzWYjDK`4`?M zc(MHwG-Z^?WVE2k&4$U93i9vw{Q^oYE?p9!s`IrdG$uiU-K9L;ENz`GT_}~yYn6;1 zh%ZcFzPPOq@p~{YI2z9JFfhEd{r~^}%X%&bhKvIXXTuv9iZGk`TZ{h( zP!kcgWbuY35O8{MbVj6y5<^&Ap8)$05!bK5?g7O$A97s3)`L_`|NsC0pK%7_hXO`u zQW6L2;ds%{1NH+K4+8@vvKeZ5j<@dk`~N?<*yMt+L1ERr7bMD1%5%JR%U@74m4N|N z^?}$RrQN;)T~k4vjz9@WJr?l7=ng1SSUSPg8l({H?A`G9|NrK_Ad;~}1j1k{5r;6C zOQc?_fa1pql%*J6+ki_*5m3&4Z2%525l~iqt&+j92%H`lFhKp|t_O*e{oG*xSaCBj zy!^nyz>uM{2oW8VE`ZzvZrg#nZD7NBSiz+tqBVgM9sIo~!HEx%(EJ<`QBtasVFGc7 z1k4@#bs_FBhqz-C7b1%mECMB2M6{WJoeYXLlq?Dhr#0Yk0+Ea*+|7GI45kvk*Ahs< zV*vI6BzROZN+3?@{SWdaOTY^gs8iN(frCVy3zUn%Eo_eFS1i`2YUMzQzuQ*;+^%lw zbo4A&qfRD{U8&Qc$x%gaBz2&iDgqk#d+n2P2doZZwLOwLu+_q#HnB>^ z3rN^8`~!J{CE&$!ZAjS3bAlsd76)o+@LDB9XE8WMpZg2dQ3}=ZmIJIKgM)$Lr5qar zLq@`4P&z_5RmTCGA_HD*J`2(c4*FJj)x{1@-l&y6Ke!FY3TnemWI!a)9I(NNu$l~Z z0Y(CamJ{^~83hn0OT(OeNDJagD-H&R39ro|3R&s}(CP)bj3p3_kN$uh%o6aT6RMFB ztWhrG0!020Ogw0F`R5wZK_S16%^hWw0y($B`DyT^BVW9`*#e%lKqkr!TlB3;hD^9DL#5@A{?N zSAc(iposM${$9`!42tt>b24&W9S6W}!& zIB$b0PEbw8)7R-UK?1qa@>(v#2IBs#-ykbk0$vD0-QUT^z%b#Z^M6na52=X{Dj`4) zgSVP}khAk^xr`Wyc~UU*4r)Nc!xC&>0W$+bMg!Ojh}2qV3r(%8Fu(A(Zh@y(Q1=Si z&4|FlNUc3!gAsB46l^y}TtgBeL%l-A1c+mEe?dJj0@lFsqKB10YCQtcXaduCTOH!d zV6aBHj1Lfb5t#gLsJt;q9^nIUYWoSA&F=It#cITg1%3V0rW2h%lm5tT7oKAZ^gD z`oH5KJ2+Yol!}5o1R1D`^+8o7s6W9oAuwYC#96DqgS4;&ya)n2i|55DCUD@oGBGf` z-2DcWiNRjvXnw(DeW5lOxkcG;0nUDq9)=LaaCr81c`XS_uCP8t@fWZ?-M#{yjt^TG>e28M1|fzAL9 zlps>cxB@Z%z&EfH0$!v;&A-nG_G%PpXf9NMf18s*>w(gcZeM}sN*+c~9+-iYML=vw z76G$B(xCB5kPxWp3Sxt@2>-UJAZE}DCMS?5Sil}O=?)cWtm1HxXJ7!wOml?^Lmdye zB?2CGd+h*G&|rs9zz9mvWK8R6hv!Eny z#S9IIQK>Mac%VkLK#XGAz!=nhHlSCuLCb;Rg?)<_Lqt@3T(|EZ$XRDS2185i%#NMFgzyRu?g8DgYv>X^patj!WK}2Fv zdRcr)etc;`L240rSRFKe4920|Z!$taZe)CM5Ry&;USueNy_+!wBEAwP9sm_z0}-DH z6SshhAAyKh!o(Gz;vXR5i7;^vsJO>+@JNIwO#Fi)#NHJUaYLB+4XF4Jh&VJo2fR1{ z6^~c}Hir?Weg#x~0Yv=eXJ|A|fQoah1gpOY6R&`ZXF$Yv!o(Ax;wK>D3t{3OP;rA* zU~@WQ;s#Lh1rYHF-02TiL5q}61?|_OMtOc8M5++^%6|aGaZ-j|QK*iTU#Am|99iZY5 zAmWWMaSf>W8;E!&Ok4me{sST&2owJy5Ako#I#v6Jg>UP;mo@xF<~fgB&CrW-an0NtH`~gIKBTPI3DsHeHY|c!WxC2x?0V3WA6W4%> zZ-9tr!o&rj;tD&!<^;mTf5<@mTLBTbgo!_Ziobw}E5gK2K*b|=g3aNCiEn_4uYibu zdKZ@dl{4#xAfq2VvqFQ1Kp!_)3^~095<{M0_Gl+yW}ju^VhoB}`la zD&7DQPlSncK*bM0#64l+AEY7SV6X>ljv-9^22{KPA}$FNKL8a!01;<|iLZc)YwQJ^ z^YSe;940`;8zABrVd51~@f{HHoiOnPsQ3$r_(GVt2SnWZ&5L(6S`4v=!4)Z#0MAzo z>;UmPT|acXe(7}m(dqgJ)FQE9;BN)ZS%M~vyF&$nGT!W+4VnrLc;OBN5G499N-bS*Ly$%NrKI<7(vZB0g!<&ChLRSni*gA z&SvNh{Sx#-XfMdyptdeww<`~5D2IXJWh1B|{R5-~G;95S4@?PncPP(s(7FhQ*NGW_ zK=Q6%0$!X)lK15~&IoEqy>`rC*ax*@J(4`g3Q*(ZwPFUxK5+A?@D0dxmVg%$Qs8)f zG2#3F|3(L13%=$>aXzdGRATJF@WQ4V)C6iiB4GXI#e`}|n+Mdut1)(9`11e%e^A?| z!`K1Ru7Ru%2t4izUJr2G^$)nQ$=U7tr}+RQWYG&#t#-FBM_?9X7E5<1Ptc1R@VK%7 zXqJg(1LJF5aIl6$=KEeB%ZPwDecNlO(_`f&(U+N`~QDuod^R1I1M1r(I0dD&3L@E=Kufy3?CR6j<=S8SPURm2AmZG zXNAC70dSTFoMi)NslZtpaF!07WdLW%Kv})69RV+v-TVK)`3TDkISU4cUf+&DP|)yi z2c@u{`yd$}NSB56fo+1M`tT2Q8e!bkqo8k-M(i6 zGfF_lF}+}g8Mg*v+zXX2|Nl>TX(t4VK9I3N-C)fDFHZjfMKA{>f)%?%&je+xftYdd z1=PD45Hnsf2r)3gw3$Gr3&D0i0I6quF%hQT0;2wSD+@G@b%*ZhociM*$TJ5R_*+10 zrZWD3J#!%7MHILf%hA~iO4rSMK_u8S2Ldw~rh$`=1_9cGdq*d&gZ zXBa>s2U6SFsUKeHvOa~`EewfTQs7!c<4n*ebGpOI@KxJ$*d>}HnVKPln8Rd)&kPOp{ zgD{y4h|G%zA3?$Xiysv1H#(<2`S<^Sx9gqG))yd#?}JY8Af43$|i9$O_*lff;8&${1gm!<5|vW#uD0 zuLJq_gRO79RN~gW7i2$pYD{6>|Nnoc&jwG8f!GW)Kx2H6^()=IAd$cfjv3&fdh!$+ zAl+ai1;7z#0ynml4eSr)3?GnkrWadb%45LFIbK}(01AtDe4r7ODV?n{>;C`m?gf#} zFBv-_jJ+T(JAeC0&@jtX5a++j)B+y|2L5fXGXnUx`OXP!e#6s!rMndrlATQ5y&#W( zR*8XK3|=U9B(NKtaf0}_x$X$)?geGt!0ylqLEYf$BH+avaD}9UUI_PsO5?y6eBil! zmVk^Jh&SFnf%|Mt*1#8|o= zY^eecOEqDZUVvE23A1#AAjFd%AWIVUNzF(A^7)%fJ^Guv<43ly-t%Tmny0vjk*> zK&;#J2e zgc^15kYtT%bne zjenr}g@K{B6~qeYh8kk64mJehCW!w#r%J2?EeimV3?+PxdqE7&00xE<>(|!ZVC~kf z6H0WtK`q0nAk)CfD8m9`|I7!_z;XcFFY@vRCj-N4{nxtP(0p>^0;tMm3CL)GXvlzR z;0J5qdAXbuGBGjr%)kHtds{&yJPf_T^PsrGuoh-?55#C*n9*B!Az|nPGWtMTXX^ow z(Y+utuzM;fJcC{|s38XhxCrZP6#)kYhy(`(m;qV>@BZ4Ie?M41X!X>;|NpH|l^B9r zcTiDKl>~BlP{s_1Q=0BWgGCeU6p@z)IiSG;wkhDn!Sm2y`2x`p2-ENbv>xOL&&vrM zpoZ%eh7zZ4-z$MH93fN9ovon8e)C=s393#(jZcQz;FQ1*GhrLVgco|RK(&+y*qkZM zB@)fGQ`k#{K+RxKn_FNVB!#@@;@|H&r?VBrPwValQ=Pp#{{8=N44N$hHr=J4pq6uUP3r=Nl2}lCxjUqHLC}k3rl62z>1^d$2bvIZZRqX=u{wKN zLEV$)y&w)lsSZD^rJZ2|@qphwXqbKF21nnE+?OB^w6ilXysY^D|9@}q2GHtbSY=cX znL&l5WsDw(AUNf)1Y}e|4F7l+YWNI@;V%u?L5niLMqYdv_~PMuuzY7LsB6?ab;-Z~ z|KZi_Q^>3$x=qjoz8pN$%@U9?2Vzq@%qBgkO~=?kHD2h&)=MRo{QFx$Mz=fkR?L_FUr8$I5Pe~#J9u5;~?U%B{C%D zfSXZsVKOcd8PL=dL+d5}mVQ=H$pf-2fPXtUhy%N)f_xR!-3rQm0WTgYV)Yd?NJGF; z%Mt)C=v+XSF}*N=S$3Th;;VdCPz1JuY-v4E%KB0Y%Mqm@fs(KBrEYNar*(>WyuJ+WTJg6`08Jc28(&jF-L0S( zli!1KF9*CIaV9V$1>($3@X~mefENZ}XY#x}!NR}*tCFD2wx^I8HPk4D7ntGTxoDPv zj2RFU&0!|q1Lfo+JTJ>wKr6;T9U2DymgykJO$GI}f_fnpes?cOD)2@9TaX)h__tkX zy;Q2$?Rp>}V-Li{r{IYF>x}? zM9}(^<|8~WFENAM2yXQAx9kDAu@}_N4eXu@5(|1EWC@CYjDj6%d-ur zZFW%H^Smqu8UKc-`%E{uC(tR_4ep0@I^;C@_1SPcY zmZ_k!FW`liAr^l-ff8T$lwOdMpcm%mASEmTuq^Hlb7BF+iRv&Xo?`KE?#$p}7Z)6{`4l{v4QjYUY&Z&Dyw4KwA_r^(&r252 z^!7hc7amga@V9IO^=W%SwNT&-H!HA%Q4Kc)jf=p%&;qmI2*iREm<8Nm3j|&+2DMwE z#$5*|4VKPU9ZZsiDd0snq^yM&{U!X}y`b_w z@I^61ycgOJW&saau<&nl{oQ&1)R+Q|^MV%pg4Q;G*x&)oRuBs^p&#Pq!0;k31vHus zo6!G|qQ%g71Tj}+i4ru{9q8l0 z019#t+ug^30aTZQ*w#J{44@DLu?>A37(ku`vDJJW7(j&zXa%LTj{^g!Lk|+?^KoDR zRT&`m4{rwsP)8BOe&_AL04kDclruo$ zDc%kYpmGbempj7Sfg!Uv*Eh8!5xgrpuQb;wv!s|IDYGQFq$o8pmm#k-H#jl3ASbmr zC^az!otv7M?2?+3Sm~JuRm4z`oanwRXE zhb#b50?`|kSdz++oamgNmzJ5%kd&C0Ql6Pol7V2k6(#1TI_H<>m82Fil;oEr<~U`R z6oGVQ7UzOoms(WJkegVX2w^j1B|$|Q5=&Du^P!>{PQ~FxnII!FJj)V`UGtI|5{uFq z(k5hEI54zYI55n&aA4SJ;lN;G<-l;l%7MYc+JRxMwF85ijRV6}8wZ94TL%UfTL*^F z?l(IGB<8_qp+I~NRDQRsNInke5DUD2d>WNJDrH9mh>G1&0;0lp%m7jTJGOu*j~zEal;e&sAj)b7&*9k& zud(bOmjQ`m>>t+viL&l6IXs&IvVZ)6zXL;vzXQW7e+Pyy{tgWP{2drL0vs5G0vs4* z0vs5w2RJaOL1}{k2L`JE2L_h_2L`_Y2Zo3M2Zp2o2Zl5L4h$0m92n*YI55QdJ1{H@ za9~&);J~mYz=2_RfCIy!00)MX0S*io0vs5+0vs4}pyrhYI50Fo*%SO77?$`uFs$=; zVA$dBz;MW);QsOES`LO%t{nmb3=A(N7#SF{WL}(`4{qgj`*L(Lg7$J-ffO(pFfhFQ z4r<@Ia&#l@H1B3Q=D-2k#N91;%!v~;li$s8%uxumL%f?Q;Dr)om^$MN0|Ud0Qi#Fe zVvVC)u-o-VCsT9n4~9~q43P0JSivKtEH6PF&n%l4ZZPFvx_v>)nYw+ybaFJ;eqku( zhiJG09wKLXozxx5(aqG&(dqlAJM<68UMt9OYPav7z!!Y)L9Jkx?$AHSog%<36xTn; z9TLDS-#^D2-+)*kpN0N8-t+>>0qw2)lh)~&@j_k-v}FvkE1fw8sT2bjwO|5V-eTXM zk0pHb=20(v4?+A1313l&!8pTrDR?*-9=^}!g5A*xTCI#dd`lo2u!Qd|@J=5VaQLo! zOHuglmq3K?;wW6*P{cKm6fNo!jK+qzVZdaZF&;pAW#o)z#3gERae;^AbE<|E_37lRe zz-uEqU0-y%zCm3j!x8Y}7i1W()Ab7|y@R~=IVjzFPa*B1dVjKP!EKf2F! z3v>#02e5Pof=_F3&_~Rubs03o+-|njr_~Lt?KST2o(7->}4h~T91gcZO@dyfD z-#^`g$DIT~i)~)iih-sK{&aJI2jbE?1I1os!GzMfLlx3G19@IVpovJmaD$8RZwpmP z>kL!@hX?;QR~6987|!FaFF@(%HT!W_aH-H-`+}jA^SCR>9Sk7RCm`u=UyiQOC!j5e zt{h#yA{`z=y`gV{UfcwCm52>lYw(nt0x0LY{%Ae|YA4PJM}#cl^l}O^a@gsL6qv@a zz?2Dmv8op>FhNy1EHL@^`zmz$zG$v}!B}G5T>FBlgz0q}|MpOspe&{r3_DCf(a;SF z@U%`R9&pM7Cp&OJGm0`Wy!aym+RtLkzui?PAdB(E+3k3>oD*SScySV}g=+^pC}u(D zL3D%al}_J3V0*!q@NW;~33_n>Zdh8UV;Z=4Kkgs^+G7TBQn#y2TBnoLiwcmb#ULUN zWOT3Zo4^+#;CbsG-B&OVBLQVx5!B?p4ZI>x0g|vK!w|s_THnoyAw~q3tzZ?P!zo2gE`^2 zg8*pv)Qi8MB{Jaj0gH^+LJSNOz)^4!JS$9W6c~eB01C}VM6BPum=*$y0&x1r9sXw_ zBZVl5e;=YAfD{+U9R)yLdTZLc<}|ab_P@)KnmD50WU6rr;Uj% z228;18F(=O3WSNlus{H}G#~^xJn+^ZyC6e?C_w^R{Rplb%1`>!oJHTvk=!m^|F2KO>;*kJI z5j!}WzxM2gRjJ^lu?;+lj5TRsseB~BZ4r3bfI91?LC~-v93HD6LzgJw0dCDgnhNmn z0PXmFp)0_^unUw}An_{pLPh{ov4YCT?$8&_uh<|V#ar&%?fQa$TgQu72ZsMDy%%B~ z7{HB81yCFEwRtzFnF;DdF}&99_Wg6*Q2`V@piMe|jyoxUYOdG95H%pXUbF9D6<}a^ zodU{ufeJw{p05NYHc-|~>vZIKF@qme7C@UM;P5L0Pb3o?emB6&?@+?eG!PPg6Qp7t z7}R1N7>r^a80=yl7`$Q~7{X#57#LVVfRUAnm6?^51(NnaWN7!B7aE}0tK|SUyEvLH z7)n`RHpB89|28L3y)6VyZ2>QSKLIxpUt2>(nk^Vg$b_6-Nx#Z(c+PfQDs2P6cDU=>xiAw%e71 zf13wK>&a5C9n7Fg3DjYJ;l#(l@WPglfgy_->Nx)GfdWAEJ#%0LP4 zCFneWEV01P`~t2zpZNt@R9@KFnS%;Xx_*Ef zz~*B{M$o$KviX4ft+QxG#bSjsiT~yFtO;372382kvWeaPr#u1+)&Wl&5tzIf@&4o-l+Kfqy-2bYY(eU!-${{0?2))&DGd%u8#)<=M^^<=3eI5feV zU#E0{qAlnJpA{$(u)N*{?o<_k_hYfV@Ze@(c;O5p>_CJiHz?cv;NKsp*LtbMDr15% zC{TWY^C!$brFt2l&5PZkKf0Yb0$v=0`L|T88?>=DkgxSp33oSWi>8M`>&epc7f(Q^ zmw-(Q{Q>H=Pl4$uG0I}>hI+RiE+~ssA!WU22Q3r=t+?c~VFaD22I{f@Nb7Xedy&fp zn)iqFdJJB~gVceJzvEJdIJL8=wAUR>m4V0iI{6O?#<@b7oh zYduh^1okVWTq$aVMLbWp>yv;NM%G}zft!S&6TmvX^twT#!W?PcfjnuQ0S2I~<-p1K zq7r0o35dw&1o^QO#BAXN9cLyFj=AnYj-VIDO;F=Yq45Ap63!U`@nH9WqM#A(0G)2% zAIBL%QsCA;q%O~~s9Oo}nVvO!8gIXZ#O0#uekni(-KHgbTR@`r!FQ%v>=w!jyT5Ivo)4?t~W*9VfSKXii*Nc1QH z9d860Nq`D<`%I_+w{@})F?9Pd3Umi5fI43u5uhcxp?{hWMey%;{Q$DnrLkfssG*X5 zlA+s$L!jG3p)-&N$&}_w9)=PVf zk!~jikjn!jIs;fhv3no_rmhF7F7!>e&qR^#K!r{xp4UrZ?wisGGNrjnfT6?$Rjk`d z0Bm9c%)|s#6T1TiI-Pi48vg(P{{+uoW;=X z`y>!tVYod2Ri8ZI{QaX_urq+=#b#Cph6!1WAR$l-qNEP0kG};pBGDcC1SG@J>1FVu zla+x1W`jh)3oW<}p;?TO>W6(5xZq0bbQJ(OWWSS0>jBVk#tm?5mHoKu4N$X-f1B?O z(9%+YAjqKB4^X)QN)a8P)=J=uiQvW6A`lbQS`UzxIvmBp!1BO`=`Kl;2!WY2>8GvxFG{NvH&s+mIt25=YS0FeRPEw0d2`Z zD0K63@S67yvR?vX-a=x`lfh!15_Fi72Q*A603N0k0S{Ah1iUx{cCi4&2762!K<*7g z1VA?js5$co+-g8>5zk@(EzRTsO$UJI3qZvPxOWU{fq}CHM^F~S3%LuR_JqL9ot(A| z4BvkSfUA$}Pye#mvp_?%-5wl)FIH^=C&qvmA3=+Fj&P)PPjQo&IhBEb`=NjrwadYh z-M&0&os2K$gKCgaP!Ak5$jZaNT`=f{G_xtB(g3TdWde;L$3eW8;DQ+;p#Dk)$RbdG zg{`@k2XqQB$P1vuc0d^v)a-}0Iwimjq;8JxP@c4IN1n7!rWdkc^R3^!U~z#o8^QC# zX!J!kx)5Zs^-@Mr43^50iTEOjJ(D*i}OUS>?71VWNKkoVm z)LR7Qyr-y}D^L-L4$U zt~{WD2iHHKSwy7Z1&ud$yK*3m1ovNYjekLM>ziKJFW`~-7w;j(39J_e%5pD3Q>Bn2 z4mmmlL|){8s;6}D*-O4(T2Gc*gL3g3NZq7R4y|KKR6*_1H;{HI7hIGd+z1Dqp!kCI z|Ns9Jx_#g9?+@eywXCc!lt^^@zDes2{gT!h2->WB4AeBe_wWDz3C0H?ks6Zc!0;l* z0g?tm16&&%AW;cQ9x-{4{jH#spONRlke6ES1YdlD6hPqcz?J^Mz41=pH{GFcK)tgU zFY5mN|No*AM3npkEzI`iX+2pY32D=V)PVXhUNHZaDtCvzfHcfYtRani-xr`d@WuBs zSimTQx*9LQT@5DC%Hm7it}j4s@fTnI{{L@$;H3*_d&qu}HT*5=j0_CWu``ewy%!h$ z{{P?W`vW|0^x`nMkI2#K`k}e@19&Lq!%H?s28I`>{(`odz2M*OVFap;e+0egD1};I zDhnEQ+U{Whk`M`ckq?vLZvh=!333bQq~cBwqZcWE|Nnnc4=LtmtII~jn7w)TS6@Pp2^eUaAb zrT1bDNC1{%Itm;ZUTE1tQVb~b*V#c*Oxgrcnwd}lDYrmrW=;V(&A6o|d*-ENCMTBU zLk@ZYrxyk2`2B-USL{<#kck=@-M)bP zR}6HHPV31!KJa?IA1~hh26?$G19VOgsQd=ice~)KRY2{r&>ulBz8675xiS$I_307rWtl`N89_V8@n$^uCzz`~UwJ-M>KzJ@iNGrP6rN zkis9x2$V}P%t}vCTM<;J3Ix2+gNqtN-0b@YoZzp)#gQB+2(sig*A6z&0ER4RUV{ZJJ8464D zLF?OI?D+Zre+I)BM#vJ2z!x{*)@y*`k^?eTV+0o!$^b>ti;X|QRo=@^P^nS^Hsb{| zWW7eviz#r`8d*%B=H7M>p1>FH3Sb_Cnvn}N!xdzP0oaT?tdQ~9fENKsW-xdAf~KE% zf?ljbH$xL@255%&#hV}h|7Qp|Fu?qB2d*0Aj!>vy(%_;{cRc+8@ylM&Vv-dgGeDyg zpu$8j=*0}UYE@8j;NS=QMF}p-4+)Qj5Hnuayhw)|02+b~co7a)s+z?D_sGM1SYSX6 zNPrq(&A-hRv<+V=gW(rwfCW4vy%=Ifw=YLpr=!Y?C*MIO0YB(4c8;{p0F@V)K?2|= z;7&_$%K=iUfzF@OjOhnO0eJq7CkR}Lfpg)6AK=Dtzzg;hP)6Te5ChcwD1jORF5fWE z+c@qDT6O~oWZ2Re&=fPcZ^RMwV(E8KcygdDGVtI8uZxfXjf8;?oI@IU(s&{A{r`Xd zZLX572TGKXBy>RaA!z7L>&2&U|Np;u`wisnFp#%@q;&@9yto4r{r(M93h;0Dl?r?j zod*k5wX78W?V(aZFC^eX!l10w?JJem>7n&vA=oUg9iWS1UakghCIbg2$XtyVEg(tI zKvJkcr{IgWZ~y;i@PO7hxPk_3Ubw-d&c8eK$8jdmNi5)!7F<0#nt(=hTz{l>dzhqk zdYQd&2RYIRMCg9|{~yx9}X`~qrNL(0`Rxlr%$xA-t4`r!fr zFD@Zuj6fsNzCS<{7cy7CQ#&(S50n~01`17DFO`TuQt1D$pjcsfxsRQJ;WaenzlMsf z0u2N+fre1QC8-O-bWp1S+|dFBUT1(Z1p~-r7P!e1(anH_$St@q)Qq2BAfd1Wbp9*@sK|m?_7Gj+1*pP)HU@^5XFwGa zGsH51fEOxo#af^Yy)6*5pyfxvi#6cm5Kt4oKS+NMNIwh2!vaAso@7IVp@j8iAxMf9 z9`q++Qv5BTZtx4qFaQ5%F+ptR33#yzCS8&RYDNFx2M6F0xM&D+0OrD-DFPmfgGS+t zrJxfZUTZ>zXCdLV32uTAbXXab@5EkIft0>H%fP^p#SU?VK)?%Cm|}<M*kv7lsF zIt7#rIl6uSbT)#88meTrYC}AgI;_!0rk3hK(k1oAu0at9%6wn zK4ihdNFCy*&<{Z`X2WbQK}~U&KY>aH%`6VM8yn%;g+X(qV0VB9q+YB5D=h})Tqp24 zt{2ljfm+wF#M|)+?AGQ(YM|LDP#Zq%38>A$!M`80Hw2oDHhqF5qe2#Nwsif$zuiM3 z@C7&ARw1NJ!}G!zWa$gvPyheF@Bk6cpJ1&%U!Fijc$RoVnhT(_bOhjDHGwoZTzLXs z{Dzw^4+#{I_GfTGt{qIE=F=Tei2#~5;^}nacyavW|Nqc292w9UjskcLM+G*9!|@s9 z69JUMdNwok9ve^tq|+-hb|3%$hxC>pS@0d)RB+1!G^VK+@M1>>%q}5t zlN9Ep2cR<}K&?98KWW{8S!taCIWNw90QGKuG*<{PlyL5JIXs)8^<=4dMimR_tm(tE z88QwWp3U&$nlNb1JkN`LAO8P;vGW6p&#GXym2yLTCeeDJL<`bD2hAIC1if&FJ5wkF z6x=VCeE@|Z%gartta_gmVvSqV&s+yW-otB z4@d@4R_sWJ`CloE2^XgL>FGw2TqB=-fHw!K*2AV|% zl^+5@FG66VB|;hepyd^p!TT{;UQPnF%%;8n|Nq5A5Yh7<9KQVfJuF&JmSlrYeFDXj zK)?$jm&a4Zvk+vz zK)?%sm;#vn=iWi$6?8HJctL9JTF^i`3(S7jZr3lbi(x(x2zbE@GoeHoGNW-3ymHD% z05KC1%F*q@DA4J|@|p{LaTTcA1h;s>4FhCz&1QJfBmmA+psw~0a97*$?f?H1kXuax za0668(_~EG(ju+X1JqoCw4q+`g4`eh()d~sl(RWN9p6Bc7hm6i#)H7~yJD>;>oh?P zET(`LdZ$6v3=98$&=n)la#;$zNtfj%Gb01T>%#8PA4uhR-#t(vgj$ZjdIO2$%b=$J z+BdLL+4To_G&v>}mVVVBl_hwF@x|5@m@q$lF7rhK$dRDc9MI&%09T}h(nbK)FU?2b zZ3J*4iU0=&tYl+*1IuM%ttU%ymaz92v2JtR+yMlU0CNH*vcqbvon7vpI;vIl=rPN-`1o5CM zHC}Xscu`j5T@@_v-)uouHLL5R5U-L6eyf->AHJ4&p&oTD-Uk zI@7`W&5MKDh-d!w*AAuKlD%YFP2)+=;|NPpn?k{AH(ar z=)=XJ@nX<;GUPr^(D4@al8v>0K#UUS=Gs5Z<+k0vfBviV{%Lk#cx?#km+_=^3cS{X zCTE_sPOjIA(Do!~M&-50F3?;=w<}l~`wq};im#cB4}dJ**X+P>qS=ArYO@2wqh|R2 z5~%&4n?Fl9nrr_smhik52Ng45!$qLM4K|#82ZI9x1I#?A|C`_7UoQ???GD-80q((q zrzJCDj)2c&;GGQ}nBQ^&R7&uG%Ow8&fuK&6R`VN8x-ko? zsUECJ;I(nL>yOX;S`450<5)i!PGI=VA9Vn%S&&5~V*y0dVwff`h$dLuULfejj(AvM z;{>YP_j^dRo-C2dI0Dg_1=A=9*2wW%B7@~9*zo}{neWFzj^}uJ7d+qfqq$0esni)_ zlvwjmmJ+E91Beben2w_m9j_%aQXn!cFqzd5nU@opzzc_9^Ufl0H&(vLcn%s*s)ctF zcfjQ=Kx09mhB8m!i=a4|uaqF|ES`XjDGDj?Am^}v`~>d4w!#gshZru`dY}Zf!2ZM0*^mYHEUfdO^W&h!GBN=f49CEMCJi(B z&@oV;2|#SNXuVV-k>LVS@?!?ndGo6bxf#6VZ!b&>e+y`}P`B@o=1K*IQrV0J5dFC@{UT8PpdKTr&Z|;jES1VQ z15xD;Q}ymB$WI)v)4N@NG*>7vl}cs&fGAOcDLD;Q;sUXYxl}4c<2X2E7-33QK$R#$ zEMh5@$cTU_xi=jeGObW0d7yb&P=pHvzW5je^FB1fr2;ZKAo`ZU^!bAI@w_(6Vh060 zcVB7xHBx&$}T9?}wnbQ!hb!Wxi9 zVMYMN_#l|^KM#TY$OD;I0G%W8auIkP9;jEq2U;2XA>c)86g-?kSMX#pgCYo=`mA9x zCGL>)A{7Wp5>lBbK#i2o{8|UGm+KH`oSp&=q9U*}L|((f;{`lC-au3?gsJoZs{~#0 z$kTeML>XeOUhBzHi422N;GipmDU}5)<$z5GM07hayogkWOb39r`m9xkwEMvGSqa^c z`2f(|Ku$M!J_|kv>R6BozPNyh`DMi9F=W0z5OnVY|9)Q{>w`61Y2cPn=%3f1n;dz- zCoXSCo`nXrM-b}kiBjL~%3R`A70 z=DQp~ci@5Ue$m;{z{J1+nznwexbpxri0S*~wb(8QGxSRa=nnB0$>9C)EH7sN`~M%h zEVVFu!*;8hL)5;s179f!S-;5fBJtn<|KLG9(0V%GKgV4dL5mU?UPOY# zL2;UWhym0r`U6_OC-A}uGB*yo5)|C@`vGnGfo~;l{>4ONMud`jcbF$`!nbUpd&0Ve}PsPyZ!+!2?1T8$Irm86|;@wJTuBWCb{xsJ+f_tX%;b z7%%aK?6VNup$odKtg}f5WaU!OwDao-kbQzXqL3tdz!LTli7iMH#b60Fhy))vtwD^6 z0!#2hQWY=6vET)aKS0rpdN&$q0b@1T2vA%fZ)suxooEE=h^YMe|33@79958iKiJ@a z7Y#k2*&ooLEvTaM{n6Rd#Q}2skKdqv)}L-B&}=lQLq5er1SEa|Bo5jw3cCCS)X8WG zlmLnE08Qk+ECAiq2#PGwI>bMqL171JPzRMK1C(?4!KvV02rLx{f?avMNr9h%fum#s z!|McSQUE2E?bwxNO<;I!2~7_mWfQO~1DPfS39fs;K~(|E%cr2JsQsYBb*KtI1H--3Y^<*h!F__`jUa*d zsm)BFCc~d@rsEADf$y6f8DB$!`FImZAfWsj!;9s=Q1Zf!VDwM`?SNtMpMe?*8*wW` z4uvkP$~ppPz_Z2;a5IJF<$chCXi)qeZxn!~3!Y!#xIXR#9+t|OpwGbYLLvd0UlxG8 z>bs!RgQdB40X)NWLX86*uLw#Vq2PpwxEvIeYMOsC)fR&WeVkZ8+~X}BF;bv12fQM? z8!i|k4iU^sK&Z{U2)eqww?!aDmVqJQ#p{KjM8uJm0E&k|7Erp*JONfQg)2phfg$L{ zNr(#Y0f&&mbkMl@WO%TI?=%4CGv7Ba_&_u2pj8(v(2~6a6c8`I{{ROWEW`RbXsTVn-_~fxs`V2iln!pECH7Ab=)Vgp+Q%`__^)6y?Duz{MU z{M%jM1iTQfgBKNnENPuhe4u=P;5%sa=1;c=%P!Dfm$Xj77i-}{#~r~b>cwi12sp@( zJAg(`7+%Z-iGbak)(ti&t<&|zi(+I^kO$H_U7x&&1x*ug_k9tVVO$JLJFG(dpoB3= z43scHwMlm%3wXpK`ve1cJRq&Jg$tzSh5Yyb{~;*?6ibbPu)vdtr?wZn&dPu)@F^Z3 zD_^_=P07Blhr}!>75T#Sl!`)P0c4N`Ot2&rWKaYm;9M4kiBmCw8TIgN^kA zyJI?N7TEPqcL57%#SUm?vMWsGg&hpsAeAj)V3oNb2S8GK@{M$jtTl<~~e6gDew4#us)AbBU4`@?MWDQ6aM_Q-r z15lw28dUXt()<#1`}~L3D3>gzb%U18zW`k;4q7%3YB@ZxK2;k5GRgHvzzch*?b}ZT zf)2WWVSfW`GAM_4hhFGp>3XsEE4VfPqucjFw@70U=%lUs7aYwnWgno*rh%r5U$=mY z7Y~->jVa(J0|Ud0y05T|c)TG4CYT8l1g95}^P6%&Srath3<;*@Lp+_KCo({j0^P1B z0y2IWPGEQ;CJas+U{SCeAZi;AonZ!*7|TTv(hxT^9t7P58~CDjE=Yz0+_m}=^g<32 zO=+F3H^6cHCEx`&T<8k4VgofzSp8sWOX9fe0Z>s6ZbGGXhTeHG6LfXJ>pZ0T?Yb|z zYVfFNTBq-w7ujId4$x{2)G%6!q8e1NgHwB2r|X>;wqVuJjQasPfBhXa>;n$4#zQ{b zpfq#@?D{(aFLbYgqav--^$o5z1pj{D8`cMFeLO!tpW@%| zdZRlOqKL;Yt&_*;MLBq~_)oVJ%khQ+1xS_fq6j1i_Qmn05}05tNDy48f@+?L6`-_W z2^Qn&be+>!I|tTq12am38*Asl8g6sI4L9}I#f`Odzzw&6*BOvxv10+Ge5?Ugey>6E zwy&e1GNATAT4xhj<|0_e5h?>}M8IUWgJsmAGN6V7OlB@v2HJQF0MEOEw&8XMvZQr` zO$C>7<)8^@uvZ%o)hK`>3?!>DbuG^fK*W<(|bW} zhh=)ND`1mBu?@}5Cq6>b0!pSAu7@duW%`AnDd5*FpiJxvZZe==TMg=>m_c$QDCr$< znb@EYO$zBBVHFKX24p}>UK4bxH6KZ_ ze)D3A2&7{Snq8=v<-oAxKjdt^mRaC?{o+%>y7EsS^fY2 zYv&!1B-aY&neK!nvtBSy9oof&sFd6RNoZh|kml}t$h7nebNI4ZV(6X1`{W@gW_^EviuOnELF~{UPz^o-Oo1=>kaQe; z#L(L#3egezqmyOgiw*BVO(oE2`25?!t^|!^i3Glo@PHM6CEzu{FxeOSC6F|;{X}3E z1H>7J7X%SCL+x zroa~)AUdJNHfZs&AKWD(I~>4;Kx@P5|Nmb+dk5+U7eR|`(8^^Mgvwo@CGcsTQ^6|t zfK_^AfZ_tOdij?-%y%L?LBn)uoxNa{lfWwFz`KWGy6fKk{||{e6UfXrC~ddafSiyF zQVxp4-a8Nf|9>r%);$%(fNWO-Gx_(of<&5sF!A@!VFevoKV>y&qK1Lth1t9R|G|2D zKt@S`jk=W9IrRqAs8$dIvOx~a3GnX++mLw(6q4`=0Bh&p4-O*! z^%r`1CU*8#tOlhDu*~t6sR=L#Yz0l}^6v*5e(^zPtH^550r?=3tC;CE+ly3QErtok zC%dPDgwi^DM14RG%?IfM1p&750cx@J1^!+x(6GXO-yhvmLDqM(bb+oKLgKv;V}~?? zT4h%M|KB-PVKwM>5fBMFM0@rB|3NRdu!2>jb+$@?e6Sr%1$6hKDC!3nt2~{^#(+Mz@|(E85Wc!_ae0roF3CUTTMU`kbvmzaRqrZkbnDBkZ4dh zSXTfv@cFk-@dZf-L4&Qkrxg^OfiGr00GTDizaJdRosdv|5e%AqetG>L=)ixFX#rX1 zGphITd4S47P&WyjHu$&qIDraE&~7tuuM3=*x~Fu2iq@bP_7IaHuJ3KtSpENhKzA?5 zE1=W(K`EjeVq3tAE#R|zcsg5cK>pd@3$hZXh<|%aD9GgjFY*dNPUYa=egfo4kax2bzV_}(E_UR#ru086F}4IU^jtPb+&YY0{g{c@KpkHK~4_kK*UAw z6c11Y1!XZpqn&>{G?l!#m^n@Nb72@?suL%K=nhboVrY91-}! z7wW=Lj&3g&XfE%B)U+=cK`!iV1r-^D(j@=(sUT%R-L0S^C*Z}myCA2Ebb`4r=luTv zA3PtN)(I|Fz=anmH9-q65EJU7<{zy5y`Xa)dm$+bnuw7i&iIzjOkf z9lae~>4NfM^C6C)9iVdc-~(9Q7Km2Yfs}PSf%d?ImV)<&^Ml8s$I$6JA)jK%2vQNM&^q?1IGN59Y2c!bhut2Nw zgIt$fx4fdoR!uM9vMpO?7aYzxCWPC z1$W9@H=O+cAKU`zow@*=B3=4Htr8CY?X4gU0lmFGw?OrSE<_mASpnCmpsWBcnW2?0 zr~>ET4=yO0e=_m+UISevg{AWC>|F!4aVp52LA|Xf(y9fZW5w zzr7Wt0}?MR&=v!#QvUs}BK-To0ib=bdn(ADUY4eS7nhhJCP1Wmr}TpC?3}s>><-Wo z$h{zDAVf#di^UM-kkTDmvUImh1dZ@@w(d9ys{TPF1Ahx>pCzbq;tTEspblX3?*|9C z^+EpL>!7`!-~t8I3jl{8sNevHAcz4CK@byKJn-)a2aolsS`TRP(%lQP6EqS58aIS0 z1Njo<^lp$Z|4aktih%B3P)Qc};tZtXhLmKlr(`j9PX$Q?y$CJ^D}+d7)KoS_!3w{f zP$R%SqAB2r4|>r8F$W~p*#Z`OvG56~NZ|Va|NrYWkaw_+oAU3U3Q9lLr)r(Sc7UAS z4UT(|Ctmo$t#bX*-O~z5W0EkdLVt9&Oa+O(FaufjdJ%eLfW}}uTepBC14J_LxBP|e zqQx2+z9Q6%36O;#Pk_9HEhdVlf&&;H6HbtJ10=waW8x&Ftq+j^hY~C%^r1$8LcM!R zFC=IF0+)dtAhFICu-FUn$Do+t1;s=%?wAM_!4(b1r$C$v@=AA4E6AR}7n5N2fTIB< z_G0}bP&Z=fOO8LFWo)3CIcWL@kG?_bM!B?ZL>5Tv2Dg~gnn7c5U?#}f@I=Ai+XOz6 z!u3aYFQ^291t;7MdJu3-xPtmx$54jw%R)nWYGL5KIOOaqw@ zsf2v3pq(TB7VueA;DxYGED)mtU+~$$rTal^qT$k@0ieJa`>mnUCA#n?(Dn|{AW-0o z#i<}$I6&pP7fV`aBS`dx9LUM9ML~j2ETA$6toQ{xNEpKeL73Z0#2^}w2BV%n0M&os z@)l_{>O4sFxq9mcr+{M z#jO;GN5Gb)bvA)L5(={EwJ5|AP?7~Jeqjd^1})}5F~P$U7EEFg4aXZnt^y5xypRFu zfO!w(7_cZCNc4rkga7|uaDxaC{{`a%&^mek?Y*G>Xy6Man5q1&prgC9_`us8z>~oo z{M&s5WCCBvL!1s;q7L32bnpRqdteBoNKgg?gM#0SzKLMJ1%L-IvrmAcmw&qpmrTG; z&}2b2Xz?^hw~v5G;0u+jAeE4&6@UM1P!RKB=z6g(8Ker_Yy*$CW*L-d^#+h$23Se<35Mo9T%dxJq0|WyZeX__e8|wehXW$61rbL| zF5B*b*8hNNXHahz5`~lQ{r^7!G&c$o?rs9bNWhD?7SO2TZvmZ~4r!!x_RauxSdlVW zVE0r|E(=0d{~y$q04JTa?unoQ%Ct^!-SI*bWI0%(@gR6K5nNV)5>4n2{{7(g38H*? zEtdw`2Ge{HG#&6GtsC6OOly9{2puf|6>-o)3se<=mYab}mu_$isGDa(AcO~YFwca* z7i;<p6Tpn;&}cR^(kqI7{4|J_r;g&0d$z>89dHfTQ{Y#K<|E(>ZJsILza z1r0<+-UXFIuK)l4f2qd^x+M!#)^@gnq#+Rp4cu;U$rSivr#U=~|AE2`9Ik2I9gr{s zw>MsVy#p)0SiwOC_8zFf04?M&+im*Z)OA{`VW&~OF~RzQLbnUbpdbU+^5AwWv`2&p_ZLnOZ2=(bx*@&?MF4ju)HLJ>P`d*Q zvMk89d+=e*;P?rAAsJ=P(0oJya;U_ozugTDO1T-dU{pN-5 ze@*Z~^%J-m7#I$$hn$rGT8pxEg98I-n2te?fnn_i2L@2p(!kEZuw;V+1E}HHAi%&d zdxHZ5$TOhMPu~Uy22i|#*o_+;7(m@gkU13_92h{u9-tK}86b03|Njq~TnyXbzyKO^ z0IBia;J^UtqJh{hAT{wNxdle?sSG|KhGBdvLvd+R8t7h;_|&}AqV!5k5r(u1klOfE zhLqfj_=1eYc<@arU`~EAl#^JJ7@wP(%aEIz8(&bATE+lU6Q5SWkepuxISl|jUi{+5 zEwuIZOrRwp9NmJ=RtzPeBmY6i0R+96=%5WcTnPUj#s9LOG6uybd~@a_?VF_*EsK<o<_k#9I?L5KE zfO&N~sITa%5b(k-0i0MsEfeUdDCoFs3u9=8DNzM4-cIYB`U13{>B3FuV)wMp)+Zo= z{Wn4F8wFTjAFOEg&HvzQ52u1v%mt|cm4U8bK&w@Jzd#oyeE}UI!oS~D!TLh23+MQ_P&4$SWs5sgREEqY3OX}{Qz=T z9++Gf|BI;*P2i&_m|h&e@&A9;fBx;RpboDD+?E6tP_I+~I%GkIzTI9Izh)^ za&(4104H0WfEVqM*Z|F9cKdQP9t5pI>hyil9m)fl;q9C{<Wpjq9{)(M9o zEg8^3-rg|1tpSH2qM182|pFuXW<4HOZ{u*m_P zz!&T&icE}+8D1;_E3(Ug%nN|5c%+YP(yW=13@_@ziX@M_9sqL-uEAyl)UJcqErD+w z{Qv)d{fncJhEAvJ5m;uMa2Rx+$TetY>jCi$uKoWHZXIA&Fq6Z5N$R5wM&R(#(9I!gj92oz0&}i14 ztDunJNb78EI1IHD+-_9pX5m6=HA-~z2n4>+ZwF`XfEU|-LCb*)pwV=YlR&xuFlpRP@tW>^8Y_1 zUibUz1isLM1sZ=#8w>P=p0rNvoqN|eGqn$0`~fc3Ei>O`?m0&E`#R0`bkaa90|i9pN>c)<-}bh@7Do(gg))cX*t&q0DG0L4CtS2shY zAl_F2d*2^oR=|sG@!(+VbUo4S3tIbfA?QUjRDHMWnE>$h!bMPl7o8BrAlG%aOa&*e zWtTw35lG>Mz!#oSh25big1TL=1iY|-3cR=v(+Tc$gA(D3oJ*jA#?T+2b?a{eUhsy4 z9g^1B+JY#jdO_^K7YDVVS&F~qGidJsEcU@lVF}<&3)lce0sw37hNgjaP+9){P+>^e zxI^3(@M2vYST}Mqm?|~mkXd4e%J5+|6it%PzqTPUkU{^LgF4=a)9zPqR2uoh16k6LAe^97C;RQNGasr z1U3qh2z`IRQlJi03X%;WVQ&!wQT{?7!az=bpfe93rO+pcr2#1RK@#3|s1(T6-M)}i zR}3*L;Ki+Iu<6LD4&)q2lA88K0139sQybrP3 z1F93A(m?h>ys8V8f_NX2#!f=a3V2}vVIZfmzYSo=2f)+V8>qkwW{6^t>tG2?;T%!| zI}B9_Phgv%0xu$AIuWJNv$H6rP zo=~A70|^3cs4P5WAX(-J#L$2jyCDovB5*ws(CvF6@Wl_v;@kkxnoMwo@*FDg;$H;V zDNvVow)BE)BZ)JhM$MU^Zr2L|FLp!KLMpZ^K`&N81zrR~Y(i)T7c{p|g9@7EpsfIq z<_RQIL0p*!)e8}Wc&G~E25?k@8Y$3P9ujD_a1Ee50LgPVVHz$#TQ#6G-0cbpJRZ0P zP)>wIw**YX8EA_M+4|eH;2;Qqh(VlL4%2V~v}6<5NLT<~ zKZO*4RZxZS0L+96ybyp`1Jwx*y}76U|DUi6H0FxEiP-#;i@*0gc$Df0xaGpXAKV1z z2Q9G#x4oGU!J4v+5PLdZ?_}J}16||}9xVdJaNvur@8J#L7nW+WfV zczn-0xW~I)?*zP<19dlK9s{K2g(PSO6Er^AG8N?RfEOJwJ)oxDouC&PD0)C@UOYVk zitz(M-L6LhURZ>I!vf?tHK^ZEmokEu%^v*03>y7o1FywB0&Xw!?{5Wlr@#wpdqJHN z=8N5~0^p*_6cU_Z-+;$SLAFA2$`o*>4SHb|3bqxJkb7D|3c#jzL)w@DFBU=-ys&r# z8qnkDY(26ZwEF49a?s=}h-BdJ*~!4bP|w@E7bL~N-?j=op9JoDWnZj-bv!^x18!{A zTWE-$2z>EwCD;w10e*1k+EqgMNTIv?IA{n1-090cq|xpBgnzq;BRDB{LmmA>0%qcc zpcivsCW6w(*rlzYPGa^64M>Z_3pIoeyn(v(K)?$Z zn7Pn6odPo#T&aQ6fgrL=E3mpW4`$+ppckK3K>WHL>QX0|iQxG@P;|W5e+)EBd=x3& zieOC*2{02c1ig5&4D4Tcp=ts%5s?};9>GYrDOl4j2h7|90WW%B=0el$ol=NBNG^>$ zg5**gtS;U566*I0K`*ReCW4aXoxm4eFcT3jWe2+yw0Q^`Q;4+nA{wF`GR*)hYL*3n zT@?UT4o(N)l=eagt{iLzD7FJ%um?hvznFIy8p)thzs{)}z>y3hkxC|z6ue}DmLurC zgcy6_1;UphOTkva<6{YQDe-==FG1>GD1t{%pd|=;Oh8;;2Q%?NzzZgriO`q`f|&>| zK|tzXoIeDLVbCSR{QIFUMNc^(n*(2{!OXo7^kUT#RG0pOEN6h0cp&vJ$`65J80^x_ z6W|069_E1;cOc7yUR-<*_5Oi?7ojjip^jY&GZf)iC6HsgL!ot8i9gsCpu#B?bi(g; z-#4H!@E<`hs-&R92qi|)IRWtcGdHk$&`L6p882KQ76yPTM0L1fph6C_F0{S?x;)7D z$8ksl6gRwRw+3gGNC_tEyhNK`Q0s>y#cn0@)w=cn} z^%f*30$xm94DrJL&^NGl58px15OB9E5C3+Kz!w`_!3sdf^>;G8cys{NoZ;c$&(V6a zmJfE)&5P3q{{No<-96X~I?3S0&IAAd?=k|f9-kTl8X#N&QUaRvXpK1xS-RZ|VnC)o zz)b%AQ$ZrlznJ)YLF)tf_k)#o`|>pJX#`Iymn1^fWF7)-cI@`$>7BwDBMvHcVM;rv zG=f%Fb%*lsZwK$A19g%>#&(DDbhmVYH9SnvEQOpOa%4Td?2Ff|TvH5lgn^@iGI0~!x)1(Be&#)m;` z^A1ARO$BsM1sMQZjeYq4|9}^(pu#T>Li7e?#7FM+?(PM-B(Qrbhzfeq3RTn%_C!E; zFUT)}FY=(mFIu5`U&O#fiX~v#N)j}UF%=Y`K`-7qf!&wZ*$U!!LmZf4Y;0WI-3xMT z;0tM(0ZBK&WoHn~y%1HcAh!p+_*wuqC*Xw*Ox25`>mc<4ovkmx73!Pipf&IyGO&9p zNGPbg737xysLx(7!E|;{1$ib2>a`cIz~*oS1-wuIvjl5dY;p(DC$BZyfsnAG976lrRGLxA%hl8Ti5#ye@+WGzkYP>$by{Jvao412M>S z2VA-rBpjHL208^+$_3(8P%3v~3CNf^b7tj>uaL!80WWyGz_OstIgTtZ^!EP$pHX1T zWe!#R;;k4o7Wi90tq9O^44&?Zp#6tIFD8mZrgy41sbR zXb)n*3j;@(U1^<-AfXrQ_J9g7A!uPS0W3BPB$mb4?aRZzekY4gC#E=^QXeDr?!_{CuE2HWr7WHecEWbu$mhSzC62+-w4q+zOHextReZIeizXt^*hO$6KcESr0W~ z!Y4xz!m6_3|Nj@?cY?0f067;l#s*s7 z0v@nRYd!>81_TmI105vXd;qjF_y=@A2)tfdj}uhPgN9{))3d&v()q1i-i+}r6 z5HqN|6{J3(yBAcl1-`g;3S=S=a@hy1PJ3HIL0$%Ls0N!7_+qCmIQ4@%2cVJ}beFN2 z9aQK<;EP!ZX*63Hu7GR-&p3cn%yy{R(4^Bnr56-6K`(BA2Vg*ptU<~;Tfo9EChY+E z1Qc}O@oPxXfSE7KA>M@r9e9)rA`fQ12#3kP=)DMX0=}R-4ZcE&_@JA85@aHdpaZ2o zXhC5D+NlFJ8xeG%ToUwRE_f&g zDd<4LFT%HD2|92Bd?5o45O}HshZiL1AgS&TBshWsUIc+z_=0Z2c~DS*g6_$3(D-*R zhzjgRO`6#!K#EYptGgGJ7-7}yi<{>_DmXe@Pk^hsR*)&+K=joJd~wDa9)d3nAndfx z);S=R`_WoPkk*qm*x6tYg5;4}MUb&;X_)+rg<$8SdJr|6tcSP^w44X*!Kompp+{BM zagg&-J%}0vKhA{f8(^nx4}_(BJ!7?gxT5g5?j z3!(yFG(i==_z4~u66tJ}S@Hir%sR+sJpS#ipyCO%U2p}c$$1W0X<9efX=$BPzksTz zqAj4Ud>|%VxjdxD)7feOYT<4Ns{^&AKu!yIvC#tTT8KYDDqunQ;yHN5HAldUdyt7+ zSkmhSnGOnYQ0N7{D1aGoAfUS!WB@EcUo3+eFc)S3D1e~B1RBrohR(y(LKQ*-1(MUi zneIgrRO$sMq?y#&dH}R2XDTT4AR|)HH3^nbg(${DrU&GpQZGy)EtJmIJ>Y}`Y9<6` zF?3G_aiNAmlK&gXGVp+Iux*f0FzCF^MX1z^7xv(Q10^G{LC^;83j^>dkqD$?(%TAZ zZUkg8boYWRfef-iYOxpXP?Nf+g1m%ce-2dYg)qd$0sPw`2Em%yr@_N9BAwvIHzd5k zB^MI&Mfn+UhJuy<;F1d>4`#jyhsnR_Jq=Qcn#WNy=V@?N2r9%tDUp9axYEN@bhu0RP7WJEv~c2w@(FW3hHhJH9`Yk+yxJl zh;)LvFPD4+mwKS008}1L1(jMsFHXWt1!Y4}krmiI6+{KSkcV`Gz~xaZs8kGiF$bpj zL?E<;>;{*N0WUr!fgKm{A`@mOxI6;KcOYzECA_%=k_&iYhpaTM8>}|16I@KZc(fi= znt@7;pl)!{7Vx4U(#wLCM__fJ;soThpcjfJUjA7pA7Qke5^ zZv~kS3Sdw`1ipA+3^f20yrA+Z09K-l!3^Mq82}0((8$Mr@J?V0&@4+Y$THA0G^j<< z-3sbrfaX@f=fAvYfiy(|UYt$@TLNo&bhm<+3W681gB$1wjV~5JmA=>xshFWn$nIW{ z7SOu(^Xov1tUyiyEi(gK+Y7c9e)J75%-RsBS+J3wUeKCE(40410H*PUCRFJQ2bi_s z7Jc_rkQUGa_=t6&Q7gDckT8l#Fo75MVe6OLpd}u7modbhAU~k!f(g7>3DXq-)%9XK zq!NV0doLu`peZVg5n6S;__Podup&@Jkh-cHTyq7y*am5oK;-zhLlRE+R8SlvLJsZ# z4VVMu;WN-+H-lGof&w6XEvPvLaR=0TSlocudV-?;#Un`774QN&pA1t04tY@Q39be8 zam``kkc0qEM4+X(pVxren9w8v4pDIH0wi@~4QSZ+ z;2kN@u_EX&%ZnhWdq6qA7hLbWI1f_{O7NgT7x+MuDpc`{ISWAMiFCF~fEyQImV>N= zH!eVB4JiMBi`o|p3_xnZ8^)pKPj@epOX~!eti50|pt~2OKk&tC z$bJO4abPXoV8a7m*gLk-e$0gv)< zyzp2Jx`z;?vI#Vj67XU=D|A?bza;>4uL)=oJ$Q2w&+!%k&?qQqTwy0@T=n2XhVD?F z-WKpta^OXw5RuLn@SY#oV(H^8ye*qSy>8;8YCCzb{U~RQmq7_^`93w`24F|1V5I!vqeiKuH*MgfO&Yn#J;>Mh}`sPC!~T zEmJ{#)PM{I28N0k>!E9+KrKAbaTK5~8Kia7(+cW%1-|H=57G|VmQ^1OatY|X0+71E zES4AYFvCI1Zo%_EU|kTygW!fExd>zvyq|0UF?>erfx0wsE&+vP;ER*GAUi=-IfxGm zC+HvwcxANrO7I|x>krTf$_?;{2Z)4^c>F#A8u2*UJryJhA33Z!A^1$&Hu-_OM z7#d#uTLCr<9Fo0Pz=nZHxMAzShF$7z1&M-&Pe49@u>+**rPROw|1-|=fUc+R1x0P( ziv^HW3L048-`)yxe83AIMrhJ3NrnzZ;n)TZGQ#>`tu4sE&3hn&Ms>O%2VZ<}yrmVC z9vB!L7+!dT2Sh+FJ`Ra{P}+WB3Ubox6`)X@3R=+)x`LY(bQV}ZZ!bt|;ET( zEKX1@3Y|Yd$^hMv3;vl!soK&3cX+j59DBBy9T2j_yv+93Pp z5#J|S`OQO0^ZP#J{Jex^Z;6yA_%_43Y`7G)hc+sbG$h? z*ubTM!;6DPU>>Aj3)%|@ZXUikwG>qEL5p!nGm;&$?-Qaji<5slSY_agcrCCApa_ID zA!Rm!(h+z!Hn_9`CB_%+OCb%K&>x8A*o#Y$J_gh=CXg9th!vo{jNk_S3tNz5U=J|UMzjg$odTs77LbEL&V*=uu|pH;Oi-H|WJu79(v4te2E2%YY$*T* z6xhAs()IchP|^o2m)brR5(TAy{Xn;fgRVLRUD*q2XMswj?jCSP4Sd0h@Qeb(i|>$n zAL7JaoRFzQP>8=^e05Rc%0IMKvUx;Fme=a`iZkY;lN5G47C!zj15eV`RI81_G zywHI92h^be`6uwj(hX4m^g!0mL(J)fnDc^t2_*bcoE!w{X@J6Cf#Jm#NF5Jx1&Wh* zEyi&2cSs8sq8Q0x{+JHqfjA8A9&manUktiUuyHY{`U2gv*5e8qvjx>Kd)1*{gV!*i z>MIaZ!+Zz@OM(ZSkwz4KL90|i6;aTOb2C6Hz?*zyK~V~?^B*Bb602wuy(hJrD zF?uT8Xe9T59Ni7AKwlI?j0Rs#1gXBJf=c|L7hDi?(>lR50H^?m);Qqmt7j2XjdKB9 zQIao>K?86I^}SgM>k@y7;Jb>KU+MAQEoa`-33E z4s`c|MAJH3c)``z&xN4oEa-4&X!Ql2@d$eH5Rytk{W<>ay&%s7zUci0P3I-ah}jb! z)Y$>>mRV2YtQrF2M_~PaQ{IlSo3UxntLf-mBtqG{T z)(i3jC|@)-+&j)5aU6quzM=R=&l!aAfsQed+k7M)g%t<1^V(FZ-J~FU|?W) zeHvUsf;vs$<5EBj%&9H#1db?po*vT8aph^=GXYeOG4QwiU}RtbmHF6OCy=R3(7`#@ zhiXB$0sH`oY@gx?I>Hv#p96agv=E^QWMVf@N8k&AKv3@EfOfdR3QBppr%VGW0Cnpc z=7Tz96OXs*z^2ji=0mH<7l;1;e-QwZC(2Q2y{#Y}0iens+<68CK6tAo_#EnPk%@Sm zxf0?`&{z)0kf3g`djehvg3rki=>&6Mf{r!p?FA`78e9Q!;p!hw0(lpz9;&o^D#&j^ zFI*u#8Hib+$i{Z!9cW$3esIdRzF3zcyQ1So&|CcBK{{NrF1fvxF%0jYaHPQLi4vt=sS)?lcu;BE$JK~&(218C~zfLx~yvh(#+Q0Tep z1a$j~1onar2zs&c1t>rSvbexI5_@|=#s6_u(AS8sIxY z;FYf}kR?x`Rm`0&y(>V6L>-)i-*?@i9MGfpn-4I8wgAoptz+Eo`vbJ_>P^s#hYH|W z1s%}Ezuol*Xb1C~z!%brFwqa70O*EzA9VI_AjmzwcLKXZ?*zU0;s;g++E@&8kKr6} z(W(OqOYIBYJz#HxJR$+o7z*{sZn(w|FpWQEgHnR+e^8?U)RF;5?3#z5g&DSxz8Gjk za=-7J?kT-X9)eC&RD%k?=!Mkqphg43hZpe>vq5V?-*or1fHq&1@gRrof^@2}ZLmayFerF^K#Nup!P_Jc4k5JQ z-2)f>0QTya?v|+_cY=Ko@M5knSW`Dx()UaElwMFc1idhYbWOnF;QFPzrxg?qfiL8s z!Y^7Ol|I;%4==(YrZ9g9d%=V7CL{m;&=08A>G>jC_W^F*F^DdRbsyl?t%nM~5JR!< z1!Q3q$hx_Z7C7kqYDlQgnFR~gFQC(qK%vSx3o?9iBj`mPTo#lVz+wJ+CMYpX0(EW= zebtZwWl_)}L6<X^<+>)b%#CxcO=rF5-)1iz#f9ifeQKAAoK9_QNYLA zb$~9>u)fIOyB-{e@a>QLWWmNk;t-y3e!xXPfVV$`&v|*lzg>he=!FkBQ?Y=GN`6pU zcoF>x)`IcPSnK{!3cLxwWh%(80Wa1;dQt%yK|AD9L3s)0p{Y=b7i(0(E`Z8`JalRX zsMhk%fP@Y>F@OvUe31y%0}Y+fFWs&Wz$23$P>C1uFvCK>bo)L46~eV3!@vjYfC^q; zh$q0M!HY#7(H-s!N+2M+f?j-uEPH}E-1S4Z?*s7Y&>g76i_a=Bhkxh}eE@Q}Ajq!Q zaEF7E709r_7b~E8U=IHPb9g^g;>9wUVWA+4Kn_1L9h6M;|NZ|DIW>Ucivz=p{ky=Y z2E;)Q5^>xOIyL~b`QQ4@3zprGV*|t(7#KLdI52=}m=<;hhLv9(7(k^t=3?SEm*b~1xFn|hW5WC~61B1$8$XU+KUmX}glXjqe=XGBl7g2cVQIxv76 zuKWxPc3&MBK<#eO{(dWvnXCW*2eHjS_OAN>AJpbH0J&`igslYw3FICqTN0#q zIYeCGs{`Z+6O^+|z=xW|r!thd=77l}Fqy+p;#vebT>*4@3Fw4{)V$Q7_*90}yi}j~ zREEsrl=z~=l2nKYx8O$ufc+ z_5c41t*M~=SOq(tK_T!(1~xt5OqSL;6|Cpm6p$Xb3{VV0oMnQp2XyW}^pyTyu%1I; zJsI3em^omDbtg z3f3nMa_Y{1Qiyp5&5Ct9Br%Hl5ZAwuhUo`&`%&x%c`NY6Z^#q{XvpY= zKFoa3@iLG=cu@^A|3c7<`;)--r**apK+`gq5%7Wyq6jL%zr7bE4;tqK1!T|*bBHvk zlFDKPwNyb_V37pW;TM8l920}G4+Qk~LflmhS(d}UeJaQ-&{!eJtbiA%sLVHLJy&!7aAY8 zkAYg%JV<^7nHBUR7^d_<0K{D&KkkEh{6f%+N1{l61Ra7I_@W(gig6 z^tOTy9fAc4G@*eydXSXY9V!4yhXF5I!6{4wG?-HWE@8SuK?m9L1iYx`1sygk5by#L z-Yno-f*D^tnehLAH@L)t)MpodIWW9V!QozU;yP1P@QM<+kpWTk)Zm< zxWLzl~_MIUH@dU@NWm@L|sTMfewTMb(KKj_rep>yy|rQ0Pd(_xmXy~!?354e2@*Zv^SYYf zVEX^K>lg6A)8D@T|G{A)6YxS2k{}^rArT1nge}Yy1i}J#QYXkq;H6C9@aTuG3F;1& z2zrqOsp6pF0iNJ^aStK}4ILhE=tRLZ`F;US+5G_>iv*e>bb^Y%SP7kG+8_F-+gAY8 z7&Gtt|9`^EBA33;V`F3H7kRy)%M-t(rKPdGNa_VuU%nEZz6Tm> z4}eYxDiLX{JpejVs6@K4_5i5vE>U`|2i1Gr6|C*G+;P_*GiT0ZJns4hWaMkU!7|G!`Zn+=MUp3UG9b_$pP-2`~uqr+V61yd>Il?P(XL+i=b}T zCjl?yz;aM`yzT{A>iYq*ugMoQJOT2zg!P5m)NbD|plefuUhu%(i102XT{l7It-&D- z?g_g>?9YOVzbFJ-1_}n4_4Ah?1;guRch!cGGn=HM#= z8U{KMlqLT{1EvSGV^by&QZyWfRFwhUp+|yVxIvc{b-RjycCJAxGl6c7z!y4DnHS06 zgAzo#Lj^jSUZ{1!k8|r`bYys;wiaBGH6L-Xe)FPoEhMjk?~I+o=*VyZdNG*d3|^I;9?T>UrRcD)1eU5>OSP5<%Ur z2F(YU0=j*5nh&xBc87uvujdJP5rm@77gXSD1a-Tr1a$j?>=g)lVE|Fl4R(D1!eu(( z!^bwk7D-+C@c(}nGq`^N?!+5FMk1Ja!4aR<*}CTg^qe;EKm|k^JTU?0>vW4Sf?7Ku zRRP_-AkzY&_wNa$b+&>69h7#bf*3(BdLBaiL;NjW;KNYC+Op)kdqFV}h;W4l*cD)F zzz3+QbhB^;ys!lyry$bV3bLjbe3VdNmVEbAkmexpUc}(1d;P0mE?@R?r1>3@`S! zfok4XP)tBvizP5M&;nBhoP0Ke=lEeU0X~@`C`-N@oRI>+9Z&GeB&3)C^L4<{SO(J! z3jE$)P)LGS-a;Y-6aoP+oWUFIc|Zlxi*RtE437zjW&GPA!NT4ij%wGEA%A5dO-Oe+Cu^rIWInL1vL!>x_xCpCA9?P2x)Ms2FkJE z1Osy>TpLfoi!PXv;37pJ2-;-E0- z51l*$FTz?7OG>~NL!1#J`T?Zbq6J>scd$D$ys%gfF6|-Rmfg!i-4;*@ZvEy(-Ev6L zpEiM&fq`KHyCcJg|NsAkuIc;;(g-TU`573VvO6+>k`$;Pa*y4S0Tj0&_EmOA@K_y) zeTE%YSHv4ZD~)(VD1)IqH8VY1-z(jr9F2#-=Y)n{INoaW4>ID`ycfh`0dKXtv_6aaiQt|{}-p5KuyvfhU<$Bdcp1hB`|@27mJ-?_8tJ+3%W_U)3*a`FKD2$ zGqmMJe-mhgD~rFk)#pEG{QUevP>SN=-|u?|9Lb<05X#Zb)79z2x&6G$jd}9RasTLAQB=_w0e%qM&vrbp8o6J7Ueq zzyK@Hx?M!KfSUPtKVf}Hu)dZdfKrD#M&Mg4B>}2;;kPv9GAlPLu8vg%(aT!FMYXBAR zi~m7qrA^lk}yp$J*O1v0eLrFRK5{@(EK_i_E9eGz0TQUtb6dGWFS|Nj?nK*aNUBoBhT z*82zKWzaU;4-h?oH)Cf9>{dZ5{z z?cmv+z!!}v&>Yk10-9>%0NwWUAGBF~zv~-oa?$f#i)SU(;X`~?epnU-zC_yjw-vFn6 z$owS^4a~?I`k)$Kv_hI70WWkAt_DQ}|Mn2yCqXa1F+tqF-}g;gr;G0s%(y{u2>*W2 zDObL4`1gnS{?I;zkrTurwsp2@{0D9F2azDZz3FzDIwj!6PiQ5)-}gI zzYwVdrQ~b>KvUWxp#1fw+qVPUJ$@+IDJ8VApq`6vIM-? z4%4Cl($Wed1G;-b`U787!)y-)*#H`y=&S{GgwYvKO=@(+1`suvss%A==V9TS0vO?NdSWK`)+w`*bXwts)?MTS2)8)b<5AGq8Iq z$eAElgR}&6_kz>}zE}u8(?O)ORRE-ADkz@?b+>{}Qw!+s1&IZ|$b-AW0W`S39qxUw z`7iD>fE)?VCj8qW2E3?-h^2M5f(-0!1(jhSmwLQiKlw1fr;rFHg*f^2wURt;W7 z=lZ7G_X_`h5y#d`{4L6$sTfd6bpljCfl8`9pvw}cg1DgGAwRSn0=b-jyG!VgfEWM& z8-q^h2S@p0@CpS`1nWS87DNSQ%#sAnUqRxyvy}%FGp!(VK|u&IIk0;wNHFL{F*x0` z1Y|K}G=MfVTn1mLBhuN*0Wxks$f+%${MHQ?2zXHpSvmlbf00`C|No1GDo}0)sqgFs zt;>1gUj+#xe$a)Bpz5E0doRfHz!yvZfm{w+BM)jX@o%3BqJp|xLE4~Mc8V`3s32M0 zr*%us;-Cnx^xy&&rXUtGEbE?hxNX4iuj!t4)yV|<|7 z_X6nJXpnUv&J`G^+qLC5%LG^*2|C^6qyr=hT5Sq491#Z~H-W+rhPeO1A!1r#@HAR*X-NSgfHr-B57UQDGzBtXL`{M#pjmSlik z4y~In{Q)I8@LK8@W#APJh|JOo$}9np%#sC3n$XMwNw56dq1h0eg92W-v4aXK7Eoqk zU|>jiu`Cz)d7Vp=CSfxoZ=xzw^8Je&YZ@d4f7jDjm&o(ErU2ny8| zkWkeFyA75uL4tuVtS-PpRT>mMpkxS7lgC}Ag45D#6-0m|Vj2|W;3i17>lN@N>GR9} z|9>&73{=xT{t7)vX#%J;0yURfKnzg%Q~_du%BLJq11cM&Ck;d-f{2(h(9jAoOx&&10wSuezg)i8MYpkH~ zWr2??pc(;cKKrn4349?BGhzYAh^Zilf?UDCz@PwYO!IH=VFg)^SbGcVOT2gr-t{HY z**XWLvlryEz$^w(!J+``RiWwxb$!5gu7>HH0V@r60h~1x0TPSZ^;V*aEw!f&u_Cn04?01FE&4ZZ%l%7P#I7h+dFq1G}e!+z-*4 zeS!fsnBXB@0oNM?*4qm5Za{Z0$On)SxPy<-+zjj3ys&}mjR3_ysKN50qvZep7tJ7| z4n$Ofh!PNyU-BPv!2`(ZP*7)r3sii9PKX1K5P^bbzl-RJ)&nKgU;&UdFm)vvFd_c^ zA-pGAFO`IY6AUc2!Tn8mG#oh#%LU@F2m{Rxfyy-&rnFAR*P<}fKuf7zFQj$zaHMr| zy#y_~Lude1#*D3(N*uw-1r&l%tHI@GD=3-*UYtAwvq}nVCU~@$2UHVuiwLH53cUOQ z8WI2vGJu>4uHX@7f?{;P59^86lO+x>i$G`d97yYQ1$XIDr(2qTG1Xdu=bED%zaukio>7mFBbj<>E{3qy)=Sc@!~)Ms5b?56J*)IA1OzM7ds|{$KM){fX2D3-@M?M z0vUA^Wnf@nk#=PG@&EsS&}c`mj3dJnD7#a}k>LcC-5}%0umw6US1senums93m2qU4 z0%hmRI5L0|0LYwd8Ak?C?+BD-Qe_+&K-E4-JXXe$0n}&*iHFNLGJyI@Aa;O^BLk@C z0b+ZC+yEUJag=dn0CfvM;+7!yK*bGZ92r2hFi2ce#*qP3%!1fTGL8(O;u^%3mT_bN z6`>%uh>Rlxs7M5{d1V|KK*0}UGsrkH1jZMaCdC&Q7L~-OGL$728AB-03b?YwBG6r4 zWr;-wpapBW1%{?j8l`CK9SB+gS5O?E$^c>|2gavW zFeHLWFaf&PD?UFhjUhR&gdwveB|bSZF9m6lTWI&2*u$WKN+>3R584p{+Tg}xeXxcr ztvi$>tuyq`YmT&TSDv&^*FXH*UH^1Hg&7*!{ifTM1I7cdPY68j`UhlNw<|}$3!lrN zu4sWeEZx2w#~VQ+paybxC`WUZ0z*k0Cx3MyS$I zj^j-r5wKEMj^-Uah7hH`9NiN^?4TE6P^GRM#~VN*V5J}j$bin>ggOAk4tSvrRSI$d zNCd1jl%si<0$3?;H^>Yy8+6J#$P5NEh;^V~1+fEOJii3-EXWLy2;2-7s8Wz8KJ+7uHavAP0a%z)C?5;D9Oxg(8R@^g;lt6yyMq2v{k|0WMIbpb!AD171A6hzJ3Y z2v{k|0Ul7Lpb!AD17GZdDg`+JBm!0nazF-DDaZjJcF>D{s8WyvKq6qJAP4NRL4*K^ z9q=LrsuUCgAQ7-qkOOj{rh*&*Vh6skgenC&03-rd3UYuAG|7P+0AdHd;Dag!IRGRA zRtj>!79!hRb(18t~MkOK&m2Mkc9AO{dA53Zg?gaCo^U=>s;$N>b( zgL2<0b1%3r5uaUj&P!PWYKPUPj_-|mqS_~OG0aBP7VSRjesLWsVogPpn#S_#I{ zEy%y!Nh;vQ4u}d+6o49&kTkNn9iB!&jYk*;ufOCu?)n8JaNP9=gaWrOA??E#QeVM$ zRd<3e;Q7(~im5a7M|15D7XEfE&?R!NKmMz<@@P6TfL6u&@&vw+-V2K}LGV}?IE1c! z0aXr;Sxo%fU3mgteBT38!v~r@^!@WX|DakSi;d< z`-P=M__fkb&_V{VW+#xs*M_^;7#JA9It{@B3Oh{B&Sq#mP$Hgj6y%18v$Gj8PMn?1 z@M2>+*bT42Yb8T@f?gQFy&<>*avi4YpBJw`gS^VW6SUA9Y|kyQfWj_;b5O5={E%UB zZZ<>4igU9WUPM8R&0^-??)wLHXkn;8(2J$^poNJ7%}02w-@N$I3W>Uv>W&P;8jcLs z8jcK8G#nY!H5?hh@rSuy85(zSpa1`d1=o)k0iVIk3z%O#e+Euiplx!XYy!$XouKad z2XOR$Xs-Rh#^1gc9K9d@tF*q+c7*Kp{_}ztb6`}yhr|BQfm2FNwU z-GV_c*x>=A0ve}7)A`~=EQexUUS zkht;v^I|GkbLbb)Vu~LDFRnd>dEm!ORggk>Xy>3RT#Kae52P*Cyc3k28A{c5K{SQ_ zd0`IL1X^_t-U3*G(Dd497w8ULus;Pqf#xdsx4V7`co7Ow0-6cp2Ybf_B9PYU`s3wf zP`W`0khEQ}1h2LO;wRTXFAjc02@ocP39pTIaD!8&>z^01KSFHv{Sx@%{u8jbK?MS2 z&)+$S0La$Y3Ofr<&t_;nSt6d%0CK>D)3X^e7(kilM+!LMf};XFti;h=!&SjhVhT0{ zn(V+i2sFIs%h4UeSOHfY!X?n{q!92z*cO~3UwgxcW?VU%_Xu==8nY#4;JuUl+e7~Z zWkGgZLG0;n;Q}duYjF_}>Gn_vd~wVMY#3xMxMVXVc~9ujbYz&R>B#U`(~&_<%aP%w zrXz#DmLtOsEk}5d8@wJ!ff2mE^Z{r+kOye+4^(P>UX8TA)O8QYT`%%JfbMAE=;rA3 zJd24{{R2xlmEdTf3LI`yTA$#K(m`aTGJ5dxm(_u!wYFpXdGdAsV>C805LA~LC_0Uh;acgc)+;=JOcxoC-wzj z_3hHd67Yhl7Q8s>Wz7Ho|96723nV~8USz%lmB64wN4`L}hJ4}Q@B5|sr%0_JcsH*r z$8nblpaCz2*SA17o`ILpJA;!XXtXY^(=q0S$~*8_9sho(nCug5fiF~GetH8Ma17<> zZUr$qog$j|f*5e`_`Cxp2$q)-g80tI;NagM7-M~?Ru;4~1~jk|%F*o<(R}KET4x9c z%Zuf2K|VMEX&(rJCZoGKz-CDcOhE0$vmx zg2uxOkehuux~GB|oq-9>dqE7in`gX*xOs^H0|PkLu^bHrT9~unBgOh6$jzZYvJZiq zb%6=ZC;z8)`Y^G)`1}U!=GR=^p&ZAZ5()M$AU@IrGNG!gT+Yz9@|pjAzfxGH(E z_YG(z5qM9PW7&)KZ=m-`ce`?=bq1upmADAWEWni@gy1)1{|HPdzx$aFhKN9;b&lYxt@=K0n`k968ItkZgd)G*dFA>k{7>U|Njp@ zsSV<#vKOyjLnmP%zDj#>^EKoW?$8%6&bBGn)z2utBjGG?V($ z9AqzZH)vPI3z(z%TmFNi7<8rsr~u*#cyT5JlnX#9qO%cH=DetW{r`V2_~u}cm!YfR zr%v!y!jv_D5OD?nvmEovA$TV3+B2^Jppp_8&FRo=tT!F zEX)z6W$-aDyxx(;1WL0VAcq9LFoZd~L>9ahpYa_tXlMe(tA>2gW&{8JK#kT*C9>V1 zLCx)gEEp=;`4|{pD)BNfWU+LE%HzwMp)px1mc0pjlq5~6$JSOHMykng8dTk z!lDKw$%5ih4_*d_*9M?YM(6=Z|HCou#r~Jzrgh*8wYiuc7UP9%6%GZ*kLw#~S@s4r ziwr)qEZ6c@G;8n`89ASVm*?|0H@Jy4$f zZ(g8lf-a?XhQ0u$F4q@O*T3N3@B0Gc`ZAE~7eie?A+R@e4yx;oAg%``sW|~JzF300 zl^~Bmb57F?%$)Ox8=9uE)LWprFr#kQ1N{3vG+IxVsPgXzZI$Ba?wJ6p$-otZ%R~{V zS3I&_D1rR(dgn_!(E2S#kejzVl?A+5y&e`cvfaKMfiJrEV@7r~Hv_}VGA;%NP&FO; zBe!?FZf<@P^Jgf?;L?I z4jW@;>Bn5qB-8RD<@x{rFY2HF|33k|*Qh1n#i4ajHOznG62?fhFB76F}-f@e3_wlsGXHDiaq2!|R4_ zc+T$Q$IRLHI2jngF>`SyW~MsG$-n?AE;zcuEwq3ad(fgYCIXbIQ1fmNCj&!9!*0<1 zqaBd&3WIng;Dsz)yBIj5fSb)}olase9zO-uhawPB&}LN3^5bbBo1(q1}#Sw_%K7e0HgvmXvDwW zNhSc)ntHMGI3z)XCbpb1pnhZF0c8`^0@DPdH}C~}IY<&U(8WQ1W&jn)(3pC(7Mgzf zTi$_64aRO?(4bUW(2EsopfV-OAdiDCZQ=-g@rVsG{TyP4W)OU(Qf*WgLvJr=xlmv) zc$GM6xio7RxKzzzf-Hj%co7Lb2$6p~csnLX(2M7jF(cBQoq^$XH>fEB8r>-ie37&o z=4wdw=(HO%5QNwn7+zin`xdOT8{}iDpcmJ!AsY6xZa~>5K(#YJxRBZgk%v@VW#D{E z*vFtL;lSRhpjl#6AFtR6_c2H^;6*y*BzI6|g%-wNCt>3)63AY|wmq z@(V~WYV1q0F)+L|VP#;*VguLhPho+@-y+8fN|T^XoCmrC6@p$!orWYgUyja3P#^0> z1W14H18!_uJSfSLd|gDe0Q?cLCk!a9UCO5n9`kVaj}3(-fQ zp_6V`P`S+$_~IEP%E7WuWiP%zgss5LWw z4WUB2Y9Uvlu?QN;yA$}rWCtwFr-G*EgI;`wtkw_U-|qSX?hm6;n@vYmCU~# zyk(dp;DyZu%s`yO%)sz^8n_NwyB#wGYneec0ce{y2P-H5174IXVg_J1GXulRA|^=Z zfukEb(k;6Z9z?f6O?gmjSMnZ6H(L4!Elvh?e864~eF5Dw@`8WA>kE*-_6L?(AF55x zV(100{toEv1ucVz762un^ufP9uq^1s+DoX(>MnRgnMn6kkaAEr3YwNo`!R!IDiZ_4 z>n6~!0tcj2*{}@i_!3!g;7r(t88`_{3=A);K?C#5;IbQ(G6G(xt$^y}Z;1yDD}qm@ zJJ5Vc3{=oGA4m&$@#MQDs2>F08U<>#2fov*pT@Fa+d_S2*uYB zuhs5`E_vP_`UYfnz>7o%kTX#8rz0Z+!|Pq(L2tY-!c%&$6 z>cxz*M+^)MuUCS5D4(B#IHxKd0t>o(LHtghrslmM216-7WGF}gV$*B+EH=MJS;~f!es=^%|89+roNZij6vc3w$c5`%O02NjswymQh z11LX&*rtw-44}OmAhwR9BLgU@g4jxqjtrm#0AfoxIx-}I&+bYtNQJVBlT#UrQj6o$ ziV~B-jFeOeO?!dVoYdUZypni`lS*<67(m0ZP#oI*CJ;QPgk_;o^Dh?Ah#crt5su?7 zji8;K46kp2(-l}X>d`LEKiO(U_(6x5xN;nCnE>vWfRf~Ov?PgDD+{vL1)$^$*V?!N z$^{KvHG#?=5Ffk@2)vdXR7`^=b$5V-K^#z%8$7%W;<$1gZ#V#x0Vz8H*-C5Vq$Dh3X5@O%*V`8?3j z3~Uzi%M0h5ur>=gz!1|8@_tz!zo< z!R2`XNG-@%p9vL#FCP8^bs#{CNI_@N9Cw)jiO|L1(hh71>Pa)rKiFz*pojD{@96?Z zC}@ZQoF2NTG=c}_5#~g0~3xhoVdOc{}SXBW-NfEfzXL<-Or$BQdxNHO! zPu2%(HDS(%mMs!%!NnBRitfOI<1C<|REF34L4NZn2z>Ev4Oj&zg*br=KX9*x6_k(y zUPOk2iYCwyT=PzFT7s@O1F-{M?1pLuMLI|XlPy!El@#_jm6Pmk0$vyCey(>g2l%w$wC@}}Uxa$UvU63O{ z2|D0~&ufT)FGu4+P__tsu`3H4ub{}bVki*@hg9H;l-2MU0d=lHbC1mx5ey~#;3_5} z=!G*>fh$LIMFLDbA?SrRL>ycufom_+D-fE0iPVBNm;HdGd=`chW&Zt;n#gAYOW=z) ztHAa`#o+S@JHQR1^AJhMtgTZ9qyhqGOE>{4525QfvqWB;gJ|e<{nK3g2VM_yTm$>~ zwRbltEAVs&CUgd{bi492A4ur-{nP2l1G*aHP)fJ!pUwb|ZqNZsJe`38pf%;&JyHU@ zL;nQ5*m?rgYyn4)@1IT%;{%XI0PE7x-4xpW=0(KS|Non7Il!ad9L*LCrA)8ILBS{( z^y2SIuy;YFAt>Q8SigCZm9EKvvL2Oxzbojb=M=CO(1Af-9GxCIFFsuXHR*XkeSmI{ zoU~3au@~pTLZIauzC7IlES-TSFV293TsgWqK)0%QJ8FRY7t29{pg{%DlGtu9v$Rf+ zycd(MK<3uEnYw*>(z*lG(mDfEUeth;BJ`W2bvos|NCye}@_>39-A-9)osJ?eLcl^C z-GUG!`O-Q)B3{^o1i_sgu!(wUofG5C7#LotgTxVr8l-hLC4j{FLE;E^8Krf0q=3Y~ zUj}&<;;*#s0I{^rK$aJeF8}{O!TQY$t2DImLIfUU{T?Ac(t6=~V%7`8)pH*NO}vAa zfFLRfEbECuQD4fwLqLFm;dK^x8Xnv$V|)<+=|^_E@_;5ogFrlA4$y%?fgCSDTe87X z>noDh>A~{?w3!#wh;)_cbP{+W22(5387T4sv^@)=Rw1p^L*fOf9b*bUVt~$crk`T&aUb~XT&FotIKS3vwm;`mZg3dnzA0!1j_mBg0Ak=CPP=PD)@;Ru-2?{^( z(77wh)G7b|P#(|?*S*XP3@@Vo{{R0X6l6bWHIGKX3r)CXvY^gIcc@4=OBZw;o#O@f zU(j@bA84$A5#rvTGhpu3%3|dQUkdyTE+n4C#=jkO@$F@p5PypxGx!qeFWs&p-8>Wc zL7QYiCnR+I`wu@M0mKHyF#mqnFKOMqATDToF(@csbp8QPsDtOB!3Jy>40=(5Fn$xL zlgcp(iQAz%r3@d@T!{#H;|4{8L=nr;sp(5^{n9DrIX zF9Kmk+_(rbizVR2dYBQV?imbBpa61(+R4A&$py55^$R3*@Nf6v34D=o2&50ZW9Y>a zFdID2|H5M$G~h}MK?w@FjBJW8C=0yU{RGc6kwBH#iJwAmGGS}xc$m?!!7dpI>dWMp7ysATnQKKakF^<*h%lPA>I(4|0u zGB3_D$%z%oZK!+F4enLD2%{4u) zV8>kmi-ML4q57a^zc`^Ox|Nk#0 z{rvwQmj9-~_2+|%5K#VWh6}}jvLvXWDS!)kLPOCNTv+&if%YA~fIJ3Tc4vK|RwRot zixD&wFBACUx&&z1g23x5AQ4bULMG_NVTc$g0`Ztqf*gt*pz{Yn<#o^t(Vw6u5@INfiF(ORe|^~K_@M|DF5;Q|BIp@;9>(@ z#JWv^rlC?{P+)+HSYwz_iBAT@FYr({Xz3ddJd8|1Yie8#0zmWCGJ!8Hi-W^}e}AY! z>!lJ2kR-Uu3CLmvof!3EGejPgAVR^Rictg$fQsPBpnQHEv{n~dbgrI^a2jX{p+?|~ z88D%eWN3tdb0JG(T6a$gu8UYL9br9lSJ@%#HhX0(KYbhaKS$pyzd7uZkt#lU_B1sN#)7{J|Sn8lO@8rpZ2 z33#y!s)z{`)u1i#AQuK@@pXeF=Rzc33xQJ(8`#uNh}g?!NOlKD(A7!MP$-GZVgmUH zlpH_?1%f6JWP)CVKs14+_V>7gq*_mw>Vu8t0-YxK!U&=QbjyS57m#+4UjwuFz>=a6 zNw7N@v)I6HV}yvk3v!m1!mes4_LTa$Ao&gsEr*2SGg~EhN1iM{j(z-pE(mH)V zys!f~?nT5`NXmf}VUYS*1QxQOPy+?SQqbX!dJvVM6tBg50uD*!WdrWg4X3^ zNq|Fny$CqHy!ieFWC5&<=il!n0oumQ1x{?f1|ZY_fmS#&Ff@pDhqi$0GZVOj6}o*} zx&v8)KzlrOU#vL-u4B4=TRI(CUi5*M_=0LSu@|3@fh1T0U}10$<2Gff{=fX`QZTzyq3JdR;=F zfG!={?t2EZ-xa*zQleXg5j@@tS~MBLB>*06@Ahrs-yX;WGOPIjXwF|I@Wp(2Q2DL! zGJ}bM;l-uT|Np-@3nET{*7ZVTd`>^q8;BV1gbTrAybLY`kMU%fP)R6c{V1BZTzdkb z;qt=65#cR|41~HHAn(J}aRj|kfU7(4S{sx;x_x!hxvUZL%9>!60WVG+2kQ)Y@$e{! z!O`j311c$dLwwhO8+E-tu6sbu`xBtBIRl!LbqMSZZQFU5iSHzXMAuWcsl#t1Jzif#=qV51IR9LT)qg}0rnoqZ{48^;FD3#e*iaiL1_fk z2nIPFQd4z%v2=P^yx0#qC=}7Ihq6Q_bUSi%I@!Ef0G5UqH2Wbep02d+0G_nYK$jQ! zAoE{N{{<2#PXb@8?1qIX__CVpL#*&-B*@$souDPdARVD! zK<5};33ySCti$(9_C;1`d#)w)5U2wj4$=X>!7Pivw-;nc;EP}m&_E@~C!poKAU940 zEqr~U4N}X$zZE3f{DYCduNIu6dO?!>`=|JVbhlnAl?FF>K!O1;B({NrD6JE`hW7O( zkQ7*b;ETUoVN#$Ks{H%GD^~gUw}gU?IRG)H7bF+>;v$OL*O$O<0!>}Lm=0P2%)cKz zp~b(y#}%Zx`6nYp_f(LQpcj+jx&sm;p($BHcV)X`PNTFC;;>gTfm{YtReEE?7Jvn-Pu0422h0K`Vg4 zHi3dH=*815uy6tKK@#8q4|pL1(GERM>}4@1`gVXczqA5%(V?B`woa(k{4F`4=-Cb$ zePHZu1szZn@FK$>lI}qB&3GCeu*M#&+J`hhL?)zlGp2PqF}+ZH3#zptnGAHk5a@i1 zXizvn6!J{q-yY}?^g;^a6_h}8c=6=T|No#q6RO&OZ@^7>G_^axOO3@qty73wKrtWa z@L~Z-9AqK9z}W8O6!2o@W^mY{7~=Gz7-S(E!VLcHflfg$da+pO^uirv@JmoS>75D+ zvLNuW_u%Y4M++Qw-J;-;rB{rdU`981R{muSXbB*6l!Unh9tGK;@`JJ4SBHQ5#ATqZ zW#Hyy5F4oR!-K2o2RMpc`xXcH_+9MQ$Y+!3lYrZ-w!?j4rKQJKo;vmwYi`U z7Why(kaF)GBjW!LEM2_$BE2n3ry#WuKr!i$LxI+X!MnZ3Hp-_k-Qp?W)7S--E^aVr?2I z^1!YDDF?e0GMfx$LajyC6%xQ^eX3R~iy7hS-VnzE{{0XQaF;PbUAF3F8R$ecl)C2G zMsSh<-AE6S699DxK?k!1zTko!ISg&GgIx!jgni-k3N~Q|&LbF|UIEai2+$E^pxo&z z5cr}IVhMD&&X<4}3~kUPP@>Jh9kyBk+)W625du{VuB0Hf-^G`p6@)gBT2CRZdn#xg zHLX*`@x}I+pq)dIgW+H%y*RW1<|nXoCxdjq3<2HopbhJQ)wjYNAh8gfUSBXS2GP*u zx)yYIclAriumETbz#pc*R21VJx24}%>#BjANTIA^kePAv!Zp+FgmA5=8)Z*K*iwH5H9 z4t%a6_<+J*$Wco#c6)&{9RGf>5>SU|=J%gLpb<*YL20x8fzHj{z8-7?NHVRn#TO*_ zqWJ|V%)qV#&EE&~_JWRX3VgwB1vU>fwFjO^dXe=4e?0Sm;u&;|5&!mHkiWpKRFK_Z zPeV!>(3l{o2LSQSeo&iJcmpUfL_kY(K;r~0kR|}=a2UoH-$9FYnO^+=|Kjg+@Sp>z zOTE1X+*c2HVc86eH5+i!vIu;!4KAd~zke#o6|I+Q@|94`ScGT^2agGx`|FYsRY3t6~S1Skc7Hg9slg8Biu7{5Cfk)$C+;|2_f}mhK z(**TAf6FRZ;Ro{Xi_IXt;N02s4|R4LnZDkZ#RT)JJmgGM&@R6hn<1(oxfvR8{~Mu>D-qn80-Bf)wMpybdLaRF z+6yBjU$DV^0U4qP<*ms^7pESBiwy9j$-H`Kg5+-jExdcN4y0fu zh*$z5=7W?nfZ9Cp^6Eu4LJMfd1DsdE!8rwdf^N`@RWJo5vKbjppm8Vg9hRU%H1I_) zOtRD}goM3BDl}q%-KnW4NR$q=rNHBeYB6RPf@&BXBp+ z7d*TSnnn?s(A@%FpbeUr+y#<-9Sv%~gYwnvI%p6;vKpw)>VOG>&%yix>Jfl4SL?}A z&?XQp6Eo1#D6rs#FUW9^`@lgGD$&i;1)0IQ#L(>{D9}9xoM}4)4PF>O`u{&80d%n; zcrNG!LwBe|Hwzbd*=zPihHe)Dfo>0%z!%+c$EbrM0^}W@3EhD_{M(tJ6C{wzgD3FC zhZW#S{FitB{{N4)feBd%=acTp@S?;Wybun0mF72h&`LPaG^+KR7dzb{ll~JxhvSE& zL(UKbExtXI;mB|WdOq0B3`d4NQ1+S(M}{>}_S_6dh8a+HZ-yg74|GjjYX)Q;9B4gV zc?M+d8;G5q0a@<`GCw)PkpWbEf!F~VjtrooK@i(2197&PUWOwBsCy>Iz`&rC;m81L zUW3$#W;il{DrgX!Bg2s)DYK+F9=g(uAvYyHB{MB8J}oCPogp!)I6gPAq$o2PbU;`R z=+v%w&?2;){BrObx!lx}#FWI6M2PCV(wv-lRH4k`-1yAg0)~?OlEfUyDmDhFO;BE0 zBG_04kbUtW`-&1%GE0jQ{DRDq$O(?B1^v8=O_dz=gIhqfY zfm#^N2TMTXJD{6uIJ%+R@g6M$H9!Pj@`D!Vav+TBf*U8C23mvxGA-;rsEm5bz`y`r z=maw&9@7+y|X+3ewf-RrccB zJy4;m06IIBBdyc1!9h zA*#T|w$zIs;N`fWbvqp0EnOh(J0a7D9x^ZPfaO9#E9km=CV=EXjti7~aTqLtY}yV^ z2GGeBP6{uUgXNG71oa|4lwS0KC6G z7q(zIWCOv@(|Vx-mOwTQyuLrJ(@EzA2Urf-K(O;X$)nC10iF<1iGWyc+TKojaOIpGKRqYi} z1>o~{K&O#GGF(1Pyu<@MQN{qe=O&8*3L!ZjWDFB%A&HR`DByHDUB7@DnO}llB*Jxb zbi00exf-P zfu?=JdutnZf=)Wz0TTYant#8m0%(>>ft7(_Cn)CAI(@&q;04|D3K}Z@67-^QA-Jsy z8dmIf)qu~by#g)71(%hef*ibC7JWUvfb}W(d^)I8)cz9`42b!3P`jrXA_hu9q2P6m z7_0I@rpSR?v_HCiRrt4yI0k`cGBpBTm_ziwKGo|xC$KkkMNqHnjR4R(C(xGSURTg< zwx9ux2Vx*=Wk9F+fX=8{SOSZ@0#LscbUmnCDNG17{m+oa*9~&ojUOO=0?^4*zHU&P z>kD<_8Q)nM7&3mGo6V3>aeg+#i=T4f<6roOw%4 z2sm0Czk{RYC1^w$f3o54-2-YgFhaI)K$6Z2qhe@W^S8_dh5dflAKkt(-6D;hp&k6& zT|w9QzTkre4QOxT4e%Y2kV#VC37{Rp;F;TB;BF;&l9YeD?-o$#UY`f@DtKW~x9g1n z(8kvc@Z@6XgrIKMj&2Xo{%5$h6W|*{__w>B3CNNF`z-w%*k}CPL$`o@d;%u!4-p6N z%03YE;z1$Q2PM%UA=d)|FV4<|+6Np_L1&dt z1im;55$J{*z3nP^j0&RF;l*;0R`4oinQop5&=ai!onG{Vl)VI9c+l;t0iNdrFBpIE zd=A)`pqo@d=hU|zsB;GG68C)*_@W2278o>P1v-cpe4I~)A3JDNNh9Eez*lIn`u+j6 zF5d*bn1?Xv^;YO~o(5z(uNfk>6Evs>>i_uaq;;|gzW4)L#S7`T{3v#0c(KO{+;3?- z0xDCj-@M?lh7`D_9a$2`5D4qX#@$E9GH4JXuzXmZc zb-OC0bqc)rclrPSEH2PV;Gn7h7w7Y#3AB_0vdFqr5InU9o*(6Uu>rKgxZ70$x&-hn zXlGq0q$9cAS0eBQ!)#bIf61zX#Jnw72(rxXVII`<5(7~0w)JG4XjVN$*|Ax0ov(#K zf}lDw5g`asUn&nSHvYU&zx@9{xC{cf$R$C}dT9?TFerdf_s{tx@UH=5UcrX*@sz0F7OOVO6-(f;u zUJHZwL;MMPu>+wFd|DUygsT@#U`K#1f&BwA5OfAvKV0DtkdW(_fGoxrQ4n?DLBD+v z1)yRcw2V67MJz-B}fl_|@Xx_)bTr7i%tpQw%8D zotOe%oV^I@dvL&H`#{FL<~P0sTJ_!;!1SUPBmgo^fq%PTP!{MQ!+;kSAHn&$+gAa+ zmZwA(yt}Jo&|>kRObH&u*T+E6$bv6N@fOzG|)<>&d?7pL@z?; z)Ze_|0x?f^hpK>vM*m&_JJ*$mf4c`;;EQ)T&`<&;@KAx)OQo<-PyvO)`3vBIpHPw3 zOQnj?-~mf)y8v2n4?5yWCJi(Ov<##Wl5JQ(CB96+3uZ_-fm&N||Gub$*~i}kI^aL8 z+x1IYr|S!2nDgQ;fKnZ3qhyUJ_&~!ifiJ2qfP)ld&}-!^P{-iQ_gg_Pk|DyNB0B5; zi?3h6u>w-`!V+wVuK@VU0TytE0&m)WQ7|2>2%NIEfZ32N5s?iIg%TlfpAHgxY%eaH z2PXm*a3bJu1>MGilJP#gSa%+g@!q^x08$Uhcr4)5`N9v$7A2T1s2T6Wi_G(gjQ8e6 z^m$MaAZ5G{0WZ?0fgKK7p9af#EC>%nGv0@w7xoBsu#ER1@C7H>5ul9s0i5pN1icW0 zD|`bIf@Hjh5J7P8xWd>MK+*Xj;Kh@va3_Gh#t+(N`{Ep2^bI)Uy$N`6I};X|kc{^s z@I?p2FtGDM%cR}}y_ky72+w%nlofLhDa;WWk1gm$5=09ua*WS`Q!+T?u?4&cIR{Q9 zFj-NMF|XknkL?8uNC1|@O2t8^IjDfHW(KW%;|O}O^({Cjb-Sv73-c22Ql-!jupBxK zA`QxdzHdNvFI=VuA_KCwJ5(aAQ}D&Cv!Ib6(2-6uX`LP{FS^eD|39Jmh=lc<7we57 zl`E*n0>$9^3UmAkR#SmG>b^f-xSa(ZVFg+V*eUSB^6dZrFG9|Oz3(dkDo0+Z!2%tW zk6lGt55Oxb8Bnfg2RQ+}KMAyi7j%t!>J(UXe(83V0sEQ1wFKOZ1SP#vd2nO>&x^BX z5NY$ri~VOn{aatSvKmhQ{jOg?H(zjqGRF6toxUGH*%ow?opA;<9iS%nKQF3KjLbQM zmfZgYyr`HAa~!;$5&Z}gLaJv15b9vb{ZHTvDY)0*^^7`PAyPf_2_gti?qM)CIJy4` zc=2@-%)URc1ra+d)Y zF{Rd^k`fZ5B@i9mz5*a+Zl}Sq9V!4CrGAld8k*L@a#|oGUh{$K7y(clMhe6S86*Qr z8qg}{>MKb4_LYHEF>J^c$u@{ID1C?i0Ofdi^cQb&!FD4OH@e1E)fIt5NCf4W@- zK#gorqZG7y6L}v;325uppKf0PwCNiD{Y@`S85mj*ltRwC{qf@KNl@QF2~_xj+5yi} zVX?>$J4yD(i;EyNFJ7Pg|Nq4^5b^LN$N?Z{@^nMj*OW+sI+~zCFA@IjJOP0(=E4m! zgN$HdaVyv=WTmcuz%74pnZ)Dtf)%V(3}od_&_X(x_}dep9Gwiha_tC*^_v&G z`e-pq#C;m*`{zKB0KH#>sQq${Z$KMY!+ZCd{Qv)dr!lteX2-#|>4Jyzs{jB04_Q2M z0J?YrH2>WhdZ*j z7q?u&_Pw6AiyJg$4nFBITUj(PUsQ?3FA^XIf}4;Gpuhy5wFn8@UY-eoFXS~KLA4olocV*G7x!TyQDOq# z^6vi&vBHUMJ0G?D@@-3WZKcp<3J2c^d^;9eg%1~A4LzksGo&VvS-lR-P@;y`

CPgsO63`y@fEPtFAWJ~UBY@5;Y`s(`2Aav(?@hz5lK|jHVeKzj|9sIz+-vVlNfQ}-35cGl_ zW)*)+HYnCyK}W=eK)spar;=ZS$&p#qzl7Wkqv z78?%f*c$4LPQ?qKnLuRe^!)%;dK$JL$dyNyWZj7 z?x7I~$won-QUp9aAD9NeaIrUp_e2n6h?t{$BFIiq%7X>a0y#W(MuP10fflT7uplY1 z0+|LnY!h7g^n&XwkUs)nY&rzWha%X0z%2?+U!bF_t>9)!Ku1J5VA*@qbTxBIZ7Wg~d3pcW15cYwEOV0Ti52m`}Q&>>?m+sXo8 z)WK~_&w`xbkH}prQ$Jk0z84+Skbu_+q~|C`fP=O+SPg7+!a0K}bVFrem`N9kgS?r*s@!}B7Z~QHv z*`Uj$T|f=2o!|{|-Jy5Dw_||vCFq_Eo`4q*TEP`MsG0I21@5>MaLj`e-+m9N?kV8r zO;AQt6a&KxdvMo|B>+wGMfh=WO#zMWJN)|trMg?dmv)0Q4ulI1$QN_uz*RaVA%}oc zEBL%#WIKDIc7kg@Q0@tQp~eqNH;}CU>JKCC;=EZ1biOI*M1m6mFDA%??E>}TdqJC9 zU#$NE8aBJbzu!r!y9a#tb7wE;_;m1c38#>>&Q{QR;TIiWK%nF&!2-{4M)H zW48b6L46|dD&H5;pp9@KE3mc6x_u#m;mg6l-!qN*qV=I#Gq6`tD%uV;kUPQCJ^b6j zrUtw)`2wnILEBA0OSN7v%aZ5c4mru-#m{hPI^u6x0a~HL&c7XUs^Sa&7I1{7b%G7a z5`mlc>@%`yB)C=?W;Qr(!OatB?7R>%fvkMr39|(jr!Op;!Oj4!Jn3`{d0`2cCRJ}F460Z}A19t159ffTo( zWCALtx+g-;)oFbLN+dd<)i>Q9A!(hx;D}uh+Fb{3y?uGH7_>!>1)RpfmcD3;fCg(x zG`J)>2)dINo;~@uPX!qf)ZGelYyh+X(A$Dk0A(?BLkK!-8G3Y{$Z7nd8skp?OZz$p|K&fq>9IFLbSUr7bNka__MTF^cBpwfkZ z`&1AGsgVvoVCcmtyOA4Ec4)5e1+}pQUzo#O1$X^!(7EWKlWEerJ*2=Z2|j~%rGeaw zrELL9dHVxPS}*bU&445_ew20zL>r``(p1tNz{9_vDfkZJ^LZJK^SOQ86 zJ`+mdm5mRhKzE=5td--+(e2Yw0$GK6fT0^C=?I#7%09@(?8E|Z{rYlrPZ8_@o%0VK zAvwv=9l|Bj?WNG^2s%fKf4@^&^ADy{Rk(V1YZ=m2o@xUsve`hMeJudKY_b(B@&&xj zYmk+rcJ-)POHe(g^5=#WnbB zPjI;mIVBl11&yVB;UES|i_kU=A}wZy!ZH#p^}po-&7g7wyqL!dsxVoyAa@vHuK+t3elAxNR0(3GL zD9FKiq6uSXlh*Ad1?9i^4%*NLF15daM)A=1#DmXtwLVyD2=M`U2!aJ+IygIn zMlj$#yKp^7(Y*y_2x21WHVx2ak6<70w}NJfK%<&>(mDg=UKGCtEwcvYG*FTJ!XyY9 z$R(t813(RAP@)3YC&+!6;2oeK#L?DS!v#t}chb6hL2;PY=^^*xF?dg!45+&R3oO?! zFV4OJcQW|*2bO_ybI$~D2P9CSGxP=|=YrNHb9A?0T+0JK3Ki4>&tQObcfm*fseq3_ z;^5y7=^R4S?ZJl(@P;?IB7o;H$N_=i1Oq*nF7SocHc;JbgT0Y@8FW~C=#8LWSoaPz z4ATqk(}N3q>+N{LWeO()=nOn?e-pfV8rF7t;qn2LH<4S~O#!eNBcrA5x)!OTL+?ZL zfzD`0YiWzXZKFy{JJbOb3OHKYeH>^lZFYZ{SBY(Dx4PnKY3p$?FuY_1oyX1wZfQrr z{Knt%9<(+DG{~Tm3Nipk2lOpSRVWAOK7iH(b)b{-L0xE20`-|t(jCat84Bt*yK;ce z$p-bNTe`r>)ZR2Hj2z+Vv3dVmr+L z{4Jo83Y2NV)nlCw)FAM=@-AE`mso(?yAMFsr-MSL6U%E|%qj}0W(2jxyPLquJrz1V zSU}E(a6MQc^y0T4Ebe^K#)}XIaNvup z&Y<9imKKPr=N()#tm-KO9i;Bb2JW4@a&$v4R-6V?$KS#Xn*0C_(!z}g_uzwGd|C^# zLIC8A{T?N)C+l>eJ^_yngfOCB5e70F92!9ioq;T`b&&%av$R1AYXsMc1v1(JE6Jg8 zz}yY(c*0c%y%5?Dig=N3*Bh{vP2gexW7uhx6UZOXphC~O!K@4nFSS6&z$4#BS?&vs z1O67!8I-7HHE0YLHTlfU`S9F$BWQ1a037| z6b@UxoLE0@KF9f{!_XU)O6u?ajutPDX6kedUE7p`k9SR+xLFvf;SA{whrCnhO zx^4rP72pI7at!}|F6)D}CRzVMLsA@&0koYm3=9mQ#dDz9fghPCK^G)7aCnf>UufQhlncChLUeDK7^Imp!~oQ@Z$ecP;f&#Z|J6jPH0C?Nj?G<;QRue zWbF=AfR`ztt_TOT{2{L^0%}a(03VTp>Fk3K8DQ>)+X$_9p#C^+fhU84b~Zxq?0_Wj zlAsrC9kF~sldlXtnfSkt>^y2&yJmCfE>AfyO8r)mx4znZ%q@R56y)eh(Jr2lJ z(rcA&-#d^IS6>$6c64^2HOM%UbYEc4RZ#xeiMB@nGnDE z4es-{J3!Y~clv^l_vLQ^-5dexQT$2k6adY<|4Hlgs(H}~J~IJ4TGW^XI!?9%bmJ5o zC=UNLAF2y_ae^B(KE?yuzVs)pv#|>_y#^YL$r1poX*|>eIz-~dLR4j-MeHwh!HxMp z$D2T-9pL$E?f>AV!=RO#puQAp$=v*ltrm2u;SZ?mdYnLKQNMT&nvs2dsoV7r;;{1< zk3f6+SwZdpKaB^Ef!kv8P#1tyrgcsLm9{Td{{!_%{(wsDZl|QQ&c<7y!>gu(r+d3Y z|D<(x-2n-Jj=Y3<@E%B@7^DJf&;yV_637v_iqYmDocz6V;Qg|`KcGPz;vw=v7j&+` ze%~M9HPPL!f6_WbJeXdHLq)SMvUR)u>Fp5!ooNj#AVK3}B8)FS{{^kKaQy+ko$*g^ z3l~TYc-;EnLk6%Kju+=~s=4?Os$>mR2|PeWKz^BqF4_PRZ9o^D1QN}Higx?{>7CNJ zgo%Lxy!kEr1o*B-7OoebU2%1#i?}|u#kHG$i>V=2k7m#QOx+ojyY+5^X(GwuG8er2;{sr|zLH8-I;DHo8 zpiB?m&$EOJe4lL0*Z==_t^@@zNai#0eX^}7U;l&dUSxRj`ZuWAq0tS=*}Wh=$6K#_ zgUEt{Yw82&k$hy0`wl?6vR!QgUZ}!F zRY1iCL$@zzn}A)=ix>x3rDf6G3J%N$SWyMK1*9A7fyRTNVkq#%em1ZdjW0ozrgcsL z6>{CaB7xnZu+xn-0$-f?0`i~$IBdZ|s{ZT${})cbKoJM(V@kB1tSbSnaSk;IdNCXB zfJFZ7t~Q`+biwzENd&z(U=Ma%z>D@gP%wa3%|ohmsUXmiJ>9-0pi?A3K?fQC1)bkF z737KD7A{ae59sX$*&q1gTQD0#^AQEm+1cRX;%-+F$Q%VYr-E8|t|n>SJOXK*y$pXq zOD)qnr#3)Sh3gw|Qu*+jn}2`khvq{LX`P`T`1iYh;NRa1vKn+A-wSF*CefbD##AdK{6myz#>x|LEA6VI>9o%t$RSHsPy(O z_zS)*N8<1Q|3TmlBpo^C3=DzYU@rt^Idr?41aw0tWxB!MZa!24N@E{DLopw^LoIq; zyg(OCNd&%Vy$1>a1ODxy4nbLrFT}Dy0m=bt?q@ml_JZsSe38fjj$Mcvhu&6@y#X)0 zA)=t@@-+y2vBwS^C#?rc5<$VydZ|Vlxog6$~;bvb1M zUYN0hER#v=Y(4P}Ty1=q+5E_!`Ov{1plfpZ_lG#DfY!FBb+>}@dRnJz&x^^R15`n& zX@8(x>m~k{d!UImQ0oUd5kZRCUQkl#74hhtI^`=U4Qudk?_jb9#RNF7Ggvb)1b{Qt z#D7){pc@@Q3jSEZ75uV-EBFCY0QCbj+#&n@=Ai8N>-9Yo*bD9>C_v-Vq?g4jptl#~ z08m*1@;9jKB@_7K)FhDK19pK9KuPPIS^+A^3^VDD5= z+6v;|-U`Yp0a*_GpfxR!UWx)V&_F>6O13LN#oio{@16vKlJ<)PCQzac0PjKP-wwKK z&dvsw`gFl3J|o8!q{;-xRa*B{kO$H_MLb@t1|6CDaye*R2|U0h2Rf}A)OH6IPoX`a zYM~W$v_2@4_s0GI|9=;Q188=2svo#nnAX`E1!@k03wn?b17GZ9geG3_nW7)MT}^sH z>(~}Sgm*cBcZG*O0h#PN2fSY>t!imD{xue+amy}=)r|mFH2x2I7+&GHM#>0phZT70W2LlC4mCi zA+UEUsKN?@Mjt5QZkzZGk}f&^{Qn=&+Y9z*?^ICv1B*~-V(o^^^nyoZK*Ph3jLE;f zsSC8nl7G8z4=Db?`yA(hY8ThEuaw$@JTH}FRnqv(mKJ%nPf4%C@ls#f~B+dz_%)14B?R*y4cR zUXZPUSq{D6R#i|hxTOUvhkC(FEP{GndtikC|Msb%Y!Axspo$k%cD(^-b{8*|fL>@r z$vwNNYfhG_H;5~Ejgj{D2>jF?ldG_)Df3OT_ zFb~|M>ueDP%bfWL+QsSX07`~7&><-Scn#8c2$W8PdR-d=y1@p5l=XlvECkiK-~k&ydK!{Eqng$Eux@&7XZ_-s2XI507M70b7arIy@wSX z>)lg9DI@4b49q1NAeVrf$)Iu@UPM0LQpr@ zKLIbEgRO=+7UI2Lh?{#MR%9{4oT&{lF5tzYDv-J0RV2va25LnFy+|zwN%BCNlWCof zH7|re{QnO%lONQUg-G#l53C7#kzRqOI*T#O;e}x`NEEb>X$rXP26v`VPib%d$;97# z7&IIP(!c=G0BRQVZ+D#%@FG7EW&(Jy5w-8lzu$EVXg5Lur0etpbO;+L^#^rB^1_Rc zkmbUV2!RG1|Msb%1~ok7WNSb+poSdit|Cz8WWLbtYr?->BoGquumIdu3DN?MXK09E zgz`~Hj0C)}0juT!nVHtv5(;Wsy*Tj>+~)ZKIy4>u#9}$`AoBtYFRtrw~YF zBAg8p40w?SF&Ux+5JHfFDb~68d-w(_eK~3IH zmcSPRpo3apmi+twA698jdGQA{)%+3^rr_QH|8{U2J21-uyfz!OgwiKK50qVgD7QV+DB0x4M<4}m%|kg)FU1qBqW=7SW1tf2Z7lvhCg#lY^Vpgtr>wF;=- zY6yI>=_;rUaCp%Lns|1AS4i6Npy&eUZE$(<;*}A!LMjFC+XQt1jvGUT_*=l22ZLrQ zz!f$tXru_#3fk}cp?8Y!n{VJ26Uc3_hI|&|il5$*5(FPW zJe~kh48s~8&?-5L@kIedV|OcPkw)_YrA{yd(nDxIsMHDWDx`IT3w_ASeJ~TW1s&96 z0GH;SQyM4OFff36macCCUc8M3`!=o9^-Ws0Z%V{$g2S2SRg zBg2crKN<`XQSp$G#xH*~7#fd&I`-CYUTpuP!2r4fiC>-pbk0=7CP#)R(Ea1{wm|lk zgT@r6Z*gQe0~PPyg4ko;vIVinykZMtk9px1#2)j^Es(RZK;|TDab#$KniICgkpa}@ z2aR9)Y=MklN-!`mxNdP|05wfP{Vu01jtroD17h25aby6sdq8ZfEshMJ;tRw!-{Qys zDxN`XlP!)6py~j`Hr(RK0P53#&VbPX+4b}Pe~`HH7Don9^nwPKKN%bOh;KKPfCuZiwC+DZ6#+QKa0w%Zg2dvI_;ipkL^Lxmzl@={ zGS7%1wIUfz#OI~v6fjg8F;p5dROB%v=Yb7j$S`C`k5A4oDuU<(n^2aYnVcG*mY56? zE66Ni2r-BUUzHhR5MPv94C3Y{R=|aF6Dz<%nRy7I%shq=1Ju!Dvc``CyInbyU3ofP z|A6j$dx|pL3>uH#vB8sp;l<)#8sIyz0=E7CzcWXOfdPER0O}wWs9z5rTRPC$Ds%P! z|ISv0tN;I}b+)Qp1r5S-bWhYUV_@iV+kU2T|@Q^FkYBKgg!0AX`wstn~uOOQIk(5FK4hY#10`uz&<0 zniyYv|NH-c76^ilPXlddF$e(7%Ds>m2NmfuV3#;Ly|@5UW&>$jefpQho&~4tvyN%`L~CPfa;_# z0WUU3fNce>j|BHSMd0T2iUbC|Q27kD0VL?56WARp0MQ1X9`BwAa!1gM3+q7@i%1q| z)hYjW54*q@@8DK>!`v3|Lh>6IL-P@i4A4qe(55C(0t|d{_!GneQ0n6W4F$Y-c*h2` z5E_&cCJLA_Fa*6g4-x5Y-LVbaj|4?kVDHpB+rZTvC}jk6_kxml^Ffus-l;Dj;(s8D zS&o56y9};^6$iWrn{eYJSn$I~u;8DMU_q5nU_l>H_0!ur;}cl$2t@D$L~zMxuwcnH zu*!%pVC^Yiz=8!|z=EL63hLd0Mmlp}+tCe-Qv8ynp}ypAis`F#Z(GAte$S z4CRdA)gXZeK`)wM;-zK~^`J7tAn=72EROkG_A!8Jc5sKxDJ;L~9K^36oiyUd4jd|t_3@;Y^`u~5IW(?TbX`K^5gOM+Ke*OQSC6ED9 z+1m>W{J`F+pui8xVtsMpH7FoNUUdBW|33pXEel%9vb_U5BJrXaW_gJw$U*y^%32SU z$YlwD?@YB~1rJ(qG#;A80!mnFAHj+5wbc%=F}|Qf3zJ?5fZTJq6y_eV8$osPPOflp zaHVy2f!+85bYB9Gyh_PXTFBWS;1G7{Nw#YIp;6*P?v_vOEzyTbZ zprM%;rf}bjfVcFfb+&?yw*@)%wFYQb547AoEa-(d+yo&MmBJvE;Ox!6Jy0a*g)&SX zf6EL|Ji2lOywK+WrD7J)`h?zI(5O>j?^IAi2la~sUIa$7gXSS%cG(2IxUT{A1Aj|5 z188goT-buz$e=772sQ^?qzCna>$ia3-V<-Ynd!)Na1Oh19WrbP&bIv9r((^wpbQ(- z+X~9C0jO!FyA_mE1G>S3@St@fK`(g3L5>UnZLb53ciIHLu!1?V#2RJ;|Mpf;u>o=@ zC=?<27}Vvu_y82K;NnmF0>szV%$y9(M%e$Ta_CECJn>8ua2lKUlmM670RbF!w-%5!9pz=sSm#twGpTtm zh-560hA@~)EFcVK{+9U+3=A(Hfwp?Hf<|V+8QSNCJ;)`Y9LJpk;y~A|Ie^BZUxN0Y zg3q!9=SfGO7m{#Q4r~kzFQmSK_HP@5OMz|=gTNP+FejA=flifo3fKmkn*0nJ2Y#)A zQZ(L&s}z8!{J_P)@Zuy`rN<8N_GqZfmVyTU!7k$f9n!z-E38n47P3>(O#(zMHlfg#|9o+>o-OZ31+0cZs6g(ZgiZYP(37fQ&&paGPr9H7S8>o1`5 z4L}={K*Qr5;3RO8zvU~asz5~ZQ5C2~{4Jn`wvfc(%K@rIpZ&pwE~xzi$#ftUAV2bN4-5k(S#aE))dICCctAroFA5<#(mGokwt)uq zz*ImtxDm_`I-e_xIg1&z`HX{qdqYsDU~LG#`O&OBetCUQoPQAFLGx9oY$SLC}jS3&DfwuP?li z`uzWYMuQzRKj;L$_^AwyyAp#eCUDq;Dt}`on5a~5?~Iq=QXJIi0!2l@i_l%5HXsk^ zZbVQ$ zERLWTa-1BXd05cqZBS`068ItqZY-n-+`|e|!SdP=bTlSNjZfeU54aj>i1Qr+dV4`` z1tqYc7m~)H5}oIT;wNy&g@3S7ZW@{{IIhPH5A)8&sP%t^|dN!fO|Z$)MD)6ZB#>++-bC zi@6olVh(sQ@j1AB%>Xs4K$lE`j1GKJ4H11&4C*K4frv~Hkpd#(K|~bjmM>7_gnzq} zPrwUrMQA*g#$<6rDjc7n7p8DgH&BAz56`#Bpreuz`IZ-^j=#kdB*O|fK^Y;V4_c)0 z_{0DI;N^ATQ_@vozT$7;VPar_15jYXE7abp z3m^@Bo2%gVHz=_n>Mu~JfI=F4IT1LVPga7eR~;nZx+_4#phT5_dn?GafZkq^X`lqq z-3030fQ$%y;g=55DgaC7A^|UWU|RWGoIy1gBRBvif{M?e7w_ev=JL0I*G_|m7a>U% zx~2t+VR@sM%Qj9-JDx z!P-H^?L?3XFJeIZs6eA@t>7?vk>d?7HF~FlauX=SK!ypyE)BE;3mgF#_wi>zDNqDl znKT}<0VnUqLm&oN5y)OpICM`0IhlWZ6UfGZ7bhWZer<)~zRQq(Na*g{^A6Gc1sVJT zv|nigcsH;j6F6(W1RqPz2}*X`J$wRRtdfHUVyRdbC=WxD?G%`3NjS*2kfzLwcb-t+ zg3eijgaE{s4xmeGUV)PbDC-6GP6ahA(Yj|~S7-}@a=Xgwq%1DD6Vzdrm5OEYLW&5V zfER)=(GoNM?Y*Fp2uQ;atgQpo<^vC-qIT86c0Bh3wVOp=oCobl0#%D1X`sX8GC+fQ z;C}LpR#~X0OQd>RK~4?m?FFS|P=XA4vHbzajgVstcK-my84Le*ND%OEp9<=Rg5oRS z#r&HfIndq-Ur;G46Z9e$ZZ4#?4~}X_kr%3j&?Xl!)VX-5W72Lq&j>1js>Q2QQq zsmL7bx{{IhhzwBv822hS@U}s?91DSLE|9=B628O?<92r0bDQI5z{V7KV zP-zI#`{I-%1E?cuqX!$N(zQKx*1f zIWm9>X%M^ilp_OZ6a=KE{FEaDXw(EGUVO@t0n`lvovWU4%8>zlgF}3NQD!@x_&S@rFj(7V(B= z*i=>Ck9_>BBA(80E#t2J_p3*vJ# zQy4%r$d9Q7#Q_W;B0dK~WiU9FGdMD&=A{-fxR&IXFr*d5Cne^k6f=Na0kRZiU1nYZ zf^U>Gkq2q)!2AIJpG9m;|>W0JQKJG|B`v z-s%PDkOa`4M-UfOpYd;p+7pj%kMSiWOBlhHfS2~1OzZUh16p1k`Uf)675WEs^jY%{ z-r8!2!$G5OpzXbXvQO~vZ=Wb(J&hsg#eH#@rvpIdcKiNG>+Aq~VCi$v6l>_8>_a>t zUv^IbX-Mmw2y)_!4zQ#v$S6>O+}$W;J&hr)vk4RuFS0>*f4ydX3EDT;e1ygN&5M-} zAq5&J%t7-DupHarwMegA-47vMhIJPD|SAgvcj3_-&$2qsrj2`%|OG6G-7z`c+N zx(K{G^iR->imBkf0j$*>76=wif`}pp<~))DU)&XgT37{owG*zQ~itzpY8$dKv?)!?(W)6p+~`KoS!bz!HZbksBBm z^x~=`I0f-FjI;;2S6tI(D_&$Rq2DoniZ4;HOr!ll%DlrAsHWDisoI=sjLZ9oFWZikIIxXqT7f0YV@nL1_~_jM@US*ZR$iJ@+&ikZ070I8QK; ze?O?r1-fayhARz}qdG(Xyyi#)pP>vo7Txs^Xfhd`eZct#re66V=*&&fxt6H%1m^c( z`EN&PD0qN2t+R0*XyI-kc&EmtG?49}qmKVT?zVIN!@uA6PxDWfTF8lv3@5p-Ray|=O1@Ghs*?mmL9h5xB_-p_eAg{n+#T;P81t2a+ zF?hbRHwVN8DfR%#wq}61yr5eyn-4N}f*HHO?L_bZSkjBvfB*mA2_D1;H5|LZgZS6~ z{{Ii&`UNU$I~{Fa9Qz9{20$sy!=Tg4<;7OGKw7s)R2pbM;v!_Bn6yr>uowM*|NjTw z0tDI_nbsNL@S+Z+#+M_lJFp_HbLx_}|Npun2IzcV#DKJbZV?4l0G$(jtQZ(x zcz~Q(0LkNNon2laF_XWDeo~tOD1QF_|NlY{G@}R_YUSVVWEb$FUl5u*OT}O_Nn$}S zDq*4}qDZY|up#$AJ0)P18fYl)#Tm#6e&GIrUC@hMxL(lVIv@{#l2_o1)LWpQ1P7>} zIkn;D|Nk$hfb>CciUAjJ$E(0oWG=*5KVVEw(VAO3<=f|f*dgBNl(z65or zJ9}CF{QuuOb;0}p|2wCyc>Di<252{LZ!5?ikh8ldz5uN?eBl8xCj)c=NN?+gw~(Qi z#)CmRpfNoyh-~lFhMypFrhNbZzq=Jg>Pj$zQsa#8FoSy+eE$zxfzHw0^u_=*Jo+Bu zl^4@Nb7)$z;M@(Kei4HQV`v6g98{)z1isLNi`#Zj1*L0nHf{y8KsmV=#DZmJsDhxN zZm0scfERO5fU|U#4Y+%j{Sh*&3@Si%0$wa|2Ul_dFVcU5DjSZp?jGo@^2MMR#Wr9` z(CL=^`&&UV3z}SJJ{SP%f;E9AmO-m2zg&C>=7WYjv=0Wn;Dz{*f4eW_MoQRN2v6XP zPglXQlhz$7fa_u#a1O9ORVxkNMGMN&Aag+@k33El{I@3j#Mfx;sER0$-F)1Wzr)k}h~kUJ$hFLk2{MgC+?<6P*0p1MPxdtl)!Y3;vc> zj0_Cm)CH={VN-(<2>CA1m<=LBp+C5|Y&;0s`V}CcRLCH~}15y;DJXF$kgp8o$IkP-1`8pDfIaM50nC};$u@en9DK=l+f48=Ua;R1Fm zsLi*1B4`pf=*2xAcuayeA-|CO0UCP-ZBqsfr9o$UJ7J1S_;wi^gVu0Nopb5`|JP<2 zphZ*25g(7F61oZ>tdeI(S{g`SD~Jb?D^{h+OQ;ER7c zK&1fx_Fj;-z!w{xz&VT`w6z^Htwx`4SEp;GZt)ZT4#$_3#dL2h8X)o`a5)7m4CZOOyG+eZfJ;=D1cgJkZEsGu%93a z8I(d_Tm#K~K}KUc9)Q-AfYWUER8SEMik5B<9gqXS`4ChoLUZBy*`R2WfkYFi3jSfh zz`zO$JI13aufE#32vT%mLuK- zt&y4tQuyL7XgUnkmbd}(b@xa zf7G*N1uTKG^P9;JpZ!-GWo#(s)1qN z?w$&&#UVOD>+)|;1v$n6v=#t#?g=QQp^{~wFg^18|No#D+wSs!CfULHrQ?$+BpUd) zH+?XLM^9k)R8XT6o;1MT0_{Br?47#cCU_F&%uVosaK!UioMgpO@@fK&y(=wJgI8vq(R zz61(h_Rrw?QLK(k9ADwofPX$Q_y{I+>hX`na4d`xnP@M2@_XrDop#%xl z)&nK-SzNHP1niC%(}h5tVUEt$6`*=bCW{kN{ICXqN|zUv$g+^&-#-!LO^B-Qo(UjR zKn~;I-vky1ms;IZ8a+TI)r*;7U>60vm|zQLbha+J^#6bJUJ%JpDv-taqTC)N!2*%! zZJlxnl(&09@`2q`L2e3qAp%}h&y&^(t`k95$%7PS@xSOc0O{ob4ZHAf2UoN~FW4dG z1-!5WGdMb17hL-PKjSRuSUfN@;6(^zp?5%raWSNsJn@Yw14GaY8>sk;U<l+h|>c{0%Vws z1KL9ZH%JX&LE)wcDq=y01P0kMFa-8O>X6>n2vA`P4x#{%csIC17W5(qTvw~?04ugN`Ww!{>z6?=K`;4%dm*(FOc46y*Qi0}^|I<2qLGFEV4m7U?N&?%Rav+6B zU|107SgzJ5(E6_NAjs#SZ1ENvONamfB@a+GY&--?6`+y>lr}-;G#*4GB2d}^B~AFG zYvVysLJ52ks0#{v$Q{oY!RvWJBL`CiL9%I`6F{lsh3?z`|G~SRAS=y4>y%rVK(pX! zosFQB^nwSpdxR0x=LSV6sD=c&0qz$5?cn4Ha%Iqq3*fkr0Vh6>vOrLmTm_UsyTMHo zP>BaBhCynf)jp)aVf_OtmLN?d{_PV%r8Bg>1lp&}0xF52rR*1my=EW3tA5g&nx`HwwL?m!(-vH`gQ%!QPxFK+jP+x#y!zxw|_;~E=u*^f)$3nQ4R zrILsV1zDINf6Fn@D&}6$C?RM8&z1lGgFqgF)buZ0wcugUJM{o0g@DRIMDYhI1%tX< zK?NS7(Bgm=l>skWj)JDZA$@>A7EmhS-|mqT*gJIts0GvA3L1`NRbd3TKEZD229HoS z9+Hp+x2M7KFJwSvSucp)c<_WII3gnI(E zY!2L_f02%mfLW`-2cPnU6wD|xNIPe2Kf*^iqKEMK6#Ci|X zmH{n3hlz6pbc0>qe2^y)T;PM!4rn3XOBOqZ<|7&1y&wbm_XjeyUMhu-1cHUqIvtr_ zTmemHflIz7GvrUjgdi2lckzfaKc`AQ$vb1xEnbwilbMK-MT^G4!_HxD9S` zJpieJj7WeYB;dt4?CcJLt!GkAOg5+dL#uy-oR3&`gUu2jDadY9fG&@}L(p*Mr7>1e*7Pk}*RGcnJoGnbz4@!vR{4`V6%C z5z@ux-wv)O1G;-b!=8b?Q$ZuSLA|Y@s6|VMy{!z7!O;$~Fc5A%s1X9ou;9fmUEm>0 z6L1EG!A-d0fJ3;?x4 zKnVquY``TIXjS9tJ)oHb1z2wo)^7sO8T{V@lH-AHEPDx^zJV;;ae3p&@S^Sz^0FO< z!=Pn5pxG+xH!lt!g3M>}%QJx15BR)sWB>&=Xx$F$2S)}_uqCiCF#LS)$NdT01Z%p*ahz$89?0u z(0ZZF_l^vpRuPDu^xlyH6dj;7LQ(G>89-$Nh#ds7>*@dhAhy?gM+Q(Nf$Vh$`Tg<# z{~*6OgZ%ga!nOzb@g9V2_1=*I6qlfVp$6|A89-$y11kfA+IvR^(6|Z6J<=e%ZbID8 z3kq8(oB6#X1E>!TQuFzpBLk=m0h#mSog)LNg$WXW^v;n1H2MT$-+AZA0O~1$!s^C5 zM}`QfIhWo!GJu+mAT=l7IWmA+k|6ehca998Q74f4ZSNczK#f?C_}X`n^+*gX3=B)& zIWmB2Zw3a2dG8zFiZfH< zlgb$i<5Tm>7}C;8;*(0#(in;h;?r{S^NSe3>wv)fOY`#c;)_cXBS3403gS~T%ixQK zK+A|yD+-{?hceRQ(?Ppn(<&Hp@{<#D!W>=VJzV319bFhQ5{q&nYjqNHa`MaLlR+k? z7BCd&6~z~q=Ei5FGNhE|=2n8-fV8{_ye$^Am9@AskHN8!A+xvu?EcK+H1L8Y5FfUv zCmz0@$ImIgxB#?{DBi=LAvq^CF%OBKm!DZ&iNr5UL|HC`wic)u;@{-_qWIjz0+3S~ z0)iPzatmBRgdamrTD&Xjf}!$a$U-5|k}Ko|L{K(p-4GG;_sG-z;Q4t1^Y7iR90)Ct z^%$(6{e%H8-aiI4VL%f{jR!${4g+7@g^GlNMn1tKUfiC1pk0X8Z(aoMLtSbBoE=Joy`7_nNC2wlCK1 z1=Iik|53J|eFPm`0KQBSG?hI8G+6%P?!W*4cY?)0v)Nt_FV29rueyRZZ*+t9mzlgc z4caLSoo{X|0SyhV1StXSEdiY^|Nq4-5Er4th^b~ZTLy*~6(A#E`*(d_WP-Rb zcly1E`iJb!M$kmf3pbDvm%zT70G?nl1qnd+&n~lJV0ZyKaRIsv%dzH#7)TnTKA_+Q z2Z#qz>{a&S7h>kyvFODc5D%hqLKDbww?UKTpd1UC&UmHI!0_TYXxbg@rL^veAd$4r z32#6W>p=76;ElTc+g$}9Eo;!hMI4~bAmG-o6HCC06A_?&gz#;N`rJhdL3!vtK>xE7yh347| z45dODpjzui9B6UC5tf%-Dv&`j&}|$%-5wF0UM$_AJk5t9K((=lLT4Zkm>UD*f|l=h zJ1Kz1P&i(k`~x12hVng_UhIGibo=sjdI-Gc0`EQorA^Shq$>w2Xy!2hGV`dt1Kf6i zPDw_AhPNORLU0LCW~c&<|3D;uZindrjah+4#vtMkA>z=n@UC5;2+;k5NLx{?3=A)1 z{`~*H3v|B_B(cPR#6Yt;;F(WQtGEX=Df(jTHn1JwrdI-ZF4TBE=)4}#)?!xB*a|2v z8xJBzVBn)HprM$67gIw)V=IvM8@SI49m{$V12GsjT^MjO>Q+z>{KdAP|Nm!zTieiapw{=W zY^#m5CI&QN@S^MI|NpxLKsJDjSF}yef2@+_B5H!LI>Ke0xR0ODuFsETGmrXnEYH?+8;lK+*mXG}FzP#qnZ>1iX6(9(ig!!~h3_11imDfsEnFO2{gBv0of+(2LD5_JtrwlI8*pi@eZ*m zLLd_&Kql~KRb+q$Vqa9jG#&_ekq2X+fLyH7ct`{^J^kX@MzG6Zq4o@v^Myd`iol8f z1-QEk+P2@>bO4mIzJEiMntMP3&%PlqG@GywBz6gOavNwtW#hpkpi&!LRze~v9O7uC z1&2>SIu?LTL6p7EKw>>0tDsT!0whrV?f?HBpkY$T9G?-$!|5PJkk|^Sdl3oZLA8Kd zJ}*2#0?^oP0!5uUNC2XKLIlWAHPCtkP;G^|YP$4K7GoCciz8y-sF-2>p;iX8{&5$B z0JyK5);Yxkv>xKcW6;jk*N0&dQ3Q(H^PrpmK!;?zaMJ5IXW9bBNYf?3sb0S z(BJ}+usu}x3&;}CS`e@UE4-k>pyeY7)fFL7VbJJ91}J5Lb9Z+W$R7bOKCJ_X-cIl} zd!W{D*Bww)oCa-21@%n9xwab|MvVtSRs_DthiHLS_DqHh3@>Jb)c1gH!2q9ZF%jgV z#zP>xgI?G})kD)V2S|N3NIiyQQXwkQ9b@pBpcgwKYQUpHP)~s(A@IclR0&Xcf}$bdMLR?SmN(c885m$i4GYK* z%Rl}9|6&nn`zlBe$j9Jm)*UFZ62lJ-{yhc^3|YDv2SB^peTAU@xDW&puz?9203AOK zTG9tHCFlhU#0f|x$0<5L0 z068b{#g{eUfJ16QoB)}1_9M9304E}lLpmElD;YC1WBS4Oy#(q6y^w;;Ne8@GC<3wz zbi?%r&=lBy4;D~EeJQ9$2QQ$UxzmV&f#Lg4kYQaQTYF6!v!KWK{DLgBgif@W%YjVd z2zXKV5tIQz$M?9ykMH4vM(h3)y&`?xt{j~cpjoWjQD^2(&?&m#e`X$-ufo7EbLWCK zMuzV{1Hd<$ym%-8Hg!ffEL3}0oWSt}nn-%>1o0Hur2#Ko?Z9fmO2JNLX#y(+Sp_;D z2vlNpfC8jf1axvx=LC=$FZ)4$1r=MMBmi0m0_qolvlp1-%5l5_luW@KkTOtu1am+I z8z>EeIUr@AbO+{ulz}omm;+J<%IaVaNEs-DgE=5&pll81fRusU2I9QX{_y|*3pEg- z_yM#B##Ny8K#4i*>{;YtSCg<4qtjkQ0$= z1JEe(i^%tgh6!lz#0!u2Acy-3w4MYz9JI6x)UEvZ7}?>V$^Sr>pcl8{qTKLQSn3NY z{Yzc5JYLND0CoKlP$c>u>FfY4p>M7|0(ZRz)b$}^&|)8?AmGJAeVFS(p$!rPxqg=j zDAK{XZwn~L%m(et1uYQ@WNE!rstRiNsTe_Xz5<8=Dk4CPfENbo0-(<8Yu;{uU*+z%tN0 zKhz%}b3p!p)e1hKF_Ko04rnvL42Ir*ZsjX zf>g!5xcvs6`T`Qb_W|x?&;7ZT0jO`m z3%1(c{QnPYHalj#D2G^kya}`r2NYH>Qb9VPW`g^zA#eWwe~}L&vOok#{zbwYP(A>q zj#6maPHR0`ssqoTC7{#+%LkVqKvPFa2qYhXwm^Gk1-zK`7Me8nfC^&QJ)KP~W}u|8 z2c9%EK(0N)@-jpiwARB{0<`T~1k|kxcyV?uXflik8r2|;Am>AJ7k`T}=mZ&1xdhs> z0+IkHY|zLbm;)-8M9e@;aH(*-0d$%khznK*+Kd9`fRusut$;Zo(?Gjcz#LFE0c}zN zb3n>K!;D}KNEv9q3YY^@W&^VaqzrW09#{sX479f%%mFFOK~@IZnFW>sDcfQLVuCa7 z@x~1>4#>0;bBGM0+;U`jvE&tU@)dY7<<qW^c&~~05FFyz} zFuZ7g_5c5iCJ<2zA}T;c@hf;_DCZG zV6xeubpgH#fiDigg(5PR$TBdz=zk4O3Om3_VMk{ZDB_xHcfgZ^EXW&2SYCPxfX)_RG*1+=dV++^e54qD6l{w~yyC21KGK&#fFwKuyNxb_Zs z!N&t)fCiw`Ivp!O8D+au1!!msv>4;Xf-cbT0Qg!8a3c~nNL^6{5*O%n{n1?egQ0|@ z+x5pw4*>>-*9PGAa1cvSbR0Vc8t4{5(IE!X0j=p^sSK2`EUXwnlOqf-8ejbX5AH}o zN;ezOwxrk>|NpzMcA{`3F;U;KIw9`57^54j*GEsqS) zfxIuGV76}nS1lVlJ3u+Nxpo8G_7~3~Rf`D7c2IQ(QV{SW@B~;GT6TcMK(@c=0$JJ$ z-hvA*+CWJhR`J>0fktqt7a^4J+BTH=ubnxcOp1atHXa5%2$>;RQ>&9y7wj$ZH#9AGcc z@Pg}~?k13efEP1kz*RIf96@3rN560ay9N}5{H^yuJ6%CzxsZJF{T4L9_*+1CN@W}X zH4!E~hX&dbP)2rL(%A$mTAOQ^!0lIn+V2ChADjt6O&VM90t)crrWbMTpqv89L7+Vc zjR!#`a^MTIa*#M`4r1eFV0f(u%0Xbg;1xZMhd}CsUbG#@%sHo{r_js09XJ{ zH48c?f@+ZF+6C|ckbeq^0B?v>x;sD$0$=R-4t4~rfpZDe>{|lbFAI$lkSdT%kdkaE z-14+6P;tb+9n@Bhhl>XA?*}!^OFc4NKnr5NJ%u`L4%lgPIwykav*y}4aHoOx=Yn$h z25xX&+T8(C5cp#69wp?dzaAqJv>r&{P%oFS3#Pf?Gp=-rY(>E|K9~V3>wm0ivbN|EdVKkG<&>MUQBxY|No1%AYuiGSPU`~ zRH${tf%aIREP)+`20F|t>;^1u;2SN&f?hblL`x+yCV&P;K;1)wz!x6yU=xAG0k}?8 zc>MqWgx6BwAmd2u1|M*e)(JkpJGIoH5^EhB8PXU`erLzgtMrp2{0ylXY)Z{~)3=Ggj22uht?So6TL{wKc+ds3YzI_NfVf~~2Oq(dy@-DJ|No0HWOHGw!a=*FTLce)%mVf3L7Kr! zd7(GEwQzx?UT}l-vpoc@TLm4U1sRkAsck$oiy!2hRkN}9W|jy8!;1?KkbD#P;$RWD zy9W1Az>E73k&G*#g8-Z!LBqBOoXmPUCxY6O&9y!7umzb1%Cmpi85mwmfeS5=LqM?z zZUKYTgE^oUhC!$6mltsl{{MfG2_jNJL_COy0uiAgA^=2qKL8Dhfj9Mmij+H7pwV6u z3OdP>ryF!IkwDOkBQWt&3DA*yaPc)T@eBr9l;R%`fE4)=-t87f)bD zm4IYHrO9h6=vk5~0WXfB$bt@feJul7`U^671zeW>xa$|tS-!7jkSdl;xNF$DeN{Sr zzr0v}@BjZ7o9_Mpk93fkGfY*f7`W*OsR8C*f;rk4R4gDLT<8=L(CzyLH0J~f*iEM3 zC3BE&FKBQ1YaUqX2jaa@0$FMcA}m0J@jXzn0B&0&H%|7zE%XPa8Q7Vj$mN|`MuI#8 z!;7N((Dd8^O7X58olT%FQFCnvJUuhq0~c>Eby(r05=aRs31=CB8{18w)e8YHu0sYL z!6RrLpw$X(cVTTz(6EwOMh2+TV}x1Q0?t4!ofARbuIAbnxP|?9Ar|fi-Qmm&&Ojg~ zAPZpw7E++fN&GITw*l@bu*!f>xjH%>oXKITR6wde-a*RVoxX3HYu_-GXrgo^_CXdJ z2fR4?-v~4;((U^ut&{P^_B;RogG$ijO$JsV%NZD6Y`KHz;F*A0@{>WPgX&Nnn39Qi zpc~!61t(~PFYv`#YjEyL>vVm=zdiIt5O`1;NxpX$*xg_`NCE*3J_o)?{R46jXqiG< zXA?;1g))lipuxnz7x_3%hsf(=m<}4w4t&9mY&uBj#nIc4U9evuxeZFD z;IFX9)ub+C-3zK`*5Lfx-;b zRR%R$L1Lg3l(7I5LjP|=vs?qn>7fms6G3AQ&9x2i9MF3Uk^?{+j(c721Y{Y3RDy=# z4}(wO;YsUsy~4j8B*Xv0;TJfOfOhlnZx6i^^kV&QumDI6ICDUH2a@MtK9U8O*N=$Jpq zhUgdbCxdevSP(RU=mgqn^`a9ZiZsmv-s-&R24W!zXiL_Mg&+Z_6F_^nUQ7T9K%D@d zlCHl2Dsg^57U1p>cVc+)cN$~?ZsQTq6qxm!7e3P=%WgqCN)L!TG2DUPgK|dPiJ>Gl zw*a(;54if&+LKcV!y|ABVWzmU3y zNSEM%=L88r(Bi zAPO`O2b$5(108S+p3&cb4O)Ia0TuDSPhd0pPvGUJ?^RII#PU)>4mzX)nyDKmGy0&z zdB9n-8?sH}#f3gdI)+MsI!T~bN6?Gy5Q(fPaDma?0h)&le6bKo6x167O;rZG=!S^G z)(e0P0j(DZdT|IMu>-tb0JH?85xibt_GNIc?glT40Jr!+Q;`{K*%_dhxio?J0WXXp z+CkM9$TE;1WO5l?VnJHR{3l>F6X?w9ZU-HdDP)kAUK2;`Q^;Sy4K|K|7uJ_SF^)Qg zeEbWz9^?m2A^U-+kU`V8ua!ZL0Zk$!%~OLd5pjeo8jN$i@R=pM7qXz!x4kmb#% zL0s^ZSvTk?FOL_yF8=@Dj9AS)8^lGdX70I&xth7+BD^YxtY%IJ2|%l6@M`9;i{Mt_ zht>n723aC6o?n9IYw&dtp$|F(6`E@wz%w<-JW#*dTZ)0%bryLLd_0HW7~&Xv?E3 z2P=;TXul&!0OJ;N`rQ7eH6GfOC4|A<%N(pcl`&!2SYFHiK642E0gZhOFiVxdpVG7u1c! zv)}%hCa6&=@Z#TjaOQ=M{Udi&TaLi8B6J!c_#!k;?tshMJFsbhJMd_EcpjAVSYB?C zfR?qOA^(6EUK_x|&|xf)7^pCZ217v2i>UMe|7W4D7G{Td54>9p>TmFVu@~<;!TyFd z{LDb(^HS##sSCV}m=h!bOvDzQ!5Vak68S!(F0JNb7UIKg#BmmU{UIKg+Bmk{L z!ApR*fCQjgz$<|=MdLWk;oC9sB2c3`w8kK512wBUU z1@RNoN*wT7UgvZF|HD_dftCXYzWC4q_C2g<2BkLeX)-UaLnNTV;#l^A?Ho8>k2k>= z0<(Y|19csEA@Jj~|Nrj-F9Zg!WdJV(K7SUG9Kj2L_kjeUy1?7x*PaEpp+N`MHy#2V zFBbG-6^iAJ;4$YmkUp5#L9O%Bv*1z&Y0SA8NeQUe_#)^m+8SfU!>}ZXvBp>pt}%Xf2GW^_BzkOXj58oUf|eSfCBC3JQ0N+C@4cX@4jyc4j13_A z@T@WJ`wr5KYmM=Tc5wV+Ut@e3E(wZvv^B=t;F6#M0DX<|42Uc=c{GC87(Y3U$Ti?K z#+N|?(DV#mL3{`#0F8SeQ1aaf5`ac3cxG(D>Hq&<>;@6rPJ_yC-!H8vQD(;S4?trO zWoAqhCJLJw`*8+ZwA=s}EjM5@V>jSMOWSF18S*j`dTkeUW~|;3+sqiWXqlh^>PG%K z1x$ixuSc@c^sruV`TL(JfXE{2%V3rP$ymlv!UVrDNsf)0KK z%>{#83=Z?O&OnnFw~&Rw&bE7T3`5M~#U>0fs~7W-#g03Iu99bXG4lkdAcCv}09gg9 z?shPMQZBeo2d^4SJ%LDs-$1L^Lr(nvkG}B8;l%&{FQP$2*a=W&02(9%uY-8L2Nubo z6+p0g=!~@CrTTty9X7+4`5?Ko!k1@* zR+b?z&u%ylNqWIBCxR3NyjYnAE(KuO2DF3?R@8x3ufd7~@WQpX$Nv9+@d89VJ_d;; z(5fJiIUsL=Cz;`Ev@RY)G#kK++BSd$VA&f~tIY=qK(jY^QCr`!|NnO&7OR05wN)KM zUMVyIyr?bh7|KF7@S?V$W00%@-f;iAJ$OIV=-bVx4X8{^3Z9E9tXA$_~eFM1I z-330_8Qd%Z@3XJ~83Gz01NUsY!22vzKsG@OQt&Xwc_h*R}`flt)~O&I63!Isy7hG#&AfRZ6B^@5iYS|0&7<@h1C zv%Szh^8fz?Xj=EGdLaX{2)aGhG2;dAk^lc+Xn+W15FrO5BteA85l|R_vS}%f?6DCv&S!wnr@I@G02)fct^(Zuij)0Tg5!gyI#G>2Hhan-< z23l(YUNnPsrI}A1EQCM_4ZhOM_3;1yFB}fT{REow0tGW@mDtbi2#-LIqGbtqu^A=` zTSU}!1nNXkD(VhB09!d^#nhVf8N8pP}$Qn85EI&vLDbgJ4UUVJ;#SqSO z$hklpazg(gZKVkWZ^#J(X?uMhR$PHMVrYz0-dfenrmNx7rwoC z`Hc&D!Y_E$&WjwF)&l|Hqdj0Neq69<-3?j?0ZPcAC2ycGdC_+eQG|lmyXArept%&h zUnmA704+kn`-Qv@{{O!NG&l~LQ0i<1?-w!$DT3+(?-x=#2yNBD_Y0|jL_l`K_X`Of z1m%B_FlZGD_>M7X?g!2Lcw~T=*3}+@CW1Ynv7pdBu%&f~#j)H6A?frUCv@QrXc=AL ziQJ4g)VVNeYXp2jML&T-1Z%!jYI1WjNfuee-&0AhX}VyOp63D`97zz)c@ z(1j!C4?0mL-WloLn^$TZOL)U78=u&u@X|loAif5~)0x z1slM@u>rP33bEGj&whw=&vQV71GM-l@Ws?i$m@_mVjwGF1z8xVC0?{2Ud;sLy-3*) z%Ddn)IR(i@ws05uK~}BZIRN!Ce5oI35g77PzbvSWY#}ZRc=7T+=;Uf9b!5tM~> z=8gR|csw)Ug&)`ns55W3?t>-46KnVGg4r`5r`>^1Akzl506Qmuw)KD)p}?1XUD}H> zw*X${wr?*qpMjQ&fok9vdqAqt)`88~ix@TlFBWUx3)&yG7Zk(b4hm?U61a$G33{Qu z37Y2kTh!p|l)mkQ#_|$y^K?lkctH{J+QgQ<;IMre4mvRn)I0^Pq+tawI06k(gLvS< z&+L;7oh@A81xIjI;Ppl*st!JcsRG{-1}+r4!K;>7L5qX}UbL3OqM>^t$ZXL3L=$+C z(CR(lAb|)6y_n+%StJDNSAZ2>O6!~mR@ekm2onx`u^6HdvUZ3K=HCUN)Zx0I6MRcZ zGtyGTDSIIPO-HP?02vQTP%k|8{Qv*Lc@MZt0BiiSY=j1D3G#x&cN<`$paq9tz*~C2 z3l3ZNLIWJ@? z4Q;)E7w5Ge0IvcBCxx(}7XfhBfmQ*6tM9PD7gjJ)*eXEq>ZpJhPH-P)fomfE?clY0 zK`(Buhk4RAcU3Qa=#bPcfpII2??Nv{Iy-6 zDjQl2ffftCI06y@FWLgtL)~Dj(mE%ApbzBFQHV0bMI&fXv;pcs1bdFTKC6Oh&?EnWu;H8XHw1NH}KoC|!~ zE+|<#8Gzd6keL}(L6FlyyQ87k%^*%F1}{dM3NpPLG=KtH;Sl(ul^I+;f{bYbwKe#+ zcYs!8z*;1rA{DwmVl`MLXi^?Dzu^1hMbys!|6io;gryr$h_@anQH3nZ@Z|vC2f+pp z8{XrtKfsGJl))}={Q-3|tQQ3!9#lPe05KjU08#JA@*;3MIL<)}jJrKp(mK7^Uf4l| zjyrMu|NsC03wtE>1uqo0gG#_G2k@K>=#bZ-7v~BgJ_hXwcjbVb5c^^$L=e6^hv&uf zZQyKr+yOL%%<$p`nEN6=uK7rY^_v$vOOa-+q30Wc(r~~F`$$lG8Pu|XHG_4bBA_u@ zP+ALmq0In_E6}}Rg{9cfH)?*vaoqI>Xxk}Lk@zn7++j{3eM{R zFYXBa``>&-pwsma^!%f4*FViiIIQ2i5JGk)$TTn}=e#G_eN5H|>xsF)3H|)1<~KaY zUB7^ANA(u}epk>f9^E006`i4fj=O#VmqXeA|NqYtdBL(B?7>dgKh3p&;Dd|v{)2J~ z%gb%dpeEIyv~FLXv`&r}>YyW^LjQET3UoTLywC*keE)QZ{^@pN>2&0HApuGo${=$= zdlI?@yFqJDg;&GMw@7Gp5m*xRLiQ>sS8;&$k@Ii&sD0C0-1iWbF z1~~+@3Ko?0zXZNGvI?e-quce%OHoh>%hetF=eQFO$XgjLpyaN<4eBZIMk3guL?{1& z%wl=@5VURqqz*I-|0CeV!#Ns|i%xzVchmu00R6%rbd*%+kK;}TS)gs^4xn?K4s`qe zNb7V=d7%X2UFvrIk=8i@T#E^U1WtB`{z&WW0@q>;pp&FPtu(Nf#uQM^20HHvynq_4 zF(Bdv_`E03>2VN^pkWE{c~8*YZ9mdF8$sg}FE&F@Z30>M1vEklx~~Z|?(ie6(<|r2 z6p%F3ZFw)+Ks<=s0@PkqfR2yy<>(d!+1c&Im)7YK@gf-{7|PMj1ae$=fJRzpVA=~m zkf19^HwVZu-HtkGolRiN%|PM^6SUGg!Q&?{lhHjp^N9HX?(Ca~|{ zflh8hm}8LE*#QozYanr`Io$%Cfd((GfJ6``n51<&<-AxA5=3Y>OY8K=doc?n2-Ta` z9iW!h8JO~-6(k7N-tEZI>7?_b2_yu$W2Dqu2|dKmY$jDgfUf z;7w}Qu!Rgx;H1g|3a(DaiWkZty`evXUhKL9PEMV!UqI>TOTY`w6|khq+U@$~b!|7u zBn43W1bXll2l(KtAKlP{uQ-|y#dNzuxS)WC9(2X=;=pfE0sI5X_h5Rl9xeb{*x?}n zUaOydh@l&l`+jtWFbcr(c<7(bkj9E`*DuXSc&y*NC@X*!p-Ahkz&C_tp8(ArcDrza ziZoExFR^=(0kX#T4?ko_vvhMU4?~G)H|XL*zek|bkL9>4=x$qZljcw03(b4Tg5W#a zc!FLebAW>dd=6&$CU8E4tp0kH4|5Bshzjj~gR8uPl~5-^=P-%9NP-xGRzm&x1-9m; zJ81i%E3AY9l||sf2^=!8a;X4xmr^x|C<76VAafxl6l8gPz*1PmAs10q7to5RpG#oM zP>QHWY#^5)6;X=IVCuj{)KW(9>Ik$Vs%IlOXrMb6VMUZ0)K`U|Ss=!4NGmGvg+DvU z3Z56B^PpZF`uYF=i@iVp|IcCvHS3u8w|fW#zKDT4E*84|sR^`LE8vAQOrq2Xv?qXr zfBQs`M9>Q@xP)XDD`>!Edk07&@P!~uqC^NhI|C{`Is;f{y5&K zU<)dD85mwjf!rnf6O?q}r3+tLXCU~jH*op}=SP%Gb`7#RHQ>eFi=e=UWin7SImQvW#;saxw)aRWJtKC-}mGf#JpFTn&cs-n|mX|Nq}<#fRlO zLGZ$?w9eKEpeq5sf=+2Vnbz660yI7Q9CQbpDELmlLyVnZ#_?8{VF{W z>Zt+8q1X9=GAoz|&abUL$01!`PzBrB>H(VlnF~5}=>sDJ!%omavDp_HdRs(6*DM9R zF#ZH;igEC72kj@{A1ZP15mPtBgbvW58rr7cOp0Xl^w@P*o0P_%G> z#xVG|yNU$72>lKUXO6VaRtu0LdO=R%-#!tf8g$4yNHE}q15DQm&<=J9&~>pA2OltX zgH?A=1Y3I{=tXBOs4v3y7XbEi_f(J@yPH6^2E4eM2ht3_<>Q6t8Mx%hfmUtynjHWC|FuwB z_f!xAa>o~#$-lo9B+~ptpf)7SW+&*{YKZYmUVu^^SYPHv(27OoLjf=Rz+udhWwQgU z@B~Be6y7;EK?=d9WS#&kycqOC6{7HUUq%5l1H&%RE#ldS7rr2Dz^iO$>ZtCBl5jy0-c+|Np^J07M}t2I|Q;AvN#|~v>UvcAn3)b%OD9J$mrNbhRznz9pC@| zfARP;>|8Ez_5im}_J98W|HUoHZA{I(KwF0ypj+}?IhuFu0TsCXt!qImx3_{+ZUCLm z#0(0*i6CbOy~v*r^-hUo2E#8<6CTvG6AXHx29qe20PRxa=!O>gd@%76Q^;{VkkSTp z+QH^;;9L^$!U~+~Ssudzw1pPu3bUo8+(3Nc6O(1tdWxE5|(mE%CReT2Bne?(1 zvQGr+_!0|2DlK1*;N1dX*$M}rq0pFqP? zX`NFYKt-$;=&&hQ5a9qKtU;$efwp>gb94s^1ikn@7Z&Cz(EV-DFn|D;lUBujquq@xV#W(+X+KjXD`?x3qStys*u(>Rp9sk|1Szahe^RxPKhWurGUbnf4`GUXR89J$ly8-ra?&yysZc% z4Ql;?25&)Z{{0?qoxL(pr63xtG?b%x7f2eU6f`&qV)O40bn2W6svuu;9d8BEAf@2F z1KHq`1XLG7s_||?C>_WGs?EW5Spfg`UXYVO*QS8%0o5xYLqOsn{|9EtgYH?0I1ajb zL%z4QT+=*2AfSO|!G z%JKjI19pOr+=lQAzHtFY zU-%AEkKjK5@q2qg5g3Rb%e_-Ujf)_(!Wo$lD%By!`a^`}>pucEAG9hOqMzkA$UJa$ z0oD(yE`oM|+b&=}sOc5r$R z%Hn^q_Xs$9!@@hQvqe+}loe9nftFNsgOvxoD4zw(v)mA&m$GaO46tE}GEmy&-|kTo z_(Be19JuyRg0N?_9;nNIVG6pNDFHMk2`;_6K{ua&oC!6xlm}9EHCMPWlsZF-#^a9Q z$_`Wvg~|lIFuehGX8^1KU#SMblBx%!tH`F3^oi?A?$&_QD6|NdA^bkV7j#g)yiD5cI+TA$JT? zZg+Pa05K*mQ3ajAm)6;IfS-Zkg#_rBC~%x!1YHl;-6H_Hb)fm68+drR39O|9q=kR` zM34qhcs3sZp99l)5TrB^bSn$E6JK3c(ctQaRr622@~zV+qn21l=a%Jp&p`CDO1ERRG=1 z3k{z+H$k0So);mYBctGT1T1tp0$*6e^p~nZsu}+6PGQj2AOH5in4lLwr$KGtZ#f4F zJ#Z_JAGXyP>=OR%P7$EJgy6)(za3m-2E9$<6 zH$7B4=)NGRB_0uhSw=8-fvdlO7bn33864mZhP@zDplzAPL!iltpckALpoAg=$xB%b zkQ@>4B4|3)8zrzz@&mMI()#uP|1Zp5|Nox>4p^`gK#B6jCz!WUlD|#rQ(z59l%%8Hkh9I-Q(er$X0FLYpYnQ(?}4D&pVoRM2{$gwOaSOp}+> zYXi77;D7)hhYqh%vlw4&{SC1O?A)|YN2eFTpaZ19#q=Qt{_Q=ipppt2FhMV#Re*wo zBTE2Qd+~3d!V4-$f?h-)07nvN1QT2r?*!Mx;Hm*s69>HTiUY+M53C5<0UG0mmqT}7 zg6^gP*XN*m4xCd#cjJI-nciMd0hCxlZ1)f+22f)RRBBs;#6hh!CI$v$ zklsuG|AVT0Wstv4|Njqa4v2vKbsBQ_3Li)fl>I;0i2>Az0h#$Z*ogs@3qb5w!A=aI z`~hO$4R&GxWgt+a?P9PK1E>iH5aTUjn-xB|fbpz7T#{N_<)c1L*#cw4B8B_>>axwI}hQt4IRd8pw_chN9HO90bp`B)=ryCkUh^xwNRrEhn)gFSWQB#4k$CaRt$3`I*U?dFdeU zr&TZ%WR@gnK-oFP1@XC=DIi54W?pJJi0KF+LCn;G;s8jXKv@i_d8tKk+v7pE!=Q+O z2!V3>H4PA^+TuYmrmCo;3-8=zn!7EmV=>`KSMx( zf#Jm-$PC=;u&ja?3A4dt#h|f&M$j<36-X6$Z^$&LDuZ6vHvzq%iA&J^8bL4e)`9l8 z34m(QH{bzM@JMmMi)p*S;>HIc#n^!`Cx#cF!a>DY^AQQ_H!s{GAO%<21W;Z%5$443 zH#gi6JdBrzAc(KQ%2aJ{5@r-zFd0{U(bWdN~OXs680;LUTLV za_cuQ?uTQ{$b!aKr^qodyeN(UkFVxD{QrOFQg&?PtDvGPt+RCj=zyWCpb00?%urgl z6BFoCUy$GdBtf>c&ej`9*{W5#Q`shXMti#g@3!RNMP?& zkp7?-{<}eyDQMKU;~{tu5TrHWg+(Mt7`!xsfBRIBRL~0-h*Q%#TS0vO?O+Px0+?wN z!DFyINOA&!FZOH$dl9Oy7h)RddS;LZdV7C-0N))9an6B-ASVj&ZwIG=fZpB}55ck^ zML{n<`GZ`=!@s{3-2^08oH{0sy2Q6fmFw0f~bG zBQK9-MvdoM^T@P#qlV<0~N z_NgEWl$1n3Z8DIqz})nMT7wd7FN$`8gh75O0r>^H883X`stO>gK&}D>8Yr3rUifxG zGX;OkKX79Y?p~05&yF7U;@E#SZb^~d?Qw}Oldcwq%I4xIf!>VsaSLDZ#nwu1Ql+rbpVnCTr* zSC_cM5-?27i)x5g&~PFwTzkRc8SvslHrQ2Z-C$3qb@qZB^}-7@J@!%(w3iDW$&l3l z;(t5T9{!e}kkA3?03|Vyvw~jm!|Vc0DD;A&A@D`^Pw-3&)Qg}{fhF`80TBB!oP1(4 zG*rML05T@%g$m3Vu+d;^Uj#tZLGv0S*+E?!2y<R0;HxzK*+6Rp1t67DN~{yZi`YO=r4$coTR#W{ zwXH$5gY}yiivuB56u&&^as-B)SSJQhUI4X0&&N73fbu7ZeK6LE0puRgR zt=a%qin=au&L*%VDEom{1^?)FvI%%`+#8&X0p?`w9!Ik8XZo!}zhZchhPabgp95m4y`lHu{ivu=te4Isq zqiPldHray@8IH4XbXCn_0AI5NUXSskH-wP`JlA~j!EqL*GgY$~c7i(o*`N`!AH6;T z9MHim=Ho1k_h7OIA2M`fSo;KK?ZF2O-M$Ee4?bWx&cdWt4K*1}@5P75SvWkZp>8_( zh@smR-P)k)Sqz}LLfOti!hJY7;*FmCd|B1jCA7enV#KONn^b6SC7d80z`+i94 zWbt~T_64-rZ~1G;(RM#NnT!v_L0X1NP~5BGX=bO*$+_#YAzlJ<$v&? zB}d?k3s8wr4v4Vzn-{je$e9(=|7d<=65d;TW+yM=xSWL!x92bzAMJGg16r8w`T(42 z(mH)FfI=x$fPXtnsLTDC3;{3Jt_O!tTBqxo7mA=cI~mZ#891QtfCKstG@$SB?{~e! zzu)(a^+EpLSD?ybe<)~m&z*}8(z<&tfI>U1)Az=UJD>jl?+tws^y0BUXb^@4a`qU@ z3l(ngx>e9oV_?%CfK7h@HT?nqe%A;5+kG!sAFQqB-yV7cG&lc%f4}b)=7Zg#BK+Gy zSHm|pLTjrMY5x7b5BT?oUSU4f?JAPi9eN|JQ^ey%0%#%)ba3v$2cR{Wpd=4+bvI8_ zApibQkR4Z;FLe8g@b4E14C-}#5zr0F?zh1COyFhie~8OLS?~obSdio8uYaJ{^4Wl1 z(S&3th8J<(NX7p{Z_xTY6YDoGmU}}I3BNq(G!=#nkkbGE|AR7ENwO0|Vllk?0qTD> zz5yMa8Q#114(M`8Pi(OU&Z(eDf6&Us&X3T|plO}G0U&{jkC6Gl&^Iq~KmPv@F2F!1 z2EK>~sbpnfU`Xrqeexm@G`$uo0_lOc{&?XC;`@rEbql6-hJJZr1e&e`Cl7Fz^8Jto zIX3G9=ynwT{jM*pFYx#N;bmY*>-H5$>+DqkS^XDuXGr*gG=AY$5fGmj>XfM-Al`kD z>~_}=Y27@op!Aj2*((4NKmGyY;Hf+y-p&u86H58Fw}RvXUTCd_Cc##Y|DYwtX`Q_+ zAZ3%lhJ}7e>t+dMsG7x)*4fGc60d@4_k98ypZ&8MtQ*uEd658N&j`q3;osg1QXKdq zXFpgz;6*Z|j!5fl{qhfV5GQC-=KufyK`*)>2b!jJw!ZoI|NjeVkXsL=b+*0$@p!?G z@cjU(j}9@Ub@!Zrr1jnpAo;hTt4Ov_1^EQjyamzFmOVHM4?bXK2Gy3|oIyno4=CmL z{`m)82?1h2(*INtlYe_FnA+b93I|X&TMn)jz>=Uc4J-{>uj0$oEi$olN^1ltII6)e zfXnrOMFU?<*$MJD%gmsF?x~>luR-152n%>|+77h3MW7SR?F7s5ZwEW-;zR!JV9P*D zaa?)2eL7e=d#1*KED-}+0+(z7iw3;VM_AGevLvv3DkxP1y-34m3D}MN`@u<~SHuzO zUt|v@fb3fJ4m1P}Rt%EsX$6S}zBml-#bWW$FI!w5;@=OBm|hkys1HGdv!OiQE=??* zExjoq%WT1xfxQosoB|dNdJ%@OtQF+3fbL$9#{ysUVp{gn@E^#*p#ni!S}*Rd00ldE z{csjT#(imLh8M3)LGI%T3g|`+Bc*y!aR$15M>4G&oG8;eTfr%R253(0ytrM(@fBRIBL{K-X zkGvtyLro75mHgXVL76__1v}gz5Wg2<0b06pwg$Tm)QJJ*jKCL8??FMq1J0RY;LavX zXRFMAP*{Q86OhIKV%>6(8t}3w{_Rsih6lZv1rs|EkR|Y<2f~B;p}QAkK;VmQpFsMc z=4DC3yp|>ZA_k&z;~lSA{I(;UKF6U&ww1`Id)& z|AkI)_`p(F7XJ&TWgsb7;_L0z`2YVuC>+3vDog&wqorVZP!|jq*%VBmp-E&ukZ zAT2>z@-MbSl)@qv668=Pc2DUAm1{vSE?okf2hp4*4<6)#CGHoh5EH-woC#q=O>5o@ zidTl(9MCN%Q2#N)_1Qwyg7jrEzIeX@Y()Sp($7PxqJS62HbNv`+yy5m@KDl=jZ46S z&_Xh;(BEUAOCij&;`b|2RTfiLDm6sL8zf)u`R z02%l4{$EfQoC?aMpehR_6Y!!GZUob7IZ((!lKBf>unC|@2c?gfE)cz-s`cO_CXjZJ zaKMXe6)+dDzT619trHXupb9kb#cH_85g>D?f<%M5L2EWQegjvEAW`2Bf!(1ZK`-V( zg!s3+J^>XZV0#`ifqV+GC+LM9G}yrU3n7YM+k#B!1(^#mBoZRdza6|xS%iOkAXCr_ zm&M=!2W{5tbhLP3`r`lp2`?R385l^+Hj_b3Usz4;K=$jY!o;MixnUqH2L#y5Aj_P^x`R46DVJTOoF6_MyTPT zZy@1U_!S&}FI~a=T}0Bl1DVn~r-GJoya)r`*#c@AbAT3Sfhsx|sAh0O4Wi!=qMv`e z?+;MG@o#rx3V0y{wip!QKA`rn?*h3QeK>Euf|OFH)XC zV#@bL;0q0?`u!mFt{(zk94~_^F4g1T4zV7T#-@T=-$5@{E`S<;AmD{B!r0fK`Wn=^ z5Nv+MnASP<$3I9ruNA~dYkmPLia|{N?Y&@X|5S(n|NmQ`ssUBwAd&17Y~7(E-A*jc zr~apPhH$XF=zj`ICVRkroL-P>&}OHqr=X?mB5B>Npr}skbYgmu{`CKU*it-jLpT1aey3WA%Up`Z&Kdwniwz!GscOJG`O>jO~ay?z3UJaC~En8otK<}WyK z(mGo~y_*+j!Lp$rps|kJS%fs8*MROx0jDNV5P+*L5Cd9uftZN!0woOVQ=krFE2#7W zl@MSB`=^5JVm`&c-Nko7z>COYXzZ0JA@o92q;-RJLh_R#$ZG!Wy&!LZDl&*!V0SZL z;NR{Ox&V|df?jZfSE}>8O#J`<|I6e5{{MgZjDdmSU~G99$WiIIQ1>x+OF3!w@@Mf>*94?!;);HrzeT}Al!b2PtX zOzQ-v9#BAmQ&<`zvGH#QCpFM8i1k5Gssby>KE&4TE7Bdv(tPrNTBi>a%L_};)hDm_ zcZ0fypxt6lOfS?PgI4Z?deUFgIt5>dgH*hH@evfW$R7MZ7wkb;Aqu+RWCCPxw4um} z;e~?@Qt$Y%4QOx_)YG+o^P*zX`QX0La;mZ4ga<#klNM*C6b_P@W56DzOY17#u4;FOpFl^;<9Dy&~@?i!Cfy%znAE41N*B_8l&-DlYe$Z~FH~jmVnh!8q zpQzQ&VgU*9Zx`|HDVxO*^ui1_tO-_^*6HG9@`C9vsIu7cI-}e51#5#4Xz?lNgkDgA z?+Z3R^ao_LA@m3Te$aN}H~jkrn-4KsAF4G4neY0eyBDN^e?O>i&Jqf;Dd5E!NRt?3 zeK*J}Ae&}@rgLAf%VNm*|Nnn|2G{k)4Bf4u%o^~5S0CI93<`LWtOsHV1O>eC)CI9P z0$xm*1BxF|#SO~k&ZLOG7^{=7fuI+5P{;YcN$YeJcp?7_ z6pj3#0~p?3KofMg@0;d>B7rYLAyfNsL%<`MK`+k1f)#GaA5eMV`i6g7 z2e{-p$=`Aibczk=Bz|nEB^J^x33#FM3o{}OW`LsxGOhKw98#!)hls%A`QW*mH{IZ# zTBnZyOY>e(Ckeh+{u6kHmE~oY00Tn?F8l97n)?ASmVi}rpiHZ6fP_9MAt77nBft{) z;s|8k9jC!9FoV6Z7#t2U7~(N0n8!f9J+M9CsiQaD;Njj*7cQ3Oy&x&L$0Wffvb>zg z5A_&iDeFhb3?5{V;ROrK{?k980gH6`$n|O9fCY^LK!<4=x_#ethcL1Py?DI?)K2E; zc71c)K>}1EzT60EqcL5&%0y{B(X7eLv=0gX6fYuy=dTF?-q2`}V{Jo%xpC8hj19kgfq?ba| zBB*l;txUSXV^5t^8ZU4$Ff{K4$-rYQ9Xw~t^71|}XtWDF&L03RwYyuoKpFyG6mJKI zJ5>01OBd+gYEbyUu>1zV)j?sVyrY2FJGhI?Qcbe>j@mjTZdB}=U@ zDA@N4f&W+#WlqJ==H~7+%kN3F`2G z#|Xgnx9<<=49ySz{h>dae=+m-f>zUJ3B0&o4D}1BTLiKSl$yaKJe?tp8qIq_!f-oo zeFbF*mX|?1kUbNw;OSQ1FHpn3faXV=f3ej1fU1c792Xx3z9@&84;nlKSq_?#1=$fY zQKP#TB-qK*)VvqOfLl`xwdOT91H6tcz{&e%F{l#>%5Yf|u}`+^$*R5g?YALZH(eA?;aEk^#jCWH*k;#Gn^TH-o&x@vk z+~-upzy1U`Mpa<;g8C$2&w&`76ImERr3Z)&w@?#m;X=@MCf7G*Eg&jjG&&x4yYjL)P2zDFbV-L zj;6rM?{cIL#{WLJO}(x=0y4ft&0u&Tr2#P#G~@~ChulC`))J7x5j}(9#bB6*7eP?1}0_(2F4e*ph?-6lAt}5kdq*~ofHCIm}7NKA+j|)0y1Pk z*7QKEL2|Sgva*(d3=5F5REV;j?4XPWYS%+tv+o1A^#^m!`VXLzw;Ocm0~2Jq0?0Kh zld*-(<6hLT2?1I2PYvv8B-iXgR@M@bQ2Ll4zXd61o;@(NM2&jgJ^?T2)Dec$l! zp9tzDYaa>#WsdzFAWm;c?+$QYfphl+y-0=F$4^LS3#!hJpcmQ@ozNac2PhE-zIfIR z_BuFSH-Us+l)MA2s{<7e5GB2k!BbGSdGVtfw5*N?;t^1~Z@pCN0dnwmh+0@1{zX5; zSWp8LqpXwT>&P`j^p z3Zn;Tm~+4DkK-&&pf2r;V{iZe&*0w1zyNNJg!Hxqy>JFk33CLzI0a5K;Kj5r@)LnC_QRB42zqfCk_>i&+yQCu_V#c=+!6YtlV#!yr?;T9 zeWAv>{^<5;Z3%p_7qW~w;Drm!*b6}~G9bpz2zVg}Y1o1dz4)*@^bMMs@7}=u1v4=l zX5uHXgCG~~xjlmV>p%e10lq)FLFwp)4NN)2{g7Y~hbcc1_~JDr&LH7?iW$=lS#SRT z-vRP9cv0J%-WIMO;L!K|ah#ATlZyDvWI_I=Ykg%KhNj(Bie^XzLRt9^fTPXQ0&2EA~F zS$ziVJ&3mz9)hd`&&9o1G6lruK=n4nbcof(pgG!?X`nG8(8|OYT@ytF7#KPxFoS9V zx7VPdR&Xu`rR&Cnpp}w=y`ejTUhGx`7a+KrOQ3ACADnHhFY@;mF)}b52hR&IFfc?N zZw1X6FfcGI1GnyRG=uhoGpzLq{$71(Jb+^w+<@_E-4Xa==LE3VI$J@_(F_I#2Hozd zAZE}D{#aN|AOjMQ>IN$bc+rlmK{ii9pP8cwzAJ|9{9a z6VS1y^^iphX`QVGpx)6*?7bfT{kw~pA{M)C3n4o3;KLTC^KuQa683$?uw0KE@ z9J3QNH~M-f=J^(Zl4Lbiz1vVc5Y7Wila$?x=|Nnnbp}^Gb#Lxm| zf9-N&08P1p#GiIKF(^Ry`P}PrVgN120d;h*bU87kCB-MFrTe6%LRkzs#qo(%nYpDU z8S$xQsd*rNYEEidVo7E`m;;prt;z$hcSbvJ@x}G$XbU`9U-E%Y90aY$xXt6O5c)JJ(ctC2(G|-R%Xy;Bh6F+RQsZ<L@IQfm%gvkFoU&TcLpGTl5A z0$&(GoQ5HJoMi&2D1E&J>{YOts3Xsy<+|qJumgD&occnVG`d;30$$up0ecri@;FNu z)XW2EovvUrQG3JS0O#N5SY&;n7Q^fku-Q%6%`SnNy#`{&{?I?&E)z=vUId}3Kkm|0 z0&)c0aos*mGJ!9&p~^s$7oadY?$RLxRt6L34(ZScdcgu!20CN~bT8>~mx&r6WiK;9 zr!*4bD`S|wKf1d>J-}{}#-JDLk|E&*HT6e#BS;Ds1K>m21-rq$xquf{$d>kwW zvLEc}Zg96N=tVqK3COtPji7!MSP94{0WX}OlD-_rL93S-Ag7G3QGn!Rr1jAl=a)iH zCVf%x1k{2CA3xI>`sYO=oC`W2!1YhSi~4YA-N4^671S{S9lZ-2r|!tL?@|KQ>xtuyq+3ya79{~vRG&hSG2F{oMK zssh@lCIOy|2D?$C1k`>O03Y%M)^+hwx2s4uk3b-pmwkvCG~+A67z8exKusNyZV|?y z7Z1QE`wDD5(?7s=ObC3TDG6?oygmfF^aM7; z#@_-uVHY$r+zsx6q;-b=c#;1I?0$)W-d>BB|Nol|F3doH8O`v`Xc(EF`ybW?x z^9x3T?wSZO@%4WG?V&25Doz0sZt!CSPW%L)$P)lMkf?X+jX(eY2lcil{QLhupxaj@ zusc)$lx_lEcyfS(R|ik=#oxOZ-0cDl8VdBbco~Q=FhB=1Il5cAc7Wz5vlw4|XahHC zkYpBsWL{_-1Bvs1_K>`=fwtrKhyLjH73gf4s2~FBb%g%tb`{{?-V*>a8X9gKApQw1 z1_osQ1`z*6S{=wl@Rqd~Tu?T64pAVj6XLuVpCA1H|Ki>QP={U%)L6h#>F4nU}zh z4B-H6fB4en`@F-4$>T-KebA~Lp5`hY2L2Y%QRZ2K8UH~ip>=nFqXvAwKEx5AWC(Hu zXkWsMH?UPrlj}k1SayM}JH^l)%F`{xzrXZHw-1*{ugFJGfON2MWeGq`HHDiR`XT#J zLT?W%=x_y)^SW6k2E3RCGu0MiDyWjpzR1??%flR~12yW!#e4t%zc_Oblp>@+P1%p2 zz6tog047kzc@y~JzCX0=<8Se01Z@NWwGy#UR&((0cVYr{B0wuXz*z@R!uid>zyR?m zr~}T^EeLX7=1Fk4`Y;KAh7*swOa$$xW_V$Jk6;`ecWDC8)V$!o_y0d6QGvEK@pN;5 zf;sa5*jyJuaH2Zy(qRFr)LuNk`~N=yHym>j^k8_g>Mp3(;%TnXVJLCHFumJHP^4Gn zASiJkV_{-=QF9lR-h6+6Lfe&xIRG5m$5^-+UL@TGh4f2MNbiNL7*_xlQZk^hmH@4? zQvofFol^x$1{{zf4^W}R5%gk5D5yY^0G)*jYw3ZOHib%{74W^Spi(yAMTan?X!R91 z)+h+tg!1Cq9W>8^3u?}^P9CNgr_klVb8w)gLQF5#-2tcSV@_O*FBaVa-PHrCH(pG? z^Z);gO?N;iKkfGg%|^Tcttg%cs6c`k$o|tw?!0^Yka?Si*y9N znC1u5#@p@6bIgH@;RQ3uS?tzzGBGB~+ zy-S|||Nmm^?f?HLycPo2r)iy2!D0(RVz~O@{QFx$imWfx7T`(!Z>$g2dV_K)B+o*M zqtGv)JevU?`tWT8M}I&T!;3?=K`jvuSP1lpZg>t#TA^P+gF~tyx4fSFvJ|}d5geRg zhX?jf1t|;aZ3UGF0WWMHGBGqC5$I@L4br@=7euw5EaB}Aor=!`rN8YWe+b@f24 zAnP|Ty2T*PBz}1Y&|q`R3?~Lq5#GSazz{yui2+m>fY{D6oftsD0b-lXbYcKSH;An` z6LM}0h|M|Ei2;`4l96V}=t$N@iMGX>n?NNq&4ueo10Zd=aR(2ihWA zoLZ1rlvt9Q;+&C~mzSCooSB}Nn8Q$9T2z!@nwOH9m+qXOky@0Rmz)Y#UQm>pn1Uh% zIx{4_G6-fMwD%aF8xL7|2GRxZUZRLX)^qJRV8+Ps!dMK_9&|YQ@BhvXzF69WprqCM z;Pk)$FU)U3Coy~9e1I$>oeE+=`io#D|Nd5xNb?WwTDJ_)c|834!D=%v9$;nw9kP4l z7-$i#+$>N@z=2i8gt;IUe`bPJyq*KvGv%uh_#zr|$QNjNCusORlq0PhG)H{r!~g#; z=HCF_iNU`eq|O+wE&#M4OCn3YcWT53(1xl^0g#bASrS=ty{!{IfNTka3Ni9;_tgn} zvAq2&Gfa(D48k-9$tH5?;hG}|QU>zLJewn}+r=p(t+NH9h97JzXd93OEYv^@Xh49N z{QFx$6ewHl7qmXa-`fdV{RtX4%Ra%tzaQ)b&=7zRhYU<9&&1;_pa5ogao`HHS91S77qUH#AxX4VSK{Kz!3Oi z7fjbwkTsygK_O*x<_WMxQ+Od3wSt_MeL}2v3fBo{28N&)PTU~dKxc@6^np%4gcadn zeJ!F8ePB;!Uli+Y0bj2W@PZ4X?p6}{l)j29Wwx?4m+Nhhtd^#d$~Kn!RI zftdXJr-CSOqC5D2fq#DwD@X@u>R_n^1H-QW^`O1OQ_q0PA_%+n#L0jE)4F{P(mH$h zoc#Cy#q3M}|G$_9A|_t?{~t7z!qM#{0zUbk3AB3yR2zU+=7Z?K-l?F>9n{+z1FCF# zdqG7A==h*+Cy{^`7dt^imtaVPFAmkAze?;4}*wXLscQ6_h5Rf-(kFP;y-W7v7*G zfL2hNfeK2nnrG+#|DOPs&4%O?kSJ(dB`lwSGAA@Gftb*80cZWix*Ho3v~Lz3zhR=UxR8JY*kjThzDqQ9w<=omqYyf!4~pw z=W!xfLPA3Y)LVg;@!1y*AeAblwghJZ{_QM*pj}&Fr(vmdLE2xKf^RPqfg6(m+BH8# z5K=dTQ(h-a*UNXH&hi!LumpUhv9$wK5rAqvkoQ1g2DTTo>VW40{@zfKmP=`!;0gky z1?+3gU?c#;KWp9sv7e{l`Q zyMTxVq*f3#&_M%0&~gY~Zh%qlZ# zkS#A-p~k$3DFVAQ08#hzZ-@E~A=KS70W^jg_@eJ7NVNz|#+ReBWgOKfa4VuO3-)(F`*d~Df@uNCHS|uf@}@g33e5@Qvh-`1|O;$CDa36 z%!me62?C(4W1!>Tkh}(RINEI^%o{_Pm1f!#s0X^;TEv=VIEF3?~ANddePRP7=M@WF?m zdpbZq3IZ?u03RI00bh0lu985h6g{9IzRGF^ou7@GP#|H1!&gvaK;;a2{DFKH@InG& z;!AzdkdQA2|F(&cMMx#iDCy$j!`>;pU{}Am)&+`j4oqo~6M|lBhe*FH1}&gK_Bp}` zu*X4DF))9_dP3bITtPd)$q;2ZO{uYh*_|c1VEVrlu^Ki zEVRl4i9tgRz4^4g7nD&TY3<^p-WE|%fCPY7*nk!oarCx87cGI!!&MXoy;#x=jYXu4 z2M!%@2x9mMTApD`6(C;)z6gPs2W~#0B>3zT%&=$!o0@%sxjPi*OjxhKn?(RQuY&?T z;Kf7mWFdOCX724_1-TKD8NqXF1fme+z@QhCA*PWY?2zn(6ztiDKyCnqI~F(K2`G@S z0$*r1K?5GCP=JIH$XAdIi4sQ8JcBJNAwIj=2sRO%eNa*;sK;1rE0SYLek z1JcBUrOf0={Qn=4z99F7fSeWh;s{JVlCvSX9%McwAmAk+1iWMf`G{cD1~h=e6kExN!&lHej=N<1R}VH38nsAi z5S;Zv?hJTwsufxmqDzA;4S2B{i!>w!gS0~;4xWoZ-o#rF`Yr|sHCi%b?rjkT+XgO& zvM(}sgDXgoX*iMrB;x)r0-HvKh|9hRas$Xmkg^cP4S0eXlqUmTOs@k6Gg@W<<#Ld( zu!IqwqyX`mE5t-_#Pv>n5dZ%_s4oucMg?Rs^!9@DRPR(!83LN)Za!cV@Zym>xciaC zz`wm0)HMs-1sWj*NA!ePP!k&I~BwP`4Q9^ z3&>*0V#s3S-`)#yQD7EmWD7LT0dG}p zIGA2+`VLAoJg?_K`XG=F_KQCdCxX`!BtY5wr-IxDn&Rtp39NhZ@&ITR2Ha+lT=NS? z{{7&<;$MFdWPcZEu@C4#V*dT$!6SG_0u*vVFU%lz^KWkj1v{u)|0Nb2Gzc$%783S1wY2UjtRM%abx!dG(J#*K|Nno& z>#dNfRd6ftB!BC7a03=4z`#xdEk%N~AWkwc`!xLtMC2Gy!VY-B{|y{PkO%?~mj%9v zh6dF33qddT$6yJxL!fz5*Ztt6g%n7j{VIXIQxC)-Wf4%6^6v{Q;@^Gz z;GH*tFZjTDMFy76pwlnCy`Z2DgwD_Owt~zI=~OIr#T;fW{1SSis}hAi3@qaC`0S{>P=<%3K*kqJ(O^43DIXjUkP-$|G{M}-GBKdL z7i4nai<50gy}vP7k2*2~g5^VbXwW=-}VZ698L91xhpsMMwkL;N_3Sr$E+=Kny$u zDsjMSOF6oI_+;kC2SB~)Oq;kE(cvx|>#%~XIrwikQ>AH-u9 zAHv2putnP8-QXO_zpVp2>v)pCMIE%`A3WCv9>xI84?+`8FKEPTdoL*RK!a%DsE6hU z{{6jpbHJNca9{+WO*}$l89Xe9l)6DPmry%Fjkp)@j)QcIfRhNQ_1zA(adwX0#Q=;%xhOMNBS_|!Vf&9V0y(JW+4V0BZ{O&2epb6KY7sU{(p}D!U1uXoc zcNeHU4T8E68Wo^gtc4fiGH{vFJq27?bc%GqRT%V6;e~`K*s-A6p2z8h-LC)tUuc5N ze3|?E|Noa-&p|8c(>lRZN}wVNtQcC`f}96+4rn@dKX^IPY|!1a3=RMPr*-zO0ks}( z?}XLZPoRUptsn-}3=orle=mpv)!4TD`=^4~P-lW_fslzBFiS+5__woofrfcOCI`OQ zuoE^d0OG%13LYv1F@s)|hJhjqbgUML4=!av=7PKcwhUUzg2bR!HveL-t>NDfb{uq= z6kKRDA!RIZvghAE6=Y`6i$sVW(BWvPQQ$(!m809I18IT}ymt6e64*&l-*&e2o&Ysy z&g=k9&ZR*HrNHK9$-iKSn4H$xy5b~g(hNMInSCOG8FbtgI4*iwCW2B3$hPc@3Cy7q z(3I2*I(v8fRFJly-d2ze0WVf|f?MG)?LaG^LBqJ9hy#TL*d%Cm4ibZ!0cw#!CNEz} zGcbU|4%Pqw4>~}@4kQL`c_R&C#4>@_twGdvf=AN9Hi1Ugp*De-&;eO~*t7|MFX+?; zsA<`U#Cm&JJ65`trfWiv5 zW}V&^0npqcR5P?E4pxsgrwH)@;C){PX(z6dcgx;FUtWBXr103QJ1sur~#FEoZCQ2SR6Ds z4Vj4rhY&AB6}Wj0)!i-9)H$VBlctIw0PJIEAZ{3P$1gCXR;RR_*>zsN6Bp10AvXHLz3W(i}SqSSzboaD^oEG@P9vs>NpmQ%?99DxZq4R+C zE+NV~dqHNsIJ^ZEB9In#cS|V9ytK|%kZmt!Z2A8`ts9o7z`khR0tyf3|Ns9VZ@qB( zAL!oX`WFpbpr!Q@kVlh1N=VGTp!50pxA%gq0M%O{&jr1(gt?r*I#q(?r#P;931XxovlkiLT5IEDlGN1Zm=b3pbOFe{eQ6ytPrLb ztZ*?%A!wD~>3{$ExA(Y$0t8gqgA4{$k|2J-i{1cGdIpvAb58#I-`fi!13_iQRFEOv zEmJ`e0g5M(wr)t`3wrUq7OX4a#l8qAL$wRc=xm(=nluG1de{SUt=wkN_Qc*^5GSyE zDo7F($sof}5;@p1o~FPTd%^QQpz~aVUNAy>ADyjdz+Pwt83GD5up9aJgM$dAtOJ<> zDG}Hp-U79?U##*6J1wmfY(Un3(1hsefB%EJ!RCSt1VwjX_f$|i2zqfEd>^3zs8)JW zuL6r1)$U%9D>{2Yie7|o0>#Tzkb}}Xr-HP??azYK*r4W_ijtR_B+u#lnKuWI{Hva!V0d)Eo*pwHJo50mM zR67Gh0t>Vr2G?*Ru-XX}%-58m9^-GBAOzZiIpg#{(CTm97d0E9c>okgFXA?WG8Llw zlzNkMm6K2T4yWBfS1i6cl3gof!$L< z?f{h!AZxLg4|6AjOahe;ol_z102>3!#UOWpJOS1WYAC>(Kp=-fiiP*yAl=~OyI)L( zu%YhA66gk-7xbb#9IU3Z6=ZyGYstxf|3SV3naYn;Pl5Po(E=}3`SMXkx4Rc47zhi@edSQOg43W?S>U(=T@wMy z7ffqG!+hY70;N!p?}J{*%E418WR)=K!)R} zkV+x$1XW0|`salpL=0Lny#$?kMXjAPGR9}NEg;uP@`q!WgtU2HXJIud%O%M@i zibe4+$TwjBYJzviWAQI2Y*G9R(gMk8tq^yj_*W4k2K8^20JH*rAqi=|!-Er)wGb(S zTLwKvfaGzfh~4gBFTqp9hSUH42O@_MNIN{6L0S>;6u}2s#2xVBDWuU5@WQ7NY#gWv z0Qn9jguo_&ws)|D&jJ92&q1hzn}5L44Ic6~qVC zIiQwT0HjG4_(F0!NHwIFFjoqiT1wO*$*Z$90#w*6T>+}u!No&bXRixLsA&bLC9MiE zv~wz0SshpzIP}vxTfxerLCW~IgY^V;UOSuu9}WTvOihR3lul5@H*u4&dM33bHHUg)2lXtrN@# zM;S;WuzM=VNKll4YLEbE_3$DMd{{ap%A_P=QKs763Q`TJNnU(f297e2F=?IPKz(t3 z+5i6&dZ&VfAdMrC!(e&&g(0M60a_{sN{8@(&jcTV0%^N|%ty~c(4-Fc@QV}9;NS!` zSNOL>0`o-*L=4G;5NAM~3~GOXJQ&zL6%>gpt~33r@$Ay;OqV%8Ec{_)XV%W^5Dx;z@;XvDC6Hg73ArlEV&mq9Ke=>(t8%; zi!Nw3f*F|wX{H3cI0#ODECKx6!Ql|p-3khzfESYByFx^u_4j^oA=`Qq6d>RpGOVKw z%byT+;4UM`K`(wS0`1G(4pEyW_reRsH8$yBx4{d0ADE{~M7pPfyX4^DesKh3%4;>y zLT*rs$dY@(1T*IZ=-#a_X<&08v60pdwhb1O6(GHMVzL74aSn)HL`*t@wZURi{>4Ol zuocjlY=&3}kIBy>(AX$Z<45R;MbYCA(F3ulc`qp8Fw_ei2d4$_#-Do&K|Ov({_WsY z7w|$3ru_sw*`0>8&>?0VZ+!#l*fYFXybwBy2i~#Q3Ni>B2cRxGo^CsQh`H9acPdCL zs4NH30o}bIvq7yKkP+|(33T)kUTFOWAIL4z33kcr=~;~3U{=5jA;_F7L;_lCc25PF z3Gel+2TwLZN^VfO3R*Y^P4%F@OTY^`J7|!D3o>v4^u$U7_3_5BB5(s+1AOzDba2%`;yk%Gl zq^@}{NC`M`gBhST1&knxmpd6i<5A$G4-$Mc4>UvzS92H41qCKJKb)Hfnj8ZSH-ge2 zC>eu?q43PG)VlWef|4(&vH;OR(BueBw(v#(Y}5+cb$nq0KK&ax8AFol3-3g5v_O(E zblwd-)ug}=-AM+{zMz4Ag?XS`D>(SKO$1NTUgB@5W@KPMnn?xise}&Gf#wik$sL|B zLH-VWkqNCMb|L0=AsWH+QQ+1#Y=V_JR0V1tXo~bj{wk1LMIaNjrx=)hRiJJJxvpvM z|NlsC0d38M>P2-6C@x@`|HWNs@r>jah(=7eK(~TIr(MAPi2LAUACRYmL7PR9-1Ke^ zXk-mMY1-T43f`%T2oz9gfLha_2_I0rfuupBM<9N8Pb*}kuf zPvq!=1qCFqK><<-wj8|t0kWkZ;yB2R@KjJRbc%Gm@CF(6^8Mrg|6guDhCT)Vj2UuN z6*x3N$rJ1q=-e&Hov_dd<=}_R|88MsU;wxLK(g@3>o7iOPJ&zu-rE`j9YaD^1zyJn zS?~s#y9QeZj`%ciuZ{;6@x4=!XSZi`vUI&@nGFhQu-`yo37SF=LP`xtQ{CV>{ufIu zKuHPK4FNmng#$z^trP4#{_VXWVNfei9U=iLq3}2|Fdl3qc1MET_+S<&)|4R%z-t;H z{sf0EY;WvtkRnhBLVOQP2O_-i5ab3OrwQ32J2e2ba}dIAbvgO(|BIYi|Np;8p9Sj2 zf%u^64IIXhgcE=xW3hpcErEwGB4f<}B_xemC}9gur$}K7$-H3aLc-R=92^j!-~zSp zKvDhTi5XZ7)GLLI?1EjFCGg@jL;|E37PbiM!DF{S!6V@uC{71QG$>4aW`Y(cf`S1( z>mUU)B;kXD8Em3B_{bg}n2EhT;7#7pJO=i%=}f#{hLjOVUJgb0f`5A}$TKFz+R*_~0r&dE8KC6k2vKl|f!S3B znj4R^fJVm|UKGsu{~spX+rtXc4h{uaV)FwT@ly2vRD$OgA*X;q!vQ1@N)6DO6Q&P50}hUW zg`ChVS7HWVnUKKj3Nsrfb}4~56tn;hVqQll%cd9Kr-5R|0%0I{uXKnGn|zj-m^k~%~8)7ZnH`n2SZ6T^=W z|Nn!|?3n$~i2<|(golBFVbVh<2G9aTkeaTCP7I);0BtA+sd0Mf!~oi33}Wko^!7pQl78sK09y47vX}Fr69Z_? zFNpp5ffEC088C=__kj}wXyK*;BLl<3N^px6hUKN9u8i2+oggVu-oJaA$FMJPzz^nnutC})DiD|J z_njC(^Ff~&7#OzScVYm|CxiUH`o0qbXbM`4fq`MceJ2J`TMV=>eA0a<22i&U#O}E7 z!~h!31hH%HJ28OTy&!hheJ2LcpaqB>eBX%yG}U6!7(fH4Aol%xP7I*_1&Dq9o)ZJ8O%7t8 zzvsjNs?tF0{r8+0K;;pLz4M+E1E@F#vA5iFVkl0IPi06>Es9Tt9rKcxT3j5T8=nfk z2+Rmd8$xL~RZ+lDl$sWwiv6sYREDC|y!@iv#GK43(9te=@o9<4CHY11$@v-acqP*+ z7>Y|$i&FEQ!758qa|?WmUGq|l(kp{fb0B7=GUQ+ifmAx@XTTf`(GF7=Tnh3Kj2DkE z0Cc`gVp6fQe^^d&d@2K+nO4C77Gp>%O3X`7Wypn4IDD0onFb09e6nd349SqAa7v)Q z0r>?K_E<#IDo`Q=J!;Y_7|K$MN-~oZbK*f(mlmgjBdshI9L8w6kwuGAlR@XS#v{Zs z^GZ_liZe?p!Kb;#7o{fVfWibJ3=?t7PjoFy&5QTUO-y$xO-oBH0;z+E2BjwEpon6s zi$_&c5bvCkmxHDZDu}8Qi#o6ns;YwI-1y8qhQj!=lro0=(vtYpiUNj|%%b?R__PX8 zT7@1%RFGc|ar&7v;PYvD!j8Ls0i7>--1P^9`U9f)_q&QT|6nW;;@|Hp()^RDgp+@N zs7UiK=2Ffb1s7*Cv>qrG&p5%xz>u-v;%tTtiA%E?Uf8VD1>Ks)zdux>`4?ELt3>k; zuvTA*=AX=^oVx@r&t_=7R4Sfv5~S7P@@$5T9hYY_ykLZC-R=uMu1qB8MLiR&Mq+*W zn*(~W7HE^B0RMK-@spqo4BpZN;lJ2F0lcCDbcPssYdvV$RHy*|b{4Jx@aBBbjzS3c z#T1BA(BJ}i4L^8ymH_{D9)Z9Y6%e_!PS-D>B~YM?W4|&&UBch;4s-*rYHu6T?hCX7(mC_xblF`a|PAw zFOET$EbjzK9el{Z?8^f(t&?Tq4zS1r24;w2u-=Q0m_vE^_m}?ZW&zi}mHq$!zbNSk zRl(j_%>1C>d*KSV)FR`VCw5B%kt_wBR0J~A_YbHEp$;2r z06-^`g7Y`(Dcbz|eK|l)dsmQFM*i)g5hW- ziyN?4K>Zh_{BHu52KyT&E25W8{M$pn1iiSf0alJHqf{W7hFY3{+=h}-z68AJf*FQ2 zk?26o0>?T^B4O_S|Nq6muK)jE{Olq!w}1^nEBSN`z+MS>p$uVQ2EmJ&U7#pC3(84M zkRVV00}t|TID>qXI@n}fK^_drxtR805Aqb4X$JzpS`gt1PI;_IrXi$22^U+Ci^B}V z8ss}6sTdquC_z4<^Z)-B-5{c^^Z$RGl}ROJkrCLLsEG+P<$?3%L3sTFE@NiufddY# zAJs2l{U>166UgIWMewW!5_u7Yq#Z5;%7hm?K)a06So z16nJCEL4G;?gcg#eA%HuTDR|yv`!v@7or{i|ATFXvd2q z5e5giOyG+~go5L)Z@}aAa_x}SrJ-kDFoRqHHWthA_@LuyLG7M7ptce2vQxzRU~PGC z=#e1MEr{JRRL46N6qW_{ zkY@hvu4h2En1GI{KEl7>^$7EYpl;tQfiE0jIzjic9!cvAJ@dl14V2OfK`j~3?K~i_ zf~sP*AJ7QmZ|MZLQb6rI-!FkL{zAe4RQ`i)w5kOZWnQ2t>jhnY0zLp7a(X9!>otN2jK6misDTL@;{ff| zbNvH$jUdQ184Z<9Q7=wy1D`Jt6!1b|E11>k`r(CX3*yL5xEH{hx_v(czG#C~-`KtW zvl;mqLu3oVdcBbJg7-!Gf`d&&4Aj!z+YIuo5y-RPL%l&)wMzuNX!{CJpP-Expn*qU za5Q2xM?hJsbQk0d9c(9OgU-6PK2_@rI;ondSe^}O4q*2xAIQ0{XM=AUJns4eTt@tA z0?p}N0v&=3x^@Kheh*MT5R}lmLGgyWzaV0Lp*F48_XzZg-B5ubO!vM>1h3iy7Yv~n zfWr5&r$5N0?6qcDr5)c%cr{`Qmlc%Sg~B64x7N z&YaL<9eN|^#X-nIicZ%n;2qDP3wHuDOpJ|-Uo3~oT<8Yf3jw-g2ejp! ze|rar8Q2{Pn)U@3N>>73>;f;g6X_1+=xhR+@#1D9Xt?=BK)3IWz!xzvqppB<+ckmi z@Ckre;sleq0N%t7y0<3~R8Vhk0x`h_A^-MJkO!{>ya*zqz6a<<3CI%A<=~*( zd^%m9yhsKK_;RFmPXyielhzr!;e|uv|Np(NM*^}KL2LLYg6s}@v04pWBn2S+{NhC_ zNQft`({&As1337%PXu{5=tY?lg20G%d>i_@$FE_)7*7tmNVtDam7i4I?`ACKJn-^ZYAx(<337|6b$Y&>pBme*Z z2Q^!Tzd-Iy0ZCb9n&q9YU--BC-U;ju{Sfp*2PXC*t=shvXk-ag$oZmNl?xgt1G#cF_%uo1 zADFIu^WsV^*p)vpUHRh0j#`i_-vqqqhosE3PS+dVzApk_)Wi8#__v4N0Ns@s@M0D$ zoxb7U?t3M$JM=}+i#C|pi(c0=prh}vfC|GqK`&yZK>h}2R8Ug^)DF~=h6-H>deMiF z23ZL9@h-?h=K%igt~WqNJqUau4pVjkw2X7Rt4zR)CorKCfiFB@Y*4BECZHSCkSc+i z@?v!-$U2cu*C(I^pM6NI+gGA@3UpJb>kr6Uh0rrW-L6l-89Mu-ShuT0Z;t?E+i2(y z@B#@?qRzgk!wlN^>-qycgcAfY7;Ne(9cEt%P~rz=mdqMZF^33-2SG2wBtecq2?k|^ zqhGWmq#?oZCFsRw$g-e-7ggXUA!r#LBs}f}zF>!`M})@}n9zy97Zxx!EId90zDR)? zHyeCX1V(s(>RV8qhdVqVDp11%5>lXf8<6M0-7jm1`Op9Z2eu$Yf$tAci^IDb)Z(xN z4S@84Zm8)#8_+9y;ky&Vi-+65#X|ED3+p#8OtwQx1yIZ4#&;)%Gtm70f!ii=Fez|9RtA(-U{k@)Rsa8kC*UtW0MBvy{((&+YgYaLKLOnN%Ra=A*6qXk z0{gvpFxT+!58-_Q+9bCeG!_9qm<-lO{sG!}=lbQvwaWkhVP`=yhk`D40j1$i-w!YL zRDy26_y9YikD1vQbUg`3U%(3k$RcfUhJqdf$qXsqetU-C@U%75WKbyr_B3<|1e)t*pwcfsLu%mw@Pt1| zjSRTm4%#hw10sbi1M#tc1t{&CfM%QX{(=q%0;T;kznmCeJlzaR`^`sWtlzw_+yY7Z z6F_PI3P|?<|No%6@xd=A*jyMWy@PRR_nXEy4?veq^zKyv9hO~zsMQua+@8Z=e6-W` z&+*nB|NetEY%;t!UH<=nmP8f>1&If| z2!J&jPJoW2XX)x}-2yu@VGqnq5Cdu^h{?ad6+-!nfXoE#2ISvA6(rQ#5(;)2|9-H8 zx=?4b`h=I$=wRKPps@n$_g@9CFSh|DB~Swy5@S=qDKO~8Oi0ZL+O`1F+T8=b z{WI{zMeuwPWECtZIm6P|_8wPI9D275s|17FynJ8F9? z$PCa150L7>7twGFLHzEiV3YZ`w}N;9S^O`$A@ZQ%nJmT^wveJD;Drh#5IVsbw|Or} z7elQOQa)xb0S);Tf^IwoWzsDE7mhHK4g_Q|zW6Ky_GmzNFGz3Ti^b2NUHTHJDd5Gm zdy7G)Xv0krc(GaltPeD{57W8=Vid$J&@|cYDglx1o+eV)svwWAO>d!P@V&^ z-58u1Krsqhn_hF--ozK@Bot&xWY_ldxa4AAj%vmqmC0WXXo?c~nZ1kefkpvfMApci|Kz%$Gp zt?~c=|9|nm5Hh^#DiHAEFeKj6I$J^3@^AMQ2m}pQf-h7IUjZrR|HFk}v>XEq;pr#} zfSN_1v8>~*pmkpi3=Fj|`U?L;&gTbRXY!(;5Y|}+--YJ-1(M-izkqIFxf~1=;Yzpb)gTCiF{M=Txxy0wD8WF9S78 z)4F>>LTQ~nt_2{UvlfC{WME~-U8aK0lB<33vEcvz2`@ooS^V3;;nRAc#1ho&=mmvH z;ERoXkf7dwA*dT1sNZh{yogy0?t=#fyhvIIW_7lLO7z#xS&T?p%b;38huq!b1sgLX zpt~0oGv99pz7U5SB8zMYs6@muCI$)`$8NAyGlM`~ogYx+0$;qE4R%LRzzc>&AeKN- zz>8xGKr9YWBfHaO>Vy|;Ag{h&jz9Kl-Lk~8#4;Ed6kyl9PY8NpBMNqXz>C9>PC~$o zQxaeie(+6aQ+z?e+wIE(Y9%em2Ne#BAopN3Fgr86uv?9krw^_Mh|-1kEJ@j1f20eCo*pLfZk{dp5)=+ z-|xW#65j71pnU=~92O$L(#z5X$~sTL!{A*3FM1)mU(50D_k95Bk%3lnbcgaVvvh$+ zv$HQUbh?P%0G$`w?aILlxsQ`$8Q4m&An3|j$eo&tz$YT|fJH&0iaWSKx3=6t5_RQZ z1zidd@S+?d2=Xy(hJn9jIx7PM*ts5jpmfQ<{#4)&(5geoit;@V5l06xUkrjd73Rop zUk>IFMwXx#dlrM;1`ahRKCra*2^{9ZZFBv>zy3roPZwwg<^e=h05pRmG657`FEXHJ zf=&<#ox1BCvZvr@dAhia=HRc^$L*csUR|_8>}_pMG2(w0ZOa~KqJd7U3Wk}dvOL*ErHww z8j*$wzi`V272mF4r)FLRyR1ia%VCgU=#lPHj_#H=kakcZBn?*TdjP7eMHJ!zU(f*i zf$mZc{{7p)POatWo-!TmRLH8N$627-;K@Hw4GHqmcCe3vUPyC*1G?LnBdxO$r1Qnf zERf$h`1dz~xUC0j<-r5g{M#pjA}8p@OLjCJFS9_Vvhi;R&9zoTWYaobPk@VKa8-!7 zr4cm$(fo^rzc(2)z_8u*2PlNTfZ~3;i&t8}3m-@=5AMrnUt~z@bP;{?LOcu97)4c^ z5%59*N$tUhAho=2UcAmk8!dQ~)`>0EfNcPubs56@1~gib0_uH3|WsAOU6C?L7e?TS1xl3#hp3nE)!T0$=0D50h~!*Q zi5d993*EUO;TI_xpyXE$KBO%a+0kHcxq|OH#^!q@X{@&00iVEt6gXhpzNLd~YXJ?a z{Q&J&0S^L!cf82#fldyB*1ep76~mo9tSz8=5~L2|b&xu60S6ksxd>(*e8A8-1)&ZS z(NjR$K!XvWl^ut`gVe!nV}{s!@DW324_F=EjA9PTDEnQ% zfD+}(Q^Wt6_W@hMJau_;30b)Q3 z(y1UO=y*a4p}P&89sxg z3sCxjx(r+ffKnEuB><5DI~`mM+|ma-E8xXOE(ilD$%B0W<#)r%gO}g~gOHLuxIAD^ z1ts~rps_SX5V7Geq!fp(E8%YeE#C*1{DI($&-u4|@C3e)VFFtUD$HOZ4ojxpp&ZOE zTr8lQtRH~tSWqFoKZr;B6oetbdv>|rnqLXg1^1g(|aaw=`RzudfbTg%Od+?-n_Fm8e-GBHG+OwZ}Lkm)Pwt^VY zQV7HZ9gMF9DuqP&!R<_Nk#z^A7{q`o1~EZr@q-l$)P`jVfUhqAnQ`zDS8t1`OeCm8 z?**wl_>hhHV8Dxrnc%dKqLQ<>MO4HPNhK>t<-HkTm9KkVOLDpv<;sITgc@ttNL}f3?q1hLOdRs)#=zvs$9h!ZS4Rofqt95MXcox}oOnEy2dt<2`%f1>dr zBLhQ2C97xi$$yRzC25^rVlP<#{{IhdGkK(eh9^Oh1X|=E642YbX8-^Hf!(13LEWvO zs1A7X(u9Gb`G^Fl=-VHd);SfFWSYSVhp9vy!eB1pgD_Z1SYMt5tw3YW`rq5SK?`*C zZs&Axpo0A0+j~F@K!F?hLh&Eim!Ojpwf_Il z5&*ZK`S-ViWZ~TtkZ*!sESm>%0(idkMb;mfwli9wW^pfw0#(K$pmA@AW>9I>JB3$e zCFn8%tR}MT0GTL|#m&FH6=Xobi$lM$n!A7M3N3J0clS&HZR_OU4^A7PGjz26|G)S^ z`$D(RM3L@^CFTqakSKtr?#zo|SG0(NToLd>_#ZF$va+?V zP;3N;6V$Nn9$tYjD$#88dhz`yXkcpjYa!zU-3XsP1c`!tvE3;RH2x0CB#?B{+X~9N z0lmGT%pTY~6;zM}^|pdao`7y&fk237f?k{l2doOza)?hvz%9+R&Z*$ivKC~=YoQ&W zskyYyR+J=V7oZj*KbpgTfO_sfvQG&0PT>W40LoSAox%(92$*~D0cURyE678jj>!*1ks1IA znZOrW(xBo%<7EK}L9aZLUImp1k z0J0HWu;5DPWfvcSiYUVCq?geBmzCR7A+-!VwG+gAWQfVXQB*mkgM zLFM|EH=q(S1R@HqTtIpu9a_`^1SF2F0O{?8nDO8zxX5_v_#d>#9#mZi^|tza`Tsuv zT6^?P1tk@DK!Zj*nvaO^Z|?=E4eXr?QXACm$`kM+)Y}xa4Gxk9AjvPS+bJNe(=q79 z&Ts$!ck_Z;3C%AVJHZS{Gc!ffnc+qBRB$sBGHr8jDyWqSYJXV2d9iRRq?I`Vv~Vg% z(wPC|7|@i?Tq$P;P+|e)im6i03?OHK8lqiN&I}-zf#zYFq?{Q*z66z#Wm3)zpqOOP zWnjpXa%KP(mEjY#2-=$HToGRk-ku6&fVQ4i!h|3U(2mZ;lEnCw+=}?L3PUr76a){#PJ@Ui zWtPMjI8#c%)F+-(0qiY+m+)uXpsqn^_v%LQ`8w^!Oddu zdKeqfdi*0h`4Ll3$6Zf=)V|pJ<^TVTFDwiUFPb5ybh^H2u6@H$DwM%sz`*dL7UYy8 zEH5)yz=ONp9NmEmouN-&O#K3>6FJhl1NqWALm#{-hKY0sa&(4XK=9ML19{RqL+`u@ zgsTt)Erk#I^8f!1(0F>c@0+yFM$pXC3q6pM&?iCNu4e*X2rdTsk^?+4=a}|F2rLI# znDwG{30N+z)Aa=?%Y)iAp+}l)k1&-uH`g9vF5zgdJ;GAL^g08)eg|Si*^Bd^LE8tq zT{+S^14>>T{0v%b%h4?e?)as3I*Gkl_Zd`?7=s(c;EsS-*^5~qO$Q)Gl)UHxX$s}& zW&-!-(mFlFUQ~iK@ox`(k$p&}+xJcP1c$s?44r`-Sqz}%m{|;<8^?U_1ZJ`Ig7!-N zmIJw5rqlHVNd82?i>i~*k_r^vCtm&owZ0fYt4%=5c)MNS1iU!$*A~=tfN1eO5%|I# zRm*8628Qm?H_eB5zySwZF8YFH0mvGjERpWeH~ib3`~qGaIu5f(I!mumw&tOpTHL^pP(hR>z~(0K#dJ-+YCT1-S6bre1OsVM6F>K6KGKy zNNjtH7s!r)7w1?Zz4iT|CAx1wSA2oQUrhf9N){WtUEid2`#wnP^ayy-@)0z=0CLWQ zv`(j>7bPIR@0;d>Jb^EEfWw|8BLOt@1}f~bKmE&M&*A_jhZoV1R&T%yrcdC8Q(AYA zo5aki4E)wU$}DFaAN4 zf^(=N%ZvUG|Nm!+WPuV}K%1sIK{!NUcH^52zY+{R6(Z`%P~P z*AoT?hJY815UsCIgUYecH=Pqf{nKvO6OhX1io7$!i+g?G$|tV*h>i7|7Y6;13J28K zx+Cw*@C7=K@j~92AuTCBIW3(5G~eF*Mh8^hUD?SE3OrD$`g!$n*BjvS?(BPLxdkrA zKD>bQq2<_{7poB}I6&nZf-eXv#O6SyJ3x-@^!))^q6%Isojebe;ozlJ3P@e(ouF>l z4*@T(&j-taw>p6*q0%}-uQbt$P|8@_* zz!!~&kqeN}AB~4VnIi~NfVgyl(*d{ufoTXp(!k%1&;Tw#grOQh1qe)oJdy@(Bn{vK zl z81%vz#D~Pei}E?3ux9}mAdq42kC5CS`XK0q)Gx3@16~|_3(fs4(A<9_@WtDAU`bHD z_~PLkXaNH5vB1lq2LUgxLz=Y#FX~`MAeBL@;6^-oF%P^7%Jm6kufY>g@99O*iy3dg zmVlN7y|@Eop9p*bJs%ikIjA}e%Hn;o7a|Sb#^}iM!tV{N0QmtcK&sop(c0~LBR;PA zh>rD}7oOdaY!1q~ko>Fwp1bdKeSmdI??Q0X6*17ozduk6RL6Jw1h}MuR^;D!4ao&g z0%_eGX`Q}rUK~Rb@nA~p^nLMSGfapFqUgzsg-9Y`MGs!|frTXa_cL|-f_BuTbq9r{ zb&5E4yGnp`H6LW`4wXpj=BUG>HFtJ=xb=N8{7Ji=ATTpuAp8==nqg4 z{U_iB8zeD;i|Adi!O`3uD#5>>t2UaIi` z`Ox(TbZFcw=!GIAZGe-})mIQt`huP13-V+jhI<4+mb_j9>eBCb^5Ng_`(ftypRJcl zG(jeZet>L&^6&|K(GK0W0$QH)`XxBAg38|4>Y%2W>j$V4e1cxY!4w_{cyS1!u-jK6 zup7KG)%69ar~3w!@IQd!<_kz~^T7yEOB~YP5(sz!Iwq_6hzgRf2OwSG?1HST0HKQ~ z;05R&Opq>chYQ~GYCfW1{pN*R2P_MOcE1Tc?g~Es1X3uy;Ccy4O1L+*@>n0N1#gQ8 z{S%bM_`(|EEl?=)Z};U1e4zys0B;iG2zW8`6*z>ziOu&VI37R?)4P2I(mGiJU(9*| zN?OyJkFZ$3d9k(~<}h&XJOj#~J9I=C7+yGcK-Sw_dHw(YPHt8#1JeAUjT-#heMJIa zq`}7UTz`Nrq7~rZ?5|)FcQS6tNI9 zwmXRgyzqgGegL;7kATu5#(D`E&|+cG{f3~H;?z5@|Nnon`8g<94}j+FU-N0Cred9io0ET__zB62n2SA z^6+nW;tF`-zXw`l^0#aN?`-u2EoD*QUw;a;;)3}EsEg6f;+59vdfOY;A^;k|NsAj52R?j>jzNs`T|On2ZCNiJ%@(Lfq)nPo3{k4 z-~azF_kt$`c=-1_d4P@zaR;q30j0hZpkM+OO0FlsBU>l<_xqk`{>jMSs{&fLIQbc< z&;@C;X*~c6AYag`ZvO2qUZB}A9{%ltTtP4NcEbY*6soWkq7e9^1@011=?#u1P|5<2 z_$P(1;D$vaVN)Dj;=r6xPgZ3)Spg}hU&|EXPl!n|E`{eci z{~&d5g0cianmj;53Ig3u9H0dCBd~WWD1`*Qc+LdY4DJQ+Z})u?_=5E*xLio(E!ya0Z%{;TJS!2*C&YF z#*^0VdjhiJ9GpKu`R#}Gg<9`!uzCFZUC%II==N3V6$u3Slz+R27-;121ZZJ5#Ix7I zBf>mLp?N0Y#iz&MxJv7EJ@a}l|90Oqf!(1R{M(rVUfh7lbo+u_^%9g?K{ET9pxu6z zv`!wUZdVO>jjjQz(I-C!r4iQ~{QG^MSRbsdCPGWXWBi`HVSS<25R_{mW_5?Eq;>cB zg5n750`%Y$1R3{w`|C1@a^sUA4cMIe;t_s(pJ25Yl&-MaI}>Ew>+O(kS%t1M!wdID zNVg0!D0s3FG$;tF1gzh@=xKyh5TLQP23=={C(wObJbI9MXHZ}Er>-*tD4~JI>E7!) zGk_uy#D1;o%m8u)XsqxKNbl?a|3T~%y5Ke2@rV&L@DXd^wc7|WhT_yh5ROkt%_&J_ z07)e0mBfP&iG!#|5rQrn1@D(JVPOExrJniy|Nl;2(55L+<%Yaew72yMI9I)!A_y94 z1Jx|OH-1BALZ^Zlpyn0mzQf<3MA8ZpflMgZrhrd~>2?(XPb`3nq2Hj2gM%M*@pA7} zkg-88!l!|Z6#*B2y}cl@z!$=^Kw>PQg$Xapw?gw-iNFrf04O+vF}`$TW?*<(4IUf@ z=?Qw_4>pGdRDAyibpt^c7(!hMb}l57ftgU3fJWVa|NnpR2Qz4O_doFR5wQHhhs@of z3cV~|ovjzZo&t+@P2v6Y`~Uxrsn{>)<0~ty~bTtSDNq zK7`tOBJf2glGcllkSx7$AM9Qh6rHn?bowLd%s$23Jr(L+t`}1wTA5M2ngG*!A?Sq& zL@U^<2OlyaX^nztWkS)ailp`CedJJLMRKq_L@OhTgI_&Bcy%5`D>#(0Pq87{`s5zS zuPAmFq9|rZQoQ{hXzk4PzyJSdv4bw92d8x>h;sh@Ct6SPw}6J0L6TGN{Qmzx=!Ggo zvZM7pIB|ee{J{sz-M$LFB95KlaO2+(7VYX`1t*zaPzrhB3$p20>-FFN|1-Si@0to? zG#p~=05kZvfhG92^@2>bK3E%?1@<~f5h#IVvA@W@2lqTmpj^EV7k|-t4;-HS+rWmx zgER2Og}b1ZY!|55>~015BdwF^#cq%wq-+Z@a%OmuT>~!LAVu4|8c@*&Djuxgyx3R+ zDcZpM@M4Ud89>aD)S#) zvVfLtbO$n}b%wrpaqkW&6@bf?7n3%^3K3DzfLkCBsB-Rfee+`H9Z;}2YR$#DmCTb?<2JAGQ0ywJY`Do#Vc9DKwI*`*5J zNdmi=wg$BE^%wCH02$=|sRI{#k;CV3Ym3EG|a$9dbpyD22X=?=7f3|%1HPR)^b2T39{+ZT;_j&+ zp9j6z2JYvIbhd)Huje-J1-XEsR1p$v>?#ZlJ0AQ8-5K5ra^Z{ZxBmZsvFO(S{}Y<` zf^>jYf*2r`J0U8;7QE;MsjL90>;-R$4C)435zyTWvLWz=E_jC^54bjP1b5_EI$JM* zR>5uu@2ms`3dCF6Awl<|`xZ1O9|(A%4`HWug4ObG2X6=j-LwkYS@yyZvR$;ZRp38p z8zzVZADsc39|I5LLu4`-7z`M?dqL8HFMQWSqm93%2sDDoz#zcTJryJu^x`0-`hmDF zi>n*#PWX9r5MdOAOI3u$;DYQd=m`^i^tKvnq^Pgv_x;fw(z_(+g_{Q`0z}{zrQHBkFae;GZosJ>JQg2#10`!Z zfz%Mpj5as0WJd9|&{!ouGfn}Y4?&mAs0p(Ql%rnH?FHw#fGp6p4cmJ``43(~K<@K{ zI;yu7lu=;nK#|BLWzkVpovxZ!Vo3dyMs4Bb;fYJy(0 zuZG4qf6GaT+ylmLu>OD-)(E+^5IF^g?p~0-z!&!+tp`XB%Ho3MFu40c-pOEKaA1HL zwhp2Jl*1u;36jIrA>Imj(Fe)c0WVr13Lz$EfO9ycNO1(w74x1**G==pHaqWKMEf+PT%OkV7{19k>#3IP|^ojnsk z>EwmhmH+==xLyH`CV@88d9)rVaRj$P0)4>4oS@TR*r1*PrB$gF(8N(91xs--^HzWs zI^4Pp>K%gu7hKt5RQlk+jb#GeA_Uq#4lb&eU52(PKzpZObbw6&wIVjajwJvwpnX6P zlYf6Jg!28;4Q`k5@AvUiu|8N^5313-TR}~=UY`jr{QIYZ)TMQ^1g3Sig4%~Kv@e71 z4guK%+Q1GHg4OoDAP%&`2djnE`BOm>&}tv7u^YVaKIp}M@a=dao#5T~FGK%>(gJvc zPj{dM|8^FqfNtSmz!%=& zjp>jYJ|5hwffp>0f{1@RWXCze=luJ90$4zc2|?9J(2JRuz{Z1%CR+#_UeG|wCRj$b zR{&Kj9MGh+5aMW1^Rcs~7t}s}@$VwYi=kh3a4|42fReQes7$#576rGaWU>z#bcb^E zwlIO_putY+0c!uHbF)pcCMZyMB1V%)s!X>iqxzJ0VvB`M!A(1J({IZLk;RBA}vtFX$3;&;fGW zePsf(_+PZ2hbFQMpsvJ^ZeI!h?IMmrFaF;JiL(T}C<8Z)SwLG;K<7zbI_;PfM zGzPsm2ENx$1hhKJ^+mvoa&Ya$(&_pl3$*1QbiN>XUg|*r=y<6Y65xg<@kRbQ zP<8~ZrBQ&M9_#hO8>|WG1UN@$h8N#*KuI#L`G^W={x=tr3c>yCBaY4tpbiHpja+bq zj03_CZ#x5?e`Cuq0uf3B&zZV@croQHsK0m?+}noshSfl4qJT3jN^iJp5iA5*U(Nw7n+xUW2F*N! zr;uN~@IDI)&d?WWouO}D*qw#;&qV@Wd|C+8Ck*bN3&8s4l4n6F5H#fiuCPMCKq?wY zR~a-53YyGf1@Dprb(Ps5=fQ)!%H1MOol|;2{(kZJ3@9#KzZ`tP%Ipd{Sm{ezw}?kt z=Tz`f3tP{C4nF}gK~w$veZO==v<1D8z6wfn904yrLAo`at~(%c=?YHJplRNN@M&I1 zm!7|OIjHvmIstP(l8Zn`Oa;Dp4V~mbl7Soq<^*;iNIkT(4?c?xvV0EgNKjrtIR6K@ zCVatj2JAdgfT zLqAxbsx<=*G8}xs20icVI7Y&UTK{@uArXV3#F5wBq|3U-UpXSy{-oWviQMeLk4v4EeA9j^(LqnGU(C^wk_}l z$4}4zr~+i7Zoexi&Ai}Wf3Q1LrkBMjpx5_6;ESm#;1UngD)4c4W_VGY4l077$Mbwk z2ek@7#j5q27dz9TAq&x;~`F-T>%y8iU|No%#J8ro#sozq`|yYgampe z4^jhKJYAAo5TBb^0Il@F^*x^R|Bk!<;K-ZB03JTUUZH~z_&f_rJiZ*@wajn8ioq!j zV`NSSG}ba3Jl*X3r91Qo|9%!P$lfJpUr@UH)5|ik6SPM8#c|L=8ip4>$3cZTs6Frj zv@*f<17srG^#iCNhn!Aa>)Gx4rkkVF_X&7WFH2|W8|Yz_AD}iss#@6b*xjKoK#RgB zeFqgEJl(!8IvHO)JqF5t^Iv*`=9=XaHLqBx0a0R@` z17DK@xi$RLENFdM>XpR^GAZ;0?Ch0)-Jx&5>iYoUtb-VrmO<(*ug0Xp{`G|z|n-|O}=ur)haM1oym0U)K7n4&U>vir- z`uBgQXEc`eI>%iPfU*ioBFJD603CMbs}T5N5oGCbz>Af~K?x6ZmhGKgpzXkEouM~g zq=4K7TP;>1+#Sl1*6jpZ>9XU6=Mhla3S+AnIC04fFrULStF1Z)geJGl6JH-e4}2W47f?TML&V$ZdBs6Aj?uo}W#>jm0j z394=(8&Tg(0T~hc2D%G1I1Xe44@8ac2gnvw1F#z3H_-j3_hZ3oUN3xUhQDP4noy_$ z4HAJC7eQ7a?Rl~B5U4Kq-2)mD0-c`2)6v;86;!5!1TqhScJTN1u;v^_K0pE_)!8#u zrX8f!^+)Cju&OD%DecI|{eX7Abxvu$()R!V%RG?FK#kc4pePG{0By{I>OWAmxx@Nk zZ91qw%!D{H;Z8s=xUB+OJ_jo4PTU6XhX5xaaN8pE2h@}wAe;F2`+|mA- z8{&&zkw%bg=M->1;PuJZjr{w4?*zX1l?)0r(4;vFC^WZE1yMm+A}=-`1f^@xh1m>K z{{2tucHIFwt{LQN-v`hMng{&*LqRUT0jdV3@iQ>+Z|?O8iVMuA+QvyKCnn7)+GcT$RfaCrHtN{eh%Pme_pjKt43-6g1ks#~9ve_3I(z;zl z&w%Oya5$n&bb)PvHiyoDtUksL+SkI-?Zna9Dlz3B_@p^saOMep1C8)E{QF%&xm^R) z2U-Q%U(Arj@FM*LIOaNA|4jb(AJpuA@pL~}B(1ac3rxrfrsxe!H7wn z{NC{I4+X`j1}HnR!S20!0g8jr7tk1g!N1@21^<3uaE#xD^m^ZPw@d}Ov9q-WWaW>& zAm@UdGQ}6<&a}>{B_Qz&U~$(s-94=!*LLaqJ z?FDtWd7zOG5&}gS$l9P6R(ruo71X2c?gg0=*gX~G(4ZF^APaQ^__w!$>;$D7kiP<7 zu*0-~PBH{JGoZT{6cT|iYN1+QYyltL4w?Z56>|GSKV%;gf}ArAsXX}i`@ZNE@c>Q# zfSuLd3req`xkGF!!5vmmXFvOd3go17NHxX3KlBAS)w@Eh12t;1FRFl#N%wt|eUgXy zBFG|8A31mrXj3c5E|8rt|A2xZ@P+vvXb>Rz2NVQ>FV=$RkU0Wglt3CC0sPy+Aqp}B z6czz5e(#3r1)c5-3cjFjaH zJH+q${~s+)zwrlcOy&p*=xzlW08hAAVB#;hz$}3v&^ck)T5%vdyL~RO1a^yD2zqhH z4`d!_eCxx(hupnAypR@O>6?Sk*qP7q?=OAP$?~x?I!%f z54H;A7+A&w1zyk#cbNE#wGiV$j&c2P@Bw#k4=bdp7y9PlBX&>>y1wWRImi;!&2li{ zg+D|!D7GPvfvCmen9!Y|A`5FP71e(+z99dB8YOoo|N9SGtTh=_gY5SOdv^-dyRL5z zK453Q07}H&E~i)mx_M3ozEE@nY2^tDc(L3E#Nq%|_6HwvF^7VJ>kVkU36?wgw@(Eb zAH=`C71W#w$g+F!c?UdSy?72~?*}=UlQ|SL!tmzcLsm%c1`Ykb+yP3w-XKEs$N&E? zXMF$vA6$%ofEME)K&1!&e%~vgiaVT*KpR7B2Pk-4aknwPZvX#(0y%Ar>!4FBK_j$8 zwlNmM+8E3Sz~Rx^dIQ>4n0jIIzyB|Cw*QB;I37b96P>LmK=Pmywhw^heLxNcw_L$Z zi_j;~@OZ+%A9N!HsO8Gv3vOCW1=Ypiqse`rV9VJ-FBUw3IssHv_qKxU2h|CnrUhte zz?6UgK@kWR?(PLSGw{V)@WmV=5Lb6&wE~iDeZPRqD_c}6KwiLN1z5Pd7v$5x7hW(c zKwO9w&4*Yz!FEBL7Orm~?&<7l1y$QG+_!4&MCd1 zYWsyGSQNAuw-;nFs5JtrTVH(K3Mw_7K}`!BT{Zswp&Fp3+hXuKS8ziBWPc~PvV3uH zE6f!wp&;wiI$J?i%8Qv`ao;!H5c@m9wegF|U{R1OdR#%)r*-y%Dz6vWAXk9fj@V05 zumfbl=beKpKhQMZ3(#CB$P7?)feZ?gmPdvxGD&GkqOoOVgY#F2D~10{g8b^h}l;L)CdF3 zIfHApUY0fC zr~xm*#9wfLS;W?Wx74_ z|I+URXuJ$`nk#7aX6pg|9${t%2G{@-xceK5QYnE4GADxe2ZJ_yO$BXtB9IPqz)1sC z19LI^3V^pKHi0YyO$>lC(HqzuFYy~e0S;<7a596pUh?ms2v+!r72HMy515L0yikX$ zlET_6pxt6})S3K6w1sNQE~23^?3zaM;}2B@atae8rW1IS{KI@ll> z#FrqmK&6&8zXB@VjfsddE_jrIoD1?F0q1U6j~;>qoZAf6 z0181+93lrd8zin_ap(nB2nq;LOA6T;;P#a38)zH~!PP-pY@oPiLyl|MB||^gft(78 z3Qow9;5VS@rc+>(q45UVp7rA3I#7V#0_B;Fpgn%zlL&%%z z9c_^LmLPY$76*-Rffl8M)}OZ)fFu+^5}?L2$mH!VUNWG~xBS}!#e!a_!p!4uDFKZW zfZA6jlmCJ5o#_QJAR`K3Cjb7aAQ8wqYWM^wO3~E{QUGl-gY_U<&95Cn1sJI8`!fmD z;GPPiKvU7s=07OyKy3i!q*MI+!G<9^0jsP)27pRH1Bg-l`@vRpw)EG> zd=>EG0{A>^kxnr8r6qV23mnv-@nk0n{_Q*-f!$LScrkA^NFxWRnfJm8!cOZ1JBEMzRFEmKA;K3fkhKQTrEkk1u1BP#8c=>=SPjbf zpsBK{8@eVifbJ3krR(k~y&!35h(ngYfsbH;Y6my;k8B3JB;bX111zUXg0|Izi-3R^ zOILxV(>lTYmp!05_RsJC|3NoQ_kv1^z!#V5U>b#Xf#y0vM-X%dc)W;O_5c3_aQO$? zL&D$E3fdbEQUKb(@|qizznc#-rFHsZ8GJSe!*y~#eo2I{c7z5p%G05wan42cmM=mNVQtD*ecd7Qw*XU(q| zvk$32_G`S!zKA>;BoDrG1Jrx|0CpMHfikU?kXQwqBZO__3EW2Ck8>Cc*$=%_cp(E* zXpM7__iQN=4p|8!zz>o$$gvb{h$ryvd zDxgsW25=;UDpFV@2VO;k`bqFHBGAY~^9x4E=nbU!hBj@$T^0D~%|she!3}OmH@{?r z4B$YNV;R7ivK$gikZDGg<_vDjA56v$aVI@4$I4M$UMbC)vJcA>{Kw}Pzp=c=-YyWd2_$CbzSW?H{1>Lh06qHK; z|NnpalZceL1T@PbLO(SB65;O!jZlCm2*GIqb%v(-mjHk7cThqAnE*}* zsKqW=!9{2)AehfOEkHg3wXhz5TUfmy3S4v&3bPk}h9Iq=w$&AL5Q_s;9v^%N>V|byaOo>ZA-gi2}u6^uHfovA1vd6!xE!(15b5oCvg2T7pb7)mOhxBZ6_CPpV1;1wdZ+M0raVA3 z2ejgZHtl3UN{bhPhSNc=2{u-NP=7+_~OSRBuR)>R|UbVBOxuYUPuG1dn#yLH0Z@i z$o2(@9H|O{8LQvRXv=h?0!3Kj4NqEt+5L8b1gGyU9P-?*4NC7vH z1(-lJnClzR*;t@)aMb()>zaTzIzdt}s8;vJm3Z% zB)37dVl6+U^*~xdS!SULh{XYk0{-p2ATvO%R#5f`%CdXGxDXo52LfJvT>xgMb+&@y z2jWJwT;}?so2Rj}7Ze{a$`*hE5mXg}`m~_gC(vS7@O(sCw}@9-=TuNkzOY{a+PDeQ z5zr0R82IAMS+GUWGy_R2&=l}u156H_X25X)KG|?8$W1{n9zxs*nK%V0fk=XE3VLw_ zSrTMp;ERR)$Y}<(xjpqJ)ES^8gv-0&^aa}1(LNvKT~J>iG_C__b+9sn%XdVY33w4O zACzYPgWAqlK*T{%1NwiKe1?NO1H&!`CI$x3r7W%@J3*T)vM(|-AA-(kF!OI`5eV4H zz{0=)x@IL*UmpjieGdw!8K1E?nj+V?V}$e97ueFwRDVv#cg zs6Pjaw(cTl22i&Tq`sjDWlxJA@)i})=9RPxhRobV(7u(T)WjUny^|c<^ z7=ki-%4RXVXfXq=g5!A|c+B-b!)uN%*Z(Yx9j^cRxB31DjlMyQfgGHx2NC4q-{0cZ zAjH4`;c}#Pv$%qc0-c%*GWZ4P8lDNSw}LLt%sBj2g8_7lnn2)-tYzS$HQ>cV@DdJ= zfEPO;^?ASx`{iJ%4%dG#p8Wm)f5I`>|BSCWyF&kijtB|;&%e#}Kd5oFZ6YYpnh!Br zAF2&W#Ijw6kKTN5apL6*MAfm@;jZeAaJ z!~|Q%1{%;TkLw1v z#KBuDd|!a)7Vo?`{OAAw7yCfOP7v|r4`eXLl_TKAid?A2`CA;A7#K1bzA%DM4}WnV z=2-p~blg6u){Z}*-Tr=J<(49~xUU>ca|G(GwL?HCK4%a`R zL&!jz&K#ebgU*=mbiL9GIX3Y`U^nE@;TPa5<6jtnui6vobp7&r=5f~#V7qxhcEc~- z0gdUStgZ&x-h7A&#Q`UO<8Z)%CkO}J0i9?Dcfg&1Zr=}qFV=&%Fo|@!et10%v^=u) zQmq32c2}tEMM#^o)Aa*1h!cMQ|34v%5qyO25=j4`)Aa*rR1CCkbkcNiVomFGy~Dpf zlp`pM>BW9XOA~ZTTCeK~kPGevf;K|bzet5>4*(q({NluXuukx0_Aj`>+uwQk_n+tl z9p@2x2XwaDi+~r+5aU6KjDI`mPCF%t0H_7Yzuol$BuHhCfQ{;O1sxUg0_q=Va5KXE z^9Agm7cVA&F6Q9h?)oAC;;0J{1rU>%bD)W)gnt)gbT0JAi#Vu`ACLw?Mx`^u3olb} zg8*_Q^ITI%0-gXm$h`n04L$E`Wu-I29VmNtr8C0`D0@n!GXv<(*7#J|oy)n2#fb=B zW^ryj+Wx*BHF^vTFCLq!gU;w`x%mJ8&iUL}maD%2-S+`1dR;XFUR=$B`leJoi-mu? zuSVdDLogx!mS-HG_ErPvz>}$49{&ITqU zpx)LC5C8uUc(HRQs4U>%-`)!n4$NZcoeH`|E9gan0Z4)el3Bs6{2$Q4$RD8Px1cLy z9{&Fi8jA-Vb_kl*@dfWH!PwCUKAv(e0|P@A8$=^$)3!)AS^~OzK~&(2ghOC&f)-YR5AgsQ0-DwR z(LJRX_zksP$SkIJh%=y`vanFdoL&?17BqS0Btq__2xnR zm)~KXBk)3P^i5#kfVDnV>j7Gs4LUIgWEQ9o0@54wqJ9e4fuI&W|9)SDv&11G01|^a z>&SOd%XTiPuG-$TM4W*E)X@i-68OS01DX~}g7~+C;~TPjssp4f@P!o2k_(`jXHb-a zrkNTK_J}hu1ir}e2FEF=F70jwnU~fHHvWY(*g{`WeYAZd$Rv<%kb;00CniIk4JstT zUWBI|S*UTKI}E|P(mKH|dhz8Os0=;;+IoT~<TRIIw3k=^nq-BJpq(rTQ`6*LM})EHaQNCGOTOs z9Y6;cJcR6->zM#@1ZceG2dHHO<-T~F4hwa`G|;)%om0UU@PI6My#h2j(A^=X4%(&P zyXN8l|HoRFKm7ln;aKZ35cT5e*Z==tJOB~5ze48kw>3$qGcdFsC@}#ybU+-2v~IAW zX`NFcMu7A(zE}y;wgg1X{|ZX04b0%XEBLpA?E|GQkV}GIJWPYSkiR7sG|vE>hA&75L)ST)39~;Na?RnF`9?0WU5KhTA4EFA+?QFPO_IH!_yGm)RFIOO7oQ+Yr~ue!z<&$fD+e7bhVVd1q_RLr`)7r8JPU zLqTg)#MB|TEKg|!WvZYTx=>Gm4io|9H(!o!nA9cknLIo*AoV~7sME{8y%%Ddz>6<^ zV248n&_Km~zzat3=>Z%8FJ3^FNO!hofQ;+~IU}%pDu@&GLMH{9DN200TS3V`pc@=o zfiE5Ig0JUB!34yBw_mK{Pa%Z=zPQVL8@Qnom z{GdY``1gYi2OXf!GXb=Pr}2=JJm}Dl{jDIUfKG=8HHrU$?<^2_UBSN%T(Gqs0M$Xh zGJ)NpI-p936{INu+m(YAW?#}kMgU(P<2d}x}Io1RclXxKk;(~6W zx^Kn=IzAQD&7BHT*a7YXzxV;V$D-SnqpJhdt?KA)1KAGhFoU=(FK)j7|Nq66_n?ND zs|2Kl1`eei2@DJjpdCqIhxWE`vG6c31ndNj&SYO?=xzl$zqd!Ag_nULa2Ep`cyz5B z?6ux0j4hzsOLl-oPcU>tOmN|1*$FoDB13PB00T3~G_VS|X`ox+F^ytmUiY3EU`9I0wEE zg4py@8+7_!C`VT-DB3!}J>wT@pnFH)gBep>K@kc{BcL&ij$Tk3{sr^9|Nme716_I% z3L3`f>HziWJGwwAraP49SQAJo!;8Cb|Nnn+1EdNZodKXruwLx=#t6C|vpbZhs}*E) z2RNO9Qx(YQj)@?>FBXBc&IMn*VFT&|fVu_y;-ER8M3aBJuLP(Ms{-n8fmRlYfX;32 zMvA+G2B5eD4WodwD(I#%$RWPlL&2KBy#<-T-l-oR{{Ih7059%YgS04sau=w};SaaY zyF1hXd}{>g&N%3j-?jV*<(7tH{@XZaNYwn@j!q|z7mwfk z|Nr9N8_>lj+kF*4E(e{!DFSM*t8|Bo^s;mX^!9>W68NHm8I;XLAbmECc4vkc)6~Iz zHpro-k{X~fTu`UV`pt_w>W~f`XydLyyE6mG1kfG8-`brSK&=D`1_p*l?T~wdL1VAy z+npIe)g@?r^FX^Z1E^L8vA484Gk|JF5PNaEGXtm|0(BVJ%C7|KZyi{b#R4_NGC_gbJDKRev zd{9t&Wqc|Fh7f3o6Lc3_erXBxJ|H~j0f3sU9G$)|z?GCA~5^DCx7LT{q+%ARXnPazLIl#@>2!VbdUqBJq}Ky- zZP1IXXsGW>Y_k|an=O$rBgp*i9%&%Yb~ANz1itY32lAUvr|XmE+9%)}?w-8lVrF1? z9hJoj>AZnV4R|2}H`Ni{RIufNppfI>M=|@uUre*tf$v5G9UNEEdY~=@bi@ zAT1>D8A{DBm<~Pw`)Yq+Nq5TxkiP@6m_QwB-!CA?2fdi=B*@TwL3ix6&(RD!mwx-0l5sk=CY*qQk@UHPzdGdcHydkmjNyU0^J@8 z{M!SWg77N|e8JEP8vo*W9RR;!9MoK71Z~xYYYpKN>2^{8Z!adOD&WPs7O;ukz8rxs zF3tV>zxfEui>eo(^BZ3L|Bo7BlOtitK)c(Qqj@Ljnq!7i`R-7Tpcn4o%LrId!cLTt zf#J1t7ArV~bbul~@P$0w46W`^j^c#{fvO+4Z&8ZO3bQ?XWjnF+2$-)ZwB8DVIaL-!#AB zIPUrbG(-%WcliDc?Se?wmzQ8m2*5+Qp?{#;ivB>#3yy9<{{3CY)EF4757tV99RfPL zqIXKi3D6Y43paPrwsMx&N5SO;*a+W0(6OsOkg|uFzc(CY2aX|%=3gwe)gZruc9nr_ z{n6bsv4oR>0etAiw`ABAmEGv_$5|R7vB=R4zK;*o4d`y^XaH#iwa<4$wSw+k1i2YW z{y577kk*$4pvAB_I;YJ)6l$G8`9Kg95(gi!_x3RLaDqljLLo;)MMKR8U9EwqCys%J!qyi#%>2FjpuKzoFFF&! zaRW+R-JxGPTe?8e2+j!L4lC*jXP|T*pOx?;1fr=Ev}w;3bP&vs?$9sYkR;F@`lM5& z1604ku2J3g7!rJGpe6AVpkxMWo+Iht=?Hw0xESo@*F9MRFTN%~-4yz#+xJUn%S2Ez z0*yjpJEE)kCrfQ&mcfey5KWz~pkpZ@c@T7v8(43*?}JXBrsmoQ@F-P+y6F<=!chrO z*oUI)VQC6@(Jcvb70>Igm!P8>@rGwRXh|5Je3+V*@InUW#ygF$3l}6y zf<`s(fP?N1+?mynAVH@Mb|xt34nAP-_Wja3g%P636>_ee@*m@=B8z=g;kaPpe~>Kp{Vh=*u>eL9N`Y&m2MrxRig=w6&JX`PLrvEmo3 zpwT3Vq7`5lrl2YUje)&*@BnmQPPglqw9W~TfuS$Q8bJdr3@?s8`2YXKfd~KpXG{P! zBS57GsAhS=3t6Wf@Is^kRJ(x=<#~h4C!iH_p#3tS!)^FM_X$C6QvC%POa_(u;3J1v z0<#!1{@cTS%MZG_jt`;;t^5Vw*|NmcH1`+4(g9dbsLFN4=NVtfA z%B=18Av;t;zjT6Y({9%nkfS93Ng+y3Q0WO?Z_xZkBfPiv#!k=~vEYLA^J-kVoqxY8 z4`{vyRJ%fQENJKj-okJZ5aT7ko{^8%=0g?lC>m-6+v{ysI0d&ojH%xH}KWtq7 z!;540Kr@pJy`gu4pmVLDi<~%uUf6<92@-*}bY29!hzWq&g{-|Dq#az5f(OB1)YpL}_da1V6$0QkO4$AT9@_x}HXQF{;MxzG=-mr6m$U;Y3sEs_B*h%>(T z|Njoq#34+*63CL*^`I;FK=&Ry!~9Vy3~E-pehGMC023+!k5+&ONxEHS(mF*vUOWL^ z%kkPVi-~``@0Y+AtjJ13e}JdhyM1Lq>oQ;L1S=H-`3HKRG(>zMNE{>z?q`F}H~0V= z4D134zZ3$U^4WbhpjXspnlrhvp~J5Zb-xLMLOK|g<0@g3RLY)VFX?9%fH>pEdZXV zTsgXZ1S+}%S%R_{vshk8SAjY;A_4FgJfwfn?ZFcGg1-rzP9X7jiUHKF>)`^ocpV*H zYyw^2@j4LPO7DjDEbsY2Q$wjl7Bk2J(Dv#vn0N`(Yk6dwTENB~cK|JOVt5e`GSd3Z zi{;|5>&3zM|DDihV0hsy0Xa|1;==#`J3nEYpao^J);Ayi|KAD9>}j37KW_j3zl#Af z4ZGn3;=m}7KU%mzEdbCJT%ElaK;ws@;B^q$;op7;GQQgkl|uLf zGp(db8Bo%blKKC|IEdf>u9=mGn1`U7wgf269(NGCWt}JPttqU&v z|DOR-4K}4a6g2JyuE9>jR0qLT&$;mb|1NNA?+`<`FGuebMo?=H>e=HgO`wxV`M39i zlm))1J_oi0R59^y2U`^I!W_KVm<1HzFRUv-@*H6EKo?7a%oBu|2X;y)OBet4sUWk0 zUi^odbs*qHa|=ix3%J#J@nLr;M{f@oL>oAWI$0+2Z*K)@3wZGZyiOHt9sl;JAioB^ zcmfkU5b$D0Imjpuuu<6;LHV$E3YrsMe7W)e|BLq^;uVN^3c4KQW!XRQ(SR0dol|`- zfX*WZiGs7$mkW>-(Fg4utKomm!#WN9-RDU;qFAg%F6~1ra|$ zcV2u35$~>n+Bdtv_v1_j6>^}dAW$r1pGaT^UEXRt9h`Ofw?kw>t#)vLfDWAx<>_tV zYG4GlY_IWxltBhCvO$NgwTObEG_AAs3AE_w1u>ur1;pgvKNUoQ(*yVnwjNfH4p4G& z5@ul71u3$pf{N@H9w1kO!UmkvL4^Z2=Ri$^6b|4_!N1?t1k`-`2iYZKk=EG@PPgpW zK-)k;OpyOT8o&|S2rBYHlgDd5{QnP{?E=YUUIdq2Eux^p2}2N6puq$|b8?^y@Arc} z$-n*rcy_L%S7c()i>23W7@ChrfQme@qccx{O`XCEG9c)Mn+PbpI6y5}(A7z|L8auS ztDuetXdw&8(;%H-Kf%jVkb44O@W6C}SC4>H2E3SoqVwfl&=MF>{s4Ig6k1?&p!owN z1}(|>_xFOL-1=axE417OW!vr0<&3C8x70w3Q{oH31qoCNv^h8fR4l9j-No^GdT(n4 zsOI3`4mLKhcPdCS=!F(!DI@>>R#3ef@ZuM^VgZ%P37}lRy%$7*Cfq@u33~Cn0BlEE zXDf(Le5}`k7T|!i1Y!mqD9{662r7d1AMk)Kp1J-1e-KC+YTSTAIOxSI1+cQ${rua( zP5_w;N;-ir1mI2s@j-bI9I~Jw1{;K}wgTrHP=%!iK0E}h4qU{6rVK%=a#|cgi$l{o zTSOm#f@428X+xKGGJvZ6?j8?N=%;n|fK|M(y8QqD3sdlwAeYiQr(S_(uvQQQ>H-iG zbW1HbbwcXPMWEsj)WFO>!I0KHg%@O5TIbX|Fx?;qR5yspzrPnm!Q8>WAL2aFHv3@E ze!l&^AUja<3RDYdcQ5~buxsFn9u%;kn;${#DxRjm7vXcjaSYn-3^oS2xxl|4>?qKw zZcs14Z2?6ik}WR;pvJs-UIsR=v(@DSWOAYv6hQ$m?DN6mpn5pV?#049FfXmM)dn2W z;L32H?m^Fa|1_~HT^SUtGklhz4#Jl?bmNjd$X zeRbOjItlDVen|2~iLrneC*nc&3J~E=u)CqbgI4f0LkxN816m2VeJZFd3EBZFR1ZF2 z=o1*I(XP=a`AZYQYsMuL~1#z3`k( zFT5cpzBB@dJ5ox!_^7u<6y(kTaKjSPMr{GNQNb-3Pyq+pMFfhYY;fNOXbypvlHl-$H4Q*s3VLxHG8qd#QJEh#+cBdAIH)BLcP8F+p0OGl;z(Z3 zKEd2Og%=d$kYonh(gnJw2w(hx92oFI3St_GVGc>>7!ClXA1n^Q6H1^^4|=h+4I1hw zKwg5RB9s8a6ORyYB|}UEr*rg9Imnf;G!5#Mw{w9CG+0v&tQuStWuE}$U62dF zP4ny%49pjUUPMAvLwkszCQ87Ir>Bt{d;I%*K~1N?7xy?p1|!-=;P!7&7UPSj>EOBx z+F%5?m|iqO#L_xjL45x0Q$bWvZ>!5?P-_<63IjPOsJ9j52hjXq<3Uh+Bk)DA3}|Xo z0yH)T?%V~v5X``^Bg^iEG{hE=>tDn}*lC@uB9|b`yugeA@G7Q@4|}KZ%3S*YKM1@~ z3Q{bC_<_5?3wjQLifJ$((VGCP1m`}Gqag|pK4R!?5e4xf=0eI2F#iSL8PNQUMsF`@ zSO?T*1l9AP7CfjS3!cvb_cP!{*bh*{zPA??1cAL%K|uhTA7=%HK){QMa-a}U0BsZE z;NL$HG_u?HNS=YAp_0|B`P2iapcnFK;1B_C;%NlQgBSlbfmom$!$8A7Yfk?E|6)1l z>I_g{i%<#F{DZmH2i8D_Cdq@3*dfIYWO`xh3HZp=0S0E5iGM(C4^TOgeK7$RE-%>r zgOWeb>uLPkdqGhVm?i(>P%7B5{QJQsfZf~@$R*Ce@Pgwcs8IoKiGun+APbsbFhZOE z;EOsqdRv;na}@mhu>|0Y>EJ~apoRuG+_U6ggkrPI3uM{s6QI7<63`eEXdWFj#{o%p zJfPW*-l-cvGW^@YLuyb7ZUzR>9ChO%PzVIQc=-Sn$ui)kKd7$_D$&6`WN3#EB*woV z(#3Vq)F3T? z)X?b>MKT=JnA>n1JctphcJU(AECFF-OW zq`(4YO85v!Q(*U0kcB}nHbT}X!$*RlZCGsM5#S5KU}YYPI>=B6)Ke3|lk<@K_e5X? zD$GZv9NkmIAj-FbgOI1IlVu~gVnZK@f%qGoCb~tMdRe?ceKe5213~_t3QD9wFOrg= z{yq@!Vi}Bm0=bNV_#0|WM^HC7paWj)ge*ORjF96Whe7xoJcfaD2nf9LcOm#HKM{nF zAjTPh74TrA}LzfbPqvhg5lt_exH!Knnp2j=u1@`k= z@R1A%qJKm7my3!}rJvAm1mgDBsCCelDdD9{m7a2h96d>&>*>{0_wkG!~W z2(+#Ov;*Y^beNzQ#DJOuV)E~w3Zj~SG1u1f?{5XMVc9v91G+i^UixZ+2T5>XKX$Wp@PlT6`L|C6IV$Ky)gf@xX-4w_M$qwKAO8P;nGBks1&w%t z8~~~=z^;OJ06=0;w}Dq-G=W5u?gqjE% z5CD%Of*0sOW3F4I37kxxWI=R5Eb46O1^c(}ASjMvKwT-wKza6|1ZL39>fi|K73ly) zILKV^_^S*w=z3Wuf(kg0Q$Q8{%~*)h+b;z5wt|cec(H9FxP=d%WdyfFK#2w%5FiFL zAV5r*2YosCVMF7!=FmbW`-B0ruL{&oQ0>bS2=$clrEXUZ@HFY(1ONZO*a5m=T)2DA?kl-NOe1LVeTNU9Ea@c}%C0l9st#1J}@ z$luZhy1f!IIs-QYo?mt$Y~pC z6%20qiSeGfiRn(IX=$lNAblW_pwz@1gotxSUJjZfun?-Ml+2>|GLQj9scG@46$PNX zb5n~_^O95J3-Ze$W`h^Jgm%Aad;{uAg!k_K^5y^korjsQ?41UUYeO6EX`Q|=K-(ok zMS@<`M}hN3TBqxiH1NWVR)rt`|G)6q^Z)+~=RMFlb);cXg+Hj1<^46_DjdB-9`OS) z*AMEDXF!yJ2k--aKqfL3Gm1`XkZa^(O8cc zWFoVN)#C@a;R4bMo7w{P#JZ;hLMAe&fK|LG+x`Fli^AQ|>eUszD;xE$KhRVRWWL|} zVr?}4_D~5>)c`U#^8{${8GIKW7ihm9=;Doo4_QFhi}hE7{SQ_Ro~nbW2Q9|zox;oU z734P8FTFg60$-?ng7hHU`L~C@fEf+0b$9|_xWmnP5d=2}ZOZTQN3a2~xs0^#7EzGr z(>k#&`-g=E|9(gifqH9AtcYno2~adAf^G!?)jQb2gMYuP1ZZjxRC}a>SK{=7(}vD2 zkf%bwfO{nqKoffW+b4of$peiFfK&v$SQ!RRRiF+K_zELej_w|qO3-o`&^cCLz!f=o zLa@7O4(Mj=7mwJ$^FW~B1<&e&mx!iygRM>L>;T#EV%<(qXBT7*njt~_+g+c4_R4&L zk41n|A*u){`GQ6G_lJV+WB37{Llo%dfy^OpyaJy?bo~PFC4!6zdcpbw6#B3UL{RVr zzL>ZZ+%QV(Yz6T_(_5im;Qe5bU4bvoeTQlT&mMx51-ytt(e|<#be0Pv|Mp&xY~YKW zP;lTu4FzSHP;hF+xC2$f`c$nK|8}t50U*nL5ncyb9`Ir!DH3T{v(i{mhZ7of8_6_`Oo0ij>O2@kQ}05tFeT5n(j&Ze$k zz^NCp*Z?xm*1`*tesO90|Nk$}g09a1tICEqe*FMCC=YBExEt8R z3Q`41<5QRz7{Fl$K8(*5<-S13<(vGy+2Dym*Ec9J3_3OrGRhzN1|El?AOhJ08mxbz z{1TkkK{vyIZX^JWviG)#fCYW8OczHgzE>8p)a1lfa-lA3uXy)w*L9@|9|IH zhOdzMv#Fpk4tnuF7#!xH_D`1mi$n-7t+UnO2k2G-kmA7ZsUV#}FHD|;jRf^MzJS_0 ztv|l}{~yrZi=v4C0Z0)KvTfb1AQb`Ky&z)(U(`MWso>~rH37xY_NgFKKxqJEW5A31 zL16blT>veKL7NU;d3t-Gb8?|yzz2SA?*(ZI?4AlT2vNQnK*~)}2@1;C{M$iSQ0)g7 z{*b~CTta{biavvH;{)~cK!qr5Vh?=ZGXMUmAhFCt;DWV>6;iN*EC$_Y^9Fj26UhF6 z?p~1npq4E@9mvkWS-gXm&vvs+2zU{R; zRQ~<{|D_9vIP&NJ|CeFEK}pd;}hp#|>g@PGmxlr~?OM1rFdGzbO`8C;bb zB)v}vco94Uq=5%iioZyY2eDaT@o)+p0--#;JH6&N=AJ@IvJ+xR(Rjak~61sFTCP&A?#&=0(<9NGB%^G#|{c zojGREX858)P?U4LJ`Jur!J1L`s6Zl( zzZZ01bCwwRKncjQd6{mW383}CFX|zUfq)lmkcbO-Aq!6Dpk@Cb;95W{)MdIw8bMoZ zUiiSYT!v=&7q7s12BhUpukRDk3iLOi)b%0Yg+UakbppAl7rYe)<182vP~9HL$iVO- z1#+Fo5B}{gp-%!{i28z37YqOX6Rjuf)gaDRfL=oi$-bX`5Gwflo`bfIfOZUFZ_EgQ zioV0(fg;dRNGfUFB93XDp?6;F1zm~(I>8IFfxr)JC`VeS>kZKM5^&|=%F)f!(Je9& z)FS-T?W+L22NrVH^!CsjK`%5QSpl>Y^auZTA6IZ7+zEOi02O~B4r%KIywC%$Nd=8b zg6_HnN2M7cS6RNyOuN18y_go7eQp_c`82knov z?vT(Y;NhHipc^kW_WSsB{)Ap7O1Pgf@C3ndC-~X3@?s2GdzK= zQU7wpnISzfGp`uBDm@gme^3Uz&7srvNvA9N72n{h1DyD(JSlj_ z4RlMr59^B;_Uk}JUg#fKQw!X+3JGLN>kMIi@j`Lk|Nr0#MbNyfuLLL&K)2Jq5Q9k_ ze82!6Z}a^FyAI{|+W-H-6OTIYLN?%qZaFB`as<4X0_ntnj-vpb z=J5rx_62k#D>y-b%nEq%A3V9m5%3}ns`|y*K!|?u3@!L9SMY8ya4T>lL=Nov>{ASo zdo}-nD$M6=KutJT&?yBUAj@VBK4Ji0+XvnJG!16aUugCQACS@Q`USE`>EJ^KW+Z22 zz*L`ys(xVxu^KYL3swz|E^xzE3L*z~F+vLDtN;vWf#OU6bZ72gFez#RxaGL8QQLg3ExMw0AWqo4o>6NLug=q;SHS;l<=< zpbP}rT>JbPO8(IR$wTvx$q8pz&43s`;b39_ojv#C@BjZhLBrMH?DTo{LWkRP7>tj0 zy8hW=&j8vp(+X1YLKEZ$aH0MJ)Q-bA&KrEXTNQZKUMT2>3JK;5kRHuJ(8{8;ZjnGx z{`vCa;VMw>0$+A3!F&*$0U-<4)4E+8nbJC4M8CY)3swUX{QLjEbIMVcfB*l#SP#021DxZ*{U7vG-C6j1?=dhifO9i=Sz-w9m$c4M@I{5F zcOb(Y!@u7}^b2StW+Aw2hIM=(N%ILP5rA6BkPZ{%CaWi))+XpcXh`=8k^-K95*p~( zWJu>6ykyT6to_BB+u&L|oqrAY*;1wh%Oq?fRm-2OMmH-BZA! z81#bwGRP880rCRPl2FJc9hmM~a}%TmyiX3ae)TVCD@Vmj*uVfNy}T@k&X(Y~+d{_r zU~LX)kt`@ZgKwxncb3N`kR8~ZwQmI|34v}UMhmW`;J^g!#eUK4D+0 zd1^SieK|UP|GZ}F4&~_#{nL%C45Aovek(}5vMUd0XCS7M(C#kfnuPp;)`FPZi4HB zZV!%5-#0JbfOufle4t^G7k5CzM*%OEs(|+sce=g+ZKQ^6O9q`^+>BRG*62u4HaUJ?4 ztuv7CMJ9;v`r^0)=sawOZr>Nj9aTU(GrB`x9Cy+Hvp}+-#gq_P(EI=cSXKZoYXV|{ z=e|Mf7F}N)cM-6F3xP+7UL1Gf0ttNcBj5$-j^5@Ypks=m79I+CvD^t_;dapUDk!DD==Pc5 z68IuN6;#l0yygeBz$V- ztPBiz6Nox!BU_6t1H+3#MQA{SkE(&?8EdF>U$ZcPPqcmlS}GOv!lWEzFAtK74++B@ zDAFDJ1eSdaUPOUT6@D!XIw0}|cz>KHq|?&v`=ry+;Dt3vx;ymA@g@aZP}njsypZ?} zI>iB${Q^N}>vV@c;NR|~70~VbfPZ_S4yd#C2efi4usifg(2LXZ|Nb{0Q9uNMlqk#{ z-~ccNo#5d6q1(o2#?&gB=6IixuEgfI%C$L50GT zPM--PFAsn+dFTWF{Z1OK2TF=xO!@WyKPW4_;NKp|6Z9e!=J`^wEGEbiM?8Tq>|vrM z4jCsvM<687zyc383%GWdj0Vt}zUy+(U^@d2wlkehI?c6b;K4TI zCnVTBKt}^Wtm<~s33%ZU4m!e!19W^7)M57oVGeW1m?OZz@S+xG@(ECa^*zz)VbENA z0&cP$)Z}-J44?wL+sPo{MVE^xC_<1TKLT#5N5&6OG^@i*JpwlMNT-KNbL|nhsV~4s z2D7}J0Wp<-yAxjks9XzF33_qoBPe({UVw&eL3^q}hh^~uzW6EtbvS>EA9(!&Xku`? zQ(3@^+XxvGP*%PHD)5)dLIdmo$lTBaoq-z7wFlr1NQXK=9BdRQk3pm91!$NB77w7U zPe=+?#Xu~(8wupw=Un-o%0jU8zU_vGGphUsJzdbN5 z=!Fqnl=Haj9?;JD*X+k#K_>w+fI`VbBdt4hPg>{1YakDZf~+wB5!zt8U~YQxh94Rb zC7u}!zd*4f5cFa?+-MU}y#}hWj=_;`x9gqPpyQrF7Z!B8 zzUXY}0&OSncD)lH*L=jq`pt_qHzCb7P%{ODL%ZMX2w4N#|9wl1AuPOi@0#HM|96UN zW0_<&KG50fvL95{W-;{k8f*uRIO<*nR}`@Ag&Lqa9?ft6|7V1NqJp8fb<0*zi}@In zIw+ICM0+E)fHZG_h`#vo_5c4DpTGY9f4sFM?my&u%P*i~gGCu6<}oxMV(bJnK!-U% zrWHYc>J0tS?fRqnfJi53M2VwYuybln9Oyb45SiBP!I#$A+X4~*3qx98tqmZ7UXY6J zK#tC-9UyKin9I@GTLI#Q{^)jM>1@r3L(GJCyMF2B0UfMRWCrRaPR)q>|Nn&x$jzYh zf?rsHSgs(#0Yq4XrhJ${`@VmafxOOr1sp=4QmnV7Fm!c)=|hlcpvCDgZbyS{0q;8i1v<9jbZ|@ZB&5sx0d$HF zOBZ=lY==ERfdS3QAyUolX%iTtEN+ z|H1%7XoCo~&)@@1nsc(ETO@lp=tD$t>};FYkTH54G{G4k(sl{xr; zsk`fl0Rw~fiNF_%H$f=~+?9nbEe89Yi+_8^2?Nl6)Os^;3j)+js3rn! z%$O5`o+0?RPXy@#%_f2*171vo=>{E}9x8)$+})RM7B2q%zA^_NGIdV?JLh81i%a0C zNgl98pxyr=pd!H+W(K&KC<9qD4DLaI@?iHwkmjInSAl>R#Sx%*7C>|{Knl{jr-Iy) z)(Ljni}@d+<8G*`pvJrqxB(83w9eKUAs~fd3Nj*y8kF5l2Mj=m$$};@&>i#Qmmb(5 z{M#Ygv(TIb3#J!ErqIAW5b#0_!iGBw6k&pColU0<7#Lo>`~W%~PK1HK2z+4!VT02TD1=aAmLGIb zGAR4DPJx!Ty&wj30WgTkzke!-YW~H<-`fM4Qvt0Oo&Zw}Vn7vxnEd;vf+*0rqH&bqeDOzLFTi1dstb@L8`&#L5KTJ z1it8psD9n@GU)&R|1S#OVUz*;1It=3)v0&8ay0LNly%bl`+GsvY+yI2?|t`(Fyye+ zA8DPAJRl+P5sb%tL0g5ur@Qs`g#7>i;_KW0u;%HRU;M{^CM1p|M}1W>bsr5kjyg%eM}i+ya+))jwC86yJ&_)4C% z&fba;$V5HFs!Grq!=PBfyc8XDnI==M7o_a{(H+ug!N0xf0yF4#iv6Gq)4`?o_6|_C z4SbRK7F<|DO3zl19RV+VA!2ErVE*fccx$BnC^Zs4)Lj1UQ$c10y)ZO{CNpR*gjFRx z6S^mYQgP4=`Sajl!RFlUU{43Wcw+!H=_532Lhy20*-l}!F` zK#2t8@gLnTT^4EGU_;Y7J3vA5QsY19bQ7>+(>kYuqg4)c-Z8$Ql>|8f8ZAApdvgE( zfAQ)yXjb~t3#K=ST{_*qkO(e`%tA!&Ll$V{mN?@H)><`4wF-7Ih?&+s;Sw{bAveVr zY+n`FzN3gFT*7m_bw}|3|KKJ)7laM!$@lhx(jsU#0w{$B^|pevgN9f^UIq8;L8k!~ zfJ)5XR!}+(=|4|Nnz}TO&gL{}1Txt;qumsuY6-Qy_u{#bCiDphg?` z1bhDNy&zWvA|>+P5JrojZg7J&0CW=WkH8l`yFvZkm`-rZIg6otDyRh=^x`QzY`D9@ zQZE-fF))D3FVO0(&>zh;Tow%A;B@`Lzuki;@Wmu%L~w$J*TKsWTt7gXg03GxLD&3~ z2^5^6&}&kEbh|WKq;>a%f&wC~vjY^YFSJ3&6~8`;a5cDGcKwmo?ZK1Q>BRz;0F{j3 zx&w5xNVgMDTBjq+i;pk=|9|o3<^TWS(Y3Tr-#0Jry##eP;MsXU6U>R)(CxCmZ(i(r z2~8((LqY9X@Of@8=Dh^nUG54RgGvJ}8Uhtepau)5-4@W@+Y$HwKct*$eF_Rj5lApL z?*#=SLkTSCG8~~nhf(xH=Nf+my}0rm)X(L?Zh*QY0|PitQR}qsjx*q9m&OH9wgc70 z0pNDXR1gIk7DBK1VH(U&gEW9n-Thl4_ylZ9cfXM1&H=B5jZ@C-HBe3bH8Zg)Pi1Xq^WRR(MA5 zo(PF)b%@%=y;Hj8@dk3n|l3`{c`wVV%cN55G0WW+ZW`SJ~Pkw3L;Lu6y1m~(3 zJD)&P1l%$-@6C9E#b->03=9ET{4Z{6K>Y;jwSmnIdT|^kb|4^wft7&))%xyHQdw*-=Ba}{3ruv&B8SvuteXx~a_rQA)NLFeiSqU-`7A9aT|2+bQ33y@1 zkH8lngdyX*0uc9s4$Fh)NRZ+HaA1J#fv1G-iC~w#a08bs;N|NtcBz5=2+Dph{z2Gj zo#2uw3t}+H72r^VbxpwrgOe+g??46zym$-FS>Q#QFA^b!fl~jAr7$)q^+JmL7m47L zeqp5{c0cfMhbYbxcp(Hc;zH1iFc|v)c3*;m8WR5SSncirxiIiWwLG|!2DT2vXZ+j2 z9uLS8c(GU&5iHMP>3C%8@lha}vcY29ESLyH%A|g-v{Mi(p4I*Gi91fLlU>h*!TyWPG&(z*kA(mDfJ zUf6@&_ImS+aM01h;PZujK`ajt;S6#tOE;`{VFGg&f6ICBG|`W4Ck~L)Kr=Ki%znVU zQVP=nY4r02y!iDECKriX`0;}WA4;4-Ta`FK#&oxWhVTPkynxwNs-BU+iBWw8dIY^N zg(=~0aR52T^+$7s0z)a!@m7xzNaA?S2Tqm>-AtWeG4Q1rM?n2R{+6?#NwFl*DZ%Xg z+oys%6)%)w&Mb)scO}6G_?HBOoeVEUSV2<=kdg&nhBqDr2?k~rb{M5jC5iPc)<@dvKM4z z;ER5!kq)TE64XUtL3sTPwFjInSps2>@`ad?#SDwK7t&v$(Z%0#oB=eS^`qNKg@1ns zXk}XK$S&6s{B(4;kJq9x!3k1n`$33xHt7s`-Q1~FK`0S5{sScM7lCQLJ^Y+wm| zaURm02zU_&(|lJ6tQqWdP;G#$`Lz|%AqS3nmY^(#7dh9#p$?k5g!YrIzQ8?L&%(g) zBI@@4|1Uys{|8NX3{Nip$Sj_pP|80VhUYE(E%zo17C2# zC1k)U`~hgGWw!_DFi{iG*xs+3pz$7lP{}kEEbtN}fGCK-zF_I}GC+h0OTY^i$fApY z7q1n-F%BzedAia%8$n40Y!}GA{M$WPKs{FlP{$u+K>)-c@O)q3i`(8H{Tu-=7C{Z# zej(_^F5kmuww#V*vo?$kb{*${s*-}C-85d2=YMC3q~1`EC<4! zX`PKA8Dz6yk}O@_9tMFg?4WHEkYS*#KC#ou;KfeRnY>G`gI0}d{{^=|KnGKUGZRa| zi_;&WzT04kqAcO8L}2?KxY1_lNO(Bc8mk@r(ULqw1q!~z;3;@|GX13J(ERM>;~ z;Mw>09H7x{g%{x<8-uQcW^VbnLq@+}2!DXuQz`~pM*yuQ{=SEbmMDSN)j$TOUOb13 z@*Hp7f;999VuPw2u;Vq-x_dzaX`LP5H3bJj$M}L8C_liCd$AB^3V#cz)Aj-+4_dDP zZ5TAcq)V*8iBbWv2)IS?Q9k%?UIlQ80LjPRnVPJ2n$0}K^Arqv=E}M2#19s`5+6QNTON@5`B?>6;v4F9{l9*4F|345df!1 zSmFis%`h8#kQtC5VmSG9?YdPU~!40tz(bxdiAa0r(bCSOXR|8t@-x z+=;*!mnFa+0QJWBw}Xudcya#8%6OfiPw1tca zTZ|(7fYysa z=lEgcN7uK3qKOCLYJ>%#=y(whw*VTNaNo>@nSB9LRw(dqp9l(JXdeqSW#kg{q8!=$ zA8FlFK@Lmn3~}^%@#hk#oSFbDrxdy;R^)>Qi=7;h#;3cT6uLPAUnG=)hDAWLXw8Rw zK=w5saDfb^bb~Ld`vJaa4q`tfi+2n1Z+GH?MtbvhZKYxRhLl(-53FaAn_T*v_) zV(py@nq3L%Z3WGlfczNv;@t+2{Q@uLIT;wTm?2#Vo`4taub>H)zhy5odVc^me)+-? zoHAKJ85C?jxDg3&|H8V;yElW=3f$44Vn6`Yc!3PY>0E@i!{7~c_<-s|a9V-Xe%o=5 zyhkIM4=;#8^IPCq#usNUfKEsNEgA~yZ3V3-f+c_-pymyzb_#g$Lm5;piGXImOF-*T zesl+_@b7N|x4;jSiludf7b2x~_UeGzUsV?n?JuxECP;vPJ9uSM0RMKdD$uMKXw4F& zpaXjz?l@?^#Ts1T#G?}QLUbc2-ek~Y7VIa?0ccQ>8t}qV1e#PpBa^W3f~P3xBt2GJ zUpxcP4-25W6V_7)YXNl*z)=Sq1bcBw7-}7~m_StqEsMY&fJZGXO_U>92TI6bgTZM6 z)P8|9>Y!bg97nJ%0WXZf838dJ25P>5mVlt@a0q;11=GO@(E%#)QJulR9oz^Fc(Gpy zY&f#F!NZ#%Gha+P_y7NkUJ%i7?*D)A{fwZVAw!8fr~};rV)JhgR13mk_GWx$o1Odr ze*!qbkn#(UA#9;M=%|MV78V8u(6Q`uU`y+e5)eo!tT~d_-H5F8#jUgd|G&6;7F0}n zure@!nxxPc&4y?2Y^}%2!0_V2S#WEwxk7`XBn6!EG@5sv0gYpngud8(7Cd+Y8;>Y~ z=`FE>lw+Vi4g>gf!YLf!*3hLA1=OI}!4K-WbT)xoLoOf(y@&(Z==-C&QiFlNB_FiP z8Pqh=Xx;&~mA@qhR@%V*n$``T2T1Ge)c|F_zh|IB^T_EDG~fry%^(#4FSyRaDs>Pa z9JlZ^2Ajp=-`)z640v((3|_^kCT~Ddj41QqZh_U0?cg#AHnNL#CKEEa6$eoWN}{l# z*B4%JTR_ur2wRX+3S_QB5vCcG-@yZ_K`(gGG~=9fd9n#qEQ3eDVPniMF2D~3hS&@- z6CPF*`N6p*trHw};DCik6RfP@-#!%-ut6`jKop}^4oCq7@_*2azI7m1@Svs}(2^0* zlm-8GaGVFe$bgvz9Z^NK8aChQ1ThOWSHUV1xLGpT%z~#6*us!+YZ2~(m!L=uC5Rs{ z@PPva)sGm_vjnpKT4xieF@;MXC~2bl6`>C#_u>-hWZ<(P z;sl5|3_2qioSLw-1Jt@e)eU621MUu3*nwRD4gEZ64-P05I^L=h^8bGWXcLO^2~aab12u}fn>x%G z7y>fDDgsY{%dSqa9#D&?_f0T#oz{ck|NmcHJpTXxi!;YT2W4k5bhm;QZ@}8fpoKRA zkcBrgpyf2E4u#g;kS1~9i<^@`jYJhxm%#cdS^O_fa)Z4Cnm~h0ploji8~P#vA%UhD zeW~p?$b<;0Dp>siir^P4ptFs)_ks)twXML8f8h_a-~iefG5`LlAeE3Mmc5{Bbwj|p z5L6`J2nNj|P6bh*^ALA)fnA^0*?J}T|Nkr-m+ln1ebN-ekw>`V3xp(Wt?D-fUSH5V}ndV zi-2#D zfTwl$LKJ|TC@&I^K(bl}gAoHm_f$}R3(A7;F7KVf`y&{1I6Y|hFXY^77Elh{0a}d@ z;cI*W9f1LA_$maxNbU#cx~vZwpw<1m9xyY2j-%-9VFfMh58MUT1wPUqw2VLSg~}0- z4+OfWf(nozXl{RT?=HNg0$rn$0a_vpt^-~iVMhcGXiove1uM>hTnJvaeS!fz%D@Hb zH#EKkZQ~4l!MhM-4bQF;(Ave$sh|P}YAC40&4(EZZjpc_gI+{K#L_xj!G)3y=%`@O zdBGE2JA%dzyTPRwa=8Rj7S!7c(jBl9>@@J@9XCLCJAoUi3PCU2`XGVB0Ny^a1GH@d z;sMakiJ%=|UEn<(pnVcSFWMQviR;DvLnv+91-Id$qY9eT0<}dIFx$2KE$pCGviy)^ z9YFyP*%JZ|cyPLg*DT!=Ux3$DOaspkgC;E*G92U?V5M&sBg}M^)BrIKlo}xM3b}y* zlo~+2^zJ}~pckRN5D$NZI06(y@S3r^31n%&PO!_sx3|3b1X_hI2rg6wz-b?@7*?o) z8|CW{{{Ih6U^_tx46;WCl)!?($r9o)us>fMJ_w3=0dNVQ1z8yhHx$;d^Irf`!voGn z@cI-sC<<a7yd!JrVr>|7%W=y;DI<@SG)h92~U#bpz5EG>8ovg9Z(~_fGKz?Enjc&a{H2 z7X?9kVEMQAf|S9RSb}l_|Mpgp!Ju0tw)cWo#Rm3H1+9t=>TLxrhXt=A038hsS`-`9 z+X`9~8_?SeS`-`DI~BAjHmJ81v?vxd1OXa)fQ;LW-1u^_AXb%-s%~8-ktiax>ppXX(p+*oW%6fZT zK^wxr)}yStM->6B+6RmDwuFj+d5~3<3;|N3Jk1FhEwv@^9}2 zg;QV_|BE;#NU6O)^g~)_OXvOp@THsFcZM5RA9p|U#~#DP-4TsJyZd$d)4jX z64*O+0%)xgxX})tf$Me>fKR}^_{zu+x)1Wj-QA!`H~2vBJeaZkEuhJ~Ztzx5e(>IM z{+4+l4?vSd7XOP!{|!K^d_Yao-l^b-f~;ZS3j~d(zj)lo16rr^qIx%aGl_q{M^@{} zQn4)1fr+3I*Ps_}Fi(QKVHc?T(HbbEkKl!HzSszJPiYo`Qk9v*a! z`HNS({{MgR6hu4#5w}6aH4t%e7pTPl0bU6MYIJb~zPJYukJc{GWG8rE3}|yUG;-!$ zhDJka9?}wy2$*Pz7XNnec2~6cfsf|L!Bm#&fr<=pDxAQ-JunPhnm`s3@o#sE33y=w zQweE(fQpdTlO<9}+c_Rxg1Uvj2E5RP zj8cLt7jS#83q1Y*!W4XIra)R}>k&|Q2{c~}8l(kHK7-6gbuJ64_J}}`RiV&1BmV6Z zK~@F5I3x%zIl%QB*i-W{Nz;NK2W_u||IXiz{V(VJ4~|Nlca-a}ViNW((E#0^wUKpo-=H{75bzHJ1& z20;5T$PXOY<5-U$dRhs%%ECC)^9|_uMK{o58d1>3c~I4htIU4_b3myCJWfF=7+mJ_ zgL8Kl6DTG@>l9v0I}Z)Fk`ho(gXe?{)JznHnXg%FK{;)E=m(@M(e2~{ib80?0@*FJ z#nb|nw86O^l(r_Obvik{(Ax$Y$d_D%)0(?I41 zyf~}|nj`~lQdI~9Pd#KGV&LE2!wPD2fvR@!6dPz$FSu2>9Xw?g*gF+8djU28bQ|_| z$f7QIa-Ba1lonKwtDO={Xy*c+mAX3^%s?}|6Kgma7=p4GvOsHO`S*M9Kyr&oz>6Ej zAg4)yhQP4xUI!htW__?W;l+b3|NpdSSH@RA_O$?f@r6)JzSkm|sM~!nQ;UH7dKEz)e4tto~v) zKlossK* z0Xj7j><@I8x&*wK2n&=FM{t&c_wXRAC&6N%q7$6Wplc#C0z{x|8o@L2e(S-j17F*M zjfZ!ep^CwR@TMDd0VU{IBhUnVw_wl+--!p3?M;GSxE6v8 zmq56bqq~I*bPNaROtD^2)V?s<^#A`0Ul8E|BAh{l9f+_55hfr)f7Ac}pvEP%)$`#L zH0DdiK!0WPJ~$uaSpVy@rH?(1mLpP17}4l}5g!xHe~aVKcZi6aQQ zdJ;6Y#1io0EKKx8FqkC}6!3zx1FSOOMZkAZ3!5dav-JRI_}Fj*B=(`c`g8)DukOG^ zOJe!AyMk7i^nx@8zA*j*G7L1}4dR2As8l&H)LI}W*Bt_1@Pk+Xas<4%_6?+%1vK8v zza4CQz>7tnL1HiiK!t1X9?%$wP+Ip?5CeLv6Nt&bzZFC^|6r=M&Jq9*Sn}@&tIoU# z8kOp85d{q*fx06gb(t4IgH63HqTs&pi%js)yuj<_{M#XJN5nIz(GMQ#gbaxZd$4eNyf4xL9mDh5HOq*9J6L_d3v0+xte|eti+XTplm*;A zbYcm3k^dVUWN@276}BK~iDek*oMVt7t_lG!e)@xw2xO0tEz|_mq7Qt|loBq(IM@CE z|3U;r@Pi1hb^re(6$ht}L6Zr8O9N=ssnqcg7N@p6zC1;NW1Qdpdm$Y375t2;z6_kL-UaeNK-kBp}QBf%{uUf zB`k*F8?L`YS5km_vEU;spRES1SOFdQ1l>l?_u}wsNHT$zhD(k>lR}9Qs9Ng<9pD5y z{c_Ff|Nkc-^)hQ<>iAoDA)P76;tkM2+~9&5v3TPx==_b7X`R^GVBiykK>HiOvk%}_ zFsPX@0lH!W6ql%bu3kLug2ytb=>=+%gU?;AG#L7Ue|rmf>r}vt74INv5Za>#uNenVLe_)M z6Mm@xI#st5)Qv-QAVLpAgOk5yHK;R=dAtyGx(!}7fV?jNUvB`uIr0`ej9Ax4l~39G_j$Gy0N@A&3<30lL1v`?XR3n&KhE$5vK z_8Ydfwy-#2>4GkAd!YpJ6C$o*EYML-jmUn{fcXWcf@cEy6g{%>poxOO7tP@NvUy&H z{73G`Lyx`4$znwK95mc!!M~j;;Klhj;D|*8?2qmcL5s9bCh+Nuh??X_w+ojA|8|bR z7kgKL=UyR(feN=D-9B6vpp$=#SN#9~A`f)@FRmgEbozqR-y0L^HE)W27AVF1m2 zgV^`fTo^!8yC5}Z)La-qv%Mhp9yJ$+{L+$mL$mDo)V!4V%)Ashzqll^s01Nmlx=~k z1SEi}2H6CJOj1!|Noss?X;DE=X)!}#d`?=tD??#?S`ql-MUV*iw#C%E)S~pv)Z%!b zAcnM}{JfI*P_@aq`CcPoP20vBN@OH7Fe`8+NAU>@kzK{XRVsHeDJAx#OQgd8EG{`F;IxVdP z=&;b^ zu75xjXs)Ck?%pur>-@H`3Fc+^Wzntw6X zYC<)4hct?GhW==-{lQQo+zmQH_28#J|C^7n9CrnsY0L2X5U8b4sQ~guC>l~UZRUj(5om2u|ygLT*s4oZnOmvRsDh-edSB~Zb8UZiA@m zJMJ<8ascu%(6QVv{u~ASxcLZ&^_v&@&5&vrln9_0NBRJrdjBVjy*u;||8^&VfETPg z;q6HS(1tEwp6)=F&d?t(cozKs|3Vx@2!RM*5W%qkG*AG#v2%L|Xd89li(@W1}0M?p21Mg$k6Tk2Q;#_6=q+lDQN5NAO7tgQh_h(VT$=%R)NMn7``wv zbcg=wW(s)G0@J|X(hrsboy7}sr9)7+D-UQG`o+c9;MP{aixV(oN)*7WD!}^)JC>+I z?k1dgh@XMsh01(T->ninf%1T6i$O!hFAi9N28sk;D`qifF=R2qo3XAu-97>$;B`WCAxa?0??VGd@&lDm z^teBQwEG}5K=(o1*vW-_9|UM5nju33bV&D&L*P8s=?X5LUI~F`1dmBedvRV8up4|s~m4Ew*!0ymHK`+`M9jQ*&JKdl=2d0BV0(7O?7hE+N=;B4| zgS8&Lp-(`g9bZ86SAPOu^y-0Q0Bo%wsB>KCX}!4&8` za*YoR3@ZEmZq;>Yb;Rl@`{`>#`ECr49XjjL=RdF2URG-zaOkf`(U@PK)1-mUY4eS7n91s z146Io_JTbCS`rl0?aILl%F3Wp7qp&A0+hBugW$d*fxT0I@PpUW3Ix0;;|86ds=~kD zSEKc0i4yZvj@}k7a1`)w?*%CV%>{$(2ztS|9F(_3Uj7DMo#D!n*6k~i*4e=TD$&b+ z{{KG#l4tLjxG=nURtd?okb9Fdsz5^*pj2)B=7n|@Bm?uygO-XhJTY-$00lS02L=Wv zQx^tM)PVBy9}^db!1(;q5{8t-l0*;#)a-}eUs(XEUncAXHMOBvnH_h10xAbz`~}@4 z?8*UZet|9>>SpS6eenWxKSQ_g1IYaSi+~p=Hb5(9{+8Dqpqqm@x+j8$$~r^ufKtBe zg%`^}#`r=HE$Iw>^J3`_&@zb^%%H0c0$!-Y3@8x=HFO(6jWjmUnK*SnK&>9(?of{7 zO&~$An=(Oypd0GDJ<>pu_~J1nA1tZr2C=+dX6g zyF*_Dy+}U^O2nZ1o6zNnVzJr!Vadd;v!b$6P0u}8iUK{}3$8Z}W#lJl;1C%AM1ia{62MwN5IZ(QV%r$ho zz6p5IzaA>X-vV0r4BD9EdnNFN$4yXT1n=?(3AtVgcwq_?IuZEdCgMzUkkdfdM@R*| z5QeBo>vTN;ZY1(=_s9r*@%ILjQQ#IZNc1^E^hGz!v;*J)cF+cIsel(pAu7_q_h0!Q z0F@nof?oVz19z_=Xt3LrquZmP({~Rjew+$Gkpn8+4?bWDc;T`OT#9$P&H(v2bVg@j zL38a4_zfGN`zt^cYl#Z@PKy|b45lFe{dxU>~=n?+?t_Q3y)T;CEhwwq3btvdA z-P6s}*9jg1J<{#E=Qs;!AtA%-gIEptV|}4EFiYaa)}2u2OaYk&szsa%x6iT;Xwu3Ck-*BGjtEQPYVqy-#_4njwHmOPS*(_cezgJbSh}Bod9># ztFI78O@`f61P-duBai|U985<*^`!MdP*6emAnQEAK_xP+Q>2l9zw421-#y1!8bNUc z2`UT&4p<+oRR)E7x9gs6(3YUU9pEs73czwt04-813wR+5kq2G0+v!;L!Vct=mzP2F+HBx^ zRJ#!HC~Xq0USxDqW@0ND*G>G`+&eh7SV?Go5%&<%kvr$TkZj~?3zH=`EpI$sX( zF(6U_FXltEfx0~}lCOY`0QFQL^-Njdi+YGWsDkcvDtocu11M}b(z-p$(mH*=yqEyu zhjOHKJEehae$fEp!%c^{%m!ivNWM382`F9hZ}&)pRO1Zbliheg>*Qa2c>uDWrPFl| z|90OcpuGS=5S?f*SxL0WVB0g8TdJ4D)hW&c(Db@#T<@vXV3P3u^KOlEIF#GZZzW4$@ zJB8=turDf)+;?h8I@3;9LOds_e~GV`x5-WBukub1o!1 zK<_B;afIXt(A?z=M;FK)<&Z83C=0+bIDhbj9e4c#5<;Cf0A&QwtwItImw<{PkWi>Z z&dOD9W=xVxpMwR?k%wL0Puyve_;6!baE@?hHzh~{EID+ z!am@IHADo|!ULOCDgbK!vP^uD1iEM9Wf-W^(FNVo%Lv|j_#zr&Kji-1xaK1~)^A?0 z=Rm?9avv={#y3g5AJ^KIrykTF>m=enUCjG(9m0ES4}jM?LA$Tu8nn~*$8lHCdLf1v zpyO^qjcafd71XEM@5|GAvQ#z8!0S@Kk!EPRPcBv%gbO;qx({~>z}mF z0EZX*K|OWQ@;Z*r&tuVzxJUO&w^_5l5%*nHSNp>#6U& zZ~$4z2&r8&0$(sLfK^6<;6`v-XXu?5GN6Ih*J)WyaAmjVBb0G6fX>Vbz4PMhUr?LH z9<)gZbY@^i;ET;j%D7?5&ViLl7#}DV$tup+adS39hQY1b3@^TUfgQ=eJ@f%+F;+K6 z;ET=GpmG^h13dxl*34ptN}dULkx>bf5=rZHy}`fT_W@{yaZtDGpMV$lr9f9j@^reM z09`5xYG>-QF@XBuFI@hDTAsdl0=q-Or<_~?h3XSfo$w+k zi>24~L%@rTUqQ`jnNHUepu0>?1imnU2M|ZM>xq}`paw8#c7}g{hYt?}L-s|n#zQB9 zXEAiUe&`Gk;ot5HS~CA3sN3~IK)3IoW>6D7_6o>M0f?EQCxTwwfd>=VOklk0-pQ&(=FHxy8Ewbi7Nxc3#mWgka`mMBH#yjBCb31Pg7`egC9&Iy$}B`wO(G6H*?yyjTz7odk!km)nblzd+#&%GKbl z24BIw3Q$Y(PxAqbfEP@GpxA)MrSFNr7Zc~g+yV|%P}4jEe9`e4vV;0w-Q z|Np;W0Xfzeq!qN77St$#^hH2pN1$U|v_QF(f4h?o_+lWAK!_;;FKU*9X3P~JDH7z1 z)9?^w?RGu!TJ^O^cj%wvPBx&ChHlqC#~r}4zaR@j|8!2=0}2$^6OiV@3Qre?7u>1f z=0fuk2kSR4;!+_M6{O9)!PAA|1N08~J)SNMX-VII`Ir;(A;muEzp8#P`SC!6ghzKWHp z`G7#c3;l1PBn5F)bCm(e!4NkY1ihHN44jC-H6b*k^6w87X}wgc0TydM$P@U&uM1SZ zut43D0M&vzt8ywC5+|Vc7j(Rs2WxZexa${Cq`z1R8UY2lqto{f=o;SrP9?1e>L5qK zg7?30bo&TYfU7LfW)>etfll8auNC0}z8u|C7(wgaz|+Z~<(?s2prsct5HdTp)Ot8+iJ-Q3gDH z4C)*H;olx869lS6L0fAAU!*~#UZ+5Ikbo+YfEN#Ez>G5jXG8w&fpSQCj39cln84jl z(EbL6fETh5!PnB*Y+-;%B0ORbcQ91_{y?ebSBycRQduJ4#RX}wgZa1n3V`w_(&BTT zZWb<3LD@YKl;MJ2h$Vm$ia@997m(I30WU=1CUbPVet8MHh`!tR5C8r^xzev7OCv>}hfwXtU6X8h~H2=3Gj*;QT=0wQ+U(CXP|97qo$2$MV(GB)U zXRphae~=+f&un<9MsjmVc0|g?EC+7ejfvoj5vMBewqg|6&D5 zz?TPfg>VdrKLf;X1)J%?0-Z!?HQDm-|BF1(?Ys=Vy)!oa`ybdlb;*W*|AVrOy1~W- zyl7Yg8gCZq?gfblz6d-5>N|kus7ki}gPab}zuhS#06gB=3_gw^VC%pCpam9!pyU2P zoPZanH-KUcv`r;s>%af}`+GrDcPI~NJC^l{I`NG2ObiSe3b$u7WX!ldo8g7DBczC$ z3U;p(OE*VacOY9@=hQVD{{4Tk7c^W5nyUg$z4ZEke7EW|=&VLoaFcOr&DMYaUkjym zw}Kdu;R7&}e}6AXgnvKS80%BDX8hY*LEZpO-GOAfLnS~{cW`wgz7N1HGYRle^tMP) zNbtN~);l$0>%adX-+?tFmUu{X^9TfXLmkZ%@M23HsALm>m{r^9Ke}6A1#+rW`)QM-j z2L;&+P>?0una%Lxg*_z55K+v(-$|hL0DtRxP=69M)d}(Ct3E>GF{{7E91X}OY+rxSQ zl!{PZcwfeV?m@Yf)(LhR z$hlz0;fqEUs0T7nfEE>lPVE6FGO)hRDXm99$zextZ_Czypp&RVWrDgPfyB{xaFr`~ zXYf=|LqE5xP^W?R z&LHf6VZ9HOi@=i)pgw#r$ojw+TVbLXKvT@1*y`>9J1Ou*RUW96<$2w*3v$ZN)E-bg zfbP4U02+h>dllp`unQqWQD7$jey~&d_qT#_4rt8i8F!L^tRdGF>bhZ@ve&yVE*bK^k9v0`*c^ zVESKhL#{hW>uj~y0`el53V1Ok4&(w*Vb-zX-+yon+iZc99aBLJXbgjx{QFx$R5K`# zw1O5h5s{(z_xFNB{a|e}|8{VU!OINffa?l)F*^qwy|7?_2U$001fB<$UOhl(bAW@e zWg;ls1iVOw=zCcS8a>HPRr zP&!uthXTkFP;vrCIW!bNVzAT<_gFQ|V=r#(1tn?dLDP@~4NZLAuF&!`8|q0&P`p@% z&_Q&XDT0{sG7;=yaH2-?ASf9l0xR%^38do;8chcK1mq=fy2VqP@b@kR=Mb4Acvn>ICcVoB|GOXk7E}p9(gsr5BWeFmu%Q zR#5bTMigWMUr6l&g(e5o0?;u+pwi>TVemL8XnN;mkwa^a8ykjd^>=sB2GW(hl)ZGfIIs;x@ z6#`YKpjJcz$mNLi4$AVNxf7Xy7ZZ0t0&e?>z!z5`?6l6-mJR>@@A_X48h4u7u;JhT z9T0YF4X6~&d;S0ai%gJ(q^12zSn&eQ72Q4H=nj0*8wDy>z)L6ix3_}q3wUAq8dg4m z`25>Zb4Uv~Zw9;whUo;K%?EN_(2M`CU^+qkm&uTn4`PE-KFGAd7q{VRDnJDpNwsGH zXxHq9fB!+If$Je?#CAjKgMb(R(xLgb7i2i7d;uwg7s@@Yp!6L0;yOgx>mL5?Q$gVk zDu6&50$%*x296VGJirP${_Rsi(Fj?IEC4bV6!RcmAmc%<0hxkUY=P_MP=TOsaB~>a zy8x~733{<37BqEi&IpyF`%Udh{?ad7esYW1?dMhj|4!Y@u1Tfc7fJ6fqI<1U=sw>x?Px<(mGqg+Mc`sEl>s3EILs8r-B&J0vN>P z-`@(MdO;ej57t_s8whn_=1I_mGP4hp0RMilA;(=Nf(Hy<^n)yUz2v1lBq4zU8MONq z)NBLYPzr6?f*c;u+Y4%YqD2AdBx*=YYAUD|AJh%*ra_k>fd>k}{TFbz>_re4C{|3+ zV@0|f79g-#S;+x9J_KA}f|3HrRiL{7w*LDc@M5k%C_nM^_J(Zv_a9MZfd+hqPJ=2f zj^3#tDR|m}w)J|!r4Xz_;AlK}1k~DtR<2Cl9S4xOpq=4Q!8M=^a%HsNL!k9!DbMj% zP>&5%K)vRIut9?i-BUrLol^@o{QLi!zq=JgHy>c^1T#=gVX^E5$<{`6gH?mJv4RS8 zXlbvr1)M=Zv&66-NjF%1_Y`n79rU6q1)K*VcBFOt%A|GnxPnZ0vEdnL5WNZND^OR7 ze}A9=XwcA%g@FOox@_G7%H1!*JD_3C-!cI-(!0GEBn}HsCjRXmek=?OfiL0_>aKzY zuC`AFwbc>*`YF7ivOQ=AsJ)*JKED&xKg<<>SB?{+r>RgN>!| z?+2UN-2yfW)cQw^yGV44Fb2KwLN%X|@e=PV2inHNEB=xq@NIUwML7)%ee zV*+hFzBsoD>HyGW7+9`%3fMe&%HZEW(T9bB0oG7C>kanFi&D@Hx&=@F|Az)H$X-ww zwVo^u0R`+-PyhzK_}2yv*b+O?u69U|GK&G~X1LFKSV7?i+O-bKV$d##2TS0Kypy0b zEb}@wi?JKhcSJ(^Kv4nd4nTT zp|0Y91_)}W?!{IwaJcY8HN%qXi`Z}LEdz$7 zKyXi=E8xW=Pq3H3!|-XH;HD6$Ed_2ZLW^Bcg9cW^qxA1stPk<`f-dERh8k#C1*XtT zB&}P-F|BiI%EEvDU+_Ez&4z&80v~FC=4_Y-Xh)BKKUfD^z~{t(Tq%GN@L$$Ly?g@H z4Tm}ulv}$Y4KR?8p%y@g4iGI_kV8O@1BXOczzYtD9WVcbrWe8fY_2q5DACP=_oCq4 zW5gJT0eDUKiyX+z(rf1zPLE(qYNvwQY(Xy=TVa_)4U}bCq2oc#Fi`=>Y94{W7wX`{ zrFlTA!0p1I7fWHP_**PM(=^~-JO6$UJvm0?3RPGai6W z11bZp1OvxrH#p~kW*kq5H68@bICl1WfQJ9_K?=bRuK*2{fX2;03}~YV#N^-K3!$ch z#@av)9?%j_*rZol;0v2ZSaj<1BU}p7(+$bypo3gMqk_;>{vz8Al%RQDo1-fSJBfe4 zh$FNt=HEXRY)lKdDi3&J1kw01{6BOb14tIy=>ajJ>OsrvbYSHZXbCOY1Km?Sz`cJK zFQ~I#Om>I3V;eLJbEI{H3)!^JiJ*f1MezOq{}+OXTwgFQ2GNiYFFP8E2sukP?YTBiBhCX?bco$R-@PG!@T%WuM2Jv7k34B2d_c=iO zDrF);Q@WtF1TXlv`@R4*bwNu|!PCWoFXUk6^0$EY$APwdFr{_-zJSdq|GV@5{|m{x zppA(fpvAr5dBC6->}k<@wzWG4@(+tRVjm4Tu4WQou&9>|!v z4oE@D9q)hbN#pP2Vrs7Y&#X@$dKj zk$q98w@363XhFvQ&@Y{!!3ozNnJ2)?r|?>w11Wd?l6}H}`66gZS@sE?-WFZ~(5i&} zzF#^;IzX}F#M14-k=8Ak)*1TdHBVZ%>l;X+=lTY;|F8KcPpvO#wNv&Xo!%Z+m{p)- zYrAaJ&t&Df9FNnhc+eX=a8#D&M^0Ju|)JqDL2+EQN`KlYDIPgWa6Sy1$ zEsq45?E^C#lrO*vdqJ$up4Js$vq2oV+4@kk)iKNlDGq!g4>9|t4roXfw7v^;h9ziy zJt$G^Zvro3fmJDxoWKfd;DPGUZo$Swpb_?o}Pg2X_5Ij9nl{Q)oTpeO-} zft0*n@FMx<|No!{N~l55i}EUHe&ufgP0)eX8o3$-yqJIxUJG8N*X?V+f^js zh4W8vJiU+xn*)`3u@|PL#2$1yE69{pa3LL#eZB@@FN698ps)>m@oOoxZ2($kA`At2TwO(JB16hn^KT}zZaAB!P*kgW-HvfKbe1aC)-UZF!fVvMHAXjH!1qFudo8v95I%ocaK>dq!(7n0Pjv?;Cg}=9! zk%8fOE5jLRE5qO_XmM6r=Ts4p!9rL6|K9;>o@IkaNgM5UwrOO5G!%Nl zT7vK^2Tg#1N_0?#HiZ{t9*75ufo_o|(B$GcAkL1Ecq8R7J`fc4`RbIAjl@Ly<8xDARg3S{_QMY z0a@}dQeb*c1ipxXu|X>(TS0*l@Z!q?u$gI{V192eDC|L_eIOdNS@%tM4>rJUWMmh;yaehTjpDYE!E2tR= z$*15d9zNg-atU;_HH)!#DyWTLxTKmonIpyDg=g;hH!f*ru-@b8DVPWfAUK_l~^ zRV^&wnNZN}8v^{>JwWRMO+bwYP?-_P(s&3|yMXNk)g7Sf1=L&s-`gPpad>yA2t=Nv z8>AkTeuH{jLCp-Xg9ACbnOH%Bu+~O*C}^7-4`_(_|3^^Q9$LFVDiUb_uMpJ#vq9N=SwOD9pA(N5<}(}#)Cv)su&<#kOHtum^jF2 zkUEeAhz;%Tf%YE9BJLIJdpjxu7A3p!Zd-_ zb0XB&6Qdq|KS1Lf9cBiG@ZP;w{`~*H6SPqWx+`Fz!|gc?#z#9{|71yIF~9f-E{wp7 zAbNXm{QLhu@Ws3Rpqh*WEPV+keIY1|p|=&Z_&(r8uNg=IPnJY)?~T789eW@;z$Yev zlq~=?kY1!Alv#k4O+{1209IxXQ3h&5_x|_;8CIDJVnAw6Fq40OD@cTYyRQhS@>BxP zAAk;6*bWvCc%cP#=l&Djp*+1TU7f8@z<;j7 zD~JKL4#ec&-wL681*{L&mhtbO3gY&*go0fRI>X@4|No#$>hml}!MPp0Vg{tByBB0J zq?Uvjvc1O@qzyDe3RciE6%-l)FU-Lg?}1LS010=t^n!$6ECg*f0Pms%4~cz&21qN2 z0qGrrnf&{EK_bmRnfZJ9K@GnBQ$c)aIDvZf;O$kNtuH|L`+#QjK$Z~nD}V1^aL*TN zn5zK)`V0K~dqH}cFZNCe1;syT;uRDb-M%vX+eI9MvgBX9nF$RB@C*k?b@x<|#h~^8 z)TR9ULk0NPpMr)g^9la#J-#5*K*0iWIjUvdQ>KDaW6%o$@MV3VV1g)v8Uv0I=2M+5 z;6(c(>kp_lmizzz|I72BU0OR~s}n$)K;8xi7j&QwB*qU3u;yRP{Jn*s00gb}etYLYfw*~ADNI-%YneuN3hfdIoZ4gB>dV5?!KI!ZQ-=zd<(}6+&WGOfSKw}Lg z1`SG3Sb$pUpq0YV0O{@phnGkrD0D$e5dtsH9fgE0Bpx6k3);9=2HF=O586Zpwx=6x zKP*ZjXFxP3Y$qfh>LEQ{mQwGuo zibAlHTc(1FgMb&Y?4ZgN6lEY`P!#?B|Nq7DU!W*@4vL*zaH|QVxD%XCK*KR$_q><{ zQUuPMpdP-?2jxxv-Uv|K?FTFBZ3zWA2Q;w&QV0nsP!fD`=K?q| zI$PiT`TxJS7v%FmP`H7$b;B~G+kCL9fbL$9vcMN@;Jvbt(~f3=`@1X<6JSn2%Gn?b zL6fRr2fVm54Qvv)owa=`$hx2x6%a94z;6fp7jD-o@LD7ei22=9K@JFl?4fjkxC$Zz zwHY*g3|7-A()c3(=l}m;rQKlf1-$UfhIMq5n)iZCVyG48-w!PbC62RzE-hksVF5Z_ z<+V7%#N#ZD;7yzIAc>dF|Nj36ul4J8RY~gWs0|R>{ig8^Xe>3ncdx+z|NnP_Hg;gtr#tMy zLz%7*UYz+3T}R>j0yM4{`T~-ELtpUk2km?Fl>t>^OF@;`ez2GX^99h+Ck)vKL8l|8 zb&CY1b%wBhdC~G6+%0?oIs}OMAov(2&~+HT9BJJyj!bEtE}~z+`vLg(`@ZN76@f)< zEL5BEN#jeMJx4|U|Nq}P<*3B}|NmbEp-R<&q(Y81ys!ef7;?PX35K-p5Z*7K(P)t4 zU7tV-FxMyi`+c9l+`zxzMf8jH3I5)h3=9lA4}k6+y~w~E3K|-C(#_KpxC<Xn>}aID!IRn5lwT0zm=%`$J!J zw_F8zAfUVFD#$;9FF3&JK&HRwY&i=O>zr~Hq~t~3H&8+21R3kZ&*p~Hn^tseUo_+ z6fj6(2kLQU9s&y@LJ!o_%RB)VM1&ux!v@oi2*EzEe?TGlMH%cfXb7Ts`lK3I3fgFDgiGvV8SI;p!xuJPO6Op zM=4tR0E?mcI6NI>k3j2z5_OOyC@Vq}Q}+~b+Uo29JH8W?AGE*@?E_Uzu3)eGzJN3y zd_mp@VDlG8d}AH3c{z`R)S z&QOr+x>1~7BMUMVBQ#q<=c9n~28!bQ;7AAUrhd`wD*`$V&lj{g;dM7?fFbk&X2xBH>&3qddBVd4isLn?w0Ubn9SXmiSE&@KQ-Es)dT!tf$k52+TorU$A8 zK*gl>n-??nAho~*W(Ed^k_H!sFVH<~`x;yrKxqV2zOQOWAM6Wy41T^<;0P3@YhJyt_eRj|yzrYuso}h(f65XMoli**x z1|2a1HVT|~bGfUAy!4;lEkhwy$0dJ*3Tj>{PVFH8+U{WKOxTAT`UY0!&8(BUiK zZ89MKOMg%)xxE#{4gjr$0QImy9UCc#A)w~pi+M2ifq)mAdclT+jC}D8#=ZdR1H6Fn z(mKIGoYoDYI$Ocvy!!+G3K1MYs^Cq};0lq<01El=|NjgB51>lZ_l5B#;{%|Aywl}u z%Zn&vK}bE(*>Y9}R3+Mj+y)NA?28O(-7cbE(mGwAfT}*HOOv;YwuX_E`~>kwHcCO-T@o2U;|@Tm?A=R3(9Gu)r7EV0Ey{4J6h% z1?*Z(`vgF4L#<5VweX8(usI<6GV$8CTLI)6EcU%neEX?NNB^QUg$33cB|Y9M0LKwL&1LBld!l zG3cPiH?ZmxRAho1A6To;7b#$;f`Z3O0u%t?=G-J0PTp_mvc845o2zrqNu@zKXbwYjd!UJUR>pd?5KnJscs$z|x z7hB>$RU}920sfZF;JHKo?VxFrxd`Do(7jwZs$&)FgS9pM+oys`SZRiX++VZ024JeRuKpVF}C)R)qVT=k}1vIh02GZz4wo)EqWm;z|2e>fo1yP_> zgd9J=M4|Eaq5-@=64h~dMdy0Qss6gwb5>?QO4hG1H+e|M4 zUj6^S3sTZdH2`V0e+8OxRt8Ud!4zqO6oFPDftK2X6iI;;fwzQ%&uRl56Lvr*;Kk!r zpc)i(CJSf*iWBJ4RgUI^K7lW)RzoB}TjRl(;r33=S@r*a(2I>w9iSyXV553leOCSd zAMnBhq65_Sz&4xL{6nBtF#}wsfY+UXt`g~O5mgBQ>E(gweSIo}gAsJ^<{xj+sH+>q zDu~$BEAAlcjgZA!*EoZ8%OQ*PPH_b3-GwYRHOCgD_uERapCIP7hFF92PJ*bz7B9W|Nqw=ps~=fy(?hPn zYI4wNaNRDBb!nX~q86YiHh%%O?+UC73qCxx#{+c#Sz2cgM2+wZ& z1okVa-L^jze7vd;2S>Na#Gn^>P=)X$1WvjaAAmdz+Vbtf#L>;u5%|IlqAmk8vXaHn zJC(%}6pI^tK!;617Lb9Lr1<`TwqkyOVyXETb8S)<4`@vpD2lRAB=k<<)v*HUbW;F% zQUKJfb;Yta3bdwC4WtvH4`d_%e$X-}3FeDIFG}S=2JpN-`nr>Uf9MtC1E4tQbO{uB zu^Y5W037hyhZxejdssm+lGcf>76Hc}I8>(af>ePPIm-xv7RPfmSFkYfx3q&6-h$fN zVBcXZxB;a{PyX$pHlUWg3aEbh(H+t|A?U?+V{j49zunaa)THl*t{4FwcLQ1m$G_kA z2YhR2H$?60`Jj^mKr2GP*&lj{5%^4>-d0e`4Cw6zCF8)}&>Ky~JiZlBf(fiE~9P5}Gl#qSoVGRXO~_?&*h z2<*+*?V!Z!!Gi2?WLM6d4RWOb0ar?b;+lWI?}P4;)(O3!?T5ZUI$e4vygvVO8K@-y zYKY+WV=4c3*9YJjfah^gNdOjs*60uT*IxiHwe9EyCH>1%;1qXYf_f#{nJ z(f6|W|NsAK-L49tjpCq6#retq{}Z5VD0=@`{Qv*L5WJ8tRHyY)2|p;Mw}M5bLF&4F zEdoJ3Ku}Es77pn4)c{T8-T}ug2WS-)s1cHR0$eyx;RO}Wpcs1rFX(jgAT0n;jRxvH zUv2=!8waSn)H@aAhoIh8a1em5NjaDj_`(U?9W&{jdS^9~&feZXt3juqZx2PXy0;Z% zKtOLV$NwC)ZNH?7n6$%`hCA-EE0^H1j5dVWwKL6hkdQ1RH(1R8UI ztSY(0z#P)?2NXv?vQHSmyz?SQ0+!6~fD={bMNpHe+m)lYM_>-57y6|66=U`x3FZ^9 zQj7USAT(@Wx-M*jW2clg&I1UaH>4i5tZWc!0FTJm`DP8@7IDD}C5 zGY@JB&A;FEj`f9FZ%}JJ^CCE@LD~VJ5{iGjhzF>*T~!ATJkXGA^GndNig&=1YoR}w zPk{rp#cKf%1H%hv@UDWnumtLj(2lE(y?(!XXBPhts-w7}Gj? ze}MG-hON=Zwy+jF2?^SV0*)te&Efh5T1$Tc9V!Su|E38P@t_goMW815cHcXJpy~)z zdw?p*DHB1F2CgU1gDX^Uo&im@S%9jh*AJkBXssYGfI|-Zv6P^Yvj+tfmMHxKj!)2C zd;Hs30zqp>Kz<8+(FZpi#DBf=rOp5U|6hVm%Y)g^zr7VC74Twn4LI1-I>CHgt)k{1 z&{#NP`#=88mbg+ts58p45Qk1wE< z3CSLyQ0Qjq0G})Jt{vSXdf{6Q@!)pQ^fc(`RgUf^Q2qqBqCT`iB=?8@042mukOZh#CvgwrV{kLE7i3Uc zC&b_vZ$Yc_UlxITixB6+5=d|F15;4*I$IR%X#VYRX^;T{y}dV#K+--C>E5ZJ-c3+% zD@Zf|s<(G42dF9ld!z%DL=ZJl2gq%plE3i~D0+fkh};8Z3uyUYlHJ=2YP1LTLfZ4a zt)QlUKyNRo7ZBJB=^*sBg8B}Kf*#~$&>6_ko=r+%#)UIyc=)$Z1=V0dSgM>r2GAaO z3uu+ok_2mv-2gStLvKJ+`3?U4t~VfN@AqN>jeeSdPRy0#-wyHei(QqFP=`dxjqWME zU|+uog2YB=>jfiF@PiHM4RQ1Vjau&qm89VE5K{Gm?BL(d;}rNp24>oYpl+~EP^ta` z-sk|;%KZC%Z-8c@UNkHN+Z+JW4a$exL8e1F-64%KK`-Wk*Xn^5``zdc<>++jl6k>> z2jZIE9#>Fr4pel#$UFpgOAjlk8Nk0k^ai9<+3$&cQS!3}y(t zRfKLv2$C5WA7XKbFvtiyNF(Qj(f|K19^L%^e+Ssz;Pthjjugmuol|p+{{Qc6%`p1^ zzq=Pqfu95!j4tswir zN+DqYQR;i6vo!@|Rc`{ws;OWSEYb}T*$R^F7P-J3a*n0M9_&;|Lk^-J*(x!JRp1I^ zJJ`B_7ezNgB@F1u3y}5T7y>s7A-Y{}bWV){+1?5o0P5}qlVFiJVAq2K zAEMp&Mt8^wmY{By69F$~a)SK{POjUhf-DPq@%09><@``LfgJ(akc(+d5M&c)P{4~D z9AE=GTaSR!IRpRpUXY=IFC0q2sT%4_P|60i1VAm;z!xeAxfdr&pz6SbbX*Xbw9eK8 zprI~sj9p~tZ4rfZfqk!JUz7lkS={Iq@c=DP1t|;Y?gd#M2=+ImxeQSrdIi=LffO3x zk$~)rpsO}uLk5tf*#us`!VA7|M+BkD_X?ENopBws#}^WEc%xaL5fm^y zK>;tevV&M0kRSp(5|XqajwHfQIFy5n5AdJ`c)G;*3aH)T!UP&Kz0nPAbXbCK>JtGs z(+@sk0FP~ya&)8mY05P;KV5v#+rtWpb>x&A!vOLK$V-pdKrCc0fzun&KEkdV;USb! z7;w1?^-m`Fb~A{7EEHPI~dD5So@x1a?mamHVI`5o)&t zWI3ozevtrKZvzE)!*5yuJdeAHhBY z)o;*x0b8vC=|F?lF@VOM@<7^LZ-6WYSpix>1=9~|6M*W%pci~F`+RS}>c{FUpw{Kv zAOHWq-18P>2B<^N-|7jfD?u{=;JVWH26W&Hbax)eFQ6?ckV`Z;*+GMazBi7y^nyYd zG+g{b9b_iR6&D|MPAxI||G#-Jh?D>yil@Z`Iu!3fcP~gNt+Ry}6iF|hfR@)Yf^!bO z?ENAJ68>qOtvkTY8s8heQ+z=tfJzFG5Vk=>P;5i@R3LJ`E4K1s?OafVaDYPn26zuQ zEH#1lX|Dn`I8TGm^#?~;XUkNOmtRLp!N)NnscB-j zNF(Ij4&3Fy$2nl*!O0C2{h&|*d!%~`IBJ4k@Wb2=j()J)LHh@?AmNTD!@hW$4>lX_ zbk`fbJ+2@NKwSe+utOY&D^G*VCQx3+8t4{qhx_6P^f2)HL6ks0d=ZpbU2in+X$5(N zq0|Eu%gCv4;YIK{i=j6_sjvW?3PB_!6)xd~rb3VqJQc>lw7|<1P+J!kd=Hj`0|8_Y ztn9G82x<9+B1#x9XZXzD9VP|_ya}$ebpxpB^Zf#-*9Hnkl)|dJ7bF|_!ecAQUdZan z7;smV1)>p@HsHk^;k+{;7i11>H~?f_&QA?@cm90@RA=o(ghD(2EC? z!TJ$C!d7`|U-p;9* zS_QHerA44{M&m$UJHET1`)&baV2#UM@xl&jg6kcSyO&H40umDSH!?4Q_n(&XFo*ELoGtMJv^TzY z>H;Isko|tpeGWaYQ$W+Ipw>fo%T&;SOTdfg#UQ`41Y|KncFVbgFT)Y(Y+Yjn%2885 zBSHN8L!sW_-`*1nGXpBr-2*l$@Wos-lm3Elvk~cRT>&y_D##>ILjptxboYV;K@}X> zdEH>!0$!X#*3!Heq=uo?JBvSyvAY-Kp1>C;z?qkWfB%J`7k9uGau5m#ix;0yf!bj^ z85kIPr*?pXBa5*c?5cnlKk`A|=LmqAZvoz+11Ttcz){5l2@3x0tzeh)Z|?;;Iq=22 zbg)in4-I5&zzZvgSXyT*h!0vL+6!U?z9@u9fE2_0Do3pAO~J0$`1}9=%f$~NyJiWF zvP=ezV=;n~UUyF`sC^pvg3ktCcY=1$^iHh-g#@w^aJqmspY_4V>Oca*8JyxkTS4JN zO$$y!nh2mO64VxkRIaWZ{M$hd@fVG0$bkd0Dd2@HL@ced6~yP?-V34vvlw55KqNqc z19pxt2V{inO%cQpP*#PGaA}?d6^^1%Wyf6_LFWWAybuBjgPgwu)JBHR=lZ;OeF8L3 z&cnami3wcTfIE0yGSJbX-aN4JU>Rt(2bWO2A%Ye`FXl6Vi!bnqH+V|l_X@O7yaFn~ zAZL#-SzoMG>kj2ywF=7F&m|1a_fx-ICi?7U(6*Ci*Kxf~qc40X3|Nno` zUdiX{To@+&{|`Rb=I%Nd2GER~gC+yR$#pIaph-9od+RzE2GHCuXs_h_buJ8`>0l7M zbDawVXi^Nc$Dw?k3j=664m7utw$6nCG;ReF4_fEK02=QE&B57#)USf&-LP`Ut#Z(i%d0GcBQtz=oV)`bBy(8*xKz%X;I z3j=6W5_F1c>sl8EP+_dV!oX0u)`bC7)PdN!Yh4&X1r>;$u-1hERQP~SF9`zKW&8g> zNZf6$3j=6K86<8AGT-X|f6!_J)3q)PpzZ>QEwk2z0W`P`+SAFp)`bBy01lcXc(ulb z0W_`+VqaS0!T_q%L2AydabW=Ea}fL38W#po-UqSwuW?}jWoZz5+Zq=JP#OlYH>`o| z^+;t%ttf~GZ3<;b1)bMp2%(@GM?vTF6oO6!N=q$@Ps=ZgPt8j$O0NXVqKLz{g)k(Q zrhybg6vh{4=B4MP#uqZAWEQ0+mt^MW#h0Zfmw-&FC;-_9k^pTmi7!q~E{;#FC_r$a zn^h4qAXh?oX%!5qIjL}VVpS%bjlS3!WF)#+S_MOH5qPz8QEFa(QEp;RW>q5CacPNQ z$AN8v=)^6bR>6QnJ06`-Pr-KJLIVR7K8S6(P(iR#v`|Z{K-yUY-cMVIE&x7f$vGz_ zEh*kJH!!tPGnVi(Fua)J1U{Oj)AdVp?HBj~HS>;uh9OyA&SC{!i2EWRrszhu z>z8id8=V}@wKw333!#d0Ss561fy+$SFKL|{wvt%5RKxeAFIFFD< zb@?17kl_gk>2B9AtUAmfBWEKC`hICVcm`}zD?}7jnYe!GYyzFD3p$;LBk+aw0nqva zj!xG%&9!eBKzC%ldC3hrF*EcF^wwB#bppQB&i4@F~3+PJbZr?Bb z+d~{vf?mwo1FoPz*U5Ey;RPp%i`!6U{@x9s6|w>^ z5*(mu<_gq~?$9fpA&nf(wO8PYBIXbz1w}AJFM7r@?GIXB6`f`9LI7so1(125Ip6Nk zFWoLp9NnQ8IzcxzUw|9S3N@CInSlYiFzXMp2GAlg!=K=&e?8$P=+tiT4E>WAItTy% z?{$3=(CzynFoPi~iRlGoe`UhMF*O$f6*2X766ABcoz4? zlLMe@N?hJ=59J1)2eEt~~<}j2{OeVf+O)BMA;;)a7BI z6o8m_p9YFRgBSB*=AS?gaL6=ycjyUln4f@KGZAV{FUZ$Cpridj_pyK`mA`aD^?-tX z*LQFrfT9j`3js?Y=)kPdKd|X@P{sxY3TR?J`-B8&@tg%j$4ig@|Np;y0BX{}gCY9_ z5BQGkueQ*TI07=)^++dp7906ivCsPJVP!k$KD}9VFb%P7Z1)wr` z0!VB3KF~Fy9NnQ`IwyjP0nl2u4lqLy%mm%Elh!Si))}btA|9mH^$n!S_hpL`&Nl>;iUAgeIJX&t>( zV&?Ca0Hst=#~PecQ5OM$N&{o$^av^dKnd%hH8>6M?+*ptul1wb_e*!kM2_PupnFpo zUPCsRVKEO8)z%klL0t;CZpg};W}7C45_4n=krJ~nrkxO7Fl#4*G=iKmr4f`ZgI-9( zbh!TM_Wg3a1uP6Y!wlqZP_^kZfg|w6S1Y(*x?R5ERX@bfgfZTG_jtCr~;{I z03~0LG2Omjnk^Yh#6kIhDd5E#s1n~V$3fA|0IETl0$xmo33EV%A@?Hv{|-qIppCsy z4BkIBgMon|EWCFwXfO3nHAFK3abO0@T6WOV=hl-Yg1eyCN$z-YZ8s>r^Mi9jTBqxd z7e_$?{M&s^KZM&OH<3!v<60X?OLqxB?zp8*d819->-T&MGZE>>b;O6zp}@xpyKcx+|6 zuSVdD+dA+rswsGs26PR(K+p?g@WOH)NS{j!bR5}hP`L&=WltmM#ZrVW@I8L6Jh1cW zLyv%#d$=BfmfuJC_xm1!x(a+C{Xx*;P*Bo708;0B09qp-;NKs5Uu4RZ(wXvfWg<1S6$bOau~ z05^nqKodW%M=}q9#&Vcl1VIBi2adaRfZ93?FZ6f)|NlY@M5yipjb`|O3SiLT^e@4; zw1X^3>-Jzt>+}VCI`jy1jmr`K{jNtq2LK83@8<$7aRD_5z?B==)2;`gfpdU=zwd$O zpN#yy1LsHYo&W#8a03yJJ3)So1^Lkcynrbblm>YMx_t!#U$BVrF*G0H>2%%GT)PKc z;_Z2PkCTDn%;mY5bhSx zrDXj3eNRAAS9b`L0C-QrnQosZ38GYS1im=c4jMlNZDc8v@r1+j-z6h?JK&2FD zB|myXJpoCm-7Xvg;I#s0x$}r0$$9C z0qcOxX>_`XUV&>p_>iGHg!e_zi|J6U;PU9;1BPxN)+>Q85+Pc_A#?B%1B%v*4@0|)Ixg^l6->eZAdpGWsS4jMfiK=c1VD~QNn<-f#ZC4}21E+$#YkaT z)o=u6$$=vXG^q@Zwdyudaudj6?hU;X)a!aB;Kj~qAQ7HU*BKypft>Lj?u-eLh5j=F zUOeswyS3AG26!oI%L}8eka5nbpe@)hR6sn?E~^sIRx`1!pmAvsGcfCXM)f{E4@B^F z9RwL9(%A}H^W5v(64*Tz#0u(moe}UN7JU2<4`}=mT%`1Z&EVf2Iw9!A#XyioSZK8b zz9@hQq;k$?YGkeQ%WjG*h`K=WCkiLfJ?NJobr0NEwPzrXZI z<~LAmF&BYmbPja8bd+?uOyhu7#I8pmCx$Y6L1ZCq47i>Ga0{WkXJQKj14E}zn*@rV z5ls$AmWAy^=HDK|71GTz^+MJR2Ivs?s&G&`gv^kD+8Cg8h~%~sK>Gyj7WGS{$yynd$Jhl``rr=0`E-{3;%;6nyb zLkr^UL(n$mC9Fn)=hDt}yD&<0x=fdVWTcA>;8@!Mvh3gk22d*tRy{!!KywZ@?H!n`Sf^?hM7#J8_Kx(0LCA*HeFkFGM*B^0VSOe`}FFpd9 zLjjH9&pqP8&;k{oa>RuJR6l^kdycp;q@?EM=Yq~|DguqN!%u>Q49f?Xf}|45(m|&^ zf<|&dL%L}d;6s_9eK!yV9^d6S?)n47Iqv!gLj3^s6ki0a18*wo1`i)}`u+j+d^mz$ zyj%_HpmTJ({s3+9`w{ShLlIUGvUa=vcpV2?y*?3iur{`_k3VUhE`oJ0o~-@5NAuzvHR4b+>URTJC6 zZD~;KfhO6vgIlR@JYjAEO{w1re6jmA$fGQ2ovt^)%eJ#YCqc=8#_x`^fQG^uUhD*! z2^xzA6=9(=paBHvXu^wmYySTS4>VtV$m}Zv8ZkJ|0=hJa;YAB*%W(LCG=5>%GyD+x z2$bIQq8zm0uLwlsuKE9e0@y3iV4P9S}O-JxHCpa+96Lr%T=0XnGT z#oN1}N*Z(=MDQ&TOQ6$rOK0c~&}c09+$?aAfQoBWQ$WS4E9gWEkkvsimcvcqg_*LZ zGjv0@E7UEZ&;wP1U^}~gzXXEKzW9h4bnUS#*ytC@a5GNcgt}x&XXpz4?V&eqLmAqn5!fBNB&gdJwE1;U z;0r#O?4Hih125G<2i1Yj`$_8zz49Umv{S+L47clr5>>cmwzol+!P=l#0$bgD+mwoybN*!Xo<2tL=QNHXJ2Gs1|@#qKcE90m#zdYcMiQ0 z1b0j`To)%q7dSV8(+4;=fpp~~bU_2i7q06vI955px+N06`&er>hJ&mA$3K}DHnzp;ZMMIMe~su>o+e}J%N;D zX%j#La48^p=y^{Cr(94Ek2nJ!Z*6=7+ISz{TidWx0a4_E`~P>qeU%&F((TG|*E67E z94v7HEOF#T?u!5aUu1xYWDpStA|gRV3do&cec;`Jt{yN+}^IRY?0$Pbv1gF@@$BKyTrr~-I$UjokV0-dg)oQGyEs7!>I+XvN# zW-h2egP5BORRA~F2ie@0YT!En4g_|G?g@I)cpa2)Kv{JI|8{UW0hP$O0FnS@sCU;u zERIgs2VfQ8{_qOWc&bRy3npiuq!0jisSff7Ba z79}x8K`V^FArIO>p9wuB5D}+B{$R&J;uNxj7*uN^$Lf1Oh!R+t{NfzAxPVqd7-l2l zbsJP8I9`#>M#Su7s1mr@MaX8q1fS3Q3e+a`-4WOwx+UnvB5=%uqIV7dcGool-7tyH zbD&5CMK3=@NvG=*unJIg`NE=C*%9m)P@KK^4r8APd=U*{r**m>K@4Ra3F>xz67a$v zd>te7WFg}$`3!?n@TE4Oy5~W_3k4+UI(}G8-gxn2F{ljGWny4>A-e>0T0c}DxZZdW z_~Hfl5<&s~{TEs<)hok|bv+W$?fWF~#YrS-{=R3R&M;_ve8Gzai~s-c^<5B{(NKKI zqZ@Q$ARqWZAkbXwj4U1g?XD*RUUWM^{Rz64H*`VJ3oVF1TBqv*aM3vBMZ{uIr#^$h z0puCq1)w>e89^_CAl9aJx=sKEoa=;u7w1J_4PDvet`|Tl^@Ysh|NnQ&gSWN$PIxHy#*9B>vu2WvTTlD|`gbW8Keg;qt`$8YG=DO3h2YkTb zl%N;A_E6V?w@#gh@lFJ0F=VB@Sbqiw0!O`j3aon{dg@J+L#o|SvknIlb09`P& z-E~U93rB?R?$Dl~7meT>B?LgjM_`XPyod+sVdUTL+Yj}aZ|=JB;`%~Rlb;{FP%f?0_0Ef9Ac2>qKS4E%@153@C4As&;L3}& zAPLaXyRJ7{50vmjhgE#9yqE%#;NKs5rS(#YNfv*%s|^2kj=&eOLNH&+W-)e$%79L2 zc%cFD4EQQm#urf_ov+0}>q%QLmGFUPS7ks4HadaCv-n|}F2haY1iSM!%WEcB2hik_ z3&V@1JK##a@d&7Pwtn;C(j8d64l1i`F1axLfY$4Ams}VYK>KtdmmqVgDVb&QsTj3A zxW0!SZ4c_&faY5X@o9ZtKHPlegV@jC?{?)-cID}G{nL$nGC$b)Aoru6x8MB6BfPhE z$4((oxeikGdG&GEE8qqOAE-Wa<>>A>0UC4ywW>I}nYuj$I(=`vcmyg8LA!XnIXZn` zym$;6651Zh1G*JDfsug$EdK(0n+<3K{fo<>JFwXJx4Yg5c)>0ROBI%&YnM3qw@-wu z6?!KClTZMS3UYw2uHXrJ;bsF)!ri`q(mEYkUNV4&PT0VW_7}V1TC}oQz`MRWKxPHL zSOk|4+yy$#x!d(mT4w;u%fq0x6Kwq3eQyN5sDrC9&tih?@ds%Rc##U1kOTFm1-qRT z0=j))1itWj1@3%zhyF?HbYgj32|95FD?TBjGw zi{+qUd^U)EFBm|pioWv0JgyG5kAJ(9R6w`yAMiO`FTPtLd;diS=%D>9hThOKLA|aI z;L1QD_9EcLEl49c-~}W2Oe2vjHt<}=M36;6FM8k>X=X9>x}FK>^?d-^m(Rc5DGhvI z-HX5%Ghim{mj#t~BH+A_rCAE{z<#GP>l3w!pjIkq`l6+)19b0*?}JVcmKPU5C)p`NVK{FA9x1ALZ)D@S(^c$FFde$aBEi6X}v6l_7skAdMuEy#%1hhMjV(g`#) ze*OV>fo8NGDA5IZZGT`HXzr?K0%&9uJO~InY1%~)Y7Qv(zc2-v0}ffpwSg}JUtEHP z1b<6Cs7?b7@Z$3%13-fxqQ80|P^bW=ua5S^$GiYbt~+ zkq&tA!y1%4Sh_*uWKBh83=A*aeuH}UKlrzIM3{ju5BtHt-6<>}%c$G;2mkhoAT>cR z1R;Zt0o|@Yz~{idP$&RJw*bVP9X1RMFaG_)Vh-rQg&+Le1H(X*UC3T?0__-p*Z|TU z)b09%b&Cxsd9x{iE}N6-biD#vTLxMLcje_VCI*I=TS4apbb^WoMtEw!X$kTUsA2U6 zTu*{S+xH7}T=@$qm4FVg1f7X^4HR*pxz!^tfob9;J9JOyM9?Z`(0n)SvO_tj9k*FOO-Ch34quoCEYy#g6o*mBE-;lFZe<|X0G`s6Mye=c=mzS4xPSlG7f;2 zi!y+6LFOUQ4uRet)(6x7{RhpWXC4Aw$IE;o@Wsz_px!JGT(R$$%!^>fEut^H!7bV! znHRx|4+Xq915upC1X|??%9tN|ryLXlAEf2_qnD>C@I@4|3Q&Ij(AzWN2YA)5Jwyt{ zJrFCv#|`l_FffB=aK3cAe(0TYVFnX;O#4SCPZKC9!W{+i0q8VIh@(J~-Ju_PdrqAI z>j?b;y`#0;_f2<5qX=l#28ij>D3aFg6_wWM5dsQ;Zr3;6J`+HDc7K4FArnN>x*cQE zI-SB^n1B8M{{`rL{BGYj{QCt#2K4d-bccR`T@kd528%VlVh$-f<(&w{$aArX+p(%lQnhoHXkk8alw zpem&sT>J;UsFZ^gn|}ZQ|9?3Nqms z9uY0i6i{yIozj~y{ojAkurT=2IuXzingFPI^5x=#?w;0;>Hq$NLhj4ON8K$`!M5;k z_x%E@mx5k!ef{^p`G`U%xb$q^3ob)JS3!dqFFA!77+yE-fDACSMu5s*2)j1~RPf#V z`2YWln;$_t%D{O^m63s=p_0|3`NThm)&r%|Sxnu&&;)ZBa!)~8XRF8bfB#>rXEA0m zb-R9mw7ix7!wqCUqA zG-~6)6!^lB8K%b&R3d`%F05S-c1E|$M3L?ekb3aN(NhCJAvgzgg#Bw1kdr{AFGn|| zc?@-Ow@;Hu_e78u@W4TRA1r7mw;Kj}Jp!x=M(2xtb zE&>JBhu)ShP#pmcD)1>R{M%bW3IbkeKrDvLTTBHdq@WjH-h-NrAVWa>m*${$F$cI^ z%)h-ABoy$%5uz=v6U+y-5`Dp01GSmNzrPohz(A`yL8ohj+MQshz7|UB1}6i^!~&QJ zbsf0EJq0Snm>|A{Rk{58!CD~^2kM&yzQ|#MMKaUtbr98PVbW|fk)fmt(hU31JEaj4 z3=sQ3N1pL-hkChC2OR#O5m0CdLqiTZ2EfDp+aH5M7<5g{mu_D)Gt;`kSrL44pFilV z{+FO@IbJ>m)k&cr(z?NcmDbrLz|6q#LJy>Xh>+6m|E4~ie0 zg#hajaZp$9^chfGffBLHq$N2C83kLD-A1_cNqV+%t3AsuWbYMQQRSpk$Mgx?b zL6rv181HUEOJ-BlF~hF`CUznanxR152`rw2)RK({K{+b$#ZK@%BIsmGPznX*5p$?P z;JzzIcMr4{2PcGXpNY^a6EYQek|C|Lh3kMg1H%i0m!L`dsW4MMszIDcgeeCfB20M& zI*fih+?3TsnUdDo1j>Lf)`B#H(;=3co_~L!UF#)Cy$vqJ0$%h&4%LK~0H7!cdht>f z>~3h$1Zp6)T0nDXFNgsdC;~HaC!hTuHqAf5IaCKJhl1FU96A+bQg%* z06;Zoo&@J?k)~dju7DRy?|^bPX!7(6sH@m=3SuGHJ-s3w{QJQ{lGfb|ifnM*X#5;B z33wCKu4o43*$~hu>RwReovl>2JCvh&7ii?0u>^EeK=Td|o266~G+sFowB&$)zmr90 zD`@NiRFHvaP$v*14LX8V22^~41VM*)fSU6`-L0TrU;wQ3+wIE13TpO)1OmIkBMLz; z7P^UnhI>E}i0#mRq!#WSRt5%8tqt}bs5%A*ERGiLDppW88x&7isw)2dPT-Q+kU&mO z>*h%71Q)k2emwFD4%a z#VBN@4>U*OXl+CC^+g8$?JWYJd>!yYUD*Is45oFqnt{w3BkIKin8X2s?TP*1w9z}I z0}^>+P>XSuY>=o<>juXUtSnsk7?dL&L1R4RhM6AB#o$^RR6G)LIYyX8U&Iw=7Zsr4 zbRgixQ5YLEix2L(1!aKBqZeyn5(L8xW-~t|?7F9bBMn@dU56})fyWzoFdk<{!%RBr zFh`IU44_3(Q#e3LC+I~8%n9Hq0+nZ=k`vTmJS7heh6_P2_QBZT1|ulE12Zmw)>SNp zNq}zC#+%>415uzAQ?OuQ0yzL23>VHrq5@a`?FKh8(z?MJEUgpVq_;Xk_cKn zpI?-j9$#FLnp{#;nj4>!pO+32%}psT!4w58VSr=s`g9xg^HV@wQSjtO=z|wh_x?ks zH@XEoL+`whzW4us#udc7qSDXL)&s1vEc;_y7MFKS9J7 z5b^%*|NmK_H4YB~UMPQnR*NO}pkZUg8V4@8gc@kZ9=^sQNg76Dq0g_T}K;9+(l-?RqER#k12WW|@N=7X)$~2V|ja z8(g0Qc#xfcJ9Lyi7cQX=8d?J#03j9F9r}kKG;;qUUkb(82X{afSRZKM2(%dELC_05 zxOQ96=q3mMcIaXZQMiN(*xYUpg~0C6J3%l0oPeySfUN9z(F-#2wH+uBLF>uxy@PtW zL>n|~h%oOcTtWzWamNc^kbcPa+}_X+pou#004r$i(Vd_d`yoy4fEUmHfHDwhX$0tW zGN|7R;bwxCMu2xKegKU|^KTDK3j#&eoq!j$FcX$QOaNzU@Qs_HPay5l&?n&gpg|YL z1eRGJs&xbxWf-IJp+A~`G1V$T)xt+TU4MXvJdZbm2HQX_?AIq>F98MrekT^xv1Q_y zK3IVco@omsx0?W%5 za53)s1EdN%CC>Ds?G~u!0Ub^92Q;Ms3S|$b7X@I^&>zqlaM0LHAj^xWTmS!Ofal34 z{DfKyIt~S9V7KduPVhW%b1mX1lyA2nmV?f00hj-vjc{1!ZTR<31WkOjUMkT6*CIG4 zZn`_b6Fdh6K%4E^kGq2Q-!OpE-4P;Ze8BmFf4c{0lKcZ`W(9fyRd*;j3}DkL-7Ju4 z6%W`X`44Ei11laJFi_7BRvIcY>1StA_!JCCb|3EzpIs@bn z$e*Bb?pDx}BgoPZ-#^VY9Xt#r1(47LZ3GDE;DId;Fa~)Uv_11rx64ExScqzV2PYd8 z9ml~*29yI)v;@5P^9`aHG~Ef_`Qy?AStJk-S}F$;4SI0{s>YS$ILHK0&1(JTh0_*D zK*FmgFasPu*w1e{?)n9!{YB?>NCgEhN;`djyr=*Pfc)Fd0h+=Bt;kade4)ezD$_VX z_kJ{iy6-OnLCRb?`1gC1w4SU}fVXErM=3H^z*BPwmq2IepVx|T0jx_oI$i%{F~j=% z3IU*rtv}s?3PCTpb3u((fft{zL0rkvEeJX+q?@BVkR|9v?ki{kUMkh?`U6y&c0-r? z1;b=Yw848IyL~wVU+6J_QYJ^I>le^ow=Y32bm6L4yIsG$W(J*EbA-qG&5JLaAfX8k zznZY{-r5%MdRXYHh~uuH`zRS+_(EKj)(u*D=lkb{E{G4>2;o!$N?9*tL404(%7(JE z&d@I}c&~w$B7@=_9NK{|YFjPq}I;t6=6BnnQj z;DaU|%U&G53YrxJFPBsZd@&UqIV|7{uAI_dECXxi-|xy3@WKmW189K;=z6uCpdlBA z5~1!;j>bbEcF+r#l)wL*kAN09fSWM5 zs}C=^I2k}2=Rm0hoLm|YfwrXty-1P;&3kfy{L0ZC2r=;jcrju|05}%FvEA*&0gAQ8 zgP;YWfiHS{!Ips?c7OqNNSgI^kYbR-SV2Wzz>6p!(Dr_oms4377_wMEhCpN75aura z7SKXD&_Z91v`)v87c;Ivk0XYJZP|K;4D&HVdAd4gVSf=g+3yK)4)Z~|YW&VmT%iEsrR z-L4;AE@H``@+-yw>avLXu{BXEX}dk3sS%Xsf?j;_1^Jxg#hOcqm}Y?64_buVj3rm-fzv)HrddJ374YJ&CpfrX zq=JkA-D<}Z_+sZ%Xh@Z4AXbjNP<{dv6#_>9DDMTn@cjvH7`#x0>IWr+O1OTIznXV| zvK=UMf}#z?4t%jZ0Tco(FBgF#f*IsJa0wjn!VadDzoiW<$G_i~C-6l$LU=K(?t+!& z%?HFl8Ls(YTHuTOCLrJNfO8wje?c$Sx`0HG;)n-k6eP3DvV!9%@WqpJpzwq$4E+%F z;xXL6;CTN6I)V_CtY;U2-Hu4syHFLLW`QS=2jKJyH4~IT`caiG0GSCY5a9^~RMG^# z_#pvGSfH8-sStuh`(JO6GdW&ty?}^zPPnPKqTL*vjUkbzi1ss)-ND+c4 z0tX%_a)VwJdcSk5h!2xUr|*?4P>KVu-+r+UrnN-0+xH5j8v$yyy>JCN@U?Jv z=#}H(6&|2$_`(1r*zJ0yc}IykX!fFYC1|zr0?>Gt>pO5Wr_;5g8+6osN9RP4lIGeD zct3dad2nF9Tn(E2X6Sak(%k`45}0KJ8BY52FN-~k10?RD6ZpbZ5?nb3yodp7<4EhC z;wCY3Dg*!aLjf;1_`s5&0og3ZETitwE8R{y0WUtv!G&L3<$aR|gsi!$ZGk)b-#Lh*zkxb7u2&H2qpyJ1M}xElf)16s z0`4`w;CBYMZMs9Rq;-PVKfQQ+_WyryV(9k0lGf>H_u>xdym@d8z#`TQ9tU>4zIOt9 z!Rtji__uqMff{T4+nq{4`MX;Xaxz-?L{MG8zpZH&7ieT>uOTRZOS}{SB?(4QDuY&@ zUmidcMM=w6{;DfLQlLj&ss$i{A_ZjQhgU*3XRha#XP zcqZt@whXX}PS-o&%W%Pc>uzYp(gnB4A7&Ff#HP>{LA|b9z`F!MV-0CRFV=B^%>hl; zgWL-8(~B;+O`sjvK5&~}+ry080XoH=0d&$&uj?F8V1RqrpiBvBJihRR8{j%8-~~6_ z0C1iH4H|U2z5pFO_Xo7f>kDYn7r0>=_~O7Zeum~FGLWJSROY?E4+}KbZr2Z>*5e1r z7*-0KE5nPx72s}8T=S6{>o+eJuYfct`Q;fvEsq?K3TQuvm)(`&4wU_$&6NSRcK17* zE5iY(_&YXNhAmL`Gd5R-6;SqFHdlr@Q1(?eSMb@~pkm_;n=3<6YH@s8QDQQfk&+6b z@e6K$7rulWa0tt?0f=m>`F ziw59ZqXbj}UkEJ*>wA3;bOt9!TIYlmP{HK`IvC#=;@hrEpkX|#Q~&?J2t5U^U$(mn z1ia|H14|WJ84NF&L8rn6zDT(X6BOMATCV|aicSC<@Dp^9eDe_&>o+gzmO&B;IHLoT2gnRa$K%V3D<}W|&jJMis0tJae4zrj&o~RT6R5ihl&J$=@W92T z!8r=N5eU3k@x@0rP+)`hMSKAbeT4pb5f5@1u0b5o_!8)fjvt_a1D!xrD$vc+*2&TZ z+D+;EC-B8WxOsnGA9`VY^8f!AdLUPVodeqC75JhK7F7H#Q$fRgj7V*pB$!;O1WGgC z3npHY3hq*Z`dOgW{K#uj!MkC;SYN2s)cY+oX zhrS5Pa4}+FcyWdaEC@Pd2YeO%i`{}C0hWL)PS7DOFV^sbxEuj57DE~dovt4;DrSRh z{}A-z{B>v|E)mHPILW{OI*{eXD@fVj>G}a|KsPw!fQ$SW?;}8lv4E<7{_VbR0yF;C zGcdfE32_1_&%Dru1P(|AxY&6U_~I8cNE2kOz8qBPe%~Kyoi4s7Ug-XX4h2B>BZZ(2 zRPpb3Dr-H!-{;H%T6EkC3Yx$SP||v#0x>DAvo!}aYq=d9Y(W_e3JeS{R={io&r$#2 z-yY(7A}E6)fq~&gFGA|YL`I0i;Eq}F2UJyp4;*2KE}jSBQII|Y25NgMc7dD`ciQxPIUOR`n%$_eIy!wnyx;-3kw1&Qdn(Afpe!-a%x3_sy&UkuM-S|&fESy2Aq@Wg z5ZAvD;)DovgIY?W)4*9FDB#8KUJwg(dV%2-5DPR|0!jyHxd-eJk&d7jry&(RT)IaT zlz%|;u%N4`bASK;587@5RvwDv?hw$fM@)CiLfZKOFQz~iI|sao2B%Y&fES;jQvCaS zK~Ws|A`oITXdg?^i;$^c#|8zwu!4J_U@}+?lyX5Q3xTpfB8P**sT;JvhYMoNF0k|? zhF(+;toen-1K?R&umQe2-69jgcfVhTgjP^MckhIU|NjSePX(1)K`*4i;sTwmAa3VW zkQ{i!45-?|jBQX{C*q201<-Mc{D@=+&X2Rf-UXe=8CxKYtm<#<7v;*X` zZ15$&kf?F}0`|BdJ2(M=J)V7vp%+r}fno}DHqU18rbI|Z4LYF^?9EQs4=-l@{Qp0T zA5=(zG7{);qz?fvMB%R3-3_uEV&j4x)$b!ebjpf4!#_3Ass6~5qt4;o*oa941{UEzpu1)li2 z4Jpxa#8>TiPG~tBJ0$c(TIUo;P&N7D zD`?;0%a$LI1_k!zgsuXhIn7=M1_lhrLvjQ-WHFN{j{E~w4LatwhZT~bL%)EINbBzH zfMkDABPQsD4me{71O>cMg0MQlt((rNAXP8JL2Vk;1nb=oP79z4yc?`2s2i*!;DsSv z<_7sG{z}jb z8;EZ}?E+Bt=HEUQI3H^(BH1fa=5a1)PzdoRcU&}hhypcmGV(}!n(m)gG2g|s&U zFcT~IY`qtVZ-TQw==u$C+JvPz%-jt*U(gvG9v~;aY=JpZ9^ynu zU?SI;U?(|QWbwbyf_NJ=divtrH+T?$6A+$S3lb2Jcm%l?QbA*uXD_Vau6@u9 z3kWfYYr!5wNg`iBjlPPHpnyO(8sw`MXyXuC_umJ59~2O+aHDs3f-HfgK9pntZV$+Q zgarh6Bmz_!q;-Qcb6RHys7LtX^#@RAhNBzYl}hUd7j0>s9iSfJi}N2q4hu!zgUi#+ z!Uc&akUt>q3wXiS4<1_rcl^Nf=AaWrTzR^A1R%kL@JqmpTYX@)-Qb0C&9D`7ka5Nv zQmzayUQPy&Gj{v_F+TeuX9{Sk9H<9v{pN-K6i7FoU!DPUHtho`SMV7Dpb`5NX;+35 z|Ns97jYWn@yE5#6vfZU!89>zyXhXY=v?~KB>Oks^rCk|7B@c+LA??bLl3Nj61;^kLZqJ0A{;L|#NpS)0c4{Ld0F9ctJT3(Pn7p|ZYt{jiC|jCeUe@pz9ldbhdy~8>l$~Il`{D zhZUqBoJz6}K{ovV==zuhS$;6>_Z zSQtD240*=5JlDwcLcM9E8!2(R+GnSY@!{~3o6A3W!fENZlAcX>8 z2Z3V&byNd%jvmNC{2&K``nmf-ClE|M(<{;l>hg7lw4MQL1s6i7n^bMVQPc~X0|XBX zJP3U8`4cz1IV|aKHw&KR|ZgUg4j#sA!P?h%@lc822gJa#BPyyWdM1Up@M;-Kpr$l zk(OGNnwOj!Uyxs(S`?q3l*LdGk8yu8`7oDzeI$b|>x_;?&{n6?A2YTq~3&q#}|7U<^lwT~r2%YEy->C;X{3h@< zXp({DWd(S0j|05+qcil$iX3 z1ijdK6gCRR(e3)+r6#Dt1zi#cJ`J%u^i9wU_FvYZ8Aym0&^p{UR4t$r?-BNN`@RW$ z@udWm|2cMXgXa5P-+)dcd*Sfv|NjiG>x&t>LB}jEg3PxBywC*a1kk~$FTj;Jc;y@F zG1=XrZ$L+PG#_BJK2e(v8sO*OFXDTmau&nEM@*n)Y2ChW(mF#NWnSC?@A(UT5d^tN zkbgUmD@a-3i_MVsC@8Tmo1t$y!Gp5ht`8v9-T_5dh8LfDK#8^ah=TQ-7jC_f)CoCb_k^M=!x!kB z*cC-rPAOJFacP~9z~Ti-f$Va{8hu=~5ig{kBQ-qu z_k;DdUMf+78wheP|9*<Mv|Q9(Vl#vI2Ct75LnJxWm)BU4Nu?Hi2U4_2f9nx%V|) zkdzEcTOb_T{ig8^XbL~PcdyR>|NnQIB2H06T)&pZ0xEiXL1&oGZU^NX(9yIU%|Dq- zWcl}pay0*9DG|wX%vf=MHbaKOgV_u(LbJiksd3ex-M#|+`vY055ApXpvw^ldg7%~c zq;-cl%A|FISD=6C_676h(mF#QytwxC|Nj>kpMvTyuu9NnqHIA~EH88+$Mb`Z692A3SQWenMa}}g1@C7@PK`v(}bcURr@*)^y#LHixBjG`9 zeo*df5rt|K1#8;{5(nk&9#)WeVD}VOka*CG6Z=8Mw?ONG5+zV1wx)p6At*_wb@qaG z^t`zK7<4`tXuIKS1!#7f3Q`1C4OX!gq+$a|1$cL9S|_%hO8onM!O;OK1NrxZO+fb= zs9lUM_Tt1onETYyy20AgI;VoHg=8?WdtVrXT%ZSX!D|ox{a|-@Lqa#G8xq*ywjH|I zi)^^zf@$5LX(X`L7f&96sx2!>e0=G473lSu-~vj{y(|;KUd+D8kk;J`3Wc;z9?)e2 z*c5^Gy>~;L+9|^EqW{tV|1Y{8fwEC6$o=RkgnvKSFX+NA#A`sUNrBE*(7kn?Q%%65 zejqk?D~MgH0BWT6hWPFPwez7!Hf|qiEtgyD?xfW0$!X0&-#Fx-CrQV;rjt} zia*Rs{_U+G69ZnDJ%g4b;O(d&X9c}bf{B4=`JnnibE7;?fiJ#7W*I>JgIj!|1$hn~HngYE(0bu1Ik2L>a zuM^K$4qDpR@NhOm#*c@y8D4x%0Xz34KWGc)yr2L7gNuc3SAn$737}@hizWB}|DOP@ zwegh&8^NhF^hf7ZQ0>><3MPBOWXRD8+#zSD@V9h;RxyGLuM?mP{-y+VyYNm3c#&8E zj`g%oaHN9DC9pf>=!Bpb5``dxKuK?2 zIf%s(081#~MdaBR8M<9WLFKXNguoZC!H1lJ6c<7jzlhKVjaKr^nAz#t(iz$Tw*{8k zPCN!h1^B8AP(=p4&utS-^gzIiWiU2qJx51Sw`)tlizbLg5Hnx2+yiw&GScio>vKB- zyF*)oUToM2D;J%z7&2x#f+pNM0=hw`fv3Wy)IkgT1o*c%fubegg%5c9AqS{-?`#AK zz4!&%DEL|()OkTDQ^inr8LW);rSU)5RTw3@t_&}H8bPh}c*x+?`9@HW64aWpe)D2d zBc!DR*~eL<3mJnFV_;yop$l2Z2D<&?kgh8ODF1=Ro%ZOuGJt9%koX#1aNiNyYs|?{ zPRwCQ1)pyB8ux=-vb?Cg1J0g*KylO!I+HiV(d0!4 zir^Pe-^%8NJ!rS$OS}KD82O>+%J5=WJt#(+k4RX*dBN8Jivv(~&Yuu^tG%{>S=Y4Obd?onYvn*BoixuArqZfB3f}pCTUG4GKNbt|DI^ z9OsXtuNP{313LO6ymxN}s9mCjt$hrRNN@uXW7J;4`a-P=xNrb1ALxRO#&x?0fCr{L z3SMyj2Q|KqfJ-p&CY~SvKx2moa4tLp8R-BqQigv&i&yIb&`C`o*MUMAbifIS4O$`% z8m9v_arw80ehGTP@Ep{%t>1IK3GDtM7d%`DE&<5=g-wiK(KyH1# zi+{VTL_iitukVJy7nW;5sSynn1vd>o7t7)>)usgiPSA?k^Z%!X=^^4ZA_RX9R*?tcD4e7G*JmmaqoAxB+*s zXhwqtBLn!t-)6WvFVH!Ep&~&qHXx~EC}(8o2CepthO1M`U;rHrv)y-2;ESUhp+Qgz zJ!A64VbDSxP=(!kpu`=X%D`j(;O;P};qAjH06IQkI}_qkTWkt~Ubx*gg)Ag+{Q_En z>kpcv^gRF`hwXK33F!5m5ZD`fBdFK)325j~B=E)5U{GkwfJOyEKfEvpxdl%G69E-& zy5O4E_XlYCt4dm@h{p?tKmY${FfcTLj(7ag9jed`Dy$4Zh24*CSA}k#3E(Yxs~}B~ zfER{uK-C&czzYs|xPgX$et>Iz@cl_VPA}H{2HlteF%+~(SD{;^vD?W6R35^u;0SyX z3N!T1Yp9`{VIf>12I>?*7tMn%WeR)|4l)!}m4f<&Qg=W)Kq>nJNC>pAgdIf)d{BW3 z|8^FyfEQ;sK;x}Mhkv{86VROJhoBeNZ^Mm%O+J4Jd~pyV`f@v{Uu6O6Aa;hnd2t=I zkOq{v-UPgO4OjIBWWBFM;ENmUVU~#TZx1~H$`o$`UK~Ow#M57uXnx6PeXv%7e|zW| zsK!o&#@A;-Y1&sL@I?vS4q=eBpi#v{ggXB1pekp(?}xw_-f)Gmlq&fPT)cJrYJjfE z;07;H3jG4QiqjLcLlJ+u7YZtYz;h)i<r^56wLn8RYi*G;v|9|ljw0MVq zyXyz=f&fr4o&~>F8@xh>5kAZo!X*H@;o*gy5vctr@NyC;AVCM(f$JoUX%7kOgSG0Q zR1IlEAo~qk3k7DpC<0mk`XFfUHR#*|P{;(n(7g#xso+Ys2_*Ew`v>xHA80xf?4@i_ zqg6nlyMqOMzG@&FXdZ!odk08Q;EQQ%p#fJC54Rk&6b;o!O(4B+(?Ifq5FY4aXD)&6 zE|7d$cYsG)XCNDNJ7y!uf*0Gq|NsAD<9ARx!+I1lc+Iwi^{HA_(6kCTFdLBr^SF}> zsQP?S2QuRIVbDH<{a~jpbfU@~5A#*FBq{?au+5Z7z z|FCdn*Z`fQePaRH^8pgSV*zO^gZ6w}v2X?7B?@Anv2X>=vl@ZgZzZ_}h9EkpAU-cY zvp6+AH?abRpH{(;=agAe9ABKA8lRa0$uH|!L_*7V{B?TG;IJ(~!cr3&hGJrM9Btq>e`ppwZ~An--_YFJo{gK8VlW(!dC zz32xW5dN|pv^A9lbm+#5z!x=8ogjYbji47Y5I(pv!*UZY|9;4-tX5cty8s%w3%vlH z_`JZs-}OTC56)U`&}He_7d4neIY2^S-boE+&?y_G7rH~5SUN>EzJQ!pegJfrJJ_#j zoj$GyUcCAOYL17V>2(POo!SIBW9JNJ&h4If1a#ca3oj+m7A(*h#2JW%&^*K0$-?zw z?H5ot?nT-YP&Q`a-w(R7d+Li9)4)r1KqW8O{k|8VBaavO_lI6+{>51fYGa@2^>GE= zAHc!Cy$KZ5pz;)I1;|gJHJKm-`M0}-g0Dw7(;d?LBIv~_@Y&{|6MoKgy7azyp#`$* z^(>ImUYJVIO3VYGLCZ7QCqSVBEfhGrc^E;}{~2^M%h1fc23}ng|L_0*-q0W770p{lIpj}lRS@+Ye5E+J^!_@dxn+DD=S7yWbvw!kYtRE+kI)_xoM|EenzbIsEl<{{5j_ zK-&2C`?wy^z8C}woa{py%&r`e$h*kd%_0!+Vm-Ps5ZRO9sJ-+FG-7B98k++h5a7Bc ztrHwgFIIj6-GvA)vb(^^eg;S-xQI&Y#CE+iBvIEUfj5Zo@1F?L1c?ENKSBI%m#Htn z2>=vzH^5QX?bG@q@I^E@Y6SSVUkG|}e>p7QiGcSK`JPGZ>;UP0AqsNB>o!QiW@GEh z@S?d8T(CjshFObL8Jdp-SigC3x)4&V@yj!S${iPw+W-ImgXVfy+d|4UP{AEe7B^@MHvfL#H{GFMx|=|SMK@1J z;0r78*bivBb_4(R&<&udeADgw1yY=Vmxg=X1*hIl*9Bm&YzWK}c~No^EC!C|9}sq0 zr|SwxO$mzP-Vom-pqvQ0lXgL1H|XZP2FQ#_074Nc@qq3I zfc7Xu6JMvx)Eh58fmYPKRDkZeam7Bn9a*h@EV;Du*f*>3R?NW04_Rqyoh}N|Nn~+5Md88 zgHSB=LHa#!x&2XZS(;R6fDj7lK|)gRs*&U6=H_ z?f~^kmjrf)&H?-J1?L~ICXguT>dOm3FU-NWbcl4iUU(S>TId4LZT$N~e2;*F2~-dt zVZNBw8QRecx)PBQB-riK3aS5~tv?X=#cIgv+kh8M*C5uscnR5;(COOH8#*PZ+qD6F z74eHEa4upAc(D?E& z{IpKjDg66gr?eiZHRs>%I|WofegNgD?L7e?a{^yvLUryB1zm2H)(JI#(VPE}jcZ`- zJNX$H7_`BgTW7ul8w|?ISqxx*f{tRF;s`P==tcEEL-1u&`@z?OrFFJ=fyBYLIzsXa z2mf}6SilQ^s7a`5UueAf|Nn(Dc!iPYAJ|x-fwL>ai@t1dp${3o70dy(W*vP+y@8A?)f z3*u85lJhg-QyD6f^NWf=6+nC{Ln2l-$|d*U_9w3Mjlf$PUqrtC|36~`r~p5|7QB+9 z)AdJl?GN~-{gu#lJ)jvEP%q_2T4y6@3i5@(Yfy}UC+R1EN~#zCU;Y2zeDXhd(6tNP zk$DR`>l<96fLEcR-Xhlgi=|c)w5kO(>;rCb{0MxpI}KdvyuJi#>HbLToB(R7y;urb zL&O4Fgz}^DASeO@UpPS&f)+8j{^)E1d7#_%4`hF4SQaGo>2rT%w=0LWD^Cqaw=YMh z@1NIf-Jv|4pbH28bU%eGf`Qh(APO{oOXB^Ijc-nHGJy7aT73Kee`gUBmZhI4dp*JH zCqM;!XXp=5(6>JM4!@(d*W(-FxKA6(Czyp@P#w@1{#&#sUX(}^|pfa27u~suopn3#+U3v z2E9G3Abo-S+oytD532mXWS;;T2l54yabMIyZdC#A_~74;VrVz$NSGGzRf|0Q+e1Zy zK;xERH^_5=H1R;!&7v*{G;jyy|8(U1p8?AMptu6%|8z(S1g!_OaCc<@IiG=pfnkHY zD+96m=po|1SdMFK{=vfE+YIWdfChaYfcu~ipncE>{QF%WH2+|# zP3-o4aquBi;0q0yJ)rL06VT;eJ{Le&a6RaDz0k=rvAOmF-14=cQ`V2Lyab)1!@u44 z1t{I1=m1?HWAPeP-YcvJ3!5HaAoJ1_F^UIaz{`< z*a_7AXs$iOQNr}v7~GWscT&8{UbOuNZG?hoD0xu<(a_BVR+HB0A@(8_Gy)55e}O~8 z^+{Uu0md}YMb-O#pEUpEs5JvEbcCEv`2l>FL~}Q2%^gRl>lM)W%9Vf@ljgu0grHMi zUcO{zV0gV1R6@Q1Wigg4jx4rbP%gdo5wutmboV1vVLaE4n5yyg2;} zG>Fa2zyN9E!;X=86Y%2WB~W~G1iY~L4T@2YwC*1088R1xUK}|NmgL|60X&1Z1C(B~ ze?ZQl0j0@M5(d_^MY02+7r0W|F}%_o>YcDufqseS0;5A6?G&~C;rh$)~|+<7ol zw!%#5ftqqL=!GN1lo{F|!0S*7LHE_XnA!Y@nfcJcA4~z@<|gQ%IMDcQ^AQfPB1az3 zyzP%5&_Ti7z8{(oDg?e*c^(vC0+5gny%O|7V>U`i*E2CNfXh5^)cHPvjx{{t-yiw} zRHgYs@`_+k79;4Wqc@Evl@ zt~~gW-RCm&pSxQf)sU&Gg44^V1jdC9@Z!0>v-OApXWSdJGeFmv{R0t0mQnd_cTmo69N+c-Bsb)JJ2EMPCA z9u(UQx;J(v#LE|!K)t*JWF{y&K|$%$;nMB816;1`U?}C!U;v%!911b|bs2an0_@+= z8)?ml7}GjKZ}9JTy#Xq)9I^~v)WFQ#f@UU2Q8&-T?$9lrB8|^C3Zr=}`9iVEx8+PO63SU=-7u<>9Dk!e`h>!J~7qN+uYG(pyCUt|aEBwyw zJ-(>xd_ipy5C+!=0?_$=#G3CHPrjk80cL&qAC&GvE7SOGTUqCCVyF;2xnr*rmO6tIw3`;*5bh3&I zIFo_a6M>eucKb{;0ry8(8k=nFO3~40^F+5jdV-FUK$gEIkt< z{n8gS6y*v!A9_FdUSyMi7j+ORxOXxuFg)THG}16{ZcN#5Y2Uz>lh)Y^g5K9(68P}-M=h0&j0 zpF^O^8M5Ee7Gn16Gq2Zzbz@Bx9JS&I-Jl}^p0|MNK9<*4K#hH-<_ZOd5^+#X2VIcf zd_W=K#o>#fQX4X%j@49_S}nM#%{5Ib3?&j-&=XbnyZ-6*X;KM%VV49dk~v-<1X~pF zqHh5>5W9Ujj)O83L-P><>o+fc#6mI|JpW*}rx2rQ;At7qVb423UBR?Y-&f#uq-mX@ zZ+38k=gVB*?F6+F(>i@`fX~uS>kPfMg9{>cXD2t9;d>7}q@30ndSVB}9M@AYU1wmr z&VidLX`QY+c0x?{-L(s1PUxN;5OZAjy?FKM|Nj?HLBs!M63f5pz+ujOF*popixk8JYr1+Ed0HoNpi3PEM*4&eqRC5>SE}QO7IRQ z7f|U5x;qAXR0XKL_Je=FOXv&8LOhu8iz`RL?TvsJ(Wk%+@NA$jM{mf*5O6Ci`y>PZ z{?aeqB3zv;n_jSe0-q$ZA2bZ+<9Y*BY=9>qz-JeLrqDp+B`;8gUoaj6n;h`s$4M{) zGIPt(>vJju92o~6L9E~r>}1*aVlimb<$mz7GQB<*ASyujtANT57VwNN|9&6e6JSTx z@^tg`cZ*B_O`2qb2TdPId6sNYVx04R8UZ5;_(k5ds;b05x<4LlAo( zIYS_06d-Yi5LbrejKsXC)S`Sa!@slyOdA!0DZ^q0@P0)DQAUOr&C!tkiWgq}`@hr2 z6-%cTnloB0-u(Ly%^bZ}Z~py<=8vg1Z~pyD2(KVFzc6saha4kTl+^ z15yJ?=Dm7v{(%RJrgDH3fbwoyXDb&-0jOb`*4fJgG6XVTJ(Uln1~fRI*4ZimQUl3h zy+R;05KE_ufYd-NZ50El0R>1}XRicE4J5Zsl>(`OI!5NrzyB}lL4&GQAfgmR6o80q z5RnEV5I8+*ZxK+2v#Lke`8&Dzs{XMRrAm-l> zHs|6aa60Sg^qG2xe|xAvP!`_{^Ieb(u^l|f3A!``rqpHXjer*&kU2;2?%gcD7o0HF zphE~;MFRLCF1h%yJEZqc(2FRD>X(+#k#VrIK|TVz7t*)}GocOw4=dO*f`%1B-uwga z-9vW)!iG?eZqRjI&&oj+h(K?z#~aX1w4hEt)VCKObo;d4351#r@+?QU&jgmh7n>nk zUfh2B|39QFbclg}e-A6j&eoHq(7p*o3}kBSNzfv;JFotMZvcPIb-WeC2Bkcx*}W}O z6F>_zy1IJMG;9B-9WMk#KvI}WC1-$K^kZQ{X6g==0a#WLpY>4 zYTcmWlz9TQYq56HXjl`LtUtqh<70+fGhK$=1M2gHEp9}ts&e=CRr=O13s zl*jg7kRH$|ShtfxH|PLP(5798!Tj5ML6!yfP6fFos2A+qfL>qla65Qqiwd}T0^XDr zsL&0%*MkW(Xa&+0)a!Z!bP6ZdO*Pgb{>cUbsmVxzke!-0_Rgu$wRDP%2EAt@F5e(JK7ha!jK{g92QV_ z9(=^q-O>y4koF;{4>}=ysJr?1gQMr*1Ey|>542A}Wneza2Kk7DlBYH)CLB!~e` zk{~Ak{#FnLPLhk5LAz4GN-sVHH%CAVBzt-x*@YDpDE#}Uf|Or;1g>a7r?^a+3eGW8 zctOz%7CrcYp||(KhyVXOd%$|YCV@^@Xg%@p|NqVwQIJZ=0ezqf5_C<|6kd?wApe3* z2i@;I<>SBqfncp*M}SQVd{LMH%4`B)-C#+`o+^-upgI7o`(gK#-kgvB{v+<_fH*Gb zg)u}oafyeCzqbH1_;3Jpmzw37j{(dqJGep4OPR|Nb}c1##d*E?1vJ21PD#F)(B?WywR6 zb$82Dkm7(BM_Is&XtG#d{GJRo8PpJiIdv+C(>bMA18g#g12?%EYH}IeWQb#WT0x2f zUt~i}ewp_VG~G89R3?I&1S*@r*&(g7^}?Hf|3SMgA-J~{)B=OWH|V1HH~;dkRL2g!QD&I;_E3JSBJUaI?{xy|DHM%D|Nr++1u;PvMuAlXyjZy%oHPTvdqGwOzIX{fqz80b)|@w>%m#KYH0^W? z?$BXiU^w`Ip|^+W2_pk!!78|?2li_>k0Aec5l7G^z((uA#)9_J^6v*1#Gu%A=~C(D z*abG@5kqf_Ajk}`kFqZ^AlwgLOr0hF;@vu^8K6o8;_eq+FtGyxFU~>OX`QVgKY?RT z<2AHrqwxCQ{}-~LU7He*|Nrl81xW-zH@>}K-3T(61vL8(nlpnMtq(B{?BwmeAm0bR z&;~D`0iC!7G7ws4fFlo7W4Lm3hfFYma1Sta^KkL+2d9E=7RGL#37x%1K%u?@v?Fu- zRFHX~vzI`0zzgLKAQy0Sw#vNz_rJRr6j_1YQ$d`d7v|8_6s-q9tuRnl*a9*q;1Ot( zBZ!HXqe+OBIcvezLcItIHBgxWqJv%-Amm=Cz}P1OyQhMj5%i*P2S_VR0JNF~C)`Gr zZl;}}*aV+WB!E9Q6_CvYg-p>;T5=70!;qjd==0Q?_< zk}rsflzd-p0Xd5!pt~1jM&JvrFCacB`L3ZP`4+DM83R7Ki+_7BB+$1{1>60C9U=F^ z8^Q)12nUKRP?K2%mIOIKNpKcu3+L1a;QR}6QR{({Ah4JIyn?3G53m0He^CrlmiGXZ zQbGKH-d>P=VDD6rAwj*ZAVWb5#X&9rMH$Gbpcl3;L9Uc|Ezo@8e_CfNNbL(v&~{N! zs_q4G17Ae02C3ml>uh}isyw$(1?7aG7fRr6Ckr%hW?wX54wZoBK+wv?$Dn%|w@(FG z8}#DaPLL5OY88;wZU?D_w5A}1E2t2L=7hBFR#3(P?`G`>s{@w>*%u{xTSP&HFw~s1 z?x`T>fj5ezgEn`*Tn*a$S@{bzQ<&D-`UDhOpwN8)3N6?B|Np;m04XD`5@X@-1uxII zl-3Du<$$V{R#0;V+RXwn`S*jHMEv`wf{W`@wYkuiHKJnS-w)Qrzn#Yk6bB$T1-*C) z*~03N{hr%PIw90 zR`>E4Xfh~NCaoKsVA497x_wpBx~GDyO6wGS!3(-+k^^+pBoAm0E@*t@MPvt(w#fci}!z0%pP44_UDh|Q7h$^dG0f=c~AS*{GA_9%$`Cd-up z)FK4c3lFng88qJh`wwDY%5r4@^^HJ!4`#VCfO@8Xf|z5o^tIWdIE`fqGn}S*{GA;Uy3|HOrL&GyYs2JH>@$#P`?rTYX11_s+KR|ZfH1+n!(>R~sQ%Wl0 zK_UzgE|`fd4pIr?gCs!g0+^W~pQIMSg+THMA*j750;nq7g5o_vF7wSy0h!?z1U{@Q z9?FHB)&-IP%{75AX#E)Uevxih4(Q#uB^=GQe;7;bUsr&xDq!Sjp1|;e`R4!s-Jv|k zomhNYCNRACas#xmN8mWa2N3TWi03PC+>ynkZ34rK>o-62Ri!cB_n8h5p*C>>!liF&`xL2Kv>|5Hb~>K`2k~hs0jaluI^9)&^Z*{t|DpO z9H5?3cc@5OC)ewp5PQ=R_JZfLb;5gVuYhOHz!Te_SA#~_dVOC6c83ZCz1aB=)cE27 zwIEzY0$yY-1{d_8&F7$^5yu@U{Jo%souK*Y){~{6Gr<3Vhs7s=4r(y~O&o!ip8Wys z#0qKr180L~n|DE)Cjl=MA&gGfA1~6bgK7`gF99F}LEQ$HE+`YUyD#8H8$@Zqi?^%5 zj_Y*&@iHAW9qlW_zh4lv2vY*o;OGWb1WceRzS~y@v>B1_I;d|6THOH-V$?&+nt$@} z_s#~7e1!gKy;N!mo;e3^0qYF?@!}EaDn?hCfNo!jK+xK5*Ejszc>*BJ7u`G)0$&(_ z15V&|C|>`bf;c(gg&~B|>H4D^+1NV>V{d?sy$N0*Ch*b+z7M}4&z0eYkpsBwZ$6@9 z{pLlh10-cl0F_4_AZh5l)#5xzxeqD_7v#Azq@*#Vq!~cgx`C1)c)tT^=}36*UQh+P z(+RQY4QY~A9z31Y%JCnuQt}VztXl^D?V$=mFRqnBtI!h7Ua+Eo-d>P%1A9aF1oeXA z5p;JrICX*U<7z%4@j3{nLYctsP>G-yO-!K0g%Z83Ad3QedqqGyBzr?!z~=S(?g6cG zhpa_>5e`0>PzJJl1+*xw^%8#zC?>N&Yn*tpPZ)HEa`d`zmB4zM%!dLXeYO(}y&=4N zf?jO3gp3j}@^5!l2zbE;_fG`K2wxuP#Xda(Ca^v)_$O znLJPe3l$;IVqMU-G?3$7bX@uWe*$QUr>{cbi`j5RI^CffL7=UH;Olg<7(ihMx`Gqo z{D2p>;PrYEuXVe9H3GXsRUj)kvlx4QTR>C6JlTf~x_vo%r!a!t8T5h=q8wxw$Xohw zyW~;4jX3@=vMg3}>nCRNuC z)C2*gC+jyaKG;GMC1_eurVw(b9w>btEp%nr^Z);U0|o|$U4@W6hamQbLRSV*ssXVV z6uL5iVjRStSm??CN_il?4TY`@pacP87ZgJ3UC{DQm(;@2#5_nH2d+Y40!WgedIDJv z#0NJgNAvrog~uyi-*7W0kkjR`UO;G`w9fU*ftkjET(n3!jDMPzR>)Ok-x7Q zw3LgHAGCEFa%hA#L@8)M;Kl!WFl|4wm_hUC-Jv3&`9W}U2Gv5KQ6NxB7Y4o&PXKh1 zSr+4q9rHojz*nw-H-^7BUIj0fK68hz37Pu7)TFm*P?&AOdy}nNZ zLAHSo1`_E8na;5SY+eBW_D~*ZRlxyXloJoWVnd|U^$z$Jc>!?Oo2AqB4!B~v@loD5l7m8Nkj2PE^!~)d*w}K=o=)Kr;N)Y>n_m;RaT!HSN*ir(? zLuH9YM&JfwSz;0FY-M=;0NSAz7T&uTbinscGeoLHR1n8qUp%-v1G4NB>*@?1{@y?) z(BLQNkOqNn&=I^Wp$A%LF=T!KErDk)eX&yov=n|XXu$vTQgDQRco7G=taAHQkZ910 z`?J9Q2PHeuX?UOz)IQk!gOR@vWCkelhrR)2xeoy^QXon}1AH$u=D@Ul0i}%4FWoIu zBmP5{?el<&%^$FIT?f9*MIf!S6;uvoF}}D9)(TD9V8MVFFY{n=4NBc#K(|JLQ}-9} zaR95&fubxHn#Nl}#}>SpehxHn2Vz1}`UjW;UdS#5IgJIB&`@1c0>1r5q_Y)tU{Uu} z5E=AB9^6%Cfe3<%1n}`}FD$^ugHCFL82<)t{JtePj2DF&4?YPCd^T3livy5+*9kr( zi+?-V@PKacVOgNj4v_nUy1@<#co71=bqN$wphS_y_+m3SZGuNs`L|C62?o8`p9>2q z@IHJ{e07H+rT8D+p)%bqt)RH*Wa)aX3@UO!XCZdGN_2{JfOeUImo2%XOp(1JBji6KsDr`kSIv|xk+ z22hBD*gwj#doXh50i47hxc1t0uMJ|DDK8?@D!ht%_stPj=`b$${V z`*o~cdFqMX--CYsQuCXf@ZQ=fJEai?%W>B&#>U3RFYf&VRj(V)o;kzw;u7d2qT{Zh zQ7nenoZYSunh!8`x;_A{lC$)Ez~5`c#K3Ue6?Cf|!;590Ie1Vr|H_MQuo0lk3mIPY zgM>i~$WFW{0Si9?55H7^gh2~;_q>ROSaJs>{+hEp^bY7W_)yR~Y!OS>JN&(%W9qVf zA0#mQa&(8@0gX*Tcsx+vi<-mWq}b{Dp%-+nC2!V58+rnK z5X6T7Gy|+527pQg&|z&af?j08G`;9`-4l?-fU1FiyYHUB?$9SeFC1a&o`BDF?{!@P zG6b|Q=}piJ6YybvJm6|x15zqHAl>}t>!LC6tIst^ItuF_uLIpE7% zp9HvbzJmQCz`y@O>!mvBZr4AZu3uhU`1AjN zTDR|tv`*hCFE)eDAbKs?9r~j)^vjE_U@6x*pxu)%W`LwXGo~9reFV@J%`X8j7Q;+D z(R#9uWdq}D_Ln>U{{L@u08%Jisdi;}ao-4BC^R3*v3~Qy$QV)#q)h-Vce_)Ks55hG zAnX4?c|V{A(v}6W-D)8Bs)E@1HHb4dBx+n4iZj#mGSf1X6Z4W&eNz*QON&yC;#08+ z8-lJx$V^KMF3klgC@m^-&d&(R56Le{%n8ZNO)Yl8Aqmj{EmvR^xPSM6iGcxBe=Gd` z|9>awv}kCzA5njIyK;1O@Ch(5bohSm4&~@-5&*GXKY@=3NaNo&QBVMMX4j#B7q8P{ zWjfn2*N=>^S&q4WWObh_%bf)DSl3>bKv3hq zd*TvRu)ZJQt#@1vpyg8gUB7^*5kR9GO%QqCAK4cZm_gS#d;txy^KWkjSrE_-c1Pfg zMDSfXBA_ZU`&2^j6yBV_pivUYMPyq*XJmqI=>V-T@qN=90y^wV@!kzEGM7Q2ziI5&^<_?@Js0JVT8B>b_*5A6@f2&A+CT;Vq>~u z&IE)jK#TP{U3j0owuY%c4skW8v_9SnO5GsGHtz+oSc;imv%NU0t;#UL_&|3rNGJ`Y z`9;@{|NmcM+4ST_Mcea8CMvy{=1L7vo>CwHt5r6;x z2QPXQjo?>z>C8F zAnQdsTT}jmW(9rz{{J7)-3#Ibc25O4Dd>gWb&wKBsU8IBlXSKwfRe>_h{O1|hu#T# zvAiFo3^tbuGAQtcGeiv3)CH;EKNTe0dZ|{2e|sy48PMGeGAQtc7Pw)@0WlYpr@<;; z7=unc>IPc|nwA7<0qym-ff&ob{X$R{;|o2=BvHVNtJA?QfEdyXv4DSjFIZRiRFFkM zS&TbCDF@tgke9D9f#3Fyt+SN}biU%r|7o4QE}&xt4ME$3V?abWhzJ4^z90g$H}!?{ zH_(#$H2!T*&4Y4cFT|3IK`*@FvMsAYvXI3v2Olu-Z}(w+0$GIy%AJs$697AF znt!{C=#v0gY0wRoeUS^Z_e9`}kBKnnhk~3x73BP&?pBcV2^ph?WXvkKF?`_E1PaTS z$3ad7c?40UG{MyIx2y!oGQw9GBRm2s?0Q&1K@Os zp&uIq1L(*!SDs!U0noWjpc)5K3h?g-E6qFrO8woXZ+czW1o-!t{>c88zBMWF#2BdI@6f~}1`1ga8W#&nkIX-+ab9#FWA*w(dKAJ$gDq27P z|No-l^Z);l9NgLJ@E6p!0%ypy&R!c(`c4F?@%jA!f7bsjMx53|@+PEi;om+Lq%)`+ zY+S$#eelT~0^k~Ab381xz`N8T3SaPcgEJQ>U3d3_+z|L;*EERGesE}Jo&tL(^i8i1 z7w8o9AK8}@dV2&RwuXYP^Liaju-xE>nso_mR_UAG5HWbrOfiC(Rr;lyr317VCJVG_ z2NswY!8-8OWEl($3=S{8PJ%ibT!(l2zUiGJ2&qya)idZkq!$98KvPZ}{M(v@1Q-}v z5Ae72fKC+zS%IE540?MQ8$g!`?+^WgJAoMVwirNEm4ccifoYvQpkuWm?G>KhDU2<= zkXjAYvCcke07_jwd=tQeARQu3X`Ld4FET#<|NkNxw9f{bs=7np^tN!p+z)DtKzzv$ z@nvVL38?1{YK$SW>*ZKj{F)-t3a)lYFUWvSo~9RnKY&I{@2hTNHSa);N}euP22g7S#AfMoWdJ1+5c^A~D?>_VQEGBYd~tGOPHGY8V6oKP z0#N4;bS@33HwQV5%r~_tJrz8O4dH|PazUVD5q%wl9YI4x5OJuwR0aqaO<5{@W&+Z~ zgUnA5d4CZ9epd>r@%TJXKf;9>L3i=ag!kP{9ecTnc{ zLQB0+&}jCL?ot8J05?n53$?eP3G)RnLDw=tFQ$2{42cVfv*9Gz{W0OawM%x2Bai=p zdZ`RA&bSQfsQ%r1l=yc(Jk2RBmlZT8?>pqo2k?F#EUtgvxt_z z0Sy~%0d)&r%mxW;0}&fR#2OF*lFwr22Tg*!kdB0wTl_6^K}UXq53VQyUEkn2?fdHCOYdk0;z`y_=D0<<#7G#$Q_}(qoAFLp?5G5eRASI25 zK#D>7171i#6!-dG4(tuRAJpsm8l*Pxg+K<#5P|N{A6>4mJDNa49NoS@xi_>2-XNk3bi5K1=&0NuY5dzfIKU$ij7{K}0kvITTn&SUO^FEqHs8ywCrfy` zLw_6t52G->=IVC+ajXF}q{8^(H|V~y*WOudkmNT9uF(RPazHT^@S+(mA>Zx$<5(le zbqsJb8DDIE`Tzfmbs)pC*ttIkGrk_HGe_(Q-N;JV&LEAy8xcjsV?v_CgfI5&$~~w6`cr0zLAk1j7O_7iyRY!Z46?prWD(QIK<>qGAY9&|Cpj zR2(4+cFu%n|Np<}1`%x_qVd`P{}a&M0p;?8Mgc*G5dIBC_#Ys1%b*Scnaxu{SxqE+Gfys{sNt@J3v`~2k5+hn7cW;U3a_`W@lh{?Fsb( z#3-l_(vWgcH|P=xZ)BrfcLcofg2xQls1s}q47jVZFZ|mf*S>*ny$4li*(YQ`$B{BY z?4AS)J@8K3FHb>n)(Y5xGCWMq@Z(7z*=0tbTf1ZDRhQ#@VqE_0&1a1A=`4?g@Xq))c+y^B==Gt zG)M%F3Q%Rxda0E2xa$&FLAL~ypt@bZbonmn@Zfr(_5{?k1J%Y~0$ycKhzv~)M ze|i(>l*W@FX>bzV^BQz8%O1#z?9e^@`(5{dR&J+dF=okUENEi{1@0d3(ykx9Jp!Pn z1ISeV?Jj};KrP-q*%uSKT|rWywggD3+hyXPfEN+3K_L$r*0|#bb$kgQXf!Ky%?l}z z^{<&;w?Z6MB7+<)vQ;3h;7I%Q5L6j~&U4O^0L@<<2UlWed|~Ek!lOD%;>FWSus%@0 zPXtFJSBE3pi}fHQUWU-Z;9aFoN}hwzxx!r9i&dvY0l5_HGJ-)@V5KyM3MIxfDw;}Acn!DZHJA24+LFp2PQp9slM&A`v=Y@JOM9K!3-8q&gcSr2|NXt*4YGd%8T-Qpqk%x z2W0B^!c13&7f(dMqX^AMVyxf1Fc*dNRr%#XV}lGgX1X%G{{R0!sPLDW<;rj$%I2Qs z%5WLV{xj2+A+y*qxui5PC!{>zC9?>09xdc*>VTru;?%qnhOGR|ywsH7(xkMa#N5EwAO>h%d0J;Lh{?ZyDu`0N zOd#{X1v^J?j{vA(4}1|m15_+=WJ!R|M+UnMWyUw?#Wy~X0v?z%(z+pbr*%#R-Dw2c z`qK(xKs^Ft^6&2jQSe!b{Vk#(*IJ+8?+syrw4lI24$=z_bVwxyWl=-+u8H0=uxbWoO^(wHCwnwxI|wMhc_xA%e+1-{r^432itL>$yS z6vd!ZgF(B_K~V?FB`sYbQ@T6mFo3fBGi77Qq0nIWfF{{`CV=GAy1`CJ>zoL(?1lbq z(8MIjK1`!PE&(Mt&{kEDC7FjlfY$f*up0dN{~tpTbe0-Skbgfor9wlHfBiwoFjOx~ zQ^1S4AFV)VLcTl>U9!`w0!>I$K@4aZf|&gKTR~Lw4+;L>d*FqKV5Q*r0F~sRD-?RX z?toKB532wuAtl}dg)7(~a72R&BwvoS?kR!yz{;jTlv&*Z?I8ed$_04~6o24|gys&A z7&II4?{^ge4WLGWtl!=X%9D^;D$uc4+aZ<)zTkF)m99Gc`=MzMWi0~OAF!QZXK#X< ztv#=u_>m0+PkXh9f_xG1LJDr6EG$2ybx#G^p4K^q7o_GzImi^SAG1#|fD$uEG_4by zr$HV9XI^Mx2IX`9{oq^=4m^-u`yqCL67x&&ehF|0WL^ZvaEmA?hM`(Oa|h7mmw5s# zJ%tw{4Ys43rwJD8@bm#n3efTew7!aeKdRvnX|Q`hhQIjD3QDRRK>;rknLsRoAkYS7 zP$ow&kwEDIeu44}Ww1U0Xn~V?5?p%qKufQ!Ahn$=A3H-nvb@LyZQyzN47?Tu96_0f zAc|QbMIAWBboSo)@&AA4R8SG#-3lhbBHa*?tsvQMmV?|b*H}v2VU}J5o6{l+F$bJL zyF*T}1a-5V2zc>`8RQ+vCd}pk)(ZdBQ z!J$s=WSRJ4&9(pkv##^Q+`8RYA~1{T1=|^TVfex;56V6e@WKwpJ^@<0&;aE@v*9W5 zu8|%taK8W&7@$o>FD$Qt8t$h-C(_LXt<1)-Z3g(@XAV%&`{GV6!nO+#Hu%`%#uy<6 zh8ORy{{KG#(h5mg06 z7mHjOK$!}}zP`wn0aVd|TDun(xiWxqHi&(4kt+iznSmNKyB4`JfC_EU{Kb|(t47=uN%}CUm_5OlheBxV793Z7fH?#U(%o4s$@q z&tEve#7mq(jgnCC)he!UAO)Z68_@b=&{+O{rxNQEpuu_2%_*cyb9|XO~ zD*?xDr|W~)M3O1ZFmWO9p7Xk)hZ34ERn(aAVyg4YFkOpC2fjh=AH! z*zSY}son2UVtuhTAJj4leFL(?XF>(M1?|Hq02*lxdZD`b_y6W2pxsVyK-D~G0>Sl0 zrxR!m%^Oe%xpY-Pz0>W}1=W9vq1#7LpgVx2Gtl5g$>sn5U*ul~rR*~3+I80#uX)nC zeP2Mz1Ygkck1rrDDzm=G-|GVEtuS?iF41B?2@VGS{k|_imi2Ujx=5XlEHC6PgT^dC zfw@ z93qS2XplwSJ`+Vc9SvS2f?V^m^#A|=(Az&BK%$lt(y|J8;Q;rJB+TnAV6TJg-Ly^* zp4a01`$Lf|21i_4XCTjuFBd^UJr}fF-Sq)ziUyikK`{&(x)*?MbNdq58~Oz_%hTNf z>fwW88*@_UNx+LQ;6qz9AZ5vdWv&b_ggC%u31l}&DhH(W0Iz9ZvCNg>3v~a-?PZYt zfuJ(t$}-5^aUk}YW#IeY;&by;z+0M=ia-?j{L1DxE};EMdv*#UChW2}Unp^d(lTgV z>kjxZ3fDKsUBMSpj|B*7eU?q?ogSa7kllXDWX&il<8#xUaW?R z@VB^w8czFtRa#G$xHZ@EFqAlCF@bN;dy!@f)mEYlPA+d=EV=OiKj?%zUyZ;Q9&lNH zXcs;7&5LHxZkcXZj(``Dp`d9WP}WdsJ;~qF#K^#q!N9}7@Zy6f_*f(8rr}Z{$Whi_ z7eRF{%gZn!2FQ&-;JI?tC9TarnfQAxK{YC9(fJopzH$8mEl0k9PG)Teokk9-ML}JV z&>xwHKnod|T|v{PU%-n#LAQ$i$UFfO2GwgWpv5k}P^lNL(K)PWQDB%{DN2_6!hXE1AbFLRRca#K=MH^y78C-TD9W9%D{lj6ocL= zTp;G=yv5e)*u2pAmGI`&?cO2Uyi^Rf3(4o4KCk5yr=_-gHsGR5>XdCfV#aF zy{=aRK;aBp$79g#3hE<*>i@tOi#LEqbwL+kTnT~{@(4Ng%zOP2;lUBy8ap5>H@92056Sz>|bqxwnU(7N+FIo1F;M= zb_iKlfzo$?EX#TkUIca#SOIFg3A};|s~u_Gp&!79u|$D3+_-|a&%6x#|Ns9>1JL5; z?XDj{_ci%JY)5L*$beM4g9s-OVS5%d`~GKWS;i4mxn_O*bVCZG*B+LecYyN6of3rVQapn!2wd-3WN zXg4%Vx2sOTi*>N5E^*C*+y(*~>T@;e<`LlE9_R*f?9Hv{jy;|P_72RkGe9Q3+zz_- zlNs#VaG0_DEuh=k5TlAF-7H-E`#n5B^#JI6pe#nv;sb%87o|`;7`tJvPKMe6b+ySU zP{Ia1|NJ)x!B7bc1&5a=^8R^6+nW zQVV$TEfK{-$4`P93!rNnvY2oga(D|YRA7c|L^Y)8BisWBvj*!LB=s+80Q7?k|~CEWmN57PJp~53~Cy)g5zj2%n|%8e?b)~s9?lW zNb~P^H2@8&RDpV=;G4Hix>>qlaR{0OfXCs+&5#g5#Nqq|NU%cVu;2tz95zE$BjT_S zsu~)HPGHrbGPE0%ASWOaqz8spGgPhYV9$c4M6;N%8NiNVz}I+)OQCijI}VCFG_5ZZ zOknYr1&%k+b@F>Q!8{F1imOnKsso%BwsaRXw65}>TnzsXIY@yI`uecV($wh zLpSL7hwpHQxPtBv2bBg>jA3pw0u>OxE|Ahd7H$VDUvWe2fX2z4W1s;p2T&yPZ+Ddl zc=0+891@_K0DOML?Ts)G!b~^`Q2{P!ozz~;0-5mQ$T4u)=qeNNA`BLcF8a>Fo4Suo^C<@?Ji7A0WU&~ zVBswUwgObHY=9W|S^%6nKu5dGgNT3@GC>RD9;gLSH^v?X6~=7f7MLPD3az?*6~OTa zZa=T|1vRO7K$ko5Z}&YD2rnTVpk_e>NDyS!3u};*S;39{3oti=>s3(H?1PDv2!L)G z>kj1zdhyE^WIV?UCXmJyP=|AS2dI(^e6hg*>PN&wywP80M@8M+s6GMnOc7!q6iI z5=qc7lsxkP|AZILN8kzY2He~@(71$7;EQ8$5g-2Tp$?!1rA0uuuMKFY-4Qj=X#OD> z_b`+Txt(i!s6kM-s|mP}h5Ixj1mshV*Y?ncat7RVP@4oYo3|5m$Q9&}Mh89y2G}&( zaTZW}`M`_P!{9cFLZ|DK7nz6u|9{bP80>sdvqKVYoEB(7fKJd0cDRTH|8`e{07&xC z33~DFCnzL%I$fVYTIisWkX5i)E2)Mq_j?lfVk%tFIEy7q0OA#afETuAybR4p1Ug+G zfU@d?z!zuW3OTx6AH2NC!ocv_FpD{h8?J>5UCT^VE%QKH^g)>vlrRJWUQ|kf?BGGz zk%6iqmxY1hMavUQM`c+vhH6bu~Q zz9Qh`KAf1+IvHOu9s2+Og)YcgR!};9aY!GW96`$#euDSsg{pv#t$7Q&ZVa&-^K>_8 zHzufw+2ML>CphC@WB?tl#F5r5BAC`0dIY?66SRD;!}l;qu@gs!>mg8q(H+Q=))~6z zMdv|Ke1eF25K#ppN?bwd~s|4|Nk#o4}h8` zpdJG9+Q@tzXz-U5LZv_!fmT^Sxggs>+!w9dFqQ7$Ztzt`u$7>ZxNTrJwH_$d1v?cK z<&2=NixUUK4$urYDCvO4?t(z>@C6Yb`$2^RtXz$<02#%B;`+4i5J6C41NUT6M?T;M zZ75H-5dVG_ChHTmRaqPvAF^gJpqK$VGbQuD6i|QAM^J$I1iWeK!)O7X>2`S04{0j| zyfCW=cg7)RpJD)A=qv=*nBr z9{%mVGN3;D8*r`#H^tvtg31N~P(E@!-2q1{@BjZ7%pl_5UQquJM0^1e@ArbI5+Q?j z5xZO&Uc`P;VTg!|k83{SV*TdD`Y$RBpgU6e*;KiFTP}Kk$C4Iub9aKGfgHM42E!qHin}56SlfW13kduf&*X_Lj|33?69cWg0uAR9OWUL?Zotbp73fPXt^+G07}PEdIAZ+CqV@ZvCdeIm#m zpuh%g7=x9pFHlQXP`L-WOKxIk>k-g?SBu@Cqwae_`atKzfcz2kA~+rF42VIX0m|MU z(K~-YGwh*XvM(htp8}cD$uhAUYzAn#-H*(RV0A4}bs9LCe?Ni%VKD=44?UaSL02}{6>P?!O}FkknGp7{oH5^CtYxU=*B{}`Ro%6y;FE0v56iu(UGvA`2snmz~L*%TfQGUS-Ox6hll?~ z$cYCZK=}p9aELs*;r}Ag4Bzn?o8gdP2QP*wLM>Ebl=&!PfRp;e|LIlAu6GRe*=` zSs|hj^Iqt~bTWW-!c2#`3lwCaS`$3T&kGTSnD^pq4b;v*??9V5x~GEZpcj6So=QL# zQ+F%K%zzg*P?7Flkm~|p%n1i;40tga!su-M@$UbB*p*{nKwI%Fw}Z9{w}RN9g$N)a zweA1^A8&o~?mzf)rx)tm|Nn2^3)09?BGcRZ=H37Qpd$<3{r?~IVs!`Df=;k%gzHy) z0Ef+o?p}~7psk^gwt+-I;SAa;_y8ONp&!z^TS3NwC*n731LXrfP!?bXWdXd!duuKQOeQ zI(iSwbf7*dc=iitrmIbZL_M+>VaH>G925BBwJ$ilKw|`0LJM^JV`UUX#r{xej)R0H zILE!1vlTR+()2PCG^q=!+rVRLsIynFx@``4ObxVUrWJG*8>n`E5d+c>_5;|T*eg!Z zj-@O?@UB(x4qogv2Ka_c`1V&U9jI1XbUfJR>_s2;2fnZlHrVz$>~#-+^1&+={RkkveE_&-X|76tME37Y||O3Bm|I zkP(ovH;(R}383vWsMgwo*R6t1_kvq{Yct4NkAMIF?*d&&p4K@v1JnrGycyh^NaKf0 zK!AE}pjG7WK?7yIQ$g3^f$o|BDGlfaJ1FqQ11(U?T?CvDa3+IVaZtMk)HP^f1TETT zc;N|h!0U^+v_Tqqpq_{IiCTG3?F_m@599#QG)N2h>>b7zEMP+pgHsaN?$965D(DBu zK3ElWk^{719ehh9|2EjUJ^Za}IiPc|;6#Yp!QkH(`VQ1G>*Qcy$oh}SBakxK6}(dw zlF2~(lcD7+I4!>LKLUzm&`8!3&?Ig4MNqnd=<@}q8|rtVe{9q?isxP=C~!vbVt;0v)Jki$4STW=s0z863x?VgRGC6^#( zKzA=lHtjkZZP21xW^F$z{pESnmmz0q;;;3}b^X^Z=;@wR1qtn%*g}sskKU zFRZ`^kbwf_0Vv9+9spVE3bq!+49Mt60S!=r+Nu8FqiR4`ZR~glZM$y)sTSV|8Xb-T zDQgAE1iUcy2D_xQbq&bh9Q@mRL1qQM*y{ln=La1ZBmd$*gqPOY3Ni*%y0$I=nRk2x z==?+wGZ1P!s16S;G`kNuZ6fpsxQ@cA3hAUL zNG5v)SuWGr+VT#E8k#JpE!K%;1K1|NnPS1(8AB zU|RxST=j$ctOk@cKwZcZP|~Pd2f9E8#0<(hpHaP!&m)VmyA|a7fEP^Qvx-DITXSGq zQb1a~!CFAfpl+~KKzA?5(7+c5!Moo<=`RA5Ubat#m3^_+Pw-@h*VVAIO@37q1?J(;wErM~KsIfK)&gD`WRm5FPYF7gq2DfWovDLAqA<=p>gjD-W3lDdmB)eX5`;K71S^Yda=g^ z9I~L0=ilB7Ht9tKL@ced6~qS}QUh*@Dh7j;vUIjufTC|dSQ0#CuMH|9L4rXqWCKBJ zIKV*w$`7EPH~7#FP{$E|vYPJ?Q0E4;b_ZYc=Qs;!K?lQ&pR51>fAMAY|Ns2Z90%I* z0k;8Py9l)3!{J3Iq_xx8ssV~RhVEWa)CG1=1#yF3WJ6>FUKp(bH&;7b6+oGLKd9Sb z02-)h;es3h1I=sQtsw0IFPsa&KJ9Fkc@NE|Apat}203wo^M7|Q$mqZq95AgCuwfbl zSgfjmVwD5rVdmBU|9AI-R0MWU1=$hw!T?q&$h-qpY9LJkh-}#l@=xH4Z1BZ-BAu-g zAVpI_1_pJ5IRV|hAdP`9EV@8W2PFm(P)u&03Nk4ui}A&JCy)f}+%u5Yz!%;Sv9!)s z5TAcL#6tsuPtFLEG@6Vf`teE#jdAmPA_|Md(EFE*?KhbXu)0a_gVqPGVcmY|cZ zSpr|kuL3pIqQC$D|5Ez<|NoG2J)3i`3@=(AfXDS9r_FLaRAFd50vffme)Hn=1Nayp zsH$-}=gI);Sc6JBjti~~pnfoj&3wU?0n}{;vHzWSWdOBOKwa@~=Uo{Tl5c!1nX544_IBBwlykl>t=ufy67%yE1^v zL6CUCc~=Hd`37RApLb;d6-OX;(s@?~P)-D~BS3C`_aA)kO3-;%22iAc#C^`Yf{&xF z0+W?svMjMEK8c|$vB(t0g)_kSu2_JDOL7a$K|`ZvFdjrvNp68LSOly;GcP4GIknh7 z%_p%aJ+-)mAv3oizo-OsIw$xfmWqP-;?mr()MTI3JkaXsGzJ7Wt%9Knbk=5C1w$p2 zu7J{2AkCE^q5?#~)v>H8OIjFBFWPB2| zS-Z0fEan3e1GU6lu`J02o$;~11EkLSVy$x)18DKg7tn5J&@x@$Ki#1}dRxHziUMAU zFoN#w73p;S0GinQ5cuM=2-JBc9Nn%TUN$o`Fua}*JHPkYGSGa<^8f!|`~k7PgNRSd zATx4bx>3-{&V-yc}gdI`QP+!emeI})Z8yeu4a>>p&avLjp^v@G101G)nD zg(ghA#2L58Irt$9vlYNAhQSwWR)Cfjce}m`co7b%@;hDMygmv#_ZPG%8nQ;c8?<;Y zPyjSTjdEAPW?+ zjR!$Hn*uXH8^~WsLL@-vI5atkfO_?yRP^I`gA0@ci*OGS28I{eOaK3Wkp?0Hmx7km zf|f)4U{w$Soe^Sx17ZaWC=P!#9yAaEZ5F$E9V`kq-vVmn3zemyF-g!~;Lb)Hkh#oD zL0ja19BYyRo%0Sp5CwD!3`4i?kK>J?V`4xP1266_`TzgL4G{5o3247wH|UH76%_`C zpck9K7v6GYNr29TX;A^WXFgmAbUert@L4n6a50cp7gdnfa;O-4H#Bd!2|*Jdf6F`2 zw$vm13=A(m%0lzri{{!F@Vw`}6q5HIfu=J-11R8pfPQlfORWNA_h9IsY|v4%FM6ji zg6D%@a6>}p_30g;Bc?#h={p<2n@~S3{{Meh3TV2^^+j6e1khgF7xxx}rZPa|SYTUF z4+;WpT{q2=;NS222ef23^hMB%dGVmt3DAv;u7AKcg}mr(0iQ4%@WSDmA!wfT^)_%; zf6)ov1N)j6bgW4OXoD^&DS(#JhyLiC2&x;pT|YD*kpS&~y#=Y0Amvve^gg8*1&jax zZ?5HF0OeSYW($T=)|c=RE-dZ^87;`aA6$-DAFP!IwBkkfHo5by|Die+ReuT z-8<2|6YQuGWw63-@Oi0$FSKRAu>ux5j^b>=pci~lNmmZg0g|B64HoM+FDh=roqq;2 zKlTQ6n2+!+74R9zBB17tHMR*d@EjOuLbapU8Z^QZxCoSDVP_$?T7txE7lCKRd_gNz z5oaP_=YuAv68>YYR`37+XM7>D2vnBxLbxn1SV7!wUyjaRP=yPcC2Rt%RPJas2ATSN z;s5_Hgh1B$a`11P2%bK>R3Zyn`?9SAJbiW&WU>+1?@$84N7!ahAF`tDA$1u0ksmqO+wh3XwU=> z=!9d)PzTatX^;fCfe4XFfGneiY}A5`Z12Qs7+4Q%p$ev^7YX3|2}Iy3Ko{KzLX3qB zcCKFlYJY*QD}N~rx;I(~eEce?`3pKQ<020J{)p?hMf4+wU1yURX1M2D>sL%lyHE zblB$&%^>Tl1756k2374G0WY>#ff%59!xvcuO@gj*08MLwM?asZfHZRiyoiGtmkKxT z33QALwECh2x|FFh|vbf6h|Axg3eY@^RpXFg3f(^68Itq+)0LBpyB!=;6*e{ z;6&gHc}u9f!p?xpvCdXd|DY4xJ%Dx+y1_yLFRq*ds{pmj!SUG(%Ez#t1WeKT!yrXG zK>;sJA<99ck8Wlu!}(bZ*VgocAXMv4*+<7*4flAfh9#IeQ6c}h`&j2#-nbye?_~PSS z(DAFF5QB!51GrO*6juLX0w)4rFhj<$0$ymH26>VLPgt!u308qWteOvj6oJBu6QUd? ztZsm(M?o$|%+$UJn2QotfiQoAw^w~Z*)oqDR+=z%7lK}#H9-z5ey9v`SRDY*=z(lT z4y&Vc;9&(m7y>d+ejj{#EI7bkJcf+k1-#&bL_JFQfIGDT(C+7pjuRlSgLct^5)uD) z@PdP&Zd66d2SJKJ;q&r1h{XXKwuet2UjWb5qD~*bFqi`gABcG`3=w{X6olA{$Sms@ zoG^7K0$;2(hKA1t&=uP6p*-a9u>em>qKD7Y*`SiI9<&QM7(}Q;k9xqqBm!KQfo6pz zc%bDVxPU{g8u+*Mf+`eHIrs*2Qa`Be11{ju7e-74)s~=g@BlYx@ZR+UZ0!wbQBrq{ zBk1I}w9Xb$2T)b_XBKG0-1h@`(;s-Wgd?rH$D>IIbfQBKM9qy^pxH!?PmtNfrBC0?{ zDTpWl5z!zb3`7Ki2pngftL4gKv&m*ch!T=kKW(I z3i2>$r{r`-28Ld+(?G*nKj8b)A;kiCUx-^AM=t-rK_pFS8CMfQOFX zfajUF_k#Qh8uIxBno{*x2ud^}ovolC>uu%v1iIP?k!D&%A$bZkeQW@}Uf>OQloe9G zgDslE3(4>xw}96}xV{0cbKu`T6=YaYH#iCcUff>*wFnd=y}h8Ig*q2f(6Pc3=OF`# zbHPRFKu6$uf{%176IU0c!BW_T7U5 zI_O0kOzc3w3oZjtAb?7bA0NT%UO-Af>s~~h7DK;Bz|CF z%D=r8qycUosLJV{3JTbu7t3K9KwMbZfKGh)`2T<4i<|mj<3MvJ-L0Si3V2Zl(*WXT zF+eSb8J7WG+5?)=dC?6{BXF19I|44+I$J+{1RY-Rv3jsT+Q@NSUPLFKb2L^))j6R9rWs0R%v@W4ALut8<& zY?$bQfGnmLZ^1PPII>?D!eqc@Z!v_I1{r4U1rN4@(kI9bFP=dbH$kifU3c~V|9?;l z0$CF9!UCcd5~H9Y(jZto-2-1m2a1U&;9U_f0yDA-rWd_92ARSSc(E4TE`!!JpaJD> zNGlO?_&LhLsTT*Qg8CxhRb&uT8epcR!%P9SLBOVfyB)nD$V1nlj1Oudf^O?Bn+l3} zP^1NQw}K)Kbm<5vv2{-crHr5#U%|B@YNWM-qB@|v7ZmU4EwQ6m)T2f+Ggt+INWQld z7Rf0GKr9YO3lk}l&*)%_;sblM{*y8haSnGHd){cM#!=;h?QxO z@%6OMsXCwj|9@dR1vFv}8lesVT{HnIPXb>gKq~Tp?x`RHf?foafZWCdDgJOp186`O z77gzwg9;RAaksq{WK+P4SK1&`z^;d-v=?mbZITJV)H zppp_kaRFT|szV&P{{b`^=>~G>wpLIN6f|X6&dk6-e)R~tTCH~~ zs8+^b#>1A0L)->mZ;3Q}NT51+5f53@6u`f|6=YpNcQ2^%5cq-}d|9AKXDf*N(&Im9 zk`NTPL7>?|P}~N*XfXl@5nRiWLJ*$^9LSI>3LwscXH`vT48T5717Um5dAw$6NQnnpL1i)D}>aDRAQd|1WGN{{KG#+<41A#E{kv zY2<*fKm;AN_y)SB;|=I~MsSKa_>h5r{}f(uQ|J(XFX+De-d2!t(3Lue_#1X&Q+Jr(4Kpck6pRSF`VU@w99Fhfgo zM9y6Xsk8%NTAt;D;sKO%!483xo>K%N4)F!Wr`HRk382VrHjA z7&KC0aSiJdpn38GI0Rlih4f}%im*ChWB>pE6F_m?da2YI+KcaYKWMxcWYkMV(3JpRKmY&#@+62j1v=VkTQ6vY3ba2K zbk_{1jZI)MWD0073CCav|F%|eU*Q7i#sE-r6g3(_i&4L1A4uqJVTE|2^aK3H04&|h z{h;obL2nN)#9O5w(z>A+S}gDT|Nq6LK2Vpa60|SF7qn%48+fb@R9tz2#%pklckyon z5B`CAJxVN~d;khW&_L;npg!ml7f{f>Faenko*n>qozU0+fky$YFVqJ2_JWjyTFD?E zAjJVVo+0rIT6F~RFm&JrT2#QAtr_6E^F%sZL2h|HiGSNvaKU?tzoiE?tAggyLFw?t zvflsyUrg+U4JLz~h@*E`Thlugqz6{^_D+F@C$unurk-wS5@dwr0TfBl+9!znL&57{ zUwntmnq%a|`QWQGU^y`pRL(*QK15EG(FJD~cutJT0r5d|yK}&;ZFnIHa&zE|vnn8I z)Iu~9A_mWI(DHNpRFDZlFS;O$D$+VzL43kds11oE1N7nuv=kL&0yr0`_J9Uuci~>% z1|L&A4vw-lu+kOOGhG5IT|amK|Nr7%Hz>+Lxd$9&I8qgV?{o$RhTdL~zQ8QdUS4cz z>qVk6G;F}*GqAHkAn}N@eE`w~fwTo6(Tx$KO9Q}WfnpSFYxh);4}xBt1>XoG(%A~) zzVyNtqh63ENdQcXRW`^dp3c@8s1XV__r)J2kSuD1&VYzPBNWuyfkf$x^AHJ0PY7gO zz>6A4+Z$p!I6A-~i7WA&gUV0HX)Mqbjy+_0L8gONCHr)NB6{6Rsek|fzuf;D)UP=k z&?~C&&XwWCf&<`5e(334N(Vu+{Gho9>o+f+9)L_qOaPskqw&s_0o1Vvg?rI^R|Zhu z8^kVn@5%t`9)s9yZD0I`kUyE1^X5Qwe%-jx9q`XIK*dshZf zUIv-Z``(oSRJMXT_bl&S89|Ph|j4vZpds#iue<#-}n= z#HTV;F;p^CfX`8d9zO<}?`eKh6W&|fvQr*$JP~3S6wdq(KCH1;3Y6JFc>pxc&ePH9 zGqvMIWCtk9&w=Z{AK>NVKcG8bPYYDzE7IXonPisfu3*N7u49!P4S`U=SfnDV?wWHJZLt3{l z_}b|g``Z8if3dP1Im+$_; zv%p7Jh8J`9g0lc*or}Ug6^7;`HP&xlJlhLN{%I3HhG=|rW$5_-|37FAipfV;hO)$* zQs{BGkoXe`3x}?lKv^zP^0xo~Un~L%w;-wA{n;F3&(X@Agi(uV44HEp$@bXZ(^rU zy9HA{QiQr+x%a=Z~6cK#VZi;6hvHT0i|Hjw6+XrhbL2W4TlIr zNn{3SlL^Q~ERIK7qxJ>d!g}!<()tFe&%P)FI!cxkv{SS@L{Oxc=MyN?bg&4%NNoW% z7M($bI=E#22-;5qs)xZD9`&3k$i-N-h4`bp)~7p^r@2app~MmDV9;%>29T@OAdM){ zS`ZPBpcfu+Cw|Gk$ky%4!yKpsDp@*MxL%xT24(I!FUvvmnV|FiLqCD1c(1&NCFd{# z?ob339H2-5`Ms2*Yl;|XS${_eBlnAZu;Ir++sS=7y1+YJI|7tnM1X`}G&O^Umq2?8 zK7xi5UVMVt$lr1lv}z%g1L-2W&7f94s7VdZMyTr+Kv(vH+SC0E3=H66C#@6PwZP3k zS!%Pug)F$nMxSjB{cL>-bTbtqIe`4t?ZP3_%X0y2Ea+I>{h=u7zB@!rq*vq@=sLwN z7RC-1qZc(zpzvJqy76V`|Ns9%8*N3b-@I_!2`Qhz_p>*?v0#Rr$9>|@|NlEd$L@ej zBjoeAkGZ~JIOh72;h5`VhGVXe7+$C}{r~?$9z;li2+=0+?u<^?AE1&5bYVvz2RPo& zNPLcf4jwY`JIt^~Ns$iB#M%tiDCT|-xywmp(!rS<=^M}t@(#UZOV(R z#{d5_KzGc541;CCAK*Qr`$E5icduCwhS)o@*=zTcXE zO7Qm@ppnU8e+>nz|dX#1AN)%zS8fI%Rcv&euH#)5nHK{b;I@r>w!|PW3FEqUz`KU9&>%jc+B-Xa}c!N1M*JNRlZ&}kn(f?n7Mf|djcbhthQrzqF&;DXFk44TruzsLib z^LiWqw$O*ozZgr|Kv@}dqxmDo7r}LqEV<3~5m?vfSI{It^dFo4Us27OU^*a>c#t7(D}E>NV2+XVU2|J2X1|2_gX@^X?FJI+?+=2>r18Ao5MYJ{8e<)^L0k159 znej3RR8A>?!Uc3Z&WC{BUXX&o-l-tFf?jaef+iRRI$R%v0v49OCcl8i3rBY-&oL&3 z*KFOcJfI@}WHqRs5a~8Kz&Y7^=19$Md2n$ zr3OCpbq+`|^vu@}e_Rn?NNq&4ueo10Zd=cn| zO3-3vP^T@wG%qDSIX?q(uLVdnC9^0jF()$x)(HdO=cod%FFRfDbhbsA_zZ#=i|(HEt9Fhir%IYf!BFVrfZ$lf_HePIhq940RhJI4K;492*N-B-!oy zrng5RfDg1TA@m1q14c&`=m=`a((9Tkydy5IudOfCT7a6=u$m6mQU372k>|dWc_aA8&KgG-n+Nt|Ns9xl|jQ4pwSZK<}5hry?7B{ z{{KHX?{&NgDF@||C*YCq2#_!+jXZc^3vwP4fJnAtrq^sQ_N`Q5m|%Redn!mM zt>K%0SAXCNC$4~S@?VHKx4eF z4RektFuag1gA4(+g6=MU@wXH-Y19j12X==xfCk+`9^~H+@gR)f4GD&z7jMCr#R<%4 zJx~YA|KJO7Te`qOqQEr-w^<^^u={> zs%8mzu?|w3gF2g?F1;sSA=B%ft}8%8!l4U-UhLL!8{ZXyFV;iW z&vm-4c(JAA|Njj6*4K>Pp(}!3Ytw3)ADG7MN4iyBcWqOebY4HTSNPsfBL3Rftte6Js_<{yYvkyVe1WxPpVV&^e zV=<`E18tw*-UQkr5%8k_0n}L~#u*de*06&rNRIA_AWMT@OoDWT0$%(S2Ky4Un!FJt z^kQ$Y@Zvzx|NmJW84N6-1KZF1|KAHbgqjbW7D~mz4i9+I!wX_S zmV|ED1KR%}0-J|U>vZ9r@S?it|9{AhZ=eG)d0}4RZ*c?FggAzLKqZ@D79Xfp9`HgE z;v>)m_K)t6-V;GDzC&6rpcD_zM(QA6yxs-&B>27@7tslwt)Sw!8C(dn@V7UEhERGz zLjP5IcW}5tj+TG%;!Yu?xNz-waj_5-tyN&>r*-kRF95eky#-|zaO^+25g_~^+jmW&f&GZ=b9Hw0xd^n&h@HoOB0UJ0<37au}GR~DoX zJc!fsLa-2&zQGG3L7njJA-ofUz{ev>#DLcF@PKlyZ%g2dogAPj<4EgtZF#{9)&mYW z&~VOnAJz$hFDmXrvju<4Oweu}0S9Q=;C~M;(E!TE%wWqvV*+4}-Jv`|FIGoGEMw;1 z?%ERY!Utg)Bo%-TN@a(cQ)0uvKeVIuQk@C^cGr#osMq)rPLG9{#=qUS19Wm+OVEqo z>~Pnob-T7e_Iw&}xG}t#xC~Tb$3w=#MV5nF=Aeq$`pt{$%OKS^zdQrz!chwjH--<; z`g<#f8^ekJ|Nn#HWd(;D!v-jO35OfQ0;rma9BvE~{{R0Ex(B9&!;K*)Ej1)R1k_r0 z%}XsxuLRGuctUnKGUR0Dr6v~nxVa{lr4}Wor-Eiq3dEW0=6^25!=W@2B&Cj)(04jfY*r)_?$)pP=nKo#4I>c(}HUqXRTf&(qD+ z<-ye9`-y*hs6r5EJn=KAZTBK6AJh#3Edaal=l}l~kMltDpLw7p1G@O~Gq|@|cN-qT zk658gmB9@U)Mh_ygmEXRmIimmL zr-DTI_q!@sU#N}i?FDHDw_`wS+rb{|odUjWfqy^P5b$anP_34ID1o^Z)Q#fb4>k$Z zQv@wC`t$!kXvGld#))#4=zGpy_T%l(mJ?+pl{QF(cfUN_sz#lX95X@UpbUS3 zf4lF6K)A&Fi69Bkn$A+ljeMQ1H^3^uH46XsCeWox0WUgOKp_cUWb>j1#=a1gW&dIy zgqPOodgXYl%HRK>nF0n-Q?2z2C>`|Y{Qv)=DhHGfKx5S>!2Ub|_2&ux{jMkY_xnm% zAFTD{-yeG7c*|4)s1YD3P%@?MaYOT4#^w6Oc6;AZvs{*1Vn% zvK;HVY~V!3-@6Rdx9SDC4o5J+`N~>tP#YOE$}ts`ZhKp}KqRdA=tg znZ_4n7AV*xKtolGpw<~A%XCi#xd+skJ<;9M3JS!)7tY|#{-B-|^bo#oh{Ziz4xnS_ zK;>QbB?j>Jm=mBb;o~e&OBv!n{{6lu__t5-1%+B#JQ7iyn#s^x32AbYOxB-5C^GSwI7OodNGeIE*@h|^&*DC=p zwlhN9zx@PgT{_6zpclaqv9!)s5FZpmU`D`;E{FuEOvYCfb&GHXy^sU9uE57rfv(Vm z7FmLbqyur0dL}5@XyP*tR`$d4@!IR@*flpFQ#Yw|No*1WE1{G49fSuCyuxDf|4xA2v9L_@loeg zP{r507eqqxec5bKzCY023ld7}Y~cl^%oheAYotNeyq*uvec-Cf6@9gU3TRBl3zS>n zsrv_L%o3I;K?x2t@&O*R1SQ(+iwVr&%mSXp16`T8eJaRbphfzB|Njqo;SOG|2+Q|) zi#Gn=)1c94&`MwM9uruqVg#jZkogB6urOZ$Ww>sUE>I2zPfmj)8ssK$_Lu=#HQfoW zX(0|YfM+Qb*Jm-lxcyHLw1NSeGeHLTLNhX21qljk{_QQHpr8b`txt4M0mnnoiwy9+ ze4y^mR6021k0S_Abzx0?^U;U>8F-VS~H{xj@t5MGsgb zXh;-1&;c&bLa|f<{Jo%^v%Qd9)eSCCQ5{tb-s8`+6Xah|Jq)!FTta|G>JC0+K@<>T zY2YjhjxlvN?c>Wljj36SC)V0%w6KuggU za48D2_aG=NyICd#yvXGQmjuMQvLF={sBgdn;-O!_ZE4V27FW<6r~!~xLiuJ+T99p$N{Q5u* z3U~|TWew;A=upr-Zg&D+G)@3XVrhnCbb=&6&5(EfAQlJqW(eaSa5RAm&KF;QL)qYF zh&eQ23IVkAws$J1pbqK==du8>;{V|7 zyF8FYehL=%J>aSvlsiH7=IUfnQiIv*dnNG2N`%|^w?hkkSBMx=ZO{v{E$~GRL;{?| zzP7ivP(7dqaql4pL|Fq?bvwDPYIpF>^7F->{c`Xb3-dAl{iP?mdAd4zHoVXU+4_3IOGi-2beS1?Y9Tn~qtye@ zwMFYeYCxk7;F=9>!RLOkLqLtIEns(nE+s>%3Yu-27)rGu1#kkq00vdYpu_-~3vhTb zD-jg9d0+!vzkqWtsJsIA8=!kLA^nCg;9Q94H$ZZ=kLZgR?uq~Zzi>)K%GIGDL&554 z&~KR01+76%s0Ba);RGfpd(T#XemWEVC zkOtnh?{J^+Z-yNLd=1*H=O$K;;y+78$5K2W|Fz;m8bf33%@rXs!d?;^;*! zT>Roe8Cn%v*8$|%?qu_Tqf(|Nk#e#ln1!rx;OUX8`wev351L zxqb$fAx~iwr{EC8-ssswWaF^eri-CQ7nGbJTa^(-JG7jE7oCkZU7#V1I`Iq#VFreb z1CM7jWEeb|&G15~R10)E4bC|8{Q{3Ia8qUyI2nT$s($I6a`phYmEwCMt&_#;#qt)#$9rzc25oUqzN(FUKz#~g9u0(@3_xOVR3NhMMgMUAd6X@b&&!Hg*>2Kfg`7gzy!1mQ*CXGoy|a&HgRz2E^a&<+NWHdjzEKr9Q@0QWv# znZ$E+UNb7{!>nZ_i`hZ5&0$*%A4h^>weo*fS ztmDO-C{WaaPHTY=AtF*$Zx5pb2YBxO%fUx1%%=iDo2NiM9)8fh-k?ej8t?%xrhtzX z7kK#}Gyrov3Uqr4Ska5s$Dp?Ix72`_e?e}LodR(vcwAsR=+anWnCtjkLO|=cAkz+0 zK^gLeJIIlsxWSjbBoPq~syZ+$WN_b!2Vu=)a9%?SSXYU(ZXc(AX`SF&0?B)@N*k1H zdV9d>mVbY#L|V6qKw4)=;XhCj-rI8&6m^I?8C)%-b&4>)=!pFP|3x#1r~?rzBOw#3 ztp`d~`1gbDYCTyh364cju@m${{Ua_sQUgdeRZ>r#-4 zcxdi_eFWxrcd&2383)u!Mk#K<7j*SbH2{?`{M%iB1n_V3{S2BhkO=B+1;taqi$_7A zl1AmVD?cdxflkZ|{Q+7m0&Pe`jt>J}3)kBVG6tmiM-cxu*UzBSVk824r-FF3?mC&+CKy`@vNZXqOzQ4+3sKgIlI(V=mB^I4D-3 z(SzxDP^ttsEF|DTRswYa$myV=*0k;rkAG>M;G_ytj+ThQs;5AUDo}c7VNC0EDf)-x zc33Ypts9&U(?A1aGs6D=e=!+E^o4;+7x22#Lq9-`C|?~=IBEp-y6y=`1H}nw`6noW zgDZ4M6vA%u0*}YAf(jr=h`;#o!+@drhytka!acCc-^&HMA_lZd{{;VbAJ;vBFMb?^ zCK>(~Z$<`&7aC#z|7ToZ3@+GCbi0al^GxUt3;ATsQ;La#Zz>A4+?V{i-0zubB z_Bw!D&M!eHe1UHX1WkukKm@Z`dqX>ddR?ak^!hFc>x z>V00E4f+57#fcD5tb*?N&0_6!?Fi`gof6m^x*(|6bq!cA)WZF)@Ze+ti-Sx8g%wBO zi>r=EP7FQ4zuhHt4=9$mfUh}xQDzSg7SK=)#9uHLOJlbeN2f;s%*i~U4Y=T72RWXl z)5+(B7RZUJU?<)JW&du_{xAm>H-;AtUEm2p=vqCdZqSS%Xll*+&5NU5kQu=Vd<+Z> z9w5d4|NjTg#J`kj)K-G<53UqETMb!_@Uy)02<;3iGNUWWAKSD$t{3y^@`6d&W+E^OFMdkS=LZwjvis0qCvI!XXO@*6a}2p!*R0ZYHI3Iv^h5ePb>$pYjr z&{f-Jf#?S${RiJQX7d04|JOok-Mt_NWYP%Cz+^McoBkPPsXg7 zGbKUG_a=f4m<@VS23ZLOUi1SJc_Hc#&QfXJO&%hklfGJgK-)Op`+-(AbMSAU2%6Xh zozC<38QA$CuXOwN1VR=^fwTl<$-j62lRN>E=msBV8}Q;(IB3{HfPepq)|0h1pk+#~ zJ)K}V{_S9&gA~K(j(s3zfYu##Hi8U(QRVml|BF;V&~Cs`4*u<62ZA~+AQuL{u-OI8 zl8{T~`L|C6i3fofHgGyN?%w*#a{@$0|x~-3_4+TMZ{!`<@26=WfJ zR=ykJc!bq2UiyL)RzSwAnKL6_WWx-51j)1rGZ=lrX`*=-D8Lv>3bGh_!D|--5N3e` z4dk-G7tG*;0eAvlL_v)2bZyCE$N()nj|%chvE3hpe9L4s8i~kpwY$M(Y9o z-esT*TetakH@{>=9;$xD2pZ@Dl|iis_nRGdrh(^V8MVF9Od8wC9ShH0#x5@?*&nTXo?=^ zgA{?vpUg54i=(qO0ZBDD?ZI<(*&}GEod|r91!IFpcGp07X`QVxVBO$=3h3?y#Q z93%?5D!>Gy4ixU)y`b<3%wp=E3bHZig~WTX=>ae1^Mi^Sj(`_o;Hx9R%W^>*u0flz zKfF-%0wpWfmmmIu>c#+A-6#bT2Bkn;n;z@HlHfW8W7A`|^{LuO^!kmbDG+k==^+Nt zo=!nfRAin6?G)|~VG;n%I=cSo_Gz*ReDMylkRhOZD#$rOFZR6z`=qlK#C_fWG8eQy zy0(X*#J?9BFrY#gs(2#!Fd`m^Vpv)QjS@i8^b5v^V8cM=-ixmfz-(wje64sKYy&9o z?Er1Vhl;=8^90?0>H)5ZAf`ZFmc@v2wJPWY;mk{5AGvS{Fdsrrz5y?8fR7h}=5c;V z^NR7sB9O7Kc_Cbe7n4!BEg&xcwyB_|7-;k3Vs-`w=p5yQ7wsTPJU!@c(D11zJLotV z&>$nIwRgN#1scJ}TR~fWAYwdFu@|Zy|Np;G01?t4LJVvHzQ&s}69YrW7gR!axGh=3cx0?H%cnGcjajvhB( zkmCk4l-?cEVG;DA0b*ch>l4sUJ}?QYNI`}MzDNe2^$K2?%fG!9noCH^cP4068NRtQX`W(5ajML8opOL8|@E zR#1}Y23rAI?*l6CUxdNrK#8P#D#!@X8G!#mi#4oZa-d`b3cT!#h`?s)0JZ;ME!FxW zP{{{tsUG<9o=5HG@E%1#8n_~OEkq`*v-JmPH5ix#9g+ACba3Ye=pF~K zt^C`kf|Nj8lA!i)V3yL0zX;P_e1x$>~WeE_>9TTlSJlQsJkL#GQL2gn#mhJYAj1T#jG6k{Y_ zcsYaidxmy_CP4(47#L6r5AYEV{4JoS(ec(B{~!xAUwn50O>yBa9&5|NM<~EO;tINt ze!uINZXZFBUXg>K`Z0}v8xIp`Fz>~!S72YKb++CC%@J(}Q=svmAIKR^q$B7>0AvY6 zKsVSW0WTJS%R!D#F!v>BZGJDTk^<$CAeg!nilAZz6#SsR0BCFg+JS*(!xv_^z-|C# z9RBT7L2a|37ng2=#h_JTMngULdOVN`0WaJjjq$WjaQmKrJH*;7_7`s7#ox`2lUELx#QTI>Q1Ok`hT03B=5=lK8sgdHFO?6+fs_BG_=ulQ=c;1;0;JJ{Up z6VM0-ZD)s`TGH*pCeq9D1AOWN4_60|!3#E!J6_KNufKUY`v<7q&(qBWKH4Cy(*v}% z=2#Qxj&a5pcN{?X9Xo&q_&{qOz-|Ng$1%2=@%I*jwuvC$$c|_>Fo$pmfRY8o?I#() zC#viRH7K(GGr-SN32EX09jJnmLPMW8E4-^()4C8UtlgkwIx8??6ZK4^puIbI-+ zPcg=m!`&gShx%*>*!2e(m|XgA=5fou4 z@dLN7!HEcU4G!qU5yM?zFN0gs%#J#s1{SC}oqdw6yOf974-y6<0v#fTFC4)(?0U)i zA1!XcIWDbJgyV%ANC{*Mh>4XO!;8KWdy0fJDGstd6^$0I5Fi zdIUs)l=Omnp&(ULLA|{foi_jfzi0sw^&p}OM3jPv0uYf6BGN!aAc*h*5$+(u2}Ia} z2n!Hl3?lSwV8H-RURcT~(4vbB?rosC9@jsakc&S;Ilu=rfZN%S+t0zP`Cm9dR$>Rd zIDQQj(4fmcKH$}hxaR|6z<&l%#l#Wtq77~U=p?E@S@AC?wc!b`J2l zE&IWfcZl8WU}Y~hLQLy)y#nj_8!(50N>#{?gcppLL9PTX$J)~yx&bu7vnQb2_X=o& z?M={&Wbm2$r*>)HctMxcZPsK@~A|8WJa;R444 z|900N$b!vvFwHl5p__fPPZ%)!f==Or98ZNKF5pM2><1kP#1aU#H-R~n2Q<3W4Z8Mw z5@h9Y0RQ&ThM;cO3jr@2V77tQZ~tjMS(?^671W9W&CmV7v>3eT+!b`2&jemj`owLO zI@~IVdEKsO0$yAKFI*GpbUpKu33OT(xNv_VV+opOg(Qb10WWkff};Y|5b6$n64dSb zAmGJK=(dLKCjv7}cX(UAI02sE1T8%K13N2#qZe|J@{jCGkPAq@fY!F2w*Z~G4a&^{ zpw_DIlE4=+Fbgh#4F|{e4~ThSHK7}VURc1?8~`UVkV9TvfvS1I4fDo{G{{gEbf~De z7gSgTc87xYcS2TCce)^$?*dV@x%)f&6 zO#Ff7I$sXxN$fwePbTzE0pHdIs&qhW{oa_vcECx1cfi#wfsa3f&Q9+36#-53!jF*S z=!KkD3C`jdL208Gv_D{fC{`74yIjA3l)b3W1f^|I!GJB`K_^&44sZ+o0$L*U!omFi z{|TU(b8z6#2z+t>Jd*$KK>S|~o^Iv{;NK1%^aE`bU1kTeNTk#CO0Vyp!0ym1K`$0V zx)&fJNRWaiG;RdGkiHH!GXSh84!qSCl(BGy9pumn-!C&jfw$fal=ysmKt<4=pcfm? zfsKL`L6GQt;R6waMsgNE|8{Vt5cI+rA^}#s-xp?`E4~6!0NTn&C`XT3nCn1}6EXvB z4+14B(6Qp6%|Hg%!0rp^_Pr4Jq8Qvc#1|LfbA0wg<6?^`$g7|dX}fPj;ESVY!A5~n z9W05yNQ8(%y~@8G5(1zK8g`}zQtAPn)(5cwy5Z~v6Er|TY3UT`#46DJ8t_~RN*oaN zPzNc49JJr{59pYmo#6dUAg>03#%XT^y>NvV_~4SG13WtfidAqC1e)oC9jy&YXkIU_ zn}9qQ+5;N$0To~YFP@%(`VYLL31o86i$;hT+<%Z{1Q}6*9xIMgu)UZ7nZl~{Jm|EDOA)9wgbEz{R9Je@D()Q_b2ltILt~pdVN5rHc3O>h>rK6K&6Gk-xTXK(7 zr-Lm#05i-5bc7?sFz8`l`%Aw-4j%*C3OQ*Wl%5#{c7ShdJHY@dKET&>gJ(3c`Ou)Z z#}JY#O20r)bu4@#Y5f2H3lR{(4qt6M7;+N9$Wiee`Fsp=q}~xZDE55 zf{cS6Ahyd0)HzH9&Dbvg`v3pSy04IPxv}*~z{jzhn4gI-Ru5)u=nv46 z?obZI@ipKIwayS67oge$l)GEFAV($neu1pyW_S^62ny_Dpuk@64|W_4i@O`ci_Phf zu1(_+Q18L|%?qXsNQWkE0w)6l1CKjo-3q9Ga@HNPj~&E5>h8v{1iDsbue%$=3@Cf6 zyBk9fl)b{;jiCX`p6>3(04f4NdOO_Rz%zazc7wYc1E?4Pu`57oQgaK8;!_z)QgaIo z;~_^3gHEafUE>Slf)5!+5`Y{t43({d(v?uU0!o*qCdcQb=EbKXI!&S7Z(#Rf9&`N< zKK<`M==8t;{M&s0H~(bf?^On+CJFv+q5omUtN^%@-sUQjeIkMRVi2+vqy*mP$^(&l zp_>R^h?j*^KPV3}GBAJ^0{%xSKKQr!@?>93fR-KsFCHhrP4fK@ZFsl}fSdcdkGTJlTg}joH8#{YhXqy*vRL zbp?45wLVz3&G98>*z{k=Dz0iYL z017^EXm^JS^g94RzDO7p-(k=TP>;F( z14sBjP=x>E-{$+T`6oxM4F9&!fBf5A|AFS>N;$ej#5zP6Ux?^|h9fS6#%X*xx&k>m z0yto7&W-?17@MmjfD6Xv?g-$9v3WWIcwlVajsRX5o3A5)@5K(?|NmcX1`+E(#7Ypc z1VqdS5wmpv|DS*@ZL)x!`acMC1_vm$g4RU@z0m#(DtQE6Uyg%>gLMi@IDpS{<2dg6 z0~99EZ~&dd?7`9D`yUh_$6Wt19CQ7{@Inb>xh#l~01?8vpiw@7H2!T);GO!Q;`Kkc zc)d9jTD+FAS*+5E}F6zQ4kjd zym$z%7gz#b?3jTX0U2QX6+rfb&vo5~J)~fj88k5P*bi>@LY2L^bsAdTCBp2tK(qga z7TEuwqg~E|j$>? zfn4xf5xo1{^)INm`a<~-*x4Pfe_wcjWM9tx3+tKv11Do9n1X*V)WHe@|AJB(B)Ni) zeB$303Q2>Vpe1s~TL1rNK)ojdzQ+z!G=W<;NFL$=%YbgULy>tg^%U4O0WV}=Uidr> z)eDO?K?M$q7ZMJFHG#a)3X**p2b$j97W$|4QVE;Uf!8drnKm#sAK|cm^TIU&n(M*& zT?Bf5Bl_vLQw;uDjQrbN-v)I1{s{yf&H5+k#ggCPVkeD%+W~NJPninyjvP1^Lf`U(?(Cg= z0P2PJFAiydJjnE#>Gk|97SP)5_uxUvXt+i`u>J2|%mgbeKIZz4@daoea>6m!w@g@E z6$rM-^)1N$ES48d5UcpNfjaYl0)3Bp+77^zpZVj)w(%-t`^G)i2@@QlKkAj=Mq*wVVzz>ySFA0RFU{AofcxP-}=8w89?Z;x%w{q@k`o=K6;D#Z$Ha|6e>% z1C;}yk>Bo6guD6sj)Bg0LUnuUPgt}-+#U)umcL~ND7PI|gJstD;AmSq3FiEoEEdr1 z3H;k8g1i8dM5HDCec;pv8UuK78Lq<%>d+SsYM=@DFZ|oU{%yTfD%b4_isBB4Nf(2% zm|pa#fgHvG3L2qq*DqZi;Gpq+^MV=VIZ*N6?fNI+#nSI!WuU+deb)hY3P`o@n+~vs z?$9sYt{*y^uJAK3yf~@)|No04AY#Aj|Nj%3kAO}rpArMfu;Bcf5fKll zAKg6@Ks8I?izJw)m-|6>gI9vQ;Du{?0M+FBzuWgmcSvJG&RSW6eknt&I-AxoSBUNpfpod|q!O$0Rl1k!ZlnCoYT*PLCUpTR!;4BAiw zUOlbN%fOIf!^FSdtacf<){izOgpK8TnFBBp|f3Cf^M1B+>vF7Rmn3#lWZ=;8=? zu@GDbu>`#EK)4!I-hc{sSX3WiU| z%wT%%_QL}R)D;KmL5c2e-xGl^Dq!0Fp9I;-67XUfOj}9Nao0Bt3JeS{CM$ssG<^Y@ z6ME6E1lpM#`XsG0bWd8h>w~mT*BxoyzIW0(eUGGdhu%o*3_b87Na_Fo7rr3E14KA0 zfeNR`te`V$z)|7*qkBpt$iG40nS;-e=0L!UDwrb_VUFN$c>^xNP(t=h;EMw=E$%Qa z@A}~0g#{5TWI?GrusifZ(2Gu(HUXHn?Fen4L1IuSA&2aVfES@KJ$Ft(gQyv%2NFb} zLbE^-5=5ZjN>Ky_k?(`FPTxIg-Qb|wk=E^cBdyc*2sEe;ywF$t|Nn&+h)@L)3W}g0 zIsiJJ5maP=9h(DL?G*6h^KP)k;IdU5ye1fw9ru9qFgO;SU@A|-R9*;r@m3I)ad$ve zg626SU@GUsRGtWY@fm#jF38Ly5S5^T`*)Ca6#*|wVJZ&t^uC0ecozR-j; zn*v^Jfax}e>An#3q8qMz3;%Z4JD{0>BcSo-EkQ3H>;!ocvJU?Wgbm&UwcU3MNW~M# z#M6tN5Gin>DSHE~1*8l*iyXS*#SMAT*_JCnMuRnO33|Z_ZN!5*6%H@j!No2|z>7G@ zM$Jyw4Os&G+g(=#yx6lHY#_*R{{5j_g1TKd1iVN$1cf5#+Sx7qAjiCLI|fq4(&_pF z8UnCX21?J6{HqMJW7QLoT8@AhhPyxv@QmJzR`5z#P-ufpyaDpw0g(5$1iZMl1EdVx z=X-Gu!UlPde|zW_kctN&Z|w+tu^A!-8nJ#M4jJHx1gv-gg#@Gkl!V!{0J7RT;DtIk1|c!YOyGjJKt(&_pJB|Y#=fTRU+nECS{E2IKmsDfh;k`^k# zOHrXA;ClxYVX(At4i*n50$&`0ut8pfrG+P;(Ap9BVmU+#oEEqtGX)@Jh_rA_1|uze z1{Y+o5GaMTX98aMKz2<)LjaT(R&9ZX0CHLg1z!_~oEF{$yjZXYtg_Sf%}dbcLU2%k z=Vq3})~4!#qY4u7L2z$F3o%g9R0~td0#kV+@I?f8MJp(PjvRLdFJ*wPQF!rB8nhl- z8ajZzW5@q`(B>G|123+EBrZsU%42Z#b=(zFbDaf=pOF6lf5MAL(xBQJ)OdxoB@VU2 z>y9hT3=G|_Zvwh~Uj)85)d3gZ!_2?{ZZ3calCd@~I(-*_RbVtIn86JoaN`8LKXL1xpF#5)$N0CE{)fyS;M3jhx&Snd%K`EPGl=*n_5VNi_7-aUrPFl*SQ&VL{R?#H z@iSt$6I6tQEzSn55&F^#nks=f4K`H*avylAgrGUyp$j@iI$k78{r~?W4n#ys{r?Z~ z_X&pXP$b(yBMsmQ(rv!~)4D}G(mF$DfEA**-awOU5QVN#@1A7nF8uKG;ab? zPzo~1DXmkakf2Fv-M%x@I(eL4?2rVF2ZD%olK=lh!U43P2|0qHqq*Rg3r`cyScc6P zZ3~5Z8MLeqIjUh-!+^q*XJRMM2C#J)sRhX#Xrv2++{XtZI3;mJI&7dA)Y4AtW(iE| zbe)4WxSk;9W+(74HTX%9%-E{MFdSs>kgfh)+yrgB0}Q-{};g^ z!cPJ;qyuS7g`VjYX#|I#?~m@#6P+QA2`}tGiY$>8UFn203gHSbbWUjmwcTC_fzi}dGSIVbpEY4NG9}1T4(5uv~JfuX`QYQUYrBToD>H&tJ*-P zMQnrAPOeuvS-L=J9@O!1z0m2>mGELSNa;Fpkb9wu&UChPfod_h!V{g4PST5ZklH4& zg}z79I(_e?b%*Xr10A{_3zCTd%YYqu1M0{JFPuR#c3`LM|MdU=%L^Z2(?J4>ZVWG$ z_(GIn7biqPH3R>4kojvG;i0jOm4V^K8qxp%!6!C!yGjJS;A@7;mPqq&2Q4kx z4&Hho5b(mp1>8hbNu^V8$eraz!xTM_vH!9;(zga4Jc-y7s9$u0k4Dt zZSe01dhr3)L@fum$2bCB^nud{=!~Er-Jt^DV`{oZz>)T&+gE^pyNDyG%{3$7g)79= zv`*IOj+>q**|be0P39{Nb7c8kk;wC zr1|83&?W0H_6q<1|6&J-*end%MYTV42LFE7DWE_TVP;@}DEshY8b}fxHCX1n`S*u5 zfR^dL1`W+If@YFoVe>){>g4^PA`TLM-olWhsa#KhmQwo8d0_>z-4t#CwtZ_*3qXSd z{NO$k#614(EM5UGv>*Y{3Eu134cTD%Vk)@l1=_^~x|xH2JNSZ*pl-0509gAl;6)!; zFGv}vr~t(rOlcPXi-W76Aq!d@2tHar@P#Zy1E^&Qz5^9B!46G5LH9w*K|#I-beui^ zcHcFirt6xZ7aGV0LCT3MK`$0Tx?rI6z`xyh4oK~Zpcg!FQ|7$<0^0K73XbR{An5}^ zFXn>N8MvK{r0M!Su+=Z*g}`YORG^rqb%XAe_kEMr9r`1!6Ld$r>xr~Z*8^$YzH`z# zeV4pAB>4aTi@hLX2Z-1#2)f_{bouj-ZdU>R?K}a2FZQnlnG0G-2TI0ioh*SbdO*rv z{sbK|wowpLNQQn0dNH*YmhtUCi#uIEz>|PB%naWTuq@;O(#Xia-E~I53m%9xDC4}G z3mPP-0K3w~>)(ro0-${3It66Pizx!2N)vR*4?k#u z6zFia7Y@HnKu6Ke;NR~%#rj~0c*YZc&`lDLXES6JJf6+)qCo?EV9{$y@VNw_qfbKx z(z-zgvT(g{1{wGwR{&ZtgI8U?kgI_OV>thQSCQryjL7>ez?*}AfYyhCssif^b@Jfk zw?7mVW8I|!Y27}4|I$Er^*-YVjhmkY)g8tMU;%UyB=~Xzc<3mLIg9Z{0o2pmF9f}~ zvK$hi+Ybc5PKN^T^5zi;d?CRKD!V}obFZXzhw`L#hOT+h!vFt2%v;R90)bf!84M1f ziHXoPpd#@~zzZkv)+JDWSOHoV2kJWI!z{TF1k>9cD!{*;g)892V~8Bwa&W8)zK{Vq z8oB~L(~aRpk1M2I0J#N$&keK!9#q|1zj<-d71BtU0J;OgCew}K3ABwcJ=2Zh3Y0xL z6LKE{Xq`uIrW?Z+sCZi@9INa`KbGEsXe7hLp_W5+m^8BOn%d5eIm@ zTmU-1^`X=COQ-9PPS-zKOyJ_-1#dMhLgnB-1D$`%BLLdx{lbp#|NjXu`5-I6c)CF{ zJ^_EyI(>ia0v*&3%C|41`2PQYAqrB+zu%Ro`2}-Yrz?DsJUB^!7s58b zLKAM~7myH0p%`4~&+8>1LEkTdF9P9$U--AXerY};VEyLBA7@CUg4%W<3|c<{T{Zx2 zB)~)BAZX`2I3)P@y9!uesI3DnVgm)leipCR1NEk$62un~GQ|+vz@sGY;IzjATBz3T z%L6XwmhgabkSXY3Be1Y52c$@}foZ!C^kTsha9Bd@0crDkkqgrHG7Gc~8oUa`7R~vP z`=}+L>E%VIE6S88;#zTV>gn};16fnS4mOVm>|t;PjJh!ZlrF3<)XMX32W7+*Z~?L1 zB^1a95Fl7x|08{sg5th)EX$pzCFLAo&h_fy5W+1rlFC z%dbIQfaaHs)(2~Kvly~Kar*^yxYUJ!7f#DT@yY`-jDI_*4nDXLY&s}dUhjA*0NV2E zDg(K`o#Vw7PEa_xet;x`nmjj#7mf~~L=X>21xFk}sldeg&5JGvNGeF104gI}@*sD? zfy%|Dd2S3BplM=Go*M(`PPlkb!azNHsVFrKTr`5RD5C8X#(zmFE9t(vIaW<)X&Re0HqAjVXmPIz;Op^nDl~{ za$kikXLy+e-f#>$@ynn9wExQvDar)xK~bgyy8p)x5@r1I44^o(04asWQ)Gb~!wo1q zpn!0kf%7-o`Ydpc#9q*fSYN0OfCbSXSP+$$Kx3}N2wWyXOVD1P3xO|A{{YWagDN2K z$(i8O47))c?Z8jqfO$OwvV?>Q>M3wCf)k+fAGUrjt=m-qxiSQ2Y*-b*)BJ)FTqy2` zY$5|4{Zh&SY9cX#n@ES*Kn46U=qk0TwvZ5nq*n!K`HcOtQMAJD1vu+Ic~Qjn|No0z zHc&PT6$k>|CD!fB11Z11?}8+U{jMUd2TH`i$p)OpL8@M8LP~dV0Rl=7ptSEg51Jkh z1iY|>u}=i{hJFB>{NgJ(6d|R?gV#K1-JuVlrN#sP{jLxA_xlPozXUbrMYK;@AFPdl zlpU@QK%LAFfiKt=L(2}(*)Ogy0$#Mv1=|O@_bZDLRLuB30Cj6V1iiSu2&xp+3-Wyu z_#z6f^vUb??ogSuZr2xSolM=n3Xpj{!50~<|Np;8W`$oY`=ZE=;l*WZP|}4IHsLm) zl&fI<=7p>cB-|%}>YNWnkbA2@WzC-=q_hf;een5f&2MVLduv;Ef(`-!M-=kSlWEWGDkfKCPp2et0DyYd9QIIski z3_#=d3%~~6cwq;&0>@f%{%xTG)~9MspxFzw@*>}0;b^f1FAwVym-kBO0%vPKtl&N0$=>fhXq6k z|NhV$t(WS2K&_x|SDAnp>)wI0C@8z~Zx3AnzI{soS_AO}fvf-z9Bl`eUJ~H2z7h07 z1IcCX{QF&Rv>vFl=ilzTAP}^OQvkGPh95LK(;dnI>N|W0==N0z><*O)da)0@EJp@p z5NI~!{w%l`UvjWBFuc%XhBP94RRUiug1cJ<)cOY9)z%Le5(JlFH(s1&0yVhLz^;FR zMd>!C|NmcX1j&KbVQXV;12ro7dy%VzAKjq}-JqsIJKUbcUf-TT=$^n9P=Km{swEy! z4fLbiR|3>1fDDjufS51(zyT!#>!DrXas2nU17+-%~!zsV67Htt9!SrLZi(D zP+O`->P0^zG|Ub z?+%p!)%_4A2Z;H?3)~El0jHqe&=sJd{s3CT4Qd4DnSj$P$dQoB9#71I7Q8{T8fdf% z60>VzE-NX+5wpFnD?ly--J}Y3&TdGO<=^f*1LXD#K`%6CAVsNb4=7a}349?87d-+V zAx1Z6voYA|pu^8Vqam>9{*w)hZa#2y?|AX+|G)neUduoaKk(g=)(sx?zwqMW|9}5q z+yTk*Z--1IUkH4$2d-ZY9HCp%x?L}T5(IQ$e$R_lAZ<%Q!~(Eha2degw-tC=b*6;g>Ie+fiHw|U?EWl4M14C9F|1jaZm`soT)|}oPavq@@In#l4p$ja z64?VvJu0B%_6$b*qOCI)zegI7vfZAWt zhTwPuIji{)=zKYFxTEe%gVa3yy(bajj;MWRWkJK8zhw!yU*yUY0P-_5?}63_g3C50 zm}gy8pp71IX66BRpkA1K1G$+8T9bf}^Hl+Fu=V8$eBnM78t4~-URcA}Ag??Ke6jlj zNTUG%_E2cC@In%%0u(La{110So&ngiFQq{-bPeQMaP7n22Re)z6vg1(qcTA+u097V z1POtf-(^$44glo~aFGB%FU(b;8#E#|EfXFFpo>D`>2D{f>5_esfjLwn2y*7c2?l1+ zRLa*4_+noDE67hgpiIQS-4`w9tsrgz)v_=2U~Fj2uX_*D2wJLh1Jbbzsc~a?kzoXC zYC$`8uZ=)$ts3h$FE$!M+gj`l3=AOP)HQ^tfGR-rA(P^ZGt=`j zk-CoHR$plMo7lr(7K9*z51J_B;NS1dV|}omD-CqaWoPK0*BoixuArH^KcJzi?x!$A zL%ZK}yK=yI(Dr2vX#MMwo#KcND{Q?)Ex1?B(aq86`=mScNjFoc>zfy#4dmUvPr3tH zfn8 z(F@R-ATJm|$0+^=9T)ZubO4&~6aMXiG7u|58$s!b17uLAW5$bXAo%ttFS!d1QR+D_~IF4)eLBHA84U42mf}bjDQyk2o*@8 zTnNz@>)`tS@NW-20&>HjfEO02a5o4tLc%k!pfmJ9w=2hShXT+FOwbVA!G}zNFKUZa z8Jdrw~rGpd+~< z$8>Xadlqz;9_SXC2AZ+o4>|_?z;PDP>AeiE4}v>i=oh~Iu|8NEm?iPzT_MytD?p}! zqQRq}+jT`J%f#l|6>wKofVWJsysTwmV8~(vo!k#Phn=I_si2#uBk+Z!Hn?nhJ-s{h zK+ub9h>^!#K~wPzFG07;@o#rM0;)3p1irYN3=gV%pc|n>L8f%N9su2|?FbF3&_4$s zF$KK{f*924x&-7d-zA+M1x|;L|%gYzc&`YPlLFI~m_2(b!Q=p&%-*kEc z6y`zTpkiqQtti+J^2dSWET9`(ph1OUz!B?HwaSoiJ^=3BbQOTZ3@QW*=c8cH=RxG4 zp3nLZa(M^nj+y3zCZMi%^Pw`(2vGBZ640Tq%?Hy0K|2qi$?qY!u?=2G*d6*N=*7Yy z&}cPiCcPVMMyKx`Sh7qDco7T>$r3(r(+a$1)l2L(5BM(KZr>+qosMEJVt<3qe+3c6 zAR-S$Wc~(ilmJ<4X?;pm1IRs7qT0$%({geK@xW&Z8HXF!qM-2^JL__u=s>n=>1zXfzk z6et0LWkCfrx;FekajajrRx@`v0M1}`)&ap{}jx>KXgy_AsPPtzB@86 zg3br)_T9h?Ia6Z`sF~~I1nN~2P!jWk_2>WpFBpD;`ff8`X8!;G|D`#o<_Ue!%>-Ik z-Yt;U8L0E({*V9vL9xuizuzOR+x5-N?>{d-0G$BMzuybW2Oa0~0aT8D0j0$spzsTN z(eA;=(0oJ&7IUoKt}k9Qce}obk83^>WBukuyB4ISa0Xf*a)gDW@7M&Nm=`G5dZ|R2 zf4i$d0BEzSApdqJIS>n6e}D!!U&z*i>M4P4UmmC!Pd7)mV9*Ow8&KZk0ME8Kro9jY zd4#z;l!t%2Q(C}_PD zbLU0S02pYhr<;YTo2R4G_s1?!de1(@3{nb;eikOM$i+we`%C|H*K%}=h<8Jl^MMs! zWCopX0IIk}1iO8IfX;qz{{H{}i#iZd33A8F>i_@$gTf26+bvuZIlK^!2}t-6;*;85 z*|FjpX#atx3PX7B-U!YA|97r3WnjP<2{S&>*?Q&5|Not>H?I8upRoc|do%R*zPSiG zI?^-<)GFkGiB7dS4?2QW9wK_Yb&4kRBt>0N69jbj<_l#IOYZ;w{|gx;<}oxMU|bBM zkGGbgPPEX0$%K23#$1zUT?`_0UhRjBm{Kc=`LlEAb9ArcZViqA<)zfAO`5* z?G>8;|Gy{)wV8@QL@uO318Vm;Nu_nR?g2?hfX{L41+fFO7<;GA(FA!u31Tj!L6(-* z*;@lrs{`6v&J0R2O`sLC0WYHCplP#26Gykb)ZU;t)tZxNP|VE?Yi8llKSEUDfY{lfBSV5-Oj81f(d!)q&ExN7;s71i1X{7d(H+uQ z(HZ&!oQJYOi&KAeyKo6~f=+M&E#}%EDsu1jK*Km9 z2OltX`+n)32)6A)(2M!z-~(5|MuHBt)C47EDVRp^Shh$2TnEUA51?`hG-m3u668<; z&<4BiUXYDxonW`V@c#4vKWMWN5CBYP^G!+R1 z?W=1#V8FnDWb2DeC$Lrg+gm~QfKDt1=?i?J2r&n=6SA}E6sS3R{x@{|7_@`1(~;%H zzTcocbSbS9oL@jUU4U~8Bqe~E&@9vZQ=m3K%Ldeo&pgDy&%n^z!+K`|Xt6Fo14B0C z@^P>knTJ5DrkFwN<-sAq0n+6AA@d?wQ;X=8kpKU8g4p0J2Q@wOB3RR*fET?GO)rc8 zgH~;UoypjI>OUwLI|FRGeZL%cbomdinK(c-)0edF0KT-&zz9%K`hH344vb3c3}|Nk$JgNQ>QVlRl;0U|boh;^Wb1LzzvaCkuixx^fF zT*Y=*XiS4bKj=kiI~Qn@JBuNU17ukTNKxR6{e2)&9&k|)I+eDC_lwQ{|1Tnb{r?Zn zuMlsDym0^Z|9_TuhGtAZ6KJzwAWP5-mQ8w~wLJkZy1~f{yyEJ``WCPtI2am>%orG6 z@ctq)!XR!q1lq9Q?ZPC$zkfoL83Tj$soI(>CeZL?=807d;H(TPpLc-R;H(TSGP6$z z@^2UM3VLyOGROrG*C;|<0~#2}5`?4#kiOm?R*)IHKy2ickbOw7m&Y;i#Vz4oxyIR5{?3&aL%4t(Jy2Ufq6p8>R&ptr#B|Nj?aKf&`GA9`Ct zK~)TFX$$iq(A5y&8Xi>Wae(@vSqxdsSqxAp4=%W7a_L}H`?l)k7hgT0PD9%7@UOyas#M;{;+H>~*|D6g93=H5D8-OS9f5TwIG-${z`y>PS%DJte5y8FS zwp9stH(2w_N8Ahy;8p|weh-b-lO@{FJgz%)pox&qXv z?w$x*Kp6C5$_h|VPN26H)ba}G?FF@=K%I-mLkk!f7=n6RLFR)rfc5il2e-UH{BFT+ zCJ^0xumYsMy9s1oz>6dEK<25Wb+&@qbo~2!LFTreEKvh5I|naC^hg6~Xg*W{a!z*# zNMGQKIcq@r1hPP9K6gW#Xgfk+O*BpLbmWT(AT=zYuxr`@D#f}xKo%x>TLyi5mcLlTn2Ip)TEgv(Gitov~I6R0KyHQ_;hgx5l8-Qd0fq$>_)^6v+? zXh3OUzekDn#ac~-NVm^~3Q%p+4K^^~g=#A}dv$`juQ$II2KD6xyO|&YFVaAkb@zfS z@9dobYUhW10uS0W?*b32m8gQkwFAWNp14F6wBD@g06!?>v?hR5i-Gh*FT(;0u!01- zLpfmjWzqCE9y-L&z|c802Glj;I^GJRK?9eFrZz{n3s(g^+Fb+$__uqM1$KjVfcoz; zpy&bF1&ZEoCjRXnD&S%Ubj1`XTmvYI>Rxa_1-z);iYKlU*%=tJ*dZb5BoOc-AP^eC zC5Di&4D6l?3e2DvW{{={+&jJ;-BScRKtte84liDQ03G`Y$xhv%@g-2=gD1KdUY|fi z29RMka3=&KWI!DfcmW{=YJ)o|1b~kF^p!Mw>-7Z}fovuIN9tT~VBOuV}`vs(>^-`TmH@I)z?V->;71YV@ zc2eNqFOYqRjoA@&j7WE&LZ=f8s3*1GqoDO{6yWWF3P(Q$_-StPe z2S?zG@BUEFl`3?He&OHm6b5Q4^Y0Ig33_oGCdc2h95f;f?xjVTfsa-A!oS@qA|T7C z+ZWUy12t%aUcBxF=bQkLBfvv!zczr{e*&P}l|WrLaBCc-A8f^T@SMjN{_P$Sfmuc% z%eOay%n5k07-|lvlI#VIQh+*3jfb|_FfatYc=nzfJOBj_X7nQE7YhT!i!1N`|IbL^ z1noQh((U0A_~Nl2%#WPip|kkolk* zuhY@#Mfy8XCFluq-hQWo)&nJi#wWquFfXSU-e5Uh6r&7~j5@s;#V8q&a!_QVH7@wK zvw#M{z68GbWdK?*#qmPu-T(hDc;A5<%CM@%lz%_CdIQaSt1v-kGQjmI|MsRe3=9mQ zPUVNd7dL#MUgdB32ij8uI^Ow1Z_89fE8!vo*uEEX72wDMbpbL!O?i;RG7o{8gT0sy zc}6i%M1qboNRp=zdrJONgN(u4(z^iJ^wHC(~EGEaaS ztG!crK@C?_5m0j#ECOw$LQM_@HBG_h9DK;yJB1h2AO$N!G(%x3L5)wa%Iu3Sy)B}k zCMTGS($GW|0d=XsBE3_3LCr_7$-O!2^Emq^Z*0s+Oo86N4vC6Cp%De1<7Ok!FdeC4{3xdJ;Bf& z!X*H59Z1-v5n2JCWaxI`5a{-D>GbdbwU@wcRQ~;7cY^pXT~LJ=8M;9=HMH#a>4G}! z5<|C-pg>ypgbD*tn_(h|dhzJx|Nk%Ef`}V0L5t8px5+@pQeQyEQX%O8GLNq?$Bp5| z0wJV%d}U$KRu|CFul1W3&x9ZY&S?|W7#J8d=D0C{(pUpO1H+v8ZVaFl*dWco&^zCa z0hB&LbN21?-55YkK@hucz8eE54TExh*?cz!P$vl_o;Tl(0hG=`L&cf%-55aKEf70- zz8eE5j|ea_FhtLHV*q6zkov&+ZVaH_9cT%J+k7_$P>ut!t>?QjfHEUUjSk2?XCU_t zE6jIe0A*eV8wLg;klRB3{|B*IKyC|xsQEF^jRDlBbr5D?cstLH0o3CKb&MX*b7KG% z9UwQ~oae>>>KcPOm1pOC#)=D9I|3N(;-)jT%_&_Dxd_&;l&8w04&V-R3qh@0oe02)64sR@|p#sC_g z0JT?K=D9I|1};Euvz+I~02<2(U}9h}oae@HMDzcDkhtPJHwI8=0mPP==f(i)K!D8Q zp6A8@YI=g~`aRc;0W|UfVt<(H#!wiaRurF6vA0h5s>YL@kOcenYkdhGGyi^rX%bvN=?i`@DfW(5|gtbK>>16Mt&K{!Jr_@ zDK3c51qD+D1BjWIS`IQewV*fvy}0NCEjmjTLB%9^^bNug40>_J6)MT!atu`Zg0`A@q@{KGet6;e6mq&CyeIJ@ z9A;7pA9!E^v@)gBEA6!a#JEt7v~EY9v`(kA7rY=>`*Ngp2bQIEhQ4_5_X*frY26+r z;QhsKLHtk-_@s(g$%|W0Kyx-Ak zmCvA&gBPctfdWLQ)AdJl?GNy*^N*L`L3Tp`n;Of$d#40y5U47h~^niK^M zP;>C__e|?%07-#2&G2sr?c4xe-2qyB{31^qIx&i5_$&qnh8M0NXEK4hp4-7O7Wl&0 z85*D^x}X&>p}W>b>MLam{VE1U4OjxfAQ-vXi+R^fB_b9FPvaT>48=* zyM76HaTP8k4e^u{2Pm!^4}v@RFOJoNOy=lz{Q;>id=|MeyeQ;BsxH3pfF}41tlzxY z#RID=KvPs9iy(U;LFH(|A~%NAoYdUZyb?$e1G;-1v2_QOoI(2`2+d!j%OlNa))2G) z3Q0Xt>$L*AT{)~>d1^qtyH4Lfui3goc{)S?bi4jREb9Wh9Ylcki}3FUB?(_1?t`G+ zA{gtxV6EU?#?Xubx_OD^KXl;m;6sL8X=+(EE&Dm87wNgLlq#qf_dTE48RtF-3UIl2dY2@u7Dpp9qaq&g*(Vx(7r5$c`{)0z}mrQ zG0K3wn8o;FcQeT40-dfeVD7@QAh!9ZL#-~zK*-{K8Sq#yGP@hJiKYN<)a!lVqmuY* zKxTuM)_nk%Hegj+WgtP0fEN>OtwC$mK)W8nHyUNhz3|Hd%YjB5`1gl$v|g$MjohmA z`Y>}6yZ8v63U+0J6oIFBLECZzUR2t`qS64o=NlZT$Z^sE zSAY~Jn?X~X2(#0`eRCdx7qfpOG6~GijKW$5h8Ka5G}Y<)#pSQJ^wm4QRqJ1Jp_e4{X19V*?9JGq9cDqn^;sV#jV)0?4c^Bd8mg zyL}b-w~H_az2JbG8Sx_K*Z=<+X=V%zP}4#Cv>>V;S;K5L$lx-ED#$(o_wtK_a0N)w z_y)WtNk5Ab!&awsaJWJ}3~~*)5Zn#Y04j4KHPxFHZVWGuvw~}?<|ClZi&AXJ_0yLX zko}6F_AtXrHwOQ*)S|SU{Bl^e1TGIT_uGSg2Ocei947#F1vpJY_%FVsfnAr@>H1|S zsO|%|eB^(Es$xirN=Ep02V|<#^}~yQKR_dHKR_hd#57QS1KMr(2imj!16n5p8Y;0q zSZfQ}<|x3w-6!B5XawL7{J4rTxa~jqw}*ZKWy~J|FF@8w3-6B_PrG}iI&1# zYYmQQa3+BU4!EdLgQUGq*B{`uAsPMP!L=WOFKoeK#M9~eEJp^1YG!M7#A}z zym$?X8nD(-fgtda>fqz|nc!NxL1B;#wgME|e=I7G85@5f*xMB_sx)ObG#fk7dRKa7o0=^gG-=GU3K(#VxvmgIw$b-KREk_2tm4t#MK+-Bhj0IL@R7xEmS^C&@;BUsC#evla;v2M`K zeTP#)Tu}V}cmdjvkpa4N032$dx)2&@>ykij4{Ux~x9^X%P96cUjo?*Q5Gx^7;kQ1py`UAy>e$iB#=LpjLYj=R>N! z3b^f{T@|e-OFdsa{S2Bedx3O}3kTT084TAKGrVwzXb5;Q4_sDp1iVN^vJPAuf~*sK zoel0f$ppQ4nh5qFs6h$d$oJxkDJ)>!UsNDl2G08&kb)6x*)8Zq!wW;0Wk0~F6XG|7 zWylpJXtJI$=*4{#m?hyaj6Y*klu%VW;i~k}DoRKoy_f-4!1vK+aJ~fg6QfBfbOgWCIna zUtX`kRwF`NM&KIJ5RzsBUc3M|V|k#7=R@F&<#1zuKtrAZbO;joBrFle7aAYIr84Mv znYn)t_h zgJwKm^FyauTz|Y+1`+_9finnySmSL`sKD*}0`6LXi{TgRz?%4c3zxUMvQg2d=2W8-ILH zKr8AKpq)(3znJ)Yt3h*<3@^OE6$?wJ>m0D^BcR30zDJ;{kMQpgJ<|M(wKjzxv`Hz8 zF^iRdJLru4l2~wl33#CmPRQV~g%{^zz=EKR{Ni&In4Q+?3fr>*KJE{?e*?_!_MH>> zB03+Wj;GUg&g=H(+BpoRyjhGdwt=exkef10z#}Ykf?jL_FXZItbnR%a?O@<+})*@`4AX<7EzLRXX_Yy80JZ zkTyxD>lV-$6Hi(vEV6Wy*Yy*v|O#U%fB z9!ALEP4*!M{_Q@jUjkoPR)Ino+~|3s8x3ZIwh)5O(*kXUYv~nf1lJq~A29H5=V5|q zKlq4&f4ht5mw*?)D#2R7ZOC`b3N75a7BCS*K#cR;+E7v)lu3KJ$a!7`67I+|xf4?9W zpT77Dj(bp|$l?OWdkwf52omUZT@wI~K2J4Je1Zzq1>i$3vgBT{{Q%9If>eRhMDq)| zv`*JGFA9ExtJXEm2l)fRhS`H#JshyrAe}Cv6JA9B{{J81D9{DZ9NnQUy)0ee;_l!> z2LA0L96>KKkR9dP5%A(U#GFpoj$Yq25Tm!KB00)+K|q$=i^A^+NBOR4ekqsM>AQx1 zf9RU#L;OMAAamA(8%7ZK9DK;o>B2kV#c9wW0(hGM*0jRJ-}{9Dx&siLwOx-uR-?Nf z;ot9jr1>W+fA2Z)#_G@$-7Zrn1iX-fUnqfVHI9H6D6DWwcyB-KYl%PftAb)TKym$#_KuXYFNWg(h z(2b#B1<(@oNcKf8=FkTI{jLZ2xAQoG`c!*BCyCt%co6{}UIK;d4*u=FJ3xWDBdFVT zPQZ(KwICxv+3_Xlcnommaw71BxfV3%@wb2~F#heK2ZA6D16|HM6XJ$|7XdJbod|sK zB@AQ|q!5unc9`pt>=Rtf;A30)_lF+f-wwH*d=KdOp&LOj_CUreK{u-KZ+G1R8tvQ> z*d012=mitPZF@nxd|W{XQ_Kl`@kL$tKJIp7SOeWp|8}<vc7WE`rFHh+0og6}71V?5 zo(j^)zrE=XXr0)Lt!l7DZU~-942%J-*5%*s5f=F3BwS9^_)>Q(NMBm#1dzTL=RixH zyM0B{x&_lZr-B0L#qKZv|G&8Q1=Q>W7o8vz!r>-FLG9fSwzv5QV~N{N(D4yzoxKl0 zj;s9ws`93S*cTrKfz~pCtYZZ&oDF!9@CGzh%L8h_fJDgt?tML#hIS0Myd<}L6BqaFvcYw|K$;jXG4m7iS8$7tc0a`Q(@}3lU7MXv0U|7(L z0GI>#TMmQTOI%qD5JQ>|umrp?f*6|x5(PW2`JhDL3mGI)uq&Dm=>)xCLlOl?Nb>=Q zfEOQLfgOfyLP+3?TS%f%6EcEc96=I=notw)VjV;jDTEn7A^iLkC~rXmEv>T=9O{=r zJ^UAM!NU=dh3a7eFY;7i0gvqO2$(2;%Ooby+UHhKN=fT%1?AZnT_7VEUIath?Vx7= z$+S*i@T3{)={>d}x6~T+_JXnksJ{6DE?arP<9Tp4xGbLruB!z=jrg6QN(O9Gz>D+# z;7S8(b6R&V#2vk$eEfn5JdiOJ#D>HQ|Nah;joKH3vbZ40w)v1l&N+qqk6=XPQ;VY<=nDh~pM_xoj z+VGvOGr$YoaQfQ_$>03jTS7q=fmY-F;NL#Q7sLtb2AzLB2i$uS=yaX&dOOJHy`aJ` z@WoX>n9o7{v~F--P3r{v_65gBP;v)54id-w`zM0@rhO;?;kk@}7Xpy{mxbhWXhO{h z?41gA15ZFk3CQO$AfNkz&&yJQn3~oNwl1v`Z1{^wA3(=pgKbUgYz39bFX}&lgTw>e zZDZ+lokDq#ObK|=32s0Nbh=J?y`6u5FUY2g57Roqj2AqhkrPCCfQt4PKi-4G1H``g zAg!|%#CY)-G+KbmJxP>71Qvom&-octyko3Wl*4ZioQnr68 z$j>{#ebYmrjRGLefiM1h!%`85&%b>tNO2IPG0hB)G|-M*kRbndut5PYVjxZP&Q?&x z*4qox7uY=�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 z475h%0Dp@jSPar;2Z;r}Uox}u^GlY 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

tTOAd;h)={4I6pDFST6O1o) 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

(A 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%0AstsC6c5O`M@- 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%0A1RA`R`UPm6BL8+!|M33| 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

%zj^Ua z1ky}Nn*eInDa?vt_yAoyzik%e3{Fscd)=%U22fE2>eDTm6~h23mq6k(X2mdoTn%D( z&5B_F6?UMOY3-~S22fT8u}fwlwRh4JGxOp>w@()v8!;4QmLzAygKjE_Ppg3PGV@YW zD?sgb@D(x@44JtF@df$CV7fRXu^^QJyk4J$5qzHusI9-#5np?W1KeI>fVG$Wm!Y+n z^h%-82@ZWwLIL%JW^@9c)|B3ptn!uBH!Bm8L`=C?^vf zrJzcAHK^!egIlx}<}}RK4^dWZ?M1fY`Vw5NAMojhgc=bUD28=`4MS*fU6PoF&$Ll;b{adfO(vVM$i%oa03T#Bj|xFSWOlq zXx|X1Kn1siUaV9DxfwjNs1nrM3YI_$p%<3Z!1BGlpmGefaoC|7d{`=|Ate*|LTWjr zc@$~^>e$3Agq2Cq#S$-Wxj>_jzvVlqOp03g|No27h43T*Y92ugqV))+$3X>=18DpR zbl~7Igv2_K8Da||Sr1&Dzwm&`mRLZVM^NJ?z{M3{1r4}`)Cww=16~N80Q>7@47`N| z?Z{}r^zpZVCO|>=)IwXnd@z|3Wwh1^sFBog98?Giq;h}Ozsc(DS_42Z@2+oys&0d94GJQ46> z1H_D%pcD2%ttg1P7bl%y4m5-{2+;x)bjb~sZMpalVC}d?`*MX`?s4-1&V=_Pu zY;XhbMQlE}LIn-UfSXgH;81&UEEg{P!YdETz7X^x4k8YXG2Ef?>?k-iK#ieRQ0oKS zP6Bx{@WpAU6sUX!HAayA50zr%-`)!@P_ojyr-F0^y_gD>V&>ltX`*GNclUy%0$)@? zq@bNBND=a4YYy1a&<57`x$p*7#o`!-7w+6h4Xjh#pavGGiDLccMK3p`fdy_~H7tg- zqd?=6VoMP1D4r#Vb`;B!7zR+A5!9you{eeS%|!5G}$d%?uO z0NS4^@%R7#ox89#_`t(`E5PH^bB?!`KpTAElRp(YTS59j<3yl+PAow$EbPG(D=ic5k|9{9$K)w=zFD64YwI1Ma0l5Htr5E{V^0noJ#1_3XeVZtR&;Ejc8oxPxY8D3QXgN(yY z1-UKgg$!JoBxq6w?96}{Wm(|lnAQpAzt#dt^@4m5_#zrbDy=(IBCT^O*knb}4HmBj z)4E+H(mGqgLVO@0SjdD0y;x@l^+kzz7DL9_Gd2t_w2Q!2b+*3w`~UxI(JY1x1_ld; z7b3{QpxY!lx;sE25eRY$*uJ0_2@umj-A!<16c+fx7b?^{b-_RI-GMxyuAfXGctrc) zBld1rj@}-D8K6U=Uu=wFWN1F3kdeR%9x3m3atU~$3kweZ7SM6}-~o8Z9@*X=0Uiy+ z+4{^U0(S~9FfhO+_wX_>fNjY>#DF2Wh80B;boe%s3%h$k2`KPIf){9$o=g@$s5%e` zdJ&)jDwTLZdsCo(hh0u15cI-$mJ&nr5rLPVL>NFv^LKj~1ono`3F>uS0Xkx-dm<>X zK-=W_w|j&I@^6O(S#N6$Xgl$XXZ0Y>GQGVu;E|xvo}k{=43JE3Z^gg={{wrcc7TGf zw{;3gkbk@H9MII<3h)A4s1cVl!SMzviTSrr1*MIk7xo!Yu>%1wf*V0rsK7$-c#CMp ze=w+j!SUz+fAC?!2OlsTZ()Ute*oQS2hL;Qaplk-(5+EFKtsvRKLlz6`S*iv^x@#& z-s05*x<@HvwH5=z3yxx_wI@KsJ}W?~yLqN^FimIR-!9@9^dcf1BER4FM_Ol#?*~vO zECJc|dKUlwsh|)6Z4tf(%2oostrDO%CI5ck72P7eATxqq++YI7LzX~qs{=@~w-=-) zup88u+XI~eY+dp9|NnsA-h{u9D^?p1fl>=70$4#Q0~9BX2SLdouy-m*H~9Kg@W34; zrSflwgf%<@KsJHq4px8;7Ebd4r3?#LV0JcvY7kaq=odqG|b?41ho z64)a=S_}*jkGzp%V1Vq#JR{1$5Y*cW(jCz4%M;iedM2p16_oiv*V=P|^zO zZ3Wo`%8qjavzT5?_6BGRV4M{wpzItaPNa%$n$Yr1vHT#=DZfHGFD!LQAr8<-&t+NZPL=2?lg#qXq575<7 zh#dUl49qJ2mK@L_HB7Lq`C<~xY5XlgOrVQh!L{`__t5-1*b}I-U0c3ienDg`#C9)ytDlP zXaZplXkw?Er8fYaw|D{qU%W|$$nOsY<*m>Y;LDXaK^P_P1!^&l&LfZPJo8uVg8GSqBHz6A-sGzDD}<+NNJG`GpWy$KZB0lmE- zg94!?>WiJ(pp*q_0)r9~DDk^01iUb|fF_9&A?W_pUXb*QY{-> zkR$}UqXt|gyZ(UgJoo`hHO)T-_<^s- zPGUS$AxQ{SJg$;U7^L(9mCTUR3sf|Ni?%hO+60=zK;=5<(x%>CP%#FoJ3+NzP;V=!Y7FS@ z1qBndI%Ifp#tjtb=q2+D)32cZud71qffDuZUQp8p(gevq#L(RXuJHn27@9#-B!3HN zOdNdt*TF|Dy)B|37sC$AVCkL03vxQxnRrTIaEO3n4POZi3Ke(>EC_KrS_%B3>dXKC zFG?YI?kRwZpDxgWEop2F4B&))@F7F@6mXggdchA_)f@n;%;8=OgERyJ!07;zNx_;y zttCj^74YH`WKnLwi=QUYa41#A6;#(?N=j70OJCAD!TI&Yy3dedD0u#w3%XL`wJvCK z8ls{HbXf)?c>b*eloJA9c*TQL6}YAZ=NHgMCD8hGk-!&xFnjo0=74exq?B>833&0v z80tv=mL_Hfh8H0qbD8_(Bxo2+-o3EU|8I z2O{7_!gg?W11kfyN&;Wh!A+J16%}AF1!akW>Jtxzz!&-u4KI#=0^NEBuSq;$y7*f_ zCxSuTnU&QGkjfWnDPiN?y3hMlT zs%ckniQxMKx+3ETC~G$V;;uCWXYgK-GH~+?!UdTG=4Oe*yj!>p?A_P9UTQNjFr;;Z zOWU;0-T+Ybf8`_8OQ3)VdQoZw4gM13Zp!&sa8#yswu1EV?+2IYttU&2(z>UD@@!h? zR2Pt8?H@twWuA1ldVqM9Af9heXRiZ@mkqv_!Z@uP+~kGn2nDHeJp?Ft~9X_F3UflfvDmOxZ zbhm;Wm)6Y_kk;Aj19InKu*_5tn}0vpzuJeO9)GbMB)1)`4qD;5gl-AQ5{Gpx*tdd1 z`epWikm*xFfz^76zYlaYAt-i01#I_JP}rn(vpA)7y7+E+5dyk{f}ejoI5q-bq#D4& zUt||Qco`DdB` zLkwXaDBi^dI%dyR1GLT|_dVz^DbTgl;M9!T$%3hqU9_d=vVYjQ$dx4g&&%ejK9^X^ccv~CyI9?3(67TB-QPzlh!HX@#5Co|NlX^9)e{+ zDWfOo#j{9oU_f01a%d-u*GnhR7&2&T6V%NJcu@#Z)a|R0*2&l#dZrVcq+fKs1x4`z zoLLg2+4@3lB<=w8c#As#b-;2+0odXS>QjTmPyl4}>mL67y&yaI_k&9q%rJcU24p-~ zl7D|INGW<49tT~8f$->!2ykfN3Bze14gAp11vRKaZVGxaAEFWJAZRdxsvBtUkY5*` zHo+?jd^OTQ*II>w^9HEx_ks}=jG&NeJy{nD%AcV>f?jw)jD@=g8nvLVx=MGcN?JFI z8#p`|z#fIf>;BLm-L5*_rJy_mNv4lLS6#fG4sHg4nn}JYY2DxoFRfFA@x>9?#TcOF z+Mo;NA<2c~#p>6fYy--wpj&8i!@)rVNdx@*!TMV-L1#-BfRr-vZ-;gg6?LG#ElGlu z7QP(NVUrhXuz)CW=id+Qhn3oZms>U-1dTidLYtK@_I!dipSxWJ0-y~@m>k1Lket9v z1x5x2a1#l9t0+fr3m2#z2OgEnzR19Q2-1E+NNO-JAWMRWnNEP3BE2nKpq@9ZDFxDr zA_?k@T-WO&x+MTKn3cu&VskNQ zyvHOa1(4+34lHfQv1Uj9jcM2mYf?$yi(upDoiXfblpa{Y# z35p;jNoZjL>U5>Shv+~N1TID(cXDQ*VCW6u-2%FU5HyA)R0N42&};>$Q5Ec7%Kw< ziq479c}URkrmsNYi$Y;gtAqzJ$PK%D8zdRh3UaLg)Lo#CB*YFMh`S)GPiE|iVR)hS ziI*WFDn1Uf{AA51UWUdapaFgBH!t!(@q%yP=9gy>XJBAhum`f{gpYxN!F68@!VSjTqWfYPK%GO-{oaE6Vi-WZSP+|gUkn3ifDFWD-50|E3NaA-|K1n|P!|)#{<$}X z0aWpW?ESbmh5=L!fY>kh#xQ{Tognic?u}sp4W)tDH}}RcfMOA(=EB|>22jrqWX|cm zF$|z_HW2&R-WUc@R}yp!$HBcZ44`f#h`ncT3iT9%qqYzUY|0(^HELp|k-*d3r`kF<3c7 zlOdRG05XNawWx?8DYK;55KI~{fDDY!DJzUGfHN5~^HMUCQyDx{Dhxq{0Rwn?2DE;@ z@r?m9WPawtpa1`Nf({r5uc!aK8gYImxPe6M{LBnhaJt7bKNAPKG@}wklz@nQ&~+Qo zPTpsTCeQ@T2~dX^JgyhY(G8uS`Jx6k6C@3~R2;Mb3^W@g67*shLSsL;;mN@dIS3Ut zTN7#!^kOPZQHc|{*nv%;oP7eS-9Yn;pz)>`d2nUmZV+_X{X_t`(gTeIgXU1cvo+9B zrL`zhX`uDk(0QO@@O=}4$P+jTAR$m!dA~&a4~f*Ke)$8Qrvt58=jaaP z2zv4AiW+D@l7Bx~0cZefCuC*@GV6jm{{0eE8Q~cJ25+B3o5nyI-2`1xj+m(cmA!$z zQ$g_u8_(t6?z;kX0qsjmP{Psyhk5oX*of;cP$LvJ4yE=G)ayr#x4sYs->0#N6EgV% zO*b19!Px>-Msz^D1ep@)?F9uYWIibeypd0!7iB&PUjOn0^!lEGjSus02X__%dV4{Y zLSXMyP`M9DZdpt(j3KUu<}aA55d&kz;M*t|KrRF|i9wMQ@PZHFLIqX^2GG0$s1gGW zDj+5uPCmyS=xgObnGXM?17yV57ctNa>Rm(ACAgx0@!cDoMxaR&bJC$4l7>Jz1*8|$ zOa(jhMIKZmG_8UvT9^V58|054-L5>4ggp^eF{lOwj~KtGxDPtt8bsvX|NlRW4OAp< zhmIb`$V1~0GT#K5R(){|CJLT!0!>CkmFvPJO2G3?Q03R*qR{y!uny2%M&OItK48B? zh9^NnFHV9kmjJn8KiJULlcl1&!1GP69BG{sz)F^Zl)N}_@BjZ7yYGQ^LEABanxnAp zOt=En(fln5pguDw!a*fkzzbQJOZZ#dKzB6k?*%OjXg$f_Y7Sa8g@2+YAPAH(&?j0> z$w4hcn`mJIxe?wa!#dIO-xKV2P`pBOCiaPza#fJUcqdw>fG*0wI?*xUxZDLzPNt}G*SSb zRlqq^ep?n6{8`|xG@coS-d0eiAUJIc${3&u3_NXn#{}#$aAAm;wteAx=l}l~4shr3 zx8j~OxK#oUGf1ZwbXYiSK12~xC*qwnmtS6ku<{Y4d}QI@4z9uiUTl|!I<|y= zCntFH)OXH{Pq#qzHNL5}li(ve(56R0bt`;o?VKCfSvaTG{2=KQT96`2+!wA;jnIi$ zP&xor{Gk3Mhz%Z_2}nt=Yfk`dO$)3l2i1)Mz2H$y*s>PT zf=|~K$TPfcuF!A&kiQFEZB1fcnpLTb1GNd5vvFy`FoR;cC|cO+m51$E|c%XPF&ycl%3 z#cN|k17{NGZVHr{zW`^jix8Rk1?c{Y2`@SjDm_F3UvR>#En9q<+C&^bZqcqAjld7#Xk zCDuI^v?eU*h0knog9>So)(UP1cuo*J=M|VG1{y|jQV4h<4bkvo^R@r~U#zPbXkrU8F~}1DX^eqQ0=LJq#9@Apm<9GTd}0vXmxaxB?FQY9!Nk8E z+MUo5gGLEtVi4LR-sT97X{a9l{oo}Xtp`es(z?MVL0V@oXyWcg-c`_jEKi^_1qmRY zYfmS5?(Id;RZy*9oYoEQ&B1iofYiX}7W6^n<`M4wC%Pf3C$= zeIPkJ6K(HifI}KOG1v>97(5A^7{oqfWPJrZJ+mD=;TQ12M+6rBB0C`ygJ73H?zaF< z41yh!)(M#|{C63=cLO@}2b)~va6pNz?O?T_jj2EQxBIwm2}Gm}JBWKh0qpuC;6=SX zR3mI+&=@o^xbyP=|1Y+H?xX-E6Hq%h@P#SNnfxs?v5elBiNbtQ#}8`)m!eD*x`14c zYb_OM_5uGyA?syO%MJTP;Y-kk5||T(O~Oz&p-&X<1l?Z&8pQ?oSzlDyfdiqN@`=KP zOCU#Lk9HTZ95ihrPZVl{T~BbLkOizCJR$;}TtJ`XdUO%g=z>i#y!dPj_7;3n2|R6t zGEuk@qyaI>72?|y^kOeW7ygMt4~QbjBoShwF!3U&K}N|$q5MVM0muxNLkd8oiNfcg zJ0u8C6dt$$G9Em_k7J^69_Zo-#6;nG8$w~23(|lH!zsR?A+4YnWe|-xCkmelz|$rv z6NT~+W8ra%YohS_d5}lJF%D{IqD>U;1YIhDbE0ted8BilKw~tpiNdDyp!5aGs-THN z7i)0PK+*uHt@Q8zfA~aUIp`9OB9MASPx&)H)XSK&g+E}SL2$OP?;50QAOIP|1P@w3 zdy6kFT>;4nyp#s@&_PSO`L}}y)B;~rz^vwP0bPCqUF*jb@FE^2QBn>bXDfuJd(ez8 zXx=U;ixV^_1etmVSJ&AW84#0p3@_xOKn+6~&@e7&atzd>4d@09p1MLD1CoGE3&9up z3Ix75#sjW5UKc?Z27vkvAPYg=#1(-cJHa^}%RCh0i&c>@JHazcpfG?;?OePJ4gg%! zM?nxfUxEfEUR*tk(y$5RLyH_lqb3?2M(&8B9W<32itreyfgkYVBiPUIDKBvA7}{ih zVG42EOVHK~Xs!SSGHC7%+Bg>A-wtjlKspN9hZuT&Shoa%CPT9rUTlki_!*QnAtP-| zcwsIE&As`;=F33pUu3`?0-jTb4h{+gy;y$<9731L1{!FIfu0+9kqaKI)& z5gNt7+ZG{Xs+f(Nou05J2nkWBumEmurxzHz@`N28kPpdAF}O5%X>zZX)L0Ufx8^yFIvx zn0LE+6EW|0{w8AH?c`0wyxY;6hiI{g=c@r`3w(urm z-fiYh#Jt-?kX`>EbAO#T5%X>hHxcu0)i)9IZe<|9{QdtQG}l&m6EW|Wa}zP|mI6}$ z=l_4uJYC$)7zR-94beqqRC&8>_tgV5k9HRHiPU)TI5AiTGB z!%h*L8>xQ0_<9m_zE4`G?}rz!PX7P@g7wt@|0o-AmT*J!N2x@{H8#j-W}r*ZiyoMG z2_JaQZ^w&O;5#Y=L1S>;fevY%p*vno2MN8{2)bT^m4CbIj(``YTu|dm#QFF8sjxC<}keA-YN{5 z?m)~sy*OzOs+vHDVSRaV_XMaW4E+)W%GjX0yaWPYoOFcbPf)+K@lXP2nLel!59(EJ z4`c~?vGU5x|IJ4Pz^?f5q8oH026&4TbSBLU9uy)wWWkbc~s3Q0Q9!&*} z^>({*1iYAc9JG&Ihkw8Cmq1WmDgYjCdBJW6j=>lFV6T8p4zvq;F#+xyWzg8jeh-`0 zlcf?MeH@L4ez7nxKy-Va0~g*94?`oh6z&n$myImo9bx?2J(57H-1)aRRTzLgn+P{P z0$Rsb>BF}1fK7k#{w&yJP+H?)jRJ)bDCHgmNd~^S1eXNWoU=dy(e28?3X%+Xu@xc- znw{zn5J7)V84SeLF7O7|Njdv5W#xv|9|j#Ly*8o z3VPAZ28%+63t_#z6fP#iob*A1Q)0Y_Xv=zfaVSy27H zM*?5u!u5w_F@pyrooWJJh{KF1)r4*r3aklw;Rsi&kp(SA-ob@L!RZA&l+*>bOBrMr zIGr8@DdZLl zct4mx;EQb#MHoqS9z>jfyYB{27TE&o)N3>!V1-x=n(YUr(C(%ipacrCVtZg1C>!kv z==K!>w>m&h1=|C@n+@#irVF4Qv7oj~phD1#)5@SBNs||cLHAEELlT@_;0qTPSVHjz z?WW{_4B+X(MNOeu0AzMxcc@6vi%+M(0l>fC^$X-+#YRZN2TO+9fK%;@SdcBCdkPf- zUOZ%mTEXA47&M*B$iE$w9<303xE3Z^;*Q~fLVOOmVhwfxDBwjPO>`%S z@~nTLPzN3HCIAgIj>bbEUx7A^fXjdvEB=EH5|DWfItNXlI~1?l8i-m*;Q}p9J>a3H z35la5@CnV(ybs!Q^5QC_L<8rCrZ{kwbT*(@)Z|eN!;8){;8r4JeHPDIUWVo)0oHF` zTsi}3A*O-PFtm9DX%~X(29HNE3~8y!@j1n5kn?y7Am{N+09~IOgS%A$9-jH~V&=jB z|6fc25$g}4wJQ8z!H?FeFoTJg2!gV3>kQC}`@n;s+DQc7u$T%KwFZg42tD}!Kd4Xu zs|j3E54i5hPfjO<0O02;ZKct;8 z5z@{8cb$-hAx({`An(7}bKw8~7u&(tNyvf>1o!Pg9`6N9&jm@(07-+}Dxfw8I5C4x z#1#m7(Ps%sMWF5_E2!lFt*&4fa`J;45G&4t8W18N<6VEe@HzksL}*>Z$prH(QUgK- zWarEE3=9k}EDwO%EMWJvo-9>_b`h~OBR+txqe#;kh9vx^CAE=QLkj2pJyC<-B>JrdCLH_NoUqI7r(6$CRQGv=ywC2Y7 z8=zX(08})>x^q-7TP)pMI5~M0#W5dAkf(7J7{{6mt znqM-eb^0Cw)sdk`(wbi}rgerM;ot9ir1d~eQih}%14D*y4XBRvJp$@sgS`)p?+%bj zfiEJpLA4y8cfwaA72Hk)0x(gDEt{kA-V_(?A zJeZ%#S6YR+B3SE282AHGKkK>^cGt8&E0C(Rc`2 zaY6&{#ay@~s4oqwfyfnP1E8s+BcK}!bi(gAKw zoh&hcCLL&{EfDY`9ij@_LI5W-P?zF`KSZ2=dn>502dzs4PXX}n57lTs#0s*$y93me z0;Mtj?U0p=pqvVB;6O?Oj>dx^dq66n>o&oGFcH+I0viC@S6HqDYEv1!$Oqko0c|GR z1-$t13zm%hVLdyWpcl8`qLz?i17tq9De_|eL2xLbRz)1h?W(^5KLQ%4>aIF4gq`pg&5Q!@cjeOAO{6) zP`9f{z>5-yLqIwq4bK;k4uBmGZeO{A&ifSrn+0!>g2OE^Dd@$@ACTsiW)=e|0PrcT zgD6EQgkHhjtp)au6DZ>&`d#3NXR`nY6C}$Znpaa^gVw(vMrvNIJq#Ly1GSf|-@GU| z3~6D320G@vj$yd)A2Qx_{dEk(9_YIEQ?FwfKxHiGK;#3jV;Bk&ixP9=a|)6f^77*m z99VM7qm2BrvbM1*zr~u=n*-f%H35a;Ki07@TgnGh}ho(EeQnDI#~o? zJlKxdZOR-9>MM%`^!i=_rPZJ;#up!RK&etBOOAiLt3<$yOW)xp1~W1+fZ9O5;EhVC zoA^NIhIsJr2Q4=g@$HD5&H(CzfF~BOKxUvpMJH&TYm+jlh=5cp+w>r8@bVZJ-Qdo zu-?H3%*?JLusz+(y;FEWx*_A^2Olu^`mnYHzL4hci=8S_67?@oly^h|{E1=Q?w9mu~eEb49 znn0VQwZFlmi5C=2xEDOt>Lc6)atk;&fX+*Qp@`zXmKWQ%g50+UM{IZ&Q6)B*P>dla zHVhzf(c=mVerQ~P1NgcEiU+Q|_y)d?VmGMDn+iIQ@5NJ)0KS-xhM4W+ik526z>Ef+ zzu^+P=EdwSpw>6&1P&k9HGwbwfaO_0jU~{@7N8{iV#OA4GXu0=0CbMs1keg}&^bUa z^bJ7nWC1Ok03U4X1I@%Q+`!Jm9d-P@p!I(I+ouNn|NkGJ!PW%6*bBCv0~E1oognA^ z+5G>1FSv97wP$~T_IIucf(n2VGicMG2tW9k{Eem{*YF@G)-?eys-cNt`-#BrsUQai zy;xxZQYg^b3gW(u1y#zRi58Gs0$x}{TmbbGXhSo|t1zv$Iv}ka5Um*)~ zv;5*O=+21OX5cb0`$R(HL9iy@mKRSp{{IhE8QSpT8tB>y(9XHEPVnlQ7e_(*vcNm7 z>RAv9QB~J zk=?#6-~)8)Wx+yeovomt;olCX0-&-`H#30GtYqN|cu{BwRvqwy!wbylbiL8-+tPfH zsnfRwJQA7K8Ttj}GS@HA_UsqXKrpyH3)%_9zd!T~BtStI&$oaMuzvAZ25c0}1^a!! zz*b@MZ|?;;D)7ZER3+P|f`o&*U0XnBdPB?<057O|aRHp2IRaj!LzX-Tbc2q_-=zY! z0_0lPmgWOYovtk}BmRTNB<=))6=Z&d#jRww>y1v=J1^WffR3>PoxmfFD zyMiwN0_`mX?W_yx1)sMU0NQ5*u6SLyfTo#01irYC&Imfd4Rqpsx2p{Juv5^c4*vbF zADRyofc8azvU)H0#EKx$+RzvO^1wPk*;xeS7LW^jS-?(%v{-$&f^xS2=xQL)0o$73 zQT!9d;Mwjh$jxuiJK>%LfKKz~2z;>$D$4~_CRDI1%=Dk7={;BJCO>C zzdJz%1t>pSzj<+BC#0YNl@mT+A#!dcWWPuNL@|r&9k=NW+86k@_XK))L0UGT z+fzbcgiU7%c+n;avt-WeSkPIv{QE_GAApQ!nYsjIyz7@2lfcIN@*I4~hQ)XdcbM@E zK}g11goBJ%M;On)-*-Xl$vTbR(3YT#9o(QjF`%@@zuk8Mv^xN50DTF35ey!ORsdD$ z*cL$Y?+;yKeTu*LKlm&!P_8)mfVJ0$bxk1X{=gTdTR`cK2VCyX0Ocs(8PNHI8T|W0 zXYlWLU0{8oRuj}L0(pji{VD$at}~cVfF!$J71FwWd|SYWJQ5^K5cq7;`pzVRk9)0l|wj>9>$w~!P<1O$WGstu*I7CsS z2Gk5U>IG+mfGp5_%M8%46=>;2(2Mur)&&nJ;6VpifdpUtUiJU~gx5R4g$3xI$n8C> zAo0Ln@L2^xS&ZPk1wITwhJQP#o>>VsW%~*E+7f=4t`|8H;G6(z-@Uj1VRyEIicN6O zDy`EMhm+$#DFC!_3e|FuDEPKG(7{{=FpI$lb0PWbyExR+0|DK=Aj<+@w1Be=55(@* zy`VC^8|;qGmZ=4xvrdIU{(kxN&;S3ukcy0dd+3s&-d2!gz>BN5L9xRFt?sh~K;sJ* zfiLPdfQ1R9<`n+@;8p@Cukx=y2ui!mhd_be9jX92(WC`@`b5)8P;uisqdW9VH%nKi z>xUNwD?!P=+t&hA70du#c!!eQK@u-))`MIi@VW&wVqg&jwFxOfc86L7y%2+_0(Jjw z0-#L~P#Om3l$j7u!1i)7`@)+{NautyhZ?{YTnyR;YWsi=5_N^|0b)J`DjF9+FGYc@ z^M|x?dZ+Y)G7-#ey*;gsz+{fwWse4qo;rh5=+EXn*>WKQRoT zh6$)Xn)?T`CI_T``X9uaoJoHWYjXPk#4vyy2~yJmG6%ZerXFMtlwJBKh9TtN|NkH} zbN(Q;h2fPQq*6;wOkv1LEQwDp1J!dWnQ3VZg{6skB@90CX(hP@45`q~=Ed=8nMK7V zVSx|(D-2ti=5AtuH;uPQx8Os3eW^_FeHk~2xMZOTs z?m4e5UQ7fV1g%(k0zfw-^6zH}1)BgmDHS{e?F-Tw^uiRO^Cf6|JIuM@I#r|>T&IS9 zfjL(l=G;=@EFSPRAuq1Lgi1VLNI)#+IrxYTix0pxFW3hTzDPb02nYFKtsue&&M(d{ z1!YgAL3b#me+Ukd?IOM)jX^I;AR0lf`4>AN?6gkTIiMnesOq~#4K!## zu=@Uuz53p^22@H=q58fHx;cW>>U#y~q6!kL@03*_7vrtIAA3Gi?C`a=;ybNYMz&%3x)X;s;zE_x6IS?!Xs2LqS!y3aIK1 z1y|QDqHDm$fJ)3Mydbr3lRyom7duvh-3qC?5n5gtoCk@6cYlLxvF=b6RE_cwAK3mXhd`5L zphn;f&}e2HsA_{ZGGI*)Mv!QCD5%Zg74V`IW-%zEht2?v34)v&@WKXWDQNfvRCNcv zI0?2Jsp@w90jbqHd%(5xiwMw-8!umis%}VUlYhJGl7L=t?GgAw3bI-ix#|wp33_pO z1vqjDv}jYHbrJqX?QzI$5;MA8zjX6V04*Ba3c4Ud0Cc?oq{X7ZzhA`h;3Jl9*AJlk za6u9;8kd7y0I9lNbpoI^Atf@sTXI7g`Y(u z#1acXi-w;i7GD2yfXso`x&N7C89@F6)#+cEW8wAh8|GLB|FYDgw4D5MaIFjOY=T*! zjwWUGuK+W6eCh+}xR)c?`k$aw)e5@0;CL&`U&v*Z$6NpWfw1`Z`w9eR3G{~E0N;D~ zVx|Om@&qOfNy6YspL$f8(2k&PSBZcZ84%%K$g%9ujg9Qg(96wURK|j;3La4T1+s{d ze|xAx(2L9W!BuzwcwwMQz>C9Bes8Y@coZV^2B`cr0Br{cALU~F4`hnMi`Vo1|9`9GKS4GS%b36b8^SJD?5#6G-A^ z8^}kXl~N{wFBaSb2U+WZ5<{rvAQ#@6`~Uwg(8i6l&QP8gXXZk;bHI$*4Z0iSwG+q# zz7~NmV&G=zL(M3j&hTOy$P7?35o|^W$P7>hftgVbGUIrw4){F!|Mf4@=R#H^_kwN} zdl3oZT}tbm$^p8v!5gF&oZeJGgXKbL-Mt_Nq<0Qx^6#Gt5&<0)_y7NY>kIt78$hiD zh8GXO-6WRIR?uB1p!q5AZF#SS(jZsJLCSUT9Yp;5!MB7o{}ABs{Q)_L0dz?RsE`LW zqCsU1$T9r;!6q;t?4Alr_WavfoC3ge^e>KbKE>BqB)DH8*E6x3sn)2Fh{@(AFw}Cg>45|g8 zhJqwE1id%}*QNv21~w10C2(Efix#N1{a~+v<`y=*STGy3yATqTAY~gsg)$@@T|#dJ zyjTFylh)bF^B2?&1r->9prO90Ab!vb2k`JOs1pj}_ks%)&?GyE2Ra5CLfjcLOq4ep7J$-_*&cO$;gn=cADzSlG2b#`#p$18=kW>Z_ zGH4P7oAi(cDvULiigAL>!bqj{f*@gzfEUZa=EEEVNu`Tsg6=n;i7S-`-^7+zrP__n7EJFvBt;7RqLx9GbWq4v4KnWVe7UPL!0PRj^ zU}9k4VF>S9Ody=7AOm}feoqppCteeJ*X&B?cazZ0jvD8A)=u6 zpg!ob2fT8B2IZqx?vT5@UPOL_)a-)O|NnoXGaZ!RLJdGQy9hYvxSD`! zc90iAoBBaD`wWO_tp`eCK^14`RM5qf&3i#4V~GWX0j}afBA^=B;0KikRB8`^90RQ|L4_?SxRBZdTNyxBaexckolIbM zC-`O?XsHTX`2lVZK#T!bqM(u%Vhp%F0PcssSi=m`%mdL3Y7c;f173*ofP^^$Uf6); zQA=8jDgXb!FrETR_+W$4+5;~y!=f2mdtmi{anOoe%#wB!TpPBMwgjpTxul&i8B*s# zngBko=s>g$E8&d*A}3#>LtmD47Ha8&Ld1 z+5;fgi&&5_joJf{v;}Xn3jKpd^ohV1VvyttNoD9s6tg`5F$pP^vN3{V3Zfs8O7p?Z z1df0g)4=AVrqW3h|Nno{I}ukZb-su%m9qYYIvzAN0&X@zTdh2BZP-%jxjztX$f@+z z1W-8$Y7c-`Xd*WU0`wp?7iw$Z6gyZHc7Gr!bYQIk`B0?Rz!u?Hh8MiEky-;2W`kM- zpqj_}&5PjKkk$adJOgNsd5rotF4!o`g zc3=Q_xrr9EdUCzdjeR}J&2zB0g{?=~-uwT5S~qk(%Bo&a{-MTtl!l++;0DcIf|}}E zUigEIe!T&dFMA>LoJfmFKs(fWL$`oNbv^{VXmJM(?#Y05Z9D-De1B*>1UhI2bgv$0 z&0R0}bfm!E(4L?dC;dQ5LHjygLCYO{KOB6>(ktQ%S|0;hi+o}dc;FJ$Gxhxtn57Bc zQRy5A&f8i1h=Jq~-X}p>THqxrs!&-j@DTLDhYbANk!0B+vXEZF8Sz+#7hk6#l?xTq zLFED{6I#D{VLcsQE`ZjdToI3Dc=G@Me^41=BoPZfCmYlU(3gk>pN9=%YfHq!*P+Ns z#DZ68fyx2_iCFM}Ab4mHyz~S#Q3o0x1aq*iLkaDEgLnVfZAcM zdtNN>2A$jjT5<;7KM;BZGPDBOR{|O`*9L7QfUTr@@!~ruo*}DXw}UoIPVa^;h;-fa z`T+lS(3VRT@K^z86ZQe9l`k9#*;32D-S+?}@)0`}_JXYft$#cMN>Vpo{OJN+MY9Do z-*E&~W!wnrb=?vGUio+gzTkB`xOD|-BkT`70&1+?2zb%>1LSOQo31vTN;b`Mx>D6EJ&!@nK6WcNiNWWjT%>xJ&n3qjqkX98Z# zI}OWfg0M-56E8fwKxHHkcoyZv3u_RMf4l1mNNN(1ie-4QdK9unNIC+g5fdq-`T}&=czi*Axe=mQ2(BM`AnTDzK>fjFoc+NqAZd_YX`SGc zIF7f1#@#_{lfXl`pd&fJGf&fB#WVU>K@R-nHP=_i7bW};o#V3=>!j;f$~i2hJXM6g9dtf zK@8|vCWy(ue=3A>l>rT8HZw3V^!9>+F))iAD%b5Q0bX7R=Yl4n0|H+pfyZ1p0$zB6 z( z3M4R-e}5}Tgnz%U2xxWcJvPv0H?Rz7&nM4>&R$SDe{s3(|Nri(AZ91{D9aaz+7PL* zdkQZoWp++|^A9R`@B!p{Ht-E=;Pl%T@$UzxfByZw zpojpi=iSfa1&WI^%nS^mVh(&ID@Z5!B2#Ee0o~NVzaM-jApibQ8S7KEexPC-tfU(p zXW$L}{QDsyz7k;Wi_@Q=rS^e<7wbPl*bq}dOTs`SIxk+dfC|`&$V7pdKsu}gQUe?7O&1$P@;Tc401F$m_d05WIK4PDm0iuV*LAIxeJst zK;fItgt!J7p6Nnm_}8C;rm$Wf4`{Bv()|BFo&W(QI{xhzf*N@H!CM<)27}Aa zPM!%bRyQH82Y?z1Dr&&%;=t*h`C#`HaLJI?4JrLQd7NIPHi2p(u!(8i;AjJ_dH~fU zFT6lfpczR1?NdQjY|smhLvR;Cw&C$_Zw1K&ymCJKyd_-Mr-M*kB?i6V z88OgM3aIjhoc?<75d%CEPlv3Ah35L#dcBYd4p=n+D@?k3SV3h(;EU;-!I>Va{$=6c z|NmdI{(&q|2VZRbqO}oJ2^>i41p5t?TERs=G_OEXD>$N{2kU_Kx@z;bp|+AL907qHOmxVP*{TU5&!y&@WdVv_@br*>~#L^ zp)x_;t)O%Vuip6ggWV3TFPK5Lf(m{9{h+1m5O;uY>+Tf^glT=DyB}m6=qxf&(FPA$ z{{5|>koDJfa@2K!WXyNK}PcMZwK{OwnMHe zc)|Jx7SSMcU#|TJ>X3me>9o$NpzQuaxB=8H`}+fwu3!x$5&rcD13;^Ez_vrq{sws| z@I@)a5=fgeMR zNX=iBSO$<2L3+QcK-Nfr#NVhOwOcd6ch?kyHczJJl@xK2gsx0y?a6B>`v;ncN^%Qw%Z6@9^C;-Wnr3il zAY~{}y9io|_Sb+)Jqnw?w;(ov8WH%LzKUSmNND;#!O`@+QH|F0JzkASkfbzy`>Ua; z5Tof^ifSS_%)rfgSU}=v`r4wH2r8~&OsVt^!pt zkTef+E@snrVIw#xfZJrCW-h3fBf9B(iL|C~NEREcp^Lle8vq#@40!PzlEMRCoO=OE z#-MR{P{R}60DfKxY5;fRY43rGLP&e>^>dIB9FV5z4#+woaElw{U8*&Jw}Kstw*hPf zax^%wK`jH2?cfFkwHm;eD~N0W-+BfO5Kv2%S^)w|+2H;QtN>a94t6XJVD1lK>){RH z*N~P0z6P)bLfJ-2jKpVjNu?#PQ>X912 zSL=})z%%M04PbElS0AbUYk<`LH9%_r8X&cQ4UpQu21xB+1Elt^0aE){AF2JTkJSFv zr&;^A`Hf5%_=3ky*C(B>FFIY{bh>`%bp6ul`lHkJ4`}$(_0MZ={{6mxnh!Fib^89{ z-yix1e8OT6GXn$obWw1}CiG8QcT3=p@aYWT!$zBm|Nq|!YU+c=QBmZ+yhsDdftE9Y z?&A&R0i6NZ%hQCYk9Zg%T`BOEEDrD-3wRqai$K5&ulvxH;Q9pCXkZRiK+MvJaDk?X zo`Ci&KM8zc10Gr72zYTBypWQk)AhwJu*HWMm|a0T1;6x)bbvJbH~s{5w)lH385tOGxE&P! z+eNtGy-a3b4zRmGUE=LLjDasi5pIX|m6=@?Py&{JyYCawzLO_GFW6yjpT`BBIP7$N zvjZGxCm5K0L3=d5^s-C@Yla05B0wM(!vf^RoV)NqLys+3fP=$}f4l3GfERtRhKnl1 z;(%`7H-RrIo`TKjbbZqu`XZ>?^-aJF(@n6loev(6f`y<{-9q04fkQgE5Io1!>H6X& zsDBJjiQv=*+PL!vGMmZc^x{sz|Nr3g?!ZY+1eD6tx}2VBu^MCmIB;Mo>H{oAWuIW!0oHJUf!S4te}CzpUX~5}Kr<%U-x$)m zdAQO#c?@1e;Whv?$P6~%Bm=WA!~mX+U;_?5V@T^3VM^;1F?=Ce04n%m{`~(R*L+0A z`pt_MRgm%u)XfFY@0o=6)}GnPiJ&hGlu3nRmJ6BHt$${N_ zk%2i>2DI%LmaAduVJE0x4-P>1U7O4oQL^8QRgf$K-opbn43y|(K$FCALm~;o8hF|UyBQ>{0?s=JA2BeWLUJ=> z;EQjN6iSAhL1+400B5D_gOKv)#Y%)>FL;sMeDER2&Abm@XyhR`Ree|=K*}tTyFxj@ z4ukt&7D<0L#Lrh=yvT*F=>z9LZ2G|xJWPQv?%o848MrVx_y}ab=#>{MK>9&R9^`n` zLKJ2(!WALBSAt$lgBX+6>3RlSQh+sL6hCJ`#m||b7afpM&43s3&;?blFTlkQSQqv( z8x*JDH0C0DCE$fR!a8uFbMPSpGiFH*vrZCb-3G{_V@OHO3~6w5B9+t|a)>OcRbeGH zI7+ZrZy*%d{cA_zMO3%pF>O3({7gmvig0ZaA#+g)MS{df&_T)>Ndh;;$op>Kj-Jc882pi2sXv`86JPwyf+l}( zVh!Pa5QLh#kjrm=P_6o+{TkRFgjt~C=ua;XbPDMb1Nb<#i7<1)xd)uBz?tL`12edZ z^8vjue4&rmTyTD45qx2p1uEYIe}V4p1s(D$U=_>oVo3?Owc32d#QM#P?8T~4o3IlQTH*8V!;j7><0X6kt>#8@vg}#7h^+G>@4%Tq}0GZEo{lLH9_XGGap2ge@ z46r&EB$(Dc#RJl841M#$JM;g4aGUbt12nlOFZ44(okr046l~xM)%Ojoss#r*4-;rH z$d7JUjb5G$;A{k{)K9<)FaGT;f&nkQAAsErTB!?4D+eF3L8_`Zu-E}-N*+esM!^)k zV1OBQA?QWQ6|k|8k{nXdZg^3jL85y>SpltTnGH$DpsEE_p&opI?sae~1~q#3gKnGF z=oL8#&(dfWO8~;C7h5hP+zYK(HoQ2Wj#{yR7Vw5Dbh~o&@=O4SBHZgoA=)8=r$F@r z?~)f2VA{c@j*I99(5f2+&`skkUEqL$l`SvYAlhMqX`L>-OI`$~gF-9x%fUw+kPPz# zJxUQBN?Wb%#Dk z>kQ$&@q!^0TvLF8{wSmy0!olS4nAaK_65}jZ@?9W6r`~LZYY56{&f-E^Ws_xY89~o zw9oy^!3P|WKH~#eu>;F{FH$dn!vJPTuaD>yNMeQ74W%#xp$Q6{vk)o$0W77%($WhN z90tNF1r?Bipx!me!2P}-P|8qtm}K?|X8!%5ACUUxPhPxA24yqQnLljcPDSV&^pp=O zXS#jiB?+jXi`GVGyAAd($%PWaD0s;2hGYuR{(~3t=fTE;iv?(Fb;AoQuzN`;^syA8 zVK7TBfFkk-C50$A!l)Pd=Me6N7ouHB#1^6r5bcnJ0xLwlVcNk-0be2N2+EvW5F zUhpJ=VwZ%X;`dpwAFz~bSc-~wkVbL9i&n@~1F3~*A5P1_zC|rW8)247KrDk4qS=r} z267=Pkw}w5^x+v2LgosjEfDY`8?vaG)Izibr)5||CLLzkKk&pW2c!@Ugfu~r3sJs> zn1$%8c;rIVCIPb$J@|kjt=soOTBi@|jTgJ)!G$QOz-@r^8bIeFL9!5N5adm_NJr3% ztB|S~T>gPBDt6)B^I~E=mW+U<%!8$~7Ye7r0S<1t9el)qQHUDELrY~)nYZ1Cm0%%y z{uJ0in5%k2c&8w83k%na`*Db^ZZBS3jQjr|)^zIjVci4iRc9Y!0CQd_Er5k3WNGe; z7YpLR>CW}V!3V6MwkoI*a_|u=bEp9S{!&n(3vJc16ul^o17%C!7jPw@KFtTvF>*J+ zotjXveCP}Q{jLh&(g_r_AG$-P?&%cic;OC~b$!w6(+aIt4lzJXf;3)BKlF-h0*?!U z2bNeE(>hs74>^%?VDV8i)EPdA9Byz8Mj!5q@qC3u~DGT31&AXsmLX>7~FA5Dss+GNrm=X!2K1A z@ZQ=JJNXdZ6>uj-Cg6qKNpJ#4>va7CUfnMf_<|cQ^aIpy0qr)efFzR{2OqF9yMh8< zrB~zxs1i);=5b2v^!@T;TMQ@@@NWH`3b=w^e1fz&$#65G!p^?H0O_SIg&B4t@C7Ht&9EQ@joaOMp%M)( z3&0JD5Z*hWie0ALm!nst5uDh;;v!r@FQg#a!M=fd`NE5*QBdvBqT~*!yC;Lx(}Bg+ zi`&N#AqK5wFT7Y51qw0H(Mar&t_r+w4-0j$Yrz~J)(e3zrb0{s-6sKB%-Zd$gQcr- z0@PJG5%8h|(!>aOArG0n=yU~j1%4cS$PVeMd_ZrofjtcM$%Vid8aOS3`HFwL?+H*> z*^+{T{?}xNb-#0HdMS@Ga&<~KV$_H>)WU7yX!_$%C}j175H~9NX#o0&++uks-r}(=sd}!w9o%26R>eJQMI5 zQc-uhzUcOS5(t`*c(Gz8tY+X#>vsK+*6I4@MN0&@mVFV}4VnzP76GkgpMbk6pb4IX z4_F~N4Rj@L_Y`OeBKX2P0+h5|Rl0ozdPNRGN+I7j;7Y&1<5sJY-ka1p%&?IuA36{COfq8w(fuMASrBm^4} zgY{7w!a=1bI6b*Sx-*@wPr6;7Kqg(U_{1{2xSI&BSelPmSigB;kOZksKpnX|KCujU zp!LK*pIGo+3ZVMqix2)WEO33002;qquu}q2At1)Dz*8SzKqFJWU!YSTUqGiggU%K8 z$zlXWO}8%(XhHCc36SncKo%o(fRUNm7qqqL3%K7{1eJYp6H^bzDv?NeHXmA z9}2qPG4%ic3DDcK5GU!r0Nn@k1C+U1Pu4_3M#@;3LnS~541z?vOGVPUMV!()Mf_gO z2n8ou(6O=1t_q+d072@zOJ&l!Sv=A@S;AhFfmMLcng@w_feveYkp!~$^+eE$9_;r> zu+*yY@AqBO9V*bvatdT8#8eT8sV-q0FXX{S90eVZ21!#U{;>=%I^)4<3ffrVP5?Dl z60G06xEK#fUXc6G{2^@;&l!P z1Os0D+zW9oC^Z~>$j}?Y3yCGL(^H#S51}aG8QI9OivcN2@zjrq|`v4{$m~#4SXH zK){O(nBm~V7!h8CC1c!1z>|k6%!mU4FFN-?!W-m1a2UJrzId@D06lqteBJzt2|RiY z?%jcIKG@IVh>4Jl@bnyYw?gT|D=uQA~(#2YY5ibNG9s;LMc)HN>CqG>TzziopUGTz; zI1uona2Ghh!R~{niylAh>4F8^AO=;RA8@4$MTmKz2**elrheGd1#V;E>EhH*ursly zi+jGXbOCOYfUk3MMY~&qqt+8F32vdFU#-DZ3%X0-N3YA&1E3}dsD|d>U;3q2B&@rX z15#15guN&SS@Zhf>qU@S`c7CZ!;8n^$hCB81gMsFv3~PHI|5QmL+3J|fYd_UfsEm? z3$Rk8Q}Bm!FTk$33~Bq2Q1!xbcb@Jb-H*lz0mUkT_y=~RkyDIc)jq8 z-O%XW4mueHT@;108pAiHv1%D)P)rNrlXWgZIB1urn}(h4=2g@ZBn(-~fCKvhP9M8PU! zK`gM!cn}Mu@<+sU$h~SSKoJwV0k_IBJW*sb>jTatTy&3IBfACCxvW zY6JQA`>p_8d(q3{1!DGw^xgospG$etx>?-7XY#-E1eKoX$~Hihfg08jWyd{1$z;|` z&_*w?l~~=wQtJSg#OfY_TE#4e7k)=TX%KWv!-|6s*?On&*8BlGU`Z!S*XvWSSNDc) z2(izkZj+lU6-y4B1et@rORRFh9(mF#IfWpsp0d!fy0#JXY z`6o-QWA{{$$w9rY8$io!76jrq9u$WV<4@iLIZWmCDsVA52WNAXp!HIX5~!C2IoKQI8UFpDQ_{Lw z0@FHOr@YVxX@3ps56wyI4xN(LImP$O@BjZ_2!q92z};K08+_+L^YtA5{h@Qf>viWd zf%d+;&PnU;aRq5g>+CK0^Z);g>+YbAI{)^mAYRamjIE$p1MMo!`Sbrj?9`o4km|Uz zHRdN|pNuOwRrs!eS_4XZE1G|?@b?;ntl93m0(8vA_Fj+~fiG0HfXxK84PIDm2D8&T zTMPbx_A$E70sAb_{r~^&UQiqag42cT6i_^@0G<2=c2^clMnd>>26%dr`SbsOVE0r| z77FThy%F%@!%I*^=ybM5{QUoaC+IX4P%jr0!l4VGxn%(;WI zS&+-X1v;n?w%>J5Z_Ck~-~az3x|z^*rk`BFMy=>=xeC$(Yqo$ANAHxYa4q0IB@0Iy zXa-?FSPQBx;AJ^;dV9{obzFP~Uy9lX*5JCLx92Fx4sedkJ_MSBo`Y;h_BZCVZs;sU zv@56yvgPmp|1Ukjr^JF%d|>a?CqKZ&04Prf^!EPw@&A8d?^KYTLA~IhffX1pxZZ(c zT_&xwHRBIx9~&qE!D6br7nDr{yQhMRk)YmIkTH=AEoe+3Cn1&rl#)Q>9PtUU3?P4k z_UHyB#4><_7{vBSh-FAhEiMTzNi0bPvp^Fp<@rS^3`sfp$=R@x5%8rRpf(p+6s{&S zFVhL6j3Es!lm;;>F}XAsra3u3B{dvmWI<6XM7E$PwJg3EY-c#g)Cdp(X}`htBcM0n zz@^(4Sc#MXX<2l-z5&-mf518Y4>YI$0nJ$O@As7e9fWWNbP6`Zi~Zo9CQGO52XIl1 zqq$oIno>FVh=n;6)Q$VWzn#YkG&}GEbcyhG(9NYM)0c{X?q2UC|GNAJV!Qlb+H~Knmj#^dFQ0Bo0EX=N;HY#}2MmM-A z02z{d> zHqc6YN3e^hLNcOAaxBA(`QD(67}tD6!1~RLPu>vcr-8@!WRhbUzCim88p%j|XW%}A zFhaZE#2$t)!6X)b;~N`hNPF-I=z#q5*hT@8{rc}Y#A6psnR0g z1>YKQvI8xC%o6AZJE8FqNK4QQW-qXoEanVQk(0%d#nFvqVz;kEV0WlQP{y0bQy4OC zJf6bv!U=q8no75;KxgX>u-8O7d#`{30JH)6!Jq&CUkmc@Zv`=$4>+WCf?53gdqDz? zKS7r8_nrh@73sjge=0~2ynZhLbcQ&DCjq+p;l*i)SD?3rfsSDUwMqjrxWYjJ0kSwS z%K_xH?pBcH0o}czaBe)fjER8()N}xu71Rw5eAX3A3=9F?zC3|1MCD)qZ$4tczdh6@ zD9fR@6>R2<{~q8lfI71EB!6ok==!A>fB*l_VuS=2|Mn&kW(J0U7s2(=_$tu=TP}T=l_539g5)N=1js~{%<}a z!oMG!hWPjUT4)~(07pgdRFKM`7fBGu86W8ORY>b(eBlIj71+CnKwb;Va)1UnXaG;d z5p>`T$osuLt{@`Akq2a=AZxn zcQFVsFm$`>q;(3sI0;hYs{_7xQ|HC*KcK=$7<3^#C{97AO+fwjLckRqoX~q(GB5rI zrCnDQ{_UWvT9{WulOlM5rVV6;diF(o{_QQIkk~i~8=^fC_~I&L$gz7W$hT>oO`zC) z;Q&f(2Otri*4em-nStSj4#;ufgbj)FwC)a&cv@!{sNMB~_s{?T;7|qK0tmh|FWUv| zNaK@`_)Y8V;$viBc<}_Zn-gL73Xs_sej~~HMKfZSaID#}|xrhqQ|U}9jX$cSY~tw@f~OU)?&)!7+_ zAhIG4M1uRzAd^A;XHbc>lTdm2qVgByyijoFc#-|<|9?=qhr7^x5%CMuD}k4sC##`3 z5lhKAw+1dpT*+DE2o5@olJm+kXmULP&PE`g!Aj1PkQ79G$;r_RvV*dc6Lef4D7)h+ zIVVEALgkWkw-UCJ^Qbe(OFZZ$=ei$QN>0ftXq=#woXl`h)RHs$2Z55atCmp7sR3~u zyyWD7x(bxR8c8lWZwX*4IlEB{P2}=&=6BF#ztHmXr82gX@|it2_^_9hH!c;W4cTvDEOL@FsKI6_KFP&rwX zizp{IZ1~+~p*=v3Ul3{{o@*C%SwfXz&qqd4To7dag9^*l_5d*U)ih z*FXH*UH^1Hg=qqp$2x4_`<wDS-v1ihu+f|ABfy$~!>2 zE7Ce!!HRN0XPRn(74?D@#efundW%yU6d~0fitaOu?RD1$of{bato$XkXV0R%>uNG3lz1_n^&&wWJy4GFDP0Y4}#jEkRv=d34<$&tbd^PHR!UVfZkq^Wq~g` zLP4Gt;NKqV0&0qC&IkLHfBS)eEC-mH5=h2`sDU@o<6xq`E}-RW9zngWphyS+U3uI) z6%@oly{&tGfqiu17h=e$+m(Ygft7(FpcitU8q}k3-!p)R5<^vjdcnycpcfqZfxS~d zfMTb&^$*xcUz@;Qa54z$b+rJUrU&wQAh`M7diCG`<|8o~9)+N0GDo+EOW+H|5@{Mu-4(+!l`0AgH?)6h#5uzAAyeQ$cYGk05X-CGbVf9FRjJz>Wb$3@8%? z^!9=b5A2=V@drHU20CIRpt~0op8VSdL4#>OLC1}NThf8OkejPOjpyE8kQJa_7RaG6 z%lWs1Zus3k6%;zqwDimrl$Js{__sTS1%TUDfeuiq3IhgkKkduU|NnzP?N@N%fdkdy zH8Vr=k(d`hKsoO-hEN!WNK|8`f2fZkqE*ah}Z1%)Iiwm_$l^KS>|Oi&VOJhZ`#fdMov z0h;W1QTp>0sQ>v=hLM3GgQ1pzp&L|mx&*!Gfjg{*tqqbH7DaOoS++Y53^VDD6r zQ-XTIr8lVPkU&Hu$SDE6z0ec`>Quo~L$@zS<3W&%Kx3mn|Njqqk$e~ABAb_8pc})s zqh%tJJP&g>y3I&=hJQP_tb!x~4;Cx|B+>zLjtAJCpqz_HWUjCT!oS^#CE&$wQ&96y zptl!P6M^!IM-Vjoyf6R{o$++Gy8H%RKL%FNJr%?WdNBn)2a)g_l(t=60(yHRK-mqd zqPGWa$3q&x3!GVDR zI;?IFx|JLhtAX89K}v&Oudy72K?J01N1M#SAr#HfG%EYW?%r%Y4)0cYA>O* z?x`RKWRMoj=#k9`W6j1X9R40QR06tL+#K7)0M-1~3E(4hp z^y1@Ukgqu~)Ir^`5ZuTDSpc#L>{jS-07#5~KR7U&e>w2?UI1l5NT`4=$OWZCkpDqx zDdqZi!%3dmxG#g#2MSwmAm?^IBd2PH#L5(eEy2(<~6k`X}*i_(kW_Lcyu z$&4_QA8!Kr4%K8>x^)NZ#Nu-mPz=1}`~UwxO3lcg3oW$yTiihF(6)zq1Z6S5P?!#~ z0yOWa1Bw_>dl2McLczrhG6E4?pn4S)T%d|I=!Fg>vQa$6zr7b^0X*Aqpm+@uq%d#i ztcSTt15}8>Llnfr5~3R5%N<`F0}pQTKqD2}Kx4iLTI$`&68M7s%m4p~$iZP0Xq?O= z@I^H)qd;LB_+rmz(D2)BP`fjfqua>^Ub})yVNk0DR^{=70=c&p6gr?n4HP4$$iII{(2F=Y6$ zGca_6yC*>}lHNjEq0p4GzZaxe`$SqNnDKfkv{wPCs9vOG!jo(t=(bTt{_U<70WW-E z!X;8!j9H9Xg5ABK&QIVA7KrIDV?c_T__v2z1ieszD~`-!%wotA>}~}q4tR0>4cIBD zCLDqbf>c5sy%sJAvJ0wx21M}X2heCbGr0NnVoL_py(KWapeAHP6hrNTnh*vT1la}k zf+LC`RJ#sD@MR0gE*3~2c);y)f%*$-!vELE{(_qD3Plj=fU6L}m%1Qh9Uxx#m=5y- z%vh)iDO524AcR25W$z%z%weKVig<_)8QtEp&H@`Q4bY_8e)ke2z7%B zTo7a()D8R)!Pi+C2f%iLF3i=2+Z6&e7HYzySFpeVg*nuOvnYa42kbx*glb<55q!xA zF8x5)7ne$9F@aMRR9hod#eLA^rvoGj&P{`bDM&Gr(?g(&Hz7g_tr!yF(dNBmzT)Ch5F$>MDVo(G_Qe7_?-%Kp%$tMn;?pz2^VU@ zT!8N?1~jAa0|{6Q<|+!|vUK%D`QxJ_d$1E@<3V(T}?GJpm# zKx~c1SO(At2Z*iM7|Q_a27%aeAUFT|{~yE_Ym8+8m8>8$c^hLHKs{&?1_lN;ko%!( z{xrlgfa(sA`cDn9450c1)eLz(aXpPc*&y|33>f1P5soy=YPghXMa~*x1sG2|cj3A7~5! z>;h2x1vIS|s-~zH7x_xB=yTJpBLEWvONM!|exyMKoeC;JgCHYQpacgR zuKNuc(E>Gvdm)2Ay`eUsHDq8B)RC%y7ki(AhR2}ec+er4$OLF==5N^uuGT?*VSG{4 z1r9dQqzl5odm$MKF^=0E>Hr#~1X~6kzXo+pKx2JDy{#ax1$1K@O9GYtfl%-Cg0GSQ zjnVxF4`_nJA9O_?wD}B~aR=2k@T8ChS~(K*f?*cOGZEl1M{u$Rxf4_{2f;@ZLDdgv zm=kn?RW~@~`L}aGlM?@Sa3vYg+Y63)RC_?B1S~azTY<1H0r*n2CeVN%v?~$@9p!NV zjq>nsZvqYYfm{kMD!?v$cl@@`= z2|(FB;KjoZcmz{#_zzT62fWz!1~j^5@X`i-_^%h{O#YS*P_vB@)Qtm=7zQI;!@qqh zatiA01y!(ty;DJLfS_J%W5=Lq2Bjd-_!c}_f$}0KA|RzlCXo>mWDUyqp0} z^SvM&VdK*z4ncy#6f%tZqPHCyrWb;GTS2)MGh1e}(fSU?F0K3WNK zT+oZF%^=5lz{mCZw?oFtLDe3-6U-9yVy+@&bg&gvZ-RzLJp!R!*%v~KKu&>;4nh=k z_qu?B=tUW1N&<8d=x@+m6lh2}6g1laYJMTIEGSq(J!Md4KP67)-hBIKpFCG&?g2*F;&>|nP zm`E)IFQFJw?medL0ttMw>-20 zq>cqrEkP%uVdDocOs9e+`S+gyt+E0Q(19yvPT2cnd92%ssOyvP?PJ!H{0Ujd+g$gJ{K|D~g0CFHA$+<$u z2p3HU`2^<};p6+DF+u`HLB|NgaTx^}Bb;#`X^gOWmx~#wAIfvQ71Tcgtx|i<1!04x z{XsqH?Hw$(kV!d^3P|iSF3q;hz0o0rUPm=O)ht#zE+kHJ?vzz?eA=8_n z=~-xQMT|3o4#05&)jyyz6*g%Fow|V)=lt6t^*X5h1vjk&Uc3$ljWmK29jIi5&NzdH z8o^4tT@^sfMxntCovr~bd<2akf@Yhg-^xN3K7v}+;ITyz1JafPuXzM1>;}&zHy>i^ z1T$W8gNGVhL2akj1CXIc@F-#6iyZLgA5h$bV|hEcWD0@}HMW9ktAH2ZZ-83C0*K57 zGD!PkS|@n$59>Ij+Lyh2(j-VGaA*REJ8bPBdTj7df!++pa z7=bTxAc|q5C?NL*y$FX3f`_6&f&nj_;DVrGBB*v|T2DGf|k(1u|w)C60IVyJ7OCTPF~K_LT;1!0IF@=zlvB6Q#;!-g86hCIH8B^=J72twVk z6D|m{4yt_#L=ZmI2=c{&AXwnQh8m$JltUDw`XUKM5b6tG6hWwV3y2_es1e-e28|wq z(h5|Y7*qvps1f9IBe-ioijkcD@+#QpFOh~CL9S;)QO^V#9S22iz>A$w^+-dFprmjq z5awIhP$Seaoe=d<-$MOR0uh7{HG)i-05<_P)Ce`f9ikXDF&RMwK|S;RfjO<0N-Vou zK_e|`-QcEYT4x7%s8RbCXcH1h0@6uGTY$`S>;L}=pbiscsPV<*ScVrjq>zRhqoqMZ zji3=E>o+gtq#;9%Y2dNO50epNjjyI6#u}eZMT|8*o{AW2d@vO;)_7|wVyyA%RK!^0 zrKyOq#`9AVV~xkABE}l`Oht?}Zkmc1Yg{oEG1fSHDq^g0%2dQyWA9YNSYsE+&CoHz zrm2Xr#>%OPvBn~h`=M$wrXt1~<3M)(`u`s^)))e^3#!HoWEYg}0J7^R8 z$`dr!s4;c;j5T7}p8{Lz2OfjOBEO?TfPvvfvm`G=c<uqD$UG zFLzq=9=Zk(#DJ{91F`t`_kt+czLro<28Jv){_RsifRPfiLbs zMfZowv|i$GodmkBy!Frf|NlWTQJv5Xjwuy;DK44s!@}(PB3^K_i?4&YI9ThmF+g&wwoLZS8?9!GwmF2-0H77f%*~Qldc?b8jyw!GjhIg7iSw27-+N zk7hM(G5{|_1(_JwI~9~2f_huQwt>djL1w~MZoY7E1I2+sT4(E&_n@T?t)S8aoGPa{ zg4XVV+zFBi$Vvw(R&7z-UX1y#Xx3*5+QVym4AC6OVEo}K2QP{fSvHv4R%Q9 z6y81W|Nnon;wSWoF3<^Ay&xxc_OOCw`oI$ep`bkBY7@{63q}D@F@%(vp?M!-D#(=} zHv}M7i-NLK5GZTE*n1i@N~Qzy)c%QaW}xkiC92@1;~8e4vkInyy$m)wt-ApfIcc3O zfyWpa7?6j!KoJtq4R&eZi&yi(>9n(T3ndvm9O|7K0_yI$IZjYCq6&tT~|C544#L#DEU9 zfSCOIr-G>FUrhYH?Vu$bApMFE{h$En-`)!{Bk)CUAw z0ouGR4_@H_R>!}+B@~oJ0$`#27d$M(0SPAl?NdSZG&~F+)POC6O78E4maQ=sS#c##Jl$botXmP#wZ5yZm39})zRmIi1snNC_K zOW@0$pnVOXiYTpfDkzX&-24g}?g{_*|9>~6ZhmnboE})f%g-43_k$}?_&|*DrEXu7 zv`!Jn7Yn|EW<>e-gF`6$5bI3sLl=K^`&xjSB~V?^Cd-RfanL9X56I=Dks9&;oQ7i)}ErHfO zY+Mw}0BQh%*h?10GJr}^P+w%~qF4q{1pyN8SQN_us^>v^n-;|~fJz$>yM9qD11Ob) z*p-W789?O=h+VoUmI2g8&){ZY$X^u80BS>k%*L2!*=Ybj9IWPp}E6cpt$6cpvggH}Ws zf!9Mo7Dj;geS%kIfYwrgRQiBdWq=oRfVl8A6(9~+VL>MNB=1V_atg33(kd8`w~>PT zG9UuHe`yLUc>hw)umAsdrea%90jlr7-IdlCp#3(W{t39dGPMB21+9z#cUO8rCV(dz zKu3+d*zoE9{}-o0#4!+Y@Dpfn4+lSFAyG1@y58Re?yejFcUO8rhVgHo2I`b{f)M0qva!t;Ff}73u5+ zZFA@jHRzlg@E254gB$0Nen@x@s7wM+xxDzD4Q7L`o&{}#W#!-QY7_9{DO_|0Y@gAB zUyz>4R1l;2kOQcA_yul8fCOwoo3;6Szd<`Hy&$o`7kRlb!&^XxgLdYFB*4d2gLmdb zc;F${7l!PhwgwNhUEbRYO1`khIwII7;$nl_iYeA|5v-nP7uJE-62 z0Npn9;yP4xzpD&ri92Y9w6_;D3J%(T0Bs!g_JYzFXjT@|{{dxm&=vzo|Hl9#2r4|1L^jFg1-i|v#GZ=0@4oz`5bO` zE6ClDg$JM{0PD;^8;sqdIziCX#lIaAs@+pT$tWo6KmT^HKfpby?GvAwg0|RzT^bgc z#Ry4+piUU%Bn9vmDCpcpz>7tPz>5v|xA%hl3|_Nx2E~b>K!Z8)#S$)1S_JopTJM0u z=*6K7aC%AW1oJ^%9Ed?LA|Vo>gv7tS^#NG%REQYp6bw+t;)L1yLI)xNRs0C7I0GV< z*4YZ;!<6!Gp9*ql(2JkxV2h#csvDqG@WK?X1;l@G?d|{nFD`H&Jpgh^?^G7ZiW_J=gX%8W0+Sc<(_x*YR%mvBWg5^1H?T3Fp1}5rpiWXy zZ!5^efZkqEW(n+t*apg)ATtA?-PRYm&3MgzqsR)`p__uqo1ipx81SM?&*deyvV3&0E zu!5$DUNpUdo~C;65kq$?$c>#XqF|YfH=y#{7djpS4@UveAj4Ep0&hG7%IiVBtu~;{ z05KNiPLLyDBLRpEt`qcP+CE4($(4hDe+Rgmbh1PnwAP^s(oO0Gdm3zZTK6Q7;c1;y zJV4!~7pGtU|33k_ivWt4Ac%tlUhIXfCjc#pgQc`A))!M#p=siyDU)aH{Ujm9dSWaYpA%<){NG{-o zFwA-ox4Rca2Er^0hg4e-%Rp^XkQ)MCJSYHrBH#r(*fHSsZpaP>b(R8O{7M0<>V||K z^k|W(uRu}g>HsaA`L|C5mBT?VbRjeAkh&b!v&sOiBn0(%^wYpbfjaDwV zFA$S||5OMC)&W|42)ciie?M3q=qxi(ehGpF`RNH@H$uXSe|s;ey#No$caSx0P|5vZ zEBW_>8wbn>yF+#Ox3hq!Y(WVXuE`U;rUx3;{7_BXdtAXqJpX=h5OlYI7cK_8@PSzm zia><*AYRame3v3aatB5Eb47wT0l__ORDbRSYm+%!G3TP z2(;P*)MN5`vEv1(cH9iQGY-;k0teiSg<#=8P`?RMnZM`<#|H~|l?c;|#uuPc6kOjR zI!`CNLruV!GbFzNw;r2!K&IFAz?~sbRhfMd+K~#i=mmuyBsig+q8Bz?u#ObCc?cb* z1!)F58ajc^5Ag!D9R`}thSYzIFMQ5HdQ#xYcW~DU+@1tCCc)F$AcfuFY8gD84XSBh zKL7gvfAd~Yla&E9iv?n&b%SeG*eur6=b*k8NCHymqs?NKJ%@LxR;-ITV4)P{A4{*?L#M1M+g1EN1Ay#djm65bHY04l9OeIMQpu?(P8 z2kJL5Zir<7m7E~pt2X#$9cLQ(w_o}-&l|6PhDD%=ue$rkLXXGTp!B-Dvm(r zA6*~I0IG~Y=4@Uc%K)m3Kz*n+>th)})euO0;rdtxPyr9>Lrq#A%K&Q8fb8m69}8Pp z9^i@SN)g|)sx+cWe+t~YLhDswnICF=qrn0>-|WWk|NnP#Ve4RlW-LKXIg`K_Rq@~g z1avULZ_w$Tp!7fW1!x^M_`EYjXA5+M61a{6cg0#C{07e}K@N!c{r~^*R*-d|H7769 zK@&w_1!>(K-(oZ+8-1iUdG}OMDgf<*2aTk^sAvEDzxjwsCpaZE?**ra67Fs=_vIaC&;W2RC}r{Q z4>i#~6$suX)a|Me@FMItI3Pjeq96nLw@+kaWMBw-vCk0NDK8P)0qWqUb%ImF3pUX4 zYZ$5zz*O_MJcTc|1v~6n3^IW60gx-fsR?qF2Dl~w*#o*zfd||N2l0Aa zLP3j913-gnpkx3VRC7E5sS2io5-oU84a9&X6L8G{Quy)|Xp#!zkp19LYrVwZ0_wpU zAAqNIPT=4Aj81$;xKqiE?fxFNL*p}AW1?mgDUL|#l}gfvw^r_6=w1ic9S0yYC?Be=v) z>janIFQ)$d{~vrRB{+37LeH3#hv@+2bjXP8i*2zCFRp**VTg!=olY0|gNLE<2&hi7 ze)B@+2M+`2G$T-*`(YcR{jhL*ECZ;-2JNGpy*-uzRE&Xk7WHq3taAaKecQY}mH||* zfzHP*+aAjR@)pRP-0iUpppp!vK7M;F1E?efu>-cpGWY~I$ET#mCzlo#fkrE#-29vr z5D&b$49tjkEQG5`tw;`xFDL*Xg;xNQfT~8Tc|oI@;PakHtZ%s@z-bgqeQWRo+~n-; zfDCSe5(lUVY9d(Qeg_@>1x=^m_)6;p$KH#3APEZUTRFn@?e9%eD>VXJSqND@=u*8Nv!pksZ@&w!`CeFUm+xBHra1|mR}ZqSPdq2QDU z8fb!)1ilJ^FK&MZ#~-K%2C2=OKvi$R3ui5O)w>f^c&2rN8(lBDL9>6 zEx79K1<8YZVIaoK{h+EBTp;rA2Zvhg0ch2G65_tJ&Mt7(8xES#a^*Pg0I7OCzJLzM zgew78y(ShRDpjx3s=Ak zLs-m#ua>kxnMem!y+JSdVJZ#;yl4&vC$4Vfsuz;VV72bWcVNpP9soxStkyOEOkAzY z5ArUJYTeDBKwDSw)w&Zu{r{hZQtSSIi|`S#wXXCpd2quWR_oq=12zL|tt$_*Q2=zg z04Qt1YTcDE9f(>tVP7o6i^LDeweI5&NVV>=50F|nZ33vi%-DyhcO~~D>RsXehpp`I z9|LW-25qkjcyV0$Z(acRwqO4H|Nq68e;^wV zz;=^A1&w-vj%b9m9dg8U5bkAwEWz32lS zYsl~-JPwq%Svp%mJ_36L?5YCLQHdarfE@H93B&_A59IV0ArJ?obvq@cb+(=W9SZ3P zJ1LcadoM^J@Wp*)SRDi3SN;aH16>?6lm}|TrFDYm7hkY}`@zbvedS<9pFp>tLHCt| z2E|@H1a%5QrDb==8Z+>i1876Zi&K9=fe${j?@)Dd)!CU#jTVh@~`GEojv{MAME*TsupwnMoM1dBkmV$_azi8(q zA^cmC;V=h!9=uDyi|O!ih{<9Gce4W>f?ga{f`yJ-787^|q{9z%xZVp1xCH#LJFv~5 zv%x2TR>MLLAIY-q?gd45;0yO<;0Y428zn%;c7YCZ2QeTEUO_DW{k;%sDky3|hfezO zLdIHJLE?x*Cm}q@p_Bh#fCB}7>>_AJ7B<5MaWH7cIIw#vXv7V)rp#3)pc}IDw0kNj zr9oGP@^1%Q642cX7KHSa!Ao0h4}#l)SPq>OW(NBSa_}MJi!DCj*Z{R{K@A4CoO(8-q&QP8Q4;Pc|4;{fn|`=Hzy)Y}TmodLbQptJ@WFab>^f|ezKhetpY zsw$v{6(}@7_mF_L^ui*Je>*t62Ov*RvK}#GUn$iKZ6qy^NB0=XGnJ< zh@oaA-isaw70`AmP%44!6nt^Y8y<3q_Ej&^$)S*0Vvr%Ab{S-r7`#3awrPwd@P+Gr zP>V|eG(H3Bn?lBtoE!pP{E>$xVo1vc)QkjWaT8D{w-~W5py&im-Xr$UgBl;80|h`+@1R}m@Z{sm!4F#Co5lD-v>h}V47$PrwC4nLF+BK$ zg@6}1aQ8@q!T_@SCM&&rDk!G}y^viDPF20Fppq0c2MXE;3ENkjF-wwxp}Q4SV)AeA z*u%xZ5SU?H%)szsIwbK0yogH%g{45i3sx|LqkAeyaav~+Nb!q=pJ?U5d6;APTQ-0O ztPsKWRSp_#{4LYK`?X<*SaiEufKFF{gcGO~289zS*aCWcLBST-Jrz_)Bf``dbbuu2 z`~k!UZD?qMf)RAQDrC+Qltn>fqL6g1g0#959P|9!A%#jeXqh&<2lOBU&>4dcz2MU| zK`TW-4Sw8*j)L+wY_b{Op`)M@IRLa20Fv^-y#!(oAONM7K-2>W&P@X)gP05lc|>8W zg$P>EF|MGkh_H000vSRD?fioUXD@h5Ur=wW2WTL%w-*$+u!BOOM@shgf`S*6LqQb* zBA7wp3lar~AGkR5fX>H*=CMJm8bPJTi&-h4BF^KbB)EZ&baZH-EHn+2fQ}9YnGMR~ zptuIDU;m1ROnk%pZ8Y$PnH{(Mxfkr3DMK&+n!6~m5 zWFs-b0bLsnvJqqlC@ewiB|x4;JvtN=w~zuK))D~6F=Q_)np^G|gWLi-7y!DC3v?#k zR8V^czR_f+G%TDHzab`CW10IPbc_<6sUsksi5Ohf?kNiCsDqDmsEp~9|au+5C~NP zO)Kz?u=}Tik_EJkelcw}xKM{wiqPXnUkHBv|Nn)~*Z==B5^}*OgP8|X3veEM&|i<{2i(gGYe&~r;c83vS?L4g(cBElUMupE$+u_2W; z>x;)OU_nrY-rWm2z$5U*g8;A)L|yk(kYLaYX|Ny*L@)z%oGQ34n|%UuZYy}L6Xe|8 z7YZIA{X7t*u$Vv|PzGlYn88k{sv(EO%!Rq?L?BFE7i3i$#MEx6Ra3!hdRQP08rVRz z!)MThGk8G-XpsIlXdN`@{OBy^7hj!0P6IV2K?iDq8{jgah8k!F3B-VoDubB(`&&U& z^A899-pz~*4A7Lwzke!77__1qbcPowbV1ca;0r78_&9tMKPX*;>I{%Q@S|g|fgAX! zYCvbVf^C8}4M7VARA37RK)r*&7xP`gt`2xH4W=IyC%sd_c0lV;=%#vDX#Ih>Cg8>6 zXs}-X{k>pkL-GS?P9J>A>kE-jps<42za2V413#To9bzve$g@~sfqnqeB8LdW;ujV! z`@tm+;&2I=CT=&7JD`aI8kV5pEs#$@=g%O^qO=O2M<~F|QHFVp3zx@0oA;b$d2x`f!jeCHBmdB;_|!|W44}3f4+8^3-=$avP;-urfq|hNWbbdtnTU;-AZtWG z>dP+0GJr-7K51Emqr2pM?X1C&T! zoO}KM|BIckLB|WGb%HzC;Hnl>_PkgGlA8;X!yJDDov-+!5hMp1-~weir17^*kj4_Q zjeB6@Z=mxQk>>6|nHbzJG?3 zj;)|X|6rfUN2w%|NnyJ)&Ku5{=bBEuzfi|6GBM-g$}quE*p5E1`h|& zfE)NII){K40sOGg0S&l;1`{TN2Hb*PEa!ts!0)mG+noRM|9|j+8{~xEEL%u_Kj_6Z z@Lh@mU^jwl5%3X{AO_@!Nf3)4QZ4fD2M-p3R(WdjK?dBQwGjAFZD`vIcEn^KBv9Z( zRiFVk*cM;#@DuEaNl#^-I)raKu1j0LL@+~cF?#D_@F`9*^!Ch$tKVd zlOWXrS$r@2VXBdjnDn|1jd)Ot+W|UN_`(Dx8tM_$?Fwo!fNyUB^|4`N7`?rqdzKDgHl$|Hd< z-kO6Wihn!a*;kMmkRZZ3`nD1io^`S%@SUIF zo>nhpMKk~Qsi2V(*#3!bl%XPi$el8velKDi6EqG78a4x+mk7-y&{f^AL2~d7Mxaa% zN<-jS;@=KADZ3jqxBK1|+_MJHM?m_`gLyEHu^$v|2`GbcbGe`~#@{jvG@9Xn7z75j z-hz6;#|08I`UD+d>FouFF=%WTI==nN1eyg7VBVbr3Q|ZWgxp`m3L2RUfTfp)WKdz~ z@zMf5G6zjB+d1K`291${EQ98^T9{>^yZum7JidWMXzD;7IYU296P^iBooEX_H`C_j zRPcZgN&@VKoM_fN71Z(x>IKi;1)yF*1+oy7072unAWuL;Y=<$95F>8j4m9K)^n%#{ z9C)CT6|w;n)ZYS+vcm`N9{}19oM7(|0fV0xNANODx?H@dqHh5)PcJnz99d= z2kyWMpu=)6Vj#00X`SH1+Oj}rJcEX0dV4{g4a8tNIHZt<6hH|FHh9AeAX> z@Gj)x|Nk%YAA%Qj@$dI20v(HqHeUCT4eI?tHeNT=5nQT(cCf%|-)-l?buw58awzkQ z#SkHs!8TC63%|E-67nDo178@zEC8Kv(LEJJ2Ehy!g|sXn`eE^gYy^0y@5MXV=*be$EcjFq2{$4M)d7r-E0*u)xyxU#?D{Nhs0*U zi)k?Zpur)i9nhSJHca*h;+lXLk0FD;P~RZzfSlm^LgXGetYBUOCllhe#poXmhnF$P{_l_|3JY5+G+|NUET|B_QGT#0fXIR$}o>{ z;qn-G^y`K7UC?GFRqBocib0Yk#OKiPM~njgfH(~*3r#N2+r%)!A8iz{2Ru9q9|Z&j z5BRK3P(%m5n1{t=SQcag>m)P^2-{!9bG#MQ-G?1t3Sxu0?vPFms9_CiO@l-s)wLkB zJ;(xTwjxf#0qxaBn+(T&O%kXKCvPMXG-n9uD7?`54_eLz3KB^F3UP1-$asQdiF0R= zF_yUDBPef76#?C82)if=#0hx8cN_0mBBW-vYymfei5p7!@0 z0-cBm8B6@~B$naDsgp=!iN2>mV~L>g9qTtQ1WqBw68}6wj3qigM~o#}Jx7csnmmt% zk0t6oM~o$EJV%TrDm+JwB}zR&sJnCa8DcE)&@;qX;*MvCvBY)H5Mzl;o*~8(XFo%XCH6f-j3qWcLyRSs zJVT5nCOt!pB?dl2j3s(Li)8?1O3+xM!?V$`LM9_dDW$OiNxQMuqnbh@#&2JQT zfSlIp`k>SGNvG?JPS-b`t{*yGzjV6(=yd%98Z~nL^TG+VhS2p1s1$r*23r3Y2qJty zg!_N+HSDlX>Wn{z49!P4S`UCd>VW z>f~=Z0Y2slzBS&LryI2W#unTNVgZfkyjZ9Xswp|rI$b~X`aS_Qu|EXC4;%~S=?1MC z?sWpG;R$%5q6K2Gq;ncf@vBnWiAqw5=x+=svyztliFz)iFl^I&Z7?x7!nFKWS!O&*ZO z33CieVg~q2s;ET9AaM2DPwKA}UY}8{l zf(%Q6)<%Kv?tqVLy?}1zV|}I%9=PIYJorQ(aIbU zfcFWC1a$iffGXt1L!eEHpjo^>km?#VSj03>o1ytg0HkJMcpb~|V#8rj&Cq;A!TQY$ zmLrh50Mr2Bcpb~|1Kw{#Wd33L^Z);GS4jS0`}6<*3qcUU10vY} zpyZ#3pRg#xmVc~ZvRLxZJ%k+g{PWiolvW`5Cs75&21O_C{Nrm6Qo|GQ;t4oOV$DA* zA!ep^y5i11tT1!tz|BFFf1(+*JvGVaA{ z$ofCgJpVK!1i=aOPrwU< zUx>^C%|E_KLahAT(esa7_2A7vn^q#_ABT6b3@-`}Ao9XV~n3x$D0$*@`gT^C&%Uf0k zhKv`?;Kg_R`vX-6#mB!r^hVH&s}O5I z^;#DHi{lVpTBqxUEJl!P_D=*^9rWVdSGZT!Gr)Wak^*%R!DId)PQZ&chykGe#V=-o z-3Q9%U--9&egSn)A7n*m7g&ZD zEaRTBvkn|5-Ay3TfER7h1*{n!pu5;X$E|_%1ii?EioZAtshtp3904!359Mgy1yadS zs+q-;Rhq$AMPVGdP3Y&cD6s2NNhg-TVYqRHB>F07`41cF{zTT+oZTa^P@+Bqxy2 zi{F1h{cjPFKSMeA_cwiE0&R0HH38WNwjJcsfEQOj!wi)I4YGjh^R&(`km46R!6sY+ zr-vV)`mK8+NKep<1#ms-J3#dq#8%Mx2QOOxfTm&_Oc=UBb$vOwQ052#PXmKuAn-*B zT(3Cz0(;OthRz8L%nS@KJVExo7BW5w-u2Z57BdBl1$MilIN&`zB+QKuKx_xA2Gw^+ zrh+x_}p&a9hM-ZURZXSO_)%a?KUE z{nP=nDDcJ4kFcN=F}?)x7f9koAxQn}=nMuM1_n^3+YXJhnQ--584aL#0@WoQpvVh+ zAu9`s&rpuEPH^`mS!K~qL0j+^S z3ZGw03=A(WgQuxEx+j9-Cn$>-mb!OCvUk9XAV{tYcwq@KyVLd0an}zX3XBX{Jl(Dz z0$vzG6m+_N==S{(*d6*O=mj54>4z+qjMZ7766Hg{3l8ug6Gy;{|Bzf3@ZuRb*@DWr zFQBOC4*inWIq?t3SvDYNxq^<30&!bU)(XMG6vTfa3tCnWDRIHM03;an;`w`642bRk zm&U#vX`PKAxfh^8!3i)U{()?`^%Jxa4xZe=fpH8Z*6qr1yaANb!A1XJ&^RSDNrKA# z7mGk@K&QELz-t0|X>h266Il~jQ7vd6IeW&NK#q$TO|HJ0H;+D;zOhV$kl2G(z0?A!^d3MYW_V93{4 zh6m8LWWra}x)9U}Bd34Z?aE>8%2UGuD%gDgyk_eT<>?Il)9v~Pw6PszC=v#*XF0(D zKJU`v|Ns9xjTo?;)er9SeR+`&s_J|>`1enAvjQER%-?z*G$|&~>pLM3ydCD5nWXa83%e33}1=4j$=Q0==ynkR#9q0$;3z7y>TrI>6gf zKuIOgCJ3~`uGjZVV0WlNP_OHmfNt>K0g%R^Ue^f$FD{(rU}!#~k|ogXD-zfpDiQPo z<{rrQBoCXw7d&uVg|Y;?LuJ4Qy*LK3@})RvKRLLD-46C*(2F~7p|0d_xesYaH0}U7 zilLT)p-v<#E<>Pd4nsyo)f|QwiZj8-+9BNi;yyTivGDId5tt>=8#*BfyoTYWDrl>= z0LYmtfe=y9S%)lvFV61(2NGzxP3V>vjG%pUG9Uu9-wae@?eAbPU|?we$yjTck-!PA zWxAa_0$zNFIkHp|(mvQeaTllu^g<3MQKA4Y@zXk8x4c*h+HeNV86agZW`L@_7n?vG zOGc12+dDwQfiE7sf%?6~5_Y&D=q$K^7sufe3gF5otL|zdbN12(+~lBneJ}FLtPdBQ&kE6_kTs zWP-YIDIg*qRIAREWMIf(P+(wqu|W)6+<+E4@NWmJ4S2EV6)cQHKrJg@jldU~uc1Pv z!dc85a8fH1gdyIi@G3z4$70D4zNVviws4udw0o$ zn+PUpodPeWf)u}&Ha=M@p0NaU#r6tNvKFYG!|=ju8aP=u*D5fSfbxv10>syoZh-ST ztZW9I;rPN2WDNg)-!IKC8Phs_cf96F>ki$K*8GYwtuu57|9;mUtp{onGJI=5NA39T z=nggD-_GI{02Y9yT#!LQFG9qjVRaxNL(+_a;RQ2zz=kK_#V_!P3s1m{MhTD-7ElG$ z*$C40;ykE!dEN8kIj9l>x1PY|)B*k$bI@A${k}S_C;3~nL3K7*c8LwBZN=aE3ltEb zRwX2PYCsI05s)R&+Y2gQ0=q*6f?gOZfrE{IyQ>DIRRvZJ$}rnH>de3wn1N0^2eoK# zfc8OxviyM{c*!OK>IpO+`o#h|I7oCB=wwO_{{60Bx_u4OxqfC4c|dL5|Sr2uZKfgBW=C6I9zbWcX;nV=W% zT)|F8mV}piN%CO1*YcqF0>z?1TBnFdTDR{P$U1M|FE8p5)tJJcScVt#H-W1$$g*3d z&7h%jP}O1m=Ec)Z&^isYo>k*dEW?-okoBz7|HLw!`Tzev=uDKpKd}r4pyJJcVi_ht z#q0mXGJt{^q^9CeECVQKf!GCqVj0p>ljC!W(-?A!({eLYKokh)W~Rhvrc}U~g$#K~ z@tJuknaQceXcuIYRKN9u4md%n-)=zaH`fUP;1h!Ru7cBi787Va^L8hjfERn7Lo;iM zC~9hXdGNI*5_3$Ej^S}ar~2vpv^(16*hv7x-ByeVa`GSdo0hZxF zc_iq?=Vwrl@V9J$RCL`P;PmuDQWTue`1fB3$`SxowBVpnh9nSAR_xa zcn?El_6T$q%8NhWVAjEE zEiJfiv|39LE`g}EKaz2VtNAeJEZ1P2z;>~CIqdy6oOvNfeDqM)m+VR35=SH1LOy+HP<>R zuzR63mrh!zz>C}9V@Du0mnUfcUh;l2BaL6L!fmMsD^Ug zk=FczF|E^e2mgNG9jzzfHB{)1Zt(4y0fDd@3OuF)GAQ81CIM)eoCt)}P>JACMxKBd z5irJmL68y_NdE$)>xC}J`qw=#T)#k9-gJO+AE;Jx0oPEWDxjTLpaor^dS!nHxQ05( z-^vK7v$~r=Su)^78^mB}!*VL9@C*W7(fy)V8XQ3U+kF*4)eTfVsLj1?BB+i6r6&tW z?FFi%z!@5}?hIrCxFqU!ECDZyCPS+z-!I*v8fo3G2huuOyk2B~24y(#=+%q+ zydeL9hmt@S06~*)uj?65>OX*P-f~Dq1+Qme6_x9mfETXzV0WWNI<#2ZDFK#ytqO`Z zP-KF3UnnZcICy=f!5jy#uN0W$s8e6LFoXMJd;a|Yzw;ut{@C%> z1Am}rcf1Bqw!2ES9w;$6?)pWde*(i!&@RKY&fW;nT-@%D|Nrl*X8@fy5&Gf9+K=FL z*V%gF&;S1~9YFbo!3fkgR|tF|_z0GvK?cp}pTMvSV$f8uK}8?`|K9;I$o0dE6p%r_ z9G$&jgT6B`Fn}zd0MZixvJ0Ze4y0#3*mBnoFAP3{3RO_sr1uKwOi1w2d(ulGOSc$a zOq2qpCYH|DnE(I(?}&%!`T@$IzCWN%k{|s0Lw_{?s;|}R1&2TY|9;;e-BZBE1$Bcp z!p1vzAm+S22wGdsJym(VG#2TIkm7~u1lQ$cY7p61*p1PV&1PhWy}+wS-M!M{JmcMAW0*ALbg zN)@vh`1kvM=!WQV>G~7!q7hls>o|}*z&g6YiKW|T!k<7;i16=s37ygnj`wbn#-JBn zko{qhP=y2+I9gEkvIM?JL{ zjq|AxwSJHeby}zEix-dHfesZ0i8GY)fd?oayf_EiC-z#Af4lFCz;37>FL3jPBjClx zJIV~rM?iyC5BRsc@_@>y7lB!FFETm7fd%T8y@-XdK^A0$B!K2$T^~Rcz7V<+B95&;lP015L}|N#z$oFSbGq0?m(f_kz+u;EN=fD>}JA7P5c?xzig;NUMPbO?ceYEqxC?Y94PL< zS>DC#AISR+fiJGGfjj}KS{u^3!G&pBC-}^h7q38Duo(HbyQ&1dSO-zXza4x8+K-?Y zvA2;D1k}P1M<$rwb)dufK|#^&E5N@UbQk3IR?uSAfEOtclhQiD{GI&Z(zh3Mqvngs z*Z=?Tf(T4a0aYm(uR-g(TpL;sl=ANc9oUuD>D%xk2xNBeRFD=>E2AOcg#&nz1lSM! z`@uIlww^2%+6B=8@eF7`*@WI!kg=depCGpczTklA1G}X+v;nlX4n+z7c4T`pz>~fr zX`QVg%QN(!UDaA ze>>Q(Ae%vk2E1^F$$>55-|pK3%1I4DFS6h^H1KZ+O9s4111knu0@9qtuv3A7fg$@M z19RvXQ0VjT=Wz;rAqZ)-K=K&OM_IpL+++c}0+hD-xBE5(?gD8(_z13fJ4o{tNS+CJ zkqxmv09GFD1{XuH?7|3lk}%jw;B1)1{-P9S$AzFBAmcASV0QfiN{0N~MLZzU2e$h~ z52EG&A^~RScZgsBw6uTWj$-E*sBf8Jz6CiLoT(s%mL$xW4KQP%IhX<2m={bhL8%N> z)3Jm$&6vUvfT+mJp&DPzy8%n?T3PH6E1-&B!2AnpAcTs5o30yPfNJk3n5!8fDS?0g ziRPbtwGtrh;0n9j7oI=}FmM_ZZfZKqe zO1w1(G>9+_w6?4@R0XL8q&^gg*ol|W<0;Zsu4A5;@D?pdLfo{WE0%C+}bWZ&N8fXA*Y1R4u|NmTLxLzkn(MPy~V2(u2Y_2)up`z9I~=(-E{uRw3|(qYLPi zvVd-IjHPuly+{DxV+QsRXidVz|6-tJhoH(4Y#YoAopV86-~n~8w|9V+ZiA-?dRsw> z3uHgY^&tB}&IgtMpn!%%2LJY6kfT67YsfXXpfzhOK`*wi0PV1WY>Vs&oW_vR2;T10 z3Ni^~BFH4rv1cHYx?RDynL(2fl=oulXHer(0W_`zx+?nGKd93|!@Y=`u|S~=auFzm zK<0wX139Mg5Y~N>0h2(}NuYg^Yrt{r3%ZN?g%-^03qg=zX$8e>z>6YC;sozx0&SND z?TiG)Bj^I;Z{Uc0@$LVAP{4q~0H*f?=ya~$-i9CGI0ieg7h)iCu?X5I2MWI4sURPLwpfGw#}B?X4m2iW z6ZB%zA8;svGV%*E82dzE?^IA+1wl(4{_Wrb4dg^n1c6))-M|Ohp{@}0LPi@@oOpmT z3uK#|J$Ndx8+_R*&_fx;tF)8#02ov z1&9ku$RKG@Ac8i-gRB7Gf)zOplxzjSXCHQhD}jI)N0q?ERcC7fsF>~rk%2ERz*Zr& zmVicqp#|`E@SWfZpz!F1D1-(Q=)4t>C~6V?BFh()c@?_B6;oPgBlrY+(VzeSgME^H zsGfg&4=X77fC33*QP7KUNJF5rH3yu4KsP6{zPR)Y8s4Czmp~FhFV2J82^oswAJ%(pTY}{N|?ch zsH!2ky$9y13!wWBLHYPaC1epA#8jA7E#O`t3#2}Q-pc!e|HuFT6Tr1HC>Om3odX17 zKn7!aK}`PrQ$bYYFHr5s-wQfT8niE~6(k4^XVAG!pc9+H7de3~94F{qJTpNJSSpsiI;@=N33UsazDC_cXp9+bBBM>7Xo&asJ0)<$>i@A_>Xb@po z83T1B|Nd4`rUh-W0$tt^2oI1SGN8l-4Q9|0LLjpOUj!nX)jbs?81y0rtQK_D6Pj}s zz)j4%pa#kf&}jb4^Pm%ET{)085P_OUpfw+_xsJDj*r0VPprP6A6G62QC_jKiLHPlB z(>-WCfs+fU3cAdB(E+hoXoqh3%8sQI8vCzt^# zcbgBnbb?z#-L0TDTJr&>PB5dp7sQ1&1G=65fet+g{R+CG7bFh8&lkjaX#^@dK=Z!f zbBOH0)d%SKVbDo@-$7$e;KSPC!jR?`+C@}OtkDCdLNSES+?K!p>CeNifo0hGZ&eSs5F zaSWh12eJ1_#W8>?4NzZTi&Pu~s2%}{uab&m0HtCOdxcaS11LR#*h{727(i(Z#GWe^ z#{g=%f!Nce;ut^;ZVE;@48j5(@`E@I2qIRH3A$UDq0$h1yD&qB5krO{LvkKNMV=8uMIN}%1D-#2 zfSmUOs=s!ER&7C78839WJ%_>gXs7ERr0&fbSj~~v8T#SH*-xOed>~5{0`wUeUhMhw z|3A`74L^|B3eZKsplOj1eFladeBhxMC#@Ht^W2S3c25PFmFL69b2j^@e$hB{$z%k)Li3!5+Cq8p?j4K#t-*$O%= z<;ByF|Nr;)f|$_8^cB!yB%rBo{_UY3Km!WkalJQzz2JLzf_hs)wu6egz!#Y|pj#p| zAoJra0Z{jWIzCXvFT|nlL-zs5lAzvJ5Eby^Q#8yI;3YcX=0wLk(3TL;$rnHW{|C7O zv~oiN)MV~%0tI&S0fT@SGuMJHp_1tKEBl#_&7k>T!-`RQsbVBtf&~f!(;a-qv zU^n>k@#aG+K`+>Qz;T=<*xOnGy3`ZgrwahBNqX_78zwb%7Ua}I4pxv%z>7-|8L)lX z7a5?@^# z%wPy$V0iKE1K5`VFXlp;>j5v0d<2PruN;3-@eai10QclZ z{bC@)VG)CD_)LhFfENxh!_$!rmqs%D{(G=RV8ahS1R2hI=S3H2EhMOc2`Umnt9h$H z#Wtvg3KHyf{Q}_zvIK$Hy}mC3v;JrOhm__;0a?tDyKDKk2Qq4-4WPmXjXQe}~8Vz{yBO1J`3cM?4zwejq zi);{?ZVwjz{UU! z;eeF)EGlsfFZOgHmG}1Dpzql zJ#Z=X^0f#e1I}Fd%2%nMM3k>ze?Z%T$SK8OKP;u-C|~Ep6~N2a9!Nt0Qh*_suf@m` zc*@sm6f?o)s|B)FwDQ#lMLD>94ruM#goY)JWf=M|U@i={Mh`PvR%(}=5lwS*b|0Ma%Nc)^Zj`0f{A1HpxN zJ(A(@@>T0Q=#WMRP+}0h<7R|`$~Xbq zl&{nuu_fuQy=|aFwq+;0n;oS3P-9z(C8_ z6wNq>7cs3!9pE-A_?$UV6V^$g6MQ2Fs8czS!Hj{S zb1Fzbc=bI0c3+*q7Ym<)b4FTcE9d}Y&_d#=cR&qW$uH2d4ZKR{Mbs`>{HX4P%=-0m zfGW#Rpa1{g1)24m3ffKg;vwkvwb#l!AZNn1f)$$eFOcU`2aCia-l8As0V^ zE-!zv0;C9ZGdoDU(<|x4^v|GGaw4Fk=l=iy4_^HbZb$sj1!WciP^TQ^m$c5V8V&}A z7a3sX9BJLXAmh?HJ(6C8f>ud7K&B8tiy8u66gPnD3~&|BzulK7@I~WJn8%8;1Tumu z7#Mn|f{xFCEc#Ba1r19J^!9Rqu94}Tx&_o*?*-ov7?7bE13Fh9q&N_M+jF<8NI*9@ z_!|#`j`IRtH3B{`4>}G9?&BuBYy81=$F`@CM|kz;4h2^;Xb9o{&k&EC!hUpi_px!S+H1Vj<*$Bpy&_1nQ#~ zpJsvr1T@UA0lLy~@?&sn0F{$j4lp(M8bNA!z?)#Q9H72`aRMTm#hUfMxAzBVSono$ z9av%SR1g=uJqP6M0H`^=Qx!lH^S!M)pqbEKaQX@C1*e*zZdV!bL9_~ipu4z1-G?C1 zt{Yb#@cl?Cps|9+Ly&n#aC#1S@lzZ$@92}(*~$Rgdy0I~Q7_0I&=4)iBG`q549va? zuzP_Sm_gS`FTW0-?StH^^y29wsPDlOV6a;#L4F9#Vg@(7;d6YT6D^?gj`?MvnG(}oO4wI97xL1a*GYYNEQ{M&m$ssek#rzL|L(>&m)v;o~i4!?05WF;)v zK*<-htUZhIMXDTVvdRKERjp9%`jpl)!2LfpdxN;5&ATalp&60|S}q#Kmn zv;Ko?OQ#xB_3K=z}~E18zd_Zx7`Odcg#9Ie$whWV#j< zJct{$KrPpx-c|=t*!A}MKxXVgAqncn@Ne%Z0=1%hr-J+t)Y}U35onAaRFr|P;{rJm znqEP!1m}22_09t7p1^OB0iDwv^kUjsP?GX^*)q@$;e|K^vTKNsN{PK7GVsNJaH?iW>ud!bdk@aVy{!?T0PTha zC^+~)tFXYLpbKBMOhLtvL^rtXf*w~18bNEdfL=J#3t~X$pg>Ii{Zl~{_$~_2_00VH z!AkkJ_qc*g2W3Z)^+7KtJOpR5PVh|#pgAMZ!P5aRGQksa91vmt?Y&?RLk;bARp8&w z69Bt->cv?m=u{C%YZhZS*r4!qgm`Z%_|f1{E%#c^^>W5&&+Y9(>3KFI)~jVq*?f2zudl z8CkJy-g_aZh!2#SI3YxU@3V87gvLGbjg(GAIS-^`3Mo=Jt z=D|^nAht$kY1#RQ5?gIvKpjT&d(Z9D+knuuzvGmPYtA%1DY!cFp6UURV1Kc zYHpJ_22kw+s?a%1;ut{X5J;TWB#r@8K7iPaCUFd)N(sdNXB@`>s;58^{@XZ?0Tk09 z@o&a);QO^f?9aw=44`}oVt+7>V*o`gsGs@VIF1373PJ3<#&Haw6bu@}ylfoD0Ltzl z@sq}J44`lZv5y(YF@VAz#NKBd#{gV1Qhx0GblXO{@S@s1qdMYZ5X^njS%(8*waPC<1M^1CMWl z;x@c@FQ`pKuzd(h->~)}NCW?NUk%VoN}Zq=6K;d^C#*pTT7v}&#uprjdjdf1CeID9 zDhGZmC%CQm@a6yiJ3#3tt+N#rMK3OZj=z5mzm*fLXwS?4|93$egy8!B#cGfu(5VlQ ziwQt2xEIqwia_}XB;Fa2^rG!0=vqz@(6wQZEx`hyLOk%rJMeU+0I1#A-3rp0*6Eb= zBI4!$|DYQf6=3RLl$C*-C(y>9D^I|Smh~`C6v7&Ry`c0D-Zb+ftr%1W3iM)aih&z{ zSes&?uthY*K)goSU6lesFABra+I|o-Koc!5z7|0&oC?ZQLA|Y@Y!=W9zEL|cgDV`~ zGzB%nKv@<%=mx3ep?73vF?565N02!T&_P=-7$6oR20VLMLB(rS1w6$i08Tw1Nlr9h1^EUn10HL%=()`|oLY0wLG z18{A~zui>_wBA7j-01-o4X}n+Z!f6)5A2-^swzNLB&aDF&<(!!f`2>sDxsj>R!{;8 z04+;{_NEZc4iV6pH3PVv&A;6#3^ZyDYE(jokip$h$h;nS(DbGO$QKFFrX(mcZ(j{{ zKCCH;($em21vMoDdV4{2OJMI*P;~=qltYH^KuyV@-d2zw0(yHvRTikx0%}Tv)@gxS zM$oJXX-bCjK$@T);L~Lr4}lJa59)^8Ch$W0GAQ}Mnvw(PkVTik4gt?Sf!dNFFM(>{ zAkf($V1Ea)1ii>90HsmTdQzPLXru7O3|Ko2)Qaq$3L=AEYz8M$SX&Z$5V}r4Z!f4O z5A248DmV;bjW|#T=0%q}sAyAwBnH^}uC0$jE1NE*b%L9Ypp{MFHX~#g7?{ZqX$FCh zv0edcmP1;Z{M%bXVRnF8m4Pp;u7mR?r1_Y|+C3H2Gz@wn3|Vpq5r(BSsG+d76|ALL z{sUwL4@52KayN((7hr3gKwMZ;^EP-k3a#<=;wk75`j?<%IQjRtf^tUd0Z`kr7sN!| z)dk5-H+8_d38ih>3ToegTKk|j52UjSZBIgHl-R%>*LNqtCDTq&-I&%1ZYP4m4jhP( z9c^GHv;}SpYIxOpg3B>b%!8J|f?JHxM)iyN-$4H62zc=fHZ%1XEP~c%e!&j%-RtR) z2Id-@IEELZMMw?I8AV79%;+LW1Cw8#0o2CaVuNU7=G!6Km^pTcHfE+BqK%nqhiGFa z*&*7P@pgzdW|SSGjTvr-Xk&)hA=;SUc8E5nBgo$0kn-{83Go-N`t7>>IhFc1S#M=pS=69HhsGaX>w z1uzf1C=j$1@5P4upkY6bZqQ6TXkAnW11kdqr1kRYUlw~72Wa-pLnrXX^SjV=`|mz@ zdLpfRikrmDsSNzv4+Xr~bqOp9>Ux2u4fsFhw*6&q9sK)Gw4N;CISyWH4_jLZ z3Ko!u__t35F@v(0Upy@Z<$3TF2mf~8ErBmoAo@WE0`cz;-O}wcbx)`3niq5Lff~AN zI(={OZx4MClqK+DHAH7xr|TVXjfXVG@?!rIXuVe=3{fufq6VRyf4l30fUKw&nJ^*n z8t|;BEQa3RFQ7rE7xh`-wi#Gxs>MIh(fK)0Avv(_7rHRLu3xfJ__u=sMhY(UgnxVJ z6VN~w=-Ay}@ajlVfKIglt!{iF1PMUUfZ_|Y^WeY)wIp9?!PpmqUgSa8X`QYc__w>> z0W~h31is*ah=N*My{#^gCBwcOxyYHRA-l-sufSdry_ z3*D|fy*vSdFREbbL+^kTJ_&fS;vCpDps>$k0J+%r4yXsTC8)O*WL!XRFUZos?$8@S zQ2Sq)?gxbwcz=NJoxm4nkk|vckbk@DlYkdXAx45c*gF-ZI|yX1>z#lX+)${vFWP6L`2xI13IJkSF-J zhi(aaaULQ7I!P9EIFjpwfEPZCU`b9C#_(3y2GN7TaUm#CHwh=!8U4ji>e82!Y zLJAZe0o}f90$)7kgDD3c3d_Gg^g*}lnqHoOPTw{B+oyuWK&@I39q{7j18^{Pwz_~# z?gfQ$VE0rIFX%aRbB{sG5Z#z2!v#z4WKpzNNXS{cBX=~2ECX8(|RD_ z#TuB_6M-*2z}Odpx?4f+4S3NDZsl=wg1P+LeK&wwji}Ddg6TRD_+lN54Ke}bsel*W zFcU!B?p_cX*gX|wdeDpi3t)*SGp*b82k4~m7prgn|DV>~3koOD?k-RYodFh_3JR69 zPH;fHXubLWKd6Tb3gmzn;ouUSqZ6F`K_2Y|c{K3FdWdt><@M(YBQFnFKli~3XGa0X>dP$Avh5(-YG zu4`U=y#YOi1C*jb4h;g0ghNXUX!-GC0uL-vX@Jj?0vDIPkoW{C2c27>g`~& z1G4zC7+*9%ya!5fFIa9Nyt;iV$OKSfxh3GmZAh5HQ#;5kP@({P`o-FlP;FpeWl8XF z2Qva*Oo2#%%!XwR$E#qq5R-br)qX&CFDOO>Ux=oILY*bx#T!W9BdxPl1{7uvSu7cv zTnr2^j=*d6jY$`L}`yW22k*U*diWr z3?R3H*gPI_44|Uu0uuwnPxm+m(As=ZTk?ZD(!SB+%Dj?{_~O!}w4(T=@>I~OOz;q5 zS_MO4d`WJB5ri^i$ViHZs4dAY0I32|xv9C}i&UX(kZ@W-er8@tYEf}~Nn#QMyom=M zPXzfqEWCFwsP#g{_T7c6M7HnPuYglZzzex+kireQeRt~wSQ4XscL`D`1iW|&PI{oa z1>U~fb_}Y=72dvUJ`NQESHX~`75H=^Nc-*zL6Bfx^&|93KLIb0HcWevPIWJ& z@$n)Z#Dh2RB0)Sz1JCagsO{q=EMiA^>W-!5VnkGhk^B-oW#KggHnR zqJifOSBKodTMJPd@B)(lL75P(fd`sObOoQ)fqJSC@l88RR#>$PYBYdz0snSiP(=(X zT#+kcPzC#f3$7g0e8bV`J$8X>E5VQnMSrd4&Fjw-=`TK){QO2jP~y5QT|@8fKuzSHO!+ zkS+?$`PiCv{YWNUhOt2=fIJoOq5x(Bh>O;=Q<)A+Hi)L(h4UCqyS-o`aPtM$v|Du^ zxoKAeF1#_Dc2^+Ifi>+)&*N*_l}m!M8%EPEAq^x9Y1%D001hlr8G+WclLEPi5t^bv zRX1{qf;H{7GQrXysA&djf`)?nA)o{p04j4pDG%JV>wzl-wW;{wO*>U^3+x}v72sCc zPDtaf7i8&+$>+e0J8)C1^-?KB{W-XLkZI7ZO5hgPi)66+?Y$uP1cD7;2vH0w#Gw5x z&;Z94{_WrfBdD*vCGf=`NVvjMJfz3Kza7$}dU0+)G?c)0fSPyEmiAVN1jy`ea6c&E zMG|sDu@|zf8P@bOiv@)|OTY_WNbdlndG{3N)&l{s=G`Tj5NOXdsHp_%DS_yK7v_ba z;t}4w^L-HrY2Hl*jT!~Ls1OI)25sKO1jaGENQ*^o-o1!LYTm7mg*5N@eqROt{Zm0kFkejT1T&xx;ot8oV|}nTDT@iJ05tsovLoPy z@jh_YfVw5Ev&9!A{^HK5|Nl``gIpN!f)ztGNc_dRQ=nq38gyM33;*`1pl}O%!MO)) za#|-i9AU0*-3Z#x3=YJA7stQ@GoZXFmJ5+UQM?i&)*UL5)(Kje z1~MPgwYm}#$ME7+BslLucCh6}fwCSb{aL?xVGsq$dZ2@0?u5iKfC8|Aoq<6pG>!oj zJRmk_XdDA5+CcpwhESyZ0_w_?BqmjYj?MvfVJaYfn9%Mw==;wI@tfc99C!T!>H!^h z{Q;r=fGE(CQ~v$FJp9{5d>ve;GX%ZJ*9DdOpi=bDi^-r!;{eZ1cKdP!z9`lJ$$@V^ zdQlEuV-(86znvx2!g)FasH}w?-WT*@H@Fhz>2&?l?fRwp2#@uf7aEa}Z~$2v+Wn^a zjYW8G?Fn#gfU(mxi{Zsfa0iH`(-m}hp+@Tg{#MX2bD&gw@F8pC!3Vt489II6@b3>* zIQWRQ@z4XY=?tBrFZlPns$`$wX*~Eq6(s)wbT%6JO#18-3~Bt^rUYiNPiIK$41Mro z=ReR2DOVNn(ej{W^8DMTI6`IbyqFC-5P#dh|Npau!A-9hw|ZeUzZIwr2^t=qz7v|H zK(}0jMh(N@YQ(@jEyzf+0z_F_r|SbyTQ>9wXu!|)31kw`^$Gue-zUvKnQPraZMN(~ z%piUm|Gp_43%I5;@b7nhlGYjGdgcWe*tx!UvM(}&1^M^&FhNv=K1u8J3BB~<1?V9B z*Gpa=10A}|$`3j}{6z@NMf@#Jpo9JP`>Gs#$lNR98xS#tp)>RiD7X$jVD9B{H2?|t zz5s<+>m~lyF3?6YkWHYwZe4FgOkn`!BaNUJi*`UgeIVdP7`V*i;NO3uSHyP$$birf zppwxQ>_y)vkkxa(Px$wTK572NTx$$+IsblN4UjGT`$a-Q=4zkHKFJLBa6!ZrBo9l1 zy|d$GE7T>vDxee!(g7N>(Fk}U0dvWTz!zsAwKD(y3%x9%J3uaR{QxR-eZejXeFB*^ z41EG}K=Tie$oJUD@6Uj!w;7N-LopycQJ z;Dyy6Q1bIt0q@d2_y{cP1(m(?LI!lMzd2~XoiHR3MR%hlztB5DFC@0ZV*;Y)dKXL$ zEctU$&H|k9!__{!XmrZ_Y&wPmF7ciLEWw| znh$^$RlR9GC;*#(W?&ALfGnau_<(^Kw7lI{03_WV%F}#E0JL%&qK5+{_~Mfw)T%Gt z;M3KA1iV_x^v*$Wodc?aLO;C70}Hy|0Tl$`ddT(7izu)d zC>!uJ9(o`TDh?pju(e zi%Z`@_Q19D#x=-j`Z zYB*AnGr0SPoQe!L!cx(V7op&Tn|wI}GiEX{FuV|hOWk>41(MnydIKdPse%PvZy+Zm zL9iI8;s+%pP^%{N%Zoptv+KcYX0lH(boS=_2OUxjB3X)=UbDTB_2FRvU1!w_5=!d~ zVSREOeDe_~7@GHjJOokq)f=SlWHK`zLzfVv7LkOtx%a0Be%0|x$WJpo|#;5H0MJ-iKb zC9Sh3v+qsRMC&bpdIQM41yJh^+FJk>(4bTos*-((hZS5jyS{jB4>thZ-19{k z0B-L=+Rxy^{DTF!W&<^B!3OkA12qRh4Hs~t%s#}>?fZm(y9i@YH~1)nH=rg7N}&lV z-{1|J9Pnta4*0N-7tIIQVEZr_x(e zHr2yiRm{KN6*P+Sg@64)aHN8cAM^#eN|5)dR5);wtb-CZJw3 z7mUx$4C-5l!(0~!Q4Og!ML=gl@UOoB3X_WuyIocI_xpG-F<f)nrUx~C%7Qq)zpwsptX-eD^o~FR*$tS$GcFRs-Y&Gq1*B{`d!veaO05n#|zui|P zus8HXP%o(C9qXvc(0oK7>p$3C;8+&`$NG!UwXo=m0XqboVnA`m*zGd)0VMpv>UsG0 z^9Xc{^ny}R(2F~enmPa;B;ZjFP`2X;e6b#MCBPAmfEU{!szBWih8LFL?kG#A>z6FZ znU0|3;R2%%F8M>p}cSm4%=$4>vSI|+gdjem0 zn}XB}K-Gut!Ja}&-$GId=n|GaK`)kpHDOO7ULd7%aPzB?l!8M9kwO$ecM3qdQ92oM z3@;|QA=N~}?x41vkM)}uH{BqqX9B2EW0DaEzTZ-Sfq@|^BaY$3|Ns9%Y@duchWxa& z;?xpI1!IK5gE#j;I& zy9s7eG#AJYl}^_)pkrixcLct8Sq04r{4Glv85qDrQQ!$m)XM~#e{$4{gAOSN-Aynj zts8U!L657)|NsAAU%{uxg@1qO5y+|Y5aqoh7eNDq8V;a=LD01z+o$+~_Vfh3*zXNW zTO6Qs;9=*Q>wr%6f4!W4zv~hH{XDLqamdz_CC*?ox3h$T_@L3n34t#j!MstT%D*3c zbz--x2tR1^p@x(=q6U(lW3dXsEcm7bG9}!XC0T7oxm- zDo8Nsg%!+kzCXG{1=2cMyk0kUyGo>W`yNT_i_@lP?@xD*BziUre#2`d>sgG znt~$<{VErZT2WB=fi4yk09~l};uUCv+3RbdVzxW*ik^wd$a_1zmJ3lGe%N^r9MkY`*Ic zkca?SBol1@k#5&Bki7dQJC5PS6(^*;8}1BhMS^mf^_v$`&XDYzHUV@t{g>=GhAYta zVna?G=yI0-pnP4P6UVRvdL~6qP8`D=XueL*i38u01X7cn16g|y%I|SGaSWiW1Y(Eh z#4&)!6+)Sn0u#! zf+^^QF&oGjSUKUkBjClsGSqScG~xhG6PQU*oFA00_lNk-fvj_E2?d4s>nr$@tqcEt z-y@Ln1){u{=LBeA7gSDwa~(fuehXYqPIrfv6QMs~mnE<~2i>i(99%B!hm;Gg2SDY7 z?-7t8pmG8XuTS|oLC4}fG8&>K1D7knnAK8 zloP>E!M!o0a>5a0!fQl1AyNQ3|IrSqoY1#NDknbKA(s;}1&DHDMFFCmm|uV>C#Do2 z%8C90L^;u2fG8*03J~Q)eF37Js3{*=A zwFe(EfI5QRp&}sZZdcSkAO}eB1q;loAD~`Cx9^|87Y`v78m#ljVg2Sso-HH}poQTX z@cx+QHzLsf`I}DH51pW)*&m&*f52%2eN1?N=%40a9Q?iP;29LxKafEa&<#Z&UKlvSiJ7iiauD`*>s@0Y+AKOoKJfEV?vK!cJ`VShC>J;&K@!=tOsQO3Xi?aD3kAPOA{djQ;Bnt8o=*UCR29ZdJB-n4D zi|<(iUyFe_;K8|WU!Js1mcSQF9)f1-%R$$cgsMOab*2~nAi?G%BGzwSq*y~z0(g8> zh6%jB0(2hh&US3=<>nLrL96K?E#()W*5g#rVbq``()tE=5!sj5pxc|jKs^n*xabSW z(^35U!Kc%9vvdW#*t-_&F;L-|CI3Qx4v5DAS~&o|ieoCsEYPwU&gFUu47h%tYiVT z^0N3}%$p73Aso;PG7PjV8)R9~i~4*d2eg93Kr0OX{{R2N73_csS-kw)A$nc}qZ+k; zDoA0xzMD|-|`f6SFG=pv~EGr zati+at{)IRH~tnoa7iEf0n`NqwaP$osS@}?1);x>K;WDNCu|&nQ)3Hm8sZF`J&=XW zpyt^Jc;K*ui*iuE6C-e5Le6FaZJ*lj`-Ojdi0>RwWAsCJPb(;@0$;oaXF4AK{or%} z5(6&_flR!=0}r-=$^%dw@o%3BqCon;bo;b!34EakcTMPrZb&K$cu@&1kI8dQEI!vH z5OB=`$ZF^SkYC`gc|8xB4lolAcxgB&m-~W(66E!u7cq;#$^%{m!wlQr3d)P90d5AB zd?5?*Yp3g-Zr2+D-Jr!YUfIx;RH6ks5aCYHiwuYpK;;c6i@kXvejBu~*7rjiXqJ=< zv|;Y09%xAfBWQ!*3rm=C$n+AZDg~8Ls6AK6Of-M*9dL4lG^x8;ywW;dpS;*{3)JxN zeG>R04&1+o926q(;zK6PW!9h-ukdnc$8@Nl;~|+W;DsAF^RT3Kg8dF&$&uCxuHs(n zq7-4ZFs;!18SsJ|MJuiX7SvAyoei~LBmi{5BNOOEe$ZWepjtHG#d5eqqrmHUL2(35 zV4ye(c(DVL+yh>$hb(>#0Igf<1;rAm6hS1!2~g=5?Jx~_;DVZ?)Ai14Uu-7F!4!r< zweoMrVy*>L@`XIyxNhGYf!(0BD?V_i>wwPMz7y~w3tSd*bh_Svj5+zfc_9woAQ$=} ztuyq+3oh_3x7+_f7af4khXYlo-#~l4UUGm|4Ejo>b%(wI4SPJi0qf4Z01bOw0&{Ob z#v~eQ;uu~y7$NmF4jX~`8laYp^_v%MMv&GG4GJS+IOyZ&fC0&2@IGKBaM(Uu3XAnpr8?ZAK?_~XR{kP%>Kf*pw3J_XH6SRbr) z=ieSG04nkRz?)2#a0h}GS%G}>qdSzRyOblXo5c;oo!THvUN4M;IP$Lnnj^vP!!ths z%I9g_JgyBapygG*A70$P2HCk7`XT5=eHtvN*o_ao1P#=JeFknOVK)5aL6tS!7tE7D znI6<;`2uRQ?0J0#6eZxk7HCCb_mqo2m_SyBZh4V$?f?H?*BhXkZVPCXRv@U?bx*(x z#($vR9OziuH!obTft%`Y0((Pm1Z8o&C4pho!151`^} zyRQJq*ezgVdwur=zHoyWjqD=+?NctkV42Pk1W6@dCV-p|TFMEUKe~{8Q3w=L;5N{~ zhYbAtTMmL0^Kb8QDqx!qUgGy7=*4~T5CliSi?+!i-QfNNvbMDDDF@-cF1m{9>kDA# zz2F9)SP${F|5YSk^KW;(5b&ag5j5e9&Yvp{{5~OvQG%X6<>V7zkdo?E&ukG zKu{QfqVGrGi`$T)oPZZikOTm#UXXO9b@yC=1cC3C7x`B}gL5}PLB0i~{X$@G=$@b# z9DfiI?{ftd1g>uadVOy|T~)~d4T1w8JwF0p{OE%R0VvWTC6+;B9K(w~U8E9AP!Bc( za$OgaOZeqM*IqDKG{!O9fR2wwG(y(*gT_7s8sk6%pUL?Jl?<>OHo^Hx0NQ^?bl$=B zoj||~-(*W1_Rg1p7xN$nf>Yc6&>xT~;efyw*P!AcF-QmaHFz&&s6fz*T~N90 zpb0Ua=7UV&t>&R$f?fn5Wcas(=57070vCc_ECy#u9#H2DwE8XZg%U&(v;R38gS0}5-xsW)J#Uvlw?M!6brIBhaph<|Py)U+$M-|v z3pRvZ;0gs?!XaAypxz3o(Pw?CHWyOJfo2;WTQAj`gX#y+#aJN_6Tl(0J@ik|i{u`7 zT!2IKN5G2!xDaRw%9n0%#Co+JfZX2W`y=p$9zw-S(5ip_?XG_y9#_$ZcpU6skuYci zBx(Q&R03IF0L@K-hFJvCptaqLj~75S+(mE*fiAq^X?_LjNP>r~K~q~V7$JGr_ebkV z{yt7nNxDDuOY5Z))|a5=2;kul@Dha;AcMfhV6W$XSRdr?1y%H*Q4?@~*C&7p)RY3< z%LJK$3XO;68~&DQ4A42YFE9KrfTIdjH9|+Y-n_7eih(M5&^d*mYSG1w2~;n>kO#|w ze94j4?fNFI)5VMF1s7aUAPv%j{qW-3d62=re;^JL=q?pV>-O}X;lb- zELM>S0f9g6OLQS*4-@8piB)RROIy>Go9s4O@Z>2Jn5; zGVu9tW>*Q&k$)iR?oa{H2xYe`4@3`S^=%2v=pWsoKZ3el{{*}+1Q*a8AlpEx4AjQi zr-AMvGWJU}zWKurIsb>{$N&F3|6@Cl9Mq0zjralD@Z<6WvXkg|s{@>+0cYvJS)kRP zph@K8ttN0W3n&Ye_Nq;8Pq#UYrE&kN}+x_+me}0WQM7 z9oZ#TFqf42f#*k@d_d;$Zx8efdhsp>=1Ljx21Sy>D(&P@XqN-UkOklhAv!2P~A(B+DtjkutNT|6_JA2Bl@I{1Uh`b4c!?^IBT zf?B9=Kod+L?|`!I8_-TC5C^=D^#v=qpw7`hxve*FL6 z+X@OY&`B#G9%%d#L& z?RJn=pdk~Gp}oBztKe4fZwEUd;6*6ZDv||i?va(1T7D%PoBK!_zfPuc#+oG3o0UBRDd=$ zWH2Zo^ov3DXD}o%Fn|_Mykp|KRkGH?O8s*Fj)g172uB-2~>o1T9244o=^o zviQZ_pP+jM!D+C2D#(@KRhlotzylXNouFk7X`Q{G61aIUNEJhg&@RaQ%~X)!i@Bg3 z2}tJkg3JRO56V6uC4o?LUkE{ZWC8r!TS4NWg`9ye{z3|ufEQ1|qaYv~Uu1$dVQ|9A z&KJAFp-HS%DvJkFF8Tz$SOOE}Z#f29VQ%vC|Nj^IKS3iPAK+GJRC6*gyr^sj=Q!|Q zX4fA9FJ`U>^8;RdfSFO61X}CIza8wSAjp;3&M;k|X7G=|7s)VPaQBpWgU0Vf__sUR z1iTP|nN?y6I;9F!CpZMX_!kCsdkIqZ$ozqtJt9H30KeP=@&#x=MTUR_=(;qKZYP6) z7qxI>wP2M(SkQ~*aAQSwfV`O2*%|`MtNb97UJLC6W!1FKUa;72&~68q*FeYj{P_Pr z;6-W^I1Hc~p}q&H2Va8tqHG;lI^e}wxJ~llweM-2zE57P0Nv)=9r_}zb1FE0&j48g zEm!!rgHuZ&IJ>|2*9bNT9`tfhb0PU2)N<#6ioAFXF7bFk`Cjx7XsTbN+x0^yxDI;Z z{{8>|7eOGx7es*WSAF3OV%dRC0OW)u3csKi`$J*DtphqtPz2I6SP2&u%R(fpWSD5F z6D(Qz1-+<+iI!MoaYL$TzrYvia8ac!9(cl3gp2Zki<~Df`au^HzgP+0w-EZI^%8%} zVI~I9&ORPn(8Xc=ty`F2h1rW_@Riyx{($?wES;?iKOiT5gn~;h^ePS<(9MS!txwgO zfx9Cw0$v=f2L~?b5F}9f)IFsaROJSBgN+J!u?RA01Tp#b8vgCRF9Kimg7X__;8p;% z(PsNp5C!VLzX*5{*Z?*U)CJ05aA06~aRICtR#oxu2P@to%fP^(4cfpB(#pTR7eobS z@xN$-I0qEh@M`QIL=0N5@^9}2)p>#4Q$d~$dLaN=CJk{Rq>=E#2Xw(P!;7cjT7adq z6|x@)T#rCT_Q1h|T(G;oY5u_q2^EkJSJ#1k0ST4RH{C5$L7@`R-3u})@I?=}p~C?& z`1Mx)?V&G%UX(*3A+56&O- zU_r$X4k}P_1orof_b|7CYkB_dQ$fN(-C$1!ykG=RwL+ctA{lfOa@-ftHOrvT3d~~c zo(l3p(2J8@U>^p&U4u{D9pFoCew^@#+((+w2RqL>yeKLHY+E z%`Z-arS(90e}4x^r1fNp0!o)+<){Du!MebO;cSq4Xv;X1C+Gz?+@*3mKpRC4J^(f5 zyCLo2PH^M+ML9?hXm$xQ)Fm?|j^V{(DezDi^n@~1Y0&6As2^ti=EVysNUsjGk6vX; z90REF3fem#Hzke%l(Xpog2Q{ou>%TkNda`MX=T=PyHdMdr(y-z`va-0JO*A#XIoS6{wa6^g=JgAo|B0ut7zYU|+cfsP{ZZ+G$f2bzKdt#^T}bxTHa(f1mdi+V#p1c6-znOET9 z-yY)l4^rnX0yowKI$eMC`hExmyU!jh1e&S*(;W(0C*t)o3%r-gRRYx03FS!Zc7fc7 zJ{5H4!hTXdFDkAG>MTrcWA{Qo}z63Jht#xcCuCjp9N$l!yJBqUbTKsR19 z{FxfZ@Bw=4Jr5eTD$TPfB!FNrzYs22IYfkpiNKPU6F192D!J}m4n+A_x->-d_dj& zUE200F#gbZ@L=mA~4 z3p)4@bjt3Br=V5snZnQ$Q$hv6H)DaWuMc>^3=svj40`{Z{{R1l6KGup3+NIoo-?46 zcpnLYwSnrrR*5tJ|G!WKjZB+IbC;tBuz|9=-KXQy>eT>}ze0_kUXak>qZmRUMm ze}GORVR*3{#{Y8)IzuP`vh51!R7?i&*~l(IFW4YeduOY{8K|NM*Z%*1u^u#+cnU-u z1u16&PyPgk1-)?dffl#?Egu;e7$8kju;zdlUcOMdQkjei#-NK>L52ptFoKEmx9kP= zz!~|she`y!`0WijdirP3D3b0U6VoLDqv}DDXw{c~Ec)fR@6EfXbT}pUOZ1#Q`4a zVSI4}G=I(jx{~12OG2zbE+wSW;+(`*+E zdNC2jf@F}+?x~=#2#g)n5I%UVo_q4|gpXbW^&_Y~iK z|Nj3^>zsN96ulR~{czVCX`QV*Kq=_J@BjZ_+y)WXK*UARnFxqD5AuRW6o1Pc(1g=| z(C&Kv)(PJcNms=)>d1ceyr0^AYfJGgvTdl_JL@=n|L-FT_CZ7X;nr3+^mIU9bV>16az0 zrq~%UasHO&pp=R5a~#YG{4Kp88HVmwP!fdn8wz2PB_*J?&{PIc7}op(jTVA7p1%OK zqFK)T|NmMjt-BY*fQ)T{nf&{wfo zV5z_tpNhf$1l?-_GITXqo_~Aj8Bp_FAmD|P2Q(1*TR-NLDNZT-BZCLouMCIECKbO=Yx9l(ENby48P`I zEVWVm+rg%TYFp40NH0qli1`70e0NvCi`6`!e8|JU9c&F~%I{0i3o)4AT)*&dZv|Nj zYF&Q_eDSvk>S@;xuP1^F4AAfZC>wP5f^q{$Kj@Th@Vbv)l$-(HHrflx{AT%}DMgjE z&ejC*k}=SB{zc#}E+~>FoCeK7wt}dDEWQ^v;dZXc;^*J)y9Q**lAsqCOTcakcu@gq zrU$&34-PqSYUJPE3o;sXCnLCYnF28c)LDAb0bzr>9H4{}`rt(vs5f2+B62{(nM~kG z6OXXK7jNC*kqFw?2Ps&g$@il>R1Piq-h_$sw}2*LkaEy`m}#K9D5iq)cu*E&Z)*T( z&((`2NJP8@EjR1!1&M)%89`+bC_&8tMZgWv1xlb};d@&_We(_GLeTyL@O(xqC}aa( z%qfG0tm^~tk}pVyX<8vTs6al>LS%CRxN~GPEX*e}@Nf48*#NRSsMqyHz>D~3Q0^9Z z9ZkM_c(A&M4aq&AWkR5`Jm5uxD>Oj)TMjXR?&7>~`v3pH-l-2x|NkG<+xp=&s9@~{ zm9K%lQ$Ya$y8Q?gc3_9U*eC@mS!H^sE`X@t08xJcWC*mN=id%m)dj7<0?3eo_&Y~Wr#INrdMwEKO3bWiC8WvrkVZPj4$ z&Q_b#py6*FkWagNL7c!BR<@u!NkIKw4sbr23ZjCtqUZlpB95A}T(|BFk*Y zehcc#zZ3<{ubF&?@?U6ySgIgG0YpfD22K5jN`TJlx+=iH0PT8%R)$S*gy;9&AQ^D$ z)R&_>&?V@Fi4$CIz5oNm4mJkx6h{vzC#?W==s_Fm(mH!(K$ZM-&`Ap0r-Im^vhqd1 zi={cxkaB&o^Gps%Ywwkl|NrkYb_TJhUI4j1@zekRFJeA{D&8#6px+Jt{b1v?5B5%R zbpb`-i+60`$`R6Ta^(OIr~HDsx+G?ou`$9pp-=z+@0e8y5@-e4^@0)XDzK5D8N3_( z`&&US)V|Q$6ACgOLl9Jk1ipx32iuv&@L~cu#92C9Gay}u1{gmF!Y_dFQy}~V7(W5j zwE(Za08L`J{(w%ufmT8M0G+!7TB7+5T++0H0u)rW{0Mw;(Hc&?#NL4JUXVirU)%t9;*a0OomE0|c5vXTa3+w9zUueNKfy{iZuoH9)MOr7=@)vL4LIzL4)z^#rpaTS8wr26Z zc%Ke(4){Q1m=n8OLE#wiV#*Y-RKSaFNUnpV&J0ii1gj!1LTV65+T-6p6;ud891Dy3 z|8K!nc)$xa*hvh&;3NzR0C26dy%$8mvN6Q1xXw3V6BL>0clNT$-dx&YXX`1T45I? zZGbI*aq%^DtOq3b;xOo-0r1o&tXQ20T|WeF^Yl&y4RL`c20*FN(K1{E%AWz zTfmEOh|Yi)^T4eg9!RLb^1UWF!Gb&rihR&q$m#$8p+Nx>33$N{&Y>U`Aj^<~0wf*u z;snHISkq-YxCIjc2?`sqR!~rY)WWo8$-ZEQYXX^x2nvw07sp;92gMH183P%!BteBK zq=spm2=*%^siOx4?~COrU}4b+9*7a$y`aWtU^k?Edcpo0 zoKGOZ1j%FIKo5BF_7zwr;Drb{tAc_Alv+SDWuVjn@$-#ju=Q!3t)Mi`zaN}8pd$(0 zJ^?jpoxR&mf_nB~3CNNMFcVbmwt}PrUX)nC6a6A^S=bAzgg`yt8$mCQLo7h*7JzEx zpcnbD>Jk*~hyrm2Yy!$2oc!R9-VZL5Pzpp@aOnb40g4q^(FF6}i+d1@;fWrca3N*P ziy*L8P)tKY1YRIY!Zm@+L@N;Qyg)7x&%OBne?o67C~1RAVUYU3EWQ`llfVHAYK?-X zDnV^(SmLdL%y|a9I1Fz5LX$Q)9$>M_2|7RG2(${~-`@&q`~|=Y1R02Azzb(^dIb3# z2bG~g{QVaPOUz>6qwcLEyF z=*=TtgefmJ!q}kZ5hz6lyf_D*CWb~uMw%HYM}uSnU!*(-XDn!z162vI=&ORr1iV-X zjsRH5f?^2lJy1dc<+H#S0g#XbC6gB>5X+%41Xc`E1RDARb)!MmSkMc5h;ss7m_fP= z$aP#W=val9&OiVE-vye-OX~!;0$=Dn121>`3hvRdbb@Q=EQS|PVSG>vE{oyCRTv-C zqy$YFU>lwTRg|FqF!(yv?eGl#Bj|;j2{iYYC?iKgH#Civw}N9EV*Bg#EJkESFCrnH z34k>xJz=UrZi6;dK|bxC0`A2Hy_f;F4cv%EYMRx7OF0f`BiiQw|Nj|jd7x!sAa4b| z_}>k62Ph69&AwKUB>^vI?Cw|Np-b0-fFfDQB~oU_Mz3ZlZAnybyu8fxkrr z)Mf=YpaZg4VEMcSrf|10G-&u+UW2n8$U=C3_AEm7EF%L0blSHUJYQ4z1hm^0XSWC( zzo4Gc6p*n{fAE5n5h%@pN(Fu_CFW~zPZ^{Fl)ErW%r$Y~Ai`Q=Du5FSC^v%*hqgYm zWM4dwg=qqriB@8+dW>9R&H-KAizpO9@e=qV9a7*!G83%-0&5<7Axmb=@VCs;;4>jO#?phOV#;`C#1MhS%~asALeQ*pO;CnC zs5=MhV<`l_SOUHgNZ|G1mzsj0(JaUShXH69!vS1hg9bR(8^F`5m;eI}}9!EO`7GJXD6QmtJcCtqVctG=Rs;AocupaQhOpuoM(PATh{!2(NcQMk+uvU@ieK z0u15SgJy+xLiT8Y%b6D`5C8w)1zPWt);YBU)bb7nAHx9d;(?mppvf%I{lp+S(9&ZN zKj4L5G}Ps-pgB+e{k;(BDZU_SNWbm|NH=I!EAYjID6nd9c`O3g37Q;z*$p~{0pcF8 zl`pP5`2T+=XcJIcC)m&zhaZ5(jlh`_Za=z(FZMxfNb7{UrxoI!9#@ciK>J|!hu#3` z2DvBTg#$!2sET{h0%50hwu0P~#qdHIoT3r)w8AhxXr4BU;RQ2{4{CvCF}(N;PNdKp z0Dm;{_kxbJe<29+(RQ$Rp(8HwdhiJ92M@=D&VURv@NWn0PI(ZC2)`Bxdq(Sl+H`2) zedFZ+|EQxO=fQ1S(EZU6#|3mx1-Ulpg&RZyG9m*_Q&3YtsV4~5%j5&M;dmew3;%X- zOn};)KZ0It)`hyYL=Ti2!IcDP^fvH?CAd?;5zsvq6jVVkZbGJGI$J^9*RK31Ue19V zqXRMqJYWMdCg8;;t$M?fR!1SF7P);|ZgR5$`&+-m_VfV+d?%>Vx&cYxdz^kM=` zJ9J|m)DtgOz_ibYX$RG!&>jq|1TId18V!;I4eIglcb%bq0kq``_wdXGHU@?lop&L9 zY~LTC#n7NZ$DkLiI?&iHO zh=O)AuY$FLs#1_3Oly|xi#cI1SA)z%bTdK9Uc`g0-UZ#$29kRbcn369yuBAB1sehZ z<&JTjzC#oRyx>D|6WH_czT%}2u;I`a_-i4Qah|8Qz+nwbT#&7` zA0RqF?Ti;wplr~6-u!*%nL+mp!%D{&$03r?q?pABYTiS0Yz#yS6t>{4f-h!61@@nS zELQ<7J*x?LA)*OQ@cb?N!Syw`S_I`yP{;+nNP%dBS^-Pt{E*fQC{+Z#V1z7|hQt}P zP|Xs6w+5N1B!d z!$KcqCL-N~eD@;#Ci3t~Bdv9pX7yt2T@8g%8ABAr1 z?Vujr%gxxLZ)p(B`yeYoO-oSkJm5udC0IP*g$djcPHw4u|x}p(Vkk>(F@n31cXL zBL);Apg@J$%)h-C6c2$f93e>qVqO+MtVB5lu_oZfL$EwZJ4iijTm|YiP^BL9VjXx8 z2VVNXqJBE0!3IT5N=c~a@Gg$cmnigBG0xdjBw4nJO^57s~fGy~F41Nk}Vg)>YBRNJHU-68YE9FTeP7tvS$|9=q%A_75#4~TFFT^tOV z%L6TQ2e~@v#Un@yKj4KY+_7F+Ox@6q^bx2mEb*zp6{&VZ=9@s76l7Asiy2V0FU~7N z!@0B?8dMB>Bplk@r1K=!#WjtXvIJmmB*3zEH#8NA zgC}^QsR-8cgN4>FNRbN3_OQw;OXh_V#8OaA3{whiFGG|{8PGk!~2?Eqm3VKllZi^s~8ocPg1S%xLAYBJ4jU9NOqj>BfV+m-| z88mkA7Q7e`yei)*EZ{}G0yMqzw={ue__ssXUZ%oiN^(%vpyet;b-)&PLYGj6!o*8# zdSNT3z%Bi5hywoYpk=L7K|>?(9_Nd|Uht7nK`+?1f&8fOIuN>im4knKU>K;|0~&IH z?2Z-$ofQsR>B_&o7c}G&*gF+$K4{%oZ!gGPP?reQU4u-ti<|`+sl&hBR|4F~0!_k$ z7sSGr6W4&$&j^C9hU@J;@dv#2tKkoL?H9;E(6yJ4m9`jbzrd^9dRsy3yTOaFdZ&UG zbq94r7sZJ;gBB!vyy(C1|No1w3;+K^7oqqH1is*whlXGYbaEX!c(NHLUMiIV8PNf$ zzAFb+&EEnVQUUe*!F|FPBA_!Fz}qZfGoGLc@|WPVjX)EVt(WSOKott8qR>9bzkiA= z$Y-sW>g4(Nw=$f8?ofd=QPVnooN8Vi0v&Zx_yxY0CkqX}67$}vpw)dry{(|t zeW30COIyqI+M z|Nj@gXFTjY?cic2i>G%gD9J<4o0xcmgQ59I1U!boGEnFD_JT(w zp@k%P87lwwUa;F>Yw7v7LqY@QvR+6Sy||?d@~{pl5kR(4yoiv31~Grj3Gg~u&;}LI zQdH0~$KFp!~;f44|kP#xFhHfipnLC~p@Sr8*WiQgeBQ&m{6>%W-y&)Wb z`1iMjf=c+-10~X+)vC}H^Sv&DfB5(JKuWWdrDjm!i;p^|?l=j$>kCA3fbaS;e89~x z!T3OTFGwh@vxOJr>=(DeSMGwY|Ki_16_gG@D}A4WSNeitH}D15J#b!oZ3r5XM;^{C zbb)7MXf!|*#Ea{9!CJByAi1ykU;#V@^A{6L8Vlo&vPCjq(-gMYhI z7>IKNR5uBLO1?7z-H_}7D&%0L!45Z2@Y;Yjd_!u=7tbW1F;t=i@-S$RLRu%|i}xo% zO)W^qPwNa|dU5aM|Nj$S`~a;+{0t)Aodji1cv_ziH>MV))-RWY8jn`%$HT-+e32ZZ z2{*+YT6!{o4rK=KoJi{o;mCRs4%%b|T2OiLA-a?e$c3Q06GTA!jL)<^{1=osVMxRmLFp?DKI9pcV5VcF*}Zh7G6x z{|B+_&&M%<7QTbn1?S@!Kufbg?oT=&#{lY7fb5MsAIAV%T?}GJo{wVy)lDEb1fP#% z0QFWuY)_E+C;$Hkg{{MRqo#G2p z6SLzB^1*h2T;T&TAr-PIwmc%FK?Ut40W_i=TwoS z&=J~*^Z)<9*nar`{}-1)#95FY#C|wGA!tQ_vhNe5Ip9T*FjNlKe(ME^2fna^iKFiO zWQG}q*!Kyx+xjqQ`#pHyCn)G3`#wP|%zd8?T%c|iXx}GDC#dz;3StC6wq^E$A|mib z_Ed1^7qRd2mklU9VEaDL90COr|MsaMok1^h1)-iOf$#eS$Hme^AXj1C_sIpd0KV^Y zCW-~wAf4Ud01oPHEqDuVX-omdc<M&;YA(DXi(c76xsnV{_{hPhVJ_Wi3YxS2@?hH`vi#vy$H<(`3Ahx4z};p$Qn5w zSq_3)HgX{MOCJ3HAKH8Yxh&|#4ww&MDYF$M9`IrTOq{=EK6v;8?&ma^6Zl)ex2!XC zw}O%&WZ!2cOtK^goLRv|M9Trt1k--k2hHGppBs)q_kDsG(0!jECjb7a5X$v|^@Um; z{{6im-JpG+AoJ6}`#voXfL0=aCBR3TfLX6MziI${B|cbtEFD=32mboYWX2&m2cAgC97 z;y7r$04cLTwt_;+gX%EQAOUDAD5xpMza4ZS?R0QQ95e`M13DaXdn&l7t$vPcrgVWsNe+3za6qx0DR&JQ^1Q(h#{aUtQWNqHu&Vy zOW@fc;NAiv=tPTa)VwxC(8lbSPpfyLp!+||Vz$Nq? zPzBuE3krb1-l?Df0PW!ig&la)>x*R%K(3YPo$3Qo9|KXJ12P0!_JeOl=C+X^y1ptl!fd|>ZXknusit)TD$4-bI1f^x@$VgbGt zRO8V9|1X~J22CP>jwJ>!{leHA@c^_HbSHS)X(~tqXe;PtQ*bzeCh++8gV%zA_Fn|O zsCER4cedIb0c{190Qt1L7sLsCq0bE43i{zNXiN1}5Cz%_`s@m*5(W+EgW5Ept)O6i zFY+LkfToi{5^SKkSx}h02!%*M2lGL8ykLS@4023oOK%FObs`V)*Gp~C7En-T0(%Z) zUE2fD8p|u7Nn6M!Adt?^UIS2zZ7PTi%3^#Gwi`Sh0P$2e*lPhV65T*P1(gaQ$HJV} zJr(5FpclmsAX$!p7g68@4pIhckAY?mKr7O~N#%u|Ge{9jXR8X>IuIH3f)j2o#}QB{ zwSuUC?p}~=;0tM(xlC|#|3Cs0qzp7<0CG*h3u6Uu$oJdEuaury{Iw9Yt31(2SKg?dwzQ> zhzfY2<^<9O+5!qnB)uRPf)GRKQ3@Y#XTwD2NkCn5;4_+P|AtOJ#muz>z$4>Aij z&jM<%y-?o?nr9IJ?E}@>`Tswd|3V4Gk_8bGAVL^q@P5cL$#a4z`#?L`;hB94NCtTy zs165QZiXOYAE*kbowQ)bf5<($pkus10{uHcj-M(3Doy#fyM73GG1my}SWsyP+Xs5& z5Mm$b0Z?v?-0}bai;x|l!XC7T(DecT{$7v~;C-NHz+u$ZA_E%lg{-awtpIfieDMk9 zYQ#QJuyI^F5c@zucD?wy9poyok)YY%2cSIxNB{o^?*j!Hk0A&uKmuPZY6aVQyfxx5 z^emeL+d)U$#K5>4!Q2oScM+Hy0OL;H4k}{^WW$HxGNu(2nxIPMN8pPbLvVoc@4wJ` zsRlG-0otc`;t*(f7IgS{%T!Q=2fX+SX(0r>r~zjWmVoYFkTU~c_&_8&!L9~Pd~`## zboYWB9{55VrU1l!9oIWm;SgdOBgpW;?x`R@1-)qW0y%}JvlYbcZUy-awtOF?F6c!8 z#HiK-b>g6G4!Q#8(EtCPy&#n@CT|0!N#_5cHdN??v`%n4??vu5P+YWv+I#`My*40! z^-hHpq=z7J+}mn!2;3(C6)S;|iSel*6N6q%*e=V^d_(}Q0#sTBf_FfG0uWR+KL~iC zZ2)pLWO89Wj1AfW0Wu@tg%8w>UXU$;y;DJjOb}$FXe%g00$ylARJ?e!_5c4DcR|FB zt)K;a-Myf22z*fm>CObe@?#dH3DbI@7CM0iO`k!m(3}HnlRzi7s#u`n{4MRE`Ep1( z*9|FqU&z2r<)!Giy3AuxTp?%@flnkaM^uk~pIDDbyJ!rTWT+cxwyBXY|;|O?B1-H0&FCzm3JT}1b#lIcw3}{@;*MrAJ zH#824}8 z2O+kBw!wkxk*Q!^kg0i7uvVmU8Dv60mh6i^x*#(_5+D)8)I3PMpl)a+z1srz9jtE5;(aj(Vm@-k?Fq>?kjfRZzz^D9=!aB5ovomh z&A)#tsQ7~H?&<~$1-#h18C)?3ym$g*aD&r0C{RF^Rxc!7gED?^%T!SQ0(BceGN4lK zM>kaLg)79NFE9Q5|NmtSJLHs2aL4M!sZHRXTPUKOge5A_j4I@|7?An=`$2s+{$4qD z28NxW4MS<2y;hJ@y(JV>!UnvUssj#Ye(-X_)<>XpI29C-LA{X11^@P5 zQ1XTJSze?=Rc}9lTHy3=1_v)9@%)3N#ef%2!Ep}?1yFo|Dv%@p|Dzx^r)eW{;wjmPk$51ROQ(X$?VuN1 zHi5l{k()p^f_B${Qu>R2h$49M;(1{UaRGAjdIf3FLy{M))ISPNh9KXA(gOc}aH|Nq z_!lG+@M1AIAA(eXd;(xsl&o0-kqLM)8=O!;;RK2r&{jQ=Rgh99 zUK8eDP)6Y2-?|3W%mw#x(z-(&YtlNW@*M(Ih+qlGsSsc$c#0k*75E|>Vg|SYz~8!$ zKnZILRlWTLEPsPa>wp)j8^FN@-gpfvs9s!ww0{F$>;^|9-2MB(r6e>ZfP572VkWo> z0;vGS3@kcfK7A1du@atBAWd9I0Kmrwz=ANXS+XytYQRDUWF}%cEXc+e5$ljsg4a6a zlmMz#K#hEm!T?xmZeI`f9jxsF%aD98^dQzCHR zqqGiSmLRq60$*^g0|!1llL^1rp$2vtB$I(6 zEbv7tq}>n6NWCaUJ*dHkT-aA3bieoqW1oOW#O$?T>mW;GA(h38?Q4)?4jclo9`{*@ zOu&mT;FtgfCdjLxXag5{prizfwtyFlAt3`wDlgh0)r(bCbA>Ar42GIFpCA|`wcLK%i#)pB|r+nJs!{&b#T$y3775r#mK+_J#H5= z_ceDVsFw%2X9Yaig5E*`M>%MV@j*~Y0QG?-IJJS2Ca6RKo%aB0t3Zyv0Eq;=5C`}A zK`KDG7FLYHOW+&I;ONC#0{eiqf=U9AQ82ApvM+?;nm}fvmB80lAeX==R)9(ZSWOE` z;Gk>+G7mJgd>Ax2$GQqNoz5yg~#_p2LUhstALb%!VQ$^;fV<5IFKM}KDL9{ zkI2VsAt@Ntcoj#z?_yI3`6`(F}1ruPD0oR6S$zYTXuweIGUW(WN3o`V@p`{@AfQwbQ{pc3H*bA{CtrO~=R*+V>^Fifl z=mU^$kb44N*h5r<>zrl?8`O6=3aSx6v(ex(KWZt63!01ubG^Y_P$vP*wE=TM1s#~H zyA)LZ5Ex~OWMp7?Aq?`)c5v`Qhng56E`YQ&d**^`5!VGE$p@f*80daSIcWGD2zb#9 zWrOOJ+G0?J3fhUW7a}?XI`#w0U7!>Z@FD;0qUs#bC$RAa=xp2D1ZSJcl$<1G=Yzf-&fYIm|u~_q7KFM-#hyLFNR)9QJN8xa5K~lRz!LqyPVd$`DZE4t!Ank%gA?uu}CFtg8#! zCkttdzIX<%qCf>7sK)^v1n7knvY^$hpxz^BZSql2**z2L;q4bd!!$nvx_d#v68K^x zxXHv3@Iqq=q}+xz+d$PO$W5St2xbg?_bkY3K`*jk#yngMHU>I$0c)XI z!$J^bD*t}aFoWv?Jo{!JfT~X!b_RwQfr}vH3XpxX;PUl_tqeHwX0#qC;ceavGLnJ6 zuL`_z)^`CY6+Z}iAqi0f4Ms%dg9n%bU;L5=8v&Jurbf_a7*Hk)c<~zCo#qL6(F9I$ zpfF|t4KMBQ1yRrjJct?eA_3mD0##$6=!AwlNILL^BHSGyK4>#DqUSgjtQAykL*(EM z_!zkBKxQHu@E~O`dhX=+1~ z)e9zw3Ya&u6kcqQ0*551c!MR@SXj;j)xppXJ%}0bLU|!L=?A><0;eNTxPlyjk#<2I zg%=!s3yE-gCPWe3Vf-(|F&%aUmJC6zLF}^yMc9ju1yHB;LtG#5Vi`EwOH+d=m7PXUg$vCpkkH3?=fVb?E+B7d=T&=9wG@% znxNXm_Xo7S*nEgl`xI;yhL1;0;0q&&VsMGb-wHnC6<*FklR7^{3Di972>{gefz27b zkXrx=?_N+NATUb+7OmI7txTSP7rEf%2@4p|%nGP23q5TK+9i%#GBK`s(9@PcaxebO1!W3Y zNd}5+P)PNbrMG8)Se1+M@`Y1C7pF z7-I=I$$>%$5}lAJ;NRW~ik^TMMM?R2ND$U`g7grU z%mI596q}$#8~8#P;$l$tg!N1eW`lYrCqN?%kUhBI*4+!v*`Nj_C=Gy{h+JSUe1zfm zERZaGgyGFBPy>>{Qizod=pzhAMZl2@9?!=+!e9e#tw5V_uj6_li4?SGp?gX%sF@hl z4e4#a5Q3=$Ikg)y9su$!yf9(}R}|3E1$bwq6Fjl>LIvcHm)4-s1+*#)bYmh|P0$Pf z+2BBhryo#zArP_;5~@NMO$BIr5H<-3a#zp`ZitE(hiCr(|6(7A*a;%GfQa=oLFZ_L zLLQtAK^g*IctJWI0WTcEl?cfFpnbW}Nmd=GEG%Klz!j-N2dqImEI}p(yTdaz>%~frJDO?Fx*vkW&a%6(d zbWVV(fR*|UaD{!3L6_V@uO|Voy`3@xZ#n`G_<>f{tO5;aL*|@8Z7h(-0$#L(`v*J$ zFXTi)$qJs!_Jiv!Xd4TZ?}A?Z0cQh{3P?!>X(+*p*B5(*Kn8$HBam{~hzU4@zc7Sk zMrd&fFYaYu{1Aj`0-1?uV}Xo#v3ojl8*A-!P)UW7!eEv_XUJc?ngK~<=*1bRml*&n z7>+^|!Rs`c7sU`qfEoobMGBAv4=Gfj$rMx=1ig4R9a=u|g7YCLI6#htCv1=^P)i*o z2s@$(RIUWR@PSwiN>m_4K`(Yg5*#Q;cD8_L>kKnLnA z#G z`ZXV@0R{7dz}~5#&=2Zu{qP68cwz-)_bwzhz8kz|Kj_7VWYBtYj~6$l{Qv*r@)Y>CUC_~LA&;RU2-~&`Jrny6OdP&# z7o=JZCd%IeI(ZB2$U56ey}uX-xnw$LFB$p{{MeMS~pk*df+R_jMts~+gm}a z&Owbr@FH~RFdfLQ0BF2oU4RG;wcb`xhy}bTT>^?H4gT%E;3ctpKn?gcpwUvKp+9KU zAjd*)D`*D4TN&o-9XrBaH>;=E%g#+eC{+46#U9iyA z@;r~A{)erifv#2mg3vPwvj{KM!Nnmg zUls&Fl4kS4JWxRlG6bGyvp}g0Y$yNrsR0m6Aq5t+w8`RwE{Z~3TntW|-H-t2?FG3V zyxusA2cC>L0$=Q20NDjQ6&#gN8L0E2c^|q&7Q9p!bj&1VxgNv?{M#X+0drX|B#d5M z`2_MXco!@*h=cA!gBZFCb}DFB4%%{Pu#2H?cp(Tr)j$NC`9VWupk1)wRbkK!2@>Pq z4_+JA{DY;o>_x%^&%;U1bWJ(P&#jk0yI{e> z7aw%C3LFCMf(4O~U9j3qLAzj2c25NfrFHg*f}H*0YCovTgY1HB1w~0fZ!aj}f-bZN zMbHbD#o+Y&S`D=91+?K7oX){J(?RNjdRsxsJ>bQiMR0W>hfnbZt2@L9ItTL}xM&8c z3w*H!qK<$2RM4&|c+x;lHocG#g{7zfc#84^r6^E32bD6&GZK)LD*#HlS3pLBQa9*M z9B5(nqMsX7B7io^!WPxFB%n{vZb54t7-yiYcsC!XN}bgye9PdvjFC_9KJp5X+P?Zp$% zum{R^=80!m17+Lu#4{{_vQ2s789<2`w0~2ZC!PURA%oZoAanlx{|{n|^TacN3KS5V zhbNu^)Eofq-~7iN&j6~`LF^yg@eH7y9-zIPAGzZhK$|~6dp}=t$1{N1WFYoc?sx`J z#RD?u9CtheD2IU9$GGDeKvfrLf9r1Ucm`1A2U5SDJDvfw(E-F>${o)DsvJS=8Qk#< zpv_t!b}x5411Qmh^mcH^Gk{Vwh}{5k&w0q6;xdqXpzLgrdyfA9585Z2&K=JHDhxs9 z#B#?ofR=}W+~dz3&j8Aap#80u-0=*c9R?t_7I!=YXww0REemqb5y*a6K2SJ7+5frX z89-YAKx#g5#WR3*1%TL(x#Af>ja*Rp+~taA0Co33>}y={44{r3h<%)hyO1lM0W|&sGIIu3 zJmNmtoP5*`px|A!I5*q+fTWEXz?2b$LTsz0{gzwsj#I>DU-({I2A_E3jkXN%UAEw@ zweT&rr0t(YY{+GR?#5++Y{g{&?Oi3Xvo{xf%K+Iz8`}M*@l6LK18DCoXdnB|B+yB^Ai2-07dqUY!(e>0)AbK% z@2u;E7xkV0|L+8)h_ue$7SQVayiQOr88lt@1$0QL>lerxFxM~q`+dLg?+=x+KE>Z# z3~B@MvobKe;0O0+Svp&%fcj$lUB7hu3Z!+5I3l;0L8s5S!fqD&0=|Y>B*6Mqy*7Bv z-xKFTQnx`;QQVUvKN~1z8aIq8{Fx1Qk8}+oysY4eH^6xB)LN zFo9cvX`SG?ZqTuhSpxjqA-jOGcwQtzq(Q@MFP6gC2LfJbGJ~~&MpIwdLd4TLU5|h^ zkcA!zdQk-t0<|qO{6I}PO+K)CaGTQiOLwS1S~rUq@~J*3Yf!&{CgAt8I9gw*_klSE zJZ$93)6Fv>@WpLjuxSA=m{>s!P*-^ZC^WZE1yLZ+f#`s4-xGl^^ubDaI$ck^p4uIH zBIre)FicMkSWhd63c&DrIwMFK2iWJUVeA6|FZ5wvI}!N8876)q=!H3ioz~gffn+S$ z2|5txcDkMbJD~T966k)jdAg%D)|Qs8x5ULePs!NGBlR#R70dgZKPFMqKs_fWrlRpbu0>mcWZn z2AJp`@OHy2))!?EAy69N-|l+=)PPY5dQkugzJM3vFdOV3Hl%gB?f_>oa4z!w0@+Xs z&Ou-J_q)niU#N|Rn6p3hOSh{8I3ZjD&yhld1Y)t^i@*OxK?@{67Q-^ZDsHgz0$yAM zThGG3KlDplXG>_w|NsAAtZfDLF}wL8VdVf0tKO+kAP2vIR0O<`nhkCN@^AOm2<)9Y z2Oc45d%n{;TSRq0w(Emz2lso^ zI$d%5-3%1JptFUGKs%%P_q%=ptw;bF9r%I=Vl>QCU}JBzfIPJc9HQW*An41Oz#*ES z@gFn{48771q%r8lzDv;dT?u#x$WD-ow9Xz^knD>_kg*vIpxvqaLw|r)L4bqMOO)N+;y=D=(KYz!#c@UU*>+HQV(<0K{xx zj=&d-U}i&H^!N{4H(Kfh`7x-s6_gSKUewG$q|PixtRc~<0dkhaYi0iJt{MSZjJ>{h zAgQ*u6=W3Xn(4q7E!tp3{M$o!po|xQR0O>UgE$5`0fUm?i@YYJt<$6?V35&)FMj_9 z`xBOc!N!V%jC~DBz_?A-hGh$oo*;0kwhuDH2$F!7hj$u5d0{U!2$2dy=7r$Gkbk@D z707uzOGM%sUdYZu>P9S>1?onC8VA;IUL?R`t%>^IRl2mAj#5Mvo ziaWh?dK7S5SgucyX`c|NkA328-*J z7Y7ys+d16|gLwt{<`(Ug*F$Z?YI($ip}fK!p~fvGWIP<{xNd=@0*Y-#?)EM>KX+ z`S-j2>4r9TG9jh}bh|zXc)`;MY3aB=c)h3F_d(!`+2G=xC9Tu-2KZ0_@L6ClzWxNK zDzNB&JI;Q zNSSjd;KeLR0`7Eu(e3*tusifc(2MEkpao2cU=~9+=;q&6NcG<7`lj3WMPN5*<9HEF z=)=n_Q1QqPDmPqj1iUy2aXYwur3+!Fb-F%juKmEk-v_>c5Tt!E7dX_@I$bY-HC_mK z!2nl$0h$B&x3hQ!yqLiOQ+kGfyYCs$#3ZN|<=@T|5cnb*q6yU2;ot6hA)p&nbd|Ay zbZ`W`@CAo1Xl3CEkS&nQxG#W;-r|(#Y0HE!hGO+A@GGAT;~P;?VtwRU3QQ|KtXLp#6?0dV@%hB<4} zDNqv*rrl7KAUZr=@oFWA7XJDz|SwfrDQgTi7B|MpN7kXdU2Ua+5rrB7i{ zLNUJ7?W&R1DdO>BUJakmlr`b9FH;l;iw;NrFUNP_j77lKnECF%sw!2ch~c<>oypu&nn3aP&h z>WU#@aDQzN1GvBD^8f$;ouEOT9Uujtk@{=LTRr|mH~HSK1|3(V67Zr3o|HO3$-=iI z@WuJBFxPhQZx7W8dXWdt>YzAk;ot7s0*Vlwz!w$}PeGGgM?kl)O5lrNNcIhQp#{!e zpdkK`CBwfxv;`E%9RV+jAcljpu^5D%*6I3&e|zYgpe)`O!4M%(OBFnA^WqXXp|AwJ z_z7t|ce=g+mD4Ig-~!|dq%jfj;xxqGPS+>kyajIGVH|j%1Dcw>3OXr8AWQbei!Wer zg500Q*zNix;6)q6kboDp5JqP!=+Keg-U9IT=TkwPpcjsZz$p&YMF6$=wzq<0L8pey zfS8xo={f_{aRBMb;(PIEGAJc*1ibJBr(aMz`$t-*OXz|Z9#xUhJv_wMAbvLwW-cpF?UN8UFn|0o|b@g!-p4psJ$VR{}&? zU#JfO&9!!i3Usq{1-#e;F*cyP7ZiwrFJh`7^%XdPk^8ZeVG5z4ZH%n&bz3)BL%@qY z;F1`WA{+R(`}TkuZVf>%#6E*#G_BLMA&cR~4say0bhajd>Jf$)D`5N>P+)illY(1f+H1*nRS)I}{WIUfrP*{QG<Pk?{gU$`&-yYfknRNCQ0FORI`~%w_ z@S+}^hCyBM43JIRTR{|PG6X~ic25PlC+NjWuqqyi^Z2*BHb52uh4O#{j2mW{5m*_> zuoSRiyT@3tv)l3Ww&3i!} zXW;M41Fe(j1#tpj6hpFCTBj>G`-gS}y}0lZ><^GoH#qD9UiiXQwe+A)c*ZAUk8EjYzTs(j#Vo`>bbgWO+=7YwQ__zDGf|u1!33_n|Vm~MwzF-5}1BwgK zxHkXxUXU%I(FhPX=tcSwSpA`r)(t+NC9Sg+q~t|x+5i7(-JmQBafvU;CE)HK|98Ea28r@-_cZ_o8%QK5!;_7Hp&N9XfI{Gl zE$*PwQsAY>@BjZH6{Lz{Jj08*z2FKGa^9yxAE^HUs_d-aym;ITsV({C89>|5bQB@; z51>9oiefwisB8v}b4M!1Gk_8-s2&YaM5;%@9gK`jP=_KtF*7f|Brz!meC#2p?nGex z{fWL3G%3P#C!Wco9@WdRO8dxN?AYB_6^!psvIf7>A;+gdDgQ zWr1`h4wgWQW_VX306dlgDr=Fu606>VA{>-=Z$MHjZ2Xdpu7n(WwgOq@~5=Y_T z4C)!|2mp5_9zfcm0WaM5fm&uDufV$!EO0wO8emCl_QBF8TCX9v093f53EF`KadjmYI)RHsP;m^}iuC9u zEJ%K!btN3s;u&5PcYsSuNLS)m2c&RJ1NS97)DV4%5H+MS@XVPrB=;X?=YtxrDgiHy z;OPh4fB^L$`r%H5_8;^h5u4WOirjzr0Z|4`W6=JCFeJ|gym$pR7Zk3j{RbnMt`mVT zuDyVT1-$Ag<9}eYW=|7x(4hvZ9CrFmHqU4;A1@MD!mr zV0=)^88SKsYI#wu{~+-RYCH8VkNeSRGMhfJ_4T>XdBu!Q{y9N{3tKph7D z?b!PdGBCqHeuMNMPG%F+e=vq*FHmOzTtamOy_oP6><^F-tpC6ZSB0f_f^&PNE1HJzsoAn>1|G*1!3HJWOr%Xuu z64Gm>S^ps$GUplaA_>ws0~Imdp#q@(Lj%YKud($Xwt-VPOTY_Vm~It_?tmBB??BOn z+<&kH8H3S(5C)0j?mv`RgGx)}{zHmxJj09FMsTeN=|4PZMCv~*ZiG~k(EdY?E~5Xi zL>JM2n5m2CKTOa?sym7AKM=p3LO%m-J%wBbEa8ERV?ygG_JivJDy*k~_IKgyDVAkG z3scZEJ7PVBK6uy#l&nDuDEPOdt*2;s2#Q+JW(ANm#;O8Ah%`8}hQinf0$$vNu}=iP zc>4fq1Y$jf7EJm;0AxMIO-PfKO6w`QA*Kbq*z_1=HOOGUED?wUMAqPq4 zX`SGO6ri=&phLScd@c_071-y|F!q6f7x!W86M-*2-v?O_E(%{fhp@4&r?>-d9B{za zQ`l|>wJ|`B2CbJsT2Ju>%?Pyh6ie5F^g$O7Al6glK>`EP&jYWgn3D=>HDF&)ai9e} zg$SN`6aiO5Acuff5rKw9LFY4r*HdUhoE-2X;1S4+Nb4!`A%z0kdJ0RJ(?K&2p?iX| zSYN0?guqQ4#Ci$^NXiI!aU9aj4|wqoECQF@de8SbGoTWDbzUu=NyC zFv}VtmVw$n@bwh2DWFzA-t`oxD#4=!;JJI8>nThF@vWy2hqwxPIvO<3`r>}_f5b`N z;1UGuS`vKgDfZljco@1!1Z->v$XMufGBveF%IJu>tB!#Ci%=xF2Ba zDV&qAtfyFK0%7xG+Slr}$zT&+y`G1yXw?pc2#` zfv%?zu7tNoK~fK)@*P!yXX)>CAeA=XnQn<3Uy#F!!0Qv{eH)>F8cQDHrWNmzJq z?U|jthy@jhrJ$ez+zuNv28K@G3*f_c-hjtDzr09_|Ns9*Y&@h@ZxDKI3z%;1wVBAYIK)Mq;-pgrFDup zzBmPz0x!w^&>gDNT`H5-&El5U$>Q~5Jy^>3%P!CibXsSK?~NC8V*mf202-kJEwb}* zy%Cu4gq4AzJCvi_Ng?3HKYeI<)$MBlx{BmQ?{#o)>-IGO-A5J=(#*d<^iA_2#W1MjWK2ZdS(4(0s(i`pt_!rI2g^a*=># zJj0FukoEC0mhlY51tsyt8Tmyesd?ZVoIneJz~l8~rPoa{p!JV2;8fvDR(e%f4UaeM z>9xNQHND!$fMW?;di?_FF(T5dFvMl#r&l9zUl%mi|03YU)m2cZqNZ0!{~44^UTls= zO0UzRK?UZd7we+I4n|9_KUP8wgIp^Mie=DjFe1G!hbh3BUQM9}gGvOn^eP3G!kS+H zM}eG!l3w3L;Y+W6x@hV3?iJ+px*nvNV0ztQ9nbKBr5HKAwiUzDt4}c^y&kYeq}Man zc+zV~cyH~Roub%^S8!p9y^$qgeW6x8iyvCvfY+hC*n1i5ACOpDr;G1~7k45-F?SGL z=z)#FnEVv5K2>Y-;!5QI|5@^&@(nZxx*_nz;pNasE#(Cbv+?hD3Ej|opq8Wg#DDPN zVz0OGgKwZIb>QC~DiZ{{jR|~uoJe4A=!PKBI#O2w$WqFcKR`S76hLbdvRL`Ihkglq zAqH_KNa(c@*o$9Y7)62_QNA*PAfv$hi$wx@eK!Pxj0zQiERKzX7zG+|^8FI{;`}AB zZz1!A0k-iBFLDdP(E=$&J`{ptCB*v8i*1FFSb>a(N7%+QZ1@k^hm>L)&ybRtmYGrk zDm}pC;mvQT7azJ17b4=rCxW>6aEU;R594LjijSXS^;u=ys$&W#}_+{_-K4H2eQ5iG>*Ab9a}ER(u1`r zyF+>Sx3h2syx4pJ>?K5#(nWN`i*sQ}?MZNU!05U_a+Lxo#vo>S1-wXym<1Apk??LjtPaOB1V4D9Zub@ zn7O(GVgUi4E5Ur;5(@HXK*oH~Ds<4Ay9#x1ss8#H$P=LAW&1g>^C0Ok$1$GaMQAQk zI=qn!YIlPYmGzq!vvVOykzbwxv|gaZ5s?-rIL0%8tOBhm=y8l^@CkN8DJwv$1ihss-{oB5X|)H1+tS7 zT&HXYr_Y;^kU+Rz1MGUD)2HTrjP$wf3^+j0(&qw%C_H`c2_l?6Puv4rKz91Pp@Nn^ z#UT!Xq)#4~c!n2SvyjrKMK)6U{GEl8K1Ey*>C?akkv?@?@T5-($bP;T|Nj5q>4vTR z+`$OCVx!Y_$%{3C(3ub41uqr^LXU<4X?!sW!~f-4ii2gMZdV@u?K}d3FW6w_l*(lt zfbF&J_T}N`qWe2j_}J0Z>nQ7Xt&s z3zdNX|Ff7uxd`IvfWQ}mFlUrXWq}s*|A5OJp9}M_7AT~_wg^wWVTSRy=rA%c>;x_Ff+aO>kgFK^w?jR#2Bx$` zGK&XvUjk^r{l&HuFt34|s%VuSQ zHeWoB?8(>jULJskA~>-HzL+=%8teQmQ=l@?KodvERDlkaUjL_a^wo)T$L*7Dz!yhn!Q+ydnSlYir!aKEi$C7~|L=foOLSfG;+;2W zz7Y3mcc2t!!@oUr0dz?ys6ccKdhy)*|NrJApy~7l{M%iZK$m`k8q!_?FMh!#m%Lts zEi1j4;SDa58Tq%n{s?$sbrc-Fph@;DrWZUAKZB>b3ScteB{~ZNU-Zv}`l`eXlxje$ zocOK&V#q{DFRLA}k-){!;Zx3A(^r9QChv_xzOVB7WwB!P9vwZQ^>;M0qFPK4r z>O14beXsxj)4HdEWYRiAr@T1t1uitVw}M0hUQB@41=?zv*4+ydOY8KV10JHB10ABA z!@u8k4*!1N51@kgJZRG*L|N#97foKsAzuPEI*ajzHO$afP+f>Eyg=m)|9)RkT)6OW z51j*#i~S;w{QG_9T>izsoh1}h$^^W4dl(uVpcT(kK_&*hxCs$U>jc~IdI|q_FaxyI zdPd+2?isK!l}qamodfpwbx%+@fK`DO8NE2}37Rw!1>arfJ0q>L7i92@jbK%wQ_?!8 zf~)FM?w;n^4ECwlg83tOS z94f-UpQ-f#e=Dd>lEs+CkTDb1_4q3VZrVWyOhdoC$ngM`Kj8KRNQV*=0|QvcESQed z5FMa!19eq+4uK;W)KUcrK`X#(FhB6OfDV=iO(18?hMCZbYQm|52oqTOx3_{y(twOP zFxAme)zFcbIY_G6`S*iWgMxj(h-331hagC&3be6U8LE$+e>-TXB?Y1HwFcNnVE2GF z0soW)hXKg>puV9MLM86h4=cxWAk|+>D5zfH-_GL-O7@@)c|Z8~BLok;oxl(XaT>_N z4v2-I6vMwCSG~OX05n*@g)MZ+4A@%mCCk{`1K>_3;Us7bo~Mng0{J4Axt<4+VRAg#Ry3| zAQOC1P3S{1ft7zdICugfX$PcQ9;%v^e>*5<6OdH1Be#+F^9VE_bU=!sXX4<{0JRZ7 z8r6|C^6v**18P(5XYp!2;DFSVUx&~K${g?a!9Dmo5s~OX$+HEjk`a9^DI1G5<0crOKywC@ydlpbr2r}+1hj0@pOF;(!LO}ChQQQm>QSp$0Yx8K( z005}hZvE!PuPDd>K-vUQGhHMEa^@CjOv)=Ho&l7WKy1g5cm_})fY=rx@eC!9L2W}A z!vHjTWyk%8Jf?5qPY#jgpe-REMf*e6LC%EAY9}hU!4=)WrqKpST28{FNAi3;~UiAKrWlW;{o6Lpyps54_E<{MH>%T-~ehRU>gru2GfCcJRkxl zi#8q*05%V4Jis0#0LmTUe%T8H2bA#uMUX7s-Vms|;_n5I2Z%U;o3@}kbisol0f8?V zVa~u957^!d4UQ7z@qosi-~hxj9x&Y=)HB&=k1-xF4`vX?ct8kD24y@z4#f({ctDi> z|Nk#S?LmBEhZR90rQX4?{iodfrP=qZZUW00(Z+i|QU|-1E2epoTId zLZ%2kl&9MM{|~EH;kgSmR>HyvI=u%}3cV<_g^UV7y>5i!5U>kCu^IH@XE)RZkWqnF zP>B)nf*D2mYe+5u7Z{SZ|Nl=Qs&d8|Y}afEMO4c+lwhMcqEZOjD1>U`yw^gzAfo}` zKFbSb8&ICJ1smfk(Ru)sk3dI(Z5IrBvAqi#g8VH^%nS@WAbnET1ux!N|Njp?q{w&4 ziwD-A(SS=hPg4U`zBc^e%RBai6E|cI`KC3vhnCjqx`2PX?-Fop96prz1}+I24Zvdd zi!N(Wh6Kg8?~lM2I$Ocv3hEMOF}?T);~fZikpyFdy0)PUf?hOsLVX1p4FHWLyxRiR zeIhW6>BRx4j{O(D-vZUSO9Ech!u23V1Hij&K|%83zSaN#yC9oNy8Ph5fL)fL!2mI|!GI-TRfxfWDIiq@noX#K0YZ@Q z1jYP|GKed|r7&_*)3X96HBc)K_h7(Is6ohs0j!q)|G!`Wxe5PZz}Yrf0H6#89J4?g z4A^M_s^(D!1D08!4hBpEDIqu*@PP~55{4C3UtYvpfQlVFg8};>IzX8P)Zh8P5gfs2 zg8?UDe!w;uP=jj1UL+H+3VtNg!V&t=2Ls-4g2MphBT&yz z7on0yg8|hL3n5iBuEBt18=wITu54&N81S3}90>T`B!ucFY=Z&kTcD{I+h9Nw#1dFY zA6^gjBFbPuFTw=O!2kzT6B?0Bz%m#h1XT?k3);+l9}Fmms)P;(>_Dg_Fc@G5)d)@3^$3lyOpLYr4Qm*Z)dN4p1`ZBTnTKOA z;Ky2oPiZdX>57*Gx| z8WyAwttf*5OV=QRw3Uj30e@M*{>2;&m;y;k0WYi}J%E50O5k*lG#DU=a1&xMKq4ic z;l*+#~$m9ulq4OW4hU3MRzyJSdF?EBltYHayAqrDlDwf3zxd?+L@WuaHmb(pMU#Qkh&ny6)rD+gD)x&=TNv&@@Ezg$dnfolR!>Y=nZWN>TLzd2lV!WpB^ zgMtSV7cZ1{f`VTHylO3r0hA^-fDG&PZ2@TjZG?nt043Hyg`gMv&w{joR=Pd_*LDvA zUg)d+pai%f_Rbe^gD4`=~Ws6A54FVY!)NT{gKPTUV^%R_ixaO`R!9drhyXg7tncEpkPFcgx+3| zMWCPqIW6c#@DfmL$iQN*xA(&<&~+-IFM@hoML-$1w|5EXa+%(#4j>2iwt|u~C~81y z78HA+oB*;5WE^O27`#Nd+ruUBMFgh~X!ijB{;43j=3mVGEeAkrW(+_F@a+d5G2Q%w zrG$rnKRB40f3lXQfCi9Wf%6L}T?O>^f~*4>`vo4$y}clJ1@=w_B^q#IgvERNI*?yL zId#fyP;9n>D3DuU1iq+V1`e&XPS+Q`Q%xR&tw7GF;DKRiLIo$&DjCpLKZ#vD44_%; zso=6M>=$TNJ7|O*;1(jn# zy{(|4CIB9yU=Q$bhm<_fK?P_D&Tm$MDbPuRd zKlTHP_0Uge@y%!Xpfmu8+k|9n_>ujBH8!`wv zb;j-g|3R0=w1OCrAqOy%e}6AXr12+cF;uNRXe%-(#Q66^WViRYf`Tsa#eq#A-?Id~ zI1X-VaPaR38`;?cuHarM{s8rJ7j(CRD%9o!1p&RiASVZQPX&242qvBv(Ax{D)dG8` zf-10}-d0ep7LWn59GcKxr0oRVmZQ=QuA9@kTR{rbI-T-fto;rewL1R&|Nj?6Q0lB1qsscP~W1vEW4mNB}fTum`jK;#~!FmN$Yg-d-47& z{1TZ3dGQP{|8P!R-TuPKaY0M&V*wbx4v;~7A$5fFQBVLStwN z7REDx+z4W~6~;4wLLbDgD2!(SHJ(81!oqk4P$dpxrxnICfEs!r^P>yn89-qKVn-In zGk^+0HwFfV;KFzYP!SIj_XgSZ2jWi0!gvNyw1LDe3*#9;D`Xh86LK|BMfssy?7 zX+b;#s8Up7U|_gf5YGUrb3x(<3*s3-sR_j1Q4r4n%6}mCs)Be1P)-A}=M=;HKt&HoeMUh%1E@g-Vy6_uGbEOj zFa*XYmZoIpGn7E+_`>+S{Gwbq7tASlO3X_sW&quv5}%S;%mBJRC9Np6Fg~@o#0Z6F z$dH_0lp0^0mdlV)7@wY+ms*sW9G_Z|9G{$%Sd1)|mYP?F%+F6tD^4w8$ji?xPL0n= zElbT|C`gS5ozPdzke3E!z#YjDR9u<_y6J==H?g9iG^aQfe$`5GT5f!5UJ3(#gA4~bxVStC;`Y4K+`OXP z%%secVg`^RkRKr@kuy~073DI3LaHz)-3V$tLvd*?LtYX%C_r5-P=ClpgMs12Wm|B6 zXwUWk|91*<;pz{0y#D|HMZ_miNt)K#Yw#LcQ>cK19Y6j5|H9@Ibfgk=4>3qo`_upb zpmqtg^8`v$;Hq7rv-igtY6Ur=Tb z?423{X-tBOmVjPJIo>-JRB#0Kx_$}h?FE%Tkk*F_YUA?7rR$(Zo&o=U@N5j|w>z-}y!cZ96)k~nw+H2PaFhH+fg!XD z1a<}Jf(uX=2pSHM_A#i5_u|JiP)rHHD;BWV__t35m5ZR(D#$wly}h8~7P+oy_G04>H>TmuSm3I6TA5`o|j&{R-C9n=dxtrgOrglXt*1*NTk7xUJF zw7@$+pfkC(XMFHDrbWd^wY6)F(a+X~86;9e*Hc36VAavj_e z5~xB8c;P!893?P6_D;0{r%%@x0r1`isP+o#ZB2l5L4%0DW6W9O$e_`|%($0sJE-xnM!aa-8MFJH^pnEMr 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�$B>0Mgb+f7b{%B1wHesF(uvxP1b%SYPNk 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
)`2z>d-^eAqQSl2G#Mpdl%?NfV9rg6E9l7 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%0AT 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 z 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


TU(G__urbLG<*tf*sr2`v9b_cPhw3LEWw?;F~O8 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�!u-JUuS}y9JbS2JlhPKftSV1wq$K`3it0 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

-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 $TY|b>cLcn+1|GTt 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%0A_AIs1r@NMdQ+kC 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­vAdAm;|Wc&`Aq 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%0D*ba#$uwx+$29b0^lO||A6iU*BW;xKc4 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 z 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

Bs`L&0;j9dBl{{IzU zKYUL5mBwViCiwruPZy?MiSnO^e)@gr{_&croF|WQH*4{a<6K|3*q9D7H2=Qyc_-s0 z*5_Pz-?wq;@Fu=l`izNvGuL+3%VMV7C)w+NJrGKH{qUjFrwQMh{@F85`BC#{FIx%o zbAFuBi{RMD?ay@jL+DpWt}xD*zkC1O_*DA7=;L07uRjEs6*$i^Ecw2ZTkWsp z_fUqtpZEoraWMVA_W8=U(_HJAc0N*j7Q@s1q5bRs@6~KZe3Q7<*s2+WzUgvjFr~1Z zW%&Df$v>?h%l`jlYGvvB&vRSutJmiRzg2!Y{S)Rs_OF%4nPc~#-~Ut?0vM$K<+Av2 z{QRB&Z_(#UmJL7We`5S1`gGR&FB}>om;O&wUfS>yIDS zzZn0TvtDQXDOAB6$kg}m2tzmXItE=PgTF_AnX#!dDE@x>ON7z%XTggPpKZVK|11A@ z{O@k=Hm>D-Izs>cJ^!_yVK2jqf1AHq{5a1j$Rzo^j$i7N`yj7ehOeFUm)|xzCSNnpT6(qpDEtU z#Qpd9KZ7s7-tPUJ^<@)7jBx0`>;FACKQQn7wdDUL=5y>)BBC6n3~E1ZzIqC-VEFh$ z{-@*bO$^U|UjLN&=fhVyz6{|<|4aTg{%-r7!fePg^WPdSB_@Bt{r`^tZelI^{N>y8 zH!0u#d`Nwq^vmFvCHqnSQqE4UJ>ORUn8y^wSNf-dx$|Q=Bhzo|Uq?A3{^b4K{%hmE z74Pa9!@jQjzW%of8xQXVABZtUFo7e%P`vWNu>%_-goX&!2T~s{UW(n#29%_14c5nN5FjGrss~&;OV; zkVWIyC5DjSTlgZG;@Ft@pGkcFW%};p=i>~`KmLCD{7vZReZ~g9m0Yr{l3)J)jb+yU zugc2%Lr^eBWF51}moMMWe@bTA|Nk`Sbgm2Ed%kb`y72YJ5BzKw{~u#_;(W0=#lP#QKKkMaReT>VwzX;6wb)RX)--BYv?=+MmDv*!leeOA_}9)&u6)hJSW`-1;NnO~S8hyi5Nc z6XN(f|7Q+sEz5?VM}K&6)Cz9pOklmpRL8;aC5iRZ*W3TKSSS5_@-bS_hi&Vp<4i3K zin3i+Q;xzuU@BeeolE0@|)-q)?tN$$dJ^ybBuQAgn zK6kcje3`6v{8m4NJ{W)7`fDeH(tqXuJJ|JkWSC4@4}CQJru(OXO`T&qvoLe!&y|0y z*gmi{y@~#z`G4J?NY?)UZ#h?ddCpYDl>c|qC&nL#m_ixW{5|*o3d08GGKLgZ-`|`5 zYyW@y*qd-~22y{`fIw{yE9@ zgU9BjDT6x8jo(}UbN*TWUGJ|cQz_F*cB_9$%pHGXxX!S*eeeGBm#6ygv>zIOYX1uS zS;3jW+46D5x2M0~viq{O{MGvR^jAOAbS7Db8s>%nm;TTCvh8OgSL642pEW!sgs|6lsa{Po6hrZk01CzlmRM8K3@Y{J-jVF6$MB?`+mwUO$=HxjuaS^_)qU z@!=1}|D}J0erErh&i0;t{vTzQ%6~r@eZOjd6<{d%@}K)J&&xl5IW{w9Ggy95WVZNi z$Nus6Z^mDLpEA2LzvubI$iyP?zv0J$57QX;|9JoR#~+u!nSTX-EoReWR^d?oclg)b z-+#U;e4WWToyYM{Bjb)AtN3>Q+WX7<`@S!?f2;n|`SOhC6vtvw=Ra%yNi#fQUC!YC zX(pQ>*SjBo{@(sw&GC-yJ^O6t;vX}9?*9_ayzkEp#(A8Q9M&8Yzm~9sf3p9!f;;!C z+)tHnIp4(@-+aBx$i%5Cw3Vs&&;H*F*l%$&{S;zu{(bqgC|~i9ML!(>EMxx0Q2)K+ zn-6O`^90_1oC)tf{dvby%es?t{yOL5cBbos;(vdB`|;<-*Q0+v{FeT+f%EfEk-wAv z{`t3sHHPKVKlyJt9M}He`gP*(w|`FmV!k(V9e#UOMCykh>w{lkIexGnVmifq_g_6@ z=wFs!XMfE7<;#4CrJHfd4?cz^Oo2b8nUxr&{x&iC{+rDx&#KC_`u(vtH(3h>-F~|M zjr#HEec{K#zk+Ox?5@J^xkY|Y`zy|*@#7Ys#mD=c`~Mtdxb=J9A9H3Yw#f_=|9<$f z_4hWW{eNFFiG9ENe(q-<21$m~zwa_CG946O!*k}>`#(tx`9I%&od1D`Nkb@##r_r%+D)da({6!efa(2&!m4%-@pA8_%9>2^mF*H?w_*1T$!v` z_kP{^L!Die)rv#r_c`X{3@!}2|IhxD!0gKD_R^ADis1}%I^+4jRsSj&A2P5qbuvl* zEdE>0QN--__ZkDwhgg8kU95{FXIkQ*&hr)ynmJbsQ*>)?-gUv_dhJ1GHkz$f6n|G z&eO%B_v;O-+OK0QZp^x@+@c2jGuXp^Zu`>zwiS^RMLJ*Pm3=m21BO^eWhUO| zHmt6{ZvD3Zuge{+EZh?AKnVPuKrP^D*;J<1ZtGcf;I_whdCN?tZLx9_Vy)xJxA zS;xAaWd-+hwtYMg|D5?;DsqPLIy?8TW8eS%QDW+3n8^6#*Gc9x49k9Q{u}@P0-Ff8 zKj#*%$bWG>4eWk@J-(E`yUls~>BrZye;a?CVKL(5;mu>$W$FKX>gyRUo&TS|&;PZH zDUYxDzuTWX?{og06yRfh%GSpz_iN(iurelQSk4ApA&y2e2@K+ z_xqAi1dAQZr$3gge$3N8Su*Wp`|&6C>vooF%o)Er|5!6>eyQR8%Ov=F-uHg)qhBAh zDzJX%H|0rXYx{NifBWZB*0W!ae+>E-_S1*yI727jK^FPnA-`>8o-pS#AN|G6VEU)v z=NYD(|6el9WanYC`K87r{oR=HtBfAU!k@?g?)+u-U-sYMzk7e_{9pd{=ikE&4ct%v z>|^a?iue`66Ukb~Z^o;+?=oxIpA?2Ej7C3K z{aEt7m@R{?gMY@S=HH>Lzt}q%8JL-Vd9Xa@)BXSU``uqV-&eA@e$D>BK}7NIHbx7E zoPUY`d%ipVS;Fi0H{kE_->0}DfA=vlb1e8?_W9wD=S=IE1pjX4T)^<3WgSlt`wq?( zEX!Xg{i|SD{BQsNOW&0K7yV@T6vc9sXB+FX-(~+TIL*FZU=sRxoAU<4Bo;lv>i5Tf z{9vhPJi*rZ@8hpfhMNDmEDu?Cv#$Qu_ZPyGLt|MSm3%(dTt{JHTx_y4v35$wNzmkIy)p3l(38q1-_ z`01)A)at#p>73mp}jTGFfvh)vy?W`*{r9K! zzdE+(4Eg_S*`6|O`FE5>kbOP#eW5cyzrJ;3c=bp9PxBu=ULPJs#%AuGH`#wf|1D${ zkekQQ_T%+;@1Jr161l1c9=Fvwc~LvG{*Jqt3s-|2Ww1{af_=`JXwAHyFSFxBkDMHHmHS*N0y||69V~ z|F`?!2F5ka`+x5IW6sFWsPmuozdX|>Hl-gYe&sTJWO)5&(*K)G70hw}n13@cE@HaH zp#GnkMUX@MC-?U^|3aB({A2lB!FZpA?f1OjQA`4i)&C#-k7JEv+4JM?kC*>*m_Glt zVbEhyVeT=8A%?l^9-#GB3{U_bJ%+LwYW_W8Z2G&JS@>t1-Aj&}zqc{{ z`#Y0y?LX(gDa@08r?XXmnQv(-eC)d|tJWV5=7ztGe|%YTf4yZ7{A6e(E0^;{oBhHs zA(jJmV$oaHSW1mLOCp8ZJU+pZue^&evV!7~3n?2`?tel}y;HS6jxxai_ z8viu>M7IujF}Q;p3Pi$#^{!c{O`Yu))`*AkP$Z7e9Z-hnG(9kL?%i;`X?-BZN2Ej zs!vJpE_W~P*`W1f&4GgpiP`f116kDQC01-QyK&$-SixbTVjmWk}~QgJRz z=bhObra0x(mcG>z&XPCwE`H+a zvzMBTL zVc*E4f7S5iY9=X(oLL+7ziHmFIsV=M-kvv((mFSvA8F9{Q=5PC{9e*l!jlA`i*4`&tg+H>(O z6y`Z#e3Iw-=el24dHMB?7?Up+zcc=Edz+)eN?9YBH>XtZb1U`#X1ORV{=wBhIPkmi zvUaukKXw0}cyWr!NF;z`;SoiSC^or&+wUEg=hZT0;JK(EvQpTR)Av+Y!q+q-mbMAY z-QEglv(&6SYQ9ADCX@M526+vkU;B)n$HmN1UHbp=y+=GJ1y=L2KaTod%&XMDmN5b{ixbsSQyyD;F|F9*5yGMGpmXC;1NU;7 z&&uESE`7=RTJGVCx7!S2#9IGX?7zUg;Ql+7rVmzMa{fPKX#f6`v54Q`yWV9s^$@O? zLhB!Ve_QxvQJnE|V_7TLXsN81yuvpWg`cJ^oT|U{m^gRVqw_)@oE2PoAFi_Ta-99U zfagAUqgXiOsrM%&FYsNFke4~9c`EMC?B)wmk=Kv4aZ22)P!Q(1FMaDX5949M4FY1q zPsI|=%XIRtGyYw{`igB;KUa>jki(a4*E8H&M8c(=cG;@+GK;W1S$!}tkLOB;(&95; zw(_RjtUR8ZaF9Xf^WPVxBFkQ`z4Pz5h7049(7#d)i}*$VGw|e}duWo!^^;fldZGGk zRzp|O1$MF<*_jLGDbBto#O_1VsE95AzuQ)zb8l}n& zx8^Rqu}8@H#PPdp=B!`|TktV-$8#n|zw6G~GMapU`DCWamhfhaZ{P~(wq56C# zBkz6A&s%wz_5D~2c-B30Fw*!hoGkMw^-Gvortr#74bqptT5y%GHO}K?{mChNR5I3| zoz1fRsi@3$!Ly>qKNbq`zwZ{Wy0%m8|I2*7MVBUfc{14xF1mZsX6x^Xe?Blt_^62H ziydHWSF>ZC6>xd4$m45!!!GV|z2_|_{>xzTy3G-hEZIWb?_~{}Kd$G0dS8^cc=vCK zk3a1MC*2oINLw&9)JW}-NEWM{^qjY{zhpTS6nw6q5MTSLLP__zvCK(l({RO9E~&Ra z*05)v-Yq}t-M92vI?n`^pL}uO^x?-pL(NwSqDB(Z3zjizoLZ>DbLR1Nz1Xw80vXpU zqaS`15OO(ouu%7Rxoq|CbIx~I4*CT?=jU4UT0t;O{G-<5FTrg79~P!wVlozz)UCHz zCbZ>CqUI$l$9G%UqYlYrXx^A7e(vuLy;ToPB^LktA$RM-^x#>ic&w8dj*2ON@N|6e z*y662z`KONM-%lAi0|lNSgej?BLY0{Dt8KPA5cC8To%@>jU@qea*|26I)k)zGx zCXbxWelF+8n#vZd-X;(&^7H57u%c@pCH%yem;{`iA+p%zaLgUyGvAjhZ!+y!=XD^( zc3tqjr7e;V|37yU*)J-3?~`r5@a;H>S1hf@rYqu&G~U(8znE^x9WLG;Hsi>83D$qU zQ9pM(#xp zcqcfAX&FID6dw5d#AUgCK)6gF1sLgDXQMLm@*0 z8U(c`*cf;jL>c55G#HE-92oo<5*SL*R6%rs)Pi=ka4>+*IO1jCXAlMnF)%T(Fi3!! zCkzdsrP<63;8Tx43td5~Wf)|^`(UKOrzNp5NHDN7aDY!%0-Zv|jdf29Z08Icc-IOW z0}I#$Rt69Ru|fN4Kx`0(sR8Y5;b4G4kl9=e++fJX0D&O8Ks#`F8F(0Y7(hIbOV}7- zwy}eE>43yQxz z^uebi888?!7&E9afX=njW-tPu&H*~#3Um&KA_FL-<-q4nflj4DxCyqyh=~E@eozP? zb{{b^fLsjOlLWfcT#xZP;{m2l<{%bn*2k=C*h<;$IM_JPb57?<;MU;zz_Ww5fzO?v zU*MX+Ji$~UZQ)PCJ4Nb6UB$S?FN#l-h?Z24dMdS2I#0$>_N(j;xoUYk1xCfgiY-cR z%Iqp9R60~W)Hu|StG8*mYBFmb)T-0A*7>fpSvOx#OaH0_{y90Ll_OcGA9V#4EoGv(3JFB@|aH(`vbUW!* z;4bd5*CWZ3&1;pHulIZJi9UwD7kvx;`2E-Vdj&iTXbhAI+7{#={5-fmL^O1Ds6*J5 zu=Ma>;XM&Dk!vEYqfSPJM?a3vkNFwX9Lp0oB~ChiVZ2(xssz2n4T(lco05!@Hzez& ztWHr&U6?AJHaU$uy(#@idTz#pjNr_pnPyo_vqZ9+vfpJ#Q2->uKQajRrXE|F-^1{g3)T_5bTZ=gWci4j3>vfKz4xLj%JEh6M~87!EL8V0ggrfdRiP10!Tb z4{q{*eO>L3sLUW08A8lLdnW+ zh+!^68iNIc6u4aC0Ix~H?gIq|5G+$=V3>02%R~O>ZSTB3bN#sWXWf4;mdhNCygov! zL?%e4D7vWsxs!K)@{_igOmDt@SoAgf*9^uQHWlvY{L9jg0nxL>T`4Q}}<8;Ucs4|M&kTn0Wrr zXGmoD{*Rq`4&%;$fsB>^g#T;&3;S{9htJ>ZjD<{V84Uk@{BQk-ozadVg6Y$rN@o9m zml+s;hA>!&E=D~1rpNXA}$4f3N@LVDV<2%CMQy zm5HC3oyq3^Nyd%LpBTUYn*QVZ|CNkPOv20y8GbP~GG6>^&SKBV%=CpZgwci}i{Uqe z^q(6+TWy;^$e_4N*GaO>L!|2Rl$Nc->I!6EBivL>wyEByie#l_< ztA*j-pA}5MnfU&!Wjw*q{GXN4kBOOC=C9}frwn_3EcqwKc>Ax!&*RLJj6qC}KjVLf zGqC)f$WqSK_h0khoS(D*U-`B4zbUi$-&2e~{(WOU@VAZe8lxb~@4sw+@)@m|1sPT` z?)sY z_`l3g|9_Hy_x=9FaFmIc@gw6ICNBnq|5;4e|FtqL_;dTurT@GB&0)OpFP7mZL)(8< zhR^@k{?B9({a5sF!{2_!g#YqP>;G&0o59${*!6eO|9}6||F$wz{BQo>%ee4g8B@;x zqTkaP=l{`Ss`!8D-_L)63~_(+{~rD8``74yEu-t-Dh2^YxnC)a{0xT~?f=v z7?=K9z!<@}gh7dM*Y6ojRSZfDYX7yF{xRq?Su$HNzG3{p`1F6_KWoNKOxymM{X52V zj$uBd5@RGo)?eL!JN^eUP5E!~PyN3hgFWM3hE>0gGvqSbG2HkY^`C_~mO1f%1%u{) zcIKJ?3;(bF|Mq{*zikXp|Aa8~F|PZ2@;}3WX~qTyjep{dT>pFiN-}CPuKsg{F^w_z zj{xIThKmfY|04c#{5!(<`ELPJ=s#}eQU-IDDU9>}2QYLnEM@3p==;UUbn0)`e>3J9 zhBl_-3<8YN|DFEM{JWIFmr;w^{2w37jDML7lm1IGDg3WxFk*W4e>cr>nQvYB7E@Luba$=NXoW!F0_uRi7|2Y4%{$KSsiP4Ag_|MObK8!E_ z-)1mibY+zMRmG^yxaj|>|I3;7F#l$>V~%B({oDAb^1lGXz5h#@x|j|!pJFm#PXBBC zGx4tw=-jlw{{LeCU->`fzXF2}(@ch9h6;vECL?Ag=JQOAf7Aa~G0b2}WW4%!!M|1i z%YHjDfBWsm$oMbopVGgte_u1&|C+-1`u`Nr=}Z3~{5|}C4a3VnSN@-7vi}#${DX1I ze|E+srZR>@%vQ|Ye{TPO@L%v>7Ngex+yAFBZT+vvxcARzhERs-|3B%1+9C`LvVVX6 z-SU4jgB=q$^L6HhEE%jiY(LnJvd`fN<}%LYDBLK{}vCFuK(xvzwm$0|4aYB{C8k5Vkl#9VQ6KT z&d~j1KEtyAss9%+e*8c8|C;|jj5mI4_;cXj*FOv_x(s`M$o~{%3}jgS@ASX3fBybI z`tLF0bq2ftpBPp$Z~1@ghx*S=zfb>6Vb1?s_@|X|DdV*tlbPEX3;vrh&Hj_e{NtxC z<32_o#tOzKe^31p|D(d>@c#wF4Cc*$1OKNopJh7pSC)C^|Chfv{ zwzA|hXfxbow)kho)Wu}^d)l7`%paKA7+d~3GTSq~{lWgf>$l}!#=komA{eLq;by$` zZ~Oo2|G61N7`+(p{94N(#bEI_jDeA1`=6(OzcDEO(`GRIf0PMyKachQ#|(G=vNFp2 zU&;{2l*%-jvF(4%KR$+S3=jS$|5f_i!6@>t_Wzw{kEWctUL;mZH-f7dV^{>$^PkFkR31H)v73k2Mt{Zv#%WB||Ed_@{CWO&1=B{x>A!C<_WrrSc;esXe}@07 z82A0!$T)*>%Rk5eZT~I*>HW`PyzoEc?+nI=3)_^Z(>uHAbPoyBR0`d%_^W zWWfBN$%rY4>D2!d3~PSx`umunn&ImId5j(Z%Krv1mHdtSTla6yzZ8aJ|1bZa@;{wH z^RM0iyx)tNJy;l+zA<_H`~THYC!^W_=}a4b7csB< zcl`fUMqWlnM&>a9V6$@a)x6pADDa?_!vDIj{mP9xB;R;hU zlk%S|rpZi;nGBd37;^uY{h#pfFmn$>*#9JEDW-acDux+W?`|96hThmnin_1`W3Qy4$}2c50g^UwCb*gvIz{Qpn>FJ!p=PwU^Jzjh3=%n`o| znP&W6%W#1)>*x9Z75{GjOZ;!}&-CvS#=QR;fA0L3VUYP(&TxZKfKmN#&wm$&mH&JG z2LD^jnDr;=zvKV=f1fe<{$piq_|MPq@=ppA4`b~=vEOM7RgCW#bQzf$g#JxsXl7{n zU&VChUowLPgALPhrcX@$zgPdB!05_S$awHioh{@%>!#3c4V|Mzi*>YsZUiWrXnU(Cq-ul;WlL+AfSh6{g^|4;tM{$G;GnPI}; zN`^+3C9Hi6JN~LM*s-knzlh-xa|dI?zn1@^On(@*GnD`C{uB7`@Sik>4U9H_Z!1 z`~II0rdxlfGBPnPW#ax1s$11q zw*Gs>*uv_WvTlY&lJv-$ei~7&41nhlK&GJ9x%;d z{QK`W6Z0=OmY)m}&og{FnP@ z#+>x)72{n7M%E6-rA*RH(TpX`v;LZ}FJt=s=LuuNpS7It{u%$PV*L5<>Aw^I+?m1{ zk23!LS;hE?g^Sspg^SgK+3An#KZE}}|KDU5|I_;aCZh#|=%4?8Z!!M;H=Ff5vo+(< z|Kb0yFdbyp`_IM_%BcTGjwO}*=l{un*8GwA@5NZi#L4jG@BIIt{tGai`+tWqjgx~> z=syFq1;cKJ9ER}!`xqB8y<>R5JfBJJzbxZZ#;puDMViI9+`TyrHJIhiA zKBf+a&Hs!U(-@BbP5y7n81<+9|Av3P4C)LLOw*Wh7_0x^WBBu{mZ{~hFT+h1KjzDf zbxdB&9*jn;2mZ}q;Qyn>r1}5PA6|warndh9jA{Sw{{8nqm3i8KN5+)jEKK)Vj{MpG zH|cLCb3S9u|HOY~Ob`FX{Ga~6i(w*@`@e+$hkvhOKETxQf6xE^e@}j={R(1IVoLve z{D(KgdWLlje}CO%I`xx-MV5hqVbTA^f6e{}{dZw(`4{`Y>Hp<_=l(tTSHn=iu;5M)JYi`5&Bv(9D92d%zxDs!{|$eh{Ehv) zp23?@_Fv%NuYb-kr2G~6$H2_=&++$^zq0>UGHv;P<6q+69>&Z6Isa-gnlL^2=gZ{C zxa!x2zaJPK{%!wj@t22z=kK!rj7-ZJ6944rD@hIEF%EFpg+S-Kcf z{(SoH{A&%`lY8lu5RbagL^C9EgzpMWy{C8vA_xIti z8~?lhfBoygB>sz^=_`}Re+`C2Cdc1N3@!}&|6lpF=Z`7#)qiIgWSB)6JebWGtN+U} z39%Uckz^|Q=lDPJe4p}`~Oh*v+>`3hV~z^|MmYx{=fBSBZ~yXL&h_IGk;uRsA25* z@B26Ie;0$*pO4I284dnzVw}vdlVKi1#*ga%$Nxn!{r>%iVb0&~f5Lx{{uTIB_-_`I z+nT=s*3 z@hIbLrX@d^8C(B<{d4(`JnGKn&8SEH1nLPg4GYb6t%>43S^nX33R7RJ7 z7ym0V8~w0kv}auZ&$ZPe>CIIpI$7g|5q?|GlVlY{z+w0|FiJtr=QYH%)b{fbu!=oy^c|vX)@ET z|A!bC{XYF)g6TP1fW^uzgo^q;Ule*a%G3j7iN>+sv- zU-JKzOmqK5{(Jjhn^Be}{}0>0fB!NV{eRv1|Ks0rW_Bhk2BW_vKNEiMWO&MS?B5R1 z`O81g|9ksuIYY;fk{@4wnf+n^^W*P={}uml|MI#V*Qwtw ze}WlnnEo=(V66S0#o+gQ(QhMWA%?q*F@NVU&0tx^c;~+ni|Fr_jNFXR|4B2+Gpu6_ z`Td0{i17`>iN95R(FTvRV=f=Nv|GWSH`5(gQ@<)!b;(z4dw12$} zTN$kX|7Q&T+rjjWVe-F1rli0AO#2vq{=f0h>fdVy59T_C9wrTzkblSizWcxV|FwU{ ze`=X(7=QhF_wLlRT=pZ|<(Oa{N^|7T;I@#i~(DpS<| zD5gz+TbO?RmSJZ6&C7KA{}qO#4807IjE5O6Gek4&{J)6lKEuIZRezrTf5o8tPy0{k zzpG3e7(V_DWe{d8`n&YcO~&be<};c9+x71m({83zrcM7(GD`mY$@rYXiOKH&d}iT) zf=ty+T1?r0M3}Dq{qq0VzhtI046~U;n5O*+V&Y?b`oHa83*)=LPk#w9wlf`OoW~@= z@RCXE9|yyqf7*ZV{A2s`;D0>B4hApA7ysD*R{qyu`o)m=@9+Pk3}^rKG3;aVVEW8- zh%uOn@6YGImj60`|NPVV_X)!X#*&}?j6n>a7~cFn#!}0m_1~URh563E8pfvoZVU+w z3jd}v{{7eTH|Kv9^G%kk3{x1J{{8%a^xt2`DNMEuKN*D>6d9)fI`Q`m)5O2){(1aU zV>rWX`LE=c1Jmr^bC@RnddT>cA&|+R(c{-T#?F6Pe`**~|0^*B{a^P#>HnAivl(*# z6*1KO-^0MfAo*YG-vLIY|EvDa{6GJn0b};>C5%`9Z~p)KZxbUQ)A9cqjGX^>|55$F z;-40S$o~k2jK6aK?S4BkWHG+~TlDV(^*@IB)&I@^B>#mlo?>ACwfJ8%V=I%vziIzH8CEf@ zX57Niz}2v_p7Q_a zp9TMNm|ike{hP%U$+V5J?4K3e)qfwE^BE5?Dl>Nd5n=XWxX&oewE2JGU!H%T{xdP@ z|NO{!lc9sz_D>npTNZZa2MkaDa4;z|`u>~ne>u}T#uQezKW_iG{tsig%_PAB>I-Hv zB{MKEUHX5NY0l52KUZ0tSg!ohV9;btWT^c=fr*KE2Fna)Mb=$^Z~Q3u^NO+J@74de z|JeWQ`(yvh?Jo<8V?9T)L z&oF1O3Nioty?|NgUkr=YfBj!gOuUSZjJ5QEWxeV7CL>W97pZ%9)`t+~-|JpzG{~Z55|GWM_&;OVIgZ_vA z3;e(EUo5i^%MKn!IaCifN?uh596=jDU5Fz4H#bjoA>|G{}X?8{&)O4`d66Iim8rq2E%Sf zZw5}LMU1O{J^GpQZSt49za1F1|CRjT#_*Ey#=n+-!N1!61pKc4{q+9_hNPeR3>QFW zl>XoN{}t0Y##aoM4E8K?f8AN6SY|P2Go}2S$@u%9GD8i+@qf?$crh#dv0{{9)c?oA za)jX}!?J&jjN2Jz{QSZ&>Aws^CF5#_~ z#+dZ)(%+`Pv;MRH>|j*+8T8No@6~_Nzt#RK|BGfU_&4$2;{V70y!rq6zt!I-e{~tY z|I7R@`LBkN_y6aA3Jm+0`WenKzdoRl~@Io$81}BDJ|0Nmt!FR{7f(PF~Gm9VwSOEidRCqD` z`7gyF0G|B>%|bGOXI4R{Izes|l41y8`1@amL5P8ufd@QKiK!xi;SXE|XkHcMP8RUF zP>}gfDF%9}_)pLsgjFywzJ8`#~ubgn2-M zPz=@wx~%Cx1497=1A_+x1A_?z#2ix0Xn?u{-3(B;f-o#RVeSA~4|5Ah4CIc%U`7q- zm^+I6BE`S}S}g#+GZwT|0CdP8FDTV9FfedIF{tDK`5uHp>n}i|0ir><8zjcS0CUG5 zEb#&gPY}i*rqp!@$c5y^?eKC3DDQJHGB8kDehd~fG@xl6l>b0Wu1CucNO?+LT4!JY zg(J1fG4k_1!X4BwgZ#XYa0mHjutHab)u=HrJpL8?=fvNVf2aPdGf!jr%bLrs!|{$| zFJ~8*6;CX;9HYqJd(7ob3xCJ|-1lAP>&sXDHz)nD`h4@jr$?Wjym! zzm?6C_3S|f8PA>`y0%(`QP!s zPAuI_(hS~ATmO0dU;Ur+-=rTOf4DL3{*m}!`A^#4eumQDUO(AcB>ws{>oOkwe}PH- zkH-HL)_H%-|0py6`M==rONJSYQhzqHhBL4;Ml#O)`|o!ybI$*t|6Lf){^ny;V)kUb z%~<=R>Hn?&zgc4cE&ex=aUQchlOMDAe`ThvOe=n*Fi!iI`&0G*bB4A5!kA98%=pXA z7{e0HaOc;}zh!@gnD#I#Fl=RL__v+q=O6h$-7K060?cfGq?oFiYM3Ja#j>vaHI-oz z>qJJEe{L)l%+(B8%#kd|epmfn@q6QMX{H4~L;p@%Y}+pZ~`g*D}O13NeA|*?s>n|7Bq~#~{gA_g94>{$C)2(7%>{YnTo( zax(q+$;7zucPdlkZzd)Q23ckm#x?&x{ncPx#3=bc_TQfW7nqqC&iw0RwD>3Zhn>;- zckjP_jLQG3{(1j*`|ZQ@o@w`Q0j8k;eoQ5doWD2zXZ^4Ko8yndbro ze*gROzrvsGe{+}*{GHAC;lCq;?0;?st^b-#d5k+5IvLjeyYjF9Z`=PM1}Ub;e-<#v zGH(2>%&_jS1!L>K$bTyt>i(Ag%VvycEc#u>^!s1b@0$z@7Ds@{y$)}XS)8s^zSOB6-<51FBusatQpK0 z3>kD7)ESf*WEmtFgc=~>WOc@Lqv>DVGKr0u;!F>)624)6321^DL27LxC z22}YD*gia|R;@T?P#X zWd=D0Nzhm;0~Z4;g95l;0@^y00M1Vg41x?y48ja745AEd4B`wN43Z374AKld46+P- z4Dt*D42%py49pB746F=d4D1XN44e#74BQMd47?0-4E!K7K$RK8K^sS15U#$iV149K ztpo^z*!B8H?POwVc&f|#lwHr5nSwBg4H5&%fy`%MP+$-Mx2HkIA^Q(Gd{F%-!+;1M zWdAWh{SOHrUItM3LBf|G?0*ih|3RxyB^V%mG|;W6pmw?=gAs!=*q?3;<_sF(aPVfZ zVbBHp6XZ@O@JdrqIJq-eFld6q!H2Y!;BfL_uw>8zhodip9r)%^ zMQ}K}Fqkr^fy3F8!HPi}9FBer_6!aTh73yJcyMJf1I?^4a58u?STpE=0f&IhC;Kb0(pu&*Kz{cRt(7~X|kj22w;KR_%pvREU zAixmFFp0sKp@cz{A&g-N#0#t_ahgTa!aib0wohG8y)9YZ}s1A`(%5(6`Mb&eWC zIs*rTCqoy5HbV{rFM}ULKZ5~7A%hV7PFQh<2!@#qRt(h)G7PZ{^T6q$kwJ+enSq7D zm7$G6ogo999=aKH7;+i-82lL~Fc>lvF$jZik_Fu!E5Q)SFpI&Op@u=0A&y}_H2e-T zurNZx?*s!UBP9IJGVn1%!tWA;Fe4=Vt}{q5Lc;G3gDfK`{1z}gWKd!Rh5u59XAJ6$ zpzvSC@R~t~5fuLG89p!=GJ@{J-NNvd!Hf|U{yQ0dF<3K#!hav+wj^-)A7Nl+goOV| z1};WO_@86oXM}|RWd;#ONci7ikYt2}|6K+-MtOz=hJ_4|7?c@7@wbfOIfDixDE?M6 zykXE~1jXM5hK~$JjG*}2%J7ZBoDmd%yBK~m*f4_PZ$HBU21Z6m{2gUrV}!)tDF$vv zNc^2=5MYGF-xUT?Mo9eKWRPNn#NRyzc}4|>M21BSj~P@LLGiyFbTcR;DE`+lyk*d1 z1jYYGhEEK}jG*}6#_*lNf)Nz|yBYp4*fK)m{~+jY7;yX_V_;{5#Q$jq9!5y~Utkbq zgv9?<1~EoR{NG}bW`xB5eFgL;nGb1GZ9B1HQ1eGV<3}+a486oNCB7+bk zB>h}t5NCv>pW6&FjF9y6fI*QFl>U}5JY`U01f{=~46hip8A0i99m9JD14dB#+syEV z!ITk{{&q0@WUyicrN6xl{}}8U85kZi9AZ4ou!M0bLmOi|Lk43egBPPWIQ@Xq-v@?^ zjF%WTGj3s+$~cXooUwu-k}(RLen9CDeA^boBZk9_M;MkeE@NnC>|n@b%wq6n^Z~~| zDE)k7xWsswVGH9{hG~q`87den8KM}Y!SN4DKMLUZf6Q=%@hHPG#^nqhjGYWwjM)r6 zjK1Lb1I7O*hRcjs7`8HQW0=l3gQ1eKiXoaY1{{C#jG*vmVq|7`!f=%F7{hYL6%3t> zT@2ZbISjsxe&Fy2#ouR!D~wkewt>b|8D}z7F;+9gFvdc|9~6F|@PEp1jPW?b3dWTT zU5wofIgGgsevJO$@B@Ya7lx~h*BG`l?qHb7IE$g0v4$a*F^<8W(Sgwsoc}=i_Zh=+ z#uE%H8CNlMGxjj#GUhS(GX{Y3A1MERWw^$8onZ&#PKH^Gvl(g_YZ>AgLFKt4qZ2s) zfb!pSh7*h@8CEf_X6Rw;WyoX9X9!>n1m_=6{`PE&oZoIT+c9paUw$zV=+Sr zV<@=%0+oNi7;ZD(Vc5&Kk6}LJ0>*_5O^nS9DU7KMZjA2W@&{CYy3 zN({w}B@CgAVc_xyRDS(txWjmtVIL!?{8`Ajh@qLWg&~zOjlrGKgF%x~3taxZWjM!p zo?!#yMutg@lNm}FOBuo#!@=bTsQmfEaF_8O!+ypCj0YJOF)n6kVQghcV@zl8VDtp% ze^B}Hj^RAx1%{1`n;0fDPGKlzEMo{~i~#3 zkJ>p%Z?xa=(v{8O*-VWC43&llQVT5{VzuQQ*ro^_XtJ{fVGtW629g7*0jUM+k=|&3 z!1;~+jyKB84VQjtIqb{UXZUu@l0hI=x?xtoD1(!e4Z}YXyA6MO_#OD4D>Se@HETGK zZp`pOUd@0bg_B{mpFIeJ*&pQ9Kyn~8AhjSpAiW?nz-9@=N`uS>*#WW(WGBe(25`7A zFg7qWFgh?eFdkqyz{tP|8c_sa9Kqbc(7@Ed*ud<-;K1a-=)in{;Q-SC#skct`yU*2 z9d#A0>m=$V6s?ci)$sHwo12=O_9@r!9JSkM@5VMuqtdX@LR)T%kiD(F?Gzzxxk8Id z!&w?`Y#Z(0*sC!A*2>YpZ5b;)LDb1c)UKERxx!Pk3}Xeg6i$D8fBO_p1+@(0r)JL; zdih1|oNOkD#!BC|%+dd?rNaEi{OC{Ju$jnxWjjzaVn>DBSd&wrNC_P1;NsPbk|J$Er z*ran__p+6_$!H0yw8=EnjSMTRoTw{+HQ_LANxP`ABI8}cjPV$R@gGzh6q>6 zp11gEV5(Widc^*r{afZ#txx(bmO?U@L|Sbg+Xe_&DR`T|H#(>`mm}NWz+RiHPW8TV zt=VM7Q+%#=f31DQmP;8}J<;pej%NC5|J6R4sbBkvo`KbJDIc-F)~EnFXHWq5!$AEmNdJL@0n%Rp^|L_z1yFk%(mw$8%hVYd z7?{ERJkb4BObo0H0-ywj+>df#V8EB&9CiQ6f0KVDe^dUD{Brqr`DA%Zc`o_ua`WYq zxwTF6BMfzeJYadvVXV`pZ!W282bNf{kQthz~Id2!1Rxif#K<&ieC)B85k5fUkfjjVNh5m^IBLDG`07;;uq+e ztbdFSOwNo93|9ZO{`dc9V6b8^XOMuJna9Au5b}?Kp^=4w;lmdOhU@AK4%gKoY>*g8 z4x|R8T#X@?VG_e~hHB7!(Ep5oNB?g4oB5A{!Gx)tg^`VmjhlsmVd5|TuMQvoe%Shz zfx(~uxuU%3eOJ%G&`{67`>yh)&lUao85p*H{rkb;BmdWlzZe*}S-993*~(c=m>3u` z|84kt^l!#LhyM%=)eOrSCNab^sDUg7@91O#vp|FZgA>CP26o2TjDAc?%%Uu6tl?}+ z*!el9aargieqa5EdIkn-#``QMx%LYc$uz0A7&AE3_|!%8B|GMtmnv2ttrG#y z{r&lW|GyFAR%Hf;|NlS#?`50;x+{u-je(a*%n;-sDTcjFkIX1` z1lohdR2Xit&T<5?^cdc;^*Di8Mhtt|)14R?{`{9_P~hNp1dS`d{LjYGWXr(t@Bg#^ zZtVZeLF#xJ*0Ej$+o8pv&zzvm!0`9KD#O|Ti&a3miG`u#_W@aux>Nu2znv5Vv8Mi? z_2C6S$OS3?wO&2oU|H+&rmcfj9k0oexurR}U=4u-dONybIWv?Abog9M^ zYYli@MU~+V>t;ugdAba9*^GcpbOOn0F|cr4bYx)o`CpVlg=4V; z1H+sD@BWK&&F@9GBx$5D6H^yRB zkXt_eFJ^qE0b+gozmm~a2gLgS|0QD!*nM0Krc86dAt}Pp!_;gFa)C6%MvR6V43M44EvQ;4qb8_|3us4pRk&39OpnG^Ea;#P$`;(qmZ5mJ1G3 z0|qVj*7R>V*nB0|Og_@qezTf0;r1 z(s}=PKdcAG$D{wEjQ)zCn7;R4pRrCEsz(*&`; z{a?l?0FI;I|IaYW>Vd=<8NM;ffc?hFpvJ@vjxBzMD5mGepg0m`n8dUJ8gCbv62bXW zmO+^L7c>T=n9D(hI)gOBa^~ySARR0W-CH$^H5@7`21grLGrJX0;sHGV_5t9hb$;H zef_Wd>$Eh;-bepu{+KHX3d!^TKYc3@2eJ14H~;DePFHLHXMa`zRmTi-|Mz|TBLI@^ z`@iV@WpE0s|G)h0VjhrK{{MNebGSe*i2L99(wqZioA>|B=Mrq7RA>6%>8TbA1A{Pw z+<%eBEli-1U$*~`9)Q+~{QCdszYwFiA}Dn4{MTT-rUXif5B}RQPEi5*?dktO#z1fx z`}Ti2BR9B=`0~Gj@c=j_e)&I}F&|uV{rJCwQ9>8wqrd-eFzx`SNhXHhjDFydP0v2RL=gF*Go1 zgHxwC!+vIK8<1^G4F8$U!0A+q!Iec8T;@nI^s>AMv!ofWv8)BBSXl-I)=+4Q&0>Aw z0Me_-u$46hoMP1&{;{3{vosmp*rdVfPnV&GEexDG^%%~v)q`333_R>p!7M`tH+XGO z#XcD~aLfkvxMmhqogrbxJU(a2#`BVEFQ% zlR=5Y%HjY2kNM2j#cJ|Mz`;1I__k{|A3D76Iv4@&DeZ8qi`BhS~q)J{|?Fqe&zp{yy@TuiDmu&|LPDY$fdFWgI_XmfO4Mi{{_!|!MVcb|BI(P zSQr>M8MOZEJn>})wQa@!=R6W(Vq{QYVE(`A!D9wc96kEa&v;e=6ymU&6VwLLW>f%| z)DQk!FnXzg?10s#ptesa<7_pM-`@OBVLS*fy%9C+m;Wt{99p2T|MGttqXszlAZp#8 z|MxP+f%DOy|Cbnx!TAVL6Eia~GEIc$C@H3y;2edho%t97nP!6XmJmZ8(?oFILe$t2 z3~QM3p}FiFQ!qG}A!>1122o~qOHkO$F<3KSgR&qsI|G9(Ll<)tIOj<+Y+>dHx0_(K z{r~@r3|uU6;8veFgC)xkTaYP;7JwAPOcnuf9+YA@$AVw?djHv$TzC#-BH(K)LMk|K&e6NP^sV1Kx5w|Nrr~Sa3;m^#9MVX5f}I zqBXbqzu1?T!k`jl)qmN~N5QRYSPPGVVdj6?kJX?heGC)-i+uvpBL`oY`M|ZaG(#YZBeWF>>s87!2(wy2^L{z&KXBeh z^fWaYtl0R$xm%ZEI$In#CnI{Fh77jw`nQRF0$3K-BV}OFWq8dl1JU7(s1EMSD;y64rAC)v$NiPg{d@JorDC{gWjqj$pmnzyCk}zrpqc zoR9wh4`6!%4i{Jt_y2!MhR-Zpz&S;kL5`&#T${pry^NrB0Zba;zJ?Y9JL3y*ixJin z2Br4Of6+>ywtyr9?_Yj!ixJj4W@7mC|Mky2aD932zr_z}aC(OIm>C(i|DX7!23$)n z`#=AaF}Rk5^`aRWTK~7an+{HsrT^pJ*m8q%1*~Vyz!32N2r-qQ*ee`m^T2_v8DvJYK=Tpq08OsX1m(&~aB~vuqV#!Ir;Q zUjDnb`{=f9O{=CY^qEr^B^B8cdf8vgW4GNw;|6s%sdOI8f8rk^ABA0wKY4K9{;d<% zC9jNFrk^?`g(0~jfhl%*L}75A?;1C2dwug+dXrW4W!i++a~%42^9%Ruf`^JXOwS)Y zc5~n4?f*CEuGU?~z39TcmN|N}8>2L$93#(!pAB^nwhh?gv)RMWCC*;Ts@kMO&qw2e zqP(<=hzGAZo9ut)AKyPPy)t;*eMkP$uk}TX|}E#j-6+ zn=(Q(?xoA6i>4h-(N7LeG>ShTqZQ>It`>4Cz|=R(Gso4|@qtaG#VX@#dXF?Os4SIF zmf{y(!*9oRk|pr}&7Y}Xe!ZLZ((4J|{g*fIUHNog{dChYmP4EOPS`nb>w}F^>v&fG zUaq!u(jxl>2J=$qJeaj;=9(G*rq7(Nms*>$G3jFb)97zuB7uHhJDk$23JpK0Gs*1} zcH(4USo=@<%j%bv_ZMGvK2v%)VE3ENacj3PXI~sU|Ii$p*`U%BbSfD$18DRPwAS|b ze`LtOke2o)5Q5M8ct`j~_(u3e_(iZs*hDZeObmfR_6Xk)28Ij!efR{Fa(Nj9ZMhTT zKeHPYK4Lc2F8JT@llynTbLH<7Zc2Vh_-Xm6pu&%@q3;`Sf}1F>gU4p>1A6y3Z!oN2 z?`TkCy%SQzlqSCHe~I7SKM`@pzdlqS`up_1$CqtGK#|+7TY!N!kSYM>su>|Zo#Uy0u&p4C&!v6&+f&X$!um534O8ebm z%JfU%`nn$p|MI_I(DeKkFva$3f=3~`2CxuJjK2A8j|0Ae|aq#iy zOK`B{3s7d@yU@6V_kyiDuR>2J&w`I|$H`#vkz>KNv+Ntpr?Uw}2Cyzj z_`}>XWge4CuodG~uFL;p40HY!Sabfhn6mcwfhjS+K2%Ho3`l$aeS+J`ZvyuYel^&3 z`HO-S;}-!zpU(x6+dc)PIDQfcdiSy5{oaooQvLZHJRJE1R?F~xIR23L!tV*Z3dgi~ z15T{xNjRdwV=$+VdxHNdE`{GLTmjegIU5XpI0Q- z#8-x&Y+oNphktpnbm!*@{raCTY})y0!^wzG2D!YS3`A~x{2;XRl8F zx*(p;IQ!&shSjVu{`UrH{6A)v`7g&}_1`OZ-u+QoVe*GVw)VHjo)fPd8 z!?cwtoM{fzDW>U6i|O=4Qew1cUS=`_<3ra4UcOl3?{m?ki-W7@z}%QTCr zj7gj68sinl3ygaizcIQqr86lq#WDpjO=gN&VajCM%(R+m4bv>9g-qL-Rx#~jTEUdh z^o8j;(>%aq9^$Fzn?jp;I@DANz7$4pz8SeZelGco^V z5@+US7GP#)mSFzQm|2!tkXfEtm|2LKhj|NABa<4_S4KvrYfP`1<}s~jy2r%I+{o0& zG>2&+(@dsS;PBqbG?QrtQy`N9(>umfjFL=wOkGUXOw~+>m_9Q7Vmib0hUpiR2(tvU zAhQUwJToUVAM-z^A56!X4lsRZWM{h1^oEI@S%A5k=`7O^Mro!7raw$v%qy8LGKn(_ zF$**EF!L}oF|#rAGJjxVVJcwaVLr+9k;#%tg^7t-fcY)c6Q)f}pP4wA-!Q#ky2bRL zX&2K`#_NnMOsq_XOubB#nKGD4nG(Qpu$*ZnQ!A4b#X(`h#re#bEnRYX+XIjoA$1KS##4OD$&&H=`oc6{fFDubG&b zd6)&6C7A`7_cLv0+Rt=~X(!WOrkzaXOkqr)7;iHkX8g{W%+$d&gJ}lSYNq8(8<<`& zEnu3=^ovQ5`6bg=rk_kdnf^0f0<#`6?Pj{p=*Gmve1+)?6Fc)OCUK?}OtMUjOgot_ zGd*W|!Nkb?l<6tcBPK>>7G`ed=S-)Vt}y*)VrJgS^o8jk(+8$wOm`WhnE07rG5urO z!gPd*pP7&OCleR5FtZ@@V@4mQJxnv1W->J}bupb~+Rb#BX$#XXraeqsnC38bF(oo3 zG08AJVf@XQ#U#S~kLeTB7N(<2px9+%mIS9B0p|Zq9L%E3-L08NuTL469e-%CT3<)W^QIqW_f0DWH7G@4+4(3lx z0Zc2HT9|T}QkYnn?lN9y{LJ``F^p*jlMmAbaQ>UmG>2&c(<-JdOkbI}n0cAync11& zG08K3V-jU%V}8l#%p}kJn2C+~GSfOH5oTd#F6M(wYnl3(RxmAKTER4t$(hNHDVwRD ziH+$IqaxExCT}Jgrf{Y>rf#O2O#hkwGqE!BGjlOZGP5!ZFoVK_fq5NMAJcLs6Q;+E zs!XpKxtOjpZDl&m#6DY^9F^e&CGs`pUF!?j}Fl}MF!E}OY7t;o& z15D?bZZMr?I?1$^=?s$|(xiVQXaWOS99bkIHbd5=d`4f{MGavIECOu|lW+`TQW-(?hW;JFhW?AMh zOfQ+0?Z(nJYo9Iq{=MCEW<3#EX}OQti~+N z{D-lDiJkcplLRvx^FbzFW<_Q;W(8&;W;JFFXxIuc^D*}^buvXVg)#*(&1Pz2n#PpQ zl+V=7G@ofM(;}u-OubA6OivhZGR|ZYWB$u@pOK&G71IqSCgzV!7n#_YrI?kNMVa}S zm6@fP|1haAb2D==KVsU=)Wr0ck(uc$<0Zy4rhQB)OsknLFs)}g%XEP0G1DogyG$3E z&M|Q@OEZJY>~Bo`%>2xtQiz{Pi%FFE7r5NI#Kg%g0xn&*G3{X5!?c6xDAO^f9ZVaU z7BNj@a%GZY`oLJr)WWoqX*tt;aH+t-EW-SZNrsu5`3sW>*i~}O(#$H%%*-E|teKLT zelRLB1u}tB%vq+_OskllGukr!V`5`wXa2=>oJomUo>_)jj9D1$BUW(9EXyp$timk9 zEY8fve27VeiHTW=`8ks)^AV=cOoGfR%*xE_%uLJ{OqZA*F|A-a$+VwoE7M!1{Y(d$ zo-kctI>A)Vl*@FT=@!!^COf7SrXr?aO!t_Wn7=c0E(Visrq&&0>f z#Vp1AlIaJd0uviEDCc}+>SHos5@Hfz(q`Jt^o(gc(;24!Oiauy%v{Vo%-qa;%)HFJ z%wo*^%o5CU%)-nP%zv4lFzscMWHMo5W&Y3fg-M86mRXcpk@*qRStfaADP|UC0cKF1 z5n+DAB+AUl%)tDc=?9}X6F>8NCIRL<;1c*Z6AL(nC@~8&t1`6GL3=0^xFx+8aVFc~3^-wIdwe=G5YYerG>P$>aTb8{e?@gg`adpYzQm*oK z*uf{yzZo zL2Q_PU`vM~0SYrve1W_MVuQjA6ki}dhz$xehJOtIKztAz6lS3C1Mxv@P?$OV2d#}^ zU;wchzc4Z!_-jI?sNd9V8E8!^{VzcaS|G zGePP>d=MLCCX5eagUkfE48*$3i-*dQ}N{sZwrY*_vS`3EEhGY`ZEu|Z~l%meX3Y>*is z^FVwM8)OE^JP;qmhM5O;F9QR(3<9|i#78y{#78y{#78y{#78#ogyi9bNlKgSvkdc9 zPe?K_7#kZKPf`MnucfJF88R@;oHChe3crgh7HqjzNV%i@}J&iot~;fFXt< zhoO#P3d075D-8b`m>D@3c^SnS8JHF@2r@7*oOm~tL5YEZ;llf=poGo{+6DjS-Bj=@ zE{P8iF;UQI4(}mi86T!HG%z_Zg2Wu&Ph|kDQrrPm2U=m5169ZI5uy$xHV3LM0wl)Z z0Eg_*dk#Q%83=ru${^7@l|f_XR0fTuQyES?n#vH-J_QslIK>$l92uLLjxe*ay0dk% zpW@)+^5*X5InB$>?)U431g`|=@l{$WhLbU6*?66DScMfP>ojW zRo}1iUQ=G%SEovMnchYH-v%m1-o}L{(@b}n-7)`bA!B7_9cEK#+ikbley77Z$A?az zoS9q&++^Iv8Min-W42Rgyj>?MZG;@lNGSJD=8@?wP@qxid32OFsK-c4dxo?y20oJpTN( z`JM%j3MvbEislw+6>lxJD>+=^T6(n9v21slQTftxv5J<8_Z8uldn)CsYO8Kk8CJJf z->TNEDXTe9!&d86+f{qKma)#FE~jp8-Kn~-bu#si^-1*&^|R_X)gQ0FQU9#|WBt$i zfA#Kp2l>K*H4>c7^Vs+(JvQ)f}fSa-a(tJbTQt@c1o zS&e4Rt?Kq_!|EGVwN-Ledn&^#-&eF$h*c~tH!9y<=2&*L)V1_*iCxLoVy)u2MLb27 zg^vn63)bfI=jY{}%2m#-%sHDapPievGm|OPGov^Cd>UVxcWP_Op5#wSDoG)UO$qDb zugCq1Rf=_qNr`TXnj5)2;#~Nnu&<$Pp&}uQ!P-H_fmQ)_{tkYQzV<#g-sWBgp6VVl z?gDO1uAiJAI-PUe>9E+o+pf?y%*M)E#_F%d9rImg(@YCZyp2_iej8lWU#3^3>#HNL z{a$mwMz4Cbnuh9U<$X#Wih&A}@(*QK$mB^IOZ|}8BiV%sVZAU~+&0gXL8Phu%m?LCsW=!F zs5X>*RAq=PQfs*PNsWP}Sl!{oC-noGMH&axKWa1_$k$}}{8rOpU$)i(g_l|ml4;rp zmOavDI1#7QP<>0M;XtS^!?X*!4!^wg7~UMwbI7vOZz$QW-@svDz@WCmz~QvKp~LrS zh72otjTr7X8y%SO)2QJ}o^iv($Hook!c82yPMb6wwlh6YxzW^NwX&H*_*6588aDF- zlI7+H^q!kH>0AfR2e}gYY8D1KIpm2TW?L8ggG)9S{kzKA^eZx?#1Z&4C${ zZ5%%Qv2oa#YRho@tgSz#crje6 z^lET8<<;;_(wpIPhIfPMc5jBgEItgKfj$f~=lV3fe&NH=Xzbe%UhCVCcg&aJ7@uE5 zOqgGT(Of?Ux5s`B(=_}WRC4_p-fi$_`25+w!N@G2VNH2JL;Q|_2JasM3xuY5mOGY(ZQHx?=H;!V6wu@@G;1R`;9u&nO zA05T;BPojEQ)W~HPeBxeM`={UlFBFsrP?Tl1NBi2b&XLBaZO+hW*?{r%YoH^)PnSU z%7mB!GAlg@Vs^A0*e;NrV7o7KM}ge}audjHnWrNgRCYq#405|#EyOR^10a4ASBwPv z7361--$7vj3Jd#MaM*yt2ozSJFaw1hC=9`22?|qC*otX{gTs2)O-R_Yc0l3+6epm# znRg2uSKv6i=N}4=L&x{vIAs9EEhvsHR6-a)aSn?6oaSH#P+9<`iNxFBGy+O14C*>T z;IsouLuX0@L1_w0F?ABB*fYw_k~r1NsW~QsLT;sWZ3{JgLWLXIIttkf12TsWwHmI&J zZ~&E&CEN8GKxO9ZBYF)#z4RKUUeI+o5UT3{DqD}o={PKVq1V_aJaH0h z_`O4P!5ux(gw7=*4$M*_3%vV<7bLR?AMmLZO5k`WxL|scAj6+)0uRi*1txgz=MOM7 z=AZC;8Q+GvQhWlkeY_0SjJyYSl<-`*{+xTl%_wez{b#uxx*WJZSa0Usa8;G_L&OY@ z568GTBou4ePh`Aji>xz4>tP-!bvpjgI$&zt@HZ#W=US^q%^-LTSJ~C=# zB{SY}xXREV>dugJ&w}CgtW^v#VKR(-0)32L$Nw`XR2MSM(01N$oLa2{{Xv z2isS&ICx33F1XUeY7q91HQ-!6n}^Lqwut#b>@U6@W;bv$s3Z}WHrdii+|@HOxnRDa-|a4~_;K=2}8fu$q= z2G5QB433Hd4Du5N4m@HIT+m%0$RPPZP@&6TsNvo|AqG)B;RM~e!UxoNL=qUPMIP*Y zDWVV*A^PCNF;N9sQ?UfU#bO7d1;r1z)Qd0Rcq@KjS(HSA+zE*Xd8U#L(-%oTn9eWt zAg@NsLFT2@gL$FS3%(tcPEgX5X;7RcbKo| zG!N_&)@tyn&~li4N2_6(gSJEN5^aX}>^cqF**Xo1=X4k@8t5`uPS$mZ{HlAvAY6}O z{|>za%u@Oc|ElyI*51}XAYfzQpfShbz^C5^4h7MM2j=fGY-o@)Y7nY0Y6!VzSY*sS5#Su=-V4ReOjCi8~> zx6K&>O)VO{`Yaq?J+p8yu(xE8nQnPt%{$8j4_&PocF(bDF#l}D5bkNsAUWUqK+P9x zh9*y&2K9M12Xa5z90+!^Ww<%h_Q0Pvwg>jv+Z~XbWXB-$#Li)>slCJNHv0p6uG=?g zYB(?$RyZ_VI_|*0C+^trDAlpSe~TkSD3epeCx0gf^|?+BpI$mKgqS%ucsDsW+&Jsp z@Jqs_VMDSD!|$~&3^%{KFnBq-Hu!eAGCaQI+Q234)^Iq z8|L5!UxVO=+cCim&pLt`a<>FChH2MA8ovAu zX*i=2+92y4%J8Bfv_X4XD8q|gp$xM3Lm5sng)w|k4QuH22y0lB71p5N6UJb&HjH8Y z*)WEMZ^Ih6c*7fBYKJ%2dxbY}XM{KSwuUpXE(&Kb-WT3*^=5d(+b`h^)%+0*wVDwP zpPeEa?ng&7*q1~!2=_!V#4L_rklYo);CUf};qB812G-vZ4HNhy8TyqY85qqY8J>AY zHrU2QHgM!cHn`PCHhk-kY>-?K$*_KXB*XT7kqriCBN=3GM>bTyh-~ow8rjgx7{%bk z8^w?z5!LWtDT;wpH;SRfEUKZvKC0oIdsM?*|EPw0VNnbdW1|?hBu6!PWJWdkL{u|Z-WIglE#T9BTjMPM^PW`WI| z5DT^gY!}GR0(-C*FbrWVYjC* zgD;;i11K-DPJ`slThczDyvlHHJ~;0(JW=#!0Oe)*MP3a(iCzuO3SJCs_dOeg=Xx@% zjq+@`B<|VJa>aw;$OMmu2|gYTuh>06WkrKmtvds#>;RP^JgdNE3aD%Wl`#yyU9JtD zj;;+izPmL1TI<5FA=!oDmxK$$jkC@SpfW1h%$ecSOQ#04xlRn9{GA#?n4G|68mMgJ z6?bH~bljoApuz!E_BHIeZqM+#&7J{NCQ3iCYml2{*RaptuHnxc+lCu6Z5x8!Y#VYv z**K`rvuSAbv}vgMVtqhjzV(4HPiqJB&sGh)=2$g6bhUC=^UktCdb%Y8sEmH~%!0wI z&*DIUsl|bRx6KObX_zyB%66|}GX_@)GY3$aZMT&*^^RTVK+Y0vhGh=g2WH*TVgS`~yM(nEo~_el zxZtUIpyG+ffd_RO2RI}(4t(6C&M?PEoq^+-+5xkAwFV6dHHUi}R2w2ZRS!&msKPL} zQl%k7P=(?53T1~-2jv6h*OeTS^OPDSSd|!N%vN-GWT@!y4+Y@PB9 zfpYQ(vNp>d2=Nhai(NgC!9E}E33qODO?a8bCGhMg=YvZf zoD(*PbAG5_#<9TBlq2EWVfF{}g4hpOKV&;`HlJ-n=s#A8D?O|SJf&G9wy$KFAZx** zPwJmjvV{X*u~$+cq3GXF@4r5hUa%J7)~-oGreW5XBA*y#9_>J zm^+yFF<+4Yqfno)wCD;kV~M?z?$YOF!sPDACn`QwN>_QIny&s-BT?&)cBt+dJx7DB zhHA#sOjykF&2LyZSS__?x6QCSYOm;6<#fSW#kJJ!usgqJgx5UphdzpaasJZ-&IK|B z8;2x>c7<&SzY_5|QXpD0#x6D>E-pSJAwRJ&sW3SwB{?-b%`M$1Lo)Mk=AEn^+5I_5 zxdwT^^A6@W7dRIFDqLR_U(8*ysU)=YOKD%3a`~2Whl=ABUX>>*ovOA~sZ~#^{!txO zv%QADHmP<)?XOz!>wW7>>!;Umtv^@)u>M2+FYpbTzv@5KKde7jzqNjP zeQCXKy<+``x?Oekb@p|?YB$s-)$-SFuZgPpQ9Y?zt$JIPQ`Lz|ugc>U4i#I*7#u6*Uq(%FL8HI`j9`gnB9_BXYTErp1UeEfLIhyGt!vcm!j4I5jEX!G6 zuxWB+ajxci&8^Lw&9|EWm4Jp&y6_T_N1}4#Q4-T6FG_LCxXRYbZIyqkpsWF!MIgvFNc}ZFR!>iOoM-aeF-nXUA}- zEaxhhPS_EZ1LRXwa@#2&q3e)etZ142docV7BoA!H>55!CoCe|DMBk!AnJ3} z)#xoT6JoRDoZ}@D-X!cz>`n?#R!n)3vNkn8O+Woj`m&6;OyR6!S!LNOIp=c9b7k`O z=f&s$$)8rBS9rKEwCG7uLGiER#uAp&)>7uOy0Y(OIpz1teJgfVC|7n>zOD4FT3y9j z9b3JznyDtBW_Hcv8jael+Lg6WYh~+#>ssr!)IF%)6bv!Z}o5LAJku{-&?=DzPG-xKB!*5p0oZz-Ilu6y5Kt5x~H`(YqM%KY9H6k zt_i4Ns@Yf_Tg_U%y2`ieZDm)ba^(XIpyEW>dKhQT1#0<8%ur_7Zg7!3N1QZ zs8=|x;7@*h{{B3fyz<<0IVw42*~hYkv*I$BWxPq(PtQ+VoBAR}F(o{?J85s?n*@mj z=lJZn39(yZu10^35{S}@bc%=w&k3sw?G2e7yew#a;P!w${`>t7`X2Dv=e^5oi{~1T zMeftwI$f(=vYf-6oE`NX#O?ptKCwArz1phBGRMN(T*HjT^q%n!qX~xT1~&SFdQWt= zX}4>IYpQ8{Q9G#GrxK~Gtn^l4t9-4Tt1P$7MX70$Q4(_Ek3^SpUtPu z`+`D}3Gm}^c!_({Mo@ zKKb%oVB)XG_fEeS7MlL=%9Tg&pK;Ck@^t&#=bsej@O}LJhn-bu58KB(-~ayEV!8Fs zKT+<_`)rSG6Xa!oDH3a@;K3?xekbpPs=A!RpZjG$#hgWLnAj^d1w4|pjo#O?d5MOy zCW$nD`Of(0-~X$pB>I_eo`3%FDI1fypqH4RZ+K#)?H1Y9?{9p5#B;*NP}zgS)jQC~ zL6yl#gz>N4XTLWBasf8-Mb3I|G0qIZ(szEvE9tSQJq`W-_l^-0-+k3D5j@}S=|0oC zDfT>-kvHa7;CE$T?lc{dP%eH6A!Y7-J?4lA9iu-^Z;E(1f*Eb)Es_{26#3kObj1Ig zzNq=@#1_mL`orx(;1z=K~W#4oCsL0@4r%;h_#=Cn z=L6H%ulriXB)hm~ENq_nuW)V1uictng8B|fQqNXu{Hj=7N z&RQ3IADlSLbobByx0jxr;647~f10dxAd{>hlkB^frdF~dVj0F>PyJs<1{r7FPnE6a z`B1#d;3zsp$NgoIc$(2faPM7i*>5skrT==W$O+qL+F9#TP$6Grs$F>=D!L zr<*t>dRezzc=Z1H*YEESJ!ZM|Vk?J4KgZ6~58mAU{pruS=S&wLuVa8EGE zKYiZ&jP=Hgog8BQO#9A1{_yEHtEiz-umGGkq4`o_-DRT{l_FHSOxZs5Ir`}41F?El_ge#!sl^$8Y% zlYB4k{`$|r$MO62E56sS&anxe5_tRYFC!B_$M1V@1m3(p&%t^6htPjvAwOPYwxr*d zFZr%030)9SIKll=_^aUkcPD-v|GSZo|GLnxr_9XU!h-)^y%+iP{vtQ;4Gu#I9#wZu zV^QZndd%FP{^OUruPgEA z&%58B7;j&?EPCY2VKM0k`sVU72F}j9ilzc`DvWF*G7l_-c?D%P43s$7e@p-S^+H7b zQ5c&dpNzDdf&iD4>hI4?V!Tg8SYL3k3X6#{etakP>BD&*@fXGnl7ebR*6RFXEDCH4 zuf$|uyMGbpRMvD*;^k(O{`=>pu;e?3JM0{a8g{~x%Df7{zA(tVeRpNgp?BZJ{_8(c zzM!)0_f|on4~Cc6x#YC$rG#ZOR;?YDEagA4c@<>{(W3}aqs&x?(2T9{P@Q5>h%NukAI(BdBVwSs}S%%@q^uUj`K2{|0Se9it=bEtFW_vmizwgwxIBT zb-VjY-vs`?xbou$_uc=?xxW1W{BZ8E1NV=5uKuuDddb^4Qi2RB+$EtwF$wAlJimB< zyn80d#VGv0Iw~SIL{3VGO_=q^4@q7|-4AE)zy8ai`262pwOjA^^7FGwSTeA!?%lC= z+RT%W+a7Lz%fqfL`&UFnRY#eh>6a|?w}{LLM^gQr z1h=Z365IbzQeVDa<$uC+@as1&D>E zKNkt#J;f_%@%PrFM+{5>Zw&7nKK{2)i9uNMDlZZG!tDv-# zl^eU?XRE&g_m#ege-Jw){^1Ra=0%PhH#gnc&ch}tXZ}l3)Y`z1Tjrbc&wqEspGn== zFTkTDBP+jqjAy_m4b!H$-n<-+Avi|0lW6pDzl(x8--eWqQ%_65Bo{L3z_`IbBgVYgxIg z!mJPPFaFA=t!B@vCTn4>Co9OTDERBGu(Vyle!T!U5goZ7FWxiVd~%Ol)~S5Iez2#k zp2DxkA2}XByUooKa!{u#8iXw~ot|amU}d ze|6s)U*39k;8xeIld$ig!wpG{{Q;=;q|NcUw-~$=HTTKtIqNa*DT1EjcV*m_8q^zgoDBDv-Zg(^dBoP;G22DYz1y?So6T3=?*!;L zM+R<0D1ZWijg^I4Sb!HA44*%|ef9RkXKq0rHpV~SKfZbU>BnCtc3vS-Zhm%#pC4a+ z{K>%1F9v3F^D_VX@b)_cr?3Fq-_Nf;|7GLm`v3XO4`zNLw%_kR{9za7W8&uc{q_r! z06*jBcYioV*?+zH#?AKq?O$F2h7X^ag*kt{`o$^C&GP9pt0?owFKi-AAHJ~*Grs3$ zdiRTu>-$Gm;s3Ay3bKFx!okh(ia`toGcYhSu-LI$Ian(SbJk1o$jCD?8LJ6NYKv+~ zh;vKx@+ru9xJHVVsjKMJ)o60*8^{{+3$PoRn_5^3+L+jz*|IruIJ-G{`MLPIM|&!T zgn9c1Lx};u5Mxpfzi= zA|ZSb8?=VYBN4&}u|aFNM4(57f!LrmT*k!^c@Uf77X!n?Dh9}Dg3$Gf|LY-qkX;}% zVSEr9WG0LcVuQ>)n*&h~VuQ?FQUKwD*q}9HAp5`zQEC|&Ce$%7%&KHyU}Vu0=Hg`) z5a4Ct)zVT@Rn^eeGc+;bQ&dzmv#>A|5a8hC=HcU0G=l&E0Vz&d9t8ympUX^4N=g^R z1*^8OFcTA#vX@s-RADnSGqYgeGE=g%vo}ysWMgBqFf%h#Gn0|Avu9FJWHU3f;Ns%q zVim&x_V#?HA{G{`tgO7k!ZKp^m_Wf)MBT!IOG`^jj8y;>%oQ5#SI85$bO%YlHUhK`=0xd|f(Fn|ry(KD1YF);-RFfuY)TH5F_vzwUkgXKVk zs5VHR5yZrbbu9Jua05$_r35fPvUW>RthPV}C1u2vlvGv0>p(%FXlJKyt7vAy%FD|O z3L#ZpU2|Jw5EsM~6I0dKHxOcD<$}m6DXGfK8(C{|ae-x(l$2DNm_#&Ld9^@%B@o}# zR78_Y3&9r`S7YTB5D)`Ng5=dOfef#h7*rnaERfS67!q|5?FeT>F98qE2|4@2?&6^B&H-SEz7SWEUd)<=87rF z%QLI6L;Vl7*OX0N7_M7MNr_Dz!3X(@6%-l}%^)tsBS<7K$SSzJssJ_s_5@frR(Y^A z#7I?MUYN_l0;;?q0QCzf7_1;bP*70NN>ETx0>Xupf`V|Sm6esC6$%$5f+m2f-pUHY zJY?gnFy+ytG3-N=$8ayQJjiJv3>O3Wj{)pWkaxit-FkOqWy6rX~mz!+5?+i#wD>`(Us3W3)dPXHrsHz17A^^xI5<^|WC9Wpun<7c4;bkMEgC78huI9HA?|^Z zFi`{zlY!6(aTp6C4kHP=52kRW(hLqC>@V7<+w>okLv^$iV9MpEwY}Qa$2ozf+6e)O(Plnr^GlOF` zyB}K}s{|{^oVCW?I)Yk?n)emtC3(g6izEo%=FQ;Q$!*Ei%5i`_4z%so!NGc$se`eU zk)rNPRbeG%h2OGSQYsRc#4d`8id+!-58ABeplEsAkV*fKuD80B+#gAQiCdzd1h@0g z<6Fxs$iu{)!3DBwwROJfbfX-@Y1&hip2%L5W|OQE*(aDHV8-vp`<>f>8>Hrs5EpMB zPbJS3)+J2VOv+3tjQ1G!GHhY!W=La*WB}bt%HXh6VVPL6sFJ8C&u7-tEDbDy%mz%? z7=xU0pK2%zya9Tz~YPLj$c(Leb;UA!r(Hycg znq)+!FG^kEcW2+vn#wBAvXDuF={4h8#$ZNOMnTZvjYEs>Z^bzI`Etr)ExhNro^a}N zu(64NY4-WJwiw~x4hEaOXI`g!asr#xfQl6@`K!HjA6zBwX zhyV8f?B7~inOmA$n8zD^(BH0QqgJK-NU>8sME0EYWzfmt4i09QbRx8tY4$5z6b%=$ z7QD%q%6*Dcku#0MoV|lh7o2|5ZGy}XnDiK*)bm#tQhuw@ELR|PLflhKPE<&EhTtmD zXpqAZ)1`XpI{n%SD$Fu-CCtUIi}(qq@z?Nm@iOr+bC-kT-CE=cPa97y&k>d~Mtw$A z#?=gg4EE65)g%}|Bi{@Tv+Qzgepvmo{Au29^371m;G$l-PL9@F4GxW9wZ|%ZltE$0 zX(X+apfyudKv`ZUOVUI_QcPSpS+H85jh~HAm3I>88ac4v8*IN=f42T)U1fQ}yuwt| zILA=KV85P&E}xDn=zK~CbDM4}A**Ya+fBb22^lRloUMOCmtA+UPJ}kQR;DJOCde)| z@f`xc_^xqS}}4neg&&}XVqtR(B!)DIsIy_wd%@h#VT7BZ_6*0+aW6_^G1pf92bjq zrYjzikCvAcJ;Ghfd5=S${SM1J<{8X-%zaEIOg!K;rl~8V&?aXow?=3=$6>Zmw*M@4 z%oCZynM9aYFy=7^gVSoG?mU&nN+L@CB&-Dbc(?M*?#x5X%+NL2wRt zjo3B+sXkUokex0fD7b-tIqz03Th3OFW9-}6B%$f>yJ?M1uBMNMu;N#7bCGpI^98!V z`Lls5gL5l~F9#@m^zHZCZm@Y}JelJBgTwimIlsP# zPMUV6@>_{xB3{DV1y1m+;X2IuhNFRfE}I%SjjgqmFmlkh(i2u^mF<$aC?+Ygjo*vc zn8$>>iZhMlGPwL%ZvWrT-ENnyk}ZSHWvd64K9-IaLFP?n{ANz3%_g@&XA3x_nTr~k z7)0ow(hN|JQFtPENoK0#Qt=+K38FWIHwt|Pmr*v>{H8HR7KSsmRh2Ku-I9rr(iEF6 z>?ouzXvP1SR}^%4wZl3-Zmx}-i#hKw-(#G^*vt5pVHQIxLp?)0gDZnA_{IwchpU#I z#+-(K^)G2oQ9LfoCDSLlTeL+uUdT(Zp5Kpe7TBECwqjNv%(t3F8}HQpt+`u$v#PvO zi~L#HB{GdtHzn4B&Kz|(F3l%&L7-DWi*p*wD&{oi$xO!?TN!g1Z5UY?-!MD^r=M5S z@j_b!7YNF6JYjNY(qSrQJjpPVp_ieIA)LX3!3nIUQdL0as8pMjfxtWt4fcy{8mxKD zPnmWyg)`k@T){XIoHl+c2a2bQJ{J+P0bvH{H%TH#1=D$q0!0E8uFjC!Ib%V-ksT_fYyw`YUa;;-; zViRJkV4cDu&GHDG#@1@=kUk>uSX@(Z0#^>lZ1yC!XDrSvpP1(|t1>@hIt(^P(!^2w zt%j3EuKYaFM4>RjJA8HAk2ozjOE|39TcBy{C>PaJf+;fIN3NGz~)@HIB&39H%8}`nyY-Abc*C8@l7Jnh3*T= z3f|=Z$QQ{6O7qzUW~v^_ca=VgSMdJjisVY*xX5~*rHthdvkUVhrfpz1=B zXVY?5@{o&^ahG}_wo9Z(c%_i0ptwL9=*muqbPiG0KPWz6JX$PU*GSFVUN#lH7bO>db$cq?q&=Uol)~*v8P! zP|lDKPCvXRC7SZ;Eo$p!o(taM`^|9C~1_%V5PYJ?I3<$`|fPfHH2oj^BB=5WEDUT7>9 zTTncLXa-1XKu=T1@rj%+#Tg_RBpIZj;R#QjP;=2uK^z|eu?0EhgIo+rwV>lA2+D&} zEyy?EFa?DP%-0Yzp#Fu1DHeH`oLj<7;bgdS`1)vy3&SzjgNIyK^fUW~Z&PQNA zSQey@1$@O8#5{0%0EII|KP;SnuufsHV4K1a!8V1Vf^7=J47Mo@JJ_Z$++dr+@Plm% z0|)yQ1_|~l3>xfH7%bSQFgUPJVenv|!Vthdg&~4{3PS=2Gf!byz&wTF0rM0F1(qoc z2`p0>7O+fVc)&7+fq``jg97Um1_#zD3<<1L7#dioFf3r5!f=3f3c~}|DGV=Ir!ahA zox%XS7V9jFF*kz>Ljb5GXK(-&il9OmTw-AmpkkGafrWv=0aS6|RtGYLhX{3`s+S+E z4#dK39>^hrAO}0(R|jgIiGa-mxfFDY2}mb)ECE&r>crqzCq;xhkZm#`bp{|8fXu_~ z7dax-fqba|R>#f&I*FWv0k?TdM5qI~N(H1&0kq}^zxy=6>Nvqg1wMPV!Rolc>Oe&d zE*I(%p$_CZJsR=>OkRQ$H2@mOHu&rK71xRg4GEUROi9~x_(56fdyKf zzzTZwT;~Q>CrnVCCs-XQ7ek6sn0e^w%Nwjt6vI4pb$(!VVp!Cnstf?D6DO!Hn1P95 z7AL6mKzAQ%8Vd!hlf-Hsvd!V3Rd^hrQU;rO2$hjwb<#M@L#T@Zs{@rr*v*5fj03Ba z#c3W)T>=9mLmC^X)WT&RL}e0Koje}%AnGERm>J$O%;Gd=Vqlme$jq>o;W~2zLj)5e z=)PDEW2OrV%nTbC7+4w@6qsQwke&k!X>1@p27=5CAT~rE!djpKQ;E=nY&J90>>c$F z>MCj*s((~GD77eJ0I#+J)m0!2O0OW=K&FSGK&A)81>=m?sbG4Pz#jsjumfR`DiDnx zjvLxW!x0oVgfJ-VKp3PBL^sIvFkC=Nj}D!q;Rp&FLKqZwAPiCmqS4dih3?UC1cePD z3<^6C2B`zl=;7GWH5!hfupx|Fq<9$^8Cs=y8JHN_q<9&a83LI>y{W4V91N@s*$ki) z45b-Z8Q2-v8JNK>e$Y)(pb;c422eYeo56&Eje&<@B_k&TFGIT&Xz<8^mxqC$!I2j< zk-);h!@$VE%D}?_y7QQa0d!vjC#VC;z|O!5mSF?m;J^+ZyW#+k+i`-2mADuf8CV#& z85qIlGcs^6@G`J7fV$}n4BQO-42%q*!MleHAa#WdpuT}D*p2)QY~cDHG$;jH3C_j< zYDa_22f3e>ff;;j1TzE3m&^>@U_Crwzwk1!F|ac5F<3HiFz_=xU;s_JFff7K&&ULF zKNAzk{f-PE_X~pE4;o_wwO^STVCI8vq5!#tiGhm&G$zLl?uPR)a58}0p~%3&z{k)C z9-?7p0)-Eo7%2SN#X#ZDzzs4#kr8D6MsWD+g3pfxxfImrVq!oIAJ8Z#H-k7hbR!wq z8F(2EGI25RF)(t2!k>v7WIhYn{j6a3v*B<*Xqbc@9Of|dA@K_eJ#Mhec^E)0=Vf4L z0*5~%IQ$tw;SU;dWn|!I0QHeT_Z5QT7vx?>aQJ{?9u&Wz`@KO!5ulzP7Xv7M8Nu-e z3V%rag5m=dPayY0?$l;u;9>wxjcL?OWq46Dm0?BgRECVYsSFzRQyCIOr!X84ox-p{ zdc zNFq438G_B11e*`?Gidk~l7c`n3|jpTa#K&koVVxj#p)Lf40ELfOl-a7 z<8S5dsq_J_>Tj@PU~ph$V+Qr{klCPh^9@W2%%Bkw7#pMp#>OR%tOmh$U_)m&>}Fs% zz^nkV7s>{i2@^-K9oTTOL173{@4yCTgZ%<=GsG_tHa0hd%)~Fgfd!!k7aQU>h&d2H zLfiwf7n2P!2O^G(4KWj<2I?{W^kA%D+`#yOpdJA5>#IK$-)hrAQ zOkzyLB;#^Oud>Pb`0%D}+n!8C#C1|ItnP9aS-GeZLt zZg(O~g|J9feT3l$k$C}B7d>I%VFV8bLoCBfvND`t;9!hk+(9sHgN$Kkc*4NJXu_Dm zxPOD5Xd>8QP>Q|6^x*}GeEu|ggF={ zFs@)cz<7u852FmhT*1n4f$;;Q2tjoaTS0k8f=IQXb^>zg1InNH(ikK+poSoB^_*xS zh+8Gd<*W>_5X7B#LFyow3nK*ana++Bg80-y%w}U?V1k4oVYQ&#KuW#@wQWFpAU5G6 ziB}0~>46SZS72af(8FgWc=Q}JwFADq8m~&?%>=bsL1r2-uroLiFcZ{zVP{Za;GmjH z(4BL{l|;m=g!l;5&gaDIA5g9b`G}1{fdQnFiy;7~deEFdD3l1R1ogER;4}wWf)tfZ z3=2R_J7n!x*`U4waVnV@7#TDem>6QPnu9C|QW?OͱOh?UI(-oFaE^%s{~ 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 z�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%0D3%;#Jnbeb)pw~|Gm zbQaSySw+VC^B5Tf6Ak{`tX}wUm8{plj%{-Pczi_vdCgb(w`P^gzk-E%|0eLw{kLt` z>3=#)zyEu4P40i6i^G4GS<(ONMGF7(2Q~h;)bIUox@hYEuZw2?=M-J=|NZX8|67fg z|DW}8)qg|H_5Wi;xBOqRW#@m%@B9C6-FxhR`Gd3n3rw#5SM9&^Kj75k{}YeA`Y)UO z@qf>R@BcGx|NhsHV`7;5nvG%411^RRYd(gk-vSIQO2Q01n?x8|H;FRb)(~TmkQZZM zTOi7?ZifiN-ZEhZ&zFJ>-0}hplIna6ru;k%%bsvDoZQ6DVAR6O(3Z%|a6O2TVO!k) z|1-P){{MaN_y2iuzy3G#|NQ^z+xP#XlHdPxSAF}hFZ1pH2ZnF|bJf57H|zcO-&FVe z|4j@({?GdN^L!?TK2v4} z_0`M_`L;F;p5cF}#?_$Z+K$14FVp14Di0|Nr~f|NGy}^zZ+&%)kFD-u(IBHsR0zt&xBJ z2YCMZ-yHYn|Fx-q{`0^3^Isz5?|-c`fB%2-{P+LT(SQHHTKxZ?H1GfaGoSwdw=rd4 zXh>sVNa|!@*tL*>A#w`?!^@)#3}FflkEVq{>-VPsg!$jGpzgMlH8gMlHWK>g%729c%<2Sg@bJMeDP1BU%t?{qd? z{j1>Z#n({9DCe-WN&CR#K2wGpF4hMwS=t0R`BK0jTAIi(-zAhG#L|bM=DjP!ubYkx&dK%+mS1fdUh~;9XgS+3 z*t%FV#NW1LIQG_@VQYaY!D{s{r}H9?a%-H>wf-UZTbEGM7yv55AXZ@|JROB{|!|?{nz>V z@qdEqr~l%!KKpwH! zpa1tQ{{DYZ{_p>(6aW7UsWUSC>|kOz`G}c;LzR`G#DR_Bxe7Z&>rr-wwc;EM%fvVs zJ{)9c_#n^DU~A3Bps2#i@c#`n!@E^X47&>%8GJ(+7~UlO2cN6(U;5ww+h_m&zq;Y? z|E;_J{tvzT_rDR>zyIDw|Nbxa{P+Kn+rR&UYXANxKL7jw>V&`lpJ@O6FL3P7|6RF% z{>vEs`Ttb@&wo$HKmXNc|M`DG_wRqF&wu~3KK%E;^ZEb(%wHK87JX%8xOI(*;b1#6 zgY+L}1{EC^hBaa=44eKjGrV2O&G5ieh+)bjF$OtN2?moF!VDXpu`^V@{qX-u$?5+x z)sz39`RVeX;o0qf1s6j8NxWF|muLT@KQr{d{WfrV`OD$p{+~1a8-6gj8h{**W1eG;F*v`M@V{3>}E zetK{(Sjxa<@O~XfL{~if0zNsmjtieyKIA@OUb5*MlgmnNrdy`XjK@CxX5f>a%rMKz zm7z73k3li$)&KYZulz4taq7SP^W*=^Kb`y^+j#E(!`GMp^E2K2uPJ`_zwf2{|Eu&L z{;v*t_@Ax)!TfL{r`3fkN$^0dh%cL&GY}vCa?c5-0<%I4gXL7*Z=$af7ha)|4%9X z{m-7n!0^F?nL+X(D?|ETb_Rb_PKGpXE{5#oTnv|XaWO2b8JI*LeK>zvle!|3>w{{zv8i{QqIokN-XqKmMOg`SG9O`j7vw7ytafeAlo4PRxJ) zuS@>>zkmO~|E+)j|NqIx$guqkBf}0?CI-7ACI*1e;J-l{}=9C`(H41#sBHa z3;##S&-kCD(DVO?O6~tQKH2~G7=-_qJNp_5kC&pPy1o< znEU4e$>l!|E)D)`QKjV@&AW) z&Hty2i~cWZ-1GmF=ehr>$8Y}6`~Tqox8+a&@Bjbe|DsQ?{~us`|Nltar~jN)-~P9q z{q;Z9@Be?UGt3OT`8gO8zj8Cw$MG|iISDcRoh!nyzgCPv_^miY_CE=R@4F=#dJLo( zjz&u{)Y?cfB%F|B==d(dV6#u0!A(MpL5x|1A);N7L2MHr!?xMn42$A97;Y=DGHhdD zVh~dL|37%apa0t?{rZ2N<>!Ci-{1eY=6?S#<@f!6UhDV&R=>XgpVho)S^w+*m-WB?f0g+Cf92ud|F>@b^FQ?Q z-~aR7{{OE&$-s~j!o+a?G&92@QC0>yNj8Q*huIi*aI!NbK4)VnNn~Sq(aOqDl)=LA zU5S}t{{=<{$vy^#^5XyheW(8Wugvi8|D2tF|Eur&`+pkqzyD;M1v zk_-%5MGOo!QyCcERxvO{D>E>-P5uA>_q~7rO@;sc-{SH2ztglo|E~-F`M>?l@Bbo~ zfB(18{PVxy%%A^zHvawZc;esx;-CNjFVbOTVDn&N=rLhtIChVjLBNWIq1J(gVg46p zhUC(J{{_l^|G&NU$A9stZ~qU}fBC<{`t$#n(?9+9oc8JePW{jSmqvW~Kaug9whP*g=#!qhp7&myeGWJC7WSn;V1!Id8AJcSLrLQIg2yUf4%FUzpYW&uRYI53Q->0phYs5&-%ntX ze3-Ds?3n|{qjwp9r~N9po651^ERT4DiLB~@AT>jVz=xI$z7ci~t}J#A=k8iGEQ-@_ zcw4O0us%sRLv<1J1eOh79{hUpydmEAUc;K68wXyVxz@n8|3(APin|BC)IC|SnE%a$ z9IekC&yW3Bva9EhNT>9FlNJWXfc0@qJokN>kHkD+p0QA!Wx@?37Ka)E77N9*%qiw2 z%qOh)nR`r^F|Ba7XZj>_pYhJN4#qo=Y#BrJ|1$){ongq!U&1hvwT)qOaXv#BZ#+Y- zRxpEhycfgCLT85XYFmc>i{=ciqDBns#dH`JTvuhVDUfH_$}h>F{8)%#gCsA5{UvsW z9m>oMy9EFLkDKxP|Fxw*{#U4f`=7-6<-fPyr~kVrefa-X_x=Bx|8M^v5P18aJNM21 zyDD$~C%C@(|NGXP|A$|`{lBl^{r`lNkN>?lfBrA-{Oy0~w;%tPt^WOA+4%Y3wum5l3fBm;O{_FqNoZtVY9sm3J8y7sxz7CO zsXg|;J?6mwy?=K6m#kU;f5DnX|92Qq{2x?T`Jd-|iZF6fk% zV9*HWPH9a1v%qBGn*(q9?=n1Ia=}4b^*F=nzXuuitT=dJy4*2`;v44a~w}$O;{o+n4oo3(!uYs+yUoIg$KR|OCmn~{Z=XQFX_6+ zKb=Rl|11nP|BLH;`p@!$(Ep`JEdSg8iv0h6N%8*;N$vkv$WQzK{>g&>>yE7WAG~AT z|8Fxk|DVmfkeeD0YgfstVWM2BuIs3-{qT~1eD;|9Ezb*OIf3C^z z|ED;9`LCSy{{NpR#l*ldgM}gWJR1Y^DGr8rJzNZK;yetADZC8(v-ub} zRrne9H}f;dw(v9bDDpGRh~;DGu;XQ5yTHw`Q<00|iW>(5PY4^sqBs@?pDHGXlpPEV zscQfKZ#w(;|F2Dd{-3_~`~OkX-~W%F{PllT*RTK6@_+q5n*Zzn{N`W(6_)<`pL*ff z|32p5|F_uv{vY1_`~U09zyAvx|M@Sx_|JbG)xZB8cmDm~8T;@5RKEZJbC3W3|E7_F z!OEPG!T$jxLuVNigZ>vL2KyI(|8H3T?|;;i|Nld`Ffd4*V`P|qpNV1SEoKJC%`6P_ zlUW%AU$Qdnb7Nz;(8$IhxR{M0WfL2N`3^RQcRSb^-fUxIShbFg;n_?!hHW`)41Xor z82l!(GB_MzVQ5&w%;2ZV#PH3Bf#IOwzyAhxzyFIa{P91z=j;E85ug6Y%f0`v`Rnz6 zH`bT`d7_^EPvd>^U%}+j|Lb=i{GTHB;Qy9a_y7B+JoxX>`SAbh#K-@G-aq|+)8yrU zL+!W!RZo8WKjZti|KDf*`Tw<@i6Lkr2g8p#K86S-5eEK1Nrrt4atu-~N(`5C)EJ(! zX)`$eF<>xgw`A}LbYs{X9Lb>kx`bi=oY@S!q%JV{ycA)a6q>^r_x(C!$?^y$jfZcU zQqD|eW@zzY;RxYjRd{fQ^~RBAwt`A!c7=s=*cBA-u-|xgmi$i0E87eY+?=iHV5zU* z@cx`A!)<=J{oK*kev-!}UjQvv>T>h6ZH(Uu}b%=Ci`{19(Hesa%TSCra)*b() zSOreEvLx(z!#rV681tR-lT253doa~8UT1U)FJ-)SUYRj=`a_0|erp+IwOSce&C?nB zO9C0h8J!pk)XW*0i}V>%wrVoG5U4t(-ItLn*r zOR1;-eKeo_PnrMxziH9S|Ieqs{vZA4?f=hHKm1P#{QUo{%(wqvp8oh>H~aU0Kiz-- z`+6A|-fm!Gu#SjNku7FaQ3Z7x?FY z!Tmq~b1MG+za;+ezsb&j{~IFy|DUPOz%a9ffuV3W1H-i+3=A){7#Xwz85ut2Ffx2= zU}T7z$jIUt)RKiErk{nO z{|pPmr{^pT_iwT=l+R&dXwqR}i0fo#DBjA%uwpACL()VBhPi?N|1V_t_y5C+KmY%Q z{Qhss_v`=fJ3s#aJ^uawk}Kc-?_vA)-z)L!|H5Zq{uj*n^1rY0%l|JuU;am4`|`gx z>g)dva^LV~FD8Vo=WDWq5u< zfI(DBgrV3)oPpgyisAK98HR7~;G_wOy3Kja880%5rXotD9LFrn>$AzpeSlf7aVNeA$Ny(qW8FZVwBUr_15|9=rX|A!r1|G(k&!vB7%egBtFF8a@6>-&F#xy=7- z`|th}sGacd++5>-35Li2+F1MiEm1i7CuXAQ9}bblzc-|a{N`|+^ef|$(ytAjw|?GG zWBFCE`pYkmU)TR^E86{k%CiZ~0gMJ54WA=;8{X{@YB>E~+~NH+8HR-(3Jr6YD=}!M zDIW;(QEE7EBhO%NA(h|}C;UO{E!Tu)c8nLQ4}UwL{`a**X4yjrq21RTdi~EgoLF(< zzy*~f2kx*OYB-Z|=)hW^qX!t?bj+?M0q zu<{4bf^-1^1>p!GhLTgl4{l_MB-FczELfK*+%WNzpu@f2{0m~2@@|L|;QpW&$HB00 z9qXK(a?JnRk25$p?EUv;GT+}HF-Lw|^gR6aBRBci1P!NO6FLfiRlIxn>q1rIZv_+E zKMV;>e@kZW|7)h7_V3L8SN}Ht@cRE@+Jyi2+>ZR;mizMm>B~$ENA3zS6z!E}a1NJe z&<>Voc*7&h5V1g#VZ~!n2Fns5hOq7Y4F1n~8M4HA8UESxGW>VqV_^Hn&u~vwh~eE_ z5e8i?afV;BB^mNgNi(QUm1PKfEXN?dRG#7bMR|tl8S)I8d2$TAZ)F(TK1(qqPL^QM zeIUy4|D6!S%Pag0mzVJ{SXOW{=tQ$IB*Zf_Bu-*r`0(%V|H8Gu|4&-{^Z%PC-~Zn# z`u5+__v`=2qA&lq-~aso^Tf~p6Iwt2f3fxR{{s0h|NHlT`G2wd>;K@^Z~vby`Tl?N zlOO+M?0)^wF*ES&U}9MLijiTy5+g%G zG6O@@`v3pUIsX6ul=tty=99nw?KA%VU-tXY|4;M&{AUUN^Z&2JpZ~U>e*ZUr@cY02 zli&ZR{Qv!bw$Y#eCbfV5N8kJNpEcy~f0NsP|9{Q@_kSwy|NrOL{r@lP$H2hwjDaDh zkda~gYet5)KqiL31xyULuQ4$QePv?c`NPC;`7INJ$yp|b!nsTg97#+J(Q-@-9ak9{ zRJs@$jO-X0I6gBlWUORh=uTu{2$N=DXt?(O|LIBp|7!>Q|Nouu|Nk%N|NYOL^6x)q z+`s=%_5S@gGsmttfnOJroYypWM$^DRb(Zf+(94ihE@i4Z1+L)lCWy46e!B~45W zs~edZ4puNRbfz;gtoCJM*saCHVE&JhVdZf~hRtn^3?|l$3;|CW7-qCGFtE!qFi5Zc z|9`*v|NpW3|NUR@_V53}3xEIbPWb!(>d!y_<>&wTUlIK0f4JnI|Cc`f{-5{o_kW9L zzyB|0{PTaU@t^-^s{i~Kx%ub60cdaE*}wl)694`G!1Vur%ZC5|ebN~i3RM^x9z9`X za9qm7@GX&*{ z7ejq88-uJU6GPXdzyFh-{ro?}>)Zc#rl0?p9{ccr6Yu-~GdbV=7g_N3fBf{f|5GQu z{m;bp_P?Re>;EDZ&;MICJ^263m&a+sjm5drn>uo^nrx``)alR_ZdC^m(xGx zpTy z4$p*ed(MjRRjg{Oni+Ney!d0V?cetUx88kvF!%Y}hW(N+8}@8_;_&F*1BSTwcNxMT z+-A^xe9PgI!0iLeEABKz%HL0j{`ZJsBl8Od9iev{gqgnHuvqlxK-Nx{0A~)~1`BV| zh9@?%4cRkP7~V>2H$3YyI8d~~#KAYwyrHYsg5k|abBEJAOc^?E89LPE>NJ#2RZW=N zB)fpOK&0ULLar&|$qXOvGkt4NyY%|NA%#Z`Tdi(3EK0q2!2RB-19Pq&J)mEBs3C9P z0fy~|4>YvZ9%49i=O}~T@lyv@i(houHUGweUX6zd+e%(J+;;pTu*B;h!&(oH2W{U3 z4=fXuW^js8Zumb>%b{wO!GVSd(+1&QivxV-Rt=p2RtIj}vtV%jWZICm)X*VFMyJ8G zS+yaZSMGq~XVD4y1-u%58vH8;D75TL-G5o438Zz zGi<^9Q+9yjNAp{FW6MF?=fv$$n^h*YQb-TiFQ8(L>j*a@VR|XxH#?OgURI| z7$!b{uMqt3y@PV}2ZPz}A20Y%`?O$!$(IB}zHbX6_%@iD9~<73eK!po3vz{_B3#KU08$jz{3DJMg*1_#5bNo)+-?^qakU6>gT&t+sV zVPRm{QUCA%4e`JK^)LVa@38&X|F{!B|Igz5`G0TCkN^HkKmITN`ThS}h9CbkOn>~( zo&4kfO0l2+EqDF=f4kz>e?H&e|E&%G{68=M_kXnTzyAx_{{P?f<^TT=Hy9W+)-y76 z7BeyIQ(|U#v6Go$gBc5h$8;8kvRf<+)BdwCtYl+l@cF>PaAYqF!{-7Ph9DjmhG&zQ z8MHW<8Gh$8F;t#oWO${{$S|vcfnocd|Njjf{{Nr3?%#hA?SKExcl`a&67l!{eeS>i zCtmsU-*eNS{~MS5`Tu#VN-l$^H9(%KpFqXG{J2zr5z(|Cx{f z{g3wj|NqYR|NkWw85ktm85rI?XJFXw$jGp15+j4@O-6>p!b}W8j!X;+2}}&u1xyV5 zg-i?^lb9G5x-v1GlVW0+^q7%h$wEd3-f%_+VKznv#f=OM8=@E(^jH}f9&Y;o|9a~G z|MqJc8SJhxGA#JY$k58g#NaBz#84!}#PEQHiDB_;Mh3y-j0{JnGcrt#V`P{m!^j|i znSo(`GXujueFg@*oB#iRYyAKJxc2}5({B9xZ`<|ne~Z(<|02x){+FNq`=4p?-~abp z{{H`3{P+Kdg1`SwYySR!I2E!MH|z7?|14(z{@1ts`(JnW-~TxK|NpI5{Qv()lz}0v zje+6bHwFg&R7Qr_bBqj5222dT9ZU?ySC|;?3oXT|UT51Ib_XRP@1KbP(A z{}-$O{-2Zj@4tw_|NoKf3=BV>F)*l{Vq`eHnu%d<8#6;{C=0`TAyx*fU91dC+}IdC zZ)Rg?`p3rLuFTHxU7nqR{WBZG+1YFig;Hz`90jZlZSz{L1j?}*?2JqGYfHs-%G_AIu?mD6lseys5y%< z$bS@JFme`V2=*0ZXwl+l*#4V`f#C%ggPIg4!|wg;4F6f!8LkSkGwkKyVEFr!li~bR z9)>wv1Q>Sei86TpmSk8wRgR%0K#8H>Lxn-6P?;gET8?2ag9t-o6$68(>)ro%jhFr3 z6cPP@ALsvn3=5|I+oY)a@4?qCe>W8S{_QCI{>SCO?mrh+E&7vCxcQIErO$t4=A{4i z3m5oziTUln?yo=p|2l2JxS+d(Y0H(b%pWYXSv5A^WLqF>$Z_Fy0;j^B2(AEOPVNMr z6mAEmIBo{rcU%`V__;PD@8|fD$;ckSe}`p3eiT#x@$UZ-%FTZyo`wC~psnytf$P_& z3)>k!JeU*kHX(xbwZlP+mkzHPUnp3WJZI>h_xwS1*NX!;tzR`*Z+OFS_TGDkz#X4I zM5zBz*d*}x4Oa-$gkxve8~z6IIxN~FwBXP^@q}A_G6(dQC^)G7RBo7 z4rN969mE809{4@wa)Y1t`3ApVryB$mPB|28Jn7)J^Hjrg^Ro<}lrA#lq+Vk%d2pv; zf7X)*wJUEnh}uV>XL^!$Cn(d^>_ z(~jp23+nDMYz(>9u-yK9Luu~G1Fg(Q51f`g#K3*-z=163gAIO6ha1XEjvXk7Jl$Z^ zf3d;k^$mw6>xU0+xW7u6e)+S8`24>!ax>W-ls^ePc=}6{LDN%-VfAuNhl|hk4_tp_ z;&80W;(*3%D~A?KYlqHIs{_A(m^Vb3n=m-(>N8CFuW=ylmg0ir?&Lf-y6$%m7&bgR5Ig<;fyucy9rlD@anLNj(6H;u*@nE1GY+N`&oKOdakhc0 z@xp;zrz;Lu`EEKC9lWO$U|t8Vt{Z)E%t$t1$fbR!oQylU?xNUZUa6TcHV+ z?z{`MO4+~l&S%`9@b32m$F^@5th+uYWJ^uLlY$ zzizOe^) z|KBbN`G2{n;{UqDS^quGZT~N`_1yncd++^kIrj2@TGhw@8r|Riv-SM^f9v;FaJU;ir=e*S-M|KtDM8Q=f6xqSbh9Qgfz$Kmh)Urqb*f9t`Y|BFq3|F?hm z=l`lr|Nh5JXJA-R%fyfo%EC}Bz{bG1n4KYxnUf($i;F>Bn44k8E^Y<^1s;aG&O8jd z8axcK7q}TtJ8(0ctm9$`o50B+Q^Uca<;l+Q=^rZt_fi%H6=!CKlMfgff?63E)|mhQ z@AU8Q|I7FO{Exr)`#%HY@BgnofBg^M{quim*w6nHq<{YZ#rgBUio(zT`=fvUKf3eh z|Al71{=1y}_1~lB_kR|fKmRvz{QX~Z_wWA&TmStp?fL(|CzgR>j|wA${yj#9f;J|G z1}SEStJ9eo3jQ!N+;?MPa4BP9i0)!xsBLCpn3}}GpsvZnV0n|7A*hs@A)0}iVP-88 zL+1xZhD$Mw49dqC7~~BY7@Ro#urA0P*o-d6%Qtc;ut0d?j$A#;YcP10VgJg zhq6oz+ukxVaBXH}n4HhZV4=#$@cSwQ!{=rO217#zhF$mn|1X^Q|G$XG|Nm)^7#TMI zW@ISkWMWX^W@2b$U}Bj3l96HEF-C^`8H@~D;~5#2$TBj_y3D|!)y%*ksK>xybnXBD zrrQ7ixz+yvzjE>4|A$Tg{>xhb`yc-2?|;)1fB$PP`1?Pt_3!^%6@UM0RR8@yzvu6N zleK^Ux83>s|GMPA|3WGM{-4?T@4t`a|NoO3{{K&W`~SaBECa)dvkVMIHjE5UmohSV za4<1EN?>A0UdzO=>opUDtQ0eYxH&V!Bu8e3`xeX$dt{gyLf$elxU6Pkm>$l=aQHJL z!{SCph5}|rhRxLs3{G$V|5uCt|9{4bfB#=w{QF}`hWko?fLWHDe}+%X&it4 ze?Rm4f5D31|7Xql{l8P(Qac9D_udRP zvXKnSCL}RvGN&>;Jsrysd)td4;gJ@@gRH;*Z@xbCKk0nUfAu`w|9yY2|2t9C@NZd^ z_P>f1cmHP8&iVW2RnFfBn}Yv}u!sI-@Gbev@@(_p8V1pS|B9ynlUQQ;|9}0D|AMvW z8P2TV!N~A#4bu#UCCmpNO<`%^DP!$8X3MsrZ@V|(C#>pRS z1xqa1GWyI|V_tq@KG0ag)ZcKJVS)Rre;+Kq{#lUu>DL6Ok3Sd$nZ7f0nSQ_LILh=MYk;D@WeyaF!5oEg*eS=z4F{}<3s`K2Ib|CM2)$%lsb8Lt_b7@jly zkbdltc;|kDN$g#R*IREl?D%o3;hy1b2fg$=2i8x&cc6OrLx!V=pC*XRepRqd^}~Y* zr*AQrPyIO~F_rm)M+uk0T}#0S&$fv>MC_Gq@Ksc9@Y$vAP@1C6FojXiLAXkv;qYGl z1Gz`^9IX0u7%nMmGWbqYdGPR`oI-S+L_?^J;04b#&bn+p#vSpeejK<__+f!e>}1Jw$)4UKJ92fk#PF(^DYXt*V-bzrHLl0$!iy@98mo-KhRxW}p0l%#~sd z@2q+Eyl!G@ z?K#{ax$0;GH^)f_q5WqWjMiU1uy4by1L;#A9mvvrec_eKmyWpFzZ!hU**;9W#?O#d zB;jD2qTrBHrG9{`Q}=*#wh_ZSW;2H*JBtG^_$&{6EwVVEQD}BRK+?EjTa#YHhqD?E z?TShY+N-1(JZB1h*ssiG(AvPrVDtRPf-`*|6qwh%SYTK1kim-Mw!_z1R~?RdTs$yC z>zqSu;2DMuM^8I!Z9mhX*MF|z@ac;VO{&)%dTVbdd|mf2VQ2q~hQ}Y@3+!9+om;Hz zKS!%E`+@DN`4+5NFM8mzu#AJzMnwm^G&P3};#v&~8+9B?RP`8S^Yt8*C+IpbP0~IP z(5i93u2IF|z@Z4xP{`W@1hsU=Xrmef{@Xq~Vg8$T~3E#?JHQYb@ zK4D|g*9%)6em}b+$S5%30Gq%U4IYPDO+kj|i$xtC*GewfyilfL(LXtdh)#tDZX3k| zJz|Os+HwjBWwCM%4<1V=*d3Kf(3cc_koQXgTbSe&mZ1=`t~DY(Ju@0sDCnCOiUM2n^+TCk8&)yu$_BDfCt|LzDxm!Sbm`d zb`#+TnU{qb3f~GZsBaZkuwNw95alaapf;I5!K#T@;I9_9f%<$74yTW-SCmYcT{Ei~ zI+(8gRoEK-TVn^`&jk@2-wW3He{D#9`}so8^G^lS9X}Pg|M}Q(O7xS$?aogEUjjcL zn3(#-pnlia1|8S$6S#l=`0(MxFO$;ce@=z8|4TR>&5-j#g6YJq&CC^s%B&Fr@oWL% ziR>SCt8x@vS;-+F`j$iCzz2?mliN8I*12&QxGZKr&~SxK!txO-!-FdFRdcP-dvi~+X%lccxOyl

16z2g6- z{vH3nPM-H)#A54z*Vm{1t4+N3U&QbI|J(h4{x=A-F>HCp&0v@c+ML=KuevlK%g{vFQK*Q!)$;EQc8w zF19l=+>d2q_+Y`zz|Y6R@a{4T!;>af22N2n2C+6ahKS2-3^l*m81nzIG3ec8W0*UW zjUn2MjbYg~Rt6n8R)*gNEDX_`nHl!KWMWt%!Nkz%!pLyCkbz<0lK=mIKlt~*UhCig z?3Ta(Cw=_$-@D|`{|vrA|BVj*{-4_W`@doF@BfZPzyI&*{QW;*$M65He}4aO4F2p>^&5|LSi4|5rZ!_dl)o-~UiYlx*~9<; zFIg}!X!kNO$lPUMc&o<9z?I3!Ah?K;;pzoOhO94)4B9+Q4785vf7Vqkc&f`OqSl7T^+je+6#hX4QF zqyPV3&;I{E(~f`tE%N^TH_-X_f7$21|J9ED{r`W--~VM}E!C@?daFfcRhILpM4*vZ6TWx~X;^*kfP z@>oU&`v(jR|05X~R-OI--`4K`|C{Un{okSV@4wjGzyFmL|Neio@y~zXpg;d_vHbae zV;xWE4`zW@C%z2M*f>0$r> z+lezUMBQUx__dsofvJFr!Oe)7Ve%_xhBH%G7{2MSG6bz>Wk{1?V~|f}W4JMijiGuz z8$)*|8-q^(8^iI>tPH zY~$~Urz?L)#2o$|Fy;U6B_i>E-uOTKb7Mx!-!t-V|7QJE{6AA)nBmh6Va7c+vP=dvINtQp@vzx0ui2ri4Jkj|9O3we~^_KCTjSSUyMS0i&SMf~D+& z4wIYt6LhWe@H|HlQw2JaSJ z+xYr{=8BgI&y`;=Tr+x}V1EDEgDm~$4J%b&Jh;98r9$ub*A2f9zB}M1@F`&T`L7aI zuYUUNbo*Cv=Ok0d{4jO_!Smb<;-Uf$7Th8Y=~KlSj?a{8NM@9MaCe7X1LH>d1@`yl z83gR)7wDgrU9fMWbc5wI2?xJdA_;wq1O)zG=YCPQob8FWA>)CL>AxG+{QJ5gy!%4} zQ_^dP7fYWlkf?anFyY(1hE(f24(u_v80KW$bg0k1$?!Pimcy*LI|sO3?jH!?dYn)@ z=Q)GWgEtOSwtfom{`upERLlR23LUn9lH)uJ&T9%UkkFJoaCDAbgL}NP1CPJDLzcgm zL%yfZfo>gL2C?@#4h#FV52y=hHZV4*GOYcmppaHCeW2e{wBd6pU&Jjv_Hx!m{~z@H z|1Pk);=_VkyO#`y8y-2#&AHQ%tbLuK{o$pC>1)p)$XtHbA?yB`1JZG49ZoBsKTxi5 ziQ!}PwFd2Fw;fJBf0%IN*NcRWn?GdmKl<^_I*9Q=#5qofUGhQ?yac2UyvbHPaFJ2N z;m}fD1~)?^hBYmw4$s@o8?3c07`CLFA4s-0J&>{2kYU?b9fn0L>Idxj6clQ0B_=2y z<~Nvhh3!Vus=o`m>c1RV+4tJvwBTb0FNfO=ZN66=CZwNp_`3CE!`6sn4jJi38m50Z zd?4iK5eBZ>;|x8yrx`LfUtlQGyWY^T?OwwKndcAYYJVtjS@rV@TMTo;Z6@9WdlJML zY%Jv)ID^$0aw_#0X4RT7yf?RW_|#!@Kr_njz~*^&3=4y89RwPz7}!nC4si7v9H?Hc z*|24|qQZ~&5(Rn<{2cWwSRb5O{`-N#zK;#u+AkP5b?!HO`gN_L^~`w&-t#9NOf-)k z;P`ov!94iDfkvkT4AsXEHq_lX!tgHfB*Qwl^9)xKt{up4y0^f!{P~61Y#&$1eED@k zmXWo={2iad#Tp5QH3fr02OQiC4jj0D=wQRiyGI%da!(!* z2|e#nmw(OSS^vET;pXQXW($10;Qr^AML#>Mg3@Qc1r-ev2V#m98PXfFuV5pyB z<}gj!n&FwP-GTe(?GMa7Z{MJ3YsV0xWZiIll39cGY6FHB6EqJ@Do{L7QY)eG<2~Pt zU>4R4fuFw`YI#38C^tMmVBUMLK{@wYgIw@=hd0?L8xGw$(hzs(V1vKG0frib0|y=* zI_NO_?hyu&+>-}-L(Vf?%)8bg(SOfDyXm>ZeEyFoY=8essAFR_5d6fakXJ8pAg)NU zp=y#QL+2WUhGUb>82&0*GvwRa9q2i4-;jUaobtjKN#k<^9{!IWi+=r@aF3PM zpztFf!=*ZjhEs)#4Id|JGVrf4V2GP+*04g!+QGoqjv@8DeM9_t`vdZ}b_aTutQ#yR zn;m$#+Q4D&M9qc?g^CX**GU{O_{i5Wmz8zfqZ#+6e0Zv}QER@CgIJ}orkEmo<&UQC z?4M)bZh3L(asIWfrve^X|9UHxs=1YaI`i|tYnYfMTv_8;dxRb^@qXGVZ=qZ$^qJ>6 z?{uO0BBw-y1%r6sFgAU8bjSF-=c(l5ZA_~KJ=qq0t$*kHe%qU6Z`nV5{W*ozPcTR% zPdJr#C*w=zbzdUhYP=Qx6V7%{aHsGp(QLtVz6`#m|Fb@|zAk+1{gLgj)|c+*!cVrn ze*EDn^I4IJQjH?q0tMVGoU_;q8F#3=h)?3X%q7OD%B{=e!hM{z`u~S7pWnK?ka@oQ z$>#fW)t-sp;Gf9X#eI#VjYv6>JKuG_+W&I-OX1h+Uv<5(Qq$1z6S~Ff^VjK*FN;6V z9u6;#&A;tGu6Wb)qUYh%TS2dCL{laI$mMZfVb}Tl_|HW~e};Q3ZhvOoHG8xC&(TjD ze6`PGp51$S_1le)jUO#Pu)U3YRq}@AhpdE`W0mBh7fP;rr}QE;MO1`jF7XAi+x+eSkoMT>7Spw7SEH})yxgtm#{BB_ z@B1PTDqrq>m+@oce_Qr*-0%7H1h|B{`80T9Ut2KkX6NGa;Mm1c$9|l{ne7|90o&sL zR==Kp;(f32{v3}crv&4YFJkZAKB|1t`TdP)Esp`u2M%YpDa`r*W_<7QoUZwsci)GH z|I)RX#g>26cpCn?;H_O|Njd8{qq0t&x)UX zzncGQF}(VaQRFVqf?? zTkx{!S%Ag@)#oCi%nskCzB74s{q>wzPu}T&*7!N$uQvNk&Qn}r68i++ahr2AvlcP; z{9pbrk?}vH|F1{iUVnY@Wy*);uP=Vv{73hL;3Mk?s?ThmnY{Y;;nly{e5Yl0C~j5p zSIw1?vzjjN!^Zm6@ZIM3TRx_Lo**;2u>D><$+9}wHm z^GReozlg}Khc6!{JkNO5{rdX-1$Pd9IU?Ah9IvXaU@7%QY=VF^r_H~I9~V5kaR2eG z#_NvHHeNq{!-YjfwLo)$h2i^muP6N04A?uC*JDHzX{z)qEI9y=2V4lh3|8wSNwJ-c%SUyj@>~`i%p-;e@Xn^^lt&19hbX^hD?{zA@z$2lm6|L z&r`c3@}1FwuT)e~@CM`VKjj~oZZ5vN{}uNa%h!iB9GGT)5`E+G=IH0DU%OfNaLRGs zW?^K^WLd|W`}^|u8Q-h~k|kCO>+!7RY-NsP&SNTOQvWyo$ImaSAOF2t{kU9g#)tK< zY(Dcby8mDN>+jc~j~*X%KGb~5{wn6xj>UJWie-T&6_FMVkK*}xpgu;A~9A6vc^e((RW^?U8-HFux<<`&hK z;ua6*E9U*ix1N6&*NeYZ-||1Kek<~#^uhbPyYIID*u~u|-2Geb_aC9JyzKwKG5lj& z%`=;2jL zyZPrPmSU~-X12}7Bb{8S*L!2`|~G;&t6OotkZwrdBOEE{-x{FyhkhV z%jgsd-r^KvuKJbsL+;n_f9_05%msgie=hxM_FeSz+PC)wgaxk){t%qXc3y^Pg_ z>BZk!UpIU__fGqr%fnq04_O|Wy)%A$`P&?(KuLXtv$E?XnO`t6wdBeeBJScgL6>s+p?35uL@}$F0Sf_TTU4 z?@!;JrQOVV)$%>y->hG`*CsxA_3b+QL*7rE?84TfuZ6e-j&Mk^@c;Yp-_H)qAv}@G_PgXuLEz_NZRtL z{onUHl2MQ|hfhx^U+5vXE5~WZZJ(;2INXc7a_`lOe@cH&e{g;C^V{bCe*Er2*My$) zd|(S?G-RB~=8>BKxWuZhS z&k5!o|NZ}*{d4lS_TRVPeZNloB>H~MtM`v4a9xvHEjdkMzMu&24~}B)e2!hr-+wOt zwEWfm#~W@tT`FL{_ao+0`TNr!+P|gzIQi%AzllsQn5{XYxP|%3_|Ng#{68brsu-o3 zE8`=xpLG_y%>Q-&u6}NPRB>t2%}sArUpFZ}723q{iRt-|^zWY;lej#5NGM_m=OMUeF+WUp+Yv8we zKRkaje*Y+6uU9Ks^vmq?Z-yEHU7@Gk7ykvl(tOkM+U_;$%ZpEyZfkyd%&5w0&K|^m zio1tfgjtB^7E{NMjGt8uG0g0LCV%XI^Z2hV_kW)I-=f|Zf8WjI&iRgK75f9$pUmp4 zRsS}M>&iOG?9f=G`9h9IR6!_*L;0`k+jDn5U*@``cyaUjEn2Odr++wo4*yv5(ecBg zPY=GV`C0gT1H%)xY219g=lQ4po&W39FUx;c|9u(78TTKJ)eUxAMQS?9E&+xw=`H|4RH^`s?A(d*APPJ=S3tvj1`T(;^-#RR;F| zPum`GzTo)u_LalaiSOAzn7*>&QV|kkOGe|M_4}96%;#lR zi+|uOXT188^P}a*w2w_+mw%i7Tb4nBg_FhezbQwtKoKt=R})7%M*vF`V>^S!f6X6L zzV7>a{%gah#c#ddZ1`vKXT_(v?@oX0c(?A8=jU}l?)`qu_FZVZOq=R#1!+G$WiPI_ zzox%Ze?)x0{pZ?0r+-tvJAHciLG;6fw@Y6sd_SdVryRgN@6Tgi10f@UoBSVzYnfj> zh`PA%cH)P>Px(GO3mlM$R(vX_FZEhrx{x-{ah3@`D&GBi`tJVy>oyl`f3JD6==ly& z3vU(aWsY7yFTUIG?mXMNcNVWS-d=g-_-3Wd7U>RIedR@RTmtqS^6aPn`FziMyWyG6 zqx6SK_xIdx{Ll7e=VO-#8(tKB`tW@@!wXVUMUzf8Y9etr4<|M#!2 zGT-(vJY;^xx`?laUr@k~~evEkI{w(}njI)l2+o#Z%Q(k&}igCv~{-~E1u{F?KF#tg07{6}#7R#W`smytk)sQ2P=O^bUwi#?$98a15{QRr> z*JOvm9<^P3=fpYnaSI zks_uK@9urx$i&Psht-iOlH=yzo;MA@IvIX`{$#~wnxV)qypuDUsgP+dqxGM|KW4wS zd$R4(u}3=|Cf|4B^ygX1{*d9%-}V10{@rKLWtL{GVR-Y;>2Ln;hHotI9Y1^$c%Yi8 zTB)&K(May8@M(@;e?30Fee&+s?Q2$7Jucg8thQy*^Oo29eed>s{(ksN>HWR;EsZpAX>FDnUc44;l-20g~v3Y%7@KNIH z`FEe*WIPhQ{rJxOI{`O#-;JCh{VLU}zCmM?&UC%m%3?C9dKcwt*%thl zXaB?Ulqums2dfqHH3qF;r+)lq+Q6mEQ^2tF&%&Pp-y47Y`n}=z*?$adpZQkuU17^+X!@)3 zuj-E;12bD4uNij;C*P0GPYZwe{C)cW)W6g}OaFZTE6q^Jc!Eum*@BUe{W9aipFIC& zu)1)}`d|J1#XlvEPyYnIMt|Y`SHg6S&h!Nxy{u zT>5kEfAjy)|JNA|8M7HC|NqG}lUbFyjA=WA#Xq(`QNL|@*0Qs(rZVkd-pcfW;oo1m zzxV$*{eAz(_RpGM?|%CH68RSPd&1v7riE;$IThF?nce?&{0#lq$i~Zd`u~-mjo;6F z-SFRywe$C!Kf$~cSQvjZ{A~Yq_5TBg>5SJH*D~K{Irur@`@Ns*e%AdFXXav__s`?M zCX*}s4X#|y3oIKMX8oPa+VsbZL5MMvt%KF_yUiz!KU+DcFdP22V#;SY_mBUtIn#Xx zUuNxp(?6g7X2EU2JmJ?@CONjHe-m4Xf7*Zd`M>-7m!EsML|D3hM1RlyQ^n}Y@SVAy{SSKrOY6V0zik;-u`XtP z@t6I_^zZ!tQyDydPx)c>SCDNI`%V@?=AR5R|1f;o_36#`7r(asRbpPvGL@y2X$#Xd z<^mQ8)*iNZ9J^k-GMr`Y=9(%f1e;@zb!Z@3!n{nT_ zqMwS4@oe8&4l&v>d9gULZeUpPGw_?|SH2%sEbUxV+2*rMX0Bmc{ZHy&9AghlArr@6 zrypCsUH&$S`44Lu^MmgjK5Tp&_3H!I9xicK9;UXxU;n>m+RRkJWW%ES&+DH(iwnn0 zj(x0~nL?RwGutsK{9pBJ&NullXFs3gUjO&k&(wcQ8C{q}7#08T{lDP<(*I`v+5S8K z>;3oh|9*itT+&R7|AhUU^XJsB{2vA1?tkC?r<>sxV-w>erWvf&AD{j9W}3io;@|DR zkN!t8XR>8+CUP-yh%o2=3HovGYXw^r!&io6&SK#etR{aS{Hy)P_-FagrN8ojUHB>g ztM*Slx7PpNKhOR(WpZQIW18_d^N-k{PmD2~H#mC!$AA0xRhGepbp~4p!_q(R|MmV2 zVF+L~=8ND?{W;-_;E&+nH+~j;>S5i*sQSz5N7T`mKhsBa* zA^Xe!y?<^N7FcC)+@u=z9PL(wNz*2h9Kcs!Uk z|8M@Y;g8I}kbfC}vwl7P-Tj~C=l(x>Ot+Y-nWy}3{kin3``6>Y_1S)M&EZ(i@{4)@ zukL@w|5|?S`&RpX&yS*CU4K~r*8U4&vSrQTN)*%)+|OjmBFJ3AAot&gshF{WVf!D+ zUkktSetGse@c$&<2mF^fzyC4&vFC@&&-p*=e?9*l_U|!c39BG`FPjkSGUi`QGrtKl zzh+5i=Vc3KH2Ssad&75&pR0dQ|2z4AIrA0{ChmRT9R4q0nEJn$q4@Xm@7jzN+@-t~ zze;|IvdFT2Vf_93?w`AicbNiNs@c}F^e}$@yXLR!-;}?1|LXnQ{`ceG^#7~=r2aPl zBlFLh;WL96WBLD+|9KcB8JU>Ena(kuW&F-`^>40FAjgk?s(-%yUGe|!zsi52|Nj1E z`n&Sa#6MgAMKCP>HSufU?-{&{ITy1gFtIQ``g`DK_RmGXz5e$7f5&u~eHrs_9!Zwn z-x!(yaDQh!`SZxP_D^{q7{B;1e-&HHtoASb-xCJM-xq(%|GN4!>d(tRGXIqSDX;_z zbO;*ry!)g2S(5eauZO=)*uQd{vIu{_@%0(QSHU8drJou<9Q~8a;mh!p`4U6!U+F&+ z{?25OV?6ZV{hL3N4F3mK!QTbHg#I-%sxh^(|Ni0o$@ZJ$KQE^DOe-0S|G)V+m4Th< z7gG#t6kDUfqwi-KBw3~ZTYr20OY*-K<4XqB|4;tS{g?dz2txyNFMAZ{P0j=Vo_^K) zxbEY^9}E9B{NKyq$i&7Zz_Nthm0jvx;CIVkcmBTlzlFt{J(}$SGvnXm-|qju#puql zgX=cC{-*q7k+yE68sa#8p*Ph;rhS3|11Ap{A2yw95PwU@~e~PTr*#$V=IS#WeVButP`_uD%-Z{#r8r zVxGxj#Tfd3{r_CX!<-d=s=tf>Tgy0?Y3kpaUrTjVm``I6H=A3^w7@q%K z_J7~M_5UyZo5rN}ubw54CGelyzpUSizoz~w|Lf0if+>+XkmWFwHlr$oALDF>JHHiw z|NJM$bdNQet&r85>B4`Ze{O&M|E&J=`tPj&Z@y09x%~gf-}(Py8BQ?>GhFO=6k*FZb^?22GY%495TW|8rsZ$e_m<_kZ!fL;nmJH2=l^yZ29n zq2Yhy-^2emFh>9P`_c2em~$$ZIaAc1)9i1VHvZB5d;QO=U*CSKFic~SW#MGL&v=SK z?!WfmM}NLEmi)WVaGYs1^J3Owwq}OBzYG6H{hR*p(qG#@(tjHNZuxfPKkv_r|L(IK zVHIW;U=n9)W|;M#_rK-;=KqZh>5K~hoEZw3tk_Ce9{<1eZ`&W^-!8wL{*?ZYW!%rm zz;uSm{U0OaoBupa^Zr-=S^lq)bqVvbpBH|eWB7{!93~@Sicm9!3l1^Gt@3y~o44h2*Od?Do%*&Z~GM{A%VB%&v`%jr!k}2`uga3d2Sp3gs zRbX-XTl+KVx7Gg>49QIS%oBcJ|EJAj&$g5~ltJL%_J0SM9^o&3v5U(3eTSH94YK&i?+uDZt>( zxQ;29(fHr$KO(=G|MdK2W=Ll|<<_?BDi(oookw2LGyIZehOi{{&+`vlr8(fA9a8 z{ki?ORxB|L6SYVf^)9=Kt$|_y2kRU;Nkeuk}AA zuKu41zYeh^Fs3lv`KQIe%&`1_AVV1AJH|KvY8m_(<}htwn!)gyL7#CV!y^Vc#y z*!XY$KP9Hpzm64+w)KF|HFUJ{_XwO^Y8qB&i{rCXBa&H&t{m$$jBJY(ECq-L7i}|B`0g!x+HW$nfp|$N&BR8~&I5Yx)=Q@8Lg127bmZjB^=c7%Ki$a)kXl$&&sz z?*A=@%l~x$M=kjHTTzvF-7f8Q7i zSff~X{Qds3@sBG*DC6<}4Xl@be))I#pU1zM41r9J4BQO)j55qi8SDRZ{ZIYp{g00+ zfMG7va^`}+?ms{ONn(s;T>M{;!Ght_e?Nv7|Bo;fFeoyd`*)p@lOf>e503QTaSVt5 zb^RA(e#RiiVEJG6f5v|yrVBr-{&6y#{jbKXz{1WH|8K@Wbp}_aV5VdL=KeXz!q3R? zYumpBroaDJ{WoVg_TT8=)_+p}&-~^1zlrf3%gp~t4E_KA{P$l&;KX}?SGR0LjV8x-}Bp#HI(c0ufu=W{byyZ z`p&~TlOgaw?|;SrH~v5RZ_i-O7{qA6V9sFjKaOGjzeWFy8SELd{xmRM|D(Vu{Y#6n zi{0s06jR(kr@x>7O#ajSzlU+wztVqh49SeE7(OxdF!(a^F}-1AV)FPe$uOJ2je&zv ziDCPnng8_}|1%W+o%&mk-HEC6r#8!+zc-lT7#RLBF>o`_V~G9V%xJ?ro%tl=)_)#< zfBokF)A+BLA@Kh_21f?pzskRD{z@}GX4%Qy^G}tjm310J&aX3nLjJ8`sAtq-ILKhm za*_P?JYf~k<9fc5qN?0@SSSpIJQwd?N^hN%qK|B3zk`M;TQ z1M@{@JC+`X^$h13`WQYlE@asDzx<#3zx==UfB*k2`e*Qe<3GLsJO12c3}CwaKk2Xj z|5*&rnAO?tGxYte`QysS!Sv>L&2JUv1uRDxO8y%&sQz2_XVX75rnyYcj29Tp86Nz9 z^)Hd(^8bwgAO1XNT=##?PZ7@k|Jr|6GTQyGVlZZW&e+EI;QtZUlmGVqVPGs_+QA^m zaQg4kzjh2~nT|59_^bPyjd8($TSlcnD;SuWnSN@pu(0s{TF#)#!q4FOzwUq0{|ts& z#tV#n|L^>N@UMhH(0>^?SviAAigQ-pl3l^8YCK`ugW{hJP$Sc~)~R{%`%+`s1^&oL`IHw||=V?;(3I z=NzGzqLaBpSbAAy7`*;$|26TO-dEud```E|D$33h>|+mNwEbc8RqcE94~OqNzfJyj z{=4DNJ-@F1+$8;6q>p0@^Ew88hE~R2CM{+|=0;{tM!uidKeRn(do)Gru&%4jo4;+p zjf78%w+lbx{PX(Zv({IUuLNJeeRk=-tlVDCh2NJy+w!{ZO0@J)~{{flz-~{{l)NtaR$R9 zW?>HI+rn=)f0_R2 z`t<*29b?!}hF>Rt<#Cyd+++VLB_(@YK}PJU$Tyw}rpZ4)Jid47-E+t9{2vlN-}^Y9 zQ(XRw(5>&gzSnVAa0xQ{{*e6G|33Gl_m3wG$Cy&T&*tc3Kf|Q;`^KN<|9AhZF_iva z{NI<^mi;x;&c83e2Y(j1-+#yT{hoh&#O*{S{vH4N_TN3;XTQV#I}3FS2y)D2a@E%J`i%KJm(2j|aKjGOs0g=X`~@Gj zKQG>eymETo_2%`P^&hQ%tz*&Wo-A}oN=?>Cl-1yysl1+(_7pWwjZI?58G^s;esuK4 zt!pAzrLS0BwY>U^VF!1i$XQ-4mMX^Ue?xz+{(k7o>o4cOo&PcA-$5oZCTFF3nMiJq zU&3DlzSn(g{h0FM%BO^HcfLh1Oy%_FIKd+FTHwR9&nrKz{}lSg`Fr$V9rjoOKJjc( zZ@#;nSK0pjk5P0oo~7}T`!jPEcOrZI-#@<$-{w5~|5W;w#oN1YKfS2lT{WAFD#UTD~6H`A! z*r%oMTfT3*V{^^==8-#BKD?G{SJhBjAm=AAlZ%sU1Me3epFavOKNu{tRnc0`+y8IU z_wa9FpDjQAetqht(Cc4s?|l6H<=e+id|lF^e5e1t`Kj?^%eQ0S6n>cgGW`?!r}1w+ zg94-2|0vNH!tTsc?{B{o{8zqUe9{OIFy7z_4UgoWh zxn$e7l0O$YLS@`U;y+oxn*MCt^u}@}J`2OeBj92ZSxIcY) zulUhOSxaV)@I!8Uc79eXM)yBYzn}Q}`OCF0mY?fBJbUN*b_?rHsV#~QJnlT}#Y4oC zc-M1uy$*h?{rtm=^B<)jt#?^Zrr|1#uj&fkrU(yY#$ueg@;gz+?RdT?fP zR*TG2wboy%7pLhVBPGbne*e$$=Y6-UM?Z2$i^Lm|^1rbUb? zj8=?`8L}AI7#vvA*w3@B5x3xf%Gmm);q8=9Qj8ziec8YMHUBLAW&fWK|I=Asa({X{ z??)P=)c^gAnVhct?Gm1%3t1=qk^7g#a^QVl{nf5T1a_nV4#$3Uu#r}&Unk|ZD9~0MK#V%Btv_GkUM15bvsvINGsBNdpP4>%f7bri|I^}^ z&)*-6Pk%lAlz-~cMb#%8|C>wlNpAkT{cYWk-4b4mwM?lJUxamqmhv@PrKueiui|!R zS7y2XSM~dp&)425y;=EY@B8BSp&xdCIR1Mx4~OJi=_uj#!gYd-f~y2qFwJ=ybvxss z<;xErj9&bbHkWr6y1?wo+``Q$*udM*b(k^uXW0AmFXEo~Jp6grO=j`m$Pdg6y$VxV z8ot}T_I{!9M)2L_x1wM9|MQ4WHA&G_GJIt^M~g>xJ4X*^0K4q>?~fhs=-yd!ci#OS z_io&i|J%j+l#$~r*Qeyq*2|KObRS$6o!9`*#_`dIotG6~4!U@vM5kEq(?6_WGIh z<&*6pD{0MxqAdcq1h{zmn4Et;f7$+E%N>uq4EOfkBOWnV6J4Kgq$T95r>H7KS z^RrKzk5yvtKP|+rehQ5c)rc;VtuFRt46{Ofvtq|4jVx`6s9?lK)eTi9^_o zzxmtpH!a^2cu4aqQQXy~lqr&zgKl$u9|9mvLo_h7* zosw6xKlDF*E^(Co$*)x(|GeA!zU0G1a) zH#SzDIL5C^_5$8a^S(~{BJ;iI=d<5i|Ly<(>VL^U?tex94gW>|_IM-zQ{#8er`V5Y zzAR!$;Cabkz;4NOg>gRH3GNe|ZcGzRW;&j+{iJ?g-1|TG_lIvbJ-_gT>&e{5e;;3c zlKOP>v(n#ZSqr%fgw{&Dld|T$^56M~@YndyxnJLWeer3*$GPt{)DM~7P)y^@Wb|U> zW?J?s<*OL0!~gIny^n-mc)qQEb(g{X`<$;WKWG1a_3y#o!oS-YBv>R^r!dL0++e-W zvXs@2nO8(inpJDEPOeIapfRic=lmxV@0Y$g|902?Wsl!J<5In=-zK^6@8YlVe~lQ^ zeoOzX{OtA7|KqOD5CDj;?{ORO)D&@ociD{uwAWz#Lv2XiLHW^6CZep$be*10d%gpE7 zo~?b6@^0-HE>;7ksf-?M)Q^FZ<566sRGC(Os+U4B$`Px)d0lRs}d ze)4en2;>QV7MUcGC;3|^!04gI72Y8BSP3nu>wJH{EqNGtZ}C0nhZ0W&9tA#0WPizb zfLD%X)j!*R>%U+5T=dcQwaR<;uVxGdylp}md}2mDvJyNCe?@-@`c(Wy_Urp^f4(dI zsQz8>SM}GI-x17pk57E|{pIy>)<>1!bD6q1dWG*wb_>2>6Iq&n^3(jDF&Dii&=+)(y zEFT?ybN-L{^}v8zatU`T!_0q|{^tJC{lEVIiN8_5wSK67UH8%I{ohwRZ*@K0^}P8} z?vqa+mi#p3_$KNgy+%??G*^UMcn+UBN2}6z0|%XOnQxp*-`L+jdG_bUp~s6JSHD~Q zK1{qGRDsgf@B{Lixw zrvJi3R0Om51i#*UaP;M?&+dQceLeRy;`{#>0-w6MdDVDi-!q8*31?X)wDGsVpY`m0 zzoxv2d!ni(AbXoD{qL@?Uq0Xa#l+;nbm=?SJNY-^KPUeA`u7&&HmO>%o5EFMV!~Qn ze9X%j#Q(c~|N7z8o9k~@zlna6|MDQ;1I5pB=eV+&Z*$voFfiu)_5LXRl*~Peu zI24%nGuE)QGfns(`DgX_T%Sf~8SNUe0(K6jIp0Ozw!Y$h8Tq{F*{Wy8&wXC(d7<-e zJyWLOdH&s;iELAu0~que<=!52OA?$x4=Ezjl8s`n>M*!Oy;*6hB3N z>ij(W!}<66?{9ys{(g#CKyjPKNxA>xn}m;Zr!tFvJM|&yO~m7f`;9l>3f@(gl(1q6 zV@zihV5n#CV_fm`-8a5(#a|pg`+r#YN{o-=`=*asZw)`rdUfYb_3O{C-oB21AMxK& zV!LFu+DuOaC2xady^V?j(&{4Gg6bTmEZ@J{Jl%9F?YhRbl51zKxv(>GcK*BdY1_w| zpJ@z=48{MR|9STN-|rNrgWRq>-&q9t{)%4YD*hAksp8$!cQ$YBKE!@i`X|EpinCa- zm5+yW?{CxJr#^rf*G75jFbNv{a^T7;H!+uXNy!786hs#`TrwX zUi>lo(e=Uii@h_;vH=i=UT&Zv379_utRhpRE66S@y8(V(|N~{qN|XR)%O!BSA6NKR;}~ zRDDTcyvl0JnDl?`|E0_)nOXiPeJlBX>^~3da@ItaM-01|ZvQp;8~=C4-;BS(%=3Ai zc}rL_{vG=5_WSuS)!&={Z0F+V(&2c_+RC`;H`~vS@87>C{@(h}i81p3%)iI~#WJk; zTla(Gr}4i?hX4P3|LOf{`L*zmCW9%xa?=sdaY)nj=|Kk{H8HK(zeck=j{!h@qx&PNPrm`flPGdRB zvW~TfnTe5~A%jurk2jkO`-%U(|63Re|64K1b6#NS{=ep*`=1xTyMMm^_V%|WvmR3v zgD=Bs*2gS9|7-rAVfSa*^Udhfq#yarOPS{~zWHCll*bv$na*_dugvd7Kiz+F{Z#p( z^v9ktfmNDa^3$)s+-y3m`Tul&8~l@F+{?I-(T`#E|7rgN89JEQ*w!e^vi`j&(B|JIh+e8V2Kkc?`2z zPq6v1tYJOJWx%G+5c$7=@fGtTCab?+e)RpA@w4VP!{5yRix|(dO<_{{m;ZP3-)(=6 z{*(QG>(7NBT)+1)%5gsCxWL%>$NKl4@7KQv{Q1QEnO%w9guRF9^Y7+gzka*?cV^^f zmSA&aozB+Bwvl zd*P4B-&22Y{9XTB2r~m5y8UHut*ZFVlKNm8zv)pIC%6R^N9n)%-0JfzZ zGnvo*u>4=lxrk%Uzwh5w{_JM%W%ByJnPKDqD}QYN*8M-p+rYe-A&H^&pWk1lf1ZrL z8GbSDV_wfJ&M^1azHf`Zd2j?UHU4S&F@fbM{|1K8Zw)_{8F&A){O8UP$#Ci~`~R!# z`ah0-miW2h-(|+#%+X8}8910BX8&d~GcnxyHSO;sHVf{>tU~|X z{uDB)GynY8{pZTh-9PgG%=#t4Si`uFp^-W7|1^fPoDv+VKRYcXwRO!zhPcMnq? zs|iao+a9(k=A(c2{ptOa@;CIqfeXoj7+Cka{lH0lKx}-kL!OcLk-h@=A+E%e=YyL`St9#In!~Lb&L-gomlQOtor-r z&uWHfW&=i%e+K_!nNt7V{bl@@L( z@%!$d3YOWds~II3co^?7PG@-aH||g8AA6S7fByb{#Td(Slj+<4uYaTd$TMUy%Q5d^ zkp8Fsm;bLc%O~aqj2-{C{5|}4-Je^3&N8iFlVIBZC;jhohV=g;e`f!SV_;&?XY^$f zW8`Oez?jC!%5d_Z{=c8Uj{RKp{{Xw#-){`xnOCzdU|ITi>z@_>IR9Vxqx*NlKRpIX zCJ)B$e+3^Wd{1EA!TLa~;*ZBQj;A|*E?`{2_<^y3%R<0GAVT=U-w)gxavNk0@D{L1 zunPRY@bktOiLVnr?D&}RX~q|ZZ!hk0C~H^+h$jRqh_4X(@o$5o!mon88n0ilcwFCb z!r(;2uLYkRzGQs*@c9FGhmwWp2lfoc6HFie1pNN-tKip8f;DJa7{{(K1>pN~mJg|7l@UGy~iT4tp zetc>8_JTP<yCZJzi8?-*BhmalnfUuWx)1_@%+Z!PgrU&dCTn^kb*gmi=V5?wVz&hb=#f=wVFR)o~D6k~37qCxYi(q}h z_JMH&a{vnia{^O?{RhhcRSuC2Yz|B_el~np__X7Vz^ffkGhTGO%y@3`+T*{#AA>J9 z-YR3Y#~`hq-zgoo6Ge+EAu{I(E3z+v!?;j;xp#(xJ!4i<&~ z6Bq=TEtmqBEPnm?(eUd5n})Q5LI(GO-z$D{{80Gu2hc}O*|O7Jbv z-(Yq@&yJQyA@{9yFp>X2I?x`R36SH&leZw|i={%`o>@%zE|ieDdo z-}s&J@4&Z;mmh9ExKwai;J(JwfENosTKtUQ2~ZC(n&81;vOtyN;fs$IKRH+xek}N# z!Pvl>@ucIg0iy=n4n+z54+1Zq9T52;QXq7Lw}N{G9|!*nz7ql!d^?zSyngZI$DJKl zR^0S>dxB$y`~|}k8WPGK5-S8>aLo9t@v-B!#-)JsC+;!4=U97StHPTX-x9t$FwWrZ z;C&&uKp;SDf;a;Yhd_nY1Vs)m4pEJN4o@4tG_cO#_`%@t+u={a-w(el7zCJpFwS84 z@n^?diHj3HX0UPy1+W@0O0Y_>KVY|DHDI^k*ufUSIzx7Xbb%;`h=xD`uLAc3rU}0% zytjDaa4X^NhnEW91=v13^LX3w@y3scpEv$}U{d&hA=4ke;WQ=_E( z^kAI96v6c3zrpW_-wgkDFnIi5@ZW$%f~|mQ#Xkq81&k9IJpSGI`+(yF+XZ$7K?A`J z3?835UT{1K_&S5BgM9~M1!DtK2SWuz$IpoW1ri^gGyD`_u=so6zXd}Fg8}mmrVi!` z<_aba=8FF_{xE!f@!jHk#WtP4IEd^*8D!N7ne;&sEDhEG2} z1pJ%u&*FCkgTSvH4^HrC@JTQRFm7P{z@otPg0X@rfN2Hm2hNV)4KEZ#Zm?VYneq3- z9|?vP{}dQK{$Kbf@o&c84#5J(9luZf75EnL!Q$JAzYank(kp}%SUkSY_~7tu#g7xr z5g!5`Xz&w}*!J|FmW;DZ4p16u{x1(pj862BY%DX2_fK5&1=dk&@wMvZ?FzXbkhaJ=BR z;Cb*a;@*qz4lD&67HkR32N*h-7W{Yk|KfkZzZ-u8ey;ez!PxN6;5)->F|av^ zS136MKKQfY{ft)zeZU4Sy&6*I=z+ieUP{e1mxfa{%K3 zmIF)`EDbCfOdnV_Fb6PquvV}b{GIT-;qQ+>7d~6OyYTw}V+XqjM+UpZzZZ-P7%#AX zU|7I)LhJ+cj}I5V-S{c-|HI!0e-8ZS_a)#-9s+0=~caV)4!6Ys24&9~wV67$sO5 zxGa8o+^_gk!OOwHz_x=~fTe(S1@nxb7r0I+U0}QLJ>mU|ZwWsGeqZ?i;Qt9G4MtGt zE%bS&kSB_ytnwU<8#2L z3$Gr$3HX-4%)om=v_iST;Duv@zzV4d*#tEK`3@lgE)8afZy7Hh+%34e;f}&Pi9ZED zAH4nXZo@~5-wMBHuw`(5U^u|a@Ymu)!@nQOKjauVZ@js|wuAqM;0YcEt^}qG77yM8 z4uwAvpB+92{Mhhe#S4KC1;2LuuK2#<`+=VlA2&P|cqZ`X!G8~41!)KQ8A1zq90Uv4 zAINa<{`gYxZ3Ej5wi&;Ed~^8y;?IxYFMeP6rSLo8-vp)|zZ2dnoO0ZRt61k($a z4E7Zq5nLO%Id~)ZCkQqODyS#eD7gJFTA|b-c7i+LAIGbT>jI}P>~=W%;*P*miE|Im zZ@94G){J`%&lbGN_;TWxgy00V1Vav!3+fqa6h++41)QPXhY_W)AiW)&N!pwg^@R z_7ChFEISxiFi+57ko)mt!wZeu5;r*REO_?eb-~vM%oTzGGBczEL=B{8{HXZU!2Ltb zLE?qb0`7pn8b1SmJ@~fZ%ZaZHUn@Rqe4HQ_p?E|3h13bj2IUpfH~!D~$MI3)(T>+E zzApIUaj9dU!TB2pKU|D>z2c7sW5PcTRtugJ!Y@P`Bm|@xq&UQHh*hu)a5%6^uqbfN z;0XBB@$U_~-Cf;`fH%2ER4FTYS6meaCl= zuNI$Q{JQX4;ZMfTg5L*zG5q#mngKey=9j^bf`1X5C-^_`9r&b&YIMZ-P~`)}O9-6!x8co=XD^;z_@wY_#h)2W0?Zp24Hya(9>{Ev zc_Hc`zCct#^o8UF(E#QhuM{2%T;Fhp<9xv#iFY^tSO`pDp1_eIFoUz=Z^w^_ZwtON z{4Dro@IQg&1arpsh>sPY1HNQ@*zr$*?*!il_6IBrm@Jqim=`d=V5wjeV1L2Pz*@k5 zfJuWzf%U<^8$Uk$Il!X8QNcXn+lKcJA0zlSNM2x7_;ll~#Mc|YBUo0j-eAc1x8SeG zzZL%&{ulgP@oU02j<-9Q8bloUHP|D#1Oz^?3H&+n%j3s`Zvx+Te5?4j7T;(5 z68K&4bHSGvKX$N8;GV#d!F@s?gKGnW#m@ki1`!4^4Q7V-8t)eTdcZJ)NrKUUq2r&z zABDdS3RFh9ZUv20aE>h8Tuo1``Hvh9rhc27LxMhFFFY22%zfhGd2+1_K6nhB$^& z1~UdF|dHcft7)oL7%~Z z!H}VVp^%}7!J8qAp@(5LLjXfQ!$gJ+489CG41El18T=S>8TuL4G59m&F-%}s&)~z5 z&CtuRhQWxTn8BEViGh(JkfDTO5`!>L7E|iVJd?XgEE6GgC2tdgB*hyLpg&gg9?K> zgBpVdLny;Ea7<`3=rHIqm^0WgI5M~~gfT=jBrv2hR4~*sG%>U@OlO$Gu#jOHg9Sr4 zLnXru23v+0hB}713{DJ*49yIS7~C1s7&;i1GgvZ2FjO(jWUyn1WvFME$KcG6#L&X9 zn8AY~ouQLq1%nksBttdBECzdqIEDs>`3x=$$qcOwOBg&EG8noTRx(&KL^0Gb%w}+4 zh-YYISis=QkiyW$u#~}zA(Nq-VHG^Vfx6G( z8SXQ9G1M?@WO&Tr&(O%Qjo}4DFheWDE`~P@5e!`n`x!nm#4z+R9A@~6691_T^BL|i zh%uta|1yT<3@aE`GOS`qV_3j&mqDB{n_(%#BL*4942DGv_ZcJ^GZ_{$JYbMw%wc%U zkj1cs;UR-GV>-h^hIh1_4F~hAM{b3?CVM8QK|+F#Kb1WT*vRmj!HJ=UVJE|926u)=hJ6e_82lMJ z8ICb9Fh(#;VmQyh$(YD6o8bn75Ti9iDZ?g)Hw?}UwG6u$zA$(&G%@UF_{k8!(8X|^ zfsrwiVKT!71}?@VhB*v38H5>a7|IwnGrVPRVW?x+&G41MlcAa60K+eaK!$FH6AVm@ zQ4CWUE;4X4CNs=sxWypCXvZ-0QASt-0+k=R4C@)bFqmPapKT1=8Fn!2WZ1=!$FPCnD}y;>F~e4d zUko;k1q_=QzB5=d7BXyR_`zVsSi@!Hi)qIQ>*G{6|Ya`;gL4B?AK^s0M|U+ZGH}4Eq@v8SNPw8ICb< zF#0g`FhU*NHjG+wE8SXI1F-9@WVR*=(%oxispWz9E8eAaSRI>o-(L2CNnH$c*UT@n8C1$;XQcQ z=~{+Q3?_`W4D}307}yw{7+M%kGH^4xGPE z8Dto<7#kSm8S5C%Fvv1yGgdR4WRPOafTq7j1_j2;M5Vtg4Dt+342q19c0)6R5~CTz zRdD)iVNhm7Za0`STtiBKtqdwC>9399I)f_XF$QhM4u%SbE(RM0aYic!JBC!oZiXHP zb;daimJGKUG#Tv~ZZdQ-tYXk%yvN|cki}rj;K!iG2rA!u8QK}{GH5XBGKMo+GiWjH zVDMzLX1v32gMpLrH^VK4w+so4_Zj9ggfXmU2xnNr5YL#;pvUOQu!*6V!I{y6;Q&J_ z!)At922X~A4AU6`8BH1c8H5;J8C)2bGE8GgWC&u+V=!a%ViaU_VaR4!&+wI@h{2zs zkYO*wHwI?LbqwwdI~fufA{bK`oEU={{1|N*eHs5SEM$mboXil!z{~i8frZh8F_AHv zaWTVl1|voX#yt#tjFT8PGH@}*F)}cQGE8MCVc5^GfZ-hj6Jr3QA>)6B2!;m?$qd1a z&lsLCJZ2DJ{KW8)!JhFYgE?awgBQaV24O}ghC>W97+e|GFnnkD!obQ{$}o>%8AB4I zH^T&m90m)7bYm1@e9y3)p^U+j5wzmpo$)Wj zK86hp{EQh4NenX?(ix%{d>FVHMHzoEJY-;F+{O^XFpJ?egFoX625-hA455ra85S`Z zGfrWMWn^b`WMpLg%gPZIfFC9ZiclC6B#}*_%awU`Y>8ChB4+c{9_1Y5M#__ zh-Qdlv}4@P@QdLng9l?g!)%6?3_OgF7~U{&prr3chU*LljBOa{`yRu6h6fA}86Gh- zG2CDy#k(0}4`U0%Ee2!8PR3S-+YBa*U5p(J=8SC&cNk0=yBV7qZZa4#c0kj2 zCxZp!W1`ac69##PE(S|z`tD}1Vl-oT3QpfW4AyAr`x#RD?q#q+N#A`8&lzkP?HN27 zVi-aggBV;Gr!pim&S&srT*?r{xQSsg!#@UJh7}Bqj58U+87&!pFuY^%XZXXgjKP^9 zfZ-%VDg!rTKf@A+P{#iZ!Hl~ZDj4k;{TMtLvlxpRUNC%O_{*TgD8gvRV8t+x!G$4~ zVKak0;}nLK46_(K7#bNp8GRWe7}FSn8745iWN>DzVff5&fFX(TErSEYcZO387a688 zlrZ=+@-V(<&}Q7jaD+jNF^=Id0~2F4LpEarV=jX$V=?0@h9brghCBv!#w`q943`-8 zGh{I+GoEG0XRKwcWIV@^%vi-x&QQTn&$xgglOcyel(B|UjZubCmNAm?0s}AOPli0k zCPp1bO-5$MT82W#qYQ}*hZy7-FEdCoN-%C`C}9j|n9U%~Xw4AA=+3xv2&zx6GB`5S zF)A>gXDDP?&ydWZ!C1yvz<8X2g>ffC0HZhKLIyrY4#r;$9~itD;uxnh*f2ygI5N&* z5Ms<=bYpa5kYZfUFo_|7F_0mep_P$~@hiBMvyXv+@eD&4V*^7OgFa&hLp9?zh9ZV? z#uE$)462N47_KqoGKw>XF(@*|Ge$F}GO{x60_VUeh7^X$3{H%~jG2t?3_gsu44jN} z8NM;Rfi*wC{ltk3-x(4Zk74AGe+>T_7#JBDnHVQA{9s6AJkB_s;V(lP;~B;&48ItX z8Ba1!W%$jI!gz{t217dIG=@J6sf?!?Co}wHNMbwz%^x!vG8mZ|3HKXK8CV$Q8D=qL zLi5LLhAc)i23AH;zi|#jHd_8*V?^{D=Q8A=|GjAEG2 zpvhRtn8zs0=)$m_p@mV7@eqSHV+?~E!#0MAjB6OI8KN1i7$z_lFfL>WWLUt!!3gRj zw=%XdRxwsH9%RsBbY7k8D=vsXGmkHVLZVQ&ajEWks*%Z3_}fr2SXU+UIs(PTE-s6 zjf}dCj~J#iDl)!hC}gm@pn-Jk1cvxQij1 z;SR%mMn6V-#w-R)#xjO#22Y0b3`-fWF*GoiGHzqEV<=_}W%On^$hd;RnQ;ljCx!)# zE{q0@M;ZJXr!ev}+B58DaAizjSjq65L4whOaW}&>#t?>+3@HrG40Vj_83GtjF?ccZ zGIlanFxE4wG8!|^WZcXk%V@=@$5_JH$GDGS3qvGBGDAAU3kE-i2nJt<4u)pNr3}Xy zx)^I2HZZJV^kOJye8=#Z!HGeTQHrsb!H97VV-Z6rLlZ*`V>yE|qXuIW<4cBKMt#Pq zj53US8J9EOWw^v}mf;X%4ucTmCdL~K;f#TdeGH!&92sXY9%eLSRAH=O$YqdZ+|J0y zxR%j}QJrxS<7EbG#(NBIjLi(|7{4&MGsZG5WVB)IX9!~4!T5?HkKqc#5yr0!l?;m+ z;~4LQ`kIU$jB^=n8G{+?7&1V8PR0nv_Y9jEiy3?w&oMYL-eh>fu!8X@qd6m})v$~4 z0mD^LkC!oo@ioIYhE|3N3`-b28SPN&uZax588R3zVdPIXMs`LHMova9#z_o+7%~|z zGfrnuq4{?{Lm8tP11~uL zE?_7}%fEa``F9~h1xo&1#K6y3$+(l@2zWfol3_Mu6vJW$L&jFdDn@BW7lz#o6ByMP zk1-g7^Y1Q(xr`g2`F9Ru4dYUVK!zm@0-zMeFp+T*V;f^T<5319Mpp(QMnT4EMp;G; zMj1wR#yt!+49B7Qx0Z1p<3@&M3?~>(7$<}CuNV9D6YID>I7qbcJvhQ*AUj2{^a8E!M|WoTfqWt`7g!r;Mpf+3i(j&T#? zCI$zFDU87kTN&>&v@slD*uz-Bu${4+L7s6r!vV%C45u0IF??Wn$&kpP$JopGieVLl z2;)|U-o7`z!* zFnnWJ!|20k!FZA(oN)o8IHNtoVFq8u1ctQ?uNf2=9T@jBEMg2{I1A3dU5uL}J$uv}Rn&xSc_j(TUNFv4L?G;~|C}(ER%bo`3rpS2CPpn8sMku!Ug< zqZdOn<0ppa3{DJ^j7p5X3|5RQp!qk2v7AAh(SWg!@h!tlMsvo6j4F&L88MO;4ucfqKE^u?@r;p-eGK0jJQ8 z(a`*RiZOxlGsAwyVun!0OAKC&cNtzVY+<~}XwR6=n9p#G@d?9ChAM{Lj4_Pw8GeED z?*_&|MmKo=Wn^GtU}j)}j!Sbea58W)a5L~Q@G|g$M~gvYslwn7f#M(xNv$VgTT3&3==NQWGJ{ilVQTOnG6QEW-@%ZI}={3V=_SQ z0F6$vF@PWo13L<2U;xRpFmNz1Gq5u7gS7{U;2wW(uwaCb!7~&xF)+MiVqkc|%)oGm zm4V>`J9s3Wm4S;vh(U@$lfi-^grSAu8bcW4HO5FLMg~>}AqGu`5Qb|EAU*>F2Ll%a zFLdmlgMk4WVi0j|s5m>E=3roBfVdYCu1sJN1fPuoSp?))RwNP73;`Ph3j;F)D4LiU zSQ*$E*uZ1Appk9{22kjL_#hP!b0G2vK1>#(ALKTW-MkE-_~l^$`CNxVoWX`cmqDK4 zHG?&S41+DhD~1xN&sZ1`5M&Z4Mpzj@{sPTja4>+(1H}i(OppjW*j(b%4a8OC>gH!) z0f#0i-D0y{06hMWE6wsSa5At!!xfa4Kw%AvUv8pOyZ{3qc)kV_>M;F?Jj0LIZXpJc zel7-9xcfn)Ymm@`W)m2jzG| zx_KG688{i3q3%bN8lZV3+;&Sah%tyTKzt7hf7JW|@;@l;@G?MrFUlYepRWRyGLj79 z3^3P2?8l~`hXG-~1a!6wq+6N+T|Wm#_=Eh9u3rW`Cnm*!>UJ)0E?@!Ad@z8^B6jdR z8miktGi@NdWf*Yl2gLv={b1J*(k;t?>2^-&91ch~6S!{#O1qeDmt(-E8eh2v+o7+LUA!RD035xUXc4oWwe`cdNzS+@iOXvPweXCV4PWicY{f#z=!=?=GUP@dspfcPI& z!$SNIs!Ms`IS!w09`HOdLO;m&p!fsLrV4^bmN0dTGKfG+D_#bWeoh8Zt$`Z;pqW`v zd4o&05V*91=tp)x!hTSW$ERC>fuDho0pfp%{Sg0yat{jwCj$>sd`mJw!W`mqklmoN z8eu!Kevk`T82Ab3hS&}AJ;?Pi{g4y{ase?e$F3V>Ke!3Rz`!8DpwBRq;UfbtqbuVT zMt`P7OmfT7Uc_r8$0)LYrR@~leJRPU(kY3gge);7>()B~xx&t}Q@Pk=>e ztHd)!7PXD)YFd1Ho(4&V!A9?m|C!7%1*r*TnaGvNJB2SxBu7?8NnhocTAQ|$-W>f? z2D^+nO)i*#)UfD&Gb%D}H_ow&u{~;g*LIGblD)INkA12AEc@m5YwSU4qUEDB=W5;4 zdTq>WWoq4Ez24@6t(Kj;U7y`8yWe&kU^Pz6pV*7IwsL>xzby7zN?tZj-cwtoN3~9%CA-QRdoz@S~yzGwt8qCZ~MYl)GpX=t=(%InKx#_)yQIF#+R5{)&C$JN;A+HZ;%1g*{>OZgMU~}eODk|(+~(pDZ56ka zXj6>Pd7{r?Xlp#z%){b~#eB>CR=L)P!0~>7v4bU&t$|&DtBP-#;9lV*(I|<{QgJfb zvI+A46wH)Bc7fV@!feMlj&q#gSja0N;3;}UvQ0)#u3TY_l97t8DoD)%PCeljqETXn z^7>jUb&u+)8_qT{GrMm#%lxE8h2>>%`kBeRj>CbwgvVTPqr^KIVfk9c391$v+ch6) zz0=9i3)2UgW5X3KI8(S#WP$Ww2ceOyMb_!s0)~ z*GkGtyU2j-`p)}Qc!6lT*aw-1%G1=&s6W?ysWVrvRlmyMm*H)rJY$d=kl!1acvyH@ z_*mN53^+QtuJcUcyTR`$ctGfr@NE&0nv=|>tnXO0*gUzoc;E3x^Q8({2>ld_6<#6o zQ*^r6CozzkTN)nvYzEo}%gh&8``T36bl4`_&9~cR_ruQ0KFB@_>}D<*0X1{=T=ltz zB9?_#hpZTEN^Jky>e^-59kcst#|>5^#9G8@&#lR0B+x1vEOA$|SK3=nRUul@L+O#S zi0UVBT*L}z%GoF^Rd}RjW72G~ zTg%m!jMj&2@@-ezzOjw4n`E~ZoL1|FlB8p0-^enlAJZ=~@-|K~RkKL6yk}Wsm1F(R zTE_~ECDgWc%dfYN^m$! zaeNfmAv{ZDx{R>8mG(9rPkjsH5K~(-5%UI%WXoING#1SEg7<*HF~PSIzm>|=^);Vs zdl_sqI%|B!q|I!Wxh}Z;iDY18+{x(1bdQOFMVD29Z429e_H`U}oF6&&an*9G@_^hk zi{mx#8U7UlW?~y;mdMK}>M3WdMQfC37HDbc`0H|m%cvtPAGwzBp5RLtxh-R$sHVI^ z^}1%J&VJpSddCc8jb0mp%n365YU*zmYo=nOWS3%BY{zY%W?yaJXur^YxBX%JW8gT| zW-I6U&c`gECzc~;sq{^`NX=ENMrWb!HoZoJO@?V;b3&P3u?lc_b1vm^7h)B2mGG5% zC|jdotQ4bMud1#dtO2siQstAbfquFEHM1=1Fq>I6xwe*e)pnEZj@bRN6S0>A+a;#5 zP}fHtvT^R{>UYL|9zz zh`gf0Hmz&MmrTRWY%OZ6T&=sT*=;u3Fx#qu(_tsya*2~t0n(wWQ}pAFw2aeDgDmPS z-&uB88+BQY>v{#IQ_NE>=2=Qv@3rQ$Nw&FdBV}s~Hs?9_ei32u zed3c9lCh6tbSM-g3HXMJX?hs#GZ)l zlzpaJp!rJ6Sa*-XCZl!6-6m{izswrI=4i4T^1BKx5f+o&t*}UCj#{3EpSGl~qTXXY zbpw9G<%Xd6n#zAlYKM%nET2Y)5wq!X(*@@GR)*GH)+{!AY~*ac!2a6KTFc|gUnB5K zbf@eN#pTL7RV6gtv`citb+7Ba)SqPlGH0gwYbzFOHtVByYwUN~@3DVi|H=NV{Wtrc z_J8dE+W!N`DX1JX;=0RokLNzmOJQ{}VZ|7YeC@S5`}K{C8jTgfb>%JgtNal{dcyam z)~ig?_@~*Z6JZc$WN)luGS9T%Oc?C1MY5urY+CAC&rLpA-?U-2eP(;fPRw4@-pjt! zzSDjp*sjmqJz@_fY9s@dCH2${d5sKBl+DvEo?BE|CRjbTQU!e;MXWMSKm9%TNTV=NsoPHdn)+yzx{8rJ?Jz%`SG}Fw$Lc!|2mA&js;P zHs5U+90VBT8L}867-SeM82TBi8G;#V7>XD&85|i>8R8hi8P-_6l-bRw#lXwpCeX{| z0csDjRx(;L2r&F*JjbBSz|CO9!X>z$otr%W$+(pv zhT$VyH}@8fdZzshF&x)8*E4%EHZ$#Fe#&^B;VgqM;{}E^1_{<+9wqiFrVk8G90%Bi znEe>znOm8Q8P_v3Fm7Qy%8g$ z1{Pta(@Z@qdzhja^%y@e`ZFG9FyLm<{lr?sAj8`XS&Y3n5mahnUR&Lf$=xP520z|FSv6VT^Rmy^>TDDMlrZC)-iT6=rY(bL^0?w zh%g8;)(CZS&t=-rP{T2wV;j>ehV6{%Odmn}P8l{bL^EhJd}n&e#K&U7WWrd)Jc+fH zS&r!>qaw2hQxhX2;~B7~ThpCG39m6UC8!mZvJEj{9`s}eBY0PPi2~3^LFBo4jd}8Qe{Lj$CP|kH! zJDfd^fs0ZZ7Y)*qcjr}^A^Sz3||=<7#}iBW|+hS@?{-U z4R`!D9T3_1+_jJFwV7=#(z7@Qa+7&sV~F>uMSaj7$!F&J=_ zv&S+9GT1SeFm^H+fY-w6Gl(&KWe{RbU^&b9ih+|QnDrb}7vl!TeN49)%^2S@%wjZR zyvM*N6)ViceVH+n!ImqE)17HP!+u6*rgscs3|R~d7@`<77y6n-DD7FI>KblSj#Yv;R6F` z?e!IAW!`I?oXpaU&Fm*R+L#j=Ihj5&RWR;g*w4VvIFBKi;TS6?S2ZU;vm&D)^Fi0?NX2@Xh<+#XDz{t;djKPO7hUqb55#w8ios2b%ri^PCJQgNcn%ot=-X znq?>B4yI(5942wb{|vhrMHnYDTxO4CSi!J^p_gF>gA$`I<7b8`4BU+G87?psGn{4E z&#;2ww(%^EK-PzhcNqFutJuCURWJ%M*)o4%lw|zFumhAj7`_S~VbNvV%%s9NpS6S| zl;s;^6O%s6B&IM%DaN;q;f&`PM0tY@7qdh$@G%@`{m1CUz|Sy)A(}yyfsH|dK?*$f zZpEO@=EK&&#KWk~X2)@sc`suP(`9CJCRIjJ#?y?3j9VCH@rE)@WmaRdW{hH9#JZ2! zfr*1@3iE8H?Tng?%1kR5br{!*TdM5jv}1H zGVWsRWYA$qVyI>?VGw7S$jC0Ug69=u1H)BzeYRT0N`@~CGK~2QIt*3}UJNP>LJS>@ zM}&j9)-uL2OyyGG{KMGF@Ql%(=_G?ILoLH9h9CxIhFeUXd~#e$OzjM;T=rb2nNBm< zGQDQfVJu*n#qflolEISU5p%HkSDr6S4;gl`&16$yy2xP3Si`uOA&?=Ip@PAlL7Cw& z({t_{93f1r8Lo1i=d@+!W~^e0W1hpfis1-@72`IBI0iK~UXIlqCz)O|Y-NAO`GPr% zF`21}`3~b%hSLl|jOQ837}j$%33c-+{X4}bjg2|RKkMR`aJBC_@QijD0Neq?@ z=UJBW2(WuIJz==YrpwXAT*c_g)XDsf@ejjYhHAzy3~dYz9GdJL93sr|j76+V*`G82 zV!Xuofax?N2jd|I7seM1GZ-TIrt+I|zhlg1c+FMCRn4@7;U{B16BA=3Llwggh9m|Z zhHXsSS&y-uU@~W{W8KgGpZPtb5K}y}9+Mv9V}=GsA;ygiY5X(IgP0{5m>BjmKWE@$ zU;>9UXdZ(ZJevV(g@DQ)1FqHJ5|@kJj_D1TC%Z7S9itF)F_S;z0*3qCx7dHPH#1#h z*vNi?^D%P{V>8or=6{SY8J;p!F@9udVR*~2NVb^!BZDHt0WNO#=L}j5j~PJeNSHy9 zL7PE@frBBR;WPJ4u281g3|Bc%aPcxfXHa4K#N@)*z%ZHN8ACIJ6T@wm!;16SZ!>5! z6mhn&zG5(EC};FyjAoEwNMguhP-oz0aA$Oo%H!D2*vDYVF@@~|<4%U-j2{@!GXyY9 zVA#kI$e_l+2^t7@U{DAZWe_;avzkj4G|a_N#I}Z)fx$qKfuTbf!tM}8unWW?>_y@X z3=)7 z00#R{k2QVYq z*w~=}ri+P*384YPf+z;t&c($Aww;fU4`i{3n3$M^l$4Z=oB}TUAx1zfh8P5~5NsR= zCnqN-$V@ISh&m7nk>LROQA7k}gBTLfa&Smkpu?capvEA}08-5YQVvp!ibWI@6bu3w z6d7b0q!@%4Kr?%w5lYbPAZU&fG}j24Wdx0zB4(UGvu~h%JfN9b&^RJ!9t<`U!_6Sb zAjzP?U;`c=WMlx1@`^CX!THP#>(@_Vg>_4fPDhnfu?!347b|t8(uxI zXK4Cm&%nUoz+mymzTxR7dxqIh?Hi=7+B=**Xn)}SYWs$jlkFQsEA1QHW9$$3+1ekl zkg<0V_-V)R;IduArZsj4CN$eMv_#lBOxLz^xb(-i!TyXb!;6`=4A)X^4+tCB9$59m z=D?EuHVnM2HV58%*fa!k+cY?xv1T~aZQbz0)0*Kjo3%sQA*%y>YpfWam|8JBd27jV za*3tGyeLbDJbp_Dm%|nfT4fdobTlj)LT{QMSl4OJ;9_a+ApgSbfY&s$hKtT-4SPPA zGKkMLWq9Rb+F<|11hG}ssFFg%dbaX4~B+u>uLc0;zLwu9Lbt%k6CEr;_`S`AB%X)@d@(qt%> z*K{a4qtS4?QiEZmy2gR8SJfHTwx~1QFjjY{daTAUb+Xz4Ef+Nh+pnqz&Mi|t@E}6< zKnb_1L(e`H2aO^X25&W$17B__JE%`kZg}LX+@SGC$>HZFr30Z^N(}Z&N(@_XDLU+! ztmxqBtLTuyu6RK7kivn$T7?D~ON9faU*!+PZjyJnk}scdQ&)aL&Ko&}zSVLMY_sJO zs#^bc5I==>_K_ zq!aiRq!q3_mwF((LCWEEh13IUC#eN|JW>ymu1PkSFO*!+og>*0XCbMuo<;IN%|(d? z$L2{mbmvGgoU)Q&XyTN3u%iH#SZjxiZv|1E83vDNi;#OT{NL8Mzq1+NK_%0Lo|WuzQ}{WTSXY+dqobYq>4EB z*@`gS5*0ac{GIRu(G$W9M-~bnxKJ(JU>zp>fXPs}L5)XPVd--rhPuN-4jbkRHCWXM zCCEey9SAWKTJT6%Xu;8sf(n1m3m#})C-@+-SCFAUNALiTkKlrv+JXWX1@RfbD_Y2XF&oD!lnWTI>ZGWTz~Oz@VLuAVbTHq4T?+n4ZgPXFW|}H zS4a=wPhc_SXLu~hzk%sLUqjLpz6PdKd<+lQ^DX#0mCqrfhVQ`pBtC<~o_q@~8SovD zk>E2}_@8$|{Bzz9Vdr^2v~B0z@NPcugWe9_hU7xtfcz-lgbmKT8`N|`ixeEdS(kBf%&xQSO7%n1paO#fLjwaNBdDRs!J(wU!2xQ$GBP$WI4~#>;TBV-1x)hH+nBRh99Zqx z?r_+#Ik0B2Y-5&ZUch8ZM4TiteqlV!^n$sK^#c1U{tN7FtS^`kGksx9WcU8(9`HRWV*+C}(gYtR1YonsG7HW|jnw1yTtdn^_h!RfBaqGpG`wUzNcbj~Rpv z`1$|W|KI=r{6|eouvRi5-3$zr>W8F3P#ar-0g@6S3m6$W*c2E+8~&LXpea!Rx*iLg zn^YKM80Rs*Vf19$!DPdHgLyJb0qY+20@leaH<)dhcQAP}y`tsZm=`kLVGLk=$FPE-oFRn48k^+|3=Gx`Aq>Qsf!zR5 zPalMt84xLP0a{7~$>VT712=;RgDQg)Lm9&*hH}O^Ov_okIAWx{IF_@_VJc_5#8AfI z#GuL`!T?%>iOmJ*y1hB#rM$7|##P0zVQ~R=GqBnI?f>`xKmOxSNuc$ZT-Y=-FfdT6 zACd+k;R_mf!Ay+|9Dn4&$qy|xf>sDY^f55xF*GyGVc5lRmw}zplChL=HzPk&G1Dui za%Op!=PYdO&spSI%9&p=6*KWO?Pe@xv}9ywyvwkQVGctxLmmSIg9w8xgC>I&Ll8p= zc&Dl-<0Zz)OiP&6SUuQh@p-VTu`Xer%yfy-lkp|P5{43nAOi8xc66fJ+VY6h} zOGMp`Zp>aLOBRF~=(2?QwG5-}K~PQtrDDRNg{}g%4o8OvQ{J80HY6 z|06>Qqdij@b2zIl$6{eyj&Rm8W_zX*(CjWlDiQiq8RjtHHiNJMqwT?gZx4b>a?rX{ zSW5iD#Lj*~ot^y)Qc48vO~6$|YBD&0cL%>>$YRuEie)xrW#o_$X5=trjb+wj%3^%Q zFoPk9!GS>&M{`joFs6DX=eQ zKgF?_U4eZmn=!6I3>^9g+W%*m{;)jau#|bk@rUIM(c#~^+U=**r?cBmNkZNp{bAux1|^|HyN54H!_`N>Ekev?&CPivXQBo@g{~U z+ydc@8yS_D)-xqByRgKw9%bv`*v}h$1 zfT9>O*Nh@W5(kn7r)odpDq`Kq6hmS=4rY~*3Z z2qoPRhP9Gcd4xE#*g9EEnO(@3=Wu3w!v2Z#9RDZIC+yB7_9sBj9qkuWvTg=8LjoBK z1cfJQm^$+$d$rbag|n_^3T0fy5Xzv%AWE7e7#2$S@oeT$XNzPJX4YZqWE3N@Jn?18 zVZF*Wn`0gCY>umJIjp`UmZzirVoLhOsA&*%G7o9dPn~}87OmA>p{%Qr(jer_Bx2p7 zD#6Fo#=*|!%)-p9$kfOvz<7Y6gILWB3=Cq-kC~sb=&&7UkKsAauEX|>(!9eb#||J#371~G>3|5+Kt z8Gig{WsqR_`Ja_RlHu2XRt6~sP>e7zfMSG^0Td%l44@ccW&p(qsJR4+DbU_8&^|Iy zOo8$bXwfMsj#wF37`VWvNlJsyl9OQoorfpOz{$YMAjbfzXXU97EkoV?AOC|&nNR;g zyYW8%2Zh;}|EvtG3}63)PD}*(jvX939N^gD1jh~+ICi)he*b4>;9>alpOt}^;qQM| z20n&=|5+LM8UFug1@E^5#SkL{D}x{d=wweJ@F{}A;1gIy7(jM__FIEuA9P-vI5>7B zz_B9h7mP5*#&xf)E($_192$Kd5Zy zV*vSrfdSMCVq^fdf{wd(ZTr{%|8wd3`|xG4053R)A5)OlOkjf_-b)1 z_8f?1V0h%uz;LbxW)gl{6e--0{RPtnzULik52#lL69?JD5d^WP!H$7ph7|+D27j0= zCe05Xg9C*ds2pPi-+2RyA5dI_RfF!5$6`;x6b1&SRtAOxw-^{e_I$9xZ;vRFJrMsu z>;vt_0oen-F9(Y~8#XgA{8$dL2jsUKkr2Ou^kBod?SZN;2l)(C3mu3Bl_yY9h8f!# z7&4YY>;c)~5dpCWm)}GgI2kw@7#U#p!Dx`_U^BmfSeW+QxW>Q`a2R6Gf*uA25C(-| zMJ59S2&1PDQSf~yAbUXfAAo3f22dUXnGUuGbhi*R+>revpvcJZMTC)|VJjnp#sUV0 zqB#&dcXS})4XhtZfb8K0`v>7K6njAT7h$nyLOdfwOgO|IkiRzVhS(#pgn=Py0fY^; z0!$IK2Xsdg)E-cq0j!CEfdOO>hY!S_0zpQG4qgZwWT)AFh&={<3=9I@5Vkzh9%@h; zLttob0owy=mmi2lwr7-!8Y6=S3j~AM1j7w%4`#T5%!J{#*^CS=lOcXP zpvuS~rU1DMOJ@TE!>u(CzYz>KusxXJ*7KB+;oL1o29RBQDj6BV3L*CF;$>u5!w#|M z)j|dalX*nia{<%>h2&G@bO17+5Z-i-kpYB3>IjA#*dEMqOL)S_0KyTOcn2cR$qm0KVhlw&|_5Dm-s)M_7q%mw>=hf3`Og7$#xZOrnT)b;@=|G?rFnFfs#f%#y2Fw1LF z+XpcJfXzfAQ0>7iuR&!#DeVJ-_JHeC%y0vh^)L)-8-Or~4{95LFsMy{+&&-}ZeV*b z!wqC63=`8nAkIIS;YMovfS^6#`V@b-!Tg0zgW3il3=$_8ZeV*b!wu9P0AY|BAR2^0 zY+UUF;{1adZlLx62!qT9(I5lHxjIALq(Kq((IVuKKejGMv4 zAtw-UF@PW_!@$H5>OrS6fqFp@462hr>KMR1GEnaYbfY0?H3_I?2a&-}f?^dU1FB;n zBg2rMFQ|qC)jgn5V~{)ygUUM4<_KE`28P893=HXv3=C_T7#LDn7#J?IF)&=`WMDYR z%fOH+#K52~!N71@j)5Uije)^dpMgQsl7V5l3j>3DAOnMVJOhJh9s|SkItB*Di3|*d zOBfh*cQPoOQKn1Jv81f8a%$zaRi z&k)Oy%8&*YV`mU$P-n1Z2xZ7;XlIzqu%2Nr!(oOaP&r`+RR(K@P=;cL$qbtrE;D>& z;AT{0G-kACbY%qHMhvn;ltGihks+R;o?$V=Nrv|fqKuY|k&NYx{fvtlH!^N#+`$NH zQ?WCE%(7*OW~gOY%y63FD}y4VFJmR+V#d>q9~p(244FKcqM6c}a+&g&AnHNpIx{3P zv@)z^xXHlIXwI0)IGgb-<6lN?rf{Zuro~JLnQk+^XZp*;%*?_J(F3!io?$t|Wd>$O zQ^st@g^V{D1(`gV>Y27OJ!cYUc4p3I?q^=he3bb*^JC_h%&(w&A@(IRv@>jExX&QS z=+0QrxSR1iqbXA{(?+JZOq$Gz%+r}qGJj`QWN~FlWvOSG%(9SWIm-$bbh}qFTxZ~9 zv}dej+{*Zs(VVH0X)hBavnz8u^GRk-7FU*fmaQz$SwvawS(8~CS!c4YX5G%ZmvtX2 z#2lDAIvF-IJZ2DQ^k?j5Jk7|<6wEZ6=`oWob2;-tW=@tsmgy`vStMCQS$kOzvVLTh zW^-gqWUFTDXPe8mm~9Cg$ShENYcseqq%w3fY-f1RAj=reIF<1_qbyS@(?+JhOy111 znO`$ovvjgtWl?0!WL?ktkyW29lWjiRdA8qditLW;(d_x`wd}3zZR{ZPKxsvj!I>eM z0pd1E#$d*YjF%ZDnUa~-GyP`@WM0hto!OgZANwPlZCYI9X` z9p>WX_T+Bm-p&1*Tb#$1Czhw2r<-Rc&wQQ*Jec-8XOL%%W}M6Tm{Fgpp6N1^Hgh}k zQ)X9|l`QBc{cLA zWl5sZULq=VuTBeIkn#`@tPnkVg*0V^mwz7U^O=i2w=FYyG zU7uqyhd5_9=U>izuKQfR+&j6Ic{+LC^7!(u0mAF@Ys zT;%ZNJjiLuwUJAmdp0*ePd(3Do=Dz&I%bEZzFhfKE2bD0@gGFh&&xUz0%)n!}CCeJ>b zU6Nxaha~50PFb$`T#DR_xs`bq^C+I&vN7^5wqF9m#W-Cz1CtZ!+IQzF7Y2{Qd%m1xy7O3-SsT3tbg5 z6z&whE37S2EV5nXtB9^>ylA)RM$wC+uSNfh@`?$IiHPBL$7@DQre3C}OwP!c2-^y<;uvNfN zaHXKU&_tpCLYczng$+geMV^aTi*|}$78Mr@73&q-FZNnYP~1@5TRdJoSG-ufM4ULc z@Um30ykv=Gz0B&%cACwb{VaPh$8C;O&i9Pt9X%S=5siL1ny~XB>y%jSTuNL1a{!v_6!e63PVyeV?iNg{X zC9X@{kRarq=S;55%bEFEs##vM#Is&!4Q9K@7R-K~J)YwwM=2*W*F-Kw?v32eJXd+r zd4KYD^GWls=C>3$E)XnuS1?uRrBJr;OW{L6%yUw=9XQH(5j3uCj%*-(^qbc+XMG z$;&mDOP~8NcR0^mo@QQ2zV&>r{5Sb?1^x^43(56J;SyUV_$8AiH%k7Nw3n)t+A8&2N?6)bI#Rk=x?Osz^la%l(&V@+lKnn=CdXHf zW=>(QrCgTW=eg5){_{-dHRLiw)7gH9W zEzU1dFY#I;SaQ3hs8qhxVJSiBXzBUVccn#T++~VoX3Ff8xh(Ts=BvzanLjeP-3H3< z-QYA1i^oLP+pLjnH`!v@pR(t3{N?E7l;_&a<;ne!yP8LocO$Pa-%Gw$eno-30+E8B z1$%{5g?9`4i#!x56#XySDJCdBRa{hJvIMVWv*c&Vc&X!3+R~lUkEP9JT4m142+I1) zw#)96eJaZ>r!D6y7b%x6mn)YihueLx8LgQnGQDQMbpK; ziq(s=N_0waO14V=l`NFHFXbt{UYcJfQ)a&mzig!JT-n>Q!g8*1g>uv7w#!|Vdn)%? z?x)-@qTIKhS(2rls!`bwvTL;?93b!ITYdUljPaX6VCgccP5`T|6Tri0Y$;X zf~i8R!b^pnMed7KiVBJ?7qb>WEgmWHSRz~Uy=1=BYpG=EtJ2OgYh?sw3uRBsD#{hg z?Uws5XDeSSzg+&Z{7-pF1!Dzwg;0fPg%}0=Vc5^~lF5^KEweaFE6aD5T-KMYnQU*_ zirN3NcXLQ{uIF^+y3bY3Ey=T!CzAI!?|eRI{^$JN0{ViN18r3`DF!;3gilk3hfq36lND$E#fcwQFNl1zW8bJWQm^=y^^w0 zE2WI3cS>8!?36K-T`DUoS1Ak&DxOz-ugIw+tE8=D zsAQx>$eo}x35oOHEXAzvS@YRGvsJURb4=&ZA%vgGMuuVvaE8oav$a5 z0NiNzAmk`E%hnD}0~a~7xj4C3a(nZ<=b6fD%lDjbBEPM`OM&Tv zu0o%M77F`|{1#a*8YuQ#Y_Yhf#9N7eNqwoaQt8tFr6)e-&B@WiB_4ca#ZD`inyw|YM^SWYO!jiY83(ZB9{e_@+zP0D_cD~FUNciW6sl@ z>0GSbOSwIH-t$c7b>w@?H*|QF(8LvkIPy2Ng|~7Ax^87b;&=)>f%kIj?`p!^1^13+m4Q7(vctmLrgyv|w7CCt5*JCf%=&vM>C zzQ5ow<`mp1m@OnLd|tRw#8~vP=wvZR@%Q4hC0r%nN=}wCm%b@oDI+SoR@PbWs$8=C zTlr#zuL{MAZxs`jE-G0oFH~k!iB{RD!l>%4+OK+6l~v7LEm^HoZKc{_wd-n6)n2Q; zA?RkzbivL(nO&JM>SfV(;#9oO^NnxqoQi;;cGK*#GWpB#n%Q4DNl$TXls-Uj8R8d}OsuHVmq4ITQ zbCt;|FI6m6n^ljivZ~pt<*UtBJE-t-F>){FcISD^GnLn#?={~{eouj)0;>gMg#?9<3RjBgiar#b zEaocyReY&Lu;hQql~RGy-=$~E*vj6PEtlh$Uo3B`a9F`t@v>s5(nTdt<-N+wiMNo}WC6dHuoZBU*r0aKB)&kh<_~;eHWk(eI+G#bU+z zCH70?N=i!|mnxJNm)R{7EBjY=rktVtarsDv=L&_2-xVvBzANP`KUNM_*{h`d0Oa>g*co8jc#F8p#@&8d*fS8&r=#+BTnAOWA(2wXzFyEakA~ zyvkX~CCI&*JDle~&r04e1?x)sL!wR2SDU*9g=|)hO1e)TkohZbX|5lpm4H=;a)?NcoYGcQtP~A1nV>{!{^R z!IOfuLWaUmg=dQRiZY6A6-yVFlsG9-DXA`XS*liARpz8jwk)^Yaydu&>++cj-xV4a z*_Aq#*p=&*KPxAzoK-Paoviv+)md$_+Fdn8^?3E^>L=B|s!MBFYlLcKYLsi#YSd|f zR-dvl@G(d*s4-YD_%Ng})G^Fq*u(IEfsIj*F^aK+aTnt|Mir(QrWs7vn8cVPnCCD* zV%B0QVL8CU#~R1Fj+KEeglz@eKejOTb?j^$2^_mPL^umL&v0sRwQxP)vf-Y={fXO$ zXBp2wo-p2ZyexbXd~5jr@%i!3x7pHpAr5bEFhvM;vteCQXt;FG8r8RQt58Elx?8KRgu87f$K8K$uc zGHhWJX1K&I&hUXll7Wv)mO+PGp23SpnIWB5m7$eSonbM*Hp4*yU55LDh75m&j2Waw zOc^Xi%^AYQtQkthZ5bv@*fVUDbYwU$<;?I_+LeJ@)}299&Xd7i-kTv+!Iz;~(VtTjr4rKP(~{#H_*@OsvBhf^5PW3T#6edhLQ4 zR@(YUIx8HP6nSOc808EW`>Rw$T&G@<_NUwmW=^6*TTcV#~{cc z!XVBd&7jDj!C(TubrCezfr??X8>lqs)(as9P(&inzi=>cG4L`7Fo-b7K<{|OXBGzo zHv=yNA9(y7sfyqH7idXpRYHUqJsXhCdT$G34~lVz_}M2eJ>B z9LPTGauEA&^v`0@nKX-`rgs*DME5KP(7FK7?s$+}5+=-Ih?z8tp$Fs^WVtVl4Cr#8 z`F_y)YtVe)iwUzBdM3?cSkOC*;X^kltX)`+iB>Dj(KI$Y;Ukc|(ZB!yD*m7Ok2q-qk`9>|6d7_D z&N0X_rZXBb{b9P#@{uD_NL0<#-Wys1U`LOp#RITlx@Gw>U)jx+CaV#N#+2ysTvU z^uoOf_m6&=@^{z&SO0&3!|FKm4-qlG0Pg2}En?4P6qRqOzE?~YJ2gU#NA^!ikqb zn<0W>HG=@-YsOt zFn>;ewu|q<`wy(&LE$9FV8pyQ<#UjR>O%oBwqG2eI*Xmbl;JbOW#(D@F^;be&VTRy zyY1h+|9`;Y1lo13$FPs#0n>5rLxz0~TXolPTQf^A#({Tyf$Vt7Fh_cxmV%kJOKQZo zLahn+wo2d3`grW$!~fsGCNMBOW!Nso#NWg%&8Hj@%zeEhLG@}@JeJrB< z;9;;}n8_f?P?2)Ehl<#XjRZD%k6r&~}stz~Uf*sE`2?c-S(=UA06i|K&={Xd^g z|L%dOr?sp%rOf&3xdr%CMK4IpD=bpgl|L(D$=S}N$AFriWEqke?l8<_+|9IzC4~JY z_YM(R^_GDB8+30^daL&>@K^hvi+|VsbNRpc|Gode;5VBwg5AQzAi?0uP{nYFL6-43 z<0hu5Eay2=h0-;x6Y{iDh30T5vzRe?G2UgE#t_e7%^(AgXOK>iACwq0n0ga_Z~Ag| z-LrS^KFM#3`Puk44Moo z402$Txxn=)%*;rJNQMZ8FoqC@Kn7n1PX-qTdj?AeV+I`tHL!Yq1`e=#cJQeoptE2= zYu%U_1d<^p@Hi|7Gq`k9Zh;saN^Ui;85kJYrOl&yKQS<{i|e{)&iu~6CZc8&R=)Hn zqHF-2b^+SE4hlI?Dq>*Z2iMA=7B|QwNLdR@E0C56Hv5%LOtkbOCDky-`@ zkQfMq#cCNC0^%7MK2x@=A#X##>%NZG9VxV*d zN^_uHlAwM7KZ7WPJcA8`J%c>BewJt82e5FAE!!j3c2;fH3oNB9QY>$n_c2doPG&Y`=3u_X zw3ex!DUeBp=^Nt-#@URyjP{J0j6#gR8J;klW!TQJfT5G2j-iMlogtbbfWd{ql0lC_ zgFy*e?r}4Kla0f46Ftpivav!<{403QaeiU5Wou`>z#_%6k2#r{gLy4eAk#O-*^Ks# zLX1xswlj1x6fs0IxG?B3C^3jbZiIA*75c&^#j=*kp0Sfb4;1VUXF(~D3MT7m#tN0 zmY0{OZ)RA)aGl`22}Ol3{?!C zaQh?~G#M-zJQ*Sw@)+hZd}F9#3}gbigBbDo4Bx@#a53;OfT9|5+phvNtXUZv7!(*l zE80M3D}f3t1qKBMP%Q)!1+5X!xq9MC@iocoOYaCj-|)8T+s^NbZ!SIcdJy->^0~^} zO`oo?_kOZ}AN(=ybH$hM-?)EXWxFTp!+(d#;aAQV)6Y-7nO(epT;bLIzgL;#{~Z6H z&wi1uo$(YyF#`kR-G7Vz%>JqKftw>$s6gtr=yrD3pLV}>IpSrWE6$KD<*WL3`(4vl zgC~{G*S;)xRq*!o=L0{y{vDPV{8s#Y?^B&u^6wo!_k1t@`}$YT-vlN*HeU8cY(JQU zgkx3qN*rU8Va#DPVEWGd>*4g5y`QH2{L1i~Rhj)Io6E0bd=nVHy_S7?`L+5l36Ao! z!uOAU_2cdlP7@Lqn!{Je6T#0WcuG*8Uxr(lwUOb^$sgx)ZVNrMebxQLnDIZm+I!dE z7ysV=UGc-``^j&Uew_Z7@p;RqnLi}|9{vB7sfT%y)=M#awz_{4ehGhf`Ofy^{KftQ zWtXphoFn;DNmP=H?V30z^W}dMOl{1vOqUpf|A~B=%g-xn#J=L62wOH+4JVIYpO%EI zzNial^xyU07(ZVA@ApXc?$^iWpB)*d2)aqJix)9%`+4hY#AlsPeP5=0H~n*#@fxeP z@MAH5kvP6%oP1gvMNHVQupHuC&nw66#$55x<##o6FsCZ(Mh<6oCpHhxw;~!GiC>p~ ziuqU1SIc$I6#dWbi&f?2O zAOFwzDafGr@!)fp$E%*$znJ~5;2Y!lZ}KQ z|6|9`E-`7jC=myarhhlSZ~N-_<ADexx;gvd@g~B`8o%}_@VSoR9)PLXk(fy0>cc$O_9t1x1diCc`?)&|pyuPja zeOD(zG?(r5UxuGdU*~_$`x?l$l<@^a8fy{9Lv}UR7fi8yF(Sv<#eQx2QvS{MUjWl> zrsD!n#MbZ~XP?WO%3RNI!0?oAgq)X<8k@vl>mNry$9)QZKmQ}^uW*+CJX!+J`8LQ@ zu)g}G^o#S4CBq(;TdXo~m;cabVdrq-Sjef%v5B=(@w=ECpFQ^@&gE>p%;Nu>KPvrE z;tZBpExk`#Qp}UrmiLFmWRcIz!i@WQOGG{kgfp$+lb8Ojd_(?#C?~HT`&_kh)rWE| z@;~MN%5({QW%B!<^J&qG@Fy*gK0Gpg8ujwa$5kJde=#xZFhBaI|Kt3pqz^k^x4hZ? z?)(SdPkvwhe?)(2{HpwG?f(K6PtFZIoB~Gd*Z=$caC_hSRQtZ%z0`+)|5-Ena0u}B zbJw#9{Z;+;JdAHRboli}C8TWRWmFhcjadpAzW$Fjzjh^4j@L z^;_$=HSY>PDu1#1}0C|Gz8!&iMQNZ_vNR|8)N=@tdlV^=jX1oY_ z-}q7Dt;W~X_pa|&e02Ku@V5lxcBa>iNz7)7Io-^c=rtHEDPx<(yKPb#qPtv-hx?iEm+|x_S zB36Y{w1`WdMfZQ>FWxWL-(}wmxgv6D?gjZXpY*it0=4VK{h96mKK=XUXY-%l@1K4w zen0(*(!H>|KW^1pCHwn21gUQ1m*;U}o5!a7zx`MI)0H;_FF(FG>&)bRCu|gb^EDxAPyGKI?xhar2;6b%3Xnp+>IoZh_t0UwEdl{r#u)?BK1| z>&Gtg@1HlX&S6WyOgjsiKzXCxlpSa|~%_kH>!R04t5`m$Ci%%9Tab>nPh;9fk1NX-otcra>dI2W~f8Etv30n1M^shv9j! zc*ALr#0TBqWEd3J)qrUR28IU*!ek4|jQAM16XXsotdnkVQ&MnPt*F@`eMPB3=Bzox z;cIFPuM|BPRDvl?yGW=)FFnDaj)nKES z#n7>vuYtid*CF(~5W^ka!UO+Lh%s~rlrhxsNHthqtYNqrE7K6CnG3R>Vg7_%gI`=M z4d)i;DKIW(XW)n|C~*1C)o^@UQNdMaK86)XN)z_16=3+gu=2plYeEd-sdWvarXmb? zvoQSKTNR-5fwe(W zx@N+muWSqq$7%(3Z)0z0-&fBNDaO(8rL7vIzrkZkb-^oU#)fSltB*uKXJkmrs_{9q znW;gZxAsD08gs+t>$M9!zB4ljoUL;>6UWlv^}2onM=uM5VtFlCzfwo-y!a^$4BxiY zo_H?G*s$VP?Ye87j16`XbwTOx7#Zx&)ZI|AXJR-SUO#1XIa5Q?&-w)KekO*tiFF|T z434wwKB@oEmPiq+(OsneSx6Nf>D4$<{gljuP z1N)hJ*}@YH3=#k9`z_BifbuX{e`QltLuFGGj1Lk6u|Z-W4C8~uKx~j02*da=8YBl| zgXBOM#)r`$IS?C$VSE@35=Uku^O40tY!C*?BV(8t$ZimZ@nJMbEr<=017R2+MuX%) zY#4^|VKhh_nT^ax76-9G7$lF3(ZyhVbQ+`wCI(`IFpQ5*!{lJ%AU--qmxJ+f(IEXW zIS?C!VSHRPObtvP#K(nUYCv%S!Z1FJ#-2T}{dAbAiUnFg_m#pLKk)}vsgV6;Rk zUo&5GiPT=by?P6z?n>R2`Yifcbb%Cu1A~K{s+{Uf$(fS>>lqXl=q=F86jzj1lrEGn zlwTmV*nY9Sqk^NtA=N{wAo*79R&7lgO&O4SE^#h#kXV{pn%W`JL!vSKG5kRi5ct2I z!2wj8L+XCeXgO$P1JlQlQECW@DGLz+wGcq&fOyDk5T6*#4jx?rwJ|{M0F7;7x&`6_ z5DCKIAuz8E z85r0YKs#-**@I0z69e_k2gNnI`(f?@-6X-vz{!B@E>L{nQqKUMljLMzW8h+7hsN7P z*SX$?L1B^7i9MOSini1ob6)K!9KabqJML=QvHZG9F_%0KKHr~#CgDe8HYWYcxM`kg zZDMch+~F?a^Cdt&Oh~0tF^xy*W+?KZnDXD7GA z(LKdaBhw|Eb9uLNZGCjNIL4#qSZmtCVi^*!y1I zEXlJv3=RwlX=w}$AQv`8HAOj={Wkb*;8@mG`$Iy;JvS>iOUC_&L|1K6eK(JB;HRWV z1z|QCscHjfHEB^d{H^CZ<1(vL0=81de2x;FQ@!*4Yy2{i%QP2j4hszL}lwZ>sRyd_j{2NpD%8& ztQ1?_RjH=YV;NfXCSi7P7U%N%<@H&dvxDCxgckK!s%dmp##SpUiQC8Lzew5dx0;`` zUbgO$=oZgq87etdF5EJYYjVm3_3jz7lx~S}icn$xHsbyNw|)|1O61(=rKNdB?fN&% zENh#j&boSK_he>z#o*W3O4%Q zO`Vok>@Z*9Xf;U}vVYOGc7tClJ6uvIR2 zpZwcjn$M#CT5Ya)rbkbvSN2)gCMnC>n`Q0#c}7c1=SHVQPGbBEj(=D_{97OL?@Rsi zKhNra{kmN5_j70c!tb-{zkMyM_xj>fKmU_V{nroA>%8BusayOur|#ElwYuO}w`F%zoWw-6BxNq&LEWTk{dFR@S3b(6b z6`L>Dmn&X+TsG+fDF1`(1lb3&3uF(-4v_gEvq9#9%mkSSG7Dr5$PAEv$1>LQ?@KLE98k`c-y50jwW}txVS8`-ku5!`qMIs{i`R!F-d`ghAGPXc z%#-CHdqMsL*$MI&$UcxiKz4!L4YCL1PLLgTC0VCH=C92!JqR*8H|xm`kh!fXhc?vMH)=>7y{FMT)^|=GpmI&$jU{o+0BtdFn%_yOX-@f+xsWed(QMdZ-&@FUYST ze}e1;`48kbkbNLOf&2rq3*--wA3*ki+zxU#$c|;94;So#`us=Kr)D8{zTkviMNCNiZlk#|eOCN|v$kiDSz1cfcgpCCIy@d5JRnWB{A zAp1c60)>@L!tB)`yHZ1r%zy1$G7IDnkUeuOOnQGC?C(_3JPo$vheTP^RsqSzcn

b*mBNpUszFwLd#i+0(c0|3r{IvsWLPufF)n^6J@#HY}gwwQFZz z`Vo-5ptuFaE6A^)_ymP5$e$oPLGcIjBPcvUaR%}qD6T;Efx>Y9r!5UBPtP`i{Ppp) zU^l}7b+BDgs~#?RxFBj(@r)x|)F(0=5bXYV+NG`d#@VKnr&}84e*)PHO2?ou2Blk2 z_=4gS6t*CLg6ssPLr|FRQ##)Q3QsmxDX{-Q@ddIk>(rrcP#7NCP(8bDY28wgzwSlDbYvL=q_X${}LN;R;tPHAKlIp4BR31lxQO@Y!AC|*H+1*IWSe1gIjD zpfm|eD-pH02lpf!z27r5Ffd3qZWV}a zQBd69`P)E!B7;N8tk=FEdqL$8s7wImPf%U~rCU%M0>vjNY(f46*%|VW8Ju3YZyjm{ z#ov=1lc$2hbNXEMbs+zxbyb}O+4rR3>j$2ONakCOYeik!deu#O=UB8%Yw%!N^eC)& zePwdrKE^zdy`Z!Vid#?^gW?tBS5WwZ(hw*Cn$}A!WEP@LFonLM^OBI>3wn( z6rNKWf4v6z4-}Rl`@ZzbSQXE(@vd9i6m?`vZ~Bv?JVnJf_Ei3Qol^(07gXMY%05sz z1S%6i`4f~^K_E2pB$ba7NpVxux zdnj90!*BAwq`{*m6J#%_oC2jOP&x*MF{m5@r6o}Q1cfgs-Gb5(C_X`93-Tw(PEa}p zg=<;U4+&73nLJg-9TcWdcI0NUo_8$cc-~bDYWafNx1csJsJ#nn1B2SUAbbDUYyAh+ zg+J?S|AOkKcl8&3gX)UA^(x?c@pygt4^UaUy8iSxP}$a5uK=zilj=)9gYv#<{i%krPbcLb8kRt$E!{qTz4|oHM|6c?dIBB&q4Nr>;u^YG9P3v$UKla zApIbHAoZXyVXK|=1eDKjRj;?G`<@-@hOP+f7l{M99p zxzkH@PlL)*ka?i|z9}bj4=9efGm5r?^8Tl!v+F>4F(23)rB&lVzPX^Z z)93YdI>=s7c!J7kkpDp80J0C{pUTSR*FotG`n+&wtZEdEeE354gU)Y?9dx${X)B1=~Ssb)($gW{|z0@CAh{C_F*o z2=X5&+(7n$@-!%XK>p!N+rJ4^e!9eXE(h5Iaz7}aGr1a10hOh9%&+x;(j&-xP+5~F z{R>>@cJs_@0OiHnzwF@hwfvn~BgkG*dI6;aQ2c?)El_xZ;s@kEQ27P24-{^%BA+h- zm18fxKh6O8C(K5!A5@;TXfJ37*>g&AA-LY{WVdVpm2C=N%faQ_her|3pu8V-@mvQe zFYZ3DX9CDxQ2GRw9ia3ADnCH+2TBK^@C213Ape2l2V@_pJc+TK+zSdf4b|pWP`UDe z{~y>tD!-J$_4}kJznVbyoIalmu6Hx{_)P|tHNRE`Edb?x#yL_OK=y*t6DS>l!WWco zKr3+Aag7P%Tf1q##*$2wopzs6b@6yln8bEpc#;xX7P(ELESgs$G*Uzrw zn+wYCd~?sP1Lb+S{#A!T`M$aJ#x0P&p!^4Fi-Ph4sBH*JpP;rHD7}E%PN4V$wPirz z32Iw_{0FM*LH2>_-sRWZ+dy^UwY_w`s?#OQ5pUtg-wZ zsB9~5c)$g+7nI*YZC_CS1GPm#`2o~61f@?b{DImspzs8>EkOPQ)%76z zKy~l)C1T4!b>XCm?)yP?6IW}=9Z+2%)NtW9sOY+eRK9@P+MxUnYWsrnAE+$~$`7EnAt-%< z+G?Qm0%|*f;t$l80fi^1Z2|HhsICXu2daD9+afhUb>Y|PeO{otY5yj^G*Depb0q;h zq5>+PK;;oAJ%P#_Q27E%N1*%;YG;7b52!5)$`7D)14^Huwi+nCfZ7+J_yg4upzs8> zEkOPQ)%76zK=nk?R_+W?U3lYGZ560)GGKWJ?k9oD3s5-$Djz`Q0x120$^lULg6e!w zeg~yjQ2qn8qd@rq6t1B3399cw=>^nw0>vMwUIK+DsBHoAAE>Se*$1k7JK2xdgX%(W zW7kqpID_g3P+tjDUW58Bpz;&cmjIP#pte1zd;zt!LHQlj_66lXP+Js~A3$wGQ2GS5 z)j;V5)OG^JAE+$@3Qthm0^~nXT@SJkRQF0ozlsFe8((YoY*uO2S*FYj+hiit7f*Ng zo9wIes@+JqxY6&YZo~TfYAq?pO?tC8exJ2w-u*SN`V9{qYURE)uc7qwmWD)L=C*@s z!4tae%;z5t7Twg7s&YcBxc&iujmodP^=u+Jbz-`w%Y9uOa<)gf#MERqc)Tk;Xb7^G zn)M*aJW!nqs!u^>KByiAl}Vs-ACzZ6?Kn`Jg32dQSqv)wL1iN-AA!m$Q2P#4c7Wm= zl$Sx~QM3L4nFn$k$Xy^ef!qUf3&_Bk} z3OA73Kw$=oLs0yI;tu34kXfK|4Ah4J)eE394Aft_za}IRRDQ`nDg*ZyKnylVP#sm7!?y=y9>_f)`$6V_(xPU~^9LaPEfo*1fYK#MAE+)pm20#Q6fWn}4sHgu zA+E=9uL7mluc4X?L1AU@V>lCJ9>`xH_k-L6iW`tQAp0u|j~xNUlV`@stswnMu|_LE zab^|ZG6&QaIp=6L2^4=SM%G=RIDbC`X%MBgU5wVariZW>R!`N`@!Q}pl}A|5m5Mm@(IXapu7Td4=BHY z%mL+@i~6pepnT&jdZH1OcXs~N0Jozn?p3yc^3bs(?R_Bkf#M64ra|EhO4p$90i|t_ zzd-35P&|ObALLI^c!R&4Zf_XM)nF;mm`ZL20z6{oxgmd7$(IYU_gH9aL9= z;tSNq1%)%HZUBW3sBH`K7pN=-xd+td1DOMA&pv8hdK1((;cqy?3^EUt4nb{LQ2GJY zd7yX)wOv8+1*&5};S6fCg2D$>ri1(iYCD4518S#&%mKA=th-ch^9pO*l4BPbv9-qC0U`S0r5J99yKIk}hlIH(P((XjI;C_hJcROy1+N^_RX1-DBM z)I>Z6wK?}BA6pM1Tn2?ZsO{+8<8~5M zE@(8kvw_--W|Pi2g4&Bl`%dM8%7&dkA@fO~bPP(rpmYmLub}t@rB9GQL1pQ^MMf(? z@#oMS@fg$|eAF7P2J#>Gs_Su}a`fy|uUb$WaKA=)CCGg@s(9~!+I}J-b@M^(z7s;p zji5GP|7qK9P}L>&{tF8*W>Zu@tENX0$>n7SwjLcssWa z)NcE0F}DcRX7em4v;~>>qdw^GWG=`|ka-}p zK<0qV0O<#{5du=`H#|*#1#c) zuii|*XOph&v0b~!z?I3r9+CWyaNzI#t62RsM{pDx?jWdJH zo_cpjOVVYIj>ePvJ)p7J&)c3(%UqW*w`f`K66yJ|Ye4=5#V06iLH-2U2^#YO`42P( z1F{d~FHl&4#wb8`fyN9#_FiL3Nw(OKz4!rlfC=hWRPDr zElOMgvgcZV*r9(Nk1nvaXg^?X{01IdW^UvXU~9Q5|F1(%|62blaC!!%TTmJT#V06i zLH-2U>F3lk2^5~7_yYNF$uHRkkbN(%%C~PmGO-WjFHpGg%$mCiWEV$A(q)i;92>rW zFK*b%mDFq{3$h0^2D)K(qkrNGzu3>)q%*~jFDnB17ZkUkcm??t6rZ551^E+XCn)|v zeguUlD9%9s1H~1{K9Jv{dc}{Iw=&%Z`AfDThV^XI94U}pEtCA5q~|XV&Rn-3iQ&M_ zyrj!N%2{6Qt_}M8qkfan0&x2Zl#W4R3`)14@CC&uC~QIg1lb8nhoCSGJ9Mod6rKrl zGuMIq2Z}F{eU1&B9H21N@2NKfwFg1|%HA!M^XLK-*e+0;>5usCS~-2D@~JLDIrGE) zVnP1>SHJQfsO)%O|NA#6FN5aAKzVCL{lagcw4PW06+E7*R`2x@lol@3Eqn)x8&G>6 z6jr}#!(M{iURk^487O_esu6htDr5X=DjtH;4QT8VRMxzz^1cI#PnD`&H$nD->;u^Y zG9P3v$UKlaApIbHAoZZMo>#H-3MgDEO0~~|(gLV$1&SM;yc_#KVRbi?4?GX3oZ7n) zl-HRPqE~~$57cG?<@u!{f9HeJO|jqISs;5s{sZMDkbNNcg4_qP2Q=0R%2y!sL3s-_ z76?k~ps_hn+5?#fN(-Q|D^T2k#*#q!4b+wb>mc(%Y45VehBi=ISS7~R z1TvSEMX&*s_Psvd0;hk_*gq%_XrJxq0_B6=J?4`^_JYC}9IjQ~cR=9?@*gPNK=y&c z2^2mc|7bW~nFva6(b|*RLH2;$4@!5xe+z=kK#?b6;CVif`Jgn&w?i3RMuFNwptPtw zjc*4iJ$7_yp9R?qN-v;v0E$0Q*$)a&Q2c=W2Pzvu_JP99P3=xAsO*U6i~#!w)OP~q zt;Of-Izjf_-nwc!sGRycKYI1kX`iwFqJ&1jw}K77e}nRMdy@}nT_yu4 zeS*>(D7}E{8c_U!(g7$uL1i(>f1vmQ*#|1CwmfTZ0)-o>jR?xiu`5q31o_8&a_=5c zc_`NEeFtO@Q^U%CpmGW{XT#Vv%kauX4M$MAGpLON>X(7q zCgA=QbUq4{|3Gy&C_jMeQc(H?)oq~k0;+33@dqmVLE#B1i$VSam5m_#KxNgf2Ct8x zvSU+ohn!$Hzlrj+Pwu@-`XX;{4a;aed9nDxy~WkuUwiAhdGhMBl{~7qn%fqG{0qwO zptb@i|AFdmP<{Z_rJ(c)s@p*61yt97;&0QU#1)|M1eL`g|AERzkbR)C%5G+$Pt+>; z_#69l@?KnhSh4Wkg*r}-{q+ipi>qH+EGsJZQ%-%FusFCm|Ee9xUTT&bAoDuUrCm^d0i`8S{shG>s9petH7MVJ{0=gYn)wZ69>{GV zcY)jlau3KYAa{V=0J0xsHz<99@(?J$g3>goJ_MyPQ2hjob5MN&iUW{&)J&%!^FZMS zavLa|K<)yC3&>5NG6duvQtB;`d7$zU6!xI<3FJpm{sEZ_FiLavLbTKw$-P7sxD7_<+I&l>b0w3aB0h<#CWX zpgaevuR(bLR9A!2B*;8ay#(?rsN4kk6O^w(egwG-WEQ9#1m$B;xdf_@LFEL4g3JT?3*>%~d%*FWE58?H|Lf?t%Ruq%=Egb|q~A{0 zr2`c2oI>u6ptuM1Q9*GQduwGYD6FR*xCowC1Njr=Kajsb{sFlMV`t0jr+ovBpK;cQegKW#$kxfd z0*#|RuKD^HG;~BjvJ+$<$S#mQAUi^?^IUqAY`2sW!1R7TYjo*OAH9+Gopm8tIcnK)(K;s;saVyaH1ZYeZ zG_C*|_W+Ftfcy{gH^^>~KSB0_`~|WTAGhO8dH*(z26UHKPc=$eg}m)$loBlL4F2>G04B5um#x*3R93jL178< zBgjsW|3Kq=Aisges=VfyS{w<2)eyLFpWn z)G9X)F8}Mb3Z}Yn zax|X&U+)*o$&tB^x$%GfRF}q+%#E4rK&xUASo=ZPp~MyMCNnUE9eOv}u|dCwfgy2) zV?)B+Z|@lx-c8o;`SyN65~!yOvd6LPe|=Nb|N7qspm6+O&wBoUecjUk_4_*^CbFJq zV5nQlzyRhqKxh!3^}H>YJ(nw209QO$5mzVI60Rd$FSrD_ZMbu}7joa?7Uv1)nZxsx z$B4I?_Xe*aUmxFlz7YPs{F(x@1o#A71sR1JgqVdpg@r{HiWrF=6O9x5DKnacl=->cB7=&vNB{6=}N$|ThcH3xNRjUO7w$iS|zQ7^JF~cdvIngE7 zHOei_J=nwF)62`v+tJ6`*VIqXUp+uBP&9};m?7j#$g|KJVJE`3M=Xh)5LF$W65}0f z5GNAOa;0uK!>Eul`&8)B4l(E9&d&z3Tbu zPu11dY1EynO{x7>(@?`yQ(gVGD!giErATF3#isIaWkzKgrPE6G72hlRQOHv$S)h=w zkSCohkn=z5MdsOz)#Y{zH2%G%xPnMJ#~rr9}@GGlq8GX~ZAdU{WE z=4nT3$!I=OU#(WD>Z78p%%Jp8;e`Aaxn;8RWadcEms%;gQ{sa7TQMOq8__(G<-#w7 z^o8mKuL>9o%;ab1ujTv2+rZ1myM)Jy=Oy05j`J|{I`TI09^>WV z3*}qD_m0nwers&uQGsXbDg zpzfgYL1U3-m=>4z0qt@fJ>BQJi}YgkB@M0_Ofd{L5;neUJk=!JRLbnG*&_3F3mwZ( zmOHH)tle$+ZLixdu*!&ZVO`;#5gd_6Bb%aZqklwiiph#qjJpxn8}FF# zIbmsHXcBYshUAzO_S6lj;c0)<7NxsnJj-a!RLR{5Scf z1%C^g3)zY~ir9-=iy2BPOFopOmR>LQDBD)1Sl(U!sXV-5XN6>CdF7=_?W)GAt5xdN zWz~nOd1^vxX4KrSk*NnRPtG{0V zr2c*V_xeBJlJ95zyZU?eC+gSK_tdA>Th?>bU#y#27gEPtcd)jgRh5ak z>ZMiMRjVu2E9X@RRMeI~EAuK_S;|rxRkEh|SCMm3N8!l=wgUV7lDwt4mva7OD`mT6 zC1=)WOiy2vwlDQ;%FX0QNiP!LB)pA(9rrx;Va$!_b5RE)H%BZApAc3PnjR7mY!M_M z$Qtm{@2u|zpGn>&UZI|59%Am_T(7xobDr*0?ik@mmO4(4!TQNhSQ+}=7RapjE zeVHWbnNn9Ig(brz=8C@*vk>bQeJbK4vP76mxK!w=V5Hz>fk1&P{4xA5`KtMZ_}23V z@P6l6%oEDP&2yZ)gWI25n)@x+VXg&SO ztowpYUypMcHJ-oHS9mF=U-WiM`{9$GD&yChV&}ggIWAyFQgz^&#Hm4d6V?X5jz1Xk zE$&L_zu3oN%&{NBSz~@iutYON{jU#T_+S5#;a~kE#^3eEOh4+cFny^nWqw~T%JQmy z8_VPRaMnBZKUlBS&tN-KZ^;hYKeMC0ieqiP6z9VF-JDbFqq#tPS}N=3aA(!q@I=+$ z;qj`k;kBrj;Zv*M!zWxH&CgK(oBws)Y=LWaR)PoWZVIlfs}P!4Cm~!}w_P})E>y&= z?u&?a-DFXLIzzF~wHL&$)#i!stmToIRl7=}y4FK7s`ja*Rc*7BM6H7K*P6Z3mujM9 z*42EM0qwm>sWFhVtvMqnR+AzBu9`*RSoM5`xz*N+Mb+07-Kz_gWU6_T-&ZYHK2+tX zGNtOaN?KK^s#z7k8e7#0wX2nm>WeFHsTWojYuHutXmV99(Y#t=qqU&ovQ}nAwzg3P zlg{t*nL3Bc4RkxpkLmiC$LNWcf6@c($(dUwYmiX3(LlM(&G2dIEyHD{c}8iaOvb9E zQ;naLXqYT2*=>?g;%6#T^1$>)aiQ7dVrFx{;wk1F#i|wui?&)+7P(p)7G1S`QJ7*i zukf=~NMVyTXQ6=2-hz2H1qIr+p#4i%^Ih%Q^Do+&=f~PV&wFVH zzh7`loj+)AQde?ifNJu$fc;5Dfe}gX0zvz!IuoA+DJI4R??|{2?3WN2@+AILNM*cJ zC~y3((1me^VWx2_!cN4>g-69s34asA8BrTk8^Ig%F#@!gNhkVxi~8UEBi zW(4i4dt0Bz@}Pb>>xKFkYeDP!^c&>n*U+lD}k+b znnJC0>B7NvOGV`B9*I7!l^0)G8!eGtJ55rv_M+628XlQBHLkLOHFa{#HQVGjR=-t< ztyWQDtBzD&UDc=JS9M7BUFBD`u1a+cmC6XsT@@W#eihrb@0UN(0qwc_US_LbUzTpb zQZ~V`t#pSGYw3OC#u66OU&Wecg~i_HPl|FaLW_DW4;QYs(knb^J-y(G&7b`LwxE4~ z`}6c1Wb#}b%X1@~&gWz~tK?L>lxKIj9?zQYCX%(tJw9`d$MTFVo^R53dFiL`^UhB@ z=(9HUpzq6+1AdArd;KGlw+HkjZ3x_(xI757Z%{I!FT^>%E;KtXH*8{TWcZdC=ZLG( z+L2$P1fpiwb90r~Jd$-P`(vP-`_L&gQ8D;ty$2g;AEj1}lzeN2y!N)@U1p&Dlo!$* ze6GiR3k8*bpmGjWo`K3OQ27KZhd|{Gs9XV+AE0vLYkd?m$ov;|TLo^{28)C2*zoDG*2M`m*HsFK)lC*r zuUjknwf4B!!P*DlGB~hSP)e*;Q~E}YgUpPYFxk+W965oSCixT9(-rEfSA)yq$5j`V zCsjRBv8(#3`l6CeeL|&}hH0g$=8Xztt%?dqZIGWgmq+UQl&9!DF3Z!eD625wE^9EH zUD|G>S=wv7wPX^wY(82%%gn2Ij``W5xfZ@fb1hF7&arYYoN0ZqV496(!9;Kwt(f0p zKPj)qfibVhF)ugW=|)bpvty30%kpe{SMF>*H&B?K%jELV$^7Qgk@3LuQTj`861N2XNazc;Nk|Q;kGBckA14q7iWBSD zE#YM`%@G@-10$bD$wq?{+EhwFW(j_Pzg3=u*oq^I7 zC>{N(Z)Q4P-^rd--@|jdu1k=qu0f2wHc$Fib&vvR@9_JI51K~h%k|t!eT=n>@0dR> z2)D`0+v#vFo5__q)4-EI&C&N$l1bpYc(zd2nC%h&>unkS*Y9BXUvI<+ivQpB>P$cD z7cqUSmt_Xkz3=OVSYFrnuz=FTqxweHJN3W8b@7Gz4{Rsvv)Dm(GAMm)s=vtrs+$+o zpW~cX@4*GCqnqk&xIyU!R9DB>ui^==SK$TK*_QPZeA@Ms_&{lzufCQ4f8Bp@9sZ#1 zlfe19Y(Y?64oXk6>#hrd>h!X@Q^Lu0&LW_?-MY?16qLR|b^M>&`C`v%#l=B&{mxnr ziAA*y5}-U%R9h$+Rr^vBRQIdb-jw344U`780YK?*Z_RcYP+Oq2W|?e8jjSA~O`uo9 zEe}eMptix~>U@RG)z1__ZG__LONznOo=TuRCs1vo{H|)1GN{e4vTCYITNSq|sOD$#ThX8eYFlJiq-#4?+y`3iQRGNvg1o1JNXqCKc>vpdh! zp)PN}1E`Gy%0Gv4Z-d)9&be!ym~%y)L2aI7ve^>QB7{6Q~@YRA0uWS-+4ERGz=DeI+Ja z%O(vf*F~z;lp)=+3R_T_1_~=sn1ISIkRKuADfB1**B3MVtB+*-U2n$( zDlKCwYuWtpnIi}SIa5dGNa_81d@`Ts_cU0s+^Po0%;W}U2vOC5tKsOAwV9HxwO&%9 zwc664GI?Xo8=0D#)3RMQU4y<|Ej{UiYPU5*=o#y520JmXQX4|^zWdC(to3+OX+`3!wf1s6PN||AX55p!PkeJr8QXgWBt$_Bp6M z4r+gc+S{P^HK;ueYCnV8%b@l#s67m7|AN}Pp!O}OJqv2Tg4(P9>YW%r)gNUB<;l(U zr#KqweYhR#&+vY&^A-T*P0KnL(G#_M#l31xqz=@qkOAeWO{kv^?(@~vCvcb6AK}ia*WdxQA0p~M z@c7k-@H*G;0QdiN>l^r#>Ywn5)w}b9+9!YO_ys=H6$?DBy9VwHo~WBAxT}s)XiZ(J z5GV}$>a>OH>-vQY>OO({g#mRtMeOTjMD^?H!TF1)&Qq zvBbREY2bRgyf#`gxptqVU#)@^C_SjwK9%CHb(j8Cvr-zA2hY{y$!xE=AhV#xP!^O{ zifX>fM%9GNIo0ft1I3qMO||^b>bvsytL?!3$TiiBij%676f3F^gY&6Vb&HaE^;0G8 zYBzA7@^Tfs%J!;sm049MR6uQ|gsKizr>YmKDpelf{^j#Z4)v3j8S1MlkAw4aR%M%p zSLIU;tx8vLU-M-Jv(|}A(| z>Mhn6-Lz;bGPVS@AvKDgTmC9^usTyX3*2WdDD<&*EL>_WRQS&t)Gpjyu->M*fWtPp zAOYNe{gf|YcPKx@ZbJS6aM_}ppKt#=@0k6`JXr@&-b=|l?O>Rv==d+U!V#3_r{$_R zCFNE*>E&Jk_iK;jR6F1xbNGP?(6NI zKF^yw{k=CRe@#xC=o6my&__DW5Zn)5n0nDSB~{T+EwvC_j;&7N_s>a*^VdsR3+@wd zNcIXSOr8;7l>96J)CS&^)EHQlbUx51NhSzXer!nG7L=dJ9ITh<9}H@5uS$3xoRMH0 zqLxq(?kg{h7Y&VzPY9KcUmXg{%TwYU!UE#D!g%7YfcwqOvFYJ0?}V0Pexfsf%Zd#YE{Vm#X<&9c?IfMgWC6?`VLfff%?~= zIv>=>2IY59KO5Bc2lcfYIbgMo|A8)V2Wi(Lv=TsGkn%Yk=}5 zsLTZQ*Fk+uP@f%?A3^21ZX^=FWuG~G^PMb&!BMyQ2z`xwg9R-Ky@*wO$Hic0M#R) zaRyMj1&uX;>J-p;1E~KFN~@sy1vKse>eqqB9zf|6H2wf;$AQKmK=lr&{|M^yfyN?0 zbr5Jg0+tT{)fX_nt@md+Q?JVoN>h>b&w1GE5AiRln=NEmS17u!)FhP!ALrilqyTKNj1XZ7RBAky4m!&0g@@c1~WF11Oy4 zWCysiXKi&)$q@3|l9uZ8J!PGrPV(CTkRJ-;y+a#gv%*`WYa=1~0#rBZF@owuP<;rh z3qkcDs15|xf1tV#RPTZ6JWzcHs_Q`Y9H@>1)o-A>4OFjz>NHS&2CB?45*F))i0pBMWxC^4OFLq>Jw010;)$qbqJ{b0M#9!dIMBvfa(iST>+{mKy?JD zegM@Cpn3sRCxGe$P+b732S9ZIsQd?&{h)FmROW-qdr(;qD(69EJg9sJmF=K%9aN@+ z%5zXz4l2h%WjLt(29@2QavM};gUV}ASq&v_Oqj8E%rSWnf5urIIA=B%!7Bfj@0cJEUmjJ z3@Wqs)qWBWt^F?vDwncq#N=L7%YnxZPgSX_=v8Te#|-aPC~0X{NQ1`;mzS{^+$#NS z2r4HuN{*X46|XS|l?4ffS=Pw~&fqb@;Jgl5Ls3l`f}D=raRdrR_f&1~uEHPN!5GIe|Pbp^ZX zNlN>xd{nHeSk%^4?oyYj%+&;ykI&1`>o}L!=*=usH+Wfk!O*z0%(%Qn(iBwIy)TNe zP%Qdv=~vieT~?rIJ3W81-IhEj2T-|nJ15-vdG;Nbw^^}nZ!_<>zsv~pyq|s++-BXK zy54tDij;qIa#KJ;($hfmM3-Q$g!$mM>w;L1@YI-T5h~I5!Fd#vPw$+a#c<;MEQSr& zW-)wtI*Z}MJ<#2kAQ=cgadsBNpR=rFX3>mPD~>M+xKGd||}2mGM=s<+Na*sJcA2&it_QmZDBPI=adSh~#slofwLx!L_ zVtUCHlPATIW}x~YwVF*P}wh5aKY9!-_0IW&QH$Oa@w3T!x>bjKgr5+`<8j$ z9aMgEXY_mVr@!(BmDQZ7)BG4xp80=DG6{T;SQm6M;Ycv34DOF}4a~`&+#=^N0G+%&+QKvplX(V!d52#dfj&5*sKS_S8FatgrvUv8aAM z=al+%u9kW^?vnbe+@Np?sCVYIssF{RQNMvts6L(lcb%-jle)_Spm5q)=O8q_?we3` z-D=^ux{5EQyQM(kc)vzTW?Riw znVy;s*~A)aIn$cAavU`a#|T z?P@nG&D0lEK2=YvoT8y!>7)q?_stb^wMr|zw9P8MYkx0aqO+|$K)1B~4>%s)mj&ss zD*LOSTDIIkt}M{-dg(92{?f%ppm_OH^2K;V$sCiE5@%EKl2@juiYJ;?7n_@d;^|gV zqeW+tnx$FMDa*%&c~*UeLe`drTflAEo`Rn?CIz!>Z|7UvHRj*8Q_HWmKbllx!)Xvb0<4}&M|PFlyk<}ASc}g6t7v?b6wf8&D|DeU2wC?%5=Y+$>fofInx6a z&oeWQd+KMzdL2psXU)` zVW7SjsJ{j3V}bfrpuQBS{{-qYf%-|Hz7eQD1nL8U`aPh&4ybeGPwF`&K+sJ{a0 zqk#G)puPyG{{iZAfchDrz6Gd10qR45`VFAI0;qog>Jxza0id=&sJ#zrW;X;LE@e?8CrN=gq*d-iv|ZxhDgIswV?Oh6e+~CU*t~26qOA5H|*f zwXO^dT&@fZ*)9wW7o8axteqJcRyZ**NIEev^f@vxusJd?G&x*kZeX@x{>gNhX(CfP zlRc9x(_h91jK>+*GtOjeWh`b)WDH_-VKigZWRztTX5?V}$MBWmEyELry9`$u&NG}~ zIK;4*VH?9HhBXY!85T3lXPCt>jbSoFKSMV|2SW=(69Xp$XbK*5!9u#@RVN>p)2>18 zk36cpWPFbMR{L87{tvnsvLIdNQMUO zScZmq2@DNPDGUu^=?o3CvKSgJYRpwPrs@zg}t@1~uM3qHVcvWfD4ECrw@&o}^K%mA%vVPIhR0F`F|-`fh21CcQCAN7#)sbTyN zP(Daa161z;FwMvS;X~Ae z9H9bG%E+N0zZ}X2m$6W`1vGtFI77mNA9Q!a|NsB_q4FP~>EeSuME-w0j5bW~dR~7c z)PDa0mg^kZYwXMYcIB_$)NJ2(wCVre{pal8TmJgzr1uP@{|879sDyGC{k|XKf0)1F z^na*@puN7J+iIZv2jH+{V1UKX52!c;Lr#7=R11Ux*#UAljOGX1+V2FT85kabr0U_c z1;l*@>BlFBf7Y{wn8E<{KS(JA!^9ypB0L~`bP|@|VDty5dtvDUL5CjY<(%Pp$X-}Z z;s5{t=l7S^UiCd1dUXHtP!PCkA6(ToW9H10_A+2A9_%kJEGhvr!34w|4F}$X!k2-e z2|_oxK!OS_Jqy83dv9e`s0y7D7ARhR_Ws zAvD7d2;Hy@LOV=_(k)QB7)mEW=!QTD&EN>38w?<{g93zR5P;GQFdAGK;2Li=lGSFXoQ^0j4PkYB*KdzpQ~ zZOf9lnKrfz4Kc}^{nprXUOTmSQlpnGLxXWc_p1%|Po?#zOc(dFWnfsD^kL;@dzUCt zz4w9!whRnE{4-Lw*{`=>+54#l#E&)JBe~PQ{vY$(rUVsR28RRJcOKhqAEB1&^kTcK zEknbdhebvE>|+)gE3ee^vSm2H*L1z-fIS=27Qv&=rnU?RjIH|b9JKc-$z9zO>1xa1 zuwK1N`>_2+rPRL*SF_tPFqHU&l^wA!=%1}J|FEwuL&Ag z{*-;{#Qpb-&Gl><64nVD@t(1N`>1>49#L;whJO#cDg9$Wy`Q3-lc`@ihb^%-`)#nyV){akXU$S))o7uXPAo3 z&w|2B@KLnxReNu{4*ry8D_e$!ru4`Aui8h|zOs!e^|WPZD4tRmc+LJux|Nbfm!B$_BK845JByBTiSm)$(ovx8O4mLXwj zgjL@S`}>7@;s2*A*fIoU&bugm(?0#!wZKg-;fVZr9u z_kSPS7v5lOz31d&%OId|BE#m9ebrLUi6uPhwhRqX3zVxK*)J2>WbkT(k1d0Psm$E| zTl<4&`1^llaofwV;qf{)(Odf)dN$pj{NH6SgTd0SC$nzu|N7UK;d&n5UIvBx;g*Uw z_t)D?AIOrh+sk0U(xtTW#{T9Tz2_D7c}7CR^?c^(Yx}hrmS2t1cHGNwA^64DkZb#w z7kTwC9Cz8v;Ba~3|NB?>Pu(@)vR{b(UWN(f#xt|8?k{@2%kY4#K{YiihCI@*jsV_zOa9(Gbh8E zHQIX_3U2j8^jz4#@P38A&T;3x3=Cg-lw>dLcYG>*qA1g5FT;Yux>fP#_a6*8s!%3s zyO-gBEoWWZx%~(J{QtZx-)t{~L+-zTHD~v8D)jGeNzvZR&|vps#^p2nEl*5(a`r3h zUWNzJvN3;7@3+|M#5bWueJ{g<=HCm{PVe8IDgSb2wAWsS1-ql(`k&e_e=MmXZ@TMV zh6a~MuC*ukGo1}hPnL1m%do(MbM49#`$MBXrR?hT*~`G7v_#?R@%^?-IWD+lDeh%p zs6V)k<@o-0*TQletQ_|;IBc7fV0>)9%)vTw)sMz|85pwvuT4I>|FF^&c5@Ejy$lNf zo0d*Jvj5Ax0^!Mf?e;P(&{W-a?C}1W{nMH@TyomW@ZeHb#m__gmCZa3bp%@PWk@Jt z`mB3szin*5p~oHudl?$6LwXVq?!PF#ZSl1ou6r36)D}IRc3}UvL|x?>_q_KqG=#-) z&)L5}ENSWXW)t7N3=Z!mP2t$Lzpei2pUzN+y$lQyPj^-9*+2bYJF~2*>0SnhZ@;?V z?Aq_b_iFWNVNm#HdTxr_x!?Wz%uT=4&G#}iEO4BBW&8fnRp0mgc;~m5fnoA08^3M) zPua;aUs`3jm!aX+CHG@n_HXx(5j^7jdJlucqAA)=oA*mRPPg)ucG}C}5OuzE&&K`J zo978{s`cH=&~WF+3abtKHA2?ER5TRb%h1sOr7v&o{yni}fi{{Jdl?uquJ6lVwO{3W z&FwT9P<%EW{9Cbnzfth|PhI9Fdl?u)mGtVD>_3}(bh4Y1)?S7Nv!$L*3-@~m-;d{& zcG=6opzzLAdhUMTPg``i%Y)KWm0_*Z^!<}JFnfPwaNo?RbHMA+m#FoUu?|)NI${hKcqk4@DED=h0=eZ z^lvEr3rhcl(m$Z|cPRZ0N`HmYU!e47DE$dae}vK>p!9nv{SHdMh0<@J^lK>n3QE6( z(l4O&b13}`NPC3`!q`(np~5 zVJLkFN*{#K3<8k&Kfn*68=$lUlxBd^2l$}!P}%`XGeGGByij>4?Es}2p!5MAs63Q* zfYJ<5`T#dn9!fhvX$B~LfD0-Qr5&I&1C&0%36+P^4p5o_N*~~W%0p=fD9r$+53ob! zp|k^(W`NQM*r4)I+5t*4K=+m50&}P?`ZsA7FsWLum&n%>bvdl?@FwngNRTp@|0HI5`zT;~x*S zjZN%jzZgB}3FNe8U^tL4f1ka*xiwGto|9g-3=9d2&6m2`x2;!CWKeYm$)EPk_O`#K zHE)l65~zP+Aa-&_fV~#STAepl_O=WR0x3*2!S?&SSB9wH_Xe4NF(^LF{*6e|^v(}% zwhRmfal4!%?Ypl0`uD|E4P+j#rCN-A{g?agr~NEJ@(<2&#@pXt>zZT~>j>&!yx#jQ z!Cppa`_(jMPg@3t2fyZLB-#5LO%V4;Ft%l2STMKuR4>(lWnj2a8Td2T-fp8@O}GWfeH~Y4 zXXo1=vJ)!2y9v}ky7Kf#UV(j;0%LA9FUbCqb($K5_5!&&UxWX-fWpHy;bEcu#3{9@ z^30&{y0UW4tRnjbwRKi$H$nZgfV=mCi|zMcynj`#4`lv@`)a%;_Bv`GW;NXb*}q|9 z$*~gqr>PgW`1Lv1GB5-LpQtajk1MdxH<<+LpKu&iv@ElKCm8->r9H?!Htda`%Ivk< zlqa}Hg52XF^=x&yeIdJZL+4?T{*HeEsTKAHLfmS%C&}9~Fhp!QC|7BJlxgb`3kFeJ z1_luuiyM{pisBm8wr4$T85k6%ZJAhQzbi$@UH+hxEd#@qLuTI9_Lt^|A-Ta&;`Z+44Vh#we|)w6Xq$lg2I2n_DaJ#`x>Pq z>wgD=(vu3i7U7xc%)7U}oYti1fq~3mx_^zbpP*D1tFv&!}!CtG^JN~qdmMsH= z&8%xB4fa>r&h%DrgVG0|(Z-7n_T`c1!&Du$Z5bH;Z0XZ$w6BoYE;c^|3SSH5{O(5k zgQ=I_&rJjIKhy-hXteicExxy-6T}ZWWZ~LmKgU);WalppTLy*+pA{E1*>`=_B9wAr885gs~Q3Y31(+Y4tVo?2VB-+TM9=miVS_cAcdaX%kewm(&+JLi`) zsJ-!^@6y-O{TC|dUFrYhv6q3NC;iII()~3(JB}|__1w$AFy-PE+tU5}HrX??xp{-y zCuc4{EZHBdzO;~2Q30er@?vYrejy)=ngv22{VC;VHB0udnq4+qnH|(V%~3mXws?Od z<4U`(W>9-*M%ux`;{EA$-;bNOYV2iTxM99iw0M8dG&9!4rJ(kW#;o-_i}sh6>B&8G z)!ECyP|~|3wrKw|pYFqDjsANX81@LxU@Y3d_{6O1+yzp585mxubuBI2@66DuWcnNA zpD$;sJPY^dKfiqUIR{An73QqB1^Zc6@c&-%3B<2C9X_#OKMU`PbqDl8?Z*eoE~W+h z{r|5%uWtG z+51;+?pW@(L2xevgGI%&6e_<%K}$bm?yu}xSGP(I6uu{X5-l?KNB7@c zQ{@I~4_-)@YRK51ZS(oEg9Ru)JQiO#p1!}!IX7&!hn^QZ66O}}EOwi?vl zXQ(y_Puu@*?lw>1zo7Q4g!rR*srzep`Y+kF!VzTO<(_9L`#;CW?CELp-OIobu--&3 zWxv?r%`2qLK=I|U`eteJ{+ah!z8k#+rH3EKs`n=Cf4nv1Q21V_y$lQqOwz1L`yc2{ zDf(P125Qg8Zud#tf7Z*#GgY^|7UVApHf8&ux$2zp{+)l}&># zNIvwNTipJuU$#u^wglO~flcCC%>KRItc%Yq0>#IJug0m-`#bLLUY>1d4{A><_Zq?C-=erS>Nk#xPQ|ee~t6jc6%8Z8U$a9sPAvJ2)cV?3dlbU){>&)`~PWm z8^vB0-;1RM;NUL$9W+jQz!gF}xIkzIX9(Tk2%#AqAasKrgm$on&g8s1~mwMKm|fO zC`0H2iV)gC0YV>;gU}7K5Sl>-LN`c3Xa-3LeLx&SJBUH(10oRGK^Q_G5QNYT0uY*k zA3`_qLTCma2z`JHLOXCm=mYE!+JOy1Gq6JF24)D&zyzTi7$7vme-TK0{DsgCe<1XM zUl7{iCxmAB0ihedL1>1r5W3+rgm(A@p$~k3&<^h*^nte!+Tjg^W_S&u8(ucnYBpJciH?k0A7c2N1g9K7?kt2caA8Kxl^B5W3+egm$O0PC)1b#~^gWQ3%a&1VT3)g3t^HA@qU$ z5ZYlMgg&qbLObk+&JIsRc8)ic212Z5r1C(}{4&gUUgU}36+F>e$-!KJ2AD9fG z8KAVoBnZD@B7{CL0YWoC>4ts?|3DvvW`NQTy%2sw4}?C@4WSvJv_lt!-_Qx68KAU7 z2ZZ0y4xtaUL1+dj?a&J0H?%J5)pX4OI~OKqZ7`fYJ^X5Pm~Bgg#IPp&g)fLn(xRpaeoQKxv0!2*05S zLLVrE&KDD995;WuPJ=mY5x zngL2Xq(S%%sSx@=3WR2W(hbQF{(&S2%>bnx5+VGC1PFZ~9zrufX@@unzabVvGeBvF z7zn>18bTk4g3t_5+949cZ-{`<2f`sV1C(wEgYXZ8LTCmk?GOUtHv~iI13?g)0ZKar zLih&)AT$G%cJPPr8~h;j0bdBs0Hqy#Ap8bz2z|f{LOVd|22Tk8fCq$TfYPw~A4}5! zEOdZ@VTWDh%h?PcltBF*h6RiaC+zg@Y|9CM2I?Py_!sT6Zg;OtVh8nS7#NrtuG`H# z9_Q&J1?sObY+zxyYq$8UMrMl|sQ<%|!QAlBF8$fv`2p%+{RJ!xPwZ|z)6%^78{8kh z!OHO5j`^?JCYhh0{whNSJHsnGJ?kTLd!~c>e+(X+3~%iMD_`y|T?gv#GkoA`cyGr# zCwbw{Mo|Bpp@+@kqg_zT-Gxi6K>Z(v9qb1_*>V2n7Ti}2>W?xoa5{XkYZKTu>-29> ze~BT1>%dpLqzT{ePmu-nUm0d_GkmvO#8Hy+atBymg}32{-Ic!&EzjKm^-mej@G<N6Gx&x^Bx`2Tnu811_R6s`&8g8i??$G~LYyCbxu zDNqF@AHjcs$vz;{sjoT?Z2t^_24;Krvg_tQrx}6dp9ngz*cYzLdH5|C)Zb-b5`Ms9 zued}n%lxN4NIpem0jvEb0Uw3EePI1pL=)KTU+4aLbe$8dK0sW7-QLt+K1FpVX#9s^ zn#2Ki`^OzcAHMv43tEq)A=SWPuXV~JJ#hipzGKo3oc61ocg>MI1CHM!Sq3iq+h2DC%;_>hnI=k0$%$~yt^N=J_D=2qVB+FfBy9q@s_#Z^m9d%f!|&|-~(&@sjndS z-P1n6Z=d$nXFGISAMnhBIHxs|NM28SaZu5U_ur?yN8`6EuFp@J-@_fW3rZ z#7*x>VDm+!0tD^dtvB+$2vP#M$6R`Yp#1`ibB)F}J|KRgjDV0m@5&;#OC6y8K0};r zf{^|Dc-GL9^5FQIB6mQ@{*ZNjNY_I%kopVq3c~hRW(gkqbowR8eS(S&!uEwT!nKr{ z!Rb*+>4LER!mOQKO)+48fwF;!eT}Dil=3%ld>vMqAYvc4Q~Ft=3uyd}L00X9i2a8{ zb~@^YVD~zyJBZo~H(Jfp_5-KiX4mL3ef#mn;7l_-ZYidN-MA(7& z9)=gh?bq0)hyDB^3*uilGLWzr_P^(J_6JzMmPvzzeNwYmRNm|w0Doa_ULaXIR4aa0;KHE zROjw4RRo9kL)#5f_6=NRG3O6}&0AhC$@>sy;I~GXW|EV@#uXq*go@Y)6 zr0xGouYNZFD-TG1yNiO1{Z`x3GYV(H`Lo}xLB{?}rrOF+x}fnbh8&LvGWOTM=I{I4 z1CG!Co(8h^o*^pc+XBJ-m);X(?Jvx|bvC9IG`_}g!}o)%y+O%^>5O;4>HnO6fSf(o zBlW!}Wx?(*4O}2+zvQ2Zs>3>P`BfIoAaAd=maDM*7dU;_g(k?`dn*V(+_D#(|GL8u z$lJSJ3dpnW1*M0E^Ev_w_Ag@>vi-RX@_)m6T?+;KlgIiz7fuGt@7K#vu>Y{!^k?pA zaQt4%78Dj)x$5h8G4W6ztb*Tqd-k73{uCh94B{Cn)XO`A`_le`lniXus!e zL*-HxFHE>vy=jrTQNw#rbl zPjVK%HTM9>e1kICv=An;46=?B@mX8_qdaDBG9%)oQWyfzp42i1P|%d(C}C z=8;99@v??kmmA9Vvdlet-nQWUUF6E3V$ZgA?x~^%Q2J;%;AWs=Z)|J$t~m-^J_~sy zsMu%JbaNcB1;qz4Lr-M|H^ z_A!<`N32D4K;b(*=z^-f(ILyIKPlk!!xF-vW?vWST_ev6TL02e9BQCuAAV%_-j^C+ z|E>s&P_zFWbm&c|C)mAm5glsw;j#z#IfcRLcY5RwHGAfk^b_hrAono{N54?B=M{1J zq!b5E{{olz#rMCPWu&>}lnQ9P;M}GAV*AbSB(>)51dZ1*_+H*GwtvU|xw9V%gU06= zIIr}J?LR8R7`)^lXugx-@RfM6{d+j=j!0bttFO7LFSdWz3Z9?mQb6N33?|q9i|$W9 zv{CrFBxt;e;nlVCqWg_D$QIt3V+gWu-u3yS`wJ7Ljt8s+jh`?C-pCi-zmwtIJ5_7Y z`Tz!|oA#png`UTE8>|M)m*12Z-EWevYW937*gmye??v|ePMTw#-2oaOVYqy2zsP=z zRfhi^TR`Jc4E4ABMfMvWDHU@%EdsJn^G>|T{@&f|xFdi6*u%iUaPf}5$o|ih`xfiS zTY=;&?*13ve^KvhbKD`&coc)|z4OBRKQ}ITzwIh$yosUf-g@Ev?E61mnR^2?Uc;b! zzg~F%7GbMcTYu1a48ytm{=)l}%j2_d_Ji%udmt~of9Zra4Q*G@co757!}mh_bzg|610ztH~IvQD)};z8qY49<`Gh4yk6|j9b9`g(B|L{}!-T$?q@g#=aC-(*SPt$$F^`H?P{)|u83+~?-HuL@6 zJaG6-ep)ZMKQL4v?pq1iK9y(wg8K!9x3e8?`2-4&P0!>7_aEN(_I~CWuzrWekpBHI`33ef*SY;EwgRhfyRx5u|0zDsx2(%SaSL6Bj_ucd1 zJ?jY$-wD_L^X<3Y>(Fc<22OtyuFvP&zf7e~@2~rBkb8S>*z@hLZ8Hu!)o%cACLFnRgB9%lE%)QO_lqu9 zxWXL;8h>P%_TWF)e*TpY%owMD)34UU{apKZx2^xQYy)UKnt|<6JlB4X5aUyezJSIT z86G_P&$)lHuinOMi@@=@?eToh{SH62$NxPBj<2pK_MH304ClmTggyoNC*tXSj{S$9 zFS=jw2OK|Y&+0k$w;uP}F}(upzYovkIrd+_wC0%9av6~Swmsj^zQ5vutbPU$XuO}n z;zd3CexJF=%VH%!Q; z`fMZEKCRdPS@%yfRpXF22+n^GUe9OUUwBdI=lzRd{gd9Q?Snk?e)k{oS(|h;LHZwk*w3_oop#n6r(59gulX3yw4Xa6 zoApT}IDHF!`p>vuRlR6Aj}zFv%RbF#+|RiuWXet{u>aXU$20C16gu{c$sHWu(?0)a z*#B5rE_44GWsvy_U*Q2Bf;zE6mWWtdA0xlzHJ^(d*wt; zLFyA;|Nply;oj?AdWPWgE#{5=zkPu#HgWLn2fHuiZT;VUcWuI49{dJ}hs(SDfA;yF z-;`|?3eMk8-r4`zCn7peM}0FB$h;Hp>woXtkuml9*-&u$S@B{2uYI927acn>1Drov zKK}o?uVg|yv%?Fp{Slw+f9{j`Jay`V^WgNU^11%UzP1OQ$=5!E&42TG|Mz{B_b>A5 z&j5$-nlJyq?K{q1!hJmi9KRV~?Z54NDd{M8S`!>T55DgIy07Z#hUD`rz~jqPzWx8Q zue$B$McsDLd<%okcl$5<+}o5J>;=K@d+@#f^S))Zy5%=tg82GkYa#I45NzIs zAOBzOQ(x4z>{%|@{R@89zt}hP*^@aRZh_N7#;^a+_Iba27in++T)rv%u7A4k%>2S5 z7hcJO!~ggH$NScny>v=T1?LBYKmQ-?QZELtd<~98Je{)~yePQ2@26hnN;qU)z`)01Qe6sie zIQ@V4`~UJj#&f@RTOKq6$v6D_e_>y?xDD5{3UGWd{QG};-=}8h!jK?vdDQUl|M7jh ze>`e^m;w$Dh5!E#?pr40e&awo*nbZH|8L(HpK*a#l@;ushX4PU@8jX?3l822E?>Z% zei$LPV{_7#`Xl!5!c(R#J6vg(yro;qJz(p8cE?ONXT59tA?hIO4nS;EzOOnwaV4u3B zbjhRQUYmR0?rLTie6Uxu+4$)G#GXATW|vC1wtuky-?GVjUt6M0^XFry?B;#2H%&B@ zsPLF*!{7NcCt~Xdd#=PgUV6)B*nD>{(w=nYgMFd@Be6Sj6Kob;ylnL5@dx{$>Z9u7 zRt`4Om;bF#`~AVbdavJ+x3jbN1V#&8U=;pnZ#mn=QsC&cJ!cGa4(!$XXn%ZZ&SsIV zfqNe4u3R_E>7)HTvyZd(>rdVj*thh=jHr+HoU7mM%yMY5sSd2Q*-`Y-zO?K5PR9w2 zdtUYSSp4kzXrIkL{i3qK#66{_^Iu0V{%HRs!?W5ay3giH3`@&{-5>4Qzv-E_1<%~G zYG;OF`<0LOHYtl3@)+mY$lm;;6!7+=efRcirWyAq?zz^J)M3r`$$m~Fqwm}$JX$)+*+>%;pkpX_US?R%_zX6<=+PyXxNd7tb$9ZWv!P!*59=QOY=2lY*8Io+d3%&hgnX9W`)t2^-UmU>TU|CX4Qp6je|@(9 z{4?yQ@`dSpwDi6!a*2Jhub5;YlleJr&-4`mH@_Nwv7b>H|M>3l#yz^7i3uEjU+m8} zyl1JJ?O_wnAp6!a>x+F^SIR~2DRXQt*c{xtsO^jWholMH79T9Oxp(>c2d%|l?8Ek5 z{G4=prj5Fm+0|S7zt}%=db57IbFB^U-M=$8-T7i~T#>cs_L~_t%XQ|KZTk7e{&9HZ zCC<%L_Bf@TUvx|CtNpvldox?h`u8;X&kfTy`D(w$W~1!Bs)jxMlVVRT3H)k5>*?F~ zb257O+*03a=AQr6e$8ZAMxEU=ZT=pgenqJFtNnA?SiswDFsLirsgYbruOWXRYhg<}LVUADXgB*yQf)J^OEQmkJ&DX3xX@KRv9oXpg>B zs?DbR-|Sa)*koAk%ihy6CGcnM|8Mr+_}WzYZ94Xp#J_n_D*xSnW>rUg9eOm4}Q15>MM59M`*rHlHYl=&yT*_*Hwz{Vu~%W5t6bCQD^yK zuQfe4sjX(x9^rF7Gdop(*k3miy&~%~chB16%5GBbKkR>>bzIzXtz*yINiMT*X8f?< z_3g^+AIIkJnVHsg^LW<}d#kNApASu$X>)slmebQUKkU`K+rmD+oMzMGvQ^CJ{15w8 zk6#+aT`kySRxUbo-NzsHIny665;`l5pZ2@! zwl*G*Pv65IbmFv2)K7cM4@;-jc$e)7@Vhs^srIM+g;wdBXowTQRHv?$GN+9-!GiA z$35=%r?UFr_Eu{`>ii>0_js`_G}y58x4oWb2;b#D^Y&ai=siL1%y0XadAd~>Y@2L2 z<*r8``t;krXim2MslW5~%n53}J6rOP{aufM&QyU$o2m={<5xTUvFAG0{J`9GwvG42 zaJ`S|f9%)Tc>MS6m}Il{Iop)n{y+9EF%2Gj))d-gPI!MuVf!EZ+nz5ko@Oq!`E@up zl>7c4`=Yr`!PYl=_tbQ1@7d&Yn-5yd3TNf9=a#=N49b%-z$zOz+e6IRDSS zXRY9t&y(luQIAS|C;jW6{f2Ez+P)m0YcqXUwz;K6uL3KZTogs7|B5Xe*0|#^+DvX{4*>}hQqoMl{Vfzsop!*Qvw9{LN z`7rthWS=1ej4p!mVKj6fB5Xe*!y3qbLpTlHhsXegenSQr?F8k+Xy`sf z1{ggHvfq#aM#J_Y!suVneT6W34U`X~lc0PU4cmtZqoMl{8DKPYA0h*cc7yIagwae; zK8!vD*;mK_qnn_77!BKp2&37c@-X@obUz`ChV4Uy(P2<|7%d0o!)WL}MA&{rh7Hht zg)q7b%7@WzP(F-??L&mo(0zyuFnSYYKOqB*Zi4b*G;ALtjE3z)gwfD_hzu|qwhs|T zL-!#vz~~a_{z4e-1?9tN1t=dz|A6ijgwYqEd>Fj~%7@WSP(F-~f%0Lr8I%vBg`j*G z{RX-(5JsPZ@?kV|A0h*chVDaTfYH!>hzu~=3927P!}cMHfb$&Z#pQ6pO>vgobEknbs)8Bi~*yqXheRX>Zip3G-c3=C`;W}IFp zlXlU*JByu%K}Oe>q2m4TM$Jq1Gykltty(W`%b@UZ&!d-@><`KI3h@}I*fMzR4wG4a z*}l1D#n${I9JUM*a}IGQUa>!Z*1Fj@-olo_L1411>{a`|IlPO0Z7{WE_%Q#7?1iiL zm*al*taebhW%%KvBGG!yUh-r25B(wyTLz9h3=%fi?GKcNe7~(=Y|AiXiG9b*>-L?W zoYQ}Yz8rhnH$z*71ZE8uubcKR**zQfJU6gq$k_iy`QuG{d52G; z3Y})Q3=Owe|CxEqUT|@H{G1npwhSF2HPc;g+uv5(YHyNdW6L0+KJVWh69DbkoWN&x*Zvy6OT=v*6I+G@4_Q`SxoiJd>Vt0J4I^8I zj*6s9CHL(2gim?vy7Qk6!v?(^eu4Y;H$I!sEkCDY%P?csoD*yA+vgnT6X3NIvt_t& za%q$51N)wbGyHONlx!L9IK=Q3J+R+rzk#9Tk%cXTh3WI4{SWLfw_l#qxmD7Z!AEc2 zYtD!E&$;b1({BmcGF;hl**Nr}{o%_SR>;h-wPjesy=&XthxQqZmb6BsYuhsX$WOoj z?4kXt=ADhZBBX2?_UyZ{!Qhd7b(%*W+aDoY2Ah*|^U5FDSI#yqHV!hgWsqt4sk#4= z{hRHV6D_*_+A#3=n}oAJwm12Z6!u~^DE&@d(ctsgey_=zKa(9~Z5hryz3VXPvHj+V z?XPZ6HnC+0k;<$$fFb5Q_I)<|u zEDRB5fz*J^2dPIk3t1mXu7YJALk5~z6^64JT9C{FsljFzvObVm6IkXkY(X>Yh~aF8 z3rJ>x)L=6USs%!(H7xTO7>rQ;C}1?3LBSusYl88VQ} z0;$1f7P3B&SvoB97-k@u1=6#^Xg0$Js2E5dqz;6U!yQ=W8u9uOZChaZe) zGyFj^3#0~QK1d$fEM$EkxhE|17<7ygVFl7-V?3L|1u6!T2dM*LWOG1zK3vjbV0fs- z@Zg;mgTh{I28R>c3fZ>B& z0E2*h0E2;i07HO$07HR%0K)|N0EP|n0Sp)90~kKY2QUaI1TYvV1TX|B1TYjR1Taic z2w>Qt5WsLjA%Nk7LI8t+VgQ4IVgN&cVgN&dVgSPg#Q=s4iUAB46ayGOCQ=b7(S>5FbJpxFc_!>Fa)RtFchc-FicPjVA!A*z;Hn=fZ>B$ z0E2*f0E2;g07HO!07HR#0K)|J0EWHl0Sph+0~i=I0vHrD0vH@L0vHlB0vH-J0vHx( z1TY-X2w-@i5x~Hp8Ni^R8NlG68NiUB8Nkq>8NjeWGl1cMW&pzj%>V`ltpElEtpElG ztpJ7utpJ7wtpJ7vS^*3Pv;r6&Xaz7ZXa_JTXa_JjXa_J9Xa_JX&<YMCFs$3mz#y@Of#K0%$Ui<5O{})LHIWl z!^Hng42v0<8B&><86;Sk86NR5Gkh0dX7G??X6R67W{A~gW^mSHX0R|~W>{>*%phgY z%)so#%wXWo%wXZo%-~tb%<#ODnSr;RnW1AkGsCPc%nZugnHlO2GBYHfU}k7L&CJko zm6?HAg@r-Fh=pOF2@AtoI~ImaM-~PNKNg0|$t(;RsVoea3t1SLOIR4Zs#q9;t63NV z8dw-UH?S}qYG+}{=wM;^vWkVlWIGFk;t>`GiQ6m;{hwJFmUFW*?2=+-m?6!|z$(wm zuvvwbAzYW0;j%s}gS!PQgP$cUgQ6`f!vkAZ22p2LhRLq145IF=40?gA4C{kg89YK* z8OkzP87}9sGW;xHW%yFU%CMoFm0?Q_D??Q$D?`XERtC34tPIn4u`*_`}MunSqT#h=Yyc3kMs6iV7RU7F9L|F)KEPkVG~HiA*+z zFWGDiF*$4uYjfBblJeLX?&h&Eh!(Ih%qnDKIA6rZpj*twU|qw;VBW^Yz&wYI;p}`i z2BSr643{^vF-+Rc#-Or?jbZU~Hij)P*cd!T*%^$b*ctZ7u`@W!voo})urugtu`_(s zV`uQyXJ;@lVP~i7m{+qiOxVcI;J1aHVexi$2HrjF3}^PSGbrC;XOOwW&LI4k zo#7cb2g7F`4hB9M4h9if4u%|U4u;J-91M|m91OTaWG7d=U@oR z;b8b%%fYaznS-IYg@a*F4+ld?F9$>M6b=UAsT>S*XLB&zn8U&F@jM5^j>{Yjn?G?d zDC=-CEH>t3NH^hRV6x$4NVnr;n4iPR@V$VO;m1KvhRLTn8D_lXWcd7=lOctNi-BF5 zi$Pb8i(#%D7lW(<7eky97elE!7sESsE(Q)=E`~3*Tnx)Sxfo2mxEQ{NaxpZAaWO1S z=3-zjQ!6}8f&;19_-^{C_li(@aZ@gL-T1a2CnN|3@@&8 zF$g^7VyJk+#ZdQ!i{bfKE{5x4mU&p0&a%KtGO9YKI3LEe!nt9I9XUJ<{?$AT#Wg$(f17w1CO7jiNKE2k&|SyF;IoB?;qew82C*GH3_q^( zFenT1GO&yBGW<8^W$?A-Wk|N?Ww>n5%h2V@%b@GV%ka^QmtmeaFGHa(F9UlJFGEu` zFT>%@ybLzSco~Wv_!usG@G-Dlp$a81^d(FoY-zFxZ+3Ff`i>FkEvM zVA$*_z%VONfFU_dfWaqGfWakGfFY(@fFZd?fZ=qv0K?*50fv=x1sE2u5ny<+Re&L5 zmjJ`e&jJj0*##Mtc?B7o1qB(Rg#;N63kfoaNeD7L@fBo{4;N&393jYXI7N_Qak?PG zol-%D$7O;HQEh?@$}0sK&fXAYaK0tTkojGZVap#uhIv9l3@pMz3{N$L7>c!o7&hn& zF@zWiF)Vc!VlZ|UVkq_#Vh~OiV&KgXVkpiNVyG$-V%WY^h@on&5QFmtA%^ysLJW&v z3o)2{7Gk*kS%^W4MVR3;i!j4G0bzz-WnqS?8o~@E#=;D7LBb5Z(ZURzNx}@hNx}^O zGld!QvV<90ii8=QYlIn&vJnz~?Gt8D=@(`wo*>N7J4={h-)v!q#O1;a zXIBU_EL|-U!8P@F-W^g?s%y9UKFvFbV!VJkLgc+V*5@y)@ zK$yY%i7*56Q(=bJ&x9Fbp9?dDe-LJP`$3rD+jn7x&kQ0AqTC`39eg4TSp^~t%w-}B z4OJox*Q-Ss=C2cB;5aM7;QU*Jf#a_T!!Kn~h8=dI3^QFs88Tc&85})C86JCxGGqsc zGDHN5GU!B!GL*!KGW@O)Wth?{%5ZL)C`0&kQHGvXq73erx*jXycoj?6)^@ERWSySKrx27;bIJjBE%TZR){gQHi|KH^oTJWo+!q!Ws(>} z%`7p7>2t*xG**i-u&fnhc(+N6;X0Q%L!gj2L$H`Q!*m&O247oohUre?44<9E87_N? zGwf>=XQ=NKX9(;OXLvA8oMH2HaR$|e;tb9g#2L!2iZdu*6K7y~B+l^oxi~|?TXBZV zZ^apSKZ!G(_$7x_$*{Irk|DHRl3_`oB!kj)Ne14zk_!B(DF!<;qfC$ zh6|4+8E!w3WSI3-lHvJFNrs8&kYr%_BgrtCNs7USU5Y`NLyF-rj}$|RffU2u zKq-cnP$>q-EGY)_LMev$dMO5rW+?`~XHpC|zDqH@`6I=U@mGpLj9;4Jgp4$Uxq&pp z3?pfVt)bEk55lDxSfZpE`l6&6l;WisT#}?298;wk7N<%x9LbYrSX?H}U|u85@VQZ% z;cUA!gK>v6!>e9thQ|}785U2GW?-Hw%@8tOn&IqBX@=(6(hPGKN;9M_m1a1+RGMMY zHfe^<+oc(%pO9wQdq$e!kxP`fM5aQB`x!{z(Z47v}b8J<6o zW|;C!nqlpGX@)Hyq#6AGNHbjKlVQ-2mtk;LkYUI-l3{2zmSIpgkzo)vm0{?&lwq*7 zlVSMpAj4piEyFOaPljRhL>Y$PGi4Ya&yrz?SuDeFWr++!)gBp!l6^7^U$4tB$lj7+ zka{G;Q2a=Sq4Kp11M?dh28NF^42M6;Flc_2VR-yihT+I>8HUGyWEh;7Wf_uLWEncR zWf_urWErLj%Q6Iu$TF-Gmt}~RkY)HIDa%kSCCd6dIfiCtIR+D6IR+CxIR+U?IR;^AIfn1Daty)p zatzOv2af%#6`E)r3v9odv;TPo?>^bBaCiBQMw28Jl2(GxMnKPFwab$;e&-dgP)~5!vbr0hQHSG3}&|S486AU49D!` z8IzU@(dZ1-m3>~i&7%qQQVDSH; z!0_dV0)rQqA_EJzA_JqGBEx1mMTQfKiVTz06&YTdDKa#hD>6KARb&u$S7cb{t;o>q zqsSm0q{zS=tjLfasmKrviG)0D-HHr*N)+#d8 z?^a~!-J{5mwqKD!{D2~Z$5llJ_v?xbOWr6lJbtIhAoX97;qZS&hOhie44Va&7=8*X zF&q|AV&D{4Vz>;#GD-}GWtAAtC@C?lRaRn{t**rIS6zwWwYCyNu(J|Fs)rK8W=|!C z1Aa;jSHhJTo<%4zT#i#>NKaN`_?)c7(4C>g@VH!w;d`wT!{JFv426r77_MwmVwinW zi6Qy45<~67)~xwVK82(!r-t( zg<m zIaP)eimD8{N~#Pyl~oz0tE)0dXsR-V8>li&cUNVY;i<}CUZct&(xA$)s7sZ>q+69C zVWujB#Vl2Z16NfUlK-eOT>qoWVEk8=VbNbz2KIld3^A-~413ws7!0`77<#$X7$o`B z7|Qw77?Oq67}!PB7|bNp7=B2qF|4*#WB6gG#xUDWjlslSjp1a88pD@rHHPVJY78Om zY7Esg)fl$VRb%K_rpBPYT#X@cgBru+BWes4C)5}gpHXATxvs{*d_#@l-fcC8;5%vz zryi*>9Dc0EAn;C&VevaP2K7&B3}3#hFII>UP{b%rH+>I@4l)fqNBt23m#t22CdS7%t`t@Eb4%12-Y!*V z__ti0L3yP*1H*cChRN&I88|kpGd$j`&fvIPo#FCsb%uid>I~)w)EP8Ss55w+RA;EU zsLo(B9dZy0M{!E?0@wYldI;pJKl2H%Yu z4AEOO7&dRyV0g7dgTZ;X2E+8j8Vs9{XfW)#uEFs3h6cmATN(_(_ca*)J=I{C{7i%4 z>PHQR#h)}77XH&pAnheElnhd3rG#Qj9YciP6*JN;BpvjQ8N|PaYwI)N|R!xTOS2Y=$?r1Wk-_>MT z`&g4<@=HyIlJ}Yn#ve5qBz|c!to^0Qpv9oY5X`8>u!BvDL7h{Jp;KOqpTf!SG$;eopr!(d)i z7+z&-F*KKJG3>3;V#ux2Vz^eX#ZcU+#c-xgi{W^O7Q>xREe7{4Er!BwEr#!twHQRF zYB9{1s>N_%x)y`%EG-6$xmpaz7i%$?F41D>U82R{yi|)}?Q$)KzLi=G2CKCgoK|Zw zJU_0*5PMmRLH?Q+gVHrE2Gwg?3>w$87&c$iV%T;~i^2Z77K77uEryHNwHV5uYBAJ2 z)nbTc(PmI))n@Qz)n>TNs?DG)_tk-7Put}StR>72EilQmQ z+!dw_pI4ePByTWf__D*4;qN|EhVutZ8KxXGWym{f${=#glwsFdQ-+XprVN)Zm@=eX zG-a53*_7e#HB$z~+olX_Z<{jYJv3#w`_Pm@@VO~N#RpS{tKUr-Dt?$UgvgjNM97&j zTy!*JnCxuEAd+v!z+7m?aI)NtA*I5Mp|;M9!MWayL3oB4L&z*MhVuDl3?d867;KlC zF$ga=V+dGl#$d9}jKSuz8AHnzGlqYU%^03MF=N>O){LR$of!kuH#3H_Oy&$XSj-vT zN|`gL%bGJVJD4-PbTDUl>|)NK;$_aTIo_P%Z=yLva*{bibFw*ua*8>_wOn(CzwPD> zx>L;=ns=EqWb8I)xXfU|(9UGRa9Q1gAx_JJL0Q*=;gGHcgR-6l!y!EjhQ~)O7?h4% zFtDGpVEA>`f}#AP1;d4_77XnVEEpIcTQIzMZoy#BV9BtY!II&zq9sGKw?z3c2?zd!cm|)4Uc!DLvfr*w3vXd+sv?p6K_|C9oh@NT5;J3|^ zVa^^)hS+1446Bb@GT5EAWSDlrl41LGONQthmJH8tSTa=Iv}9nuWy!GomL-GnZA*q@ zw=Efh?^rV2y<^Fs^3ak&@uek0%S%g!k6$erQodO-xba#s9O1QMDAu%M_@ZgWpyX@C zu-Vs&;cmYbL&*dy2CHjU3^%S>F&J=IGi(;HW=IyXW-wN^W)N4kW>7b=W=Ju$X4qnF z&9KSInjzQQn&FDCHN%z~Ylhc#)(jc-)(nrEtQm~+Y#5SCZ5R%h+Avhs*)UwLvtcN0 zvtgLhW5Xac(T2fzgAK#Q%{C0-duZ}Fid)6!{GkdhQaoq4TC#_Ekm7^ErW-hEyK}DTZZCV zTZUB)whYFNwhWmqwhUidY#H?WZ5gKY+cFr;v}Kqw)0V+{nJt6d4qFDsy|xTL_SrJD zU$tdWzGln7cE^_C$Q@gT^hdS~ERSs&3|`tYJb!D;!1CFaLHLU;!x08MhF(@XhW~7K z49vWC3?0ID47DP54DUtl7;MGt7}ks1F`QGeV=z^-V>qH=$B<@d$58BL$IudD$8b2* zjv+J3j-eyQj-e>uj^RhX9m9rtJBG<^b_^*Ub`0*Fb_{A0?HKG%*fEHlvSTQ|Y{y`7 z-Hu_)bvuUT_w5)KKeS_b_SB9c<(VBr_B%U;n;Gh7n4XQ-91XLv1T&%i5Z&k!SL&u~`GoR z_6*bY?HS(c+cV5Jv}gEhXwR_8%$`Bn+@8V5%AVn}l|6%&y*)#-yFJ5HFM9@MZ+nJ( zUwekf>GlkhOY9jIm)bM@XtZZwZnkHrm}bv#Zkj#A-g)*68B6RL7Ok~s$k=Mn@Or;J zL-84V2B&lO48hmz8D#F-Gw?pMXJ~kB&yf7ap23a9fkBwnfng)314A;G1H)5(2Zqf8 z4h$c~9T*l%I50d=aA2_2a9{}6c3@bi?ZB|zz=5IH&Vk{Jy#qt6g9F2QX9tElKL>_e zK@JShBODk!N*oxjmpCv?>T_UF?{{E$yxf7oVxQP{Bf||R zM}|-zM}{jtjtuWZ92qJi92o>M92r>J92xq%9T|dq92ve$b!2$F-H~DA9!G}5=NuWz zE;uqgzu?GFf5nku?^Q>J)3+TNnBO@v9Qo+Tkj&u3Fq_$lL7Cl&VJD{(!(|0020)QKVZy%U4S7bk}0Uz`}G{&Zsa{?mzJ|34>&%`VOi58Rv?K8HCo z_{2IhT#j{S=tyy9_?+d;;8EtxaHYzb;X|D>LrT3f!^swB2Ip312C-gehS*ik3>Vfo zGrV2v%iof(98I5W)Nof&vP zI5T|tAm? zi7pJsQ(YKV_&UInnEp}m0E_Y$jt#n~fp6bF-GuMS-`X(2K`&(TY!ne6FY})C< zpuWq6p=7TML-=7A2D3*l3@VRZ7><5)VMzJp!eI2*g~9xv3&UMDSB4+#t_+8bT^Yj7 zTp2p-Tp1p_xH2evyD~I;yE5zxb!AWqb7csMb7hcCcV*a-54%&yD=;faASBP>c(KH;KmTF>Bg{0&y69()s2DA+l^szh#SMTFgFI1a5siO z@oo%D65JRVv)mZ+D%=?C8r&H48r>MA+T9rX+T9q=^|>(w_q#E4&T(T1Ug5@2yvB`T z@@6-Ny9eADn2)+K$ewazn0(5OLE?fNgYiW-hN+L;7>ZxGF-ZM%W4Qd&jo}8LJA<#d zJA;OdJHuibcZO_bcLruvcZN`VcLrxCcLq-%cZTHY?hFp|-5Da*xij3@>CRBT%bh`E zk2^!kUU!D1{q77QKinA<{<*2{z8t-l9D zbAShfWRwR3Z?*>mbB+hY~?uF zJlW;RP@v$x!^%li|&4Plm(qJQ+;CdooD;_GGxp;KfkP z=*94a-;1GG+>7CWv=@W1j2A<&suzQ@niqqfr58i7l^4S~M=u6rA1{V=1zrrzMP3Z$ zRbC9t)m{v&6TKK7&-G$xTIR)|yxfc7#d&wIQW^bdP6Bp>l&SaRHpq2;z0L+*Vq zhR^rC82F!hF+6_i#qi>l7sHaTUJMfK-VDCH-VCl{-VDJK-VFbwy%~ySycy&aycs4d zcr#2=^k!gI@@8OC_GXxz=*>`{>do*u)tjL?)0=@g%bQ_xt~Y~lo;QO?kvGHUB5#J$ zYHxA}VQ6;sVG!~1Vc-bxVYn3U!;q2S!?2^khrzedhe4#&hoQLChhb@@55wUeABI_z zd>EJ~`!KAU;lnUxo)3e-E+2+3yL=cn9rIx@KI_A<{HhOw@--iZhqrtfVsHB}7(MV| z2zltkkpIeu;mIo>hSMK?80FGH-FFGHcaFN3d! zFT({*Uxv^2z6|M3z6_6@d>IVfd>K@{eHnawd>Ov`_%f{Y^=0_y>&qbH@5^vD&zHfn z(3fFyp)bRvdS8Z;244o7CSQgpt-cIf+kF{oJA4`5clt84toCI%y2F>jWv4I0>;t|G z)(3qV%ue_+be!>JSa#W$f%&#CgV7ydhUbrb8T>x@GFh<`e!5ir4%Z9$)ikc>2Jf z;rT0nhHtU~43csI44|uXHq6&zc(7iJ;R7=RgTWRphAYYp3=1A;F)ZL^V0iFei$UNl z14F|;ZH5AM1_p;`+6DVtDY%p8>SCXTukN z24MyU28VC{3=NhL%cXAB&4~PlRFUl@1NK8(R&n+%Xj&Vs%Dou}1%}dTt zNiB+j(s~6cNuc#0Al$^nzyQJ^HajDTWB~j30dD|fx?b~!NDLJ zoE{*273aj_68F-?qLi?-lEkE()MAi94FuGHJbAz%nqdJG1JqoVB9Pk?jH4L@5Msp@ z5Gxr9Orsel$ivl^<>!>-g6{?kjb>QG3>UAes!B-$E#O-d5e;; zFRssGNEpSVVKABoM$^D(8W{3v09?*9FfdG5pEZg{!(cQGjHZFnG%yU(0IXd92fgQc z4U`7)J2qu8EZ&p_Rs!OK7&nmQ_wCGLxVRHleg~3#*nupD+5@Qa7m(z?z06|Zc!ero zgCq~K@5=6M@Ey7jWG65vu}+o*b<6*x%mzteV2~WlohQ)Dv3ryaR?qh+n?d?fHUmuE z0yK3>_aW+>?`1Ot+{*^{MZp>w7#J)cK->c2!}gDW*dPqD8-y!TXM^1d+Q-t7Ivae? z^Ndtf_kz^H>_32Hzx&y22H&#~`?1N_p37!vJ_nI+xCNnQ(q=P&?9xb^&ES#-u?MtY z2IMA~8$sg`4L2d`by((sq`+YcVu0ix+{^~M8N|nhSs56JQUi1M5hQR=!}LBC~RQm2y%S{5-)K?&FARyN9^&-hdAJu zXK}(WKZSt&6Nk}q1{6=YFun6Wu5=XQlMi+xF8L=u`J?p(IE1hh^o~bj>Qj(QVeyIF zP6mlTo>2gz;O!4|`3bWNMs$3`!VSGVHQ9$6ZY$8*T{lh)zHkFYG*17VM)eQ6e~+9V zeEuOO?GvL0Ib8Oj#iO8TAxIjYKal&8Ac;V;Lb%*sv%(>nS3v%Nr3>`_%PSdF|D(%i z5t5h2um2Sxc`4$;6x3(jppNKkXOuwtlpwz$V^ANKm^1+k5A=Ls5{>E~bonFE#JLxn z`7^Q#8RlgXr=J)<3|BRv_=JTYdVf}G6KedR_qV5PMwLg8zZF|i<@ z(c3?F-BIP2ptX;3V^HOh%M(zzDaWJAqnB5&r=ZHCrw7M1_~kh_p~|E8U)F9#l}9(f zc_(qht1yvqBot)JuCMsV)f%-dR{r~^S;aThmF&`w>VqeSvQ|D2Ss&2A3LS2Xl zadr|Dw}VX$EFRFyi~n`h^D`){aoOWlOdEU9^C#0rNPNQFfnGk{T!Si)o^DU9M3qM` z|7PDsl}8WH4-6%sV1SqJ==$d|mJpS$VeUuQe?=VCeDrc*nF@Y+H#Pk7Z#D4C_i7X8 zeqz!;D4?+UQ@y{0A-tbBd$8#Tnd>rtn||Ptqr|y~)NtDXE&o8_ zaP&n#!HJYKRHJV{cYc#{E)@X(Ut1v_&(RwM8>{fXr=+ zX2@xaW~gY3W@u@PW|-C%&9JO3nqf;@G=ouhG=p4sGy_|AG{dj1Xofdk(G0h`q8T2v zMKk_k7kHyk7g)nk7np-k7iiV9?fu~J(}T4do;tN_GpF= z?a>Us+M^k`I-(gQI-(i$I-(iuI-(hTI-(h3I-(geI-(h>I-(hRI-(iobVM_(>4;`H z&=JjWp(C2%QAaexmyT!#w$5k~L8U92!J;dg!J{jhA*w5yA*Cytp`a_8 zp{6UEVOm!-!-lSChErY93=Z9pu;*l8Xy9OAXy9XDXy9jHXaEKNRo2kFjKsW@oYWN8 zisaOSlFa-(x6GW9)FK9kDXhV%B{-#ZnA}rKoJ)&}Qu9gzit>|Fi;Eeyu!f`-Da*Dx^f zv-p+pmZXN{hi9gwI%gynF{rV@m?8Oad4^n;z|z#B%7E0OwEUvn#JuEG=ls$< zkau)3-RqgcV2C6dl2MeJnBtkjz`)Gxo>~%ISzMBu8R9ZSnUe})F*GuJ=4F;- zCgx;Tr3U+C7MFOWCZ;gF0+|wAl2}wyTHu+NmLJa04-)asPbtkw^#BKNI0HjDNX#d( zxWu)nD8Gn-A(`1DHL<`kCnrCdAsx(iD@sjeU^oj>2Msci3I>L6tYMi&C8dcuV9zly z>}Le2^vO&rN-U~mI0jSin37TiiUtO6*C0PvA7dlEl$;y}hVWpcco@5v*%K5RIr+)i zsVM=a#Tl-7B}J8BpD=VG%em#07H2@jyFund`~nIGzr@_sa0Z6Q%s%;vDNr}KR)jM! zd}RqL$qCIX&&*3<2nD4bB)_^cx`OO=F3K#)Ois)RPE7`-GzNyd%s#1!WvLkAN{lY4 zIjJQW617O-kEY2nFD1AjGY=f!498eQa*82A%Wwk3c26w{OUx-vWjG1q1;cp9K|D}k zGB`52g14*$!?3~QM^i@`2~ zh%y*}ObsngEpkasODxSP@p1NaVPME$bj>Txg*X|ausEE7VG4tDPJS^oUocEz2}(^& z0S5|$0LUI_c=_h1q%tr}1j|B&!WkG`LFo#l7#dBk6$}jKEdHe>1*Ik6k_7H%Zjef- zM(2{E97r4$F-SAIq=L34K@DIKL9!EKj&lG5Ln25NWKVErRjO+RLnotKW?l-|-3Q)_IX@*eATd3a;TR}>9YJQV2bt~f>I-6D1&KNb zfI^kQ2PE#ASC(0npO>4OR|4@0D8%-G^E);vGmtNlB*GGlGC>=7!WjxcGDvCjBgk}! zk)YHW&cKibPG3Q(kZh6z=7GG+z>o=Mg9{sw%ZhRnA-Q!kBe+-q`P!*8EiDzaFXa}4 zb5SZNfn|cyxDm)!*Sr+}G>{@t4KuW`U%o;rq;zIra7)b0Nlj5m1QpQW0Dww?OVGT; z94MCo&QD7$L5MOic;=OX@~%R0Vs1fBW?s5NQDR9d1429>oN5)o6&0w}3saw5T3nK! ztB{jlno?YlnwXthq>z(XnO};mCNr;~v_t`v#~2vGi}Lf*74k}RlTwQm^3xQOGZORi zQggr^1(=yh;OJ5)&a6sh2+b=lEhxw@DoIUI0Gp!^bxCr5URq|lLP26CxN{APL52K+ z)I6w1!TfSikp>lDU|;}?fvQcYP(Wf)aVnJUnwJ7{PFiM8D%6c>rFr0TU!fqeC^0v+ z1e}22;gpn^mr|aYQj&obMlK-{3Z(@pi6yC!(1YY+g^a{vg}nR{g{0KfJOzleON&xd z5Mf(fl3J9SuaFBWL||cn9+)ukq|6d<%)t1*j=_#lLm5Ky^A&Ov^C}hcld@8iOCaG@ ztWZ#tUzVAYn!*s23b!5XAb7|k`N7TASs_0ytvIy=;XZJ|E^HM7cQjT&mTb*G0G5uDYTB2K8zyNP`fgJ%&U`Sz{lvz?-Qk0sQ%K*y{;HYN+ zHO~}^@=GAvKuHE}1%qovNoo-&ALkckrsiQ)!r+ow1Zt|3WtLQ;I*@^Z!7(|%w74WQ zSs@isW}_=Y&TAe)A#Mt3;KsEAC^5jo1(Fuv#Q;1!GxJhXL7NX913cj#2FDk)gbK~e z&dV={2iYPb%o;c%#!2` zP-ubdf_MeVEtz@A`9+|ZSAZ8v3dIGf$(d=H$&jR!U!+iyk%}Z;P?Qfc3hY5_ZU)-{ z4sRz|IfvC1i15In3?ocne&h0UQb^8E0eK1~p@Yf^P@2$F2!{K*Bwr!iNe>hv3=F=B z6?zJg^pb+`kd=a;6Bkaoa6EFsAV~(?=DIm?!Qvd21rVVOE*rQQxS)~i45`Z$63Y{d zQc+7Hf*}pns|(Q!Di5r{>C)d%2Wk@72rC6ph$?U~`1mt0czA+JECvRAdO_uRW?l*? zCFB<=fZ|m_0VD<~y04D~IDutrd!qU{@lGGF(g{0CFPzv#=Qb@}$%>$LW;8X}R zADZq#WhX2TfZ2ZV<{iY05lFuR)D3|KJScx5)VQSPBvzuy zKo9Xkt~cQ24#;e{ZWPnKl5#;!eNb0DwJ09sDrZMX%U44aEjk#Gjf0kfj-cWj zB|kx<6&h9=s>PZL}3CU21nV?i3p9V?>=zijY#5g#KV8}TI$Ad?DiXaqNQG9Vmeo+ZjsSc$5 z2CAJ?6;wgZ7gb%06b>i=r7u^|*b~UxX_JZvb8DplYQm@H<(H;sKyxahL#C$y8u!Y~OIHM?J6&JL zh`pm0|VCfCbTbNr2taI#h~ls8s_SQ=x-(GgE})6peBA!YFR3hd-On6 zC@9##BV;+L2sOnDhTyK2kwST9PL4uSszOR?T4o+-xFD@0wFuM)FG@@y@L5@D4@b?V% z1vv(q&k;2OsK7c0dZDX%(Jz6N}PIL0#Np zMA`v6lR-Dw34Bfrl0So;92N45Qc{Z)a-l&3_nM9Zq{9o!c!^LyLCk@=9Wu0nFafR; zq)Hc5Trj}hiSQ>#9FzjUqcCt=u|^1zJF)9BRLCz9G753m+^Sb+11uQP*b zydi^mydj8=2OU&n8gCd6I*7&`N`t}}Y8E12LRuA&A|2Y*M}#dX11W$TY`V~N2C@rk z28uYeVGT0@pyge>i*H1{YgjOYZUE%$E@&FdM+^}ar6%X6 z=Vexb+R~6w1gM(4d{7Mt9zuX8IZ!f1ggdmZgOA6ift%%d$(4wd4$^=y50WXs-Fj3b zk<5gR*1-m#AWctX<)Oui>8Vzb&P8&5ie73(szNkm(5pCBAxOck7~-&auto5p5-=C! z9^b^gl*E$!qDrJ;Q!6e821wf#jpSlr2m<$VQ3)#rSfepBPa&zGSVsX;wV|ql@j#=0 zu3^Cnd5I;NWvSriZLva-f~|svsilE|mX3nCk%57Zf`tKyv@`>ehQ?qaLo*Wt105~~ zm`TLaMkXMA3LrxabQDY=CWFi}&`|(cV4$O5Xao|~ggBg7b7AVV!kmJ@{!q|JEK4m) zOizU+7EK*cNWj#g(x7l~^bOJtcT({52Wy7}gMx+`*wYpkreKGefhiLsFl7o6v;gry zMuUo5lEcH$5^Rc*u>r_TBV!9w1F+9g-3Q}=+zD!RD?o?6K~V*k(?E$91$?0l3S0wN zvLM;LC~>5tU}$ClP8)`nMqt{=6eIxl0XR5tm=E^{sFa3#0^}30Kfu+Hp@L_yFUSTH z0|SHrv@r&j0tGrq4+&U$_?BFrl!*a21w@}UvL2gV=@>~0eXE2lW0V8DS5A%Otd zht(ou3ljqa14w3KV89U{xGe&ii{xxmLr^>`;L7(P)!_6Q?BuAU0IKzL6nvd^K;8y5 z*mS_5;2G=-Zc!-&*%F^@L2(UAQMg@-T?U%kQQ{PosIVnl9R)~W=_o+F35t8{raFQa z&Oi#yoJt*qAcf?_JW$^t5mwlsjrfAPyvZ4$HdAqCaY-?#4IZQb9sz}n*5is7=;$M; z*$NuWfQ=-8f;lxYIYR;5Q3MV9CKVLxDTHLC7NlmT4Zf@?j5nJ}{;!(E^XGA}VV6_RXGYf6Y7D+R1QK!_$T&>RV9 zCc79^eZuQckVinZT`p*(HM1DjQPTnWA6#oIBxmI37pE%Z=cR(82o&UL`8hfH<(YZu zRtmb1LRUvYH?ufbM?tqZDN#p37c|rWqLLxv@et9>;@o(U49H3bs78pxp`?`pY#bN7 zUIXk=khuyP+M3Q83ZO9pa|l^l}^etQj1a*oHO9l!;}KKEp25Dw z3L1vGCYoRu;Wwuszc>@z9?;O%RDdSI)MACyijvg4l++Z&XpKgGUQVTgnTbMnQb92| zZ`=M0Oge=W`c+AU>!gma9n_r12{cGCTBrjfCeKP zrBPa(ssL(|fjG3U>{pv2jOdKmA}oV;4ws0!MiYi4TY!5T9nILZSq0QYK`W9nx9VFw`}M8iuoc zhM0#EFS)6SdBqCgaRp-+aM8oHVa;FvLT(J#nJ%u6g%01bWQ=cVSA6oZB( zl0Y*oDd4duaQX$M98k1Cffaq&! zKss5PR^a3hD&BE~CoJ6{rEh2ifkqOO^Wo_RI=oesnGEp*Eau@Bfbtk9k1BW;=Q?K~ zQi5kOc-*sC!Ab!%3IMVY)HX@Z&rJf4_CRKBah0QxaDW(z8sE6GAT+4aD3G<-QVqyS zu+##IKx1ew!xb+ebKpLLI0$D}19=k`OjxrUIPAdT1}f2@0SB7>an1m7KnbT<0mKKf zV2KCpf?!`z!b1)~uvwspM)Nq7OIkRB8uU<&XcWjb6r@UBBTZNX8O>lQmug`Pvj$JP z2l)jYvXFQL6(nS&ecjw-NNo)ooQL|t3U#Oln&AoOcW|u_HV5G(P;~yrtyY43g#dJG(csf0}_Zg0Sm>OKy1U6j(w1pMnOuy{Jdgt(w z63bE*600(EOG`4q1z~DVY8hlOHWAW{!C7y52K(!Kx;iTu85>v{>Ka=a85mk9gn-u7 zDH!W1K<6}|gNm8O3Q*&abQxGcbeTeRS(@tMDkFkZQ^8YLxv6?36(yj+R!B)LNzBYC z)&uqNQ%WinT%ZvHrK}VjlS?woKx?8v%Yt(AQ&M#lTtK~Z10Cp)IcTC86!gJ}(RR?l z2rf53@|S^vtwLf-Vgaa*hZ>|{tB{si0d6ZohetsTAaL`t7?jO$q|X${B2bVkQc@G4 zjs;C=FzAB(1N8@t!r~u=@=Q>qDWJI@WVr>Tbqj4E!^}XX{qjpvtrS3klUb~Qm`=#d zQ*aFn)`9kt!QBrXaIs!m07@_x2JrR@xPF3&8X8%Eg&`?YwrHvl~&@Kq3y5uHaUnFi`q03I$+C=fgTN zMX3cjiOG;zt~G!L5x7l`2qSnH zDCH$V<{pa`oRmPRO*bz;J_R)29iN@&eKs ziBHL`h)*p8cNG+n{0Wg&NXakH%gwBS&pd$>scTp;C}n_ZVFm_WP#3VYC@}|WFNm^I zfDBqD=D=G2nfag6f;k)Z4j*9PgZX_VxH`oE>11~fQJ!}>h=MX-Jo%&FjDWzfyd z%uNMZhJ>vYd_jWP2U=kbFo?5pq_dEWRMw|@LP)TYnVyM>se)r(UTTG& zk)9dEp5T&v@c1BP#k`J!257)O$j#Zr!pt0^0wM#RsY7xm5)+mV@i`e3TJCy=mPVkc zX3#B2PDC;Q%(PN~6`cwJ&W@m*3~KK|Jgng6@2HSiqF`id2I*yiO<`crg-k6%NU$ji z3RViB_5H}RmpafHNLvLBLmhB|p{YaUM5Z1nH{r^E(9H;-w4a!h0~scO_oqQcEW}-S zCO&lwp^iqPtP}#_t1NUty*F?%23ku3+Nc4k2#}N`F=6ol?$pBq6I>60f=e|;LDjgJ z0X(M-n#l&uV}s_fK}iWZ2Y_cCU}}m2q@RmiK!BRJZcgBq2)x<>&tF5$OHRxKr6$lC z2XIduHgbc!cn~z?&oH_UeRLfzj}-WXkn4jMB7ZFv}U>(C+VC_!xs z&>&f99&}|4s90riX0T$2VJK(FXDDLGW{6?%WC&w$WC&)6VJK!OVn{|3iDz&E%lI<{ zFvKwAFk~_$F~l>ZGUS0(q4M<@lEJ1kFk~>ef>q=*q%fp16frn6lrbbS6f?v#q=DU#%aF)W!l1yQ$Y9H$z!1vd$Kb-?%HYP}$>7J}%HYBf&)~-3 z&k)4m%izcm!l1yQ#-PTaz@Wqs!;r_I0C&9tnrWpBd0_iN_U199GNdplf%hta_UyoC zpFtfm@DfAS6a|keE(Qii)QL&39H=r=)iX*1SMpp84A5CzxEx3xgpt*NXIdc51Qc~> zjXzM+EVD#6wIVUO1k^850F8fx>P1}old!19r50+Ju0m*DW?E)y3bfA!G9J7>5Slu$ zxldQY*Tp#mNdqoB0zjLHKno@mG*mMcAWPqhHMww_4;s-zRms4h5daAjGltY|) zb3H?CB=rz~qxcj)@Cu4dP-_d+BnCw)h!05u8pWEBz62;v!S)hk4mhB(8-%6T19lT? zUx$mqB_skY4$6mRL~kf zc=4d8z`%g93xokpEEu#kgn@wz)aAvxp#;NFY(|2DAHI(Rc^?!g*(mrqfqVd7iQ?x3 zURnVgs3`{T^ea{XEj7^v&&z`rtbkj^3`F}ARK6&vWq`T)I?b6O zgCUV2j{#I`(iy`RaD$B@ZT0&h!zS^^aeuoi?OgA#)$Lms%50BU2TFre1$dJGB-jtogq zKZDFlXV3%J?y!A_(3%gN$kXzRz(bf2-$BRzGV{_IsMZc5#b4nJMd0{J2ge;K#z66! zj}o(xR*?cjFoP$93!2|SF%D`+0qBj76Kw~ItAxGP|55P5}^o=Nou8I za{Zgiki(G5kPB`g#UsVQW=WDt=uwb?!y&pl?=JyG@HYqz);Rm1Wx~;_|Jo6Ft40hnQIH<(XgqKdp@-|?3kO&AHGAJ##3Im&0xQ^T4srnwo+M8!OU%px zPx*jyF=((JQig{+=|eX-!s~cQ^#GZ5LMp`-xfmG0%?ilgks<}iK|7#-G30~$SOwsE1e9X)7)rn;2WSrls80kNkIqf3 z1oiSkt3ALqq=KQYF??A7IHOTNoe~#Lpp=%!5YLdzkin40kOS^PrZD6(R4~LdJvQaC#(0y%B=~11ai_p{W|y69v^)1q`L&5KdvpXDDaLW5{L51m`4B z{DbOZPz-^>JdpuZVHkKd9;n z#}BG{P-ucm8d&`JgX4x)F+`j2j%O$UxB3#nB{*cv1+|?7DxG0I%wtFbw;5Bwt-@S} zQU*||qQH;@ZZ(41emdY1*n|N@gGPQp<*@<0js=xN!^Iy1SKjC2E$u-u5)U8!qJKFL zUDfE~76R%4gAaR9NGeT9Pb~pehh>@hIf*5p!A$C>gJgyRhEyD_4h9BDxegjxOoFx@ zK&=VTSRhCSgkd9;@z6GLJcB7iHUp?s0JSS1Ev|S5BZh1S6L2pFl=t-+6d2qXf*2eb zd>LFBf*Il&0vKEwf*3$%xH331C@>)FMIK>{XYgZiV(?@LVF-qn^C0tJIW3q0)M|sZ z+Fcmjz+;lm41Nsm3|0)F90%&zfap?&6ozz$RB){T>8+J9WP)od(0C_oM3NT$kYZ@r z0UN7@^cjo5Bd&;k7HAX~($fT`$~=Ywa4QZJ?u15gF?G_W{2 zzeV7l6>4c{$e_bugj5b1LrX#Gr+ebupT|%NF5_YKKd8M1X~EET0ao^a2ZS zPY)B3qyzz( z0vWl1wd4??5_6yO0w0)X(3be#^)VciNQqpcDccufX5(MJ)qr+k zgIrIGdY3r&gIYA85!-Tb3Xf+f0*}goS_Ys|lU#;qh9rhqhG>RdhFJJWj6ZlTG#)%B z8qW~OV8~zsZJR)H8EIxhY8TLaY6Q4sGXt9i36+5jmkfpgc(2Ek0Tgeb@(OooWio)q ztFVO_s8xVyw}HZk8fHU64rCe#gT@&k<6Z#_j?lIyD2{>|e8KHae}-^|c(8Z~gC~PO z17^z-)CL8a0&*#AT#Odw6llI3*BBJ2BnIWWVsJ|w5~849BB-Q><(_zk9EN;`WN6M6R4JkwP#WL!JwGPVDN|cyWnwgeS=H)XHZC;9e{C zvspj*a4u}H0O zAjMvgm+57%54eqA%8_MfNZB; zz8z8KBiYXC}zlD$Ye+Z&$ghCG=btD;n{Euw;C`qHLkOs>$WKX4%FoXRcPqgMvm%`a3|+cFFMrU>9^~>YnIR3j znh>fH1ZERmc#}0L$w}45+0sHOpUo_JI5YYA2;JfYwEV>eLd3O7N&Gtgdte zue@|-h-YwTaD?_VTp9crKq8?GVbGQzqPIbwNg%TkF#t0cJ81`HrbKX-s!k;;(9kOpqe!OH&%@c1>%CG<#tARm*TE_@k$z+>x>adMDZ zAWRQ;gXT~{u~-3~1)yy_CNqFm*gJuhEj$i=(t-3Lq2%U z8Z`F{T34aK0Lt^!3@1=HB!kz3fyNL(GvuKDQVDpC38;StYX^XOIO&Zu89-wKpc%t>250cPYtWgF1MOZ#XlR1`0CIN;Lo!1JcqJ8Rr5ng~)GI&8 z4Npj~6y!SeQ1xI4WIzv1>bV!PrUNuz3|dUDT0tU?}gVqv4 zS{ksF09yMGszE_>!ysAE{Fx~@tx_vL7c-QD_YWj7fJVL$`6+_|b!IAVPDgo`nbqx!q zpFcqB?I5eSAS05XQ~(+S03c!ek-iwIFr*3~3As46Y1e48hP5diwh_ zg`otzCI~r>Kxu*&{)6rX0Y@6XI0V^Gt$ajJ|54N3pwt2ysR8ADL@tJuQ=sujP`L}* z(F17>fkYrZB#;|Gm|EcnT4M!TJqsEU1kKPwN)w1XK=y$8hM-y$RPTe*G^CsawUUAv zLcnVXT)|_xkhy=*m=b7q5VZQhf+3y((q>j*0F|Gx6$+3MUXa-!Of7%FY8g;?g62dZ z{T|Tj15_V@!WvZmr!gRxKoDPnT&M+IiwshOT1OC{cL%~>w8+mOe<1IZaB~Y$$Vtsh zFUbJU=(@S+CV@|)a`tnl+PG&LLkhHon2vRg49K6M40%}B`ny5bpMX|YgIcL2;1##9 zc~mzB7Y1GMiU`n(Ptf{E$T}6s%Kwq#Pio~iLh%GCt%AWbB_-f>c#u2>8(X56J7DAV zpz#h+UxQxuBFY(1`vJ7hKbRqtp$fbL5i;g#2JYX2@)!uy%UyopJ|ZM8K&7}Jg9Uh{ z6DWKj`2kdhLw1;gX6rz!!#o)R7=jr58Jrm$89-$sXdM}7g%_wj8qDCq;0eulpgBAG z`2*HVgZKh80}Ppcq=qjT=vJQPFcg4CVGt{{AgP1i`D8S`Qnvq_P0XYqfY*B@g7n>iI>Z`4cqfL;QJ9 z}c4OEYyw$@>*P;i@q zUSok~+aW7^L8gLMPEqC#(7Y!$R}7B!03y60WBb@#3R_(YiXYIr1kfm49=J^an#CX# zIwLcD3563Vy$@vjhP>PZa`nKbTP+623JqWAc}4yVpz~3R7(lI6&^}X0YBU5pbRfeQ zmr|fnYaj5aLOKIvE(Nr58+)4=wVcCkf+~Xo19lT2W744U6m+vdB_t@U zKqp5)Mkz2=6@c?LM3oamDR?y*s6@n8Hh}y&(BX{By}Ar`44C6H=yL~o;4@Jw7+^ky z$q#Hg2Zbwse<8;tq=$vuCm_=X-anxHfXh$V(iU>PQ-IN5CB2?TgcvNYL8+QhDgn)6 z#O5G04M)`zqZkxSHpZofeKQjqo* zY$l#i`y3RG5T7DS4Fv{JT}52##}&U2GtpBBtW5+NuO-d~&`2}rbkP!qOz>J&ggZfb z6odyl+{p`L(CQBSHQ7M>3p4c>gGb9i=f6VsXM*ZuNL_?ELkWvx!uc4IRt8_ZLfV<= zX_)l(A|Vq%{>PP%M$1Xi$^X=w2LzQDqva%J>uShvPmx|0fJzw9sjZ;%MzQs+LGd|S zPEzN-407WYQce;Vw}`p}y;Lk_a08#1?Z{BV06Gg8v<3$ESn^;b8x!Fc>o!fzKcYtrr5VMg{Fr0hx`fP5{*xpdEam-I<_~2heUE$a;S2nHkMs z06tj+H1+^mLpm738`K^F?G1ySgysl7fjtvEW(!(31=yJ#--6Kk)HSYSJL%w6 z)y3e`(@@heq@F|MYi7Og|F_Qn@&DPeAOAgW|M`Crob`+wIbzyEJh`}Tj!oA3X5c76X(t^NgQFJ~$PXyhaV zeCGw|)Za`7(0=%2a2uwW0n`FaLpco#w67eLH$gizK_fH7_|hwZu0+ zB{e>+!b%}CFS8^wF(dFFnB^wbc%=G zaRb>A0=n@Ka)t`5o*_P*K|6S1rxt=@4Aini-Kmc+Y)!F*?LehZ^25~><#ZzA!w#g6 zxUh4|EPE+LBR%-qeG6 zQaxx7KJHu&yHN)HEPF);5CrY?3CYh_$W6?vgx$`hkd#?cJiy@sx={yo5`Q8C^68+U zJQ~k{2(uFK-T=tW01#2osVe#4n`S_JaUk;~knsRWe+<1m1)U}iI&lnPDk4XNR>DGV z`U34<0u6QJGu#WXvQp1679Y z_(E1^LCRIgPN;z@w{X`5u(Ab|8$owIBr-&UPn6XI@6$*HkFUVO7IJz6XdfHs)Vgf& z=n!NM6m(8A=%y#gE@ja9!l3%Xl_3IDVN$VwMQS|=I?n^->J)|w2GHJJSpOGx!uCML z$EdqNc@}h*IC1$MQVP0*??wULS_LZqL2Y3}@R@j!ybelg0~epDcf&yPJgBumZmA9m z8_=2Jp!O1E^wl#jIll>NSr1fFf}KY-_aVw{P#Xo*hff8&0@U}#b>=(B1)!BI=?uXP zso)d$L8tNtf$tCl-B|=1p@p~|ze+=fSdeiv_fHD+>|Si=8G=eF>X%Qb;fc?FPym2R zBoId4tKkMd2L?2vj{hzy*tmNJ1M>Y+E?^()GT1SI&QbuWfs}oQAnOJ+yj{U38iHol zu=yBtdjRM}JkUv|pgamGV?8p{Gju^+d4=@UywoDdI12cl&w~8o;>@I+R0YsY&1Tsi zRp1`}V2ICrq?-dlZF|`K7$}ZGZDi0M8_-TBM9E_Ytu-ON1lXvF2LtHV-VEqzOrX<= z6~K3cf$lAYm;o7cfsC6#Mo=I%6llx}G*1H>O98bZLHG87&MNm{sG?avf%tR}Dm6g8 z8JPbEIv|FE(C+zs@GXCcb50;7 z0phF^&}tgc{Z$}6*he{C^7GV76iSOz6_WE4i;59fgcT$fCFZ74r50zVlqTjVB5w1E5)UN=Q4UjuYAvG5< zYC$O&bgM67}CZ9$cdz&(i$}C18Nh2 zVhD6scRoW7xJ-wYx1hEfNIxiUL1k?ULn(M2tOEFqD$p1&=v+P6*bJns2AKmJRi(u^ z2(n*5p^*kYa~4~E#uxq&A3@Ia1)VSmI->_v-+=COO9bCd3~Akg&NoA}PAsT?4+gIG zDZcg;G3f+0-eAaJ3(HZf$}t~fEbAO}>er4^+XmZs(dU-gTM`KDz}J zvY?hHOq_`jK~QL;Pc-g=Rm|WK>E6n zdLGgHqkTC=ihDsNC#3HR$~B;z3`)br43N@Gm%$FYQUG+O94M`V>QGQ`7Wv*7*sTbl z9v;ZN!4w}L_Y8Ocfnp82A38~x;Td*-)YT7^Y$37^oFZH1nQajL1*$Y zSHmbE-B1k*1yJ7*G+qw6xdU>`bqqru`0k34>hHmpA2J!-z-!Y$u?1PliAej16$!91 z7gUnr*8%B+Wit3MfL70yKu@edHgoWm3+@ad(3@~T{>uaRx6vv>kbx;i8O4}I> z&I}-bgW6DtIv8|AZz_0AE$Ey;(AXTL7J`**o(z!FEkXB(fpmjfQf>?(@DU>=hG2$r zaOfiJR{-C1o6nHT09u<1x^EHEdq#vjq(==}DFX^`&>BHd{DDRYK{*YSqw*La=?-+0 z9cbPOGF}R*TR~|FgsGpN5*a}EGh*v$(q>)>w|yZ0IWmCmcmb`@1&v97PE7`de-QX4 zHxHDv?LoU_K&z@jNrjx^WJa z9zgfDfof&Qs5q!>1+|%iOA89}i%L>c6hW@1P5&Pbq4+2OB_57300NN!1Nfn5Du|O>kP;7%nOJF^1Pzne2 zAYfyiFnLff43rZP@`&_KJ$HgqCTP_SqK5#p4_g@mb3e#km_7S!aNPu&9|7Gah&na^ zYFmQl-66eZ$OspCrh&o*RI-Ck3xkY&(jtEl7ar*QeIaK6fJX2Y7)%)q86czc1Lr=_ zycDSa2D!H#($|HhGmzUs_c?%CAP^bQT0YPYWLV5P!*7U&oJ48L06QJWjll_&U1-oQ zATHctE`*Fu8Gy&9Kz>E|1#$~3%&(~G4RNXmdx|FQcjEj7%KMk-?84o&hu_J!JQ$L!H2<-AqecHfhsRRH8yBh zG-w7Hvz!Lq6b@?_K;jE=b2e-rw?Bg?LonD^ZVa9bK4>>dfp+|WQY^Abpm8xwJ)m2b z!@&2JLrg{<+wuk9)$PgP%Mi-o%McF^HITbJ7!WNNa4-&7dWWS8#41TdN(c4TGQhnV zNXZLJ^PssNQ22w&V$eDQm|l=i1}Z(k@*$#R$zcHXIg=Uu7(l&MP)iyzwg9QaY2i-D zybQitj)4J`?;!WMg4T0_dV`=HEYS>^;5`MPmEEAa%ZUM$NfWDgot>8 zZ@2`pA-A4E_Qb$yEKn@ard}Y%e~=OUWQJ7mt%;zXKO}X;gHP~9_b;MVHBj+^SpR^W zsuA}UgW3b29rK8uo)Lp7189vOt-`sG0n`J4^u{5pghBZX(%u8j%vLZUT73)*i3~{$ z#o+sllNm}GKr<(K4AI~_^+2T;C@tlI*Be82i9L1`9rb0TQA1d=LDz_*+;Ft~!YbSq@$ zDWsL=LH2DImL}$v#G4evoA|}2Rd6xjR%2QaZ%RmwSwXy+U%V02BnAdQ_)e38(wySd zV$@5dsTYp0e1Zti3Y2j=P+#85vn|K%$_$1j3Ne2AK&G z1(gZdR3cP?YyqhP*+KpB0b>0RS!WNKwFcDz3Jk{3nhVpnpx6TW6f&+2@+k$qf!3QrTu+)l*e+iB#UE+z8$A93wK5RnrKqh?P~R6K0&1Cn?%M+OctNK^ zgVr@d+8>~{F=W*!C>2pZyh|C%Q0jX`d$|BSZv=54tmh4@g@&Iy3K<|bPeaxihGGTSZcXU)9@YB8#P|~wuAu%( z5Q7_d=LBfx5fl^g46qp+1%?!cd0L@0{queuwJo5lKO9eE(4q8bC8aWAI2w?DM2x0(@e}Z-#K-%=wu?&grO1x zq;^mM?`r|g0fE})u-u3_f&j@qkYWdPSd>CyPELL@c!Ri=LU|FWSW3&RNKH{lPRRys zengVzqFz0WFCBtPPe+KOQd68VONy-&R8tf}i&IlT?t$kB(2yNh~hTOv_9yqT+Zr@+>T5{TQhJ0rmbsYnV~%1WXv_CeAF$R28iJLudo&{cs!f-u*BTF#&ov0$|>c2$t` z3JD=$E8B~W}(E5Ct!3i2_j{)hMr)N{q}FNnI~=l{|82kiwO z`tc8&XUJtJW+(%K;&! z9n=bg^x8osKQ4Wc@eDTx&~9GPim-TwFz^X*AU z-aIHbgGTs4c^KjE?12GII9(7G4Ux)oydB4)Zkvw!{!pdE>h3?U4T3=9mA(*fWcH4*1H zW#%b_I7cY>`n$L)7;=Gvhic_6x#5EtPXq1XgvB&yL=m(T0aWfm>P01#69X{!T4Fn` z2{M8PnQ;M)r1>*|%ml5Bg`F0(m3k-Iu z2P}L*Z3bAlfNq-v)n>4@`-u$Y;Io85Ya2jgj-atRY@_`O;62F$l|Ml9+o1irpq*o& zHPE1u1kea7%!i;lFoVGfJnvKl-faWYfjo)@nn48l4b&?J$-ztm)=46c-UkiYurG-8>sjLg)*po1I>0J`l2vj zfkY7{6sVw~zB@rK0HqkvxgnrAMp)YoQR2epW{}He)bk6FPt*ae#s}@a2DR29b1tCW zwV-_g3gEd~NPZ(-KWHr<@?IhIJs+U`9U%wYGGz0ViS=|AZCHiZO#Lq2#P2HAS=p2>kdGBl#s^-vgTc2Hn~UnvI}Ec>@YjLr!0kk&?)ceDJ3J|2M1;rpF@4))qFmX_e4b&gEq`|z}$Z#*Vum#OoDu7F= z!4j@X3Hb>%N$wk|CENi2<^H8#K$A#{gOn08)q8T@4$P^ke|dT7-g6 zq5zo*8kGdK-$8v_YKH%C_aCI}1NB2d?b>+oX%3)yDMXBcLKCr$7vK3HkkLte=Y#k# zxIx$0Q!9TE>wZwm1dVnTGeAxt0PTc_tvZhepST7&i3T+C1={-#8R3SE0fN#iXygns z{!N)lpc!gVh|<&lh;bH>?_j-GNK1&G?g054G{OTKRYW}(2-I5#<#SN3huoKex)vN# z+7?0YVFHb`pv!~uK4@hVXsjPp4})k>Umj#1VnhjaQidY~=*9++TI}Z#fyM>#=>naC zK)v=6vFR7o8wHJrjOM?gm;XTNez3+Ls0|ESuM6wPAeZ}~T!1J$KH7Nky%43ZFfonS9XP9Hb@$g#>I&1?FE++Jl^;0+I#AD?Qu=vImxa(8n1O zGdz&m7tvCJoL34e@gTFDAXA1{d{Hx9z|ueH)^+4FT|n`SSe?TFKD8G#dk?CyK=lx0 zt{FLRAlEhl3_c8@44|{ZK|{Yd@TqyA+yiRK5vLN=dIQb=gW7{23~J|r&cYlBe}c|R2hAo!R$zf# zLA~;q)bIw?AE41+(0W4H+!`#VKw_Z25h$);XFWn{6Ijf^VgyuXK~_V6ZnAf00PWra zo%skG2}8EUh#?j{|4uzyK}C` z)Uv+>TFZgX?*^TJhO53SU7+`&1$li3&$?~Ap3!r)t=0jMi4BB<=#NfgJYGHy-IR&je@M8!DWlAcx zQ;79HC{5yXJ7oL@Rue!*Ziv$ZTPX|i7`@|_I5!SGe}PI4NPQp90P16f4Qt+NekSb6;j;;#XB*;E7*yu0y%4uTKBP`FM=fynmoKgk& z1{_$P1MPT)rA<%@qj&nk)pq2*a&Ph;Q zqL+!3mYnn~k6?KYJulL;+yt%o1>MM(0Y1G3)@McZRYCJUkQrVdh7yJXh5+zb38=^9 z$$;2130dQbPX)vb>aVXL{=Y0czKQT6xJ}A5=1+x*xPArGg<1Uf)9MYS5Z@ zP&*LBgPbypIF%f7N;#-i=>(oNOab3ylmZ@MiDigpz#ST(`88NgO|A4sC>%!Pad^Zd zXaz20Y(kg8m;tnI4KxZ&z4qR4Pe-6}X3RMq$Sod_QEAZ49iE`3DHzi$e?t2Gpk68R zX>gF1au@^XE)LL5XrPn6AayrB_3jL=44|>YAO=qcXRt4*mp(xDqV8h{?LPwTApzA1 zsN)qNt3e}Tpnf@exI=sflSMyU6x7=>1)pqA-S7vEe#6GOAz_VK<1v8m!zcic7i5Fa z(WS-sB_y9w;vPd#@KSA_ffVXk2`Gb$4qvKc_ouVrEWi z3h0p6{DRaxh0MHy(h`O8#4?4n%$!s!1=V6M1_r(I#4@n@5(Wkx1_%c8lNcCOixpHe zAk(vm`!Y&0QWb*SP_JDD8>pucl95`J3b~(Ep`a+gAhifhSx#nNsvZ}EhbIGrk3aN& z4J!rDyyX0%qSWLP1vgh`h0MH^%;dz9{33ZM~ znCd9x7b%$QDS#{kg(oarxD-6|$`W%jA;&?M6s0ES>M4YSPp)(~v^0tjj`VYm5BCpp z;Zk7WQV1wY%}p#RElO2L%}W8@`k9uQld7YToR|l?#~{;`@lygr^4=;DM%~=t3py> zrBGB-5CCx;D3WYdOBM1!=Z)H`f^!|wZi89~3d`~&P%5Roeu3Rh6vL3tV8~#}UJl6(bFNmg0_KK`{BTrhw) z_fuiM3*p~fhD`7c(x6kg@}aQ;IR^-`p8z(?37YeP^nFmpK_eT;wRISHzboj*U(j3w z=-gP)K6%j1K%mw(Xr3Q5)}s%;SqpR?0_dzg$od%2UV6}3viS^AD4@pQaEhK=-JD zLI%{jE@8+4pEM3yR}Bg!(8^}e9wN{T7iiWMaeq4~j}U|Xo;mC$Mjb9S8zuL|P>kS~3WhL20VV~An+PgI zQvlM(geFFad!%C$-2X6t@-Q$ka4;}1fcOWRA@U$|U}1pH2JvCI;O-n46HHUe2OGk` z!0_WS!d!>8NelQZ|VYqQ`4tRV6+1=<0L4HIQYhd8w0%uZW!6D3M zBmkJu05cT8ybKB-P#QSYF$tU=Knub+QFU{G*KXjpheWE4bx zxR5xLfdIsZIFkXHr7*$+13=Dy{;%+H0#NW!g1zEd_q@1Dg@{M~Beljo^)gX%*)1_lNY{`dd?e*@7Ha6JxUBfEpreg|koESDjM0kYmMpP_&O zbfXt!#Xo3fY1I6DhSBhW^o5-mK(s#t^0_g?J^i?3mSq-$hKwK=?3N`K8QQ9*C@7RA z78!vUnR$>B>;M1%^$qn6_3VEb>sJ)D)YUy;uiNC*Q(HMruvXya^qPb0@-+|Tmsg*W zGpK&WxT|XYF_)@oSr;l*UdL2EcYRd>1`X^L{n69Qi`X^FZ#C{L>p9_F7IgDoDdVQ1 z($WC-(*8|zN^Gwgl@#tgS*#M3SRAqKXOZZcNk!Q+b&3jQju*NFCl#{W{402JWmW;7 zj77mN{%iSa>q_#ceHG3RezG}lO+`rF_YGfj`?{y+US_k()mFTl!+5hH=eUk)&L^o; z+5Z;iXJ;P}&E8kCC#!L9a+b?X?yT8tTQX%?Vly)*uw}}x+K}C#D`=UqrllxR!jWVT6s75gcHO=D#O2r#lqBzzIS5brv* zBc8R^G2Y|cuQ=t7Eph8s=EboZX~wxJJc*r9JU^C0J398Ft9Y#F;ma|97fy)T_Ru$` zppiQ!y5VH>+Pm%1vu3zOM{i(_)>1hd<@&iL>XnRZRMZ02s2erMB3Eu~j})=6<(8wa?b#y*?Vf{XWTe6Ma}xOng==u={)y zy5-$&wbq+)dV@EMMu@lBTXk>CXTQC+2wm{Bket|q&0ld^ID&@JN5sQK1y{>P(kEl=mUrL$DHG5H0$@g34~b4y@xOVPOJ zsw%a^)!B5CYi(tYYyUGhSBn}&R}-s0E-nh!UDWk9xy()ObxAvr;Q|6b-pRW-ANcM3 zYWsEP^;b7Lhe=LwUeuK193klGYx4 z896Do2skaPdFQA(yV4!+$GbTisH-|U3a~idlX~oM#qE&8$H@yF zSeP0eZca#W009mG1qbTalZdmgAhj_A1LOu*&}=KHW@Z2bde{p(|0x&kre}KC3tGDc zvKKP{j(k=VWVJJ7G!Ui=GKK{i4WxWr4YOXuj1N!*z--5KBV=t3#61cO_}mIIhaTaH zJuE@C(q1E>Upq(FLvGsr$j%p%t0gGLQNvv82mrcZbeW_N&Ay3;#6 zK>1vQ0klK3gaKqXC_O@Ujw8fCVFp^w4vH^x1~UfGJrs~RKVo!3S~;MV$3_eg-5@(b zm>%g4WDm$sAon9u9xS9mH7fdU5X6WDqV)zkPaHHqnadCazF{qs0d#jS=tgzWY2%Rk z7PS79aCZZI_OQ6Z*IvA_WX|e+rb2L8&ztyaoZ1r!adruw1FYkjnr% z%?rCakXaxc`S1UK5WS3%fx(xVf#EX?1H()<1_pZ$28Jh`3=Eyz3=F!w3=9|f7#KrlmVtp)o`GSW0t17o5(C3&Wd??L zRR)HSY77ib8Vn4AS_};Hv>6yQbr~2o>oG7`889&HH)LRNGG<^nY{J0cWX8a-&zyn5 z!jgeuy%ht4iVXw9G+PD+HhTt!Vh09>yN(PDF3t=LD_j^DxZD^RGTa#$4tp>#NP96b z6nHZ*9P(jc5b$GQi1ue-SRBB>@H~)#K_i%fAvJ`7VO}T$!<8@w2DS(W29rnzhWIE3 zhSq2Xh7~ak498;`7#_wkF#L#TVBkt*V30^+U{FeCV9-cmV9-isU{FtEU{FYBU=Yb* zU|`8)V0fR&z;G>#fni5B1H-f&28R4x1_tLm1_t4L28O%&3=E447#LCu85k6c7#MC8 zF)(x&GcZ_`FfcqUVPI$}WnfS)V_?`*#=sCz&cN`XoPi;$f`Q?E1p`A~B?H6DN(P3w zDh7sgRSXQ4)eH>ts~H&nS2Hj~)i5xuuVG+dsAXXAu4Q1DP|Lt@p_YMxyN-dup^kx} zppJoIb{zx5fjS0;2Xzb#zv>tm`0E)M)p~bTvT0HL% zW?+bf#`AP&JYR&yGaEFX&5+{xlNtjEoeMj8!#{&Fl1nGHfCTr zf)>vkpz%B%OFXYcisvI93=A?}3=DKGUt>lhdc zq49hWEuQ6}@$Bmu?5L1enwykb1X^QRQk0liT##Q>q5xe}RIHF&S`1$PXb4``37es! zRy~Y-zDgpvmkilA0XjDlc`Y{Ro@US*xnKrI1_cJlYPuxwemeyQ&~A3ndMePZ5TFwk zK)1RTfmc(Zt|FTdp{fiF3^EC6X<`djtr7ysH?-A) zXY?B?o8aqFU}9h!Km=do(g*Kl85tgzMX>YDCl%Yo$Np9)b)EYL}L3l$EiTCEoo1v4??y!DH^y4V9713~tI%0XIy3 zh2B+TXxMGNEI?nEL)Lud|M1(43=QA6E-iRi#?ladGqS$So1uZTXL&7`UbX! zootZ{K39HWL)z7+9IP8b0cWABeyIF3u{NvEi}M8U>zX;xPwXK}E?kIm2DFq~s*sQtdF;UtIRhb51HrWa0TXgI06f?-)TKST6{poaCoo|@#^ zF*A6uZ*5qlraZ&t+mBZ%+Zh_TCa++qn;_8OkrjBL#q)_o^)_Y(74z*5-nyy{BEP@) zPJF1NRa^h6jcL3jY^8(qJ`XX_()-lc7Lbz2MfTZ#x|L85zD8u1qlBCe+aU z+>c=~3GB4VM>qF*L{DF*se#cEIn_VFs?_x*swVJ}t0dV`6A%Slv+nUaaAfkY~g0 zm$wc$$gwwUT6nA>TvOlRtMbPT_jta7iJ^S`8iu`$k`3M`Tpa=wZ#3AJaU2k?Inz))!O+2E>bsKFEX)ks1J*M9 zWS44K!{c(G=lr#X2yIRWi{|qV$0i#wd~L01;6TgJsOVfWRB2WBP-%rjmE zs5`SXe2H4WK#xzhfxq4Ez$1;z3yO2N4{UyMJSs6~u-3VG8qoV73PK z>`e|y-xM6!>&+aV@}GZjX)~V#*S)6>{69<^K3sgfVa`johG4tR492e%4@^ihap2KE zx1oFjKZC5|%Z9rzO%pt79(h!?vp38V-@*`gTdCoSjnRRr7B)w@6-D&#Z zi`K&hGj%u`&VJj{aN(r#foeVj2Fp2T6t0H|HssEK-|#Wjl!5R5{e}lOI2vx>-s(`b zRi(k`hAzY2SEmoK*$7SOzV@kM&j%BSH8bxC==X3oY&f>uaS4^D$G$fofI*|SQ)`LaoxEVB8?rb>eropgg zuZn~8$&(4CpGCjE@%?|`+Xcgh6Sr;(1kB-SNM5z8Ax~NJfPI$If!SFnA9OwwTeI4O z=|Is=gNA2EZ#Zxi@G`J&+}&{RkEVmVutI}^?8yYV+u|3d8?rX6YSurncklHN9iDs* zzxM2L;JmDLKys(7!;uFk7CgTo;qZcuqoLnGufgWJBYj}j z))NXdj!OpII>vQC;h>I#|Mja42Y3V;`kw4#@GRA75dSaHuzvQ5hR6G)91i94Hk6ua zAGq@Cio^A<0*nj{2N-M}bra?-5Od&~e8Qo6n=}IhgFwUfiJA>d^sX!@e=K+)PvKz0 zN=`ioRVNXUISj(mi4Rb9x6-p9q57lMuI5_CVnU z5r;qjR2>{oU0U$$l<oz6J|K^>{(yqi|!Qe8O2BNrxU`C5Qj(FD_s_All$}=_tc}Hp2;ju5mTY%sSbS z)25K%pd;O&%AnBT)3_Qtx9o%Ow`31|dvZac zVZV68Rksrdj^r5~=rCae#ruI%SxO4BC*&SXTPn@aKJUT;{zDQCE80&UxGrP-VbLpQ zQ2Jr`9jVOFpQNC$C{dE3DEETGv!jv>d(WIY@cx+brT%4%pmf-9#!aQ6=cb~=9szL& z>7WY@{imcFzKNb`_>*Junk(}^I6c2NP;Cg+QFfTKMdZLep9=>joR?;>O+I_zGoR^% zgGPTr`GP@SLao6!O69?4KOqN}xC;qIS7aDUww!A?zQ%My2Fq_y{&Eofqvr57Nj0GD zAwR?M)(Z!=-;ix+;k>|*?Phjj^}QdUe0re%j(WohS2YIVJYI&-BNrH+-j;I+PP%yD z%5Ad;CWpR(^1Fk|P7Q|1OzH{=-?$h~N?v?WcUQjQ(7sCzUvtb8Hm?5yDmNH*PSkV| zovF@XQ^Ubv)OPUz%UuPAJ#tqVj{Y=1aB%r2Q2E2~CsoVAl2cC9N4}8X2T~2s{@h$UV+MIhn;P@4h%jT48g{K8ti{vX((8wdSJW$ZHM-9s|6EG zUV_T`19Khq7*_pL=XiVmCxhm@s|S21t2sKBU3 zzBBCke(k{aGIa(6iF*#e!>kW*oO#O7Qh&4I@>2bV`QOwSW@vmp&@Fa@!74<W6@B9~eGPyw$Mpx8{MojzuQr`(hq?zg^icou!PA-zqTVNU1M0}>{-4Lc+6 zIV@s)=peMgsNo@}l7eE_D~FwT?lC;J*Le`h`}}}^tF1!}|J?`w7CdtJXl8ui$vOoG z&&4kk)bk%WeEy)5z%}_r!>)_A4PUO^PH6Rf;!wTK_<^#y{DZBRo;^qtdemS$QXk#Vq#eVf4YwRN{CawzL(e3EVTtU4&5}vKzTi>A8;{$^@ zyM4p4Yu6r#ald7dJ!qQnHCe2I$@2b!tqQLhT!Re^!mod1@HDe`@DaSm5P$z2!)`&d z1e!5bPK)^fwb3<=}y~F4Ds|Nped~i^XGE;czA;hrn)18J_qVF9H zl?)lIe|%wh&}!fC_0W|CiPJwdSj{qPIHx4QVEFfT!6mtm4#t&+32a^89PF3bA84|= zvfxwY7lwBi%>>T9<2~?0?RLU>{m%`*j~F`i%lv3qe$c+*=&{QSWD>qH=rfvsIKPhj zz`BB43y!*fWk_N*nz42LPX_TD_6HuOUp8>}{L%1Q-TcGR6wU+JZ`}--l=}UEvz5`0 zNax=Nx?kEme3iX?;-<+j2T3<`ht)#t2kxZa?BMVC+0dA5^d{!|9|zWN_6`y+FKw_= z`s1)J+T5dV7Yl=+(9H$H>wY(|HyXW~m;LWR<6rxR$di|nE(rWPusFl~ic=g@!^ZnJ zWQwo-bvQQ3Xdh%FgT2GyeV5k%|Np7 zVPYUQ2p_0pI-q25ilL$ThkePdh5!8cm>C#;@Euqn_@42%*3bWCJPZs6esLZU3!K7u zK=6^hiK5G2KMNj)hHKUbrrf#1thw>Y|CPxM3=Sn?2Nnd!F&$X9$KJu=`ET25X$FS+ zwgVrePOy3{I`m&QfRTaWrTT#eWew(rtPXpFHQm2nT{K{D*!}Lnf|~X0&m|}Szb?(p z&=6sFpk@0<<^zGQ_7cYoe@2@5FdXnHIT&zmBIk7Lu>WoXYzz$tA`f)@*~N08^0S=* z!>#Wt=I1gTxF&W;;bbm%yE)JQJEdF<3<^~T6dpITHvF4pci>3Nw<6}L3=QwE9{OPD z#5=)#>%Wha1sEEN<{vl_<-^ACTiGt5-sr1e=phCM@r{Q+T;kE>>{Bc0w&~5euAEaz2RLuBf z(W%GCV88RI16P|+!pYRXN?-LE7+7@=E||E8%dbo@YfF(!Kxe2nb?mc)j>wf{Y%Q zLz0TM!m*3*dba##Y^ZBL$#5%LJmKov-|S8q3$ze*z8HIhGQWs)FemR_; z$8can)ggu8N*;#`TPzrytzS2|{bFK})jD@TeYy0C_L)B!&+TVmcz*iO1w(7z17@eq z5A=z?N?8)g>|pueJVWd!nHxOUe(*kj!ocuE@o)m?AKn8-SIrpKe|zyjcpr1asg)NS z+O*_ev~m6LaN%QYm|t`Fz=_>_3?i3J8yN0CpHQOC!myzAa>ETj`Gy(h-#hqi7#oD| z96pd##m}IA)I{O>xo0PqO=UUIUUc=qoH&Js=ds`T3i22kEF6v;IA$(z;P7hW2c5^B zaI+*8QcTkB`yr5L~bwbBd#s-#^M;e}g7HDv2H)_Z}_Qc~;J?nv#s+$a#Y?T6j z&-k*T;vr*0k=W6OZR-RNdpIC1WA#^K+r47(@YW)SC5KA^t-vqp>(6GKJEQ3jO^ zAqICjgN9G{A2D36W;<|g+uerJ!^#G!2S3SpWiUDL{y*BFq#)cd>6TuC!LNq`zy7l| zggw1~pf*`Wq42`TfUwO>4jNU*8Wvp>Zm{pwbvP^g(1Ndnz2UUXBZu>^RSE>|et6N( z%zR+~&tng!b&E7?Hq%ky@_rETOqiqLX!Mf<@-eChSYEu(VTxpSI9YrAzy~|ghM4PG z4!TYE8$uUzB%EFFtU-T^YJ$Y4cO_dkGas;GJE5@XgDAuDd`*VJ!}k*O%{Ub@U%ha+ z@L9D%_|Myh6~ZhHT$4{U%v&JVz`&re>}Ay(ND5L`?unO(v`O#1Um8rq-TF&kU6CKK-A-9N0TEP1M}q54y<1# z5A4fQIPg{bw!rBpJPr99zd2avt2Qtuz3A{cz~&%ed1k@FnNkcUSLGT$?!46y)x~>Y z*T)|RCb6h4@N0a&=889O(luf86}=;TGSG!sx#TVqPjU@LYbnAUKlafUWa6hAUMv4Hte% z9#CF&b3vpaK^@bM}Wbeu;Xh#Y+ggn3D zFwaV8$Ju%82Qrt+CuA8snh+ex-4OQe;)4_U@(I`12p(X#dLyCwrO*Sn22O_XKDmbG zDGwD?|8X-M-gn7?fdRBoT;Ratb2k$DW(Yg@2XHrBNs&!ZWO=Bdvy6vfd)MUyJ9-rs zXaw_t%xPHYF7n_aFK@y@O_>Lm>K`O%1oAd0M_p-nA)(lCWf>31Jqzl-i8LJF&eyqE_CWKj;DIU$35PC+`xkT)`5PwQxz=!Qm6C{}*Gp zU?$A4bAgyc@5g%z_M!p~<~y%Dpo{@#N1je-q#s&5`hR8g7n;|LQd{VeeP zFOlH?Ow6J6lb}Oc%sq!}OCg6{iMJS5%u%^>T8j~s4igS7lVqrPFYe&(FW{i)d5>Yw zMUhir#CumY}BL^Ys^l@3A`vR_n_+hzLkO5UuBQcsBFi0>Mk74D&eeJJg<1 zTcB9}6O`W_Hk_7Wm^@Y5A>#l$L-4hG4Hg|@4gde&XOJ;e&tPEq0V+2ZTuqS$jj?7h zFt9oNR=Usd+(vxC!ygYC)=p9X5INx+sQgiQ`%89#x4+B-IeQj|d-eAjj=dK@p!?-v zgT_~Ng~b|QLFJgj@m{$D70ogQ-1STi@7~;Zs97M9aPi|KhPEIL0iTnfLFFNXxvadx zoH;VnI1Vx}h-E!Eu+dL4Vb{mU4Exq-G#n`U1S(e@_*TjvcrZ)GAdKz*0^{!w9`OB= zOt|#<$$?YMngzM4A3^1FgOZ`bg62Az2WA0(8KkB>WUyHzwSeu%Q->wtnh84}z6X`_ z2RyebI9zd;`SE!E?*o$@9zA&CCe7gd?^%P(3QY#C74Jax#eoP@MFq3((hH`3`*|Sd z&!dFR&!riP*j_X&{i@k;pyKU<%wta)v^FX(knfegQ5*WhLHqdQ1tBdm3Jn4;9S+!Q zDcFR(dC+<6sl!waB?SpC=>;eDep|3&!IK9SGO`E4WnMWfc0%4RDi z?8=jxFx%j(Ls`eu1!vdGCOpx6&A@+3E8&gKD^PvPu!2*WVbgBO0^#+aA86D)W8k!t zJ0M{BhQXXm+u^L%%ZByeUL4>kR%Y1qQDT9c)h7qP#^(#}9g}l7;raFei@WxMlO``5 z`b1wbR9shnutZS8!2a@w2U!zeG_ZNeGklGH$57Ou?V#`d{D717YlmxQDh-}8;tKz( z-Z%VO`?A66xO_rW{(FY%ZQ2jq^PVXbrN41tov89)nvfVnozc4mdDmV!SlKBsM74Zq zkbbGn5I*nefxR=|I=pA++rwE*d>{0(a^y-?U``;peGHt}hG< z`;;WSjejsadZp9AnEPoZ-N2%%dthq$1BI2{zYcgYs8{4IVO#K*?dgN1uYNXYwJ2+} zFZ<&VW2oy8;QYYD@%irq3q{o>!WdW?+_pUVA(Z=@A!MPlfa#IH4SH6(4DV$hL@2oY zZFr)hzTs0ia{_DSlZJmE|2UXzQ|{t_^zT5Wy>3Dc`-4L_7yfhL(^LPkVGZMfw9qH( zrd0fEIB-b$(*OVeL1SbL3=9vB|NsC0fQ+F!=pZGBR?jB~{{R2)@cx)`XkKw?K|y{| zNotBhabj*kPAd55F7TF2>d!}kX2L+H$l;zR4h5gsU&?@bLIh~;6Lg*i=ni<$*;=64 zV$j(UpqXV_%=hAVCt}{Ogdv}y1bmiAJOlFiVvzOLh!bK!E9pQdhCx>Nldj*0!Gr;H zN*QdA0O=-xR=`nef-yrj1E>Q`?{txcw00FV8A)&ZK`SFuP}Wy5Fytnd6lGQ@q-5r% z=7Eok0v&7x&r0CzL-Dzb$qbP7X^7aypDsbU0krPCgaLF5BxrRXXjMTj1LPEzOon_0 z&`H_2&tU=S2aR3OJA6Sm;DT0lz*b@pwEf6&3*Og>7Ps_vA1GdM#Vcq9>R^r6GH}TV zS{(x0c>zjY^e?Yz5nrIy8<1KIcC!rTxwfe5fr~8PMHF&4+5on7#p<42XyKZ zXk8OTEDe0VR0jCeaLB1jp!GoLE1*DYfj}vsgaK4Wq(av~`4@qXrAy39L0TLJUlNv* z4?bWDbZA#CE3QFaq#sNsrK&4Yq$fL#sD4l_BV*$w^#|i$JAWkJ{^*ksB2TyE4 zk6+ABLoA#`De*z4KnCO_<|P&>1Uos7y!-;W)qqgh1j`kmb!6zRcTfvTfgyk)2V9kH!3iouJTS~P+)+xoHH3fu?C4P&`-=MM7S!(s#c(16w%iG-2S6vzL)w|~;P^wFTL9XJ1=$UNO%3E6c@yvoYed-; z&QJvIou}hyiRLpTF=T;vB9<_K`T>ZX3_5MekpXnmY%qf_gC33YF=(7Cp8<3qDsn01 z2OpP#`2=-ExgWHB4l2h$dmE`APuSfB8Y7}+dm6hf3=Dx_|0DXg)bbxL`_dRdH&qma zdqt?bXh1z28wLdiP%oq$EN=u3dt>nKLC}5AAh&|zU^s>g$ZvKGgE<}y8B7@z7>0X1 zpr%PkNtXjYxf?Y00V^X=RYBrSmjR)UdgDX5@)5n$ix%{@AlND8^eUfH87deG7(k^j zsB8d@v4Co&shUi^DdP1Ondl5rA18D9IG@FpmP|A?b zkih`y8Br^oFwf72#2I9y2qp_lS0F!uLXCRq2WA6k{sh#<&V}AIFxc(qvZXlyABV2s z8Ri(Q;GCb5nyldD80;UQ;FMUL3cBEiive_D449juke{dE8U|CR;g*x12)@cDAU`v& zL{q`oJs?0KB-qGI&&0%7!7sl|!N5dE!N|bKPzPj*LRe}Mc+SPpNYBtj&p<(6!O&RG z&;Y_R(KCZEO!c60W_rfZ8xHmh*sx?W!-eIO z85-71W?1oYD#MPCQyI>DoXYU#<5UKPyHgor?oMTxad#@imAg|J1nx~`@VPgYq2u0E zh7I-8879m0?BYRE7Puseq_{D-F@!Kc?*0Jn&j#HO0@4GDAc!l$)d$@9AaPp88^~@*_(4i{L`jV~ z?y3ZG42{DNRG$uoa7arlQOGPtjVo{^Pvh_b#TO*qp^tcA#urE}D9S)?g@!3sC(|;0 zf$Rsl1LkJbw1zrTh06!d`FUxX>7_-9m5GQ;^@i{#1O>b z&k)1_I;RAiX^1vIXhj03-h=cE5*d;iQW3K-%UKx+@u89=uYCo$wOL^H%P=)q?b z7#K(m!_n|V4L^E?2flKQ)HnoX9(uWZsN@5Bg+~#%@1F*qWe3e9KuTXwD1k6&4jwe0 zWXAw%cbmh@1JIeE72t7VYL5?RFcg5xb>!Nrn8A$!G!|0G02>Vh-KGmVg%;G31f?G8 z_2-KjDjD*?^QxH)pw%p>?tsW;Gl1sNKFVm7TPF*j8Kba!b^emSVyOjY-SMtCy7JvPYr3n*qlm|Ee1Za%Hd1-Ti7 zX=OgG%muj_glT0yt;_|v8H8zNKDEp(XGjIF@W}v=p@Qakkw-=tz^CJuF~l>ZGl2FS zfL7kZ$|`pTM+RR8P#en-Jm>1i5XOL5lb^>xSeF?C=-zTq29Qp0rln&46Q938^V5*} zfcoR6#SG;PNzhhcD%Kfu1_nq!60{Z=RNtVF1VQGCd>G;x5I5$6+?fpyB5K7uXvYX* zy#}Og1J#VB44Kf`InXQ=WSkrpRv-rqoc*BP7SyW`vH2gguB4nHn4y#*3A_dlG!p=d zCD3fD6GJ#dJcAE|KPV8Wm`<^|19ZkTsQ&`0uR-GqpgvjAFt!)8k`@%!{tTc|4A3cs zB@9mBamW(zt`ATgfN}~b2xyu9K&v*L86ayrV57Cp3_c7l3~mfg4Dk$p4E_x949*Px z44~WzD)}NnP6A_Ex@$CiV6&Jp4A}AuXzU%dh8W#fW{+0;`t0|;8idPmpXx0 z9%qB+QQa6I{Q*$RKN!4!4-~@14DsOkP0(5z(1;Y}W+BdY2Zajt%5j9RKrTjv|7f^i zPnQ|sHVI5lm%)w!RO*597ih*jj{&qkHV3?}4ze!65Ij3Z`}jg$34&fKL!TWwj->)i!2Js`J?UuwOI!~d_ZklP_Lx|yx&umL4g6b-V~Cy zAhAWg^gWt>;=y}aaIF_76h5HQCrA&-jlqS%nZb|2ogtnf47@WA(&7TO!d)5sAk_%f z=0}Ke7oQDK336o#LkUAAIQ7Hg7M62E7>pR=8H~XBCW0XXK8{74E)#}$29Pd#hC8TU zLwB7Tg93E!0ycjONxSrP7rL7uwX7$&EC-d5kdOw27AU+;Ku!Z=dZh!<%uhT6B9$sI zVCF6KGzxMcz1#;{O$wUFMz|0(`b5}`1LZ!@{26kXg2D=f>E#~K7#XOS4=UGTxf(OH zVEG&pv&f|-z1%ri^DAiOGiclsG!_i&<%7oCK&cMoX4LQn-Hrzvy@t$?(kuKx`>P=B zLWupKGzP--vL7`ZAf?)1O=qZXMXnVf?grHg)C#v;2GGvgOz3PoXxs=fe*{Wb`QWuN zkT?USD{7D9BF29pa~PQ88<5)yLH&93+8=pbAppDrD1^bEA%r24A%MXZy!!xDN0~DC zG6aK?8W>Y6+|b<(8-)RlIl#&>Ln^kv2djPbTJMbL4dsGcte`qJlL5g-q*?~>P7ZR{ zK_j0b2U(c_S-nc_^|hq>2iIA0X$+wA<3N2t?CZLb{o~{2s^FHHQv$kT4RrniC__*y zKOp=A+O-23%?8!#m^;Zq>v3`U#fQO-!Ic5jqC<>nBcEyjS_5v8?NOxw@<=#j&lAew zCREICr1-~zA)CR2p^8C)0p^2n@VqFgjR>j%Ks?aO zP0-pe&}a#0e>$j5;|reS1NBcJGku^F5BwNh7=ppQLKEm1IC5S{&PYwFR47W!EkNC% zLH+!IKOXSq2hf>KsSHUBpgW8qxx4_!?hX2NP>UI}i~`L)LiTqmF@V;RLQ)%O{WtoFDxh7^ zkh4k5z%>rU#newf_}vRSLj%-ig5)F6c#{Hnwh(lZm<(pxLyOD1qV9C2(;e> zG@=RGbBov|1UfmQlmR3T%0(bw(IUN&?l1i5#t6KN8Ip1g8BCyQXK=)aBSR2)RaiXu zTpiGAdPuqf3tZdX}uwwxAib3H5T7O;)J|88RA%p?66UG(1$_e5>(3&SF1{VgJ(AO=^4UpiEE2@gmUv3Q$iN zvIZg_yn6z9yaklba~MFa8PKQ(th5C6ks+ZCDKD|B0*zk~Rs}kjg0LzJaPI?BZ-Ih< zTKOL|Lr}y}09`!`+INz|0NKY2nu!9H@}O}V(7J2Ht_V;s1GM^KIJyJ0t^(9z0j;b6 z(da#4P%jX)TM*J?2aPR&cJ+bcznCEzeAYaqeS_eE;+A^(XQ;a`m!X&eG{z4)#UYi! z72IZsX2@cQrO`Qtgu-jExd*fh2sHYGNIxOq6Bj}GG?*ci0kpE5n)!}U_<(w3MGT-G zOEI_ypvwSR)d^b7hM2bo)j5z=dX^x^QL%g`3~`Zkg^23J3+lR z;%ql(0QKD6K=Arzu)S{fk0xGtb2*nSf`~&I%gIX7$la~s>C%NNxGd{oLV#ZOW1e_kz~BsCQ2-i;&SNNH2m#*? z3>s&E&FjKKiZ=V^5*a|Nv|uNsLsnZu=FuUg9%$AL;x<@m2pKoW6o;q>xzZPWrivqj zJNR@J&`b?zwiLAIGlao|s^uoA9f8gLpmG4>9!QIrTJej^KFrX7v`&2(P(#5Vyz`ZM zPNM?uuudM)yKxWWz@0-S+|L7f_q^4h=#B|v85}>8l znV?(MLDxj5rhu=mD#^$!hTOHDnU@Z}Z5>p|Qn4R`E8TZ5`734>1kiDw98Fapo~ zfn*^qF-&6O44*9o7>+v%Gdx==#*maH1u_zX z7YKp<5Ar+6-ylDO{0s6c$e$oTg8Wyqk&z*^myzK}9wWn~5JrZ(wu}r6T8s=85{wLw zIT#r}{bFE9dj~NRM1sNqyzL8T@jdM+<9DbC5?Gt8CkQeVgh62d@;}J$Ab*4W4Dv6?uONSd{0Q>j zZVhFIw57TXUpcH8epP!gaH~f$>@><@m~p(3!IEzlgMt252I1h#AR{4IL5P7tfRkYr z7aIdZ2MYtk0%nF#R%V9V)0h|-T$mX8n3)(DE-*4&T*}C>s)>=|O$sAJt~Vn?s3{`@ zgAyad2LVQgr$o%AKRHD-es~}dgaaP^IVth zz+--P>jxj%H{7|*p>=aB=hCawx#TWYa?dyy&BJ)wmbc-!JRjQ;M*i{xkNIEjIVzB_ zb2&U5!q^!YHd`?;$R1;0n0=Lz!FVb&!y5xOhBH?<8E&uPV~~3)!Z2s03`4Y<8beCE zA;az;b`0su{221~Brx1eD`i-Jv4`QK#&U*LGmbDk^mz($Dg+B~g8dKjJILQ4KZE=W z@+-)nAU}fq_u>)*L+C*UhO$iz4BM76Fsz!zz`!t(fuW*$Gq?sf^LY1LAU{q{0E9n5m? z8;;9guIyGkSmdt^G82SBVF2mJ4%N53;# z8<#Q_KW1em{#>jBz>2-=khT1^AnbqTt;2r_1ceC`9N-49yN35uQ3a00E7 zAskMFC0%4Ncrt)m-tG*L6A#dPnV>Wb!qj&!XzUcU@(44ng6xBw=L?#hN(HYJ1?_-` z^ld?V2_fU%pj~mG9ksA^{P7Gf489DY8@rsLvp)hoKaF+BPhg!gd#e%6!BQ_CkhI z@VVU}kt&8n1`rL}YYZBHE`je|O$VR$02+q|l>rstl{1utA@$P@$loCM4(;%B333im zAej1wX8Lns2x4#s-}Fk|H0R>#>_RBahGKeiVQ^(|W^iFpU?4xdsPAu3xeU64rx;uw zfld$to%4ZQCV@&wP;Lb6iH5a4K>LY6JFW^C+!&Ie`xiiaLqTICMbKMOK)3cl%6G(h zI>jKvXfmz=TAu>i%Z+`7D`L&R8-qWCBlvy}4+cjDKL$SrR|X&O8Um2hs2{%g-33~$ zsRdqB11X0=y9q(z3TiupMu;HoXG~R)kt2{e=)^-^q!V2sd+zA%k4*4>c~E_V@WDWY zC&&emkOb|W0gX%RGJrbnD!YeD`5wX9%$8;}^RRRQUNF@R6A zholwI3SjEhGa$Q0?N5cSsZVC8Kx@^}I{Xps%wq8RE^IyiJO;=OE-B!9Iv}lT%+-Vp z44FAOsp*M13Xonclt5oDHaM1NC7+=2O31 zK<&2|Fo15d1f7Zl+kpYfIjDVhkULOMuqa>%fa^n?Mo|o|XOUwSH2VO`*PxjQkSVl@ zA4r`JIWLD8|A2f58jpglQw?Eo2KUxLdyygcVu4og(aOD`bF@Ia^+B${3}?_eW}rR& zAQhlg1nC{Y)^I{rvw~_4NWF_+HE6}O6N4xCRDDPAsW_k>DyT&q&j32#Dulrkd`1q4 z4O*+{N|SaEZvTRMkR{-pfba(_PC#RkpctT5`iJaZh3u_CyfEFh;l%Rh+u+ zg58@5I#(1_ro(c14g+dB2xQ1(0JTX$bq1(S2y>+cB)F+|9}K8J1Y6gEa0{r-4~bon z-JsqT$Q_`z8E6MIBvuFay{O3kf~8?Z&kEu<&{`&lUqEZ3Ve3?oMX8^kh;bLlR%(@N z$o9e7*`W3Ws7+D~J%t2PvlF+MhQ96stuZCMhXj-*=<6;}{vd8I3ANmX+}=cP&miVi zP}^;=yo{(>K%v9{UQ2@6et`9P5iJMQv!)RBFKF!uY)lr^dJAR%ohb}yGoZI6KQxmm!g%f&uydOVAtzq)#2f0NK9>xi18C3SuY& zXs?PtgB$o>W={rCIsly^2D=$xp!@;zAEGw_JKGMlmn##+f3XaD;B#(3Es_!jAMof@ zDuWyNoIcRVB`9{2!Se^87O(+>9)l@E8iN7@Xsr|WG()|139j^t-Co!zr6mJwr!*ur z(cV3vkvUv$!k!~W^Uui4Ke$o}=ssP@UFM)POY3q2mn$IU+`#1@&>idO>lZ-fFRa}O zsv}@6PgtJAug4gCrYa~*L73LzN}QWO?FLY73hCt$r-#1&fXttO&U_CC&rYW>fZF^Z zH-lUYTN#oMy+azZD>n&z`V%CEK&csB6|zYXRgk$0dc_O!oH}IW2eVa!tOiuuf$|CD zR5OT+A>%}#FhG{UWg4;?NX{~Xj!eLOPLK46>?d3Vs~-ib$wt%9X!-%&Xf>LCVB>n2?Ly={GFtxzGmyIf8(;YYIyV8-{sFD9 z#?^j6Rs(6Lp^wG6F(5|Y;u-uIf*3&S?}DJcKYFy|AZy?J8PecmXrPuD^5_quzXvLJ zv8#vlbTLyPatNTR0k!q$;Xh;-5FbyV`Et3)z zH<0|{!%)HiT2}(P!w9q<#S?s^8EAzX?4~q)Dj;Tn`ux;w$KrA~XhZ~Jr!PY(1L(~9 zOa{owDWKCHVJ^ll2hj)0Q4mu=<+C3{DMK!F4g<6c26C4ZXzUxdMhdhO335+mEJHK{ z?yvxz{0_=t)C~vN+#<-Q1t_;nFfjNqz{asbD;H>cufb4o2WZCOBe5-b_9k}x&D4ap1J+62FjlRHY43Ij=zA4bE9DF)Jrqa*-#HDGNFHlwE@(*%ephvj~ z3Nd=vL$7>2Y7c1tCH8Y%@Rf(u4!1%E(3vXv450ZV$a-DSu1QGC5wrsrc{ODT`1YB2 z@QuHq_HZEsXpLw&xJ3uLg|V0+i6Nc=bUsTuLk0t+rH2sDVF2x32et4Z=LQ)tR4^DY zID;W5byK%I7-)YvF@PX-{e`%f8MeLzwD$|t=K!sHEdZ}20iCak=%GODhm^~pI0c=N zSj+%vpM%!kV4mWHUY_SMI5L1%#U?UTG7z`+2y+z-`hIA1I|>+r89=*HQ^6~u2&+b( zM}nj!*cnuqCWBV=gF*;2I)JGb5Gxd+p3_oh@f4CAoZY;9#HxN%`OFi z!_AE$0@7Tg+WsO?ix|{41f9tM+LHj87ensxFo5sBh0H2ZFFc5`7c_SOYMs+!{FNB{ zK|P8JhHUWYxB>&@<~(Y(lZmk(G#U?C=?EI1S6~3`AT(z%V*u?jqo+GS>%<^)9-y8# zBmq*({xk+qpBS`bC7uDa{|l7zGQqpuLAe9A1BwCM>jv$)E(VXu27+fS zfl6J_4)PrMek54Rrd~LtF@S7IWhi5SrDD(-1E6)zklA!ljRq<0L9>XUy)6(P=sXY5 z>;foOs8`;CRve+b2V?`PDIgNkPzR+mTIMVCv - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 9578e488d..75b13f9bd 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 7a2aa8a7f..337fc98e2 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index 929dd72a8..b6a8a7dd3 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 2d06d29aa..60a24021f 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 86dcef905..7fe2ad96c 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0.17763.0 - - - - StaticLibrary - v141 - false - MultiByte - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0 + + + + StaticLibrary + v143 + false + MultiByte + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index e47858ae3..10abdb438 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0.17763.0 - - - StaticLibrary - v141 - false - MultiByte - - - - StaticLibrary - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0 + + + StaticLibrary + v143 + false + MultiByte + + + + StaticLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 86730b859..1cfb3e588 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0.17763.0 - - - - StaticLibrary - v141 - MultiByte - - - StaticLibrary - v141 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0 + + + + StaticLibrary + v143 + MultiByte + + + StaticLibrary + v143 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index 70a130e31..ecd8b04aa 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0.17763.0 - - - - Application - v141 - false - MultiByte - - - Application - v141 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0 + + + + Application + v143 + false + MultiByte + + + Application + v143 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/lib_com/options.h b/lib_com/options.h index 3ec71d78b..d235b80b9 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -95,7 +95,7 @@ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ diff --git a/lib_com/swb_tbe_com_fx.c.bak b/lib_com/swb_tbe_com_fx.c.bak new file mode 100644 index 000000000..fb68537c8 --- /dev/null +++ b/lib_com/swb_tbe_com_fx.c.bak @@ -0,0 +1,8216 @@ +/*==================================================================================== + EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 + ====================================================================================*/ + + +#include +#include "options.h" +#include "cnst.h" /* Common constants */ +#include "rom_com.h" /* Static table prototypes */ +#include "prot_fx.h" +#include "basop_util.h" +#include "ivas_prot_fx.h" +#include "options_warnings.h" + +#define POW_EXC16k_WHTND 1.14e11f /* power of random excitation, length 320 samples, uniform distribution */ +#define POW_EXC16k_WHTND_FX_INV_SQRT 6360 // Q31 +#define POW_EXC16k_WHTND_FX_INV_SQRT_IN_Q49 1667313793 // Q49 +#define POW_EXC16k_WHTND_FX 178125000 // Q-6 +#define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ +#define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ + +/*-----------------------------------------------------------------* + * Local function prototypes + *-----------------------------------------------------------------*/ + +static void create_random_vector_fx( Word16 output[], const Word16 length, Word16 seed[] ); +static void flip_spectrum_fx( const Word16 input[], Word16 output[], const Word16 length ); +static void Calc_st_filt_tbe( Word16 *apond2, Word16 *apond1, Word16 *parcor0, Word16 *sig_ltp_ptr, Word16 *mem_zero ); +static void Hilbert_transform_fx( Word32 tmp_R[], Word32 tmp_I[], Word32 *tmpi_R, Word32 *tmpi_I, const Word16 length, const Word16 HB_stage_id ); +static void Hilbert_transform_sp_fx( Word16 tmp_R[], Word16 tmp_I[], Word32 *tmpi_R, Word32 *tmpi_I, const Word16 length, const Word16 HB_stage_id ); +void Estimate_mix_factors_fx( const Word16 *shb_res, const Word16 Q_shb, const Word16 *exc16kWhtnd, const Word16 Q_bwe_exc, const Word16 *White_exc16k_frac, const Word16 Q_frac, const Word32 pow1, const Word16 Q_pow1, const Word32 pow22, const Word16 Q_pow22, Word16 *vf_modified, Word16 *vf_ind ); + +/*-------------------------------------------------------------------* + * swb_tbe_reset() + * + * Reset the SWB TBE encoder + *-------------------------------------------------------------------*/ + +void swb_tbe_reset_fx( + Word32 mem_csfilt[], + Word16 mem_genSHBexc_filt_down_shb[], + Word16 state_lpc_syn[], + Word16 syn_overlap[], + Word16 state_syn_shbexc[], + Word16 *tbe_demph, + Word16 *tbe_premph, + Word16 mem_stp_swb[], + Word16 *gain_prec_swb ) +{ + set32_fx( mem_csfilt, 0, 2 ); + set16_fx( mem_genSHBexc_filt_down_shb, 0, ( 2 * ALLPASSSECTIONS_STEEP + 1 ) ); + set16_fx( state_lpc_syn, 0, LPC_SHB_ORDER ); + + set16_fx( syn_overlap, 0, L_SHB_LAHEAD ); + set16_fx( state_syn_shbexc, 0, L_SHB_LAHEAD ); + + *tbe_demph = 0; + move16(); + *tbe_premph = 0; + move16(); + + set16_fx( mem_stp_swb, 0, LPC_SHB_ORDER ); + *gain_prec_swb = 16384; + move16(); /*Q14 = 1 */ + + return; +} + + +/*-------------------------------------------------------------------* + * swb_tbe_reset_synth() + * + * Reset the extra parameters needed for synthesis of the SWB TBE output + *-------------------------------------------------------------------*/ + +void swb_tbe_reset_synth_fx( + Word32 genSHBsynth_Hilbert_Mem[], + Word16 genSHBsynth_state_lsyn_filt_shb_local_fx[], + Word32 genSHBsynth_state_lsyn_filt_shb_local_fx_32[] ) +{ + + set32_fx( genSHBsynth_Hilbert_Mem, 0, HILBERT_MEM_SIZE ); + set16_fx( genSHBsynth_state_lsyn_filt_shb_local_fx, 0, 2 * ALLPASSSECTIONS_STEEP ); + + if ( genSHBsynth_state_lsyn_filt_shb_local_fx_32 != NULL ) + { + set32_fx( genSHBsynth_state_lsyn_filt_shb_local_fx_32, 0, 2 * ALLPASSSECTIONS_STEEP ); + } + + return; +} + + +/*-------------------------------------------------------------------* + * fb_tbe_reset_synth_fx() + * + * reset of FB TBE memories + *-------------------------------------------------------------------*/ + +void fb_tbe_reset_synth_fx( + Word32 fbbwe_hpf_mem_fx[][4], + Word16 fbbwe_hpf_mem_fx_Q[], + Word16 *prev_fbbwe_ratio_fx ) +{ + set32_fx( fbbwe_hpf_mem_fx[0], 0, 4 ); + set32_fx( fbbwe_hpf_mem_fx[1], 0, 4 ); + set32_fx( fbbwe_hpf_mem_fx[2], 0, 4 ); + set32_fx( fbbwe_hpf_mem_fx[3], 0, 4 ); + set16_fx( fbbwe_hpf_mem_fx_Q, 0, 4 ); + *prev_fbbwe_ratio_fx = 1; + move16(); /*should be set to 1.0f, scaling unknown */ + + return; +} + + +/*-------------------------------------------------------------------* + * tbe_celp_exc_offset() + * + * Compute tbe bwe celp excitation offset + *-------------------------------------------------------------------*/ + +Word16 tbe_celp_exc_offset( + const Word16 T0_fx, /* i : Integer pitch Q0 */ + const Word16 T0_frac_fx, /* i : Fractional part of the pitch Q1 */ + const Word16 L_frame /* i : frame lenght */ +) +{ + Word16 offset_fx, tmp_fx, tmp1_fx, tmp2_fx, tmp_fac; + tmp_fac = 320; + move16(); /*2.5 in Q7*/ + if ( EQ_16( L_frame, L_FRAME16k ) ) + { + tmp_fac = 256; + move16(); /*2.0 in Q7*/ + } + tmp_fx = extract_l( L_mult( T0_frac_fx, 32 ) ); /*Q8, 0.25 in Q7*/ + tmp_fx = add( 512, tmp_fx ); /*Q8; 2 in Q8*/ + tmp_fx = mult_r( tmp_fx, tmp_fac ); /*Q16->Q0; 2.5 in Q7 or 2.0 in Q7 */ + + tmp1_fx = sub( T0_fx, 2 ); /*Q0*/ + + tmp2_fx = shl( tmp1_fx, 1 ); /*Q0 */ + + IF( EQ_16( L_frame, L_FRAME ) ) + { + tmp2_fx = add( shl( tmp1_fx, 1 ), shr( tmp1_fx, 1 ) ); /*Q0; (5/2 = 2 + 1/2)*/ + } + + offset_fx = add( tmp_fx, tmp2_fx ); /*Q0*/ + + return offset_fx; +} + +/*-------------------------------------------------------------------* + * swb_tbe_celp_exc() + * + * Compute tbe bwe celp excitation + *-------------------------------------------------------------------*/ +void tbe_celp_exc( + const Word16 L_frame_fx, /* i : Frame lenght */ + const Word16 i_subfr_fx, /* i : sub frame */ + const Word16 T0_fx, /* i : Integer pitch Q0 */ + const Word16 T0_frac_fx, /* i : Fractional part of the pitch Q1 */ + Word16 *error_fx, /* i/o: Error Q5 */ + Word16 *bwe_exc_fx /* i/o: bandwitdh extension signal */ +) +{ + Word16 offset_fx, tmp_fx, i; + IF( EQ_16( L_frame_fx, L_FRAME ) ) + { + /*offset = T0 * HIBND_ACB_L_FAC + (int) ((float) T0_frac * 0.25f * HIBND_ACB_L_FAC + 2 * HIBND_ACB_L_FAC + 0.5f) - 2 * HIBND_ACB_L_FAC; + for (i=0; i 0 ) + { + tmp_fx = shr( *error_fx, 5 ); /*Q0*/ + } + ELSE + { + tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ + } + + FOR( i = 0; i < L_SUBFR * HIBND_ACB_L_FAC; i++ ) + { + bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC - offset_fx + tmp_fx]; // Qx + move16(); + } + tmp_fx = extract_l( L_mult( T0_frac_fx, 1 ) ); /*Q3; 0.25 in Q2*/ + tmp_fx = add( shl( T0_fx, 3 ), tmp_fx ); /*Q3*/ + tmp_fx = extract_l( L_mult( tmp_fx, 5 ) ); /*Q5, 2.5 in Q1*/ + tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*Q5*/ + *error_fx = add( *error_fx, tmp_fx ); /*Q5*/ + move16(); + } + ELSE + { + /* offset = T0*2.5 + (int) ((float) T0_frac * 0.25f*2.5 + 2*2.5 + 0.5f) - 2*2.5; - case above*/ + /* offset = T0*2 + (int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f) - 2*2; - case here*/ + + /*(int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f)*/ + offset_fx = tbe_celp_exc_offset( T0_fx, T0_frac_fx, L_frame_fx ); + IF( *error_fx > 0 ) + { + tmp_fx = shr( *error_fx, 5 ); /*Q0*/ + } + ELSE + { + tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ + } + + FOR( i = 0; i < L_SUBFR * 2; i++ ) + { + bwe_exc_fx[i + i_subfr_fx * 2] = bwe_exc_fx[i + i_subfr_fx * 2 - offset_fx + tmp_fx]; // Qx + move16(); + } + + /* error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac;*/ + tmp_fx = extract_l( L_mult( T0_frac_fx, 2 ) ); /*Q3; 0.5 in Q2*/ + tmp_fx = add( shl( T0_fx, 4 ), tmp_fx ); /* now tmp_fx = "T0_fx*2+ 0.5f*T0_frac_fx" in Q3*/ + tmp_fx = shl( tmp_fx, 2 ); /*now above tmp_fx in Q5*/ + tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*move offset_fx to Q5, tmp_fx in Q5, ans tmp_fx in Q5*/ + *error_fx = add( *error_fx, tmp_fx ); /*error_fx in Q5*/ + move16(); + } +} + +/*-------------------------------------------------------------------* + * swb_tbe_celp_exc_ivas() + * + * Compute tbe bwe celp excitation + *-------------------------------------------------------------------*/ +void tbe_celp_exc_ivas( + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 L_frame_fx, /* i : Frame lenght */ + const Word16 L_subfr, /* i : subframe length */ + const Word16 i_subfr_fx, /* i : sub frame */ + const Word16 T0_fx, /* i : Integer pitch Q0 */ + const Word16 T0_frac_fx, /* i : Fractional part of the pitch Q1 */ + Word16 *error_fx, /* i/o: Error Q5 */ + Word16 *bwe_exc_fx, /* i/o: bandwitdh extension signal Qx */ + const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ +) +{ + Word16 offset_fx, tmp_fx, i; + + test(); + test(); + IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) + { + return; + } + + IF( EQ_16( L_frame_fx, L_FRAME ) ) + { + /*offset = T0 * HIBND_ACB_L_FAC + (int) ((float) T0_frac * 0.25f * HIBND_ACB_L_FAC + 2 * HIBND_ACB_L_FAC + 0.5f) - 2 * HIBND_ACB_L_FAC; + for (i=0; i 0 ) + { + tmp_fx = shr( *error_fx, 5 ); /*Q0*/ + } + ELSE + { + tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ + } + + FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) + { + bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC - offset_fx + tmp_fx]; + move16(); + } + tmp_fx = extract_l( L_mult( T0_frac_fx, 1 ) ); /*Q3; 0.25 in Q2*/ + tmp_fx = add( shl( T0_fx, 3 ), tmp_fx ); /*Q3*/ + tmp_fx = extract_l( L_mult( tmp_fx, 5 ) ); /*Q5, 2.5 in Q1*/ + tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*Q5*/ + *error_fx = add( *error_fx, tmp_fx ); /*Q5*/ + move16(); + } + ELSE + { + /* offset = T0*2.5 + (int) ((float) T0_frac * 0.25f*2.5 + 2*2.5 + 0.5f) - 2*2.5; - case above*/ + /* offset = T0*2 + (int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f) - 2*2; - case here*/ + + /*(int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f)*/ + offset_fx = tbe_celp_exc_offset( T0_fx, T0_frac_fx, L_frame_fx ); + IF( *error_fx > 0 ) + { + tmp_fx = shr( *error_fx, 5 ); /*Q0*/ + } + ELSE + { + tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ + } + + FOR( i = 0; i < L_subfr * 2; i++ ) + { + bwe_exc_fx[i + i_subfr_fx * 2] = bwe_exc_fx[i + i_subfr_fx * 2 - offset_fx + tmp_fx]; + move16(); + } + + /* error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac;*/ + tmp_fx = extract_l( L_mult( T0_frac_fx, 2 ) ); /*Q3; 0.5 in Q2*/ + tmp_fx = add( shl( T0_fx, 4 ), tmp_fx ); /* now tmp_fx = "T0_fx*2+ 0.5f*T0_frac_fx" in Q3*/ + tmp_fx = shl( tmp_fx, 2 ); /*now above tmp_fx in Q5*/ + tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*move offset_fx to Q5, tmp_fx in Q5, ans tmp_fx in Q5*/ + *error_fx = add( *error_fx, tmp_fx ); /*error_fx in Q5*/ + move16(); + } +} + +/*===========================================================================*/ +/* FUNCTION : flip_and_downmix_generic_fx() */ +/*---------------------------------------------------------------------------*/ +/* PURPOSE :flips the spectrum and downmixes the signals, lpf if needed*/ +/*---------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS */ +/* _(Word16[]) input :input spectrum */ +/* _(Word16) length :length of spectra */ +/* _(Word16) ramp_flag :flag to indicate slow ramp need after switching */ +/* _(Word16[]) lpf_num :lpf numerator */ +/* _(Word16[]) lpf_den :lpf denominator */ +/*---------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _(Word16[])output : output spectrum */ +/*---------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _(Word32[9])mem1 : memory */ +/* _(Word32[8])mem2 : memory */ +/* _(Word32[8])mem3 : memory */ +/* _(Word16) dm_frequency_inHz :Downmix frequency in Hz */ +/* _(Word16*) phase_state :Phase state in case frequency isn't */ +/* multiple of 50 Hz */ +/*---------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*---------------------------------------------------------------------------*/ +void flip_and_downmix_generic_fx( + Word16 input[], /* i : input spectrum Qx*/ + Word16 output[], /* o : output spectrum Qx*/ + const Word16 length, /* i : length of spectra */ + Word32 mem1_ext[HILBERT_ORDER1], /* i/o: memory Qx+16*/ + Word32 mem2_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx+16*/ + Word32 mem3_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx+16*/ + Word16 *phase_state /* i/o: Phase state in case frequency isn't multiple of 50 Hz */ +) +{ + Word16 i, j; + Word16 tmp_16[L_FRAME32k + HILBERT_ORDER1]; + Word32 tmpi_R[L_FRAME32k]; + Word32 tmpi_I[L_FRAME32k]; + Word32 tmpi2_R[L_FRAME32k + HILBERT_ORDER2]; + Word32 tmpi2_I[L_FRAME32k + HILBERT_ORDER2]; + Word32 tmp_R[L_FRAME32k + HILBERT_ORDER2]; + Word32 tmp_I[L_FRAME32k + HILBERT_ORDER2]; + + /*Word16 s_tmp[L_FRAME32k];*/ + /*Word16 factor;*/ + Word16 period; + Word16 local_negsin_table17[17] = { 0, -11793, -22005, -29268, -32609, -31580, + -26319, -17530, -6393, 6393, 17530, 26319, + 31580, 32609, 29268, 22005, 11793 }; /* Q15 */ + Word16 local_cos_table17[17] = { 32767, 30571, 24279, 14732, 3212, -8739, + -19519, -27683, -32137, -32137, -27683, + -19519, -8739, 3212, 14732, 24279, 30571 }; /* Q15 */ + Word16 *local_negsin_table, *local_cos_table; + Word32 L_tmp; + + /* 1850 Hz downmix */ + period = 17; + move16(); + local_negsin_table = local_negsin_table17; + local_cos_table = local_cos_table17; + + + FOR( i = 0; i < length; i = i + 2 ) + { + input[i] = negate( input[i] ); + move16(); + } + + Copy( input, tmp_16 + HILBERT_ORDER1, length ); + + /*Copy32( mem1_ext, tmp_16, 5 ); */ + FOR( i = 0; i < HILBERT_ORDER1; i++ ) + { + tmp_16[i] = extract_h( mem1_ext[i] ); /* mem1_ext (Qx+16) tmp16 (Qx) */ + move16(); + } + + /* Hilber transform stage - 0 - single precision */ + Hilbert_transform_sp_fx( tmp_16, /* i: Real component of HB */ + tmp_16, /* i: Imag component of HB */ + tmpi_R, /* o: Real component of HB */ + tmpi_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 0 ); /* i: HB transform stage */ + + FOR( i = 0; i < HILBERT_ORDER1; i++ ) + { + mem1_ext[i] = L_deposit_h( tmp_16[i + length] ); /* mem1_ext (Qx+16) tmp16 (Qx) */ + move32(); + } + + Copy32( mem2_ext, tmpi2_R, HILBERT_ORDER2 ); + Copy32( mem3_ext, tmpi2_I, HILBERT_ORDER2 ); + + /* Hilber transform stage - 1 */ + Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ + tmpi_I, /* i: Imag component of HB */ + tmpi2_R, /* o: Real component of HB */ + tmpi2_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 1 ); /* i: HB transform stage */ + + Copy32( mem2_ext + HILBERT_ORDER2, tmp_R, HILBERT_ORDER2 ); + Copy32( mem3_ext + HILBERT_ORDER2, tmp_I, HILBERT_ORDER2 ); + + /* Hilber transform stage - 2 */ + Hilbert_transform_fx( tmpi2_R, /* i: Real component of HB */ + tmpi2_I, /* i: Imag component of HB */ + tmpi_R, /* o: Real component of HB */ + tmpi_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 2 ); /* i: HB transform stage */ + + Copy32( tmpi2_R + length, mem2_ext, HILBERT_ORDER2 ); + Copy32( tmpi2_I + length, mem3_ext, HILBERT_ORDER2 ); + + /* Hilber transform stage - 3 */ + Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ + tmpi_I, /* i: Imag component of HB */ + tmp_R, /* o: Real component of HB */ + tmp_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 3 ); /* i: HB transform stage */ + + Copy32( tmp_R + length, mem2_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); + Copy32( tmp_I + length, mem3_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); + + if ( GE_16( *phase_state, period ) ) + { + *phase_state = 0; + move16(); + } + + i = 0; + move16(); + j = *phase_state; + move16(); + + WHILE( i < length ) + { + WHILE( ( j < period ) && ( i < length ) ) + { + L_tmp = Mult_32_16( tmp_R[i + 4], local_cos_table[j] ); /*//Qx+16 */ + L_tmp = Madd_32_16( L_tmp, tmp_I[i + 4], local_negsin_table[j] ); /*Qx+16 */ + output[i] = round_fx( L_tmp ); /*Qx */ + move16(); + i++; + j++; + } + + if ( GE_16( j, period ) ) + { + j = 0; + move16(); + } + } + + *phase_state = j; + move16(); + + return; +} + + +void flip_and_downmix_generic_fx32( + Word32 input[], /* i : input spectrum Qx*/ + Word32 output[], /* o : output spectrum Qx*/ + const Word16 length, /* i : length of spectra */ + Word32 mem1_ext[HILBERT_ORDER1], /* i/o: memory Qx*/ + Word32 mem2_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx*/ + Word32 mem3_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx*/ + Word16 *phase_state /* i/o: Phase state in case frequency isn't multiple of 50 Hz */ +) +{ + Word16 i, j; + Word32 tmp[L_FRAME32k + HILBERT_ORDER1]; + Word32 tmpi_R[L_FRAME32k]; + Word32 tmpi_I[L_FRAME32k]; + Word32 tmpi2_R[L_FRAME32k + HILBERT_ORDER2]; + Word32 tmpi2_I[L_FRAME32k + HILBERT_ORDER2]; + Word32 tmp_R[L_FRAME32k + HILBERT_ORDER2]; + Word32 tmp_I[L_FRAME32k + HILBERT_ORDER2]; + + /*Word16 s_tmp[L_FRAME32k];*/ + /*Word16 factor;*/ + Word16 period; + Word16 local_negsin_table17[17] = { 0, -11793, -22005, -29268, -32609, -31580, + -26319, -17530, -6393, 6393, 17530, 26319, + 31580, 32609, 29268, 22005, 11793 }; /* Q15 */ + Word16 local_cos_table17[17] = { 32767, 30571, 24279, 14732, 3212, -8739, + -19519, -27683, -32137, -32137, -27683, + -19519, -8739, 3212, 14732, 24279, 30571 }; /* Q15 */ + Word16 *local_negsin_table, *local_cos_table; + Word32 L_tmp; + + /* 1850 Hz downmix */ + period = 17; + move16(); + local_negsin_table = local_negsin_table17; + local_cos_table = local_cos_table17; + + + FOR( i = 0; i < length; i = i + 2 ) + { + input[i] = L_negate( input[i] ); + move16(); + } + + Copy32( input, tmp + HILBERT_ORDER1, length ); + Copy32( mem1_ext, tmp, HILBERT_ORDER1 ); + + /* Hilber transform stage - 0 - single precision */ + Hilbert_transform_fx( tmp, /* i: Real component of HB */ + tmp, /* i: Imag component of HB */ + tmpi_R, /* o: Real component of HB */ + tmpi_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 0 ); /* i: HB transform stage */ + + + Copy32( mem2_ext, tmpi2_R, HILBERT_ORDER2 ); + Copy32( mem3_ext, tmpi2_I, HILBERT_ORDER2 ); + + /* Hilber transform stage - 1 */ + Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ + tmpi_I, /* i: Imag component of HB */ + tmpi2_R, /* o: Real component of HB */ + tmpi2_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 1 ); /* i: HB transform stage */ + Copy32( tmp + length, mem1_ext, HILBERT_ORDER1 ); + Copy32( mem2_ext + HILBERT_ORDER2, tmp_R, HILBERT_ORDER2 ); + Copy32( mem3_ext + HILBERT_ORDER2, tmp_I, HILBERT_ORDER2 ); + + /* Hilber transform stage - 2 */ + Hilbert_transform_fx( tmpi2_R, /* i: Real component of HB */ + tmpi2_I, /* i: Imag component of HB */ + tmpi_R, /* o: Real component of HB */ + tmpi_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 2 ); /* i: HB transform stage */ + + Copy32( tmpi2_R + length, mem2_ext, HILBERT_ORDER2 ); + Copy32( tmpi2_I + length, mem3_ext, HILBERT_ORDER2 ); + + /* Hilber transform stage - 3 */ + Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ + tmpi_I, /* i: Imag component of HB */ + tmp_R, /* o: Real component of HB */ + tmp_I, /* o: Imag. component of HB */ + length, /* i: length of the spectra */ + 3 ); /* i: HB transform stage */ + + Copy32( tmp_R + length, mem2_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); + Copy32( tmp_I + length, mem3_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); + + if ( GE_16( *phase_state, period ) ) + { + *phase_state = 0; + move16(); + } + + i = 0; + move16(); + j = *phase_state; + move16(); + + WHILE( LT_16( i, length ) ) + { + WHILE( ( j < period ) && ( i < length ) ) + { + test(); + L_tmp = Mult_32_16( tmp_R[i + 4], local_cos_table[j] ); /*//Qx+16 */ + L_tmp = Madd_32_16( L_tmp, tmp_I[i + 4], local_negsin_table[j] ); /*Qx+16 */ + output[i] = L_tmp; /*Qx */ + move32(); + i++; + j++; + } + + if ( GE_16( j, period ) ) + { + j = 0; + move16(); + } + } + + *phase_state = j; + move16(); + return; +} + +/*---------------------------------------------- + * Hilbert transform - Double precision + *------------------------------------------------*/ +static void Hilbert_transform_fx( + Word32 tmp_R[], /* i: Real component of HB */ + Word32 tmp_I[], /* i: Real component of HB */ + Word32 tmpi_R[], /* o: Real component of HB */ + Word32 tmpi_I[], /* o: Imag. component of HB */ + const Word16 length, /* i: input length */ + const Word16 HB_stage_id /* i: HB transform stage */ +) +{ + Word16 i, hb_filter_stage, offset; + Word32 L_tmp; + + hb_filter_stage = shl( HB_stage_id, 1 ); + offset = 0; + move16(); + if ( HB_stage_id == 0 ) + { + offset = 1; + move16(); + } + + test(); + test(); + IF( HB_stage_id == 0 || EQ_16( HB_stage_id, 2 ) ) + { + FOR( i = 0; i < length; i++ ) + { + L_tmp = Mult_32_16( tmp_R[i + 4], Hilbert_coeffs_fx[hb_filter_stage][0 + offset] ); /*Qx+15 */ + L_tmp = Madd_32_16( L_tmp, tmp_R[i + 2], Hilbert_coeffs_fx[hb_filter_stage][2 + offset] ); /*Qx+15 */ + L_tmp = Madd_32_16( L_tmp, tmp_R[i], Hilbert_coeffs_fx[hb_filter_stage][4 + offset] ); /*Qx+15 */ + tmpi_R[i] = L_shl( L_tmp, 1 ); + move32(); /*Qx+16 */ + + L_tmp = Mult_32_16( tmp_I[i + 4 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][0] ); /*Qx+15 */ + L_tmp = Madd_32_16( L_tmp, tmp_I[i + 2 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][2] ); /*Qx+15 */ + L_tmp = Madd_32_16( L_tmp, tmp_I[i + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][4] ); /*Qx+15 */ + tmpi_I[i] = L_shl( L_tmp, 1 ); + move32(); /*Qx+16 */ + } + } + ELSE IF( EQ_16( HB_stage_id, 1 ) || EQ_16( HB_stage_id, 3 ) ) + { + FOR( i = 0; i < length; i++ ) + { + + L_tmp = Mult_32_16( tmpi_R[i + 2], Hilbert_coeffs_fx[hb_filter_stage][2] ); /*Qx+15 */ + L_tmp = Madd_32_16( L_tmp, tmpi_R[i], Hilbert_coeffs_fx[hb_filter_stage][4] ); /*Qx+15 */ + tmpi_R[i + 4] = L_sub( tmp_R[i], L_shl( L_tmp, 1 ) ); + move32(); /*Qx+16 */ + + L_tmp = Mult_32_16( tmpi_I[i + 2], Hilbert_coeffs_fx[hb_filter_stage + 1][2] ); /*Qx+15 */ + L_tmp = Madd_32_16( L_tmp, tmpi_I[i], Hilbert_coeffs_fx[hb_filter_stage + 1][4] ); /*Qx+15 */ + tmpi_I[i + 4] = L_sub( tmp_I[i], L_shl( L_tmp, 1 ) ); + move32(); /*Qx+16 */ + } + } +} + + +/*---------------------------------------------- + * Hilbert transform - Single precision Stage 0 + *------------------------------------------------*/ +static void Hilbert_transform_sp_fx( + Word16 tmp_R[], /* i: Real component of HB */ + Word16 tmp_I[], /* i: Real component of HB */ + Word32 tmpi_R[], /* o: Real component of HB */ + Word32 tmpi_I[], /* o: Imag. component of HB */ + const Word16 length, /* i: input length */ + const Word16 HB_stage_id /* i: HB transform stage */ +) +{ + Word16 i, hb_filter_stage, offset; + Word32 L_tmp; + + hb_filter_stage = shl( HB_stage_id, 1 ); + offset = 0; + move16(); + if ( HB_stage_id == 0 ) + { + offset = 1; + move16(); + } + + /* Hilbert single precision stage 0 */ + FOR( i = 0; i < length; i++ ) + { + L_tmp = L_mult( tmp_R[i + 4], Hilbert_coeffs_fx[hb_filter_stage][0 + offset] ); /*Qx */ + L_tmp = L_mac( L_tmp, tmp_R[i + 2], Hilbert_coeffs_fx[hb_filter_stage][2 + offset] ); /*Qx */ + L_tmp = L_mac( L_tmp, tmp_R[i], Hilbert_coeffs_fx[hb_filter_stage][4 + offset] ); /*Qx */ + tmpi_R[i] = L_shl( L_tmp, 1 ); + move32(); /*Qx+16 */ + + L_tmp = L_mult( tmp_I[i + 4 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][0] ); /*Qx */ + L_tmp = L_mac( L_tmp, tmp_I[i + 2 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][2] ); /*Qx */ + L_tmp = L_mac( L_tmp, tmp_I[i + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][4] ); /*Qx */ + tmpi_I[i] = L_shl( L_tmp, 1 ); + move32(); /*Qx+16 */ + } + + return; +} + + +/*---------------------------------------------- + * flip_spectrum_fx + *----------------------------------------------*/ +void flip_spectrum_fx( + const Word16 input[], /* i : input spectrum */ + Word16 output[], /* o : output spectrum */ + const Word16 length /* i : vector length */ +) +{ + Word16 i; + + FOR( i = 0; i < length; i = i + 2 ) + { + output[i] = negate( input[i] ); + move16(); + output[i + 1] = input[i + 1]; + move16(); + } + + return; +} + + +/*---------------------------------------------------------------------------- + * calc_rc0_h + * + * computes 1st parcor from composed filter impulse response + *---------------------------------------------------------------------------*/ +void Calc_rc0_h( + Word16 *h, /* i : impulse response of composed filter */ + Word16 *rc0 /* o : 1st parcor */ +) +{ + Word32 L_acc; + Word16 *ptrs; + Word16 acf0, acf1; + Word16 temp, sh_acf; + Word16 i; + + /* computation of the autocorrelation function acf */ + L_acc = L_mult( h[0], h[0] ); + FOR( i = 1; i < LONG_H_ST; i++ ) + { + L_acc = L_mac( L_acc, h[i], h[i] ); + } + sh_acf = norm_l( L_acc ); + L_acc = L_shl( L_acc, sh_acf ); + acf0 = extract_h( L_acc ); + + ptrs = h; + + temp = *ptrs++; + move16(); + L_acc = L_mult( temp, *ptrs ); + FOR( i = 1; i < LONG_H_ST - 1; i++ ) + { + temp = *ptrs++; + move16(); + L_acc = L_mac( L_acc, temp, *ptrs ); + } + L_acc = L_shl( L_acc, sh_acf ); + acf1 = extract_h( L_acc ); + + /* Compute 1st parcor */ + IF( acf0 == 0 ) + { + *rc0 = 0; + move16(); + return; + } + + IF( LT_16( acf0, abs_s( acf1 ) ) ) + { + *rc0 = 0; + move16(); + return; + } + *rc0 = div_s( abs_s( acf1 ), acf0 ); + move16(); + IF( acf1 > 0 ) + { + *rc0 = negate( *rc0 ); + move16(); + } +} + +void Calc_rc0_h_ivas_enc_fx( + Word16 *h, /* i : impulse response of composed filter */ + Word16 *rc0 /* o : 1st parcor */ +) +{ + Word32 L_acc; + Word16 *ptrs; + Word16 acf0, acf1; + Word16 temp, sh_acf, tmp2; + Word16 i; + + /* computation of the autocorrelation function acf */ + L_acc = L_mult( h[0], h[0] ); + FOR( i = 1; i < LONG_H_ST; i++ ) + { + tmp2 = shr( h[i], 2 ); + L_acc = L_mac( L_acc, tmp2, tmp2 ); + } + sh_acf = norm_l( L_acc ); + L_acc = L_shl( L_acc, sh_acf ); + acf0 = extract_h( L_acc ); + + ptrs = h; + + temp = *ptrs++; + move16(); + L_acc = L_mult( temp, *ptrs ); + FOR( i = 1; i < LONG_H_ST - 1; i++ ) + { + temp = shr( *ptrs++, 2 ); + move16(); + L_acc = L_mac( L_acc, temp, shr( *ptrs, 2 ) ); + } + L_acc = L_shl( L_acc, sh_acf ); + acf1 = extract_h( L_acc ); + + /* Compute 1st parcor */ + IF( acf0 == 0 ) + { + *rc0 = 0; + move16(); + return; + } + + IF( LT_16( acf0, abs_s( acf1 ) ) ) + { + *rc0 = 0; + move16(); + return; + } + *rc0 = div_s( abs_s( acf1 ), acf0 ); + move16(); + IF( acf1 > 0 ) + { + *rc0 = negate( *rc0 ); + move16(); + } +} + +static void Calc_st_filt_tbe( + Word16 *apond2, /* i : coefficients of numerator */ + Word16 *apond1, /* i : coefficients of denominator */ + Word16 *parcor0, /* o : 1st parcor calcul. on composed filter */ + Word16 *sig_ltp_ptr, /* i/o: i of 1/A(gamma1) : scaled by 1/g0 */ + Word16 *mem_zero /* i : All zero memory */ +) +{ + Word32 L_g0; + + Word16 h[LONG_H_ST]; + + Word16 g0, temp; + Word16 i; + temp = sub( 2, norm_s( apond2[0] ) ); + /* compute i.r. of composed filter apond2 / apond1 */ + Syn_filt_s( temp, apond1, LPC_SHB_ORDER, apond2, h, LONG_H_ST, mem_zero, 0 ); + /* compute 1st parcor */ + Calc_rc0_h( h, parcor0 ); + + /* compute g0 */ + L_g0 = L_mult0( 1, abs_s( h[0] ) ); + FOR( i = 1; i < LONG_H_ST; i++ ) + { + L_g0 = L_mac0( L_g0, 1, abs_s( h[i] ) ); + } + g0 = extract_h( L_shl( L_g0, 14 ) ); + + /* Scale signal i of 1/A(gamma1) */ + IF( GT_16( g0, 1024 ) ) + { + temp = div_s( 1024, g0 ); /* temp = 2**15 / gain0 */ + FOR( i = 0; i < L_SUBFR16k; i++ ) + { + sig_ltp_ptr[i] = mult_r( sig_ltp_ptr[i], temp ); + move16(); + } + } +} + +static void Calc_st_filt_tbe_ivas_enc_fx( + Word16 *apond2, /* i : coefficients of numerator */ + Word16 *apond1, /* i : coefficients of denominator */ + Word16 *parcor0, /* o : 1st parcor calcul. on composed filter */ + Word16 *sig_ltp_ptr, /* i/o: i of 1/A(gamma1) : scaled by 1/g0 */ + Word16 *mem_zero /* i : All zero memory */ +) +{ + Word32 L_g0; + + Word16 h[LONG_H_ST]; + + Word16 g0, temp; + Word16 i; + temp = sub( 2, norm_s( apond2[0] ) ); + /* compute i.r. of composed filter apond2 / apond1 */ + syn_filt_fx( temp, apond1, LPC_SHB_ORDER, apond2, h, LONG_H_ST, mem_zero, 0 ); + /* compute 1st parcor */ + Calc_rc0_h_ivas_enc_fx( h, parcor0 ); + + /* compute g0 */ + L_g0 = L_mult0( 1, abs_s( h[0] ) ); + FOR( i = 1; i < LONG_H_ST; i++ ) + { + L_g0 = L_mac0( L_g0, 1, abs_s( h[i] ) ); + } + g0 = extract_h( L_shl( L_g0, 14 ) ); + + /* Scale signal i of 1/A(gamma1) */ + IF( GT_16( g0, 1024 ) ) + { + temp = div_s( 1024, g0 ); /* temp = 2**15 / gain0 */ + FOR( i = 0; i < L_SUBFR16k; i++ ) + { + sig_ltp_ptr[i] = mult_r( sig_ltp_ptr[i], temp ); + move16(); + } + } +} + +static void Calc_st_filt_tbe_ivas_dec_fx( + Word16 *apond2, /* i : coefficients of numerator */ + Word16 *apond1, /* i : coefficients of denominator */ + Word16 *parcor0, /* o : 1st parcor calcul. on composed filter */ + Word16 *sig_ltp_ptr, /* i/o: i of 1/A(gamma1) : scaled by 1/g0 */ + Word16 *mem_zero /* i : All zero memory */ +) +{ + Word32 L_g0; + + Word16 h[LONG_H_ST]; + + Word16 g0, temp; + Word16 i; + temp = sub( 2, norm_s( apond2[0] ) ); + /* compute i.r. of composed filter apond2 / apond1 */ + Syn_filt_s( temp, apond1, LPC_SHB_ORDER, apond2, h, LONG_H_ST, mem_zero, 0 ); + /* compute 1st parcor */ + Calc_rc0_h( h, parcor0 ); + + /* compute g0 */ + L_g0 = L_mult0( 1, abs_s( h[0] ) ); + FOR( i = 1; i < LONG_H_ST; i++ ) + { + L_g0 = L_mac0( L_g0, 1, abs_s( h[i] ) ); + } + g0 = extract_h( L_shl( L_g0, 14 ) ); + + /* Scale signal i of 1/A(gamma1) */ + IF( GT_16( g0, 1024 ) ) + { + temp = div_s( 1024, g0 ); /* temp = 2**15 / gain0 */ + FOR( i = 0; i < L_SUBFR16k; i++ ) + { + sig_ltp_ptr[i] = mult_r( sig_ltp_ptr[i], temp ); + move16(); + } + } +} + +static void filt_mu_fx( + const Word16 *sig_in, /* i : signal (beginning at sample -1) */ + Word16 *sig_out, /* o : output signal */ + const Word16 parcor0, /* i : parcor0 (mu = parcor0 * gamma3) */ + Word16 SubFrameLength /* i : the length of subframe */ +) +{ + Word16 n; + Word16 mu, ga, temp; + const Word16 *ptrs; + Word16 tmp, exp; + Flag Overflow = 0; + move32(); + + + IF( EQ_16( SubFrameLength, L_SUBFR ) ) + { + IF( parcor0 > 0 ) + { + mu = mult_r( parcor0, GAMMA3_PLUS_FX ); + } + ELSE + { + mu = mult_r( parcor0, GAMMA3_MINUS_FX ); + } + } + ELSE + { + IF( parcor0 > 0 ) + { + mu = mult_r( parcor0, GAMMA3_PLUS_WB_FX ); + } + ELSE + { + mu = mult_r( parcor0, GAMMA3_MINUS_WB_FX ); + } + } + + tmp = abs_s( mu ); + tmp = sub( 32767, tmp ); + exp = norm_s( tmp ); + tmp = div_s( shl( 1, sub( 14, exp ) ), tmp ); /*(14 - exp) */ + ga = shl_sat( tmp, exp ); /*Q14 */ + + + /* ga = (float) 1. / ((float) 1. - (float) fabs (mu)); */ + + ptrs = sig_in; /* points on sig_in(-1) */ + + FOR( n = 0; n < SubFrameLength; n++ ) + { + temp = mult_r( mu, ( *ptrs++ ) ); + temp = add_sat( temp, *ptrs ); /*Q12 */ + sig_out[n] = shl_o( mult_r( ga, temp ), 1, &Overflow ); + move16(); /*Q12 */ + } + + return; +} + +static void scale_st_swb( + const Word16 *sig_in_fx, /* i : postfilter i signal */ + Word16 *sig_out_fx, /* i/o: postfilter o signal */ + Word16 *gain_prec_fx, /* i/o: last value of gain for subframe */ + Word16 SubFrameLength ) +{ + Word16 i; + Word16 agc_fac1_para_fx; + Word16 agc_fac_para_fx; + Word32 L_acc, L_temp; + Word16 g0_fx, gain_fx; + Word16 scal_in, scal_out; + Word16 s_g_in, s_g_out, sh_g0, temp; + + + IF( EQ_16( SubFrameLength, L_SUBFR ) ) + { + agc_fac1_para_fx = AGC_FAC1_FX; + move16(); + agc_fac_para_fx = AGC_FAC_FX; + move16(); + } + ELSE /*IF( SubFrameLength == L_SUBFR16k ) */ + { + agc_fac1_para_fx = AGC_FAC1_WB_FX; + move16(); + agc_fac_para_fx = AGC_FAC_WB_FX; + move16(); + } + + /* compute input gain */ + L_acc = L_mult0( 1, abs_s( sig_in_fx[0] ) ); /*0 +Q_bwe_exc-1 */ + FOR( i = 1; i < SubFrameLength; i++ ) + { + L_acc = L_mac0( L_acc, 1, abs_s( sig_in_fx[i] ) ); /*Q_bwe_exc-1 */ + } + + g0_fx = 0; + move16(); + IF( L_acc != 0L ) + { + scal_in = norm_l( L_acc ); + L_acc = L_shl( L_acc, scal_in ); + s_g_in = extract_h( L_acc ); /* normalized */ + + /* Compute o gain */ + L_acc = L_mult0( 1, abs_s( sig_out_fx[0] ) ); + FOR( i = 1; i < SubFrameLength; i++ ) + { + L_acc = L_mac0( L_acc, 1, abs_s( sig_out_fx[i] ) ); + } + IF( L_acc == 0L ) + { + *gain_prec_fx = 0; + move16(); + + return; + } + + scal_out = norm_l( L_acc ); + L_acc = L_shl( L_acc, scal_out ); + s_g_out = extract_h( L_acc ); /* normalized */ + + + sh_g0 = add( scal_in, 1 ); + sh_g0 = sub( sh_g0, scal_out ); /* scal_in - scal_out + 1 */ + IF( LT_16( s_g_in, s_g_out ) ) + { + g0_fx = div_s( s_g_in, s_g_out ); /* s_g_in/s_g_out in Q15 */ + } + ELSE + { + temp = sub( s_g_in, s_g_out ); /* sufficient since normalized */ + g0_fx = shr( div_s( temp, s_g_out ), 1 ); + g0_fx = add( g0_fx, (Word16) 0x4000 ); /* s_g_in/s_g_out in Q14 */ + sh_g0 = sub( sh_g0, 1 ); + } + /* L_gain_in/L_gain_out in Q14 */ + /* overflows if L_gain_in > 2 * L_gain_out */ + g0_fx = shr_sat( g0_fx, sh_g0 ); /* sh_g0 may be >0, <0, or =0 */ // Need to verify? + + g0_fx = mult_r( g0_fx, agc_fac1_para_fx ); /* L_gain_in/L_gain_out * AGC_FAC1_FX */ + } + /* compute gain(n) = AGC_FAC gain(n-1) + (1-AGC_FAC)gain_in/gain_out */ + /* sig_out(n) = gain(n) sig_out(n) */ + gain_fx = *gain_prec_fx; + move16(); /*14 */ + FOR( i = 0; i < SubFrameLength; i++ ) + { + temp = mult_r( agc_fac_para_fx, gain_fx ); /*15 +14 -15 =14 */ + gain_fx = add( temp, g0_fx ); /* in Q14 */ + L_temp = L_mult( gain_fx, sig_out_fx[i] ); /*14 + Q_bwe_exc-1 +1 = 14 + Q_bwe_exc */ + L_temp = L_shl_sat( L_temp, 1 ); /*14 + Q_bwe_exc +1 */ + sig_out_fx[i] = round_fx_sat( L_temp ); /*Q_bwe_exc +15 -16 = Q_bwe_exc-1 */ + move16(); + } + *gain_prec_fx = gain_fx; + move16(); + + return; +} + +void PostShortTerm_fx( + Word16 *sig_in, /* i : input signal (pointer to current subframe */ + Word16 *lpccoeff, /* i : LPC coefficients for current subframe */ + Word16 *sig_out, /* o : postfiltered output */ + Word16 *mem_stp, /* i/o: postfilter memory*/ + Word16 *ptr_mem_stp, /* i/o: pointer to postfilter memory*/ + Word16 *ptr_gain_prec, /* i/o: for gain adjustment*/ + Word16 *mem_zero, /* i/o: null memory to compute h_st*/ + const Word16 formant_fac_fx /* i : Strength of post-filter*/ +) +{ + Word16 apond1_fx[LPC_SHB_ORDER + 1]; /* denominator coeff.*/ + Word16 apond2_fx[LONG_H_ST]; /* numerator coeff. */ + Word16 sig_ltp_fx[L_SUBFR16k + 1]; /* residual signal */ + /*Word16 lpccoeff_fx[LPC_SHB_ORDER+1];//Q12 */ + Word16 g1_fx, g2_fx, parcor0_fx; /*Q15 */ + Word16 tmp; + + parcor0_fx = 0; + move16(); + set16_fx( apond1_fx, 0, LPC_SHB_ORDER + 1 ); + set16_fx( apond2_fx, 0, LONG_H_ST ); + set16_fx( sig_ltp_fx, 0, L_SUBFR16k + 1 ); + + /* Obtain post-filter weights */ + tmp = extract_h( L_mult( GAMMA_SHARP_FX, formant_fac_fx ) ); /*Q15 */ + g1_fx = add( GAMMA0_FX, tmp ); /*Q15 */ + g2_fx = sub( GAMMA0_FX, tmp ); /*Q15 */ + + /* Compute weighted LPC coefficients */ + weight_a_fx( lpccoeff, apond1_fx, g1_fx, LPC_SHB_ORDER ); + weight_a_fx( lpccoeff, apond2_fx, g2_fx, LPC_SHB_ORDER ); + /* o: apond1_fx, apond2_fx in Q12 */ + + /* Compute A(gamma2) residual */ + Residu3_10_fx( apond2_fx, sig_in, sig_ltp_fx + 1, L_SUBFR16k, 0 ); + /* o: sig_ltp_fx in Q_bwe_exc */ + + /* Save last output of 1/A(gamma1) */ + sig_ltp_fx[0] = *ptr_mem_stp; + move16(); + + /* Control short term pst filter gain and compute parcor0 */ + Calc_st_filt_tbe( apond2_fx, apond1_fx, &parcor0_fx, sig_ltp_fx + 1, mem_zero ); + /* o: parcor0 in Q15 */ + /* i/o: sig_ltp_fx in Q_bwe_exc */ + + /* 1/A(gamma1) filtering, mem_stp is updated */ + Syn_filt_s( 0, apond1_fx, LPC_SHB_ORDER, sig_ltp_fx + 1, sig_ltp_fx + 1, L_SUBFR16k, mem_stp, 1 ); + + /* (1 + mu z-1) tilt filtering */ + filt_mu_fx( sig_ltp_fx, sig_out, parcor0_fx, L_SUBFR16k ); + /* o: sig_out in Q_bwe_exc */ + + /* gain control */ + scale_st_swb( sig_in, sig_out, ptr_gain_prec, L_SUBFR16k ); + + return; +} + +void PostShortTerm_ivas_enc_fx( + Word16 *sig_in, /* i : input signal (pointer to current subframe */ + Word16 *lpccoeff, /* i : LPC coefficients for current subframe */ + Word16 *sig_out, /* o : postfiltered output */ + Word16 *mem_stp, /* i/o: postfilter memory*/ + Word16 *ptr_mem_stp, /* i/o: pointer to postfilter memory*/ + Word16 *ptr_gain_prec, /* i/o: for gain adjustment*/ + Word16 *mem_zero, /* i/o: null memory to compute h_st*/ + const Word16 formant_fac_fx /* i : Strength of post-filter*/ +) +{ + Word16 apond1_fx[LPC_SHB_ORDER + 1]; /* denominator coeff.*/ + Word16 apond2_fx[LONG_H_ST]; /* numerator coeff. */ + Word16 sig_ltp_fx[L_SUBFR16k + 1]; /* residual signal */ + /*Word16 lpccoeff_fx[LPC_SHB_ORDER+1];//Q12 */ + Word16 g1_fx, g2_fx, parcor0_fx; /*Q15 */ + Word16 tmp; + + parcor0_fx = 0; + move16(); + set16_fx( apond1_fx, 0, LPC_SHB_ORDER + 1 ); + set16_fx( apond2_fx, 0, LONG_H_ST ); + set16_fx( sig_ltp_fx, 0, L_SUBFR16k + 1 ); + + /* Obtain post-filter weights */ + tmp = extract_h( L_mult( GAMMA_SHARP_FX, formant_fac_fx ) ); /*Q15 */ + g1_fx = add( GAMMA0_FX, tmp ); /*Q15 */ + g2_fx = sub( GAMMA0_FX, tmp ); /*Q15 */ + + /* Compute weighted LPC coefficients */ + weight_a_fx( lpccoeff, apond1_fx, g1_fx, LPC_SHB_ORDER ); + weight_a_fx( lpccoeff, apond2_fx, g2_fx, LPC_SHB_ORDER ); + /* o: apond1_fx, apond2_fx in Q12 */ + + /* Compute A(gamma2) residual */ + Residu3_10_fx( apond2_fx, sig_in, sig_ltp_fx + 1, L_SUBFR16k, 0 ); + /* o: sig_ltp_fx in Q_bwe_exc */ + + /* Save last output of 1/A(gamma1) */ + sig_ltp_fx[0] = *ptr_mem_stp; + move16(); + + /* Control short term pst filter gain and compute parcor0 */ + Calc_st_filt_tbe_ivas_enc_fx( apond2_fx, apond1_fx, &parcor0_fx, sig_ltp_fx + 1, mem_zero ); + /* o: parcor0 in Q15 */ + /* i/o: sig_ltp_fx in Q_bwe_exc */ + + /* 1/A(gamma1) filtering, mem_stp is updated */ + syn_filt_fx( 0, apond1_fx, LPC_SHB_ORDER, sig_ltp_fx + 1, sig_ltp_fx + 1, L_SUBFR16k, mem_stp, 1 ); + + /* (1 + mu z-1) tilt filtering */ + filt_mu_fx( sig_ltp_fx, sig_out, parcor0_fx, L_SUBFR16k ); + /* o: sig_out in Q_bwe_exc */ + + /* gain control */ + scale_st_swb( sig_in, sig_out, ptr_gain_prec, L_SUBFR16k ); + + return; +} + +void PostShortTerm_ivas_dec_fx( + Word16 *sig_in, /* i : input signal (pointer to current subframe */ + Word16 *lpccoeff, /* i : LPC coefficients for current subframe */ + Word16 *sig_out, /* o : postfiltered output */ + Word16 *mem_stp, /* i/o: postfilter memory*/ + Word16 *ptr_mem_stp, /* i/o: pointer to postfilter memory*/ + Word16 *ptr_gain_prec, /* i/o: for gain adjustment*/ + Word16 *mem_zero, /* i/o: null memory to compute h_st*/ + const Word16 formant_fac_fx /* i : Strength of post-filter*/ +) +{ + Word16 apond1_fx[LPC_SHB_ORDER + 1]; /* denominator coeff.*/ + Word16 apond2_fx[LONG_H_ST]; /* numerator coeff. */ + Word16 sig_ltp_fx[L_SUBFR16k + 1]; /* residual signal */ + /*Word16 lpccoeff_fx[LPC_SHB_ORDER+1];//Q12 */ + Word16 g1_fx, g2_fx, parcor0_fx; /*Q15 */ + Word16 tmp; + + parcor0_fx = 0; + move16(); + set16_fx( apond1_fx, 0, LPC_SHB_ORDER + 1 ); + set16_fx( apond2_fx, 0, LONG_H_ST ); + set16_fx( sig_ltp_fx, 0, L_SUBFR16k + 1 ); + + /* Obtain post-filter weights */ + tmp = extract_h( L_mult( GAMMA_SHARP_FX, formant_fac_fx ) ); /*Q15 */ + g1_fx = add( GAMMA0_FX, tmp ); /*Q15 */ + g2_fx = sub( GAMMA0_FX, tmp ); /*Q15 */ + + /* Compute weighted LPC coefficients */ + weight_a_fx( lpccoeff, apond1_fx, g1_fx, LPC_SHB_ORDER ); + weight_a_fx( lpccoeff, apond2_fx, g2_fx, LPC_SHB_ORDER ); + /* o: apond1_fx, apond2_fx in Q12 */ + + /* Compute A(gamma2) residual */ + Residu3_10_fx( apond2_fx, sig_in, sig_ltp_fx + 1, L_SUBFR16k, 0 ); + /* o: sig_ltp_fx in Q_bwe_exc */ + + /* Save last output of 1/A(gamma1) */ + sig_ltp_fx[0] = *ptr_mem_stp; + move16(); + + /* Control short term pst filter gain and compute parcor0 */ + Calc_st_filt_tbe_ivas_dec_fx( apond2_fx, apond1_fx, &parcor0_fx, sig_ltp_fx + 1, mem_zero ); + /* o: parcor0 in Q15 */ + /* i/o: sig_ltp_fx in Q_bwe_exc */ + + /* 1/A(gamma1) filtering, mem_stp is updated */ + Syn_filt_s( 0, apond1_fx, LPC_SHB_ORDER, sig_ltp_fx + 1, sig_ltp_fx + 1, L_SUBFR16k, mem_stp, 1 ); + + /* (1 + mu z-1) tilt filtering */ + filt_mu_fx( sig_ltp_fx, sig_out, parcor0_fx, L_SUBFR16k ); + /* o: sig_out in Q_bwe_exc */ + + /* gain control */ + scale_st_swb( sig_in, sig_out, ptr_gain_prec, L_SUBFR16k ); + + return; +} + +void flip_spectrum_and_decimby4_fx( + const Word16 input[], /* i : input spectrum Q_inp */ + Word16 output[], /* o : output spectrum Q_inp */ + const Word16 length, /* i : vector length */ + Word16 mem1[], /* i/o : memory Q_inp */ + Word16 mem2[], /* i/o : memory Q_inp */ + const Word16 ramp_flag /*i: flag to trigger slow ramp-up of output following change of core (HQ to ACELP or 12k8 to 16k ACELP) */ +) +{ + Word16 i; + Word16 factor, tmp[L_FRAME16k / 2]; + Word16 tmp1, tmp2; + Word16 input_change[L_FRAME16k]; + + IF( ramp_flag ) + { + factor = div_s( 4, length ); /* Q15 */ + FOR( i = 0; i < length / 4; i += 2 ) + { + tmp1 = extract_l( L_mult0( i, factor ) ); /* Q15 */ + tmp2 = extract_l( L_mult0( add( i, 1 ), factor ) ); /*Q15 */ + input_change[i] = negate( mult_r( input[i], tmp1 ) ); + move16(); + input_change[i + 1] = mult_r( input[i + 1], tmp2 ); + move16(); + } + } + ELSE + { + i = 0; + move16(); + } + + FOR( ; i < length; i = i + 2 ) + { + input_change[i] = negate( input[i] ); + move16(); + input_change[i + 1] = input[i + 1]; + move16(); + } + + Decimate_allpass_steep_fx( input_change, mem1, length, tmp ); + Decimate_allpass_steep_fx( tmp, mem2, shr( length, 1 ), output ); + + return; +} + + +/*==========================================================================*/ +/* FUNCTION : void GenShapedWBExcitation_fx () */ +/*--------------------------------------------------------------------------*/ +/* PURPOSE : Synthesize spectrally shaped highband excitation signal for the wideband */ +/*--------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* _Word16 *lpc_shb i : lpc coefficients Q12 */ +/* _Word16 coder_type i : coding type */ +/* _Word16 *bwe_exc_extended i : bwidth extended exciatation Q_bwe_exc*/ +/* _Word16 Q_bwe_exc i : Q format */ +/* _Word16 voice_factors[] i : voicing factor Q15 */ +/*--------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _Word16 *excSHB o : synthesized shaped shb exctiation Q_bwe_exc*/ +/* _Word16 *exc4kWhtnd o : whitened synthesized shb excitation Q_bwe_exc*/ +/*--------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _Word32 *mem_csfilt i/o : memory Q_bwe_exc+16*/ +/* _Word16 *mem_genSHBexc_filt_down1 i/o : memory Q_bwe_exc */ +/* _Word16 *mem_genSHBexc_filt_down2 i/o : memory Q_bwe_exc */ +/* _Word16 *mem_genSHBexc_filt_down3 i/o : memory Q_bwe_exc */ +/* _Word16 *state_lpc_syn i/o : memory Q_bwe_exc */ +/* _Word16 bwe_seed[] i/o : random number generator seed */ +/*--------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*--------------------------------------------------------------------------*/ +/* CALLED FROM : */ +/*==========================================================================*/ + +void GenShapedWBExcitation_ivas_fx( + Word16 *excSHB, /* o : synthesized shaped shb exctiation Q_bwe_exc*/ + const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ + Word16 *exc4kWhtnd, /* o : whitened synthesized shb excitation Q_bwe_exc*/ + Word32 *mem_csfilt, /* i/o : memory Q_bwe_exc+16*/ + Word16 *mem_genSHBexc_filt_down1, /* i/o : memory Q_bwe_exc*/ + Word16 *mem_genSHBexc_filt_down2, /* i/o : memory Q_bwe_exc*/ + Word16 *mem_genSHBexc_filt_down3, /* i/o : memory Q_bwe_exc*/ + Word16 *state_lpc_syn, /* i/o : memory Q_bwe_exc*/ + const Word16 coder_type, /* i : coding type */ + const Word16 *bwe_exc_extended, /* i : bwidth extended exciatation Q_bwe_exc*/ + const Word16 Q_bwe_exc, + Word16 bwe_seed[], /* i/o : random number generator seed */ + const Word16 voice_factors[], /* i : voicing factor Q15*/ + const Word16 uv_flag, /* i : unvoiced flag */ + const Word16 igf_flag ) +{ + Word16 i, j, k; + Word16 wht_fil_mem[LPC_WHTN_ORDER_WB]; + Word16 lpc_whtn[LPC_WHTN_ORDER_WB + 1]; + Word16 R_h[LPC_WHTN_ORDER_WB + 2], R_l[LPC_WHTN_ORDER_WB + 2]; + Word16 Q_R; + Word16 excTmp[L_FRAME16k]; + Word16 excTmp2[L_FRAME16k / 4]; + Word16 excTmp2_frac[L_FRAME16k / 4]; + Word16 exc4k[L_FRAME16k / 4]; + Word16 exc4k_frac[L_FRAME16k / 4]; + Word32 exc4k_32[L_FRAME16k / 4]; + Word32 pow1, pow22; + Word16 scale; + Word32 excNoisyEnv[L_FRAME16k / 4]; + Word16 csfilt_num2[1] = { 1638 }; /* Q15*/ + Word16 neg_csfilt_den2[2] = { -32768, 31457 }; /* Q15 */ + Word32 L_tmp, Ltemp1, Ltemp2; + Word16 temp1, temp2, exp; + Word32 Lmax; + Word16 max_val, n1, n2, sc; + Word32 LepsP[LPC_WHTN_ORDER_WB + 1]; + Word16 tmp_vfac; + Word16 avg_voice_fac; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move16(); +#endif + + /*0.25f*sum_f(voice_factors, NB_SUBFR)*/ + L_tmp = L_mult( voice_factors[0], 8192 /* 0.25 in Q15 */ ); + FOR( i = 1; i < NB_SUBFR; i++ ) + { + L_tmp = L_mac( L_tmp, voice_factors[i], 8192 /* 0.25 in Q15 */ ); + } + avg_voice_fac = round_fx( L_tmp ); + + test(); + test(); + test(); + test(); + IF( igf_flag != 0 && ( EQ_16( coder_type, VOICED ) || GT_16( avg_voice_fac, 11469 /* 0.35 in Q15 */ ) ) ) /*Q15 -> 0.35f*/ + { + csfilt_num2[0] = 6554; + move16(); /*Q15 -> 0.2f*/ + neg_csfilt_den2[1] = 26214; + move16(); /*Q15 -> 0.8f*/ + } + ELSE IF( igf_flag != 0 && ( EQ_16( coder_type, UNVOICED ) || LT_16( avg_voice_fac, 6654 /* 0.2 in Q15*/ ) ) ) /*Q15 -> 0.2f*/ + { + csfilt_num2[0] = 328; + move16(); /*Q15 -> 0.01f*/ + neg_csfilt_den2[1] = 32440; + move16(); /*Q15 -> 0.99f*/ + } + set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER_WB ); + Decimate_allpass_steep_fx( bwe_exc_extended, mem_genSHBexc_filt_down1, L_FRAME32k, excTmp ); + flip_spectrum_and_decimby4_fx( excTmp, exc4k, L_FRAME16k, mem_genSHBexc_filt_down2, mem_genSHBexc_filt_down3, 0 ); + + IF( uv_flag ) + { + create_random_vector_fx( exc4kWhtnd, L_FRAME16k / 4, bwe_seed ); + IF( LT_16( Q_bwe_exc, 5 ) ) + { + + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4kWhtnd[i] = shl_r( exc4kWhtnd[i], sub( Q_bwe_exc, 5 ) ); /*Q(Q_bwe_exc)/Q5(if Q_bwe_exc > 5) */ + move16(); + } + } + } + ELSE + { + autocorr_fx( exc4k, LPC_WHTN_ORDER_WB + 1, R_h, R_l, &Q_R, + L_FRAME16k / 4, win_flatten_4k_fx, 0, 1 ); + + /* Ensure R[0] isn't zero when entering Levinson Durbin */ + R_l[0] = s_max( R_l[0], 1 ); + move16(); + FOR( i = 1; i <= LPC_WHTN_ORDER_WB; i++ ) + { + L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); + L_Extract( L_tmp, &R_h[i], &R_l[i] ); + } + + E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER_WB, NULL ); + + Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER_WB + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); + + fir_fx( exc4k, lpc_whtn, exc4kWhtnd, wht_fil_mem, L_FRAME16k / 4, + LPC_WHTN_ORDER_WB, 0, 3 ); + + /* Ensure pow1 is greater than zero when computing normalization */ + max_val = 0; + move16(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + excTmp2[i] = abs_s( exc4kWhtnd[i] ); + move16(); /* Q_bwe_exc */ + max_val = s_max( max_val, excTmp2[i] ); + move16(); + } + + IF( max_val == 0 ) + { + pow1 = 1; + move16(); + n1 = 0; + move16(); + } + ELSE + { + n1 = norm_s( max_val ); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + excTmp2_frac[i] = shl_o( excTmp2[i], n1, &Overflow ); // Q_bwe_exc + n1 + move16(); /* Q14 */ + } + n1 = sub( sub( 14, n1 ), Q_bwe_exc ); + pow1 = 1; + move32(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + L_tmp = L_mult_o( excTmp2_frac[i], excTmp2_frac[i], &Overflow ); /* Q29 */ + pow1 = L_add_o( pow1, L_shr( L_tmp, 10 ), &Overflow ); /* Q22 */ + } + } + + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + excNoisyEnv[i] = L_add_o( *mem_csfilt, L_mult_o( csfilt_num2[0], excTmp2[i], &Overflow ), &Overflow ); + move32(); /* Q_bwe_exc+16 */ + *mem_csfilt = Mult_32_16( excNoisyEnv[i], neg_csfilt_den2[1] ); + move32(); /* Q_bwe_exc+16 */ + } + + create_random_vector_fx( exc4k, L_FRAME16k / 4, bwe_seed ); + + /* Ensure pow22 is greater than zero when computing normalization */ + Lmax = 0; + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4k_32[i] = Mult_32_16( excNoisyEnv[i], exc4k[i] ); + move32(); /* Q_bwe_exc+6 */ + Lmax = L_max( Lmax, L_abs( exc4k_32[i] ) ); + } + + IF( Lmax == 0 ) + { + pow22 = 1; + move16(); + n2 = 0; + move16(); + set16_fx( exc4k_frac, 0, L_FRAME16k / 4 ); + } + ELSE + { + n2 = norm_l( Lmax ); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4k_frac[i] = extract_h( L_shl_o( exc4k_32[i], n2, &Overflow ) ); /* Q(14-n2) */ + move16(); + } + n2 = 30 - n2 - ( Q_bwe_exc + 6 ); + pow22 = 1; + move32(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + L_tmp = L_mult_o( exc4k_frac[i], exc4k_frac[i], &Overflow ); /* Q29 */ + pow22 = L_add_o( pow22, L_shr( L_tmp, 10 ), &Overflow ); /* Q22 */ + } + } + + test(); + test(); + IF( EQ_16( coder_type, UNVOICED ) || ( igf_flag != 0 && LT_16( avg_voice_fac, 6654 /* 0.2 in Q15 */ ) ) ) + { + L_tmp = root_a_over_b_fx( pow1, sub( 19, shl( n1, 1 ) ), pow22, sub( 19, shl( n2, 1 ) ), &exp ); + scale = round_fx_o( L_shl_o( L_tmp, exp, &Overflow ), &Overflow ); /*Q15 */ + sc = sub( add( n2, Q_bwe_exc ), 14 ); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4kWhtnd[i] = round_fx_o( L_shl_o( L_mult_o( exc4k_frac[i], scale, &Overflow ), sc, &Overflow ), &Overflow ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ + move16(); + } + } + ELSE + { + sc = sub( add( n2, Q_bwe_exc ), 14 ); /* Q_bwe_exc+n2-14*/ + + k = 0; + FOR( i = 0; i < 4; i++ ) + { + test(); + IF( igf_flag != 0 && EQ_16( coder_type, VOICED ) ) + { + /*tmp_vfac = 2*voice_factors[i]; + tmp_vfac = min(1, tmp_vfac);*/ + tmp_vfac = shl_o( voice_factors[i], 1, &Overflow ); + } + ELSE + { + tmp_vfac = voice_factors[i]; + move16(); + } + + Ltemp1 = root_a_fx( L_deposit_h( tmp_vfac ), 31, &exp ); + temp1 = round_fx_o( L_shl_o( Ltemp1, exp, &Overflow ), &Overflow ); /* Q15 */ + L_tmp = Mult_32_16( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ + Ltemp2 = root_a_over_b_fx( L_tmp, sub( 19, shl( n1, 1 ) ), pow22, sub( 19, shl( n2, 1 ) ), &exp ); + temp2 = round_fx_o( L_shl_o( Ltemp2, exp, &Overflow ), &Overflow ); /* Q15 */ + FOR( j = 0; j < L_FRAME16k / 16; j++ ) + { + L_tmp = L_mult_o( temp1, exc4kWhtnd[k], &Overflow ); /* Q(16+Q_bwe_exc) */ + L_tmp = L_add_o( L_tmp, L_shl_o( L_mult_o( temp2, exc4k_frac[k], &Overflow ), sc, &Overflow ), &Overflow ); /* Q(16+Q_bwe_exc) */ + exc4kWhtnd[k] = round_fx_o( L_tmp, &Overflow ); /* Q_bwe_exc */ + move16(); + k++; + } + } + } + } + + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 ); + + return; +} + +void GenShapedWBExcitation_fx( + Word16 *excSHB, /* o : synthesized shaped shb exctiation Q(Q_bwe_exc) */ + const Word16 *lpc_shb, /* i : lpc coefficients Q12 */ + Word16 *exc4kWhtnd, /* o : whitened synthesized shb excitation Q(Q_bwe_exc) */ + Word32 *mem_csfilt, /* i/o : memory Q(Q_bwe_exc+16) */ + Word16 *mem_genSHBexc_filt_down1, /* i/o : memory Q(Q_bwe_exc) */ + Word16 *mem_genSHBexc_filt_down2, /* i/o : memory Q(Q_bwe_exc) */ + Word16 *mem_genSHBexc_filt_down3, /* i/o : memory Q(Q_bwe_exc) */ + Word16 *state_lpc_syn, /* i/o : memory Q(Q_bwe_exc) */ + const Word16 coder_type, /* i : coding type */ + const Word16 *bwe_exc_extended, /* i : bwidth extended exciatation Q(Q_bwe_exc) */ + const Word16 Q_bwe_exc, /* i : Q for memories */ + Word16 bwe_seed[], /* i/o : random number generator seed */ + const Word16 voice_factors[], /* i : voicing factor Q15 */ + const Word16 uv_flag, /* i : unvoiced flag */ + const Word16 igf_flag ) +{ + Word16 i, j, k; + Word16 wht_fil_mem[LPC_WHTN_ORDER_WB]; + Word16 lpc_whtn[LPC_WHTN_ORDER_WB + 1]; + Word16 R_h[LPC_WHTN_ORDER_WB + 2], R_l[LPC_WHTN_ORDER_WB + 2]; + Word16 Q_R; + Word16 excTmp[L_FRAME16k]; + Word16 excTmp2[L_FRAME16k / 4]; + Word16 excTmp2_frac[L_FRAME16k / 4]; + Word16 exc4k[L_FRAME16k / 4]; + Word16 exc4k_frac[L_FRAME16k / 4]; + Word32 exc4k_32[L_FRAME16k / 4]; + Word32 pow1, pow22; + Word16 scale; + Word32 excNoisyEnv[L_FRAME16k / 4]; + Word16 csfilt_num2[1] = { 1638 }; /* Q15*/ + Word16 neg_csfilt_den2[2] = { -32768, 31457 }; /* Q15 */ + Word32 L_tmp, Ltemp1, Ltemp2; + Word16 temp1, temp2, exp; + Word32 Lmax; + Word16 max_val, n1, n2, sc; + Word32 LepsP[LPC_WHTN_ORDER_WB + 1]; + Word16 tmp_vfac; + Word16 avg_voice_fac; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + move16(); + move16(); + move16(); + + /*0.25f*sum_f(voice_factors, NB_SUBFR)*/ + L_tmp = L_mult( voice_factors[0], 8192 /*0.25 in Q15 */ ); + FOR( i = 1; i < NB_SUBFR; i++ ) + { + L_tmp = L_mac( L_tmp, voice_factors[i], 8192 /*0.25 in Q15 */ ); + } + avg_voice_fac = round_fx( L_tmp ); + + test(); + test(); + test(); + test(); + IF( igf_flag != 0 && ( EQ_16( coder_type, VOICED ) || GT_16( avg_voice_fac, 11469 /* 0.35 in Q15 */ ) ) ) /*Q15 -> 0.35f*/ + { + csfilt_num2[0] = 6554; + move16(); /*Q15 -> 0.2f*/ + neg_csfilt_den2[1] = 26214; + move16(); /*Q15 -> 0.8f*/ + } + ELSE IF( igf_flag != 0 && ( EQ_16( coder_type, UNVOICED ) || LT_16( avg_voice_fac, 6654 /* 0.2 in Q15 */ ) ) ) /*Q15 -> 0.2f*/ + { + csfilt_num2[0] = 328; + move16(); /*Q15 -> 0.01f*/ + neg_csfilt_den2[1] = 32440; + move16(); /*Q15 -> 0.99f*/ + } + set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER_WB ); + Decimate_allpass_steep_fx( bwe_exc_extended, mem_genSHBexc_filt_down1, L_FRAME32k, excTmp ); + flip_spectrum_and_decimby4_fx( excTmp, exc4k, L_FRAME16k, mem_genSHBexc_filt_down2, mem_genSHBexc_filt_down3, 0 ); + + IF( uv_flag ) + { + create_random_vector_fx( exc4kWhtnd, L_FRAME16k / 4, bwe_seed ); + IF( LT_16( Q_bwe_exc, 5 ) ) + { + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4kWhtnd[i] = shl_r( exc4kWhtnd[i], sub( Q_bwe_exc, 5 ) ); /*Q(Q_bwe_exc)/Q5(if Q_bwe_exc > 5) */ + move16(); + } + } + } + ELSE + { + autocorr_fx( exc4k, LPC_WHTN_ORDER_WB + 1, R_h, R_l, &Q_R, + L_FRAME16k / 4, win_flatten_4k_fx, 0, 1 ); + + /* Ensure R[0] isn't zero when entering Levinson Durbin */ + R_l[0] = s_max( R_l[0], 1 ); + move16(); + FOR( i = 1; i <= LPC_WHTN_ORDER_WB; i++ ) + { + L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); + L_Extract( L_tmp, &R_h[i], &R_l[i] ); + } + + E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER_WB, NULL ); + + Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER_WB + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); + + fir_fx( exc4k, lpc_whtn, exc4kWhtnd, wht_fil_mem, L_FRAME16k / 4, + LPC_WHTN_ORDER_WB, 0, 3 ); + + /* Ensure pow1 is greater than zero when computing normalization */ + max_val = 0; + move16(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + excTmp2[i] = abs_s( exc4kWhtnd[i] ); + move16(); /* Q_bwe_exc */ + max_val = s_max( max_val, excTmp2[i] ); + move16(); + } + + IF( max_val == 0 ) + { + pow1 = 1; + move16(); + n1 = 0; + move16(); + } + ELSE + { + n1 = norm_s( max_val ); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + excTmp2_frac[i] = shl_o( excTmp2[i], n1, &Overflow ); + move16(); /* Q14 */ + } + n1 = sub( sub( 14, n1 ), Q_bwe_exc ); + pow1 = 1; + move32(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + L_tmp = L_mult_o( excTmp2_frac[i], excTmp2_frac[i], &Overflow ); /* Q29 */ + pow1 = L_add_o( pow1, L_shr( L_tmp, 7 ), &Overflow ); /* Q22 */ + } + } + + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + excNoisyEnv[i] = L_add_o( *mem_csfilt, L_mult_o( csfilt_num2[0], excTmp2[i], &Overflow ), &Overflow ); + move32(); /* Q_bwe_exc+16 */ + *mem_csfilt = Mpy_32_16_1( excNoisyEnv[i], neg_csfilt_den2[1] ); + move32(); /* Q_bwe_exc+16 */ + } + + create_random_vector_fx( exc4k, L_FRAME16k / 4, bwe_seed ); + + /* Ensure pow22 is greater than zero when computing normalization */ + Lmax = 0; + move32(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4k_32[i] = Mpy_32_16_1( excNoisyEnv[i], exc4k[i] ); + move32(); /* Q_bwe_exc+6 */ + Lmax = L_max( Lmax, L_abs( exc4k_32[i] ) ); + } + + IF( Lmax == 0 ) + { + pow22 = 1; + move16(); + n2 = 0; + move16(); + set16_fx( exc4k_frac, 0, L_FRAME16k / 4 ); + } + ELSE + { + n2 = norm_l( Lmax ); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4k_frac[i] = extract_h( L_shl_o( exc4k_32[i], n2, &Overflow ) ); /* Q(14-n2) */ + move16(); + } + n2 = sub( sub( 30, n2 ), add( Q_bwe_exc, 6 ) ); + pow22 = 1; + move32(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + L_tmp = L_mult_o( exc4k_frac[i], exc4k_frac[i], &Overflow ); /* Q29 */ + pow22 = L_add_o( pow22, L_shr( L_tmp, 7 ), &Overflow ); /* Q22 */ + } + } + + test(); + test(); + IF( EQ_16( coder_type, UNVOICED ) || ( igf_flag != 0 && LT_16( avg_voice_fac, 6654 /*0.2 in Q15 */ ) ) ) + { + L_tmp = root_a_over_b_fx( pow1, sub( 22, shl( n1, 1 ) ), pow22, sub( 22, shl( n2, 1 ) ), &exp ); + scale = round_fx_o( L_shl_o( L_tmp, exp, &Overflow ), &Overflow ); /*Q15 */ + sc = sub( add( n2, Q_bwe_exc ), 14 ); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + exc4kWhtnd[i] = round_fx_o( L_shl_o( L_mult_o( exc4k_frac[i], scale, &Overflow ), sc, &Overflow ), &Overflow ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ + move16(); + } + } + ELSE + { + sc = sub( add( n2, Q_bwe_exc ), 14 ); /* Q_bwe_exc+n2-14*/ + + k = 0; + move16(); + FOR( i = 0; i < 4; i++ ) + { + test(); + IF( igf_flag != 0 && EQ_16( coder_type, VOICED ) ) + { + /*tmp_vfac = 2*voice_factors[i]; + tmp_vfac = min(1, tmp_vfac);*/ + tmp_vfac = shl_o( voice_factors[i], 1, &Overflow ); + } + ELSE + { + tmp_vfac = voice_factors[i]; + move16(); + } + + Ltemp1 = root_a_fx( L_deposit_h( tmp_vfac ), 31, &exp ); + temp1 = round_fx_o( L_shl_o( Ltemp1, exp, &Overflow ), &Overflow ); /* Q15 */ + L_tmp = Mpy_32_16_1( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ + Ltemp2 = root_a_over_b_fx( L_tmp, sub( 22, shl( n1, 1 ) ), pow22, sub( 22, shl( n2, 1 ) ), &exp ); + temp2 = round_fx_o( L_shl_o( Ltemp2, exp, &Overflow ), &Overflow ); /* Q15 */ + FOR( j = 0; j < L_FRAME16k / 16; j++ ) + { + L_tmp = L_mult_o( temp1, exc4kWhtnd[k], &Overflow ); /* Q(16+Q_bwe_exc) */ + L_tmp = L_add_o( L_tmp, L_shl_o( L_mult_o( temp2, exc4k_frac[k], &Overflow ), sc, &Overflow ), &Overflow ); /* Q(16+Q_bwe_exc) */ + exc4kWhtnd[k] = round_fx_o( L_tmp, &Overflow ); /* Q_bwe_exc */ + move16(); + k = add( k, 1 ); + } + } + } + } + + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 ); + + + return; +} + +/*-------------------------------------------------------------------* + * GenWBSynth() + * + * Generate 16 KHz sampled highband component from synthesized highband + *-------------------------------------------------------------------*/ + +void GenWBSynth_fx( + const Word16 *input_synspeech, /* i : input synthesized speech Qx*/ + Word16 *shb_syn_speech_16k, /* o : output highband compnent Qx*/ + Word16 *state_lsyn_filt_shb1, /* i/o: memory Qx*/ + Word16 *state_lsyn_filt_shb2 /* i/o: memory Qx*/ +) +{ + Word16 speech_buf_16k1[L_FRAME16k], speech_buf_16k2[L_FRAME16k]; + Word16 i, maxm, nor; + Word16 input_synspeech_temp[L_FRAME16k / 4]; + + maxm = 0; + move16(); + FOR( i = 0; i < L_FRAME16k / 4; i++ ) + { + maxm = s_max( maxm, abs_s( input_synspeech[i] ) ); + } + FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) + { + maxm = s_max( maxm, abs_s( state_lsyn_filt_shb1[i] ) ); + } + FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) + { + maxm = s_max( maxm, abs_s( state_lsyn_filt_shb2[i] ) ); + } + + nor = s_max( sub( norm_s( maxm ), 3 ), 0 ); /* Headroom = 3 */ + IF( maxm == 0 ) + nor = 15; + move16(); + + Copy_Scale_sig( input_synspeech, input_synspeech_temp, L_FRAME16k / 4, nor ); + Scale_sig( state_lsyn_filt_shb1, 2 * ALLPASSSECTIONS_STEEP, nor ); + Scale_sig( state_lsyn_filt_shb2, 2 * ALLPASSSECTIONS_STEEP, nor ); + Interpolate_allpass_steep_fx( input_synspeech_temp, state_lsyn_filt_shb1, L_FRAME16k / 4, speech_buf_16k1 ); + Interpolate_allpass_steep_fx( speech_buf_16k1, state_lsyn_filt_shb2, L_FRAME16k / 2, speech_buf_16k2 ); + flip_spectrum_fx( speech_buf_16k2, shb_syn_speech_16k, L_FRAME16k ); + + Scale_sig( shb_syn_speech_16k, L_FRAME16k, negate( nor ) ); + Scale_sig( state_lsyn_filt_shb1, 2 * ALLPASSSECTIONS_STEEP, negate( nor ) ); + Scale_sig( state_lsyn_filt_shb2, 2 * ALLPASSSECTIONS_STEEP, negate( nor ) ); + + return; +} + + +void find_td_envelope_fx( + const Word16 inp[], /* i : input signal Qx */ + const Word16 len, /* i : length of the input signal */ + const Word16 len_h, /* i : length of the MA filter */ + Word16 mem_h[], /* i/o: memory of the MA filter, length len_h/2 Qx */ + Word16 out[] /* o : td envelope of the input signal Qx */ +) +{ + Word16 k, K; + Word16 buf_in[L_FRAME16k + MAX_LEN_MA_FILTER], *p_in, *p_out, *p_prev, w; + Word16 tmp1, tmp2; + + assert( len > 0 && len <= L_FRAME16k ); + + // len_h is 20 at all calling locations + K = 10; /* length of FIR filter memory = half of the total filter length */ + move16(); + w = 1639; /* 1 / 20 in Q15 */ /* MA filtering coefficient */ + move16(); + + /* copy filter memory to the input buffer */ + IF( mem_h != NULL ) + { + Copy( mem_h, buf_in, K ); + } + ELSE + { + /* no memory available, use the first len_h/2 samples as memory */ + p_in = buf_in; + FOR( k = 0; k < K; k++ ) + { + *p_in++ = mult_r( abs_s( inp[k] ), w ); /* Qx */ + move16(); + } + } + + /* take the absolute value of the input signal and copy it to the input buffer */ + /* multiply each value by 1 / filter length */ + p_in = &buf_in[K]; + FOR( k = 0; k < len; k++ ) + { + *p_in++ = mult_r( abs_s( inp[k] ), w ); /* Qx */ + move16(); + } + + /* update filter memory from the end of the input buffer */ + IF( mem_h != NULL ) + { + Copy( &buf_in[len], mem_h, K ); + } + + /* do MA filtering */ + out[0] = sum16_fx( buf_in, len_h ); + move16(); + p_out = &buf_in[0]; /* pointer to leaving sample */ + p_in = &buf_in[len_h]; /* pointer to entering sample*/ + FOR( k = 1; k < len - K; k++ ) + { + tmp1 = *p_out++; + move16(); + tmp2 = *p_in++; + move16(); + out[k] = add( sub( out[k - 1], tmp1 ), tmp2 ); /* Qx */ + move16(); + } + + /* use IIR filtering to extrapolate the last K samples */ + p_in = &buf_in[len - K]; + p_out = &out[len - K]; + p_prev = p_out - 1; + FOR( k = 0; k < K; k++ ) + { + tmp1 = *p_in++; + move16(); + tmp2 = *p_prev++; + move16(); + *p_out++ = add( mult_r( 1638 /* 0.05f in Q15 */, ( tmp1 ) ), mult_r( 31130 /* 0.95f in Q15 */, ( tmp2 ) ) ); + move16(); + } + + return; +} + + +/*======================================================================================*/ +/* FUNCTION : void GenShapedSHBExcitation_fx () */ +/*--------------------------------------------------------------------------------------*/ +/* PURPOSE : Synthesize spectrally shaped highband excitation signal */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* _(Word16) coder_type : coding type Q_bwe_exc */ +/* _(Word16) bwidth : input signal bwidth Q0 */ +/* _(Word16*) bwe_exc_extended :bwidth extended exciatation Q_bwe_exc */ +/* _(Word16[]) voice_factors :voicing factors Q15 */ +/* _(Word16*) lpc_shb :lpc coefficients Q12 */ +/* _(Word16*) Q_bwe_exc :Q Format of bwe_exc_extended */ +/* _(Word16) L_frame : Frame length - determines whether 12.8 or 16kHz core */ +/* _(Word16) last_L_frame : last L_frame */ +/*--------------------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _(Word16*)excSHB :synthesized shaped shb excitation Q_bwe_exc */ +/* _(Word16*)White_exc16k :white excitation for the Fullband extension Q_bwe_exc */ +/* _(Word16*)slope :slope +ve (high freq > low freq), -ve or neutral Q12 */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _(Word16*)mem_csfilt :memory */ +/* _(Word16*)mem_genSHBexc_filt_down_shb :memory */ +/* _(Word16*)state_lpc_syn :memory */ +/* _(Word16[]) bwe_seed :random number generator seed */ +/* _(Word16[]) lpf_14k_mem :memory */ +/* _(Word32[])Hilbert_Mem :memory */ +/*--------------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*--------------------------------------------------------------------------------------*/ +/* CALLED FROM : RX */ +/*======================================================================================*/ +void GenShapedSHBExcitation_fx( + Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/ + const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ + Word16 *White_exc16k_FB, /* o : white excitation for the Fullband extension Q_bwe_exc */ + Word32 *mem_csfilt, /* i/o: memory */ + Word16 *mem_genSHBexc_filt_down_shb, /* i/o: memory */ + Word16 *state_lpc_syn, /* i/o: memory */ + const Word16 coder_type, /* i : coding type */ + const Word16 *bwe_exc_extended, /* i : bwidth extended excitation */ + Word16 bwe_seed[], /* i/o: random number generator seed */ + Word16 voice_factors[], /* i : voicing factor*/ + const Word16 extl, /* i : extension layer */ + Word16 *tbe_demph, /* i/o: de-emphasis memory */ + Word16 *tbe_premph, /* i/o: pre-emphasis memory */ + Word16 *lpc_shb_sf, /* i: LP coefficients */ + const Word32 shb_ener_sf_32, /* i: input shb ener, Q31 */ + Word16 *shb_res_gshape, /* i: input res gain shape, Q14 */ + Word16 *shb_res, + Word16 *vf_ind, + const Word16 formant_fac, /* i : Formant sharpening factor [0..1] */ + Word16 fb_state_lpc_syn[], /* i/o: memory */ + Word16 *fb_tbe_demph, /* i/o: fb de-emphasis memory */ + Word16 *Q_bwe_exc, + Word16 *Q_bwe_exc_fb, + const Word16 Q_shb, + Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ + Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ + const Word32 bitrate, + const Word16 prev_bfi +#ifdef ADD_IVAS_TBE_CODE + , /* i : previous frame was concealed */ + const Word16 element_mode, /* i : element mode */ + const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ + Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ + Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ + const Word32 extl_brate, /* i : extension layer bitarte */ + const Word16 MSFlag, /* i : Multi Source flag */ + Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ + Word16 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ + Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ + Word16 *Env_error, /* o : error in SHB residual envelope modelling*/ + Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */ +#endif +) +{ + Word16 i, j, k; + Word16 wht_fil_mem[LPC_WHTN_ORDER]; + Word16 lpc_whtn[LPC_WHTN_ORDER + 1]; + Word16 R_h[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech MSB */ + Word16 R_l[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech LSB */ + Word16 Q_R; + Word32 LepsP[LPC_WHTN_ORDER + 1]; + Word16 exc32k[L_FRAME32k], exc16k[L_FRAME16k]; + Word32 pow1, pow22; + Word16 scale, temp1, temp2; + + Word16 excTmp2[L_FRAME16k]; + Word16 *White_exc16k; + Word16 excNoisyEnv[L_FRAME16k]; + Word16 csfilt_num2[1] = { 6554 }; /*0.2 in Q15 */ + move16(); + Word16 neg_csfilt_den2[2] = { -32767, 26214 }; /* {1.0f, -0.8f} */ + move16(); + move16(); + Word16 varEnvShape; + Word16 fb_deemph_fac = 15729; /*0.48f in Q15 */ + move16(); + Word16 exc16kWhtnd[L_FRAME16k]; + + Word32 L_tmp; + Word16 vf_tmp; + Word16 tmp, exp, tmp2; + Word16 voiceFacEst[NB_SUBFR16k]; + Word16 zero_mem[LPC_SHB_ORDER]; + Word32 syn_shb_ener_sf[4]; + Word16 tempSHB[80]; + Word16 Q_pow1, Q_pow22; + + Word32 L_tmp2, L_tmp3, L_tmp4; + Word16 temp; + + Word16 White_exc16k_FB_temp[L_FRAME16k]; + Word32 White_exc16k_32[L_FRAME16k]; + Word16 Q_temp; + Word16 prev_Q_bwe_exc_fb; + +#ifdef ADD_IVAS_TBE_CODE + Word32 tempD; + Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; + Word16 cbsize; + Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; + Word16 c0, c1, c2, c3, c4, c5, g1, g2, g, den; + Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; + Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; + Word16 flag_plosive; + Word16 delta; + Word16 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; + + mix_factor = 0.0f; +#endif + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); + set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); + + FOR( i = 0; i < L_FRAME32k; i = i + 2 ) + { + exc32k[i] = negate( bwe_exc_extended[i] ); + move16(); + exc32k[i + 1] = bwe_exc_extended[i + 1]; + move16(); + } + + /* Decimate by 2 */ + Decimate_allpass_steep_fx( exc32k, mem_genSHBexc_filt_down_shb, 2 * L_FRAME16k, exc16k ); + /* i: exc32k in Q_bwe_exc */ + /* o: exc16k in Q_bwe_exc */ + + autocorr_fx( exc16k, LPC_WHTN_ORDER + 1, R_h, R_l, &Q_R, L_FRAME16k, win_flatten_fx, 0, 1 ); + /* Ensure R[0] isn't zero when entering Levinson Durbin */ + R_l[0] = s_max( R_l[0], 1 ); + move16(); + FOR( i = 1; i <= LPC_WHTN_ORDER; i++ ) + { + L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); + L_Extract( L_tmp, &R_h[i], &R_l[i] ); + } + E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER, NULL ); + Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); + fir_fx( exc16k, lpc_whtn, exc16kWhtnd, wht_fil_mem, L_FRAME16k, LPC_WHTN_ORDER, 0, 3 ); + + /* i: exc16k in Q_bwe_exc */ + /* o: exc16kWhtnd in Q_bwe_exc */ + +#ifdef ADD_IVAS_TBE_CODE + IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) +#else + IF( GE_32( bitrate, ACELP_24k40 ) ) +#endif + { + temp2 = 0; + move16(); + FOR( j = 0; j < 4; j++ ) + { + temp1 = shb_res_gshape[j]; + move16(); + FOR( i = 0; i < 80; i++ ) + { + exc16kWhtnd[temp2 + i] = round_fx( L_shl( L_mult( exc16kWhtnd[temp2 + i], temp1 ), 1 ) ); + move16(); + /* exc16kWhtnd in Q_bwe_exc, shb_res_gshape in Q14 */ + } + temp2 = add( temp2, 80 ); + } + } + + /* Estimate pow1 associated with Low band nonlinear extended excitation */ + /* pow1=0.00001f */ + tmp = sub( shl( *Q_bwe_exc, 1 ), 31 ); + pow1 = L_shl_sat( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc) */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + /*excTmp2[k ] = (float)(fabs(exc16kWhtnd[k]));*/ + excTmp2[k] = abs_s( exc16kWhtnd[k] ); + move16(); + + /* pow1 += exc16kWhtnd[k] * exc16kWhtnd[k]; */ + pow1 = L_mac0_sat( pow1, exc16kWhtnd[k], exc16kWhtnd[k] ); /* 2*Q_bwe_exc */ + } + Q_pow1 = shl( *Q_bwe_exc, 1 ); + + test(); +#ifdef ADD_IVAS_TBE_CODE + IF( EQ_16( flag_ACELP16k, 0 ) ) +#else + IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) ) +#endif + { + /* varEnvShape = mean_fx(voice_factors, 4); */ + /* unroll the loop */ + L_tmp = L_mult( voice_factors[0], 8192 ); + L_tmp = L_mac( L_tmp, voice_factors[1], 8192 ); + L_tmp = L_mac( L_tmp, voice_factors[2], 8192 ); + varEnvShape = mac_r( L_tmp, voice_factors[3], 8192 ); /* varEnvShape in Q15 */ + } + ELSE /* 16k core */ + { + /* varEnvShape = mean_fx(voice_factors, 5); */ + /* unroll the loop */ + L_tmp = L_mult( voice_factors[0], 6554 ); + L_tmp = L_mac( L_tmp, voice_factors[1], 6554 ); + L_tmp = L_mac( L_tmp, voice_factors[2], 6554 ); + L_tmp = L_mac( L_tmp, voice_factors[3], 6554 ); + varEnvShape = mac_r( L_tmp, voice_factors[4], 6554 ); /* varEnvShape in Q15 */ + } + + IF( EQ_16( extl, FB_TBE ) ) + { + /*pow(varEnvShape,3) */ + tmp = mult_r( varEnvShape, varEnvShape ); + tmp = mult_r( tmp, varEnvShape ); + + /* max_val((0.68f - (float)pow(varEnvShape, 3)), 0.48f); */ + fb_deemph_fac = sub( 22282 /*0.68f Q15*/, tmp ); + fb_deemph_fac = s_max( fb_deemph_fac, 15729 /*0.48f Q15*/ ); + } + + /*varEnvShape = 1.09875f - 0.49875f * varEnvShape; */ + varEnvShape = msu_r( 1179773824l /*0.549375f Q31*/, 8172 /*0.249375f Q15*/, varEnvShape ); + + /*varEnvShape = min( max_val(varEnvShape, 0.6f), 0.999f); */ + varEnvShape = s_max( varEnvShape, 9830 /*0.3f Q15*/ ); + varEnvShape = s_min( varEnvShape, 16368 /*0.4995f Q15*/ ); + varEnvShape = shl( varEnvShape, 1 ); + csfilt_num2[0] = sub( MAX_16, varEnvShape ); + move16(); + neg_csfilt_den2[1] = varEnvShape; + move16(); + + test(); + test(); + test(); +#ifdef ADD_IVAS_TBE_CODE + IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) +#else + IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) +#endif + { + /* pre-init smoothing filter to avoid energy drop outs */ + L_tmp = L_mult( excTmp2[0], 1638 ); + FOR( i = 1; i < L_SUBFR16k / 4; i++ ) + { + L_tmp = L_mac( L_tmp, excTmp2[i], 1638 ); /*1638 = 1/20 in Q15*/ + } + /*L_tmp = sum(excTmp2, L_SUBFR16k/4)*(1/20) where L_SUBFR16k/4 =20 */ + + /* don't apply for FB in case the FB start-frame was potentially lost - White_exc16k is very sensitive to enery mismatch between enc - dec */ + /* rather stick to the more conservative approach, to avoid potential clippings */ + test(); + IF( !( prev_bfi && EQ_16( extl, FB_TBE ) ) ) + { + /* use weak smoothing for 1st frame after switching to make filter recover more quickly */ + varEnvShape = 26214 /*0.8f Q15*/; + move16(); + csfilt_num2[0] = sub( MAX_16, varEnvShape ); + move16(); + neg_csfilt_den2[1] = varEnvShape; + move16(); + } + + *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); + move32(); + } +#ifdef ADD_IVAS_TBE_CODE + if ( MSFlag > 0 ) + { + varEnvShape = 0.995f; + csfilt_num2[0] = 1.0f - varEnvShape; + csfilt_den2[1] = -varEnvShape; + } + + White_exc16k = exc16k; + + /* Track the low band envelope */ + if ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT ) + { + if ( extl_brate != SWB_TBE_1k10 && extl_brate != SWB_TBE_1k75 ) + { + mem_csfilt_left = 0.0f; + mem_csfilt_right = 0.0f; + for ( k = 0; k < L_FRAME16k; k++ ) + { + excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k]; + mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k]; + excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1]; + mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1]; + } + + alpha = 0.0f; + step = 1.0f / L_FRAME16k; + for ( k = 0; k < L_FRAME16k; k++ ) + { + excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + ( 1 - alpha ) * excNoisyEnvRight[k]; + alpha += step; + } + } + } + else +#endif + { + /* Track the low band envelope */ + L_tmp = *mem_csfilt; + move32(); + FOR( i = 0; i < L_FRAME16k; i++ ) + { + excNoisyEnv[i] = mac_r( L_tmp, csfilt_num2[0], excTmp2[i] ); + move16(); + /* excNoisyEnv : Q_bwe_exc, + *mem_csfilt: Q_bwe_exc+16, excTmp2: Q_bwe_exc, csfilt_num2[0] Q15 */ + L_tmp = L_mult( excNoisyEnv[i], neg_csfilt_den2[1] ); /* Q_bwe_exc+16 */ + } + *mem_csfilt = L_tmp; + move32(); + } +#ifdef ADD_IVAS_TBE_CODE + if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) + { + /* generate gaussian (white) excitation */ + for ( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k[k] = (float) own_random( &bwe_seed[0] ); + } + + /* normalize the amplitude of the gaussian excitation to that of the LB exc. */ + pow22 = POW_EXC16k_WHTND; + v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), White_exc16k, L_FRAME16k ); + } + else +#endif + { + /* create a random excitation - Reuse exc16k memory */ + White_exc16k = exc16k; + create_random_vector_fx( White_exc16k, L_FRAME, bwe_seed ); + create_random_vector_fx( White_exc16k + L_FRAME, L_FRAME16k - L_FRAME, bwe_seed ); + + L_tmp = L_deposit_l( 0 ); + tmp = add( *Q_bwe_exc, 1 ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + L_tmp4 = L_shl_sat( L_deposit_l( White_exc16k[k] ), tmp ); + if ( excNoisyEnv[k] != 0 ) + { + L_tmp4 = L_mult( excNoisyEnv[k], White_exc16k[k] ); /* (Q_bwe_exc) +5 +1*/ + } + White_exc16k_32[k] = L_tmp4; + move32(); + L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); + } + Q_temp = norm_l( L_tmp ); + if ( L_tmp == 0 ) + { + Q_temp = 31; + move16(); + } + /*Copy_Scale_sig( White_exc16k, White_exc16k, L_FRAME16k, sub(NOISE_QFAC, 5) );)*/ + /* White_exc16k in Q6 */ + + /* calculate pow22 */ + /* pow22=0.00001f */ + tmp = sub( shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ), 31 ); + pow22 = L_shl( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc-NOISE_QADJ) */ + tmp = sub( NOISE_QFAC, 5 ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + /* White_exc16k[k] *= excNoisyEnv[k]; */ + White_exc16k[k] = mult_r( excNoisyEnv[k], shl( White_exc16k[k], tmp ) ); + move16(); + /* i: excNoisyEnv in (Q_bwe_exc) */ + /* i: White_exc16k in Q6 */ + /* o: White_exc16k in (Q_bwe_exc-NOISE_QADJ) */ + /* pow22 += White_exc16k[k] * White_exc16k[k]; */ + pow22 = L_mac0_sat( pow22, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_bwe_exc-NOISE_QADJ)*/ + } + /*Q_pow22 = sub( shl(*Q_bwe_exc,1), 18 );*/ + Q_pow22 = shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ); + } + +#ifdef ADD_IVAS_TBE_CODE + flag_plosive = 0; + move16(); + test(); + test(); + test(); + IF(GE_32(extl_brate, SWB_TBE_2k8) || EQ_32(extl_brate, SWB_TBE_1k10) || EQ_32(extl_brate, SWB_TBE_1k75))) +#else + IF( GE_32( bitrate, ACELP_24k40 ) ) +#endif + { + IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ + { +#ifdef ADD_IVAS_TBE_CODE + if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) + { + /* calculate TD envelopes of exc16kWhtnd and White_exc16k */ + find_td_envelope( White_exc16k, L_FRAME16k, 20, NULL, EnvWhiteExc16k ); + find_td_envelope( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd ); + + for ( k = 0; k < L_FRAME4k; k++ ) + { + EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k]; + EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k]; + } + + /* calculate the optimal mix factor */ + c0 = c1 = c2 = c3 = c4 = c5 = 0.0f; + for ( i = 0; i < NUM_SHB_SUBGAINS; i++ ) + { + c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + + c0 += c0_part[i]; + c1 += c1_part[i]; + c2 += c2_part[i]; + c3 += c3_part[i]; + c4 += c4_part[i]; + c5 += c5_part[i]; + } + + den = 4.0f * c0 * c2 - c4 * c4; + g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; + g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; + + *Env_error = 0.0f; + flag_plosive = 0; + for ( i = 0; i < NUM_SHB_SUBGAINS; i++ ) + { + Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i]; + *Env_error += Env_error_part[i]; + + if ( Env_error_part[i] > THR_ENV_ERROR_PLOSIVE ) + { + /* envelope error is too high -> likely a plosive */ + flag_plosive = 1; + } + } + + if ( flag_plosive ) + { + /* plosive detected -> set the mixing factor to 0 */ + *vf_ind = 0; + mix_factor = 0.0f; + } + else + { + /* normalize gain */ + g = g2 / ( g1 + g2 ); + + /* quantization of the mixing factor */ + cbsize = 1 << NUM_BITS_SHB_VF; + delta = 1.0f / ( cbsize - 1 ); + if ( g > 1.0f ) + { + g = 1.0f; + } + else if ( g < delta ) + { + /* prevent low gains to be quantized to 0 as this is reserved for plosives */ + g = delta; + } + + *vf_ind = usquant( g, &mix_factor, 0.0f, 1.0f / ( cbsize - 1 ), cbsize ); + } + } + else +#endif + { + Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, + ( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); + tmp = voiceFacEst[0]; + move16(); + tmp2 = MAX_16; + move16(); + if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) + { + tmp2 = 26214 /*0.8f Q15*/; + move16(); + } + } + } + ELSE /* decoder side */ + { +#ifdef ADD_IVAS_TBE_CODE + if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) + { + if ( *vf_ind == 0 ) + { + mix_factor = 0.0f; + flag_plosive = 1; + } + else + { + mix_factor = usdequant( *vf_ind, 0.0f, 1.0f / ( ( 1 << NUM_BITS_SHB_VF ) - 1 ) ); + } + } + else +#endif + { + /* *vf_ind is an integer scale by 0.125f*/ + tmp = shl( *vf_ind, ( 15 - 3 ) ); + tmp2 = MAX_16; + move16(); + if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) + { + tmp2 = 26214 /*0.8f Q15*/; + move16(); + } + } + } +#ifdef ADD_IVAS_TBE_CODE + IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) +#endif + { + voice_factors[0] = mult_r( voice_factors[0], tmp2 ); + move16(); + voice_factors[1] = mult_r( voice_factors[1], tmp2 ); + move16(); + voice_factors[2] = mult_r( voice_factors[2], tmp2 ); + move16(); + voice_factors[3] = mult_r( voice_factors[3], tmp2 ); + move16(); + voice_factors[4] = mult_r( voice_factors[4], tmp2 ); + move16(); + } + } +#ifdef ADD_IVAS_TBE_CODE + if ( element_mode >= IVAS_CPE_DFT && nlExc16k != NULL ) + { + /* save buffers for IC-BWE */ + mvr2r( exc16kWhtnd, nlExc16k, L_FRAME16k ); + v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), mixExc16k, L_FRAME16k ); + } +#endif + + tmp = sub( Q_temp, 3 ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k_FB[k] = round_fx( L_shl( White_exc16k_32[k], tmp ) ); /* Q_bwe_exc +5 +1 +Q_temp -16 -3 */ + } + prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; + move16(); + *Q_bwe_exc_fb = sub( add( *Q_bwe_exc, Q_temp ), 13 ); + move16(); + deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph ); + /* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */ + /* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */ +#ifdef ADD_IVAS_TBE_CODE + if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) + { + if ( !flag_plosive ) /* use only LB excitation in case of plosives */ + { + /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */ + old_scale = (float) sqrt( *prev_pow_exc16kWhtnd / pow1 ); + new_scale = 1.0f; + step_scale = ( new_scale - old_scale ) / ( L_FRAME16k / 2 ); + scale = old_scale; + + /* interpolate between the old and the new value of the mixing factor */ + old_fact = *prev_mix_factor; + new_fact = mix_factor; + step = ( new_fact - old_fact ) / ( L_FRAME16k / 2 ); + fact = old_fact; + + /* mixing of LB and gaussian excitation in the first half of the frame */ + for ( k = 0; k < L_FRAME16k / 2; k++ ) + { + exc16kWhtnd[k] = (float) fact * ( White_exc16k[k] * scale ) + (float) ( 1 - fact ) * exc16kWhtnd[k]; + fact += step; + scale += step_scale; + } + + /* mixing of LB and gaussian excitation in the second half of the frame */ + for ( ; k < L_FRAME16k; k++ ) + { + exc16kWhtnd[k] = (float) new_fact * White_exc16k[k] + (float) ( 1 - new_fact ) * exc16kWhtnd[k]; + } + } + preemph( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); + } + else +#endif + { +#ifdef ADD_IVAS_TBE_CODE + if ( coder_type == UNVOICED || MSFlag == 1 ) +#else + IF( EQ_16( coder_type, UNVOICED ) ) +#endif + { + L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); + scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + /* White_exc16k: (Q_bwe_exc-NOISE_QADJ), scale: Q15 */ + L_tmp = L_mult( White_exc16k[k], scale ); + /* L_tmp: (Q_bwe_exc-NOISE_QADJ) + 15 + 1 */ + exc16kWhtnd[k] = round_fx( L_shl( L_tmp, NOISE_QADJ ) ); + move16(); + /* exc16kWhtnd: Q_bwe_exc */ + } + PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); + /* i/o: exc16kWhtnd (Q_bwe_exc) */ + /* i/o: tbe_premph (Q_bwe_exc) */ + } + ELSE + { + Word16 nbSubFr, lSubFr; + Word16 tempQ15; + Word32 tempQ31; + /*nbSubFr = ( bitrate < ACELP_24k40 )? NB_SUBFR : NB_SUBFR16k;*/ + nbSubFr = NB_SUBFR16k; + lSubFr = ( L_FRAME16k / NB_SUBFR16k ); + IF( LT_32( bitrate, ACELP_24k40 ) ) + { + nbSubFr = NB_SUBFR; + move16(); + lSubFr = ( L_FRAME16k / NB_SUBFR ); + move16(); + } + k = 0; + FOR( i = 0; i < nbSubFr; i++ ) + { + test(); + IF( EQ_16( coder_type, VOICED ) && ( LT_32( bitrate, ACELP_24k40 ) ) ) + { + exp = 0; + move16(); + tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ + temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + exp = 0; + move16(); + tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ + temp = sub( MAX_16, temp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ + } + ELSE + { + /* Adjust noise mixing for formant sharpening filter */ + tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); + /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ + vf_tmp = sub( MAX_16, tempQ15 ); + vf_tmp = mult_r( voice_factors[i], vf_tmp ); + + exp = 0; + move16(); + tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ + temp = sub( MAX_16, vf_tmp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ + } + + FOR( j = 0; j < lSubFr; j++ ) + { + /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ + L_tmp = L_mult( temp2, White_exc16k[k + j] ); /* 16+(Q_bwe_exc-NOISE_QADJ)*/ + L_tmp = L_shl_sat( L_tmp, NOISE_QADJ ); /* 16+(Q_bwe_exc) */ + exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); + move16(); + /* Q_bwe_exc */ + } + k = add( k, lSubFr ); + + /* estimate the pre-emph factor */ + tempQ15 = sub( MAX_16, voice_factors[i] ); + exp = 0; + move16(); + temp = Sqrt16( tempQ15, &exp ); + temp = shl( temp, exp - 1 ); + + temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ + temp = div_s( temp, temp2 ); /* Q15 */ + temp = mult_r( PREEMPH_FAC, temp ); + + PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); + /* exc16kWhtnd: Q_bwe_exc; + tbe_premph: Q_bwe_exc*/ + } + } + } + +#ifdef ADD_IVAS_TBE_CODE + IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) +#else + IF( LT_32( bitrate, ACELP_24k40 ) ) +#endif + { + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: excSHB in Q_bwe_exc */ + } + ELSE + { + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); + + Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + + Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + + Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + + Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: tempSHB in Q_bwe_exc */ + /* o: syn_shb_ener_sf in (2*Q_bwe_exc+1) */ + IF( LE_32( bitrate, ACELP_32k ) ) + { + L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); + + /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ + tmp = shl( Q_shb, 1 ); + tmp2 = add( shl( *Q_bwe_exc, 1 ), 1 ); + L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ + + *Q_bwe_exc = sub( *Q_bwe_exc, exp ); + move16(); /* compensate for the exp shift */ + tmp2 = add( prev_Q_bwe_syn, n_mem2 ); + IF( GT_16( *Q_bwe_exc, tmp2 ) ) + { + L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); + *Q_bwe_exc = tmp2; + move16(); + } + FOR( i = 0; i < L_FRAME16k; i++ ) + { + L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ + exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ + move16(); + } + } + /* i: L_tmp2 in (Q31-exp) */ + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ + + /* Rescale the past memories: LP synth and SHB look ahead buffers */ + tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); + FOR( i = 0; i < LPC_SHB_ORDER; i++ ) + { + state_lpc_syn[i] = shl( state_lpc_syn[i], tmp ); + move16(); + } + FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) + { + excSHB[i] = shl( excSHB[i], tmp ); + move16(); + } + /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ + + Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in (Q_bwe_exc) */ + /* o: excSHB in (Q_bwe_exc) */ + } + + IF( EQ_16( extl, FB_TBE ) ) + { + tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); + Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); + Scale_sig( fb_tbe_demph, 1, tmp ); + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); + /* i: White_exc16k_FB in (14-n2) */ + /* o: White_exc16k_FB_temp in (14-n2) */ + + FOR( i = 0; i < 10; i++ ) + { + FOR( j = 0; j < 32; ++j ) + { + White_exc16k_FB_temp[i * 32 + j] = mult_r( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); + move16(); + } + } + + *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); + move16(); /**Q_bwe_exc_fb +35 +1 -16*/ + flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); + + deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); + } + ELSE + { + set16_fx( White_exc16k_FB, 0, L_FRAME16k ); + } + +#ifdef ADD_IVAS_TBE_CODE + *prev_pow_exc16kWhtnd = pow1; + *prev_mix_factor = mix_factor; +#endif + return; +} + +void GenShapedSHBExcitation_ivas_enc_fx( + Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/ + const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ + Word16 *White_exc16k_FB, /* o : white excitation for the Fullband extension Q_bwe_exc_fb */ + Word32 *mem_csfilt, /* i/o: memory */ + Word16 *mem_genSHBexc_filt_down_shb, /* i/o: memory */ + Word16 *state_lpc_syn, /* i/o: memory */ + const Word16 coder_type, /* i : coding type */ + const Word16 *bwe_exc_extended, /* i : bwidth extended excitation */ + Word16 bwe_seed[], /* i/o: random number generator seed */ + Word16 voice_factors[], /* i : voicing factor*/ + const Word16 extl, /* i : extension layer */ + Word16 *tbe_demph, /* i/o: de-emphasis memory */ + Word16 *tbe_premph, /* i/o: pre-emphasis memory */ + Word16 *lpc_shb_sf, /* i: LP coefficients */ + const Word32 shb_ener_sf_32, /* i: input shb ener, Q31 */ + Word16 *shb_res_gshape, /* i: input res gain shape, Q14 */ + Word16 *shb_res, + Word16 *vf_ind, + const Word16 formant_fac, /* i : Formant sharpening factor [0..1] */ + Word16 fb_state_lpc_syn[], /* i/o: memory */ + Word16 *fb_tbe_demph, /* i/o: fb de-emphasis memory */ + Word16 *Q_bwe_exc, + Word16 *Q_bwe_exc_fb, + const Word16 Q_shb, + Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ + Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ + const Word32 bitrate, + const Word16 prev_bfi, + const Word16 element_mode, /* i : element mode */ + const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ + Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ + Word16 *nlExc16k_e, /* i/o: exp of nlExc16k */ + Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ + Word16 *mixExc16k_e, /* i/o: exp of mixExc16k_fx */ + const Word32 extl_brate, /* i : extension layer bitarte */ + const Word16 MSFlag, /* i : Multi Source flag */ + Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ + Word16 Q_EnvSHBres_4k, + Word32 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ + Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ + Word16 *Env_error, /* o : error in SHB residual envelope modelling*/ + Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */ +) +{ + Word16 i, j, k; + Word16 wht_fil_mem[LPC_WHTN_ORDER]; + Word16 lpc_whtn[LPC_WHTN_ORDER + 1]; + Word16 R_h[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech MSB */ + Word16 R_l[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech LSB */ + Word16 Q_R; + Word32 LepsP[LPC_WHTN_ORDER + 1]; + Word16 exc32k[L_FRAME32k], exc16k[L_FRAME16k]; + Word32 pow1, pow22; + Word16 scale, temp1, temp2, temp3; + + Word16 excTmp2[L_FRAME16k]; + Word16 *White_exc16k; + Word16 Q_White_exc16k; + Word16 excNoisyEnv[L_FRAME16k]; + Word16 csfilt_num2[1] = { 6554 }; /*0.2 in Q15 */ + move16(); + Word16 neg_csfilt_den2[2] = { -32767, 26214 }; /* {1.0f, -0.8f} */ + move16(); + move16(); + Word16 varEnvShape; + Word16 fb_deemph_fac = 15729; /*0.48f in Q15 */ + Word16 exc16kWhtnd[L_FRAME16k]; + + Word32 L_tmp; + Word16 vf_tmp; + Word16 tmp, exp, tmp2 = 0; + move16(); + Word16 voiceFacEst[NB_SUBFR16k]; + Word16 zero_mem[LPC_SHB_ORDER]; + Word32 syn_shb_ener_sf[4]; + Word16 syn_shb_ener_sf_q[4]; + Word16 tempSHB[80]; + Word16 Q_pow1, Q_pow22; + + Word32 L_tmp2, L_tmp3, L_tmp4; + Word16 temp; + + Word16 White_exc16k_FB_temp[L_FRAME16k]; + Word32 White_exc16k_32[L_FRAME16k]; + Word16 White_exc16k_tmp[L_FRAME16k]; + Word16 prev_Q_bwe_exc_fb; + + Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; + Word16 cbsize; + Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; + Word32 c0, c1, c2, c3, c4, c5, den; + Word16 g1, g2, g, g1_e, g2_e, g_e, den_e, shift, tmp_e, tmp1_e; + Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; + Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; + Word16 flag_plosive; + Word16 delta; + Word32 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; + Word64 W_tmp; + + mix_factor = 0; /* Q15 */ + move16(); + + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); + set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); + FOR( i = 0; i < L_FRAME32k; i = i + 2 ) + { + exc32k[i] = negate( bwe_exc_extended[i] ); // Q_bwe_exc + move16(); + exc32k[i + 1] = bwe_exc_extended[i + 1]; // Q_bwe_exc + move16(); + } + + /* Decimate by 2 */ + Decimate_allpass_steep_fx( exc32k, mem_genSHBexc_filt_down_shb, 2 * L_FRAME16k, exc16k ); // Q_bwe_exc + /* i: exc32k in Q_bwe_exc */ + /* o: exc16k in Q_bwe_exc */ + + autocorr_fx( exc16k, LPC_WHTN_ORDER + 1, R_h, R_l, &Q_R, L_FRAME16k, win_flatten_fx, 0, 1 ); // Q_R + /* Ensure R[0] isn't zero when entering Levinson Durbin */ + R_l[0] = s_max( R_l[0], 1 ); + move16(); + FOR( i = 1; i <= LPC_WHTN_ORDER; i++ ) + { + L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); + L_Extract( L_tmp, &R_h[i], &R_l[i] ); // Q_R + } + E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER, NULL ); + Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); // Q12 + fir_fx( exc16k, lpc_whtn, exc16kWhtnd, wht_fil_mem, L_FRAME16k, LPC_WHTN_ORDER, 0, 3 ); // Q_bwe_exc + + /* i: exc16k in Q_bwe_exc */ + /* o: exc16kWhtnd in Q_bwe_exc */ + + IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) + { + temp2 = 0; + move16(); + FOR( j = 0; j < 4; j++ ) + { + temp1 = shb_res_gshape[j]; + move16(); + FOR( i = 0; i < 80; i++ ) + { + exc16kWhtnd[temp2 + i] = round_fx( L_shl( L_mult( exc16kWhtnd[temp2 + i], temp1 ), 1 ) ); // Q_bwe_exc + move16(); + /* exc16kWhtnd in Q_bwe_exc, shb_res_gshape in Q14 */ + } + temp2 = add( temp2, 80 ); + } + } + + /* Estimate pow1 associated with Low band nonlinear extended excitation */ + /* pow1=0.00001f */ + tmp = sub( shl( *Q_bwe_exc, 1 ), 31 ); + W_tmp = W_shl( 21475 /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc) */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + /*excTmp2[k ] = (float)(fabs(exc16kWhtnd[k]));*/ + excTmp2[k] = abs_s( exc16kWhtnd[k] ); + move16(); + + /* pow1 += exc16kWhtnd[k] * exc16kWhtnd[k]; */ + W_tmp = W_mac_16_16( W_tmp, exc16kWhtnd[k], exc16kWhtnd[k] ); // 2*Q_bwe_exc+1 + } + exp = W_norm( W_tmp ); + pow1 = W_extract_h( W_shl( W_tmp, exp ) ); // 2*Q_bwe_exc+1+exp-32 = // tmp+exp + Q_pow1 = add( tmp, exp ); + + IF( flag_ACELP16k == 0 ) + { + /* varEnvShape = mean_fx(voice_factors, 4); */ + /* unroll the loop */ + L_tmp = L_mult( voice_factors[0], 8192 /*0.25 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[1], 8192 /*0.25 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[2], 8192 /*0.25 in Q15 */ ); + varEnvShape = mac_r( L_tmp, voice_factors[3], 8192 /*0.25 in Q15 */ ); /* varEnvShape in Q15 */ + } + ELSE /* 16k core */ + { + /* varEnvShape = mean_fx(voice_factors, 5); */ + /* unroll the loop */ + L_tmp = L_mult( voice_factors[0], 6554 /*0.2 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[1], 6554 /*0.2 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[2], 6554 /*0.2 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[3], 6554 /*0.2 in Q15 */ ); + varEnvShape = mac_r( L_tmp, voice_factors[4], 6554 /*0.2 in Q15 */ ); /* varEnvShape in Q15 */ + } + + IF( EQ_16( extl, FB_TBE ) ) + { + /*pow(varEnvShape,3) */ + tmp = mult_r( varEnvShape, varEnvShape ); + tmp = mult_r( tmp, varEnvShape ); + + /* max_val((0.68f - (float)pow(varEnvShape, 3)), 0.48f); */ + fb_deemph_fac = sub( 22282 /*0.68f Q15*/, tmp ); + fb_deemph_fac = s_max( fb_deemph_fac, 15729 /*0.48f Q15*/ ); + } + + /*varEnvShape = 1.09875f - 0.49875f * varEnvShape; */ + varEnvShape = msu_r( 1179773824l /*0.549375f Q31*/, 8172 /*0.249375f Q15*/, varEnvShape ); + + /*varEnvShape = min( max_val(varEnvShape, 0.6f), 0.999f); */ + varEnvShape = s_max( varEnvShape, 9830 /*0.3f Q15*/ ); + varEnvShape = s_min( varEnvShape, 16368 /*0.4995f Q15*/ ); + varEnvShape = shl( varEnvShape, 1 ); + csfilt_num2[0] = sub( MAX_16, varEnvShape ); // Q15 + move16(); + neg_csfilt_den2[1] = varEnvShape; // Q15 + move16(); + + test(); + test(); + test(); + test(); + IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) + { + /* pre-init smoothing filter to avoid energy drop outs */ + L_tmp = L_mult( excTmp2[0], 1638 ); + FOR( i = 1; i < L_SUBFR16k / 4; i++ ) + { + L_tmp = L_mac( L_tmp, excTmp2[i], 1638 ); /*1638 = 1/20 in Q15*/ + } + /*L_tmp = sum(excTmp2, L_SUBFR16k/4)*(1/20) where L_SUBFR16k/4 =20 */ + + /* don't apply for FB in case the FB start-frame was potentially lost - White_exc16k is very sensitive to enery mismatch between enc - dec */ + /* rather stick to the more conservative approach, to avoid potential clippings */ + test(); + IF( !( prev_bfi && EQ_16( extl, FB_TBE ) ) ) + { + /* use weak smoothing for 1st frame after switching to make filter recover more quickly */ + varEnvShape = 26214 /*0.8f Q15*/; + move16(); + csfilt_num2[0] = sub( MAX_16, varEnvShape ); + move16(); + neg_csfilt_den2[1] = varEnvShape; + move16(); + } + + *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); + move32(); + } + + IF( MSFlag > 0 ) + { + // varEnvShape = 0.995f; + varEnvShape = 32604; + move16(); + csfilt_num2[0] = 32768 - varEnvShape; + // csfilt_num2[0] = sub( 32767, varEnvShape ); + move16(); + neg_csfilt_den2[1] = varEnvShape; + move16(); + } + + White_exc16k = exc16k; + Word16 Q_excTmp2 = add( getScaleFactor16( excTmp2, L_FRAME16k ), *Q_bwe_exc ); + IF( *mem_csfilt ) + { + Q_excTmp2 = s_min( Q_excTmp2, sub( add( norm_l( *mem_csfilt ), *Q_bwe_exc ), 1 ) ); + } + test(); + /* Track the low band envelope */ + IF( EQ_16( element_mode, IVAS_CPE_TD ) || EQ_16( element_mode, IVAS_CPE_DFT ) ) + { + test(); + IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) + { + mem_csfilt_left = 0; + mem_csfilt_right = 0; + move16(); + move16(); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + // excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k]; + excNoisyEnvLeft[k] = add( mem_csfilt_left, mult_r( csfilt_num2[0], shl( excTmp2[k], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 + move16(); + // mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k]; + mem_csfilt_left = mult_r( neg_csfilt_den2[1], excNoisyEnvLeft[k] ); // Q_excTmp2 + // excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1]; + excNoisyEnvRight[L_FRAME16k - k - 1] = add( mem_csfilt_right, mult_r( csfilt_num2[0], shl( excTmp2[L_FRAME16k - k - 1], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 + move16(); + // mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1]; + mem_csfilt_right = mult_r( neg_csfilt_den2[1], excNoisyEnvRight[L_FRAME16k - k - 1] ); // Q_excTmp2 + } + + alpha = 0; + move16(); + // step = 1.0f / L_FRAME16k; + step = 102; // Q15 + move16(); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + // excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + (1 - alpha) * excNoisyEnvRight[k]; + excNoisyEnv[k] = add( mult_r( alpha, excNoisyEnvLeft[k] ), mult_r( sub( 32767, alpha ), excNoisyEnvRight[k] ) ); // Q_excTmp2 + move16(); + alpha = add( alpha, step ); + } + } + } + ELSE + { + /* Track the low band envelope */ + L_tmp = L_shl( *mem_csfilt, sub( Q_excTmp2, *Q_bwe_exc ) ); + move32(); + FOR( i = 0; i < L_FRAME16k; i++ ) + { + excNoisyEnv[i] = mac_r( L_tmp, csfilt_num2[0], shl( excTmp2[i], sub( Q_excTmp2, *Q_bwe_exc ) ) ); + move16(); + /* Work-around to avoid 0s for very small value*/ + test(); + test(); + test(); + test(); + if ( excNoisyEnv[i] == 0 && ( L_tmp != 0 || ( csfilt_num2[0] != 0 && excTmp2[i] != 0 ) ) ) + { + excNoisyEnv[i] = 1; + move16(); + } + /* excNoisyEnv : Q_excTmp2, + *mem_csfilt: Q_excTmp2+16, excTmp2: Q_excTmp2, csfilt_num2[0] Q_excTmp2 */ + L_tmp = L_mult( excNoisyEnv[i], neg_csfilt_den2[1] ); /* Q_excTmp2 + 16 */ + } + *mem_csfilt = L_shr( L_tmp, sub( Q_excTmp2, *Q_bwe_exc ) ); + move32(); + } + + test(); + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + /* generate gaussian (white) excitation */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k[k] = own_random( &bwe_seed[0] ); // Q0 + move16(); + } + + /* normalize the amplitude of the gaussian excitation to that of the LB exc. */ + Word32 pow22_inv = POW_EXC16k_WHTND_FX_INV_SQRT; // Q31 + move32(); + move32(); + pow22 = POW_EXC16k_WHTND_FX; + Q_pow22 = -6; + move16(); + // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), White_exc16k, L_FRAME16k); + Word16 pow1_exp = sub( Q31, Q_pow1 ); + Word32 temp_pow = Sqrt32( pow1, &pow1_exp ); + temp_pow = L_shl( Mpy_32_32( temp_pow, pow22_inv ), pow1_exp ); + /*Word16 out_exp; + Word32 temp_pow1 = root_a_over_b_fx(pow1, Q_pow1, pow22, Q_pow22, &out_exp); + temp_pow1 = L_shl(temp_pow1, out_exp);*/ + // v_multc_fixed_16_16(White_exc16k, round_fx(temp_pow), White_exc16k, L_FRAME16k); + L_tmp = 0; + move32(); + Q_White_exc16k = add( getScaleFactor16( White_exc16k, L_FRAME16k ), norm_l( temp_pow ) ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k_32[k] = Mpy_32_16_1( temp_pow, White_exc16k[k] ); // Q31 + Q0 - Q15 = Q16 + move32(); + White_exc16k[k] = round_fx( L_shl( White_exc16k_32[k], Q_White_exc16k ) ); // Q16 + Q_White_exc16k - Q16 = Q_White_exc16k + move16(); + L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); + } + } + ELSE + { + /* create a random excitation - Reuse exc16k memory */ + create_random_vector_fx( White_exc16k, L_FRAME, bwe_seed ); // Q5 + create_random_vector_fx( White_exc16k + L_FRAME, L_FRAME16k - L_FRAME, bwe_seed ); // Q5 + + L_tmp = L_deposit_l( 0 ); + tmp = add( *Q_bwe_exc, 1 ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + L_tmp4 = L_mult( excNoisyEnv[k], White_exc16k[k] ); /* (Q_excTmp2) +5 +1*/ + White_exc16k_32[k] = L_tmp4; /* (Q_excTmp2) +5 +1*/ + move32(); + L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); + } + /*Copy_Scale_sig( White_exc16k, White_exc16k, L_FRAME16k, sub(NOISE_QFAC, 5) );)*/ + /* White_exc16k in Q6 */ + + /* calculate pow22 */ + /* pow22=0.00001f */ + tmp = sub( shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ), 31 ); + W_tmp = W_shl( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(*Q_bwe_exc-NOISE_QADJ) */ + Q_White_exc16k = getScaleFactor32( White_exc16k_32, L_FRAME16k ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + /* White_exc16k[k] *= excNoisyEnv[k]; */ + White_exc16k[k] = extract_h( L_shl( White_exc16k_32[k], Q_White_exc16k ) ); // Q_excTmp2 + 6 + Q_White_exc16k - 16 ==> Q_excTmp2 + Q_White_exc16k - 10 + move16(); + /* i: excNoisyEnv in (Q_excTmp2) */ + /* i: White_exc16k in Q6 */ + /* o: White_exc16k in (Q_bwe_exc-NOISE_QADJ) */ + + /* pow22 += White_exc16k[k] * White_exc16k[k]; */ + W_tmp = W_mac0_16_16( W_tmp, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_excTmp2 + Q_White_exc16k - 10)*/ + } + Q_pow22 = W_norm( W_tmp ); + pow22 = W_extract_h( W_shl( W_tmp, Q_pow22 ) ); // 2*(Q_excTmp2 + Q_White_exc16k - 10)+Q_pow22-32 + Q_pow22 = sub( add( Q_pow22, shl( sub( add( Q_White_exc16k, Q_excTmp2 ), 10 ), 1 ) ), 32 ); + Q_White_exc16k = add( Q_White_exc16k, sub( Q_excTmp2, 10 ) ); + } + + flag_plosive = 0; + move16(); + test(); + test(); + test(); + IF( GE_32( extl_brate, SWB_TBE_2k8 ) || EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ + { +#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!! + test(); + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k_tmp[k] = shl( White_exc16k[k], sub( *Q_bwe_exc, Q_White_exc16k ) ); + move16(); + } + + /* calculate TD envelopes of exc16kWhtnd and White_exc16k */ + find_td_envelope_fx( White_exc16k_tmp, L_FRAME16k, 20, NULL, EnvWhiteExc16k ); /* Q_bwe_exc */ + find_td_envelope_fx( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd ); /* Q_bwe_exc */ + + FOR( k = 0; k < L_FRAME4k; k++ ) + { + EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k]; /* Q_bwe_exc */ + move16(); + EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k]; /* Q_bwe_exc */ + move16(); + } + + /* calculate the optimal mix factor */ + c0 = c1 = c2 = c3 = c4 = c5 = 0; /* Q0 */ + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + + temp1 = add( shl( *Q_bwe_exc, 1 ), 1 ); + temp2 = add( add( Q_EnvSHBres_4k, *Q_bwe_exc ), 1 ); + temp3 = add( shl( Q_EnvSHBres_4k, 1 ), 1 ); + FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) + { + // c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c0_part[i] = L_shr( sum2_fx( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ + move32(); + // c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c1_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ + move32(); + // c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c2_part[i] = L_shr( sum2_fx( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ + move32(); + // c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c3_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ + move32(); + // c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c4_part[i] = L_shr( Dot_product( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), sub( temp1, 1 ) ); /* Q0 */ + move32(); + // c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c5_part[i] = L_shr( sum2_fx( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp3 ); /* Q0 */ + move32(); + + c0 = L_add( c0, c0_part[i] ); + c1 = L_add( c1, c1_part[i] ); + c2 = L_add( c2, c2_part[i] ); + c3 = L_add( c3, c3_part[i] ); + c4 = L_add( c4, c4_part[i] ); + c5 = L_add( c5, c5_part[i] ); + } + + // den = 4.0f * c0 * c2 - c4 * c4; + W_tmp = W_sub( W_shl( W_mult0_32_32( c0, c2 ), 2 ), W_mult0_32_32( c4, c4 ) ); + den_e = 63; + move16(); + shift = W_norm( W_tmp ); + den = W_extract_h( W_shl( W_tmp, shift ) ); + den_e = sub( den_e, shift ); + + IF( den == 0 ) + { + den = 1; + move32(); + den_e = 31; + move16(); + } + + // g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; + W_tmp = W_sub( W_mult0_32_32( c3, c4 ), W_shl( W_mult0_32_32( c1, c2 ), 1 ) ); + g1_e = 63; + move16(); + shift = W_norm( W_tmp ); + L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); + g1_e = sub( g1_e, shift ); + + g1 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); + g1_e = sub( add( tmp_e, g1_e ), den_e ); + + // g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; + W_tmp = W_sub( W_mult0_32_32( c1, c4 ), W_shl( W_mult0_32_32( c0, c3 ), 1 ) ); + g2_e = 63; + move16(); + shift = W_norm( W_tmp ); + L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); + g2_e = sub( g2_e, shift ); + + g2 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); + g2_e = sub( add( tmp_e, g2_e ), den_e ); + + // *Env_error = 0.0f; + *Env_error = 0; + move16(); + flag_plosive = 0; + move16(); + FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) + { + // Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i]; + L_tmp = BASOP_Util_Add_Mant32Exp( c5_part[i], 31, Mpy_32_32( L_mult( g1, g1 ), c0_part[i] ), add( shl( g1_e, 1 ), 31 ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c1_part[i], g1 ), add( 31, g1_e ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g2, g2 ), c2_part[i] ), add( shl( g2_e, 1 ), 31 ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c3_part[i], g2 ), add( 31, g2_e ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g1, g2 ), c4_part[i] ), add( add( g1_e, g2_e ), 31 ), &tmp_e ); + + // Env_error_part[i] = L_shr( L_tmp, 31 - tmp_e ); // Check Exponent + Env_error_part[i] = extract_h( L_shr_sat( L_tmp, sub( Q15, tmp_e ) ) ); /* Q0 */ + move16(); + + // *Env_error += Env_error_part[i]; + *Env_error = add_sat( *Env_error, Env_error_part[i] ); /* Q0 */ + move16(); + + if ( GT_16( Env_error_part[i], THR_ENV_ERROR_PLOSIVE_FX ) ) // Check which Q + { + /* envelope error is too high -> likely a plosive */ + flag_plosive = 1; + move16(); + } + } + + IF( flag_plosive ) + { + /* plosive detected -> set the mixing factor to 0 */ + *vf_ind = 0; + move16(); + mix_factor = 0; + move16(); + } + ELSE + { + /* normalize gain */ + // g = g2 / ( g1 + g2 ); + tmp1_e = BASOP_Util_Add_MantExp( g1, g1_e, g2, g2_e, &tmp ); + IF( tmp == 0 ) + { + tmp = 1; + move16(); + tmp1_e = 15; + move16(); + } + g = BASOP_Util_Divide1616_Scale( g2, tmp, &tmp_e ); + g_e = sub( add( tmp_e, g2_e ), tmp1_e ); + + /* quantization of the mixing factor */ + cbsize = 1 << NUM_BITS_SHB_VF; + move16(); + // delta = 1.0f / ( cbsize - 1 ); + delta = 2341; /* Q14 */ + move16(); + // if ( g > 1.0f ) + IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), ONE_IN_Q31, 0 ) > 0 ) + { + // g = 1.0f; + g = MAX16B; /* Q15 */ + move16(); + g_e = 0; + move16(); + } + // else if ( g < shl( delta, ( 15 - g_e ) - 14 ) ) + ELSE IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), delta, 17 ) < 0 ) + { + /* prevent low gains to be quantized to 0 as this is reserved for plosives */ + // g = delta; + g = shl( delta, 1 ); /* Q15 */ + g_e = 0; + move16(); + } + + g = shl_sat( g, g_e ); /* Q15 */ + + *vf_ind = usquant_fx( g, &mix_factor, 0, delta, cbsize ); + move16(); + } + } + ELSE +#else + UNUSED_PARAM( Env_error_part ); + UNUSED_PARAM( Env_error ); + UNUSED_PARAM( EnvSHBres_4k ); + UNUSED_PARAM( c5_part ); + UNUSED_PARAM( c1 ); + UNUSED_PARAM( den ); + UNUSED_PARAM( c3_part ); + UNUSED_PARAM( c0 ); + UNUSED_PARAM( delta ); + UNUSED_PARAM( c3 ); + UNUSED_PARAM( c2_part ); + UNUSED_PARAM( c1_part ); + UNUSED_PARAM( EnvWhiteExc16k ); + UNUSED_PARAM( g2 ); + UNUSED_PARAM( c5 ); + UNUSED_PARAM( c4_part ); + UNUSED_PARAM( EnvWhiteExc16k_4k ); + UNUSED_PARAM( c2 ); + UNUSED_PARAM( g ); + UNUSED_PARAM( cbsize ); + UNUSED_PARAM( g1 ); + UNUSED_PARAM( EnvExc16kWhtnd ); + UNUSED_PARAM( c0_part ); + UNUSED_PARAM( EnvExc16kWhtnd_4k ); + UNUSED_PARAM( c4 ); +#endif + { + Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, + Q_White_exc16k, pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); + tmp = voiceFacEst[0]; + tmp2 = MAX_16; + move16(); + move16(); + if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) + { + tmp2 = 26214 /*0.8f Q15*/; + move16(); + } + } + } + ELSE /* decoder side */ + { + test(); + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + IF( *vf_ind == 0 ) + { + // mix_factor = 0.0f; + mix_factor = 0; + move16(); + flag_plosive = 1; + move16(); + } + ELSE + { + // mix_factor = usdequant(*vf_ind, 0.0f, 1.0f / ((1 << NUM_BITS_SHB_VF) - 1)); + mix_factor = usdequant_fx( *vf_ind, 0, 2341 ); + } + } + ELSE + { + /* *vf_ind is an integer scale by 0.125f*/ + tmp = shl( *vf_ind, ( 15 - 3 ) ); + tmp2 = MAX_16; + move16(); + IF( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) + { + tmp2 = 26214 /*0.8f Q15*/; + move16(); + } + } + } + + test(); + IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) + { + voice_factors[0] = mult_r( voice_factors[0], tmp2 ); + move16(); + voice_factors[1] = mult_r( voice_factors[1], tmp2 ); + move16(); + voice_factors[2] = mult_r( voice_factors[2], tmp2 ); + move16(); + voice_factors[3] = mult_r( voice_factors[3], tmp2 ); + move16(); + voice_factors[4] = mult_r( voice_factors[4], tmp2 ); + move16(); + } + } + + test(); + IF( GE_16( element_mode, IVAS_CPE_DFT ) && nlExc16k != NULL ) + { + /* save buffers for IC-BWE */ + // mvr2r(exc16kWhtnd, nlExc16k, L_FRAME16k); + Copy( exc16kWhtnd, nlExc16k, L_FRAME16k ); // Q_bwe_exc + *nlExc16k_e = sub( 15, *Q_bwe_exc ); + move16(); + + // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), mixExc16k, L_FRAME16k); + L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); + Word16 temp_fac = round_fx_sat( L_tmp ); // Q15-exp + + FOR( k = 0; k < L_FRAME16k; k++ ) + { + mixExc16k[k] = mult_r( White_exc16k[k], temp_fac ); // Q_White_exc16k+15-exp-15 = Q_White_exc16k-exp + move16(); + } + *mixExc16k_e = sub( 15, sub( Q_White_exc16k, exp ) ); + move16(); + } + + Copy( White_exc16k, White_exc16k_FB, L_FRAME16k ); // Q_White_exc16k + prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; + *Q_bwe_exc_fb = Q_White_exc16k; + move16(); + move16(); + + Word16 tbe_demph_fx = shl_sat( *tbe_demph, sub( Q_White_exc16k, *Q_bwe_exc ) ); // Q_White_exc16k + + deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, &tbe_demph_fx ); + /* i/o: White_exc16k (Q_White_exc16k) */ + /* i: tbe_demph_fx (Q_White_exc16k) */ + *tbe_demph = shr_sat( tbe_demph_fx, sub( Q_White_exc16k, *Q_bwe_exc ) ); + move16(); + + test(); + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + IF( !flag_plosive ) /* use only LB excitation in case of plosives */ + { + /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */ + /* old_scale = (float) sqrt( *prev_pow_exc16kWhtnd / pow1 ); */ + old_scale = round_fx_sat( root_a_over_b_fx( *prev_pow_exc16kWhtnd, 0, pow1, Q_pow1, &exp ) ); // exp + old_scale = shl( old_scale, s_min( 0, exp ) ); // limit Q factor to 15 + exp = s_max( 0, exp ); + + // new_scale = 1.0f; + new_scale = shr( 32767, exp ); // exp + + // step_scale = (new_scale - old_scale) / (L_FRAME16k / 2); + step_scale = mult_r( sub( new_scale, old_scale ), 205 ); // exp + scale = old_scale; // exp + move16(); + + /* interpolate between the old and the new value of the mixing factor */ + old_fact = *prev_mix_factor; // Q15 + new_fact = mix_factor; // Q15 + move16(); + move16(); + + // step = (new_fact - old_fact) / (L_FRAME16k / 2); + step = mult_r( sub( new_fact, old_fact ), 205 ); // Q15 + fact = old_fact; // Q15 + move16(); + + shift = add( exp, sub( *Q_bwe_exc, Q_White_exc16k ) ); + + /* mixing of LB and gaussian excitation in the first half of the frame */ + FOR( k = 0; k < L_FRAME16k / 2; k++ ) + { + /* exc16kWhtnd[k] = (float)fact * (White_exc16k[k] * scale) + (float)(1 - fact) * exc16kWhtnd[k]; */ + L_tmp = L_shl_sat( L_mult( fact, mult_r( White_exc16k[k], scale ) ), shift ); // Q_bwe_exc+16 + exc16kWhtnd[k] = mac_r_sat( L_tmp, sub( 32767, fact ), exc16kWhtnd[k] ); // Q_bwe_exc + move16(); + + fact = add_sat( fact, step ); // Q15 + scale = add_sat( scale, step_scale ); // exp + } + + shift = sub( *Q_bwe_exc, Q_White_exc16k ); + /* mixing of LB and gaussian excitation in the second half of the frame */ + FOR( ; k < L_FRAME16k; k++ ) + { + // exc16kWhtnd[k] = (float)new_fact * White_exc16k[k] + (float)(1 - new_fact) * exc16kWhtnd[k]; + L_tmp = L_shl_sat( L_mult( new_fact, White_exc16k[k] ), shift ); // Q_bwe_exc+16 + exc16kWhtnd[k] = mac_r( L_tmp, sub( 32767, new_fact ), exc16kWhtnd[k] ); // Q_bwe_exc + move16(); + } + } + // preemph(exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph); + PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); // Q_bwe_exc + } + ELSE + { + test(); + IF( EQ_16( coder_type, UNVOICED ) || EQ_16( MSFlag, 1 ) ) + { + scale = 0; + move16(); + + test(); + IF( pow1 != 0 && pow22 != 0 ) + { + L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); + scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ + } + + FOR( k = 0; k < L_FRAME16k; k++ ) + { + exc16kWhtnd[k] = mult_r_sat( White_exc16k[k], scale ); // Q_White_exc16k + move16(); + } + + Scale_sig( exc16kWhtnd, L_FRAME16k, sub( *Q_bwe_exc, Q_White_exc16k ) ); // Q_bwe_exc + + PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); // Q_bwe_exc + /* i/o: exc16kWhtnd (Q_bwe_exc) */ + /* i/o: tbe_premph (Q_bwe_exc) */ + } + ELSE + { + Word16 nbSubFr, lSubFr; + Word16 tempQ15; + Word32 tempQ31; + nbSubFr = NB_SUBFR16k; + lSubFr = ( L_FRAME16k / NB_SUBFR16k ); + move16(); + move16(); + IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) + { + nbSubFr = NB_SUBFR; + move16(); + lSubFr = ( L_FRAME16k / NB_SUBFR ); + move16(); + } + k = 0; + move16(); + FOR( i = 0; i < nbSubFr; i++ ) + { + test(); + IF( EQ_16( coder_type, VOICED ) && ( LT_32( extl_brate, SWB_TBE_2k8 ) ) ) + { + exp = 0; + move16(); + tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ + temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + exp = 0; + move16(); + tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ + temp = sub( MAX_16, temp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ + } + ELSE + { + /* Adjust noise mixing for formant sharpening filter */ + tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); + /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ + vf_tmp = sub( MAX_16, tempQ15 ); + vf_tmp = mult( voice_factors[i], vf_tmp ); + + exp = 0; + move16(); + tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ + temp = sub( MAX_16, vf_tmp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ + } + + shift = sub( *Q_bwe_exc, Q_White_exc16k ); + FOR( j = 0; j < lSubFr; j++ ) + { + /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ + L_tmp = L_shl_sat( L_mult( temp2, White_exc16k[k + j] ), shift ); // 16+(Q_bwe_exc) + exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); // Q_bwe_exc + move16(); + } + k = add( k, lSubFr ); + + /* estimate the pre-emph factor */ + tempQ15 = sub( MAX_16, voice_factors[i] ); + exp = 0; + move16(); + temp = Sqrt16( tempQ15, &exp ); + temp = shl( temp, sub( exp, 1 ) ); + + temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ + temp = div_s( temp, temp2 ); /* Q15 */ + temp = mult_r( PREEMPH_FAC, temp ); + + PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); // Q_bwe_exc + /* exc16kWhtnd: Q_bwe_exc; + tbe_premph: Q_bwe_exc*/ + } + } + } + + IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) + { + syn_filt_fx( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: excSHB in Q_bwe_exc */ + } + ELSE + { + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); + + syn_filt_fx( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[0] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + syn_filt_fx( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[1] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + syn_filt_fx( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[2] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + syn_filt_fx( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[3] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + tmp2 = s_min( s_min( syn_shb_ener_sf_q[0], syn_shb_ener_sf_q[1] ), s_min( syn_shb_ener_sf_q[3], syn_shb_ener_sf_q[2] ) ); + syn_shb_ener_sf[0] = L_shl( syn_shb_ener_sf[0], sub( tmp2, syn_shb_ener_sf_q[0] ) ); + move32(); + syn_shb_ener_sf[1] = L_shl( syn_shb_ener_sf[1], sub( tmp2, syn_shb_ener_sf_q[1] ) ); + move32(); + syn_shb_ener_sf[2] = L_shl( syn_shb_ener_sf[2], sub( tmp2, syn_shb_ener_sf_q[2] ) ); + move32(); + syn_shb_ener_sf[3] = L_shl( syn_shb_ener_sf[3], sub( tmp2, syn_shb_ener_sf_q[3] ) ); + move32(); + + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: tempSHB in Q_bwe_exc */ + /* o: syn_shb_ener_sf in tmp2 */ + IF( LE_32( bitrate, MAX_ACELP_BRATE ) ) + { + L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); + + /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ + tmp = shl( Q_shb, 1 ); + L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ + + *Q_bwe_exc = sub( *Q_bwe_exc, exp ); + move16(); /* compensate for the exp shift */ + tmp2 = add( prev_Q_bwe_syn, n_mem2 ); + IF( GT_16( *Q_bwe_exc, tmp2 ) ) + { + L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); + *Q_bwe_exc = tmp2; + move16(); + } + FOR( i = 0; i < L_FRAME16k; i++ ) + { + L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ + exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ + move16(); + } + } + /* i: L_tmp2 in (Q31-exp) */ + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ + + /* Rescale the past memories: LP synth and SHB look ahead buffers */ + tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); + FOR( i = 0; i < LPC_SHB_ORDER; i++ ) + { + state_lpc_syn[i] = shl_sat( state_lpc_syn[i], tmp ); + move16(); + } + FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) + { + excSHB[i] = shl_sat( excSHB[i], tmp ); + move16(); + } + /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ + + syn_filt_fx( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); + syn_filt_fx( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); + syn_filt_fx( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); + syn_filt_fx( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in (Q_bwe_exc) */ + /* o: excSHB in (Q_bwe_exc) */ + } + + IF( EQ_16( extl, FB_TBE ) ) + { + tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); + Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); + Scale_sig( fb_tbe_demph, 1, tmp ); + syn_filt_fx( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); + /* i: White_exc16k_FB in (Q_bwe_exc_fb) */ + /* o: White_exc16k_FB_temp in (Q_bwe_exc_fb) */ + + FOR( i = 0; i < 10; i++ ) + { + FOR( j = 0; j < 32; ++j ) + { + White_exc16k_FB_temp[i * 32 + j] = mult_r_sat( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); + move16(); + } + } + + *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); + move16(); /**Q_bwe_exc_fb +35 +1 -16*/ + flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); + + deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); + } + ELSE + { + set16_fx( White_exc16k_FB, 0, L_FRAME16k ); + } + + *prev_pow_exc16kWhtnd = L_shr_sat( pow1, Q_pow1 ); // power goes above MAX_32 + *prev_mix_factor = mix_factor; + move32(); + move16(); + + return; +} + +void GenShapedSHBExcitation_ivas_dec_fx( + Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/ + const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ + Word16 *White_exc16k_FB, /* o : white excitation for the Fullband extension Q_bwe_exc */ + Word32 *mem_csfilt, /* i/o: memory */ + Word16 *mem_genSHBexc_filt_down_shb, /* i/o: memory */ + Word16 *state_lpc_syn, /* i/o: memory */ + const Word16 coder_type, /* i : coding type */ + const Word16 *bwe_exc_extended, /* i : bwidth extended excitation */ + Word16 bwe_seed[], /* i/o: random number generator seed */ + Word16 voice_factors[], /* i : voicing factor*/ + const Word16 extl, /* i : extension layer */ + Word16 *tbe_demph, /* i/o: de-emphasis memory */ + Word16 *tbe_premph, /* i/o: pre-emphasis memory */ + Word16 *lpc_shb_sf, /* i: LP coefficients */ + const Word32 shb_ener_sf_32, /* i: input shb ener, Q31 */ + Word16 *shb_res_gshape, /* i: input res gain shape, Q14 */ + Word16 *shb_res, + Word16 *vf_ind, + const Word16 formant_fac, /* i : Formant sharpening factor [0..1] */ + Word16 fb_state_lpc_syn[], /* i/o: memory */ + Word16 *fb_tbe_demph, /* i/o: fb de-emphasis memory */ + Word16 *Q_bwe_exc, + Word16 *Q_bwe_exc_fb, + const Word16 Q_shb, + Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ + Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ + const Word32 bitrate, /* i : bitrate */ + const Word16 prev_bfi, /* i : previous frame was concealed */ + const Word16 element_mode, /* i : element mode */ + const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ + Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ + Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ + const Word32 extl_brate, /* i : extension layer bitarte */ + const Word16 MSFlag, /* i : Multi Source flag */ + Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ + Word32 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ + Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ + Word16 *Env_error, /* o : error in SHB residual envelope modelling Q0 */ + Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling Q0 */ +) +{ + Word16 i, j, k; + Word16 wht_fil_mem[LPC_WHTN_ORDER]; + Word16 lpc_whtn[LPC_WHTN_ORDER + 1]; + Word16 R_h[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech MSB */ + Word16 R_l[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech LSB */ + Word16 Q_R; + Word32 LepsP[LPC_WHTN_ORDER + 1]; + Word16 exc32k[L_FRAME32k], exc16k[L_FRAME16k]; + Word32 pow1, pow22; + Word16 scale, temp1, temp2, temp3; + Word16 Q_White_exc16k; + Word16 excTmp2[L_FRAME16k]; + Word16 *White_exc16k; + Word16 excNoisyEnv[L_FRAME16k]; + Word16 csfilt_num2[1] = { 6554 }; /*0.2 in Q15 */ + move16(); + Word16 neg_csfilt_den2[2] = { -32767, 26214 }; /* {1.0f, -0.8f} */ + move16(); + move16(); + Word16 varEnvShape; + Word16 fb_deemph_fac = 15729; /*0.48f in Q15 */ + Word16 exc16kWhtnd[L_FRAME16k]; + + Word32 L_tmp; + Word16 vf_tmp; + Word16 tmp, exp, tmp2 = 0; + move16(); + Word16 voiceFacEst[NB_SUBFR16k]; + Word16 zero_mem[LPC_SHB_ORDER]; + Word32 syn_shb_ener_sf[4]; + Word16 syn_shb_ener_sf_q[4]; + Word16 tempSHB[80]; + Word16 Q_pow1, Q_pow22; + + Word32 L_tmp2, L_tmp3, L_tmp4; + Word16 temp; + + Word16 White_exc16k_FB_temp[L_FRAME16k]; + Word32 White_exc16k_32[L_FRAME16k]; + Word16 White_exc16k_tmp[L_FRAME16k]; + Word16 Q_temp; + Word16 prev_Q_bwe_exc_fb, Q_exc16kWhtnd; + Word16 chk1; + Word32 chk2; + chk1 = 0; + chk2 = 0; + move16(); + move32(); + +#if 1 // def ADD_IVAS_TBE_CODE + Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; + Word16 cbsize; + Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; + Word32 c0, c1, c2, c3, c4, c5, den; + Word16 g1, g2, g, g1_e, g2_e, g_e, den_e, shift, tmp_e, tmp1_e; + Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; + Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; + Word16 flag_plosive; + Word16 delta; + Word32 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; + Word64 W_tmp; + + mix_factor = 0; /* Q15 */ + move16(); +#endif + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); + set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); + FOR( i = 0; i < L_FRAME32k; i = i + 2 ) + { + exc32k[i] = negate( bwe_exc_extended[i] ); // Q_bwe_exc + move16(); + exc32k[i + 1] = bwe_exc_extended[i + 1]; // Q_bwe_exc + move16(); + } + + /* Decimate by 2 */ + Decimate_allpass_steep_fx( exc32k, mem_genSHBexc_filt_down_shb, 2 * L_FRAME16k, exc16k ); // Q_bwe_exc + /* i: exc32k in Q_bwe_exc */ + /* o: exc16k in Q_bwe_exc */ + + autocorr_fx( exc16k, LPC_WHTN_ORDER + 1, R_h, R_l, &Q_R, L_FRAME16k, win_flatten_fx, 0, 1 ); // Q_R + /* Ensure R[0] isn't zero when entering Levinson Durbin */ + R_l[0] = s_max( R_l[0], 1 ); + move16(); + FOR( i = 1; i <= LPC_WHTN_ORDER; i++ ) + { + L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); + L_Extract( L_tmp, &R_h[i], &R_l[i] ); // Q_R + } + E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER, NULL ); + Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); // Q12 + fir_fx( exc16k, lpc_whtn, exc16kWhtnd, wht_fil_mem, L_FRAME16k, LPC_WHTN_ORDER, 0, 3 ); // Q_bwe_exc + + /* i: exc16k in Q_bwe_exc */ + /* o: exc16kWhtnd in Q_bwe_exc */ + +#if 1 // def ADD_IVAS_TBE_CODE + IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) +#else + IF( GE_32( bitrate, ACELP_24k40 ) ) +#endif + { + temp2 = 0; + move16(); + FOR( j = 0; j < 4; j++ ) + { + temp1 = shb_res_gshape[j]; + move16(); + FOR( i = 0; i < 80; i++ ) + { + exc16kWhtnd[temp2 + i] = round_fx( L_shl( L_mult( exc16kWhtnd[temp2 + i], temp1 ), 1 ) ); // Q_bwe_exc + move16(); + /* exc16kWhtnd in Q_bwe_exc, shb_res_gshape in Q14 */ + } + temp2 = add( temp2, 80 ); + } + } + + /* Estimate pow1 associated with Low band nonlinear extended excitation */ + /* pow1=0.00001f */ + tmp = sub( shl( *Q_bwe_exc, 1 ), 31 ); + pow1 = L_shl_sat( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc) */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + /*excTmp2[k ] = (float)(fabs(exc16kWhtnd[k]));*/ + excTmp2[k] = abs_s( exc16kWhtnd[k] ); + move16(); + chk1 = s_or( chk1, exc16kWhtnd[k] ); + + /* pow1 += exc16kWhtnd[k] * exc16kWhtnd[k]; */ + pow1 = L_mac0_sat( pow1, exc16kWhtnd[k], exc16kWhtnd[k] ); /* 2*Q_bwe_exc */ + } + Q_pow1 = shl( *Q_bwe_exc, 1 ); + + test(); +#if 1 // ADD_IVAS_TBE_CODE + IF( flag_ACELP16k == 0 ) +#else + IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) ) +#endif + { + /* varEnvShape = mean_fx(voice_factors, 4); */ + /* unroll the loop */ + L_tmp = L_mult( voice_factors[0], 8192 /*0.25 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[1], 8192 /*0.25 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[2], 8192 /*0.25 in Q15 */ ); + varEnvShape = mac_r( L_tmp, voice_factors[3], 8192 /*0.25 in Q15 */ ); /* varEnvShape in Q15 */ + } + ELSE /* 16k core */ + { + /* varEnvShape = mean_fx(voice_factors, 5); */ + /* unroll the loop */ + L_tmp = L_mult( voice_factors[0], 6554 /*0.2 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[1], 6554 /*0.2 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[2], 6554 /*0.2 in Q15 */ ); + L_tmp = L_mac( L_tmp, voice_factors[3], 6554 /*0.2 in Q15 */ ); + varEnvShape = mac_r( L_tmp, voice_factors[4], 6554 /*0.2 in Q15 */ ); /* varEnvShape in Q15 */ + } + + IF( EQ_16( extl, FB_TBE ) ) + { + /*pow(varEnvShape,3) */ + tmp = mult_r( varEnvShape, varEnvShape ); + tmp = mult_r( tmp, varEnvShape ); + + /* max_val((0.68f - (float)pow(varEnvShape, 3)), 0.48f); */ + fb_deemph_fac = sub( 22282 /*0.68f Q15*/, tmp ); + fb_deemph_fac = s_max( fb_deemph_fac, 15729 /*0.48f Q15*/ ); + } + + /*varEnvShape = 1.09875f - 0.49875f * varEnvShape; */ + varEnvShape = msu_r( 1179773824l /*0.549375f Q31*/, 8172 /*0.249375f Q15*/, varEnvShape ); + + /*varEnvShape = min( max_val(varEnvShape, 0.6f), 0.999f); */ + varEnvShape = s_max( varEnvShape, 9830 /*0.3f Q15*/ ); + varEnvShape = s_min( varEnvShape, 16368 /*0.4995f Q15*/ ); + varEnvShape = shl( varEnvShape, 1 ); + csfilt_num2[0] = sub( MAX_16, varEnvShape ); // Q15 + move16(); + neg_csfilt_den2[1] = varEnvShape; // Q15 + move16(); + + test(); + test(); + test(); +#if 1 // def ADD_IVAS_TBE_CODE + test(); + IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) +#else + IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) +#endif + { + /* pre-init smoothing filter to avoid energy drop outs */ + L_tmp = L_mult( excTmp2[0], 1638 ); + FOR( i = 1; i < L_SUBFR16k / 4; i++ ) + { + L_tmp = L_mac( L_tmp, excTmp2[i], 1638 ); /*1638 = 1/20 in Q15*/ + } + /*L_tmp = sum(excTmp2, L_SUBFR16k/4)*(1/20) where L_SUBFR16k/4 =20 */ + + /* don't apply for FB in case the FB start-frame was potentially lost - White_exc16k is very sensitive to enery mismatch between enc - dec */ + /* rather stick to the more conservative approach, to avoid potential clippings */ + test(); + IF( !( prev_bfi && EQ_16( extl, FB_TBE ) ) ) + { + /* use weak smoothing for 1st frame after switching to make filter recover more quickly */ + varEnvShape = 26214 /*0.8f Q15*/; + move16(); + csfilt_num2[0] = sub( MAX_16, varEnvShape ); + move16(); + neg_csfilt_den2[1] = varEnvShape; + move16(); + } + + *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); + move32(); + } +#if 1 // def ADD_IVAS_TBE_CODE + IF( MSFlag > 0 ) + { + // varEnvShape = 0.995f; + varEnvShape = 32604; + move16(); + csfilt_num2[0] = 32768 - varEnvShape; + // csfilt_num2[0] = sub( 32767, varEnvShape ); + move16(); + neg_csfilt_den2[1] = varEnvShape; + move16(); + } + + White_exc16k = exc16k; + move16(); + Word16 Q_excTmp2 = add( getScaleFactor16( excTmp2, L_FRAME16k ), *Q_bwe_exc ); + IF( *mem_csfilt ) + { + Q_excTmp2 = s_min( Q_excTmp2, sub( add( norm_l( *mem_csfilt ), *Q_bwe_exc ), 1 ) ); + } + test(); + /* Track the low band envelope */ + IF( EQ_16( element_mode, IVAS_CPE_TD ) || EQ_16( element_mode, IVAS_CPE_DFT ) ) + { + test(); + IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) + { + mem_csfilt_left = 0; + mem_csfilt_right = 0; + move16(); + move16(); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + // excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k]; + excNoisyEnvLeft[k] = add( mem_csfilt_left, mult_r( csfilt_num2[0], shl( excTmp2[k], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 + move16(); + // mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k]; + mem_csfilt_left = mult_r( neg_csfilt_den2[1], excNoisyEnvLeft[k] ); // Q_excTmp2 + // excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1]; + excNoisyEnvRight[L_FRAME16k - k - 1] = add( mem_csfilt_right, mult_r( csfilt_num2[0], shl( excTmp2[L_FRAME16k - k - 1], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 + move16(); + // mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1]; + mem_csfilt_right = mult_r( neg_csfilt_den2[1], excNoisyEnvRight[L_FRAME16k - k - 1] ); // Q_excTmp2 + } + + alpha = 0; + move16(); + // step = 1.0f / L_FRAME16k; + step = 102; // Q15 + move16(); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + // excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + (1 - alpha) * excNoisyEnvRight[k]; + excNoisyEnv[k] = add( mult_r( alpha, excNoisyEnvLeft[k] ), mult_r( sub( 32767, alpha ), excNoisyEnvRight[k] ) ); // Q_excTmp2 + move16(); + alpha = add( alpha, step ); + } + } + } + ELSE +#endif + { + /* Track the low band envelope */ + L_tmp = L_shl( *mem_csfilt, sub( Q_excTmp2, *Q_bwe_exc ) ); + move32(); + FOR( i = 0; i < L_FRAME16k; i++ ) + { + excNoisyEnv[i] = mac_r( L_tmp, csfilt_num2[0], shl( excTmp2[i], sub( Q_excTmp2, *Q_bwe_exc ) ) ); + move16(); + /* Work-around to avoid 0s for very small value*/ + test(); + test(); + test(); + test(); + if ( excNoisyEnv[i] == 0 && ( L_tmp != 0 || ( csfilt_num2[0] != 0 && excTmp2[i] != 0 ) ) ) + { + excNoisyEnv[i] = 1; + move16(); + } + /* excNoisyEnv : Q_excTmp2, + *mem_csfilt: Q_excTmp2+16, excTmp2: Q_excTmp2, csfilt_num2[0] Q_excTmp2 */ + L_tmp = L_mult( excNoisyEnv[i], neg_csfilt_den2[1] ); /* Q_excTmp2 + 16 */ + } + *mem_csfilt = L_shr( L_tmp, sub( Q_excTmp2, *Q_bwe_exc ) ); + move32(); + } +#if 1 // def ADD_IVAS_TBE_CODE + test(); + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + /* generate gaussian (white) excitation */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k[k] = own_random( &bwe_seed[0] ); + move16(); + } + + /* normalize the amplitude of the gaussian excitation to that of the LB exc. */ + Word32 pow22_inv = POW_EXC16k_WHTND_FX_INV_SQRT_IN_Q49; + move32(); + move32(); + pow22 = POW_EXC16k_WHTND_FX; + Q_pow22 = -6; + move16(); + // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), White_exc16k, L_FRAME16k); + Word16 pow1_exp = sub( Q31, Q_pow1 ); + Word32 temp_pow = Sqrt32( pow1, &pow1_exp ); + temp_pow = Mpy_32_32( temp_pow, pow22_inv ); + /*Word16 out_exp; + Word32 temp_pow1 = root_a_over_b_fx(pow1, Q_pow1, pow22, Q_pow22, &out_exp); + temp_pow1 = L_shl(temp_pow1, out_exp);*/ + // v_multc_fixed_16_16(White_exc16k, round_fx(temp_pow), White_exc16k, L_FRAME16k); + L_tmp = 0; + move32(); + shift = getScaleFactor16( White_exc16k, L_FRAME16k ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k_32[k] = Mpy_32_16_1( temp_pow, White_exc16k[k] ); + move32(); + White_exc16k[k] = round_fx( L_shl( White_exc16k_32[k], shift ) ); // Q_White_exc16k + move16(); + L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); + } + Q_White_exc16k = add( shift, sub( 49 - 31, pow1_exp ) ); + Q_temp = norm_l( L_tmp ); + IF( L_tmp == 0 ) + { + Q_temp = 31; + move16(); + } + } + ELSE +#endif + { + /* create a random excitation - Reuse exc16k memory */ + White_exc16k = exc16k; + move16(); + create_random_vector_fx( White_exc16k, L_FRAME, bwe_seed ); // Q5 + create_random_vector_fx( White_exc16k + L_FRAME, L_FRAME16k - L_FRAME, bwe_seed ); // Q5 + + L_tmp = L_deposit_l( 0 ); + tmp = add( *Q_bwe_exc, 1 ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + L_tmp4 = L_mult( excNoisyEnv[k], White_exc16k[k] ); /* (Q_excTmp2) +5 +1*/ + White_exc16k_32[k] = L_tmp4; /* (Q_excTmp2) +5 +1*/ + move32(); + L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); + } + Q_temp = norm_l( L_tmp ); + IF( L_tmp == 0 ) + { + Q_temp = 31; + move16(); + } + /*Copy_Scale_sig( White_exc16k, White_exc16k, L_FRAME16k, sub(NOISE_QFAC, 5) );)*/ + /* White_exc16k in Q6 */ + + /* calculate pow22 */ + /* pow22=0.00001f */ + tmp = sub( shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ), 31 ); + Word64 sum = W_shl( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(*Q_bwe_exc-NOISE_QADJ) */ + Q_White_exc16k = getScaleFactor32( White_exc16k_32, L_FRAME16k ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + + White_exc16k[k] = extract_h( L_shl( White_exc16k_32[k], Q_White_exc16k ) ); // Q_excTmp2 + 6 + Q_White_exc16k - 16 ==> Q_excTmp2 + Q_White_exc16k - 10 + chk2 = L_or( chk2, White_exc16k_32[k] ); + /* i: excNoisyEnv in (Q_excTmp2) */ + /* i: White_exc16k in Q6 */ + /* o: White_exc16k in (Q_White_exc16k) */ + /* pow22 += White_exc16k[k] * White_exc16k[k]; */ + sum = W_mac0_16_16( sum, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_excTmp2 + Q_White_exc16k - 10)*/ + move16(); + } + Q_pow22 = W_norm( sum ); + pow22 = W_extract_h( W_shl( sum, Q_pow22 ) ); // 2*(Q_excTmp2 + Q_White_exc16k - 10)+Q_pow22-32 + Q_pow22 = sub( add( Q_pow22, shl( sub( add( Q_White_exc16k, Q_excTmp2 ), 10 ), 1 ) ), 32 ); + Q_White_exc16k = add( Q_White_exc16k, sub( Q_excTmp2, 10 ) ); + } + +#if 1 // def ADD_IVAS_TBE_CODE + flag_plosive = 0; + move16(); + test(); + test(); + test(); + IF( GE_32( extl_brate, SWB_TBE_2k8 ) || EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) +#else + IF( GE_32( bitrate, ACELP_24k40 ) ) +#endif + { + IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ + { +#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!! + test(); + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k_tmp[k] = round_fx( L_shl( White_exc16k_32[k], *Q_bwe_exc ) ); + move16(); + } + + /* calculate TD envelopes of exc16kWhtnd and White_exc16k */ + find_td_envelope_fx( White_exc16k_tmp, L_FRAME16k, 20, NULL, EnvWhiteExc16k ); /* Q_bwe_exc */ + find_td_envelope_fx( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd ); /* Q_bwe_exc */ + + FOR( k = 0; k < L_FRAME4k; k++ ) + { + EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k]; /* Q_bwe_exc */ + move16(); + EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k]; /* Q_bwe_exc */ + move16(); + } + + /* calculate the optimal mix factor */ + c0 = c1 = c2 = c3 = c4 = c5 = 0; /* Q0 */ + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + + temp1 = add( shl( *Q_bwe_exc, 1 ), 1 ); + temp2 = add( add( Q_shb, *Q_bwe_exc ), 1 ); + temp3 = add( shl( Q_shb, 1 ), 1 ); + FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) + { + // c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c0_part[i] = L_shr( sum2_fx( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ + move32(); + // c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c1_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ + move32(); + // c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c2_part[i] = L_shr( sum2_fx( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ + move32(); + // c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c3_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ + move32(); + // c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c4_part[i] = L_shr( Dot_product( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), sub( temp1, 1 ) ); /* Q0 */ + move32(); + // c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); + c5_part[i] = L_shr( sum2_fx( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp3 ); /* Q0 */ + move32(); + + c0 = L_add( c0, c0_part[i] ); + c1 = L_add( c1, c1_part[i] ); + c2 = L_add( c2, c2_part[i] ); + c3 = L_add( c3, c3_part[i] ); + c4 = L_add( c4, c4_part[i] ); + c5 = L_add( c5, c5_part[i] ); + } + + // den = 4.0f * c0 * c2 - c4 * c4; + W_tmp = W_sub( W_shl( W_mult0_32_32( c0, c2 ), 2 ), W_mult0_32_32( c4, c4 ) ); + den_e = 63; + move16(); + shift = W_norm( W_tmp ); + den = W_extract_h( W_shl( W_tmp, shift ) ); + den_e = sub( den_e, shift ); + + IF( den == 0 ) + { + den = 1; + move32(); + den_e = 31; + move16(); + } + + // g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; + W_tmp = W_sub( W_mult0_32_32( c3, c4 ), W_shl( W_mult0_32_32( c1, c2 ), 1 ) ); + g1_e = 63; + move16(); + shift = W_norm( W_tmp ); + L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); + g1_e = sub( g1_e, shift ); + + g1 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); + g1_e = sub( add( tmp_e, g1_e ), den_e ); + + // g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; + W_tmp = W_sub( W_mult0_32_32( c1, c4 ), W_shl( W_mult0_32_32( c0, c3 ), 1 ) ); + g2_e = 63; + move16(); + shift = W_norm( W_tmp ); + L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); + g2_e = sub( g2_e, shift ); + + g2 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); + g2_e = sub( add( tmp_e, g2_e ), den_e ); + + // *Env_error = 0.0f; + *Env_error = 0; + move16(); + flag_plosive = 0; + move16(); + FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) + { + // Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i]; + L_tmp = BASOP_Util_Add_Mant32Exp( c5_part[i], 31, Mpy_32_32( L_mult( g1, g1 ), c0_part[i] ), add( shl( g1_e, 1 ), 31 ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c1_part[i], g1 ), add( 31, g1_e ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g2, g2 ), c2_part[i] ), add( shl( g2_e, 1 ), 31 ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c3_part[i], g2 ), add( 31, g2_e ), &tmp_e ); + L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g1, g2 ), c4_part[i] ), add( add( g1_e, g2_e ), 31 ), &tmp_e ); + + // Env_error_part[i] = L_shr( L_tmp, 31 - tmp_e ); // Check Exponent + Env_error_part[i] = extract_h( L_shr_sat( L_tmp, sub( Q15, tmp_e ) ) ); /* Q0 */ + move16(); + + // *Env_error += Env_error_part[i]; + *Env_error = add_sat( *Env_error, Env_error_part[i] ); /* Q0 */ + move16(); + + if ( GT_16( Env_error_part[i], THR_ENV_ERROR_PLOSIVE_FX ) ) // Check which Q + { + /* envelope error is too high -> likely a plosive */ + flag_plosive = 1; + move16(); + } + } + + IF( flag_plosive ) + { + /* plosive detected -> set the mixing factor to 0 */ + *vf_ind = 0; + move16(); + mix_factor = 0; + move16(); + } + ELSE + { + /* normalize gain */ + // g = g2 / ( g1 + g2 ); + tmp1_e = BASOP_Util_Add_MantExp( g1, g1_e, g2, g2_e, &tmp ); + IF( tmp == 0 ) + { + tmp = 1; + move16(); + tmp1_e = 15; + move16(); + } + g = BASOP_Util_Divide1616_Scale( g2, tmp, &tmp_e ); + g_e = sub( add( tmp_e, g2_e ), tmp1_e ); + + /* quantization of the mixing factor */ + cbsize = 1 << NUM_BITS_SHB_VF; + move16(); + // delta = 1.0f / ( cbsize - 1 ); + delta = 2341; /* Q14 */ + move16(); + // if ( g > 1.0f ) + IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), ONE_IN_Q31, 0 ) > 0 ) + { + // g = 1.0f; + g = MAX16B; /* Q15 */ + } + // else if ( g < shl( delta, ( 15 - g_e ) - 14 ) ) + ELSE IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), delta, 17 ) < 0 ) + { + /* prevent low gains to be quantized to 0 as this is reserved for plosives */ + // g = delta; + g = shl( delta, 1 ); /* Q15 */ + } + + *vf_ind = usquant_fx( g, &mix_factor, 0, delta, cbsize ); + move16(); + } + } + ELSE +#else + UNUSED_PARAM( Env_error_part ); + UNUSED_PARAM( Env_error ); + UNUSED_PARAM( EnvSHBres_4k ); + UNUSED_PARAM( c5_part ); + UNUSED_PARAM( c1 ); + UNUSED_PARAM( den ); + UNUSED_PARAM( c3_part ); + UNUSED_PARAM( c0 ); + UNUSED_PARAM( delta ); + UNUSED_PARAM( c3 ); + UNUSED_PARAM( c2_part ); + UNUSED_PARAM( c1_part ); + UNUSED_PARAM( EnvWhiteExc16k ); + UNUSED_PARAM( g2 ); + UNUSED_PARAM( c5 ); + UNUSED_PARAM( c4_part ); + UNUSED_PARAM( EnvWhiteExc16k_4k ); + UNUSED_PARAM( c2 ); + UNUSED_PARAM( g ); + UNUSED_PARAM( cbsize ); + UNUSED_PARAM( g1 ); + UNUSED_PARAM( EnvExc16kWhtnd ); + UNUSED_PARAM( c0_part ); + UNUSED_PARAM( EnvExc16kWhtnd_4k ); + UNUSED_PARAM( c4 ); +#endif + { + Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, + ( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); + tmp = voiceFacEst[0]; + tmp2 = MAX_16; + move16(); + move16(); + if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) + { + tmp2 = 26214 /*0.8f Q15*/; + move16(); + } + } + } + ELSE /* decoder side */ + { + test(); +#if 1 // def ADD_IVAS_TBE_CODE + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + IF( *vf_ind == 0 ) + { + // mix_factor = 0.0f; + mix_factor = 0; + move16(); + flag_plosive = 1; + move16(); + } + ELSE + { + // mix_factor = usdequant(*vf_ind, 0.0f, 1.0f / ((1 << NUM_BITS_SHB_VF) - 1)); + mix_factor = usdequant_fx( *vf_ind, 0, 2341 ); + } + } + ELSE +#endif + { + /* *vf_ind is an integer scale by 0.125f*/ + tmp = shl( *vf_ind, ( 15 - 3 ) ); + tmp2 = MAX_16; + move16(); + IF( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) + { + tmp2 = 26214 /*0.8f Q15*/; + move16(); + } + } + } +#if 1 // def ADD_IVAS_TBE_CODE + test(); + IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) +#endif + { + voice_factors[0] = mult_r( voice_factors[0], tmp2 ); + move16(); + voice_factors[1] = mult_r( voice_factors[1], tmp2 ); + move16(); + voice_factors[2] = mult_r( voice_factors[2], tmp2 ); + move16(); + voice_factors[3] = mult_r( voice_factors[3], tmp2 ); + move16(); + voice_factors[4] = mult_r( voice_factors[4], tmp2 ); + move16(); + } + } + test(); + IF( GE_16( element_mode, IVAS_CPE_DFT ) && nlExc16k != NULL ) + { + /* save buffers for IC-BWE */ + // mvr2r(exc16kWhtnd, nlExc16k, L_FRAME16k); + Copy( exc16kWhtnd, nlExc16k, L_FRAME16k ); + // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), mixExc16k, L_FRAME16k); + /*Word16 temp_fac = divide3232(L_shr(pow1, Q_pow1), pow22); + Word16 temp_fac_exp = 0; + temp_fac = Sqrt16(temp_fac, &temp_fac_exp);*/ + L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); + Word16 temp_fac = round_fx_sat( L_shl_sat( L_tmp, exp ) ); // Q15 + shift = sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ); + // v_multc_fixed_16_16(White_exc16k,shr(temp_fac, temp_fac_exp) , mixExc16k, L_FRAME16k); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + mixExc16k[k] = mult_r( shl_sat( White_exc16k[k], shift ), temp_fac ); + move16(); + } + } + + tmp = sub( Q_temp, 3 ); + FOR( k = 0; k < L_FRAME16k; k++ ) + { + White_exc16k_FB[k] = White_exc16k[k]; /* Q_White_exc16k */ + } + prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; + move16(); + *Q_bwe_exc_fb = Q_White_exc16k; + move16(); + *tbe_demph = shl_sat( *tbe_demph, sub( Q_White_exc16k, sub( *Q_bwe_exc, NOISE_QADJ ) ) ); + deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph ); + *tbe_demph = shl_sat( *tbe_demph, sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ) ); + + Q_exc16kWhtnd = getScaleFactor16( exc16kWhtnd, L_FRAME16k ); + Q_exc16kWhtnd = add( Q_exc16kWhtnd, *Q_bwe_exc ); + + shift = getScaleFactor16( White_exc16k, L_FRAME16k ); + + shift = s_min( Q_exc16kWhtnd, add( shift, Q_White_exc16k ) ); + scale_sig( exc16kWhtnd, L_FRAME16k, sub( shift, *Q_bwe_exc ) ); + scale_sig( White_exc16k, L_FRAME16k, sub( shift, Q_White_exc16k ) ); + + Q_exc16kWhtnd = Q_White_exc16k = shift; + move16(); + move16(); + *tbe_premph = shl_sat( *tbe_premph, sub( Q_White_exc16k, sub( *Q_bwe_exc, NOISE_QADJ ) ) ); + move16(); + test(); + IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) + { + IF( !flag_plosive ) /* use only LB excitation in case of plosives */ + { + /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */ + // old_scale = (float)sqrt(*prev_pow_exc16kWhtnd / pow1); + // old_scale = divide3232(*prev_pow_exc16kWhtnd, pow1); // exp = Q15 - (Q_pow1) + // Word16 old_scale_exp = Q15 - (Q_pow1); + // old_scale = Sqrt16(old_scale, &old_scale_exp); + // old_scale = shl(old_scale, old_scale_exp); //Q15 + L_tmp = root_a_over_b_fx( *prev_pow_exc16kWhtnd, 0, pow1, Q_pow1, &exp ); + old_scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); // Q15 + // new_scale = 1.0f; + new_scale = 32767; + move16(); + // step_scale = (new_scale - old_scale) / (L_FRAME16k / 2); + step_scale = mult_r( sub( new_scale, old_scale ), 205 ); + scale = old_scale; + move16(); + /* interpolate between the old and the new value of the mixing factor */ + old_fact = *prev_mix_factor; + move16(); + new_fact = mix_factor; + move16(); + // step = (new_fact - old_fact) / (L_FRAME16k / 2); + step = mult_r( sub( new_fact, old_fact ), 205 ); + fact = old_fact; + move16(); + /* mixing of LB and gaussian excitation in the first half of the frame */ + FOR( k = 0; k < L_FRAME16k / 2; k++ ) + { + exc16kWhtnd[k] = mac_r( L_mult( fact, mult_r( White_exc16k[k], scale ) ), + sub( 32767, fact ), exc16kWhtnd[k] ); // Q_exc16kWhtnd + move16(); + fact = add_sat( fact, step ); + scale = add_sat( scale, step_scale ); + } + + /* mixing of LB and gaussian excitation in the second half of the frame */ + FOR( ; k < L_FRAME16k; k++ ) + { + exc16kWhtnd[k] = mac_r( L_mult( new_fact, White_exc16k[k] ), + sub( 32767, new_fact ), exc16kWhtnd[k] ); // Q_exc16kWhtnd + move16(); + } + } + // preemph(exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph); + PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); + } + ELSE + { + test(); + IF( EQ_16( coder_type, UNVOICED ) || EQ_16( MSFlag, 1 ) ) + { + L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); + test(); + if ( chk1 == 0 && chk2 == 0 ) + { + L_tmp = 0; + move32(); + } + scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + exc16kWhtnd[k] = mult_r_sat( White_exc16k[k], scale ); + move16(); + } + PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); + /* i/o: exc16kWhtnd (Q_exc16kWhtnd) */ + /* i/o: tbe_premph (Q_exc16kWhtnd) */ + } + ELSE + { + Word16 nbSubFr, lSubFr; + Word16 tempQ15; + Word32 tempQ31; + nbSubFr = NB_SUBFR16k; + lSubFr = ( L_FRAME16k / NB_SUBFR16k ); + move16(); + move16(); + IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) + { + nbSubFr = NB_SUBFR; + move16(); + lSubFr = ( L_FRAME16k / NB_SUBFR ); + move16(); + } + k = 0; + move16(); + FOR( i = 0; i < nbSubFr; i++ ) + { + test(); + IF( EQ_16( coder_type, VOICED ) && ( LT_32( extl_brate, SWB_TBE_2k8 ) ) ) + { + exp = 0; + move16(); + tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ + temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + exp = 0; + move16(); + tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ + temp = sub( MAX_16, temp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ + } + ELSE + { + /* Adjust noise mixing for formant sharpening filter */ + tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); + /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ + vf_tmp = sub( MAX_16, tempQ15 ); + vf_tmp = mult( voice_factors[i], vf_tmp ); + + exp = 0; + move16(); + tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ + temp = sub( MAX_16, vf_tmp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ + } + + FOR( j = 0; j < lSubFr; j++ ) + { + /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ + L_tmp = L_mult( temp2, White_exc16k[k + j] ); + exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); + move16(); + /* Q_exc16kWhtnd */ + } + k = add( k, lSubFr ); + + /* estimate the pre-emph factor */ + tempQ15 = sub( MAX_16, voice_factors[i] ); + exp = 0; + move16(); + temp = Sqrt16( tempQ15, &exp ); + temp = shl( temp, sub( exp, 1 ) ); + + temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ + temp = div_s( temp, temp2 ); /* Q15 */ + temp = mult_r( PREEMPH_FAC, temp ); + PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); + /* exc16kWhtnd: Q_exc16kWhtnd; + tbe_premph: Q_exc16kWhtnd*/ + } + } + } + *tbe_premph = shl_sat( *tbe_premph, sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ) ); + move16(); + Scale_sig( White_exc16k, L_FRAME16k, sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ) ); + Scale_sig( exc16kWhtnd, L_FRAME16k, sub( *Q_bwe_exc, Q_White_exc16k ) ); + + IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) + { + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: excSHB in Q_bwe_exc */ + } + ELSE + { + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); + + Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[0] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[1] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[2] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); + tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); + Scale_sig( tempSHB, 80, tmp ); + syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); + syn_shb_ener_sf_q[3] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); + move16(); + + tmp2 = s_min( s_min( syn_shb_ener_sf_q[0], syn_shb_ener_sf_q[1] ), s_min( syn_shb_ener_sf_q[3], syn_shb_ener_sf_q[2] ) ); + syn_shb_ener_sf[0] = L_shl( syn_shb_ener_sf[0], sub( tmp2, syn_shb_ener_sf_q[0] ) ); + move32(); + syn_shb_ener_sf[1] = L_shl( syn_shb_ener_sf[1], sub( tmp2, syn_shb_ener_sf_q[1] ) ); + move32(); + syn_shb_ener_sf[2] = L_shl( syn_shb_ener_sf[2], sub( tmp2, syn_shb_ener_sf_q[2] ) ); + move32(); + syn_shb_ener_sf[3] = L_shl( syn_shb_ener_sf[3], sub( tmp2, syn_shb_ener_sf_q[3] ) ); + move32(); + + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: tempSHB in Q_bwe_exc */ + /* o: syn_shb_ener_sf in tmp2 */ + IF( LE_32( bitrate, MAX_ACELP_BRATE ) ) + { + L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); + + /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ + tmp = shl( Q_shb, 1 ); + L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ + + *Q_bwe_exc = sub( *Q_bwe_exc, exp ); + move16(); /* compensate for the exp shift */ + tmp2 = add( prev_Q_bwe_syn, n_mem2 ); + IF( GT_16( *Q_bwe_exc, tmp2 ) ) + { + L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); + *Q_bwe_exc = tmp2; + move16(); + } + FOR( i = 0; i < L_FRAME16k; i++ ) + { + L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ + exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ + move16(); + } + } + /* i: L_tmp2 in (Q31-exp) */ + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ + + /* Rescale the past memories: LP synth and SHB look ahead buffers */ + tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); + FOR( i = 0; i < LPC_SHB_ORDER; i++ ) + { + state_lpc_syn[i] = shl_sat( state_lpc_syn[i], tmp ); + move16(); + } + FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) + { + excSHB[i] = shl_sat( excSHB[i], tmp ); + move16(); + } + /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ + + Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in (Q_bwe_exc) */ + /* o: excSHB in (Q_bwe_exc) */ + } + + IF( EQ_16( extl, FB_TBE ) ) + { + tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); + Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); + Scale_sig( fb_tbe_demph, 1, tmp ); + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); + /* i: White_exc16k_FB in (14-n2) */ + /* o: White_exc16k_FB_temp in (14-n2) */ + + FOR( i = 0; i < 10; i++ ) + { + FOR( j = 0; j < 32; ++j ) + { + White_exc16k_FB_temp[i * 32 + j] = mult_r_sat( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); + move16(); + } + } + + *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); + move16(); /**Q_bwe_exc_fb +35 +1 -16*/ + flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); + + deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); + } + ELSE + { + set16_fx( White_exc16k_FB, 0, L_FRAME16k ); + } + +#if 1 // def ADD_IVAS_TBE_CODE + *prev_pow_exc16kWhtnd = L_shr_sat( pow1, Q_pow1 ); // power goes above MAX_32 + *prev_mix_factor = mix_factor; +#endif + return; +} + +/*====================================================================================*/ +/* FUNCTION : void GenSHBSynth_fx() */ +/*------------------------------------------------------------------------------------*/ +/* PURPOSE :Generate 32 KHz sampled highband component from synthesized highband*/ +/*------------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS */ +/* _(Word16*)input_synspeech :input synthesized speech */ +/* _(Word16) L_frame :ACELP frame length */ +/*------------------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _(Word16*)shb_syn_speech_32k : output highband component */ +/*------------------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _(Word16[]) allpass_mem : memory */ +/* _(Word32[]) Hilbert_Mem : memory */ +/*------------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*------------------------------------------------------------------------------------*/ + +void GenSHBSynth_fx( + const Word16 *input_synspeech, /* i : input synthesized speech */ + Word16 *shb_syn_speech_32k, /* o : output highband component */ + Word32 Hilbert_Mem[], /* i/o: memory */ + Word16 allpass_mem[], /* i/o: memory */ + const Word16 L_frame, /* i : ACELP frame length */ + Word16 *syn_dm_phase ) +{ + Word16 i, speech_buf_32k[L_FRAME32k]; + Word16 maxm, nor, nor32, shift; + Word16 input_synspeech_temp[L_FRAME16k]; + Word32 maxm32; + + + maxm = 0; + move16(); + maxm32 = L_deposit_l( 0 ); + FOR( i = 0; i < L_FRAME16k; i++ ) + maxm = s_max( maxm, abs_s( input_synspeech[i] ) ); + FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) + maxm = s_max( maxm, abs_s( allpass_mem[i] ) ); + FOR( i = 0; i < HILBERT_MEM_SIZE; i++ ) + maxm32 = L_max( maxm32, L_abs( Hilbert_Mem[i] ) ); + nor = sub( norm_s( maxm ), 3 ); + nor32 = sub( norm_l( maxm32 ), 3 ); + if ( maxm == 0 ) + { + nor = 15; + move16(); + } + if ( maxm32 == 0 ) + { + nor32 = 31; + move16(); + } + shift = s_min( nor, nor32 ); + + Copy_Scale_sig( input_synspeech, input_synspeech_temp, L_FRAME16k, shift ); + Scale_sig( allpass_mem, 2 * ALLPASSSECTIONS_STEEP, shift ); + Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, shift ); + Interpolate_allpass_steep_fx( input_synspeech_temp, allpass_mem, L_FRAME16k, speech_buf_32k ); + /*modify_Fs_fx( input_synspeech, L_FRAME16k, 16000, speech_buf_32k, 32000, allpass_mem, 0);*/ + IF( EQ_16( L_frame, L_FRAME ) ) + { + /* 12.8 k core flipping and downmixing */ + flip_and_downmix_generic_fx( speech_buf_32k, shb_syn_speech_32k, L_FRAME32k, + Hilbert_Mem, + Hilbert_Mem + HILBERT_ORDER1, + Hilbert_Mem + ( HILBERT_ORDER1 + 2 * HILBERT_ORDER2 ), + syn_dm_phase ); + } + ELSE + { + /* 16 k core flipping and no downmixing */ + FOR( i = 0; i < L_FRAME32k; i = i + 2 ) + { + shb_syn_speech_32k[i] = negate( speech_buf_32k[i] ); + move16(); + shb_syn_speech_32k[i + 1] = speech_buf_32k[i + 1]; + move16(); + } + } + + Scale_sig( shb_syn_speech_32k, L_FRAME32k, negate( shift ) ); + Scale_sig( allpass_mem, 2 * ALLPASSSECTIONS_STEEP, negate( shift ) ); + Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, negate( shift ) ); + + return; +} + + +/* IVAS 32-bit variant */ +void GenSHBSynth_fx32( + const Word32 *input_synspeech, /* i : input synthesized speech Qx*/ + Word32 *shb_syn_speech_32k, /* o : output highband component Qx*/ + Word32 Hilbert_Mem[], /* i/o: memory Qx*/ + Word32 state_lsyn_filt_shb_local[], /* i/o: memory Qx*/ + const Word16 L_frame, /* i : ACELP frame length */ + Word16 *syn_dm_phase ) +{ + Word32 speech_buf_32k[L_FRAME32k]; + Word16 i; + + Word16 shift = 0; + Word32 maxm32, input_synspeech_temp[L_FRAME16k]; + move16(); + + /* find the maximum value and derive the shift to improve precision of the Hilber filter */ + maxm32 = L_deposit_l( 0 ); + FOR( i = 0; i < L_FRAME16k; i++ ) + { + maxm32 = L_max( maxm32, L_abs( input_synspeech[i] ) ); + } + + FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) + { + maxm32 = L_max( maxm32, L_abs( state_lsyn_filt_shb_local[i] ) ); + } + + FOR( i = 0; i < HILBERT_MEM_SIZE; i++ ) + { + maxm32 = L_max( maxm32, L_abs( Hilbert_Mem[i] ) ); + } + + IF( maxm32 != 0 ) + { + shift = sub( norm_l( maxm32 ), 3 ); + + Copy_Scale_sig32( input_synspeech, input_synspeech_temp, L_FRAME16k, shift ); + Scale_sig32( state_lsyn_filt_shb_local, 2 * ALLPASSSECTIONS_STEEP, shift ); + Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, shift ); + } + ELSE + { + Copy32( input_synspeech, input_synspeech_temp, L_FRAME16k ); + } + + Interpolate_allpass_steep_fx32( input_synspeech_temp, state_lsyn_filt_shb_local, L_FRAME16k, speech_buf_32k ); + + IF( EQ_16( L_frame, L_FRAME ) ) + { + flip_and_downmix_generic_fx32( speech_buf_32k, shb_syn_speech_32k, L_FRAME32k, Hilbert_Mem, Hilbert_Mem + HILBERT_ORDER1, Hilbert_Mem + ( HILBERT_ORDER1 + 2 * HILBERT_ORDER2 ), syn_dm_phase ); + } + ELSE + { + FOR( i = 0; i < L_FRAME32k; i++ ) + { + // shb_syn_speech_32k[i] = ( ( i % 2 ) == 0 ) ? ( -speech_buf_32k[i] ) : ( speech_buf_32k[i] ); + IF( i % 2 == 0 ) + { + shb_syn_speech_32k[i] = L_negate( speech_buf_32k[i] ); // Qx + } + ELSE + { + shb_syn_speech_32k[i] = speech_buf_32k[i]; // Qx + } + move32(); + } + } + + IF( maxm32 != 0 ) + { + Scale_sig32( shb_syn_speech_32k, L_FRAME32k, negate( shift ) ); + Scale_sig32( state_lsyn_filt_shb_local, 2 * ALLPASSSECTIONS_STEEP, negate( shift ) ); + Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, negate( shift ) ); + } + + return; +} + + +/*==============================================================================*/ +/* FUNCTION : void ScaleShapedSHB_fx() */ +/*------------------------------------------------------------------------------*/ +/* PURPOSE : */ +/*------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* _(Word16) length : SHB overlap length */ +/* _(Word16*) subgain : subframe gain Q15 */ +/* _(Word32) frame_gain : frame gain Q18 */ +/* _(Word16*) win : window Q15 */ +/* _(Word16*) subwin : subframes window Q15 */ +/* _(Word16) Q_bwe_exc : Q format */ +/*------------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _(Word16) Qx : Q factor of output */ +/*------------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _(Word16*) synSHB : synthesized shb signal input Q_bwe_exc / output Qx */ +/* _(Word16*) overlap : buffer for overlap-add Q_bwe_exc /output Qx */ +/*------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*------------------------------------------------------------------------------*/ +/* CALLED FROM : RX */ +/*==============================================================================*/ + +void ScaleShapedSHB_fx( + const Word16 length, /* i : SHB overlap length */ + Word16 *synSHB, /* i/o : synthesized shb signal Q(Q_bwe_exc)/Q(Qx) */ + Word16 *overlap, /* i/o : buffer for overlap-add Q(Q_bwe_exc)/Q(Qx) */ + const Word16 *subgain, /* i : subframe gain Q15 */ + const Word32 frame_gain, /* i : frame gain Q18 */ + const Word16 *win, /* i : window Q15 */ + const Word16 *subwin, /* i : subframes window Q15 */ + Word16 *Q_bwe_exc, + Word16 *Qx, /* o : newly computed Q factor for synSHB */ + Word16 n_mem3, + Word16 prev_Q_bwe_syn2 ) +{ + const Word16 *skip; + Word16 i, j, k, l_shb_lahead, l_frame, l_frame_tmp; + Word16 join_length, num_join; + Word32 mod_syn[L_FRAME16k + L_SHB_LAHEAD]; + Word16 sum_gain; + Word32 L_tmp; + Word16 tmpQ15; + Word16 Q_gFr_norm, gain_frame_Q16; + Word32 L_tmp2; + Word16 temp1, temp2; + + /* Init */ + set32_fx( mod_syn, 0, L_FRAME16k + L_SHB_LAHEAD ); + + /* apply gain for each subframe, and store noise output signal using overlap-add */ + IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) + { + /* WB Gain shape and gain frame application with overlap */ + skip = skip_bands_WB_TBE; + l_frame = L_FRAME16k / 4; + move16(); + l_shb_lahead = L_SHB_LAHEAD / 4; + move16(); + + sum_gain = 0; + move16(); + FOR( k = 0; k < length / 2; k++ ) + { + sum_gain = mult_r( subwin[2 * k + 2], subgain[0] ); /* Q15 */ + mod_syn[skip[0] + k] = L_mult( sum_gain, synSHB[skip[0] + k] ); /* Q_bwe_exc + 16 */ + move32(); + mod_syn[skip[0] + k + length / 2] = L_mult( subgain[0], synSHB[skip[0] + k + length / 2] ); /* Q_bwe_exc + 16 */ + move32(); + } + FOR( i = 1; i < NUM_SHB_SUBFR / 2; i++ ) + { + FOR( k = 0; k < length; k++ ) + { + /* one bit headroom here, otherwise messes up the gain shape application */ + /* keep it as L_mult0 */ + L_tmp = L_mult0( subwin[k + 1], subgain[i] ); /* Q30 */ + sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i - 1] ) ); /* Q14 */ + mod_syn[skip[i] + k] = L_shl( L_mult( sum_gain, synSHB[skip[i] + k] ), 1 ); /* Q_bwe_exc + 16 */ + move32(); + } + } + FOR( k = 0; k < length / 2; k++ ) + { + sum_gain = mult_r( subwin[length - 2 * k - 2], subgain[i - 1] ); /* Q15 */ + mod_syn[skip[i] + k] = L_mult( sum_gain, synSHB[skip[i] + k] ); /* Q_bwe_exc + 16 */ + move32(); + } + } + ELSE + { + /* SWB Gain shape and gain frame application with overlap */ + l_frame = L_FRAME16k; + move16(); + l_shb_lahead = L_SHB_LAHEAD; + move16(); + skip = skip_bands_SWB_TBE; + + num_join = NUM_SHB_SUBFR / NUM_SHB_SUBGAINS; + move16(); + join_length = i_mult2( num_join, length ); + j = 0; + move16(); + FOR( k = 0; k < length; k++ ) + { + sum_gain = mult_r( subwin[k + 1], subgain[0] ); /* Q15 */ + mod_syn[j] = L_mult( synSHB[j], sum_gain ); + move32(); /* Q_bwe_exc + 16 */ + j = add( j, 1 ); + } + + FOR( i = 0; i < NUM_SHB_SUBGAINS - 1; i++ ) + { + FOR( k = 0; k < join_length - length; k++ ) + { + mod_syn[j] = L_mult( synSHB[j], subgain[i * num_join] ); + move32(); /* Q_bwe_exc + 16 */ + j = add( j, 1 ); + } + + FOR( k = 0; k < length; k++ ) + { + /* one bit headroom here, otherwise messes up the gain shape application */ + /* keep it as L_mult0 */ + L_tmp = L_mult0( subwin[k + 1], subgain[( i + 1 ) * num_join] ); /* Q30 */ + sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i * num_join] ) ); /*Q14 */ + mod_syn[j] = L_shl( L_mult( sum_gain, synSHB[j] ), 1 ); + move32(); /* Q_bwe_exc + 16 */ + j = add( j, 1 ); + } + } + FOR( k = 0; k < join_length - length; k++ ) + { + mod_syn[j] = L_mult( synSHB[j], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); + move32(); /* Q_bwe_exc + 16 */ + j = add( j, 1 ); + } + FOR( k = 0; k < length; k++ ) + { + sum_gain = mult_r( subwin[length - k - 1], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); /* Q15 */ + mod_syn[j] = L_mult( synSHB[j], sum_gain ); + move32(); /* Q_bwe_exc + 16 */ + j = add( j, 1 ); + } + } + + + Q_gFr_norm = norm_l( frame_gain ); + if ( frame_gain == 0 ) + { + Q_gFr_norm = 31; + move16(); + } + Q_gFr_norm = sub( Q_gFr_norm, 1 ); /* give some headroom */ + + gain_frame_Q16 = round_fx( L_shl( frame_gain, Q_gFr_norm ) ); /* Q = 18 + Q_gFr_norm - 16 + = (Q_gFr_norm + 2) */ + + *Q_bwe_exc = add( *Q_bwe_exc, Q_gFr_norm ); /* compensate for the exp shift */ + move16(); + *Q_bwe_exc = sub( *Q_bwe_exc, 13 ); /* Keep Q-fac at => (Q_bwe_exc + Q_gFr_norm - 13) */ + move16(); + + /* check for headroom of previous buff memories: overlap, Hilbert, and interp all-pass mem */ + tmpQ15 = add( prev_Q_bwe_syn2, n_mem3 ); + if ( GT_16( *Q_bwe_exc, tmpQ15 ) ) + { + *Q_bwe_exc = tmpQ15; + move16(); + } + + *Qx = *Q_bwe_exc; + move16(); + /* rescale the overlap memory */ + FOR( i = 0; i < L_SHB_LAHEAD; i++ ) + { + temp2 = 1; + move16(); + if ( overlap[i] < 0 ) + { + temp2 = -1; + move16(); + } + temp1 = abs_s( overlap[i] ); + temp1 = shl( temp1, sub( *Q_bwe_exc, prev_Q_bwe_syn2 ) ); + overlap[i] = i_mult( temp1, temp2 ); + move16(); /* Q_bwe_exc + Q_gFr_norm - 13 */ + } + + FOR( i = 0; i < l_shb_lahead; i++ ) + { + L_tmp = Mpy_32_16_1( mod_syn[i], gain_frame_Q16 ); /* Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15 */ + L_tmp2 = Mpy_32_16_1( L_tmp, win[i] ); /* (Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15) + 15 + (1-16) */ + synSHB[i] = mac_r( L_tmp2, overlap[i], MAX_16 ); + move16(); /* Q_bwe_exc + Q_gFr_norm - 13 */ + synSHB[i + l_shb_lahead] = round_fx( L_tmp ); /* Q_bwe_exc + Q_gFr_norm - 13 */ + move16(); + } + + FOR( ; i < l_frame; i++ ) + { + L_tmp = Mpy_32_16_1( mod_syn[i], gain_frame_Q16 ); /* Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15 */ + synSHB[i] = round_fx( L_tmp ); /* Q_bwe_exc + Q_gFr_norm - 13 */ + move16(); + } + + l_frame_tmp = add( l_frame, l_shb_lahead ); + FOR( ; i < l_frame_tmp; i++ ) + { + L_tmp = Mpy_32_16_1( mod_syn[i], gain_frame_Q16 ); /* Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15 */ + L_tmp = Mpy_32_16_1( L_tmp, win[l_frame + l_shb_lahead - 1 - i] ); /* (Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15) + 15 + (1-16) */ + overlap[i - l_frame] = round_fx( L_tmp ); /* Q_bwe_exc + Q_gFr_norm - 13 */ + move16(); + } + + return; +} + + +/* IVAS 32-bit variant */ +void ScaleShapedSHB_fx32( + const Word16 length, /* i : SHB overlap length */ + Word32 *synSHB_fx, /* i/o: synthesized shb signal Q_inp/Q_new */ + Word32 *overlap_fx, /* i/o: buffer for overlap-add Q_inp/Q_new */ + const Word16 *subgain_fx, /* i : subframe gain Q15 */ + const Word32 frame_gain_fx, /* i : frame gain Q18*/ + const Word16 *win_fx, /* i : window Q15 */ + const Word16 *subwin_fx, /* i : subframes window Q15 */ + Word16 *Q_inp, + Word16 *Q_new ) +{ + const Word16 *skip; + Word16 i, j, k, l_shb_lahead, l_frame; + Word16 join_length, num_join; + Word32 mod_syn_fx[L_FRAME16k + L_SHB_LAHEAD], L_tmp; + Word16 sum_gain_fx; + + /* initilaization */ + l_frame = L_FRAME16k; + l_shb_lahead = L_SHB_LAHEAD; + move16(); + move16(); + skip = skip_bands_SWB_TBE; + + IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) + { + skip = skip_bands_WB_TBE; + l_frame = L_FRAME16k / 4; + l_shb_lahead = L_SHB_LAHEAD / 4; + move16(); + move16(); + } + + /* apply gain for each subframe, and store noise output signal using overlap-add */ + set32_fx( mod_syn_fx, 0, l_frame + l_shb_lahead ); + + IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) + { + sum_gain_fx = 0; + move16(); + FOR( k = 0; k < shr( length, 1 ); k++ ) + { + sum_gain_fx = mult_r( subwin_fx[2 * k + 2], subgain_fx[0] ); + mod_syn_fx[skip[0] + k] = Mpy_32_16_1( synSHB_fx[skip[0] + k], sum_gain_fx ); + move32(); // Qx + mod_syn_fx[skip[0] + k + length / 2] = Mpy_32_16_1( synSHB_fx[skip[0] + k + length / 2], subgain_fx[0] ); // Qx + move32(); + } + FOR( i = 1; i < NUM_SHB_SUBFR / 2; i++ ) + { + FOR( k = 0; k < length; k++ ) + { + L_tmp = L_mult0( subwin_fx[k + 1], subgain_fx[i] ); + sum_gain_fx = round_fx( L_mac0( L_tmp, subwin_fx[length - k - 1], subgain_fx[i - 1] ) ); + mod_syn_fx[skip[i] + k] = L_shl( Mpy_32_16_1( synSHB_fx[skip[i] + k], sum_gain_fx ), 1 ); // Qx + move32(); + } + } + FOR( k = 0; k < shr( length, 1 ); k++ ) + { + sum_gain_fx = mult_r( subwin_fx[length - k * 2 - 2], subgain_fx[i - 1] ); + mod_syn_fx[skip[i] + k] = Mpy_32_16_1( synSHB_fx[skip[i] + k], sum_gain_fx ); // Qx + move32(); + } + } + ELSE + { + num_join = NUM_SHB_SUBFR / NUM_SHB_SUBGAINS; + join_length = i_mult( num_join, length ); + j = 0; + move16(); + move16(); + FOR( k = 0; k < length; k++ ) + { + mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], mult_r( subwin_fx[k + 1], subgain_fx[0] ) ); // Qx + move32(); + j = add( j, 1 ); + } + FOR( i = 0; i < NUM_SHB_SUBGAINS - 1; i++ ) + { + FOR( k = 0; k < join_length - length; k++ ) + { + mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], subgain_fx[i * num_join] ); // Qx + move32(); + j = add( j, 1 ); + } + + FOR( k = 0; k < length; k++ ) + { + L_tmp = L_mult0( subwin_fx[length - k - 1], subgain_fx[i * num_join] ); + mod_syn_fx[j] = L_shl( Mpy_32_16_1( synSHB_fx[j], round_fx( L_mac0( L_tmp, subwin_fx[k + 1], subgain_fx[( i + 1 ) * num_join] ) ) ), 1 ); // Qx + move32(); + j = add( j, 1 ); + } + } + FOR( k = 0; k < join_length - length; k++ ) + { + mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], subgain_fx[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); // Qx + move32(); + j = add( j, 1 ); + } + FOR( k = 0; k < length; k++ ) + { + mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], mult_r( subwin_fx[length - k - 1], subgain_fx[( NUM_SHB_SUBGAINS - 1 ) * num_join] ) ); // Qx + move32(); + j = add( j, 1 ); + } + } + + Word16 norm_shift = norm_l( frame_gain_fx ); + if ( frame_gain_fx == 0 ) + { + norm_shift = 31; + move16(); + } + + norm_shift = s_min( norm_shift, 14 ); + norm_shift = sub( norm_shift, 1 ); + + *Q_new = add( *Q_inp, sub( norm_shift, 13 ) ); // Q_new = Q_inp + min(norm_shift,14) - 14; + move16(); + FOR( i = 0; i < L_SHB_LAHEAD; i++ ) + { + overlap_fx[i] = L_shl( overlap_fx[i], sub( *Q_new, *Q_inp ) ); + move32(); + } + + FOR( i = 0; i < l_shb_lahead; i++ ) + { + synSHB_fx[i] = Mpy_32_32( mod_syn_fx[i], Mpy_32_16_1( L_shl( frame_gain_fx, norm_shift ), win_fx[i] ) ); // Q_new + synSHB_fx[i] = L_add( synSHB_fx[i], overlap_fx[i] ); + synSHB_fx[i + l_shb_lahead] = Mpy_32_32( mod_syn_fx[i], L_shl( frame_gain_fx, norm_shift ) ); // Q_new + move32(); + move32(); + move32(); + } + + FOR( ; i < l_frame; i++ ) + { + synSHB_fx[i] = Mpy_32_32( mod_syn_fx[i], L_shl( frame_gain_fx, norm_shift ) ); // Q_new + move32(); + } + + FOR( ; i < l_frame + l_shb_lahead; i++ ) + { + synSHB_fx[i] = L_shl( synSHB_fx[i], sub( *Q_new, *Q_inp ) ); + overlap_fx[i - l_frame] = Mpy_32_32( mod_syn_fx[i], Mpy_32_16_1( L_shl( frame_gain_fx, norm_shift ), win_fx[l_frame + l_shb_lahead - 1 - i] ) ); // Q_new + move32(); + move32(); + } + + *Q_inp = *Q_new; + move16(); + return; +} + + +/*-------------------------------------------------------------------* + * ScaleShapedWB() + * + * + *-------------------------------------------------------------------*/ + +void ScaleShapedWB_fx( + const Word16 length, /* i : SHB overlap length */ + Word16 *synSHB, /* i/o : synthesized shb signal Q_bwe_exc/Qx */ + Word16 *overlap, /* i/o : buffer for overlap-add Q_bwe_exc/Qx */ + const Word16 *subgain, /* i : subframe gain Q15*/ + const Word32 frame_gain, /* i : frame gain Q18 */ + const Word16 *win, /* i : window Q15*/ + const Word16 *subwin, /* i : subframes window Q15*/ + const Word16 Q_bwe_exc, + Word16 L_frame, /* i : Frame length - determines whether 12.8 or 16kHz core in-use */ + Word16 dynQ, /* i : indicate whether output is dynamic Q, or Q0 */ + Word16 *Qx, /* o : newly computed Q factor for synSHB */ + Word16 prev_Qx, /* i : prev_Qx for memory scaling */ + Word32 *Hilbert_Mem /* i : Hilbert memory used for computing Qx */ +) +{ + const Word16 *skip; + Word16 i, j, k, l_shb_lahead, l_frame, l_frame_tmp; + Word16 join_length, num_join; + Word32 mod_syn[L_FRAME16k + L_SHB_LAHEAD]; + Word16 sum_gain; + Word32 L_tmp; + Word16 max_val, abs_sig, sc1, sc2, shift, max_headroom, min_shift, max_shift, max_shift2; + /* Init */ + set32_fx( mod_syn, 0, L_FRAME16k + L_SHB_LAHEAD ); + + /* apply gain for each subframe, and store noise output signal using overlap-add */ + IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) + { + /* WB Gain shape and gain frame application with overlap */ + skip = skip_bands_WB_TBE; + move16(); + l_frame = L_FRAME16k / 4; + move16(); + l_shb_lahead = L_SHB_LAHEAD / 4; + move16(); + + sum_gain = 0; + move16(); + FOR( k = 0; k < length / 2; k++ ) + { + sum_gain = mult_r( subwin[2 * k + 2], subgain[0] ); /* Q15 */ + mod_syn[skip[0] + k] = L_mult( sum_gain, synSHB[skip[0] + k] ); + move32(); /* Q_bwe_exc + 16 */ + mod_syn[skip[0] + k + length / 2] = L_mult( subgain[0], synSHB[skip[0] + k + length / 2] ); + move32(); /* Q_bwe_exc + 16 */ + } + FOR( i = 1; i < NUM_SHB_SUBFR / 2; i++ ) + { + FOR( k = 0; k < length; k++ ) + { + L_tmp = L_mult0( subwin[k + 1], subgain[i] ); /* Q30 */ + sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i - 1] ) ); /* Q14 */ + mod_syn[skip[i] + k] = L_shl( L_mult( sum_gain, synSHB[skip[i] + k] ), 1 ); + move32(); /* Q_bwe_exc + 16 */ + } + } + FOR( k = 0; k < length / 2; k++ ) + { + sum_gain = mult_r( subwin[length - 2 * k - 2], subgain[i - 1] ); /* Q15 */ + mod_syn[skip[i] + k] = L_mult( sum_gain, synSHB[skip[i] + k] ); + move32(); /* Q_bwe_exc + 16 */ + } + } + ELSE + { + /* SWB Gain shape and gain frame application with overlap */ + l_frame = L_FRAME16k; + move16(); + l_shb_lahead = L_SHB_LAHEAD; + move16(); + skip = skip_bands_SWB_TBE; + move16(); + + num_join = NUM_SHB_SUBFR / NUM_SHB_SUBGAINS; + move16(); + join_length = i_mult2( num_join, length ); + j = 0; /* ptr*/ + move16(); + FOR( k = 0; k < length; k++ ) + { + sum_gain = mult_r( subwin[k + 1], subgain[0] ); /* Q15 */ + mod_syn[j] = L_mult( synSHB[j], sum_gain ); + move32(); /* Q_bwe_exc + 16 */ + j++; + } + + FOR( i = 0; i < NUM_SHB_SUBGAINS - 1; i++ ) + { + FOR( k = 0; k < join_length - length; k++ ) + { + mod_syn[j] = L_mult( synSHB[j], subgain[i * num_join] ); + move32(); /* Q_bwe_exc + 16 */ + j++; + } + + FOR( k = 0; k < length; k++ ) + { + L_tmp = L_mult0( subwin[k + 1], subgain[i_mult2( ( i + 1 ), num_join )] ); /* Q30 */ + sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i * num_join] ) ); /*Q14 */ + mod_syn[j] = L_shl( L_mult( sum_gain, synSHB[j] ), 1 ); + move32(); /* Q_bwe_exc + 16 */ + j++; + } + } + FOR( k = 0; k < join_length - length; k++ ) + { + mod_syn[j] = L_mult( synSHB[j], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); + move32(); /* Q_bwe_exc + 16 */ + j++; + } + FOR( k = 0; k < length; k++ ) + { + sum_gain = mult_r( subwin[length - k - 1], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); /* Q15 */ + mod_syn[j] = L_mult( synSHB[j], sum_gain ); + move32(); /* Q_bwe_exc + 16 */ + j++; + } + } + + + max_val = 0; + move16(); + FOR( i = 0; i < l_frame + l_shb_lahead; i++ ) + { + abs_sig = abs_s( round_fx( mod_syn[i] ) ); + if ( GT_16( abs_sig, max_val ) ) + { + max_val = abs_sig; + move16(); + } + } + + FOR( i = 0; i < HILBERT_MEM_SIZE; i++ ) + { + abs_sig = abs_s( round_fx( Hilbert_Mem[i] ) ); + if ( GT_16( abs_sig, max_val ) ) + { + max_val = abs_sig; + move16(); + } + } + + sc1 = norm_s( max_val ); /* max_val headroom in mod_syn[] */ + sc2 = norm_s( round_fx( frame_gain ) ); /* headroom in GainFrame */ + + IF( dynQ == 0 ) + { + shift = sub( 13, Q_bwe_exc ); /* earlier = (10 - Q_bwe_exc) but we changed GainFrame Q21 to Q18 */ + *Qx = 0; + move16(); + } + ELSE IF( EQ_16( L_frame, L_FRAME ) ) /* 12.8k core */ + { + max_headroom = sub( add( sc1, sc2 ), 4 ); /* Max headroom after multiplying = sc1 + sc2 -3 (keep 3 bit extra headroom) */ + /* 12.8k core needs extra headroom than 16k core */ + /* otherwise Hilbert transform inside flip_and_downmix have saturation, causes ringing in output */ + + /* Qx = (Q_bwe_exc+3) + shift - 16 */ + /* make sure 14 > Qx > 2 */ + min_shift = sub( 2, sub( add( Q_bwe_exc, 3 ), 16 ) ); + max_shift = sub( 13, sub( add( Q_bwe_exc, 3 ), 16 ) ); + max_shift2 = s_min( max_shift, max_headroom ); /* avoid shifting more than the available max_val headroom to avoid overflow */ + + shift = s_min( min_shift, max_shift2 ); + *Qx = sub( add( add( Q_bwe_exc, 3 ), shift ), 16 ); + move16(); + } + ELSE /* 16k core */ + { + max_headroom = sub( add( sc1, sc2 ), 1 ); /* Max headroom after multiplying = sc1 + sc2 -1 (keep 1 bit extra headroom) */ + + /* Qx = (Q_bwe_exc+3) + shift - 16 */ + /* make sure 14 > Qx > 3 */ + min_shift = sub( 3, sub( add( Q_bwe_exc, 3 ), 16 ) ); + move16(); + max_shift = sub( 13, sub( add( Q_bwe_exc, 3 ), 16 ) ); + move16(); + max_shift2 = s_min( max_shift, max_headroom ); /* avoid shifting more than the available max_val headroom to avoid overflow */ + + shift = s_min( min_shift, max_shift2 ); + *Qx = sub( add( add( Q_bwe_exc, 3 ), shift ), 16 ); + move16(); + } + + /* bring memory st_fx->syn_overlap_fx[] = overlap[i] to new Q = Qx to prepare for addition */ + FOR( i = 0; i < l_shb_lahead; i++ ) + { + overlap[i] = shl( overlap[i], sub( *Qx, prev_Qx ) ); + move16(); + } + + FOR( i = 0; i < l_shb_lahead; i++ ) + { + /* mod_syn in (16+Q_bwe_exc), frame_gain in Q18 */ + L_tmp = Mult_32_32( mod_syn[i], frame_gain ); /* L_tmp in (Q_bwe_exc+3) */ + synSHB[i] = round_fx_sat( L_shl_sat( Mult_32_16( L_tmp, win[i] ), shift ) ); /* Qx */ + move16(); + synSHB[i] = add_sat( synSHB[i], overlap[i] ); + move16(); /* Qx */ + synSHB[i + l_shb_lahead] = round_fx_sat( L_shl_sat( L_tmp, shift ) ); /* Qx */ + move16(); + } + + FOR( ; i < l_frame; i++ ) + { + L_tmp = Mult_32_32( mod_syn[i], frame_gain ); /* L_tmp in (Q_bwe_exc+3) */ + synSHB[i] = round_fx_sat( L_shl_sat( L_tmp, shift ) ); /* Qx; */ + move16(); + } + + l_frame_tmp = add( l_frame, l_shb_lahead ); + FOR( ; i < l_frame_tmp; i++ ) + { + L_tmp = Mult_32_32( mod_syn[i], frame_gain ); /* (Q_bwe_exc+3) */ + overlap[i - l_frame] = round_fx_sat( L_shl_sat( Mult_32_16( L_tmp, win[l_frame + l_shb_lahead - 1 - i] ), shift ) ); /* Qx */ + move16(); + } + + return; +} + +/*-------------------------------------------------------------------* + * non_linearity() + * + * Apply a non linearity to the SHB excitation + * -------------------------------------------------------------------*/ + +static Word32 non_linearity_scaled_copy( + const Word16 input[], + Word16 j, + const Word16 length, + Word32 output[], + Word32 prev_scale, + const Word16 scale_step, + const Word16 en_abs ) +{ + Word16 i; + Word32 L_tmp; + + + IF( en_abs ) + { + FOR( i = 0; i < j; i++ ) + { + L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ + L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ + output[i] = L_tmp; + move32(); + + L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ + prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ + } + FOR( ; i < length; i++ ) + { + L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ + L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ + output[i] = L_tmp; + move32(); + } + } + ELSE + { + FOR( i = 0; i < j; i++ ) + { + L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ + L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ + + if ( input[i] < 0 ) + { + L_tmp = L_negate( L_tmp ); + } + output[i] = L_tmp; + move32(); + + L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ + prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ + } + + FOR( ; i < length; i++ ) + { + L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ + L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ + + if ( input[i] < 0 ) + { + L_tmp = L_negate( L_tmp ); + } + output[i] = L_tmp; + move32(); + } + } + return prev_scale; +} + + +/*-------------------------------------------------------------------* + * non_linearity() + * + * Apply a non linearity to the SHB excitation + * -------------------------------------------------------------------*/ + +static Word32 non_linearity_scaled_copy_ivas( + const Word16 input[], + Word16 j, + const Word16 length, + Word32 output[], + Word32 prev_scale, + const Word16 scale_step, + const Word16 en_abs ) +{ + Word16 i; + Word32 L_tmp; + + + IF( en_abs ) + { + FOR( i = 0; i < j; i++ ) + { + L_tmp = L_mult( input[i], input[i] ); /* 2*Q_inp+1 */ + L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ + + test(); + test(); + if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) + { + /* NOTE: this is done to avoid the product to become zero for small non-zero input */ + L_tmp = 1; + move16(); + } + + output[i] = L_tmp; + move32(); + + L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ + prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ + } + FOR( ; i < length; i++ ) + { + /* L_tmp = (input[i] * input[i]) * prev_scale;*/ + L_tmp = Mpy_32_16_1( Mpy_32_16_1( prev_scale, input[i] ), input[i] ); /* 2*Q_inp */ + + test(); + test(); + if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) + { + /* NOTE: this is done to avoid the product to become zero for small non-zero input */ + L_tmp = 1; + move16(); + } + output[i] = L_tmp; + move32(); + } + } + ELSE + { + FOR( i = 0; i < j; i++ ) + { + L_tmp = L_mult( input[i], input[i] ); /* 2*Q_inp+1 */ + L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ + + test(); + test(); + if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) + { + /* NOTE: this is done to avoid the product to become zero for small non-zero input */ + L_tmp = 1; + move16(); + } + + if ( input[i] < 0 ) + { + L_tmp = L_negate( L_tmp ); + } + output[i] = L_tmp; + move32(); + + L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ + prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ + } + + FOR( ; i < length; i++ ) + { + L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ + L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ + test(); + test(); + if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) + { + /* NOTE: this is done to avoid the product to become zero for small non-zero input */ + L_tmp = 1; + move16(); + } + + if ( input[i] < 0 ) + { + L_tmp = L_negate( L_tmp ); + } + output[i] = L_tmp; + move32(); + } + } + return prev_scale; +} + + +/*==========================================================================*/ +/* FUNCTION : void non_linearity() */ +/*--------------------------------------------------------------------------*/ +/* PURPOSE : Apply a non linearity to the SHB excitation */ +/*--------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* Word16 input[] i : input signal Q_inp */ +/* Word16 length i : input length */ +/*--------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* Word32 output[] o : output signal 2*Q_inp */ +/*--------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* Word32 *prev_scale i/o: memory Q30 */ +/*--------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*--------------------------------------------------------------------------*/ +/* CALLED FROM : */ +/*==========================================================================*/ + +void non_linearity_fx( + const Word16 input[], /* i : input signal Q_inp */ + Word32 output[], /* o : output signal 2*Q_inp */ + const Word16 length, /* i : input length */ + Word32 *pPrevScale, /* i/o: memory Q30 */ + Word16 Q_inp, + Word16 coder_type, /* i : Coder Type */ + Word16 *voice_factors, /* i : Voice Factors */ + const Word16 L_frame /* i : ACELP frame length */ + +) +{ + Word16 i, j; + Word16 max_val = 0; + move16(); + Word32 scale; + Word16 scale_step; + Word16 exp, tmp; + Word16 e_tmp, f_tmp; + Word16 frac; + Word32 L_tmp; + Word32 L_tmp1; + + Word16 en_abs = 0; + Word16 v_fac = 0; + move16(); + move16(); + Word16 ths; + Word16 nframes; + Word32 prev_scale; + Word16 length_half; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + + IF( EQ_16( L_frame, L_FRAME16k ) ) + { + nframes = 5; + move16(); + ths = 17817; + move16(); /* 0.87*5 in Q12 */ + } + ELSE + { + nframes = 4; + move16(); + ths = 15400; + move16(); /* 0.94*4 in Q12 */ + } + + + FOR( i = 0; i < nframes; i++ ) + { + v_fac = add( v_fac, shr( voice_factors[i], 3 ) ); /* Q12 */ + } + + test(); + if ( EQ_16( coder_type, VOICED ) && GT_16( v_fac, ths ) ) + { + en_abs = 1; + move16(); + } + + length_half = shr( length, 1 ); + prev_scale = *pPrevScale; + move32(); + + + /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ + + FOR( i = j = 0; i < length_half; i++ ) + { + tmp = abs_s( input[i] ); + if ( GT_16( tmp, max_val ) ) + { + j = i; + move16(); + } + max_val = s_max( max_val, tmp ); + } + + + IF( GT_16( max_val, shl( 1, Q_inp ) ) ) + { + exp = norm_s( max_val ); + tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ + scale = L_shl( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ + } + ELSE + { + scale = 1438814044; + move32(); /* Q31; 0.67 in Q31 */ + } + + test(); + IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 32 ), scale ) ) + { + scale_step = 16384; + move16(); /* Q14 */ + prev_scale = L_shr( scale, 1 ); /* Q30 */ + } + ELSE + { + + /* Computing log2(scale) */ + IF( j == 0 ) + { + scale_step = 32767; + move16(); + } + ELSE + { + e_tmp = norm_l( scale ); + f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); + e_tmp = sub( -1, e_tmp ); + L_tmp = Mpy_32_16( e_tmp, f_tmp, MAX_16 ); /* Q16 */ + + /* Computing log2(prev_scale) */ + e_tmp = norm_l( prev_scale ); + f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); + e_tmp = negate( e_tmp ); + L_tmp1 = Mpy_32_16( e_tmp, f_tmp, MAX_16 ); /* Q16 */ + + /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ + L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ + + /* Computing 1/j */ + exp = norm_s( j ); + tmp = div_s( shl( 1, sub( 14, exp ) ), j ); /* Q(29-exp) */ + + /* (log2(scale / prev_scale))/length */ + L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ + + frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ + + tmp = extract_l( Pow2( 14, frac ) ); + scale_step = shl_o( tmp, exp, &Overflow ); /* Q14 */ + } + } + + prev_scale = non_linearity_scaled_copy( input, j, length_half, output, prev_scale, scale_step, en_abs ); + + max_val = 0; + move16(); + j = shr( length, 1 ); + FOR( i = length_half; i < length; i++ ) + { + tmp = abs_s( input[i] ); + if ( GT_16( tmp, max_val ) ) + { + j = i; + move16(); + } + max_val = s_max( max_val, tmp ); + } + + IF( GT_16( max_val, shl( 1, Q_inp ) ) ) + { + exp = norm_s( max_val ); + tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ + scale = L_shl_o( L_mult( 21955 /* 0.67 in Q15 */, tmp ), add( exp, sub( Q_inp, 14 ) ), &Overflow ); /* Q31 */ + } + ELSE + { + scale = 1438814044; + move32(); /* Q31; 0.67 in Q31 */ + } + + test(); + IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 32 ), scale ) ) + { + scale_step = 16384; + move16(); /*Q14 */ + prev_scale = L_shr( scale, 1 ); /*Q30 */ + } + ELSE + { + /*scale_step = (float) exp(1.0f / (float) (j - length/2) * (float) log(scale / prev_scale)); */ + /* Computing log2(scale) */ + IF( EQ_16( j, length_half ) ) + { + scale_step = 32767; + move16(); /*Q14 */ + } + ELSE + { + e_tmp = norm_l( scale ); + f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); + e_tmp = sub( -e_tmp, 1 ); + L_tmp = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ + + /* Computing log2(prev_scale) */ + e_tmp = norm_l( prev_scale ); + f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); + e_tmp = negate( e_tmp ); + L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ + + /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ + L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ + + /* Computing 1/(j - length/2) */ + + tmp = sub( j, length_half ); + exp = norm_s( tmp ); + + + tmp = div_s( shl( 1, sub( 14, exp ) ), tmp ); /* Q(29-exp) */ + + /* (log2(scale / prev_scale))/length */ + L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ + + frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ + + tmp = extract_l( Pow2( 14, frac ) ); + scale_step = shl_o( tmp, exp, &Overflow ); /*Q14 */ + } + } + + prev_scale = non_linearity_scaled_copy( input + length_half, sub( j, length_half ), sub( length, length_half ), output + length_half, prev_scale, scale_step, en_abs ); + + *pPrevScale = prev_scale; + move32(); + + /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ + + return; +} + + +/*==========================================================================*/ +/* FUNCTION : void non_linearity_ivas_fx() */ +/*--------------------------------------------------------------------------*/ +/* PURPOSE : Apply a non linearity to the SHB excitation */ +/*--------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* Word16 input[] i : input signal Q_inp */ +/* Word16 length i : input length */ +/*--------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* Word32 output[] o : output signal 2*Q_inp */ +/*--------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* Word32 *prev_scale i/o: memory Q30 */ +/*--------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*--------------------------------------------------------------------------*/ +/* CALLED FROM : */ +/*==========================================================================*/ + +void non_linearity_ivas_fx( + const Word16 input[], /* i : input signal Q_inp */ + Word32 output[], /* o : output signal 2*Q_inp */ + const Word16 length, /* i : input length */ + Word32 *pPrevScale, /* i/o: memory Q30 */ + Word16 Q_inp, + Word16 coder_type, /* i : Coder Type */ + Word16 *voice_factors, /* i : Voice Factors */ + const Word16 L_frame /* i : ACELP frame length */ + +) +{ + Word16 i, j; + Word16 max_val = 0; + move16(); + Word32 scale; + Word16 scale_step; + Word16 exp, tmp; + Word16 e_tmp, f_tmp; + Word16 frac; + Word32 L_tmp; + Word32 L_tmp1; + + Word16 en_abs = 0; + Word16 v_fac = 0; + move16(); + move16(); + Word16 ths; + Word16 nframes; + Word32 prev_scale; + Word16 length_half; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + + IF( EQ_16( L_frame, L_FRAME16k ) ) + { + nframes = 5; + move16(); + ths = 17817; + move16(); /* 0.87*5 in Q12 */ + } + ELSE + { + nframes = 4; + move16(); + ths = 15400; + move16(); /* 0.94*4 in Q12 */ + } + + + FOR( i = 0; i < nframes; i++ ) + { + v_fac = add( v_fac, shr( voice_factors[i], 3 ) ); /* Q12 */ + } + + test(); + if ( EQ_16( coder_type, VOICED ) && GT_16( v_fac, ths ) ) + { + en_abs = 1; + move16(); + } + + length_half = shr( length, 1 ); + prev_scale = *pPrevScale; + move32(); + + + /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ + + FOR( i = j = 0; i < length_half; i++ ) + { + tmp = abs_s( input[i] ); + if ( GT_16( tmp, max_val ) ) + { + j = i; + move16(); + } + max_val = s_max( max_val, tmp ); + } + + + IF( GT_16( max_val, shl( 1, Q_inp ) ) ) + { + exp = norm_s( max_val ); + tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ + scale = L_shl( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ + } + ELSE + { + scale = 1438814044; + move32(); /* Q31; 0.67 in Q31 */ + } + + test(); + IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 64 ) /*Q30 -> Q31*/, scale /*Q31*/ ) ) + { + scale_step = 16384; + move16(); /* Q14 */ + prev_scale = L_shr( scale, 1 ); /* Q30 */ + } + ELSE + { + + /* Computing log2(scale) */ + IF( j == 0 ) + { + scale_step = 32767; + move16(); + } + ELSE + { + e_tmp = norm_l( scale ); + f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); + e_tmp = sub( -1, e_tmp ); + L_tmp = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ + + /* Computing log2(prev_scale) */ + e_tmp = norm_l( prev_scale ); + f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); + e_tmp = negate( e_tmp ); + L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ + + /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ + L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ + + /* Computing 1/j */ + exp = norm_s( j ); + tmp = div_s( shl( 1, sub( 14, exp ) ), j ); /* Q(29-exp) */ + + /* (log2(scale / prev_scale))/length */ + L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ + + frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ + + tmp = extract_l( Pow2( 14, frac ) ); + scale_step = shl_o( tmp, exp, &Overflow ); /* Q14 */ + } + } + + prev_scale = non_linearity_scaled_copy_ivas( input, j, length_half, output, prev_scale, scale_step, en_abs ); + + max_val = 0; + move16(); + j = shr( length, 1 ); + FOR( i = length_half; i < length; i++ ) + { + tmp = abs_s( input[i] ); + if ( GT_16( tmp, max_val ) ) + { + j = i; + move16(); + } + max_val = s_max( max_val, tmp ); + } + + IF( GT_16( max_val, shl( 1, Q_inp ) ) ) + { + exp = norm_s( max_val ); + tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ + scale = L_shl_o( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ), &Overflow ); /* Q31 */ + } + ELSE + { + scale = 1438814044; + move32(); /* Q31; 0.67 in Q31 */ + } + + test(); + IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 64 ), scale ) ) + { + scale_step = 16384; + move16(); /*Q14 */ + prev_scale = L_shr( scale, 1 ); /*Q30 */ + } + ELSE + { + /*scale_step = (float) exp(1.0f / (float) (j - length/2) * (float) log(scale / prev_scale)); */ + /* Computing log2(scale) */ + IF( EQ_16( j, length_half ) ) + { + scale_step = 32767; + move16(); /*Q14 */ + } + ELSE + { + e_tmp = norm_l( scale ); + f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); + e_tmp = sub( -e_tmp, 1 ); + L_tmp = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ + + /* Computing log2(prev_scale) */ + e_tmp = norm_l( prev_scale ); + f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); + e_tmp = negate( e_tmp ); + L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ + + /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ + L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ + + /* Computing 1/(j - length/2) */ + + tmp = sub( j, length_half ); + exp = norm_s( tmp ); + + + tmp = div_s( shl( 1, sub( 14, exp ) ), tmp ); /* Q(29-exp) */ + + /* (log2(scale / prev_scale))/length */ + L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ + + frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ + + tmp = extract_l( Pow2( 14, frac ) ); + scale_step = shl_o( tmp, exp, &Overflow ); /*Q14 */ + } + } + + prev_scale = non_linearity_scaled_copy_ivas( input + length_half, sub( j, length_half ), sub( length, length_half ), output + length_half, prev_scale, scale_step, en_abs ); + + *pPrevScale = prev_scale; + move32(); + + /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ + + return; +} + + +/*-------------------------------------------------------------------* + * create_random_vector() + * + * creates random number vector + * Note: the abs(max_val) value coming out of create_random_vector should + * fit into the precision of Q6. + * -------------------------------------------------------------------*/ + +void create_random_vector_fx( + Word16 output[], /* o : output random vector Q5*/ + const Word16 length, /* i : length of random vector */ + Word16 seed[] /* i/o: start seed */ +) +{ + Word16 i, j, k; + Word16 scale1, scale2; + Word32 L_tmp; + + L_tmp = L_abs( Mult_32_16( 2144047674, Random( &seed[0] ) ) ); /*Q23 */ + j = extract_l( L_shr( L_tmp, 23 ) ); + j = s_and( j, 0xff ); + + L_tmp = L_abs( Mult_32_16( 2144047674, Random( &seed[1] ) ) ); /*Q23 */ + k = extract_l( L_shr( L_tmp, 23 ) ); + k = s_and( k, 0xff ); + + WHILE( EQ_16( k, j ) ) + { + L_tmp = L_abs( Mult_32_16( 2144047674, Random( &seed[1] ) ) ); /*Q23 */ + k = extract_l( L_shr( L_tmp, 23 ) ); + k = s_and( k, 0xff ); + } + + scale1 = 18021; + move16(); /* 200.00f * 0.35f/0.1243f; */ + if ( Random( &seed[0] ) < 0 ) + { + scale1 = -18021; + move16(); /*Q5 */ /* -200.00f * 0.35f/0.1243f; */ + } + + scale2 = 7208; + move16(); /* 80.00f * 0.35f/0.1243f; */ + if ( Random( &seed[1] ) < 0 ) + { + scale2 = -7208; + move16(); /*Q5 */ /* -80.00f * 0.35f/0.1243f; */ + } + + FOR( i = 0; i < length; i++ ) + { + j = s_and( j, 0xff ); + k = s_and( k, 0xff ); + output[i] = round_fx( L_add( L_mult( scale1, gaus_dico_swb_fx[j] ), L_mult( scale2, gaus_dico_swb_fx[k] ) ) ); /*Q5 */ + move16(); + j++; + k++; + } + + return; +} + + +/*======================================================================================*/ +/* FUNCTION : interp_code_5over2_fx() */ +/*--------------------------------------------------------------------------------------*/ +/* PURPOSE : Used to interpolate the excitation from the core sample rate */ +/* of 12.8 kHz to 32 kHz. */ +/* Simple linear interpolator - No need FOR precision here. */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* _ (Word16[]) inp_code_fx : input vector (Q12) */ +/* _ (Word16) inp_length : length of input vector */ +/*--------------------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _ (Word16[]) interp_code_fx : output vector (Q12) */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _ None */ +/*--------------------------------------------------------------------------------------*/ + +/* _ None */ +/*--------------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*======================================================================================*/ + +void interp_code_5over2_fx( + const Word16 inp_code_fx[], /* i : input vector Qx*/ + Word16 interp_code_fx[], /* o : output vector Qx*/ + const Word16 inp_length /* i : length of input vector */ +) +{ + Word16 i, kk, kkp1, i_len2; + Word32 Ltemp; + Word16 factor_i_fx[5] = { 6554, 19661, 32767, 19661, 6554 }; + move16(); + move16(); + move16(); + move16(); + move16(); + move16(); + Word16 factor_j_fx[5] = { 26214, 13107, 0, 13107, 26214 }; + move16(); + move16(); + move16(); + move16(); + move16(); + interp_code_fx[0] = inp_code_fx[0]; + move16(); /* Qx */ + + Ltemp = L_mult( inp_code_fx[0], factor_i_fx[3] ); /* Q(16+x) */ + Ltemp = L_mac( Ltemp, inp_code_fx[1], factor_j_fx[3] ); /* Q(16+x) */ + interp_code_fx[1] = round_fx( Ltemp ); /*Qx */ + move16(); + Ltemp = L_mult( inp_code_fx[0], factor_i_fx[4] ); /*Q(16+x) */ + Ltemp = L_mac( Ltemp, inp_code_fx[1], factor_j_fx[4] ); /*Q(16+x) */ + interp_code_fx[2] = round_fx( Ltemp ); /* Qx */ + move16(); + kk = 1; + move16(); + kkp1 = 2; + move16(); + i = 3; + move16(); + /*i_len2 = ( inp_length - 2 ) * HIBND_ACB_L_FAC; */ /*HIBND_ACB_L_FAC == 5/2 */ + i_len2 = sub( inp_length, 2 ); + i_len2 = shr( add( shl( i_len2, 2 ), i_len2 ), 1 ); /* rounding below during shr makes it non BE*/ + + FOR( ; i < i_len2; i += 5 ) + { + Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[0] ); /*Q(16+x) */ + Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_i_fx[0] ); /*Q(16+x) */ + interp_code_fx[i] = round_fx( Ltemp ); /*Qx */ + move16(); + Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[1] ); /*Q(16+x) */ + Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_i_fx[1] ); /*Q(16+x) */ + interp_code_fx[i + 1] = round_fx( Ltemp ); /*Qx */ + move16(); + Ltemp = L_mult( inp_code_fx[kkp1], factor_i_fx[2] ); /*Q(16+x) */ + interp_code_fx[i + 2] = round_fx( Ltemp ); /*Qx */ + move16(); + kk++; + kkp1++; + + Ltemp = L_mult( inp_code_fx[kk], factor_i_fx[3] ); /*Q(16+x) */ + Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_j_fx[3] ); /*Q(16+x) */ + interp_code_fx[i + 3] = round_fx( Ltemp ); /*Qx */ + move16(); + Ltemp = L_mult( inp_code_fx[kk], factor_i_fx[4] ); /*Q(16+x) */ + Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_j_fx[4] ); /*Q(16+x) */ + interp_code_fx[i + 4] = round_fx( Ltemp ); /*Qx */ + move16(); + kk++; + kkp1++; + } + + Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[0] ); /*Q(16+x) */ + interp_code_fx[i] = round_fx( Ltemp ); /*Qx */ + move16(); + Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[1] ); /*Q(16+x) */ + interp_code_fx[i + 1] = round_fx( Ltemp ); /*Qx */ + move16(); + return; +} + + +/*======================================================================================*/ +/* FUNCTION : interp_code_4over2_fx() */ +/*--------------------------------------------------------------------------------------*/ +/* PURPOSE : Used to interpolate the excitation from the core sample rate */ +/* of 16 kHz to 32 kHz. */ +/* Simple linear interpolator - No need for precision here. */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* _ (Word16[]) inp_code_fx : input vector (Qx) */ +/* _ (Word16) inp_length : length of input vector */ +/*--------------------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _ (Word16[]) interp_code_fx : output vector (Qx) */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _ None */ +/*--------------------------------------------------------------------------------------*/ + +/* _ None */ +/*--------------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*======================================================================================*/ + +void interp_code_4over2_fx( + const Word16 inp_code_fx[], /* i : input vector Qx*/ + Word16 interp_code_fx[], /* o : output vector Qx*/ + const Word16 inp_length /* i : length of input vector */ +) +{ + Word16 i, j; + j = 0; + move16(); + FOR( i = 0; i < inp_length - 1; i++ ) + { + interp_code_fx[j] = inp_code_fx[i]; + move16(); /*Qx */ + interp_code_fx[j + 1] = add( shr( inp_code_fx[i], 1 ), shr( inp_code_fx[i + 1], 1 ) ); + move16(); + move16(); /*Qx */ + j = add( j, 2 ); + } + + interp_code_fx[j] = inp_code_fx[i]; + move16(); + interp_code_fx[j + 1] = shr( inp_code_fx[i], 1 ); + move16(); /*Qx */ + + return; +} + + +/*-------------------------------------------------------------------* + * wb_tbe_extras_reset_synth() + * + * Reset the extra parameters only required for WB TBE synthesis + *-------------------------------------------------------------------*/ + +void wb_tbe_extras_reset_synth_fx( + Word16 state_lsyn_filt_shb[], + Word16 state_lsyn_filt_dwn_shb[], + Word16 state_32and48k_WB_upsample[], + Word16 state_resamp_HB[] ) +{ + set16_fx( state_lsyn_filt_shb, 0, 2 * ALLPASSSECTIONS_STEEP ); + set16_fx( state_lsyn_filt_dwn_shb, 0, 2 * ALLPASSSECTIONS_STEEP ); + set16_fx( state_32and48k_WB_upsample, 0, 2 * ALLPASSSECTIONS_STEEP ); + set16_fx( state_resamp_HB, 0, INTERP_3_1_MEM_LEN ); + + return; +} +#if defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 ) && defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 ) +static inline Word64 wmac_1616( Word64 x1, Word16 x2, Word16 x3 ) +{ + return W_mac_16_16( x1, x2, x3 ); +} + +static inline Word64 wmac_3216( Word64 x1, Word32 x2, Word16 x3 ) +{ + return W_mac_32_16( x1, x2, x3 ); +} + +static inline Word64 finalSat16( Word64 W_tmpx, Word64 W_tmpy ) +{ + return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +} + +static inline Word64 finalSat32( Word64 W_tmpx, Word64 W_tmpy ) +{ + return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); +} + +inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *input32_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) +{ + Word32 L_tmpX; + Word16 i; + Word32 L_tmpMax2 = *L_tmpMax; + Word32 L_tmpAbs; + move32(); + + if ( input16_fx > 0 ) + { + Word64 ( *wmac )( Word64, Word16, Word16 ); + Word64 ( *finalSat )( Word64, Word64 ); + Word16 *input_fx = input16_fx; + wmac = wmac_1616; + finalSat = finalSat16; + } + if ( input32_fx > 0 ) + { + Word64 ( *wmac )( Word64, Word32, Word16 ); + Word64 ( *finalSat )( Word64, Word64 ); + Word32 *input_fx = input32_fx; + wmac = wmac_3216; + finalSat = finalSat32; + } + + IF( !IsUpsampled3 ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + } + } /*IsUpsampled3*/ + ELSE + { /*IsUpsampled3*/ + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = wmac( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = wmac( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ + move32(); + if ( *L_tmpMax > 0 ) + { + L_tmpAbs = L_abs( L_tmp[i] ); + } + if ( *L_tmpMax > 0 ) + { + L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); + } + i++; + } + } /*IsUpsampled3*/ + *L_tmpMax = L_tmpMax2; + move32(); +} +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + +/*-------------------------------------------------------------------* + * elliptic_bpf_48k_generic() + * + * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz + * Implemented as 3 fourth order sections cascaded. + *-------------------------------------------------------------------*/ + +void elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + int isIVAS, +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 IsUpsampled3, + Word16 input_fx[], /* i : input signal Q_input_fx*/ +#else + const Word16 input_fx[], /* i : input signal Q_input_fx*/ +#endif + Word16 *Q_input_fx, + Word16 output_fx[], /* o : output signal memory_fx_Q */ + Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ + Word16 memory_fx_Q[], + const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ +) +{ + Word16 i, j; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 memory_fx0, Q_temp, Q_temp2; + Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; + Word32 L_tmpMax; + Word32 L_tmpX; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + Word64 W_tmpX; + Word64 W_tmpY; +#endif + + Word32 *L_tmp = &L_tmp_buffer[4]; + Word32 *L_tmp2 = &L_tmp2_buffer[4]; + Word32 *L_output = &L_output_buffer[4]; +#else + Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; + Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; + Word32 memory2_fx_2[4], memory2_fx_3[4]; +#endif + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + FOR( i = 0; i < 4; i++ ) + { + memory_fx0 = extract_l( memory_fx2[0][i] ); + input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); + L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + move32(); + move32(); + } + +#else + FOR( i = 0; i < 4; i++ ) + { + memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); + memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); + memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + move32(); + move32(); + } +#endif + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( input_fx, 0, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + IF( !IsUpsampled3 ) + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + } + } + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } + } + } /*IsUpsampled3*/ + ELSE + { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } + } + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } + } + } /*IsUpsampled3*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ + +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + + memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; + memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; + memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; + memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; + move32(); + move32(); + move32(); + move32(); + move32(); + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 + elliptic_bpf_48k_generic_func1( 0, L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } + } + ELSE +#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } + } + +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ + move32(); + L_tmpMax = L_abs( L_tmp2[0] ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); + L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } +#endif + + + Q_temp = norm_l( L_tmpMax ); + Q_temp = sub( Q_temp, 4 ); + Scale_sig32( L_tmp2, 960, Q_temp ); + + memory_fx2[1][0] = L_tmp[L_FRAME48k - 4]; + memory_fx2[1][1] = L_tmp[L_FRAME48k - 3]; + memory_fx2[1][2] = L_tmp[L_FRAME48k - 2]; + memory_fx2[1][3] = L_tmp[L_FRAME48k - 1]; + move32(); + move32(); + move32(); + move32(); + move32(); + +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + FOR( j = 0; j < 4; j++ ) + { + L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + } + + L_tmpMax = L_add( 0, 0 ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ + elliptic_bpf_48k_generic_func1( 0, L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } + } + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } + } + +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ + FOR( j = 0; j < 4; j++ ) + { + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + } + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ + move32(); + L_tmpMax = L_abs( L_output[0] ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ + L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); + + L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); + + FOR( i = 4; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } + +#endif + + + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; + memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; + memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; + memory_fx2[2][3] = L_tmp2[L_FRAME48k - 1]; + memory_fx2[3][0] = L_output[L_FRAME48k - 4]; + memory_fx2[3][1] = L_output[L_FRAME48k - 3]; + memory_fx2[3][2] = L_output[L_FRAME48k - 2]; + memory_fx2[3][3] = L_output[L_FRAME48k - 1]; + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + memory_fx_Q[0] = *Q_input_fx; + memory_fx_Q[1] = add( *Q_input_fx, 11 ); + memory_fx_Q[2] = add( add( *Q_input_fx, 6 ), Q_temp ); + memory_fx_Q[3] = add( add( *Q_input_fx, 1 ), Q_temp ); + move16(); + move16(); + move16(); + move16(); + Q_temp2 = norm_l( L_tmpMax ); + Scale_sig32( L_output, 960, Q_temp2 ); + FOR( i = 0; i < 960; i++ ) + { + output_fx[i] = extract_h( L_output[i] ); + move16(); + } + *Q_input_fx = sub( add( add( *Q_input_fx, Q_temp ), Q_temp2 ), 15 ); + move16(); /* BASOP_NOGLOB */ + + return; +} +/*-------------------------------------------------------------------* + * synthesise_fb_high_band() + * + * Creates the highband output for full band - 14.0 to 20 kHz + * Using the energy shaped white excitation signal from the SWB BWE. + * The excitation signal input is sampled at 16kHz and so is upsampled + * to 48 kHz first. + * Uses a complementary split filter to code the two regions from + * 14kHz to 16kHz and 16 kHz to 20 kHz. + * One of 16 tilt filters is also applied afterwards to further + * refine the spectral shape of the fullband signal. + * The tilt is specified in dB per kHz. N.B. Only negative values are + * accomodated. + *-------------------------------------------------------------------*/ + +void synthesise_fb_high_band_fx( + const Word16 excitation_in[], /* i : full band excitation */ + Word16 Q_fb_exc, + Word16 output[], /* o : high band speech - 14.0 to 20 kHz */ + const Word32 fb_exc_energy, /* i : full band excitation energy */ + const Word16 ratio, /* i : energy ratio */ + const Word16 L_frame, /* i : ACELP frame length */ + const Word16 bfi, /* i : fec flag */ + Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ + Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ + Word16 bpf_memory_Q[], + Word16 Qout +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + , + Word16 isIVAS +#endif +) +{ + Word16 i, j; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 excitation_in_interp3_buffer[L_FRAME48k + 4]; + Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4; +#else + Word16 excitation_in_interp3[L_FRAME48k]; +#endif + Word16 tmp[L_FRAME48k]; + Word32 temp1; + Word32 ratio2; + Word32 L_tmp; + Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; + + /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ + j = 0; + /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ + FOR( i = 0; i < L_FRAME48k; i += 3 ) + { + excitation_in_interp3[i] = mult( excitation_in[j], 24576 ); /* Q(Q_fb_exc+13-15 = Q_fb_exc-2) */ + move16(); + excitation_in_interp3[i + 1] = 0; + move16(); + excitation_in_interp3[i + 2] = 0; + move16(); + j++; + } + exp_tmp = sub( Q_fb_exc, 2 ); + + IF( EQ_16( L_frame, L_FRAME16k ) ) + { + /* for 16kHz ACELP core */ + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + isIVAS, +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx + + ); + } + ELSE + { + /* for 12.8kHz ACELP core */ + elliptic_bpf_48k_generic_fx( +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 + isIVAS, +#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + 1, // IsUpsampled3 +#endif + excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); + } + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ + + push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); + temp1 = sum2_fx_mod( tmp, L_FRAME48k ); + L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ + exp = norm_l( L_tmp ); + tmp3 = extract_h( L_shl( L_tmp, exp ) ); + tmp1 = sub( add( Q_fb_exc, Q_fb_exc ), 8 ); /* 1-9*/ + exp = sub( sub( 31, tmp1 ), exp ); + + exp2 = norm_l( temp1 ); + tmp2 = extract_h( L_shl( temp1, exp2 ) ); + exp2 = sub( sub( 31, sub( shl( exp_tmp, 1 ), 8 ) ), exp2 ); /* in Q15 (temp1 in Q9)*/ + + exp = sub( exp2, exp ); /* Denormalize and substract */ + IF( GT_16( tmp2, tmp3 ) ) + { + tmp2 = shr( tmp2, 1 ); + exp = add( exp, 1 ); + } + IF( 0 != tmp3 ) + { + tmp3 = div_s( tmp2, tmp3 ); + L_tmp = L_deposit_h( tmp3 ); + L_tmp = Isqrt_lc( L_tmp, &exp ); /*Q(31-exp)*/ + ratio2 = Mult_32_16( L_tmp, ratio ); /*Q(31-exp+0-15 = 16-exp)*/ + } + ELSE + { + ratio2 = 0; + } + + IF( !bfi ) + { + *prev_fbbwe_ratio = ratio; + move16(); + } + ELSE + { + /**prev_fbbwe_ratio = ratio*0.5f;*/ + *prev_fbbwe_ratio = shr( ratio, 1 ); + move16(); + } + tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ + IF( L_tmp < 0 ) + { + output[i] = negate( extract_h( L_shl_sat( L_negate( L_tmp ), tmp3 ) ) ); /*Qout*/ + move16(); + } + ELSE + { + output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ + move16(); + } + } + pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ + return; +} + +/*-------------------------------------------------------------------* + * Estimate_mix_factors_fx() * + * * + * Estimate mix factors for SHB excitation generation * + *-------------------------------------------------------------------*/ +void Estimate_mix_factors_fx( + const Word16 *shb_res, /* i : SHB LP residual in Q = Q_shb */ + const Word16 Q_shb, + const Word16 *exc16kWhtnd, /* i : SHB transformed low band excitation Q_bwe_exc */ + const Word16 Q_bwe_exc, + const Word16 *White_exc16k_frac, /* i : Modulated envelope shaped white noise Q_frac */ + const Word16 Q_frac, + const Word32 pow1, /* i : SHB exc. power for normalization in Q_pow1 */ + const Word16 Q_pow1, + const Word32 pow22, /* i : White noise excitation for normalization in Q_pow22 */ + const Word16 Q_pow22, + Word16 *vf_modified, /* o : Estimated voice factors */ + Word16 *vf_ind /* o : voice factors VQ index */ +) +{ + Word16 shb_res_local[L_FRAME16k], WN_exc_local[L_FRAME16k]; + Word32 pow3, temp_p1_p2, temp_p1_p3; + Word16 temp_numer1[L_FRAME16k], temp_numer2[L_FRAME16k]; + Word16 i, length; + Word16 exp1, exp2, expa, expb, fraca, fracb, scale, num_flag, den_flag; + Word16 tmp, tmp1, sc1, sc2; + Word32 L_tmp1, L_tmp2; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + Copy( shb_res, shb_res_local, L_FRAME16k ); + Copy( White_exc16k_frac, WN_exc_local, L_FRAME16k ); + /* WN_exc_local in (Q_frac) */ + + pow3 = Dot_product( shb_res_local, shb_res_local, L_FRAME16k ); /* (2*Q_shb+1) */ + + pow3 = L_add( pow3, L_shl( 21475l /*0.00001f in Q31*/, 2 * Q_shb + 1 - 31 ) ); /* (2*Q_shb+1) */ + if ( pow3 == 0 ) + { + pow3 = 1; + move32(); + } + + /* temp_p1_p2 = (float)sqrt(pow1/pow2); */ + temp_p1_p2 = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp1 ); /* temp_p1_p3 in (Q31+exp1) */ + + /* temp_p1_p3 = (float)sqrt(pow1/pow3); */ + temp_p1_p3 = root_a_over_b_fx( pow1, Q_pow1, pow3, ( 2 * Q_shb + 1 ), &exp2 ); /* temp_p1_p3 in (Q31+exp2) */ + + + sc1 = sub( Q_bwe_exc, sub( Q_frac, exp1 ) ); + sc2 = sub( Q_bwe_exc, sub( Q_shb, exp2 ) ); + FOR( i = 0; i < L_FRAME16k; i++ ) + { + L_tmp1 = Mult_32_16( temp_p1_p2, WN_exc_local[i] ); /* (Q_frac - exp1) +16 */ + WN_exc_local[i] = round_fx( L_tmp1 ); + move16(); + L_tmp2 = Mult_32_16( temp_p1_p3, shb_res_local[i] ); /* (Q_shb - exp2) +16 */ + shb_res_local[i] = round_fx( L_tmp2 ); + move16(); + /* temp_numer1[i] = sub(shb_res_local[i], WN_exc_local[i]); */ + temp_numer1[i] = round_fx_sat( L_sub_sat( L_shl_sat( L_tmp2, sc2 ), L_shl_sat( L_tmp1, sc1 ) ) ); + move16(); + /* (Q_bwe_exc) */ + + /* temp_numer2[i] = sub(exc16kWhtnd[i], WN_exc_local[i]); */ + temp_numer2[i] = sub_sat( exc16kWhtnd[i], round_fx_sat( L_shl_sat( L_tmp1, sc1 ) ) ); + move16(); + /* (Q_bwe_exc) */ + } + + + length = L_FRAME16k; + move16(); + temp_p1_p2 = Dot_product( temp_numer1, temp_numer2, length ); /* 2*(Q_bwe_exc)+1 */ + temp_p1_p3 = Dot_product( temp_numer2, temp_numer2, length ); /* 2*(Q_bwe_exc)+1 */ + + /* vf_modified[i] = min( max_val( (temp_p1_p2 / temp_p1_p3), 0.1f), 0.99f); */ + /* tmp = (temp_p1_p2 / temp_p1_p3); */ + IF( temp_p1_p3 > 0 ) + { + expa = norm_l( temp_p1_p3 ); + fraca = extract_h( L_shl( temp_p1_p3, expa ) ); + expa = sub( 30, expa ); + + expb = norm_l( temp_p1_p2 ); + fracb = round_fx_o( L_shl_o( temp_p1_p2, expb, &Overflow ), &Overflow ); + expb = sub( 30, expb ); + + num_flag = 0; + move16(); + IF( fraca < 0 ) + { + num_flag = 1; + move16(); + fraca = negate( fraca ); + } + + den_flag = 0; + move16(); + IF( fracb < 0 ) + { + den_flag = 1; + move16(); + fracb = negate( fracb ); + } + + scale = shr( sub( fraca, fracb ), 15 ); + fracb = shl( fracb, scale ); + expb = sub( expb, scale ); + + tmp = div_s( fracb, fraca ); + exp1 = sub( expb, expa ); + tmp = shl_sat( tmp, exp1 ); + if ( NE_16( num_flag, den_flag ) ) + { + tmp = negate( tmp ); + } + } + ELSE + { + tmp = 0; + move16(); + } + + vf_modified[0] = s_min( s_max( tmp, 3277 /* 0.1f in Q15*/ ), 32440 /* 0.99f in Q15 */ ); + move16(); + + *vf_ind = usquant_fx( vf_modified[0], &tmp1, 4096 /* 0.125 in Q15 */, 2048 /* 0.125 in Q14 */, shl( 1, NUM_BITS_SHB_VF ) ); + move16(); + + vf_modified[0] = tmp1; + move16(); + vf_modified[1] = tmp1; + move16(); + vf_modified[2] = tmp1; + move16(); + vf_modified[3] = tmp1; + move16(); + vf_modified[4] = tmp1; + move16(); + + /* vf_modified in Q15 */ + + return; +} +#ifdef ADD_IVAS_TBE_CODE +/*-------------------------------------------------------------------* + * tbe_celp_exc() * + * * + * Prepare adaptive part of TBE excitation * + *-------------------------------------------------------------------*/ + +void tbe_celp_exc( + const int16_t element_mode, /* i : element mode */ + const int16_t idchan, /* i : channel ID */ + float *bwe_exc, /* i/o: BWE excitation */ + const int16_t L_frame, /* i : frame length */ + const int16_t L_subfr, /* i : subframe length */ + const int16_t i_subfr, /* i : subframe index */ + const int16_t T0, /* i : integer pitch lag */ + const int16_t T0_frac, /* i : fraction of lag */ + float *error, /* i/o: error */ + const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ +) +{ + int16_t i, offset; + + if ( element_mode == IVAS_CPE_TD && idchan == 1 && !tdm_LRTD_flag ) + { + return; + } + + if ( L_frame == L_FRAME ) + { + offset = tbe_celp_exc_offset( T0, T0_frac ); + + for ( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) + { + bwe_exc[i + i_subfr * HIBND_ACB_L_FAC] = bwe_exc[i + i_subfr * HIBND_ACB_L_FAC - offset + (int16_t) *error]; + } + *error += (float) offset - (float) T0 * HIBND_ACB_L_FAC - 0.25f * HIBND_ACB_L_FAC * (float) T0_frac; + } + else + { + offset = T0 * 2 + (int16_t) ( (float) T0_frac * 0.5f + 4 + 0.5f ) - 4; + for ( i = 0; i < L_subfr * 2; i++ ) + { + bwe_exc[i + i_subfr * 2] = bwe_exc[i + i_subfr * 2 - offset + (int16_t) *error]; + } + *error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac; + } + + return; +} +#endif +/*======================================================================================*/ +/* FUNCTION : prep_tbe_exc_fx() */ +/*--------------------------------------------------------------------------------------*/ +/* PURPOSE : Prepare TBE excitation */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* _ (Word16) L_frame_fx : length of the frame */ +/* _ (Word16) i_subfr_fx : subframe index */ +/* _ (Word16) gain_pit_fx : Pitch gain (14) */ +/* _ (Word32) gain_code_fx : algebraic codebook gain (Q(16+Q_exc)) */ +/* _ (Word16*[]) code_fx : algebraic excitation (Q9) */ +/* _ (Word16) voice_fac_fx : voicing factor (Q15) */ +/* _ (Word16) gain_preQ_fx : prequantizer excitation gain */ +/* _ (Word16[]) code_preQ_fx : prequantizer excitation */ +/*--------------------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _ (Word16*[]) voice_factors_fx : TBE voicing factor (Q15) */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _ (Word16[]) bwe_exc_fx : excitation for TBE (Q_exc) */ +/*--------------------------------------------------------------------------------------*/ + +/* _ None */ +/*--------------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*======================================================================================*/ + +void prep_tbe_exc_fx( + const Word16 L_frame_fx, /* i : length of the frame */ +#ifdef ADD_IVAS_TBE_CODE + const Word16 L_subfr, +#endif + const Word16 i_subfr_fx, /* i : subframe index */ + const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ + const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ + const Word16 code_fx[], /* i : algebraic excitation Q9*/ + const Word16 voice_fac_fx, /* i : voicing factor Q15*/ + Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ + Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ + const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ + const Word16 code_preQ_fx[], /* i : prequantizer excitation */ + const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ + Word16 T0, /* i : integer pitch variables Q0 */ + Word16 T0_frac, /* i : Fractional pitch variables Q0*/ + const Word16 coder_type, /* i : coding type */ + Word32 core_brate +#ifdef ADD_IVAS_TBE_CODE + , /* i : core bitrate */ + const int16_t element_mode, /* i : element mode */ + const int16_t idchan, /* i : channel ID */ + const int16_t flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ + const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ +#endif +) +{ + Word16 i; + Word16 tmp_code_fx[2 * L_SUBFR * HIBND_ACB_L_FAC]; + Word16 tmp_code_preInt_fx[L_SUBFR]; + Word16 gain_code16 = 0; + move16(); + Word16 tmp /*, tmp1, tmp2*/; + /*Word16 random_code[L_SUBFR * HIBND_ACB_L_FAC];*/ + Word16 pitch; + + Word32 L_tmp, Ltemp1, Ltemp2; + Word32 tempQ31; + Word16 tempQ15; +#ifndef ADD_IVAS_TBE_CODE + Word16 L_subfr = L_SUBFR; + move16(); +#endif +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + /**voice_factors = VF_0th_PARAM + VF_1st_PARAM * voice_fac + VF_2nd_PARAM * voice_fac * voice_fac; + = VF_0th_PARAM + voice_fac * (VF_1st_PARAM + VF_2nd_PARAM * voice_fac ) + *voice_factors = min( max_val(0.0f, *voice_factors), 1.0f); */ + tempQ31 = L_deposit_h( VF_1st_PARAM_FX ); + tempQ15 = mac_r( tempQ31, VF_2nd_PARAM_FX, voice_fac_fx ); + tempQ31 = L_deposit_h( VF_0th_PARAM_FX ); + *voice_factors_fx = mac_r( tempQ31, voice_fac_fx, tempQ15 ); + move16(); + tmp = MAX_16; + move16(); + + pitch = shl_o( add( shl_o( T0, 2, &Overflow ), T0_frac ), 5, &Overflow ); /* Q7 */ + + test(); + test(); + IF( ( ( EQ_16( coder_type, VOICED ) ) || ( GT_16( pitch, 14784 /* 115.5 in Q7 */ ) ) ) && ( GT_32( core_brate, ACELP_8k00 ) ) ) + { + tmp = MAX_16; + move16(); + *voice_factors_fx = mult_r( *voice_factors_fx, tmp ); + move16(); + } + + *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); + move16(); +#ifdef ADD_IVAS_TBE_CODE + IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) + { + IF( flag_TD_BWE && i_subfr == 0 ) + { + set16_fx( bwe_exc, 0, L_FRAME32k ); + } + return; + } + +#endif + IF( EQ_16( L_frame_fx, L_FRAME ) ) + { + interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ + gain_code16 = round_fx_o( L_shl_o( gain_code_fx, Q_exc, &Overflow ), &Overflow ); /*Q_exc */ + FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) + { + L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/ + L_tmp = L_shl_sat( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/ + L_tmp = L_mac_sat( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] ); /*Q15+Q_exc */ + L_tmp = L_shl_o( L_tmp, 1, &Overflow ); /*16+Q_exc */ /* saturation can occur here */ + bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_o( L_tmp, &Overflow ); /*Q_exc */ + move16(); + } + } + ELSE + { + IF( gain_preQ_fx != 0 ) + { + FOR( i = 0; i < L_subfr; i++ ) + { + /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ + Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ + Ltemp2 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /*Q2 * Q10 -> Q12 */ + + Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ + Ltemp2 = L_shl_o( Ltemp2, add( Q_exc, 4 ) /*Q_exc+16-13*/, &Overflow ); /*Q_exc+16 */ + + tmp_code_preInt_fx[i] = round_fx_o( L_add_o( Ltemp1, Ltemp2, &Overflow ), &Overflow ); /* Q_exc */ + move16(); + } + } + ELSE + { + FOR( i = 0; i < L_subfr; i++ ) + { + /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ + Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ + Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ + tmp_code_preInt_fx[i] = round_fx_o( Ltemp1, &Overflow ); /* Q_exc */ + move16(); + } + } + + interp_code_4over2_fx( tmp_code_preInt_fx, tmp_code_fx, L_subfr ); /* o: tmp_code in Q_exc */ + FOR( i = 0; i < L_subfr * 2; i++ ) + { + L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * 2] ); /*Q14+Q_exc+1 */ + tmp = round_fx_o( L_shl_o( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/, &Overflow ), &Overflow ); /* tmp in Q_exc */ + bwe_exc_fx[i + i_subfr_fx * 2] = add_o( tmp, tmp_code_fx[i], &Overflow ); /*Q_exc */ + move16(); + } + } + + return; +} + +/*======================================================================================*/ +/* FUNCTION : prep_tbe_exc_ivas_fx() */ +/*--------------------------------------------------------------------------------------*/ +/* PURPOSE : Prepare TBE excitation */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* _ (Word16) L_frame_fx : length of the frame */ +/* _ (Word16) i_subfr_fx : subframe index */ +/* _ (Word16) gain_pit_fx : Pitch gain (14) */ +/* _ (Word32) gain_code_fx : algebraic codebook gain (Q(16+Q_exc)) */ +/* _ (Word16*[]) code_fx : algebraic excitation (Q9) */ +/* _ (Word16) voice_fac_fx : voicing factor (Q15) */ +/* _ (Word16) gain_preQ_fx : prequantizer excitation gain */ +/* _ (Word16[]) code_preQ_fx : prequantizer excitation */ +/*--------------------------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _ (Word16*[]) voice_factors_fx : TBE voicing factor (Q15) */ +/*--------------------------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _ (Word16[]) bwe_exc_fx : excitation for TBE (Q_exc) */ +/*--------------------------------------------------------------------------------------*/ + +/* _ None */ +/*--------------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*======================================================================================*/ + +void prep_tbe_exc_ivas_fx( + const Word16 L_frame_fx, /* i : length of the frame */ +#if 1 // def ADD_IVAS_TBE_CODE + const Word16 L_subfr, +#endif + const Word16 i_subfr_fx, /* i : subframe index */ + const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ + const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ + const Word16 code_fx[], /* i : algebraic excitation Q9*/ + const Word16 voice_fac_fx, /* i : voicing factor Q15*/ + Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ + Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ + const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ + const Word16 code_preQ_fx[], /* i : prequantizer excitation */ + const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ + Word16 T0, /* i : integer pitch variables Q0 */ + Word16 T0_frac, /* i : Fractional pitch variables Q0*/ + const Word16 coder_type, /* i : coding type */ + Word32 core_brate +#if 1 // def ADD_IVAS_TBE_CODE + , /* i : core bitrate */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ + const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ +#endif +) +{ + Word16 i; + Word16 tmp_code_fx[2 * L_SUBFR * HIBND_ACB_L_FAC]; + Word16 tmp_code_preInt_fx[L_SUBFR]; + Word16 gain_code16 = 0; + move16(); + Word16 tmp /*, tmp1, tmp2*/; + /*Word16 random_code[L_SUBFR * HIBND_ACB_L_FAC];*/ + Word16 pitch; + + Word32 L_tmp, Ltemp1, Ltemp2; + Word32 tempQ31; + Word16 tempQ15; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + /**voice_factors = VF_0th_PARAM + VF_1st_PARAM * voice_fac + VF_2nd_PARAM * voice_fac * voice_fac; + = VF_0th_PARAM + voice_fac * (VF_1st_PARAM + VF_2nd_PARAM * voice_fac ) + *voice_factors = min( max_val(0.0f, *voice_factors), 1.0f); */ + tempQ31 = L_deposit_h( VF_1st_PARAM_FX ); + tempQ15 = mac_r( tempQ31, VF_2nd_PARAM_FX, voice_fac_fx ); + tempQ31 = L_deposit_h( VF_0th_PARAM_FX ); + *voice_factors_fx = mac_r( tempQ31, voice_fac_fx, tempQ15 ); + move16(); + + tmp = MAX_16; + move16(); + + pitch = shl_o( add( shl_o( T0, 2, &Overflow ), T0_frac ), 5, &Overflow ); /* Q7 */ + + test(); + test(); + IF( ( ( EQ_16( coder_type, VOICED ) ) || ( GT_16( pitch, 14784 ) ) ) && ( GT_32( core_brate, ACELP_8k00 ) ) ) + { + tmp = MAX_16; + move16(); + *voice_factors_fx = mult_r( *voice_factors_fx, tmp ); + move16(); + } + + *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); + move16(); +#if 1 // def ADD_IVAS_TBE_CODE + test(); + test(); + IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) + { + test(); + IF( flag_TD_BWE && i_subfr_fx == 0 ) + { + set16_fx( bwe_exc_fx, 0, L_FRAME32k ); + } + return; + } + +#endif + IF( EQ_16( L_frame_fx, L_FRAME ) ) + { + interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ + gain_code16 = round_fx_o( L_shl_o( gain_code_fx, Q_exc, &Overflow ), &Overflow ); /*Q_exc */ + FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) + { + L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/ + L_tmp = L_shl( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/ + L_tmp = L_mac_o( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC], &Overflow ); /*Q15+Q_exc */ + L_tmp = L_shl_o( L_tmp, 1, &Overflow ); /*16+Q_exc */ /* saturation can occur here */ + bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_o( L_tmp, &Overflow ); /*Q_exc */ + move16(); + } + } + ELSE + { + Word16 shift = 4; + move16(); + IF( gain_preQ_fx != 0 ) + { + FOR( i = 0; i < L_subfr; i++ ) + { + /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ + Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ + Ltemp2 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /*Q2 * Q10 -> Q12 */ + + Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ + Ltemp2 = L_shl_o( Ltemp2, add( Q_exc, shift ) /*Q_exc+ 2 + 6 (or) 10 - 13*/, &Overflow ); /*Q_exc+16 */ + + tmp_code_preInt_fx[i] = round_fx_o( L_add_o( Ltemp1, Ltemp2, &Overflow ), &Overflow ); /* Q_exc */ + move16(); + } + } + ELSE + { + FOR( i = 0; i < L_subfr; i++ ) + { + /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ + Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ + Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ + tmp_code_preInt_fx[i] = round_fx_o( Ltemp1, &Overflow ); /* Q_exc */ + move16(); + } + } + + interp_code_4over2_fx( tmp_code_preInt_fx, tmp_code_fx, L_subfr ); /* o: tmp_code in Q_exc */ + FOR( i = 0; i < shl( L_subfr, 1 ); i++ ) + { + L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + shl( i_subfr_fx, 1 )] ); /*Q14+Q_exc+1 */ + tmp = round_fx_o( L_shl_o( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/, &Overflow ), &Overflow ); /* tmp in Q_exc */ + bwe_exc_fx[i + shl( i_subfr_fx, 1 )] = add_o( tmp, tmp_code_fx[i], &Overflow ); /*Q_exc */ + move16(); + } + } + + return; +} + +/*=============================================================================*/ +/* FUNCTION : void swb_formant_fac_fx ( ) */ +/*------------------------------------------------------------------------------*/ +/* PURPOSE : * Find strength of adaptive formant postfilter using tilt */ +/* of the high band. The 2nd lpc coefficient is used as a tilt approximation. */ +/*------------------------------------------------------------------------------*/ +/* INPUT ARGUMENTS : */ +/* const Word16 lpc_shb2 : 2nd HB LPC coefficient Q12 */ +/*------------------------------------------------------------------------------*/ +/*INPUT/OUTPUT ARGUMENTS : */ +/* Word16 *tilt_mem Q12 */ +/* OUTPUT ARGUMENTS : */ +/*------------------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* formant_fac :Formant filter strength [0,1] Q15 */ +/*------------------------------------------------------------------------------*/ +/* CALLED FROM : */ +/*==============================================================================*/ + +Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */ + const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */ + Word16 *tilt_mem /* i/o: Tilt smoothing memory (Q12) */ +) +{ + Word16 formant_fac; + Word16 tmp; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; +#endif + + /* Smoothen tilt value */ + /* tmp = 0.5f * (float)fabs(lpc_shb2) + 0.5f * *tilt_mem; */ + tmp = mult_r( 16384, abs_s( lpc_shb2 ) ); + tmp = add( tmp, mult_r( 16384, *tilt_mem ) ); /* Q12 */ + *tilt_mem = tmp; + move16(); /*Q12 */ + /* Map to PF strength */ + /* formant_fac = (tmp - SWB_TILT_LOW)*SWB_TILT_DELTA; */ + tmp = sub( tmp, SWB_TILT_LOW_FX ); /* Q12 */ + formant_fac = mult_r( tmp, SWB_TILT_DELTA_FX ); /* Q12 */ + + + IF( GT_16( formant_fac, 4096 /* 1 in Q12 */ ) ) + { + formant_fac = 4096; /* 1 in Q12 */ + move16(); + } + ELSE IF( formant_fac < 0 ) + { + formant_fac = 0; + move16(); + } + /* now formant_fac in Q12 */ + + /* formant_fac = 1.0f - 0.5f*formant_fac */ + tmp = mult_r( 16384, formant_fac ); /* 0.5 in Q15 */ + formant_fac = shl_o( sub( 4096 /* 1 in Q12 */, tmp ), 3, &Overflow ); + return formant_fac; /*Q15 */ +} + + +void wb_tbe_extras_reset_fx( + Word16 mem_genSHBexc_filt_down_wb2[], + Word16 mem_genSHBexc_filt_down_wb3[] ) +{ + set16_fx( mem_genSHBexc_filt_down_wb2, 0, 2 * ALLPASSSECTIONS_STEEP + 1 ); + set16_fx( mem_genSHBexc_filt_down_wb3, 0, 2 * ALLPASSSECTIONS_STEEP + 1 ); + + return; +} + +/*-------------------------------------------------------------------* + * get_tbe_bits() * + * * + * Determine TBE bit consumption per frame from bitrate * + *-------------------------------------------------------------------*/ + + +Word16 get_tbe_bits_fx( + const Word32 total_brate, /* o : TBE bit consumption per frame */ + const Word16 bwidth, /* i : overall bitrate */ + const Word16 rf_mode /* i : bandwidht mode */ +) +{ + Word16 i, bits = 0; + + IF( EQ_16( rf_mode, 1 ) ) + { + /* TBE bits for core, primary frame */ + test(); + test(); + IF( ( EQ_16( bwidth, WB ) ) && ( EQ_32( total_brate, ACELP_13k20 ) ) ) + { + /* Gain frame: 4, Gain shapes: 0, and LSFs: 2 */ + bits = NUM_BITS_SHB_FrameGain_LBR_WB + NUM_BITS_LBR_WB_LSF; + move16(); + } + ELSE IF( ( EQ_16( bwidth, SWB ) ) && ( EQ_32( total_brate, ACELP_13k20 ) ) ) + { + /* Gain frame: 5, Gain shapes: 5, and lowrate LSFs: 8 */ + bits = NUM_BITS_SHB_FRAMEGAIN + NUM_BITS_SHB_SUBGAINS + 8; + move16(); + } + } + ELSE + { + test(); + test(); + IF( ( EQ_16( bwidth, WB ) ) && ( EQ_32( total_brate, ACELP_9k60 ) ) ) + { + bits = NUM_BITS_LBR_WB_LSF + NUM_BITS_SHB_FrameGain_LBR_WB; + move16(); + } + ELSE IF( ( EQ_16( bwidth, SWB ) ) || ( EQ_16( bwidth, FB ) ) ) + { + test(); + IF( EQ_32( total_brate, ACELP_9k60 ) ) + { + bits = NUM_BITS_SHB_FRAMEGAIN + NUM_BITS_SHB_SUBGAINS + 8; + move16(); + } + ELSE IF( ( GE_32( total_brate, ACELP_13k20 ) ) && ( LE_32( total_brate, ACELP_32k ) ) ) + { + bits = NUM_BITS_SHB_SUBGAINS + NUM_BITS_SHB_FRAMEGAIN + NUM_LSF_GRID_BITS + MIRROR_POINT_BITS; + move16(); + + FOR( i = 0; i < NUM_Q_LSF; i++ ) + { + bits = add( bits, lsf_q_num_bits[i] ); + } + } + + if ( GE_32( total_brate, ACELP_24k40 ) ) + { + bits = add( bits, NUM_BITS_SHB_ENER_SF + NUM_BITS_SHB_VF + NUM_BITS_SHB_RES_GS * NB_SUBFR16k ); + } + + test(); + test(); + if ( EQ_16( bwidth, SWB ) && ( EQ_32( total_brate, ACELP_16k40 ) || EQ_32( total_brate, ACELP_24k40 ) ) ) + { + bits = add( bits, BITS_TEC + BITS_TFA ); + } + + if ( EQ_16( bwidth, FB ) ) + { + /* full band slope */ + bits = add( bits, 4 ); + } + } + } + + return bits; +} -- GitLab From e4e0064ef0d988798e8245771382c9311a6caf5e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 10:35:56 +0200 Subject: [PATCH 324/698] clang patch --- lib_com/prot_fx.h | 7 ++++--- lib_com/swb_tbe_com_fx.c | 7 ++++--- lib_dec/swb_tbe_dec_fx.c | 13 ++++++++----- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 018e3ef93..a1e5d0cdb 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3292,10 +3292,11 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout + Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , Word16 isIVAS -#endif + , + Word16 isIVAS +#endif ); void prep_tbe_exc_fx( diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 1e806bd6a..c41aaf6d0 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7371,7 +7371,7 @@ void elliptic_bpf_48k_generic_fx( return; } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW*/ void elliptic_bpf_48k_generic_fx( const Word16 input_fx[], /* i : input signal Q_input_fx*/ Word16 *Q_input_fx, @@ -7675,9 +7675,10 @@ void synthesise_fb_high_band_fx( Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ Word16 bpf_memory_Q[], - Word16 Qout + Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , Word16 isIVAS + , + Word16 isIVAS #endif ) { diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index c31008f5f..e910e5457 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4644,12 +4644,14 @@ void fb_tbe_dec_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS - , 1 + , + 1 #else - , 0 + , + 0 #endif #endif ); @@ -4721,9 +4723,10 @@ void fb_tbe_dec_ivas_fx( fb_exc_energy = sum2_fx_mod( fb_exc, L_FRAME16k ); /* FB TBE synthesis */ - synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp + synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , 1 + , + 1 #endif ); -- GitLab From b6b5040636092a7de548d90ae804374190e3d779 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 11:08:02 +0200 Subject: [PATCH 325/698] fix FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW --- lib_com/prot_fx.h | 11 +++++++++++ lib_com/swb_tbe_com_fx.c | 8 ++++++++ lib_enc/swb_tbe_enc_fx.c | 12 ++++++++++++ 3 files changed, 31 insertions(+) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index a1e5d0cdb..07ef34533 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3264,6 +3264,7 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word16 isIVAS, @@ -3280,6 +3281,16 @@ void elliptic_bpf_48k_generic_fx( Word16 memory_fx_Q[], const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ); +#else +void elliptic_bpf_48k_generic_fx( + const Word16 input_fx[], /* i : i signal Q_input_fx */ + Word16 *Q_input_fx, + Word16 output_fx[], /* o : output signal */ + Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ + Word16 memory_fx_Q[], + const Word16 full_band_bpf[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ +); +#endif void synthesise_fb_high_band_fx( const Word16 excitation_in[], /* i : full band excitation */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c41aaf6d0..e6d579269 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7713,6 +7713,7 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS @@ -7723,10 +7724,14 @@ void synthesise_fb_high_band_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); +#else + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); +#endif } ELSE { /* for 12.8kHz ACELP core */ +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS @@ -7735,6 +7740,9 @@ void synthesise_fb_high_band_fx( 1, // IsUpsampled3 #endif excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); +#else + elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); +#endif } temp1 = sum2_fx_mod( tmp, L_FRAME48k ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 30be6bedc..2987fb0cd 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,6 +7330,7 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS @@ -7342,6 +7343,9 @@ void fb_tbe_enc_fx( 0, // IsUpsampled3 #endif input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#else + elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#endif Sample_Delay_HP = NS2SA( 48000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_12k8_NS + DELAY_FIR_RESAMPL_NS ) - L_FRAME48k / 2; IF( NE_16( st->last_extl, FB_TBE ) ) @@ -7470,6 +7474,7 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS @@ -7478,9 +7483,13 @@ void fb_tbe_enc_ivas_fx( 0, // IsUpsampled3 #endif input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#else + elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#endif } ELSE { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS @@ -7489,6 +7498,9 @@ void fb_tbe_enc_ivas_fx( 0, // IsUpsampled3 #endif input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#else + elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); +#endif } test(); -- GitLab From 5e7a155cd5eb3064a7187bfa9c6c092f4621d162 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 11:12:03 +0200 Subject: [PATCH 326/698] clang patch --- lib_enc/swb_tbe_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 2987fb0cd..648387bbf 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,7 +7330,7 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS -- GitLab From c9120743cda4609291d5d55a72d7538d5808c506 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 11:16:33 +0200 Subject: [PATCH 327/698] Revert "deactivate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW to test old bpf" This reverts commit a92d246a5f8be1868eb1bf99fd1264670041c5d8. --- .vs/IVAS_BASOP/v17/.wsuo | Bin 29696 -> 0 bytes .vs/IVAS_BASOP/v17/DocumentLayout.json | 59 - .vs/VSWorkspaceState.json | 7 - IVAS_cod.exe | Bin 6157824 -> 0 bytes Workspace_msvc/decoder.vcxproj | 344 +- Workspace_msvc/encoder.vcxproj | 354 +- Workspace_msvc/lib_com.vcxproj | 680 +- Workspace_msvc/lib_debug.vcxproj | 240 +- Workspace_msvc/lib_dec.vcxproj | 710 +- Workspace_msvc/lib_enc.vcxproj | 742 +-- Workspace_msvc/lib_rend.vcxproj | 414 +- Workspace_msvc/lib_util.vcxproj | 312 +- Workspace_msvc/renderer.vcxproj | 358 +- lib_com/options.h | 2 +- lib_com/swb_tbe_com_fx.c.bak | 8216 ------------------------ 15 files changed, 2078 insertions(+), 10360 deletions(-) delete mode 100644 .vs/IVAS_BASOP/v17/.wsuo delete mode 100644 .vs/IVAS_BASOP/v17/DocumentLayout.json delete mode 100644 .vs/VSWorkspaceState.json delete mode 100644 IVAS_cod.exe delete mode 100644 lib_com/swb_tbe_com_fx.c.bak diff --git a/.vs/IVAS_BASOP/v17/.wsuo b/.vs/IVAS_BASOP/v17/.wsuo deleted file mode 100644 index b5ba4cc2e3848c523ea1f3f0f636f280abb28b55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29696 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*3aa1_1^JP6h@Bkl4Tf|Nn!eK@`B@px7?%=B1j64hs3=N_X#Q_XO z4EYRM44w>m3~3Dc46Y0n5D6klF$N~M{UCP`qb-zy0hD~fN@4bc>@8r(VaR7FVn}5u zVhCm^VMt^sVMqn5!cC|!FfoGcg<;$(5i$-83=G*&u0KO5LkU9;LncEW7^frI?81=A zPy|(nivrot!oa}5#J~U!2VClq#l;yI7`V(KA|?zB41ZycN1{!k=7EGj`5UAh#O7sS zVBlk5VBm*_p&$bTgAfA)gD?XFg9rly11MU}K;|kFi0{mFi0^lFi0~nFvu`4 zFvv16Fvu}5Fvv47FeorEFeoxGFeouFFeo!HFsLvvFsL#xFsLywFsL&yFlaC^FlaI` zFlaF_FlaL{Fz7HaFz7NcFz7KbFz7QdFc>f}Fc>m0Fc>i~Fo4_$!WIk+3}R5eF#`j* z`~taq6k`todglKHUfS?RGx$QAT^-;4`LIO|GA-M2fgz@$ep14528VsV>JJRf&niE#VI}vYU6?AL2(MI zw~2{=Q27h0W9S+Gpt2s6hC%ffsQv+^S5R88gw_QhKY*|;8s8C#@4~>q;L5%A7W=QLkZXosSJ(` z1q=lYz6|-`_7OxBqz{J8$Y}q8$~I7&31mhXgENByycSAjNCvls0~it+k{PlY62YOO zz+lK=%Af~sZ-De5V*@hUf1tDjGb0Zi_NfddFaZ*29;p4Wz85jtL47(<-UO+2X2@Yk zWGH4RW(Z@*WJqNwXK)6GHK^qa>JQ+GcaUBX2DLw7aSx(FVuUcV|1skq)ap)V$Y4mt zndXqqS0E$)?V)W|kU8k~JAvE(i455c1q}J%^k2f@4(_9rG8ABOkr5g8+dRW*N8N~YE3XlD6;5biV2xiDhp@krA(tVEA)g@!m(^f#H8Rp4a{dcuNM=ZemVadonGB#% zFJjOG`#%TVH-)4EJq90!e1=4Z6ma=a3LYx}IlzvAi4oMN1GN)~^?x8z_>*EksGKTc z0Oim`hCBvP8NtBdK!*Q=pmjUQ{nWr9f5R{}%p=tdnB5?nRK1|IfDeP>6(kQzuA}Y0 z|NlW@fej;_?w znS?N??Fkwy1E~X94qpq>NyE(hf!N=%?sKd9|R ziT$8_2+|M2kWeT94bMZEM39ua|NZX$)k@)+c`5nj!Ko!BnR)5ON>Cg93O4rIaBB+<%E-Fk&!ZFk&!*o0nE}*B2DO=E7#J8%3~Bf0 zG88j_{8PjL^2?DS?U!PPN^mSPFbu6U1xnW?3^5GF;1=1?iwAV~S1_0{m<+-6gzgVe z3pp3;k5fY`U!eOV89br`6J=mHHl%%%$zaT2!C(fCmvckfCy@F7Y=(UBxErYcVPF_q zB`_>a!AdSrFEM8r#7r4@d{u=(rFFkqap^#2wo<*M-8fHhE}--nj^?z z$Yn@lNJgqHVSEOL;ouvHABTF}fYvpET9u&ocq%yep!NnB!7B(+#Yo|S#!^U8kFFNf z?*q*TK>8i!;919Ph8PAcX|2nolYVfB zm7$S^m4Q{Yp`lrdk&&g5ZmO|)imr)aa*A%Efw{SEYEoiyVzNoHMRKx9t&?tWh?N0Y zd9q1bYHDJlu8Fy!g|10rqNT2dsbz|;rAczCk!gydg;7#sEsFVR$wmf7DJHrpCI*JO zCI-gIx|SBkCc36cMurxq<|au=X68^0#t<7w&|n015>Y+?d)e3!tbuqNj4Z(#jFSwF zQjJq}lMRzhbWKc+Ep;u8%?));(o!uG4N^>vjMI`~elP)RAl?RJW3UF|ZGc7_F&aS0 z8#M3S@VrGl zc;*`94v-p{t)NlN70@xoP=;dgd=9901)5jS2hU{1Kvx*KfLD7bGQ@!Axs##ef+675 zPz4O2u|YS6U*cm~~!L65FND3?|^wP*?EiCuqeO zXq^sd{z{Jl6w9EMB^eaQGAI^7sVR*ilK~VukXQ!INrLt#lrrQpKx_l8A;BKI)DJIE z{FyTtFqkobVh?|KAvb(LY=~7`y?W3w z1w>i|xd<6U(jI6HM+((qE`y;EoSHyB1C6J{QW7YQfLgps&~PBN!~u=sqn9~|vLKlu z51gkVJ_=x9VAuw=hgNytn8B36kim?>fB_WhpfEQCk4Wh;AY2716G3y=$?$vyT1ki; z0|pFw3?2-w42}#g(3A~Y&9non+o_+jEx~1%5xD%)BTy2Ug4aWtFrDB><$v1-TW3L1_wm&Ihd~EMX`Buc!mnXO-a9HK5uPG!t2j zluodxQqUS}>?H!IjHPDnVZ>m}V8CF?U=E(~#O@nN3e*F)C(OX3a25=pazu~8m7xf{ zW;zMHUb`4to`H6F-N9O(QQP$gsFwNp|DgGxQf?tvJFa)w+6P>xIl zr}2Dfo7S0ufngTbn5TYCX3PMp1z;($0K7(^gaLO*fXYkIJ_O49KlsA|RLg+YXsyB; z4%E&8puGy9Shrxn*7i$gumHCWO~G|I_Vf%27tmhIBT)B3_Q+vdjiJDx!B7Ei@n|x{ zpzRk?VDM(hWGDg8!-HBzG2k`Dur<{&U{`=zLVDm{lNq?p3gX8wl!DiHfabwLc@4B0 zyodp|QUkO*7ql|JhyfI{sPh={;Qk$GKQW~L2iiHpzyKPdSuo%}0qra<2d_B+<&+|D z$fSZxM~Evy`)9MDuB0SKLUMl$v_}rw(VWUq!4MBF!$9k03cz+k_Br)Y+)e<+2B`Ok z-0nec?-F0qg7OGxB#T~Us1XCGoB;LeK>c;})&(RKahDt**MfG4?SjS_YU_gfC7UI9 zHKqlFDT5Kg-a2L*9ebS|&cMKM2CMt2S0W+zk3h8+s8+UQz|}hw>~k{R?EEEzyC0vb^=WH7?ph5+q#KS$#j0jdk&CN7FWLkA`5BNftG8~D|Su5JN-ek zWT3Q2PV9m5|M~z>v%U>erhv zq=L^+z@DB!yTR#M-k3snaDc`naP>qWp^U2q0@@2pPZwJX$j7ng`TV1&u$EnuAbh!R#0q80ZniSAEeAKMZ@P{HOd_brB(Q_2UjKQ1% z)cypeNnE*}(oqo53R`-u>;c8AC4(^os5B!~N2fBFF{Co2G8i(XfJdpY&j)~F1$34c zHD-)pV<4#vWelKMPY55mJ>$#3z(D(%5>Ral%GvSYJ)NLcQJ`^P?5PufnGaf6N}rio z&{!R4{Sl}&fGefK+zN_+(0VOUi#{1o>kD+oW*oF-K*?wdBpzeHCz*m)l0o>8)`veG zR^mWPY|xA-s7$lKGopz*gwWUIfzmzb>`~gMM$igEP_F~Dk_FTs#+NR5zMIfenW4$X)m zo*@r>mKSLKXFPc2Vix#>6VMDIWMvR2rkxlV7;ZrArtK&nXhaFrRshw{xbiXaH4f$| zAGVMMol!!Kd=3j))G=(x*fr=JUdl%XU^ZYciy^X*as_lY5xvqnXnikeRSc+HC6v~a zF?zn(Vgz&&CH8h8^>Zp{rUx{(Y(e&l5zsl9v|ddKDZ@b}3Mhww+>0xBz)}II%tT#( zge{~&=Sow)#sgw!4AM+`Jb0x`CV2fes00C>Z=C@xK`5z9VKyOh0Jhu)Iz^3MZAwrX z4;skUkoc}fd*Nay?&>6d%u*MfH zN-R)%1I>j|K8^%B$CqAf&_L_KL2+ck0CG2apBt1?kTIm*1f4HTubKeT!UUDEpb>s@ z#$Q0ECoZE~DggCjL9;D{N*&}-1+gJ51kkB`)NJ*j$0w-84Lb6SUao|&MZ(ubP_SG1m^S|lSX9BHK2DKVMvvQbyCT#P`=&O@KF$lU_0=yY=1QMj2 zzd9VxfAwVuVh9DF8I}(|%L{huG4h#X_>u)V=kJ2n9D_!U@R>`B9O&Ff7$!v@NGIX7?Q!Q zYy78AgYJxBVg&7~0quJs)_%}<6lm`t$o?>fV)(glpk1LA44@NHix@y>A%j}6AT{`~ z5(5(hXg&}WpTyb^T2BUAl?*Z$bn;vPLpDP?Lp*~c`1E;D%QO{y?sW#uwyXkWaAL4_fgJT2%}>@05^x zKTA0~kPOM1b}%!FJDse2j_>7?{BK z-hui&#QGn!Ck}LO5y&Keh9rh8244oy?ke<~SHc)Tv#uajxUmug6C-HV3CL~`#;p<| M1Dfdoh($ diff --git a/.vs/IVAS_BASOP/v17/DocumentLayout.json b/.vs/IVAS_BASOP/v17/DocumentLayout.json deleted file mode 100644 index f96d16342..000000000 --- a/.vs/IVAS_BASOP/v17/DocumentLayout.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "C:\\work\\IVAS\\src\\IVAS_BASOP\\", - "Documents": [], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": -1, - "Children": [ - { - "$type": "Bookmark", - "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" - }, - { - "$type": "Bookmark", - "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" - }, - { - "$type": "Bookmark", - "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:130:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:132:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" - }, - { - "$type": "Bookmark", - "Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:129:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:134:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:133:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:128:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json deleted file mode 100644 index f874ddaef..000000000 --- a/.vs/VSWorkspaceState.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ExpandedNodes": [ - "" - ], - "SelectedNode": "\\Workspace_msvc.sln", - "PreviewInSolutionExplorer": false -} \ No newline at end of file diff --git a/IVAS_cod.exe b/IVAS_cod.exe deleted file mode 100644 index aa3ccb696899271daeb2cd4ae2c93d36f6022116..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6157824 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~Q20qk1_nO)U3?5%IL|8XVDvew7?P1$tWZ#t zpI(%htB{X2XFEIVzDbC=xbHuhEPO)J6zf%O5{^yhmmjC7C1J?h`S=ivW^TzG}os0}Y z^iL-bgWt|UnaLR-v!T{uPywzC3_gs^3~iGC(qWPh7?>Hk8Tqss6ap9+MEJnM2R3Ul zFbFU(Fc<_dFfcek*h~xzY+zXg%@7a=2}}kCP`EaN6@v7EG=pid2vipXgG+NXgAJUA zn{hxtnjr+YGy{WvG{{v56$Swe1&jzTI!mu4wW5T9fq`8v0OBB!UqOigNudG*LxNsW zN@7VO14BSGH^lET+zbpVpfErvbYNg`(1R#rVA;;Zz%U`2fuW3vfuSK9p$HOc2T%k? zIRhR7q1|r+yInatUH>%J{sE=YdKoB#zom?kfuXtf4+DS8AqED9ml;e93?MlL28McF zD1*O6n2CX*+xJi7OGW_(hECr<&9#4&_}gtjqM?8Ot4zHhlNL1F>pAtUVys z3=nG*h;;?TS^;9c0kP(RSSpieGrXJvVwr$gT_9Enh}8gMl}w(^@Vaux3=mbcV*`lF z-f;v(rR=x>qGETv0a0N)1g6Ypcd5>x?|0h*$mxJV-KfISRm-YAR_3%uu9N@ zVT+&x!#+U=h7*Dg43`8Q814u}f9;3ee1pd$n^ z*G$NP!2!w+5OiQj5p-b46Lesx5OiQ@5_DiVbLPyM(C#@9}4K^=;Z45VCnQ?>2~1gbm9QJF9xI*?1%)2BQhb5NCCAbz~UJU%}02w-@KSP zOA8!1AU}fq-}okniGd+3ym#-EzyJU5oDE7lAi2-07dqUY!(e>0)AbMkepim>AFQ=1 z84u>oX2@cC@r6qVGJ(t$$`-6Xf=nt^Y7cABn z_`C|G*a^x3xje+Xd2^c?hJav-QN^|Nk5J zf=Cud28Lp$*K99rr)e=v=@V7RAizb0%js}cSH-!G^cID~znZOd*JN3ce|NnztoChoC*#UOM39uu2kANKk zBH@nMF%{&9sUWdqEutW;485%&D&R#f)DbcuNA!Zk0$;qm33Wt?M1}%L9BSJ|n0P6F zx2wQ$2NO^XzC6Lez>uK=QU=w&3Z|??B0~ct4%I#hCJxgMa`nqjkaiuAGN|@!n6eUy z3=@zzRC_Q?yp#uGI}-x~!)xCR3y>P9UVWIF5{V2OkT_JYI7}R-7nH_c3qqn*0350v zES+8!p!jb-#FW+<`s1a6AOk~&1IQ3)++4Z=4VF@gv~J%YY0U>2L20HtRN$DC2jfcy zka`y+^^0KY`CIQYFfbtN0oemjXSKGyy;uJJ{~ws)Gk-P%NDAa2o(X|3CYXVeDo^Wy zdY3d^C3o%GhcHdWV&4ijyc#cHtz)~WhfQu_7ynhXv=7PsoPZ` ztuw&xbqGX?xkdrPNU0ZxsA1?16-es_Tani3WcOOT8|tEf`QXg6ogJEa;!MFVdT~t% zoOuF;7#Lo%3otNb%m8^Dny^=1hX)kcNuDTve|epsfgxiBlKM)Rdj8gOP)!6%7u~)B zX`PM%$X?~&@A`v(zb{AgOBU;c{Jpk}3=A2dB#snfuzax{Y$9sDH~`KUAQGeroH-Xv z0_O{m7<#@4^@L>3H6V9FQ`g07Fn{rMhYB2b0yn2$n`CSNse$IFwMc4w1&%w0fIRbB z0OCf0ZeN~mk%^rFF=^edKhl~HFs607{(!~)7PQ!(WC9NB<{yluK_LBz1mg^eK88{S z+}jRJ^%@^2;>lZEd`2sNL;3MdZ5a2fpZbqeJ@@37#K2kfV=@M-JV^AdDQ@% zz7rTT4uFyZoow9eKufB*mI-#-;ZHUDC);o;v87Ha;%T&I@t2I4e9nA3I` zft~ikKmeRdSMxJ4yf)z9-wW3Lld*&cZW2?eM25tI*$i2XFD|oy?Fx8N1=0OdALN;i z1&G4=;uTn+NF!%va9ZF2l}0cB@GvlBOhD2y53WT5oYMptk>ls(8IbxpNb2)o>iJs@ zK`mfV65;_BR>;~wA%~O^M8FkP=nrr$kbQyyRC)%-)dR1Q+ef$Fa21B_5k zCrcMNXJ*0#KsDQok1pUe&%f&a4;j3uCOVS2Hf85%B0hLBLb#Rm@6P(B8R-l?FX zCMe^<0#L!_`U4W5K`*X@mGZP6sN+G7R%o)VSIc+;F*_b+HXB$2$BR0M**|$17+%{# zl(W>SWk@Up7efXx<<|`$PVt8*KLt|G2g(55Ub`UOcu0WTIpbxA^W zP2pu=Fg}ph>G}m!r22k=7U*C2_lJJzb`{{??;&D+k-v8d1E~H-Y8TYzWYjDK`4`?M zc(MHwG-Z^?WVE2k&4$U93i9vw{Q^oYE?p9!s`IrdG$uiU-K9L;ENz`GT_}~yYn6;1 zh%ZcFzPPOq@p~{YI2z9JFfhEd{r~^}%X%&bhKvIXXTuv9iZGk`TZ{h( zP!kcgWbuY35O8{MbVj6y5<^&Ap8)$05!bK5?g7O$A97s3)`L_`|NsC0pK%7_hXO`u zQW6L2;ds%{1NH+K4+8@vvKeZ5j<@dk`~N?<*yMt+L1ERr7bMD1%5%JR%U@74m4N|N z^?}$RrQN;)T~k4vjz9@WJr?l7=ng1SSUSPg8l({H?A`G9|NrK_Ad;~}1j1k{5r;6C zOQc?_fa1pql%*J6+ki_*5m3&4Z2%525l~iqt&+j92%H`lFhKp|t_O*e{oG*xSaCBj zy!^nyz>uM{2oW8VE`ZzvZrg#nZD7NBSiz+tqBVgM9sIo~!HEx%(EJ<`QBtasVFGc7 z1k4@#bs_FBhqz-C7b1%mECMB2M6{WJoeYXLlq?Dhr#0Yk0+Ea*+|7GI45kvk*Ahs< zV*vI6BzROZN+3?@{SWdaOTY^gs8iN(frCVy3zUn%Eo_eFS1i`2YUMzQzuQ*;+^%lw zbo4A&qfRD{U8&Qc$x%gaBz2&iDgqk#d+n2P2doZZwLOwLu+_q#HnB>^ z3rN^8`~!J{CE&$!ZAjS3bAlsd76)o+@LDB9XE8WMpZg2dQ3}=ZmIJIKgM)$Lr5qar zLq@`4P&z_5RmTCGA_HD*J`2(c4*FJj)x{1@-l&y6Ke!FY3TnemWI!a)9I(NNu$l~Z z0Y(CamJ{^~83hn0OT(OeNDJagD-H&R39ro|3R&s}(CP)bj3p3_kN$uh%o6aT6RMFB ztWhrG0!020Ogw0F`R5wZK_S16%^hWw0y($B`DyT^BVW9`*#e%lKqkr!TlB3;hD^9DL#5@A{?N zSAc(iposM${$9`!42tt>b24&W9S6W}!& zIB$b0PEbw8)7R-UK?1qa@>(v#2IBs#-ykbk0$vD0-QUT^z%b#Z^M6na52=X{Dj`4) zgSVP}khAk^xr`Wyc~UU*4r)Nc!xC&>0W$+bMg!Ojh}2qV3r(%8Fu(A(Zh@y(Q1=Si z&4|FlNUc3!gAsB46l^y}TtgBeL%l-A1c+mEe?dJj0@lFsqKB10YCQtcXaduCTOH!d zV6aBHj1Lfb5t#gLsJt;q9^nIUYWoSA&F=It#cITg1%3V0rW2h%lm5tT7oKAZ^gD z`oH5KJ2+Yol!}5o1R1D`^+8o7s6W9oAuwYC#96DqgS4;&ya)n2i|55DCUD@oGBGf` z-2DcWiNRjvXnw(DeW5lOxkcG;0nUDq9)=LaaCr81c`XS_uCP8t@fWZ?-M#{yjt^TG>e28M1|fzAL9 zlps>cxB@Z%z&EfH0$!v;&A-nG_G%PpXf9NMf18s*>w(gcZeM}sN*+c~9+-iYML=vw z76G$B(xCB5kPxWp3Sxt@2>-UJAZE}DCMS?5Sil}O=?)cWtm1HxXJ7!wOml?^Lmdye zB?2CGd+h*G&|rs9zz9mvWK8R6hv!Eny z#S9IIQK>Mac%VkLK#XGAz!=nhHlSCuLCb;Rg?)<_Lqt@3T(|EZ$XRDS2185i%#NMFgzyRu?g8DgYv>X^patj!WK}2Fv zdRcr)etc;`L240rSRFKe4920|Z!$taZe)CM5Ry&;USueNy_+!wBEAwP9sm_z0}-DH z6SshhAAyKh!o(Gz;vXR5i7;^vsJO>+@JNIwO#Fi)#NHJUaYLB+4XF4Jh&VJo2fR1{ z6^~c}Hir?Weg#x~0Yv=eXJ|A|fQoah1gpOY6R&`ZXF$Yv!o(Ax;wK>D3t{3OP;rA* zU~@WQ;s#Lh1rYHF-02TiL5q}61?|_OMtOc8M5++^%6|aGaZ-j|QK*iTU#Am|99iZY5 zAmWWMaSf>W8;E!&Ok4me{sST&2owJy5Ako#I#v6Jg>UP;mo@xF<~fgB&CrW-an0NtH`~gIKBTPI3DsHeHY|c!WxC2x?0V3WA6W4%> zZ-9tr!o&rj;tD&!<^;mTf5<@mTLBTbgo!_Ziobw}E5gK2K*b|=g3aNCiEn_4uYibu zdKZ@dl{4#xAfq2VvqFQ1Kp!_)3^~095<{M0_Gl+yW}ju^VhoB}`la zD&7DQPlSncK*bM0#64l+AEY7SV6X>ljv-9^22{KPA}$FNKL8a!01;<|iLZc)YwQJ^ z^YSe;940`;8zABrVd51~@f{HHoiOnPsQ3$r_(GVt2SnWZ&5L(6S`4v=!4)Z#0MAzo z>;UmPT|acXe(7}m(dqgJ)FQE9;BN)ZS%M~vyF&$nGT!W+4VnrLc;OBN5G499N-bS*Ly$%NrKI<7(vZB0g!<&ChLRSni*gA z&SvNh{Sx#-XfMdyptdeww<`~5D2IXJWh1B|{R5-~G;95S4@?PncPP(s(7FhQ*NGW_ zK=Q6%0$!X)lK15~&IoEqy>`rC*ax*@J(4`g3Q*(ZwPFUxK5+A?@D0dxmVg%$Qs8)f zG2#3F|3(L13%=$>aXzdGRATJF@WQ4V)C6iiB4GXI#e`}|n+Mdut1)(9`11e%e^A?| z!`K1Ru7Ru%2t4izUJr2G^$)nQ$=U7tr}+RQWYG&#t#-FBM_?9X7E5<1Ptc1R@VK%7 zXqJg(1LJF5aIl6$=KEeB%ZPwDecNlO(_`f&(U+N`~QDuod^R1I1M1r(I0dD&3L@E=Kufy3?CR6j<=S8SPURm2AmZG zXNAC70dSTFoMi)NslZtpaF!07WdLW%Kv})69RV+v-TVK)`3TDkISU4cUf+&DP|)yi z2c@u{`yd$}NSB56fo+1M`tT2Q8e!bkqo8k-M(i6 zGfF_lF}+}g8Mg*v+zXX2|Nl>TX(t4VK9I3N-C)fDFHZjfMKA{>f)%?%&je+xftYdd z1=PD45Hnsf2r)3gw3$Gr3&D0i0I6quF%hQT0;2wSD+@G@b%*ZhociM*$TJ5R_*+10 zrZWD3J#!%7MHILf%hA~iO4rSMK_u8S2Ldw~rh$`=1_9cGdq*d&gZ zXBa>s2U6SFsUKeHvOa~`EewfTQs7!c<4n*ebGpOI@KxJ$*d>}HnVKPln8Rd)&kPOp{ zgD{y4h|G%zA3?$Xiysv1H#(<2`S<^Sx9gqG))yd#?}JY8Af43$|i9$O_*lff;8&${1gm!<5|vW#uD0 zuLJq_gRO79RN~gW7i2$pYD{6>|Nnoc&jwG8f!GW)Kx2H6^()=IAd$cfjv3&fdh!$+ zAl+ai1;7z#0ynml4eSr)3?GnkrWadb%45LFIbK}(01AtDe4r7ODV?n{>;C`m?gf#} zFBv-_jJ+T(JAeC0&@jtX5a++j)B+y|2L5fXGXnUx`OXP!e#6s!rMndrlATQ5y&#W( zR*8XK3|=U9B(NKtaf0}_x$X$)?geGt!0ylqLEYf$BH+avaD}9UUI_PsO5?y6eBil! zmVk^Jh&SFnf%|Mt*1#8|o= zY^eecOEqDZUVvE23A1#AAjFd%AWIVUNzF(A^7)%fJ^Guv<43ly-t%Tmny0vjk*> zK&;#J2e zgc^15kYtT%bne zjenr}g@K{B6~qeYh8kk64mJehCW!w#r%J2?EeimV3?+PxdqE7&00xE<>(|!ZVC~kf z6H0WtK`q0nAk)CfD8m9`|I7!_z;XcFFY@vRCj-N4{nxtP(0p>^0;tMm3CL)GXvlzR z;0J5qdAXbuGBGjr%)kHtds{&yJPf_T^PsrGuoh-?55#C*n9*B!Az|nPGWtMTXX^ow z(Y+utuzM;fJcC{|s38XhxCrZP6#)kYhy(`(m;qV>@BZ4Ie?M41X!X>;|NpH|l^B9r zcTiDKl>~BlP{s_1Q=0BWgGCeU6p@z)IiSG;wkhDn!Sm2y`2x`p2-ENbv>xOL&&vrM zpoZ%eh7zZ4-z$MH93fN9ovon8e)C=s393#(jZcQz;FQ1*GhrLVgco|RK(&+y*qkZM zB@)fGQ`k#{K+RxKn_FNVB!#@@;@|H&r?VBrPwValQ=Pp#{{8=N44N$hHr=J4pq6uUP3r=Nl2}lCxjUqHLC}k3rl62z>1^d$2bvIZZRqX=u{wKN zLEV$)y&w)lsSZD^rJZ2|@qphwXqbKF21nnE+?OB^w6ilXysY^D|9@}q2GHtbSY=cX znL&l5WsDw(AUNf)1Y}e|4F7l+YWNI@;V%u?L5niLMqYdv_~PMuuzY7LsB6?ab;-Z~ z|KZi_Q^>3$x=qjoz8pN$%@U9?2Vzq@%qBgkO~=?kHD2h&)=MRo{QFx$Mz=fkR?L_FUr8$I5Pe~#J9u5;~?U%B{C%D zfSXZsVKOcd8PL=dL+d5}mVQ=H$pf-2fPXtUhy%N)f_xR!-3rQm0WTgYV)Yd?NJGF; z%Mt)C=v+XSF}*N=S$3Th;;VdCPz1JuY-v4E%KB0Y%Mqm@fs(KBrEYNar*(>WyuJ+WTJg6`08Jc28(&jF-L0S( zli!1KF9*CIaV9V$1>($3@X~mefENZ}XY#x}!NR}*tCFD2wx^I8HPk4D7ntGTxoDPv zj2RFU&0!|q1Lfo+JTJ>wKr6;T9U2DymgykJO$GI}f_fnpes?cOD)2@9TaX)h__tkX zy;Q2$?Rp>}V-Li{r{IYF>x}? zM9}(^<|8~WFENAM2yXQAx9kDAu@}_N4eXu@5(|1EWC@CYjDj6%d-ur zZFW%H^Smqu8UKc-`%E{uC(tR_4ep0@I^;C@_1SPcY zmZ_k!FW`liAr^l-ff8T$lwOdMpcm%mASEmTuq^Hlb7BF+iRv&Xo?`KE?#$p}7Z)6{`4l{v4QjYUY&Z&Dyw4KwA_r^(&r252 z^!7hc7amga@V9IO^=W%SwNT&-H!HA%Q4Kc)jf=p%&;qmI2*iREm<8Nm3j|&+2DMwE z#$5*|4VKPU9ZZsiDd0snq^yM&{U!X}y`b_w z@I^61ycgOJW&saau<&nl{oQ&1)R+Q|^MV%pg4Q;G*x&)oRuBs^p&#Pq!0;k31vHus zo6!G|qQ%g71Tj}+i4ru{9q8l0 z019#t+ug^30aTZQ*w#J{44@DLu?>A37(ku`vDJJW7(j&zXa%LTj{^g!Lk|+?^KoDR zRT&`m4{rwsP)8BOe&_AL04kDclruo$ zDc%kYpmGbempj7Sfg!Uv*Eh8!5xgrpuQb;wv!s|IDYGQFq$o8pmm#k-H#jl3ASbmr zC^az!otv7M?2?+3Sm~JuRm4z`oanwRXE zhb#b50?`|kSdz++oamgNmzJ5%kd&C0Ql6Pol7V2k6(#1TI_H<>m82Fil;oEr<~U`R z6oGVQ7UzOoms(WJkegVX2w^j1B|$|Q5=&Du^P!>{PQ~FxnII!FJj)V`UGtI|5{uFq z(k5hEI54zYI55n&aA4SJ;lN;G<-l;l%7MYc+JRxMwF85ijRV6}8wZ94TL%UfTL*^F z?l(IGB<8_qp+I~NRDQRsNInke5DUD2d>WNJDrH9mh>G1&0;0lp%m7jTJGOu*j~zEal;e&sAj)b7&*9k& zud(bOmjQ`m>>t+viL&l6IXs&IvVZ)6zXL;vzXQW7e+Pyy{tgWP{2drL0vs5G0vs4* z0vs5w2RJaOL1}{k2L`JE2L_h_2L`_Y2Zo3M2Zp2o2Zl5L4h$0m92n*YI55QdJ1{H@ za9~&);J~mYz=2_RfCIy!00)MX0S*io0vs5+0vs4}pyrhYI50Fo*%SO77?$`uFs$=; zVA$dBz;MW);QsOES`LO%t{nmb3=A(N7#SF{WL}(`4{qgj`*L(Lg7$J-ffO(pFfhFQ z4r<@Ia&#l@H1B3Q=D-2k#N91;%!v~;li$s8%uxumL%f?Q;Dr)om^$MN0|Ud0Qi#Fe zVvVC)u-o-VCsT9n4~9~q43P0JSivKtEH6PF&n%l4ZZPFvx_v>)nYw+ybaFJ;eqku( zhiJG09wKLXozxx5(aqG&(dqlAJM<68UMt9OYPav7z!!Y)L9Jkx?$AHSog%<36xTn; z9TLDS-#^D2-+)*kpN0N8-t+>>0qw2)lh)~&@j_k-v}FvkE1fw8sT2bjwO|5V-eTXM zk0pHb=20(v4?+A1313l&!8pTrDR?*-9=^}!g5A*xTCI#dd`lo2u!Qd|@J=5VaQLo! zOHuglmq3K?;wW6*P{cKm6fNo!jK+qzVZdaZF&;pAW#o)z#3gERae;^AbE<|E_37lRe zz-uEqU0-y%zCm3j!x8Y}7i1W()Ab7|y@R~=IVjzFPa*B1dVjKP!EKf2F! z3v>#02e5Pof=_F3&_~Rubs03o+-|njr_~Lt?KST2o(7->}4h~T91gcZO@dyfD z-#^`g$DIT~i)~)iih-sK{&aJI2jbE?1I1os!GzMfLlx3G19@IVpovJmaD$8RZwpmP z>kL!@hX?;QR~6987|!FaFF@(%HT!W_aH-H-`+}jA^SCR>9Sk7RCm`u=UyiQOC!j5e zt{h#yA{`z=y`gV{UfcwCm52>lYw(nt0x0LY{%Ae|YA4PJM}#cl^l}O^a@gsL6qv@a zz?2Dmv8op>FhNy1EHL@^`zmz$zG$v}!B}G5T>FBlgz0q}|MpOspe&{r3_DCf(a;SF z@U%`R9&pM7Cp&OJGm0`Wy!aym+RtLkzui?PAdB(E+3k3>oD*SScySV}g=+^pC}u(D zL3D%al}_J3V0*!q@NW;~33_n>Zdh8UV;Z=4Kkgs^+G7TBQn#y2TBnoLiwcmb#ULUN zWOT3Zo4^+#;CbsG-B&OVBLQVx5!B?p4ZI>x0g|vK!w|s_THnoyAw~q3tzZ?P!zo2gE`^2 zg8*pv)Qi8MB{Jaj0gH^+LJSNOz)^4!JS$9W6c~eB01C}VM6BPum=*$y0&x1r9sXw_ zBZVl5e;=YAfD{+U9R)yLdTZLc<}|ab_P@)KnmD50WU6rr;Uj% z228;18F(=O3WSNlus{H}G#~^xJn+^ZyC6e?C_w^R{Rplb%1`>!oJHTvk=!m^|F2KO>;*kJI z5j!}WzxM2gRjJ^lu?;+lj5TRsseB~BZ4r3bfI91?LC~-v93HD6LzgJw0dCDgnhNmn z0PXmFp)0_^unUw}An_{pLPh{ov4YCT?$8&_uh<|V#ar&%?fQa$TgQu72ZsMDy%%B~ z7{HB81yCFEwRtzFnF;DdF}&99_Wg6*Q2`V@piMe|jyoxUYOdG95H%pXUbF9D6<}a^ zodU{ufeJw{p05NYHc-|~>vZIKF@qme7C@UM;P5L0Pb3o?emB6&?@+?eG!PPg6Qp7t z7}R1N7>r^a80=yl7`$Q~7{X#57#LVVfRUAnm6?^51(NnaWN7!B7aE}0tK|SUyEvLH z7)n`RHpB89|28L3y)6VyZ2>QSKLIxpUt2>(nk^Vg$b_6-Nx#Z(c+PfQDs2P6cDU=>xiAw%e71 zf13wK>&a5C9n7Fg3DjYJ;l#(l@WPglfgy_->Nx)GfdWAEJ#%0LP4 zCFneWEV01P`~t2zpZNt@R9@KFnS%;Xx_*Ef zz~*B{M$o$KviX4ft+QxG#bSjsiT~yFtO;372382kvWeaPr#u1+)&Wl&5tzIf@&4o-l+Kfqy-2bYY(eU!-${{0?2))&DGd%u8#)<=M^^<=3eI5feV zU#E0{qAlnJpA{$(u)N*{?o<_k_hYfV@Ze@(c;O5p>_CJiHz?cv;NKsp*LtbMDr15% zC{TWY^C!$brFt2l&5PZkKf0Yb0$v=0`L|T88?>=DkgxSp33oSWi>8M`>&epc7f(Q^ zmw-(Q{Q>H=Pl4$uG0I}>hI+RiE+~ssA!WU22Q3r=t+?c~VFaD22I{f@Nb7Xedy&fp zn)iqFdJJB~gVceJzvEJdIJL8=wAUR>m4V0iI{6O?#<@b7oh zYduh^1okVWTq$aVMLbWp>yv;NM%G}zft!S&6TmvX^twT#!W?PcfjnuQ0S2I~<-p1K zq7r0o35dw&1o^QO#BAXN9cLyFj=AnYj-VIDO;F=Yq45Ap63!U`@nH9WqM#A(0G)2% zAIBL%QsCA;q%O~~s9Oo}nVvO!8gIXZ#O0#uekni(-KHgbTR@`r!FQ%v>=w!jyT5Ivo)4?t~W*9VfSKXii*Nc1QH z9d860Nq`D<`%I_+w{@})F?9Pd3Umi5fI43u5uhcxp?{hWMey%;{Q$DnrLkfssG*X5 zlA+s$L!jG3p)-&N$&}_w9)=PVf zk!~jikjn!jIs;fhv3no_rmhF7F7!>e&qR^#K!r{xp4UrZ?wisGGNrjnfT6?$Rjk`d z0Bm9c%)|s#6T1TiI-Pi48vg(P{{+uoW;=X z`y>!tVYod2Ri8ZI{QaX_urq+=#b#Cph6!1WAR$l-qNEP0kG};pBGDcC1SG@J>1FVu zla+x1W`jh)3oW<}p;?TO>W6(5xZq0bbQJ(OWWSS0>jBVk#tm?5mHoKu4N$X-f1B?O z(9%+YAjqKB4^X)QN)a8P)=J=uiQvW6A`lbQS`UzxIvmBp!1BO`=`Kl;2!WY2>8GvxFG{NvH&s+mIt25=YS0FeRPEw0d2`Z zD0K63@S67yvR?vX-a=x`lfh!15_Fi72Q*A603N0k0S{Ah1iUx{cCi4&2762!K<*7g z1VA?js5$co+-g8>5zk@(EzRTsO$UJI3qZvPxOWU{fq}CHM^F~S3%LuR_JqL9ot(A| z4BvkSfUA$}Pye#mvp_?%-5wl)FIH^=C&qvmA3=+Fj&P)PPjQo&IhBEb`=NjrwadYh z-M&0&os2K$gKCgaP!Ak5$jZaNT`=f{G_xtB(g3TdWde;L$3eW8;DQ+;p#Dk)$RbdG zg{`@k2XqQB$P1vuc0d^v)a-}0Iwimjq;8JxP@c4IN1n7!rWdkc^R3^!U~z#o8^QC# zX!J!kx)5Zs^-@Mr43^50iTEOjJ(D*i}OUS>?71VWNKkoVm z)LR7Qyr-y}D^L-L4$U zt~{WD2iHHKSwy7Z1&ud$yK*3m1ovNYjekLM>ziKJFW`~-7w;j(39J_e%5pD3Q>Bn2 z4mmmlL|){8s;6}D*-O4(T2Gc*gL3g3NZq7R4y|KKR6*_1H;{HI7hIGd+z1Dqp!kCI z|Ns9Jx_#g9?+@eywXCc!lt^^@zDes2{gT!h2->WB4AeBe_wWDz3C0H?ks6Zc!0;l* z0g?tm16&&%AW;cQ9x-{4{jH#spONRlke6ES1YdlD6hPqcz?J^Mz41=pH{GFcK)tgU zFY5mN|No*AM3npkEzI`iX+2pY32D=V)PVXhUNHZaDtCvzfHcfYtRani-xr`d@WuBs zSimTQx*9LQT@5DC%Hm7it}j4s@fTnI{{L@$;H3*_d&qu}HT*5=j0_CWu``ewy%!h$ z{{P?W`vW|0^x`nMkI2#K`k}e@19&Lq!%H?s28I`>{(`odz2M*OVFap;e+0egD1};I zDhnEQ+U{Whk`M`ckq?vLZvh=!333bQq~cBwqZcWE|Nnnc4=LtmtII~jn7w)TS6@Pp2^eUaAb zrT1bDNC1{%Itm;ZUTE1tQVb~b*V#c*Oxgrcnwd}lDYrmrW=;V(&A6o|d*-ENCMTBU zLk@ZYrxyk2`2B-USL{<#kck=@-M)bP zR}6HHPV31!KJa?IA1~hh26?$G19VOgsQd=ice~)KRY2{r&>ulBz8675xiS$I_307rWtl`N89_V8@n$^uCzz`~UwJ-M>KzJ@iNGrP6rN zkis9x2$V}P%t}vCTM<;J3Ix2+gNqtN-0b@YoZzp)#gQB+2(sig*A6z&0ER4RUV{ZJJ8464D zLF?OI?D+Zre+I)BM#vJ2z!x{*)@y*`k^?eTV+0o!$^b>ti;X|QRo=@^P^nS^Hsb{| zWW7eviz#r`8d*%B=H7M>p1>FH3Sb_Cnvn}N!xdzP0oaT?tdQ~9fENKsW-xdAf~KE% zf?ljbH$xL@255%&#hV}h|7Qp|Fu?qB2d*0Aj!>vy(%_;{cRc+8@ylM&Vv-dgGeDyg zpu$8j=*0}UYE@8j;NS=QMF}p-4+)Qj5Hnuayhw)|02+b~co7a)s+z?D_sGM1SYSX6 zNPrq(&A-hRv<+V=gW(rwfCW4vy%=Ifw=YLpr=!Y?C*MIO0YB(4c8;{p0F@V)K?2|= z;7&_$%K=iUfzF@OjOhnO0eJq7CkR}Lfpg)6AK=Dtzzg;hP)6Te5ChcwD1jORF5fWE z+c@qDT6O~oWZ2Re&=fPcZ^RMwV(E8KcygdDGVtI8uZxfXjf8;?oI@IU(s&{A{r`Xd zZLX572TGKXBy>RaA!z7L>&2&U|Np;u`wisnFp#%@q;&@9yto4r{r(M93h;0Dl?r?j zod*k5wX78W?V(aZFC^eX!l10w?JJem>7n&vA=oUg9iWS1UakghCIbg2$XtyVEg(tI zKvJkcr{IgWZ~y;i@PO7hxPk_3Ubw-d&c8eK$8jdmNi5)!7F<0#nt(=hTz{l>dzhqk zdYQd&2RYIRMCg9|{~yx9}X`~qrNL(0`Rxlr%$xA-t4`r!fr zFD@Zuj6fsNzCS<{7cy7CQ#&(S50n~01`17DFO`TuQt1D$pjcsfxsRQJ;WaenzlMsf z0u2N+fre1QC8-O-bWp1S+|dFBUT1(Z1p~-r7P!e1(anH_$St@q)Qq2BAfd1Wbp9*@sK|m?_7Gj+1*pP)HU@^5XFwGa zGsH51fEOxo#af^Yy)6*5pyfxvi#6cm5Kt4oKS+NMNIwh2!vaAso@7IVp@j8iAxMf9 z9`q++Qv5BTZtx4qFaQ5%F+ptR33#yzCS8&RYDNFx2M6F0xM&D+0OrD-DFPmfgGS+t zrJxfZUTZ>zXCdLV32uTAbXXab@5EkIft0>H%fP^p#SU?VK)?%Cm|}<M*kv7lsF zIt7#rIl6uSbT)#88meTrYC}AgI;_!0rk3hK(k1oAu0at9%6wn zK4ihdNFCy*&<{Z`X2WbQK}~U&KY>aH%`6VM8yn%;g+X(qV0VB9q+YB5D=h})Tqp24 zt{2ljfm+wF#M|)+?AGQ(YM|LDP#Zq%38>A$!M`80Hw2oDHhqF5qe2#Nwsif$zuiM3 z@C7&ARw1NJ!}G!zWa$gvPyheF@Bk6cpJ1&%U!Fijc$RoVnhT(_bOhjDHGwoZTzLXs z{Dzw^4+#{I_GfTGt{qIE=F=Tei2#~5;^}nacyavW|Nqc292w9UjskcLM+G*9!|@s9 z69JUMdNwok9ve^tq|+-hb|3%$hxC>pS@0d)RB+1!G^VK+@M1>>%q}5t zlN9Ep2cR<}K&?98KWW{8S!taCIWNw90QGKuG*<{PlyL5JIXs)8^<=4dMimR_tm(tE z88QwWp3U&$nlNb1JkN`LAO8P;vGW6p&#GXym2yLTCeeDJL<`bD2hAIC1if&FJ5wkF z6x=VCeE@|Z%gartta_gmVvSqV&s+yW-otB z4@d@4R_sWJ`CloE2^XgL>FGw2TqB=-fHw!K*2AV|% zl^+5@FG66VB|;hepyd^p!TT{;UQPnF%%;8n|Nq5A5Yh7<9KQVfJuF&JmSlrYeFDXj zK)?$jm&a4Zvk+vz zK)?%sm;#vn=iWi$6?8HJctL9JTF^i`3(S7jZr3lbi(x(x2zbE@GoeHoGNW-3ymHD% z05KC1%F*q@DA4J|@|p{LaTTcA1h;s>4FhCz&1QJfBmmA+psw~0a97*$?f?H1kXuax za0668(_~EG(ju+X1JqoCw4q+`g4`eh()d~sl(RWN9p6Bc7hm6i#)H7~yJD>;>oh?P zET(`LdZ$6v3=98$&=n)la#;$zNtfj%Gb01T>%#8PA4uhR-#t(vgj$ZjdIO2$%b=$J z+BdLL+4To_G&v>}mVVVBl_hwF@x|5@m@q$lF7rhK$dRDc9MI&%09T}h(nbK)FU?2b zZ3J*4iU0=&tYl+*1IuM%ttU%ymaz92v2JtR+yMlU0CNH*vcqbvon7vpI;vIl=rPN-`1o5CM zHC}Xscu`j5T@@_v-)uouHLL5R5U-L6eyf->AHJ4&p&oTD-Uk zI@7`W&5MKDh-d!w*AAuKlD%YFP2)+=;|NPpn?k{AH(ar z=)=XJ@nX<;GUPr^(D4@al8v>0K#UUS=Gs5Z<+k0vfBviV{%Lk#cx?#km+_=^3cS{X zCTE_sPOjIA(Do!~M&-50F3?;=w<}l~`wq};im#cB4}dJ**X+P>qS=ArYO@2wqh|R2 z5~%&4n?Fl9nrr_smhik52Ng45!$qLM4K|#82ZI9x1I#?A|C`_7UoQ???GD-80q((q zrzJCDj)2c&;GGQ}nBQ^&R7&uG%Ow8&fuK&6R`VN8x-ko? zsUECJ;I(nL>yOX;S`450<5)i!PGI=VA9Vn%S&&5~V*y0dVwff`h$dLuULfejj(AvM z;{>YP_j^dRo-C2dI0Dg_1=A=9*2wW%B7@~9*zo}{neWFzj^}uJ7d+qfqq$0esni)_ zlvwjmmJ+E91Beben2w_m9j_%aQXn!cFqzd5nU@opzzc_9^Ufl0H&(vLcn%s*s)ctF zcfjQ=Kx09mhB8m!i=a4|uaqF|ES`XjDGDj?Am^}v`~>d4w!#gshZru`dY}Zf!2ZM0*^mYHEUfdO^W&h!GBN=f49CEMCJi(B z&@oV;2|#SNXuVV-k>LVS@?!?ndGo6bxf#6VZ!b&>e+y`}P`B@o=1K*IQrV0J5dFC@{UT8PpdKTr&Z|;jES1VQ z15xD;Q}ymB$WI)v)4N@NG*>7vl}cs&fGAOcDLD;Q;sUXYxl}4c<2X2E7-33QK$R#$ zEMh5@$cTU_xi=jeGObW0d7yb&P=pHvzW5je^FB1fr2;ZKAo`ZU^!bAI@w_(6Vh060 zcVB7xHBx&$}T9?}wnbQ!hb!Wxi9 zVMYMN_#l|^KM#TY$OD;I0G%W8auIkP9;jEq2U;2XA>c)86g-?kSMX#pgCYo=`mA9x zCGL>)A{7Wp5>lBbK#i2o{8|UGm+KH`oSp&=q9U*}L|((f;{`lC-au3?gsJoZs{~#0 z$kTeML>XeOUhBzHi422N;GipmDU}5)<$z5GM07hayogkWOb39r`m9xkwEMvGSqa^c z`2f(|Ku$M!J_|kv>R6BozPNyh`DMi9F=W0z5OnVY|9)Q{>w`61Y2cPn=%3f1n;dz- zCoXSCo`nXrM-b}kiBjL~%3R`A70 z=DQp~ci@5Ue$m;{z{J1+nznwexbpxri0S*~wb(8QGxSRa=nnB0$>9C)EH7sN`~M%h zEVVFu!*;8hL)5;s179f!S-;5fBJtn<|KLG9(0V%GKgV4dL5mU?UPOY# zL2;UWhym0r`U6_OC-A}uGB*yo5)|C@`vGnGfo~;l{>4ONMud`jcbF$`!nbUpd&0Ve}PsPyZ!+!2?1T8$Irm86|;@wJTuBWCb{xsJ+f_tX%;b z7%%aK?6VNup$odKtg}f5WaU!OwDao-kbQzXqL3tdz!LTli7iMH#b60Fhy))vtwD^6 z0!#2hQWY=6vET)aKS0rpdN&$q0b@1T2vA%fZ)suxooEE=h^YMe|33@79958iKiJ@a z7Y#k2*&ooLEvTaM{n6Rd#Q}2skKdqv)}L-B&}=lQLq5er1SEa|Bo5jw3cCCS)X8WG zlmLnE08Qk+ECAiq2#PGwI>bMqL171JPzRMK1C(?4!KvV02rLx{f?avMNr9h%fum#s z!|McSQUE2E?bwxNO<;I!2~7_mWfQO~1DPfS39fs;K~(|E%cr2JsQsYBb*KtI1H--3Y^<*h!F__`jUa*d zsm)BFCc~d@rsEADf$y6f8DB$!`FImZAfWsj!;9s=Q1Zf!VDwM`?SNtMpMe?*8*wW` z4uvkP$~ppPz_Z2;a5IJF<$chCXi)qeZxn!~3!Y!#xIXR#9+t|OpwGbYLLvd0UlxG8 z>bs!RgQdB40X)NWLX86*uLw#Vq2PpwxEvIeYMOsC)fR&WeVkZ8+~X}BF;bv12fQM? z8!i|k4iU^sK&Z{U2)eqww?!aDmVqJQ#p{KjM8uJm0E&k|7Erp*JONfQg)2phfg$L{ zNr(#Y0f&&mbkMl@WO%TI?=%4CGv7Ba_&_u2pj8(v(2~6a6c8`I{{ROWEW`RbXsTVn-_~fxs`V2iln!pECH7Ab=)Vgp+Q%`__^)6y?Duz{MU z{M%jM1iTQfgBKNnENPuhe4u=P;5%sa=1;c=%P!Dfm$Xj77i-}{#~r~b>cwi12sp@( zJAg(`7+%Z-iGbak)(ti&t<&|zi(+I^kO$H_U7x&&1x*ug_k9tVVO$JLJFG(dpoB3= z43scHwMlm%3wXpK`ve1cJRq&Jg$tzSh5Yyb{~;*?6ibbPu)vdtr?wZn&dPu)@F^Z3 zD_^_=P07Blhr}!>75T#Sl!`)P0c4N`Ot2&rWKaYm;9M4kiBmCw8TIgN^kA zyJI?N7TEPqcL57%#SUm?vMWsGg&hpsAeAj)V3oNb2S8GK@{M$jtTl<~~e6gDew4#us)AbBU4`@?MWDQ6aM_Q-r z15lw28dUXt()<#1`}~L3D3>gzb%U18zW`k;4q7%3YB@ZxK2;k5GRgHvzzch*?b}ZT zf)2WWVSfW`GAM_4hhFGp>3XsEE4VfPqucjFw@70U=%lUs7aYwnWgno*rh%r5U$=mY z7Y~->jVa(J0|Ud0y05T|c)TG4CYT8l1g95}^P6%&Srath3<;*@Lp+_KCo({j0^P1B z0y2IWPGEQ;CJas+U{SCeAZi;AonZ!*7|TTv(hxT^9t7P58~CDjE=Yz0+_m}=^g<32 zO=+F3H^6cHCEx`&T<8k4VgofzSp8sWOX9fe0Z>s6ZbGGXhTeHG6LfXJ>pZ0T?Yb|z zYVfFNTBq-w7ujId4$x{2)G%6!q8e1NgHwB2r|X>;wqVuJjQasPfBhXa>;n$4#zQ{b zpfq#@?D{(aFLbYgqav--^$o5z1pj{D8`cMFeLO!tpW@%| zdZRlOqKL;Yt&_*;MLBq~_)oVJ%khQ+1xS_fq6j1i_Qmn05}05tNDy48f@+?L6`-_W z2^Qn&be+>!I|tTq12am38*Asl8g6sI4L9}I#f`Odzzw&6*BOvxv10+Ge5?Ugey>6E zwy&e1GNATAT4xhj<|0_e5h?>}M8IUWgJsmAGN6V7OlB@v2HJQF0MEOEw&8XMvZQr` zO$C>7<)8^@uvZ%o)hK`>3?!>DbuG^fK*W<(|bW} zhh=)ND`1mBu?@}5Cq6>b0!pSAu7@duW%`AnDd5*FpiJxvZZe==TMg=>m_c$QDCr$< znb@EYO$zBBVHFKX24p}>UK4bxH6KZ_ ze)D3A2&7{Snq8=v<-oAxKjdt^mRaC?{o+%>y7EsS^fY2 zYv&!1B-aY&neK!nvtBSy9oof&sFd6RNoZh|kml}t$h7nebNI4ZV(6X1`{W@gW_^EviuOnELF~{UPz^o-Oo1=>kaQe; z#L(L#3egezqmyOgiw*BVO(oE2`25?!t^|!^i3Glo@PHM6CEzu{FxeOSC6F|;{X}3E z1H>7J7X%SCL+x zroa~)AUdJNHfZs&AKWD(I~>4;Kx@P5|Nmb+dk5+U7eR|`(8^^Mgvwo@CGcsTQ^6|t zfK_^AfZ_tOdij?-%y%L?LBn)uoxNa{lfWwFz`KWGy6fKk{||{e6UfXrC~ddafSiyF zQVxp4-a8Nf|9>r%);$%(fNWO-Gx_(of<&5sF!A@!VFevoKV>y&qK1Lth1t9R|G|2D zKt@S`jk=W9IrRqAs8$dIvOx~a3GnX++mLw(6q4`=0Bh&p4-O*! z^%r`1CU*8#tOlhDu*~t6sR=L#Yz0l}^6v*5e(^zPtH^550r?=3tC;CE+ly3QErtok zC%dPDgwi^DM14RG%?IfM1p&750cx@J1^!+x(6GXO-yhvmLDqM(bb+oKLgKv;V}~?? zT4h%M|KB-PVKwM>5fBMFM0@rB|3NRdu!2>jb+$@?e6Sr%1$6hKDC!3nt2~{^#(+Mz@|(E85Wc!_ae0roF3CUTTMU`kbvmzaRqrZkbnDBkZ4dh zSXTfv@cFk-@dZf-L4&Qkrxg^OfiGr00GTDizaJdRosdv|5e%AqetG>L=)ixFX#rX1 zGphITd4S47P&WyjHu$&qIDraE&~7tuuM3=*x~Fu2iq@bP_7IaHuJ3KtSpENhKzA?5 zE1=W(K`EjeVq3tAE#R|zcsg5cK>pd@3$hZXh<|%aD9GgjFY*dNPUYa=egfo4kax2bzV_}(E_UR#ru086F}4IU^jtPb+&YY0{g{c@KpkHK~4_kK*UAw z6c11Y1!XZpqn&>{G?l!#m^n@Nb72@?suL%K=nhboVrY91-}! z7wW=Lj&3g&XfE%B)U+=cK`!iV1r-^D(j@=(sUT%R-L0S^C*Z}myCA2Ebb`4r=luTv zA3PtN)(I|Fz=anmH9-q65EJU7<{zy5y`Xa)dm$+bnuw7i&iIzjOkf z9lae~>4NfM^C6C)9iVdc-~(9Q7Km2Yfs}PSf%d?ImV)<&^Ml8s$I$6JA)jK%2vQNM&^q?1IGN59Y2c!bhut2Nw zgIt$fx4fdoR!uM9vMpO?7aYzxCWPC z1$W9@H=O+cAKU`zow@*=B3=4Htr8CY?X4gU0lmFGw?OrSE<_mASpnCmpsWBcnW2?0 zr~>ET4=yO0e=_m+UISevg{AWC>|F!4aVp52LA|Xf(y9fZW5w zzr7Wt0}?MR&=v!#QvUs}BK-To0ib=bdn(ADUY4eS7nhhJCP1Wmr}TpC?3}s>><-Wo z$h{zDAVf#di^UM-kkTDmvUImh1dZ@@w(d9ys{TPF1Ahx>pCzbq;tTEspblX3?*|9C z^+EpL>!7`!-~t8I3jl{8sNevHAcz4CK@byKJn-)a2aolsS`TRP(%lQP6EqS58aIS0 z1Njo<^lp$Z|4aktih%B3P)Qc};tZtXhLmKlr(`j9PX$Q?y$CJ^D}+d7)KoS_!3w{f zP$R%SqAB2r4|>r8F$W~p*#Z`OvG56~NZ|Va|NrYWkaw_+oAU3U3Q9lLr)r(Sc7UAS z4UT(|Ctmo$t#bX*-O~z5W0EkdLVt9&Oa+O(FaufjdJ%eLfW}}uTepBC14J_LxBP|e zqQx2+z9Q6%36O;#Pk_9HEhdVlf&&;H6HbtJ10=waW8x&Ftq+j^hY~C%^r1$8LcM!R zFC=IF0+)dtAhFICu-FUn$Do+t1;s=%?wAM_!4(b1r$C$v@=AA4E6AR}7n5N2fTIB< z_G0}bP&Z=fOO8LFWo)3CIcWL@kG?_bM!B?ZL>5Tv2Dg~gnn7c5U?#}f@I=Ai+XOz6 z!u3aYFQ^291t;7MdJu3-xPtmx$54jw%R)nWYGL5KIOOaqw@ zsf2v3pq(TB7VueA;DxYGED)mtU+~$$rTal^qT$k@0ieJa`>mnUCA#n?(Dn|{AW-0o z#i<}$I6&pP7fV`aBS`dx9LUM9ML~j2ETA$6toQ{xNEpKeL73Z0#2^}w2BV%n0M&os z@)l_{>O4sFxq9mcr+{M z#jO;GN5Gb)bvA)L5(={EwJ5|AP?7~Jeqjd^1})}5F~P$U7EEFg4aXZnt^y5xypRFu zfO!w(7_cZCNc4rkga7|uaDxaC{{`a%&^mek?Y*G>Xy6Man5q1&prgC9_`us8z>~oo z{M&s5WCCBvL!1s;q7L32bnpRqdteBoNKgg?gM#0SzKLMJ1%L-IvrmAcmw&qpmrTG; z&}2b2Xz?^hw~v5G;0u+jAeE4&6@UM1P!RKB=z6g(8Ker_Yy*$CW*L-d^#+h$23Se<35Mo9T%dxJq0|WyZeX__e8|wehXW$61rbL| zF5B*b*8hNNXHahz5`~lQ{r^7!G&c$o?rs9bNWhD?7SO2TZvmZ~4r!!x_RauxSdlVW zVE0r|E(=0d{~y$q04JTa?unoQ%Ct^!-SI*bWI0%(@gR6K5nNV)5>4n2{{7(g38H*? zEtdw`2Ge{HG#&6GtsC6OOly9{2puf|6>-o)3se<=mYab}mu_$isGDa(AcO~YFwca* z7i;<p6Tpn;&}cR^(kqI7{4|J_r;g&0d$z>89dHfTQ{Y#K<|E(>ZJsILza z1r0<+-UXFIuK)l4f2qd^x+M!#)^@gnq#+Rp4cu;U$rSivr#U=~|AE2`9Ik2I9gr{s zw>MsVy#p)0SiwOC_8zFf04?M&+im*Z)OA{`VW&~OF~RzQLbnUbpdbU+^5AwWv`2&p_ZLnOZ2=(bx*@&?MF4ju)HLJ>P`d*Q zvMk89d+=e*;P?rAAsJ=P(0oJya;U_ozugTDO1T-dU{pN-5 ze@*Z~^%J-m7#I$$hn$rGT8pxEg98I-n2te?fnn_i2L@2p(!kEZuw;V+1E}HHAi%&d zdxHZ5$TOhMPu~Uy22i|#*o_+;7(m@gkU13_92h{u9-tK}86b03|Njq~TnyXbzyKO^ z0IBia;J^UtqJh{hAT{wNxdle?sSG|KhGBdvLvd+R8t7h;_|&}AqV!5k5r(u1klOfE zhLqfj_=1eYc<@arU`~EAl#^JJ7@wP(%aEIz8(&bATE+lU6Q5SWkepuxISl|jUi{+5 zEwuIZOrRwp9NmJ=RtzPeBmY6i0R+96=%5WcTnPUj#s9LOG6uybd~@a_?VF_*EsK<o<_k#9I?L5KE zfO&N~sITa%5b(k-0i0MsEfeUdDCoFs3u9=8DNzM4-cIYB`U13{>B3FuV)wMp)+Zo= z{Wn4F8wFTjAFOEg&HvzQ52u1v%mt|cm4U8bK&w@Jzd#oyeE}UI!oS~D!TLh23+MQ_P&4$SWs5sgREEqY3OX}{Qz=T z9++Gf|BI;*P2i&_m|h&e@&A9;fBx;RpboDD+?E6tP_I+~I%GkIzTI9Izh)^ za&(4104H0WfEVqM*Z|F9cKdQP9t5pI>hyil9m)fl;q9C{<Wpjq9{)(M9o zEg8^3-rg|1tpSH2qM182|pFuXW<4HOZ{u*m_P zz!&T&icE}+8D1;_E3(Ug%nN|5c%+YP(yW=13@_@ziX@M_9sqL-uEAyl)UJcqErD+w z{Qv)d{fncJhEAvJ5m;uMa2Rx+$TetY>jCi$uKoWHZXIA&Fq6Z5N$R5wM&R(#(9I!gj92oz0&}i14 ztDunJNb78EI1IHD+-_9pX5m6=HA-~z2n4>+ZwF`XfEU|-LCb*)pwV=YlR&xuFlpRP@tW>^8Y_1 zUibUz1isLM1sZ=#8w>P=p0rNvoqN|eGqn$0`~fc3Ei>O`?m0&E`#R0`bkaa90|i9pN>c)<-}bh@7Do(gg))cX*t&q0DG0L4CtS2shY zAl_F2d*2^oR=|sG@!(+VbUo4S3tIbfA?QUjRDHMWnE>$h!bMPl7o8BrAlG%aOa&*e zWtTw35lG>Mz!#oSh25big1TL=1iY|-3cR=v(+Tc$gA(D3oJ*jA#?T+2b?a{eUhsy4 z9g^1B+JY#jdO_^K7YDVVS&F~qGidJsEcU@lVF}<&3)lce0sw37hNgjaP+9){P+>^e zxI^3(@M2vYST}Mqm?|~mkXd4e%J5+|6it%PzqTPUkU{^LgF4=a)9zPqR2uoh16k6LAe^97C;RQNGasr z1U3qh2z`IRQlJi03X%;WVQ&!wQT{?7!az=bpfe93rO+pcr2#1RK@#3|s1(T6-M)}i zR}3*L;Ki+Iu<6LD4&)q2lA88K0139sQybrP3 z1F93A(m?h>ys8V8f_NX2#!f=a3V2}vVIZfmzYSo=2f)+V8>qkwW{6^t>tG2?;T%!| zI}B9_Phgv%0xu$AIuWJNv$H6rP zo=~A70|^3cs4P5WAX(-J#L$2jyCDovB5*ws(CvF6@Wl_v;@kkxnoMwo@*FDg;$H;V zDNvVow)BE)BZ)JhM$MU^Zr2L|FLp!KLMpZ^K`&N81zrR~Y(i)T7c{p|g9@7EpsfIq z<_RQIL0p*!)e8}Wc&G~E25?k@8Y$3P9ujD_a1Ee50LgPVVHz$#TQ#6G-0cbpJRZ0P zP)>wIw**YX8EA_M+4|eH;2;Qqh(VlL4%2V~v}6<5NLT<~ zKZO*4RZxZS0L+96ybyp`1Jwx*y}76U|DUi6H0FxEiP-#;i@*0gc$Df0xaGpXAKV1z z2Q9G#x4oGU!J4v+5PLdZ?_}J}16||}9xVdJaNvur@8J#L7nW+WfV zczn-0xW~I)?*zP<19dlK9s{K2g(PSO6Er^AG8N?RfEOJwJ)oxDouC&PD0)C@UOYVk zitz(M-L6LhURZ>I!vf?tHK^ZEmokEu%^v*03>y7o1FywB0&Xw!?{5Wlr@#wpdqJHN z=8N5~0^p*_6cU_Z-+;$SLAFA2$`o*>4SHb|3bqxJkb7D|3c#jzL)w@DFBU=-ys&r# z8qnkDY(26ZwEF49a?s=}h-BdJ*~!4bP|w@E7bL~N-?j=op9JoDWnZj-bv!^x18!{A zTWE-$2z>EwCD;w10e*1k+EqgMNTIv?IA{n1-090cq|xpBgnzq;BRDB{LmmA>0%qcc zpcivsCW6w(*rlzYPGa^64M>Z_3pIoeyn(v(K)?$Z zn7Pn6odPo#T&aQ6fgrL=E3mpW4`$+ppckK3K>WHL>QX0|iQxG@P;|W5e+)EBd=x3& zieOC*2{02c1ig5&4D4Tcp=ts%5s?};9>GYrDOl4j2h7|90WW%B=0el$ol=NBNG^>$ zg5**gtS;U566*I0K`*ReCW4aXoxm4eFcT3jWe2+yw0Q^`Q;4+nA{wF`GR*)hYL*3n zT@?UT4o(N)l=eagt{iLzD7FJ%um?hvznFIy8p)thzs{)}z>y3hkxC|z6ue}DmLurC zgcy6_1;UphOTkva<6{YQDe-==FG1>GD1t{%pd|=;Oh8;;2Q%?NzzZgriO`q`f|&>| zK|tzXoIeDLVbCSR{QIFUMNc^(n*(2{!OXo7^kUT#RG0pOEN6h0cp&vJ$`65J80^x_ z6W|069_E1;cOc7yUR-<*_5Oi?7ojjip^jY&GZf)iC6HsgL!ot8i9gsCpu#B?bi(g; z-#4H!@E<`hs-&R92qi|)IRWtcGdHk$&`L6p882KQ76yPTM0L1fph6C_F0{S?x;)7D z$8ksl6gRwRw+3gGNC_tEyhNK`Q0s>y#cn0@)w=cn} z^%f*30$xm94DrJL&^NGl58px15OB9E5C3+Kz!w`_!3sdf^>;G8cys{NoZ;c$&(V6a zmJfE)&5P3q{{No<-96X~I?3S0&IAAd?=k|f9-kTl8X#N&QUaRvXpK1xS-RZ|VnC)o zz)b%AQ$ZrlznJ)YLF)tf_k)#o`|>pJX#`Iymn1^fWF7)-cI@`$>7BwDBMvHcVM;rv zG=f%Fb%*lsZwK$A19g%>#&(DDbhmVYH9SnvEQOpOa%4Td?2Ff|TvH5lgn^@iGI0~!x)1(Be&#)m;` z^A1ARO$BsM1sMQZjeYq4|9}^(pu#T>Li7e?#7FM+?(PM-B(Qrbhzfeq3RTn%_C!E; zFUT)}FY=(mFIu5`U&O#fiX~v#N)j}UF%=Y`K`-7qf!&wZ*$U!!LmZf4Y;0WI-3xMT z;0tM(0ZBK&WoHn~y%1HcAh!p+_*wuqC*Xw*Ox25`>mc<4ovkmx73!Pipf&IyGO&9p zNGPbg737xysLx(7!E|;{1$ib2>a`cIz~*oS1-wuIvjl5dY;p(DC$BZyfsnAG976lrRGLxA%hl8Ti5#ye@+WGzkYP>$by{Jvao412M>S z2VA-rBpjHL208^+$_3(8P%3v~3CNf^b7tj>uaL!80WWyGz_OstIgTtZ^!EP$pHX1T zWe!#R;;k4o7Wi90tq9O^44&?Zp#6tIFD8mZrgy41sbR zXb)n*3j;@(U1^<-AfXrQ_J9g7A!uPS0W3BPB$mb4?aRZzekY4gC#E=^QXeDr?!_{CuE2HWr7WHecEWbu$mhSzC62+-w4q+zOHextReZIeizXt^*hO$6KcESr0W~ z!Y4xz!m6_3|Nj@?cY?0f067;l#s*s7 z0v@nRYd!>81_TmI105vXd;qjF_y=@A2)tfdj}uhPgN9{))3d&v()q1i-i+}r6 z5HqN|6{J3(yBAcl1-`g;3S=S=a@hy1PJ3HIL0$%Ls0N!7_+qCmIQ4@%2cVJ}beFN2 z9aQK<;EP!ZX*63Hu7GR-&p3cn%yy{R(4^Bnr56-6K`(BA2Vg*ptU<~;Tfo9EChY+E z1Qc}O@oPxXfSE7KA>M@r9e9)rA`fQ12#3kP=)DMX0=}R-4ZcE&_@JA85@aHdpaZ2o zXhC5D+NlFJ8xeG%ToUwRE_f&g zDd<4LFT%HD2|92Bd?5o45O}HshZiL1AgS&TBshWsUIc+z_=0Z2c~DS*g6_$3(D-*R zhzjgRO`6#!K#EYptGgGJ7-7}yi<{>_DmXe@Pk^hsR*)&+K=joJd~wDa9)d3nAndfx z);S=R`_WoPkk*qm*x6tYg5;4}MUb&;X_)+rg<$8SdJr|6tcSP^w44X*!Kompp+{BM zagg&-J%}0vKhA{f8(^nx4}_(BJ!7?gxT5g5?j z3!(yFG(i==_z4~u66tJ}S@Hir%sR+sJpS#ipyCO%U2p}c$$1W0X<9efX=$BPzksTz zqAj4Ud>|%VxjdxD)7feOYT<4Ns{^&AKu!yIvC#tTT8KYDDqunQ;yHN5HAldUdyt7+ zSkmhSnGOnYQ0N7{D1aGoAfUS!WB@EcUo3+eFc)S3D1e~B1RBrohR(y(LKQ*-1(MUi zneIgrRO$sMq?y#&dH}R2XDTT4AR|)HH3^nbg(${DrU&GpQZGy)EtJmIJ>Y}`Y9<6` zF?3G_aiNAmlK&gXGVp+Iux*f0FzCF^MX1z^7xv(Q10^G{LC^;83j^>dkqD$?(%TAZ zZUkg8boYWRfef-iYOxpXP?Nf+g1m%ce-2dYg)qd$0sPw`2Em%yr@_N9BAwvIHzd5k zB^MI&Mfn+UhJuy<;F1d>4`#jyhsnR_Jq=Qcn#WNy=V@?N2r9%tDUp9axYEN@bhu0RP7WJEv~c2w@(FW3hHhJH9`Yk+yxJl zh;)LvFPD4+mwKS008}1L1(jMsFHXWt1!Y4}krmiI6+{KSkcV`Gz~xaZs8kGiF$bpj zL?E<;>;{*N0WUr!fgKm{A`@mOxI6;KcOYzECA_%=k_&iYhpaTM8>}|16I@KZc(fi= znt@7;pl)!{7Vx4U(#wLCM__fJ;soThpcjfJUjA7pA7Qke5^ zZv~kS3Sdw`1ipA+3^f20yrA+Z09K-l!3^Mq82}0((8$Mr@J?V0&@4+Y$THA0G^j<< z-3sbrfaX@f=fAvYfiy(|UYt$@TLNo&bhm<+3W681gB$1wjV~5JmA=>xshFWn$nIW{ z7SOu(^Xov1tUyiyEi(gK+Y7c9e)J75%-RsBS+J3wUeKCE(40410H*PUCRFJQ2bi_s z7Jc_rkQUGa_=t6&Q7gDckT8l#Fo75MVe6OLpd}u7modbhAU~k!f(g7>3DXq-)%9XK zq!NV0doLu`peZVg5n6S;__Podup&@Jkh-cHTyq7y*am5oK;-zhLlRE+R8SlvLJsZ# z4VVMu;WN-+H-lGof&w6XEvPvLaR=0TSlocudV-?;#Un`774QN&pA1t04tY@Q39be8 zam``kkc0qEM4+X(pVxren9w8v4pDIH0wi@~4QSZ+ z;2kN@u_EX&%ZnhWdq6qA7hLbWI1f_{O7NgT7x+MuDpc`{ISWAMiFCF~fEyQImV>N= zH!eVB4JiMBi`o|p3_xnZ8^)pKPj@epOX~!eti50|pt~2OKk&tC z$bJO4abPXoV8a7m*gLk-e$0gv)< zyzp2Jx`z;?vI#Vj67XU=D|A?bza;>4uL)=oJ$Q2w&+!%k&?qQqTwy0@T=n2XhVD?F z-WKpta^OXw5RuLn@SY#oV(H^8ye*qSy>8;8YCCzb{U~RQmq7_^`93w`24F|1V5I!vqeiKuH*MgfO&Yn#J;>Mh}`sPC!~T zEmJ{#)PM{I28N0k>!E9+KrKAbaTK5~8Kia7(+cW%1-|H=57G|VmQ^1OatY|X0+71E zES4AYFvCI1Zo%_EU|kTygW!fExd>zvyq|0UF?>erfx0wsE&+vP;ER*GAUi=-IfxGm zC+HvwcxANrO7I|x>krTf$_?;{2Z)4^c>F#A8u2*UJryJhA33Z!A^1$&Hu-_OM z7#d#uTLCr<9Fo0Pz=nZHxMAzShF$7z1&M-&Pe49@u>+**rPROw|1-|=fUc+R1x0P( ziv^HW3L048-`)yxe83AIMrhJ3NrnzZ;n)TZGQ#>`tu4sE&3hn&Ms>O%2VZ<}yrmVC z9vB!L7+!dT2Sh+FJ`Ra{P}+WB3Ubox6`)X@3R=+)x`LY(bQV}ZZ!bt|;ET( zEKX1@3Y|Yd$^hMv3;vl!soK&3cX+j59DBBy9T2j_yv+93Pp z5#J|S`OQO0^ZP#J{Jex^Z;6yA_%_43Y`7G)hc+sbG$h? z*ubTM!;6DPU>>Aj3)%|@ZXUikwG>qEL5p!nGm;&$?-Qaji<5slSY_agcrCCApa_ID zA!Rm!(h+z!Hn_9`CB_%+OCb%K&>x8A*o#Y$J_gh=CXg9th!vo{jNk_S3tNz5U=J|UMzjg$odTs77LbEL&V*=uu|pH;Oi-H|WJu79(v4te2E2%YY$*T* z6xhAs()IchP|^o2m)brR5(TAy{Xn;fgRVLRUD*q2XMswj?jCSP4Sd0h@Qeb(i|>$n zAL7JaoRFzQP>8=^e05Rc%0IMKvUx;Fme=a`iZkY;lN5G47C!zj15eV`RI81_G zywHI92h^be`6uwj(hX4m^g!0mL(J)fnDc^t2_*bcoE!w{X@J6Cf#Jm#NF5Jx1&Wh* zEyi&2cSs8sq8Q0x{+JHqfjA8A9&manUktiUuyHY{`U2gv*5e8qvjx>Kd)1*{gV!*i z>MIaZ!+Zz@OM(ZSkwz4KL90|i6;aTOb2C6Hz?*zyK~V~?^B*Bb602wuy(hJrD zF?uT8Xe9T59Ni7AKwlI?j0Rs#1gXBJf=c|L7hDi?(>lR50H^?m);Qqmt7j2XjdKB9 zQIao>K?86I^}SgM>k@y7;Jb>KU+MAQEoa`-33E z4s`c|MAJH3c)``z&xN4oEa-4&X!Ql2@d$eH5Rytk{W<>ay&%s7zUci0P3I-ah}jb! z)Y$>>mRV2YtQrF2M_~PaQ{IlSo3UxntLf-mBtqG{T z)(i3jC|@)-+&j)5aU6quzM=R=&l!aAfsQed+k7M)g%t<1^V(FZ-J~FU|?W) zeHvUsf;vs$<5EBj%&9H#1db?po*vT8aph^=GXYeOG4QwiU}RtbmHF6OCy=R3(7`#@ zhiXB$0sH`oY@gx?I>Hv#p96agv=E^QWMVf@N8k&AKv3@EfOfdR3QBppr%VGW0Cnpc z=7Tz96OXs*z^2ji=0mH<7l;1;e-QwZC(2Q2y{#Y}0iens+<68CK6tAo_#EnPk%@Sm zxf0?`&{z)0kf3g`djehvg3rki=>&6Mf{r!p?FA`78e9Q!;p!hw0(lpz9;&o^D#&j^ zFI*u#8Hib+$i{Z!9cW$3esIdRzF3zcyQ1So&|CcBK{{NrF1fvxF%0jYaHPQLi4vt=sS)?lcu;BE$JK~&(218C~zfLx~yvh(#+Q0Tep z1a$j~1onar2zs&c1t>rSvbexI5_@|=#s6_u(AS8sIxY z;FYf}kR?x`Rm`0&y(>V6L>-)i-*?@i9MGfpn-4I8wgAoptz+Eo`vbJ_>P^s#hYH|W z1s%}Ezuol*Xb1C~z!%brFwqa70O*EzA9VI_AjmzwcLKXZ?*zU0;s;g++E@&8kKr6} z(W(OqOYIBYJz#HxJR$+o7z*{sZn(w|FpWQEgHnR+e^8?U)RF;5?3#z5g&DSxz8Gjk za=-7J?kT-X9)eC&RD%k?=!Mkqphg43hZpe>vq5V?-*or1fHq&1@gRrof^@2}ZLmayFerF^K#Nup!P_Jc4k5JQ z-2)f>0QTya?v|+_cY=Ko@M5knSW`Dx()UaElwMFc1idhYbWOnF;QFPzrxg?qfiL8s z!Y^7Ol|I;%4==(YrZ9g9d%=V7CL{m;&=08A>G>jC_W^F*F^DdRbsyl?t%nM~5JR!< z1!Q3q$hx_Z7C7kqYDlQgnFR~gFQC(qK%vSx3o?9iBj`mPTo#lVz+wJ+CMYpX0(EW= zebtZwWl_)}L6<X^<+>)b%#CxcO=rF5-)1iz#f9ifeQKAAoK9_QNYLA zb$~9>u)fIOyB-{e@a>QLWWmNk;t-y3e!xXPfVV$`&v|*lzg>he=!FkBQ?Y=GN`6pU zcoF>x)`IcPSnK{!3cLxwWh%(80Wa1;dQt%yK|AD9L3s)0p{Y=b7i(0(E`Z8`JalRX zsMhk%fP@Y>F@OvUe31y%0}Y+fFWs&Wz$23$P>C1uFvCK>bo)L46~eV3!@vjYfC^q; zh$q0M!HY#7(H-s!N+2M+f?j-uEPH}E-1S4Z?*s7Y&>g76i_a=Bhkxh}eE@Q}Ajq!Q zaEF7E709r_7b~E8U=IHPb9g^g;>9wUVWA+4Kn_1L9h6M;|NZ|DIW>Ucivz=p{ky=Y z2E;)Q5^>xOIyL~b`QQ4@3zprGV*|t(7#KLdI52=}m=<;hhLv9(7(k^t=3?SEm*b~1xFn|hW5WC~61B1$8$XU+KUmX}glXjqe=XGBl7g2cVQIxv76 zuKWxPc3&MBK<#eO{(dWvnXCW*2eHjS_OAN>AJpbH0J&`igslYw3FICqTN0#q zIYeCGs{`Z+6O^+|z=xW|r!thd=77l}Fqy+p;#vebT>*4@3Fw4{)V$Q7_*90}yi}j~ zREEsrl=z~=l2nKYx8O$ufc+ z_5c41t*M~=SOq(tK_T!(1~xt5OqSL;6|Cpm6p$Xb3{VV0oMnQp2XyW}^pyTyu%1I; zJsI3em^omDbtg z3f3nMa_Y{1Qiyp5&5Ct9Br%Hl5ZAwuhUo`&`%&x%c`NY6Z^#q{XvpY= zKFoa3@iLG=cu@^A|3c7<`;)--r**apK+`gq5%7Wyq6jL%zr7bE4;tqK1!T|*bBHvk zlFDKPwNyb_V37pW;TM8l920}G4+Qk~LflmhS(d}UeJaQ-&{!eJtbiA%sLVHLJy&!7aAY8 zkAYg%JV<^7nHBUR7^d_<0K{D&KkkEh{6f%+N1{l61Ra7I_@W(gig6 z^tOTy9fAc4G@*eydXSXY9V!4yhXF5I!6{4wG?-HWE@8SuK?m9L1iYx`1sygk5by#L z-Yno-f*D^tnehLAH@L)t)MpodIWW9V!QozU;yP1P@QM<+kpWTk)Zm< zxWLzl~_MIUH@dU@NWm@L|sTMfewTMb(KKj_rep>yy|rQ0Pd(_xmXy~!?354e2@*Zv^SYYf zVEX^K>lg6A)8D@T|G{A)6YxS2k{}^rArT1nge}Yy1i}J#QYXkq;H6C9@aTuG3F;1& z2zrqOsp6pF0iNJ^aStK}4ILhE=tRLZ`F;US+5G_>iv*e>bb^Y%SP7kG+8_F-+gAY8 z7&Gtt|9`^EBA33;V`F3H7kRy)%M-t(rKPdGNa_VuU%nEZz6Tm> z4}eYxDiLX{JpejVs6@K4_5i5vE>U`|2i1Gr6|C*G+;P_*GiT0ZJns4hWaMkU!7|G!`Zn+=MUp3UG9b_$pP-2`~uqr+V61yd>Il?P(XL+i=b}T zCjl?yz;aM`yzT{A>iYq*ugMoQJOT2zg!P5m)NbD|plefuUhu%(i102XT{l7It-&D- z?g_g>?9YOVzbFJ-1_}n4_4Ah?1;guRch!cGGn=HM#= z8U{KMlqLT{1EvSGV^by&QZyWfRFwhUp+|yVxIvc{b-RjycCJAxGl6c7z!y4DnHS06 zgAzo#Lj^jSUZ{1!k8|r`bYys;wiaBGH6L-Xe)FPoEhMjk?~I+o=*VyZdNG*d3|^I;9?T>UrRcD)1eU5>OSP5<%Ur z2F(YU0=j*5nh&xBc87uvujdJP5rm@77gXSD1a-Tr1a$j?>=g)lVE|Fl4R(D1!eu(( z!^bwk7D-+C@c(}nGq`^N?!+5FMk1Ja!4aR<*}CTg^qe;EKm|k^JTU?0>vW4Sf?7Ku zRRP_-AkzY&_wNa$b+&>69h7#bf*3(BdLBaiL;NjW;KNYC+Op)kdqFV}h;W4l*cD)F zzz3+QbhB^;ys!lyry$bV3bLjbe3VdNmVEbAkmexpUc}(1d;P0mE?@R?r1>3@`S! zfok4XP)tBvizP5M&;nBhoP0Ke=lEeU0X~@`C`-N@oRI>+9Z&GeB&3)C^L4<{SO(J! z3jE$)P)LGS-a;Y-6aoP+oWUFIc|Zlxi*RtE437zjW&GPA!NT4ij%wGEA%A5dO-Oe+Cu^rIWInL1vL!>x_xCpCA9?P2x)Ms2FkJE z1Osy>TpLfoi!PXv;37pJ2-;-E0- z51l*$FTz?7OG>~NL!1#J`T?Zbq6J>scd$D$ys%gfF6|-Rmfg!i-4;*@ZvEy(-Ev6L zpEiM&fq`KHyCcJg|NsAkuIc;;(g-TU`573VvO6+>k`$;Pa*y4S0Tj0&_EmOA@K_y) zeTE%YSHv4ZD~)(VD1)IqH8VY1-z(jr9F2#-=Y)n{INoaW4>ID`ycfh`0dKXtv_6aaiQt|{}-p5KuyvfhU<$Bdcp1hB`|@27mJ-?_8tJ+3%W_U)3*a`FKD2$ zGqmMJe-mhgD~rFk)#pEG{QUevP>SN=-|u?|9Lb<05X#Zb)79z2x&6G$jd}9RasTLAQB=_w0e%qM&vrbp8o6J7Ueq zzyK@Hx?M!KfSUPtKVf}Hu)dZdfKrD#M&Mg4B>}2;;kPv9GAlPLu8vg%(aT!FMYXBAR zi~m7qrA^lk}yp$J*O1v0eLrFRK5{@(EK_i_E9eGz0TQUtb6dGWFS|Nj?nK*aNUBoBhT z*82zKWzaU;4-h?oH)Cf9>{dZ5{z z?cmv+z!!}v&>Yk10-9>%0NwWUAGBF~zv~-oa?$f#i)SU(;X`~?epnU-zC_yjw-vFn6 z$owS^4a~?I`k)$Kv_hI70WWkAt_DQ}|Mn2yCqXa1F+tqF-}g;gr;G0s%(y{u2>*W2 zDObL4`1gnS{?I;zkrTurwsp2@{0D9F2azDZz3FzDIwj!6PiQ5)-}gI zzYwVdrQ~b>KvUWxp#1fw+qVPUJ$@+IDJ8VApq`6vIM-? z4%4Cl($Wed1G;-b`U787!)y-)*#H`y=&S{GgwYvKO=@(+1`suvss%A==V9TS0vO?NdSWK`)+w`*bXwts)?MTS2)8)b<5AGq8Iq z$eAElgR}&6_kz>}zE}u8(?O)ORRE-ADkz@?b+>{}Qw!+s1&IZ|$b-AW0W`S39qxUw z`7iD>fE)?VCj8qW2E3?-h^2M5f(-0!1(jhSmwLQiKlw1fr;rFHg*f^2wURt;W7 z=lZ7G_X_`h5y#d`{4L6$sTfd6bpljCfl8`9pvw}cg1DgGAwRSn0=b-jyG!VgfEWM& z8-q^h2S@p0@CpS`1nWS87DNSQ%#sAnUqRxyvy}%FGp!(VK|u&IIk0;wNHFL{F*x0` z1Y|K}G=MfVTn1mLBhuN*0Wxks$f+%${MHQ?2zXHpSvmlbf00`C|No1GDo}0)sqgFs zt;>1gUj+#xe$a)Bpz5E0doRfHz!yvZfm{w+BM)jX@o%3BqJp|xLE4~Mc8V`3s32M0 zr*%us;-Cnx^xy&&rXUtGEbE?hxNX4iuj!t4)yV|<|7 z_X6nJXpnUv&J`G^+qLC5%LG^*2|C^6qyr=hT5Sq491#Z~H-W+rhPeO1A!1r#@HAR*X-NSgfHr-B57UQDGzBtXL`{M#pjmSlik z4y~In{Q)I8@LK8@W#APJh|JOo$}9np%#sC3n$XMwNw56dq1h0eg92W-v4aXK7Eoqk zU|>jiu`Cz)d7Vp=CSfxoZ=xzw^8Je&YZ@d4f7jDjm&o(ErU2ny8| zkWkeFyA75uL4tuVtS-PpRT>mMpkxS7lgC}Ag45D#6-0m|Vj2|W;3i17>lN@N>GR9} z|9>&73{=xT{t7)vX#%J;0yURfKnzg%Q~_du%BLJq11cM&Ck;d-f{2(h(9jAoOx&&10wSuezg)i8MYpkH~ zWr2??pc(;cKKrn4349?BGhzYAh^Zilf?UDCz@PwYO!IH=VFg)^SbGcVOT2gr-t{HY z**XWLvlryEz$^w(!J+``RiWwxb$!5gu7>HH0V@r60h~1x0TPSZ^;V*aEw!f&u_Cn04?01FE&4ZZ%l%7P#I7h+dFq1G}e!+z-*4 zeS!fsnBXB@0oNM?*4qm5Za{Z0$On)SxPy<-+zjj3ys&}mjR3_ysKN50qvZep7tJ7| z4n$Ofh!PNyU-BPv!2`(ZP*7)r3sii9PKX1K5P^bbzl-RJ)&nKgU;&UdFm)vvFd_c^ zA-pGAFO`IY6AUc2!Tn8mG#oh#%LU@F2m{Rxfyy-&rnFAR*P<}fKuf7zFQj$zaHMr| zy#y_~Lude1#*D3(N*uw-1r&l%tHI@GD=3-*UYtAwvq}nVCU~@$2UHVuiwLH53cUOQ z8WI2vGJu>4uHX@7f?{;P59^86lO+x>i$G`d97yYQ1$XIDr(2qTG1Xdu=bED%zaukio>7mFBbj<>E{3qy)=Sc@!~)Ms5b?56J*)IA1OzM7ds|{$KM){fX2D3-@M?M z0vUA^Wnf@nk#=PG@&EsS&}c`mj3dJnD7#a}k>LcC-5}%0umw6US1senums93m2qU4 z0%hmRI5L0|0LYwd8Ak?C?+BD-Qe_+&K-E4-JXXe$0n}&*iHFNLGJyI@Aa;O^BLk@C z0b+ZC+yEUJag=dn0CfvM;+7!yK*bGZ92r2hFi2ce#*qP3%!1fTGL8(O;u^%3mT_bN z6`>%uh>Rlxs7M5{d1V|KK*0}UGsrkH1jZMaCdC&Q7L~-OGL$728AB-03b?YwBG6r4 zWr;-wpapBW1%{?j8l`CK9SB+gS5O?E$^c>|2gavW zFeHLWFaf&PD?UFhjUhR&gdwveB|bSZF9m6lTWI&2*u$WKN+>3R584p{+Tg}xeXxcr ztvi$>tuyq`YmT&TSDv&^*FXH*UH^1Hg&7*!{ifTM1I7cdPY68j`UhlNw<|}$3!lrN zu4sWeEZx2w#~VQ+paybxC`WUZ0z*k0Cx3MyS$I zj^j-r5wKEMj^-Uah7hH`9NiN^?4TE6P^GRM#~VN*V5J}j$bin>ggOAk4tSvrRSI$d zNCd1jl%si<0$3?;H^>Yy8+6J#$P5NEh;^V~1+fEOJii3-EXWLy2;2-7s8Wz8KJ+7uHavAP0a%z)C?5;D9Oxg(8R@^g;lt6yyMq2v{k|0WMIbpb!AD171A6hzJ3Y z2v{k|0Ul7Lpb!AD17GZdDg`+JBm!0nazF-DDaZjJcF>D{s8WyvKq6qJAP4NRL4*K^ z9q=LrsuUCgAQ7-qkOOj{rh*&*Vh6skgenC&03-rd3UYuAG|7P+0AdHd;Dag!IRGRA zRtj>!79!hRb(18t~MkOK&m2Mkc9AO{dA53Zg?gaCo^U=>s;$N>b( zgL2<0b1%3r5uaUj&P!PWYKPUPj_-|mqS_~OG0aBP7VSRjesLWsVogPpn#S_#I{ zEy%y!Nh;vQ4u}d+6o49&kTkNn9iB!&jYk*;ufOCu?)n8JaNP9=gaWrOA??E#QeVM$ zRd<3e;Q7(~im5a7M|15D7XEfE&?R!NKmMz<@@P6TfL6u&@&vw+-V2K}LGV}?IE1c! z0aXr;Sxo%fU3mgteBT38!v~r@^!@WX|DakSi;d< z`-P=M__fkb&_V{VW+#xs*M_^;7#JA9It{@B3Oh{B&Sq#mP$Hgj6y%18v$Gj8PMn?1 z@M2>+*bT42Yb8T@f?gQFy&<>*avi4YpBJw`gS^VW6SUA9Y|kyQfWj_;b5O5={E%UB zZZ<>4igU9WUPM8R&0^-??)wLHXkn;8(2J$^poNJ7%}02w-@N$I3W>Uv>W&P;8jcLs z8jcK8G#nY!H5?hh@rSuy85(zSpa1`d1=o)k0iVIk3z%O#e+Euiplx!XYy!$XouKad z2XOR$Xs-Rh#^1gc9K9d@tF*q+c7*Kp{_}ztb6`}yhr|BQfm2FNwU z-GV_c*x>=A0ve}7)A`~=EQexUUS zkht;v^I|GkbLbb)Vu~LDFRnd>dEm!ORggk>Xy>3RT#Kae52P*Cyc3k28A{c5K{SQ_ zd0`IL1X^_t-U3*G(Dd497w8ULus;Pqf#xdsx4V7`co7Ow0-6cp2Ybf_B9PYU`s3wf zP`W`0khEQ}1h2LO;wRTXFAjc02@ocP39pTIaD!8&>z^01KSFHv{Sx@%{u8jbK?MS2 z&)+$S0La$Y3Ofr<&t_;nSt6d%0CK>D)3X^e7(kilM+!LMf};XFti;h=!&SjhVhT0{ zn(V+i2sFIs%h4UeSOHfY!X?n{q!92z*cO~3UwgxcW?VU%_Xu==8nY#4;JuUl+e7~Z zWkGgZLG0;n;Q}duYjF_}>Gn_vd~wVMY#3xMxMVXVc~9ujbYz&R>B#U`(~&_<%aP%w zrXz#DmLtOsEk}5d8@wJ!ff2mE^Z{r+kOye+4^(P>UX8TA)O8QYT`%%JfbMAE=;rA3 zJd24{{R2xlmEdTf3LI`yTA$#K(m`aTGJ5dxm(_u!wYFpXdGdAsV>C805LA~LC_0Uh;acgc)+;=JOcxoC-wzj z_3hHd67Yhl7Q8s>Wz7Ho|96723nV~8USz%lmB64wN4`L}hJ4}Q@B5|sr%0_JcsH*r z$8nblpaCz2*SA17o`ILpJA;!XXtXY^(=q0S$~*8_9sho(nCug5fiF~GetH8Ma17<> zZUr$qog$j|f*5e`_`Cxp2$q)-g80tI;NagM7-M~?Ru;4~1~jk|%F*o<(R}KET4x9c z%Zuf2K|VMEX&(rJCZoGKz-CDcOhE0$vmx zg2uxOkehuux~GB|oq-9>dqE7in`gX*xOs^H0|PkLu^bHrT9~unBgOh6$jzZYvJZiq zb%6=ZC;z8)`Y^G)`1}U!=GR=^p&ZAZ5()M$AU@IrGNG!gT+Yz9@|pjAzfxGH(E z_YG(z5qM9PW7&)KZ=m-`ce`?=bq1upmADAWEWni@gy1)1{|HPdzx$aFhKN9;b&lYxt@=K0n`k968ItkZgd)G*dFA>k{7>U|Njp@ zsSV<#vKOyjLnmP%zDj#>^EKoW?$8%6&bBGn)z2utBjGG?V($ z9AqzZH)vPI3z(z%TmFNi7<8rsr~u*#cyT5JlnX#9qO%cH=DetW{r`V2_~u}cm!YfR zr%v!y!jv_D5OD?nvmEovA$TV3+B2^Jppp_8&FRo=tT!F zEX)z6W$-aDyxx(;1WL0VAcq9LFoZd~L>9ahpYa_tXlMe(tA>2gW&{8JK#kT*C9>V1 zLCx)gEEp=;`4|{pD)BNfWU+LE%HzwMp)px1mc0pjlq5~6$JSOHMykng8dTk z!lDKw$%5ih4_*d_*9M?YM(6=Z|HCou#r~Jzrgh*8wYiuc7UP9%6%GZ*kLw#~S@s4r ziwr)qEZ6c@G;8n`89ASVm*?|0H@Jy4$f zZ(g8lf-a?XhQ0u$F4q@O*T3N3@B0Gc`ZAE~7eie?A+R@e4yx;oAg%``sW|~JzF300 zl^~Bmb57F?%$)Ox8=9uE)LWprFr#kQ1N{3vG+IxVsPgXzZI$Ba?wJ6p$-otZ%R~{V zS3I&_D1rR(dgn_!(E2S#kejzVl?A+5y&e`cvfaKMfiJrEV@7r~Hv_}VGA;%NP&FO; zBe!?FZf<@P^Jgf?;L?I z4jW@;>Bn5qB-8RD<@x{rFY2HF|33k|*Qh1n#i4ajHOznG62?fhFB76F}-f@e3_wlsGXHDiaq2!|R4_ zc+T$Q$IRLHI2jngF>`SyW~MsG$-n?AE;zcuEwq3ad(fgYCIXbIQ1fmNCj&!9!*0<1 zqaBd&3WIng;Dsz)yBIj5fSb)}olase9zO-uhawPB&}LN3^5bbBo1(q1}#Sw_%K7e0HgvmXvDwW zNhSc)ntHMGI3z)XCbpb1pnhZF0c8`^0@DPdH}C~}IY<&U(8WQ1W&jn)(3pC(7Mgzf zTi$_64aRO?(4bUW(2EsopfV-OAdiDCZQ=-g@rVsG{TyP4W)OU(Qf*WgLvJr=xlmv) zc$GM6xio7RxKzzzf-Hj%co7Lb2$6p~csnLX(2M7jF(cBQoq^$XH>fEB8r>-ie37&o z=4wdw=(HO%5QNwn7+zin`xdOT8{}iDpcmJ!AsY6xZa~>5K(#YJxRBZgk%v@VW#D{E z*vFtL;lSRhpjl#6AFtR6_c2H^;6*y*BzI6|g%-wNCt>3)63AY|wmq z@(V~WYV1q0F)+L|VP#;*VguLhPho+@-y+8fN|T^XoCmrC6@p$!orWYgUyja3P#^0> z1W14H18!_uJSfSLd|gDe0Q?cLCk!a9UCO5n9`kVaj}3(-fQ zp_6V`P`S+$_~IEP%E7WuWiP%zgss5LWw z4WUB2Y9Uvlu?QN;yA$}rWCtwFr-G*EgI;`wtkw_U-|qSX?hm6;n@vYmCU~# zyk(dp;DyZu%s`yO%)sz^8n_NwyB#wGYneec0ce{y2P-H5174IXVg_J1GXulRA|^=Z zfukEb(k;6Z9z?f6O?gmjSMnZ6H(L4!Elvh?e864~eF5Dw@`8WA>kE*-_6L?(AF55x zV(100{toEv1ucVz762un^ufP9uq^1s+DoX(>MnRgnMn6kkaAEr3YwNo`!R!IDiZ_4 z>n6~!0tcj2*{}@i_!3!g;7r(t88`_{3=A);K?C#5;IbQ(G6G(xt$^y}Z;1yDD}qm@ zJJ5Vc3{=oGA4m&$@#MQDs2>F08U<>#2fov*pT@Fa+d_S2*uYB zuhs5`E_vP_`UYfnz>7o%kTX#8rz0Z+!|Pq(L2tY-!c%&$6 z>cxz*M+^)MuUCS5D4(B#IHxKd0t>o(LHtghrslmM216-7WGF}gV$*B+EH=MJS;~f!es=^%|89+roNZij6vc3w$c5`%O02NjswymQh z11LX&*rtw-44}OmAhwR9BLgU@g4jxqjtrm#0AfoxIx-}I&+bYtNQJVBlT#UrQj6o$ ziV~B-jFeOeO?!dVoYdUZypni`lS*<67(m0ZP#oI*CJ;QPgk_;o^Dh?Ah#crt5su?7 zji8;K46kp2(-l}X>d`LEKiO(U_(6x5xN;nCnE>vWfRf~Ov?PgDD+{vL1)$^$*V?!N z$^{KvHG#?=5Ffk@2)vdXR7`^=b$5V-K^#z%8$7%W;<$1gZ#V#x0Vz8H*-C5Vq$Dh3X5@O%*V`8?3j z3~Uzi%M0h5ur>=gz!1|8@_tz!zo< z!R2`XNG-@%p9vL#FCP8^bs#{CNI_@N9Cw)jiO|L1(hh71>Pa)rKiFz*pojD{@96?Z zC}@ZQoF2NTG=c}_5#~g0~3xhoVdOc{}SXBW-NfEfzXL<-Or$BQdxNHO! zPu2%(HDS(%mMs!%!NnBRitfOI<1C<|REF34L4NZn2z>Ev4Oj&zg*br=KX9*x6_k(y zUPOk2iYCwyT=PzFT7s@O1F-{M?1pLuMLI|XlPy!El@#_jm6Pmk0$vyCey(>g2l%w$wC@}}Uxa$UvU63O{ z2|D0~&ufT)FGu4+P__tsu`3H4ub{}bVki*@hg9H;l-2MU0d=lHbC1mx5ey~#;3_5} z=!G*>fh$LIMFLDbA?SrRL>ycufom_+D-fE0iPVBNm;HdGd=`chW&Zt;n#gAYOW=z) ztHAa`#o+S@JHQR1^AJhMtgTZ9qyhqGOE>{4525QfvqWB;gJ|e<{nK3g2VM_yTm$>~ zwRbltEAVs&CUgd{bi492A4ur-{nP2l1G*aHP)fJ!pUwb|ZqNZsJe`38pf%;&JyHU@ zL;nQ5*m?rgYyn4)@1IT%;{%XI0PE7x-4xpW=0(KS|Non7Il!ad9L*LCrA)8ILBS{( z^y2SIuy;YFAt>Q8SigCZm9EKvvL2Oxzbojb=M=CO(1Af-9GxCIFFsuXHR*XkeSmI{ zoU~3au@~pTLZIauzC7IlES-TSFV293TsgWqK)0%QJ8FRY7t29{pg{%DlGtu9v$Rf+ zycd(MK<3uEnYw*>(z*lG(mDfEUeth;BJ`W2bvos|NCye}@_>39-A-9)osJ?eLcl^C z-GUG!`O-Q)B3{^o1i_sgu!(wUofG5C7#LotgTxVr8l-hLC4j{FLE;E^8Krf0q=3Y~ zUj}&<;;*#s0I{^rK$aJeF8}{O!TQY$t2DImLIfUU{T?Ac(t6=~V%7`8)pH*NO}vAa zfFLRfEbECuQD4fwLqLFm;dK^x8Xnv$V|)<+=|^_E@_;5ogFrlA4$y%?fgCSDTe87X z>noDh>A~{?w3!#wh;)_cbP{+W22(5387T4sv^@)=Rw1p^L*fOf9b*bUVt~$crk`T&aUb~XT&FotIKS3vwm;`mZg3dnzA0!1j_mBg0Ak=CPP=PD)@;Ru-2?{^( z(77wh)G7b|P#(|?*S*XP3@@Vo{{R0X6l6bWHIGKX3r)CXvY^gIcc@4=OBZw;o#O@f zU(j@bA84$A5#rvTGhpu3%3|dQUkdyTE+n4C#=jkO@$F@p5PypxGx!qeFWs&p-8>Wc zL7QYiCnR+I`wu@M0mKHyF#mqnFKOMqATDToF(@csbp8QPsDtOB!3Jy>40=(5Fn$xL zlgcp(iQAz%r3@d@T!{#H;|4{8L=nr;sp(5^{n9DrIX zF9Kmk+_(rbizVR2dYBQV?imbBpa61(+R4A&$py55^$R3*@Nf6v34D=o2&50ZW9Y>a zFdID2|H5M$G~h}MK?w@FjBJW8C=0yU{RGc6kwBH#iJwAmGGS}xc$m?!!7dpI>dWMp7ysATnQKKakF^<*h%lPA>I(4|0u zGB3_D$%z%oZK!+F4enLD2%{4u) zV8>kmi-ML4q57a^zc`^Ox|Nk#0 z{rvwQmj9-~_2+|%5K#VWh6}}jvLvXWDS!)kLPOCNTv+&if%YA~fIJ3Tc4vK|RwRot zixD&wFBACUx&&z1g23x5AQ4bULMG_NVTc$g0`Ztqf*gt*pz{Yn<#o^t(Vw6u5@INfiF(ORe|^~K_@M|DF5;Q|BIp@;9>(@ z#JWv^rlC?{P+)+HSYwz_iBAT@FYr({Xz3ddJd8|1Yie8#0zmWCGJ!8Hi-W^}e}AY! z>!lJ2kR-Uu3CLmvof!3EGejPgAVR^Rictg$fQsPBpnQHEv{n~dbgrI^a2jX{p+?|~ z88D%eWN3tdb0JG(T6a$gu8UYL9br9lSJ@%#HhX0(KYbhaKS$pyzd7uZkt#lU_B1sN#)7{J|Sn8lO@8rpZ2 z33#y!s)z{`)u1i#AQuK@@pXeF=Rzc33xQJ(8`#uNh}g?!NOlKD(A7!MP$-GZVgmUH zlpH_?1%f6JWP)CVKs14+_V>7gq*_mw>Vu8t0-YxK!U&=QbjyS57m#+4UjwuFz>=a6 zNw7N@v)I6HV}yvk3v!m1!mes4_LTa$Ao&gsEr*2SGg~EhN1iM{j(z-pE(mH)V zys!f~?nT5`NXmf}VUYS*1QxQOPy+?SQqbX!dJvVM6tBg50uD*!WdrWg4X3^ zNq|Fny$CqHy!ieFWC5&<=il!n0oumQ1x{?f1|ZY_fmS#&Ff@pDhqi$0GZVOj6}o*} zx&v8)KzlrOU#vL-u4B4=TRI(CUi5*M_=0LSu@|3@fh1T0U}10$<2Gff{=fX`QZTzyq3JdR;=F zfG!={?t2EZ-xa*zQleXg5j@@tS~MBLB>*06@Ahrs-yX;WGOPIjXwF|I@Wp(2Q2DL! zGJ}bM;l-uT|Np-@3nET{*7ZVTd`>^q8;BV1gbTrAybLY`kMU%fP)R6c{V1BZTzdkb z;qt=65#cR|41~HHAn(J}aRj|kfU7(4S{sx;x_x!hxvUZL%9>!60WVG+2kQ)Y@$e{! z!O`j311c$dLwwhO8+E-tu6sbu`xBtBIRl!LbqMSZZQFU5iSHzXMAuWcsl#t1Jzif#=qV51IR9LT)qg}0rnoqZ{48^;FD3#e*iaiL1_fk z2nIPFQd4z%v2=P^yx0#qC=}7Ihq6Q_bUSi%I@!Ef0G5UqH2Wbep02d+0G_nYK$jQ! zAoE{N{{<2#PXb@8?1qIX__CVpL#*&-B*@$souDPdARVD! zK<5};33ySCti$(9_C;1`d#)w)5U2wj4$=X>!7Pivw-;nc;EP}m&_E@~C!poKAU940 zEqr~U4N}X$zZE3f{DYCduNIu6dO?!>`=|JVbhlnAl?FF>K!O1;B({NrD6JE`hW7O( zkQ7*b;ETUoVN#$Ks{H%GD^~gUw}gU?IRG)H7bF+>;v$OL*O$O<0!>}Lm=0P2%)cKz zp~b(y#}%Zx`6nYp_f(LQpcj+jx&sm;p($BHcV)X`PNTFC;;>gTfm{YtReEE?7Jvn-Pu0422h0K`Vg4 zHi3dH=*815uy6tKK@#8q4|pL1(GERM>}4@1`gVXczqA5%(V?B`woa(k{4F`4=-Cb$ zePHZu1szZn@FK$>lI}qB&3GCeu*M#&+J`hhL?)zlGp2PqF}+ZH3#zptnGAHk5a@i1 zXizvn6!J{q-yY}?^g;^a6_h}8c=6=T|No#q6RO&OZ@^7>G_^axOO3@qty73wKrtWa z@L~Z-9AqK9z}W8O6!2o@W^mY{7~=Gz7-S(E!VLcHflfg$da+pO^uirv@JmoS>75D+ zvLNuW_u%Y4M++Qw-J;-;rB{rdU`981R{muSXbB*6l!Unh9tGK;@`JJ4SBHQ5#ATqZ zW#Hyy5F4oR!-K2o2RMpc`xXcH_+9MQ$Y+!3lYrZ-w!?j4rKQJKo;vmwYi`U z7Why(kaF)GBjW!LEM2_$BE2n3ry#WuKr!i$LxI+X!MnZ3Hp-_k-Qp?W)7S--E^aVr?2I z^1!YDDF?e0GMfx$LajyC6%xQ^eX3R~iy7hS-VnzE{{0XQaF;PbUAF3F8R$ecl)C2G zMsSh<-AE6S699DxK?k!1zTko!ISg&GgIx!jgni-k3N~Q|&LbF|UIEai2+$E^pxo&z z5cr}IVhMD&&X<4}3~kUPP@>Jh9kyBk+)W625du{VuB0Hf-^G`p6@)gBT2CRZdn#xg zHLX*`@x}I+pq)dIgW+H%y*RW1<|nXoCxdjq3<2HopbhJQ)wjYNAh8gfUSBXS2GP*u zx)yYIclAriumETbz#pc*R21VJx24}%>#BjANTIA^kePAv!Zp+FgmA5=8)Z*K*iwH5H9 z4t%a6_<+J*$Wco#c6)&{9RGf>5>SU|=J%gLpb<*YL20x8fzHj{z8-7?NHVRn#TO*_ zqWJ|V%)qV#&EE&~_JWRX3VgwB1vU>fwFjO^dXe=4e?0Sm;u&;|5&!mHkiWpKRFK_Z zPeV!>(3l{o2LSQSeo&iJcmpUfL_kY(K;r~0kR|}=a2UoH-$9FYnO^+=|Kjg+@Sp>z zOTE1X+*c2HVc86eH5+i!vIu;!4KAd~zke#o6|I+Q@|94`ScGT^2agGx`|FYsRY3t6~S1Skc7Hg9slg8Biu7{5Cfk)$C+;|2_f}mhK z(**TAf6FRZ;Ro{Xi_IXt;N02s4|R4LnZDkZ#RT)JJmgGM&@R6hn<1(oxfvR8{~Mu>D-qn80-Bf)wMpybdLaRF z+6yBjU$DV^0U4qP<*ms^7pESBiwy9j$-H`Kg5+-jExdcN4y0fu zh*$z5=7W?nfZ9Cp^6Eu4LJMfd1DsdE!8rwdf^N`@RWJo5vKbjppm8Vg9hRU%H1I_) zOtRD}goM3BDl}q%-KnW4NR$q=rNHBeYB6RPf@&BXBp+ z7d*TSnnn?s(A@%FpbeUr+y#<-9Sv%~gYwnvI%p6;vKpw)>VOG>&%yix>Jfl4SL?}A z&?XQp6Eo1#D6rs#FUW9^`@lgGD$&i;1)0IQ#L(>{D9}9xoM}4)4PF>O`u{&80d%n; zcrNG!LwBe|Hwzbd*=zPihHe)Dfo>0%z!%+c$EbrM0^}W@3EhD_{M(tJ6C{wzgD3FC zhZW#S{FitB{{N4)feBd%=acTp@S?;Wybun0mF72h&`LPaG^+KR7dzb{ll~JxhvSE& zL(UKbExtXI;mB|WdOq0B3`d4NQ1+S(M}{>}_S_6dh8a+HZ-yg74|GjjYX)Q;9B4gV zc?M+d8;G5q0a@<`GCw)PkpWbEf!F~VjtrooK@i(2197&PUWOwBsCy>Iz`&rC;m81L zUW3$#W;il{DrgX!Bg2s)DYK+F9=g(uAvYyHB{MB8J}oCPogp!)I6gPAq$o2PbU;`R z=+v%w&?2;){BrObx!lx}#FWI6M2PCV(wv-lRH4k`-1yAg0)~?OlEfUyDmDhFO;BE0 zBG_04kbUtW`-&1%GE0jQ{DRDq$O(?B1^v8=O_dz=gIhqfY zfm#^N2TMTXJD{6uIJ%+R@g6M$H9!Pj@`D!Vav+TBf*U8C23mvxGA-;rsEm5bz`y`r z=maw&9@7+y|X+3ewf-RrccB zJy4;m06IIBBdyc1!9h zA*#T|w$zIs;N`fWbvqp0EnOh(J0a7D9x^ZPfaO9#E9km=CV=EXjti7~aTqLtY}yV^ z2GGeBP6{uUgXNG71oa|4lwS0KC6G z7q(zIWCOv@(|Vx-mOwTQyuLrJ(@EzA2Urf-K(O;X$)nC10iF<1iGWyc+TKojaOIpGKRqYi} z1>o~{K&O#GGF(1Pyu<@MQN{qe=O&8*3L!ZjWDFB%A&HR`DByHDUB7@DnO}llB*Jxb zbi00exf-P zfu?=JdutnZf=)Wz0TTYant#8m0%(>>ft7(_Cn)CAI(@&q;04|D3K}Z@67-^QA-Jsy z8dmIf)qu~by#g)71(%hef*ibC7JWUvfb}W(d^)I8)cz9`42b!3P`jrXA_hu9q2P6m z7_0I@rpSR?v_HCiRrt4yI0k`cGBpBTm_ziwKGo|xC$KkkMNqHnjR4R(C(xGSURTg< zwx9ux2Vx*=Wk9F+fX=8{SOSZ@0#LscbUmnCDNG17{m+oa*9~&ojUOO=0?^4*zHU&P z>kD<_8Q)nM7&3mGo6V3>aeg+#i=T4f<6roOw%4 z2sm0Czk{RYC1^w$f3o54-2-YgFhaI)K$6Z2qhe@W^S8_dh5dflAKkt(-6D;hp&k6& zT|w9QzTkre4QOxT4e%Y2kV#VC37{Rp;F;TB;BF;&l9YeD?-o$#UY`f@DtKW~x9g1n z(8kvc@Z@6XgrIKMj&2Xo{%5$h6W|*{__w>B3CNNF`z-w%*k}CPL$`o@d;%u!4-p6N z%03YE;z1$Q2PM%UA=d)|FV4<|+6Np_L1&dt z1im;55$J{*z3nP^j0&RF;l*;0R`4oinQop5&=ai!onG{Vl)VI9c+l;t0iNdrFBpIE zd=A)`pqo@d=hU|zsB;GG68C)*_@W2278o>P1v-cpe4I~)A3JDNNh9Eez*lIn`u+j6 zF5d*bn1?Xv^;YO~o(5z(uNfk>6Evs>>i_uaq;;|gzW4)L#S7`T{3v#0c(KO{+;3?- z0xDCj-@M?lh7`D_9a$2`5D4qX#@$E9GH4JXuzXmZc zb-OC0bqc)rclrPSEH2PV;Gn7h7w7Y#3AB_0vdFqr5InU9o*(6Uu>rKgxZ70$x&-hn zXlGq0q$9cAS0eBQ!)#bIf61zX#Jnw72(rxXVII`<5(7~0w)JG4XjVN$*|Ax0ov(#K zf}lDw5g`asUn&nSHvYU&zx@9{xC{cf$R$C}dT9?TFerdf_s{tx@UH=5UcrX*@sz0F7OOVO6-(f;u zUJHZwL;MMPu>+wFd|DUygsT@#U`K#1f&BwA5OfAvKV0DtkdW(_fGoxrQ4n?DLBD+v z1)yRcw2V67MJz-B}fl_|@Xx_)bTr7i%tpQw%8D zotOe%oV^I@dvL&H`#{FL<~P0sTJ_!;!1SUPBmgo^fq%PTP!{MQ!+;kSAHn&$+gAa+ zmZwA(yt}Jo&|>kRObH&u*T+E6$bv6N@fOzG|)<>&d?7pL@z?; z)Ze_|0x?f^hpK>vM*m&_JJ*$mf4c`;;EQ)T&`<&;@KAx)OQo<-PyvO)`3vBIpHPw3 zOQnj?-~mf)y8v2n4?5yWCJi(Ov<##Wl5JQ(CB96+3uZ_-fm&N||Gub$*~i}kI^aL8 z+x1IYr|S!2nDgQ;fKnZ3qhyUJ_&~!ifiJ2qfP)ld&}-!^P{-iQ_gg_Pk|DyNB0B5; zi?3h6u>w-`!V+wVuK@VU0TytE0&m)WQ7|2>2%NIEfZ32N5s?iIg%TlfpAHgxY%eaH z2PXm*a3bJu1>MGilJP#gSa%+g@!q^x08$Uhcr4)5`N9v$7A2T1s2T6Wi_G(gjQ8e6 z^m$MaAZ5G{0WZ?0fgKK7p9af#EC>%nGv0@w7xoBsu#ER1@C7H>5ul9s0i5pN1icW0 zD|`bIf@Hjh5J7P8xWd>MK+*Xj;Kh@va3_Gh#t+(N`{Ep2^bI)Uy$N`6I};X|kc{^s z@I?p2FtGDM%cR}}y_ky72+w%nlofLhDa;WWk1gm$5=09ua*WS`Q!+T?u?4&cIR{Q9 zFj-NMF|XknkL?8uNC1|@O2t8^IjDfHW(KW%;|O}O^({Cjb-Sv73-c22Ql-!jupBxK zA`QxdzHdNvFI=VuA_KCwJ5(aAQ}D&Cv!Ib6(2-6uX`LP{FS^eD|39Jmh=lc<7we57 zl`E*n0>$9^3UmAkR#SmG>b^f-xSa(ZVFg+V*eUSB^6dZrFG9|Oz3(dkDo0+Z!2%tW zk6lGt55Oxb8Bnfg2RQ+}KMAyi7j%t!>J(UXe(83V0sEQ1wFKOZ1SP#vd2nO>&x^BX z5NY$ri~VOn{aatSvKmhQ{jOg?H(zjqGRF6toxUGH*%ow?opA;<9iS%nKQF3KjLbQM zmfZgYyr`HAa~!;$5&Z}gLaJv15b9vb{ZHTvDY)0*^^7`PAyPf_2_gti?qM)CIJy4` zc=2@-%)URc1ra+d)Y zF{Rd^k`fZ5B@i9mz5*a+Zl}Sq9V!4CrGAld8k*L@a#|oGUh{$K7y(clMhe6S86*Qr z8qg}{>MKb4_LYHEF>J^c$u@{ID1C?i0Ofdi^cQb&!FD4OH@e1E)fIt5NCf4W@- zK#gorqZG7y6L}v;325uppKf0PwCNiD{Y@`S85mj*ltRwC{qf@KNl@QF2~_xj+5yi} zVX?>$J4yD(i;EyNFJ7Pg|Nq4^5b^LN$N?Z{@^nMj*OW+sI+~zCFA@IjJOP0(=E4m! zgN$HdaVyv=WTmcuz%74pnZ)Dtf)%V(3}od_&_X(x_}dep9Gwiha_tC*^_v&G z`e-pq#C;m*`{zKB0KH#>sQq${Z$KMY!+ZCd{Qv)dr!lteX2-#|>4Jyzs{jB04_Q2M z0J?YrH2>WhdZ*j z7q?u&_Pw6AiyJg$4nFBITUj(PUsQ?3FA^XIf}4;Gpuhy5wFn8@UY-eoFXS~KLA4olocV*G7x!TyQDOq# z^6vi&vBHUMJ0G?D@@-3WZKcp<3J2c^d^;9eg%1~A4LzksGo&VvS-lR-P@;y`

CPgsO63`y@fEPtFAWJ~UBY@5;Y`s(`2Aav(?@hz5lK|jHVeKzj|9sIz+-vVlNfQ}-35cGl_ zW)*)+HYnCyK}W=eK)spar;=ZS$&p#qzl7Wkqv z78?%f*c$4LPQ?qKnLuRe^!)%;dK$JL$dyNyWZj7 z?x7I~$won-QUp9aAD9NeaIrUp_e2n6h?t{$BFIiq%7X>a0y#W(MuP10fflT7uplY1 z0+|LnY!h7g^n&XwkUs)nY&rzWha%X0z%2?+U!bF_t>9)!Ku1J5VA*@qbTxBIZ7Wg~d3pcW15cYwEOV0Ti52m`}Q&>>?m+sXo8 z)WK~_&w`xbkH}prQ$Jk0z84+Skbu_+q~|C`fP=O+SPg7+!a0K}bVFrem`N9kgS?r*s@!}B7Z~QHv z*`Uj$T|f=2o!|{|-Jy5Dw_||vCFq_Eo`4q*TEP`MsG0I21@5>MaLj`e-+m9N?kV8r zO;AQt6a&KxdvMo|B>+wGMfh=WO#zMWJN)|trMg?dmv)0Q4ulI1$QN_uz*RaVA%}oc zEBL%#WIKDIc7kg@Q0@tQp~eqNH;}CU>JKCC;=EZ1biOI*M1m6mFDA%??E>}TdqJC9 zU#$NE8aBJbzu!r!y9a#tb7wE;_;m1c38#>>&Q{QR;TIiWK%nF&!2-{4M)H zW48b6L46|dD&H5;pp9@KE3mc6x_u#m;mg6l-!qN*qV=I#Gq6`tD%uV;kUPQCJ^b6j zrUtw)`2wnILEBA0OSN7v%aZ5c4mru-#m{hPI^u6x0a~HL&c7XUs^Sa&7I1{7b%G7a z5`mlc>@%`yB)C=?W;Qr(!OatB?7R>%fvkMr39|(jr!Op;!Oj4!Jn3`{d0`2cCRJ}F460Z}A19t159ffTo( zWCALtx+g-;)oFbLN+dd<)i>Q9A!(hx;D}uh+Fb{3y?uGH7_>!>1)RpfmcD3;fCg(x zG`J)>2)dINo;~@uPX!qf)ZGelYyh+X(A$Dk0A(?BLkK!-8G3Y{$Z7nd8skp?OZz$p|K&fq>9IFLbSUr7bNka__MTF^cBpwfkZ z`&1AGsgVvoVCcmtyOA4Ec4)5e1+}pQUzo#O1$X^!(7EWKlWEerJ*2=Z2|j~%rGeaw zrELL9dHVxPS}*bU&445_ew20zL>r``(p1tNz{9_vDfkZJ^LZJK^SOQ86 zJ`+mdm5mRhKzE=5td--+(e2Yw0$GK6fT0^C=?I#7%09@(?8E|Z{rYlrPZ8_@o%0VK zAvwv=9l|Bj?WNG^2s%fKf4@^&^ADy{Rk(V1YZ=m2o@xUsve`hMeJudKY_b(B@&&xj zYmk+rcJ-)POHe(g^5=#WnbB zPjI;mIVBl11&yVB;UES|i_kU=A}wZy!ZH#p^}po-&7g7wyqL!dsxVoyAa@vHuK+t3elAxNR0(3GL zD9FKiq6uSXlh*Ad1?9i^4%*NLF15daM)A=1#DmXtwLVyD2=M`U2!aJ+IygIn zMlj$#yKp^7(Y*y_2x21WHVx2ak6<70w}NJfK%<&>(mDg=UKGCtEwcvYG*FTJ!XyY9 z$R(t813(RAP@)3YC&+!6;2oeK#L?DS!v#t}chb6hL2;PY=^^*xF?dg!45+&R3oO?! zFV4OJcQW|*2bO_ybI$~D2P9CSGxP=|=YrNHb9A?0T+0JK3Ki4>&tQObcfm*fseq3_ z;^5y7=^R4S?ZJl(@P;?IB7o;H$N_=i1Oq*nF7SocHc;JbgT0Y@8FW~C=#8LWSoaPz z4ATqk(}N3q>+N{LWeO()=nOn?e-pfV8rF7t;qn2LH<4S~O#!eNBcrA5x)!OTL+?ZL zfzD`0YiWzXZKFy{JJbOb3OHKYeH>^lZFYZ{SBY(Dx4PnKY3p$?FuY_1oyX1wZfQrr z{Knt%9<(+DG{~Tm3Nipk2lOpSRVWAOK7iH(b)b{-L0xE20`-|t(jCat84Bt*yK;ce z$p-bNTe`r>)ZR2Hj2z+Vv3dVmr+L z{4Jo83Y2NV)nlCw)FAM=@-AE`mso(?yAMFsr-MSL6U%E|%qj}0W(2jxyPLquJrz1V zSU}E(a6MQc^y0T4Ebe^K#)}XIaNvup z&Y<9imKKPr=N()#tm-KO9i;Bb2JW4@a&$v4R-6V?$KS#Xn*0C_(!z}g_uzwGd|C^# zLIC8A{T?N)C+l>eJ^_yngfOCB5e70F92!9ioq;T`b&&%av$R1AYXsMc1v1(JE6Jg8 zz}yY(c*0c%y%5?Dig=N3*Bh{vP2gexW7uhx6UZOXphC~O!K@4nFSS6&z$4#BS?&vs z1O67!8I-7HHE0YLHTlfU`S9F$BWQ1a037| z6b@UxoLE0@KF9f{!_XU)O6u?ajutPDX6kedUE7p`k9SR+xLFvf;SA{whrCnhO zx^4rP72pI7at!}|F6)D}CRzVMLsA@&0koYm3=9mQ#dDz9fghPCK^G)7aCnf>UufQhlncChLUeDK7^Imp!~oQ@Z$ecP;f&#Z|J6jPH0C?Nj?G<;QRue zWbF=AfR`ztt_TOT{2{L^0%}a(03VTp>Fk3K8DQ>)+X$_9p#C^+fhU84b~Zxq?0_Wj zlAsrC9kF~sldlXtnfSkt>^y2&yJmCfE>AfyO8r)mx4znZ%q@R56y)eh(Jr2lJ z(rcA&-#d^IS6>$6c64^2HOM%UbYEc4RZ#xeiMB@nGnDE z4es-{J3!Y~clv^l_vLQ^-5dexQT$2k6adY<|4Hlgs(H}~J~IJ4TGW^XI!?9%bmJ5o zC=UNLAF2y_ae^B(KE?yuzVs)pv#|>_y#^YL$r1poX*|>eIz-~dLR4j-MeHwh!HxMp z$D2T-9pL$E?f>AV!=RO#puQAp$=v*ltrm2u;SZ?mdYnLKQNMT&nvs2dsoV7r;;{1< zk3f6+SwZdpKaB^Ef!kv8P#1tyrgcsLm9{Td{{!_%{(wsDZl|QQ&c<7y!>gu(r+d3Y z|D<(x-2n-Jj=Y3<@E%B@7^DJf&;yV_637v_iqYmDocz6V;Qg|`KcGPz;vw=v7j&+` ze%~M9HPPL!f6_WbJeXdHLq)SMvUR)u>Fp5!ooNj#AVK3}B8)FS{{^kKaQy+ko$*g^ z3l~TYc-;EnLk6%Kju+=~s=4?Os$>mR2|PeWKz^BqF4_PRZ9o^D1QN}Higx?{>7CNJ zgo%Lxy!kEr1o*B-7OoebU2%1#i?}|u#kHG$i>V=2k7m#QOx+ojyY+5^X(GwuG8er2;{sr|zLH8-I;DHo8 zpiB?m&$EOJe4lL0*Z==_t^@@zNai#0eX^}7U;l&dUSxRj`ZuWAq0tS=*}Wh=$6K#_ zgUEt{Yw82&k$hy0`wl?6vR!QgUZ}!F zRY1iCL$@zzn}A)=ix>x3rDf6G3J%N$SWyMK1*9A7fyRTNVkq#%em1ZdjW0ozrgcsL z6>{CaB7xnZu+xn-0$-f?0`i~$IBdZ|s{ZT${})cbKoJM(V@kB1tSbSnaSk;IdNCXB zfJFZ7t~Q`+biwzENd&z(U=Ma%z>D@gP%wa3%|ohmsUXmiJ>9-0pi?A3K?fQC1)bkF z737KD7A{ae59sX$*&q1gTQD0#^AQEm+1cRX;%-+F$Q%VYr-E8|t|n>SJOXK*y$pXq zOD)qnr#3)Sh3gw|Qu*+jn}2`khvq{LX`P`T`1iYh;NRa1vKn+A-wSF*CefbD##AdK{6myz#>x|LEA6VI>9o%t$RSHsPy(O z_zS)*N8<1Q|3TmlBpo^C3=DzYU@rt^Idr?41aw0tWxB!MZa!24N@E{DLopw^LoIq; zyg(OCNd&%Vy$1>a1ODxy4nbLrFT}Dy0m=bt?q@ml_JZsSe38fjj$Mcvhu&6@y#X)0 zA)=t@@-+y2vBwS^C#?rc5<$VydZ|Vlxog6$~;bvb1M zUYN0hER#v=Y(4P}Ty1=q+5E_!`Ov{1plfpZ_lG#DfY!FBb+>}@dRnJz&x^^R15`n& zX@8(x>m~k{d!UImQ0oUd5kZRCUQkl#74hhtI^`=U4Qudk?_jb9#RNF7Ggvb)1b{Qt z#D7){pc@@Q3jSEZ75uV-EBFCY0QCbj+#&n@=Ai8N>-9Yo*bD9>C_v-Vq?g4jptl#~ z08m*1@;9jKB@_7K)FhDK19pK9KuPPIS^+A^3^VDD5= z+6v;|-U`Yp0a*_GpfxR!UWx)V&_F>6O13LN#oio{@16vKlJ<)PCQzac0PjKP-wwKK z&dvsw`gFl3J|o8!q{;-xRa*B{kO$H_MLb@t1|6CDaye*R2|U0h2Rf}A)OH6IPoX`a zYM~W$v_2@4_s0GI|9=;Q188=2svo#nnAX`E1!@k03wn?b17GZ9geG3_nW7)MT}^sH z>(~}Sgm*cBcZG*O0h#PN2fSY>t!imD{xue+amy}=)r|mFH2x2I7+&GHM#>0phZT70W2LlC4mCi zA+UEUsKN?@Mjt5QZkzZGk}f&^{Qn=&+Y9z*?^ICv1B*~-V(o^^^nyoZK*Ph3jLE;f zsSC8nl7G8z4=Db?`yA(hY8ThEuaw$@JTH}FRnqv(mKJ%nPf4%C@ls#f~B+dz_%)14B?R*y4cR zUXZPUSq{D6R#i|hxTOUvhkC(FEP{GndtikC|Msb%Y!Axspo$k%cD(^-b{8*|fL>@r z$vwNNYfhG_H;5~Ejgj{D2>jF?ldG_)Df3OT_ zFb~|M>ueDP%bfWL+QsSX07`~7&><-Scn#8c2$W8PdR-d=y1@p5l=XlvECkiK-~k&ydK!{Eqng$Eux@&7XZ_-s2XI507M70b7arIy@wSX z>)lg9DI@4b49q1NAeVrf$)Iu@UPM0LQpr@ zKLIbEgRO=+7UI2Lh?{#MR%9{4oT&{lF5tzYDv-J0RV2va25LnFy+|zwN%BCNlWCof zH7|re{QnO%lONQUg-G#l53C7#kzRqOI*T#O;e}x`NEEb>X$rXP26v`VPib%d$;97# z7&IIP(!c=G0BRQVZ+D#%@FG7EW&(Jy5w-8lzu$EVXg5Lur0etpbO;+L^#^rB^1_Rc zkmbUV2!RG1|Msb%1~ok7WNSb+poSdit|Cz8WWLbtYr?->BoGquumIdu3DN?MXK09E zgz`~Hj0C)}0juT!nVHtv5(;Wsy*Tj>+~)ZKIy4>u#9}$`AoBtYFRtrw~YF zBAg8p40w?SF&Ux+5JHfFDb~68d-w(_eK~3IH zmcSPRpo3apmi+twA698jdGQA{)%+3^rr_QH|8{U2J21-uyfz!OgwiKK50qVgD7QV+DB0x4M<4}m%|kg)FU1qBqW=7SW1tf2Z7lvhCg#lY^Vpgtr>wF;=- zY6yI>=_;rUaCp%Lns|1AS4i6Npy&eUZE$(<;*}A!LMjFC+XQt1jvGUT_*=l22ZLrQ zz!f$tXru_#3fk}cp?8Y!n{VJ26Uc3_hI|&|il5$*5(FPW zJe~kh48s~8&?-5L@kIedV|OcPkw)_YrA{yd(nDxIsMHDWDx`IT3w_ASeJ~TW1s&96 z0GH;SQyM4OFff36macCCUc8M3`!=o9^-Ws0Z%V{$g2S2SRg zBg2crKN<`XQSp$G#xH*~7#fd&I`-CYUTpuP!2r4fiC>-pbk0=7CP#)R(Ea1{wm|lk zgT@r6Z*gQe0~PPyg4ko;vIVinykZMtk9px1#2)j^Es(RZK;|TDab#$KniICgkpa}@ z2aR9)Y=MklN-!`mxNdP|05wfP{Vu01jtroD17h25aby6sdq8ZfEshMJ;tRw!-{Qys zDxN`XlP!)6py~j`Hr(RK0P53#&VbPX+4b}Pe~`HH7Don9^nwPKKN%bOh;KKPfCuZiwC+DZ6#+QKa0w%Zg2dvI_;ipkL^Lxmzl@={ zGS7%1wIUfz#OI~v6fjg8F;p5dROB%v=Yb7j$S`C`k5A4oDuU<(n^2aYnVcG*mY56? zE66Ni2r-BUUzHhR5MPv94C3Y{R=|aF6Dz<%nRy7I%shq=1Ju!Dvc``CyInbyU3ofP z|A6j$dx|pL3>uH#vB8sp;l<)#8sIyz0=E7CzcWXOfdPER0O}wWs9z5rTRPC$Ds%P! z|ISv0tN;I}b+)Qp1r5S-bWhYUV_@iV+kU2T|@Q^FkYBKgg!0AX`wstn~uOOQIk(5FK4hY#10`uz&<0 zniyYv|NH-c76^ilPXlddF$e(7%Ds>m2NmfuV3#;Ly|@5UW&>$jefpQho&~4tvyN%`L~CPfa;_# z0WUU3fNce>j|BHSMd0T2iUbC|Q27kD0VL?56WARp0MQ1X9`BwAa!1gM3+q7@i%1q| z)hYjW54*q@@8DK>!`v3|Lh>6IL-P@i4A4qe(55C(0t|d{_!GneQ0n6W4F$Y-c*h2` z5E_&cCJLA_Fa*6g4-x5Y-LVbaj|4?kVDHpB+rZTvC}jk6_kxml^Ffus-l;Dj;(s8D zS&o56y9};^6$iWrn{eYJSn$I~u;8DMU_q5nU_l>H_0!ur;}cl$2t@D$L~zMxuwcnH zu*!%pVC^Yiz=8!|z=EL63hLd0Mmlp}+tCe-Qv8ynp}ypAis`F#Z(GAte$S z4CRdA)gXZeK`)wM;-zK~^`J7tAn=72EROkG_A!8Jc5sKxDJ;L~9K^36oiyUd4jd|t_3@;Y^`u~5IW(?TbX`K^5gOM+Ke*OQSC6ED9 z+1m>W{J`F+pui8xVtsMpH7FoNUUdBW|33pXEel%9vb_U5BJrXaW_gJw$U*y^%32SU z$YlwD?@YB~1rJ(qG#;A80!mnFAHj+5wbc%=F}|Qf3zJ?5fZTJq6y_eV8$osPPOflp zaHVy2f!+85bYB9Gyh_PXTFBWS;1G7{Nw#YIp;6*P?v_vOEzyTbZ zprM%;rf}bjfVcFfb+&?yw*@)%wFYQb547AoEa-(d+yo&MmBJvE;Ox!6Jy0a*g)&SX zf6EL|Ji2lOywK+WrD7J)`h?zI(5O>j?^IAi2la~sUIa$7gXSS%cG(2IxUT{A1Aj|5 z188goT-buz$e=772sQ^?qzCna>$ia3-V<-Ynd!)Na1Oh19WrbP&bIv9r((^wpbQ(- z+X~9C0jO!FyA_mE1G>S3@St@fK`(g3L5>UnZLb53ciIHLu!1?V#2RJ;|Mpf;u>o=@ zC=?<27}Vvu_y82K;NnmF0>szV%$y9(M%e$Ta_CECJn>8ua2lKUlmM670RbF!w-%5!9pz=sSm#twGpTtm zh-560hA@~)EFcVK{+9U+3=A(Hfwp?Hf<|V+8QSNCJ;)`Y9LJpk;y~A|Ie^BZUxN0Y zg3q!9=SfGO7m{#Q4r~kzFQmSK_HP@5OMz|=gTNP+FejA=flifo3fKmkn*0nJ2Y#)A zQZ(L&s}z8!{J_P)@Zuy`rN<8N_GqZfmVyTU!7k$f9n!z-E38n47P3>(O#(zMHlfg#|9o+>o-OZ31+0cZs6g(ZgiZYP(37fQ&&paGPr9H7S8>o1`5 z4L}={K*Qr5;3RO8zvU~asz5~ZQ5C2~{4Jn`wvfc(%K@rIpZ&pwE~xzi$#ftUAV2bN4-5k(S#aE))dICCctAroFA5<#(mGokwt)uq zz*ImtxDm_`I-e_xIg1&z`HX{qdqYsDU~LG#`O&OBetCUQoPQAFLGx9oY$SLC}jS3&DfwuP?li z`uzWYMuQzRKj;L$_^AwyyAp#eCUDq;Dt}`on5a~5?~Iq=QXJIi0!2l@i_l%5HXsk^ zZbVQ$ zERLWTa-1BXd05cqZBS`068ItqZY-n-+`|e|!SdP=bTlSNjZfeU54aj>i1Qr+dV4`` z1tqYc7m~)H5}oIT;wNy&g@3S7ZW@{{IIhPH5A)8&sP%t^|dN!fO|Z$)MD)6ZB#>++-bC zi@6olVh(sQ@j1AB%>Xs4K$lE`j1GKJ4H11&4C*K4frv~Hkpd#(K|~bjmM>7_gnzq} zPrwUrMQA*g#$<6rDjc7n7p8DgH&BAz56`#Bpreuz`IZ-^j=#kdB*O|fK^Y;V4_c)0 z_{0DI;N^ATQ_@vozT$7;VPar_15jYXE7abp z3m^@Bo2%gVHz=_n>Mu~JfI=F4IT1LVPga7eR~;nZx+_4#phT5_dn?GafZkq^X`lqq z-3030fQ$%y;g=55DgaC7A^|UWU|RWGoIy1gBRBvif{M?e7w_ev=JL0I*G_|m7a>U% zx~2t+VR@sM%Qj9-JDx z!P-H^?L?3XFJeIZs6eA@t>7?vk>d?7HF~FlauX=SK!ypyE)BE;3mgF#_wi>zDNqDl znKT}<0VnUqLm&oN5y)OpICM`0IhlWZ6UfGZ7bhWZer<)~zRQq(Na*g{^A6Gc1sVJT zv|nigcsH;j6F6(W1RqPz2}*X`J$wRRtdfHUVyRdbC=WxD?G%`3NjS*2kfzLwcb-t+ zg3eijgaE{s4xmeGUV)PbDC-6GP6ahA(Yj|~S7-}@a=Xgwq%1DD6Vzdrm5OEYLW&5V zfER)=(GoNM?Y*Fp2uQ;atgQpo<^vC-qIT86c0Bh3wVOp=oCobl0#%D1X`sX8GC+fQ z;C}LpR#~X0OQd>RK~4?m?FFS|P=XA4vHbzajgVstcK-my84Le*ND%OEp9<=Rg5oRS z#r&HfIndq-Ur;G46Z9e$ZZ4#?4~}X_kr%3j&?Xl!)VX-5W72Lq&j>1js>Q2QQq zsmL7bx{{IhhzwBv822hS@U}s?91DSLE|9=B628O?<92r0bDQI5z{V7KV zP-zI#`{I-%1E?cuqX!$N(zQKx*1f zIWm9>X%M^ilp_OZ6a=KE{FEaDXw(EGUVO@t0n`lvovWU4%8>zlgF}3NQD!@x_&S@rFj(7V(B= z*i=>Ck9_>BBA(80E#t2J_p3*vJ# zQy4%r$d9Q7#Q_W;B0dK~WiU9FGdMD&=A{-fxR&IXFr*d5Cne^k6f=Na0kRZiU1nYZ zf^U>Gkq2q)!2AIJpG9m;|>W0JQKJG|B`v z-s%PDkOa`4M-UfOpYd;p+7pj%kMSiWOBlhHfS2~1OzZUh16p1k`Uf)675WEs^jY%{ z-r8!2!$G5OpzXbXvQO~vZ=Wb(J&hsg#eH#@rvpIdcKiNG>+Aq~VCi$v6l>_8>_a>t zUv^IbX-Mmw2y)_!4zQ#v$S6>O+}$W;J&hr)vk4RuFS0>*f4ydX3EDT;e1ygN&5M-} zAq5&J%t7-DupHarwMegA-47vMhIJPD|SAgvcj3_-&$2qsrj2`%|OG6G-7z`c+N zx(K{G^iR->imBkf0j$*>76=wif`}pp<~))DU)&XgT37{owG*zQ~itzpY8$dKv?)!?(W)6p+~`KoS!bz!HZbksBBm z^x~=`I0f-FjI;;2S6tI(D_&$Rq2DoniZ4;HOr!ll%DlrAsHWDisoI=sjLZ9oFWZikIIxXqT7f0YV@nL1_~_jM@US*ZR$iJ@+&ikZ070I8QK; ze?O?r1-fayhARz}qdG(Xyyi#)pP>vo7Txs^Xfhd`eZct#re66V=*&&fxt6H%1m^c( z`EN&PD0qN2t+R0*XyI-kc&EmtG?49}qmKVT?zVIN!@uA6PxDWfTF8lv3@5p-Ray|=O1@Ghs*?mmL9h5xB_-p_eAg{n+#T;P81t2a+ zF?hbRHwVN8DfR%#wq}61yr5eyn-4N}f*HHO?L_bZSkjBvfB*mA2_D1;H5|LZgZS6~ z{{Ii&`UNU$I~{Fa9Qz9{20$sy!=Tg4<;7OGKw7s)R2pbM;v!_Bn6yr>uowM*|NjTw z0tDI_nbsNL@S+Z+#+M_lJFp_HbLx_}|Npun2IzcV#DKJbZV?4l0G$(jtQZ(x zcz~Q(0LkNNon2laF_XWDeo~tOD1QF_|NlY{G@}R_YUSVVWEb$FUl5u*OT}O_Nn$}S zDq*4}qDZY|up#$AJ0)P18fYl)#Tm#6e&GIrUC@hMxL(lVIv@{#l2_o1)LWpQ1P7>} zIkn;D|Nk$hfb>CciUAjJ$E(0oWG=*5KVVEw(VAO3<=f|f*dgBNl(z65or zJ9}CF{QuuOb;0}p|2wCyc>Di<252{LZ!5?ikh8ldz5uN?eBl8xCj)c=NN?+gw~(Qi z#)CmRpfNoyh-~lFhMypFrhNbZzq=Jg>Pj$zQsa#8FoSy+eE$zxfzHw0^u_=*Jo+Bu zl^4@Nb7)$z;M@(Kei4HQV`v6g98{)z1isLNi`#Zj1*L0nHf{y8KsmV=#DZmJsDhxN zZm0scfERO5fU|U#4Y+%j{Sh*&3@Si%0$wa|2Ul_dFVcU5DjSZp?jGo@^2MMR#Wr9` z(CL=^`&&UV3z}SJJ{SP%f;E9AmO-m2zg&C>=7WYjv=0Wn;Dz{*f4eW_MoQRN2v6XP zPglXQlhz$7fa_u#a1O9ORVxkNMGMN&Aag+@k33El{I@3j#Mfx;sER0$-F)1Wzr)k}h~kUJ$hFLk2{MgC+?<6P*0p1MPxdtl)!Y3;vc> zj0_Cm)CH={VN-(<2>CA1m<=LBp+C5|Y&;0s`V}CcRLCH~}15y;DJXF$kgp8o$IkP-1`8pDfIaM50nC};$u@en9DK=l+f48=Ua;R1Fm zsLi*1B4`pf=*2xAcuayeA-|CO0UCP-ZBqsfr9o$UJ7J1S_;wi^gVu0Nopb5`|JP<2 zphZ*25g(7F61oZ>tdeI(S{g`SD~Jb?D^{h+OQ;ER7c zK&1fx_Fj;-z!w{xz&VT`w6z^Htwx`4SEp;GZt)ZT4#$_3#dL2h8X)o`a5)7m4CZOOyG+eZfJ;=D1cgJkZEsGu%93a z8I(d_Tm#K~K}KUc9)Q-AfYWUER8SEMik5B<9gqXS`4ChoLUZBy*`R2WfkYFi3jSfh zz`zO$JI13aufE#32vT%mLuK- zt&y4tQuyL7XgUnkmbd}(b@xa zf7G*N1uTKG^P9;JpZ!-GWo#(s)1qN z?w$&&#UVOD>+)|;1v$n6v=#t#?g=QQp^{~wFg^18|No#D+wSs!CfULHrQ?$+BpUd) zH+?XLM^9k)R8XT6o;1MT0_{Br?47#cCU_F&%uVosaK!UioMgpO@@fK&y(=wJgI8vq(R zz61(h_Rrw?QLK(k9ADwofPX$Q_y{I+>hX`na4d`xnP@M2@_XrDop#%xl z)&nK-SzNHP1niC%(}h5tVUEt$6`*=bCW{kN{ICXqN|zUv$g+^&-#-!LO^B-Qo(UjR zKn~;I-vky1ms;IZ8a+TI)r*;7U>60vm|zQLbha+J^#6bJUJ%JpDv-taqTC)N!2*%! zZJlxnl(&09@`2q`L2e3qAp%}h&y&^(t`k95$%7PS@xSOc0O{ob4ZHAf2UoN~FW4dG z1-!5WGdMb17hL-PKjSRuSUfN@;6(^zp?5%raWSNsJn@Yw14GaY8>sk;U<l+h|>c{0%Vws z1KL9ZH%JX&LE)wcDq=y01P0kMFa-8O>X6>n2vA`P4x#{%csIC17W5(qTvw~?04ugN`Ww!{>z6?=K`;4%dm*(FOc46y*Qi0}^|I<2qLGFEV4m7U?N&?%Rav+6B zU|107SgzJ5(E6_NAjs#SZ1ENvONamfB@a+GY&--?6`+y>lr}-;G#*4GB2d}^B~AFG zYvVysLJ52ks0#{v$Q{oY!RvWJBL`CiL9%I`6F{lsh3?z`|G~SRAS=y4>y%rVK(pX! zosFQB^nwSpdxR0x=LSV6sD=c&0qz$5?cn4Ha%Iqq3*fkr0Vh6>vOrLmTm_UsyTMHo zP>BaBhCynf)jp)aVf_OtmLN?d{_PV%r8Bg>1lp&}0xF52rR*1my=EW3tA5g&nx`HwwL?m!(-vH`gQ%!QPxFK+jP+x#y!zxw|_;~E=u*^f)$3nQ4R zrILsV1zDINf6Fn@D&}6$C?RM8&z1lGgFqgF)buZ0wcugUJM{o0g@DRIMDYhI1%tX< zK?NS7(Bgm=l>skWj)JDZA$@>A7EmhS-|mqT*gJIts0GvA3L1`NRbd3TKEZD229HoS z9+Hp+x2M7KFJwSvSucp)c<_WII3gnI(E zY!2L_f02%mfLW`-2cPnU6wD|xNIPe2Kf*^iqKEMK6#Ci|X zmH{n3hlz6pbc0>qe2^y)T;PM!4rn3XOBOqZ<|7&1y&wbm_XjeyUMhu-1cHUqIvtr_ zTmemHflIz7GvrUjgdi2lckzfaKc`AQ$vb1xEnbwilbMK-MT^G4!_HxD9S` zJpieJj7WeYB;dt4?CcJLt!GkAOg5+dL#uy-oR3&`gUu2jDadY9fG&@}L(p*Mr7>1e*7Pk}*RGcnJoGnbz4@!vR{4`V6%C z5z@ux-wv)O1G;-b!=8b?Q$ZuSLA|Y@s6|VMy{!z7!O;$~Fc5A%s1X9ou;9fmUEm>0 z6L1EG!A-d0fJ3;?x4 zKnVquY``TIXjS9tJ)oHb1z2wo)^7sO8T{V@lH-AHEPDx^zJV;;ae3p&@S^Sz^0FO< z!=Pn5pxG+xH!lt!g3M>}%QJx15BR)sWB>&=Xx$F$2S)}_uqCiCF#LS)$NdT01Z%p*ahz$89?0u z(0ZZF_l^vpRuPDu^xlyH6dj;7LQ(G>89-$Nh#ds7>*@dhAhy?gM+Q(Nf$Vh$`Tg<# z{~*6OgZ%ga!nOzb@g9V2_1=*I6qlfVp$6|A89-$y11kfA+IvR^(6|Z6J<=e%ZbID8 z3kq8(oB6#X1E>!TQuFzpBLk=m0h#mSog)LNg$WXW^v;n1H2MT$-+AZA0O~1$!s^C5 zM}`QfIhWo!GJu+mAT=l7IWmA+k|6ehca998Q74f4ZSNczK#f?C_}X`n^+*gX3=B)& zIWmB2Zw3a2dG8zFiZfH< zlgb$i<5Tm>7}C;8;*(0#(in;h;?r{S^NSe3>wv)fOY`#c;)_cXBS3403gS~T%ixQK zK+A|yD+-{?hceRQ(?Ppn(<&Hp@{<#D!W>=VJzV319bFhQ5{q&nYjqNHa`MaLlR+k? z7BCd&6~z~q=Ei5FGNhE|=2n8-fV8{_ye$^Am9@AskHN8!A+xvu?EcK+H1L8Y5FfUv zCmz0@$ImIgxB#?{DBi=LAvq^CF%OBKm!DZ&iNr5UL|HC`wic)u;@{-_qWIjz0+3S~ z0)iPzatmBRgdamrTD&Xjf}!$a$U-5|k}Ko|L{K(p-4GG;_sG-z;Q4t1^Y7iR90)Ct z^%$(6{e%H8-aiI4VL%f{jR!${4g+7@g^GlNMn1tKUfiC1pk0X8Z(aoMLtSbBoE=Joy`7_nNC2wlCK1 z1=Iik|53J|eFPm`0KQBSG?hI8G+6%P?!W*4cY?)0v)Nt_FV29rueyRZZ*+t9mzlgc z4caLSoo{X|0SyhV1StXSEdiY^|Nq4-5Er4th^b~ZTLy*~6(A#E`*(d_WP-Rb zcly1E`iJb!M$kmf3pbDvm%zT70G?nl1qnd+&n~lJV0ZyKaRIsv%dzH#7)TnTKA_+Q z2Z#qz>{a&S7h>kyvFODc5D%hqLKDbww?UKTpd1UC&UmHI!0_TYXxbg@rL^veAd$4r z32#6W>p=76;ElTc+g$}9Eo;!hMI4~bAmG-o6HCC06A_?&gz#;N`rJhdL3!vtK>xE7yh347| z45dODpjzui9B6UC5tf%-Dv&`j&}|$%-5wF0UM$_AJk5t9K((=lLT4Zkm>UD*f|l=h zJ1Kz1P&i(k`~x12hVng_UhIGibo=sjdI-Gc0`EQorA^Shq$>w2Xy!2hGV`dt1Kf6i zPDw_AhPNORLU0LCW~c&<|3D;uZindrjah+4#vtMkA>z=n@UC5;2+;k5NLx{?3=A)1 z{`~*H3v|B_B(cPR#6Yt;;F(WQtGEX=Df(jTHn1JwrdI-ZF4TBE=)4}#)?!xB*a|2v z8xJBzVBn)HprM$67gIw)V=IvM8@SI49m{$V12GsjT^MjO>Q+z>{KdAP|Nm!zTieiapw{=W zY^#m5CI&QN@S^MI|NpxLKsJDjSF}yef2@+_B5H!LI>Ke0xR0ODuFsETGmrXnEYH?+8;lK+*mXG}FzP#qnZ>1iX6(9(ig!!~h3_11imDfsEnFO2{gBv0of+(2LD5_JtrwlI8*pi@eZ*m zLLd_&Kql~KRb+q$Vqa9jG#&_ekq2X+fLyH7ct`{^J^kX@MzG6Zq4o@v^Myd`iol8f z1-QEk+P2@>bO4mIzJEiMntMP3&%PlqG@GywBz6gOavNwtW#hpkpi&!LRze~v9O7uC z1&2>SIu?LTL6p7EKw>>0tDsT!0whrV?f?HBpkY$T9G?-$!|5PJkk|^Sdl3oZLA8Kd zJ}*2#0?^oP0!5uUNC2XKLIlWAHPCtkP;G^|YP$4K7GoCciz8y-sF-2>p;iX8{&5$B z0JyK5);Yxkv>xKcW6;jk*N0&dQ3Q(H^PrpmK!;?zaMJ5IXW9bBNYf?3sb0S z(BJ}+usu}x3&;}CS`e@UE4-k>pyeY7)fFL7VbJJ91}J5Lb9Z+W$R7bOKCJ_X-cIl} zd!W{D*Bww)oCa-21@%n9xwab|MvVtSRs_DthiHLS_DqHh3@>Jb)c1gH!2q9ZF%jgV z#zP>xgI?G})kD)V2S|N3NIiyQQXwkQ9b@pBpcgwKYQUpHP)~s(A@IclR0&Xcf}$bdMLR?SmN(c885m$i4GYK* z%Rl}9|6&nn`zlBe$j9Jm)*UFZ62lJ-{yhc^3|YDv2SB^peTAU@xDW&puz?9203AOK zTG9tHCFlhU#0f|x$0<5L0 z068b{#g{eUfJ16QoB)}1_9M9304E}lLpmElD;YC1WBS4Oy#(q6y^w;;Ne8@GC<3wz zbi?%r&=lBy4;D~EeJQ9$2QQ$UxzmV&f#Lg4kYQaQTYF6!v!KWK{DLgBgif@W%YjVd z2zXKV5tIQz$M?9ykMH4vM(h3)y&`?xt{j~cpjoWjQD^2(&?&m#e`X$-ufo7EbLWCK zMuzV{1Hd<$ym%-8Hg!ffEL3}0oWSt}nn-%>1o0Hur2#Ko?Z9fmO2JNLX#y(+Sp_;D z2vlNpfC8jf1axvx=LC=$FZ)4$1r=MMBmi0m0_qolvlp1-%5l5_luW@KkTOtu1am+I z8z>EeIUr@AbO+{ulz}omm;+J<%IaVaNEs-DgE=5&pll81fRusU2I9QX{_y|*3pEg- z_yM#B##Ny8K#4i*>{;YtSCg<4qtjkQ0$= z1JEe(i^%tgh6!lz#0!u2Acy-3w4MYz9JI6x)UEvZ7}?>V$^Sr>pcl8{qTKLQSn3NY z{Yzc5JYLND0CoKlP$c>u>FfY4p>M7|0(ZRz)b$}^&|)8?AmGJAeVFS(p$!rPxqg=j zDAK{XZwn~L%m(et1uYQ@WNE!rstRiNsTe_Xz5<8=Dk4CPfENbo0-(<8Yu;{uU*+z%tN0 zKhz%}b3p!p)e1hKF_Ko04rnvL42Ir*ZsjX zf>g!5xcvs6`T`Qb_W|x?&;7ZT0jO`m z3%1(c{QnPYHalj#D2G^kya}`r2NYH>Qb9VPW`g^zA#eWwe~}L&vOok#{zbwYP(A>q zj#6maPHR0`ssqoTC7{#+%LkVqKvPFa2qYhXwm^Gk1-zK`7Me8nfC^&QJ)KP~W}u|8 z2c9%EK(0N)@-jpiwARB{0<`T~1k|kxcyV?uXflik8r2|;Am>AJ7k`T}=mZ&1xdhs> z0+IkHY|zLbm;)-8M9e@;aH(*-0d$%khznK*+Kd9`fRusut$;Zo(?Gjcz#LFE0c}zN zb3n>K!;D}KNEv9q3YY^@W&^VaqzrW09#{sX479f%%mFFOK~@IZnFW>sDcfQLVuCa7 z@x~1>4#>0;bBGM0+;U`jvE&tU@)dY7<<qW^c&~~05FFyz} zFuZ7g_5c5iCJ<2zA}T;c@hf;_DCZG zV6xeubpgH#fiDigg(5PR$TBdz=zk4O3Om3_VMk{ZDB_xHcfgZ^EXW&2SYCPxfX)_RG*1+=dV++^e54qD6l{w~yyC21KGK&#fFwKuyNxb_Zs z!N&t)fCiw`Ivp!O8D+au1!!msv>4;Xf-cbT0Qg!8a3c~nNL^6{5*O%n{n1?egQ0|@ z+x5pw4*>>-*9PGAa1cvSbR0Vc8t4{5(IE!X0j=p^sSK2`EUXwnlOqf-8ejbX5AH}o zN;ezOwxrk>|NpzMcA{`3F;U;KIw9`57^54j*GEsqS) zfxIuGV76}nS1lVlJ3u+Nxpo8G_7~3~Rf`D7c2IQ(QV{SW@B~;GT6TcMK(@c=0$JJ$ z-hvA*+CWJhR`J>0fktqt7a^4J+BTH=ubnxcOp1atHXa5%2$>;RQ>&9y7wj$ZH#9AGcc z@Pg}~?k13efEP1kz*RIf96@3rN560ay9N}5{H^yuJ6%CzxsZJF{T4L9_*+1CN@W}X zH4!E~hX&dbP)2rL(%A$mTAOQ^!0lIn+V2ChADjt6O&VM90t)crrWbMTpqv89L7+Vc zjR!#`a^MTIa*#M`4r1eFV0f(u%0Xbg;1xZMhd}CsUbG#@%sHo{r_js09XJ{ zH48c?f@+ZF+6C|ckbeq^0B?v>x;sD$0$=R-4t4~rfpZDe>{|lbFAI$lkSdT%kdkaE z-14+6P;tb+9n@Bhhl>XA?*}!^OFc4NKnr5NJ%u`L4%lgPIwykav*y}4aHoOx=Yn$h z25xX&+T8(C5cp#69wp?dzaAqJv>r&{P%oFS3#Pf?Gp=-rY(>E|K9~V3>wm0ivbN|EdVKkG<&>MUQBxY|No1%AYuiGSPU`~ zRH${tf%aIREP)+`20F|t>;^1u;2SN&f?hblL`x+yCV&P;K;1)wz!x6yU=xAG0k}?8 zc>MqWgx6BwAmd2u1|M*e)(JkpJGIoH5^EhB8PXU`erLzgtMrp2{0ylXY)Z{~)3=Ggj22uht?So6TL{wKc+ds3YzI_NfVf~~2Oq(dy@-DJ|No0HWOHGw!a=*FTLce)%mVf3L7Kr! zd7(GEwQzx?UT}l-vpoc@TLm4U1sRkAsck$oiy!2hRkN}9W|jy8!;1?KkbD#P;$RWD zy9W1Az>E73k&G*#g8-Z!LBqBOoXmPUCxY6O&9y!7umzb1%Cmpi85mwmfeS5=LqM?z zZUKYTgE^oUhC!$6mltsl{{MfG2_jNJL_COy0uiAgA^=2qKL8Dhfj9Mmij+H7pwV6u z3OdP>ryF!IkwDOkBQWt&3DA*yaPc)T@eBr9l;R%`fE4)=-t87f)bD zm4IYHrO9h6=vk5~0WXfB$bt@feJul7`U^671zeW>xa$|tS-!7jkSdl;xNF$DeN{Sr zzr0v}@BjZ7o9_Mpk93fkGfY*f7`W*OsR8C*f;rk4R4gDLT<8=L(CzyLH0J~f*iEM3 zC3BE&FKBQ1YaUqX2jaa@0$FMcA}m0J@jXzn0B&0&H%|7zE%XPa8Q7Vj$mN|`MuI#8 z!;7N((Dd8^O7X58olT%FQFCnvJUuhq0~c>Eby(r05=aRs31=CB8{18w)e8YHu0sYL z!6RrLpw$X(cVTTz(6EwOMh2+TV}x1Q0?t4!ofARbuIAbnxP|?9Ar|fi-Qmm&&Ojg~ zAPZpw7E++fN&GITw*l@bu*!f>xjH%>oXKITR6wde-a*RVoxX3HYu_-GXrgo^_CXdJ z2fR4?-v~4;((U^ut&{P^_B;RogG$ijO$JsV%NZD6Y`KHz;F*A0@{>WPgX&Nnn39Qi zpc~!61t(~PFYv`#YjEyL>vVm=zdiIt5O`1;NxpX$*xg_`NCE*3J_o)?{R46jXqiG< zXA?;1g))lipuxnz7x_3%hsf(=m<}4w4t&9mY&uBj#nIc4U9evuxeZFD z;IFX9)ub+C-3zK`*5Lfx-;b zRR%R$L1Lg3l(7I5LjP|=vs?qn>7fms6G3AQ&9x2i9MF3Uk^?{+j(c721Y{Y3RDy=# z4}(wO;YsUsy~4j8B*Xv0;TJfOfOhlnZx6i^^kV&QumDI6ICDUH2a@MtK9U8O*N=$Jpq zhUgdbCxdevSP(RU=mgqn^`a9ZiZsmv-s-&R24W!zXiL_Mg&+Z_6F_^nUQ7T9K%D@d zlCHl2Dsg^57U1p>cVc+)cN$~?ZsQTq6qxm!7e3P=%WgqCN)L!TG2DUPgK|dPiJ>Gl zw*a(;54if&+LKcV!y|ABVWzmU3y zNSEM%=L88r(Bi zAPO`O2b$5(108S+p3&cb4O)Ia0TuDSPhd0pPvGUJ?^RII#PU)>4mzX)nyDKmGy0&z zdB9n-8?sH}#f3gdI)+MsI!T~bN6?Gy5Q(fPaDma?0h)&le6bKo6x167O;rZG=!S^G z)(e0P0j(DZdT|IMu>-tb0JH?85xibt_GNIc?glT40Jr!+Q;`{K*%_dhxio?J0WXXp z+CkM9$TE;1WO5l?VnJHR{3l>F6X?w9ZU-HdDP)kAUK2;`Q^;Sy4K|K|7uJ_SF^)Qg zeEbWz9^?m2A^U-+kU`V8ua!ZL0Zk$!%~OLd5pjeo8jN$i@R=pM7qXz!x4kmb#% zL0s^ZSvTk?FOL_yF8=@Dj9AS)8^lGdX70I&xth7+BD^YxtY%IJ2|%l6@M`9;i{Mt_ zht>n723aC6o?n9IYw&dtp$|F(6`E@wz%w<-JW#*dTZ)0%bryLLd_0HW7~&Xv?E3 z2P=;TXul&!0OJ;N`rQ7eH6GfOC4|A<%N(pcl`&!2SYFHiK642E0gZhOFiVxdpVG7u1c! zv)}%hCa6&=@Z#TjaOQ=M{Udi&TaLi8B6J!c_#!k;?tshMJFsbhJMd_EcpjAVSYB?C zfR?qOA^(6EUK_x|&|xf)7^pCZ217v2i>UMe|7W4D7G{Td54>9p>TmFVu@~<;!TyFd z{LDb(^HS##sSCV}m=h!bOvDzQ!5Vak68S!(F0JNb7UIKg#BmmU{UIKg+Bmk{L z!ApR*fCQjgz$<|=MdLWk;oC9sB2c3`w8kK512wBUU z1@RNoN*wT7UgvZF|HD_dftCXYzWC4q_C2g<2BkLeX)-UaLnNTV;#l^A?Ho8>k2k>= z0<(Y|19csEA@Jj~|Nrj-F9Zg!WdJV(K7SUG9Kj2L_kjeUy1?7x*PaEpp+N`MHy#2V zFBbG-6^iAJ;4$YmkUp5#L9O%Bv*1z&Y0SA8NeQUe_#)^m+8SfU!>}ZXvBp>pt}%Xf2GW^_BzkOXj58oUf|eSfCBC3JQ0N+C@4cX@4jyc4j13_A z@T@WJ`wr5KYmM=Tc5wV+Ut@e3E(wZvv^B=t;F6#M0DX<|42Uc=c{GC87(Y3U$Ti?K z#+N|?(DV#mL3{`#0F8SeQ1aaf5`ac3cxG(D>Hq&<>;@6rPJ_yC-!H8vQD(;S4?trO zWoAqhCJLJw`*8+ZwA=s}EjM5@V>jSMOWSF18S*j`dTkeUW~|;3+sqiWXqlh^>PG%K z1x$ixuSc@c^sruV`TL(JfXE{2%V3rP$ymlv!UVrDNsf)0KK z%>{#83=Z?O&OnnFw~&Rw&bE7T3`5M~#U>0fs~7W-#g03Iu99bXG4lkdAcCv}09gg9 z?shPMQZBeo2d^4SJ%LDs-$1L^Lr(nvkG}B8;l%&{FQP$2*a=W&02(9%uY-8L2Nubo z6+p0g=!~@CrTTty9X7+4`5?Ko!k1@* zR+b?z&u%ylNqWIBCxR3NyjYnAE(KuO2DF3?R@8x3ufd7~@WQpX$Nv9+@d89VJ_d;; z(5fJiIUsL=Cz;`Ev@RY)G#kK++BSd$VA&f~tIY=qK(jY^QCr`!|NnO&7OR05wN)KM zUMVyIyr?bh7|KF7@S?V$W00%@-f;iAJ$OIV=-bVx4X8{^3Z9E9tXA$_~eFM1I z-330_8Qd%Z@3XJ~83Gz01NUsY!22vzKsG@OQt&Xwc_h*R}`flt)~O&I63!Isy7hG#&AfRZ6B^@5iYS|0&7<@h1C zv%Szh^8fz?Xj=EGdLaX{2)aGhG2;dAk^lc+Xn+W15FrO5BteA85l|R_vS}%f?6DCv&S!wnr@I@G02)fct^(Zuij)0Tg5!gyI#G>2Hhan-< z23l(YUNnPsrI}A1EQCM_4ZhOM_3;1yFB}fT{REow0tGW@mDtbi2#-LIqGbtqu^A=` zTSU}!1nNXkD(VhB09!d^#nhVf8N8pP}$Qn85EI&vLDbgJ4UUVJ;#SqSO z$hklpazg(gZKVkWZ^#J(X?uMhR$PHMVrYz0-dfenrmNx7rwoC z`Hc&D!Y_E$&WjwF)&l|Hqdj0Neq69<-3?j?0ZPcAC2ycGdC_+eQG|lmyXArept%&h zUnmA704+kn`-Qv@{{O!NG&l~LQ0i<1?-w!$DT3+(?-x=#2yNBD_Y0|jL_l`K_X`Of z1m%B_FlZGD_>M7X?g!2Lcw~T=*3}+@CW1Ynv7pdBu%&f~#j)H6A?frUCv@QrXc=AL ziQJ4g)VVNeYXp2jML&T-1Z%!jYI1WjNfuee-&0AhX}VyOp63D`97zz)c@ z(1j!C4?0mL-WloLn^$TZOL)U78=u&u@X|loAif5~)0x z1slM@u>rP33bEGj&whw=&vQV71GM-l@Ws?i$m@_mVjwGF1z8xVC0?{2Ud;sLy-3*) z%Ddn)IR(i@ws05uK~}BZIRN!Ce5oI35g77PzbvSWY#}ZRc=7T+=;Uf9b!5tM~> z=8gR|csw)Ug&)`ns55W3?t>-46KnVGg4r`5r`>^1Akzl506Qmuw)KD)p}?1XUD}H> zw*X${wr?*qpMjQ&fok9vdqAqt)`88~ix@TlFBWUx3)&yG7Zk(b4hm?U61a$G33{Qu z37Y2kTh!p|l)mkQ#_|$y^K?lkctH{J+QgQ<;IMre4mvRn)I0^Pq+tawI06k(gLvS< z&+L;7oh@A81xIjI;Ppl*st!JcsRG{-1}+r4!K;>7L5qX}UbL3OqM>^t$ZXL3L=$+C z(CR(lAb|)6y_n+%StJDNSAZ2>O6!~mR@ekm2onx`u^6HdvUZ3K=HCUN)Zx0I6MRcZ zGtyGTDSIIPO-HP?02vQTP%k|8{Qv*Lc@MZt0BiiSY=j1D3G#x&cN<`$paq9tz*~C2 z3l3ZNLIWJ@? z4Q;)E7w5Ge0IvcBCxx(}7XfhBfmQ*6tM9PD7gjJ)*eXEq>ZpJhPH-P)fomfE?clY0 zK`(Buhk4RAcU3Qa=#bPcfpII2??Nv{Iy-6 zDjQl2ffftCI06y@FWLgtL)~Dj(mE%ApbzBFQHV0bMI&fXv;pcs1bdFTKC6Oh&?EnWu;H8XHw1NH}KoC|!~ zE+|<#8Gzd6keL}(L6FlyyQ87k%^*%F1}{dM3NpPLG=KtH;Sl(ul^I+;f{bYbwKe#+ zcYs!8z*;1rA{DwmVl`MLXi^?Dzu^1hMbys!|6io;gryr$h_@anQH3nZ@Z|vC2f+pp z8{XrtKfsGJl))}={Q-3|tQQ3!9#lPe05KjU08#JA@*;3MIL<)}jJrKp(mK7^Uf4l| zjyrMu|NsC03wtE>1uqo0gG#_G2k@K>=#bZ-7v~BgJ_hXwcjbVb5c^^$L=e6^hv&uf zZQyKr+yOL%%<$p`nEN6=uK7rY^_v$vOOa-+q30Wc(r~~F`$$lG8Pu|XHG_4bBA_u@ zP+ALmq0In_E6}}Rg{9cfH)?*vaoqI>Xxk}Lk@zn7++j{3eM{R zFYXBa``>&-pwsma^!%f4*FViiIIQ2i5JGk)$TTn}=e#G_eN5H|>xsF)3H|)1<~KaY zUB7^ANA(u}epk>f9^E006`i4fj=O#VmqXeA|NqYtdBL(B?7>dgKh3p&;Dd|v{)2J~ z%gb%dpeEIyv~FLXv`&r}>YyW^LjQET3UoTLywC*keE)QZ{^@pN>2&0HApuGo${=$= zdlI?@yFqJDg;&GMw@7Gp5m*xRLiQ>sS8;&$k@Ii&sD0C0-1iWbF z1~~+@3Ko?0zXZNGvI?e-quce%OHoh>%hetF=eQFO$XgjLpyaN<4eBZIMk3guL?{1& z%wl=@5VURqqz*I-|0CeV!#Ns|i%xzVchmu00R6%rbd*%+kK;}TS)gs^4xn?K4s`qe zNb7V=d7%X2UFvrIk=8i@T#E^U1WtB`{z&WW0@q>;pp&FPtu(Nf#uQM^20HHvynq_4 zF(Bdv_`E03>2VN^pkWE{c~8*YZ9mdF8$sg}FE&F@Z30>M1vEklx~~Z|?(ie6(<|r2 z6p%F3ZFw)+Ks<=s0@PkqfR2yy<>(d!+1c&Im)7YK@gf-{7|PMj1ae$=fJRzpVA=~m zkf19^HwVZu-HtkGolRiN%|PM^6SUGg!Q&?{lhHjp^N9HX?(Ca~|{ zflh8hm}8LE*#QozYanr`Io$%Cfd((GfJ6``n51<&<-AxA5=3Y>OY8K=doc?n2-Ta` z9iW!h8JO~-6(k7N-tEZI>7?_b2_yu$W2Dqu2|dKmY$jDgfUf z;7w}Qu!Rgx;H1g|3a(DaiWkZty`evXUhKL9PEMV!UqI>TOTY`w6|khq+U@$~b!|7u zBn43W1bXll2l(KtAKlP{uQ-|y#dNzuxS)WC9(2X=;=pfE0sI5X_h5Rl9xeb{*x?}n zUaOydh@l&l`+jtWFbcr(c<7(bkj9E`*DuXSc&y*NC@X*!p-Ahkz&C_tp8(ArcDrza ziZoExFR^=(0kX#T4?ko_vvhMU4?~G)H|XL*zek|bkL9>4=x$qZljcw03(b4Tg5W#a zc!FLebAW>dd=6&$CU8E4tp0kH4|5Bshzjj~gR8uPl~5-^=P-%9NP-xGRzm&x1-9m; zJ81i%E3AY9l||sf2^=!8a;X4xmr^x|C<76VAafxl6l8gPz*1PmAs10q7to5RpG#oM zP>QHWY#^5)6;X=IVCuj{)KW(9>Ik$Vs%IlOXrMb6VMUZ0)K`U|Ss=!4NGmGvg+DvU z3Z56B^PpZF`uYF=i@iVp|IcCvHS3u8w|fW#zKDT4E*84|sR^`LE8vAQOrq2Xv?qXr zfBQs`M9>Q@xP)XDD`>!Edk07&@P!~uqC^NhI|C{`Is;f{y5&K zU<)dD85mwjf!rnf6O?q}r3+tLXCU~jH*op}=SP%Gb`7#RHQ>eFi=e=UWin7SImQvW#;saxw)aRWJtKC-}mGf#JpFTn&cs-n|mX|Nq}<#fRlO zLGZ$?w9eKEpeq5sf=+2Vnbz660yI7Q9CQbpDELmlLyVnZ#_?8{VF{W z>Zt+8q1X9=GAoz|&abUL$01!`PzBrB>H(VlnF~5}=>sDJ!%omavDp_HdRs(6*DM9R zF#ZH;igEC72kj@{A1ZP15mPtBgbvW58rr7cOp0Xl^w@P*o0P_%G> z#xVG|yNU$72>lKUXO6VaRtu0LdO=R%-#!tf8g$4yNHE}q15DQm&<=J9&~>pA2OltX zgH?A=1Y3I{=tXBOs4v3y7XbEi_f(J@yPH6^2E4eM2ht3_<>Q6t8Mx%hfmUtynjHWC|FuwB z_f!xAa>o~#$-lo9B+~ptpf)7SW+&*{YKZYmUVu^^SYPHv(27OoLjf=Rz+udhWwQgU z@B~Be6y7;EK?=d9WS#&kycqOC6{7HUUq%5l1H&%RE#ldS7rr2Dz^iO$>ZtCBl5jy0-c+|Np^J07M}t2I|Q;AvN#|~v>UvcAn3)b%OD9J$mrNbhRznz9pC@| zfARP;>|8Ez_5im}_J98W|HUoHZA{I(KwF0ypj+}?IhuFu0TsCXt!qImx3_{+ZUCLm z#0(0*i6CbOy~v*r^-hUo2E#8<6CTvG6AXHx29qe20PRxa=!O>gd@%76Q^;{VkkSTp z+QH^;;9L^$!U~+~Ssudzw1pPu3bUo8+(3Nc6O(1tdWxE5|(mE%CReT2Bne?(1 zvQGr+_!0|2DlK1*;N1dX*$M}rq0pFqP? zX`NFYKt-$;=&&hQ5a9qKtU;$efwp>gb94s^1ikn@7Z&Cz(EV-DFn|D;lUBujquq@xV#W(+X+KjXD`?x3qStys*u(>Rp9sk|1Szahe^RxPKhWurGUbnf4`GUXR89J$ly8-ra?&yysZc% z4Ql;?25&)Z{{0?qoxL(pr63xtG?b%x7f2eU6f`&qV)O40bn2W6svuu;9d8BEAf@2F z1KHq`1XLG7s_||?C>_WGs?EW5Spfg`UXYVO*QS8%0o5xYLqOsn{|9EtgYH?0I1ajb zL%z4QT+=*2AfSO|!G z%JKjI19pOr+=lQAzHtFY zU-%AEkKjK5@q2qg5g3Rb%e_-Ujf)_(!Wo$lD%By!`a^`}>pucEAG9hOqMzkA$UJa$ z0oD(yE`oM|+b&=}sOc5r$R z%Hn^q_Xs$9!@@hQvqe+}loe9nftFNsgOvxoD4zw(v)mA&m$GaO46tE}GEmy&-|kTo z_(Be19JuyRg0N?_9;nNIVG6pNDFHMk2`;_6K{ua&oC!6xlm}9EHCMPWlsZF-#^a9Q z$_`Wvg~|lIFuehGX8^1KU#SMblBx%!tH`F3^oi?A?$&_QD6|NdA^bkV7j#g)yiD5cI+TA$JT? zZg+Pa05K*mQ3ajAm)6;IfS-Zkg#_rBC~%x!1YHl;-6H_Hb)fm68+drR39O|9q=kR` zM34qhcs3sZp99l)5TrB^bSn$E6JK3c(ctQaRr622@~zV+qn21l=a%Jp&p`CDO1ERRG=1 z3k{z+H$k0So);mYBctGT1T1tp0$*6e^p~nZsu}+6PGQj2AOH5in4lLwr$KGtZ#f4F zJ#Z_JAGXyP>=OR%P7$EJgy6)(za3m-2E9$<6 zH$7B4=)NGRB_0uhSw=8-fvdlO7bn33864mZhP@zDplzAPL!iltpckALpoAg=$xB%b zkQ@>4B4|3)8zrzz@&mMI()#uP|1Zp5|Nox>4p^`gK#B6jCz!WUlD|#rQ(z59l%%8Hkh9I-Q(er$X0FLYpYnQ(?}4D&pVoRM2{$gwOaSOp}+> zYXi77;D7)hhYqh%vlw4&{SC1O?A)|YN2eFTpaZ19#q=Qt{_Q=ipppt2FhMV#Re*wo zBTE2Qd+~3d!V4-$f?h-)07nvN1QT2r?*!Mx;Hm*s69>HTiUY+M53C5<0UG0mmqT}7 zg6^gP*XN*m4xCd#cjJI-nciMd0hCxlZ1)f+22f)RRBBs;#6hh!CI$v$ zklsuG|AVT0Wstv4|Njqa4v2vKbsBQ_3Li)fl>I;0i2>Az0h#$Z*ogs@3qb5w!A=aI z`~hO$4R&GxWgt+a?P9PK1E>iH5aTUjn-xB|fbpz7T#{N_<)c1L*#cw4B8B_>>axwI}hQt4IRd8pw_chN9HO90bp`B)=ryCkUh^xwNRrEhn)gFSWQB#4k$CaRt$3`I*U?dFdeU zr&TZ%WR@gnK-oFP1@XC=DIi54W?pJJi0KF+LCn;G;s8jXKv@i_d8tKk+v7pE!=Q+O z2!V3>H4PA^+TuYmrmCo;3-8=zn!7EmV=>`KSMx( zf#Jm-$PC=;u&ja?3A4dt#h|f&M$j<36-X6$Z^$&LDuZ6vHvzq%iA&J^8bL4e)`9l8 z34m(QH{bzM@JMmMi)p*S;>HIc#n^!`Cx#cF!a>DY^AQQ_H!s{GAO%<21W;Z%5$443 zH#gi6JdBrzAc(KQ%2aJ{5@r-zFd0{U(bWdN~OXs680;LUTLV za_cuQ?uTQ{$b!aKr^qodyeN(UkFVxD{QrOFQg&?PtDvGPt+RCj=zyWCpb00?%urgl z6BFoCUy$GdBtf>c&ej`9*{W5#Q`shXMti#g@3!RNMP?& zkp7?-{<}eyDQMKU;~{tu5TrHWg+(Mt7`!xsfBRIBRL~0-h*Q%#TS0vO?O+Px0+?wN z!DFyINOA&!FZOH$dl9Oy7h)RddS;LZdV7C-0N))9an6B-ASVj&ZwIG=fZpB}55ck^ zML{n<`GZ`=!@s{3-2^08oH{0sy2Q6fmFw0f~bG zBQK9-MvdoM^T@P#qlV<0~N z_NgEWl$1n3Z8DIqz})nMT7wd7FN$`8gh75O0r>^H883X`stO>gK&}D>8Yr3rUifxG zGX;OkKX79Y?p~05&yF7U;@E#SZb^~d?Qw}Oldcwq%I4xIf!>VsaSLDZ#nwu1Ql+rbpVnCTr* zSC_cM5-?27i)x5g&~PFwTzkRc8SvslHrQ2Z-C$3qb@qZB^}-7@J@!%(w3iDW$&l3l z;(t5T9{!e}kkA3?03|Vyvw~jm!|Vc0DD;A&A@D`^Pw-3&)Qg}{fhF`80TBB!oP1(4 zG*rML05T@%g$m3Vu+d;^Uj#tZLGv0S*+E?!2y<R0;HxzK*+6Rp1t67DN~{yZi`YO=r4$coTR#W{ zwXH$5gY}yiivuB56u&&^as-B)SSJQhUI4X0&&N73fbu7ZeK6LE0puRgR zt=a%qin=au&L*%VDEom{1^?)FvI%%`+#8&X0p?`w9!Ik8XZo!}zhZchhPabgp95m4y`lHu{ivu=te4Isq zqiPldHray@8IH4XbXCn_0AI5NUXSskH-wP`JlA~j!EqL*GgY$~c7i(o*`N`!AH6;T z9MHim=Ho1k_h7OIA2M`fSo;KK?ZF2O-M$Ee4?bWx&cdWt4K*1}@5P75SvWkZp>8_( zh@smR-P)k)Sqz}LLfOti!hJY7;*FmCd|B1jCA7enV#KONn^b6SC7d80z`+i94 zWbt~T_64-rZ~1G;(RM#NnT!v_L0X1NP~5BGX=bO*$+_#YAzlJ<$v&? zB}d?k3s8wr4v4Vzn-{je$e9(=|7d<=65d;TW+yM=xSWL!x92bzAMJGg16r8w`T(42 z(mH)FfI=x$fPXtnsLTDC3;{3Jt_O!tTBqxo7mA=cI~mZ#891QtfCKstG@$SB?{~e! zzu)(a^+EpLSD?ybe<)~m&z*}8(z<&tfI>U1)Az=UJD>jl?+tws^y0BUXb^@4a`qU@ z3l(ngx>e9oV_?%CfK7h@HT?nqe%A;5+kG!sAFQqB-yV7cG&lc%f4}b)=7Zg#BK+Gy zSHm|pLTjrMY5x7b5BT?oUSU4f?JAPi9eN|JQ^ey%0%#%)ba3v$2cR{Wpd=4+bvI8_ zApibQkR4Z;FLe8g@b4E14C-}#5zr0F?zh1COyFhie~8OLS?~obSdio8uYaJ{^4Wl1 z(S&3th8J<(NX7p{Z_xTY6YDoGmU}}I3BNq(G!=#nkkbGE|AR7ENwO0|Vllk?0qTD> zz5yMa8Q#114(M`8Pi(OU&Z(eDf6&Us&X3T|plO}G0U&{jkC6Gl&^Iq~KmPv@F2F!1 z2EK>~sbpnfU`Xrqeexm@G`$uo0_lOc{&?XC;`@rEbql6-hJJZr1e&e`Cl7Fz^8Jto zIX3G9=ynwT{jM*pFYx#N;bmY*>-H5$>+DqkS^XDuXGr*gG=AY$5fGmj>XfM-Al`kD z>~_}=Y27@op!Aj2*((4NKmGyY;Hf+y-p&u86H58Fw}RvXUTCd_Cc##Y|DYwtX`Q_+ zAZ3%lhJ}7e>t+dMsG7x)*4fGc60d@4_k98ypZ&8MtQ*uEd658N&j`q3;osg1QXKdq zXFpgz;6*Z|j!5fl{qhfV5GQC-=KufyK`*)>2b!jJw!ZoI|NjeVkXsL=b+*0$@p!?G z@cjU(j}9@Ub@!Zrr1jnpAo;hTt4Ov_1^EQjyamzFmOVHM4?bXK2Gy3|oIyno4=CmL z{`m)82?1h2(*INtlYe_FnA+b93I|X&TMn)jz>=Uc4J-{>uj0$oEi$olN^1ltII6)e zfXnrOMFU?<*$MJD%gmsF?x~>luR-152n%>|+77h3MW7SR?F7s5ZwEW-;zR!JV9P*D zaa?)2eL7e=d#1*KED-}+0+(z7iw3;VM_AGevLvv3DkxP1y-34m3D}MN`@u<~SHuzO zUt|v@fb3fJ4m1P}Rt%EsX$6S}zBml-#bWW$FI!w5;@=OBm|hkys1HGdv!OiQE=??* zExjoq%WT1xfxQosoB|dNdJ%@OtQF+3fbL$9#{ysUVp{gn@E^#*p#ni!S}*Rd00ldE z{csjT#(imLh8M3)LGI%T3g|`+Bc*y!aR$15M>4G&oG8;eTfr%R253(0ytrM(@fBRIBL{K-X zkGvtyLro75mHgXVL76__1v}gz5Wg2<0b06pwg$Tm)QJJ*jKCL8??FMq1J0RY;LavX zXRFMAP*{Q86OhIKV%>6(8t}3w{_Rsih6lZv1rs|EkR|Y<2f~B;p}QAkK;VmQpFsMc z=4DC3yp|>ZA_k&z;~lSA{I(;UKF6U&ww1`Id)& z|AkI)_`p(F7XJ&TWgsb7;_L0z`2YVuC>+3vDog&wqorVZP!|jq*%VBmp-E&ukZ zAT2>z@-MbSl)@qv668=Pc2DUAm1{vSE?okf2hp4*4<6)#CGHoh5EH-woC#q=O>5o@ zidTl(9MCN%Q2#N)_1Qwyg7jrEzIeX@Y()Sp($7PxqJS62HbNv`+yy5m@KDl=jZ46S z&_Xh;(BEUAOCij&;`b|2RTfiLDm6sL8zf)u`R z02%l4{$EfQoC?aMpehR_6Y!!GZUob7IZ((!lKBf>unC|@2c?gfE)cz-s`cO_CXjZJ zaKMXe6)+dDzT619trHXupb9kb#cH_85g>D?f<%M5L2EWQegjvEAW`2Bf!(1ZK`-V( zg!s3+J^>XZV0#`ifqV+GC+LM9G}yrU3n7YM+k#B!1(^#mBoZRdza6|xS%iOkAXCr_ zm&M=!2W{5tbhLP3`r`lp2`?R385l^+Hj_b3Usz4;K=$jY!o;MixnUqH2L#y5Aj_P^x`R46DVJTOoF6_MyTPT zZy@1U_!S&}FI~a=T}0Bl1DVn~r-GJoya)r`*#c@AbAT3Sfhsx|sAh0O4Wi!=qMv`e z?+;MG@o#rx3V0y{wip!QKA`rn?*h3QeK>Euf|OFH)XC zV#@bL;0q0?`u!mFt{(zk94~_^F4g1T4zV7T#-@T=-$5@{E`S<;AmD{B!r0fK`Wn=^ z5Nv+MnASP<$3I9ruNA~dYkmPLia|{N?Y&@X|5S(n|NmQ`ssUBwAd&17Y~7(E-A*jc zr~apPhH$XF=zj`ICVRkroL-P>&}OHqr=X?mB5B>Npr}skbYgmu{`CKU*it-jLpT1aey3WA%Up`Z&Kdwniwz!GscOJG`O>jO~ay?z3UJaC~En8otK<}WyK z(mGo~y_*+j!Lp$rps|kJS%fs8*MROx0jDNV5P+*L5Cd9uftZN!0woOVQ=krFE2#7W zl@MSB`=^5JVm`&c-Nko7z>COYXzZ0JA@o92q;-RJLh_R#$ZG!Wy&!LZDl&*!V0SZL z;NR{Ox&V|df?jZfSE}>8O#J`<|I6e5{{MgZjDdmSU~G99$WiIIQ1>x+OF3!w@@Mf>*94?!;);HrzeT}Al!b2PtX zOzQ-v9#BAmQ&<`zvGH#QCpFM8i1k5Gssby>KE&4TE7Bdv(tPrNTBi>a%L_};)hDm_ zcZ0fypxt6lOfS?PgI4Z?deUFgIt5>dgH*hH@evfW$R7MZ7wkb;Aqu+RWCCPxw4um} z;e~?@Qt$Y%4QOx_)YG+o^P*zX`QX0La;mZ4ga<#klNM*C6b_P@W56DzOY17#u4;FOpFl^;<9Dy&~@?i!Cfy%znAE41N*B_8l&-DlYe$Z~FH~jmVnh!8q zpQzQ&VgU*9Zx`|HDVxO*^ui1_tO-_^*6HG9@`C9vsIu7cI-}e51#5#4Xz?lNgkDgA z?+Z3R^ao_LA@m3Te$aN}H~jkrn-4KsAF4G4neY0eyBDN^e?O>i&Jqf;Dd5E!NRt?3 zeK*J}Ae&}@rgLAf%VNm*|Nnn|2G{k)4Bf4u%o^~5S0CI93<`LWtOsHV1O>eC)CI9P z0$xm*1BxF|#SO~k&ZLOG7^{=7fuI+5P{;YcN$YeJcp?7_ z6pj3#0~p?3KofMg@0;d>B7rYLAyfNsL%<`MK`+k1f)#GaA5eMV`i6g7 z2e{-p$=`Aibczk=Bz|nEB^J^x33#FM3o{}OW`LsxGOhKw98#!)hls%A`QW*mH{IZ# zTBnZyOY>e(Ckeh+{u6kHmE~oY00Tn?F8l97n)?ASmVi}rpiHZ6fP_9MAt77nBft{) z;s|8k9jC!9FoV6Z7#t2U7~(N0n8!f9J+M9CsiQaD;Njj*7cQ3Oy&x&L$0Wffvb>zg z5A_&iDeFhb3?5{V;ROrK{?k980gH6`$n|O9fCY^LK!<4=x_#ethcL1Py?DI?)K2E; zc71c)K>}1EzT60EqcL5&%0y{B(X7eLv=0gX6fYuy=dTF?-q2`}V{Jo%xpC8hj19kgfq?ba| zBB*l;txUSXV^5t^8ZU4$Ff{K4$-rYQ9Xw~t^71|}XtWDF&L03RwYyuoKpFyG6mJKI zJ5>01OBd+gYEbyUu>1zV)j?sVyrY2FJGhI?Qcbe>j@mjTZdB}=U@ zDA@N4f&W+#WlqJ==H~7+%kN3F`2G z#|Xgnx9<<=49ySz{h>dae=+m-f>zUJ3B0&o4D}1BTLiKSl$yaKJe?tp8qIq_!f-oo zeFbF*mX|?1kUbNw;OSQ1FHpn3faXV=f3ej1fU1c792Xx3z9@&84;nlKSq_?#1=$fY zQKP#TB-qK*)VvqOfLl`xwdOT91H6tcz{&e%F{l#>%5Yf|u}`+^$*R5g?YALZH(eA?;aEk^#jCWH*k;#Gn^TH-o&x@vk z+~-upzy1U`Mpa<;g8C$2&w&`76ImERr3Z)&w@?#m;X=@MCf7G*Eg&jjG&&x4yYjL)P2zDFbV-L zj;6rM?{cIL#{WLJO}(x=0y4ft&0u&Tr2#P#G~@~ChulC`))J7x5j}(9#bB6*7eP?1}0_(2F4e*ph?-6lAt}5kdq*~ofHCIm}7NKA+j|)0y1Pk z*7QKEL2|Sgva*(d3=5F5REV;j?4XPWYS%+tv+o1A^#^m!`VXLzw;Ocm0~2Jq0?0Kh zld*-(<6hLT2?1I2PYvv8B-iXgR@M@bQ2Ll4zXd61o;@(NM2&jgJ^?T2)Dec$l! zp9tzDYaa>#WsdzFAWm;c?+$QYfphl+y-0=F$4^LS3#!hJpcmQ@ozNac2PhE-zIfIR z_BuFSH-Us+l)MA2s{<7e5GB2k!BbGSdGVtfw5*N?;t^1~Z@pCN0dnwmh+0@1{zX5; zSWp8LqpXwT>&P`j^p z3Zn;Tm~+4DkK-&&pf2r;V{iZe&*0w1zyNNJg!Hxqy>JFk33CLzI0a5K;Kj5r@)LnC_QRB42zqfCk_>i&+yQCu_V#c=+!6YtlV#!yr?;T9 zeWAv>{^<5;Z3%p_7qW~w;Drm!*b6}~G9bpz2zVg}Y1o1dz4)*@^bMMs@7}=u1v4=l zX5uHXgCG~~xjlmV>p%e10lq)FLFwp)4NN)2{g7Y~hbcc1_~JDr&LH7?iW$=lS#SRT z-vRP9cv0J%-WIMO;L!K|ah#ATlZyDvWI_I=Ykg%KhNj(Bie^XzLRt9^fTPXQ0&2EA~F zS$ziVJ&3mz9)hd`&&9o1G6lruK=n4nbcof(pgG!?X`nG8(8|OYT@ytF7#KPxFoS9V zx7VPdR&Xu`rR&Cnpp}w=y`ejTUhGx`7a+KrOQ3ACADnHhFY@;mF)}b52hR&IFfc?N zZw1X6FfcGI1GnyRG=uhoGpzLq{$71(Jb+^w+<@_E-4Xa==LE3VI$J@_(F_I#2Hozd zAZE}D{#aN|AOjMQ>IN$bc+rlmK{ii9pP8cwzAJ|9{9a z6VS1y^^iphX`QVGpx)6*?7bfT{kw~pA{M)C3n4o3;KLTC^KuQa683$?uw0KE@ z9J3QNH~M-f=J^(Zl4Lbiz1vVc5Y7Wila$?x=|Nnnbp}^Gb#Lxm| zf9-N&08P1p#GiIKF(^Ry`P}PrVgN120d;h*bU87kCB-MFrTe6%LRkzs#qo(%nYpDU z8S$xQsd*rNYEEidVo7E`m;;prt;z$hcSbvJ@x}G$XbU`9U-E%Y90aY$xXt6O5c)JJ(ctC2(G|-R%Xy;Bh6F+RQsZ<L@IQfm%gvkFoU&TcLpGTl5A z0$&(GoQ5HJoMi&2D1E&J>{YOts3Xsy<+|qJumgD&occnVG`d;30$$up0ecri@;FNu z)XW2EovvUrQG3JS0O#N5SY&;n7Q^fku-Q%6%`SnNy#`{&{?I?&E)z=vUId}3Kkm|0 z0&)c0aos*mGJ!9&p~^s$7oadY?$RLxRt6L34(ZScdcgu!20CN~bT8>~mx&r6WiK;9 zr!*4bD`S|wKf1d>J-}{}#-JDLk|E&*HT6e#BS;Ds1K>m21-rq$xquf{$d>kwW zvLEc}Zg96N=tVqK3COtPji7!MSP94{0WX}OlD-_rL93S-Ag7G3QGn!Rr1jAl=a)iH zCVf%x1k{2CA3xI>`sYO=oC`W2!1YhSi~4YA-N4^671S{S9lZ-2r|!tL?@|KQ>xtuyq+3ya79{~vRG&hSG2F{oMK zssh@lCIOy|2D?$C1k`>O03Y%M)^+hwx2s4uk3b-pmwkvCG~+A67z8exKusNyZV|?y z7Z1QE`wDD5(?7s=ObC3TDG6?oygmfF^aM7; z#@_-uVHY$r+zsx6q;-b=c#;1I?0$)W-d>BB|Nol|F3doH8O`v`Xc(EF`ybW?x z^9x3T?wSZO@%4WG?V&25Doz0sZt!CSPW%L)$P)lMkf?X+jX(eY2lcil{QLhupxaj@ zusc)$lx_lEcyfS(R|ik=#oxOZ-0cDl8VdBbco~Q=FhB=1Il5cAc7Wz5vlw4|XahHC zkYpBsWL{_-1Bvs1_K>`=fwtrKhyLjH73gf4s2~FBb%g%tb`{{?-V*>a8X9gKApQw1 z1_osQ1`z*6S{=wl@Rqd~Tu?T64pAVj6XLuVpCA1H|Ki>QP={U%)L6h#>F4nU}zh z4B-H6fB4en`@F-4$>T-KebA~Lp5`hY2L2Y%QRZ2K8UH~ip>=nFqXvAwKEx5AWC(Hu zXkWsMH?UPrlj}k1SayM}JH^l)%F`{xzrXZHw-1*{ugFJGfON2MWeGq`HHDiR`XT#J zLT?W%=x_y)^SW6k2E3RCGu0MiDyWjpzR1??%flR~12yW!#e4t%zc_Oblp>@+P1%p2 zz6tog047kzc@y~JzCX0=<8Se01Z@NWwGy#UR&((0cVYr{B0wuXz*z@R!uid>zyR?m zr~}T^EeLX7=1Fk4`Y;KAh7*swOa$$xW_V$Jk6;`ecWDC8)V$!o_y0d6QGvEK@pN;5 zf;sa5*jyJuaH2Zy(qRFr)LuNk`~N=yHym>j^k8_g>Mp3(;%TnXVJLCHFumJHP^4Gn zASiJkV_{-=QF9lR-h6+6Lfe&xIRG5m$5^-+UL@TGh4f2MNbiNL7*_xlQZk^hmH@4? zQvofFol^x$1{{zf4^W}R5%gk5D5yY^0G)*jYw3ZOHib%{74W^Spi(yAMTan?X!R91 z)+h+tg!1Cq9W>8^3u?}^P9CNgr_klVb8w)gLQF5#-2tcSV@_O*FBaVa-PHrCH(pG? z^Z);gO?N;iKkfGg%|^Tcttg%cs6c`k$o|tw?!0^Yka?Si*y9N znC1u5#@p@6bIgH@;RQ3uS?tzzGBGB~+ zy-S|||Nmm^?f?HLycPo2r)iy2!D0(RVz~O@{QFx$imWfx7T`(!Z>$g2dV_K)B+o*M zqtGv)JevU?`tWT8M}I&T!;3?=K`jvuSP1lpZg>t#TA^P+gF~tyx4fSFvJ|}d5geRg zhX?jf1t|;aZ3UGF0WWMHGBGqC5$I@L4br@=7euw5EaB}Aor=!`rN8YWe+b@f24 zAnP|Ty2T*PBz}1Y&|q`R3?~Lq5#GSazz{yui2+m>fY{D6oftsD0b-lXbYcKSH;An` z6LM}0h|M|Ei2;`4l96V}=t$N@iMGX>n?NNq&4ueo10Zd=aR(2ihWA zoLZ1rlvt9Q;+&C~mzSCooSB}Nn8Q$9T2z!@nwOH9m+qXOky@0Rmz)Y#UQm>pn1Uh% zIx{4_G6-fMwD%aF8xL7|2GRxZUZRLX)^qJRV8+Ps!dMK_9&|YQ@BhvXzF69WprqCM z;Pk)$FU)U3Coy~9e1I$>oeE+=`io#D|Nd5xNb?WwTDJ_)c|834!D=%v9$;nw9kP4l z7-$i#+$>N@z=2i8gt;IUe`bPJyq*KvGv%uh_#zr|$QNjNCusORlq0PhG)H{r!~g#; z=HCF_iNU`eq|O+wE&#M4OCn3YcWT53(1xl^0g#bASrS=ty{!{IfNTka3Ni9;_tgn} zvAq2&Gfa(D48k-9$tH5?;hG}|QU>zLJewn}+r=p(t+NH9h97JzXd93OEYv^@Xh49N z{QFx$6ewHl7qmXa-`fdV{RtX4%Ra%tzaQ)b&=7zRhYU<9&&1;_pa5ogao`HHS91S77qUH#AxX4VSK{Kz!3Oi z7fjbwkTsygK_O*x<_WMxQ+Od3wSt_MeL}2v3fBo{28N&)PTU~dKxc@6^np%4gcadn zeJ!F8ePB;!Uli+Y0bj2W@PZ4X?p6}{l)j29Wwx?4m+Nhhtd^#d$~Kn!RI zftdXJr-CSOqC5D2fq#DwD@X@u>R_n^1H-QW^`O1OQ_q0PA_%+n#L0jE)4F{P(mH$h zoc#Cy#q3M}|G$_9A|_t?{~t7z!qM#{0zUbk3AB3yR2zU+=7Z?K-l?F>9n{+z1FCF# zdqG7A==h*+Cy{^`7dt^imtaVPFAmkAze?;4}*wXLscQ6_h5Rf-(kFP;y-W7v7*G zfL2hNfeK2nnrG+#|DOPs&4%O?kSJ(dB`lwSGAA@Gftb*80cZWix*Ho3v~Lz3zhR=UxR8JY*kjThzDqQ9w<=omqYyf!4~pw z=W!xfLPA3Y)LVg;@!1y*AeAblwghJZ{_QM*pj}&Fr(vmdLE2xKf^RPqfg6(m+BH8# z5K=dTQ(h-a*UNXH&hi!LumpUhv9$wK5rAqvkoQ1g2DTTo>VW40{@zfKmP=`!;0gky z1?+3gU?c#;KWp9sv7e{l`Q zyMTxVq*f3#&_M%0&~gY~Zh%qlZ# zkS#A-p~k$3DFVAQ08#hzZ-@E~A=KS70W^jg_@eJ7NVNz|#+ReBWgOKfa4VuO3-)(F`*d~Df@uNCHS|uf@}@g33e5@Qvh-`1|O;$CDa36 z%!me62?C(4W1!>Tkh}(RINEI^%o{_Pm1f!#s0X^;TEv=VIEF3?~ANddePRP7=M@WF?m zdpbZq3IZ?u03RI00bh0lu985h6g{9IzRGF^ou7@GP#|H1!&gvaK;;a2{DFKH@InG& z;!AzdkdQA2|F(&cMMx#iDCy$j!`>;pU{}Am)&+`j4oqo~6M|lBhe*FH1}&gK_Bp}` zu*X4DF))9_dP3bITtPd)$q;2ZO{uYh*_|c1VEVrlu^Ki zEVRl4i9tgRz4^4g7nD&TY3<^p-WE|%fCPY7*nk!oarCx87cGI!!&MXoy;#x=jYXu4 z2M!%@2x9mMTApD`6(C;)z6gPs2W~#0B>3zT%&=$!o0@%sxjPi*OjxhKn?(RQuY&?T z;Kf7mWFdOCX724_1-TKD8NqXF1fme+z@QhCA*PWY?2zn(6ztiDKyCnqI~F(K2`G@S z0$*r1K?5GCP=JIH$XAdIi4sQ8JcBJNAwIj=2sRO%eNa*;sK;1rE0SYLek z1JcBUrOf0={Qn=4z99F7fSeWh;s{JVlCvSX9%McwAmAk+1iWMf`G{cD1~h=e6kExN!&lHej=N<1R}VH38nsAi z5S;Zv?hJTwsufxmqDzA;4S2B{i!>w!gS0~;4xWoZ-o#rF`Yr|sHCi%b?rjkT+XgO& zvM(}sgDXgoX*iMrB;x)r0-HvKh|9hRas$Xmkg^cP4S0eXlqUmTOs@k6Gg@W<<#Ld( zu!IqwqyX`mE5t-_#Pv>n5dZ%_s4oucMg?Rs^!9@DRPR(!83LN)Za!cV@Zym>xciaC zz`wm0)HMs-1sWj*NA!ePP!k&I~BwP`4Q9^ z3&>*0V#s3S-`)#yQD7EmWD7LT0dG}p zIGA2+`VLAoJg?_K`XG=F_KQCdCxX`!BtY5wr-IxDn&Rtp39NhZ@&ITR2Ha+lT=NS? z{{7&<;$MFdWPcZEu@C4#V*dT$!6SG_0u*vVFU%lz^KWkj1v{u)|0Nb2Gzc$%783S1wY2UjtRM%abx!dG(J#*K|Nno& z>#dNfRd6ftB!BC7a03=4z`#xdEk%N~AWkwc`!xLtMC2Gy!VY-B{|y{PkO%?~mj%9v zh6dF33qddT$6yJxL!fz5*Ztt6g%n7j{VIXIQxC)-Wf4%6^6v{Q;@^Gz z;GH*tFZjTDMFy76pwlnCy`Z2DgwD_Owt~zI=~OIr#T;fW{1SSis}hAi3@qaC`0S{>P=<%3K*kqJ(O^43DIXjUkP-$|G{M}-GBKdL z7i4nai<50gy}vP7k2*2~g5^VbXwW=-}VZ698L91xhpsMMwkL;N_3Sr$E+=Kny$u zDsjMSOF6oI_+;kC2SB~)Oq;kE(cvx|>#%~XIrwikQ>AH-u9 zAHv2putnP8-QXO_zpVp2>v)pCMIE%`A3WCv9>xI84?+`8FKEPTdoL*RK!a%DsE6hU z{{6jpbHJNca9{+WO*}$l89Xe9l)6DPmry%Fjkp)@j)QcIfRhNQ_1zA(adwX0#Q=;%xhOMNBS_|!Vf&9V0y(JW+4V0BZ{O&2epb6KY7sU{(p}D!U1uXoc zcNeHU4T8E68Wo^gtc4fiGH{vFJq27?bc%GqRT%V6;e~`K*s-A6p2z8h-LC)tUuc5N ze3|?E|Noa-&p|8c(>lRZN}wVNtQcC`f}96+4rn@dKX^IPY|!1a3=RMPr*-zO0ks}( z?}XLZPoRUptsn-}3=orle=mpv)!4TD`=^4~P-lW_fslzBFiS+5__woofrfcOCI`OQ zuoE^d0OG%13LYv1F@s)|hJhjqbgUML4=!av=7PKcwhUUzg2bR!HveL-t>NDfb{uq= z6kKRDA!RIZvghAE6=Y`6i$sVW(BWvPQQ$(!m809I18IT}ymt6e64*&l-*&e2o&Ysy z&g=k9&ZR*HrNHK9$-iKSn4H$xy5b~g(hNMInSCOG8FbtgI4*iwCW2B3$hPc@3Cy7q z(3I2*I(v8fRFJly-d2ze0WVf|f?MG)?LaG^LBqJ9hy#TL*d%Cm4ibZ!0cw#!CNEz} zGcbU|4%Pqw4>~}@4kQL`c_R&C#4>@_twGdvf=AN9Hi1Ugp*De-&;eO~*t7|MFX+?; zsA<`U#Cm&JJ65`trfWiv5 zW}V&^0npqcR5P?E4pxsgrwH)@;C){PX(z6dcgx;FUtWBXr103QJ1sur~#FEoZCQ2SR6Ds z4Vj4rhY&AB6}Wj0)!i-9)H$VBlctIw0PJIEAZ{3P$1gCXR;RR_*>zsN6Bp10AvXHLz3W(i}SqSSzboaD^oEG@P9vs>NpmQ%?99DxZq4R+C zE+NV~dqHNsIJ^ZEB9In#cS|V9ytK|%kZmt!Z2A8`ts9o7z`khR0tyf3|Ns9VZ@qB( zAL!oX`WFpbpr!Q@kVlh1N=VGTp!50pxA%gq0M%O{&jr1(gt?r*I#q(?r#P;931XxovlkiLT5IEDlGN1Zm=b3pbOFe{eQ6ytPrLb ztZ*?%A!wD~>3{$ExA(Y$0t8gqgA4{$k|2J-i{1cGdIpvAb58#I-`fi!13_iQRFEOv zEmJ`e0g5M(wr)t`3wrUq7OX4a#l8qAL$wRc=xm(=nluG1de{SUt=wkN_Qc*^5GSyE zDo7F($sof}5;@p1o~FPTd%^QQpz~aVUNAy>ADyjdz+Pwt83GD5up9aJgM$dAtOJ<> zDG}Hp-U79?U##*6J1wmfY(Un3(1hsefB%EJ!RCSt1VwjX_f$|i2zqfEd>^3zs8)JW zuL6r1)$U%9D>{2Yie7|o0>#Tzkb}}Xr-HP??azYK*r4W_ijtR_B+u#lnKuWI{Hva!V0d)Eo*pwHJo50mM zR67Gh0t>Vr2G?*Ru-XX}%-58m9^-GBAOzZiIpg#{(CTm97d0E9c>okgFXA?WG8Llw zlzNkMm6K2T4yWBfS1i6cl3gof!$L< z?f{h!AZxLg4|6AjOahe;ol_z102>3!#UOWpJOS1WYAC>(Kp=-fiiP*yAl=~OyI)L( zu%YhA66gk-7xbb#9IU3Z6=ZyGYstxf|3SV3naYn;Pl5Po(E=}3`SMXkx4Rc47zhi@edSQOg43W?S>U(=T@wMy z7ffqG!+hY70;N!p?}J{*%E418WR)=K!)R} zkV+x$1XW0|`salpL=0Lny#$?kMXjAPGR9}NEg;uP@`q!WgtU2HXJIud%O%M@i zibe4+$TwjBYJzviWAQI2Y*G9R(gMk8tq^yj_*W4k2K8^20JH*rAqi=|!-Er)wGb(S zTLwKvfaGzfh~4gBFTqp9hSUH42O@_MNIN{6L0S>;6u}2s#2xVBDWuU5@WQ7NY#gWv z0Qn9jguo_&ws)|D&jJ92&q1hzn}5L44Ic6~qVC zIiQwT0HjG4_(F0!NHwIFFjoqiT1wO*$*Z$90#w*6T>+}u!No&bXRixLsA&bLC9MiE zv~wz0SshpzIP}vxTfxerLCW~IgY^V;UOSuu9}WTvOihR3lul5@H*u4&dM33bHHUg)2lXtrN@# zM;S;WuzM=VNKll4YLEbE_3$DMd{{ap%A_P=QKs763Q`TJNnU(f297e2F=?IPKz(t3 z+5i6&dZ&VfAdMrC!(e&&g(0M60a_{sN{8@(&jcTV0%^N|%ty~c(4-Fc@QV}9;NS!` zSNOL>0`o-*L=4G;5NAM~3~GOXJQ&zL6%>gpt~33r@$Ay;OqV%8Ec{_)XV%W^5Dx;z@;XvDC6Hg73ArlEV&mq9Ke=>(t8%; zi!Nw3f*F|wX{H3cI0#ODECKx6!Ql|p-3khzfESYByFx^u_4j^oA=`Qq6d>RpGOVKw z%byT+;4UM`K`(wS0`1G(4pEyW_reRsH8$yBx4{d0ADE{~M7pPfyX4^DesKh3%4;>y zLT*rs$dY@(1T*IZ=-#a_X<&08v60pdwhb1O6(GHMVzL74aSn)HL`*t@wZURi{>4Ol zuocjlY=&3}kIBy>(AX$Z<45R;MbYCA(F3ulc`qp8Fw_ei2d4$_#-Do&K|Ov({_WsY z7w|$3ru_sw*`0>8&>?0VZ+!#l*fYFXybwBy2i~#Q3Ni>B2cRxGo^CsQh`H9acPdCL zs4NH30o}bIvq7yKkP+|(33T)kUTFOWAIL4z33kcr=~;~3U{=5jA;_F7L;_lCc25PF z3Gel+2TwLZN^VfO3R*Y^P4%F@OTY^`J7|!D3o>v4^u$U7_3_5BB5(s+1AOzDba2%`;yk%Gl zq^@}{NC`M`gBhST1&knxmpd6i<5A$G4-$Mc4>UvzS92H41qCKJKb)Hfnj8ZSH-ge2 zC>eu?q43PG)VlWef|4(&vH;OR(BueBw(v#(Y}5+cb$nq0KK&ax8AFol3-3g5v_O(E zblwd-)ug}=-AM+{zMz4Ag?XS`D>(SKO$1NTUgB@5W@KPMnn?xise}&Gf#wik$sL|B zLH-VWkqNCMb|L0=AsWH+QQ+1#Y=V_JR0V1tXo~bj{wk1LMIaNjrx=)hRiJJJxvpvM z|NlsC0d38M>P2-6C@x@`|HWNs@r>jah(=7eK(~TIr(MAPi2LAUACRYmL7PR9-1Ke^ zXk-mMY1-T43f`%T2oz9gfLha_2_I0rfuupBM<9N8Pb*}kuf zPvq!=1qCFqK><<-wj8|t0kWkZ;yB2R@KjJRbc%Gm@CF(6^8Mrg|6guDhCT)Vj2UuN z6*x3N$rJ1q=-e&Hov_dd<=}_R|88MsU;wxLK(g@3>o7iOPJ&zu-rE`j9YaD^1zyJn zS?~s#y9QeZj`%ciuZ{;6@x4=!XSZi`vUI&@nGFhQu-`yo37SF=LP`xtQ{CV>{ufIu zKuHPK4FNmng#$z^trP4#{_VXWVNfei9U=iLq3}2|Fdl3qc1MET_+S<&)|4R%z-t;H z{sf0EY;WvtkRnhBLVOQP2O_-i5ab3OrwQ32J2e2ba}dIAbvgO(|BIYi|Np;8p9Sj2 zf%u^64IIXhgcE=xW3hpcErEwGB4f<}B_xemC}9gur$}K7$-H3aLc-R=92^j!-~zSp zKvDhTi5XZ7)GLLI?1EjFCGg@jL;|E37PbiM!DF{S!6V@uC{71QG$>4aW`Y(cf`S1( z>mUU)B;kXD8Em3B_{bg}n2EhT;7#7pJO=i%=}f#{hLjOVUJgb0f`5A}$TKFz+R*_~0r&dE8KC6k2vKl|f!S3B znj4R^fJVm|UKGsu{~spX+rtXc4h{uaV)FwT@ly2vRD$OgA*X;q!vQ1@N)6DO6Q&P50}hUW zg`ChVS7HWVnUKKj3Nsrfb}4~56tn;hVqQll%cd9Kr-5R|0%0I{uXKnGn|zj-m^k~%~8)7ZnH`n2SZ6T^=W z|Nn!|?3n$~i2<|(golBFVbVh<2G9aTkeaTCP7I);0BtA+sd0Mf!~oi33}Wko^!7pQl78sK09y47vX}Fr69Z_? zFNpp5ffEC088C=__kj}wXyK*;BLl<3N^px6hUKN9u8i2+oggVu-oJaA$FMJPzz^nnutC})DiD|J z_njC(^Ff~&7#OzScVYm|CxiUH`o0qbXbM`4fq`MceJ2J`TMV=>eA0a<22i&U#O}E7 z!~h!31hH%HJ28OTy&!hheJ2LcpaqB>eBX%yG}U6!7(fH4Aol%xP7I*_1&Dq9o)ZJ8O%7t8 zzvsjNs?tF0{r8+0K;;pLz4M+E1E@F#vA5iFVkl0IPi06>Es9Tt9rKcxT3j5T8=nfk z2+Rmd8$xL~RZ+lDl$sWwiv6sYREDC|y!@iv#GK43(9te=@o9<4CHY11$@v-acqP*+ z7>Y|$i&FEQ!758qa|?WmUGq|l(kp{fb0B7=GUQ+ifmAx@XTTf`(GF7=Tnh3Kj2DkE z0Cc`gVp6fQe^^d&d@2K+nO4C77Gp>%O3X`7Wypn4IDD0onFb09e6nd349SqAa7v)Q z0r>?K_E<#IDo`Q=J!;Y_7|K$MN-~oZbK*f(mlmgjBdshI9L8w6kwuGAlR@XS#v{Zs z^GZ_liZe?p!Kb;#7o{fVfWibJ3=?t7PjoFy&5QTUO-y$xO-oBH0;z+E2BjwEpon6s zi$_&c5bvCkmxHDZDu}8Qi#o6ns;YwI-1y8qhQj!=lro0=(vtYpiUNj|%%b?R__PX8 zT7@1%RFGc|ar&7v;PYvD!j8Ls0i7>--1P^9`U9f)_q&QT|6nW;;@|Hp()^RDgp+@N zs7UiK=2Ffb1s7*Cv>qrG&p5%xz>u-v;%tTtiA%E?Uf8VD1>Ks)zdux>`4?ELt3>k; zuvTA*=AX=^oVx@r&t_=7R4Sfv5~S7P@@$5T9hYY_ykLZC-R=uMu1qB8MLiR&Mq+*W zn*(~W7HE^B0RMK-@spqo4BpZN;lJ2F0lcCDbcPssYdvV$RHy*|b{4Jx@aBBbjzS3c z#T1BA(BJ}i4L^8ymH_{D9)Z9Y6%e_!PS-D>B~YM?W4|&&UBch;4s-*rYHu6T?hCX7(mC_xblF`a|PAw zFOET$EbjzK9el{Z?8^f(t&?Tq4zS1r24;w2u-=Q0m_vE^_m}?ZW&zi}mHq$!zbNSk zRl(j_%>1C>d*KSV)FR`VCw5B%kt_wBR0J~A_YbHEp$;2r z06-^`g7Y`(Dcbz|eK|l)dsmQFM*i)g5hW- ziyN?4K>Zh_{BHu52KyT&E25W8{M$pn1iiSf0alJHqf{W7hFY3{+=h}-z68AJf*FQ2 zk?26o0>?T^B4O_S|Nq6muK)jE{Olq!w}1^nEBSN`z+MS>p$uVQ2EmJ&U7#pC3(84M zkRVV00}t|TID>qXI@n}fK^_drxtR805Aqb4X$JzpS`gt1PI;_IrXi$22^U+Ci^B}V z8ss}6sTdquC_z4<^Z)-B-5{c^^Z$RGl}ROJkrCLLsEG+P<$?3%L3sTFE@NiufddY# zAJs2l{U>166UgIWMewW!5_u7Yq#Z5;%7hm?K)a06So z16nJCEL4G;?gcg#eA%HuTDR|yv`!v@7or{i|ATFXvd2q z5e5giOyG+~go5L)Z@}aAa_x}SrJ-kDFoRqHHWthA_@LuyLG7M7ptce2vQxzRU~PGC z=#e1MEr{JRRL46N6qW_{ zkY@hvu4h2En1GI{KEl7>^$7EYpl;tQfiE0jIzjic9!cvAJ@dl14V2OfK`j~3?K~i_ zf~sP*AJ7QmZ|MZLQb6rI-!FkL{zAe4RQ`i)w5kOZWnQ2t>jhnY0zLp7a(X9!>otN2jK6misDTL@;{ff| zbNvH$jUdQ184Z<9Q7=wy1D`Jt6!1b|E11>k`r(CX3*yL5xEH{hx_v(czG#C~-`KtW zvl;mqLu3oVdcBbJg7-!Gf`d&&4Aj!z+YIuo5y-RPL%l&)wMzuNX!{CJpP-Expn*qU za5Q2xM?hJsbQk0d9c(9OgU-6PK2_@rI;ondSe^}O4q*2xAIQ0{XM=AUJns4eTt@tA z0?p}N0v&=3x^@Kheh*MT5R}lmLGgyWzaV0Lp*F48_XzZg-B5ubO!vM>1h3iy7Yv~n zfWr5&r$5N0?6qcDr5)c%cr{`Qmlc%Sg~B64x7N z&YaL<9eN|^#X-nIicZ%n;2qDP3wHuDOpJ|-Uo3~oT<8Yf3jw-g2ejp! ze|rar8Q2{Pn)U@3N>>73>;f;g6X_1+=xhR+@#1D9Xt?=BK)3IWz!xzvqppB<+ckmi z@Ckre;sleq0N%t7y0<3~R8Vhk0x`h_A^-MJkO!{>ya*zqz6a<<3CI%A<=~*( zd^%m9yhsKK_;RFmPXyielhzr!;e|uv|Np(NM*^}KL2LLYg6s}@v04pWBn2S+{NhC_ zNQft`({&As1337%PXu{5=tY?lg20G%d>i_@$FE_)7*7tmNVtDam7i4I?`ACKJn-^ZYAx(<337|6b$Y&>pBme*Z z2Q^!Tzd-Iy0ZCb9n&q9YU--BC-U;ju{Sfp*2PXC*t=shvXk-ag$oZmNl?xgt1G#cF_%uo1 zADFIu^WsV^*p)vpUHRh0j#`i_-vqqqhosE3PS+dVzApk_)Wi8#__v4N0Ns@s@M0D$ zoxb7U?t3M$JM=}+i#C|pi(c0=prh}vfC|GqK`&yZK>h}2R8Ug^)DF~=h6-H>deMiF z23ZL9@h-?h=K%igt~WqNJqUau4pVjkw2X7Rt4zR)CorKCfiFB@Y*4BECZHSCkSc+i z@?v!-$U2cu*C(I^pM6NI+gGA@3UpJb>kr6Uh0rrW-L6l-89Mu-ShuT0Z;t?E+i2(y z@B#@?qRzgk!wlN^>-qycgcAfY7;Ne(9cEt%P~rz=mdqMZF^33-2SG2wBtecq2?k|^ zqhGWmq#?oZCFsRw$g-e-7ggXUA!r#LBs}f}zF>!`M})@}n9zy97Zxx!EId90zDR)? zHyeCX1V(s(>RV8qhdVqVDp11%5>lXf8<6M0-7jm1`Op9Z2eu$Yf$tAci^IDb)Z(xN z4S@84Zm8)#8_+9y;ky&Vi-+65#X|ED3+p#8OtwQx1yIZ4#&;)%Gtm70f!ii=Fez|9RtA(-U{k@)Rsa8kC*UtW0MBvy{((&+YgYaLKLOnN%Ra=A*6qXk z0{gvpFxT+!58-_Q+9bCeG!_9qm<-lO{sG!}=lbQvwaWkhVP`=yhk`D40j1$i-w!YL zRDy26_y9YikD1vQbUg`3U%(3k$RcfUhJqdf$qXsqetU-C@U%75WKbyr_B3<|1e)t*pwcfsLu%mw@Pt1| zjSRTm4%#hw10sbi1M#tc1t{&CfM%QX{(=q%0;T;kznmCeJlzaR`^`sWtlzw_+yY7Z z6F_PI3P|?<|No%6@xd=A*jyMWy@PRR_nXEy4?veq^zKyv9hO~zsMQua+@8Z=e6-W` z&+*nB|NetEY%;t!UH<=nmP8f>1&If| z2!J&jPJoW2XX)x}-2yu@VGqnq5Cdu^h{?ad6+-!nfXoE#2ISvA6(rQ#5(;)2|9-H8 zx=?4b`h=I$=wRKPps@n$_g@9CFSh|DB~Swy5@S=qDKO~8Oi0ZL+O`1F+T8=b z{WI{zMeuwPWECtZIm6P|_8wPI9D275s|17FynJ8F9? z$PCa150L7>7twGFLHzEiV3YZ`w}N;9S^O`$A@ZQ%nJmT^wveJD;Drh#5IVsbw|Or} z7elQOQa)xb0S);Tf^IwoWzsDE7mhHK4g_Q|zW6Ky_GmzNFGz3Ti^b2NUHTHJDd5Gm zdy7G)Xv0krc(GaltPeD{57W8=Vid$J&@|cYDglx1o+eV)svwWAO>d!P@V&^ z-58u1Krsqhn_hF--ozK@Bot&xWY_ldxa4AAj%vmqmC0WXXo?c~nZ1kefkpvfMApci|Kz%$Gp zt?~c=|9|nm5Hh^#DiHAEFeKj6I$J^3@^AMQ2m}pQf-h7IUjZrR|HFk}v>XEq;pr#} zfSN_1v8>~*pmkpi3=Fj|`U?L;&gTbRXY!(;5Y|}+--YJ-1(M-izkqIFxf~1=;Yzpb)gTCiF{M=Txxy0wD8WF9S78 z)4F>>LTQ~nt_2{UvlfC{WME~-U8aK0lB<33vEcvz2`@ooS^V3;;nRAc#1ho&=mmvH z;ERoXkf7dwA*dT1sNZh{yogy0?t=#fyhvIIW_7lLO7z#xS&T?p%b;38huq!b1sgLX zpt~0oGv99pz7U5SB8zMYs6@muCI$)`$8NAyGlM`~ogYx+0$;qE4R%LRzzc>&AeKN- zz>8xGKr9YWBfHaO>Vy|;Ag{h&jz9Kl-Lk~8#4;Ed6kyl9PY8NpBMNqXz>C9>PC~$o zQxaeie(+6aQ+z?e+wIE(Y9%em2Ne#BAopN3Fgr86uv?9krw^_Mh|-1kEJ@j1f20eCo*pLfZk{dp5)=+ z-|xW#65j71pnU=~92O$L(#z5X$~sTL!{A*3FM1)mU(50D_k95Bk%3lnbcgaVvvh$+ zv$HQUbh?P%0G$`w?aILlxsQ`$8Q4m&An3|j$eo&tz$YT|fJH&0iaWSKx3=6t5_RQZ z1zidd@S+?d2=Xy(hJn9jIx7PM*ts5jpmfQ<{#4)&(5geoit;@V5l06xUkrjd73Rop zUk>IFMwXx#dlrM;1`ahRKCra*2^{9ZZFBv>zy3roPZwwg<^e=h05pRmG657`FEXHJ zf=&<#ox1BCvZvr@dAhia=HRc^$L*csUR|_8>}_pMG2(w0ZOa~KqJd7U3Wk}dvOL*ErHww z8j*$wzi`V272mF4r)FLRyR1ia%VCgU=#lPHj_#H=kakcZBn?*TdjP7eMHJ!zU(f*i zf$mZc{{7p)POatWo-!TmRLH8N$627-;K@Hw4GHqmcCe3vUPyC*1G?LnBdxO$r1Qnf zERf$h`1dz~xUC0j<-r5g{M#pjA}8p@OLjCJFS9_Vvhi;R&9zoTWYaobPk@VKa8-!7 zr4cm$(fo^rzc(2)z_8u*2PlNTfZ~3;i&t8}3m-@=5AMrnUt~z@bP;{?LOcu97)4c^ z5%59*N$tUhAho=2UcAmk8!dQ~)`>0EfNcPubs56@1~gib0_uH3|WsAOU6C?L7e?TS1xl3#hp3nE)!T0$=0D50h~!*Q zi5d993*EUO;TI_xpyXE$KBO%a+0kHcxq|OH#^!q@X{@&00iVEt6gXhpzNLd~YXJ?a z{Q&J&0S^L!cf82#fldyB*1ep76~mo9tSz8=5~L2|b&xu60S6ksxd>(*e8A8-1)&ZS z(NjR$K!XvWl^ut`gVe!nV}{s!@DW324_F=EjA9PTDEnQ% zfD+}(Q^Wt6_W@hMJau_;30b)Q3 z(y1UO=y*a4p}P&89sxg z3sCxjx(r+ffKnEuB><5DI~`mM+|ma-E8xXOE(ilD$%B0W<#)r%gO}g~gOHLuxIAD^ z1ts~rps_SX5V7Geq!fp(E8%YeE#C*1{DI($&-u4|@C3e)VFFtUD$HOZ4ojxpp&ZOE zTr8lQtRH~tSWqFoKZr;B6oetbdv>|rnqLXg1^1g(|aaw=`RzudfbTg%Od+?-n_Fm8e-GBHG+OwZ}Lkm)Pwt^VY zQV7HZ9gMF9DuqP&!R<_Nk#z^A7{q`o1~EZr@q-l$)P`jVfUhqAnQ`zDS8t1`OeCm8 z?**wl_>hhHV8Dxrnc%dKqLQ<>MO4HPNhK>t<-HkTm9KkVOLDpv<;sITgc@ttNL}f3?q1hLOdRs)#=zvs$9h!ZS4Rofqt95MXcox}oOnEy2dt<2`%f1>dr zBLhQ2C97xi$$yRzC25^rVlP<#{{IhdGkK(eh9^Oh1X|=E642YbX8-^Hf!(13LEWvO zs1A7X(u9Gb`G^Fl=-VHd);SfFWSYSVhp9vy!eB1pgD_Z1SYMt5tw3YW`rq5SK?`*C zZs&Axpo0A0+j~F@K!F?hLh&Eim!Ojpwf_Il z5&*ZK`S-ViWZ~TtkZ*!sESm>%0(idkMb;mfwli9wW^pfw0#(K$pmA@AW>9I>JB3$e zCFn8%tR}MT0GTL|#m&FH6=Xobi$lM$n!A7M3N3J0clS&HZR_OU4^A7PGjz26|G)S^ z`$D(RM3L@^CFTqakSKtr?#zo|SG0(NToLd>_#ZF$va+?V zP;3N;6V$Nn9$tYjD$#88dhz`yXkcpjYa!zU-3XsP1c`!tvE3;RH2x0CB#?B{+X~9N z0lmGT%pTY~6;zM}^|pdao`7y&fk237f?k{l2doOza)?hvz%9+R&Z*$ivKC~=YoQ&W zskyYyR+J=V7oZj*KbpgTfO_sfvQG&0PT>W40LoSAox%(92$*~D0cURyE678jj>!*1ks1IA znZOrW(xBo%<7EK}L9aZLUImp1k z0J0HWu;5DPWfvcSiYUVCq?geBmzCR7A+-!VwG+gAWQfVXQB*mkgM zLFM|EH=q(S1R@HqTtIpu9a_`^1SF2F0O{?8nDO8zxX5_v_#d>#9#mZi^|tza`Tsuv zT6^?P1tk@DK!Zj*nvaO^Z|?=E4eXr?QXACm$`kM+)Y}xa4Gxk9AjvPS+bJNe(=q79 z&Ts$!ck_Z;3C%AVJHZS{Gc!ffnc+qBRB$sBGHr8jDyWqSYJXV2d9iRRq?I`Vv~Vg% z(wPC|7|@i?Tq$P;P+|e)im6i03?OHK8lqiN&I}-zf#zYFq?{Q*z66z#Wm3)zpqOOP zWnjpXa%KP(mEjY#2-=$HToGRk-ku6&fVQ4i!h|3U(2mZ;lEnCw+=}?L3PUr76a){#PJ@Ui zWtPMjI8#c%)F+-(0qiY+m+)uXpsqn^_v%LQ`8w^!Oddu zdKeqfdi*0h`4Ll3$6Zf=)V|pJ<^TVTFDwiUFPb5ybh^H2u6@H$DwM%sz`*dL7UYy8 zEH5)yz=ONp9NmEmouN-&O#K3>6FJhl1NqWALm#{-hKY0sa&(4XK=9ML19{RqL+`u@ zgsTt)Erk#I^8f!1(0F>c@0+yFM$pXC3q6pM&?iCNu4e*X2rdTsk^?+4=a}|F2rLI# znDwG{30N+z)Aa=?%Y)iAp+}l)k1&-uH`g9vF5zgdJ;GAL^g08)eg|Si*^Bd^LE8tq zT{+S^14>>T{0v%b%h4?e?)as3I*Gkl_Zd`?7=s(c;EsS-*^5~qO$Q)Gl)UHxX$s}& zW&-!-(mFlFUQ~iK@ox`(k$p&}+xJcP1c$s?44r`-Sqz}%m{|;<8^?U_1ZJ`Ig7!-N zmIJw5rqlHVNd82?i>i~*k_r^vCtm&owZ0fYt4%=5c)MNS1iU!$*A~=tfN1eO5%|I# zRm*8628Qm?H_eB5zySwZF8YFH0mvGjERpWeH~ib3`~qGaIu5f(I!mumw&tOpTHL^pP(hR>z~(0K#dJ-+YCT1-S6bre1OsVM6F>K6KGKy zNNjtH7s!r)7w1?Zz4iT|CAx1wSA2oQUrhf9N){WtUEid2`#wnP^ayy-@)0z=0CLWQ zv`(j>7bPIR@0;d>Jb^EEfWw|8BLOt@1}f~bKmE&M&*A_jhZoV1R&T%yrcdC8Q(AYA zo5aki4E)wU$}DFaAN4 zf^(=N%ZvUG|Nm!+WPuV}K%1sIK{!NUcH^52zY+{R6(Z`%P~P z*AoT?hJY815UsCIgUYecH=Pqf{nKvO6OhX1io7$!i+g?G$|tV*h>i7|7Y6;13J28K zx+Cw*@C7=K@j~92AuTCBIW3(5G~eF*Mh8^hUD?SE3OrD$`g!$n*BjvS?(BPLxdkrA zKD>bQq2<_{7poB}I6&nZf-eXv#O6SyJ3x-@^!))^q6%Isojebe;ozlJ3P@e(ouF>l z4*@T(&j-taw>p6*q0%}-uQbt$P|8@_* zz!!~&kqeN}AB~4VnIi~NfVgyl(*d{ufoTXp(!k%1&;Tw#grOQh1qe)oJdy@(Bn{vK zl z81%vz#D~Pei}E?3ux9}mAdq42kC5CS`XK0q)Gx3@16~|_3(fs4(A<9_@WtDAU`bHD z_~PLkXaNH5vB1lq2LUgxLz=Y#FX~`MAeBL@;6^-oF%P^7%Jm6kufY>g@99O*iy3dg zmVlN7y|@Eop9p*bJs%ikIjA}e%Hn;o7a|Sb#^}iM!tV{N0QmtcK&sop(c0~LBR;PA zh>rD}7oOdaY!1q~ko>Fwp1bdKeSmdI??Q0X6*17ozduk6RL6Jw1h}MuR^;D!4ao&g z0%_eGX`Q}rUK~Rb@nA~p^nLMSGfapFqUgzsg-9Y`MGs!|frTXa_cL|-f_BuTbq9r{ zb&5E4yGnp`H6LW`4wXpj=BUG>HFtJ=xb=N8{7Ji=ATTpuAp8==nqg4 z{U_iB8zeD;i|Adi!O`3uD#5>>t2UaIi` z`Ox(TbZFcw=!GIAZGe-})mIQt`huP13-V+jhI<4+mb_j9>eBCb^5Ng_`(ftypRJcl zG(jeZet>L&^6&|K(GK0W0$QH)`XxBAg38|4>Y%2W>j$V4e1cxY!4w_{cyS1!u-jK6 zup7KG)%69ar~3w!@IQd!<_kz~^T7yEOB~YP5(sz!Iwq_6hzgRf2OwSG?1HST0HKQ~ z;05R&Opq>chYQ~GYCfW1{pN*R2P_MOcE1Tc?g~Es1X3uy;Ccy4O1L+*@>n0N1#gQ8 z{S%bM_`(|EEl?=)Z};U1e4zys0B;iG2zW8`6*z>ziOu&VI37R?)4P2I(mGiJU(9*| zN?OyJkFZ$3d9k(~<}h&XJOj#~J9I=C7+yGcK-Sw_dHw(YPHt8#1JeAUjT-#heMJIa zq`}7UTz`Nrq7~rZ?5|)FcQS6tNI9 zwmXRgyzqgGegL;7kATu5#(D`E&|+cG{f3~H;?z5@|Nnon`8g<94}j+FU-N0Cred9io0ET__zB62n2SA z^6+nW;tF`-zXw`l^0#aN?`-u2EoD*QUw;a;;)3}EsEg6f;+59vdfOY;A^;k|NsAj52R?j>jzNs`T|On2ZCNiJ%@(Lfq)nPo3{k4 z-~azF_kt$`c=-1_d4P@zaR;q30j0hZpkM+OO0FlsBU>l<_xqk`{>jMSs{&fLIQbc< z&;@C;X*~c6AYag`ZvO2qUZB}A9{%ltTtP4NcEbY*6soWkq7e9^1@011=?#u1P|5<2 z_$P(1;D$vaVN)Dj;=r6xPgZ3)Spg}hU&|EXPl!n|E`{eci z{~&d5g0cianmj;53Ig3u9H0dCBd~WWD1`*Qc+LdY4DJQ+Z})u?_=5E*xLio(E!ya0Z%{;TJS!2*C&YF z#*^0VdjhiJ9GpKu`R#}Gg<9`!uzCFZUC%II==N3V6$u3Slz+R27-;121ZZJ5#Ix7I zBf>mLp?N0Y#iz&MxJv7EJ@a}l|90Oqf!(1R{M(rVUfh7lbo+u_^%9g?K{ET9pxu6z zv`!wUZdVO>jjjQz(I-C!r4iQ~{QG^MSRbsdCPGWXWBi`HVSS<25R_{mW_5?Eq;>cB zg5n750`%Y$1R3{w`|C1@a^sUA4cMIe;t_s(pJ25Yl&-MaI}>Ew>+O(kS%t1M!wdID zNVg0!D0s3FG$;tF1gzh@=xKyh5TLQP23=={C(wObJbI9MXHZ}Er>-*tD4~JI>E7!) zGk_uy#D1;o%m8u)XsqxKNbl?a|3T~%y5Ke2@rV&L@DXd^wc7|WhT_yh5ROkt%_&J_ z07)e0mBfP&iG!#|5rQrn1@D(JVPOExrJniy|Nl;2(55L+<%Yaew72yMI9I)!A_y94 z1Jx|OH-1BALZ^Zlpyn0mzQf<3MA8ZpflMgZrhrd~>2?(XPb`3nq2Hj2gM%M*@pA7} zkg-88!l!|Z6#*B2y}cl@z!$=^Kw>PQg$Xapw?gw-iNFrf04O+vF}`$TW?*<(4IUf@ z=?Qw_4>pGdRDAyibpt^c7(!hMb}l57ftgU3fJWVa|NnpR2Qz4O_doFR5wQHhhs@of z3cV~|ovjzZo&t+@P2v6Y`~Uxrsn{>)<0~ty~bTtSDNq zK7`tOBJf2glGcllkSx7$AM9Qh6rHn?bowLd%s$23Jr(L+t`}1wTA5M2ngG*!A?Sq& zL@U^<2OlyaX^nztWkS)ailp`CedJJLMRKq_L@OhTgI_&Bcy%5`D>#(0Pq87{`s5zS zuPAmFq9|rZQoQ{hXzk4PzyJSdv4bw92d8x>h;sh@Ct6SPw}6J0L6TGN{Qmzx=!Ggo zvZM7pIB|ee{J{sz-M$LFB95KlaO2+(7VYX`1t*zaPzrhB3$p20>-FFN|1-Si@0to? zG#p~=05kZvfhG92^@2>bK3E%?1@<~f5h#IVvA@W@2lqTmpj^EV7k|-t4;-HS+rWmx zgER2Og}b1ZY!|55>~015BdwF^#cq%wq-+Z@a%OmuT>~!LAVu4|8c@*&Djuxgyx3R+ zDcZpM@M4Ud89>aD)S#) zvVfLtbO$n}b%wrpaqkW&6@bf?7n3%^3K3DzfLkCBsB-Rfee+`H9Z;}2YR$#DmCTb?<2JAGQ0ywJY`Do#Vc9DKwI*`*5J zNdmi=wg$BE^%wCH02$=|sRI{#k;CV3Ym3EG|a$9dbpyD22X=?=7f3|%1HPR)^b2T39{+ZT;_j&+ zp9j6z2JYvIbhd)Huje-J1-XEsR1p$v>?#ZlJ0AQ8-5K5ra^Z{ZxBmZsvFO(S{}Y<` zf^>jYf*2r`J0U8;7QE;MsjL90>;-R$4C)435zyTWvLWz=E_jC^54bjP1b5_EI$JM* zR>5uu@2ms`3dCF6Awl<|`xZ1O9|(A%4`HWug4ObG2X6=j-LwkYS@yyZvR$;ZRp38p z8zzVZADsc39|I5LLu4`-7z`M?dqL8HFMQWSqm93%2sDDoz#zcTJryJu^x`0-`hmDF zi>n*#PWX9r5MdOAOI3u$;DYQd=m`^i^tKvnq^Pgv_x;fw(z_(+g_{Q`0z}{zrQHBkFae;GZosJ>JQg2#10`!Z zfz%Mpj5as0WJd9|&{!ouGfn}Y4?&mAs0p(Ql%rnH?FHw#fGp6p4cmJ``43(~K<@K{ zI;yu7lu=;nK#|BLWzkVpovxZ!Vo3dyMs4Bb;fYJy(0 zuZG4qf6GaT+ylmLu>OD-)(E+^5IF^g?p~0-z!&!+tp`XB%Ho3MFu40c-pOEKaA1HL zwhp2Jl*1u;36jIrA>Imj(Fe)c0WVr13Lz$EfO9ycNO1(w74x1**G==pHaqWKMEf+PT%OkV7{19k>#3IP|^ojnsk z>EwmhmH+==xLyH`CV@88d9)rVaRj$P0)4>4oS@TR*r1*PrB$gF(8N(91xs--^HzWs zI^4Pp>K%gu7hKt5RQlk+jb#GeA_Uq#4lb&eU52(PKzpZObbw6&wIVjajwJvwpnX6P zlYf6Jg!28;4Q`k5@AvUiu|8N^5313-TR}~=UY`jr{QIYZ)TMQ^1g3Sig4%~Kv@e71 z4guK%+Q1GHg4OoDAP%&`2djnE`BOm>&}tv7u^YVaKIp}M@a=dao#5T~FGK%>(gJvc zPj{dM|8^FqfNtSmz!%=& zjp>jYJ|5hwffp>0f{1@RWXCze=luJ90$4zc2|?9J(2JRuz{Z1%CR+#_UeG|wCRj$b zR{&Kj9MGh+5aMW1^Rcs~7t}s}@$VwYi=kh3a4|42fReQes7$#576rGaWU>z#bcb^E zwlIO_putY+0c!uHbF)pcCMZyMB1V%)s!X>iqxzJ0VvB`M!A(1J({IZLk;RBA}vtFX$3;&;fGW zePsf(_+PZ2hbFQMpsvJ^ZeI!h?IMmrFaF;JiL(T}C<8Z)SwLG;K<7zbI_;PfM zGzPsm2ENx$1hhKJ^+mvoa&Ya$(&_pl3$*1QbiN>XUg|*r=y<6Y65xg<@kRbQ zP<8~ZrBQ&M9_#hO8>|WG1UN@$h8N#*KuI#L`G^W={x=tr3c>yCBaY4tpbiHpja+bq zj03_CZ#x5?e`Cuq0uf3B&zZV@croQHsK0m?+}noshSfl4qJT3jN^iJp5iA5*U(Nw7n+xUW2F*N! zr;uN~@IDI)&d?WWouO}D*qw#;&qV@Wd|C+8Ck*bN3&8s4l4n6F5H#fiuCPMCKq?wY zR~a-53YyGf1@Dprb(Ps5=fQ)!%H1MOol|;2{(kZJ3@9#KzZ`tP%Ipd{Sm{ezw}?kt z=Tz`f3tP{C4nF}gK~w$veZO==v<1D8z6wfn904yrLAo`at~(%c=?YHJplRNN@M&I1 zm!7|OIjHvmIstP(l8Zn`Oa;Dp4V~mbl7Soq<^*;iNIkT(4?c?xvV0EgNKjrtIR6K@ zCVatj2JAdgfT zLqAxbsx<=*G8}xs20icVI7Y&UTK{@uArXV3#F5wBq|3U-UpXSy{-oWviQMeLk4v4EeA9j^(LqnGU(C^wk_}l z$4}4zr~+i7Zoexi&Ai}Wf3Q1LrkBMjpx5_6;ESm#;1UngD)4c4W_VGY4l077$Mbwk z2ek@7#j5q27dz9TAq&x;~`F-T>%y8iU|No%#J8ro#sozq`|yYgampe z4^jhKJYAAo5TBb^0Il@F^*x^R|Bk!<;K-ZB03JTUUZH~z_&f_rJiZ*@wajn8ioq!j zV`NSSG}ba3Jl*X3r91Qo|9%!P$lfJpUr@UH)5|ik6SPM8#c|L=8ip4>$3cZTs6Frj zv@*f<17srG^#iCNhn!Aa>)Gx4rkkVF_X&7WFH2|W8|Yz_AD}iss#@6b*xjKoK#RgB zeFqgEJl(!8IvHO)JqF5t^Iv*`=9=XaHLqBx0a0R@` z17DK@xi$RLENFdM>XpR^GAZ;0?Ch0)-Jx&5>iYoUtb-VrmO<(*ug0Xp{`G|z|n-|O}=ur)haM1oym0U)K7n4&U>vir- z`uBgQXEc`eI>%iPfU*ioBFJD603CMbs}T5N5oGCbz>Af~K?x6ZmhGKgpzXkEouM~g zq=4K7TP;>1+#Sl1*6jpZ>9XU6=Mhla3S+AnIC04fFrULStF1Z)geJGl6JH-e4}2W47f?TML&V$ZdBs6Aj?uo}W#>jm0j z394=(8&Tg(0T~hc2D%G1I1Xe44@8ac2gnvw1F#z3H_-j3_hZ3oUN3xUhQDP4noy_$ z4HAJC7eQ7a?Rl~B5U4Kq-2)mD0-c`2)6v;86;!5!1TqhScJTN1u;v^_K0pE_)!8#u zrX8f!^+)Cju&OD%DecI|{eX7Abxvu$()R!V%RG?FK#kc4pePG{0By{I>OWAmxx@Nk zZ91qw%!D{H;Z8s=xUB+OJ_jo4PTU6XhX5xaaN8pE2h@}wAe;F2`+|mA- z8{&&zkw%bg=M->1;PuJZjr{w4?*zX1l?)0r(4;vFC^WZE1yMm+A}=-`1f^@xh1m>K z{{2tucHIFwt{LQN-v`hMng{&*LqRUT0jdV3@iQ>+Z|?O8iVMuA+QvyKCnn7)+GcT$RfaCrHtN{eh%Pme_pjKt43-6g1ks#~9ve_3I(z;zl z&w%Oya5$n&bb)PvHiyoDtUksL+SkI-?Zna9Dlz3B_@p^saOMep1C8)E{QF%&xm^R) z2U-Q%U(Arj@FM*LIOaNA|4jb(AJpuA@pL~}B(1ac3rxrfrsxe!H7wn z{NC{I4+X`j1}HnR!S20!0g8jr7tk1g!N1@21^<3uaE#xD^m^ZPw@d}Ov9q-WWaW>& zAm@UdGQ}6<&a}>{B_Qz&U~$(s-94=!*LLaqJ z?FDtWd7zOG5&}gS$l9P6R(ruo71X2c?gg0=*gX~G(4ZF^APaQ^__w!$>;$D7kiP<7 zu*0-~PBH{JGoZT{6cT|iYN1+QYyltL4w?Z56>|GSKV%;gf}ArAsXX}i`@ZNE@c>Q# zfSuLd3req`xkGF!!5vmmXFvOd3go17NHxX3KlBAS)w@Eh12t;1FRFl#N%wt|eUgXy zBFG|8A31mrXj3c5E|8rt|A2xZ@P+vvXb>Rz2NVQ>FV=$RkU0Wglt3CC0sPy+Aqp}B z6czz5e(#3r1)c5-3cjFjaH zJH+q${~s+)zwrlcOy&p*=xzlW08hAAVB#;hz$}3v&^ck)T5%vdyL~RO1a^yD2zqhH z4`d!_eCxx(hupnAypR@O>6?Sk*qP7q?=OAP$?~x?I!%f z54H;A7+A&w1zyk#cbNE#wGiV$j&c2P@Bw#k4=bdp7y9PlBX&>>y1wWRImi;!&2li{ zg+D|!D7GPvfvCmen9!Y|A`5FP71e(+z99dB8YOoo|N9SGtTh=_gY5SOdv^-dyRL5z zK453Q07}H&E~i)mx_M3ozEE@nY2^tDc(L3E#Nq%|_6HwvF^7VJ>kVkU36?wgw@(Eb zAH=`C71W#w$g+F!c?UdSy?72~?*}=UlQ|SL!tmzcLsm%c1`Ykb+yP3w-XKEs$N&E? zXMF$vA6$%ofEME)K&1!&e%~vgiaVT*KpR7B2Pk-4aknwPZvX#(0y%Ar>!4FBK_j$8 zwlNmM+8E3Sz~Rx^dIQ>4n0jIIzyB|Cw*QB;I37b96P>LmK=Pmywhw^heLxNcw_L$Z zi_j;~@OZ+%A9N!HsO8Gv3vOCW1=Ypiqse`rV9VJ-FBUw3IssHv_qKxU2h|CnrUhte zz?6UgK@kWR?(PLSGw{V)@WmV=5Lb6&wE~iDeZPRqD_c}6KwiLN1z5Pd7v$5x7hW(c zKwO9w&4*Yz!FEBL7Orm~?&<7l1y$QG+_!4&MCd1 zYWsyGSQNAuw-;nFs5JtrTVH(K3Mw_7K}`!BT{Zswp&Fp3+hXuKS8ziBWPc~PvV3uH zE6f!wp&;wiI$J?i%8Qv`ao;!H5c@m9wegF|U{R1OdR#%)r*-y%Dz6vWAXk9fj@V05 zumfbl=beKpKhQMZ3(#CB$P7?)feZ?gmPdvxGD&GkqOoOVgY#F2D~10{g8b^h}l;L)CdF3 zIfHApUY0fC zr~xm*#9wfLS;W?Wx74_ z|I+URXuJ$`nk#7aX6pg|9${t%2G{@-xceK5QYnE4GADxe2ZJ_yO$BXtB9IPqz)1sC z19LI^3V^pKHi0YyO$>lC(HqzuFYy~e0S;<7a596pUh?ms2v+!r72HMy515L0yikX$ zlET_6pxt6})S3K6w1sNQE~23^?3zaM;}2B@atae8rW1IS{KI@ll> z#FrqmK&6&8zXB@VjfsddE_jrIoD1?F0q1U6j~;>qoZAf6 z0181+93lrd8zin_ap(nB2nq;LOA6T;;P#a38)zH~!PP-pY@oPiLyl|MB||^gft(78 z3Qow9;5VS@rc+>(q45UVp7rA3I#7V#0_B;Fpgn%zlL&%%z z9c_^LmLPY$76*-Rffl8M)}OZ)fFu+^5}?L2$mH!VUNWG~xBS}!#e!a_!p!4uDFKZW zfZA6jlmCJ5o#_QJAR`K3Cjb7aAQ8wqYWM^wO3~E{QUGl-gY_U<&95Cn1sJI8`!fmD z;GPPiKvU7s=07OyKy3i!q*MI+!G<9^0jsP)27pRH1Bg-l`@vRpw)EG> zd=>EG0{A>^kxnr8r6qV23mnv-@nk0n{_Q*-f!$LScrkA^NFxWRnfJm8!cOZ1JBEMzRFEmKA;K3fkhKQTrEkk1u1BP#8c=>=SPjbf zpsBK{8@eVifbJ3krR(k~y&!35h(ngYfsbH;Y6my;k8B3JB;bX111zUXg0|Izi-3R^ zOILxV(>lTYmp!05_RsJC|3NoQ_kv1^z!#V5U>b#Xf#y0vM-X%dc)W;O_5c3_aQO$? zL&D$E3fdbEQUKb(@|qizznc#-rFHsZ8GJSe!*y~#eo2I{c7z5p%G05wan42cmM=mNVQtD*ecd7Qw*XU(q| zvk$32_G`S!zKA>;BoDrG1Jrx|0CpMHfikU?kXQwqBZO__3EW2Ck8>Cc*$=%_cp(E* zXpM7__iQN=4p|8!zz>o$$gvb{h$ryvd zDxgsW25=;UDpFV@2VO;k`bqFHBGAY~^9x4E=nbU!hBj@$T^0D~%|she!3}OmH@{?r z4B$YNV;R7ivK$gikZDGg<_vDjA56v$aVI@4$I4M$UMbC)vJcA>{Kw}Pzp=c=-YyWd2_$CbzSW?H{1>Lh06qHK; z|NnpalZceL1T@PbLO(SB65;O!jZlCm2*GIqb%v(-mjHk7cThqAnE*}* zsKqW=!9{2)AehfOEkHg3wXhz5TUfmy3S4v&3bPk}h9Iq=w$&AL5Q_s;9v^%N>V|byaOo>ZA-gi2}u6^uHfovA1vd6!xE!(15b5oCvg2T7pb7)mOhxBZ6_CPpV1;1wdZ+M0raVA3 z2ejgZHtl3UN{bhPhSNc=2{u-NP=7+_~OSRBuR)>R|UbVBOxuYUPuG1dn#yLH0Z@i z$o2(@9H|O{8LQvRXv=h?0!3Kj4NqEt+5L8b1gGyU9P-?*4NC7vH z1(-lJnClzR*;t@)aMb()>zaTzIzdt}s8;vJm3Z% zB)37dVl6+U^*~xdS!SULh{XYk0{-p2ATvO%R#5f`%CdXGxDXo52LfJvT>xgMb+&@y z2jWJwT;}?so2Rj}7Ze{a$`*hE5mXg}`m~_gC(vS7@O(sCw}@9-=TuNkzOY{a+PDeQ z5zr0R82IAMS+GUWGy_R2&=l}u156H_X25X)KG|?8$W1{n9zxs*nK%V0fk=XE3VLw_ zSrTMp;ERR)$Y}<(xjpqJ)ES^8gv-0&^aa}1(LNvKT~J>iG_C__b+9sn%XdVY33w4O zACzYPgWAqlK*T{%1NwiKe1?NO1H&!`CI$x3r7W%@J3*T)vM(|-AA-(kF!OI`5eV4H zz{0=)x@IL*UmpjieGdw!8K1E?nj+V?V}$e97ueFwRDVv#cg zs6Pjaw(cTl22i&Tq`sjDWlxJA@)i})=9RPxhRobV(7u(T)WjUny^|c<^ z7=ki-%4RXVXfXq=g5!A|c+B-b!)uN%*Z(Yx9j^cRxB31DjlMyQfgGHx2NC4q-{0cZ zAjH4`;c}#Pv$%qc0-c%*GWZ4P8lDNSw}LLt%sBj2g8_7lnn2)-tYzS$HQ>cV@DdJ= zfEPO;^?ASx`{iJ%4%dG#p8Wm)f5I`>|BSCWyF&kijtB|;&%e#}Kd5oFZ6YYpnh!Br zAF2&W#Ijw6kKTN5apL6*MAfm@;jZeAaJ z!~|Q%1{%;TkLw1v z#KBuDd|!a)7Vo?`{OAAw7yCfOP7v|r4`eXLl_TKAid?A2`CA;A7#K1bzA%DM4}WnV z=2-p~blg6u){Z}*-Tr=J<(49~xUU>ca|G(GwL?HCK4%a`R zL&!jz&K#ebgU*=mbiL9GIX3Y`U^nE@;TPa5<6jtnui6vobp7&r=5f~#V7qxhcEc~- z0gdUStgZ&x-h7A&#Q`UO<8Z)%CkO}J0i9?Dcfg&1Zr=}qFV=&%Fo|@!et10%v^=u) zQmq32c2}tEMM#^o)Aa*1h!cMQ|34v%5qyO25=j4`)Aa*rR1CCkbkcNiVomFGy~Dpf zlp`pM>BW9XOA~ZTTCeK~kPGevf;K|bzet5>4*(q({NluXuukx0_Aj`>+uwQk_n+tl z9p@2x2XwaDi+~r+5aU6KjDI`mPCF%t0H_7Yzuol$BuHhCfQ{;O1sxUg0_q=Va5KXE z^9Agm7cVA&F6Q9h?)oAC;;0J{1rU>%bD)W)gnt)gbT0JAi#Vu`ACLw?Mx`^u3olb} zg8*_Q^ITI%0-gXm$h`n04L$E`Wu-I29VmNtr8C0`D0@n!GXv<(*7#J|oy)n2#fb=B zW^ryj+Wx*BHF^vTFCLq!gU;w`x%mJ8&iUL}maD%2-S+`1dR;XFUR=$B`leJoi-mu? zuSVdDLogx!mS-HG_ErPvz>}$49{&ITqU zpx)LC5C8uUc(HRQs4U>%-`)!n4$NZcoeH`|E9gan0Z4)el3Bs6{2$Q4$RD8Px1cLy z9{&Fi8jA-Vb_kl*@dfWH!PwCUKAv(e0|P@A8$=^$)3!)AS^~OzK~&(2ghOC&f)-YR5AgsQ0-DwR z(LJRX_zksP$SkIJh%=y`vanFdoL&?17BqS0Btq__2xnR zm)~KXBk)3P^i5#kfVDnV>j7Gs4LUIgWEQ9o0@54wqJ9e4fuI&W|9)SDv&11G01|^a z>&SOd%XTiPuG-$TM4W*E)X@i-68OS01DX~}g7~+C;~TPjssp4f@P!o2k_(`jXHb-a zrkNTK_J}hu1ir}e2FEF=F70jwnU~fHHvWY(*g{`WeYAZd$Rv<%kb;00CniIk4JstT zUWBI|S*UTKI}E|P(mKH|dhz8Os0=;;+IoT~<TRIIw3k=^nq-BJpq(rTQ`6*LM})EHaQNCGOTOs z9Y6;cJcR6->zM#@1ZceG2dHHO<-T~F4hwa`G|;)%om0UU@PI6My#h2j(A^=X4%(&P zyXN8l|HoRFKm7ln;aKZ35cT5e*Z==tJOB~5ze48kw>3$qGcdFsC@}#ybU+-2v~IAW zX`NFcMu7A(zE}y;wgg1X{|ZX04b0%XEBLpA?E|GQkV}GIJWPYSkiR7sG|vE>hA&75L)ST)39~;Na?RnF`9?0WU5KhTA4EFA+?QFPO_IH!_yGm)RFIOO7oQ+Yr~ue!z<&$fD+e7bhVVd1q_RLr`)7r8JPU zLqTg)#MB|TEKg|!WvZYTx=>Gm4io|9H(!o!nA9cknLIo*AoV~7sME{8y%%Ddz>6<^ zV248n&_Km~zzat3=>Z%8FJ3^FNO!hofQ;+~IU}%pDu@&GLMH{9DN200TS3V`pc@=o zfiE5Ig0JUB!34yBw_mK{Pa%Z=zPQVL8@Qnom z{GdY``1gYi2OXf!GXb=Pr}2=JJm}Dl{jDIUfKG=8HHrU$?<^2_UBSN%T(Gqs0M$Xh zGJ)NpI-p936{INu+m(YAW?#}kMgU(P<2d}x}Io1RclXxKk;(~6W zx^Kn=IzAQD&7BHT*a7YXzxV;V$D-SnqpJhdt?KA)1KAGhFoU=(FK)j7|Nq66_n?ND zs|2Kl1`eei2@DJjpdCqIhxWE`vG6c31ndNj&SYO?=xzl$zqd!Ag_nULa2Ep`cyz5B z?6ux0j4hzsOLl-oPcU>tOmN|1*$FoDB13PB00T3~G_VS|X`ox+F^ytmUiY3EU`9I0wEE zg4py@8+7_!C`VT-DB3!}J>wT@pnFH)gBep>K@kc{BcL&ij$Tk3{sr^9|Nme716_I% z3L3`f>HziWJGwwAraP49SQAJo!;8Cb|Nnn+1EdNZodKXruwLx=#t6C|vpbZhs}*E) z2RNO9Qx(YQj)@?>FBXBc&IMn*VFT&|fVu_y;-ER8M3aBJuLP(Ms{-n8fmRlYfX;32 zMvA+G2B5eD4WodwD(I#%$RWPlL&2KBy#<-T-l-oR{{Ih7059%YgS04sau=w};SaaY zyF1hXd}{>g&N%3j-?jV*<(7tH{@XZaNYwn@j!q|z7mwfk z|Nr9N8_>lj+kF*4E(e{!DFSM*t8|Bo^s;mX^!9>W68NHm8I;XLAbmECc4vkc)6~Iz zHpro-k{X~fTu`UV`pt_w>W~f`XydLyyE6mG1kfG8-`brSK&=D`1_p*l?T~wdL1VAy z+npIe)g@?r^FX^Z1E^L8vA484Gk|JF5PNaEGXtm|0(BVJ%C7|KZyi{b#R4_NGC_gbJDKRev zd{9t&Wqc|Fh7f3o6Lc3_erXBxJ|H~j0f3sU9G$)|z?GCA~5^DCx7LT{q+%ARXnPazLIl#@>2!VbdUqBJq}Ky- zZP1IXXsGW>Y_k|an=O$rBgp*i9%&%Yb~ANz1itY32lAUvr|XmE+9%)}?w-8lVrF1? z9hJoj>AZnV4R|2}H`Ni{RIufNppfI>M=|@uUre*tf$v5G9UNEEdY~=@bi@ zAT1>D8A{DBm<~Pw`)Yq+Nq5TxkiP@6m_QwB-!CA?2fdi=B*@TwL3ix6&(RD!mwx-0l5sk=CY*qQk@UHPzdGdcHydkmjNyU0^J@8 z{M!SWg77N|e8JEP8vo*W9RR;!9MoK71Z~xYYYpKN>2^{8Z!adOD&WPs7O;ukz8rxs zF3tV>zxfEui>eo(^BZ3L|Bo7BlOtitK)c(Qqj@Ljnq!7i`R-7Tpcn4o%LrId!cLTt zf#J1t7ArV~bbul~@P$0w46W`^j^c#{fvO+4Z&8ZO3bQ?XWjnF+2$-)ZwB8DVIaL-!#AB zIPUrbG(-%WcliDc?Se?wmzQ8m2*5+Qp?{#;ivB>#3yy9<{{3CY)EF4757tV99RfPL zqIXKi3D6Y43paPrwsMx&N5SO;*a+W0(6OsOkg|uFzc(CY2aX|%=3gwe)gZruc9nr_ z{n6bsv4oR>0etAiw`ABAmEGv_$5|R7vB=R4zK;*o4d`y^XaH#iwa<4$wSw+k1i2YW z{y577kk*$4pvAB_I;YJ)6l$G8`9Kg95(gi!_x3RLaDqljLLo;)MMKR8U9EwqCys%J!qyi#%>2FjpuKzoFFF&! zaRW+R-JxGPTe?8e2+j!L4lC*jXP|T*pOx?;1fr=Ev}w;3bP&vs?$9sYkR;F@`lM5& z1604ku2J3g7!rJGpe6AVpkxMWo+Iht=?Hw0xESo@*F9MRFTN%~-4yz#+xJUn%S2Ez z0*yjpJEE)kCrfQ&mcfey5KWz~pkpZ@c@T7v8(43*?}JXBrsmoQ@F-P+y6F<=!chrO z*oUI)VQC6@(Jcvb70>Igm!P8>@rGwRXh|5Je3+V*@InUW#ygF$3l}6y zf<`s(fP?N1+?mynAVH@Mb|xt34nAP-_Wja3g%P636>_ee@*m@=B8z=g;kaPpe~>Kp{Vh=*u>eL9N`Y&m2MrxRig=w6&JX`PLrvEmo3 zpwT3Vq7`5lrl2YUje)&*@BnmQPPglqw9W~TfuS$Q8bJdr3@?s8`2YXKfd~KpXG{P! zBS57GsAhS=3t6Wf@Is^kRJ(x=<#~h4C!iH_p#3tS!)^FM_X$C6QvC%POa_(u;3J1v z0<#!1{@cTS%MZG_jt`;;t^5Vw*|NmcH1`+4(g9dbsLFN4=NVtfA z%B=18Av;t;zjT6Y({9%nkfS93Ng+y3Q0WO?Z_xZkBfPiv#!k=~vEYLA^J-kVoqxY8 z4`{vyRJ%fQENJKj-okJZ5aT7ko{^8%=0g?lC>m-6+v{ysI0d&ojH%xH}KWtq7 z!;540Kr@pJy`gu4pmVLDi<~%uUf6<92@-*}bY29!hzWq&g{-|Dq#az5f(OB1)YpL}_da1V6$0QkO4$AT9@_x}HXQF{;MxzG=-mr6m$U;Y3sEs_B*h%>(T z|Njoq#34+*63CL*^`I;FK=&Ry!~9Vy3~E-pehGMC023+!k5+&ONxEHS(mF*vUOWL^ z%kkPVi-~``@0Y+AtjJ13e}JdhyM1Lq>oQ;L1S=H-`3HKRG(>zMNE{>z?q`F}H~0V= z4D134zZ3$U^4WbhpjXspnlrhvp~J5Zb-xLMLOK|g<0@g3RLY)VFX?9%fH>pEdZXV zTsgXZ1S+}%S%R_{vshk8SAjY;A_4FgJfwfn?ZFcGg1-rzP9X7jiUHKF>)`^ocpV*H zYyw^2@j4LPO7DjDEbsY2Q$wjl7Bk2J(Dv#vn0N`(Yk6dwTENB~cK|JOVt5e`GSd3Z zi{;|5>&3zM|DDihV0hsy0Xa|1;==#`J3nEYpao^J);Ayi|KAD9>}j37KW_j3zl#Af z4ZGn3;=m}7KU%mzEdbCJT%ElaK;ws@;B^q$;op7;GQQgkl|uLf zGp(db8Bo%blKKC|IEdf>u9=mGn1`U7wgf269(NGCWt}JPttqU&v z|DOR-4K}4a6g2JyuE9>jR0qLT&$;mb|1NNA?+`<`FGuebMo?=H>e=HgO`wxV`M39i zlm))1J_oi0R59^y2U`^I!W_KVm<1HzFRUv-@*H6EKo?7a%oBu|2X;y)OBet4sUWk0 zUi^odbs*qHa|=ix3%J#J@nLr;M{f@oL>oAWI$0+2Z*K)@3wZGZyiOHt9sl;JAioB^ zcmfkU5b$D0Imjpuuu<6;LHV$E3YrsMe7W)e|BLq^;uVN^3c4KQW!XRQ(SR0dol|`- zfX*WZiGs7$mkW>-(Fg4utKomm!#WN9-RDU;qFAg%F6~1ra|$ zcV2u35$~>n+Bdtv_v1_j6>^}dAW$r1pGaT^UEXRt9h`Ofw?kw>t#)vLfDWAx<>_tV zYG4GlY_IWxltBhCvO$NgwTObEG_AAs3AE_w1u>ur1;pgvKNUoQ(*yVnwjNfH4p4G& z5@ul71u3$pf{N@H9w1kO!UmkvL4^Z2=Ri$^6b|4_!N1?t1k`-`2iYZKk=EG@PPgpW zK-)k;OpyOT8o&|S2rBYHlgDd5{QnP{?E=YUUIdq2Eux^p2}2N6puq$|b8?^y@Arc} z$-n*rcy_L%S7c()i>23W7@ChrfQme@qccx{O`XCEG9c)Mn+PbpI6y5}(A7z|L8auS ztDuetXdw&8(;%H-Kf%jVkb44O@W6C}SC4>H2E3SoqVwfl&=MF>{s4Ig6k1?&p!owN z1}(|>_xFOL-1=axE417OW!vr0<&3C8x70w3Q{oH31qoCNv^h8fR4l9j-No^GdT(n4 zsOI3`4mLKhcPdCS=!F(!DI@>>R#3ef@ZuM^VgZ%P37}lRy%$7*Cfq@u33~Cn0BlEE zXDf(Le5}`k7T|!i1Y!mqD9{662r7d1AMk)Kp1J-1e-KC+YTSTAIOxSI1+cQ${rua( zP5_w;N;-ir1mI2s@j-bI9I~Jw1{;K}wgTrHP=%!iK0E}h4qU{6rVK%=a#|cgi$l{o zTSOm#f@428X+xKGGJvZ6?j8?N=%;n|fK|M(y8QqD3sdlwAeYiQr(S_(uvQQQ>H-iG zbW1HbbwcXPMWEsj)WFO>!I0KHg%@O5TIbX|Fx?;qR5yspzrPnm!Q8>WAL2aFHv3@E ze!l&^AUja<3RDYdcQ5~buxsFn9u%;kn;${#DxRjm7vXcjaSYn-3^oS2xxl|4>?qKw zZcs14Z2?6ik}WR;pvJs-UIsR=v(@DSWOAYv6hQ$m?DN6mpn5pV?#049FfXmM)dn2W z;L32H?m^Fa|1_~HT^SUtGklhz4#Jl?bmNjd$X zeRbOjItlDVen|2~iLrneC*nc&3J~E=u)CqbgI4f0LkxN816m2VeJZFd3EBZFR1ZF2 z=o1*I(XP=a`AZYQYsMuL~1#z3`k( zFT5cpzBB@dJ5ox!_^7u<6y(kTaKjSPMr{GNQNb-3Pyq+pMFfhYY;fNOXbypvlHl-$H4Q*s3VLxHG8qd#QJEh#+cBdAIH)BLcP8F+p0OGl;z(Z3 zKEd2Og%=d$kYonh(gnJw2w(hx92oFI3St_GVGc>>7!ClXA1n^Q6H1^^4|=h+4I1hw zKwg5RB9s8a6ORyYB|}UEr*rg9Imnf;G!5#Mw{w9CG+0v&tQuStWuE}$U62dF zP4ny%49pjUUPMAvLwkszCQ87Ir>Bt{d;I%*K~1N?7xy?p1|!-=;P!7&7UPSj>EOBx z+F%5?m|iqO#L_xjL45x0Q$bWvZ>!5?P-_<63IjPOsJ9j52hjXq<3Uh+Bk)DA3}|Xo z0yH)T?%V~v5X``^Bg^iEG{hE=>tDn}*lC@uB9|b`yugeA@G7Q@4|}KZ%3S*YKM1@~ z3Q{bC_<_5?3wjQLifJ$((VGCP1m`}Gqag|pK4R!?5e4xf=0eI2F#iSL8PNQUMsF`@ zSO?T*1l9AP7CfjS3!cvb_cP!{*bh*{zPA??1cAL%K|uhTA7=%HK){QMa-a}U0BsZE z;NL$HG_u?HNS=YAp_0|B`P2iapcnFK;1B_C;%NlQgBSlbfmom$!$8A7Yfk?E|6)1l z>I_g{i%<#F{DZmH2i8D_Cdq@3*dfIYWO`xh3HZp=0S0E5iGM(C4^TOgeK7$RE-%>r zgOWeb>uLPkdqGhVm?i(>P%7B5{QJQsfZf~@$R*Ce@Pgwcs8IoKiGun+APbsbFhZOE z;EOsqdRv;na}@mhu>|0Y>EJ~apoRuG+_U6ggkrPI3uM{s6QI7<63`eEXdWFj#{o%p zJfPW*-l-cvGW^@YLuyb7ZUzR>9ChO%PzVIQc=-Sn$ui)kKd7$_D$&6`WN3#EB*woV z(#3Vq)F3T? z)X?b>MKT=JnA>n1JctphcJU(AECFF-OW zq`(4YO85v!Q(*U0kcB}nHbT}X!$*RlZCGsM5#S5KU}YYPI>=B6)Ke3|lk<@K_e5X? zD$GZv9NkmIAj-FbgOI1IlVu~gVnZK@f%qGoCb~tMdRe?ceKe5213~_t3QD9wFOrg= z{yq@!Vi}Bm0=bNV_#0|WM^HC7paWj)ge*ORjF96Whe7xoJcfaD2nf9LcOm#HKM{nF zAjTPh74TrA}LzfbPqvhg5lt_exH!Knnp2j=u1@`k= z@R1A%qJKm7my3!}rJvAm1mgDBsCCelDdD9{m7a2h96d>&>*>{0_wkG!~W z2(+#Ov;*Y^beNzQ#DJOuV)E~w3Zj~SG1u1f?{5XMVc9v91G+i^UixZ+2T5>XKX$Wp@PlT6`L|C6IV$Ky)gf@xX-4w_M$qwKAO8P;nGBks1&w%t z8~~~=z^;OJ06=0;w}Dq-G=W5u?gqjE% z5CD%Of*0sOW3F4I37kxxWI=R5Eb46O1^c(}ASjMvKwT-wKza6|1ZL39>fi|K73ly) zILKV^_^S*w=z3Wuf(kg0Q$Q8{%~*)h+b;z5wt|cec(H9FxP=d%WdyfFK#2w%5FiFL zAV5r*2YosCVMF7!=FmbW`-B0ruL{&oQ0>bS2=$clrEXUZ@HFY(1ONZO*a5m=T)2DA?kl-NOe1LVeTNU9Ea@c}%C0l9st#1J}@ z$luZhy1f!IIs-QYo?mt$Y~pC z6%20qiSeGfiRn(IX=$lNAblW_pwz@1gotxSUJjZfun?-Ml+2>|GLQj9scG@46$PNX zb5n~_^O95J3-Ze$W`h^Jgm%Aad;{uAg!k_K^5y^korjsQ?41UUYeO6EX`Q|=K-(ok zMS@<`M}hN3TBqxiH1NWVR)rt`|G)6q^Z)+~=RMFlb);cXg+Hj1<^46_DjdB-9`OS) z*AMEDXF!yJ2k--aKqfL3Gm1`XkZa^(O8cc zWFoVN)#C@a;R4bMo7w{P#JZ;hLMAe&fK|LG+x`Fli^AQ|>eUszD;xE$KhRVRWWL|} zVr?}4_D~5>)c`U#^8{${8GIKW7ihm9=;Doo4_QFhi}hE7{SQ_Ro~nbW2Q9|zox;oU z734P8FTFg60$-?ng7hHU`L~C@fEf+0b$9|_xWmnP5d=2}ZOZTQN3a2~xs0^#7EzGr z(>k#&`-g=E|9(gifqH9AtcYno2~adAf^G!?)jQb2gMYuP1ZZjxRC}a>SK{=7(}vD2 zkf%bwfO{nqKoffW+b4of$peiFfK&v$SQ!RRRiF+K_zELej_w|qO3-o`&^cCLz!f=o zLa@7O4(Mj=7mwJ$^FW~B1<&e&mx!iygRM>L>;T#EV%<(qXBT7*njt~_+g+c4_R4&L zk41n|A*u){`GQ6G_lJV+WB37{Llo%dfy^OpyaJy?bo~PFC4!6zdcpbw6#B3UL{RVr zzL>ZZ+%QV(Yz6T_(_5im;Qe5bU4bvoeTQlT&mMx51-ytt(e|<#be0Pv|Mp&xY~YKW zP;lTu4FzSHP;hF+xC2$f`c$nK|8}t50U*nL5ncyb9`Ir!DH3T{v(i{mhZ7of8_6_`Oo0ij>O2@kQ}05tFeT5n(j&Ze$k zz^NCp*Z?xm*1`*tesO90|Nk$}g09a1tICEqe*FMCC=YBExEt8R z3Q`41<5QRz7{Fl$K8(*5<-S13<(vGy+2Dym*Ec9J3_3OrGRhzN1|El?AOhJ08mxbz z{1TkkK{vyIZX^JWviG)#fCYW8OczHgzE>8p)a1lfa-lA3uXy)w*L9@|9|IH zhOdzMv#Fpk4tnuF7#!xH_D`1mi$n-7t+UnO2k2G-kmA7ZsUV#}FHD|;jRf^MzJS_0 ztv|l}{~yrZi=v4C0Z0)KvTfb1AQb`Ky&z)(U(`MWso>~rH37xY_NgFKKxqJEW5A31 zL16blT>veKL7NU;d3t-Gb8?|yzz2SA?*(ZI?4AlT2vNQnK*~)}2@1;C{M$iSQ0)g7 z{*b~CTta{biavvH;{)~cK!qr5Vh?=ZGXMUmAhFCt;DWV>6;iN*EC$_Y^9Fj26UhF6 z?p~1npq4E@9mvkWS-gXm&vvs+2zU{R; zRQ~<{|D_9vIP&NJ|CeFEK}pd;}hp#|>g@PGmxlr~?OM1rFdGzbO`8C;bb zB)v}vco94Uq=5%iioZyY2eDaT@o)+p0--#;JH6&N=AJ@IvJ+xR(Rjak~61sFTCP&A?#&=0(<9NGB%^G#|{c zojGREX858)P?U4LJ`Jur!J1L`s6Zl( zzZZ01bCwwRKncjQd6{mW383}CFX|zUfq)lmkcbO-Aq!6Dpk@Cb;95W{)MdIw8bMoZ zUiiSYT!v=&7q7s12BhUpukRDk3iLOi)b%0Yg+UakbppAl7rYe)<182vP~9HL$iVO- z1#+Fo5B}{gp-%!{i28z37YqOX6Rjuf)gaDRfL=oi$-bX`5Gwflo`bfIfOZUFZ_EgQ zioV0(fg;dRNGfUFB93XDp?6;F1zm~(I>8IFfxr)JC`VeS>kZKM5^&|=%F)f!(Je9& z)FS-T?W+L22NrVH^!CsjK`%5QSpl>Y^auZTA6IZ7+zEOi02O~B4r%KIywC%$Nd=8b zg6_HnN2M7cS6RNyOuN18y_go7eQp_c`82knov z?vT(Y;NhHipc^kW_WSsB{)Ap7O1Pgf@C3ndC-~X3@?s2GdzK= zQU7wpnISzfGp`uBDm@gme^3Uz&7srvNvA9N72n{h1DyD(JSlj_ z4RlMr59^B;_Uk}JUg#fKQw!X+3JGLN>kMIi@j`Lk|Nr0#MbNyfuLLL&K)2Jq5Q9k_ ze82!6Z}a^FyAI{|+W-H-6OTIYLN?%qZaFB`as<4X0_ntnj-vpb z=J5rx_62k#D>y-b%nEq%A3V9m5%3}ns`|y*K!|?u3@!L9SMY8ya4T>lL=Nov>{ASo zdo}-nD$M6=KutJT&?yBUAj@VBK4Ji0+XvnJG!16aUugCQACS@Q`USE`>EJ^KW+Z22 zz*L`ys(xVxu^KYL3swz|E^xzE3L*z~F+vLDtN;vWf#OU6bZ72gFez#RxaGL8QQLg3ExMw0AWqo4o>6NLug=q;SHS;l<=< zpbP}rT>JbPO8(IR$wTvx$q8pz&43s`;b39_ojv#C@BjZhLBrMH?DTo{LWkRP7>tj0 zy8hW=&j8vp(+X1YLKEZ$aH0MJ)Q-bA&KrEXTNQZKUMT2>3JK;5kRHuJ(8{8;ZjnGx z{`vCa;VMw>0$+A3!F&*$0U-<4)4E+8nbJC4M8CY)3swUX{QLjEbIMVcfB*l#SP#021DxZ*{U7vG-C6j1?=dhifO9i=Sz-w9m$c4M@I{5F zcOb(Y!@u7}^b2StW+Aw2hIM=(N%ILP5rA6BkPZ{%CaWi))+XpcXh`=8k^-K95*p~( zWJu>6ykyT6to_BB+u&L|oqrAY*;1wh%Oq?fRm-2OMmH-BZA! z81#bwGRP880rCRPl2FJc9hmM~a}%TmyiX3ae)TVCD@Vmj*uVfNy}T@k&X(Y~+d{_r zU~LX)kt`@ZgKwxncb3N`kR8~ZwQmI|34v}UMhmW`;J^g!#eUK4D+0 zd1^SieK|UP|GZ}F4&~_#{nL%C45Aovek(}5vMUd0XCS7M(C#kfnuPp;)`FPZi4HB zZV!%5-#0JbfOufle4t^G7k5CzM*%OEs(|+sce=g+ZKQ^6O9q`^+>BRG*62u4HaUJ?4 ztuv7CMJ9;v`r^0)=sawOZr>Nj9aTU(GrB`x9Cy+Hvp}+-#gq_P(EI=cSXKZoYXV|{ z=e|Mf7F}N)cM-6F3xP+7UL1Gf0ttNcBj5$-j^5@Ypks=m79I+CvD^t_;dapUDk!DD==Pc5 z68IuN6;#l0yygeBz$V- ztPBiz6Nox!BU_6t1H+3#MQA{SkE(&?8EdF>U$ZcPPqcmlS}GOv!lWEzFAtK74++B@ zDAFDJ1eSdaUPOUT6@D!XIw0}|cz>KHq|?&v`=ry+;Dt3vx;ymA@g@aZP}njsypZ?} zI>iB${Q^N}>vV@c;NR|~70~VbfPZ_S4yd#C2efi4usifg(2LXZ|Nb{0Q9uNMlqk#{ z-~ccNo#5d6q1(o2#?&gB=6IixuEgfI%C$L50GT zPM--PFAsn+dFTWF{Z1OK2TF=xO!@WyKPW4_;NKp|6Z9e!=J`^wEGEbiM?8Tq>|vrM z4jCsvM<687zyc383%GWdj0Vt}zUy+(U^@d2wlkehI?c6b;K4TI zCnVTBKt}^Wtm<~s33%ZU4m!e!19W^7)M57oVGeW1m?OZz@S+xG@(ECa^*zz)VbENA z0&cP$)Z}-J44?wL+sPo{MVE^xC_<1TKLT#5N5&6OG^@i*JpwlMNT-KNbL|nhsV~4s z2D7}J0Wp<-yAxjks9XzF33_qoBPe({UVw&eL3^q}hh^~uzW6EtbvS>EA9(!&Xku`? zQ(3@^+XxvGP*%PHD)5)dLIdmo$lTBaoq-z7wFlr1NQXK=9BdRQk3pm91!$NB77w7U zPe=+?#Xu~(8wupw=Un-o%0jU8zU_vGGphUsJzdbN5 z=!Fqnl=Haj9?;JD*X+k#K_>w+fI`VbBdt4hPg>{1YakDZf~+wB5!zt8U~YQxh94Rb zC7u}!zd*4f5cFa?+-MU}y#}hWj=_;`x9gqPpyQrF7Z!B8 zzUXY}0&OSncD)lH*L=jq`pt_qHzCb7P%{ODL%ZMX2w4N#|9wl1AuPOi@0#HM|96UN zW0_<&KG50fvL95{W-;{k8f*uRIO<*nR}`@Ag&Lqa9?ft6|7V1NqJp8fb<0*zi}@In zIw+ICM0+E)fHZG_h`#vo_5c4DpTGY9f4sFM?my&u%P*i~gGCu6<}oxMV(bJnK!-U% zrWHYc>J0tS?fRqnfJi53M2VwYuybln9Oyb45SiBP!I#$A+X4~*3qx98tqmZ7UXY6J zK#tC-9UyKin9I@GTLI#Q{^)jM>1@r3L(GJCyMF2B0UfMRWCrRaPR)q>|Nn&x$jzYh zf?rsHSgs(#0Yq4XrhJ${`@VmafxOOr1sp=4QmnV7Fm!c)=|hlcpvCDgZbyS{0q;8i1v<9jbZ|@ZB&5sx0d$HF zOBZ=lY==ERfdS3QAyUolX%iTtEN+ z|H1%7XoCo~&)@@1nsc(ETO@lp=tD$t>};FYkTH54G{G4k(sl{xr; zsk`fl0Rw~fiNF_%H$f=~+?9nbEe89Yi+_8^2?Nl6)Os^;3j)+js3rn! z%$O5`o+0?RPXy@#%_f2*171vo=>{E}9x8)$+})RM7B2q%zA^_NGIdV?JLh81i%a0C zNgl98pxyr=pd!H+W(K&KC<9qD4DLaI@?iHwkmjInSAl>R#Sx%*7C>|{Knl{jr-Iy) z)(Ljni}@d+<8G*`pvJrqxB(83w9eKUAs~fd3Nj*y8kF5l2Mj=m$$};@&>i#Qmmb(5 z{M#Ygv(TIb3#J!ErqIAW5b#0_!iGBw6k&pColU0<7#Lo>`~W%~PK1HK2z+4!VT02TD1=aAmLGIb zGAR4DPJx!Ty&wj30WgTkzke!-YW~H<-`fM4Qvt0Oo&Zw}Vn7vxnEd;vf+*0rqH&bqeDOzLFTi1dstb@L8`&#L5KTJ z1it8psD9n@GU)&R|1S#OVUz*;1It=3)v0&8ay0LNly%bl`+GsvY+yI2?|t`(Fyye+ zA8DPAJRl+P5sb%tL0g5ur@Qs`g#7>i;_KW0u;%HRU;M{^CM1p|M}1W>bsr5kjyg%eM}i+ya+))jwC86yJ&_)4C% z&fba;$V5HFs!Grq!=PBfyc8XDnI==M7o_a{(H+ug!N0xf0yF4#iv6Gq)4`?o_6|_C z4SbRK7F<|DO3zl19RV+VA!2ErVE*fccx$BnC^Zs4)Lj1UQ$c10y)ZO{CNpR*gjFRx z6S^mYQgP4=`Sajl!RFlUU{43Wcw+!H=_532Lhy20*-l}!F` zK#2t8@gLnTT^4EGU_;Y7J3vA5QsY19bQ7>+(>kYuqg4)c-Z8$Ql>|8f8ZAApdvgE( zfAQ)yXjb~t3#K=ST{_*qkO(e`%tA!&Ll$V{mN?@H)><`4wF-7Ih?&+s;Sw{bAveVr zY+n`FzN3gFT*7m_bw}|3|KKJ)7laM!$@lhx(jsU#0w{$B^|pevgN9f^UIq8;L8k!~ zfJ)5XR!}+(=|4|Nnz}TO&gL{}1Txt;qumsuY6-Qy_u{#bCiDphg?` z1bhDNy&zWvA|>+P5JrojZg7J&0CW=WkH8l`yFvZkm`-rZIg6otDyRh=^x`QzY`D9@ zQZE-fF))D3FVO0(&>zh;Tow%A;B@`Lzuki;@Wmu%L~w$J*TKsWTt7gXg03GxLD&3~ z2^5^6&}&kEbh|WKq;>a%f&wC~vjY^YFSJ3&6~8`;a5cDGcKwmo?ZK1Q>BRz;0F{j3 zx&w5xNVgMDTBjq+i;pk=|9|o3<^TWS(Y3Tr-#0Jry##eP;MsXU6U>R)(CxCmZ(i(r z2~8((LqY9X@Of@8=Dh^nUG54RgGvJ}8Uhtepau)5-4@W@+Y$HwKct*$eF_Rj5lApL z?*#=SLkTSCG8~~nhf(xH=Nf+my}0rm)X(L?Zh*QY0|PitQR}qsjx*q9m&OH9wgc70 z0pNDXR1gIk7DBK1VH(U&gEW9n-Thl4_ylZ9cfXM1&H=B5jZ@C-HBe3bH8Zg)Pi1Xq^WRR(MA5 zo(PF)b%@%=y;Hj8@dk3n|l3`{c`wVV%cN55G0WW+ZW`SJ~Pkw3L;Lu6y1m~(3 zJD)&P1l%$-@6C9E#b->03=9ET{4Z{6K>Y;jwSmnIdT|^kb|4^wft7&))%xyHQdw*-=Ba}{3ruv&B8SvuteXx~a_rQA)NLFeiSqU-`7A9aT|2+bQ33y@1 zkH8lngdyX*0uc9s4$Fh)NRZ+HaA1J#fv1G-iC~w#a08bs;N|NtcBz5=2+Dph{z2Gj zo#2uw3t}+H72r^VbxpwrgOe+g??46zym$-FS>Q#QFA^b!fl~jAr7$)q^+JmL7m47L zeqp5{c0cfMhbYbxcp(Hc;zH1iFc|v)c3*;m8WR5SSncirxiIiWwLG|!2DT2vXZ+j2 z9uLS8c(GU&5iHMP>3C%8@lha}vcY29ESLyH%A|g-v{Mi(p4I*Gi91fLlU>h*!TyWPG&(z*kA(mDfJ zUf6@&_ImS+aM01h;PZujK`ajt;S6#tOE;`{VFGg&f6ICBG|`W4Ck~L)Kr=Ki%znVU zQVP=nY4r02y!iDECKriX`0;}WA4;4-Ta`FK#&oxWhVTPkynxwNs-BU+iBWw8dIY^N zg(=~0aR52T^+$7s0z)a!@m7xzNaA?S2Tqm>-AtWeG4Q1rM?n2R{+6?#NwFl*DZ%Xg z+oys%6)%)w&Mb)scO}6G_?HBOoeVEUSV2<=kdg&nhBqDr2?k~rb{M5jC5iPc)<@dvKM4z z;ER5!kq)TE64XUtL3sTPwFjInSps2>@`ad?#SDwK7t&v$(Z%0#oB=eS^`qNKg@1ns zXk}XK$S&6s{B(4;kJq9x!3k1n`$33xHt7s`-Q1~FK`0S5{sScM7lCQLJ^Y+wm| zaURm02zU_&(|lJ6tQqWdP;G#$`Lz|%AqS3nmY^(#7dh9#p$?k5g!YrIzQ8?L&%(g) zBI@@4|1Uys{|8NX3{Nip$Sj_pP|80VhUYE(E%zo17C2# zC1k)U`~hgGWw!_DFi{iG*xs+3pz$7lP{}kEEbtN}fGCK-zF_I}GC+h0OTY^i$fApY z7q1n-F%BzedAia%8$n40Y!}GA{M$WPKs{FlP{$u+K>)-c@O)q3i`(8H{Tu-=7C{Z# zej(_^F5kmuww#V*vo?$kb{*${s*-}C-85d2=YMC3q~1`EC<4! zX`PKA8Dz6yk}O@_9tMFg?4WHEkYS*#KC#ou;KfeRnY>G`gI0}d{{^=|KnGKUGZRa| zi_;&WzT04kqAcO8L}2?KxY1_lNO(Bc8mk@r(ULqw1q!~z;3;@|GX13J(ERM>;~ z;Mw>09H7x{g%{x<8-uQcW^VbnLq@+}2!DXuQz`~pM*yuQ{=SEbmMDSN)j$TOUOb13 z@*Hp7f;999VuPw2u;Vq-x_dzaX`LP5H3bJj$M}L8C_liCd$AB^3V#cz)Aj-+4_dDP zZ5TAcq)V*8iBbWv2)IS?Q9k%?UIlQ80LjPRnVPJ2n$0}K^Arqv=E}M2#19s`5+6QNTON@5`B?>6;v4F9{l9*4F|345df!1 zSmFis%`h8#kQtC5VmSG9?YdPU~!40tz(bxdiAa0r(bCSOXR|8t@-x z+=;*!mnFa+0QJWBw}Xudcya#8%6OfiPw1tca zTZ|(7fYysa z=lEgcN7uK3qKOCLYJ>%#=y(whw*VTNaNo>@nSB9LRw(dqp9l(JXdeqSW#kg{q8!=$ zA8FlFK@Lmn3~}^%@#hk#oSFbDrxdy;R^)>Qi=7;h#;3cT6uLPAUnG=)hDAWLXw8Rw zK=w5saDfb^bb~Ld`vJaa4q`tfi+2n1Z+GH?MtbvhZKYxRhLl(-53FaAn_T*v_) zV(py@nq3L%Z3WGlfczNv;@t+2{Q@uLIT;wTm?2#Vo`4taub>H)zhy5odVc^me)+-? zoHAKJ85C?jxDg3&|H8V;yElW=3f$44Vn6`Yc!3PY>0E@i!{7~c_<-s|a9V-Xe%o=5 zyhkIM4=;#8^IPCq#usNUfKEsNEgA~yZ3V3-f+c_-pymyzb_#g$Lm5;piGXImOF-*T zesl+_@b7N|x4;jSiludf7b2x~_UeGzUsV?n?JuxECP;vPJ9uSM0RMKdD$uMKXw4F& zpaXjz?l@?^#Ts1T#G?}QLUbc2-ek~Y7VIa?0ccQ>8t}qV1e#PpBa^W3f~P3xBt2GJ zUpxcP4-25W6V_7)YXNl*z)=Sq1bcBw7-}7~m_StqEsMY&fJZGXO_U>92TI6bgTZM6 z)P8|9>Y!bg97nJ%0WXZf838dJ25P>5mVlt@a0q;11=GO@(E%#)QJulR9oz^Fc(Gpy zY&f#F!NZ#%Gha+P_y7NkUJ%i7?*D)A{fwZVAw!8fr~};rV)JhgR13mk_GWx$o1Odr ze*!qbkn#(UA#9;M=%|MV78V8u(6Q`uU`y+e5)eo!tT~d_-H5F8#jUgd|G&6;7F0}n zure@!nxxPc&4y?2Y^}%2!0_V2S#WEwxk7`XBn6!EG@5sv0gYpngud8(7Cd+Y8;>Y~ z=`FE>lw+Vi4g>gf!YLf!*3hLA1=OI}!4K-WbT)xoLoOf(y@&(Z==-C&QiFlNB_FiP z8Pqh=Xx;&~mA@qhR@%V*n$``T2T1Ge)c|F_zh|IB^T_EDG~fry%^(#4FSyRaDs>Pa z9JlZ^2Ajp=-`)z640v((3|_^kCT~Ddj41QqZh_U0?cg#AHnNL#CKEEa6$eoWN}{l# z*B4%JTR_ur2wRX+3S_QB5vCcG-@yZ_K`(gGG~=9fd9n#qEQ3eDVPniMF2D~3hS&@- z6CPF*`N6p*trHw};DCik6RfP@-#!%-ut6`jKop}^4oCq7@_*2azI7m1@Svs}(2^0* zlm-8GaGVFe$bgvz9Z^NK8aChQ1ThOWSHUV1xLGpT%z~#6*us!+YZ2~(m!L=uC5Rs{ z@PPva)sGm_vjnpKT4xieF@;MXC~2bl6`>C#_u>-hWZ<(P z;sl5|3_2qioSLw-1Jt@e)eU621MUu3*nwRD4gEZ64-P05I^L=h^8bGWXcLO^2~aab12u}fn>x%G z7y>fDDgsY{%dSqa9#D&?_f0T#oz{ck|NmcHJpTXxi!;YT2W4k5bhm;QZ@}8fpoKRA zkcBrgpyf2E4u#g;kS1~9i<^@`jYJhxm%#cdS^O_fa)Z4Cnm~h0ploji8~P#vA%UhD zeW~p?$b<;0Dp>siir^P4ptFs)_ks)twXML8f8h_a-~iefG5`LlAeE3Mmc5{Bbwj|p z5L6`J2nNj|P6bh*^ALA)fnA^0*?J}T|Nkr-m+ln1ebN-ekw>`V3xp(Wt?D-fUSH5V}ndV zi-2#D zfTwl$LKJ|TC@&I^K(bl}gAoHm_f$}R3(A7;F7KVf`y&{1I6Y|hFXY^77Elh{0a}d@ z;cI*W9f1LA_$maxNbU#cx~vZwpw<1m9xyY2j-%-9VFfMh58MUT1wPUqw2VLSg~}0- z4+OfWf(nozXl{RT?=HNg0$rn$0a_vpt^-~iVMhcGXiove1uM>hTnJvaeS!fz%D@Hb zH#EKkZQ~4l!MhM-4bQF;(Ave$sh|P}YAC40&4(EZZjpc_gI+{K#L_xj!G)3y=%`@O zdBGE2JA%dzyTPRwa=8Rj7S!7c(jBl9>@@J@9XCLCJAoUi3PCU2`XGVB0Ny^a1GH@d z;sMakiJ%=|UEn<(pnVcSFWMQviR;DvLnv+91-Id$qY9eT0<}dIFx$2KE$pCGviy)^ z9YFyP*%JZ|cyPLg*DT!=Ux3$DOaspkgC;E*G92U?V5M&sBg}M^)BrIKlo}xM3b}y* zlo~+2^zJ}~pckRN5D$NZI06(y@S3r^31n%&PO!_sx3|3b1X_hI2rg6wz-b?@7*?o) z8|CW{{{Ih6U^_tx46;WCl)!?($r9o)us>fMJ_w3=0dNVQ1z8yhHx$;d^Irf`!voGn z@cI-sC<<a7yd!JrVr>|7%W=y;DI<@SG)h92~U#bpz5EG>8ovg9Z(~_fGKz?Enjc&a{H2 z7X?9kVEMQAf|S9RSb}l_|Mpgp!Ju0tw)cWo#Rm3H1+9t=>TLxrhXt=A038hsS`-`9 z+X`9~8_?SeS`-`DI~BAjHmJ81v?vxd1OXa)fQ;LW-1u^_AXb%-s%~8-ktiax>ppXX(p+*oW%6fZT zK^wxr)}yStM->6B+6RmDwuFj+d5~3<3;|N3Jk1FhEwv@^9}2 zg;QV_|BE;#NU6O)^g~)_OXvOp@THsFcZM5RA9p|U#~#DP-4TsJyZd$d)4jX z64*O+0%)xgxX})tf$Me>fKR}^_{zu+x)1Wj-QA!`H~2vBJeaZkEuhJ~Ztzx5e(>IM z{+4+l4?vSd7XOP!{|!K^d_Yao-l^b-f~;ZS3j~d(zj)lo16rr^qIx%aGl_q{M^@{} zQn4)1fr+3I*Ps_}Fi(QKVHc?T(HbbEkKl!HzSszJPiYo`Qk9v*a! z`HNS({{MgR6hu4#5w}6aH4t%e7pTPl0bU6MYIJb~zPJYukJc{GWG8rE3}|yUG;-!$ zhDJka9?}wy2$*Pz7XNnec2~6cfsf|L!Bm#&fr<=pDxAQ-JunPhnm`s3@o#sE33y=w zQweE(fQpdTlO<9}+c_Rxg1Uvj2E5RP zj8cLt7jS#83q1Y*!W4XIra)R}>k&|Q2{c~}8l(kHK7-6gbuJ64_J}}`RiV&1BmV6Z zK~@F5I3x%zIl%QB*i-W{Nz;NK2W_u||IXiz{V(VJ4~|Nlca-a}ViNW((E#0^wUKpo-=H{75bzHJ1& z20;5T$PXOY<5-U$dRhs%%ECC)^9|_uMK{o58d1>3c~I4htIU4_b3myCJWfF=7+mJ_ zgL8Kl6DTG@>l9v0I}Z)Fk`ho(gXe?{)JznHnXg%FK{;)E=m(@M(e2~{ib80?0@*FJ z#nb|nw86O^l(r_Obvik{(Ax$Y$d_D%)0(?I41 zyf~}|nj`~lQdI~9Pd#KGV&LE2!wPD2fvR@!6dPz$FSu2>9Xw?g*gF+8djU28bQ|_| z$f7QIa-Ba1lonKwtDO={Xy*c+mAX3^%s?}|6Kgma7=p4GvOsHO`S*M9Kyr&oz>6Ej zAg4)yhQP4xUI!htW__?W;l+b3|NpdSSH@RA_O$?f@r6)JzSkm|sM~!nQ;UH7dKEz)e4tto~v) zKlossK* z0Xj7j><@I8x&*wK2n&=FM{t&c_wXRAC&6N%q7$6Wplc#C0z{x|8o@L2e(S-j17F*M zjfZ!ep^CwR@TMDd0VU{IBhUnVw_wl+--!p3?M;GSxE6v8 zmq56bqq~I*bPNaROtD^2)V?s<^#A`0Ul8E|BAh{l9f+_55hfr)f7Ac}pvEP%)$`#L zH0DdiK!0WPJ~$uaSpVy@rH?(1mLpP17}4l}5g!xHe~aVKcZi6aQQ zdJ;6Y#1io0EKKx8FqkC}6!3zx1FSOOMZkAZ3!5dav-JRI_}Fj*B=(`c`g8)DukOG^ zOJe!AyMk7i^nx@8zA*j*G7L1}4dR2As8l&H)LI}W*Bt_1@Pk+Xas<4%_6?+%1vK8v zza4CQz>7tnL1HiiK!t1X9?%$wP+Ip?5CeLv6Nt&bzZFC^|6r=M&Jq9*Sn}@&tIoU# z8kOp85d{q*fx06gb(t4IgH63HqTs&pi%js)yuj<_{M#XJN5nIz(GMQ#gbaxZd$4eNyf4xL9mDh5HOq*9J6L_d3v0+xte|eti+XTplm*;A zbYcm3k^dVUWN@276}BK~iDek*oMVt7t_lG!e)@xw2xO0tEz|_mq7Qt|loBq(IM@CE z|3U;r@Pi1hb^re(6$ht}L6Zr8O9N=ssnqcg7N@p6zC1;NW1Qdpdm$Y375t2;z6_kL-UaeNK-kBp}QBf%{uUf zB`k*F8?L`YS5km_vEU;spRES1SOFdQ1l>l?_u}wsNHT$zhD(k>lR}9Qs9Ng<9pD5y z{c_Ff|Nkc-^)hQ<>iAoDA)P76;tkM2+~9&5v3TPx==_b7X`R^GVBiykK>HiOvk%}_ zFsPX@0lH!W6ql%bu3kLug2ytb=>=+%gU?;AG#L7Ue|rmf>r}vt74INv5Za>#uNenVLe_)M z6Mm@xI#st5)Qv-QAVLpAgOk5yHK;R=dAtyGx(!}7fV?jNUvB`uIr0`ej9Ax4l~39G_j$Gy0N@A&3<30lL1v`?XR3n&KhE$5vK z_8Ydfwy-#2>4GkAd!YpJ6C$o*EYML-jmUn{fcXWcf@cEy6g{%>poxOO7tP@NvUy&H z{73G`Lyx`4$znwK95mc!!M~j;;Klhj;D|*8?2qmcL5s9bCh+Nuh??X_w+ojA|8|bR z7kgKL=UyR(feN=D-9B6vpp$=#SN#9~A`f)@FRmgEbozqR-y0L^HE)W27AVF1m2 zgV^`fTo^!8yC5}Z)La-qv%Mhp9yJ$+{L+$mL$mDo)V!4V%)Ashzqll^s01Nmlx=~k z1SEi}2H6CJOj1!|Noss?X;DE=X)!}#d`?=tD??#?S`ql-MUV*iw#C%E)S~pv)Z%!b zAcnM}{JfI*P_@aq`CcPoP20vBN@OH7Fe`8+NAU>@kzK{XRVsHeDJAx#OQgd8EG{`F;IxVdP z=&;b^ zu75xjXs)Ck?%pur>-@H`3Fc+^Wzntw6X zYC<)4hct?GhW==-{lQQo+zmQH_28#J|C^7n9CrnsY0L2X5U8b4sQ~guC>l~UZRUj(5om2u|ygLT*s4oZnOmvRsDh-edSB~Zb8UZiA@m zJMJ<8ascu%(6QVv{u~ASxcLZ&^_v&@&5&vrln9_0NBRJrdjBVjy*u;||8^&VfETPg z;q6HS(1tEwp6)=F&d?t(cozKs|3Vx@2!RM*5W%qkG*AG#v2%L|Xd89li(@W1}0M?p21Mg$k6Tk2Q;#_6=q+lDQN5NAO7tgQh_h(VT$=%R)NMn7``wv zbcg=wW(s)G0@J|X(hrsboy7}sr9)7+D-UQG`o+c9;MP{aixV(oN)*7WD!}^)JC>+I z?k1dgh@XMsh01(T->ninf%1T6i$O!hFAi9N28sk;D`qifF=R2qo3XAu-97>$;B`WCAxa?0??VGd@&lDm z^teBQwEG}5K=(o1*vW-_9|UM5nju33bV&D&L*P8s=?X5LUI~F`1dmBedvRV8up4|s~m4Ew*!0ymHK`+`M9jQ*&JKdl=2d0BV0(7O?7hE+N=;B4| zgS8&Lp-(`g9bZ86SAPOu^y-0Q0Bo%wsB>KCX}!4&8` za*YoR3@ZEmZq;>Yb;Rl@`{`>#`ECr49XjjL=RdF2URG-zaOkf`(U@PK)1-mUY4eS7n91s z146Io_JTbCS`rl0?aILl%F3Wp7qp&A0+hBugW$d*fxT0I@PpUW3Ix0;;|86ds=~kD zSEKc0i4yZvj@}k7a1`)w?*%CV%>{$(2ztS|9F(_3Uj7DMo#D!n*6k~i*4e=TD$&b+ z{{KG#l4tLjxG=nURtd?okb9Fdsz5^*pj2)B=7n|@Bm?uygO-XhJTY-$00lS02L=Wv zQx^tM)PVBy9}^db!1(;q5{8t-l0*;#)a-}eUs(XEUncAXHMOBvnH_h10xAbz`~}@4 z?8*UZet|9>>SpS6eenWxKSQ_g1IYaSi+~p=Hb5(9{+8Dqpqqm@x+j8$$~r^ufKtBe zg%`^}#`r=HE$Iw>^J3`_&@zb^%%H0c0$!-Y3@8x=HFO(6jWjmUnK*SnK&>9(?of{7 zO&~$An=(Oypd0GDJ<>pu_~J1nA1tZr2C=+dX6g zyF*_Dy+}U^O2nZ1o6zNnVzJr!Vadd;v!b$6P0u}8iUK{}3$8Z}W#lJl;1C%AM1ia{62MwN5IZ(QV%r$ho zz6p5IzaA>X-vV0r4BD9EdnNFN$4yXT1n=?(3AtVgcwq_?IuZEdCgMzUkkdfdM@R*| z5QeBo>vTN;ZY1(=_s9r*@%ILjQQ#IZNc1^E^hGz!v;*J)cF+cIsel(pAu7_q_h0!Q z0F@nof?oVz19z_=Xt3LrquZmP({~Rjew+$Gkpn8+4?bWDc;T`OT#9$P&H(v2bVg@j zL38a4_zfGN`zt^cYl#Z@PKy|b45lFe{dxU>~=n?+?t_Q3y)T;CEhwwq3btvdA z-P6s}*9jg1J<{#E=Qs;!AtA%-gIEptV|}4EFiYaa)}2u2OaYk&szsa%x6iT;Xwu3Ck-*BGjtEQPYVqy-#_4njwHmOPS*(_cezgJbSh}Bod9># ztFI78O@`f61P-duBai|U985<*^`!MdP*6emAnQEAK_xP+Q>2l9zw421-#y1!8bNUc z2`UT&4p<+oRR)E7x9gs6(3YUU9pEs73czwt04-813wR+5kq2G0+v!;L!Vct=mzP2F+HBx^ zRJ#!HC~Xq0USxDqW@0ND*G>G`+&eh7SV?Go5%&<%kvr$TkZj~?3zH=`EpI$sX( zF(6U_FXltEfx0~}lCOY`0QFQL^-Njdi+YGWsDkcvDtocu11M}b(z-p$(mH*=yqEyu zhjOHKJEehae$fEp!%c^{%m!ivNWM382`F9hZ}&)pRO1Zbliheg>*Qa2c>uDWrPFl| z|90OcpuGS=5S?f*SxL0WVB0g8TdJ4D)hW&c(Db@#T<@vXV3P3u^KOlEIF#GZZzW4$@ zJB8=turDf)+;?h8I@3;9LOds_e~GV`x5-WBukub1o!1 zK<_B;afIXt(A?z=M;FK)<&Z83C=0+bIDhbj9e4c#5<;Cf0A&QwtwItImw<{PkWi>Z z&dOD9W=xVxpMwR?k%wL0Puyve_;6!baE@?hHzh~{EID+ z!am@IHADo|!ULOCDgbK!vP^uD1iEM9Wf-W^(FNVo%Lv|j_#zr&Kji-1xaK1~)^A?0 z=Rm?9avv={#y3g5AJ^KIrykTF>m=enUCjG(9m0ES4}jM?LA$Tu8nn~*$8lHCdLf1v zpyO^qjcafd71XEM@5|GAvQ#z8!0S@Kk!EPRPcBv%gbO;qx({~>z}mF z0EZX*K|OWQ@;Z*r&tuVzxJUO&w^_5l5%*nHSNp>#6U& zZ~$4z2&r8&0$(sLfK^6<;6`v-XXu?5GN6Ih*J)WyaAmjVBb0G6fX>Vbz4PMhUr?LH z9<)gZbY@^i;ET;j%D7?5&ViLl7#}DV$tup+adS39hQY1b3@^TUfgQ=eJ@f%+F;+K6 z;ET=GpmG^h13dxl*34ptN}dULkx>bf5=rZHy}`fT_W@{yaZtDGpMV$lr9f9j@^reM z09`5xYG>-QF@XBuFI@hDTAsdl0=q-Or<_~?h3XSfo$w+k zi>24~L%@rTUqQ`jnNHUepu0>?1imnU2M|ZM>xq}`paw8#c7}g{hYt?}L-s|n#zQB9 zXEAiUe&`Gk;ot5HS~CA3sN3~IK)3IoW>6D7_6o>M0f?EQCxTwwfd>=VOklk0-pQ&(=FHxy8Ewbi7Nxc3#mWgka`mMBH#yjBCb31Pg7`egC9&Iy$}B`wO(G6H*?yyjTz7odk!km)nblzd+#&%GKbl z24BIw3Q$Y(PxAqbfEP@GpxA)MrSFNr7Zc~g+yV|%P}4jEe9`e4vV;0w-Q z|Np;W0Xfzeq!qN77St$#^hH2pN1$U|v_QF(f4h?o_+lWAK!_;;FKU*9X3P~JDH7z1 z)9?^w?RGu!TJ^O^cj%wvPBx&ChHlqC#~r}4zaR@j|8!2=0}2$^6OiV@3Qre?7u>1f z=0fuk2kSR4;!+_M6{O9)!PAA|1N08~J)SNMX-VII`Ir;(A;muEzp8#P`SC!6ghzKWHp z`G7#c3;l1PBn5F)bCm(e!4NkY1ihHN44jC-H6b*k^6w87X}wgc0TydM$P@U&uM1SZ zut43D0M&vzt8ywC5+|Vc7j(Rs2WxZexa${Cq`z1R8UY2lqto{f=o;SrP9?1e>L5qK zg7?30bo&TYfU7LfW)>etfll8auNC0}z8u|C7(wgaz|+Z~<(?s2prsct5HdTp)Ot8+iJ-Q3gDH z4C)*H;olx869lS6L0fAAU!*~#UZ+5Ikbo+YfEN#Ez>G5jXG8w&fpSQCj39cln84jl z(EbL6fETh5!PnB*Y+-;%B0ORbcQ91_{y?ebSBycRQduJ4#RX}wgZa1n3V`w_(&BTT zZWb<3LD@YKl;MJ2h$Vm$ia@997m(I30WU=1CUbPVet8MHh`!tR5C8r^xzev7OCv>}hfwXtU6X8h~H2=3Gj*;QT=0wQ+U(CXP|97qo$2$MV(GB)U zXRphae~=+f&un<9MsjmVc0|g?EC+7ejfvoj5vMBewqg|6&D5 zz?TPfg>VdrKLf;X1)J%?0-Z!?HQDm-|BF1(?Ys=Vy)!oa`ybdlb;*W*|AVrOy1~W- zyl7Yg8gCZq?gfblz6d-5>N|kus7ki}gPab}zuhS#06gB=3_gw^VC%pCpam9!pyU2P zoPZanH-KUcv`r;s>%af}`+GrDcPI~NJC^l{I`NG2ObiSe3b$u7WX!ldo8g7DBczC$ z3U;p(OE*VacOY9@=hQVD{{4Tk7c^W5nyUg$z4ZEke7EW|=&VLoaFcOr&DMYaUkjym zw}Kdu;R7&}e}6AXgnvKS80%BDX8hY*LEZpO-GOAfLnS~{cW`wgz7N1HGYRle^tMP) zNbtN~);l$0>%adX-+?tFmUu{X^9TfXLmkZ%@M23HsALm>m{r^9Ke}6A1#+rW`)QM-j z2L;&+P>?0una%Lxg*_z55K+v(-$|hL0DtRxP=69M)d}(Ct3E>GF{{7E91X}OY+rxSQ zl!{PZcwfeV?m@Yf)(LhR z$hlz0;fqEUs0T7nfEE>lPVE6FGO)hRDXm99$zextZ_Czypp&RVWrDgPfyB{xaFr`~ zXYf=|LqE5xP^W?R z&LHf6VZ9HOi@=i)pgw#r$ojw+TVbLXKvT@1*y`>9J1Ou*RUW96<$2w*3v$ZN)E-bg zfbP4U02+h>dllp`unQqWQD7$jey~&d_qT#_4rt8i8F!L^tRdGF>bhZ@ve&yVE*bK^k9v0`*c^ zVESKhL#{hW>uj~y0`el53V1Ok4&(w*Vb-zX-+yon+iZc99aBLJXbgjx{QFx$R5K`# zw1O5h5s{(z_xFNB{a|e}|8{VU!OINffa?l)F*^qwy|7?_2U$001fB<$UOhl(bAW@e zWg;ls1iVOw=zCcS8a>HPRr zP&!uthXTkFP;vrCIW!bNVzAT<_gFQ|V=r#(1tn?dLDP@~4NZLAuF&!`8|q0&P`p@% z&_Q&XDT0{sG7;=yaH2-?ASf9l0xR%^38do;8chcK1mq=fy2VqP@b@kR=Mb4Acvn>ICcVoB|GOXk7E}p9(gsr5BWeFmu%Q zR#5bTMigWMUr6l&g(e5o0?;u+pwi>TVemL8XnN;mkwa^a8ykjd^>=sB2GW(hl)ZGfIIs;x@ z6#`YKpjJcz$mNLi4$AVNxf7Xy7ZZ0t0&e?>z!z5`?6l6-mJR>@@A_X48h4u7u;JhT z9T0YF4X6~&d;S0ai%gJ(q^12zSn&eQ72Q4H=nj0*8wDy>z)L6ix3_}q3wUAq8dg4m z`25>Zb4Uv~Zw9;whUo;K%?EN_(2M`CU^+qkm&uTn4`PE-KFGAd7q{VRDnJDpNwsGH zXxHq9fB!+If$Je?#CAjKgMb(R(xLgb7i2i7d;uwg7s@@Yp!6L0;yOgx>mL5?Q$gVk zDu6&50$%*x296VGJirP${_Rsi(Fj?IEC4bV6!RcmAmc%<0hxkUY=P_MP=TOsaB~>a zy8x~733{<37BqEi&IpyF`%Udh{?ad7esYW1?dMhj|4!Y@u1Tfc7fJ6fqI<1U=sw>x?Px<(mGqg+Mc`sEl>s3EILs8r-B&J0vN>P z-`@(MdO;ej57t_s8whn_=1I_mGP4hp0RMilA;(=Nf(Hy<^n)yUz2v1lBq4zU8MONq z)NBLYPzr6?f*c;u+Y4%YqD2AdBx*=YYAUD|AJh%*ra_k>fd>k}{TFbz>_re4C{|3+ zV@0|f79g-#S;+x9J_KA}f|3HrRiL{7w*LDc@M5k%C_nM^_J(Zv_a9MZfd+hqPJ=2f zj^3#tDR|m}w)J|!r4Xz_;AlK}1k~DtR<2Cl9S4xOpq=4Q!8M=^a%HsNL!k9!DbMj% zP>&5%K)vRIut9?i-BUrLol^@o{QLi!zq=JgHy>c^1T#=gVX^E5$<{`6gH?mJv4RS8 zXlbvr1)M=Zv&66-NjF%1_Y`n79rU6q1)K*VcBFOt%A|GnxPnZ0vEdnL5WNZND^OR7 ze}A9=XwcA%g@FOox@_G7%H1!*JD_3C-!cI-(!0GEBn}HsCjRXmek=?OfiL0_>aKzY zuC`AFwbc>*`YF7ivOQ=AsJ)*JKED&xKg<<>SB?{+r>RgN>!| z?+2UN-2yfW)cQw^yGV44Fb2KwLN%X|@e=PV2inHNEB=xq@NIUwML7)%ee zV*+hFzBsoD>HyGW7+9`%3fMe&%HZEW(T9bB0oG7C>kanFi&D@Hx&=@F|Az)H$X-ww zwVo^u0R`+-PyhzK_}2yv*b+O?u69U|GK&G~X1LFKSV7?i+O-bKV$d##2TS0Kypy0b zEb}@wi?JKhcSJ(^Kv4nd4nTT zp|0Y91_)}W?!{IwaJcY8HN%qXi`Z}LEdz$7 zKyXi=E8xW=Pq3H3!|-XH;HD6$Ed_2ZLW^Bcg9cW^qxA1stPk<`f-dERh8k#C1*XtT zB&}P-F|BiI%EEvDU+_Ez&4z&80v~FC=4_Y-Xh)BKKUfD^z~{t(Tq%GN@L$$Ly?g@H z4Tm}ulv}$Y4KR?8p%y@g4iGI_kV8O@1BXOczzYtD9WVcbrWe8fY_2q5DACP=_oCq4 zW5gJT0eDUKiyX+z(rf1zPLE(qYNvwQY(Xy=TVa_)4U}bCq2oc#Fi`=>Y94{W7wX`{ zrFlTA!0p1I7fWHP_**PM(=^~-JO6$UJvm0?3RPGai6W z11bZp1OvxrH#p~kW*kq5H68@bICl1WfQJ9_K?=bRuK*2{fX2;03}~YV#N^-K3!$ch z#@av)9?%j_*rZol;0v2ZSaj<1BU}p7(+$bypo3gMqk_;>{vz8Al%RQDo1-fSJBfe4 zh$FNt=HEXRY)lKdDi3&J1kw01{6BOb14tIy=>ajJ>OsrvbYSHZXbCOY1Km?Sz`cJK zFQ~I#Om>I3V;eLJbEI{H3)!^JiJ*f1MezOq{}+OXTwgFQ2GNiYFFP8E2sukP?YTBiBhCX?bco$R-@PG!@T%WuM2Jv7k34B2d_c=iO zDrF);Q@WtF1TXlv`@R4*bwNu|!PCWoFXUk6^0$EY$APwdFr{_-zJSdq|GV@5{|m{x zppA(fpvAr5dBC6->}k<@wzWG4@(+tRVjm4Tu4WQou&9>|!v z4oE@D9q)hbN#pP2Vrs7Y&#X@$dKj zk$q98w@363XhFvQ&@Y{!!3ozNnJ2)?r|?>w11Wd?l6}H}`66gZS@sE?-WFZ~(5i&} zzF#^;IzX}F#M14-k=8Ak)*1TdHBVZ%>l;X+=lTY;|F8KcPpvO#wNv&Xo!%Z+m{p)- zYrAaJ&t&Df9FNnhc+eX=a8#D&M^0Ju|)JqDL2+EQN`KlYDIPgWa6Sy1$ zEsq45?E^C#lrO*vdqJ$up4Js$vq2oV+4@kk)iKNlDGq!g4>9|t4roXfw7v^;h9ziy zJt$G^Zvro3fmJDxoWKfd;DPGUZo$Swpb_?o}Pg2X_5Ij9nl{Q)oTpeO-} zft0*n@FMx<|No!{N~l55i}EUHe&ufgP0)eX8o3$-yqJIxUJG8N*X?V+f^js zh4W8vJiU+xn*)`3u@|PL#2$1yE69{pa3LL#eZB@@FN698ps)>m@oOoxZ2($kA`At2TwO(JB16hn^KT}zZaAB!P*kgW-HvfKbe1aC)-UZF!fVvMHAXjH!1qFudo8v95I%ocaK>dq!(7n0Pjv?;Cg}=9! zk%8fOE5jLRE5qO_XmM6r=Ts4p!9rL6|K9;>o@IkaNgM5UwrOO5G!%Nl zT7vK^2Tg#1N_0?#HiZ{t9*75ufo_o|(B$GcAkL1Ecq8R7J`fc4`RbIAjl@Ly<8xDARg3S{_QMY z0a@}dQeb*c1ipxXu|X>(TS0*l@Z!q?u$gI{V192eDC|L_eIOdNS@%tM4>rJUWMmh;yaehTjpDYE!E2tR= z$*15d9zNg-atU;_HH)!#DyWTLxTKmonIpyDg=g;hH!f*ru-@b8DVPWfAUK_l~^ zRV^&wnNZN}8v^{>JwWRMO+bwYP?-_P(s&3|yMXNk)g7Sf1=L&s-`gPpad>yA2t=Nv z8>AkTeuH{jLCp-Xg9ACbnOH%Bu+~O*C}^7-4`_(_|3^^Q9$LFVDiUb_uMpJ#vq9N=SwOD9pA(N5<}(}#)Cv)su&<#kOHtum^jF2 zkUEeAhz;%Tf%YE9BJLIJdpjxu7A3p!Zd-_ zb0XB&6Qdq|KS1Lf9cBiG@ZP;w{`~*H6SPqWx+`Fz!|gc?#z#9{|71yIF~9f-E{wp7 zAbNXm{QLhu@Ws3Rpqh*WEPV+keIY1|p|=&Z_&(r8uNg=IPnJY)?~T789eW@;z$Yev zlq~=?kY1!Alv#k4O+{1209IxXQ3h&5_x|_;8CIDJVnAw6Fq40OD@cTYyRQhS@>BxP zAAk;6*bWvCc%cP#=l&Djp*+1TU7f8@z<;j7 zD~JKL4#ec&-wL681*{L&mhtbO3gY&*go0fRI>X@4|No#$>hml}!MPp0Vg{tByBB0J zq?Uvjvc1O@qzyDe3RciE6%-l)FU-Lg?}1LS010=t^n!$6ECg*f0Pms%4~cz&21qN2 z0qGrrnf&{EK_bmRnfZJ9K@GnBQ$c)aIDvZf;O$kNtuH|L`+#QjK$Z~nD}V1^aL*TN zn5zK)`V0K~dqH}cFZNCe1;syT;uRDb-M%vX+eI9MvgBX9nF$RB@C*k?b@x<|#h~^8 z)TR9ULk0NPpMr)g^9la#J-#5*K*0iWIjUvdQ>KDaW6%o$@MV3VV1g)v8Uv0I=2M+5 z;6(c(>kp_lmizzz|I72BU0OR~s}n$)K;8xi7j&QwB*qU3u;yRP{Jn*s00gb}etYLYfw*~ADNI-%YneuN3hfdIoZ4gB>dV5?!KI!ZQ-=zd<(}6+&WGOfSKw}Lg z1`SG3Sb$pUpq0YV0O{@phnGkrD0D$e5dtsH9fgE0Bpx6k3);9=2HF=O586Zpwx=6x zKP*ZjXFxP3Y$qfh>LEQ{mQwGuo zibAlHTc(1FgMb&Y?4ZgN6lEY`P!#?B|Nq7DU!W*@4vL*zaH|QVxD%XCK*KR$_q><{ zQUuPMpdP-?2jxxv-Uv|K?FTFBZ3zWA2Q;w&QV0nsP!fD`=K?q| zI$PiT`TxJS7v%FmP`H7$b;B~G+kCL9fbL$9vcMN@;Jvbt(~f3=`@1X<6JSn2%Gn?b zL6fRr2fVm54Qvv)owa=`$hx2x6%a94z;6fp7jD-o@LD7ei22=9K@JFl?4fjkxC$Zz zwHY*g3|7-A()c3(=l}m;rQKlf1-$UfhIMq5n)iZCVyG48-w!PbC62RzE-hksVF5Z_ z<+V7%#N#ZD;7yzIAc>dF|Nj36ul4J8RY~gWs0|R>{ig8^Xe>3ncdx+z|NnP_Hg;gtr#tMy zLz%7*UYz+3T}R>j0yM4{`T~-ELtpUk2km?Fl>t>^OF@;`ez2GX^99h+Ck)vKL8l|8 zb&CY1b%wBhdC~G6+%0?oIs}OMAov(2&~+HT9BJJyj!bEtE}~z+`vLg(`@ZN76@f)< zEL5BEN#jeMJx4|U|Nq}P<*3B}|NmbEp-R<&q(Y81ys!ef7;?PX35K-p5Z*7K(P)t4 zU7tV-FxMyi`+c9l+`zxzMf8jH3I5)h3=9lA4}k6+y~w~E3K|-C(#_KpxC<Xn>}aID!IRn5lwT0zm=%`$J!J zw_F8zAfUVFD#$;9FF3&JK&HRwY&i=O>zr~Hq~t~3H&8+21R3kZ&*p~Hn^tseUo_+ z6fj6(2kLQU9s&y@LJ!o_%RB)VM1&ux!v@oi2*EzEe?TGlMH%cfXb7Ts`lK3I3fgFDgiGvV8SI;p!xuJPO6Op zM=4tR0E?mcI6NI>k3j2z5_OOyC@Vq}Q}+~b+Uo29JH8W?AGE*@?E_Uzu3)eGzJN3y zd_mp@VDlG8d}AH3c{z`R)S z&QOr+x>1~7BMUMVBQ#q<=c9n~28!bQ;7AAUrhd`wD*`$V&lj{g;dM7?fFbk&X2xBH>&3qddBVd4isLn?w0Ubn9SXmiSE&@KQ-Es)dT!tf$k52+TorU$A8 zK*gl>n-??nAho~*W(Ed^k_H!sFVH<~`x;yrKxqV2zOQOWAM6Wy41T^<;0P3@YhJyt_eRj|yzrYuso}h(f65XMoli**x z1|2a1HVT|~bGfUAy!4;lEkhwy$0dJ*3Tj>{PVFH8+U{WKOxTAT`UY0!&8(BUiK zZ89MKOMg%)xxE#{4gjr$0QImy9UCc#A)w~pi+M2ifq)mAdclT+jC}D8#=ZdR1H6Fn z(mKIGoYoDYI$Ocvy!!+G3K1MYs^Cq};0lq<01El=|NjgB51>lZ_l5B#;{%|Aywl}u z%Zn&vK}bE(*>Y9}R3+Mj+y)NA?28O(-7cbE(mGwAfT}*HOOv;YwuX_E`~>kwHcCO-T@o2U;|@Tm?A=R3(9Gu)r7EV0Ey{4J6h% z1?*Z(`vgF4L#<5VweX8(usI<6GV$8CTLI)6EcU%neEX?NNB^QUg$33cB|Y9M0LKwL&1LBld!l zG3cPiH?ZmxRAho1A6To;7b#$;f`Z3O0u%t?=G-J0PTp_mvc845o2zrqNu@zKXbwYjd!UJUR>pd?5KnJscs$z|x z7hB>$RU}920sfZF;JHKo?VxFrxd`Do(7jwZs$&)FgS9pM+oys`SZRiX++VZ024JeRuKpVF}C)R)qVT=k}1vIh02GZz4wo)EqWm;z|2e>fo1yP_> zgd9J=M4|Eaq5-@=64h~dMdy0Qss6gwb5>?QO4hG1H+e|M4 zUj6^S3sTZdH2`V0e+8OxRt8Ud!4zqO6oFPDftK2X6iI;;fwzQ%&uRl56Lvr*;Kk!r zpc)i(CJSf*iWBJ4RgUI^K7lW)RzoB}TjRl(;r33=S@r*a(2I>w9iSyXV553leOCSd zAMnBhq65_Sz&4xL{6nBtF#}wsfY+UXt`g~O5mgBQ>E(gweSIo}gAsJ^<{xj+sH+>q zDu~$BEAAlcjgZA!*EoZ8%OQ*PPH_b3-GwYRHOCgD_uERapCIP7hFF92PJ*bz7B9W|Nqw=ps~=fy(?hPn zYI4wNaNRDBb!nX~q86YiHh%%O?+UC73qCxx#{+c#Sz2cgM2+wZ& z1okVa-L^jze7vd;2S>Na#Gn^>P=)X$1WvjaAAmdz+Vbtf#L>;u5%|IlqAmk8vXaHn zJC(%}6pI^tK!;617Lb9Lr1<`TwqkyOVyXETb8S)<4`@vpD2lRAB=k<<)v*HUbW;F% zQUKJfb;Yta3bdwC4WtvH4`d_%e$X-}3FeDIFG}S=2JpN-`nr>Uf9MtC1E4tQbO{uB zu^Y5W037hyhZxejdssm+lGcf>76Hc}I8>(af>ePPIm-xv7RPfmSFkYfx3q&6-h$fN zVBcXZxB;a{PyX$pHlUWg3aEbh(H+t|A?U?+V{j49zunaa)THl*t{4FwcLQ1m$G_kA z2YhR2H$?60`Jj^mKr2GP*&lj{5%^4>-d0e`4Cw6zCF8)}&>Ky~JiZlBf(fiE~9P5}Gl#qSoVGRXO~_?&*h z2<*+*?V!Z!!Gi2?WLM6d4RWOb0ar?b;+lWI?}P4;)(O3!?T5ZUI$e4vygvVO8K@-y zYKY+WV=4c3*9YJjfah^gNdOjs*60uT*IxiHwe9EyCH>1%;1qXYf_f#{nJ z(f6|W|NsAK-L49tjpCq6#retq{}Z5VD0=@`{Qv*L5WJ8tRHyY)2|p;Mw}M5bLF&4F zEdoJ3Ku}Es77pn4)c{T8-T}ug2WS-)s1cHR0$eyx;RO}Wpcs1rFX(jgAT0n;jRxvH zUv2=!8waSn)H@aAhoIh8a1em5NjaDj_`(U?9W&{jdS^9~&feZXt3juqZx2PXy0;Z% zKtOLV$NwC)ZNH?7n6$%`hCA-EE0^H1j5dVWwKL6hkdQ1RH(1R8UI ztSY(0z#P)?2NXv?vQHSmyz?SQ0+!6~fD={bMNpHe+m)lYM_>-57y6|66=U`x3FZ^9 zQj7USAT(@Wx-M*jW2clg&I1UaH>4i5tZWc!0FTJm`DP8@7IDD}C5 zGY@JB&A;FEj`f9FZ%}JJ^CCE@LD~VJ5{iGjhzF>*T~!ATJkXGA^GndNig&=1YoR}w zPk{rp#cKf%1H%hv@UDWnumtLj(2lE(y?(!XXBPhts-w7}Gj? ze}MG-hON=Zwy+jF2?^SV0*)te&Efh5T1$Tc9V!Su|E38P@t_goMW815cHcXJpy~)z zdw?p*DHB1F2CgU1gDX^Uo&im@S%9jh*AJkBXssYGfI|-Zv6P^Yvj+tfmMHxKj!)2C zd;Hs30zqp>Kz<8+(FZpi#DBf=rOp5U|6hVm%Y)g^zr7VC74Twn4LI1-I>CHgt)k{1 z&{#NP`#=88mbg+ts58p45Qk1wE< z3CSLyQ0Qjq0G})Jt{vSXdf{6Q@!)pQ^fc(`RgUf^Q2qqBqCT`iB=?8@042mukOZh#CvgwrV{kLE7i3Uc zC&b_vZ$Yc_UlxITixB6+5=d|F15;4*I$IR%X#VYRX^;T{y}dV#K+--C>E5ZJ-c3+% zD@Zf|s<(G42dF9ld!z%DL=ZJl2gq%plE3i~D0+fkh};8Z3uyUYlHJ=2YP1LTLfZ4a zt)QlUKyNRo7ZBJB=^*sBg8B}Kf*#~$&>6_ko=r+%#)UIyc=)$Z1=V0dSgM>r2GAaO z3uu+ok_2mv-2gStLvKJ+`3?U4t~VfN@AqN>jeeSdPRy0#-wyHei(QqFP=`dxjqWME zU|+uog2YB=>jfiF@PiHM4RQ1Vjau&qm89VE5K{Gm?BL(d;}rNp24>oYpl+~EP^ta` z-sk|;%KZC%Z-8c@UNkHN+Z+JW4a$exL8e1F-64%KK`-Wk*Xn^5``zdc<>++jl6k>> z2jZIE9#>Fr4pel#$UFpgOAjlk8Nk0k^ai9<+3$&cQS!3}y(t zRfKLv2$C5WA7XKbFvtiyNF(Qj(f|K19^L%^e+Ssz;Pthjjugmuol|p+{{Qc6%`p1^ zzq=Pqfu95!j4tswir zN+DqYQR;i6vo!@|Rc`{ws;OWSEYb}T*$R^F7P-J3a*n0M9_&;|Lk^-J*(x!JRp1I^ zJJ`B_7ezNgB@F1u3y}5T7y>s7A-Y{}bWV){+1?5o0P5}qlVFiJVAq2K zAEMp&Mt8^wmY{By69F$~a)SK{POjUhf-DPq@%09><@``LfgJ(akc(+d5M&c)P{4~D z9AE=GTaSR!IRpRpUXY=IFC0q2sT%4_P|60i1VAm;z!xeAxfdr&pz6SbbX*Xbw9eK8 zprI~sj9p~tZ4rfZfqk!JUz7lkS={Iq@c=DP1t|;Y?gd#M2=+ImxeQSrdIi=LffO3x zk$~)rpsO}uLk5tf*#us`!VA7|M+BkD_X?ENopBws#}^WEc%xaL5fm^y zK>;tevV&M0kRSp(5|XqajwHfQIFy5n5AdJ`c)G;*3aH)T!UP&Kz0nPAbXbCK>JtGs z(+@sk0FP~ya&)8mY05P;KV5v#+rtWpb>x&A!vOLK$V-pdKrCc0fzun&KEkdV;USb! z7;w1?^-m`Fb~A{7EEHPI~dD5So@x1a?mamHVI`5o)&t zWI3ozevtrKZvzE)!*5yuJdeAHhBY z)o;*x0b8vC=|F?lF@VOM@<7^LZ-6WYSpix>1=9~|6M*W%pci~F`+RS}>c{FUpw{Kv zAOHWq-18P>2B<^N-|7jfD?u{=;JVWH26W&Hbax)eFQ6?ckV`Z;*+GMazBi7y^nyYd zG+g{b9b_iR6&D|MPAxI||G#-Jh?D>yil@Z`Iu!3fcP~gNt+Ry}6iF|hfR@)Yf^!bO z?ENAJ68>qOtvkTY8s8heQ+z=tfJzFG5Vk=>P;5i@R3LJ`E4K1s?OafVaDYPn26zuQ zEH#1lX|Dn`I8TGm^#?~;XUkNOmtRLp!N)NnscB-j zNF(Ij4&3Fy$2nl*!O0C2{h&|*d!%~`IBJ4k@Wb2=j()J)LHh@?AmNTD!@hW$4>lX_ zbk`fbJ+2@NKwSe+utOY&D^G*VCQx3+8t4{qhx_6P^f2)HL6ks0d=ZpbU2in+X$5(N zq0|Eu%gCv4;YIK{i=j6_sjvW?3PB_!6)xd~rb3VqJQc>lw7|<1P+J!kd=Hj`0|8_Y ztn9G82x<9+B1#x9XZXzD9VP|_ya}$ebpxpB^Zf#-*9Hnkl)|dJ7bF|_!ecAQUdZan z7;smV1)>p@HsHk^;k+{;7i11>H~?f_&QA?@cm90@RA=o(ghD(2EC? z!TJ$C!d7`|U-p;9* zS_QHerA44{M&m$UJHET1`)&baV2#UM@xl&jg6kcSyO&H40umDSH!?4Q_n(&XFo*ELoGtMJv^TzY z>H;Isko|tpeGWaYQ$W+Ipw>fo%T&;SOTdfg#UQ`41Y|KncFVbgFT)Y(Y+Yjn%2885 zBSHN8L!sW_-`*1nGXpBr-2*l$@Wos-lm3Elvk~cRT>&y_D##>ILjptxboYV;K@}X> zdEH>!0$!X#*3!Heq=uo?JBvSyvAY-Kp1>C;z?qkWfB%J`7k9uGau5m#ix;0yf!bj^ z85kIPr*?pXBa5*c?5cnlKk`A|=LmqAZvoz+11Ttcz){5l2@3x0tzeh)Z|?;;Iq=22 zbg)in4-I5&zzZvgSXyT*h!0vL+6!U?z9@u9fE2_0Do3pAO~J0$`1}9=%f$~NyJiWF zvP=ezV=;n~UUyF`sC^pvg3ktCcY=1$^iHh-g#@w^aJqmspY_4V>Oca*8JyxkTS4JN zO$$y!nh2mO64VxkRIaWZ{M$hd@fVG0$bkd0Dd2@HL@ced6~yP?-V34vvlw55KqNqc z19pxt2V{inO%cQpP*#PGaA}?d6^^1%Wyf6_LFWWAybuBjgPgwu)JBHR=lZ;OeF8L3 z&cnami3wcTfIE0yGSJbX-aN4JU>Rt(2bWO2A%Ye`FXl6Vi!bnqH+V|l_X@O7yaFn~ zAZL#-SzoMG>kj2ywF=7F&m|1a_fx-ICi?7U(6*Ci*Kxf~qc40X3|Nno` zUdiX{To@+&{|`Rb=I%Nd2GER~gC+yR$#pIaph-9od+RzE2GHCuXs_h_buJ8`>0l7M zbDawVXi^Nc$Dw?k3j=664m7utw$6nCG;ReF4_fEK02=QE&B57#)USf&-LP`Ut#Z(i%d0GcBQtz=oV)`bBy(8*xKz%X;I z3j=6W5_F1c>sl8EP+_dV!oX0u)`bC7)PdN!Yh4&X1r>;$u-1hERQP~SF9`zKW&8g> zNZf6$3j=6K86<8AGT-X|f6!_J)3q)PpzZ>QEwk2z0W`P`+SAFp)`bBy01lcXc(ulb z0W_`+VqaS0!T_q%L2AydabW=Ea}fL38W#po-UqSwuW?}jWoZz5+Zq=JP#OlYH>`o| z^+;t%ttf~GZ3<;b1)bMp2%(@GM?vTF6oO6!N=q$@Ps=ZgPt8j$O0NXVqKLz{g)k(Q zrhybg6vh{4=B4MP#uqZAWEQ0+mt^MW#h0Zfmw-&FC;-_9k^pTmi7!q~E{;#FC_r$a zn^h4qAXh?oX%!5qIjL}VVpS%bjlS3!WF)#+S_MOH5qPz8QEFa(QEp;RW>q5CacPNQ z$AN8v=)^6bR>6QnJ06`-Pr-KJLIVR7K8S6(P(iR#v`|Z{K-yUY-cMVIE&x7f$vGz_ zEh*kJH!!tPGnVi(Fua)J1U{Oj)AdVp?HBj~HS>;uh9OyA&SC{!i2EWRrszhu z>z8id8=V}@wKw333!#d0Ss561fy+$SFKL|{wvt%5RKxeAFIFFD< zb@?17kl_gk>2B9AtUAmfBWEKC`hICVcm`}zD?}7jnYe!GYyzFD3p$;LBk+aw0nqva zj!xG%&9!eBKzC%ldC3hrF*EcF^wwB#bppQB&i4@F~3+PJbZr?Bb z+d~{vf?mwo1FoPz*U5Ey;RPp%i`!6U{@x9s6|w>^ z5*(mu<_gq~?$9fpA&nf(wO8PYBIXbz1w}AJFM7r@?GIXB6`f`9LI7so1(125Ip6Nk zFWoLp9NnQ8IzcxzUw|9S3N@CInSlYiFzXMp2GAlg!=K=&e?8$P=+tiT4E>WAItTy% z?{$3=(CzynFoPi~iRlGoe`UhMF*O$f6*2X766ABcoz4? zlLMe@N?hJ=59J1)2eEt~~<}j2{OeVf+O)BMA;;)a7BI z6o8m_p9YFRgBSB*=AS?gaL6=ycjyUln4f@KGZAV{FUZ$Cpridj_pyK`mA`aD^?-tX z*LQFrfT9j`3js?Y=)kPdKd|X@P{sxY3TR?J`-B8&@tg%j$4ig@|Np;y0BX{}gCY9_ z5BQGkueQ*TI07=)^++dp7906ivCsPJVP!k$KD}9VFb%P7Z1)wr` z0!VB3KF~Fy9NnQ`IwyjP0nl2u4lqLy%mm%Elh!Si))}btA|9mH^$n!S_hpL`&Nl>;iUAgeIJX&t>( zV&?Ca0Hst=#~PecQ5OM$N&{o$^av^dKnd%hH8>6M?+*ptul1wb_e*!kM2_PupnFpo zUPCsRVKEO8)z%klL0t;CZpg};W}7C45_4n=krJ~nrkxO7Fl#4*G=iKmr4f`ZgI-9( zbh!TM_Wg3a1uP6Y!wlqZP_^kZfg|w6S1Y(*x?R5ERX@bfgfZTG_jtCr~;{I z03~0LG2Omjnk^Yh#6kIhDd5E#s1n~V$3fA|0IETl0$xmo33EV%A@?Hv{|-qIppCsy z4BkIBgMon|EWCFwXfO3nHAFK3abO0@T6WOV=hl-Yg1eyCN$z-YZ8s>r^Mi9jTBqxd z7e_$?{M&s^KZM&OH<3!v<60X?OLqxB?zp8*d819->-T&MGZE>>b;O6zp}@xpyKcx+|6 zuSVdD+dA+rswsGs26PR(K+p?g@WOH)NS{j!bR5}hP`L&=WltmM#ZrVW@I8L6Jh1cW zLyv%#d$=BfmfuJC_xm1!x(a+C{Xx*;P*Bo708;0B09qp-;NKs5Uu4RZ(wXvfWg<1S6$bOau~ z05^nqKodW%M=}q9#&Vcl1VIBi2adaRfZ93?FZ6f)|NlY@M5yipjb`|O3SiLT^e@4; zw1X^3>-Jzt>+}VCI`jy1jmr`K{jNtq2LK83@8<$7aRD_5z?B==)2;`gfpdU=zwd$O zpN#yy1LsHYo&W#8a03yJJ3)So1^Lkcynrbblm>YMx_t!#U$BVrF*G0H>2%%GT)PKc z;_Z2PkCTDn%;mY5bhSx zrDXj3eNRAAS9b`L0C-QrnQosZ38GYS1im=c4jMlNZDc8v@r1+j-z6h?JK&2FD zB|myXJpoCm-7Xvg;I#s0x$}r0$$9C z0qcOxX>_`XUV&>p_>iGHg!e_zi|J6U;PU9;1BPxN)+>Q85+Pc_A#?B%1B%v*4@0|)Ixg^l6->eZAdpGWsS4jMfiK=c1VD~QNn<-f#ZC4}21E+$#YkaT z)o=u6$$=vXG^q@Zwdyudaudj6?hU;X)a!aB;Kj~qAQ7HU*BKypft>Lj?u-eLh5j=F zUOeswyS3AG26!oI%L}8eka5nbpe@)hR6sn?E~^sIRx`1!pmAvsGcfCXM)f{E4@B^F z9RwL9(%A}H^W5v(64*Tz#0u(moe}UN7JU2<4`}=mT%`1Z&EVf2Iw9!A#XyioSZK8b zz9@hQq;k$?YGkeQ%WjG*h`K=WCkiLfJ?NJobr0NEwPzrXZI z<~LAmF&BYmbPja8bd+?uOyhu7#I8pmCx$Y6L1ZCq47i>Ga0{WkXJQKj14E}zn*@rV z5ls$AmWAy^=HDK|71GTz^+MJR2Ivs?s&G&`gv^kD+8Cg8h~%~sK>Gyj7WGS{$yynd$Jhl``rr=0`E-{3;%;6nyb zLkr^UL(n$mC9Fn)=hDt}yD&<0x=fdVWTcA>;8@!Mvh3gk22d*tRy{!!KywZ@?H!n`Sf^?hM7#J8_Kx(0LCA*HeFkFGM*B^0VSOe`}FFpd9 zLjjH9&pqP8&;k{oa>RuJR6l^kdycp;q@?EM=Yq~|DguqN!%u>Q49f?Xf}|45(m|&^ zf<|&dL%L}d;6s_9eK!yV9^d6S?)n47Iqv!gLj3^s6ki0a18*wo1`i)}`u+j+d^mz$ zyj%_HpmTJ({s3+9`w{ShLlIUGvUa=vcpV2?y*?3iur{`_k3VUhE`oJ0o~-@5NAuzvHR4b+>URTJC6 zZD~;KfhO6vgIlR@JYjAEO{w1re6jmA$fGQ2ovt^)%eJ#YCqc=8#_x`^fQG^uUhD*! z2^xzA6=9(=paBHvXu^wmYySTS4>VtV$m}Zv8ZkJ|0=hJa;YAB*%W(LCG=5>%GyD+x z2$bIQq8zm0uLwlsuKE9e0@y3iV4P9S}O-JxHCpa+96Lr%T=0XnGT z#oN1}N*Z(=MDQ&TOQ6$rOK0c~&}c09+$?aAfQoBWQ$WS4E9gWEkkvsimcvcqg_*LZ zGjv0@E7UEZ&;wP1U^}~gzXXEKzW9h4bnUS#*ytC@a5GNcgt}x&XXpz4?V&eqLmAqn5!fBNB&gdJwE1;U z;0r#O?4Hih125G<2i1Yj`$_8zz49Umv{S+L47clr5>>cmwzol+!P=l#0$bgD+mwoybN*!Xo<2tL=QNHXJ2Gs1|@#qKcE90m#zdYcMiQ0 z1b0j`To)%q7dSV8(+4;=fpp~~bU_2i7q06vI955px+N06`&er>hJ&mA$3K}DHnzp;ZMMIMe~su>o+e}J%N;D zX%j#La48^p=y^{Cr(94Ek2nJ!Z*6=7+ISz{TidWx0a4_E`~P>qeU%&F((TG|*E67E z94v7HEOF#T?u!5aUu1xYWDpStA|gRV3do&cec;`Jt{yN+}^IRY?0$Pbv1gF@@$BKyTrr~-I$UjokV0-dg)oQGyEs7!>I+XvN# zW-h2egP5BORRA~F2ie@0YT!En4g_|G?g@I)cpa2)Kv{JI|8{UW0hP$O0FnS@sCU;u zERIgs2VfQ8{_qOWc&bRy3npiuq!0jisSff7Ba z79}x8K`V^FArIO>p9wuB5D}+B{$R&J;uNxj7*uN^$Lf1Oh!R+t{NfzAxPVqd7-l2l zbsJP8I9`#>M#Su7s1mr@MaX8q1fS3Q3e+a`-4WOwx+UnvB5=%uqIV7dcGool-7tyH zbD&5CMK3=@NvG=*unJIg`NE=C*%9m)P@KK^4r8APd=U*{r**m>K@4Ra3F>xz67a$v zd>te7WFg}$`3!?n@TE4Oy5~W_3k4+UI(}G8-gxn2F{ljGWny4>A-e>0T0c}DxZZdW z_~Hfl5<&s~{TEs<)hok|bv+W$?fWF~#YrS-{=R3R&M;_ve8Gzai~s-c^<5B{(NKKI zqZ@Q$ARqWZAkbXwj4U1g?XD*RUUWM^{Rz64H*`VJ3oVF1TBqv*aM3vBMZ{uIr#^$h z0puCq1)w>e89^_CAl9aJx=sKEoa=;u7w1J_4PDvet`|Tl^@Ysh|NnQ&gSWN$PIxHy#*9B>vu2WvTTlD|`gbW8Keg;qt`$8YG=DO3h2YkTb zl%N;A_E6V?w@#gh@lFJ0F=VB@Sbqiw0!O`j3aon{dg@J+L#o|SvknIlb09`P& z-E~U93rB?R?$Dl~7meT>B?LgjM_`XPyod+sVdUTL+Yj}aZ|=JB;`%~Rlb;{FP%f?0_0Ef9Ac2>qKS4E%@153@C4As&;L3}& zAPLaXyRJ7{50vmjhgE#9yqE%#;NKs5rS(#YNfv*%s|^2kj=&eOLNH&+W-)e$%79L2 zc%cFD4EQQm#urf_ov+0}>q%QLmGFUPS7ks4HadaCv-n|}F2haY1iSM!%WEcB2hik_ z3&V@1JK##a@d&7Pwtn;C(j8d64l1i`F1axLfY$4Ams}VYK>KtdmmqVgDVb&QsTj3A zxW0!SZ4c_&faY5X@o9ZtKHPlegV@jC?{?)-cID}G{nL$nGC$b)Aoru6x8MB6BfPhE z$4((oxeikGdG&GEE8qqOAE-Wa<>>A>0UC4ywW>I}nYuj$I(=`vcmyg8LA!XnIXZn` zym$;6651Zh1G*JDfsug$EdK(0n+<3K{fo<>JFwXJx4Yg5c)>0ROBI%&YnM3qw@-wu z6?!KClTZMS3UYw2uHXrJ;bsF)!ri`q(mEYkUNV4&PT0VW_7}V1TC}oQz`MRWKxPHL zSOk|4+yy$#x!d(mT4w;u%fq0x6Kwq3eQyN5sDrC9&tih?@ds%Rc##U1kOTFm1-qRT z0=j))1itWj1@3%zhyF?HbYgj32|95FD?TBjGw zi{+qUd^U)EFBm|pioWv0JgyG5kAJ(9R6w`yAMiO`FTPtLd;diS=%D>9hThOKLA|aI z;L1QD_9EcLEl49c-~}W2Oe2vjHt<}=M36;6FM8k>X=X9>x}FK>^?d-^m(Rc5DGhvI z-HX5%Ghim{mj#t~BH+A_rCAE{z<#GP>l3w!pjIkq`l6+)19b0*?}JVcmKPU5C)p`NVK{FA9x1ALZ)D@S(^c$FFde$aBEi6X}v6l_7skAdMuEy#%1hhMjV(g`#) ze*OV>fo8NGDA5IZZGT`HXzr?K0%&9uJO~InY1%~)Y7Qv(zc2-v0}ffpwSg}JUtEHP z1b<6Cs7?b7@Z$3%13-fxqQ80|P^bW=ua5S^$GiYbt~+ zkq&tA!y1%4Sh_*uWKBh83=A*aeuH}UKlrzIM3{ju5BtHt-6<>}%c$G;2mkhoAT>cR z1R;Zt0o|@Yz~{idP$&RJw*bVP9X1RMFaG_)Vh-rQg&+Le1H(X*UC3T?0__-p*Z|TU z)b09%b&Cxsd9x{iE}N6-biD#vTLxMLcje_VCI*I=TS4apbb^WoMtEw!X$kTUsA2U6 zTu*{S+xH7}T=@$qm4FVg1f7X^4HR*pxz!^tfob9;J9JOyM9?Z`(0n)SvO_tj9k*FOO-Ch34quoCEYy#g6o*mBE-;lFZe<|X0G`s6Mye=c=mzS4xPSlG7f;2 zi!y+6LFOUQ4uRet)(6x7{RhpWXC4Aw$IE;o@Wsz_px!JGT(R$$%!^>fEut^H!7bV! znHRx|4+Xq915upC1X|??%9tN|ryLXlAEf2_qnD>C@I@4|3Q&Ij(AzWN2YA)5Jwyt{ zJrFCv#|`l_FffB=aK3cAe(0TYVFnX;O#4SCPZKC9!W{+i0q8VIh@(J~-Ju_PdrqAI z>j?b;y`#0;_f2<5qX=l#28ij>D3aFg6_wWM5dsQ;Zr3;6J`+HDc7K4FArnN>x*cQE zI-SB^n1B8M{{`rL{BGYj{QCt#2K4d-bccR`T@kd528%VlVh$-f<(&w{$aArX+p(%lQnhoHXkk8alw zpem&sT>J;UsFZ^gn|}ZQ|9?3Nqms z9uY0i6i{yIozj~y{ojAkurT=2IuXzingFPI^5x=#?w;0;>Hq$NLhj4ON8K$`!M5;k z_x%E@mx5k!ef{^p`G`U%xb$q^3ob)JS3!dqFFA!77+yE-fDACSMu5s*2)j1~RPf#V z`2YWln;$_t%D{O^m63s=p_0|3`NThm)&r%|Sxnu&&;)ZBa!)~8XRF8bfB#>rXEA0m zb-R9mw7ix7!wqCUqA zG-~6)6!^lB8K%b&R3d`%F05S-c1E|$M3L?ekb3aN(NhCJAvgzgg#Bw1kdr{AFGn|| zc?@-Ow@;Hu_e78u@W4TRA1r7mw;Kj}Jp!x=M(2xtb zE&>JBhu)ShP#pmcD)1>R{M%bW3IbkeKrDvLTTBHdq@WjH-h-NrAVWa>m*${$F$cI^ z%)h-ABoy$%5uz=v6U+y-5`Dp01GSmNzrPohz(A`yL8ohj+MQshz7|UB1}6i^!~&QJ zbsf0EJq0Snm>|A{Rk{58!CD~^2kM&yzQ|#MMKaUtbr98PVbW|fk)fmt(hU31JEaj4 z3=sQ3N1pL-hkChC2OR#O5m0CdLqiTZ2EfDp+aH5M7<5g{mu_D)Gt;`kSrL44pFilV z{+FO@IbJ>m)k&cr(z?NcmDbrLz|6q#LJy>Xh>+6m|E4~ie0 zg#hajaZp$9^chfGffBLHq$N2C83kLD-A1_cNqV+%t3AsuWbYMQQRSpk$Mgx?b zL6rv181HUEOJ-BlF~hF`CUznanxR152`rw2)RK({K{+b$#ZK@%BIsmGPznX*5p$?P z;JzzIcMr4{2PcGXpNY^a6EYQek|C|Lh3kMg1H%i0m!L`dsW4MMszIDcgeeCfB20M& zI*fih+?3TsnUdDo1j>Lf)`B#H(;=3co_~L!UF#)Cy$vqJ0$%h&4%LK~0H7!cdht>f z>~3h$1Zp6)T0nDXFNgsdC;~HaC!hTuHqAf5IaCKJhl1FU96A+bQg%* z06;Zoo&@J?k)~dju7DRy?|^bPX!7(6sH@m=3SuGHJ-s3w{QJQ{lGfb|ifnM*X#5;B z33wCKu4o43*$~hu>RwReovl>2JCvh&7ii?0u>^EeK=Td|o266~G+sFowB&$)zmr90 zD`@NiRFHvaP$v*14LX8V22^~41VM*)fSU6`-L0TrU;wQ3+wIE13TpO)1OmIkBMLz; z7P^UnhI>E}i0#mRq!#WSRt5%8tqt}bs5%A*ERGiLDppW88x&7isw)2dPT-Q+kU&mO z>*h%71Q)k2emwFD4%a z#VBN@4>U*OXl+CC^+g8$?JWYJd>!yYUD*Is45oFqnt{w3BkIKin8X2s?TP*1w9z}I z0}^>+P>XSuY>=o<>juXUtSnsk7?dL&L1R4RhM6AB#o$^RR6G)LIYyX8U&Iw=7Zsr4 zbRgixQ5YLEix2L(1!aKBqZeyn5(L8xW-~t|?7F9bBMn@dU56})fyWzoFdk<{!%RBr zFh`IU44_3(Q#e3LC+I~8%n9Hq0+nZ=k`vTmJS7heh6_P2_QBZT1|ulE12Zmw)>SNp zNq}zC#+%>415uzAQ?OuQ0yzL23>VHrq5@a`?FKh8(z?MJEUgpVq_;Xk_cKn zpI?-j9$#FLnp{#;nj4>!pO+32%}psT!4w58VSr=s`g9xg^HV@wQSjtO=z|wh_x?ks zH@XEoL+`whzW4us#udc7qSDXL)&s1vEc;_y7MFKS9J7 z5b^%*|NmK_H4YB~UMPQnR*NO}pkZUg8V4@8gc@kZ9=^sQNg76Dq0g_T}K;9+(l-?RqER#k12WW|@N=7X)$~2V|ja z8(g0Qc#xfcJ9Lyi7cQX=8d?J#03j9F9r}kKG;;qUUkb(82X{afSRZKM2(%dELC_05 zxOQ96=q3mMcIaXZQMiN(*xYUpg~0C6J3%l0oPeySfUN9z(F-#2wH+uBLF>uxy@PtW zL>n|~h%oOcTtWzWamNc^kbcPa+}_X+pou#004r$i(Vd_d`yoy4fEUmHfHDwhX$0tW zGN|7R;bwxCMu2xKegKU|^KTDK3j#&eoq!j$FcX$QOaNzU@Qs_HPay5l&?n&gpg|YL z1eRGJs&xbxWf-IJp+A~`G1V$T)xt+TU4MXvJdZbm2HQX_?AIq>F98MrekT^xv1Q_y zK3IVco@omsx0?W%5 za53)s1EdN%CC>Ds?G~u!0Ub^92Q;Ms3S|$b7X@I^&>zqlaM0LHAj^xWTmS!Ofal34 z{DfKyIt~S9V7KduPVhW%b1mX1lyA2nmV?f00hj-vjc{1!ZTR<31WkOjUMkT6*CIG4 zZn`_b6Fdh6K%4E^kGq2Q-!OpE-4P;Ze8BmFf4c{0lKcZ`W(9fyRd*;j3}DkL-7Ju4 z6%W`X`44Ei11laJFi_7BRvIcY>1StA_!JCCb|3EzpIs@bn z$e*Bb?pDx}BgoPZ-#^VY9Xt#r1(47LZ3GDE;DId;Fa~)Uv_11rx64ExScqzV2PYd8 z9ml~*29yI)v;@5P^9`aHG~Ef_`Qy?AStJk-S}F$;4SI0{s>YS$ILHK0&1(JTh0_*D zK*FmgFasPu*w1e{?)n9!{YB?>NCgEhN;`djyr=*Pfc)Fd0h+=Bt;kade4)ezD$_VX z_kJ{iy6-OnLCRb?`1gC1w4SU}fVXErM=3H^z*BPwmq2IepVx|T0jx_oI$i%{F~j=% z3IU*rtv}s?3PCTpb3u((fft{zL0rkvEeJX+q?@BVkR|9v?ki{kUMkh?`U6y&c0-r? z1;b=Yw848IyL~wVU+6J_QYJ^I>le^ow=Y32bm6L4yIsG$W(J*EbA-qG&5JLaAfX8k zznZY{-r5%MdRXYHh~uuH`zRS+_(EKj)(u*D=lkb{E{G4>2;o!$N?9*tL404(%7(JE z&d@I}c&~w$B7@=_9NK{|YFjPq}I;t6=6BnnQj z;DaU|%U&G53YrxJFPBsZd@&UqIV|7{uAI_dECXxi-|xy3@WKmW189K;=z6uCpdlBA z5~1!;j>bbEcF+r#l)wL*kAN09fSWM5 zs}C=^I2k}2=Rm0hoLm|YfwrXty-1P;&3kfy{L0ZC2r=;jcrju|05}%FvEA*&0gAQ8 zgP;YWfiHS{!Ips?c7OqNNSgI^kYbR-SV2Wzz>6p!(Dr_oms4377_wMEhCpN75aura z7SKXD&_Z91v`)v87c;Ivk0XYJZP|K;4D&HVdAd4gVSf=g+3yK)4)Z~|YW&VmT%iEsrR z-L4;AE@H``@+-yw>avLXu{BXEX}dk3sS%Xsf?j;_1^Jxg#hOcqm}Y?64_buVj3rm-fzv)HrddJ374YJ&CpfrX zq=JkA-D<}Z_+sZ%Xh@Z4AXbjNP<{dv6#_>9DDMTn@cjvH7`#x0>IWr+O1OTIznXV| zvK=UMf}#z?4t%jZ0Tco(FBgF#f*IsJa0wjn!VadDzoiW<$G_i~C-6l$LU=K(?t+!& z%?HFl8Ls(YTHuTOCLrJNfO8wje?c$Sx`0HG;)n-k6eP3DvV!9%@WqpJpzwq$4E+%F z;xXL6;CTN6I)V_CtY;U2-Hu4syHFLLW`QS=2jKJyH4~IT`caiG0GSCY5a9^~RMG^# z_#pvGSfH8-sStuh`(JO6GdW&ty?}^zPPnPKqTL*vjUkbzi1ss)-ND+c4 z0tX%_a)VwJdcSk5h!2xUr|*?4P>KVu-+r+UrnN-0+xH5j8v$yyy>JCN@U?Jv z=#}H(6&|2$_`(1r*zJ0yc}IykX!fFYC1|zr0?>Gt>pO5Wr_;5g8+6osN9RP4lIGeD zct3dad2nF9Tn(E2X6Sak(%k`45}0KJ8BY52FN-~k10?RD6ZpbZ5?nb3yodp7<4EhC z;wCY3Dg*!aLjf;1_`s5&0og3ZETitwE8R{y0WUtv!G&L3<$aR|gsi!$ZGk)b-#Lh*zkxb7u2&H2qpyJ1M}xElf)16s z0`4`w;CBYMZMs9Rq;-PVKfQQ+_WyryV(9k0lGf>H_u>xdym@d8z#`TQ9tU>4zIOt9 z!Rtji__uqMff{T4+nq{4`MX;Xaxz-?L{MG8zpZH&7ieT>uOTRZOS}{SB?(4QDuY&@ zUmidcMM=w6{;DfLQlLj&ss$i{A_ZjQhgU*3XRha#XP zcqZt@whXX}PS-o&%W%Pc>uzYp(gnB4A7&Ff#HP>{LA|b9z`F!MV-0CRFV=B^%>hl; zgWL-8(~B;+O`sjvK5&~}+ry080XoH=0d&$&uj?F8V1RqrpiBvBJihRR8{j%8-~~6_ z0C1iH4H|U2z5pFO_Xo7f>kDYn7r0>=_~O7Zeum~FGLWJSROY?E4+}KbZr2Z>*5e1r z7*-0KE5nPx72s}8T=S6{>o+eJuYfct`Q;fvEsq?K3TQuvm)(`&4wU_$&6NSRcK17* zE5iY(_&YXNhAmL`Gd5R-6;SqFHdlr@Q1(?eSMb@~pkm_;n=3<6YH@s8QDQQfk&+6b z@e6K$7rulWa0tt?0f=m>`F ziw59ZqXbj}UkEJ*>wA3;bOt9!TIYlmP{HK`IvC#=;@hrEpkX|#Q~&?J2t5U^U$(mn z1ia|H14|WJ84NF&L8rn6zDT(X6BOMATCV|aicSC<@Dp^9eDe_&>o+gzmO&B;IHLoT2gnRa$K%V3D<}W|&jJMis0tJae4zrj&o~RT6R5ihl&J$=@W92T z!8r=N5eU3k@x@0rP+)`hMSKAbeT4pb5f5@1u0b5o_!8)fjvt_a1D!xrD$vc+*2&TZ z+D+;EC-B8WxOsnGA9`VY^8f!AdLUPVodeqC75JhK7F7H#Q$fRgj7V*pB$!;O1WGgC z3npHY3hq*Z`dOgW{K#uj!MkC;SYN2s)cY+oX zhrS5Pa4}+FcyWdaEC@Pd2YeO%i`{}C0hWL)PS7DOFV^sbxEuj57DE~dovt4;DrSRh z{}A-z{B>v|E)mHPILW{OI*{eXD@fVj>G}a|KsPw!fQ$SW?;}8lv4E<7{_VbR0yF;C zGcdfE32_1_&%Dru1P(|AxY&6U_~I8cNE2kOz8qBPe%~Kyoi4s7Ug-XX4h2B>BZZ(2 zRPpb3Dr-H!-{;H%T6EkC3Yx$SP||v#0x>DAvo!}aYq=d9Y(W_e3JeS{R={io&r$#2 z-yY(7A}E6)fq~&gFGA|YL`I0i;Eq}F2UJyp4;*2KE}jSBQII|Y25NgMc7dD`ciQxPIUOR`n%$_eIy!wnyx;-3kw1&Qdn(Afpe!-a%x3_sy&UkuM-S|&fESy2Aq@Wg z5ZAvD;)DovgIY?W)4*9FDB#8KUJwg(dV%2-5DPR|0!jyHxd-eJk&d7jry&(RT)IaT zlz%|;u%N4`bASK;587@5RvwDv?hw$fM@)CiLfZKOFQz~iI|sao2B%Y&fES;jQvCaS zK~Ws|A`oITXdg?^i;$^c#|8zwu!4J_U@}+?lyX5Q3xTpfB8P**sT;JvhYMoNF0k|? zhF(+;toen-1K?R&umQe2-69jgcfVhTgjP^MckhIU|NjSePX(1)K`*4i;sTwmAa3VW zkQ{i!45-?|jBQX{C*q201<-Mc{D@=+&X2Rf-UXe=8CxKYtm<#<7v;*X` zZ15$&kf?F}0`|BdJ2(M=J)V7vp%+r}fno}DHqU18rbI|Z4LYF^?9EQs4=-l@{Qp0T zA5=(zG7{);qz?fvMB%R3-3_uEV&j4x)$b!ebjpf4!#_3Ass6~5qt4;o*oa941{UEzpu1)li2 z4Jpxa#8>TiPG~tBJ0$c(TIUo;P&N7D zD`?;0%a$LI1_k!zgsuXhIn7=M1_lhrLvjQ-WHFN{j{E~w4LatwhZT~bL%)EINbBzH zfMkDABPQsD4me{71O>cMg0MQlt((rNAXP8JL2Vk;1nb=oP79z4yc?`2s2i*!;DsSv z<_7sG{z}jb z8;EZ}?E+Bt=HEUQI3H^(BH1fa=5a1)PzdoRcU&}hhypcmGV(}!n(m)gG2g|s&U zFcT~IY`qtVZ-TQw==u$C+JvPz%-jt*U(gvG9v~;aY=JpZ9^ynu zU?SI;U?(|QWbwbyf_NJ=divtrH+T?$6A+$S3lb2Jcm%l?QbA*uXD_Vau6@u9 z3kWfYYr!5wNg`iBjlPPHpnyO(8sw`MXyXuC_umJ59~2O+aHDs3f-HfgK9pntZV$+Q zgarh6Bmz_!q;-Qcb6RHys7LtX^#@RAhNBzYl}hUd7j0>s9iSfJi}N2q4hu!zgUi#+ z!Uc&akUt>q3wXiS4<1_rcl^Nf=AaWrTzR^A1R%kL@JqmpTYX@)-Qb0C&9D`7ka5Nv zQmzayUQPy&Gj{v_F+TeuX9{Sk9H<9v{pN-K6i7FoU!DPUHtho`SMV7Dpb`5NX;+35 z|Ns97jYWn@yE5#6vfZU!89>zyXhXY=v?~KB>Oks^rCk|7B@c+LA??bLl3Nj61;^kLZqJ0A{;L|#NpS)0c4{Ld0F9ctJT3(Pn7p|ZYt{jiC|jCeUe@pz9ldbhdy~8>l$~Il`{D zhZUqBoJz6}K{ovV==zuhS$;6>_Z zSQtD240*=5JlDwcLcM9E8!2(R+GnSY@!{~3o6A3W!fENZlAcX>8 z2Z3V&byNd%jvmNC{2&K``nmf-ClE|M(<{;l>hg7lw4MQL1s6i7n^bMVQPc~X0|XBX zJP3U8`4cz1IV|aKHw&KR|ZgUg4j#sA!P?h%@lc822gJa#BPyyWdM1Up@M;-Kpr$l zk(OGNnwOj!Uyxs(S`?q3l*LdGk8yu8`7oDzeI$b|>x_;?&{n6?A2YTq~3&q#}|7U<^lwT~r2%YEy->C;X{3h@< zXp({DWd(S0j|05+qcil$iX3 z1ijdK6gCRR(e3)+r6#Dt1zi#cJ`J%u^i9wU_FvYZ8Aym0&^p{UR4t$r?-BNN`@RW$ z@udWm|2cMXgXa5P-+)dcd*Sfv|NjiG>x&t>LB}jEg3PxBywC*a1kk~$FTj;Jc;y@F zG1=XrZ$L+PG#_BJK2e(v8sO*OFXDTmau&nEM@*n)Y2ChW(mF#NWnSC?@A(UT5d^tN zkbgUmD@a-3i_MVsC@8Tmo1t$y!Gp5ht`8v9-T_5dh8LfDK#8^ah=TQ-7jC_f)CoCb_k^M=!x!kB z*cC-rPAOJFacP~9z~Ti-f$Va{8hu=~5ig{kBQ-qu z_k;DdUMf+78wheP|9*<Mv|Q9(Vl#vI2Ct75LnJxWm)BU4Nu?Hi2U4_2f9nx%V|) zkdzEcTOb_T{ig8^XbL~PcdyR>|NnQIB2H06T)&pZ0xEiXL1&oGZU^NX(9yIU%|Dq- zWcl}pay0*9DG|wX%vf=MHbaKOgV_u(LbJiksd3ex-M#|+`vY055ApXpvw^ldg7%~c zq;-cl%A|FISD=6C_676h(mF#QytwxC|Nj>kpMvTyuu9NnqHIA~EH88+$Mb`Z692A3SQWenMa}}g1@C7@PK`v(}bcURr@*)^y#LHixBjG`9 zeo*df5rt|K1#8;{5(nk&9#)WeVD}VOka*CG6Z=8Mw?ONG5+zV1wx)p6At*_wb@qaG z^t`zK7<4`tXuIKS1!#7f3Q`1C4OX!gq+$a|1$cL9S|_%hO8onM!O;OK1NrxZO+fb= zs9lUM_Tt1onETYyy20AgI;VoHg=8?WdtVrXT%ZSX!D|ox{a|-@Lqa#G8xq*ywjH|I zi)^^zf@$5LX(X`L7f&96sx2!>e0=G473lSu-~vj{y(|;KUd+D8kk;J`3Wc;z9?)e2 z*c5^Gy>~;L+9|^EqW{tV|1Y{8fwEC6$o=RkgnvKSFX+NA#A`sUNrBE*(7kn?Q%%65 zejqk?D~MgH0BWT6hWPFPwez7!Hf|qiEtgyD?xfW0$!X0&-#Fx-CrQV;rjt} zia*Rs{_U+G69ZnDJ%g4b;O(d&X9c}bf{B4=`JnnibE7;?fiJ#7W*I>JgIj!|1$hn~HngYE(0bu1Ik2L>a zuM^K$4qDpR@NhOm#*c@y8D4x%0Xz34KWGc)yr2L7gNuc3SAn$737}@hizWB}|DOP@ zwegh&8^NhF^hf7ZQ0>><3MPBOWXRD8+#zSD@V9h;RxyGLuM?mP{-y+VyYNm3c#&8E zj`g%oaHN9DC9pf>=!Bpb5``dxKuK?2 zIf%s(081#~MdaBR8M<9WLFKXNguoZC!H1lJ6c<7jzlhKVjaKr^nAz#t(iz$Tw*{8k zPCN!h1^B8AP(=p4&utS-^gzIiWiU2qJx51Sw`)tlizbLg5Hnx2+yiw&GScio>vKB- zyF*)oUToM2D;J%z7&2x#f+pNM0=hw`fv3Wy)IkgT1o*c%fubegg%5c9AqS{-?`#AK zz4!&%DEL|()OkTDQ^inr8LW);rSU)5RTw3@t_&}H8bPh}c*x+?`9@HW64aWpe)D2d zBc!DR*~eL<3mJnFV_;yop$l2Z2D<&?kgh8ODF1=Ro%ZOuGJt9%koX#1aNiNyYs|?{ zPRwCQ1)pyB8ux=-vb?Cg1J0g*KylO!I+HiV(d0!4 zir^Pe-^%8NJ!rS$OS}KD82O>+%J5=WJt#(+k4RX*dBN8Jivv(~&Yuu^tG%{>S=Y4Obd?onYvn*BoixuArqZfB3f}pCTUG4GKNbt|DI^ z9OsXtuNP{313LO6ymxN}s9mCjt$hrRNN@uXW7J;4`a-P=xNrb1ALxRO#&x?0fCr{L z3SMyj2Q|KqfJ-p&CY~SvKx2moa4tLp8R-BqQigv&i&yIb&`C`o*MUMAbifIS4O$`% z8m9v_arw80ehGTP@Ep{%t>1IK3GDtM7d%`DE&<5=g-wiK(KyH1# zi+{VTL_iitukVJy7nW;5sSynn1vd>o7t7)>)usgiPSA?k^Z%!X=^^4ZA_RX9R*?tcD4e7G*JmmaqoAxB+*s zXhwqtBLn!t-)6WvFVH!Ep&~&qHXx~EC}(8o2CepthO1M`U;rHrv)y-2;ESUhp+Qgz zJ!A64VbDSxP=(!kpu`=X%D`j(;O;P};qAjH06IQkI}_qkTWkt~Ubx*gg)Ag+{Q_En z>kpcv^gRF`hwXK33F!5m5ZD`fBdFK)325j~B=E)5U{GkwfJOyEKfEvpxdl%G69E-& zy5O4E_XlYCt4dm@h{p?tKmY${FfcTLj(7ag9jed`Dy$4Zh24*CSA}k#3E(Yxs~}B~ zfER{uK-C&czzYs|xPgX$et>Iz@cl_VPA}H{2HlteF%+~(SD{;^vD?W6R35^u;0SyX z3N!T1Yp9`{VIf>12I>?*7tMn%WeR)|4l)!}m4f<&Qg=W)Kq>nJNC>pAgdIf)d{BW3 z|8^FyfEQ;sK;x}Mhkv{86VROJhoBeNZ^Mm%O+J4Jd~pyV`f@v{Uu6O6Aa;hnd2t=I zkOq{v-UPgO4OjIBWWBFM;ENmUVU~#TZx1~H$`o$`UK~Ow#M57uXnx6PeXv%7e|zW| zsK!o&#@A;-Y1&sL@I?vS4q=eBpi#v{ggXB1pekp(?}xw_-f)Gmlq&fPT)cJrYJjfE z;07;H3jG4QiqjLcLlJ+u7YZtYz;h)i<r^56wLn8RYi*G;v|9|ljw0MVq zyXyz=f&fr4o&~>F8@xh>5kAZo!X*H@;o*gy5vctr@NyC;AVCM(f$JoUX%7kOgSG0Q zR1IlEAo~qk3k7DpC<0mk`XFfUHR#*|P{;(n(7g#xso+Ys2_*Ew`v>xHA80xf?4@i_ zqg6nlyMqOMzG@&FXdZ!odk08Q;EQQ%p#fJC54Rk&6b;o!O(4B+(?Ifq5FY4aXD)&6 zE|7d$cYsG)XCNDNJ7y!uf*0Gq|NsAD<9ARx!+I1lc+Iwi^{HA_(6kCTFdLBr^SF}> zsQP?S2QuRIVbDH<{a~jpbfU@~5A#*FBq{?au+5Z7z z|FCdn*Z`fQePaRH^8pgSV*zO^gZ6w}v2X?7B?@Anv2X>=vl@ZgZzZ_}h9EkpAU-cY zvp6+AH?abRpH{(;=agAe9ABKA8lRa0$uH|!L_*7V{B?TG;IJ(~!cr3&hGJrM9Btq>e`ppwZ~An--_YFJo{gK8VlW(!dC zz32xW5dN|pv^A9lbm+#5z!x=8ogjYbji47Y5I(pv!*UZY|9;4-tX5cty8s%w3%vlH z_`JZs-}OTC56)U`&}He_7d4neIY2^S-boE+&?y_G7rH~5SUN>EzJQ!pegJfrJJ_#j zoj$GyUcCAOYL17V>2(POo!SIBW9JNJ&h4If1a#ca3oj+m7A(*h#2JW%&^*K0$-?zw z?H5ot?nT-YP&Q`a-w(R7d+Li9)4)r1KqW8O{k|8VBaavO_lI6+{>51fYGa@2^>GE= zAHc!Cy$KZ5pz;)I1;|gJHJKm-`M0}-g0Dw7(;d?LBIv~_@Y&{|6MoKgy7azyp#`$* z^(>ImUYJVIO3VYGLCZ7QCqSVBEfhGrc^E;}{~2^M%h1fc23}ng|L_0*-q0W770p{lIpj}lRS@+Ye5E+J^!_@dxn+DD=S7yWbvw!kYtRE+kI)_xoM|EenzbIsEl<{{5j_ zK-&2C`?wy^z8C}woa{py%&r`e$h*kd%_0!+Vm-Ps5ZRO9sJ-+FG-7B98k++h5a7Bc ztrHwgFIIj6-GvA)vb(^^eg;S-xQI&Y#CE+iBvIEUfj5Zo@1F?L1c?ENKSBI%m#Htn z2>=vzH^5QX?bG@q@I^E@Y6SSVUkG|}e>p7QiGcSK`JPGZ>;UP0AqsNB>o!QiW@GEh z@S?d8T(CjshFObL8Jdp-SigC3x)4&V@yj!S${iPw+W-ImgXVfy+d|4UP{AEe7B^@MHvfL#H{GFMx|=|SMK@1J z;0r78*bivBb_4(R&<&udeADgw1yY=Vmxg=X1*hIl*9Bm&YzWK}c~No^EC!C|9}sq0 zr|SwxO$mzP-Vom-pqvQ0lXgL1H|XZP2FQ#_074Nc@qq3I zfc7Xu6JMvx)Eh58fmYPKRDkZeam7Bn9a*h@EV;Du*f*>3R?NW04_Rqyoh}N|Nn~+5Md88 zgHSB=LHa#!x&2XZS(;R6fDj7lK|)gRs*&U6=H_ z?f~^kmjrf)&H?-J1?L~ICXguT>dOm3FU-NWbcl4iUU(S>TId4LZT$N~e2;*F2~-dt zVZNBw8QRecx)PBQB-riK3aS5~tv?X=#cIgv+kh8M*C5uscnR5;(COOH8#*PZ+qD6F z74eHEa4upAc(D?E& z{IpKjDg66gr?eiZHRs>%I|WofegNgD?L7e?a{^yvLUryB1zm2H)(JI#(VPE}jcZ`- zJNX$H7_`BgTW7ul8w|?ISqxx*f{tRF;s`P==tcEEL-1u&`@z?OrFFJ=fyBYLIzsXa z2mf}6SilQ^s7a`5UueAf|Nn(Dc!iPYAJ|x-fwL>ai@t1dp${3o70dy(W*vP+y@8A?)f z3*u85lJhg-QyD6f^NWf=6+nC{Ln2l-$|d*U_9w3Mjlf$PUqrtC|36~`r~p5|7QB+9 z)AdJl?GN~-{gu#lJ)jvEP%q_2T4y6@3i5@(Yfy}UC+R1EN~#zCU;Y2zeDXhd(6tNP zk$DR`>l<96fLEcR-Xhlgi=|c)w5kO(>;rCb{0MxpI}KdvyuJi#>HbLToB(R7y;urb zL&O4Fgz}^DASeO@UpPS&f)+8j{^)E1d7#_%4`hF4SQaGo>2rT%w=0LWD^Cqaw=YMh z@1NIf-Jv|4pbH28bU%eGf`Qh(APO{oOXB^Ijc-nHGJy7aT73Kee`gUBmZhI4dp*JH zCqM;!XXp=5(6>JM4!@(d*W(-FxKA6(Czyp@P#w@1{#&#sUX(}^|pfa27u~suopn3#+U3v z2E9G3Abo-S+oytD532mXWS;;T2l54yabMIyZdC#A_~74;VrVz$NSGGzRf|0Q+e1Zy zK;xERH^_5=H1R;!&7v*{G;jyy|8(U1p8?AMptu6%|8z(S1g!_OaCc<@IiG=pfnkHY zD+96m=po|1SdMFK{=vfE+YIWdfChaYfcu~ipncE>{QF%WH2+|# zP3-o4aquBi;0q0yJ)rL06VT;eJ{Le&a6RaDz0k=rvAOmF-14=cQ`V2Lyab)1!@u44 z1t{I1=m1?HWAPeP-YcvJ3!5HaAoJ1_F^UIaz{`< z*a_7AXs$iOQNr}v7~GWscT&8{UbOuNZG?hoD0xu<(a_BVR+HB0A@(8_Gy)55e}O~8 z^+{Uu0md}YMb-O#pEUpEs5JvEbcCEv`2l>FL~}Q2%^gRl>lM)W%9Vf@ljgu0grHMi zUcO{zV0gV1R6@Q1Wigg4jx4rbP%gdo5wutmboV1vVLaE4n5yyg2;} zG>Fa2zyN9E!;X=86Y%2WB~W~G1iY~L4T@2YwC*1088R1xUK}|NmgL|60X&1Z1C(B~ ze?ZQl0j0@M5(d_^MY02+7r0W|F}%_o>YcDufqseS0;5A6?G&~C;rh$)~|+<7ol zw!%#5ftqqL=!GN1lo{F|!0S*7LHE_XnA!Y@nfcJcA4~z@<|gQ%IMDcQ^AQfPB1az3 zyzP%5&_Ti7z8{(oDg?e*c^(vC0+5gny%O|7V>U`i*E2CNfXh5^)cHPvjx{{t-yiw} zRHgYs@`_+k79;4Wqc@Evl@ zt~~gW-RCm&pSxQf)sU&Gg44^V1jdC9@Z!0>v-OApXWSdJGeFmv{R0t0mQnd_cTmo69N+c-Bsb)JJ2EMPCA z9u(UQx;J(v#LE|!K)t*JWF{y&K|$%$;nMB816;1`U?}C!U;v%!911b|bs2an0_@+= z8)?ml7}GjKZ}9JTy#Xq)9I^~v)WFQ#f@UU2Q8&-T?$9lrB8|^C3Zr=}`9iVEx8+PO63SU=-7u<>9Dk!e`h>!J~7qN+uYG(pyCUt|aEBwyw zJ-(>xd_ipy5C+!=0?_$=#G3CHPrjk80cL&qAC&GvE7SOGTUqCCVyF;2xnr*rmO6tIw3`;*5bh3&I zIFo_a6M>eucKb{;0ry8(8k=nFO3~40^F+5jdV-FUK$gEIkt< z{n8gS6y*v!A9_FdUSyMi7j+ORxOXxuFg)THG}16{ZcN#5Y2Uz>lh)Y^g5K9(68P}-M=h0&j0 zpF^O^8M5Ee7Gn16Gq2Zzbz@Bx9JS&I-Jl}^p0|MNK9<*4K#hH-<_ZOd5^+#X2VIcf zd_W=K#o>#fQX4X%j@49_S}nM#%{5Ib3?&j-&=XbnyZ-6*X;KM%VV49dk~v-<1X~pF zqHh5>5W9Ujj)O83L-P><>o+fc#6mI|JpW*}rx2rQ;At7qVb423UBR?Y-&f#uq-mX@ zZ+38k=gVB*?F6+F(>i@`fX~uS>kPfMg9{>cXD2t9;d>7}q@30ndSVB}9M@AYU1wmr z&VidLX`QY+c0x?{-L(s1PUxN;5OZAjy?FKM|Nj?HLBs!M63f5pz+ujOF*popixk8JYr1+Ed0HoNpi3PEM*4&eqRC5>SE}QO7IRQ z7f|U5x;qAXR0XKL_Je=FOXv&8LOhu8iz`RL?TvsJ(Wk%+@NA$jM{mf*5O6Ci`y>PZ z{?aeqB3zv;n_jSe0-q$ZA2bZ+<9Y*BY=9>qz-JeLrqDp+B`;8gUoaj6n;h`s$4M{) zGIPt(>vJju92o~6L9E~r>}1*aVlimb<$mz7GQB<*ASyujtANT57VwNN|9&6e6JSTx z@^tg`cZ*B_O`2qb2TdPId6sNYVx04R8UZ5;_(k5ds;b05x<4LlAo( zIYS_06d-Yi5LbrejKsXC)S`Sa!@slyOdA!0DZ^q0@P0)DQAUOr&C!tkiWgq}`@hr2 z6-%cTnloB0-u(Ly%^bZ}Z~py<=8vg1Z~pyD2(KVFzc6saha4kTl+^ z15yJ?=Dm7v{(%RJrgDH3fbwoyXDb&-0jOb`*4fJgG6XVTJ(Uln1~fRI*4ZimQUl3h zy+R;05KE_ufYd-NZ50El0R>1}XRicE4J5Zsl>(`OI!5NrzyB}lL4&GQAfgmR6o80q z5RnEV5I8+*ZxK+2v#Lke`8&Dzs{XMRrAm-l> zHs|6aa60Sg^qG2xe|xAvP!`_{^Ieb(u^l|f3A!``rqpHXjer*&kU2;2?%gcD7o0HF zphE~;MFRLCF1h%yJEZqc(2FRD>X(+#k#VrIK|TVz7t*)}GocOw4=dO*f`%1B-uwga z-9vW)!iG?eZqRjI&&oj+h(K?z#~aX1w4hEt)VCKObo;d4351#r@+?QU&jgmh7n>nk zUfh2B|39QFbclg}e-A6j&eoHq(7p*o3}kBSNzfv;JFotMZvcPIb-WeC2Bkcx*}W}O z6F>_zy1IJMG;9B-9WMk#KvI}WC1-$K^kZQ{X6g==0a#WLpY>4 zYTcmWlz9TQYq56HXjl`LtUtqh<70+fGhK$=1M2gHEp9}ts&e=CRr=O13s zl*jg7kRH$|ShtfxH|PLP(5798!Tj5ML6!yfP6fFos2A+qfL>qla65Qqiwd}T0^XDr zsL&0%*MkW(Xa&+0)a!Z!bP6ZdO*Pgb{>cUbsmVxzke!-0_Rgu$wRDP%2EAt@F5e(JK7ha!jK{g92QV_ z9(=^q-O>y4koF;{4>}=ysJr?1gQMr*1Ey|>542A}Wneza2Kk7DlBYH)CLB!~e` zk{~Ak{#FnLPLhk5LAz4GN-sVHH%CAVBzt-x*@YDpDE#}Uf|Or;1g>a7r?^a+3eGW8 zctOz%7CrcYp||(KhyVXOd%$|YCV@^@Xg%@p|NqVwQIJZ=0ezqf5_C<|6kd?wApe3* z2i@;I<>SBqfncp*M}SQVd{LMH%4`B)-C#+`o+^-upgI7o`(gK#-kgvB{v+<_fH*Gb zg)u}oafyeCzqbH1_;3Jpmzw37j{(dqJGep4OPR|Nb}c1##d*E?1vJ21PD#F)(B?WywR6 zb$82Dkm7(BM_Is&XtG#d{GJRo8PpJiIdv+C(>bMA18g#g12?%EYH}IeWQb#WT0x2f zUt~i}ewp_VG~G89R3?I&1S*@r*&(g7^}?Hf|3SMgA-J~{)B=OWH|V1HH~;dkRL2g!QD&I;_E3JSBJUaI?{xy|DHM%D|Nr++1u;PvMuAlXyjZy%oHPTvdqGwOzIX{fqz80b)|@w>%m#KYH0^W? z?$BXiU^w`Ip|^+W2_pk!!78|?2li_>k0Aec5l7G^z((uA#)9_J^6v*1#Gu%A=~C(D z*abG@5kqf_Ajk}`kFqZ^AlwgLOr0hF;@vu^8K6o8;_eq+FtGyxFU~>OX`QVgKY?RT z<2AHrqwxCQ{}-~LU7He*|Nrl81xW-zH@>}K-3T(61vL8(nlpnMtq(B{?BwmeAm0bR z&;~D`0iC!7G7ws4fFlo7W4Lm3hfFYma1Sta^KkL+2d9E=7RGL#37x%1K%u?@v?Fu- zRFHX~vzI`0zzgLKAQy0Sw#vNz_rJRr6j_1YQ$d`d7v|8_6s-q9tuRnl*a9*q;1Ot( zBZ!HXqe+OBIcvezLcItIHBgxWqJv%-Amm=Cz}P1OyQhMj5%i*P2S_VR0JNF~C)`Gr zZl;}}*aV+WB!E9Q6_CvYg-p>;T5=70!;qjd==0Q?_< zk}rsflzd-p0Xd5!pt~1jM&JvrFCacB`L3ZP`4+DM83R7Ki+_7BB+$1{1>60C9U=F^ z8^Q)12nUKRP?K2%mIOIKNpKcu3+L1a;QR}6QR{({Ah4JIyn?3G53m0He^CrlmiGXZ zQbGKH-d>P=VDD6rAwj*ZAVWb5#X&9rMH$Gbpcl3;L9Uc|Ezo@8e_CfNNbL(v&~{N! zs_q4G17Ae02C3ml>uh}isyw$(1?7aG7fRr6Ckr%hW?wX54wZoBK+wv?$Dn%|w@(FG z8}#DaPLL5OY88;wZU?D_w5A}1E2t2L=7hBFR#3(P?`G`>s{@w>*%u{xTSP&HFw~s1 z?x`T>fj5ezgEn`*Tn*a$S@{bzQ<&D-`UDhOpwN8)3N6?B|Np;m04XD`5@X@-1uxII zl-3Du<$$V{R#0;V+RXwn`S*jHMEv`wf{W`@wYkuiHKJnS-w)Qrzn#Yk6bB$T1-*C) z*~03N{hr%PIw90 zR`>E4Xfh~NCaoKsVA497x_wpBx~GDyO6wGS!3(-+k^^+pBoAm0E@*t@MPvt(w#fci}!z0%pP44_UDh|Q7h$^dG0f=c~AS*{GA_9%$`Cd-up z)FK4c3lFng88qJh`wwDY%5r4@^^HJ!4`#VCfO@8Xf|z5o^tIWdIE`fqGn}S*{GA;Uy3|HOrL&GyYs2JH>@$#P`?rTYX11_s+KR|ZfH1+n!(>R~sQ%Wl0 zK_UzgE|`fd4pIr?gCs!g0+^W~pQIMSg+THMA*j750;nq7g5o_vF7wSy0h!?z1U{@Q z9?FHB)&-IP%{75AX#E)Uevxih4(Q#uB^=GQe;7;bUsr&xDq!Sjp1|;e`R4!s-Jv|k zomhNYCNRACas#xmN8mWa2N3TWi03PC+>ynkZ34rK>o-62Ri!cB_n8h5p*C>>!liF&`xL2Kv>|5Hb~>K`2k~hs0jaluI^9)&^Z*{t|DpO z9H5?3cc@5OC)ewp5PQ=R_JZfLb;5gVuYhOHz!Te_SA#~_dVOC6c83ZCz1aB=)cE27 zwIEzY0$yY-1{d_8&F7$^5yu@U{Jo%souK*Y){~{6Gr<3Vhs7s=4r(y~O&o!ip8Wys z#0qKr180L~n|DE)Cjl=MA&gGfA1~6bgK7`gF99F}LEQ$HE+`YUyD#8H8$@Zqi?^%5 zj_Y*&@iHAW9qlW_zh4lv2vY*o;OGWb1WceRzS~y@v>B1_I;d|6THOH-V$?&+nt$@} z_s#~7e1!gKy;N!mo;e3^0qYF?@!}EaDn?hCfNo!jK+xK5*Ejszc>*BJ7u`G)0$&(_ z15V&|C|>`bf;c(gg&~B|>H4D^+1NV>V{d?sy$N0*Ch*b+z7M}4&z0eYkpsBwZ$6@9 z{pLlh10-cl0F_4_AZh5l)#5xzxeqD_7v#Azq@*#Vq!~cgx`C1)c)tT^=}36*UQh+P z(+RQY4QY~A9z31Y%JCnuQt}VztXl^D?V$=mFRqnBtI!h7Ua+Eo-d>P%1A9aF1oeXA z5p;JrICX*U<7z%4@j3{nLYctsP>G-yO-!K0g%Z83Ad3QedqqGyBzr?!z~=S(?g6cG zhpa_>5e`0>PzJJl1+*xw^%8#zC?>N&Yn*tpPZ)HEa`d`zmB4zM%!dLXeYO(}y&=4N zf?jO3gp3j}@^5!l2zbE;_fG`K2wxuP#Xda(Ca^v)_$O znLJPe3l$;IVqMU-G?3$7bX@uWe*$QUr>{cbi`j5RI^CffL7=UH;Olg<7(ihMx`Gqo z{D2p>;PrYEuXVe9H3GXsRUj)kvlx4QTR>C6JlTf~x_vo%r!a!t8T5h=q8wxw$Xohw zyW~;4jX3@=vMg3}>nCRNuC z)C2*gC+jyaKG;GMC1_eurVw(b9w>btEp%nr^Z);U0|o|$U4@W6hamQbLRSV*ssXVV z6uL5iVjRStSm??CN_il?4TY`@pacP87ZgJ3UC{DQm(;@2#5_nH2d+Y40!WgedIDJv z#0NJgNAvrog~uyi-*7W0kkjR`UO;G`w9fU*ftkjET(n3!jDMPzR>)Ok-x7Q zw3LgHAGCEFa%hA#L@8)M;Kl!WFl|4wm_hUC-Jv3&`9W}U2Gv5KQ6NxB7Y4o&PXKh1 zSr+4q9rHojz*nw-H-^7BUIj0fK68hz37Pu7)TFm*P?&AOdy}nNZ zLAHSo1`_E8na;5SY+eBW_D~*ZRlxyXloJoWVnd|U^$z$Jc>!?Oo2AqB4!B~v@loD5l7m8Nkj2PE^!~)d*w}K=o=)Kr;N)Y>n_m;RaT!HSN*ir(? zLuH9YM&JfwSz;0FY-M=;0NSAz7T&uTbinscGeoLHR1n8qUp%-v1G4NB>*@?1{@y?) z(BLQNkOqNn&=I^Wp$A%LF=T!KErDk)eX&yov=n|XXu$vTQgDQRco7G=taAHQkZ910 z`?J9Q2PHeuX?UOz)IQk!gOR@vWCkelhrR)2xeoy^QXon}1AH$u=D@Ul0i}%4FWoIu zBmP5{?el<&%^$FIT?f9*MIf!S6;uvoF}}D9)(TD9V8MVFFY{n=4NBc#K(|JLQ}-9} zaR95&fubxHn#Nl}#}>SpehxHn2Vz1}`UjW;UdS#5IgJIB&`@1c0>1r5q_Y)tU{Uu} z5E=AB9^6%Cfe3<%1n}`}FD$^ugHCFL82<)t{JtePj2DF&4?YPCd^T3livy5+*9kr( zi+?-V@PKacVOgNj4v_nUy1@<#co71=bqN$wphS_y_+m3SZGuNs`L|C62?o8`p9>2q z@IHJ{e07H+rT8D+p)%bqt)RH*Wa)aX3@UO!XCZdGN_2{JfOeUImo2%XOp(1JBji6KsDr`kSIv|xk+ z22hBD*gwj#doXh50i47hxc1t0uMJ|DDK8?@D!ht%_stPj=`b$${V z`*o~cdFqMX--CYsQuCXf@ZQ=fJEai?%W>B&#>U3RFYf&VRj(V)o;kzw;u7d2qT{Zh zQ7nenoZYSunh!8`x;_A{lC$)Ez~5`c#K3Ue6?Cf|!;590Ie1Vr|H_MQuo0lk3mIPY zgM>i~$WFW{0Si9?55H7^gh2~;_q>ROSaJs>{+hEp^bY7W_)yR~Y!OS>JN&(%W9qVf zA0#mQa&(8@0gX*Tcsx+vi<-mWq}b{Dp%-+nC2!V58+rnK z5X6T7Gy|+527pQg&|z&af?j08G`;9`-4l?-fU1FiyYHUB?$9SeFC1a&o`BDF?{!@P zG6b|Q=}piJ6YybvJm6|x15zqHAl>}t>!LC6tIst^ItuF_uLIpE7% zp9HvbzJmQCz`y@O>!mvBZr4AZu3uhU`1AjN zTDR|tv`*hCFE)eDAbKs?9r~j)^vjE_U@6x*pxu)%W`LwXGo~9reFV@J%`X8j7Q;+D z(R#9uWdq}D_Ln>U{{L@u08%Jisdi;}ao-4BC^R3*v3~Qy$QV)#q)h-Vce_)Ks55hG zAnX4?c|V{A(v}6W-D)8Bs)E@1HHb4dBx+n4iZj#mGSf1X6Z4W&eNz*QON&yC;#08+ z8-lJx$V^KMF3klgC@m^-&d&(R56Le{%n8ZNO)Yl8Aqmj{EmvR^xPSM6iGcxBe=Gd` z|9>awv}kCzA5njIyK;1O@Ch(5bohSm4&~@-5&*GXKY@=3NaNo&QBVMMX4j#B7q8P{ zWjfn2*N=>^S&q4WWObh_%bf)DSl3>bKv3hq zd*TvRu)ZJQt#@1vpyg8gUB7^*5kR9GO%QqCAK4cZm_gS#d;txy^KWkjSrE_-c1Pfg zMDSfXBA_ZU`&2^j6yBV_pivUYMPyq*XJmqI=>V-T@qN=90y^wV@!kzEGM7Q2ziI5&^<_?@Js0JVT8B>b_*5A6@f2&A+CT;Vq>~u z&IE)jK#TP{U3j0owuY%c4skW8v_9SnO5GsGHtz+oSc;imv%NU0t;#UL_&|3rNGJ`Y z`9;@{|NmcM+4ST_Mcea8CMvy{=1L7vo>CwHt5r6;x z2QPXQjo?>z>C8F zAnQdsTT}jmW(9rz{{J7)-3#Ibc25O4Dd>gWb&wKBsU8IBlXSKwfRe>_h{O1|hu#T# zvAiFo3^tbuGAQtcGeiv3)CH;EKNTe0dZ|{2e|sy48PMGeGAQtc7Pw)@0WlYpr@<;; z7=unc>IPc|nwA7<0qym-ff&ob{X$R{;|o2=BvHVNtJA?QfEdyXv4DSjFIZRiRFFkM zS&TbCDF@tgke9D9f#3Fyt+SN}biU%r|7o4QE}&xt4ME$3V?abWhzJ4^z90g$H}!?{ zH_(#$H2!T*&4Y4cFT|3IK`*@FvMsAYvXI3v2Olu-Z}(w+0$GIy%AJs$697AF znt!{C=#v0gY0wRoeUS^Z_e9`}kBKnnhk~3x73BP&?pBcV2^ph?WXvkKF?`_E1PaTS z$3ad7c?40UG{MyIx2y!oGQw9GBRm2s?0Q&1K@Os zp&uIq1L(*!SDs!U0noWjpc)5K3h?g-E6qFrO8woXZ+czW1o-!t{>c88zBMWF#2BdI@6f~}1`1ga8W#&nkIX-+ab9#FWA*w(dKAJ$gDq27P z|No-l^Z);l9NgLJ@E6p!0%ypy&R!c(`c4F?@%jA!f7bsjMx53|@+PEi;om+Lq%)`+ zY+S$#eelT~0^k~Ab381xz`N8T3SaPcgEJQ>U3d3_+z|L;*EERGesE}Jo&tL(^i8i1 z7w8o9AK8}@dV2&RwuXYP^Liaju-xE>nso_mR_UAG5HWbrOfiC(Rr;lyr317VCJVG_ z2NswY!8-8OWEl($3=S{8PJ%ibT!(l2zUiGJ2&qya)idZkq!$98KvPZ}{M(v@1Q-}v z5Ae72fKC+zS%IE540?MQ8$g!`?+^WgJAoMVwirNEm4ccifoYvQpkuWm?G>KhDU2<= zkXjAYvCcke07_jwd=tQeARQu3X`Ld4FET#<|NkNxw9f{bs=7np^tN!p+z)DtKzzv$ z@nvVL38?1{YK$SW>*ZKj{F)-t3a)lYFUWvSo~9RnKY&I{@2hTNHSa);N}euP22g7S#AfMoWdJ1+5c^A~D?>_VQEGBYd~tGOPHGY8V6oKP z0#N4;bS@33HwQV5%r~_tJrz8O4dH|PazUVD5q%wl9YI4x5OJuwR0aqaO<5{@W&+Z~ zgUnA5d4CZ9epd>r@%TJXKf;9>L3i=ag!kP{9ecTnc{ zLQB0+&}jCL?ot8J05?n53$?eP3G)RnLDw=tFQ$2{42cVfv*9Gz{W0OawM%x2Bai=p zdZ`RA&bSQfsQ%r1l=yc(Jk2RBmlZT8?>pqo2k?F#EUtgvxt_z z0Sy~%0d)&r%mxW;0}&fR#2OF*lFwr22Tg*!kdB0wTl_6^K}UXq53VQyUEkn2?fdHCOYdk0;z`y_=D0<<#7G#$Q_}(qoAFLp?5G5eRASI25 zK#D>7171i#6!-dG4(tuRAJpsm8l*Pxg+K<#5P|N{A6>4mJDNa49NoS@xi_>2-XNk3bi5K1=&0NuY5dzfIKU$ij7{K}0kvITTn&SUO^FEqHs8ywCrfy` zLw_6t52G->=IVC+ajXF}q{8^(H|V~y*WOudkmNT9uF(RPazHT^@S+(mA>Zx$<5(le zbqsJb8DDIE`Tzfmbs)pC*ttIkGrk_HGe_(Q-N;JV&LEAy8xcjsV?v_CgfI5&$~~w6`cr0zLAk1j7O_7iyRY!Z46?prWD(QIK<>qGAY9&|Cpj zR2(4+cFu%n|Np<}1`%x_qVd`P{}a&M0p;?8Mgc*G5dIBC_#Ys1%b*Scnaxu{SxqE+Gfys{sNt@J3v`~2k5+hn7cW;U3a_`W@lh{?Fsb( z#3-l_(vWgcH|P=xZ)BrfcLcofg2xQls1s}q47jVZFZ|mf*S>*ny$4li*(YQ`$B{BY z?4AS)J@8K3FHb>n)(Y5xGCWMq@Z(7z*=0tbTf1ZDRhQ#@VqE_0&1a1A=`4?g@Xq))c+y^B==Gt zG)M%F3Q%Rxda0E2xa$&FLAL~ypt@bZbonmn@Zfr(_5{?k1J%Y~0$ycKhzv~)M ze|i(>l*W@FX>bzV^BQz8%O1#z?9e^@`(5{dR&J+dF=okUENEi{1@0d3(ykx9Jp!Pn z1ISeV?Jj};KrP-q*%uSKT|rWywggD3+hyXPfEN+3K_L$r*0|#bb$kgQXf!Ky%?l}z z^{<&;w?Z6MB7+<)vQ;3h;7I%Q5L6j~&U4O^0L@<<2UlWed|~Ek!lOD%;>FWSus%@0 zPXtFJSBE3pi}fHQUWU-Z;9aFoN}hwzxx!r9i&dvY0l5_HGJ-)@V5KyM3MIxfDw;}Acn!DZHJA24+LFp2PQp9slM&A`v=Y@JOM9K!3-8q&gcSr2|NXt*4YGd%8T-Qpqk%x z2W0B^!c13&7f(dMqX^AMVyxf1Fc*dNRr%#XV}lGgX1X%G{{R0!sPLDW<;rj$%I2Qs z%5WLV{xj2+A+y*qxui5PC!{>zC9?>09xdc*>VTru;?%qnhOGR|ywsH7(xkMa#N5EwAO>h%d0J;Lh{?ZyDu`0N zOd#{X1v^J?j{vA(4}1|m15_+=WJ!R|M+UnMWyUw?#Wy~X0v?z%(z+pbr*%#R-Dw2c z`qK(xKs^Ft^6&2jQSe!b{Vk#(*IJ+8?+syrw4lI24$=z_bVwxyWl=-+u8H0=uxbWoO^(wHCwnwxI|wMhc_xA%e+1-{r^432itL>$yS z6vd!ZgF(B_K~V?FB`sYbQ@T6mFo3fBGi77Qq0nIWfF{{`CV=GAy1`CJ>zoL(?1lbq z(8MIjK1`!PE&(Mt&{kEDC7FjlfY$f*up0dN{~tpTbe0-Skbgfor9wlHfBiwoFjOx~ zQ^1S4AFV)VLcTl>U9!`w0!>I$K@4aZf|&gKTR~Lw4+;L>d*FqKV5Q*r0F~sRD-?RX z?toKB532wuAtl}dg)7(~a72R&BwvoS?kR!yz{;jTlv&*Z?I8ed$_04~6o24|gys&A z7&II4?{^ge4WLGWtl!=X%9D^;D$uc4+aZ<)zTkF)m99Gc`=MzMWi0~OAF!QZXK#X< ztv#=u_>m0+PkXh9f_xG1LJDr6EG$2ybx#G^p4K^q7o_GzImi^SAG1#|fD$uEG_4by zr$HV9XI^Mx2IX`9{oq^=4m^-u`yqCL67x&&ehF|0WL^ZvaEmA?hM`(Oa|h7mmw5s# zJ%tw{4Ys43rwJD8@bm#n3efTew7!aeKdRvnX|Q`hhQIjD3QDRRK>;rknLsRoAkYS7 zP$ow&kwEDIeu44}Ww1U0Xn~V?5?p%qKufQ!Ahn$=A3H-nvb@LyZQyzN47?Tu96_0f zAc|QbMIAWBboSo)@&AA4R8SG#-3lhbBHa*?tsvQMmV?|b*H}v2VU}J5o6{l+F$bJL zyF*T}1a-5V2zc>`8RQ+vCd}pk)(ZdBQ z!J$s=WSRJ4&9(pkv##^Q+`8RYA~1{T1=|^TVfex;56V6e@WKwpJ^@<0&;aE@v*9W5 zu8|%taK8W&7@$o>FD$Qt8t$h-C(_LXt<1)-Z3g(@XAV%&`{GV6!nO+#Hu%`%#uy<6 zh8ORy{{KG#(h5mg06 z7mHjOK$!}}zP`wn0aVd|TDun(xiWxqHi&(4kt+iznSmNKyB4`JfC_EU{Kb|(t47=uN%}CUm_5OlheBxV793Z7fH?#U(%o4s$@q z&tEve#7mq(jgnCC)he!UAO)Z68_@b=&{+O{rxNQEpuu_2%_*cyb9|XO~ zD*?xDr|W~)M3O1ZFmWO9p7Xk)hZ34ERn(aAVyg4YFkOpC2fjh=AH! z*zSY}son2UVtuhTAJj4leFL(?XF>(M1?|Hq02*lxdZD`b_y6W2pxsVyK-D~G0>Sl0 zrxR!m%^Oe%xpY-Pz0>W}1=W9vq1#7LpgVx2Gtl5g$>sn5U*ul~rR*~3+I80#uX)nC zeP2Mz1Ygkck1rrDDzm=G-|GVEtuS?iF41B?2@VGS{k|_imi2Ujx=5XlEHC6PgT^dC zfw@ z93qS2XplwSJ`+Vc9SvS2f?V^m^#A|=(Az&BK%$lt(y|J8;Q;rJB+TnAV6TJg-Ly^* zp4a01`$Lf|21i_4XCTjuFBd^UJr}fF-Sq)ziUyikK`{&(x)*?MbNdq58~Oz_%hTNf z>fwW88*@_UNx+LQ;6qz9AZ5vdWv&b_ggC%u31l}&DhH(W0Iz9ZvCNg>3v~a-?PZYt zfuJ(t$}-5^aUk}YW#IeY;&by;z+0M=ia-?j{L1DxE};EMdv*#UChW2}Unp^d(lTgV z>kjxZ3fDKsUBMSpj|B*7eU?q?ogSa7kllXDWX&il<8#xUaW?R z@VB^w8czFtRa#G$xHZ@EFqAlCF@bN;dy!@f)mEYlPA+d=EV=OiKj?%zUyZ;Q9&lNH zXcs;7&5LHxZkcXZj(``Dp`d9WP}WdsJ;~qF#K^#q!N9}7@Zy6f_*f(8rr}Z{$Whi_ z7eRF{%gZn!2FQ&-;JI?tC9TarnfQAxK{YC9(fJopzH$8mEl0k9PG)Teokk9-ML}JV z&>xwHKnod|T|v{PU%-n#LAQ$i$UFfO2GwgWpv5k}P^lNL(K)PWQDB%{DN2_6!hXE1AbFLRRca#K=MH^y78C-TD9W9%D{lj6ocL= zTp;G=yv5e)*u2pAmGI`&?cO2Uyi^Rf3(4o4KCk5yr=_-gHsGR5>XdCfV#aF zy{=aRK;aBp$79g#3hE<*>i@tOi#LEqbwL+kTnT~{@(4Ng%zOP2;lUBy8ap5>H@92056Sz>|bqxwnU(7N+FIo1F;M= zb_iKlfzo$?EX#TkUIca#SOIFg3A};|s~u_Gp&!79u|$D3+_-|a&%6x#|Ns9>1JL5; z?XDj{_ci%JY)5L*$beM4g9s-OVS5%d`~GKWS;i4mxn_O*bVCZG*B+LecYyN6of3rVQapn!2wd-3WN zXg4%Vx2sOTi*>N5E^*C*+y(*~>T@;e<`LlE9_R*f?9Hv{jy;|P_72RkGe9Q3+zz_- zlNs#VaG0_DEuh=k5TlAF-7H-E`#n5B^#JI6pe#nv;sb%87o|`;7`tJvPKMe6b+ySU zP{Ia1|NJ)x!B7bc1&5a=^8R^6+nW zQVV$TEfK{-$4`P93!rNnvY2oga(D|YRA7c|L^Y)8BisWBvj*!LB=s+80Q7?k|~CEWmN57PJp~53~Cy)g5zj2%n|%8e?b)~s9?lW zNb~P^H2@8&RDpV=;G4Hix>>qlaR{0OfXCs+&5#g5#Nqq|NU%cVu;2tz95zE$BjT_S zsu~)HPGHrbGPE0%ASWOaqz8spGgPhYV9$c4M6;N%8NiNVz}I+)OQCijI}VCFG_5ZZ zOknYr1&%k+b@F>Q!8{F1imOnKsso%BwsaRXw65}>TnzsXIY@yI`uecV($wh zLpSL7hwpHQxPtBv2bBg>jA3pw0u>OxE|Ahd7H$VDUvWe2fX2z4W1s;p2T&yPZ+Ddl zc=0+891@_K0DOML?Ts)G!b~^`Q2{P!ozz~;0-5mQ$T4u)=qeNNA`BLcF8a>Fo4Suo^C<@?Ji7A0WU&~ zVBswUwgObHY=9W|S^%6nKu5dGgNT3@GC>RD9;gLSH^v?X6~=7f7MLPD3az?*6~OTa zZa=T|1vRO7K$ko5Z}&YD2rnTVpk_e>NDyS!3u};*S;39{3oti=>s3(H?1PDv2!L)G z>kj1zdhyE^WIV?UCXmJyP=|AS2dI(^e6hg*>PN&wywP80M@8M+s6GMnOc7!q6iI z5=qc7lsxkP|AZILN8kzY2He~@(71$7;EQ8$5g-2Tp$?!1rA0uuuMKFY-4Qj=X#OD> z_b`+Txt(i!s6kM-s|mP}h5Ixj1mshV*Y?ncat7RVP@4oYo3|5m$Q9&}Mh89y2G}&( zaTZW}`M`_P!{9cFLZ|DK7nz6u|9{bP80>sdvqKVYoEB(7fKJd0cDRTH|8`e{07&xC z33~DFCnzL%I$fVYTIisWkX5i)E2)Mq_j?lfVk%tFIEy7q0OA#afETuAybR4p1Ug+G zfU@d?z!zuW3OTx6AH2NC!ocv_FpD{h8?J>5UCT^VE%QKH^g)>vlrRJWUQ|kf?BGGz zk%6iqmxY1hMavUQM`c+vhH6bu~Q zz9Qh`KAf1+IvHOu9s2+Og)YcgR!};9aY!GW96`$#euDSsg{pv#t$7Q&ZVa&-^K>_8 zHzufw+2ML>CphC@WB?tl#F5r5BAC`0dIY?66SRD;!}l;qu@gs!>mg8q(H+Q=))~6z zMdv|Ke1eF25K#ppN?bwd~s|4|Nk#o4}h8` zpdJG9+Q@tzXz-U5LZv_!fmT^Sxggs>+!w9dFqQ7$Ztzt`u$7>ZxNTrJwH_$d1v?cK z<&2=NixUUK4$urYDCvO4?t(z>@C6Yb`$2^RtXz$<02#%B;`+4i5J6C41NUT6M?T;M zZ75H-5dVG_ChHTmRaqPvAF^gJpqK$VGbQuD6i|QAM^J$I1iWeK!)O7X>2`S04{0j| zyfCW=cg7)RpJD)A=qv=*nBr z9{%mVGN3;D8*r`#H^tvtg31N~P(E@!-2q1{@BjZ7%pl_5UQquJM0^1e@ArbI5+Q?j z5xZO&Uc`P;VTg!|k83{SV*TdD`Y$RBpgU6e*;KiFTP}Kk$C4Iub9aKGfgHM42E!qHin}56SlfW13kduf&*X_Lj|33?69cWg0uAR9OWUL?Zotbp73fPXt^+G07}PEdIAZ+CqV@ZvCdeIm#m zpuh%g7=x9pFHlQXP`L-WOKxIk>k-g?SBu@Cqwae_`atKzfcz2kA~+rF42VIX0m|MU z(K~-YGwh*XvM(htp8}cD$uhAUYzAn#-H*(RV0A4}bs9LCe?Ni%VKD=44?UaSL02}{6>P?!O}FkknGp7{oH5^CtYxU=*B{}`Ro%6y;FE0v56iu(UGvA`2snmz~L*%TfQGUS-Ox6hll?~ z$cYCZK=}p9aELs*;r}Ag4Bzn?o8gdP2QP*wLM>Ebl=&!PfRp;e|LIlAu6GRe*=` zSs|hj^Iqt~bTWW-!c2#`3lwCaS`$3T&kGTSnD^pq4b;v*??9V5x~GEZpcj6So=QL# zQ+F%K%zzg*P?7Flkm~|p%n1i;40tga!su-M@$UbB*p*{nKwI%Fw}Z9{w}RN9g$N)a zweA1^A8&o~?mzf)rx)tm|Nn2^3)09?BGcRZ=H37Qpd$<3{r?~IVs!`Df=;k%gzHy) z0Ef+o?p}~7psk^gwt+-I;SAa;_y8ONp&!z^TS3NwC*n731LXrfP!?bXWdXd!duuKQOeQ zI(iSwbf7*dc=iitrmIbZL_M+>VaH>G925BBwJ$ilKw|`0LJM^JV`UUX#r{xej)R0H zILE!1vlTR+()2PCG^q=!+rVRLsIynFx@``4ObxVUrWJG*8>n`E5d+c>_5;|T*eg!Z zj-@O?@UB(x4qogv2Ka_c`1V&U9jI1XbUfJR>_s2;2fnZlHrVz$>~#-+^1&+={RkkveE_&-X|76tME37Y||O3Bm|I zkP(ovH;(R}383vWsMgwo*R6t1_kvq{Yct4NkAMIF?*d&&p4K@v1JnrGycyh^NaKf0 zK!AE}pjG7WK?7yIQ$g3^f$o|BDGlfaJ1FqQ11(U?T?CvDa3+IVaZtMk)HP^f1TETT zc;N|h!0U^+v_Tqqpq_{IiCTG3?F_m@599#QG)N2h>>b7zEMP+pgHsaN?$965D(DBu zK3ElWk^{719ehh9|2EjUJ^Za}IiPc|;6#Yp!QkH(`VQ1G>*Qcy$oh}SBakxK6}(dw zlF2~(lcD7+I4!>LKLUzm&`8!3&?Ig4MNqnd=<@}q8|rtVe{9q?isxP=C~!vbVt;0v)Jki$4STW=s0z863x?VgRGC6^#( zKzA=lHtjkZZP21xW^F$z{pESnmmz0q;;;3}b^X^Z=;@wR1qtn%*g}sskKU zFRZ`^kbwf_0Vv9+9spVE3bq!+49Mt60S!=r+Nu8FqiR4`ZR~glZM$y)sTSV|8Xb-T zDQgAE1iUcy2D_xQbq&bh9Q@mRL1qQM*y{ln=La1ZBmd$*gqPOY3Ni*%y0$I=nRk2x z==?+wGZ1P!s16S;G`kNuZ6fpsxQ@cA3hAUL zNG5v)SuWGr+VT#E8k#JpE!K%;1K1|NnPS1(8AB zU|RxST=j$ctOk@cKwZcZP|~Pd2f9E8#0<(hpHaP!&m)VmyA|a7fEP^Qvx-DITXSGq zQb1a~!CFAfpl+~KKzA?5(7+c5!Moo<=`RA5Ubat#m3^_+Pw-@h*VVAIO@37q1?J(;wErM~KsIfK)&gD`WRm5FPYF7gq2DfWovDLAqA<=p>gjD-W3lDdmB)eX5`;K71S^Yda=g^ z9I~L0=ilB7Ht9tKL@ced6~qS}QUh*@Dh7j;vUIjufTC|dSQ0#CuMH|9L4rXqWCKBJ zIKV*w$`7EPH~7#FP{$E|vYPJ?Q0E4;b_ZYc=Qs;!K?lQ&pR51>fAMAY|Ns2Z90%I* z0k;8Py9l)3!{J3Iq_xx8ssV~RhVEWa)CG1=1#yF3WJ6>FUKp(bH&;7b6+oGLKd9Sb z02-)h;es3h1I=sQtsw0IFPsa&KJ9Fkc@NE|Apat}203wo^M7|Q$mqZq95AgCuwfbl zSgfjmVwD5rVdmBU|9AI-R0MWU1=$hw!T?q&$h-qpY9LJkh-}#l@=xH4Z1BZ-BAu-g zAVpI_1_pJ5IRV|hAdP`9EV@8W2PFm(P)u&03Nk4ui}A&JCy)f}+%u5Yz!%;Sv9!)s z5TAcL#6tsuPtFLEG@6Vf`teE#jdAmPA_|Md(EFE*?KhbXu)0a_gVqPGVcmY|cZ zSpr|kuL3pIqQC$D|5Ez<|NoG2J)3i`3@=(AfXDS9r_FLaRAFd50vffme)Hn=1Nayp zsH$-}=gI);Sc6JBjti~~pnfoj&3wU?0n}{;vHzWSWdOBOKwa@~=Uo{Tl5c!1nX544_IBBwlykl>t=ufy67%yE1^v zL6CUCc~=Hd`37RApLb;d6-OX;(s@?~P)-D~BS3C`_aA)kO3-;%22iAc#C^`Yf{&xF z0+W?svMjMEK8c|$vB(t0g)_kSu2_JDOL7a$K|`ZvFdjrvNp68LSOly;GcP4GIknh7 z%_p%aJ+-)mAv3oizo-OsIw$xfmWqP-;?mr()MTI3JkaXsGzJ7Wt%9Knbk=5C1w$p2 zu7J{2AkCE^q5?#~)v>H8OIjFBFWPB2| zS-Z0fEan3e1GU6lu`J02o$;~11EkLSVy$x)18DKg7tn5J&@x@$Ki#1}dRxHziUMAU zFoN#w73p;S0GinQ5cuM=2-JBc9Nn%TUN$o`Fua}*JHPkYGSGa<^8f!|`~k7PgNRSd zATx4bx>3-{&V-yc}gdI`QP+!emeI})Z8yeu4a>>p&avLjp^v@G101G)nD zg(ghA#2L58Irt$9vlYNAhQSwWR)Cfjce}m`co7b%@;hDMygmv#_ZPG%8nQ;c8?<;Y zPyjSTjdEAPW?+ zjR!$Hn*uXH8^~WsLL@-vI5atkfO_?yRP^I`gA0@ci*OGS28I{eOaK3Wkp?0Hmx7km zf|f)4U{w$Soe^Sx17ZaWC=P!#9yAaEZ5F$E9V`kq-vVmn3zemyF-g!~;Lb)Hkh#oD zL0ja19BYyRo%0Sp5CwD!3`4i?kK>J?V`4xP1266_`TzgL4G{5o3247wH|UH76%_`C zpck9K7v6GYNr29TX;A^WXFgmAbUert@L4n6a50cp7gdnfa;O-4H#Bd!2|*Jdf6F`2 zw$vm13=A(m%0lzri{{!F@Vw`}6q5HIfu=J-11R8pfPQlfORWNA_h9IsY|v4%FM6ji zg6D%@a6>}p_30g;Bc?#h={p<2n@~S3{{Meh3TV2^^+j6e1khgF7xxx}rZPa|SYTUF z4+;WpT{q2=;NS222ef23^hMB%dGVmt3DAv;u7AKcg}mr(0iQ4%@WSDmA!wfT^)_%; zf6)ov1N)j6bgW4OXoD^&DS(#JhyLiC2&x;pT|YD*kpS&~y#=Y0Amvve^gg8*1&jax zZ?5HF0OeSYW($T=)|c=RE-dZ^87;`aA6$-DAFP!IwBkkfHo5by|Die+ReuT z-8<2|6YQuGWw63-@Oi0$FSKRAu>ux5j^b>=pci~lNmmZg0g|B64HoM+FDh=roqq;2 zKlTQ6n2+!+74R9zBB17tHMR*d@EjOuLbapU8Z^QZxCoSDVP_$?T7txE7lCKRd_gNz z5oaP_=YuAv68>YYR`37+XM7>D2vnBxLbxn1SV7!wUyjaRP=yPcC2Rt%RPJas2ATSN z;s5_Hgh1B$a`11P2%bK>R3Zyn`?9SAJbiW&WU>+1?@$84N7!ahAF`tDA$1u0ksmqO+wh3XwU=> z=!9d)PzTatX^;fCfe4XFfGneiY}A5`Z12Qs7+4Q%p$ev^7YX3|2}Iy3Ko{KzLX3qB zcCKFlYJY*QD}N~rx;I(~eEce?`3pKQ<020J{)p?hMf4+wU1yURX1M2D>sL%lyHE zblB$&%^>Tl1756k2374G0WY>#ff%59!xvcuO@gj*08MLwM?asZfHZRiyoiGtmkKxT z33QALwECh2x|FFh|vbf6h|Axg3eY@^RpXFg3f(^68Itq+)0LBpyB!=;6*e{ z;6&gHc}u9f!p?xpvCdXd|DY4xJ%Dx+y1_yLFRq*ds{pmj!SUG(%Ez#t1WeKT!yrXG zK>;sJA<99ck8Wlu!}(bZ*VgocAXMv4*+<7*4flAfh9#IeQ6c}h`&j2#-nbye?_~PSS z(DAFF5QB!51GrO*6juLX0w)4rFhj<$0$ymH26>VLPgt!u308qWteOvj6oJBu6QUd? ztZsm(M?o$|%+$UJn2QotfiQoAw^w~Z*)oqDR+=z%7lK}#H9-z5ey9v`SRDY*=z(lT z4y&Vc;9&(m7y>d+ejj{#EI7bkJcf+k1-#&bL_JFQfIGDT(C+7pjuRlSgLct^5)uD) z@PdP&Zd66d2SJKJ;q&r1h{XXKwuet2UjWb5qD~*bFqi`gABcG`3=w{X6olA{$Sms@ zoG^7K0$;2(hKA1t&=uP6p*-a9u>em>qKD7Y*`SiI9<&QM7(}Q;k9xqqBm!KQfo6pz zc%bDVxPU{g8u+*Mf+`eHIrs*2Qa`Be11{ju7e-74)s~=g@BlYx@ZR+UZ0!wbQBrq{ zBk1I}w9Xb$2T)b_XBKG0-1h@`(;s-Wgd?rH$D>IIbfQBKM9qy^pxH!?PmtNfrBC0?{ zDTpWl5z!zb3`7Ki2pngftL4gKv&m*ch!T=kKW(I z3i2>$r{r`-28Ld+(?G*nKj8b)A;kiCUx-^AM=t-rK_pFS8CMfQOFX zfajUF_k#Qh8uIxBno{*x2ud^}ovolC>uu%v1iIP?k!D&%A$bZkeQW@}Uf>OQloe9G zgDslE3(4>xw}96}xV{0cbKu`T6=YaYH#iCcUff>*wFnd=y}h8Ig*q2f(6Pc3=OF`# zbHPRFKu6$uf{%176IU0c!BW_T7U5 zI_O0kOzc3w3oZjtAb?7bA0NT%UO-Af>s~~h7DK;Bz|CF z%D=r8qycUosLJV{3JTbu7t3K9KwMbZfKGh)`2T<4i<|mj<3MvJ-L0Si3V2Zl(*WXT zF+eSb8J7WG+5?)=dC?6{BXF19I|44+I$J+{1RY-Rv3jsT+Q@NSUPLFKb2L^))j6R9rWs0R%v@W4ALut8<& zY?$bQfGnmLZ^1PPII>?D!eqc@Z!v_I1{r4U1rN4@(kI9bFP=dbH$kifU3c~V|9?;l z0$CF9!UCcd5~H9Y(jZto-2-1m2a1U&;9U_f0yDA-rWd_92ARSSc(E4TE`!!JpaJD> zNGlO?_&LhLsTT*Qg8CxhRb&uT8epcR!%P9SLBOVfyB)nD$V1nlj1Oudf^O?Bn+l3} zP^1NQw}K)Kbm<5vv2{-crHr5#U%|B@YNWM-qB@|v7ZmU4EwQ6m)T2f+Ggt+INWQld z7Rf0GKr9YO3lk}l&*)%_;sblM{*y8haSnGHd){cM#!=;h?QxO z@%6OMsXCwj|9@dR1vFv}8lesVT{HnIPXb>gKq~Tp?x`RHf?foafZWCdDgJOp186`O z77gzwg9;RAaksq{WK+P4SK1&`z^;d-v=?mbZITJV)H zppp_kaRFT|szV&P{{b`^=>~G>wpLIN6f|X6&dk6-e)R~tTCH~~ zs8+^b#>1A0L)->mZ;3Q}NT51+5f53@6u`f|6=YpNcQ2^%5cq-}d|9AKXDf*N(&Im9 zk`NTPL7>?|P}~N*XfXl@5nRiWLJ*$^9LSI>3LwscXH`vT48T5717Um5dAw$6NQnnpL1i)D}>aDRAQd|1WGN{{KG#+<41A#E{kv zY2<*fKm;AN_y)SB;|=I~MsSKa_>h5r{}f(uQ|J(XFX+De-d2!t(3Lue_#1X&Q+Jr(4Kpck6pRSF`VU@w99Fhfgo zM9y6Xsk8%NTAt;D;sKO%!483xo>K%N4)F!Wr`HRk382VrHjA z7&KC0aSiJdpn38GI0Rlih4f}%im*ChWB>pE6F_m?da2YI+KcaYKWMxcWYkMV(3JpRKmY&#@+62j1v=VkTQ6vY3ba2K zbk_{1jZI)MWD0073CCav|F%|eU*Q7i#sE-r6g3(_i&4L1A4uqJVTE|2^aK3H04&|h z{h;obL2nN)#9O5w(z>A+S}gDT|Nq6LK2Vpa60|SF7qn%48+fb@R9tz2#%pklckyon z5B`CAJxVN~d;khW&_L;npg!ml7f{f>Faenko*n>qozU0+fky$YFVqJ2_JWjyTFD?E zAjJVVo+0rIT6F~RFm&JrT2#QAtr_6E^F%sZL2h|HiGSNvaKU?tzoiE?tAggyLFw?t zvflsyUrg+U4JLz~h@*E`Thlugqz6{^_D+F@C$unurk-wS5@dwr0TfBl+9!znL&57{ zUwntmnq%a|`QWQGU^y`pRL(*QK15EG(FJD~cutJT0r5d|yK}&;ZFnIHa&zE|vnn8I z)Iu~9A_mWI(DHNpRFDZlFS;O$D$+VzL43kds11oE1N7nuv=kL&0yr0`_J9Uuci~>% z1|L&A4vw-lu+kOOGhG5IT|amK|Nr7%Hz>+Lxd$9&I8qgV?{o$RhTdL~zQ8QdUS4cz z>qVk6G;F}*GqAHkAn}N@eE`w~fwTo6(Tx$KO9Q}WfnpSFYxh);4}xBt1>XoG(%A~) zzVyNtqh63ENdQcXRW`^dp3c@8s1XV__r)J2kSuD1&VYzPBNWuyfkf$x^AHJ0PY7gO zz>6A4+Z$p!I6A-~i7WA&gUV0HX)Mqbjy+_0L8gONCHr)NB6{6Rsek|fzuf;D)UP=k z&?~C&&XwWCf&<`5e(334N(Vu+{Gho9>o+f+9)L_qOaPskqw&s_0o1Vvg?rI^R|Zhu z8^kVn@5%t`9)s9yZD0I`kUyE1^X5Qwe%-jx9q`XIK*dshZf zUIv-Z``(oSRJMXT_bl&S89|Ph|j4vZpds#iue<#-}n= z#HTV;F;p^CfX`8d9zO<}?`eKh6W&|fvQr*$JP~3S6wdq(KCH1;3Y6JFc>pxc&ePH9 zGqvMIWCtk9&w=Z{AK>NVKcG8bPYYDzE7IXonPisfu3*N7u49!P4S`U=SfnDV?wWHJZLt3{l z_}b|g``Z8if3dP1Im+$_; zv%p7Jh8J`9g0lc*or}Ug6^7;`HP&xlJlhLN{%I3HhG=|rW$5_-|37FAipfV;hO)$* zQs{BGkoXe`3x}?lKv^zP^0xo~Un~L%w;-wA{n;F3&(X@Agi(uV44HEp$@bXZ(^rU zy9HA{QiQr+x%a=Z~6cK#VZi;6hvHT0i|Hjw6+XrhbL2W4TlIr zNn{3SlL^Q~ERIK7qxJ>d!g}!<()tFe&%P)FI!cxkv{SS@L{Oxc=MyN?bg&4%NNoW% z7M($bI=E#22-;5qs)xZD9`&3k$i-N-h4`bp)~7p^r@2app~MmDV9;%>29T@OAdM){ zS`ZPBpcfu+Cw|Gk$ky%4!yKpsDp@*MxL%xT24(I!FUvvmnV|FiLqCD1c(1&NCFd{# z?ob339H2-5`Ms2*Yl;|XS${_eBlnAZu;Ir++sS=7y1+YJI|7tnM1X`}G&O^Umq2?8 zK7xi5UVMVt$lr1lv}z%g1L-2W&7f94s7VdZMyTr+Kv(vH+SC0E3=H66C#@6PwZP3k zS!%Pug)F$nMxSjB{cL>-bTbtqIe`4t?ZP3_%X0y2Ea+I>{h=u7zB@!rq*vq@=sLwN z7RC-1qZc(zpzvJqy76V`|Ns9%8*N3b-@I_!2`Qhz_p>*?v0#Rr$9>|@|NlEd$L@ej zBjoeAkGZ~JIOh72;h5`VhGVXe7+$C}{r~?$9z;li2+=0+?u<^?AE1&5bYVvz2RPo& zNPLcf4jwY`JIt^~Ns$iB#M%tiDCT|-xywmp(!rS<=^M}t@(#UZOV(R z#{d5_KzGc541;CCAK*Qr`$E5icduCwhS)o@*=zTcXE zO7Qm@ppnU8e+>nz|dX#1AN)%zS8fI%Rcv&euH#)5nHK{b;I@r>w!|PW3FEqUz`KU9&>%jc+B-Xa}c!N1M*JNRlZ&}kn(f?n7Mf|djcbhthQrzqF&;DXFk44TruzsLib z^LiWqw$O*ozZgr|Kv@}dqxmDo7r}LqEV<3~5m?vfSI{It^dFo4Us27OU^*a>c#t7(D}E>NV2+XVU2|J2X1|2_gX@^X?FJI+?+=2>r18Ao5MYJ{8e<)^L0k159 znej3RR8A>?!Uc3Z&WC{BUXX&o-l-tFf?jaef+iRRI$R%v0v49OCcl8i3rBY-&oL&3 z*KFOcJfI@}WHqRs5a~8Kz&Y7^=19$Md2n$ zr3OCpbq+`|^vu@}e_Rn?NNq&4ueo10Zd=cn| zO3-3vP^T@wG%qDSIX?q(uLVdnC9^0jF()$x)(HdO=cod%FFRfDbhbsA_zZ#=i|(HEt9Fhir%IYf!BFVrfZ$lf_HePIhq940RhJI4K;492*N-B-!oy zrng5RfDg1TA@m1q14c&`=m=`a((9Tkydy5IudOfCT7a6=u$m6mQU372k>|dWc_aA8&KgG-n+Nt|Ns9xl|jQ4pwSZK<}5hry?7B{ z{{KHX?{&NgDF@||C*YCq2#_!+jXZc^3vwP4fJnAtrq^sQ_N`Q5m|%Redn!mM zt>K%0SAXCNC$4~S@?VHKx4eF z4RektFuag1gA4(+g6=MU@wXH-Y19j12X==xfCk+`9^~H+@gR)f4GD&z7jMCr#R<%4 zJx~YA|KJO7Te`qOqQEr-w^<^^u={> zs%8mzu?|w3gF2g?F1;sSA=B%ft}8%8!l4U-UhLL!8{ZXyFV;iW z&vm-4c(JAA|Njj6*4K>Pp(}!3Ytw3)ADG7MN4iyBcWqOebY4HTSNPsfBL3Rftte6Js_<{yYvkyVe1WxPpVV&^e zV=<`E18tw*-UQkr5%8k_0n}L~#u*de*06&rNRIA_AWMT@OoDWT0$%(S2Ky4Un!FJt z^kQ$Y@Zvzx|NmJW84N6-1KZF1|KAHbgqjbW7D~mz4i9+I!wX_S zmV|ED1KR%}0-J|U>vZ9r@S?it|9{AhZ=eG)d0}4RZ*c?FggAzLKqZ@D79Xfp9`HgE z;v>)m_K)t6-V;GDzC&6rpcD_zM(QA6yxs-&B>27@7tslwt)Sw!8C(dn@V7UEhERGz zLjP5IcW}5tj+TG%;!Yu?xNz-waj_5-tyN&>r*-kRF95eky#-|zaO^+25g_~^+jmW&f&GZ=b9Hw0xd^n&h@HoOB0UJ0<37au}GR~DoX zJc!fsLa-2&zQGG3L7njJA-ofUz{ev>#DLcF@PKlyZ%g2dogAPj<4EgtZF#{9)&mYW z&~VOnAJz$hFDmXrvju<4Oweu}0S9Q=;C~M;(E!TE%wWqvV*+4}-Jv`|FIGoGEMw;1 z?%ERY!Utg)Bo%-TN@a(cQ)0uvKeVIuQk@C^cGr#osMq)rPLG9{#=qUS19Wm+OVEqo z>~Pnob-T7e_Iw&}xG}t#xC~Tb$3w=#MV5nF=Aeq$`pt{$%OKS^zdQrz!chwjH--<; z`g<#f8^ekJ|Nn#HWd(;D!v-jO35OfQ0;rma9BvE~{{R0Ex(B9&!;K*)Ej1)R1k_r0 z%}XsxuLRGuctUnKGUR0Dr6v~nxVa{lr4}Wor-Eiq3dEW0=6^25!=W@2B&Cj)(04jfY*r)_?$)pP=nKo#4I>c(}HUqXRTf&(qD+ z<-ye9`-y*hs6r5EJn=KAZTBK6AJh#3Edaal=l}l~kMltDpLw7p1G@O~Gq|@|cN-qT zk658gmB9@U)Mh_ygmEXRmIimmL zr-DTI_q!@sU#N}i?FDHDw_`wS+rb{|odUjWfqy^P5b$anP_34ID1o^Z)Q#fb4>k$Z zQv@wC`t$!kXvGld#))#4=zGpy_T%l(mJ?+pl{QF(cfUN_sz#lX95X@UpbUS3 zf4lF6K)A&Fi69Bkn$A+ljeMQ1H^3^uH46XsCeWox0WUgOKp_cUWb>j1#=a1gW&dIy zgqPOodgXYl%HRK>nF0n-Q?2z2C>`|Y{Qv)=DhHGfKx5S>!2Ub|_2&ux{jMkY_xnm% zAFTD{-yeG7c*|4)s1YD3P%@?MaYOT4#^w6Oc6;AZvs{*1Vn% zvK;HVY~V!3-@6Rdx9SDC4o5J+`N~>tP#YOE$}ts`ZhKp}KqRdA=tg znZ_4n7AV*xKtolGpw<~A%XCi#xd+skJ<;9M3JS!)7tY|#{-B-|^bo#oh{Ziz4xnS_ zK;>QbB?j>Jm=mBb;o~e&OBv!n{{6lu__t5-1%+B#JQ7iyn#s^x32AbYOxB-5C^GSwI7OodNGeIE*@h|^&*DC=p zwlhN9zx@PgT{_6zpclaqv9!)s5FZpmU`D`;E{FuEOvYCfb&GHXy^sU9uE57rfv(Vm z7FmLbqyur0dL}5@XyP*tR`$d4@!IR@*flpFQ#Yw|No*1WE1{G49fSuCyuxDf|4xA2v9L_@loeg zP{r507eqqxec5bKzCY023ld7}Y~cl^%oheAYotNeyq*uvec-Cf6@9gU3TRBl3zS>n zsrv_L%o3I;K?x2t@&O*R1SQ(+iwVr&%mSXp16`T8eJaRbphfzB|Njqo;SOG|2+Q|) zi#Gn=)1c94&`MwM9uruqVg#jZkogB6urOZ$Ww>sUE>I2zPfmj)8ssK$_Lu=#HQfoW zX(0|YfM+Qb*Jm-lxcyHLw1NSeGeHLTLNhX21qljk{_QQHpr8b`txt4M0mnnoiwy9+ ze4y^mR6021k0S_Abzx0?^U;U>8F-VS~H{xj@t5MGsgb zXh;-1&;c&bLa|f<{Jo%^v%Qd9)eSCCQ5{tb-s8`+6Xah|Jq)!FTta|G>JC0+K@<>T zY2YjhjxlvN?c>Wljj36SC)V0%w6KuggU za48D2_aG=NyICd#yvXGQmjuMQvLF={sBgdn;-O!_ZE4V27FW<6r~!~xLiuJ+T99p$N{Q5u* z3U~|TWew;A=upr-Zg&D+G)@3XVrhnCbb=&6&5(EfAQlJqW(eaSa5RAm&KF;QL)qYF zh&eQ23IVkAws$J1pbqK==du8>;{V|7 zyF8FYehL=%J>aSvlsiH7=IUfnQiIv*dnNG2N`%|^w?hkkSBMx=ZO{v{E$~GRL;{?| zzP7ivP(7dqaql4pL|Fq?bvwDPYIpF>^7F->{c`Xb3-dAl{iP?mdAd4zHoVXU+4_3IOGi-2beS1?Y9Tn~qtye@ zwMFYeYCxk7;F=9>!RLOkLqLtIEns(nE+s>%3Yu-27)rGu1#kkq00vdYpu_-~3vhTb zD-jg9d0+!vzkqWtsJsIA8=!kLA^nCg;9Q94H$ZZ=kLZgR?uq~Zzi>)K%GIGDL&554 z&~KR01+76%s0Ba);RGfpd(T#XemWEVC zkOtnh?{J^+Z-yNLd=1*H=O$K;;y+78$5K2W|Fz;m8bf33%@rXs!d?;^;*! zT>Roe8Cn%v*8$|%?qu_Tqf(|Nk#e#ln1!rx;OUX8`wev351L zxqb$fAx~iwr{EC8-ssswWaF^eri-CQ7nGbJTa^(-JG7jE7oCkZU7#V1I`Iq#VFreb z1CM7jWEeb|&G15~R10)E4bC|8{Q{3Ia8qUyI2nT$s($I6a`phYmEwCMt&_#;#qt)#$9rzc25oUqzN(FUKz#~g9u0(@3_xOVR3NhMMgMUAd6X@b&&!Hg*>2Kfg`7gzy!1mQ*CXGoy|a&HgRz2E^a&<+NWHdjzEKr9Q@0QWv# znZ$E+UNb7{!>nZ_i`hZ5&0$*%A4h^>weo*fS ztmDO-C{WaaPHTY=AtF*$Zx5pb2YBxO%fUx1%%=iDo2NiM9)8fh-k?ej8t?%xrhtzX z7kK#}Gyrov3Uqr4Ska5s$Dp?Ix72`_e?e}LodR(vcwAsR=+anWnCtjkLO|=cAkz+0 zK^gLeJIIlsxWSjbBoPq~syZ+$WN_b!2Vu=)a9%?SSXYU(ZXc(AX`SF&0?B)@N*k1H zdV9d>mVbY#L|V6qKw4)=;XhCj-rI8&6m^I?8C)%-b&4>)=!pFP|3x#1r~?rzBOw#3 ztp`d~`1gbDYCTyh364cju@m${{Ua_sQUgdeRZ>r#-4 zcxdi_eFWxrcd&2383)u!Mk#K<7j*SbH2{?`{M%iB1n_V3{S2BhkO=B+1;taqi$_7A zl1AmVD?cdxflkZ|{Q+7m0&Pe`jt>J}3)kBVG6tmiM-cxu*UzBSVk824r-FF3?mC&+CKy`@vNZXqOzQ4+3sKgIlI(V=mB^I4D-3 z(SzxDP^ttsEF|DTRswYa$myV=*0k;rkAG>M;G_ytj+ThQs;5AUDo}c7VNC0EDf)-x zc33Ypts9&U(?A1aGs6D=e=!+E^o4;+7x22#Lq9-`C|?~=IBEp-y6y=`1H}nw`6noW zgDZ4M6vA%u0*}YAf(jr=h`;#o!+@drhytka!acCc-^&HMA_lZd{{;VbAJ;vBFMb?^ zCK>(~Z$<`&7aC#z|7ToZ3@+GCbi0al^GxUt3;ATsQ;La#Zz>A4+?V{i-0zubB z_Bw!D&M!eHe1UHX1WkukKm@Z`dqX>ddR?ak^!hFc>x z>V00E4f+57#fcD5tb*?N&0_6!?Fi`gof6m^x*(|6bq!cA)WZF)@Ze+ti-Sx8g%wBO zi>r=EP7FQ4zuhHt4=9$mfUh}xQDzSg7SK=)#9uHLOJlbeN2f;s%*i~U4Y=T72RWXl z)5+(B7RZUJU?<)JW&du_{xAm>H-;AtUEm2p=vqCdZqSS%Xll*+&5NU5kQu=Vd<+Z> z9w5d4|NjTg#J`kj)K-G<53UqETMb!_@Uy)02<;3iGNUWWAKSD$t{3y^@`6d&W+E^OFMdkS=LZwjvis0qCvI!XXO@*6a}2p!*R0ZYHI3Iv^h5ePb>$pYjr z&{f-Jf#?S${RiJQX7d04|JOok-Mt_NWYP%Cz+^McoBkPPsXg7 zGbKUG_a=f4m<@VS23ZLOUi1SJc_Hc#&QfXJO&%hklfGJgK-)Op`+-(AbMSAU2%6Xh zozC<38QA$CuXOwN1VR=^fwTl<$-j62lRN>E=msBV8}Q;(IB3{HfPepq)|0h1pk+#~ zJ)K}V{_S9&gA~K(j(s3zfYu##Hi8U(QRVml|BF;V&~Cs`4*u<62ZA~+AQuL{u-OI8 zl8{T~`L|C6i3fofHgGyN?%w*#a{@$0|x~-3_4+TMZ{!`<@26=WfJ zR=ykJc!bq2UiyL)RzSwAnKL6_WWx-51j)1rGZ=lrX`*=-D8Lv>3bGh_!D|--5N3e` z4dk-G7tG*;0eAvlL_v)2bZyCE$N()nj|%chvE3hpe9L4s8i~kpwY$M(Y9o z-esT*TetakH@{>=9;$xD2pZ@Dl|iis_nRGdrh(^V8MVF9Od8wC9ShH0#x5@?*&nTXo?=^ zgA{?vpUg54i=(qO0ZBDD?ZI<(*&}GEod|r91!IFpcGp07X`QVxVBO$=3h3?y#Q z93%?5D!>Gy4ixU)y`b<3%wp=E3bHZig~WTX=>ae1^Mi^Sj(`_o;Hx9R%W^>*u0flz zKfF-%0wpWfmmmIu>c#+A-6#bT2Bkn;n;z@HlHfW8W7A`|^{LuO^!kmbDG+k==^+Nt zo=!nfRAin6?G)|~VG;n%I=cSo_Gz*ReDMylkRhOZD#$rOFZR6z`=qlK#C_fWG8eQy zy0(X*#J?9BFrY#gs(2#!Fd`m^Vpv)QjS@i8^b5v^V8cM=-ixmfz-(wje64sKYy&9o z?Er1Vhl;=8^90?0>H)5ZAf`ZFmc@v2wJPWY;mk{5AGvS{Fdsrrz5y?8fR7h}=5c;V z^NR7sB9O7Kc_Cbe7n4!BEg&xcwyB_|7-;k3Vs-`w=p5yQ7wsTPJU!@c(D11zJLotV z&>$nIwRgN#1scJ}TR~fWAYwdFu@|Zy|Np;G01?t4LJVvHzQ&s}69YrW7gR!axGh=3cx0?H%cnGcjajvhB( zkmCk4l-?cEVG;DA0b*ch>l4sUJ}?QYNI`}MzDNe2^$K2?%fG!9noCH^cP4068NRtQX`W(5ajML8opOL8|@E zR#1}Y23rAI?*l6CUxdNrK#8P#D#!@X8G!#mi#4oZa-d`b3cT!#h`?s)0JZ;ME!FxW zP{{{tsUG<9o=5HG@E%1#8n_~OEkq`*v-JmPH5ix#9g+ACba3Ye=pF~K zt^C`kf|Nj8lA!i)V3yL0zX;P_e1x$>~WeE_>9TTlSJlQsJkL#GQL2gn#mhJYAj1T#jG6k{Y_ zcsYaidxmy_CP4(47#L6r5AYEV{4JoS(ec(B{~!xAUwn50O>yBa9&5|NM<~EO;tINt ze!uINZXZFBUXg>K`Z0}v8xIp`Fz>~!S72YKb++CC%@J(}Q=svmAIKR^q$B7>0AvY6 zKsVSW0WTJS%R!D#F!v>BZGJDTk^<$CAeg!nilAZz6#SsR0BCFg+JS*(!xv_^z-|C# z9RBT7L2a|37ng2=#h_JTMngULdOVN`0WaJjjq$WjaQmKrJH*;7_7`s7#ox`2lUELx#QTI>Q1Ok`hT03B=5=lK8sgdHFO?6+fs_BG_=ulQ=c;1;0;JJ{Up z6VM0-ZD)s`TGH*pCeq9D1AOWN4_60|!3#E!J6_KNufKUY`v<7q&(qBWKH4Cy(*v}% z=2#Qxj&a5pcN{?X9Xo&q_&{qOz-|Ng$1%2=@%I*jwuvC$$c|_>Fo$pmfRY8o?I#() zC#viRH7K(GGr-SN32EX09jJnmLPMW8E4-^()4C8UtlgkwIx8??6ZK4^puIbI-+ zPcg=m!`&gShx%*>*!2e(m|XgA=5fou4 z@dLN7!HEcU4G!qU5yM?zFN0gs%#J#s1{SC}oqdw6yOf974-y6<0v#fTFC4)(?0U)i zA1!XcIWDbJgyV%ANC{*Mh>4XO!;8KWdy0fJDGstd6^$0I5Fi zdIUs)l=Omnp&(ULLA|{foi_jfzi0sw^&p}OM3jPv0uYf6BGN!aAc*h*5$+(u2}Ia} z2n!Hl3?lSwV8H-RURcT~(4vbB?rosC9@jsakc&S;Ilu=rfZN%S+t0zP`Cm9dR$>Rd zIDQQj(4fmcKH$}hxaR|6z<&l%#l#Wtq77~U=p?E@S@AC?wc!b`J2l zE&IWfcZl8WU}Y~hLQLy)y#nj_8!(50N>#{?gcppLL9PTX$J)~yx&bu7vnQb2_X=o& z?M={&Wbm2$r*>)HctMxcZPsK@~A|8WJa;R444 z|900N$b!vvFwHl5p__fPPZ%)!f==Or98ZNKF5pM2><1kP#1aU#H-R~n2Q<3W4Z8Mw z5@h9Y0RQ&ThM;cO3jr@2V77tQZ~tjMS(?^671W9W&CmV7v>3eT+!b`2&jemj`owLO zI@~IVdEKsO0$yAKFI*GpbUpKu33OT(xNv_VV+opOg(Qb10WWkff};Y|5b6$n64dSb zAmGJK=(dLKCjv7}cX(UAI02sE1T8%K13N2#qZe|J@{jCGkPAq@fY!F2w*Z~G4a&^{ zpw_DIlE4=+Fbgh#4F|{e4~ThSHK7}VURc1?8~`UVkV9TvfvS1I4fDo{G{{gEbf~De z7gSgTc87xYcS2TCce)^$?*dV@x%)f&6 zO#Ff7I$sXxN$fwePbTzE0pHdIs&qhW{oa_vcECx1cfi#wfsa3f&Q9+36#-53!jF*S z=!KkD3C`jdL208Gv_D{fC{`74yIjA3l)b3W1f^|I!GJB`K_^&44sZ+o0$L*U!omFi z{|TU(b8z6#2z+t>Jd*$KK>S|~o^Iv{;NK1%^aE`bU1kTeNTk#CO0Vyp!0ym1K`$0V zx)&fJNRWaiG;RdGkiHH!GXSh84!qSCl(BGy9pumn-!C&jfw$fal=ysmKt<4=pcfm? zfsKL`L6GQt;R6waMsgNE|8{Vt5cI+rA^}#s-xp?`E4~6!0NTn&C`XT3nCn1}6EXvB z4+14B(6Qp6%|Hg%!0rp^_Pr4Jq8Qvc#1|LfbA0wg<6?^`$g7|dX}fPj;ESVY!A5~n z9W05yNQ8(%y~@8G5(1zK8g`}zQtAPn)(5cwy5Z~v6Er|TY3UT`#46DJ8t_~RN*oaN zPzNc49JJr{59pYmo#6dUAg>03#%XT^y>NvV_~4SG13WtfidAqC1e)oC9jy&YXkIU_ zn}9qQ+5;N$0To~YFP@%(`VYLL31o86i$;hT+<%Z{1Q}6*9xIMgu)UZ7nZl~{Jm|EDOA)9wgbEz{R9Je@D()Q_b2ltILt~pdVN5rHc3O>h>rK6K&6Gk-xTXK(7 zr-Lm#05i-5bc7?sFz8`l`%Aw-4j%*C3OQ*Wl%5#{c7ShdJHY@dKET&>gJ(3c`Ou)Z z#}JY#O20r)bu4@#Y5f2H3lR{(4qt6M7;+N9$Wiee`Fsp=q}~xZDE55 zf{cS6Ahyd0)HzH9&Dbvg`v3pSy04IPxv}*~z{jzhn4gI-Ru5)u=nv46 z?obZI@ipKIwayS67oge$l)GEFAV($neu1pyW_S^62ny_Dpuk@64|W_4i@O`ci_Phf zu1(_+Q18L|%?qXsNQWkE0w)6l1CKjo-3q9Ga@HNPj~&E5>h8v{1iDsbue%$=3@Cf6 zyBk9fl)b{;jiCX`p6>3(04f4NdOO_Rz%zazc7wYc1E?4Pu`57oQgaK8;!_z)QgaIo z;~_^3gHEafUE>Slf)5!+5`Y{t43({d(v?uU0!o*qCdcQb=EbKXI!&S7Z(#Rf9&`N< zKK<`M==8t;{M&s0H~(bf?^On+CJFv+q5omUtN^%@-sUQjeIkMRVi2+vqy*mP$^(&l zp_>R^h?j*^KPV3}GBAJ^0{%xSKKQr!@?>93fR-KsFCHhrP4fK@ZFsl}fSdcdkGTJlTg}joH8#{YhXqy*vRL zbp?45wLVz3&G98>*z{k=Dz0iYL z017^EXm^JS^g94RzDO7p-(k=TP>;F( z14sBjP=x>E-{$+T`6oxM4F9&!fBf5A|AFS>N;$ej#5zP6Ux?^|h9fS6#%X*xx&k>m z0yto7&W-?17@MmjfD6Xv?g-$9v3WWIcwlVajsRX5o3A5)@5K(?|NmcX1`+E(#7Ypc z1VqdS5wmpv|DS*@ZL)x!`acMC1_vm$g4RU@z0m#(DtQE6Uyg%>gLMi@IDpS{<2dg6 z0~99EZ~&dd?7`9D`yUh_$6Wt19CQ7{@Inb>xh#l~01?8vpiw@7H2!T);GO!Q;`Kkc zc)d9jTD+FAS*+5E}F6zQ4kjd zym$z%7gz#b?3jTX0U2QX6+rfb&vo5~J)~fj88k5P*bi>@LY2L^bsAdTCBp2tK(qga z7TEuwqg~E|j$>? zfn4xf5xo1{^)INm`a<~-*x4Pfe_wcjWM9tx3+tKv11Do9n1X*V)WHe@|AJB(B)Ni) zeB$303Q2>Vpe1s~TL1rNK)ojdzQ+z!G=W<;NFL$=%YbgULy>tg^%U4O0WV}=Uidr> z)eDO?K?M$q7ZMJFHG#a)3X**p2b$j97W$|4QVE;Uf!8drnKm#sAK|cm^TIU&n(M*& zT?Bf5Bl_vLQw;uDjQrbN-v)I1{s{yf&H5+k#ggCPVkeD%+W~NJPninyjvP1^Lf`U(?(Cg= z0P2PJFAiydJjnE#>Gk|97SP)5_uxUvXt+i`u>J2|%mgbeKIZz4@daoea>6m!w@g@E z6$rM-^)1N$ES48d5UcpNfjaYl0)3Bp+77^zpZVj)w(%-t`^G)i2@@QlKkAj=Mq*wVVzz>ySFA0RFU{AofcxP-}=8w89?Z;x%w{q@k`o=K6;D#Z$Ha|6e>% z1C;}yk>Bo6guD6sj)Bg0LUnuUPgt}-+#U)umcL~ND7PI|gJstD;AmSq3FiEoEEdr1 z3H;k8g1i8dM5HDCec;pv8UuK78Lq<%>d+SsYM=@DFZ|oU{%yTfD%b4_isBB4Nf(2% zm|pa#fgHvG3L2qq*DqZi;Gpq+^MV=VIZ*N6?fNI+#nSI!WuU+deb)hY3P`o@n+~vs z?$9sYt{*y^uJAK3yf~@)|No04AY#Aj|Nj%3kAO}rpArMfu;Bcf5fKll zAKg6@Ks8I?izJw)m-|6>gI9vQ;Du{?0M+FBzuWgmcSvJG&RSW6eknt&I-AxoSBUNpfpod|q!O$0Rl1k!ZlnCoYT*PLCUpTR!;4BAiw zUOlbN%fOIf!^FSdtacf<){izOgpK8TnFBBp|f3Cf^M1B+>vF7Rmn3#lWZ=;8=? zu@GDbu>`#EK)4!I-hc{sSX3WiU| z%wT%%_QL}R)D;KmL5c2e-xGl^Dq!0Fp9I;-67XUfOj}9Nao0Bt3JeS{CM$ssG<^Y@ z6ME6E1lpM#`XsG0bWd8h>w~mT*BxoyzIW0(eUGGdhu%o*3_b87Na_Fo7rr3E14KA0 zfeNR`te`V$z)|7*qkBpt$iG40nS;-e=0L!UDwrb_VUFN$c>^xNP(t=h;EMw=E$%Qa z@A}~0g#{5TWI?GrusifZ(2Gu(HUXHn?Fen4L1IuSA&2aVfES@KJ$Ft(gQyv%2NFb} zLbE^-5=5ZjN>Ky_k?(`FPTxIg-Qb|wk=E^cBdyc*2sEe;ywF$t|Nn&+h)@L)3W}g0 zIsiJJ5maP=9h(DL?G*6h^KP)k;IdU5ye1fw9ru9qFgO;SU@A|-R9*;r@m3I)ad$ve zg626SU@GUsRGtWY@fm#jF38Ly5S5^T`*)Ca6#*|wVJZ&t^uC0ecozR-j; zn*v^Jfax}e>An#3q8qMz3;%Z4JD{0>BcSo-EkQ3H>;!ocvJU?Wgbm&UwcU3MNW~M# z#M6tN5Gin>DSHE~1*8l*iyXS*#SMAT*_JCnMuRnO33|Z_ZN!5*6%H@j!No2|z>7G@ zM$Jyw4Os&G+g(=#yx6lHY#_*R{{5j_g1TKd1iVN$1cf5#+Sx7qAjiCLI|fq4(&_pF z8UnCX21?J6{HqMJW7QLoT8@AhhPyxv@QmJzR`5z#P-ufpyaDpw0g(5$1iZMl1EdVx z=X-Gu!UlPde|zW_kctN&Z|w+tu^A!-8nJ#M4jJHx1gv-gg#@Gkl!V!{0J7RT;DtIk1|c!YOyGjJKt(&_pJB|Y#=fTRU+nECS{E2IKmsDfh;k`^k# zOHrXA;ClxYVX(At4i*n50$&`0ut8pfrG+P;(Ap9BVmU+#oEEqtGX)@Jh_rA_1|uze z1{Y+o5GaMTX98aMKz2<)LjaT(R&9ZX0CHLg1z!_~oEF{$yjZXYtg_Sf%}dbcLU2%k z=Vq3})~4!#qY4u7L2z$F3o%g9R0~td0#kV+@I?f8MJp(PjvRLdFJ*wPQF!rB8nhl- z8ajZzW5@q`(B>G|123+EBrZsU%42Z#b=(zFbDaf=pOF6lf5MAL(xBQJ)OdxoB@VU2 z>y9hT3=G|_Zvwh~Uj)85)d3gZ!_2?{ZZ3calCd@~I(-*_RbVtIn86JoaN`8LKXL1xpF#5)$N0CE{)fyS;M3jhx&Snd%K`EPGl=*n_5VNi_7-aUrPFl*SQ&VL{R?#H z@iSt$6I6tQEzSn55&F^#nks=f4K`H*avylAgrGUyp$j@iI$k78{r~?W4n#ys{r?Z~ z_X&pXP$b(yBMsmQ(rv!~)4D}G(mF$DfEA**-awOU5QVN#@1A7nF8uKG;ab? zPzo~1DXmkakf2Fv-M%x@I(eL4?2rVF2ZD%olK=lh!U43P2|0qHqq*Rg3r`cyScc6P zZ3~5Z8MLeqIjUh-!+^q*XJRMM2C#J)sRhX#Xrv2++{XtZI3;mJI&7dA)Y4AtW(iE| zbe)4WxSk;9W+(74HTX%9%-E{MFdSs>kgfh)+yrgB0}Q-{};g^ z!cPJ;qyuS7g`VjYX#|I#?~m@#6P+QA2`}tGiY$>8UFn203gHSbbWUjmwcTC_fzi}dGSIVbpEY4NG9}1T4(5uv~JfuX`QYQUYrBToD>H&tJ*-P zMQnrAPOeuvS-L=J9@O!1z0m2>mGELSNa;Fpkb9wu&UChPfod_h!V{g4PST5ZklH4& zg}z79I(_e?b%*Xr10A{_3zCTd%YYqu1M0{JFPuR#c3`LM|MdU=%L^Z2(?J4>ZVWG$ z_(GIn7biqPH3R>4kojvG;i0jOm4V^K8qxp%!6!C!yGjJS;A@7;mPqq&2Q4kx z4&Hho5b(mp1>8hbNu^V8$eraz!xTM_vH!9;(zga4Jc-y7s9$u0k4Dt zZSe01dhr3)L@fum$2bCB^nud{=!~Er-Jt^DV`{oZz>)T&+gE^pyNDyG%{3$7g)79= zv`*IOj+>q**|be0P39{Nb7c8kk;wC zr1|83&?W0H_6q<1|6&J-*end%MYTV42LFE7DWE_TVP;@}DEshY8b}fxHCX1n`S*u5 zfR^dL1`W+If@YFoVe>){>g4^PA`TLM-olWhsa#KhmQwo8d0_>z-4t#CwtZ_*3qXSd z{NO$k#614(EM5UGv>*Y{3Eu134cTD%Vk)@l1=_^~x|xH2JNSZ*pl-0509gAl;6)!; zFGv}vr~t(rOlcPXi-W76Aq!d@2tHar@P#Zy1E^&Qz5^9B!46G5LH9w*K|#I-beui^ zcHcFirt6xZ7aGV0LCT3MK`$0Tx?rI6z`xyh4oK~Zpcg!FQ|7$<0^0K73XbR{An5}^ zFXn>N8MvK{r0M!Su+=Z*g}`YORG^rqb%XAe_kEMr9r`1!6Ld$r>xr~Z*8^$YzH`z# zeV4pAB>4aTi@hLX2Z-1#2)f_{bouj-ZdU>R?K}a2FZQnlnG0G-2TI0ioh*SbdO*rv z{sbK|wowpLNQQn0dNH*YmhtUCi#uIEz>|PB%naWTuq@;O(#Xia-E~I53m%9xDC4}G z3mPP-0K3w~>)(ro0-${3It66Pizx!2N)vR*4?k#u z6zFia7Y@HnKu6Ke;NR~%#rj~0c*YZc&`lDLXES6JJf6+)qCo?EV9{$y@VNw_qfbKx z(z-zgvT(g{1{wGwR{&ZtgI8U?kgI_OV>thQSCQryjL7>ez?*}AfYyhCssif^b@Jfk zw?7mVW8I|!Y27}4|I$Er^*-YVjhmkY)g8tMU;%UyB=~Xzc<3mLIg9Z{0o2pmF9f}~ zvK$hi+Ybc5PKN^T^5zi;d?CRKD!V}obFZXzhw`L#hOT+h!vFt2%v;R90)bf!84M1f ziHXoPpd#@~zzZkv)+JDWSOHoV2kJWI!z{TF1k>9cD!{*;g)892V~8Bwa&W8)zK{Vq z8oB~L(~aRpk1M2I0J#N$&keK!9#q|1zj<-d71BtU0J;OgCew}K3ABwcJ=2Zh3Y0xL z6LKE{Xq`uIrW?Z+sCZi@9INa`KbGEsXe7hLp_W5+m^8BOn%d5eIm@ zTmU-1^`X=COQ-9PPS-zKOyJ_-1#dMhLgnB-1D$`%BLLdx{lbp#|NjXu`5-I6c)CF{ zJ^_EyI(>ia0v*&3%C|41`2PQYAqrB+zu%Ro`2}-Yrz?DsJUB^!7s58b zLKAM~7myH0p%`4~&+8>1LEkTdF9P9$U--AXerY};VEyLBA7@CUg4%W<3|c<{T{Zx2 zB)~)BAZX`2I3)P@y9!uesI3DnVgm)leipCR1NEk$62un~GQ|+vz@sGY;IzjATBz3T z%L6XwmhgabkSXY3Be1Y52c$@}foZ!C^kTsha9Bd@0crDkkqgrHG7Gc~8oUa`7R~vP z`=}+L>E%VIE6S88;#zTV>gn};16fnS4mOVm>|t;PjJh!ZlrF3<)XMX32W7+*Z~?L1 zB^1a95Fl7x|08{sg5th)EX$pzCFLAo&h_fy5W+1rlFC z%dbIQfaaHs)(2~Kvly~Kar*^yxYUJ!7f#DT@yY`-jDI_*4nDXLY&s}dUhjA*0NV2E zDg(K`o#Vw7PEa_xet;x`nmjj#7mf~~L=X>21xFk}sldeg&5JGvNGeF104gI}@*sD? zfy%|Dd2S3BplM=Go*M(`PPlkb!azNHsVFrKTr`5RD5C8X#(zmFE9t(vIaW<)X&Re0HqAjVXmPIz;Op^nDl~{ za$kikXLy+e-f#>$@ynn9wExQvDar)xK~bgyy8p)x5@r1I44^o(04asWQ)Gb~!wo1q zpn!0kf%7-o`Ydpc#9q*fSYN0OfCbSXSP+$$Kx3}N2wWyXOVD1P3xO|A{{YWagDN2K z$(i8O47))c?Z8jqfO$OwvV?>Q>M3wCf)k+fAGUrjt=m-qxiSQ2Y*-b*)BJ)FTqy2` zY$5|4{Zh&SY9cX#n@ES*Kn46U=qk0TwvZ5nq*n!K`HcOtQMAJD1vu+Ic~Qjn|No0z zHc&PT6$k>|CD!fB11Z11?}8+U{jMUd2TH`i$p)OpL8@M8LP~dV0Rl=7ptSEg51Jkh z1iY|>u}=i{hJFB>{NgJ(6d|R?gV#K1-JuVlrN#sP{jLxA_xlPozXUbrMYK;@AFPdl zlpU@QK%LAFfiKt=L(2}(*)Ogy0$#Mv1=|O@_bZDLRLuB30Cj6V1iiSu2&xp+3-Wyu z_#z6f^vUb??ogSuZr2xSolM=n3Xpj{!50~<|Np;8W`$oY`=ZE=;l*WZP|}4IHsLm) zl&fI<=7p>cB-|%}>YNWnkbA2@WzC-=q_hf;een5f&2MVLduv;Ef(`-!M-=kSlWEWGDkfKCPp2et0DyYd9QIIski z3_#=d3%~~6cwq;&0>@f%{%xTG)~9MspxFzw@*>}0;b^f1FAwVym-kBO0%vPKtl&N0$=>fhXq6k z|NhV$t(WS2K&_x|SDAnp>)wI0C@8z~Zx3AnzI{soS_AO}fvf-z9Bl`eUJ~H2z7h07 z1IcCX{QF&Rv>vFl=ilzTAP}^OQvkGPh95LK(;dnI>N|W0==N0z><*O)da)0@EJp@p z5NI~!{w%l`UvjWBFuc%XhBP94RRUiug1cJ<)cOY9)z%Le5(JlFH(s1&0yVhLz^;FR zMd>!C|NmcX1j&KbVQXV;12ro7dy%VzAKjq}-JqsIJKUbcUf-TT=$^n9P=Km{swEy! z4fLbiR|3>1fDDjufS51(zyT!#>!DrXas2nU17+-%~!zsV67Htt9!SrLZi(D zP+O`->P0^zG|Ub z?+%p!)%_4A2Z;H?3)~El0jHqe&=sJd{s3CT4Qd4DnSj$P$dQoB9#71I7Q8{T8fdf% z60>VzE-NX+5wpFnD?ly--J}Y3&TdGO<=^f*1LXD#K`%6CAVsNb4=7a}349?87d-+V zAx1Z6voYA|pu^8Vqam>9{*w)hZa#2y?|AX+|G)neUduoaKk(g=)(sx?zwqMW|9}5q z+yTk*Z--1IUkH4$2d-ZY9HCp%x?L}T5(IQ$e$R_lAZ<%Q!~(Eha2degw-tC=b*6;g>Ie+fiHw|U?EWl4M14C9F|1jaZm`soT)|}oPavq@@In#l4p$ja z64?VvJu0B%_6$b*qOCI)zegI7vfZAWt zhTwPuIji{)=zKYFxTEe%gVa3yy(bajj;MWRWkJK8zhw!yU*yUY0P-_5?}63_g3C50 zm}gy8pp71IX66BRpkA1K1G$+8T9bf}^Hl+Fu=V8$eBnM78t4~-URcA}Ag??Ke6jlj zNTUG%_E2cC@In%%0u(La{110So&ngiFQq{-bPeQMaP7n22Re)z6vg1(qcTA+u097V z1POtf-(^$44glo~aFGB%FU(b;8#E#|EfXFFpo>D`>2D{f>5_esfjLwn2y*7c2?l1+ zRLa*4_+noDE67hgpiIQS-4`w9tsrgz)v_=2U~Fj2uX_*D2wJLh1Jbbzsc~a?kzoXC zYC$`8uZ=)$ts3h$FE$!M+gj`l3=AOP)HQ^tfGR-rA(P^ZGt=`j zk-CoHR$plMo7lr(7K9*z51J_B;NS1dV|}omD-CqaWoPK0*BoixuArH^KcJzi?x!$A zL%ZK}yK=yI(Dr2vX#MMwo#KcND{Q?)Ex1?B(aq86`=mScNjFoc>zfy#4dmUvPr3tH zfn8 z(F@R-ATJm|$0+^=9T)ZubO4&~6aMXiG7u|58$s!b17uLAW5$bXAo%ttFS!d1QR+D_~IF4)eLBHA84U42mf}bjDQyk2o*@8 zTnNz@>)`tS@NW-20&>HjfEO02a5o4tLc%k!pfmJ9w=2hShXT+FOwbVA!G}zNFKUZa z8Jdrw~rGpd+~< z$8>Xadlqz;9_SXC2AZ+o4>|_?z;PDP>AeiE4}v>i=oh~Iu|8NEm?iPzT_MytD?p}! zqQRq}+jT`J%f#l|6>wKofVWJsysTwmV8~(vo!k#Phn=I_si2#uBk+Z!Hn?nhJ-s{h zK+ub9h>^!#K~wPzFG07;@o#rM0;)3p1irYN3=gV%pc|n>L8f%N9su2|?FbF3&_4$s zF$KK{f*924x&-7d-zA+M1x|;L|%gYzc&`YPlLFI~m_2(b!Q=p&%-*kEc z6y`zTpkiqQtti+J^2dSWET9`(ph1OUz!B?HwaSoiJ^=3BbQOTZ3@QW*=c8cH=RxG4 zp3nLZa(M^nj+y3zCZMi%^Pw`(2vGBZ640Tq%?Hy0K|2qi$?qY!u?=2G*d6*N=*7Yy z&}cPiCcPVMMyKx`Sh7qDco7T>$r3(r(+a$1)l2L(5BM(KZr>+qosMEJVt<3qe+3c6 zAR-S$Wc~(ilmJ<4X?;pm1IRs7qT0$%({geK@xW&Z8HXF!qM-2^JL__u=s>n=>1zXfzk z6et0LWkCfrx;FekajajrRx@`v0M1}`)&ap{}jx>KXgy_AsPPtzB@86 zg3br)_T9h?Ia6Z`sF~~I1nN~2P!jWk_2>WpFBpD;`ff8`X8!;G|D`#o<_Ue!%>-Ik z-Yt;U8L0E({*V9vL9xuizuzOR+x5-N?>{d-0G$BMzuybW2Oa0~0aT8D0j0$spzsTN z(eA;=(0oJ&7IUoKt}k9Qce}obk83^>WBukuyB4ISa0Xf*a)gDW@7M&Nm=`G5dZ|R2 zf4i$d0BEzSApdqJIS>n6e}D!!U&z*i>M4P4UmmC!Pd7)mV9*Ow8&KZk0ME8Kro9jY zd4#z;l!t%2Q(C}_PD zbLU0S02pYhr<;YTo2R4G_s1?!de1(@3{nb;eikOM$i+we`%C|H*K%}=h<8Jl^MMs! zWCopX0IIk}1iO8IfX;qz{{H{}i#iZd33A8F>i_@$gTf26+bvuZIlK^!2}t-6;*;85 z*|FjpX#atx3PX7B-U!YA|97r3WnjP<2{S&>*?Q&5|Not>H?I8upRoc|do%R*zPSiG zI?^-<)GFkGiB7dS4?2QW9wK_Yb&4kRBt>0N69jbj<_l#IOYZ;w{|gx;<}oxMU|bBM zkGGbgPPEX0$%K23#$1zUT?`_0UhRjBm{Kc=`LlEAb9ArcZViqA<)zfAO`5* z?G>8;|Gy{)wV8@QL@uO318Vm;Nu_nR?g2?hfX{L41+fFO7<;GA(FA!u31Tj!L6(-* z*;@lrs{`6v&J0R2O`sLC0WYHCplP#26Gykb)ZU;t)tZxNP|VE?Yi8llKSEUDfY{lfBSV5-Oj81f(d!)q&ExN7;s71i1X{7d(H+uQ z(HZ&!oQJYOi&KAeyKo6~f=+M&E#}%EDsu1jK*Km9 z2OltX`+n)32)6A)(2M!z-~(5|MuHBt)C47EDVRp^Shh$2TnEUA51?`hG-m3u668<; z&<4BiUXYDxonW`V@c#4vKWMWN5CBYP^G!+R1 z?W=1#V8FnDWb2DeC$Lrg+gm~QfKDt1=?i?J2r&n=6SA}E6sS3R{x@{|7_@`1(~;%H zzTcocbSbS9oL@jUU4U~8Bqe~E&@9vZQ=m3K%Ldeo&pgDy&%n^z!+K`|Xt6Fo14B0C z@^P>knTJ5DrkFwN<-sAq0n+6AA@d?wQ;X=8kpKU8g4p0J2Q@wOB3RR*fET?GO)rc8 zgH~;UoypjI>OUwLI|FRGeZL%cbomdinK(c-)0edF0KT-&zz9%K`hH344vb3c3}|Nk$JgNQ>QVlRl;0U|boh;^Wb1LzzvaCkuixx^fF zT*Y=*XiS4bKj=kiI~Qn@JBuNU17ukTNKxR6{e2)&9&k|)I+eDC_lwQ{|1Tnb{r?Zn zuMlsDym0^Z|9_TuhGtAZ6KJzwAWP5-mQ8w~wLJkZy1~f{yyEJ``WCPtI2am>%orG6 z@ctq)!XR!q1lq9Q?ZPC$zkfoL83Tj$soI(>CeZL?=807d;H(TPpLc-R;H(TSGP6$z z@^2UM3VLyOGROrG*C;|<0~#2}5`?4#kiOm?R*)IHKy2ickbOw7m&Y;i#Vz4oxyIR5{?3&aL%4t(Jy2Ufq6p8>R&ptr#B|Nj?aKf&`GA9`Ct zK~)TFX$$iq(A5y&8Xi>Wae(@vSqxdsSqxAp4=%W7a_L}H`?l)k7hgT0PD9%7@UOyas#M;{;+H>~*|D6g93=H5D8-OS9f5TwIG-${z`y>PS%DJte5y8FS zwp9stH(2w_N8Ahy;8p|weh-b-lO@{FJgz%)pox&qXv z?w$x*Kp6C5$_h|VPN26H)ba}G?FF@=K%I-mLkk!f7=n6RLFR)rfc5il2e-UH{BFT+ zCJ^0xumYsMy9s1oz>6dEK<25Wb+&@qbo~2!LFTreEKvh5I|naC^hg6~Xg*W{a!z*# zNMGQKIcq@r1hPP9K6gW#Xgfk+O*BpLbmWT(AT=zYuxr`@D#f}xKo%x>TLyi5mcLlTn2Ip)TEgv(Gitov~I6R0KyHQ_;hgx5l8-Qd0fq$>_)^6v+? zXh3OUzekDn#ac~-NVm^~3Q%p+4K^^~g=#A}dv$`juQ$II2KD6xyO|&YFVaAkb@zfS z@9dobYUhW10uS0W?*b32m8gQkwFAWNp14F6wBD@g06!?>v?hR5i-Gh*FT(;0u!01- zLpfmjWzqCE9y-L&z|c802Glj;I^GJRK?9eFrZz{n3s(g^+Fb+$__uqM1$KjVfcoz; zpy&bF1&ZEoCjRXnD&S%Ubj1`XTmvYI>Rxa_1-z);iYKlU*%=tJ*dZb5BoOc-AP^eC zC5Di&4D6l?3e2DvW{{={+&jJ;-BScRKtte84liDQ03G`Y$xhv%@g-2=gD1KdUY|fi z29RMka3=&KWI!DfcmW{=YJ)o|1b~kF^p!Mw>-7Z}fovuIN9tT~VBOuV}`vs(>^-`TmH@I)z?V->;71YV@ zc2eNqFOYqRjoA@&j7WE&LZ=f8s3*1GqoDO{6yWWF3P(Q$_-StPe z2S?zG@BUEFl`3?He&OHm6b5Q4^Y0Ig33_oGCdc2h95f;f?xjVTfsa-A!oS@qA|T7C z+ZWUy12t%aUcBxF=bQkLBfvv!zczr{e*&P}l|WrLaBCc-A8f^T@SMjN{_P$Sfmuc% z%eOay%n5k07-|lvlI#VIQh+*3jfb|_FfatYc=nzfJOBj_X7nQE7YhT!i!1N`|IbL^ z1noQh((U0A_~Nl2%#WPip|kkolk* zuhY@#Mfy8XCFluq-hQWo)&nJi#wWquFfXSU-e5Uh6r&7~j5@s;#V8q&a!_QVH7@wK zvw#M{z68GbWdK?*#qmPu-T(hDc;A5<%CM@%lz%_CdIQaSt1v-kGQjmI|MsRe3=9mQ zPUVNd7dL#MUgdB32ij8uI^Ow1Z_89fE8!vo*uEEX72wDMbpbL!O?i;RG7o{8gT0sy zc}6i%M1qboNRp=zdrJONgN(u4(z^iJ^wHC(~EGEaaS ztG!crK@C?_5m0j#ECOw$LQM_@HBG_h9DK;yJB1h2AO$N!G(%x3L5)wa%Iu3Sy)B}k zCMTGS($GW|0d=XsBE3_3LCr_7$-O!2^Emq^Z*0s+Oo86N4vC6Cp%De1<7Ok!FdeC4{3xdJ;Bf& z!X*H59Z1-v5n2JCWaxI`5a{-D>GbdbwU@wcRQ~;7cY^pXT~LJ=8M;9=HMH#a>4G}! z5<|C-pg>ypgbD*tn_(h|dhzJx|Nk%Ef`}V0L5t8px5+@pQeQyEQX%O8GLNq?$Bp5| z0wJV%d}U$KRu|CFul1W3&x9ZY&S?|W7#J8d=D0C{(pUpO1H+v8ZVaFl*dWco&^zCa z0hB&LbN21?-55YkK@hucz8eE54TExh*?cz!P$vl_o;Tl(0hG=`L&cf%-55aKEf70- zz8eE5j|ea_FhtLHV*q6zkov&+ZVaH_9cT%J+k7_$P>ut!t>?QjfHEUUjSk2?XCU_t zE6jIe0A*eV8wLg;klRB3{|B*IKyC|xsQEF^jRDlBbr5D?cstLH0o3CKb&MX*b7KG% z9UwQ~oae>>>KcPOm1pOC#)=D9I|3N(;-)jT%_&_Dxd_&;l&8w04&V-R3qh@0oe02)64sR@|p#sC_g z0JT?K=D9I|1};Euvz+I~02<2(U}9h}oae@HMDzcDkhtPJHwI8=0mPP==f(i)K!D8Q zp6A8@YI=g~`aRc;0W|UfVt<(H#!wiaRurF6vA0h5s>YL@kOcenYkdhGGyi^rX%bvN=?i`@DfW(5|gtbK>>16Mt&K{!Jr_@ zDK3c51qD+D1BjWIS`IQewV*fvy}0NCEjmjTLB%9^^bNug40>_J6)MT!atu`Zg0`A@q@{KGet6;e6mq&CyeIJ@ z9A;7pA9!E^v@)gBEA6!a#JEt7v~EY9v`(kA7rY=>`*Ngp2bQIEhQ4_5_X*frY26+r z;QhsKLHtk-_@s(g$%|W0Kyx-Ak zmCvA&gBPctfdWLQ)AdJl?GNy*^N*L`L3Tp`n;Of$d#40y5U47h~^niK^M zP;>C__e|?%07-#2&G2sr?c4xe-2qyB{31^qIx&i5_$&qnh8M0NXEK4hp4-7O7Wl&0 z85*D^x}X&>p}W>b>MLam{VE1U4OjxfAQ-vXi+R^fB_b9FPvaT>48=* zyM76HaTP8k4e^u{2Pm!^4}v@RFOJoNOy=lz{Q;>id=|MeyeQ;BsxH3pfF}41tlzxY z#RID=KvPs9iy(U;LFH(|A~%NAoYdUZyb?$e1G;-1v2_QOoI(2`2+d!j%OlNa))2G) z3Q0Xt>$L*AT{)~>d1^qtyH4Lfui3goc{)S?bi4jREb9Wh9Ylcki}3FUB?(_1?t`G+ zA{gtxV6EU?#?Xubx_OD^KXl;m;6sL8X=+(EE&Dm87wNgLlq#qf_dTE48RtF-3UIl2dY2@u7Dpp9qaq&g*(Vx(7r5$c`{)0z}mrQ zG0K3wn8o;FcQeT40-dfeVD7@QAh!9ZL#-~zK*-{K8Sq#yGP@hJiKYN<)a!lVqmuY* zKxTuM)_nk%Hegj+WgtP0fEN>OtwC$mK)W8nHyUNhz3|Hd%YjB5`1gl$v|g$MjohmA z`Y>}6yZ8v63U+0J6oIFBLECZzUR2t`qS64o=NlZT$Z^sE zSAY~Jn?X~X2(#0`eRCdx7qfpOG6~GijKW$5h8Ka5G}Y<)#pSQJ^wm4QRqJ1Jp_e4{X19V*?9JGq9cDqn^;sV#jV)0?4c^Bd8mg zyL}b-w~H_az2JbG8Sx_K*Z=<+X=V%zP}4#Cv>>V;S;K5L$lx-ED#$(o_wtK_a0N)w z_y)WtNk5Ab!&awsaJWJ}3~~*)5Zn#Y04j4KHPxFHZVWGuvw~}?<|ClZi&AXJ_0yLX zko}6F_AtXrHwOQ*)S|SU{Bl^e1TGIT_uGSg2Ocei947#F1vpJY_%FVsfnAr@>H1|S zsO|%|eB^(Es$xirN=Ep02V|<#^}~yQKR_dHKR_hd#57QS1KMr(2imj!16n5p8Y;0q zSZfQ}<|x3w-6!B5XawL7{J4rTxa~jqw}*ZKWy~J|FF@8w3-6B_PrG}iI&1# zYYmQQa3+BU4!EdLgQUGq*B{`uAsPMP!L=WOFKoeK#M9~eEJp^1YG!M7#A}z zym$?X8nD(-fgtda>fqz|nc!NxL1B;#wgME|e=I7G85@5f*xMB_sx)ObG#fk7dRKa7o0=^gG-=GU3K(#VxvmgIw$b-KREk_2tm4t#MK+-Bhj0IL@R7xEmS^C&@;BUsC#evla;v2M`K zeTP#)Tu}V}cmdjvkpa4N032$dx)2&@>ykij4{Ux~x9^X%P96cUjo?*Q5Gx^7;kQ1py`UAy>e$iB#=LpjLYj=R>N! z3b^f{T@|e-OFdsa{S2Bedx3O}3kTT084TAKGrVwzXb5;Q4_sDp1iVN^vJPAuf~*sK zoel0f$ppQ4nh5qFs6h$d$oJxkDJ)>!UsNDl2G08&kb)6x*)8Zq!wW;0Wk0~F6XG|7 zWylpJXtJI$=*4{#m?hyaj6Y*klu%VW;i~k}DoRKoy_f-4!1vK+aJ~fg6QfBfbOgWCIna zUtX`kRwF`NM&KIJ5RzsBUc3M|V|k#7=R@F&<#1zuKtrAZbO;joBrFle7aAYIr84Mv znYn)t_h zgJwKm^FyauTz|Y+1`+_9finnySmSL`sKD*}0`6LXi{TgRz?%4c3zxUMvQg2d=2W8-ILH zKr8AKpq)(3znJ)Yt3h*<3@^OE6$?wJ>m0D^BcR30zDJ;{kMQpgJ<|M(wKjzxv`Hz8 zF^iRdJLru4l2~wl33#CmPRQV~g%{^zz=EKR{Ni&In4Q+?3fr>*KJE{?e*?_!_MH>> zB03+Wj;GUg&g=H(+BpoRyjhGdwt=exkef10z#}Ykf?jL_FXZItbnR%a?O@<+})*@`4AX<7EzLRXX_Yy80JZ zkTyxD>lV-$6Hi(vEV6Wy*Yy*v|O#U%fB z9!ALEP4*!M{_Q@jUjkoPR)Ino+~|3s8x3ZIwh)5O(*kXUYv~nf1lJq~A29H5=V5|q zKlq4&f4ht5mw*?)D#2R7ZOC`b3N75a7BCS*K#cR;+E7v)lu3KJ$a!7`67I+|xf4?9W zpT77Dj(bp|$l?OWdkwf52omUZT@wI~K2J4Je1Zzq1>i$3vgBT{{Q%9If>eRhMDq)| zv`*JGFA9ExtJXEm2l)fRhS`H#JshyrAe}Cv6JA9B{{J81D9{DZ9NnQUy)0ee;_l!> z2LA0L96>KKkR9dP5%A(U#GFpoj$Yq25Tm!KB00)+K|q$=i^A^+NBOR4ekqsM>AQx1 zf9RU#L;OMAAamA(8%7ZK9DK;o>B2kV#c9wW0(hGM*0jRJ-}{9Dx&siLwOx-uR-?Nf z;ot9jr1>W+fA2Z)#_G@$-7Zrn1iX-fUnqfVHI9H6D6DWwcyB-KYl%PftAb)TKym$#_KuXYFNWg(h z(2b#B1<(@oNcKf8=FkTI{jLZ2xAQoG`c!*BCyCt%co6{}UIK;d4*u=FJ3xWDBdFVT zPQZ(KwICxv+3_Xlcnommaw71BxfV3%@wb2~F#heK2ZA6D16|HM6XJ$|7XdJbod|sK zB@AQ|q!5unc9`pt>=Rtf;A30)_lF+f-wwH*d=KdOp&LOj_CUreK{u-KZ+G1R8tvQ> z*d012=mitPZF@nxd|W{XQ_Kl`@kL$tKJIp7SOeWp|8}<vc7WE`rFHh+0og6}71V?5 zo(j^)zrE=XXr0)Lt!l7DZU~-942%J-*5%*s5f=F3BwS9^_)>Q(NMBm#1dzTL=RixH zyM0B{x&_lZr-B0L#qKZv|G&8Q1=Q>W7o8vz!r>-FLG9fSwzv5QV~N{N(D4yzoxKl0 zj;s9ws`93S*cTrKfz~pCtYZZ&oDF!9@CGzh%L8h_fJDgt?tML#hIS0Myd<}L6BqaFvcYw|K$;jXG4m7iS8$7tc0a`Q(@}3lU7MXv0U|7(L z0GI>#TMmQTOI%qD5JQ>|umrp?f*6|x5(PW2`JhDL3mGI)uq&Dm=>)xCLlOl?Nb>=Q zfEOQLfgOfyLP+3?TS%f%6EcEc96=I=notw)VjV;jDTEn7A^iLkC~rXmEv>T=9O{=r zJ^UAM!NU=dh3a7eFY;7i0gvqO2$(2;%Ooby+UHhKN=fT%1?AZnT_7VEUIath?Vx7= z$+S*i@T3{)={>d}x6~T+_JXnksJ{6DE?arP<9Tp4xGbLruB!z=jrg6QN(O9Gz>D+# z;7S8(b6R&V#2vk$eEfn5JdiOJ#D>HQ|Nah;joKH3vbZ40w)v1l&N+qqk6=XPQ;VY<=nDh~pM_xoj z+VGvOGr$YoaQfQ_$>03jTS7q=fmY-F;NL#Q7sLtb2AzLB2i$uS=yaX&dOOJHy`aJ` z@WoX>n9o7{v~F--P3r{v_65gBP;v)54id-w`zM0@rhO;?;kk@}7Xpy{mxbhWXhO{h z?41gA15ZFk3CQO$AfNkz&&yJQn3~oNwl1v`Z1{^wA3(=pgKbUgYz39bFX}&lgTw>e zZDZ+lokDq#ObK|=32s0Nbh=J?y`6u5FUY2g57Roqj2AqhkrPCCfQt4PKi-4G1H``g zAg!|%#CY)-G+KbmJxP>71Qvom&-octyko3Wl*4ZioQnr68 z$j>{#ebYmrjRGLefiM1h!%`85&%b>tNO2IPG0hB)G|-M*kRbndut5PYVjxZP&Q?&x z*4qox7uY=�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 z475h%0Dp@jSPar;2Z;r}Uox}u^GlY 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

tTOAd;h)={4I6pDFST6O1o) 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

(A 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%0AstsC6c5O`M@- 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%0A1RA`R`UPm6BL8+!|M33| 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

%zj^Ua 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%0DW6W9O$e_`|%($0sJE-xnM!aa-8MFJH^pnEMr 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�$B>0Mgb+f7b{%B1wHesF(uvxP1b%SYPNk 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
)`2z>d-^eAqQSl2G#Mpdl%?NfV9rg6E9l7 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%0AT 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 z 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


TU(G__urbLG<*tf*sr2`v9b_cPhw3LEWw?;F~O8 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�!u-JUuS}y9JbS2JlhPKftSV1wq$K`3it0 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

-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 $TY|b>cLcn+1|GTt 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%0A_AIs1r@NMdQ+kC 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­vAdAm;|Wc&`Aq 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%0D*ba#$uwx+$29b0^lO||A6iU*BW;xKc4 z>SPcXl3lt{2GXFOWyL7ajzDxmJaQ7WE)yvVv6mBq5XXV$zrmUjFDGOn3WEY(2!l0amJ`)raf0Q< zl}NCS80CZwOgkdM;4LS3AZY~}Z=m)QQoP|UCxTFPf|@rdI`L$82^5{6_7|}_;~>!l zb}gh8hNKf(Q1Er5WoBra1zlVQ%D9MvLSOBk~KX*-#IFt_}w|6z+i+vmrVmfpHSl z!bOTg>;=V(FtFo5>;HQ})*=cDE{uZ024XyNoTApGsO8y<9+-MW*yC+b+yT1)r63|) zP%MXN3JQ233-JnaIAbp;zJ$X3{Hh1)XVf9;7eNq12{kBI!wf1q?9D~Yo&Vx&T-1)xRqAcNo*ypRLOCFo#Okq~hF zB6k3=W*|_D9My~{h-09^2|9O-0W>Q)g%`AYFpIGpwK1;K1#&tf$6z+WyCCMF<`~fA z7Gg3CrF|F$NjOmZK^Yjye!K}`0mS!EouD=Xl1^xtfl62u|3XVVP%{rCj);^Xu+MNt z3O9Pu0JVUvyN4BI5F%1KAqE8nyr>T%CQ=|hQ;->me$3HMP%y)~NuX*J$!i#qGQ9(& z8Wt&_rH+vP6vA^~A?Be(3clw4QAi|$gBH@N<& z^g!|%Mw~FWBgYB2%MLOQ;k6`)aYRRn5hPhbtp~MokgUfWB^8j!2kQj)qmVR0V+7PN z067mHVBi>m^iEL3Uuc8?i0SSO_Ai5V%NmM198P$LDjyc<0nrh$Ei87W}nvoC_0pCE(aX&D;ppgu529B#pj zvk-%V0$v>U#f%ipAs)zR8^{c}*)KRDWY%K}L!e9RnmsiHK*{ZKvN>Jzkn1=1mh>p@*|_`C`1 zXRsb<>54^qbMA74cqzCsvyCjMp z5fnY(Rty$Uu1ypT;yn=I}9TNT|4z!m;>lgn9 z8;g=)@b-&OLjnpMZ;-kHDcUl% z+~EOp2O_P4-2rLEqNoLnV;g91fti6A4uOoH;mhs*5KTb=FI-)~$r3sJcHG@3u;W1cf2u&%BFYKOf%ZRO6)16vnn6&V`N9X{9OSuB zyye6kO!Ens6X_65K>;uBI)S}{9M0Is&$d7m1_iuWRSESoS~(#EF_cg_kqt8lH5gu8 z1{+I!Ik6ZLP|$b-jSwJZJ-p?_OB9`?479ID(FtmRq1cJ1g!u{y9I$I4%`haL(1HTg z-2r7T^bCqQ(7wC^6a^@W3T!f@rvowrwMmkF2s8`?5{H}p;xWt&w1NWCg$1dF7YIcZuTDX1C{D(Qv9t|@Cy`aE1(5?p26cq46#sMP%h4|ZHoz>Cr{khO?{0%M5t#bvMxlsHArA!r4KGQ>GV z7Zk;q<`XU`>>!$g0$yyf1AB#VLD3CS7!>fLu@vfOw1VO#SRADxi*4rK31$##FuYg= z(~d|mcpDT|kbr{58>p9ol=biy6bDdrg8Bd`I`L%pHWZyaB+U7rfrL2JwV=KVlAX}Z z1xlNsAqP3m z&PV~(eV|wb)qS8?gmm>GXC{Hf;aTxTH^d-N`DaN?q+l6nKT!Y*W!R{$G^)=q;$&7n zNHr{@U>Rut2{Df7C^-pp<0hOO88N93Zm+SMhU28fD&Thd;;m7poqUX2=*9e zlz=rrnkgU+@Qej^Fr<%yBL3nB#30c9$L5$(LflBZ3B(Mr9oZ*^P`!o`Cv17hae{56 zJq2PON~GW$X*Yo+E2#Z4sP^NHlqyK{Lv@Oy>V!rLsObp`Gk7wFhA}6`jDrr?XPA)! zF`k5x_GE}bK>;r!%`hVcvqpgow}Bi9&x0@K=YoP6mQf^7y@nAfg*hPAu#AFjr2Ra^ zJd{YmS9r~bL?XoRCxub%#~Ue6A-;#|lttAEA2kO}R)c1tLD2#li4S_QHXG~*WEVou zj?F&74_ZV9+6273w&{L7;HLm zaUl-#1=Pp5d;uLuLJ8eyn7fdD0WB6JKuf>C8?mRbg5o0Rg)U4rk}pse+@dX)_zPA~ zTwDaA`52ckz*QV-f|`~A4P0bTKogW8MuN(KsYdbyzC>aH^8_@J;8WWJQ%f)^KwUtP zFF?f^C~yN`Tu8^_3ushGVnoFvm}(?n;ERePu&;@WieoUfP#@!p3P{a{>I*KIyO84o z>I)$ZU))K9`k6>ytO1)&T()3<`GR0vfZE)szHouL3yUwLFnl2fQ%$5Vo`Ka97Z+A& zKE@RnkO~dt3q+w)mkJGCWM4q@g)m0G2!N?Z@&&%Mt^o4|G?m~}TLM!{FfKq%ZICYz z`C>;37GFS9lr%^u;-_>BPl_63iC__@W4=nn+(b zfqhL}Tug(hh58tGz5s8@Kxu&7O2F+4F$`a={0k+|K~=8c6THWjQrbOB?4ZoTKg1qePCK=>ywB7|M&LZdHDZ-ApiDIiJ%wfSwXi4 za`10=6$#+q?kf@aqPGDo0=mC=9|Pq6;;Anl{{R14D6P8{#7JvCz?jwvX7cav1&Q$Q z4+UR9-3h*B7cA2awxnC6F^GRZM8KB=#Cvh?2G}i7ot-VcKR*2b|3c#b|NkIUpo+CG z!1PZ<*Ppiyq@N|=#Z+{IK0N&Y|Hb)#|Nl>T8T9}E|CcI^q`CeJ*!8XwP^W1h?4Ak= zsBV^~0RHV@e?r5odlkqD95X;GRFFJ~%g1l7gOvxoXub_%@IcLnd0qA&$m`%B?rsHJ z$TJ}jDJ+;Tfb9VV1a`MU;sA7L97|Wg3%{)(OIQM4l)|j#LAMqhP|N;;0_r*Fpk_vJ zQs`|3i3jw8BP8$zTlUNU%|`@4*9wE(hBx}Bg3=Y}3i74kFa$?9)SDL{c8BtGx3q$y zxs#>qh2CF~cYP)J_k)eqJ_U{Piw{8RdV0Tn`2WAtr-|hSD_9{|5kiTtK=+iXAa{0( zG`@KJ2V@j-piF6f^AL2}l;;+3ARswGpwp#`<;BK7AWs{Ed)S~GUqjOS8D8YLBb5X1 z-9hC5D0^AId9leIRt_*TFfhcV_cMTe!NAYJ(3#%P0CEP1-Im_Z0E#yj1_p+P^nQkd zkn+qFhRj@sqEuM^ZGNK=wgZ%XLDvJgKIwFQ(dqgIbo#36mrmCopc_M71v*{-@bC8( z=?)d>W$Eg4{gK58xljDN< z(;YJLPtc1~n?O!x0U6D|KlBarsqWApptv{s4GMmLP+kX>H;@Z1{{+2|0vAF&#s|_m zUBSNb{gBptkTI>(_XEgM{{5~Z)))ADpMn#YuLwv?`&75I!Hcjf5S1_9g7XPar|TCintp&a&4OwIUtYi8^#jPO zPr5}W27xSh{QwFuk;b4G#ZYB0eqDx|{qY)z!4vRe$3_qX93s%LQ2PZAf3W7zFQ6C^ z`2`A{|KL-zK#B87W!-J05bza3G2&^3=9lAL6&D3}xw<}Mlz{_nY z;tDHa;`30%H8#V<+fc+m^h3p87a|PbF&QQpgAjC>1`~8g2x`oL2^t{;3ueLuWp_3( z&SPjjSt61Zm$3kJO|A&jJcbvXsz}%5?s0~MGDmhl!{@AihI?843@5Yt8Dz8j85lqp z{}O>AHv|(_2)aX+tSSp5siQID75W?aFhU0TfNI9l;7fG4t9CtN;`r zueBixX3SuCt*|qI2^_5A87&M93>gJX^B6LofI@b?GE&GUIYB}e82?S7L1N>cpW zU3mgt@Ku0Iw$=kBpp!6;Gj?`#aJ=~W4U{#Wfs6*FLjLWcJV7s>lp|ESavWzkd*%$! zi}PTWdq65dLBhY?mnZPWE+mzq9LJev&73LuVkubVB#=r_=788f0j?6Xp7uDSl9H0r zi)xU{*V!4Mu!LBhiKGl-N$U*#1FCOa|3I37;7aQc|Nc;ci@&T-@%JABl_IWR0{Hj) z3h?g_{R1keIY8y~i>K$n?&x%V19Bz*e$X}9kS5`2hzydJP!3Ra!Tc3mME(J_e?s4Y zipY;&{{IJ^oQkB>l?QBkJH!kW(|N!R&RmELl9o^&km*amz)a`qhL}G23n-O=juryd zy{-ZQ-M&15;2XDpCW0G7kj_I*em}ztb9+#^+gavXR40pcHrUnDL7@^(n$pU%)9FHZjd z|9=Aiepi9!7mR70uHYE({gc-G5>!WmLjO_+Pi&4x&?z??0{-SBo7X7@|Xb8jFy2QDg@R7?8&h7)yT!Jv}RL|xAwsC+xX@H^!`H70aiN=5FW^40YzgrG<$Xhys%phc2uY9ACQ!<0O(2$P@0|) z_(B;b^#ddoDgZjq8Pv$(hKYZHiSu-W#6Ls&C7rGxAmWh2cR(^XVKQ$JG7vrcVKOfu zGN7gC(4N{7nA8)Hl&b*fESFH8ZcrNPgh@RBN%;zZ1};N6z*2cIsXItg5M9AAsT&X} z&=8v|2iWNrFsUmbsZas%WpR-FD+`ml0FnYZ1AGTN$Qev9sWTucP}s3`L&NSlq}AN% zdIBT`G7!8u0Mtx71Cu%ek^&jX4(fV<4BQBlI?(NVC$Ky8PtXg#rO^1<)9rdEpxgIP z;EQgU&=$xAu|EP{yjTKNwWHhjMqqd7kDwQ+FjX5MHz$4xd~pb-Y7OKJ>n{N>>|v^w zK<;<@5cFaWOw|g=Dc2tYUr54KE$9wC6V&bcCg4RGOx2uj-!p;Tp>Kj-e1-{4fm~qw zBJf23OlU@T=!u|i*B1dV&ccKyKrT{w67)g~Ce#DDw&6+Oi{&t(7SL5I;G54_U_u?B ziyc505x!`I2{m-P&I#!D-4poY-eO2dwAO$Ng*idpu6qJrL_ig`=72=OH?r;sda((n z7Ifh$%fiHAmYBNA;Lnj1*?v#8X1`~||iTX|m1Re1Gq5x(B=mfoP*C_$uyCsks7E;{h_KZYih?-w@R8x+CC)Buvc)m>N(y2ESMo6tzJw zzAOaW0jgL*g%+q?G4X}|FVH!~ps)<;1}A}l7cmgSKK zd7%Q?r$EIxNZtLPpsRpE;T-_IsQm>G%)C$m(24?I9#A)RJ4hYungmcH3wZGaW}dGA zXb=M2q?iCw20N@Bq%81-E=(E7T2RpfvNi*(4ixzT-H^+UUra@)yZERZVyh!a8T3X& z$i2xg?kzwH6*j0kNw7LlTm*Huf)a4Ri)|2f-5;`;!S&Y**ELX$7rI?JI!z|Lc=F@_ z|L$Iprois0AWcCp1R-wd{*c8EZu`9ufN46>9m>&Z()D6JNK-2)wgS3)LCHVxg%7e# zp#niKZbRyi86d}*G`^?-X@MNL-Q5b(67XUrTnjtIaVsEN`1fA`_3=z5yl@9;>IJ1h z&{3cNL4z(&=0iQ;D*$o~OV|3Gs1_ zM?e*`^_v&hO(Avp8EAcd0$N{NfbKsxLe$sbF$s8k3p^$PZg27Lca;E*N$da(k%C5H zet=rVp+BIbFhBVByZ!(T=YU3G`oZHCp)#O0FaP=r{QG@D%pd&gPk>C}Uw?x6BB(WX z@gZoS10wpPm&dW&RRuO&)A8c^H*jlJ2BeUGJ!rHB#Qed(9;8)*fBi+~L!jn1XrRYe z1S0yQSH!E^R|Pa)!_wC2GLhxQBv9|;W$6F^|6l6-|NkF6dIa`c=pU%N|A5`N-&ex= zV6ABu6U<0g5&rcTx_wo8Lng8Wfs|Z)0P-CF`h(q}D!nXC0Wa9U|Nq~7gy;2UJcf#Z z0%MO7149-g$Y79fvrjPeiUfju3TmbpL2@?eL`Wkr_n}(1p9p;Mc{0RvAXhzyu;H${ z4#{_&t`A_YVta9UIaEEuRTE&w9SC@_1Y!h|t0ut=xr1;O+lwBUF$hvy_dLAZ+J#kXZp&mmm3 z8LAZ&R>vp7rC;oZu;H#+4Kwfp%vD@3mcxugxGDu^+<|}>6%Zqk!YU1B$QgvIxLzc{ zj6t|c7G}(ez!!#4V?bf03Sq-tB?>d}1k6=DF9c!6AzXD1q758Yk0wGqi3qC;kSk)*jcwU@>G%xwLBV5%EGv-9#i`h_PK(6YCu;H$%hZ%SP<|@7y)iC1_uCjm`cOc+} z55x$hu(E;~vIpTRz85AiV-T+T2-OOTK~@<1LePt!6TlvYyXxg!Fu&7v$ID;B(BeTO z0OUeY_GWx>6VjLjd6<8@t3tqw6EJ}jpgEpDK@ibR2+!ix=D)rWZvp{RkiE!(4qL@P#u}D=1veA#Au0%=dzQ5Wv6PRRc7jBodg#_(BO` z9>jryFaZ>2|Aw?6L1o~J`~6^Zz|K~N+abWeUBnUONs)jorWdCX>OnySDl?E+yZ$jAc(7m}EEC&f) zkY-4-I0UI&Kw2Q-yAdXU627w$qA%(pCWExRD2A~Q1iaV|Wg{F8p3TW(dJzlLjYt$y zNY2)SX}kcd6?LGFebGD(;_4S%v%!o`S8x>*ssX8^z;XE>QgMLdo_~9&LePtMFadA` z`~gLbLePsF2+u#42o+{C>vyp z0RMKL0FXCDg0fg%yob~c&|OaLXZ}!HAyB8jSPiKG16~+GiW6uf z#a9E;gcAwMVt%0xGac++g}@hLFadDz!^#l`gy@SWT~H4k2zYS=#y%1FLI&oN3*D}e z!~zPZP?4Z4wigE=H4!MFL4u&yEsz2bQjV~_5Jl(!ITcj=U4kkGWr=5< zV8?)aY>=e!1iW&BBjCkpNM#)G;t-@j>2$pVG69|)nP2RL)SsZZha{I3FadDz!%C4! z2+7T0wqShO$9^hlH>q)C=G$2BaMn zYs@dW5N1Nc_$Q<~0%bJ*?XIxI@facc;&=xnctG~-hOtiszW5JiBb?5^9b^gHi={B# z2Ou^4pTHMMPzQpNMj1pSyd)_DufyO7cySg|l?J>BffOm7u8_tqqCLX$!V_jTI87)7 zys&@?pp+#_2+1?ygcp+`Y_yVu zh`{w#P< zL6XWjm;gBFVM%2NLiEL)Hn^4-51?$2-RPm)g3tqUHYju*p-u&bZYWeMD6x1#*znNx zgsvO_xAs7qLGi`%!U$m^BzzTN0x03jjSzkDz7^`&3qda)!`KG`UZ_KC1Q)*$heINf z1qX@|kj)@xcR>|{oIMX}2q;59%8@zX)g2rGFFr#m(tsCLkOHOC72IJ$YLBqK z$cLE@cCkXxi#V77N=f2@5PhKowGm{y0*rkj=tT;I4Nop$*NOyWalPPz=|)sN$03Tr z3FdYSG)ztezBmtMBfN7Kyfg!pvf%|F>x&(bng~$K{c*jBN9X{#A5{Fwz?^y^=!F49BRpXkKppo&92VAmkPbwr>lu)KczcBP1uM*C za6(oHc=2UA+}r%yLt%ZIdkE1Nhnk@(E(E<`gWHVS+T(h$2B8CFB`7;)LKK5Tw-#o| ziNF_yP&UZlki?R|0c-_odxZ5x1j0;61>+7AKnY(%gy;)VsM(>1ikQuu;Ix9 z(jMV@@fA|Jfua!R>`f4*U}qm|0y_+xAt0s5k@aAafEUt`8b9F0B1mxpnnVIE#zM45 z*j`MBnGSZZLg0%wm;gBVVdY2xLi9xl)J9O1;{juz2z=24WrG3@l32j*6$#4Xd0_z4 zkEnFsLY0Hc5k?sMK){QyjbP^^dFb;xun2N{gzd#WNG${k14sdQ7AAn=@a+iE7qg)z zgB*Sz%0?7`kaC3QMJqxF$o-&l#0loS6M-+nU>f25nh>b-URXow|9}@pkWK`6bONb+ z!1h8DW;U!8k$?$+gCEu&VM2($c-8>+JSh5KXd&5+9>V8fLsf_n?uIG{h46fsF$V%( zOop;SeupHPiI9c0kPrs>8q!p#LYN5&<4l+UN*D(tL|>Rg%?5?BHjI5D@I^k9jYu4j zl7#1lC`>oP;g_I_K@NXb5B5L2BzXpzDF}FB3#st~UL1k6&O2QpLpO-_2>Xkjkm?gu zCqOEm6)*vC1i;FYNeIywWf1#7T3%$q*are$tb?*afd;8~K;ZnbQb(kqD{(171Wxij+>*Js=a{ z<0I@Z{9$H;6S6|!3pb54h`!)~+6PK10Z=x`ZuHRo0;wrLUISSQ%8(nO%0Xr5 z(OQJhcS6|k(A^1{Jb|?KK$=1E#r|Ru!bC{;PJ{`dB#UZ<=!xX^AXN+x)Uhv;Ar)!Bi&v0#d8g}+EGGC&yDLog z3`}-Q78B&E_b)*&w!>uC!DQEDF~R5GIbpIBV6q!PCSM5ZcKs0Wq8cV!1e09>G8sB6 ze-=_#2D}J?$u8-3JrmIF`zG*(BSdGX>l~1A&Au-JvgnUI@T6 z%mBIWNIAP_u*uMd;m29uot zGWkG2x9@|%7YkvsGhnhEAd~k5f!0F2_zbB|171|YWLrQ>0J=l(1ieUy=ca4zEdDm{Jjtzo#4yLAyfQY0$;Gh)Pg77 z!HWbo1iVOusRd0KcY_xRYzTUB8zu^x&+T^YfK2fpg^7Zf4up0Db-S(!cp(oH1x;;2 z7745fdI4>3KyK6R1}_p=5%{7RrWQ0437_S^3#s%vp-UZF0=q+(1ic7{sRd22!sq%o z!qh^RIxGkR$-K~psRd2?W-)d5g67);yF=#$y=Z`F2zbE`DOoyQK?xBY$N}BHa{^zy zhbedlX~TEAg3|F+P>2SBR#?2SgDE%)Qvk{akSX}?&>2B5*1{Alfhkx4T|lrVpxbv# z;EO+y>M`KOWXSA8XDeuq8lon24P>=O2F#Frm>L_$V(6ZwVf!(1if?l}5)Of?x zfTpc8zzY#vS3njkOn}*?4pRe~pzWRtnz|3_1}BMt7ugU+-5(%D2*ZnCkeUrt=&x*gvpo^%)>rU~~MS?_RKYbu=W@9>WAsLhUR< z^u@+9Sg7%U79%8qY?%s5xv=Z0U;KyEpded7p~n2851}2B)@oq_D4~{)5Pjhdu>~Az z;I#JZ8Yr!SQa1b&(CG+!K%vI`LJeU6B-BJ<0w|&OA5zJHJpJNvDcCpQ9sxM5O#;~i zE|&tJYk6SpACP}QX^rK@K7;{~P+JQVKnbV~ZFc@c^5 z4Jg!DUPK_YLqg3RCV&!Zh6vFYq7Ylap$1NCN3McG4U}^NyQhMR>!24OA&mo&Z$P2O z`r-qmmVq_^WrAMZhY6sB+DU}yi?t<)Py;Wii2>OITT%ncJAp4c5%z#WjrBzb!T?C9 zmBR#3LM;&?`oa}r4{U+Tw=1B9FQA+g)D2mn^kQ-i*d-v}fI^M!g%UzLB-8|90w|&O z8&WrbJpJN+G1v@nsDaa3AIKia%AoG4pb9bQg*L(-P^huJ*o80vlGawj1W-Z^I(`RE zYvnL|VC9+`$evbE-hr?E2}alh3N`i@K`6$`1ipZem!X83HcZ)tpcniQdthnpz-3UV zfpQLfxzO8cu#aJ(#{S|Bq#i?*YqwznD4_ltlzwtEC^pigjn4SUQdL+p1Jvr1Z@8o`pz#<>l(E0p$%dsXb04bU7#h&cox!p z04=29U}RuO>kj>s)*1TdMaTdD|G_5x33&0Q5bXH0PS-ClK<%IjY2ChG(mH*yuTbK# zK3HqQzaMn!3kPK8Y=7vRZdVBV#Q|5)8fuQ#10{TE-Jw6gcFBNT_j(Ix8Bn(`M_RXt zV_IkEix;e*ZC(3a-+)#qffk^ba-?;$xTSTnc)fT9-s0%{raP1)t=shlSnL`^>`!;7 zKw3A8S6Zj*j~9m^VsAjJgSuS>x=RJpx_SK4I(Y(KEC)-0Tqcm#?fU~PHW|Fv^UlBj z|KpmENLasl!6bk!La?ki59HtP%E7BKs!*vd-sA$r=9wUI_M1oeGiGT&b3;te!iW$(R ziq=c~Ek8j^%s^Y?e!S-9-|zdQ`5+4@HbHU5zaOk0v=HqgNY%--&R)>!))yS0I0En8 z1Qm?0L0fl049K1h@QOVC{ovL{^G}vqJ*ZJ272w^b{M$tWgZQ^Y*Wb;_ho&bm|MiwE zCjRYUTLNDM!jc+Tidg$pQ0zv*%Jz?GhX4&c@1Klr!%xE>39F&$zQD3kJU5B&mKR0ozi5%?nJFK8(p2gu&E zPM6RVFRa0~Eal%1ZfG~ZU;5-1_QFQm!ccl0yc8%4u*#R z|I<2KL3PcGfN>*$|puutQu2bqD`;$bwoV1!8aopgQqk&A%P8oEH)(A-*Sq zUhK_5b5RXw*X!$Da67kygCgL?6o^8&lX^iR6!=0HTuZW~b%NL8X7TcGp9*T{2E9mu zs|WR13CEN+|Mp&xN@$3IQ}70e86f9EQt*AyrcsAx|Nn&7`(6rwQUcBuzTmP2OBMQqe|rnKJPUXclLdA+$g=KG9&qKC2{wBpWY^J+ zrTq*qo^v4WI?Cd_{lD?Z9tH*m>o+fSIdA_5RYnt-7#J8HEbV7F@&EsS4F(2=KTG== zKm}a{0|Ud4rTq-W1*srxR0!RN1Z$IE+h3N&yaQw$WFHd$cF@kht(jnF?gWcpWa#z< zIaTn*z90YpXEE;riGmIv1vd-?0$;R4RKvxgswW^+gLfbCZ|4yRd=Z7D7`%2q4Ya8+ z1)(}s0ME(;((Za5uzIE zM^>2XTi@Y+1l@e=3st=sMKx$GKiJ)CkX3_r6+z4{MN!QTGrJC<8gfxPBuLyLs-foSZy|mMyH^k*4mFntX08;-Tvm8EfVS=;%su#k1?K)27t^5Oa3J8t zRG7IZ0$=Qeh(p5h6fY#3a=ke8_5c4Y)+|P-`-EZcgW4|yX(kHpLL^ z!>wPf1+zXL$@*l7DzNpS^Ay2_AJ>bVFaQ5%NkjIpOt1ts#5h2Q%}fOy*8(bM|Ge-5 zxoVd**j3mXRn0%;K(0dSvw-HeUwlphdl$`Bpm~pzkl+HRr?U`M(6|zf&1(J+{7F^A8=6^}e8XFnAp@G(99E2MR}qB_GIo&>YqlNc4ca z?>iu>z)_WbQ5cp|4u1Ooe*$DL?=mJxHFV|-s6P}2-KPxA84M72A7TJ)qy%;Rc=*yf zd6-@_e)|6(EOqb^16b+72cU|j8>B=;EUi<7@kQLH|Np^K7axFa2W{2j0V`l(OY3Ce zdSUzN|9`Md_C;8w#SGfz2{(h|g%r$;gAbU%N)J9{g1H20%J+|OQ&_>)fi5+5g;)f3 z3CD{oAE7SEKEVcdG^j2Jg(!jgXX8hxf3gp;gDnExo8k*m0=7u-MIX$fgAZY~CfvDT zQv_aQBTV6hngS})5uO%&;Q=!x`yveJY2Y;7V)B4wC4jnTzH@s@u68X^8-9wc%T-6N*iR0$`BUuf-M4<%aEW0M*!oC zV1z}yP>Vp>6Ko39M+OLs_@EXEfsUO4B?f2&@FFbY16!1RLKw|QuipRvKLJ+gf;T{c zHq(Q9JK)V-ph8y(s+S)!7y)r8*cAaUR)O@tKDi50ZelwSq4}qDtrFM|2OoiUeE)$t z66{sS7a0%}V8vjk3B16$3px!2QuO(PorbzMtNDjqtrFDdf{-B?h|{13^Fs}WmShG9 zgFy##?1YqF*bP>O8!Uvy;BD_f&EbG{Xe%Uh0?fh>kTU-@Pg*x>$^;#? z1RCwJV`g9gb#r{byx98>p7$6a<8h#4pzgd_3K~a&+4=@-)EnrjN}vI@H~jlupIBe0 z4eRwi1L`5d$Nc!WgXeF-vHgCpTd;0yU! zSeQKF-yiy=+m$D+nA;hV+9YD%786< z(Fj-dquW;otO|U-+4fKg@X$!NuMBvn%?l2ggG$8s_q%@C2^tdtjaPN@IKB7-8Ug{0 zM0EQqfK@{pA*B$rL8n!`&f(wh`(+nclPgDBr-;Xkjs=^a?bcUg6&#dIhvi)cQibR|d%Y{QG^cKw9Bm0WX5#nzdn` zyAt$*7cL6%+?9YAx1wMH^yD?u>v=Di!8{0Vl`4SyNRWNb2{6t4EmuG-KhOvexD>`X z??wc4+RX+~+5w+r!vh@$|M5ci_y7MdJV1o=@Bja^1o*eR{s?%%4l}r$P z1ieVqgGEFNBmv0q?-y}wy;K?s;_d_$8Qq~WX`obc4RT)C57a~w0QZ>yxKhCI(0^T+ z4NR|DUz+@fmK6sdv7p9mI?N^fEssGS2MzRqJ&sZSfR1A8-w*aU=%g7Q_~^aKumAsF z_=53#O+e6qIYh^=P-N z3^?JR`w7|z4N?q>H!slAJAuF#9+9vZ767Zp@ZWbGt&ooo>)ha2BuD1E5&;{Q(|4 zhWYNp4{W~6ia_;U_91>qGGGJ+r9i+7Nw^K5SOy)i2Tlzb`L_|Kj=$vy$ae%{8GPUs z_&gy*Ec^ZV|NliMXm~|{e>*6G=W4@3795SBq8M5_I>T%OMPuj>aDxg~OtOPL3Q`Oz zU%>md1cF{PhQmDyRt>rl0VR42;Ff_r3K|@SjG+na>}Pnf`0K6z5mE8YM{KO$y!iGN z(!NNW0Ln!YJNp^V{Qv(SbS9I^&VB~}vecrqocwaoP+4gAo5nXhj0_Cny?ej>`~QEZ zGoqD%n6CjBPY+)BfB*mgc1L$nLfEN?t&KCqnP+F(&lNWzLyYgT2!}L6P@fsumtGOS%xbqF%UJyy^ z^nC+9-z-aoe>>>BmtZYe$n)<|0XIKf-@I4{(){8CXhehsviNilOj)To_;3V;pcgA) zLi{ZYnHU(3yIugdg+SvoV1M3ukq$Bj(!u~0$)R5$L#Ux&K-CxjeqR;qgSA@V+7Ubw z7XYq3LBsMhjAt+efX=dc@dZ2}#M9||;q^Z7Sr6cn5Glrh4h#%0%pkpAh(6aN0WY?~_3h!`?z;z6LLUiwQ4i4vRR%U~ zPvDE25KBR>$&!6h4dH=o1c%-iP>A_{fmULmVD;Ez2!vYVqcIpVoSzo##h6KFW0$I2Nvc0nf zoW5Tqf(+gsdLSrE?!{GzUeNFXNJ;k;u#%t`weesxL1IvCAg94h1s#v{Vi%+>(CK>P zwR9H43+p714i=Cym=At{20LDE`}hC<%O0czdJ#4pa_7Y{kP18rRD^H>4F-=@fl?tx z0_}iHWih;%od|XxB7u5=#)?1*R0NSg!(hR20o3wCl86lg=?0zO3QeFs5buJL3sM3V zL+FPj(5YZ$P<@~TDgqW@N$Ye)PN4UYjfW)nJ%KMQAfnI&dMgm-gad>Us2n1JieOKm ze<2ws;6)3h?SVCcc7U@4B!QlRXh4o$$xona&J`(vf(`)%B^k5?ssML6mINvcSyj~O zdV+tu?}5N9xfhNQYR84OK}FXnv&Sse;b=HLXW328pS667jy5=Kdo z=^sH0K#qZqOXla_?4hxF$<~>uPMbIp85#;&>lx09A8K{801IjC3 zx_iLIRNxCCa2^27IDUZ@1n=L2q6?8y>a0PLiIz%!`N13vI{EkutSAC6D)s{xl^n3B zJr9l%&_TRkU@4*pG-UD;bSU&oqko{PHdFw-pe5z~|NkKWLv(<0Kh*yq^@RLy&&a@l z>VFMJ28I^~ATvP;2pkL_jAt-_g5gQf3v-AUW(2&jg=8y8tpF=jBb1@(r^Fc4Gj@Ft z@ZzZwOh_S%0oq?h@z)m6cnkQH-Yn1{)))T$ETN!)4|s74lIl>c2!&hW0j}e>^SFXk zgWM+&^y0ZMEQkd_rhyJihRVO_ftUvJEiBe7K~}%EL^tO{&Ds;kzg3MLWbc zP`(HE4_}yp3j)vp%$?@i3k-&X&zlbj=T?f6m5(YLEqzP6OG`DA56D8&G_7yF&Y)#!yY5aYN|n+=Q2)QEb+i#h}GyW&9}a zWq~LMHT4O&*A`~Yex88VlXW^^=Yt#%3)UAqJis9eN+z(N7X@3*^m;Y833lWKD~M0P zA~%>t&?8Nb1ij#cm<)0yB*5Ty9)Y+YVy8qJXyN6;7a;F00!1Y#o)K)TEUC;Ay) z6g&fWnIVVWetvfAf8!BQPuTj+i*3(f{b$fPNyLeM22ec?isi}^{S2TEFsLtGa000> z9aLPJl$4m45?^j?6rTn=4i_|E*!ac;(!bsV>R$)q>|b}hc>f$!1N#c3b^1Lv?*)-;#Z0f+UPwQ>^?!o#rS4XcP+DgQ>zNl3AU)v70^d)7 zdfP(t4}scP&}9dpPTYRb$WEOaj0;Mo;I4l5MF#%uE}~}wUii3y(?(jSYX?jfM3Xp7 zVOqCqM_Q+g=$RJ}o`E8;FN1-DfdM89H6|635MW0!ce;q~cySP<{CMkufB*l3Vy$^E zhz0SK+e4724s`c|gwi@)c+b3O2C3d903JCA1^dhO19XigsGR-K{8Iwtuh0*mQE^C8 zSA*P<09hRj9chF4tHc$rzYacRNb3&mNb3yYJ@bMCWcBO53(b|2O=fiHU9 z!N%+YC9i{z7{LB|`4lu^2lCRz2c4~;MAW<&L_)ll{Q%^(ligE6LTQ~oqGw*L0BeBE z&*8XIVv6;J+Gx}WP=#^fv3Btx|Mn2xGeIw=yMSEIMg37bo;RG2n0s~=o)Yk=fzY=3k4#0ilNhmcg2f9kUK$I zE?aF+dDE1hQ^L;EQ4jXcp&h zF=u69$Y40Y3{e4Ec;+IyBH%?JLWL+RsDbT!qxEE|I(XdZ#f#04q4nmI7b`$a&|;DY zFXlc5)#dFJ`in=9Sm<;0r-7!eJU*8vLrcLX~kt<&`dYPN;kkRSok4)zInGi5`-i!G4l z!%(02_5{9|1Th3uBZJO4elZE$z~BgYQ3=)#^2w7IzK=jY0nMj@=bH9G0yY4=v+vVkrj+2WIAO#2HW(I$V zZm>sOCj@kZ40#P%BMkLOXiw0KlMdj}05vDNeOm%woP?y*fEOFU+Cd(9@S^1*$RnXQ zK+Ty40WZEnLK|Y_4^bqKgx-K0!1f^EMFGs<6M-*|z%+p3P#x7Hpbnf1L~UB9>w^pi z1|G;=DiKV{!<^SO(M}d?5oxm4&kR2I10Tew?0$zNxgE{gEIB+1z!2oU_ z$U{#+xobk;3n{qhgO@WIAm>AZCcT@GO?I6CQvD+E#T>ZFFOY&N4el^K{_Ud9o}d?#;Nl?HJph?8A@D^FT=WSzt7ac!*a<1U zeOTwbICl?GHSAz802SdbqH|tszXvMi>OrO4esH0v2`v=o-Gdj3lkb7sRy=8)z7Jls zfi?JnG;9yO5%gjkI4^@zK60_x0Cx+>Kd@r)7g#O0J_Bb#v|{lzBzVDj5LPUvgGc;1 zpn1@>C*XyvEjYs9#iA>uaT@SK2OJ9^m%Mnva1WFR;l*Mh#AHaZSRw>Vbg0GR8yl#> z7lK|mz%+o0#l>(9;KBq{EFOTU1!WQN+z3z5i(Z(!4g_Sx^dBmHu?9Sk!O`j3kOf)v zb?_my7I=|}Pzx?;8sSR8l?b@Z%Y})xWO4Iv2Nk2UA(q06QEx~~F5ra`*tH;^KY77+ z_y7Ma9)9q`1aLuG3Www|P8c1eqh#>pLf~ z7u=QyUA_fcHIgNfCD8555%}T=R7L2Vpx#!H83CYE(tRI*Mp&iB>jU@(T}ul*B_AHp3Sv>h8ImYka~NpH$lBUP`}Lj&5IK^AiX_S1_lO~Ymm88 zHU*YA;CrzyJS1eZz)p{S5GK zU{YxsLt0{TNq!NiHy9M3l9`qk59t~PC6=Yf7ndf%xW%QpU@oZF2%e9y&^j#upZlG9(R>;K28OvhqMfgTLi8Xl(#!aoT?V(eGUSy$| z!VWV9+8+pb@d_-Da3QE11Rd?M3F0tNv-d?A7d*N*Fu@iRf+nu97KkCB;*fv8OX!K# z1K=%yUoJlE?A7@H|9|sd5UBtjIC*pd)Dgeb-3k%{4V;{KArEpts6;#7(hEA?gMmST z;RP2+@bwgMO*JLxMYky|yncWS&I#bs89X3?I?w_N7VCrcvYLJ6N?ad0Tfir1 zyokOE%3!BozJX+c3CR7Q4*u=F9iW6XA?SrO++UD159w3xh19vwgf0S7+Y|I+IwWd3 zTR|llI26GC$G8adhxLW}@+=9^Km{~O{RO8TmVg&5;C2%<-9pnucQ44iz!w?dDQu`5 zcr|NB&xBzU_tt zRKSac;4Orp64p73;e|0oA1D?(A*tboz!gyG75W1?HfxOGu?a5JAOr9}UV~QrsQ>%_ z|K&{3;#W|f2FEf+4Lig7LTv~r$?@+G@jcOc36x%4zkmjgK($HpUJwaMuSVxU>Gfpy zRFDv8;ONAQe9%UJ{{60Bj<zYP&rU~_w5LLp=<~aL~y$sTJTA7ythUC4bPB**)M?&l2!rGDI^Z`GaE@><4Ul7BV4@$RZ!$S)>kp z_bn)kl2Wu@rL)pk#CC~uuBhdI%7Q>6r;8s2;>Aitv-VGN( zMb(D1Zr2Z>P2(>nfcYA)6+s0^_Y`oE9MlbNN(H=723H##onS6_LcF^d)U*oho(gJf z1-+OAcPrCtafq%?aO3NR2gux)m7s|$(5M?Y95BjmP|MmBRJ5dZyM!(PFIQ%`0LuU1 zYkom%q^qCphIKp#YQuusiq>ylu$+Um zVL@x}I3D(c_sJ?SFfiCW>}Oc;|Nnmw+w5UK11L{AFfcIaJnUx(iZ4mcEdVu7GxJhX zD;O%{AvAa+0+hhAAEEh;0Q5f251p_poWTj;$BT2|lNUgN0A4WOoE~ z<>UU)KcE42&=k*$1>ho*BjANQIIV)J@Gqd*o6s*oFTUu3Bby(*AQRF9NCcg^u^n{X zCU`04Cta`#P)xsW0WHGrcKwmo$@IbsboLhH;#AP-QQl1Os{cIby3SAm{_RYlJS-9T z;y>Jo58%S$&x^mH1^u9X2dxMA`{skHJg@^e_#u-PVW1-iKnsCE%Z0oGUgSXxKz8MB z(5e~GRrDVMUd)F`gN`}LVg%nTAQ<$*3L*%;kdg6456D7r+u%>o3wekXX!jhf>HH_~ z1!!e-^AS*{;eom`9Ha?+wNdjC0qZv}zMqC92FU$RSq%K!TwMaP7_u0;eQg4}Lk)tu zT`dCmxA~fY>R$=a7!tT-;t0%Q=nho@g-5rqLST2OOi;J0LqNB$MqqcSKoD%SgV~n{ zbW4zu<=_9!M*=|QOQ=rJi(qiy66C59d=`SeCK2?)MF$*Ppz0UaSKtT&^>$VGw{rw` zhbjbhyUGM~`#J=6hiaf$4Q_EBe8j>W$`h2u^kTLJ*csMuUND}%1-&#Dnsz}HXusZZ z*FT^R65<$>TK40ve?Ti^yIuc)c9(+`LNQkLbtI~Op2yl%q+YOwquZCm+E<_$Td1Oh z4@iBDU_DfQ8ByvH=9d$t9$|hFLG>Kgt^%c?y@}SoA~?bc#r2bKbQ3{ zL!)^%Lk7dcEQXYYAiD#ak6Z{23kR=XH+21Bd^Dif^+U>HkW^>ti{q|O7#JKFprr!% zm{8E=+RaB;S`Uy5+RAisdF^h3Dz0LXZV z3w%GMbn=3fM#jfQ!@~_8U!93pW1pjbdOZVKF}N+8Pw_zJDO`*d6+#(JH_d zDy7iv`lI=P1UT}(fOT;*LZw*2tM#EafYMK=@1JhhKgSsoUd>{F3WKr|7{la!|Gc;e z4quMu2aF|rSv=s&W$hr92*?>vV-K+~oH^6*)1g?j;ip0|8~@TnmmeJNzF>Ty;i3HH zM~96M7+*SkCOE9yMMZ-9K&eExkBUgQi;95prSBiRZ*;q;@O=N+efhOx_lfQp6_M@` z6#`!nW?MSRvFDgxykMeNotDm-P3 ze#V!&kHtkF5&&(L0J}dJq!el$*g&v#E-D<~KXxB7zVtc(Y@I-Nhzd`)iwXytbtk^3 zsEADbo}wZEwTq{mqlnMiMTMh`L)%3~KsrQ4MB7D$Lpnr-=liYiH=1uTAX^Tp&jUMs z|12ypoWRiS`{)0K38*0)+6~&v81P~VC#adjg0goMhkbbbgLBT8l4dxr&J}MI3A&^M8`1;~aa4_F4 z{qp@IIGAO?!7Kp}W)WyG3qXU}zmy&3<+ylwhzEy*ohtxy5)Z;j0-caRmf${6D-5z2 zAtlinq9Ve5pi~+qQ9zQ!A>&K_m42^-yFm^{qzhCBgCa@-6j373hyo=FP(<;7BT7U% zL`6c|MTJK?L`A^A66WxDw8%Ph=FCgbZe~!xL-9*)1_pRyI&a=4@geO)Cl7#-DZ$#iq#aX!xm6 z!~)90{A({j-wt(PiI(i(r- zI~42U_8~0Pxgenq@)>ft&xE)?;HHSm>AN(cX zeF$PJNF@Y+W8H9j4ue7|d(y``j*0_^)A;KSTzpU@4NBGXidjGN>l`=?V$Uz;Klp&1 zf7c6nFt@(w>1Tc&-W9KAF?^MVMg`bFn0aDH9#u*lNcvdIQE}kt&$npWxs1LgL^{iGvT=8(!|KWj`ISqln6kb6Of z`6C+!3QJ)I28Ne;|NnzS1?)61f$6>~bob4?_yA<$yka(x^JaoA-d8M%<~mSO0C8O@ zOY5Zy4w$=8Qsdki-F;RV=?O|P@sc2 z9~_I-SN{Jm&rkw3e$A^{4E$>@h=OAQEN@@T4pMA<;4sX3;{zTjQ4F(R^ysg;14$qM zqDBWE*LZ;}c;E=N;L_plQ~bMLi5z?>()bAEqQ;lTEDQ{_lHYFz8{g(%dl>9OS&$2( z!TI}e^G}{)aYz7xO!{D7%n5O-@g-!(g5nSyF;JrU$PY-+gs8AIAK?ILMREj)`@xyN z88mzNQV|rn82&?vPTc;JJ_$1Gfn%`^$W=2*_8!7#51fkyTThnkd$IHX|Nqe9?C@i@ za+cNu;6MRq5_qbBxmWP$&%A?29#<+IVodt@kE05d^YRYzhp{%in#J&mKL$*hU;_~bLBk)bdH+G~YrRyVQOenR zvV!$9zt+LS-A9_i)o3S=N@s`)%Y7Y{n=&e&`2|>1x*s6Q(e8uI4;cB^Tx8@vaq$(V z($D-6Xk8Ah_W$9CK5&?S*F$;f1J;L1iLf8)8Ay9B>pysMe$$nQ|C^6+#2)^yT4FGP z;lFAHn5+Sl4PdebOm=|D9xyopOilrlGr;5=Fu4FsE&-D(z~mY*xdBXW0h2qxweJJ3?Ee3GQ z8rtjzHP_xKfYm?f_T}jGebOEJq}%mDH(Czx66LhZ0n@-;s-L5ZQGr@b-p#E8NEeAu142Z1bgbtK} zyOp5k7}%j4p#DDOh+we)CBXiF0rvl!?$9^<+nKt3U+`}iv_4eg4VHt1<(KZzA3@!& zUjklC1?@6H_L%RVPG69VLw|rg4jCy3c##KF268cyD^c=K^BWCRI|MpIKQz~VVBv31 z2X8n0@L#2M%Flj=ZeM8Vi^GgX4%R0aq5lDL7Hy|1va%N#p??yavNsr^zX+!6O}Fct zPS+RRzAr$j#r4U{tDpe}Sjbevl))?oh0LATZr!LM13HfdC1rq=J$Nk%R>lMhr8ko@WW)0?YaRqgb`v0W5A0Skkes1U2k-|-gvDA55@}+ z@z)Z@2VRSGy9xxrWz@iVga?#I_~jW&fA%vZ|LkW_`Pt8~<3~S(%#VIhRs%;OIQCeUhI%KW+5KBB9|R2~ zb2J~~2zn8UMHwSVnJZ880kDnD2YCWt=wVTIixq0A0K`&(0N8oDC~n&fQU&D!E-bpkO_D(35zm2 zkTPG6=7S2Iz8u{k^$MM#Jl(DW%`X%>T?Jk)`S<^Sw=V~?uK+}zIaB~5-|70Jx%P)V zfBP>M(4PDs|5bWT7$$%N_Z7s-7cv1aUi|ol>CYt~Wv)EU zFGRrpd?^z6;vyDhwIF4oJk75lf%`%r;KeE|%ECa(e0iE*@<1%*33}0tMVUTG8OTx& zh@~8XFJiDL;{YiGSqe!;FIWOzm|{`(5IocV@)k2Fgm{`?%0ldx4SKfP z_#zvNGI5Y;AWJzRmU0HXaKWPN0~6GztPo3CgI>sDQFaof3}h)I#8Sq<7sq~pefn}8 zND5?;9K<5IfETwRQYe|A9i$B8J1K}oQb8}aU{RI;QU)2tBa})BFlliE%W)U<`Pn3{&={+xJVSFLHyz|4%(D>8O;PAJfA?IH|!;Js^42*yJ86^MqGr0ciXDIyN&v5H^Kf|X#{S0#d`Wd|b z_cLt%-Oq6PPd~%=zx@o#|N9wwe)lsh`P0vE;cq{~pMU)fslWRfYX9^zto+;0aP?n5 zgWd0bhOj^V3{8Lg8P@$n)P}uy>!*}YluD%W zUq7jQf`9Kp=Hsm=`CTtGpZMQ=T;TPE;57d0HR!+dAO9~uO5?x&L-|*!2vpWVp!t9RNUZgL z$s7JX*O?E!-rHTvVSJ$Z=` z&zuSFzSI1Mqxs2)<|8bj-PtUiIVvpOZ<^mYKm)bbx7(S6e>+F($r8!#U=IH6O#Iuu zd8`kXaCZlDG#_H>4CZ)!7ovoJdoYjnsZx$^XHXRmZUKYF{kmQMy!-?jym<>+4zS&u zCyhVvAit*TgHQYgt`8VMtTZ^QJD8*K(SLphhQ?nX_!$`Z+dDx~>de6}08)5>UxRf6 zXwXE{^#Z?!>xDG_Qr83g5Y7P*=K;T_>j97qe;8ciLK^?|6P>=G`kSG|h<{J$k514g z#ShHR9G%V_-QFDh+XeZzJM&myC`wuZKebT&$=dDA@mdBV z)OxZMG#|tVRtpLf$by)svE7fO5n&BVuigJcyWiY(<+%9}GSvX)H^0%~-|ot%`lFtK z!S+Kv14C(Iw=d7ZhrF#POW8pEijqL%OFI}CI2bxZA9T7t0gX)5A9uY0>R^BxsiEKw zSm+P%9MzBR&_9i*z>0l8bb?Mn{LtcH2+{KWivkT+WfWYO;?Vat~~c{-hc4zh+`?|4)83U{A<~pt~@tgIS}HY zje@V)UqjB{g@hG6{J<+K4nAPu-|oW7p~}#}zyMbOcF#>#jyJO)V$HUH+~zSb@V86{ zEk}C8!M`p>g#|QApxOWm>;`!ThEo2UHY#b|EGlWu59-sJf7JJ;sBrMNrm-?Gyewmf z1q8_QGiT0#&2N4q(OfIQP{MiK^$Xbj?665((E1)wUy7krIpe^qSqvE!$`cu~7_t;I z9=w{xkj3;u=I(?4%||4fe=wFZo@uWAz)-6DBI3rw|Hm0XM})#vW>~zQ#Q-+p#jew! zaSoB2?_LIgb~}NVtY_E@GcdeJ?0Nzk0O@r7!@oV0ukjHm;WYjNk^HU8K-tDs;5cZ9 z{eMJM$F)PXfN}$4314&V52g~u=Gq_3B_^-EGeBm8=M~u?M&EViczK(F0d#Qys7?PT z=*8PkumK%f9iZc>uOK8=g6#JF6L{B^;|^=bq)7}Q`(;!>BsjrkiDz-V_)-os zNal4tC@;Lb^%9gET&i5*ie5~HZ!$6H4iz{K+9tx#?fNGGq=MDs^(=sC2w}^5&1(_aDrjSM~kw&BNgN`Nks#fB*jv zo_%vK=yH+Sw`x9vqGR|fen&=vGf(pAjXEJAoKpd z2!@ykF%8+E|D`?57Q@YxH~-$fdGo-{hj(OGyq?7{`~HJ@#U^)nPrRPR z@LC6=8swR~tQ*i&FMz5pW4pt9;Potqu<-7=pj#)MJLi`D|NsA6D=0`AOQrtwmU8s& z1x3%&r47|Qj3pesr2@URO-q;FjqU0Md#HCV$REK05CgiL`S|x82zasdJvb4^$K7@9 zdI`Gh2obN)=l~to+PzL) z8c+YPPwR~R2RisVmVOr-MM0|w z--z5ic~?f|Zios8XlcO<&}xh3BO-@;LsWQPymdF6J-U)AJG3=5BwMs-@Klu-r+=D9lV&3Z~|D!dAl5bZ!-E37_L@!<#2>J_YC7QjWVf?%ufhBI@wHgHeZ#Prep2KB@ZuKR*Mvi;6($ z5s<@Q@PPd0qQcXCK^5fKM$o2b23rubl#M$?g`;$1>&ems&2LJ&&jdEV5deizj0(r> zyM-Jtc;0{_ULf*rBFA0E<|8Gb%MZj}J^2r=H(xq~mV~&d@W3qO;0K=-bQiSFKm>Gd zX+6jlCAKfpK%tYP!hhf``*#-=@dgG4h7z&cx*PZ>Gqjv7VY>MMT&2GJ{O|w&o9|lA z^0#by`Q-o22QOE@eDWXUyO)bV{DUt*sqE&1mXrLgbN~JS5AykKT>*i~3=rpR0ck&Q z^UsZ&8^M{URQwL_lsB^&{vEt|;O3uuH$fSylOmcEg)l3~BsAq6ffq$d6C_0uR#oi!bP;@gF_Fkj5YOD~?` zA)Czy7*+o%kdU8lOu3HjlcN1S{nb+;|yv1 zA*vwPp<6A}+VBgcHc|)709hSj(mLTE$T?xEAb)(~kNA+rA9Cgszrf`*{^HB>Y5YeI zgM7&fu_fjq$marYXECV$2bHrRZ!v?trPI2AZ8pe%B49=ue}u`=4ScgfZaMmiKjy_J z{)k_n_yul!;*UJ|i9hn}C;rGgpZH@geBzIM`iWoQ*eCv&i=X%-zNhgE`Ka)u@gF_N z{E0v2@+bb7V`=W!#310ccFYxRWf5h=m{4u{i@yC2h;}`j_3Tj}08>#%w z;;ak|kamae2YUtv=0m#{I5041U(hYEVPN3C0Gg2lh3zH|kjrD9ed3R~lEyEj3b7;P zW*UD8NbFD=fB2_NIyxUd(pOHcP0_*>Wj11ftbU{?}F9!a;^{fmG z%qN;3)HgqDXgt{PpON7cf5d}N`~rtR@khum0H?0V>!0{zVC?^&_+t(;AArC#evKIq zZB4@kd@y;}8G8tHB=RRgmbBU(BEQBf$P;cnga7ypx~! zBSTbpKJiB$PvbBCsGG)LaMC4>U&Hpp8&G12c$LNZ~=`~}}Z)*VmdFL(`NeE!5A`52_D`HjFQ{)l6r_#=*d;*U6- z#xLxm!gALIH0>$?%1z+d7LvUHc6;54Py7NG)A&P9r|}nGR7m5mI|<4OAL{v=LGv}- z2b+H|@V9(nW?%pXT`wym1H<=QjfX%PCyl@Ovq>6%*yWv{nL$yOcN1iUNE-jI(`o$g zZ>RCUJDtY=`C=M>+2u6;>xa5eH9i8};RbD)HZNvmU;yVATTp)GZv~y$2}_GYAu2pO zL6)ZRgG>$Kg*dkOq6x%wAz1@(P$EnRo3xYhKQjaK2~bVJ!qEInpeSxv{XcF{ZjuG% zPFUITQti+G|7rX}HQ-_;1w_{U0%c~9_kVPs0GF5GQklQ02(%BT{T?Xm{bJy6zsktK z@G=foM5OVDAK3B18RYpR2be(_71^3k{Efom;4V-F10Dc5 zl*V8DK><{Tfy$mVexVQ*mQVa~r@*)7yi8|eU;t|X#d+%zP+RI9D8WDjFZ^U0f5@FQ z{xZ<;$jQcsplECS2_pGh_kvDk02RKC4?(@K=AR6ZIvMOAa0Hj85*xXoq=Oc*U=vD| zVI~|s$PDi6HUD5JVZX}?N(+bYvTD4Y#Q<_HIDI22;ct;=WMH@n_6nvPGeqtaf5ekd z`~pXIy<=uzco_@2B^4YxY5a8;()f!nfgWm_n|a?Ay!ZV+9d^= zuKK}HVgOPIZbl*UPPuduYx7Tra*^gY0;pxs%@>E8-^hT)AWIRiG#>&nIGPWE)*rGo zzvAc=QF*cI>7)O5T~q{`kH{Qu{=rbEVave4!oc5b!^FT4)_tM*L4D&vhX2eAjjuqh znC3?f;rl_A&ucYX2Bts%`TIUHBGf@uG#+aB$IK888h*tn^SeJaz5~?-Y5WwF{h#|?0`mn>C9wlkNu==~`N8}NR3V7aqC!aH&-F8h_czH2%-0K(z#@iU1Y+plTwGKm1!7f7z2X{?Cs-@yFZ*RSBQ?BTj%C zCTaXfzB9)|8w-a%@kbnP{>M=77YB0eC;rIupZFs{&5I8Z^Nt>XBsTCRH;~3bi@?AC z|9443QVM?y6KDz;Y&6 z8+H)vf|o5I6F>)iHUDHN5d|r>faF+KhqtpBUZ#RNjQm1i&L{rJ11~|d#cBKn4_(su zBcCDi64vHTlj8UP|7}5Q7>g7dPlDncG{6Zeadk1WKpMXgxKucLg&ERrYJ3GsyWm!s z@gZ=229+K7x7zxX0g`Ao7UuH-VrRc@Q!9_?z)-!@I5m zcVam}!!7X9H`&+Hps|`*0hlPLON?dg4Kzvub`Q9-kbQ!gf4d7Ww(+;StPftJj=z!G zUj$9@H^1SzE28p3=thK+GIC&X|Dg*Yorgd= zL2V6=ce5A{?*a{Fz4iySCqaro@yA^NwW%21&4OHM_u2%+{Q$N(^58De6%sG?LFL{- z#>R*L*%=rbe}c$jt2F-blb`tGPJ(Z7Xa?7bJ}Ls><@ty@5yWQ!Rfse1Au2>j+YRP; zL>uKIXndca0o-mcSpae9vfdOG252Tad-KWv7ocq2e1zvPIPZXRPDvm%@36kGya~$* z@;86M)9{*`PyX*>Wnf_F^$95D9(R2J+TMHI^^QFQ=st@Zpk@MS z9}^>pcYy(Xhrk&I77*_Q=rGOWu17#;PabzY&?md5F&QKx0@4Jst(1L7KS+QXvCIq}g1x?pfp6;#+&_%^3Ug%D|^?wIT>THIW!E0`VmR2K_c)c+`@q!m5zXl|4 zj3NKR_{5916K?(AaU^Xv!%JZd`6tFFUYrHVw}9k7uf}HnT9AAKNd7X0JjncBkbFSa zY=)PcvC8Lyi<^12{-1Cah;tn$1dc@B{M##rUw_TT!y z;{Zs%FoygIkpDsQZ_;Noy!^Zh-Txr@wIF!`kozuUmG1?~n}FmuW0lVZ$wz?XCu5cO z1<5Y~*P0wf=dA^!su{~-Aqkom?~<=^(*`oE(D6h6XO<@UVDuM3jr$pNK*tn$1d zd6w+i3@?qb%D?Ts^?%0$p^(hR{6KxxBl-~1F~NjtNdAz{1=e?=Vj>r z2bsSXB%cD3zl7R^M-WMb<0n%TLRbCe)-vQDej3E!o zpS&RX1EBaZ#*qI4D*wA~{ogSMBrl9r{wzp702IETm!kV0q<<|)o&zL*8LNCRNWKIl zzZpY*3Ml?T@<%}an~Whp!T7`rUy%F@kbE(QJShBiLGnBWp!|4P_yCd@#*hc)@3SEJm?BX9 zw;0|3Ao;Z*`38{uWej;x{Pcq4ML_bKvC8LyMZzu-U|5)X9LGmIX z`CzQ_ydZfCki0Qg`M2%2{_ltZ$qQr1gVOg|ko*Ub`#vv1_dm#eYeDiZC9@e`UdAfl z3zDA#lHUxG@AduoQo{TpsHt`asXga)#`wgG1d!qakm5Fo;xi~pK<=>xDft3Yk_=IT z)ZPQ-Cs~lZN$G5cm(Ez_|F+%wzoP~uuZ&gxE=Ya>NS+z1{9cfJ1W5kzLiF(XV|?Pp zT#)<`ko;k+^0gp&p0e2tFBfB#j|IsafaII8%G-kEUx3U{#*hc4cUh2pOa;jQ81gHO zPrUfsdh7oV36Q)phWriV6EE(9w`L|8C{_ki2 z$qQr1gTnJHNPY&${Lgd2L4dHoYX#^4uoEv043zEMBl5fV42i3Q>jj+UN3{uI^Je%QVnLi)K)0i)Juu zi)Qd>i)M&vi)P4ai)N^3i)LtPi)NVC7R|7%Et+9VTQq}FcQk`scQgZAcQnJVu4slg zUC|7;x}q5#v_&)gX^UnMX^&>mYL8~HX^&>`Xpd%yXpd$nXpd&-Xpd%C&>qcjqCJ}7 zN_#ZJqxNWq5AD$mzuKc2xH_U4Bs!uQ^g5y$>^hdOD&R z=5$0etm%kmIM5NzaG@ib;Za94!d)293^W28+&U2EWc|hLp}|hN8}B zhPuvZh6$a~3=2A=8MbsrGo0#-W_Z*Y&G4x+nt`J$nn9u~nn9&2n!%zgn!%$hnjxwy znjxhtnxUX8nxUpEnqgX3G{c6jXogc=(F_jV(comn$-vOS!NAbK$H36Q&j6YrXJEK+ zJPVA$3K$p|Hf+d(F&Q4L&th1xA&bF4E{DN^p_t*r#uA2xjm2>J16qX)4A)8+Hpu6| z#jr3I%$z9>I2qGlB^+)XNIh}SM)c=S1+ zA!ScK!}FGWhD_i5hS#F`40-qR8a^z`V<^tgYxruO$56qL*YN8^?kFA&gMml`(hRZ; z3Ji)2N({;jDh#R&>I@nTt({B^OX`^zERC2MYL7B7>}Y3Tn7oXcL6m`k;YhtOgAM}& zgPS)41DA>@!>1|+hR8Pz4CVTa3=`uR7$z=bU{GgZU|1i>#bCh5z_3Jzfr0ns|NoxH z|NZ}A{qMic4h9CT2nL2PC5#MQtPBiie*OR7y7%w@yT||kH)Jqk&|}bN&}PtK&}7hM zNHAkyNL&5)|0x#+hENF}hRrhs85$E984h%>`FTWzfx$1OyM!@yv%Fn~Q_(!^&RlQVxYB$>TpIHT+Az-J?I;O+HK46n@3GcYhQ zFf*_)urjbSa4>K~!$E~XgF%`>hCz-&9<;jEhk@a-00Tqc`jt!v0vQ-yonmIVD$Kxe z`vD^Zt2YBfX)rT`{sRVviUr3=G?53o?LqqxFbGWB_{(F0*PjXP`&bt!`F&+r+ZOcX zNgcC;!WOLq6Zl@vn844(&?D^G;C!UyiCp*JE2p0Pk(kKvPw&JwMjeecjLR18V|=jx zBV)^rnSXbbs{gH6c=PX{-+TTnS#zB6NX<#cPZ6IP1HQ%bu8<63W;m7Ou%I?vfZ?8e zx`S|{GQ*@7wGDrpbTf<|GdJWs7iOq3bH4C#25&=QXljDpI#~wg+qIy2j1`;$1QKG<7Y+$&|@Q=X(v`+`50fIr3f*cH>AY}l}>@kQi zFff2tHG$>@LEZ;t6(i7bz@RL{z`zi|z`zg%N*bWGPz?KC)HfKft7mu>R?m?Btgb;X zzK+56a4mziNNvOH;F^Y|P1Ou7i>ewtwp22F*-_C@vay_D?YuIElE%`8X;CE&SG9^6 z-hC=;n6$Z|Aul(-L0vJgA?kci!~BYDh7Q@RhB^B(7!qUB8-l;5Hazc7Vdzy$ZdkE9 zv0H=IEM?eT5k^!H)VedyKTU+l?H#Ol#7b-G(WZ?(9;+%4rL8ZULu7$lqQF@Ion!*-QJ zr1LA+c#qv)|9$lRy#j-Sy+RGb*&@$IwZ$05or{l8e4G@Way(T%y*A@`CVRF`PI_*8 z-n{(P1?vh|6wN5EFNrNREc;t_puDm|tMXE1VHHR9v}&1}nKit%m9=+kE$X`KuGLA@ z2h}&%uc<#<|E&IdJ!o+#1H%rki9+ASqh(YTI+W+DRcWf|EZ5^O^foRv?J#e%EVA~s zm9W3&(B`D+a?sV^{gQ{b*B)L7Rf#hA4#jg_lN5i`*D>JoE6@*d>%=9?GXDX1%yE!tk> zSNyQJu;gz^YbjS*PZ?)-W^3ufJdarv6*~pZfpx(>P}f6o|%39+WvL z->W2}+Ms?w^O5!|-P`&*4O@)uO<$XJT1Zy}nERw)-CqI2U*+=u+_6kfWhH!j^|mil~f?jk1lFjQJFEJa%SWM!ZSFpM-;n z%}Gwl|B|<-p$23s{dF2zy3JeK5k9^_kv*})nbJb4pN__yJh+18x$TXnkv_->{NZF zCahts>8%x`ou-qeo2i$mA8O!isB0u_{Kfd9$!gO^vk-G-i}w~gEbFWst(j~N*i_q^ z*uA!!Zy)Hu=(yf7+KJV9t#h!;cbA#2R&F=l%G`xK)_Ayh-u5i?V)dTxt>Lr7$IbVO zZ@k|tzheL2{!IZKfjxozL6d@ngC_+GhV+NkHvih=3Wlze)%H7K=%2$+MFK4STtw^qz zP_eh-WrawkLuFRwl*)aT&nx+>%&X$6TB}x9U99?6B~@)#omAagy}bHl_3LV$8l4)S zn(UgcniVxiYaZA9uaT}buMMirscoxWP`k7CV(rUXhC1;&-8$#Gh`QXm#=5C>E9!RF zovpi9_r8vyUZ7sSUa#J^-n%}cKDEB6zP7%zeoFnk`W5vX>vz>3sy|hKvHnK=z4|Bh zFYDjdf2{vn|D*nQ{acc?X}J8Q6L9?-1R(${{ZJxRx2_m%D>Jq!KY`n3i!hC2;I zjNTfx7)zS0HL*86ZyIOz+N{i+(W28r&~mz^wAFkoMe9Y@N;V5^#YhexdEAx|~0 zPOmp!e%|Z71$+v8F8JvC_WHi|_3&Hj$LJs9zujLbASd8xfLvf%;JHB6pqijdK^noe z!Iy&7LaIW}hA4yeU7q? zZjZhYEg6#(vnu9Oj8$x7?D1H>xRAJ+arfg?;xppc#D9o4NhnX)neZpUF0mo;U?NkJ zb5e8C;Uwl{r{u=u{mK85ZBi;zwx@haF-Xl#U77kMRUs`pZCcueG_G`)^t$xz=^xTH zG7>XpWL(JL$h6Na&0LfDC{rTKH>){oN7kDx#q7}R&g?ze@3WP1LUY=4cICXzk4wm_oLxiGJAX5rz& zcZK3bjzw8TQ;PN!JuTubHZ6`VZY^F@e7X2nu|kPkNlwY6lI9RLveC2xO{^bSb6UsM~pD%x3&R3yZ;Zu=S(NVFi;z-5A zivJZdl@^tum4%hPl`AWcR6eNuT`5*&P~}yXT2)syqiSQ-sjA0Sf2u^Pb*f#eW2#H4 zyQ>#f@2Eas{j~abwP1}}jZIBpO*U!Pu|UtdvQU*BHeS3k9WPW|HgmG$fEx7P2j zKUjaP{&f9?`YZJ}>+jY-tbbDfqW*RLyZVpypX=M+N^ z|7OM`N*9=%4|Fu)GvE6d`j|dc>Btq!7MAN;m!S!22<~F z2HVw<4MzW?8$8|O81~gCG@MRYIjw`+O^dT%Q|Wp{(09jlzy*mxY||6 z@Se54VP-}>!`4mp3|dd>8D9LUKV>V-u;gbl!zsb*4D&Qn7+cubnPh(MVS2;Y!W?ia zieMr8^pPxshBH4ZXWjr?Mplk`uuzkHihsn@K_|!(EeRe zfjdO_K+$%Q1M!Mt4wVzd71G!xA6#sbO2}ZAS#Z5W_Q81}c?RZ%3Jfa7N(Y{vP-gg_ zsOq5lPpyG}u7*RIoz?-NN7@YY+I1bS=;+Y*_8*&CvV8r=hss zuR&Efpdov4V1s}`FvHy)Aq}%_!x$v@g*PZ#MKUyQjA~$0iD77*7~8P#XB@+Xm;{Cs zI};ns1(O*zCZ#lRu1jqY`JBeE(lDc8PG%;<@mX073`esYlwRaCaIoYx^h)G6^r{v# zJk=^}DA6ctkdiBI*uh=Wp!cz)A>mvpgVEx$hPM3j1~=mhhKP3+4T~34HVArEHT1r! zYG7)rW{4B0Y3Q9=)6gJT+o0A`+fekjmLbfyuHoq7I)<$u>KJ5A>KQ)g)-xE+t8X}e zq`u+w!+HjVuk{V5{?$J@!pp$a<<3y@VkX1yXa5*tT8bGvu773R(A2_|Q7Om#=E))E z4B2Omlt$QO`msBw~Bu(w=B zfop>-gT-sP1_e!p1G6#}9U9gsF|7KieBh&nYJ*XeT7%nJbp{S8%>%(1S_fEmXfyoa z&~4y|);l1)PQT$BqhUi|n32QI)y54WjHU-{!_6E**P1(2Fk2pIjkI!zU2lEhE{pAf z=aF^?qSx6oNH94v{10(z_^`~G;oNtZh6;DLhKp0(8+JePXb{))YB*8u-LP@LPs3JL zKZb3d{tPp_0~j1n2R2OP2yQ5F4rw@89omq&F^s|QNjO8ONMu8bV^l*@b~Jil6%E2Ul?>(IDjU?Rs~DtzRW-O4S2N6eR?Q$2 zQq!Gyu z(!qKL*<1AutKQT%aQ&=ju=-!$bB~2V%UhCRagG_oGu0@DHJQx}&3zjgoF$$xFs+kf zv||Znbb2s}@d4izMvXKHrk4HjOcuXZGJW{*jp@PyH|B<$Gnf;4-ZCpJb75H_G>_%S z!JjM*i^5qImTqUAuv?OC!S!0U3$GuuIlT2|k2t@T-JxBPLxHoO3@*~B9dZNST*y`EPfMxSrO^9_6#jv4a@eA>>R zkYp>MAaq3F!B20&2SQf`7lg$NF&ua$*yx;|kNW$#NA`a2Yq7M|eh(37fD)wN_ z4Y7vQ9B~CcMu`Orr%5Pj9cJR+H}I7Uig^;f9}js4OOl(b|XbRLya*pMjeFzKJ{ z0?j#c2a2rZ8PadcJ1|!&I5 z#?0YtxH-c;CX0smYb_f7MOZShu~;!Mt+zVxHqzSR7>kWV`+A!OohVy|%`A2fBJ1rO z{37ieVwoKnY}Pt7JP&hhh-PqNn6lETp*P5x!TGl{!=}Y94cEL~8P(h`Z=-ZII#kb*Em>z81L!xKXo-spxhd7@o5hH`t~XH+UW`X5dsVVW_GvVVHfZq#@I!wBbolDFf$| z(uQl6Wer|^Wev#>%NP`l%NgpL%NwdMl{1JdR5bYKR4}M)uV9$OP{}aEqq4!Izmg&S zN+pA?L{&p;R8>RX>?($rx2hUGNK`kpg;qB#pHSTpa;lo4o2iDu%d&=HLS9Wn%%U2G z^;c>dT3Kru9+=cN>`AI+km|2(__4FLA?$H2g9&#XL%(4iLq=F#!=B2zhThqA4L5h! zF)X}Q*YNOr9m8zl`i8T*^$itn^$fFP>l;jp>lxhI>lx0@tZz8Es=mQyS3QI3iTZ}7 zEAvw&F)4%$LbN}lXFJoc=)k!J~WEqYN8G`GkzLg0K zs`@qHI_mMdoeYzbZiDNpDpeK616c`l>Qj}zd!t3yv6AekL!d&Sbdl!gs-9HXo?&WZ3S> z&v0cSzd+M3{ssGk1spop3V`ZThkZ$c2bA}L>(mEzWkL=4m%(+b!}&g81*^B*9o!ulEG*?T4>S6}5 zGARY=JK#Fm!E&Ya1AhS-P~Ci>>App99VE$JZ8YlG{46AhgMEi-gL zZ2*U^O5FylSCF>A$J2Ta-)!{3Z2}K@1BR&+3_xuIhMZzUhObY+Z3G6(6Gjc6ER8{J zg#$gZCJx#CCZINhgIlrb0lTN*w!;CZlV%QH*5;r#1Vf^{MMLgH3vgSaq15s~>vM3M z;z0drD~BRmYf#(5!A{Y}L1eNGsEyGutIXEH^98uA(NK2U?!YG-dr+IBVS~Iw!}|#i z;I@Zmv15bc6L1@Z;m}d1h72=jP+O!SO5CMkNxKWEO~P}aNEh*G`>N1N<6p?bvYn` zp>JIRxGi-)Be5aqD5Om#Tbsm?d;`+9TG^Z2u>3i=jl~c-E2V++Go-C0u{f2X_!qd% z#c+Ok8pFB2khWLWiu4ASzu-0)!=)t|3`{@3Z83&Vb21q=zRLu)$r`pz$YS{W0Ngff z;BLrnxO5KEM!TJr!yvl@+*V@{4a{XYH3!^gV_0mI$8fAB58QSu<+GrfWFfQP_}r2Hdt|_#9Zo@Mto)jmN+vR@~qkRt#$EH85N) zW@r#D0k!!U4)v8ZG@UL1wfz_zol6;P>%eWmhP+Ru4GXo)Ky5(=n>l3+i!OuPgbi~X z${7sHz-_~Z=KJLh4#E|nHe$oWii(CKtH5nVhBZ8u4eMteW#wvycJFFXo3bHpRyD(=1K_r0!x8S924{mBa2wO7yoTZG zOmJJX;q9H8hMK?NHYdY;o7x7WXh_>La#}6JyG^y=HmKOE+J==Zb>Oz>IrF-PxBy6- zw5qPzG2o^NE`Rm@A`(D zf5B~ChFAaVS1rwFym82nWk!H5`+`qgTn!%2c^JMP8BGL?9 z4`m&CRw*<@mtI^h%@Q^#bjNkU%|#qrVLpp3OIQh_f|wxOv&4fg#!2q2ZNn z151_zgUv&yhRgo04K-Wc8=eVzH5^ItVK}wcuVK}jfCd@G;D#Gsp$t;(-6 zlM5RrZ7gD#{h^p)lR_!OddD(`yx?+%Gocj?%RDL>?rB#wg#E8#_;RS4VP07cgRN9; z!>+Zp4XlQB3_MHf7!I)2HwZ`8H~g7Z&rp1(zMZ z8P+izVz|ceis2uFAfpPSIinY23}YT+1LGvd#f)1Rk1<|je9riTk%LKsNrTCP$%84J zDUGR=sfB4W(;}vgO#7M6GTml+$@HCxm06fsfmxT?n%RRnlsSnxpSha3gLw+`Lguy1 zJDHC%Uu3?^{F3<#XgZUDVbZJI2XD{IX3SW~{w4c0qa}AW!}B9@3_+XO8Q#8QWVlkx zz|gD6z>o}@xq{4NK}eQxu5h6R(%)5$42?iLkwKyk3^oiF3?>W)3_1)N3@Qu?3^EK7 z3?d8y3_J`RpuKGj4x6NN8CNrSGN>_#GVn5RGO#nSF|abQFfcPPF@UGb9Mbfi*a8?$ z8Mqm^7&sX?u&6jL{hVJ@Uk#jAx<`OLU?bDU-K zVO3x;V{Tyj#MlB>!DaMAEmCfgc!p3IpBDEfj$>@@tTHUd%ymp38Joc>J{mq%^OBn` z9xvq2r^>yK<1m{Gs}ze7b1l;cM$lQh3=U5WZ>u@WO%#t7^5IkFUdwR^L&ZJAYijm# zec};9o_q@2t2p+vIkJkg=rdO{y<=F1hC5*s7(Rqe0Ew}l zxYNp_b7c{8g3(cCh2=9?6qZY{q;zC6Ys9oOGca6WK5?g&xg&Whv&7UT%nV9@nPm>F zW`4l5lbOf=II}db07LVENeo|h&SFwH>C2Llrp8+K;19zV(O{+>4zHLCo^!LdoxH*r z(YAxBBUu#W4%QB_My4YQ8q5;K`790guB;Obzca2%_`bN z+?p9LZ1!Y&^ZEx&Uoi~B%_Q4Ka`%fu0Hz}ynJky*~7pYejr14fJVBVaRZ3Z60DI(MD1 z?)M}{gWc>*C+@T|t&u5WlF=7sG6~IK3Rr)JslnqvlSJSwrax~lGrcKRW$y8M#V|!; z4r9)&enyoi&P+W!e=`OAS-?0cCXI2*%3q8rs}?XB{EuW>lfc3><8C(7pVRM{B-FT> zk0`8QI#BzSso`cU^QC-$#&zx=8Q<})W6WT%XZjKRn5n>a7o(h57UQ~Yj~FvtDwz^O zoS2M4UoeW;yD@RZpJ0-yc?fnNOV~LkQ25>ua$;Qj%Ynh^{5D2V8c;ZSmSs=LY{myn zmQ0|uutRPu3n-j9y2_a)0;^aGY_nK3tb$l1^i#pp#Ol%7u9 zVP&54OqB`b?mwr)m_X*tD*wW0kv@m9XXkIm8H#yKOD1J81@y8rrF{2cy7O}#lS$|c zCI{0xCQ$r5S<1|;H{k(;QRof^w<%_f5w-i6&Ybze+>z|c_-|7&V@u#hu-#{3FEbqw z-^R43q?kE_(~;%G9aa{Qn>PHiVfk_T8jFJb7p5(dPZ{d6Y#6W1@&l(aH`P+cFoPn- zjH~WUd!`96TcpondQeydjt@|Jc=Nh~d4sA8a|XkHW`=xEmJ{CQOg4M1m=4tb1-rZ9 z=3OS6NzzOu*AFp*($#_5Ql>S(rZ8=Z)MZ+-C7tPu#ujk;SaEDJ(~GHxKyl8z@Y))N z8}V$6H5Z&21-NCwX**-$T*g~#x)@6)Yk<=xC_Tw6&tO`zB6fh?i%sN$g?< zh3`C@J&eB=xHGDF1vBor7{Qdo>BwxOlfwAN%7f9tRE%lCwKq&PX4y;y@$yU`S{E`g z985kJY|43|Rys_8= zbWR?aU(k4mG2w7D(}R8I7&Z7`GjgnPVLJ0}CD^Pr=X04DTsAR*;B+0O_nV?lZ9Npls=Q6GNwFexJZ1b`iViY79k9lur1eNWe@?cBk zQbtfYYa!*qbYR6DrYFs1Of^eQz~!HSt`KvLEC;we%(yDfY*UcN+|{Q8s!Jhp86VDc zC4W6UZbf7xnIgU}WZJMTiHV~zmFdTmnM@jWSC}H&4uIX$!h4_TNunTg@2Ic<^sxC|yHs54glhDEpiVsko%Ai!s z3@Te|WI34XvQ)rzw8al2ri!Y!Omh}>GxBWBW9-QhXX03MgsJ6Z4O2v$1=9njolI+f z*)W6Z8&F(<%mTGdK;_syl`zH|ixU_ddJMt!h{wZ8j9+f2Gcx${FuB~=z%*rL6%&t& z0h55)8gRXqVC2dyQT(3ihL97pPvkP@eFl|`pn4aS_CaP}$=3(9dzfTu5}8gM289Qx zuIFR6nKYZJg?Bqsjs0D4c?fD#fa;kmv)Gv5=({s4SY6AQF)^3%Osq5024->Q3oZ?e z?|A(f&q@Ad1nJXB4P^Qw!OWDST?S6uf266L9RE*i6yqDQ)?gqvM>8ly-UUY)% zY;e85ehQ=9$xv|l2eO~X-<@g7w|9&OR>UyX$bMh~mm6xcnbydBVglv4Thc9zE;5Ii zWls7sgTiZuVjlAamjq^xpD&nFBp)$pEZ}68(NAUmWA%e6U_B2rsO_`j*ko{92o$y; zeOqsvhxWesJye-BEfn~dJkj6_68n1WS(MDQCP9Qr;CK-@J*TWvV0v`? z062~9aL8g}P^x8;m@2}=qV3NFY6D!D_=M@h$zmp*D~mvF943b)+Zl3YG8x2vM>B%T z2~ZvUOtzo#jKFioA8h>0p!NvEW@Y9x?=<1%PD7v}xGfH9XMxInP?`!qpUH43KOU6F zm_colI@tuqE3?iq_IO2s@+XVPZ)@fgGrXBW<g%2p)SQjs1 z*u$E{2r4IUJZED0v>|{o%%F?W;Qvl0P@Dcp$|5ESwb|fy5U6YfwPQei0gp&E7La*6 zojP`w3eb8-H>!I1DY0NkE!_`Qo+Cd!9#(Ux>ZkD^8A%-}YRtra*9 zWR}lhZnzoC+>tB_ZU=$-BL`|(nGUDyV(|N{22R_cy337u0b|qD#f*DOioxx1P(K5d zf6v4QGi%gcVFtB*w!G?Q28A7{4`Y$;!j!bojIp9Bm(k&4G83qs#Iz@u(JU^CaRakD z6DY5N`V%+K$uoi4=pa9|1R65;c->;kV6X@Gr9gTA!qqy)eFlY$CD)ypZk*$1e)Fh} zan0HYMo>GyhwT89Moc`Di=70ML3uAz#8*XTkpDpa2T)(;2U|aL&+P)nLg}Xr3SV>> zL#7EbZBRYJWOjBl;}L}gjG#8!g3cREJ%9HyNlcvrt{Xt%xo6r0W{|%?aSRHNOAPlI zSt_&{H!x3U)Hsv|u4CO)=Q4`@u4cS4OAOrB*^!hEZo`1`Feu+ks7W((bZut>#W|=i zaOO-2OnY`5WwPTs&NwBtgYm*d7A67RCZ;Ee6PechvH|BaiNIe> zHD<=3uw??ZBfxoDNrZ9FV;06Y2OJr%%xVMG|IBVv+!%it`Z2oLMS$9w%pyHaOb$&! zObiqMF@efFP`e0J=7IbIO1Gdkd4SwL#u>Zkf&G7g?+(+e;-ie9e&z#R2BtICZA_qY z4AiFswUt2qA5d8g>ND&q`OLII)rDC|gq^YLuO!2f6eXq&Q`UmY6}CIlJWLJ0g_uF* z5vaWdOVgn82GouP(I5RArUSK2L48Asz$)ey$FdoJ8ul@yoUvtuim@={domtso6ZRG52*hR@;|IR z0=I(#t3YbN{U1;}NFs0+^P`uhjBG+a;4<;RiWug$*O80~Pdym-uo{8G1(a_L2WKjzvxs*A|uC|BaEOvl*DgomK9Aq znM7nSg8T&@lK{mjs2#&l5zPWB%NCry1nPq_u!NN{g4#O^uH`V#SyauKp|k|lS7ic~ zgDGdGGJ*Qrp#1UY^fge~1MZ7~^6&+h1Qt-6V@abC!>y6N!`Jk-;kmGmlZ=Lt1H9N4}J`fYa<%w6(lzFPsn7bTUF4oVqzJ?4TWk3 zf9pDiy0i5w7V4Da7sNb-2SI=+NFL za^P@+#DdO3nTEVw3J&W`R1cWn)NI(XK(Ap*v+)6!DvJY0YHS&7nw=Q-w7N6I)c7#C z#|JW;R10eeIvvF@*)^V_yf2x-W`24@MPYV>^8Y-BMNUNxXUs|)eqJkYV3DtC2S17s5@H1TeZrt7ySPy3<{eDUM|T5h6B=|FmkXiQ*3A~QUQh4fftLk95!Ck z1%=rGhcFX{vZdyruxpSDwrhB_#t{^T4c$>54f|JmgTk`GPdBJRJT?>*rVMqx(G15r z<3M4{z~GR=@cC;RD2y8z_;MIJbMnAp?R%_`L(DD%mPY0lxxOe-doFgrwuvLr}uV-dI< z#v0J_oz*~R2HT927VImcZ?XqGtmJ5jl;TV{yo>XJY&4fZ#&50*3ubc%9Jl5vxOJN+ z;AS=NgG17M2Ge%)IRr)XGkp8S-_S5i;J^nw zFCqz-CW$WaH57ZW^t>3utz2=2m)sH#msUzNOmUYyp!ZZ#VL_ABf#>ql2`qc18@@)$ zH0=B)qYyAzcENUixdrb}%PD+MmuEQ3tl&^EUxDF)l_G=mHAM!+LM4X}+{yuiVXw7TL-A#;hNoHD z4Z=)12Y%1cIWSjW*Wt%e-3G20y@tyl^%{cO^&Q$|3>@+{8aQye89IdBGGqwNGdjS` zWXzB>)%ZZ3hKYmbZj*)yzNQX~@0&U#7MeAjWHN8KHQD^YWEG2sFIy}Q{C2TqSaHSj zz|Ul>1MfarIkY!gA2`5o<1lBg4TFTXZG+JcTZT6-b`H)L?GBj7+B+P7VbAcX*r8$j zKL-Y}PDch_VJC(;bDSCusyZ{&u5)fUYv$6hX`c&&wwr5%=~>r?OTlj7-9!80-5I!_ zx;H$_^l0#Z=fU7s{`)aZs`YP3{q4`NyCR@r;@1F%7lnZg``!jN2xSH_JbfJ0U=kPHz;Gj&!6PuF zf$LNVgS%5G!{42u4BCca4HuV(F}#-zXK0=r-q6Dl(ZF3B(eUp>L_elzyzvdUE8-hA zKaOws;+w!QcY8v^T7|?0<<3L~hL4F2P7z5AFZU%id{#+jNa{*vFn*uhkQ$uQ@M~KN z!w1RK2Dh42hCg>x83gUq8d~P3HH7|8V`zy>Z{XjX-tb*2gTcBYqv7V242DYvnGGsE znGF}7WiniK$YL;>mBsM>m*g;*{>*7`@XckIzaY0E z;BziRh-+TM%4vBFfzR_AJk0YMCbs1_XkN`{5L7N;a4#reIJ2jKVLnG;!~Wnx2Hkmu z49}kzHoP?`YOt#;Vz_glh~Wr(F~c|C;)bHh#S9iViW}TyN*LzFmoV5aDq&E4Qo<0T zTH0_jwUnW4X=y{plTwC@N@Wc331tjMbITe$Z?~&pI8@%S^H(`T zno$KqNM=Pt%lwLlZ&xZBR&rJ{%(bm-xL8oh;I_E3;n$VQhIg!04N7KJ4O3F98eFGT zHJBc%YDj)x#c*D_nxVqIx*@KpnxSbnoRKpPZwWi^$cr8PtWo<)VR4v1_s#=EcGiwKj52)iazsUC&T+rM@BIPCY~Q z<9dcOFY6nE-q$nmf2nU^{87&UTBFnPx4uE}HVL1BL5BegXUG=~ajyL4F1KnXeKY z2B5G2g$XEZKw$(5D^Qq$!wwXNps)mmDJX11zk%DP@0QNC5R^w6+zJZ7c}DYUe#3;e zdhQzL922k1ZVqX%2V?+|e{}14@2V4e$$|6vi1S*?uRm6kJDh5!Qb;cyFVb1Yb zhMSSG49%}&8fMnSG|2MCfXX^>ndiDYilNIh3S1VZq(nCS{Sd*xRT}{=E1M>VH@uS# zZ@92LtU=Q-tl`hj&<1y>P;eRR5g5Y2a3i?EI4&4m1`A~dHSB#G$nd-{kYU2tfQDTa z0Su|X{Tn9K`ZL)72bbjy>WqF3$&J1Z%8b4ZnGHS+=KsAJdTYHwbwI@mpx@WjL1VXxL#~F&fyAlC z49rZ%2ZHmA4usq?bYOQgY{=bcz|byZZ~#;%U;e0ffHOvq;rmftP@UZXs=I}lbR3>! zX*U#J)&kY-2M#aRJkY_d39j>lZ>b-Ma8zedTA|jkhEMIluM$-TzS}AXo;j#AbSzV5 z_`t2qpirpPAbCykz+EfFhWz;o2hK7pBz#YoZ+L%Nj$ymL+yTGIvIjtIk*|?52blLt zH$0P15F zI-sS({3oWLc~8$T<_$YjSvnqHU}500VZEWVoOOk_5Sv9>Et^Np3$}vZVD^HU``85* zXmWg5Foom7?Ef4A6S6oR>aKDIq&jd3xUS|(kQL)*c-O#Pu1r%P_3n`GMZ1EOzaM>!Ba70er!K6d{ z!Q_wP4UeKE6cmm~IQZyFE=Zdu>5%_lvLQ7?%E9xZl!KI&w8D)=(g{u6G76F z$TV=d$}UJ*D|=w2sN8{@wQ>nxp2|7=^p$sbu~nYopsa#JbE`sw-dlwOhe8w^?Dr@h zSfZ@N@Tp6QLH(0bgL9-ZgZlyH1BU7<2blU)8g_kAVTg!UZMc0<)xkwW&0$iXn#0jA zY6tE_sWaR>pzg3!O~awKN8^CXCyj>n;hGJydo>T_Drp^9(5}U>?TyxfHG$d;t=qI2 z?4@-WZq@5Fgg((Zu+c-;;oTbD1};Ip2DVZ?hDSH_8s^yOH<&KaZ&=H0aDX}8fWhLF z0fU#WVT0ua!v?m`h721*jU3E&7&*+8GCpv<#`wUed&UP|IG8l-T4dso&SHAtU8?DU zfa9hNy&7f?i#yF4CciRci1jva_`lkmp_<2{;e3w8f!}8=8W?mf9q#s6HcWhD$sp@v zb)bH=Rl`m$YloAW)(6&~uy)8%w{iH_YQvEB#D-z9ldZ$n1-1uf|FdNXkFh)OY^Pm= zr?@>sV~Kr3_eJ}LOg#q%scwgcxz8OMK07-$NH1_~5dGuW@G#top?n+#0Gq-5ZJ)xi^^q zc5gTt?9rgP#)Bb@#k0Xb#FLvKh>L(j4xhQJ>|47WXl8?uPkvUip{? z{;U`V#Vs)nAOFTMG`hz&oSP8aaO-9)!&0TV2A%AT|0`t-tBG;xfNW4jB=+nwz*qxElFmG7~gXNP9hEByyh6!<*48F57 z8}?t%WOyN*)o|25t0A&Gt6|}>EQa}v*$sg<*$g|&vKg*!$YxmjDw{z|C5Is?HmAXF zS`Neeb2$vo?70nI_PGqK<+%*S>v9>UJk4dukjZO!7nH}K(V52}yg!d&n? zruh7ZZIkmEWKQHW82`y<_^n^SP?}u8uwYsNL(Rzo297@k4X%2H4aNzD4HqXCHYgk} zY>@v_*l zhOfRA4Vgt14V}{}8bWtfG@Q9x!SIful3}-UWrML>B|}(7WrK28CBvN6l@0sPR5tXy zt!!Z7t71^st7`b{Th)-2TgA}bQ^gRrx~k#S$ts4I&#M?VvQ~rEO*Ys$R5vikRx=b; zRx@->t!D7vSk18YOm)MF=hY1@Of?LzWNI3InAJ3_52#__&#GwK8?4Y4b08)odSZK%Fj z+raj;w!z{@ZG#YZ9m5paI)=Uabqu|ZbquV*bqp#gbq%jd>KGzg>lkvU)-h-i>lxS|)Hh6fQr~dqMSa7HH}wr#ALli0orPY_u!D+W4bTuR`gVHo8ZL8^3fzmoC%`@yj z1IYuRybzXA$pFe5yOk?Jd8Og>-3kU!-szlH!2rrjUwkVVKzR$4$L8Dv=Q&W`WAM)@ zX8`5Ja=CJF-V8cl*5I_ftl@qgB=3Uq@L}dMaGn<40M6qL;?boH@&=_0puBH-v!uaw zZAk-5V+jMOYyg!Jp}&e7&Yl669Sx@nAZ1Cja4|#r6L1*=Dr-PxPQzK1q6WDyg$?qD z3mGm=1eZ+=u6l)_vI<;gfyypW8TMPhpuy-*euMOhd_PL-k6jYXi%G8F$*c?z9+W;zSL1pgFGDsObpD~+Z z;W2R8%y7&<3shD!?7yDb;4?e3p+7FOp+hmV!TbrhY;V|=kLvzI9R;eZRQ4t^94Su()nVYejC)x^!>srOhG!B94DT++Gi>gP zXE1e+Zz%m8#{jAeb+h9dmMFzFfa=I|6Ji+}++!I&{e{$_pt=-Pr)pk}W&qW(PWI8@ zIu}&;g6iN>fhY#$Basag%Oe>MX+<_{z6+_d?>a>=huaw z!-SkLh6vd(P~8t|1Ay8B4YKz_7j+ko0QCq;a~ZJwv;-VG{(-VJ)YAZ;R0+embaCj+Rh6w2b+ps~iI;Y6?p zxGhz*$ejVywhH{<#_(;L8$+h88^h|yt_*uRT^r`=yE6D*bzwMD<xSc*)(+dbtR3oCTRF)1STRg` zW7z;|i!$h1Hh|iu=W;9#RP$IcFsv~LwOt)RZP>+~W)3|XW(WL_n>M^nHEl>|F$J}G z8(uh=9Qb(8_`tOqmQw9u7=>`p}nGGC_ z7w9|8wb5^QbVKg|Td5wX?S0_w8eN8s9=Z)7Pjnh?)$2Hb+UTv@v>iZg_N{NU8s@ia zIpip5f!g#A>%%o2KyCb*9u0;aY8nmK52!obj#76x{6+1+#6C3#XAL!mTL)De!lG3h zc6?Dez|g0{V5qLb;Bi2i!6j1JLH!fBkI?|?Yk>M32SXGY^xrBpG`A{%`XmpYZuJE4gah}8bmG%H^`(5Gl>5cQec@Zuzn?=@Ty)Qp;uHOL3K5M z!X^j)4JOz4CalZm3y@*tb7-2zy8zS&)IG?233TDBLSLTo#_`HKjX1_1fxsFGSTK?sX4I(^@Qa2YcIL$R>ILE}m z5Xa5H@Q;OoVI3<2Lmd+X!#ySjhAc(~2GAYUUJMKj-V6*3+ZY%a{1_M*R2Uc-^cWZz zxEL51K$DgXkO@o%&>~}f1_lPuAyS|-z_u_jFwA3MV8{dA3CPI6aG!~R;XD%qLk$xH zLoE{n!+#bAhInoUhHIdiPLLr(7;`c3FmQwS3cz*?fX-(F?Fe84?Q&yBg3mc28Qppj12E=85v&NGBUgY zvHKVp{`E63{F}$X@Xwurp~jzq;h!=C!#|K-VFre891INaI2jnqSQr?pSQr?-u`n=L zF)=VyF+tLe9U}w7ECvP!A81+uEk;LAC)^B>gU6H@7#Q3b7#Kj8!P_u0Fvu`6FxW9M zFo1451f|6~76yiYoD2;AI2ahdb1*Rc7iM6%FUY{KN1cJ8&Yyvy%$FCe#q z{Lsh1@S=}_;lC{-!^=JfhW8-0JR`$fTSkWWwu}sS1St<;UIsxh6abSTwg3YN@-y%= z@G!zyGtPHfEAh!V5tCg(Xj!vrj7sxX~B*E z*MF(HIy+h%$hlq zF)b~PjRj<+j5z}%1E@4(0Fx|W9%%0zGXom~sDuY8LdA>>EDW3sJg9LT9)%pWsi5{Wz{Wh zikdW4)_q^+AA_={pAw1nHC2xaJ|-ClhS_MS_VAQ^zHw{S;j`=b=gRfBw9aqn;n7eH zvoQ|*nDnTirYf->T|LAt5)7bAQ$fB%E(tin?uEn$3j?Se=U@QU{h+(`z*6881lrPw zEGGeOGZ7~bQ3WDF;R~|~Vhaz0O3wrai=GJ#Aw3fqN_r+R%$zxs5rmD5jhR6-2><{8 zpV8RZnDKSs4#wu!flMI&pa1_kkTJ-728KzDD$LthJlJlsXL0`K>fw>$Tg`7JctR*t z%P*c-btSPTOQ%6v*UH`X1p3!|{U(;P?Di%GK zpRB@ccG!yB7dxDDRCTU$IqNFpp6Rj0^S771PowXCzu*4Gff+%wgHMKh4V4Xdib#oU zikcI>Ip%om^|;6JuM<8beoT6o{37LU>iM)i>B};@Gjp@NvXygwJQf6sDD}iwf-;k^i5DmKtdTpLQdEP#XBg+fy6*;P#OTS zL1G{_NDRaViGkQ4F%TOh#=-!C3=HgG$iTqO06L>poSB2XZEUAaJZi2wtGvGF&JqYCCy zKShoUUL@!yjFyP4Ejgt*@DHt;3+gR9H7BDw4J1~1NuVk`LnCj!F@?J(*GFUWCI99-k zcM5kUryWNO#};-Lwlf@a|D^qm_}}+`+5fix_5Wx8-~a!_|C|5s{=f16+W))%PyGM> z?KXEWn;N$q=LHsLRxXx!=EF>7%+<^r7*iR~F`W8$Kx93868Ah-WiAW$J?u}}|Fd3X zEoQsNx|~&>)suA-%k$i=b`#Z)$#99^6}iQ8hs%qnoYR*rij|KwnJtiII_u28Xa42> z@BBaG|MdTl{y+JD?*GmIAOC;)|LOnh|8M_4{{N5lBd-(Bc798a=j{L3Kd{)aYP0Y# zD>Ln3c=A{8uOg_4=D<)lA%KB_A%VfxF_+<6PI<$wi?yKhcge*JAx$+5(k7J+%LU6A zR*4rgs5uujWK7IuU|`5**wT~1P-mLf(Doy_LH0^w!?t7b4bRWTG9)leG~ z!SHuoSVOH~D1&@+FoPg-P{V`?0SvFS{2NLx`Zi2%_F>rK;N9TM;ni^erbolaE$$6M zGu;?&wz@Vvta52MTkhQ8TI0mVQZ+3gI$lc z!}sG>4Qn~991Q&|4}{FHaCq~~yy2XsxxGwHSmJYBn5o&}=Yzq~YM(s?orurQr~N zL7l;|Lfv7hqIyHq88wFU6>0|>)zl75ysGN(tyPs_xw$ICoL4FiXXmLj7>B4d9OqIw z(0E9>A-Y=G!Ov8=A^3w5L+To(12vgS2d1biIV^vscwpT!MTTYRiU-;?6%Y8mQE>RS zUcsTVM4{obr2+#3gTjJe$K)0E_sKhWhRZWdRgh1Z_eyR-;#N6^+YNFD*nH&{Jd~7U z$apT>Fm0>sgUl9Lh5Ny>4?Zc&CM^0Q)9~u3Ou~ujG6|MhG7GG1Wg1Qj$Rs>|B7LBB zr?kSlK52!h6zPO^E9nKsg3=8!FQgb44oE$ao*~7su0Sebi>DNWt}^H>Xq@SfA@g$` zgTd=s2CL^a4LQ%N8`iz9VtDbnl7WGtlHmb=1w)Z?Il}_0vWC#mQij^%5(bv3#SPbX z7BM_}SlA%KTgVV=UC^*HC!gWfg1iR48@UYZLb(h_{c;#A`?4ECE@U-uiDotU#AGt? zEz4+d{FL5s%ORcN?8LMN-lwSy6Rc7hJSU|v=)Fm9F!4xk2waxLP|cRquskD?;p~|N zhDSyT40mV6Gi+mtXGkfCW4L!WmO;ihwn21X48viA7zWv;(G1ek(GA-sMKQeKj%rxZ z7TNHTDUxA#18BG+f?;Pvc*6sx@P_=hu!aQgFoty#LmL7mLmAu_g*3G4gfMXL2xhqG z63lS?gfqw z%Of2dVuT$TR-AQc=;&}@_~YyVItid*@*ew!EtU2TiRShUGrrm}gm1B9m|JXjAl=x` zVcTch18rMu9j=$!GAuW@W%%;b=D?mkHVh06HV%87Z5TeV+c?ZRW6iL0qIH9JxHUt7 ztaZcD$5sbct+HbHS7_C+&(ezFHKP?n(<#e_rpcBLuVXA3cB@%3eEeW>pnJE4Lsy%{ ze^6%yR4qgCSs!C#C=*O++SqE%k_0osgt2j&+APVl@P=iY8iT?tNn>G{$Yt4jDK7D8 z!cGDZ5fM3CDK{}cp)kHUt~53VhFOv?#Uw>C1ZVI)=N9KoV{_2C$fmZ0o8jq4W`=7k zSs1*Nco_~y3NT1#3o~e}XJ(mnT$rIc|JMKIyJQ#w=f!GNjFyW^g<##;`J! zg(3e4sK=(j$iR>Q>aH>H{^w_4dCADI^cFwE4sjNSkI#h|0vp&E9;=EmocH8p;N2v_ zaIBVxVS+TMx5vN`kvtQ$cYxu6YPP_gyz>9Y{{R0U!7us$9*-=e;=|DY=DQCt-2UnO z|Fz;e276`(hWMBA3}Rsh49M7H-g{1sRXW+M|{J?9{Ev9TM@{aDqI{Q4w@ zT-!;|Rq7bR)DYOS!IatIz>5bBQVZ1^R;d{=B)b|i_~aQl>=V{Kkk$BnftZ)b0Wn>z z0|_gI0#*uftGHV+HuR(@KbtK2zhV0;g#+v5-#7@h$X{6hj4ML&80#(b?~El1um3t& z=NmJ8ay-m%{Iep%7n64;eSExZ%PC%jR$Sa4G($@^z-@6~^(fp#YrT7tpqQcb!3+p%;RLgfc@a++B zC_5y4;=kIYCPJm&5l7A`a&|FE*II+PZ-A$3p=lrf)Y2 zCjMm5TJ^%B@)S!$+I9ATj!)bIUNhJilo>u>z_sJ6f_*Rd1@E5U0(Av^3aY2yGCaBE z(J=YQBF-g87z`d>;AU91eQQIDi&BH{HJ*k`OXVNzStYu_>+Gikvya?x2;C{o^p@+Y5z&{0|3`+&(x+hRWS5IsNa!Z|Q#xYj1vF$dy$qc**sR zp<}*jf~eWo6gI8D3}JKL>|uYwG~uZV&w=o@2M#n&;7ho1S-^o|<@;OzrZO(L!Np~; zy_&P3(>@}gJoW3UEk_v-e3r65@PD-igC_g^1evKH7aS9kXvlqd{=l4;TMY9q9x+&| z$6V0M!4hz4$-e_1XWmiB6aDZd{KTIN2l{^~^e-2b;91A2@HO?}tJgmn8rHqnX2{oa zI&dJ&lA+J`WWtG8JPSf~Id9xhWpbEvK!l<6x#k{=kAE5FHvM9V%{_kLSA~hfw+jyr z?65e*pz_|TB6dHU!?ob=41Egf6)Xkp67Em`6~y%N7|gx)d&5ed4}blg7)u{`dcD02jkHv%mjWYW@2!)y2i2P|U($d-?bO+b#e9Kilx;f4dbI z!(y9n|BY4u|94o%&Je2n?SFUspZ{W8IT<=HF*0oU`2W9788d@U{=@%ys?Yx$dUG+@ zt!HD1Nnv4_8N$TSYRbUisPyN*eFrl`!EQ!|cEFfimy`1k)t`TzeH{TLYjB>ntfRQUM6DdXS&UAuq& z=al*LUpDX0f2nQ%|1%3SF$5VgF{qgS|3AHwfnoie|Ns9#`tm>b>Er(zeVh!Y)dCED zhglfzDY7xx>M${sY5o0wr<;*s{g&VVMJE0IpB4A-|8xc^2Hi|?2Hik0hQK*e3_?u8 z3=^Y786GUU#cSf9_s8M9noxpN+m92cUa&f3<_m9mI_J*>hr>)i=G!naY*;GXvhyyZ zPu`V(36U=u1K5k06>hRic-fgTm`uOTe1^sO&yo{S%w>UF{x{sKmwB-E%}*94+5b0A zCNMoXKJjmcs_tKbc4KY_uW*qfJy%8nrvu*@I;zQN3GdQb816GG zJ@~-MYhdT|jiF!TPijy9|06tS|8ALcbVJ^{m&m8hu=I@KF zY=#83$3Fue#4;t^+5cMN(!yU27pn9Rd=uuGGtrUh&Cgj37ao6Ld2uS8#en_bj{s%0 z?*jV%KYwv9XUzC!$^1ZzgSBBAm)U`kDxN0A*Nh4$9fcM!3;h(Cbms4aPw~7r()<3s zxhv0f;>!`Hgc-AhJ{(;Acm2lh{|f8oFi&8YW(m-q%xA&a_UDMu`M+uTnT#LIgSql{ zr7|WITFA&+3jGggd-Zq8BYUPNi*7MKFrM_gapOJ)hu;yBdrJQ?K9`=z5Ycqz$CUL) zm>KWnFjVa1XIpb+4KqXU3tbk|KW2&b}n&8q+3VD{vN z1MhCNHCtGjD>lvkEpuVgpW|0M7$%5Z{2yU##OQEVfI~stT|ndD?Y{@&E*r#1UioJr zH0xhNgdL;W;f)MkCHwy$m@mct;nIJOjK6RH9Prls-SGF2XhUa`hJecZ{~3ymECJ(Qy_5eOxUDWbr(c`#x}GjWyMNXHg76irJ0+a|clfoY$BH@mYz_6! zTpM~TzA-HA(Yny-!nViz(H{#roxgTZXD~9)*u>CKV9v>rbB=k!r&(Ox{pbHXuuK(f z@cyKvuxi5}iS}Qt8{Yi>(%^mkhrz*>{~nyZ{Dq~O=TF0%Q{o32!@oCtVtuBtH~$mE z(KV_LT0DGl4YmIj_D1oQupRqbDx3A+K~7cV#wyvrocaC#=R_+qJ%|tx4VvZ4c;+hq zzjscX89&9`XI#LrM?&Z0fqyqnm@+FJc=^v_{w}7N2S$Gs1T|!@bl>_LDsJ#UEoTKo zNT27Q6X&8CTaJ`5F>t%c6&%)Q+ThRdbJomA#+o$>f4(f*_HTwv`JX8p)-y8*-Bu`w z+Q3-gW%=uBRK)*`v*-WYRlobcC-(h+gTyWW0%{e0F-+g6V0_2nzXsFPA3sVL{LK?s z%b3x_|GR-%>hFY>TBa#`pE4-4U1K}Yb4y3TZo}^b%+4J5{;)BGyr^NGA^hbp2V*4z z!)ZYlg%)>~2cQ3Z`XF|=@(7Gi9OFBHCF9rH&}REuFbN5TJ$gQwYQZu|UQ zpl&58;I@Y8{qbA|1Kz{`?#$$5e3@+b-_C9!qk_q9@eh0V|BGBy%#ag$>2HJc3r3S| z;tZvBdl(8Pr7<>K^O7$(;l^a(d*f3k)6xGg6khyUBis7_OQ0LW{Nox74$6US40A51 z7_4>U*syrV_lXx7|0_4&VF>gy`OnhP#FW6C#9AS?m#N}N25ZB?Nm@&uU;E2Y|DR`v z$aLm_z3-h zRLjo)3ON6J%v`w_JX<1PaplJU4{v4vMkr1A>(Tm=<;UWM>@)TsVs6lSF7`&! ziJ4)}(>D{YP5gWyW`(Z9Jr%J7&v$74V2)#Eh!OC~SoQo@L-XFR6W%@NI`D*zF|g?$ z!v?YY>?^XI7!!Vce$#O6l!}E`Ig5c~{rA1aFBlj$bnpoT_HZf$?iE}h@qi=Y${r!b zvSgIJkBu{9Dea#;q^);hQ@QO9}_UbxYNSHkk!D*@boGR!{)31|NlSo^M6F>@BdvU|NqzNFfwp@GBP}r z{`p_=!T9s%pzs+M~=qh4ih?xHWf36=B!`_vQ46-Z!{a<49 z>;Hji;tYvfe*Ztj{{O$<-T(i2TmJqJlKt~v_9Y|3@;iV2Uo-gqU%mbR|NY+>7`CL{ z_+PU?m|@b_|NrIrSr`;${{6QSVq}n5$HXwX`~Uw-IlW=Q1!{(t@rc?O2BH+TzdyBIGVVd8T*wBcVv?Ur8(^45Ygj=C_-ICPj{ zO@BLMK=flCGfNu=7b6uWlf!I(-B|e;H@xKMD_SxC|0FBNe-cMGvAFcT{coqVjFCam zO~69xz~2jPhkvio)nmKLmi|BFt5c!J!LN$9{>IEzr=Iuza7k` z3?9DK{}NtYWLmKJs_+%lV5V@#9)@N0o&S%_fB5%7wg;niKsv*Nl1V?bTSOTiYzdOf zcvAc?dq>Cr3Ef(ZlDVP`bEdxi^Ci~nuR!A+&a_Uye<$W^{5~-At5QI?`QIl_PyaaF zoWj7fUgh79#?^m!w9WimFy#;P1mm-e3>yDgErQAz9XgHG6^`(+>{)l8$-`Co?-H%I zO!as6{SR5y!rV~P^yNvyw?9%cs{a%sfBsNdB>$D6(^HjU{(O#0YjXZi$Y$m}X%)k; zMn>xIga94>9lr|y_K2GP7t8y}xL~)6U^Kh?{|R3-|E*f|gRy1)4+e*PWpSM=xBi7C z7BjwdyTPz&H^aXLUylBAc+ep#5+cI%W`Z=c%`wrxlV1J)w}(-UAwVRN<-tjH(Jh%d zOfhHtnR4Wd7;mr#{bX!g`hNmT)Gw7y=l?SNFctpLyYP?4I_W=#>MI!bUl;hVR&{r!-O9(zxSM6&s=A5;{St;_P-W3wk$6~@BVtB zb@z9}WkFS+dkhQ)GyXGGAG-8ktn(-0u@1A(12HC#_tC!vpLYMxXnn+*DP7O-q2(USfj||5 z37x(?yG-^m3UF`b^NKS3cVSES_Xh2o61Uc>{&VD#W9T~7_CMj>WWgs__!#D;PGfvA zm+Q|Jj=ld5^ga?zShJpihvneEkTp@v9j#G+zn5?O?{KzSl*fYmuiuBW46Wsr3^iWo zn7*Ig`~OEv&ff+9CrE!kbBWz@a?^Zq*ASjpeQ^W>jPn<&Hg zw@>~D++WS}X`%?@4bjbv4J%6id}s7v_~5;s&)~qn|KB!D|F?g}TLuPZ#{Ue4Cz%e2 zG6~qlonU-ZX2vA4Igas(oHz4}bS;Jn_A~x4T!|LhV(G_FQ0l&0B%F`?tzeP&t6?j)9t$!YTeEZkn?OCpd)_tl0tTDffa$o#6tYrSL8x!`Q zOXxPE^{QD6H)hZH@lAU!KRh!S82?opF#HpiVdUmp|Np@}Awd(}jf^t{KL7aeN|c#Vg8zT!!y<+m z-4;xHnE(7WNDKO^aN1L7*~`!W_-=&KL2?8_x}GSaOJqcfDrVbABVEPxr6?mlo~&m$6{e?;9^<{wO%_ zl-RH~o?+RWE&ncPZDv0FHRJz_d(MpY_y05Wtrlc>;BLxTd2SlRzZz*qgMIqH9KyDX zJ1mV5mXpk8bXc7z{DaT@SA*aAuM2W6O3t`->0is`CdLWxC$TadunR2Es`Vth`7Z5S-`STx}!4ex6Pab|8_8)Vkwb# z_*)Qb$gt+aa^{A$HVUFLasPLieE-eSJCp5#tMm5{f2aI@!NdBaVO1AP!>zs2RR!A_ zQnp(Dbt>s#1hpmYkI673OghE9AY$F`B|&fgC^*#1U)UV<^~lR5e_mX<`kP^03S)zW z;-4Q&>wX)YIms$=U*PYL7iXCc7(ILY;yii`45g-SMRNogJ{fW`{IYoeU*YVB|Ay25{qGU@_P-$T&wrgbeundt z*cc@BSQ#pAe*OPmhk>Da^PB(DHJ|?H`h5AXxb5x#kPpB9cj*88->c5faPNTxLwM4^ z|I3W|8GZ-;`Okgg&;N^|q73ivaWJg@_WFMg%b))bFETJ(c=Y4HQrX}Cd)ovVvOY31 zbiHL@@XGo8|IryH29}+|42>?V3_{O7{@2#{|6i(}iJ?j5_kRP6fB)w$;bCZ#U}E^s z&dBg9;>Z7W%NQ9Jsy_JtE9=XD>AP?KXK#A^|9kbX{|mIf{_lDA`@h*jQ3loUU;ov; zco;Zu{`~)m_t$@?gnR$%yCJdjZ>oYKP%1iz5dH=J4y+WQtpzc@0 zf;oR3YThd@IK1`i4enOf2&;J32OHkX-k5s+x5~SZ3=cMSG2QTN`Q4Bkto~+?FQdc6 zcia=Qng4v?UjMlv?(F*m?30vO#2Wr?P(R2eV0!U)ockTdBex>{?As^y-+{ly?8Kx^ ztPOD%UlJC1a3{2szZ96%`enhIwD&Xk!dMyD52=69(q>J_a(S^}-oNkPUibYwarx&D zkA|q1*XgVad>Z_kuX(={eg8Bhk^*(%Lch*Ru_@WOb%U}zcRFL=3($^{;iv-c^0fud;8#%;LirDQ;7_h ze3T?4Q+_rmS}9C(IQ8$rt&=|vZ1hq-@UEIgp*D(h!?7Ti19?n}35WN+SNOZ_TSTib zlS9R_ZwDOi=_Kq?``U444(kl5g})x0(SQD7C(oybZY@m*Fd~MR5<*yU} zdCn^f(||v}QjY%Lpmyz>!`5G~Z#d3lUvV#(DITzL9xf&X0A347Lj{;-FQ%dG2NtNW%KMx8^EB`bg2BWe(Go*@28bM$vz7v~T@;U`c~!k6%jR} z>TVnFFj|!fFf4dv@!KMuh4ISv9;O+Zy1yD8-7#bc5@EC2Fy~)JW!&G0c-cQb61@Kw z++6q7!2ccFflw!nbu()i7gQa1r#I32pF&9H9}D$wzYips|NZdAnRP<$@~;OH&Gl>M zUSTNkx%N}wy5aA=hnyJpum&*}u-P*vyj#fgAzS6sgUt&B7=FZid0ag8TY@u}rR4U$ zKNiB187p?g{@-QzmoXvZu%N?<*WU_mHGlM}!?bd%0r{n*3us{5_VZu(PqbF_uGg!0AN64u# z>rUim=yW~v|IY6zf8PAL{m(-o?w8AwXG{!lekgps{+dC=YW<;Uk(%lG`-wD%gr z1UY-A1KiTTUpO}Ya4#r9x z=dn3-^y>r^Z2X(j$@llG=#&3Jmzw`g`4{*1TeLNU1oLXvE1#ShPJG(>Q{(q?W`-99 zdQ+BOW3b|`X1v0;pUI2k8bimsnZLKChy5#fzWeLFhycbJUiAzgV(x!uIU(@>K+9IM zg!z8L43CAr9%wtIutDkZ_kw_?Ukgk^9(>gOP}TqWUxP`7PQbcMu7>TFtc!RZ{xeMZ z&$NR7$)7WqEB`Zmz3BAd?nMrV_?+)0cQTn2D%9UBI4bnZfh*wCjI+tC2bjO;{Mc8> z%3!MZ_EVfGgU0-p@{BIO zBba}DTh8Ke<=f8&-h*Em{?@TEEUOE8(E5ePp<)YHK+U@k4I=7-hl~~faa^DCH{i7` z`-CWsFAK7Mzd7({zeTHZN5bL9&joei(mwUu{v_OCV?D4g zjcdWjGTDZ=3;yYMpZxC?clX~9md+mxY-@}vHeLDc(AmMQFhAfkLuJd02@^PeIXsWo zE?BjdGhx0F*MW?%?;3X7f31nw!}Ld%i;-d92K@$+uS_R2`hRKU&0$%v!TbG>867_s z)G+=sS>pAlfm23_rBIGZVdJz93Z9<7@4BpINaE4?cfnfpqlJ9<-#HTtb_y&7T>+pD-(QZ2qE9GX2|z zSE>9zo@cUJlvw@#F*p9#g#;g-4K^Iy2RMbf8K!(lyrZIAx?5<8w3fE7X_|GE^#pc< z+>j(&4NvvE<$D$0s&Q$(P;}K@W1GoVpCO&~LF>ERze;f#OT`D~7wl`S&f2kXv}ft% zWNSs4t#;m}>E+Px`q+JicctN6j(NqhMWQ-e3^ZaNNZD#Im~k1KTecck^GfB%6|B#~l0rzasVjfBT*P|BEX#Fr-}i|Nju^ z?)q#0|MS@X|DVRlz~JW0z%Z$SfdQm8?!%w|4=4Zs?=tECf1`c>|Fb{;|KCZRfq}`G zfkE`wzyI8>|Nl4M`~Tm>lYs$bE=aAd#h3qmXBinno&W#O%VA*1%K864L5Y#!P}uMP zPnZ1v&vulF!8Dzb0ptddxgfPtt$+ScSiry#;r;*r%}@r0hw=;z#gqU47d2vJc#+D$ zU@@D40pwng8$jlQ)F!q4`+sHu1H*$I|NqbCXJGI;_W%Ek7zTz{rVI?MZV z{~tABU;u?LD9k|N0P-8iy&yM$%mt}^Q1R-2vF!iSL16|82aw+! z#2FYsZUC7JQY$j|&;N)&|Nl47gTxysEFUSobb3tmIX8rwt&i?;@ zP#lBe4HOrk@CAh#C>%h31GyLE29UWRwUv^;|I2Fq|F7!w|9{q>|Nkpz|NlR!nt@@@ zr2qdpqZt_9Z~y;)-`9WtSAG2d|I&m1|7&{~7(i;ZRDb@LxcvXW>aqX-zZo(xIA8w% zzmAK6A>!lz|0Qew{jcr%|36ae|9?Xl1_qG1Ahm1)fBv6JXJX(KVqln+&A^bo{Qv(# z83u;r1%Li;cl!VTp9Ld>m;(a?$PFNKL28?x{`!CO7XyQi90SAGI0l9!e+Gsn)&Kqn za5FH}=rA&z>}Fs9xfkRHkhvhW(bd2Ir=DbD$ea5AzpX9<1LO7o|5=?F7@`j|FoXv} z{04F_$PFNKL25r;`2ByP4FkhZ0S1PGhyVX~m@zVhegFSo!H9tY6b>N2f!qsn1IS#E zTG2=U{LP z-!<{y|40c222l8d!VDA+Aisg!3vvUFUSobb3tmkEq?wl ze*O;}$Dnuv#RVvQL16|82aw-D?ghC4WG+bUn%RH;7q|cWumAtwe;d%gF8BZcO;<25 zC`bJNe@cUap=tB~|JEV@|I2Ou|6gYH|NnD$GcbVE2AX{SpHRWTz!(1i|0hWXhRS#U z|3BAeUJkXnr;zy3eeVrKaB_22(xZy6XgcK-W+ z#*%^I)ug}w8BG`%#P2gQJeT=oC|3OfddYJLU=P&k16268XR z4IpztYR$v{{C~vGz;I~K|Nj$y{QuAFz`*dI9};GuZ~*xYtKR?rf7X%h31GyLE29UWRwd;$1 z|IbroU^pzsz_9DrzyCizL&6snW}t8Y`3>Y=kQ+eeg4A|eeEzRc`2YW5cXkFXX-Hgv z!WR@~pl|^B4dh;s8$jlQ)V|yG`@ecI1H-jG1_n^Pf#L!bzMwDzg#*ZMVE6v|2R0X^ zHnrlz|1;PBf#VnyZ=kpUg)b<~K;Z!L8_2yNH-O9qsSW1&``@Sz`y`97o^t1{_p>qSVjh$P5=L& zIU+=>I|G)DX7?SiD7$!3^Fo4_(as$X*klJ15fB!2mFfm;E`2T-~Gy}uSEC2tC zhyDNmsf&SO!vcukK<)*(0c0*n?f%Ta|GCaGFf4uZ|33#m1B2iq1_thj|Nkd#hJ*vi zZy@)A+yF8cq&CU#-~XIH|NlqvLiSTS^D;18W`%?qC>%h31GyLE29UWRwX2u?`9J&3 z|Njp^{Qu8%`QQJ*-;nSHg&8OuKz;+c7vu(zxgfPB*MI+S;bve^xWL3P-yaeepzsBS z87Le;egnA|w5JnfE=cXOp1=R+Ui|;RTabYP6mOuo0EI6o%s}A)@*Bv#AUA-_1*!cT z`Q!g12}m4+;tdoRpzsBS87Le;egnA|<>6pZWX$|MBnt{|}R5U8Mr6@|F4k9z;I~d z|NqbU7#P$g85mxl{r`Uh7X!mOBL)VL8$jlQ)ZW|w_y3L{Muxzw|Nr&V7#Jj27#O4; z{r`X3iGhJvnStRu3&g!3H-O9qsg2(E_rHY_BZK_$|KRpXpBn?iHITaZ|NpmHLj3lN zoq+-529UWRwO@1p{%=0R$T02C|Nk>V^)C|xLzyuH!{sxOZ~*xYJ zzrdOQ|1WbfFyy}f|KI%W|NkCrkT3&<1ITY6_p);^fXxM|{dD2q|Ba3R|NnXO|G$wM z14F}8Nce)n3=|F^zk%Efas$X*kXnQH|NcMHVPNPCW?)#q7!ntt@CAh#C>%h3Tg(J; z1IS#E+WYJN{@3{S|9_GZ0|O}DKyd*IUr?B>e*gbJ$ZsI`g4_Ty7o@gd`2T;YkN^LJ z;usWfptt~qFDT4F;Q;a*$h{ypfXoG{^ zv9E)Qy!m09h4zI`<<2=QmnuVZwisvki|3Cik z|Nq=S{{Qd(^Z&od|Ns9}|Nj5~mWhGE>F59d790NmU;5|&|M{E@46FGW7(i-UTL1q) z`SbsOi7)^EZ}{>5|6djc2BnYx|FQ!FnECSm|5Mfs3|ZC;3?TP{+yF8cq_%JFzyEeq7#RNk`2T+^KLdkZ z+5i7@4Hy{0O&J(|J2NnV{04F_$PFNKL2BQx`}f~`3IjtbF9XBNm;e7Oh%qo+QeQ1VB%+BXoZFuC>%h31GyLE29UWR zwSf}<|L3ax`ya-}z;Nc?|NrU23=E*~1%(+X96){pxfkRHkhvhWJ9}6E|GAEd;puT^ z2D9ql;J5&VFDT4F;Q;a*$h{ypfXoG{&CK}szu@=(|95H`7(np`iVINqg2D_G4j{jQ z+zWC8$Xt-xxRd|>|MmU<9~{SzA#ni;Ur?BV!U5zrkb6OH0GSI?8*KdNf9;L`|5KS5 z7*4(W|3CNN|Npm{7#NzE85rUi85m4|{Qv*)&j0`6|NsC0@azBoi!2NbAhnhq|Nobt z|NnpK@BjaI{rLYsikpGK``iEj;YJJ$Wq1GozkA{T|A#^h4F9+x=7Q9|TKn(+&4UaK zjFU?_-UV7U1Q;s%hpAhl)x|NhUiVPp_xVPN3p zVPLo_&%iM8;{X4zKL7vkznX#Js09N9$h{ypfXoG{ozU~=|JB2c3^B?K3{Ri^|DV12 z|9`Iy|NmRcGB9iqhxiTTUXU9==7QAbZ~pyX-iL`H?bZMP{EQ3?t6%>A-^s?n@JkjF z4j{jQ+zWC8$Xt-xhwuOVpRnrx|E$~p|3BAYU?}?j|35bmB+NkJ0P-8iy&yM$%mt~n z_5Jrhxaa?W)hYk~Yis@guW=g^zMwDzg#*ZMAoqgY05TV(_Sv*=|0`4&8F-&CG5kC6 z4;&Yu@CAh#C>%h31GyLE29UWRwLvYv{&$}J|9@pM0|O}DKyd*IUr?BV!U5zrkb6OH z0GSI?+jacs|NVO*aSVz#P+Wk*7ZhfoZ~*xYjenticklKc#|Njp^{{Nrp z@Bja0-~Rs>;$UFd@a6x1YefbIT?Yn+#LJL0L@XZ!EJ!CD4}VqFG? zDl-NK?oa>!pNL>!D1G$r|GJBe45C7e41Pik3?Mgv%mu0aqxkp#4Le2#wnPSoyM_!5 z`&k(nj)ndI|8L>{|F!EF7_Rd|+zWC8$Xt-xGj+fJ|C`3h@ar4{L(u2{|MQOg{Xg%_ zzyG#v3=B+P|NjU14dh;s8$jlQ)PCLg>%aR{CWdM6{{Qdh|M&lH-@pHFmoqT9h(W>u zHpLh|Ne8j%P_;L}?{{J`5U|;~n8z{Yj!WR@~pl|^B4dh;s z8$jlQ)G|+h{oi`WKX4p_;tdoRpzsBS87Le;egnA|oGB7xCF)#?mGcfqEGcbVM3vvUq8h z2?vnhK<)*(0c0*n?OwTm|G7CB7z}nZFr>X;VECfJz+mVb_H|^K|vz`C{Yi;=dU+4=Yd_iFb3I~wiK<)**VK)NL$tJpTUwzvb)y|FcCI7(7`R7(g3f{aG0pwsA2qfYjPA`~P1LG&b?> z|Nqoy|NkFnU|=x+{{MfzJp%)iGy_BH^Z)13=BL6{{Jug z|Ns9{2?ho;P6h_qm;e9YVr5`B@azBo%^&{%2f5+!JBZqbzJLEM_!t>9KmPw8vhV-@ z8?XNV_rCJ~|J~33|MPG#F!+4>{~zRDkQ+eeg48;x{rms zt^fZcco`T}nIL`xxfkRHkhvhWdz1hD7yQh?uvvtGL79(%p_iS3!SLJv|A|Zt44`lT z`3>Y=kQ+eeg4Le*_kYjh|NsBr{QrOHm;e7?b1^Vjg3jp?Wnch>1ITY6_k!F2G8d$_ z+vxxQLka)?Z+-p$|7LCmhH2W6@CAh#C>%h31GyLE29UWRwI!YZ{>ynVFo4Y8y#4=w zP+Wk*7ZhfoZ~*xYh=Bqf0>(sp~RVi0TgebxB!JOD9k|N0P-8yJZ^}& zAhk_b|Njqp`u{&DjzRGTiVINqg2D_G4j{jQ+zWC8$Xt+G8|VN3xo-deKa-n*;o$H8 z|7(8y|KG*Rz_94w|NlLV3=C&J|NqZa_W%DXCI*HLJPZss#26SrYE}CF|DW~s|NjI| z1_s_Q|Nmd%VqoxRW?Hq(pOaK4>^zi?GkhvhW$728f4|8W^P~~D^ z_|m|@z|GIVkZZue;OD@|(0=&e|Le944BcG}3?Mgv%mt~P{OHgB%Z!W+1>6h_Ic^LL zMV1T9@h`fSan1OJ`2?#)D$z#2&AwXf zu}LzJV(G74loxHl?EcchUp~<|$E?ocp|yt|Cre_@x4eD&=WK7g&gYpX|6lE_nxJlj z-Y@3d;=t^5?Z2jP?c|i0_0>(3O*dH0HR@(LT^XDgsV8c7)5cKqiuq6L6}HrZK?noG z2W18ZNm~Ynj%$!`0Qn8%UXU9==7QAv&-?rT$FUSobb3tnP_5S|%`2PPtD2_q#28s(%_=3U=6b>N2f!qsn1IS#E z+IxNf{@-8x|Nq}#|NpPyU|`rL#=vm%_y7Mnum1nvAk4s!@$dit0}ucIU&6r1u;$JG z|3_IE7(i+l75w|p?7_ewvh)A{9nb&&zu?5cu<6JD|C~t-43ldZ89voAFg(5R@4x0d zh`AuOkHUWc4^?7fu#RJ32yS3txa9l)|D%lz3>{Ax8A@ibFtjiK|6h|2;s%hpAhpf$ z-~ab-W@cd7&cGmdjDca*w*UWiCjI^YRE>$jJf4w3Lk;3ykQ+eeg4BM!@cF;^D`tlI z(-;}%t1vKJ-umyq!I7W;=hQPY^b0aDfcyq>FUSobb3tm~NqqjFc9ex-)06-IosKXt z#BcrnzdG{&|6~RR22ePF{04F_$PFNKL28|^eEIKb!NBm+g^}UF&A%h31GyLE29UWRwQNz`|4-Nc{olOs|9?=t zf#L!bzMwDzg#*ZMAoqgY05TV(mhtk<|BNk*kL2dw<3sQSx)0h8;wzDu4ZTbH{!}9-sk8^+j zw`VgjJP}}E0EGj{Zy@)A+yF8cq;{{}kN>k085peem>Jq?|NJ*_{{P?i*8l&YFaw1H z$ZsI`g4_Ty7o_%A`LF-t%1jK=2LJx&efspnM|NqsPf#H%U1A_oN14H=h|Nn0=GBBK$VPL3T^Z$R!xBve` zm>3v9YW;lv|9_+O|NlE>1_tK8|NpNtV_>KkVPJ6OVql0m_W%E`)&KwVh%qp{(pZ|}f7#W;w|NIxJXJGIZ`}_at-GBd+UotSrYcMc?-0)7BfdQoU z&$RFVV83RL@79#^& zI159qJp;qp21q!7{04F_$PFNKL24^izy4nt&A?FM&B&mZ$;80V$-v+Px>bh}5)L50 zf!qsn1IS#E+K^Sh{y)9<@Bhh#|Ng()_5c3?SxEST!VDA+Aisg!3vvUd7W^8WXKP+Wk*7ZhfoZ~*xY(6zk@d|Nq*l|Nk%LU|Nv%|CRj=3=?)TFvyrOFo669axcgYAag-#4HAC+7Y=1&h%skiP+r8y@M#SL!{kN( z|Et}FgagQLAoqgY05TV(cFFeN|KHvJ|Nq_`1_sx71_nqN zx63i``uqXM1t@$$VFn5Zkl#S=1-SuaE=X;D*xUbqHvajaxD*m^ptt~qFDT4F;Q;a* z$h{ypfXoG{oh9|=|H1kH{@>$ZU;xD%C@w(Z3kow(IDq^HaxcgYAag-#zxn_A|8c?p z|NH;_|DX5k|Nk$n3=GTJ85s7w|NlQlnt@@<=l}nGAO8QpUWI|7l81p|5(fhVNbR>d z|Nc+8^Z$SG)c^mti!d;((qdo$t$+9s&cI;k%)qcuh=IY!1hW1BWG+Z;xWnK7&wLpf zn3ggyR9P}GOga1i|I}6nhIMR=4Ad1t@$$VFn5Zkl#S= z1-SuaE=cYDrH}rLSpEACieu0^3{YHv!WR@~pl|^B4dh;s8$jlQ)Fx#8`~S3vfnnzo z1_pz<3=EvJ7#QTHFfjb-1)VC$2tS3E6?!Hq7X#=_Qa%RI`NP5tq732;k_<8oatw+L z$_#1@nhd%O1`H+)77R8Fjts60UJL;YVGJ=0Ner0`1>ln@nHWH4bb?MR1hGIgGXn&I z&MX9-XvxX|fuM75K_?h;FmQlRtL9_?ol^}urI?oibV9KJLqqdZ--a3~qXw3%nhn3T z!WM`g6l{29mp5TEJ4=Jlk7|ZnVf8#gGnrnhu4G_XmsWe=-3uNDLGj{-sutOX*6O4K zMkkCJ&YJr)h-vsAczNA`p-DS`!SPJt2enrO8Z4&eFjTi&GqhH?F!-3HJNRgdF>E<4 z(XjbiW<#60M?>WebA}t=Y8?Kgn8;{wGBdEu_HH=rlIM__tCe80TaaP;q)-NyT^R@X zI5iLab`@v%_${pAzjZdlM>G8dh9e>j{3in%LLZbgY*(-msC&ecuu7i0!Q;L&Lz8SZ z!#+X(1w3=49Gu=6G<;4@Wr!(AXSiNxT5)U#i^7tA2?otZuLeu^>V{H*PzI?=wF6!6 zwHThYMK&CIR>9!l=i?x`RAGUwBs;@_jm8bnqT(AWAC@*K|MEVN_DpF)n;cie9aa;D znUb*$!t<&c3MGRb%mQ_G)Y-8myh&tj=zFHqaB^L6L*v0phGVx98t%*6EcnPSp0}W#}Lky)}YAhcYxE)>_GKtxf|~%v$Jhl!T4asSIGnSei<@++v(ZR zVv@)pkW<0%W^Mrk(~C%k3kA*%|IKt0Tr9;+V#^o>M3VR!{)wv{(C@ctU^p4nu=`jB z!{W}m2BEjv3}$n}7?w0SI@r(GQTX~n{LjuZ=7zUIA_q<;YdXZ#+BFbQgfv95Iy2lvx-g!>cV9unI*+=BQ$@KAW&2|o)bxA~`0cZ1$j;Yh_~9TOP-?{O7Py@;!L(P% zq0>Rx;nqdthK-Ic3{xkBFmUWoY3Mpz!jR@%-QZuG-LUImG=q_zkAuq&8;8bt-2>Ii zau-f8^Dn5MDf1vYN9I7Zkc_f07C>en>po~{aPSv z{e$7N_&0%UmM<61Fn@Azl>D&Zocp^4!IRz`X!`w%;a=-Yh0Vq<9*DC)U+|3a*@NAx zPak|Le&Vp??PG-{lOHEEq&;rv?~qxr>5BA&v_h!`+36Aqvk!|h%$g=NA?FKU!mrO< z61D5t7Cf|LN{~DF_eE3S&jqYJUkfI4e`H9@e7hjU=2gO!8P64F_B~DT)qc`YQ2rQ% zL2R(tlo`)KYCvj1dO&(XW`N8BnF%r*WCzGDkewjAL2dxMWz!XDklR3E2MRM#Sb@R_ z6gHqR0fhx93_yMd`5EL_kRL&Q1NjT&PmsSs;Q$I3P&k3Y4HS-`a0P`kDBMBu0E!n- zJb~f}6gQwa0ma3KDZjZvVGjy(P*{V)7!C6cmOEA6#S{IvXStgl$D8l>Fm) zVP3@|aiaBiK{w;)1#b?$K2TQw>;eDo#~=)1gTz2`AT=PhAUz-5(CMB z)PU52^nmn&%mA4M!XP$C3?v6q15yjp1JVmJ17sG+PoS^^`4{9DP?&+j1LOx#Sb;E@ z?I`&HBnMIhQVZ4-Ed)-tVD`Re{2)1y8fxkXr9Du*gVF&gU4YUFC{2OV5hx9T(hexi zfYJ&mjeybyC|!Wk2`Jrw(h(?KfzlZ$-GMNO4HkQ7#{^cBoh|{=1JVmJ17sG+Opw_i zJ3w}U>;&5_cknOREwc}cg4_m58=!Ot@;fLEfzlZ$-oa_jQSt*QZGh4wC>?>)5Gbrb z=?0Y6KvwbTA-D4x|QzL2Qs1NRCeG zKz;;;56I1+umkxI6c(WH0r?FazLNhWL16|8A5a*8!#8-+8&KGS!v|D$zW5;l@;fLF zK=~RJrl9Zzg%K!zK;Z)ldr0k^^B78zcsj17Q#wBnFZLVGtW629g6|5E~>0k^^B78zcsj z17Q#wBnFZLVGtW629}fjCkgTs$RD6^0fimN&mez*(hw+Y!C?X_+r`Kx#m0L3%)XL1uu= z0$~svBnFZLsR5}4=>h2lnE^5jgh6bO7)TDJ2Ba3G2c#Ed2FNUse?Z{{3InivPcHfc z3OkS=LH-4WCn#({{sDy-C`>_q2ZaYHyg^|G_HX@68Bkb*!UPmvp!fiVB`7>V;SGud zP*{P(^U)D@P#A;43ltxqbOs7TPM94ZkT_eHpk4^Z3e+e%`eKY3^^<8WY`wy~w5sqa(a6f_R zSLZs$2l)n!e_gIKd@!HEP`4kJI$GZ+{aWiv2H`!FzEG-Y7mRbyayA;rMJCd|N4!pp#* z#-he##VEum$SA-#hryr0l|hX`h(Ut^bl(H0mjyblpPNCHL6bp&L7Bmsp_PGyQHaT! zQJu+;W1hf#f%lg0EWgQA@dYx?XFkWM$@q++gu#eGg@KoWgMpO+bR`25_&yhY24MyX z1`7sj24jXIhEfJ^hN%nzOg8MGJ0?Ikynrz1t_jGEFl^8pVL<&bkP9I91%Ucmpgtbx zHX$BxKZ~D%4}7x>=#C(SZgvKken{^PWCE!7#>N1Gpne+&b1;C+0u`SS{Ga(h<9~*F z273m127U&12GD&Mp!4oo8Mqn58T1+A8TK>OGyZ4#4?as4qKAP&iouE@ilK@@n!%bO znxUG3he3uxhrxyc~?46+RB48{x&4E_uW3`GoW46_+FGMr*~%+0Y>8}(*q*SdvuCrf zXaB-(#nH%dl0%R)igO9)drnKPR<4U&a@^V6JGj|+LUx~!d9|Qa=+w1Nn5EZsqIpqq;#ayq~}RrmFAMMmno82B6C%S zRn}NGLAG0Vo9umAHaQ)+K)DjRX>!};uE~9trey99#`OEV6 zXiR`X;4IH-uGL%&j7-doOw0^S%nXdo42(>;_@K1qA#qlvUAxF2 z)8vHtZmW3PWA?us*<9Yc?sm`f4S zvEO4K#hr*>nb4XTn`D^Gm~u8{YHDPfbo$No$r;|63|X79lCt@8cIG7JvgfVN^T~gm z-%+4axVJE*=v7f&u|Ubf68+M>rJiM%%VNqOmuFVIt0=7eTv<}}rK+gEg^P0rk zTeX38C+h6#H`o8K2jwzQ4h5ak+)&R^x4gQdVt$E5K|wYHD4+xwBp4JJG#CsREEpUZ zJQxBPSQt1Mco+m2L>MF(WEd0}R2VcEbl`(C4h${~9t=JV0SqAw5uk;MOa1=WZ}g9K zYqwwM@W?^eS=^)9f!l3enXdDWT&FPcfG{_8FLni8=T66F2OHbD4z(9PgRgP=u>9Cx zw{4$)OY7hL(Ru0KCzC~6-h#rG^XG#9yF7Um%5@cG>u=hE#aP1lc+Z|W^XF;e!e5tt zlYZ#^SNsT43&SAw#z!{F!1$nZxIuTYG(|NX%fi6PAiyBWpu%9t;J^^bkit;OFo9tu!x4suAZdoPXMF4!1VE>7Gq^J_ zG}tpRY;j^>FmYyJ*aE_b7#K_rpO9o=n54wOkY&igu*#f);gu}|gO@u4LzgcD16LFS zgH|j9!!3}Fny3}Ou83=Rz8 z3_=Vd45AEz47>~x4B8Bl42}%>415d{43Z2|4AKlT4EziN3_1)^3{DIM44_ds(0wz` z422A`3~~(e3%NM)#DFkA&+4K!+HiEhHQpjhBXXE48;t_;Bm-6h7yKJ44`pL9tJ^hIDpa$FSs_5 zU=U{zV~}FtVBlvkVJKygX9!}L%)rT@$iU4I%rJ$)l%b44hC!MkgkdU!5`!{>EQ20{ z0{EVkat2if6$W(%H3kiaP=;yXn9yd>VbEnT2ak)oF@!NhGbAviGE^|sGBh!?GfZcg z!?2KH8G{8wI721F31ShB$@>hWQLG49N_w3`-b188R5U7*;Y^ zGej}eFwACfV2EdEWLUu9%8 zFr8rr!%T)*3~>w-7>+W0XGmt4%5aL|4?_aOB!=S*KN%7kCNrF1_{EUIaGD{BVG6@Z zhTjbF3=AhBSt=&~Q&@ILBbdFc%!|84Tx9!rh!< z9#XhxGF(6kcMFCrhWQK^87vu`7`(x`sDz=Gp^aey!%But47(XFG2CW&!tj>CiXn$# zA;V<`JB9*=r3}{@oEb_PRx#XRaA&AwSjX^y!H1!aVKc*1h5&{phV2Y58A2J_8TK%| zV~AwvW;np`iNTs7mthgZ6$X2TLWX4wHyB(P${1EN+-2}!sA5>p@Q}fmp`Kw2!!w3J zhGvEx46hi%7&;jCGQ4MqV(4Kw$ncrLh9Qq(F~d~`2Zkbs-@MNfF z*ue0J!H=PVVJpLPh9HI(hMf$r8NwMl8TK)JV2EbuWjMs}g~65~pJ55ZH3mn9VulqA zw;0?QDj3!>+-LA&sA1U1@R-4$p^;%5!wZIBhE|4M3~v}B7`hntGkj!-Vd!Hx%YtWem$1Rxqq&SjCXWuz=w%gE(V0!%~Jv3^I%v42u}Gmo4m12^2xjPIIK{xi7{f4);W7g+V+cbZ!)XRq##n~w3|AQV z7(*HQ8O|`UF~%{>V7SV_<uqf#ECzJ7YYo*@FwA1O&LGHW#Zbbqk>NFi6GIKdPKM76?hK6# z`xt&O_%n1e9AjW$j9{3=aGrsaF_B?5!wm)@Mr(#rhD{7_7@Qeu8Fn#zVenvRV%X2{ zlOceii{Ur}BV#1PWQGe2T#QK!a~N(i2s7F+lrd~(c+23zP{**F;VXkDLo>qxhF=VU z4BZST7?>EN7^W~>WZ-5@W|+%xi$R3ZmZ6+s3&T4GSB83qJq+I%yck*-4l?{^2x91A zILW}w7|k%1;SvK6V+zAOhT9CHpsolw4S~v!T!!@wUl`0V($6-A?F>5@b~5Z@$Ya>R z@Rh-wv6x{i!!HIK#sY>-4Br_n84DRUGyGt%Vk}|!%}~U!h2bZIHDf-*Muu+;7SQxl z%J7F_H&N+l4}&~I8N**_`YC7l$6&^=7o2`782+QBpM6N_r;>qz5mbXh%54jVDu(?G zjEwdSjSR;aI2e5x`WP-Vh%!bp%w~ANpv0KQu!7+&gFd4rLp8$z1|~)~h7N|a4E&72 z3{x3yF~~3`Ff3wt&Y;O?$I!rVl!2Ymo1vHC5`ze11j8(b`wWVVsSL{*-Z1DfS~1ix z9Asc-bZ6*fIL9Es7{V}(;WmRTV+Y=GJ^VwrxKG0)urfL_G&7uF;9_)PXk$3dz{}{#(9Ljx zL5R_hVFJTd264tfhRF;!7^E1(7-lfsWsql#W|+(Hh(U!hj$r}AQwDX$WQL^-uNZU~ zGZO)M8T}b1 zGF)SjU<_iI!f=y8nlYSVCc`}j1;!YLc?^#kR2kzL7BW0z&|pkqSjO<0L6D;WUE`V-{lrgFIs$!x;uy#%#uFhLa3Zj2Y1M*T|s2c$uj5cZETop@~6} z5z=mGW>8`@W4H=Ve=Q8kjL7W93VR1ttBpF z4C@)bG88fRGZZrHW%$Ox%(#xhona?K0z(923WF14FoPeX4WlpPABKetF^rQLf*5!i zUofyRnlL6ZMl&vEc+OzN=)ky#fsb(#!$t-!#yCa>#!!Z-3?&Tv85S_SV_;$oU^Ha> z&k(`zfFYS7nDH6I6NbkO0*s#+J~G%dzGN_GOk?n3*uo&p=)`b{VFrUM;~IwV3||;n z8A}=FF)U+9V)SO1z>vdW!5GJ|i$R|;fZ-KGB*S5b0)`OAtqhTjwv29!B8=}DmNS$w zSTedXBs01*{$<$5uz`V}F@qtAVJ1U5LllD#12>~6;}3?13~Y?s7(y6kF}!B*XI#PH z&3J?%l<_CSA_il|DGafU?2L|#jEtWdo-(8`&SxlRaAw%eu$EyW!v_Xm1_MSPMk~fJ z#$1Mf41o+{jF}A43{i}BjN2K0F&t&^V2o#&&9IVzhw%}^8wL)P^xepCoxy;y4I_Qu zW4O=ofZ-v-BZel18w`ew?Tny!H)HH!Y+<;?V9eOb*vfF5!Gy7kv4g>!v5nylgDGP- zV>81|1|!A}X!`DCuwZ;lRQi6xAkWanUAQ!)8ZCW4LrUMh3^pj~ zyN}^HgDs;ygC|1_LkMFKgA3zShD65s41SDD8G;x$F)U{I$KcDbf`O57CPO%*CBqMf zcMSdve;AfAI5Pw=oMcF4;AZS+Si%s>_@5z|aW_K+qaC9kg9l?4V===EhEEKC8I%}B z80{FW80Im!FvK!!X0T_R!myHI7J~;vBcmsyFJlB_8bdI{1csLk&Wtq-pBWA?Br(2a zaA5e(aEjp~!!(8x27g8##`g@`jC&Z4FlaHxF&t)KVytG!W^7>0WpHIIW?aQk#2CVm z$Dq!*g~5yA62pFmECyx9vkdu+wTzXF=NOV1s~E}|Dj4b+7cgWpXb)-b9u$}q|@ zMlxPt;AQ;DkjL1>sKcnq$jn&FP{??cA(7z_gB;^!21!N<#_bFxjNuHk8KfDl8DbdS z8Fw)FFyu3MF`j0KWprgoVwk}&kzp@`6N3X|AmdtwG{)Zy#~9WzursnT)-il!ILHve z(85^C5YN!eSiq3ZD9`wXA)P^hQI~Nw!y<-P41$dH45f@)8B`cU8LAld7%LgF8FCn- z7*iNQ^~qHRM}|5^1;+CXg$(N%k{L7@%NPq7k2A0^?qmpH^k!Vhz{kkJ_>18KgEvDQ z<8%fahDZiS#yJc^j2Vn>jBX54jLR7&F(fbsGDI`9GIB9~1-EkcF)%QmVF+VvU?^kI zXUt%zX57Y5#8A$7f+2xHm2nNjHHKV9amFwPMaFo>XvS1VR>oc692mur!Z4Y^iBXs_ zlhK{QhtZaSlW{J?H-M*u5CNcOhh%wqSa5I)MwlmCTT+WcjP{VkFA)H|ogCj#6!x@Ge1`mcX z#=Q)NjJ1qCj2jts86PoBXH;Z-%TUO0ona?K1A{5!WX2K(2gV}|-i$?z%NW-&I52cD z1~aT=yv@+Yu!ms-V*$fz#%>02#>EU<7%wpFXS~JmhT$ngB7+)ZBjYoMWehxw8yR*p zK4e(Mn93l)*u_xKpu||p5Y2d;VIE^VLl46ThFOf=j29Ui8KfDb7&93@GHhiGV=!Sn zz<8P=l5rP9Hp3l;`HX&y_KaB!mW*W#)eN2t=NXnVUSnurEM?rrXva{@7|Q6)aFB5Y zgEQk2hEEI&7+n|*7>_deGfrXTXS8S7&)~|Kz_60xIfDeF1>d!xn}}hGd3xh8GNe3=s^z z3>^&3j7u4gF?2E3GHhU2!|26O&iIbuF@qC>AfpsxFM|=|9L6GsP=+Rk7{+o2WkwCg zCdQWxy^Q*dQyFC#_cAVLyvuNj;Vi=;#vBGA#!ZYj7{VC?8T%MMGdMENU_8ud#;C$r z!H~-!$+(@7k8v%d52HHcBF4)M){OTU+!&h~)-irzaA%BVT*zp{*v}BexP$Q(LmtBw zh9it$87dhTGsZFA2lX`>Js9UQ+A;<+)-hy&`kagrjPDsXGZr)WGM-~_V!X-lgkc5a zQATq{P^)1V;{%4PpdK${2;*ypZw##r6Bw2-dNSIf)L#=Beluh+Uc$(qY>e!T9E_Zd zT#S<#{xD=RUS^!mz{r@#c!O~Y!#{>>#;c4|8U8cmFkWMv!%)mPje&tNm+?B|WQM;C zS&Ubp`ExEq2_rXA`ICoH9y*#an}LaunURH&l`)^OfU%IVi18-lEyml7cNpg}ltT0G ze1h409PbK=bb$#u~<@41o+w7z98mjA0_(7$<}CuN`og#?_z^ zCB`!h;SAfr`S$`i|Hd&MWUyrHWSqgcm(i5*8N*^mO~#K5g$%bD_A)du*fP#%EMf3q zJi!pmSjV`DaT9|B!xY9~hOLbE8QK^QFzjJ0VA#&s%^=UXoZ$fD6^7G{_ZU7fyktmZ z&|~ane8sSeL47gVBqjneh|Da|R~{Nk%2cUIr`170~>f!dT9r&1k^b$M}|ECZjpyLPizF zlZ=}gA2M8HxX5shF^55laUbIyhIqzE#y*Dc44#Zj7|%1>G3tQxuOj1NMlr^nj3JEr zjO!S$GdMFoV(?>ZX4u8}gTbFMm2oYj3u8Y+6yp)bcMN$9HyAE3{$!|RSkIWo_?V%E z;V5GO<4Q(X#%O5%J;j*7_?clpV=+T0<0S?!#=8tJ7`8B8WVB~YXUu0f#`uKcCPNj& zZpIkK_YA+l`F8_jAfp>R|033fg66{zbB3^$nV_*$VeqIjXp9*#k_;O$R%B3OU|`Vr zG=ah3^8|(&UnVfj_%?yz#*YaM5x*xeSp1v75WzT+;Rnk^h8-LeK@~a<3~~o(78Nw- z$i~3J0Ge||V9)?R6L=zonSqsopMisQ9zz7{JO&A_i3~ruCNfCyOk}X&naEJUGm&8q z&qVM{D##*`H<590Nn&!gLSj*VXOYveXoX#N?v<;$nqFg|yPV6lUS0dP*Pcts*nK+&qQ!QB`V~AJeZ%Rkdj!EsHdRdnWj(z@*613LDqwvmYAcX zP?=wF;j-}%K(xPN=7=q#qY$ezeAYNhtC@hOI6H8JRk}^v`dh`?& z-13VQQY#X33vyDe6cl*5IFmCHixiR-Y!x&z71R_AD%{*Ot$DeeGZORCLBRtuDLFqS zRUtDE=B`SG^30qZ1yF1yrlqAOmw=s8SelrVSyBlKe~=zXY=BJ2FDS{(1x39A$Q)?+ zK+;=oYHof}B{=Tk$qN>KIr+(nIf!Hk3J!39C8eh27o{p>mVmV(r7W;U6my};IX*E5 zWEfaIvNfT3*?IZpc?v-sS3^+sma+2u0=)pMPRc)@fgHV%8T zz~Ib~!H~+3%#h8Xz~IVI#8AYL&rrmm#{im7QD6vV$YV%kNMgtVt1V&3XHZ~BVaQ}C zW+-6DVMt`CWKduTVhCYyW>8@8Wk_WxW+-MzWJqU7WdLU?1_lO*eYy-GSZ#D;NCfw) zN*Rj4HYhWwGNdplFz7NUFsL#VGcYi~{N$FIlbV;9n+oy+Ow2bwr8Fm1!4D)HRGOz7 zg7CCkVrEWhQL2KnYKnrcf@(1XBpl(PrI44JSfo%24KP^Qz`($us%I3Tz`y`ipIDTd z2rEQjp$?7XqSWHlB2bP_s)VE?c!thIDqFyL2SnH@FfeerB$gyvDcFGgz~u;zLvS|D zE6q(xEdm!YutW(n%nIZduHek7R4WArF2|IVqSWGID+PlJkQpEh@fXGJWKbQ2w-qwaAGiIFkvuY&|`36@L}))Ihi4h!I>e5A(X+7A%ww`!I!}ms>X#u zk0FI2harc7fgzEhfFYAXmm!y-m_e7JoFS7Tk3p9q8Jx>f8FazvJ{_E+N*Ib5Dj9Sc zau^I5bio*88^W9vhBByW#tcSCHZU**rKbBAq~>|2R=QS%gYsNzdSGd4QDss}7=|#gi%S_28FCnc8A=#R!KFezLku_s^cV~nViVD-)n z3=9EaQ&Jd88Il=F7+e@K8H&JefrTh~Sc4?7i3PYgf&3emn3I{3SdwZAQU@`Kfx*Qp zCNU59Cb_62rYyM#QaFNTQZr(TOH$%NX)Qi8FD+j$ zxu5`aF8IqV(#!!>Yejj9IWYyPMe!vWMX8A?@!;AIVjjqS2Sg__a4;}1oDrSK09q(@ z1!3=9ktp!5`|_zWn24wPO1 zrI(07{Idbd-vU*?1Iph6r4K;Gk3i`YQ2LD6LVE*`KY{XJ zK>2T={0~t67byJ$O8K^5da$%zaq z3=9lEpnL_Xi458d3=BR}5cL^S5O?)RO$7H3Hb_lm&;YqhY9fOc$UV{%8KfB)7*wPo z>DfejB7-34OeJYZ`h=y+5U6+tRDFvyB)n!wL)^1NdLn})0|Nt0JuJP!(i1GcVd(&t zo?zjBMS3EGC<6mSe0)-3acT<4i45`a$)J`nLwtNeVsUaJsJLc`k1sAs0kyZmYC#QG z2q!*1EwQ)+#x6@uF3B%~@IYoJ=fF7e@u`VPnIN&^^31f7ctfx`5VjE#+ZfC)C@C^C zVTg|}N-Zua%1kZ+=_}1k%*jm8OHE;biGm!fke6BxDn}GjQgc#EQWM9DaFM8M#{iB8ZEXeyU0ntST?Phl{DIPruALTx zKB&#Zz`y`%l-SrZFxY|2wPj$?0rmAX85rsq7#QLh7#M087#P&l7#M157#Or{85p!} z85neJ85s0!85mSS`s{2OY;0^9)NC0TYHS%8;%pfh63Ws_KwU0%1`s<5i46)lb%q2` z!JD53l4eK%wP3OA0x04WL0zJp)Dmp^AyKV>tUa?N zwFnfxVEs^egtZFD(hLbud5F`oo03qLSyWP*n4^%ASzM5ln4Fpm>Wbwi7J&ShnxOzS z0=s5V*do+mbw&b09-lK95|Z-^Dp7oj2&jb8loExa)RNMoyi8DZB)EDoBm{+oc!KPQ z#2q}gp>YZ2V>b|#o@CPPAgZeAw13tF5Bitz+QU_eqmQp91%MaLq^GB70M zCgvrkr=}1JJalzf0}$j#L>OX(5^{uN32U@4MW{|lsmx2v%}iE6boz=E((;QGK=BTf zODsvP$Sgrh^e`2Ow2#k0=;;rqV?chy2s7NOp>Yh&uaGtmEZf4$9|a{PP?ZHQj}(&g z;}gphGfNl{Wt5Gr9fLv$Xbiz6wK%ybv!Eou2$ZiBoDz#u6`XSti;EQyG75<$3K|T^ za*jnsiIwUM3{a&WnW;sIMadbJNSZ*#F(^3agN6u7QWgA@vOryYP-g*ZS3+W5eqLp6 zerd4+sEb)#keCcE8=S+y-7f|el?(U2GOsizr=X;WAty06DJ7ACp)5Z$1>_Da zeq^XsS74|G`Jt>NzX()rrB+mf)x!AI3=9d0DOsh(CHX}lHl&PzrWd4KmXVrMkP41+ zgr8v50H_VEkedqb9V3^1#OlFf4b%Y)up$@a=7OTkvcwWl51WCZpeVm2HMt};#Y%yp zpfo8bGZ~TwqDwML^Ri>DKYpR6qKBm6c{uW7#P4KP7DkT#TofUB?=4-nRy_R zfgvY9FCCNtO7n`r6*`Cw3R4K3lUS0OlZwm+nO$6xVr2!5i1-o(22?%+gH38qPG&)I zX0aUugAOQBFfcIaAPFku<)>C8rxt+nSaLxrLt<_LgAUY^_iKT26i< zNPS9vX;Mxq14B}NKC~^AnO9-~YLjHyW>~Nzo8d!NHiJTM zHbaQvY=#BfvKcKjp+*7H-vv1e#0L2p)b9ncLH%5qIH(T_Vml}1 zfyaN7lT(X}70N&(C!mqv)Z7Bl5O4u#)Ck-`01b$tjWHx;<|P(orWVIkSeO;1mc(S{ zCC7lqi1YIja~ND0tQcY#5*cC`;u*@pqdwW-Q4-J^d&n6Zpb^$0hD-*~=xGc?1%m~H z8F*9(G|mDVElOsHVaR7F0FT+`gU4gRnG@t_1_lNt24{vuhCGHmhJ1z+1_g#hhGd3h zuvx_n3g8i=9EMWx*eYo3Mu8!fAs1{GXyg{%RM7m+8>NX18p;zHQj{k`N1JeuU8ON( zG9)piG8BQwwh-f1pgs?waj#;AN`^d!WQGj*h?f!g91@VXvcYENF{Co&fXAXhVyX-| z;PGHoa~T+t!9E6!VW%*}Gh~3n0yJg@8r!yIuw_tS@MQ2~2xD+$@L}*|aAAmN@L+Ic z@B@$HxiZ8kjzlP02+}Z#-E_@Dn|Z3r4&(-q z7+5KIOvx>$*by|^4G{tD9b{l|%PDp%N(B$+!_>H^mVier!OB2+)Gent7$yeFzaTMB z*g$Tob5UkVW^!Uqa4L8n&9#D|#b`DI!`*C#fT!8;c>_pg2pMEPV>FxL!X1cwQeuh% zvRny6K7%fU9YZ`rI5-u7@)9JR@)%0NW4WLlSj3>fpvIuapum7o@4}GJ;0DgIh%}c5 z9vKCNAJ{WAO;@Q58Q>i|CE!>D?N0&ae~@b-@rX!8pfPCJ$a5;v2(oj2k!wX}NkCCP zsPJQ8uotkmhq*f!JYtQUBVnn%m>~u{l3N5G5eB6uP|kpv4;nEpVTcFoMo#shR0SI8 z28ADJw^0Vvq9leyaC(EKP6Gx7h8l(%@CG>}1_cHia9&2Jg2V!X50N)!FoUMic!qdr zu0*xbiouGZ0KC@;6gvp_f#$40118Dv{GrYe!(hOm4tIwZLp)OM0i8_=aymYHk{Muj zgF+`A>>^MJRRk`xAfWxY7S@` zp*W@#G?@UJTu3Y^05eNcGV^2N(=u~XA(IFN45i?CQ_$QAD2_pCK9wPnA(ugc0e9?y z&XxzI6~g%qRuh40j{;~)2h}y8QUH|iLG2At{S2D9MU()baD${IR5!&lBr%jSq%ov{ z>nBhe%SXz&pgF)|280jvpzR7!y#cEeh%F}wyE}~`nIVTEA6yzBTprJWEFKST?|@W+ zX08#rxCq`pLRSw8RZv<*sDPv+YPvfWJU<3%4;3*WT+RRvRZ!~-WFsVmA+zidK4?{O zDg($zpwt1XL+Fz}(!i}sPz{glR#5q!%a99g0i-d2=KKo4?Ep~Pgv<%zO2JxSeV|!G zm844_u4FM}gP z1cL&DJ_D#l56a`9)f}L89Uxa_GE_07LhC^d1|VGN4_tZVaHFLoq`Jg95mfU&2t%kP1!-3gG$cJa7(8W+(;sOh7GG1#nC! zf>&^W`Xr#09OVq4z75DmB?cV^1qS4JgtWJk!EH^GP=wh{*viwq15pw0de64YdctWRSGi?T5=F)}c) zu&{z4^uR<`23BTPP#+XDR|heHiGzuOnS+&ql>>ZyBLg!#_#6RtRtE6IF$3s43opR1<;Pf}pl5sP;-_NCEe(Kqtw-TD)ltdEj=a0t2Y* zfYcD6azldw-DKSD3{cIi3C?pG3?O}=JXpa{0xzRM?nwmKO&Sa!`#|IJ<%(dnxeW2(mMf?Q1gSSLZPa7{K~S(0 zn}0!}M|?j6v{o&jL5~5}%K){1;=!$NP_G5#9$0$`)LVeG%|Y#MPzybip@gBB!3N$Q zhqOe|TZRxbKxGD~_6C&;#S9=DK&4|Qxc`&J04X~P8A`z`UO@2;s!KsWp+-9oRA!ej zfYLz;QcVS_KM?hJ83U+C4l0R3rF$9!s7(S|=LafDiLH~%z^nd{%>cz4av2Q@Ly&7g zc3}47kX7QUDM8~E`3%VJ2CXzi*a-@4kgcHgS%~&3cGF-zb!2-{U1-OkzyNBYfa*vm zr1meQcaOWSK@ZzvhCGG>a6Jd|IVip%wK^#8B0?FIHgJbEEz^HIxL!x35m0VG&f}mu z8In^_Rf2LiC_Z62LHzPL{~Q&3!jFm2kwc`yn&5#$Opp--3`VeFzuC~iS`v??sAdD^csMkLjh;&JQ z>cACO1K|r$+<-8)_yP6b{TLL$tAFws(iuv?^DdBaRzz=I0X*-CuP2XKc>-ChL%n#X zUg`#oe2$LufL7>$MqtqUr>M0jq`U!*eSyX=eIPuVzCbG#hVD2b;kXCIGANyu zFjO*tRsw*=vGc%tgDV(7r5R|AC1|x4WbQ``JVOi`e*yJ6Ksg0GHCpI zu#fM8+>SZN1gXV9^JxVPpb;)mn1V`y5(ZHFAGCS|M1y(&sSKdqGyps=9@d6qHsG z^&HHmp*D^INz26h4pb_FFeopBVhxlxL3tFkZW=Tq4a&KQ`kT1&Y&0Grv-9*!rJy(j zVchYE+(v?wpTxF@(92X}>L*zKp?4U7{6A22(r9?1*YU*H5ug-FZ1@o_UxsG?4^sYu z+N+?JAE<5}ob!SZcY@ktp!xt?KMy2MxZOJ%kF+lxQF8(@{dLrO0u+;=J_#tcK`ZjG zuU`V?UgFz%p!7p*I}F|Z*vfZ^?Zn$pINc3I?L~fCfb_U9%Z!2W1*i=I!k~Bp#q(%; z613(Vvf>dDCfLjP!5LquRZC~#6Y*!$t!D+=TwK*dQU<%2Pk$&`<=rre$i_b z&>Sah<^r}C6p=DOB?+<)*jYb>b-`AlKvEI$>1gPMHz7DgVF*b_h29Cf#e8c+a06vNM4!&#R9P-l&};-`V0~A`H{484dx1(&I#@d4Tq0?JFE-7TOy4|2e#mLtLo6el1|Y&}6*|93EyK%mkGQM$n9 zSRwT~;T>K>dt8syoiyat5d$@+Myl^XbrA@IQUtF0h}e8El>7|xFEM2^DdoV>_CMq_ zK5S(nvGGq@IS6Yplb63BZF6!`J1FMqQ}z)XZiM^u16^m3A4iZn1#=DiK>G+(=7BIM zHBega5strsNbA&(vw`phD2_mwKJi4oR7u=wFjV`7W6e`RJb3(%I}a0Eo)ON!sHH0H;~dpKa`Q52{UlU7>F-BSZU$jc3dhw_ z2Bm6h&PNPHDkd*vNsG&Y@E0iVK$xEKH_&O8yto97DbT*ZN?dyZH3X?!uM#d-2O^zP zKh6fi7oeO5!uWEV1_SKYILP^!8lbz@H5tGso`KHCBK9;tNZ$i=J1;0rf$j?e-DV6q zvFWC7fup4(lEgE9OlRo7s zsbk&bl7CN;`gQhf)?k01;xXOU9?BEFH={eV&g%$1-t0E&0Q>->gNSb)NT8f6nH z>3-;k4|2+ZlnbDg0y_;Bk(OX(2XX0UIF$#G5W>C&7?z{RD``L`6I&a@Y(i}ZgG_*x z{D`<3n0!yY_6evhN8Wui)G7mrt@p^u|ARN2kW&-kvVfFwl0M}Dap?w;lgP`p4hw3P4Wy*|p_EpzhYu+2!D<-7WdgC~=5Q(xAfW>5 zO`*0xG4F&LsMJqxPXUzLiSI8Ar+9^=eA>19NUg0vF$lt-d zLFzeBm_Tkt2aN$HGk|VK2d%hDXDDUJ1>c1M5=mnKox2aJLqWMT9(;EjC?u(wzENFA zNgYRCXpm)`xKNHKo}JFh|xquZUBWJD2G7yi!deW{Rk)p|~qezR>f$$e74ncSz;&GtUFnMuGpZ*bXwJK@|LfVz2#U}CN zI)uyJfk?m9kHdlR1t`uynD|^s&3HpiMdXJlvFkWc?Hg+QCnz7e0Gaf#_P#{5k3MmTYA5~u2r6Yk7*x_i zYI4y02xvtg?CdSjdig4bRB)aI5!B0<1MPS6LYuTU>_Gbw6t^IZJARQ@22wYEVWkFn z;S5TR#MYoNo9L5gVYboJU!XVyVchXZyL>tj{v|JLNz0o9;V)1ef-vrQq+Na-=(30& zaXQd`1jQ`~gW?z4I1uP0OHe6G&Hlx;BaaTWA3=E)gh8njTX_rWw}W~#uoYj_j9*yFAupUq+qX6hunv%aRG}l2;7{IIz`7R={lpU(kyW`b^rMc3=9rTQ`rx8hN;Lb|8+Dy z_eAlX+_kTZ7(p5io=Z_*lzd8J$$Qo6i)Rbo-_Mq}do?$n86?N>B=6thvspZQ(v0LS z^_ZDlqf~!fDh%^FbodrK1A{=n-U<%qO{;386#E>`b$#YOccev~`*qFXDXMEdg+P`{ z-Mtku|IGfx$UCc7#~kNzVf~sew&!Bd`t83pd;1fnXo2lecuIVyU#|aP1Cbpbi4Lf>YCtt<+B$lYzY3j|JZ8PDc-)1 zSr{615C8shK`AIegMa(yPr~8CB2IT|V=b@El#Ki#V=;;0n#kt1o#jib68~)%%1Y#B zV0a=Z+natkOhJB%Rks=EY>v!=z57zj6kZ=un?3hMx@aD!=v?hjMuozG9{bKMdg>Zf zF9q_z?usejnGTdl_b|kM*id@x_DYeRHy_1*EuHt;=W)2X`eyJfyZv|KWR?5E zZ!!$jUAD}8=h(RI@F}KO$cR;V0K8SULDVvS0l(zuZ^t*?KNeDibgaUCntZ zf@j%jwZyRYW|^#mU)oE{UbyI-cVFN*kCo%39ow!2FHW3)9(v%{!%Z%X?>E#bs1&Of zU2Ochni`)CFhJCANl9z@+*Ea4tp9Vd{A}z_179LucuuuxAv4qq+3eY--zYxa-u>8rW^tz)cSrsI`4b-$dZ%#q`(E?vD*cHHbDPw1`5 z6XqVDwc@n5szlibUe1mc-%AAKt^NplJYCzD94YYp^z;{**VXKbo@{AbH6dEb(s)iO zdzJUZm+rddKl5ficid8T4Vk6dx;ic4 z%LLxbUtn;kI{q|i$BV3v8v;*foIPKl@k=ZeaXRm|V{w9=1x$`f$W!N9Qa<&~J6{Msk8 zpWn3pxiCMeJkX^3*o#Q*dlC0+&PV)rQxdHSUlCdQTrD`gTs(REv)A!le;;RBzA!dj zz`CM+r{OneetE^)&QUj}eU)ClNYXxog@J(~c*}2LfAMY3Cv)EU zr}NGiU3qQm)^B{%EQ%){@_c<}x_10jdkg+=n_Z>adePAv#tMgCoWJ95xDy$h|@Lpq0^RidM29}=Py2MpI4=^<$L)-?+Yg`r9b$w zVqLoR$+erqPULXUojaA`phvWA*FLW=W;cU;U)(M{swnf5v(eQn>&B|y!`gTtgN0v}oS6{Se<95ieHy}Cj~bA8|+%jvIGMGdrlxcQhDTHE~7*!8EQ zJi>Y2jwMfQiw}KrtC^8h($B9bd3)Wq#d@1W0#@~|wtVGeGHv?G`}Z0DUH*KjfvIwV zIRgU&*@rCr z|3thz<@eXig|=l2Uh0d~rulp^*88~Qb006iaOM=B;uZXA2@b-HHe4NrXB2gpn!i7J zt80tlZYM{dpVx9&yHD(3WPMcgc6!i}#KTFeZrp0W_sV!jV#bFlduN>y&boTAR~MXM z1cYChRUMnBDfWfS-t+VMWlPH!EALy<6usz-evyD_z02HvJA@Cd@H6r`xz>2zo?ZXe zlo=`d=oy_Aw%aoCUxC@pnBA?@MV$UhopJkd*W%fwcJ@s1i%e4gK5n&Jw|eK{{C6BO z`#{Ay1B1h=Lk^8M%YW$DUVm6PL;v|z&g8(NyOJx`yG3bTJ9mdk>)&0sbG<6U>T544 zZCVxtR^ zzh+m{$^stlOk!hTU`X7MF2%)o>A*wQ3)aO#x9#=jFMc$4Q{tmL$y$3@)TYe7T97zR z_3@#drQ9NlIejh_9~TBZ|9PjdKABy6zW%+rN+A0f1UmP|*@T&wKekwW+SY&G zrAD23-6nc>a{k zxQ9A@DIS&!rwTscH;J$j-!kQ!hx*=dwHm!!-K7gAG*}C7yRAFH<9u!%%M+EE0bo0s zm>3wCSs55uI2jmOco`U3g%}vwBp8_3_O5(^l)BzH1$NnK{-l77d?EzQZqEu+fBEek3?QWzK* zUNAE-2&gkKENEk7aB$*hXqYyGf#Km-R)$lvtU-5rxG-cglz~tAf$WS^U`S%9WKdwJ zVn_w=&4Jw7kp@18rw8%8mi6 zN(Re8&Y^**ft(!!>KPO<OwZO+YTqXQ*HR^<2^zav1U%Kzk}dege4x zw6YDv2JKNo*bGt&nwLQ}AJnJGWI(qS11Qc*89*^s z!2r462NVk_3<}`b2FZYKUdv-hXMo+{k_x@$2Q>|lxOXQr54v>+WPd1D`$2I9vbTgG zgF%6z80tF2?L*j8BK6ZDsAmWY1JDQzC=C=afOhb}(jg-QBO|D4U}RumL}4>R08|vr zA)3v=05TFxfXs!&6v!g5F(7M*&TqvGMGT<)mdF4)gA0<|Vi*v9g5*e;pOV3B}Ng09=Mb! zVgSj5<~H*gQW#PhG#E4)U^gHefb9Sg==lOOCP29m5ig*#$v`H<)-QnUuwfu)Tm)ez z$Oce|A?Cjja+rI#Q0;>Br9mc;Hb0NB0i+kf!|p#=&z-oj4}@tTvx)Z^%ocop8eH)O zTc?Kb@o}`$j(E?1k7wOqw7*{6Qr%s8tk?R9iq= zW02Yc6i&qZmpb7~ygv!smkn-9veLMYdHg`eg?H(A*mF^g7g_caX=k^ z!crBz>skDMqn`gzO9%3ONlr-wn>WJm*TE8x#P|@FS`h6e{C*pJ@d(QIp#Cq2hLrl` zwx2*{BdA{vG6`fNW`7QK_II$vGt9jp8dnHl#xrUeNvhumUpgQrwWF3Dh%`@GSPYhQ zKuib>|8xM#1)$suqH*O0TKVX2^%C&dLlOfh-)JzXfky<3z~fQn z;Fb?)EH96tgaLHMcM?M>LmERGxE%)S8|Q;tb)dSx2rO?3CX?agl+;O2sD2#ydJ=bd zB3iBFwL6Jz=PEF$F{puiYPk%M@f?_a*iC?`0=1=KBTJysAy^L&J)S^45!m=Fq9+9! zWx_pH3rbNSS4%uw3bhO)$IqY?L>+&_LZ1BiCC0}v zTgdS%q)&-G<&aXYfN}z?9K)R!L3swfe-Fw(pqdXfo}bD9TCJ7C02&i32A8@Z9U!wo zs&M5paz;;Jy)x`$bfD3OWbj_WRPY!+Xf#C;Jeq<&8;71wKyDrU;eacTV1~xv^B*X6 zfl7Q3jXm9h(hww-A#wz!&p^2xvm77z_yhTikpGB}Kg4V%1A`}nAA=hM=&l>cY!`^{ z$q>R22^9m4#8omdF!(VzGWantfZL~_odlkKZVZ`uX$+ozo*`hhd6^|(b&h@vd5L*6 zGdCFO6418=VVgSvCgIozZuT+7-har<8i2-z)X%Pd&ICQ@&GB7X@@*hY|Kv8~rQDUx@ z0s{j>0Jxu%4mLLz?0W_Vx6GVWkfa*}Bve3Q0&=`hW*%4^rmAi4@(o*@dkrNt!*NvR5{d5K9msVSf=$)EvF z0g%1-pfr~XUd;kpfdlFlD}ZZRP@fmH9s}lf$lN|CAAou~pcD#mn=XR_gBJs+%z*CON@Renhyj%ip!B520D=tQJjBHXqCvTdfx!lr5b_dpQx!_{vh(uG z^XwQHY%pR4v~~xQJ3x6Qn*p?YuACu{!470R7!$ib1NXWG(5b;C44^xSW1#IHNa*V^ zAXYChpsi0pjwR4IBdBKwawjOIBr(Y>TPMlM>!a9x)YRwL2X3pyAzaGN}(w#9=xKb9DIH=sAMAS zVo*3^3s>5?7qvuzwC_Q#$Y&tzTHN7_NC)WV!}10w6=z6{^+?#~pj?v+&S|jp4l0{L zJu6tv1@a%LmO+dvV5U~kc!Cy#0)qyF27?iU8G``>#0Q4pH9(+p3*=v9QxzCMqPTnn z3ImY6FrS0cA}H^m(ztyG(o3wHQO$&`{R7zrYL~#qJ`~_N5tO3nldcQE`*&cm0Ip0J zaHmt+W3sGCP8TuR5#=?K+-;O=?;=hV6jg) z{y}*Vcbx=s18!MdH5PW4;?8{_*J2M}NP7lUUs2PYknn|+IFMWm3E={GuEiB@^o(y< z-0L$aFc_1N20)=X5bnnoo}l!D><=@jKS1R?{`M3sSJ5NhHNZ1SpnQfL*4W%_!~m*k zKrSbgUa8l1RKz+ywP6KxI2+b&?&f#-8C^r%3Zjee? zyn$MFpmr0aPYLN~6Ca1z-HTcdqV~Bd>GNQ7E66XPmLRC#hv@Hs_E&&<#PJM>IhujV z7v$7-xXNc*qyubW3JNJuYNV$-VCfMwZVMXuAwCU)T#7v%(jvTI?u7NeNOLF1tqAV@$Zw%TP%D}(?qaor5@;^I*jl^o8e7poQ;~K+|1|H`qVF1kl7c(G_mY~WoKvjTB zYDj5;Z+;6hrv!>q(1;YaxgQ0F8ipDM&`2GucMDq?0NUk2egC2Q4Yc|Iv5y7jQ_x5q zWQ+(jP6Zkjvjfjsfm{R$eahSgvK6*ExP$>TP6aBf(vU(OqyphCP-_RYY9a}|wl{|X zG%pWI@%X|O;(l~9(!guw85n3a7eVP90%hR}N^OYrj41gLsTs6B0U-{{yPy$5Q0oa4 zvY@%FG^APsG**=lUiXm9kPRPaL)8JH;Eyf0aQol zfyegK89?(6kX2hnIOajz7(gQS4b-uec~VCb6IZbd6qaW^r;%N>X}J zL5W^+K>=vLHmJS<&3r+2zr-^*GXyb&FvK$iF$6G#FnBQdGx#%jGk{7RKZan25C%sE z9|j)=SZxklzXz+!aq9<_SiTJY3}Fne4Cr+hXci7Mb_y!{Kct!`5-asV=s5Oz#pa8D5Kx57d&{Ve=|f`oBe5qSu_q$2 zCn2#XBeAzIA$B;DcD3o6Ai^j1<9Utsp#f z)sT@Vkn2G6?6B6KF*uLH;uq8t0Qp7(yz+te@e7MXSQre1J3z6DD5;_CS}b?LBGqTb zC5c5Pr3EpGMd@Yn1&Kw)nR)5piVd?~f}D8(+P751kj_xX0Lq=9^)R5;HR#*{&^$k= z-HLn@F=$OCq}NJ}d7wTdWRwNJnV=K~s>$;h$SsFJtqYJ_5$hjdeuAxu2bEOmNG*8O zIuXRnV*rgPgM16BbrInLavkn=L`rILc1b?CEs>g67L%G+mRXda2U_A2pP83gl9`y3 zS(OM{K?IHk(#u;=OcXO@Gk|I~P<{iIkul)DRT%?}&IGTG%0s#@8suBZI0a}|ET{wk zVNQp^Ah7)OGD1!yjDh(OT;A%;acgWf$Pz-^_NkF?bK<%`A2GAKLptVo1a6!Z- zs80%MH^SsVaR-{i0rksa<2bPWC>r3J88o*KszE@jlr@;ssR}G#&t2 zT?4vT9@IC5lt-Ymgg|QqL3sxx3b7Bgjsdjm#f`zAA%MY^!4Djl5ceoCcrt)e8YE?c zdj2rIkX2lu+8mUQKrMODjtV^n1qRp(KhT;AkZmBBfyRVD>%Wr0tv!&>L1sZtWlCfK znFZQy4%q<(TGa*Wmw253u^Hqz zD}c7KLA?-cBZm;Zu<_V5@M$!lasnhyt8x@_21O!L2?|PYFgKJl6fmSS$eZ>qpQ1*wT#SAS_cEP1$1|J4zhInXS5@aBR z@66y2?p->9OA=&p(5h=t&O(TR`jUPOuHYUisKjG{n(4<7%HYf3$`Hih$>0o94iyh! z@C1v4g}~=sq326T-3c0d1Eo?>{|wag2jxl7$s?fB8&+o`=POWI1)6^Vl?F--I?!1@ z%F-pWnK2CI;PJ!~aK4Axgjx;~<2KxNI&^FxCqFqcCpD(LIJE@AgjV6;0E5JjFSv$L zV1S**0&)$gHcbcjJ3*xrZ1*3g3`7si97l!-u(_alJ5X7M>N^GoTLx>eJcz`u22?&H z#%sZf8DRYe)OLFg18C$X6`Wr|H8VLqBxEx%dq|K~>7W#l2QB$=xf$YD(A+Ypg#vRg zsBZ`w;VlNQ?*q+p!c@eg#5&0JpnWzO;GQ0;n?PX(DTg3-Ag3WjsROEoK%?K7?R!vb z3t}$922dZxngP})faDL5>7cn?kef{y%)#>vp!P1PB?(zW3yKSf`Ka*#>N7*y___>s z48;sp3_jqs+6bK>|B(|rgiXd4XQ|+H0c#~f%5snkKt2Se7?=zsUem$jdyrNDEZzwF zFCV-@9b|$Z1EgdD*+4BnVwz4(f8vU7%0@Mp9%&j>gM!+WpmrFd6eBjDgWLPs?tj77odaIIn9U&D$Vugt*ohkJpgIUN zet{UhLiRmsiviS1g48?6{sNt0P)C&*!xmqlJOnDGU~M}3gfC^bqJ}Uij#0xA7W?Sw z4!bJsDUUkw1}dpQt35#DU8uGr;u?FoMOg@e!i1c3PnoTl@dBF(L{0OsG6m#H{3<|U z1{xnhZO>7jpNNSUi2*~LqV(3K&L8$Yy*vXf%Xo8dg-X8H>d^Y4DFRbdiXH&P}}36 zJ}9Jqf|w056eQ2a7{C+^>6;KWVS3(` zP|gOK268!MJWrd!5S+WPsYX==awBYh2DYvXv@;j`Ot>M)Srpzw09s=YngIl@LP%u* zt@DD}k2=l`=~aNj1XUGiU9JZBOaxH911hya^$}$J4pQia~9}5{6>%PA|~uN1&1mG;anno$$OpNEPV51yHLHG`<3v*@V~uX;FaE z3g`r9kc&a{f1veSpn4BvcL4+FOec`KV(>a(^!0M+rwu^-4=TAqr8Hzt8RTzJ{fFvv zP-HnFos|eWfdjP40hA*^E6Iu(KqtE8Fo4F0H5foGE#g!wF@Wk&&>SdajuGT)23NQ-X3D$OWJkm7rM|$Xp62MiK2|h}+0F1>L>a?k&Nx z&LlrCwIUO`bP^Pl3>Q)g!E{3^gg(Gl#PEQE8jztI(jaCUKxu)rLI#7> zLI#J_LWU11g$xR*g;?jYKxq#$GNQl$TBQKF9|try1xmx9+)aEs#=Z^?R6l{n{6Tm7 zfMOWL&tXVoC;-owg4_-%&p_=3(E2xs9H@N=k^^B-&I9EOP|FT-PC4?rNKo2^&4FUe zv#2^jX$?|qLiB-7v4ZX3fTSJ5`4ziAVKeo`43*&4Cn#^mfO81QM9_FDXeJQ3i~_j@ zk?uix30Wm11VA(RpmivqbY8#!>IbGVfbu%1-3vVIOk-h=9PfP9G$^8LxFmCpt+cA244nH2!m!^E5Y}`Q0jj~y#gAY z1*I_1NntQic)TEqlCysES)RUxqidURDru>$nuDn0O_IQaEJ z)VLNET_z7ATY_7Q_6Snxc>d@_1%?UTTU$ zQGRJjW?pKsjsoZ?srbYkuyA})D%g`6n(!6So(#ndVc>PPpgTc47(jWZfFXbZ`D|Ye z@JTbEUPLx{<~5%ohXJ(K3KGXD&=FlwY6p!9fm#lrQ=CA%c8cJ)3}KfAtx^G{L{N$c ztr-HbLAO7E*5N?x1J#?5b_8}?L8TOE1sG_@EvViD<#*W5W>~ulpBiFZ0Lo*~xGcyo zF3wEKNma;5O)OAI&Mzt|EdVFt#1e)4B89xv#3FFafV4ozopRu_%b+#OppqQqTgaXx zh#Y8V6KI_gr0oZ~xeVlD(1174kt^QEI9NC>WsSB&19NiNZ=FP!59V4QMRUX)*w3OWQ0S^`2% z1h3sy$WMc$*QC<4wA3O!E&}Dupm8T8x*2f0Co!!gwTPO*1~D)-FNM@F137h2xRZea zOM1j!`oi)kc3EOdMp%CYR^lLX0H_3`N4X3NcTC$6B}_a6B>%zuicJPm?vi2(XonAE z2bU9r4}(90GlMt0Z-&hVNJ$#c;0NAS>I+_z7tesui(aPUE02-giLMWSS&XU^q!+ZK z1u}n&T*A6I`Z~J1y5Pxo`FRQ@`30an0&0Uo%PeT4grw3c5xHQ3lx(0j4X7kep`e_i zllwr4kAZ;!RBVG=vycWGsK{2xELKqUELBLVEJ-a^$jQ%3C+HiZ&0%n^OwLJF$jpO= zdroF?38Ho=&j20&T2Pdq3_6xHFCC^RKRFRpdB7uyfq}sT)P^Zb%*jjv?9-V+~KR^(MwxGmkzQEGOo2P5k-Fyw*z$mn{|vnT^Ya#0DoBD@CsgWa!?Qko0u4&)Z(q?Uj? zmoBi@8niu@lbV=atjGoLcfsNb)Ke;80FAMMVg%IU1hw@+BY6xAs-B=e9jE}w%u@hy zKm`rB16T~sq&|s7>8Zsf3VEfuNvTDko*w83XqYCj5{8iclEfTXA2BmOuh|9R)fU3DhP4^~hjzh@i$YsMQY>PX+e?LGx6g+iF31Gafu< z1IkmNo*Qy~f~*Qwh9JheQDs3pMPM_D;Do~fY41at#n8wG_j~j5OJM$j^nGEyT(r(F zqR;D+n46fM3TteG@}5F@MrLvb*f?;<7+geRcB8pKbtR~r0o{@f${C>EFS5HKJ4`_; zAiXDq?=iy+dz}mNE2w`@zCS^ACZtaT+ARg@Ntb}fcR+jWK_^*(ZWl+KpaF3!C>9wQ zm>5_XJQ5}`#4s>0urRPOgn-%lASZ$4QW7RHfOw#>WzeiWNEc|7tpt2;H>h-kv~OT# z1?ZG-(AXr%))EFAaQ_!H@@@xSc?~LsKq@Ms;|`#E#X+fy(s3wA2?T0^LPq^TYx+TA zptUhDJ2M$T;{?cKQppUUc?Zy3H)u8#)}954Le|n7F_pncU$;J9I6kYHe7U}a!n;ALQ7U}Iol0PVL19cKjE zgALm64WdC}AR07y29g8q6^F@z%mwKM(fm+51fb>#GB7X*K{3ca(0S<~wIKh4_>NF@ zp!FaiegFdl14vI0R6H0;hchrRfXoM-%MY>}G|vGtCzpYN0d($q0Rsbr3BxCaAxfq2{ze&7H`=0PaW6gYp+b-M@r^fdORCa;W%rsJqTV<*!5KBUu<2 zv=|r|B-j}kK;c8#xHU*OXq7f-$0X%PP%=V@gHA^P&9%Yw z65KnInOBlpl$V$jQ;=E|Uy@OjnwS!wl30=m-$Ig;I*FkmbrM5K>LiAW)JY6AsgoEQ zQYSIAq)uY!NS(wmA$1bNjMPaC3sNUBtVx~3up@O6!-3RE3};d&F5~|iq)%d4lRk-IPx>T=3+a;>?m*SQNT0;;C4CYDL&hWqfs9EEDjAa)Ofn`hcw|gs zh{>45kdiTpAtz%JLqo%VDL)JV{l7NV(?8Y zVsI=dV(?9@Wbi7@WAG}?VQ?%>X9!L$VDL{aVerc@V{l1L2B|LvU9sSnnp6a4Fff4h zCTD=o0V*iU1m!)i(me1yfmdk``0@nD()7~e5(bc2C8?mM0|Nud%>1O(B9OT-A&~iS zwxcftLx3*>gRifCN{W6Z*qoGq$E*%873D(e{-!Wlp{2m=G?446_-IDl`HWnc&f*C!yllmWCOG!c5&1L$-RWIn{4 zV(=Z-AcsKA1J%n2F^JiqaY;}s6r_rQ!3}H=f)B9|bWZ_7%nQ6*2Ba2rW)R5jpfzfs zyCp!aTnHaznite>AQ}|Ljtr&X9to(Q0xIA9!TVl7_m<={lrccg?n!1~V1Sqpy6*yV zlZ6}jY$DK^79e{-CPVB1%`b!F5PTLn=(H4&UQoDzqmlt)FGM}WZqPUfsJ8(MKhSw5 zpxG|iNH_xn#69`YGe2SO0?hML zMnvd?v@t;~IMCP)q~8GQNh8~DNRc_9bOPEt5Aqc#WROjU&H57dA1KFw`U0Rf7pQHR z0i6*^VF0a;LxeFgeg^4>t>A#U1{6mi*AR+d$jmaREeJXb6Q&y!OQ299><>ta0gXby z^ulZ=thWL@rwxjuR0fc4h^@K|xZMr12h>)Cq)pK5J}75{S`o0c3u-x(gG~du1B5}Q z;c^S8jR86*4-|SO43!MJ43O{u#cM9csavQq12Gr0YPSR<|Dd`IbW$KFMdmZ4GeB<9 z0QnZ=HV`J>97tG0d~l3@hu zM}Yb;Q1z~mt9v4XOF$Y^6H7{qQo-#EP~QS-mrr6b)V_fHg3MyycmO#7}l9`(tP?VaSS)A%v37IFkJ!HIQK>klUb_L!tQ{)ziL-#n}uD44}Rp z$R3z|p2cCH!CVxJU~)drzKI3!m;?3mA@Shj?CBDckD>)0uL#kQe2_Yjk74lvk}F9? zaTd5w3JO!-)Z*gA^i-$(3P&tr;ov@NP`)SZC>wBifcmUK`Js9618!0o7=*!X*n)uk zoXq4(_tX+-M1`alFdJ@DENcfmjz@l9-(BUYb~xm{*dT z3hrZq`q+>}{oi6i$fog5>04hR_fFn>~igo=VEJQ)45kkxa-8%+3Zw7f4BI-I1P>l*n6QEHsP>%x=MzEE@pz#sV zo;TPitvW*tg8_p&_$*1tm~<#Z2!k7gE(6$|P&Q~Ufe(W#LnwnE_&gAQ1{d)8laRB2 zsDDZjD9wT}W$^+^A+U4=${V281R_3QBf6l%1vF1p3_i&V6lb_jBVqubF$ zTIZnAQOHOl=!Qtp{1|BV7j`ZO%wEu%seJG_X)*(-WCx9nfm+R=6EPv{YCyRba_$ge zlR>6pU-JoD?}@qI2Dct$`&1be7>wX+x+gv7q*HF+&VPDfn(l(8wzGb*6~4AHx7D4?%ru&}v20(h$`02K7)u z{V7NqfaEmLDss?jT+qlr$OoX*f*xzsOOK#)dqHFM*(l{2s@o81KzRXlrY>j~AE-SH znxg@&Cxf^glmbC3GeKjOpgsU-jTLBi08~mq){!?jy^F3@0roH33)Z-GWXKq&*eET~Qb?Hd5qMIe=+)Ch_V(7Z@7Lp1oby>f(2{fZ;&j3124O1R;sxBz4 zL3XE^BHcg-3TbTd16lzg)0F*w=z$uUcyiWm?Dna=Rmghh#0Z`i` zm@!YP`$2w&lx!ehfMzE_YY-5%B`EiRX7|u*JbZdU;eZ-SAX`9nml8uL1L)=f&@OV& z3J*}-0~*VQonZ#?DJWNg+GL>60hKDCwkN2xh3yQ1l*XXZMo=jPq9L^ns3Zf8@PbYi z#MNd1g%5ShOVF-7(9R^#s4sH+2U#3aLZatIV*G);PXttof##4wttedvJ7{|cl*=LG za-fy7pglE7;59kP40_;muRtS+iQxUrpcMv5;8Y44vj_1K87knd5l{-P0pET?TYDg5 zKh%#0Q22x50Tk|tcmUahXmcxoOWiyMbp}ux0hM&19VMVV28tU{oev64(4MXguu9OG zddTL+GvqLU(kdvGf##lJ<##1`b(JCm2r@w91rp}u#S>`%CnOhv(gRr&or%Ir}WuS(CL17H?FKW63rF}z+&qD{5(2zbG=w2aE z{s7&Dl8n^C0hO}|aqM{&54ca9DIc-E^ z1qO5o+PMe8=rY*&9t;9_VG9E$MAgyAfPjn)#6e^enivp}iGer>(+^q^GNPlOp`o#< zxuvzOy`!_MyQjCWf5OB`lc!9bHhsp-S+nQNoi~5M!bOXhEM2yI#mZHy*Q{N)e#6F1 zo40J;wtdIWUAy<}-M9b1!9$0S96fgY#K}{q&zwDX{=&sem#&lpTB(l_Wj4tU%&tS{r8{Z18;F3XiLz*!(wM0yyiOn?E(fKtTy7NJUj z0l|i_7(q)ODLmf-xqSk=dl0oPjVubPaj4fG0=1_>EnM`L83TBR6(Iw%mD2eSZ2m-U z4T9Dx!+Z+r(}U(>AUz_`$TC8Pn(jdOAK4|yq9C7x_F{oXu|TWEFAjWnf@)ZoAwk-PCJxC?U^`KrBs1* z^{qi+3_3FbbcQ%+)i+`^1k^`?jckDS&g6qvV?jnAVBrB7=RhAz2904r&P)LHyD{gP zK=Dgiegf$Rjmp4oqX6vy2Ca<+^==V%BKM3zF$YRZ*j1wY4|1MM9{8+i&P*! z{gvX>k}{U@7%^zn0W|Jb2|i;3v1gxn^$_zh=g0`e5BRRV;>`5C z#2iR(5>nEE#x6iRFObJLuorKr?%&btLG#3*<5rv>OprxvILcu3rr!c@)3V^~1gh3HP&)}!Gl0f((ba>@!KD^7 z{{p(J2$ar1=Zk=13RDV$)@DQ60;oD+DHUWU2!nRzCNgA#&qV{}R?r+A!aR@(pqUhy zE=c+Y)yzo@$i9d98WKk!b3tKO3?9J;&6>kZ1dUokW}86rkW^j-Ed@b0K!I*wMGsk+ z*`T>TQ2fDW6Cieh&gcZCGLZj4Ev$U#NOm>@dixIM2L%RDjs?|kh#X0c`~+&NfzlPo zkDz&aNW3DKMWAp2)dirM6I2F(W|cs71jy~6uuuTsK%h-tU^hCKKMWf(0Nau{*dkJ zkaP#hdFcLtg)L~uH}0?m`PdD7!xL-{8Pp$CVsHfSlmYd=VDrSF`8!A{4Vrld^%gJQs1-Reh}-C zh;=I2GSiM7sNB*t_MK-3t;sC z=*&1!Oy@Dc(g-M)Krsm8<4^VQdH{TO3TQM5)N+ONd_dzZp!9{UWO8FbEyrLr7`U#0 zueViT0FA_DgLhDuGvqPYfxHGzZ!p(^)Pn>;qrIS>IBNdDUMhinh@4)jmu~zSu-^)g zD_z5Ufj^8vv4L4XfLx6&WYf?>7FI(LqaLY_AfoO;4tH|Ob&$WX#}KGw0-25oH*(Ae z`4~}iK+a8or4#bagVh`i45|#E_Pqv!Dnkmm?+YqnAYur2qozk}_$!7(lDZK`eynpd3!b-l@c*lG1{h z#G>@F`0~u0l;p&slw!!xJa}Xe67R5`6rk}S(2fdFJb-Q}1?|2EjedYyh56ufR1xE_ zxbBMwwJ;#2g4!^cCPBttAhUL)-X9Md#{sRT2F)XY#^oXRgIi9()^p7$}Q_ zF=!-$W<{zHh8|e0KSU}bTUR61877ZG{*_yA<7|;MYzfnP@Ls4XfR;+3uu%W za!W}(1FHK$^9#8Ag)2_b!nQcIBsH%L8Y7_bO~_c70(c}AbpI*nWG&EW257bbG-3(q zK^247A4B|zIo}0JyNEgjq84%jGpN@EI_(VPV^A3f+R+0s1(fnZJrP8Sf;z{8JN%IQ zouKvkAQM389^?v0ISb+;rv^}(2gyQ8A?)@OXP*`W=oA}Je+*Xs;>*b(cWA*+bp+`E zxdeAUfZst5+LM=GoR*oFmJf|8kn_Of9-uZc`U(b+uR;BF&>SUb%n7s~2(-5okzV{5 zJQy6oW0s(C(0H(El#Zi=#`i(>C}q3$O^=mD(>0F9}GR%C`Q0#%)28eYm#QQ5ZKM$Hf zQ0)S(?+4|sG6vB64~T`&MpDZ|&P6{@s1kN|$R7>tYUF`7r zF(PCj>y$uuaDi3{fp%np=FUJPPoSMyAQyx9ARmKT=%A5zkWWE-V?cK>foA4Fz5&gm zq1QN|Q8P%r6~j;lu8%=s26F)BNUkF)C2I4_Nopf73eoX_n>>*)K;MQmF^Boq<7P*CcQYG?amX!3K$)fW&TrvO)8Ib9PN)@M8e2 z?_ywB0~H6I>3Lw+B!(#PDQyf4C!lOk1_p);yCyL>GkAc{XnOz^_W+$ox*H*`vm2rp zq&@&D4w@6L*p0Aj%5H=^cR<-7_gsLoeHa)RK0w(Z_i*fisCQyuV9Y8z>v3USJ%&%nS? z0A+*RHUr9b0mUhl?FI^SDBBfuHtGS0nV_(;fwDnyod9KnP62FyvO#WJ0A+*xbp*-= zg~<~r8x$`b2O(yH`gtl)HYm(}plr}Nu{lsSs24Ti;3S4%hA;+@+cq3Tgy9~r8b1b* z+m1llAal+ju|alUIXDS?q9BO<V916 zK>h`_IYD(NXpJViSrA`=Mod6$08nceR0A`zep2oXZM7~u?Z z3#J-S7&4%RF3fDmX)@UKLBbSMA4nV&vq@mrLBb#1PEbD?*K44{#%H1LV55EC%X0EH_kUO_XgpcJ9NP{{ykpMh2^fm%11dP4O0xF##ZUTj983V{1OnFd9gH}C) z@&UT}pdK`+O$M6Lg6PJkA2dDzI!Of7YXXg)fKnW$I?$<>kiIZP4d{FqP^v>-9gWS8 zpne+Y#9)yAA_h!zL93WStEfP62Ri=;mpV}BLi!1yoDEvljA<66Yz38UpwNe{hd~Wb zP%Q!)M}g!LOfx`zbI_P3Xf-D`|A1l!q!(lZ#7&rHKx_onJlMk$B#+P!IR_a%?m&AZ zKxcSja|0;MLF161*)dqG+19Wy1?3Y^*#Sv^ zkdZ5p9B6b2aX}+Mpd1AnO9IV7fogwHT!VUpFts2)s4mn+s#!rbYB_^0*alGg zf~kd-|DbbVAgg0Q?gF_Sl%I>h=PN^MahMqB>~GM@MbMZ($Sd{+e<0T_pt>KFcR;2i#6k5es1$~U8nSs1U%~W1%3e@P1fBg28Z`i|^8}>^ zMBM}G(SpJY)OG;r2Kg|Z0hGHyHyJ?o_95g!E2kj23zBQ7J3a&|(?P59V6zj5Rt;$G z32{aW^7shq*eJ0kz~+rXbs=O#8#J$$!%zU7Cx)z_0*yF==7fD15O%}vMF)*bgVy#z zS}getX$%?+S_~l9fZ`k!s-SRAV*uR*1uDBB`BZ~}6gxnx#US%xpphq#ji3_^LG4A@ zhzV$IJ}5pwb5Ed?Wk4kkD37Ev;Bqr${Q_v*6*PN7nR%eGamY*yVw?bCK5^j+8rK4q zp#cn_o32v9>z$|>rs(Elh9_v{45%fS#$W+mcWw$j+X*HLDp!5Lt@v~Xka>`p1)Xc} z$^aUb$z=!tpKF%P;L1?JfIVGN7RsP_Cnr=WvlTO}Kq(hFRYCFyq`UyR5fbyTl!Z?< zdb)vyFR1vCM0*f9CE8;0YeP*-cQhN=b%w&P+J4!Q$&pb zsmnpGg4E(5S%MaulO6x6zd$8MwaF0AQ=#*_r?E}^1Apd~I<&7CE7|a+z zEYRthsSFkj=HSs%&|Dv+ZUD`MfO_yCU7-CzpcCjIz6PlQ)lZ=HC!pEs9OxN##S9u? zSO&fm8`M(JV$cNdd;q0(h#x_7Z$%6_;8GgYwk~D>-9!j#QPeRQFjRog=`&!kfYP8E z3uGs$@eZmFKqiA~PsIEfsAmFddw|+hpw?Rq14IO*IvMPH&>3MM`#^JbNerMnQb0Y5 zcm_}p4RSL8s8s~=H+|A6WcCRZXP{XU(0n^=za6p+Xg@J%e;BA&2686dtE0Y*N zcTWjinFKzkT;j?k1{To0QdcH{@5M5>G6{TMy~UMD;PcTPu1o@-Ldmg(0J|DNerqW|6iTNpvJ(!pmB8)_`GI=tCPUBwZ+v* z;5)Azu1;dm2Hp92brORP0|P_A)kzGx3=9krS0Q)1C0v~ZK0hGi>Ldnp(75r{N#HY{ zE3Qsruw-ChXt+8Fyz;u^>Ldnx1_p)+S0^zzFfcI8xH^deG`_gtDrh{Ffnmi}(0DBa z!-lJ%@pJ};9alkPlMD<8u7bwA85mAnox}hdx4&=|G_J|OaN{ayjFo}m!PQCNam^Q3 zL1U#13?HseVgQW=|F}Ad0kkHF;TmX6l!1Zc+9U>0iV(Oqi2=0fxkG6p10xFqgT%E- z3`{Hx3@X8w&%2$F)fe>?{lnA=f4`aIi2i zBwU-sz{$b@zT1hLg@GaG+9U=Z76yijYm*pwSr`~vu1#X#V_{&JaBUI;KMMoHoNJR9 z1XvgtR$QCJAjrbN09xxL#KHhx>mysGNSr`~*T%W|C$-=;}ysFCSr`}|T%W|C&%(g)=K3TCBNhgRAJ-=_n6NM~u-ur$V9LV4AaG+6 zgBc40gUpRd4CX8h3>r5kF<7uLFqqt!#9+z7z~FFW5`z^B1B1_vNetF33=9!BCNbEt zFfgRtn8aYu!oW~)V-kY{3j;&VjY$lSEDQ`CHzqMSvoJ7BxiN{sg@u7(&5cP6uAuO| zF^Rzq6n{4+F}SlZFkHAXiNTYFf#J@LNeo^r3=A)BOk(h6VPN=jV-kZ8r~tS*iNTMB zfr01dBnE#_dbl}>Apn#fZcbtd0;PwWlNiE4>EPxhhHy|ixH*X-3go_60|U>k zNer?a3=Ar_CNb!6FfbV0n#5qu!NA~gYZ8MU2LnUMtw{{d91IKzwZVPIGS(l5fmumPlBgn{7%NWTOF!wryn2?mBIAoUUq3?D%1B^Vg~fYeJc zFmT+N#9%GKz@Ttv5(A?Q1B1bxNerAa3=B4RCNXfyFfe%BnZzI^!@v*%QYXW}kONYu zz`#%gQm4Sc&;e4Xz`!sCB(K20umB{l!oaWrB(K82um>cs!oY9>B(K82a0Mi*}S3M391Spm_Y z79NBK-QEToH-@MKjfH^3L30Nn8Z<@&qVvEl4ait9h!2{TfzXhnBS5V!5Fa*H2f8N; z#0Rx?Aao&!VkidRqy}173z{tg(GdTF#^^u_G8sT4ULgOcg18KzJ?9_>X#FIJ&VlOB zVSv~R>J5R!LF2+8IsbGcq!D}5~%&4F-(v+XbcoYgGTotG{pU&Jx?HhE(64$keLindl?cx zps{<9JSdz&qi3Ldoj@uhr4tYvWIiaZfb0UP0i_p^e?jgqW+-IPWpD(W14=g_agbj? zBa6BWAq=27ZBQQo#0KdFr6G{LAibb;1ac>6-WN1J3%Z{U)W!kLWrExTny&_>Es&X@ zIbBft0);2Yd{7$GW$*#FT|ns!#0L2nl-59Ig6smNH(iD>@H{an&4JtrnpX#zaY1P=B;xXKsSB)g7@=-dQ7l*0i|t_y&%7X(l=<`HYm-2(m03> znv(~ma}XP3J}9k&!VTRoptKK*yCkstL1+Ge#*9H}62b=M2bg<6c>=+Pq%n{?L3slv zp34BbtqY2xgVrA8GH*GX!aa5p9azk30p`$g6RN_9al1dQg|=} z$k(9xUeH-xAX7jsQwH!#@hWhx0;OC~Ixc2_g*B*e2MRk-7(w!(Cqp1;y$S=!51_Ib zRK9}Z58{qg@SS+R44|7qK;+bEb_avq0V&6Pz-1A{ZipQayWPQVg4qo!6CmY@6Vx5K3|a7! z31){211L@*c7V=yfceh{yuJfshaXrC#17C(LReV|aR;am4vJq#j5vbW2Z;fgeV{e^ zu(aX{_ASKR0I(Y&ZubSp03_T%ZbvOYiox@-pwtLSr;zj*0*+gVdm&{7#9S9}nnE@U zH4Z@I8=%+$rB0X|{lT|`Ld^1lvO#$v4D4Qz{U9DB=3sgv!Ez8i&fqmn5c{2>_Cs)fQ~tUW<$O_oy0Jkfq{YN*(7jFNdP*=q4I1J1L%%i(AW;>Kv08c zkg)`tXOkFeL1P!sCNY5S_6CjlfX09lo`KetF))C}d_Y~moM(`+hKgsC7}^;a7(in{ zpu5sro`KeGF))C}fPE zSgt|FHqJbo#Lx}0A3COV=NV)S12mQd>e9V!MNepK}0sVXu!y1tPo=;*p z2^yn$K8axx0|SG~^GOW57#J7~o=;*p3RiP1o=;*p#lXO@ z<@qFrtss9qpTuwww9f4LB!(-XF{kH~7(jQWKY2chVJ&E^>G>pv`wR>Wf1Xcbn9RVy z!0}=d!voO0h%Y8F>;{b~y_m!RxNHN2PvUhf4OdjpNd^}Lt_ z&QqYVCOy!Y(u+w9pdJNiOb&Ff`;r%v7^W~VFl=}+iD4-N1H+ydlNi>4#?)R+0+%&c zUQA-x#=yYv;Kd|{J)p5O=vdX87n2w|K;Zx#)B5oOGG+uC;{)CQ&hip6_5>Q+(g(%& z%SqstIcSVd0(3|H%SjCDL1St!A!ARVF+tGTBPK5)V^tnkCoyP%^3zMu9ybOC&=?(P z?9S&Us4vFA02(_4-SZgn5;CR*8bbt)DW<%f#4r_<&t6Ufw+TRFilBQ0YhF$Q=kWsQ z*j&fUN#K@0Xspc;l>c5%0?(s?#>}ih`S9f=h9*#WLB}RRV`QMQxiv2*F?52$=_P2b zA!LjWbZf+h9j_)a)Pd3ibnJD?E67+OXv`IKpW=d7kTJtGuO>0f0F_U# zCNcDY(#xw!4D&(x;MF9C6`*th9jkruY7)5J1sbCTt&{xnY7)5228~79fb#R}Ner!^ z{QP*q!h7K>7OhB!(TJ@OnLo;WQ{7Ur%B<4hm1`Sn-P2lNe$^`Sb21hR2|M{dy9^ zAqED9Gp{Ex>}6nJc=CD@!!nTk>q!hVLFFuTY+2;ZB!*d_{P<=PLo6trT%E*V3|d3| zW)ipu3K~NNjon(jnZ(cq3K!^Dug9B73=Iqn44|=D(3o$?n@J3fp!kN4RVTce#1IF% zFXPQ522jrgG)4^?yRLXMi2=0d3pD0y%D}+T@@5i44JiE`gp6TNcr%G12^5Z3A!FQg z-b`Xh0LAasN#J|3SG<|TFb@sWfFv)0uCn#8?>te)@I2B*QXHiEU=p(>}+uQhOl$Meuc3?Yla|fP`e3c z4ro3W#x6v152(ii69@I?VQf%O55@-F)dFIJTHcTzBd9+EntcKVF+>DHf>s;iOGJ7@$0)b;`O&p@k~ zKx~j(L2D;r>?CkJLE3R3SHi@T!Epc)2i->v69=872V-Y}%QT1@$Z94Cy8xUHAZ$=? z6{a4vG7H9rq#=l!DsbFG+H0Vg2C0FBBPh*6#6kCz!o)#yj0iTU^#)M`T2}-U2hGnR z*r0HSs7VLcPY`wnI1fVDx!`&M!UnBrg6V~fFhRsYt85VB2zxBdXaof$4(caD z;tL`UT9*S82Z_Mgpmnw|b}qPW2paQ(rA5d%0VM5$#w2yYYehlhParqI#6fm}(lkgM z#0K^7Kx~lvK{sH7*r0R_T5$&&%S>SanFAV0gp6H*NRT+l?+|xF`s5&z0lK$63tYZH z##cbAG(daXLE|*p;PeR@tAMx%HpT$qfz*M*C>vbQL&j3F!F4iZ>?*hKum@7oIoT<9OP%1I3!(y%5F&iJ{KIvkTD++2^zxyjm3dh z_JY_TGa+#X8G8VcAaPJWgsB0U3CRzj)CLMWkok~tJP-*Q+X00gX!RkC4H~gPjGutk zP=m@YSf3t}`VsPwlnc5O6%(eKIJ;BKQzp5I$%;0AeD7k1P)g8Hnu=c~Iye_=OCh z6^fwI7D)dZlrD7{kjrmmapdwFA`V)8icLL4992Ci%|L7hS8MvH-jBi5hh4g_zc@b1HGB6<zYPTo&sUWswdDo3)uOZkTtg0R*Qkwv?PO1yTc`me4YxZHxDXfK;;W1;RIR_4cg}q zsvAKkJ%Gwq#5y6!njM%ps65PI0G+;vZBHx6zm&xr>RK8|*n#TQWQJUZ0<`!+mxZjU zDPq9yzIf>QiU?CduBJ2`QQZyUA#6Z|CTN`#x-7)qpwNe`;e?&_3>s5Mzq1-$FJvD! z`h5|g^D#i}BhYE3pgf%pT|)|6`vmeaW$^^cU$Arovkl=(P%9JU9}o@6MUdUkpI@Ks)7Ob|CL9N3{!82WUS! zvK^pS2WbC3Xhjrg-8ZPz0_g{ZTReCd5J)tQ0VWPQrxU@0AKx@SyE`zBC z-5UuCBLxO*w_t*1w?Hc!A#n&g!3(r@3e-LU)nd3-xq-q9RLX$X2ZGK70ku0obw~jN z==2a=x(vAU? zoqpnX1|QUP=Vj|KxM^gz4uK&RO#Fo5)eav12`XjB={ znUtV%7qVZ%5WFrBl%_$w3*4!i()tKJ9FrM9xe~N@06Biq!w}>qPlOeKsBNp1L!?s5jIo~^m7DFT7&ndfzlRoI}X|ZAU`AXF~bAo{$LFAgQ;phD12Pd!UwdD z0@SktrEyTn0xCm5t9ub=`ysm(mXbl`q!Re-Ur-$gDp5hJtU-IRKz9S@f$x+7?P>$< z9RrOMq%v4Dfa;HYhI9r)a9smha{<}cnS#>#0QEET89+G>xh)w~6GHY-WP(o+0*xtwMpGCVAoqKKPSOU&QzCdY0_0EhTaj?dLhe8U zjnslt6ZP|-F@q7fF9E8pl90-=WCoB7sLcmDpT&@&lmWyBg^31(IrK()>~03_gaP&G zAuG;7Aqi<2fOh}nfcJBO^g(<>ZU2Dm1oezSy`p3!-+=lDh1s73&laoEdrLgqp04^XKF3R!g5gWAoY8Vr&fKs{K{Cv z-F1+(3@VR6wG%`QEFC~ZA^8^OR!}_v>*+%52c;a4jp+=avr<9j3TS13FL-U3D+8z< z1T#+rGe4!1Ni)d><*A(*)vaUbnA9U{YA7ovB&c8|Eb^QhZAnW=o{!L;i z&ddWZd`!+S2Gb>p5Po7wBB+_l0HQ&u6Lduv=z1=YaB^xUIHJ;W^7BFIE-f($)a_x& z%})U@X3R+e-R#A{5T6W@h|j1j$S+}FNXyL!4S_PG6+z`I4H)7p4H@Dq^BCfD^3y@{ zIq`X^6(xyjC8;2TVUfWAyPNFCe+YOFTBZ-0t%0ckO)-Jk4FWEZJsqI!1)vE-+&K!Q zoEGH=D7Qe$k7A?}1eSl1b1&$0FVGk>Xzw1VW&pVebUqg(cf)ccm;l8Y zr2Ig%GGXH_2)TF$?C}XISwZD7wpt8Z`RT-fsM}#-ufTv_8WUT(Bbx@%11jA?<2C4h z1GP&)ttn7S#9kI7n+0+iYTSY5`ar#TP#+t+Um<<~rM_GSSn7tgqbciOf%04m`0Su0 zh8TuI22g()RF5O#3n2#DGYlCu1)V1Y@(0Kbpq>S2EDn1fA=qck$p@d?nUkEGSO7V7 z4|?JrYEKQ+n!^@0l%`vd{}FrjATbLWr^{zRAOA&{1*KYWaSpz@2~k6WZZN~{R#@6c z*Z|QF%Ab_SBf=jLUm%c#l~aVbqy*7LApTe#bLfi?y-UHHw5j@ErOmdirkw;*bXY6 zKz$R?d~XJLS1Ga_a+wY4^&!iFd;{7A3K{1Dod*x;?^8RzAt@7d&ITwaB4Qhs-e58y zpMdN}7YB)f&M5_j7o;T!%IBcbVn~lofdMqy3A)V%l*S~3m68Jo+LnBhj0kkR}G)}AnG91)5 zU;wRC0QL7lbtQ-fjqqX*1z0T)3MWwh1(gEGeSc8h1Dhj()kl<-qaYKJ#~VR83skzG z_tH`OwYm&;&=X!kE(Dc0AQ8~GMJYHpfbyRn11R@V))xku3MpTxWe=#Xg0wCm=7MGl zK=btE_y;tr3K=^B#TRIt9kluamL5PSH^ei5Qi2y>3uj2hszE#5^d6U@sRyEhf->4roRTdnyLyHBdT&_2MBdV(g|t z#v!n~72>af3l~!20FoO)A&JfBpiVESv`36a!1^zsl!HH~LyHjx$hq#Hv9Q22nx z+#xey=<-Hjc~CnNlHSqfA^Jh``1FHXybu>qR?Z;jHqbf-P$~oE7*MEy{12*UK`jT= z_71_i2HciT&d)7KEJ{UbO+(xaB4KxkgV-Pp85iJZfYBf^h6A@jOP3iyv;cVMpx+5b zgT@E`|NjpfM`!@k74rjxT`t>4Y!;F?d@m1LiVQXaVjhA73&M#H5c3&eG+YA8Fo0}g zVt~=GyVXC`gZ3gYFd*ok=cXSM=`?k)ZPZNRoXl|`w8b>5;iT$;OQzHAFlGI*|2|Wq zZvJX92h)w^cRp2p+Rx#rw?C&U3Ti*pI?$!;ARmFa4gde&S$=(IYg*w(UeLl^1_p-z z|9Kt0n>q8$ko-3FFI49PduGUB3`h?HXdCu{4Z*%r184b$$eE0|(0 z`*0#p#UD#s1_rx6y<4;Fr3&)qU6eMpWjGM|{l?k__6r#pI0Ln$Z5bGnkA45O*xvqY zJuD56 z%xxJGjy9-I-eUiGY0}v>NAztO8eYZ~vu?AWU%OEG{9$ohh6P@|<=NZqtMV2IyTZ5bR?l(rb}vNsJ+H!1jNX3Nm9JY?I{-S)@*%2eX`G;J9k zykt^)wa5PSX}u=Ri?3}M7UUe<;(83<+5qS$p@}FE8J|Xlb98ErWv1 z(b>5N>|K97eAnA(1PaeJcDx7e*L`R{?b;=0%W$DY)PBc7`z!w^f0X2Av}L&9&-yR$ zko|#j4F}FO|7;i@e33Eue#qW2S&H}gR|8vyfJ**?DTnP-ili#-U&`AuEZ7oUqItyL z#Cy+C&U2vf`1ecY)Dio@jAu^H3VOB-2Ao2rNk{E<#aC^9bKk(0f#I8!)Tg8N!ijde z((mnU85kyrE$TgHe_`gdKRQ$1+AuI^&npWw`MC{r$+3_D>)DuVPYA zv1K@L$zA^CNqYsAPdR+XrnU?Y%-u`!PTAK-Ywuk1+Sr!iL(tLf45#gjSEcx5ezCP> zDEL|PtmCwO(Siyk<^M*u3=Vp`9rPwhRJ)S4Yl2YhRpmeUEarf-OTrU68HVIr}G*^*&|JHMC_|z;s7v z);at3kBt+)zE-ehm@uU*LjJrx!vyhHuh+BNG8EjFZ7wzj>{wLX;x3y*1VI_L|!$tf1d_2l}5$d)K9!~yzYM1PP$}iCn zs1vnis1RJ1lyu2nNRmfSYJ-q1!wu&Hg)=VMSDMdTlWD1K%h14GcJS&Y`~4jJ`|iE6 zvSl#Xy?iszWqYF=+azaBvan^qR$e2O_uyh85L*62=?^b%flDeF{h$HDhtUV*A$%CU zVBbx!dKldh3*p1)0A>guMk}nm0ag#AAA~~qFk0jPb+9~)PFN4&!{{0D5I&5)zz^ZW z=!V1B!1`hIiYf>nMqe<5@L_bpo2y{;Fj`DPB4#J1g9)1u$jNTy&;ltS2=mJj&A4VTggYaSW3CzT?JQV7j6N_O!iUiTkq|zNejo+m z!{~&^XTbVl^oJ!7K8!BNh45iCgFb{0qZ_`T2J45>3g<(2^mYA&4Q9!J2`I!JYxMb0CaCm_dv|oWX%1oI!{|gh7-+kb##Wflu6)vKe|A z)-V_`6f+nzFflMP1TvH`faZ-w8F&~3!QmjlAj!bXzyn9JbAkjT)?u!zB(A&sGfVL5{(Lj*$=!%PM{hFFGrhItIm3`q$+!zqS83<(UN{f$2v5*a2loM8CHkiu}9A&FrM!%2qU4Dk#T8ICdhU@!rP zdn&^jhS?0l41~hnlwl5oJVP48S!lSYGn`{EW0(sL_Y8*fDB*6-Fb^r*GZ`)*g}Vhq z7Q=joiwu?wP7L1QTvWnP%h1NKfMF%WCWhS%ml$p{JYjgtV8xKbu#n+0gB?Qw!%~Lp z49*Ot467LKFt{^RGOS~Gz~IAB$FP~+-LA& zsA1U1@R-4$p^;%5!wZIBhE|4M3~v}B7`hntGkj!-Vd!Hx%ZK5hDQuCj2R4z816GjGG;O?W_Z9L#hAnJ zm?4W{3ByAMX~uMhg$(x?Bp4y_pUd!sVKq_lzlK4cA&=oHH2(7$o-vp)tOdt^0mE~& z_+N(<|Ah=MP~yLcVLii320MldhOG?m8N3-<84fZ0VX$NF+4B-qD8O||qFeWg}Vz|yA$Y{k-!myFyHG>mF4Z}``&kXJijSTx3elYkm zbb@x^Ge$6gPHy02Ok|kNaDzdJ(VC%@VH3j}24{v^hFuI_7(5u781^&#WC&pBVmQvg z$Qa2mnc)Hh7h@8`9EO_=!i+WyWel4c-ZHo_)G_R4_{!kP(9Cdv;TJ<7LpQ?-1}4TR zhA9je8Mqmf8RjzFVh~}pWhiIZ!tjp4m7$(t55qSGFNPL|gABhJf*5)jPBJhvMl(!h zxWvH2n8GlR;WmRPWFQ5aesUSsGkjq%!$?2d7`8L)VA#p9iy@C;1H)GabH-wZtqi{y zY#0j|HZgo>uw*P`*v#;Q!HThj;WtAO!xo004AzYK3>z7~F<3y;PbtG6hTTM^pFIrn z3}p;|q3Nfb;U9w;!(MRusbKhzmVWjjrJqU$21ZZ~3MscO7^)cdGcYpRGc+mJHPl2N;+b-55F;&NA>b1~W`$xWypDn82`z z;W>jQqa8y7!%+ryMsJ2*hD!`0j1dg8816GDGNv*tXL!S)$7sb+!*Gy+nbDo0li?hL z0AmQlG=|#@vW$rgiy2-pXfawd)G{1mU}1D%Xks|dz{%*$(8_R%frrt9p^M=>gCL_X zLqEe61~J9}2GEHSl8m7Y(;4nC$T3DS%wc%Qpv)M{FrVQGgBoKJ!xDy<4BCw83@aJl zF&HprF|1+u$Y9K9!%)X?n1Pkik)fI41OpeN3qu>jX$D?KPlj%W3k*Vxehd>Bt}=)- z1~N=$xWORB7{)Mz;Vy$bV>H8DhDQu4jByML7@jhyGbS@EWq8G)!d_{?C6 zlKv_gjx$IwrZJ+IU*{OkGhAS}$Z(0Fis1xbJ;PZBImR5u8irF0(u|pmwG5{j zWEis;8yMsn>ln^3$TDU#Rx_MrkYdb$roTo81;)!nrN1i-@(fK3ij0tULoPlkgG(-{I8O&R+cgcw~JTo{)!Ok+r72x81*Fk|#$6l8Q^$Yxm2@Rgy6!Jna! zVK2is24==}4DJj&84?&G7*iOW7=s!77;PAR8UHXWWQbv$%n-!D%lLwUh0%mDkujQa zF~f5PBSr_tJq&z|pc8Dk7~>cj7(*GRGL$gvXIQ}Sj)93WfYFfgKSKn=1BPUVV8&+* zPZ%CE2rzzP_{d<-_>#e#F^$2CVGDyWqZ7j+h8Ya5jB6OaGkjrSWh`Zw$FPhciP4*3 z0z(di1!Ek;E(U$Z0ESl#kqn0!3K&8dw=zUB+A_K^iZH%sSk6$!V9Dslkj&`L_?KZH z!v+R^#teoehM5fM450hLxEVzme=s~`U}N0I5W+Bv;WdLl;|d0E#v=@&j6WF`F&HyW zVTfg9XLMv_Wc z1><9)()SYvd4?_qOKAG;X0T#3V|WTq-#rZ0XzBYIQu^*?ut7=ReGJbTY#HqtJQ-pb zLKuS>To|V^Br?ut@MB!c5X88NVKKu$2499142+C38NwMY8GbOlWAJDA!>|l|e)~y= zR0eLweugCsp^X0-f*E%+R502x`Z0JgW-%5sykPjm@Rvb}QH0Ts!HQuXg9}3}!)6A1 z#wiRd8D=qfFf=lHGWs$`Fs3mCGfZH3$>7Xb!|<8m07DYvTLuS)?+m9HE;3AGC}Hqt z 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

Bs`L&0;j9dBl{{IzU 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ͱOh?UI(-oFaE^%s{~ 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 z�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%0D3%;#Jnbeb)pw~|Gm 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

16z2g6- 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 - - - - Debug - Win32 - - - Release - Win32 - - - - decoder - {E3DCBC31-7FC9-D127-E000-529F8460D5FD} - decoder - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_dec - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_dec - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - - - {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + decoder + {E3DCBC31-7FC9-D127-E000-529F8460D5FD} + decoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_dec + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_dec + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index 75b13f9bd..9578e488d 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -1,178 +1,178 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - encoder - {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} - encoder - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_cod - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - false - true - $(IntDir)$(ProjectName).pdb - Console - - false - - MachineX86 - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - - - - {824da4cf-06f0-45c9-929a-8792f0e19c3e} - false - - - {2fa8f384-0775-f3b7-f8c3-85209222fc70} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + encoder + {B3FC9DFC-7268-8660-7C0D-B60BAF02C554} + encoder + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_cod + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_cod + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + false + true + $(IntDir)$(ProjectName).pdb + Console + + false + + MachineX86 + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_enc;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + + + + {824da4cf-06f0-45c9-929a-8792f0e19c3e} + false + + + {2fa8f384-0775-f3b7-f8c3-85209222fc70} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 337fc98e2..7a2aa8a7f 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -1,341 +1,341 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {39EC200D-7795-4FF8-B214-B24EDA5526AE} - common - 10.0 - - - - StaticLibrary - v143 - false - MultiByte - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivascom - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {39EC200D-7795-4FF8-B214-B24EDA5526AE} + common + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivascom + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivascom + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index b6a8a7dd3..929dd72a8 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -1,121 +1,121 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - debug - 10.0 - - - - StaticLibrary - v143 - MultiByte - - - StaticLibrary - v143 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasdebug - - - - - - - Disabled - ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + debug + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasdebug + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasdebug + + + + + + + Disabled + ..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;DBG_WAV_WRITER;$(Macros);%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 60a24021f..2d06d29aa 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -1,356 +1,356 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_dec - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - evs_dec - 10.0 - - - StaticLibrary - v143 - false - MultiByte - - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasdec - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - false - - - false - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_dec + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasdec + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasdec + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + false + + + false + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 7fe2ad96c..86dcef905 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -1,372 +1,372 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_enc - {824DA4CF-06F0-45C9-929A-8792F0E19C3E} - evs_enc - 10.0 - - - - StaticLibrary - v143 - false - MultiByte - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasenc - - - - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_enc + {824DA4CF-06F0-45C9-929A-8792F0E19C3E} + evs_enc + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasenc + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasenc + + + + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index 10abdb438..e47858ae3 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -1,208 +1,208 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - lib_rend - {718DE063-A18B-BB72-9150-62B892E6FFA6} - evs_dec - 10.0 - - - StaticLibrary - v143 - false - MultiByte - - - - StaticLibrary - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - - - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - false - false - libivasrend - - - - - - - .\Debug\$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - WS2_32.lib; %(AdditionalDependencies) - $(OutDir)$(TargetName).lib - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {54509728-928b-44d9-a118-a6f92f08b34f} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_rend + {718DE063-A18B-BB72-9150-62B892E6FFA6} + evs_dec + 10.0.17763.0 + + + StaticLibrary + v141 + false + MultiByte + + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + false + false + libivasrend + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + false + false + libivasrend + + + + + + + .\Debug\$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 1cfb3e588..86730b859 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -1,157 +1,157 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - utility - 10.0 - - - - StaticLibrary - v143 - MultiByte - - - StaticLibrary - v143 - MultiByte - true - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - - - false - .\Release_$(ProjectName)\ - .\Release_$(ProjectName)\ - libivasutil - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - false - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - MaxSpeed - AnySuitable - false - false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - $(IntDir)$(ProjectName).pdb - Level4 - - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + utility + 10.0.17763.0 + + + + StaticLibrary + v141 + MultiByte + + + StaticLibrary + v141 + MultiByte + true + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + true + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libivasutil + + + false + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libivasutil + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + false + + EnableFastChecks + MultiThreadedDebug + false + $(IntDir)$(ProjectName).pdb + Level4 + OldStyle + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + MaxSpeed + AnySuitable + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + $(IntDir)$(ProjectName).pdb + Level4 + + Default + %(DisableSpecificWarnings) + + + $(OutDir)$(TargetName).lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index ecd8b04aa..70a130e31 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -1,180 +1,180 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - renderer - {12B4C8A5-1E06-4E30-B443-D1F916F52B47} - renderer - 10.0 - - - - Application - v143 - false - MultiByte - - - Application - v143 - false - MultiByte - - - - - - - - - - - - - - - <_ProjectFileVersion>15.0.27428.2015 - - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - - - ..\ - .\Release_$(ProjectName)\ - false - false - IVAS_rend - - - - $(IntDir)$(ProjectName).tlb - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) - - EnableFastChecks - MultiThreadedDebug - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - OldStyle - Default - %(DisableSpecificWarnings) - - - _DEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - - $(OutDir)$(TargetName).exe - true - - true - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - - - - - $(IntDir)$(ProjectName).tlb - - - - MaxSpeed - AnySuitable - false - Neither - false - false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - true - - Default - MultiThreaded - true - Precise - false - - - $(IntDir)$(ProjectName).pdb - Level4 - true - - Default - %(DisableSpecificWarnings) - - - NDEBUG;%(PreprocessorDefinitions) - 0x0c0c - - - $(OutDir)$(TargetName).exe - true - - false - $(IntDir)$(ProjectName).pdb - Console - false - - MachineX86 - libcmtd.lib - - - - - - - - {54509728-928B-44D9-A118-A6F92F08B34F} - false - - - {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} - false - - - {2FA8F384-0775-F3B7-F8C3-85209222FC70} - false - - - {39ec200d-7795-4ff8-b214-b24eda5526ae} - false - - - {718DE063-A18B-BB72-9150-62B892E6FFA6} - false - - - - - - - - - - + + + + + Debug + Win32 + + + Release + Win32 + + + + renderer + {12B4C8A5-1E06-4E30-B443-D1F916F52B47} + renderer + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + IVAS_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + IVAS_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} + false + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {718DE063-A18B-BB72-9150-62B892E6FFA6} + false + + + + + + + + + + \ No newline at end of file diff --git a/lib_com/options.h b/lib_com/options.h index d235b80b9..3ec71d78b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -95,7 +95,7 @@ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ diff --git a/lib_com/swb_tbe_com_fx.c.bak b/lib_com/swb_tbe_com_fx.c.bak deleted file mode 100644 index fb68537c8..000000000 --- a/lib_com/swb_tbe_com_fx.c.bak +++ /dev/null @@ -1,8216 +0,0 @@ -/*==================================================================================== - EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 - ====================================================================================*/ - - -#include -#include "options.h" -#include "cnst.h" /* Common constants */ -#include "rom_com.h" /* Static table prototypes */ -#include "prot_fx.h" -#include "basop_util.h" -#include "ivas_prot_fx.h" -#include "options_warnings.h" - -#define POW_EXC16k_WHTND 1.14e11f /* power of random excitation, length 320 samples, uniform distribution */ -#define POW_EXC16k_WHTND_FX_INV_SQRT 6360 // Q31 -#define POW_EXC16k_WHTND_FX_INV_SQRT_IN_Q49 1667313793 // Q49 -#define POW_EXC16k_WHTND_FX 178125000 // Q-6 -#define THR_ENV_ERROR_PLOSIVE 200.0f /* threshold for envelope error used in plosive detection */ -#define THR_ENV_ERROR_PLOSIVE_FX 200 /* threshold for envelope error used in plosive detection Q0 */ - -/*-----------------------------------------------------------------* - * Local function prototypes - *-----------------------------------------------------------------*/ - -static void create_random_vector_fx( Word16 output[], const Word16 length, Word16 seed[] ); -static void flip_spectrum_fx( const Word16 input[], Word16 output[], const Word16 length ); -static void Calc_st_filt_tbe( Word16 *apond2, Word16 *apond1, Word16 *parcor0, Word16 *sig_ltp_ptr, Word16 *mem_zero ); -static void Hilbert_transform_fx( Word32 tmp_R[], Word32 tmp_I[], Word32 *tmpi_R, Word32 *tmpi_I, const Word16 length, const Word16 HB_stage_id ); -static void Hilbert_transform_sp_fx( Word16 tmp_R[], Word16 tmp_I[], Word32 *tmpi_R, Word32 *tmpi_I, const Word16 length, const Word16 HB_stage_id ); -void Estimate_mix_factors_fx( const Word16 *shb_res, const Word16 Q_shb, const Word16 *exc16kWhtnd, const Word16 Q_bwe_exc, const Word16 *White_exc16k_frac, const Word16 Q_frac, const Word32 pow1, const Word16 Q_pow1, const Word32 pow22, const Word16 Q_pow22, Word16 *vf_modified, Word16 *vf_ind ); - -/*-------------------------------------------------------------------* - * swb_tbe_reset() - * - * Reset the SWB TBE encoder - *-------------------------------------------------------------------*/ - -void swb_tbe_reset_fx( - Word32 mem_csfilt[], - Word16 mem_genSHBexc_filt_down_shb[], - Word16 state_lpc_syn[], - Word16 syn_overlap[], - Word16 state_syn_shbexc[], - Word16 *tbe_demph, - Word16 *tbe_premph, - Word16 mem_stp_swb[], - Word16 *gain_prec_swb ) -{ - set32_fx( mem_csfilt, 0, 2 ); - set16_fx( mem_genSHBexc_filt_down_shb, 0, ( 2 * ALLPASSSECTIONS_STEEP + 1 ) ); - set16_fx( state_lpc_syn, 0, LPC_SHB_ORDER ); - - set16_fx( syn_overlap, 0, L_SHB_LAHEAD ); - set16_fx( state_syn_shbexc, 0, L_SHB_LAHEAD ); - - *tbe_demph = 0; - move16(); - *tbe_premph = 0; - move16(); - - set16_fx( mem_stp_swb, 0, LPC_SHB_ORDER ); - *gain_prec_swb = 16384; - move16(); /*Q14 = 1 */ - - return; -} - - -/*-------------------------------------------------------------------* - * swb_tbe_reset_synth() - * - * Reset the extra parameters needed for synthesis of the SWB TBE output - *-------------------------------------------------------------------*/ - -void swb_tbe_reset_synth_fx( - Word32 genSHBsynth_Hilbert_Mem[], - Word16 genSHBsynth_state_lsyn_filt_shb_local_fx[], - Word32 genSHBsynth_state_lsyn_filt_shb_local_fx_32[] ) -{ - - set32_fx( genSHBsynth_Hilbert_Mem, 0, HILBERT_MEM_SIZE ); - set16_fx( genSHBsynth_state_lsyn_filt_shb_local_fx, 0, 2 * ALLPASSSECTIONS_STEEP ); - - if ( genSHBsynth_state_lsyn_filt_shb_local_fx_32 != NULL ) - { - set32_fx( genSHBsynth_state_lsyn_filt_shb_local_fx_32, 0, 2 * ALLPASSSECTIONS_STEEP ); - } - - return; -} - - -/*-------------------------------------------------------------------* - * fb_tbe_reset_synth_fx() - * - * reset of FB TBE memories - *-------------------------------------------------------------------*/ - -void fb_tbe_reset_synth_fx( - Word32 fbbwe_hpf_mem_fx[][4], - Word16 fbbwe_hpf_mem_fx_Q[], - Word16 *prev_fbbwe_ratio_fx ) -{ - set32_fx( fbbwe_hpf_mem_fx[0], 0, 4 ); - set32_fx( fbbwe_hpf_mem_fx[1], 0, 4 ); - set32_fx( fbbwe_hpf_mem_fx[2], 0, 4 ); - set32_fx( fbbwe_hpf_mem_fx[3], 0, 4 ); - set16_fx( fbbwe_hpf_mem_fx_Q, 0, 4 ); - *prev_fbbwe_ratio_fx = 1; - move16(); /*should be set to 1.0f, scaling unknown */ - - return; -} - - -/*-------------------------------------------------------------------* - * tbe_celp_exc_offset() - * - * Compute tbe bwe celp excitation offset - *-------------------------------------------------------------------*/ - -Word16 tbe_celp_exc_offset( - const Word16 T0_fx, /* i : Integer pitch Q0 */ - const Word16 T0_frac_fx, /* i : Fractional part of the pitch Q1 */ - const Word16 L_frame /* i : frame lenght */ -) -{ - Word16 offset_fx, tmp_fx, tmp1_fx, tmp2_fx, tmp_fac; - tmp_fac = 320; - move16(); /*2.5 in Q7*/ - if ( EQ_16( L_frame, L_FRAME16k ) ) - { - tmp_fac = 256; - move16(); /*2.0 in Q7*/ - } - tmp_fx = extract_l( L_mult( T0_frac_fx, 32 ) ); /*Q8, 0.25 in Q7*/ - tmp_fx = add( 512, tmp_fx ); /*Q8; 2 in Q8*/ - tmp_fx = mult_r( tmp_fx, tmp_fac ); /*Q16->Q0; 2.5 in Q7 or 2.0 in Q7 */ - - tmp1_fx = sub( T0_fx, 2 ); /*Q0*/ - - tmp2_fx = shl( tmp1_fx, 1 ); /*Q0 */ - - IF( EQ_16( L_frame, L_FRAME ) ) - { - tmp2_fx = add( shl( tmp1_fx, 1 ), shr( tmp1_fx, 1 ) ); /*Q0; (5/2 = 2 + 1/2)*/ - } - - offset_fx = add( tmp_fx, tmp2_fx ); /*Q0*/ - - return offset_fx; -} - -/*-------------------------------------------------------------------* - * swb_tbe_celp_exc() - * - * Compute tbe bwe celp excitation - *-------------------------------------------------------------------*/ -void tbe_celp_exc( - const Word16 L_frame_fx, /* i : Frame lenght */ - const Word16 i_subfr_fx, /* i : sub frame */ - const Word16 T0_fx, /* i : Integer pitch Q0 */ - const Word16 T0_frac_fx, /* i : Fractional part of the pitch Q1 */ - Word16 *error_fx, /* i/o: Error Q5 */ - Word16 *bwe_exc_fx /* i/o: bandwitdh extension signal */ -) -{ - Word16 offset_fx, tmp_fx, i; - IF( EQ_16( L_frame_fx, L_FRAME ) ) - { - /*offset = T0 * HIBND_ACB_L_FAC + (int) ((float) T0_frac * 0.25f * HIBND_ACB_L_FAC + 2 * HIBND_ACB_L_FAC + 0.5f) - 2 * HIBND_ACB_L_FAC; - for (i=0; i 0 ) - { - tmp_fx = shr( *error_fx, 5 ); /*Q0*/ - } - ELSE - { - tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ - } - - FOR( i = 0; i < L_SUBFR * HIBND_ACB_L_FAC; i++ ) - { - bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC - offset_fx + tmp_fx]; // Qx - move16(); - } - tmp_fx = extract_l( L_mult( T0_frac_fx, 1 ) ); /*Q3; 0.25 in Q2*/ - tmp_fx = add( shl( T0_fx, 3 ), tmp_fx ); /*Q3*/ - tmp_fx = extract_l( L_mult( tmp_fx, 5 ) ); /*Q5, 2.5 in Q1*/ - tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*Q5*/ - *error_fx = add( *error_fx, tmp_fx ); /*Q5*/ - move16(); - } - ELSE - { - /* offset = T0*2.5 + (int) ((float) T0_frac * 0.25f*2.5 + 2*2.5 + 0.5f) - 2*2.5; - case above*/ - /* offset = T0*2 + (int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f) - 2*2; - case here*/ - - /*(int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f)*/ - offset_fx = tbe_celp_exc_offset( T0_fx, T0_frac_fx, L_frame_fx ); - IF( *error_fx > 0 ) - { - tmp_fx = shr( *error_fx, 5 ); /*Q0*/ - } - ELSE - { - tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ - } - - FOR( i = 0; i < L_SUBFR * 2; i++ ) - { - bwe_exc_fx[i + i_subfr_fx * 2] = bwe_exc_fx[i + i_subfr_fx * 2 - offset_fx + tmp_fx]; // Qx - move16(); - } - - /* error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac;*/ - tmp_fx = extract_l( L_mult( T0_frac_fx, 2 ) ); /*Q3; 0.5 in Q2*/ - tmp_fx = add( shl( T0_fx, 4 ), tmp_fx ); /* now tmp_fx = "T0_fx*2+ 0.5f*T0_frac_fx" in Q3*/ - tmp_fx = shl( tmp_fx, 2 ); /*now above tmp_fx in Q5*/ - tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*move offset_fx to Q5, tmp_fx in Q5, ans tmp_fx in Q5*/ - *error_fx = add( *error_fx, tmp_fx ); /*error_fx in Q5*/ - move16(); - } -} - -/*-------------------------------------------------------------------* - * swb_tbe_celp_exc_ivas() - * - * Compute tbe bwe celp excitation - *-------------------------------------------------------------------*/ -void tbe_celp_exc_ivas( - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 L_frame_fx, /* i : Frame lenght */ - const Word16 L_subfr, /* i : subframe length */ - const Word16 i_subfr_fx, /* i : sub frame */ - const Word16 T0_fx, /* i : Integer pitch Q0 */ - const Word16 T0_frac_fx, /* i : Fractional part of the pitch Q1 */ - Word16 *error_fx, /* i/o: Error Q5 */ - Word16 *bwe_exc_fx, /* i/o: bandwitdh extension signal Qx */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -) -{ - Word16 offset_fx, tmp_fx, i; - - test(); - test(); - IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) - { - return; - } - - IF( EQ_16( L_frame_fx, L_FRAME ) ) - { - /*offset = T0 * HIBND_ACB_L_FAC + (int) ((float) T0_frac * 0.25f * HIBND_ACB_L_FAC + 2 * HIBND_ACB_L_FAC + 0.5f) - 2 * HIBND_ACB_L_FAC; - for (i=0; i 0 ) - { - tmp_fx = shr( *error_fx, 5 ); /*Q0*/ - } - ELSE - { - tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ - } - - FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) - { - bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC - offset_fx + tmp_fx]; - move16(); - } - tmp_fx = extract_l( L_mult( T0_frac_fx, 1 ) ); /*Q3; 0.25 in Q2*/ - tmp_fx = add( shl( T0_fx, 3 ), tmp_fx ); /*Q3*/ - tmp_fx = extract_l( L_mult( tmp_fx, 5 ) ); /*Q5, 2.5 in Q1*/ - tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*Q5*/ - *error_fx = add( *error_fx, tmp_fx ); /*Q5*/ - move16(); - } - ELSE - { - /* offset = T0*2.5 + (int) ((float) T0_frac * 0.25f*2.5 + 2*2.5 + 0.5f) - 2*2.5; - case above*/ - /* offset = T0*2 + (int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f) - 2*2; - case here*/ - - /*(int) ((float) T0_frac * 0.25f*2 + 2*2 + 0.5f)*/ - offset_fx = tbe_celp_exc_offset( T0_fx, T0_frac_fx, L_frame_fx ); - IF( *error_fx > 0 ) - { - tmp_fx = shr( *error_fx, 5 ); /*Q0*/ - } - ELSE - { - tmp_fx = negate( shr( abs_s( *error_fx ), 5 ) ); /*Q0*/ - } - - FOR( i = 0; i < L_subfr * 2; i++ ) - { - bwe_exc_fx[i + i_subfr_fx * 2] = bwe_exc_fx[i + i_subfr_fx * 2 - offset_fx + tmp_fx]; - move16(); - } - - /* error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac;*/ - tmp_fx = extract_l( L_mult( T0_frac_fx, 2 ) ); /*Q3; 0.5 in Q2*/ - tmp_fx = add( shl( T0_fx, 4 ), tmp_fx ); /* now tmp_fx = "T0_fx*2+ 0.5f*T0_frac_fx" in Q3*/ - tmp_fx = shl( tmp_fx, 2 ); /*now above tmp_fx in Q5*/ - tmp_fx = sub( shl( offset_fx, 5 ), tmp_fx ); /*move offset_fx to Q5, tmp_fx in Q5, ans tmp_fx in Q5*/ - *error_fx = add( *error_fx, tmp_fx ); /*error_fx in Q5*/ - move16(); - } -} - -/*===========================================================================*/ -/* FUNCTION : flip_and_downmix_generic_fx() */ -/*---------------------------------------------------------------------------*/ -/* PURPOSE :flips the spectrum and downmixes the signals, lpf if needed*/ -/*---------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS */ -/* _(Word16[]) input :input spectrum */ -/* _(Word16) length :length of spectra */ -/* _(Word16) ramp_flag :flag to indicate slow ramp need after switching */ -/* _(Word16[]) lpf_num :lpf numerator */ -/* _(Word16[]) lpf_den :lpf denominator */ -/*---------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _(Word16[])output : output spectrum */ -/*---------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _(Word32[9])mem1 : memory */ -/* _(Word32[8])mem2 : memory */ -/* _(Word32[8])mem3 : memory */ -/* _(Word16) dm_frequency_inHz :Downmix frequency in Hz */ -/* _(Word16*) phase_state :Phase state in case frequency isn't */ -/* multiple of 50 Hz */ -/*---------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*---------------------------------------------------------------------------*/ -void flip_and_downmix_generic_fx( - Word16 input[], /* i : input spectrum Qx*/ - Word16 output[], /* o : output spectrum Qx*/ - const Word16 length, /* i : length of spectra */ - Word32 mem1_ext[HILBERT_ORDER1], /* i/o: memory Qx+16*/ - Word32 mem2_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx+16*/ - Word32 mem3_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx+16*/ - Word16 *phase_state /* i/o: Phase state in case frequency isn't multiple of 50 Hz */ -) -{ - Word16 i, j; - Word16 tmp_16[L_FRAME32k + HILBERT_ORDER1]; - Word32 tmpi_R[L_FRAME32k]; - Word32 tmpi_I[L_FRAME32k]; - Word32 tmpi2_R[L_FRAME32k + HILBERT_ORDER2]; - Word32 tmpi2_I[L_FRAME32k + HILBERT_ORDER2]; - Word32 tmp_R[L_FRAME32k + HILBERT_ORDER2]; - Word32 tmp_I[L_FRAME32k + HILBERT_ORDER2]; - - /*Word16 s_tmp[L_FRAME32k];*/ - /*Word16 factor;*/ - Word16 period; - Word16 local_negsin_table17[17] = { 0, -11793, -22005, -29268, -32609, -31580, - -26319, -17530, -6393, 6393, 17530, 26319, - 31580, 32609, 29268, 22005, 11793 }; /* Q15 */ - Word16 local_cos_table17[17] = { 32767, 30571, 24279, 14732, 3212, -8739, - -19519, -27683, -32137, -32137, -27683, - -19519, -8739, 3212, 14732, 24279, 30571 }; /* Q15 */ - Word16 *local_negsin_table, *local_cos_table; - Word32 L_tmp; - - /* 1850 Hz downmix */ - period = 17; - move16(); - local_negsin_table = local_negsin_table17; - local_cos_table = local_cos_table17; - - - FOR( i = 0; i < length; i = i + 2 ) - { - input[i] = negate( input[i] ); - move16(); - } - - Copy( input, tmp_16 + HILBERT_ORDER1, length ); - - /*Copy32( mem1_ext, tmp_16, 5 ); */ - FOR( i = 0; i < HILBERT_ORDER1; i++ ) - { - tmp_16[i] = extract_h( mem1_ext[i] ); /* mem1_ext (Qx+16) tmp16 (Qx) */ - move16(); - } - - /* Hilber transform stage - 0 - single precision */ - Hilbert_transform_sp_fx( tmp_16, /* i: Real component of HB */ - tmp_16, /* i: Imag component of HB */ - tmpi_R, /* o: Real component of HB */ - tmpi_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 0 ); /* i: HB transform stage */ - - FOR( i = 0; i < HILBERT_ORDER1; i++ ) - { - mem1_ext[i] = L_deposit_h( tmp_16[i + length] ); /* mem1_ext (Qx+16) tmp16 (Qx) */ - move32(); - } - - Copy32( mem2_ext, tmpi2_R, HILBERT_ORDER2 ); - Copy32( mem3_ext, tmpi2_I, HILBERT_ORDER2 ); - - /* Hilber transform stage - 1 */ - Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ - tmpi_I, /* i: Imag component of HB */ - tmpi2_R, /* o: Real component of HB */ - tmpi2_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 1 ); /* i: HB transform stage */ - - Copy32( mem2_ext + HILBERT_ORDER2, tmp_R, HILBERT_ORDER2 ); - Copy32( mem3_ext + HILBERT_ORDER2, tmp_I, HILBERT_ORDER2 ); - - /* Hilber transform stage - 2 */ - Hilbert_transform_fx( tmpi2_R, /* i: Real component of HB */ - tmpi2_I, /* i: Imag component of HB */ - tmpi_R, /* o: Real component of HB */ - tmpi_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 2 ); /* i: HB transform stage */ - - Copy32( tmpi2_R + length, mem2_ext, HILBERT_ORDER2 ); - Copy32( tmpi2_I + length, mem3_ext, HILBERT_ORDER2 ); - - /* Hilber transform stage - 3 */ - Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ - tmpi_I, /* i: Imag component of HB */ - tmp_R, /* o: Real component of HB */ - tmp_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 3 ); /* i: HB transform stage */ - - Copy32( tmp_R + length, mem2_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); - Copy32( tmp_I + length, mem3_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); - - if ( GE_16( *phase_state, period ) ) - { - *phase_state = 0; - move16(); - } - - i = 0; - move16(); - j = *phase_state; - move16(); - - WHILE( i < length ) - { - WHILE( ( j < period ) && ( i < length ) ) - { - L_tmp = Mult_32_16( tmp_R[i + 4], local_cos_table[j] ); /*//Qx+16 */ - L_tmp = Madd_32_16( L_tmp, tmp_I[i + 4], local_negsin_table[j] ); /*Qx+16 */ - output[i] = round_fx( L_tmp ); /*Qx */ - move16(); - i++; - j++; - } - - if ( GE_16( j, period ) ) - { - j = 0; - move16(); - } - } - - *phase_state = j; - move16(); - - return; -} - - -void flip_and_downmix_generic_fx32( - Word32 input[], /* i : input spectrum Qx*/ - Word32 output[], /* o : output spectrum Qx*/ - const Word16 length, /* i : length of spectra */ - Word32 mem1_ext[HILBERT_ORDER1], /* i/o: memory Qx*/ - Word32 mem2_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx*/ - Word32 mem3_ext[2 * HILBERT_ORDER2], /* i/o: memory Qx*/ - Word16 *phase_state /* i/o: Phase state in case frequency isn't multiple of 50 Hz */ -) -{ - Word16 i, j; - Word32 tmp[L_FRAME32k + HILBERT_ORDER1]; - Word32 tmpi_R[L_FRAME32k]; - Word32 tmpi_I[L_FRAME32k]; - Word32 tmpi2_R[L_FRAME32k + HILBERT_ORDER2]; - Word32 tmpi2_I[L_FRAME32k + HILBERT_ORDER2]; - Word32 tmp_R[L_FRAME32k + HILBERT_ORDER2]; - Word32 tmp_I[L_FRAME32k + HILBERT_ORDER2]; - - /*Word16 s_tmp[L_FRAME32k];*/ - /*Word16 factor;*/ - Word16 period; - Word16 local_negsin_table17[17] = { 0, -11793, -22005, -29268, -32609, -31580, - -26319, -17530, -6393, 6393, 17530, 26319, - 31580, 32609, 29268, 22005, 11793 }; /* Q15 */ - Word16 local_cos_table17[17] = { 32767, 30571, 24279, 14732, 3212, -8739, - -19519, -27683, -32137, -32137, -27683, - -19519, -8739, 3212, 14732, 24279, 30571 }; /* Q15 */ - Word16 *local_negsin_table, *local_cos_table; - Word32 L_tmp; - - /* 1850 Hz downmix */ - period = 17; - move16(); - local_negsin_table = local_negsin_table17; - local_cos_table = local_cos_table17; - - - FOR( i = 0; i < length; i = i + 2 ) - { - input[i] = L_negate( input[i] ); - move16(); - } - - Copy32( input, tmp + HILBERT_ORDER1, length ); - Copy32( mem1_ext, tmp, HILBERT_ORDER1 ); - - /* Hilber transform stage - 0 - single precision */ - Hilbert_transform_fx( tmp, /* i: Real component of HB */ - tmp, /* i: Imag component of HB */ - tmpi_R, /* o: Real component of HB */ - tmpi_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 0 ); /* i: HB transform stage */ - - - Copy32( mem2_ext, tmpi2_R, HILBERT_ORDER2 ); - Copy32( mem3_ext, tmpi2_I, HILBERT_ORDER2 ); - - /* Hilber transform stage - 1 */ - Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ - tmpi_I, /* i: Imag component of HB */ - tmpi2_R, /* o: Real component of HB */ - tmpi2_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 1 ); /* i: HB transform stage */ - Copy32( tmp + length, mem1_ext, HILBERT_ORDER1 ); - Copy32( mem2_ext + HILBERT_ORDER2, tmp_R, HILBERT_ORDER2 ); - Copy32( mem3_ext + HILBERT_ORDER2, tmp_I, HILBERT_ORDER2 ); - - /* Hilber transform stage - 2 */ - Hilbert_transform_fx( tmpi2_R, /* i: Real component of HB */ - tmpi2_I, /* i: Imag component of HB */ - tmpi_R, /* o: Real component of HB */ - tmpi_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 2 ); /* i: HB transform stage */ - - Copy32( tmpi2_R + length, mem2_ext, HILBERT_ORDER2 ); - Copy32( tmpi2_I + length, mem3_ext, HILBERT_ORDER2 ); - - /* Hilber transform stage - 3 */ - Hilbert_transform_fx( tmpi_R, /* i: Real component of HB */ - tmpi_I, /* i: Imag component of HB */ - tmp_R, /* o: Real component of HB */ - tmp_I, /* o: Imag. component of HB */ - length, /* i: length of the spectra */ - 3 ); /* i: HB transform stage */ - - Copy32( tmp_R + length, mem2_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); - Copy32( tmp_I + length, mem3_ext + HILBERT_ORDER2, HILBERT_ORDER2 ); - - if ( GE_16( *phase_state, period ) ) - { - *phase_state = 0; - move16(); - } - - i = 0; - move16(); - j = *phase_state; - move16(); - - WHILE( LT_16( i, length ) ) - { - WHILE( ( j < period ) && ( i < length ) ) - { - test(); - L_tmp = Mult_32_16( tmp_R[i + 4], local_cos_table[j] ); /*//Qx+16 */ - L_tmp = Madd_32_16( L_tmp, tmp_I[i + 4], local_negsin_table[j] ); /*Qx+16 */ - output[i] = L_tmp; /*Qx */ - move32(); - i++; - j++; - } - - if ( GE_16( j, period ) ) - { - j = 0; - move16(); - } - } - - *phase_state = j; - move16(); - return; -} - -/*---------------------------------------------- - * Hilbert transform - Double precision - *------------------------------------------------*/ -static void Hilbert_transform_fx( - Word32 tmp_R[], /* i: Real component of HB */ - Word32 tmp_I[], /* i: Real component of HB */ - Word32 tmpi_R[], /* o: Real component of HB */ - Word32 tmpi_I[], /* o: Imag. component of HB */ - const Word16 length, /* i: input length */ - const Word16 HB_stage_id /* i: HB transform stage */ -) -{ - Word16 i, hb_filter_stage, offset; - Word32 L_tmp; - - hb_filter_stage = shl( HB_stage_id, 1 ); - offset = 0; - move16(); - if ( HB_stage_id == 0 ) - { - offset = 1; - move16(); - } - - test(); - test(); - IF( HB_stage_id == 0 || EQ_16( HB_stage_id, 2 ) ) - { - FOR( i = 0; i < length; i++ ) - { - L_tmp = Mult_32_16( tmp_R[i + 4], Hilbert_coeffs_fx[hb_filter_stage][0 + offset] ); /*Qx+15 */ - L_tmp = Madd_32_16( L_tmp, tmp_R[i + 2], Hilbert_coeffs_fx[hb_filter_stage][2 + offset] ); /*Qx+15 */ - L_tmp = Madd_32_16( L_tmp, tmp_R[i], Hilbert_coeffs_fx[hb_filter_stage][4 + offset] ); /*Qx+15 */ - tmpi_R[i] = L_shl( L_tmp, 1 ); - move32(); /*Qx+16 */ - - L_tmp = Mult_32_16( tmp_I[i + 4 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][0] ); /*Qx+15 */ - L_tmp = Madd_32_16( L_tmp, tmp_I[i + 2 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][2] ); /*Qx+15 */ - L_tmp = Madd_32_16( L_tmp, tmp_I[i + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][4] ); /*Qx+15 */ - tmpi_I[i] = L_shl( L_tmp, 1 ); - move32(); /*Qx+16 */ - } - } - ELSE IF( EQ_16( HB_stage_id, 1 ) || EQ_16( HB_stage_id, 3 ) ) - { - FOR( i = 0; i < length; i++ ) - { - - L_tmp = Mult_32_16( tmpi_R[i + 2], Hilbert_coeffs_fx[hb_filter_stage][2] ); /*Qx+15 */ - L_tmp = Madd_32_16( L_tmp, tmpi_R[i], Hilbert_coeffs_fx[hb_filter_stage][4] ); /*Qx+15 */ - tmpi_R[i + 4] = L_sub( tmp_R[i], L_shl( L_tmp, 1 ) ); - move32(); /*Qx+16 */ - - L_tmp = Mult_32_16( tmpi_I[i + 2], Hilbert_coeffs_fx[hb_filter_stage + 1][2] ); /*Qx+15 */ - L_tmp = Madd_32_16( L_tmp, tmpi_I[i], Hilbert_coeffs_fx[hb_filter_stage + 1][4] ); /*Qx+15 */ - tmpi_I[i + 4] = L_sub( tmp_I[i], L_shl( L_tmp, 1 ) ); - move32(); /*Qx+16 */ - } - } -} - - -/*---------------------------------------------- - * Hilbert transform - Single precision Stage 0 - *------------------------------------------------*/ -static void Hilbert_transform_sp_fx( - Word16 tmp_R[], /* i: Real component of HB */ - Word16 tmp_I[], /* i: Real component of HB */ - Word32 tmpi_R[], /* o: Real component of HB */ - Word32 tmpi_I[], /* o: Imag. component of HB */ - const Word16 length, /* i: input length */ - const Word16 HB_stage_id /* i: HB transform stage */ -) -{ - Word16 i, hb_filter_stage, offset; - Word32 L_tmp; - - hb_filter_stage = shl( HB_stage_id, 1 ); - offset = 0; - move16(); - if ( HB_stage_id == 0 ) - { - offset = 1; - move16(); - } - - /* Hilbert single precision stage 0 */ - FOR( i = 0; i < length; i++ ) - { - L_tmp = L_mult( tmp_R[i + 4], Hilbert_coeffs_fx[hb_filter_stage][0 + offset] ); /*Qx */ - L_tmp = L_mac( L_tmp, tmp_R[i + 2], Hilbert_coeffs_fx[hb_filter_stage][2 + offset] ); /*Qx */ - L_tmp = L_mac( L_tmp, tmp_R[i], Hilbert_coeffs_fx[hb_filter_stage][4 + offset] ); /*Qx */ - tmpi_R[i] = L_shl( L_tmp, 1 ); - move32(); /*Qx+16 */ - - L_tmp = L_mult( tmp_I[i + 4 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][0] ); /*Qx */ - L_tmp = L_mac( L_tmp, tmp_I[i + 2 + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][2] ); /*Qx */ - L_tmp = L_mac( L_tmp, tmp_I[i + offset], Hilbert_coeffs_fx[hb_filter_stage + 1][4] ); /*Qx */ - tmpi_I[i] = L_shl( L_tmp, 1 ); - move32(); /*Qx+16 */ - } - - return; -} - - -/*---------------------------------------------- - * flip_spectrum_fx - *----------------------------------------------*/ -void flip_spectrum_fx( - const Word16 input[], /* i : input spectrum */ - Word16 output[], /* o : output spectrum */ - const Word16 length /* i : vector length */ -) -{ - Word16 i; - - FOR( i = 0; i < length; i = i + 2 ) - { - output[i] = negate( input[i] ); - move16(); - output[i + 1] = input[i + 1]; - move16(); - } - - return; -} - - -/*---------------------------------------------------------------------------- - * calc_rc0_h - * - * computes 1st parcor from composed filter impulse response - *---------------------------------------------------------------------------*/ -void Calc_rc0_h( - Word16 *h, /* i : impulse response of composed filter */ - Word16 *rc0 /* o : 1st parcor */ -) -{ - Word32 L_acc; - Word16 *ptrs; - Word16 acf0, acf1; - Word16 temp, sh_acf; - Word16 i; - - /* computation of the autocorrelation function acf */ - L_acc = L_mult( h[0], h[0] ); - FOR( i = 1; i < LONG_H_ST; i++ ) - { - L_acc = L_mac( L_acc, h[i], h[i] ); - } - sh_acf = norm_l( L_acc ); - L_acc = L_shl( L_acc, sh_acf ); - acf0 = extract_h( L_acc ); - - ptrs = h; - - temp = *ptrs++; - move16(); - L_acc = L_mult( temp, *ptrs ); - FOR( i = 1; i < LONG_H_ST - 1; i++ ) - { - temp = *ptrs++; - move16(); - L_acc = L_mac( L_acc, temp, *ptrs ); - } - L_acc = L_shl( L_acc, sh_acf ); - acf1 = extract_h( L_acc ); - - /* Compute 1st parcor */ - IF( acf0 == 0 ) - { - *rc0 = 0; - move16(); - return; - } - - IF( LT_16( acf0, abs_s( acf1 ) ) ) - { - *rc0 = 0; - move16(); - return; - } - *rc0 = div_s( abs_s( acf1 ), acf0 ); - move16(); - IF( acf1 > 0 ) - { - *rc0 = negate( *rc0 ); - move16(); - } -} - -void Calc_rc0_h_ivas_enc_fx( - Word16 *h, /* i : impulse response of composed filter */ - Word16 *rc0 /* o : 1st parcor */ -) -{ - Word32 L_acc; - Word16 *ptrs; - Word16 acf0, acf1; - Word16 temp, sh_acf, tmp2; - Word16 i; - - /* computation of the autocorrelation function acf */ - L_acc = L_mult( h[0], h[0] ); - FOR( i = 1; i < LONG_H_ST; i++ ) - { - tmp2 = shr( h[i], 2 ); - L_acc = L_mac( L_acc, tmp2, tmp2 ); - } - sh_acf = norm_l( L_acc ); - L_acc = L_shl( L_acc, sh_acf ); - acf0 = extract_h( L_acc ); - - ptrs = h; - - temp = *ptrs++; - move16(); - L_acc = L_mult( temp, *ptrs ); - FOR( i = 1; i < LONG_H_ST - 1; i++ ) - { - temp = shr( *ptrs++, 2 ); - move16(); - L_acc = L_mac( L_acc, temp, shr( *ptrs, 2 ) ); - } - L_acc = L_shl( L_acc, sh_acf ); - acf1 = extract_h( L_acc ); - - /* Compute 1st parcor */ - IF( acf0 == 0 ) - { - *rc0 = 0; - move16(); - return; - } - - IF( LT_16( acf0, abs_s( acf1 ) ) ) - { - *rc0 = 0; - move16(); - return; - } - *rc0 = div_s( abs_s( acf1 ), acf0 ); - move16(); - IF( acf1 > 0 ) - { - *rc0 = negate( *rc0 ); - move16(); - } -} - -static void Calc_st_filt_tbe( - Word16 *apond2, /* i : coefficients of numerator */ - Word16 *apond1, /* i : coefficients of denominator */ - Word16 *parcor0, /* o : 1st parcor calcul. on composed filter */ - Word16 *sig_ltp_ptr, /* i/o: i of 1/A(gamma1) : scaled by 1/g0 */ - Word16 *mem_zero /* i : All zero memory */ -) -{ - Word32 L_g0; - - Word16 h[LONG_H_ST]; - - Word16 g0, temp; - Word16 i; - temp = sub( 2, norm_s( apond2[0] ) ); - /* compute i.r. of composed filter apond2 / apond1 */ - Syn_filt_s( temp, apond1, LPC_SHB_ORDER, apond2, h, LONG_H_ST, mem_zero, 0 ); - /* compute 1st parcor */ - Calc_rc0_h( h, parcor0 ); - - /* compute g0 */ - L_g0 = L_mult0( 1, abs_s( h[0] ) ); - FOR( i = 1; i < LONG_H_ST; i++ ) - { - L_g0 = L_mac0( L_g0, 1, abs_s( h[i] ) ); - } - g0 = extract_h( L_shl( L_g0, 14 ) ); - - /* Scale signal i of 1/A(gamma1) */ - IF( GT_16( g0, 1024 ) ) - { - temp = div_s( 1024, g0 ); /* temp = 2**15 / gain0 */ - FOR( i = 0; i < L_SUBFR16k; i++ ) - { - sig_ltp_ptr[i] = mult_r( sig_ltp_ptr[i], temp ); - move16(); - } - } -} - -static void Calc_st_filt_tbe_ivas_enc_fx( - Word16 *apond2, /* i : coefficients of numerator */ - Word16 *apond1, /* i : coefficients of denominator */ - Word16 *parcor0, /* o : 1st parcor calcul. on composed filter */ - Word16 *sig_ltp_ptr, /* i/o: i of 1/A(gamma1) : scaled by 1/g0 */ - Word16 *mem_zero /* i : All zero memory */ -) -{ - Word32 L_g0; - - Word16 h[LONG_H_ST]; - - Word16 g0, temp; - Word16 i; - temp = sub( 2, norm_s( apond2[0] ) ); - /* compute i.r. of composed filter apond2 / apond1 */ - syn_filt_fx( temp, apond1, LPC_SHB_ORDER, apond2, h, LONG_H_ST, mem_zero, 0 ); - /* compute 1st parcor */ - Calc_rc0_h_ivas_enc_fx( h, parcor0 ); - - /* compute g0 */ - L_g0 = L_mult0( 1, abs_s( h[0] ) ); - FOR( i = 1; i < LONG_H_ST; i++ ) - { - L_g0 = L_mac0( L_g0, 1, abs_s( h[i] ) ); - } - g0 = extract_h( L_shl( L_g0, 14 ) ); - - /* Scale signal i of 1/A(gamma1) */ - IF( GT_16( g0, 1024 ) ) - { - temp = div_s( 1024, g0 ); /* temp = 2**15 / gain0 */ - FOR( i = 0; i < L_SUBFR16k; i++ ) - { - sig_ltp_ptr[i] = mult_r( sig_ltp_ptr[i], temp ); - move16(); - } - } -} - -static void Calc_st_filt_tbe_ivas_dec_fx( - Word16 *apond2, /* i : coefficients of numerator */ - Word16 *apond1, /* i : coefficients of denominator */ - Word16 *parcor0, /* o : 1st parcor calcul. on composed filter */ - Word16 *sig_ltp_ptr, /* i/o: i of 1/A(gamma1) : scaled by 1/g0 */ - Word16 *mem_zero /* i : All zero memory */ -) -{ - Word32 L_g0; - - Word16 h[LONG_H_ST]; - - Word16 g0, temp; - Word16 i; - temp = sub( 2, norm_s( apond2[0] ) ); - /* compute i.r. of composed filter apond2 / apond1 */ - Syn_filt_s( temp, apond1, LPC_SHB_ORDER, apond2, h, LONG_H_ST, mem_zero, 0 ); - /* compute 1st parcor */ - Calc_rc0_h( h, parcor0 ); - - /* compute g0 */ - L_g0 = L_mult0( 1, abs_s( h[0] ) ); - FOR( i = 1; i < LONG_H_ST; i++ ) - { - L_g0 = L_mac0( L_g0, 1, abs_s( h[i] ) ); - } - g0 = extract_h( L_shl( L_g0, 14 ) ); - - /* Scale signal i of 1/A(gamma1) */ - IF( GT_16( g0, 1024 ) ) - { - temp = div_s( 1024, g0 ); /* temp = 2**15 / gain0 */ - FOR( i = 0; i < L_SUBFR16k; i++ ) - { - sig_ltp_ptr[i] = mult_r( sig_ltp_ptr[i], temp ); - move16(); - } - } -} - -static void filt_mu_fx( - const Word16 *sig_in, /* i : signal (beginning at sample -1) */ - Word16 *sig_out, /* o : output signal */ - const Word16 parcor0, /* i : parcor0 (mu = parcor0 * gamma3) */ - Word16 SubFrameLength /* i : the length of subframe */ -) -{ - Word16 n; - Word16 mu, ga, temp; - const Word16 *ptrs; - Word16 tmp, exp; - Flag Overflow = 0; - move32(); - - - IF( EQ_16( SubFrameLength, L_SUBFR ) ) - { - IF( parcor0 > 0 ) - { - mu = mult_r( parcor0, GAMMA3_PLUS_FX ); - } - ELSE - { - mu = mult_r( parcor0, GAMMA3_MINUS_FX ); - } - } - ELSE - { - IF( parcor0 > 0 ) - { - mu = mult_r( parcor0, GAMMA3_PLUS_WB_FX ); - } - ELSE - { - mu = mult_r( parcor0, GAMMA3_MINUS_WB_FX ); - } - } - - tmp = abs_s( mu ); - tmp = sub( 32767, tmp ); - exp = norm_s( tmp ); - tmp = div_s( shl( 1, sub( 14, exp ) ), tmp ); /*(14 - exp) */ - ga = shl_sat( tmp, exp ); /*Q14 */ - - - /* ga = (float) 1. / ((float) 1. - (float) fabs (mu)); */ - - ptrs = sig_in; /* points on sig_in(-1) */ - - FOR( n = 0; n < SubFrameLength; n++ ) - { - temp = mult_r( mu, ( *ptrs++ ) ); - temp = add_sat( temp, *ptrs ); /*Q12 */ - sig_out[n] = shl_o( mult_r( ga, temp ), 1, &Overflow ); - move16(); /*Q12 */ - } - - return; -} - -static void scale_st_swb( - const Word16 *sig_in_fx, /* i : postfilter i signal */ - Word16 *sig_out_fx, /* i/o: postfilter o signal */ - Word16 *gain_prec_fx, /* i/o: last value of gain for subframe */ - Word16 SubFrameLength ) -{ - Word16 i; - Word16 agc_fac1_para_fx; - Word16 agc_fac_para_fx; - Word32 L_acc, L_temp; - Word16 g0_fx, gain_fx; - Word16 scal_in, scal_out; - Word16 s_g_in, s_g_out, sh_g0, temp; - - - IF( EQ_16( SubFrameLength, L_SUBFR ) ) - { - agc_fac1_para_fx = AGC_FAC1_FX; - move16(); - agc_fac_para_fx = AGC_FAC_FX; - move16(); - } - ELSE /*IF( SubFrameLength == L_SUBFR16k ) */ - { - agc_fac1_para_fx = AGC_FAC1_WB_FX; - move16(); - agc_fac_para_fx = AGC_FAC_WB_FX; - move16(); - } - - /* compute input gain */ - L_acc = L_mult0( 1, abs_s( sig_in_fx[0] ) ); /*0 +Q_bwe_exc-1 */ - FOR( i = 1; i < SubFrameLength; i++ ) - { - L_acc = L_mac0( L_acc, 1, abs_s( sig_in_fx[i] ) ); /*Q_bwe_exc-1 */ - } - - g0_fx = 0; - move16(); - IF( L_acc != 0L ) - { - scal_in = norm_l( L_acc ); - L_acc = L_shl( L_acc, scal_in ); - s_g_in = extract_h( L_acc ); /* normalized */ - - /* Compute o gain */ - L_acc = L_mult0( 1, abs_s( sig_out_fx[0] ) ); - FOR( i = 1; i < SubFrameLength; i++ ) - { - L_acc = L_mac0( L_acc, 1, abs_s( sig_out_fx[i] ) ); - } - IF( L_acc == 0L ) - { - *gain_prec_fx = 0; - move16(); - - return; - } - - scal_out = norm_l( L_acc ); - L_acc = L_shl( L_acc, scal_out ); - s_g_out = extract_h( L_acc ); /* normalized */ - - - sh_g0 = add( scal_in, 1 ); - sh_g0 = sub( sh_g0, scal_out ); /* scal_in - scal_out + 1 */ - IF( LT_16( s_g_in, s_g_out ) ) - { - g0_fx = div_s( s_g_in, s_g_out ); /* s_g_in/s_g_out in Q15 */ - } - ELSE - { - temp = sub( s_g_in, s_g_out ); /* sufficient since normalized */ - g0_fx = shr( div_s( temp, s_g_out ), 1 ); - g0_fx = add( g0_fx, (Word16) 0x4000 ); /* s_g_in/s_g_out in Q14 */ - sh_g0 = sub( sh_g0, 1 ); - } - /* L_gain_in/L_gain_out in Q14 */ - /* overflows if L_gain_in > 2 * L_gain_out */ - g0_fx = shr_sat( g0_fx, sh_g0 ); /* sh_g0 may be >0, <0, or =0 */ // Need to verify? - - g0_fx = mult_r( g0_fx, agc_fac1_para_fx ); /* L_gain_in/L_gain_out * AGC_FAC1_FX */ - } - /* compute gain(n) = AGC_FAC gain(n-1) + (1-AGC_FAC)gain_in/gain_out */ - /* sig_out(n) = gain(n) sig_out(n) */ - gain_fx = *gain_prec_fx; - move16(); /*14 */ - FOR( i = 0; i < SubFrameLength; i++ ) - { - temp = mult_r( agc_fac_para_fx, gain_fx ); /*15 +14 -15 =14 */ - gain_fx = add( temp, g0_fx ); /* in Q14 */ - L_temp = L_mult( gain_fx, sig_out_fx[i] ); /*14 + Q_bwe_exc-1 +1 = 14 + Q_bwe_exc */ - L_temp = L_shl_sat( L_temp, 1 ); /*14 + Q_bwe_exc +1 */ - sig_out_fx[i] = round_fx_sat( L_temp ); /*Q_bwe_exc +15 -16 = Q_bwe_exc-1 */ - move16(); - } - *gain_prec_fx = gain_fx; - move16(); - - return; -} - -void PostShortTerm_fx( - Word16 *sig_in, /* i : input signal (pointer to current subframe */ - Word16 *lpccoeff, /* i : LPC coefficients for current subframe */ - Word16 *sig_out, /* o : postfiltered output */ - Word16 *mem_stp, /* i/o: postfilter memory*/ - Word16 *ptr_mem_stp, /* i/o: pointer to postfilter memory*/ - Word16 *ptr_gain_prec, /* i/o: for gain adjustment*/ - Word16 *mem_zero, /* i/o: null memory to compute h_st*/ - const Word16 formant_fac_fx /* i : Strength of post-filter*/ -) -{ - Word16 apond1_fx[LPC_SHB_ORDER + 1]; /* denominator coeff.*/ - Word16 apond2_fx[LONG_H_ST]; /* numerator coeff. */ - Word16 sig_ltp_fx[L_SUBFR16k + 1]; /* residual signal */ - /*Word16 lpccoeff_fx[LPC_SHB_ORDER+1];//Q12 */ - Word16 g1_fx, g2_fx, parcor0_fx; /*Q15 */ - Word16 tmp; - - parcor0_fx = 0; - move16(); - set16_fx( apond1_fx, 0, LPC_SHB_ORDER + 1 ); - set16_fx( apond2_fx, 0, LONG_H_ST ); - set16_fx( sig_ltp_fx, 0, L_SUBFR16k + 1 ); - - /* Obtain post-filter weights */ - tmp = extract_h( L_mult( GAMMA_SHARP_FX, formant_fac_fx ) ); /*Q15 */ - g1_fx = add( GAMMA0_FX, tmp ); /*Q15 */ - g2_fx = sub( GAMMA0_FX, tmp ); /*Q15 */ - - /* Compute weighted LPC coefficients */ - weight_a_fx( lpccoeff, apond1_fx, g1_fx, LPC_SHB_ORDER ); - weight_a_fx( lpccoeff, apond2_fx, g2_fx, LPC_SHB_ORDER ); - /* o: apond1_fx, apond2_fx in Q12 */ - - /* Compute A(gamma2) residual */ - Residu3_10_fx( apond2_fx, sig_in, sig_ltp_fx + 1, L_SUBFR16k, 0 ); - /* o: sig_ltp_fx in Q_bwe_exc */ - - /* Save last output of 1/A(gamma1) */ - sig_ltp_fx[0] = *ptr_mem_stp; - move16(); - - /* Control short term pst filter gain and compute parcor0 */ - Calc_st_filt_tbe( apond2_fx, apond1_fx, &parcor0_fx, sig_ltp_fx + 1, mem_zero ); - /* o: parcor0 in Q15 */ - /* i/o: sig_ltp_fx in Q_bwe_exc */ - - /* 1/A(gamma1) filtering, mem_stp is updated */ - Syn_filt_s( 0, apond1_fx, LPC_SHB_ORDER, sig_ltp_fx + 1, sig_ltp_fx + 1, L_SUBFR16k, mem_stp, 1 ); - - /* (1 + mu z-1) tilt filtering */ - filt_mu_fx( sig_ltp_fx, sig_out, parcor0_fx, L_SUBFR16k ); - /* o: sig_out in Q_bwe_exc */ - - /* gain control */ - scale_st_swb( sig_in, sig_out, ptr_gain_prec, L_SUBFR16k ); - - return; -} - -void PostShortTerm_ivas_enc_fx( - Word16 *sig_in, /* i : input signal (pointer to current subframe */ - Word16 *lpccoeff, /* i : LPC coefficients for current subframe */ - Word16 *sig_out, /* o : postfiltered output */ - Word16 *mem_stp, /* i/o: postfilter memory*/ - Word16 *ptr_mem_stp, /* i/o: pointer to postfilter memory*/ - Word16 *ptr_gain_prec, /* i/o: for gain adjustment*/ - Word16 *mem_zero, /* i/o: null memory to compute h_st*/ - const Word16 formant_fac_fx /* i : Strength of post-filter*/ -) -{ - Word16 apond1_fx[LPC_SHB_ORDER + 1]; /* denominator coeff.*/ - Word16 apond2_fx[LONG_H_ST]; /* numerator coeff. */ - Word16 sig_ltp_fx[L_SUBFR16k + 1]; /* residual signal */ - /*Word16 lpccoeff_fx[LPC_SHB_ORDER+1];//Q12 */ - Word16 g1_fx, g2_fx, parcor0_fx; /*Q15 */ - Word16 tmp; - - parcor0_fx = 0; - move16(); - set16_fx( apond1_fx, 0, LPC_SHB_ORDER + 1 ); - set16_fx( apond2_fx, 0, LONG_H_ST ); - set16_fx( sig_ltp_fx, 0, L_SUBFR16k + 1 ); - - /* Obtain post-filter weights */ - tmp = extract_h( L_mult( GAMMA_SHARP_FX, formant_fac_fx ) ); /*Q15 */ - g1_fx = add( GAMMA0_FX, tmp ); /*Q15 */ - g2_fx = sub( GAMMA0_FX, tmp ); /*Q15 */ - - /* Compute weighted LPC coefficients */ - weight_a_fx( lpccoeff, apond1_fx, g1_fx, LPC_SHB_ORDER ); - weight_a_fx( lpccoeff, apond2_fx, g2_fx, LPC_SHB_ORDER ); - /* o: apond1_fx, apond2_fx in Q12 */ - - /* Compute A(gamma2) residual */ - Residu3_10_fx( apond2_fx, sig_in, sig_ltp_fx + 1, L_SUBFR16k, 0 ); - /* o: sig_ltp_fx in Q_bwe_exc */ - - /* Save last output of 1/A(gamma1) */ - sig_ltp_fx[0] = *ptr_mem_stp; - move16(); - - /* Control short term pst filter gain and compute parcor0 */ - Calc_st_filt_tbe_ivas_enc_fx( apond2_fx, apond1_fx, &parcor0_fx, sig_ltp_fx + 1, mem_zero ); - /* o: parcor0 in Q15 */ - /* i/o: sig_ltp_fx in Q_bwe_exc */ - - /* 1/A(gamma1) filtering, mem_stp is updated */ - syn_filt_fx( 0, apond1_fx, LPC_SHB_ORDER, sig_ltp_fx + 1, sig_ltp_fx + 1, L_SUBFR16k, mem_stp, 1 ); - - /* (1 + mu z-1) tilt filtering */ - filt_mu_fx( sig_ltp_fx, sig_out, parcor0_fx, L_SUBFR16k ); - /* o: sig_out in Q_bwe_exc */ - - /* gain control */ - scale_st_swb( sig_in, sig_out, ptr_gain_prec, L_SUBFR16k ); - - return; -} - -void PostShortTerm_ivas_dec_fx( - Word16 *sig_in, /* i : input signal (pointer to current subframe */ - Word16 *lpccoeff, /* i : LPC coefficients for current subframe */ - Word16 *sig_out, /* o : postfiltered output */ - Word16 *mem_stp, /* i/o: postfilter memory*/ - Word16 *ptr_mem_stp, /* i/o: pointer to postfilter memory*/ - Word16 *ptr_gain_prec, /* i/o: for gain adjustment*/ - Word16 *mem_zero, /* i/o: null memory to compute h_st*/ - const Word16 formant_fac_fx /* i : Strength of post-filter*/ -) -{ - Word16 apond1_fx[LPC_SHB_ORDER + 1]; /* denominator coeff.*/ - Word16 apond2_fx[LONG_H_ST]; /* numerator coeff. */ - Word16 sig_ltp_fx[L_SUBFR16k + 1]; /* residual signal */ - /*Word16 lpccoeff_fx[LPC_SHB_ORDER+1];//Q12 */ - Word16 g1_fx, g2_fx, parcor0_fx; /*Q15 */ - Word16 tmp; - - parcor0_fx = 0; - move16(); - set16_fx( apond1_fx, 0, LPC_SHB_ORDER + 1 ); - set16_fx( apond2_fx, 0, LONG_H_ST ); - set16_fx( sig_ltp_fx, 0, L_SUBFR16k + 1 ); - - /* Obtain post-filter weights */ - tmp = extract_h( L_mult( GAMMA_SHARP_FX, formant_fac_fx ) ); /*Q15 */ - g1_fx = add( GAMMA0_FX, tmp ); /*Q15 */ - g2_fx = sub( GAMMA0_FX, tmp ); /*Q15 */ - - /* Compute weighted LPC coefficients */ - weight_a_fx( lpccoeff, apond1_fx, g1_fx, LPC_SHB_ORDER ); - weight_a_fx( lpccoeff, apond2_fx, g2_fx, LPC_SHB_ORDER ); - /* o: apond1_fx, apond2_fx in Q12 */ - - /* Compute A(gamma2) residual */ - Residu3_10_fx( apond2_fx, sig_in, sig_ltp_fx + 1, L_SUBFR16k, 0 ); - /* o: sig_ltp_fx in Q_bwe_exc */ - - /* Save last output of 1/A(gamma1) */ - sig_ltp_fx[0] = *ptr_mem_stp; - move16(); - - /* Control short term pst filter gain and compute parcor0 */ - Calc_st_filt_tbe_ivas_dec_fx( apond2_fx, apond1_fx, &parcor0_fx, sig_ltp_fx + 1, mem_zero ); - /* o: parcor0 in Q15 */ - /* i/o: sig_ltp_fx in Q_bwe_exc */ - - /* 1/A(gamma1) filtering, mem_stp is updated */ - Syn_filt_s( 0, apond1_fx, LPC_SHB_ORDER, sig_ltp_fx + 1, sig_ltp_fx + 1, L_SUBFR16k, mem_stp, 1 ); - - /* (1 + mu z-1) tilt filtering */ - filt_mu_fx( sig_ltp_fx, sig_out, parcor0_fx, L_SUBFR16k ); - /* o: sig_out in Q_bwe_exc */ - - /* gain control */ - scale_st_swb( sig_in, sig_out, ptr_gain_prec, L_SUBFR16k ); - - return; -} - -void flip_spectrum_and_decimby4_fx( - const Word16 input[], /* i : input spectrum Q_inp */ - Word16 output[], /* o : output spectrum Q_inp */ - const Word16 length, /* i : vector length */ - Word16 mem1[], /* i/o : memory Q_inp */ - Word16 mem2[], /* i/o : memory Q_inp */ - const Word16 ramp_flag /*i: flag to trigger slow ramp-up of output following change of core (HQ to ACELP or 12k8 to 16k ACELP) */ -) -{ - Word16 i; - Word16 factor, tmp[L_FRAME16k / 2]; - Word16 tmp1, tmp2; - Word16 input_change[L_FRAME16k]; - - IF( ramp_flag ) - { - factor = div_s( 4, length ); /* Q15 */ - FOR( i = 0; i < length / 4; i += 2 ) - { - tmp1 = extract_l( L_mult0( i, factor ) ); /* Q15 */ - tmp2 = extract_l( L_mult0( add( i, 1 ), factor ) ); /*Q15 */ - input_change[i] = negate( mult_r( input[i], tmp1 ) ); - move16(); - input_change[i + 1] = mult_r( input[i + 1], tmp2 ); - move16(); - } - } - ELSE - { - i = 0; - move16(); - } - - FOR( ; i < length; i = i + 2 ) - { - input_change[i] = negate( input[i] ); - move16(); - input_change[i + 1] = input[i + 1]; - move16(); - } - - Decimate_allpass_steep_fx( input_change, mem1, length, tmp ); - Decimate_allpass_steep_fx( tmp, mem2, shr( length, 1 ), output ); - - return; -} - - -/*==========================================================================*/ -/* FUNCTION : void GenShapedWBExcitation_fx () */ -/*--------------------------------------------------------------------------*/ -/* PURPOSE : Synthesize spectrally shaped highband excitation signal for the wideband */ -/*--------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _Word16 *lpc_shb i : lpc coefficients Q12 */ -/* _Word16 coder_type i : coding type */ -/* _Word16 *bwe_exc_extended i : bwidth extended exciatation Q_bwe_exc*/ -/* _Word16 Q_bwe_exc i : Q format */ -/* _Word16 voice_factors[] i : voicing factor Q15 */ -/*--------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _Word16 *excSHB o : synthesized shaped shb exctiation Q_bwe_exc*/ -/* _Word16 *exc4kWhtnd o : whitened synthesized shb excitation Q_bwe_exc*/ -/*--------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _Word32 *mem_csfilt i/o : memory Q_bwe_exc+16*/ -/* _Word16 *mem_genSHBexc_filt_down1 i/o : memory Q_bwe_exc */ -/* _Word16 *mem_genSHBexc_filt_down2 i/o : memory Q_bwe_exc */ -/* _Word16 *mem_genSHBexc_filt_down3 i/o : memory Q_bwe_exc */ -/* _Word16 *state_lpc_syn i/o : memory Q_bwe_exc */ -/* _Word16 bwe_seed[] i/o : random number generator seed */ -/*--------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------*/ -/* CALLED FROM : */ -/*==========================================================================*/ - -void GenShapedWBExcitation_ivas_fx( - Word16 *excSHB, /* o : synthesized shaped shb exctiation Q_bwe_exc*/ - const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ - Word16 *exc4kWhtnd, /* o : whitened synthesized shb excitation Q_bwe_exc*/ - Word32 *mem_csfilt, /* i/o : memory Q_bwe_exc+16*/ - Word16 *mem_genSHBexc_filt_down1, /* i/o : memory Q_bwe_exc*/ - Word16 *mem_genSHBexc_filt_down2, /* i/o : memory Q_bwe_exc*/ - Word16 *mem_genSHBexc_filt_down3, /* i/o : memory Q_bwe_exc*/ - Word16 *state_lpc_syn, /* i/o : memory Q_bwe_exc*/ - const Word16 coder_type, /* i : coding type */ - const Word16 *bwe_exc_extended, /* i : bwidth extended exciatation Q_bwe_exc*/ - const Word16 Q_bwe_exc, - Word16 bwe_seed[], /* i/o : random number generator seed */ - const Word16 voice_factors[], /* i : voicing factor Q15*/ - const Word16 uv_flag, /* i : unvoiced flag */ - const Word16 igf_flag ) -{ - Word16 i, j, k; - Word16 wht_fil_mem[LPC_WHTN_ORDER_WB]; - Word16 lpc_whtn[LPC_WHTN_ORDER_WB + 1]; - Word16 R_h[LPC_WHTN_ORDER_WB + 2], R_l[LPC_WHTN_ORDER_WB + 2]; - Word16 Q_R; - Word16 excTmp[L_FRAME16k]; - Word16 excTmp2[L_FRAME16k / 4]; - Word16 excTmp2_frac[L_FRAME16k / 4]; - Word16 exc4k[L_FRAME16k / 4]; - Word16 exc4k_frac[L_FRAME16k / 4]; - Word32 exc4k_32[L_FRAME16k / 4]; - Word32 pow1, pow22; - Word16 scale; - Word32 excNoisyEnv[L_FRAME16k / 4]; - Word16 csfilt_num2[1] = { 1638 }; /* Q15*/ - Word16 neg_csfilt_den2[2] = { -32768, 31457 }; /* Q15 */ - Word32 L_tmp, Ltemp1, Ltemp2; - Word16 temp1, temp2, exp; - Word32 Lmax; - Word16 max_val, n1, n2, sc; - Word32 LepsP[LPC_WHTN_ORDER_WB + 1]; - Word16 tmp_vfac; - Word16 avg_voice_fac; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move16(); -#endif - - /*0.25f*sum_f(voice_factors, NB_SUBFR)*/ - L_tmp = L_mult( voice_factors[0], 8192 /* 0.25 in Q15 */ ); - FOR( i = 1; i < NB_SUBFR; i++ ) - { - L_tmp = L_mac( L_tmp, voice_factors[i], 8192 /* 0.25 in Q15 */ ); - } - avg_voice_fac = round_fx( L_tmp ); - - test(); - test(); - test(); - test(); - IF( igf_flag != 0 && ( EQ_16( coder_type, VOICED ) || GT_16( avg_voice_fac, 11469 /* 0.35 in Q15 */ ) ) ) /*Q15 -> 0.35f*/ - { - csfilt_num2[0] = 6554; - move16(); /*Q15 -> 0.2f*/ - neg_csfilt_den2[1] = 26214; - move16(); /*Q15 -> 0.8f*/ - } - ELSE IF( igf_flag != 0 && ( EQ_16( coder_type, UNVOICED ) || LT_16( avg_voice_fac, 6654 /* 0.2 in Q15*/ ) ) ) /*Q15 -> 0.2f*/ - { - csfilt_num2[0] = 328; - move16(); /*Q15 -> 0.01f*/ - neg_csfilt_den2[1] = 32440; - move16(); /*Q15 -> 0.99f*/ - } - set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER_WB ); - Decimate_allpass_steep_fx( bwe_exc_extended, mem_genSHBexc_filt_down1, L_FRAME32k, excTmp ); - flip_spectrum_and_decimby4_fx( excTmp, exc4k, L_FRAME16k, mem_genSHBexc_filt_down2, mem_genSHBexc_filt_down3, 0 ); - - IF( uv_flag ) - { - create_random_vector_fx( exc4kWhtnd, L_FRAME16k / 4, bwe_seed ); - IF( LT_16( Q_bwe_exc, 5 ) ) - { - - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4kWhtnd[i] = shl_r( exc4kWhtnd[i], sub( Q_bwe_exc, 5 ) ); /*Q(Q_bwe_exc)/Q5(if Q_bwe_exc > 5) */ - move16(); - } - } - } - ELSE - { - autocorr_fx( exc4k, LPC_WHTN_ORDER_WB + 1, R_h, R_l, &Q_R, - L_FRAME16k / 4, win_flatten_4k_fx, 0, 1 ); - - /* Ensure R[0] isn't zero when entering Levinson Durbin */ - R_l[0] = s_max( R_l[0], 1 ); - move16(); - FOR( i = 1; i <= LPC_WHTN_ORDER_WB; i++ ) - { - L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); - L_Extract( L_tmp, &R_h[i], &R_l[i] ); - } - - E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER_WB, NULL ); - - Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER_WB + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); - - fir_fx( exc4k, lpc_whtn, exc4kWhtnd, wht_fil_mem, L_FRAME16k / 4, - LPC_WHTN_ORDER_WB, 0, 3 ); - - /* Ensure pow1 is greater than zero when computing normalization */ - max_val = 0; - move16(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - excTmp2[i] = abs_s( exc4kWhtnd[i] ); - move16(); /* Q_bwe_exc */ - max_val = s_max( max_val, excTmp2[i] ); - move16(); - } - - IF( max_val == 0 ) - { - pow1 = 1; - move16(); - n1 = 0; - move16(); - } - ELSE - { - n1 = norm_s( max_val ); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - excTmp2_frac[i] = shl_o( excTmp2[i], n1, &Overflow ); // Q_bwe_exc + n1 - move16(); /* Q14 */ - } - n1 = sub( sub( 14, n1 ), Q_bwe_exc ); - pow1 = 1; - move32(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - L_tmp = L_mult_o( excTmp2_frac[i], excTmp2_frac[i], &Overflow ); /* Q29 */ - pow1 = L_add_o( pow1, L_shr( L_tmp, 10 ), &Overflow ); /* Q22 */ - } - } - - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - excNoisyEnv[i] = L_add_o( *mem_csfilt, L_mult_o( csfilt_num2[0], excTmp2[i], &Overflow ), &Overflow ); - move32(); /* Q_bwe_exc+16 */ - *mem_csfilt = Mult_32_16( excNoisyEnv[i], neg_csfilt_den2[1] ); - move32(); /* Q_bwe_exc+16 */ - } - - create_random_vector_fx( exc4k, L_FRAME16k / 4, bwe_seed ); - - /* Ensure pow22 is greater than zero when computing normalization */ - Lmax = 0; - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4k_32[i] = Mult_32_16( excNoisyEnv[i], exc4k[i] ); - move32(); /* Q_bwe_exc+6 */ - Lmax = L_max( Lmax, L_abs( exc4k_32[i] ) ); - } - - IF( Lmax == 0 ) - { - pow22 = 1; - move16(); - n2 = 0; - move16(); - set16_fx( exc4k_frac, 0, L_FRAME16k / 4 ); - } - ELSE - { - n2 = norm_l( Lmax ); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4k_frac[i] = extract_h( L_shl_o( exc4k_32[i], n2, &Overflow ) ); /* Q(14-n2) */ - move16(); - } - n2 = 30 - n2 - ( Q_bwe_exc + 6 ); - pow22 = 1; - move32(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - L_tmp = L_mult_o( exc4k_frac[i], exc4k_frac[i], &Overflow ); /* Q29 */ - pow22 = L_add_o( pow22, L_shr( L_tmp, 10 ), &Overflow ); /* Q22 */ - } - } - - test(); - test(); - IF( EQ_16( coder_type, UNVOICED ) || ( igf_flag != 0 && LT_16( avg_voice_fac, 6654 /* 0.2 in Q15 */ ) ) ) - { - L_tmp = root_a_over_b_fx( pow1, sub( 19, shl( n1, 1 ) ), pow22, sub( 19, shl( n2, 1 ) ), &exp ); - scale = round_fx_o( L_shl_o( L_tmp, exp, &Overflow ), &Overflow ); /*Q15 */ - sc = sub( add( n2, Q_bwe_exc ), 14 ); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4kWhtnd[i] = round_fx_o( L_shl_o( L_mult_o( exc4k_frac[i], scale, &Overflow ), sc, &Overflow ), &Overflow ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ - move16(); - } - } - ELSE - { - sc = sub( add( n2, Q_bwe_exc ), 14 ); /* Q_bwe_exc+n2-14*/ - - k = 0; - FOR( i = 0; i < 4; i++ ) - { - test(); - IF( igf_flag != 0 && EQ_16( coder_type, VOICED ) ) - { - /*tmp_vfac = 2*voice_factors[i]; - tmp_vfac = min(1, tmp_vfac);*/ - tmp_vfac = shl_o( voice_factors[i], 1, &Overflow ); - } - ELSE - { - tmp_vfac = voice_factors[i]; - move16(); - } - - Ltemp1 = root_a_fx( L_deposit_h( tmp_vfac ), 31, &exp ); - temp1 = round_fx_o( L_shl_o( Ltemp1, exp, &Overflow ), &Overflow ); /* Q15 */ - L_tmp = Mult_32_16( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ - Ltemp2 = root_a_over_b_fx( L_tmp, sub( 19, shl( n1, 1 ) ), pow22, sub( 19, shl( n2, 1 ) ), &exp ); - temp2 = round_fx_o( L_shl_o( Ltemp2, exp, &Overflow ), &Overflow ); /* Q15 */ - FOR( j = 0; j < L_FRAME16k / 16; j++ ) - { - L_tmp = L_mult_o( temp1, exc4kWhtnd[k], &Overflow ); /* Q(16+Q_bwe_exc) */ - L_tmp = L_add_o( L_tmp, L_shl_o( L_mult_o( temp2, exc4k_frac[k], &Overflow ), sc, &Overflow ), &Overflow ); /* Q(16+Q_bwe_exc) */ - exc4kWhtnd[k] = round_fx_o( L_tmp, &Overflow ); /* Q_bwe_exc */ - move16(); - k++; - } - } - } - } - - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 ); - - return; -} - -void GenShapedWBExcitation_fx( - Word16 *excSHB, /* o : synthesized shaped shb exctiation Q(Q_bwe_exc) */ - const Word16 *lpc_shb, /* i : lpc coefficients Q12 */ - Word16 *exc4kWhtnd, /* o : whitened synthesized shb excitation Q(Q_bwe_exc) */ - Word32 *mem_csfilt, /* i/o : memory Q(Q_bwe_exc+16) */ - Word16 *mem_genSHBexc_filt_down1, /* i/o : memory Q(Q_bwe_exc) */ - Word16 *mem_genSHBexc_filt_down2, /* i/o : memory Q(Q_bwe_exc) */ - Word16 *mem_genSHBexc_filt_down3, /* i/o : memory Q(Q_bwe_exc) */ - Word16 *state_lpc_syn, /* i/o : memory Q(Q_bwe_exc) */ - const Word16 coder_type, /* i : coding type */ - const Word16 *bwe_exc_extended, /* i : bwidth extended exciatation Q(Q_bwe_exc) */ - const Word16 Q_bwe_exc, /* i : Q for memories */ - Word16 bwe_seed[], /* i/o : random number generator seed */ - const Word16 voice_factors[], /* i : voicing factor Q15 */ - const Word16 uv_flag, /* i : unvoiced flag */ - const Word16 igf_flag ) -{ - Word16 i, j, k; - Word16 wht_fil_mem[LPC_WHTN_ORDER_WB]; - Word16 lpc_whtn[LPC_WHTN_ORDER_WB + 1]; - Word16 R_h[LPC_WHTN_ORDER_WB + 2], R_l[LPC_WHTN_ORDER_WB + 2]; - Word16 Q_R; - Word16 excTmp[L_FRAME16k]; - Word16 excTmp2[L_FRAME16k / 4]; - Word16 excTmp2_frac[L_FRAME16k / 4]; - Word16 exc4k[L_FRAME16k / 4]; - Word16 exc4k_frac[L_FRAME16k / 4]; - Word32 exc4k_32[L_FRAME16k / 4]; - Word32 pow1, pow22; - Word16 scale; - Word32 excNoisyEnv[L_FRAME16k / 4]; - Word16 csfilt_num2[1] = { 1638 }; /* Q15*/ - Word16 neg_csfilt_den2[2] = { -32768, 31457 }; /* Q15 */ - Word32 L_tmp, Ltemp1, Ltemp2; - Word16 temp1, temp2, exp; - Word32 Lmax; - Word16 max_val, n1, n2, sc; - Word32 LepsP[LPC_WHTN_ORDER_WB + 1]; - Word16 tmp_vfac; - Word16 avg_voice_fac; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - move16(); - move16(); - move16(); - - /*0.25f*sum_f(voice_factors, NB_SUBFR)*/ - L_tmp = L_mult( voice_factors[0], 8192 /*0.25 in Q15 */ ); - FOR( i = 1; i < NB_SUBFR; i++ ) - { - L_tmp = L_mac( L_tmp, voice_factors[i], 8192 /*0.25 in Q15 */ ); - } - avg_voice_fac = round_fx( L_tmp ); - - test(); - test(); - test(); - test(); - IF( igf_flag != 0 && ( EQ_16( coder_type, VOICED ) || GT_16( avg_voice_fac, 11469 /* 0.35 in Q15 */ ) ) ) /*Q15 -> 0.35f*/ - { - csfilt_num2[0] = 6554; - move16(); /*Q15 -> 0.2f*/ - neg_csfilt_den2[1] = 26214; - move16(); /*Q15 -> 0.8f*/ - } - ELSE IF( igf_flag != 0 && ( EQ_16( coder_type, UNVOICED ) || LT_16( avg_voice_fac, 6654 /* 0.2 in Q15 */ ) ) ) /*Q15 -> 0.2f*/ - { - csfilt_num2[0] = 328; - move16(); /*Q15 -> 0.01f*/ - neg_csfilt_den2[1] = 32440; - move16(); /*Q15 -> 0.99f*/ - } - set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER_WB ); - Decimate_allpass_steep_fx( bwe_exc_extended, mem_genSHBexc_filt_down1, L_FRAME32k, excTmp ); - flip_spectrum_and_decimby4_fx( excTmp, exc4k, L_FRAME16k, mem_genSHBexc_filt_down2, mem_genSHBexc_filt_down3, 0 ); - - IF( uv_flag ) - { - create_random_vector_fx( exc4kWhtnd, L_FRAME16k / 4, bwe_seed ); - IF( LT_16( Q_bwe_exc, 5 ) ) - { - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4kWhtnd[i] = shl_r( exc4kWhtnd[i], sub( Q_bwe_exc, 5 ) ); /*Q(Q_bwe_exc)/Q5(if Q_bwe_exc > 5) */ - move16(); - } - } - } - ELSE - { - autocorr_fx( exc4k, LPC_WHTN_ORDER_WB + 1, R_h, R_l, &Q_R, - L_FRAME16k / 4, win_flatten_4k_fx, 0, 1 ); - - /* Ensure R[0] isn't zero when entering Levinson Durbin */ - R_l[0] = s_max( R_l[0], 1 ); - move16(); - FOR( i = 1; i <= LPC_WHTN_ORDER_WB; i++ ) - { - L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); - L_Extract( L_tmp, &R_h[i], &R_l[i] ); - } - - E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER_WB, NULL ); - - Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER_WB + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); - - fir_fx( exc4k, lpc_whtn, exc4kWhtnd, wht_fil_mem, L_FRAME16k / 4, - LPC_WHTN_ORDER_WB, 0, 3 ); - - /* Ensure pow1 is greater than zero when computing normalization */ - max_val = 0; - move16(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - excTmp2[i] = abs_s( exc4kWhtnd[i] ); - move16(); /* Q_bwe_exc */ - max_val = s_max( max_val, excTmp2[i] ); - move16(); - } - - IF( max_val == 0 ) - { - pow1 = 1; - move16(); - n1 = 0; - move16(); - } - ELSE - { - n1 = norm_s( max_val ); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - excTmp2_frac[i] = shl_o( excTmp2[i], n1, &Overflow ); - move16(); /* Q14 */ - } - n1 = sub( sub( 14, n1 ), Q_bwe_exc ); - pow1 = 1; - move32(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - L_tmp = L_mult_o( excTmp2_frac[i], excTmp2_frac[i], &Overflow ); /* Q29 */ - pow1 = L_add_o( pow1, L_shr( L_tmp, 7 ), &Overflow ); /* Q22 */ - } - } - - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - excNoisyEnv[i] = L_add_o( *mem_csfilt, L_mult_o( csfilt_num2[0], excTmp2[i], &Overflow ), &Overflow ); - move32(); /* Q_bwe_exc+16 */ - *mem_csfilt = Mpy_32_16_1( excNoisyEnv[i], neg_csfilt_den2[1] ); - move32(); /* Q_bwe_exc+16 */ - } - - create_random_vector_fx( exc4k, L_FRAME16k / 4, bwe_seed ); - - /* Ensure pow22 is greater than zero when computing normalization */ - Lmax = 0; - move32(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4k_32[i] = Mpy_32_16_1( excNoisyEnv[i], exc4k[i] ); - move32(); /* Q_bwe_exc+6 */ - Lmax = L_max( Lmax, L_abs( exc4k_32[i] ) ); - } - - IF( Lmax == 0 ) - { - pow22 = 1; - move16(); - n2 = 0; - move16(); - set16_fx( exc4k_frac, 0, L_FRAME16k / 4 ); - } - ELSE - { - n2 = norm_l( Lmax ); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4k_frac[i] = extract_h( L_shl_o( exc4k_32[i], n2, &Overflow ) ); /* Q(14-n2) */ - move16(); - } - n2 = sub( sub( 30, n2 ), add( Q_bwe_exc, 6 ) ); - pow22 = 1; - move32(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - L_tmp = L_mult_o( exc4k_frac[i], exc4k_frac[i], &Overflow ); /* Q29 */ - pow22 = L_add_o( pow22, L_shr( L_tmp, 7 ), &Overflow ); /* Q22 */ - } - } - - test(); - test(); - IF( EQ_16( coder_type, UNVOICED ) || ( igf_flag != 0 && LT_16( avg_voice_fac, 6654 /*0.2 in Q15 */ ) ) ) - { - L_tmp = root_a_over_b_fx( pow1, sub( 22, shl( n1, 1 ) ), pow22, sub( 22, shl( n2, 1 ) ), &exp ); - scale = round_fx_o( L_shl_o( L_tmp, exp, &Overflow ), &Overflow ); /*Q15 */ - sc = sub( add( n2, Q_bwe_exc ), 14 ); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - exc4kWhtnd[i] = round_fx_o( L_shl_o( L_mult_o( exc4k_frac[i], scale, &Overflow ), sc, &Overflow ), &Overflow ); /* Q_bwe_exc+n2-10+16+ Q_bwe_exc + n2 -14 -16 = //Q_bwe_exc */ - move16(); - } - } - ELSE - { - sc = sub( add( n2, Q_bwe_exc ), 14 ); /* Q_bwe_exc+n2-14*/ - - k = 0; - move16(); - FOR( i = 0; i < 4; i++ ) - { - test(); - IF( igf_flag != 0 && EQ_16( coder_type, VOICED ) ) - { - /*tmp_vfac = 2*voice_factors[i]; - tmp_vfac = min(1, tmp_vfac);*/ - tmp_vfac = shl_o( voice_factors[i], 1, &Overflow ); - } - ELSE - { - tmp_vfac = voice_factors[i]; - move16(); - } - - Ltemp1 = root_a_fx( L_deposit_h( tmp_vfac ), 31, &exp ); - temp1 = round_fx_o( L_shl_o( Ltemp1, exp, &Overflow ), &Overflow ); /* Q15 */ - L_tmp = Mpy_32_16_1( pow1, sub( 32767, tmp_vfac ) ); /* Q22*/ - Ltemp2 = root_a_over_b_fx( L_tmp, sub( 22, shl( n1, 1 ) ), pow22, sub( 22, shl( n2, 1 ) ), &exp ); - temp2 = round_fx_o( L_shl_o( Ltemp2, exp, &Overflow ), &Overflow ); /* Q15 */ - FOR( j = 0; j < L_FRAME16k / 16; j++ ) - { - L_tmp = L_mult_o( temp1, exc4kWhtnd[k], &Overflow ); /* Q(16+Q_bwe_exc) */ - L_tmp = L_add_o( L_tmp, L_shl_o( L_mult_o( temp2, exc4k_frac[k], &Overflow ), sc, &Overflow ), &Overflow ); /* Q(16+Q_bwe_exc) */ - exc4kWhtnd[k] = round_fx_o( L_tmp, &Overflow ); /* Q_bwe_exc */ - move16(); - k = add( k, 1 ); - } - } - } - } - - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 ); - - - return; -} - -/*-------------------------------------------------------------------* - * GenWBSynth() - * - * Generate 16 KHz sampled highband component from synthesized highband - *-------------------------------------------------------------------*/ - -void GenWBSynth_fx( - const Word16 *input_synspeech, /* i : input synthesized speech Qx*/ - Word16 *shb_syn_speech_16k, /* o : output highband compnent Qx*/ - Word16 *state_lsyn_filt_shb1, /* i/o: memory Qx*/ - Word16 *state_lsyn_filt_shb2 /* i/o: memory Qx*/ -) -{ - Word16 speech_buf_16k1[L_FRAME16k], speech_buf_16k2[L_FRAME16k]; - Word16 i, maxm, nor; - Word16 input_synspeech_temp[L_FRAME16k / 4]; - - maxm = 0; - move16(); - FOR( i = 0; i < L_FRAME16k / 4; i++ ) - { - maxm = s_max( maxm, abs_s( input_synspeech[i] ) ); - } - FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) - { - maxm = s_max( maxm, abs_s( state_lsyn_filt_shb1[i] ) ); - } - FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) - { - maxm = s_max( maxm, abs_s( state_lsyn_filt_shb2[i] ) ); - } - - nor = s_max( sub( norm_s( maxm ), 3 ), 0 ); /* Headroom = 3 */ - IF( maxm == 0 ) - nor = 15; - move16(); - - Copy_Scale_sig( input_synspeech, input_synspeech_temp, L_FRAME16k / 4, nor ); - Scale_sig( state_lsyn_filt_shb1, 2 * ALLPASSSECTIONS_STEEP, nor ); - Scale_sig( state_lsyn_filt_shb2, 2 * ALLPASSSECTIONS_STEEP, nor ); - Interpolate_allpass_steep_fx( input_synspeech_temp, state_lsyn_filt_shb1, L_FRAME16k / 4, speech_buf_16k1 ); - Interpolate_allpass_steep_fx( speech_buf_16k1, state_lsyn_filt_shb2, L_FRAME16k / 2, speech_buf_16k2 ); - flip_spectrum_fx( speech_buf_16k2, shb_syn_speech_16k, L_FRAME16k ); - - Scale_sig( shb_syn_speech_16k, L_FRAME16k, negate( nor ) ); - Scale_sig( state_lsyn_filt_shb1, 2 * ALLPASSSECTIONS_STEEP, negate( nor ) ); - Scale_sig( state_lsyn_filt_shb2, 2 * ALLPASSSECTIONS_STEEP, negate( nor ) ); - - return; -} - - -void find_td_envelope_fx( - const Word16 inp[], /* i : input signal Qx */ - const Word16 len, /* i : length of the input signal */ - const Word16 len_h, /* i : length of the MA filter */ - Word16 mem_h[], /* i/o: memory of the MA filter, length len_h/2 Qx */ - Word16 out[] /* o : td envelope of the input signal Qx */ -) -{ - Word16 k, K; - Word16 buf_in[L_FRAME16k + MAX_LEN_MA_FILTER], *p_in, *p_out, *p_prev, w; - Word16 tmp1, tmp2; - - assert( len > 0 && len <= L_FRAME16k ); - - // len_h is 20 at all calling locations - K = 10; /* length of FIR filter memory = half of the total filter length */ - move16(); - w = 1639; /* 1 / 20 in Q15 */ /* MA filtering coefficient */ - move16(); - - /* copy filter memory to the input buffer */ - IF( mem_h != NULL ) - { - Copy( mem_h, buf_in, K ); - } - ELSE - { - /* no memory available, use the first len_h/2 samples as memory */ - p_in = buf_in; - FOR( k = 0; k < K; k++ ) - { - *p_in++ = mult_r( abs_s( inp[k] ), w ); /* Qx */ - move16(); - } - } - - /* take the absolute value of the input signal and copy it to the input buffer */ - /* multiply each value by 1 / filter length */ - p_in = &buf_in[K]; - FOR( k = 0; k < len; k++ ) - { - *p_in++ = mult_r( abs_s( inp[k] ), w ); /* Qx */ - move16(); - } - - /* update filter memory from the end of the input buffer */ - IF( mem_h != NULL ) - { - Copy( &buf_in[len], mem_h, K ); - } - - /* do MA filtering */ - out[0] = sum16_fx( buf_in, len_h ); - move16(); - p_out = &buf_in[0]; /* pointer to leaving sample */ - p_in = &buf_in[len_h]; /* pointer to entering sample*/ - FOR( k = 1; k < len - K; k++ ) - { - tmp1 = *p_out++; - move16(); - tmp2 = *p_in++; - move16(); - out[k] = add( sub( out[k - 1], tmp1 ), tmp2 ); /* Qx */ - move16(); - } - - /* use IIR filtering to extrapolate the last K samples */ - p_in = &buf_in[len - K]; - p_out = &out[len - K]; - p_prev = p_out - 1; - FOR( k = 0; k < K; k++ ) - { - tmp1 = *p_in++; - move16(); - tmp2 = *p_prev++; - move16(); - *p_out++ = add( mult_r( 1638 /* 0.05f in Q15 */, ( tmp1 ) ), mult_r( 31130 /* 0.95f in Q15 */, ( tmp2 ) ) ); - move16(); - } - - return; -} - - -/*======================================================================================*/ -/* FUNCTION : void GenShapedSHBExcitation_fx () */ -/*--------------------------------------------------------------------------------------*/ -/* PURPOSE : Synthesize spectrally shaped highband excitation signal */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _(Word16) coder_type : coding type Q_bwe_exc */ -/* _(Word16) bwidth : input signal bwidth Q0 */ -/* _(Word16*) bwe_exc_extended :bwidth extended exciatation Q_bwe_exc */ -/* _(Word16[]) voice_factors :voicing factors Q15 */ -/* _(Word16*) lpc_shb :lpc coefficients Q12 */ -/* _(Word16*) Q_bwe_exc :Q Format of bwe_exc_extended */ -/* _(Word16) L_frame : Frame length - determines whether 12.8 or 16kHz core */ -/* _(Word16) last_L_frame : last L_frame */ -/*--------------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _(Word16*)excSHB :synthesized shaped shb excitation Q_bwe_exc */ -/* _(Word16*)White_exc16k :white excitation for the Fullband extension Q_bwe_exc */ -/* _(Word16*)slope :slope +ve (high freq > low freq), -ve or neutral Q12 */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _(Word16*)mem_csfilt :memory */ -/* _(Word16*)mem_genSHBexc_filt_down_shb :memory */ -/* _(Word16*)state_lpc_syn :memory */ -/* _(Word16[]) bwe_seed :random number generator seed */ -/* _(Word16[]) lpf_14k_mem :memory */ -/* _(Word32[])Hilbert_Mem :memory */ -/*--------------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------------------*/ -/* CALLED FROM : RX */ -/*======================================================================================*/ -void GenShapedSHBExcitation_fx( - Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/ - const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ - Word16 *White_exc16k_FB, /* o : white excitation for the Fullband extension Q_bwe_exc */ - Word32 *mem_csfilt, /* i/o: memory */ - Word16 *mem_genSHBexc_filt_down_shb, /* i/o: memory */ - Word16 *state_lpc_syn, /* i/o: memory */ - const Word16 coder_type, /* i : coding type */ - const Word16 *bwe_exc_extended, /* i : bwidth extended excitation */ - Word16 bwe_seed[], /* i/o: random number generator seed */ - Word16 voice_factors[], /* i : voicing factor*/ - const Word16 extl, /* i : extension layer */ - Word16 *tbe_demph, /* i/o: de-emphasis memory */ - Word16 *tbe_premph, /* i/o: pre-emphasis memory */ - Word16 *lpc_shb_sf, /* i: LP coefficients */ - const Word32 shb_ener_sf_32, /* i: input shb ener, Q31 */ - Word16 *shb_res_gshape, /* i: input res gain shape, Q14 */ - Word16 *shb_res, - Word16 *vf_ind, - const Word16 formant_fac, /* i : Formant sharpening factor [0..1] */ - Word16 fb_state_lpc_syn[], /* i/o: memory */ - Word16 *fb_tbe_demph, /* i/o: fb de-emphasis memory */ - Word16 *Q_bwe_exc, - Word16 *Q_bwe_exc_fb, - const Word16 Q_shb, - Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ - Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ - const Word32 bitrate, - const Word16 prev_bfi -#ifdef ADD_IVAS_TBE_CODE - , /* i : previous frame was concealed */ - const Word16 element_mode, /* i : element mode */ - const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ - Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ - Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ - const Word32 extl_brate, /* i : extension layer bitarte */ - const Word16 MSFlag, /* i : Multi Source flag */ - Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ - Word16 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ - Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ - Word16 *Env_error, /* o : error in SHB residual envelope modelling*/ - Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */ -#endif -) -{ - Word16 i, j, k; - Word16 wht_fil_mem[LPC_WHTN_ORDER]; - Word16 lpc_whtn[LPC_WHTN_ORDER + 1]; - Word16 R_h[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech MSB */ - Word16 R_l[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech LSB */ - Word16 Q_R; - Word32 LepsP[LPC_WHTN_ORDER + 1]; - Word16 exc32k[L_FRAME32k], exc16k[L_FRAME16k]; - Word32 pow1, pow22; - Word16 scale, temp1, temp2; - - Word16 excTmp2[L_FRAME16k]; - Word16 *White_exc16k; - Word16 excNoisyEnv[L_FRAME16k]; - Word16 csfilt_num2[1] = { 6554 }; /*0.2 in Q15 */ - move16(); - Word16 neg_csfilt_den2[2] = { -32767, 26214 }; /* {1.0f, -0.8f} */ - move16(); - move16(); - Word16 varEnvShape; - Word16 fb_deemph_fac = 15729; /*0.48f in Q15 */ - move16(); - Word16 exc16kWhtnd[L_FRAME16k]; - - Word32 L_tmp; - Word16 vf_tmp; - Word16 tmp, exp, tmp2; - Word16 voiceFacEst[NB_SUBFR16k]; - Word16 zero_mem[LPC_SHB_ORDER]; - Word32 syn_shb_ener_sf[4]; - Word16 tempSHB[80]; - Word16 Q_pow1, Q_pow22; - - Word32 L_tmp2, L_tmp3, L_tmp4; - Word16 temp; - - Word16 White_exc16k_FB_temp[L_FRAME16k]; - Word32 White_exc16k_32[L_FRAME16k]; - Word16 Q_temp; - Word16 prev_Q_bwe_exc_fb; - -#ifdef ADD_IVAS_TBE_CODE - Word32 tempD; - Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; - Word16 cbsize; - Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; - Word16 c0, c1, c2, c3, c4, c5, g1, g2, g, den; - Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; - Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; - Word16 flag_plosive; - Word16 delta; - Word16 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; - - mix_factor = 0.0f; -#endif - set16_fx( zero_mem, 0, LPC_SHB_ORDER ); - set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); - - FOR( i = 0; i < L_FRAME32k; i = i + 2 ) - { - exc32k[i] = negate( bwe_exc_extended[i] ); - move16(); - exc32k[i + 1] = bwe_exc_extended[i + 1]; - move16(); - } - - /* Decimate by 2 */ - Decimate_allpass_steep_fx( exc32k, mem_genSHBexc_filt_down_shb, 2 * L_FRAME16k, exc16k ); - /* i: exc32k in Q_bwe_exc */ - /* o: exc16k in Q_bwe_exc */ - - autocorr_fx( exc16k, LPC_WHTN_ORDER + 1, R_h, R_l, &Q_R, L_FRAME16k, win_flatten_fx, 0, 1 ); - /* Ensure R[0] isn't zero when entering Levinson Durbin */ - R_l[0] = s_max( R_l[0], 1 ); - move16(); - FOR( i = 1; i <= LPC_WHTN_ORDER; i++ ) - { - L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); - L_Extract( L_tmp, &R_h[i], &R_l[i] ); - } - E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER, NULL ); - Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); - fir_fx( exc16k, lpc_whtn, exc16kWhtnd, wht_fil_mem, L_FRAME16k, LPC_WHTN_ORDER, 0, 3 ); - - /* i: exc16k in Q_bwe_exc */ - /* o: exc16kWhtnd in Q_bwe_exc */ - -#ifdef ADD_IVAS_TBE_CODE - IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) -#else - IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif - { - temp2 = 0; - move16(); - FOR( j = 0; j < 4; j++ ) - { - temp1 = shb_res_gshape[j]; - move16(); - FOR( i = 0; i < 80; i++ ) - { - exc16kWhtnd[temp2 + i] = round_fx( L_shl( L_mult( exc16kWhtnd[temp2 + i], temp1 ), 1 ) ); - move16(); - /* exc16kWhtnd in Q_bwe_exc, shb_res_gshape in Q14 */ - } - temp2 = add( temp2, 80 ); - } - } - - /* Estimate pow1 associated with Low band nonlinear extended excitation */ - /* pow1=0.00001f */ - tmp = sub( shl( *Q_bwe_exc, 1 ), 31 ); - pow1 = L_shl_sat( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc) */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - /*excTmp2[k ] = (float)(fabs(exc16kWhtnd[k]));*/ - excTmp2[k] = abs_s( exc16kWhtnd[k] ); - move16(); - - /* pow1 += exc16kWhtnd[k] * exc16kWhtnd[k]; */ - pow1 = L_mac0_sat( pow1, exc16kWhtnd[k], exc16kWhtnd[k] ); /* 2*Q_bwe_exc */ - } - Q_pow1 = shl( *Q_bwe_exc, 1 ); - - test(); -#ifdef ADD_IVAS_TBE_CODE - IF( EQ_16( flag_ACELP16k, 0 ) ) -#else - IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) ) -#endif - { - /* varEnvShape = mean_fx(voice_factors, 4); */ - /* unroll the loop */ - L_tmp = L_mult( voice_factors[0], 8192 ); - L_tmp = L_mac( L_tmp, voice_factors[1], 8192 ); - L_tmp = L_mac( L_tmp, voice_factors[2], 8192 ); - varEnvShape = mac_r( L_tmp, voice_factors[3], 8192 ); /* varEnvShape in Q15 */ - } - ELSE /* 16k core */ - { - /* varEnvShape = mean_fx(voice_factors, 5); */ - /* unroll the loop */ - L_tmp = L_mult( voice_factors[0], 6554 ); - L_tmp = L_mac( L_tmp, voice_factors[1], 6554 ); - L_tmp = L_mac( L_tmp, voice_factors[2], 6554 ); - L_tmp = L_mac( L_tmp, voice_factors[3], 6554 ); - varEnvShape = mac_r( L_tmp, voice_factors[4], 6554 ); /* varEnvShape in Q15 */ - } - - IF( EQ_16( extl, FB_TBE ) ) - { - /*pow(varEnvShape,3) */ - tmp = mult_r( varEnvShape, varEnvShape ); - tmp = mult_r( tmp, varEnvShape ); - - /* max_val((0.68f - (float)pow(varEnvShape, 3)), 0.48f); */ - fb_deemph_fac = sub( 22282 /*0.68f Q15*/, tmp ); - fb_deemph_fac = s_max( fb_deemph_fac, 15729 /*0.48f Q15*/ ); - } - - /*varEnvShape = 1.09875f - 0.49875f * varEnvShape; */ - varEnvShape = msu_r( 1179773824l /*0.549375f Q31*/, 8172 /*0.249375f Q15*/, varEnvShape ); - - /*varEnvShape = min( max_val(varEnvShape, 0.6f), 0.999f); */ - varEnvShape = s_max( varEnvShape, 9830 /*0.3f Q15*/ ); - varEnvShape = s_min( varEnvShape, 16368 /*0.4995f Q15*/ ); - varEnvShape = shl( varEnvShape, 1 ); - csfilt_num2[0] = sub( MAX_16, varEnvShape ); - move16(); - neg_csfilt_den2[1] = varEnvShape; - move16(); - - test(); - test(); - test(); -#ifdef ADD_IVAS_TBE_CODE - IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#else - IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#endif - { - /* pre-init smoothing filter to avoid energy drop outs */ - L_tmp = L_mult( excTmp2[0], 1638 ); - FOR( i = 1; i < L_SUBFR16k / 4; i++ ) - { - L_tmp = L_mac( L_tmp, excTmp2[i], 1638 ); /*1638 = 1/20 in Q15*/ - } - /*L_tmp = sum(excTmp2, L_SUBFR16k/4)*(1/20) where L_SUBFR16k/4 =20 */ - - /* don't apply for FB in case the FB start-frame was potentially lost - White_exc16k is very sensitive to enery mismatch between enc - dec */ - /* rather stick to the more conservative approach, to avoid potential clippings */ - test(); - IF( !( prev_bfi && EQ_16( extl, FB_TBE ) ) ) - { - /* use weak smoothing for 1st frame after switching to make filter recover more quickly */ - varEnvShape = 26214 /*0.8f Q15*/; - move16(); - csfilt_num2[0] = sub( MAX_16, varEnvShape ); - move16(); - neg_csfilt_den2[1] = varEnvShape; - move16(); - } - - *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); - move32(); - } -#ifdef ADD_IVAS_TBE_CODE - if ( MSFlag > 0 ) - { - varEnvShape = 0.995f; - csfilt_num2[0] = 1.0f - varEnvShape; - csfilt_den2[1] = -varEnvShape; - } - - White_exc16k = exc16k; - - /* Track the low band envelope */ - if ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT ) - { - if ( extl_brate != SWB_TBE_1k10 && extl_brate != SWB_TBE_1k75 ) - { - mem_csfilt_left = 0.0f; - mem_csfilt_right = 0.0f; - for ( k = 0; k < L_FRAME16k; k++ ) - { - excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k]; - mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k]; - excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1]; - mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1]; - } - - alpha = 0.0f; - step = 1.0f / L_FRAME16k; - for ( k = 0; k < L_FRAME16k; k++ ) - { - excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + ( 1 - alpha ) * excNoisyEnvRight[k]; - alpha += step; - } - } - } - else -#endif - { - /* Track the low band envelope */ - L_tmp = *mem_csfilt; - move32(); - FOR( i = 0; i < L_FRAME16k; i++ ) - { - excNoisyEnv[i] = mac_r( L_tmp, csfilt_num2[0], excTmp2[i] ); - move16(); - /* excNoisyEnv : Q_bwe_exc, - *mem_csfilt: Q_bwe_exc+16, excTmp2: Q_bwe_exc, csfilt_num2[0] Q15 */ - L_tmp = L_mult( excNoisyEnv[i], neg_csfilt_den2[1] ); /* Q_bwe_exc+16 */ - } - *mem_csfilt = L_tmp; - move32(); - } -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - /* generate gaussian (white) excitation */ - for ( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k[k] = (float) own_random( &bwe_seed[0] ); - } - - /* normalize the amplitude of the gaussian excitation to that of the LB exc. */ - pow22 = POW_EXC16k_WHTND; - v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), White_exc16k, L_FRAME16k ); - } - else -#endif - { - /* create a random excitation - Reuse exc16k memory */ - White_exc16k = exc16k; - create_random_vector_fx( White_exc16k, L_FRAME, bwe_seed ); - create_random_vector_fx( White_exc16k + L_FRAME, L_FRAME16k - L_FRAME, bwe_seed ); - - L_tmp = L_deposit_l( 0 ); - tmp = add( *Q_bwe_exc, 1 ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - L_tmp4 = L_shl_sat( L_deposit_l( White_exc16k[k] ), tmp ); - if ( excNoisyEnv[k] != 0 ) - { - L_tmp4 = L_mult( excNoisyEnv[k], White_exc16k[k] ); /* (Q_bwe_exc) +5 +1*/ - } - White_exc16k_32[k] = L_tmp4; - move32(); - L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); - } - Q_temp = norm_l( L_tmp ); - if ( L_tmp == 0 ) - { - Q_temp = 31; - move16(); - } - /*Copy_Scale_sig( White_exc16k, White_exc16k, L_FRAME16k, sub(NOISE_QFAC, 5) );)*/ - /* White_exc16k in Q6 */ - - /* calculate pow22 */ - /* pow22=0.00001f */ - tmp = sub( shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ), 31 ); - pow22 = L_shl( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc-NOISE_QADJ) */ - tmp = sub( NOISE_QFAC, 5 ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - /* White_exc16k[k] *= excNoisyEnv[k]; */ - White_exc16k[k] = mult_r( excNoisyEnv[k], shl( White_exc16k[k], tmp ) ); - move16(); - /* i: excNoisyEnv in (Q_bwe_exc) */ - /* i: White_exc16k in Q6 */ - /* o: White_exc16k in (Q_bwe_exc-NOISE_QADJ) */ - /* pow22 += White_exc16k[k] * White_exc16k[k]; */ - pow22 = L_mac0_sat( pow22, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_bwe_exc-NOISE_QADJ)*/ - } - /*Q_pow22 = sub( shl(*Q_bwe_exc,1), 18 );*/ - Q_pow22 = shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ); - } - -#ifdef ADD_IVAS_TBE_CODE - flag_plosive = 0; - move16(); - test(); - test(); - test(); - IF(GE_32(extl_brate, SWB_TBE_2k8) || EQ_32(extl_brate, SWB_TBE_1k10) || EQ_32(extl_brate, SWB_TBE_1k75))) -#else - IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif - { - IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ - { -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - /* calculate TD envelopes of exc16kWhtnd and White_exc16k */ - find_td_envelope( White_exc16k, L_FRAME16k, 20, NULL, EnvWhiteExc16k ); - find_td_envelope( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd ); - - for ( k = 0; k < L_FRAME4k; k++ ) - { - EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k]; - EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k]; - } - - /* calculate the optimal mix factor */ - c0 = c1 = c2 = c3 = c4 = c5 = 0.0f; - for ( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - - c0 += c0_part[i]; - c1 += c1_part[i]; - c2 += c2_part[i]; - c3 += c3_part[i]; - c4 += c4_part[i]; - c5 += c5_part[i]; - } - - den = 4.0f * c0 * c2 - c4 * c4; - g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; - g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; - - *Env_error = 0.0f; - flag_plosive = 0; - for ( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i]; - *Env_error += Env_error_part[i]; - - if ( Env_error_part[i] > THR_ENV_ERROR_PLOSIVE ) - { - /* envelope error is too high -> likely a plosive */ - flag_plosive = 1; - } - } - - if ( flag_plosive ) - { - /* plosive detected -> set the mixing factor to 0 */ - *vf_ind = 0; - mix_factor = 0.0f; - } - else - { - /* normalize gain */ - g = g2 / ( g1 + g2 ); - - /* quantization of the mixing factor */ - cbsize = 1 << NUM_BITS_SHB_VF; - delta = 1.0f / ( cbsize - 1 ); - if ( g > 1.0f ) - { - g = 1.0f; - } - else if ( g < delta ) - { - /* prevent low gains to be quantized to 0 as this is reserved for plosives */ - g = delta; - } - - *vf_ind = usquant( g, &mix_factor, 0.0f, 1.0f / ( cbsize - 1 ), cbsize ); - } - } - else -#endif - { - Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, - ( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); - tmp = voiceFacEst[0]; - move16(); - tmp2 = MAX_16; - move16(); - if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) - { - tmp2 = 26214 /*0.8f Q15*/; - move16(); - } - } - } - ELSE /* decoder side */ - { -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - if ( *vf_ind == 0 ) - { - mix_factor = 0.0f; - flag_plosive = 1; - } - else - { - mix_factor = usdequant( *vf_ind, 0.0f, 1.0f / ( ( 1 << NUM_BITS_SHB_VF ) - 1 ) ); - } - } - else -#endif - { - /* *vf_ind is an integer scale by 0.125f*/ - tmp = shl( *vf_ind, ( 15 - 3 ) ); - tmp2 = MAX_16; - move16(); - if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) - { - tmp2 = 26214 /*0.8f Q15*/; - move16(); - } - } - } -#ifdef ADD_IVAS_TBE_CODE - IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) -#endif - { - voice_factors[0] = mult_r( voice_factors[0], tmp2 ); - move16(); - voice_factors[1] = mult_r( voice_factors[1], tmp2 ); - move16(); - voice_factors[2] = mult_r( voice_factors[2], tmp2 ); - move16(); - voice_factors[3] = mult_r( voice_factors[3], tmp2 ); - move16(); - voice_factors[4] = mult_r( voice_factors[4], tmp2 ); - move16(); - } - } -#ifdef ADD_IVAS_TBE_CODE - if ( element_mode >= IVAS_CPE_DFT && nlExc16k != NULL ) - { - /* save buffers for IC-BWE */ - mvr2r( exc16kWhtnd, nlExc16k, L_FRAME16k ); - v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), mixExc16k, L_FRAME16k ); - } -#endif - - tmp = sub( Q_temp, 3 ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k_FB[k] = round_fx( L_shl( White_exc16k_32[k], tmp ) ); /* Q_bwe_exc +5 +1 +Q_temp -16 -3 */ - } - prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; - move16(); - *Q_bwe_exc_fb = sub( add( *Q_bwe_exc, Q_temp ), 13 ); - move16(); - deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph ); - /* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */ - /* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */ -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - if ( !flag_plosive ) /* use only LB excitation in case of plosives */ - { - /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */ - old_scale = (float) sqrt( *prev_pow_exc16kWhtnd / pow1 ); - new_scale = 1.0f; - step_scale = ( new_scale - old_scale ) / ( L_FRAME16k / 2 ); - scale = old_scale; - - /* interpolate between the old and the new value of the mixing factor */ - old_fact = *prev_mix_factor; - new_fact = mix_factor; - step = ( new_fact - old_fact ) / ( L_FRAME16k / 2 ); - fact = old_fact; - - /* mixing of LB and gaussian excitation in the first half of the frame */ - for ( k = 0; k < L_FRAME16k / 2; k++ ) - { - exc16kWhtnd[k] = (float) fact * ( White_exc16k[k] * scale ) + (float) ( 1 - fact ) * exc16kWhtnd[k]; - fact += step; - scale += step_scale; - } - - /* mixing of LB and gaussian excitation in the second half of the frame */ - for ( ; k < L_FRAME16k; k++ ) - { - exc16kWhtnd[k] = (float) new_fact * White_exc16k[k] + (float) ( 1 - new_fact ) * exc16kWhtnd[k]; - } - } - preemph( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); - } - else -#endif - { -#ifdef ADD_IVAS_TBE_CODE - if ( coder_type == UNVOICED || MSFlag == 1 ) -#else - IF( EQ_16( coder_type, UNVOICED ) ) -#endif - { - L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); - scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - /* White_exc16k: (Q_bwe_exc-NOISE_QADJ), scale: Q15 */ - L_tmp = L_mult( White_exc16k[k], scale ); - /* L_tmp: (Q_bwe_exc-NOISE_QADJ) + 15 + 1 */ - exc16kWhtnd[k] = round_fx( L_shl( L_tmp, NOISE_QADJ ) ); - move16(); - /* exc16kWhtnd: Q_bwe_exc */ - } - PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); - /* i/o: exc16kWhtnd (Q_bwe_exc) */ - /* i/o: tbe_premph (Q_bwe_exc) */ - } - ELSE - { - Word16 nbSubFr, lSubFr; - Word16 tempQ15; - Word32 tempQ31; - /*nbSubFr = ( bitrate < ACELP_24k40 )? NB_SUBFR : NB_SUBFR16k;*/ - nbSubFr = NB_SUBFR16k; - lSubFr = ( L_FRAME16k / NB_SUBFR16k ); - IF( LT_32( bitrate, ACELP_24k40 ) ) - { - nbSubFr = NB_SUBFR; - move16(); - lSubFr = ( L_FRAME16k / NB_SUBFR ); - move16(); - } - k = 0; - FOR( i = 0; i < nbSubFr; i++ ) - { - test(); - IF( EQ_16( coder_type, VOICED ) && ( LT_32( bitrate, ACELP_24k40 ) ) ) - { - exp = 0; - move16(); - tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ - temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - exp = 0; - move16(); - tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ - temp = sub( MAX_16, temp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } - ELSE - { - /* Adjust noise mixing for formant sharpening filter */ - tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); - /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ - vf_tmp = sub( MAX_16, tempQ15 ); - vf_tmp = mult_r( voice_factors[i], vf_tmp ); - - exp = 0; - move16(); - tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ - temp = sub( MAX_16, vf_tmp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } - - FOR( j = 0; j < lSubFr; j++ ) - { - /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ - L_tmp = L_mult( temp2, White_exc16k[k + j] ); /* 16+(Q_bwe_exc-NOISE_QADJ)*/ - L_tmp = L_shl_sat( L_tmp, NOISE_QADJ ); /* 16+(Q_bwe_exc) */ - exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); - move16(); - /* Q_bwe_exc */ - } - k = add( k, lSubFr ); - - /* estimate the pre-emph factor */ - tempQ15 = sub( MAX_16, voice_factors[i] ); - exp = 0; - move16(); - temp = Sqrt16( tempQ15, &exp ); - temp = shl( temp, exp - 1 ); - - temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ - temp = div_s( temp, temp2 ); /* Q15 */ - temp = mult_r( PREEMPH_FAC, temp ); - - PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); - /* exc16kWhtnd: Q_bwe_exc; - tbe_premph: Q_bwe_exc*/ - } - } - } - -#ifdef ADD_IVAS_TBE_CODE - IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) -#else - IF( LT_32( bitrate, ACELP_24k40 ) ) -#endif - { - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: excSHB in Q_bwe_exc */ - } - ELSE - { - set16_fx( zero_mem, 0, LPC_SHB_ORDER ); - - Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - - Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - - Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - - Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: tempSHB in Q_bwe_exc */ - /* o: syn_shb_ener_sf in (2*Q_bwe_exc+1) */ - IF( LE_32( bitrate, ACELP_32k ) ) - { - L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); - - /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ - tmp = shl( Q_shb, 1 ); - tmp2 = add( shl( *Q_bwe_exc, 1 ), 1 ); - L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ - - *Q_bwe_exc = sub( *Q_bwe_exc, exp ); - move16(); /* compensate for the exp shift */ - tmp2 = add( prev_Q_bwe_syn, n_mem2 ); - IF( GT_16( *Q_bwe_exc, tmp2 ) ) - { - L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); - *Q_bwe_exc = tmp2; - move16(); - } - FOR( i = 0; i < L_FRAME16k; i++ ) - { - L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ - exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ - move16(); - } - } - /* i: L_tmp2 in (Q31-exp) */ - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ - - /* Rescale the past memories: LP synth and SHB look ahead buffers */ - tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); - FOR( i = 0; i < LPC_SHB_ORDER; i++ ) - { - state_lpc_syn[i] = shl( state_lpc_syn[i], tmp ); - move16(); - } - FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) - { - excSHB[i] = shl( excSHB[i], tmp ); - move16(); - } - /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ - - Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in (Q_bwe_exc) */ - /* o: excSHB in (Q_bwe_exc) */ - } - - IF( EQ_16( extl, FB_TBE ) ) - { - tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); - Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); - Scale_sig( fb_tbe_demph, 1, tmp ); - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); - /* i: White_exc16k_FB in (14-n2) */ - /* o: White_exc16k_FB_temp in (14-n2) */ - - FOR( i = 0; i < 10; i++ ) - { - FOR( j = 0; j < 32; ++j ) - { - White_exc16k_FB_temp[i * 32 + j] = mult_r( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); - move16(); - } - } - - *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); - move16(); /**Q_bwe_exc_fb +35 +1 -16*/ - flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); - - deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); - } - ELSE - { - set16_fx( White_exc16k_FB, 0, L_FRAME16k ); - } - -#ifdef ADD_IVAS_TBE_CODE - *prev_pow_exc16kWhtnd = pow1; - *prev_mix_factor = mix_factor; -#endif - return; -} - -void GenShapedSHBExcitation_ivas_enc_fx( - Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/ - const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ - Word16 *White_exc16k_FB, /* o : white excitation for the Fullband extension Q_bwe_exc_fb */ - Word32 *mem_csfilt, /* i/o: memory */ - Word16 *mem_genSHBexc_filt_down_shb, /* i/o: memory */ - Word16 *state_lpc_syn, /* i/o: memory */ - const Word16 coder_type, /* i : coding type */ - const Word16 *bwe_exc_extended, /* i : bwidth extended excitation */ - Word16 bwe_seed[], /* i/o: random number generator seed */ - Word16 voice_factors[], /* i : voicing factor*/ - const Word16 extl, /* i : extension layer */ - Word16 *tbe_demph, /* i/o: de-emphasis memory */ - Word16 *tbe_premph, /* i/o: pre-emphasis memory */ - Word16 *lpc_shb_sf, /* i: LP coefficients */ - const Word32 shb_ener_sf_32, /* i: input shb ener, Q31 */ - Word16 *shb_res_gshape, /* i: input res gain shape, Q14 */ - Word16 *shb_res, - Word16 *vf_ind, - const Word16 formant_fac, /* i : Formant sharpening factor [0..1] */ - Word16 fb_state_lpc_syn[], /* i/o: memory */ - Word16 *fb_tbe_demph, /* i/o: fb de-emphasis memory */ - Word16 *Q_bwe_exc, - Word16 *Q_bwe_exc_fb, - const Word16 Q_shb, - Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ - Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ - const Word32 bitrate, - const Word16 prev_bfi, - const Word16 element_mode, /* i : element mode */ - const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ - Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ - Word16 *nlExc16k_e, /* i/o: exp of nlExc16k */ - Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ - Word16 *mixExc16k_e, /* i/o: exp of mixExc16k_fx */ - const Word32 extl_brate, /* i : extension layer bitarte */ - const Word16 MSFlag, /* i : Multi Source flag */ - Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ - Word16 Q_EnvSHBres_4k, - Word32 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ - Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ - Word16 *Env_error, /* o : error in SHB residual envelope modelling*/ - Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */ -) -{ - Word16 i, j, k; - Word16 wht_fil_mem[LPC_WHTN_ORDER]; - Word16 lpc_whtn[LPC_WHTN_ORDER + 1]; - Word16 R_h[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech MSB */ - Word16 R_l[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech LSB */ - Word16 Q_R; - Word32 LepsP[LPC_WHTN_ORDER + 1]; - Word16 exc32k[L_FRAME32k], exc16k[L_FRAME16k]; - Word32 pow1, pow22; - Word16 scale, temp1, temp2, temp3; - - Word16 excTmp2[L_FRAME16k]; - Word16 *White_exc16k; - Word16 Q_White_exc16k; - Word16 excNoisyEnv[L_FRAME16k]; - Word16 csfilt_num2[1] = { 6554 }; /*0.2 in Q15 */ - move16(); - Word16 neg_csfilt_den2[2] = { -32767, 26214 }; /* {1.0f, -0.8f} */ - move16(); - move16(); - Word16 varEnvShape; - Word16 fb_deemph_fac = 15729; /*0.48f in Q15 */ - Word16 exc16kWhtnd[L_FRAME16k]; - - Word32 L_tmp; - Word16 vf_tmp; - Word16 tmp, exp, tmp2 = 0; - move16(); - Word16 voiceFacEst[NB_SUBFR16k]; - Word16 zero_mem[LPC_SHB_ORDER]; - Word32 syn_shb_ener_sf[4]; - Word16 syn_shb_ener_sf_q[4]; - Word16 tempSHB[80]; - Word16 Q_pow1, Q_pow22; - - Word32 L_tmp2, L_tmp3, L_tmp4; - Word16 temp; - - Word16 White_exc16k_FB_temp[L_FRAME16k]; - Word32 White_exc16k_32[L_FRAME16k]; - Word16 White_exc16k_tmp[L_FRAME16k]; - Word16 prev_Q_bwe_exc_fb; - - Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; - Word16 cbsize; - Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; - Word32 c0, c1, c2, c3, c4, c5, den; - Word16 g1, g2, g, g1_e, g2_e, g_e, den_e, shift, tmp_e, tmp1_e; - Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; - Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; - Word16 flag_plosive; - Word16 delta; - Word32 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; - Word64 W_tmp; - - mix_factor = 0; /* Q15 */ - move16(); - - set16_fx( zero_mem, 0, LPC_SHB_ORDER ); - set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); - FOR( i = 0; i < L_FRAME32k; i = i + 2 ) - { - exc32k[i] = negate( bwe_exc_extended[i] ); // Q_bwe_exc - move16(); - exc32k[i + 1] = bwe_exc_extended[i + 1]; // Q_bwe_exc - move16(); - } - - /* Decimate by 2 */ - Decimate_allpass_steep_fx( exc32k, mem_genSHBexc_filt_down_shb, 2 * L_FRAME16k, exc16k ); // Q_bwe_exc - /* i: exc32k in Q_bwe_exc */ - /* o: exc16k in Q_bwe_exc */ - - autocorr_fx( exc16k, LPC_WHTN_ORDER + 1, R_h, R_l, &Q_R, L_FRAME16k, win_flatten_fx, 0, 1 ); // Q_R - /* Ensure R[0] isn't zero when entering Levinson Durbin */ - R_l[0] = s_max( R_l[0], 1 ); - move16(); - FOR( i = 1; i <= LPC_WHTN_ORDER; i++ ) - { - L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); - L_Extract( L_tmp, &R_h[i], &R_l[i] ); // Q_R - } - E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER, NULL ); - Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); // Q12 - fir_fx( exc16k, lpc_whtn, exc16kWhtnd, wht_fil_mem, L_FRAME16k, LPC_WHTN_ORDER, 0, 3 ); // Q_bwe_exc - - /* i: exc16k in Q_bwe_exc */ - /* o: exc16kWhtnd in Q_bwe_exc */ - - IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) - { - temp2 = 0; - move16(); - FOR( j = 0; j < 4; j++ ) - { - temp1 = shb_res_gshape[j]; - move16(); - FOR( i = 0; i < 80; i++ ) - { - exc16kWhtnd[temp2 + i] = round_fx( L_shl( L_mult( exc16kWhtnd[temp2 + i], temp1 ), 1 ) ); // Q_bwe_exc - move16(); - /* exc16kWhtnd in Q_bwe_exc, shb_res_gshape in Q14 */ - } - temp2 = add( temp2, 80 ); - } - } - - /* Estimate pow1 associated with Low band nonlinear extended excitation */ - /* pow1=0.00001f */ - tmp = sub( shl( *Q_bwe_exc, 1 ), 31 ); - W_tmp = W_shl( 21475 /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc) */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - /*excTmp2[k ] = (float)(fabs(exc16kWhtnd[k]));*/ - excTmp2[k] = abs_s( exc16kWhtnd[k] ); - move16(); - - /* pow1 += exc16kWhtnd[k] * exc16kWhtnd[k]; */ - W_tmp = W_mac_16_16( W_tmp, exc16kWhtnd[k], exc16kWhtnd[k] ); // 2*Q_bwe_exc+1 - } - exp = W_norm( W_tmp ); - pow1 = W_extract_h( W_shl( W_tmp, exp ) ); // 2*Q_bwe_exc+1+exp-32 = // tmp+exp - Q_pow1 = add( tmp, exp ); - - IF( flag_ACELP16k == 0 ) - { - /* varEnvShape = mean_fx(voice_factors, 4); */ - /* unroll the loop */ - L_tmp = L_mult( voice_factors[0], 8192 /*0.25 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[1], 8192 /*0.25 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[2], 8192 /*0.25 in Q15 */ ); - varEnvShape = mac_r( L_tmp, voice_factors[3], 8192 /*0.25 in Q15 */ ); /* varEnvShape in Q15 */ - } - ELSE /* 16k core */ - { - /* varEnvShape = mean_fx(voice_factors, 5); */ - /* unroll the loop */ - L_tmp = L_mult( voice_factors[0], 6554 /*0.2 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[1], 6554 /*0.2 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[2], 6554 /*0.2 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[3], 6554 /*0.2 in Q15 */ ); - varEnvShape = mac_r( L_tmp, voice_factors[4], 6554 /*0.2 in Q15 */ ); /* varEnvShape in Q15 */ - } - - IF( EQ_16( extl, FB_TBE ) ) - { - /*pow(varEnvShape,3) */ - tmp = mult_r( varEnvShape, varEnvShape ); - tmp = mult_r( tmp, varEnvShape ); - - /* max_val((0.68f - (float)pow(varEnvShape, 3)), 0.48f); */ - fb_deemph_fac = sub( 22282 /*0.68f Q15*/, tmp ); - fb_deemph_fac = s_max( fb_deemph_fac, 15729 /*0.48f Q15*/ ); - } - - /*varEnvShape = 1.09875f - 0.49875f * varEnvShape; */ - varEnvShape = msu_r( 1179773824l /*0.549375f Q31*/, 8172 /*0.249375f Q15*/, varEnvShape ); - - /*varEnvShape = min( max_val(varEnvShape, 0.6f), 0.999f); */ - varEnvShape = s_max( varEnvShape, 9830 /*0.3f Q15*/ ); - varEnvShape = s_min( varEnvShape, 16368 /*0.4995f Q15*/ ); - varEnvShape = shl( varEnvShape, 1 ); - csfilt_num2[0] = sub( MAX_16, varEnvShape ); // Q15 - move16(); - neg_csfilt_den2[1] = varEnvShape; // Q15 - move16(); - - test(); - test(); - test(); - test(); - IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) - { - /* pre-init smoothing filter to avoid energy drop outs */ - L_tmp = L_mult( excTmp2[0], 1638 ); - FOR( i = 1; i < L_SUBFR16k / 4; i++ ) - { - L_tmp = L_mac( L_tmp, excTmp2[i], 1638 ); /*1638 = 1/20 in Q15*/ - } - /*L_tmp = sum(excTmp2, L_SUBFR16k/4)*(1/20) where L_SUBFR16k/4 =20 */ - - /* don't apply for FB in case the FB start-frame was potentially lost - White_exc16k is very sensitive to enery mismatch between enc - dec */ - /* rather stick to the more conservative approach, to avoid potential clippings */ - test(); - IF( !( prev_bfi && EQ_16( extl, FB_TBE ) ) ) - { - /* use weak smoothing for 1st frame after switching to make filter recover more quickly */ - varEnvShape = 26214 /*0.8f Q15*/; - move16(); - csfilt_num2[0] = sub( MAX_16, varEnvShape ); - move16(); - neg_csfilt_den2[1] = varEnvShape; - move16(); - } - - *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); - move32(); - } - - IF( MSFlag > 0 ) - { - // varEnvShape = 0.995f; - varEnvShape = 32604; - move16(); - csfilt_num2[0] = 32768 - varEnvShape; - // csfilt_num2[0] = sub( 32767, varEnvShape ); - move16(); - neg_csfilt_den2[1] = varEnvShape; - move16(); - } - - White_exc16k = exc16k; - Word16 Q_excTmp2 = add( getScaleFactor16( excTmp2, L_FRAME16k ), *Q_bwe_exc ); - IF( *mem_csfilt ) - { - Q_excTmp2 = s_min( Q_excTmp2, sub( add( norm_l( *mem_csfilt ), *Q_bwe_exc ), 1 ) ); - } - test(); - /* Track the low band envelope */ - IF( EQ_16( element_mode, IVAS_CPE_TD ) || EQ_16( element_mode, IVAS_CPE_DFT ) ) - { - test(); - IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) - { - mem_csfilt_left = 0; - mem_csfilt_right = 0; - move16(); - move16(); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - // excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k]; - excNoisyEnvLeft[k] = add( mem_csfilt_left, mult_r( csfilt_num2[0], shl( excTmp2[k], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 - move16(); - // mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k]; - mem_csfilt_left = mult_r( neg_csfilt_den2[1], excNoisyEnvLeft[k] ); // Q_excTmp2 - // excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1]; - excNoisyEnvRight[L_FRAME16k - k - 1] = add( mem_csfilt_right, mult_r( csfilt_num2[0], shl( excTmp2[L_FRAME16k - k - 1], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 - move16(); - // mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1]; - mem_csfilt_right = mult_r( neg_csfilt_den2[1], excNoisyEnvRight[L_FRAME16k - k - 1] ); // Q_excTmp2 - } - - alpha = 0; - move16(); - // step = 1.0f / L_FRAME16k; - step = 102; // Q15 - move16(); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - // excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + (1 - alpha) * excNoisyEnvRight[k]; - excNoisyEnv[k] = add( mult_r( alpha, excNoisyEnvLeft[k] ), mult_r( sub( 32767, alpha ), excNoisyEnvRight[k] ) ); // Q_excTmp2 - move16(); - alpha = add( alpha, step ); - } - } - } - ELSE - { - /* Track the low band envelope */ - L_tmp = L_shl( *mem_csfilt, sub( Q_excTmp2, *Q_bwe_exc ) ); - move32(); - FOR( i = 0; i < L_FRAME16k; i++ ) - { - excNoisyEnv[i] = mac_r( L_tmp, csfilt_num2[0], shl( excTmp2[i], sub( Q_excTmp2, *Q_bwe_exc ) ) ); - move16(); - /* Work-around to avoid 0s for very small value*/ - test(); - test(); - test(); - test(); - if ( excNoisyEnv[i] == 0 && ( L_tmp != 0 || ( csfilt_num2[0] != 0 && excTmp2[i] != 0 ) ) ) - { - excNoisyEnv[i] = 1; - move16(); - } - /* excNoisyEnv : Q_excTmp2, - *mem_csfilt: Q_excTmp2+16, excTmp2: Q_excTmp2, csfilt_num2[0] Q_excTmp2 */ - L_tmp = L_mult( excNoisyEnv[i], neg_csfilt_den2[1] ); /* Q_excTmp2 + 16 */ - } - *mem_csfilt = L_shr( L_tmp, sub( Q_excTmp2, *Q_bwe_exc ) ); - move32(); - } - - test(); - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - /* generate gaussian (white) excitation */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k[k] = own_random( &bwe_seed[0] ); // Q0 - move16(); - } - - /* normalize the amplitude of the gaussian excitation to that of the LB exc. */ - Word32 pow22_inv = POW_EXC16k_WHTND_FX_INV_SQRT; // Q31 - move32(); - move32(); - pow22 = POW_EXC16k_WHTND_FX; - Q_pow22 = -6; - move16(); - // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), White_exc16k, L_FRAME16k); - Word16 pow1_exp = sub( Q31, Q_pow1 ); - Word32 temp_pow = Sqrt32( pow1, &pow1_exp ); - temp_pow = L_shl( Mpy_32_32( temp_pow, pow22_inv ), pow1_exp ); - /*Word16 out_exp; - Word32 temp_pow1 = root_a_over_b_fx(pow1, Q_pow1, pow22, Q_pow22, &out_exp); - temp_pow1 = L_shl(temp_pow1, out_exp);*/ - // v_multc_fixed_16_16(White_exc16k, round_fx(temp_pow), White_exc16k, L_FRAME16k); - L_tmp = 0; - move32(); - Q_White_exc16k = add( getScaleFactor16( White_exc16k, L_FRAME16k ), norm_l( temp_pow ) ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k_32[k] = Mpy_32_16_1( temp_pow, White_exc16k[k] ); // Q31 + Q0 - Q15 = Q16 - move32(); - White_exc16k[k] = round_fx( L_shl( White_exc16k_32[k], Q_White_exc16k ) ); // Q16 + Q_White_exc16k - Q16 = Q_White_exc16k - move16(); - L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); - } - } - ELSE - { - /* create a random excitation - Reuse exc16k memory */ - create_random_vector_fx( White_exc16k, L_FRAME, bwe_seed ); // Q5 - create_random_vector_fx( White_exc16k + L_FRAME, L_FRAME16k - L_FRAME, bwe_seed ); // Q5 - - L_tmp = L_deposit_l( 0 ); - tmp = add( *Q_bwe_exc, 1 ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - L_tmp4 = L_mult( excNoisyEnv[k], White_exc16k[k] ); /* (Q_excTmp2) +5 +1*/ - White_exc16k_32[k] = L_tmp4; /* (Q_excTmp2) +5 +1*/ - move32(); - L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); - } - /*Copy_Scale_sig( White_exc16k, White_exc16k, L_FRAME16k, sub(NOISE_QFAC, 5) );)*/ - /* White_exc16k in Q6 */ - - /* calculate pow22 */ - /* pow22=0.00001f */ - tmp = sub( shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ), 31 ); - W_tmp = W_shl( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(*Q_bwe_exc-NOISE_QADJ) */ - Q_White_exc16k = getScaleFactor32( White_exc16k_32, L_FRAME16k ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - /* White_exc16k[k] *= excNoisyEnv[k]; */ - White_exc16k[k] = extract_h( L_shl( White_exc16k_32[k], Q_White_exc16k ) ); // Q_excTmp2 + 6 + Q_White_exc16k - 16 ==> Q_excTmp2 + Q_White_exc16k - 10 - move16(); - /* i: excNoisyEnv in (Q_excTmp2) */ - /* i: White_exc16k in Q6 */ - /* o: White_exc16k in (Q_bwe_exc-NOISE_QADJ) */ - - /* pow22 += White_exc16k[k] * White_exc16k[k]; */ - W_tmp = W_mac0_16_16( W_tmp, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_excTmp2 + Q_White_exc16k - 10)*/ - } - Q_pow22 = W_norm( W_tmp ); - pow22 = W_extract_h( W_shl( W_tmp, Q_pow22 ) ); // 2*(Q_excTmp2 + Q_White_exc16k - 10)+Q_pow22-32 - Q_pow22 = sub( add( Q_pow22, shl( sub( add( Q_White_exc16k, Q_excTmp2 ), 10 ), 1 ) ), 32 ); - Q_White_exc16k = add( Q_White_exc16k, sub( Q_excTmp2, 10 ) ); - } - - flag_plosive = 0; - move16(); - test(); - test(); - test(); - IF( GE_32( extl_brate, SWB_TBE_2k8 ) || EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ - { -#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!! - test(); - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k_tmp[k] = shl( White_exc16k[k], sub( *Q_bwe_exc, Q_White_exc16k ) ); - move16(); - } - - /* calculate TD envelopes of exc16kWhtnd and White_exc16k */ - find_td_envelope_fx( White_exc16k_tmp, L_FRAME16k, 20, NULL, EnvWhiteExc16k ); /* Q_bwe_exc */ - find_td_envelope_fx( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd ); /* Q_bwe_exc */ - - FOR( k = 0; k < L_FRAME4k; k++ ) - { - EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k]; /* Q_bwe_exc */ - move16(); - EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k]; /* Q_bwe_exc */ - move16(); - } - - /* calculate the optimal mix factor */ - c0 = c1 = c2 = c3 = c4 = c5 = 0; /* Q0 */ - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - - temp1 = add( shl( *Q_bwe_exc, 1 ), 1 ); - temp2 = add( add( Q_EnvSHBres_4k, *Q_bwe_exc ), 1 ); - temp3 = add( shl( Q_EnvSHBres_4k, 1 ), 1 ); - FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - // c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c0_part[i] = L_shr( sum2_fx( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ - move32(); - // c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c1_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ - move32(); - // c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c2_part[i] = L_shr( sum2_fx( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ - move32(); - // c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c3_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ - move32(); - // c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c4_part[i] = L_shr( Dot_product( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), sub( temp1, 1 ) ); /* Q0 */ - move32(); - // c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c5_part[i] = L_shr( sum2_fx( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp3 ); /* Q0 */ - move32(); - - c0 = L_add( c0, c0_part[i] ); - c1 = L_add( c1, c1_part[i] ); - c2 = L_add( c2, c2_part[i] ); - c3 = L_add( c3, c3_part[i] ); - c4 = L_add( c4, c4_part[i] ); - c5 = L_add( c5, c5_part[i] ); - } - - // den = 4.0f * c0 * c2 - c4 * c4; - W_tmp = W_sub( W_shl( W_mult0_32_32( c0, c2 ), 2 ), W_mult0_32_32( c4, c4 ) ); - den_e = 63; - move16(); - shift = W_norm( W_tmp ); - den = W_extract_h( W_shl( W_tmp, shift ) ); - den_e = sub( den_e, shift ); - - IF( den == 0 ) - { - den = 1; - move32(); - den_e = 31; - move16(); - } - - // g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; - W_tmp = W_sub( W_mult0_32_32( c3, c4 ), W_shl( W_mult0_32_32( c1, c2 ), 1 ) ); - g1_e = 63; - move16(); - shift = W_norm( W_tmp ); - L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); - g1_e = sub( g1_e, shift ); - - g1 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); - g1_e = sub( add( tmp_e, g1_e ), den_e ); - - // g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; - W_tmp = W_sub( W_mult0_32_32( c1, c4 ), W_shl( W_mult0_32_32( c0, c3 ), 1 ) ); - g2_e = 63; - move16(); - shift = W_norm( W_tmp ); - L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); - g2_e = sub( g2_e, shift ); - - g2 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); - g2_e = sub( add( tmp_e, g2_e ), den_e ); - - // *Env_error = 0.0f; - *Env_error = 0; - move16(); - flag_plosive = 0; - move16(); - FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - // Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i]; - L_tmp = BASOP_Util_Add_Mant32Exp( c5_part[i], 31, Mpy_32_32( L_mult( g1, g1 ), c0_part[i] ), add( shl( g1_e, 1 ), 31 ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c1_part[i], g1 ), add( 31, g1_e ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g2, g2 ), c2_part[i] ), add( shl( g2_e, 1 ), 31 ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c3_part[i], g2 ), add( 31, g2_e ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g1, g2 ), c4_part[i] ), add( add( g1_e, g2_e ), 31 ), &tmp_e ); - - // Env_error_part[i] = L_shr( L_tmp, 31 - tmp_e ); // Check Exponent - Env_error_part[i] = extract_h( L_shr_sat( L_tmp, sub( Q15, tmp_e ) ) ); /* Q0 */ - move16(); - - // *Env_error += Env_error_part[i]; - *Env_error = add_sat( *Env_error, Env_error_part[i] ); /* Q0 */ - move16(); - - if ( GT_16( Env_error_part[i], THR_ENV_ERROR_PLOSIVE_FX ) ) // Check which Q - { - /* envelope error is too high -> likely a plosive */ - flag_plosive = 1; - move16(); - } - } - - IF( flag_plosive ) - { - /* plosive detected -> set the mixing factor to 0 */ - *vf_ind = 0; - move16(); - mix_factor = 0; - move16(); - } - ELSE - { - /* normalize gain */ - // g = g2 / ( g1 + g2 ); - tmp1_e = BASOP_Util_Add_MantExp( g1, g1_e, g2, g2_e, &tmp ); - IF( tmp == 0 ) - { - tmp = 1; - move16(); - tmp1_e = 15; - move16(); - } - g = BASOP_Util_Divide1616_Scale( g2, tmp, &tmp_e ); - g_e = sub( add( tmp_e, g2_e ), tmp1_e ); - - /* quantization of the mixing factor */ - cbsize = 1 << NUM_BITS_SHB_VF; - move16(); - // delta = 1.0f / ( cbsize - 1 ); - delta = 2341; /* Q14 */ - move16(); - // if ( g > 1.0f ) - IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), ONE_IN_Q31, 0 ) > 0 ) - { - // g = 1.0f; - g = MAX16B; /* Q15 */ - move16(); - g_e = 0; - move16(); - } - // else if ( g < shl( delta, ( 15 - g_e ) - 14 ) ) - ELSE IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), delta, 17 ) < 0 ) - { - /* prevent low gains to be quantized to 0 as this is reserved for plosives */ - // g = delta; - g = shl( delta, 1 ); /* Q15 */ - g_e = 0; - move16(); - } - - g = shl_sat( g, g_e ); /* Q15 */ - - *vf_ind = usquant_fx( g, &mix_factor, 0, delta, cbsize ); - move16(); - } - } - ELSE -#else - UNUSED_PARAM( Env_error_part ); - UNUSED_PARAM( Env_error ); - UNUSED_PARAM( EnvSHBres_4k ); - UNUSED_PARAM( c5_part ); - UNUSED_PARAM( c1 ); - UNUSED_PARAM( den ); - UNUSED_PARAM( c3_part ); - UNUSED_PARAM( c0 ); - UNUSED_PARAM( delta ); - UNUSED_PARAM( c3 ); - UNUSED_PARAM( c2_part ); - UNUSED_PARAM( c1_part ); - UNUSED_PARAM( EnvWhiteExc16k ); - UNUSED_PARAM( g2 ); - UNUSED_PARAM( c5 ); - UNUSED_PARAM( c4_part ); - UNUSED_PARAM( EnvWhiteExc16k_4k ); - UNUSED_PARAM( c2 ); - UNUSED_PARAM( g ); - UNUSED_PARAM( cbsize ); - UNUSED_PARAM( g1 ); - UNUSED_PARAM( EnvExc16kWhtnd ); - UNUSED_PARAM( c0_part ); - UNUSED_PARAM( EnvExc16kWhtnd_4k ); - UNUSED_PARAM( c4 ); -#endif - { - Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, - Q_White_exc16k, pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); - tmp = voiceFacEst[0]; - tmp2 = MAX_16; - move16(); - move16(); - if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) - { - tmp2 = 26214 /*0.8f Q15*/; - move16(); - } - } - } - ELSE /* decoder side */ - { - test(); - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - IF( *vf_ind == 0 ) - { - // mix_factor = 0.0f; - mix_factor = 0; - move16(); - flag_plosive = 1; - move16(); - } - ELSE - { - // mix_factor = usdequant(*vf_ind, 0.0f, 1.0f / ((1 << NUM_BITS_SHB_VF) - 1)); - mix_factor = usdequant_fx( *vf_ind, 0, 2341 ); - } - } - ELSE - { - /* *vf_ind is an integer scale by 0.125f*/ - tmp = shl( *vf_ind, ( 15 - 3 ) ); - tmp2 = MAX_16; - move16(); - IF( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) - { - tmp2 = 26214 /*0.8f Q15*/; - move16(); - } - } - } - - test(); - IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) - { - voice_factors[0] = mult_r( voice_factors[0], tmp2 ); - move16(); - voice_factors[1] = mult_r( voice_factors[1], tmp2 ); - move16(); - voice_factors[2] = mult_r( voice_factors[2], tmp2 ); - move16(); - voice_factors[3] = mult_r( voice_factors[3], tmp2 ); - move16(); - voice_factors[4] = mult_r( voice_factors[4], tmp2 ); - move16(); - } - } - - test(); - IF( GE_16( element_mode, IVAS_CPE_DFT ) && nlExc16k != NULL ) - { - /* save buffers for IC-BWE */ - // mvr2r(exc16kWhtnd, nlExc16k, L_FRAME16k); - Copy( exc16kWhtnd, nlExc16k, L_FRAME16k ); // Q_bwe_exc - *nlExc16k_e = sub( 15, *Q_bwe_exc ); - move16(); - - // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), mixExc16k, L_FRAME16k); - L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); - Word16 temp_fac = round_fx_sat( L_tmp ); // Q15-exp - - FOR( k = 0; k < L_FRAME16k; k++ ) - { - mixExc16k[k] = mult_r( White_exc16k[k], temp_fac ); // Q_White_exc16k+15-exp-15 = Q_White_exc16k-exp - move16(); - } - *mixExc16k_e = sub( 15, sub( Q_White_exc16k, exp ) ); - move16(); - } - - Copy( White_exc16k, White_exc16k_FB, L_FRAME16k ); // Q_White_exc16k - prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; - *Q_bwe_exc_fb = Q_White_exc16k; - move16(); - move16(); - - Word16 tbe_demph_fx = shl_sat( *tbe_demph, sub( Q_White_exc16k, *Q_bwe_exc ) ); // Q_White_exc16k - - deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, &tbe_demph_fx ); - /* i/o: White_exc16k (Q_White_exc16k) */ - /* i: tbe_demph_fx (Q_White_exc16k) */ - *tbe_demph = shr_sat( tbe_demph_fx, sub( Q_White_exc16k, *Q_bwe_exc ) ); - move16(); - - test(); - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - IF( !flag_plosive ) /* use only LB excitation in case of plosives */ - { - /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */ - /* old_scale = (float) sqrt( *prev_pow_exc16kWhtnd / pow1 ); */ - old_scale = round_fx_sat( root_a_over_b_fx( *prev_pow_exc16kWhtnd, 0, pow1, Q_pow1, &exp ) ); // exp - old_scale = shl( old_scale, s_min( 0, exp ) ); // limit Q factor to 15 - exp = s_max( 0, exp ); - - // new_scale = 1.0f; - new_scale = shr( 32767, exp ); // exp - - // step_scale = (new_scale - old_scale) / (L_FRAME16k / 2); - step_scale = mult_r( sub( new_scale, old_scale ), 205 ); // exp - scale = old_scale; // exp - move16(); - - /* interpolate between the old and the new value of the mixing factor */ - old_fact = *prev_mix_factor; // Q15 - new_fact = mix_factor; // Q15 - move16(); - move16(); - - // step = (new_fact - old_fact) / (L_FRAME16k / 2); - step = mult_r( sub( new_fact, old_fact ), 205 ); // Q15 - fact = old_fact; // Q15 - move16(); - - shift = add( exp, sub( *Q_bwe_exc, Q_White_exc16k ) ); - - /* mixing of LB and gaussian excitation in the first half of the frame */ - FOR( k = 0; k < L_FRAME16k / 2; k++ ) - { - /* exc16kWhtnd[k] = (float)fact * (White_exc16k[k] * scale) + (float)(1 - fact) * exc16kWhtnd[k]; */ - L_tmp = L_shl_sat( L_mult( fact, mult_r( White_exc16k[k], scale ) ), shift ); // Q_bwe_exc+16 - exc16kWhtnd[k] = mac_r_sat( L_tmp, sub( 32767, fact ), exc16kWhtnd[k] ); // Q_bwe_exc - move16(); - - fact = add_sat( fact, step ); // Q15 - scale = add_sat( scale, step_scale ); // exp - } - - shift = sub( *Q_bwe_exc, Q_White_exc16k ); - /* mixing of LB and gaussian excitation in the second half of the frame */ - FOR( ; k < L_FRAME16k; k++ ) - { - // exc16kWhtnd[k] = (float)new_fact * White_exc16k[k] + (float)(1 - new_fact) * exc16kWhtnd[k]; - L_tmp = L_shl_sat( L_mult( new_fact, White_exc16k[k] ), shift ); // Q_bwe_exc+16 - exc16kWhtnd[k] = mac_r( L_tmp, sub( 32767, new_fact ), exc16kWhtnd[k] ); // Q_bwe_exc - move16(); - } - } - // preemph(exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph); - PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); // Q_bwe_exc - } - ELSE - { - test(); - IF( EQ_16( coder_type, UNVOICED ) || EQ_16( MSFlag, 1 ) ) - { - scale = 0; - move16(); - - test(); - IF( pow1 != 0 && pow22 != 0 ) - { - L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); - scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ - } - - FOR( k = 0; k < L_FRAME16k; k++ ) - { - exc16kWhtnd[k] = mult_r_sat( White_exc16k[k], scale ); // Q_White_exc16k - move16(); - } - - Scale_sig( exc16kWhtnd, L_FRAME16k, sub( *Q_bwe_exc, Q_White_exc16k ) ); // Q_bwe_exc - - PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); // Q_bwe_exc - /* i/o: exc16kWhtnd (Q_bwe_exc) */ - /* i/o: tbe_premph (Q_bwe_exc) */ - } - ELSE - { - Word16 nbSubFr, lSubFr; - Word16 tempQ15; - Word32 tempQ31; - nbSubFr = NB_SUBFR16k; - lSubFr = ( L_FRAME16k / NB_SUBFR16k ); - move16(); - move16(); - IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) - { - nbSubFr = NB_SUBFR; - move16(); - lSubFr = ( L_FRAME16k / NB_SUBFR ); - move16(); - } - k = 0; - move16(); - FOR( i = 0; i < nbSubFr; i++ ) - { - test(); - IF( EQ_16( coder_type, VOICED ) && ( LT_32( extl_brate, SWB_TBE_2k8 ) ) ) - { - exp = 0; - move16(); - tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ - temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - exp = 0; - move16(); - tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ - temp = sub( MAX_16, temp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } - ELSE - { - /* Adjust noise mixing for formant sharpening filter */ - tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); - /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ - vf_tmp = sub( MAX_16, tempQ15 ); - vf_tmp = mult( voice_factors[i], vf_tmp ); - - exp = 0; - move16(); - tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ - temp = sub( MAX_16, vf_tmp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } - - shift = sub( *Q_bwe_exc, Q_White_exc16k ); - FOR( j = 0; j < lSubFr; j++ ) - { - /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ - L_tmp = L_shl_sat( L_mult( temp2, White_exc16k[k + j] ), shift ); // 16+(Q_bwe_exc) - exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); // Q_bwe_exc - move16(); - } - k = add( k, lSubFr ); - - /* estimate the pre-emph factor */ - tempQ15 = sub( MAX_16, voice_factors[i] ); - exp = 0; - move16(); - temp = Sqrt16( tempQ15, &exp ); - temp = shl( temp, sub( exp, 1 ) ); - - temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ - temp = div_s( temp, temp2 ); /* Q15 */ - temp = mult_r( PREEMPH_FAC, temp ); - - PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); // Q_bwe_exc - /* exc16kWhtnd: Q_bwe_exc; - tbe_premph: Q_bwe_exc*/ - } - } - } - - IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) - { - syn_filt_fx( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: excSHB in Q_bwe_exc */ - } - ELSE - { - set16_fx( zero_mem, 0, LPC_SHB_ORDER ); - - syn_filt_fx( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[0] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - syn_filt_fx( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[1] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - syn_filt_fx( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[2] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - syn_filt_fx( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[3] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - tmp2 = s_min( s_min( syn_shb_ener_sf_q[0], syn_shb_ener_sf_q[1] ), s_min( syn_shb_ener_sf_q[3], syn_shb_ener_sf_q[2] ) ); - syn_shb_ener_sf[0] = L_shl( syn_shb_ener_sf[0], sub( tmp2, syn_shb_ener_sf_q[0] ) ); - move32(); - syn_shb_ener_sf[1] = L_shl( syn_shb_ener_sf[1], sub( tmp2, syn_shb_ener_sf_q[1] ) ); - move32(); - syn_shb_ener_sf[2] = L_shl( syn_shb_ener_sf[2], sub( tmp2, syn_shb_ener_sf_q[2] ) ); - move32(); - syn_shb_ener_sf[3] = L_shl( syn_shb_ener_sf[3], sub( tmp2, syn_shb_ener_sf_q[3] ) ); - move32(); - - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: tempSHB in Q_bwe_exc */ - /* o: syn_shb_ener_sf in tmp2 */ - IF( LE_32( bitrate, MAX_ACELP_BRATE ) ) - { - L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); - - /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ - tmp = shl( Q_shb, 1 ); - L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ - - *Q_bwe_exc = sub( *Q_bwe_exc, exp ); - move16(); /* compensate for the exp shift */ - tmp2 = add( prev_Q_bwe_syn, n_mem2 ); - IF( GT_16( *Q_bwe_exc, tmp2 ) ) - { - L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); - *Q_bwe_exc = tmp2; - move16(); - } - FOR( i = 0; i < L_FRAME16k; i++ ) - { - L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ - exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ - move16(); - } - } - /* i: L_tmp2 in (Q31-exp) */ - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ - - /* Rescale the past memories: LP synth and SHB look ahead buffers */ - tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); - FOR( i = 0; i < LPC_SHB_ORDER; i++ ) - { - state_lpc_syn[i] = shl_sat( state_lpc_syn[i], tmp ); - move16(); - } - FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) - { - excSHB[i] = shl_sat( excSHB[i], tmp ); - move16(); - } - /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ - - syn_filt_fx( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); - syn_filt_fx( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); - syn_filt_fx( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); - syn_filt_fx( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in (Q_bwe_exc) */ - /* o: excSHB in (Q_bwe_exc) */ - } - - IF( EQ_16( extl, FB_TBE ) ) - { - tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); - Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); - Scale_sig( fb_tbe_demph, 1, tmp ); - syn_filt_fx( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); - /* i: White_exc16k_FB in (Q_bwe_exc_fb) */ - /* o: White_exc16k_FB_temp in (Q_bwe_exc_fb) */ - - FOR( i = 0; i < 10; i++ ) - { - FOR( j = 0; j < 32; ++j ) - { - White_exc16k_FB_temp[i * 32 + j] = mult_r_sat( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); - move16(); - } - } - - *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); - move16(); /**Q_bwe_exc_fb +35 +1 -16*/ - flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); - - deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); - } - ELSE - { - set16_fx( White_exc16k_FB, 0, L_FRAME16k ); - } - - *prev_pow_exc16kWhtnd = L_shr_sat( pow1, Q_pow1 ); // power goes above MAX_32 - *prev_mix_factor = mix_factor; - move32(); - move16(); - - return; -} - -void GenShapedSHBExcitation_ivas_dec_fx( - Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/ - const Word16 *lpc_shb, /* i : lpc coefficients Q12*/ - Word16 *White_exc16k_FB, /* o : white excitation for the Fullband extension Q_bwe_exc */ - Word32 *mem_csfilt, /* i/o: memory */ - Word16 *mem_genSHBexc_filt_down_shb, /* i/o: memory */ - Word16 *state_lpc_syn, /* i/o: memory */ - const Word16 coder_type, /* i : coding type */ - const Word16 *bwe_exc_extended, /* i : bwidth extended excitation */ - Word16 bwe_seed[], /* i/o: random number generator seed */ - Word16 voice_factors[], /* i : voicing factor*/ - const Word16 extl, /* i : extension layer */ - Word16 *tbe_demph, /* i/o: de-emphasis memory */ - Word16 *tbe_premph, /* i/o: pre-emphasis memory */ - Word16 *lpc_shb_sf, /* i: LP coefficients */ - const Word32 shb_ener_sf_32, /* i: input shb ener, Q31 */ - Word16 *shb_res_gshape, /* i: input res gain shape, Q14 */ - Word16 *shb_res, - Word16 *vf_ind, - const Word16 formant_fac, /* i : Formant sharpening factor [0..1] */ - Word16 fb_state_lpc_syn[], /* i/o: memory */ - Word16 *fb_tbe_demph, /* i/o: fb de-emphasis memory */ - Word16 *Q_bwe_exc, - Word16 *Q_bwe_exc_fb, - const Word16 Q_shb, - Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ - Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ - const Word32 bitrate, /* i : bitrate */ - const Word16 prev_bfi, /* i : previous frame was concealed */ - const Word16 element_mode, /* i : element mode */ - const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ - Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ - Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ - const Word32 extl_brate, /* i : extension layer bitarte */ - const Word16 MSFlag, /* i : Multi Source flag */ - Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ - Word32 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ - Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ - Word16 *Env_error, /* o : error in SHB residual envelope modelling Q0 */ - Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling Q0 */ -) -{ - Word16 i, j, k; - Word16 wht_fil_mem[LPC_WHTN_ORDER]; - Word16 lpc_whtn[LPC_WHTN_ORDER + 1]; - Word16 R_h[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech MSB */ - Word16 R_l[LPC_WHTN_ORDER + 2]; /* Autocorrelations of windowed speech LSB */ - Word16 Q_R; - Word32 LepsP[LPC_WHTN_ORDER + 1]; - Word16 exc32k[L_FRAME32k], exc16k[L_FRAME16k]; - Word32 pow1, pow22; - Word16 scale, temp1, temp2, temp3; - Word16 Q_White_exc16k; - Word16 excTmp2[L_FRAME16k]; - Word16 *White_exc16k; - Word16 excNoisyEnv[L_FRAME16k]; - Word16 csfilt_num2[1] = { 6554 }; /*0.2 in Q15 */ - move16(); - Word16 neg_csfilt_den2[2] = { -32767, 26214 }; /* {1.0f, -0.8f} */ - move16(); - move16(); - Word16 varEnvShape; - Word16 fb_deemph_fac = 15729; /*0.48f in Q15 */ - Word16 exc16kWhtnd[L_FRAME16k]; - - Word32 L_tmp; - Word16 vf_tmp; - Word16 tmp, exp, tmp2 = 0; - move16(); - Word16 voiceFacEst[NB_SUBFR16k]; - Word16 zero_mem[LPC_SHB_ORDER]; - Word32 syn_shb_ener_sf[4]; - Word16 syn_shb_ener_sf_q[4]; - Word16 tempSHB[80]; - Word16 Q_pow1, Q_pow22; - - Word32 L_tmp2, L_tmp3, L_tmp4; - Word16 temp; - - Word16 White_exc16k_FB_temp[L_FRAME16k]; - Word32 White_exc16k_32[L_FRAME16k]; - Word16 White_exc16k_tmp[L_FRAME16k]; - Word16 Q_temp; - Word16 prev_Q_bwe_exc_fb, Q_exc16kWhtnd; - Word16 chk1; - Word32 chk2; - chk1 = 0; - chk2 = 0; - move16(); - move32(); - -#if 1 // def ADD_IVAS_TBE_CODE - Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; - Word16 cbsize; - Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; - Word32 c0, c1, c2, c3, c4, c5, den; - Word16 g1, g2, g, g1_e, g2_e, g_e, den_e, shift, tmp_e, tmp1_e; - Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; - Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; - Word16 flag_plosive; - Word16 delta; - Word32 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; - Word64 W_tmp; - - mix_factor = 0; /* Q15 */ - move16(); -#endif - set16_fx( zero_mem, 0, LPC_SHB_ORDER ); - set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); - FOR( i = 0; i < L_FRAME32k; i = i + 2 ) - { - exc32k[i] = negate( bwe_exc_extended[i] ); // Q_bwe_exc - move16(); - exc32k[i + 1] = bwe_exc_extended[i + 1]; // Q_bwe_exc - move16(); - } - - /* Decimate by 2 */ - Decimate_allpass_steep_fx( exc32k, mem_genSHBexc_filt_down_shb, 2 * L_FRAME16k, exc16k ); // Q_bwe_exc - /* i: exc32k in Q_bwe_exc */ - /* o: exc16k in Q_bwe_exc */ - - autocorr_fx( exc16k, LPC_WHTN_ORDER + 1, R_h, R_l, &Q_R, L_FRAME16k, win_flatten_fx, 0, 1 ); // Q_R - /* Ensure R[0] isn't zero when entering Levinson Durbin */ - R_l[0] = s_max( R_l[0], 1 ); - move16(); - FOR( i = 1; i <= LPC_WHTN_ORDER; i++ ) - { - L_tmp = Mpy_32( R_h[i], R_l[i], wac_h[i - 1], wac_l[i - 1] ); - L_Extract( L_tmp, &R_h[i], &R_l[i] ); // Q_R - } - E_LPC_lev_dur( R_h, R_l, lpc_whtn, LepsP, LPC_WHTN_ORDER, NULL ); - Copy_Scale_sig( lpc_whtn, lpc_whtn, LPC_WHTN_ORDER + 1, sub( norm_s( lpc_whtn[0] ), 2 ) ); // Q12 - fir_fx( exc16k, lpc_whtn, exc16kWhtnd, wht_fil_mem, L_FRAME16k, LPC_WHTN_ORDER, 0, 3 ); // Q_bwe_exc - - /* i: exc16k in Q_bwe_exc */ - /* o: exc16kWhtnd in Q_bwe_exc */ - -#if 1 // def ADD_IVAS_TBE_CODE - IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) -#else - IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif - { - temp2 = 0; - move16(); - FOR( j = 0; j < 4; j++ ) - { - temp1 = shb_res_gshape[j]; - move16(); - FOR( i = 0; i < 80; i++ ) - { - exc16kWhtnd[temp2 + i] = round_fx( L_shl( L_mult( exc16kWhtnd[temp2 + i], temp1 ), 1 ) ); // Q_bwe_exc - move16(); - /* exc16kWhtnd in Q_bwe_exc, shb_res_gshape in Q14 */ - } - temp2 = add( temp2, 80 ); - } - } - - /* Estimate pow1 associated with Low band nonlinear extended excitation */ - /* pow1=0.00001f */ - tmp = sub( shl( *Q_bwe_exc, 1 ), 31 ); - pow1 = L_shl_sat( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(Q_bwe_exc) */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - /*excTmp2[k ] = (float)(fabs(exc16kWhtnd[k]));*/ - excTmp2[k] = abs_s( exc16kWhtnd[k] ); - move16(); - chk1 = s_or( chk1, exc16kWhtnd[k] ); - - /* pow1 += exc16kWhtnd[k] * exc16kWhtnd[k]; */ - pow1 = L_mac0_sat( pow1, exc16kWhtnd[k], exc16kWhtnd[k] ); /* 2*Q_bwe_exc */ - } - Q_pow1 = shl( *Q_bwe_exc, 1 ); - - test(); -#if 1 // ADD_IVAS_TBE_CODE - IF( flag_ACELP16k == 0 ) -#else - IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) ) -#endif - { - /* varEnvShape = mean_fx(voice_factors, 4); */ - /* unroll the loop */ - L_tmp = L_mult( voice_factors[0], 8192 /*0.25 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[1], 8192 /*0.25 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[2], 8192 /*0.25 in Q15 */ ); - varEnvShape = mac_r( L_tmp, voice_factors[3], 8192 /*0.25 in Q15 */ ); /* varEnvShape in Q15 */ - } - ELSE /* 16k core */ - { - /* varEnvShape = mean_fx(voice_factors, 5); */ - /* unroll the loop */ - L_tmp = L_mult( voice_factors[0], 6554 /*0.2 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[1], 6554 /*0.2 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[2], 6554 /*0.2 in Q15 */ ); - L_tmp = L_mac( L_tmp, voice_factors[3], 6554 /*0.2 in Q15 */ ); - varEnvShape = mac_r( L_tmp, voice_factors[4], 6554 /*0.2 in Q15 */ ); /* varEnvShape in Q15 */ - } - - IF( EQ_16( extl, FB_TBE ) ) - { - /*pow(varEnvShape,3) */ - tmp = mult_r( varEnvShape, varEnvShape ); - tmp = mult_r( tmp, varEnvShape ); - - /* max_val((0.68f - (float)pow(varEnvShape, 3)), 0.48f); */ - fb_deemph_fac = sub( 22282 /*0.68f Q15*/, tmp ); - fb_deemph_fac = s_max( fb_deemph_fac, 15729 /*0.48f Q15*/ ); - } - - /*varEnvShape = 1.09875f - 0.49875f * varEnvShape; */ - varEnvShape = msu_r( 1179773824l /*0.549375f Q31*/, 8172 /*0.249375f Q15*/, varEnvShape ); - - /*varEnvShape = min( max_val(varEnvShape, 0.6f), 0.999f); */ - varEnvShape = s_max( varEnvShape, 9830 /*0.3f Q15*/ ); - varEnvShape = s_min( varEnvShape, 16368 /*0.4995f Q15*/ ); - varEnvShape = shl( varEnvShape, 1 ); - csfilt_num2[0] = sub( MAX_16, varEnvShape ); // Q15 - move16(); - neg_csfilt_den2[1] = varEnvShape; // Q15 - move16(); - - test(); - test(); - test(); -#if 1 // def ADD_IVAS_TBE_CODE - test(); - IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#else - IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#endif - { - /* pre-init smoothing filter to avoid energy drop outs */ - L_tmp = L_mult( excTmp2[0], 1638 ); - FOR( i = 1; i < L_SUBFR16k / 4; i++ ) - { - L_tmp = L_mac( L_tmp, excTmp2[i], 1638 ); /*1638 = 1/20 in Q15*/ - } - /*L_tmp = sum(excTmp2, L_SUBFR16k/4)*(1/20) where L_SUBFR16k/4 =20 */ - - /* don't apply for FB in case the FB start-frame was potentially lost - White_exc16k is very sensitive to enery mismatch between enc - dec */ - /* rather stick to the more conservative approach, to avoid potential clippings */ - test(); - IF( !( prev_bfi && EQ_16( extl, FB_TBE ) ) ) - { - /* use weak smoothing for 1st frame after switching to make filter recover more quickly */ - varEnvShape = 26214 /*0.8f Q15*/; - move16(); - csfilt_num2[0] = sub( MAX_16, varEnvShape ); - move16(); - neg_csfilt_den2[1] = varEnvShape; - move16(); - } - - *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); - move32(); - } -#if 1 // def ADD_IVAS_TBE_CODE - IF( MSFlag > 0 ) - { - // varEnvShape = 0.995f; - varEnvShape = 32604; - move16(); - csfilt_num2[0] = 32768 - varEnvShape; - // csfilt_num2[0] = sub( 32767, varEnvShape ); - move16(); - neg_csfilt_den2[1] = varEnvShape; - move16(); - } - - White_exc16k = exc16k; - move16(); - Word16 Q_excTmp2 = add( getScaleFactor16( excTmp2, L_FRAME16k ), *Q_bwe_exc ); - IF( *mem_csfilt ) - { - Q_excTmp2 = s_min( Q_excTmp2, sub( add( norm_l( *mem_csfilt ), *Q_bwe_exc ), 1 ) ); - } - test(); - /* Track the low band envelope */ - IF( EQ_16( element_mode, IVAS_CPE_TD ) || EQ_16( element_mode, IVAS_CPE_DFT ) ) - { - test(); - IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) - { - mem_csfilt_left = 0; - mem_csfilt_right = 0; - move16(); - move16(); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - // excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k]; - excNoisyEnvLeft[k] = add( mem_csfilt_left, mult_r( csfilt_num2[0], shl( excTmp2[k], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 - move16(); - // mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k]; - mem_csfilt_left = mult_r( neg_csfilt_den2[1], excNoisyEnvLeft[k] ); // Q_excTmp2 - // excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1]; - excNoisyEnvRight[L_FRAME16k - k - 1] = add( mem_csfilt_right, mult_r( csfilt_num2[0], shl( excTmp2[L_FRAME16k - k - 1], sub( Q_excTmp2, *Q_bwe_exc ) ) ) ); // Q_excTmp2 - move16(); - // mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1]; - mem_csfilt_right = mult_r( neg_csfilt_den2[1], excNoisyEnvRight[L_FRAME16k - k - 1] ); // Q_excTmp2 - } - - alpha = 0; - move16(); - // step = 1.0f / L_FRAME16k; - step = 102; // Q15 - move16(); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - // excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + (1 - alpha) * excNoisyEnvRight[k]; - excNoisyEnv[k] = add( mult_r( alpha, excNoisyEnvLeft[k] ), mult_r( sub( 32767, alpha ), excNoisyEnvRight[k] ) ); // Q_excTmp2 - move16(); - alpha = add( alpha, step ); - } - } - } - ELSE -#endif - { - /* Track the low band envelope */ - L_tmp = L_shl( *mem_csfilt, sub( Q_excTmp2, *Q_bwe_exc ) ); - move32(); - FOR( i = 0; i < L_FRAME16k; i++ ) - { - excNoisyEnv[i] = mac_r( L_tmp, csfilt_num2[0], shl( excTmp2[i], sub( Q_excTmp2, *Q_bwe_exc ) ) ); - move16(); - /* Work-around to avoid 0s for very small value*/ - test(); - test(); - test(); - test(); - if ( excNoisyEnv[i] == 0 && ( L_tmp != 0 || ( csfilt_num2[0] != 0 && excTmp2[i] != 0 ) ) ) - { - excNoisyEnv[i] = 1; - move16(); - } - /* excNoisyEnv : Q_excTmp2, - *mem_csfilt: Q_excTmp2+16, excTmp2: Q_excTmp2, csfilt_num2[0] Q_excTmp2 */ - L_tmp = L_mult( excNoisyEnv[i], neg_csfilt_den2[1] ); /* Q_excTmp2 + 16 */ - } - *mem_csfilt = L_shr( L_tmp, sub( Q_excTmp2, *Q_bwe_exc ) ); - move32(); - } -#if 1 // def ADD_IVAS_TBE_CODE - test(); - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - /* generate gaussian (white) excitation */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k[k] = own_random( &bwe_seed[0] ); - move16(); - } - - /* normalize the amplitude of the gaussian excitation to that of the LB exc. */ - Word32 pow22_inv = POW_EXC16k_WHTND_FX_INV_SQRT_IN_Q49; - move32(); - move32(); - pow22 = POW_EXC16k_WHTND_FX; - Q_pow22 = -6; - move16(); - // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), White_exc16k, L_FRAME16k); - Word16 pow1_exp = sub( Q31, Q_pow1 ); - Word32 temp_pow = Sqrt32( pow1, &pow1_exp ); - temp_pow = Mpy_32_32( temp_pow, pow22_inv ); - /*Word16 out_exp; - Word32 temp_pow1 = root_a_over_b_fx(pow1, Q_pow1, pow22, Q_pow22, &out_exp); - temp_pow1 = L_shl(temp_pow1, out_exp);*/ - // v_multc_fixed_16_16(White_exc16k, round_fx(temp_pow), White_exc16k, L_FRAME16k); - L_tmp = 0; - move32(); - shift = getScaleFactor16( White_exc16k, L_FRAME16k ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k_32[k] = Mpy_32_16_1( temp_pow, White_exc16k[k] ); - move32(); - White_exc16k[k] = round_fx( L_shl( White_exc16k_32[k], shift ) ); // Q_White_exc16k - move16(); - L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); - } - Q_White_exc16k = add( shift, sub( 49 - 31, pow1_exp ) ); - Q_temp = norm_l( L_tmp ); - IF( L_tmp == 0 ) - { - Q_temp = 31; - move16(); - } - } - ELSE -#endif - { - /* create a random excitation - Reuse exc16k memory */ - White_exc16k = exc16k; - move16(); - create_random_vector_fx( White_exc16k, L_FRAME, bwe_seed ); // Q5 - create_random_vector_fx( White_exc16k + L_FRAME, L_FRAME16k - L_FRAME, bwe_seed ); // Q5 - - L_tmp = L_deposit_l( 0 ); - tmp = add( *Q_bwe_exc, 1 ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - L_tmp4 = L_mult( excNoisyEnv[k], White_exc16k[k] ); /* (Q_excTmp2) +5 +1*/ - White_exc16k_32[k] = L_tmp4; /* (Q_excTmp2) +5 +1*/ - move32(); - L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) ); - } - Q_temp = norm_l( L_tmp ); - IF( L_tmp == 0 ) - { - Q_temp = 31; - move16(); - } - /*Copy_Scale_sig( White_exc16k, White_exc16k, L_FRAME16k, sub(NOISE_QFAC, 5) );)*/ - /* White_exc16k in Q6 */ - - /* calculate pow22 */ - /* pow22=0.00001f */ - tmp = sub( shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ), 31 ); - Word64 sum = W_shl( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(*Q_bwe_exc-NOISE_QADJ) */ - Q_White_exc16k = getScaleFactor32( White_exc16k_32, L_FRAME16k ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - - White_exc16k[k] = extract_h( L_shl( White_exc16k_32[k], Q_White_exc16k ) ); // Q_excTmp2 + 6 + Q_White_exc16k - 16 ==> Q_excTmp2 + Q_White_exc16k - 10 - chk2 = L_or( chk2, White_exc16k_32[k] ); - /* i: excNoisyEnv in (Q_excTmp2) */ - /* i: White_exc16k in Q6 */ - /* o: White_exc16k in (Q_White_exc16k) */ - /* pow22 += White_exc16k[k] * White_exc16k[k]; */ - sum = W_mac0_16_16( sum, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_excTmp2 + Q_White_exc16k - 10)*/ - move16(); - } - Q_pow22 = W_norm( sum ); - pow22 = W_extract_h( W_shl( sum, Q_pow22 ) ); // 2*(Q_excTmp2 + Q_White_exc16k - 10)+Q_pow22-32 - Q_pow22 = sub( add( Q_pow22, shl( sub( add( Q_White_exc16k, Q_excTmp2 ), 10 ), 1 ) ), 32 ); - Q_White_exc16k = add( Q_White_exc16k, sub( Q_excTmp2, 10 ) ); - } - -#if 1 // def ADD_IVAS_TBE_CODE - flag_plosive = 0; - move16(); - test(); - test(); - test(); - IF( GE_32( extl_brate, SWB_TBE_2k8 ) || EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) -#else - IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif - { - IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ - { -#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!! - test(); - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k_tmp[k] = round_fx( L_shl( White_exc16k_32[k], *Q_bwe_exc ) ); - move16(); - } - - /* calculate TD envelopes of exc16kWhtnd and White_exc16k */ - find_td_envelope_fx( White_exc16k_tmp, L_FRAME16k, 20, NULL, EnvWhiteExc16k ); /* Q_bwe_exc */ - find_td_envelope_fx( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd ); /* Q_bwe_exc */ - - FOR( k = 0; k < L_FRAME4k; k++ ) - { - EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k]; /* Q_bwe_exc */ - move16(); - EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k]; /* Q_bwe_exc */ - move16(); - } - - /* calculate the optimal mix factor */ - c0 = c1 = c2 = c3 = c4 = c5 = 0; /* Q0 */ - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - - temp1 = add( shl( *Q_bwe_exc, 1 ), 1 ); - temp2 = add( add( Q_shb, *Q_bwe_exc ), 1 ); - temp3 = add( shl( Q_shb, 1 ), 1 ); - FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - // c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c0_part[i] = L_shr( sum2_fx( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ - move32(); - // c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c1_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ - move32(); - // c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c2_part[i] = L_shr( sum2_fx( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp1 ); /* Q0 */ - move32(); - // c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c3_part[i] = L_shr( L_negate( Dot_product( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ) ), sub( temp2, 1 ) ); /* Q0 */ - move32(); - // c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c4_part[i] = L_shr( Dot_product( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), sub( temp1, 1 ) ); /* Q0 */ - move32(); - // c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c5_part[i] = L_shr( sum2_fx( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ), temp3 ); /* Q0 */ - move32(); - - c0 = L_add( c0, c0_part[i] ); - c1 = L_add( c1, c1_part[i] ); - c2 = L_add( c2, c2_part[i] ); - c3 = L_add( c3, c3_part[i] ); - c4 = L_add( c4, c4_part[i] ); - c5 = L_add( c5, c5_part[i] ); - } - - // den = 4.0f * c0 * c2 - c4 * c4; - W_tmp = W_sub( W_shl( W_mult0_32_32( c0, c2 ), 2 ), W_mult0_32_32( c4, c4 ) ); - den_e = 63; - move16(); - shift = W_norm( W_tmp ); - den = W_extract_h( W_shl( W_tmp, shift ) ); - den_e = sub( den_e, shift ); - - IF( den == 0 ) - { - den = 1; - move32(); - den_e = 31; - move16(); - } - - // g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; - W_tmp = W_sub( W_mult0_32_32( c3, c4 ), W_shl( W_mult0_32_32( c1, c2 ), 1 ) ); - g1_e = 63; - move16(); - shift = W_norm( W_tmp ); - L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); - g1_e = sub( g1_e, shift ); - - g1 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); - g1_e = sub( add( tmp_e, g1_e ), den_e ); - - // g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; - W_tmp = W_sub( W_mult0_32_32( c1, c4 ), W_shl( W_mult0_32_32( c0, c3 ), 1 ) ); - g2_e = 63; - move16(); - shift = W_norm( W_tmp ); - L_tmp = W_extract_h( W_shl( W_tmp, shift ) ); - g2_e = sub( g2_e, shift ); - - g2 = BASOP_Util_Divide3232_Scale( L_tmp, den, &tmp_e ); - g2_e = sub( add( tmp_e, g2_e ), den_e ); - - // *Env_error = 0.0f; - *Env_error = 0; - move16(); - flag_plosive = 0; - move16(); - FOR( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - // Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i]; - L_tmp = BASOP_Util_Add_Mant32Exp( c5_part[i], 31, Mpy_32_32( L_mult( g1, g1 ), c0_part[i] ), add( shl( g1_e, 1 ), 31 ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c1_part[i], g1 ), add( 31, g1_e ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g2, g2 ), c2_part[i] ), add( shl( g2_e, 1 ), 31 ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_16_1( c3_part[i], g2 ), add( 31, g2_e ), &tmp_e ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, tmp_e, Mpy_32_32( L_mult( g1, g2 ), c4_part[i] ), add( add( g1_e, g2_e ), 31 ), &tmp_e ); - - // Env_error_part[i] = L_shr( L_tmp, 31 - tmp_e ); // Check Exponent - Env_error_part[i] = extract_h( L_shr_sat( L_tmp, sub( Q15, tmp_e ) ) ); /* Q0 */ - move16(); - - // *Env_error += Env_error_part[i]; - *Env_error = add_sat( *Env_error, Env_error_part[i] ); /* Q0 */ - move16(); - - if ( GT_16( Env_error_part[i], THR_ENV_ERROR_PLOSIVE_FX ) ) // Check which Q - { - /* envelope error is too high -> likely a plosive */ - flag_plosive = 1; - move16(); - } - } - - IF( flag_plosive ) - { - /* plosive detected -> set the mixing factor to 0 */ - *vf_ind = 0; - move16(); - mix_factor = 0; - move16(); - } - ELSE - { - /* normalize gain */ - // g = g2 / ( g1 + g2 ); - tmp1_e = BASOP_Util_Add_MantExp( g1, g1_e, g2, g2_e, &tmp ); - IF( tmp == 0 ) - { - tmp = 1; - move16(); - tmp1_e = 15; - move16(); - } - g = BASOP_Util_Divide1616_Scale( g2, tmp, &tmp_e ); - g_e = sub( add( tmp_e, g2_e ), tmp1_e ); - - /* quantization of the mixing factor */ - cbsize = 1 << NUM_BITS_SHB_VF; - move16(); - // delta = 1.0f / ( cbsize - 1 ); - delta = 2341; /* Q14 */ - move16(); - // if ( g > 1.0f ) - IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), ONE_IN_Q31, 0 ) > 0 ) - { - // g = 1.0f; - g = MAX16B; /* Q15 */ - } - // else if ( g < shl( delta, ( 15 - g_e ) - 14 ) ) - ELSE IF( BASOP_Util_Cmp_Mant32Exp( g, add( 16, g_e ), delta, 17 ) < 0 ) - { - /* prevent low gains to be quantized to 0 as this is reserved for plosives */ - // g = delta; - g = shl( delta, 1 ); /* Q15 */ - } - - *vf_ind = usquant_fx( g, &mix_factor, 0, delta, cbsize ); - move16(); - } - } - ELSE -#else - UNUSED_PARAM( Env_error_part ); - UNUSED_PARAM( Env_error ); - UNUSED_PARAM( EnvSHBres_4k ); - UNUSED_PARAM( c5_part ); - UNUSED_PARAM( c1 ); - UNUSED_PARAM( den ); - UNUSED_PARAM( c3_part ); - UNUSED_PARAM( c0 ); - UNUSED_PARAM( delta ); - UNUSED_PARAM( c3 ); - UNUSED_PARAM( c2_part ); - UNUSED_PARAM( c1_part ); - UNUSED_PARAM( EnvWhiteExc16k ); - UNUSED_PARAM( g2 ); - UNUSED_PARAM( c5 ); - UNUSED_PARAM( c4_part ); - UNUSED_PARAM( EnvWhiteExc16k_4k ); - UNUSED_PARAM( c2 ); - UNUSED_PARAM( g ); - UNUSED_PARAM( cbsize ); - UNUSED_PARAM( g1 ); - UNUSED_PARAM( EnvExc16kWhtnd ); - UNUSED_PARAM( c0_part ); - UNUSED_PARAM( EnvExc16kWhtnd_4k ); - UNUSED_PARAM( c4 ); -#endif - { - Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, - ( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); - tmp = voiceFacEst[0]; - tmp2 = MAX_16; - move16(); - move16(); - if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) - { - tmp2 = 26214 /*0.8f Q15*/; - move16(); - } - } - } - ELSE /* decoder side */ - { - test(); -#if 1 // def ADD_IVAS_TBE_CODE - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - IF( *vf_ind == 0 ) - { - // mix_factor = 0.0f; - mix_factor = 0; - move16(); - flag_plosive = 1; - move16(); - } - ELSE - { - // mix_factor = usdequant(*vf_ind, 0.0f, 1.0f / ((1 << NUM_BITS_SHB_VF) - 1)); - mix_factor = usdequant_fx( *vf_ind, 0, 2341 ); - } - } - ELSE -#endif - { - /* *vf_ind is an integer scale by 0.125f*/ - tmp = shl( *vf_ind, ( 15 - 3 ) ); - tmp2 = MAX_16; - move16(); - IF( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) - { - tmp2 = 26214 /*0.8f Q15*/; - move16(); - } - } - } -#if 1 // def ADD_IVAS_TBE_CODE - test(); - IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) -#endif - { - voice_factors[0] = mult_r( voice_factors[0], tmp2 ); - move16(); - voice_factors[1] = mult_r( voice_factors[1], tmp2 ); - move16(); - voice_factors[2] = mult_r( voice_factors[2], tmp2 ); - move16(); - voice_factors[3] = mult_r( voice_factors[3], tmp2 ); - move16(); - voice_factors[4] = mult_r( voice_factors[4], tmp2 ); - move16(); - } - } - test(); - IF( GE_16( element_mode, IVAS_CPE_DFT ) && nlExc16k != NULL ) - { - /* save buffers for IC-BWE */ - // mvr2r(exc16kWhtnd, nlExc16k, L_FRAME16k); - Copy( exc16kWhtnd, nlExc16k, L_FRAME16k ); - // v_multc(White_exc16k, (float)sqrt(pow1 / pow22), mixExc16k, L_FRAME16k); - /*Word16 temp_fac = divide3232(L_shr(pow1, Q_pow1), pow22); - Word16 temp_fac_exp = 0; - temp_fac = Sqrt16(temp_fac, &temp_fac_exp);*/ - L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); - Word16 temp_fac = round_fx_sat( L_shl_sat( L_tmp, exp ) ); // Q15 - shift = sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ); - // v_multc_fixed_16_16(White_exc16k,shr(temp_fac, temp_fac_exp) , mixExc16k, L_FRAME16k); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - mixExc16k[k] = mult_r( shl_sat( White_exc16k[k], shift ), temp_fac ); - move16(); - } - } - - tmp = sub( Q_temp, 3 ); - FOR( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k_FB[k] = White_exc16k[k]; /* Q_White_exc16k */ - } - prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; - move16(); - *Q_bwe_exc_fb = Q_White_exc16k; - move16(); - *tbe_demph = shl_sat( *tbe_demph, sub( Q_White_exc16k, sub( *Q_bwe_exc, NOISE_QADJ ) ) ); - deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph ); - *tbe_demph = shl_sat( *tbe_demph, sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ) ); - - Q_exc16kWhtnd = getScaleFactor16( exc16kWhtnd, L_FRAME16k ); - Q_exc16kWhtnd = add( Q_exc16kWhtnd, *Q_bwe_exc ); - - shift = getScaleFactor16( White_exc16k, L_FRAME16k ); - - shift = s_min( Q_exc16kWhtnd, add( shift, Q_White_exc16k ) ); - scale_sig( exc16kWhtnd, L_FRAME16k, sub( shift, *Q_bwe_exc ) ); - scale_sig( White_exc16k, L_FRAME16k, sub( shift, Q_White_exc16k ) ); - - Q_exc16kWhtnd = Q_White_exc16k = shift; - move16(); - move16(); - *tbe_premph = shl_sat( *tbe_premph, sub( Q_White_exc16k, sub( *Q_bwe_exc, NOISE_QADJ ) ) ); - move16(); - test(); - IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) - { - IF( !flag_plosive ) /* use only LB excitation in case of plosives */ - { - /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */ - // old_scale = (float)sqrt(*prev_pow_exc16kWhtnd / pow1); - // old_scale = divide3232(*prev_pow_exc16kWhtnd, pow1); // exp = Q15 - (Q_pow1) - // Word16 old_scale_exp = Q15 - (Q_pow1); - // old_scale = Sqrt16(old_scale, &old_scale_exp); - // old_scale = shl(old_scale, old_scale_exp); //Q15 - L_tmp = root_a_over_b_fx( *prev_pow_exc16kWhtnd, 0, pow1, Q_pow1, &exp ); - old_scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); // Q15 - // new_scale = 1.0f; - new_scale = 32767; - move16(); - // step_scale = (new_scale - old_scale) / (L_FRAME16k / 2); - step_scale = mult_r( sub( new_scale, old_scale ), 205 ); - scale = old_scale; - move16(); - /* interpolate between the old and the new value of the mixing factor */ - old_fact = *prev_mix_factor; - move16(); - new_fact = mix_factor; - move16(); - // step = (new_fact - old_fact) / (L_FRAME16k / 2); - step = mult_r( sub( new_fact, old_fact ), 205 ); - fact = old_fact; - move16(); - /* mixing of LB and gaussian excitation in the first half of the frame */ - FOR( k = 0; k < L_FRAME16k / 2; k++ ) - { - exc16kWhtnd[k] = mac_r( L_mult( fact, mult_r( White_exc16k[k], scale ) ), - sub( 32767, fact ), exc16kWhtnd[k] ); // Q_exc16kWhtnd - move16(); - fact = add_sat( fact, step ); - scale = add_sat( scale, step_scale ); - } - - /* mixing of LB and gaussian excitation in the second half of the frame */ - FOR( ; k < L_FRAME16k; k++ ) - { - exc16kWhtnd[k] = mac_r( L_mult( new_fact, White_exc16k[k] ), - sub( 32767, new_fact ), exc16kWhtnd[k] ); // Q_exc16kWhtnd - move16(); - } - } - // preemph(exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph); - PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); - } - ELSE - { - test(); - IF( EQ_16( coder_type, UNVOICED ) || EQ_16( MSFlag, 1 ) ) - { - L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); - test(); - if ( chk1 == 0 && chk2 == 0 ) - { - L_tmp = 0; - move32(); - } - scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - exc16kWhtnd[k] = mult_r_sat( White_exc16k[k], scale ); - move16(); - } - PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); - /* i/o: exc16kWhtnd (Q_exc16kWhtnd) */ - /* i/o: tbe_premph (Q_exc16kWhtnd) */ - } - ELSE - { - Word16 nbSubFr, lSubFr; - Word16 tempQ15; - Word32 tempQ31; - nbSubFr = NB_SUBFR16k; - lSubFr = ( L_FRAME16k / NB_SUBFR16k ); - move16(); - move16(); - IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) - { - nbSubFr = NB_SUBFR; - move16(); - lSubFr = ( L_FRAME16k / NB_SUBFR ); - move16(); - } - k = 0; - move16(); - FOR( i = 0; i < nbSubFr; i++ ) - { - test(); - IF( EQ_16( coder_type, VOICED ) && ( LT_32( extl_brate, SWB_TBE_2k8 ) ) ) - { - exp = 0; - move16(); - tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ - temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - exp = 0; - move16(); - tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ - temp = sub( MAX_16, temp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } - ELSE - { - /* Adjust noise mixing for formant sharpening filter */ - tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); - /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ - vf_tmp = sub( MAX_16, tempQ15 ); - vf_tmp = mult( voice_factors[i], vf_tmp ); - - exp = 0; - move16(); - tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ - temp = sub( MAX_16, vf_tmp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } - - FOR( j = 0; j < lSubFr; j++ ) - { - /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ - L_tmp = L_mult( temp2, White_exc16k[k + j] ); - exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); - move16(); - /* Q_exc16kWhtnd */ - } - k = add( k, lSubFr ); - - /* estimate the pre-emph factor */ - tempQ15 = sub( MAX_16, voice_factors[i] ); - exp = 0; - move16(); - temp = Sqrt16( tempQ15, &exp ); - temp = shl( temp, sub( exp, 1 ) ); - - temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ - temp = div_s( temp, temp2 ); /* Q15 */ - temp = mult_r( PREEMPH_FAC, temp ); - PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); - /* exc16kWhtnd: Q_exc16kWhtnd; - tbe_premph: Q_exc16kWhtnd*/ - } - } - } - *tbe_premph = shl_sat( *tbe_premph, sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ) ); - move16(); - Scale_sig( White_exc16k, L_FRAME16k, sub( sub( *Q_bwe_exc, NOISE_QADJ ), Q_White_exc16k ) ); - Scale_sig( exc16kWhtnd, L_FRAME16k, sub( *Q_bwe_exc, Q_White_exc16k ) ); - - IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) - { - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: excSHB in Q_bwe_exc */ - } - ELSE - { - set16_fx( zero_mem, 0, LPC_SHB_ORDER ); - - Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[0] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[1] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[2] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); - tmp = sub( getScaleFactor16( tempSHB, 80 ), 2 ); - Scale_sig( tempSHB, 80, tmp ); - syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); - syn_shb_ener_sf_q[3] = add( shl( add( *Q_bwe_exc, tmp ), 1 ), 1 ); - move16(); - - tmp2 = s_min( s_min( syn_shb_ener_sf_q[0], syn_shb_ener_sf_q[1] ), s_min( syn_shb_ener_sf_q[3], syn_shb_ener_sf_q[2] ) ); - syn_shb_ener_sf[0] = L_shl( syn_shb_ener_sf[0], sub( tmp2, syn_shb_ener_sf_q[0] ) ); - move32(); - syn_shb_ener_sf[1] = L_shl( syn_shb_ener_sf[1], sub( tmp2, syn_shb_ener_sf_q[1] ) ); - move32(); - syn_shb_ener_sf[2] = L_shl( syn_shb_ener_sf[2], sub( tmp2, syn_shb_ener_sf_q[2] ) ); - move32(); - syn_shb_ener_sf[3] = L_shl( syn_shb_ener_sf[3], sub( tmp2, syn_shb_ener_sf_q[3] ) ); - move32(); - - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: tempSHB in Q_bwe_exc */ - /* o: syn_shb_ener_sf in tmp2 */ - IF( LE_32( bitrate, MAX_ACELP_BRATE ) ) - { - L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); - - /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ - tmp = shl( Q_shb, 1 ); - L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ - - *Q_bwe_exc = sub( *Q_bwe_exc, exp ); - move16(); /* compensate for the exp shift */ - tmp2 = add( prev_Q_bwe_syn, n_mem2 ); - IF( GT_16( *Q_bwe_exc, tmp2 ) ) - { - L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); - *Q_bwe_exc = tmp2; - move16(); - } - FOR( i = 0; i < L_FRAME16k; i++ ) - { - L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ - exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ - move16(); - } - } - /* i: L_tmp2 in (Q31-exp) */ - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ - - /* Rescale the past memories: LP synth and SHB look ahead buffers */ - tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); - FOR( i = 0; i < LPC_SHB_ORDER; i++ ) - { - state_lpc_syn[i] = shl_sat( state_lpc_syn[i], tmp ); - move16(); - } - FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) - { - excSHB[i] = shl_sat( excSHB[i], tmp ); - move16(); - } - /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ - - Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in (Q_bwe_exc) */ - /* o: excSHB in (Q_bwe_exc) */ - } - - IF( EQ_16( extl, FB_TBE ) ) - { - tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); - Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); - Scale_sig( fb_tbe_demph, 1, tmp ); - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); - /* i: White_exc16k_FB in (14-n2) */ - /* o: White_exc16k_FB_temp in (14-n2) */ - - FOR( i = 0; i < 10; i++ ) - { - FOR( j = 0; j < 32; ++j ) - { - White_exc16k_FB_temp[i * 32 + j] = mult_r_sat( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); - move16(); - } - } - - *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); - move16(); /**Q_bwe_exc_fb +35 +1 -16*/ - flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); - - deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); - } - ELSE - { - set16_fx( White_exc16k_FB, 0, L_FRAME16k ); - } - -#if 1 // def ADD_IVAS_TBE_CODE - *prev_pow_exc16kWhtnd = L_shr_sat( pow1, Q_pow1 ); // power goes above MAX_32 - *prev_mix_factor = mix_factor; -#endif - return; -} - -/*====================================================================================*/ -/* FUNCTION : void GenSHBSynth_fx() */ -/*------------------------------------------------------------------------------------*/ -/* PURPOSE :Generate 32 KHz sampled highband component from synthesized highband*/ -/*------------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS */ -/* _(Word16*)input_synspeech :input synthesized speech */ -/* _(Word16) L_frame :ACELP frame length */ -/*------------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _(Word16*)shb_syn_speech_32k : output highband component */ -/*------------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _(Word16[]) allpass_mem : memory */ -/* _(Word32[]) Hilbert_Mem : memory */ -/*------------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*------------------------------------------------------------------------------------*/ - -void GenSHBSynth_fx( - const Word16 *input_synspeech, /* i : input synthesized speech */ - Word16 *shb_syn_speech_32k, /* o : output highband component */ - Word32 Hilbert_Mem[], /* i/o: memory */ - Word16 allpass_mem[], /* i/o: memory */ - const Word16 L_frame, /* i : ACELP frame length */ - Word16 *syn_dm_phase ) -{ - Word16 i, speech_buf_32k[L_FRAME32k]; - Word16 maxm, nor, nor32, shift; - Word16 input_synspeech_temp[L_FRAME16k]; - Word32 maxm32; - - - maxm = 0; - move16(); - maxm32 = L_deposit_l( 0 ); - FOR( i = 0; i < L_FRAME16k; i++ ) - maxm = s_max( maxm, abs_s( input_synspeech[i] ) ); - FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) - maxm = s_max( maxm, abs_s( allpass_mem[i] ) ); - FOR( i = 0; i < HILBERT_MEM_SIZE; i++ ) - maxm32 = L_max( maxm32, L_abs( Hilbert_Mem[i] ) ); - nor = sub( norm_s( maxm ), 3 ); - nor32 = sub( norm_l( maxm32 ), 3 ); - if ( maxm == 0 ) - { - nor = 15; - move16(); - } - if ( maxm32 == 0 ) - { - nor32 = 31; - move16(); - } - shift = s_min( nor, nor32 ); - - Copy_Scale_sig( input_synspeech, input_synspeech_temp, L_FRAME16k, shift ); - Scale_sig( allpass_mem, 2 * ALLPASSSECTIONS_STEEP, shift ); - Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, shift ); - Interpolate_allpass_steep_fx( input_synspeech_temp, allpass_mem, L_FRAME16k, speech_buf_32k ); - /*modify_Fs_fx( input_synspeech, L_FRAME16k, 16000, speech_buf_32k, 32000, allpass_mem, 0);*/ - IF( EQ_16( L_frame, L_FRAME ) ) - { - /* 12.8 k core flipping and downmixing */ - flip_and_downmix_generic_fx( speech_buf_32k, shb_syn_speech_32k, L_FRAME32k, - Hilbert_Mem, - Hilbert_Mem + HILBERT_ORDER1, - Hilbert_Mem + ( HILBERT_ORDER1 + 2 * HILBERT_ORDER2 ), - syn_dm_phase ); - } - ELSE - { - /* 16 k core flipping and no downmixing */ - FOR( i = 0; i < L_FRAME32k; i = i + 2 ) - { - shb_syn_speech_32k[i] = negate( speech_buf_32k[i] ); - move16(); - shb_syn_speech_32k[i + 1] = speech_buf_32k[i + 1]; - move16(); - } - } - - Scale_sig( shb_syn_speech_32k, L_FRAME32k, negate( shift ) ); - Scale_sig( allpass_mem, 2 * ALLPASSSECTIONS_STEEP, negate( shift ) ); - Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, negate( shift ) ); - - return; -} - - -/* IVAS 32-bit variant */ -void GenSHBSynth_fx32( - const Word32 *input_synspeech, /* i : input synthesized speech Qx*/ - Word32 *shb_syn_speech_32k, /* o : output highband component Qx*/ - Word32 Hilbert_Mem[], /* i/o: memory Qx*/ - Word32 state_lsyn_filt_shb_local[], /* i/o: memory Qx*/ - const Word16 L_frame, /* i : ACELP frame length */ - Word16 *syn_dm_phase ) -{ - Word32 speech_buf_32k[L_FRAME32k]; - Word16 i; - - Word16 shift = 0; - Word32 maxm32, input_synspeech_temp[L_FRAME16k]; - move16(); - - /* find the maximum value and derive the shift to improve precision of the Hilber filter */ - maxm32 = L_deposit_l( 0 ); - FOR( i = 0; i < L_FRAME16k; i++ ) - { - maxm32 = L_max( maxm32, L_abs( input_synspeech[i] ) ); - } - - FOR( i = 0; i < 2 * ALLPASSSECTIONS_STEEP; i++ ) - { - maxm32 = L_max( maxm32, L_abs( state_lsyn_filt_shb_local[i] ) ); - } - - FOR( i = 0; i < HILBERT_MEM_SIZE; i++ ) - { - maxm32 = L_max( maxm32, L_abs( Hilbert_Mem[i] ) ); - } - - IF( maxm32 != 0 ) - { - shift = sub( norm_l( maxm32 ), 3 ); - - Copy_Scale_sig32( input_synspeech, input_synspeech_temp, L_FRAME16k, shift ); - Scale_sig32( state_lsyn_filt_shb_local, 2 * ALLPASSSECTIONS_STEEP, shift ); - Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, shift ); - } - ELSE - { - Copy32( input_synspeech, input_synspeech_temp, L_FRAME16k ); - } - - Interpolate_allpass_steep_fx32( input_synspeech_temp, state_lsyn_filt_shb_local, L_FRAME16k, speech_buf_32k ); - - IF( EQ_16( L_frame, L_FRAME ) ) - { - flip_and_downmix_generic_fx32( speech_buf_32k, shb_syn_speech_32k, L_FRAME32k, Hilbert_Mem, Hilbert_Mem + HILBERT_ORDER1, Hilbert_Mem + ( HILBERT_ORDER1 + 2 * HILBERT_ORDER2 ), syn_dm_phase ); - } - ELSE - { - FOR( i = 0; i < L_FRAME32k; i++ ) - { - // shb_syn_speech_32k[i] = ( ( i % 2 ) == 0 ) ? ( -speech_buf_32k[i] ) : ( speech_buf_32k[i] ); - IF( i % 2 == 0 ) - { - shb_syn_speech_32k[i] = L_negate( speech_buf_32k[i] ); // Qx - } - ELSE - { - shb_syn_speech_32k[i] = speech_buf_32k[i]; // Qx - } - move32(); - } - } - - IF( maxm32 != 0 ) - { - Scale_sig32( shb_syn_speech_32k, L_FRAME32k, negate( shift ) ); - Scale_sig32( state_lsyn_filt_shb_local, 2 * ALLPASSSECTIONS_STEEP, negate( shift ) ); - Scale_sig32( Hilbert_Mem, HILBERT_MEM_SIZE, negate( shift ) ); - } - - return; -} - - -/*==============================================================================*/ -/* FUNCTION : void ScaleShapedSHB_fx() */ -/*------------------------------------------------------------------------------*/ -/* PURPOSE : */ -/*------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _(Word16) length : SHB overlap length */ -/* _(Word16*) subgain : subframe gain Q15 */ -/* _(Word32) frame_gain : frame gain Q18 */ -/* _(Word16*) win : window Q15 */ -/* _(Word16*) subwin : subframes window Q15 */ -/* _(Word16) Q_bwe_exc : Q format */ -/*------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _(Word16) Qx : Q factor of output */ -/*------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _(Word16*) synSHB : synthesized shb signal input Q_bwe_exc / output Qx */ -/* _(Word16*) overlap : buffer for overlap-add Q_bwe_exc /output Qx */ -/*------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*------------------------------------------------------------------------------*/ -/* CALLED FROM : RX */ -/*==============================================================================*/ - -void ScaleShapedSHB_fx( - const Word16 length, /* i : SHB overlap length */ - Word16 *synSHB, /* i/o : synthesized shb signal Q(Q_bwe_exc)/Q(Qx) */ - Word16 *overlap, /* i/o : buffer for overlap-add Q(Q_bwe_exc)/Q(Qx) */ - const Word16 *subgain, /* i : subframe gain Q15 */ - const Word32 frame_gain, /* i : frame gain Q18 */ - const Word16 *win, /* i : window Q15 */ - const Word16 *subwin, /* i : subframes window Q15 */ - Word16 *Q_bwe_exc, - Word16 *Qx, /* o : newly computed Q factor for synSHB */ - Word16 n_mem3, - Word16 prev_Q_bwe_syn2 ) -{ - const Word16 *skip; - Word16 i, j, k, l_shb_lahead, l_frame, l_frame_tmp; - Word16 join_length, num_join; - Word32 mod_syn[L_FRAME16k + L_SHB_LAHEAD]; - Word16 sum_gain; - Word32 L_tmp; - Word16 tmpQ15; - Word16 Q_gFr_norm, gain_frame_Q16; - Word32 L_tmp2; - Word16 temp1, temp2; - - /* Init */ - set32_fx( mod_syn, 0, L_FRAME16k + L_SHB_LAHEAD ); - - /* apply gain for each subframe, and store noise output signal using overlap-add */ - IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) - { - /* WB Gain shape and gain frame application with overlap */ - skip = skip_bands_WB_TBE; - l_frame = L_FRAME16k / 4; - move16(); - l_shb_lahead = L_SHB_LAHEAD / 4; - move16(); - - sum_gain = 0; - move16(); - FOR( k = 0; k < length / 2; k++ ) - { - sum_gain = mult_r( subwin[2 * k + 2], subgain[0] ); /* Q15 */ - mod_syn[skip[0] + k] = L_mult( sum_gain, synSHB[skip[0] + k] ); /* Q_bwe_exc + 16 */ - move32(); - mod_syn[skip[0] + k + length / 2] = L_mult( subgain[0], synSHB[skip[0] + k + length / 2] ); /* Q_bwe_exc + 16 */ - move32(); - } - FOR( i = 1; i < NUM_SHB_SUBFR / 2; i++ ) - { - FOR( k = 0; k < length; k++ ) - { - /* one bit headroom here, otherwise messes up the gain shape application */ - /* keep it as L_mult0 */ - L_tmp = L_mult0( subwin[k + 1], subgain[i] ); /* Q30 */ - sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i - 1] ) ); /* Q14 */ - mod_syn[skip[i] + k] = L_shl( L_mult( sum_gain, synSHB[skip[i] + k] ), 1 ); /* Q_bwe_exc + 16 */ - move32(); - } - } - FOR( k = 0; k < length / 2; k++ ) - { - sum_gain = mult_r( subwin[length - 2 * k - 2], subgain[i - 1] ); /* Q15 */ - mod_syn[skip[i] + k] = L_mult( sum_gain, synSHB[skip[i] + k] ); /* Q_bwe_exc + 16 */ - move32(); - } - } - ELSE - { - /* SWB Gain shape and gain frame application with overlap */ - l_frame = L_FRAME16k; - move16(); - l_shb_lahead = L_SHB_LAHEAD; - move16(); - skip = skip_bands_SWB_TBE; - - num_join = NUM_SHB_SUBFR / NUM_SHB_SUBGAINS; - move16(); - join_length = i_mult2( num_join, length ); - j = 0; - move16(); - FOR( k = 0; k < length; k++ ) - { - sum_gain = mult_r( subwin[k + 1], subgain[0] ); /* Q15 */ - mod_syn[j] = L_mult( synSHB[j], sum_gain ); - move32(); /* Q_bwe_exc + 16 */ - j = add( j, 1 ); - } - - FOR( i = 0; i < NUM_SHB_SUBGAINS - 1; i++ ) - { - FOR( k = 0; k < join_length - length; k++ ) - { - mod_syn[j] = L_mult( synSHB[j], subgain[i * num_join] ); - move32(); /* Q_bwe_exc + 16 */ - j = add( j, 1 ); - } - - FOR( k = 0; k < length; k++ ) - { - /* one bit headroom here, otherwise messes up the gain shape application */ - /* keep it as L_mult0 */ - L_tmp = L_mult0( subwin[k + 1], subgain[( i + 1 ) * num_join] ); /* Q30 */ - sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i * num_join] ) ); /*Q14 */ - mod_syn[j] = L_shl( L_mult( sum_gain, synSHB[j] ), 1 ); - move32(); /* Q_bwe_exc + 16 */ - j = add( j, 1 ); - } - } - FOR( k = 0; k < join_length - length; k++ ) - { - mod_syn[j] = L_mult( synSHB[j], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); - move32(); /* Q_bwe_exc + 16 */ - j = add( j, 1 ); - } - FOR( k = 0; k < length; k++ ) - { - sum_gain = mult_r( subwin[length - k - 1], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); /* Q15 */ - mod_syn[j] = L_mult( synSHB[j], sum_gain ); - move32(); /* Q_bwe_exc + 16 */ - j = add( j, 1 ); - } - } - - - Q_gFr_norm = norm_l( frame_gain ); - if ( frame_gain == 0 ) - { - Q_gFr_norm = 31; - move16(); - } - Q_gFr_norm = sub( Q_gFr_norm, 1 ); /* give some headroom */ - - gain_frame_Q16 = round_fx( L_shl( frame_gain, Q_gFr_norm ) ); /* Q = 18 + Q_gFr_norm - 16 - = (Q_gFr_norm + 2) */ - - *Q_bwe_exc = add( *Q_bwe_exc, Q_gFr_norm ); /* compensate for the exp shift */ - move16(); - *Q_bwe_exc = sub( *Q_bwe_exc, 13 ); /* Keep Q-fac at => (Q_bwe_exc + Q_gFr_norm - 13) */ - move16(); - - /* check for headroom of previous buff memories: overlap, Hilbert, and interp all-pass mem */ - tmpQ15 = add( prev_Q_bwe_syn2, n_mem3 ); - if ( GT_16( *Q_bwe_exc, tmpQ15 ) ) - { - *Q_bwe_exc = tmpQ15; - move16(); - } - - *Qx = *Q_bwe_exc; - move16(); - /* rescale the overlap memory */ - FOR( i = 0; i < L_SHB_LAHEAD; i++ ) - { - temp2 = 1; - move16(); - if ( overlap[i] < 0 ) - { - temp2 = -1; - move16(); - } - temp1 = abs_s( overlap[i] ); - temp1 = shl( temp1, sub( *Q_bwe_exc, prev_Q_bwe_syn2 ) ); - overlap[i] = i_mult( temp1, temp2 ); - move16(); /* Q_bwe_exc + Q_gFr_norm - 13 */ - } - - FOR( i = 0; i < l_shb_lahead; i++ ) - { - L_tmp = Mpy_32_16_1( mod_syn[i], gain_frame_Q16 ); /* Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15 */ - L_tmp2 = Mpy_32_16_1( L_tmp, win[i] ); /* (Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15) + 15 + (1-16) */ - synSHB[i] = mac_r( L_tmp2, overlap[i], MAX_16 ); - move16(); /* Q_bwe_exc + Q_gFr_norm - 13 */ - synSHB[i + l_shb_lahead] = round_fx( L_tmp ); /* Q_bwe_exc + Q_gFr_norm - 13 */ - move16(); - } - - FOR( ; i < l_frame; i++ ) - { - L_tmp = Mpy_32_16_1( mod_syn[i], gain_frame_Q16 ); /* Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15 */ - synSHB[i] = round_fx( L_tmp ); /* Q_bwe_exc + Q_gFr_norm - 13 */ - move16(); - } - - l_frame_tmp = add( l_frame, l_shb_lahead ); - FOR( ; i < l_frame_tmp; i++ ) - { - L_tmp = Mpy_32_16_1( mod_syn[i], gain_frame_Q16 ); /* Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15 */ - L_tmp = Mpy_32_16_1( L_tmp, win[l_frame + l_shb_lahead - 1 - i] ); /* (Q_bwe_exc + 16 + Q_gFr_norm + 2 - 15) + 15 + (1-16) */ - overlap[i - l_frame] = round_fx( L_tmp ); /* Q_bwe_exc + Q_gFr_norm - 13 */ - move16(); - } - - return; -} - - -/* IVAS 32-bit variant */ -void ScaleShapedSHB_fx32( - const Word16 length, /* i : SHB overlap length */ - Word32 *synSHB_fx, /* i/o: synthesized shb signal Q_inp/Q_new */ - Word32 *overlap_fx, /* i/o: buffer for overlap-add Q_inp/Q_new */ - const Word16 *subgain_fx, /* i : subframe gain Q15 */ - const Word32 frame_gain_fx, /* i : frame gain Q18*/ - const Word16 *win_fx, /* i : window Q15 */ - const Word16 *subwin_fx, /* i : subframes window Q15 */ - Word16 *Q_inp, - Word16 *Q_new ) -{ - const Word16 *skip; - Word16 i, j, k, l_shb_lahead, l_frame; - Word16 join_length, num_join; - Word32 mod_syn_fx[L_FRAME16k + L_SHB_LAHEAD], L_tmp; - Word16 sum_gain_fx; - - /* initilaization */ - l_frame = L_FRAME16k; - l_shb_lahead = L_SHB_LAHEAD; - move16(); - move16(); - skip = skip_bands_SWB_TBE; - - IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) - { - skip = skip_bands_WB_TBE; - l_frame = L_FRAME16k / 4; - l_shb_lahead = L_SHB_LAHEAD / 4; - move16(); - move16(); - } - - /* apply gain for each subframe, and store noise output signal using overlap-add */ - set32_fx( mod_syn_fx, 0, l_frame + l_shb_lahead ); - - IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) - { - sum_gain_fx = 0; - move16(); - FOR( k = 0; k < shr( length, 1 ); k++ ) - { - sum_gain_fx = mult_r( subwin_fx[2 * k + 2], subgain_fx[0] ); - mod_syn_fx[skip[0] + k] = Mpy_32_16_1( synSHB_fx[skip[0] + k], sum_gain_fx ); - move32(); // Qx - mod_syn_fx[skip[0] + k + length / 2] = Mpy_32_16_1( synSHB_fx[skip[0] + k + length / 2], subgain_fx[0] ); // Qx - move32(); - } - FOR( i = 1; i < NUM_SHB_SUBFR / 2; i++ ) - { - FOR( k = 0; k < length; k++ ) - { - L_tmp = L_mult0( subwin_fx[k + 1], subgain_fx[i] ); - sum_gain_fx = round_fx( L_mac0( L_tmp, subwin_fx[length - k - 1], subgain_fx[i - 1] ) ); - mod_syn_fx[skip[i] + k] = L_shl( Mpy_32_16_1( synSHB_fx[skip[i] + k], sum_gain_fx ), 1 ); // Qx - move32(); - } - } - FOR( k = 0; k < shr( length, 1 ); k++ ) - { - sum_gain_fx = mult_r( subwin_fx[length - k * 2 - 2], subgain_fx[i - 1] ); - mod_syn_fx[skip[i] + k] = Mpy_32_16_1( synSHB_fx[skip[i] + k], sum_gain_fx ); // Qx - move32(); - } - } - ELSE - { - num_join = NUM_SHB_SUBFR / NUM_SHB_SUBGAINS; - join_length = i_mult( num_join, length ); - j = 0; - move16(); - move16(); - FOR( k = 0; k < length; k++ ) - { - mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], mult_r( subwin_fx[k + 1], subgain_fx[0] ) ); // Qx - move32(); - j = add( j, 1 ); - } - FOR( i = 0; i < NUM_SHB_SUBGAINS - 1; i++ ) - { - FOR( k = 0; k < join_length - length; k++ ) - { - mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], subgain_fx[i * num_join] ); // Qx - move32(); - j = add( j, 1 ); - } - - FOR( k = 0; k < length; k++ ) - { - L_tmp = L_mult0( subwin_fx[length - k - 1], subgain_fx[i * num_join] ); - mod_syn_fx[j] = L_shl( Mpy_32_16_1( synSHB_fx[j], round_fx( L_mac0( L_tmp, subwin_fx[k + 1], subgain_fx[( i + 1 ) * num_join] ) ) ), 1 ); // Qx - move32(); - j = add( j, 1 ); - } - } - FOR( k = 0; k < join_length - length; k++ ) - { - mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], subgain_fx[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); // Qx - move32(); - j = add( j, 1 ); - } - FOR( k = 0; k < length; k++ ) - { - mod_syn_fx[j] = Mpy_32_16_1( synSHB_fx[j], mult_r( subwin_fx[length - k - 1], subgain_fx[( NUM_SHB_SUBGAINS - 1 ) * num_join] ) ); // Qx - move32(); - j = add( j, 1 ); - } - } - - Word16 norm_shift = norm_l( frame_gain_fx ); - if ( frame_gain_fx == 0 ) - { - norm_shift = 31; - move16(); - } - - norm_shift = s_min( norm_shift, 14 ); - norm_shift = sub( norm_shift, 1 ); - - *Q_new = add( *Q_inp, sub( norm_shift, 13 ) ); // Q_new = Q_inp + min(norm_shift,14) - 14; - move16(); - FOR( i = 0; i < L_SHB_LAHEAD; i++ ) - { - overlap_fx[i] = L_shl( overlap_fx[i], sub( *Q_new, *Q_inp ) ); - move32(); - } - - FOR( i = 0; i < l_shb_lahead; i++ ) - { - synSHB_fx[i] = Mpy_32_32( mod_syn_fx[i], Mpy_32_16_1( L_shl( frame_gain_fx, norm_shift ), win_fx[i] ) ); // Q_new - synSHB_fx[i] = L_add( synSHB_fx[i], overlap_fx[i] ); - synSHB_fx[i + l_shb_lahead] = Mpy_32_32( mod_syn_fx[i], L_shl( frame_gain_fx, norm_shift ) ); // Q_new - move32(); - move32(); - move32(); - } - - FOR( ; i < l_frame; i++ ) - { - synSHB_fx[i] = Mpy_32_32( mod_syn_fx[i], L_shl( frame_gain_fx, norm_shift ) ); // Q_new - move32(); - } - - FOR( ; i < l_frame + l_shb_lahead; i++ ) - { - synSHB_fx[i] = L_shl( synSHB_fx[i], sub( *Q_new, *Q_inp ) ); - overlap_fx[i - l_frame] = Mpy_32_32( mod_syn_fx[i], Mpy_32_16_1( L_shl( frame_gain_fx, norm_shift ), win_fx[l_frame + l_shb_lahead - 1 - i] ) ); // Q_new - move32(); - move32(); - } - - *Q_inp = *Q_new; - move16(); - return; -} - - -/*-------------------------------------------------------------------* - * ScaleShapedWB() - * - * - *-------------------------------------------------------------------*/ - -void ScaleShapedWB_fx( - const Word16 length, /* i : SHB overlap length */ - Word16 *synSHB, /* i/o : synthesized shb signal Q_bwe_exc/Qx */ - Word16 *overlap, /* i/o : buffer for overlap-add Q_bwe_exc/Qx */ - const Word16 *subgain, /* i : subframe gain Q15*/ - const Word32 frame_gain, /* i : frame gain Q18 */ - const Word16 *win, /* i : window Q15*/ - const Word16 *subwin, /* i : subframes window Q15*/ - const Word16 Q_bwe_exc, - Word16 L_frame, /* i : Frame length - determines whether 12.8 or 16kHz core in-use */ - Word16 dynQ, /* i : indicate whether output is dynamic Q, or Q0 */ - Word16 *Qx, /* o : newly computed Q factor for synSHB */ - Word16 prev_Qx, /* i : prev_Qx for memory scaling */ - Word32 *Hilbert_Mem /* i : Hilbert memory used for computing Qx */ -) -{ - const Word16 *skip; - Word16 i, j, k, l_shb_lahead, l_frame, l_frame_tmp; - Word16 join_length, num_join; - Word32 mod_syn[L_FRAME16k + L_SHB_LAHEAD]; - Word16 sum_gain; - Word32 L_tmp; - Word16 max_val, abs_sig, sc1, sc2, shift, max_headroom, min_shift, max_shift, max_shift2; - /* Init */ - set32_fx( mod_syn, 0, L_FRAME16k + L_SHB_LAHEAD ); - - /* apply gain for each subframe, and store noise output signal using overlap-add */ - IF( EQ_16( length, SHB_OVERLAP_LEN / 2 ) ) - { - /* WB Gain shape and gain frame application with overlap */ - skip = skip_bands_WB_TBE; - move16(); - l_frame = L_FRAME16k / 4; - move16(); - l_shb_lahead = L_SHB_LAHEAD / 4; - move16(); - - sum_gain = 0; - move16(); - FOR( k = 0; k < length / 2; k++ ) - { - sum_gain = mult_r( subwin[2 * k + 2], subgain[0] ); /* Q15 */ - mod_syn[skip[0] + k] = L_mult( sum_gain, synSHB[skip[0] + k] ); - move32(); /* Q_bwe_exc + 16 */ - mod_syn[skip[0] + k + length / 2] = L_mult( subgain[0], synSHB[skip[0] + k + length / 2] ); - move32(); /* Q_bwe_exc + 16 */ - } - FOR( i = 1; i < NUM_SHB_SUBFR / 2; i++ ) - { - FOR( k = 0; k < length; k++ ) - { - L_tmp = L_mult0( subwin[k + 1], subgain[i] ); /* Q30 */ - sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i - 1] ) ); /* Q14 */ - mod_syn[skip[i] + k] = L_shl( L_mult( sum_gain, synSHB[skip[i] + k] ), 1 ); - move32(); /* Q_bwe_exc + 16 */ - } - } - FOR( k = 0; k < length / 2; k++ ) - { - sum_gain = mult_r( subwin[length - 2 * k - 2], subgain[i - 1] ); /* Q15 */ - mod_syn[skip[i] + k] = L_mult( sum_gain, synSHB[skip[i] + k] ); - move32(); /* Q_bwe_exc + 16 */ - } - } - ELSE - { - /* SWB Gain shape and gain frame application with overlap */ - l_frame = L_FRAME16k; - move16(); - l_shb_lahead = L_SHB_LAHEAD; - move16(); - skip = skip_bands_SWB_TBE; - move16(); - - num_join = NUM_SHB_SUBFR / NUM_SHB_SUBGAINS; - move16(); - join_length = i_mult2( num_join, length ); - j = 0; /* ptr*/ - move16(); - FOR( k = 0; k < length; k++ ) - { - sum_gain = mult_r( subwin[k + 1], subgain[0] ); /* Q15 */ - mod_syn[j] = L_mult( synSHB[j], sum_gain ); - move32(); /* Q_bwe_exc + 16 */ - j++; - } - - FOR( i = 0; i < NUM_SHB_SUBGAINS - 1; i++ ) - { - FOR( k = 0; k < join_length - length; k++ ) - { - mod_syn[j] = L_mult( synSHB[j], subgain[i * num_join] ); - move32(); /* Q_bwe_exc + 16 */ - j++; - } - - FOR( k = 0; k < length; k++ ) - { - L_tmp = L_mult0( subwin[k + 1], subgain[i_mult2( ( i + 1 ), num_join )] ); /* Q30 */ - sum_gain = round_fx( L_mac0( L_tmp, subwin[length - k - 1], subgain[i * num_join] ) ); /*Q14 */ - mod_syn[j] = L_shl( L_mult( sum_gain, synSHB[j] ), 1 ); - move32(); /* Q_bwe_exc + 16 */ - j++; - } - } - FOR( k = 0; k < join_length - length; k++ ) - { - mod_syn[j] = L_mult( synSHB[j], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); - move32(); /* Q_bwe_exc + 16 */ - j++; - } - FOR( k = 0; k < length; k++ ) - { - sum_gain = mult_r( subwin[length - k - 1], subgain[( NUM_SHB_SUBGAINS - 1 ) * num_join] ); /* Q15 */ - mod_syn[j] = L_mult( synSHB[j], sum_gain ); - move32(); /* Q_bwe_exc + 16 */ - j++; - } - } - - - max_val = 0; - move16(); - FOR( i = 0; i < l_frame + l_shb_lahead; i++ ) - { - abs_sig = abs_s( round_fx( mod_syn[i] ) ); - if ( GT_16( abs_sig, max_val ) ) - { - max_val = abs_sig; - move16(); - } - } - - FOR( i = 0; i < HILBERT_MEM_SIZE; i++ ) - { - abs_sig = abs_s( round_fx( Hilbert_Mem[i] ) ); - if ( GT_16( abs_sig, max_val ) ) - { - max_val = abs_sig; - move16(); - } - } - - sc1 = norm_s( max_val ); /* max_val headroom in mod_syn[] */ - sc2 = norm_s( round_fx( frame_gain ) ); /* headroom in GainFrame */ - - IF( dynQ == 0 ) - { - shift = sub( 13, Q_bwe_exc ); /* earlier = (10 - Q_bwe_exc) but we changed GainFrame Q21 to Q18 */ - *Qx = 0; - move16(); - } - ELSE IF( EQ_16( L_frame, L_FRAME ) ) /* 12.8k core */ - { - max_headroom = sub( add( sc1, sc2 ), 4 ); /* Max headroom after multiplying = sc1 + sc2 -3 (keep 3 bit extra headroom) */ - /* 12.8k core needs extra headroom than 16k core */ - /* otherwise Hilbert transform inside flip_and_downmix have saturation, causes ringing in output */ - - /* Qx = (Q_bwe_exc+3) + shift - 16 */ - /* make sure 14 > Qx > 2 */ - min_shift = sub( 2, sub( add( Q_bwe_exc, 3 ), 16 ) ); - max_shift = sub( 13, sub( add( Q_bwe_exc, 3 ), 16 ) ); - max_shift2 = s_min( max_shift, max_headroom ); /* avoid shifting more than the available max_val headroom to avoid overflow */ - - shift = s_min( min_shift, max_shift2 ); - *Qx = sub( add( add( Q_bwe_exc, 3 ), shift ), 16 ); - move16(); - } - ELSE /* 16k core */ - { - max_headroom = sub( add( sc1, sc2 ), 1 ); /* Max headroom after multiplying = sc1 + sc2 -1 (keep 1 bit extra headroom) */ - - /* Qx = (Q_bwe_exc+3) + shift - 16 */ - /* make sure 14 > Qx > 3 */ - min_shift = sub( 3, sub( add( Q_bwe_exc, 3 ), 16 ) ); - move16(); - max_shift = sub( 13, sub( add( Q_bwe_exc, 3 ), 16 ) ); - move16(); - max_shift2 = s_min( max_shift, max_headroom ); /* avoid shifting more than the available max_val headroom to avoid overflow */ - - shift = s_min( min_shift, max_shift2 ); - *Qx = sub( add( add( Q_bwe_exc, 3 ), shift ), 16 ); - move16(); - } - - /* bring memory st_fx->syn_overlap_fx[] = overlap[i] to new Q = Qx to prepare for addition */ - FOR( i = 0; i < l_shb_lahead; i++ ) - { - overlap[i] = shl( overlap[i], sub( *Qx, prev_Qx ) ); - move16(); - } - - FOR( i = 0; i < l_shb_lahead; i++ ) - { - /* mod_syn in (16+Q_bwe_exc), frame_gain in Q18 */ - L_tmp = Mult_32_32( mod_syn[i], frame_gain ); /* L_tmp in (Q_bwe_exc+3) */ - synSHB[i] = round_fx_sat( L_shl_sat( Mult_32_16( L_tmp, win[i] ), shift ) ); /* Qx */ - move16(); - synSHB[i] = add_sat( synSHB[i], overlap[i] ); - move16(); /* Qx */ - synSHB[i + l_shb_lahead] = round_fx_sat( L_shl_sat( L_tmp, shift ) ); /* Qx */ - move16(); - } - - FOR( ; i < l_frame; i++ ) - { - L_tmp = Mult_32_32( mod_syn[i], frame_gain ); /* L_tmp in (Q_bwe_exc+3) */ - synSHB[i] = round_fx_sat( L_shl_sat( L_tmp, shift ) ); /* Qx; */ - move16(); - } - - l_frame_tmp = add( l_frame, l_shb_lahead ); - FOR( ; i < l_frame_tmp; i++ ) - { - L_tmp = Mult_32_32( mod_syn[i], frame_gain ); /* (Q_bwe_exc+3) */ - overlap[i - l_frame] = round_fx_sat( L_shl_sat( Mult_32_16( L_tmp, win[l_frame + l_shb_lahead - 1 - i] ), shift ) ); /* Qx */ - move16(); - } - - return; -} - -/*-------------------------------------------------------------------* - * non_linearity() - * - * Apply a non linearity to the SHB excitation - * -------------------------------------------------------------------*/ - -static Word32 non_linearity_scaled_copy( - const Word16 input[], - Word16 j, - const Word16 length, - Word32 output[], - Word32 prev_scale, - const Word16 scale_step, - const Word16 en_abs ) -{ - Word16 i; - Word32 L_tmp; - - - IF( en_abs ) - { - FOR( i = 0; i < j; i++ ) - { - L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ - L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ - output[i] = L_tmp; - move32(); - - L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ - prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ - } - FOR( ; i < length; i++ ) - { - L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ - L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ - output[i] = L_tmp; - move32(); - } - } - ELSE - { - FOR( i = 0; i < j; i++ ) - { - L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ - L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ - - if ( input[i] < 0 ) - { - L_tmp = L_negate( L_tmp ); - } - output[i] = L_tmp; - move32(); - - L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ - prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ - } - - FOR( ; i < length; i++ ) - { - L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ - L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ - - if ( input[i] < 0 ) - { - L_tmp = L_negate( L_tmp ); - } - output[i] = L_tmp; - move32(); - } - } - return prev_scale; -} - - -/*-------------------------------------------------------------------* - * non_linearity() - * - * Apply a non linearity to the SHB excitation - * -------------------------------------------------------------------*/ - -static Word32 non_linearity_scaled_copy_ivas( - const Word16 input[], - Word16 j, - const Word16 length, - Word32 output[], - Word32 prev_scale, - const Word16 scale_step, - const Word16 en_abs ) -{ - Word16 i; - Word32 L_tmp; - - - IF( en_abs ) - { - FOR( i = 0; i < j; i++ ) - { - L_tmp = L_mult( input[i], input[i] ); /* 2*Q_inp+1 */ - L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ - - test(); - test(); - if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) - { - /* NOTE: this is done to avoid the product to become zero for small non-zero input */ - L_tmp = 1; - move16(); - } - - output[i] = L_tmp; - move32(); - - L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ - prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ - } - FOR( ; i < length; i++ ) - { - /* L_tmp = (input[i] * input[i]) * prev_scale;*/ - L_tmp = Mpy_32_16_1( Mpy_32_16_1( prev_scale, input[i] ), input[i] ); /* 2*Q_inp */ - - test(); - test(); - if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) - { - /* NOTE: this is done to avoid the product to become zero for small non-zero input */ - L_tmp = 1; - move16(); - } - output[i] = L_tmp; - move32(); - } - } - ELSE - { - FOR( i = 0; i < j; i++ ) - { - L_tmp = L_mult( input[i], input[i] ); /* 2*Q_inp+1 */ - L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ - - test(); - test(); - if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) - { - /* NOTE: this is done to avoid the product to become zero for small non-zero input */ - L_tmp = 1; - move16(); - } - - if ( input[i] < 0 ) - { - L_tmp = L_negate( L_tmp ); - } - output[i] = L_tmp; - move32(); - - L_tmp = Mult_32_16( prev_scale, scale_step ); /* Q29 */ - prev_scale = L_shl( L_tmp, 1 ); /* Q30 */ - } - - FOR( ; i < length; i++ ) - { - L_tmp = L_mult_sat( input[i], input[i] ); /* 2*Q_inp+1 */ - L_tmp = Mult_32_32( L_tmp, prev_scale ); /* 2*Q_inp */ - test(); - test(); - if ( input[i] != 0 && prev_scale != 0 && L_tmp == 0 ) - { - /* NOTE: this is done to avoid the product to become zero for small non-zero input */ - L_tmp = 1; - move16(); - } - - if ( input[i] < 0 ) - { - L_tmp = L_negate( L_tmp ); - } - output[i] = L_tmp; - move32(); - } - } - return prev_scale; -} - - -/*==========================================================================*/ -/* FUNCTION : void non_linearity() */ -/*--------------------------------------------------------------------------*/ -/* PURPOSE : Apply a non linearity to the SHB excitation */ -/*--------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* Word16 input[] i : input signal Q_inp */ -/* Word16 length i : input length */ -/*--------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* Word32 output[] o : output signal 2*Q_inp */ -/*--------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* Word32 *prev_scale i/o: memory Q30 */ -/*--------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------*/ -/* CALLED FROM : */ -/*==========================================================================*/ - -void non_linearity_fx( - const Word16 input[], /* i : input signal Q_inp */ - Word32 output[], /* o : output signal 2*Q_inp */ - const Word16 length, /* i : input length */ - Word32 *pPrevScale, /* i/o: memory Q30 */ - Word16 Q_inp, - Word16 coder_type, /* i : Coder Type */ - Word16 *voice_factors, /* i : Voice Factors */ - const Word16 L_frame /* i : ACELP frame length */ - -) -{ - Word16 i, j; - Word16 max_val = 0; - move16(); - Word32 scale; - Word16 scale_step; - Word16 exp, tmp; - Word16 e_tmp, f_tmp; - Word16 frac; - Word32 L_tmp; - Word32 L_tmp1; - - Word16 en_abs = 0; - Word16 v_fac = 0; - move16(); - move16(); - Word16 ths; - Word16 nframes; - Word32 prev_scale; - Word16 length_half; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - - IF( EQ_16( L_frame, L_FRAME16k ) ) - { - nframes = 5; - move16(); - ths = 17817; - move16(); /* 0.87*5 in Q12 */ - } - ELSE - { - nframes = 4; - move16(); - ths = 15400; - move16(); /* 0.94*4 in Q12 */ - } - - - FOR( i = 0; i < nframes; i++ ) - { - v_fac = add( v_fac, shr( voice_factors[i], 3 ) ); /* Q12 */ - } - - test(); - if ( EQ_16( coder_type, VOICED ) && GT_16( v_fac, ths ) ) - { - en_abs = 1; - move16(); - } - - length_half = shr( length, 1 ); - prev_scale = *pPrevScale; - move32(); - - - /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ - - FOR( i = j = 0; i < length_half; i++ ) - { - tmp = abs_s( input[i] ); - if ( GT_16( tmp, max_val ) ) - { - j = i; - move16(); - } - max_val = s_max( max_val, tmp ); - } - - - IF( GT_16( max_val, shl( 1, Q_inp ) ) ) - { - exp = norm_s( max_val ); - tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ - scale = L_shl( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ - } - ELSE - { - scale = 1438814044; - move32(); /* Q31; 0.67 in Q31 */ - } - - test(); - IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 32 ), scale ) ) - { - scale_step = 16384; - move16(); /* Q14 */ - prev_scale = L_shr( scale, 1 ); /* Q30 */ - } - ELSE - { - - /* Computing log2(scale) */ - IF( j == 0 ) - { - scale_step = 32767; - move16(); - } - ELSE - { - e_tmp = norm_l( scale ); - f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); - e_tmp = sub( -1, e_tmp ); - L_tmp = Mpy_32_16( e_tmp, f_tmp, MAX_16 ); /* Q16 */ - - /* Computing log2(prev_scale) */ - e_tmp = norm_l( prev_scale ); - f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); - e_tmp = negate( e_tmp ); - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, MAX_16 ); /* Q16 */ - - /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ - L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ - - /* Computing 1/j */ - exp = norm_s( j ); - tmp = div_s( shl( 1, sub( 14, exp ) ), j ); /* Q(29-exp) */ - - /* (log2(scale / prev_scale))/length */ - L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ - - frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ - - tmp = extract_l( Pow2( 14, frac ) ); - scale_step = shl_o( tmp, exp, &Overflow ); /* Q14 */ - } - } - - prev_scale = non_linearity_scaled_copy( input, j, length_half, output, prev_scale, scale_step, en_abs ); - - max_val = 0; - move16(); - j = shr( length, 1 ); - FOR( i = length_half; i < length; i++ ) - { - tmp = abs_s( input[i] ); - if ( GT_16( tmp, max_val ) ) - { - j = i; - move16(); - } - max_val = s_max( max_val, tmp ); - } - - IF( GT_16( max_val, shl( 1, Q_inp ) ) ) - { - exp = norm_s( max_val ); - tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ - scale = L_shl_o( L_mult( 21955 /* 0.67 in Q15 */, tmp ), add( exp, sub( Q_inp, 14 ) ), &Overflow ); /* Q31 */ - } - ELSE - { - scale = 1438814044; - move32(); /* Q31; 0.67 in Q31 */ - } - - test(); - IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 32 ), scale ) ) - { - scale_step = 16384; - move16(); /*Q14 */ - prev_scale = L_shr( scale, 1 ); /*Q30 */ - } - ELSE - { - /*scale_step = (float) exp(1.0f / (float) (j - length/2) * (float) log(scale / prev_scale)); */ - /* Computing log2(scale) */ - IF( EQ_16( j, length_half ) ) - { - scale_step = 32767; - move16(); /*Q14 */ - } - ELSE - { - e_tmp = norm_l( scale ); - f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); - e_tmp = sub( -e_tmp, 1 ); - L_tmp = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ - - /* Computing log2(prev_scale) */ - e_tmp = norm_l( prev_scale ); - f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); - e_tmp = negate( e_tmp ); - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ - - /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ - L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ - - /* Computing 1/(j - length/2) */ - - tmp = sub( j, length_half ); - exp = norm_s( tmp ); - - - tmp = div_s( shl( 1, sub( 14, exp ) ), tmp ); /* Q(29-exp) */ - - /* (log2(scale / prev_scale))/length */ - L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ - - frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ - - tmp = extract_l( Pow2( 14, frac ) ); - scale_step = shl_o( tmp, exp, &Overflow ); /*Q14 */ - } - } - - prev_scale = non_linearity_scaled_copy( input + length_half, sub( j, length_half ), sub( length, length_half ), output + length_half, prev_scale, scale_step, en_abs ); - - *pPrevScale = prev_scale; - move32(); - - /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ - - return; -} - - -/*==========================================================================*/ -/* FUNCTION : void non_linearity_ivas_fx() */ -/*--------------------------------------------------------------------------*/ -/* PURPOSE : Apply a non linearity to the SHB excitation */ -/*--------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* Word16 input[] i : input signal Q_inp */ -/* Word16 length i : input length */ -/*--------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* Word32 output[] o : output signal 2*Q_inp */ -/*--------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* Word32 *prev_scale i/o: memory Q30 */ -/*--------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------*/ -/* CALLED FROM : */ -/*==========================================================================*/ - -void non_linearity_ivas_fx( - const Word16 input[], /* i : input signal Q_inp */ - Word32 output[], /* o : output signal 2*Q_inp */ - const Word16 length, /* i : input length */ - Word32 *pPrevScale, /* i/o: memory Q30 */ - Word16 Q_inp, - Word16 coder_type, /* i : Coder Type */ - Word16 *voice_factors, /* i : Voice Factors */ - const Word16 L_frame /* i : ACELP frame length */ - -) -{ - Word16 i, j; - Word16 max_val = 0; - move16(); - Word32 scale; - Word16 scale_step; - Word16 exp, tmp; - Word16 e_tmp, f_tmp; - Word16 frac; - Word32 L_tmp; - Word32 L_tmp1; - - Word16 en_abs = 0; - Word16 v_fac = 0; - move16(); - move16(); - Word16 ths; - Word16 nframes; - Word32 prev_scale; - Word16 length_half; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - - IF( EQ_16( L_frame, L_FRAME16k ) ) - { - nframes = 5; - move16(); - ths = 17817; - move16(); /* 0.87*5 in Q12 */ - } - ELSE - { - nframes = 4; - move16(); - ths = 15400; - move16(); /* 0.94*4 in Q12 */ - } - - - FOR( i = 0; i < nframes; i++ ) - { - v_fac = add( v_fac, shr( voice_factors[i], 3 ) ); /* Q12 */ - } - - test(); - if ( EQ_16( coder_type, VOICED ) && GT_16( v_fac, ths ) ) - { - en_abs = 1; - move16(); - } - - length_half = shr( length, 1 ); - prev_scale = *pPrevScale; - move32(); - - - /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ - - FOR( i = j = 0; i < length_half; i++ ) - { - tmp = abs_s( input[i] ); - if ( GT_16( tmp, max_val ) ) - { - j = i; - move16(); - } - max_val = s_max( max_val, tmp ); - } - - - IF( GT_16( max_val, shl( 1, Q_inp ) ) ) - { - exp = norm_s( max_val ); - tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ - scale = L_shl( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ) ); /* Q31 */ - } - ELSE - { - scale = 1438814044; - move32(); /* Q31; 0.67 in Q31 */ - } - - test(); - IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 64 ) /*Q30 -> Q31*/, scale /*Q31*/ ) ) - { - scale_step = 16384; - move16(); /* Q14 */ - prev_scale = L_shr( scale, 1 ); /* Q30 */ - } - ELSE - { - - /* Computing log2(scale) */ - IF( j == 0 ) - { - scale_step = 32767; - move16(); - } - ELSE - { - e_tmp = norm_l( scale ); - f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); - e_tmp = sub( -1, e_tmp ); - L_tmp = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ - - /* Computing log2(prev_scale) */ - e_tmp = norm_l( prev_scale ); - f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); - e_tmp = negate( e_tmp ); - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ - - /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ - L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ - - /* Computing 1/j */ - exp = norm_s( j ); - tmp = div_s( shl( 1, sub( 14, exp ) ), j ); /* Q(29-exp) */ - - /* (log2(scale / prev_scale))/length */ - L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /* Q(16+29-exp+1-16+exp-14)->Q16 */ - - frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ - - tmp = extract_l( Pow2( 14, frac ) ); - scale_step = shl_o( tmp, exp, &Overflow ); /* Q14 */ - } - } - - prev_scale = non_linearity_scaled_copy_ivas( input, j, length_half, output, prev_scale, scale_step, en_abs ); - - max_val = 0; - move16(); - j = shr( length, 1 ); - FOR( i = length_half; i < length; i++ ) - { - tmp = abs_s( input[i] ); - if ( GT_16( tmp, max_val ) ) - { - j = i; - move16(); - } - max_val = s_max( max_val, tmp ); - } - - IF( GT_16( max_val, shl( 1, Q_inp ) ) ) - { - exp = norm_s( max_val ); - tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ - scale = L_shl_o( L_mult( 21955, tmp ), add( exp, sub( Q_inp, 14 ) ), &Overflow ); /* Q31 */ - } - ELSE - { - scale = 1438814044; - move32(); /* Q31; 0.67 in Q31 */ - } - - test(); - IF( prev_scale <= 0 || GT_32( Mult_32_16( prev_scale, 64 ), scale ) ) - { - scale_step = 16384; - move16(); /*Q14 */ - prev_scale = L_shr( scale, 1 ); /*Q30 */ - } - ELSE - { - /*scale_step = (float) exp(1.0f / (float) (j - length/2) * (float) log(scale / prev_scale)); */ - /* Computing log2(scale) */ - IF( EQ_16( j, length_half ) ) - { - scale_step = 32767; - move16(); /*Q14 */ - } - ELSE - { - e_tmp = norm_l( scale ); - f_tmp = Log2_norm_lc( L_shl( scale, e_tmp ) ); - e_tmp = sub( -e_tmp, 1 ); - L_tmp = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ - - /* Computing log2(prev_scale) */ - e_tmp = norm_l( prev_scale ); - f_tmp = Log2_norm_lc( L_shl( prev_scale, e_tmp ) ); - e_tmp = negate( e_tmp ); - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 32767 ); /* Q16 */ - - /* log2(scale / prev_scale) = log2(scale) - log2(prev_scale) */ - L_tmp = L_sub( L_tmp, L_tmp1 ); /* Q16 */ - - /* Computing 1/(j - length/2) */ - - tmp = sub( j, length_half ); - exp = norm_s( tmp ); - - - tmp = div_s( shl( 1, sub( 14, exp ) ), tmp ); /* Q(29-exp) */ - - /* (log2(scale / prev_scale))/length */ - L_tmp = L_shl_o( Mult_32_16( L_tmp, tmp ), sub( exp, 14 ), &Overflow ); /*Q(16+29-exp+1-16+exp-14)->Q16 */ - - frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of L_tmp */ - - tmp = extract_l( Pow2( 14, frac ) ); - scale_step = shl_o( tmp, exp, &Overflow ); /*Q14 */ - } - } - - prev_scale = non_linearity_scaled_copy_ivas( input + length_half, sub( j, length_half ), sub( length, length_half ), output + length_half, prev_scale, scale_step, en_abs ); - - *pPrevScale = prev_scale; - move32(); - - /* Delay Alignment in FX is done inside swb_tbe_enc_fx() */ - - return; -} - - -/*-------------------------------------------------------------------* - * create_random_vector() - * - * creates random number vector - * Note: the abs(max_val) value coming out of create_random_vector should - * fit into the precision of Q6. - * -------------------------------------------------------------------*/ - -void create_random_vector_fx( - Word16 output[], /* o : output random vector Q5*/ - const Word16 length, /* i : length of random vector */ - Word16 seed[] /* i/o: start seed */ -) -{ - Word16 i, j, k; - Word16 scale1, scale2; - Word32 L_tmp; - - L_tmp = L_abs( Mult_32_16( 2144047674, Random( &seed[0] ) ) ); /*Q23 */ - j = extract_l( L_shr( L_tmp, 23 ) ); - j = s_and( j, 0xff ); - - L_tmp = L_abs( Mult_32_16( 2144047674, Random( &seed[1] ) ) ); /*Q23 */ - k = extract_l( L_shr( L_tmp, 23 ) ); - k = s_and( k, 0xff ); - - WHILE( EQ_16( k, j ) ) - { - L_tmp = L_abs( Mult_32_16( 2144047674, Random( &seed[1] ) ) ); /*Q23 */ - k = extract_l( L_shr( L_tmp, 23 ) ); - k = s_and( k, 0xff ); - } - - scale1 = 18021; - move16(); /* 200.00f * 0.35f/0.1243f; */ - if ( Random( &seed[0] ) < 0 ) - { - scale1 = -18021; - move16(); /*Q5 */ /* -200.00f * 0.35f/0.1243f; */ - } - - scale2 = 7208; - move16(); /* 80.00f * 0.35f/0.1243f; */ - if ( Random( &seed[1] ) < 0 ) - { - scale2 = -7208; - move16(); /*Q5 */ /* -80.00f * 0.35f/0.1243f; */ - } - - FOR( i = 0; i < length; i++ ) - { - j = s_and( j, 0xff ); - k = s_and( k, 0xff ); - output[i] = round_fx( L_add( L_mult( scale1, gaus_dico_swb_fx[j] ), L_mult( scale2, gaus_dico_swb_fx[k] ) ) ); /*Q5 */ - move16(); - j++; - k++; - } - - return; -} - - -/*======================================================================================*/ -/* FUNCTION : interp_code_5over2_fx() */ -/*--------------------------------------------------------------------------------------*/ -/* PURPOSE : Used to interpolate the excitation from the core sample rate */ -/* of 12.8 kHz to 32 kHz. */ -/* Simple linear interpolator - No need FOR precision here. */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16[]) inp_code_fx : input vector (Q12) */ -/* _ (Word16) inp_length : length of input vector */ -/*--------------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16[]) interp_code_fx : output vector (Q12) */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------------------*/ - -/* _ None */ -/*--------------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*======================================================================================*/ - -void interp_code_5over2_fx( - const Word16 inp_code_fx[], /* i : input vector Qx*/ - Word16 interp_code_fx[], /* o : output vector Qx*/ - const Word16 inp_length /* i : length of input vector */ -) -{ - Word16 i, kk, kkp1, i_len2; - Word32 Ltemp; - Word16 factor_i_fx[5] = { 6554, 19661, 32767, 19661, 6554 }; - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - Word16 factor_j_fx[5] = { 26214, 13107, 0, 13107, 26214 }; - move16(); - move16(); - move16(); - move16(); - move16(); - interp_code_fx[0] = inp_code_fx[0]; - move16(); /* Qx */ - - Ltemp = L_mult( inp_code_fx[0], factor_i_fx[3] ); /* Q(16+x) */ - Ltemp = L_mac( Ltemp, inp_code_fx[1], factor_j_fx[3] ); /* Q(16+x) */ - interp_code_fx[1] = round_fx( Ltemp ); /*Qx */ - move16(); - Ltemp = L_mult( inp_code_fx[0], factor_i_fx[4] ); /*Q(16+x) */ - Ltemp = L_mac( Ltemp, inp_code_fx[1], factor_j_fx[4] ); /*Q(16+x) */ - interp_code_fx[2] = round_fx( Ltemp ); /* Qx */ - move16(); - kk = 1; - move16(); - kkp1 = 2; - move16(); - i = 3; - move16(); - /*i_len2 = ( inp_length - 2 ) * HIBND_ACB_L_FAC; */ /*HIBND_ACB_L_FAC == 5/2 */ - i_len2 = sub( inp_length, 2 ); - i_len2 = shr( add( shl( i_len2, 2 ), i_len2 ), 1 ); /* rounding below during shr makes it non BE*/ - - FOR( ; i < i_len2; i += 5 ) - { - Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[0] ); /*Q(16+x) */ - Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_i_fx[0] ); /*Q(16+x) */ - interp_code_fx[i] = round_fx( Ltemp ); /*Qx */ - move16(); - Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[1] ); /*Q(16+x) */ - Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_i_fx[1] ); /*Q(16+x) */ - interp_code_fx[i + 1] = round_fx( Ltemp ); /*Qx */ - move16(); - Ltemp = L_mult( inp_code_fx[kkp1], factor_i_fx[2] ); /*Q(16+x) */ - interp_code_fx[i + 2] = round_fx( Ltemp ); /*Qx */ - move16(); - kk++; - kkp1++; - - Ltemp = L_mult( inp_code_fx[kk], factor_i_fx[3] ); /*Q(16+x) */ - Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_j_fx[3] ); /*Q(16+x) */ - interp_code_fx[i + 3] = round_fx( Ltemp ); /*Qx */ - move16(); - Ltemp = L_mult( inp_code_fx[kk], factor_i_fx[4] ); /*Q(16+x) */ - Ltemp = L_mac( Ltemp, inp_code_fx[kkp1], factor_j_fx[4] ); /*Q(16+x) */ - interp_code_fx[i + 4] = round_fx( Ltemp ); /*Qx */ - move16(); - kk++; - kkp1++; - } - - Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[0] ); /*Q(16+x) */ - interp_code_fx[i] = round_fx( Ltemp ); /*Qx */ - move16(); - Ltemp = L_mult( inp_code_fx[kk], factor_j_fx[1] ); /*Q(16+x) */ - interp_code_fx[i + 1] = round_fx( Ltemp ); /*Qx */ - move16(); - return; -} - - -/*======================================================================================*/ -/* FUNCTION : interp_code_4over2_fx() */ -/*--------------------------------------------------------------------------------------*/ -/* PURPOSE : Used to interpolate the excitation from the core sample rate */ -/* of 16 kHz to 32 kHz. */ -/* Simple linear interpolator - No need for precision here. */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16[]) inp_code_fx : input vector (Qx) */ -/* _ (Word16) inp_length : length of input vector */ -/*--------------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16[]) interp_code_fx : output vector (Qx) */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------------------*/ - -/* _ None */ -/*--------------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*======================================================================================*/ - -void interp_code_4over2_fx( - const Word16 inp_code_fx[], /* i : input vector Qx*/ - Word16 interp_code_fx[], /* o : output vector Qx*/ - const Word16 inp_length /* i : length of input vector */ -) -{ - Word16 i, j; - j = 0; - move16(); - FOR( i = 0; i < inp_length - 1; i++ ) - { - interp_code_fx[j] = inp_code_fx[i]; - move16(); /*Qx */ - interp_code_fx[j + 1] = add( shr( inp_code_fx[i], 1 ), shr( inp_code_fx[i + 1], 1 ) ); - move16(); - move16(); /*Qx */ - j = add( j, 2 ); - } - - interp_code_fx[j] = inp_code_fx[i]; - move16(); - interp_code_fx[j + 1] = shr( inp_code_fx[i], 1 ); - move16(); /*Qx */ - - return; -} - - -/*-------------------------------------------------------------------* - * wb_tbe_extras_reset_synth() - * - * Reset the extra parameters only required for WB TBE synthesis - *-------------------------------------------------------------------*/ - -void wb_tbe_extras_reset_synth_fx( - Word16 state_lsyn_filt_shb[], - Word16 state_lsyn_filt_dwn_shb[], - Word16 state_32and48k_WB_upsample[], - Word16 state_resamp_HB[] ) -{ - set16_fx( state_lsyn_filt_shb, 0, 2 * ALLPASSSECTIONS_STEEP ); - set16_fx( state_lsyn_filt_dwn_shb, 0, 2 * ALLPASSSECTIONS_STEEP ); - set16_fx( state_32and48k_WB_upsample, 0, 2 * ALLPASSSECTIONS_STEEP ); - set16_fx( state_resamp_HB, 0, INTERP_3_1_MEM_LEN ); - - return; -} -#if defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 ) && defined( FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 ) -static inline Word64 wmac_1616( Word64 x1, Word16 x2, Word16 x3 ) -{ - return W_mac_16_16( x1, x2, x3 ); -} - -static inline Word64 wmac_3216( Word64 x1, Word32 x2, Word16 x3 ) -{ - return W_mac_32_16( x1, x2, x3 ); -} - -static inline Word64 finalSat16( Word64 W_tmpx, Word64 W_tmpy ) -{ - return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -} - -static inline Word64 finalSat32( Word64 W_tmpx, Word64 W_tmpy ) -{ - return W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); -} - -inline static void elliptic_bpf_48k_generic_func1( Word16 *input16_fx, Word32 *input32_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) -{ - Word32 L_tmpX; - Word16 i; - Word32 L_tmpMax2 = *L_tmpMax; - Word32 L_tmpAbs; - move32(); - - if ( input16_fx > 0 ) - { - Word64 ( *wmac )( Word64, Word16, Word16 ); - Word64 ( *finalSat )( Word64, Word64 ); - Word16 *input_fx = input16_fx; - wmac = wmac_1616; - finalSat = finalSat16; - } - if ( input32_fx > 0 ) - { - Word64 ( *wmac )( Word64, Word32, Word16 ); - Word64 ( *finalSat )( Word64, Word64 ); - Word32 *input_fx = input32_fx; - wmac = wmac_3216; - finalSat = finalSat32; - } - - IF( !IsUpsampled3 ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } - } /*IsUpsampled3*/ - ELSE - { /*IsUpsampled3*/ - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = wmac( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = wmac( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpX = wmac( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = wmac( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = wmac( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = finalSat( W_tmpX, W_tmpY ); /*Q_input_fx + 11*/ - move32(); - if ( *L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( *L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } - } /*IsUpsampled3*/ - *L_tmpMax = L_tmpMax2; - move32(); -} -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - -/*-------------------------------------------------------------------* - * elliptic_bpf_48k_generic() - * - * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz - * Implemented as 3 fourth order sections cascaded. - *-------------------------------------------------------------------*/ - -void elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int isIVAS, -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 IsUpsampled3, - Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif - Word16 *Q_input_fx, - Word16 output_fx[], /* o : output signal memory_fx_Q */ - Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ - Word16 memory_fx_Q[], - const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ -) -{ - Word16 i, j; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 memory_fx0, Q_temp, Q_temp2; - Word32 L_tmp_buffer[L_FRAME48k + 4], L_tmp2_buffer[L_FRAME48k + 4], L_output_buffer[L_FRAME48k + 4]; - Word32 L_tmpMax; - Word32 L_tmpX; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - Word64 W_tmpX; - Word64 W_tmpY; -#endif - - Word32 *L_tmp = &L_tmp_buffer[4]; - Word32 *L_tmp2 = &L_tmp2_buffer[4]; - Word32 *L_output = &L_output_buffer[4]; -#else - Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; - Word32 memory2_fx_2[4], memory2_fx_3[4]; -#endif - -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - FOR( i = 0; i < 4; i++ ) - { - memory_fx0 = extract_l( memory_fx2[0][i] ); - input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); - L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - move32(); - move32(); - } - -#else - FOR( i = 0; i < 4; i++ ) - { - memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); - memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); - memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - move32(); - move32(); - } -#endif - -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( input_fx, 0, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - IF( !IsUpsampled3 ) - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - } - } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } - } - } /*IsUpsampled3*/ - ELSE - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - } - } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - } - } - } /*IsUpsampled3*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; - memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; - memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; - memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; - move32(); - move32(); - move32(); - move32(); - move32(); - -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - elliptic_bpf_48k_generic_func1( 0, L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } - } - ELSE -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } - } - -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - move32(); - L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } -#endif - - - Q_temp = norm_l( L_tmpMax ); - Q_temp = sub( Q_temp, 4 ); - Scale_sig32( L_tmp2, 960, Q_temp ); - - memory_fx2[1][0] = L_tmp[L_FRAME48k - 4]; - memory_fx2[1][1] = L_tmp[L_FRAME48k - 3]; - memory_fx2[1][2] = L_tmp[L_FRAME48k - 2]; - memory_fx2[1][3] = L_tmp[L_FRAME48k - 1]; - move32(); - move32(); - move32(); - move32(); - move32(); - -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - FOR( j = 0; j < 4; j++ ) - { - L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - L_output[j - 4] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - } - - L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( 0, L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - IF( isIVAS ) - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - } - ELSE -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - { - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - } - -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - FOR( j = 0; j < 4; j++ ) - { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - } - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - move32(); - L_tmpMax = L_abs( L_output[0] ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); - - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - -#endif - - - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; - memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; - memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; - memory_fx2[2][3] = L_tmp2[L_FRAME48k - 1]; - memory_fx2[3][0] = L_output[L_FRAME48k - 4]; - memory_fx2[3][1] = L_output[L_FRAME48k - 3]; - memory_fx2[3][2] = L_output[L_FRAME48k - 2]; - memory_fx2[3][3] = L_output[L_FRAME48k - 1]; - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - memory_fx_Q[0] = *Q_input_fx; - memory_fx_Q[1] = add( *Q_input_fx, 11 ); - memory_fx_Q[2] = add( add( *Q_input_fx, 6 ), Q_temp ); - memory_fx_Q[3] = add( add( *Q_input_fx, 1 ), Q_temp ); - move16(); - move16(); - move16(); - move16(); - Q_temp2 = norm_l( L_tmpMax ); - Scale_sig32( L_output, 960, Q_temp2 ); - FOR( i = 0; i < 960; i++ ) - { - output_fx[i] = extract_h( L_output[i] ); - move16(); - } - *Q_input_fx = sub( add( add( *Q_input_fx, Q_temp ), Q_temp2 ), 15 ); - move16(); /* BASOP_NOGLOB */ - - return; -} -/*-------------------------------------------------------------------* - * synthesise_fb_high_band() - * - * Creates the highband output for full band - 14.0 to 20 kHz - * Using the energy shaped white excitation signal from the SWB BWE. - * The excitation signal input is sampled at 16kHz and so is upsampled - * to 48 kHz first. - * Uses a complementary split filter to code the two regions from - * 14kHz to 16kHz and 16 kHz to 20 kHz. - * One of 16 tilt filters is also applied afterwards to further - * refine the spectral shape of the fullband signal. - * The tilt is specified in dB per kHz. N.B. Only negative values are - * accomodated. - *-------------------------------------------------------------------*/ - -void synthesise_fb_high_band_fx( - const Word16 excitation_in[], /* i : full band excitation */ - Word16 Q_fb_exc, - Word16 output[], /* o : high band speech - 14.0 to 20 kHz */ - const Word32 fb_exc_energy, /* i : full band excitation energy */ - const Word16 ratio, /* i : energy ratio */ - const Word16 L_frame, /* i : ACELP frame length */ - const Word16 bfi, /* i : fec flag */ - Word16 *prev_fbbwe_ratio, /* o : previous frame energy for FEC */ - Word32 bpf_memory[][4], /* i/o: memory for elliptic bpf 48k */ - Word16 bpf_memory_Q[], - Word16 Qout -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - , - Word16 isIVAS -#endif -) -{ - Word16 i, j; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 excitation_in_interp3_buffer[L_FRAME48k + 4]; - Word16 *excitation_in_interp3 = &excitation_in_interp3_buffer[0] + 4; -#else - Word16 excitation_in_interp3[L_FRAME48k]; -#endif - Word16 tmp[L_FRAME48k]; - Word32 temp1; - Word32 ratio2; - Word32 L_tmp; - Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; - - /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ - j = 0; - /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ - FOR( i = 0; i < L_FRAME48k; i += 3 ) - { - excitation_in_interp3[i] = mult( excitation_in[j], 24576 ); /* Q(Q_fb_exc+13-15 = Q_fb_exc-2) */ - move16(); - excitation_in_interp3[i + 1] = 0; - move16(); - excitation_in_interp3[i + 2] = 0; - move16(); - j++; - } - exp_tmp = sub( Q_fb_exc, 2 ); - - IF( EQ_16( L_frame, L_FRAME16k ) ) - { - /* for 16kHz ACELP core */ - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 1, // IsUpsampled3 -#endif - excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx - - ); - } - ELSE - { - /* for 12.8kHz ACELP core */ - elliptic_bpf_48k_generic_fx( -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - isIVAS, -#endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - 1, // IsUpsampled3 -#endif - excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); - } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A.1" );*/ - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART A" )*/ - - push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" ); - temp1 = sum2_fx_mod( tmp, L_FRAME48k ); - L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/ - exp = norm_l( L_tmp ); - tmp3 = extract_h( L_shl( L_tmp, exp ) ); - tmp1 = sub( add( Q_fb_exc, Q_fb_exc ), 8 ); /* 1-9*/ - exp = sub( sub( 31, tmp1 ), exp ); - - exp2 = norm_l( temp1 ); - tmp2 = extract_h( L_shl( temp1, exp2 ) ); - exp2 = sub( sub( 31, sub( shl( exp_tmp, 1 ), 8 ) ), exp2 ); /* in Q15 (temp1 in Q9)*/ - - exp = sub( exp2, exp ); /* Denormalize and substract */ - IF( GT_16( tmp2, tmp3 ) ) - { - tmp2 = shr( tmp2, 1 ); - exp = add( exp, 1 ); - } - IF( 0 != tmp3 ) - { - tmp3 = div_s( tmp2, tmp3 ); - L_tmp = L_deposit_h( tmp3 ); - L_tmp = Isqrt_lc( L_tmp, &exp ); /*Q(31-exp)*/ - ratio2 = Mult_32_16( L_tmp, ratio ); /*Q(31-exp+0-15 = 16-exp)*/ - } - ELSE - { - ratio2 = 0; - } - - IF( !bfi ) - { - *prev_fbbwe_ratio = ratio; - move16(); - } - ELSE - { - /**prev_fbbwe_ratio = ratio*0.5f;*/ - *prev_fbbwe_ratio = shr( ratio, 1 ); - move16(); - } - tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - IF( L_tmp < 0 ) - { - output[i] = negate( extract_h( L_shl_sat( L_negate( L_tmp ), tmp3 ) ) ); /*Qout*/ - move16(); - } - ELSE - { - output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ - move16(); - } - } - pop_wmops(); /*push_wmops( "SYNTHESISE_FB_HIGH_BAND PART B" );*/ - return; -} - -/*-------------------------------------------------------------------* - * Estimate_mix_factors_fx() * - * * - * Estimate mix factors for SHB excitation generation * - *-------------------------------------------------------------------*/ -void Estimate_mix_factors_fx( - const Word16 *shb_res, /* i : SHB LP residual in Q = Q_shb */ - const Word16 Q_shb, - const Word16 *exc16kWhtnd, /* i : SHB transformed low band excitation Q_bwe_exc */ - const Word16 Q_bwe_exc, - const Word16 *White_exc16k_frac, /* i : Modulated envelope shaped white noise Q_frac */ - const Word16 Q_frac, - const Word32 pow1, /* i : SHB exc. power for normalization in Q_pow1 */ - const Word16 Q_pow1, - const Word32 pow22, /* i : White noise excitation for normalization in Q_pow22 */ - const Word16 Q_pow22, - Word16 *vf_modified, /* o : Estimated voice factors */ - Word16 *vf_ind /* o : voice factors VQ index */ -) -{ - Word16 shb_res_local[L_FRAME16k], WN_exc_local[L_FRAME16k]; - Word32 pow3, temp_p1_p2, temp_p1_p3; - Word16 temp_numer1[L_FRAME16k], temp_numer2[L_FRAME16k]; - Word16 i, length; - Word16 exp1, exp2, expa, expb, fraca, fracb, scale, num_flag, den_flag; - Word16 tmp, tmp1, sc1, sc2; - Word32 L_tmp1, L_tmp2; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - Copy( shb_res, shb_res_local, L_FRAME16k ); - Copy( White_exc16k_frac, WN_exc_local, L_FRAME16k ); - /* WN_exc_local in (Q_frac) */ - - pow3 = Dot_product( shb_res_local, shb_res_local, L_FRAME16k ); /* (2*Q_shb+1) */ - - pow3 = L_add( pow3, L_shl( 21475l /*0.00001f in Q31*/, 2 * Q_shb + 1 - 31 ) ); /* (2*Q_shb+1) */ - if ( pow3 == 0 ) - { - pow3 = 1; - move32(); - } - - /* temp_p1_p2 = (float)sqrt(pow1/pow2); */ - temp_p1_p2 = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp1 ); /* temp_p1_p3 in (Q31+exp1) */ - - /* temp_p1_p3 = (float)sqrt(pow1/pow3); */ - temp_p1_p3 = root_a_over_b_fx( pow1, Q_pow1, pow3, ( 2 * Q_shb + 1 ), &exp2 ); /* temp_p1_p3 in (Q31+exp2) */ - - - sc1 = sub( Q_bwe_exc, sub( Q_frac, exp1 ) ); - sc2 = sub( Q_bwe_exc, sub( Q_shb, exp2 ) ); - FOR( i = 0; i < L_FRAME16k; i++ ) - { - L_tmp1 = Mult_32_16( temp_p1_p2, WN_exc_local[i] ); /* (Q_frac - exp1) +16 */ - WN_exc_local[i] = round_fx( L_tmp1 ); - move16(); - L_tmp2 = Mult_32_16( temp_p1_p3, shb_res_local[i] ); /* (Q_shb - exp2) +16 */ - shb_res_local[i] = round_fx( L_tmp2 ); - move16(); - /* temp_numer1[i] = sub(shb_res_local[i], WN_exc_local[i]); */ - temp_numer1[i] = round_fx_sat( L_sub_sat( L_shl_sat( L_tmp2, sc2 ), L_shl_sat( L_tmp1, sc1 ) ) ); - move16(); - /* (Q_bwe_exc) */ - - /* temp_numer2[i] = sub(exc16kWhtnd[i], WN_exc_local[i]); */ - temp_numer2[i] = sub_sat( exc16kWhtnd[i], round_fx_sat( L_shl_sat( L_tmp1, sc1 ) ) ); - move16(); - /* (Q_bwe_exc) */ - } - - - length = L_FRAME16k; - move16(); - temp_p1_p2 = Dot_product( temp_numer1, temp_numer2, length ); /* 2*(Q_bwe_exc)+1 */ - temp_p1_p3 = Dot_product( temp_numer2, temp_numer2, length ); /* 2*(Q_bwe_exc)+1 */ - - /* vf_modified[i] = min( max_val( (temp_p1_p2 / temp_p1_p3), 0.1f), 0.99f); */ - /* tmp = (temp_p1_p2 / temp_p1_p3); */ - IF( temp_p1_p3 > 0 ) - { - expa = norm_l( temp_p1_p3 ); - fraca = extract_h( L_shl( temp_p1_p3, expa ) ); - expa = sub( 30, expa ); - - expb = norm_l( temp_p1_p2 ); - fracb = round_fx_o( L_shl_o( temp_p1_p2, expb, &Overflow ), &Overflow ); - expb = sub( 30, expb ); - - num_flag = 0; - move16(); - IF( fraca < 0 ) - { - num_flag = 1; - move16(); - fraca = negate( fraca ); - } - - den_flag = 0; - move16(); - IF( fracb < 0 ) - { - den_flag = 1; - move16(); - fracb = negate( fracb ); - } - - scale = shr( sub( fraca, fracb ), 15 ); - fracb = shl( fracb, scale ); - expb = sub( expb, scale ); - - tmp = div_s( fracb, fraca ); - exp1 = sub( expb, expa ); - tmp = shl_sat( tmp, exp1 ); - if ( NE_16( num_flag, den_flag ) ) - { - tmp = negate( tmp ); - } - } - ELSE - { - tmp = 0; - move16(); - } - - vf_modified[0] = s_min( s_max( tmp, 3277 /* 0.1f in Q15*/ ), 32440 /* 0.99f in Q15 */ ); - move16(); - - *vf_ind = usquant_fx( vf_modified[0], &tmp1, 4096 /* 0.125 in Q15 */, 2048 /* 0.125 in Q14 */, shl( 1, NUM_BITS_SHB_VF ) ); - move16(); - - vf_modified[0] = tmp1; - move16(); - vf_modified[1] = tmp1; - move16(); - vf_modified[2] = tmp1; - move16(); - vf_modified[3] = tmp1; - move16(); - vf_modified[4] = tmp1; - move16(); - - /* vf_modified in Q15 */ - - return; -} -#ifdef ADD_IVAS_TBE_CODE -/*-------------------------------------------------------------------* - * tbe_celp_exc() * - * * - * Prepare adaptive part of TBE excitation * - *-------------------------------------------------------------------*/ - -void tbe_celp_exc( - const int16_t element_mode, /* i : element mode */ - const int16_t idchan, /* i : channel ID */ - float *bwe_exc, /* i/o: BWE excitation */ - const int16_t L_frame, /* i : frame length */ - const int16_t L_subfr, /* i : subframe length */ - const int16_t i_subfr, /* i : subframe index */ - const int16_t T0, /* i : integer pitch lag */ - const int16_t T0_frac, /* i : fraction of lag */ - float *error, /* i/o: error */ - const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ -) -{ - int16_t i, offset; - - if ( element_mode == IVAS_CPE_TD && idchan == 1 && !tdm_LRTD_flag ) - { - return; - } - - if ( L_frame == L_FRAME ) - { - offset = tbe_celp_exc_offset( T0, T0_frac ); - - for ( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) - { - bwe_exc[i + i_subfr * HIBND_ACB_L_FAC] = bwe_exc[i + i_subfr * HIBND_ACB_L_FAC - offset + (int16_t) *error]; - } - *error += (float) offset - (float) T0 * HIBND_ACB_L_FAC - 0.25f * HIBND_ACB_L_FAC * (float) T0_frac; - } - else - { - offset = T0 * 2 + (int16_t) ( (float) T0_frac * 0.5f + 4 + 0.5f ) - 4; - for ( i = 0; i < L_subfr * 2; i++ ) - { - bwe_exc[i + i_subfr * 2] = bwe_exc[i + i_subfr * 2 - offset + (int16_t) *error]; - } - *error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac; - } - - return; -} -#endif -/*======================================================================================*/ -/* FUNCTION : prep_tbe_exc_fx() */ -/*--------------------------------------------------------------------------------------*/ -/* PURPOSE : Prepare TBE excitation */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16) L_frame_fx : length of the frame */ -/* _ (Word16) i_subfr_fx : subframe index */ -/* _ (Word16) gain_pit_fx : Pitch gain (14) */ -/* _ (Word32) gain_code_fx : algebraic codebook gain (Q(16+Q_exc)) */ -/* _ (Word16*[]) code_fx : algebraic excitation (Q9) */ -/* _ (Word16) voice_fac_fx : voicing factor (Q15) */ -/* _ (Word16) gain_preQ_fx : prequantizer excitation gain */ -/* _ (Word16[]) code_preQ_fx : prequantizer excitation */ -/*--------------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16*[]) voice_factors_fx : TBE voicing factor (Q15) */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _ (Word16[]) bwe_exc_fx : excitation for TBE (Q_exc) */ -/*--------------------------------------------------------------------------------------*/ - -/* _ None */ -/*--------------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*======================================================================================*/ - -void prep_tbe_exc_fx( - const Word16 L_frame_fx, /* i : length of the frame */ -#ifdef ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif - const Word16 i_subfr_fx, /* i : subframe index */ - const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ - const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ - const Word16 code_fx[], /* i : algebraic excitation Q9*/ - const Word16 voice_fac_fx, /* i : voicing factor Q15*/ - Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ - Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ - const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ - const Word16 code_preQ_fx[], /* i : prequantizer excitation */ - const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ - Word16 T0, /* i : integer pitch variables Q0 */ - Word16 T0_frac, /* i : Fractional pitch variables Q0*/ - const Word16 coder_type, /* i : coding type */ - Word32 core_brate -#ifdef ADD_IVAS_TBE_CODE - , /* i : core bitrate */ - const int16_t element_mode, /* i : element mode */ - const int16_t idchan, /* i : channel ID */ - const int16_t flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif -) -{ - Word16 i; - Word16 tmp_code_fx[2 * L_SUBFR * HIBND_ACB_L_FAC]; - Word16 tmp_code_preInt_fx[L_SUBFR]; - Word16 gain_code16 = 0; - move16(); - Word16 tmp /*, tmp1, tmp2*/; - /*Word16 random_code[L_SUBFR * HIBND_ACB_L_FAC];*/ - Word16 pitch; - - Word32 L_tmp, Ltemp1, Ltemp2; - Word32 tempQ31; - Word16 tempQ15; -#ifndef ADD_IVAS_TBE_CODE - Word16 L_subfr = L_SUBFR; - move16(); -#endif -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - /**voice_factors = VF_0th_PARAM + VF_1st_PARAM * voice_fac + VF_2nd_PARAM * voice_fac * voice_fac; - = VF_0th_PARAM + voice_fac * (VF_1st_PARAM + VF_2nd_PARAM * voice_fac ) - *voice_factors = min( max_val(0.0f, *voice_factors), 1.0f); */ - tempQ31 = L_deposit_h( VF_1st_PARAM_FX ); - tempQ15 = mac_r( tempQ31, VF_2nd_PARAM_FX, voice_fac_fx ); - tempQ31 = L_deposit_h( VF_0th_PARAM_FX ); - *voice_factors_fx = mac_r( tempQ31, voice_fac_fx, tempQ15 ); - move16(); - tmp = MAX_16; - move16(); - - pitch = shl_o( add( shl_o( T0, 2, &Overflow ), T0_frac ), 5, &Overflow ); /* Q7 */ - - test(); - test(); - IF( ( ( EQ_16( coder_type, VOICED ) ) || ( GT_16( pitch, 14784 /* 115.5 in Q7 */ ) ) ) && ( GT_32( core_brate, ACELP_8k00 ) ) ) - { - tmp = MAX_16; - move16(); - *voice_factors_fx = mult_r( *voice_factors_fx, tmp ); - move16(); - } - - *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); - move16(); -#ifdef ADD_IVAS_TBE_CODE - IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) - { - IF( flag_TD_BWE && i_subfr == 0 ) - { - set16_fx( bwe_exc, 0, L_FRAME32k ); - } - return; - } - -#endif - IF( EQ_16( L_frame_fx, L_FRAME ) ) - { - interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ - gain_code16 = round_fx_o( L_shl_o( gain_code_fx, Q_exc, &Overflow ), &Overflow ); /*Q_exc */ - FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) - { - L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/ - L_tmp = L_shl_sat( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/ - L_tmp = L_mac_sat( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] ); /*Q15+Q_exc */ - L_tmp = L_shl_o( L_tmp, 1, &Overflow ); /*16+Q_exc */ /* saturation can occur here */ - bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_o( L_tmp, &Overflow ); /*Q_exc */ - move16(); - } - } - ELSE - { - IF( gain_preQ_fx != 0 ) - { - FOR( i = 0; i < L_subfr; i++ ) - { - /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ - Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ - Ltemp2 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /*Q2 * Q10 -> Q12 */ - - Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ - Ltemp2 = L_shl_o( Ltemp2, add( Q_exc, 4 ) /*Q_exc+16-13*/, &Overflow ); /*Q_exc+16 */ - - tmp_code_preInt_fx[i] = round_fx_o( L_add_o( Ltemp1, Ltemp2, &Overflow ), &Overflow ); /* Q_exc */ - move16(); - } - } - ELSE - { - FOR( i = 0; i < L_subfr; i++ ) - { - /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ - Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ - Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ - tmp_code_preInt_fx[i] = round_fx_o( Ltemp1, &Overflow ); /* Q_exc */ - move16(); - } - } - - interp_code_4over2_fx( tmp_code_preInt_fx, tmp_code_fx, L_subfr ); /* o: tmp_code in Q_exc */ - FOR( i = 0; i < L_subfr * 2; i++ ) - { - L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * 2] ); /*Q14+Q_exc+1 */ - tmp = round_fx_o( L_shl_o( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/, &Overflow ), &Overflow ); /* tmp in Q_exc */ - bwe_exc_fx[i + i_subfr_fx * 2] = add_o( tmp, tmp_code_fx[i], &Overflow ); /*Q_exc */ - move16(); - } - } - - return; -} - -/*======================================================================================*/ -/* FUNCTION : prep_tbe_exc_ivas_fx() */ -/*--------------------------------------------------------------------------------------*/ -/* PURPOSE : Prepare TBE excitation */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16) L_frame_fx : length of the frame */ -/* _ (Word16) i_subfr_fx : subframe index */ -/* _ (Word16) gain_pit_fx : Pitch gain (14) */ -/* _ (Word32) gain_code_fx : algebraic codebook gain (Q(16+Q_exc)) */ -/* _ (Word16*[]) code_fx : algebraic excitation (Q9) */ -/* _ (Word16) voice_fac_fx : voicing factor (Q15) */ -/* _ (Word16) gain_preQ_fx : prequantizer excitation gain */ -/* _ (Word16[]) code_preQ_fx : prequantizer excitation */ -/*--------------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16*[]) voice_factors_fx : TBE voicing factor (Q15) */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _ (Word16[]) bwe_exc_fx : excitation for TBE (Q_exc) */ -/*--------------------------------------------------------------------------------------*/ - -/* _ None */ -/*--------------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*======================================================================================*/ - -void prep_tbe_exc_ivas_fx( - const Word16 L_frame_fx, /* i : length of the frame */ -#if 1 // def ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif - const Word16 i_subfr_fx, /* i : subframe index */ - const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ - const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ - const Word16 code_fx[], /* i : algebraic excitation Q9*/ - const Word16 voice_fac_fx, /* i : voicing factor Q15*/ - Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ - Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ - const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ - const Word16 code_preQ_fx[], /* i : prequantizer excitation */ - const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ - Word16 T0, /* i : integer pitch variables Q0 */ - Word16 T0_frac, /* i : Fractional pitch variables Q0*/ - const Word16 coder_type, /* i : coding type */ - Word32 core_brate -#if 1 // def ADD_IVAS_TBE_CODE - , /* i : core bitrate */ - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif -) -{ - Word16 i; - Word16 tmp_code_fx[2 * L_SUBFR * HIBND_ACB_L_FAC]; - Word16 tmp_code_preInt_fx[L_SUBFR]; - Word16 gain_code16 = 0; - move16(); - Word16 tmp /*, tmp1, tmp2*/; - /*Word16 random_code[L_SUBFR * HIBND_ACB_L_FAC];*/ - Word16 pitch; - - Word32 L_tmp, Ltemp1, Ltemp2; - Word32 tempQ31; - Word16 tempQ15; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - /**voice_factors = VF_0th_PARAM + VF_1st_PARAM * voice_fac + VF_2nd_PARAM * voice_fac * voice_fac; - = VF_0th_PARAM + voice_fac * (VF_1st_PARAM + VF_2nd_PARAM * voice_fac ) - *voice_factors = min( max_val(0.0f, *voice_factors), 1.0f); */ - tempQ31 = L_deposit_h( VF_1st_PARAM_FX ); - tempQ15 = mac_r( tempQ31, VF_2nd_PARAM_FX, voice_fac_fx ); - tempQ31 = L_deposit_h( VF_0th_PARAM_FX ); - *voice_factors_fx = mac_r( tempQ31, voice_fac_fx, tempQ15 ); - move16(); - - tmp = MAX_16; - move16(); - - pitch = shl_o( add( shl_o( T0, 2, &Overflow ), T0_frac ), 5, &Overflow ); /* Q7 */ - - test(); - test(); - IF( ( ( EQ_16( coder_type, VOICED ) ) || ( GT_16( pitch, 14784 ) ) ) && ( GT_32( core_brate, ACELP_8k00 ) ) ) - { - tmp = MAX_16; - move16(); - *voice_factors_fx = mult_r( *voice_factors_fx, tmp ); - move16(); - } - - *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); - move16(); -#if 1 // def ADD_IVAS_TBE_CODE - test(); - test(); - IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) - { - test(); - IF( flag_TD_BWE && i_subfr_fx == 0 ) - { - set16_fx( bwe_exc_fx, 0, L_FRAME32k ); - } - return; - } - -#endif - IF( EQ_16( L_frame_fx, L_FRAME ) ) - { - interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ - gain_code16 = round_fx_o( L_shl_o( gain_code_fx, Q_exc, &Overflow ), &Overflow ); /*Q_exc */ - FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) - { - L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/ - L_tmp = L_shl( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/ - L_tmp = L_mac_o( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC], &Overflow ); /*Q15+Q_exc */ - L_tmp = L_shl_o( L_tmp, 1, &Overflow ); /*16+Q_exc */ /* saturation can occur here */ - bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_o( L_tmp, &Overflow ); /*Q_exc */ - move16(); - } - } - ELSE - { - Word16 shift = 4; - move16(); - IF( gain_preQ_fx != 0 ) - { - FOR( i = 0; i < L_subfr; i++ ) - { - /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ - Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ - Ltemp2 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /*Q2 * Q10 -> Q12 */ - - Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ - Ltemp2 = L_shl_o( Ltemp2, add( Q_exc, shift ) /*Q_exc+ 2 + 6 (or) 10 - 13*/, &Overflow ); /*Q_exc+16 */ - - tmp_code_preInt_fx[i] = round_fx_o( L_add_o( Ltemp1, Ltemp2, &Overflow ), &Overflow ); /* Q_exc */ - move16(); - } - } - ELSE - { - FOR( i = 0; i < L_subfr; i++ ) - { - /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ - Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ - Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ - tmp_code_preInt_fx[i] = round_fx_o( Ltemp1, &Overflow ); /* Q_exc */ - move16(); - } - } - - interp_code_4over2_fx( tmp_code_preInt_fx, tmp_code_fx, L_subfr ); /* o: tmp_code in Q_exc */ - FOR( i = 0; i < shl( L_subfr, 1 ); i++ ) - { - L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + shl( i_subfr_fx, 1 )] ); /*Q14+Q_exc+1 */ - tmp = round_fx_o( L_shl_o( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/, &Overflow ), &Overflow ); /* tmp in Q_exc */ - bwe_exc_fx[i + shl( i_subfr_fx, 1 )] = add_o( tmp, tmp_code_fx[i], &Overflow ); /*Q_exc */ - move16(); - } - } - - return; -} - -/*=============================================================================*/ -/* FUNCTION : void swb_formant_fac_fx ( ) */ -/*------------------------------------------------------------------------------*/ -/* PURPOSE : * Find strength of adaptive formant postfilter using tilt */ -/* of the high band. The 2nd lpc coefficient is used as a tilt approximation. */ -/*------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* const Word16 lpc_shb2 : 2nd HB LPC coefficient Q12 */ -/*------------------------------------------------------------------------------*/ -/*INPUT/OUTPUT ARGUMENTS : */ -/* Word16 *tilt_mem Q12 */ -/* OUTPUT ARGUMENTS : */ -/*------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* formant_fac :Formant filter strength [0,1] Q15 */ -/*------------------------------------------------------------------------------*/ -/* CALLED FROM : */ -/*==============================================================================*/ - -Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */ - const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */ - Word16 *tilt_mem /* i/o: Tilt smoothing memory (Q12) */ -) -{ - Word16 formant_fac; - Word16 tmp; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; -#endif - - /* Smoothen tilt value */ - /* tmp = 0.5f * (float)fabs(lpc_shb2) + 0.5f * *tilt_mem; */ - tmp = mult_r( 16384, abs_s( lpc_shb2 ) ); - tmp = add( tmp, mult_r( 16384, *tilt_mem ) ); /* Q12 */ - *tilt_mem = tmp; - move16(); /*Q12 */ - /* Map to PF strength */ - /* formant_fac = (tmp - SWB_TILT_LOW)*SWB_TILT_DELTA; */ - tmp = sub( tmp, SWB_TILT_LOW_FX ); /* Q12 */ - formant_fac = mult_r( tmp, SWB_TILT_DELTA_FX ); /* Q12 */ - - - IF( GT_16( formant_fac, 4096 /* 1 in Q12 */ ) ) - { - formant_fac = 4096; /* 1 in Q12 */ - move16(); - } - ELSE IF( formant_fac < 0 ) - { - formant_fac = 0; - move16(); - } - /* now formant_fac in Q12 */ - - /* formant_fac = 1.0f - 0.5f*formant_fac */ - tmp = mult_r( 16384, formant_fac ); /* 0.5 in Q15 */ - formant_fac = shl_o( sub( 4096 /* 1 in Q12 */, tmp ), 3, &Overflow ); - return formant_fac; /*Q15 */ -} - - -void wb_tbe_extras_reset_fx( - Word16 mem_genSHBexc_filt_down_wb2[], - Word16 mem_genSHBexc_filt_down_wb3[] ) -{ - set16_fx( mem_genSHBexc_filt_down_wb2, 0, 2 * ALLPASSSECTIONS_STEEP + 1 ); - set16_fx( mem_genSHBexc_filt_down_wb3, 0, 2 * ALLPASSSECTIONS_STEEP + 1 ); - - return; -} - -/*-------------------------------------------------------------------* - * get_tbe_bits() * - * * - * Determine TBE bit consumption per frame from bitrate * - *-------------------------------------------------------------------*/ - - -Word16 get_tbe_bits_fx( - const Word32 total_brate, /* o : TBE bit consumption per frame */ - const Word16 bwidth, /* i : overall bitrate */ - const Word16 rf_mode /* i : bandwidht mode */ -) -{ - Word16 i, bits = 0; - - IF( EQ_16( rf_mode, 1 ) ) - { - /* TBE bits for core, primary frame */ - test(); - test(); - IF( ( EQ_16( bwidth, WB ) ) && ( EQ_32( total_brate, ACELP_13k20 ) ) ) - { - /* Gain frame: 4, Gain shapes: 0, and LSFs: 2 */ - bits = NUM_BITS_SHB_FrameGain_LBR_WB + NUM_BITS_LBR_WB_LSF; - move16(); - } - ELSE IF( ( EQ_16( bwidth, SWB ) ) && ( EQ_32( total_brate, ACELP_13k20 ) ) ) - { - /* Gain frame: 5, Gain shapes: 5, and lowrate LSFs: 8 */ - bits = NUM_BITS_SHB_FRAMEGAIN + NUM_BITS_SHB_SUBGAINS + 8; - move16(); - } - } - ELSE - { - test(); - test(); - IF( ( EQ_16( bwidth, WB ) ) && ( EQ_32( total_brate, ACELP_9k60 ) ) ) - { - bits = NUM_BITS_LBR_WB_LSF + NUM_BITS_SHB_FrameGain_LBR_WB; - move16(); - } - ELSE IF( ( EQ_16( bwidth, SWB ) ) || ( EQ_16( bwidth, FB ) ) ) - { - test(); - IF( EQ_32( total_brate, ACELP_9k60 ) ) - { - bits = NUM_BITS_SHB_FRAMEGAIN + NUM_BITS_SHB_SUBGAINS + 8; - move16(); - } - ELSE IF( ( GE_32( total_brate, ACELP_13k20 ) ) && ( LE_32( total_brate, ACELP_32k ) ) ) - { - bits = NUM_BITS_SHB_SUBGAINS + NUM_BITS_SHB_FRAMEGAIN + NUM_LSF_GRID_BITS + MIRROR_POINT_BITS; - move16(); - - FOR( i = 0; i < NUM_Q_LSF; i++ ) - { - bits = add( bits, lsf_q_num_bits[i] ); - } - } - - if ( GE_32( total_brate, ACELP_24k40 ) ) - { - bits = add( bits, NUM_BITS_SHB_ENER_SF + NUM_BITS_SHB_VF + NUM_BITS_SHB_RES_GS * NB_SUBFR16k ); - } - - test(); - test(); - if ( EQ_16( bwidth, SWB ) && ( EQ_32( total_brate, ACELP_16k40 ) || EQ_32( total_brate, ACELP_24k40 ) ) ) - { - bits = add( bits, BITS_TEC + BITS_TFA ); - } - - if ( EQ_16( bwidth, FB ) ) - { - /* full band slope */ - bits = add( bits, 4 ); - } - } - } - - return bits; -} -- GitLab From 0f4c1288bb56e06eb5c67e125586e3aaa8d8cbcb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 11:18:17 +0200 Subject: [PATCH 328/698] deactivate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW to test old bpf --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3ec71d78b..d235b80b9 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -95,7 +95,7 @@ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ -- GitLab From c445baf9df47a0e5cfeb4adcd429b8f6ad3e63ac Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 11:42:26 +0200 Subject: [PATCH 329/698] deactivate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index d235b80b9..430b8f22c 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -94,7 +94,7 @@ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ -- GitLab From 3a53d1a355f2e308b3b9eeb9ed81cd5eaf4f7bd9 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 11:50:50 +0200 Subject: [PATCH 330/698] fix conflict --- lib_com/options.h | 104 +--------------------------------------------- 1 file changed, 2 insertions(+), 102 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 550edc5dd..44033b962 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -1,4 +1,3 @@ -<<<<<<< HEAD /****************************************************************************************************** (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, @@ -73,11 +72,6 @@ #define FIX_1378_ACELP_OUT_OF_BOUNDS /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ - -#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ -#define MERGE_REQ - - //#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ #define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ #define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ @@ -90,10 +84,8 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ -#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ + +#define TEST_HR //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ @@ -101,97 +93,5 @@ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 - -#endif -======= -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#ifndef OPTIONS_H -#define OPTIONS_H - -/* clang-format off */ - -/* ################### Start DEBUGGING switches ######################## */ - -/*#define DEBUGGING*/ /* Allows debugging message to be printed out during runtime */ -#ifdef DEBUGGING -#define DEBUG_MODE_INFO /* Define to output most important parameters to the subdirectory "res/" */ -#define DEBUG_MODE_INFO_TWEAK /* Enable command line switch to specify subdirectory for debug info output inside "./res/" */ -#define DEBUG_FORCE_MDCT_STEREO_MODE /* Force stereo mode decision for MDCT stereo: -stereo 3 1 forces L/R coding and -stereo 3 2 forces full M/S coding */ -/*#define DEBUG_FORCE_DIR*/ /* Force modes/parameters by reading from external binary files */ -/*#define DBG_WAV_WRITER*/ /* Enable dbgwrite_wav() function for generating ".wav" files */ -#define SUPPORT_FORCE_TCX10_TCX20 /* VA: Enable -force tcx10|tcx20 command-line option */ -#endif - -#define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ - -/*#define WMOPS*/ /* Activate complexity and memory counters */ -#ifdef WMOPS -/*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ -/*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ -/*#define WMOPS_WC_FRAME_ANALYSIS*/ /* Output detailed complexity analysis for the worst-case frame */ -/*#define MEM_COUNT_DETAILS*/ /* Output detailed memory analysis for the worst-case frame (writes to the file "mem_analysis.csv") */ -#endif - -/* #################### End DEBUGGING switches ############################ */ - -#ifndef BASOP_NOGLOB_DEV_USE_GLOBALS -#define BASOP_NOGLOB_DECLARE_LOCAL #endif -#define FIX_867_CLDFB_NRG_SCALE - -#define FIX_1378_ACELP_OUT_OF_BOUNDS - -/* Note: each compile switch (FIX_1101_...) is independent from the other ones */ -//#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ -#define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ -#define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ -#define FIX_1310_SPEEDUP_ivas_dirac_dec_output_synthesis_process_slot /*FhG: WMOPS tuning, nonbe*/ -/* Both following 2 macros (IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST*) are independent from each other, they refer to different code blocks */ -#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */ -//#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version. Obsoleted by MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */ -#define HARM_PUSH_BIT -#define HARM_ENC_INIT -//#define HARM_SCE_INIT -#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ -#define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ - -#define TEST_HR - -#endif ->>>>>>> main -- GitLab From ba3a2b47c50e49ca420a2cc663b771826a3b89dc Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 11:56:28 +0200 Subject: [PATCH 331/698] delete func1 code --- lib_com/options.h | 1 - lib_com/swb_tbe_com_fx.c | 187 --------------------------------------- 2 files changed, 188 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 44033b962..11cb842d2 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -92,6 +92,5 @@ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index e6d579269..41c06b920 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6687,181 +6687,6 @@ void wb_tbe_extras_reset_synth_fx( return; } -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 -inline static void elliptic_bpf_48k_generic_func1( Word32 *input_fx, Word32 *L_tmp, const Word16 full_band_bpf_fx[][5], Word16 IsUpsampled3, Word32 *L_tmpMax ) -{ - Word32 L_tmpX; - Word16 i; - Word32 L_tmpMax2 = *L_tmpMax; - Word32 L_tmpAbs; - move32(); - IF( !IsUpsampled3 ) - { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#else - FOR( i = 0; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - } -#endif - } /*IsUpsampled3*/ - ELSE - { /*IsUpsampled3*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#else - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - if ( L_tmpMax > 0 ) - { - L_tmpAbs = L_abs( L_tmp[i] ); - } - if ( L_tmpMax > 0 ) - { - L_tmpMax2 = L_max( L_tmpMax2, L_tmpAbs ); - } - i++; - } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ - *L_tmpMax = L_tmpMax2; - move32(); -} -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ - /*-------------------------------------------------------------------* * elliptic_bpf_48k_generic() * @@ -6926,9 +6751,6 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( input_fx, L_tmp, &full_band_bpf_fx[0], IsUpsampled3, 0 ); -#else IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -7028,7 +6850,6 @@ void elliptic_bpf_48k_generic_fx( } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ } /*IsUpsampled3*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7103,9 +6924,6 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( L_tmp, L_tmp2, &full_band_bpf_fx[1], 0, &L_tmpMax ); -#else #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7138,7 +6956,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7224,9 +7041,6 @@ void elliptic_bpf_48k_generic_fx( } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1 /*use subfunc*/ - elliptic_bpf_48k_generic_func1( L_tmp2, L_output, &full_band_bpf_fx[2], 0, &L_tmpMax ); -#else #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7262,7 +7076,6 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_func1*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From f4f3bcaabe330cff75073d30cbff5880788c8565 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 12:17:00 +0200 Subject: [PATCH 332/698] change else path in FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic to old code, delete FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW and change to FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - deactivate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic --- lib_com/options.h | 1 - lib_com/prot_fx.h | 6 +- lib_com/swb_tbe_com_fx.c | 412 +++++++-------------------------------- lib_enc/swb_tbe_enc_fx.c | 12 +- 4 files changed, 77 insertions(+), 354 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 11cb842d2..e01818a87 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -88,7 +88,6 @@ #define TEST_HR //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW /*activates new, spaghetticode version of elliptic_bpf_48k_generic. if inactive, only old code with no opts is active*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 07ef34533..33ac952cc 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3264,17 +3264,13 @@ void interp_code_4over2_fx( void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_lsyn_filt_dwn_shb[], Word16 state_32and48k_WB_upsample[], Word16 state_resamp_HB[] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word16 isIVAS, #endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ -#else - const Word16 input_fx[], /* i : input signal Q_input_fx*/ -#endif Word16 *Q_input_fx, Word16 output_fx[], /* o : output signal */ Word32 memory_fx[][4], /* i/o: 4 arrays of 4 for memory memory_fx_Q */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 41c06b920..010ca2e99 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6693,7 +6693,7 @@ void wb_tbe_extras_reset_synth_fx( * 18th-order elliptic bandpass filter at 14.0 to 20 kHz sampled at 48 kHz * Implemented as 3 fourth order sections cascaded. *-------------------------------------------------------------------*/ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW + void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 Word16 isIVAS, @@ -6735,10 +6735,6 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic memory_fx0 = extract_l( memory_fx2[0][i] ); input_fx[i - 4] = shl_sat( memory_fx0, sub( *Q_input_fx, memory_fx_Q[0] ) ); -#else - memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); - memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); -#endif L_tmp[i - 4] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); L_tmp2[i - 4] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); // memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); @@ -6747,6 +6743,19 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); +#else + memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); + memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); + memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); + memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); + memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + move32(); + move32(); +#endif + } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic @@ -6852,51 +6861,48 @@ void elliptic_bpf_48k_generic_fx( } /*IsUpsampled3*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[3 - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ move32(); - - FOR( i = 4; i < L_FRAME48k; i++ ) { L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -7001,19 +7007,19 @@ void elliptic_bpf_48k_generic_fx( L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } #endif @@ -7031,6 +7037,7 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); move32(); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic FOR( j = 0; j < 4; j++ ) { L_tmp2[j - 4] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); @@ -7039,6 +7046,16 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); } +#else + FOR( j = 0; j < 4; j++ ) + { + memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); + memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); + move32(); + move32(); + move32(); + } +#endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -7183,285 +7200,6 @@ void elliptic_bpf_48k_generic_fx( return; } - -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW*/ -void elliptic_bpf_48k_generic_fx( - const Word16 input_fx[], /* i : input signal Q_input_fx*/ - Word16 *Q_input_fx, - Word16 output_fx[], /* o : output signal memory_fx_Q */ - Word32 memory_fx2[][4], /* i/o: 4 arrays of 4 for memory */ - Word16 memory_fx_Q[], - const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ -) -{ - Word16 i, j; - Word16 memory_fx0[4][4], memory_fx[4][4], Q_temp, Q_temp2; - Word32 L_tmp[L_FRAME48k], L_tmp2[L_FRAME48k], L_output[L_FRAME48k], L_tmpX, memory2_fx[4][4], L_tmpMax; - Word32 memory2_fx_2[4], memory2_fx_3[4]; - - FOR( i = 0; i < 4; i++ ) - { - memory_fx0[0][i] = extract_l( memory_fx2[0][i] ); - memory_fx[0][i] = shl_sat( memory_fx0[0][i], sub( *Q_input_fx, memory_fx_Q[0] ) ); - memory2_fx[1][i] = L_shl_sat( memory_fx2[1][i], sub( add( *Q_input_fx, 11 ), memory_fx_Q[1] ) ); - memory2_fx[2][i] = L_shl_sat( memory_fx2[2][i], sub( add( *Q_input_fx, 6 ), memory_fx_Q[2] ) ); - memory2_fx[3][i] = L_shl_sat( memory_fx2[3][i], sub( add( *Q_input_fx, 1 ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - move32(); - move32(); - } - - L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][1], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - - L_tmpX = L_shr( L_mult( memory_fx[0][2], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - L_tmpX = L_shr( L_mult( memory_fx[0][3], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[0], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[1], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[2], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add( L_shr( L_mult( input_fx[3], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[2], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[1], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[0], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - } - - memory_fx2[0][0] = input_fx[L_FRAME48k - 4]; - memory_fx2[0][1] = input_fx[L_FRAME48k - 3]; - memory_fx2[0][2] = input_fx[L_FRAME48k - 2]; - memory_fx2[0][3] = input_fx[L_FRAME48k - 1]; - move32(); - move32(); - move32(); - move32(); - move32(); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - L_tmp2[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][0], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2*/ - move32(); - L_tmpMax = L_abs( L_tmp2[0] ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][1], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[1] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][2], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[2] ) ); - L_tmpX = L_shr( Mult_32_16( memory2_fx[1][3], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[0], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[1], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[2], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add( L_shr( Mult_32_16( L_tmp[3], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[2], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[1], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[0], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmp2[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx[2][3], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ /*14 + Q_input_fx - shift_flag*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[3] ) ); - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); - } - - Q_temp = norm_l( L_tmpMax ); - Q_temp = sub( Q_temp, 4 ); - Scale_sig32( L_tmp2, 960, Q_temp ); - - memory_fx2[1][0] = L_tmp[L_FRAME48k - 4]; - memory_fx2[1][1] = L_tmp[L_FRAME48k - 3]; - memory_fx2[1][2] = L_tmp[L_FRAME48k - 2]; - memory_fx2[1][3] = L_tmp[L_FRAME48k - 1]; - move32(); - move32(); - move32(); - move32(); - move32(); - FOR( j = 0; j < 4; j++ ) - { - memory2_fx_2[j] = L_shl_sat( memory_fx2[2][j], sub( add( add( *Q_input_fx, 6 ), Q_temp ), memory_fx_Q[2] ) ); - memory2_fx_3[j] = L_shl_sat( memory_fx2[3][j], sub( add( add( *Q_input_fx, 1 ), Q_temp ), memory_fx_Q[3] ) ); - move32(); - move32(); - move32(); - } - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - L_output[0] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[0], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2 */ - move32(); - L_tmpMax = L_abs( L_output[0] ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx+Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - L_output[1] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[1], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +13 -15 + 2+Q_temp*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[1] ) ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp+ 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx +Q_temp + 6 +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1+Q_temp +13 -15 + 2*/ - L_output[2] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[2], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[2] ) ); - - L_tmpX = L_shr( Mult_32_16( memory2_fx_2[3], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp +13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[0], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[1], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[2], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[3], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[2], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[1], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[0], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_output[3] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( memory2_fx_3[3], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[3] ) ); - - FOR( i = 4; i < L_FRAME48k; i++ ) - { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); - } - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; - memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; - memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; - memory_fx2[2][3] = L_tmp2[L_FRAME48k - 1]; - memory_fx2[3][0] = L_output[L_FRAME48k - 4]; - memory_fx2[3][1] = L_output[L_FRAME48k - 3]; - memory_fx2[3][2] = L_output[L_FRAME48k - 2]; - memory_fx2[3][3] = L_output[L_FRAME48k - 1]; - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - move32(); - memory_fx_Q[0] = *Q_input_fx; - memory_fx_Q[1] = add( *Q_input_fx, 11 ); - memory_fx_Q[2] = add( add( *Q_input_fx, 6 ), Q_temp ); - memory_fx_Q[3] = add( add( *Q_input_fx, 1 ), Q_temp ); - move16(); - move16(); - move16(); - move16(); - Q_temp2 = norm_l( L_tmpMax ); - Scale_sig32( L_output, 960, Q_temp2 ); - FOR( i = 0; i < 960; i++ ) - { - output_fx[i] = extract_h( L_output[i] ); - move16(); - } - *Q_input_fx = sub( add( add( *Q_input_fx, Q_temp ), Q_temp2 ), 15 ); - move16(); /* BASOP_NOGLOB */ - - return; -} -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW*/ - /*-------------------------------------------------------------------* * synthesise_fb_high_band() * @@ -7526,14 +7264,12 @@ void synthesise_fb_high_band_fx( IF( EQ_16( L_frame, L_FRAME16k ) ) { /* for 16kHz ACELP core */ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS #endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 -#endif excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx ); @@ -7544,14 +7280,12 @@ void synthesise_fb_high_band_fx( ELSE { /* for 12.8kHz ACELP core */ -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS #endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 1, // IsUpsampled3 -#endif excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); #else elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 648387bbf..7ad3b2013 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7330,7 +7330,7 @@ void fb_tbe_enc_fx( Copy_Scale_sig( new_input, input_fhb, L_FRAME48k, exp_temp ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS @@ -7339,9 +7339,7 @@ void fb_tbe_enc_fx( 0, // isIVAS #endif #endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -#endif input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else elliptic_bpf_48k_generic_fx( input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7474,14 +7472,12 @@ void fb_tbe_enc_ivas_fx( IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS #endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -#endif input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7489,14 +7485,12 @@ void fb_tbe_enc_ivas_fx( } ELSE { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_ACTIVATENEW +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 1, // isIVAS #endif -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic 0, // IsUpsampled3 -#endif input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else elliptic_bpf_48k_generic_fx( input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -- GitLab From 44d3497339a6203e470bfde23dc795b14f8f6705 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 12:22:42 +0200 Subject: [PATCH 333/698] clang patch --- lib_com/swb_tbe_com_fx.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 010ca2e99..537881fd1 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6755,7 +6755,6 @@ void elliptic_bpf_48k_generic_fx( move32(); move32(); #endif - } #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic @@ -6793,7 +6792,7 @@ void elliptic_bpf_48k_generic_fx( move32(); } #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ + } /*IsUpsampled3*/ ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 @@ -6858,7 +6857,7 @@ void elliptic_bpf_48k_generic_fx( i++; } #endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ + } /*IsUpsampled3*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ -- GitLab From 69d2069538046b46e9fa43c536d3c4697230e206 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 12:43:21 +0200 Subject: [PATCH 334/698] activate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index e01818a87..ec61fece6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -87,7 +87,7 @@ #define TEST_HR -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ -- GitLab From 2700c956fbad0ad46d7e3f2fb5e471d2fd92f912 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Tue, 15 Apr 2025 12:36:27 +0530 Subject: [PATCH 335/698] Fixes for crashes observed on LTV pipeline --- lib_enc/igf_enc.c | 8 +-- lib_enc/igf_enc_fx.c | 97 +++++++++++++++++++++++++++++++ lib_enc/prot_fx_enc.h | 7 +++ lib_enc/speech_music_classif_fx.c | 19 +++++- 4 files changed, 125 insertions(+), 6 deletions(-) diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c index bfb4a7423..9769d83b6 100644 --- a/lib_enc/igf_enc.c +++ b/lib_enc/igf_enc.c @@ -1171,13 +1171,13 @@ static void IGF_CalculateStereoEnvelope_fx( move16(); // tmp_tb = IGF_getSFM_ivas(pPowerSpectrum, swb_offset[sfb], swb_offset[sfb + 1]) / IGF_getCrest_ivas(pPowerSpectrum, swb_offset[sfb], swb_offset[sfb + 1]); - sfm = IGF_getSFM( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, swb_offset[sfb], swb_offset[sfb + 1] ); + sfm = IGF_getSFM_ivas_fx( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, swb_offset[sfb], swb_offset[sfb + 1] ); crest = IGF_getCrest( &crest_exp, pPowerSpectrum_fx, pPowerSpectrum_e, swb_offset[sfb], swb_offset[sfb + 1] ); tmp_tb_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &tmp_e ); tmp_tb_e = add( tmp_e, sub( sfm_exp, crest_exp ) ); /*stores the resultant exponent for tmp_tb_fx*/ // tmp_sb = IGF_getSFM_ivas(tileSrcSpec, 0, strt_cpy - tmp) / IGF_getCrest_ivas(tileSrcSpec, 0, strt_cpy - tmp); - sfm = IGF_getSFM( &sfm_exp, tileSrcSpec_fx, &tileSrcSpec_e, 0, sub( strt_cpy, tmp ) ); + sfm = IGF_getSFM_ivas_fx( &sfm_exp, tileSrcSpec_fx, &tileSrcSpec_e, 0, sub( strt_cpy, tmp ) ); crest = IGF_getCrest( &crest_exp, tileSrcSpec_fx, tileSrcSpec_e, 0, sub( strt_cpy, tmp ) ); tmp_sb_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &tmp_e ); tmp_sb_e = add( tmp_e, sub( sfm_exp, crest_exp ) ); /*stores the resultant exponent for tmp_sb_fx*/ @@ -1322,7 +1322,7 @@ static void IGF_CalculateStereoEnvelope_fx( { Word16 shift = shr( width, 1 ); // shiftedSFM = IGF_getSFM_ivas( pPowerSpectrum, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift ) / IGF_getCrest_ivas( pPowerSpectrum, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift ); - sfm = IGF_getSFM( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, sub( swb_offset[sfb], shift ), sub( swb_offset[sfb + 1], shift ) ); + sfm = IGF_getSFM_ivas_fx( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, sub( swb_offset[sfb], shift ), sub( swb_offset[sfb + 1], shift ) ); crest = IGF_getCrest( &crest_exp, pPowerSpectrum_fx, pPowerSpectrum_e, sub( swb_offset[sfb], shift ), sub( swb_offset[sfb + 1], shift ) ); shiftedSFM_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &shiftedSFM_e ); } @@ -1331,7 +1331,7 @@ static void IGF_CalculateStereoEnvelope_fx( Word16 shift; shift = shr( width, 1 ); // shiftedSFM = IGF_getSFM_ivas( pPowerSpectrum, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift ) / IGF_getCrest_ivas( pPowerSpectrum, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift ); - sfm = IGF_getSFM( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, add( swb_offset[sfb], shift ), add( swb_offset[sfb + 1], shift ) ); + sfm = IGF_getSFM_ivas_fx( &sfm_exp, pPowerSpectrum_fx, &pPowerSpectrum_e, add( swb_offset[sfb], shift ), add( swb_offset[sfb + 1], shift ) ); crest = IGF_getCrest( &crest_exp, pPowerSpectrum_fx, pPowerSpectrum_e, add( swb_offset[sfb], shift ), add( swb_offset[sfb + 1], shift ) ); shiftedSFM_fx = BASOP_Util_Divide1616_Scale( sfm, crest, &shiftedSFM_e ); } diff --git a/lib_enc/igf_enc_fx.c b/lib_enc/igf_enc_fx.c index f508b313f..f78ad2025 100644 --- a/lib_enc/igf_enc_fx.c +++ b/lib_enc/igf_enc_fx.c @@ -895,6 +895,103 @@ Word16 IGF_getSFM( /**< out: Q15| SFM value return SFM /*Q15*/; } +/************************************************************************* +calculates spectral flatness measurment +**************************************************************************/ +Word16 IGF_getSFM_ivas_fx( /**< out: Q15| SFM value */ + Word16 *SFM_exp, /**< out: | exponent of SFM Factor */ + const Word32 *energy, /**< in: Q31| energies */ + const Word16 *energy_exp, /**< in: | exponent of energies */ + const Word16 start, /**< in: Q0 | start subband index */ + const Word16 stop /**< in: Q0 | stop subband index */ +) +{ + Word16 n, i, s; + Word32 num; + Word32 denom; + Word16 denom_exp; + Word16 invDenom_exp, numf_exp; + Word16 numf; + Word32 SFM32; + Word16 invDenom, SFM; + + num = 0; + move32(); + denom = 65536; // 1.f in Q16 + denom_exp = 15; + *SFM_exp = 0; + move16(); + SFM = 32767 /*1.0f Q15*/; + move16(); + + FOR( i = start; i < stop; i++ ) + { + /*ln(x * 2^-Qx * 2^xExp) = ln(x) - Qx + xExp*/ + + /* n = sub(sub(31,norm_l(tmp32)),1); */ /*<- ld */ + /* n = sub(n,31); */ /*<- -Qx */ + /* n = add(n,*energy_exp); */ /*<- +xExp */ + + n = sub( sub( *energy_exp, norm_l( energy[i] ) ), 1 ); /*<-- short form*/ + + if ( energy[i] == 0 ) /*special case: energy is zero*/ + { + n = 0; + move16(); + } + + n = s_max( 0, n ); + num = L_add( num, L_deposit_l( n ) ); /*Q0*/ + + denom = BASOP_Util_Add_Mant32Exp( energy[i], *energy_exp, denom, denom_exp, &denom_exp ); + } + + /* calculate SFM only if signal is present */ + IF( denom != 0 ) + { + /*numf = (float)num / (float)(stop - start);*/ + numf = BASOP_Util_Divide3216_Scale( num, /*Q0*/ + sub( stop, start ), /*Q0*/ + &s ); /*Q-1 s*/ + numf_exp = add( s, 16 ); /*-> numf Q15 numf_exp*/ + /*denom /= (float)(stop - start);*/ + /*return ((float)pow(2.0, numf + 0.5f) / denom);*/ + + /*SFM= ((float)pow(2.0, numf + 0.5f) * invDenom);*/ + invDenom = BASOP_Util_Divide3232_uu_1616_Scale( L_deposit_l( sub( stop, start ) ) /*Q0*/, + denom /*Q31, denom_exp*/, + &s ); /*Q-16, s-denom_exp*/ + invDenom_exp = add( sub( s, denom_exp ), 31 ); /*invDenom: Q15, invDenom_exp*/ + + /*add .5f to numf*/ + SFM32 = L_add( L_shl( L_deposit_l( numf ), numf_exp ) /*16Q15*/, 16384l /*.5f Q15*/ ); /*16Q15*/ + s = norm_l( SFM32 ); + SFM32 = L_shl( SFM32, s ); + s = sub( 16, s ); /*SFM32(numf) is Q31 now*/ + + /*do the pow2 and the mult*/ + SFM32 = BASOP_util_Pow2( SFM32, s, &s ); + SFM32 = Mpy_32_16_1( SFM32, invDenom ); + *SFM_exp = add( s, invDenom_exp ); + + /*Transform to Q15*/ + s = norm_l( SFM32 ); + SFM = round_fx_sat( L_shl_sat( SFM32, s ) ); + *SFM_exp = sub( *SFM_exp, s ); + move16(); + /**SFM_exp = s_min(*SFM_exp, 0);*/ + IF( *SFM_exp > 0 ) + { + *SFM_exp = 0; + move16(); + SFM = 32767 /*1.0f Q15*/; + move16(); + } + } + + return SFM /*Q15*/; +} + /**********************************************************************/ /* calculates the IGF whitening levels by SFM and crest **************************************************************************/ diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index d6532b207..c83f30ba7 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -3066,6 +3066,13 @@ Word16 IGF_getSFM( /**< out: Q15| SFM value const Word16 start, /**< in: Q0 | start subband index */ const Word16 stop /**< in: Q0 | stop subband index */ ); +Word16 IGF_getSFM_ivas_fx( /**< out: Q15| SFM value */ + Word16 *SFM_exp, /**< out: | exponent of SFM Factor */ + const Word32 *energy, /**< in: Q31| energies */ + const Word16 *energy_exp, /**< in: | exponent of energies */ + const Word16 start, /**< in: Q0 | start subband index */ + const Word16 stop /**< in: Q0 | stop subband index */ +); /* IGFEnc.c */ void IGF_ErodeSpectrum( Word16 *highPassEner_exp, /**< out: | exponent of highPassEner */ const IGF_ENC_INSTANCE_HANDLE hInstance, /**< in: | instance handle of IGF Encoder */ diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index 3f6449a0c..4d8f59152 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -1937,6 +1937,7 @@ Word16 ivas_smc_gmm_fx( /* calculation of differential normalized power spectrum */ sum_PS_fx = 0; move32(); + Word16 q_temp32; Word16 sum_PS_e = 0; move16(); Word64 sum = W_shl( 21475 /* 1e-5 in Q31 */, sub( Qfact_PS, 30 ) ); // Qfact_PS+1 @@ -1961,8 +1962,22 @@ Word16 ivas_smc_gmm_fx( FOR( i = LOWEST_FBIN; i < HIGHEST_FBIN; i++ ) { - temp32 = BASOP_Util_Divide3232_Scale_cadence( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp - PS_norm_fx[i] = L_shl( temp32, sub( Qfact_PS_past, add( sub( 31, temp_exp ), sub( Qfact_PS, sub( 31, sum_PS_e ) ) ) ) ); // Qfact_PS_past + temp32 = BASOP_Util_Divide3232_Scale_cadence( PS_fx[i], sum_PS_fx, &temp_exp ); // 31-temp_exp + q_temp32 = add( sub( 31, temp_exp ), sub( Qfact_PS, sub( 31, sum_PS_e ) ) ); + test(); + if ( temp32 == 0 ) + { + q_temp32 = 31; + move16(); + } + IF( LT_16( q_temp32, 31 ) && EQ_32( temp32, L_shl( 1, q_temp32 ) ) ) + { + temp32 = ONE_IN_Q31; + move32(); + q_temp32 = Q31; + move16(); + } + PS_norm_fx[i] = L_shl( temp32, sub( Qfact_PS_past, q_temp32 ) ); // Qfact_PS_past move32(); dPS_fx[i] = L_abs( L_sub( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ) ); move32(); -- GitLab From 71be43e779165e5aabefcb3dece4e6e9dfdcf0fd Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 12:51:19 +0200 Subject: [PATCH 336/698] fix STAGE2 --- lib_com/swb_tbe_com_fx.c | 304 +++++++++++++++++++++------------------ 1 file changed, 163 insertions(+), 141 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 537881fd1..6a6129957 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6762,102 +6762,113 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + /*duplicate this into unrolled loopsections in IsUpsampled3-path and dont forget to delete 0-set-input[1,2,4,5,7,8...]*/ + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ + } /*IsUpsampled3*/ ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; ) - { - W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; - - W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); - W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); - L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ - move32(); - i++; + IF( isIVAS ) + { + FOR( i = 0; i < L_FRAME48k; ) + { + W_tmpX = W_mac_16_16( 0, input_fx[i - 3], full_band_bpf_fx[0][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpX = W_mac_16_16( 0, input_fx[i - 4], full_band_bpf_fx[0][4] ); + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + + W_tmpY = W_msu_32_16( 0, L_tmp[i - 1], full_band_bpf_fx[3][1] ); + W_tmpX = W_mac_16_16( 0, input_fx[i - 2], full_band_bpf_fx[0][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); + L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ + move32(); + i++; + } } -#else - FOR( i = 0; i < L_FRAME48k; ) - { - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; - - L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + { + FOR( i = 0; i < L_FRAME48k; ) + { + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 3], full_band_bpf_fx[0][3] ), 3 ), 0 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i], full_band_bpf_fx[0][0] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + + L_tmpX = L_shr( L_mult( input_fx[i - 4], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 1], full_band_bpf_fx[0][1] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; - L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ - move32(); - i++; + L_tmpX = L_sub_sat( 0, L_shl_sat( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[3][1] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_add_sat( L_shr( L_mult( input_fx[i - 2], full_band_bpf_fx[0][2] ), 3 ), L_tmpX ); /*Q_input_fx + 13 + 1 - 3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[3][2] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[3][3] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + L_tmp[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[3][4] ), 2 ) ); /*Q_input_fx + 11 + 13 -15 +2*/ + move32(); + i++; + } } -#endif /*#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - } /*IsUpsampled3*/ + + } /*IsUpsampled3*/ #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( L_mult( memory_fx[0][0], full_band_bpf_fx[0][4] ), 3 ); /*Q_input_fx + 13 + 1 - 3*/ @@ -6930,38 +6941,43 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); - W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); - L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp[i - 4], full_band_bpf_fx[1][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 3], full_band_bpf_fx[1][3] ); + W_tmpY = W_msu_32_16( 0, L_tmp2[i - 1], full_band_bpf_fx[4][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 2], full_band_bpf_fx[1][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 2], full_band_bpf_fx[4][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i - 1], full_band_bpf_fx[1][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); + L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ - L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp[i - 4], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 3], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[4][1] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[4][2] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i - 1], full_band_bpf_fx[1][1] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[4][3] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp[i], full_band_bpf_fx[1][0] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ + L_tmp2[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[4][4] ), 2 ) ); /*Q_input_fx + 6 +13 -15 +2 */ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx[1][0], full_band_bpf_fx[1][4] ), 3 ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][1], full_band_bpf_fx[1][3] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ L_tmpX = L_add( L_shr( Mult_32_16( memory2_fx[1][2], full_band_bpf_fx[1][2] ), 3 ), L_tmpX ); /*Q_input_fx + 11 + 13 - 15 -3*/ @@ -7058,40 +7074,46 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - FOR( i = 0; i < L_FRAME48k; i++ ) + IF( isIVAS ) { - W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); - W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); - W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); - W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); - L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + FOR( i = 0; i < L_FRAME48k; i++ ) + { + W_tmpX = W_mac_32_16( 0, L_tmp2[i - 4], full_band_bpf_fx[2][4] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 3], full_band_bpf_fx[2][3] ); + W_tmpY = W_msu_32_16( 0, L_output[i - 1], full_band_bpf_fx[5][1] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 2], full_band_bpf_fx[2][2] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 2], full_band_bpf_fx[5][2] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i - 1], full_band_bpf_fx[2][1] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); + W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); + W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); + L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ - FOR( i = 0; i < L_FRAME48k; i++ ) + ELSE +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ { - L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + FOR( i = 0; i < L_FRAME48k; i++ ) + { + L_tmpX = L_shr( Mult_32_16( L_tmp2[i - 4], full_band_bpf_fx[2][4] ), 3 ); /*Q_input_fx + 6 +Q_temp+13 -15 -3 */ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 3], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 1], full_band_bpf_fx[5][1] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 2], full_band_bpf_fx[5][2] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i - 1], full_band_bpf_fx[2][1] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_tmpX = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 3], full_band_bpf_fx[5][3] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ - L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ - move32(); - L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + L_tmpX = L_add_sat( L_shr( Mult_32_16( L_tmp2[i], full_band_bpf_fx[2][0] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp +13 -15 -3*/ + L_output[i] = L_sub_sat( L_tmpX, L_shl_sat( Mult_32_16( L_output[i - 4], full_band_bpf_fx[5][4] ), 2 ) ); /*Q_input_fx + 1 +Q_temp+13 -15 + 2*/ + move32(); + L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); + } } -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ + #else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From ebe0992c04b634a2e448b8da929ee576c9ba9527 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 13:28:40 +0200 Subject: [PATCH 337/698] activate STAGE2 with isIVAS 1 in all cases --- lib_com/options.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index ec61fece6..490109b56 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -89,7 +89,7 @@ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ #endif -- GitLab From 99e90164fe3cc9dbd7424070def89a464f3b2cee Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 13:33:08 +0200 Subject: [PATCH 338/698] clang patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 6a6129957..f6eff2f35 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7114,7 +7114,7 @@ void elliptic_bpf_48k_generic_fx( } } -#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ +#else /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic*/ L_tmpX = L_shr( Mult_32_16( memory2_fx_2[0], full_band_bpf_fx[2][4] ), 3 ); /* *Q_input_fx+6 +Q_temp +13 -15 -3 */ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[1], full_band_bpf_fx[2][3] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ L_tmpX = L_add_sat( L_shr( Mult_32_16( memory2_fx_2[2], full_band_bpf_fx[2][2] ), 3 ), L_tmpX ); /*Q_input_fx + 6 +Q_temp+13 -15 -3*/ -- GitLab From a43b1a9ccee810967ab7c13d3b8d73f228dd7f57 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 13:38:58 +0200 Subject: [PATCH 339/698] fix unused parameter --- lib_com/swb_tbe_com_fx.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index f6eff2f35..30ce3b650 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7288,7 +7288,11 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS 1, // isIVAS +#else + isIVAS, +#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx @@ -7304,7 +7308,11 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS 1, // isIVAS +#else + isIVAS, +#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); -- GitLab From 1132ef4545af681636bba726ad467737e60c23fb Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 13:40:40 +0200 Subject: [PATCH 340/698] clang patch --- lib_com/swb_tbe_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 30ce3b650..4f73165c2 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7291,7 +7291,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS 1, // isIVAS #else - isIVAS, + isIVAS, #endif #endif 1, // IsUpsampled3 @@ -7311,7 +7311,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS 1, // isIVAS #else - isIVAS, + isIVAS, #endif #endif 1, // IsUpsampled3 -- GitLab From f103c93f4ee7d261dff8f0771dc3792ba4374e9b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 13:44:01 +0200 Subject: [PATCH 341/698] fix unused parameter --- lib_com/swb_tbe_com_fx.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 4f73165c2..21bb4eaeb 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7267,6 +7267,10 @@ void synthesise_fb_high_band_fx( Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS + isIVAS = 1; +#endif + /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7288,11 +7292,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS - 1, // isIVAS -#else isIVAS, -#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx @@ -7308,11 +7308,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS - 1, // isIVAS -#else isIVAS, -#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); -- GitLab From c9506c850340f63ac3b8031fc8c6c5b61bc4620d Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Tue, 15 Apr 2025 17:07:03 +0530 Subject: [PATCH 342/698] Fix for a crash in LTV complexity measurement pipeline --- lib_dec/fd_cng_dec_fx.c | 49 ++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 4c42a7959..0309771ff 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1536,8 +1536,8 @@ Word16 ApplyFdCng_ivas_fx( Word16 shift2 = L_norm_arr( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ) ); Word16 shift = s_max( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), sub( *cngNoiseLevel_exp, shift2 ) ); - scale_sig32( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( sub( hFdCngDec->bandNoiseShape_exp, shift1 ), shift ) ); - scale_sig32( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ), sub( sub( *cngNoiseLevel_exp, shift2 ), shift ) ); + scale_sig32( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( hFdCngDec->bandNoiseShape_exp, shift ) ); + scale_sig32( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ), sub( *cngNoiseLevel_exp, shift ) ); *cngNoiseLevel_exp = shift; move16(); @@ -1688,16 +1688,15 @@ Word16 ApplyFdCng_ivas_fx( move32(); } } - /* adapt scaling for rest of the buffer */ - s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) ); - FOR( ; j < FFTCLDFBLEN; j++ ) - { - cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/ - move32(); - } + Word16 shift1 = L_norm_arr( cngNoiseLevel, j ); + Word16 shift2 = L_norm_arr( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ) ); + Word16 shift = s_max( sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift1 ), sub( *cngNoiseLevel_exp, shift2 ) ); - *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 ); + scale_sig32( cngNoiseLevel, j, sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift ) ); + scale_sig32( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ), sub( *cngNoiseLevel_exp, shift ) ); + + *cngNoiseLevel_exp = shift; move16(); } } @@ -1761,18 +1760,15 @@ Word16 ApplyFdCng_ivas_fx( move32(); } } - /* adapt scaling for rest of the buffer */ - s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) ); - FOR( ; j < FFTCLDFBLEN; j++ ) - { - /* NOTE: saturation is added here as part of issue 1218 fix. after rescaling the fdcng noise estimation buffers, due to slight precision loss, values may slightly overflow */ - cngNoiseLevel[j] = L_shl_sat( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/ - move32(); - } + Word16 shift1 = L_norm_arr( cngNoiseLevel, j ); + Word16 shift2 = L_norm_arr( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ) ); + Word16 shift = s_max( sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift1 ), sub( *cngNoiseLevel_exp, shift2 ) ); + scale_sig32( cngNoiseLevel, j, sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift ) ); + scale_sig32( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ), sub( *cngNoiseLevel_exp, shift ) ); - *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 ); + *cngNoiseLevel_exp = shift; move16(); } } @@ -2399,8 +2395,15 @@ void perform_noise_estimation_dec_ivas_fx( ELSE { Copy32( msPeriodog, msNoiseEst, npart ); - scale_sig32( &msNoiseEst[npart], sub( NPART_SHAPING, npart ), sub( hFdCngDec->msNoiseEst_exp, hFdCngDec->msPeriodog_exp ) ); - hFdCngDec->msNoiseEst_exp = hFdCngDec->msPeriodog_exp; + + Word16 shift1 = L_norm_arr( msNoiseEst, npart ); + Word16 shift2 = L_norm_arr( &msNoiseEst[npart], sub( NPART_SHAPING, npart ) ); + Word16 shift = s_max( sub( hFdCngDec->msPeriodog_exp, shift1 ), sub( hFdCngDec->msNoiseEst_exp, shift2 ) ); + + scale_sig32( msNoiseEst, npart, sub( hFdCngDec->msPeriodog_exp, shift ) ); + scale_sig32( &msNoiseEst[npart], sub( NPART_SHAPING, npart ), sub( hFdCngDec->msNoiseEst_exp, shift ) ); + + hFdCngDec->msNoiseEst_exp = shift; move16(); } @@ -5071,8 +5074,8 @@ void FdCng_decodeSID_ivas_fx( Word16 shift2 = L_norm_arr( hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopBand, hFdCngCom->startBand ) ) ); Word16 shift = s_max( sub( hFdCngCom->sidNoiseEstExp, shift1 ), sub( hFdCngCom->cngNoiseLevelExp, shift2 ) ); - scale_sig32( hFdCngCom->cngNoiseLevel, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( sub( hFdCngCom->sidNoiseEstExp, shift1 ), shift ) ); - scale_sig32( hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopBand, hFdCngCom->startBand ) ), sub( sub( hFdCngCom->cngNoiseLevelExp, shift2 ), shift ) ); + scale_sig32( hFdCngCom->cngNoiseLevel, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( hFdCngCom->sidNoiseEstExp, shift ) ); + scale_sig32( hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopBand, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopBand, hFdCngCom->startBand ) ), sub( hFdCngCom->cngNoiseLevelExp, shift ) ); hFdCngCom->cngNoiseLevelExp = shift; move16(); -- GitLab From c0b894982c8fbbaee1ba6ee3574c44c0e5f72054 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 15 Apr 2025 14:10:28 +0200 Subject: [PATCH 343/698] cleanup --- lib_com/options.h | 1 + lib_enc/ivas_stereo_dmx_evs_fx.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 5ed2aa912..43c3c3038 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -84,6 +84,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ +#define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ #define TEST_HR diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 042a2e541..6e04b91c7 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -2419,7 +2419,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( fad_g = hStereoDmxEVS->hPHA->fad_g_fx; // fad_r = 1.0f / (float) ( fad_len + 1 ); -#if 1 +#ifdef FIX_1481_HARDCODE_DIV SWITCH( fad_len ) { case STEREO_DMX_EVS_FAD_LEN_16: @@ -2564,7 +2564,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; // fad_r = 1.0f / (float) ( fad_len + 1 ); -#if 1 +#ifdef FIX_1481_HARDCODE_DIV SWITCH( fad_len ) { case STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 16: -- GitLab From f47deccf0a64382b75f87d469c8584a495afe1fb Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Tue, 15 Apr 2025 17:46:50 +0530 Subject: [PATCH 344/698] Fix for 3GPP issue 1477: Encoder crash (assert) in ISM1, HQ core fine gain quantization --- lib_com/pvq_com_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/pvq_com_fx.c b/lib_com/pvq_com_fx.c index a6c0bc462..1adcdb7ae 100644 --- a/lib_com/pvq_com_fx.c +++ b/lib_com/pvq_com_fx.c @@ -564,8 +564,8 @@ void fine_gain_quant_fx( tmp1 = extract_l( Pow2( 14, tmp1 ) ); exp1 = sub( 14, exp1 ); - L_tmp = L_mult0( fg_pred[band], tmp1 ); /*12+exp1 */ - fg_pred[band] = round_fx( L_shl( L_tmp, sub( 16, exp1 ) ) ); /*12+exp1+16-exp1-16=12 */ + L_tmp = L_mult0( fg_pred[band], tmp1 ); /*12+exp1 */ + fg_pred[band] = round_fx_sat( L_shl_sat( L_tmp, sub( 16, exp1 ) ) ); /*12+exp1+16-exp1-16=12 */ move16(); } } -- GitLab From 627abb06732e9b163f0b271ea79a3898156d88cc Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 14:54:49 +0200 Subject: [PATCH 345/698] use FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE --- lib_com/options.h | 3 ++- lib_com/prot_fx.h | 8 ++++++++ lib_com/swb_tbe_com_fx.c | 43 ++++++++++++++++++++++++++++++++++++---- lib_dec/swb_tbe_dec_fx.c | 16 +++++++++------ lib_enc/swb_tbe_enc_fx.c | 26 +++++++++++++++--------- 5 files changed, 76 insertions(+), 20 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 490109b56..e3ac4ccfb 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -90,6 +90,7 @@ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ + #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE /*according to comment of @vaclav in MR!1390*/ /*overrides STAGE2 settings*/ + //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 33ac952cc..05fc12bd9 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3267,7 +3267,11 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + const int16_t element_mode, +#else Word16 isIVAS, +#endif #endif Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -3302,8 +3306,12 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + int16_t element_mode +#else Word16 isIVAS #endif +#endif ); void prep_tbe_exc_fx( diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 21bb4eaeb..cf6161e57 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,8 +6696,12 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + int16_t element_mode, +#else Word16 isIVAS, #endif +#endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -6711,6 +6715,13 @@ void elliptic_bpf_48k_generic_fx( const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + element_mode = 1; +#else + isIVAS = 1; +#endif +#endif Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; @@ -6762,7 +6773,11 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + IF(element_mode) +#else IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6801,7 +6816,11 @@ void elliptic_bpf_48k_generic_fx( ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + IF(element_mode) +#else IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; ) { @@ -6941,7 +6960,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + IF(element_mode) +#else IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7074,7 +7097,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + IF(element_mode) +#else IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7250,8 +7277,12 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + int16_t element_mode +#else Word16 isIVAS #endif +#endif ) { Word16 i, j; @@ -7267,10 +7298,6 @@ void synthesise_fb_high_band_fx( Word32 L_tmp; Word16 tmp3, tmp1, tmp2, exp, exp2, exp_tmp; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS - isIVAS = 1; -#endif - /* Interpolate the white energy shaped gaussian excitation from 16 kHz to 48 kHz with zeros */ j = 0; /* white excitation from DC to 8 kHz resampled to produce DC to 24 kHz excitation. */ @@ -7292,7 +7319,11 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + element_mode , +#else isIVAS, +#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx @@ -7308,7 +7339,11 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + element_mode, +#else isIVAS, +#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index e910e5457..5ab562fe2 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4646,14 +4646,13 @@ void fb_tbe_dec_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS - , - 1 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + ,st->element_mode #else , 0 -#endif -#endif +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); /* add the fb_synth component to the hb_synth component */ @@ -4725,9 +4724,14 @@ void fb_tbe_dec_ivas_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + , + st->element_mode +#else , 1 -#endif +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); test(); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 7ad3b2013..990a44d19 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7333,12 +7333,12 @@ void fb_tbe_enc_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS - 1, // isIVAS +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + st->element_mode, #else - 0, // isIVAS -#endif -#endif + 0, +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else @@ -7475,8 +7475,12 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS -#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + st->element_mode, +#else + 1, +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else @@ -7488,8 +7492,12 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - 1, // isIVAS -#endif +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + st->element_mode, +#else + 1, +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else -- GitLab From db0bbc7d9f233eef3ef4c0653aa009a9c13268cd Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 15 Apr 2025 15:11:41 +0200 Subject: [PATCH 346/698] clang patch --- lib_com/options.h | 2 +- lib_com/prot_fx.h | 4 ++-- lib_com/swb_tbe_com_fx.c | 12 ++++++------ lib_dec/swb_tbe_dec_fx.c | 3 ++- lib_enc/swb_tbe_enc_fx.c | 12 ++++++------ 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index e3ac4ccfb..daf2be13b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -/*#define WMOPS*/ /* Activate complexity and memory counters */ +#define WMOPS /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 05fc12bd9..1d2873dc4 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3268,7 +3268,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - const int16_t element_mode, + const int16_t element_mode, #else Word16 isIVAS, #endif @@ -3307,7 +3307,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - int16_t element_mode + int16_t element_mode #else Word16 isIVAS #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index cf6161e57..10f508489 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6697,7 +6697,7 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - int16_t element_mode, + int16_t element_mode, #else Word16 isIVAS, #endif @@ -6774,7 +6774,7 @@ void elliptic_bpf_48k_generic_fx( { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - IF(element_mode) + IF( element_mode ) #else IF( isIVAS ) #endif @@ -6817,7 +6817,7 @@ void elliptic_bpf_48k_generic_fx( { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - IF(element_mode) + IF( element_mode ) #else IF( isIVAS ) #endif @@ -6961,7 +6961,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - IF(element_mode) + IF( element_mode ) #else IF( isIVAS ) #endif @@ -7098,7 +7098,7 @@ void elliptic_bpf_48k_generic_fx( L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - IF(element_mode) + IF( element_mode ) #else IF( isIVAS ) #endif @@ -7320,7 +7320,7 @@ void synthesise_fb_high_band_fx( elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - element_mode , + element_mode, #else isIVAS, #endif diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 5ab562fe2..c02a6a182 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4647,7 +4647,8 @@ void fb_tbe_dec_fx( synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - ,st->element_mode + , + st->element_mode #else , 0 diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 990a44d19..29ef4427a 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7337,8 +7337,8 @@ void fb_tbe_enc_fx( st->element_mode, #else 0, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else @@ -7479,8 +7479,8 @@ void fb_tbe_enc_ivas_fx( st->element_mode, #else 1, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else @@ -7496,8 +7496,8 @@ void fb_tbe_enc_ivas_fx( st->element_mode, #else 1, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); #else -- GitLab From c227804b934b0cb380dd4cd5ec60c20660266d43 Mon Sep 17 00:00:00 2001 From: vaclav Date: Tue, 15 Apr 2025 19:41:45 +0200 Subject: [PATCH 347/698] clang-format --- lib_dec/acelp_core_dec_ivas_fx.c | 11 +---------- lib_dec/fd_cng_dec_fx.c | 4 ++-- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index 6cecf8323..ad8ca9b50 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -848,16 +848,7 @@ ivas_error acelp_core_dec_ivas_fx( Copy_Scale_sig( syn1_fx, temp_buf_fx, st->L_frame, sub( -1, st->Q_syn ) ); // Q_syn -> Q(-1) IF( st->hBWE_FD != NULL ) { -#ifdef REMOVE_EVS_DUPLICATES - IF( EQ_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - this is likely a bug in IVAS - { - save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx ); - } - ELSE -#endif - { - save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx ); - } + save_old_syn_fx( st->L_frame, temp_buf_fx, old_syn_12k8_16k_fx, st->hBWE_FD->old_syn_12k8_16k_fx, st->preemph_fac, &st->hBWE_FD->mem_deemph_old_syn_fx ); } } diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index f881d252d..dbb13de12 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1241,7 +1241,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); } @@ -1565,7 +1565,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); } -- GitLab From f34b6383bddca55252f3f7671c9c19461b5f62b2 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 15 Apr 2025 20:41:00 +0200 Subject: [PATCH 348/698] convert remaining places in ivas_stereo_dmx_evs_fx.c --- lib_enc/ivas_stereo_dmx_evs_fx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 625ff8ee9..425685529 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -830,7 +830,7 @@ static void calc_poc_fx( // ICCr = (float) sqrt( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) ); L_tmp1 = BASOP_Util_Add_Mant32Exp( Mpy_32_32_r( Nr, Nr ), shl( Nr_e, 1 ), Mpy_32_32_r( Ni, Ni ), shl( Ni_e, 1 ), &L_tmp1_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( Mpy_32_32_r( eneL, eneR ), add( eneL_e, eneR_e ), EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e ); - ICCr = BASOP_Util_Divide3232_Scale_cadence( L_tmp1, L_tmp2, &L_tmp_e ); + ICCr = BASOP_Util_Divide3232_Scale_newton( L_tmp1, L_tmp2, &L_tmp_e ); L_tmp_e = add( L_tmp_e, sub( L_tmp1_e, L_tmp2_e ) ); ICCr = Sqrt32( ICCr, &L_tmp_e ); // Saturation to handle values close to 1.0f @@ -1891,7 +1891,7 @@ void stereo_dmx_evs_enc_fx( } L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_newton( subframe_energy[m], L_tmp1, &L_tmp2_e ); L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); // if ( subframe_energy[m] / ( hStereoDmxEVS->hPHA->trns_aux_energy[k] + EPSILON ) > hStereoDmxEVS->hPHA->crst_fctr ) if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, hStereoDmxEVS->hPHA->crst_fctr_fx, 31 ) > 0 ) @@ -1919,7 +1919,7 @@ void stereo_dmx_evs_enc_fx( FOR( m = 1; m < STEREO_DMX_EVS_NB_SBFRM; m++ ) { L_tmp1 = BASOP_Util_Add_Mant32Exp( subframe_energy[m - 1], subframe_energy_e[m - 1], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_newton( subframe_energy[m], L_tmp1, &L_tmp2_e ); L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); // if ( subframe_energy[m] / ( subframe_energy[m - 1] + EPSILON ) > STEREO_DMX_EVS_TRNS_DTC_INST ) if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, STEREO_DMX_EVS_TRNS_DTC_INST_Q0, 31 ) > 0 ) -- GitLab From 2ccf2c7cf2dd04348a9f6cedac75caaeb6ba2aa0 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Wed, 16 Apr 2025 06:47:41 +0530 Subject: [PATCH 349/698] Fix for 3GPP issue 1470: Increased noise in 6-14 kHz range with ParamBin rendering of MASA to STEREO using BASOP decoder --- lib_dec/fd_cng_dec_fx.c | 6 +++--- lib_rend/ivas_dirac_dec_binaural_functions_fx.c | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 0309771ff..55c491efe 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -5664,7 +5664,7 @@ void generate_masking_noise_dirac_ivas_fx( scale_fx = L_shl( scale_fx, q_shift ); /*q_scale+q_shift*/ q_scale = add( q_scale, q_shift ); scale_fx = Mpy_32_32( scale_fx, Mpy_32_16_1( L_mult( h_cldfb->scale, h_cldfb->scale ), CLDFB_SCALING ) ); // Q = q_scale + 2 * Q8 - 34 - q_scale = sub( add( q_scale, 2 * Q8 ), 31 ); + q_scale = sub( add( q_scale, 2 * Q8 ), 31 + 3 ); ptr_level_fx = hFdCngCom->cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); /*Q31 - hFdCngCom->cngNoiseLevelExp*/ q_ptr_level = sub( 31, hFdCngCom->cngNoiseLevelExp ); @@ -5675,8 +5675,8 @@ void generate_masking_noise_dirac_ivas_fx( q_shift = norm_l( scale_fx ); scale_fx = L_shl( scale_fx, q_shift ); /*q_scale+q_shift*/ q_scale = add( q_scale, q_shift ); - num = Mpy_32_32( scale_fx, *ptr_level_fx ); /*q_num*/ - q_num = sub( add( q_scale, q_ptr_level ), 31 ); + num = Mpy_32_32( scale_fx, *ptr_level_fx ); /*q_num*/ + q_num = sub( add( q_scale, q_ptr_level ), 31 - 1 ); // num = ( scale * *ptr_level ) * 0.5f exp = sub( 31, q_num ); num = Sqrt32( num, &exp ); /*Q31 - exp*/ /* Real part in CLDFB band */ diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index ce602160f..c7b420e38 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -758,6 +758,9 @@ static void ivas_dirac_dec_binaural_internal_fx( ( st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == FRAME_NO_DATA || st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == SID_2k40 ) && ( st_ivas->hSCE[0]->hCoreCoder[0]->cng_type == FD_CNG ) && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag, 0, &q_cldfb[1][slot] ); + scale_sig32( Cldfb_RealBuffer_in_fx[1][slot], CLDFB_NO_CHANNELS_MAX, negate( add( sub( q_cldfb[1][slot], q_input ), 5 ) ) ); + scale_sig32( Cldfb_ImagBuffer_in_fx[1][slot], CLDFB_NO_CHANNELS_MAX, negate( add( sub( q_cldfb[1][slot], q_input ), 5 ) ) ); + /* LB: Copy first channel + LB-CNG to first and second channels with same scaling (dual-mono)*/ FOR( b = 0; b < numCoreBands; b++ ) { -- GitLab From 1daee4188980cd56ac1bcfbb35ff009c8da527a0 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 07:36:04 +0200 Subject: [PATCH 350/698] test STAGE2_saturationmode2 --- lib_com/options.h | 7 ++++--- lib_com/swb_tbe_com_fx.c | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index daf2be13b..e07899557 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -87,10 +87,11 @@ #define TEST_HR -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ /*0.9 WMOPS*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ /*3.2 WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE /*according to comment of @vaclav in MR!1390*/ /*overrides STAGE2 settings*/ - //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ +// #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 10f508489..c5b2941d5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6791,7 +6791,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr(W_tmpX,3), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); } } @@ -6830,7 +6834,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); i++; @@ -6840,7 +6848,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); i++; @@ -6849,7 +6861,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); i++; } @@ -6977,7 +6993,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); +#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } @@ -7114,7 +7134,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); +#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -- GitLab From 1de6bb47406cb7108ee6e67ac29762a7a50e5080 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 07:39:36 +0200 Subject: [PATCH 351/698] clang patch --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c5b2941d5..2900d54e9 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6792,7 +6792,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr(W_tmpX,3), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ #else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ #endif -- GitLab From b40fc402017aecf7982e099cba73fad32ad20e1b Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Wed, 16 Apr 2025 07:58:24 +0200 Subject: [PATCH 352/698] Reactivate FIX_1379_MASA_ANGLE_ROUND after merge with conflict resolution. --- lib_com/options.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 43c3c3038..ad220450b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -71,6 +71,8 @@ #define FIX_1378_ACELP_OUT_OF_BOUNDS +#define FIX_1379_MASA_ANGLE_ROUND + /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ //#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ #define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ -- GitLab From c00e57f2c7b4911f742516dcf13bd7cfc14861dd Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 08:36:13 +0200 Subject: [PATCH 353/698] delete FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS, FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2, made FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 permanent active. WMOPS for bitstream in issue 1439: general patch: .9 WMOPS - nonBE, no regressions, STAGE2 patch: 3.2 WMOPS - 1 small regression --- lib_com/options.h | 7 ++--- lib_com/prot_fx.h | 8 ----- lib_com/swb_tbe_com_fx.c | 63 ---------------------------------------- lib_dec/swb_tbe_dec_fx.c | 10 ------- lib_enc/swb_tbe_enc_fx.c | 12 -------- 5 files changed, 2 insertions(+), 98 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3ce190efc..84aac4489 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -88,11 +88,8 @@ #define TEST_HR -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ /*0.9 WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: nonBE, 0 regressions - reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ /*3.2 WMOPS*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE /*according to comment of @vaclav in MR!1390*/ /*overrides STAGE2 settings*/ -// #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1d2873dc4..8d70b1092 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3267,11 +3267,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE const int16_t element_mode, -#else - Word16 isIVAS, -#endif #endif Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -3306,11 +3302,7 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode -#else - Word16 isIVAS -#endif #endif ); diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2900d54e9..a3b4bd5c6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,11 +6696,7 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode, -#else - Word16 isIVAS, -#endif #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -6715,13 +6711,6 @@ void elliptic_bpf_48k_generic_fx( const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - element_mode = 1; -#else - isIVAS = 1; -#endif -#endif Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; @@ -6773,11 +6762,7 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6791,11 +6776,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); } } @@ -6820,11 +6801,7 @@ void elliptic_bpf_48k_generic_fx( ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; ) { @@ -6834,11 +6811,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); i++; @@ -6848,11 +6821,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); i++; @@ -6861,11 +6830,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); i++; } @@ -6976,11 +6941,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6993,11 +6954,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); -#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } @@ -7117,11 +7074,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7134,11 +7087,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); -#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } @@ -7301,11 +7250,7 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode -#else - Word16 isIVAS -#endif #endif ) { @@ -7343,11 +7288,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE element_mode, -#else - isIVAS, -#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx @@ -7363,11 +7304,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE element_mode, -#else - isIVAS, -#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index c02a6a182..890e0e5c8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4646,13 +4646,8 @@ void fb_tbe_dec_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE , st->element_mode -#else - , - 0 -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); @@ -4725,13 +4720,8 @@ void fb_tbe_dec_ivas_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE , st->element_mode -#else - , - 1 -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 29ef4427a..4f10d3b02 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7333,11 +7333,7 @@ void fb_tbe_enc_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, -#else - 0, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7475,11 +7471,7 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, -#else - 1, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7492,11 +7484,7 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, -#else - 1, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -- GitLab From f33357542fca749ec15cc69f253b8254c1522040 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 07:32:47 +0000 Subject: [PATCH 354/698] delete some code from another ticket and some empty lines --- lib_com/options.h | 4 +--- lib_com/swb_tbe_com_fx.c | 3 --- lib_com/tools_fx.c | 26 +------------------------- lib_dec/ivas_stereo_icbwe_dec_fx.c | 10 ---------- lib_dec/swb_tbe_dec_fx.c | 10 ---------- 5 files changed, 2 insertions(+), 51 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 84aac4489..1ada99f53 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -#define WMOPS /* Activate complexity and memory counters */ +/*#define WMOPS*/ /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -87,9 +87,7 @@ #define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ #define TEST_HR - #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: nonBE, 0 regressions - reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ #endif - diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a3b4bd5c6..6ac3ee725 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7038,7 +7038,6 @@ void elliptic_bpf_48k_generic_fx( } #endif - Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -7180,10 +7179,8 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - #endif - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 6dc1c45f2..5f0e172bf 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,37 +794,13 @@ void Copy_Scale_sig_16_32_no_sat( } return; } -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat - L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); - - IF( L_tmp >= 0x7FFF ) - { - FOR( i = 0; i < lg; i++ ) - { - // y[i] = L_mult0(x[i], L_tmp); - y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* Overflow can occur here */ - } - return; - } - // ELSE - { - Word16 tmp = extract_l( L_tmp ); - FOR( i = 0; i < lg; i++ ) - { - y[i] = L_mult( x[i], tmp ); - move32(); - } - } -#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* Overflow can occur here */ + move32(); /* saturation can occur here */ } -#endif } void Copy_Scale_sig_32_16( diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index 772eb2d7d..c7bc98566 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,9 +904,6 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); -#endif FOR( i = 0; i < winLen_fx; i++ ) { L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ @@ -914,17 +911,10 @@ void stereo_icBWE_dec_fx( tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ move32(); -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - if ( LE_16( alpha_fx, winSlope_fx_ ) ) - { - alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ - } -#else IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } -#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 890e0e5c8..419d202fc 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7032,24 +7032,14 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); - -#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx - Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 -#endif - FOR( i = 0; i < L_FRAME16k; i++ ) { -#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } -#else - Word16 idx; - idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ -#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); -- GitLab From 930e90a4fc862e5165ba4f81a77dce68b745449e Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 16 Apr 2025 10:10:41 +0200 Subject: [PATCH 355/698] fix in ApplyFdCng_ivas_fx() --- lib_dec/fd_cng_dec_fx.c | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index dbb13de12..5c649df9b 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1241,7 +1241,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); } @@ -1565,7 +1565,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); } @@ -1757,15 +1757,35 @@ Word16 ApplyFdCng_ivas_fx( } } - Word16 shift1 = L_norm_arr( cngNoiseLevel, j ); - Word16 shift2 = L_norm_arr( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ) ); - Word16 shift = s_max( sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift1 ), sub( *cngNoiseLevel_exp, shift2 ) ); +#ifdef REMOVE_EVS_DUPLICATES + IF( EQ_16( st->element_mode, EVS_MONO ) ) + { + /* adapt scaling for rest of the buffer */ + s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) ); + FOR( ; k < hFdCngCom->npart; k++ ) + { + FOR( ; j <= hFdCngCom->part[k]; j++ ) + { + cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/ + move32(); + } + } + *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 ); + move16(); + } + ELSE +#endif + { + Word16 shift1 = L_norm_arr( cngNoiseLevel, j ); + Word16 shift2 = L_norm_arr( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ) ); + Word16 shift = s_max( sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift1 ), sub( *cngNoiseLevel_exp, shift2 ) ); - scale_sig32( cngNoiseLevel, j, sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift ) ); - scale_sig32( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ), sub( *cngNoiseLevel_exp, shift ) ); + scale_sig32( cngNoiseLevel, j, sub( add( hFdCngDec->bandNoiseShape_exp, s2 ), shift ) ); + scale_sig32( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ), sub( *cngNoiseLevel_exp, shift ) ); - *cngNoiseLevel_exp = shift; - move16(); + *cngNoiseLevel_exp = shift; + move16(); + } } } ELSE IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) -- GitLab From 9d14ced3fbf85af53dec45d1e3f8c8c040f35d64 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 16 Apr 2025 10:24:15 +0200 Subject: [PATCH 356/698] clang-format --- lib_dec/fd_cng_dec_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 2bab16e04..d0fd178f2 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -1241,7 +1241,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); } @@ -1565,7 +1565,7 @@ Word16 ApplyFdCng_ivas_fx( } ELSE #endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); } -- GitLab From 298c2401ea8e092b9a7d3e62260632ac73f6efb6 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Wed, 16 Apr 2025 14:31:39 +0530 Subject: [PATCH 357/698] Fix for LTV Multichannel 5_1 at 13.2 kbps 48kHz stream crash --- lib_com/gs_preech_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/gs_preech_fx.c b/lib_com/gs_preech_fx.c index 48ec22a22..16d3ce0e5 100644 --- a/lib_com/gs_preech_fx.c +++ b/lib_com/gs_preech_fx.c @@ -233,7 +233,7 @@ void pre_echo_att_ivas_fx( tmp = BASOP_Util_Divide3232_Scale( *Last_frame_ener_fx, etmp_fx, &tmp_e ); /* numerator Q = 2 * Q_new + 1; denominator Q = 31 - tmp_e */ tmp_e = add( tmp_e, sub( sub( 31, etmp_e ), add( shl( Q_new, 1 ), 1 ) ) ); /* tmp_e = tmp_e + (31 - tmp_e) - (2 * Q_new + 1) */ tmp = Sqrt16( tmp, &tmp_e ); - ratio_fx = shr( tmp, sub( 2, tmp_e ) ); /* Q13 */ + ratio_fx = shr_sat( tmp, sub( 2, tmp_e ) ); /* Q13 */ /* Pre-echo atttenuation should never increase the energy */ ratio_fx = s_min( ratio_fx, 8192 /* 1 in Q13 */ ); /* Q13 */ -- GitLab From d44872b1cf0bdd372055b00ee2dfdc9808b701c6 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 11:43:56 +0200 Subject: [PATCH 358/698] activate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1ada99f53..53a30a4a6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -88,6 +88,6 @@ #define TEST_HR #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: nonBE, 0 regressions - reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ #endif -- GitLab From 11970ae85c46799186afabf2370f758200e40644 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 11:55:51 +0200 Subject: [PATCH 359/698] Revert "activate FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2" This reverts commit d44872b1cf0bdd372055b00ee2dfdc9808b701c6. --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 53a30a4a6..1ada99f53 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -88,6 +88,6 @@ #define TEST_HR #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: nonBE, 0 regressions - reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ +//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ #endif -- GitLab From 38e2cb22645320d0511938c78e30aa48445ed02e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 11:56:05 +0200 Subject: [PATCH 360/698] Revert "delete some code from another ticket and some empty lines" This reverts commit f33357542fca749ec15cc69f253b8254c1522040. --- lib_com/options.h | 4 +++- lib_com/swb_tbe_com_fx.c | 3 +++ lib_com/tools_fx.c | 26 +++++++++++++++++++++++++- lib_dec/ivas_stereo_icbwe_dec_fx.c | 10 ++++++++++ lib_dec/swb_tbe_dec_fx.c | 10 ++++++++++ 5 files changed, 51 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1ada99f53..84aac4489 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -/*#define WMOPS*/ /* Activate complexity and memory counters */ +#define WMOPS /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -87,7 +87,9 @@ #define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ #define TEST_HR + #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: nonBE, 0 regressions - reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ #endif + diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 6ac3ee725..a3b4bd5c6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7038,6 +7038,7 @@ void elliptic_bpf_48k_generic_fx( } #endif + Q_temp = norm_l( L_tmpMax ); Q_temp = sub( Q_temp, 4 ); Scale_sig32( L_tmp2, 960, Q_temp ); @@ -7179,8 +7180,10 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } + #endif + memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 5f0e172bf..6dc1c45f2 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,13 +794,37 @@ void Copy_Scale_sig_16_32_no_sat( } return; } +#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat + L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); + + IF( L_tmp >= 0x7FFF ) + { + FOR( i = 0; i < lg; i++ ) + { + // y[i] = L_mult0(x[i], L_tmp); + y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); + move32(); /* Overflow can occur here */ + } + return; + } + // ELSE + { + Word16 tmp = extract_l( L_tmp ); + FOR( i = 0; i < lg; i++ ) + { + y[i] = L_mult( x[i], tmp ); + move32(); + } + } +#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* saturation can occur here */ + move32(); /* Overflow can occur here */ } +#endif } void Copy_Scale_sig_32_16( diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index c7bc98566..772eb2d7d 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,6 +904,9 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); +#endif FOR( i = 0; i < winLen_fx; i++ ) { L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ @@ -911,10 +914,17 @@ void stereo_icBWE_dec_fx( tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ move32(); +#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx + if ( LE_16( alpha_fx, winSlope_fx_ ) ) + { + alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ + } +#else IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } +#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 419d202fc..890e0e5c8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7032,14 +7032,24 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); + +#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx + Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 +#endif + FOR( i = 0; i < L_FRAME16k; i++ ) { +#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } +#else + Word16 idx; + idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ +#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); -- GitLab From 7bddc36ae7b4d790941c362a9ce416d96bf26b5b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 11:56:17 +0200 Subject: [PATCH 361/698] Revert "delete FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS, FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2, made FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 permanent active. WMOPS for bitstream in issue 1439: general patch: .9 WMOPS - nonBE, no regressions, STAGE2 patch: 3.2 WMOPS - 1 small regression" This reverts commit c00e57f2c7b4911f742516dcf13bd7cfc14861dd. --- lib_com/options.h | 7 +++-- lib_com/prot_fx.h | 8 +++++ lib_com/swb_tbe_com_fx.c | 63 ++++++++++++++++++++++++++++++++++++++++ lib_dec/swb_tbe_dec_fx.c | 10 +++++++ lib_enc/swb_tbe_enc_fx.c | 12 ++++++++ 5 files changed, 98 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 84aac4489..3ce190efc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -88,8 +88,11 @@ #define TEST_HR -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: nonBE, 0 regressions - reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -//#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: nonBE, 1 regression (Pipeline #51485) - reduces 3.2 WMOPS with issue 1439 Bitstream*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ /*0.9 WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ /*3.2 WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE /*according to comment of @vaclav in MR!1390*/ /*overrides STAGE2 settings*/ +// #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 8d70b1092..1d2873dc4 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3267,7 +3267,11 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE const int16_t element_mode, +#else + Word16 isIVAS, +#endif #endif Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -3302,7 +3306,11 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode +#else + Word16 isIVAS +#endif #endif ); diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a3b4bd5c6..2900d54e9 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,7 +6696,11 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode, +#else + Word16 isIVAS, +#endif #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -6711,6 +6715,13 @@ void elliptic_bpf_48k_generic_fx( const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ) { +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE + element_mode = 1; +#else + isIVAS = 1; +#endif +#endif Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; @@ -6762,7 +6773,11 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) +#else + IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6776,7 +6791,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); } } @@ -6801,7 +6820,11 @@ void elliptic_bpf_48k_generic_fx( ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) +#else + IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; ) { @@ -6811,7 +6834,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); i++; @@ -6821,7 +6848,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); i++; @@ -6830,7 +6861,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ +#endif move32(); i++; } @@ -6941,7 +6976,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) +#else + IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6954,7 +6993,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); +#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } @@ -7074,7 +7117,11 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) +#else + IF( isIVAS ) +#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7087,7 +7134,11 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 + L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ +#else L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); +#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } @@ -7250,7 +7301,11 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode +#else + Word16 isIVAS +#endif #endif ) { @@ -7288,7 +7343,11 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE element_mode, +#else + isIVAS, +#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx @@ -7304,7 +7363,11 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE element_mode, +#else + isIVAS, +#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 890e0e5c8..c02a6a182 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4646,8 +4646,13 @@ void fb_tbe_dec_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE , st->element_mode +#else + , + 0 +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); @@ -4720,8 +4725,13 @@ void fb_tbe_dec_ivas_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE , st->element_mode +#else + , + 1 +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 4f10d3b02..29ef4427a 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7333,7 +7333,11 @@ void fb_tbe_enc_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, +#else + 0, +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7471,7 +7475,11 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, +#else + 1, +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7484,7 +7492,11 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, +#else + 1, +#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -- GitLab From 10b4e67f2ee9d6fa65326e2d6ca1320dc76fe348 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 11:56:33 +0200 Subject: [PATCH 362/698] Revert "clang patch" This reverts commit 1de6bb47406cb7108ee6e67ac29762a7a50e5080. --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2900d54e9..c5b2941d5 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6792,7 +6792,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ + L_tmp[i] = W_sat_l( W_add( W_shr(W_tmpX,3), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ #else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ #endif -- GitLab From 8e842aba751226f7f011f4171bc440c556a168ac Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 11:56:43 +0200 Subject: [PATCH 363/698] Revert "test STAGE2_saturationmode2" This reverts commit 1daee4188980cd56ac1bcfbb35ff009c8da527a0. --- lib_com/options.h | 7 +++---- lib_com/swb_tbe_com_fx.c | 24 ------------------------ 2 files changed, 3 insertions(+), 28 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3ce190efc..4f564c9f4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -88,11 +88,10 @@ #define TEST_HR -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ /*0.9 WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ /*3.2 WMOPS*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE /*according to comment of @vaclav in MR!1390*/ /*overrides STAGE2 settings*/ -// #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ + //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c5b2941d5..10f508489 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6791,11 +6791,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr(W_tmpX,3), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); } } @@ -6834,11 +6830,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpX = W_mac_16_16( W_tmpX, input_fx[i], full_band_bpf_fx[0][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); i++; @@ -6848,11 +6840,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpX = W_mac_16_16( W_tmpX, input_fx[i - 1], full_band_bpf_fx[0][1] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); i++; @@ -6861,11 +6849,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 2], full_band_bpf_fx[3][2] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 3], full_band_bpf_fx[3][3] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp[i - 4], full_band_bpf_fx[3][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 ) ), 3 ) ); /*Q_input_fx + 11*/ -#endif move32(); i++; } @@ -6993,11 +6977,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 3], full_band_bpf_fx[4][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp[i], full_band_bpf_fx[1][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_tmp2[i - 4], full_band_bpf_fx[4][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_tmp2[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_tmp2[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); -#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_tmp2[i] ) ); } @@ -7134,11 +7114,7 @@ void elliptic_bpf_48k_generic_fx( W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 3], full_band_bpf_fx[5][3] ); W_tmpX = W_mac_32_16( W_tmpX, L_tmp2[i], full_band_bpf_fx[2][0] ); W_tmpY = W_msu_32_16( W_tmpY, L_output[i - 4], full_band_bpf_fx[5][4] ); -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_saturationmode2 - L_output[i] = W_sat_l( W_add( W_shr( W_tmpX, 3 ), W_shl( W_tmpY, 2 - 16 ) ) ); /*Q_input_fx + 11*/ -#else L_output[i] = W_sat_l( W_shr( W_add( W_tmpX, W_shl( W_tmpY, 2 - 16 + 3 + 16 ) ), 3 + 16 ) ); -#endif move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } -- GitLab From e47ccc1e1c7cad1050ab57bf9a62ccf218646434 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 13:10:36 +0200 Subject: [PATCH 364/698] make FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 permanent active, delete FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS --- lib_com/options.h | 2 -- lib_com/prot_fx.h | 8 -------- lib_com/swb_tbe_com_fx.c | 39 --------------------------------------- lib_dec/swb_tbe_dec_fx.c | 10 ---------- lib_enc/swb_tbe_enc_fx.c | 12 ------------ 5 files changed, 71 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 4f564c9f4..ed6303e70 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -91,7 +91,5 @@ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ - #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE /*according to comment of @vaclav in MR!1390*/ /*overrides STAGE2 settings*/ - //#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS /*Test stage2 macro with all isavas variable = 1 - evs BE test will fail at least*/ #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 1d2873dc4..8d70b1092 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3267,11 +3267,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE const int16_t element_mode, -#else - Word16 isIVAS, -#endif #endif Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -3306,11 +3302,7 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode -#else - Word16 isIVAS -#endif #endif ); diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 10f508489..a3b4bd5c6 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6696,11 +6696,7 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode, -#else - Word16 isIVAS, -#endif #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -6715,13 +6711,6 @@ void elliptic_bpf_48k_generic_fx( const Word16 full_band_bpf_fx[][5] /* i : filter coefficients b0,b1,b2,a0,a1,a2 Q13 */ ) { -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_TEST_ALLIVAS -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE - element_mode = 1; -#else - isIVAS = 1; -#endif -#endif Word16 i, j; #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 memory_fx0, Q_temp, Q_temp2; @@ -6773,11 +6762,7 @@ void elliptic_bpf_48k_generic_fx( IF( !IsUpsampled3 ) { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -6816,11 +6801,7 @@ void elliptic_bpf_48k_generic_fx( ELSE { #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; ) { @@ -6960,11 +6941,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7097,11 +7074,7 @@ void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic L_tmpMax = L_add( 0, 0 ); #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE IF( element_mode ) -#else - IF( isIVAS ) -#endif { FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -7277,11 +7250,7 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE int16_t element_mode -#else - Word16 isIVAS -#endif #endif ) { @@ -7319,11 +7288,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE element_mode, -#else - isIVAS, -#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_3_fx @@ -7339,11 +7304,7 @@ void synthesise_fb_high_band_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE element_mode, -#else - isIVAS, -#endif #endif 1, // IsUpsampled3 excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx ); diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index c02a6a182..890e0e5c8 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -4646,13 +4646,8 @@ void fb_tbe_dec_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE , st->element_mode -#else - , - 0 -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); @@ -4725,13 +4720,8 @@ void fb_tbe_dec_ivas_fx( /* FB TBE synthesis */ synthesise_fb_high_band_fx( fb_exc, Q_fb_exc, fb_synth, fb_exc_energy, ratio, st->L_frame, st->bfi, &( hBWE_TD->prev_fbbwe_ratio_fx ), hBWE_TD->fbbwe_hpf_mem_fx, hBWE_TD->fbbwe_hpf_mem_fx_Q, hb_synth_exp #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE , st->element_mode -#else - , - 1 -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ ); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 29ef4427a..4f10d3b02 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7333,11 +7333,7 @@ void fb_tbe_enc_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, -#else - 0, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7475,11 +7471,7 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, -#else - 1, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); @@ -7492,11 +7484,7 @@ void fb_tbe_enc_ivas_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE st->element_mode, -#else - 1, -#endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2_USEELEMENTMODE*/ #endif /*FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2*/ 0, // IsUpsampled3 input_fhb_new + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -- GitLab From e6ccb58bf5362caf51e4fbea2fecef32c878cd5c Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Wed, 16 Apr 2025 13:47:40 +0200 Subject: [PATCH 365/698] Introduce end-of-line normalization --- .gitattributes | 24 ++++++ lib_com/options.h | 182 +++++++++++++++++++++++----------------------- 2 files changed, 115 insertions(+), 91 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..63eef4d68 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,24 @@ +# Default behavior. Converts all text files to use LF in repository. +* text=auto + +# List all known generic text files +*.c text +*.csv text +*.h text +*.json text +*.m text +*.md text +*.prm text +*.py text +*.txt text + +# Set Windows specific text files to always use CRLF in working tree. +*.bat text eol=crlf +*.cmd text eol=crlf +*.sln text eol=crlf +*.vcxproj text eol=crlf +*.vcxproj.filters text eol=crlf + +# Set Unix specific text files to always use LF (also covers Windows subsystem for Linux) in working tree +*.sh text eol=lf + diff --git a/lib_com/options.h b/lib_com/options.h index 43c3c3038..99d528769 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -1,91 +1,91 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#ifndef OPTIONS_H -#define OPTIONS_H - -/* clang-format off */ - -/* ################### Start DEBUGGING switches ######################## */ - -/*#define DEBUGGING*/ /* Allows debugging message to be printed out during runtime */ -#ifdef DEBUGGING -#define DEBUG_MODE_INFO /* Define to output most important parameters to the subdirectory "res/" */ -#define DEBUG_MODE_INFO_TWEAK /* Enable command line switch to specify subdirectory for debug info output inside "./res/" */ -#define DEBUG_FORCE_MDCT_STEREO_MODE /* Force stereo mode decision for MDCT stereo: -stereo 3 1 forces L/R coding and -stereo 3 2 forces full M/S coding */ -/*#define DEBUG_FORCE_DIR*/ /* Force modes/parameters by reading from external binary files */ -/*#define DBG_WAV_WRITER*/ /* Enable dbgwrite_wav() function for generating ".wav" files */ -#define SUPPORT_FORCE_TCX10_TCX20 /* VA: Enable -force tcx10|tcx20 command-line option */ -#endif - -#define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ - -/*#define WMOPS*/ /* Activate complexity and memory counters */ -#ifdef WMOPS -/*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ -/*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ -/*#define WMOPS_WC_FRAME_ANALYSIS*/ /* Output detailed complexity analysis for the worst-case frame */ -/*#define MEM_COUNT_DETAILS*/ /* Output detailed memory analysis for the worst-case frame (writes to the file "mem_analysis.csv") */ -#endif - -/* #################### End DEBUGGING switches ############################ */ - -#ifndef BASOP_NOGLOB_DEV_USE_GLOBALS -#define BASOP_NOGLOB_DECLARE_LOCAL -#endif - -#define FIX_867_CLDFB_NRG_SCALE - -#define FIX_1378_ACELP_OUT_OF_BOUNDS - -/* Note: each compile switch (FIX_1101_...) is independent from the other ones */ -//#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ -#define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ -#define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ -#define FIX_1310_SPEEDUP_ivas_dirac_dec_output_synthesis_process_slot /*FhG: WMOPS tuning, nonbe*/ -/* Both following 2 macros (IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST*) are independent from each other, they refer to different code blocks */ -#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */ -//#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version. Obsoleted by MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */ -#define HARM_PUSH_BIT -#define HARM_ENC_INIT -//#define HARM_SCE_INIT -#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ -#define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ -#define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ - -#define TEST_HR - -#endif +/****************************************************************************************************** + + (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, + Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., + Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, + Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other + contributors to this repository. All Rights Reserved. + + This software is protected by copyright law and by international treaties. + The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, + Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., + Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, + Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other + contributors to this repository retain full ownership rights in their respective contributions in + the software. This notice grants no license of any kind, including but not limited to patent + license, nor is any license granted by implication, estoppel or otherwise. + + Contributors are required to enter into the IVAS codec Public Collaboration agreement before making + contributions. + + This software is provided "AS IS", without any express or implied warranties. The software is in the + development stage. It is intended exclusively for experts who have experience with such software and + solely for the purpose of inspection. All implied warranties of non-infringement, merchantability + and fitness for a particular purpose are hereby disclaimed and excluded. + + Any dispute, controversy or claim arising under or in relation to providing this software shall be + submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in + accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and + the United Nations Convention on Contracts on the International Sales of Goods. + +*******************************************************************************************************/ + +/*==================================================================================== + EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 + ====================================================================================*/ + +#ifndef OPTIONS_H +#define OPTIONS_H + +/* clang-format off */ + +/* ################### Start DEBUGGING switches ######################## */ + +/*#define DEBUGGING*/ /* Allows debugging message to be printed out during runtime */ +#ifdef DEBUGGING +#define DEBUG_MODE_INFO /* Define to output most important parameters to the subdirectory "res/" */ +#define DEBUG_MODE_INFO_TWEAK /* Enable command line switch to specify subdirectory for debug info output inside "./res/" */ +#define DEBUG_FORCE_MDCT_STEREO_MODE /* Force stereo mode decision for MDCT stereo: -stereo 3 1 forces L/R coding and -stereo 3 2 forces full M/S coding */ +/*#define DEBUG_FORCE_DIR*/ /* Force modes/parameters by reading from external binary files */ +/*#define DBG_WAV_WRITER*/ /* Enable dbgwrite_wav() function for generating ".wav" files */ +#define SUPPORT_FORCE_TCX10_TCX20 /* VA: Enable -force tcx10|tcx20 command-line option */ +#endif + +#define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ + +/*#define WMOPS*/ /* Activate complexity and memory counters */ +#ifdef WMOPS +/*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ +/*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ +/*#define WMOPS_WC_FRAME_ANALYSIS*/ /* Output detailed complexity analysis for the worst-case frame */ +/*#define MEM_COUNT_DETAILS*/ /* Output detailed memory analysis for the worst-case frame (writes to the file "mem_analysis.csv") */ +#endif + +/* #################### End DEBUGGING switches ############################ */ + +#ifndef BASOP_NOGLOB_DEV_USE_GLOBALS +#define BASOP_NOGLOB_DECLARE_LOCAL +#endif + +#define FIX_867_CLDFB_NRG_SCALE + +#define FIX_1378_ACELP_OUT_OF_BOUNDS + +/* Note: each compile switch (FIX_1101_...) is independent from the other ones */ +//#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ +#define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ +#define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ +#define FIX_1310_SPEEDUP_ivas_dirac_dec_output_synthesis_process_slot /*FhG: WMOPS tuning, nonbe*/ +/* Both following 2 macros (IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST*) are independent from each other, they refer to different code blocks */ +#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE /* FhG: reduces WMOPS of param_mc_prm_est, bit-exact to previous version */ +//#define IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE /* FhG: reduces WMOPS of param_mc_prm_est, not bit-exact to previous version. Obsoleted by MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */ +#define HARM_PUSH_BIT +#define HARM_ENC_INIT +//#define HARM_SCE_INIT +#define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ +#define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ +#define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ + +#define TEST_HR + +#endif -- GitLab From 1a99d47966f7153faa277303e6244a6214efbe4e Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 11:52:28 +0000 Subject: [PATCH 366/698] revert some unnecessary changes --- lib_com/options.h | 3 +-- lib_com/swb_tbe_com_fx.c | 2 -- lib_com/tools_fx.c | 26 +------------------------- lib_dec/ivas_stereo_icbwe_dec_fx.c | 10 ---------- lib_dec/swb_tbe_dec_fx.c | 10 ---------- lib_enc/swb_tbe_enc_fx.c | 12 ++++++------ 6 files changed, 8 insertions(+), 55 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index ed6303e70..c04b0e292 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -53,7 +53,7 @@ #define SUPPORT_JBM_TRACEFILE /* Support for JBM tracefile, which is needed for 3GPP objective/subjective testing, but not relevant for real-world implementations */ -#define WMOPS /* Activate complexity and memory counters */ +/*#define WMOPS*/ /* Activate complexity and memory counters */ #ifdef WMOPS /*#define WMOPS_PER_FRAME*/ /* Output per-frame complexity (writes one float value per frame to the file "wmops_analysis") */ /*#define WMOPS_DETAIL*/ /* Output detailed complexity printout for every function. Increases runtime overhead */ @@ -89,7 +89,6 @@ #define TEST_HR #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ - #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ #endif diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index a3b4bd5c6..98048380e 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7180,10 +7180,8 @@ void elliptic_bpf_48k_generic_fx( move32(); L_tmpMax = L_max( L_tmpMax, L_abs( L_output[i] ) ); } - #endif - memory_fx2[2][0] = L_tmp2[L_FRAME48k - 4]; memory_fx2[2][1] = L_tmp2[L_FRAME48k - 3]; memory_fx2[2][2] = L_tmp2[L_FRAME48k - 2]; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 6dc1c45f2..5f0e172bf 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -794,37 +794,13 @@ void Copy_Scale_sig_16_32_no_sat( } return; } -#ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat - L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); - - IF( L_tmp >= 0x7FFF ) - { - FOR( i = 0; i < lg; i++ ) - { - // y[i] = L_mult0(x[i], L_tmp); - y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* Overflow can occur here */ - } - return; - } - // ELSE - { - Word16 tmp = extract_l( L_tmp ); - FOR( i = 0; i < lg; i++ ) - { - y[i] = L_mult( x[i], tmp ); - move32(); - } - } -#else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); - move32(); /* Overflow can occur here */ + move32(); /* saturation can occur here */ } -#endif } void Copy_Scale_sig_32_16( diff --git a/lib_dec/ivas_stereo_icbwe_dec_fx.c b/lib_dec/ivas_stereo_icbwe_dec_fx.c index 772eb2d7d..c7bc98566 100644 --- a/lib_dec/ivas_stereo_icbwe_dec_fx.c +++ b/lib_dec/ivas_stereo_icbwe_dec_fx.c @@ -904,9 +904,6 @@ void stereo_icBWE_dec_fx( winSlope_fx = div_s( 1, winLen_fx ); /* Q15 */ alpha_fx = winSlope_fx; /* Q15 */ move16(); -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - Word16 winSlope_fx_ = sub( 32767 /* 1.0 in Q15*/, winSlope_fx ); -#endif FOR( i = 0; i < winLen_fx; i++ ) { L_tmp = L_mult0( alpha_fx, icbweM2Ref_fx ); /* Q29 */ @@ -914,17 +911,10 @@ void stereo_icBWE_dec_fx( tmp = shl( round_fx( L_tmp ), 1 ); /* Q14 */ synthRef_fx[i] = Mpy_32_16_1( synthRef_fx[i], tmp ); /* Qsyn - 1 */ move32(); -#ifdef FIX_1439_SPEEDUP_stereo_icBWE_dec_fx - if ( LE_16( alpha_fx, winSlope_fx_ ) ) - { - alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ - } -#else IF( LE_16( alpha_fx, sub( 32767 /* 1.0 in Q15*/, winSlope_fx ) ) ) { alpha_fx = add( alpha_fx, winSlope_fx ); /* Q15 */ } -#endif } FOR( ; i < NS2SA_FX2( st->output_Fs, FRAME_SIZE_NS ); i++ ) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 890e0e5c8..419d202fc 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -7032,24 +7032,14 @@ void ivas_swb_tbe_dec_fx( tmp1 = 0; move16(); - -#ifdef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx - Word32 idx32 = L_shr_r( 0x00333333, 10 ); /*NUM_SHB_SUBFR/L_FRAME16k*/ // Q16 -#endif - FOR( i = 0; i < L_FRAME16k; i++ ) { -#ifndef FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx Word16 idx = 0; move16(); IF( i != 0 ) { idx = idiv1616( i_mult( NUM_SHB_SUBFR, i ), L_FRAME16k ); } -#else - Word16 idx; - idx = extract_h( imult3216( idx32, i ) ); /*Q0*/ -#endif L_tmp1 = Mult_32_16( L_tmp, GainShape_fx[idx] ); /* Q : 18 + tmp +15 -15*/ White_exc16k_fx[i] = round_fx( Mult_32_16( L_tmp1, White_exc16k_fx[i] ) ); /* 18 + tmp +*Q_white_exc -15 -16 */ move16(); diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 4f10d3b02..3e1e606f9 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7299,18 +7299,18 @@ void fb_tbe_enc_fx( Word16 ratio; Word16 tmp_vec[L_FRAME48k]; Word16 idxGain; +#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic + Word16 input_fhb_buffer[L_FRAME48k + 4]; + Word16 *input_fhb = &input_fhb_buffer[0] + 4; +#else + Word16 input_fhb[L_FRAME48k]; +#endif Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; Word16 tmp, tmp1, tmp2, exp, exp2, exp_norm; Word16 s_max_value, exp_temp, i; TD_BWE_ENC_HANDLE hBWE_TD = st->hBWE_TD; -#ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic - Word16 input_fhb_buffer[L_FRAME48k + 4]; - Word16 *input_fhb = &input_fhb_buffer[0] + 4; -#else - Word16 input_fhb[L_FRAME48k]; -#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); -- GitLab From 939f40786b137a9ff68856fba1faa51ee2b13ddc Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Wed, 16 Apr 2025 14:36:00 +0200 Subject: [PATCH 367/698] clang patch --- lib_enc/swb_tbe_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 3e1e606f9..60094c9a0 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7304,7 +7304,7 @@ void fb_tbe_enc_fx( Word16 *input_fhb = &input_fhb_buffer[0] + 4; #else Word16 input_fhb[L_FRAME48k]; -#endif +#endif Word16 Sample_Delay_HP; Word32 fb_exc_energy, temp2; Word32 L_tmp; -- GitLab From 253a399c813055dfa394fe1a3b76857743726e61 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Thu, 17 Apr 2025 07:58:25 +0530 Subject: [PATCH 368/698] Fix for MSAN issue in ivas_dirac_dec_render_sf_fx and ivas_dirac_alloc_mem_fx --- lib_dec/ivas_dirac_dec_fx.c | 19 +++++++++++++++++++ lib_rend/ivas_dirac_rend_fx.c | 1 + 2 files changed, 20 insertions(+) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index dd48916cb..10b8059b9 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2185,6 +2185,25 @@ void ivas_dirac_dec_render_sf_fx( move16(); move16(); + + FOR( Word16 i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) + { + set32_fx( Cldfb_RealBuffer_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); + set32_fx( Cldfb_ImagBuffer_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); + } + } + + FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) + { + set32_fx( Cldfb_RealBuffer_Binaural_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); + set32_fx( Cldfb_RealBuffer_Binaural_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); + } + } + /* local copies of azi, ele, diffuseness */ Word16 azimuth[CLDFB_NO_CHANNELS_MAX]; Word16 elevation[CLDFB_NO_CHANNELS_MAX]; diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index f67f3761b..5a5f74ee8 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -986,6 +986,7 @@ ivas_error ivas_dirac_alloc_mem_fx( } hDirAC_mem->reference_power_len = imult1616( 5, num_freq_bands ); + set16_fx( hDirAC_mem->reference_power_q, Q31, 2 ); } IF( hDirACRend->proto_signal_decorr_on ) -- GitLab From 5a66ba75ce61877ba4e544057da2c4cdfe541678 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Thu, 17 Apr 2025 08:02:02 +0530 Subject: [PATCH 369/698] Updates for ivas_analy_sp_fx to improve precision --- lib_enc/analy_sp_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/analy_sp_fx.c b/lib_enc/analy_sp_fx.c index 4f96ea2d4..57dbb369c 100644 --- a/lib_enc/analy_sp_fx.c +++ b/lib_enc/analy_sp_fx.c @@ -634,14 +634,14 @@ void ivas_analy_sp_fx( move32(); Bin_E[L_FFT - 1] = Bin_E[L_FFT - 2]; // *q_Bin_E move32(); - + Word32 add_const = 21475; // 1e-5 in Q31 FOR( i = 0; i < L_FFT / 2; i++ ) { Bin_E_old[i] = Bin_E[i]; // *q_Bin_E move32(); /* PS[i] = ( Bin_E[i] + 1e-5f + Bin_E[i + L_FFT / 2] + 1e-5f ) / 2.0f; */ - PS[i] = W_extract_h( W_mac_32_32( W_mult_32_32( Bin_E[i], ONE_IN_Q30 ), Bin_E[i + L_FFT / 2], ONE_IN_Q30 ) ); // *q_Bin_E + PS[i] = W_extract_h( W_add( W_mac_32_32( W_mult_32_32( Bin_E[i], ONE_IN_Q30 ), Bin_E[i + L_FFT / 2], ONE_IN_Q30 ), W_shr( W_shl( add_const, 32 ), sub( 31, *q_Bin_E ) ) ) ); // *q_Bin_E move32(); /* Bin_E[i] = (float) ( 10.0f * log( PS[i] ) ); */ -- GitLab From 2d2d72145471d80f47eb7c3e44552b958c1d690c Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Wed, 16 Apr 2025 17:04:44 +0530 Subject: [PATCH 370/698] Fix for 3GPP issue 1491: [regression] Encoder crash for MCT-MC 5.1 at 32kHz/SWB in bw_detect_fx() --- lib_enc/bw_detect_fx.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/lib_enc/bw_detect_fx.c b/lib_enc/bw_detect_fx.c index 8a150d514..30382cfba 100644 --- a/lib_enc/bw_detect_fx.c +++ b/lib_enc/bw_detect_fx.c @@ -336,24 +336,33 @@ void bw_detect_fx( sum32 = L_mac0_o( sum32, *pt1, *pt1, &Overflow ); pt1++; } - - IF( LE_32( sum32, 1 ) ) + test(); + test(); + IF( st->element_mode != EVS_MONO && EQ_32( sum32, MAX_32 ) && GT_16( Q_dct, 41 ) /* Any Q-value greater than Q41 for MAX_32 will be less than 0.001*/ ) { - /*deal with zero spectrum*/ - spect_bin[i] = -1; + spect_bin[i] = -6144; /* log10f( 0.00100000005 ) in Q11 */ move16(); } ELSE { - /* spect_bin[i] = (float)log10(spect_bin[i]); - = log2(spect_bin[i])*log10(2); */ - e_tmp = norm_l( sum32 ); - L_tmp = L_shl( sum32, e_tmp ); - f_tmp = Log2_norm_lc( L_tmp ); - e_tmp = sub( sub( 30, e_tmp ), Q_dct ); - L_tmp = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ - spect_bin[i] = round_fx( L_shl( L_tmp, 11 ) ); /* Q11 */ - move16(); + IF( LE_32( sum32, 1 ) ) + { + /*deal with zero spectrum*/ + spect_bin[i] = -1; + move16(); + } + ELSE + { + /* spect_bin[i] = (float)log10(spect_bin[i]); + = log2(spect_bin[i])*log10(2); */ + e_tmp = norm_l( sum32 ); + L_tmp = L_shl( sum32, e_tmp ); + f_tmp = Log2_norm_lc( L_tmp ); + e_tmp = sub( sub( 30, e_tmp ), Q_dct ); + L_tmp = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ + spect_bin[i] = round_fx( L_shl( L_tmp, 11 ) ); /* Q11 */ + move16(); + } } } } -- GitLab From 2afc0761a28c8f8ef01c0b0b9b30628a51d3975d Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 17 Apr 2025 15:49:28 +0200 Subject: [PATCH 371/698] accept REMOVE_EVS_DUPLICATES --- Workspace_msvc/lib_dec.vcxproj | 3 - Workspace_msvc/lib_dec.vcxproj.filters | 3 - lib_com/bits_alloc_fx.c | 1313 +------------------- lib_com/gs_inact_switching_fx.c | 134 +- lib_com/gs_noisefill_fx.c | 10 +- lib_com/ivas_prot_fx.h | 2 +- lib_com/lsf_tools_fx.c | 220 ++-- lib_com/options.h | 2 - lib_com/prot_fx.h | 602 +++------ lib_com/swb_tbe_com_fx.c | 235 +--- lib_dec/FEC_fx.c | 15 +- lib_dec/FEC_scale_syn_fx.c | 574 +-------- lib_dec/acelp_core_dec_fx.c | 1544 ------------------------ lib_dec/acelp_core_dec_ivas_fx.c | 107 +- lib_dec/acelp_core_switch_dec_fx.c | 12 +- lib_dec/amr_wb_dec_fx.c | 38 +- lib_dec/cng_dec_fx.c | 683 +---------- lib_dec/dec_LPD_fx.c | 4 - lib_dec/dec_ace_fx.c | 30 +- lib_dec/dec_amr_wb_fx.c | 6 +- lib_dec/dec_gen_voic_fx.c | 534 +------- lib_dec/dec_pit_exc_fx.c | 432 +------ lib_dec/dec_post_fx.c | 241 +--- lib_dec/dec_ppp_fx.c | 17 +- lib_dec/dec_tran_fx.c | 12 +- lib_dec/dec_uv_fx.c | 100 +- lib_dec/evs_dec_fx.c | 16 +- lib_dec/fd_cng_dec_fx.c | 593 +-------- lib_dec/gain_dec_fx.c | 390 +----- lib_dec/gs_dec_fx.c | 693 +---------- lib_dec/ivas_core_dec_fx.c | 2 +- lib_dec/ivas_dirac_dec_fx.c | 4 +- lib_dec/ivas_stereo_mdct_core_dec_fx.c | 4 +- lib_dec/ivas_tcx_core_dec_fx.c | 7 +- lib_dec/ivas_td_low_rate_dec_fx.c | 20 +- lib_dec/lsf_dec_fx.c | 276 +---- lib_dec/pit_dec_fx.c | 256 +--- lib_dec/post_dec_fx.c | 18 +- lib_enc/acelp_core_enc_fx.c | 40 +- lib_enc/acelp_core_switch_enc_fx.c | 37 +- lib_enc/analy_lp_fx.c | 150 +-- lib_enc/cod_ace_fx.c | 11 +- lib_enc/enc_gen_voic_fx.c | 23 +- lib_enc/enc_tran_fx.c | 15 +- lib_enc/ivas_core_pre_proc_front_fx.c | 7 +- lib_enc/ivas_core_pre_proc_fx.c | 13 +- lib_enc/ivas_front_vad_fx.c | 6 +- lib_enc/ivas_td_low_rate_enc_fx.c | 4 +- lib_enc/lsf_enc_fx.c | 7 +- lib_enc/pre_proc_fx.c | 14 +- lib_enc/prot_fx_enc.h | 104 +- lib_enc/transition_enc_fx.c | 41 +- 52 files changed, 659 insertions(+), 8965 deletions(-) delete mode 100644 lib_dec/acelp_core_dec_fx.c diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 2d06d29aa..2839a5812 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -139,9 +139,6 @@ false - - false - diff --git a/Workspace_msvc/lib_dec.vcxproj.filters b/Workspace_msvc/lib_dec.vcxproj.filters index 8a4fc4605..ebf15bd4c 100644 --- a/Workspace_msvc/lib_dec.vcxproj.filters +++ b/Workspace_msvc/lib_dec.vcxproj.filters @@ -119,9 +119,6 @@ decoder_all_c - - decoder_all_c - decoder_all_c diff --git a/lib_com/bits_alloc_fx.c b/lib_com/bits_alloc_fx.c index e9abb7651..3bfcd0c20 100644 --- a/lib_com/bits_alloc_fx.c +++ b/lib_com/bits_alloc_fx.c @@ -434,174 +434,12 @@ static Word16 fcb_table( } /*-------------------------------------------------------------------* - * acelp_FCB_allocator() + * acelp_FCB_allocator_fx() * * Routine to allocate fixed innovation codebook bit-budget *--------------------------------------------------------------------*/ -#ifndef REMOVE_EVS_DUPLICATES -static ivas_error acelp_FCB_allocator( - Word16 *nBits, /* i/o: available bit-budget */ - Word16 fixed_cdk_index[], /* o : codebook index Q0 */ - Word16 nb_subfr, /* i : number of subframes */ - const Word16 L_subfr, /* i : subframe length */ - const Word16 coder_type, /* i : coder type */ - const Word16 tc_subfr, /* i : TC subframe index */ - const Word16 fix_first /* i : flag to indicate whether the first subframe bit-budget was fixed */ -) -{ - Word16 cdbk, sfr, step; - Word16 nBits_tmp; - Word16 *p_fixed_cdk_index; - Word16 max_n; - ivas_error error; - // PMT("Not floating point computation, but fixed point operator are still missing ") - - error = IVAS_ERR_OK; - move32(); - - cdbk = coder_type; /* just to avoid warning when DEBUGGING is deactivated */ - move16(); - - p_fixed_cdk_index = fixed_cdk_index; - - /* TRANSITION coding: first subframe bit-budget was already fixed, glottal pulse not in the first subframe */ - test(); - IF( GE_16( tc_subfr, L_SUBFR ) && fix_first ) - { - Word16 i; - - FOR( i = 0; i < nb_subfr; i++ ) - { - *nBits = sub( *nBits, ACELP_FIXED_CDK_BITS( fixed_cdk_index[i] ) ); - move16(); - } - return error; - } - - /* TRANSITION coding: first subframe bit-budget was already fixed, glottal pulse in the first subframe */ - sfr = 0; - move16(); - IF( fix_first ) - { - *nBits = sub( *nBits, ACELP_FIXED_CDK_BITS( fixed_cdk_index[0] ) ); - move16(); - sfr = 1; - move16(); - p_fixed_cdk_index++; - nb_subfr = 3; - move16(); - } - - /* distribute the bit-budget equally between subframes */ - IF( GT_16( L_subfr, L_SUBFR ) ) /* access fast_FCB_bits_2sfr */ - { - max_n = 6; - move16(); - } - ELSE - { - max_n = ACELP_FIXED_CDK_NB; - move16(); - } - FOR( cdbk = 0; cdbk < max_n; cdbk++ ) - { - IF( GT_32( L_mult0( fcb_table( cdbk, L_subfr ), nb_subfr ), L_deposit_l( *nBits ) ) ) - { - BREAK; - } - } - cdbk = sub( cdbk, 1 ); - -#ifdef DEBUGGING - if ( cdbk < 0 && coder_type != TRANSITION ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too low bit-budget for fixed innovation codebook (frame = %d). Exiting! \n" ); - } - if ( ( L_subfr == L_SUBFR && cdbk >= ACELP_FIXED_CDK_NB ) || ( L_subfr == 2 * L_SUBFR && fcb_table( cdbk, L_subfr ) == 128 /*stop value*/ ) ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too high bit-budget for fixed innovation codebook (frame = %d). Exiting! \n" ); - } -#endif - - set16_fx( p_fixed_cdk_index, cdbk, nb_subfr ); - nBits_tmp = 0; - move16(); - IF( cdbk >= 0 ) - { - nBits_tmp = fcb_table( cdbk, L_subfr ); - } - ELSE - { - nBits_tmp = 0; - move16(); - } - *nBits = sub( *nBits, i_mult( nBits_tmp, nb_subfr ) ); - move16(); - - /* try to increase the FCB bit-budget of the first subframe(s) */ - IF( LT_16( cdbk, ACELP_FIXED_CDK_NB - 1 ) ) - { - step = sub( fcb_table( add( cdbk, 1 ), L_subfr ), nBits_tmp ); - WHILE( *nBits >= step ) - { - ( *p_fixed_cdk_index )++; - *nBits = sub( *nBits, step ); - move16(); - p_fixed_cdk_index++; - } - - /* try to increase the FCB of the first subframe in cases when the next step is lower than the current step */ - step = sub( fcb_table( add( fixed_cdk_index[sfr], 1 ), L_subfr ), fcb_table( fixed_cdk_index[sfr], L_subfr ) ); - test(); - IF( GE_16( *nBits, step ) && cdbk >= 0 ) - { - fixed_cdk_index[sfr] = add( fixed_cdk_index[sfr], 1 ); - move16(); - *nBits = sub( *nBits, step ); - move16(); - test(); - IF( GE_16( *nBits, step ) && EQ_16( fixed_cdk_index[sfr + 1], sub( fixed_cdk_index[sfr], 1 ) ) ) - { - sfr = add( sfr, 1 ); - fixed_cdk_index[sfr] = add( fixed_cdk_index[sfr], 1 ); - move16(); - *nBits = sub( *nBits, step ); - move16(); - } - } - } - /* TRANSITION coding: allocate highest FCBQ bit-budget to the subframe with the glottal-shape codebook */ - IF( GE_16( tc_subfr, L_SUBFR ) ) - { - Word16 tempr; - - SWAP( fixed_cdk_index[0], fixed_cdk_index[tc_subfr / L_SUBFR] ); - - /* TRANSITION coding: allocate second highest FCBQ bit-budget to the last subframe */ - IF( idiv1616( tc_subfr, L_SUBFR ) < sub( nb_subfr, 1 ) ) - { - SWAP( fixed_cdk_index[( tc_subfr - L_SUBFR ) / L_SUBFR], fixed_cdk_index[nb_subfr - 1] ); - } - } - - /* when subframe length > L_SUBFR, number of bits instead of codebook index is signalled */ - IF( GT_16( L_subfr, L_SUBFR ) ) - { - Word16 i, j; - FOR( i = 0; i < nb_subfr; i++ ) - { - j = fixed_cdk_index[i]; - move16(); - fixed_cdk_index[i] = fast_FCB_bits_2sfr[j]; - move16(); - } - } - - return error; -} -#endif -static ivas_error acelp_FCB_allocator_ivas( +static ivas_error acelp_FCB_allocator_fx( Word16 *nBits, /* i/o: available bit-budget */ Word16 fixed_cdk_index[], /* o : codebook index Q0 */ Word16 nb_subfr, /* i : number of subframes */ @@ -754,1141 +592,16 @@ static ivas_error acelp_FCB_allocator_ivas( return error; } + /*-------------------------------------------------------------------* - * config_acelp1() + * config_acelp1_fx() * * Configure ACELP bit allocation * - should be in range of <6700; 24350> for ACELP@12.8kHz * - per channel bitrate minimum is 13250 kbps for ACELP@16kHz *--------------------------------------------------------------------*/ -#ifndef REMOVE_EVS_DUPLICATES -ivas_error config_acelp1( - const Word16 enc_dec, /* i : encoder/decoder flag */ - const Word32 total_brate, /* i : total bitrate */ - const Word32 core_brate_inp, /* i : core bitrate */ - const Word16 core, /* i : core */ - const Word16 extl, /* i : extension layer */ - const Word32 extl_brate, /* i : extension layer bitrate */ - const Word16 L_frame, /* i : frame length at internal Fs */ - const Word16 GSC_noisy_speech, /* i : GSC on SWB noisy speech flag */ - ACELP_config *acelp_cfg, /* i : ACELP bit-allocation */ - const Word16 signalling_bits, /* i : number of signalling bits */ - const Word16 coder_type, /* i : coder type */ - const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */ - const Word16 tc_subfr, /* i : TC subfr ID */ - const Word16 tc_call, /* i : TC call number (0,1,2,3,5(DEC)) */ - Word16 *nBits_es_Pred, /* o : number of bits for Es_pred Q */ - Word16 *unbits, /* o : number of unused bits */ - const Word16 element_mode, /* i : element mode */ - Word16 *uc_two_stage_flag, /* o : flag undicating two-stage UC */ - const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag (can be 1 only with secondary channel */ - const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */ - const Word16 idchan, /* i : stereo channel ID */ - const Word16 active_cnt, /* i : Active frame counter */ - const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag*/ - const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */ - const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */ -) -{ - Word16 i, bits, nb_subfr; - Word16 flag_hardcoded, coder_type_sw, fix_first; - Word32 core_brate; -#ifdef DEBUGGING - (void) active_cnt; -#endif - ivas_error error; - - error = IVAS_ERR_OK; - move32(); - // PMT("Not floating point computation, but fixed point operator are still missing ") - /*-----------------------------------------------------------------* - * Set the flag indicating two-stage Unvoiced (UC) frame - *-----------------------------------------------------------------*/ - - *uc_two_stage_flag = 0; - move16(); - IF( EQ_16( coder_type, UNVOICED ) ) - { - test(); - test(); - test(); - test(); - test(); - if ( GE_32( total_brate, MIN_UNVOICED_TWO_STAGE_BRATE ) && element_mode > EVS_MONO && ( idchan == 0 || ( ( GE_32( total_brate, 8500 ) || extl_brate == 0 ) && EQ_16( tdm_LRTD_flag, 1 ) ) ) ) - { - *uc_two_stage_flag = 1; - move16(); - } - } - - /*-----------------------------------------------------------------* - * Set the number of subframes - *-----------------------------------------------------------------*/ - - IF( EQ_16( L_frame, L_FRAME ) ) - { - nb_subfr = NB_SUBFR; - move16(); - -#ifdef DEBUGGING - if ( ( ( core_brate_inp < 5900 && coder_type > UNVOICED ) && !( core_brate_inp < MIN_TC_BRATE && coder_type == TRANSITION ) ) && !( idchan > 0 && element_mode == IVAS_CPE_TD ) && !( element_mode == IVAS_SCE && tdm_low_rate_mode ) ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too low bitrate (%d bps) for ACELP@12k8 in frame %d. Exiting!\n", core_brate_inp ); - } - - if ( core_brate_inp > ACELP_12k8_HIGH_LIMIT && core == ACELP_CORE ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too high bitrate (%d bps) for ACELP@12k8 in frame %d. Exiting!\n", core_brate_inp ); - } -#endif - } - ELSE /* L_frame == L_FRAME16k */ - { - nb_subfr = NB_SUBFR16k; - move16(); - -#ifdef DEBUGGING - if ( core_brate_inp < ACELP_16k_LOW_LIMIT && core == ACELP_CORE ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Too low bitrate (%d bps) for ACELP@16k in frame %d. Exiting!\n", core_brate_inp ); - } -#endif - } - - coder_type_sw = coder_type; - move16(); - IF( core != ACELP_CORE ) - { - /* used in acelp_core_switch_enc() */ - nb_subfr = 1; - move16(); - if ( EQ_16( L_frame, L_FRAME ) ) - { - coder_type_sw = TRANSITION; - move16(); - } - } - - /*-----------------------------------------------------------------* - * Check if the core_brate is hard coded (to keep BE for mono core) or not - *-----------------------------------------------------------------*/ - - flag_hardcoded = 0; - move16(); - i = 0; - move16(); - - WHILE( i < SIZE_BRATE_INTERMED_TBL ) - { - IF( EQ_32( core_brate_inp, brate_intermed_tbl[i] ) ) - { - flag_hardcoded = 1; - move16(); - BREAK; - } - - IF( LT_32( core_brate_inp, brate_intermed_tbl[i] ) ) - { - flag_hardcoded = 0; - move16(); - BREAK; - } - - i = add( i, 1 ); - } - - test(); - test(); - test(); - IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( coder_type, AUDIO ) && - LE_32( core_brate_inp, STEREO_GSC_BIT_RATE_ALLOC ) && EQ_32( brate_intermed_tbl[i], ACELP_9k60 ) ) /* Bit allocation should be mapped to 8 kb/s instead of 9.6 kb/s in this case */ - { - i = sub( i, 1 ); - } - - core_brate = brate_intermed_tbl[i]; - move32(); - - if ( element_mode > EVS_MONO ) - { - flag_hardcoded = 0; /* use automatic and flexible ACELP bit-budget allocation */ - move16(); - } - - test(); - if ( ( core != ACELP_CORE ) && ( element_mode == EVS_MONO ) ) /* needed for mode1 core switching in EVS mono */ - { - flag_hardcoded = 1; - move16(); - } - - /*-----------------------------------------------------------------* - * ACELP bit allocation - *-----------------------------------------------------------------*/ - test(); - test(); - IF( !( EQ_16( coder_type, TRANSITION ) && NE_16( tc_subfr, -1 ) ) || EQ_16( enc_dec, DEC ) ) - { - /* Set the bit-budget */ - bits = extract_l( Mpy_32_32( core_brate_inp, ONE_BY_FRAMES_PER_SEC_Q31 ) ); // Q0 - - test(); - test(); - IF( EQ_16( coder_type, TRANSITION ) && EQ_16( enc_dec, DEC ) && EQ_16( tc_call, 1 ) ) - { - bits = add( bits, *nBits_es_Pred ); /* equalize for 4th signaling bit estimated at the encoder in TC_0_192 */ - } - - /* Subtract signalling bits */ - test(); - test(); - IF( EQ_16( enc_dec, DEC ) && EQ_16( idchan, 1 ) && element_mode > EVS_MONO ) - { - bits = sub( bits, TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS ); - - IF( EQ_16( tdm_LRTD_flag, 1 ) ) - { - bits = add( bits, STEREO_BITS_TCA ); - } - - /* subtract TBE/BWE flag */ - test(); - test(); - test(); - test(); - test(); - test(); - IF( extl_brate > 0 && ( EQ_16( extl, WB_TBE ) || EQ_16( extl, SWB_TBE ) || EQ_16( extl, FB_TBE ) || EQ_16( extl, WB_BWE ) || EQ_16( extl, SWB_BWE ) || EQ_16( extl, FB_BWE ) ) ) - { - bits = sub( bits, 1 ); - } - } - ELSE - { - /* Subtract signalling bits */ - bits = sub( bits, signalling_bits ); - } - - test(); - test(); - test(); - test(); - test(); - test(); - IF( extl_brate > 0 && ( EQ_16( extl, WB_TBE ) || EQ_16( extl, SWB_TBE ) || EQ_16( extl, FB_TBE ) || EQ_16( extl, WB_BWE ) || EQ_16( extl, SWB_BWE ) || EQ_16( extl, FB_BWE ) ) ) - { - /* extension layer signalling bit is counted in the extension layer bitbudget */ - bits = add( bits, 1 ); - } - - /*-----------------------------------------------------------------* - * LSF Q bit-budget - *-----------------------------------------------------------------*/ - test(); - test(); - test(); - IF( !tdm_lp_reuse_flag || idchan == 0 ) - { - /* LSF Q bit-budget */ - acelp_cfg->lsf_bits = LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )]; - move16(); - - IF( !flag_hardcoded ) - { - IF( EQ_16( L_frame, L_FRAME ) ) - { - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( EQ_16( element_mode, IVAS_SCE ) && tdm_low_rate_mode ) - { - acelp_cfg->lsf_bits = LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )]; - move16(); - } - ELSE IF( ( LT_32( total_brate, 7200 ) || coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( idchan, 1 ) ) - { - /* TD stereo, secondary channel: do nothing */ - acelp_cfg->lsf_bits = LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )]; - move16(); - } - ELSE IF( element_mode > EVS_MONO && EQ_16( coder_type, AUDIO ) && LT_32( brate_intermed_tbl[i], ACELP_9k60 ) ) - { - /* primary channel: do nothing */ - } - ELSE IF( element_mode > EVS_MONO && EQ_16( coder_type, AUDIO ) /*&& brate_intermed_tbl[i] >= ACELP_9k60*/ ) - { - acelp_cfg->lsf_bits = 42; - move16(); - } - ELSE IF( LE_32( total_brate, 9600 ) || EQ_16( coder_type, UNVOICED ) ) - { - acelp_cfg->lsf_bits = 31; - move16(); - } - ELSE IF( LE_32( total_brate, 20000 ) ) - { - acelp_cfg->lsf_bits = 36; - move16(); - } - ELSE - { - acelp_cfg->lsf_bits = 41; - move16(); - } - } - ELSE /* L_frame == L_FRAME16k */ - { - acelp_cfg->lsf_bits = 41; - move16(); - } - } - - bits = sub( bits, acelp_cfg->lsf_bits ); - - /* mid-LSF Q bit-budget */ - acelp_cfg->mid_lsf_bits = mid_LSF_bits_tbl[LSF_BIT_ALLOC_IDX_fx( core_brate, coder_type )]; - move16(); - - test(); - if ( element_mode > EVS_MONO && EQ_16( coder_type, AUDIO ) /*&& brate_intermed_tbl[i] < ACELP_9k60*/ ) - { - acelp_cfg->mid_lsf_bits = 5; - move16(); - /* primary channel: do nothing */ - } - - bits = sub( bits, acelp_cfg->mid_lsf_bits ); - } - ELSE IF( EQ_16( tdm_lp_reuse_flag, 1 ) && EQ_16( idchan, 1 ) && NE_16( active_cnt, 1 ) ) - { - bits = sub( bits, TDM_IC_LSF_PRED_BITS ); - } - /* gain Q bit-budget - part 1: 'Es_pred' of memory-less gain Q */ - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( NE_16( coder_type, UNVOICED ) && NE_16( coder_type, AUDIO ) && coder_type != INACTIVE && !( LE_32( core_brate, ACELP_8k00 ) && NE_16( coder_type, TRANSITION ) ) ) /* mid bitrates in GC and VC, low+mid bitrates in TC */ || - ( coder_type == INACTIVE && !inactive_coder_type_flag ) /* AVQ inactive */ - ) - { - *nBits_es_Pred = Es_pred_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, -1, -1 )]; - move16(); - bits = sub( bits, *nBits_es_Pred ); - } - ELSE IF( *uc_two_stage_flag ) - { - *nBits_es_Pred = 4; - move16(); - bits = sub( bits, *nBits_es_Pred ); - } - } - ELSE - { - bits = *unbits; - move16(); - } - - test(); - IF( EQ_16( coder_type, TRANSITION ) && tc_call == 0 ) - { - *unbits = bits; - return error; - } - - /*-----------------------------------------------------------------* - * Low-rate mode - bits are allocated in tdm_low_rate_enc() - *-----------------------------------------------------------------*/ - test(); - IF( EQ_16( element_mode, IVAS_SCE ) && tdm_low_rate_mode ) - { - acelp_cfg->FEC_mode = 0; - acelp_cfg->ltf_mode = FULL_BAND; - *nBits_es_Pred = 0; - *unbits = 0; - acelp_cfg->ubits = 0; - move16(); - move16(); - move16(); - move16(); - move16(); - - return error; - } - - /*-----------------------------------------------------------------* - * Supplementary information for FEC - *-----------------------------------------------------------------*/ - - acelp_cfg->FEC_mode = 0; - move16(); - test(); - test(); - IF( GE_32( core_brate, ACELP_11k60 ) && ( idchan == 0 || element_mode == EVS_MONO ) ) - { - acelp_cfg->FEC_mode = 1; - move16(); - - test(); - test(); - IF( GT_16( coder_type, UNVOICED ) && LT_16( coder_type, AUDIO ) && NE_16( coder_type, VOICED ) ) - { - bits = sub( bits, FEC_BITS_CLS ); - } - - IF( NE_16( coder_type, TRANSITION ) ) - { - IF( GE_32( total_brate, ACELP_16k40 ) ) - { - acelp_cfg->FEC_mode = 2; - move16(); - test(); - IF( GT_16( coder_type, UNVOICED ) && LT_16( coder_type, AUDIO ) ) - { - bits = sub( bits, FEC_BITS_ENR ); - } - } - - IF( GE_32( total_brate, ACELP_32k ) ) - { - acelp_cfg->FEC_mode = 3; - move16(); - - test(); - IF( GT_16( coder_type, UNVOICED ) && LT_16( coder_type, AUDIO ) ) - { - bits = sub( bits, FEC_BITS_POS ); - } - } - } - } - - /*-----------------------------------------------------------------* - * LP filtering of the adaptive excitation - *-----------------------------------------------------------------*/ - test(); - test(); - test(); - test(); - test(); - test(); - IF( idchan > 0 && element_mode > EVS_MONO ) - { - acelp_cfg->ltf_mode = FULL_BAND; - move16(); - } - ELSE IF( EQ_16( coder_type, UNVOICED ) ) - { - acelp_cfg->ltf_mode = FULL_BAND; - move16(); - } - ELSE IF( ( EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) ) && LT_32( core_brate, ACELP_11k60 ) ) - { - acelp_cfg->ltf_mode = LOW_PASS; - move16(); - } - ELSE IF( GE_32( core_brate, ACELP_11k60 ) && ( NE_16( coder_type, AUDIO ) && !( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME ) ) ) ) - { - test(); - test(); - IF( coder_type == INACTIVE && EQ_16( L_frame, L_FRAME16k ) && inactive_coder_type_flag ) /* GSC Inactive @16kHz */ - { - acelp_cfg->ltf_mode = FULL_BAND; - move16(); - } - ELSE - { - acelp_cfg->ltf_mode = NORMAL_OPERATION; - move16(); - IF( coder_type != TRANSITION ) - { - bits = sub( bits, nb_subfr ); - } - } - } - ELSE - { - acelp_cfg->ltf_mode = FULL_BAND; - move16(); - } - - /*-----------------------------------------------------------------* - * UC bit-budget - *-----------------------------------------------------------------*/ - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( ( EQ_16( coder_type, UNVOICED ) && !( *uc_two_stage_flag ) ) || ( coder_type == INACTIVE && LE_32( core_brate, ACELP_9k60 ) ) ) && ( idchan == 0 || element_mode == EVS_MONO ) ) - { - bits = sub( bits, NBITS_NOISENESS ); /* noiseness */ - } - IF( EQ_16( coder_type, UNVOICED ) && !( *uc_two_stage_flag ) ) - { - bits = sub( bits, 3 * NB_SUBFR ); /* tilt factor */ - } - - /*-----------------------------------------------------------------* - * TC bit-budget - *-----------------------------------------------------------------*/ - - fix_first = 0; - move16(); - IF( EQ_16( coder_type, TRANSITION ) ) - { - if ( EQ_16( tc_call, 2 ) ) - { - fix_first = 1; - move16(); - } - - /* TC signalling */ - IF( EQ_16( L_frame, L_FRAME ) ) - { - IF( EQ_16( tc_subfr, TC_0_0 ) ) - { - IF( enc_dec == ENC ) - { - bits = sub( bits, 1 ); /* TC signalling */ - } - - IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) ) - { - bits = sub( bits, 3 ); /* LP filtering flag */ - } - } - ELSE IF( EQ_16( tc_subfr, TC_0_64 ) ) - { - IF( enc_dec == ENC ) - { - bits = sub( bits, 4 ); /* TC signalling */ - } - - IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) ) - { - bits = sub( bits, 3 ); /* LP filtering flag */ - } - } - ELSE IF( EQ_16( tc_subfr, TC_0_128 ) ) - { - IF( enc_dec == ENC ) - { - bits = sub( bits, 4 ); /* TC signalling */ - } - - IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) ) - { - bits = sub( bits, 2 ); /* LP filtering flag */ - } - } - ELSE IF( EQ_16( tc_subfr, TC_0_192 ) ) - { - IF( enc_dec == ENC ) - { - bits = sub( bits, 3 ); /* TC signalling */ - } - - IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) ) - { - bits = sub( bits, 1 ); /* LP filtering flag */ - } - } - ELSE IF( EQ_16( tc_subfr, L_SUBFR ) ) - { - IF( enc_dec == ENC ) - { - bits = sub( bits, 3 ); /* TC signalling */ - } - - IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) ) - { - bits = sub( bits, idiv1616( sub( L_FRAME - L_SUBFR, tc_subfr ), L_SUBFR ) ); /* LP filtering flag */ - } - } - ELSE - { - IF( enc_dec == ENC ) - { - bits = sub( bits, 4 ); /* TC signalling */ - } - - IF( EQ_16( acelp_cfg->ltf_mode, NORMAL_OPERATION ) ) - { - bits = sub( bits, idiv1616_1( sub( L_FRAME - L_SUBFR, tc_subfr ), L_SUBFR ) ); /* LP filtering flag */ - } - } - } - ELSE /* L_frame == L_FRAME16k */ - { - IF( enc_dec == ENC ) - { - IF( LE_16( tc_subfr, 2 * L_SUBFR ) ) - { - bits = sub( bits, 2 ); /* TC signalling */ - } - ELSE - { - bits = sub( bits, 3 ); /* TC signalling */ - } - } - - // bits -= ( L_FRAME16k - tc_subfr - L_SUBFR ) / L_SUBFR; /* LP filtering flag */ - bits = sub( bits, idiv1616_1( sub( L_FRAME16k - L_SUBFR, tc_subfr ), L_SUBFR ) ); /* LP filtering flag */ - } - - /* glottal-shape codebook bits */ - bits = sub( bits, 3 + 6 + 1 + 3 ); - } - - /*-----------------------------------------------------------------* - * pitch, innovation, gains bit-budget - *-----------------------------------------------------------------*/ - - acelp_cfg->fcb_mode = 0; - move16(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( tdm_low_rate_mode, 1 ) && ( coder_type != INACTIVE ) && NE_16( coder_type, UNVOICED ) ) /* GENERIC low rate mode for secondary channel */ - { - set16_fx( acelp_cfg->pitch_bits, 0, NB_SUBFR16k ); - set16_fx( acelp_cfg->gains_mode, 0, NB_SUBFR16k ); - - FOR( i = 0; i < 2; i++ ) - { - acelp_cfg->pitch_bits[i] = 0; - move16(); - IF( tdm_Pitch_reuse_flag == 0 ) - { - acelp_cfg->pitch_bits[i] = ACB_bits_tbl[BIT_ALLOC_IDX_fx( ACELP_7k20, GENERIC, i_mult( 2 * L_SUBFR, i ), TC_SUBFR2IDX_fx( tc_subfr ) )]; - move16(); - bits = sub( bits, acelp_cfg->pitch_bits[i] ); - } - acelp_cfg->gains_mode[i] = gain_bits_tbl[BIT_ALLOC_IDX_fx( ACELP_7k20, GENERIC, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )]; - move16(); - bits = sub( bits, acelp_cfg->gains_mode[i] ); - } - acelp_cfg->fcb_mode = 1; - move16(); - -#ifdef DEBUGGING - if ( bits >= 55 ) - { - printf( "too much bits -> %d, LPC = %d and pitch = %d\n", bits, tdm_lp_reuse_flag, tdm_Pitch_reuse_flag ); - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 ); - } - else -#endif - IF( GE_16( bits, 16 ) ) - { - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 ); - } - ELSE - { - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 ); - acelp_cfg->fixed_cdk_index[1] = -1; - move16(); - } - acelp_cfg->fixed_cdk_index[2] = -1; - move16(); - acelp_cfg->fixed_cdk_index[3] = -1; - move16(); - } - ELSE IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) || /* @12.8kHz core except of GSC */ - ( EQ_16( nb_subfr, NB_SUBFR16k ) && ( !inactive_coder_type_flag || coder_type != INACTIVE ) ) /* @16kHz core GC, TC, AVQ inactive */ || - EQ_16( core, HQ_CORE ) /* ACELP -> HQ switching in EVS */ - ) - { - /* pitch Q & gain Q bit-budget - part 2*/ - FOR( i = 0; i < nb_subfr; i++ ) - { - IF( EQ_16( L_frame, L_FRAME ) ) - { - test(); - IF( EQ_16( tdm_Pitch_reuse_flag, 1 ) && EQ_16( idchan, 1 ) ) - { - acelp_cfg->pitch_bits[i] = 0; - move16(); - } - ELSE - { - acelp_cfg->pitch_bits[i] = ACB_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )]; - move16(); - } - acelp_cfg->gains_mode[i] = gain_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type_sw, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )]; - move16(); - } - ELSE /* L_frame == L_FRAME16k */ - { - test(); - IF( EQ_16( tdm_Pitch_reuse_flag, 1 ) && EQ_16( idchan, 1 ) ) - { - acelp_cfg->pitch_bits[i] = 0; - move16(); - } - ELSE - { - acelp_cfg->pitch_bits[i] = ACB_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )]; - move16(); - } - acelp_cfg->gains_mode[i] = gain_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type_sw, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )]; - move16(); - } - - bits = sub( bits, acelp_cfg->pitch_bits[i] ); - - test(); - IF( coder_type == INACTIVE && EQ_16( acelp_cfg->gains_mode[i], 6 ) /* VQ vs. SQ threshold @32 kbps */ ) - { - bits = sub( bits, 5 ); - } - ELSE - { - if ( EQ_16( *uc_two_stage_flag, 1 ) ) - { - acelp_cfg->gains_mode[i] = 7; - move16(); - } - - bits = sub( bits, acelp_cfg->gains_mode[i] ); - } - } - - /* algebraic codebook bit-budget */ - test(); - test(); - test(); - test(); - test(); - test(); - IF( flag_hardcoded /* EVS */ || - ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ || - ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ ) - { - FOR( i = 0; i < nb_subfr; i++ ) - { - IF( EQ_16( L_frame, L_FRAME ) ) - { - acelp_cfg->fixed_cdk_index[i] = FCB_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_fx( tc_subfr ) )]; - move16(); - } - ELSE /* L_frame == L_FRAME16k */ - { - acelp_cfg->fixed_cdk_index[i] = FCB_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )]; - move16(); - } - bits = sub( bits, acelp_cfg->fixed_cdk_index[i] ); - } - } - ELSE IF( !( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) ) - { - test(); - IF( EQ_16( coder_type, UNVOICED ) && !( *uc_two_stage_flag ) ) - { - i = idiv1616( bits, NB_SUBFR ); - IF( s_and( i, 1 ) == 0 ) - { - i = sub( i, 1 ); /* must be odd */ - } - i = s_min( i, 13 ); -#ifdef DEBUG_MODE_TD - if ( i < 0 ) - IVAS_ERROR( IVAS_ERR_INTERNAL, "ERROR::: UC negative index should not happen at frame %d\n" ); -#endif - i = s_max( i, 0 ); /* If i == 0-> random noise generator will be used as FCB */ - set16_fx( acelp_cfg->fixed_cdk_index, i, NB_SUBFR ); - bits = sub( bits, i_mult( i, NB_SUBFR ) ); - } - ELSE - { - - acelp_cfg->fcb_mode = 1; - move16(); - test(); - test(); - IF( EQ_16( element_mode, IVAS_CPE_TD ) ) - { - IF( GE_16( bits, i_mult( ACELP_FIXED_CDK_BITS( 0 ), ( nb_subfr ) ) ) ) /* enough bits for all fcb */ - { - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); - } - ELSE IF( GE_16( bits, i_mult( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 1 ) ) ) ) - { - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr - 1, L_SUBFR, coder_type, tc_subfr, fix_first ); - acelp_cfg->fixed_cdk_index[3] = -1; - move16(); - } - ELSE IF( GE_16( bits, i_mult( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 2 ) ) ) ) - { - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 2 ), L_SUBFR, coder_type, tc_subfr, fix_first ); - acelp_cfg->fixed_cdk_index[2] = acelp_cfg->fixed_cdk_index[1]; - move16(); - acelp_cfg->fixed_cdk_index[1] = -1; - move16(); - acelp_cfg->fixed_cdk_index[3] = -1; - move16(); - } - ELSE IF( GE_16( bits, ACELP_FIXED_CDK_BITS( 0 ) ) ) - { - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, 1, L_SUBFR, coder_type, tc_subfr, fix_first ); - acelp_cfg->fixed_cdk_index[1] = acelp_cfg->fixed_cdk_index[0]; - move16(); - acelp_cfg->fixed_cdk_index[0] = -1; - move16(); - acelp_cfg->fixed_cdk_index[2] = -1; - move16(); - acelp_cfg->fixed_cdk_index[3] = -1; - move16(); - } - ELSE /* No FCB */ - { -#ifdef DEBUGGING - IVAS_ERROR( IVAS_ERR_INTERNAL, "WARNING!!!, No bit allocated to FCB, check frame %d\n" ); -#endif - acelp_cfg->fixed_cdk_index[0] = -1; - move16(); - acelp_cfg->fixed_cdk_index[1] = -1; - move16(); - acelp_cfg->fixed_cdk_index[2] = -1; - move16(); - acelp_cfg->fixed_cdk_index[3] = -1; - move16(); - } - } - ELSE IF( NE_16( element_mode, IVAS_CPE_TD ) && GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) ) - { - bits = 100; /* 9 kbps for fcb */ - move16(); - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); - } - ELSE - { - acelp_FCB_allocator( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); - } - } - } - - /* AVQ codebook */ - test(); - test(); - test(); - IF( ( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && coder_type != INACTIVE ) /* high-birate ACELP except IC */ || - ( !inactive_coder_type_flag && coder_type == INACTIVE ) /* AVQ inactive */ ) - { - FOR( i = 0; i < nb_subfr; i++ ) - { - IF( flag_hardcoded ) - { - acelp_cfg->AVQ_cdk_bits[i] = AVQ_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( core_brate, coder_type, i_mult( i, L_SUBFR ), TC_SUBFR2IDX_16KHZ_fx( tc_subfr ) )]; - move16(); - { - bits = sub( bits, acelp_cfg->AVQ_cdk_bits[i] ); - } - } - - bits = sub( bits, G_AVQ_BITS ); - } - - test(); - test(); - IF( GE_32( core_brate_inp, MIN_BRATE_AVQ_EXC ) && LE_32( core_brate_inp, MAX_BRATE_AVQ_EXC_TD ) && EQ_16( coder_type, GENERIC ) ) - { - /* harm. flag ACELP AVQ */ - bits = sub( bits, 1 ); - } - - IF( !flag_hardcoded ) - { - Word16 bit_tmp; - - bit_tmp = idiv1616( bits, nb_subfr ); - set16_fx( acelp_cfg->AVQ_cdk_bits, bit_tmp, nb_subfr ); - bits = sub( bits, i_mult( bit_tmp, nb_subfr ) ); - - bit_tmp = bits % nb_subfr; - move16(); - acelp_cfg->AVQ_cdk_bits[0] = add( acelp_cfg->AVQ_cdk_bits[0], bit_tmp ); - move16(); - bits = sub( bits, bit_tmp ); - } - } - } - ELSE IF( ( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) /* LBR secondary channel in TD stereo */ || - ( ( coder_type == INACTIVE || EQ_16( coder_type, AUDIO ) ) && EQ_16( nb_subfr, NB_SUBFR ) ) /* GSC @12.8kHz */ || - ( coder_type == INACTIVE && inactive_coder_type_flag ) /* AVQ inactive */ ) - { - Word32 Local_BR, Pitch_BR; - Word16 Pitch_CT; - - /* as defined at the beginning of [enc,dec]_pit_exc() */ - test(); - test(); - IF( GSC_IVAS_mode > 0 && ( GSC_noisy_speech || GT_32( core_brate, GSC_H_RATE_STG ) ) ) - { - Local_BR = ACELP_8k00; - move32(); - Pitch_CT = GENERIC; - move16(); - Pitch_BR = ACELP_8k00; - move32(); - IF( EQ_16( L_frame, L_FRAME16k ) ) - { - Local_BR = ACELP_14k80; - move32(); - test(); - if ( GSC_IVAS_mode > 0 && LT_32( core_brate, IVAS_24k4 ) ) - { - Local_BR = ACELP_9k60; - move32(); - } - Pitch_BR = core_brate; - move32(); - } - } - ELSE IF( GSC_noisy_speech ) - { - Local_BR = ACELP_7k20; - move32(); - Pitch_CT = GENERIC; - move16(); - Pitch_BR = ACELP_7k20; - move32(); - if ( EQ_16( L_frame, L_FRAME16k ) ) - { - Pitch_BR = core_brate; - move32(); - } - } - ELSE - { - Local_BR = ACELP_7k20; - move32(); - Pitch_CT = AUDIO; - move16(); - Pitch_BR = core_brate; - move32(); - - IF( EQ_16( L_frame, L_FRAME16k ) ) - { - Local_BR = ACELP_13k20; - move32(); - Pitch_CT = GENERIC; - move16(); - } - } - - FOR( i = 0; i < nb_subfr; i++ ) - { - IF( EQ_16( L_frame, L_FRAME16k ) ) - { - acelp_cfg->pitch_bits[i] = ACB_bits_16kHz_tbl[BIT_ALLOC_IDX_16KHZ_fx( Pitch_BR, Pitch_CT, i_mult( i, L_SUBFR ), 0 )]; - move16(); - acelp_cfg->fixed_cdk_index[i] = FCB_bits_tbl[BIT_ALLOC_IDX_fx( Local_BR, LOCAL_CT, i_mult( i, L_SUBFR ), 0 )]; - move16(); - } - ELSE - { - acelp_cfg->pitch_bits[i] = ACB_bits_tbl[BIT_ALLOC_IDX_fx( Pitch_BR, Pitch_CT, i_mult( i, L_SUBFR ), 0 )]; - move16(); - acelp_cfg->fixed_cdk_index[i] = FCB_bits_tbl[BIT_ALLOC_IDX_fx( Local_BR, LOCAL_CT, i_mult( i, L_SUBFR ), 0 )]; - move16(); - acelp_cfg->gains_mode[i] = gain_bits_tbl[BIT_ALLOC_IDX_fx( ACELP_7k20, LOCAL_CT, i_mult( i, L_SUBFR ), 0 )]; - move16(); - } - } - } - - test(); - test(); - test(); - IF( EQ_16( coder_type, TRANSITION ) && ( EQ_16( tc_call, 1 ) && tc_subfr == 0 && EQ_16( L_frame, L_FRAME ) ) ) - { - return error; - } - - /*-----------------------------------------------------------------* - * unused bits handling - *-----------------------------------------------------------------*/ - - acelp_cfg->ubits = 0; /* these bits could be reused for something else */ - move16(); - - test(); - IF( flag_hardcoded && NE_32( core_brate, PPP_NELP_2k80 ) ) - { - test(); - test(); - /* unused bits */ - IF( EQ_16( coder_type, AUDIO ) || ( coder_type == INACTIVE && LE_32( core_brate, ACELP_24k40 ) ) ) - { - acelp_cfg->ubits = 0; - move16(); - } - ELSE IF( EQ_16( L_frame, L_FRAME ) ) - { - acelp_cfg->ubits = reserved_bits_tbl[BIT_ALLOC_IDX_fx( core_brate, coder_type, -1, TC_SUBFR2IDX_fx( tc_subfr ) )]; - move16(); - } - ELSE - { - acelp_cfg->ubits = 0; - move16(); - } - - bits = sub( bits, acelp_cfg->ubits ); - } - - /* sanity check */ - test(); - test(); - test(); - IF( ( coder_type != INACTIVE && EQ_16( nb_subfr, NB_SUBFR ) && NE_16( coder_type, AUDIO ) ) || EQ_16( nb_subfr, NB_SUBFR16k ) ) - { - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( EQ_16( L_frame, L_FRAME16k ) && coder_type == INACTIVE && inactive_coder_type_flag ) /* GSC Inactive @16kHz */ || - ( GSC_IVAS_mode > 0 && EQ_16( L_frame, L_FRAME16k ) ) ) /* IVAS GSC @16kHz */ - { - acelp_cfg->ubits = 0; - move16(); - } - ELSE IF( flag_hardcoded && core == ACELP_CORE && bits != 0 ) - { -#ifdef DEBUGGING - IVAS_ERROR( IVAS_ERR_INTERNAL, "ERROR: bit-budget incorrect (%d bits) in frame %d.\n", (Word32) bits ); -#endif - } - ELSE IF( bits > 0 && !( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) ) - { - test(); - test(); - test(); - test(); - IF( idchan > 0 && EQ_16( element_mode, IVAS_CPE_TD ) ) - { - IF( !tdm_lp_reuse_flag ) - { - acelp_cfg->lsf_bits = add( acelp_cfg->lsf_bits, bits ); /* increase LSF Q bits */ - move16(); - bits = 0; - move16(); - } - ELSE - { - Word16 nb_prm = 4; - move16(); - if ( EQ_16( tdm_low_rate_mode, 1 ) ) - { - nb_prm = 2; - move16(); - } - /* First add remaining bits on gains */ - bits = sub( bits, allocate_unused( core_brate, coder_type, bits, nb_prm, 0, GAINSPRM, acelp_cfg->gains_mode ) ); - - /* Then, Increase pitch bit budget */ - test(); - IF( tdm_Pitch_reuse_flag == 0 && bits > 0 ) - { - bits = sub( bits, allocate_unused( core_brate, coder_type, bits, nb_prm, 0, PITCHPRM, acelp_cfg->pitch_bits ) ); - } - - /* Increase mid-lsf bit budget */ - test(); - IF( tdm_lp_reuse_flag == 0 && bits > 0 ) - { - bits = sub( bits, allocate_unused( core_brate, coder_type, bits, 1, 0, MID_LSFSPRM, &acelp_cfg->mid_lsf_bits ) ); - bits = sub( bits, allocate_unused( core_brate, coder_type, bits, 1, 0, LSFPRM, &acelp_cfg->lsf_bits ) ); - } - } - -#ifdef DEBUGGING - if ( idchan > 0 && bits > 0 && ( coder_type > UNVOICED || tdm_low_rate_mode == 0 ) ) - { - IVAS_ERROR( IVAS_ERR_INTERNAL, "WARNING !! Unused bits in secondary channel at frame %d\n" ); - } -#endif - } - - ELSE IF( core == ACELP_CORE && GE_16( coder_type, UNVOICED ) && LE_16( coder_type, GENERIC ) && EQ_16( L_frame, L_FRAME ) ) - { - acelp_cfg->lsf_bits = add( acelp_cfg->lsf_bits, bits ); /* increase LSF Q bits */ - move16(); - - test(); - IF( GT_16( acelp_cfg->lsf_bits, 46 ) ) - { - acelp_cfg->ubits = sub( acelp_cfg->lsf_bits, 46 ); - move16(); - acelp_cfg->lsf_bits = 46; - move16(); - } - ELSE IF( GT_16( acelp_cfg->lsf_bits, 42 ) && EQ_16( L_frame, L_FRAME ) ) - { - acelp_cfg->ubits = sub( acelp_cfg->lsf_bits, 42 ); - move16(); - acelp_cfg->lsf_bits = 42; - move16(); - } - } - ELSE - { - acelp_cfg->ubits = bits; - move16(); - } - } - ELSE IF( bits < 0 && !( EQ_16( coder_type, UNVOICED ) && EQ_16( tdm_low_rate_mode, 1 ) && EQ_16( element_mode, IVAS_CPE_TD ) ) ) - { -#ifdef DEBUGGING - IVAS_ERROR( IVAS_ERR_INTERNAL, "ERROR: bit-budget incorrect (%d bits) in frame %d.\n", (Word32) bits ); -#endif - } - } - - return error; -} - -/*-------------------------------------------------------------------* - * config_acelp1_IVAS() - * - * Configure ACELP bit allocation - * - should be in range of <6700; 24350> for ACELP@12.8kHz - * - per channel bitrate minimum is 13250 kbps for ACELP@16kHz - *--------------------------------------------------------------------*/ -#endif -ivas_error config_acelp1_IVAS( +ivas_error config_acelp1_fx( const Word16 enc_dec, /* i : encoder/decoder flag */ const Word32 total_brate, /* i : total bitrate */ const Word32 core_brate_inp, /* i : core bitrate */ @@ -2511,11 +1224,11 @@ ivas_error config_acelp1_IVAS( IF( GE_16( bits, 16 ) ) { - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 ); } ELSE { - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, 2, 2 * L_SUBFR, GENERIC, -1, 0 ); acelp_cfg->fixed_cdk_index[1] = -1; move16(); } @@ -2634,17 +1347,17 @@ ivas_error config_acelp1_IVAS( { IF( GE_16( bits, imult1616( ACELP_FIXED_CDK_BITS( 0 ), nb_subfr ) ) ) /* enough bits for all fcb */ { - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); } ELSE IF( GE_16( bits, imult1616( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 1 ) ) ) ) { - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 1 ), L_SUBFR, coder_type, tc_subfr, fix_first ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 1 ), L_SUBFR, coder_type, tc_subfr, fix_first ); acelp_cfg->fixed_cdk_index[3] = -1; move16(); } ELSE IF( GE_32( bits, imult1616( ACELP_FIXED_CDK_BITS( 0 ), sub( nb_subfr, 2 ) ) ) ) { - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 2 ), L_SUBFR, coder_type, tc_subfr, fix_first ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, sub( nb_subfr, 2 ), L_SUBFR, coder_type, tc_subfr, fix_first ); acelp_cfg->fixed_cdk_index[2] = acelp_cfg->fixed_cdk_index[1]; move16(); acelp_cfg->fixed_cdk_index[1] = -1; @@ -2654,7 +1367,7 @@ ivas_error config_acelp1_IVAS( } ELSE IF( GE_32( bits, ACELP_FIXED_CDK_BITS( 0 ) ) ) { - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, 1, L_SUBFR, coder_type, tc_subfr, fix_first ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, 1, L_SUBFR, coder_type, tc_subfr, fix_first ); acelp_cfg->fixed_cdk_index[1] = acelp_cfg->fixed_cdk_index[0]; move16(); acelp_cfg->fixed_cdk_index[0] = -1; @@ -2680,11 +1393,11 @@ ivas_error config_acelp1_IVAS( { bits = 100; /* 9 kbps for fcb */ move16(); - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); } ELSE { - acelp_FCB_allocator_ivas( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); + acelp_FCB_allocator_fx( &bits, acelp_cfg->fixed_cdk_index, nb_subfr, L_SUBFR, coder_type, tc_subfr, fix_first ); } } } diff --git a/lib_com/gs_inact_switching_fx.c b/lib_com/gs_inact_switching_fx.c index 582fd3c8a..119811275 100644 --- a/lib_com/gs_inact_switching_fx.c +++ b/lib_com/gs_inact_switching_fx.c @@ -33,144 +33,24 @@ /*------------------------------------------------------------------------*/ /* OUTPUT ARGUMENTS : */ /*------------------------------------------------------------------------*/ - /*------------------------------------------------------------------------*/ /* RETURN ARGUMENTS : */ /* _ None */ /*========================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES -void Inac_swtch_ematch_fx( - Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ - Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */ - Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */ - const Word16 coder_type, /* i : Coding mode */ - const Word16 L_frame, /* i : Frame lenght */ - const Word32 core_brate, /* i : Core bit rate */ - const Word16 Q_exc /* i : input and output format of exc2 */ - , - const Word16 bfi /* i : frame lost indicator */ - , - const Word16 last_core, /* i : Last core used */ - const Word16 last_codec_mode /* i : Last codec mode */ -) -{ - Word16 Ener_per_bd[MBANDS_GN]; - Word16 ftmp; - Word16 *pt_exc; - Word16 j, i; - - Word16 exp, frac; - Word32 L_tmp; - - /*-------------------------------------------------------------------------- - * average energy per band - *--------------------------------------------------------------------------*/ - - test(); - test(); - test(); - test(); - test(); - test(); - IF( EQ_16( coder_type, AUDIO ) && bfi == 0 ) - { - Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1 ); - - /* reset long-term energy per band */ - FOR( i = 0; i < MBANDS_GN; i++ ) - { - lt_ener_per_band[i] = Ener_per_bd[i]; - move16(); - } - } - ELSE IF( EQ_16( coder_type, VOICED ) || EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) || ( last_core != ACELP_CORE ) || NE_16( last_codec_mode, MODE1 ) ) - { - /* Find spectrum and energy per band for GC and VC frames */ - edct_16fx( exc2, dct_exc_tmp, L_frame, 5, EVS_MONO ); - - Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1 ); - - /* reset long-term energy per band */ - FOR( i = 0; i < MBANDS_GN; i++ ) - { - lt_ener_per_band[i] = Ener_per_bd[i]; - move16(); - } - } - ELSE IF( ( coder_type == INACTIVE ) && LE_32( core_brate, ACELP_24k40 ) ) - { - /* Find spectrum and energy per band for inactive frames */ - edct_16fx( exc2, dct_exc_tmp, L_frame, 5, EVS_MONO ); - Ener_per_band_comp_fx( dct_exc_tmp, Ener_per_bd, Q_exc, MBANDS_GN, 1 ); - - /* More agressive smoothing in the first 50 frames */ - pt_exc = dct_exc_tmp; - move16(); - FOR( i = 0; i < MBANDS_GN; i++ ) - { - /* Compute smoothing gain to apply with gain limitation */ - L_tmp = L_mult( ALPHA0_FX, lt_ener_per_band[i] ); /*Q(15+12+1)=Q(28) */ - L_tmp = L_mac( L_tmp, BETA0_FX, Ener_per_bd[i] ); /*Q28 */ - lt_ener_per_band[i] = round_fx( L_tmp ); /*Q12 */ - move16(); - - ftmp = sub( lt_ener_per_band[i], Ener_per_bd[i] ); /*Q12 */ - - /* ftmp = (float)pow(10, ftmp);= pow(2,3.321928*ftmp);*/ - - L_tmp = L_mult( 27213, ftmp ); /*Q(13+12+1)=Q26 ; 27213=3.321928 in Q13 */ - L_tmp = L_shr( L_tmp, 10 ); /* From Q26 to Q16 */ - frac = L_Extract_lc( L_tmp, &exp ); /* Extract exponent of ftmp */ - ftmp = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ - /* output of Pow2() will be: */ - /* 16384 < Pow2() <= 32767 */ - - exp = sub( exp, 14 ); - IF( LT_16( i, 2 ) ) - { - FOR( j = 0; j < 8; j++ ) - { - L_tmp = L_mult( *pt_exc, ftmp ); /* Q_exc*Q0 -> Q(Q_exc+1) */ - L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc+1) -> Q(16+Q_exc)*/ - *pt_exc = round_fx_sat( L_tmp ); - move16(); - pt_exc++; - } - } - ELSE - { - FOR( j = 0; j < 16; j++ ) - { - L_tmp = L_mult( *pt_exc, ftmp ); /* Q_exc*Q0 -> Q(Q_exc+1) */ - L_tmp = L_shl_sat( L_tmp, add( exp, 15 ) ); /* Q(Q_exc+1) -> Q(16+Q_exc)*/ - *pt_exc = round_fx_sat( L_tmp ); /*Q_exc*/ - move16(); - pt_exc++; - } - } - } - - /* Going back to time */ - edct_16fx( dct_exc_tmp, exc2, L_frame, 5, EVS_MONO ); - } - - return; -} -#endif -void Inac_switch_ematch_ivas_fx( +void Inac_switch_ematch_fx( Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */ Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */ const Word16 coder_type, /* i : Coding mode */ - const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */ + const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */ const Word16 L_frame, /* i : Frame lenght */ const Word16 Q_exc, /* i : input and output format of exc2 */ const Word16 bfi, /* i : frame lost indicator */ const Word16 last_core, /* i : Last core used */ const Word16 last_codec_mode, /* i : Last codec mode */ - const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag*/ - const Word16 element_mode /* i : element mode */ + const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */ + const Word16 element_mode /* i : element mode */ ) { Word16 Ener_per_bd[MBANDS_GN16k]; @@ -251,7 +131,6 @@ void Inac_switch_ematch_ivas_fx( exp = sub( exp, 14 ); IF( LT_16( i, 2 ) ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( element_mode, EVS_MONO ) ) { FOR( j = 0; j < 8; j++ ) @@ -264,7 +143,6 @@ void Inac_switch_ematch_ivas_fx( } } ELSE -#endif { FOR( j = 0; j < 8; j++ ) { @@ -278,7 +156,6 @@ void Inac_switch_ematch_ivas_fx( } ELSE { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( element_mode, EVS_MONO ) ) { FOR( j = 0; j < 16; j++ ) @@ -291,7 +168,6 @@ void Inac_switch_ematch_ivas_fx( } } ELSE -#endif { FOR( j = 0; j < 16; j++ ) { @@ -306,9 +182,7 @@ void Inac_switch_ematch_ivas_fx( } /* Going back to time */ -#ifdef REMOVE_EVS_DUPLICATES IF( GT_16( element_mode, EVS_MONO ) ) -#endif { Scale_sig( dct_exc_tmp, 240, 1 ); // Q_exc Scale_sig( exc2, 240, 1 ); // Q_exc diff --git a/lib_com/gs_noisefill_fx.c b/lib_com/gs_noisefill_fx.c index 61aa1333c..8488851ac 100644 --- a/lib_com/gs_noisefill_fx.c +++ b/lib_com/gs_noisefill_fx.c @@ -1332,8 +1332,6 @@ void highband_exc_dct_in_ivas_fx( } } - -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( element_mode, EVS_MONO ) ) { Comp_and_apply_gain_fx( exc_diffQ, Ener_per_bd_iQ, Ener_per_bd_yQ, last_bin, 0, Qexc_diffQ, *Q_exc ); @@ -1346,7 +1344,6 @@ void highband_exc_dct_in_ivas_fx( } ELSE { -#endif Word16 Q_tmp = *Q_exc; move16(); Word16 Q_old = *Q_exc; @@ -1373,9 +1370,7 @@ void highband_exc_dct_in_ivas_fx( { Scale_sig( exc_dct_in, L_frame, sub( *Q_exc, Q_old ) ); } -#ifdef REMOVE_EVS_DUPLICATES } -#endif /*--------------------------------------------------------------------------------------* * add the correction layer to the LF bins, @@ -1416,12 +1411,9 @@ void highband_exc_dct_in_ivas_fx( Q_hb_exc = 0; move16(); envelop_modify_fx( exc_diffQ, seed_tcx, last_bin, Ener_per_bd_iQ, *Q_exc, &Q_hb_exc ); -#ifdef REMOVE_EVS_DUPLICATES + test(); IF( GT_16( *Q_exc, Q_hb_exc ) && GT_16( element_mode, EVS_MONO ) ) -#else - IF( GT_16( *Q_exc, Q_hb_exc ) ) -#endif { Scale_sig( exc_wo_nf, L_frame, sub( Q_hb_exc, *Q_exc ) ); *Q_exc = Q_hb_exc; diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 8da9cd9ac..34c5df3af 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -3967,7 +3967,7 @@ ivas_error ivas_core_dec_fx( const Word16 sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ ); -void decod_gen_2sbfr_ivas_fx( +void decod_gen_2sbfr_fx( Decoder_State *st, /* i/o: decoder static memory */ const Word16 sharpFlag, /* i : formant sharpening flag `Q0*/ const Word16 *Aq, /* i : LP filter coefficient Q12*/ diff --git a/lib_com/lsf_tools_fx.c b/lib_com/lsf_tools_fx.c index 5f0b3b57b..a7713b48c 100644 --- a/lib_com/lsf_tools_fx.c +++ b/lib_com/lsf_tools_fx.c @@ -2863,40 +2863,39 @@ Word16 qlsf_ARSN_tcvq_Dec_16k_fx( } /*======================================================================*/ -/* FUNCTION : lsf_syn_mem_backup_fx */ +/* FUNCTION : lsf_syn_mem_backup_fx */ /*----------------------------------------------------------------------*/ /* PURPOSE : back-up synthesis filter memory and LSF qunatizer memories */ /*----------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16*) lsp_new : LSP vector to quantize */ -/* _ (Word16*) lsf_new : quantized LSF vector */ -/* _ (Word16*) lsp_mid : mid-frame LSP vector */ -/* _ (Encoder_State) st_fx : Encoder state Structure */ -/*-----------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _None */ -/*-----------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16) clip_var : pitch clipping state var */ -/* _ (Word16*) mem_AR : quantizer memory for AR model */ -/* _ (Word16*) mem_MA : quantizer memory for MA model */ -/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */ -/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */ -/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */ +/* INPUT ARGUMENTS : */ +/* _ (Word16*) lsp_new : LSP vector to quantize */ +/* _ (Word16*) lsf_new : quantized LSF vector */ +/* _ (Word16*) lsp_mid : mid-frame LSP vector */ +/* _ (Encoder_State) st_fx : Encoder state Structure */ +/*----------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _None */ +/*----------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _ (Word16) clip_var : pitch clipping state var */ +/* _ (Word16*) mem_AR : quantizer memory for AR model */ +/* _ (Word16*) mem_MA : quantizer memory for MA model */ +/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */ +/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */ +/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */ /* _ (Word16) mCb1 :counter for stationary frame after a transition frame */ -/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */ -/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */ -/* _ (Word16*) mem_syn_bck : synthesis filter memory */ -/* _ (Word16) mem_w0_bck : memory of the weighting filter */ -/* _ (Word16) streaklimit : LSF quantizer */ -/* _ (Word16) pstreaklen : LSF quantizer */ -/*-----------------------------------------------------------------------*/ - -/* _ None */ -/*-----------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*=======================================================================*/ +/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */ +/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */ +/* _ (Word16*) mem_syn_bck : synthesis filter memory */ +/* _ (Word16) mem_w0_bck : memory of the weighting filter */ +/* _ (Word16) streaklimit : LSF quantizer */ +/* _ (Word16) pstreaklen : LSF quantizer */ +/*----------------------------------------------------------------------*/ +/* _ None */ +/*----------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*======================================================================*/ void lsf_syn_mem_backup_fx( Encoder_State *st_fx, /* o: state structure */ @@ -2904,23 +2903,22 @@ void lsf_syn_mem_backup_fx( Word32 *gc_threshold_fx, /* i: Q16 */ Word16 *clip_var_bck_fx, /* i: Q(2.56), Q14, Q7, Q0, Q14, Q14 */ Word16 *next_force_sf_bck_fx, /* i: */ - - Word16 *lsp_new, /* o: LSP vector to quantize Q15 */ - Word16 *lsf_new, /* i: quantized LSF vector Q15 */ - Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */ - Word16 *clip_var, /* i: pitch clipping state var Q(2.56) */ - Word16 *mem_AR, /* i: quantizer memory for AR model 2.56 */ - Word16 *mem_MA, /* i: quantizer memory for MA model 2.56 */ - Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */ - Word16 *lsf_new_bck, /* o: quantized LSF vector - backup Q15 */ - Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */ - Word16 *mCb1, /* o: counter for stationary frame after a transition frame */ - Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets q_bin */ - Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets q_bin */ - Word16 *mem_syn_bck, /* i: synthesis filter memory q */ - Word16 *mem_w0_bck, /* i: memory of the weighting filter q */ - Word16 *streaklimit, /* i:LSF quantizer Q15 */ - Word16 *pstreaklen /* i:LSF quantizer */ + Word16 *lsp_new, /* o: LSP vector to quantize Q15 */ + Word16 *lsf_new, /* i: quantized LSF vector Q15 */ + Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */ + Word16 *clip_var, /* i: pitch clipping state var Q(2.56) */ + Word16 *mem_AR, /* i: quantizer memory for AR model 2.56 */ + Word16 *mem_MA, /* i: quantizer memory for MA model 2.56 */ + Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */ + Word16 *lsf_new_bck, /* o: quantized LSF vector - backup Q15 */ + Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */ + Word16 *mCb1, /* o: counter for stationary frame after a transition frame */ + Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets q_bin */ + Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets q_bin */ + Word16 *mem_syn_bck, /* i: synthesis filter memory q */ + Word16 *mem_w0_bck, /* i: memory of the weighting filter q */ + Word16 *streaklimit, /* i:LSF quantizer Q15 */ + Word16 *pstreaklen /* i:LSF quantizer */ ) { Word16 i; @@ -2985,25 +2983,31 @@ void lsf_syn_mem_backup_fx( return; } + +/*-------------------------------------------------------------------* + * lsf_syn_mem_backup_fx() + * + * + *--------------------------------------------------------------------*/ + void lsf_syn_mem_backup_ivas_fx( Encoder_State *st_fx, /* i: state structure */ Word16 *btilt_code_fx, /* i: tilt code Q15 */ Word32 *gc_threshold_fx, /* i: Q16 */ Word16 *clip_var_bck_fx, /* o: Q(2.56), Q14, Q7, Q0, Q14, Q14 */ Word16 *next_force_sf_bck_fx, /* o: */ - - Word16 *lsp_new, /* i: LSP vector to quantize Q15 */ - Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */ - Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */ - Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */ - Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */ - Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */ - Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */ - Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */ - Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */ - Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */ - Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */ - Word16 *streaklimit, /* Q15 */ + Word16 *lsp_new, /* i: LSP vector to quantize Q15 */ + Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */ + Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */ + Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */ + Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */ + Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */ + Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */ + Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */ + Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */ + Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */ + Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */ + Word16 *streaklimit, /* Q15 */ Word16 *pstreaklen ) { Word16 i; @@ -3079,66 +3083,68 @@ void lsf_update_memory( move16(); mem_MA[i] = sub( sub( qlsf[i], lsf_means[narrowband][i] ), mult_r( MU_MA_FX, old_mem_MA[i] ) ); } + + return; } + /*======================================================================*/ -/* FUNCTION : lsf_syn_mem_restore_fx */ +/* FUNCTION : lsf_syn_mem_restore_fx */ /*----------------------------------------------------------------------*/ /* PURPOSE : restore synthesis filter memory and LSF quantizer memories*/ /*----------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16) clip_var : pitch clipping state var */ -/* _ (Word16*) mem_AR : quantizer memory for AR model */ -/* _ (Word16*) mem_MA : quantizer memory for MA model */ -/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */ -/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */ -/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */ +/* INPUT ARGUMENTS : */ +/* _ (Word16) clip_var : pitch clipping state var */ +/* _ (Word16*) mem_AR : quantizer memory for AR model */ +/* _ (Word16*) mem_MA : quantizer memory for MA model */ +/* _ (Word16*) lsp_new_bck : LSP vector to quantize- backup */ +/* _ (Word16*) lsf_new_bck : quantized LSF vector - backup */ +/* _ (Word16*) lsp_mid_bck : mid-frame LSP vector - backup */ /* _ (Word16) mCb1 :counter for stationary frame after a transition frame */ -/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */ -/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */ -/* _ (Word16*) mem_syn_bck : synthesis filter memory */ -/* _ (Word16) mem_w0_bck : memory of the weighting filter */ -/* _ (Word16) streaklimit : LSF quantizer */ -/* _ (Word16) pstreaklen : LSF quantizer */ -/*-----------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _None */ -/*-----------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16*) lsp_new : LSP vector to quantize */ -/* _ (Word16*) lsf_new : quantized LSF vector */ -/* _ (Word16*) lsp_mid : mid-frame LSP vector */ -/* _ (Encoder_State) st_fx : Encoder state Structure */ -/*-----------------------------------------------------------------------*/ - -/* _ None */ -/*-----------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*=======================================================================*/ +/* _ (Word32*) Bin_E : FFT Bin energy 128 *2 sets */ +/* _ (Word32*) Bin_E_old : FFT Bin energy 128 *2 sets */ +/* _ (Word16*) mem_syn_bck : synthesis filter memory */ +/* _ (Word16) mem_w0_bck : memory of the weighting filter */ +/* _ (Word16) streaklimit : LSF quantizer */ +/* _ (Word16) pstreaklen : LSF quantizer */ +/*----------------------------------------------------------------------*/ +/* INPUT/OUTPUT ARGUMENTS : */ +/* _None */ +/*----------------------------------------------------------------------*/ +/* OUTPUT ARGUMENTS : */ +/* _ (Word16*) lsp_new : LSP vector to quantize */ +/* _ (Word16*) lsf_new : quantized LSF vector */ +/* _ (Word16*) lsp_mid : mid-frame LSP vector */ +/* _ (Encoder_State) st_fx : Encoder state Structure */ +/*----------------------------------------------------------------------*/ +/* _ None */ +/*----------------------------------------------------------------------*/ +/* RETURN ARGUMENTS : */ +/* _ None */ +/*======================================================================*/ + void lsf_syn_mem_restore_fx( Encoder_State *st_fx, /* o: state structure */ Word16 btilt_code_fx, /* i: Q15 */ Word32 gc_threshold_fx, /* i: Q16 */ Word16 *clip_var_bck_fx, /* i: Q(2.56), Q14, Q7, Q0, Q14, Q14 */ Word16 next_force_sf_bck_fx, /* i: */ - - Word16 *lsp_new, /* o: LSP vector to quantize Q15 */ - Word16 *lsf_new, /* o: quantized LSF vector Q15 */ - Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */ - Word16 clip_var, /* i: pitch clipping state var Q(2.56) */ - Word16 *mem_AR, /* i: quantizer memory for AR model Q15 */ - Word16 *mem_MA, /* i: quantizer memory for MA model Q15 */ - Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */ - Word16 *lsf_new_bck, /* i: quantized LSF vector - backup Q15 */ - Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */ - Word16 mCb1, /* i: counter for stationary frame after a transition frame */ - Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */ - Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */ - Word16 *mem_syn_bck, /* i: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */ - Word16 mem_w0_bck, /* i: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */ - Word16 streaklimit, /* i:LSF quantizer Q15 */ - Word16 pstreaklen /* i:LSF quantizer */ + Word16 *lsp_new, /* o: LSP vector to quantize Q15 */ + Word16 *lsf_new, /* o: quantized LSF vector Q15 */ + Word16 *lsp_mid, /* o: mid-frame LSP vector Q15 */ + Word16 clip_var, /* i: pitch clipping state var Q(2.56) */ + Word16 *mem_AR, /* i: quantizer memory for AR model Q15 */ + Word16 *mem_MA, /* i: quantizer memory for MA model Q15 */ + Word16 *lsp_new_bck, /* i: LSP vector to quantize- backup Q15 */ + Word16 *lsf_new_bck, /* i: quantized LSF vector - backup Q15 */ + Word16 *lsp_mid_bck, /* i: mid-frame LSP vector - backup Q15 */ + Word16 mCb1, /* i: counter for stationary frame after a transition frame */ + Word32 *Bin_E, /* i: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */ + Word32 *Bin_E_old, /* i: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */ + Word16 *mem_syn_bck, /* i: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */ + Word16 mem_w0_bck, /* i: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */ + Word16 streaklimit, /* i:LSF quantizer Q15 */ + Word16 pstreaklen /* i:LSF quantizer */ ) { Word16 i; diff --git a/lib_com/options.h b/lib_com/options.h index daa609ed4..86b786588 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -95,6 +95,4 @@ #define TEST_HR -#define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions, ACELP low-band decoder */ - #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index e4d9b3dab..07e9dbdb1 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3286,67 +3286,33 @@ void synthesise_fb_high_band_fx( Word16 bpf_memory_Q[], Word16 Qout ); -#ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( - const Word16 L_frame_fx, /* i : length of the frame */ -#ifdef ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif - const Word16 i_subfr_fx, /* i : subframe index */ - const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ - const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ - const Word16 code_fx[], /* i : algebraic excitation Q9*/ - const Word16 voice_fac_fx, /* i : voicing factor Q15*/ - Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ - Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ - const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ - const Word16 code_preQ_fx[], /* i : prequantizer excitation */ - const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ - Word16 T0, /* i : integer pitch variables Q0 */ - Word16 T0_frac, /* i : Fractional pitch variables Q0*/ - const Word16 coder_type, /* i : coding type */ - Word32 core_brate /* i :core bitrate */ -#ifdef ADD_IVAS_TBE_CODE - , - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif -); -#endif - -void prep_tbe_exc_ivas_fx( - const Word16 L_frame_fx, /* i : length of the frame */ -#if 1 // def ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif - const Word16 i_subfr_fx, /* i : subframe index */ - const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ - const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ - const Word16 code_fx[], /* i : algebraic excitation Q9*/ - const Word16 voice_fac_fx, /* i : voicing factor Q15*/ - Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ - Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ - const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ - const Word16 code_preQ_fx[], /* i : prequantizer excitation */ - const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ - Word16 T0, /* i : integer pitch variables Q0 */ - Word16 T0_frac, /* i : Fractional pitch variables Q0*/ - const Word16 coder_type, /* i : coding type */ - Word32 core_brate -#if 1 // def ADD_IVAS_TBE_CODE - , /* i : core bitrate */ - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif -); - -Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */ - const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */ - Word16 *tilt_mem /* i/o: Tilt smoothing memory */ + const Word16 L_frame_fx, /* i : length of the frame */ + const Word16 L_subfr, /* i : subframe length */ + const Word16 i_subfr_fx, /* i : subframe index */ + const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ + const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ + const Word16 code_fx[], /* i : algebraic excitation Q9*/ + const Word16 voice_fac_fx, /* i : voicing factor Q15*/ + Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ + Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ + const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ + const Word16 code_preQ_fx[], /* i : prequantizer excitation */ + const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ + Word16 T0, /* i : integer pitch variables Q0 */ + Word16 T0_frac, /* i : Fractional pitch variables Q0*/ + const Word16 coder_type, /* i : coding type */ + const Word32 core_brate, /* i : core bitrate */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ + const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ +); + +/*! r: Formant filter strength [0,1] */ +Word16 swb_formant_fac_fx( + const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */ + Word16 *tilt_mem /* i/o: Tilt smoothing memory */ ); void wb_tbe_extras_reset_fx( @@ -4858,35 +4824,6 @@ Word16 BITS_ALLOC_config_acelp( const Word16 narrowband, const Word16 nb_subfr ); -#ifndef REMOVE_EVS_DUPLICATES -ivas_error config_acelp1( - const Word16 enc_dec, /* i : encoder/decoder flag */ - const Word32 total_brate, /* i : total bitrate */ - const Word32 core_brate_inp, /* i : core bitrate */ - const Word16 core, /* i : core */ - const Word16 extl, /* i : extension layer */ - const Word32 extl_brate, /* i : extension layer bitrate */ - const Word16 L_frame, /* i : frame length at internal Fs */ - const Word16 GSC_noisy_speech, /* i : GSC on SWB noisy speech flag */ - ACELP_config *acelp_cfg, /* i : ACELP bit-allocation */ - const Word16 signalling_bits, /* i : number of signalling bits */ - const Word16 coder_type, /* i : coder type */ - const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */ - const Word16 tc_subfr, /* i : TC subfr ID */ - const Word16 tc_call, /* i : TC call number (0,1,2,3,5(DEC)) */ - Word16 *nBits_es_Pred, /* o : number of bits for Es_pred Q */ - Word16 *unbits, /* o : number of unused bits */ - const Word16 element_mode, /* i : element mode */ - Word16 *uc_two_stage_flag, /* o : flag undicating two-stage UC */ - const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag (can be 1 only with secondary channel */ - const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */ - const Word16 idchan, /* i : stereo channel ID */ - const Word16 active_cnt, /* i : Active frame counter */ - const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag*/ - const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */ - const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */ -); -#endif Word16 set_ACELP_flag( const Word16 element_mode, /* i : element mode */ const Word32 element_brate, /* i : element bitrate */ @@ -5833,35 +5770,19 @@ void tcx_ltp_post_fx32( Word32 *tcx_buf, /* sig_q */ Word16 sig_q ); -#ifndef REMOVE_EVS_DUPLICATES -// gs_inact_switching_fx.c -void Inac_swtch_ematch_fx( - Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ - Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */ - Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */ - const Word16 coder_type, /* i : Coding mode */ - const Word16 L_frame, /* i : Frame lenght */ - const Word32 core_brate, /* i : Core bit rate */ - const Word16 Q_exc, /* i : i and output format of exc2 */ - const Word16 bfi, /* i : frame lost indicator */ - const short last_core, /* i : Last core used */ - const short last_codec_mode /* i : Last codec mode */ -); -#endif - -void Inac_switch_ematch_ivas_fx( +void Inac_switch_ematch_fx( Word16 exc2[], /* i/o: CELP/GSC excitation buffer Q_exc*/ Word16 dct_exc_tmp[], /* i : GSC excitation in DCT domain */ Word16 lt_ener_per_band[], /* i/o: Long term energy per band Q12 */ const Word16 coder_type, /* i : Coding mode */ - const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */ + const Word16 inactive_coder_type_flag, /* i : AVQ (0) or GSC (1) IC flag */ const Word16 L_frame, /* i : Frame lenght */ const Word16 Q_exc, /* i : input and output format of exc2 */ const Word16 bfi, /* i : frame lost indicator */ const Word16 last_core, /* i : Last core used */ const Word16 last_codec_mode, /* i : Last codec mode */ - const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag*/ - const Word16 element_mode /* i : element mode */ + const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag */ + const Word16 element_mode /* i : element mode */ ); // igf_base_fx.c @@ -6094,32 +6015,16 @@ void td_bwe_dec_init_fx( const Word32 output_Fs /* i : output sampling rate */ ); -#ifndef REMOVE_EVS_DUPLICATES -// lsf_dec_fx.c void lsf_dec_fx( - Decoder_State *st_fx, /* i/o: State structure */ - const Word16 tc_subfr, /* i : TC subframe index Q0*/ - Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/ - Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/ - Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/ - Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/ - Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/ - const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/ - , - const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/ -); -#endif -void lsf_dec_ivas_fx( - Decoder_State *st_fx, /* i/o: State structure */ - const Word16 tc_subfr, /* i : TC subframe index Q0*/ - Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/ - Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/ - Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/ - Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/ - Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/ - const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/ - , - const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/ + Decoder_State *st_fx, /* i/o: State structure */ + const Word16 tc_subfr, /* i : TC subframe index Q0*/ + Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/ + Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/ + Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/ + Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/ + Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/ + const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/ + const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/ ); /*! r: index of the maximum value in the input vector */ @@ -6264,21 +6169,9 @@ void lsf_mid_dec_fx( Word16 lsp_mid[] /* o : quantized LSPs Q15*/ ); -#ifndef REMOVE_EVS_DUPLICATES -// cng_dec_fx.c void CNG_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ - const Word16 last_element_mode, /* i : last element mode Q0 */ - Word16 Aq[], /* o : LP coefficients Q12 */ - Word16 *lsp_new, /* i/o: current frame LSPs Q15 */ - Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */ - Word16 *allow_cn_step, /* o : allow CN step Q0 */ - Word16 *sid_bw, /* i : 0-NB/WB, 1-SWB SID Q0 */ - Word32 *q_env ); -#endif -void CNG_dec_ivas_fx( - Decoder_State *st_fx, /* i/o: State structure */ - const Word16 last_element_mode, /* i : last element mode Q0 */ + const Word16 last_element_mode, /* i : last element mode Q0 */ Word16 Aq[], /* o : LP coefficients Q12 */ Word16 *lsp_new, /* i/o: current frame LSPs Q15 */ Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */ @@ -6688,12 +6581,12 @@ void hf_synth_amr_wb_fx( // dec_post_fx void Init_post_filter_fx( PFSTAT_HANDLE hPFstat /* i : core decoder parameters */ -); /* (i) : core decoder parameters */ +); /* i : core decoder parameters */ void nb_post_filt_fx( const Word16 L_frame, /* i : frame length */ - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ + PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *psf_lp_noise, /* i : Long term noise Q8 */ const Word16 tmp_noise, /* i : noise energy Q0 */ Word16 *Synth, /* i : 12k8 synthesis Qsyn */ @@ -6704,27 +6597,15 @@ void nb_post_filt_fx( const Word16 disable_hpf /* i : flag to diabled HPF */ ); -#ifndef REMOVE_EVS_DUPLICATES void formant_post_filt_fx( - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ - Word16 *synth_in, /* i : 12k8 synthesis */ - Word16 *Aq, /* i : LP filter coefficient */ - Word16 *synth_out, /* i/o: i signal */ - Word16 L_frame, - Word32 lp_noise, /* (i) : background noise energy (15Q16) */ - Word32 rate, /* (i) : bit-rate */ - const Word16 off_flag /* i : off flag */ -); -#endif -void formant_post_filt_ivas_fx( - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ + PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *synth_in, /* i : 12k8 synthesis */ - Word16 *Aq, /* i : LP filter coefficient */ - Word16 *synth_out, /* i/o: i signal */ - Word16 L_frame, - Word32 lp_noise, /* (i) : background noise energy (15Q16) */ - Word32 rate, /* (i) : bit-rate */ - const Word16 off_flag /* i : off flag */ + Word16 *Aq, /* i : LP filter coefficient Q12 */ + Word16 *synth_out, /* i/o: input signal */ + const Word16 L_frame, /* i : frame length */ + const Word32 lp_noise, /* (i) : background noise energy (15Q16) */ + const Word32 brate, /* (i) : bit-rate */ + const Word16 off_flag /* i : off flag */ ); void Filt_mu_fx( Word16 *sig_in, /* i : signal (beginning at sample -1) */ @@ -6890,65 +6771,34 @@ void PulseResynchronization_fx( Word32 /*float*/ const pitchEnd /*i Q16*/ ); -#ifndef REMOVE_EVS_DUPLICATES -// gs_dec_fx.c void decod_audio_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ - const Word16 *Aq, /* i : LP filter coefficient Q12*/ - Word16 *pitch_buf, /* o : floating pitch values for each subframe Q6*/ - Word16 *voice_factors, /* o : voicing factors Q15*/ - Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/ - Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/ - Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/ - Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/ - , - Word16 *gain_buf /*Q14*/ -); -#endif -void decod_audio_ivas_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ - const Word16 *Aq, /* i : LP filter coefficient Q12*/ - Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/ - Word16 *voice_factors, /* o : voicing factors Q15*/ - Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/ - Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/ - Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/ - Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/ - , - Word16 *gain_buf, /*Q14*/ + Decoder_State *st_fx, /* i/o: decoder static memory */ + Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ + const Word16 *Aq, /* i : LP filter coefficient Q12*/ + Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/ + Word16 *voice_factors, /* o : voicing factors Q15*/ + Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/ + Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/ + Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/ + Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ + Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/ const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag Q0*/ const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag Q0*/ const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6*/ ); -#ifndef REMOVE_EVS_DUPLICATES void gsc_dec_fx( - Decoder_State *st_fx, /* i/o: State structure */ - Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ - const Word16 pit_band_idx, /* i : bin position of the cut-off frequency Q0*/ - const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/ - const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/ - const Word16 nb_subfr, /* i : Number of subframe considered Q0*/ - const Word16 coder_type, /* i : coding type Q0*/ - Word16 *last_bin, /* i : last bin of bit allocation Q0*/ - const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ - Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/ - Word16 Q_exc ); -#endif -void gsc_dec_ivas_fx( - Decoder_State *st_fx, /* i/o: State structure */ - Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ + Decoder_State *st_fx, /* i/o: State structure */ + Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ const Word16 pit_band_idx, /* i : bin position of the cut-off frequency ` Q0*/ const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/ const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/ const Word16 nb_subfr, /* i : Number of subframe considered Q0*/ const Word16 coder_type, /* i : coding type Q0*/ Word16 *last_bin, /* i : last bin of bit allocation Q0*/ - const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ - Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/ + const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ + Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/ Word16 *Q_exc ); void GSC_dec_init( @@ -6959,18 +6809,15 @@ void GSC_dec_init_ivas_fx( GSC_DEC_HANDLE hGSCDec /* i/o: GSC data handle */ ); - -// gain_dec_fx.c - void Es_pred_dec_fx( - Word16 *Es_pred, /* o : predicited scaled innovation energy Q8*/ - const Word16 enr_idx, /* i : indice */ - const Word16 nb_bits, /* i : number of bits */ - const Word16 no_ltp /* i : no LTP flag */ + Word16 *Es_pred, /* o : predicited scaled innovation energy Q8*/ + const Word16 enr_idx, /* i : indice */ + const Word16 nb_bits, /* i : number of bits */ + const Word16 no_ltp /* i : no LTP flag */ ); void gain_dec_tc_fx( - Decoder_State *st_fx, /* i/o: decoder state structure */ + Decoder_State *st_fx, /* i/o: decoder state structure */ const Word16 *code_fx, /* i : algebraic code excitation */ const Word16 i_subfr_fx, /* i : subframe number */ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ @@ -7005,7 +6852,6 @@ void gain_dec_mless_fx( Word32 *norm_gain_code_fx /* o : norm. gain of the codebook excitation Q16*/ ); -#ifndef REMOVE_EVS_DUPLICATES void gain_dec_lbr_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ const Word16 coder_type, /* i : coding type */ @@ -7016,25 +6862,8 @@ void gain_dec_lbr_fx( Word16 *gain_inov_fx, /* o : gain of the innovation (used for normalization) Q12*/ Word32 *norm_gain_code_fx, /* o : norm. gain of the codebook excitation Q16*/ Word32 gc_mem[], /* i/o: gain_code from previous subframes */ - Word16 gp_mem[] /* i/o: gain_pitch from previous subframes */ - , - const Word16 L_subfr /* i : subfr lenght */ -); -#endif - -void gain_dec_lbr_ivas_fx( - Decoder_State *st_fx, /* i/o: decoder state structure */ - const Word16 coder_type, /* i : coding type */ - const Word16 i_subfr, /* i : subframe index */ - const Word16 *code_fx, /* i : algebraic excitation Q9 */ - Word16 *gain_pit_fx, /* o : quantized pitch gain Q14*/ - Word32 *gain_code_fx, /* o : quantized codebook gain Q16*/ - Word16 *gain_inov_fx, /* o : gain of the innovation (used for normalization) Q12*/ - Word32 *norm_gain_code_fx, /* o : norm. gain of the codebook excitation Q16*/ - Word32 gc_mem[], /* i/o: gain_code from previous subframes */ - Word16 gp_mem[] /* i/o: gain_pitch from previous subframes */ - , - const Word16 L_subfr /* i : subfr lenght */ + Word16 gp_mem[], /* i/o: gain_pitch from previous subframes */ + const Word16 L_subfr /* i : subfr lenght */ ); void lp_gain_updt_fx( @@ -7055,13 +6884,14 @@ void lp_gain_updt_ivas_fx( const Word16 L_frame /* i : length of the frame */ ); -Word32 gain_dec_gaus_fx( /* o : quantized codebook gain Q16 */ - Word16 index, /* i : quantization index */ - const Word16 bits, /* i : number of bits to quantize */ - const Word16 lowBound, /* i : lower bound of quantizer (dB) */ - const Word16 topBound, /* i : upper bound of quantizer (dB) */ - const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */ - Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */ +/*! r: quantized codebook gain Q16 */ +Word32 gain_dec_gaus_fx( + Word16 index, /* i : quantization index */ + const Word16 bits, /* i : number of bits to quantize */ + const Word16 lowBound, /* i : lower bound of quantizer (dB) */ + const Word16 topBound, /* i : upper bound of quantizer (dB) */ + const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */ + Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */ ); void gain_dec_SQ_fx( @@ -7155,23 +6985,7 @@ void re8_PPV_fx( Word16 y[] /* o : point in RE8 (8-dimensional integer vector) Q0 */ ); -#ifndef REMOVE_EVS_DUPLICATES -// dec_pit_exc_fx.c void dec_pit_exc_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 *Aq_fx, /* i : LP filter coefficient */ - const Word16 coder_type, /* i : coding type */ - const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ - Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */ - Word16 *code_fx, /* o : innovation */ - Word16 *exc_fx, /* i/o: adapt. excitation exc */ - Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */ - const Word16 nb_subfr_fx /* i : Number of subframe considered */ - , - Word16 *gain_buf /*Q14*/ -); -#endif -void dec_pit_exc_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* i : LP filter coefficient */ const Word16 coder_type, /* i : coding type */ @@ -7181,7 +6995,7 @@ void dec_pit_exc_ivas_fx( Word16 *exc_fx, /* i/o: adapt. excitation exc */ Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */ const Word16 nb_subfr_fx, /* i : Number of subframe considered */ - Word16 *gain_buf, /*Q14*/ + Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */ ); @@ -7225,24 +7039,8 @@ void Mode2_delta_pit_dec( Word16 **pt_indice /* i/o: pointer to Vector of Q indexes */ ); -#ifndef REMOVE_EVS_DUPLICATES -Word16 pit_decode_fx( /* o : floating pitch value */ - Decoder_State *st_fx, /* i/o: decoder state structure */ - const Word32 core_brate, /* i : core bitrate */ - const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */ - const Word16 L_frame, /* i : length of the frame */ - Word16 i_subfr, /* i : subframe index */ - const Word16 coder_type, /* i : coding type */ - Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */ - Word16 *T0, /* o : close loop integer pitch */ - Word16 *T0_frac, /* o : close loop fractional part of the pitch */ - Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */ - Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */ - const Word16 L_subfr /* i : subframe length */ -); -#endif /* o : floating pitch value */ -Word16 pit_decode_ivas_fx( +Word16 pit_decode_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ const Word32 core_brate, /* i : core bitrate */ const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */ @@ -7603,22 +7401,7 @@ void configureFdCngDec_fx( const Word16 Last_L_frame, const Word16 element_mode ); -#ifndef REMOVE_EVS_DUPLICATES -/* Apply the CLDFB-based CNG */ Word16 ApplyFdCng_fx( - Word16 *timeDomainInput, /* i : pointer to time domain i */ - Word16 Q, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - Word16 *powerSpectrum, -#endif - Word32 **cldfbBufferReal, /* i/o: real part of the CLDFB buffer */ - Word32 **cldfbBufferImag, /* i/o: imaginary part of the CLDFB buffer */ - Word16 *cldfbBufferScale, /* o : pointer to the scalefactor for real and imaginary part of the CLDFB buffer */ - Decoder_State *st, - const Word16 concealWholeFrame, /* i : binary flag indicating frame loss */ - Word16 is_music ); -#endif -Word16 ApplyFdCng_ivas_fx( Word16 *timeDomainInput, /* i : pointer to time domain input */ Word16 Q, Word32 *powerSpectrum, @@ -8210,14 +7993,11 @@ void FEC_pitch_estim_fx( const Word32 old_pitch_buf[], /* i : buffer of old subframe pitch values 15Q16 */ Word16 *bfi_pitch, /* i/o: update of the estimated pitch for FEC */ Word16 *bfi_pitch_frame, /* o : frame length when pitch was updated */ - Word16 *upd_cnt /* i/o: update counter */ - , - const Word16 coder_type, /* i : coder_type */ - Word16 element_mode /* i : element mode */ + Word16 *upd_cnt, /* i/o: update counter */ + const Word16 coder_type, /* i : coder_type */ + Word16 element_mode /* i : element mode */ ); -#ifndef REMOVE_EVS_DUPLICATES -// FEC_scale_sync_fx.c void FEC_scale_syn_fx( const Word16 L_frame, /* i : length of the frame */ Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/ @@ -8244,69 +8024,37 @@ void FEC_scale_syn_fx( Word16 *mem_syn, /* o: initial synthesis filter states */ Word16 Q_exc, Word16 Q_syn, + const Word16 element_mode, /* i : element mode */ const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */ - const Word16 force_scaling /* i: force scaling */ -); -#endif -void FEC_scale_syn_ivas_fx( - const Word16 L_frame, /* i : length of the frame */ - Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/ - Word16 clas, /* i/o: frame classification */ - const Word16 last_good, /* i: last good frame classification */ - Word16 *synth, /* i/o: synthesized speech at Fs = 12k8 Hz */ - const Word16 *pitch, /* i: pitch values for each subframe */ - Word32 L_enr_old, /* i: energy at the end of previous frame */ - Word32 L_enr_q, /* i: transmitted energy for current frame */ - const Word16 coder_type, /* i: coder type */ - const Word16 LSF_Q_prediction, /* i : LSF prediction mode */ - Word16 *scaling_flag, /* i/o: flag to indicate energy control of syn */ - Word32 *lp_ener_FEC_av, /* i/o: averaged voiced signal energy */ - Word32 *lp_ener_FEC_max, /* i/o: averaged voiced signal energy */ - const Word16 bfi, /* i: current frame BFI */ - const Word32 total_brate, /* i: total bitrate */ - const Word16 prev_bfi, /* i: previous frame BFI */ - const Word32 last_core_brate, /* i: previous frame core bitrate */ - Word16 *exc, /* i/o: excitation signal without enhancement */ - Word16 *exc2, /* i/o: excitation signal with enhancement */ - Word16 Aq[], /* i/o: LP filter coefs (can be modified if BR) */ - Word16 *old_enr_LP, /* i/o: LP filter E of last good voiced frame */ - const Word16 *mem_tmp, /* i: temp. initial synthesis filter states */ - Word16 *mem_syn, /* o: initial synthesis filter states */ - Word16 Q_exc, - Word16 Q_syn, -#ifdef REMOVE_EVS_DUPLICATES - const Word16 element_mode, /* i : element mode */ -#endif - const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */ - const Word16 force_scaling /* i: force scaling */ + const Word16 force_scaling /* i : force scaling */ ); // LD_music_post_filter_fx.c void LD_music_post_filter_fx( - MUSIC_POSTFILT_HANDLE hMusicPF, /* i/o: LD music postfilter handle */ - const Word16 dtc_in[], /* i : i synthesis Qdct */ - Word16 dtc_out[], /* o : output synthesis Qdct */ - const Word32 core_brate, /* i : core bitrate Q0 */ - Word16 *Old_ener_Q, /* i/o : Old energy scaling factor */ - const Word16 coder_type, /* i : Coder type : -1 in case of IO Q0 */ - const Word16 Last_coder_type, /* i : i scaling Q0 */ - const Word16 Qdct /* i : i scaling Q0 */ + MUSIC_POSTFILT_HANDLE hMusicPF, /* i/o: LD music postfilter handle */ + const Word16 dtc_in[], /* i : i synthesis Qdct */ + Word16 dtc_out[], /* o : output synthesis Qdct */ + const Word32 core_brate, /* i : core bitrate Q0 */ + Word16 *Old_ener_Q, /* i/o: Old energy scaling factor */ + const Word16 coder_type, /* i : Coder type : -1 in case of IO Q0 */ + const Word16 Last_coder_type, /* i : i scaling Q0 */ + const Word16 Qdct /* i : i scaling Q0 */ ); void Prep_music_postP_fx( - Word16 exc_buffer_in[], /* i/o: excitation buffer Q_exc*/ - Word16 dct_buffer_out[], /* o : DCT output buffer (qdct)*/ - Word16 filt_lfE[], /* i/o: long term spectrum energy Q15 */ - const Word16 last_core, /* i : last core */ - const Word16 element_mode, /* i : element mode */ - const Word16 *pitch_buf, /* i : current frame pitch information Q6*/ - Word16 *LDm_enh_lp_gbin, /* o : smoothed suppression gain, per bin FFT Q15*/ - const Word16 Q_exc, /* i : excitation scaling */ - Word16 *qdct /* o : Scaling factor of dct coefficient */ + Word16 exc_buffer_in[], /* i/o: excitation buffer Q_exc*/ + Word16 dct_buffer_out[], /* o : DCT output buffer (qdct)*/ + Word16 filt_lfE[], /* i/o: long term spectrum energy Q15 */ + const Word16 last_core, /* i : last core */ + const Word16 element_mode, /* i : element mode */ + const Word16 *pitch_buf, /* i : current frame pitch information Q6*/ + Word16 *LDm_enh_lp_gbin, /* o : smoothed suppression gain, per bin FFT Q15*/ + const Word16 Q_exc, /* i : excitation scaling */ + Word16 *qdct /* o : Scaling factor of dct coefficient */ ); void Post_music_postP_fx( - Word16 dct_buffer_in[], /* i/o: excitation buffer */ + Word16 dct_buffer_in[], /* i/o: excitation buffer */ Word16 *exc2, /* i/o: Current excitation to be overwriten */ const Word16 *mem_tmp, /* i : previous frame synthesis memory */ Word16 *st_mem_syn2, /* i/o: current frame synthesis memory */ @@ -8316,15 +8064,14 @@ void Post_music_postP_fx( Word16 *prev_Q_syn, /* i : previsous frame synthesis scaling */ Word16 *Q_syn, /* i : Current frame synthesis scaling */ Word16 *mem_syn_clas_estim_fx, /* i : old 12k8 synthesis used for frame classification*/ - const Word16 IsIO, /* i: Flag to indicate IO mode */ - Word16 *mem_deemph, /* i/o: speech deemph filter memory */ - Word16 *st_pst_old_syn_fx, /* i/o: psfiler */ - Word16 *st_pst_mem_deemp_err_fx, /* i/o: psfiler */ + const Word16 IsIO, /* i : Flag to indicate IO mode */ + Word16 *mem_deemph, /* i/o: speech deemph filter memory */ + Word16 *st_pst_old_syn_fx, /* i/o: psfiler */ + Word16 *st_pst_mem_deemp_err_fx, /* i/o: psfiler */ Word16 *mem_agc, - PFSTAT *pf_stat, /* i/o: All memories related to NB post filter */ - const Word16 *tmp_buffer /* tmp_buffer in Q-1 */ - , - Word16 *mem_tmp2 /* Temporary memory used with scale_syn */ + PFSTAT *pf_stat, /* i/o: All memories related to NB post filter */ + const Word16 *tmp_buffer, /* tmp_buffer in Q-1 */ + Word16 *mem_tmp2 /* Temporary memory used with scale_syn */ ); void music_postfilt_init( @@ -8556,29 +8303,17 @@ Word16 FEC_enhACB_fx( const Word16 puls_pos, /* i : decoder position of the last glottal pulses decoded in the previous frame */ const Word16 bfi_pitch /* i : Q6 pitch used for concealment */ ); -Word16 FEC_synchro_exc_fx( /* o : do_WI flag */ - const Word16 L_frame, /* i : length of the frame */ - Word16 *exc, /* i/o: exc vector to modify */ - const Word16 desire_puls_pos, /* i : Pulse position send by the encoder */ - const Word16 true_puls_pos, /* i : Present pulse location */ - const Word16 Old_pitch /* i : Pitch use to create temporary adaptive codebook */ + +/*! r: do_WI flag */ +Word16 FEC_synchro_exc_fx( + const Word16 L_frame, /* i : length of the frame */ + Word16 *exc, /* i/o: exc vector to modify */ + const Word16 desire_puls_pos, /* i : Pulse position send by the encoder */ + const Word16 true_puls_pos, /* i : Present pulse location */ + const Word16 Old_pitch /* i : Pitch use to create temporary adaptive codebook */ ); -#ifndef REMOVE_EVS_DUPLICATES -// dec_uv_fx.c void decod_unvoiced_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ - const Word16 coder_type, /* Q0 i : coding type */ - Word16 *tmp_noise_fx, /* Q5 o : long term temporary noise energy */ - Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe */ - Word16 *voice_factors_fx, /* Q15 o : voicing factors */ - Word16 *exc_fx, /* Q_X o : adapt. excitation exc */ - Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */ - Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */ - Word16 *gain_buf ); -#endif -void decod_unvoiced_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ @@ -8621,38 +8356,20 @@ void gaus_L2_dec( Word16 *seed_acelp /*i/o : random seed Q0 */ ); -#ifndef REMOVE_EVS_DUPLICATES -// dec_gen_voic_fx.c ivas_error decod_gen_voic_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 L_frame_fx, /* i : length of the frame */ - const Word16 sharpFlag_fx, /* i : formant sharpening flag */ - const Word16 *Aq_fx, /* i : LP filter coefficient */ - const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ - const Word16 do_WI_fx, /* i : do interpolation after a FER */ - Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */ - Word16 *voice_factors_fx, /* o : voicing factors */ - Word16 *exc_fx, /* i/o: adapt. excitation exc */ - Word16 *exc2_fx, /* i/o: adapt. excitation/total exc */ - Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */ - Word16 *unbits, /* number of unused bits */ - Word16 *gain_buf /*Q14*/ -); -#endif -ivas_error decod_gen_voic_ivas_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 L_frame, /* i : length of the frame */ - const Word16 sharpFlag_fx, /* i : formant sharpening flag */ - const Word16 *Aq_fx, /* i : LP filter coefficient */ - const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ - const Word16 do_WI_fx, /* i : do interpolation after a FER */ - Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */ - Word16 *voice_factors_fx, /* o : voicing factors */ - Word16 *exc_fx, /* i/o: adapt. excitation exc */ - Word16 *exc2_fx, /* i/o: adapt. excitation/total exc */ - Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */ - Word16 *unbits, /* number of unused bits */ - Word16 *gain_buf, + Decoder_State *st_fx, /* i/o: decoder static memory */ + const Word16 L_frame, /* i : length of the frame */ + const Word16 sharpFlag_fx, /* i : formant sharpening flag */ + const Word16 *Aq_fx, /* i : LP filter coefficient */ + const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ + const Word16 do_WI_fx, /* i : do interpolation after a FER */ + Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */ + Word16 *voice_factors_fx, /* o : voicing factors */ + Word16 *exc_fx, /* i/o: adapt. excitation exc */ + Word16 *exc2_fx, /* i/o: adapt. excitation/total exc */ + Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */ + Word16 *unbits, /* number of unused bits */ + Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */ ); @@ -9582,33 +9299,6 @@ void d_gain_pred_fx( Word16 **pt_indice /* i/o: pointer to the buffer of indices */ ); -#ifndef REMOVE_EVS_DUPLICATES -// acelp_core_dec_fx.c -ivas_error acelp_core_dec_fx( - Decoder_State *st_fx, /* i/o: decoder state structure */ - Word16 output[], /* o : synthesis @internal Fs */ - Word16 synth_out[], /* o : synthesis */ - Word16 save_hb_synth[], /* o : HB synthesis */ - Word32 bwe_exc_extended[], /* i/o: bandwidth extended excitation */ - Word16 *voice_factors, /* o : voicing factors */ - Word16 old_syn_12k8_16k[], /* o : intermediate ACELP synthesis for SWB BWE */ - Word16 sharpFlag, - Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe */ - Word16 *unbits, /* o : number of unused bits */ - Word16 *sid_bw /* o : 0-NB/WB, 1-SWB SID */ - , - STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle */ - const Word16 tdm_lspQ_PCh[M], /* i : Q LSPs for primary channel */ - const Word16 tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */ - const Word16 use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */ - const Word16 last_element_mode, /* i : last element mode */ - const Word32 last_element_brate, /* i : last element bitrate */ - const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */ - const Word16 nchan_out, /* i : number of output channels */ - STEREO_CNG_DEC_HANDLE hStereoCng, /* i : stereo CNG handle */ - const Word16 read_sid_info /* i : read SID info flag */ -); -#endif // evs_dec_fx.c ivas_error evs_dec_fx( Decoder_State *st_fx, /* i/o : Decoder state structure */ @@ -10678,7 +10368,7 @@ Word16 swb_bwe_dec_fx32( Word16 output_frame /* i : frame length */ ); -ivas_error acelp_core_dec_ivas_fx( +ivas_error acelp_core_dec_fx( Decoder_State *st, /* i/o: decoder state structure */ Word16 output_fx[], /* o : synthesis @internal Fs */ Word16 synth_fx16[], /* o : synthesis */ @@ -10975,6 +10665,7 @@ Word16 ari_decode_14bits_pow_ivas( Word16 *res, Tastat *s, UWord16 base ); + Word16 ari_decode_14bits_sign_ivas( Word16 *ptr, Word16 bp, @@ -10988,22 +10679,21 @@ void lsf_syn_mem_backup_ivas_fx( Word32 *gc_threshold_fx, /* i: Q16 */ Word16 *clip_var_bck_fx, /* o: Q(2.56), Q14, Q7, Q0, Q14, Q14 */ Word16 *next_force_sf_bck_fx, /* o: */ - - Word16 *lsp_new, /* i: LSP vector to quantize Q15 */ - Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */ - Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */ - Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */ - Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */ - Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */ - Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */ - Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */ - Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */ - Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */ - Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */ - Word16 *streaklimit, /* Q15 */ + Word16 *lsp_new, /* i: LSP vector to quantize Q15 */ + Word16 *lsp_mid, /* i: mid-frame LSP vector Q15 */ + Word16 *clip_var, /* o: pitch clipping state var Q(2.56) */ + Word16 *mem_AR, /* o: quantizer memory for AR model Q(2.56) */ + Word16 *mem_MA, /* o: quantizer memory for AR model Q(2.56) */ + Word16 *lsp_new_bck, /* o: LSP vector to quantize- backup Q15 */ + Word16 *lsp_mid_bck, /* o: mid-frame LSP vector - backup Q15 */ + Word32 *Bin_E, /* o: FFT Bin energy 128 *2 sets Q_new + Q_SCALE - 2 */ + Word32 *Bin_E_old, /* o: FFT Bin energy 128 sets Q_new + Q_SCALE - 2 */ + Word16 *mem_syn_bck, /* o: synthesis filter memory ( 15 - st_fx->hLPDmem->e_mem_syn ) */ + Word16 *mem_w0_bck, /* o: memory of the weighting filter ( 15 - st_fx->hLPDmem->e_mem_syn ) */ + Word16 *streaklimit, /* Q15 */ Word16 *pstreaklen ); -ivas_error config_acelp1_IVAS( +ivas_error config_acelp1_fx( const Word16 enc_dec, /* i : encoder/decoder flag */ const Word32 total_brate, /* i : total bitrate */ const Word32 core_brate_inp, /* i : core bitrate */ diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 2c0da33f5..fd841b67b 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7359,33 +7359,27 @@ void tbe_celp_exc( /* _ None */ /*======================================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( - const Word16 L_frame_fx, /* i : length of the frame */ -#ifdef ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif - const Word16 i_subfr_fx, /* i : subframe index */ - const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ - const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ - const Word16 code_fx[], /* i : algebraic excitation Q9*/ - const Word16 voice_fac_fx, /* i : voicing factor Q15*/ - Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ - Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ - const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ - const Word16 code_preQ_fx[], /* i : prequantizer excitation */ - const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ - Word16 T0, /* i : integer pitch variables Q0 */ - Word16 T0_frac, /* i : Fractional pitch variables Q0*/ - const Word16 coder_type, /* i : coding type */ - Word32 core_brate -#ifdef ADD_IVAS_TBE_CODE - , /* i : core bitrate */ - const int16_t element_mode, /* i : element mode */ - const int16_t idchan, /* i : channel ID */ - const int16_t flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif + const Word16 L_frame_fx, /* i : length of the frame */ + const Word16 L_subfr, /* i : subframe length */ + const Word16 i_subfr_fx, /* i : subframe index */ + const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ + const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ + const Word16 code_fx[], /* i : algebraic excitation Q9*/ + const Word16 voice_fac_fx, /* i : voicing factor Q15*/ + Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ + Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ + const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ + const Word16 code_preQ_fx[], /* i : prequantizer excitation */ + const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ + Word16 T0, /* i : integer pitch variables Q0 */ + Word16 T0_frac, /* i : Fractional pitch variables Q0*/ + const Word16 coder_type, /* i : coding type */ + const Word32 core_brate, /* i : core bitrate */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ + const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ ) { Word16 i; @@ -7396,176 +7390,6 @@ void prep_tbe_exc_fx( Word16 tmp /*, tmp1, tmp2*/; /*Word16 random_code[L_SUBFR * HIBND_ACB_L_FAC];*/ Word16 pitch; - - Word32 L_tmp, Ltemp1, Ltemp2; - Word32 tempQ31; - Word16 tempQ15; -#ifndef ADD_IVAS_TBE_CODE - Word16 L_subfr = L_SUBFR; - move16(); -#endif -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - /**voice_factors = VF_0th_PARAM + VF_1st_PARAM * voice_fac + VF_2nd_PARAM * voice_fac * voice_fac; - = VF_0th_PARAM + voice_fac * (VF_1st_PARAM + VF_2nd_PARAM * voice_fac ) - *voice_factors = min( max_val(0.0f, *voice_factors), 1.0f); */ - tempQ31 = L_deposit_h( VF_1st_PARAM_FX ); - tempQ15 = mac_r( tempQ31, VF_2nd_PARAM_FX, voice_fac_fx ); - tempQ31 = L_deposit_h( VF_0th_PARAM_FX ); - *voice_factors_fx = mac_r( tempQ31, voice_fac_fx, tempQ15 ); - move16(); - tmp = MAX_16; - move16(); - - pitch = shl_o( add( shl_o( T0, 2, &Overflow ), T0_frac ), 5, &Overflow ); /* Q7 */ - - test(); - test(); - IF( ( ( EQ_16( coder_type, VOICED ) ) || ( GT_16( pitch, 14784 /* 115.5 in Q7 */ ) ) ) && ( GT_32( core_brate, ACELP_8k00 ) ) ) - { - tmp = MAX_16; - move16(); - *voice_factors_fx = mult_r( *voice_factors_fx, tmp ); - move16(); - } - - *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); - move16(); -#ifdef ADD_IVAS_TBE_CODE - IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) - { - IF( flag_TD_BWE && i_subfr == 0 ) - { - set16_fx( bwe_exc, 0, L_FRAME32k ); - } - return; - } - -#endif - IF( EQ_16( L_frame_fx, L_FRAME ) ) - { - interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ - gain_code16 = round_fx_o( L_shl_o( gain_code_fx, Q_exc, &Overflow ), &Overflow ); /*Q_exc */ - FOR( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) - { - L_tmp = L_mult( gain_code16, tmp_code_fx[i] ); /* Q9 + Q_exc + 1*/ - L_tmp = L_shl_sat( L_tmp, 5 ); /* Q9 + Q_exc + Q6*/ - L_tmp = L_mac_sat( L_tmp, gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] ); /*Q15+Q_exc */ - L_tmp = L_shl_o( L_tmp, 1, &Overflow ); /*16+Q_exc */ /* saturation can occur here */ - bwe_exc_fx[i + i_subfr_fx * HIBND_ACB_L_FAC] = round_fx_o( L_tmp, &Overflow ); /*Q_exc */ - move16(); - } - } - ELSE - { - IF( gain_preQ_fx != 0 ) - { - FOR( i = 0; i < L_subfr; i++ ) - { - /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ - Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ - Ltemp2 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /*Q2 * Q10 -> Q12 */ - - Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ - Ltemp2 = L_shl_o( Ltemp2, add( Q_exc, 4 ) /*Q_exc+16-13*/, &Overflow ); /*Q_exc+16 */ - - tmp_code_preInt_fx[i] = round_fx_o( L_add_o( Ltemp1, Ltemp2, &Overflow ), &Overflow ); /* Q_exc */ - move16(); - } - } - ELSE - { - FOR( i = 0; i < L_subfr; i++ ) - { - /*code in the encoder is Q9 and there is no <<1 with Mult_32_16 Q16 * Q9 -> Q9 */ - Ltemp1 = Mult_32_16( gain_code_fx, code_fx[i] ); /* Q16 + Q9 + 1 - 16 = Q10 */ - Ltemp1 = L_shl_o( Ltemp1, add( Q_exc, 6 ) /*Q_exc+16-19*/, &Overflow ); /*Q_exc+16 */ - tmp_code_preInt_fx[i] = round_fx_o( Ltemp1, &Overflow ); /* Q_exc */ - move16(); - } - } - - interp_code_4over2_fx( tmp_code_preInt_fx, tmp_code_fx, L_subfr ); /* o: tmp_code in Q_exc */ - FOR( i = 0; i < L_subfr * 2; i++ ) - { - L_tmp = L_mult( gain_pit_fx, bwe_exc_fx[i + i_subfr_fx * 2] ); /*Q14+Q_exc+1 */ - tmp = round_fx_o( L_shl_o( L_tmp, 1 /* (Q_exc+16)-(14+Q_exc+1)*/, &Overflow ), &Overflow ); /* tmp in Q_exc */ - bwe_exc_fx[i + i_subfr_fx * 2] = add_o( tmp, tmp_code_fx[i], &Overflow ); /*Q_exc */ - move16(); - } - } - - return; -} - -/*======================================================================================*/ -/* FUNCTION : prep_tbe_exc_ivas_fx() */ -/*--------------------------------------------------------------------------------------*/ -/* PURPOSE : Prepare TBE excitation */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16) L_frame_fx : length of the frame */ -/* _ (Word16) i_subfr_fx : subframe index */ -/* _ (Word16) gain_pit_fx : Pitch gain (14) */ -/* _ (Word32) gain_code_fx : algebraic codebook gain (Q(16+Q_exc)) */ -/* _ (Word16*[]) code_fx : algebraic excitation (Q9) */ -/* _ (Word16) voice_fac_fx : voicing factor (Q15) */ -/* _ (Word16) gain_preQ_fx : prequantizer excitation gain */ -/* _ (Word16[]) code_preQ_fx : prequantizer excitation */ -/*--------------------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16*[]) voice_factors_fx : TBE voicing factor (Q15) */ -/*--------------------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _ (Word16[]) bwe_exc_fx : excitation for TBE (Q_exc) */ -/*--------------------------------------------------------------------------------------*/ - -/* _ None */ -/*--------------------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*======================================================================================*/ -#endif -void prep_tbe_exc_ivas_fx( - const Word16 L_frame_fx, /* i : length of the frame */ -#if 1 // def ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif - const Word16 i_subfr_fx, /* i : subframe index */ - const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ - const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ - const Word16 code_fx[], /* i : algebraic excitation Q9*/ - const Word16 voice_fac_fx, /* i : voicing factor Q15*/ - Word16 *voice_factors_fx, /* o : TBE voicing factor Q15*/ - Word16 bwe_exc_fx[], /* i/o: excitation for TBE Q_exc*/ - const Word16 gain_preQ_fx, /* i : prequantizer excitation gain */ - const Word16 code_preQ_fx[], /* i : prequantizer excitation */ - const Word16 Q_exc, /* i : Excitation, bwe_exc Q-factor */ - Word16 T0, /* i : integer pitch variables Q0 */ - Word16 T0_frac, /* i : Fractional pitch variables Q0*/ - const Word16 coder_type, /* i : coding type */ - Word32 core_brate -#if 1 // def ADD_IVAS_TBE_CODE - , /* i : core bitrate */ - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif -) -{ - Word16 i; - Word16 tmp_code_fx[2 * L_SUBFR * HIBND_ACB_L_FAC]; - Word16 tmp_code_preInt_fx[L_SUBFR]; - Word16 gain_code16 = 0; - move16(); - Word16 tmp /*, tmp1, tmp2*/; - /*Word16 random_code[L_SUBFR * HIBND_ACB_L_FAC];*/ - Word16 pitch; - Word32 L_tmp, Ltemp1, Ltemp2; Word32 tempQ31; Word16 tempQ15; @@ -7600,7 +7424,7 @@ void prep_tbe_exc_ivas_fx( *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); move16(); -#if 1 // def ADD_IVAS_TBE_CODE + test(); test(); IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) @@ -7613,7 +7437,6 @@ void prep_tbe_exc_ivas_fx( return; } -#endif IF( EQ_16( L_frame_fx, L_FRAME ) ) { interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ @@ -7672,6 +7495,7 @@ void prep_tbe_exc_ivas_fx( return; } + /*=============================================================================*/ /* FUNCTION : void swb_formant_fac_fx ( ) */ /*------------------------------------------------------------------------------*/ @@ -7691,9 +7515,10 @@ void prep_tbe_exc_ivas_fx( /* CALLED FROM : */ /*==============================================================================*/ -Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */ - const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */ - Word16 *tilt_mem /* i/o: Tilt smoothing memory (Q12) */ +/*! r: Formant filter strength [0,1] */ +Word16 swb_formant_fac_fx( + const Word16 lpc_shb2, /* Q12 i : 2nd HB LPC coefficient */ + Word16 *tilt_mem /* i/o: Tilt smoothing memory (Q12) */ ) { Word16 formant_fac; @@ -7713,7 +7538,6 @@ Word16 swb_formant_fac_fx( /* o : Formant filter strength tmp = sub( tmp, SWB_TILT_LOW_FX ); /* Q12 */ formant_fac = mult_r( tmp, SWB_TILT_DELTA_FX ); /* Q12 */ - IF( GT_16( formant_fac, 4096 /* 1 in Q12 */ ) ) { formant_fac = 4096; /* 1 in Q12 */ @@ -7733,6 +7557,12 @@ Word16 swb_formant_fac_fx( /* o : Formant filter strength } +/*-------------------------------------------------------------------* + * wb_tbe_extras_reset_fx() + * + * + *-------------------------------------------------------------------*/ + void wb_tbe_extras_reset_fx( Word16 mem_genSHBexc_filt_down_wb2[], Word16 mem_genSHBexc_filt_down_wb3[] ) @@ -7749,7 +7579,6 @@ void wb_tbe_extras_reset_fx( * Determine TBE bit consumption per frame from bitrate * *-------------------------------------------------------------------*/ - Word16 get_tbe_bits_fx( const Word32 total_brate, /* o : TBE bit consumption per frame */ const Word16 bwidth, /* i : overall bitrate */ diff --git a/lib_dec/FEC_fx.c b/lib_dec/FEC_fx.c index a23c9aa90..48d91a87a 100644 --- a/lib_dec/FEC_fx.c +++ b/lib_dec/FEC_fx.c @@ -510,19 +510,10 @@ void FEC_exc_estim_fx( move16(); /* st_fx->L_frame / L_SUBFR */ tmp = shr( st_fx->L_frame, 6 ); + /* Replication of the last spectrum, with a slight downscaling of its dynamic */ -#ifdef REMOVE_EVS_DUPLICATES - gsc_dec_ivas_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, &st_fx->Q_exc ); -#else - IF( st_fx->element_mode == EVS_MONO ) - { - gsc_dec_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, st_fx->Q_exc ); - } - ELSE - { - gsc_dec_ivas_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, &st_fx->Q_exc ); - } -#endif + gsc_dec_fx( st_fx, exc_dct_in, hGSCDec->Last_GSC_pit_band_idx, Diff_len, 0, tmp, st_fx->last_coder_type, &last_bin_fx, lsf_new, NULL, &st_fx->Q_exc ); + *tmp_noise = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/ move16(); /* Transform back to time domain */ diff --git a/lib_dec/FEC_scale_syn_fx.c b/lib_dec/FEC_scale_syn_fx.c index 714a60166..7f4586083 100644 --- a/lib_dec/FEC_scale_syn_fx.c +++ b/lib_dec/FEC_scale_syn_fx.c @@ -50,7 +50,6 @@ /* _ None */ /*========================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES void FEC_scale_syn_fx( const Word16 L_frame, /* i : length of the frame */ Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/ @@ -77,574 +76,7 @@ void FEC_scale_syn_fx( Word16 *mem_syn, /* o: initial synthesis filter states Q_syn*/ Word16 Q_exc, Word16 Q_syn, - const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */ - const Word16 force_scaling /* i: force scaling */ -) -{ - Word16 i; - Word32 L_enr1, L_enr2; - Word16 gain1, gain2, enr_LP; - Word16 tmp, tmp2, exp, exp2; - Word16 tmp3; - Word32 L_tmp; - Word16 scaling; - Word32 ener_max, L_enr2_av, L_ener2_max; - Word16 h1[L_FRAME / 2], tilt, pitch_dist, mean_pitch; - Word16 k; - Word32 L_mean_pitch; - - enr_LP = 0; - move16(); - gain2 = 0; - move16(); - gain1 = 0; - move16(); - *update_flg = 0; - move16(); - L_enr_old = L_max( 1, L_enr_old ); /* to avoid division by zero (*L_enr_old is always >= 0) */ - scaling = 16384; - move16(); /* Q14*/ - - /*-----------------------------------------------------------------* - * Find the synthesis filter impulse response on voiced - *-----------------------------------------------------------------*/ - test(); - IF( GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) ) - { - IF( EQ_16( L_frame, L_FRAME ) ) - { - enr_LP = Enr_1_Az_fx( Aq + ( NB_SUBFR - 1 ) * ( M + 1 ), L_SUBFR ); - } - ELSE /* L_frame == L_FRAME16k */ - { - enr_LP = Enr_1_Az_fx( Aq + ( NB_SUBFR16k - 1 ) * ( M + 1 ), L_SUBFR ); /*Q3*/ - } - } - - /*-----------------------------------------------------------------* - * Define when to scale the synthesis - *-----------------------------------------------------------------*/ - - IF( bfi ) - { - *scaling_flag = 1; - move16(); /* Always check synthesis on bad frames */ - } - ELSE IF( prev_bfi ) - { - test(); - IF( ( EQ_16( LSF_Q_prediction, AUTO_REGRESSIVE ) ) || ( EQ_16( LSF_Q_prediction, MOVING_AVERAGE ) ) ) - { - *scaling_flag = 2; - move16(); /* Decoded LSFs affected */ - } - ELSE IF( NE_16( coder_type, TRANSITION ) ) - { - *scaling_flag = 1; - move16(); /* SN, but not TC mode - LSF still affected by the interpolation */ - } - ELSE - { - *scaling_flag = 0; - move16(); /* LSF still possibly affected due to interpolation */ - } - scaling = 24576; /*1.5 Q14*/ - move16(); - } - ELSE - { - test(); - IF( ( EQ_16( LSF_Q_prediction, AUTO_REGRESSIVE ) ) && ( EQ_16( *scaling_flag, 2 ) ) ) - { - *scaling_flag = 2; - move16(); /* Continue with energy control till the end of AR prediction */ - } - ELSE IF( *scaling_flag > 0 ) - { - ( *scaling_flag ) = sub( *scaling_flag, 1 ); /* If scaling flag was equal to 2, add one control frame to account for the LSF interpolation */ - move16(); - } - scaling = 32767; /*2.0 Q14*/ - move16(); - } - - /*-----------------------------------------------------------------* - * Find the energy/gain at the end of the frame - *-----------------------------------------------------------------*/ - - frame_ener_fx( L_frame, clas, synth, pitch[( L_frame >> 6 ) - 1], &L_enr2 /*Q0*/, 1, Q_syn, 3, 0 ); - - - test(); - test(); - IF( bfi || ( EQ_32( total_brate, ACELP_7k20 ) ) || ( EQ_32( total_brate, ACELP_8k00 ) ) ) - { - /* previous frame erased and no TC frame */ - IF( *scaling_flag > 0 ) - { - /*enr2 += 0.01f;*/ - L_enr2 = L_max( L_enr2, 1 ); /* L_enr2 is in Q0 */ - - IF( bfi ) /* In all bad frames, limit the gain to 1 */ - { - /* gain2 = (float)sqrt( enr_old / enr2 );*/ - L_tmp = Sqrt_Ratio32( L_enr_old, 0, L_enr2, 0, &exp2 ); - gain2 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */ - - /*if( gain2 > 1.0f )gain2 = 1.0f;*/ - gain2 = s_min( gain2, 16384 ); - - /* find the energy/gain at the beginning of the frame */ - frame_ener_fx( L_frame, clas, synth, pitch[0], &L_enr1 /*Q0*/, 1, Q_syn, 3, 0 ); - - /*enr1 += 0.1f;*/ - L_enr1 = L_max( L_enr1, 1 ); /* L_enr2 is in Q0 */ - - /*gain1 = (float)sqrt( enr_old / enr1 );*/ - L_tmp = Sqrt_Ratio32( L_enr_old, 0, L_enr1, 0, &exp2 ); - gain1 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */ - - /*if( gain1 > 1.0f )gain1 = 1.0f;*/ - gain1 = s_min( gain1, 16384 ); /*Q14*/ - } - ELSE /* good frame */ - { - IF( L_enr_q == 0 ) /* If E info (FEC protection bits) is not available in the bitstream */ - { - L_enr_q = L_enr2; /*Q0*/ - set16_fx( h1, 0, L_FRAME / 2 ); - h1[0] = 1024; /*1.0f in Q10*/ - move16(); - /*syn_filt( Aq+(3*(M+1)), M, h1, h1, L_FRAME/2, h1+(M+1), 0 );*/ - E_UTIL_synthesis( 1, Aq + ( 3 * ( M + 1 ) ), h1, h1, L_FRAME / 2, h1 + ( M + 1 ), 0, M ); - - /*Compute tilt */ - /*rr0 = dotp( h1, h1, L_FRAME/2-1 ) + 0.1f;*/ - /*rr1 = dotp( h1, h1+1, L_FRAME/2-1 );*/ - /*tilt = rr1 / rr0;*/ - tilt = extract_h( L_shl_sat( get_gain( h1 + 1, h1, L_FRAME / 2 - 1 ), 15 ) ); /*Q15*/ - pitch_dist = 0; - move16(); - L_mean_pitch = L_mult( pitch[0], 8192 /*1.0f in Q13*/ ); /*Q14*/ - FOR( k = 0; k < ( NB_SUBFR - 1 ); k++ ) - { - pitch_dist = add( pitch_dist, abs_s( sub( pitch[k + 1], pitch[k] ) ) ); /*Q0*/ - L_mean_pitch = L_mac( L_mean_pitch, pitch[k + 1], 8192 ); /*Q14*/ - } - /*pitch_dist /= (float)(NB_SUBFR-1); */ - pitch_dist = mult_r( shl( pitch_dist, 4 ), 10923 /*1/(float)(NB_SUBFR-1) in Q15*/ ); /*Q4*/ - /*mean_pitch /= (float)(NB_SUBFR);*/ - mean_pitch = extract_h( L_shl( L_mean_pitch, 4 ) ); /*Q4*/ - - - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( GT_16( tilt, 22938 ) ) && /* HF resonnant filter */ - ( ( GT_16( pitch_dist, 8 << 4 ) ) || ( LT_16( mean_pitch, PIT_MIN << 4 ) ) ) && /* pitch unstable or very short */ - ( ( prev_bfi ) || ( ( EQ_16( coder_type, GENERIC ) ) && ( EQ_16( LSF_Q_prediction, AUTO_REGRESSIVE ) ) ) ) ) - { - /*if( enr_q > scaling * enr_old ){enr_q = scaling * enr_old;}*/ - L_enr_q = L_min( L_enr_q, L_shl_sat( Mult_32_16( L_enr_old, scaling ), 1 ) ); /* scaling in Q14*/ - } - ELSE - { - ener_max = *lp_ener_FEC_max; /*Q0*/ - move32(); - test(); - if ( EQ_16( clas, VOICED_TRANSITION ) || ( GE_16( clas, INACTIVE_CLAS ) ) ) - { - ener_max = *lp_ener_FEC_av; /*Q0*/ - move32(); - } - /*if( enr_old > ener_max )ener_max = enr_old;*/ - ener_max = L_max( ener_max, L_enr_old ); - - /*if( enr_q > scaling * ener_max ){enr_q = scaling * ener_max;}*/ - L_enr_q = L_min( L_enr_q, L_shl_sat( Mult_32_16( ener_max, scaling ), 1 ) ); /* scaling in Q14*/ - } - } - /*gain2 = (float)sqrt( enr_q / enr2 );*/ - L_enr_q = L_max( L_enr_q, 1 ); /* L_enr2 is in Q0 */ - L_tmp = Sqrt_Ratio32( L_enr_q, 0, L_enr2, 0, &exp2 ); - gain2 = round_fx( L_shl( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */ - - /*-----------------------------------------------------------------* - * Find the energy/gain at the beginning of the frame to ensure smooth transition after erasure(s) - *-----------------------------------------------------------------*/ - - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( ( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && ( clas == UNVOICED_CLAS || EQ_16( clas, INACTIVE_CLAS ) ) ) || - EQ_32( last_core_brate, SID_1k75 ) || EQ_32( last_core_brate, SID_2k40 ) || last_core_brate == FRAME_NO_DATA ) && - prev_bfi ) - { - /* voiced -> unvoiced signal transition */ - /* CNG -> active signal transition */ - gain1 = gain2; /*Q14*/ - move16(); - } - ELSE - { - /* find the energy at the beginning of the frame */ - frame_ener_fx( L_frame, clas, synth, pitch[0], &L_enr1 /*Q0*/, 1, Q_syn, 3, 0 ); - - /*enr1 += 0.1f;*/ - L_enr1 = L_max( L_enr1, 1 ); /* L_enr1 is in Q0 */ - - /*gain1 = (float)sqrt( enr_old / enr1 );*/ - L_tmp = Sqrt_Ratio32( L_enr_old, 0, L_enr1, 0, &exp2 ); - gain1 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */ - - /*if( gain1 > 1.2f )gain1 = 1.2f;*/ - /* prevent clipping */ - gain1 = s_min( gain1, 19661 /*1.2f in Q14*/ ); - - /* prevent amplifying the unvoiced or inactive part of the frame in case an offset is followed by an onset */ - test(); - test(); - if ( EQ_16( clas, ONSET ) && GT_16( gain1, gain2 ) && prev_bfi ) - { - gain1 = gain2; /*Q14*/ - move16(); - } - } - - L_enr2 = L_enr_q; /*Q0*/ - move32(); /* Set the end frame energy to the scaled energy, to be used in the lp_ener_FEC */ - } - - /*------------------------------------------------------------------------------* - * Smooth the energy evolution by exponentially evolving from gain1 to gain2 - *------------------------------------------------------------------------------*/ - - /*gain2 *= ( 1.0f - AGC );*/ - L_tmp = L_mult( gain2, (Word16) ( 32768 /*Q15*/ - AGC_FX ) ); /*Q30*/ - FOR( i = 0; i < L_frame; i++ ) - { - /*gain1 = gain1 * AGC + gain2;*/ - gain1 = mac_r( L_tmp, gain1, AGC_FX ); /* in Q14 */ - /*exc[i] *= gain1;*/ - exc[i] = mac_r( L_mult( exc[i], gain1 ), exc[i], gain1 ); - move16(); - /*exc2[i] *= gain1;*/ - exc2[i] = mac_r_sat( L_mult( exc2[i], gain1 ), exc2[i], gain1 ); - move16(); - } - /* smoothing is done in excitation domain, so redo synthesis */ - Copy( mem_tmp, mem_syn, M ); /* Q_syn */ - syn_12k8_fx( L_frame, Aq, exc2, synth, mem_syn, 1, Q_exc, Q_syn ); - *update_flg = 1; - move16(); - } - } - ELSE - { - /* previous frame erased and no TC frame */ - test(); - IF( prev_bfi && NE_16( coder_type, TRANSITION ) ) - { - IF( L_enr_q == 0 ) - { - L_enr_q = L_max( 1, L_enr2 ); /* sets to 'L_enr2' in 1 clock */ - set16_fx( h1, 0, L_FRAME / 2 ); - h1[0] = 1024; /*1.0f in Q10*/ - move16(); - /*syn_filt( Aq+(3*(M+1)), M, h1, h1, L_FRAME/2, h1+(M+1), 0 );*/ - E_UTIL_synthesis( 1, Aq + ( 3 * ( M + 1 ) ), h1, h1, L_FRAME / 2, h1 + ( M + 1 ), 0, M ); - /*Compute tilt */ - /*rr0 = dotp( h1, h1, L_FRAME/2-1 ) + 0.1f;*/ - /*rr1 = dotp( h1, h1+1, L_FRAME/2-1 );*/ - /*tilt = rr1 / rr0;*/ - tilt = extract_h( L_shl_sat( get_gain( h1 + 1, h1, L_FRAME / 2 - 1 ), 15 ) ); /*Q15*/ - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( ( ( EQ_32( total_brate, ACELP_13k20 ) ) || ( EQ_32( total_brate, ACELP_12k85 ) ) || ( EQ_32( total_brate, ACELP_12k15 ) ) || ( EQ_32( total_brate, ACELP_11k60 ) ) || - ( EQ_32( total_brate, ACELP_9k60 ) ) ) && - ( GT_16( tilt, 22938 ) ) && /* HF resonnant filter */ - ( ( ( clas == UNVOICED_CLAS ) ) || ( EQ_16( clas, INACTIVE_CLAS ) ) ) ) ) /* unvoiced classification */ - { - /*if( enr_q > scaling * enr_old )enr_q = scaling * enr_old;*/ - L_enr_q = L_min( L_enr_q, L_shl_sat( Mult_32_16( L_enr_old, scaling ), 1 ) ); /* scaling in Q14*/ - } - ELSE IF( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) ) - { - /* Voiced-voiced recovery */ - test(); - IF( *old_enr_LP != 0 && GT_16( enr_LP, shl_sat( *old_enr_LP, 1 ) ) ) - { - /* enr_q /= enr_LP */ - exp = norm_l( L_enr_q ); - tmp = extract_h( L_shl( L_enr_q, exp ) ); - - exp2 = norm_s( enr_LP ); - tmp2 = shl( enr_LP, exp2 ); - - exp = sub( exp2, exp ); - - tmp3 = sub( tmp, tmp2 ); - IF( tmp3 > 0 ) - { - tmp = shr( tmp, 1 ); - exp = add( exp, 1 ); - } - tmp = div_s( tmp, tmp2 ); - - /* L_enr_q *= 2 * *old_enr_LP */ - L_enr_q = L_shl( L_mult( tmp, shl( *old_enr_LP, 1 ) ), exp ); - } - - ELSE - { - test(); - IF( avoid_lpc_burst_on_recovery && GT_16( enr_LP, 160 /*20.0f in Q3*/ ) ) - { - exp = norm_s( enr_LP ); - tmp = shl( enr_LP, exp ); - - exp2 = 7; - move16(); - tmp2 = 160 << 7; /* 160 = 20.0f in Q3 */ - move16(); - exp = sub( exp2, exp ); - - IF( GT_16( tmp, tmp2 ) ) - { - tmp = shr( tmp, 1 ); - exp = add( exp, 1 ); - } - tmp = div_s( tmp, tmp2 ); /* tmp*2^exp = enr_LP/20.0 */ - L_tmp = Isqrt_lc( L_deposit_h( tmp ), &exp ); /* L_tmp*2^exp = sqrt(20.0/enr_LP) */ - L_enr_q = L_shl( Mpy_32_32( L_enr_q, L_tmp ), exp ); - } - } - } - - test(); - test(); - test(); - test(); - IF( ( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) ) || force_scaling ) - { - - IF( GT_32( L_enr_q, L_enr_old ) ) /* Prevent energy to increase on voiced */ - { - L_enr_q = L_add( Mpy_32_16_1( L_enr_old, 32767 - SCLSYN_LAMBDA ), Mpy_32_16_1( L_enr_q, SCLSYN_LAMBDA ) ); /*Q0*/ - } - } - } - - L_enr_q = L_max( 1, L_enr_q ); - - /* gain2 = (float)sqrt( enr_q / enr2 );*/ - exp = norm_l( L_enr_q ); - tmp = extract_h( L_shl( L_enr_q, exp ) ); - - exp2 = norm_l( L_enr2 ); - tmp2 = extract_h( L_shl( L_enr2, exp2 ) ); - - exp2 = sub( exp, exp2 ); /* Denormalize and substract */ - - tmp3 = sub( tmp2, tmp ); - IF( tmp3 > 0 ) - { - tmp2 = shr( tmp2, 1 ); - exp2 = add( exp2, 1 ); - } - - tmp = div_s( tmp2, tmp ); - - L_tmp = L_deposit_h( tmp ); - L_tmp = Isqrt_lc( L_tmp, &exp2 ); - gain2 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */ - /*-----------------------------------------------------------------* - * Clipping of the smoothing gain at the frame end - *-----------------------------------------------------------------*/ - - gain2 = s_min( gain2, 19661 /*1.2f in Q14*/ ); /* Gain modification clipping */ - if ( LT_32( L_enr_q, 2 ) ) - { - gain2 = s_min( gain2, 16384 /*1.0f in Q14*/ ); /* Gain modification clipping */ - } - - /*-----------------------------------------------------------------* - * Find the energy/gain at the beginning of the frame to ensure smooth transition after erasure(s) - *-----------------------------------------------------------------*/ - - test(); - test(); - test(); - test(); - test(); - test(); - IF( EQ_16( clas, SIN_ONSET ) ) /* slow increase */ - { - gain1 = shr( gain2, 1 ); /*0.5f * gain2*/ - } - /*------------------------------------------------------------* - * voiced->unvoiced transition recovery - *------------------------------------------------------------*/ - ELSE IF( ( GE_16( last_good, VOICED_TRANSITION ) && LT_16( last_good, INACTIVE_CLAS ) && ( clas == UNVOICED_CLAS || EQ_16( clas, INACTIVE_CLAS ) ) ) || /* voiced->unvoiced transition recovery */ - EQ_32( last_core_brate, SID_1k75 ) || EQ_32( last_core_brate, SID_2k40 ) || last_core_brate == FRAME_NO_DATA ) /* CNG -> active signal transition */ - { - gain1 = gain2; /*Q14*/ - move16(); - } - ELSE - { - /*--------------------------------------------------------* - * Find the energy at the beginning of the frame - *--------------------------------------------------------*/ - tmp = frame_ener_fx( L_frame, clas, synth, pitch[0], &L_enr1, 0, Q_syn, 3, 0 ); - - /*gain1 = (float)sqrt( enr_old / enr1 );*/ - exp = norm_l( L_enr_old ); - tmp = extract_h( L_shl( L_enr_old, exp ) ); - exp2 = norm_l( L_enr1 ); - tmp2 = extract_h( L_shl( L_enr1, exp2 ) ); - - exp2 = sub( exp, exp2 ); /* Denormalize and substract */ - - tmp3 = sub( tmp2, tmp ); - - IF( tmp3 > 0 ) - { - tmp2 = shr( tmp2, 1 ); - exp2 = add( exp2, 1 ); - } - - tmp = div_s( tmp2, tmp ); - - L_tmp = L_deposit_h( tmp ); - L_tmp = Isqrt_lc( L_tmp, &exp2 ); - gain1 = round_fx_sat( L_shl_sat( L_tmp, sub( exp2, 1 ) ) ); /* in Q14 */ - /* exp2 is always <= 1 */ - - gain1 = s_min( gain1, 19661 /*1.2F in Q14*/ ); - - test(); - test(); - if ( avoid_lpc_burst_on_recovery && ( GT_16( enr_LP, 160 ) ) && ( LE_16( enr_LP, shl_sat( *old_enr_LP, 1 ) ) ) ) - { - gain1 = s_min( gain1, 16384 /*1.0f in Q14*/ ); - } - - /*--------------------------------------------------------* - * Prevent a catastrophy in case of offset followed by onset - *--------------------------------------------------------*/ - test(); - if ( ( EQ_16( clas, ONSET ) ) && ( GT_16( gain1, gain2 ) ) ) - { - gain1 = gain2; /*Q14*/ - move16(); - } - } - /*-----------------------------------------------------------------* - * Smooth the energy evolution by exponentially evolving from - * gain1 to gain2 - *-----------------------------------------------------------------*/ - - L_tmp = L_mult( gain2, (Word16) ( 32768 /*Q15*/ - AGC_FX ) ); - - FOR( i = 0; i < L_frame; i++ ) - { - gain1 = mac_r( L_tmp, gain1, AGC_FX ); /* in Q14 */ - exc[i] = mac_r_sat( L_mult_sat( exc[i], gain1 ), exc[i], gain1 ); - move16(); - exc2[i] = mac_r_sat( L_mult_sat( exc2[i], gain1 ), exc2[i], gain1 ); - move16(); - } - - Copy( mem_tmp, mem_syn, M ); /* Q_syn */ - syn_12k8_fx( L_frame, Aq, exc2, synth, mem_syn, 1, Q_exc, Q_syn ); - *update_flg = 1; - move16(); - } - } - /*-----------------------------------------------------------------* - * Update low-pass filtered energy for voiced frames - *-----------------------------------------------------------------*/ - - test(); - test(); - IF( !bfi && ( GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) ) ) - { - IF( EQ_16( clas, VOICED_TRANSITION ) ) - { - L_enr2_av = L_enr2; /*Q0*/ - move32(); - frame_ener_fx( L_frame, VOICED_CLAS, synth, pitch[sub( shr( L_frame, 6 ), 1 )], &L_ener2_max /*Q0*/, 1, Q_syn, 3, 0 ); - } - ELSE - { - L_ener2_max = L_enr2; /*Q0*/ - move32(); - frame_ener_fx( L_frame, UNVOICED_CLAS, synth, pitch[sub( shr( L_frame, 6 ), 1 )], &L_enr2_av /*Q0*/, 1, Q_syn, 3, 0 ); - } - - /**lp_ener_FEC_av = 0.2f * enr2_av + 0.8f * *lp_ener_FEC_av; move32();*/ - *lp_ener_FEC_av = Madd_32_16( Mult_32_16( *lp_ener_FEC_av, 31130 /*0.95f in Q15*/ ), L_enr2_av, 1638 /*0.05F Q15*/ ); /*Q0*/ - move32(); - /**lp_ener_FEC_max = 0.2f * enr2_max + 0.8f * *lp_ener_FEC_max; move32();*/ - *lp_ener_FEC_max = Madd_32_16( Mult_32_16( *lp_ener_FEC_max, 31130 /*0.95f in Q15*/ ), L_ener2_max, 1638 /*0.05F Q15*/ ); /*Q0*/ - move32(); - } - - /*-----------------------------------------------------------------* - * Update the LP filter energy for voiced frames - *-----------------------------------------------------------------*/ - test(); - if ( GE_16( clas, VOICED_TRANSITION ) && LT_16( clas, INACTIVE_CLAS ) ) - { - *old_enr_LP = enr_LP; /*Q3*/ - move16(); - } - - return; -} -#endif -void FEC_scale_syn_ivas_fx( - const Word16 L_frame, /* i : length of the frame */ - Word16 *update_flg, /* o: flag indicating re-synthesis after scaling*/ - Word16 clas, /* i/o: frame classification */ - const Word16 last_good, /* i: last good frame classification */ - Word16 *synth, /* i/o: synthesized speech at Fs = 12k8 Hz Q_syn*/ - const Word16 *pitch, /* i: pitch values for each subframe Q0*/ - Word32 L_enr_old, /* i: energy at the end of previous frame */ - Word32 L_enr_q, /* i: transmitted energy for current frame */ - const Word16 coder_type, /* i: coder type */ - const Word16 LSF_Q_prediction, /* i : LSF prediction mode */ - Word16 *scaling_flag, /* i/o: flag to indicate energy control of syn */ - Word32 *lp_ener_FEC_av, /* i/o: averaged voiced signal energy Q0*/ - Word32 *lp_ener_FEC_max, /* i/o: averaged voiced signal energy Q0*/ - const Word16 bfi, /* i: current frame BFI */ - const Word32 total_brate, /* i: total bitrate */ - const Word16 prev_bfi, /* i: previous frame BFI */ - const Word32 last_core_brate, /* i: previous frame core bitrate */ - Word16 *exc, /* i/o: excitation signal without enhancement */ - Word16 *exc2, /* i/o: excitation signal with enhancement */ - Word16 Aq[], /* i/o: LP filter coefs (can be modified if BR) Q12*/ - Word16 *old_enr_LP, /* i/o: LP filter E of last good voiced frame Q3*/ - const Word16 *mem_tmp, /* i: temp. initial synthesis filter states Q_syn*/ - Word16 *mem_syn, /* o: initial synthesis filter states Q_syn*/ - Word16 Q_exc, - Word16 Q_syn, -#ifdef REMOVE_EVS_DUPLICATES - const Word16 element_mode, /* i : element mode */ -#endif + const Word16 element_mode, /* i : element mode */ const Word16 avoid_lpc_burst_on_recovery, /* i : if true the excitation energy is limited if LP has big gain */ const Word16 force_scaling /* i: force scaling */ ) @@ -742,12 +174,8 @@ void FEC_scale_syn_ivas_fx( tmp = sub( 3, getScaleFactor16( synth, L_frame ) ); -#ifdef REMOVE_EVS_DUPLICATES test(); IF( tmp > 0 && GT_16( element_mode, EVS_MONO ) ) -#else - IF( tmp > 0 ) -#endif { Word16 synth_tmp[L_FRAME16k]; Copy_Scale_sig( synth, synth_tmp, L_frame, -tmp ); // Q_synth - tmp diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c deleted file mode 100644 index 0fbedff60..000000000 --- a/lib_dec/acelp_core_dec_fx.c +++ /dev/null @@ -1,1544 +0,0 @@ -/*==================================================================================== - EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 - ====================================================================================*/ - -#include -#include -#include "options.h" /* Compilation switches */ -#include "rom_com.h" /* Static table prototypes */ -#include "prot_fx.h" /* Function prototypes */ -#include "ivas_prot_fx.h" -#include "ivas_cnst.h" /* Common constants */ -#include "cnst.h" /* Common constants */ - -#ifndef REMOVE_EVS_DUPLICATES -/*==========================================================================*/ -/* FUNCTION : void acelp_core_dec_fx () */ -/*--------------------------------------------------------------------------*/ -/* PURPOSE : ACELP core decoder */ -/*--------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ Word16 coder_type i : coder type */ - -/*--------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ Word16 *voice_factors o : voicing factors Q15 */ -/* _ Word16 old_syn_12k8_16k[] o : intermediate ACELP Q_syn2-1 */ -/* synthesis at 12.8kHz or 16kHz to be used by SWB BWE */ -/* _ Word16 synth_out[] o : synthesis Q_syn2-1 */ -/*--------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* _ Decoder_State_fx *st_fx: */ -/* _ Word16 bwe_exc_extended[] i/o: bandwidth extended excitation Q0*/ -/*--------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------*/ -/* CALLED FROM : RX */ -/*==========================================================================*/ - -ivas_error acelp_core_dec_fx( - Decoder_State *st_fx, /* i/o: decoder state structure */ - Word16 output[], /* o : synthesis @internal Fs */ - Word16 synth_out[], /* o : synthesis Q_syn2-1*/ - Word16 save_hb_synth[], /* o : HB synthesis */ - Word32 bwe_exc_extended[], /* i/o: bandwidth extended excitation Q0*/ - Word16 *voice_factors, /* o : voicing factors Q15 */ - Word16 old_syn_12k8_16k[], /* o : intermediate ACELP synthesis for SWB BWE Q_syn2-1*/ - Word16 sharpFlag, - Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/ - Word16 *unbits, /* o : number of unused bits */ - Word16 *sid_bw, /* o : 0-NB/WB, 1-SWB SID */ - STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle */ - const Word16 tdm_lspQ_PCh[M], /* i : Q LSPs for primary channel */ - const Word16 tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */ - const Word16 use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */ - const Word16 last_element_mode, /* i : last element mode */ - const Word32 last_element_brate, /* i : last element bitrate */ - const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */ - const Word16 nchan_out, /* i : number of output channels */ - STEREO_CNG_DEC_HANDLE hStereoCng, /* i : stereo CNG handle */ - const Word16 read_sid_info /* i : read SID info flag */ -) -{ - Word16 old_exc_fx[L_EXC_DEC] = { 0 }, *exc_fx; /* excitation signal buffer (Q0) */ - Word16 syn_fx_tmp[L_FRAME_16k + L_SUBFR], *syn_fx; /* synthesis signal buffer */ - Word16 temp_buf[L_FRAME16k + L_SYN_MEM]; - Word16 output_frame; /* frame length at output sampling freq. */ - Word16 mem_tmp_fx[M]; /* temporary synthesis filter memory */ - Word32 enr_q_fx; /* E information for FER protection */ - Word16 tmp_noise_fx; /* Long term temporary noise energy */ - Word16 i, int_fs; - Word16 tc_subfr_fx; - Word16 allow_cn_step_fx; - Word16 temp_buf_fx[L_FRAME16k + L_SYN_MEM]; - - Word16 Aq_fx[NB_SUBFR16k * ( M + 1 )] = { 0 }; /*Q12*/ - Word16 Es_pred_fx; /*Q8*/ - Word16 old_bwe_exc_fx[( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 )] = { 0 }; /* excitation buffer Q_exc*/ - Word16 old_exc2_fx[L_FRAME16k + L_EXC_MEM], *exc2_fx; /* total excitation buffer */ - Word16 *bwe_exc_fx; - Word16 lsf_new_fx[M]; /* LSFs at the end of the frame */ - Word16 lsp_new_fx[M]; /* LSPs at the end of the frame */ - Word16 lsp_mid_fx[M]; /* LSPs in the middle of the frame */ - Word16 FEC_pitch_fx; /*Q6*/ - Word16 last_pulse_pos; - Word16 T0_tmp; - Word16 do_WI_fx; - Word16 dct_buffer_fx[DCT_L_POST]; - Word16 exc_buffer_fx[DCT_L_POST]; - Word16 dct_exc_tmp[L_FRAME16k]; - Word16 qdct; - Word16 delta_mem_scale; - Word16 bpf_error_signal[L_FRAME16k]; - CLDFB_SCALE_FACTOR scaleFactor; - Word32 workBuffer[128 * 3]; - Word32 q_env[20]; - Word16 exc3_fx[L_FRAME16k]; - Word16 syn1_fx_tmp[L_FRAME16k + 2], *syn1_fx; - Word32 *realBuffer[CLDFB_NO_COL_MAX], *imagBuffer[CLDFB_NO_COL_MAX]; - Word16 gain_buf[NB_SUBFR16k]; /*Q14*/ - Word16 syn_fx_tmp2[L_FRAME_16k]; - Word16 pitch_buf_tmp[NB_SUBFR16k]; - Word16 k; - Word16 update_flg; - Word32 realBufferTmp[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; - Word32 imagBufferTmp[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; - Word16 LSF_Q_prediction; /* o : LSF prediction mode */ - Word16 avoid_lpc_burst_on_recovery; - Word16 uc_two_stage_flag, dec; - Word16 nb_bits, indice; - Word16 tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag; - MUSIC_POSTFILT_HANDLE hMusicPF; - BPF_DEC_HANDLE hBPF; - TD_BWE_DEC_HANDLE hBWE_TD; - FD_BWE_DEC_HANDLE hBWE_FD; - TCX_DEC_HANDLE hTcxDec; - ivas_error error; - (void) ( tdm_lspQ_PCh ); - (void) ( tdm_lsfQ_PCh ); - (void) ( use_cldfb_for_dft ); - (void) ( last_element_mode ); - (void) ( last_element_brate ); - (void) ( flag_sec_CNA ); - (void) ( nchan_out ); - (void) ( save_hb_synth ); - (void) ( output ); - (void) ( read_sid_info ); - (void) hStereoCng; - hMusicPF = st_fx->hMusicPF; - hBPF = st_fx->hBPF; - hBWE_TD = st_fx->hBWE_TD; - hBWE_FD = st_fx->hBWE_FD; - hTcxDec = st_fx->hTcxDec; - error = IVAS_ERR_OK; - move32(); - // IF ( EQ_16(st_fx->element_mode, IVAS_CPE_MDCT) && EQ_16(nchan_out, 1) && EQ_16(st_fx->idchan, 1) && LE_32(last_element_brate, IVAS_SID_4k4) ) - test(); - test(); - test(); - IF( EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) && EQ_16( nchan_out, 1 ) && EQ_16( st_fx->idchan, 1 ) && LE_32( last_element_brate, IVAS_SID_5k2 ) ) - { - /* In MDCT-Stereo DTX with mono output, we can skip CNG for the second channel, except for the first inactive frame following an active period */ - return error; - } - - FOR( i = 0; i < CLDFB_NO_COL_MAX; i++ ) - { - set32_fx( realBufferTmp[i], 0, CLDFB_NO_CHANNELS_MAX ); - set32_fx( imagBufferTmp[i], 0, CLDFB_NO_CHANNELS_MAX ); - realBuffer[i] = realBufferTmp[i]; - move32(); - imagBuffer[i] = imagBufferTmp[i]; - move32(); - } - - /*----------------------------------------------------------------* - * Initialization - *----------------------------------------------------------------*/ - - LSF_Q_prediction = -1; - move16(); - set16_fx( syn_fx_tmp, 0, L_SUBFR ); - syn_fx = syn_fx_tmp + L_SUBFR; - syn1_fx_tmp[0] = 0; - move16(); - syn1_fx_tmp[1] = 0; - move16(); - syn1_fx = syn1_fx_tmp + 2; - /*output_frame = (Word16)(st_fx->output_Fs_fx / 50); move16();*/ - output_frame = st_fx->output_frame_fx; - move16(); - st_fx->bpf_off = 0; - move16(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( EQ_16( st_fx->last_core, HQ_CORE ) || EQ_16( st_fx->last_core, TCX_20_CORE ) || EQ_16( st_fx->last_core, TCX_10_CORE ) || ( EQ_16( st_fx->element_mode, IVAS_CPE_DFT ) && LE_32( st_fx->last_core_brate, SID_2k40 ) ) || ( EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) && LE_32( st_fx->last_core_brate, SID_2k40 ) ) ) - { - /* in case of HQ->ACELP switching, do not apply BPF */ - st_fx->bpf_off = 1; - move16(); - /* in case of core switching, reset post-filter memories */ - if ( st_fx->hPFstat != NULL ) - { - st_fx->hPFstat->on = 0; - move16(); - } - - /* reset the GSC pre echo energy threshold in case of switching */ - if ( st_fx->hGSCDec != NULL ) - { - st_fx->hGSCDec->Last_frame_ener_fx = MAX_32; - move32(); - } - } - IF( st_fx->prev_bfi > 0 ) - { - /* reset the GSC pre echo energy threshold in case of FEC */ - if ( st_fx->hGSCDec != NULL ) - { - st_fx->hGSCDec->Last_frame_ener_fx = MAX_32; - move32(); - } - } - - st_fx->clas_dec = st_fx->last_good; - move16(); - enr_q_fx = 0; - move32(); - Es_pred_fx = 0; - move16(); - tmp_noise_fx = 0; - move16(); - Copy( st_fx->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); // Q_exc - exc_fx = old_exc_fx + L_EXC_MEM_DEC; - - IF( st_fx->hWIDec != NULL ) - { - Copy( st_fx->hWIDec->old_exc2_fx, old_exc2_fx, L_EXC_MEM ); - } - ELSE - { - set16_fx( old_exc2_fx, 0, L_EXC_MEM ); - } - exc2_fx = old_exc2_fx + L_EXC_MEM; - IF( st_fx->hBWE_TD != NULL ) - { - Copy( hBWE_TD->old_bwe_exc_fx, old_bwe_exc_fx, PIT16k_MAX * 2 ); // Q_exc - bwe_exc_fx = old_bwe_exc_fx + PIT16k_MAX * 2; - } - ELSE - { - bwe_exc_fx = NULL; - } - - last_pulse_pos = 0; - move16(); - do_WI_fx = 0; - move16(); - st_fx->GSC_noisy_speech = 0; - move16(); - st_fx->relax_prev_lsf_interp = 0; - move16(); - - set16_fx( gain_buf, 0, NB_SUBFR16k ); - IF( EQ_16( st_fx->L_frame, L_FRAME ) ) - { - st_fx->gamma = GAMMA1; - move16(); - st_fx->preemph_fac = PREEMPH_FAC; - move16(); - int_fs = INT_FS_FX; - move16(); - } - ELSE - { - st_fx->gamma = GAMMA16k; - move16(); - st_fx->preemph_fac = PREEMPH_FAC_16k; - move16(); - int_fs = INT_FS_16k; - move16(); - } - - /* reset post-filter in case post-filtering was off in previous frame */ - IF( st_fx->hPFstat != NULL ) - { - if ( st_fx->hPFstat->on == 0 ) - { - st_fx->hPFstat->reset = 1; - move16(); - } - } - avoid_lpc_burst_on_recovery = 0; - move16(); - test(); - test(); - if ( st_fx->last_con_tcx && NE_16( st_fx->L_frameTCX_past, st_fx->L_frame ) && st_fx->last_core != 0 ) - { - avoid_lpc_burst_on_recovery = 1; - move16(); - } - /* TD stereo parameters */ - test(); - IF( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && st_fx->idchan == 1 ) - { - tdm_lp_reuse_flag = hStereoTD->tdm_lp_reuse_flag; - tdm_low_rate_mode = hStereoTD->tdm_low_rate_mode; - tdm_Pitch_reuse_flag = hStereoTD->tdm_Pitch_reuse_flag; - move16(); - move16(); - move16(); - move16(); - } - ELSE - { - tdm_lp_reuse_flag = 0; - tdm_low_rate_mode = 0; - move16(); - move16(); - test(); - if ( EQ_16( st_fx->element_mode, IVAS_SCE ) && st_fx->low_rate_mode ) - { - tdm_low_rate_mode = 1; - move16(); - } - tdm_Pitch_reuse_flag = 0; - move16(); - } - /*----------------------------------------------------------------* - * Updates in case of internal sampling rate switching - *----------------------------------------------------------------*/ - test(); - test(); - IF( NE_16( st_fx->last_L_frame, st_fx->L_frame ) && ( st_fx->last_core == ACELP_CORE || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) ) - { - IF( st_fx->hPFstat->on != 0 ) - { - Word16 mem_syn_r_size_old, mem_syn_r_size_new; - - mem_syn_r_size_old = shr( st_fx->last_L_frame, 4 ); - mem_syn_r_size_new = shr( st_fx->L_frame, 4 ); - lerp( st_fx->hPFstat->mem_stp + L_SYN_MEM - mem_syn_r_size_old, st_fx->hPFstat->mem_stp + L_SYN_MEM - mem_syn_r_size_new, mem_syn_r_size_new, mem_syn_r_size_old ); - lerp( st_fx->hPFstat->mem_pf_in + L_SYN_MEM - mem_syn_r_size_old, st_fx->hPFstat->mem_pf_in + L_SYN_MEM - mem_syn_r_size_new, mem_syn_r_size_new, mem_syn_r_size_old ); - } - /* convert quantized LSP vector */ - st_fx->rate_switching_reset = lsp_convert_poly_fx( st_fx->lsp_old_fx, st_fx->L_frame, 0 ); - move16(); - /* convert old quantized LSF vector */ - lsp2lsf_fx( st_fx->lsp_old_fx, st_fx->lsf_old_fx, M, int_fs ); - - /* FEC - update adaptive LSF mean vector */ - Copy( st_fx->lsf_old_fx, st_fx->lsfoldbfi1_fx, M ); // Qlog2(2.56) - Copy( st_fx->lsf_old_fx, st_fx->lsfoldbfi0_fx, M ); // Qlog2(2.56) - Copy( st_fx->lsf_old_fx, st_fx->lsf_adaptive_mean_fx, M ); // Qlog2(2.56) - - /* Reset LPC mem */ - IF( EQ_32( st_fx->sr_core, INT_FS_16k ) ) - { - Copy( GEWB2_Ave_fx, st_fx->mem_AR_fx, M ); // Qlog2(2.56) - } - ELSE - { - Copy( GEWB_Ave_fx, st_fx->mem_AR_fx, M ); // Qlog2(2.56) - } - set16_fx( st_fx->mem_MA_fx, 0, M ); - - dec = DEC; - move16(); - IF( NE_16( st_fx->element_mode, EVS_MONO ) ) - { - dec = DEC_IVAS; - move16(); - } - - /* update synthesis filter memories */ - synth_mem_updt2( st_fx->L_frame, st_fx->last_L_frame, st_fx->old_exc_fx, st_fx->mem_syn_r, st_fx->mem_syn2_fx, NULL, dec ); - - Copy( st_fx->old_exc_fx, old_exc_fx, L_EXC_MEM_DEC ); // Q_exc - Copy_Scale_sig( st_fx->mem_syn2_fx, st_fx->mem_syn1_fx, M, sub( -1, st_fx->Q_syn ) ); /*Q-1*/ - - Copy( st_fx->mem_syn2_fx, st_fx->mem_syn3_fx, M ); - } - - IF( NE_16( st_fx->last_L_frame, st_fx->L_frame ) ) - { - /* update buffer of old subframe pitch values */ - IF( EQ_16( st_fx->L_frame, L_FRAME ) ) - { - - IF( EQ_16( st_fx->last_L_frame, L_FRAME32k ) ) - { - /* (float)12800/(float)32000; */ - k = 13107; // Q15 - move16(); - } - ELSE IF( EQ_16( st_fx->last_L_frame, 512 ) ) - { - /* (float)12800/(float)25600; */ - k = 16384; // Q15 - move16(); - } - ELSE /* st->last_L_frame == L_FRAME16k */ - { - /* (float)12800/(float)16000; */ - k = 26214; // Q15 - move16(); - } - - FOR( i = NB_SUBFR16k - NB_SUBFR; i < NB_SUBFR16k; i++ ) - { - st_fx->old_pitch_buf_fx[i - 1] = Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ); // Q(15+15+1-16) - move32(); - } - - FOR( i = 2 * NB_SUBFR16k - NB_SUBFR; i < 2 * NB_SUBFR16k; i++ ) - { - st_fx->old_pitch_buf_fx[i - 2] = Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ); // Q15 - move32(); - } - } - ELSE - { - - IF( EQ_16( st_fx->last_L_frame, L_FRAME32k ) ) - { - /* (float)16000/(float)32000; */ - k = -16384; // -0.5 in Q15 - move16(); - } - ELSE IF( EQ_16( st_fx->last_L_frame, 512 ) ) - { - /* tmpF = (float)16000/(float)25600; */ - k = -12288; //-0.375 in Q15 - move16(); - } - ELSE /* st->last_L_frame == L_FRAME12k8 */ - { - /* tmpF = (float)16000/(float)12800; */ - k = 8192; //.25 in Q15 - move16(); - } - - FOR( i = 2 * NB_SUBFR - 1; i >= NB_SUBFR; i-- ) - { - st_fx->old_pitch_buf_fx[i + 2] = L_add( st_fx->old_pitch_buf_fx[i], Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ) ); // Q15 - move32(); - } - st_fx->old_pitch_buf_fx[NB_SUBFR + 1] = st_fx->old_pitch_buf_fx[NB_SUBFR + 2]; - move32(); - - FOR( i = NB_SUBFR - 1; i >= 0; i-- ) - { - st_fx->old_pitch_buf_fx[i + 1] = L_add( st_fx->old_pitch_buf_fx[i], Mpy_32_16_1( st_fx->old_pitch_buf_fx[i], k ) ); // Q15 - move32(); - } - st_fx->old_pitch_buf_fx[0] = st_fx->old_pitch_buf_fx[1]; - move32(); - } - } - - IF( NE_16( st_fx->bfi_pitch_frame, st_fx->L_frame ) ) - { - IF( EQ_16( st_fx->L_frame, L_FRAME ) ) - { - - IF( EQ_16( st_fx->bfi_pitch_frame, L_FRAME32k ) ) - { - /* (float)12800/(float)32000; */ - k = 13107; // Q15 - move16(); - } - ELSE IF( EQ_16( st_fx->bfi_pitch_frame, 512 ) ) - { - /* (float)12800/(float)25600; */ - k = 16384; // Q15 - move16(); - } - ELSE /* st->bfi_pitch_frame == L_FRAME16k */ - { - /* (float)12800/(float)16000; */ - k = 26214; // Q15 - move16(); - } - st_fx->bfi_pitch_fx = mult_r( k, st_fx->bfi_pitch_fx ); - move16(); - st_fx->bfi_pitch_frame = L_FRAME; - move16(); - } - ELSE - { - - IF( EQ_16( st_fx->bfi_pitch_frame, L_FRAME32k ) ) - { - /* (float)16000/(float)32000; */ - k = -16384; //-0.5 in Q15 - move16(); - } - ELSE IF( EQ_16( st_fx->bfi_pitch_frame, 512 ) ) - { - /* tmpF = (float)16000/(float)25600; */ - k = -12288; // -0.375 in Q15 - move16(); - } - ELSE /* st->bfi_pitch_frame == L_FRAME12k8 */ - { - /* tmpF = (float)16000/(float)12800; */ - k = 8192; // .25 in Q15 - move16(); - } - st_fx->bfi_pitch_fx = add( st_fx->bfi_pitch_fx, mult_r( st_fx->bfi_pitch_fx, k ) ); - move16(); - st_fx->bfi_pitch_frame = L_FRAME16k; - move16(); - } - } - - test(); - test(); - if ( EQ_16( st_fx->last_bwidth, NB ) && NE_16( st_fx->bwidth, NB ) && st_fx->ini_frame != 0 ) - { - st_fx->rate_switching_reset = 1; - move16(); - } - - /*----------------------------------------------------------------------* - * GOOD frame - *----------------------------------------------------------------------*/ - - IF( !st_fx->bfi ) - { - - /*----------------------------------------------------------------* - * Decoding of TC subframe classification - *----------------------------------------------------------------*/ - - tc_subfr_fx = -1; - move16(); - IF( EQ_16( st_fx->coder_type, TRANSITION ) ) - { - tc_subfr_fx = tc_classif_fx( st_fx, st_fx->L_frame ); - } - - /*----------------------------------------------------------------* - * Decoding of GSC IVAS mode - *----------------------------------------------------------------*/ - st_fx->GSC_IVAS_mode = 0; - move16(); - test(); - test(); - test(); - test(); - IF( ( st_fx->element_mode > EVS_MONO ) && st_fx->idchan == 0 && !( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) && !tdm_low_rate_mode ) - { - test(); - test(); - IF( EQ_16( st_fx->coder_type, AUDIO ) || ( ( st_fx->coder_type == INACTIVE ) && LE_32( st_fx->total_brate, MAX_GSC_INACTIVE_BRATE ) ) ) - { - st_fx->GSC_IVAS_mode = get_next_indice( st_fx, 2 ); - move16(); - } - } - - /*----------------------------------------------------------------* - * Decoding of inactive CNG frames - *----------------------------------------------------------------*/ - test(); - IF( st_fx->core_brate == FRAME_NO_DATA || EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - /* decode CNG parameters */ - IF( st_fx->cng_type == LP_CNG ) - { - - CNG_dec_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step_fx, sid_bw, q_env ); - - /* comfort noise generation */ - CNG_exc_fx( st_fx->core_brate, st_fx->L_frame, &st_fx->hTdCngDec->Enew_fx, &st_fx->hTdCngDec->cng_seed, exc_fx, exc2_fx, &st_fx->lp_ener_fx, st_fx->last_core_brate, - &st_fx->first_CNG, &( st_fx->hTdCngDec->cng_ener_seed ), bwe_exc_fx, allow_cn_step_fx, &st_fx->hTdCngDec->last_allow_cn_step, st_fx->prev_Q_exc, st_fx->Q_exc, st_fx->hTdCngDec->num_ho, - q_env, st_fx->hTdCngDec->lp_env_fx, st_fx->hTdCngDec->old_env_fx, st_fx->hTdCngDec->exc_mem_fx, st_fx->hTdCngDec->exc_mem1_fx, sid_bw, &st_fx->hTdCngDec->cng_ener_seed1, exc3_fx, st_fx->Opt_AMR_WB, st_fx->element_mode ); - - Copy( Aq_fx, st_fx->Aq_cng, M + 1 ); // Q12 - } - ELSE - { - test(); - IF( EQ_32( st_fx->core_brate, SID_2k40 ) && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) - { - FdCng_decodeSID_fx( st_fx->hFdCngDec->hFdCngCom, st_fx ); - *sid_bw = 0; - move16(); - } - - generate_comfort_noise_dec_fx( NULL, NULL, NULL, st_fx, &( st_fx->Q_exc ), 2, -1 ); - - FdCng_exc( st_fx->hFdCngDec->hFdCngCom, &st_fx->CNG_mode, st_fx->L_frame, st_fx->lsp_old_fx, st_fx->first_CNG, st_fx->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx ); - - Copy( exc2_fx, exc3_fx, st_fx->L_frame ); - } - - delta_mem_scale = 3; - move16(); - test(); - if ( LT_32( st_fx->lp_ener_fx, 40 ) && ( st_fx->cng_type == LP_CNG ) ) /* very low energy frames, less than 0.3125 */ - { - delta_mem_scale = 0; - move16(); - } - i = st_fx->Q_exc; - move16(); - Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, - st_fx->L_frame * HIBND_ACB_L_FAC, 0, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, 0, INACTIVE ); - Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, delta_mem_scale, - &st_fx->mem_deemph_fx, hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 0, 0, NULL ); - Copy_Scale_sig( exc2_fx, exc2_fx, st_fx->L_frame, sub( st_fx->Q_exc, i ) ); // Q_exc - - /* update past excitation signals for LD music post-filter */ - IF( hMusicPF != NULL ) - { - Copy( hMusicPF->dct_post_old_exc_fx + L_FRAME, hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 ); - Copy( exc2_fx, hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME ); - /* Update music post processing values */ - /* Filter energies update */ - FOR( i = 0; i < DCT_L_POST; i++ ) - { - /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/ - hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) ); - move16(); - } - } - /* synthesis at 12.8kHz sampling rate */ - syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_fx, st_fx->mem_syn2_fx, 1, st_fx->Q_exc, st_fx->Q_syn ); - syn_12k8_fx( st_fx->L_frame, Aq_fx, exc3_fx, syn1_fx, st_fx->mem_syn3_fx, 1, st_fx->Q_exc, st_fx->Q_syn ); - - /* reset the decoder */ - CNG_reset_dec_fx( st_fx, pitch_buf_fx, voice_factors ); - - /* update st_fx->mem_syn1 for ACELP core switching */ - Copy( st_fx->mem_syn3_fx, st_fx->mem_syn1_fx, M ); - - /* update old synthesis for classification */ - Copy( syn1_fx + st_fx->L_frame - L_SYN_MEM_CLAS_ESTIM, st_fx->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM ); - - - /* save and delay synthesis to be used by SWB BWE */ - Copy_Scale_sig( syn1_fx, temp_buf_fx, st_fx->L_frame, sub( -1, st_fx->Q_syn ) ); // Q_syn -> Q(-1) - IF( hBWE_FD != NULL ) - { - save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx ); - } - } - - /*----------------------------------------------------------------* - * Decoding of all other frames - *----------------------------------------------------------------*/ - - ELSE - { - /*-----------------------------------------------------------------* - * Configure ACELP bit allocation - *-----------------------------------------------------------------*/ - nb_bits = 0; - st_fx->acelp_cfg.FEC_mode = 0; - uc_two_stage_flag = 0; - move16(); - move16(); - move16(); - test(); - IF( !st_fx->nelp_mode_dec && !st_fx->ppp_mode_dec ) - { - Word16 tc_subfr_tmp; - - tc_subfr_tmp = tc_subfr_fx; - move16(); - if ( LT_16( tc_subfr_tmp, L_SUBFR ) ) - { - tc_subfr_tmp = 0; - move16(); - } - - if ( EQ_16( tc_subfr_fx, TC_0_192 ) ) - { - nb_bits = -1; - move16(); - } - - config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, tc_subfr_tmp, 1, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); - - test(); - test(); - IF( EQ_16( st_fx->coder_type, TRANSITION ) && LT_16( tc_subfr_fx, L_SUBFR ) && EQ_16( st_fx->L_frame, L_FRAME ) ) - { - config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, TRANSITION, -1, tc_subfr_fx, 2, &nb_bits, unbits, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); - } - } - - /*-----------------------------------------------------------------* - * After CNG period, use the most up-to-date LSPs - *-----------------------------------------------------------------*/ - - test(); - test(); - IF( st_fx->hTdCngDec != NULL && ( st_fx->last_core_brate == FRAME_NO_DATA || EQ_32( st_fx->last_core_brate, SID_2k40 ) ) ) - { - Copy( st_fx->lspCNG_fx, st_fx->lsp_old_fx, M ); // Q15 - - lsp2lsf_fx( st_fx->lspCNG_fx, st_fx->lsf_old_fx, M, int_fs ); - } - - /*-----------------------------------------------------------------* - * Reset higher ACELP pre-quantizer in case of switching - *-----------------------------------------------------------------*/ - - IF( !st_fx->use_acelp_preq ) - { - st_fx->mem_preemp_preQ_fx = 0; - move16(); - st_fx->last_nq_preQ = 0; - move16(); - } - - st_fx->use_acelp_preq = 0; - move16(); - - /*-----------------------------------------------------------------* - * LSF de-quantization and interpolation - *-----------------------------------------------------------------*/ - - lsf_dec_fx( st_fx, tc_subfr_fx, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode, - tdm_lsfQ_PCh ); - - /*-----------------------------------------------------------------* - * FEC - first good frame after lost frame(s) (possibility to correct the ACB) - *-----------------------------------------------------------------*/ - - IF( st_fx->acelp_cfg.FEC_mode > 0 ) - { - last_pulse_pos = 0; - move16(); - - /* decode the last glottal pulse position */ - T0_tmp = FEC_pos_dec_fx( st_fx, &last_pulse_pos, &enr_q_fx, nb_bits ); - - - test(); - test(); - IF( NE_16( st_fx->last_core, HQ_CORE ) || ( EQ_16( st_fx->last_core, HQ_CORE ) && st_fx->last_con_tcx ) ) - { - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( EQ_16( st_fx->clas_dec, SIN_ONSET ) && last_pulse_pos != 0 && EQ_16( st_fx->prev_bfi, 1 ) ) - { - st_fx->Q_exc = - FEC_SinOnset_fx( old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, last_pulse_pos, T0_tmp, enr_q_fx, Aq_fx, st_fx->L_frame, st_fx->Q_exc ); - move16(); - } - ELSE IF( ( EQ_16( st_fx->coder_type, GENERIC ) || EQ_16( st_fx->coder_type, VOICED ) ) && last_pulse_pos != 0 && EQ_16( st_fx->old_bfi_cnt, 1 ) && EQ_16( output_frame, L_FRAME16k ) && st_fx->hWIDec != NULL ) - { - do_WI_fx = FEC_enhACB_fx( st_fx->L_frame, st_fx->last_L_frame, old_exc_fx + L_EXC_MEM_DEC - L_EXC_MEM, T0_tmp, last_pulse_pos, st_fx->bfi_pitch_fx ); - } - } - } - - /*------------------------------------------------------------* - * In case of first frame after an erasure and transition from voiced to unvoiced or inactive - * redo the LPC interpolation - *------------------------------------------------------------*/ - test(); - test(); - test(); - test(); - test(); - test(); - IF( st_fx->stab_fac_fx == 0 && st_fx->old_bfi_cnt > 0 && NE_16( st_fx->clas_dec, VOICED_CLAS ) && NE_16( st_fx->clas_dec, ONSET ) && - st_fx->relax_prev_lsf_interp == 0 && !( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && EQ_16( st_fx->idchan, 1 ) ) ) - { - int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid_fx, lsp_new_fx, Aq_fx, M, 2 ); - } - - /*---------------------------------------------------------------* - * Decoding of the scaled predicted innovation energy - *---------------------------------------------------------------*/ - - IF( nb_bits > 0 ) - { - indice = get_next_indice( st_fx, nb_bits ); - Es_pred_dec_fx( &Es_pred_fx, indice, nb_bits, uc_two_stage_flag ); - } - - /*------------------------------------------------------------* - * Decode excitation according to coding type - *------------------------------------------------------------*/ - - test(); - test(); - IF( EQ_16( st_fx->nelp_mode_dec, 1 ) ) - { - /* SC-VBR - NELP frames */ - Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st_fx->Q_exc ) ); // Q0 - st_fx->Q_exc = 0; - move16(); - - decod_nelp_fx( st_fx, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors, bwe_exc_fx, &st_fx->Q_exc, st_fx->bfi, gain_buf ); - Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st_fx->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, L_FRAME, st_fx->coder_type ); - } - ELSE IF( EQ_16( st_fx->coder_type, UNVOICED ) ) - { - /* UNVOICED frames */ - decod_unvoiced_fx( st_fx, Aq_fx, st_fx->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, gain_buf ); - } - ELSE IF( EQ_16( st_fx->ppp_mode_dec, 1 ) ) - { - Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st_fx->Q_exc ) ); // Q0 - st_fx->Q_exc = 0; - move16(); - /* SC-VBR - PPP frames */ - IF( NE_32( ( error = decod_ppp_fx( st_fx, Aq_fx, pitch_buf_fx, exc_fx, exc2_fx, st_fx->bfi, gain_buf, voice_factors, bwe_exc_fx ) ), IVAS_ERR_OK ) ) - { - return error; - } - - Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st_fx->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, L_FRAME, st_fx->coder_type ); - } - ELSE IF( EQ_16( st_fx->coder_type, TRANSITION ) ) - { - decod_tran_fx( st_fx, st_fx->L_frame, tc_subfr_fx, Aq_fx, Es_pred_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, sharpFlag, gain_buf ); - } - ELSE IF( EQ_16( st_fx->coder_type, AUDIO ) || ( ( st_fx->coder_type == INACTIVE ) && LE_32( st_fx->core_brate, MAX_GSC_INACTIVE_BRATE ) ) ) - { - decod_audio_fx( st_fx, dct_exc_tmp, Aq_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf ); - tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/ - } - ELSE - { - IF( NE_32( ( error = decod_gen_voic_fx( st_fx, st_fx->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI_fx, pitch_buf_fx, voice_factors, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf /*, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf*/ ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) ) - { - tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/ - } - } - - /* synthesis for ACELP core switching and SWB BWE */ - syn_12k8_fx( st_fx->L_frame, Aq_fx, exc_fx, temp_buf_fx, st_fx->mem_syn1_fx, 1, st_fx->Q_exc, -1 ); - /* save and delay synthesis to be used by SWB BWE */ - IF( hBWE_FD != NULL ) - { - save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx ); - } - - /*-----------------------------------------------------------------* - * Apply energy matching when switching to inactive frames - *-----------------------------------------------------------------*/ - - Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode ); - /*------------------------------------------------------------* - * Decode information and modify the excitation signal of stationary unvoiced frames - *------------------------------------------------------------*/ - test(); - test(); - test(); - test(); - IF( !( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) ) && NE_16( st_fx->nelp_mode_dec, 1 ) && !( EQ_16( st_fx->element_mode, IVAS_SCE ) && tdm_low_rate_mode ) ) - { - stat_noise_uv_dec_fx( st_fx, lsp_new_fx, lsp_mid_fx, Aq_fx, exc2_fx, uc_two_stage_flag ); - } - - /*------------------------------------------------------------* - * Save filter memory in case the synthesis is redone after scaling - * Synthesis at 12k8 Hz sampling rate - *------------------------------------------------------------*/ - - /* update past excitation signals for LD music post-filter */ - IF( hMusicPF != NULL ) - { - Copy( hMusicPF->dct_post_old_exc_fx + L_FRAME, hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 ); - Copy( exc2_fx, hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME ); - Copy( hMusicPF->dct_post_old_exc_fx, exc_buffer_fx, DCT_L_POST - OFFSET2 ); - } - test(); - test(); - test(); - test(); - IF( hMusicPF != NULL && ( ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) || ( GE_16( st_fx->GSC_IVAS_mode, 1 ) && EQ_16( st_fx->L_frame, L_FRAME ) ) ) ) - { - - Word16 last_coder_type = st_fx->last_coder_type; - move16(); - test(); - test(); - test(); - if ( ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) ) || ( GE_16( st_fx->GSC_IVAS_mode, 1 ) && st_fx->GSC_noisy_speech == 0 ) ) - { - last_coder_type = AUDIO; - move16(); - } - /* Extrapolation of the last future part, windowing and high resolution DCT transform */ - qdct = 0; - move16(); -#ifdef _DIFF_FLOAT_FIX_ /* FLoat point using last_core which fits with the inner part of the function */ - Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, hMusicPF->filt_lfE_fx, st_fx->last_core, st_fx->element_mode, pitch_buf_fx, - hMusicPF->LDm_enh_lp_gbin_fx, st_fx->Q_exc, &qdct ); -#else - Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, hMusicPF->filt_lfE_fx, st_fx->last_coder_type, st_fx->element_mode, pitch_buf_fx, - hMusicPF->LDm_enh_lp_gbin_fx, st_fx->Q_exc, &qdct ); -#endif - /* LD music post-filter */ - LD_music_post_filter_fx( hMusicPF, dct_buffer_fx, dct_buffer_fx, st_fx->core_brate, - &hMusicPF->Old_ener_Q, AUDIO, last_coder_type, qdct ); - - /* Inverse DCT transform, retrieval of the aligned excitation, re-synthesis */ - Post_music_postP_fx( dct_buffer_fx, exc2_fx, st_fx->mem_syn2_fx, st_fx->mem_syn2_fx, Aq_fx, syn_fx, &st_fx->Q_exc, &st_fx->prev_Q_syn, - &st_fx->Q_syn, st_fx->mem_syn_clas_estim_fx, 0, &st_fx->mem_deemph_fx, hBPF->pst_old_syn_fx, - &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, temp_buf_fx, mem_tmp_fx ); - } - ELSE - { - /* Core synthesis at 12.8kHz or 16kHz */ - i = 1; - move16(); - if ( st_fx->coder_type == INACTIVE ) - { - i = 0; - move16(); - } - /* add extra headroom in case a CNA addition is likely (i.e. st_fx->psf_lp_noise_fx is close to the threshold) */ - k = 0; - move16(); - test(); - test(); - if ( ( st_fx->coder_type == INACTIVE ) && st_fx->flag_cna && GE_16( round_fx( L_shl( st_fx->lp_noise, 1 ) ), 15 << 7 ) ) - { - k = 1; - move16(); - } - - Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, 4, &st_fx->mem_deemph_fx, - hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, i, k, temp_buf_fx ); - Copy( st_fx->mem_syn2_fx, mem_tmp_fx, M ); // Q_syn - - syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_fx, st_fx->mem_syn2_fx, 1, st_fx->Q_exc, st_fx->Q_syn ); - IF( hMusicPF != NULL ) - { - FOR( i = 0; i < DCT_L_POST; i++ ) - { - /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/ - hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) ); - move16(); - } - } - } - - /*------------------------------------------------------------* - * FEC - Estimate the classification information - *------------------------------------------------------------*/ - - FEC_clas_estim_fx( st_fx, st_fx->Opt_AMR_WB, st_fx->L_frame, &st_fx->clas_dec, st_fx->coder_type, pitch_buf_fx, - syn_fx, &st_fx->lp_ener_FER_fx, &st_fx->decision_hyst, - NULL, NULL, NULL, NULL, 0, NULL, st_fx->Q_syn, temp_buf_fx, - st_fx->mem_syn_clas_estim_fx, &st_fx->classifier_Q_mem_syn, - 0, 0, 0, st_fx->last_core_brate, st_fx->acelp_cfg.FEC_mode ); - /*------------------------------------------------------------* - * FEC - Estimate pitch - *------------------------------------------------------------*/ - - FEC_pitch_estim_fx( st_fx->Opt_AMR_WB, st_fx->last_core, st_fx->L_frame, st_fx->clas_dec, st_fx->last_good, pitch_buf_fx, st_fx->old_pitch_buf_fx, - &st_fx->bfi_pitch_fx, &st_fx->bfi_pitch_frame, &st_fx->upd_cnt, st_fx->coder_type, st_fx->element_mode ); - - /*------------------------------------------------------------* - * FEC - Smooth the speech energy evolution when recovering after a BAD frame - * (smoothing is performed in the excitation domain and signal is resynthesized after) - *------------------------------------------------------------*/ - - k = 0; - move16(); - FOR( i = 0; i < st_fx->L_frame; i += L_SUBFR ) - { - pitch_buf_tmp[k] = mult_r( pitch_buf_fx[k], 512 ); // Q0(6+9-15) , (512 = 1.0f in Q9) - move16(); - k = add( k, 1 ); - } - - FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, - &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, - exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); - - test(); - test(); - test(); - test(); - IF( ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && LE_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_8k00 ) ) ) - { - frame_ener_fx( st_fx->L_frame, st_fx->clas_dec, syn_fx, pitch_buf_tmp[sub( shr( st_fx->L_frame, 6 ), 1 )], &st_fx->enr_old_fx, st_fx->L_frame, st_fx->Q_syn, 3, 0 ); - } - } - - } /* End of GOOD FRAME */ - - /*----------------------------------------------------------------* - * BAD frame - *----------------------------------------------------------------*/ - ELSE - { - /* SC-VBR */ - if ( EQ_16( st_fx->last_nelp_mode_dec, 1 ) ) - { - st_fx->nelp_mode_dec = 1; - move16(); - } - - /* long burst frame erasures */ - test(); - test(); - if ( GT_16( st_fx->nbLostCmpt, 5 ) && GE_16( st_fx->clas_dec, VOICED_CLAS ) && LT_16( st_fx->clas_dec, INACTIVE_CLAS ) ) - { - st_fx->last_good = VOICED_TRANSITION; - move16(); - } - - /* LSF estimation and A(z) calculation */ - lsf_dec_bfi( MODE1, lsf_new_fx, st_fx->lsf_old_fx, st_fx->lsf_adaptive_mean_fx, NULL, st_fx->mem_MA_fx, st_fx->mem_AR_fx, - st_fx->stab_fac_fx, st_fx->last_coder_type, st_fx->L_frame, st_fx->last_good, - st_fx->nbLostCmpt, 0, NULL, NULL, NULL, st_fx->hGSCDec->Last_GSC_pit_band_idx, st_fx->Opt_AMR_WB, 0, st_fx->bwidth ); - - FEC_lsf2lsp_interp( st_fx, st_fx->L_frame, Aq_fx, lsf_new_fx, lsp_new_fx ); - - IF( EQ_16( st_fx->nelp_mode_dec, 1 ) ) - { - /* SC-VBR */ - Scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM, negate( st_fx->Q_exc ) ); // Q0 - st_fx->Q_exc = 0; - move16(); - - decod_nelp_fx( st_fx, &tmp_noise_fx, pitch_buf_fx, exc_fx, exc2_fx, voice_factors, bwe_exc_fx, &st_fx->Q_exc, st_fx->bfi, gain_buf ); - FEC_pitch_fx = pitch_buf_fx[3]; - move16(); - - Rescale_exc( hMusicPF->dct_post_old_exc_fx, exc_fx, NULL, st_fx->hGSCDec->last_exc_dct_in_fx, L_FRAME, 0, (Word32) 0, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, L_FRAME, st_fx->coder_type ); - } - ELSE - { - /* calculation of excitation signal */ - - FEC_exc_estim_fx( st_fx, st_fx->L_frame, exc_fx, exc2_fx, dct_exc_tmp, pitch_buf_fx, voice_factors, &FEC_pitch_fx, bwe_exc_fx, lsf_new_fx, &st_fx->Q_exc, &tmp_noise_fx ); - - Rescale_exc( NULL, exc_fx, bwe_exc_fx, st_fx->hGSCDec->last_exc_dct_in_fx, st_fx->L_frame, L_FRAME32k, (Word32) 0, - &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, st_fx->L_frame, st_fx->last_coder_type ); - - tmp_noise_fx = shr_r( st_fx->lp_gainc_fx, 3 ); /*Q0*/ - - /* SC-VBR */ - st_fx->prev_gain_pit_dec_fx = st_fx->lp_gainp_fx; - move16(); /*Q14*/ - } - - /* synthesis for ACELP core switching and SWB BWE */ - syn_12k8_fx( st_fx->L_frame, Aq_fx, exc_fx, temp_buf_fx, st_fx->mem_syn1_fx, 1, st_fx->Q_exc, -1 ); /*old_syn_12k8_16k directly in q-1*/ - - /* save and delay synthesis to be used by SWB BWE */ - IF( hBWE_FD != NULL ) - { - save_old_syn_fx( st_fx->L_frame, temp_buf_fx, old_syn_12k8_16k, hBWE_FD->old_syn_12k8_16k_fx, st_fx->preemph_fac, &hBWE_FD->mem_deemph_old_syn_fx ); - } - /* Apply energy matching when switching to inactive frames */ - Inac_swtch_ematch_fx( exc2_fx, dct_exc_tmp, st_fx->hGSCDec->lt_ener_per_band_fx, st_fx->coder_type, st_fx->L_frame, st_fx->core_brate, st_fx->Q_exc, st_fx->bfi, st_fx->last_core, st_fx->last_codec_mode ); - - /* udate past excitation signals for LD music post-filter */ - IF( hMusicPF != NULL ) - { - Copy( hMusicPF->dct_post_old_exc_fx + L_FRAME, hMusicPF->dct_post_old_exc_fx, DCT_L_POST - L_FRAME - OFFSET2 ); - Copy( exc2_fx, hMusicPF->dct_post_old_exc_fx + ( DCT_L_POST - L_FRAME - OFFSET2 ), L_FRAME ); - /* Update music post processing values */ - /* Filter energies update */ - FOR( i = 0; i < DCT_L_POST; i++ ) - { - /*st_fx->filt_lfE_fx[i] = 0.3f + 0.7f * st_fx->filt_lfE_fx[i];*/ - hMusicPF->filt_lfE_fx[i] = round_fx( L_mac( ( 1228 << ( 16 ) ), 22938, hMusicPF->filt_lfE_fx[i] ) ); - move16(); - } - /* Update circular buffer, keep last energy difference unchanged */ - FOR( i = 1; i < MAX_LT; i++ ) - { - hMusicPF->LDm_lt_diff_etot_fx[i - 1] = hMusicPF->LDm_lt_diff_etot_fx[i]; - move16(); - } - } - /* synthesis at 12k8 Hz sampling rate */ - /* add extra headroom in case a CNA addition is likely (i.e. st_fx->psf_lp_noise_fx is close to the threshold) */ - k = 0; - move16(); - test(); - test(); - if ( ( st_fx->coder_type == INACTIVE ) && st_fx->flag_cna && GE_16( round_fx( L_shl( st_fx->lp_noise, 1 ) ), 15 << 7 ) ) - { - k = 1; - move16(); - } - - Rescale_mem( st_fx->Q_exc, &st_fx->prev_Q_syn, &st_fx->Q_syn, st_fx->mem_syn2_fx, st_fx->mem_syn_clas_estim_fx, 4, &st_fx->mem_deemph_fx, - hBPF->pst_old_syn_fx, &hBPF->pst_mem_deemp_err_fx, &st_fx->agc_mem_fx[1], st_fx->hPFstat, 1, k, temp_buf_fx ); - - test(); - IF( ( EQ_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_8k00 ) ) ) - { - Copy( st_fx->mem_syn2_fx, mem_tmp_fx, M ); // Q_syn - } - syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_fx, st_fx->mem_syn2_fx, 1, st_fx->Q_exc, st_fx->Q_syn ); - - /* update buffer for classifier */ - IF( st_fx->hWIDec != NULL ) - { - Copy( exc2_fx + st_fx->L_frame - L_EXC_MEM, st_fx->hWIDec->old_exc2_fx, L_EXC_MEM ); - Copy( syn_fx + st_fx->L_frame - L_EXC_MEM, st_fx->hWIDec->old_syn2_fx, L_EXC_MEM ); - } - st_fx->prev_Q_exc_fr = st_fx->Q_exc; - move16(); - st_fx->prev_Q_syn_fr = st_fx->Q_syn; - move16(); - - Copy( syn_fx + st_fx->L_frame - L_SYN_MEM_CLAS_ESTIM, st_fx->mem_syn_clas_estim_fx, L_SYN_MEM_CLAS_ESTIM ); - - test(); - IF( ( EQ_32( st_fx->total_brate, ACELP_7k20 ) ) || ( EQ_32( st_fx->total_brate, ACELP_8k00 ) ) ) - { - k = 0; - move16(); - FOR( i = 0; i < st_fx->L_frame; i += L_SUBFR ) - { - pitch_buf_tmp[k] = mult_r( pitch_buf_fx[k], 512 ); // Q0(6+9-15) , (512 = 1.0f in Q9) - move16(); - k = add( k, 1 ); - } - - /*------------------------------------------------------------* - * FEC - Smooth the speech energy evolution when recovering after a BAD frame - * (smoothing is performed in the excitation domain and signal is resynthesized after) - *------------------------------------------------------------*/ - - FEC_scale_syn_fx( st_fx->L_frame, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, enr_q_fx, st_fx->coder_type, LSF_Q_prediction, - &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, - exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); - } - - /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */ - /* fer_energy( st_fx->L_frame, st_fx->last_good, syn_fx, FEC_pitch_fx, &st_fx->enr_old_fx, st_fx->L_frame ); */ - frame_ener_fx( st_fx->L_frame, st_fx->last_good, syn_fx, shr( add( FEC_pitch_fx, 32 ), 6 ), &st_fx->enr_old_fx, st_fx->L_frame, st_fx->Q_syn, 3, 0 ); - - IF( st_fx->nelp_mode_dec != 1 ) - { - /* modify the excitation signal of stationary unvoiced frames */ - stat_noise_uv_mod_fx( st_fx->coder_type, 0, st_fx->lsp_old_fx, lsp_new_fx, lsp_new_fx, Aq_fx, exc2_fx, st_fx->Q_exc, 1, &st_fx->ge_sm_fx, - &st_fx->uv_count, &st_fx->act_count, st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx, - &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge ); - } - - /* SC-VBR */ - st_fx->hSC_VBR->FadeScale_fx = mult( st_fx->hSC_VBR->FadeScale_fx, 24576 ); /*24576 in Q15*/ - move16(); - } - IF( hBWE_TD != NULL ) - { - IF( EQ_16( st_fx->L_frame, L_FRAME ) ) - { - Copy( Aq_fx + 2 * ( M + 1 ), hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) ); // Q12 - } - ELSE - { - Copy( Aq_fx + 3 * ( M + 1 ), hBWE_TD->cur_sub_Aq_fx, ( M + 1 ) ); // Q12 - } - } - /*--------------------------------------------------------* - * Apply NB postfilter in case of 8kHz output - *--------------------------------------------------------*/ - test(); - IF( EQ_16( st_fx->last_bwidth, NB ) && st_fx->hPFstat != NULL ) - { - k = 0; - move16(); - FOR( i = 0; i < st_fx->L_frame; i += L_SUBFR ) - { - pitch_buf_tmp[k] = mult_r( pitch_buf_fx[k], 512 ); // Q0(6+9-15) , (512 = 1.0f in Q9) - move16(); - k = add( k, 1 ); - } - - IF( EQ_16( st_fx->bwidth, NB ) ) - { - st_fx->hPFstat->on = 1; - move16(); - nb_post_filt_fx( st_fx->L_frame, st_fx->hPFstat, &st_fx->psf_lp_noise_fx, tmp_noise_fx, syn_fx, Aq_fx, pitch_buf_tmp, st_fx->coder_type, st_fx->BER_detect, 0 ); - } - ELSE - { - st_fx->hPFstat->on = 0; - move16(); - nb_post_filt_fx( st_fx->L_frame, st_fx->hPFstat, &st_fx->psf_lp_noise_fx, tmp_noise_fx, syn_fx, Aq_fx, pitch_buf_tmp, AUDIO, st_fx->BER_detect, 0 ); - } - } - ELSE - { - st_fx->psf_lp_noise_fx = round_fx( L_shl( st_fx->lp_noise, 1 ) ); - move16(); - } - - /*------------------------------------------------------------------* - * Perform fixed deemphasis through 1/(1 - g*z^-1) - *-----------------------------------------------------------------*/ - - /* Update old synthesis buffer - needed for ACELP internal sampling rate switching */ - Copy( syn_fx + st_fx->L_frame - L_SYN_MEM, st_fx->mem_syn_r, L_SYN_MEM ); - deemph_fx( syn_fx, st_fx->preemph_fac, st_fx->L_frame, &( st_fx->mem_deemph_fx ) ); - unscale_AGC( syn_fx, st_fx->Q_syn, syn_fx_tmp2, st_fx->agc_mem_fx, st_fx->L_frame ); - Copy( syn_fx_tmp2, syn_fx, st_fx->L_frame ); - - /* Update MODE2 memories*/ - IF( hTcxDec != NULL ) - { - Copy_Scale_sig( syn_fx + shr( st_fx->L_frame, 1 ), hTcxDec->old_syn_Overl, shr( st_fx->L_frame, 1 ), sub( -1, st_fx->Q_syn ) ); /*Q-1*/ - } - Copy_Scale_sig( syn_fx + st_fx->L_frame - M - 1, st_fx->syn, M + 1, sub( 0, st_fx->Q_syn ) ); /*Q0*/ - - /*------------------------------------------------------------------* - * Formant post-filter - *-----------------------------------------------------------------*/ - - IF( st_fx->hPFstat != NULL ) - { - test(); - test(); - test(); - IF( GE_16( st_fx->last_bwidth, WB ) && ( GT_32( st_fx->core_brate, ACELP_24k40 ) || ( st_fx->element_mode > EVS_MONO ) ) && LE_32( st_fx->core_brate, ACELP_32k ) ) - { - Copy( syn_fx, temp_buf + L_SYN_MEM, L_FRAME16k ); - st_fx->hPFstat->on = 1; - move16(); - formant_post_filt_fx( st_fx->hPFstat, temp_buf + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME16k, st_fx->lp_noise, st_fx->total_brate, 0 ); - } - ELSE IF( GE_16( st_fx->last_bwidth, WB ) ) - { - IF( st_fx->hPFstat->on ) - { - Copy( st_fx->hPFstat->mem_pf_in + L_SYN_MEM - M, temp_buf, M ); - Copy( syn_fx, temp_buf + M, L_SUBFR ); - Residu3_fx( Aq_fx, temp_buf + M, temp_buf + M + L_SUBFR, L_SUBFR, 1 ); - E_UTIL_synthesis( 1, Aq_fx, temp_buf + M + L_SUBFR, temp_buf, L_SUBFR, st_fx->hPFstat->mem_stp + L_SYN_MEM - M, 0, M ); - scale_st_fx( syn_fx, temp_buf, &st_fx->hPFstat->gain_prec, L_SUBFR ); - Copy( temp_buf, syn_fx, L_SUBFR / 2 ); - blend_subfr2_fx( temp_buf + L_SUBFR / 2, syn_fx + L_SUBFR / 2, syn_fx + L_SUBFR / 2 ); - } - st_fx->hPFstat->on = 0; - move16(); - } - } - /*----------------------------------------------------------------* - * Comfort noise addition - *----------------------------------------------------------------*/ - - test(); - test(); - IF( ( st_fx->hFdCngDec != NULL || EQ_16( st_fx->idchan, 1 ) ) && NE_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) - { - test(); - test(); - test(); - test(); - test(); - IF( EQ_16( st_fx->element_mode, IVAS_CPE_TD ) || st_fx->flag_cna || ( EQ_16( st_fx->cng_type, FD_CNG ) && LE_32( st_fx->total_brate, ACELP_32k ) ) || ( ( st_fx->cng_type == LP_CNG ) && LE_32( st_fx->total_brate, SID_2k40 ) ) ) - { - /*VAD only for non inactive frame*/ - test(); - st_fx->VAD = st_fx->VAD && ( st_fx->coder_type != INACTIVE ); - move16(); - test(); - test(); - test(); - test(); - test(); - IF( st_fx->idchan == 0 && ( st_fx->flag_cna || ( EQ_16( st_fx->cng_type, FD_CNG ) && LE_32( st_fx->total_brate, ACELP_32k ) ) || - ( EQ_16( st_fx->cng_type, LP_CNG ) && LE_32( st_fx->total_brate, SID_2k40 ) ) ) ) - { - /*Noisy speech detector*/ - noisy_speech_detection_fx( st_fx->hFdCngDec, st_fx->VAD, syn_fx, st_fx->Q_syn ); - - st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech = mult_r( st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 32440 /*0.99 Q15*/ ); - move16(); - IF( st_fx->hFdCngDec->hFdCngCom->flag_noisy_speech != 0 ) - { - st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech = add( st_fx->hFdCngDec->hFdCngCom->likelihood_noisy_speech, 328 /*0.01 Q15*/ ); - move16(); - } - } - if ( st_fx->idchan == 0 ) - { - st_fx->lp_noise = st_fx->hFdCngDec->lp_noise; - move32(); - } - /*Noise estimate*/ - IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) /* && !st->cng_ism_flag IVAS_CODE */ ) - { -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - PMT( "Code for IVAS_CODE_CNG_FIX185_PLC_FADEOUT not done" ) - ApplyFdCng_fx( syn, st_fx->Q_syn, NULL, realBuffer, imagBuffer, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); -#else - ApplyFdCng_fx( syn_fx, st_fx->Q_syn, realBuffer, imagBuffer, NULL, st_fx, 0, ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) ); -#endif - } - /* CNA: Generate additional comfort noise to mask potential coding artefacts */ - } - - test(); - test(); - test(); - test(); - IF( st_fx->flag_cna && NE_16( st_fx->coder_type, AUDIO ) ) - { - generate_masking_noise_fx( syn_fx, st_fx->Q_syn, st_fx->hFdCngDec->hFdCngCom, st_fx->hFdCngDec->hFdCngCom->frameSize, 0 ); - } - ELSE IF( st_fx->flag_cna && EQ_16( st_fx->coder_type, AUDIO ) && st_fx->last_core == ACELP_CORE && NE_16( st_fx->last_coder_type, AUDIO ) ) - { - FOR( i = 0; i < st_fx->hFdCngDec->hFdCngCom->frameSize / 2; i++ ) - { - syn_fx[i] = add( syn_fx[i], shr_r( mult_r( st_fx->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * st_fx->hFdCngDec->hFdCngCom->frameSize / 4], st_fx->hFdCngDec->hFdCngCom->fftlenFac ), -st_fx->Q_syn ) ); - move16(); - } - } - - test(); - test(); - test(); - test(); - test(); - IF( st_fx->flag_cna == 0 && EQ_16( st_fx->L_frame, L_FRAME16k ) && EQ_16( st_fx->last_flag_cna, 1 ) && ( ( st_fx->last_core == ACELP_CORE && NE_16( st_fx->last_coder_type, AUDIO ) ) || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) ) - { - FOR( i = 0; i < st_fx->L_frame / 2; i++ ) - { - syn_fx[i] = add( syn_fx[i], shr_r( st_fx->hFdCngDec->hFdCngCom->olapBufferSynth2[i + 5 * st_fx->L_frame / 4], negate( st_fx->Q_syn ) ) ); - move16(); - } - } - - test(); - IF( st_fx->flag_cna == 0 || EQ_16( st_fx->coder_type, AUDIO ) ) - { - set16_fx( st_fx->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st_fx->hFdCngDec->hFdCngCom->fftlen ); - } - } - - /*----------------------------------------------------------------* - * Resample to the output sampling rate (8/16/32/48 kHz) - * Bass post-filter - *----------------------------------------------------------------*/ - - /* check if the CLDFB works on the right sample rate */ - IF( ( st_fx->cldfbAna->usb * st_fx->cldfbAna->no_col ) != st_fx->L_frame ) - { - /* resample to ACELP internal sampling rate */ - Word16 newCldfbBands = CLDFB_getNumChannels( L_mult0( st_fx->L_frame, FRAMES_PER_SEC ) ); - resampleCldfb( st_fx->cldfbAna, newCldfbBands, st_fx->L_frame, 0 ); - resampleCldfb( st_fx->cldfbBPF, newCldfbBands, st_fx->L_frame, 0 ); - - IF( st_fx->ini_frame > 0 ) - { - st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ); - move16(); - } - } - - test(); - IF( !( EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) && st_fx->bpf_off ) ) - { - test(); - IF( NE_16( st_fx->L_frame, st_fx->last_L_frame ) && NE_16( st_fx->last_codec_mode, MODE2 ) ) - { - IF( EQ_16( st_fx->L_frame, L_FRAME ) ) - { - retro_interp5_4_fx( hBPF->pst_old_syn_fx ); - } - ELSE IF( EQ_16( st_fx->L_frame, L_FRAME16k ) ) - { - retro_interp4_5_fx( syn_fx, hBPF->pst_old_syn_fx ); - } - } - - bass_psfilter_fx( st_fx->hBPF, st_fx->Opt_AMR_WB, syn_fx, st_fx->L_frame, pitch_buf_fx, st_fx->bpf_off, - st_fx->stab_fac_fx, &st_fx->stab_fac_smooth_fx, st_fx->coder_type, st_fx->Q_syn, bpf_error_signal ); - } - test(); - IF( NE_16( st_fx->element_mode, IVAS_CPE_DFT ) || use_cldfb_for_dft ) - { - /* analysis of the synthesis at internal sampling rate */ - cldfbAnalysis_fx( st_fx->cldfbAna, realBuffer, imagBuffer, &scaleFactor, syn_fx, negate( st_fx->Q_syn ), CLDFB_NO_COL_MAX, workBuffer ); - - scaleFactor.hb_scale = scaleFactor.lb_scale; - move16(); - - /* analysis and add the BPF error signal */ - i = 0; - move16(); - if ( st_fx->bpf_off == 0 ) - { - i = CLDFB_NO_COL_MAX; - move16(); - } - addBassPostFilter_fx( bpf_error_signal, realBuffer, imagBuffer, st_fx->cldfbBPF, workBuffer, negate( st_fx->Q_syn ), - i, st_fx->cldfbAna->no_col, st_fx->cldfbAna->no_channels, &scaleFactor ); - - /* set output mask for upsampling */ - IF( EQ_16( st_fx->bwidth, NB ) ) - { - /* set NB mask for upsampling */ - st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, 10 ); - move16(); - } - ELSE IF( NE_16( st_fx->cldfbSyn->bandsToZero, sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ) ) ) - { - /* in case of BW switching, re-init to default */ - st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->cldfbAna->no_channels ); - move16(); - } - - /*WB/SWB-FD_CNG*/ - scaleFactor.hb_scale = scaleFactor.lb_scale; - move16(); - - - test(); - IF( !st_fx->cng_sba_flag || EQ_16( st_fx->element_mode, IVAS_CPE_MDCT ) ) - { - test(); - test(); - test(); - IF( ( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) && ( EQ_16( st_fx->cng_type, FD_CNG ) ) && ( LT_16( st_fx->hFdCngDec->hFdCngCom->numCoreBands, st_fx->cldfbSyn->no_channels ) ) ) - { - generate_comfort_noise_dec_hf_fx( realBuffer, imagBuffer, &scaleFactor.hb_scale, st_fx ); - - st_fx->cldfbSyn->bandsToZero = 0; - move16(); - IF( LT_16( st_fx->hFdCngDec->hFdCngCom->regularStopBand, st_fx->cldfbSyn->no_channels ) ) - { - st_fx->cldfbSyn->bandsToZero = sub( st_fx->cldfbSyn->no_channels, st_fx->hFdCngDec->hFdCngCom->regularStopBand ); - move16(); - } - st_fx->cldfbSyn->lsb = st_fx->cldfbAna->no_channels; - move16(); - } - } - /* synthesis of the combined signal */ - st_fx->Q_syn2 = st_fx->Q_syn; - move16(); - { - cldfbSynthesis_fx( st_fx->cldfbSyn, realBuffer, imagBuffer, &scaleFactor, synth_out, negate( st_fx->Q_syn2 ), CLDFB_NO_COL_MAX, workBuffer ); - } - /* Bring CLDFB output to Q0 */ - Scale_sig( synth_out, output_frame, negate( st_fx->Q_syn2 ) ); - st_fx->Q_syn2 = 0; - move16(); - - /* save synthesis - needed in case of core switching */ - Copy( synth_out, st_fx->previoussynth_fx, output_frame ); - } - - /*-----------------------------------------------------------------* - * Bandwidth extension 6kHz-7kHz - *-----------------------------------------------------------------*/ - IF( st_fx->hBWE_zero != NULL ) - { - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( EQ_16( st_fx->L_frame, L_FRAME ) && NE_16( st_fx->bwidth, NB ) && GE_16( output_frame, L_FRAME16k ) && - ( EQ_16( st_fx->extl, -1 ) || EQ_16( st_fx->extl, SWB_CNG ) || ( EQ_16( st_fx->extl, WB_BWE ) && st_fx->extl_brate == 0 && NE_16( st_fx->coder_type, AUDIO ) ) ) ) ) - { - hf_synth_fx( st_fx->hBWE_zero, st_fx->core_brate, output_frame, Aq_fx, exc2_fx, syn_fx, synth_out, st_fx->Q_exc, st_fx->Q_syn2 ); - } - ELSE - { - hf_synth_reset_fx( st_fx->hBWE_zero ); - } - } - - /*-----------------------------------------------------------------* - * Populate parameters for SWB TBE - *-----------------------------------------------------------------*/ - - /* Apply a non linearity to the SHB excitation */ - IF( hBWE_TD != NULL ) - { - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( !st_fx->bfi && ( st_fx->prev_bfi ) ) || ( ( EQ_16( st_fx->last_vbr_hw_BWE_disable_dec, 1 ) ) && ( st_fx->vbr_hw_BWE_disable_dec == 0 ) ) || ( ( EQ_16( st_fx->extl, SWB_TBE ) || EQ_16( st_fx->extl, WB_TBE ) || EQ_16( st_fx->extl, FB_TBE ) ) && NE_16( st_fx->last_extl, SWB_TBE ) && NE_16( st_fx->last_extl, WB_TBE ) && NE_16( st_fx->last_extl, FB_TBE ) ) || ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && !st_fx->tdm_LRTD_flag ) ) - { - hBWE_TD->bwe_non_lin_prev_scale_fx = L_deposit_l( 0 ); - move32(); - set16_fx( hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET ); - } - - test(); - test(); - test(); - test(); - test(); - IF( !st_fx->ppp_mode_dec && ( st_fx->idchan == 0 || NE_16( st_fx->element_mode, IVAS_CPE_TD ) || ( EQ_16( st_fx->idchan, 1 ) && EQ_16( st_fx->element_mode, IVAS_CPE_TD ) && st_fx->tdm_LRTD_flag ) ) ) - { - non_linearity_fx( bwe_exc_fx, bwe_exc_extended, L_FRAME32k, &hBWE_TD->bwe_non_lin_prev_scale_fx, st_fx->Q_exc, - st_fx->coder_type, voice_factors, st_fx->L_frame ); - } - - test(); - IF( ( st_fx->core_brate == FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - hBWE_TD->bwe_non_lin_prev_scale_fx = L_deposit_l( 0 ); - move32(); - } - } - /*----------------------------------------------------------------------* - * Updates - *----------------------------------------------------------------------*/ - - updt_dec_fx( st_fx, old_exc_fx, pitch_buf_fx, Es_pred_fx, Aq_fx, lsf_new_fx, lsp_new_fx, voice_factors, old_bwe_exc_fx, gain_buf ); - - test(); - test(); - IF( GT_32( st_fx->core_brate, SID_2k40 ) && st_fx->hTdCngDec != NULL && st_fx->hFdCngDec != NULL ) - { - /* update CNG parameters in active frames */ - cng_params_upd_fx( lsp_new_fx, exc_fx, st_fx->L_frame, &st_fx->hTdCngDec->ho_circ_ptr, st_fx->hTdCngDec->ho_ener_circ_fx, &st_fx->hTdCngDec->ho_circ_size, st_fx->hTdCngDec->ho_lsp_circ_fx, - st_fx->Q_exc, DEC, st_fx->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st_fx->last_active_brate ); - /* Set 16k LSP flag for CNG buffer */ - st_fx->hTdCngDec->ho_16k_lsp[st_fx->hTdCngDec->ho_circ_ptr] = 0; - move16(); - if ( NE_16( st_fx->L_frame, L_FRAME ) ) - { - st_fx->hTdCngDec->ho_16k_lsp[st_fx->hTdCngDec->ho_circ_ptr] = 1; - move16(); - } - } - - return IVAS_ERR_OK; -} -#endif diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_ivas_fx.c index ad8ca9b50..2c72bba78 100644 --- a/lib_dec/acelp_core_dec_ivas_fx.c +++ b/lib_dec/acelp_core_dec_ivas_fx.c @@ -47,12 +47,12 @@ /*-------------------------------------------------------------------* - * acelp_core_dec_ivas_fx() + * acelp_core_dec_fx() * * ACELP core decoder *-------------------------------------------------------------------*/ -ivas_error acelp_core_dec_ivas_fx( +ivas_error acelp_core_dec_fx( Decoder_State *st, /* i/o: decoder state structure */ Word16 output_fx[], /* o : synthesis @internal Fs Q_syn*/ Word16 synth_fx16[], /* o : synthesis Q_syn2*/ @@ -81,14 +81,14 @@ ivas_error acelp_core_dec_ivas_fx( Word16 syn_tmp_fx[L_FRAME16k + L_SUBFR], *psyn_fx; /* synthesis signal buffer */ Word16 output_frame; /* frame length at output sampling freq. */ Word16 lsf_new_fx[M]; /* LSFs at the end of the frame Qlog2(2.56) */ - Word16 lsp_new_fx[M]; /* LSPs at the end of the frame Q15 */ + Word16 lsp_new_fx[M]; /* LSPs at the end of the frame Q15 */ Word16 lsp_mid_fx[M]; /* LSPs in the middle of the frame */ Word16 Aq_fx[NB_SUBFR16k * ( M + 1 )]; /* A(q) quantized for the 4 subframes */ Word16 old_exc2_fx[L_FRAME16k + L_EXC_MEM], *exc2_fx; /* total excitation buffer */ Word16 mem_tmp_fx[M]; /* temporary synthesis filter memory */ Word32 enr_q_fx; /* E information for FER protection */ Word16 tmp_noise_fx; /* Long term temporary noise energy */ - Word16 Es_pred_fx; /* predicted scaled innov. energy Q8 */ + Word16 Es_pred_fx; /* predicted scaled innov. energy Q8 */ Word16 FEC_pitch_fx; /* FEC pitch */ Word16 old_bwe_exc_fx[( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 )]; /* excitation buffer */ Word16 *bwe_exc_fx; /* Excitation for SWB TBE */ @@ -181,6 +181,7 @@ ivas_error acelp_core_dec_ivas_fx( st->hFdCngDec->hFdCngCom->sidNoiseEstExp = common_e; move16(); } + FOR( i = 0; i < NPART; i++ ) { st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] = Madd_32_32( Mpy_32_32( STEREO_DFT_FD_FILT_Q31, st->hFdCngDec->hFdCngCom->sidNoiseEstLp[i] ), @@ -188,14 +189,14 @@ ivas_error acelp_core_dec_ivas_fx( move32(); } - ApplyFdCng_ivas_fx( NULL, 0, NULL, 0, NULL, NULL, NULL, st, 0, 0 ); + ApplyFdCng_fx( NULL, 0, NULL, 0, NULL, NULL, NULL, st, 0, 0 ); } ELSE { configureFdCngDec_fx( st->hFdCngDec, st->bwidth, ACELP_14k25, st->L_frame, st->last_L_frame, st->element_mode ); /* decode CNG parameters */ - CNG_dec_ivas_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx ); + CNG_dec_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx ); /* comfort noise generation */ CNG_exc_fx( st->core_brate, st->L_frame, &st->hTdCngDec->Enew_fx, &st->hTdCngDec->cng_seed, NULL, NULL, &st->lp_ener_fx, st->last_core_brate, &st->first_CNG, &( st->hTdCngDec->cng_ener_seed ), NULL, allow_cn_step, &st->hTdCngDec->last_allow_cn_step, st->prev_Q_exc, st->Q_exc, st->hTdCngDec->num_ho, q_env_fx, st->hTdCngDec->lp_env_fx, st->hTdCngDec->old_env_fx, st->hTdCngDec->exc_mem_fx, st->hTdCngDec->exc_mem1_fx, sid_bw, &st->hTdCngDec->cng_ener_seed1, NULL, st->Opt_AMR_WB, st->element_mode ); @@ -636,7 +637,7 @@ ivas_error acelp_core_dec_ivas_fx( /* decode CNG parameters */ IF( st->cng_type == LP_CNG ) { - CNG_dec_ivas_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx ); + CNG_dec_fx( st, last_element_mode, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, sid_bw, q_env_fx ); Copy( Aq_fx, st->Aq_cng, add( M, 1 ) ); /* comfort noise generation */ @@ -657,13 +658,11 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( EQ_32( st->core_brate, SID_2k40 ) && NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { FdCng_decodeSID_fx( st->hFdCngDec->hFdCngCom, st ); } ELSE -#endif { Word16 old_NoiseEstExp = st->hFdCngDec->hFdCngCom->sidNoiseEstExp; move16(); @@ -689,7 +688,7 @@ ivas_error acelp_core_dec_ivas_fx( move32(); } - ApplyFdCng_ivas_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); + ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); Word16 new_sidNoiseEstExp = 31 - Q4; move16(); @@ -704,7 +703,7 @@ ivas_error acelp_core_dec_ivas_fx( move16(); test(); - ApplyFdCng_ivas_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) ); + ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( EQ_16( st->coder_type, AUDIO ) && !st->GSC_noisy_speech ) ); IF( st->hFdCngDec->hFdCngCom->cngNoiseLevelExp < 0 ) { @@ -728,13 +727,11 @@ ivas_error acelp_core_dec_ivas_fx( } } -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { generate_comfort_noise_dec_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 2, -1 ); } ELSE -#endif { generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 1, nchan_out ); } @@ -758,7 +755,6 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( st->hMusicPF && st->hGSCDec ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { // VE: TBV: should 'st_fx->L_frame * HIBND_ACB_L_FAC' be corrected in EVS? @@ -766,7 +762,6 @@ ivas_error acelp_core_dec_ivas_fx( st->L_frame * HIBND_ACB_L_FAC, 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE ); } ELSE -#endif { Rescale_exc( st->hMusicPF->dct_post_old_exc_fx, exc_fx, bwe_exc_fx, st->hGSCDec->last_exc_dct_in_fx, st->L_frame, L_FRAME32k, 0, &( st->Q_exc ), st->Q_subfr, NULL, 0, INACTIVE ); @@ -794,7 +789,6 @@ ivas_error acelp_core_dec_ivas_fx( /* Update music post processing values */ /* Filter energies update */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { FOR( i = 0; i < DCT_L_POST; i++ ) @@ -804,7 +798,6 @@ ivas_error acelp_core_dec_ivas_fx( } } ELSE -#endif { FOR( i = 0; i < DCT_L_POST; i++ ) { @@ -822,15 +815,12 @@ ivas_error acelp_core_dec_ivas_fx( /* reset the decoder */ CNG_reset_dec_fx( st, pitch_buf_fx, voice_factors_fx ); - -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { /* update st_fx->mem_syn1 for ACELP core switching */ Copy( st->mem_syn3_fx, st->mem_syn1_fx, M ); } ELSE -#endif { st->Q_syn_cng = st->Q_syn; move16(); @@ -889,13 +879,13 @@ ivas_error acelp_core_dec_ivas_fx( move16(); } - config_acelp1_IVAS( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), st->next_bit_pos, st->coder_type, st->inactive_coder_type_flag, tc_subfr_tmp, 1, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); + config_acelp1_fx( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), st->next_bit_pos, st->coder_type, st->inactive_coder_type_flag, tc_subfr_tmp, 1, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); test(); test(); IF( EQ_16( st->coder_type, TRANSITION ) && LT_16( tc_subfr, L_SUBFR ) && EQ_16( st->L_frame, L_FRAME ) ) { - config_acelp1_IVAS( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, -1, &( st->acelp_cfg ), st->next_bit_pos, TRANSITION, -1, tc_subfr, 2, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); + config_acelp1_fx( DEC, st->total_brate, st->core_brate, st->core, st->extl_orig, st->extl_brate_orig, st->L_frame, -1, &( st->acelp_cfg ), st->next_bit_pos, TRANSITION, -1, tc_subfr, 2, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); } } @@ -934,7 +924,7 @@ ivas_error acelp_core_dec_ivas_fx( IF( !tdm_lp_reuse_flag ) { - lsf_dec_ivas_fx( st, tc_subfr, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode, tdm_lsfQ_PCh_fx ); + lsf_dec_fx( st, tc_subfr, Aq_fx, &LSF_Q_prediction, lsf_new_fx, lsp_new_fx, lsp_mid_fx, tdm_low_rate_mode, tdm_lsfQ_PCh_fx ); } ELSE { @@ -1084,7 +1074,7 @@ ivas_error acelp_core_dec_ivas_fx( } ELSE /* GENERIC */ { - decod_gen_2sbfr_ivas_fx( st, sharpFlag, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ); + decod_gen_2sbfr_fx( st, sharpFlag, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ); IF( EQ_16( st->element_mode, IVAS_CPE_TD ) ) { @@ -1106,7 +1096,7 @@ ivas_error acelp_core_dec_ivas_fx( ELSE IF( EQ_16( st->coder_type, UNVOICED ) ) { /* UNVOICED frames */ - decod_unvoiced_ivas_fx( st, Aq_fx, Es_pred_fx, uc_two_stage_flag, st->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx ); + decod_unvoiced_fx( st, Aq_fx, Es_pred_fx, uc_two_stage_flag, st->coder_type, &tmp_noise_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, gain_buf_fx ); tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/ } @@ -1131,15 +1121,15 @@ ivas_error acelp_core_dec_ivas_fx( ELSE IF( EQ_16( st->coder_type, AUDIO ) || ( ( st->coder_type == INACTIVE ) && st->inactive_coder_type_flag ) ) { /* AUDIO and INACTIVE frames (coded by GSC technology) */ - decod_audio_ivas_fx( st, dct_exc_tmp_fx, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf_fx, - tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ); + decod_audio_fx( st, dct_exc_tmp_fx, Aq_fx, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, lsf_new_fx, gain_buf_fx, + tdm_lp_reuse_flag, tdm_low_rate_mode, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ); tmp_noise_fx = shr_r( st->lp_gainc_fx, 3 ); /*Q0*/ } ELSE { /* GENERIC, VOICED and INACTIVE frames (coded by AVQ technology) */ - IF( NE_32( ( error = decod_gen_voic_ivas_fx( st, st->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = decod_gen_voic_fx( st, st->L_frame, sharpFlag, Aq_fx, Es_pred_fx, do_WI, pitch_buf_fx, voice_factors_fx, exc_fx, exc2_fx, bwe_exc_fx, unbits, gain_buf_fx, tdm_Pitch_reuse_flag, p_tdm_Pri_pitch_buf_fx ) ), IVAS_ERR_OK ) ) { return error; } @@ -1163,7 +1153,7 @@ ivas_error acelp_core_dec_ivas_fx( * Apply energy matching when switching to inactive frames *-----------------------------------------------------------------*/ - Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode ); + Inac_switch_ematch_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode ); /*------------------------------------------------------------* * Decode information and modify the excitation signal of stationary unvoiced frames @@ -1212,7 +1202,6 @@ ivas_error acelp_core_dec_ivas_fx( move16(); /* Extrapolation of the last future part, windowing and high resolution DCT transform */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { // VE: TBV: this is likely a bug in EVS - 'st->last_coder_type' should be replaced by 'st->core_brate' @@ -1220,7 +1209,6 @@ ivas_error acelp_core_dec_ivas_fx( st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct ); } ELSE -#endif { Prep_music_postP_fx( exc_buffer_fx, dct_buffer_fx, st->hMusicPF->filt_lfE_fx, st->last_core, st->element_mode, pitch_buf_fx, st->hMusicPF->LDm_enh_lp_gbin_fx, st->Q_exc, &qdct ); } @@ -1229,9 +1217,7 @@ ivas_error acelp_core_dec_ivas_fx( LD_music_post_filter_fx( st->hMusicPF, dct_buffer_fx, dct_buffer_fx, st->core_brate, &st->hMusicPF->Old_ener_Q, AUDIO, last_coder_type, qdct ); /* Inverse DCT transform, retrieval of the aligned excitation, re-synthesis */ -#ifdef REMOVE_EVS_DUPLICATES IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBC whether needed in IVAS -#endif { Copy( st->mem_syn2_fx, mem_tmp_fx, M ); /*Q_syn*/ } @@ -1300,13 +1286,9 @@ ivas_error acelp_core_dec_ivas_fx( Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0 - FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction, - &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, -#ifdef REMOVE_EVS_DUPLICATES - exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 ); -#else - exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, 0 ); -#endif + FEC_scale_syn_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction, + &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, + exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 ); test(); test(); @@ -1384,7 +1366,7 @@ ivas_error acelp_core_dec_ivas_fx( } /* Apply energy matching when switching to inactive frames */ - Inac_switch_ematch_ivas_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode ); + Inac_switch_ematch_fx( exc2_fx, dct_exc_tmp_fx, st->hGSCDec->lt_ener_per_band_fx, st->coder_type, st->inactive_coder_type_flag, st->L_frame, st->Q_exc, st->bfi, st->last_core, st->last_codec_mode, tdm_low_rate_mode, st->element_mode ); /* update past excitation signals for LD music post-filter */ IF( st->hMusicPF != NULL ) @@ -1452,13 +1434,9 @@ ivas_error acelp_core_dec_ivas_fx( { Copy_Scale_sig( pitch_buf_fx, pitch_buf_tmp, st->nb_subfr, -Q6 ); // Q0 - FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction, - &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, -#ifdef REMOVE_EVS_DUPLICATES - exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 ); -#else - exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, 0 ); -#endif + FEC_scale_syn_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, psyn_fx, pitch_buf_tmp, st->enr_old_fx, enr_q_fx, st->coder_type, LSF_Q_prediction, + &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, + exc_fx, exc2_fx, Aq_fx, &st->old_enr_LP, mem_tmp_fx, st->mem_syn2_fx, st->Q_exc, st->Q_syn, st->element_mode, avoid_lpc_burst_on_recovery, 0 ); } /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */ @@ -1544,7 +1522,7 @@ ivas_error acelp_core_dec_ivas_fx( Copy( psyn_fx, temp_buf_fx + L_SYN_MEM, L_FRAME16k ); set16_fx( st->hPFstat->mem_zero, 0, M ); - formant_post_filt_ivas_fx( st->hPFstat, temp_buf_fx + L_SYN_MEM, Aq_fx, psyn_fx, st->L_frame, st->lp_noise, st->total_brate, 0 ); + formant_post_filt_fx( st->hPFstat, temp_buf_fx + L_SYN_MEM, Aq_fx, psyn_fx, st->L_frame, st->lp_noise, st->total_brate, 0 ); } ELSE IF( st->hPFstat != NULL && GE_16( st->last_bwidth, WB ) ) { @@ -1612,7 +1590,7 @@ ivas_error acelp_core_dec_ivas_fx( IF( NE_16( st->element_mode, IVAS_CPE_TD ) && !st->cng_ism_flag ) { /* Noise estimate */ - ApplyFdCng_ivas_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); + ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); } IF( !st->cna_dirac_flag ) @@ -1652,13 +1630,11 @@ ivas_error acelp_core_dec_ivas_fx( } ELSE IF( NE_16( st->element_mode, IVAS_CPE_DFT ) ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { generate_masking_noise_fx( psyn_fx, st->Q_syn, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0 ); } ELSE -#endif { IF( st->idchan == 0 ) { @@ -1666,10 +1642,13 @@ ivas_error acelp_core_dec_ivas_fx( { set16_fx( st->hFdCngDec->hFdCngCom->olapBufferSynth2, 0, st->hFdCngDec->hFdCngCom->fftlen ); } + Word32 psyn_32_fx[L_FRAME16k]; Copy_Scale_sig_16_32_no_sat( psyn_fx, psyn_32_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( Q6, st->Q_syn ) ); // Q6 Copy_Scale_sig_16_32_no_sat( st->hFdCngDec->hFdCngCom->olapBufferSynth2, st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), Q15 ); // Q15 + generate_masking_noise_ivas_fx( psyn_32_fx, &exp, st->hFdCngDec->hFdCngCom, st->hFdCngDec->hFdCngCom->frameSize, 0, 0, 0, st->element_mode, hStereoCng, nchan_out ); + Copy_Scale_sig_32_16( psyn_32_fx, psyn_fx, st->hFdCngDec->hFdCngCom->frameSize, sub( st->Q_syn, exp ) ); // Q = st->Q_syn Copy_Scale_sig_32_16( st->hFdCngDec->hFdCngCom->olapBufferSynth2_fx, st->hFdCngDec->hFdCngCom->olapBufferSynth2, shl( st->hFdCngDec->hFdCngCom->frameSize, 1 ), -Q15 ); // Q0 } @@ -1713,7 +1692,7 @@ ivas_error acelp_core_dec_ivas_fx( /*Noise estimate*/ IF( ( st->idchan == 0 ) && ( EQ_16( nchan_out, 2 ) || ( st->core_brate != FRAME_NO_DATA && NE_32( st->core_brate, SID_2k40 ) ) ) ) { - ApplyFdCng_ivas_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); + ApplyFdCng_fx( psyn_fx, st->Q_syn, NULL, 0, realBuffer_fx, imagBuffer_fx, NULL, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); } } } @@ -1730,7 +1709,6 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( ( st->flag_cna == 0 ) && EQ_16( st->L_frame, L_FRAME16k ) && EQ_16( st->last_flag_cna, 1 ) && ( ( st->last_core == ACELP_CORE && !( EQ_16( st->last_coder_type, AUDIO ) && !( st->element_mode > EVS_MONO && st->Last_GSC_noisy_speech_flag ) ) ) || EQ_16( st->last_core, AMR_WB_CORE ) ) ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { // VE: TBV - is it correct in EVS? in FLP, it is: @@ -1743,7 +1721,6 @@ ivas_error acelp_core_dec_ivas_fx( } } ELSE -#endif { FOR( i = 0; i < ( st->hFdCngDec->hFdCngCom->frameSize ) / 2; i++ ) { @@ -1775,7 +1752,6 @@ ivas_error acelp_core_dec_ivas_fx( * Bass post-filter *----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { CLDFB_SCALE_FACTOR scaleFactor; @@ -1880,7 +1856,6 @@ ivas_error acelp_core_dec_ivas_fx( Copy( synth_fx16, st->previoussynth_fx, output_frame ); } ELSE -#endif { /* check if the CLDFB works on the right sample rate */ IF( NE_16( imult1616( st->cldfbAna->no_channels, st->cldfbAna->no_col ), st->L_frame ) ) @@ -1896,9 +1871,7 @@ ivas_error acelp_core_dec_ivas_fx( } /* analyze pitch coherence for bass post-filter */ - Word32 pitch_buf_fx_q20[12]; - Scale_sig32( st->old_pitch_buf_fx, 2 * NB_SUBFR16k + 2, Q4 ); // Q(x+4) Word16 lim = shr( st->L_frame, 6 ); FOR( Word16 lp = 0; lp < lim; lp++ ) @@ -1961,7 +1934,9 @@ ivas_error acelp_core_dec_ivas_fx( Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12 st->cldfbAna->Q_cldfb_state = Q12; move16(); + cldfbAnalysis_ivas_fx( syn_32_fx, realBuffer_fx, imagBuffer_fx, -1, st->cldfbAna ); + Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11 st->cldfbAna->Q_cldfb_state = Q11; move16(); @@ -1990,6 +1965,7 @@ ivas_error acelp_core_dec_ivas_fx( } addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx, tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF ); + Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( ( sub( q_bpf_error_signal, Q10 ) ) ) ); // Q10 st->cldfbBPF->Q_cldfb_state = Q10; move16(); @@ -2186,6 +2162,7 @@ ivas_error acelp_core_dec_ivas_fx( Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, 1 ); // Q12 st->cldfbAna->Q_cldfb_state = Q12; move16(); + cldfbAnalysis_ivas_fx( syn_32_fx + sub( st->L_frame, nSamples ), realBuffer_fx, imagBuffer_fx, nSamples, st->cldfbAna ); Scale_sig32( st->cldfbAna->cldfb_state_fx, offset, -1 ); // Q11 @@ -2215,8 +2192,8 @@ ivas_error acelp_core_dec_ivas_fx( tmp = nSamples; move16(); } - addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx + sub( st->L_frame, nSamples ), tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF ); + addBassPostFilter_ivas_fx( tmp_bpf_error_signal_fx + sub( st->L_frame, nSamples ), tmp, realBuffer_fx, imagBuffer_fx, st->cldfbBPF ); Scale_sig32( st->cldfbBPF->cldfb_state_fx, cldfb_state_offset, negate( sub( q_bpf_error_signal, Q10 ) ) ); // Q10 st->cldfbBPF->Q_cldfb_state = Q10; @@ -2299,13 +2276,11 @@ ivas_error acelp_core_dec_ivas_fx( IF( ( EQ_16( st->L_frame, L_FRAME ) && ( st->bwidth != NB ) && GE_16( output_frame, L_FRAME16k ) && ( EQ_16( st->extl, -1 ) || EQ_16( st->extl, SWB_CNG ) || ( EQ_16( st->extl, WB_BWE ) && st->extl_brate == 0 && NE_16( st->coder_type, AUDIO ) ) ) ) ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); } ELSE -#endif { Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q0 hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); @@ -2315,9 +2290,7 @@ ivas_error acelp_core_dec_ivas_fx( ELSE { hf_synth_reset_fx( st->hBWE_zero ); -#ifdef REMOVE_EVS_DUPLICATES IF( NE_16( st->element_mode, EVS_MONO ) ) // VE: TBV: tmp hack - it is a bug in EVS but condition is here to keep EVS bit-exact for the moment -#endif { set16_fx( st->hBWE_zero->mem_hp400_fx, 0, 6 ); } @@ -2356,13 +2329,11 @@ ivas_error acelp_core_dec_ivas_fx( test(); IF( !st->ppp_mode_dec && ( st->idchan == 0 || NE_16( st->element_mode, IVAS_CPE_TD ) || ( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) && st->tdm_LRTD_flag ) ) ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { non_linearity_fx( bwe_exc_fx, bwe_exc_extended_fx, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); } ELSE -#endif { Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc non_linearity_ivas_fx( bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); @@ -2389,14 +2360,12 @@ ivas_error acelp_core_dec_ivas_fx( IF( GT_32( st->core_brate, SID_2k40 ) && st->hTdCngDec != NULL && st->hFdCngDec != NULL ) { /* update CNG parameters in active frames */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { cng_params_upd_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size, st->hTdCngDec->ho_lsp_circ_fx, st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate ); } ELSE -#endif { cng_params_upd_ivas_fx( lsp_new_fx, exc_fx, st->L_frame, &st->hTdCngDec->ho_circ_ptr, st->hTdCngDec->ho_ener_circ_fx, &st->hTdCngDec->ho_circ_size, st->hTdCngDec->ho_lsp_circ_fx, st->Q_exc, DEC, st->hTdCngDec->ho_env_circ_fx, NULL, NULL, NULL, NULL, st->last_active_brate, st->element_mode, @@ -2413,9 +2382,7 @@ ivas_error acelp_core_dec_ivas_fx( } } -#ifdef REMOVE_EVS_DUPLICATES IF( NE_16( st->element_mode, EVS_MONO ) ) -#endif { IF( save_hb_synth_fx16 ) { diff --git a/lib_dec/acelp_core_switch_dec_fx.c b/lib_dec/acelp_core_switch_dec_fx.c index 6d3d0b381..363db8202 100644 --- a/lib_dec/acelp_core_switch_dec_fx.c +++ b/lib_dec/acelp_core_switch_dec_fx.c @@ -128,11 +128,7 @@ ivas_error acelp_core_switch_dec_fx( * Excitation decoding *----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( DEC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &decode_bwe /* dummy */, &i, st_fx->element_mode, &i /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, 0, 0 ); -#else - config_acelp1( DEC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &decode_bwe /* dummy */, &i, st_fx->element_mode, &i /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, 0, 0 ); -#endif + config_acelp1_fx( DEC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &decode_bwe /* dummy */, &i, st_fx->element_mode, &i /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, 0, 0 ); decod_gen_voic_core_switch_fx( st_fx, L_frame_for_cs, 0, Aq, exc, cbrate, &st_fx->Q_exc ); @@ -920,11 +916,7 @@ static void decod_gen_voic_core_switch_fx( * Decode pitch lag *----------------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - pitch = pit_decode_ivas_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); /*Q6*/ -#else - pitch = pit_decode_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); /*Q6*/ -#endif + pitch = pit_decode_fx( st_fx, core_brate, 0, L_frame, 0, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); /*Q6*/ /*--------------------------------------------------------------* * Find the adaptive codebook vector. diff --git a/lib_dec/amr_wb_dec_fx.c b/lib_dec/amr_wb_dec_fx.c index c1c1e6143..96ae82dde 100644 --- a/lib_dec/amr_wb_dec_fx.c +++ b/lib_dec/amr_wb_dec_fx.c @@ -373,11 +373,7 @@ ivas_error amr_wb_dec_fx( IF( EQ_32( st_fx->core_brate, FRAME_NO_DATA ) || EQ_32( st_fx->core_brate, SID_1k75 ) ) { /* decode CNG parameters */ -#ifdef REMOVE_EVS_DUPLICATES - CNG_dec_ivas_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, &sid_bw, q_env ); -#else CNG_dec_fx( st_fx, EVS_MONO, Aq_fx, lsp_new_fx, lsf_new_fx, &allow_cn_step, &sid_bw, q_env ); -#endif /* comfort noise generation */ CNG_exc_fx( st_fx->core_brate, L_FRAME, &st_fx->hTdCngDec->Enew_fx, &st_fx->hTdCngDec->cng_seed, exc_fx, exc2_fx, &st_fx->lp_ener_fx, st_fx->last_core_brate, @@ -630,15 +626,9 @@ ivas_error amr_wb_dec_fx( move16(); } -#ifdef REMOVE_EVS_DUPLICATES - FEC_scale_syn_ivas_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, MOVING_AVERAGE, - &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, - exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 ); -#else FEC_scale_syn_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, MOVING_AVERAGE, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, - exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, avoid_lpc_burst_on_recovery, 0 ); -#endif + exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, 0 ); frame_ener_fx( L_FRAME, st_fx->clas_dec, syn_fx, pitch_buf_tmp[3], &st_fx->enr_old_fx, L_FRAME, st_fx->Q_syn, 3, 0 ); } @@ -717,17 +707,10 @@ ivas_error amr_wb_dec_fx( * (smoothing is performed in the excitation domain and signal is resynthesized after) *------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - FEC_scale_syn_ivas_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, - MOVING_AVERAGE, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, - st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, - st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, 0, 0 ); -#else FEC_scale_syn_fx( L_FRAME, &update_flg, st_fx->clas_dec, st_fx->last_good, syn_fx, pitch_buf_tmp, st_fx->enr_old_fx, L_enr_q_fx, -1, MOVING_AVERAGE, &st_fx->scaling_flag, &st_fx->lp_ener_FEC_av, &st_fx->lp_ener_FEC_max, st_fx->bfi, st_fx->total_brate, st_fx->prev_bfi, st_fx->last_core_brate, exc_fx, exc2_fx, Aq_fx, &st_fx->old_enr_LP, mem_tmp_fx, st_fx->mem_syn2_fx, - st_fx->Q_exc, st_fx->Q_syn, 0, 0 ); -#endif + st_fx->Q_exc, st_fx->Q_syn, EVS_MONO, 0, 0 ); /* estimate the pitch-synchronous speech energy per sample to be used when normal operation recovers */ frame_ener_fx( L_FRAME, st_fx->last_good, syn_fx, shr( FEC_pitch_fx, 6 ), &st_fx->enr_old_fx, L_FRAME, st_fx->Q_syn, 3, 0 ); @@ -785,11 +768,7 @@ ivas_error amr_wb_dec_fx( st_fx->hPFstat->on = 1; move16(); test(); -#ifdef REMOVE_EVS_DUPLICATES - formant_post_filt_ivas_fx( st_fx->hPFstat, tmp_buffer_fx + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME, L_shl( st_fx->psf_lp_noise_fx, 15 ), st_fx->total_brate, sub( amr_io_class, AUDIO_CLAS ) == 0 ); -#else formant_post_filt_fx( st_fx->hPFstat, tmp_buffer_fx + L_SYN_MEM, Aq_fx, syn_fx, L_FRAME, L_shl( st_fx->psf_lp_noise_fx, 15 ), st_fx->total_brate, sub( amr_io_class, AUDIO_CLAS ) == 0 ); -#endif } /*----------------------------------------------------------------* @@ -813,16 +792,9 @@ ivas_error amr_wb_dec_fx( st_fx->VAD = 0; move16(); } -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - PMT( "Fixed point not done here " ) - ApplyFdCng_fx( syn, NULL, NULL, NULL, st, 0, 0 ); -#else -#ifdef REMOVE_EVS_DUPLICATES - ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, NULL, NULL, NULL, st_fx, 0, 0 ); -#else - ApplyFdCng_fx( syn_fx, st_fx->Q_syn, NULL, NULL, NULL, st_fx, 0, 0 ); -#endif -#endif + + ApplyFdCng_fx( syn_fx, st_fx->Q_syn, NULL, 0, NULL, NULL, NULL, st_fx, 0, 0 ); + st_fx->hFdCngDec->hFdCngCom->frame_type_previous = st_fx->m_frame_type; move16(); diff --git a/lib_dec/cng_dec_fx.c b/lib_dec/cng_dec_fx.c index ce6ad6568..fdb6488db 100644 --- a/lib_dec/cng_dec_fx.c +++ b/lib_dec/cng_dec_fx.c @@ -22,19 +22,19 @@ static void shb_CNG_decod_fx( Decoder_State *st_fx, const Word16 *synth_fx, Word static void shb_CNG_decod_ivas_fx( Decoder_State *st_fx, const Word16 *synth_fx, Word16 *shb_synth_fx, const Word16 sid_bw, const Word16 Qsyn ); /*-----------------------------------------------------------------* + * CNG_dec_fx() + * * Decode residual signal energy *-----------------------------------------------------------------*/ -#ifndef REMOVE_EVS_DUPLICATES void CNG_dec_fx( Decoder_State *st_fx, /* i/o: State structure */ - const Word16 last_element_mode, /* i : last element mode Q0 */ + const Word16 last_element_mode, /* i : last element mode Q0 */ Word16 Aq[], /* o : LP coefficients Q12 */ Word16 *lsp_new, /* i/o: current frame LSPs Q15 */ Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */ Word16 *allow_cn_step, /* o : allow CN step Q0 */ - Word16 *sid_bw /* i : 0-NB/WB, 1-SWB SID Q0 */ - , + Word16 *sid_bw, /* i : 0-NB/WB, 1-SWB SID Q0 */ Word32 *q_env ) { Word16 istep; @@ -72,7 +72,6 @@ void CNG_dec_fx( Word16 exp_pow; Word16 tmp_loop; Word16 enr_new, Aq_tmp[M + 1]; - Word16 LSF_Q_prediction; /* o : LSF prediction mode - just temporary variable in CNG */ TD_CNG_DEC_HANDLE hTdCngDec; #ifdef BASOP_NOGLOB_DECLARE_LOCAL @@ -108,681 +107,9 @@ void CNG_dec_fx( } ELSE { - lsf_dec_fx( st_fx, 0, Aq, &LSF_Q_prediction, lsf_new, lsp_new, 0, 0, - NULL ); - /* check IF LSPs may trigger too much synthesis energy */ - - E_LPC_f_lsp_a_conversion( lsp_new, Aq_tmp, M ); - enr_new = Enr_1_Az_fx( Aq_tmp, 2 * L_SUBFR ); - - IF( shr( enr_new, 14 ) > 0 ) - { - /* Use old LSP vector */ - Copy( st_fx->lsp_old_fx, lsp_new, M ); /* Q15 */ - Copy( st_fx->lsf_old_fx, lsf_new, M ); /* Q2.56 */ - } - } - } - ELSE - { - /* Use old LSP vector */ - Copy( st_fx->lsp_old_fx, lsp_new, M ); /* Q15 */ - Copy( st_fx->lsf_old_fx, lsf_new, M ); /* Q2.56 */ - } - - /* Initialize the CNG spectral envelope in case of the very first CNG frame */ - IF( st_fx->first_CNG == 0 ) - { - Copy( st_fx->lsp_old_fx, st_fx->lspCNG_fx, M ); /* Q15 */ - } - - /*-----------------------------------------------------------------* - * Decode residual signal energy - *-----------------------------------------------------------------*/ - - *allow_cn_step = 0; - move16(); - test(); - IF( EQ_32( st_fx->core_brate, SID_1k75 ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - istep = ISTEP_AMR_WB_SID_FX; /* Q15 */ - move16(); - if ( EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - istep = ISTEP_SID_FX; /* Q15 */ - move16(); - } - - /* initialize the energy quantization parameters */ - num_bits = 6; - move16(); - if ( st_fx->Opt_AMR_WB == 0 ) - { - num_bits = 7; - move16(); - } - - /* decode the energy index */ - L_enr_index = get_next_indice_fx( st_fx, num_bits ); - - IF( LE_32( st_fx->last_core_brate, SID_2k40 ) || EQ_16( st_fx->prev_bfi, 1 ) ) - { - tmp1 = add( hTdCngDec->old_enr_index, 20 ); - } - ELSE - { - tmp1 = add( hTdCngDec->old_enr_index, 40 ); - } - IF( GT_16( L_enr_index, tmp1 ) && hTdCngDec->old_enr_index >= 0 ) /* Likely bit error and not startup */ - { - L_enr_index = tmp1; - move16(); - L_enr_index = s_min( L_enr_index, 127 ); /* Q0 */ - IF( st_fx->Opt_AMR_WB ) - { - L_enr_index = s_min( L_enr_index, 63 ); /* Q0 */ - } - } - - test(); - test(); - test(); - IF( GT_32( st_fx->last_core_brate, SID_1k75 ) && - NE_16( st_fx->first_CNG, 0 ) && - GE_16( hTdCngDec->old_enr_index, 0 ) && - GT_16( L_enr_index, add( hTdCngDec->old_enr_index, 1 ) ) ) - { - *allow_cn_step = 1; - move16(); - } - - hTdCngDec->old_enr_index = L_enr_index; - move16(); - if ( !L_enr_index ) - { - L_enr_index = -5; - move16(); - } - /* st_fx->Enew = L_enr_index / step - 2.0f;*/ - L_ener = L_mult( L_enr_index, istep ); /* Q16 (0+15) */ - /* subtract by 2 not done to leave Energy in Q2 */ - - /* extract integral and fractional parts */ - ener_fra = L_Extract_lc( L_ener, &ener_int ); - ener_int = add( ener_int, 4 ); /* Q2 to Q6 */ - - /* find the new energy value */ - hTdCngDec->Enew_fx = Pow2( ener_int, ener_fra ); - move32(); - - IF( EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - burst_ho_cnt = get_next_indice_fx( st_fx, 3 ); /* 3bit */ - - *sid_bw = get_next_indice_fx( st_fx, 1 ); - move16(); - IF( *sid_bw == 0 ) - { - env_idx[0] = get_next_indice_fx( st_fx, 6 ); - move16(); - - /* get quantized res_env_details */ - FOR( i = 0; i < NUM_ENV_CNG; i++ ) - { - q_env[i] = L_deposit_l( CNG_details_codebook_fx[env_idx[0]][i] ); - move32(); - } - } - } - /* Reset CNG history IF CNG frame length is changed */ - test(); - test(); - IF( EQ_16( st_fx->bwidth, WB ) && NE_16( st_fx->first_CNG, 0 ) && NE_16( st_fx->L_frame, st_fx->last_CNG_L_frame ) ) - { - hTdCngDec->ho_hist_size = 0; - move16(); - } - } - - /*---------------------------------------------------------------------* - * CNG spectral envelope update - * Find A(z) coefficients - *---------------------------------------------------------------------*/ - test(); - test(); - test(); - IF( LE_32( st_fx->last_core_brate, SID_2k40 ) ) - { - /* Reset hangover counter if not first SID period */ - if ( GT_32( st_fx->core_brate, FRAME_NO_DATA ) ) - { - hTdCngDec->num_ho = 0; - move16(); - } - /* Update LSPs IF last SID energy not outliers or insufficient number of hangover frames */ - test(); - IF( LT_16( hTdCngDec->num_ho, 3 ) || LT_32( Mult_32_16( hTdCngDec->Enew_fx, 21845 /*1/1.5f, Q15*/ ), st_fx->lp_ener_fx ) ) - { - FOR( i = 0; i < M; i++ ) - { - /* AR low-pass filter */ - st_fx->lspCNG_fx[i] = mac_r( L_mult( CNG_ISF_FACT_FX, st_fx->lspCNG_fx[i] ), 32768 - CNG_ISF_FACT_FX, lsp_new[i] ); - move16(); /* Q15 (15+15+1-16) */ - } - } - } - ELSE - { - /* Update CNG_mode IF allowed */ - test(); - test(); - test(); - IF( ( st_fx->Opt_AMR_WB || EQ_16( st_fx->bwidth, WB ) ) && ( !st_fx->first_CNG || GE_16( hTdCngDec->act_cnt2, MIN_ACT_CNG_UPD ) ) ) - { - IF( GT_32( st_fx->last_active_brate, ACELP_16k40 ) ) - { - st_fx->CNG_mode = -1; - move16(); - } - ELSE - { - st_fx->CNG_mode = get_cng_mode( st_fx->last_active_brate ); - move16(); - } - } - - /* If first sid after active burst update LSF history from circ buffer */ - burst_ho_cnt = s_min( burst_ho_cnt, hTdCngDec->ho_circ_size ); /* MODE1_DTX_IN_CODEC_B_FIX Q0*/ - hTdCngDec->act_cnt = 0; - move16(); - s_ptr = add( sub( hTdCngDec->ho_circ_ptr, burst_ho_cnt ), 1 ); - IF( s_ptr < 0 ) - { - s_ptr = add( s_ptr, hTdCngDec->ho_circ_size ); - } - - FOR( ll = burst_ho_cnt; ll > 0; ll-- ) - { - hTdCngDec->ho_hist_ptr = add( hTdCngDec->ho_hist_ptr, 1 ); /* Q0 */ - move16(); - if ( EQ_16( hTdCngDec->ho_hist_ptr, HO_HIST_SIZE ) ) - { - hTdCngDec->ho_hist_ptr = 0; - move16(); - } - - /* Conversion between 12.8k and 16k LSPs */ - test(); - test(); - test(); - IF( ( EQ_16( st_fx->L_frame, L_FRAME16k ) && hTdCngDec->ho_16k_lsp[s_ptr] == 0 ) || ( EQ_16( st_fx->L_frame, L_FRAME ) && EQ_16( hTdCngDec->ho_16k_lsp[s_ptr], 1 ) ) ) - { - /* Conversion from 16k LPSs to 12k8 */ - lsp_convert_poly_fx( &( hTdCngDec->ho_lsp_circ_fx[s_ptr * M] ), st_fx->L_frame, 0 ); - } - /* update the circular buffers */ - Copy( &( hTdCngDec->ho_lsp_circ_fx[s_ptr * M] ), &( hTdCngDec->ho_lsp_hist_fx[hTdCngDec->ho_hist_ptr * M] ), M ); /* Qx */ - Copy32( &( hTdCngDec->ho_ener_circ_fx[s_ptr] ), &( hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr] ), 1 ); /* Q6 */ - hTdCngDec->ho_sid_bw = L_shl( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x3fffffffL ), 1 ); - move32(); - Copy32( &( hTdCngDec->ho_env_circ_fx[s_ptr * NUM_ENV_CNG] ), &( hTdCngDec->ho_env_hist_fx[hTdCngDec->ho_hist_ptr * NUM_ENV_CNG] ), NUM_ENV_CNG ); /* Qx */ - - hTdCngDec->ho_hist_size = add( hTdCngDec->ho_hist_size, 1 ); - move16(); - - if ( GT_16( hTdCngDec->ho_hist_size, HO_HIST_SIZE ) ) - { - hTdCngDec->ho_hist_size = HO_HIST_SIZE; - move16(); - } - - s_ptr = add( s_ptr, 1 ); - if ( EQ_16( s_ptr, hTdCngDec->ho_circ_size ) ) - { - s_ptr = 0; - move16(); - } - } - - IF( hTdCngDec->ho_hist_size > 0 ) /* can be -1 at init MODE1_DTX_IN_CODEC_B_FIX */ - { - /* *allow_cn_step |= ( st_fx->ho_ener_hist[st_fx->ho_hist_ptr] > 4.0f * st_fx->lp_ener );*/ - L_tmp1 = L_shr( hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr], 2 ); - L_tmp1 = L_sub( L_tmp1, st_fx->lp_ener_fx ); + lsf_dec_fx( st_fx, 0, Aq, &LSF_Q_prediction, lsf_new, lsp_new, 0, 0, NULL ); - test(); - test(); - IF( ( L_tmp1 > 0 && ( st_fx->first_CNG || st_fx->element_mode == EVS_MONO ) ) ) - { - *allow_cn_step = s_or( *allow_cn_step, 1 ); - move16(); - } - } - IF( EQ_16( last_element_mode, IVAS_CPE_TD ) ) - { - *allow_cn_step = 1; - move16(); - } - test(); - IF( EQ_16( *allow_cn_step, 0 ) && GT_16( hTdCngDec->ho_hist_size, 0 ) ) - { - /* Use average of energies below last energy */ - ptr = hTdCngDec->ho_hist_ptr; - move16(); - Copy( &( hTdCngDec->ho_lsp_hist_fx[ptr * M] ), tmp, M ); /* Qx */ - m1 = 0; - move16(); - IF( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x1 ) == 0 ) - { - Copy32( &hTdCngDec->ho_env_hist_fx[ptr * NUM_ENV_CNG], tmp_env, NUM_ENV_CNG ); - m1 = 1; - move16(); - } - L_enr = Mult_32_16( hTdCngDec->ho_ener_hist_fx[ptr], W_DTX_HO_FX[0] ); /* Q6+15-15->Q6 */ - - weights = W_DTX_HO_FX[0]; /* Q15 */ - move16(); - - m = 1; - move16(); - FOR( k = 1; k < hTdCngDec->ho_hist_size; k++ ) - { - ptr--; - if ( ptr < 0 ) - { - ptr = HO_HIST_SIZE - 1; - move16(); - } - - test(); - IF( LT_32( Mult_32_16( hTdCngDec->ho_ener_hist_fx[ptr], ONE_OVER_BUF_H_NRG_FX ), hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr] ) && - GT_32( hTdCngDec->ho_ener_hist_fx[ptr], Mult_32_16( hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr], BUF_L_NRG_FX ) ) ) - { - /*enr += W_DTX_HO[k] * st_fx->ho_ener_hist[ptr];*/ - L_tmp1 = Mult_32_16( hTdCngDec->ho_ener_hist_fx[ptr], W_DTX_HO_FX[k] ); /* Q6+15-15->Q6 */ - L_enr = L_add( L_enr, L_tmp1 ); /* Q6 */ - - /*weights += W_DTX_HO[k];*/ - weights = add( weights, W_DTX_HO_FX[k] ); /* Q15 */ - - Copy( &hTdCngDec->ho_lsp_hist_fx[ptr * M], &tmp[m * M], M ); /* Qx */ - IF( EQ_32( L_and( hTdCngDec->ho_sid_bw, L_shl( (Word32) 0x1, k ) ), 0 ) ) - { - Copy32( &hTdCngDec->ho_env_hist_fx[ptr * NUM_ENV_CNG], &tmp_env[m1 * NUM_ENV_CNG], NUM_ENV_CNG ); /* Qx */ - m1++; - } - m++; - } - } - - /*enr /= weights;*/ - exp = norm_s( weights ); - tmp1 = div_s( shl( 1, sub( 14, exp ) ), weights ); /* Q(15+14-exp-15) */ - L_tmp1 = Mult_32_16( L_enr, tmp1 ); /* Q(14-exp+6-15)->Q(5-exp) */ - L_enr = L_shl( L_tmp1, add( exp, 1 ) ); /* Q6 */ - - st_fx->lp_ener_fx = L_enr; /* Q6 */ - move32(); - set32_fx( max_val, 0, 2 ); - set16_fx( max_idx, 0, 2 ); - - FOR( i = 0; i < m; i++ ) - { - IF( EQ_16( st_fx->L_frame, L_FRAME ) ) - { - lsp2lsf_fx( &tmp[i * M], lsf_tmp, M, INT_FS_FX ); - ftmp_fx = 964; - move16(); /*X2.56 */ - tmpv = sub( 16384, add( lsf_tmp[M - 1], ftmp_fx ) ); /*QX2.56*/ - L_tmp = L_mult0( tmpv, tmpv ); /*QX6.5536*/ - } - ELSE - { - lsp2lsf_fx( &tmp[i * M], lsf_tmp, M, INT_FS_16k_FX ); - ftmp_fx = 1205; - move16(); /*QX2.56*/ - tmpv = sub( 20480, add( lsf_tmp[M - 1], ftmp_fx ) ); /*QX2.56*/ - L_tmp = L_mult0( tmpv, tmpv ); /*QX6.5536*/ - } - - tmpv = sub( lsf_tmp[0], ftmp_fx ); /*QX2.56*/ - L_tmp = L_mac0( L_tmp, tmpv, tmpv ); /*QX6.5536*/ - FOR( j = 0; j < M - 1; j++ ) - { - tmpv = sub( sub( lsf_tmp[j + 1], lsf_tmp[j] ), ftmp_fx ); /*QX2.56*/ - L_tmp = L_mac0( L_tmp, tmpv, tmpv ); /*QX6.5536*/ - } - - C[i] = Mpy_32_16_1( L_tmp, 1928 ); /*QX6.5536*/ - move32(); - - IF( GT_32( C[i], max_val[0] ) ) - { - max_val[1] = max_val[0]; - move32(); - max_idx[1] = max_idx[0]; - move16(); - max_val[0] = C[i]; - move32(); - max_idx[0] = i; - move16(); - } - ELSE IF( GT_32( C[i], max_val[1] ) ) - { - max_val[1] = C[i]; - move32(); - max_idx[1] = i; - move16(); - } - } - - IF( EQ_16( m, 1 ) ) - { - Copy( tmp, lsp_tmp, M ); /* Qx */ - } - ELSE IF( LT_16( m, 4 ) ) - { - FOR( i = 0; i < M; i++ ) - { - L_tmp1 = 0; - move32(); - FOR( j = 0; j < m; j++ ) - { - L_tmp1 = L_add( L_tmp1, L_deposit_l( tmp[j * M + i] ) ); - } - - L_tmp1 = L_sub( L_tmp1, L_deposit_l( tmp[max_idx[0] * M + i] ) ); - tmpv = div_s( 1, sub( m, 1 ) ); /*Q15*/ - L_tmp1 = Mpy_32_16_1( L_tmp1, tmpv ); /*Q15*/ - lsp_tmp[i] = extract_l( L_tmp1 ); /*Q15*/ - move16(); - } - } - ELSE - { - FOR( i = 0; i < M; i++ ) - { - L_tmp1 = 0; - move32(); - FOR( j = 0; j < m; j++ ) - { - L_tmp1 = L_add( L_tmp1, L_deposit_l( tmp[j * M + i] ) ); - } - - L_tmp1 = L_sub( L_tmp1, L_add( L_deposit_l( tmp[max_idx[0] * M + i] ), L_deposit_l( tmp[max_idx[1] * M + i] ) ) ); /*Q15*/ - tmpv = div_s( 1, sub( m, 2 ) ); /*Q15*/ - L_tmp1 = Mpy_32_16_1( L_tmp1, tmpv ); /*Q15*/ - lsp_tmp[i] = extract_l( L_tmp1 ); /*Q15*/ - move16(); - } - } - - dist = 0; - move16(); /*Q15*/ - max_dev = 0; - move16(); /*Q15*/ - FOR( i = 0; i < M; i++ ) - { - dev = abs_s( sub( lsp_tmp[i], lsp_new[i] ) ); /*Q15*/ - dist = add_o( dist, dev, &Overflow ); /*Q15*/ - if ( GT_16( dev, max_dev ) ) - { - max_dev = dev; - move16(); - } - } - - test(); - IF( GT_16( dist, 13107 ) || GT_16( max_dev, 3277 ) ) /* 0.4 and 0.1 in Q15 */ - { - FOR( i = 0; i < M; i++ ) - { - st_fx->lspCNG_fx[i] = lsp_tmp[i]; - move16(); /*Q15*/ - } - } - ELSE - { - FOR( i = 0; i < M; i++ ) - { - /* AR low-pass filter */ - st_fx->lspCNG_fx[i] = add( mult_r( 26214, lsp_tmp[i] ), mult_r( 6554, lsp_new[i] ) ); /* Q15 */ - move16(); - } - } - IF( m1 > 0 ) - { - FOR( i = 0; i < NUM_ENV_CNG; i++ ) - { - L_tmp = L_deposit_l( 0 ); - FOR( j = 0; j < m1; j++ ) - { - /* env[i] += tmp_env[j*NUM_ENV_CNG+i];*/ - L_tmp = L_add_sat( L_tmp, tmp_env[j * NUM_ENV_CNG + i] ); - } - /* env[i] /= (float)m1; */ - /* env[i] = env[i] - 2*st_fx->lp_ener_fx; */ - IF( EQ_16( m1, 1 ) ) - { - L_tmp = L_sub_sat( L_tmp, L_add_sat( st_fx->lp_ener_fx, st_fx->lp_ener_fx ) ); /* Q6 */ - } - ELSE - { - tmp1 = div_s( 1, m1 ); - L_tmp = Mult_32_16( L_tmp, tmp1 ); /* Q6 */ - L_tmp = L_sub_sat( L_tmp, L_add_sat( st_fx->lp_ener_fx, st_fx->lp_ener_fx ) ); /* Q6 */ - } - env[i] = L_tmp; /* Q6 */ - move32(); - } - - Copy32( env, hTdCngDec->lp_env_fx, NUM_ENV_CNG ); /* Q6 */ - } - } - ELSE - { - Copy( lsp_new, st_fx->lspCNG_fx, M ); /* use newly analyzed ISFs */ /* Q15 */ - } - } - - test(); - IF( EQ_32( st_fx->core_brate, SID_1k75 ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - /* Update hangover memory during CNG */ - test(); - IF( ( *allow_cn_step == 0 ) && LT_32( hTdCngDec->Enew_fx, L_add_sat( st_fx->lp_ener_fx, L_shr( st_fx->lp_ener_fx, 1 ) ) ) ) - { - /* update the pointer to circular buffer of old LSP vectors */ - hTdCngDec->ho_hist_ptr++; - move16(); - if ( EQ_16( hTdCngDec->ho_hist_ptr, HO_HIST_SIZE ) ) - { - hTdCngDec->ho_hist_ptr = 0; - move16(); - } - - /* update the circular buffer of old LSP vectors with the new LSP vector */ - Copy( lsp_new, &( hTdCngDec->ho_lsp_hist_fx[( hTdCngDec->ho_hist_ptr ) * M] ), M ); /* Q15 */ - - /* update the hangover energy buffer */ - hTdCngDec->ho_ener_hist_fx[hTdCngDec->ho_hist_ptr] = hTdCngDec->Enew_fx; /* Q6 */ - move32(); - test(); - IF( EQ_32( st_fx->core_brate, SID_2k40 ) && ( *sid_bw == 0 ) ) - { - /* enr1 = (float)log10( st->Enew*L_frame + 0.1f ) / (float)log10( 2.0f );*/ - exp = norm_l( hTdCngDec->Enew_fx ); - L_tmp = L_shl( hTdCngDec->Enew_fx, exp ); /*Q(exp+6)*/ - L_tmp = Mult_32_16( L_tmp, shl( st_fx->L_frame, 5 ) ); /*Q(exp+6+5-15=exp-4)*/ - L_tmp = L_shr_sat( L_tmp, sub( exp, 10 ) ); /*Q6*/ - exp = norm_l( L_tmp ); - fra = Log2_norm_lc( L_shl( L_tmp, exp ) ); - exp = sub( sub( 30, exp ), 6 ); - L_tmp = L_Comp( exp, fra ); - enr1 = L_shr( L_tmp, 10 ); /* Q6 */ - - FOR( i = 0; i < NUM_ENV_CNG; i++ ) - { - /* get quantized envelope */ - /* env[i] = pow(2.0f,(enr1 - q_env[i])) + 2*st->Enew;*/ - L_tmp = L_sub( enr1, q_env[i] ); /* Q6 */ - L_tmp = L_shl( L_tmp, 10 ); /* 16 */ - temp_lo_fx = L_Extract_lc( L_tmp, &temp_hi_fx ); - - exp_pow = sub( 14, temp_hi_fx ); - L_tmp = Pow2( 14, temp_lo_fx ); /* Qexp_pow */ - env[i] = L_shl( L_tmp, sub( 6, exp_pow ) ); /* Q6 */ - move32(); - L_tmp = L_add( hTdCngDec->Enew_fx, hTdCngDec->Enew_fx ); - env[i] = L_add( env[i], L_tmp ); /* Q6 */ - move32(); - } - hTdCngDec->ho_sid_bw = L_shl( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x3fffffffL ), 1 ); /* Q0 */ - move32(); - Copy32( env, &( hTdCngDec->ho_env_hist_fx[hTdCngDec->ho_hist_ptr * NUM_ENV_CNG] ), NUM_ENV_CNG ); /* Q6 */ - } - ELSE IF( ( *sid_bw != 0 ) ) - { - hTdCngDec->ho_sid_bw = L_shl( L_and( hTdCngDec->ho_sid_bw, (Word32) 0x3fffffffL ), 1 ); /* Q0 */ - move32(); - hTdCngDec->ho_sid_bw = L_or( hTdCngDec->ho_sid_bw, 0x1L ); /* Q0 */ - move32(); - } - - hTdCngDec->ho_hist_size = add( hTdCngDec->ho_hist_size, 1 ); - move16(); - if ( GT_16( hTdCngDec->ho_hist_size, HO_HIST_SIZE ) ) - { - hTdCngDec->ho_hist_size = HO_HIST_SIZE; - move16(); - } - } - /* Update the frame length memory */ - st_fx->last_CNG_L_frame = st_fx->L_frame; - move16(); - - if ( NE_32( st_fx->core_brate, SID_1k75 ) ) - { - hTdCngDec->num_ho = m; - move16(); - } - } - - IF( st_fx->element_mode == EVS_MONO ) - { - st_fx->last_CNG_L_frame = st_fx->L_frame; - move16(); - - IF( NE_32( st_fx->core_brate, SID_1k75 ) ) - { - hTdCngDec->num_ho = m; - move16(); - } - } - IF( st_fx->Opt_AMR_WB ) - { - E_LPC_f_isp_a_conversion( st_fx->lspCNG_fx, Aq, M ); - } - ELSE - { - E_LPC_f_lsp_a_conversion( st_fx->lspCNG_fx, Aq, M ); - } - - tmp_loop = shr( st_fx->L_frame, 6 ); - FOR( i = 1; i < tmp_loop; i++ ) /* L_frame/L_SUBFR */ - { - Copy( Aq, &Aq[i * ( M + 1 )], add( M, 1 ) ); /* Q12 */ - } - - return; -} -#endif -void CNG_dec_ivas_fx( - Decoder_State *st_fx, /* i/o: State structure */ - const Word16 last_element_mode, /* i : last element mode Q0 */ - Word16 Aq[], /* o : LP coefficients Q12 */ - Word16 *lsp_new, /* i/o: current frame LSPs Q15 */ - Word16 *lsf_new, /* i/o: current frame LSFs Qlog2(2.56) */ - Word16 *allow_cn_step, /* o : allow CN step Q0 */ - Word16 *sid_bw /* i : 0-NB/WB, 1-SWB SID Q0 */ - , - Word32 *q_env ) -{ - Word16 istep; - Word16 i, L_enr_index; - Word32 L_ener; - Word16 ener_fra, ener_int; - Word16 num_bits; - Word16 weights, ptr, j, k; - Word16 m1; - Word16 m = 0; - move16(); - Word16 tmp[HO_HIST_SIZE * M]; - Word16 burst_ho_cnt = 0; - move16(); - Word16 ll, s_ptr; - Word32 L_enr, L_tmp1; - Word16 tmp1, exp; - Word16 lsf_tmp[M]; - Word32 C[M]; - Word32 max_val[2]; - Word16 max_idx[2]; - Word16 ftmp_fx; - Word16 lsp_tmp[M]; - Word16 dev; - Word16 max_dev; - Word16 dist; - Word16 tmpv; - Word16 env_idx[2]; - Word32 enr1; - Word32 env[NUM_ENV_CNG]; - Word32 tmp_env[HO_HIST_SIZE * NUM_ENV_CNG]; - Word32 L_tmp; - Word16 fra; - Word16 temp_lo_fx, temp_hi_fx; - Word16 exp_pow; - Word16 tmp_loop; - Word16 enr_new, Aq_tmp[M + 1]; - - Word16 LSF_Q_prediction; /* o : LSF prediction mode - just temporary variable in CNG */ - TD_CNG_DEC_HANDLE hTdCngDec; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - hTdCngDec = st_fx->hTdCngDec; - - m = 0; - move16(); - /*-----------------------------------------------------------------* - * Decode CNG spectral envelope (only in SID frame) - *-----------------------------------------------------------------*/ - test(); - IF( EQ_32( st_fx->core_brate, SID_1k75 ) || EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - /* de-quantize the LSF vector */ - IF( st_fx->Opt_AMR_WB != 0 ) - { - /* Flt function */ - isf_dec_amr_wb_fx( st_fx, Aq, lsf_new, lsp_new ); - /* check IF ISPs may trigger too much synthesis energy */ - - E_LPC_f_isp_a_conversion( lsp_new, Aq_tmp, M ); - enr_new = Enr_1_Az_fx( Aq_tmp, 2 * L_SUBFR ); - - IF( ( shr( enr_new, 14 ) > 0 ) ) - { - /* Use old LSP vector */ - Copy( st_fx->lsp_old_fx, lsp_new, M ); /* Q15 */ - Copy( st_fx->lsf_old_fx, lsf_new, M ); /* Q2.56 */ - } - } - ELSE - { - lsf_dec_ivas_fx( st_fx, 0, Aq, &LSF_Q_prediction, lsf_new, lsp_new, 0, 0, - NULL ); /* check IF LSPs may trigger too much synthesis energy */ - E_LPC_f_lsp_a_conversion( lsp_new, Aq_tmp, M ); enr_new = Enr_1_Az_fx( Aq_tmp, 2 * L_SUBFR ); diff --git a/lib_dec/dec_LPD_fx.c b/lib_dec/dec_LPD_fx.c index f53234ded..d95359665 100644 --- a/lib_dec/dec_LPD_fx.c +++ b/lib_dec/dec_LPD_fx.c @@ -556,11 +556,7 @@ void decoder_LPD_fx( move16(); } -#ifdef REMOVE_EVS_DUPLICATES int_lsp4_ivas_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp ); -#else - int_lsp4_fx( L_frame, &lsp[0], lspmid, &lsp[M], Aq, M, st->relax_prev_lsf_interp ); -#endif } ELSE { diff --git a/lib_dec/dec_ace_fx.c b/lib_dec/dec_ace_fx.c index 16f749156..9c366e3f3 100644 --- a/lib_dec/dec_ace_fx.c +++ b/lib_dec/dec_ace_fx.c @@ -532,35 +532,24 @@ void decoder_acelp_fx( move16(); IF( st->igf != 0 ) { -#ifdef REMOVE_EVS_DUPLICATES - prep_tbe_exc_ivas_fx( st->L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc, - gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 ); -#else - prep_tbe_exc_fx( st->L_frame, -#ifdef ADD_IVAS_TBE_CODE - L_SUBFR, -#endif - i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc, - gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate -#ifdef ADD_IVAS_TBE_CODE - , - st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 -#endif - ); -#endif + prep_tbe_exc_fx( st->L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc, + gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 ); } /*---------------------------------------------------------* * Enhance the excitation * *---------------------------------------------------------*/ + E_UTIL_enhancer( st->voice_fac, stab_fac, st->past_gcode, gain_inov, &( st->gc_threshold_fx ), code, &exc2[i_subfr], gain_pit, &st->dm_fx.prev_gain_code, st->dm_fx.prev_gain_pit, &st->dm_fx.prev_state, st->coder_type, acelp_cfg.fixed_cdk_index[idx], L_SUBFR, st->L_frame, st->Q_exc ); } /* !RF_NELP frame partial copy */ + /*----------------------------------------------------------* * - compute the synthesis speech * *----------------------------------------------------------*/ + rescale_mem( &st->Q_exc, &prev_Q_syn, &st->Q_syn, mem_syn, syn, M, i_subfr ); E_UTIL_synthesis( sub( st->Q_exc, st->Q_syn ), p_A, &exc2[i_subfr], &syn[i_subfr], L_SUBFR, mem_syn, 1, M ); @@ -686,16 +675,11 @@ void decoder_acelp_fx( move16(); } -#ifdef REMOVE_EVS_DUPLICATES - FEC_scale_syn_ivas_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, syn, pBuf_scaleSyn, st->enr_old_fx, 0, - st->coder_type, LSF_Q_prediction, &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, - exc, exc2, A, &( st->old_enr_LP ), mem_back, mem_syn, st->Q_exc, st->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, force_scale_syn ); -#else FEC_scale_syn_fx( st->L_frame, &update_flg, st->clas_dec, st->last_good, syn, pBuf_scaleSyn, st->enr_old_fx, 0, st->coder_type, LSF_Q_prediction, &st->scaling_flag, &st->lp_ener_FEC_av, &st->lp_ener_FEC_max, st->bfi, st->total_brate, st->prev_bfi, st->last_core_brate, - exc, exc2, A, &( st->old_enr_LP ), mem_back, mem_syn, st->Q_exc, st->Q_syn, avoid_lpc_burst_on_recovery, force_scale_syn ); -#endif + exc, exc2, A, &( st->old_enr_LP ), mem_back, mem_syn, st->Q_exc, st->Q_syn, EVS_MONO, avoid_lpc_burst_on_recovery, force_scale_syn ); } + /* update ACELP synthesis memory */ Copy( mem_syn, st->mem_syn2_fx, M ); Copy( syn + st->L_frame - L_SYN_MEM, st->mem_syn_r, L_SYN_MEM ); diff --git a/lib_dec/dec_amr_wb_fx.c b/lib_dec/dec_amr_wb_fx.c index b03b6d69c..500fe34ba 100644 --- a/lib_dec/dec_amr_wb_fx.c +++ b/lib_dec/dec_amr_wb_fx.c @@ -71,11 +71,7 @@ void decod_amr_wb_fx( * Decode pitch lag *----------------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - *pt_pitch_fx = pit_decode_ivas_fx( st_fx, st_fx->core_brate, 1, L_FRAME, i_subfr, -1, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); -#else - *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 1, L_FRAME, i_subfr, -1, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR ); -#endif + *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 1, L_FRAME, i_subfr, -1, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, L_SUBFR, 0, NULL ); /*--------------------------------------------------------------* * Find the adaptive codebook vector diff --git a/lib_dec/dec_gen_voic_fx.c b/lib_dec/dec_gen_voic_fx.c index 7411d59f2..3e42d9535 100644 --- a/lib_dec/dec_gen_voic_fx.c +++ b/lib_dec/dec_gen_voic_fx.c @@ -18,8 +18,7 @@ /*----------------------------------------------------------------------*/ /* GLOBAL INPUT ARGUMENTS : */ /* _ (Struct) st_fx : decoder static memory */ -/* _ (Word16) L_frame : length of the frame */ - +/* _ (Word16) L_frame : length of the frame */ /* _ (Word16[]) Aq_fx : LP filter coefficient Q12 */ /* _ (Word16) Es_pred_fx : predicted scaled innov. energy Q8 */ /* _ (Word16[]) pitch_buf_fx : floating pitch values for each subframe Q6*/ @@ -29,503 +28,30 @@ /* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */ /* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */ /*----------------------------------------------------------------------*/ - - /*----------------------------------------------------------------------*/ /* RETURN ARGUMENTS : */ /* _ None */ /*======================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES ivas_error decod_gen_voic_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 L_frame, /* i : length of the frame */ - const Word16 sharpFlag_fx, /* i : formant sharpening flag */ - const Word16 *Aq_fx, /* i : LP filter coefficient Q12 */ - const Word16 Es_pred_fx, /* i : predicted scaled innov. energy Q8 */ - const Word16 do_WI_fx, /* i : do interpolation after a FER */ - Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe Q6 */ - Word16 *voice_factors_fx, /* o : voicing factors Q15 */ - Word16 *exc_fx, /* i/o: adapt. excitation exc Q_exc */ - Word16 *exc2_fx, /* i/o: adapt. excitation/total exc Q_exc */ - Word16 *bwe_exc_fx, /* o : excitation for SWB TBE Q_exc */ - Word16 *unbits, /* number of unused bits */ - Word16 *gain_buf /*Q14*/ -) -{ - - - Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */ - Word16 gain_pit_fx = 0; /* pitch gain Q14 */ - move16(); - Word32 gain_code_fx = 0; /* gain/normalized gain of the algebraic excitation Q16 */ - move32(); - Word32 norm_gain_code_fx = 0; /* normalized gain of the algebraic excitation Q16 */ - move32(); - Word16 gain_inov_fx = 0; /* Innovation gain Q12 */ - move16(); - Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */ - Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */ - Word16 voice_fac_fx; /* voicing factor Q15 */ - Word16 code_fx[L_SUBFR]; /* algebraic codevector Q12 */ - - const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */ - Word16 *pt_pitch_fx; /* pointer to floating pitch Q6 */ - Word16 i_subfr_fx, i; /* tmp variables */ - Word16 error_fx = 0; - move16(); - Word16 gain_preQ_fx = 0; /* Gain of prequantizer excitation */ - move16(); - Word16 code_preQ_fx[L_SUBFR]; /* Prequantizer excitation */ - Word32 norm_gain_preQ_fx; - Word16 pitch_limit_flag_fx; - - Word16 tmp1_fx, gain_code16; - Word32 L_tmp_GC; - Word32 L_tmp; - - Word16 harm_flag_acelp; - - Word16 shft_prev, ph_offset_fx; - Word32 prev_res_nrg; - Word32 prev_spch_nrg; - Word32 curr_res_nrg; - Word32 curr_spch_nrg; - Word16 rint_bfi_pitch, rint_pitch; - Word16 fraca, fracb, expa, expb, scale, exp1; - Word16 *p_exc; - Word16 mem_tmp_fx[M]; - Word16 syn_tmp_fx[L_FRAME16k]; - Word16 shft_curr; - Word16 *p_syn; - Word16 sp_enratio, Qsp_enratio; - Word16 enratio, Qenratio; - DTFS_STRUCTURE *PREVP, *CURRP; - Word16 S_fx[PIT_MAX * 4 + 1], C_fx[PIT_MAX * 4 + 1]; - Word16 dummy2[2]; - Word16 out_fx[L_FRAME16k]; - - Word16 pf_temp1[MAXLAG_WI]; /*may not need more than MAXLAG_WI/2+1 */ - Word16 pf_temp2[MAXLAG_WI]; - Word16 pf_temp[MAXLAG_WI]; - Word16 pf_n2[MAXLAG_WI]; - MUSIC_POSTFILT_HANDLE hMusicPF; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - hMusicPF = st_fx->hMusicPF; - - GSC_DEC_HANDLE hGSCDec; - hGSCDec = st_fx->hGSCDec; - ivas_error error; - - error = IVAS_ERR_OK; - move32(); - - T0_fx = PIT_MIN; - move16(); - T0_frac_fx = 0; - move16(); - - /* read harmonicity flag */ - harm_flag_acelp = 0; - move16(); - test(); - test(); - IF( ( GE_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) && LE_32( st_fx->core_brate, MAX_BRATE_AVQ_EXC_TD ) ) && EQ_16( st_fx->coder_type, GENERIC ) ) - { - harm_flag_acelp = (Word16) get_next_indice( st_fx, 1 ); - } - - /*------------------------------------------------------------------* - * ACELP subframe loop - *------------------------------------------------------------------*/ - - p_Aq_fx = Aq_fx; /* pointer to interpolated LPC parameters */ - pt_pitch_fx = pitch_buf_fx; /* pointer to the pitch buffer */ - norm_gain_preQ_fx = 0; - move32(); - gain_preQ_fx = 0; - move16(); - set16_fx( code_preQ_fx, 0, L_SUBFR ); - - FOR( i_subfr_fx = 0; i_subfr_fx < L_frame; i_subfr_fx += L_SUBFR ) - { - /*----------------------------------------------------------------------* - * Decode pitch lag - *----------------------------------------------------------------------*/ - - *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx, - &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR ); - move16(); /*Q6*/ - - /*--------------------------------------------------------------* - * Find the adaptive codebook vector - *--------------------------------------------------------------*/ - - pred_lt4( &exc_fx[i_subfr_fx], &exc_fx[i_subfr_fx], T0_fx, T0_frac_fx, L_SUBFR + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP ); - - tbe_celp_exc( L_frame, i_subfr_fx, T0_fx, T0_frac_fx, &error_fx, bwe_exc_fx ); - - /*--------------------------------------------------------------* - * LP filtering of the adaptive excitation - *--------------------------------------------------------------*/ - lp_filt_exc_dec_fx( st_fx, MODE1, i_subfr_fx, L_SUBFR, L_frame, st_fx->acelp_cfg.ltf_mode, exc_fx ); - /*-----------------------------------------------------------------* - * Transform-domain contribution decoding (active frames) - *-----------------------------------------------------------------*/ - - test(); - IF( GE_32( st_fx->core_brate, MIN_BRATE_AVQ_EXC ) && ( st_fx->coder_type != INACTIVE ) ) - { - gain_code_fx = 0; - move16(); - transf_cdbk_dec_fx( st_fx, harm_flag_acelp, i_subfr_fx, Es_pred_fx, gain_code_fx, &gain_preQ_fx, &norm_gain_preQ_fx, code_preQ_fx, unbits ); - } - - /*--------------------------------------------------------------* - * Innovation decoding - *--------------------------------------------------------------*/ - - inov_decode_fx( st_fx, st_fx->core_brate, 0, L_frame, sharpFlag_fx, i_subfr_fx, p_Aq_fx, st_fx->tilt_code_fx, *pt_pitch_fx, code_fx, L_SUBFR ); - - /*--------------------------------------------------------------* - * Gain decoding - * Estimate spectrum tilt and voicing - *--------------------------------------------------------------*/ - - IF( LE_32( st_fx->core_brate, ACELP_8k00 ) ) - { - gain_dec_lbr_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR ); - } - ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) ) - { - gain_dec_SQ_fx( st_fx, i_subfr_fx, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx ); - } - ELSE - { - gain_dec_mless_fx( st_fx, L_frame, st_fx->coder_type, i_subfr_fx, -1, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx ); - } - st_fx->tilt_code_fx = est_tilt_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, st_fx->Q_exc ); // Q15 - move16(); - - /*-----------------------------------------------------------------* - * Transform domain contribution decoding - *-----------------------------------------------------------------*/ - test(); - IF( GE_32( st_fx->core_brate, MAX_GSC_INACTIVE_BRATE ) && ( st_fx->coder_type == INACTIVE ) ) - { - transf_cdbk_dec_fx( st_fx, harm_flag_acelp, i_subfr_fx, Es_pred_fx, gain_code_fx, &gain_preQ_fx, &norm_gain_preQ_fx, code_preQ_fx, unbits ); - } - - /* update LP filtered gains for the case of frame erasures */ - lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame ); - - /*----------------------------------------------------------------------* - * Find the total excitation - *----------------------------------------------------------------------*/ - - IF( EQ_16( L_frame, L_FRAME ) ) /* Rescaling for 12.8k core */ - { - Rescale_exc( hMusicPF->dct_post_old_exc_fx, &exc_fx[i_subfr_fx], &bwe_exc_fx[i_subfr_fx * HIBND_ACB_L_FAC], hGSCDec->last_exc_dct_in_fx, - L_SUBFR, L_SUBFR * HIBND_ACB_L_FAC, gain_code_fx, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, i_subfr_fx, st_fx->coder_type ); - } - ELSE /* Rescaling for 16k core */ - { - - L_tmp_GC = L_max( gain_code_fx, L_shl( gain_preQ_fx, 16 ) ); /* Chose the maximum of gain_code or the prequantizer excitation x4 to keep some room*/ - Rescale_exc( hMusicPF->dct_post_old_exc_fx, &exc_fx[i_subfr_fx], &bwe_exc_fx[i_subfr_fx * 2], hGSCDec->last_exc_dct_in_fx, - L_SUBFR, L_SUBFR * 2, L_tmp_GC, &( st_fx->Q_exc ), st_fx->Q_subfr, exc2_fx, i_subfr_fx, st_fx->coder_type ); - } - - gain_code16 = round_fx( L_shl( gain_code_fx, st_fx->Q_exc ) ); /*Q_exc*/ - - /*-----------------------------------------------------------------* - * Add the ACELP pre-quantizer contribution - *-----------------------------------------------------------------*/ - - IF( gain_preQ_fx != 0 ) - { - IF( st_fx->element_mode == EVS_MONO ) - { - tmp1_fx = add( 15 - Q_AVQ_OUT_DEC - 2, st_fx->Q_exc ); - } - ELSE - { - tmp1_fx = add( 15 - Q_AVQ_OUT - 2, st_fx->Q_exc ); - } - FOR( i = 0; i < L_SUBFR; i++ ) - { - Word32 Ltmp1; - /* Contribution from AVQ layer */ - Ltmp1 = L_mult( gain_preQ_fx, code_preQ_fx[i] ); /* Q2 + Q6 -> Q9*/ - Ltmp1 = L_shl_sat( Ltmp1, tmp1_fx ); /* Q16 + Q_exc */ - - /* Compute exc2 */ - L_tmp = L_shl_sat( L_mult( gain_pit_fx, exc_fx[i + i_subfr_fx] ), 1 ); // Q_exc+Q14+1+1 - exc2_fx[i + i_subfr_fx] = round_fx_sat( L_add_sat( L_tmp, Ltmp1 ) ); // Q_exc - move16(); - /* gain_pit in Q14 */ - L_tmp = L_mult( gain_code16, code_fx[i] ); // Q_exc+Q9+1 - L_tmp = L_shl_sat( L_tmp, 5 ); // Q_exc+Q9+1+5 - L_tmp = L_mac_sat( L_tmp, exc_fx[i + i_subfr_fx], gain_pit_fx ); // Q_exc+Q15 +1 - L_tmp = L_shl_sat( L_tmp, 1 ); /* saturation can occur here */ - - exc_fx[i + i_subfr_fx] = round_fx_sat( L_add_sat( L_tmp, Ltmp1 ) ); // Q_exc - move16(); - } - } - ELSE - { - Acelp_dec_total_exc( exc_fx, exc2_fx, gain_code16, gain_pit_fx, i_subfr_fx, code_fx, L_SUBFR ); - } - - /*-----------------------------------------------------------------* - * Prepare TBE excitation - *-----------------------------------------------------------------*/ - - Word16 idx = 0; - move16(); - IF( i_subfr_fx != 0 ) - { - idx = idiv1616( i_subfr_fx, L_SUBFR ); - } - - prep_tbe_exc_fx( L_frame, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, - &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, - st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate ); - - - /*----------------------------------------------------------------* - * Excitation enhancements (update of total excitation signal) - *----------------------------------------------------------------*/ - - test(); - IF( GT_32( st_fx->core_brate, ACELP_32k ) || ( st_fx->coder_type == INACTIVE ) ) - { - Copy( exc_fx + i_subfr_fx, exc2_fx + i_subfr_fx, L_SUBFR ); - } - ELSE - { - enhancer_fx( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx, - norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); - } - - p_Aq_fx += ( M + 1 ); - pt_pitch_fx++; - gain_buf[idx] = gain_pit_fx; // Q14 - move16(); - } - - /* FEC fast recovery */ - - IF( do_WI_fx ) - { - /* shft_prev = L_EXC_MEM - rint_new_fx(st_fx->bfi_pitch_fx);*/ - L_tmp = L_shl( L_deposit_l( st_fx->bfi_pitch_fx ), 10 ); /*Q16*/ - rint_bfi_pitch = rint_new_fx( L_tmp ); /*Q0*/ - shft_prev = sub( L_EXC_MEM, rint_bfi_pitch ); /*Q0*/ - - p_exc = st_fx->hWIDec->old_exc2_fx + shft_prev; - p_syn = st_fx->hWIDec->old_syn2_fx + shft_prev; - move16(); - move16(); - - prev_res_nrg = L_deposit_l( 1 ); - prev_spch_nrg = L_deposit_l( 1 ); - FOR( i = 0; i < rint_bfi_pitch; i++ ) - { - prev_res_nrg = L_mac0_sat( prev_res_nrg, *p_exc, *p_exc ); /* 2*st_fx->prev_Q_exc_fr */ - prev_spch_nrg = L_mac0_sat( prev_spch_nrg, *p_syn, *p_syn ); /* 2*st_fx->prev_Q_syn_fr */ - p_exc++; - p_syn++; - } - - Copy( st_fx->mem_syn2_fx, mem_tmp_fx, M ); - - syn_12k8_fx( st_fx->L_frame, Aq_fx, exc2_fx, syn_tmp_fx, mem_tmp_fx, 1, st_fx->Q_exc, st_fx->Q_syn ); - - L_tmp = L_shl( L_deposit_l( pitch_buf_fx[NB_SUBFR16k - 1] ), 10 ); /*Q16*/ - rint_pitch = rint_new_fx( L_tmp ); /*Q0*/ - shft_curr = sub( st_fx->L_frame, rint_pitch ); /*Q0*/ - - p_exc = exc2_fx + shft_curr; - p_syn = syn_tmp_fx + shft_curr; - - curr_res_nrg = L_deposit_l( 1 ); - curr_spch_nrg = L_deposit_l( 1 ); - FOR( i = 0; i < rint_pitch; i++ ) - { - curr_res_nrg = L_mac0_sat( curr_res_nrg, *p_exc, *p_exc ); /* 2*st_fx->Q_exc */ - curr_spch_nrg = L_mac0_sat( curr_spch_nrg, *p_syn, *p_syn ); /* 2*st_fx->Q_syn */ - p_exc++; - p_syn++; - } - - /* enratio = (curr_res_nrg / prev_res_nrg); */ - IF( prev_res_nrg > 0 ) - { - expa = norm_l( prev_res_nrg ); - fraca = extract_h( L_shl( prev_res_nrg, expa ) ); /* 2*st_fx->prev_Q_exc_fr -16+expa +1*/ - expa = sub( 30, add( expa, ( shl( st_fx->prev_Q_exc_fr, 1 ) ) ) ); - - expb = norm_l( curr_res_nrg ); - fracb = round_fx_sat( L_shl_sat( curr_res_nrg, expb ) ); /* 2*st_fx->Q_exc +expb+1 -16*/ - expb = sub( 30, add( expb, shl( st_fx->Q_exc, 1 ) ) ); - - scale = shr( sub( fraca, fracb ), 15 ); - fracb = shl( fracb, scale ); // Q(15-expb)+scale - expb = sub( expb, scale ); - - enratio = div_s( fracb, fraca ); // Q(15-(expb-expa)) - exp1 = sub( expb, expa ); - Qenratio = sub( 15, exp1 ); - } - ELSE - { - enratio = 0; - move16(); - Qenratio = 0; - move16(); - } - - /* sp_enratio = curr_spch_nrg/prev_spch_nrg */ - IF( prev_spch_nrg > 0 ) - { - expa = norm_l( prev_spch_nrg ); - fraca = extract_h( L_shl( prev_spch_nrg, expa ) ); /* 2*st_fx->prev_Q_syn_fr +expa+1-16*/ - expa = sub( 30, add( expa, shl( st_fx->prev_Q_syn_fr, 1 ) ) ); - - expb = norm_l( curr_spch_nrg ); - fracb = round_fx_sat( L_shl_sat( curr_spch_nrg, expb ) ); /* 2*st_fx->Q_syn +expb-16 */ - expb = sub( 30, add( expb, shl( st_fx->Q_syn, 1 ) ) ); - - scale = shr( sub( fraca, fracb ), 15 ); - fracb = shl( fracb, scale ); // Q(15-expb) +scale - expb = sub( expb, scale ); - - sp_enratio = div_s( fracb, fraca ); // Q(15-(expb-expa)) - exp1 = sub( expb, expa ); - Qsp_enratio = sub( 15, exp1 ); - } - ELSE - { - sp_enratio = 0; - move16(); - Qsp_enratio = 0; - move16(); - } - - test(); - test(); - test(); - test(); - IF( GT_16( shl_ro( enratio, sub( 15, Qenratio ), &Overflow ), 8192 ) && /*compare with 0.25 in Q15*/ - LT_16( shl_ro( enratio, sub( 10, Qenratio ), &Overflow ), 15360 ) && /*compare with 15.0 in Q10*/ - GT_16( shl_ro( sp_enratio, sub( 15, Qsp_enratio ), &Overflow ), 4915 ) && /*compare with 0.15 in Q15*/ - LT_16( st_fx->bfi_pitch_fx, 9600 ) && /*Q6*/ - LT_16( pitch_buf_fx[NB_SUBFR16k - 1], 9600 ) ) /*Q6*/ - { - IF( NE_32( ( error = DTFS_new_fx( &PREVP ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = DTFS_new_fx( &CURRP ) ), IVAS_ERR_OK ) ) - { - return error; - } - - GetSinCosTab_fx( rint_bfi_pitch, S_fx, C_fx ); - DTFS_to_fs_fx( st_fx->hWIDec->old_exc2_fx + shft_prev, rint_bfi_pitch, PREVP, (Word16) st_fx->output_Fs, do_WI_fx, S_fx, C_fx ); - PREVP->Q = add( PREVP->Q, st_fx->prev_Q_exc_fr ); - move16(); - - GetSinCosTab_fx( rint_pitch, S_fx, C_fx ); - DTFS_to_fs_fx( exc2_fx + shft_curr, rint_pitch, CURRP, (Word16) st_fx->output_Fs, do_WI_fx, S_fx, C_fx ); - CURRP->Q = add( CURRP->Q, st_fx->Q_exc ); - move16(); - - ph_offset_fx = 0; - move16(); - IF( NE_32( ( error = WIsyn_fx( *PREVP, CURRP, dummy2, &( ph_offset_fx ), out_fx, (Word16) st_fx->L_frame, 1, S_fx, C_fx, pf_temp1, pf_temp2, pf_temp, pf_n2 ) ), IVAS_ERR_OK ) ) - { - return error; - } - - - Copy_Scale_sig( out_fx, exc2_fx, st_fx->L_frame, st_fx->Q_exc ); // Q_exc - Copy_Scale_sig( out_fx, exc_fx, st_fx->L_frame, st_fx->Q_exc ); // Q_exc - - /* update bwe_exc for SWB-TBE */ - FOR( i_subfr_fx = 0; i_subfr_fx < L_frame; i_subfr_fx += L_SUBFR ) - { - interp_code_4over2_fx( exc_fx + i_subfr_fx, bwe_exc_fx + shl( i_subfr_fx, 1 ), L_SUBFR ); - } - - free( PREVP ); - free( CURRP ); - } - } - - /* SC-VBR */ - st_fx->prev_gain_pit_dec_fx = gain_pit_fx; - move16(); /*Q14*/ - st_fx->prev_tilt_code_dec_fx = st_fx->tilt_code_fx; - move16(); /*Q15*/ - - return error; -} - -/*======================================================================*/ -/* FUNCTION : decod_gen_voic_ivas_fx() */ -/*----------------------------------------------------------------------*/ -/* PURPOSE : Decode generic (GC), voiced (VC) and AMR-WB IO frames */ -/* */ -/*----------------------------------------------------------------------*/ -/* GLOBAL INPUT ARGUMENTS : */ -/* _ (Struct) st_fx : decoder static memory */ -/* _ (Word16) L_frame : length of the frame */ - -/* _ (Word16[]) Aq_fx : LP filter coefficient Q12 */ -/* _ (Word16) Es_pred_fx : predicted scaled innov. energy Q8 */ -/* _ (Word16[]) pitch_buf_fx : floating pitch values for each subframe Q6*/ -/* _ (Word16[]) voice_factors_fx: frame error rate Q15 */ -/*----------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */ -/* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */ -/*----------------------------------------------------------------------*/ - - -/*----------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*======================================================================*/ -#endif -ivas_error decod_gen_voic_ivas_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 L_frame, /* i : length of the frame */ - const Word16 sharpFlag_fx, /* i : formant sharpening flag */ - const Word16 *Aq_fx, /* i : LP filter coefficient Q12*/ - const Word16 Es_pred_fx, /* i : predicted scaled innov. energy Q8 */ - const Word16 do_WI_fx, /* i : do interpolation after a FER */ - Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe Q6*/ - Word16 *voice_factors_fx, /* o : voicing factors Q15 */ - Word16 *exc_fx, /* i/o: adapt. excitation exc Q_exc */ - Word16 *exc2_fx, /* i/o: adapt. excitation/total exc Q_exc */ - Word16 *bwe_exc_fx, /* o : excitation for SWB TBE Q_exc */ - Word16 *unbits, /* number of unused bits */ - Word16 *gain_buf, - const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ - const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */ + Decoder_State *st_fx, /* i/o: decoder static memory */ + const Word16 L_frame, /* i : length of the frame */ + const Word16 sharpFlag_fx, /* i : formant sharpening flag */ + const Word16 *Aq_fx, /* i : LP filter coefficient Q12 */ + const Word16 Es_pred_fx, /* i : predicted scaled innov. energy Q8 */ + const Word16 do_WI_fx, /* i : do interpolation after a FER */ + Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe Q6 */ + Word16 *voice_factors_fx, /* o : voicing factors Q15 */ + Word16 *exc_fx, /* i/o: adapt. excitation exc Q_exc */ + Word16 *exc2_fx, /* i/o: adapt. excitation/total exc Q_exc */ + Word16 *bwe_exc_fx, /* o : excitation for SWB TBE Q_exc */ + Word16 *unbits, /* number of unused bits */ + Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14 */ + const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ + const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */ ) { - - - Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */ + Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */ Word16 gain_pit_fx; /* pitch gain Q14 */ Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */ Word32 norm_gain_code_fx; /* normalized gain of the algebraic excitation Q16 */ @@ -536,7 +62,7 @@ ivas_error decod_gen_voic_ivas_fx( Word16 code_fx[L_SUBFR]; /* algebraic codevector Q12 */ const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */ - Word16 *pt_pitch_fx; /* pointer to Word16 pitch Q6 */ + Word16 *pt_pitch_fx; /* pointer to Word16 pitch Q6 */ Word16 i_subfr_fx, i; /* tmp variables */ Word16 error_fx; Word16 gain_preQ_fx; /* Gain of prequantizer excitation */ @@ -633,10 +159,8 @@ ivas_error decod_gen_voic_ivas_fx( * Decode pitch lag *----------------------------------------------------------------------*/ - /**pt_pitch_fx = pit_decode_fx(st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx, - &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR);*/ - *pt_pitch_fx = pit_decode_ivas_fx( st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx, - &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); + *pt_pitch_fx = pit_decode_fx( st_fx, st_fx->core_brate, 0, L_frame, i_subfr_fx, st_fx->coder_type, &pitch_limit_flag_fx, + &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); move16(); /*Q6*/ /*--------------------------------------------------------------* @@ -677,7 +201,7 @@ ivas_error decod_gen_voic_ivas_fx( IF( LE_32( st_fx->core_brate, ACELP_8k00 ) ) { - gain_dec_lbr_ivas_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR ); + gain_dec_lbr_fx( st_fx, st_fx->coder_type, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_SUBFR ); } ELSE IF( GT_32( st_fx->core_brate, ACELP_32k ) ) { @@ -700,13 +224,11 @@ ivas_error decod_gen_voic_ivas_fx( } /* update LP filtered gains for the case of frame erasures */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame ); } ELSE -#endif { lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, L_add( norm_gain_code_fx, norm_gain_preQ_fx ), &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_frame ); } @@ -790,10 +312,6 @@ ivas_error decod_gen_voic_ivas_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ - /*prep_tbe_exc_fx(L_frame, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, - &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, - st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate);*/ - Word16 idx; idx = 0; move16(); @@ -802,10 +320,10 @@ ivas_error decod_gen_voic_ivas_fx( idx = idiv1616( i_subfr_fx, L_SUBFR ); } - prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, - &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, - st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, - st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); + prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, + &voice_factors_fx[idx], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, + st_fx->Q_exc, T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, + st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); /*----------------------------------------------------------------* @@ -819,14 +337,12 @@ ivas_error decod_gen_voic_ivas_fx( } ELSE { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { enhancer_fx( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx, norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); } ELSE -#endif { enhancer_ivas_fx2( st_fx->core_brate, 0, st_fx->coder_type, i_subfr_fx, L_frame, voice_fac_fx, st_fx->stab_fac_fx, norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); diff --git a/lib_dec/dec_pit_exc_fx.c b/lib_dec/dec_pit_exc_fx.c index fe7d2daaf..a18029cdc 100644 --- a/lib_dec/dec_pit_exc_fx.c +++ b/lib_dec/dec_pit_exc_fx.c @@ -14,13 +14,13 @@ /*--------------------------------------------------------------------------*/ /* INPUT ARGUMENTS : */ /* _ (Word16*) Aq_fx : LP filter coefficient Q12 */ -/* _ (Word16) coder_type : coding type Q0 */ +/* _ (Word16) coder_type : coding type Q0 */ /* _ (Word16) nb_subfr_fx :Number of subframe considered */ /* _ (Word16) Es_pred_fx :predicted scaled innov. energy */ /*--------------------------------------------------------------------------*/ /* OUTPUT ARGUMENTS : */ /* _ (Word16*) pitch_buf_fx : floating pitch values for each subframe Q6 */ -/* _ (Word16*) code_fx : innovation Q12 */ +/* _ (Word16*) code_fx : innovation Q12 */ /*--------------------------------------------------------------------------*/ /* INPUT/OUTPUT ARGUMENTS : */ /* Decoder_State_fx *st_fx : decoder state structure */ @@ -30,438 +30,29 @@ /* _ None */ /*==========================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES void dec_pit_exc_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 *Aq_fx, /* i : LP filter coefficient */ - const Word16 coder_type, /* i : coding type */ - const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ - Word16 *pitch_buf_fx, /* o : floating pitch values for each subframe */ - Word16 *code_fx, /* o : innovation */ - Word16 *exc_fx, /* i/o: adapt. excitation exc */ - Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */ - const Word16 nb_subfr_fx /* i : Number of subframe considered */ - , - Word16 *gain_buf /*Q14*/ -) -{ - Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */ - Word16 gain_pit_fx; /* pitch gain Q14 */ - Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */ - Word32 norm_gain_code_fx; /* normalized gain of the algebraic excitation Q16 */ - Word16 gain_inov_fx; /* Innovation gain Q12 */ - Word16 voice_fac_fx; /* voicing factor Q15 */ - Word16 L_subfr_fx, pit_idx_fx; - const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */ - Word16 *pt_pitch_fx; /* pointer to floating pitch Q6 */ - Word16 i_subfr_fx, i; /* tmp variables */ - Word32 Local_BR_fx, Pitch_BR_fx; - Word16 pitch_limit_flag, Pitch_CT_fx; - Word16 exc2_bidon[L_SUBFR]; - Word16 *pt_gain; /* Pointer to floating gain values for each subframe */ - - Word16 gain_code16, gain_pitx2; - Word32 L_tmp; - Word16 nbits; - GSC_DEC_HANDLE hGSCDec; - gain_pit_fx = 0; - move16(); - hGSCDec = st_fx->hGSCDec; - - MUSIC_POSTFILT_HANDLE hMusicPF; - hMusicPF = st_fx->hMusicPF; - - Word16 use_fcb; - Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */ - Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */ -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move16(); -#endif - - use_fcb = 0; - move16(); - test(); - test(); - IF( ( st_fx->GSC_IVAS_mode > 0 ) && ( EQ_16( st_fx->GSC_noisy_speech, 1 ) || GT_32( st_fx->core_brate, GSC_H_RATE_STG ) ) ) - { - Local_BR_fx = ACELP_8k00; - Pitch_CT_fx = GENERIC; - Pitch_BR_fx = ACELP_8k00; - move32(); - move32(); - move16(); - IF( EQ_16( st_fx->L_frame, L_FRAME16k ) ) - { - Local_BR_fx = ACELP_14k80; - move32(); - if ( st_fx->GSC_IVAS_mode > 0 ) - { - Local_BR_fx = ACELP_9k60; - move32(); - } - Pitch_BR_fx = st_fx->core_brate; - move32(); - } - } - ELSE IF( EQ_16( st_fx->GSC_noisy_speech, 1 ) ) - { - Local_BR_fx = ACELP_7k20; - move32(); - Pitch_CT_fx = GENERIC; - move16(); - Pitch_BR_fx = ACELP_7k20; - move32(); - if ( EQ_16( st_fx->L_frame, L_FRAME16k ) ) - { - Pitch_BR_fx = st_fx->core_brate; - move32(); - } - } - ELSE - { - Local_BR_fx = ACELP_7k20; - move32(); - Pitch_CT_fx = AUDIO; - move16(); - Pitch_BR_fx = st_fx->core_brate; - move32(); - IF( EQ_16( st_fx->L_frame, L_FRAME16k ) ) - { - Pitch_BR_fx = ACELP_13k20; - move32(); - Pitch_CT_fx = GENERIC; - move16(); - } - } - L_subfr_fx = mult_r( st_fx->L_frame, div_s( 1, nb_subfr_fx ) ); /* TV2Opt : this could be less complex with 2 ifs*/ - - - gain_code_fx = 0; - move16(); - pitch_limit_flag = 1; - move16(); /* always extended pitch Q range */ - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( ( GE_32( st_fx->core_brate, MIN_RATE_FCB ) || ( EQ_16( st_fx->GSC_noisy_speech, 1 ) && ( ( EQ_16( st_fx->L_frame, L_FRAME ) && GE_32( st_fx->core_brate, ACELP_13k20 ) ) || ( EQ_16( st_fx->L_frame, L_FRAME16k ) && GE_32( st_fx->core_brate, GSC_H_RATE_STG ) ) || st_fx->GSC_IVAS_mode == 0 ) ) ) && EQ_16( L_subfr_fx, L_SUBFR ) ) ) - { - use_fcb = 1; - move16(); - } - ELSE IF( ( st_fx->GSC_IVAS_mode > 0 ) && EQ_16( L_subfr_fx, 2 * L_SUBFR ) && LT_16( st_fx->GSC_IVAS_mode, 3 ) ) - { - use_fcb = 2; - st_fx->acelp_cfg.fcb_mode = 1; - move16(); - move16(); - set16_fx( st_fx->acelp_cfg.gains_mode, 6, 4 ); - set16_fx( st_fx->acelp_cfg.pitch_bits, 9, 4 ); - set16_fx( st_fx->acelp_cfg.fixed_cdk_index, 14, 5 ); - } - /*------------------------------------------------------------------* - * ACELP subframe loop - *------------------------------------------------------------------*/ - p_Aq_fx = Aq_fx; /* pointer to interpolated LPC parameters */ - pt_pitch_fx = pitch_buf_fx; /* pointer to the pitch buffer */ - pt_gain = gain_buf; /* pointer to the gain buffer */ - FOR( i_subfr_fx = 0; i_subfr_fx < st_fx->L_frame; i_subfr_fx += L_subfr_fx ) - { - /*----------------------------------------------------------------------* - * Decode pitch lag - *----------------------------------------------------------------------*/ - *pt_pitch_fx = pit_decode_fx( st_fx, Pitch_BR_fx, 0, st_fx->L_frame, i_subfr_fx, Pitch_CT_fx, &pitch_limit_flag, &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_subfr_fx ); - move16(); - - /*--------------------------------------------------------------* - * Find the adaptive codebook vector. - *--------------------------------------------------------------*/ - - pred_lt4( &exc_fx[i_subfr_fx], &exc_fx[i_subfr_fx], T0_fx, T0_frac_fx, L_subfr_fx + 1, pitch_inter4_2, L_INTERPOL2, PIT_UP_SAMP ); - - /*--------------------------------------------------------------* - * Innovation decoding - *--------------------------------------------------------------*/ - - IF( EQ_16( use_fcb, 1 ) ) - { - inov_decode_fx( st_fx, Local_BR_fx, 0, st_fx->L_frame, 1, i_subfr_fx, p_Aq_fx, st_fx->tilt_code_fx, *pt_pitch_fx, code_fx, L_subfr_fx ); - /*--------------------------------------------------------------* - * Gain decoding - * Estimate spectrum tilt and voicing - *--------------------------------------------------------------*/ - - gain_dec_mless_fx( st_fx, st_fx->L_frame, LOCAL_CT, i_subfr_fx, -1, code_fx, Es_pred_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx ); - - st_fx->tilt_code_fx = est_tilt_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, 0 ); - move16(); - } - ELSE IF( EQ_16( use_fcb, 2 ) ) /* IVAS only */ - { - inov_decode_fx( st_fx, Local_BR_fx, 0, st_fx->L_frame, 1, i_subfr_fx, p_Aq_fx, st_fx->tilt_code_fx, *pt_pitch_fx, code_fx, L_subfr_fx ); - /*--------------------------------------------------------------* - * Gain decoding - * Estimate spectrum tilt and voicing - *--------------------------------------------------------------*/ - - gain_dec_lbr_fx( st_fx, GENERIC, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_subfr_fx ); - - st_fx->tilt_code_fx = est_tilt_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, 0 ); - move16(); - } - ELSE - { - nbits = 5; - move16(); - if ( LT_32( st_fx->core_brate, MIN_RATE_FCB ) ) - { - nbits = 4; - move16(); - } - - set16_fx( code_fx, 0, L_SUBFR ); - gain_code_fx = L_deposit_l( 0 ); - st_fx->tilt_code_fx = 0; - move16(); - pit_idx_fx = (Word16) get_next_indice( st_fx, nbits ); - move16(); - - gain_pit_fx = add( 9590, dic_gp_fx[pit_idx_fx] ); - move16(); /*Q14 0.5853 in Q14 9590*/ - - if ( st_fx->BER_detect ) /* Bitstream is corrupted, use the past pitch gain */ - { - gain_pit_fx = st_fx->lp_gainp_fx; - move16(); - } - gain_code_fx = L_mult0( s_max( sub( 32767, shl_o( gain_pit_fx, 1, &Overflow ) ), 16384 ), st_fx->lp_gainc_fx ); /* Use gain pitch and past gain code as an indicator to help finding the best scaling value. gain_code_fx used a temp var*/ - } - - /*----------------------------------------------------------------------* - * Find the total excitation - *----------------------------------------------------------------------*/ - - Rescale_exc( hMusicPF->dct_post_old_exc_fx, &exc_fx[i_subfr_fx], &bwe_exc_fx[( i_subfr_fx * ( 2 * HIBND_ACB_L_FAC ) ) / 2], hGSCDec->last_exc_dct_in_fx, - L_subfr_fx, shr( imult1616( L_subfr_fx, 2 * HIBND_ACB_L_FAC ), 1 ), gain_code_fx, &( st_fx->Q_exc ), st_fx->Q_subfr, NULL, i_subfr_fx, coder_type ); - - gain_code16 = round_fx( L_shl( gain_code_fx, st_fx->Q_exc ) ); /*Q_exc*/ - - IF( use_fcb != 0 ) - { - Acelp_dec_total_exc( exc_fx, exc2_bidon - i_subfr_fx, gain_code16, gain_pit_fx, i_subfr_fx, code_fx, L_subfr_fx ); - } - ELSE - { - IF( norm_s( s_or( gain_pit_fx, 1 ) ) == 0 ) - { - FOR( i = 0; i < L_subfr_fx; i++ ) - { - L_tmp = L_shl_sat( L_mult( gain_pit_fx, exc_fx[i + i_subfr_fx] ), 1 ); /*Q16+Q_exc*/ - exc_fx[i + i_subfr_fx] = round_fx_sat( L_tmp ); /*Q_exc*/ - move16(); - } - } - ELSE - { - gain_pitx2 = shl( gain_pit_fx, 1 ); /*Q15*/ - - FOR( i = 0; i < L_subfr_fx; i++ ) - { - L_tmp = L_mult( gain_pitx2, exc_fx[i + i_subfr_fx] ); /*Q16+Q_exc*/ - exc_fx[i + i_subfr_fx] = round_fx_sat( L_tmp ); /*Q_exc*/ - move16(); - } - } - } - - IF( EQ_16( L_subfr_fx, L_FRAME16k ) ) - { - /* update gains for FEC - equivalent to lp_gain_updt() */ - st_fx->lp_gainp_fx = gain_pit_fx; - move16(); - st_fx->lp_gainc_fx = 0; - move32(); - - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - pt_pitch_fx++; - move16(); - move16(); - move16(); - move16(); - p_Aq_fx += 5 * ( M + 1 ); - } - ELSE IF( EQ_16( L_subfr_fx, L_FRAME16k / 2 ) ) - { - IF( i_subfr_fx == 0 ) - { - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - pt_pitch_fx++; - p_Aq_fx += 2 * ( M + 1 ); - move16(); - - /* update gains for FEC - equivalent to lp_gain_updt() */ - st_fx->lp_gainp_fx = extract_h( L_mult( 6554, gain_pit_fx ) ); /*Q14 (3/15 in Q15 9830)*/ - st_fx->lp_gainc_fx = 0; - move16(); - move16(); - } - ELSE - { - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - pt_pitch_fx++; - p_Aq_fx += 3 * ( M + 1 ); - move16(); - move16(); - - /* update gains for FEC - equivalent to lp_gain_updt() */ - st_fx->lp_gainp_fx = extract_h( L_mult( 26214, gain_pit_fx ) ); /*Q14 (12/15 in Q15 9830)*/ - st_fx->lp_gainc_fx = 0; - move16(); - move16(); - } - } - ELSE IF( EQ_16( L_subfr_fx, 128 ) ) /*2*L_SUBFR*/ - { - p_Aq_fx += 2 * ( M + 1 ); - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - move16(); - pt_pitch_fx++; - *pt_gain = gain_pit_fx; - move16(); - pt_gain++; - *pt_gain = *( pt_gain - 1 ); - move16(); - pt_gain++; - IF( i_subfr_fx == 0 ) - { - /* update gains for FEC - equivalent to lp_gain_updt() */ - st_fx->lp_gainp_fx = extract_h( L_mult( 9830, gain_pit_fx ) ); /*Q14 (3/10 in Q15 9830)*/ - st_fx->lp_gainc_fx = 0; - move16(); - move16(); - } - ELSE - { - /* update gains for FEC - equivalent to lp_gain_updt() */ - st_fx->lp_gainp_fx = extract_h( L_mult( 22938, gain_pit_fx ) ); /*Q14 (7/10 in Q15 22938)*/ - st_fx->lp_gainc_fx = 0; - move16(); - move16(); - } - } - ELSE IF( EQ_16( L_subfr_fx, 256 ) ) /*4*L_SUBFR*/ - { - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - move16(); - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - move16(); - pt_pitch_fx++; - *pt_pitch_fx = *( pt_pitch_fx - 1 ); - move16(); - pt_pitch_fx++; - *pt_gain = gain_pit_fx; - move16(); - pt_gain++; - *pt_gain = *( pt_gain - 1 ); - move16(); - pt_gain++; - *pt_gain = *( pt_gain - 1 ); - move16(); - pt_gain++; - *pt_gain = *( pt_gain - 1 ); - move16(); - pt_gain++; - p_Aq_fx += 4 * ( M + 1 ); - - /* update gains for FEC - equivalent to lp_gain_updt() */ - st_fx->lp_gainp_fx = gain_pit_fx; - move16(); - st_fx->lp_gainc_fx = 0; - move16(); - } - ELSE - { - p_Aq_fx += ( M + 1 ); - move16(); - pt_pitch_fx++; - move16(); - *pt_gain = gain_pit_fx; - move16(); - pt_gain++; - - lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, 0, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, st_fx->L_frame ); - } - } - - return; -} - -/*==========================================================================*/ -/* FUNCTION : void dec_pit_exc_ivas_fx() */ -/*--------------------------------------------------------------------------*/ -/* PURPOSE : Decode pitch only contribution */ -/*--------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16*) Aq_fx : LP filter coefficient Q12 */ -/* _ (Word16) coder_type : coding type Q0 */ -/* _ (Word16) nb_subfr_fx :Number of subframe considered */ -/* _ (Word16) Es_pred_fx :predicted scaled innov. energy */ -/*--------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16*) pitch_buf_fx : Word16 pitch values for each subframe Q6 */ -/* _ (Word16*) code_fx : innovation */ -/*--------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* Decoder_State_fx *st_fx : decoder state structure */ -/* _ (Word16*) exc_fx : adapt. excitation exc */ -/*--------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*==========================================================================*/ -#endif -void dec_pit_exc_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* i : LP filter coefficient */ const Word16 coder_type, /* i : coding type */ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ - Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe */ + Word16 *pitch_buf_fx, /* o : Word16 pitch values for each subframe */ Word16 *code_fx, /* o : innovation */ Word16 *exc_fx, /* i/o: adapt. excitation exc */ Word16 *bwe_exc_fx, /* o : excitation for SWB TBE */ const Word16 nb_subfr_fx, /* i : Number of subframe considered */ - Word16 *gain_buf, /*Q14*/ + Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer */ ) { - Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */ - Word16 gain_pit_fx; /* pitch gain Q14 */ - Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */ + Word16 T0_fx, T0_frac_fx, T0_min_fx, T0_max_fx; /* integer pitch variables */ + Word16 gain_pit_fx; /* pitch gain Q14 */ + Word32 gain_code_fx; /* gain/normalized gain of the algebraic excitation Q16 */ Word32 norm_gain_code_fx; /* normalized gain of the algebraic excitation Q16 */ - Word16 gain_inov_fx; /* Innovation gain Q12 */ + Word16 gain_inov_fx; /* Innovation gain Q12 */ Word16 voice_fac_fx; /* voicing factor Q15 */ Word16 L_subfr_fx, pit_idx_fx; - const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */ + const Word16 *p_Aq_fx; /* Pointer to frame LP coefficient Q12 */ Word16 *pt_pitch_fx; /* pointer to Word16 pitch Q6 */ Word16 i_subfr_fx, i; /* tmp variables */ Word32 Local_BR_fx, Pitch_BR_fx; @@ -578,13 +169,14 @@ void dec_pit_exc_ivas_fx( p_Aq_fx = Aq_fx; /* pointer to interpolated LPC parameters */ pt_pitch_fx = pitch_buf_fx; /* pointer to the pitch buffer */ pt_gain = gain_buf; /* pointer to the gain buffer */ + FOR( i_subfr_fx = 0; i_subfr_fx < st_fx->L_frame; i_subfr_fx += L_subfr_fx ) { /*----------------------------------------------------------------------* * Decode pitch lag *----------------------------------------------------------------------*/ - *pt_pitch_fx = pit_decode_ivas_fx( st_fx, Pitch_BR_fx, 0, st_fx->L_frame, i_subfr_fx, Pitch_CT_fx, &pitch_limit_flag, &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_subfr_fx, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); + *pt_pitch_fx = pit_decode_fx( st_fx, Pitch_BR_fx, 0, st_fx->L_frame, i_subfr_fx, Pitch_CT_fx, &pitch_limit_flag, &T0_fx, &T0_frac_fx, &T0_min_fx, &T0_max_fx, L_subfr_fx, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); move16(); /*--------------------------------------------------------------* @@ -621,7 +213,7 @@ void dec_pit_exc_ivas_fx( * Estimate spectrum tilt and voicing *--------------------------------------------------------------*/ - gain_dec_lbr_ivas_fx( st_fx, GENERIC, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_subfr_fx ); + gain_dec_lbr_fx( st_fx, GENERIC, i_subfr_fx, code_fx, &gain_pit_fx, &gain_code_fx, &gain_inov_fx, &norm_gain_code_fx, gc_mem, gp_mem, L_subfr_fx ); st_fx->tilt_code_fx = est_tilt_ivas_fx( exc_fx + i_subfr_fx, gain_pit_fx, code_fx, gain_code_fx, &voice_fac_fx, 0, L_subfr_fx, 0 ); move16(); diff --git a/lib_dec/dec_post_fx.c b/lib_dec/dec_post_fx.c index 281281ed6..37d088a8f 100644 --- a/lib_dec/dec_post_fx.c +++ b/lib_dec/dec_post_fx.c @@ -33,10 +33,7 @@ static void calc_st_filt_local_fx( Word16 *apond2, Word16 *apond1, Word16 *parco static void modify_pst_param_fx( const Word16 lp_noise, Word16 *g1, Word16 *g2, const Word16 coder_type, Word16 *gain_factor ); -#ifndef REMOVE_EVS_DUPLICATES static void Dec_formant_postfilt_fx( PFSTAT_HANDLE hPFstat, Word16 *signal_ptr, Word16 *coeff, Word16 *sig_out, Word16 gamma1, Word16 gamma2 ); -#endif -static void Dec_formant_postfilt_ivas_fx( PFSTAT_HANDLE hPFstat, Word16 *signal_ptr, Word16 *coeff, Word16 *sig_out, Word16 gamma1, Word16 gamma2 ); static void calc_st_filt_ivas_fx( Word16 *apond2, Word16 *apond1, Word16 *parcor0, Word16 *sig_ltp_ptr, Word16 *mem_zero, const Word16 extl ); @@ -82,7 +79,7 @@ void Init_post_filter_fx( *--------------------------------------------------------------------------*/ void nb_post_filt_fx( const Word16 L_frame, /* i : frame length */ - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ + PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *psf_lp_noise, /* i : Long term noise Q8 */ const Word16 tmp_noise, /* i : noise energy Q0 */ Word16 *Synth, /* i : 12k8 synthesis Qsyn */ @@ -257,22 +254,20 @@ static void Dec_postfilt_fx( * Main routine to perform formant post filtering *--------------------------------------------------------------------------*/ -#ifndef REMOVE_EVS_DUPLICATES void formant_post_filt_fx( - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ + PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ Word16 *synth_in, /* i : 12k8 synthesis */ - Word16 *Aq, /* i : LP filter coefficient Q12 */ + Word16 *Aq, /* i : LP filter coefficient Q12 */ Word16 *synth_out, /* i/o: input signal */ - Word16 L_frame, - Word32 lp_noise, /* (i) : background noise energy (15Q16) */ - Word32 brate, /* (i) : bit-rate */ - const Word16 off_flag /* i : off flag */ + const Word16 L_frame, /* i : frame length */ + const Word32 lp_noise, /* (i) : background noise energy (15Q16) */ + const Word32 brate, /* (i) : bit-rate */ + const Word16 off_flag /* i : off flag */ ) { Word16 i_subfr; Word16 *p_Aq; - Word16 post_G1, post_G2; // Q15 - + Word16 post_G1, post_G2; /*default parameter for noisy speech and high bit-rates*/ IF( EQ_16( L_frame, L_FRAME ) ) @@ -381,134 +376,13 @@ void formant_post_filt_fx( Dec_formant_postfilt_fx( hPFstat, &synth_in[i_subfr], p_Aq, &synth_out[i_subfr], post_G1, post_G2 ); p_Aq += ( M + 1 ); } -} -#endif -void formant_post_filt_ivas_fx( - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ - Word16 *synth_in, /* i : 12k8 synthesis */ - Word16 *Aq, /* i : LP filter coefficient Q12 */ - Word16 *synth_out, /* i/o: input signal */ - Word16 L_frame, - Word32 lp_noise, /* (i) : background noise energy (15Q16) */ - Word32 brate, /* (i) : bit-rate */ - const Word16 off_flag /* i : off flag */ -) -{ - Word16 i_subfr; - Word16 *p_Aq; - Word16 post_G1, post_G2; - - - /*default parameter for noisy speech and high bit-rates*/ - IF( EQ_16( L_frame, L_FRAME ) ) - { - post_G2 = 22938 /*0.7f Q15*/; - move16(); - IF( LT_32( lp_noise, LP_NOISE_THRESH ) ) - { - /*Clean speech*/ - IF( LT_32( brate, ACELP_13k20 ) ) - { - /*Low rates*/ - - post_G1 = 26214 /*0.8f Q15*/; - move16(); - } - ELSE IF( LT_32( brate, ACELP_24k40 ) ) - { - /*Low rates*/ - - post_G1 = 24576 /*0.75f Q15*/; - move16(); - } - ELSE - { - post_G1 = 23593 /*0.72f Q15*/; - move16(); - } - } - ELSE /*Noisy speech*/ - { - post_G1 = 22938 /*0.7f Q15*/; - move16(); - if ( LT_32( brate, ACELP_15k85 ) ) - { - /*Low rates*/ - post_G1 = 24576 /*0.75f Q15*/; - move16(); - } - } - } - ELSE - { - post_G2 = 24904 /*0.76f Q15*/; - move16(); - test(); - IF( GE_32( lp_noise, LP_NOISE_THRESH ) ) - { - post_G1 = 24904 /*0.76f Q15*/; - } - ELSE IF( EQ_32( brate, ACELP_13k20 ) ) - { - post_G1 = 26870 /*0.82f Q15*/; - move16(); - } - ELSE IF( EQ_32( brate, ACELP_16k40 ) ) - { - post_G1 = 26214 /*0.80f Q15*/; - move16(); - } - ELSE IF( EQ_32( brate, ACELP_24k40 ) || EQ_32( brate, ACELP_32k ) ) - { - post_G1 = 25559 /*0.78f Q15*/; - move16(); - } - ELSE - { - post_G1 = 24904 /*0.76f Q15*/; - move16(); - } - } - /* Switch off post-filter */ - if ( off_flag != 0 ) - { - post_G1 = post_G2; - move16(); - } - - /* Reset post filter */ - IF( hPFstat->reset != 0 ) - { - post_G1 = MAX16B; - move16(); - post_G2 = MAX16B; - move16(); - hPFstat->reset = 0; - move16(); - Copy( &synth_in[L_frame - L_SYN_MEM], hPFstat->mem_pf_in, L_SYN_MEM ); - Copy( &synth_in[L_frame - L_SYN_MEM], hPFstat->mem_stp, L_SYN_MEM ); - hPFstat->gain_prec = 16384; // 1.Q14 - move16(); - Copy( synth_in, synth_out, L_frame ); - - return; - } + return; +} - /* input memory*/ - Copy( hPFstat->mem_pf_in, synth_in - L_SYN_MEM, L_SYN_MEM ); - Copy( &synth_in[L_frame - L_SYN_MEM], hPFstat->mem_pf_in, L_SYN_MEM ); - move16(); - p_Aq = Aq; // Q12 - FOR( i_subfr = 0; i_subfr < L_frame; i_subfr += L_SUBFR ) - { - Dec_formant_postfilt_ivas_fx( hPFstat, &synth_in[i_subfr], p_Aq, &synth_out[i_subfr], post_G1, post_G2 ); - p_Aq += ( M + 1 ); - } -} /*---------------------------------------------------------------------------- - * Dec_formant_postfilt_fx + * Dec_formant_postfilt_fx() * * Post - adaptive postfilter main function * Short term postfilter : @@ -522,93 +396,14 @@ void formant_post_filt_ivas_fx( * k1 = 1st parcor calculated on {hi} * gamma3 = gamma3_minus if k1<0, gamma3_plus if k1>0 *----------------------------------------------------------------------------*/ -#ifndef REMOVE_EVS_DUPLICATES -static void Dec_formant_postfilt_fx( - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ - Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/ - Word16 *coeff, /* i : LPC coefficients for current subframe Q12 */ - Word16 *sig_out, /* o : postfiltered output */ - Word16 gamma1, /* i : short term postfilt. den. weighting factor Q15*/ - Word16 gamma2 /* i : short term postfilt. num. weighting factor Q15*/ -) -{ - /* Local variables and arrays */ - Word16 apond1[M + 1]; /* s.t. denominator coeff. Q12*/ - Word16 apond2[LONG_H_ST]; // Q12 - Word16 res2[L_SUBFR]; // Q14 - Word16 resynth[L_SUBFR + 1]; // Qy - Word16 parcor0; // Q15 - Word16 i, max; - Word16 scale_down; - - /* Compute weighted LPC coefficients */ - weight_a_fx( coeff, apond1, gamma1, M ); - weight_a_fx( coeff, apond2, gamma2, M ); - set16_fx( &apond2[M + 1], 0, LONG_H_ST - ( M + 1 ) ); - max = abs_s( signal_ptr[0] ); // Q14 - FOR( i = 1; i < L_SUBFR; i++ ) - { - max = s_max( max, abs_s( signal_ptr[i] ) ); - } - scale_down = 0; - move16(); - if ( GT_16( max, 16384 /*1.Q14*/ ) ) - { - scale_down = 1; - move16(); - } - - /* Compute A(gamma2) residual */ - IF( !scale_down ) - { - Residu3_fx( apond2, signal_ptr, res2, L_SUBFR, 1 ); - } - ELSE - { - Residu3_fx( apond2, signal_ptr, res2, L_SUBFR, 0 ); - Scale_sig( hPFstat->mem_stp, L_SYN_MEM, -1 ); - } - - /* Controls short term pst filter gain and compute parcor0 */ - calc_st_filt_local_fx( apond2, apond1, &parcor0, res2, hPFstat->mem_zero ); - - /* 1/A(gamma1) filtering, mem_stp is updated */ - resynth[0] = *( hPFstat->mem_stp + sub( L_SYN_MEM, 1 ) ); - move16(); - - E_UTIL_synthesis( 1, apond1, res2, &( resynth[1] ), L_SUBFR, hPFstat->mem_stp + L_SYN_MEM - M, 0, M ); - - IF( !scale_down ) - { - Copy( &( resynth[1] ) + L_SUBFR - L_SYN_MEM, hPFstat->mem_stp, L_SYN_MEM ); - } - ELSE - { - Copy_Scale_sig( &( resynth[1] ) + L_SUBFR - L_SYN_MEM, hPFstat->mem_stp, L_SYN_MEM, 1 ); - } - - /* Tilt filtering */ - Filt_mu_fx( resynth, sig_out, parcor0, L_SUBFR ); - IF( scale_down ) - { - Scale_sig( sig_out, L_SUBFR, 1 ); - } - - /* Gain control */ - scale_st_fx( signal_ptr, sig_out, &hPFstat->gain_prec, L_SUBFR ); - - - return; -} -#endif -static void Dec_formant_postfilt_ivas_fx( - PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ - Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/ - Word16 *coeff, /* i : LPC coefficients for current subframe Q12 */ - Word16 *sig_out, /* o : postfiltered output */ - Word16 gamma1, /* i : short term postfilt. den. weighting factor Q15*/ - Word16 gamma2 /* i : short term postfilt. num. weighting factor Q15*/ +static void Dec_formant_postfilt_fx( + PFSTAT_HANDLE hPFstat, /* i : core decoder parameters */ + Word16 *signal_ptr, /* i : input signal (pointer to current subframe Q14*/ + Word16 *coeff, /* i : LPC coefficients for current subframe Q12 */ + Word16 *sig_out, /* o : postfiltered output */ + Word16 gamma1, /* i : short term postfilt. den. weighting factor Q15*/ + Word16 gamma2 /* i : short term postfilt. num. weighting factor Q15*/ ) { /* Local variables and arrays */ diff --git a/lib_dec/dec_ppp_fx.c b/lib_dec/dec_ppp_fx.c index 4849e147a..4b3f4f554 100644 --- a/lib_dec/dec_ppp_fx.c +++ b/lib_dec/dec_ppp_fx.c @@ -6,6 +6,7 @@ #include #include "options.h" /* Compilation switches */ #include "prot_fx.h" /* Function prototypes */ + /*===================================================================*/ /* FUNCTION : void decod_ppp_fx () */ /*-------------------------------------------------------------------*/ @@ -45,20 +46,20 @@ /*-------------------------------------------------------------------*/ /* CALLED FROM : RX */ /*===================================================================*/ + ivas_error decod_ppp_fx( - Decoder_State *st_fx, /* i/o: state structure */ - const Word16 Aq_fx[], /* i : 12k8 Lp coefficient */ - Word16 *pitch_buf_fx, /* i/o: fixed pitch values for each subframe */ - Word16 *exc_fx, /* i/o: current non-enhanced excitation */ - Word16 *exc2_fx, /* i/o: current enhanced excitation */ - Word16 bfi, /* i : bad frame indicator */ - Word16 *gain_buf, + Decoder_State *st_fx, /* i/o: state structure */ + const Word16 Aq_fx[], /* i : 12k8 Lp coefficient */ + Word16 *pitch_buf_fx, /* i/o: fixed pitch values for each subframe */ + Word16 *exc_fx, /* i/o: current non-enhanced excitation */ + Word16 *exc2_fx, /* i/o: current enhanced excitation */ + Word16 bfi, /* i : bad frame indicator */ + Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/ Word16 *voice_factors, /* o : voicing factors */ Word16 *bwe_exc_fx /* o : excitation for SWB TBE */ ) { Word16 k; - Word16 LPC_de_curr_fx[M + 1], p_Aq_curr_fx[M], p_Aq_old_fx[M + 1]; Word16 excQ_ppp_fx[L_FRAME], pitch_fx[NB_SUBFR], LPC_de_old_fx[M + 1]; ivas_error error; diff --git a/lib_dec/dec_tran_fx.c b/lib_dec/dec_tran_fx.c index c5b06724a..de3a1ff3f 100644 --- a/lib_dec/dec_tran_fx.c +++ b/lib_dec/dec_tran_fx.c @@ -254,16 +254,10 @@ void decod_tran_fx( tmp_idx_2 = idiv1616( i_subfr, L_SUBFR ); } -#ifdef REMOVE_EVS_DUPLICATES - prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, - &voice_factors_fx[tmp_idx_2], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, - st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, - st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); -#else - prep_tbe_exc_fx( L_frame_fx, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, + prep_tbe_exc_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[tmp_idx_2], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, - st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate ); -#endif + st_fx->Q_exc, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, + st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); /*----------------------------------------------------------------* * Excitation enhancements (update of total excitation signal) diff --git a/lib_dec/dec_uv_fx.c b/lib_dec/dec_uv_fx.c index fcc2600a3..f1ba21979 100644 --- a/lib_dec/dec_uv_fx.c +++ b/lib_dec/dec_uv_fx.c @@ -25,96 +25,7 @@ static void gain_dec_gacelp_uv_fx( * Decode unvoiced (UC) frames *-------------------------------------------------------------------*/ -#ifndef REMOVE_EVS_DUPLICATES void decod_unvoiced_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ - const Word16 coder_type, /* Q0 i : coding type */ - Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */ - Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/ - Word16 *voice_factors_fx, /* Q15 o : voicing factors */ - Word16 *exc_fx, /* Q_X o : adapt. excitation exc */ - Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */ - Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */ - Word16 *gain_buf ) -{ - Word16 gain_pit_fx; /* Quantized pitch gain */ - Word32 gain_code_fx; /* Quantized algebraic codeebook gain */ - Word16 gain_inov_fx; /* inovation gain */ - Word32 norm_gain_code_fx; /* normalized algebraic codeebook gain */ - Word16 voice_fac_fx; /* Voicing factor */ - Word16 code_fx[L_SUBFR]; /* algebraic codevector */ - Word16 i_subfr_fx; - const Word16 *p_Aq_fx; - Word16 *pt_pitch_fx; - - gain_pit_fx = 0; - move16(); - - test(); - IF( EQ_16( st_fx->last_ppp_mode_dec, 1 ) || EQ_16( st_fx->last_nelp_mode_dec, 1 ) ) - { - /* SC_VBR - reset the decoder, to avoid memory not updated issue for this unrealistic case */ - CNG_reset_dec_fx( st_fx, pitch_buf_fx, voice_factors_fx ); - } - - p_Aq_fx = Aq_fx; - move16(); /*Q12*/ /* pointer to interpolated LPC parameters */ - pt_pitch_fx = pitch_buf_fx; - move16(); /* pointer to the pitch buffer */ - - FOR( i_subfr_fx = 0; i_subfr_fx < L_FRAME; i_subfr_fx += L_SUBFR ) - { - /*----------------------------------------------------------------* - * Unvoiced subframe processing - *----------------------------------------------------------------*/ - - gaus_dec_fx( st_fx, i_subfr_fx, code_fx, &norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, &gain_inov_fx, &st_fx->tilt_code_fx, - &voice_fac_fx, &gain_pit_fx, pt_pitch_fx, exc_fx, &gain_code_fx, exc2_fx, bwe_exc_fx, &( st_fx->Q_exc ), st_fx->Q_subfr ); - - *tmp_noise_fx = extract_h( norm_gain_code_fx ); /*Q16*/ - move16(); - - /*----------------------------------------------------------------* - * Excitation enhancements (update of total excitation signal) - *----------------------------------------------------------------*/ - - enhancer_fx( st_fx->core_brate, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx, - norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); - - Word16 tmp_idx = 0; - move16(); - IF( i_subfr_fx != 0 ) - { - tmp_idx = idiv1616( i_subfr_fx, L_SUBFR ); - } - voice_factors_fx[tmp_idx] = 0; - move16(); - - interp_code_5over2_fx( &exc_fx[i_subfr_fx], &bwe_exc_fx[( ( i_subfr_fx * 2 * HIBND_ACB_L_FAC ) >> 1 )], L_SUBFR ); - - p_Aq_fx += ( M + 1 ); - pt_pitch_fx++; - st_fx->tilt_code_dec_fx[tmp_idx] = st_fx->tilt_code_fx; - move16(); - } - - /* SC-VBR */ - st_fx->prev_gain_pit_dec_fx = gain_pit_fx; - move16(); - - set16_fx( gain_buf, 0, NB_SUBFR ); - - return; -} - -/*-------------------------------------------------------------------* - * decod_unvoiced() - * - * Decode unvoiced (UC) frames - *-------------------------------------------------------------------*/ -#endif -void decod_unvoiced_ivas_fx( Decoder_State *st_fx, /* i/o: decoder static memory */ const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ @@ -208,13 +119,11 @@ void decod_unvoiced_ivas_fx( move16(); /* update LP filtered gains for the case of frame erasures */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { lp_gain_updt_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME ); } ELSE -#endif { lp_gain_updt_ivas_fx( i_subfr_fx, gain_pit_fx, norm_gain_code_fx, &st_fx->lp_gainp_fx, &st_fx->lp_gainc_fx, L_FRAME ); } @@ -250,6 +159,7 @@ void decod_unvoiced_ivas_fx( } // Scale_sig(code_fx, L_SUBFR, 3); //Q12 } + *tmp_noise_fx = extract_h( norm_gain_code_fx ); /*Q16*/ move16(); @@ -257,14 +167,12 @@ void decod_unvoiced_ivas_fx( * Excitation enhancements (update of total excitation signal) *----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { enhancer_fx( st_fx->core_brate, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx, norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); } ELSE -#endif { enhancer_ivas_fx( MODE1, st_fx->core_brate, uc_two_stage_flag, 0, coder_type, i_subfr_fx, L_FRAME, voice_fac_fx, st_fx->stab_fac_fx, norm_gain_code_fx, gain_inov_fx, &st_fx->gc_threshold_fx, code_fx /*Q9/Q12?*/, exc2_fx, gain_pit_fx, &( st_fx->dm_fx ), st_fx->Q_exc ); @@ -276,12 +184,6 @@ void decod_unvoiced_ivas_fx( IF( i_subfr_fx != 0 ) { tmp_idx = idiv1616( i_subfr_fx, L_SUBFR ); -#ifdef REMOVE_EVS_DUPLICATES - IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) - { - tmp_idx = idiv1616( i_subfr_fx, L_SUBFR ); - } -#endif } voice_factors_fx[tmp_idx] = 0; move16(); diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index 090409b4c..fdd442bf6 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -332,11 +332,7 @@ ivas_error evs_dec_fx( IF( EQ_16( st_fx->core, ACELP_CORE ) ) { /* ACELP core decoder */ -#ifdef REMOVE_EVS_DUPLICATES - IF( ( error = acelp_core_dec_ivas_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) -#else IF( ( error = acelp_core_dec_fx( st_fx, NULL, synth_fx, NULL, bwe_exc_extended_fx, voice_factors_fx, old_syn_12k8_16k_fx, sharpFlag, pitch_buf_fx, &unbits, &sid_bw, NULL, NULL, NULL, 0, EVS_MONO, 0, 0, 1, NULL, 1 ) ) != IVAS_ERR_OK ) -#endif { return error; } @@ -957,15 +953,9 @@ ivas_error evs_dec_fx( } st_fx->lp_noise = hFdCngDec->lp_noise; /*Q9.23*/ move32(); -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - ApplyFdCng_fx( output, NULL, realBuffer, imagBuffer, st, concealWholeFrame, 0 ); -#else -#ifdef REMOVE_EVS_DUPLICATES - ApplyFdCng_ivas_fx( output_sp, 0, NULL, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); -#else - ApplyFdCng_fx( output_sp, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); -#endif -#endif + + ApplyFdCng_fx( output_sp, 0, NULL, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); + /* Generate additional comfort noise to mask potential coding artefacts */ test(); IF( EQ_16( st_fx->m_frame_type, ACTIVE_FRAME ) && st_fx->flag_cna ) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index d0fd178f2..7aaaeb161 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -555,573 +555,9 @@ void deleteFdCngDec_fx( HANDLE_FD_CNG_DEC *hFdCngDec ) error */ -#ifndef REMOVE_EVS_DUPLICATES Word16 ApplyFdCng_fx( Word16 *timeDomainInput, /* i : pointer to time domain input Q*/ Word16 Q, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - Word16 *powerSpectrum, -#endif - Word32 **cldfbBufferReal, /* i/o: real part of the CLDFB buffer cldfbBufferScale*/ - Word32 **cldfbBufferImag, /* i/o: imaginary part of the CLDFB buffer cldfbBufferScale*/ - Word16 *cldfbBufferScale, /* o : pointer to the scalefactor for real and imaginary part of the CLDFB buffer */ - Decoder_State *st, - const Word16 concealWholeFrame, /* i : binary flag indicating frame loss Q0*/ - Word16 is_music /*Q0*/ ) -{ - Word16 j, k, nBins; - Word16 s, s1, s2, num, denom; - Word32 *cngNoiseLevel; - Word16 *cngNoiseLevel_exp; - Word32 L_tmp; - Word16 L_tmp_exp; - Word16 facTab[NPART]; - Word16 facTabExp[NPART]; - Word16 tmp_loop; - Word32 L_c; - Word16 lsp_cng[M]; - HANDLE_FD_CNG_DEC hFdCngDec; - HANDLE_FD_CNG_COM hFdCngCom; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - Flag Carry = 0; - move16(); - move16(); -#endif -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - int16_t L_frame, last_L_frame; - int32_t sr_core; - - PMT( "Fix point code missing for IVAS_CODE_CNG_FIX185_PLC_FADEOUT" ) - /* limit L_frame and core fs values for MDCT-Stereo modes which can have higher core sampling than 16kHz, but use a downsampled buffer */ - L_frame = min( st->L_frame, L_FRAME16k ); - last_L_frame = min( st->last_L_frame, L_FRAME16k ); - sr_core = min( st->sr_core, INT_FS_16k ); -#endif - - hFdCngDec = st->hFdCngDec; - hFdCngCom = hFdCngDec->hFdCngCom; - - - if ( EQ_16( hFdCngCom->frame_type_previous, ACTIVE_FRAME ) ) - { - hFdCngCom->inactive_frame_counter = 0; - move16(); - } - IF( EQ_16( st->element_mode, IVAS_CPE_TD ) ) - { - hFdCngDec->flag_dtx_mode = hFdCngDec->flag_dtx_mode || st->first_CNG; - test(); - move16(); - } - cngNoiseLevel = hFdCngCom->cngNoiseLevel; /*Q31 - hFdCngCom->cngNoiseLevelExp*/ - move32(); - cngNoiseLevel_exp = &hFdCngCom->cngNoiseLevelExp; - move16(); - nBins = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); - - SWITCH( st->m_frame_type ) - { - case ACTIVE_FRAME: - - /************************** - * ACTIVE_FRAME at DECODER * - **************************/ - - hFdCngCom->inactive_frame_counter = 0; - move16(); - hFdCngCom->sid_frame_counter = 0; - move16(); - - /* set noise estimation inactive during concealment, as no update with noise generated by concealment should be performed. */ - /* set noise estimation inactive during concealment, no update with noise generated by concealment should be performed. */ - -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - if ( concealWholeFrame == 0 && - ( timeDomainInput == NULL || - ( *timeDomainInput( -FLT_MAX ) && - *( timeDomainInput + hFdCngCom->frameSize - 1 ) < FLT_MAX && - *( timeDomainInput + hFdCngCom->frameSize - 1 ) > ( -FLT_MAX ) ) ) && - ( ( ( ( st->element_mode != IVAS_CPE_TD && st->element_mode != IVAS_CPE_DFT && hFdCngDec->flag_dtx_mode ) || !st->VAD ) && - !( st->cng_type == LP_CNG && hFdCngDec->flag_dtx_mode ) && ( is_music == 0 ) ) || - ( st->element_mode == IVAS_CPE_TD ) ) && - ( !st->BER_detect ) ) -#else - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( - ( concealWholeFrame == 0 ) && - ( LT_16( *timeDomainInput, MAXVAL_WORD16 ) ) && GT_16( *timeDomainInput, MINVAL_WORD16 ) && ( LT_16( *( timeDomainInput + sub( hFdCngCom->frameSize, 1 ) ), MAXVAL_WORD16 ) ) && GT_16( *( timeDomainInput + sub( hFdCngCom->frameSize, 1 ) ), MINVAL_WORD16 ) && ( ( ( hFdCngDec->flag_dtx_mode == 0 ) && ( st->VAD != 0 ) ) == 0 ) && ( ( ( st->cng_type == LP_CNG ) && ( hFdCngDec->flag_dtx_mode != 0 ) ) == 0 ) && ( is_music == 0 ) && ( st->BER_detect == 0 ) ) -#endif - { - /* Perform noise estimation at the decoder */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); -#else - perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); -#endif - - /* Update the shaping parameters */ - test(); - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) - { - scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); - } - hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp; - move16(); - - - /* Update CNG levels */ - test(); - IF( hFdCngDec->flag_dtx_mode != 0 && EQ_16( st->cng_type, FD_CNG ) ) - { - /* This needs to be done only once per inactive phase */ - bandcombinepow( - hFdCngDec->bandNoiseShape, - hFdCngDec->bandNoiseShape_exp, - nBins, - hFdCngCom->part, - hFdCngCom->nFFTpart, - hFdCngCom->psize_inv, - hFdCngDec->partNoiseShape, - &hFdCngDec->partNoiseShape_exp ); - - - j = 0; - move16(); - s2 = -( WORD32_BITS - 1 ); - move16(); - FOR( k = 0; k < hFdCngCom->nFFTpart; k++ ) - { - assert( hFdCngDec->partNoiseShape[k] >= 0 ); - assert( hFdCngCom->sidNoiseEst[k] >= 0 ); - - /* add DELTA as it is done in FLC version, in order to avoid num > denom */ - facTab[k] = 0; - move16(); - IF( hFdCngDec->partNoiseShape[k] != 0 ) - { - s1 = norm_l( hFdCngCom->sidNoiseEst[k] ); - L_tmp = L_shl( hFdCngCom->sidNoiseEst[k], s1 ); /*Q31 - hFdCngCom->sidNoiseEstExp + s1*/ - L_tmp_exp = sub( hFdCngCom->sidNoiseEstExp, s1 ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, L_tmp_exp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp ); - L_tmp = L_shr( L_tmp, 1 ); - s = add( L_tmp_exp, 1 ); - num = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/ - - s1 = norm_l( hFdCngDec->partNoiseShape[k] ); - L_tmp = L_shl( hFdCngDec->partNoiseShape[k], s1 ); /*Q31 - hFdCngDec->partNoiseShape_exp + s1*/ - L_tmp_exp = sub( hFdCngDec->partNoiseShape_exp, s1 ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, L_tmp_exp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp ); - s = sub( s, L_tmp_exp ); - denom = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/ - - facTab[k] = div_s( num, denom ); /*Q15 - s*/ - move16(); - facTabExp[k] = s; - move16(); - } - /* Set unique exponent, if mantissa is equal to zero */ - if ( facTab[k] == 0 ) - { - facTabExp[k] = -( WORD32_BITS - 1 ); - move16(); - } - s2 = s_max( s2, facTabExp[k] ); - } - - FOR( k = 0; k < hFdCngCom->nFFTpart; k++ ) - { - s = sub( facTabExp[k], s2 ); - s = s_max( s_min( s, WORD32_BITS - 1 ), -( WORD32_BITS - 1 ) ); - FOR( ; j <= hFdCngCom->part[k]; j++ ) - { - cngNoiseLevel[j] = L_shl( Mpy_32_16_1( hFdCngDec->bandNoiseShape[j], facTab[k] ), s ); /*Q31 - hFdCngDec->bandNoiseShape_exp*/ - move32(); - } - } - - /* adapt scaling for rest of the buffer */ - IF( NE_16( s2, -( WORD32_BITS - 1 ) ) ) - { - s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) ); - FOR( ; k < hFdCngCom->npart; k++ ) - { - FOR( ; j <= hFdCngCom->part[k]; j++ ) - { - cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/ - move32(); - } - } - - *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 ); - move16(); - } - } - ELSE - { - /* This sets the new CNG levels until a SID update overwrites it */ - test(); - test(); - test(); - IF( !( EQ_16( st->element_mode, IVAS_CPE_TD ) ) || ( EQ_16( st->element_mode, IVAS_CPE_TD ) && !hFdCngDec->flag_dtx_mode && !st->VAD ) ) - { - Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, nBins ); /*Q31 - hFdCngDec->bandNoiseShape_exp*/ - *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp; - move16(); - } - } -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - if ( st->element_mode == IVAS_CPE_MDCT && timeDomainInput == NULL ) - { - st->hTcxDec->CngLevelBackgroundTrace_bfi = sqrtf( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / NORM_MDCT_FACTOR ); - } - else - { - st->hTcxDec->CngLevelBackgroundTrace_bfi = (float) sqrt( ( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / 2 * hFdCngCom->fftlen ) / L_frame ); - } -#endif - /*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/ - tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); - L_tmp = L_deposit_h( 0 ); - L_c = L_deposit_h( 0 ); - FOR( j = 0; j < tmp_loop; j++ ) - { - - Carry = 0; - move16(); - L_tmp = L_add_co( L_tmp, *( cngNoiseLevel + j ), &Carry, &Overflow ); /*Q31*/ - Overflow = 0; - move16(); - - IF( *( cngNoiseLevel + j ) < 0 ) - { - L_c = L_msuNs( L_c, 0, 0 ); /*Q-1*/ - } - IF( *( cngNoiseLevel + j ) >= 0 ) - { - L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Q-1*/ - } - } - L_tmp = norm_llQ31( L_c, L_tmp, &L_tmp_exp ); /*Q31 - L_tmp_exp*/ - L_tmp_exp = sub( add( L_tmp_exp, *cngNoiseLevel_exp ), 1 ); - - L_tmp = Mpy_32_16_1( L_tmp, hFdCngCom->fftlen ); /*Q16 - L_tmp_exp*/ - - L_tmp = Mpy_32_16_1( L_tmp, T_DIV_L_Frame[L_shl( L_mac( -28000, st->L_frame, 95 ), 1 - 15 )] ); /*Q16,exp -7*/ - L_tmp_exp = add( L_tmp_exp, -7 ); /*->Q16, L_tmp_exp */ - L_tmp_exp = add( L_tmp_exp, 31 - 16 ); /*->Q31, L_tmp_exp*/ - - st->cngTDLevel = round_fx_sat( Sqrt32( L_tmp, &L_tmp_exp ) ); /*Q15 - L_tmp_exp*/ - st->cngTDLevel_e = L_tmp_exp; - move16(); - } - ELSE IF( EQ_16( st->element_mode, IVAS_CPE_TD ) || EQ_16( st->element_mode, IVAS_CPE_DFT ) ) - { - IF( hFdCngCom->active_frame_counter > 0 ) - { - /* Perform noise estimation in active frames in the decoder for downward updates */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); -#else - perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); -#endif - } - } - test(); - test(); - L_tmp = 0; - FOR( j = hFdCngCom->startBand; j < hFdCngCom->stopFFTbin; j++ ) - { - L_tmp = L_add( L_tmp, L_shr( cngNoiseLevel[j], 16 ) ); - } - L_tmp_exp = add( *cngNoiseLevel_exp, 16 ); - test(); - test(); - IF( EQ_16( concealWholeFrame, 1 ) && EQ_16( st->nbLostCmpt, 1 ) && ( GT_32( L_shl_o( L_tmp, L_tmp_exp, &Overflow ), 21474836 ) /*0.01f Q31*/ ) ) - { - /* update isf cng estimate for concealment. Do that during concealment, in order to avoid addition clean channel complexity*/ -#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - lpc_from_spectrum( hFdCngCom, hFdCngCom->startBand, hFdCngCom->stopFFTbin, 0 ); - E_LPC_a_lsp_conversion( hFdCngCom->A_cng, lsp_cng, st->lspold_cng, M ); - Copy( lsp_cng, st->lspold_cng, M ); /*Q15*/ - - lsp2lsf_fx( lsp_cng, st->lsf_cng, M, st->sr_core ); -#else - if ( st->element_mode == IVAS_CPE_MDCT && st->core != ACELP_CORE ) - { - float scf[SNS_NPTS]; - float scf_int[FDNS_NPTS]; - float whitenend_noise_shape[L_FRAME16k]; - int16_t inc, start_idx, stop_idx; - float *noiseLevelPtr; - - - inc = ( st->core > TCX_20 ) ? 2 : 1; - start_idx = hFdCngCom->startBand / inc; - stop_idx = L_frame / inc; - noiseLevelPtr = cngNoiseLevel; - - set_zero( whitenend_noise_shape, start_idx ); - for ( j = start_idx; j < stop_idx; j++, noiseLevelPtr += inc ) - { - whitenend_noise_shape[j] = *noiseLevelPtr; - } - if ( st->core == TCX_20_CORE ) - { - st->hTonalMDCTConc->psychParams = &st->hTonalMDCTConc->psychParamsTCX20; - } - else - { - st->hTonalMDCTConc->psychParams = &st->hTonalMDCTConc->psychParamsTCX10; - } - - sns_compute_scf( whitenend_noise_shape, st->hTonalMDCTConc->psychParams, L_frame, scf ); - sns_interpolate_scalefactors( scf_int, scf, ENC ); - sns_interpolate_scalefactors( st->hTonalMDCTConc->scaleFactorsBackground_flt, scf, DEC ); - sns_shape_spectrum( whitenend_noise_shape, st->hTonalMDCTConc->psychParams, scf_int, L_frame ); - - mvr2r( whitenend_noise_shape + start_idx, cngNoiseLevel, stop_idx - start_idx ); - wmops_sub_end(); - } - else if ( st->element_mode != IVAS_CPE_MDCT ) - { - lpc_from_spectrum( hFdCngCom, hFdCngCom->startBand, hFdCngCom->stopFFTbin, 0.f ); - a2lsp_stab( hFdCngCom->A_cng, lsp_cng, st->lspold_cng ); - mvr2r( lsp_cng, st->lspold_cng, M ); - lsp2lsf( lsp_cng, st->lsf_cng, M, sr_core ); - } - -#endif - st->plcBackgroundNoiseUpdated = 1; - move16(); - } - BREAK; - - case SID_FRAME: - - hFdCngDec->flag_dtx_mode = 1; - move16(); - /* no break */ - - case ZERO_FRAME: - - test(); - IF( st != NULL && st->cng_type == LP_CNG ) - { - /* Perform noise estimation on inactive phase at the decoder */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); -#else - perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); -#endif - /* Update the shaping parameters */ - - test(); - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) - { - scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); - } - hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp; - move16(); - /* This sets the new CNG levels until a SID update overwrites it */ - Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); /* This sets the new CNG levels until a SID update overwrites it Q31 - hFdCngDec->bandNoiseShape_exp*/ - *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp; - move16(); -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - st->cngTDLevel = (float) sqrt( ( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / 2 * hFdCngCom->fftlen ) / L_frame ); -#else - /*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/ - tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); - L_tmp = L_deposit_h( 0 ); - L_c = L_deposit_h( 0 ); - FOR( j = 0; j < tmp_loop; j++ ) - { - - Carry = 0; - move16(); - L_tmp = L_add_co( L_tmp, *( cngNoiseLevel + j ), &Carry, &Overflow ); /*Q31*/ - Overflow = 0; - move16(); - - IF( *( cngNoiseLevel + j ) < 0 ) - { - L_c = L_msuNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Q-1*/ - } - IF( *( cngNoiseLevel + j ) >= 0 ) - { - L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Q-1*/ - } - } - L_tmp = norm_llQ31( L_c, L_tmp, &L_tmp_exp ); /*Q31 - L_tmp_exp*/ - L_tmp_exp = sub( add( L_tmp_exp, *cngNoiseLevel_exp ), 1 ); - - L_tmp = Mpy_32_16_1( L_tmp, hFdCngCom->fftlen ); /*Q16 - L_tmp_exp*/ - - L_tmp = Mpy_32_16_1( L_tmp, T_DIV_L_Frame[L_shl( L_mac( -28000, st->L_frame, 95 ), 1 - 15 )] ); /*Q16,exp -7*/ - L_tmp_exp = add( L_tmp_exp, -7 ); /*->Q16, L_tmp_exp */ - L_tmp_exp = add( L_tmp_exp, 31 - 16 ); /*->Q31, L_tmp_exp*/ - - st->cngTDLevel = round_fx_o( Sqrt32( L_tmp, &L_tmp_exp ), &Overflow ); /*Q15 - L_tmp_exp*/ - move16(); - st->cngTDLevel_e = L_tmp_exp; - move16(); -#endif - BREAK; - } - hFdCngCom->inactive_frame_counter = add( hFdCngCom->inactive_frame_counter, 1 ); - move16(); - - /************************************* - * SID_FRAME or ZERO_FRAME at DECODER * - *************************************/ - - /* Detect first non-active frame */ - IF( EQ_16( hFdCngCom->inactive_frame_counter, 1 ) ) - { - /* Compute the fine spectral structure of the comfort noise shape using the decoder-side noise estimates */ - bandcombinepow( - hFdCngDec->bandNoiseShape, - hFdCngDec->bandNoiseShape_exp, - nBins, - hFdCngCom->part, - hFdCngCom->nFFTpart, - hFdCngCom->psize_inv, - hFdCngDec->partNoiseShape, - &hFdCngDec->partNoiseShape_exp ); - } - - IF( EQ_16( st->m_frame_type, SID_FRAME ) ) - { - IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) ) - { - /* At initialization, interpolate the bin/band-wise levels from the partition levels */ - scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, - hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); - *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; - move16(); - } - ELSE - { - if ( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) - { - } - - /* Interpolate the CLDFB band levels from the SID (partition) levels */ - IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) ) - { - scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, - hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); - *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; - move16(); - } - - s2 = -( WORD32_BITS - 1 ); - move16(); - /* Shape the SID noise levels in each FFT bin */ - j = 0; - move16(); - FOR( k = 0; k < hFdCngCom->nFFTpart; k++ ) - { - assert( hFdCngDec->partNoiseShape[k] >= 0 ); - - /* add DELTA as it is done in FLC version, in order to avoid num > denom */ - facTab[k] = 0; - move16(); - IF( hFdCngDec->partNoiseShape[k] != 0 ) - { - s1 = norm_l( hFdCngCom->sidNoiseEst[k] ); - L_tmp = L_shl( hFdCngCom->sidNoiseEst[k], s1 ); /*Q31 - hFdCngCom->sidNoiseEstExp + s1*/ - L_tmp_exp = sub( hFdCngCom->sidNoiseEstExp, s1 ); - L_tmp = BASOP_Util_Add_Mant32Exp( hFdCngCom->sidNoiseEst[k], hFdCngCom->sidNoiseEstExp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp ); - L_tmp = L_shr( L_tmp, 1 ); - s = add( L_tmp_exp, 1 ); - num = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/ - - s1 = norm_l( hFdCngDec->partNoiseShape[k] ); - L_tmp = L_shl( hFdCngDec->partNoiseShape[k], s1 ); /*Q31 - hFdCngDec->partNoiseShape_exp + s1*/ - L_tmp_exp = sub( hFdCngDec->partNoiseShape_exp, s1 ); - L_tmp = BASOP_Util_Add_Mant32Exp( L_tmp, L_tmp_exp, DELTA_MANTISSA_W32, DELTA_EXPONENT, &L_tmp_exp ); - s = sub( s, L_tmp_exp ); - denom = extract_h( L_tmp ); /*Q15 - L_tmp_exp*/ - - facTab[k] = div_s( num, denom ); /*Q15 - s*/ - move16(); - facTabExp[k] = s; - move16(); - } - /* Set unique exponent, if mantissa is equal to zero */ - if ( facTab[k] == 0 ) - { - facTabExp[k] = -( WORD32_BITS - 1 ); - move16(); - } - s2 = s_max( s2, facTabExp[k] ); - } - - FOR( k = 0; k < hFdCngCom->nFFTpart; k++ ) - { - s = sub( facTabExp[k], s2 ); - s = s_max( s_min( s, WORD32_BITS - 1 ), -( WORD32_BITS - 1 ) ); - FOR( ; j <= hFdCngCom->part[k]; j++ ) - { - cngNoiseLevel[j] = L_shl( Mpy_32_16_1( hFdCngDec->bandNoiseShape[j], facTab[k] ), s ); /*Q31 - hFdCngDec->bandNoiseShape_exp*/ - move32(); - } - } - /* adapt scaling for rest of the buffer */ - s = sub( *cngNoiseLevel_exp, add( hFdCngDec->bandNoiseShape_exp, s2 ) ); - FOR( ; k < hFdCngCom->npart; k++ ) - { - FOR( ; j <= hFdCngCom->part[k]; j++ ) - { - cngNoiseLevel[j] = L_shl( cngNoiseLevel[j], s ); /*Q31 - hFdCngDec->bandNoiseShape_exp + s*/ - move32(); - } - } - *cngNoiseLevel_exp = add( hFdCngDec->bandNoiseShape_exp, s2 ); - move16(); - } - } - - IF( EQ_16( st->codec_mode, MODE2 ) ) - { - /* Generate comfort noise during SID or zero frames */ - generate_comfort_noise_dec_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 ); - } - - BREAK; - - default: - return -1; - } - - - return 0; -} -#endif -Word16 ApplyFdCng_ivas_fx( - Word16 *timeDomainInput, /* i : pointer to time domain input Q*/ - Word16 Q, Word32 *powerSpectrum, /*Q_power_spectrum*/ Word16 Q_power_spectrum, Word32 **cldfbBufferReal, /* i/o: real part of the CLDFB buffer cldfbBufferScale*/ @@ -1221,27 +657,22 @@ Word16 ApplyFdCng_ivas_fx( ( !st->BER_detect ) ) { /* Perform noise estimation at the decoder */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); } ELSE -#endif { perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); } /* Update the shaping parameters */ test(); -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); } - ELSE -#endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + ELSE IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, nBins, hFdCngDec->bandNoiseShape, 1 ); } @@ -1477,13 +908,11 @@ Word16 ApplyFdCng_ivas_fx( IF( hFdCngCom->active_frame_counter > 0 ) { /* Perform noise estimation in active frames in the decoder for downward updates */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); } ELSE -#endif { perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); } @@ -1544,44 +973,37 @@ Word16 ApplyFdCng_ivas_fx( IF( st != NULL && EQ_16( st->cng_type, LP_CNG ) ) { /* Perform noise estimation on inactive phase at the decoder */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); } ELSE -#endif { perform_noise_estimation_dec_ivas_fx( timeDomainInput, Q, powerSpectrum, Q_power_spectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); } /* Update the shaping parameters */ - test(); -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); } - ELSE -#endif - IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) + ELSE IF( NE_16( st->element_mode, IVAS_CPE_TD ) && NE_16( st->element_mode, IVAS_CPE_DFT ) ) { scalebands_fx( hFdCngDec->msNoiseEst, hFdCngDec->part_shaping, hFdCngDec->nFFTpart_shaping, hFdCngDec->midband_shaping, hFdCngDec->nFFTpart_shaping, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), hFdCngDec->bandNoiseShape, 1 ); } hFdCngDec->bandNoiseShape_exp = hFdCngDec->msNoiseEst_exp; move16(); + /* This sets the new CNG levels until a SID update overwrites it */ Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); /* This sets the new CNG levels until a SID update overwrites it */ /*Q31 - hFdCngDec->bandNoiseShape_exp*/ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp; move16(); } ELSE -#endif { Word16 shift1 = L_norm_arr( cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); Word16 shift2 = L_norm_arr( cngNoiseLevel + sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ), sub( FFTCLDFBLEN, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ) ); @@ -1662,16 +1084,15 @@ Word16 ApplyFdCng_ivas_fx( IF( LT_32( hFdCngCom->msFrCnt_init_counter, L_deposit_l( hFdCngCom->msFrCnt_init_thresh ) ) ) { /* At initialization, interpolate the bin/band-wise levels from the partition levels */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); } ELSE -#endif { scalebands_fx( hFdCngCom->sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 1 ); } + *cngNoiseLevel_exp = hFdCngCom->sidNoiseEstExp; move16(); } @@ -1684,13 +1105,11 @@ Word16 ApplyFdCng_ivas_fx( /* Interpolate the CLDFB band levels from the SID (partition) levels */ IF( GT_16( hFdCngCom->regularStopBand, hFdCngCom->numCoreBands ) ) { -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { scalebands( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); } ELSE -#endif { scalebands_fx( sidNoiseEst, hFdCngCom->part, hFdCngCom->npart, hFdCngCom->midband, hFdCngCom->nFFTpart, sub( hFdCngCom->stopBand, hFdCngCom->startBand ), cngNoiseLevel, 0 ); } @@ -1757,7 +1176,6 @@ Word16 ApplyFdCng_ivas_fx( } } -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { /* adapt scaling for rest of the buffer */ @@ -1774,7 +1192,6 @@ Word16 ApplyFdCng_ivas_fx( move16(); } ELSE -#endif { Word16 shift1 = L_norm_arr( cngNoiseLevel, j ); Word16 shift2 = L_norm_arr( &cngNoiseLevel[j], sub( FFTCLDFBLEN, j ) ); @@ -1863,13 +1280,11 @@ Word16 ApplyFdCng_ivas_fx( IF( EQ_16( st->codec_mode, MODE2 ) ) { /* Generate comfort noise during SID or zero frames */ -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st->element_mode, EVS_MONO ) ) { generate_comfort_noise_dec_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 ); } ELSE -#endif { generate_comfort_noise_dec_ivas_fx( cldfbBufferReal, cldfbBufferImag, cldfbBufferScale, st, &( st->Q_exc ), 2, -1 ); } diff --git a/lib_dec/gain_dec_fx.c b/lib_dec/gain_dec_fx.c index 00eca187d..db325cd80 100644 --- a/lib_dec/gain_dec_fx.c +++ b/lib_dec/gain_dec_fx.c @@ -602,7 +602,6 @@ void gain_dec_mless_fx( /* _ None */ /*==================================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES void gain_dec_lbr_fx( Decoder_State *st_fx, /* i/o: decoder state structure */ const Word16 coder_type, /* i : coding type */ @@ -653,375 +652,6 @@ void gain_dec_lbr_fx( ctype = shl( sub( coder_type, 1 ), 1 ); - /*-----------------------------------------------------------------* - * calculate prediction of gcode - * search for the best codeword - *-----------------------------------------------------------------*/ - IF( i_subfr == 0 ) - { - b_fx = b_1sfr_fx; - move16(); - n_pred = 2; - move16(); - cdbk_fx = gp_gamma_1sfr_6b_fx; - SWITCH( nBits ) - { - case 8: - { - cdbk_fx = gp_gamma_1sfr_8b_fx; /* Q14/Q9*/ - BREAK; - } - case 7: - { - cdbk_fx = gp_gamma_1sfr_7b_fx; /* Q14/Q9*/ - BREAK; - } - case 6: - { - cdbk_fx = gp_gamma_1sfr_6b_fx; /* Q14/Q9*/ - BREAK; - } - } - - /* calculate predicted gain */ - aux_fx[0] = 4096; /*Q12*/ - move16(); - aux_fx[1] = shl( ctype, 12 ); /*Q12*/ - move16(); - - /* gcode0 = (float)pow(10, dotp(b, aux, n_pred) - 0.5f * (float)log10(Ecode)); - gcode0 = (float)pow(10, dotp(b, aux, n_pred) - 0.05f * 10 * (float)log10(Ecode)); - gcode0 = (float)pow(10, 0.05(20 * dotp(b, aux, n_pred) - 10 * (float)log10(Ecode))); */ - - e_tmp = norm_l( L_tmp2 ); - f_tmp = Log2_norm_lc( L_shl( L_tmp2, e_tmp ) ); /*Q15*/ - e_tmp = sub( expg2, add( 1, e_tmp ) ); - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 12330 ); /* Q13 */ /* 10*log10(2) in Q12*/ - - L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/ - L_tmp = Mult_32_16( L_tmp, 160 ); /*Q13, 20 in Q3*/ - L_tmp = L_sub( L_tmp, L_tmp1 ); /*Q13*/ - - gcode0_fx = round_fx( L_shl( L_tmp, 11 ) ); /* Q8 */ - - - /*-----------------------------------------------------------------* - * gcode0 = pow(10.0, gcode0/20) - * = pow(2, 3.321928*gcode0/20) - * = pow(2, 0.166096*gcode0) - *-----------------------------------------------------------------*/ - - L_tmp = L_mult( gcode0_fx, 21771 ); /* *0.166096 in Q17 -> Q26 */ - L_tmp = L_shr( L_tmp, 10 ); /* From Q26 to Q16 */ - frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */ - - gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ - /* output of Pow2() will be: */ - /* 16384 < Pow2() <= 32767 */ - exp_gcode0 = sub( exp_gcode0, 14 ); - - /* retrieve the codebook index and calculate both gains */ - /*index = (Word16)get_indice( st_fx,"gain", i_subfr, ACELP_CORE);move16();*/ - index = (Word16) get_next_indice_fx( st_fx, nBits ); /*Q0*/ - move16(); - - *gain_pit_fx = cdbk_fx[index * 2]; /*Q14*/ - move16(); - - L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */ - *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /* Q10 -> Q16*/ - move16(); - - gc_mem[0] = *gain_code_fx; /*Q16*/ - move32(); - gp_mem[0] = *gain_pit_fx; /*Q14*/ - move16(); - } - ELSE IF( EQ_16( i_subfr, L_SUBFR ) || EQ_16( L_subfr, 2 * L_SUBFR ) ) - { - b_fx = b_2sfr_fx; /*Q12*/ - move16(); - n_pred = 4; - move16(); - - cdbk_fx = gp_gamma_1sfr_6b_fx; /*Q14/Q9 */ - SWITCH( nBits ) - { - case 7: - { - cdbk_fx = gp_gamma_2sfr_7b_fx; /* Q14/Q9*/ - BREAK; - } - case 6: - { - cdbk_fx = gp_gamma_2sfr_6b_fx; /* Q14/Q9*/ - BREAK; - } - } - - /* calculate predicted gain */ - aux_fx[0] = 4096; /*Q12*/ - move16(); - aux_fx[1] = shl( ctype, 12 ); /*Q12*/ - move16(); - - /*aux_fx[2] = (float)log10(gc_mem[0]); - = log2(gc_mem[0])*log10(2);*/ - e_tmp = norm_l( gc_mem[0] ); - f_tmp = Log2_norm_lc( L_shl( gc_mem[0], e_tmp ) ); /*Q15*/ - e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[0])=16*/ - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ - aux_fx[2] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */ - move16(); - - aux_fx[3] = shr( gp_mem[0], 2 ); /*Q12*/ - move16(); - - /*-----------------------------------------------------------------* - * gcode0 = pow(10.0, dotp(b, aux, n_pred) - * = pow(2, 3.321928*dotp(b, aux, n_pred) - *-----------------------------------------------------------------*/ - L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/ - L_tmp = Mult_32_16( L_tmp, 27213 ); /* *3.321928 in Q13 -> Q23 */ - L_tmp = L_shr( L_tmp, 7 ); /* From Q23 to Q16 */ - frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */ - - gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ - /* output of Pow2() will be: */ - /* 16384 < Pow2() <= 32767 */ - exp_gcode0 = sub( exp_gcode0, 14 ); - - /* retrieve the codebook index and calculate both gains */ - index = (Word16) get_next_indice_fx( st_fx, nBits ); /*Q0*/ - move16(); - - *gain_pit_fx = cdbk_fx[index * 2]; /*Q14*/ - move16(); - - L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */ - *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /*Q16*/ - move16(); - - gc_mem[1] = *gain_code_fx; /*Q16*/ - move32(); - gp_mem[1] = *gain_pit_fx; /*Q14*/ - move16(); - } - ELSE IF( EQ_16( i_subfr, 2 * L_SUBFR ) ) - { - b_fx = b_3sfr_fx; - move16(); - n_pred = 6; - move16(); - - cdbk_fx = gp_gamma_3sfr_6b_fx; /*Q14/Q9 */ - - if ( EQ_16( nBits, 7 ) ) - { - cdbk_fx = gp_gamma_3sfr_7b_fx; /*Q14*/ - // PMT("verify if gp_gamma_3sfr_7b_fx is correct") - } - - /* calculate predicted gain */ - aux_fx[0] = 4096; /*Q12*/ - move16(); - aux_fx[1] = shl( ctype, 12 ); /*Q12*/ - move16(); - - /*aux_fx[2] = (float)log10(gc_mem[0]); - = log2(gc_mem[0])*log10(2);*/ - e_tmp = norm_l( gc_mem[0] ); - f_tmp = Log2_norm_lc( L_shl( gc_mem[0], e_tmp ) ); /*Q15*/ - e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[0])=16*/ - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ - aux_fx[2] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */ - move16(); - - /*aux[3] = (float)log10(gc_mem[1]); - = log2(gc_mem[1])*log10(2);*/ - e_tmp = norm_l( gc_mem[1] ); - f_tmp = Log2_norm_lc( L_shl( gc_mem[1], e_tmp ) ); /*Q15*/ - e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[1])=16*/ - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ - aux_fx[3] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */ - move16(); - - aux_fx[4] = shr( gp_mem[0], 2 ); /*Q12*/ - move16(); - aux_fx[5] = shr( gp_mem[1], 2 ); /*Q12*/ - move16(); - - /*-----------------------------------------------------------------* - * gcode0 = pow(10.0, dotp(b, aux, n_pred) - * = pow(2, 3.321928*dotp(b, aux, n_pred) - *-----------------------------------------------------------------*/ - L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/ - L_tmp = Mult_32_16( L_tmp, 27213 ); /* *3.321928 in Q13 -> Q23 */ - L_tmp = L_shr( L_tmp, 7 ); /* From Q23 to Q16 */ - frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */ - - gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ - /* output of Pow2() will be: */ - /* 16384 < Pow2() <= 32767 */ - exp_gcode0 = sub( exp_gcode0, 14 ); - - /* retrieve the codebook index and calculate both gains */ - index = (Word16) get_next_indice_fx( st_fx, nBits ); - move16(); - - *gain_pit_fx = cdbk_fx[( index * 2 )]; /*Q14*/ - move16(); - - L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */ - *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /* Q10 -> Q16*/ - move32(); - gc_mem[2] = *gain_code_fx; /*Q16*/ - move32(); - gp_mem[2] = *gain_pit_fx; /*Q14*/ - move16(); - } - ELSE IF( EQ_16( i_subfr, 3 * L_SUBFR ) ) - { - b_fx = b_4sfr_fx; /*Q12*/ - n_pred = 8; - move16(); - - - cdbk_fx = gp_gamma_4sfr_6b_fx; /*Q14*/ -#ifdef IVAS_GAIN_MOD - IF( EQ_16( nBits, 7 ) ) - { - cdbk_fx = gp_gamma_4sfr_7b_fx; - PMT( "verify if gp_gamma_4sfr_7b_fx is correct" ) - } -#endif - - /* calculate predicted gain */ - aux_fx[0] = 4096; /*Q12*/ - move16(); - aux_fx[1] = shl( ctype, 12 ); /*Q12*/ - move16(); - - /*aux[2] = (float)log10(gc_mem[0]); - = log2(gc_mem[0])*log10(2);*/ - e_tmp = norm_l( gc_mem[0] ); - f_tmp = Log2_norm_lc( L_shl( gc_mem[0], e_tmp ) ); /*Q15*/ - e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[0])=16*/ - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ - aux_fx[2] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */ - move16(); - - /*aux[3] = (float)log10(gc_mem[1]); - = log2(gc_mem[1])*log10(2);*/ - e_tmp = norm_l( gc_mem[1] ); - f_tmp = Log2_norm_lc( L_shl( gc_mem[1], e_tmp ) ); /*Q15*/ - e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[1])=16*/ - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ - aux_fx[3] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */ - move16(); - - /*aux[4] = (float)log10(gc_mem[2]); - = log2(gc_mem[2])*log10(2);*/ - e_tmp = norm_l( gc_mem[2] ); - f_tmp = Log2_norm_lc( L_shl( gc_mem[2], e_tmp ) ); /*Q15*/ - e_tmp = sub( sub( 30, e_tmp ), 16 ); /*Q_format(gc_mem[2])=16*/ - L_tmp1 = Mpy_32_16( e_tmp, f_tmp, 9864 ); /* Q16 */ - aux_fx[4] = round_fx( L_shl( L_tmp1, 12 ) ); /* Q12 */ - move16(); - - aux_fx[5] = shr( gp_mem[0], 2 ); /*Q12*/ - move16(); - aux_fx[6] = shr( gp_mem[1], 2 ); /*Q12*/ - move16(); - aux_fx[7] = shr( gp_mem[2], 2 ); /*Q12*/ - move16(); - - /*-----------------------------------------------------------------* - * gcode0 = pow(10.0, dotp(b, aux, n_pred) - * = pow(2, 3.321928*dotp(b, aux, n_pred) - *-----------------------------------------------------------------*/ - L_tmp = Dot_product( b_fx, aux_fx, n_pred ); /*Q25*/ - L_tmp = Mult_32_16( L_tmp, 27213 ); /* *3.321928 in Q13 -> Q23 */ - L_tmp = L_shr( L_tmp, 7 ); /* From Q23 to Q16 */ - frac = L_Extract_lc( L_tmp, &exp_gcode0 ); /* Extract exponent of gcode0 */ - - gcode0_fx = extract_l( Pow2( 14, frac ) ); /* Put 14 as exponent so that */ - /* output of Pow2() will be: */ - /* 16384 < Pow2() <= 32767 */ - exp_gcode0 = sub( exp_gcode0, 14 ); - - /* retrieve the codebook index and calculate both gains */ - index = (Word16) get_next_indice_fx( st_fx, nBits ); /*Q0*/ - move16(); - *gain_pit_fx = cdbk_fx[( index * 2 )]; /*Q14*/ - move16(); - - L_tmp = L_mult( cdbk_fx[( ( index * 2 ) + 1 )], gcode0_fx ); /* Q9*Q0 -> Q10 */ - *gain_code_fx = L_shl_sat( L_tmp, add( exp_gcode0, 6 ) ); /*Q16*/ - move32(); - } - - /* *norm_gain_code = *gain_code / *gain_inov; */ - expg = sub( norm_s( *gain_inov_fx ), 1 ); - expg = s_max( expg, 0 ); - - tmp_fx = div_s( shr( 8192, expg ), *gain_inov_fx ); /*Q15*/ - *norm_gain_code_fx = L_shr( Mult_32_16( *gain_code_fx, tmp_fx ), sub( 1, expg ) ); /*Q16*/ - move32(); - - return; -} -#endif -void gain_dec_lbr_ivas_fx( - Decoder_State *st_fx, /* i/o: decoder state structure */ - const Word16 coder_type, /* i : coding type */ - const Word16 i_subfr, /* i : subframe index */ - const Word16 *code_fx, /* i : algebraic excitation Q9 */ - Word16 *gain_pit_fx, /* o : quantized pitch gain Q14*/ - Word32 *gain_code_fx, /* o : quantized codebook gain Q16*/ - Word16 *gain_inov_fx, /* o : gain of the innovation (used for normalization) Q12*/ - Word32 *norm_gain_code_fx, /* o : norm. gain of the codebook excitation Q16*/ - Word32 gc_mem[], /* i/o: gain_code from previous subframes Q16*/ - Word16 gp_mem[], /* i/o: gain_pitch from previous subframes Q14*/ - const Word16 L_subfr /* i : subfr lenght */ -) -{ - Word16 index, nBits, n_pred, ctype; - Word16 gcode0_fx, aux_fx[10]; - Word32 L_tmp, L_tmp1, L_tmp2; - Word16 expg, expg2, e_tmp, exp_gcode0, f_tmp, frac, tmp_fx; - const Word16 *b_fx, *cdbk_fx = 0; - /* Ecode = ( dotp( code, code, L_SUBFR ) + 0.01f ) / L_SUBFR; - *gain_inov = 1.0f / (float)sqrt(Ecode); */ - Word16 shift_L_subfr; - shift_L_subfr = 6; - move16(); // for *cdbk_fx - move16(); - if ( GT_16( L_subfr, L_SUBFR ) ) - { - shift_L_subfr = add( shift_L_subfr, 1 ); - } - L_tmp = Dot_product12( code_fx, code_fx, L_subfr, &expg ); /*Q31 - expg*/ - expg = sub( expg, add( 18, shift_L_subfr ) ); /* exp: -18 (code in Q9), -6 (/L_SUBFR) */ - - expg2 = expg; - move16(); - L_tmp2 = L_tmp; /* sets to 'L_tmp' in 1 clock */ - move32(); - L_tmp = Isqrt_lc( L_tmp, &expg ); /*Q31 - expg*/ - - *gain_inov_fx = extract_h( L_shl_sat( L_tmp, sub( expg, 3 ) ) ); /* gain_inov in Q12 */ - move16(); - - /*-----------------------------------------------------------------* - * select the codebook, size and number of bits - * set the gains searching range - *-----------------------------------------------------------------*/ - nBits = st_fx->acelp_cfg.gains_mode[shr( i_subfr, shift_L_subfr )]; - move16(); - - ctype = shl( sub( coder_type, 1 ), 1 ); - /*-----------------------------------------------------------------* * calculate prediction of gcode * search for the best codeword @@ -1583,24 +1213,28 @@ void lp_gain_updt_ivas_fx( } /*-------------------------------------------------* - * Gain_dec_gaus_vbr + * gain_dec_gaus_fx() * * Decode gains of purely unvoiced sounds *-------------------------------------------------*/ -Word32 gain_dec_gaus_fx( /* o : quantized codebook gain Q16 */ - Word16 index, /* i : quantization index */ - const Word16 bits, /* i : number of bits to quantize */ - const Word16 lowBound, /* i : lower bound of quantizer (dB) */ - const Word16 topBound, /* i : upper bound of quantizer (dB) */ - const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */ - Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */ + +/*! r: quantized codebook gain Q16 */ +Word32 gain_dec_gaus_fx( + Word16 index, /* i : quantization index */ + const Word16 bits, /* i : number of bits to quantize */ + const Word16 lowBound, /* i : lower bound of quantizer (dB) */ + const Word16 topBound, /* i : upper bound of quantizer (dB) */ + const Word16 inv_gain_inov, /* o : unscaled innovation gain Q12 */ + Word32 *L_norm_gain_code /* o : gain of normalized gaussian excitation Q16 */ ) { Word16 stepSize, gain, expg, frac, expi, tmp_igi; Word32 L_tmp, L_enr_q, L_gain; Word16 stepSize_Exp; + stepSize_Exp = 14; move16(); + /*------------------------------------------------------------------------------------------* * Quantize linearly the log E *------------------------------------------------------------------------------------------*/ diff --git a/lib_dec/gs_dec_fx.c b/lib_dec/gs_dec_fx.c index cf0fabc76..70639810c 100644 --- a/lib_dec/gs_dec_fx.c +++ b/lib_dec/gs_dec_fx.c @@ -23,7 +23,7 @@ /* _ (Word16[]) voice_factors_fx: frame error rate Q15 */ /*--------------------------------------------------------------------------*/ /* INPUT/OUTPUT ARGUMENTS : */ -/* Decoder_State *st_fx : decoder memory structure */ +/* Decoder_State *st_fx : decoder memory structure */ /* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */ /* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */ /*--------------------------------------------------------------------------*/ @@ -31,439 +31,17 @@ /* _ None */ /*==========================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES void decod_audio_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ - const Word16 *Aq, /* i : LP filter coefficient Q12*/ - Word16 *pitch_buf, /* o : floating pitch values for each subframe Q6*/ - Word16 *voice_factors, /* o : voicing factors Q15*/ - Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/ - Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/ - Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/ - Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/ - , - Word16 *gain_buf /*Q14*/ -) -{ - Word16 tmp_nb_bits_tot, pit_band_idx; - Word16 code[4 * L_SUBFR]; - Word16 Diff_len, nb_subfr, i; - Word16 nb_frame_flg; - Word16 Es_pred = 0; - Word16 Len, max_len; - Word16 gsc_attack_flag; - - Word16 low_pit; - Word16 last_bin; - Word16 nbits; - - Word16 exc_wo_nf[L_FRAME16k]; - GSC_DEC_HANDLE hGSCDec; - hGSCDec = st_fx->hGSCDec; - - - /*---------------------------------------------------------------* - * Initialization - *---------------------------------------------------------------*/ - move16(); // corresponding to initialization of Es_pred - Diff_len = 0; - move16(); - - /* decode GSC attack flag (used to reduce possible pre-echo) */ - gsc_attack_flag = (Word16) get_next_indice_fx( st_fx, 1 ); /* Q0 */ - move16(); - - /* decode GSC SWB speech flag */ - test(); - IF( st_fx->coder_type != INACTIVE && GE_32( st_fx->total_brate, ACELP_13k20 ) ) - { - st_fx->GSC_noisy_speech = (Word16) get_next_indice_fx( st_fx, 1 ); /* Q0 */ - move16(); - } - - /* safety check in case of bit errors */ - test(); - test(); - IF( st_fx->GSC_noisy_speech && LT_16( st_fx->bwidth, SWB ) && st_fx->GSC_IVAS_mode == 0 ) - { - st_fx->BER_detect = 1; /* Q0 */ - move16(); - st_fx->GSC_noisy_speech = 0; /* Q0 */ - move16(); - } - - /* set bit-allocation */ -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); -#else - config_acelp1( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, 0, 0, st_fx->idchan, st_fx->active_cnt, 0, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); -#endif - - /*---------------------------------------------------------------* - * Decode energy dynamics - *---------------------------------------------------------------*/ - - IF( EQ_16( st_fx->GSC_noisy_speech, 1 ) ) - { - nb_subfr = NB_SUBFR; /* Q0 */ - move16(); - hGSCDec->cor_strong_limit = 0; - move16(); - hGSCDec->noise_lev = NOISE_LEVEL_SP3; /* Q0 */ - move16(); - } - ELSE - { - IF( LE_32( st_fx->core_brate, ACELP_8k00 ) ) - { - hGSCDec->noise_lev = add( (Word16) get_next_indice_fx( st_fx, 2 ), NOISE_LEVEL_SP2 ); /* Q0 */ - move16(); - } - ELSE - { - hGSCDec->noise_lev = add( (Word16) get_next_indice_fx( st_fx, 3 ), NOISE_LEVEL_SP0 ); /* Q0 */ - move16(); - } - - /*---------------------------------------------------------------* - * Decode number of subframes - *---------------------------------------------------------------*/ - - - hGSCDec->cor_strong_limit = 1; /* Q0 */ - move16(); - nb_subfr = SWNB_SUBFR; - move16(); - - IF( GE_32( st_fx->core_brate, ACELP_9k60 ) ) - { - nbits = 1; - move16(); - nb_frame_flg = (Word16) get_next_indice_fx( st_fx, nbits ); /* Q0 */ - move16(); - - IF( s_and( nb_frame_flg, 0x1 ) == 0 ) - { - nb_subfr = 2 * SWNB_SUBFR; /* Q0 */ - move16(); - hGSCDec->cor_strong_limit = 0; - move16(); - } - } - } - - /*---------------------------------------------------------------* - * Decode the last band where the adaptive (pitch) contribution is significant - *---------------------------------------------------------------*/ - - IF( LT_32( st_fx->core_brate, CFREQ_BITRATE ) ) - { - nbits = 3; /* Q0 */ - move16(); - test(); - if ( LT_32( st_fx->core_brate, ACELP_9k60 ) && st_fx->coder_type == INACTIVE ) - { - nbits = 1; /* Q0 */ - move16(); - } - } - ELSE - { - nbits = 4; /* Q0 */ - move16(); - } - test(); - IF( LT_32( st_fx->core_brate, ACELP_9k60 ) && st_fx->coder_type != INACTIVE ) - { - pit_band_idx = 1; /* Q0 */ - move16(); - } - ELSE - { - pit_band_idx = (Word16) get_next_indice_fx( st_fx, nbits ); /* Q0 */ - move16(); - } - - IF( pit_band_idx != 0 ) - { - IF( LT_32( st_fx->core_brate, ACELP_9k60 ) ) - { - pit_band_idx = 7 + BAND1k2; /* Q0 */ - move16(); /* At low rate, if pitch model is chosen, then for to be use on extented and constant frequency range */ - } - ELSE - { - pit_band_idx = add( pit_band_idx, BAND1k2 ); /* Q0 */ - } - - /* detect bit errors in the bitstream */ - IF( GT_16( pit_band_idx, 13 ) ) /* The maximum decodable index is 10 + BAND1k2 (3) = 13 */ - { - pit_band_idx = 13; /* Q0 */ - move16(); - st_fx->BER_detect = 1; /* Q0 */ - move16(); - } - Diff_len = mfreq_loc_div_25[pit_band_idx]; /* Q0 */ - move16(); - } - hGSCDec->Last_GSC_pit_band_idx = pit_band_idx; /* Q0 */ - move16(); - - - /*--------------------------------------------------------------------------------------* - * Decode adaptive (pitch) excitation contribution - * Reset unvaluable part of the adaptive (pitch) excitation contribution - *--------------------------------------------------------------------------------------*/ - IF( GT_16( pit_band_idx, BAND1k2 ) ) - { - /*---------------------------------------------------------------* - * Decode adaptive (pitch) excitation contribution - *---------------------------------------------------------------*/ - test(); - IF( EQ_16( st_fx->GSC_noisy_speech, 1 ) && EQ_16( nb_subfr, NB_SUBFR ) ) - { - Word16 indice; - nbits = Es_pred_bits_tbl[BIT_ALLOC_IDX_fx( st_fx->core_brate, GENERIC, -1, -1 )]; /* Q0 */ - move16(); - if ( st_fx->element_mode > EVS_MONO ) - { - nbits = 5; - move16(); - } - - indice = get_next_indice_fx( st_fx, nbits ); /* Q0 */ - - Es_pred_dec_fx( &Es_pred, indice, nbits, 0 ); - } - - dec_pit_exc_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf ); - - IF( LT_32( st_fx->core_brate, ACELP_9k60 ) ) - { - minimum_fx( pitch_buf, shr( st_fx->L_frame, 6 ), &low_pit ); - low_pit = shr( low_pit, 6 ); /*Q6 -> Q0 */ - - IF( LT_16( low_pit, 64 ) ) - { - pit_band_idx = 9 + BAND1k2; /* Q0 */ - move16(); - if ( st_fx->bwidth == NB ) - { - pit_band_idx = 7 + BAND1k2; /* Q0 */ - move16(); - } - } - ELSE IF( LT_16( low_pit, 128 ) ) - { - pit_band_idx = 5 + BAND1k2; /* Q0 */ - move16(); - } - ELSE - { - pit_band_idx = 3 + BAND1k2; /* Q0 */ - move16(); - } - - Diff_len = mfreq_loc_div_25[pit_band_idx]; /* Q0 */ - move16(); - hGSCDec->Last_GSC_pit_band_idx = pit_band_idx; /* Q0 */ - move16(); - } - - /*---------------------------------------------------------------* - * DCT transform - *---------------------------------------------------------------*/ - edct_16fx( exc, dct_epit, st_fx->L_frame, 7, st_fx->element_mode ); - - /*---------------------------------------------------------------* - * Reset unvaluable part of the adaptive (pitch) excitation contribution - *---------------------------------------------------------------*/ - - max_len = sub( st_fx->L_frame, Diff_len ); /* Q0 */ - - if ( st_fx->bwidth == NB ) - { - max_len = sub( 160, Diff_len ); /* Q0 */ - } - - Len = 80; - move16(); - if ( LT_16( max_len, 80 ) ) - { - Len = max_len; /* Q0 */ - move16(); - } - - test(); - IF( EQ_32( st_fx->core_brate, ACELP_8k00 ) && NE_16( st_fx->bwidth, NB ) ) - { - FOR( i = 0; i < max_len; i++ ) - { - dct_epit[i + Diff_len] = 0; - move16(); - } - } - ELSE - { - FOR( i = 0; i < Len; i++ ) - { - dct_epit[i + Diff_len] = mult_r( dct_epit[i + Diff_len], sm_table_fx[i] ); /* Qx */ - move16(); - } - - FOR( ; i < max_len; i++ ) - { - dct_epit[i + Diff_len] = 0; - move16(); - } - } - // PMT("in the rare case of 4 subfr, bfi_pitch_fx might be wrong") - st_fx->bfi_pitch_fx = mean_fx( pitch_buf, nb_subfr ); /* Q6 */ - move16(); - st_fx->bfi_pitch_frame = st_fx->L_frame; /* Q0 */ - move16(); - - Diff_len = add( Diff_len, 1 ); /* Q0 */ - st_fx->bpf_off = 0; - move16(); - } - ELSE - { - /* No adaptive (pitch) excitation contribution */ - st_fx->bpf_off = 1; /* Q0 */ - move16(); - set16_fx( dct_epit, 0, st_fx->L_frame ); - - IF( EQ_16( st_fx->L_frame, L_FRAME16k ) ) - { - set16_fx( pitch_buf, L_SUBFR16k * 64, NB_SUBFR16k ); - } - ELSE - { - set16_fx( pitch_buf, L_SUBFR * 64, NB_SUBFR ); - } - - set16_fx( gain_buf, 0, NB_SUBFR16k ); - - st_fx->bfi_pitch_fx = L_SUBFR * 64; - move16(); - st_fx->bfi_pitch_frame = st_fx->L_frame; /* Q0 */ - move16(); - st_fx->lp_gainp_fx = 0; - move16(); - st_fx->lp_gainc_fx = 0; - move16(); - st_fx->tilt_code_fx = 0; - move16(); - pit_band_idx = 0; - move16(); - Diff_len = 0; - move16(); - } - - /*--------------------------------------------------------------------------------------* - * GSC decoder - *--------------------------------------------------------------------------------------*/ - - /* find the current total number of bits used */ - - tmp_nb_bits_tot = st_fx->next_bit_pos; /* Q0 */ - move16(); - - if ( st_fx->extl_brate > 0 ) - { - /* subtract 1 bit for TBE/BWE BWE flag (bit counted in extl_brate) */ - tmp_nb_bits_tot = sub( tmp_nb_bits_tot, 1 ); /* Q0 */ - } - - test(); - if ( st_fx->coder_type == INACTIVE && LE_32( st_fx->core_brate, ACELP_9k60 ) ) - { - tmp_nb_bits_tot = add( tmp_nb_bits_tot, 5 ); /* Q0 */ - } - - gsc_dec_fx( st_fx, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st_fx->coder_type, &last_bin, lsf_new, exc_wo_nf, st_fx->Q_exc ); - /*--------------------------------------------------------------------------------------* - * iDCT transform - *--------------------------------------------------------------------------------------*/ - - edct_16fx( dct_epit, exc, st_fx->L_frame, 7, st_fx->element_mode ); - edct_16fx( exc_wo_nf, exc_wo_nf, st_fx->L_frame, 7, st_fx->element_mode ); - /*----------------------------------------------------------------------* - * Remove potential pre-echo in case an onset has been detected - *----------------------------------------------------------------------*/ - - pre_echo_att_fx( &hGSCDec->Last_frame_ener_fx, exc, gsc_attack_flag, st_fx->Q_exc, st_fx->last_coder_type, st_fx->L_frame ); - - /*--------------------------------------------------------------------------------------* - * Update BWE excitation - *--------------------------------------------------------------------------------------*/ - - IF( st_fx->hBWE_TD != NULL ) - { - set16_fx( voice_factors, 0, NB_SUBFR16k ); - IF( EQ_16( st_fx->L_frame, L_FRAME16k ) ) - { - interp_code_4over2_fx( exc, bwe_exc, st_fx->L_frame ); - } - ELSE - { - interp_code_5over2_fx( exc, bwe_exc, L_FRAME ); - } - } - /*--------------------------------------------------------------------------------------* - * Updates - *--------------------------------------------------------------------------------------*/ - - Copy( exc, exc2, st_fx->L_frame ); /* Q_exc */ - Copy( exc_wo_nf, exc, st_fx->L_frame ); /* Q_exc */ - - /*--------------------------------------------------------------------------------------* - * Channel aware mode parameters - *--------------------------------------------------------------------------------------*/ - - set16_fx( st_fx->tilt_code_dec_fx, 0, NB_SUBFR16k ); - - return; -} - -/*=========================================================================*/ -/* FUNCTION : void decod_audio_ivas_fx(); */ -/*-------------------------------------------------------------------------*/ -/* PURPOSE : Decode audio (AC) frames */ -/*-------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16[]) Aq : LP filter coefficient Q12 */ -/* _ (Word16) coder_type : coding type Q0 */ -/* _(Word16) Q_exc :Q format of excitation */ -/*-------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16[]) pitch_buf_fx : Word16 pitch values for each subframe Q6*/ -/* _ (Word16[]) voice_factors_fx: frame error rate Q15 */ -/*--------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* Decoder_State *st_fx : decoder memory structure */ -/* _ (Word16[]) exc_fx : adapt. excitation exc (Q_exc) */ -/* _ (Word16[]) exc2_fx : adapt. excitation/total exc (Q_exc) */ -/*--------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*==========================================================================*/ -#endif -void decod_audio_ivas_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ - const Word16 *Aq, /* i : LP filter coefficient Q12*/ - Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/ - Word16 *voice_factors, /* o : voicing factors Q15*/ - Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/ - Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/ - Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/ - Word16 *lsf_new /* i : ISFs at the end of the frame Qx*/ - , - Word16 *gain_buf, /*Q14*/ + Decoder_State *st_fx, /* i/o: decoder static memory */ + Word16 dct_epit[], /* o : GSC excitation in DCT domain Qx*/ + const Word16 *Aq, /* i : LP filter coefficient Q12*/ + Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/ + Word16 *voice_factors, /* o : voicing factors Q15*/ + Word16 *exc, /* i/o: adapt. excitation exc Q_exc*/ + Word16 *exc2, /* i/o: adapt. excitation/total exc Q_exc*/ + Word16 *bwe_exc, /* o : excitation for SWB TBE Q_exc*/ + Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ + Word16 *gain_buf, /* o : Word16 pitch gain for each subframe Q14*/ const Word16 tdm_lp_reuse_flag, /* i : LPC reuse flag Q0*/ const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/ const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag Q0*/ @@ -525,7 +103,7 @@ void decod_audio_ivas_fx( } /* set bit-allocation */ - config_acelp1_IVAS( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); + config_acelp1_fx( DEC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl_orig, st_fx->extl_brate_orig, st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), st_fx->next_bit_pos, st_fx->coder_type, st_fx->inactive_coder_type_flag, -1, 1, &nbits, NULL, st_fx->element_mode, &nbits /*dummy*/, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_cnt, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); /*---------------------------------------------------------------* * Decode energy dynamics @@ -735,7 +313,7 @@ void decod_audio_ivas_fx( Es_pred_dec_fx( &Es_pred, indice, nbits, 0 ); } - dec_pit_exc_ivas_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); + dec_pit_exc_fx( st_fx, Aq, st_fx->coder_type, Es_pred, pitch_buf, code, exc, bwe_exc, nb_subfr, gain_buf, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); IF( LT_32( st_fx->core_brate, ACELP_9k60 ) ) { @@ -894,7 +472,7 @@ void decod_audio_ivas_fx( Word16 Q_exc_old = st_fx->Q_exc; move16(); - gsc_dec_ivas_fx( st_fx, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st_fx->coder_type, &last_bin, lsf_new, exc_wo_nf, &st_fx->Q_exc ); + gsc_dec_fx( st_fx, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st_fx->coder_type, &last_bin, lsf_new, exc_wo_nf, &st_fx->Q_exc ); IF( NE_16( Q_exc_old, st_fx->Q_exc ) ) { @@ -976,250 +554,17 @@ void decod_audio_ivas_fx( /* _None */ /*==========================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES void gsc_dec_fx( - Decoder_State *st_fx, /* i/o: State structure */ - Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ - const Word16 pit_band_idx, /* i : bin position of the cut-off frequency Q0*/ - const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/ - const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/ - const Word16 nb_subfr, /* i : Number of subframe considered Q0*/ - const Word16 coder_type, /* i : coding type Q0*/ - Word16 *last_bin, /* i : last bin of bit allocation Q0*/ - const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ - Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/ - Word16 Q_exc ) -{ - Word16 i, j, bit, nb_subbands, pvq_len; - Word16 bitallocation_band[MBANDS_GN_BITALLOC16k]; - Word16 bitallocation_exc[2]; - Word16 Ener_per_bd_iQ[MBANDS_GN_BITALLOC16k]; - Word16 max_ener_band[MBANDS_GN_BITALLOC16k]; - Word16 exc_diffQ[L_FRAME16k]; - Word16 bits_per_bands[MBANDS_GN_BITALLOC16k]; - Word16 concat_out[L_FRAME16k]; - Word16 inpulses_fx[NB_SFM]; - Word16 imaxpulse_fx[NB_SFM]; - Word16 mean_gain; - Word16 Mbands_gn = 16; - Word16 Qexc_diffQ = Q_PVQ_OUT; - Word32 L_tmp; - Word16 Q_tmp; - Word16 seed_init; - GSC_DEC_HANDLE hGSCDec; - hGSCDec = st_fx->hGSCDec; - move16(); - move16(); - - move16(); // for Mbands_gn - move16(); // for Qexc_diffQ - set16_fx( inpulses_fx, 0, NB_SFM ); - set16_fx( imaxpulse_fx, 0, NB_SFM ); - - /*--------------------------------------------------------------------------------------* - * Initialization - *--------------------------------------------------------------------------------------*/ - bit = bits_used; - move16(); - - set16_fx( exc_diffQ, 0, st_fx->L_frame ); - - /*--------------------------------------------------------------------------------------* - * Gain decoding - *--------------------------------------------------------------------------------------*/ - - test(); - IF( st_fx->bfi || st_fx->BER_detect ) - { - /* copy old gain */ - Copy( hGSCDec->old_y_gain_fx, Ener_per_bd_iQ, Mbands_gn ); /* Q_old_gain */ - mean_gain = mult_r( st_fx->lp_gainc_fx, 3277 ); /*Q3*/ - FOR( i = 0; i < Mbands_gn; i++ ) - { - Ener_per_bd_iQ[i] = add( Ener_per_bd_iQ[i], shl( mean_gain, 9 ) ); /*Q12*/ - move16(); - } - - st_fx->lp_gainc_fx = mult_r( st_fx->lp_gainc_fx, 32112 ); /*Q3*/ - move16(); - } - ELSE - { - mean_gain = gsc_gaindec_fx( st_fx, Ener_per_bd_iQ, st_fx->core_brate, hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q12 */ - - st_fx->lp_gainc_fx = mult_r( 640, mean_gain ); /*10 in Q6 x Q12 -> lp_gainc in Q3 */ - move16(); - } - - *last_bin = 0; - move16(); - test(); - IF( EQ_32( st_fx->core_brate, ACELP_8k00 ) && st_fx->bwidth != NB ) - { - bitallocation_exc[0] = 0; - move16(); - bitallocation_exc[1] = 0; - move16(); - } - - set16_fx( bitallocation_band, 0, MBANDS_GN ); - - test(); - IF( ( EQ_16( st_fx->bfi, 1 ) ) || st_fx->BER_detect ) - { - /*--------------------------------------------------------------------------------------* - * Copy old spectrum - * reduce spectral dynamic - * save spectrum - *--------------------------------------------------------------------------------------*/ - - test(); - IF( EQ_16( st_fx->last_good, INACTIVE_CLAS ) || EQ_16( st_fx->Last_GSC_noisy_speech_flag, 1 ) ) - { - FOR( i = 0; i < st_fx->L_frame; i++ ) - { - L_tmp = L_shr( L_mult( Random( &hGSCDec->seed_tcx ), 26214 ), 5 ); /*Q10*/ - L_tmp = L_mac( L_tmp, hGSCDec->Last_GSC_spectrum_fx[i], 6554 ); /* Q10 */ - hGSCDec->Last_GSC_spectrum_fx[i] = round_fx( L_tmp ); /*Q10*/ - move16(); - } - } - - Copy( hGSCDec->Last_GSC_spectrum_fx, exc_diffQ, st_fx->L_frame ); /* Q10 */ - - FOR( i = 0; i < st_fx->L_frame; i++ ) - { - hGSCDec->Last_GSC_spectrum_fx[i] = mult_r( hGSCDec->Last_GSC_spectrum_fx[i], 24576 ); /*Q10*/ - move16(); - } - } - ELSE - { - /*--------------------------------------------------------------------------------------* - * PVQ decoder - *--------------------------------------------------------------------------------------*/ - - bands_and_bit_alloc_fx( hGSCDec->cor_strong_limit, hGSCDec->noise_lev, st_fx->core_brate, Diff_len, bit, &bit, Ener_per_bd_iQ, - max_ener_band, bits_per_bands, &nb_subbands, NULL, NULL, &pvq_len, coder_type, st_fx->bwidth, st_fx->GSC_noisy_speech, - st_fx->L_frame, st_fx->element_mode, st_fx->GSC_IVAS_mode ); - - { - pvq_core_dec_fx( st_fx, gsc_sfm_start, gsc_sfm_end, gsc_sfm_size, concat_out, &Q_tmp, bit, nb_subbands, bits_per_bands, NULL, inpulses_fx, imaxpulse_fx, ACELP_CORE ); - Scale_sig( concat_out, gsc_sfm_end[nb_subbands - 1], sub( Q_PVQ_OUT, Q_tmp ) ); /* Q_PVQ_OUT */ - } - seed_init = 0; - move16(); - - /* Reorder Q bands */ - FOR( j = 0; j < nb_subbands; j++ ) - { - Copy( concat_out + shl( j, 4 ), exc_diffQ + shl( max_ener_band[j], 4 ), 16 ); /* Q_PVQ_OUT */ - - *last_bin = s_max( *last_bin, max_ener_band[j] ); /* Q0 */ - move16(); - - bitallocation_band[max_ener_band[j]] = 1; /* Q0 */ - move16(); - - seed_init = add( seed_init, inpulses_fx[j] ); /* Q0 */ - } - test(); - IF( NE_16( st_fx->last_coder_type, AUDIO ) /* First audio frame */ - && NE_16( st_fx->last_coder_type, UNVOICED ) ) /* last_coder_type == INACTIVE is overwritten in update_dec to UNVOICED */ - { - FOR( j = 0; j < nb_subbands * 16; j++ ) - { - IF( concat_out[j] > 0 ) - { - seed_init = extract_l( L_shl( seed_init, 3 ) ); /* Q0 */ - } - if ( concat_out[j] < 0 ) - { - seed_init = add( seed_init, 3 ); /* Q0 */ - move16(); - } - } - - hGSCDec->seed_tcx = seed_init; /* Q0 */ - move16(); - } - test(); - IF( EQ_32( st_fx->core_brate, ACELP_8k00 ) && st_fx->bwidth != NB ) - { - if ( exc_diffQ[L_FRAME8k - 2] != 0 ) - { - bitallocation_exc[0] = 1; /* Q0 */ - move16(); - } - - if ( exc_diffQ[L_FRAME8k - 1] != 0 ) - { - bitallocation_exc[1] = 1; /* Q0 */ - move16(); - } - } - - Copy( exc_diffQ, hGSCDec->Last_GSC_spectrum_fx, st_fx->L_frame ); /* Q_PVQ_OUT */ - - /*--------------------------------------------------------------------------------------* - * Skip adaptive (pitch) contribution frequency band (no noise added over the time contribution) - * Find x pulses between 1.6-3.2kHz to code in the spectrum of the residual signal - * Gain is based on the inter-correlation gain between the pulses found and residual signal - *--------------------------------------------------------------------------------------*/ - - freq_dnw_scaling_fx( hGSCDec->cor_strong_limit, st_fx->coder_type, hGSCDec->noise_lev, st_fx->core_brate, exc_diffQ, Qexc_diffQ, st_fx->L_frame ); - } - - /*--------------------------------------------------------------------------------------* - * Estimate noise level - *--------------------------------------------------------------------------------------*/ - - highband_exc_dct_in_fx( st_fx->core_brate, mfreq_bindiv_loc, *last_bin, Diff_len, hGSCDec->noise_lev, pit_band_idx, exc_diffQ, - &hGSCDec->seed_tcx, Ener_per_bd_iQ, nb_subfr, exc_dct_in, st_fx->last_coder_type, bitallocation_band, lsf_new, - hGSCDec->last_exc_dct_in_fx, &hGSCDec->last_ener_fx, hGSCDec->last_bitallocation_band, bitallocation_exc, st_fx->bfi, coder_type, - st_fx->bwidth, exc_wo_nf, Qexc_diffQ, Q_exc, st_fx->GSC_noisy_speech, hGSCDec->lt_ener_per_band_fx, st_fx->L_frame, st_fx->element_mode, st_fx->GSC_IVAS_mode ); - - exc_dct_in[0] = 0; - move16(); - - return; -} - -/*==========================================================================*/ -/* FUNCTION : void gsc_dec_ivas_fx () */ -/*--------------------------------------------------------------------------*/ -/* PURPOSE : Generic audio signal decoder */ -/*--------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word16) pit_band_idx : bin position of the cut-off frequency Q0 */ -/* _ (Word16) Diff_len : Lenght of the difference signal Q0 */ -/* _ (Word16) coder_type : coding type Q0 */ -/* _ (Word16) bits_used : Number of bit used before frequency Q Q0 */ -/* _ (Word16) nb_subfr : Number of subframe considered Q0 */ -/* _ (Word16) Qexc : Q format of exc_dct_in */ -/*--------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ None */ -/*--------------------------------------------------------------------------*/ -/* INPUT/OUTPUT ARGUMENTS : */ -/* Decoder_State *st_fx:Decoder State Structure */ -/* _ (Word16[]) exc_dct_in : dctof pitch-only excitation / total excitation Qexc*/ -/*--------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _None */ -/*==========================================================================*/ -#endif -void gsc_dec_ivas_fx( - Decoder_State *st_fx, /* i/o: State structure */ - Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ + Decoder_State *st_fx, /* i/o: State structure */ + Word16 exc_dct_in[], /* i/o: dct of pitch-only excitation / total excitation Q_exc*/ const Word16 pit_band_idx, /* i : bin position of the cut-off frequency ` Q0*/ const Word16 Diff_len, /* i : Lenght of the difference signal (before pure spectral) Q0*/ const Word16 bits_used, /* i : Number of bit used before frequency Q Q0*/ const Word16 nb_subfr, /* i : Number of subframe considered Q0*/ const Word16 coder_type, /* i : coding type Q0*/ Word16 *last_bin, /* i : last bin of bit allocation Q0*/ - const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ - Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/ + const Word16 *lsf_new, /* i : ISFs at the end of the frame Qx*/ + Word16 *exc_wo_nf, /* o : excitation (in f domain) without noisefill Q_exc*/ Word16 *Q_exc ) { Word16 i, j, bit, nb_subbands, pvq_len; @@ -1310,13 +655,11 @@ void gsc_dec_ivas_fx( i--; } -#ifdef REMOVE_EVS_DUPLICATES IF( EQ_16( st_fx->element_mode, EVS_MONO ) ) { mean_gain = gsc_gaindec_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */ } ELSE -#endif { mean_gain = gsc_gaindec_ivas_fx( st_fx, Ener_per_bd_iQ, brate_intermed_tbl[i], hGSCDec->old_y_gain_fx, coder_type, st_fx->bwidth ); /* Q3 */ } diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index 03f0e4b40..cfbc1581a 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -520,7 +520,7 @@ ivas_error ivas_core_dec_fx( Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, add( M, 1 ), sub( norm_s( sub( st->hFdCngDec->hFdCngCom->A_cng[0], 1 ) ), 3 ) ); // Qx } - IF( NE_32( ( error = acelp_core_dec_ivas_fx( st, output_16_fx[n], synth_16_fx[n], save_hb_synth_16_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], old_syn_12k8_16k_fx_16, sharpFlag[n], pitch_buf_fx[n], &unbits[n], &sid_bw[n], hStereoTD, tdm_lspQ_PCh_fx, tdm_lsfQ_PCh_fx, use_cldfb_for_dft, last_element_mode, last_element_brate, flag_sec_CNA, nchan_out, hStereoCng, read_sid_info ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = acelp_core_dec_fx( st, output_16_fx[n], synth_16_fx[n], save_hb_synth_16_fx, bwe_exc_extended_fx[n], voice_factors_fx[n], old_syn_12k8_16k_fx_16, sharpFlag[n], pitch_buf_fx[n], &unbits[n], &sid_bw[n], hStereoTD, tdm_lspQ_PCh_fx, tdm_lsfQ_PCh_fx, use_cldfb_for_dft, last_element_mode, last_element_brate, flag_sec_CNA, nchan_out, hStereoCng, read_sid_info ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 10b8059b9..9c319489e 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2186,7 +2186,7 @@ void ivas_dirac_dec_render_sf_fx( move16(); - FOR( Word16 i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) { @@ -2195,7 +2195,7 @@ void ivas_dirac_dec_render_sf_fx( } } - FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) { FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) { diff --git a/lib_dec/ivas_stereo_mdct_core_dec_fx.c b/lib_dec/ivas_stereo_mdct_core_dec_fx.c index 890e5fc9e..89cb92a4d 100644 --- a/lib_dec/ivas_stereo_mdct_core_dec_fx.c +++ b/lib_dec/ivas_stereo_mdct_core_dec_fx.c @@ -1097,8 +1097,8 @@ static void run_min_stats_fx( { arr_tmp = power_spec; } - ApplyFdCng_ivas_fx( NULL, 0, arr_tmp, power_spec_q, NULL, NULL, NULL, st, st->bfi, 0 ); - /*=================================================*/ + + ApplyFdCng_fx( NULL, 0, arr_tmp, power_spec_q, NULL, NULL, NULL, st, st->bfi, 0 ); } /* restore VAD (see above) */ diff --git a/lib_dec/ivas_tcx_core_dec_fx.c b/lib_dec/ivas_tcx_core_dec_fx.c index aa5a379e8..0be01f7b8 100644 --- a/lib_dec/ivas_tcx_core_dec_fx.c +++ b/lib_dec/ivas_tcx_core_dec_fx.c @@ -875,11 +875,11 @@ void stereo_tcx_core_dec_fx( { Word16 buffer[L_FRAME16k]; lerp( signal_outFB_fx, buffer, st->L_frame, hTcxDec->L_frameTCX ); - ApplyFdCng_ivas_fx( buffer, 0 /* Q of buffer */, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 ); + ApplyFdCng_fx( buffer, 0 /* Q of buffer */, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 ); } ELSE { - ApplyFdCng_ivas_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 ); + ApplyFdCng_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 ); } } @@ -915,7 +915,7 @@ void stereo_tcx_core_dec_fx( test(); IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && st->idchan == 0 ) { - ApplyFdCng_ivas_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 ); + ApplyFdCng_fx( signal_out_fx, 0, NULL, 0, NULL, NULL, NULL, st, st->bfi, 0 ); } } @@ -923,6 +923,7 @@ void stereo_tcx_core_dec_fx( return; } + static void stereo_tcx_dec_mode_switch_reconf_ivas_fx( Decoder_State *st, /* i/o: decoder state structure */ const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/ diff --git a/lib_dec/ivas_td_low_rate_dec_fx.c b/lib_dec/ivas_td_low_rate_dec_fx.c index 3191a8b4a..8f09c1c7d 100644 --- a/lib_dec/ivas_td_low_rate_dec_fx.c +++ b/lib_dec/ivas_td_low_rate_dec_fx.c @@ -127,7 +127,7 @@ void tdm_low_rate_dec_fx( tmp_nb_bits_tot = sub( tmp_nb_bits_tot, 1 ); /* Q0 */ } - gsc_dec_ivas_fx( st, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st->coder_type, &last_bin, lsf_new, exc_wo_nf_fx, &st->Q_exc ); + gsc_dec_fx( st, dct_epit, pit_band_idx, Diff_len, tmp_nb_bits_tot, nb_subfr, st->coder_type, &last_bin, lsf_new, exc_wo_nf_fx, &st->Q_exc ); /*--------------------------------------------------------------------------------------* * iDCT transform @@ -193,14 +193,9 @@ void tdm_low_rate_dec_fx( * * Decode generic (GC), 2 subframes mode *---------------------------------------------------------------------*/ -/*---------------------------------------------------------------------* - * decod_gen_2sbfr_ivas_fx() - * - * Decode generic (GC), 2 subframes mode - *---------------------------------------------------------------------*/ -void decod_gen_2sbfr_ivas_fx( - Decoder_State *st, /* i/o: decoder static memory */ +void decod_gen_2sbfr_fx( + Decoder_State *st, /* i/o: decoder static memory */ const Word16 sharpFlag, /* i : formant sharpening flag `Q0*/ const Word16 *Aq, /* i : LP filter coefficient Q12*/ Word16 *pitch_buf, /* o : Word16 pitch values for each subframe Q6*/ @@ -263,7 +258,7 @@ void decod_gen_2sbfr_ivas_fx( * Decode pitch lag *----------------------------------------------------------------------*/ - *pt_pitch = pit_decode_ivas_fx( st, st->core_brate, 0, L_frame, i_subfr, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, 2 * L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); /* Q6 */ + *pt_pitch = pit_decode_fx( st, st->core_brate, 0, L_frame, i_subfr, GENERIC, &pitch_limit_flag, &T0, &T0_frac, &T0_min, &T0_max, 2 * L_SUBFR, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf ); /* Q6 */ test(); test(); @@ -295,7 +290,7 @@ void decod_gen_2sbfr_ivas_fx( * Estimate spectrum tilt and voicing *--------------------------------------------------------------*/ - gain_dec_lbr_ivas_fx( st, GENERIC, i_subfr, code, &gain_pit, &gain_code, &gain_inov, &norm_gain_code, gc_mem, gp_mem, 2 * L_SUBFR ); + gain_dec_lbr_fx( st, GENERIC, i_subfr, code, &gain_pit, &gain_code, &gain_inov, &norm_gain_code, gc_mem, gp_mem, 2 * L_SUBFR ); st->tilt_code_fx = est_tilt_ivas_fx( exc + i_subfr, gain_pit, code, gain_code, &voice_fac, st->Q_exc, 2 * L_SUBFR, 0 ); /* Q15 */ move16(); @@ -312,10 +307,12 @@ void decod_gen_2sbfr_ivas_fx( Word16 gain_code16 = round_fx( L_shl( gain_code, st->Q_exc ) ); /*Q_exc*/ Acelp_dec_total_exc( exc, exc2, gain_code16, gain_pit, i_subfr, code, 2 * L_SUBFR ); + /*-----------------------------------------------------------------* * Prepare TBE excitation *-----------------------------------------------------------------*/ - prep_tbe_exc_ivas_fx( L_frame, 2 * L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR /*i_subfr / L_SUBFR*/], bwe_exc, 0, NULL, st->Q_exc, T0, T0_frac, GENERIC, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); + + prep_tbe_exc_fx( L_frame, 2 * L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR /*i_subfr / L_SUBFR*/], bwe_exc, 0, NULL, st->Q_exc, T0, T0_frac, GENERIC, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); voice_factors[i_subfr / L_SUBFR + 1] = voice_factors[i_subfr / L_SUBFR /*i_subfr / L_SUBFR*/]; /* Q15 */ move16(); @@ -323,6 +320,7 @@ void decod_gen_2sbfr_ivas_fx( * Excitation enhancements (update of total excitation signal) * called twice because adapting it to double the subfr length would need lot of modifications *----------------------------------------------------------------*/ + enhancer_ivas_fx2( st->core_brate, 0, GENERIC, i_subfr, L_frame, voice_fac, st->stab_fac_fx, norm_gain_code, gain_inov, &st->gc_threshold_fx, code, exc2, gain_pit, &st->dm_fx, st->Q_exc ); enhancer_ivas_fx2( st->core_brate, 0, GENERIC, i_subfr, L_frame, voice_fac, st->stab_fac_fx, norm_gain_code, gain_inov, &st->gc_threshold_fx, code + L_SUBFR, exc2 + L_SUBFR, gain_pit, &st->dm_fx, st->Q_exc ); diff --git a/lib_dec/lsf_dec_fx.c b/lib_dec/lsf_dec_fx.c index 9b7f77c79..913543db8 100644 --- a/lib_dec/lsf_dec_fx.c +++ b/lib_dec/lsf_dec_fx.c @@ -8,9 +8,11 @@ #include "rom_com.h" /* Static table prototypes */ #include "prot_fx.h" /* Function prototypes */ #include "ivas_prot_fx.h" + /*-------------------------------------------------------------------* * Local functions *-------------------------------------------------------------------*/ + static void dqlsf_CNG_fx( Decoder_State *st_fx, Word16 *lsf_q ); /*--------------------------------------------------------------------------------------* @@ -88,7 +90,6 @@ static void dqlsf_CNG_fx( /* _ (Word16*) lsp_new : LP filter coefficient Q15 */ /* _ (Word16*) lsp_mid : LP filter coefficient Q15 */ /*---------------------------------------------------------------------------*/ - /* _ (Word16[]) st_fx->lsf_adaptive_mean_fx : FEC - adaptive mean LSF */ /* vector for FEC Q(x2.56) */ /* _ (Word16[]) st_fx->mem_AR_fx : AR memory of LSF quantizer */ @@ -99,271 +100,16 @@ static void dqlsf_CNG_fx( /* _ None */ /*===========================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES void lsf_dec_fx( - Decoder_State *st_fx, /* i/o: State structure */ - const Word16 tc_subfr, /* i : TC subframe index Q0*/ - Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/ - Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/ - Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/ - Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/ - Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/ - const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/ - , - const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/ -) -{ - Word16 i; - Word16 no_param_lpc; - Word16 param_lpc[NPRM_LPC_NEW]; - Word32 L_tmp; - Word16 nBits = 0; - move16(); - Word16 tmp_old[M + 1], tmp_new[M + 1]; - Word16 enr_old = 0, enr_new = 0; - move16(); - move16(); - Word16 lsf_diff, coder_type; - - /* initialize */ - coder_type = st_fx->coder_type; - if ( EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - coder_type = INACTIVE; /* Q0 */ - move16(); - } - test(); - if ( EQ_16( coder_type, AUDIO ) && st_fx->GSC_IVAS_mode > 0 ) - { - coder_type = GENERIC; /* Q0 */ - move16(); - } - no_param_lpc = 0; - nBits = 0; - move16(); - move16(); - - /* Find the number of bits for LSF quantization */ - IF( EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - nBits = LSF_BITS_CNG; /* Q0 */ - move16(); - } - ELSE - { - test(); - IF( st_fx->nelp_mode_dec == 0 && st_fx->ppp_mode_dec == 0 ) - { - nBits = st_fx->acelp_cfg.lsf_bits; /* Q0 */ - move16(); - } - ELSE IF( EQ_16( st_fx->nelp_mode_dec, 1 ) ) - { - IF( EQ_16( coder_type, UNVOICED ) ) - { - nBits = 30; /* Q0 */ - move16(); - if ( st_fx->bwidth == NB ) - { - nBits = 32; /* Q0 */ - move16(); - } - } - } - ELSE IF( EQ_16( st_fx->ppp_mode_dec, 1 ) ) - { - nBits = 26; /* Q0 */ - move16(); - } - } - - /* LSF de-quantization */ - lsf_end_dec_fx( st_fx, 0, coder_type, st_fx->bwidth, nBits, lsf_new, param_lpc, LSF_Q_prediction, &no_param_lpc, - tdm_lsfQ_PCh ); - - /* convert quantized LSFs to LSPs */ - - lsf2lsp_fx( lsf_new, lsp_new, M, st_fx->sr_core ); - /* set seed_acelp used in UC mode */ - test(); - IF( EQ_16( coder_type, UNVOICED ) && GT_16( st_fx->element_mode, EVS_MONO ) ) - { - st_fx->seed_acelp = 0; - move16(); - FOR( i = no_param_lpc - 1; i >= 0; i-- ) - { - /* rightshift before *seed_acelp+param_lpc[i] to avoid overflows*/ - st_fx->seed_acelp = extract_l( L_add( imult3216( 31821L /* Q0 */, add( shr( ( st_fx->seed_acelp ), 1 ), param_lpc[i] ) ), 13849L /* Q0 */ ) ); /* Q0 */ - move16(); - } - } - IF( EQ_32( st_fx->core_brate, SID_2k40 ) ) - { - /* return if SID frame (conversion to A(z) done in the calling function) */ - return; - } - - /*-------------------------------------------------------------------------------------* - * FEC - update adaptive LSF mean vector - *-------------------------------------------------------------------------------------*/ - - FOR( i = 0; i < M; i++ ) - { - L_tmp = L_mult( lsf_new[i], 10922 ); /*Q(x2.56+16)*/ - L_tmp = L_mac( L_tmp, st_fx->lsfoldbfi1_fx[i], 10922 ); /*Q(x2.56+16)*/ - L_tmp = L_mac( L_tmp, st_fx->lsfoldbfi0_fx[i], 10922 ); /*Q(x2.56+16)*/ - st_fx->lsf_adaptive_mean_fx[i] = round_fx( L_tmp ); /*Q(x2.56)*/ - move16(); - } - - test(); - test(); - IF( ( st_fx->prev_bfi && ( EQ_16( coder_type, TRANSITION ) ) && ( EQ_16( tc_subfr, sub( st_fx->L_frame, L_SUBFR ) ) ) ) ) - { - lsf_diff = 1205; - move16(); /*int_fs / (float)(2*(M+1)); = 470.588 -> 1205 in Q2.56 */ - if ( EQ_16( st_fx->L_frame, L_FRAME ) ) - { - lsf_diff = 964; - move16(); /*int_fs / (float)(2*(M+1)); = 376.47 -> 964 in Q2.56 */ - } - st_fx->lsf_old_fx[0] = lsf_diff; - move16(); - - FOR( i = 1; i < M; i++ ) - { - st_fx->lsf_old_fx[i] = add( st_fx->lsf_old_fx[i - 1], lsf_diff ); /* Q2.56 */ - move16(); - } - lsf2lsp_fx( st_fx->lsf_old_fx, st_fx->lsp_old_fx, M, st_fx->sr_core ); - } - /*-------------------------------------------------------------------------------------* - * Mid-frame LSF decoding - * LSP interpolation and conversion of LSPs to A(z) - *-------------------------------------------------------------------------------------*/ - IF( st_fx->rate_switching_reset ) - { - /*extrapolation in case of unstable LSF convert*/ - Copy( lsp_new, st_fx->lsp_old_fx, M ); /* Q15 */ - Copy( lsf_new, st_fx->lsf_old_fx, M ); /* Q2.56 */ - } - { - /* Mid-frame LSF decoding */ - lsf_mid_dec_fx( st_fx, lsp_new, coder_type, lsp_mid ); - } - test(); - test(); - IF( !( st_fx->prev_bfi && ( EQ_16( coder_type, TRANSITION ) ) && ( EQ_16( tc_subfr, sub( st_fx->L_frame, L_SUBFR ) ) ) ) ) - { - IF( st_fx->prev_bfi ) - { - /* check, if LSP interpolation can be relaxed */ - E_LPC_f_lsp_a_conversion( st_fx->lsp_old_fx, tmp_old, M ); - enr_old = Enr_1_Az_fx( tmp_old, 2 * L_SUBFR ); /* Q3 */ - - E_LPC_f_lsp_a_conversion( lsp_new, tmp_new, M ); - enr_new = Enr_1_Az_fx( tmp_new, 2 * L_SUBFR ); /* Q3 */ - - IF( LT_16( enr_new, mult_r( 9830 /*0.3 Q15*/, enr_old ) ) ) - { - /* OLD CODE : if( st->safety_net == 1), replaced with a decision similar to MODE2 */ - st_fx->relax_prev_lsf_interp = -1; - move16(); - test(); - test(); - test(); - test(); - if ( st_fx->clas_dec == UNVOICED_CLAS || EQ_16( st_fx->clas_dec, SIN_ONSET ) || st_fx->clas_dec == INACTIVE_CLAS || EQ_16( coder_type, GENERIC ) || EQ_16( coder_type, TRANSITION ) ) - { - st_fx->relax_prev_lsf_interp = 1; - move16(); - } - } - } - } - test(); - IF( EQ_16( st_fx->last_core, HQ_CORE ) && st_fx->core == ACELP_CORE ) - { - /* update old LSPs/LSFs in case of HQ->ACELP core switching */ - Copy( lsp_mid, st_fx->lsp_old_fx, M ); /* Q15 */ - lsp2lsf_fx( lsp_mid, st_fx->lsf_old_fx, M, st_fx->sr_core ); /* Q15 */ - } - test(); - IF( EQ_16( tdm_low_rate_mode, 1 ) && GT_16( coder_type, UNVOICED ) ) - { - // PMT("To be verified") - IF( EQ_16( st_fx->active_cnt, 1 ) ) - { - Copy( lsp_mid, st_fx->lsp_old_fx, M ); /* Q15 */ - lsp2lsf_fx( lsp_mid, st_fx->lsf_old_fx, M, st_fx->sr_core ); /* Q15 */ - Copy( lsp_new, lsp_mid, M ); /* Q15 */ - } - - /* LSP interpolation and conversion of LSPs to A(z) - two-subframe mode */ - int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid, lsp_new, Aq, M, -2 ); - } - ELSE - { - /* LSP interpolation and conversion of LSPs to A(z) */ - int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid, lsp_new, Aq, M, st_fx->relax_prev_lsf_interp ); - } - /*------------------------------------------------------------------* - * Check LSF stability (distance between old LSFs and current LSFs) - *------------------------------------------------------------------*/ - - IF( st_fx->element_mode == EVS_MONO ) - { - st_fx->stab_fac_fx = lsf_stab_fx( lsf_new, st_fx->lsf_old_fx, 0, st_fx->L_frame ); /*Q15*/ - move16(); - } - ELSE - { - st_fx->stab_fac_fx = lsf_stab_ivas_fx( lsf_new, st_fx->lsf_old_fx, 0, st_fx->L_frame ); /* Q15 */ - move16(); - } - - return; -} - -/*===========================================================================*/ -/* FUNCTION : lsf_dec_ivas_fx() */ -/*---------------------------------------------------------------------------*/ -/* PURPOSE : LSF decoder */ -/*---------------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Struct) st_fx : decoder static memory */ -/* _ (Word16) L_frame : length of the frame */ -/* _ (Word16) coder_type : coding type */ -/* _ (Word16) bwidth : input signal bandwidth */ -/*---------------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16*) Aq : LP filter coefficient Q12 */ -/* _ (Word16*) lsf_new : LP filter coefficient Q(x2.56) */ -/* _ (Word16*) lsp_new : LP filter coefficient Q15 */ -/* _ (Word16*) lsp_mid : LP filter coefficient Q15 */ -/*---------------------------------------------------------------------------*/ - -/* _ (Word16[]) st_fx->lsf_adaptive_mean_fx : FEC - adaptive mean LSF */ -/* vector for FEC Q(x2.56) */ -/* _ (Word16[]) st_fx->mem_AR_fx : AR memory of LSF quantizer */ -/* (past quantized LSFs without mean) Q(x2.56) */ -/* _ (Word16) st_fx->stab_fac_fx : LSF stability factor Q15 */ -/*---------------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ None */ -/*===========================================================================*/ -#endif -void lsf_dec_ivas_fx( - Decoder_State *st_fx, /* i/o: State structure */ - const Word16 tc_subfr, /* i : TC subframe index Q0*/ - Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/ - Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/ - Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/ - Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/ - Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/ - const Word16 tdm_low_rate_mode /* i : secondary channel low rate mode flag Q0*/ - , - const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/ + Decoder_State *st_fx, /* i/o: State structure */ + const Word16 tc_subfr, /* i : TC subframe index Q0*/ + Word16 *Aq, /* o : quantized A(z) for 4 subframes Q12*/ + Word16 *LSF_Q_prediction, /* o : LSF prediction mode Q0*/ + Word16 *lsf_new, /* o : de-quantized LSF vector Q(x2.56)*/ + Word16 *lsp_new, /* o : de-quantized LSP vector Q15*/ + Word16 *lsp_mid, /* o : de-quantized mid-frame LSP vector Q15*/ + const Word16 tdm_low_rate_mode, /* i : secondary channel low rate mode flag Q0*/ + const Word16 tdm_lsfQ_PCh[M] /* i : Q LSFs for primary channel Qx*/ ) { Word16 i; diff --git a/lib_dec/pit_dec_fx.c b/lib_dec/pit_dec_fx.c index e8cebedbd..38ec41cb2 100644 --- a/lib_dec/pit_dec_fx.c +++ b/lib_dec/pit_dec_fx.c @@ -319,246 +319,22 @@ void Mode2_delta_pit_dec( /* _ (Word16 ) pitch : close loop integer pitch Q6 */ /*=======================================================================*/ -#ifndef REMOVE_EVS_DUPLICATES -Word16 pit_decode_fx( /* o : floating pitch value */ - Decoder_State *st_fx, /* i/o: decoder state structure */ - const Word32 core_brate, /* i : core bitrate */ - const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */ - const Word16 L_frame, /* i : length of the frame */ - Word16 i_subfr, /* i : subframe index */ - const Word16 coder_type, /* i : coding type */ - Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */ - Word16 *T0, /* o : close loop integer pitch */ - Word16 *T0_frac, /* o : close loop fractional part of the pitch */ - Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */ - Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */ - const Word16 L_subfr /* i : subframe length */ -) -{ - Word16 pitch; /*Q2*/ - Word16 pitch_index, nBits, pit_flag; - - pitch_index = 0; - move16(); - - /*----------------------------------------------------------------* - * Set pit_flag = 0 for every subframe with absolute pitch search - *----------------------------------------------------------------*/ - pit_flag = i_subfr; - move16(); - - if ( EQ_16( i_subfr, PIT_DECODE_2XL_SUBFR ) ) - { - pit_flag = 0; - move16(); - } - - /*-------------------------------------------------------* - * Retrieve the pitch index - *-------------------------------------------------------*/ - IF( !Opt_AMR_WB ) - { - /*----------------------------------------------------------------* - * pitch Q: Set limit_flag to 0 for restrained limits, and 1 for extended limits - *----------------------------------------------------------------*/ - test(); - test(); - IF( i_subfr == 0 ) - { - *limit_flag = 1; - move16(); - - if ( EQ_16( coder_type, VOICED ) ) - { - *limit_flag = 2; - move16(); /* double-extended limits */ - } - test(); - if ( EQ_16( coder_type, GENERIC ) && EQ_32( core_brate, ACELP_7k20 ) ) - { - *limit_flag = 0; - move16(); - } - } - ELSE IF( EQ_16( i_subfr, 2 * L_SUBFR ) && EQ_32( coder_type, GENERIC ) && LE_32( core_brate, ACELP_13k20 ) ) - { - if ( GT_16( *T0, shr( add( PIT_FR1_EXTEND_8b, PIT_MIN ), 1 ) ) ) - { - *limit_flag = 0; - move16(); - } - } - - /*-------------------------------------------------------* - * Retrieve the number of Q bits - *-------------------------------------------------------*/ - - nBits = 0; - move16(); - IF( NE_16( coder_type, AUDIO ) ) - { - /* find the number of bits */ - nBits = st_fx->acelp_cfg.pitch_bits[shr( i_subfr, 6 )]; - move16(); - pitch_index = (Word16) get_next_indice_fx( st_fx, nBits ); - } - - /*-------------------------------------------------------* - * Pitch decoding in AUDIO mode - * (both ACELP@12k8 and ACELP@16k cores) - *-------------------------------------------------------*/ - IF( EQ_16( coder_type, AUDIO ) ) - { - test(); - if ( EQ_16( L_subfr, L_FRAME / 2 ) && i_subfr != 0 ) - { - pit_flag = L_SUBFR; - move16(); - } - if ( pit_flag == 0 ) - { - nBits = 10; - move16(); - } - if ( pit_flag != 0 ) - { - nBits = 6; - move16(); - } - - pitch_index = (Word16) get_next_indice_fx( st_fx, nBits ); - - test(); - test(); - IF( EQ_16( L_subfr, L_FRAME / 2 ) && i_subfr != 0 && GE_16( pitch_index, 32 ) ) /* safety check in case of bit errors */ - { - pitch_index = shr( pitch_index, 1 ); - st_fx->BER_detect = 1; - move16(); - } - - pit_Q_dec_fx( 0, pitch_index, nBits, 4, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect ); - } - ELSE IF( EQ_16( coder_type, VOICED ) ) - { - /*-------------------------------------------------------* - * Pitch decoding in VOICED mode - * (ACELP@12k8 core only) - *-------------------------------------------------------*/ - if ( EQ_16( i_subfr, 2 * L_SUBFR ) ) - { - pit_flag = i_subfr; - move16(); - } - - pit_Q_dec_fx( 0, pitch_index, nBits, 4, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect ); - } - ELSE - { - /*-------------------------------------------------------* - * Pitch decoding in GENERIC mode - * (both ACELP@12k8 and ACELP@16k cores) - *-------------------------------------------------------*/ - IF( EQ_16( L_frame, L_FRAME ) ) - { - pit_Q_dec_fx( 0, pitch_index, nBits, 8, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect ); - } - ELSE - { - pit16k_Q_dec_fx( pitch_index, nBits, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect ); - } - } - } - - /*-------------------------------------------------------* - * Pitch decoding in AMR-WB IO mode - *-------------------------------------------------------*/ - - ELSE - { - *limit_flag = 0; - move16(); - test(); - test(); - IF( i_subfr == 0 || ( EQ_16( i_subfr, 2 * L_SUBFR ) && EQ_32( core_brate, ACELP_8k85 ) ) ) - { - nBits = 8; - move16(); - } - ELSE - { - nBits = 5; - move16(); - } - IF( GT_32( core_brate, ACELP_8k85 ) ) - { - nBits = 6; - move16(); - test(); - if ( i_subfr == 0 || EQ_16( i_subfr, 2 * L_SUBFR ) ) - { - nBits = 9; - move16(); - } - } - - pitch_index = (Word16) get_next_indice_fx( st_fx, nBits ); - - pit_Q_dec_fx( 1, pitch_index, nBits, 8, pit_flag, *limit_flag, T0, T0_frac, T0_min, T0_max, &st_fx->BER_detect ); - } - - /*-------------------------------------------------------* - * Compute floating pitch output - *-------------------------------------------------------*/ - - pitch = shl( add( shl( *T0, 2 ), *T0_frac ), 4 ); /* save subframe pitch values Q6 */ - - return pitch; -} - -/*======================================================================*/ -/* FUNCTION : pit_decode_ivas_fx() */ -/*-----------------------------------------------------------------------*/ -/* PURPOSE : calculate pitch value */ -/* */ -/*-----------------------------------------------------------------------*/ -/* INPUT ARGUMENTS : */ -/* _ (Word32) core_brate : Core bitrate Q0 */ -/* _ (Word16) Opt_AMR_WB : flag indicating AMR-WB IO mode Q0 */ -/* _ (Word16) L_frame : length of the frame Q0 */ -/* _ (Word16) i_subfr : length of the frame Q0 */ -/* _ (Word16) coder_type : coding type Q0 */ -/* _ (Word16) L_subfr : subframe length */ -/*-----------------------------------------------------------------------*/ -/* OUTPUT ARGUMENTS : */ -/* _ (Word16 *) T0 : close loop integer pitch */ -/* _ (Word16 *) T0_frac : close loop fractional part of the pitch */ -/* _ (Word16 ) pitch : pitch value Q6 */ -/*-----------------------------------------------------------------------*/ -/* INPUT OUTPUT ARGUMENTS */ -/* _ (Word16 *) T0_min : delta search min for sf 2 & 4 */ -/* _ (Word16 *) T0_max : delta search max for sf 2 & 4 */ -/*-----------------------------------------------------------------------*/ -/* RETURN ARGUMENTS : */ -/* _ (Word16 ) pitch : close loop integer pitch Q6 */ -/*=======================================================================*/ - -#endif -Word16 pit_decode_ivas_fx( /* o : floating pitch value */ - Decoder_State *st_fx, /* i/o: decoder state structure */ - const Word32 core_brate, /* i : core bitrate */ - const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */ - const Word16 L_frame, /* i : length of the frame */ - Word16 i_subfr, /* i : subframe index */ - const Word16 coder_type, /* i : coding type */ - Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */ - Word16 *T0, /* o : close loop integer pitch */ - Word16 *T0_frac, /* o : close loop fractional part of the pitch */ - Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */ - Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */ - const Word16 L_subfr, /* i : subframe length */ - const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ - const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */ +/*! r: floating pitch value */ +Word16 pit_decode_fx( + Decoder_State *st_fx, /* i/o: decoder state structure */ + const Word32 core_brate, /* i : core bitrate */ + const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */ + const Word16 L_frame, /* i : length of the frame */ + Word16 i_subfr, /* i : subframe index */ + const Word16 coder_type, /* i : coding type */ + Word16 *limit_flag, /* i/o: restrained(0) or extended(1) Q limits */ + Word16 *T0, /* o : close loop integer pitch */ + Word16 *T0_frac, /* o : close loop fractional part of the pitch */ + Word16 *T0_min, /* i/o: delta search min for sf 2 & 4 */ + Word16 *T0_max, /* i/o: delta search max for sf 2 & 4 */ + const Word16 L_subfr, /* i : subframe length */ + const Word16 tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ + const Word16 tdm_Pri_pitch_buf[] /* i : primary channel pitch buffer Q6 */ ) { Word16 pitch; /*Q2*/ diff --git a/lib_dec/post_dec_fx.c b/lib_dec/post_dec_fx.c index b5d56d8fb..cbcb225bc 100644 --- a/lib_dec/post_dec_fx.c +++ b/lib_dec/post_dec_fx.c @@ -139,21 +139,13 @@ void post_decoder( { st->hPFstat->on = 1; move16(); -#ifdef REMOVE_EVS_DUPLICATES - formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); -#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); -#endif } ELSE { st->hPFstat->on = 0; move16(); -#ifdef REMOVE_EVS_DUPLICATES - formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); -#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); -#endif } } @@ -176,10 +168,10 @@ void post_decoder( /* Update synth2 memory */ Copy( synth_buf2 + L_frame, hBPF->pst_old_syn_fx, NBPSF_PIT_MAX ); - return; } + void post_decoder_ivas_fx( Decoder_State *st, Word16 synth_buf[], // Q0 @@ -310,21 +302,13 @@ void post_decoder_ivas_fx( { st->hPFstat->on = 1; move16(); -#ifdef REMOVE_EVS_DUPLICATES - formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); -#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 0 ); -#endif } ELSE { st->hPFstat->on = 0; move16(); -#ifdef REMOVE_EVS_DUPLICATES - formant_post_filt_ivas_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); -#else formant_post_filt_fx( st->hPFstat, synth, st->mem_Aq, synth2, L_frame, st->lp_noise, bitrate, 1 ); -#endif } } diff --git a/lib_enc/acelp_core_enc_fx.c b/lib_enc/acelp_core_enc_fx.c index 4c3f7152c..ceba860a1 100644 --- a/lib_enc/acelp_core_enc_fx.c +++ b/lib_enc/acelp_core_enc_fx.c @@ -394,14 +394,10 @@ ivas_error acelp_core_enc_fx( test(); IF( !nelp_mode && !ppp_mode ) { -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#else - config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#endif - st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag, - tc_subfr_fx, 0, &nb_bits, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, - tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); + config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + st_fx->L_frame, st_fx->GSC_noisy_speech, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag, + tc_subfr_fx, 0, &nb_bits, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, + tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); } /*-----------------------------------------------------------------* @@ -464,19 +460,16 @@ ivas_error acelp_core_enc_fx( { tc_classif_enc_fx( Q_new, st_fx->L_frame, &tc_subfr_fx, &position, attack_flag, st_fx->pitch[0], res_fx ); -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -#else - config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -#endif - -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr_fx, 1, NULL, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, - tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); + config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, + -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr_fx, 1, NULL, unbits_fx, st_fx->element_mode, &uc_two_stage_flag, + tdm_lp_reuse_flag, tdm_low_rate_mode, st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); } /*---------------------------------------------------------------* * Calculation of prediction for scaled innovation energy * (for memory-less gain quantizer) *---------------------------------------------------------------*/ + IF( nb_bits > 0 ) { Es_pred_enc_fx( &Es_pred_fx, &indice, st_fx->L_frame, res_fx, st_fx->voicing_fx, nb_bits, 0, Q_new ); @@ -521,13 +514,9 @@ ivas_error acelp_core_enc_fx( lsp_mid_bck_fx, mCb1_fx, Bin_E_fx, Bin_E_old_fx, mem_syn_bck_fx, mem_w0_bck_fx, streaklimit_fx, pstreaklen_fx ); /* Configure ACELP bit allocation */ -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -#else - config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, -#endif - -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag, tc_subfr_fx, 0, &nb_bits, unbits_fx, 0, &uc_two_stage_flag, 0, 0, - st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); + config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, st_fx->L_frame, + -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, st_fx->coder_type, st_fx->inactive_coder_type_flag, tc_subfr_fx, 0, &nb_bits, unbits_fx, 0, &uc_two_stage_flag, 0, 0, + st_fx->idchan, st_fx->active_fr_cnt_fx, tdm_Pitch_reuse_flag, st_fx->tdm_LRTD_flag, st_fx->GSC_IVAS_mode ); /* redo LSF quantization */ lsf_enc_fx( st_fx, lsf_new_fx, lsp_new_fx, lsp_mid_fx, Aq_fx, st_fx->Nb_ACELP_frames, tdm_low_rate_mode, st_fx->GSC_IVAS_mode, Q_new ); @@ -1185,7 +1174,7 @@ ivas_error acelp_core_enc_ivas_fx( test(); IF( !nelp_mode && !ppp_mode ) { - config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); + config_acelp1_fx( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, st->GSC_noisy_speech, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); } /*-----------------------------------------------------------------* @@ -1322,7 +1311,7 @@ ivas_error acelp_core_enc_ivas_fx( { tc_classif_enc_fx( Q_new, st->L_frame, &tc_subfr, &position, attack_flag, st->pitch[0], res_fx ); - config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr, 1, NULL, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); + config_acelp1_fx( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, tc_subfr, 1, NULL, unbits, st->element_mode, &uc_two_stage_flag, tdm_lp_reuse_flag, tdm_low_rate_mode, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); } /*---------------------------------------------------------------* @@ -1381,7 +1370,7 @@ ivas_error acelp_core_enc_ivas_fx( lsf_syn_mem_restore_ivas_fx( st, tilt_code_bck_fx, gc_threshold_bck_fx, clip_var_bck_fx, next_force_sf_bck, lsp_new, lsp_mid, clip_var_fx, mem_AR_fx, mem_MA_fx, lsp_new_bck_fx, lsp_mid_bck_fx, Bin_E_fx, Bin_E_old_fx, mem_syn_bck_fx, mem_w0_bck_fx, streaklimit_fx, pstreaklen ); /* Configure ACELP bit allocation */ - config_acelp1_IVAS( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, 0, &uc_two_stage_flag, 0, 0, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); + config_acelp1_fx( ENC, st->total_brate, st->core_brate, st->core, st->extl, st->extl_brate, st->L_frame, -1, &( st->acelp_cfg ), hBstr->nb_bits_tot, st->coder_type, st->inactive_coder_type_flag, tc_subfr, 0, &nb_bits, unbits, 0, &uc_two_stage_flag, 0, 0, st->idchan, st->active_cnt, tdm_Pitch_reuse_flag, st->tdm_LRTD_flag, st->GSC_IVAS_mode ); /* redo LSF quantization */ lsf_enc_ivas_fx( st, lsf_new_fx, lsp_new, lsp_mid, Aq, tdm_low_rate_mode, 0, NULL, Q_new ); @@ -1390,6 +1379,7 @@ ivas_error acelp_core_enc_ivas_fx( calc_residu_fx( st, inp, res_fx, Aq ); st->hTdCngEnc->burst_ho_cnt = 0; move16(); + /* VOICED frames in SC-VBR */ encod_gen_voic_ivas_fx( st, inp, Aw, Aq, Es_pred_fx, res_fx, syn_fx, exc_fx, exc2_fx, pitch_buf, voice_factors_fx, bwe_exc_fx, unbits, tdm_Pitch_reuse_flag, tdm_Pri_pitch_buf_fx, 0, Q_new ); } diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c index 854f0ff67..52f5d4010 100644 --- a/lib_enc/acelp_core_switch_enc_fx.c +++ b/lib_enc/acelp_core_switch_enc_fx.c @@ -11,32 +11,17 @@ #include "prot_fx.h" /* Function prototypes */ #include "prot_fx_enc.h" /* Function prototypes */ #include "basop_util.h" /* Function prototypes */ + /*---------------------------------------------------------------------* * Local function prototypes *---------------------------------------------------------------------*/ -static void encod_gen_voic_core_switch_fx( Encoder_State *st_fx, - const Word16 L_frame_fx, - const Word16 inp_fx[], - const Word16 Aq_fx[], - const Word16 A_fx[], - const Word16 T_op[], - Word16 *exc_fx, - const Word32 core_bitrate_fx, - Word16 shift, - Word16 Q_new ); -static void encod_gen_voic_core_switch_ivas_fx( Encoder_State *st_fx, - const Word16 L_frame_fx, - const Word16 inp_fx[], - const Word16 Aq_fx[], - const Word16 A_fx[], - const Word16 T_op[], - Word16 *exc_fx, - const Word32 core_bitrate_fx, - Word16 shift, - Word16 Q_new ); +static void encod_gen_voic_core_switch_fx( Encoder_State *st_fx, const Word16 L_frame_fx, const Word16 inp_fx[], const Word16 Aq_fx[], const Word16 A_fx[], const Word16 T_op[], Word16 *exc_fx, const Word32 core_bitrate_fx, Word16 shift, Word16 Q_new ); + +static void encod_gen_voic_core_switch_ivas_fx( Encoder_State *st_fx, const Word16 L_frame_fx, const Word16 inp_fx[], const Word16 Aq_fx[], const Word16 A_fx[], const Word16 T_op[], Word16 *exc_fx, const Word32 core_bitrate_fx, Word16 shift, Word16 Q_new ); static void bwe_switch_enc_fx( Encoder_State *st_fx, const Word16 *new_speech ); + static void bwe_switch_enc_ivas_fx( Encoder_State *st_fx, const Word16 *new_speech ); static Word16 dotprod_satcont( const Word16 *x, const Word16 *y, Word16 qx, Word16 qy, Word16 *qo, Word16 len, Word16 delta ); @@ -151,12 +136,8 @@ void acelp_core_switch_enc_fx( * Excitation encoding *----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, -#else - config_acelp1( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, -#endif - GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ ); + config_acelp1_fx( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, + GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ ); encod_gen_voic_core_switch_fx( st_fx, st_fx->last_L_frame, inp, Aq, A, T_op, exc, cbrate, shift, Q_new ); @@ -279,8 +260,8 @@ void acelp_core_switch_enc_ivas_fx( * Excitation encoding *----------------------------------------------------------------*/ - config_acelp1_IVAS( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, - GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ ); + config_acelp1_fx( ENC, st_fx->total_brate, cbrate, st_fx->core, -1, -1, st_fx->last_L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, + GENERIC, st_fx->inactive_coder_type_flag, -1, -1, &j, &i, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, 0, 0 /*GSC_IVAS_mode*/ ); encod_gen_voic_core_switch_ivas_fx( st_fx, st_fx->last_L_frame, inp, Aq, A, T_op, exc, cbrate, shift, Q_new ); diff --git a/lib_enc/analy_lp_fx.c b/lib_enc/analy_lp_fx.c index 78a02eeec..9b6ff2108 100644 --- a/lib_enc/analy_lp_fx.c +++ b/lib_enc/analy_lp_fx.c @@ -3,17 +3,16 @@ ====================================================================================*/ #include -#include "options.h" /* Compilation switches */ -#include "cnst.h" /* Common constants */ -#include "rom_com_fx.h" /* Static table prototypes */ -#include "rom_com.h" /* Static table prototypes */ -#include "rom_enc.h" /* Static table prototypes */ -//#include "prot_fx.h" /* Function prototypes */ +#include "options.h" /* Compilation switches */ +#include "cnst.h" /* Common constants */ +#include "rom_com_fx.h" /* Static table prototypes */ +#include "rom_com.h" /* Static table prototypes */ +#include "rom_enc.h" /* Static table prototypes */ #include "prot_fx.h" /* Function prototypes */ #include "prot_fx_enc.h" /* Function prototypes */ /*-------------------------------------------------------------------* - * analy_lp() + * analy_lp_fx() * * Perform LP analysis * @@ -23,26 +22,26 @@ * - find interpolated LSPs and convert back to A(z) for all subframes * - update LSPs for the next frame *-------------------------------------------------------------------*/ -void analy_lp_ivas_fx( - const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ - const Word16 L_frame, /* i :(q0) length of the frame */ - const Word16 L_look, /* i :(q0) look-ahead */ - Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ - Word16 A[], /* o :(q14) A(z) filter coefficients */ - Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 lsp_new[], /* o :(q15) current frame LSPs */ - Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ - Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ - const Word16 Top[2], /* i :(q0) open loop pitch lag */ - const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ - const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ -#ifdef REMOVE_EVS_DUPLICATES - const Word16 element_mode, /* i : element mode */ -#endif - const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ - Word16 Q_new, /*i: stores Q for speech*/ - Word16 *Q_r /*stores q for ener*/ ) + +void analy_lp_fx( + const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ + const Word16 L_frame, /* i :(q0) length of the frame */ + const Word16 L_look, /* i :(q0) look-ahead */ + Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ + Word16 A[], /* o :(q14) A(z) filter coefficients */ + Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 lsp_new[], /* o :(q15) current frame LSPs */ + Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ + Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ + const Word16 Top[2], /* i :(q0) open loop pitch lag */ + const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ + const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ + const Word16 element_mode, /* i : element mode */ + const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ + Word16 Q_new, /* i : stores Q for speech */ + Word16 *Q_r /*stores q for ener*/ +) { Word16 r_h[M + 1]; /* Autocorrelations of windowed speech MSB */ Word16 r_l[M + 1]; /* Autocorrelations of windowed speech LSB */ @@ -77,9 +76,7 @@ void analy_lp_ivas_fx( /* Autocorrelations */ autocorr_fx( pt, M, r_h, r_l, &Q_r[1 - i_subfr], wind_length, wind, 0, 0 ); -#ifdef REMOVE_EVS_DUPLICATES IF( NE_16( element_mode, EVS_MONO ) ) -#endif { /*if ( r[0] < 100.0f && no_thr == 0 )*/ /*r[0] = 100.0f*/ @@ -132,101 +129,6 @@ void analy_lp_ivas_fx( return; } -#ifndef REMOVE_EVS_DUPLICATES -void analy_lp_fx( - const Word16 speech[], /* i : pointer to the speech frame Q_new*/ - const Word16 L_frame, /* i : length of the frame Q0*/ - const Word16 L_look, /* i : look-ahead Q0*/ - Word32 *ener, /* o : residual energy from Levinson-Durbin Q_r*/ - Word16 A[], /* o : A(z) filter coefficients Q14*/ - Word16 epsP_h[], /* o : LP analysis residual energies for each iteration Q_r*/ - Word16 epsP_l[], /* o : LP analysis residual energies for each iteration Q_r*/ - Word16 lsp_new[], /* o : current frame LSPs Q15*/ - Word16 lsp_mid[], /* o : current mid-frame LSPs Q15*/ - Word16 lsp_old[], /* i/o: previous frame unquantized LSPs Q15*/ - const Word16 Top[2], /* i : open loop pitch lag Q0*/ - const Word16 Tnc[2], /* i : open loop pitch gain Q15*/ - const Word32 Core_sr, /* i : Internal core sampling rate Q0*/ - const Word16 sec_chan_low_rate, /* i : flag to signal second channel Q0*/ - Word16 Q_new, - Word16 *Q_r ) -{ - Word16 r_h[M + 1]; /* Autocorrelations of windowed speech MSB */ - Word16 r_l[M + 1]; /* Autocorrelations of windowed speech LSB */ - Word32 LepsP[M + 1]; - Word16 i, i_subfr, wind_length = 0; - Word16 *lsp; - const Word16 *wind = NULL; - const Word16 *pt; - Word16 half_frame; - - IF( EQ_16( L_frame, L_FRAME ) ) - { - wind_length = L_LP; - move16(); - wind = Assym_window_W16fx; /* Q15 */ - } - ELSE /* L_frame == L_FRAME16k */ - { - wind_length = L_LP_16k; - move16(); - wind = assym_window_16k_fx; /* Q15 */ - } - lsp = lsp_mid; /* Q15 */ - half_frame = shr( L_frame, 1 ); - - FOR( i_subfr = 0; i_subfr <= 1; i_subfr++ ) - { - pt = speech + sub( add( half_frame, L_look ), wind_length ); - half_frame = shl( half_frame, 1 ); - - /* Autocorrelations */ - autocorr_fx( pt, M, r_h, r_l, &Q_r[1 - i_subfr], wind_length, wind, 0, 0 ); - - /* Lag windowing */ - adapt_lag_wind( r_h, r_l, M, Top[i_subfr], Tnc[i_subfr], Core_sr ); - - /* Levinson-Durbin */ - E_LPC_lev_dur( r_h, r_l, A, LepsP, M, NULL ); - FOR( i = 0; i <= M; i++ ) - { - L_Extract( LepsP[i], &epsP_h[i], &epsP_l[i] ); - } - /*Q_r[... might not be needed from external...*/ - Q_r[1 - i_subfr] = add( Q_r[1 - i_subfr], shl( Q_new, 1 ) ); - move16(); - - /* Conversion of A(z) to LSPs */ - E_LPC_a_lsp_conversion( A, lsp, lsp_old, M ); - - lsp = lsp_new; /* Q15 */ - } - IF( EQ_16( sec_chan_low_rate, 1 ) ) - { - /* LSP interpolation */ -#ifdef REMOVE_EVS_DUPLICATES - int_lsp4_ivas_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, -2 ); -#else - int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, -2 ); -#endif - } - ELSE - { - /* LSP interpolation */ -#ifdef REMOVE_EVS_DUPLICATES - int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, 0 ); -#else - int_lsp4_fx( L_frame, lsp_old, lsp_mid, lsp_new, A, M, 0 ); -#endif - } - Copy( lsp_new, lsp_old, M ); /* Q15 */ - *ener = L_Comp( epsP_h[M], epsP_l[M] ); /* Q_r */ - move32(); - - return; -} -#endif - /*-------------------------------------------------------------------* * analy_lp_AMR_WB() * diff --git a/lib_enc/cod_ace_fx.c b/lib_enc/cod_ace_fx.c index b5c18d44b..e1914aeb5 100644 --- a/lib_enc/cod_ace_fx.c +++ b/lib_enc/cod_ace_fx.c @@ -366,14 +366,9 @@ Word16 coder_acelp_fx( /* o : SEGSNR for CL decision * IF( st->igf != 0 ) { -#ifdef REMOVE_EVS_DUPLICATES - prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], - bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate, - st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); -#else - prep_tbe_exc_fx( L_frame, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], - bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate ); -#endif + prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], + bwe_exc, gain_preQ, code_preQ, Q_new, T0, T0_frac, st->coder_type, st->core_brate, + st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); } /*---------------------------------------------------------* diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c index a60828a94..87bba1fae 100644 --- a/lib_enc/enc_gen_voic_fx.c +++ b/lib_enc/enc_gen_voic_fx.c @@ -363,20 +363,15 @@ void encod_gen_voic_fx( exc_fx[i + i_subfr_fx] = round_fx_o( Ltmp, &Overflow ); /* Q0 */ } } + /*-----------------------------------------------------------------* * Prepare TBE excitation *-----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, - &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new, - T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, - st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); -#else - prep_tbe_exc_fx( L_frame, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, + prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new, - T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate ); -#endif + T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, + st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); /*-----------------------------------------------------------------* * Synthesize speech to update mem_syn[]. @@ -405,9 +400,11 @@ void encod_gen_voic_fx( hSC_VBR->prev_tilt_code_fx = hLPDmem->tilt_code; /* Q15 */ move16(); } + return; } + void encod_gen_voic_ivas_fx( Encoder_State *st_fx, /* i/o: state structure */ const Word16 speech_fx[], /* i : input speech Qnew -1 */ @@ -763,10 +760,10 @@ void encod_gen_voic_ivas_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ - prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, - &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new, - T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, - st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); + prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr_fx, gain_pit_fx, gain_code_fx, code_fx, voice_fac_fx, + &voice_factors_fx[i_subfr_fx / L_SUBFR], bwe_exc_fx, gain_preQ_fx, code_preQ_fx, Q_new, + T0_fx, T0_frac_fx, st_fx->coder_type, st_fx->core_brate, + st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); /*-----------------------------------------------------------------* * Synthesize speech to update mem_syn[]. diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index 394b22c30..eba991f57 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -308,13 +308,8 @@ Word16 encod_tran_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ -#ifdef REMOVE_EVS_DUPLICATES - prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], - bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); -#else - prep_tbe_exc_fx( L_frame_fx, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], - bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate ); -#endif + prep_tbe_exc_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], + bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); /*-----------------------------------------------------------------* * Synthesize speech to update mem_syn[]. @@ -717,9 +712,9 @@ Word16 encod_tran_ivas_fx( * Prepare TBE excitation *-----------------------------------------------------------------*/ - prep_tbe_exc_ivas_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], - bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, - st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); + prep_tbe_exc_fx( L_frame_fx, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], + bwe_exc_fx, gain_preQ, code_preQ, Q_new, T0, T0_frac, st_fx->coder_type, st_fx->core_brate, + st_fx->element_mode, st_fx->idchan, st_fx->hBWE_TD != NULL, st_fx->tdm_LRTD_flag ); /*-----------------------------------------------------------------* * Synthesize speech to update mem_syn[]. diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index 67c4f256f..5f4a5dd60 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -1150,12 +1150,7 @@ ivas_error pre_proc_front_ivas_fx( move16(); } -#ifdef REMOVE_EVS_DUPLICATES - analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, element_mode, i, *Q_new, Q_r ); -#else - analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, - INT_FS_12k8, i, *Q_new, Q_r ); -#endif + analy_lp_fx( inp_12k8_fx, L_FRAME, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, element_mode, i, *Q_new, Q_r ); FOR( Word16 idx = 0; idx < M + 1; idx++ ) { diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c index 6fe6b6720..4fcb9e1ec 100644 --- a/lib_enc/ivas_core_pre_proc_fx.c +++ b/lib_enc/ivas_core_pre_proc_fx.c @@ -1134,20 +1134,11 @@ ivas_error ivas_compute_core_buffers_fx( IF( Q_new ) { -#ifdef REMOVE_EVS_DUPLICATES - analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, sub( *Q_new, 1 ), Q_r ); -#else - analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, 0, sub( *Q_new, 1 ), Q_r ); -#endif + analy_lp_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, sub( *Q_new, 1 ), Q_r ); } ELSE { -#ifdef REMOVE_EVS_DUPLICATES - analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, -1, Q_r ); - -#else - analy_lp_ivas_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, 0, -1, Q_r ); -#endif + analy_lp_fx( inp_16k_fx, L_FRAME16k, L_look, ener_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lspold_enc_fx, st->pitch, st->voicing_fx, INT_FS_16k, element_mode, 0, -1, Q_r ); } /*--------------------------------------------------------------* diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c index f3cf05e63..9e2e1402e 100644 --- a/lib_enc/ivas_front_vad_fx.c +++ b/lib_enc/ivas_front_vad_fx.c @@ -637,11 +637,7 @@ ivas_error front_vad_spar_fx( hFrontVad->q_buffer_12k8 = Q_inp_12k8; move16(); -#ifdef REMOVE_EVS_DUPLICATES - analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, st->element_mode, 0, Q_inp_12k8, Q_r ); -#else - analy_lp_ivas_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, 0 /* <-- sec_chan_low_rate */, Q_inp_12k8, Q_r ); -#endif + analy_lp_fx( inp_12k8_fx, L_FRAME, L_LOOK_12k8, &res_energy_fx, A_fx, epsP_h, epsP_l, lsp_new_fx, lsp_mid_fx, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing_fx, INT_FS_12k8, st->element_mode, 0, Q_inp_12k8, Q_r ); FOR( Word16 i = 0; i <= M; i++ ) { diff --git a/lib_enc/ivas_td_low_rate_enc_fx.c b/lib_enc/ivas_td_low_rate_enc_fx.c index 77ddb35aa..d10527a24 100644 --- a/lib_enc/ivas_td_low_rate_enc_fx.c +++ b/lib_enc/ivas_td_low_rate_enc_fx.c @@ -365,11 +365,12 @@ void encod_gen_2sbfr( move16(); move16(); } + /*-----------------------------------------------------------------* * Prepare TBE excitation *-----------------------------------------------------------------*/ - prep_tbe_exc_ivas_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc, 0, NULL, Q_new, T0, T0_frac, coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); + prep_tbe_exc_fx( L_frame, L_SUBFR, i_subfr, gain_pit, gain_code, code, voice_fac, &voice_factors[i_subfr / L_SUBFR], bwe_exc, 0, NULL, Q_new, T0, T0_frac, coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, st->tdm_LRTD_flag ); voice_factors[i_subfr / L_SUBFR + 1] = voice_factors[i_subfr / L_SUBFR]; /* Q15 */ move16(); @@ -378,6 +379,7 @@ void encod_gen_2sbfr( * Synthesize speech to update mem_syn_flt[]. * Update A(z) filters *-----------------------------------------------------------------*/ + Syn_filt_s( 1, p_Aq, M, &exc[i_subfr], &syn[i_subfr], 2 * L_SUBFR, hLPDmem->mem_syn, 1 ); p_Aw += 2 * ( M + 1 ); p_Aq += 2 * ( M + 1 ); diff --git a/lib_enc/lsf_enc_fx.c b/lib_enc/lsf_enc_fx.c index 8fe425d74..b26532b15 100644 --- a/lib_enc/lsf_enc_fx.c +++ b/lib_enc/lsf_enc_fx.c @@ -289,13 +289,16 @@ void lsf_enc_fx( { int_lsp4_fx( st_fx->L_frame, st_fx->lsp_old_fx, lsp_mid, lsp_new, Aq, M, 0 ); } + /*------------------------------------------------------------------* * Check LSF stability (distance between old LSFs and current LSFs) *------------------------------------------------------------------*/ + IF( NE_32( st_fx->core_brate, SID_2k40 ) ) { st_fx->stab_fac_fx = lsf_stab_fx( lsf_new, st_fx->lsf_old_fx, 0, st_fx->L_frame ); } + return; } @@ -1982,7 +1985,7 @@ static void first_VQstages( dist[1] = dist_buf + maxC; move16(); - set16_fx( idx_buf, 0, ( const Word16 )( 2 * stagesVQ * maxC ) ); + set16_fx( idx_buf, 0, (const Word16) ( 2 * stagesVQ * maxC ) ); set16_fx( parents, 0, maxC ); /* Set up inital distance vector */ @@ -2172,7 +2175,7 @@ static void first_VQstages_ivas_fx( dist[1] = dist_buf + maxC; move16(); - set16_fx( idx_buf, 0, ( const Word16 )( 2 * stagesVQ * maxC ) ); + set16_fx( idx_buf, 0, (const Word16) ( 2 * stagesVQ * maxC ) ); set16_fx( parents, 0, maxC ); /* Set up inital distance vector */ diff --git a/lib_enc/pre_proc_fx.c b/lib_enc/pre_proc_fx.c index e8d4a0722..cc8b64ca4 100644 --- a/lib_enc/pre_proc_fx.c +++ b/lib_enc/pre_proc_fx.c @@ -213,7 +213,7 @@ void pre_proc_fx( /*----------------------------------------------------------------* * Change the sampling frequency to 12.8 kHz *----------------------------------------------------------------*/ - modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, ( const Word16 )( EQ_16( st->max_bwidth, NB ) ) ); + modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, (const Word16) ( EQ_16( st->max_bwidth, NB ) ) ); Copy( new_inp_12k8, st->buf_speech_enc + L_FRAME32k, L_FRAME ); Scale_sig( st->buf_speech_enc + L_FRAME32k, L_FRAME, 1 ); /*------------------------------------------------------------------* @@ -414,11 +414,7 @@ void pre_proc_fx( alw_voicing[1] = st->voicing_fx[2]; move16(); -#ifdef REMOVE_EVS_DUPLICATES - analy_lp_ivas_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, EVS_MONO, 0, *Q_new, Q_r ); -#else - analy_lp_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r ); -#endif + analy_lp_fx( inp_12k8, L_FRAME, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lsp_old1_fx, alw_pitch_lag_12k8, alw_voicing, INT_FS_12k8, EVS_MONO, 0, *Q_new, Q_r ); lsp2lsf_fx( lsp_new, lsf_new, M, INT_FS_12k8 ); stab_fac = lsf_stab_fx( lsf_new, st->lsf_old1_fx, 0, L_FRAME ); @@ -1131,11 +1127,7 @@ void pre_proc_fx( Copy( st->lsp_old1_fx, st->lspold_enc_fx, M ); } -#ifdef REMOVE_EVS_DUPLICATES - analy_lp_ivas_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, EVS_MONO, 0, *Q_new, Q_r ); -#else - analy_lp_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, -1 /*IVAS_CODE !! LowRateFlag*/, *Q_new, Q_r ); -#endif + analy_lp_fx( inp_16k, L_FRAME16k, L_look, ener, A, epsP_h, epsP_l, lsp_new, lsp_mid, st->lspold_enc_fx, st->pitch, st->voicing_fx, 16000, EVS_MONO, 0, *Q_new, Q_r ); /*--------------------------------------------------------------* * Compute Weighted Input diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index d9389eb9c..9eb43c82b 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -41,9 +41,8 @@ #include "ivas_error_utils.h" #include "complex_basop.h" #include "ivas_stat_enc.h" -/*----------------------------------------------------------------------------------* - * Prototypes of RAM counting tool macros - *----------------------------------------------------------------------------------*/ + + ivas_error acelp_core_enc_fx( Encoder_State *st_fx, /* i/o: encoder state structure */ const Word16 inp_fx[], /* i : input signal of the current frame Q_new*/ @@ -68,57 +67,37 @@ ivas_error acelp_core_enc_fx( ); -void analy_lp_ivas_fx( - const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ - const Word16 L_frame, /* i :(q0) length of the frame */ - const Word16 L_look, /* i :(q0) look-ahead */ - Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ - Word16 A[], /* o :(q14) A(z) filter coefficients */ - Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ - Word16 lsp_new[], /* o :(q15) current frame LSPs */ - Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ - Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ - const Word16 Top[2], /* i :(q0) open loop pitch lag */ - const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ - const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ -#ifdef REMOVE_EVS_DUPLICATES - const Word16 element_mode, /* i : element mode */ -#endif - const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ - Word16 Q_new, /*i: stores Q for speech*/ - Word16 *Q_r /*stores q for ener*/ ); - -#ifndef REMOVE_EVS_DUPLICATES void analy_lp_fx( - const Word16 speech[], /* i : pointer to the speech frame Q_new*/ - const Word16 L_frame, /* i : length of the frame Q0*/ - const Word16 L_look, /* i : look-ahead Q0*/ - Word32 *ener, /* o : residual energy from Levinson-Durbin Q_r*/ - Word16 A[], /* o : A(z) filter coefficients Q14*/ - Word16 epsP_h[], /* o : LP analysis residual energies for each iteration Q_r*/ - Word16 epsP_l[], /* o : LP analysis residual energies for each iteration Q_r*/ - Word16 lsp_new[], /* o : current frame LSPs Q15*/ - Word16 lsp_mid[], /* o : current mid-frame LSPs Q15*/ - Word16 lsp_old[], /* i/o: previous frame unquantized LSPs Q15*/ - const Word16 Top[2], /* i : open loop pitch lag Q0*/ - const Word16 Tnc[2], /* i : open loop pitch gain Q15*/ - const Word32 Core_sr, /* i : Internal core sampling rate Q0*/ - const Word16 sec_chan_low_rate, /* i : flag to signal second channel Q0*/ - Word16 Q_new, - Word16 *Q_r ); -#endif - -void AVQ_cod_fx( /* o: comfort noise gain factor */ - const Word16 xri[], /* i: vector to quantize */ - Word16 xriq[], /* o: quantized normalized vector (assuming the bit budget is enough) */ - const Word16 NB_BITS, /* i: number of allocated bits */ - const Word16 Nsv, /* i: number of subvectors (lg=Nsv*8) */ - const Word16 Q_in_ref /* i: Scaling i */ + const Word16 speech[], /* i :(Q_new) pointer to the speech frame */ + const Word16 L_frame, /* i :(q0) length of the frame */ + const Word16 L_look, /* i :(q0) look-ahead */ + Word32 *ener, /* o :(Q_r) residual energy from Levinson-Durbin */ + Word16 A[], /* o :(q14) A(z) filter coefficients */ + Word16 epsP_h[], /* o :(high part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 epsP_l[], /* o :(low part of epsP(Q_r)) LP analysis residual energies for each iteration */ + Word16 lsp_new[], /* o :(q15) current frame LSPs */ + Word16 lsp_mid[], /* o :(q15) current mid-frame LSPs */ + Word16 lsp_old[], /* i/o:(q15) previous frame unquantized LSPs */ + const Word16 Top[2], /* i :(q0) open loop pitch lag */ + const Word16 Tnc[2], /* i :(q15) open loop pitch gain */ + const Word32 Core_sr, /* i :(q0) Internal core sampling rate */ + const Word16 element_mode, /* i : element mode */ + const Word16 sec_chan_low_rate, /* i :(q0) flag to signal second channel */ + Word16 Q_new, /* i : stores Q for speech */ + Word16 *Q_r /*stores q for ener*/ +); + +/*1 r: comfort noise gain factor */ +void AVQ_cod_fx( + const Word16 xri[], /* i: vector to quantize */ + Word16 xriq[], /* o: quantized normalized vector (assuming the bit budget is enough) */ + const Word16 NB_BITS, /* i: number of allocated bits */ + const Word16 Nsv, /* i: number of subvectors (lg=Nsv*8) */ + const Word16 Q_in_ref /* i: Scaling i */ ); void AVQ_encmux_fx( - BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ + BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ const Word16 extl, /* i : extension layer */ Word16 xriq[], /* i/o: rounded subvectors [0..8*Nsv-1] followed by rounded bit allocations [8*Nsv..8*Nsv+Nsv-1] */ @@ -130,7 +109,7 @@ void AVQ_encmux_fx( ); void AVQ_encmux_ivas_fx( - BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ + BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ const Word16 extl, /* i : extension layer */ Word16 xriq[], /* i/o: rounded subvectors [0..8*Nsv-1] followed by rounded bit allocations [8*Nsv..8*Nsv+Nsv-1] */ @@ -151,15 +130,15 @@ void bw_detect_fx( const Word16 mct_on, /* i : flag MCT mode */ const Word16 Q_spec ); -void core_switching_post_enc_fx( /*done */ - Encoder_State *st_fx, /* i/o: encoder state structure */ - const Word16 inp12k8[], /* i : i signal @12.8 kHz Qinp*/ - const Word16 inp16k[], /* i : i signal @16 kHz Qinp*/ - const Word16 A[], /* i : unquant. LP filter coefs. (Q12) */ - Word16 Qshift, - Word16 Q_new, - const Word16 Qsp, /* i/o : Q from acelp synthsis */ - Word16 *Qmus /* i/o : Q from mdct synthsis / Q of output synthesis */ +void core_switching_post_enc_fx( + Encoder_State *st_fx, /* i/o: encoder state structure */ + const Word16 inp12k8[], /* i : i signal @12.8 kHz Qinp*/ + const Word16 inp16k[], /* i : i signal @16 kHz Qinp*/ + const Word16 A[], /* i : unquant. LP filter coefs. (Q12) */ + Word16 Qshift, + Word16 Q_new, + const Word16 Qsp, /* i/o : Q from acelp synthsis */ + Word16 *Qmus /* i/o : Q from mdct synthsis / Q of output synthesis */ ); void core_switching_pre_enc_fx( @@ -170,8 +149,9 @@ void core_switching_pre_enc_fx( const Word16 last_element_mode /* i : last_element_mode Q0*/ ); -Word16 correlation_shift_fx( /* o : noise dependent voicing correction Q15 */ - const Word16 totalNoise_fx /* i/o: noise estimate over all critical bands Q8 */ +/*! r: noise dependent voicing correction Q15 */ +Word16 correlation_shift_fx( + const Word16 totalNoise_fx /* i/o: noise estimate over all critical bands Q8 */ ); void dtx_fx( diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c index 5e50cac15..e0dd32927 100644 --- a/lib_enc/transition_enc_fx.c +++ b/lib_enc/transition_enc_fx.c @@ -212,13 +212,9 @@ void transition_enc_fx( IF( EQ_16( *tc_subfr, TC_0_0 ) ) { /* this is called only to compute unused bits */ -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#else - config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#endif - L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP, - st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); + config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP, + st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); } *clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, sub( shift_wsp, 1 ) ); @@ -328,13 +324,9 @@ void transition_enc_fx( IF( LE_16( sub( i_subfr, *tc_subfr ), L_SUBFR ) ) { -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#else - config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#endif - st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL, - unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); + config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL, + unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); } /*-----------------------------------------------------------------* @@ -1042,14 +1034,9 @@ void transition_enc_ivas_fx( IF( EQ_16( *tc_subfr, TC_0_0 ) ) { /* this is called only to compute unused bits */ - -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#else - config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#endif - L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP, - st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ + config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + L_FRAME, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, TC_0_0, 3, NULL, unbits_ACELP, + st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); } @@ -1160,13 +1147,9 @@ void transition_enc_ivas_fx( IF( LE_16( sub( i_subfr, *tc_subfr ), L_SUBFR ) ) { -#ifdef REMOVE_EVS_DUPLICATES - config_acelp1_IVAS( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#else - config_acelp1( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, -#endif - st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL, - unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); + config_acelp1_fx( ENC, st_fx->total_brate, st_fx->core_brate, st_fx->core, st_fx->extl, st_fx->extl_brate, + st_fx->L_frame, -1, &( st_fx->acelp_cfg ), hBstr->nb_bits_tot, TRANSITION, -1, *tc_subfr, 2, NULL, + unbits_ACELP, st_fx->element_mode, &i /*dummy*/, 0 /*tdm_lp_reuse_flag*/, 0 /*tdm_low_rate_mode*/, st_fx->idchan, st_fx->active_fr_cnt_fx, 0 /*tdm_Pitch_reuse_flag*/, st_fx->tdm_LRTD_flag, 0 /*GSC_IVAS_mode*/ ); } /*-----------------------------------------------------------------* -- GitLab From 1ecdfd6f7aecdf1da3655ac16fd8942d1f409f65 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 17 Apr 2025 15:52:49 +0200 Subject: [PATCH 372/698] rename file --- Workspace_msvc/lib_dec.vcxproj | 2 +- Workspace_msvc/lib_dec.vcxproj.filters | 6 +++--- ...celp_core_dec_ivas_fx.c => acelp_core_dec_fx.c} | 0 lib_dec/ivas_td_low_rate_dec_fx.c | 14 +++++++++++--- 4 files changed, 15 insertions(+), 7 deletions(-) rename lib_dec/{acelp_core_dec_ivas_fx.c => acelp_core_dec_fx.c} (100%) diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 2839a5812..12f77b346 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -139,7 +139,7 @@ false - + diff --git a/Workspace_msvc/lib_dec.vcxproj.filters b/Workspace_msvc/lib_dec.vcxproj.filters index ebf15bd4c..25079058c 100644 --- a/Workspace_msvc/lib_dec.vcxproj.filters +++ b/Workspace_msvc/lib_dec.vcxproj.filters @@ -119,9 +119,6 @@ decoder_all_c - - decoder_all_c - decoder_all_c @@ -515,6 +512,9 @@ decoder_ivas_c + + decoder_all_c + diff --git a/lib_dec/acelp_core_dec_ivas_fx.c b/lib_dec/acelp_core_dec_fx.c similarity index 100% rename from lib_dec/acelp_core_dec_ivas_fx.c rename to lib_dec/acelp_core_dec_fx.c diff --git a/lib_dec/ivas_td_low_rate_dec_fx.c b/lib_dec/ivas_td_low_rate_dec_fx.c index 8f09c1c7d..6419f8517 100644 --- a/lib_dec/ivas_td_low_rate_dec_fx.c +++ b/lib_dec/ivas_td_low_rate_dec_fx.c @@ -40,6 +40,13 @@ #include "prot_fx.h" #include "wmc_auto.h" #include "ivas_prot_fx.h" + +/*-------------------------------------------------------------------* + * tdm_low_rate_dec_fx() + * + * Low-bitrate decoder + *-------------------------------------------------------------------*/ + void tdm_low_rate_dec_fx( Decoder_State *st, /* i/o: decoder static memory */ Word16 dct_epit[], /* o : GSC excitation in DCT domain Q_exc*/ @@ -188,6 +195,7 @@ void tdm_low_rate_dec_fx( return; } + /*---------------------------------------------------------------------* * decod_gen_2sbfr() * @@ -217,12 +225,12 @@ void decod_gen_2sbfr_fx( move32(); Word16 gain_inov = 0; /* Innovation gain */ move16(); - Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */ - Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */ + Word32 gc_mem[NB_SUBFR - 1]; /* gain_code from previous subframes */ + Word16 gp_mem[NB_SUBFR - 1]; /* gain_pitch from previous subframes */ Word16 voice_fac; /* voicing factor */ Word16 code[2 * L_SUBFR]; /* algebraic codevector */ const Word16 *p_Aq; /* Pointer to frame LP coefficient */ - Word16 *pt_pitch; /* pointer to Word16 pitch */ + Word16 *pt_pitch; /* pointer to Word16 pitch */ Word16 i_subfr; /* tmp variables */ Word16 L_frame; Word16 pitch_limit_flag; -- GitLab From 30d174cd2602b630f7ad4ea56061d8da79c6d5c5 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 17 Apr 2025 16:04:05 +0200 Subject: [PATCH 373/698] clang-format --- lib_enc/lsf_enc_fx.c | 4 ++-- lib_enc/pre_proc_fx.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_enc/lsf_enc_fx.c b/lib_enc/lsf_enc_fx.c index b26532b15..23ed7d0c2 100644 --- a/lib_enc/lsf_enc_fx.c +++ b/lib_enc/lsf_enc_fx.c @@ -1985,7 +1985,7 @@ static void first_VQstages( dist[1] = dist_buf + maxC; move16(); - set16_fx( idx_buf, 0, (const Word16) ( 2 * stagesVQ * maxC ) ); + set16_fx( idx_buf, 0, ( const Word16 )( 2 * stagesVQ * maxC ) ); set16_fx( parents, 0, maxC ); /* Set up inital distance vector */ @@ -2175,7 +2175,7 @@ static void first_VQstages_ivas_fx( dist[1] = dist_buf + maxC; move16(); - set16_fx( idx_buf, 0, (const Word16) ( 2 * stagesVQ * maxC ) ); + set16_fx( idx_buf, 0, ( const Word16 )( 2 * stagesVQ * maxC ) ); set16_fx( parents, 0, maxC ); /* Set up inital distance vector */ diff --git a/lib_enc/pre_proc_fx.c b/lib_enc/pre_proc_fx.c index cc8b64ca4..f7ebc8298 100644 --- a/lib_enc/pre_proc_fx.c +++ b/lib_enc/pre_proc_fx.c @@ -213,7 +213,7 @@ void pre_proc_fx( /*----------------------------------------------------------------* * Change the sampling frequency to 12.8 kHz *----------------------------------------------------------------*/ - modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, (const Word16) ( EQ_16( st->max_bwidth, NB ) ) ); + modify_Fs_fx( signal_in, input_frame, st->input_Fs, new_inp_12k8, INT_FS_12k8, st->mem_decim_fx, ( const Word16 )( EQ_16( st->max_bwidth, NB ) ) ); Copy( new_inp_12k8, st->buf_speech_enc + L_FRAME32k, L_FRAME ); Scale_sig( st->buf_speech_enc + L_FRAME32k, L_FRAME, 1 ); /*------------------------------------------------------------------* -- GitLab From 03845cc8a08ec94c81328e1146630a7ed45e81eb Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 21 Apr 2025 10:50:02 +0530 Subject: [PATCH 374/698] Removed the dependency of common exp for mdst_spectrum_fx and spectrum_fx, fb_tbe_enc exponent correction --- lib_com/ivas_prot_fx.h | 3 +- lib_enc/ivas_core_enc_fx.c | 2 +- lib_enc/ivas_mct_enc_mct_fx.c | 8 +- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 140 +++++++++++------------ lib_enc/ivas_stereo_mdct_stereo_enc_fx.c | 39 ++++--- lib_enc/prot_fx_enc.h | 5 +- lib_enc/swb_tbe_enc_fx.c | 7 +- 7 files changed, 103 insertions(+), 101 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 8da9cd9ac..17566e3cb 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -2711,7 +2711,8 @@ void stereo_coder_tcx_fx( Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse spectrum */ Word32 *inv_mdst_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */ const Word16 mct_on, /* i : flag mct block (1) or stereo (0) */ - Word16 q_spec ); + Word16 exp_spec, + Word16 exp_mdst_spec ); // bw_detect_fx.c Word16 set_bw_mct_fx( diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index 066d105d5..f5d3c4d73 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -744,7 +744,7 @@ ivas_error ivas_core_enc_fx( IF( EQ_16( st->extl, FB_TBE ) ) { /* FB TBE encoder */ - fb_tbe_enc_ivas_fx( st, st->input_fx, fb_exc_fx, Q_fb_exc ); + fb_tbe_enc_ivas_fx( st, st->input_fx, fb_exc_fx, Q_fb_exc, st->q_inp ); } } } diff --git a/lib_enc/ivas_mct_enc_mct_fx.c b/lib_enc/ivas_mct_enc_mct_fx.c index 66bdb1235..aed6aefa4 100644 --- a/lib_enc/ivas_mct_enc_mct_fx.c +++ b/lib_enc/ivas_mct_enc_mct_fx.c @@ -385,7 +385,7 @@ static void getBlockValues_fx( p_st[0] = sts[ch1]; p_st[1] = sts[ch2]; - stereo_coder_tcx_fx( hBlock->hStereoMdct, p_st, hBlock->mask, p_mdst_spectrum, p_inv_spectrum, p_inv_mdst_spectrum, 1, q_spec ); + stereo_coder_tcx_fx( hBlock->hStereoMdct, p_st, hBlock->mask, p_mdst_spectrum, p_inv_spectrum, p_inv_mdst_spectrum, 1, sub( 31, q_spec ), sub( 31, q_spec ) ); test(); test(); @@ -1073,6 +1073,7 @@ void mctStereoIGF_enc_fx( EQ_16( hMCT->hBlockData[b]->hStereoMdct->mdct_stereo_mode[n], SMDCT_BW_MS ) ) { Word16 exp_powerSpec_tmp[CPE_CHANNELS]; + Word16 exp_p_inv_spectrum[CPE_CHANNELS]; FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { s = s_min( s, sub( 31, p_st[ch]->hTcxEnc->spectrum_e[n] ) ); @@ -1097,10 +1098,13 @@ void mctStereoIGF_enc_fx( } exp_powerSpec_tmp[0] = p_st[0]->hTcxEnc->spectrum_e[0]; exp_powerSpec_tmp[1] = p_st[1]->hTcxEnc->spectrum_e[0]; + exp_p_inv_spectrum[0] = exp_p_inv_spectrum[1] = p_st[0]->hTcxEnc->spectrum_e[0]; + move16(); + move16(); move16(); move16(); ProcessStereoIGF_fx( hMCT->hBlockData[b]->hStereoMdct, p_st, hMCT->hBlockData[b]->mask, p_orig_spectrum_fx, q_origSpec, q_origSpec, p_powerSpec_fx, exp_powerSpec_tmp, - p_powerSpecMsInv_fx, exp_powerSpec_tmp, p_inv_spectrum_fx, exp_powerSpec_tmp, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 ); + p_powerSpecMsInv_fx, exp_powerSpec_tmp, p_inv_spectrum_fx, exp_p_inv_spectrum, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 ); } ELSE { diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 46134a270..39e77050b 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -152,8 +152,8 @@ void stereo_mdct_core_enc_fx( Word32 *p_mdst_spectrum_long_fx[CPE_CHANNELS]; Word32 mdst_spectrum_long_fx[CPE_CHANNELS][N_MAX]; Word32 *mdst_spectrum_fx[CPE_CHANNELS][NB_DIV]; - Word16 exp_powSpecMsInv[MCT_MAX_CHANNELS], q_spec, tmp_s; - Word16 tmp_q_powSpecInv[N_MAX], *tmp_q_psi[2]; + Word16 exp_powSpecMsInv[MCT_MAX_CHANNELS]; + Word16 tmp_q_powSpecInv[N_MAX], *exp_powSpecInv[2]; Word64 W_tmp; Encoder_State *st, **sts; STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct; @@ -188,8 +188,8 @@ void stereo_mdct_core_enc_fx( set16_fx( tmp_q_powSpecInv, 63, N_MAX ); - tmp_q_psi[0] = tmp_q_powSpecInv; - tmp_q_psi[1] = &tmp_q_powSpecInv[N_TCX10_MAX]; + exp_powSpecInv[0] = tmp_q_powSpecInv; + exp_powSpecInv[1] = &tmp_q_powSpecInv[N_TCX10_MAX]; sts = hCPE->hCoreCoder; hStereoMdct = hCPE->hStereoMdct; @@ -343,61 +343,59 @@ void stereo_mdct_core_enc_fx( IF( !hStereoMdct->isSBAStereoMode ) { /* Common q for mdst_spectrum and spectrum */ - Word16 k; - q_spec = 0; + Word16 exp1, exp2; Word16 length; - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - FOR( k = 0; k <= ( ( sts[ch]->core == TCX_20_CORE ) ? 1 : NB_DIV ) - 1; k++ ) - { - q_spec = s_max( q_spec, sts[ch]->hTcxEnc->spectrum_e[k] ); - q_spec = s_max( q_spec, mdst_spectrum_e[ch][k] ); - } - } - q_spec = sub( Q31, q_spec ); /*find headroom to increase precision*/ - Word16 hdrm_min = MAX_16; + exp1 = MIN_16; + exp2 = MIN_16; + move16(); move16(); FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { length = sts[ch]->hTcxEnc->spectrum_length; move16(); - IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) + if ( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) { length = shr( length, 1 ); } - hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[0], length ) ); - hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][0], length ) ); + exp1 = s_max( exp1, sub( sts[ch]->hTcxEnc->spectrum_e[0], L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[0], length ) ) ); + exp2 = s_max( exp2, sub( mdst_spectrum_e[ch][0], L_norm_arr( mdst_spectrum_fx[ch][0], length ) ) ); IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) { - hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[1], length ) ); - hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][1], length ) ); + exp1 = s_max( exp1, sub( sts[ch]->hTcxEnc->spectrum_e[1], L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[1], length ) ) ); + exp2 = s_max( exp2, sub( mdst_spectrum_e[ch][1], L_norm_arr( mdst_spectrum_fx[ch][1], length ) ) ); } } - q_spec = sub( add( hdrm_min, q_spec ), 1 ); /* 1 guard bit to avoid over-flows in stereo_coder_tcx_fx */ + exp1 = add( exp1, 1 ); /* 1 guard bit to avoid over-flows in stereo_coder_tcx_fx */ + exp2 = add( exp2, 1 ); /* 1 guard bit to avoid over-flows in stereo_coder_tcx_fx */ FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { length = sts[ch]->hTcxEnc->spectrum_length; move16(); - IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) + if ( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) { length = shr( length, 1 ); } - FOR( k = 0; k <= ( ( sts[ch]->core == TCX_20_CORE ) ? 1 : NB_DIV ) - 1; k++ ) + + scale_sig32( sts[ch]->hTcxEnc->spectrum_fx[0], length, sub( sts[ch]->hTcxEnc->spectrum_e[0], exp1 ) ); /* exp1 */ + sts[ch]->hTcxEnc->spectrum_e[0] = exp1; + scale_sig32( mdst_spectrum_fx[ch][0], length, sub( mdst_spectrum_e[ch][0], exp2 ) ); /* exp2 */ + mdst_spectrum_e[ch][0] = exp2; + IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) { - Scale_sig32( sts[ch]->hTcxEnc->spectrum_fx[k], length, sub( q_spec, sub( Q31, sts[ch]->hTcxEnc->spectrum_e[k] ) ) ); /* q_spec */ - sts[ch]->hTcxEnc->spectrum_e[k] = sub( Q31, q_spec ); - Scale_sig32( mdst_spectrum_fx[ch][k], length, sub( q_spec, sub( Q31, mdst_spectrum_e[ch][k] ) ) ); /* q_spec */ - mdst_spectrum_e[ch][k] = sub( Q31, q_spec ); + scale_sig32( sts[ch]->hTcxEnc->spectrum_fx[1], length, sub( sts[ch]->hTcxEnc->spectrum_e[1], exp1 ) ); /* exp1 */ + sts[ch]->hTcxEnc->spectrum_e[1] = exp1; + scale_sig32( mdst_spectrum_fx[ch][1], length, sub( mdst_spectrum_e[ch][1], exp2 ) ); /* exp2 */ + mdst_spectrum_e[ch][1] = exp2; } } - stereo_coder_tcx_fx( hStereoMdct, sts, ms_mask, mdst_spectrum_fx, inv_spectrum_fx, inv_mdst_spectrum_fx, 0, q_spec ); - exp_inv_spectrum[0] = exp_inv_spectrum[1] = sub( Q31, q_spec ); + stereo_coder_tcx_fx( hStereoMdct, sts, ms_mask, mdst_spectrum_fx, inv_spectrum_fx, inv_mdst_spectrum_fx, 0, sts[0]->hTcxEnc->spectrum_e[0], mdst_spectrum_e[0][0] ); + exp_inv_spectrum[0] = exp_inv_spectrum[1] = sts[0]->hTcxEnc->spectrum_e[0]; move16(); move16(); } @@ -406,10 +404,13 @@ void stereo_mdct_core_enc_fx( * Power spectrum calculation *---------------------------------------------------------------*/ Word16 length, exp, shift1, shift2, norm; - Word32 mdct, mdst; + Word32 mdct, mdst, imdct, imdst; FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { + L_subframeTCX = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 ); /* Q0 */ + nSubframes = NB_DIV; + move16(); IF( EQ_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) { nSubframes = 1; @@ -417,12 +418,6 @@ void stereo_mdct_core_enc_fx( move16(); move16(); } - ELSE - { - nSubframes = NB_DIV; - move16(); - L_subframeTCX = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 ); /* Q0 */ - } /* in MCT only relevant for bitrate switching from non-MCT bitrates */ IF( EQ_16( sts[ch]->last_core, ACELP_CORE ) ) @@ -432,8 +427,6 @@ void stereo_mdct_core_enc_fx( FOR( n = 0; n < nSubframes; n++ ) { - q_spec = sub( 31, sts[ch]->hTcxEnc->spectrum_e[n] ); - IF( sts[ch]->hTcxEnc->tns_ms_flag[n] ) { exp = add( s_max( mdst_spectrum_e[ch][n], sts[ch]->hTcxEnc->spectrum_e[n] ), 1 ); @@ -443,16 +436,18 @@ void stereo_mdct_core_enc_fx( /* power spectrum: MDCT^2 + MDST^2 */ FOR( i = 0; i < L_subframeTCX; i++ ) { - W_tmp = W_mac_32_32( W_mult_32_32( inv_mdst_spectrum_fx[ch][n][i], inv_mdst_spectrum_fx[ch][n][i] ), inv_spectrum_fx[ch][n][i], inv_spectrum_fx[ch][n][i] ); /* 2*q_spec+1 */ - tmp_s = W_norm( W_tmp ); - W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */ - powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */ - tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + mdst = L_shl( mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp + mdct = L_shl( sts[ch]->hTcxEnc->spectrum_fx[n][i], shift2 ); // exp: exp + imdst = L_shl( inv_mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp + imdct = L_shl( inv_spectrum_fx[ch][n][i], shift2 ); // exp: exp + + W_tmp = W_mac_32_32( W_mult_32_32( imdct, imdct ), imdst, imdst ); // exp: 2*exp + norm = W_norm( W_tmp ); + powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*exp-norm + exp_powSpecInv[n][i] = sub( shl( exp, 1 ), norm ); move32(); move16(); - mdst = L_shl( mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp - mdct = L_shl( sts[ch]->hTcxEnc->spectrum_fx[n][i], shift2 ); // exp: exp powerSpec64[ch][i + n * L_subframeTCX] = W_mac_32_32( W_mult_32_32( mdct, mdct ), mdst, mdst ); // exp: 2*exp move64(); } @@ -464,32 +459,28 @@ void stereo_mdct_core_enc_fx( IF( NE_16( hStereoMdct->mdct_stereo_mode[n], SMDCT_DUAL_MONO ) ) { /* power spectrum: MDCT^2 + MDST^2 */ - W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][0], inv_spectrum_fx[ch][n][0] ); /* 2*q_spec+1 */ - tmp_s = W_norm( W_tmp ); - W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */ - powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */ - tmp_q_psi[n][0] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][0], inv_spectrum_fx[ch][n][0] ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n] + norm = W_norm( W_tmp ); + powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n]-norm + exp_powSpecInv[n][0] = sub( shl( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), norm ); move32(); move16(); FOR( i = 1; i < L_subframeTCX - 1; i++ ) { - Word32 mdst_fx = L_sub( inv_spectrum_fx[ch][n][i + 1], inv_spectrum_fx[ch][n][i - 1] ); /* An MDST estimate q_spec*/ - - W_tmp = W_mac_32_32( W_mult_32_32( mdst_fx, mdst_fx ), inv_spectrum_fx[ch][n][i], inv_spectrum_fx[ch][n][i] ); /* 2*q_spec+1 */ - tmp_s = W_norm( W_tmp ); - W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */ - powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */ - tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + Word32 mdst_fx = L_sub( inv_spectrum_fx[ch][n][i + 1], inv_spectrum_fx[ch][n][i - 1] ); // exp: sts[ch]->hTcxEnc->spectrum_e[n] + W_tmp = W_mac_32_32( W_mult_32_32( mdst_fx, mdst_fx ), inv_spectrum_fx[ch][n][i], inv_spectrum_fx[ch][n][i] ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n] + norm = W_norm( W_tmp ); + powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n]-norm + exp_powSpecInv[n][i] = sub( shl( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), norm ); move32(); move16(); } - W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][L_subframeTCX - 1], inv_spectrum_fx[ch][n][L_subframeTCX - 1] ); /* 2*q_spec+1 */ - tmp_s = W_norm( W_tmp ); - W_tmp = W_shl( W_tmp, tmp_s ); /* 2*q_spec+1+tmp_s */ - powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_tmp ); /* 2*q_spec+1+tmp_s-32 */ - tmp_q_psi[n][L_subframeTCX - 1] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][L_subframeTCX - 1], inv_spectrum_fx[ch][n][L_subframeTCX - 1] ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n] + norm = W_norm( W_tmp ); + powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n]-norm + exp_powSpecInv[n][L_subframeTCX - 1] = sub( shl( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), norm ); move32(); move16(); } @@ -517,30 +508,31 @@ void stereo_mdct_core_enc_fx( } /* Aligning the Q-factors */ + exp = MIN_16; + move16(); + FOR( n = 0; n < nSubframes; n++ ) { - Word16 q_temp = Q31; - move16(); - FOR( n = 0; n < nSubframes; n++ ) + FOR( i = 0; i < L_subframeTCX; i++ ) { - FOR( i = 0; i < L_subframeTCX; i++ ) + if ( powerSpecMsInv_fx[ch][n][i] != 0 ) { - if ( powerSpecMsInv_fx[ch][n][i] != 0 ) - { - q_temp = s_min( q_temp, tmp_q_psi[n][i] ); - } + exp = s_max( exp, exp_powSpecInv[n][i] ); } } + } + IF( NE_16( exp, MIN_16 ) ) + { FOR( n = 0; n < nSubframes; n++ ) { FOR( i = 0; i < L_subframeTCX; i++ ) { - powerSpecMsInv_fx[ch][n][i] = L_shr_sat( powerSpecMsInv_fx[ch][n][i], sub( tmp_q_psi[n][i], q_temp ) ); + powerSpecMsInv_fx[ch][n][i] = L_shl( powerSpecMsInv_fx[ch][n][i], sub( exp_powSpecInv[n][i], exp ) ); move32(); } } - exp_powSpecMsInv[ch] = sub( Q31, q_temp ); - move16(); } + exp_powSpecMsInv[ch] = exp; + move16(); } FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) diff --git a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c index b1eae7862..2f1b7d6c8 100644 --- a/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_stereo_enc_fx.c @@ -190,7 +190,8 @@ void stereo_coder_tcx_fx( Word32 *inv_mdst_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */ // Q( q_spec ) (same as spectrum buffer in hTcxEnc) const Word16 mct_on, /* i : flag mct block (1) or stereo (0) Q0*/ - Word16 q_spec ) + Word16 exp_spec, + Word16 exp_mdct_spec ) { STEREO_MDCT_BAND_PARAMETERS *sfbConf = NULL; Word32 nrgRatio_fx[CPE_CHANNELS]; @@ -255,8 +256,8 @@ void stereo_coder_tcx_fx( tmp = Inv16( extract_h( nrgRatio_fx[k] ), &e_tmp ); /* Q15-e_tmp */ tmp = shl( tmp, e_tmp ); /* Q15 */ - v_multc_fixed_16( sts[1]->hTcxEnc->spectrum_fx[k], tmp, sts[1]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* Q31-spectrum_e[k] */ - v_multc_fixed_16( mdst_spectrum_fx[1][k], tmp, mdst_spectrum_fx[1][k], L_frameTCX ); /* q_spec */ + v_multc_fixed_16( sts[1]->hTcxEnc->spectrum_fx[k], tmp, sts[1]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* exp: exp_spec */ + v_multc_fixed_16( mdst_spectrum_fx[1][k], tmp, mdst_spectrum_fx[1][k], L_frameTCX ); /* exp: exp_mdct_spec */ } ELSE IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( nrgRatio_fx[k], nrgRatio_e[k], ONE_IN_Q27, 4 ), -1 ) && LT_16( k, EQ_16( sts[0]->core, TCX_20_CORE ) ? 1 : NB_DIV ) ) { @@ -264,8 +265,8 @@ void stereo_coder_tcx_fx( L_frameTCX = idiv1616( L_frameTCX, ( sts[0]->core == TCX_20_CORE ) ? 1 : NB_DIV ); /* Q0 */ /* This operation is resulting in some high MLDs in fixed point. */ - v_multc_fixed_16( sts[0]->hTcxEnc->spectrum_fx[k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), sts[0]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* Q31-spectrum_e[k] */ - v_multc_fixed_16( mdst_spectrum_fx[0][k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), mdst_spectrum_fx[0][k], L_frameTCX ); /* q_spec */ + v_multc_fixed_16( sts[0]->hTcxEnc->spectrum_fx[k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), sts[0]->hTcxEnc->spectrum_fx[k], L_frameTCX ); /* exp: exp_spec */ + v_multc_fixed_16( mdst_spectrum_fx[0][k], extract_l( L_shr( nrgRatio_fx[k], 16 - nrgRatio_e[k] ) ), mdst_spectrum_fx[0][k], L_frameTCX ); /* exp: exp_mdct_spec */ } } } @@ -356,7 +357,7 @@ void stereo_coder_tcx_fx( move16(); const Word16 sfbWidth = sub( endLine, startLine ); - nrgRatio_e[0] = nrgRatio_e[1] = sub( Q31, q_spec ); + nrgRatio_e[0] = nrgRatio_e[1] = exp_spec; move16(); move16(); @@ -370,10 +371,12 @@ void stereo_coder_tcx_fx( { Word32 tmp_fx; Word16 tmp_e; - tmp_e = sub( Q31, q_spec ); + tmp_e = exp_mdct_spec; + move16(); tmp_fx = sum2_32_fx( &mdst_spectrum_fx[0][k][startLine], sfbWidth, &tmp_e ); /* Q31-tmp_e */ nrgRatio_fx[0] = BASOP_Util_Add_Mant32Exp( nrgRatio_fx[0], nrgRatio_e[0], tmp_fx, tmp_e, &nrgRatio_e[0] ); /* Q31-nrgRatio_e[0] */ - tmp_e = sub( Q31, q_spec ); + tmp_e = exp_mdct_spec; + move16(); tmp_fx = sum2_32_fx( &mdst_spectrum_fx[1][k][startLine], sfbWidth, &tmp_e ); /* Q31-tmp_e */ nrgRatio_fx[1] = BASOP_Util_Add_Mant32Exp( nrgRatio_fx[1], nrgRatio_e[1], tmp_fx, tmp_e, &nrgRatio_e[1] ); /* Q31-nrgRatio_e[1] */ } @@ -426,15 +429,15 @@ void stereo_coder_tcx_fx( move32(); - v_multc_fixed( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[0], &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* q_spec+30-31 */ - v_multc_fixed( &mdst_spectrum_fx[0][k][startLine], nrgRatio_fx[0], &mdst_spectrum_fx[0][k][startLine], sfbWidth ); /* q_spec+30-31 */ - scale_sig32( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec - scale_sig32( &mdst_spectrum_fx[0][k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec + v_multc_fixed( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[0], &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* exp: exp_spec+1 */ + v_multc_fixed( &mdst_spectrum_fx[0][k][startLine], nrgRatio_fx[0], &mdst_spectrum_fx[0][k][startLine], sfbWidth ); /* exp: exp_mdct_spec+1 */ + scale_sig32( &sts[0]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // exp: exp_spec + scale_sig32( &mdst_spectrum_fx[0][k][startLine], sfbWidth, Q1 ); // exp: exp_mdct_spec - v_multc_fixed( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[1], &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* q_spec+30-31 */ - v_multc_fixed( &mdst_spectrum_fx[1][k][startLine], nrgRatio_fx[1], &mdst_spectrum_fx[1][k][startLine], sfbWidth ); /* q_spec+30-31 */ - scale_sig32( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec - scale_sig32( &mdst_spectrum_fx[1][k][startLine], sfbWidth, Q1 ); // Scaling back to q_spec + v_multc_fixed( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], nrgRatio_fx[1], &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth ); /* exp: exp_spec+1 */ + v_multc_fixed( &mdst_spectrum_fx[1][k][startLine], nrgRatio_fx[1], &mdst_spectrum_fx[1][k][startLine], sfbWidth ); /* exp: exp_mdct_spec+1 */ + scale_sig32( &sts[1]->hTcxEnc->spectrum_fx[k][startLine], sfbWidth, Q1 ); // exp: exp_spec + scale_sig32( &mdst_spectrum_fx[1][k][startLine], sfbWidth, Q1 ); // exp: exp_mdct_spec } } } @@ -469,11 +472,11 @@ void stereo_coder_tcx_fx( nAvailBitsMS[k] = idiv1616( nAvailBitsMS[k], nSubframes ); /* Q0 */ move16(); - MsStereoDecision_fx( sfbConf, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], inv_spectrum_fx[0][k], inv_spectrum_fx[1][k], q_spec, &hStereoMdct->mdct_stereo_mode[k], &ms_mask[k][0], nAvailBitsMS[k] ); + MsStereoDecision_fx( sfbConf, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], inv_spectrum_fx[0][k], inv_spectrum_fx[1][k], sub( Q31, exp_spec ), &hStereoMdct->mdct_stereo_mode[k], &ms_mask[k][0], nAvailBitsMS[k] ); IF( sts[0]->igf ) { - IGFEncStereoEncoder_fx( sfbConf, sts[0]->hIGFEnc, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], q_spec, &ms_mask[k][0], + IGFEncStereoEncoder_fx( sfbConf, sts[0]->hIGFEnc, sts[0]->hTcxEnc->spectrum_fx[k], sts[1]->hTcxEnc->spectrum_fx[k], sub( Q31, exp_spec ), &ms_mask[k][0], &hStereoMdct->IGFStereoMode[k], hStereoMdct->mdct_stereo_mode[k], (Word16) EQ_16( sts[0]->core, TCX_20_CORE ), (Word16) EQ_16( sts[0]->last_core, ACELP_CORE ) ); } ELSE diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index d9389eb9c..73ec00cbd 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -216,9 +216,10 @@ void fb_tbe_enc_fx( void fb_tbe_enc_ivas_fx( Encoder_State *st, /* i/o: encoder state structure */ - const Word16 new_input[], /* i : i speech at 48 kHz sample rate Q0*/ + const Word16 new_input[], /* i : i speech at 48 kHz sample rate Q_new_input*/ const Word16 fb_exc[], /* i : FB excitation from the SWB part Q_fb_exc*/ - Word16 Q_fb_exc ); + Word16 Q_fb_exc, + Word16 Q_new_input ); void fb_tbe_reset_enc_fx( Word32 elliptic_bpf_2_48k_mem_fx[][4], diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 316a5b549..633ede535 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -7415,9 +7415,10 @@ void fb_tbe_enc_fx( void fb_tbe_enc_ivas_fx( Encoder_State *st, /* i/o: encoder state structure */ - const Word16 new_input[], /* i : input speech at 48 kHz sample rate Q0 */ + const Word16 new_input[], /* i : input speech at 48 kHz sample rate Q_new_input */ const Word16 fb_exc[], /* i : FB excitation from the SWB part Q_fb_exc */ - Word16 Q_fb_exc ) + Word16 Q_fb_exc, + Word16 Q_new_input ) { Word16 ratio; Word16 tmp_vec[L_FRAME48k]; @@ -7446,7 +7447,7 @@ void fb_tbe_enc_ivas_fx( } Copy_Scale_sig( new_input - NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_fhb_new, L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), exp_temp ); - + exp_temp = add( exp_temp, Q_new_input ); IF( EQ_16( st->element_mode, IVAS_CPE_DFT ) ) { elliptic_bpf_48k_generic_fx( input_fhb_new, &exp_temp, tmp_vec, hBWE_TD->elliptic_bpf_2_48k_mem_fx, hBWE_TD->elliptic_bpf_2_48k_mem_fx_Q, full_band_bpf_2_fx ); -- GitLab From 85fb64b8f0899b9ad53b9f293bb315ec8bf055a5 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 21 Apr 2025 10:53:34 +0530 Subject: [PATCH 375/698] Clang formatting --- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 39e77050b..aa762a77c 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -438,8 +438,8 @@ void stereo_mdct_core_enc_fx( { mdst = L_shl( mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp mdct = L_shl( sts[ch]->hTcxEnc->spectrum_fx[n][i], shift2 ); // exp: exp - imdst = L_shl( inv_mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp - imdct = L_shl( inv_spectrum_fx[ch][n][i], shift2 ); // exp: exp + imdst = L_shl( inv_mdst_spectrum_fx[ch][n][i], shift1 ); // exp: exp + imdct = L_shl( inv_spectrum_fx[ch][n][i], shift2 ); // exp: exp W_tmp = W_mac_32_32( W_mult_32_32( imdct, imdct ), imdst, imdst ); // exp: 2*exp norm = W_norm( W_tmp ); -- GitLab From 9d4b8adbad35b11b2440cbf1ad9aae2c7bf9f925 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 21 Apr 2025 12:04:36 +0530 Subject: [PATCH 376/698] Fix for 3GPP issue 1254: BASOP encoder OSBA 256 kbps: broken signal envelope Link #1254 --- lib_enc/ivas_mct_enc_mct_fx.c | 37 +++++++++-------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/lib_enc/ivas_mct_enc_mct_fx.c b/lib_enc/ivas_mct_enc_mct_fx.c index aed6aefa4..1a820ac96 100644 --- a/lib_enc/ivas_mct_enc_mct_fx.c +++ b/lib_enc/ivas_mct_enc_mct_fx.c @@ -997,7 +997,7 @@ void mctStereoIGF_enc_fx( Word32 *p_powerSpec_fx[NB_DIV]; Word16 b, nSubframes, L_subframeTCX; - Word16 p_ch[2], n, ch, ch1, ch2, s = 31; + Word16 p_ch[2], n, ch, ch1, ch2; Word16 q_pSI_ch[2]; Word16 q_pS_ch[2]; Encoder_State *p_st[NB_DIV]; @@ -1072,39 +1072,20 @@ void mctStereoIGF_enc_fx( IF( NE_16( hMCT->hBlockData[b]->hStereoMdct->mdct_stereo_mode[n], hMCT->hBlockData[b]->hStereoMdct->IGFStereoMode[n] ) || EQ_16( hMCT->hBlockData[b]->hStereoMdct->mdct_stereo_mode[n], SMDCT_BW_MS ) ) { - Word16 exp_powerSpec_tmp[CPE_CHANNELS]; - Word16 exp_p_inv_spectrum[CPE_CHANNELS]; - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - s = s_min( s, sub( 31, p_st[ch]->hTcxEnc->spectrum_e[n] ) ); - s = s_min( s, q_pS_ch[ch] ); - s = s_min( s, q_pSI_ch[ch] ); - } + Word16 exp_powerSpec_fx[CPE_CHANNELS], exp_powerSpecMsInv_fx[CPE_CHANNELS], exp_inv_spectrum_fx[CPE_CHANNELS]; + FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { - scale_sig32( p_st[ch]->hTcxEnc->spectrum_fx[0], N_MAX, sub( s, sub( 31, p_st[ch]->hTcxEnc->spectrum_e[0] ) ) ); - scale_sig32( p_inv_spectrum_fx[ch][0], L_FRAME48k, sub( s, sub( 31, p_st[ch]->hTcxEnc->spectrum_e[0] ) ) ); - p_st[ch]->hTcxEnc->spectrum_e[0] = sub( 31, s ); - p_st[ch]->hTcxEnc->spectrum_e[1] = sub( 31, s ); - move16(); + exp_powerSpec_fx[ch] = sub( Q31, q_pS_ch[ch] ); + exp_powerSpecMsInv_fx[ch] = sub( Q31, q_pSI_ch[ch] ); + exp_inv_spectrum_fx[ch] = p_st[ch]->hTcxEnc->spectrum_e[n]; move16(); - - scale_sig32( p_powerSpecMsInv_fx[ch][0], L_FRAME48k, sub( s, q_pSI_ch[ch] ) ); - scale_sig32( &p_powerSpec_fx[ch][0], sts[ch]->hTcxEnc->L_frameTCX, sub( s, q_pS_ch[ch] ) ); - q_powerSpec[ch1] = s; - q_powerSpec[ch2] = s; move16(); move16(); } - exp_powerSpec_tmp[0] = p_st[0]->hTcxEnc->spectrum_e[0]; - exp_powerSpec_tmp[1] = p_st[1]->hTcxEnc->spectrum_e[0]; - exp_p_inv_spectrum[0] = exp_p_inv_spectrum[1] = p_st[0]->hTcxEnc->spectrum_e[0]; - move16(); - move16(); - move16(); - move16(); - ProcessStereoIGF_fx( hMCT->hBlockData[b]->hStereoMdct, p_st, hMCT->hBlockData[b]->mask, p_orig_spectrum_fx, q_origSpec, q_origSpec, p_powerSpec_fx, exp_powerSpec_tmp, - p_powerSpecMsInv_fx, exp_powerSpec_tmp, p_inv_spectrum_fx, exp_p_inv_spectrum, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 ); + + ProcessStereoIGF_fx( hMCT->hBlockData[b]->hStereoMdct, p_st, hMCT->hBlockData[b]->mask, p_orig_spectrum_fx, q_origSpec, q_origSpec, p_powerSpec_fx, exp_powerSpec_fx, + p_powerSpecMsInv_fx, exp_powerSpecMsInv_fx, p_inv_spectrum_fx, exp_inv_spectrum_fx, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 ); } ELSE { -- GitLab From 86a16ee117dcb1d7e236574cc9d6d13faaa91cc6 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 21 Apr 2025 12:09:33 +0530 Subject: [PATCH 377/698] Fix for complexity measure crash - [ltv48_OMASA_2ISM_1TC_OMASA_ISM2_1TC_b16_4_wb_cbr_fer_ep_10pct_fer_g192.192] --- lib_enc/ivas_masa_enc_fx.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index 5c5de97ab..ceb5dec1d 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -2302,7 +2302,7 @@ static void reduce_metadata_further_fx( Word16 bandEnergy_exp, shift; UWord8 mergeOverFreqBands; Word32 meanRatio; - Word16 tmp, tmp2; + Word16 tmp, tmp2, q_totalEnergySum; numCodingBands = hMasa->config.numCodingBands; test(); @@ -2373,6 +2373,7 @@ static void reduce_metadata_further_fx( tmp2 = s_min( 32, tmp2 ); totalEnergySum = W_extract_h( W_shl( W_tmp, tmp2 ) ); tmp2 = sub( tmp2, 32 ); + q_totalEnergySum = add( hMasa->data.q_energy, tmp2 ); /* Determine onsets */ hMasa->data.onset_detector_1_fx = Mpy_32_32( hMasa->data.onset_detector_1_fx, LOWBITRATE_ONSET_ALPHA_Q31 ); @@ -2380,12 +2381,17 @@ static void reduce_metadata_further_fx( tmp = hMasa->data.q_onset_detector; move16(); - IF( BASOP_Util_Cmp_Mant32Exp( hMasa->data.onset_detector_1_fx, sub( 31, hMasa->data.q_onset_detector ), totalEnergySum, sub( 31, hMasa->data.q_energy ) ) < 0 ) + IF( BASOP_Util_Cmp_Mant32Exp( hMasa->data.onset_detector_1_fx, sub( 31, hMasa->data.q_onset_detector ), totalEnergySum, sub( 31, q_totalEnergySum ) ) < 0 ) { hMasa->data.onset_detector_1_fx = totalEnergySum; // hMasa->data.q_energy hMasa->data.q_onset_detector = add( hMasa->data.q_energy, tmp2 ); move32(); move16(); + + shift = norm_l( hMasa->data.onset_detector_2_fx ); + hMasa->data.onset_detector_2_fx = L_shl( hMasa->data.onset_detector_2_fx, shift ); + move32(); + tmp = add( tmp, shift ); } IF( LT_16( tmp, hMasa->data.q_onset_detector ) ) { -- GitLab From ec8f88dc5e91646b110a2449cfe1303df024aae5 Mon Sep 17 00:00:00 2001 From: malenov Date: Tue, 15 Apr 2025 12:42:10 +0200 Subject: [PATCH 378/698] align the usage of IND_SHB_RES_GS with the float code --- lib_com/cnst.h | 4 ++++ lib_com/options.h | 1 + lib_enc/swb_tbe_enc_fx.c | 8 ++++++++ 3 files changed, 13 insertions(+) diff --git a/lib_com/cnst.h b/lib_com/cnst.h index 379dd7c85..ae84dbd2c 100644 --- a/lib_com/cnst.h +++ b/lib_com/cnst.h @@ -532,12 +532,16 @@ enum IND_STEREO_ICBWE_MSFLAG, IND_SHB_ENER_SF, IND_SHB_RES_GS, +#ifndef FIX_1486_IND_SHB_RES IND_SHB_RES_GS1, IND_SHB_RES_GS2, IND_SHB_RES_GS3, IND_SHB_RES_GS4, IND_SHB_RES_GS5, IND_SHB_VF, +#else + IND_SHB_VF = IND_SHB_RES_GS + 5, +#endif IND_SHB_LSF, IND_SHB_MIRROR = IND_SHB_LSF + 5, IND_SHB_GRID, diff --git a/lib_com/options.h b/lib_com/options.h index daa609ed4..3f158a8e8 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -91,6 +91,7 @@ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ +#define FIX_1486_IND_SHB_RES /* VA: Fix for issue 1486: align the usage of IND_SHB_RES_GS indices with float code */ #define TEST_HR diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index 633ede535..acfc5043c 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -5683,7 +5683,11 @@ static void Quant_shb_res_gshape_fx( move16(); IF( NE_16( st_fx->codec_mode, MODE2 ) ) { +#ifdef FIX_1486_IND_SHB_RES + push_indice( st_fx->hBstr, IND_SHB_RES_GS + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS ); +#else push_indice( st_fx->hBstr, IND_SHB_RES_GS1 + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS ); +#endif } } } @@ -5719,7 +5723,11 @@ static void Quant_shb_res_gshape_ivas_fx( } ELSE { +#ifdef FIX_1486_IND_SHB_RES + push_indice( st->hBstr, IND_SHB_RES_GS + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS ); +#else push_indice( st->hBstr, IND_SHB_RES_GS1 + i, idxSubGain_fx[i], NUM_BITS_SHB_RES_GS ); +#endif } } } -- GitLab From 1c32f217ea08b6ddcbfc02d2d0c870ee8769de81 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 21 Apr 2025 16:38:00 +0530 Subject: [PATCH 379/698] Q-mismatch bug fix for ProcessIGF in mct path --- lib_dec/ivas_dirac_dec_fx.c | 4 ++-- lib_enc/ext_sig_ana_fx.c | 2 +- lib_enc/ivas_mct_core_enc_fx.c | 2 +- lib_enc/ivas_mct_enc_mct_fx.c | 4 ++-- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 4 ++-- lib_enc/prot_fx_enc.h | 3 ++- lib_enc/tcx_utils_enc_fx.c | 5 +++-- 7 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 10b8059b9..9c319489e 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2186,7 +2186,7 @@ void ivas_dirac_dec_render_sf_fx( move16(); - FOR( Word16 i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) { @@ -2195,7 +2195,7 @@ void ivas_dirac_dec_render_sf_fx( } } - FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) { FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) { diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c index 200e7e8ed..eeeb294b4 100644 --- a/lib_enc/ext_sig_ana_fx.c +++ b/lib_enc/ext_sig_ana_fx.c @@ -1401,7 +1401,7 @@ void core_signal_analysis_high_bitrate_ivas_fx( IF( st->igf ) { Word16 q_spectrum = sub( Q31, hTcxEnc->spectrum_e[frameno] ); - ProcessIGF_ivas_fx( st, N_MAX + L_MDCT_OVLP_MAX, hTcxEnc->spectrum_fx[frameno], hTcxEnc->spectrum_fx[frameno], &q_spectrum, powerSpec, powerSpec_e, transform_type[frameno] == TCX_20, frameno, 0, vad_hover_flag ); + ProcessIGF_ivas_fx( st, N_MAX + L_MDCT_OVLP_MAX, hTcxEnc->spectrum_fx[frameno], &q_spectrum, hTcxEnc->spectrum_fx[frameno], q_spectrum, powerSpec, powerSpec_e, transform_type[frameno] == TCX_20, frameno, 0, vad_hover_flag ); } } } diff --git a/lib_enc/ivas_mct_core_enc_fx.c b/lib_enc/ivas_mct_core_enc_fx.c index 548a56717..0ab232dd9 100644 --- a/lib_enc/ivas_mct_core_enc_fx.c +++ b/lib_enc/ivas_mct_core_enc_fx.c @@ -646,7 +646,7 @@ void ivas_mct_core_enc_fx( q_spectrum = sub( 31, st->hTcxEnc->spectrum_e[n] ); set16_fx( exp_powerSpec[ch], sub( Q31, q_powSpec[ch] ), N_MAX + L_MDCT_OVLP_MAX ); - ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 ); + ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_origSpec, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 ); st->hIGFEnc->spec_be_igf_e = sub( 31, q_origSpec ); st->hTcxEnc->spectrum_e[n] = sub( 31, q_spectrum ); diff --git a/lib_enc/ivas_mct_enc_mct_fx.c b/lib_enc/ivas_mct_enc_mct_fx.c index aed6aefa4..67f3b3d47 100644 --- a/lib_enc/ivas_mct_enc_mct_fx.c +++ b/lib_enc/ivas_mct_enc_mct_fx.c @@ -1122,7 +1122,7 @@ void mctStereoIGF_enc_fx( q_spectrum = sub( 31, st->hTcxEnc->spectrum_e[n] ); set16_fx( exp_powerSpec[p_ch[ch]], sub( Q31, q_powerSpec[p_ch[ch]] ), N_MAX + L_MDCT_OVLP_MAX ); - ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[p_ch[ch]][n], &q_spectrum, &powerSpec_fx[p_ch[ch]][n * L_subframeTCX], &exp_powerSpec[p_ch[ch]][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 ); + ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[p_ch[ch]][n], q_origSpec, &powerSpec_fx[p_ch[ch]][n * L_subframeTCX], &exp_powerSpec[p_ch[ch]][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 ); st->hTcxEnc->spectrum_e[n] = sub( 31, q_spectrum ); move16(); @@ -1163,7 +1163,7 @@ void mctStereoIGF_enc_fx( q_spectrum = sub( 31, st->hTcxEnc->spectrum_e[n] ); set16_fx( exp_powerSpec[ch], sub( Q31, q_powerSpec[ch] ), N_MAX + L_MDCT_OVLP_MAX ); - ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 ); + ProcessIGF_ivas_fx( st, L_FRAME48k, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_origSpec, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, sp_aud_decision0[ch], 0 ); st->hTcxEnc->spectrum_e[n] = sub( 31, q_spectrum ); move16(); diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index aa762a77c..c38494669 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -710,7 +710,7 @@ void stereo_mdct_core_enc_fx( q_spectrum = sub( Q31, st->hTcxEnc->spectrum_e[n] ); Scale_sig32( orig_spectrum_fx[ch][n], st->hIGFEnc->infoStopLine, sub( q_spectrum, sub( Q31, p_orig_spectrum_e[ch] ) ) ); /* q_spectrum */ - ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 ); + ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 ); } } } @@ -787,7 +787,7 @@ void stereo_mdct_core_enc_fx( Scale_sig32( orig_spectrum_fx[ch][n], st->hIGFEnc->infoStopLine, sub( q_spectrum, sub( Q31, p_orig_spectrum_e[ch] ) ) ); /* q_spectrum */ - ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], orig_spectrum_fx[ch][n], &q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 ); + ProcessIGF_ivas_fx( st, N_MAX, st->hTcxEnc->spectrum_fx[n], &q_spectrum, orig_spectrum_fx[ch][n], q_spectrum, &powerSpec_fx[ch][n * L_subframeTCX], &exp_powerSpec[ch][n * L_subframeTCX], st->core == TCX_20_CORE, n, hCPE->hCoreCoder[0]->sp_aud_decision0, 0 ); } } } diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 73ec00cbd..120dd42b5 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -1244,8 +1244,9 @@ void ProcessIGF_ivas_fx( Encoder_State *st, /* i : Encoder state */ Word16 powerSpec_len, /* i : length of pPowerSpectrum buffer */ Word32 *pMDCTSpectrum, /* i : MDCT spectrum */ - const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */ Word16 *q_spectrum, /* i/o: Q of spectrum */ + const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */ + const Word16 q_ITFMDCTSpectrum, /* i : Q of MDCT spectrum fir ITF */ Word32 *pPowerSpectrum, /* i : MDCT^2 + MDST^2 spectrum, or estimate */ Word16 *q_powerSpec, /* i/o: Q of power spectrum */ const Word16 isTCX20, /* i : flag indicating if the input is TCX20 or TCX10/2xTCX5 */ diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index 228e522bf..7d5f486cc 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -3926,8 +3926,9 @@ void ProcessIGF_ivas_fx( Encoder_State *st, /* i : Encoder state */ Word16 powerSpec_len, /* i : length of pPowerSpectrum buffer */ Word32 *pMDCTSpectrum, /* i : MDCT spectrum (*q_spectrum) */ - const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */ Word16 *q_spectrum, /* i/o: Q of spectrum */ + const Word32 *pITFMDCTSpectrum, /* i : MDCT spectrum fir ITF */ + const Word16 q_ITFMDCTSpectrum, /* i : Q of MDCT spectrum fir ITF */ Word32 *pPowerSpectrum, /* i : MDCT^2 + MDST^2 spectrum, or estimate (*q_powerSpec) */ Word16 *exp_powerSpec, /* i/o: Q of power spectrum */ const Word16 isTCX20, /* i : flag indicating if the input is TCX20 or TCX10/2xTCX5 */ @@ -3969,7 +3970,7 @@ void ProcessIGF_ivas_fx( } } - IGFSaveSpectrumForITF_ivas_fx( hIGFEnc, igfGridIdx, pITFMDCTSpectrum, sub( Q31, *q_spectrum ) ); + IGFSaveSpectrumForITF_ivas_fx( hIGFEnc, igfGridIdx, pITFMDCTSpectrum, sub( Q31, q_ITFMDCTSpectrum ) ); IGFEncApplyMono_ivas_fx( st, powerSpec_len, igfGridIdx, pMDCTSpectrum, sub( Q31, *q_spectrum ), pPowerSpectrum, exp_powerSpec, isTCX20, st->hTcxEnc->fUseTns[frameno], sp_aud_decision0, vad_hover_flag ); -- GitLab From f325d96e34c46d7dc59d04289b830371fefed00f Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 22 Apr 2025 10:37:39 +0200 Subject: [PATCH 380/698] Revert "[revert-me] use other branch for testing" This reverts commit ca78d64b8655295422fafd8100f4bd609b71a8c9. --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c500107c1..01ac69a92 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" LEVEL_SCALING: "1.0" IVAS_PIPELINE_NAME: '' - BASOP_CI_BRANCH_PC_REPO: "kiene/tmp-branch-for-ltv-split-testing" + BASOP_CI_BRANCH_PC_REPO: "ci/split-output-files-b4-comparison" PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" TESTCASE_TIMEOUT_STV: 900 TESTCASE_TIMEOUT_LTV: 2400 -- GitLab From 7c5a7682fe42f3b38974c1225ebb53924dea7478 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 22 Apr 2025 10:37:53 +0200 Subject: [PATCH 381/698] Revert "[revert-me] change branch for getting the scripts" This reverts commit e538224816eff3d9455bc28e81be5d5eb29c18d0. --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 01ac69a92..275b91bfb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" LEVEL_SCALING: "1.0" IVAS_PIPELINE_NAME: '' - BASOP_CI_BRANCH_PC_REPO: "ci/split-output-files-b4-comparison" + BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch" PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" TESTCASE_TIMEOUT_STV: 900 TESTCASE_TIMEOUT_LTV: 2400 -- GitLab From e4c2db922a44e2bc9270262e4825c140f2c04126 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 22 Apr 2025 13:57:28 +0200 Subject: [PATCH 382/698] fix lineendings --- lib_com/options.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 99206fa9d..2f1e82de8 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -90,8 +90,8 @@ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ -#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ +#define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ #define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ #define FIX_1486_IND_SHB_RES /* VA: Fix for issue 1486: align the usage of IND_SHB_RES_GS indices with float code */ -- GitLab From 32903074dd6dbee6e4737651a15a4873cec378b5 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 22 Apr 2025 23:03:07 +0530 Subject: [PATCH 383/698] Fix for LTV encoder +10dB crash --- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index c38494669..646f3e725 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -458,29 +458,35 @@ void stereo_mdct_core_enc_fx( { IF( NE_16( hStereoMdct->mdct_stereo_mode[n], SMDCT_DUAL_MONO ) ) { + exp = shl( add( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), 1 ); // 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) /* power spectrum: MDCT^2 + MDST^2 */ - W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][0], inv_spectrum_fx[ch][n][0] ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n] + mdct = L_shr( inv_spectrum_fx[ch][n][0], 1 ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1 + W_tmp = W_mult_32_32( mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp) norm = W_norm( W_tmp ); - powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n]-norm - exp_powSpecInv[n][0] = sub( shl( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), norm ); + powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm) + exp_powSpecInv[n][0] = sub( exp, norm ); move32(); move16(); FOR( i = 1; i < L_subframeTCX - 1; i++ ) { - Word32 mdst_fx = L_sub( inv_spectrum_fx[ch][n][i + 1], inv_spectrum_fx[ch][n][i - 1] ); // exp: sts[ch]->hTcxEnc->spectrum_e[n] - W_tmp = W_mac_32_32( W_mult_32_32( mdst_fx, mdst_fx ), inv_spectrum_fx[ch][n][i], inv_spectrum_fx[ch][n][i] ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n] + /* float mdst = ( inv_spectrum[ch][n][i + 1] - inv_spectrum[ch][n][i - 1] ); + powerSpecMsInv[ch][n][i] = mdst * mdst + inv_spectrum[ch][n][i] * inv_spectrum[ch][n][i]; */ + mdst = L_sub( L_shr( inv_spectrum_fx[ch][n][i + 1], 1 ), L_shr( inv_spectrum_fx[ch][n][i - 1], 1 ) ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1 + mdct = L_shr( inv_spectrum_fx[ch][n][i], 1 ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1 + W_tmp = W_mac_32_32( W_mult_32_32( mdst, mdst ), mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp) norm = W_norm( W_tmp ); - powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n]-norm - exp_powSpecInv[n][i] = sub( shl( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), norm ); + powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm) + exp_powSpecInv[n][i] = sub( exp, norm ); move32(); move16(); } - W_tmp = W_mult_32_32( inv_spectrum_fx[ch][n][L_subframeTCX - 1], inv_spectrum_fx[ch][n][L_subframeTCX - 1] ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n] + mdct = L_shr( inv_spectrum_fx[ch][n][L_subframeTCX - 1], 1 ); // exp: sts[ch]->hTcxEnc->spectrum_e[n]+1 + W_tmp = W_mult_32_32( mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp) norm = W_norm( W_tmp ); - powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*sts[ch]->hTcxEnc->spectrum_e[n]-norm - exp_powSpecInv[n][L_subframeTCX - 1] = sub( shl( sts[ch]->hTcxEnc->spectrum_e[n], 1 ), norm ); + powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm) + exp_powSpecInv[n][L_subframeTCX - 1] = sub( exp, norm ); move32(); move16(); } -- GitLab From c4169554ee53d088799b7fd4b8c56fd83fd05c36 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 23 Apr 2025 17:02:33 +0530 Subject: [PATCH 384/698] Fix for 3GPP issue 1505: [regression] Encoder crash for McMASA 7.1+4 16kHz input at 64kbps in convertToBwMS_fx() Link #1505 --- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 646f3e725..1bd5c936b 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -371,7 +371,7 @@ void stereo_mdct_core_enc_fx( } exp1 = add( exp1, 1 ); /* 1 guard bit to avoid over-flows in stereo_coder_tcx_fx */ - exp2 = add( exp2, 1 ); /* 1 guard bit to avoid over-flows in stereo_coder_tcx_fx */ + exp2 = add( exp2, 2 ); /* 2 guard bit to avoid over-flows in stereo_coder_tcx_fx (ms_processing_fx) */ FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { -- GitLab From 6ed7ba270608ea31f61e5ed9ebc51d7eb24ada98 Mon Sep 17 00:00:00 2001 From: Anjaneyulu Sana Date: Tue, 15 Apr 2025 17:03:53 +0530 Subject: [PATCH 385/698] Fix for 3GPP issue 1479: Renderer crashes for MASA long test vector input --- lib_rend/ivas_dirac_rend_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index 03831e407..030287b7f 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -4166,7 +4166,7 @@ static void ivas_masa_ext_dirac_render_sf_fx( hDirACRend->h_output_synthesis_psd_state.direct_power_factor_fx[i] = L_add( hDirACRend->h_output_synthesis_psd_state.direct_power_factor_fx[i], surCohEner_fx ); // q29 move32(); - surCohRatio_fx[i] = L_deposit_h( BASOP_Util_Divide3232_Scale( surCohEner_fx, L_add( L_add( 1, dirEne_fx ), surCohEner_fx ), &surCohRatio_exp[i] ) ); // 31-surCohRatio_exp + surCohRatio_fx[i] = BASOP_Util_Divide3232_Scale_cadence( surCohEner_fx, L_add( L_add( 1, dirEne_fx ), surCohEner_fx ), &surCohRatio_exp[i] ); // 31-surCohRatio_exp move32(); temp_exp = s_max( temp_exp, surCohRatio_exp[i] ); } @@ -4961,7 +4961,7 @@ static void ivas_masa_ext_dirac_render_sf_fx( hSpatParamRendCom->num_freq_bands ) ); } } - scale_factor = sub( scale_factor, 3 ); // guard bits + scale_factor = sub( scale_factor, find_guarded_bits_fx( hSpatParamRendCom->num_freq_bands ) ); // guard bits FOR( ch = 0; ch < hDirACRend->num_outputs_dir; ch++ ) { -- GitLab From f1e41eb33e60dbf624ddf474d5e25af517b88aa8 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 23 Apr 2025 17:06:22 +0530 Subject: [PATCH 386/698] Replace BASOP_Util_Divide3232_Scale_cadence() with BASOP_Util_Divide3232_Scale_newton() --- lib_rend/ivas_dirac_rend_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index 030287b7f..2f748289a 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -4166,7 +4166,7 @@ static void ivas_masa_ext_dirac_render_sf_fx( hDirACRend->h_output_synthesis_psd_state.direct_power_factor_fx[i] = L_add( hDirACRend->h_output_synthesis_psd_state.direct_power_factor_fx[i], surCohEner_fx ); // q29 move32(); - surCohRatio_fx[i] = BASOP_Util_Divide3232_Scale_cadence( surCohEner_fx, L_add( L_add( 1, dirEne_fx ), surCohEner_fx ), &surCohRatio_exp[i] ); // 31-surCohRatio_exp + surCohRatio_fx[i] = BASOP_Util_Divide3232_Scale_newton( surCohEner_fx, L_add( L_add( 1, dirEne_fx ), surCohEner_fx ), &surCohRatio_exp[i] ); // 31-surCohRatio_exp move32(); temp_exp = s_max( temp_exp, surCohRatio_exp[i] ); } -- GitLab From e550b83e38222f2720b5b49f8bf857cc02b66eca Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 14:46:13 +0200 Subject: [PATCH 387/698] remove some debug output and add silent/quiet flags --- .gitlab-ci.yml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 275b91bfb..5f8168e3a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1703,8 +1703,7 @@ voip-be-on-merge-request: # see below in the concrete complexity jobs - if [ "$JOB_ID_INJECT" != "" ]; then job_id=$JOB_ID_INJECT; fi - curl --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip - - unzip artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html - - ls + - unzip -qq artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html - public_dir="$CI_JOB_NAME-public" # if is needed to catch case when no artifact is there (first run), similarly as above @@ -1727,15 +1726,14 @@ voip-be-on-merge-request: - fi - fi - - ls wmops - rm artifacts.zip - rm -rf $public_dir ### 1.5.part: get the corresponding measurement from ivas-float-update - job_id=$(python3 ci/get_id_of_last_job_occurence.py ivas-float-update $CI_JOB_NAME $CI_PROJECT_ID) - echo $job_id - - curl --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts_ref.zip - - unzip -j artifacts_ref.zip "*latest_WMOPS.csv" || true + - curl --silent --show-error --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts_ref.zip + - unzip -qq -j artifacts_ref.zip "*latest_WMOPS.csv" || true # add file to arguments only if the artifact could be retrieved to prevent error later. - if [ -f latest_WMOPS.csv ]; then GET_WMOPS_ARGS="$GET_WMOPS_ARGS latest_WMOPS.csv"; fi @@ -1748,8 +1746,6 @@ voip-be-on-merge-request: - mkdir $public_dir/logs # first move logs - log_files=$(cat $public_dir/graphs*.js | grep logFile | sed "s/.*\(wmops_newsletter_.*\.csv\).*/\1/g") - - echo $log_files - - ls wmops/logs - for f in $log_files; do [ -f wmops/logs/$f ] && mv wmops/logs/$f $public_dir/logs/$f; done # copy index page blueprint - cp ci/complexity_measurements/index_complexity.html ${public_dir}/index.html @@ -1757,7 +1753,6 @@ voip-be-on-merge-request: - sed -i "s/IVAS FORMAT/IVAS $in_format to $out_format/g" ${public_dir}/index.html # do separately here to avoid overwrite complaints by mv - mv -f ci/complexity_measurements/style.css ${public_dir}/ - - ls $public_dir .complexity-template: extends: @@ -1775,7 +1770,6 @@ voip-be-on-merge-request: - *complexity-measurements-setup # delete previous jobs logfiles if present (-f flag ensures return calue of 0 even in first run where this folder is not present) - rm -rf COMPLEXITY/logs - - which coan allow_failure: exit_codes: - 123 -- GitLab From bbfe0be3b8cd96fbde157aeff57c71c05ddc2624 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 17:01:03 +0200 Subject: [PATCH 388/698] fix artifact name to conform to new scripts --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 275b91bfb..382b3992d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -738,7 +738,7 @@ stages: - $MERGE_TARGET_COMMIT_FILE - regressions_crashes.csv - regressions_MLD.csv - - regressions_MAXIMUM_ABS_DIFF.csv + - regressions_MAX_ABS_DIFF.csv - regressions_MIN_SSNR.csv - regressions_MIN_ODG.csv - improvements_crashes.csv -- GitLab From 240e70d6c66c70962219efbd7f5695f004f54010 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 17:03:53 +0200 Subject: [PATCH 389/698] fix other occasions as well --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 382b3992d..0b7fe26eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -622,7 +622,7 @@ stages: - *print-common-info # create empty files for all artifacts to suppress warnings in case of no regressions found or all is BE - - touch $XML_REPORT_BRANCH $XML_REPORT_MAIN $HTML_REPORT_BRANCH $HTML_REPORT_MAIN $CSV_BRANCH $CSV_MAIN $SUMMARY_HTML_ARTIFACT_NAME $FLOAT_REF_COMMIT_FILE $CUT_COMMIT_FILE $MERGE_TARGET_COMMIT_FILE regressions_crashes.csv regressions_MLD.csv regressions_MAXIMUM_ABS_DIFF.csv regressions_MIN_SSNR.csv regressions_MIN_ODG.csv improvements_crashes.csv improvements_MLD.csv improvements_MAXIMUM_ABS_DIFF.csv improvements_MIN_SSNR.csv improvements_MIN_ODG.csv + - touch $XML_REPORT_BRANCH $XML_REPORT_MAIN $HTML_REPORT_BRANCH $HTML_REPORT_MAIN $CSV_BRANCH $CSV_MAIN $SUMMARY_HTML_ARTIFACT_NAME $FLOAT_REF_COMMIT_FILE $CUT_COMMIT_FILE $MERGE_TARGET_COMMIT_FILE regressions_crashes.csv regressions_MLD.csv regressions_MAX_ABS_DIFF.csv regressions_MIN_SSNR.csv regressions_MIN_ODG.csv improvements_crashes.csv improvements_MLD.csv improvements_MAX_ABS_DIFF.csv improvements_MIN_SSNR.csv improvements_MIN_ODG.csv - mkdir $IMAGES_ARTIFACT_NAME - set -euxo pipefail @@ -743,7 +743,7 @@ stages: - regressions_MIN_ODG.csv - improvements_crashes.csv - improvements_MLD.csv - - improvements_MAXIMUM_ABS_DIFF.csv + - improvements_MAX_ABS_DIFF.csv - improvements_MIN_SSNR.csv - improvements_MIN_ODG.csv expose_as: "pytest compare results" -- GitLab From 1acdddb6af021c28246ffe812cb56f1724d2440a Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 17:11:14 +0200 Subject: [PATCH 390/698] add summary printout at end of complexity jobs --- .gitlab-ci.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f8168e3a..644ed7355 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1754,6 +1754,16 @@ voip-be-on-merge-request: # do separately here to avoid overwrite complaints by mv - mv -f ci/complexity_measurements/style.css ${public_dir}/ +.complexity-measurements-report-summary: &complexity-measurements-report-summary + - *print-results-banner + - if [ $ret_val -eq 0 ]; then + - echo -e "No crashes occured.\nNo changes in complexity or memory usage (>1%) detected." + - elif [ $ret_val -eq 123 ]; then + - echo -e "Changes in complexity or memory usage (>1%) detected!!!\nNo crashes occured." + - else + - echo -e "Something went wrong in running the codec. Likely some modes were crashing." + - fi + .complexity-template: extends: - .test-job-linux @@ -1793,6 +1803,7 @@ complexity-stereo-in-stereo-out: - out_format=stereo - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-ism-in-binaural-out: @@ -1810,6 +1821,7 @@ complexity-ism-in-binaural-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-ism-in-binaural_room_ir-out: @@ -1827,6 +1839,7 @@ complexity-ism-in-binaural_room_ir-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-ism-in-ext-out: @@ -1844,6 +1857,7 @@ complexity-ism-in-ext-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-sba-hoa3-in-hoa3-out: @@ -1861,6 +1875,7 @@ complexity-sba-hoa3-in-hoa3-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-sba-hoa3-in-binaural-out: @@ -1878,6 +1893,7 @@ complexity-sba-hoa3-in-binaural-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-sba-hoa3-in-binaural_room_ir-out: @@ -1895,6 +1911,7 @@ complexity-sba-hoa3-in-binaural_room_ir-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-mc-in-7_1_4-out: @@ -1912,6 +1929,7 @@ complexity-mc-in-7_1_4-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-mc-in-binaural-out: @@ -1929,6 +1947,7 @@ complexity-mc-in-binaural-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-mc-in-binaural_room_ir-out: @@ -1946,6 +1965,7 @@ complexity-mc-in-binaural_room_ir-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-masa-in-ext-out: @@ -1963,6 +1983,7 @@ complexity-masa-in-ext-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-masa-in-binaural-out: @@ -1980,6 +2001,7 @@ complexity-masa-in-binaural-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-masa-in-hoa3-out: @@ -1997,6 +2019,7 @@ complexity-masa-in-hoa3-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val # complexity-omasa-in-ext-out: @@ -2014,6 +2037,7 @@ complexity-masa-in-hoa3-out: # - ret_val=0 # - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? # - *complexity-measurements-prepare-artifacts +# - *complexity-measurements-report-summary # - exit $ret_val complexity-omasa-in-binaural-out: @@ -2031,6 +2055,7 @@ complexity-omasa-in-binaural-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-omasa-in-hoa3-out: @@ -2048,6 +2073,7 @@ complexity-omasa-in-hoa3-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-StereoDmxEVS-stereo-in-mono-out: @@ -2065,6 +2091,7 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val # complexity-osba-in-ext-out: @@ -2080,6 +2107,7 @@ complexity-StereoDmxEVS-stereo-in-mono-out: # - ret_val=0 # - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? # - *complexity-measurements-prepare-artifacts +# - *complexity-measurements-report-summary # - exit $ret_val complexity-osba-in-binaural-out: @@ -2097,6 +2125,7 @@ complexity-osba-in-binaural-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val complexity-osba-in-binaural_room_ir-out: @@ -2114,6 +2143,7 @@ complexity-osba-in-binaural_room_ir-out: - ret_val=0 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - *complexity-measurements-prepare-artifacts + - *complexity-measurements-report-summary - exit $ret_val # job that sets up gitlab pages website -- GitLab From 1b059d6ef99d5f8155b0160e609fe56cc3c602f4 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 17:14:58 +0200 Subject: [PATCH 391/698] [revert-me] temporarily disable delay for testing --- .gitlab-ci.yml | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 644ed7355..ae4c41ec6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1811,8 +1811,6 @@ complexity-ism-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 1 hour variables: JOB_ID_INJECT: "" script: @@ -1829,8 +1827,6 @@ complexity-ism-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 2 hours variables: JOB_ID_INJECT: "" script: @@ -1847,8 +1843,6 @@ complexity-ism-in-ext-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 3 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1865,8 +1859,6 @@ complexity-sba-hoa3-in-hoa3-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 4 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1883,8 +1875,6 @@ complexity-sba-hoa3-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 5 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1901,8 +1891,6 @@ complexity-sba-hoa3-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 6 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1919,8 +1907,6 @@ complexity-mc-in-7_1_4-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 7 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1937,8 +1923,6 @@ complexity-mc-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 10 hours variables: JOB_ID_INJECT: "" script: @@ -1955,8 +1939,6 @@ complexity-mc-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 12 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1973,8 +1955,6 @@ complexity-masa-in-ext-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 15 hours variables: JOB_ID_INJECT: "" script: @@ -1991,8 +1971,6 @@ complexity-masa-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 16 hours variables: JOB_ID_INJECT: "" script: @@ -2009,8 +1987,6 @@ complexity-masa-in-hoa3-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 17 hours variables: JOB_ID_INJECT: "" script: @@ -2045,8 +2021,6 @@ complexity-omasa-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 18 hours variables: JOB_ID_INJECT: "" script: @@ -2063,8 +2037,6 @@ complexity-omasa-in-hoa3-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 20 hours variables: JOB_ID_INJECT: "" script: @@ -2081,8 +2053,6 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 22 hours variables: JOB_ID_INJECT: "" script: @@ -2099,8 +2069,6 @@ complexity-StereoDmxEVS-stereo-in-mono-out: # - .complexity-template # rules: # - if: $MEASURE_COMPLEXITY_LINUX -# when: delayed -# start_in: 17 hours # script: # - in_format=OSBA # - out_format=EXT @@ -2115,8 +2083,6 @@ complexity-osba-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 22 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -2133,8 +2099,6 @@ complexity-osba-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 25 hours variables: JOB_ID_INJECT: "" script: -- GitLab From f9354b9c882b9f2206bc78976073c3ed5b572413 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 17:20:38 +0200 Subject: [PATCH 392/698] [revert-me] change script branch for testing --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ae4c41ec6..f29544856 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" LEVEL_SCALING: "1.0" IVAS_PIPELINE_NAME: '' - BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch" + BASOP_CI_BRANCH_PC_REPO: "kiene/tmp-branch-for-complexity-cleanup" PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" TESTCASE_TIMEOUT_STV: 900 TESTCASE_TIMEOUT_LTV: 2400 -- GitLab From 4200ee7afd5b315ea0fcbae54c382585e0ba3d40 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 17:29:49 +0200 Subject: [PATCH 393/698] silent flag for another curl call --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f29544856..49bff6ad4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1702,7 +1702,7 @@ voip-be-on-merge-request: # this is a testing/maintenance mechanism to force getting the log history from a specific job id # see below in the concrete complexity jobs - if [ "$JOB_ID_INJECT" != "" ]; then job_id=$JOB_ID_INJECT; fi - - curl --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip + - curl --silent --show-error --request GET "https://forge.3gpp.org/rep/api/v4/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip - unzip -qq artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html - public_dir="$CI_JOB_NAME-public" -- GitLab From e4ed9c4fc8ce3752a732321b22278150ebc8dea8 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 23 Apr 2025 18:39:57 +0200 Subject: [PATCH 394/698] [revert-me] add intentional crash + changed complexity --- lib_dec/ivas_jbm_dec_fx.c | 8 ++++---- lib_enc/ivas_enc_fx.c | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 74af57bd5..8d4b10dec 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -159,10 +159,10 @@ ivas_error ivas_jbm_dec_tc_fx( set32_fx( &p_output_fx[0][0], 0, L_FRAME48k ); set32_fx( &p_output_fx[1][0], 0, L_FRAME48k ); - IF( ( error = ivas_cpe_dec_fx( st_ivas, 0, &p_output_fx[0], output_frame, 0 ) ) != IVAS_ERR_OK ) - { - return error; - } + // IF( ( error = ivas_cpe_dec_fx( st_ivas, 0, &p_output_fx[0], output_frame, 0 ) ) != IVAS_ERR_OK ) + // { + // return error; + // } IF( NE_16( q_output, Q11 ) ) { diff --git a/lib_enc/ivas_enc_fx.c b/lib_enc/ivas_enc_fx.c index ff5f65b32..95f690c15 100644 --- a/lib_enc/ivas_enc_fx.c +++ b/lib_enc/ivas_enc_fx.c @@ -31,6 +31,7 @@ *******************************************************************************************************/ #include +#include #include #include "options.h" #include "cnst.h" @@ -187,6 +188,7 @@ ivas_error ivas_enc_fx( } ELSE IF( EQ_32( ivas_format, ISM_FORMAT ) ) { + assert( 0 ); /* select ISM format mode; reconfigure the ISM format encoder */ IF( ( error = ivas_ism_enc_config( st_ivas ) ) != IVAS_ERR_OK ) { -- GitLab From f9ad8577f709290fe1777fce1a9184da66939933 Mon Sep 17 00:00:00 2001 From: marc emerit Date: Wed, 23 Apr 2025 20:49:05 +0200 Subject: [PATCH 395/698] compiling ok ready to test --- apps/decoder.c | 141 ++++- apps/renderer.c | 163 ++++- lib_com/ivas_cnst.h | 9 + lib_com/ivas_error.h | 7 + lib_com/options.h | 10 + lib_dec/ivas_init_dec.c | 4 + lib_dec/lib_dec.h | 34 +- lib_dec/lib_dec_fx.c | 40 +- lib_rend/ivas_crend_fx.c | 66 ++ lib_rend/ivas_hrtf_fx.c | 8 + lib_rend/ivas_objectRenderer_fx.c | 5 +- lib_rend/ivas_objectRenderer_mix_fx.c | 40 ++ lib_rend/ivas_rom_binaural_crend_head.h | 171 ++--- lib_rend/ivas_rom_binaural_crend_head_fx.c | 501 ++++++++++++--- lib_rend/ivas_rom_rend.h | 8 + lib_rend/ivas_rom_rend_fx.c | 2 + lib_rend/ivas_stat_rend.h | 15 +- lib_rend/lib_rend.c | 594 +++++++++++++++--- lib_rend/lib_rend.h | 32 + lib_util/hrtf_file_reader.c | 696 ++++++++++++++++++++- lib_util/hrtf_file_reader.h | 70 ++- lib_util/render_config_reader.c | 4 + 22 files changed, 2326 insertions(+), 294 deletions(-) mode change 100755 => 100644 lib_com/options.h diff --git a/apps/decoder.c b/apps/decoder.c index 2bff1fab6..3aa9d26eb 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -174,6 +174,10 @@ int main( RenderConfigReader *renderConfigReader = NULL; int16_t *pcmBuf = NULL; IVAS_RENDER_FRAMESIZE asked_frame_size; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; +#endif #ifdef WMOPS reset_wmops(); @@ -599,58 +603,171 @@ int main( if ( arg.hrtfReaderEnabled ) { +#ifndef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL; - +#endif if ( ( error = IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { +#ifdef FIX_OLD_BINARY_FORMAT + hrtfFileReader_close( &hrtfReader ); + strcat( arg.hrtfFileName, "new" ); + + if ( hrtfFileReader_open( arg.hrtfFileName, &hrtfReader ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + + if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + else + { + destroy_td_hrtf( hHrtfTD ); + } + } +#else + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; +#endif + } + else + { + destroy_td_hrtf( hHrtfTD ); + } + } +#else if ( ( error = load_HRTF_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); goto cleanup; } +#endif +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( *hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + } +#else + if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } +#endif +#endif +#ifndef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; +#endif if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfCRendHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + else + { + destroy_SetOfHRTF( hSetOfHRTF ); + } + } +#else if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfFileName ); goto cleanup; } +#endif +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL; +#else IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL; +#endif if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfFastConvHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + else + { + destroy_fastconv_hrtf( hHrtfFastConv ); + } + } +#else if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfFileName ); goto cleanup; } +#endif +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL; +#else IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL; +#endif if ( ( error = IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( error = load_parambin_HRTF_from_binary( *hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + else + { + destroy_parambin_hrtf( hHrtfParambin ); + } + } +#else if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfFileName ); goto cleanup; } +#endif } /*------------------------------------------------------------------------------------------* @@ -713,12 +830,34 @@ cleanup: if ( arg.hrtfReaderEnabled ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; +#else IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL; +#endif IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( hHrtfTD != NULL ) + { + destroy_td_hrtf( hHrtfTD ); + } +#else dealloc_HRTF_binary( hHrtfTD ); +#endif +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; +#else IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; +#endif IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( hSetOfHRTF != NULL ) + { + destroy_SetOfHRTF( hSetOfHRTF ); + } +#else destroy_SetOfHRTF( hSetOfHRTF ); +#endif } IVAS_DEC_Close( &hIvasDec ); diff --git a/apps/renderer.c b/apps/renderer.c index 2a14e2811..b12aa43a5 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -762,6 +762,12 @@ int main( #endif Vector3PairFileReader *referenceVectorReader = NULL; hrtfFileReader *hrtfFileReader = NULL; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL; + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL; + IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; +#endif IsmPositionProvider *positionProvider; LfeRoutingConfig *lfeRoutingConfigs[RENDERER_MAX_MC_INPUTS]; RenderConfigReader *renderConfigReader = NULL; @@ -816,8 +822,10 @@ int main( #ifdef SPLIT_REND_WITH_HEAD_ROT hSplitRendFileReadWrite = NULL; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING CLDFBframeSize_smpls = 0; cldfb_in_flag = 0; +#endif bitsBuffer.bits = NULL; bitsBuffer.config.bitsRead = 0; bitsBuffer.config.bitsWritten = 0; @@ -906,6 +914,7 @@ int main( } } +#ifndef NONBE_FIX_BINARY_BINAURAL_READING if ( !isEmptyString( args.customHrtfFilePath ) ) { if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK ) @@ -914,6 +923,7 @@ int main( exit( -1 ); } } +#endif if ( !isEmptyString( args.renderConfigFilePath ) ) { @@ -999,14 +1009,142 @@ int main( } const int16_t frameSize_smpls = (int16_t) ( ( args.render_framesize ) * args.sampleRate * 5 / ( 1000 ) ); - Word32 nonDiegeticPanGain_fx = ( args.nonDiegeticPanGain == 1.0f ) ? ONE_IN_Q31 : ( args.nonDiegeticPanGain == -1.0f ) ? L_negate( ONE_IN_Q31 ) - : (Word32) ( args.nonDiegeticPanGain * ( 1LL << Q31 ) ); - IF( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, nonDiegeticPanGain_fx, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) + +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, !isEmptyString( args.customHrtfFilePath ), args.nonDiegeticPan, args.nonDiegeticPanGain, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, args.nonDiegeticPanGain, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) +#endif { fprintf( stderr, "Error opening renderer handle: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( !isEmptyString( args.customHrtfFilePath ) ) + { + if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error opening file: %s\n", args.customHrtfFilePath ); + exit( -1 ); + } + + if ( hrtfFileReader != NULL ) + { + if ( ( error = IVAS_REND_GetHrtfHandle( hIvasRend, &hHrtfTD ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_REND_GetHrtfHandle failed: %s\n\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { +#ifdef FIX_OLD_BINARY_FORMAT + hrtfFileReader_close( &hrtfFileReader ); + strcat( args.customHrtfFilePath, "new" ); + if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + else + { + destroy_td_hrtf( hHrtfTD ); + } + } +#else + fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; +#endif + } + else + { + destroy_td_hrtf( hHrtfTD ); + } + } + +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + } +#endif + + if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hSetOfHRTF ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_Rend_GetHrtfCRendHandle failed: %s\n\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfFileReader, args.sampleRate ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s:%s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + else + { + destroy_SetOfHRTF( hSetOfHRTF ); + } + } + + if ( ( error = IVAS_REND_GetHrtfFastConvHandle( hIvasRend, &hHrtfFastConv ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_REND_GetHrtfFastConvHandle failed: %s\n\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfFileReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s:%s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + else + { + destroy_fastconv_hrtf( hHrtfFastConv ); + } + } + + if ( ( error = IVAS_REND_GetHrtfParamBinHandle( hIvasRend, &hHrtfParambin ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( ( error = load_parambin_HRTF_from_binary( *hHrtfParambin, hrtfFileReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + else + { + destroy_parambin_hrtf( hHrtfParambin ); + } + } + } + + hrtfFileReader_close( &hrtfFileReader ); + } +#endif + fprintf( stdout, "Input audio file: %s\n", args.inputFilePath ); fprintf( stdout, "Output audio file: %s\n\n", args.outputFilePath ); @@ -1052,7 +1190,7 @@ int main( /* === Configure === */ if ( ( error = IVAS_REND_InitConfig( hIvasRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in Renderer Config Init\n" ); + fprintf( stderr, "Error in Renderer Config Init: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } @@ -1129,9 +1267,11 @@ int main( exit( -1 ); } +#ifndef NONBE_FIX_BINARY_BINAURAL_READING #ifdef SPLIT_REND_WITH_HEAD_ROT CLDFBframeSize_smpls = frameSize_smpls * 2; cldfb_in_flag = get_cldfb_in_flag( args.outConfig.audioConfig, &renderConfig ); +#endif #endif } @@ -2074,6 +2214,9 @@ int main( free( outFloatBuffer ); free( outInt32Buffer ); free( inInt32Buffer ); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +cleanup: +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT if ( bitsBufferData != NULL ) @@ -2107,7 +2250,19 @@ int main( RotationFileReader_close( &externalOrientationFileReader ); RotationFileReader_close( &referenceRotReader ); Vector3PairFileReader_close( &referenceVectorReader ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING hrtfFileReader_close( &hrtfFileReader ); +#endif +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( hSetOfHRTF != NULL && *hSetOfHRTF != NULL ) + { + destroy_SetOfHRTF( hSetOfHRTF ); + } + if ( hHrtfTD != NULL && *hHrtfTD != NULL ) + { + destroy_td_hrtf( hHrtfTD ); + } +#endif IVAS_REND_Close( &hIvasRend ); IsmPositionProvider_close( positionProvider ); RenderConfigReader_close( &renderConfigReader ); diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index e65ecc2cf..e249cb6ce 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1685,7 +1685,9 @@ typedef enum #define MAX_ANGULAR_STEP_INV ( 1.0f / MAX_ANGULAR_STEP ) #define MAX_INTERPOLATION_STEPS 12 +#ifndef NONBE_FIX_BINARY_BINAURAL_READING #define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC ) +#endif #define DEG_360_IN_Q22 ( 360 << Q22 ) // Q22 #define DEG_180_IN_Q22 ( 180 << Q22 ) // Q22 @@ -1745,8 +1747,15 @@ typedef enum #define RV_FILTER_MAX_HISTORY ( 512 - 160 ) /* for longest history */ #define RV_LENGTH_NR_FC ( RV_FILTER_MAX_FFT_SIZE / 2 ) + 1 +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB +#define RV_LENGTH_NR_FC_16KHZ ( RV_FILTER_MAX_FFT_SIZE / 4 ) + 1 +#endif #define IVAS_REVERB_DEFAULT_N_BANDS 31 +#define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC ) +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB +#define LR_IAC_LENGTH_NR_FC_16KHZ ( RV_LENGTH_NR_FC_16KHZ ) +#endif /*----------------------------------------------------------------------------------* * FB mixer constants diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h index 506c6ac00..4955c7e2c 100644 --- a/lib_com/ivas_error.h +++ b/lib_com/ivas_error.h @@ -78,6 +78,9 @@ typedef enum IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED, IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED, IVAS_ERR_INVALID_HRTF, +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA, +#endif IVAS_ERR_INVALID_INPUT_FORMAT, IVAS_ERR_INVALID_INDEX, IVAS_ERR_NOT_SUPPORTED_OPTION, @@ -257,6 +260,10 @@ static inline const char *ivas_error_to_string( ivas_error error_code ) return "Acoustic environment not supported"; case IVAS_ERR_INVALID_HRTF: return "Unsupported HRTF filter set"; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + case IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA: + return "Renderer data missing in HRTF binary file"; +#endif case IVAS_ERR_INVALID_INPUT_FORMAT: return "Invalid input format"; case IVAS_ERR_INVALID_INDEX: diff --git a/lib_com/options.h b/lib_com/options.h old mode 100755 new mode 100644 index c301e5bea..9eedf04d7 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -97,6 +97,16 @@ #define NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA /* Nokia: issue 944: fix FEC error in OMASA */ #define NONBE_FIX_949_MC_5MS_FRAMING /*Dlb: Issue 949: fix for 5ms framing/rendering in MC mode */ +//#define SPLIT_REND_WITH_HEAD_ROT_NEW /* Orange: split rendering code differ between branchs main-pc and float-pc, do not know what to do/ +#define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ +//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT +#define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +#define NONBE_FIX_AVG_IAC_CLDFB_REVERB +#endif +#define FIX_OLD_BINARY_FORMAT +#endif /* #################### End BASOP porting switches ############################ */ #endif diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index ba4905189..69e246164 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -3078,7 +3078,11 @@ void ivas_destroy_dec_fx( { ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( st_ivas->hHrtfTD != NULL ) +#else ELSE IF( st_ivas->hHrtfTD != NULL ) +#endif { BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval ); ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD ); diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index 999e15328..f2281b779 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -358,25 +358,41 @@ ivas_error IVAS_DEC_FeedCustomLsData( ); /*! r: error code */ -ivas_error IVAS_DEC_GetHrtfHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o : HRTF handle */ +ivas_error IVAS_DEC_GetHrtfHandle( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ +#else + IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o : HRTF handle */ +#endif ); /*! r: error code */ ivas_error IVAS_DEC_GetHrtfCRendHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + #ifdef NONBE_FIX_BINARY_BINAURAL_READING +IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +#else + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */ +#endif ); ivas_error IVAS_DEC_GetHrtfFastConvHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ +#else + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ +#endif ); ivas_error IVAS_DEC_GetHrtfParamBinHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +#else + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +#endif ); diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 95d599d6d..e2bd37600 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -2511,8 +2511,12 @@ ivas_error IVAS_DEC_FeedCustomLsData( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ +#else IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o : HRTF handle */ +#endif ) { test(); @@ -2522,7 +2526,11 @@ ivas_error IVAS_DEC_GetHrtfHandle( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + *hHrtfTD = &hIvasDec->st_ivas->hHrtfTD; +#else *hHrtfTD = hIvasDec->st_ivas->hHrtfTD; +#endif return IVAS_ERR_OK; } @@ -2535,8 +2543,12 @@ ivas_error IVAS_DEC_GetHrtfHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfCRendHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +#else IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */ +#endif ) { test(); @@ -2546,7 +2558,11 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( return IVAS_ERR_WRONG_PARAMS; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + *hSetOfHRTF = &hIvasDec->st_ivas->hSetOfHRTF; +#else *hSetOfHRTF = hIvasDec->st_ivas->hSetOfHRTF; +#endif return IVAS_ERR_OK; } @@ -2559,8 +2575,12 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfFastConvHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ +#else IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ +#endif ) { test(); @@ -2570,7 +2590,11 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle( return IVAS_ERR_WRONG_PARAMS; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + *hHrtfFastConv = &hIvasDec->st_ivas->hHrtfFastConv; +#else *hHrtfFastConv = hIvasDec->st_ivas->hHrtfFastConv; +#endif return IVAS_ERR_OK; } @@ -2583,8 +2607,12 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfParamBinHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +#else IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +#endif ) { test(); @@ -2594,7 +2622,11 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle( return IVAS_ERR_WRONG_PARAMS; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + *hHrtfParambin = &hIvasDec->st_ivas->hHrtfParambin; +#else *hHrtfParambin = hIvasDec->st_ivas->hHrtfParambin; +#endif return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index ef2c477a3..c6644b573 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -101,6 +101,10 @@ ivas_error ivas_hrtf_init( hHrtf->pOut_to_bin_diffuse_im_fx[j] = NULL; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hHrtf->init_from_rom = 1; +#endif + return IVAS_ERR_OK; } @@ -220,8 +224,36 @@ static ivas_error ivas_rend_initCrend_fx( return IVAS_ERR_INTERNAL_FATAL; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + IF( ( hSetOfHRTF == NULL ) || + ( ( hSetOfHRTF->hHRTF_hrir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) || + ( ( hSetOfHRTF->hHRTF_hrir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL ) ) || + ( ( hSetOfHRTF->hHRTF_brir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) || + ( ( hSetOfHRTF->hHRTF_hrir_foa == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_FOA ) ) || + ( ( hSetOfHRTF->hHRTF_hrir_hoa2 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA2 ) ) || + ( ( hSetOfHRTF->hHRTF_hrir_hoa3 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA3 ) ) ) +#else IF( hSetOfHRTF == NULL ) +#endif { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hHrtf->init_from_rom = 1; +#endif IF( EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) { hHrtf->max_num_ir = sub( hHrtf->max_num_ir, 1 ); /* subtract LFE */ @@ -903,6 +935,10 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hHrtf->init_from_rom = 0; + move16(); +#endif IF( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) { hHrtf->max_num_ir = sub( hHrtf->max_num_ir, 1 ); /* subtract LFE */ @@ -912,12 +948,24 @@ static ivas_error ivas_rend_initCrend_fx( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( hSetOfHRTF->hHRTF_brir_combined == NULL ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + } +#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_brir_combined->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_brir_combined->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_brir_combined->index_frequency_max_diffuse; } ELSE { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( hSetOfHRTF->hHRTF_hrir_combined == NULL ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + } +#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_combined->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_combined->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_combined->index_frequency_max_diffuse; @@ -1017,6 +1065,12 @@ static ivas_error ivas_rend_initCrend_fx( { IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA3 ) ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( hSetOfHRTF->hHRTF_hrir_hoa3 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + } +#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_hoa3->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa3->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa3->index_frequency_max_diffuse; @@ -1057,6 +1111,12 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA2 ) ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( hSetOfHRTF->hHRTF_hrir_hoa2 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + } +#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_hoa2->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa2->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa2->index_frequency_max_diffuse; @@ -1097,6 +1157,12 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_FOA ) ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( hSetOfHRTF->hHRTF_hrir_foa == NULL ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + } +#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_foa->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_foa->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_foa->index_frequency_max_diffuse; diff --git a/lib_rend/ivas_hrtf_fx.c b/lib_rend/ivas_hrtf_fx.c index 93f9fbd83..a9167f95b 100644 --- a/lib_rend/ivas_hrtf_fx.c +++ b/lib_rend/ivas_hrtf_fx.c @@ -54,6 +54,10 @@ ivas_error ivas_HRTF_binary_open_fx( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary!" ); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + set_c( (int8_t *) ( *hHrtfTD ), 0, (int32_t) sizeof( TDREND_HRFILT_FiltSet_t ) ); +#endif + return IVAS_ERR_OK; } @@ -184,6 +188,10 @@ ivas_error ivas_HRTF_parambin_binary_open_fx( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for parametric binauralizer HRTF tables!" ); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + set_c( (int8_t *) ( *hHrtfParambin ), 0, (int32_t) sizeof( HRTFS_PARAMBIN ) ); +#endif + return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_objectRenderer_fx.c b/lib_rend/ivas_objectRenderer_fx.c index 1b5bc0d1b..8b11d1f7a 100644 --- a/lib_rend/ivas_objectRenderer_fx.c +++ b/lib_rend/ivas_objectRenderer_fx.c @@ -802,8 +802,11 @@ ivas_error ivas_td_binaural_open_ext_fx( { directivity_fx = hRendCfg->directivity_fx; } - +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + return ivas_td_binaural_open_unwrap_fx( pTDRend->hHrtfTD, outFs, nchan_transport, ivas_format, transport_config, directivity_fx, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns, SrcInd ); +#else return ivas_td_binaural_open_unwrap_fx( &pTDRend->hHrtfTD, outFs, *num_src, ivas_format, transport_config, directivity_fx, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns, SrcInd ); +#endif } /*---------------------------------------------------------------------* * ivas_td_binaural_renderer_ext() diff --git a/lib_rend/ivas_objectRenderer_mix_fx.c b/lib_rend/ivas_objectRenderer_mix_fx.c index 0e61282d4..589baf509 100644 --- a/lib_rend/ivas_objectRenderer_mix_fx.c +++ b/lib_rend/ivas_objectRenderer_mix_fx.c @@ -38,6 +38,9 @@ #include "ivas_error.h" #include "wmc_auto.h" #include "ivas_rom_rend.h" +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +#include "ivas_rom_binaural_crend_head.h" +#endif #include "ivas_prot_fx.h" /*-------------------------------------------------------------------* @@ -153,7 +156,12 @@ void TDREND_MIX_Dealloc_fx( hBinRendererTd->Listener_p = NULL; } /* Dealloc HR filter set */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + test(); + IF( ( *hBinRendererTd->pHrFiltSet_p != NULL ) && ( hBinRendererTd->HrFiltSet_p != NULL ) ) +#else IF( hBinRendererTd->HrFiltSet_p != NULL ) +#endif { IF( EQ_16( hBinRendererTd->HrFiltSet_p->FilterMethod, TDREND_HRFILT_Method_BSplineModel ) ) { @@ -182,8 +190,18 @@ void TDREND_MIX_Dealloc_fx( hBinRendererTd->HrFiltSet_p->RightFiltSet_p_fx = NULL; } } + +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( EQ_16( hBinRendererTd->HrFiltSet_p->ModelParams.modelROM, 1 ) ) + { + free( hBinRendererTd->HrFiltSet_p ); + hBinRendererTd->HrFiltSet_p = NULL; + *hBinRendererTd->pHrFiltSet_p = NULL; + } +#else free( hBinRendererTd->HrFiltSet_p ); hBinRendererTd->HrFiltSet_p = NULL; +#endif } return; @@ -247,6 +265,11 @@ ivas_error TDREND_MIX_Init_fx( { hBinRendererTd->HrFiltSet_p = *hHrtfTD; } + +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hBinRendererTd->pHrFiltSet_p = hHrtfTD; +#endif + IF( NE_32( hBinRendererTd->HrFiltSet_p->SampleRate, output_Fs ) ) { return ( IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "The sampling rate for the HR filter set does not match the output sampling rate.\n" ) ); @@ -410,9 +433,26 @@ static ivas_error DefaultBSplineModel_fx( HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_32kHz_fx; // Q23 BREAK; case 16000: +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + for ( i = 0; i < 3; i++ ) + { + HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( float ) ); + if ( HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + } + floatToFixed_arr32( defaultHRIR_coherence_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[2], Q27, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[1], Q23, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ + floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[0], Q23, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ + HrFiltSet_p->lr_energy_and_iac_fx[0] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[0]; + HrFiltSet_p->lr_energy_and_iac_fx[1] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[1]; + HrFiltSet_p->lr_energy_and_iac_fx[2] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[2]; +#else HrFiltSet_p->lr_energy_and_iac_fx[0] = defaultHRIR_left_avg_power_16kHz_fx; // Q23 HrFiltSet_p->lr_energy_and_iac_fx[1] = defaultHRIR_right_avg_power_16kHz_fx; // Q23 HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_16kHz_fx; // Q23 +#endif BREAK; } diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h index 2b4c3e919..456db9e26 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.h +++ b/lib_rend/ivas_rom_binaural_crend_head.h @@ -57,42 +57,42 @@ extern Word32 CRendBin_Combined_HRIR_latency_s_fx; /* Sample Rate = 48000 */ extern Word16 CRendBin_Combined_HRIR_max_num_iterations_48kHz; -extern UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz; -extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[15]; +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]; extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][240]; -extern Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 32000 */ extern Word16 CRendBin_Combined_HRIR_max_num_iterations_32kHz; -extern UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz; -extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[15]; +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]; extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][160]; -extern Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 16000 */ extern Word16 CRendBin_Combined_HRIR_max_num_iterations_16kHz; -extern UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz; -extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[15]; +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]; extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][80]; -extern Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; @@ -106,42 +106,42 @@ extern Word32 CRendBin_FOA_HRIR_latency_s_fx; /* Sample Rate = 48000 */ extern Word16 CRendBin_FOA_HRIR_max_num_iterations_48kHz; -extern UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz; -extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[4]; +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[FOA_CHANNELS]; extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[4][BINAURAL_CHANNELS][240]; -extern Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[4][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 32000 */ extern Word16 CRendBin_FOA_HRIR_max_num_iterations_32kHz; -extern UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz; -extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[4]; +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[FOA_CHANNELS]; extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[4][BINAURAL_CHANNELS][160]; -extern Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[4][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 16000 */ extern Word16 CRendBin_FOA_HRIR_max_num_iterations_16kHz; -extern UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz; -extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[4]; +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[FOA_CHANNELS]; extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[4][BINAURAL_CHANNELS][80]; -extern Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[4][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; @@ -154,42 +154,42 @@ extern Word32 CRendBin_HOA2_HRIR_latency_s_fx; /* Sample Rate = 48000 */ extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_48kHz; -extern UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz; -extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[9]; +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[HOA2_CHANNELS]; extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[9][BINAURAL_CHANNELS][240]; -extern Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[9][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 32000 */ extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_32kHz; -extern UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz; -extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[9]; +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[HOA2_CHANNELS]; extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[9][BINAURAL_CHANNELS][160]; -extern Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[9][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 16000 */ extern Word16 CRendBin_HOA2_HRIR_max_num_iterations_16kHz; -extern UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz; -extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[9]; +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[HOA2_CHANNELS]; extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[9][BINAURAL_CHANNELS][80]; -extern Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[9][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; @@ -201,42 +201,42 @@ extern Word32 CRendBin_HOA3_HRIR_latency_s_fx; /* Sample Rate = 48000 */ extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_48kHz; -extern UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz; -extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[16]; +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[HOA3_CHANNELS]; extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[16][BINAURAL_CHANNELS][240]; -extern Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[16][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; +extern Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 32000 */ extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_32kHz; -extern UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz; -extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[16]; +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[HOA3_CHANNELS]; extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[16][BINAURAL_CHANNELS][160]; -extern Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[16][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; +extern Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; /* Sample Rate = 16000 */ extern Word16 CRendBin_HOA3_HRIR_max_num_iterations_16kHz; -extern UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1]; +extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz; -extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[16]; +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[HOA3_CHANNELS]; extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[16][BINAURAL_CHANNELS][80]; -extern Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[16][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; +extern Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; extern Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; @@ -249,42 +249,63 @@ extern Word32 CRendBin_Combined_BRIR_latency_s_fx; /* Sample Rate = 48000 */ extern Word16 CRendBin_Combined_BRIR_max_num_iterations_48kHz; -extern UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22]; +extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]; extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz; -extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[15]; +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]; -extern Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][2955]; -extern Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][2955]; +extern Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; +extern Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS][2885]; extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS][2885]; /* Sample Rate = 32000 */ extern Word16 CRendBin_Combined_BRIR_max_num_iterations_32kHz; -extern UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22]; +extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]; extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz; -extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[15]; +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]; -extern Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][2819]; -extern Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][2819]; +extern Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; +extern Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS][2870]; extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS][2870]; /* Sample Rate = 16000 */ extern Word16 CRendBin_Combined_BRIR_max_num_iterations_16kHz; -extern UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]; +extern UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; -extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23]; +extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]; extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz; -extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[15]; +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]; -extern Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][1774]; -extern Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][1774]; +extern Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774]; +extern Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774]; extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS][2522]; extern Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS][2522]; + +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +extern const Word32 defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ +extern const Word32 defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +extern const Word32 defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ + +extern const Word32 defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ +extern const Word32 defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +extern const Word32 defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ + +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB +extern float defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-27*/ +extern float defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ +extern float defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ +#else +extern const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ +extern const Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +extern const Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +#endif +#endif + #endif /* _IVAS_ROM_BINAURAL_CREND_HEAD_ */ diff --git a/lib_rend/ivas_rom_binaural_crend_head_fx.c b/lib_rend/ivas_rom_binaural_crend_head_fx.c index be015058b..8b51d8f2a 100644 --- a/lib_rend/ivas_rom_binaural_crend_head_fx.c +++ b/lib_rend/ivas_rom_binaural_crend_head_fx.c @@ -57,33 +57,33 @@ const Word32 CRendBin_Combined_HRIR_latency_s_fx = 44741;/*Q-31*/ /* Sample Rate = 48000 */ const Word16 CRendBin_Combined_HRIR_max_num_iterations_48kHz = 1; -const UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 32000 */ const Word16 CRendBin_Combined_HRIR_max_num_iterations_32kHz = 1; -const UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; +const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 16000 */ const Word16 CRendBin_Combined_HRIR_max_num_iterations_16kHz = 1; -const UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz = 0; -const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[15]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -97,33 +97,33 @@ const Word32 CRendBin_FOA_HRIR_latency_s_fx = 44741; // Q31 /* Sample Rate = 48000 */ const Word16 CRendBin_FOA_HRIR_max_num_iterations_48kHz = 1; -const UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[4]={0, 0, 0, 0}; +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 32000 */ const Word16 CRendBin_FOA_HRIR_max_num_iterations_32kHz = 1; -const UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; +const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[4]={0, 0, 0, 0}; +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 16000 */ const Word16 CRendBin_FOA_HRIR_max_num_iterations_16kHz = 1; -const UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz = 0; -const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[4]={0, 0, 0, 0}; +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -136,33 +136,33 @@ const Word32 CRendBin_HOA2_HRIR_latency_s_fx = 44741; // Q31 /* Sample Rate = 48000 */ const Word16 CRendBin_HOA2_HRIR_max_num_iterations_48kHz = 1; -const UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 32000 */ const Word16 CRendBin_HOA2_HRIR_max_num_iterations_32kHz = 1; -const UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; +const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 16000 */ const Word16 CRendBin_HOA2_HRIR_max_num_iterations_16kHz = 1; -const UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz = 0; -const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[9]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -174,34 +174,34 @@ const Word32 CRendBin_HOA3_HRIR_latency_s_fx = 44741;/*Q-31*/ /* Sample Rate = 48000 */ const Word16 CRendBin_HOA3_HRIR_max_num_iterations_48kHz = 1; -const UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 32000 */ const Word16 CRendBin_HOA3_HRIR_max_num_iterations_32kHz = 1; -const UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; +const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 16000 */ const Word16 CRendBin_HOA3_HRIR_max_num_iterations_16kHz = 1; -const UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; +const UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz = 0; -const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[16]={0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f}; -const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[HOA3_CHANNELS]={0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f}; +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -213,35 +213,35 @@ const Word32 CRendBin_Combined_BRIR_latency_s_fx = 313176;/*Q-31*/ /* Sample Rate = 48000 */ const Word16 CRendBin_Combined_BRIR_max_num_iterations_48kHz = 22; -const UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} }; +const UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} }; const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {40, 40}; -const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}}; +const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}}; const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz = 98; -const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[15]={0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f}; -const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[15]={7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907,}; +const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[HRTF_LS_CHANNELS]={0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907,}; const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98},{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98}}; /* Sample Rate = 32000 */ const Word16 CRendBin_Combined_BRIR_max_num_iterations_32kHz = 22; -const UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} }; +const UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} }; const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {40, 40}; -const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160}},{{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160}},{{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160},{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160}},{{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160},{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160}},{{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160},{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160}},{{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160},{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160}}}; +const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160}},{{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160}},{{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160},{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160}},{{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160},{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160}},{{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160},{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160}},{{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160},{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160}}}; const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz = 97; -const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[15]={0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f}; -const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[15]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907,}; +const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[HRTF_LS_CHANNELS]={0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907,}; const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97},{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97}}; /* Sample Rate = 16000 */ const Word16 CRendBin_Combined_BRIR_max_num_iterations_16kHz = 23; -const UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNELS]={{23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23} }; +const UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23} }; const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {40, 40}; -const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23]={{{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80},{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80}},{{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80},{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80}},{{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80},{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80}},{{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80},{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80}},{{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80},{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80}},{{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80},{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80}},{{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80},{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80}},{{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80},{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80}},{{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80},{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80}},{{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80},{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80}},{{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80},{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80}},{{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80},{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80}},{{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80},{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80}},{{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80},{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80}},{{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80},{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80}}}; +const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]={{{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80},{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80}},{{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80},{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80}},{{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80},{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80}},{{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80},{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80}},{{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80},{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80}},{{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80},{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80}},{{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80},{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80}},{{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80},{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80}},{{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80},{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80}},{{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80},{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80}},{{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80},{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80}},{{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80},{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80}},{{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80},{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80}},{{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80},{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80}},{{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80},{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80}}}; const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz = 77; -const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[15]={0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f}; -const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[15]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}; +const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[HRTF_LS_CHANNELS]={0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}; const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]={{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77},{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77}}; //BRIR and HRIR coeff tables in Q29 -const Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][2955] ={ +const Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955] ={ { { -4881767, @@ -9213,7 +9213,7 @@ const Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][295 0, 0, 0, 0, }, }, }; -const Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][2955] ={ +const Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955] ={ { { 5294084, @@ -18185,7 +18185,7 @@ const Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][295 0, 0, 0, 0, }, }, }; -const Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][2819] ={ +const Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819] ={ { { -4883915, @@ -26737,7 +26737,7 @@ const Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][281 0, 0, 0, 0, 0, 0, 0, 0, }, }, }; -const Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][2819] ={ +const Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819] ={ { { 5241471, @@ -35289,7 +35289,7 @@ const Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][281 0, 0, 0, 0, 0, 0, 0, 0, }, }, }; -const Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][1774] ={ +const Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774] ={ { { 5815386, @@ -40721,7 +40721,7 @@ const Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][177 0, 0, 0, }, }, }; -const Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][1774] ={ +const Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774] ={ { { -2848100, @@ -46153,7 +46153,7 @@ const Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][177 0, 0, 0, }, }, }; -const Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 591356864, @@ -46965,7 +46965,7 @@ const Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[15][BINAURAL_CHANNELS][240 -40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, }, }, }; -const Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 11671574, @@ -47777,7 +47777,7 @@ const Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[15][BINAURAL_CHANNELS][240 74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, }, }, }; -const Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 684059456, @@ -48349,7 +48349,7 @@ const Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[15][BINAURAL_CHANNELS][160 -338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, }, }, }; -const Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 12131672, @@ -48921,7 +48921,7 @@ const Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[15][BINAURAL_CHANNELS][160 -154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, }, }, }; -const Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 665281280, @@ -49253,7 +49253,7 @@ const Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[15][BINAURAL_CHANNELS][80] 47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, }, }, }; -const Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 12014097, @@ -49585,7 +49585,7 @@ const Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[15][BINAURAL_CHANNELS][80] -284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[16][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 523696096, @@ -50451,7 +50451,7 @@ const Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[16][BINAURAL_CHANNELS][240] ={ 40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[16][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -94963336, @@ -51317,7 +51317,7 @@ const Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[16][BINAURAL_CHANNELS][240] ={ 50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[16][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 500112448, @@ -51927,7 +51927,7 @@ const Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[16][BINAURAL_CHANNELS][160] ={ 147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[16][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -95109368, @@ -52537,7 +52537,7 @@ const Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[16][BINAURAL_CHANNELS][160] ={ 11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[16][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 474517120, @@ -52891,7 +52891,7 @@ const Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[16][BINAURAL_CHANNELS][80] ={ -74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[16][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -95201168, @@ -53245,7 +53245,7 @@ const Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[16][BINAURAL_CHANNELS][80] ={ -7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[9][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 512962432, @@ -53733,7 +53733,7 @@ const Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[9][BINAURAL_CHANNELS][240] ={ -28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[9][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -150097296, @@ -54221,7 +54221,7 @@ const Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[9][BINAURAL_CHANNELS][240] ={ 21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[9][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 481896416, @@ -54565,7 +54565,7 @@ const Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[9][BINAURAL_CHANNELS][160] ={ 83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[9][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -150290032, @@ -54909,7 +54909,7 @@ const Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[9][BINAURAL_CHANNELS][160] ={ -6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[9][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 458548416, @@ -55109,7 +55109,7 @@ const Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[9][BINAURAL_CHANNELS][80] ={ 79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[9][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -150242784, @@ -55309,7 +55309,7 @@ const Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[9][BINAURAL_CHANNELS][80] ={ -54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[4][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 518734336, @@ -55527,7 +55527,7 @@ const Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[4][BINAURAL_CHANNELS][240] ={ -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[4][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -124898720, @@ -55745,7 +55745,7 @@ const Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[4][BINAURAL_CHANNELS][240] ={ -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[4][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 542228352, @@ -55899,7 +55899,7 @@ const Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[4][BINAURAL_CHANNELS][160] ={ -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[4][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -124746248, @@ -56053,7 +56053,7 @@ const Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[4][BINAURAL_CHANNELS][160] ={ -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[4][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 572464896, @@ -56143,7 +56143,7 @@ const Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[4][BINAURAL_CHANNELS][80] ={ -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[4][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -124641560, @@ -59586,6 +59586,348 @@ const Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS] -48022028, -25965224, -49312668, 19488414, 23572928, -15180562, -392990, -47734268, -2894808, 14061723, -6515466, }, }; + +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +const Word32 defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { + 131936432,125285536,105934832,77097344,45729324,19356880,2523696,0,0, + 0,1602425,4763253,5796595,5698884,5608690,5175704,3880368,2303444, + 1553033,1902670,2661537,3300414,3919560,4475624,4485288,3976468,3688169, + 3682129,3375844,2619661,1976758,1906026,2165066,2186943,1765500,1162325, + 671759,348160,140123,27783,0,0,0,148981,534991, + 939926,1281242,1547798,1665910,1550617,1228897,835102,478486,185757, + 0,0,0,0,4294,124554,284273,410840,479828, + 507343,493652,417417,278367,114890,0,0,0,0, + 0,0,0,0,0,29125,130728,242531,313264, + 326954,282528,204816,121735,46976,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,31943,114353,173543, + 205218,205755,176362,128043,69927,20803,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,3355,38117,83214,127372,170993,215553,257966, + 294607,327222,360643,395137,425738,452447,480096,507208,525462, + 533247,534186,526804,505463,469896,424799,372856,312190,242397, + 168711,95831,28319,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,102810,72074,0, + 226962,443858,219445,0,214882,1013209,77846,0,273535, + 1385798,289239,0,472983,1241648,688671,0,306821,870536, + 792153,0,115695,613375,552574,0,0,434462,205890, + 34762,26709,182938,117843,0 +}; +const Word32 defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { + 8209721,8156956,8050127,7984940,7992858,8011649,7974747,7910306,7917252, + 8038476,8174723,8228729,8192717,8124794,8070352,8029995,7989956,7953608, + 7931152,7912210,7870745,7803402,7745101,7727896,7735563,7724331,7693670, + 7672548,7668253,7662666,7647508,7638633,7652147,7680265,7699593,7698955, + 7689828,7687614,7690835,7685852,7667229,7645042,7629506,7617787,7601639, + 7578545,7554822,7537315,7524279,7507108,7481430,7453328,7431803,7415991, + 7395254,7364820,7335141,7319069,7310202,7296948,7280120,7270700,7273946, + 7282989,7288836,7292510,7303600,7327768,7359376,7389357,7418784,7458856, + 7515186,7577119,7632232,7684091,7741771,7803922,7858506,7897295,7924793, + 7950529,7975309,7989134,7983815,7964337,7942418,7920028,7885853,7832460, + 7773178,7719675,7667640,7605540,7531820,7456659,7388182,7322718,7251305, + 7173342,7099371,7039023,6989942,6943645,6900871,6876377,6876200,6891753, + 6912280,6938008,6976184,7027514,7081939,7129159,7169768,7212416,7260113, + 7303961,7334160,7353923,7375390,7399868,7413919,7410756,7397888,7384995, + 7371128,7347783,7311469,7269433,7231533,7198642,7162562,7118413,7073358, + 7038218,7011467,6978885,6936976,6896929,6866243,6838636,6804318,6763793, + 6726715,6699377,6677726,6654422,6630095,6613880,6612001,6619165,6625113, + 6629517,6642997,6668750,6697196,6718344,6734173,6753895,6779589,6802146, + 6813185,6816633,6823486,6836086,6844013,6839567,6830432,6829887,6834652, + 6833897,6825424,6817447,6817430,6823444,6827572,6826137,6824845,6832135, + 6847612,6860472,6863735,6867082,6885344,6912573,6928050,6933679,6949215, + 6980018,7009084,7024486,7037715,7065515,7103221,7130283,7141717,7156523, + 7182804,7191302,7148830,7066479,6973039,6845448,6642997,6369529,6067757, + 5757018,5407708,4989863,4529504,4091224,3695693,3270760,2711684,2000297, + 1252050,651123,273904,89170,20652,2843,209,134,134, + 125,117,92,75,75,75,58,50,50, + 58,50,41,41,50,41,41,41,41, + 41,41,41,41,41,41,41,41,41, + 41,41,41,41,41 +}; +const Word32 defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { + 8209721,8156956,8050144,7984965,7992850,8011640,7974756,7910323,7917252, + 8038484,8174707,8228738,8192709,8124794,8070361,8030003,7989948,7953583, + 7931127,7912202,7870737,7803402,7745101,7727896,7735563,7724331,7693679, + 7672548,7668236,7662658,7647491,7638624,7652147,7680265,7699609,7698964, + 7689820,7687597,7690827,7685844,7667229,7645050,7629472,7617779,7601639, + 7578545,7554822,7537315,7524288,7507133,7481447,7453337,7431803,7415982, + 7395229,7364812,7335141,7319077,7310185,7296931,7280120,7270700,7273955, + 7282998,7288836,7292494,7303583,7327776,7359401,7389382,7418776,7458856, + 7515186,7577127,7632241,7684082,7741787,7803939,7858523,7897295,7924793, + 7950529,7975309,7989125,7983824,7964320,7942426,7920062,7885853,7832443, + 7773194,7719675,7667640,7605556,7531829,7456675,7388199,7322726,7251305, + 7173333,7099379,7039032,6989967,6943653,6900880,6876377,6876226,6891753, + 6912271,6937999,6976184,7027514,7081931,7129151,7169768,7212416,7260122, + 7303961,7334160,7353940,7375398,7399868,7413910,7410731,7397871,7384978, + 7371145,7347791,7311477,7269450,7231542,7198633,7162554,7118413,7073358, + 7038218,7011475,6978885,6936976,6896920,6866226,6838628,6804310,6763785, + 6726707,6699369,6677709,6654414,6630095,6613889,6612010,6619148,6625071, + 6629508,6642989,6668750,6697204,6718352,6734190,6753920,6779597,6802146, + 6813210,6816641,6823495,6836095,6844030,6839559,6830457,6829904,6834677, + 6833905,6825416,6817455,6817421,6823428,6827555,6826129,6824837,6832135, + 6847620,6860472,6863735,6867082,6885336,6912582,6928059,6933679,6949232, + 6980026,7009084,7024477,7037706,7065489,7103188,7130275,7141708,7156497, + 7182812,7191285,7148847,7066488,6973047,6845439,6642997,6369529,6067757, + 5757001,5407699,4989863,4529504,4091224,3695702,3270751,2711693,2000297, + 1252050,651123,273904,89170,20652,2843,209,134,134, + 125,117,92,75,75,75,58,50,50, + 58,50,41,41,50,41,41,41,41, + 41,41,41,41,41,41,41,41,41, + 41,41,41,41,41 +}; +const Word32 defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { + 131125216,129227112,119736576,105149792,87165424,65548180,45102524,26414452,12630962, + 2261837,646258,0,0,0,362790,1269699,3305916,5226035, + 5552185,5544266,5313545,5242007,4972498,4406099,3304843,2138491,1245809, + 945832,1040724,1586856,2087488,2519669,2930509,3330210,3706959,3852988, + 3845069,3506438,3230889,3049963,3020838,2972117,2692944,2226269,1634369, + 1306206,1176284,1344056,1533169,1651817,1468073,1147695,736184,393929, + 141465,23622,0,0,0,0,0,0,0, + 0,0,31004,186025,403995,663840,869999,1052669,1200174, + 1230910,1195208,1010927,774704,504121,258100,82812,13824,0, + 0,0,0,0,0,0,0,0,0, + 0,35567,94757,127104,150189,159048,139586,103616,29662, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,13287,46305,75833,95294,77980,44426,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,13153,45768,78383,106434, + 117574,114487,101871,68719,36641,6039,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1476, + 5234,21072,40667,63619,89120,116098,144015,171932,199715, + 227901,255818,281723,304405,324941,341584,357824,373796,388962, + 403995,419296,437818,458621,488820,521301,557674,596329,636728, + 680886,727728,776315,821546,862751,897916,926773,952409,971870, + 980460,981802,955227,918049,865167,793897,713233,613106,507477, + 398224,342255,316082,334604,338228 +}; +const Word32 defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { + 8747993,8732977,8657866,8592845,8534553,8549703,8574332,8613196,8612450, + 8594632,8548151,8528631,8527079,8602383,8683241,8772412,8811402,8825092, + 8787822,8745552,8699960,8676052,8653847,8634210,8606620,8577981,8553109, + 8534922,8521190,8494783,8457906,8405301,8354525,8310963,8294462,8290268, + 8294278,8284279,8267812,8241648,8222362,8207531,8203647,8196752,8187852, + 8170672,8158450,8153660,8165857,8182684,8201064,8209352,8210920,8201391, + 8193506,8188086,8186669,8185008,8178398,8165219,8147653,8126564,8107262, + 8090653,8075973,8060647,8040892,8017060,7990510,7965369,7942812,7924139, + 7905508,7885266,7858574,7828903,7797253,7770124,7745051,7723047,7698192, + 7671231,7638683,7606840,7575458,7552800,7532081,7514280,7493736,7472068, + 7448614,7429295,7412736,7405756,7399180,7393182,7382990,7372018,7362119, + 7358680,7359552,7368629,7377118,7384718,7391127,7398953,7413675,7435679, + 7462522,7492302,7520043,7544714,7568412,7592915,7621662,7651325,7681599, + 7702873,7719423,7728886,7735043,7740672,7747517,7751812,7754412,7743650, + 7728089,7705339,7680970,7656341,7632308,7603568,7571683,7527366,7481606, + 7433699,7390347,7348345,7307132,7260525,7210319,7153108,7097458,7044149, + 6995864,6948351,6898883,6845179,6788657,6732512,6680016,6632990,6592154, + 6553113,6515029,6478094,6441947,6416664,6397714,6388260,6386465,6386851, + 6388319,6391700,6396364,6411102,6429029,6451720,6471844,6489796,6501641, + 6513435,6525204,6542518,6559405,6575670,6584344,6589771,6589813,6590845, + 6592531,6595845,6596365,6592707,6580091,6564161,6543961,6524642,6505902, + 6486113,6462969,6434800,6400113,6364034,6328861,6297445,6268521,6239597, + 6208098,6172732,6136241,6100909,6071330,6044722,6020084,5990858,5959116, + 5923599,5889046,5855634,5825838,5795177,5763938,5725518,5685253,5642211, + 5600763,5560540,5523688,5486661,5449525,5408043,5366612,5325264,5291257, + 5260940,5238031,5214778,5191290,5165126,5142795,5126186,5122067,5121799, + 5124433,5124877,5123837,5133241,5151268,5182239,5223192,5269715,5328527, + 5411331,5510141,5612029,5649811,5591443,5269488,4824515,4151102,3472472, + 2790361,2355655,2029229,1865232,1832432 +}; +const Word32 defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { + 8747984,8732969,8657857,8592837,8534561,8549686,8574315,8613188,8612450, + 8594632,8548151,8528622,8527070,8602392,8683241,8772404,8811402,8825109, + 8787822,8745552,8699951,8676044,8653847,8634226,8606620,8577964,8553100, + 8534914,8521190,8494808,8457931,8405310,8354525,8310963,8294471,8290276, + 8294278,8284287,8267820,8241639,8222362,8207540,8203664,8196752,8187826, + 8170663,8158450,8153685,8165873,8182684,8201064,8209360,8210945,8201416, + 8193531,8188095,8186669,8185008,8178398,8165219,8147653,8126539,8107237, + 8090644,8075973,8060664,8040875,8017043,7990510,7965369,7942812,7924122, + 7905499,7885283,7858574,7828903,7797270,7770116,7745034,7723056,7698192, + 7671222,7638675,7606840,7575466,7552809,7532089,7514280,7493736,7472068, + 7448597,7429287,7412753,7405756,7399163,7393174,7382981,7372009,7362111, + 7358680,7359560,7368637,7377126,7384718,7391135,7398970,7413692,7435679, + 7462514,7492293,7520026,7544705,7568403,7592915,7621688,7651341,7681582, + 7702873,7719423,7728877,7735026,7740663,7747517,7751829,7754437,7743650, + 7728080,7705330,7680970,7656349,7632308,7603568,7571700,7527383,7481623, + 7433716,7390363,7348353,7307132,7260525,7210327,7153125,7097475,7044149, + 6995872,6948359,6898883,6845179,6788657,6732520,6680024,6632990,6592154, + 6553113,6515037,6478102,6441947,6416664,6397714,6388269,6386457,6386843, + 6388327,6391700,6396347,6411102,6429029,6451712,6471844,6489796,6501624, + 6513427,6525213,6542518,6559405,6575653,6584327,6589763,6589813,6590845, + 6592531,6595836,6596365,6592716,6580099,6564169,6543978,6524642,6505894, + 6486122,6462994,6434817,6400122,6364034,6328852,6297428,6268521,6239597, + 6208090,6172723,6136241,6100909,6071330,6044722,6020076,5990842,5959107, + 5923599,5889037,5855617,5825829,5795169,5763921,5725518,5685253,5642194, + 5600755,5560548,5523688,5486661,5449508,5408026,5366603,5325256,5291257, + 5260949,5238040,5214778,5191281,5165134,5142795,5126194,5122075,5121799, + 5124441,5124877,5123854,5133241,5151259,5182230,5223192,5269715,5328527, + 5411340,5510149,5612037,5649820,5591435,5269472,4824498,4151094,3472472, + 2790378,2355663,2029237,1865240,1832432 +}; + +#ifndef NONBE_FIX_AVG_IAC_CLDFB_REVERB + +const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { + 130123416,130123416,128225040,123478832,118732624,113118568,104033232,94947768,85862304, + 75063144,64263984,53464828,43914296,34675820,25437480,17993766,11746601,5499437, + 1532229,985023,437818,0,0,0,0,0,0, + 0,343865,773496,1203261,2004810,3054258,4103707,4777480,4887673, + 4998000,5066316,4966727,4867271,4767816,4765534,4763253,4760971,4569174, + 4329998,4090822,3659312,3099355,2539533,2037290,1621350,1205543,880065, + 916304,952677,988916,1233058,1477200,1721342,1912602,2090441,2268413, + 2427327,2573490,2719788,2859643,2989834,3120025,3219078,3193576,3168075, + 3142574,2987686,2832665,2677778,2583691,2504771,2425851,2397128,2401692, + 2406255,2356594,2225464,2094333,1933137,1651280,1369423,1087566,924357, + 761148,597940,625051,699677,774302,854295,937779,1021128,1026631, + 915230,803830,670014,446676,223338,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,5100,30735, + 56371,81872,173140,264408,355542,419698,477144,534455,552037, + 543044,533918,485599,378494,271254,173946,115964,57982,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0, + 0,0,671,1476,2415,99723,261321,423054,646795, + 963549,1280302,1632087,2124129,2616037,3108080,3841982,4575885,5309922, + 6280181,7309766,8339216,8750996,8750996 +}; +const Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { + 9335246,9335246,9316514,9269680,9222847,9180350,9155201,9130044,9104894, + 9126688,9148473,9170267,9191549,9212688,9233844,9234423,9221295,9208167, + 9191205,9168497,9145789,9127997,9129884,9131780,9133676,9164823,9195978, + 9227125,9267550,9310290,9353038,9385225,9410374,9435531,9445170,9431538, + 9417907,9399855,9364128,9328409,9292682,9270670,9248667,9226655,9215783, + 9207688,9199593,9183605,9162356,9141108,9116244,9085961,9055678,9028608, + 9014432,9000255,8986078,8975962,8965845,8955728,8926108,8891606,8857103, + 8819145,8778896,8738639,8710806,8701604,8692401,8686227,8692209,8698190, + 8704171,8686706,8669232,8651767,8623917,8593466,8563024,8543554,8531399, + 8519252,8509748,8504203,8498667,8489716,8467083,8444459,8421835,8399773, + 8377711,8355649,8351698,8352268,8352847,8355833,8360430,8365027,8363484, + 8352721,8341959,8331028,8319460,8307884,8296308,8292063,8287827,8283582, + 8271142,8256647,8242159,8221389,8196442,8171494,8150547,8135607,8120659, + 8106465,8095225,8083992,8072760,8043073,8013394,7983706,7949422,7913997, + 7878564,7853893,7836394,7818904,7801472,7784141,7766811,7744782,7703972, + 7663169,7622359,7580802,7539253,7497696,7474266,7455367,7436467,7415496, + 7393140,7370784,7338471,7291235,7244007,7197551,7154232,7110914,7067595, + 7046615,7025627,7004647,6977485,6948779,6920073,6878751,6829015,6779278, + 6733644,6694184,6654724,6618804,6597044,6575284,6553524,6518183,6482842, + 6447501,6401632,6353137,6304634,6267229,6237215,6207201,6181045,6160677, + 6140310,6115580,6073427,6031275,5989122,5942817,5896503,5850198,5825150, + 5805428,5785707,5765742,5745626,5725510,5693398,5643285,5593180,5544358, + 5500720,5457091,5413454,5404126,5394797,5385469,5366930,5346085,5325239, + 5282164,5224274,5166376,5115566,5075376,5035186,5002731,5001238,4999736, + 4998243,4969436,4940630,4911823,4847290,4773822,4700355,4646282,4605153, + 4564023,4540250,4542523,4544788,4536869,4488241,4439612,4390983,4285488, + 4179984,4074489,4025282,3990150,3955019,3974925,4031523,4088129,4108127, + 4073222,4038317,3957300,3691818,3426335,3160861,2774481,2388110,2001740, + 1708239,1437966,1167685,1059581,1059581 +}; +const Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { + 9335246,9335246,9316514,9269689,9222855,9180358,9155201,9130035,9104869, + 9126663,9148465,9170258,9191540,9212688,9233827,9234415,9221295,9208175, + 9191213,9168488,9145755,9127963,9129867,9131772,9133676,9164831,9195978, + 9227133,9267550,9310281,9353021,9385200,9410357,9435506,9445153,9431522, + 9417899,9399855,9364119,9328384,9292648,9270653,9248658,9226663,9215792, + 9207688,9199593,9183596,9162348,9141100,9116236,9085953,9055678,9028617, + 9014432,9000255,8986070,8975962,8965853,8955745,8926116,8891614,8857103, + 8819145,8778888,8738631,8710789,8701587,8692385,8686219,8692200,8698181, + 8704162,8686697,8669232,8651775,8623917,8593466,8563016,8543546,8531390, + 8519244,8509739,8504203,8498675,8489724,8467100,8444468,8421844,8399773, + 8377703,8355641,8351681,8352252,8352830,8355817,8360414,8365019,8363475, + 8352721,8341959,8331037,8319469,8307893,8296316,8292072,8287835,8283591, + 8271142,8256647,8242151,8221381,8196433,8171494,8150547,8135616,8120676, + 8106482,8095250,8084009,8072777,8043081,8013385,7983698,7949405,7913972, + 7878547,7853876,7836386,7818904,7801481,7784150,7766819,7744790,7703980, + 7663161,7622350,7580793,7539244,7497696,7474258,7455358,7436459,7415487, + 7393132,7370776,7338471,7291244,7244016,7197560,7154241,7110914,7067587, + 7046607,7025627,7004647,6977485,6948770,6920064,6878742,6829006,6779270, + 6733644,6694184,6654724,6618813,6597053,6575301,6553549,6518191,6482842, + 6447492,6401623,6353137,6304643,6267229,6237215,6207201,6181037,6160677, + 6140310,6115580,6073427,6031275,5989122,5942817,5896512,5850207,5825167, + 5805445,5785723,5765750,5745626,5725493,5693382,5643276,5593180,5544375, + 5500729,5457074,5413429,5404109,5394789,5385478,5366939,5346093,5325247, + 5282172,5224282,5166384,5115574,5075384,5035195,5002739,5001238,4999736, + 4998243,4969436,4940630,4911823,4847290,4773814,4700338,4646274,4605153, + 4564023,4540258,4542523,4544788,4536878,4488249,4439612,4390983,4285480, + 4179984,4074489,4025282,3990150,3955019,3974925,4031523,4088129,4108127, + 4073222,4038317,3957292,3691809,3426327,3160844,2774473,2388110,2001740, + 1708239,1437966,1167685,1059573,1059573 +}; +#else +/* Sample Rate = 16000 */ + +const float defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ] = + {0.983044f, 0.960794f, 0.893756f, 0.783586f, 0.638963f, 0.477338f, 0.319879f, 0.183374f, 0.075909f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.003842f, 0.025288f, 0.035886f, + 0.037785f, 0.035991f, 0.034784f, 0.035091f, 0.034683f, 0.030849f, 0.023146f, 0.014061f, 0.007275f, + 0.005053f, 0.006930f, 0.010589f, 0.013905f, 0.016288f, 0.018404f, 0.020849f, 0.023164f, 0.024149f, + 0.023098f, 0.020635f, 0.018325f, 0.017381f, 0.017611f, 0.017534f, 0.015650f, 0.011786f, 0.007342f, + 0.004290f, 0.003732f, 0.005148f, 0.006838f, 0.007172f, 0.005579f, 0.002632f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000238f, 0.001738f, 0.003011f, 0.003910f, + 0.004120f, 0.003394f, 0.001769f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.002101f, 0.004247f, 0.006330f, 0.008300f, 0.010110f, 0.011735f, 0.013165f, 0.014384f, + 0.015345f, 0.015972f, 0.016191f}; + +const float defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ] = + {1.118974f, 1.115256f, 1.106210f, 1.096901f, 1.092316f, 1.094422f, 1.101140f, 1.107775f, 1.110000f, + 1.106535f, 1.099921f, 1.094914f, 1.095643f, 1.103178f, 1.114955f, 1.126292f, 1.132973f, 1.133288f, + 1.128471f, 1.121439f, 1.114842f, 1.109721f, 1.105480f, 1.100966f, 1.095650f, 1.090074f, 1.085225f, + 1.081525f, 1.078267f, 1.074026f, 1.067777f, 1.059839f, 1.051856f, 1.045772f, 1.042531f, 1.041432f, + 1.040607f, 1.038291f, 1.033910f, 1.028286f, 1.022846f, 1.018514f, 1.015152f, 1.011898f, 1.008047f, + 1.003762f, 0.999992f, 0.997770f, 0.997349f, 0.997960f, 0.998259f, 0.997177f, 0.994506f, 0.990883f, + 0.987207f, 0.984003f, 0.981133f, 0.977984f, 0.973950f, 0.968837f, 0.962915f, 0.956690f, 0.950584f, + 0.944679f, 0.938744f, 0.932399f, 0.925372f, 0.917663f, 0.909568f, 0.901511f, 0.893804f, 0.886455f, + 0.879155f, 0.871463f, 0.863142f, 0.854285f, 0.845334f, 0.836740f, 0.828656f, 0.820817f, 0.812713f, + 0.803960f, 0.794564f, 0.784952f, 0.775633f, 0.766881f, 0.758539f, 0.750156f, 0.741330f, 0.732004f, + 0.722524f, 0.713387f, 0.704919f, 0.697057f, 0.689419f, 0.681576f, 0.673350f, 0.664931f, 0.656703f, + 0.648997f, 0.641801f, 0.634760f, 0.627357f, 0.619192f, 0.610186f, 0.600526f, 0.590442f, 0.579952f, + 0.568762f, 0.556384f, 0.542389f, 0.526648f, 0.509355f, 0.490884f, 0.471542f, 0.451447f, 0.430550f, + 0.408842f, 0.386537f, 0.364126f, 0.342284f, 0.321675f, 0.302809f, 0.286016f, 0.271536f, 0.259639f, + 0.250691f, 0.245099f, 0.243192f}; + +const float defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ] = + {1.118974f, 1.115254f, 1.106207f, 1.096903f, 1.092317f, 1.094425f, 1.101145f, 1.107775f, 1.109999f, + 1.106540f, 1.099921f, 1.094912f, 1.095644f, 1.103178f, 1.114952f, 1.126292f, 1.132973f, 1.133288f, + 1.128472f, 1.121439f, 1.114842f, 1.109719f, 1.105481f, 1.100965f, 1.095650f, 1.090072f, 1.085224f, + 1.081527f, 1.078270f, 1.074025f, 1.067775f, 1.059840f, 1.051856f, 1.045772f, 1.042533f, 1.041433f, + 1.040611f, 1.038292f, 1.033911f, 1.028286f, 1.022844f, 1.018512f, 1.015153f, 1.011899f, 1.008050f, + 1.003762f, 0.999995f, 0.997769f, 0.997349f, 0.997959f, 0.998259f, 0.997178f, 0.994509f, 0.990883f, + 0.987204f, 0.984003f, 0.981133f, 0.977983f, 0.973949f, 0.968836f, 0.962914f, 0.956689f, 0.950583f, + 0.944681f, 0.938745f, 0.932399f, 0.925373f, 0.917662f, 0.909567f, 0.901511f, 0.893804f, 0.886456f, + 0.879153f, 0.871467f, 0.863138f, 0.854286f, 0.845334f, 0.836740f, 0.828656f, 0.820816f, 0.812712f, + 0.803961f, 0.794567f, 0.784951f, 0.775631f, 0.766882f, 0.758540f, 0.750158f, 0.741330f, 0.732005f, + 0.722523f, 0.713388f, 0.704920f, 0.697057f, 0.689418f, 0.681575f, 0.673352f, 0.664930f, 0.656706f, + 0.648998f, 0.641802f, 0.634762f, 0.627355f, 0.619192f, 0.610187f, 0.600527f, 0.590442f, 0.579953f, + 0.568763f, 0.556383f, 0.542389f, 0.526646f, 0.509355f, 0.490883f, 0.471543f, 0.451446f, 0.430550f, + 0.408843f, 0.386537f, 0.364127f, 0.342285f, 0.321676f, 0.302809f, 0.286016f, 0.271535f, 0.259640f, + 0.250692f, 0.245099f, 0.243192f}; + + +#endif +#endif + Word32 sine_table_Q31 [361] = { 187, -37478868, -74946000, -112390808, -149800880, -187165824, -224473232, -261712288, -298872128, -335940416, -372906880, @@ -59648,4 +59990,5 @@ Word32 cosine_table_Q31 [181] = { -2121044608, -2126584448, -2131476608, -2135719552, -2139311744, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, }; + #undef WMC_TOOL_SKIP diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index a3f7bab5d..2a661121b 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -93,6 +93,7 @@ extern const Word16 HRTF_MODEL_N_CPTS_VAR[HRTF_MODEL_N_SECTIONS]; extern const Word32 SincTable_fx[321]; +#ifndef FIX_638_ENERGIE_IAC_ROM_TABLES extern const Word32 defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ extern const Word32 defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ extern const Word32 defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ @@ -101,9 +102,16 @@ extern const Word32 defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC]; / extern const Word32 defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ extern const Word32 defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB +extern const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-27*/ +extern const Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ +extern const Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ +#else extern const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ extern const Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ extern const Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +#endif +#endif /*----------------------------------------------------------------------------------* * t-design and SN3D normalization table *----------------------------------------------------------------------------------*/ diff --git a/lib_rend/ivas_rom_rend_fx.c b/lib_rend/ivas_rom_rend_fx.c index 1fe8e6a38..df3dc4e22 100644 --- a/lib_rend/ivas_rom_rend_fx.c +++ b/lib_rend/ivas_rom_rend_fx.c @@ -207,6 +207,7 @@ const Word32 SincTable_fx[321] /*Q31*/ = { 8716980, 8185692, 7649294, 7108665, 6564643, 6017979, 5469361, 4919434, 4368840, 3818118, 3267783, 2718370, 2170290, 1624034, 1079948, 538481, }; +#ifndef FIX_638_ENERGIE_IAC_ROM_TABLES const Word32 defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { 131936432,125285536,105934832,77097344,45729324,19356880,2523696,0,0, 0,1602425,4763253,5796595,5698884,5608690,5175704,3880368,2303444, @@ -486,6 +487,7 @@ const Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ 4073222,4038317,3957292,3691809,3426327,3160844,2774473,2388110,2001740, 1708239,1437966,1167685,1059573,1059573 }; +#endif /*----------------------------------------------------------------------------------* * t-design and SN3D normalization table *----------------------------------------------------------------------------------*/ diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index fc434df90..bcc470ead 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -1296,6 +1296,9 @@ typedef struct ivas_binaural_td_rendering_struct TDREND_MIX_Listener_t *Listener_p; /* The virtual listener */ TDREND_HRFILT_FiltSet_t *HrFiltSet_p; /* HR filter set */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + TDREND_HRFILT_FiltSet_t **pHrFiltSet_p; /* pointer to HR filter set */ +#endif Word16 UseCommonDistAttenModel; /* Use common dist atten model (TRUE/FALSE) */ Word16 DistAttenEnabled; /* (TRUE/FALSE) */ @@ -1307,8 +1310,11 @@ typedef struct { Word32 binaural_latency_ns; BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + TDREND_HRFILT_FiltSet_t **hHrtfTD; +#else TDREND_HRFILT_FiltSet_t *hHrtfTD; - +#endif } TDREND_WRAPPER, *TDREND_WRAPPER_HANDLE; @@ -1330,6 +1336,9 @@ typedef struct ivas_hrtfs_structure Word16 max_num_iterations; Word16 inv_diffuse_weight_fx[MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] Q15 */ Word32 latency_s_fx; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + Word16 init_from_rom; +#endif Word16 gain_lfe_fx; // Q14 } HRTFS_DATA, *HRTFS_HANDLE; /* Main Crend structure */ @@ -1580,7 +1589,11 @@ typedef struct ivas_masa_external_rendering_struct #endif REVERB_STRUCT_HANDLE hReverb; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + HRTFS_PARAMBIN_HANDLE *hHrtfParambin; +#else HRTFS_PARAMBIN_HANDLE hHrtfParambin; +#endif VBAP_HANDLE hVBAPdata; Word32 *hoa_dec_mtx; diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index aea39eaa9..ab9c806f6 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -55,11 +55,13 @@ * Local constants *-------------------------------------------------------------------*/ -/* Maximum buffer length (per channel) in samples. - * Keep this separate from L_FRAME48k in case we want to support different size later */ -#define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +/* Maximum buffer length (total) in samples. */ +#define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING #define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ - +#else +#define MAX_BIN_DELAY_SAMPLES 50 /* Maximum supported rendering latency for binaural IRs */ +#endif /*-------------------------------------------------------------------* * Local types @@ -207,6 +209,17 @@ typedef struct MASA_EXT_REND_HANDLE hMasaExtRend; MASA_PREREND_HANDLE hMasaPrerend; } input_masa; + +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +typedef struct hrtf_handles +{ + IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF; + IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv; + IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin; + IVAS_DEC_HRTF_HANDLE hHrtfTD; +} hrtf_handles; +#endif + struct IVAS_REND { Word32 sampleRateOut; @@ -238,13 +251,26 @@ struct IVAS_REND RENDER_CONFIG_DATA *hRendererConfig; /* Renderer config pointer */ Word16 num_subframes; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hrtf_handles hHrtfs; +#else + IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF; + IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv; + IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin; + IVAS_DEC_HRTF_HANDLE hHrtfTD; +#endif }; /*-------------------------------------------------------------------* * Local function prototypes *-------------------------------------------------------------------*/ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig, hrtf_handles *hHrtfs ); +#else static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig ); +#endif + static void freeMasaExtRenderer( MASA_EXT_REND_HANDLE *hMasaExtRendOut ); static void intermidiate_ext_dirac_render( MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA renderer structure */ @@ -1414,7 +1440,9 @@ static ivas_error initIsmMasaRendering( IF( inputIsm->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING inputIsm->tdRendWrapper.hHrtfTD = NULL; +#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -1437,7 +1465,12 @@ static ivas_error setRendInputActiveIsm( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) + RENDER_CONFIG_DATA *hRendCfg +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + , + hrtf_handles *hrtfs +#endif +) { ivas_error error; rendering_context rendCtx; @@ -1477,7 +1510,11 @@ static ivas_error setRendInputActiveIsm( #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + inputIsm->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; +#else inputIsm->splitTdRendWrappers[i] = defaultTdRendWrapper(); +#endif } #endif @@ -1486,85 +1523,116 @@ static ivas_error setRendInputActiveIsm( error = IVAS_ERR_OK; move32(); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + inputIsm->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; +#endif + test(); - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ){ -#ifdef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ){ - return error; -} +#ifdef SPLIT_REND_WITH_HEAD_ROT_NEW + test(); + test(); + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) #else - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ){ - return error; -} + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) #endif -} -ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) -{ - IF( NE_32( ( error = initIsmMasaRendering( inputIsm, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) { - return error; +#ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#endif +#else +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#endif +#endif + { + return error; + } } -} -ELSE -{ - Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; - Word16 num_src; - Word16 ivas_format; - IF( EQ_32( getAudioConfigType( inConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) + ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) { - ivas_format = MC_FORMAT; + IF( NE_32( ( error = initIsmMasaRendering( inputIsm, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + { + return error; + } } ELSE { - ivas_format = ISM_FORMAT; - } - - move16(); - IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) - { - return error; - } - +#ifdef SPLIT_REND_WITH_HEAD_ROT_NEW +#ifndef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } - Word16 nchan_rend = num_src; - move16(); + if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + if ( ( error = ivas_reverb_open( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac, hRendCfg, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#else + if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } - test(); - IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; - IF( Src_p != NULL ) + if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - IF( Src_p->SrcSpatial_p != NULL ) + if ( ( error = ivas_reverb_open( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac, hRendCfg, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); + return error; } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); } - } + else if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#endif + { + return error; + } + } +#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT - /* Open TD renderer wrappers */ - FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) - { - if ( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->splitTdRendWrappers[i], inConfig, hRendCfg, NULL, *inputIsm->base.ctx.pOutSampleRate, SrcInd, &num_src ) ) != IVAS_ERR_OK ) +#else + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + Word16 num_src; + Word16 ivas_format; + IF( EQ_32( getAudioConfigType( inConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) + { + ivas_format = MC_FORMAT; + } + ELSE + { + ivas_format = ISM_FORMAT; + } + + move16(); + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; } - /* Assert same delay as main TD renderer */ - assert( inputIsm->splitTdRendWrappers[i].binaural_latency_ns == inputIsm->tdRendWrapper.binaural_latency_ns ); + Word16 nchan_rend = num_src; + move16(); + + test(); + IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) { - TDREND_SRC_t *Src_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[SrcInd[nS]]; + TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; IF( Src_p != NULL ) { IF( Src_p->SrcSpatial_p != NULL ) @@ -1572,25 +1640,68 @@ ELSE Src_p->SrcSpatial_p->q_Pos_p = Q31; move16(); } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[nS]->SrcSpatial_p; + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; SrcSpatial_p->q_Pos_p = Q31; move16(); } } - } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /* Open TD renderer wrappers */ + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->splitTdRendWrappers[i], inConfig, hRendCfg, NULL, *inputIsm->base.ctx.pOutSampleRate, SrcInd, &num_src ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Assert same delay as main TD renderer */ + assert( inputIsm->splitTdRendWrappers[i].binaural_latency_ns == inputIsm->tdRendWrapper.binaural_latency_ns ); + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } + } #endif - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { - IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { - return error; + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + { + return error; + } } +#ifdef SPLIT_REND_WITH_HEAD_ROT_NEW + ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#endif + { + return error; + } + } +#endif + +#endif /* SPLIT_REND_WITH_HEAD_ROT_NEW */ } -} -return IVAS_ERR_OK; + return IVAS_ERR_OK; } static void clearInputIsm( @@ -1619,14 +1730,18 @@ static void clearInputIsm( IF( inputIsm->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING inputIsm->tdRendWrapper.hHrtfTD = NULL; +#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { ivas_td_binaural_close_fx( &inputIsm->splitTdRendWrappers[i].hBinRendererTd ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING inputIsm->splitTdRendWrappers[i].hHrtfTD = NULL; +#endif } #endif @@ -2405,7 +2520,10 @@ static ivas_error initMcBinauralRendering( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, - UWord8 reconfigureFlag ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IVAS_DEC_HRTF_CREND_HANDLE hMixconv, +#endif + uint8_t reconfigureFlag ) { ivas_error error; Word32 binauralDelayNs; @@ -2442,7 +2560,9 @@ static ivas_error initMcBinauralRendering( IF( !reconfigureFlag || ( !useTDRend && inputMc->tdRendWrapper.hBinRendererTd != NULL ) ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING inputMc->tdRendWrapper.hHrtfTD = NULL; +#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -2453,7 +2573,9 @@ static ivas_error initMcBinauralRendering( IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; +#endif } } } @@ -2532,7 +2654,7 @@ static ivas_error initMcBinauralRendering( /* Open TD renderer wrappers */ FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { - IF( ( error = ivas_td_binaural_open_ext_fx( &inputMc->splitTdRendWrappers[i], inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate, SrcInd, &num_src ) ) != IVAS_ERR_OK ) + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputMc->splitTdRendWrappers[i], inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; } @@ -2576,9 +2698,30 @@ static ivas_error initMcBinauralRendering( { /* open CREND */ #ifdef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, NULL, outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + hMixconv, + outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), + IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, NULL, outSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + NULL, + outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), + IVAS_ERR_OK ) ) +#endif +#else +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + hMixconv, + outSampleRate ) ), + IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + NULL, + outSampleRate ) ), + IVAS_ERR_OK ) ) + +#endif #endif { return error; @@ -2635,7 +2778,9 @@ static ivas_error initMcMasaRendering( IF( inputMc->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING inputMc->tdRendWrapper.hHrtfTD = NULL; +#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -2726,7 +2871,12 @@ static ivas_error setRendInputActiveMc( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) + RENDER_CONFIG_DATA *hRendCfg +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + , + hrtf_handles *hrtfs +#endif +) { #ifdef SPLIT_REND_WITH_HEAD_ROT Word16 i; @@ -2761,7 +2911,15 @@ static ivas_error setRendInputActiveMc( setZeroPanMatrix_fx( inputMc->panGains_fx ); inputMc->customLsInput = defaultCustomLs(); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( hrtfs->hHrtfTD ) + { + inputMc->tdRendWrapper.binaural_latency_ns = (int32_t) ( hrtfs->hHrtfTD->latency_s_fx * 1000000000.f ); + } + inputMc->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; +#else inputMc->tdRendWrapper = defaultTdRendWrapper(); +#endif inputMc->crendWrapper = NULL; inputMc->hReverb = NULL; inputMc->hMcMasa = NULL; @@ -2784,7 +2942,15 @@ static ivas_error setRendInputActiveMc( #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( hrtfs->hHrtfTD ) + { + inputMc->splitTdRendWrappers[i].binaural_latency_ns = (int32_t) ( hrtfs->hHrtfTD->latency_s_fx * 1000000000.f ); + } + inputMc->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; +#else inputMc->splitTdRendWrappers[i] = defaultTdRendWrapper(); +#endif } IF( EQ_32( getAudioConfigType( outConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) @@ -2792,7 +2958,15 @@ static ivas_error setRendInputActiveMc( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, FALSE ) ), IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, + hrtfs->hSetOfHRTF, + FALSE ) ), + IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, FALSE ) ), + IVAS_ERR_OK ) ) +#endif { return error; } @@ -2844,17 +3018,26 @@ static void clearInputMc( IF( inputMc->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); +#ifndef NONBE_FIX_BINARY_BINAURAL_READING inputMc->tdRendWrapper.hHrtfTD = NULL; +#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; } +#else + IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) + { + ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); + } +#endif } #endif @@ -2952,10 +3135,18 @@ static ivas_error initSbaPanGainsForSbaOut( return error; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +static ivas_error updateSbaPanGains( + input_sba *inputSba, + const AUDIO_CONFIG outConfig, + RENDER_CONFIG_DATA *hRendCfg, + IVAS_DEC_HRTF_CREND_HANDLE hMixconv ) +#else static ivas_error updateSbaPanGains( input_sba *inputSba, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg ) +#endif { ivas_error error; AUDIO_CONFIG inConfig; @@ -3017,19 +3208,25 @@ static ivas_error updateSbaPanGains( else #endif { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING #ifdef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) - { - return error; - } +#else + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + +#endif +#else +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#endif +#endif { return error; } -#endif } } BREAK; @@ -3039,17 +3236,22 @@ static ivas_error updateSbaPanGains( { return error; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#endif +#else #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) - { - return error; - } #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#endif +#endif { return error; } -#endif BREAK; default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; @@ -3096,7 +3298,13 @@ static ivas_error setRendInputActiveSba( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) + RENDER_CONFIG_DATA *hRendCfg +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + , + hrtf_handles *hrtfs +#endif + +) { ivas_error error; rendering_context rendCtx; @@ -3143,6 +3351,9 @@ static ivas_error setRendInputActiveSba( { initRotGains_fx( inputSba->rot_gains_prev_fx[pos_idx] ); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + inputSba->cldfbRendWrapper.hHrtfFastConv = hrtfs->hHrtfFastConv; +#endif #else initRotGains_fx( inputSba->rot_gains_prev_fx ); #endif @@ -3155,8 +3366,11 @@ static ivas_error setRendInputActiveSba( return error; } } - +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg, hrtfs->hSetOfHRTF ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -3195,7 +3409,13 @@ static ivas_error setRendInputActiveMasa( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) /* Todo: This is not used at all within MASA. Support might be better to do after refactoring. */ + RENDER_CONFIG_DATA *hRendCfg +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + , + hrtf_handles *hrtfs +#endif + + ) /* Todo: This is not used at all within MASA. Support might be better to do after refactoring. */ { ivas_error error; rendering_context rendCtx; @@ -3246,7 +3466,11 @@ static ivas_error setRendInputActiveMasa( } ELSE { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig, hrtfs ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -3286,6 +3510,9 @@ ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, const Word32 outputSampleRate, const AUDIO_CONFIG outConfig, +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + const bool asHrtfBinary, +#endif const Word16 nonDiegeticPan, const Word32 nonDiegeticPanGain, /* Q31 */ const Word16 num_subframes ) @@ -3437,6 +3664,31 @@ ivas_error IVAS_REND_Open( move16(); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hIvasRend->hHrtfs.hHrtfFastConv = NULL; + hIvasRend->hHrtfs.hHrtfParambin = NULL; + hIvasRend->hHrtfs.hHrtfTD = NULL; + hIvasRend->hHrtfs.hSetOfHRTF = NULL; + IF( asHrtfBinary ) + { + IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( hIvasRend->hHrtfs.hHrtfTD ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( hIvasRend->hHrtfs.hSetOfHRTF ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &( hIvasRend->hHrtfs.hHrtfFastConv ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &( hIvasRend->hHrtfs.hHrtfParambin ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + } +#endif return IVAS_ERR_OK; } @@ -3583,7 +3835,11 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( /* Input inactive, skip. */ CONTINUE; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig, NULL ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -3964,7 +4220,11 @@ ivas_error IVAS_REND_AddInput_fx( Word32 maxNumInputsOfType; void *inputsArray; Word32 inputStructSize; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA *, hrtf_handles *hrtfs ); +#else ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA * ); +#endif Word32 inputIndex; /* Validate function arguments */ @@ -4034,8 +4294,11 @@ ivas_error IVAS_REND_AddInput_fx( *inputId = makeInputId( inConfig, inputIndex ); move16(); - +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, hIvasRend->hRendererConfig, &hIvasRend->hHrtfs ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = activateInput( (UWord8 *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, hIvasRend->hRendererConfig ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -4101,7 +4364,15 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( IF( EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, FALSE ) ), IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, + hIvasRend->hHrtfs.hSetOfHRTF, + FALSE ) ), + IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, FALSE ) ), + IVAS_ERR_OK ) ) +#endif { return error; } @@ -4932,7 +5203,15 @@ ivas_error IVAS_REND_SetHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, + hIvasRend->hHrtfs.hSetOfHRTF, + TRUE ) ), + IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), + IVAS_ERR_OK ) ) +#endif { return error; } @@ -5036,7 +5315,16 @@ ivas_error IVAS_REND_DisableHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, + hIvasRend->hHrtfs.hSetOfHRTF, + TRUE ) ), + IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), + IVAS_ERR_OK ) ) + +#endif { return error; @@ -9203,11 +9491,20 @@ void IVAS_REND_Close( ISAR_PRE_REND_close( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer ); #endif - closeHeadRotation( hIvasRend ); ivas_external_orientation_close_fx( &hIvasRend->hExternalOrientationData ); ivas_combined_orientation_close_fx( &hIvasRend->hCombinedOrientationData ); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + /* Fastconv HRTF memories */ + ivas_binaural_hrtf_close( &hIvasRend->hHrtfs.hHrtfFastConv ); + + /* Parametric binauralizer HRTF filters */ + ivas_HRTF_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfTD ) ); + ivas_HRTF_CRend_binary_close_fx( &( hIvasRend->hHrtfs.hSetOfHRTF ) ); + ivas_HRTF_fastconv_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfFastConv ) ); + ivas_HRTF_parambin_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfParambin ) ); +#endif free( hIvasRend ); *phIvasRend = NULL; @@ -9353,6 +9650,95 @@ void IVAS_REND_cldfbSynthesis_wrapper( #endif +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfTD == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + *hHrtfTD = &hIvasRend->hHrtfs.hHrtfTD; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfCRendHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfCRendHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hSetOfHRTF == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hSetOfHRTF = &hIvasRend->hHrtfs.hSetOfHRTF; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfFastConvHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfFastConvHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfFastConv == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfFastConv = &hIvasRend->hHrtfs.hHrtfFastConv; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfParamBinHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfParamBinHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfParambin == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfParambin = &hIvasRend->hHrtfs.hHrtfParambin; + + return IVAS_ERR_OK; +} +#endif + static ivas_error ivas_masa_ext_rend_dirac_rend_init( input_masa *inputMasa ) { @@ -9806,8 +10192,11 @@ static ivas_error ivas_masa_ext_rend_parambin_init( error = IVAS_ERR_OK; move32(); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hHrtfParambin = *( inputMasa->hMasaExtRend->hHrtfParambin ); +#else hHrtfParambin = inputMasa->hMasaExtRend->hHrtfParambin; - +#endif /* Set common variables and defaults */ output_Fs = *( inputMasa->base.ctx.pOutSampleRate ); move32(); @@ -9981,7 +10370,12 @@ static ivas_error ivas_masa_ext_rend_parambin_init( static ivas_error initMasaExtRenderer( input_masa *inputMasa, - const AUDIO_CONFIG outConfig ) + const AUDIO_CONFIG outConfig +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + , + hrtf_handles *hrtfs +#endif +) { Word16 i; ivas_error error; @@ -10011,7 +10405,11 @@ static ivas_error initMasaExtRenderer( hMasaExtRend->hDiracDecBin = NULL; #endif hMasaExtRend->hReverb = NULL; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + hMasaExtRend->hHrtfParambin = &hrtfs->hHrtfParambin; +#else hMasaExtRend->hHrtfParambin = NULL; +#endif hMasaExtRend->hVBAPdata = NULL; hMasaExtRend->hoa_dec_mtx = NULL; @@ -10110,7 +10508,11 @@ static ivas_error initMasaExtRenderer( { IF( NE_16( hMasaExtRend->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( inputMasa->hMasaExtRend->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &inputMasa->hMasaExtRend->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -10204,7 +10606,11 @@ static void freeMasaExtRenderer( IF( hMasaExtRend->hHrtfParambin != NULL ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + ivas_HRTF_parambin_binary_close_fx( hMasaExtRend->hHrtfParambin ); +#else ivas_HRTF_parambin_binary_close_fx( &hMasaExtRend->hHrtfParambin ); +#endif } IF( hMasaExtRend->hVBAPdata != NULL ) diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index 54903bc5c..eea8a9548 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -116,6 +116,9 @@ ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, /* i/o: Pointer to renderer handle */ const Word32 outputSampleRate, /* i : output sampling rate */ const IVAS_AUDIO_CONFIG outConfig, /* i : output audio config */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + const bool asHrtfBinary, /* i : load hrtf binary file */ +#endif const Word16 nonDiegeticPan, /* i : non-diegetic object flag */ const Word32 nonDiegeticPanGain, /* i : non-diegetic panning gain Q31 */ const Word16 num_subframes /* i : number of subframes */ @@ -184,6 +187,35 @@ ivas_error IVAS_REND_GetDelay_fx( Word16 *nSamples, /* o : Renderer delay in samples */ Word32 *timeScale /* o : Time scale of the delay, equal to renderer output sampling rate */ ); +ivas_error IVAS_REND_GetDelay( + IVAS_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ + int16_t *nSamples, /* o : Renderer delay in samples */ + int32_t *timeScale /* o : Time scale of the delay, equal to renderer output sampling rate */ +); + +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +/*! r: error code */ +ivas_error IVAS_REND_GetHrtfHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ +); + +/*! r: error code */ +ivas_error IVAS_REND_GetHrtfCRendHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +); + +ivas_error IVAS_REND_GetHrtfFastConvHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ +); + +ivas_error IVAS_REND_GetHrtfParamBinHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +); +#endif /* Functions to be called during rendering */ diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index c2e3d8a2a..af13fe866 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -35,6 +35,9 @@ #include "prot_fx.h" #include "ivas_prot_rend_fx.h" #include "ivas_prot_fx.h" +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +#include "ivas_rom_binaural_crend_head.h" +#endif /*---------------------------------------------------------------------* * Local structures @@ -189,6 +192,16 @@ static ivas_error check_hrtf_binary_header( ivas_hrtfs_header_t *hrtf_header ) { /* Check the renderer type */ + +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM ) && + ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_FASTCONV ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) && + ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_PARAMETRIC ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) && + ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_REVERB_ALL ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Header of HRTF binary file not compliant (renderer type)" ); + } +#else if ( ( hrtf_header->rend_type != RENDERER_BINAURAL_MIXER_CONV ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_MIXER_CONV_ROOM ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_FASTCONV ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_FASTCONV_ROOM ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_PARAMETRIC ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_PARAMETRIC_ROOM ) && @@ -196,7 +209,7 @@ static ivas_error check_hrtf_binary_header( { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Header of HRTF binary file not compliant (renderer type)" ); } - +#endif /* Check the output format of the decoder */ if ( ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_FOA ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED ) ) @@ -225,7 +238,7 @@ static ivas_error read_hrtf_binary_header( FILE *f_hrtf ) { /* HRTF Header */ - /* Renderer type (4 bytes) : See "RENDERER_TYPE" */ + /* Renderer type (4 bytes) : See "HRTF_READER_RENDERER_TYPE" */ /* Input configuration (4 bytes) : See "BINAURAL_INPUT_AUDIO_CONFIG" */ /* Sampling Frequency (4 bytes) */ /* Raw data size (4 bytes) */ @@ -332,6 +345,7 @@ static void LoadBSplineBinaryITD( return; } + /*-------------------------------------------------------------------* * LoadBSplineBinary() * @@ -348,7 +362,10 @@ static ivas_error LoadBSplineBinary( float f_tmp_latency_s; + +#ifndef FIX_638_ENERGIE_IAC_ROM_TABLES float f_tmp_lr_energy_and_iac_dyn[LR_IAC_LENGTH_NR_FC]; +#endif fread( &f_tmp_latency_s, sizeof( float ), 1, f_hrtf ); HrFiltSet_p->latency_s_fx = float_to_fix( f_tmp_latency_s, Q31 ); @@ -534,11 +551,16 @@ static ivas_error LoadBSplineBinary( LoadBSplineBinaryITD( &HrFiltSet_p->ModelParamsITD, f_hrtf ); } +#ifndef FIX_638_ENERGIE_IAC_ROM_TABLES /* left/right energy and interaural coherence for late reverb */ FOR( i = 0; i < 3; i++ ) { fread( f_tmp_lr_energy_and_iac_dyn, sizeof( const float ), LR_IAC_LENGTH_NR_FC, f_hrtf ); HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + if ( HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } IF( i == 2 ) { floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ @@ -549,11 +571,286 @@ static ivas_error LoadBSplineBinary( } HrFiltSet_p->lr_energy_and_iac_fx[i] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[i]; } +#endif return IVAS_ERR_OK; } +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +/*-------------------------------------------------------------------* + * set_default_reverb_iac_energy() + * + * Loads reverb data from file. + --------------------------------------------------------------------*/ + +static ivas_error set_default_reverb_iac_energy( + IVAS_DEC_HRTF_HANDLE HrFiltSet_p /* i/o: HR filter model parameter structure */ +) +{ + int16_t i; +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + int16_t lr_iac_len; +#endif + + if ( HrFiltSet_p == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + lr_iac_len = LR_IAC_LENGTH_NR_FC; + if ( HrFiltSet_p->SampleRate == 16000 ) + { + lr_iac_len = LR_IAC_LENGTH_NR_FC_16KHZ; + } +#endif + + if ( HrFiltSet_p->ModelParams.modelROM == 0 ) + { + for ( i = 0; i < 3; i++ ) + { +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( lr_iac_len * sizeof( float ) ); +#else + HrFiltSet_p->lr_energy_and_iac_dyn[i] = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( float ) ); +#endif +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } +#endif + } + switch ( HrFiltSet_p->SampleRate ) + { + case 48000: + mvl2l( defaultHRIR_left_avg_power_48kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[0], LR_IAC_LENGTH_NR_FC ); + mvl2l( defaultHRIR_right_avg_power_48kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[1], LR_IAC_LENGTH_NR_FC ); + mvl2l( defaultHRIR_coherence_48kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[2], LR_IAC_LENGTH_NR_FC ); + break; + case 32000: + mvl2l( defaultHRIR_left_avg_power_32kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[0], LR_IAC_LENGTH_NR_FC ); + mvl2l( defaultHRIR_right_avg_power_32kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[1], LR_IAC_LENGTH_NR_FC ); + mvl2l( defaultHRIR_coherence_32kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[2], LR_IAC_LENGTH_NR_FC ); + break; + case 16000: +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + floatToFixed_arr32( defaultHRIR_coherence_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[2], Q27, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[1], Q23, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ + floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[0], Q23, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ +#else + mvl2l( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[0], LR_IAC_LENGTH_NR_FC ); + mvl2l( defaultHRIR_right_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[1], LR_IAC_LENGTH_NR_FC ); + mvl2l( defaultHRIR_coherence_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[2], LR_IAC_LENGTH_NR_FC ); +#endif + break; + } + } + else + { + switch ( HrFiltSet_p->SampleRate ) + { + case 48000: + HrFiltSet_p->lr_energy_and_iac_fx[0] = defaultHRIR_left_avg_power_48kHz_fx; + HrFiltSet_p->lr_energy_and_iac_fx[1] = defaultHRIR_right_avg_power_48kHz_fx; + HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_48kHz_fx; + break; + case 32000: + HrFiltSet_p->lr_energy_and_iac_fx[0] = defaultHRIR_left_avg_power_32kHz_fx; + HrFiltSet_p->lr_energy_and_iac_fx[1] = defaultHRIR_right_avg_power_32kHz_fx; + HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_32kHz_fx; + break; + case 16000: +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + for ( i = 0; i < 3; i++ ) + { + HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( lr_iac_len * sizeof( float ) ); + if ( HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + } + floatToFixed_arr32( defaultHRIR_coherence_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[2], Q27, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[1], Q23, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ + floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrFiltSet_p->lr_energy_and_iac_dyn_fx[0], Q23, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ + HrFiltSet_p->lr_energy_and_iac_fx[0] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[0]; + HrFiltSet_p->lr_energy_and_iac_fx[1] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[1]; + HrFiltSet_p->lr_energy_and_iac_fx[2] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[2]; +#else + HrFiltSet_p->lr_energy_and_iac_fx[0] = defaultHRIR_left_avg_power_16kHz_fx; + HrFiltSet_p->lr_energy_and_iac_fx[1] = defaultHRIR_right_avg_power_16kHz_fx; + HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_16kHz_fx; +#endif + + + break; + } + } + + return IVAS_ERR_OK; +} + +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +/*-------------------------------------------------------------------* + * load_reverb_from_binary() + * + * Loads reverb data from file. + --------------------------------------------------------------------*/ + +static ivas_error load_reverb_from_binary( + IVAS_DEC_HRTF_HANDLE HrFiltSet_p, /* i/o: HR filter model parameter structure */ + FILE *f_hrtf /* i : HR filter data file handle */ +) +{ + int16_t i; + bool is_reverb; + ivas_error header_check_result; + ivas_hrtfs_file_header_t hrtfs_file_header; + int16_t hrtf_id; + ivas_hrtfs_header_t hrtf_header; + int32_t hrtf_data_size_max; + char *hrtf_data; +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + int16_t lr_iac_len; + float f_tmp_lr_energy_and_iac_dyn[LR_IAC_LENGTH_NR_FC]; + + if ( HrFiltSet_p == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + lr_iac_len = LR_IAC_LENGTH_NR_FC; + if ( HrFiltSet_p->SampleRate == 16000 ) + { + lr_iac_len = LR_IAC_LENGTH_NR_FC_16KHZ; + } +#endif + + header_check_result = IVAS_ERR_OK; + + if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) + { + return header_check_result; + } + + is_reverb = FALSE; + hrtf_data_size_max = hrtfs_file_header.max_data_size; + + /* Allocate the memory */ + + if ( hrtf_data_size_max == 0 ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (hrtf_data_size_max)" ); + } + + hrtf_data = (char *) malloc( hrtf_data_size_max ); + if ( hrtf_data == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + + for ( hrtf_id = 0; ( hrtf_id < hrtfs_file_header.nb_hrtf ) && ( !is_reverb ); hrtf_id++ ) + { + if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK ) + { + free( hrtf_data ); + return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "HRTF binary file not compliant (number of HRTF)" ); + } + + if ( ( header_check_result = check_hrtf_binary_header( &hrtf_header ) ) != IVAS_ERR_OK ) + { + free( hrtf_data ); + return header_check_result; + } + + is_reverb = ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_REVERB_ALL ); + if ( !is_reverb ) + { + if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) + { + free( hrtf_data ); + return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" ); + } + } + } + + free( hrtf_data ); + + if ( is_reverb ) + { + /* left/right energy and interaural coherence for late reverb */ + FOR( i = 0; i < 3; i++ ) + { +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + if ( HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + fread( f_tmp_lr_energy_and_iac_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); + IF( i == 2 ) + { + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + } + ELSE + { + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q23, lr_iac_len ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ + } + HrFiltSet_p->lr_energy_and_iac_fx[i] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[i]; +#else + HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( Word32 ) ); + if ( HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + fread( f_tmp_lr_energy_and_iac_dyn, sizeof( const float ), LR_IAC_LENGTH_NR_FC_16KHZ, f_hrtf ); + IF( i == 2 ) + { + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + } + ELSE + { + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q23, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q23 for i=0,1 */ + } + HrFiltSet_p->lr_energy_and_iac_fx[i] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[i]; +#endif + } + } + else + { + if ( ( header_check_result = set_default_reverb_iac_energy( HrFiltSet_p ) ) != IVAS_ERR_OK ) + { + return header_check_result; + } + +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; +#else + return IVAS_ERR_FAILED_FILE_READ; +#endif + } + + return IVAS_ERR_OK; +} +#endif + +/*---------------------------------------------------------------------* + * load_reverb_binary() + * + * Load HRTF binary data into the HRTF handle + *---------------------------------------------------------------------*/ + +ivas_error load_reverb_binary( + IVAS_DEC_HRTF_HANDLE hHrtf, /* i/o: HRTF handle */ + const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ +) +{ + fseek( hrtfReader->file, 0, SEEK_SET ); + + return load_reverb_from_binary( hHrtf, hrtfReader->file ); +} +#endif /*-------------------------------------------------------------------* * TDREND_MIX_LoadHRTF() * @@ -566,7 +863,9 @@ static ivas_error TDREND_MIX_LoadHRTF( ) { int16_t tmp; +#ifndef NONBE_FIX_BINARY_BINAURAL_READING ivas_error error; +#endif bool is_tdrend; ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; @@ -575,12 +874,36 @@ static ivas_error TDREND_MIX_LoadHRTF( int32_t hrtf_data_size_max; char *hrtf_data; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + header_check_result = IVAS_ERR_OK; +#else error = IVAS_ERR_OK; - +#endif if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + + /* try if it is old format for BE tests*/ + fseek( f_hrtf, 0, SEEK_SET ); + if ( fread( &tmp, 1, sizeof( int16_t ), f_hrtf ) == 0 ) + { + header_check_result = IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" ); + } + + HrFiltSet_p->FilterMethod = (TDREND_HRFILT_Method_t) tmp; + + if ( HrFiltSet_p->FilterMethod != TDREND_HRFILT_Method_BSplineModel ) + { + header_check_result = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); + } + else + { + header_check_result = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); + } + return header_check_result; +#endif } is_tdrend = FALSE; @@ -611,7 +934,11 @@ static ivas_error TDREND_MIX_LoadHRTF( return header_check_result; } +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + is_tdrend = ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD ); +#else is_tdrend = ( hrtf_header.rend_type == RENDERER_BINAURAL_OBJECTS_TD ); +#endif if ( !is_tdrend ) { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) @@ -634,19 +961,35 @@ static ivas_error TDREND_MIX_LoadHRTF( if ( HrFiltSet_p->FilterMethod != TDREND_HRFILT_Method_BSplineModel ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + header_check_result = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); +#else error = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); +#endif } else { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + header_check_result = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); +#else error = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); +#endif } } else { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; +#else return IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "HR filter not found in binary file." ); +#endif } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + return header_check_result; +#else return error; +#endif } @@ -737,7 +1080,76 @@ static void HRTF_energy_sections_precalc( return; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +/*---------------------------------------------------------------------* + * dealloc_HRTF_binary() + * + * Deallocated memory allocated by load_HRTF_binary + *---------------------------------------------------------------------*/ + +void destroy_td_hrtf( + IVAS_DEC_HRTF_HANDLE *hHrtf /* i/o: HRTF handle */ +) +{ + int16_t i; + + if ( ( hHrtf == NULL ) || ( *hHrtf == NULL ) ) + { + return; + } + if ( !( *hHrtf )->ModelParams.modelROM ) + { + if ( ( *hHrtf )->ModelParams.UseItdModel ) + { + free( ( *hHrtf )->ModelParamsITD.elevKSeq_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.azimKSeq_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.W_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.azimBsShape_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.elevBsShape_dyn_fx ); + } + free( ( *hHrtf )->ModelParams.elevKSeq_dyn_fx ); + free( ( *hHrtf )->ModelParams.azim_start_idx_dyn ); + free( ( *hHrtf )->ModelParams.azimDim2_dyn ); + free( ( *hHrtf )->ModelParams.azimDim3_dyn ); + free( ( *hHrtf )->ModelParams.AlphaL_dyn_fx ); + free( ( *hHrtf )->ModelParams.AlphaR_dyn_fx ); + free( ( *hHrtf )->ModelParams.azimSegSamples_dyn ); + + free( ( *hHrtf )->ModelParams.azimShapeIdx_dyn ); + free( ( *hHrtf )->ModelParams.azimShapeSampFactor_dyn ); + free( ( *hHrtf )->ModelParams.elevBsShape_dyn_fx ); + + for ( i = 0; i < ( *hHrtf )->ModelParams.num_unique_azim_splines; i++ ) + { + free( ( *hHrtf )->ModelParams.azimBsShape_dyn_fx[i] ); + } + free( ( *hHrtf )->ModelParams.azimBsShape_dyn_fx ); + + free( (void *) ( *hHrtf )->ModelParams.azimBsShape_fx ); /* void* cast needed to please both gcc and Visual studio compilers. Deallocating const float** should be fine and gcc agrees, but Visual studio complains. */ + for ( i = 0; i < ( *hHrtf )->ModelParams.elevDim3; i++ ) + { + free( ( *hHrtf )->ModelParams.azimKSeq_fx[i] ); + } + free( ( *hHrtf )->ModelParams.azimKSeq_fx ); + + free( ( *hHrtf )->ModelParams.EL_dyn_fx ); + free( ( *hHrtf )->ModelParams.ER_dyn_fx ); + + free( ( *hHrtf )->ModelEval.hrfModL_fx ); + free( ( *hHrtf )->ModelEval.hrfModR_fx ); + + for ( i = 0; i < 3; i++ ) + { + free( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ); + } + } + + ivas_HRTF_binary_close_fx( hHrtf ); + + return; +} +#else /*---------------------------------------------------------------------* * dealloc_HRTF_binary() * @@ -805,6 +1217,7 @@ ivas_error dealloc_HRTF_binary( return error; } +#endif /*---------------------------------------------------------------------* * create_HRTF_from_rawdata() @@ -829,7 +1242,11 @@ static ivas_error create_HRTF_from_rawdata( { if ( ( ( *hHRTF ) = (HRTFS_HANDLE) malloc( sizeof( HRTFS_DATA ) ) ) == NULL ) { +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary data\n" ); +#else return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Can not allocate memory for HRTF binary data\n" ); +#endif } if ( ( error = ivas_hrtf_init( *hHRTF ) ) != IVAS_ERR_OK ) @@ -842,6 +1259,9 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERR_INTERNAL; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + ( *hHRTF )->init_from_rom = 0; +#endif hrtf_data_rptr = hrtf_data; /* latency_s */ @@ -1070,10 +1490,14 @@ static ivas_error create_HRTF_from_rawdata( static ivas_error create_fastconv_HRTF_from_rawdata( - HRTFS_FASTCONV_HANDLE *hHRTF, /* i/o: HRTF FastConv handle */ - char *hrtf_data, /* i : pointer to binary file */ - RENDERER_TYPE rend_type, /* i : Renderer type */ - BINAURAL_INPUT_AUDIO_CONFIG input_cfg /* i : Input binaural config */ + HRTFS_FASTCONV_HANDLE *hHRTF, /* i/o: HRTF FastConv handle */ + char *hrtf_data, /* i : pointer to binary file */ +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + HRTF_READER_RENDERER_TYPE rend_type, /* i : Renderer type */ +#else + RENDERER_TYPE rend_type, /* i : Renderer type */ +#endif + BINAURAL_INPUT_AUDIO_CONFIG input_cfg /* i : Input binaural config */ ) { int16_t i, j; @@ -1082,24 +1506,63 @@ static ivas_error create_fastconv_HRTF_from_rawdata( float f_tmp_ntaps_max[BINAURAL_NTAPS_MAX]; float f_tmp_brir_reverb[CLDFB_NO_CHANNELS_MAX]; char *hrtf_data_rptr; +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + ivas_error error; +#endif + ( *hHRTF )->allocate_init_flag = 0; + +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) + { + if ( ( error = ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, RENDERER_BINAURAL_FASTCONV, ( *hHRTF )->allocate_init_flag ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) + { + if ( ( error = ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, RENDERER_BINAURAL_FASTCONV_ROOM, ( *hHRTF )->allocate_init_flag ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "renderer type not compliant" ); + } +#else ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, rend_type, ( *hHRTF )->allocate_init_flag ); +#endif hrtf_data_rptr = hrtf_data; +#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT /* BINAURAL_CONVBANDS */ if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); } hrtf_data_rptr += sizeof( uint16_t ); +#endif - /* HRIR */ +/* HRIR */ +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); ( *hHRTF )->FASTCONV_HRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); +#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif if ( HRTF_LS_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { @@ -1150,13 +1613,25 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) +#endif { /* HRIR_HOA3 */ f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_HOA3_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); +#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif + if ( HOA3_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA3_CHANNELS)" ); @@ -1205,7 +1680,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) +#endif { /* HRIR_HOA2 */ f_tmp = *( (float *) ( hrtf_data_rptr ) ); @@ -1217,6 +1696,13 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } hrtf_data_rptr += sizeof( uint16_t ); +#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif if ( BINAURAL_NTAPS_SBA != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS_SBA)" ); @@ -1260,12 +1746,25 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) +#endif { /* HRIR_FOA */ f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_FOA_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); + +#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif + if ( FOA_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (FOA_CHANNELS)" ); @@ -1315,13 +1814,25 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } - /* BRIR */ +/* BRIR */ +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_BRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); +#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif + if ( HRTF_LS_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_LS_CHANNELS)" ); @@ -1378,6 +1889,8 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } hrtf_data_rptr += sizeof( uint16_t ); + +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); @@ -1385,6 +1898,16 @@ static ivas_error create_fastconv_HRTF_from_rawdata( memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); +#else // old binary file is wrong +#include "ivas_rom_binauralRenderer.h" + memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + + memcpy( f_tmp_brir_reverb, fastconvReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); +#endif } return IVAS_ERR_OK; @@ -1408,6 +1931,9 @@ ivas_error load_fastconv_HRTF_from_binary( ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + int16_t asFastconv = 0; +#endif f_hrtf = hrtfReader->file; @@ -1439,7 +1965,11 @@ ivas_error load_fastconv_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) ) +#else if ( ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) +#endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { @@ -1453,6 +1983,9 @@ ivas_error load_fastconv_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + asFastconv = 1; +#endif } else { @@ -1461,6 +1994,18 @@ ivas_error load_fastconv_HRTF_from_binary( } free( hrtf_data ); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( asFastconv ) + { + return IVAS_ERR_OK; + } + else + { + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; + } +#else + return IVAS_ERR_OK; +#endif return IVAS_ERR_OK; } @@ -1565,6 +2110,9 @@ ivas_error load_parambin_HRTF_from_binary( ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + int16_t asParam = 0; +#endif f_hrtf = hrtfReader->file; @@ -1599,7 +2147,12 @@ ivas_error load_parambin_HRTF_from_binary( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } + +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ +#else if ( hrtf_header.rend_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ +#endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { @@ -1613,6 +2166,9 @@ ivas_error load_parambin_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + asParam = 1; +#endif } else { @@ -1620,7 +2176,18 @@ ivas_error load_parambin_HRTF_from_binary( } } free( hrtf_data ); - +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( asParam ) + { + return IVAS_ERR_OK; + } + else + { + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; + } +#else + return IVAS_ERR_OK; +#endif return IVAS_ERR_OK; } @@ -1681,7 +2248,11 @@ ivas_error create_SetOfHRTF_from_binary( hHRTF = NULL; if ( hrtf_header.frequency == output_Fs ) { +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) +#else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV ) +#endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { @@ -1700,7 +2271,11 @@ ivas_error create_SetOfHRTF_from_binary( hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_foa ); } } +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + else if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM ) +#else else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) +#endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { @@ -1725,13 +2300,15 @@ ivas_error create_SetOfHRTF_from_binary( } free( hrtf_data ); - if ( ( ( *hSetOfHRTF ).hHRTF_hrir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_brir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_hoa3 == NULL ) ) +#ifndef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( ( *hSetOfHRTF ).hHRTF_hrir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_brir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_foa == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_hoa2 == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_hoa3 == NULL ) ) { if ( destroy_SetOfHRTF( hSetOfHRTF ) != IVAS_ERR_OK ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create all the HRTF from binary file" ); } } +#endif return IVAS_ERR_OK; } @@ -1741,43 +2318,54 @@ ivas_error create_SetOfHRTF_from_binary( * Destroy the HRTF CRend handle *---------------------------------------------------------------------*/ -static ivas_error destroy_HRTF( - HRTFS_HANDLE *hHRTF /* i/o: HRTF CRend handle */ -) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +static void destroy_HRTF +#else +static ivas_error destroy_HRTF +#endif + ( + HRTFS_HANDLE *hHRTF /* i/o: HRTF CRend handle */ + ) { uint16_t i, j; - if ( *hHRTF != NULL && hHRTF != NULL ) +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + test(); + test(); + IF( *hHRTF != NULL && hHRTF != NULL && ( *hHRTF )->init_from_rom == 0 ) +#else + IF( *hHRTF != NULL && hHRTF != NULL ) +#endif { - for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) + FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) { - for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( ( *hHRTF )->pIndex_frequency_max[i][j] != NULL ) + IF( ( *hHRTF )->pIndex_frequency_max[i][j] != NULL ) { free( ( *hHRTF )->pIndex_frequency_max[i][j] ); } - if ( ( *hHRTF )->pOut_to_bin_re_fx[i][j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_re_fx[i][j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_re_fx[i][j] ); } - if ( ( *hHRTF )->pOut_to_bin_im_fx[i][j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_im_fx[i][j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_im_fx[i][j] ); } } } - for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( ( *hHRTF )->pIndex_frequency_max_diffuse[j] != NULL ) + IF( ( *hHRTF )->pIndex_frequency_max_diffuse[j] != NULL ) { free( ( *hHRTF )->pIndex_frequency_max_diffuse[j] ); } - if ( ( *hHRTF )->pOut_to_bin_diffuse_re_fx[j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_diffuse_re_fx[j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_diffuse_re_fx[j] ); } - if ( ( *hHRTF )->pOut_to_bin_diffuse_im_fx[j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_diffuse_im_fx[j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_diffuse_im_fx[j] ); } @@ -1787,14 +2375,73 @@ static ivas_error destroy_HRTF( *hHRTF = NULL; } +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + return; +#else return IVAS_ERR_OK; +#endif } /*---------------------------------------------------------------------* * destroy_SetOfHRTF() * * Destroy the HRTF data set. *---------------------------------------------------------------------*/ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +void destroy_SetOfHRTF( + HRTFS_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ +) +{ + test(); + IF( ( hSetOfHRTF != NULL ) && ( *hSetOfHRTF != NULL ) ) + { + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_combined ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_hoa3 ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_hoa2 ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_foa ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_brir_combined ) ); + } + + ivas_HRTF_CRend_binary_close_fx( hSetOfHRTF ); + + return; +} + + +/*---------------------------------------------------------------------* + * destroy_fastconv_hrtf() + * + * Destroy the HRTF data set. + *---------------------------------------------------------------------*/ +void destroy_fastconv_hrtf( + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* i/o: FastConv HRTF handle */ +) +{ + /* Fastconv HRTF memories */ + ivas_binaural_hrtf_close( hHrtfFastConv ); + + /* Fastconv HRTF filters */ + ivas_HRTF_fastconv_binary_close_fx( hHrtfFastConv ); + + return; +} + + +/*---------------------------------------------------------------------* + * destroy_parambin_hrtf() + * + * Destroy the HRTF data set. + *---------------------------------------------------------------------*/ + +void destroy_parambin_hrtf( + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* i/o: Parambin HRTF handle */ +) +{ + ivas_HRTF_parambin_binary_close_fx( hHrtfParambin ); + + return; +} +#else ivas_error destroy_SetOfHRTF( HRTFS_CREND_HANDLE hSetOfHRTF /* i/o: Set of HRTF CRend handle */ ) @@ -1810,3 +2457,4 @@ ivas_error destroy_SetOfHRTF( return IVAS_ERR_OK; } +#endif diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index 104cc5c7a..96bb09736 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -47,6 +47,21 @@ typedef struct ivas_hrtfs_header_t } ivas_hrtfs_header_t; +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +typedef enum +{ + HRTF_READER_RENDERER_BINAURAL_INVALID, + HRTF_READER_RENDERER_BINAURAL_FASTCONV, + HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM, + HRTF_READER_RENDERER_BINAURAL_PARAMETRIC, + HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM, + HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD, + HRTF_READER_RENDERER_BINAURAL_MIXER_CONV, + HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM, + HRTF_READER_RENDERER_BINAURAL_REVERB_ALL +} HRTF_READER_RENDERER_TYPE; +#endif + /*---------------------------------------------------------------------* * hrtfFileReader_open() * @@ -79,6 +94,19 @@ ivas_error load_HRTF_binary( const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ); +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +/*---------------------------------------------------------------------* + * load_reverb_from_binary() + * + * Load reverb binary data into the HRTF handle + *---------------------------------------------------------------------*/ + +ivas_error load_reverb_binary( + IVAS_DEC_HRTF_HANDLE hHrtf, /* i/o: HRTF handle */ + const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ +); +#endif + /*---------------------------------------------------------------------* * create_SetOfHRTF_from_binary() * @@ -98,10 +126,16 @@ ivas_error create_SetOfHRTF_from_binary( * Destroy the HRTF data set. *---------------------------------------------------------------------*/ + +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +void destroy_SetOfHRTF( + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ +); +#else ivas_error destroy_SetOfHRTF( IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF /* i/o: Set of HRTF CRend handle */ ); - +#endif /*---------------------------------------------------------------------* * load_fastconv_HRTF_from_binary() @@ -114,6 +148,17 @@ ivas_error load_fastconv_HRTF_from_binary( const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ); +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +/*---------------------------------------------------------------------* + * destroy_fastconv_hrtf() + * + * free memory allocated for FastConv HRTF binary data into the handle + *---------------------------------------------------------------------*/ + +void destroy_fastconv_hrtf( + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* i/o: FastConv HRTF handle */ +); +#endif /*---------------------------------------------------------------------* * load_parambin_HRTF_from_binary() @@ -132,9 +177,30 @@ ivas_error load_parambin_HRTF_from_binary( * * Deallocated memory allocated by load_HRTF_binary *---------------------------------------------------------------------*/ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING +/*---------------------------------------------------------------------* + * destroy_parambin_hrtf() + * + * free memory allocated for Parambin HRTF binary data into the handle + *---------------------------------------------------------------------*/ + +void destroy_parambin_hrtf( + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* i/o: Parambin HRTF handle */ +); +/*---------------------------------------------------------------------* + * destroy_td_hrtf() + * + * Destroy the HRTF TD handle + *---------------------------------------------------------------------*/ + +void destroy_td_hrtf( + IVAS_DEC_HRTF_HANDLE *hHRTF /* i/o: HRTF handle */ +); + +#else ivas_error dealloc_HRTF_binary( IVAS_DEC_HRTF_HANDLE hHrtf /* i/o: HRTF handle */ ); - +#endif #endif /* IVAS_HRTF_FILE_READER_H */ diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 92c1a2fed..a1f806d6b 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -440,7 +440,11 @@ static ivas_error read_bin_bits( *pTarget = 0; for ( n = 0; n < nBits; n++ ) { +#ifdef FIX_WARNING_RENDER_CONFIG + nByte = (uint32_t) ( ( this->readOffset + n ) >> 3 ); +#else nByte = ( this->readOffset + n ) >> 3; +#endif bit = this->pBitstream[nByte] >> ( 7 - ( ( this->readOffset + n ) % 8 ) ) & 1; *pTarget = ( *pTarget << 1 ) + bit; } -- GitLab From fe603f822ce6da6933b81b3ba20f11f30fb616ba Mon Sep 17 00:00:00 2001 From: Stefan Doehla Date: Tue, 15 Apr 2025 07:59:10 +0000 Subject: [PATCH 396/698] [fix] L_mult -> L_mult_o in L_msuNs_co --- lib_com/basop32.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/basop32.c b/lib_com/basop32.c index 20dbe663e..65d449a32 100644 --- a/lib_com/basop32.c +++ b/lib_com/basop32.c @@ -1575,7 +1575,7 @@ Word32 L_msuNs_co( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry, Flag *O { Word32 L_var_out; - L_var_out = L_mult( var1, var2 ); + L_var_out = L_mult_o( var1, var2, Overflow ); L_var_out = L_sub_co( L_var3, L_var_out, Carry, Overflow ); return ( L_var_out ); -- GitLab From f783eba95c52904c34d86e37a6f371f3f4461dcf Mon Sep 17 00:00:00 2001 From: Stefan Doehla Date: Tue, 22 Apr 2025 16:23:37 +0200 Subject: [PATCH 397/698] [fix] missing overflow handling as in legacy STL --- lib_com/basop32.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib_com/basop32.c b/lib_com/basop32.c index 65d449a32..aec1573be 100644 --- a/lib_com/basop32.c +++ b/lib_com/basop32.c @@ -2044,6 +2044,8 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) Word32 L_test; Flag carry_int = 0; + /* TODO: unset overflow, but not done */ + /* unset_overflow( Overflow ); */ if ( get_carry( Carry ) ) { unset_carry( Carry ); @@ -2056,6 +2058,7 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) L_var_out = L_var1 - L_var2; if ( L_var1 > 0L ) { + set_overflow( Overflow ); unset_carry( Carry ); } } @@ -2067,18 +2070,22 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) if ( ( L_test < 0 ) && ( L_var1 > 0 ) && ( L_var2 < 0 ) ) { + set_overflow( Overflow ); carry_int = 0; } else if ( ( L_test > 0 ) && ( L_var1 < 0 ) && ( L_var2 > 0 ) ) { + set_overflow( Overflow ); carry_int = 1; } else if ( ( L_test > 0 ) && ( ( L_var1 ^ L_var2 ) > 0 ) ) { + unset_overflow( Overflow ); carry_int = 1; } if ( L_test == MIN_32 ) { + set_overflow( Overflow ); carry_int ? set_carry( Carry ) : unset_carry( Carry ); } else -- GitLab From 8ee4fc159676449962ebfa9426aa689a2c654b70 Mon Sep 17 00:00:00 2001 From: Stefan Doehla Date: Wed, 23 Apr 2025 21:47:58 +0200 Subject: [PATCH 398/698] remove unnecessary comment --- lib_com/basop32.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib_com/basop32.c b/lib_com/basop32.c index aec1573be..fbe08a11f 100644 --- a/lib_com/basop32.c +++ b/lib_com/basop32.c @@ -2038,14 +2038,13 @@ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) return ( L_var_out ); } + Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) { Word32 L_var_out; Word32 L_test; Flag carry_int = 0; - /* TODO: unset overflow, but not done */ - /* unset_overflow( Overflow ); */ if ( get_carry( Carry ) ) { unset_carry( Carry ); -- GitLab From f2d5e62ed9989c2119241bec4cc1113211fb3cdf Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 23 Apr 2025 17:21:44 +0530 Subject: [PATCH 399/698] Fix for 3GPP issue 1499: Spike in BASOP encoded signal of MASA selection material Link #1499 --- lib_enc/analy_sp_fx.c | 10 ++--- lib_enc/find_uv_fx.c | 2 +- lib_enc/ivas_core_pre_proc_front_fx.c | 32 ++++++++-------- lib_enc/ivas_cpe_enc_fx.c | 4 +- lib_enc/ivas_front_vad_fx.c | 12 +++--- lib_enc/ivas_stereo_td_analysis_fx.c | 8 ++-- lib_enc/long_enr_fx.c | 4 +- lib_enc/nois_est_fx.c | 55 ++++++++++++++------------- lib_enc/prot_fx_enc.h | 6 +-- lib_enc/stat_enc.h | 6 ++- lib_enc/updt_enc_fx.c | 9 ++++- 11 files changed, 80 insertions(+), 68 deletions(-) diff --git a/lib_enc/analy_sp_fx.c b/lib_enc/analy_sp_fx.c index 57dbb369c..49bb03f57 100644 --- a/lib_enc/analy_sp_fx.c +++ b/lib_enc/analy_sp_fx.c @@ -438,7 +438,7 @@ void ivas_analy_sp_fx( Word16 *q_fr_bands, /* o : energy in critical frequency bands Q0 */ Word32 *lf_E, /* o : per bin E for first... q_lf_E */ Word16 *q_lf_E, /* o : per bin E for first... Q0 */ - Word16 *Etot, /* o : total input energy Q8 */ + Word32 *Etot, /* o : total input energy Q24 */ const Word16 min_band, /* i : minimum critical band Q0 */ const Word16 max_band, /* i : maximum critical band Q0 */ Word32 *Bin_E, /* o : per-bin energy spectrum q_Bin_E */ @@ -557,7 +557,7 @@ void ivas_analy_sp_fx( /* Average total log energy over both half-frames */ /* *Etot = 10.0f * (float)log10(0.5f * *Etot); */ - *Etot = -12800 /* 10.f * logf(0.00001f) in Q8 */; + *Etot = -838860800 /* 10.f * log10f(0.00001f) in Q24 : This is when LEtot is 0*/; move16(); IF( LEtot != 0 ) { @@ -566,7 +566,7 @@ void ivas_analy_sp_fx( LEtot = W_shl( LEtot, exp ); // q_fr_bands+2+exp Ltmp = BASOP_Util_Log10( W_extract_h( LEtot ), sub( 61, add( *q_fr_bands, exp ) ) /* 31-(q_fr_bands+2+exp-32) */ ); // Q25 Ltmp = Mpy_32_32( Ltmp, 1342177280 /* 10.f in Q27 */ ); // (Q25, Q27) -> Q21 - *Etot = extract_h( L_shl( Ltmp, Q24 - Q21 ) ); // Q8 + *Etot = L_shl( Ltmp, Q24 - Q21 ); // Q24 move16(); } } @@ -599,7 +599,7 @@ void ivas_analy_sp_fx( } /* Average total log energy over both half-frames */ - *Etot = -12800 /* 10.f * logf(0.00001f) in Q8 */; + *Etot = -838860800 /* 10.f * log10f(0.00001f) in Q24 : This is when LEtot is 0*/; move16(); IF( LEtot != 0 ) { @@ -607,7 +607,7 @@ void ivas_analy_sp_fx( LEtot = W_shl( LEtot, exp ); // q_fr_bands+exp Ltmp = BASOP_Util_Log10( W_extract_h( LEtot ), sub( 62, add( *q_fr_bands, exp ) ) /* 31-(q_fr_bands+1+exp-32) */ ); // Q25 Ltmp = Mpy_32_32( Ltmp, 1342177280 /* 10.f in Q27 */ ); // (Q25, Q27) -> Q21 - *Etot = extract_h( L_shl( Ltmp, Q24 - Q21 ) ); // Q8 + *Etot = L_shl( Ltmp, Q24 - Q21 ); // Q24 move16(); } } diff --git a/lib_enc/find_uv_fx.c b/lib_enc/find_uv_fx.c index 79dc78c6d..c4fe2e895 100644 --- a/lib_enc/find_uv_fx.c +++ b/lib_enc/find_uv_fx.c @@ -729,7 +729,7 @@ Word16 find_uv_ivas_fx( /* o : coding typ * Total frame energy difference (dE3) *-----------------------------------------------------------------*/ - dE3 = sub( Etot, hNoiseEst->Etot_last_fx ); /*Q8*/ + dE3 = sub( Etot, extract_h( hNoiseEst->Etot_last_32fx ) ); /*Q8*/ /*-----------------------------------------------------------------* * Energy decrease after spike (dE2) diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index 67c4f256f..b9a15cd35 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -205,7 +205,7 @@ ivas_error pre_proc_front_ivas_fx( Word16 S_map_fx[L_FFT / 2]; Word16 cor_map_sum_LR_fx[CPE_CHANNELS]; /* speech/music clasif. parameter */ Word16 S_map_LR_fx[L_FFT / 2]; /* short-term correlation map */ - Word16 Etot_fx; /* total energy Q8 */ + Word32 Etot_fx; /* total energy Q8 */ Word32 tmpN_fx[NB_BANDS]; /* Temporary noise update */ Word32 tmpE_fx[NB_BANDS]; /* Temporary averaged energy of 2 sf. */ Word32 tmpN_LR_fx[CPE_CHANNELS][NB_BANDS]; /* Temporary noise update */ @@ -739,7 +739,7 @@ ivas_error pre_proc_front_ivas_fx( IF( hStereoClassif != NULL ) { - IF( GT_32( sub( st->lp_speech_fx, Etot_fx ), 25 << Q8 ) ) /*Q8*/ + IF( GT_32( sub( st->lp_speech_fx, extract_h( Etot_fx ) ), 25 << Q8 ) ) /*Q8*/ { hStereoClassif->silence_flag = 2; move16(); @@ -759,11 +759,11 @@ ivas_error pre_proc_front_ivas_fx( IF( hCPE != NULL ) { - noise_est_pre_32fx( L_deposit_h( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, hCPE->last_element_mode ); + noise_est_pre_32fx( ( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, hCPE->last_element_mode ); } ELSE { - noise_est_pre_32fx( L_deposit_h( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, element_mode ); + noise_est_pre_32fx( ( Etot_fx ), st->ini_frame, st->hNoiseEst, st->idchan, element_mode, element_mode ); } test(); @@ -913,18 +913,18 @@ ivas_error pre_proc_front_ivas_fx( *----------------------------------------------------------------*/ noise_est_down_ivas_fx( fr_bands_fx, fr_bands_fx_q, st->hNoiseEst->bckr_fx, &st->hNoiseEst->q_bckr, tmpN_fx, &q_tmpN, tmpE_fx, &q_tmpE, st->min_band, st->max_band, - &st->hNoiseEst->totalNoise_fx, Etot_fx, &st->hNoiseEst->Etot_last_fx, &st->hNoiseEst->Etot_v_h2_fx ); + &st->hNoiseEst->totalNoise_fx, Etot_fx, &st->hNoiseEst->Etot_last_32fx, &st->hNoiseEst->Etot_v_h2_fx ); test(); IF( lr_vad_enabled && st->idchan == 0 ) { - noise_est_down_ivas_fx( fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], hCPE->hFrontVad[0]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[0]->hNoiseEst->q_bckr, tmpN_LR_fx[0], &q_tmpN_LR[0], tmpE_LR_fx[0], &q_tmpE_LR[0], st->min_band, st->max_band, &hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx, Etot_LR_fx[0], &hCPE->hFrontVad[0]->hNoiseEst->Etot_last_fx, &hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx ); - noise_est_down_ivas_fx( fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], hCPE->hFrontVad[1]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[1]->hNoiseEst->q_bckr, tmpN_LR_fx[1], &q_tmpN_LR[1], tmpE_LR_fx[1], &q_tmpE_LR[1], st->min_band, st->max_band, &hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx, Etot_LR_fx[1], &hCPE->hFrontVad[1]->hNoiseEst->Etot_last_fx, &hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx ); + noise_est_down_ivas_fx( fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], hCPE->hFrontVad[0]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[0]->hNoiseEst->q_bckr, tmpN_LR_fx[0], &q_tmpN_LR[0], tmpE_LR_fx[0], &q_tmpE_LR[0], st->min_band, st->max_band, &hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[0] ), &hCPE->hFrontVad[0]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx ); + noise_est_down_ivas_fx( fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], hCPE->hFrontVad[1]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[1]->hNoiseEst->q_bckr, tmpN_LR_fx[1], &q_tmpN_LR[1], tmpE_LR_fx[1], &q_tmpE_LR[1], st->min_band, st->max_band, &hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[1] ), &hCPE->hFrontVad[1]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx ); corr_shiftL_fx = correlation_shift_fx( hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx ); // Q15 corr_shiftR_fx = correlation_shift_fx( hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx ); // Q15 } - *relE_fx = sub( Etot_fx, st->lp_speech_fx ); // Q8 + *relE_fx = sub( extract_h( Etot_fx ), st->lp_speech_fx ); // Q8 move16(); corr_shift_fx = correlation_shift_fx( st->hNoiseEst->totalNoise_fx ); /* Q15 */ @@ -1307,8 +1307,8 @@ ivas_error pre_proc_front_ivas_fx( move16(); move16(); - noise_est_ivas_fx( st, old_pitch1, tmpN_fx, epsP_fx, Etot_fx, *relE_fx, corr_shift_fx, tmpE_fx, q_tmpE, fr_bands_fx, fr_bands_fx_q, cor_map_sum_fx, - &ncharX_fx, &sp_div_fx, &q_sp_div, &non_staX_fx, loc_harm, lf_E_fx, q_lf_E_fx, &st->hNoiseEst->harm_cor_cnt, st->hNoiseEst->Etot_l_lp_fx, + noise_est_ivas_fx( st, old_pitch1, tmpN_fx, epsP_fx, extract_h( Etot_fx ), *relE_fx, corr_shift_fx, tmpE_fx, q_tmpE, fr_bands_fx, fr_bands_fx_q, cor_map_sum_fx, + &ncharX_fx, &sp_div_fx, &q_sp_div, &non_staX_fx, loc_harm, lf_E_fx, q_lf_E_fx, &st->hNoiseEst->harm_cor_cnt, extract_h( st->hNoiseEst->Etot_l_lp_32fx ), st->hNoiseEst->Etot_v_h2_fx, &st->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_fx, hStereoClassif, NULL, st->ini_frame ); @@ -1352,14 +1352,14 @@ ivas_error pre_proc_front_ivas_fx( noise_est_ivas_fx( st, old_pitch1, tmpN_LR_fx[0], epsP_fx, Etot_LR_fx[0], sub( Etot_LR_fx[0], hCPE->hFrontVad[0]->lp_speech_fx ), corr_shiftL_fx, tmpE_LR_fx[0], q_tmpE_LR[0], fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], &cor_map_sum_LR_fx[0], &ncharX_LR_fx, &sp_div_LR_fx, &q_sp_div_LR, &non_staX_LR_fx, loc_harmLR_fx, lf_E_LR_fx[0], lf_E_LR_fx_q, &hCPE->hFrontVad[0]->hNoiseEst->harm_cor_cnt, - hCPE->hFrontVad[0]->hNoiseEst->Etot_l_lp_fx, hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[0]->hNoiseEst->bg_cnt, + extract_h( hCPE->hFrontVad[0]->hNoiseEst->Etot_l_lp_32fx ), hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[0]->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_LR_fx, NULL, hCPE->hFrontVad[0], hCPE->hFrontVad[0]->ini_frame ); /* Note: the index [0] in the last argument is intended, the ini_frame counter is only maintained in the zero-th channel's VAD handle */ noise_est_ivas_fx( st, old_pitch1, tmpN_LR_fx[1], epsP_fx, Etot_LR_fx[1], sub( Etot_LR_fx[1], hCPE->hFrontVad[1]->lp_speech_fx ), corr_shiftR_fx, tmpE_LR_fx[1], q_tmpE_LR[1], fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], &cor_map_sum_LR_fx[1], &ncharX_LR_fx, &sp_div_LR_fx, &q_sp_div_LR, &non_staX_LR_fx, loc_harmLR_fx, lf_E_LR_fx[1], lf_E_LR_fx_q, &hCPE->hFrontVad[1]->hNoiseEst->harm_cor_cnt, - hCPE->hFrontVad[1]->hNoiseEst->Etot_l_lp_fx, hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[1]->hNoiseEst->bg_cnt, + extract_h( hCPE->hFrontVad[1]->hNoiseEst->Etot_l_lp_32fx ), hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[1]->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_LR_fx, NULL, hCPE->hFrontVad[1], hCPE->hFrontVad[0]->ini_frame ); } @@ -1387,7 +1387,7 @@ ivas_error pre_proc_front_ivas_fx( find_tilt_ivas_fx( fr_bands_fx, fr_bands_fx_q, st->hNoiseEst->bckr_fx, st->hNoiseEst->q_bckr, ee_fx, st->pitch, st->voicing_fx, lf_E_fx, q_lf_E_fx, corr_shift_fx, st->input_bwidth, st->max_band, hp_E_fx, MODE1, &( st->bckr_tilt_lt ), st->Opt_SC_VBR ); - st->coder_type = find_uv_ivas_fx( st, pitch_fr_fx, voicing_fr_fx, inp_12k8_fx, ee_fx, &dE1X_fx, corr_shift_fx, *relE_fx, Etot_fx, hp_E_fx, + st->coder_type = find_uv_ivas_fx( st, pitch_fr_fx, voicing_fr_fx, inp_12k8_fx, ee_fx, &dE1X_fx, corr_shift_fx, *relE_fx, extract_h( Etot_fx ), hp_E_fx, &flag_spitch, last_core_orig, hStereoClassif, *Q_new /*q_inp_12k8*/, fr_bands_fx_q ); // Q0 Copy_Scale_sig_16_32_no_sat( st->lgBin_E_fx, st->Bin_E_fx, L_FFT / 2, sub( st->q_Bin_E, Q7 ) ); @@ -1461,7 +1461,7 @@ ivas_error pre_proc_front_ivas_fx( scale_sig32( PS_fx, 128, shift ); Qfact_PS = add( Qfact_PS, shift ); - smc_dec = ivas_smc_gmm_fx( st, hStereoClassif, localVAD_HE_SAD, Etot_fx, lsp_new_fx, *cor_map_sum_fx /*Q8*/, epsP_fx, PS_fx, non_staX_fx, *relE_fx, &high_lpn_flag, flag_spitch, Qfact_PS, *epsP_fx_q, hSpMusClas->past_PS_Q ); /* Q0 */ + smc_dec = ivas_smc_gmm_fx( st, hStereoClassif, localVAD_HE_SAD, extract_h( Etot_fx ), lsp_new_fx, *cor_map_sum_fx /*Q8*/, epsP_fx, PS_fx, non_staX_fx, *relE_fx, &high_lpn_flag, flag_spitch, Qfact_PS, *epsP_fx_q, hSpMusClas->past_PS_Q ); /* Q0 */ #ifdef DEBUG_FORCE_DIR if ( st->force_dir[0] != '\0' ) @@ -1495,7 +1495,7 @@ ivas_error pre_proc_front_ivas_fx( * Update of old per-band energy spectrum *----------------------------------------------------------------*/ - ivas_long_enr_fx( st, Etot_fx, localVAD_HE_SAD, high_lpn_flag, NULL, 1, NULL, NULL ); + ivas_long_enr_fx( st, extract_h( Etot_fx ), localVAD_HE_SAD, high_lpn_flag, NULL, 1, NULL, NULL ); Copy32( fr_bands_fx + NB_BANDS, st->hNoiseEst->enrO_fx, NB_BANDS ); /* fr_bands_fx_q */ st->hNoiseEst->q_enrO = fr_bands_fx_q; @@ -1676,7 +1676,7 @@ ivas_error pre_proc_front_ivas_fx( st->q_Bin_E = add( *Q_new, Q_SCALE - 2 ); move16(); /* 2nd stage speech/music classification (ACELP/GSC/TCX core selection) */ - ivas_smc_mode_selection_fx( st, element_brate, smc_dec, *relE_fx, Etot_fx, attack_flag, inp_12k8_fx, *Q_new, S_map_fx, flag_spitch ); + ivas_smc_mode_selection_fx( st, element_brate, smc_dec, *relE_fx, extract_h( Etot_fx ), attack_flag, inp_12k8_fx, *Q_new, S_map_fx, flag_spitch ); } #ifdef DEBUG_FORCE_DIR diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index b5ed69560..a05493aa4 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -735,8 +735,8 @@ ivas_error ivas_cpe_enc_fx( move16(); } - Etot_last_fx[0] = sts[0]->hNoiseEst->Etot_last_fx; /* Q8 */ - Etot_last_fx[1] = sts[1]->hNoiseEst->Etot_last_fx; /* Q8 */ + Etot_last_fx[0] = extract_h( sts[0]->hNoiseEst->Etot_last_32fx ); /* Q8 */ + Etot_last_fx[1] = extract_h( sts[1]->hNoiseEst->Etot_last_32fx ); /* Q8 */ move16(); move16(); } diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c index f3cf05e63..124ab2996 100644 --- a/lib_enc/ivas_front_vad_fx.c +++ b/lib_enc/ivas_front_vad_fx.c @@ -90,6 +90,7 @@ ivas_error front_vad_fx( ivas_error error; Word16 Q_new; Word16 Qband, mem_decim_size; + Word32 Etot_LR_32fx; error = IVAS_ERR_OK; push_wmops( "front_vad" ); move16(); @@ -248,7 +249,7 @@ ivas_error front_vad_fx( move16(); ivas_analy_sp_fx( IVAS_CPE_TD, hCPE, sts[0]->input_Fs, hFrontVad->buffer_12k8_fx + L_FFT / 2 - 3 * ( L_SUBFR / 2 ), Q_new, fr_bands_fx[n], - &q_fr_bands[n], lf_E_fx[n], &q_lf_E[n], &Etot_LR_fx[n], sts[0]->min_band, sts[0]->max_band, Bin_E_fx, &q_Bin_E, Bin_E_old_fx, + &q_fr_bands[n], lf_E_fx[n], &q_lf_E[n], &Etot_LR_32fx, sts[0]->min_band, sts[0]->max_band, Bin_E_fx, &q_Bin_E, Bin_E_old_fx, &q_Bin_E_old, PS_fx, q_PS_out, lgBin_E_fx, band_energies_fx, &q_band_energies, fft_buffLR_fx, &q_fft_buffLR ); if ( n == 0 ) { @@ -275,9 +276,10 @@ ivas_error front_vad_fx( /* add up energies for later calculating average of channel energies */ - Word32 Etot_fx = L_deposit_h( Etot_LR_fx[n] ); /* Q24 */ + noise_est_pre_32fx( Etot_LR_32fx, hFrontVads[0]->ini_frame, hFrontVad->hNoiseEst, 0, 0, 0 ); - noise_est_pre_32fx( Etot_fx, hFrontVads[0]->ini_frame, hFrontVad->hNoiseEst, 0, 0, 0 ); + Etot_LR_fx[n] = extract_h( Etot_LR_32fx ); + move16(); /* wb_vad */ Word16 scale = s_min( q_fr_bands[n], add( hFrontVads[n]->hNoiseEst->q_enrO, L_norm_arr( hFrontVads[n]->hNoiseEst->enrO_fx, NB_BANDS ) ) ); @@ -611,7 +613,7 @@ ivas_error front_vad_spar_fx( Word16 q_tmpN, q_tmpE; noise_est_down_ivas_fx( fr_bands_fx[0], q_fr_bands[0], hFrontVad->hNoiseEst->bckr_fx, &hFrontVad->hNoiseEst->q_bckr, tmpN_fx, &q_tmpN, tmpE_fx, &q_tmpE, st->min_band, st->max_band, - &hFrontVad->hNoiseEst->totalNoise_fx, Etot_fx[0], &hFrontVad->hNoiseEst->Etot_last_fx, &hFrontVad->hNoiseEst->Etot_v_h2_fx ); + &hFrontVad->hNoiseEst->totalNoise_fx, Etot_fx[0], &hFrontVad->hNoiseEst->Etot_last_32fx, &hFrontVad->hNoiseEst->Etot_v_h2_fx ); corr_shift_fx = correlation_shift_fx( hFrontVad->hNoiseEst->totalNoise_fx ); /* Q15 */ @@ -753,7 +755,7 @@ ivas_error front_vad_spar_fx( noise_est_ivas_fx( st, old_pitch, tmpN_fx, epsP_fx, Etot_fx[0], sub( Etot_fx[0], hFrontVad->lp_speech_fx ), corr_shift_fx, tmpE_fx, hFrontVad->hNoiseEst->ave_enr_q, fr_bands_fx[0], q_fr_bands[0], &cor_map_sum_fx, NULL, &sp_div_fx, &Q_sp_div, &non_staX_fx, &loc_harm, - lf_E_fx[0], q_lf_E[0], &hFrontVad->hNoiseEst->harm_cor_cnt, hFrontVad->hNoiseEst->Etot_l_lp_fx, hFrontVad->hNoiseEst->Etot_v_h2_fx, + lf_E_fx[0], q_lf_E[0], &hFrontVad->hNoiseEst->harm_cor_cnt, extract_h( hFrontVad->hNoiseEst->Etot_l_lp_32fx ), hFrontVad->hNoiseEst->Etot_v_h2_fx, &hFrontVad->hNoiseEst->bg_cnt, st->lgBin_E_fx, &sp_floor, S_map_fx, NULL, hFrontVad, hFrontVad->ini_frame ); MVR2R_WORD16( st->pitch, st->pitch, 3 ); diff --git a/lib_enc/ivas_stereo_td_analysis_fx.c b/lib_enc/ivas_stereo_td_analysis_fx.c index 1856370f6..909d0c206 100644 --- a/lib_enc/ivas_stereo_td_analysis_fx.c +++ b/lib_enc/ivas_stereo_td_analysis_fx.c @@ -340,8 +340,8 @@ Word16 stereo_tdm_ener_analysis_fx( test(); IF( ( LE_32( hStereoTD->tdm_lt_rms_L_fx, rms_thd_fx ) && LE_32( hStereoTD->tdm_lt_rms_R_fx, L_shl( rms_thd_fx, 1 ) ) ) || ( LE_32( hStereoTD->tdm_lt_rms_R_fx, rms_thd_fx ) && LE_32( hStereoTD->tdm_lt_rms_L_fx, L_shl( rms_thd_fx, 1 ) ) ) || - ( sts[0]->hVAD->hangover_cnt != 0 && LT_16( sts[1]->hNoiseEst->Etot_last_fx, 3072 /*12 in Q8*/ ) ) || - ( sts[1]->hVAD->hangover_cnt != 0 && LT_16( sts[0]->hNoiseEst->Etot_last_fx, 3072 /*12 in Q8*/ ) ) || + ( sts[0]->hVAD->hangover_cnt != 0 && LT_32( sts[1]->hNoiseEst->Etot_last_32fx, 201326592 /*12 in Q24*/ ) ) || + ( sts[1]->hVAD->hangover_cnt != 0 && LT_32( sts[0]->hNoiseEst->Etot_last_32fx, 201326592 /*12 in Q24*/ ) ) || ( NE_16( sts[0]->hSpMusClas->past_dec[0], sts[1]->hSpMusClas->past_dec[0] ) ) ) { test(); @@ -873,8 +873,8 @@ static Word16 Get_dt_lt_ener_fx( move32(); *tdm_lt_rms_R = L_shl( Mpy_32_32( 1932735282 /* 0.9f in Q31 */, rms_R ), sub( Q16, q_rms_R ) ); // (Q31, q_rms_R) -> q_rms_R -> Q16 move32(); - L_tmp = Mpy_32_16_1( 1932735282 /* 0.9f in Q31 */, sts[0]->hNoiseEst->Etot_last_fx ); //(Q31, Q8) -> Q24 - sts[1]->hNoiseEst->Etot_last_fx = extract_h( L_tmp ); // (Q24 >> Q16) -> Q8 + L_tmp = Mpy_32_32( 1932735282 /* 0.9f in Q31 */, sts[0]->hNoiseEst->Etot_last_32fx ); //(Q31, Q24) -> Q24 + sts[1]->hNoiseEst->Etot_last_32fx = L_tmp; // (Q24 >> Q16) -> Q8 sts[1]->hVAD->hangover_cnt = 0; move16(); } diff --git a/lib_enc/long_enr_fx.c b/lib_enc/long_enr_fx.c index af57edd3b..60c40b3fe 100644 --- a/lib_enc/long_enr_fx.c +++ b/lib_enc/long_enr_fx.c @@ -94,7 +94,7 @@ void ivas_long_enr_fx( } FOR( n = 0; n < n_chan; n++ ) { - hFrontVad[n]->hNoiseEst->Etot_last_fx = Etot_LR[n]; /* Q8 */ + hFrontVad[n]->hNoiseEst->Etot_last_32fx = L_deposit_h( Etot_LR[n] ); /* Q24 */ move16(); } } @@ -141,7 +141,7 @@ void ivas_long_enr_fx( } } /* Update */ - st_fx->hNoiseEst->Etot_last_fx = Etot; /* Q8 */ + st_fx->hNoiseEst->Etot_last_32fx = L_deposit_h( Etot ); /* Q24 */ move16(); } diff --git a/lib_enc/nois_est_fx.c b/lib_enc/nois_est_fx.c index c8f698da9..d8131f10e 100644 --- a/lib_enc/nois_est_fx.c +++ b/lib_enc/nois_est_fx.c @@ -359,8 +359,8 @@ void noise_est_init_ivas_fx( hNoiseEst->Etot_lp_fx = 0; hNoiseEst->Etot_h_fx = 0; hNoiseEst->Etot_l_fx = 0; - hNoiseEst->Etot_l_lp_fx = 0; - hNoiseEst->Etot_last_fx = 0; + hNoiseEst->Etot_l_lp_32fx = 0; + hNoiseEst->Etot_last_32fx = 0; hNoiseEst->Etot_v_h2_fx = 0; hNoiseEst->sign_dyn_lp_fx = 0; move16(); @@ -368,8 +368,8 @@ void noise_est_init_ivas_fx( move16(); move16(); move16(); - move16(); - move16(); + move32(); + move32(); return; } @@ -510,10 +510,10 @@ void noise_est_pre_32fx( move32(); Etot_l_32fx = Etot; move32(); - hNoiseEst->Etot_l_lp_fx = extract_h( Etot ); // Q8 - move16(); - hNoiseEst->Etot_last_fx = extract_h( Etot ); // Q8 - move16(); + hNoiseEst->Etot_l_lp_32fx = Etot; // Q24 + move32(); + hNoiseEst->Etot_last_32fx = Etot; // Q24 + move32(); hNoiseEst->Etot_v_h2_fx = 0; move16(); Etot_lp_32fx = Etot; @@ -538,20 +538,20 @@ void noise_est_pre_32fx( ) { /* *Etot_l += min(2,(*Etot_last-*Etot_l)*0.1f); */ - tmp = Mpy_32_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 214748365 ); /* 0.1f factor in Q31 */ - tmp = L_min( 33554432, tmp ); /* 2.0 in Q24 is 33554432 */ - Etot_l_32fx = L_add( Etot_l_32fx, tmp ); /* Q24 */ + tmp = Mpy_32_32( L_sub( ( hNoiseEst->Etot_last_32fx ), Etot_l_32fx ), 214748365 ); /* 0.1f factor in Q31 */ + tmp = L_min( 33554432, tmp ); /* 2.0 in Q24 is 33554432 */ + Etot_l_32fx = L_add( Etot_l_32fx, tmp ); /* Q24 */ } /* Avoids large steps in short active segments */ test(); - IF( ( GT_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 503316480 ) ) /* 30.0f*Q24 */ + IF( ( GT_32( L_sub( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), 503316480 ) ) /* 30.0f*Q24 */ && ( GT_16( hNoiseEst->harm_cor_cnt, HE_LT_CNT_PRE_SHORT_FX ) ) ) { /* *Etot_l += (*Etot_last-*Etot_l)*0.02f; */ - Etot_l_32fx = L_add( Etot_l_32fx, Mpy_32_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 42949673 ) ); /* 0.02 in Q24*/ + Etot_l_32fx = L_add( Etot_l_32fx, Mpy_32_32( L_sub( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), 42949673 ) ); /* 0.02 in Q24*/ } - ELSE IF( GT_32( L_sub( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), 167772160 ) ) /* 10.0 in Q24*/ + ELSE IF( GT_32( L_sub( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), 167772160 ) ) /* 10.0 in Q24*/ { Etot_l_32fx = L_add( Etot_l_32fx, 1342177 ); /* 0.08 in Q24*/ } @@ -560,10 +560,10 @@ void noise_est_pre_32fx( Etot_l_32fx = L_min( Etot_l_32fx, Etot ); // Q24 test(); - IF( LT_16( ini_frame_fx, 100 ) && LT_32( Etot_l_32fx, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) ) + IF( LT_16( ini_frame_fx, 100 ) && LT_32( Etot_l_32fx, ( hNoiseEst->Etot_l_lp_32fx ) ) ) { /**Etot_l_lp = 0.1f * *Etot_l + (1.0f - 0.1) * *Etot_l_lp; */ - hNoiseEst->Etot_l_lp_fx = extract_h( L_add( Mpy_32_32( 214748364 /* 0.1f in Q31*/, Etot_l_32fx ), Mpy_32_32( 1932735283 /* 0.9f in Q31*/, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) ) ); // Q8 + hNoiseEst->Etot_l_lp_32fx = W_round64_L( W_add( W_mult_32_32( 214748364 /* 0.1f in Q31*/, Etot_l_32fx ), W_mult_32_32( 1932735283 /* 0.9f in Q31*/, hNoiseEst->Etot_l_lp_32fx ) ) ); // Q8 move16(); } ELSE @@ -572,16 +572,16 @@ void noise_est_pre_32fx( test(); test(); test(); - IF( ( ( GT_16( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) ) && ( GT_32( L_sub_sat( L_deposit_h( hNoiseEst->Etot_last_fx ), Etot_l_32fx ), HE_LT_THR2_Q24 ) ) ) || ( ( sub( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) > 0 ) && ( LT_16( ini_frame_fx, HE_LT_CNT_INIT_FX ) ) ) || ( GT_32( L_sub_sat( L_deposit_h( hNoiseEst->Etot_l_lp_fx ), Etot_l_32fx ), HE_LT_THR2_Q24 ) ) ) + IF( ( ( GT_16( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) ) && ( GT_32( L_sub_sat( hNoiseEst->Etot_last_32fx, Etot_l_32fx ), HE_LT_THR2_Q24 ) ) ) || ( ( sub( hNoiseEst->harm_cor_cnt, HE_LT_CNT_FX ) > 0 ) && ( LT_16( ini_frame_fx, HE_LT_CNT_INIT_FX ) ) ) || ( GT_32( L_sub_sat( hNoiseEst->Etot_l_lp_32fx, Etot_l_32fx ), HE_LT_THR2_Q24 ) ) ) { /**Etot_l_lp = 0.03f * *Etot_l + (1.0f - 0.03f) * *Etot_l_lp; */ - hNoiseEst->Etot_l_lp_fx = extract_h( L_add( Mpy_32_32( 64424509 /* 0.03f in Q31*/, Etot_l_32fx ), Mpy_32_32( 2083059139 /* 0.97f in Q31*/, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) ) ); // Q8 + hNoiseEst->Etot_l_lp_32fx = W_extract_h( W_add( W_mult_32_32( 64424509 /* 0.03f in Q31*/, Etot_l_32fx ), W_mult_32_32( 2083059139 /* 0.97f in Q31*/, hNoiseEst->Etot_l_lp_32fx ) ) ); // Q24 move16(); } ELSE { /* *Etot_l_lp = 0.02f * *Etot_l + (1.0f - 0.02f) * *Etot_l_lp; */ - hNoiseEst->Etot_l_lp_fx = extract_h( L_add( Mpy_32_32( 42949673 /* 0.02f in Q31*/, Etot_l_32fx ), Mpy_32_32( 2104533975 /* 0.98f in Q31*/, L_deposit_h( hNoiseEst->Etot_l_lp_fx ) ) ) ); // Q8 + hNoiseEst->Etot_l_lp_32fx = W_extract_h( W_add( W_mult_32_32( 42949673 /* 0.02f in Q31*/, Etot_l_32fx ), W_mult_32_32( 2104533975 /* 0.98f in Q31*/, hNoiseEst->Etot_l_lp_32fx ) ) ); // Q24 move16(); } } @@ -748,8 +748,8 @@ void noise_est_down_ivas_fx( const Word16 min_band, /* i : minimum critical band */ const Word16 max_band, /* i : maximum critical band */ Word16 *totalNoise, /* o : noise estimate over all critical bands */ - Word16 Etot, /* i : Energy of current frame */ - Word16 *Etot_last, /* i/o: Energy of last frame Q8 */ + Word32 Etot, /* i : Energy of current frame */ + Word32 *Etot_last, /* i/o: Energy of last frame Q8 */ Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */ ) @@ -770,8 +770,9 @@ void noise_est_down_ivas_fx( Copy32( bckr, bckr32, NB_BANDS ); set16_fx( bckr_q, *q_bckr, NB_BANDS ); - L_Etot = L_shl( Etot, 16 ); /*Q24 for later AR1 computations*/ - L_Etot_last = L_shl( *Etot_last, 16 ); + L_Etot = Etot; /*Q24 for later AR1 computations*/ + move32(); + L_Etot_last = *Etot_last; L_Etot_v_h2 = L_shl( *Etot_v_h2, 16 ); /*-----------------------------------------------------------------* @@ -2989,7 +2990,7 @@ void noise_est_ivas_fx( move16(); /* st->lt_Ellp_dist = 0.03f* (Etot - st->Etot_l_lp) + 0.97f*st->lt_Ellp_dist;*/ - tmp = sub( Etot, hNoiseEst->Etot_l_lp_fx ); /* Q8 */ + tmp = sub( Etot, extract_h( hNoiseEst->Etot_l_lp_32fx ) ); /* Q8 */ hNoiseEst->lt_Ellp_dist_fx = mac_r( L_mult( tmp, 983 /* 0.03 in Q15*/ ), hNoiseEst->lt_Ellp_dist_fx, 31785 /* 0.97 in Q15*/ ); // Q8 move16(); @@ -3180,7 +3181,7 @@ void noise_est_ivas_fx( { tmp = shl( tmp, 1 ); /*1.5 + 1.5 Q13 */ } - Ltmp = L_deposit_h( hNoiseEst->Etot_l_lp_fx ); + Ltmp = hNoiseEst->Etot_l_lp_32fx; Etot_l_lp_thr = round_fx( L_add( Ltmp, L_shl( L_mult( tmp, Etot_v_h2 ), 2 ) ) ); /* Q13+Q8+1 +2 = Q24 -> Q8*/ /* enr_bgd = Etot < Etot_l_lp_thr; */ @@ -3365,8 +3366,8 @@ void noise_est_ivas_fx( move16(); test(); test(); - if ( ( GT_16( hNoiseEst->sign_dyn_lp_fx, 15 * 256 ) ) /* 15 in Q8 */ - && ( LT_16( sub( Etot, hNoiseEst->Etot_l_lp_fx ), shl( Etot_v_h2, 1 ) ) ) /* Q8 , Etot_v_h2 has limited dynmics can be upscaled*/ + if ( ( GT_16( hNoiseEst->sign_dyn_lp_fx, 15 * 256 ) ) /* 15 in Q8 */ + && ( LT_16( sub( Etot, extract_h( hNoiseEst->Etot_l_lp_32fx ) ), shl( Etot_v_h2, 1 ) ) ) /* Q8 , Etot_v_h2 has limited dynmics can be upscaled*/ && ( GT_16( *st_harm_cor_cnt, 20 ) ) ) { sd1_bgd = 1; diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 120dd42b5..4237aa9c3 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -369,8 +369,8 @@ void noise_est_down_ivas_fx( const Word16 min_band, /* i : minimum critical band */ const Word16 max_band, /* i : maximum critical band */ Word16 *totalNoise, /* o : noise estimate over all critical bands */ - Word16 Etot, /* i : Energy of current frame */ - Word16 *Etot_last, /* i/o: Energy of last frame Q8 */ + Word32 Etot, /* i : Energy of current frame */ + Word32 *Etot_last, /* i/o: Energy of last frame Q8 */ Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */ ); @@ -2230,7 +2230,7 @@ void ivas_analy_sp_fx( Word16 *q_fr_bands, /* o : energy in critical frequency bands Q0 */ Word32 *lf_E, /* o : per bin E for first... q_lf_E */ Word16 *q_lf_E, /* o : per bin E for first... Q0 */ - Word16 *Etot, /* o : total input energy Q8 */ + Word32 *Etot, /* o : total input energy Q24 */ const Word16 min_band, /* i : minimum critical band Q0 */ const Word16 max_band, /* i : maximum critical band Q0 */ Word32 *Bin_E, /* o : per-bin energy spectrum q_Bin_E */ diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index c6176709b..4fe5bb8a4 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -545,8 +545,10 @@ typedef struct noise_estimation_structure Word16 bg_cnt; /* Noise estimator - pause length counter */ Word16 Etot_l_fx; /* Q8 Noise estimator - Track energy from below */ Word16 Etot_h_fx; /* Q8 Noise estimator - Track energy from above */ - Word16 Etot_l_lp_fx; /* Q8 Noise estimator - Smoothed low energy */ - Word16 Etot_last_fx; /*Q8*/ + Word16 Etot_l_lp_fx; /* EVS- Q8 Noise estimator - Smoothed low energy */ + Word32 Etot_l_lp_32fx; /* IVAS-Q24 Noise estimator - Smoothed low energy */ + Word16 Etot_last_fx; /*EVS- Q8*/ + Word32 Etot_last_32fx; /* IVAS - Q24*/ Word16 Etot_lp_fx; /* Q8 Noise estimator - Filtered input energy */ Word16 lt_tn_track_fx; /* Q15 */ diff --git a/lib_enc/updt_enc_fx.c b/lib_enc/updt_enc_fx.c index fb2a6215b..1210bfd04 100644 --- a/lib_enc/updt_enc_fx.c +++ b/lib_enc/updt_enc_fx.c @@ -362,7 +362,14 @@ void updt_enc_common_fx( move16(); st->last_bwidth = st->bwidth; move16(); - st->hNoiseEst->Etot_last_fx = Etot; + IF( GT_16( st->element_mode, EVS_MONO ) ) + { + st->hNoiseEst->Etot_last_32fx = L_deposit_h( Etot ); + } + ELSE + { + st->hNoiseEst->Etot_last_fx = Etot; + } move16(); st->last_coder_type_raw = st->coder_type_raw; move16(); -- GitLab From 349ac68863f3031e5bae907dacb9057e43856504 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 23 Apr 2025 17:10:00 +0530 Subject: [PATCH 400/698] Fix for 3GPP issue 1487: Basop Encoder: Stereo DTX Front VAD Flag Mismatch Link #1487 --- lib_enc/nois_est_fx.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib_enc/nois_est_fx.c b/lib_enc/nois_est_fx.c index c8f698da9..2e03f40a9 100644 --- a/lib_enc/nois_est_fx.c +++ b/lib_enc/nois_est_fx.c @@ -2253,6 +2253,7 @@ void noise_est_ivas_fx( Word16 tmp_enr, tmp_floor; /* constants in Q8 */ Word16 vad_bwidth_fx; /* vad ns control variabel for input bwidth from teh BWD */ /* for DTX operation */ + Word32 L_tmp; Word16 lim_Etot_fx; /* Q8 */ Word32 lim_Etot_sq_fx; /* Q16 */ @@ -3001,7 +3002,7 @@ void noise_est_ivas_fx( } */ IF( *st_harm_cor_cnt == 0 ) { - hNoiseEst->lt_haco_ev_fx = mac_r( 64424509 /* 0.03 in Q32*/, hNoiseEst->lt_haco_ev_fx, 31785 /* 0.97 in Q15*/ ); // Q15 + hNoiseEst->lt_haco_ev_fx = mac_r( 64424509 /* 0.03 in Q31*/, hNoiseEst->lt_haco_ev_fx, 31785 /* 0.97 in Q15*/ ); // Q15 move16(); } ELSE @@ -3558,14 +3559,14 @@ void noise_est_ivas_fx( } /*st->lt_aEn_zero = 0.2f * (st->aEn==0) + (1-0.2f) *st->lt_aEn_zero;*/ /* y(n+1)= alpha*tmp + (1-alpha)*y(n) */ - tmp = 0; - move16(); + L_tmp = 0; + move32(); if ( hNoiseEst->aEn == 0 ) { - tmp = 6554; // 0.2 in Q15 - move16(); + L_tmp = 429496730; // 0.2 in Q31 + move32(); } - hNoiseEst->lt_aEn_zero_fx = mac_r( tmp, hNoiseEst->lt_aEn_zero_fx, 26214 /* 0.8 in Q15*/ ); // Q15 + hNoiseEst->lt_aEn_zero_fx = mac_r( L_tmp, hNoiseEst->lt_aEn_zero_fx, 26214 /* 0.8 in Q15*/ ); // Q15 move16(); IF( st_fx->element_mode > EVS_MONO ) -- GitLab From 378ba3b0fea391be2efeffe706c7fae3c064f760 Mon Sep 17 00:00:00 2001 From: rtyag Date: Thu, 24 Apr 2025 11:26:14 +1000 Subject: [PATCH 401/698] increase instrumentation build timeout to 10 mins --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0b7fe26eb..73af86312 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1002,7 +1002,7 @@ build-codec-linux-instrumented-make: when: never extends: - .build-job-linux - timeout: "7 minutes" + timeout: "10 minutes" script: - *print-common-info - *update-scripts-repo -- GitLab From d380e91f41bac21f7b4a96e1b776fb8d53a75304 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 24 Apr 2025 12:35:36 +0530 Subject: [PATCH 402/698] Fix for 3GPP issue 1507: BASOP decoder asserts in ivas_hq_phase_ecu_fx with OMASA FER bitstream from BASOP encoder Link #1507 --- lib_dec/ivas_stereo_dft_plc_fx.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_stereo_dft_plc_fx.c b/lib_dec/ivas_stereo_dft_plc_fx.c index 90d9c5823..3fed308b2 100644 --- a/lib_dec/ivas_stereo_dft_plc_fx.c +++ b/lib_dec/ivas_stereo_dft_plc_fx.c @@ -188,6 +188,8 @@ Word32 imax_pos_fx( Word32 posi, y1, y2, y3, y3_y1, y2i; Word32 ftmp_den1, ftmp_den2; Word16 q_div_2i, q_div_posi; + Word64 W_tmp; + Word16 shift1, shift2; /* Seek the extrema of the parabola P(x) defined by 3 consecutive points so that P([-1 0 1]) = [y1 y2 y3] */ y1 = y[0]; /* Qx */ move32(); @@ -195,9 +197,13 @@ Word32 imax_pos_fx( move32(); y3 = y[2]; /* Qx */ move32(); - y3_y1 = L_sub( y3, y1 ); /* Qx */ - ftmp_den1 = L_sub( L_add( y1, y3 ), L_shl( y2, 1 ) ); /* Qx */ - ftmp_den2 = L_shl( L_sub( L_sub( L_shl( y2, 1 ), y1 ), y3 ), 1 ); /* Qx */ + y3_y1 = L_sub( y3, y1 ); /* Qx */ + W_tmp = W_sub( W_add( y1, y3 ), W_shl( y2, 1 ) ); /* Qx */ + shift1 = W_norm( W_tmp ); + ftmp_den1 = W_extract_h( W_shl( W_tmp, shift1 ) ); /* Qx + shift1 - 32 */ + W_tmp = W_shl( W_sub( W_sub( W_shl( y2, 1 ), y1 ), y3 ), 1 ); /* Qx */ + shift2 = W_norm( W_tmp ); + ftmp_den2 = W_extract_h( W_shl( W_tmp, shift2 ) ); /* Qx + shift2 - 32 */ test(); IF( ( ftmp_den2 == 0 ) || ( ftmp_den1 == 0 ) ) @@ -206,6 +212,7 @@ Word32 imax_pos_fx( } y2i = Mpy_32_16_1( Mpy_32_16_1( y3_y1, BASOP_Util_Divide3232_Scale( y3_y1, ftmp_den1, &q_div_2i ) ), (Word16) ( 0xF000 ) ); /* q_div_2i */ + q_div_2i = sub( add( q_div_2i, shift1 ), 32 ); IF( q_div_2i < 0 ) { y2i = L_shl( y2i, q_div_2i ); @@ -219,6 +226,7 @@ Word32 imax_pos_fx( } /* their corresponding normalized locations */ posi = BASOP_Util_Divide3232_Scale( y3_y1, ( ftmp_den2 ), &q_div_posi ); /* q_div_posi */ + q_div_posi = sub( add( q_div_posi, shift2 ), 32 ); IF( ( q_div_posi != 0 ) ) { posi = L_shl( posi, q_div_posi ); -- GitLab From 4497161299ef1dede088c335652edca3d7d9aa8f Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 24 Apr 2025 09:06:20 +0200 Subject: [PATCH 403/698] increase timeout for build jobs --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73af86312..4e7d36f24 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -986,6 +986,7 @@ build-codec-linux-make: when: never extends: - .build-job-linux + timeout: "10 minutes" script: - *print-common-info - *activate-Werror-linux @@ -1019,7 +1020,7 @@ build-codec-linux-debugging-make: when: never extends: - .build-job-linux - timeout: "7 minutes" + timeout: "10 minutes" variables: BUILD_WITH_DEBUG_MODE_INFO: "true" script: @@ -1037,7 +1038,7 @@ build-codec-windows-msbuild: when: never extends: - .build-job-windows - timeout: "7 minutes" + timeout: "10 minutes" tags: - ivas-windows script: -- GitLab From 70db4d8ec6578dfc7a68a93ac9b8a50c0739313c Mon Sep 17 00:00:00 2001 From: marc emerit Date: Thu, 24 Apr 2025 09:24:12 +0200 Subject: [PATCH 404/698] bug fix --- lib_util/hrtf_file_reader.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index af13fe866..7626b19e9 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -1556,7 +1556,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( f_tmp = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); ( *hHRTF )->FASTCONV_HRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); -#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1624,7 +1624,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_HOA3_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); -#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1696,7 +1696,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } hrtf_data_rptr += sizeof( uint16_t ); -#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1757,7 +1757,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_FOA_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); -#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1825,7 +1825,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_BRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); -#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); -- GitLab From 633745fa5271180e9f2687d2544bf5588f159fcd Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 24 Apr 2025 12:30:34 +0530 Subject: [PATCH 405/698] Changes to address 3GPP issue 1276 --- lib_enc/init_enc_fx.c | 9 ++++ lib_enc/ivas_core_pre_proc_front_fx.c | 70 ++++++++++++++------------ lib_enc/ivas_stereo_mdct_core_enc_fx.c | 2 +- lib_enc/stat_enc.h | 15 ++++-- 4 files changed, 58 insertions(+), 38 deletions(-) diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index e200d0f00..98d7fe957 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -1184,6 +1184,8 @@ ivas_error init_encoder_ivas_fx( st->mem_preemph_fx = 0; move16(); + st->mem_preemph_fx_q_inp = 0; + move16(); st->mem_preemph16k_fx = 0; move16(); st->mem_preemph_enc = 0; @@ -1298,6 +1300,8 @@ ivas_error init_encoder_ivas_fx( /* stereo switching memories */ st->mem_preemph_DFT_fx = 0; move16(); + st->mem_preemph_DFT_fx_q_inp = 0; + move16(); set16_fx( st->inp_12k8_mem_stereo_sw_fx, 0, sub( sub( STEREO_DFT_OVL_12k8, L_MEM_RECALC_12K8 ), L_FILT ) ); st->mem_preemph16k_DFT_fx = 0; move16(); @@ -1397,6 +1401,7 @@ ivas_error init_encoder_ivas_fx( st->q_Bin_E_old = Q31; move16(); set16_fx( st->mem_decim_fx, 0, shl( L_FILT_MAX, 1 ) ); + set16_fx( st->mem_decim_fx_q_inp, 0, shl( L_FILT_MAX, 1 ) ); set16_fx( st->mem_decim16k_fx, 0, shl( L_FILT_MAX, 1 ) ); set16_fx( st->old_inp_12k8_fx, 0, L_INP_MEM ); set16_fx( st->old_inp_16k_fx, 0, L_INP_MEM ); @@ -1410,6 +1415,10 @@ ivas_error init_encoder_ivas_fx( set16_fx( st->input_buff_fx, 0, add( L_FRAME48k, add( L_FRAME48k, NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ) ) ); st->q_inp = Q15; move16(); + st->mem_preemph_q = Q15; + move16(); + st->mem_q = Q15; + move16(); st->q_old_inp = Q15; move16(); set32_fx( st->input_buff32_fx, 0, add( L_FRAME48k, add( L_FRAME48k, NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ) ) ); diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index b9a15cd35..3d7d87bc2 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -499,15 +499,16 @@ ivas_error pre_proc_front_ivas_fx( * Change the sampling frequency to 12.8 kHz * (if not available from downsampled DMX) *----------------------------------------------------------------*/ - - Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( st->q_inp, Q_inp_const ) ); /* st->q_inp */ + Scale_sig( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX, sub( st->q_inp, st->mem_q ) ); /* st->q_inp */ test(); + IF( EQ_16( element_mode, IVAS_SCE ) ) { - new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx, input_frame, input_Fs, new_inp_12k8_fx, INT_FS_12k8, st->mem_decim_fx, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */ - Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ - - Copy( st->mem_decim_fx, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* Q(-1) */ + new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx, input_frame, input_Fs, new_inp_12k8_fx, INT_FS_12k8, st->mem_decim_fx_q_inp, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */ + Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ + st->mem_q = st->q_inp; + move16(); + Copy( st->mem_decim_fx_q_inp, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* Q(-1) */ set16_fx( temp1F_icatdmResampBuf_fx, 0, L_FILT_MAX ); new_inp_out_size = modify_Fs_ivas_fx( temp1F_icatdmResampBuf_fx, NS2SA_FX2( st->input_Fs, DELAY_FIR_RESAMPL_NS ), input_Fs, new_inp_12k8_fx + L_FRAME, INT_FS_12k8, mem_decim_dummy_fx, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */ Scale_sig( new_inp_12k8_fx + L_FRAME, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ @@ -521,13 +522,15 @@ ivas_error pre_proc_front_ivas_fx( Word16 length_inp = NS2SA_FX2( input_Fs, L_MEM_RECALC_SCH_NS ); Word16 length_12k8 = NS2SA( INT_FS_12k8, L_MEM_RECALC_SCH_NS ); - new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc - length_inp, length_inp, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, INT_FS_12k8, st->mem_decim_fx, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */ - Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ + new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc - length_inp, length_inp, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, INT_FS_12k8, st->mem_decim_fx_q_inp, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */ + Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ } - new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc, input_frame, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8, INT_FS_12k8, st->mem_decim_fx, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */ - Copy( st->mem_decim_fx, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* st->q_inp */ - Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ + new_inp_out_size = modify_Fs_ivas_fx( signal_in_fx - lMemRecalc, input_frame, input_Fs, new_inp_12k8_fx - lMemRecalc_12k8, INT_FS_12k8, st->mem_decim_fx_q_inp, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */ + st->mem_q = st->q_inp; + move16(); + Copy( st->mem_decim_fx_q_inp, mem_decim_dummy_fx, 2 * L_FILT_MAX ); /* st->q_inp */ + Scale_sig( new_inp_12k8_fx - lMemRecalc_12k8, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ IF( lMemRecalc > 0 ) { @@ -541,10 +544,13 @@ ivas_error pre_proc_front_ivas_fx( ELSE /* DFT stereo */ { /* update the FIR resampling filter memory, needed for switching to time-domain (FIR) resampling */ - Copy( signal_in_fx + sub( input_frame, add( NS2SA_FX2( input_Fs, L_MEM_RECALC_NS ), 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ) ), st->mem_decim_fx, 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ); /* st->q_inp */ + Copy( signal_in_fx + sub( input_frame, add( NS2SA_FX2( input_Fs, L_MEM_RECALC_NS ), 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ) ), st->mem_decim_fx_q_inp, 2 * NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ) ); /* st->q_inp */ + st->mem_q = st->q_inp; + move16(); scale_sig( old_inp_12k8_fx, L_INP_MEM - STEREO_DFT_OVL_12k8, sub( Q_inp_const, st->q_inp ) ); scale_sig( st->input_fx - input_frame, input_frame_full, sub( Q_inp_const, st->q_inp ) ); - Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */ + Copy_Scale_sig( st->mem_decim_fx_q_inp, st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */ + // Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */ st->q_inp = Q_inp_const; move16(); st->q_old_inp = Q_inp_const; @@ -552,7 +558,7 @@ ivas_error pre_proc_front_ivas_fx( } IF( NE_16( Q_inp_const, st->q_inp ) ) { - Scale_sig( st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */ + Copy_Scale_sig( st->mem_decim_fx_q_inp, st->mem_decim_fx, 2 * L_FILT_MAX, sub( Q_inp_const, st->q_inp ) ); /* Q(-1) */ } Scale_sig( st->buf_speech_enc, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k, sub( -1, sub( 15, st->exp_buf_speech_enc ) ) ); /* Q(-1) */ @@ -585,24 +591,23 @@ ivas_error pre_proc_front_ivas_fx( headroom = 2; move16(); - - st->mem_preemph_fx = shl_sat( st->mem_preemph_fx, sub( st->q_inp, -1 ) ); /*st->q_inp*/ + st->mem_preemph_fx_q_inp = shl_sat( st->mem_preemph_fx_q_inp, sub( st->q_inp, st->mem_preemph_q ) ); /*st->q_inp*/ move16(); - st->mem_preemph_DFT_fx = shl_sat( st->mem_preemph_DFT_fx, sub( st->q_inp, -1 ) ); /*st->q_inp*/ + st->mem_preemph_DFT_fx_q_inp = shl_sat( st->mem_preemph_DFT_fx_q_inp, sub( st->q_inp, st->mem_preemph_q ) ); /*st->q_inp*/ move16(); test(); IF( EQ_16( element_mode, IVAS_CPE_DFT ) ) { Copy_Scale_sig( new_inp_12k8_fx - STEREO_DFT_OVL_12k8 + L_FRAME, st->inp_12k8_mem_stereo_sw_fx, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, sub( Q_inp_const, st->q_inp ) ); /* memory for TD/DFT stereo switching Q_inp_const*/ - st->mem_preemph_fx = st->mem_preemph_DFT_fx; /* st->q_inp */ + st->mem_preemph_fx_q_inp = st->mem_preemph_DFT_fx_q_inp; /* st->q_inp */ move16(); - st->mem_preemph_DFT_fx = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */ + st->mem_preemph_DFT_fx_q_inp = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */ move16(); // PREEMPH_FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx ); - PREEMPH_32FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx ); - dummy_fx = st->mem_preemph_fx; + PREEMPH_32FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx_q_inp ); + dummy_fx = st->mem_preemph_fx_q_inp; move16(); // PREEMPH_FX( new_inp_12k8_fx - STEREO_DFT_OVL_12k8 + L_FRAME, PREEMPH_FAC, STEREO_DFT_OVL_12k8, &dummy_fx ); @@ -618,18 +623,18 @@ ivas_error pre_proc_front_ivas_fx( { IF( EQ_16( hCPE->last_element_mode, IVAS_CPE_DFT ) ) { - st->mem_preemph_fx = st->mem_preemph_DFT_fx; /* st->q_inp */ + st->mem_preemph_fx_q_inp = st->mem_preemph_DFT_fx_q_inp; /* st->q_inp */ move16(); Copy_Scale_sig( st->inp_12k8_mem_stereo_sw_fx, new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, sub( st->q_inp, Q_inp_const ) ); /* st->q_inp */ // PREEMPH_FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx ); - PREEMPH_32FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), sig_out, PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx ); + PREEMPH_32FX( new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ), sig_out, PREEMPH_FAC, STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT, &st->mem_preemph_fx_q_inp ); preemp_start_idx = new_inp_12k8_fx - L_MEM_RECALC_12K8 - ( STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT ); move16(); preemp_len = STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT; move16(); } - st->mem_preemph_DFT_fx = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */ + st->mem_preemph_DFT_fx_q_inp = old_inp_12k8_fx[L_INP_MEM - STEREO_DFT_OVL_12k8 + L_FRAME - 1]; /* st->q_inp */ move16(); } @@ -640,15 +645,15 @@ ivas_error pre_proc_front_ivas_fx( Word16 length_12k8 = NS2SA( INT_FS_12k8, L_MEM_RECALC_SCH_NS ); move16(); // PREEMPH_FX( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, PREEMPH_FAC, length_12k8, &st->mem_preemph_fx ); - PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, sig_out, PREEMPH_FAC, length_12k8, &st->mem_preemph_fx ); + PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8, sig_out, PREEMPH_FAC, length_12k8, &st->mem_preemph_fx_q_inp ); preemp_start_idx = new_inp_12k8_fx - lMemRecalc_12k8 - length_12k8; preemp_len = length_12k8; move16(); } // PREEMPH_FX( new_inp_12k8_fx - lMemRecalc_12k8, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx ); - PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8, sig_out + preemp_len, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx ); - dummy_fx = st->mem_preemph_fx; /* st->q_inp */ + PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8, sig_out + preemp_len, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx_q_inp ); + dummy_fx = st->mem_preemph_fx_q_inp; /* st->q_inp */ move16(); // PREEMPH_FX( new_inp_12k8_fx - lMemRecalc_12k8 + L_FRAME, PREEMPH_FAC, lMemRecalc_12k8 + L_FILT, &dummy_fx ); PREEMPH_32FX( new_inp_12k8_fx - lMemRecalc_12k8 + L_FRAME, sig_out + preemp_len + L_FRAME, PREEMPH_FAC, lMemRecalc_12k8 + L_FILT, &dummy_fx ); @@ -669,8 +674,8 @@ ivas_error pre_proc_front_ivas_fx( ELSE /* IVAS_SCE or IVAS_CPE_MDCT */ { // PREEMPH_FX( new_inp_12k8_fx, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx ); - PREEMPH_32FX( new_inp_12k8_fx, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx ); - dummy_fx = st->mem_preemph_fx; + PREEMPH_32FX( new_inp_12k8_fx, sig_out, PREEMPH_FAC, L_FRAME, &st->mem_preemph_fx_q_inp ); + dummy_fx = st->mem_preemph_fx_q_inp; move16(); // PREEMPH_FX( new_inp_12k8_fx + L_FRAME, PREEMPH_FAC, L_FILT, &dummy_fx ); PREEMPH_32FX( new_inp_12k8_fx + L_FRAME, sig_out + L_FRAME, PREEMPH_FAC, L_FILT, &dummy_fx ); @@ -678,11 +683,12 @@ ivas_error pre_proc_front_ivas_fx( preemp_len = L_FRAME + L_FILT; move16(); } - st->mem_preemph_fx = shl_sat( st->mem_preemph_fx, sub( -1, st->q_inp ) ); /*Q(-1) saturation added as float value goes above 65536 for +10 dB test (ltv48_MC512.wav and ltv48_MC51.wav) */ + st->mem_preemph_fx = shl_sat( st->mem_preemph_fx_q_inp, sub( -1, st->q_inp ) ); /*Q(-1) saturation added as float value goes above 65536 for +10 dB test (ltv48_MC512.wav and ltv48_MC51.wav) */ move16(); - st->mem_preemph_DFT_fx = shl( st->mem_preemph_DFT_fx, sub( -1, st->q_inp ) ); /*Q(-1)*/ + st->mem_preemph_DFT_fx = shl( st->mem_preemph_DFT_fx_q_inp, sub( -1, st->q_inp ) ); /*Q(-1)*/ + move16(); + st->mem_preemph_q = st->q_inp; move16(); - maximum_abs_32_fx( sig_out, preemp_len, &max_32 ); inp_max = s_max( extract_h( max_32 ), 1 ); diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 1bd5c936b..8acbc3e87 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -370,7 +370,7 @@ void stereo_mdct_core_enc_fx( } } - exp1 = add( exp1, 1 ); /* 1 guard bit to avoid over-flows in stereo_coder_tcx_fx */ + exp1 = add( exp1, 2 ); /* 2 guard bit to avoid over-flows in stereo_coder_tcx_fx */ exp2 = add( exp2, 2 ); /* 2 guard bit to avoid over-flows in stereo_coder_tcx_fx (ms_processing_fx) */ FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 4fe5bb8a4..45ec01b31 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -1361,7 +1361,10 @@ typedef struct enc_core_structure Word16 no_scales_fx[MAX_NO_MODES][2]; /* LSF LVQ structure Q0*/ Word16 no_scales_p_fx[MAX_NO_MODES_p][2]; /* LSF LVQ structure Q0*/ - Word16 mem_preemph_fx; /* preemphasis filter memory Q(-1) */ + Word16 mem_preemph_fx; /* preemphasis filter memory Q(-1) */ + Word16 mem_q; /* preemphasis filter memory Q(-1) */ + Word16 mem_preemph_q; /* preemphasis filter memory Q(-1) */ + Word16 mem_preemph_fx_q_inp; /* preemphasis filter memory Q(-1) */ Word16 old_wsp_fx[L_WSP_MEM]; /* old weighted signal vector */ Word16 exp_old_wsp; @@ -1460,10 +1463,11 @@ typedef struct enc_core_structure SIGNAL_BUFFERS_ENC_HANDLE hSignalBuf; Word32 *Bin_E_old_fx; /* per bin energy of old 2nd frames */ Word16 q_Bin_E_old; - Word16 *mem_decim_fx; /* decimation filter memory Q(-1) */ - Word16 *mem_decim16k_fx; /* ACELP@16kHz - decimation filter memory @16kHz Q(-1) */ - Word16 *old_inp_12k8_fx; /* memory of input signal at 12.8kHz */ - Word16 *old_inp_16k_fx; /* ACELP@16kHz - memory of input signal @16 kHz */ + Word16 *mem_decim_fx; /* decimation filter memory Q(-1) */ + Word16 mem_decim_fx_q_inp[2 * L_FILT_MAX]; /* decimation filter memory Q(-1) */ + Word16 *mem_decim16k_fx; /* ACELP@16kHz - decimation filter memory @16kHz Q(-1) */ + Word16 *old_inp_12k8_fx; /* memory of input signal at 12.8kHz */ + Word16 *old_inp_16k_fx; /* ACELP@16kHz - memory of input signal @16 kHz */ Word16 *buf_speech_enc_pe; // exp_buf_speech_enc_pe Word16 *buf_synth; /*can be reduced to PIT_MAX_MAX+L_FRAME_MAX if no rate switching*/ @@ -1773,6 +1777,7 @@ typedef struct enc_core_structure /* stereo switching memories */ Word16 mem_preemph_DFT_fx; /* Q(-1) */ + Word16 mem_preemph_DFT_fx_q_inp; /* Q(-1) */ Word16 inp_12k8_mem_stereo_sw_fx[STEREO_DFT_OVL_12k8 - L_MEM_RECALC_12K8 - L_FILT]; /* Q(-1) */ Word16 mem_preemph16k_DFT_fx; /* Q(-1) */ Word16 inp_16k_mem_stereo_sw_fx[STEREO_DFT_OVL_16k - L_MEM_RECALC_16K - L_FILT16k]; /* Q(-1) */ -- GitLab From 92fc63690bd364029401987607c5eced0644944c Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 24 Apr 2025 11:00:24 +0200 Subject: [PATCH 406/698] Revert "[revert-me] add intentional crash + changed complexity" This reverts commit e4ed9c4fc8ce3752a732321b22278150ebc8dea8. --- lib_dec/ivas_jbm_dec_fx.c | 8 ++++---- lib_enc/ivas_enc_fx.c | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 8d4b10dec..74af57bd5 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -159,10 +159,10 @@ ivas_error ivas_jbm_dec_tc_fx( set32_fx( &p_output_fx[0][0], 0, L_FRAME48k ); set32_fx( &p_output_fx[1][0], 0, L_FRAME48k ); - // IF( ( error = ivas_cpe_dec_fx( st_ivas, 0, &p_output_fx[0], output_frame, 0 ) ) != IVAS_ERR_OK ) - // { - // return error; - // } + IF( ( error = ivas_cpe_dec_fx( st_ivas, 0, &p_output_fx[0], output_frame, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } IF( NE_16( q_output, Q11 ) ) { diff --git a/lib_enc/ivas_enc_fx.c b/lib_enc/ivas_enc_fx.c index 95f690c15..ff5f65b32 100644 --- a/lib_enc/ivas_enc_fx.c +++ b/lib_enc/ivas_enc_fx.c @@ -31,7 +31,6 @@ *******************************************************************************************************/ #include -#include #include #include "options.h" #include "cnst.h" @@ -188,7 +187,6 @@ ivas_error ivas_enc_fx( } ELSE IF( EQ_32( ivas_format, ISM_FORMAT ) ) { - assert( 0 ); /* select ISM format mode; reconfigure the ISM format encoder */ IF( ( error = ivas_ism_enc_config( st_ivas ) ) != IVAS_ERR_OK ) { -- GitLab From d22d0d30279d95de9b0d4d6863f2074b8b083451 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 24 Apr 2025 11:00:37 +0200 Subject: [PATCH 407/698] Revert "[revert-me] change script branch for testing" This reverts commit f9354b9c882b9f2206bc78976073c3ed5b572413. --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f12628044..756432136 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" LEVEL_SCALING: "1.0" IVAS_PIPELINE_NAME: '' - BASOP_CI_BRANCH_PC_REPO: "kiene/tmp-branch-for-complexity-cleanup" + BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch" PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" TESTCASE_TIMEOUT_STV: 900 TESTCASE_TIMEOUT_LTV: 2400 -- GitLab From 59e90cdd679f559b3431276b75258e0e1d4224e0 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 24 Apr 2025 11:00:46 +0200 Subject: [PATCH 408/698] Revert "[revert-me] temporarily disable delay for testing" This reverts commit 1b059d6ef99d5f8155b0160e609fe56cc3c602f4. --- .gitlab-ci.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 756432136..780a51995 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1812,6 +1812,8 @@ complexity-ism-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 1 hour variables: JOB_ID_INJECT: "" script: @@ -1828,6 +1830,8 @@ complexity-ism-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 2 hours variables: JOB_ID_INJECT: "" script: @@ -1844,6 +1848,8 @@ complexity-ism-in-ext-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 3 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1860,6 +1866,8 @@ complexity-sba-hoa3-in-hoa3-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 4 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1876,6 +1884,8 @@ complexity-sba-hoa3-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 5 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1892,6 +1902,8 @@ complexity-sba-hoa3-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 6 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1908,6 +1920,8 @@ complexity-mc-in-7_1_4-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 7 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1924,6 +1938,8 @@ complexity-mc-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 10 hours variables: JOB_ID_INJECT: "" script: @@ -1940,6 +1956,8 @@ complexity-mc-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 12 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -1956,6 +1974,8 @@ complexity-masa-in-ext-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 15 hours variables: JOB_ID_INJECT: "" script: @@ -1972,6 +1992,8 @@ complexity-masa-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 16 hours variables: JOB_ID_INJECT: "" script: @@ -1988,6 +2010,8 @@ complexity-masa-in-hoa3-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 17 hours variables: JOB_ID_INJECT: "" script: @@ -2022,6 +2046,8 @@ complexity-omasa-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 18 hours variables: JOB_ID_INJECT: "" script: @@ -2038,6 +2064,8 @@ complexity-omasa-in-hoa3-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 20 hours variables: JOB_ID_INJECT: "" script: @@ -2054,6 +2082,8 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 22 hours variables: JOB_ID_INJECT: "" script: @@ -2070,6 +2100,8 @@ complexity-StereoDmxEVS-stereo-in-mono-out: # - .complexity-template # rules: # - if: $MEASURE_COMPLEXITY_LINUX +# when: delayed +# start_in: 17 hours # script: # - in_format=OSBA # - out_format=EXT @@ -2084,6 +2116,8 @@ complexity-osba-in-binaural-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 22 hours 30 minutes variables: JOB_ID_INJECT: "" script: @@ -2100,6 +2134,8 @@ complexity-osba-in-binaural_room_ir-out: - .complexity-template rules: - if: $MEASURE_COMPLEXITY_LINUX + when: delayed + start_in: 25 hours variables: JOB_ID_INJECT: "" script: -- GitLab From 8cdaa39df0c7b287efe951b8e5b72a52c172be9b Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 24 Apr 2025 14:42:03 +0530 Subject: [PATCH 409/698] optimizing vector add and subtract, hp20 optimizations --- lib_com/hp50_fx.c | 85 +++++-------------- lib_com/mslvq_com_fx.c | 35 ++++++-- lib_com/options.h | 3 +- lib_com/prot_fx.h | 18 ++++ lib_com/tools.c | 20 +++++ lib_com/tools_fx.c | 20 +++++ lib_dec/fd_cng_dec_fx.c | 4 + lib_dec/ivas_dirac_dec_fx.c | 4 + lib_dec/ivas_jbm_dec_fx.c | 4 + lib_dec/ivas_mc_param_dec_fx.c | 5 ++ lib_enc/ivas_qmetadata_enc_fx.c | 18 +++- lib_enc/ivas_sns_enc_fx.c | 4 + lib_enc/speech_music_classif_fx.c | 4 + lib_rend/ivas_dirac_ana_fx.c | 4 + lib_rend/ivas_dirac_output_synthesis_dec_fx.c | 7 ++ lib_rend/ivas_dirac_rend_fx.c | 12 ++- lib_rend/ivas_efap_fx.c | 29 ++++++- lib_rend/ivas_omasa_ana_fx.c | 5 ++ lib_rend/ivas_reverb_fx.c | 30 +++++++ lib_rend/lib_rend.c | 8 ++ 20 files changed, 238 insertions(+), 81 deletions(-) diff --git a/lib_com/hp50_fx.c b/lib_com/hp50_fx.c index f5e7105cf..f1864d7a7 100644 --- a/lib_com/hp50_fx.c +++ b/lib_com/hp50_fx.c @@ -458,14 +458,8 @@ void hp20_fx_32( { Word16 i; Word32 a1_fx, a2_fx, b1_fx, b2_fx; -#ifdef OPT_STEREO_32KBPS_V1 - Word16 Qy1, Qy2, Qmin; - Word64 y0_fx64, y1_fx64, y2_fx64; - Word32 x0, x1, x2; -#else /* OPT_STEREO_32KBPS_V1 */ Word16 Qx0, Qx1, Qx2, Qy1, Qprev_y1, Qy2, Qprev_y2, Qmin; Word64 x0_fx64, x1_fx64, x2_fx64, y0_fx64, y1_fx64, y2_fx64, R1, R2, R3, R4, R5; -#endif /* OPT_STEREO_32KBPS_V1 */ IF( EQ_32( Fs, 8000 ) ) { @@ -516,64 +510,15 @@ void hp20_fx_32( move32(); move32(); -#ifdef OPT_STEREO_32KBPS_V1 - y1_fx64 = W_add( W_deposit32_l( mem_fx[0] ), W_deposit32_h( mem_fx[1] ) ); - y2_fx64 = W_add( W_deposit32_l( mem_fx[2] ), W_deposit32_h( mem_fx[3] ) ); - - x0 = mem_fx[4]; - move32(); - x1 = mem_fx[5]; - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ Qprev_y1 = extract_l( mem_fx[4] ); Qprev_y2 = extract_l( mem_fx[5] ); y1_fx64 = W_deposit32_l( mem_fx[0] ); y2_fx64 = W_deposit32_l( mem_fx[1] ); x0_fx64 = W_deposit32_l( mem_fx[2] ); x1_fx64 = W_deposit32_l( mem_fx[3] ); -#endif /* OPT_STEREO_32KBPS_V1 */ FOR( i = 0; i < lg; i++ ) { -#ifdef OPT_STEREO_32KBPS_V1 - x2 = x1; - move32(); - x1 = x0; - move32(); - x0 = signal_fx[i]; - move32(); - - Qy1 = W_norm( y1_fx64 ); - if ( y1_fx64 == 0 ) - { - Qy1 = 62; - move16(); - } - - Qy2 = W_norm( y2_fx64 ); - if ( y2_fx64 == 0 ) - { - Qy2 = 62; - move16(); - } - - Qmin = s_min( Qy1, Qy2 ); - - Qmin = sub( Qmin, 34 ); - - y0_fx64 = W_mac_32_32( W_mult_32_32( W_shl_sat_l( y1_fx64, Qmin ), a1_fx ), W_shl_sat_l( y2_fx64, Qmin ), a2_fx ); // Qmin + Q29 + Q30 + 1 - - Word64 temp = W_mac_32_32( W_mac_32_32( W_mult_32_32( x2, b2_fx ), x1, b1_fx ), x0, b2_fx ); // Q30 - Word64 y0_fx = W_shr( y0_fx64, add( Qmin, Q30 ) ); // Q30 - y0_fx64 = W_add( temp, y0_fx ); // Q30 - signal_fx[i] = W_shl_sat_l( y0_fx64, -Q30 ); - move32(); - - y2_fx64 = y1_fx64; - move64(); - y1_fx64 = y0_fx64; - move64(); -#else /* OPT_STEREO_32KBPS_V1 */ x2_fx64 = x1_fx64; move64(); x1_fx64 = x0_fx64; @@ -587,7 +532,11 @@ void hp20_fx_32( move16(); } Qy1 = sub( Qy1, 34 ); +#ifdef OPT_STEREO_32KBPS_V1 + R1 = W_mult0_32_32( W_shl_sat_l( y1_fx64, Qy1 ), a1_fx ); +#else /* OPT_STEREO_32KBPS_V1 */ R1 = W_mult0_32_32( W_extract_l( W_shl( y1_fx64, Qy1 ) ), a1_fx ); +#endif /* OPT_STEREO_32KBPS_V1 */ Qy1 = add( Qy1, Qprev_y1 ); Qy2 = W_norm( y2_fx64 ); @@ -597,7 +546,11 @@ void hp20_fx_32( move16(); } Qy2 = sub( Qy2, 34 ); +#ifdef OPT_STEREO_32KBPS_V1 + R2 = W_mult0_32_32( W_shl_sat_l( y2_fx64, Qy2 ), a2_fx ); +#else /* OPT_STEREO_32KBPS_V1 */ R2 = W_mult0_32_32( W_extract_l( W_shl( y2_fx64, Qy2 ) ), a2_fx ); +#endif /* OPT_STEREO_32KBPS_V1 */ Qy2 = add( Qy2, Qprev_y2 ); Qx0 = W_norm( x0_fx64 ); @@ -607,7 +560,11 @@ void hp20_fx_32( move16(); } Qx0 = sub( Qx0, 34 ); +#ifdef OPT_STEREO_32KBPS_V1 + R3 = W_mult0_32_32( W_shl_sat_l( x0_fx64, Qx0 ), b2_fx ); +#else /* OPT_STEREO_32KBPS_V1 */ R3 = W_mult0_32_32( W_extract_l( W_shl( x0_fx64, Qx0 ) ), b2_fx ); +#endif /* OPT_STEREO_32KBPS_V1 */ Qx1 = W_norm( x1_fx64 ); if ( x1_fx64 == 0 ) @@ -616,7 +573,11 @@ void hp20_fx_32( move16(); } Qx1 = sub( Qx1, 34 ); +#ifdef OPT_STEREO_32KBPS_V1 + R4 = W_mult0_32_32( W_shl_sat_l( x1_fx64, Qx1 ), b1_fx ); +#else /* OPT_STEREO_32KBPS_V1 */ R4 = W_mult0_32_32( W_extract_l( W_shl( x1_fx64, Qx1 ) ), b1_fx ); +#endif /* OPT_STEREO_32KBPS_V1 */ Qx2 = W_norm( x2_fx64 ); if ( x2_fx64 == 0 ) @@ -625,7 +586,11 @@ void hp20_fx_32( move16(); } Qx2 = sub( Qx2, 34 ); +#ifdef OPT_STEREO_32KBPS_V1 + R5 = W_mult0_32_32( W_shl_sat_l( x2_fx64, Qx2 ), b2_fx ); +#else /* OPT_STEREO_32KBPS_V1 */ R5 = W_mult0_32_32( W_extract_l( W_shl( x2_fx64, Qx2 ) ), b2_fx ); +#endif /* OPT_STEREO_32KBPS_V1 */ Qmin = s_min( Qy1, Qy2 ); @@ -655,17 +620,8 @@ void hp20_fx_32( move64(); move16(); move16(); -#endif /* OPT_STEREO_32KBPS_V1 */ } -#ifdef OPT_STEREO_32KBPS_V1 - mem_fx[0] = W_extract_l( y1_fx64 ); - mem_fx[1] = W_extract_h( y1_fx64 ); - mem_fx[2] = W_extract_l( y2_fx64 ); - mem_fx[3] = W_extract_h( y2_fx64 ); - mem_fx[4] = x0; - mem_fx[5] = x1; -#else /* OPT_STEREO_32KBPS_V1 */ Qy1 = W_norm( y1_fx64 ); test(); IF( y1_fx64 != 0 && LT_16( Qy1, 32 ) ) @@ -688,7 +644,6 @@ void hp20_fx_32( mem_fx[3] = W_extract_l( x1_fx64 ); mem_fx[4] = Qprev_y1; mem_fx[5] = Qprev_y2; -#endif /* OPT_STEREO_32KBPS_V1 */ move32(); move32(); diff --git a/lib_com/mslvq_com_fx.c b/lib_com/mslvq_com_fx.c index cf2ad8a8a..7fcf36bfc 100644 --- a/lib_com/mslvq_com_fx.c +++ b/lib_com/mslvq_com_fx.c @@ -128,21 +128,31 @@ void init_lvq_fx( FOR( i = 0; i < MAX_NO_MODES; i++ ) { #ifdef OPT_STEREO_32KBPS_V1 - FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; ( j++, k++ ) ) + FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; j++ ) { - if ( ( no_lead_fx[i][j] <= 0 ) ) + if ( no_lead_fx[i][j] > 0 ) { - j = MAX_NO_SCALES; + k = add( k, 1 ); + } + if ( no_lead_fx[i][j] <= 0 ) + { + j = MAX_NO_SCALES - 1; + move16(); } } no_scales[i][0] = k; move16(); - FOR( k = 0; j < MAX_NO_SCALES << 1; ( j++, k++ ) ) + FOR( k = 0; j < MAX_NO_SCALES << 1; j++ ) { + if ( no_lead_fx[i][j] > 0 ) + { + k = add( k, 1 ); + } if ( no_lead_fx[i][j] <= 0 ) { j = MAX_NO_SCALES << 1; + move16(); } } no_scales[i][1] = k; @@ -172,23 +182,32 @@ void init_lvq_fx( FOR( i = 0; i < MAX_NO_MODES_p; i++ ) { #ifdef OPT_STEREO_32KBPS_V1 - FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; ( j++, k++ ) ) + FOR( ( j = 0, k = 0 ); j < MAX_NO_SCALES; j++ ) { - + if ( no_lead_p_fx[i][j] > 0 ) + { + k = add( k, 1 ); + } if ( ( no_lead_p_fx[i][j] <= 0 ) ) { - j = MAX_NO_SCALES; + j = MAX_NO_SCALES - 1; + move16(); } } no_scales_p[i][0] = k; move16(); - FOR( k = 0; j < MAX_NO_SCALES << 1; ( j++, k++ ) ) + FOR( k = 0; j < MAX_NO_SCALES << 1; j++ ) { + if ( no_lead_p_fx[i][j] > 0 ) + { + k = add( k, 1 ); + } if ( ( no_lead_p_fx[i][j] <= 0 ) ) { j = MAX_NO_SCALES << 1; + move16(); } } diff --git a/lib_com/options.h b/lib_com/options.h index 2f1e82de8..cbc77b6e7 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -74,7 +74,7 @@ #define FIX_1379_MASA_ANGLE_ROUND /* Note: each compile switch (FIX_1101_...) is independent from the other ones */ -//#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ +#define OPT_STEREO_32KBPS_V1 /* Optimization made in stereo decoding path for 32kbps decoding */ #define OPT_AVOID_STATE_BUF_RESCALE /* Optimization made to avoid rescale of synth state buffer */ #define FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx /*FhG: WMOPS tuning, nonbe*/ #define FIX_1310_SPEEDUP_ivas_dirac_dec_output_synthesis_process_slot /*FhG: WMOPS tuning, nonbe*/ @@ -93,6 +93,7 @@ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ #define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ +#define VEC_ARITH_OPT_v1 #define FIX_1486_IND_SHB_RES /* VA: Fix for issue 1486: align the usage of IND_SHB_RES_GS indices with float code */ #define TEST_HR diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 41f68807e..86b5ec0b7 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -6184,6 +6184,15 @@ void v_add_fixed( const Word16 hdrm /* i : headroom for when subtraction result > 1 or < -1 */ ); +#ifdef VEC_ARITH_OPT_v1 +void v_add_fixed_no_hdrm( + const Word32 x1[], /* i : Input vector 1 */ + const Word32 x2[], /* i : Input vector 2 */ + Word32 y[], /* o : Output vector that contains vector 1 + vector 2 */ + const Word16 N /* i : Vector length */ +); +#endif /* VEC_ARITH_OPT_v1 */ + void v_add_fixed_me( const Word32 x1[], /* i : Input vector 1 */ const Word16 x1_e, /* i : Exponent for input vector 1 */ @@ -6218,6 +6227,15 @@ void v_sub_fixed( const Word16 hdrm /* i : headroom for when subtraction result > 1 or < -1 */ ); +#ifdef VEC_ARITH_OPT_v1 +void v_sub_fixed_no_hdrm( + const Word32 x1[], /* i : Input vector 1 */ + const Word32 x2[], /* i : Input vector 2 */ + Word32 y[], /* o : Output vector that contains vector 1 - vector 2 */ + const Word16 N /* i : Vector length */ +); +#endif /* VEC_ARITH_OPT_v1 */ + /*! r: dot product of x[] and y[] */ Word32 dotp_fixed( const Word32 x[], /* i : vector x[] */ diff --git a/lib_com/tools.c b/lib_com/tools.c index b1a9f4d13..f7303c6f3 100644 --- a/lib_com/tools.c +++ b/lib_com/tools.c @@ -888,6 +888,26 @@ void v_sub_fixed( return; } +#ifdef VEC_ARITH_OPT_v1 +void v_sub_fixed_no_hdrm( + const Word32 x1[], /* i : Input vector 1 */ + const Word32 x2[], /* i : Input vector 2 */ + Word32 y[], /* o : Output vector that contains vector 1 - vector 2 */ + const Word16 N /* i : Vector length */ +) +{ + Word16 i; + + FOR( i = 0; i < N; i++ ) + { + y[i] = L_sub( x1[i], x2[i] ); + move32(); + } + + return; +} +#endif /* VEC_ARITH_OPT_v1 */ + /*-------------------------------------------------------------------* * v_multc_fixed() * diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 6dc1c45f2..44a86b0eb 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -4524,6 +4524,26 @@ void v_add_fixed( return; } +#ifdef VEC_ARITH_OPT_v1 +void v_add_fixed_no_hdrm( + const Word32 x1[], /* i : Input vector 1 */ + const Word32 x2[], /* i : Input vector 2 */ + Word32 y[], /* o : Output vector that contains vector 1 + vector 2 */ + const Word16 N /* i : Vector length */ +) +{ + Word16 i; + + FOR( i = 0; i < N; i++ ) + { + y[i] = L_add( x1[i], x2[i] ); + move32(); + } + + return; +} +#endif /* VEC_ARITH_OPT_v1 */ + void v_add_fixed_me( const Word32 x1[], /* i : Input vector 1 */ const Word16 x1_e, /* i : Exponent for input vector 1 */ diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index d0fd178f2..47a61a26e 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -5345,7 +5345,11 @@ void generate_masking_noise_ivas_fx( } ELSE { +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( maskingNoise_fx, timeDomainBuffer, timeDomainBuffer, s_min( hFdCngCom->frameSize, length ) ); /*Q31 - *exp_out*/ +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( maskingNoise_fx, timeDomainBuffer, timeDomainBuffer, s_min( hFdCngCom->frameSize, length ), 0 ); /*Q31 - *exp_out*/ +#endif /* VEC_ARITH_OPT_v1 */ } return; diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 9c319489e..37b0bf1ba 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -3100,7 +3100,11 @@ void ivas_dirac_dec_render_sf_fx( v_multc_fixed( onset_filter_fx, 536870912 /* 0.25f in Q31 */, onset_filter_fx, hSpatParamRendCom->num_freq_bands ); +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */ +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands, 0 ); /* Q31 */ +#endif /* VEC_ARITH_OPT_v1 */ p_onset_filter_fx = onset_filter_subframe_fx; } ELSE diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 74af57bd5..3f67962dc 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2137,7 +2137,11 @@ ivas_error ivas_jbm_dec_render_fx( /* add already rendered SBA part */ FOR( n = 0; n < nchan_out; n++ ) { +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( p_output_fx[n], p_tc_fx[n + st_ivas->nchan_ism], p_output_fx[n], *nSamplesRendered ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( p_output_fx[n], p_tc_fx[n + st_ivas->nchan_ism], p_output_fx[n], *nSamplesRendered, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ } } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) diff --git a/lib_dec/ivas_mc_param_dec_fx.c b/lib_dec/ivas_mc_param_dec_fx.c index 5f93c9676..e0671eea0 100644 --- a/lib_dec/ivas_mc_param_dec_fx.c +++ b/lib_dec/ivas_mc_param_dec_fx.c @@ -2084,8 +2084,13 @@ void ivas_param_mc_dec_render_fx( { IF( hLsSetup.index_lfe[idx_lfe] != ch ) { +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( Cldfb_RealBuffer_fx[ch][slot_idx], Cldfb_RealBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_RealBuffer_fx[ch][slot_idx], 1 ); + v_add_fixed_no_hdrm( Cldfb_ImagBuffer_fx[ch][slot_idx], Cldfb_ImagBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_ImagBuffer_fx[ch][slot_idx], 1 ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( Cldfb_RealBuffer_fx[ch][slot_idx], Cldfb_RealBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_RealBuffer_fx[ch][slot_idx], 1, 0 ); v_add_fixed( Cldfb_ImagBuffer_fx[ch][slot_idx], Cldfb_ImagBuffer_fx[hLsSetup.index_lfe[idx_lfe]][slot_idx], Cldfb_ImagBuffer_fx[ch][slot_idx], 1, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ } } } diff --git a/lib_enc/ivas_qmetadata_enc_fx.c b/lib_enc/ivas_qmetadata_enc_fx.c index 79a4adee7..744d2c067 100644 --- a/lib_enc/ivas_qmetadata_enc_fx.c +++ b/lib_enc/ivas_qmetadata_enc_fx.c @@ -1069,8 +1069,12 @@ void ivas_qmetadata_enc_sid_encode_fx( { /*compute the average direction */ ivas_qmetadata_azimuth_elevation_to_direction_vector_fx( q_direction->band_data[b].azimuth_fx[m], q_direction->band_data[b].elevation_fx[m], direction_vector_fx ); - scale_sig32( direction_vector_fx, 3, Q22 - Q30 ); // Q30 -> Q22 + scale_sig32( direction_vector_fx, 3, Q22 - Q30 ); // Q30 -> Q22 +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( avg_direction_vector_fx, direction_vector_fx, avg_direction_vector_fx, 3 ); // Q22 +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( avg_direction_vector_fx, direction_vector_fx, avg_direction_vector_fx, 3, 0 ); // Q22 +#endif /* VEC_ARITH_OPT_v1 */ } ivas_qmetadata_direction_vector_to_azimuth_elevation_fx( avg_direction_vector_fx, Q22, &avg_azimuth_fx[b], &avg_elevation_fx[b] ); @@ -2402,7 +2406,11 @@ static Word16 ivas_qmetadata_entropy_encode_dir_fx( /*compute the average direction */ ivas_qmetadata_azimuth_elevation_to_direction_vector_fx( q_direction->band_data[i].azimuth_fx[j], q_direction->band_data[i].elevation_fx[j], direction_vector ); scale_sig32( direction_vector, 3, -8 ); // Q30 -> Q22 +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( avg_direction_vector, direction_vector, avg_direction_vector, 3 ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( avg_direction_vector, direction_vector, avg_direction_vector, 3, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ } } } @@ -2665,7 +2673,11 @@ static Word16 ivas_qmetadata_entropy_encode_dir_fx( IF( LT_16( idx, 4 ) ) { +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( avg_direction_vector, direction_vector, avg_direction_vector, 3 ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( avg_direction_vector, direction_vector, avg_direction_vector, 3, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ } } /* project the quantized average azimuth angle to the same grid as the current sample */ @@ -2696,7 +2708,11 @@ static Word16 ivas_qmetadata_entropy_encode_dir_fx( ivas_qmetadata_azimuth_elevation_to_direction_vector_fx( q_direction->band_data[i].azimuth_fx[j], q_direction->band_data[i].elevation_fx[j], direction_vector ); scale_sig32( direction_vector, 3, -8 ); // Q30 -> Q22 +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( avg_direction_vector, direction_vector, avg_direction_vector, 3 ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( avg_direction_vector, direction_vector, avg_direction_vector, 3, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ ivas_qmetadata_direction_vector_to_azimuth_elevation_fx( avg_direction_vector, Q22, &avg_azimuth, &avg_elevation ); avg_azimuth_index_upd = quantize_phi_enc_fx( L_add( avg_azimuth, 180 << Q22 ), 0, &avg_azimuth, avg_azimuth_alphabet ); diff --git a/lib_enc/ivas_sns_enc_fx.c b/lib_enc/ivas_sns_enc_fx.c index b7de878a1..2eaefb483 100644 --- a/lib_enc/ivas_sns_enc_fx.c +++ b/lib_enc/ivas_sns_enc_fx.c @@ -672,7 +672,11 @@ Word16 quantize_sns_fx( Word32 ener_side_fx; Word16 ener_side_q; +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( snsQ_out_fx[0][k], snsQ_out_fx[1][k], side_fx, M ); +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( snsQ_out_fx[0][k], snsQ_out_fx[1][k], side_fx, M, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ Word64 L64_sum; L64_sum = 1; diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index cbd8ea19f..cf6ba543b 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -2181,7 +2181,11 @@ Word16 ivas_smc_gmm_fx( } /* PCA */ +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( FV_fx, pca_mean_fx, FV_fx, N_SMC_FEATURES ); +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( FV_fx, pca_mean_fx, FV_fx, N_SMC_FEATURES, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ v_mult_mat_fixed( FV_fx, FV_fx, pca_components_fx, N_SMC_FEATURES, N_PCA_COEF, 0 ); /*------------------------------------------------------------------* * Calculation of posterior probability diff --git a/lib_rend/ivas_dirac_ana_fx.c b/lib_rend/ivas_dirac_ana_fx.c index 8124c4967..c2430d008 100644 --- a/lib_rend/ivas_dirac_ana_fx.c +++ b/lib_rend/ivas_dirac_ana_fx.c @@ -578,7 +578,11 @@ static void ivas_dirac_dmx_fx( v_add_fx( data_in_fx[0], data_in_fx[1], data_out_fx[0], input_frame ); v_multc_fixed( data_out_fx[0], ONE_IN_Q30, data_out_fx[0], input_frame ); // ONE_IN_Q30 = 0.5* ONE_IN_Q31 +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( data_in_fx[0], data_in_fx[1], data_out_fx[1], input_frame ); +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( data_in_fx[0], data_in_fx[1], data_out_fx[1], input_frame, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ v_multc_fixed( data_out_fx[1], ONE_IN_Q30, data_out_fx[1], input_frame ); FOR( i = 0; i < nchan_transport; i++ ) diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index 0cdbe3a10..509eec6e2 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -1227,10 +1227,17 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( { Scale_sig32( aux_buf, num_freq_bands, sub( h_dirac_output_synthesis_state->q_cy_auto_diff_smooth, temp_q ) ); /*temp_q->(h_dirac_output_synthesis_state->q_cy_auto_diff_smooth)*/ } +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( aux_buf, + &h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff], + &h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff], + num_freq_bands_diff ); /*h_dirac_output_synthesis_state->q_cy_auto_diff_smooth*/ +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( aux_buf, &h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff], &h_dirac_output_synthesis_state->cy_auto_diff_smooth_fx[ch_idx * num_freq_bands_diff], num_freq_bands_diff, 0 ); /*h_dirac_output_synthesis_state->q_cy_auto_diff_smooth*/ +#endif /* VEC_ARITH_OPT_v1 */ } return; diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index 2f748289a..2540426cc 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -4528,9 +4528,13 @@ static void ivas_masa_ext_dirac_render_sf_fx( hDirACRend->h_freq_domain_decorr_ap_params, hDirACRend->h_freq_domain_decorr_ap_state ); - v_multc_fixed( onset_filter_fx, 536870912 /* 0.25f in Q31 */, onset_filter_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */ + v_multc_fixed( onset_filter_fx, 536870912 /* 0.25f in Q31 */, onset_filter_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */ +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands ); /* Q31 */ +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( onset_filter_fx, onset_filter_subframe_fx, onset_filter_subframe_fx, hSpatParamRendCom->num_freq_bands, 0 ); /* Q31 */ - p_onset_filter_fx = onset_filter_subframe_fx; /*q31*/ +#endif /* VEC_ARITH_OPT_v1 */ + p_onset_filter_fx = onset_filter_subframe_fx; /*q31*/ } ELSE { @@ -4627,7 +4631,11 @@ static void ivas_masa_ext_dirac_render_sf_fx( DirAC_mem.reference_power_smooth_q = DirAC_mem.reference_power_q; move16(); #endif +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( reference_power_fix, reference_power_smooth_fx, reference_power_smooth_fx, hSpatParamRendCom->num_freq_bands ); // DirAC_mem.reference_power_smooth_q +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( reference_power_fix, reference_power_smooth_fx, reference_power_smooth_fx, hSpatParamRendCom->num_freq_bands, 0 ); // DirAC_mem.reference_power_smooth_q +#endif /* VEC_ARITH_OPT_v1 */ } } /*Rescaling proto_direct_buffer_f*/ diff --git a/lib_rend/ivas_efap_fx.c b/lib_rend/ivas_efap_fx.c index 543decbdd..4fb88643b 100644 --- a/lib_rend/ivas_efap_fx.c +++ b/lib_rend/ivas_efap_fx.c @@ -1525,7 +1525,11 @@ static void get_poly_gains_fx( A[1] = elePoly[i - 1]; // q22 move32(); +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( P, A, P_minus_A, 2 ); /* Precalculate value of (P-A) q22*/ +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( P, A, P_minus_A, 2, 0 ); /* Precalculate value of (P-A) q22*/ +#endif /* VEC_ARITH_OPT_v1 */ FOR( j = i; j < numChan - 2 + i; ++j ) { @@ -1578,7 +1582,11 @@ static Word32 get_tri_gain_fx( tmpN[1] = L_sub( C[0], B[0] ); // q22 move32(); - v_sub_fixed( B, A, tmpSub1, 2, 0 ); // tmpSub1 q22 +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( B, A, tmpSub1, 2 ); // tmpSub1 q22 +#else /* VEC_ARITH_OPT_v1 */ + v_sub_fixed( B, A, tmpSub1, 2, 0 ); // tmpSub1 q22 +#endif /* VEC_ARITH_OPT_v1 */ tmpDot1 = dotp_fixed( tmpN, tmpSub1, 2 ); // Q13 @@ -2237,7 +2245,11 @@ static void sort_channels_vertex_fx( move32(); } +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( tmpV1, tmpV2, tmpV3, 3 ); // tmpV3 Q30 +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( tmpV1, tmpV2, tmpV3, 3, 0 ); // tmpV3 Q30 +#endif /* VEC_ARITH_OPT_v1 */ Word16 exp2 = 2; move16(); normV = ISqrt32( dotp_fixed( tmpV3, tmpV3, 3 ) /*q29*/, &exp2 ); // q=31-exp2 @@ -2419,7 +2431,11 @@ static Word16 in_poly_fx( /* Angles are in Q22 */ A[1] = poly.polyEle[0]; // q22 move32(); - v_sub_fixed( P, A, P_minus_A, 2, 0 ); /* Precalculate value of (P-A) q22*/ +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( P, A, P_minus_A, 2 ); /* Precalculate value of (P-A) q22*/ +#else /* VEC_ARITH_OPT_v1 */ + v_sub_fixed( P, A, P_minus_A, 2, 0 ); /* Precalculate value of (P-A) q22*/ +#endif /* VEC_ARITH_OPT_v1 */ FOR( n = 1; n < sub( numVertices, 1 ); ++n ) { @@ -2487,8 +2503,13 @@ static Word16 in_tri_fx( I'll just compute the determinant and if it's equal to 0, that means the two vectors are colinear */ - v_sub_fixed( B, A, tmpDot1, 2, 0 ); // tmpDot1 q22 - v_sub_fixed( C, A, tmpDot2, 2, 0 ); // tmpDot2 q22 +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( B, A, tmpDot1, 2 ); // tmpDot1 q22 + v_sub_fixed_no_hdrm( C, A, tmpDot2, 2 ); // tmpDot2 q22 +#else /* VEC_ARITH_OPT_v1 */ + v_sub_fixed( B, A, tmpDot1, 2, 0 ); // tmpDot1 q22 + v_sub_fixed( C, A, tmpDot2, 2, 0 ); // tmpDot2 q22 +#endif /* VEC_ARITH_OPT_v1 */ /* Verification of the non-colinearity : Q22 * Q22 = Q13 */ invFactor = L_sub( Mpy_32_32( tmpDot1[0], tmpDot2[1] ), Mpy_32_32( tmpDot1[1], tmpDot2[0] ) ); /*q22+q22-q31->q13*/ diff --git a/lib_rend/ivas_omasa_ana_fx.c b/lib_rend/ivas_omasa_ana_fx.c index ba632c6ba..7b7f64c84 100644 --- a/lib_rend/ivas_omasa_ana_fx.c +++ b/lib_rend/ivas_omasa_ana_fx.c @@ -538,8 +538,13 @@ static void ivas_omasa_param_est_ana_fx( FOR( i = 1; i < nchan_ism; i++ ) { +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( Chnl_RealBuffer_fx[i], Foa_RealBuffer_fx[0], Foa_RealBuffer_fx[0], num_freq_bins ); // Q: Chnl_RealBuffer_q + v_add_fixed_no_hdrm( Chnl_ImagBuffer_fx[i], Foa_ImagBuffer_fx[0], Foa_ImagBuffer_fx[0], num_freq_bins ); // Q: Chnl_ImagBuffer_q +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( Chnl_RealBuffer_fx[i], Foa_RealBuffer_fx[0], Foa_RealBuffer_fx[0], num_freq_bins, 0 ); // Q: Chnl_RealBuffer_q v_add_fixed( Chnl_ImagBuffer_fx[i], Foa_ImagBuffer_fx[0], Foa_ImagBuffer_fx[0], num_freq_bins, 0 ); // Q: Chnl_ImagBuffer_q +#endif /* VEC_ARITH_OPT_v1 */ } /* Y */ diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 9b149940c..12b94b1a2 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2177,13 +2177,23 @@ void ivas_binaural_reverb_processSubframe_fx( { IF( s_and( ch, 1 ) ) { +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( hReverb->preDelayBufferReal_fx[idx], inReal[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins ); + v_add_fixed_no_hdrm( hReverb->preDelayBufferImag_fx[idx], inImag[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( hReverb->preDelayBufferReal_fx[idx], inReal[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins, 0 ); v_add_fixed( hReverb->preDelayBufferImag_fx[idx], inImag[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ } ELSE { +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( hReverb->preDelayBufferReal_fx[idx], inImag[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins ); + v_add_fixed_no_hdrm( hReverb->preDelayBufferImag_fx[idx], inReal[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins ); +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( hReverb->preDelayBufferReal_fx[idx], inImag[ch][sample], hReverb->preDelayBufferReal_fx[idx], hReverb->numBins, 0 ); v_add_fixed( hReverb->preDelayBufferImag_fx[idx], inReal[ch][sample], hReverb->preDelayBufferImag_fx[idx], hReverb->numBins, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ } } idx = add( idx, 1 ) % hReverb->preDelayBufferLength; @@ -2213,20 +2223,40 @@ void ivas_binaural_reverb_processSubframe_fx( SWITCH( phaseShiftTypePr[tapIdx] ) { case 0: /* 0 degrees phase */ +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots ); + v_add_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 ); v_add_fixed( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ BREAK; case 1: /* 90 degrees phase */ +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots ); + v_add_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots ); +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 ); v_add_fixed( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ BREAK; case 2: /* 180 degrees phase */ +#ifdef VEC_ARITH_OPT_v1 + v_sub_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots ); + v_sub_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots ); +#else /* VEC_ARITH_OPT_v1 */ v_sub_fixed( hReverb->outputBufferReal_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 ); v_sub_fixed( hReverb->outputBufferImag_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ BREAK; default: /* 270 degrees phase */ +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots ); + v_sub_fixed_no_hdrm( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( hReverb->outputBufferReal_fx[bin][ch], tapImagPr_fx[tapIdx], hReverb->outputBufferReal_fx[bin][ch], numSlots, 0 ); v_sub_fixed( hReverb->outputBufferImag_fx[bin][ch], tapRealPr_fx[tapIdx], hReverb->outputBufferImag_fx[bin][ch], numSlots, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ BREAK; } } diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 859768784..ad84c92e9 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -5772,7 +5772,11 @@ static ivas_error renderLfeToBinaural_fx( { writePtr = getSmplPtr_fx( outAudio, ear_idx, 0 ); move32(); +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( writePtr, tmpLfeBuffer, writePtr, frame_size ); /* Q(out_q) */ +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( writePtr, tmpLfeBuffer, writePtr, frame_size, 0 ); /* Q(out_q) */ +#endif /* VEC_ARITH_OPT_v1 */ } pop_wmops(); @@ -6793,7 +6797,11 @@ static void renderMasaToMasa( ELSE IF( EQ_16( masaInput->base.inputBuffer.config.numChannels, 2 ) && EQ_16( outAudio.config.numChannels, 1 ) ) { // v_add( tmpBuffer[0], tmpBuffer[1], tmpBuffer[0], masaInput->base.inputBuffer.config.numSamplesPerChannel ); +#ifdef VEC_ARITH_OPT_v1 + v_add_fixed_no_hdrm( tmpBuffer_fx[0], tmpBuffer_fx[1], tmpBuffer_fx[0], masaInput->base.inputBuffer.config.numSamplesPerChannel ); +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( tmpBuffer_fx[0], tmpBuffer_fx[1], tmpBuffer_fx[0], masaInput->base.inputBuffer.config.numSamplesPerChannel, 0 ); +#endif /* VEC_ARITH_OPT_v1 */ } /* Copy metadata */ -- GitLab From b4c064df41e2010a1a5b69fe30a64828cfdf3bfd Mon Sep 17 00:00:00 2001 From: marc emerit Date: Thu, 24 Apr 2025 13:08:39 +0200 Subject: [PATCH 410/698] bug fix test on goinf --- apps/renderer.c | 7 ++++--- lib_com/options.h | 2 +- lib_rend/lib_rend.c | 6 +++--- lib_util/hrtf_file_reader.c | 36 +++++++++++++++++++++++++++++++----- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/apps/renderer.c b/apps/renderer.c index b12aa43a5..355c04798 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -1009,11 +1009,12 @@ int main( } const int16_t frameSize_smpls = (int16_t) ( ( args.render_framesize ) * args.sampleRate * 5 / ( 1000 ) ); - + Word32 nonDiegeticPanGain_fx = ( args.nonDiegeticPanGain == 1.0f ) ? ONE_IN_Q31 : ( args.nonDiegeticPanGain == -1.0f ) ? L_negate( ONE_IN_Q31 ) + : (Word32) ( args.nonDiegeticPanGain * ( 1LL << Q31 ) ); #ifdef NONBE_FIX_BINARY_BINAURAL_READING - if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, !isEmptyString( args.customHrtfFilePath ), args.nonDiegeticPan, args.nonDiegeticPanGain, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) + IF( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, !isEmptyString( args.customHrtfFilePath ), args.nonDiegeticPan, nonDiegeticPanGain_fx, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) #else - if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, args.nonDiegeticPanGain, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) + IF( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, nonDiegeticPanGain_fx, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) #endif { fprintf( stderr, "Error opening renderer handle: %s\n", ivas_error_to_string( error ) ); diff --git a/lib_com/options.h b/lib_com/options.h index 9eedf04d7..bf4c38f21 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -98,7 +98,7 @@ #define NONBE_FIX_949_MC_5MS_FRAMING /*Dlb: Issue 949: fix for 5ms framing/rendering in MC mode */ //#define SPLIT_REND_WITH_HEAD_ROT_NEW /* Orange: split rendering code differ between branchs main-pc and float-pc, do not know what to do/ -#define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ +//#define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index ab9c806f6..e96257115 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -1540,7 +1540,7 @@ static ivas_error setRendInputActiveIsm( #ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #endif #else #ifdef NONBE_FIX_BINARY_BINAURAL_READING @@ -2914,7 +2914,7 @@ static ivas_error setRendInputActiveMc( #ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( hrtfs->hHrtfTD ) { - inputMc->tdRendWrapper.binaural_latency_ns = (int32_t) ( hrtfs->hHrtfTD->latency_s_fx * 1000000000.f ); + inputMc->tdRendWrapper.binaural_latency_ns = Mult_32_32( hrtfs->hHrtfTD->latency_s_fx, 1000000000 ); } inputMc->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; #else @@ -2945,7 +2945,7 @@ static ivas_error setRendInputActiveMc( #ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( hrtfs->hHrtfTD ) { - inputMc->splitTdRendWrappers[i].binaural_latency_ns = (int32_t) ( hrtfs->hHrtfTD->latency_s_fx * 1000000000.f ); + inputMc->splitTdRendWrappers[i].binaural_latency_ns = Mult_32_32( hrtfs->hHrtfTD->latency_s_fx, 1000000000 ); } inputMc->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; #else diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 7626b19e9..40fc592fb 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -1144,6 +1144,18 @@ void destroy_td_hrtf( free( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ); } } +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + else + { + for ( i = 0; i < 3; i++ ) + { + if ( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ) + { + free( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ); + } + } + } +#endif ivas_HRTF_binary_close_fx( hHrtf ); @@ -1214,6 +1226,18 @@ ivas_error dealloc_HRTF_binary( free( hHrtf->lr_energy_and_iac_dyn_fx[i] ); } } +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB + else + { + for ( i = 0; i < 3; i++ ) + { + if ( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ) + { + free( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ); + } + } + } +#endif return error; } @@ -1690,11 +1714,6 @@ static ivas_error create_fastconv_HRTF_from_rawdata( f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_HOA2_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); - if ( HOA2_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA2_CHANNELS)" ); - } - hrtf_data_rptr += sizeof( uint16_t ); #if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) @@ -1703,6 +1722,13 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } hrtf_data_rptr += sizeof( uint16_t ); #endif + + if ( HOA2_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA2_CHANNELS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); + if ( BINAURAL_NTAPS_SBA != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS_SBA)" ); -- GitLab From b48f3307e3e29e0efc26ea8e07b5980ec77d5f54 Mon Sep 17 00:00:00 2001 From: marc emerit Date: Thu, 24 Apr 2025 13:30:38 +0200 Subject: [PATCH 411/698] update option --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index fca41b23b..037b7b2dd 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -99,7 +99,7 @@ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ //#define SPLIT_REND_WITH_HEAD_ROT_NEW /* Orange: split rendering code differ between branchs main-pc and float-pc, do not know what to do/ -//#define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ +#define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ -- GitLab From 098a015dfa4609f6cf1ff76c1aef0586facacf0a Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 24 Apr 2025 17:12:50 +0530 Subject: [PATCH 412/698] Fix for MSAN ASAN error in decoder, renderer crash fix and macro code cleanup --- lib_dec/ivas_core_dec_fx.c | 11 +---------- lib_dec/ivas_dirac_dec_fx.c | 21 +++++++++++++++++++-- lib_rend/lib_rend.c | 13 ++++++++----- 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index 03f0e4b40..320d9d4bc 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -266,11 +266,7 @@ ivas_error ivas_core_dec_fx( test(); test(); test(); -#ifdef NONBE_MDCT_ST_PLC_DO_NOT_SCALE_OLD_OUT_IF_FIRST_GOOD_IS_SID IF( !st->bfi && st->prev_bfi && GT_32( st->total_brate, SID_2k40 ) && ( EQ_16( st->last_core_bfi, TCX_20_CORE ) || EQ_16( st->last_core_bfi, TCX_10_CORE ) ) && st->hTcxDec != NULL ) -#else - IF( !st->bfi && st->prev_bfi && ( EQ_16( st->last_core_bfi, TCX_20_CORE ) || EQ_16( st->last_core_bfi, TCX_10_CORE ) ) && st->hTcxDec != NULL ) -#endif { conceal_eof_gain32 = L_shr_sat( st->hTcxDec->conceal_eof_gain32, sub( 16, st->hTcxDec->conceal_eof_gain_e ) ); // e = 31 - Q , 16 - e => 16 - (31 - Q) => Q - 15, // shr(16 -e ) = shr(Q -15) => 15 - Q ==> Q15 @@ -604,7 +600,7 @@ ivas_error ivas_core_dec_fx( st->hHQ_core->Q_old_wtda_LB = st->hHQ_core->Q_old_wtda; move16(); - Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], L_FRAME48k, Q11 ); // Q11 + Copy_Scale_sig_16_32_DEPREC( output_16_fx[n], output_32_fx[n], output_frame, Q11 ); // Q11 IF( st->hTcxDec ) { @@ -771,13 +767,8 @@ ivas_error ivas_core_dec_fx( test(); test(); -#ifdef NONBE_MDCT_ST_DTX_SKIP_DEWHITENING_OF_NOISE_SHAPES_ON_SID_FRAMES /* On first good active frame after frameloss undo the whitening of the bg noise shape */ IF( GT_32( sts[0]->core_brate, SID_2k40 ) && sts[0]->bfi == 0 && EQ_16( sts[0]->prev_bfi, 1 ) ) -#else - IF( sts[0]->bfi == 0 && EQ_16( sts[0]->prev_bfi, 1 ) ) - /* On first good frame after frameloss undo the whitening of the bg noise shape */ -#endif { FOR( n = 0; n < n_channels; ++n ) { diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 37b0bf1ba..403e11f00 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1446,10 +1446,27 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { - hSpatParamRendCom->azimuth[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); + /* Right shifting -1 -> -1, Hence this change is done */ + Word32 L_tmp = L_abs( q_direction->band_data[band].azimuth_fx[block] ); + hSpatParamRendCom->azimuth[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) ); move16(); - hSpatParamRendCom->elevation[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); + + IF( q_direction->band_data[band].azimuth_fx[block] < 0 ) + { + hSpatParamRendCom->azimuth[meta_write_index][b] = negate( hSpatParamRendCom->azimuth[meta_write_index][b] ); + move16(); + } + + L_tmp = L_abs( q_direction->band_data[band].elevation_fx[block] ); + hSpatParamRendCom->elevation[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) ); move16(); + + IF( q_direction->band_data[band].elevation_fx[block] < 0 ) + { + hSpatParamRendCom->elevation[meta_write_index][b] = negate( hSpatParamRendCom->elevation[meta_write_index][b] ); + move16(); + } + hSpatParamRendCom->energy_ratio1_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block]; move32(); hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( ONE_IN_Q30, q_direction->band_data[band].energy_ratio_fx[block] ); diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index ad84c92e9..e39b9a61e 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -8511,13 +8511,16 @@ static void intermidiate_ext_dirac_render( move16(); #endif } + IF( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_fx != NULL ) + { - tmp = L_norm_arr( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_fx, hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_len ); - scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_fx, hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_len, tmp ); /* Q(hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_q + tmp) */ - hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_q = add( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_q, tmp ); - move16(); + tmp = L_norm_arr( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_fx, hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_len ); + scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_fx, hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_len, tmp ); /* Q(hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_q + tmp) */ + hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_q = add( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_q, tmp ); + move16(); + } - IF( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_prev_fx != 0 ) + IF( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_prev_fx != NULL ) { tmp = L_norm_arr( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_prev_fx, hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_prev_len ); scale_sig32( hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_prev_fx, hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_prev_len, tmp ); /* Q(hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth_prev_q + tmp) */ -- GitLab From b755243c371c14f14304d427c4805c88c543be15 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 24 Apr 2025 15:53:29 +0200 Subject: [PATCH 413/698] only pass --split-csv-file if SPLIT_COMPARISON is given --- .gitlab-ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 780a51995..894265e41 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -423,7 +423,11 @@ stages: - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true ### create histograms - - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME --split-csv-file $CSV_ARTIFACT_SPLIT + - if [ "$SPLIT_COMPARISON" = "true" ]; then + - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME --split-csv-file $CSV_ARTIFACT_SPLIT + - else + - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME + - fi # first for "whole" files comparison - python3 scripts/create_histograms.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms -- GitLab From 3eae44e31f3f549c179cfa4611e57e51507a38f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Mon, 10 Mar 2025 17:12:35 +0100 Subject: [PATCH 414/698] Use default variables from ivas-codec-ci Also extracts the project's own (override) variables into a separate file. --- .gitlab-ci.yml | 80 ++++------------------------------------ .gitlab-ci/variables.yml | 65 ++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 72 deletions(-) create mode 100644 .gitlab-ci/variables.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 894265e41..7c29145b0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,76 +1,12 @@ variables: - TESTV_DIR: "/usr/local/testv" - LTV_DIR: "/usr/local/ltv" - EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop" - FLOAT_REF_BRANCH: "ivas-float-update" - BUILD_OUTPUT: "build_output.txt" - SCRIPTS_DIR: "/usr/local/scripts" - EXIT_CODE_NON_BE: 123 - EXIT_CODE_FAIL: 1 - LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv" - LONG_TEST_SUITE_NO_RENDERER: "tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_ltv.prm --use_ltv" - SHORT_TEST_SUITE: "tests/codec_be_on_mr_nonselection" - SHORT_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm" - LONG_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_ltv_basop_encoder.prm" - TEST_SUITE: "" - # These path variables are used by the pytest calls. - # They can be overwritten in the job templates to e.g. only test encoder or decoder in the chain - DUT_ENCODER_PATH: "./IVAS_cod" - DUT_DECODER_PATH: "./IVAS_dec" - REF_ENCODER_PATH: "./IVAS_cod_ref" - REF_DECODER_PATH: "./IVAS_dec_ref" - MERGE_TARGET_ENCODER_PATH: "./IVAS_cod_merge_target" - MERGE_TARGET_DECODER_PATH: "./IVAS_dec_merge_target" - # These path variables are used for building the binaries - # They should never be overwritten! - REF_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_ref" - REF_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_ref" - MERGE_TARGET_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_merge_target" - MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" - LEVEL_SCALING: "1.0" - IVAS_PIPELINE_NAME: '' - BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch" - PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" - TESTCASE_TIMEOUT_STV: 900 - TESTCASE_TIMEOUT_LTV: 2400 - TESTCASE_TIMEOUT_LTV_SANITIZERS: 10800 - CI_REGRESSION_THRESH_MLD: "0.1" - CI_REGRESSION_THRESH_MAX_ABS_DIFF: "50" - CI_REGRESSION_THRESH_SSNR: "-1" - CI_REGRESSION_THRESH_ODG: "-0.05" - GIT_CLEAN_FLAGS: -ffdxq - INSTR_DIR: "scripts/c-code_instrument" - BUILD_WITH_DEBUG_MODE_INFO: "" - ENCODER_TEST: "" - DELTA_ODG: "" - COMPARE_DMX: "" - SPLIT_COMPARISON: "" - SKIP_REGRESSION_CHECK: "" - FAILED_TESTCASES_LIST: "failed-testcases.txt" - ERRORS_TESTCASES_LIST: "errors-testcases.txt" - PYTEST_CACHE_ARTIFACT: "pytest_cache.zip" - MEASURES_FOR_REPORT: "MLD MAX_ABS_DIFF MIN_SSNR MIN_ODG" - FLOAT_REF_COMMIT_FILE: "float-ref-git-sha.txt" - CUT_COMMIT_FILE: "CuT-git-sha.txt" - MERGE_TARGET_COMMIT_FILE: "merge-target-git-sha.txt" - MANUAL_PIPELINE_TYPE: - description: "Type for the manual pipeline run. Use 'pytest-compare' to run comparison test against reference float codec." - value: 'default' - options: - - 'default' - - 'pytest-compare' - - 'pytest-compare-enc-dmx' - - 'pytest-compare-long' - - 'pytest-compare-to-input' - - 'pytest-saturation-smoke-test' - - 'evs-26444' - - 'sanitizer' - - 'pytest-renderer' - - 'complexity' - - 'coverage' - - 'voip-be-test' - - 'peaq-enc-passthrough' - + # note: GitLab cannot reference the variable in the include ref:, we need to use a YAML anchor for this + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF mullerfa/ci-refactor + +include: + - local: .gitlab-ci/variables.yml + - project: ivas-codec-pc/ivas-codec-ci + ref: *IVAS_CODEC_CI_REF + file: main.yml default: interruptible: true # Make all jobs by default interruptible diff --git a/.gitlab-ci/variables.yml b/.gitlab-ci/variables.yml new file mode 100644 index 000000000..94bb71fb3 --- /dev/null +++ b/.gitlab-ci/variables.yml @@ -0,0 +1,65 @@ +variables: + EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop" + FLOAT_REF_BRANCH: "ivas-float-update" + SCRIPTS_DIR: "/usr/local/scripts" + LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv" + LONG_TEST_SUITE_NO_RENDERER: "tests/codec_be_on_mr_nonselection --param_file scripts/config/self_test_ltv.prm --use_ltv" + SHORT_TEST_SUITE: "tests/codec_be_on_mr_nonselection" + SHORT_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm" + LONG_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_ltv_basop_encoder.prm" + TEST_SUITE: "" + # These path variables are used by the pytest calls. + # They can be overwritten in the job templates to e.g. only test encoder or decoder in the chain + DUT_ENCODER_PATH: "./IVAS_cod" + DUT_DECODER_PATH: "./IVAS_dec" + REF_ENCODER_PATH: "./IVAS_cod_ref" + REF_DECODER_PATH: "./IVAS_dec_ref" + MERGE_TARGET_ENCODER_PATH: "./IVAS_cod_merge_target" + MERGE_TARGET_DECODER_PATH: "./IVAS_dec_merge_target" + # These path variables are used for building the binaries + # They should never be overwritten! + REF_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_ref" + REF_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_ref" + MERGE_TARGET_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_merge_target" + MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_target" + LEVEL_SCALING: "1.0" + BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch" + PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" + TESTCASE_TIMEOUT_STV: 900 + TESTCASE_TIMEOUT_LTV: 2400 + TESTCASE_TIMEOUT_LTV_SANITIZERS: 10800 + CI_REGRESSION_THRESH_MLD: "0.1" + CI_REGRESSION_THRESH_MAX_ABS_DIFF: "50" + CI_REGRESSION_THRESH_SSNR: "-1" + CI_REGRESSION_THRESH_ODG: "-0.05" + INSTR_DIR: "scripts/c-code_instrument" + BUILD_WITH_DEBUG_MODE_INFO: "" + ENCODER_TEST: "" + DELTA_ODG: "" + COMPARE_DMX: "" + SPLIT_COMPARISON: "" + SKIP_REGRESSION_CHECK: "" + FAILED_TESTCASES_LIST: "failed-testcases.txt" + ERRORS_TESTCASES_LIST: "errors-testcases.txt" + PYTEST_CACHE_ARTIFACT: "pytest_cache.zip" + MEASURES_FOR_REPORT: "MLD MAX_ABS_DIFF MIN_SSNR MIN_ODG" + FLOAT_REF_COMMIT_FILE: "float-ref-git-sha.txt" + CUT_COMMIT_FILE: "CuT-git-sha.txt" + MERGE_TARGET_COMMIT_FILE: "merge-target-git-sha.txt" + MANUAL_PIPELINE_TYPE: + description: "Type for the manual pipeline run. Use 'pytest-compare' to run comparison test against reference float codec." + value: 'default' + options: + - 'default' + - 'pytest-compare' + - 'pytest-compare-enc-dmx' + - 'pytest-compare-long' + - 'pytest-compare-to-input' + - 'pytest-saturation-smoke-test' + - 'evs-26444' + - 'sanitizer' + - 'pytest-renderer' + - 'complexity' + - 'coverage' + - 'voip-be-test' + - 'peaq-enc-passthrough' -- GitLab From f202e60605b0d31b123439a4b9ead9c21ae0261a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Wed, 26 Mar 2025 20:00:10 +0100 Subject: [PATCH 415/698] Use stages from ivas-codec-ci --- .gitlab-ci.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7c29145b0..c4162e0f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,16 +64,6 @@ workflow: variables: IVAS_PIPELINE_NAME: 'Scheduled pipeline: $CI_COMMIT_BRANCH' - -stages: - - .pre - - prevalidate - - build - - check-be - - test - - postvalidate - - deploy - # --------------------------------------------------------------- # Generic script anchors # --------------------------------------------------------------- -- GitLab From f4344fb875f6e4a732396a228f3bd3bd48250f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Wed, 26 Mar 2025 20:32:18 +0100 Subject: [PATCH 416/698] Use snippets from ivas-codec-ci --- .gitlab-ci.yml | 257 ++++++++++++++++--------------------------------- 1 file changed, 81 insertions(+), 176 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c4162e0f7..2f3176df7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,13 +71,6 @@ workflow: # These can be used later on to do common tasks # Prints useful information for every job and should be used at the beginning of each job -.print-common-info: &print-common-info - - | - echo "Printing common information for build job." - echo "Current job is run on commit $CI_COMMIT_SHA" - echo "Commit time was $CI_COMMIT_TIMESTAMP" - date | xargs echo "System time is" - .print-common-info-windows: &print-common-info-windows - | echo "Printing common information for build job." @@ -85,107 +78,6 @@ workflow: echo "Commit time was $CI_COMMIT_TIMESTAMP" ("echo 'System time is'", "Get-Date -Format 'dddd dd/MM/yyyy HH:mm K'") | Invoke-Expression -.activate-debug-mode-info-if-set: &activate-debug-mode-info-if-set - - if [ "$BUILD_WITH_DEBUG_MODE_INFO" = "true" ]; then - - sed -i.bak -e "s/\/\*\ *\(#define\ *DEBUGGING\ *\)\*\//\1/g" lib_com/options.h - - sed -i.bak -e "s/\/\*\ *\(#define\ *DEBUG_MODE_INFO\ *\)\*\//\1/g" lib_com/options.h - - fi - -.build-float-ref-binaries: &build-float-ref-binaries - - git rev-parse HEAD > $CUT_COMMIT_FILE - - current_commit_sha=$(git rev-parse HEAD) - ### build reference binaries - - git checkout $FLOAT_REF_BRANCH - - git pull origin $FLOAT_REF_BRANCH - - *activate-debug-mode-info-if-set - - make clean - - make -j >> /dev/null - - mv ./IVAS_cod ./$REF_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY - - mv ./IVAS_dec ./$REF_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY - - mv ./IVAS_rend ./IVAS_rend_ref - ### Return to current branch - - git restore . - - git rev-parse HEAD > $FLOAT_REF_COMMIT_FILE - - git checkout $current_commit_sha - -.build-merge-target-binaries: &build-merge-target-binaries - - current_commit_sha=$(git rev-parse HEAD) - ### build merge target binaries - - git checkout $CI_MERGE_REQUEST_TARGET_BRANCH_NAME - - git pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME - - *activate-debug-mode-info-if-set - - make clean - - make -j >> /dev/null - - mv ./IVAS_cod ./$MERGE_TARGET_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY - - mv ./IVAS_dec ./$MERGE_TARGET_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY - - mv ./IVAS_rend ./IVAS_rend_merge_target - ### Return to current branch - - git restore . - - git rev-parse HEAD > $MERGE_TARGET_COMMIT_FILE - - git checkout $current_commit_sha - -.build-float-ref-and-dut-binaries: &build-float-ref-and-dut-binaries -### build reference binaries - - *build-float-ref-binaries -### build dut binaries - - *activate-debug-mode-info-if-set - - make clean - - make -j >> /dev/null - -.build-and-create-float-ref-outputs: &build-and-create-float-ref-outputs - - *build-float-ref-and-dut-binaries - - ### prepare pytest - # create short test vectors - - python3 tests/create_short_testvectors.py - # create references - - exit_code=0 - - - enc_stats_arg="" - - if [ "$ENCODER_TEST" = "true" ]; then - - enc_stats_arg="--enc_stats" - - fi - - - enc_dmx_arg="" - - if [ "$COMPARE_DMX" = "true" ]; then - - enc_dmx_arg="--compare_enc_dmx" - - fi - - - python3 -m pytest $TEST_SUITE -v --update_ref 1 $enc_stats_arg $enc_dmx_arg --create_ref -n auto --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? - -.update-scripts-repo: &update-scripts-repo - - cd $SCRIPTS_DIR - - sed -i '/fetch/d' .git/config # Remove all fetch lines to clean out dead links - - git remote set-branches --add origin $BASOP_CI_BRANCH_PC_REPO # Add currently used branch - - git fetch - - git restore . # Just as a precaution - - git checkout $BASOP_CI_BRANCH_PC_REPO - - git pull origin $BASOP_CI_BRANCH_PC_REPO - - cd - - - cp -r $SCRIPTS_DIR/ci . - - cp -r $SCRIPTS_DIR/scripts . - - cp -r $SCRIPTS_DIR/tests . - - cp $SCRIPTS_DIR/pytest.ini . - -.apply-testv-scaling: &apply-testv-scaling - - echo "Applying level scaling in scripts/testv using scale=$LEVEL_SCALING" - - tests/scale_pcm.py ./scripts/testv/ $LEVEL_SCALING - -.update-ltv-repo: &update-ltv-repo - - cd $LTV_DIR - - git pull - - cd - - -.get-commits-behind-count: &get-commits-behind-count - - echo $CI_COMMIT_SHA - - echo $CI_MERGE_REQUEST_TARGET_BRANCH_NAME - - commits_behind_count=$(git rev-list --count $CI_COMMIT_SHA..origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME) - -.copy-ltv-files-to-testv-dir: ©-ltv-files-to-testv-dir - - cp "$LTV_DIR"/*.wav scripts/testv/ - - cp "$LTV_DIR"/*.met scripts/testv/ - - cp "$LTV_DIR"/*.csv scripts/testv/ - .activate-Werror-linux: &activate-Werror-linux - sed -i.bak "s/^# \(CFLAGS += -Werror\)/\1/" Makefile @@ -261,22 +153,18 @@ workflow: # Job templates # --------------------------------------------------------------- -# templates to define stages and platforms -.test-job-linux: - tags: - - ivas-basop-linux - -.build-job-linux: - stage: build - timeout: "2 minutes" +# override for centrally defined job to make use of the basop runners +.job-linux: tags: - ivas-basop-linux -.build-job-windows: - stage: build - timeout: "4 minutes" - tags: - - ivas-windows +# custom variant of this template, we need to update the scripts repo before every build +.test-job-linux: + extends: + - .job-linux + script: + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh + - !reference [.job-linux, before_script] .print-results-banner: &print-results-banner - set +x @@ -307,11 +195,11 @@ workflow: IMAGES_ARTIFACT_SPLIT: "images_split_$CI_JOB_NAME" script: - set -euxo pipefail - - *print-common-info - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - if [ $USE_LTV -eq 1 ]; then - - *update-ltv-repo - - *copy-ltv-files-to-testv-dir + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - testcase_timeout=$TESTCASE_TIMEOUT_LTV - else - testcase_timeout=$TESTCASE_TIMEOUT_STV @@ -319,12 +207,13 @@ workflow: - python3 ci/remove_unsupported_testcases.py $PRM_FILES - if [ $LEVEL_SCALING != "1.0" ]; then - - *apply-testv-scaling + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - fi - if [ "$COMPARE_DMX" = "true" ] || [ "$ENCODER_TEST" = "true" ]; then - BUILD_WITH_DEBUG_MODE_INFO="true" - fi + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-and-create-float-ref-outputs.sh - INV_LEVEL_SCALING=$(awk "BEGIN {print 1.0 / $LEVEL_SCALING}") - comp_args="--mld --ssnr --odg --scalefac $INV_LEVEL_SCALING" @@ -417,8 +306,8 @@ workflow: - report-junit.xml .check-up-to-date-in-comparison-jobs: &check-up-to-date-in-comparison-jobs - - *get-commits-behind-count - | + commits_behind_count="$(bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/get-commits-behind-count.sh)" if [ $commits_behind_count -ne 0 ]; then set +x echo -e "Your branch is $commits_behind_count commits behind the target branch, possibly main changed during your pipeline run. Checking bitexactness or testing for regressions now can result in meaningless results. Run\n\t git pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME\nto update." @@ -426,6 +315,8 @@ workflow: fi .check-be-to-target-anchor: &check-be-to-target-anchor + extends: + - .job-linux stage: check-be needs: ["build-codec-linux-make"] timeout: "300 minutes" @@ -434,16 +325,16 @@ workflow: HTML_REPORT: "report--$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.html" PYTEST_LOG_TARGET_BRANCH: "pytest-log-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME.txt" script: - - *print-common-info + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - set -euxo pipefail - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - python3 tests/create_short_testvectors.py - if [ $USE_LTV -eq 1 ]; then - - *update-ltv-repo - - *copy-ltv-files-to-testv-dir + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - testcase_timeout=$TESTCASE_TIMEOUT_LTV - else - testcase_timeout=$TESTCASE_TIMEOUT_STV @@ -453,11 +344,11 @@ workflow: - python3 scripts/prepare_combined_format_inputs.py - if [ $LEVEL_SCALING != "1.0" ];then - - *apply-testv-scaling + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - fi - - *build-float-ref-binaries - - *build-merge-target-binaries + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh float-ref + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh merge-target - make clean - make -j >> /dev/null - *check-up-to-date-in-comparison-jobs @@ -537,6 +428,8 @@ workflow: - fi .check-regressions-pytest-anchor: &check-regressions-pytest-anchor + extends: + - .job-linux stage: test timeout: "300 minutes" variables: @@ -549,7 +442,9 @@ workflow: IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" script: - - *print-common-info + - !reference [ .job-linux, before_script ] + + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh # create empty files for all artifacts to suppress warnings in case of no regressions found or all is BE - touch $XML_REPORT_BRANCH $XML_REPORT_MAIN $HTML_REPORT_BRANCH $HTML_REPORT_MAIN $CSV_BRANCH $CSV_MAIN $SUMMARY_HTML_ARTIFACT_NAME $FLOAT_REF_COMMIT_FILE $CUT_COMMIT_FILE $MERGE_TARGET_COMMIT_FILE regressions_crashes.csv regressions_MLD.csv regressions_MAX_ABS_DIFF.csv regressions_MIN_SSNR.csv regressions_MIN_ODG.csv improvements_crashes.csv improvements_MLD.csv improvements_MAX_ABS_DIFF.csv improvements_MIN_SSNR.csv improvements_MIN_ODG.csv @@ -570,8 +465,8 @@ workflow: - *update-scripts-repo - if [ $USE_LTV -eq 1 ]; then - - *update-ltv-repo - - *copy-ltv-files-to-testv-dir + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - testcase_timeout=$TESTCASE_TIMEOUT_LTV - else - testcase_timeout=$TESTCASE_TIMEOUT_STV @@ -579,7 +474,7 @@ workflow: - python3 ci/remove_unsupported_testcases.py $PRM_FILES - if [ $LEVEL_SCALING != "1.0" ];then - - *apply-testv-scaling + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - fi # check MR title for flag that allows regressions to be mergable @@ -591,7 +486,7 @@ workflow: ### run branch first # this per default builds the branch and the reference and creates the reference outputs - - *build-and-create-float-ref-outputs + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-and-create-float-ref-outputs.sh - *check-up-to-date-in-comparison-jobs # need to restore cache again - *overwrite-pytest-cache-with-artifact @@ -684,6 +579,8 @@ workflow: .ivas-pytest-sanitizers-anchor: &ivas-pytest-sanitizers-anchor + extends: + - .job-linux stage: test needs: ["build-codec-linux-make"] timeout: "600 minutes" @@ -695,12 +592,14 @@ workflow: - if: $CI_PIPELINE_SOURCE == 'schedule' && $IVAS_PYTEST_MSAN - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "sanitizer" script: - - *print-common-info - - *update-scripts-repo - - *copy-ltv-files-to-testv-dir + - !reference [ .job-linux, before_script ] + + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - python3 ci/remove_unsupported_testcases.py $PRM_FILES - - *build-float-ref-binaries + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh float-ref - set -euxo pipefail - make_args="CLANG=$CLANG_NUM" - if [[ $CLANG_NUM == 3 ]]; then @@ -728,6 +627,8 @@ workflow: - report-junit.xml .ivas-pytest-compare-to-input-anchor: &ivas-pytest-compare-to-input-anchor + extends: + - .job-linux stage: test needs: ["build-codec-linux-make"] timeout: "360 minutes" @@ -735,11 +636,13 @@ workflow: SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" script: - - *print-common-info - - *update-scripts-repo + - !reference [ .job-linux, before_script ] + + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - if [ $USE_LTV -eq 1 ]; then - - *update-ltv-repo - - *copy-ltv-files-to-testv-dir + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - testcase_timeout=$TESTCASE_TIMEOUT_LTV - else - testcase_timeout=$TESTCASE_TIMEOUT_STV @@ -747,9 +650,9 @@ workflow: - python3 ci/remove_unsupported_testcases.py $PRM_FILES - if [ $LEVEL_SCALING != "1.0" ];then - - *apply-testv-scaling + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - fi - - *build-float-ref-and-dut-binaries + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-float-ref-and-dut-binaries.sh - INV_LEVEL_SCALING=$(awk "BEGIN {print 1.0 / $LEVEL_SCALING}") - comp_args="--mld --ssnr --odg --scalefac $INV_LEVEL_SCALING" @@ -822,14 +725,15 @@ uninterruptible: branch-is-up-to-date-with-target-pre: extends: + - .job-linux - .rules-merge-request stage: prevalidate needs: [] tags: - ivas-basop-linux script: - - *get-commits-behind-count - | + commits_behind_count="$(bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/get-commits-behind-count.sh)" if [ $commits_behind_count -ne 0 ]; then echo -e "Your branch is $commits_behind_count commits behind the target branch, run\n\tgit pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME\nto update." exit 1 @@ -837,13 +741,14 @@ branch-is-up-to-date-with-target-pre: branch-is-up-to-date-with-target-post: extends: + - .job-linux - .rules-merge-request stage: postvalidate tags: - ivas-basop-linux script: - - *get-commits-behind-count - | + commits_behind_count="$(bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/get-commits-behind-count.sh)" if [ $commits_behind_count -ne 0 ]; then echo -e "Your branch is $commits_behind_count commits behind the target branch, possibly main changed during your pipeline run, run\n\tgit pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME\nto update." exit 1 @@ -864,7 +769,7 @@ clang-format-check: needs: [] timeout: "5 minutes" script: - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh # Set up variables. This can't be done in the "variables" section because variables are not expanded properly there - PATCH_FILE_NAME="$ARTIFACT_BASE_NAME".patch - > @@ -918,7 +823,7 @@ build-codec-linux-make: - .build-job-linux timeout: "10 minutes" script: - - *print-common-info + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - *activate-Werror-linux - make -j @@ -935,8 +840,8 @@ build-codec-linux-instrumented-make: - .build-job-linux timeout: "10 minutes" script: - - *print-common-info - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - bash scripts/prepare_instrumentation.sh -m MEM_ONLY - make -j -C $INSTR_DIR @@ -954,8 +859,8 @@ build-codec-linux-debugging-make: variables: BUILD_WITH_DEBUG_MODE_INFO: "true" script: - - *print-common-info - - *activate-debug-mode-info-if-set + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/activate-debug-mode-info-if-set.sh - make -j build-codec-windows-msbuild: @@ -1444,14 +1349,14 @@ ivas-smoke-test-saturation: - USE_LTV=1 - LEVEL_SCALING=32768 - - *print-common-info - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - if [ $USE_LTV -eq 1 ]; then - - *update-ltv-repo - - *copy-ltv-files-to-testv-dir + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - fi - if [ $LEVEL_SCALING != "1.0" ];then - - *apply-testv-scaling + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - fi - cp -r scripts/testv/* $TESTV_DIR/ @@ -1487,11 +1392,11 @@ coverage-test-on-main-scheduled: stage: test timeout: 3 hours script: - - *print-common-info - - *update-scripts-repo - - *update-ltv-repo - - *copy-ltv-files-to-testv-dir - - *build-float-ref-binaries + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh float-ref # Build DuT binaries with GCOV - make clean >> /dev/null - make GCOV=1 -j @@ -1548,8 +1453,8 @@ be-2-evs-26444: stage: test timeout: "120 minutes" # To be revisited script: - - *print-common-info - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - sed -i".bak" "s/\(#define EVS_FLOAT\)/\/\/\1/" lib_com/options.h - make -j >> /dev/null @@ -1613,7 +1518,7 @@ voip-be-on-merge-request: needs: ["build-codec-linux-make"] timeout: "10 minutes" script: - - *print-common-info + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - make clean - make -j >> /dev/null - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py @@ -1704,10 +1609,10 @@ voip-be-on-merge-request: GET_WMOPS_ARGS: "mem_only" timeout: 3 hours 30 minutes before_script: - - *print-common-info - - *update-scripts-repo - - *update-ltv-repo - - *build-float-ref-and-dut-binaries + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-float-ref-and-dut-binaries.sh - *complexity-measurements-setup # delete previous jobs logfiles if present (-f flag ensures return calue of 0 even in first run where this folder is not present) - rm -rf COMPLEXITY/logs @@ -2085,8 +1990,8 @@ pages: rules: - if: $UPDATE_PAGES script: - - *print-common-info - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - python3 ci/setup_pages.py - ls - ls -lh public -- GitLab From 8b86fdaebc520a6418208d4ddd20119b637cd82f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Thu, 24 Apr 2025 17:54:06 +0200 Subject: [PATCH 417/698] Post-rebase fixes --- .gitlab-ci.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2f3176df7..90afc1508 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -164,7 +164,6 @@ workflow: - .job-linux script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - !reference [.job-linux, before_script] .print-results-banner: &print-results-banner - set +x @@ -175,7 +174,7 @@ workflow: .test-job-linux-needs-testv-dir: extends: .test-job-linux before_script: - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - if [ ! -d "$TESTV_DIR" ]; then mkdir -p $TESTV_DIR; fi - cp -r scripts/testv/* $TESTV_DIR/ @@ -223,7 +222,7 @@ workflow: - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; MEASURES_FOR_REPORT="$MEASURES_FOR_REPORT DELTA_ODG"; fi - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; fi - - *build-and-create-float-ref-outputs + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-and-create-float-ref-outputs.sh # DMX comparison only in manual job with no other metrics - if [ "$COMPARE_DMX" = "true" ]; then @@ -462,7 +461,7 @@ workflow: - exit 0 - fi - - *update-scripts-repo + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - if [ $USE_LTV -eq 1 ]; then - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh -- GitLab From c65468f22f7f7f634fce60979d8eca266d91fc18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Thu, 24 Apr 2025 19:25:22 +0200 Subject: [PATCH 418/698] Fix missing update hook --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 90afc1508..20c8510a8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -162,8 +162,9 @@ workflow: .test-job-linux: extends: - .job-linux - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh + before_script: + - !reference [.job-linux, before_script] + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh .print-results-banner: &print-results-banner - set +x -- GitLab From 30a45771fdcc00dae848430c0b8fc53c736358ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Thu, 24 Apr 2025 20:53:47 +0200 Subject: [PATCH 419/698] Clean up and fix check-be-to-target/check-regressions-pytest jobs --- .gitlab-ci.yml | 224 ++++++++++++++++++------------------------------- 1 file changed, 80 insertions(+), 144 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 20c8510a8..ee0b8a104 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -314,9 +314,22 @@ workflow: exit 1 fi -.check-be-to-target-anchor: &check-be-to-target-anchor +.check-be-job: extends: - - .job-linux + - .test-job-linux + before_script: + - !reference [ .test-job-linux, before_script ] + - rm -rf tests/dut tests/ref + variables: + USE_LTV: 0 + DUT_ENCODER_PATH: ./IVAS_cod_ref + DUT_DECODER_PATH: ./IVAS_dec_ref + MERGE_TARGET_ENCODER_PATH: ./IVAS_cod_ref + MERGE_TARGET_DECODER_PATH: ./IVAS_dec_ref + +.check-be-to-target-job: + extends: + - .check-be-job stage: check-be needs: ["build-codec-linux-make"] timeout: "300 minutes" @@ -427,10 +440,13 @@ workflow: - unzip $PYTEST_CACHE_ARTIFACT - fi -.check-regressions-pytest-anchor: &check-regressions-pytest-anchor +.check-regressions-pytest-job: extends: - - .job-linux + - .check-be-job stage: test + needs: + - job: "check-be-to-target-short-enc-0db" + artifacts: true timeout: "300 minutes" variables: XML_REPORT_BRANCH: "report-junit-branch-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.xml" @@ -442,8 +458,6 @@ workflow: IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" script: - - !reference [ .job-linux, before_script ] - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh # create empty files for all artifacts to suppress warnings in case of no regressions found or all is BE @@ -888,178 +902,100 @@ build-codec-windows-msbuild: ### jobs that check for bitexactness of fx encoder and decoder check-be-to-target-short-enc-0db: extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./IVAS_dec_ref - - MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=1.0 - - rm -rf tests/dut tests/ref - <<: *check-be-to-target-anchor + - .check-be-to-target-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" + # -/-0dB + LEVEL_SCALING: "1.0" check-be-to-target-short-enc-+10db: extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./IVAS_dec_ref - - MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=3.162 - - rm -rf tests/dut tests/ref - <<: *check-be-to-target-anchor + - .check-be-to-target-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" + # +10dB + LEVEL_SCALING: "3.162" check-be-to-target-short-enc--10db: extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./IVAS_dec_ref - - MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=0.3162 - - rm -rf tests/dut tests/ref - <<: *check-be-to-target-anchor + - .check-be-to-target-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" + # -10dB + LEVEL_SCALING: "0.3162" check-be-to-target-short-dec-0db: extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./IVAS_cod_ref - - MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=1.0 - - rm -rf tests/dut tests/ref - <<: *check-be-to-target-anchor + - .check-be-to-target-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE" + # +/-0dB + LEVEL_SCALING: "1.0" check-be-to-target-short-dec-+10db: extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./IVAS_cod_ref - - MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=3.162 - - rm -rf tests/dut tests/ref - <<: *check-be-to-target-anchor + - .check-be-to-target-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE" + # +10dB + LEVEL_SCALING: "3.162" check-be-to-target-short-dec--10db: extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./IVAS_cod_ref - - MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=0.3162 - - rm -rf tests/dut tests/ref - <<: *check-be-to-target-anchor + - .check-be-to-target-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE" + # -10dB + LEVEL_SCALING: "0.3162" ### jobs that check for regressions on non-BE testcases check-regressions-short-enc-0db: - stage: test - needs: - - job: "check-be-to-target-short-enc-0db" - artifacts: true extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./IVAS_dec_ref - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=1.0 - - rm -rf tests/dut tests/ref - <<: *check-regressions-pytest-anchor + - .check-regressions-pytest-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" + # +/-0dB + LEVEL_SCALING: "1.0" check-regressions-short-enc-+10db: - stage: test - needs: - - job: "check-be-to-target-short-enc-+10db" - artifacts: true extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./IVAS_dec_ref - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=3.162 - - rm -rf tests/dut tests/ref - <<: *check-regressions-pytest-anchor + - .check-regressions-pytest-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" + # +10dB + LEVEL_SCALING: "3.162" check-regressions-short-enc--10db: - stage: test - needs: - - job: "check-be-to-target-short-enc--10db" - artifacts: true extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./IVAS_dec_ref - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=0.3162 - - rm -rf tests/dut tests/ref - <<: *check-regressions-pytest-anchor + - .check-regressions-pytest-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" + # -10dB + LEVEL_SCALING: "0.3162" check-regressions-short-dec-0db: - stage: test - needs: - - job: "check-be-to-target-short-dec-0db" - artifacts: true extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./IVAS_cod_ref - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=1.0 - - rm -rf tests/dut tests/ref - <<: *check-regressions-pytest-anchor + - .check-regressions-pytest-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE" + # +/-0dB + LEVEL_SCALING: "1" check-regressions-short-dec-+10db: - stage: test - needs: - - job: "check-be-to-target-short-dec-+10db" - artifacts: true extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./IVAS_cod_ref - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=3.162 - - rm -rf tests/dut tests/ref - <<: *check-regressions-pytest-anchor + - .check-regressions-pytest-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE" + # +10dB + LEVEL_SCALING: "3.162" check-regressions-short-dec--10db: - stage: test - needs: - - job: "check-be-to-target-short-dec--10db" - artifacts: true extends: - - .rules-pytest-to-main-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./IVAS_cod_ref - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=0.3162 - - rm -rf tests/dut tests/ref - <<: *check-regressions-pytest-anchor + - .check-regressions-pytest-job + variables: + TEST_SUITE: "$SHORT_TEST_SUITE" + # -10dB + LEVEL_SCALING: "0.3162" # --------------------------------------------------------------- # Short test jobs for running from web interface or schedule -- GitLab From 77a11c98b87dccc84b95815cf92765c9404cd588 Mon Sep 17 00:00:00 2001 From: marc emerit Date: Thu, 24 Apr 2025 21:35:41 +0200 Subject: [PATCH 420/698] fix split renderering test fail --- apps/renderer.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/renderer.c b/apps/renderer.c index 355c04798..851583bbf 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -822,10 +822,8 @@ int main( #ifdef SPLIT_REND_WITH_HEAD_ROT hSplitRendFileReadWrite = NULL; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING CLDFBframeSize_smpls = 0; cldfb_in_flag = 0; -#endif bitsBuffer.bits = NULL; bitsBuffer.config.bitsRead = 0; bitsBuffer.config.bitsWritten = 0; @@ -1268,11 +1266,9 @@ int main( exit( -1 ); } -#ifndef NONBE_FIX_BINARY_BINAURAL_READING #ifdef SPLIT_REND_WITH_HEAD_ROT CLDFBframeSize_smpls = frameSize_smpls * 2; cldfb_in_flag = get_cldfb_in_flag( args.outConfig.audioConfig, &renderConfig ); -#endif #endif } -- GitLab From 902091762193d58abec887465b73a18b3070a2bd Mon Sep 17 00:00:00 2001 From: marc emerit Date: Thu, 24 Apr 2025 22:10:45 +0200 Subject: [PATCH 421/698] fix windows build --- apps/decoder.c | 8 ++------ lib_util/hrtf_file_reader.c | 2 -- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 3aa9d26eb..1ccc82902 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -830,9 +830,7 @@ cleanup: if ( arg.hrtfReaderEnabled ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING - IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; -#else +#ifndef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL; #endif IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ); @@ -844,9 +842,7 @@ cleanup: #else dealloc_HRTF_binary( hHrtfTD ); #endif -#ifdef NONBE_FIX_BINARY_BINAURAL_READING - IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; -#else +#ifndef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; #endif IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ); diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 40fc592fb..8b18aac0f 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -2032,7 +2032,6 @@ ivas_error load_fastconv_HRTF_from_binary( #else return IVAS_ERR_OK; #endif - return IVAS_ERR_OK; } @@ -2214,7 +2213,6 @@ ivas_error load_parambin_HRTF_from_binary( #else return IVAS_ERR_OK; #endif - return IVAS_ERR_OK; } -- GitLab From 409948139be266df763bc613d756a51fbfe85edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Thu, 24 Apr 2025 22:29:14 +0200 Subject: [PATCH 422/698] Pin latest commit on main --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee0b8a104..a00af3162 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ variables: - # note: GitLab cannot reference the variable in the include ref:, we need to use a YAML anchor for this - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF mullerfa/ci-refactor + # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this + # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF 4eb4c0dfbdc845280a9994b5f7540f69c737537b include: - local: .gitlab-ci/variables.yml -- GitLab From bbf760a19cbfbc975b508140b4e03d2c622f798b Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 25 Apr 2025 11:57:02 +0530 Subject: [PATCH 423/698] Fix for 3GPP issue 1508: BASOP decoder asserts in ivas_wb_tbe_dec_fx with OMASA FER bitstream from BASOP encoder Link #1508 --- lib_com/swb_tbe_com_fx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5f391b271..5631dfa94 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -1645,7 +1645,12 @@ void GenShapedWBExcitation_ivas_fx( } } - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 ); + Scale_sig( state_lpc_syn, LPC_SHB_ORDER, -Q2 ); /* Q(Q_bwe_exc) -> Q(Q_bwe_exc - 2) */ + + Syn_filt_s( Q2, lpc_shb, LPC_SHB_ORDER_WB, exc4kWhtnd, excSHB, L_FRAME16k / 4, state_lpc_syn, 1 ); + + Scale_sig( state_lpc_syn, LPC_SHB_ORDER, Q2 ); /* Q(Q_bwe_exc - 2) -> Q(Q_bwe_exc) */ + Scale_sig( excSHB, L_FRAME16k / 4, Q2 ); /* Q(Q_bwe_exc - 2) -> Q(Q_bwe_exc) */ return; } -- GitLab From 8cbfea6c3aa81df3b8df6e8a0764dae0860be894 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 25 Apr 2025 12:28:57 +0530 Subject: [PATCH 424/698] Fix for LTV crash observed for test case: [ltv_basop_encoder-MASA 2TC at 192 kbps, 48kHz in, 48kHz out, EXT out] --- lib_enc/speech_music_classif_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index cf6ba543b..65000a7b3 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -2006,8 +2006,8 @@ Word16 ivas_smc_gmm_fx( { Word32 tmp_max; tmp_max = L_max( PS_norm_fx[i], hSpMusClas->past_PS_fx[i - LOWEST_FBIN] ); - - temp32 = BASOP_Util_Divide3232_Scale_newton( tmp_max, L_add( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp + /* Saturation doesn't have a significant impact here, as a value of 1e-5 in Q31 format is added to prevent division by zero */ + temp32 = BASOP_Util_Divide3232_Scale_newton( tmp_max, L_add_sat( dPS_fx[i], avoid_divide_by_zero ), &temp_exp ); // 31-temp_exp ps_sta_fx = BASOP_Util_Add_Mant32Exp( temp32, temp_exp, ps_sta_fx, ps_sta_exp, &ps_sta_exp ); } temp32_log = L_add( BASOP_Util_Log2( L_add_sat( ps_sta_fx, L_shr( 21475, ps_sta_exp ) ) ), L_shl( ps_sta_exp, Q25 ) ); -- GitLab From c0729f2c508b01ea9553dd102a129284780b2e0f Mon Sep 17 00:00:00 2001 From: emerit Date: Fri, 25 Apr 2025 10:48:28 +0200 Subject: [PATCH 425/698] fix linux build --- lib_util/hrtf_file_reader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 8b18aac0f..4cf892096 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -1925,7 +1925,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); #else // old binary file is wrong -#include "ivas_rom_binauralRenderer.h" + extern const Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); -- GitLab From a6621c0de4709c34666afddbe0f4d6d80fec78a3 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 25 Apr 2025 14:31:35 +0530 Subject: [PATCH 426/698] ASAN and MSAN error fix for decoder pipeline --- lib_dec/ivas_core_dec_fx.c | 2 +- lib_dec/ivas_dirac_dec_fx.c | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_core_dec_fx.c b/lib_dec/ivas_core_dec_fx.c index 320d9d4bc..38ec5b943 100644 --- a/lib_dec/ivas_core_dec_fx.c +++ b/lib_dec/ivas_core_dec_fx.c @@ -1030,7 +1030,7 @@ ivas_error ivas_core_dec_fx( /* Memories Re-Scaling */ Copy_Scale_sig_16_32_no_sat( hb_synth_16_fx[n], hb_synth_32_fx[n], L_FRAME48k, sub( Q11, Q_hb_synth_fx ) ); // Q11 Copy_Scale_sig_16_32_no_sat( output_16_fx[n], output_32_fx[n], L_FRAME48k, sub( Q11, Q_input ) ); // Q11 // Q_input can get value <= -5 - Copy_Scale_sig_16_32_no_sat( synth_16_fx[n], synth_32_fx[n], L_FRAME48k, sub( Q11, Q_synth_fx ) ); // Q11 + Copy_Scale_sig_16_32_no_sat( synth_16_fx[n], synth_32_fx[n], output_frame, sub( Q11, Q_synth_fx ) ); // Q11 IF( hBWE_FD != NULL ) { diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 403e11f00..7fecb7ca7 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1511,10 +1511,25 @@ void ivas_qmetadata_to_dirac_fx( { FOR( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { - hSpatParamRendCom->azimuth2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].azimuth_fx[block], 6 ) ); + /* Right shifting -1 -> -1, Hence this change is done */ + Word32 L_tmp = L_abs( q_direction->band_data[band].azimuth_fx[block] ); + hSpatParamRendCom->azimuth2[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) ); move16(); - hSpatParamRendCom->elevation2[meta_write_index][b] = extract_h( L_shr( q_direction->band_data[band].elevation_fx[block], 6 ) ); + IF( q_direction->band_data[band].azimuth_fx[block] < 0 ) + { + hSpatParamRendCom->azimuth2[meta_write_index][b] = negate( hSpatParamRendCom->azimuth2[meta_write_index][b] ); + move16(); + } + + L_tmp = L_abs( q_direction->band_data[band].elevation_fx[block] ); + hSpatParamRendCom->elevation2[meta_write_index][b] = extract_h( L_shr( L_tmp, 6 ) ); move16(); + IF( q_direction->band_data[band].elevation_fx[block] < 0 ) + { + hSpatParamRendCom->elevation2[meta_write_index][b] = negate( hSpatParamRendCom->elevation2[meta_write_index][b] ); + move16(); + } + hSpatParamRendCom->energy_ratio2_fx[meta_write_index][b] = q_direction->band_data[band].energy_ratio_fx[block]; move32(); hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b] = L_sub( hSpatParamRendCom->diffuseness_vector_fx[meta_write_index][b], q_direction->band_data[band].energy_ratio_fx[block] ); -- GitLab From 1917992dcf9d8c7c899debc82fc0b11a882044ed Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 25 Apr 2025 15:20:40 +0530 Subject: [PATCH 427/698] Fix for 3GPP issue 1509: BASOP decoder asserts in ivas_dirac_dec_binaural_determine_processing_matrices_fx with OMASA rate switching bitstream from BASOP encoder Link #1509 --- lib_dec/ivas_stereo_switching_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_stereo_switching_dec_fx.c b/lib_dec/ivas_stereo_switching_dec_fx.c index bcf714352..677c91ef0 100644 --- a/lib_dec/ivas_stereo_switching_dec_fx.c +++ b/lib_dec/ivas_stereo_switching_dec_fx.c @@ -2351,7 +2351,7 @@ static Word32 ncross_corr_self_fx( q_prod = sub( 81, add( add( headroom_left_x, headroom_left_y ), q_prod ) ); energy = Sqrt32( energy, &q_prod ); - IF( LT_32( energy, L_shl_sat( 1, sub( 31, q_prod ) ) ) ) + IF( LE_32( energy, L_shl_sat( 1, sub( 31, q_prod ) ) ) ) { c_c_fx_return = W_shl_sat_l( c_c_fx, 31 - ( 2 * OUTPUT_Q + 1 ) ); // Q31 } -- GitLab From d80b5ea123605a6e959539370ccab5f1be076e88 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 25 Apr 2025 14:27:46 +0530 Subject: [PATCH 428/698] Fix for 3GPP issue 1516: BASOP encoder crash with OSBA with 4 objects Link #1516 --- lib_enc/bw_detect_fx.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib_enc/bw_detect_fx.c b/lib_enc/bw_detect_fx.c index 30382cfba..050adbf01 100644 --- a/lib_enc/bw_detect_fx.c +++ b/lib_enc/bw_detect_fx.c @@ -48,7 +48,7 @@ void bw_detect_fx( const Word16 mct_on, /* i : flag MCT mode */ const Word16 Q_spec ) { - Word16 Q_dct; + Word16 Q_dct, E_spect_bin, tmp_1; Word16 i, j, k, bw_max, bin_width, n_bins; Word16 max_NB, max_WB, max_SWB, max_FB, mean_NB, mean_WB, mean_SWB, mean_FB; /* Q11*/ const Word16 *pt, *pt1; @@ -324,6 +324,7 @@ void bw_detect_fx( set16_fx( spect_bin, 1, n_bins ); Q_dct = shl( Q_dct, 1 ); + E_spect_bin = sub( Q31, Q_dct ); FOR( k = 0; k <= bw_max; k++ ) { @@ -336,9 +337,9 @@ void bw_detect_fx( sum32 = L_mac0_o( sum32, *pt1, *pt1, &Overflow ); pt1++; } + tmp_1 = BASOP_Util_Cmp_Mant32Exp( sum32, E_spect_bin, MAX_32, Q31 - 41 ); /* Any sum32 in Q_dct if it is less than MAX_32 in Q41 will be less than 0.001 */ test(); - test(); - IF( st->element_mode != EVS_MONO && EQ_32( sum32, MAX_32 ) && GT_16( Q_dct, 41 ) /* Any Q-value greater than Q41 for MAX_32 will be less than 0.001*/ ) + IF( st->element_mode != EVS_MONO && tmp_1 < 0 ) { spect_bin[i] = -6144; /* log10f( 0.00100000005 ) in Q11 */ move16(); -- GitLab From 397e5e5a5b24ecae8df2d8ad75938371c2f53223 Mon Sep 17 00:00:00 2001 From: marc emerit Date: Fri, 25 Apr 2025 15:38:30 +0200 Subject: [PATCH 429/698] Trigger Build -- GitLab From 2589256847caa1453f787a380c4ba480fa0ef6fa Mon Sep 17 00:00:00 2001 From: marc emerit Date: Fri, 25 Apr 2025 16:22:58 +0200 Subject: [PATCH 430/698] fix test non BE --- lib_com/options.h | 3 ++- lib_util/hrtf_file_reader.c | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 037b7b2dd..f95bc9138 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -106,7 +106,8 @@ #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES #define NONBE_FIX_AVG_IAC_CLDFB_REVERB #endif -#define FIX_OLD_BINARY_FORMAT +#define FIX_OLD_BINARY_FORMAT /* Orange: trick to make tests succesful when changing hrtf binary format between ref and new branch*/ +#define FIX_OLD_BINARY_FILE /* Orange: current hrtf binary file in ref branch contains wrong values for fastconv value. This switch can be activated to compre running codec with and without hrtf file*/ #endif /* #################### End BASOP porting switches ############################ */ diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 4cf892096..8f7f60e59 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -1916,21 +1916,21 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += sizeof( uint16_t ); -#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT +#ifdef FIX_OLD_BINARY_FILE // old binary file is wrong + extern const Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); - floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); - memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + memcpy( f_tmp_brir_reverb, fastconvReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); -#else // old binary file is wrong - extern const Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; +#else memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); - floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); - memcpy( f_tmp_brir_reverb, fastconvReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); #endif -- GitLab From 8fee9f247c36fd5d0f6834a2912c40be0938cced Mon Sep 17 00:00:00 2001 From: marc emerit Date: Fri, 25 Apr 2025 16:52:55 +0200 Subject: [PATCH 431/698] Trigger Build -- GitLab From 0f3ed1d91bae5e3718922a7d92a2886f3169ea09 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Sun, 27 Apr 2025 09:46:59 +0200 Subject: [PATCH 432/698] Attempt to fix missing rules and missing fetch of ci scripts --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a00af3162..8fb379bf9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -195,6 +195,8 @@ workflow: IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" IMAGES_ARTIFACT_SPLIT: "images_split_$CI_JOB_NAME" script: + - !reference [ .job-linux, before_script ] + - set -euxo pipefail - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh @@ -318,6 +320,7 @@ workflow: .check-be-job: extends: - .test-job-linux + - .rules-pytest-to-main-short before_script: - !reference [ .test-job-linux, before_script ] - rm -rf tests/dut tests/ref -- GitLab From 5d486dc952b6a20ea856c3e144e3c7336e223393 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Sun, 27 Apr 2025 20:59:49 +0200 Subject: [PATCH 433/698] Add fix to pages job --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8fb379bf9..bebb7d024 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1930,6 +1930,8 @@ pages: rules: - if: $UPDATE_PAGES script: + - !reference [ .job-linux, before_script ] + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - python3 ci/setup_pages.py -- GitLab From bd8637d94fda7573c15f0e07b714299f3bb4ac7e Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 25 Apr 2025 14:55:08 +0530 Subject: [PATCH 434/698] Fix for 3GPP issue 1427: Basop Encoder Spectral Gaps in Stereo DTX 13.2 kbps Noisy Signal Link #1427 --- lib_enc/ivas_core_enc_fx.c | 19 ++++++------------- lib_enc/ivas_core_pre_proc_fx.c | 14 ++++++++++---- lib_enc/prot_fx_enc.h | 1 + lib_enc/stat_enc.h | 2 +- lib_enc/swb_bwe_enc_fx.c | 17 +++++++++-------- lib_enc/swb_pre_proc_fx.c | 15 ++++++++++++++- 6 files changed, 41 insertions(+), 27 deletions(-) diff --git a/lib_enc/ivas_core_enc_fx.c b/lib_enc/ivas_core_enc_fx.c index f5d3c4d73..6fcb8abd0 100644 --- a/lib_enc/ivas_core_enc_fx.c +++ b/lib_enc/ivas_core_enc_fx.c @@ -675,12 +675,6 @@ ivas_error ivas_core_enc_fx( wb_bwe_enc_ivas_fx( st, new_inp_resamp16k_fx[n] ); } - IF( st->hBWE_FD != NULL ) - { - Scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, Q1 ); // Q-1 -> Q0 - st->Q_old_wtda = add( st->Q_old_wtda, Q1 ); - move16(); - } /*---------------------------------------------------------------------* * SWB(FB) TBE encoding @@ -725,8 +719,6 @@ ivas_error ivas_core_enc_fx( Scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, shift ); // st->Q_old_wtda } - Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX ); - Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // Q0->q_new_swb_speech_buffer /* SWB TBE encoder */ test(); @@ -750,11 +742,9 @@ ivas_error ivas_core_enc_fx( } ELSE IF( EQ_16( st->extl, SWB_BWE ) || EQ_16( st->extl, FB_BWE ) ) { - Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16 - Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, negate( q_new_swb_speech_buffer ) ); // q_new_swb_speech_buffer -> Q0 + Copy_Scale_sig_32_16( shb_speech_fx32, shb_speech_fx, L_FRAME16k, -Q16 ); // Q_shb_spch - 16 /* SWB(FB) BWE encoder */ - swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) ); - Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // Q0 -> q_new_swb_speech_buffer + swb_bwe_enc_ivas_fx( st, last_element_mode, old_inp_12k8_fx[n], old_inp_16k_fx[n], old_syn_12k8_16k_fx[n], new_swb_speech_fx_16, st->q_inp, shb_speech_fx, sub( Q_shb_spch, Q16 ), sub( Q_new[n], 1 ) ); } Scale_sig( old_syn_12k8_16k_fx[n], L_FRAME16k, sub( Q1, Q_new[n] ) ); // Q0 @@ -776,6 +766,9 @@ ivas_error ivas_core_enc_fx( * Inter-channel BWE encoding *-------------------------------------------------------------------*/ + Word16 q_new_swb_speech_buffer = getScaleFactor16( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX ); + Scale_sig( new_swb_speech_buffer_fx_16, L_FRAME48k + STEREO_DFT_OVL_MAX, q_new_swb_speech_buffer ); // st->q_inp+q_new_swb_speech_buffer + q_new_swb_speech_buffer = add( st->q_inp, q_new_swb_speech_buffer ); test(); test(); IF( n == 0 && GE_32( input_Fs, 32000 ) && hStereoICBWE != NULL ) @@ -784,7 +777,7 @@ ivas_error ivas_core_enc_fx( stereo_icBWE_preproc_fx( hCPE, input_frame, new_swb_speech_buffer_fx_16 /*tmp buffer*/, q_new_swb_speech_buffer ); q_new_swb_speech_buffer = add( q_new_swb_speech_buffer, 16 ); - Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer - 16 - > q_new_swb_speech_buffer + Copy_Scale_sig_16_32_no_sat( new_swb_speech_buffer_fx_16, new_swb_speech_buffer_fx, L_FRAME48k + STEREO_DFT_OVL_MAX, Q16 ); // q_new_swb_speech_buffer+st->q_inp - 16 - > q_new_swb_speech_buffer+st->q_inp Copy_Scale_sig_16_32_no_sat( voice_factors_fx[0], voice_factors_fx32[0], NB_SUBFR16k, Q16 ); // Q31 stereo_icBWE_enc_ivas_fx( hCPE, shb_speech_fx32, sub( Q31, Q_shb_spch ), new_swb_speech_buffer_fx, sub( Q31, q_new_swb_speech_buffer ), voice_factors_fx32[0] ); diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c index 6fe6b6720..48253aed6 100644 --- a/lib_enc/ivas_core_pre_proc_fx.c +++ b/lib_enc/ivas_core_pre_proc_fx.c @@ -886,8 +886,11 @@ ivas_error ivas_compute_core_buffers_fx( IF( EQ_16( st->bwidth, WB ) ) { - Copy_Scale_sig( new_inp_16k_fx - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */ - Copy( new_inp_16k_fx - STEREO_DFT_OVL_16k, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - STEREO_DFT_OVL_16k + delay, sub( STEREO_DFT_OVL_16k, delay ) ); /* Check Q here once. Q should be Q_old_wtda */ + Copy_Scale_sig( new_inp_16k_fx - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */ + scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( Q_old_inp_16k, st->Q_old_wtda ) ); // st->Q_old_wtda->Q_old_inp_16k + Copy( new_inp_16k_fx - STEREO_DFT_OVL_16k, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - STEREO_DFT_OVL_16k + delay, sub( STEREO_DFT_OVL_16k, delay ) ); + st->Q_old_wtda = Q_old_inp_16k; + move16(); } } ELSE IF( EQ_16( element_mode, IVAS_CPE_TD ) ) @@ -898,8 +901,11 @@ ivas_error ivas_compute_core_buffers_fx( test(); IF( EQ_16( st->bwidth, WB ) && st->hBWE_FD != NULL ) { - Copy_Scale_sig( new_inp_16k_fx + L_FILT16k - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */ - Copy( new_inp_16k_fx - L_MEM_RECALC_16K, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - L_MEM_RECALC_16K - L_FILT16k + delay, sub( L_MEM_RECALC_16K + L_FILT16k, delay ) ); /* Check Q here once. Q should be Q_old_wtda */ + Copy_Scale_sig( new_inp_16k_fx + L_FILT16k - delay, st->hBWE_FD->old_input_wb_fx, delay, negate( add( Q_old_inp_16k, 1 ) ) ); /* Scaling to Q(-1) */ + scale_sig( st->hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( Q_old_inp_16k, st->Q_old_wtda ) ); // st->Q_old_wtda->Q_old_inp_16k + Copy( new_inp_16k_fx - L_MEM_RECALC_16K, st->hBWE_FD->L_old_wtda_swb_fx + L_FRAME16k - L_MEM_RECALC_16K - L_FILT16k + delay, sub( L_MEM_RECALC_16K + L_FILT16k, delay ) ); + st->Q_old_wtda = Q_old_inp_16k; + move16(); } } ELSE IF( element_mode == IVAS_SCE ) diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 4237aa9c3..11d6404b7 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -639,6 +639,7 @@ void swb_bwe_enc_ivas_fx( Word16 *old_input_16k_fx, /* i : input signal @16kHz for SWB BWE */ const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */ const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ + const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ Word16 Q_shb_speech, Word16 Q_slb_speech ); diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 45ec01b31..4da0bff61 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -1013,7 +1013,7 @@ typedef struct fd_bwe_enc_structure { Word16 new_input_hp_fx[NS2SA( 16000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_NS + DELAY_FIR_RESAMPL_NS - DELAY_CLDFB_NS )]; // Q_new_input_hp Word16 Q_new_input_hp; - Word16 old_input_fx[NS2SA( 48000, DELAY_FD_BWE_ENC_NS + DELAY_FIR_RESAMPL_NS )]; // q0 + Word16 old_input_fx[NS2SA( 48000, DELAY_FD_BWE_ENC_NS + DELAY_FIR_RESAMPL_NS )]; // st->q_inp Word16 old_input_wb_fx[NS2SA( 16000, DELAY_FD_BWE_ENC_NS )]; /* Q(-1) */ Word16 old_input_lp_fx[NS2SA( 16000, ACELP_LOOK_NS + DELAY_FD_BWE_ENC_NS )]; // st->hBWE_FD->prev_Q_input_lp Word16 old_syn_12k8_16k_fx[NS2SA( 16000, DELAY_FD_BWE_ENC_NS )]; // st->Q_syn diff --git a/lib_enc/swb_bwe_enc_fx.c b/lib_enc/swb_bwe_enc_fx.c index 1ebef7404..6b309c334 100644 --- a/lib_enc/swb_bwe_enc_fx.c +++ b/lib_enc/swb_bwe_enc_fx.c @@ -270,6 +270,7 @@ void swb_bwe_enc_ivas_fx( Word16 *old_input_16k_fx, /* i : input signal @16kHz for SWB BWE */ const Word16 *old_syn_12k8_16k_fx, /* i : ACELP core synthesis at 12.8kHz or 16kHz */ const Word16 *new_swb_speech_fx, /* i : original input signal at 32kHz */ + const Word16 Q_new_swb_speech, /* i : Q for new_swb_speech_fx */ Word16 *shb_speech_fx, /* i : SHB target signal (6-14kHz) at 16kHz */ Word16 Q_shb_speech, Word16 Q_slb_speech ) @@ -287,7 +288,7 @@ void swb_bwe_enc_ivas_fx( Word16 old_input_lp_fx[L_FRAME16k]; Word16 new_input_hp_fx[L_FRAME16k]; Word16 yorig_fx[L_FRAME48k]; - Word16 scl, new_input_fx_exp; + Word16 scl, new_input_fx_q; Word16 max; Word16 Sample_Delay_SWB_BWE; Word16 Sample_Delay_HP; @@ -412,7 +413,7 @@ void swb_bwe_enc_ivas_fx( * SWB BWE encoding * FB BWE encoding *---------------------------------------------------------------------*/ - new_input_fx_exp = 0; + new_input_fx_q = Q_new_swb_speech; move16(); test(); IF( ( EQ_16( st_fx->idchan, 1 ) ) && ( EQ_16( last_element_mode, IVAS_CPE_DFT ) ) ) @@ -424,12 +425,12 @@ void swb_bwe_enc_ivas_fx( } } /* MDCT of the core synthesis signal */ - wtda_fx( old_input_fx, &new_input_fx_exp, L_old_input_fx, hBWE_FD->L_old_wtda_swb_fx, + wtda_fx( old_input_fx, &new_input_fx_q, L_old_input_fx, hBWE_FD->L_old_wtda_swb_fx, &st_fx->Q_old_wtda, ALDO_WINDOW, ALDO_WINDOW, /* window overlap of current frame (0: full, 2: none, or 3: half) */ inner_frame ); /* DCT of the ACELP core synthesis */ - direct_transform_fx( L_old_input_fx, yorig_32, 0, inner_frame, &new_input_fx_exp, st_fx->element_mode ); + direct_transform_fx( L_old_input_fx, yorig_32, 0, inner_frame, &new_input_fx_q, st_fx->element_mode ); /* high-band gain control in case of BWS */ IF( st_fx->bwidth_sw_cnt > 0 ) @@ -438,7 +439,7 @@ void swb_bwe_enc_ivas_fx( } /* Convert to 16 Bits (Calc Shift Required to Stay within MAX_Q_NEW_INPUT) */ - scl = sub( 16 + 8, new_input_fx_exp ); + scl = sub( 16 + 8, new_input_fx_q ); /* Possible to Upscale? */ IF( scl > 0 ) { @@ -449,7 +450,7 @@ void swb_bwe_enc_ivas_fx( scl = s_min( Q_synth, scl ); } Copy_Scale_sig32_16( yorig_32, yorig_fx, inner_frame, scl ); - Q_synth = add( sub( new_input_fx_exp, 16 ), scl ); + Q_synth = add( sub( new_input_fx_q, 16 ), scl ); max = 0; move16(); Q_synth_hf = 0; @@ -558,12 +559,12 @@ void swb_bwe_enc_ivas_fx( IF( EQ_16( st_fx->L_frame, L_FRAME16k ) ) { SWB_BWE_encoding_ivas_fx( st_fx, old_input_fx, old_input_lp_fx, new_input_hp_fx, old_syn_12k8_16k_fx, yorig_32, - SWB_fenv_fx, tilt_nb_fx, 80, Q_slb_speech, Q_shb, new_input_fx_exp, new_input_fx_exp ); + SWB_fenv_fx, tilt_nb_fx, 80, Q_slb_speech, Q_shb, new_input_fx_q, new_input_fx_q ); } ELSE { SWB_BWE_encoding_ivas_fx( st_fx, old_input_fx, old_input_lp_fx, new_input_hp_fx, old_syn_12k8_16k_fx, yorig_32, - SWB_fenv_fx, tilt_nb_fx, 6, Q_slb_speech, Q_shb, new_input_fx_exp, new_input_fx_exp ); + SWB_fenv_fx, tilt_nb_fx, 6, Q_slb_speech, Q_shb, new_input_fx_q, new_input_fx_q ); } diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c index ba165cba4..30cfb4920 100644 --- a/lib_enc/swb_pre_proc_fx.c +++ b/lib_enc/swb_pre_proc_fx.c @@ -166,6 +166,8 @@ void wb_pre_proc_fx( Copy( hBWE_FD->old_input_wb_fx, old_input, Sample_Delay_WB_BWE ); Copy( new_inp_resamp16k + L_FRAME16k - Sample_Delay_WB_BWE, hBWE_FD->old_input_wb_fx, Sample_Delay_WB_BWE ); Copy( old_input, hBWE_FD->L_old_wtda_swb_fx, L_FRAME16k ); + st_fx->Q_old_wtda = -1; + move16(); } return; } @@ -778,7 +780,7 @@ void swb_pre_proc_fx( /*full implementation pending*/ void swb_pre_proc_ivas_fx( Encoder_State *st, /* i/o: encoder state structure */ - Word16 *new_swb_speech, /* o : original input signal at 32kHz - Q0 */ + Word16 *new_swb_speech, /* o : original input signal at 32kHz - st->q_inp */ Word32 *new_swb_speech_fx, /* o : original input signal at 32kHz - Q - q_reImBuffer */ Word16 *shb_speech, /* o : SHB target signal (6-14kHz) at 16kHz- Q(Q_shb_spch) */ Word16 *Q_shb_spch, @@ -846,6 +848,9 @@ void swb_pre_proc_ivas_fx( test(); test(); + scale_sig( hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( st->q_inp, st->Q_old_wtda ) ); // st->Q_old_wtda -> st->q_inp + st->Q_old_wtda = st->q_inp; + move16(); IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && GE_16( st->bwidth, SWB ) ) { Copy( st->input_fx - hCPE->hStereoTCA->lMemRecalc, hBWE_FD->L_old_wtda_swb_fx + L_FRAME32k - sub( hCPE->hStereoTCA->lMemRecalc, Sample_Delay_SWB_BWE ), sub( hCPE->hStereoTCA->lMemRecalc, Sample_Delay_SWB_BWE ) ); @@ -880,6 +885,8 @@ void swb_pre_proc_ivas_fx( IF( NE_16( st->extl, WB_BWE ) ) { Copy( old_input_fx, hBWE_FD->L_old_wtda_swb_fx, L_FRAME32k ); + st->Q_old_wtda = st->q_inp; + move16(); } } @@ -929,6 +936,10 @@ void swb_pre_proc_ivas_fx( test(); test(); + scale_sig( hBWE_FD->L_old_wtda_swb_fx, L_FRAME48k, sub( st->q_inp, st->Q_old_wtda ) ); // st->Q_old_wtda -> st->q_inp + st->Q_old_wtda = st->q_inp; + move16(); + IF( EQ_16( st->element_mode, IVAS_CPE_TD ) && GE_16( st->bwidth, SWB ) ) { IF( EQ_16( st->bwidth, SWB ) ) @@ -1029,6 +1040,8 @@ void swb_pre_proc_ivas_fx( set16_fx( old_input_fx, 0, Sample_Delay_SWB_BWE ); Copy( new_swb_speech + inner_frame - Sample_Delay_SWB_BWE, hBWE_FD->old_input_fx, Sample_Delay_SWB_BWE ); Copy( old_input_fx, hBWE_FD->L_old_wtda_swb_fx, inner_frame ); + st->Q_old_wtda = st->q_inp; + move16(); } /* resample 48 kHz to 32kHz */ -- GitLab From 6e4399ee5756cb057a36cfd0e8a8b99367f53b03 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 28 Apr 2025 08:46:47 +0530 Subject: [PATCH 435/698] EVS bitexactness fix --- lib_enc/swb_pre_proc_fx.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c index 30cfb4920..8991696e6 100644 --- a/lib_enc/swb_pre_proc_fx.c +++ b/lib_enc/swb_pre_proc_fx.c @@ -166,8 +166,6 @@ void wb_pre_proc_fx( Copy( hBWE_FD->old_input_wb_fx, old_input, Sample_Delay_WB_BWE ); Copy( new_inp_resamp16k + L_FRAME16k - Sample_Delay_WB_BWE, hBWE_FD->old_input_wb_fx, Sample_Delay_WB_BWE ); Copy( old_input, hBWE_FD->L_old_wtda_swb_fx, L_FRAME16k ); - st_fx->Q_old_wtda = -1; - move16(); } return; } -- GitLab From 88d341f8f88423ca0ab7073d99a5a78b47e23140 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 28 Apr 2025 08:50:42 +0530 Subject: [PATCH 436/698] Fix for renderer crashes in CI ltv test --- lib_rend/ivas_dirac_rend_fx.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index 2540426cc..06b37ff5a 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -5007,10 +5007,20 @@ static void ivas_masa_ext_dirac_render_sf_fx( ELSE { /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */ + /* cldfb_state_fx should be in 1 less q-factor compared to cld buffers for cldfbSynthesis_ivas_fx function */ Word16 q_out = sub( q_cldfb, 1 ); - scale_sig32( hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_fx, hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_length, sub( q_out, hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state ) ); // q_out - hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state = q_out; - move16(); + Word16 max_shift = L_norm_arr( hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_fx, hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_length ); + IF( GT_16( max_shift, sub( q_out, hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state ) ) ) + { + scale_sig32( hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_fx, hMasaExtRend->cldfbSynRend[idx_in]->cldfb_state_length, sub( q_out, hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state ) ); // q_out + hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state = q_out; + move16(); + } + ELSE + { + scale_sig32( Cldfb_RealBuffer_fx[idx_in][i], hSpatParamRendCom->num_freq_bands, sub( hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state, q_out ) ); + scale_sig32( Cldfb_ImagBuffer_fx[idx_in][i], hSpatParamRendCom->num_freq_bands, sub( hMasaExtRend->cldfbSynRend[idx_in]->Q_cldfb_state, q_out ) ); + } FOR( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { RealBuffer_fx[i] = Cldfb_RealBuffer_fx[idx_in][i]; // q_cldfb -- GitLab From d0c0db1c0c943fa2a048363c792ca5a934e92b7d Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 28 Apr 2025 17:23:12 +0530 Subject: [PATCH 437/698] Complexity measure crash fix for ltv48_STEREO_StereoDmxEvs_b07_16_dtx_wb_rs_fer_ep_10pct_fer_g192 --- lib_dec/igf_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/igf_dec_fx.c b/lib_dec/igf_dec_fx.c index 0010b9466..aa3f35b26 100644 --- a/lib_dec/igf_dec_fx.c +++ b/lib_dec/igf_dec_fx.c @@ -244,7 +244,7 @@ static void IGF_replaceTCXNoise_2( Word32 *in, /**< in g = getSqrtWord32( L_mult( divide3232( totalNoiseNrg, rE ), 8192 /*1.0f / 4.0f Q15*/ ) ); // ((Q15 + Q15 + Q1) / 2) -> Q15 - g = shl( g, 1 ); // Q16 + g = shl_sat( g, 1 ); // Q16 FOR( sb = start; sb < stop; sb++ ) { -- GitLab From 66f93c33e18041835fe487df49e96c09f6bfda20 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 28 Apr 2025 17:28:03 +0530 Subject: [PATCH 438/698] Clang formatting changes --- lib_dec/igf_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/igf_dec_fx.c b/lib_dec/igf_dec_fx.c index aa3f35b26..511d8a977 100644 --- a/lib_dec/igf_dec_fx.c +++ b/lib_dec/igf_dec_fx.c @@ -244,7 +244,7 @@ static void IGF_replaceTCXNoise_2( Word32 *in, /**< in g = getSqrtWord32( L_mult( divide3232( totalNoiseNrg, rE ), 8192 /*1.0f / 4.0f Q15*/ ) ); // ((Q15 + Q15 + Q1) / 2) -> Q15 - g = shl_sat( g, 1 ); // Q16 + g = shl_sat( g, 1 ); // Q16 FOR( sb = start; sb < stop; sb++ ) { -- GitLab From 62465ef34e84a79f011e1cd7da55dea4e57fed0b Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 28 Apr 2025 17:37:40 +0530 Subject: [PATCH 439/698] Fix for 3GPP issue 1524: BASOP decoder asserts in ivas_dirac_dec_binaural_determine_processing_matrices_fx with OMASA BASOP encoder bitstream using rate switching Link #1524 --- lib_rend/ivas_dirac_dec_binaural_functions_fx.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 922a4ef12..412b8c226 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -2096,6 +2096,21 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( exp = sub( get_min_scalefactor( resultMtxRe_fx[0][0], resultMtxRe_fx[1][1] ), 2 ); tmp2 = L_add( L_shl( resultMtxRe_fx[0][0], exp ), L_shl( resultMtxRe_fx[1][1], exp ) ); q_tmp2 = add( q_res, exp ); + + /*Limiting value to Q63*/ + IF( GT_16( q_tmp2, 63 ) ) + { + tmp2 = L_shl( tmp2, sub( 63, q_tmp2 ) ); + q_tmp2 = 63; + move16(); + IF( EQ_32( tmp2, -1 ) ) + { + tmp2 = 0; + move32(); + q_tmp2 = 31; + move16(); + } + } IF( LT_16( q_CrEne, q_tmp2 ) ) { realizedOutputEne_fx = L_add( tmp1, L_shr( tmp2, sub( q_tmp2, q_CrEne ) ) ); -- GitLab From 6ee710fdf94a104a3bfc33db55f2225c6feaead6 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 28 Apr 2025 15:13:02 +0200 Subject: [PATCH 440/698] fix bug in CI config wrt binary naming in BE and regression checks --- .gitlab-ci.yml | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bebb7d024..95edafd47 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -326,10 +326,6 @@ workflow: - rm -rf tests/dut tests/ref variables: USE_LTV: 0 - DUT_ENCODER_PATH: ./IVAS_cod_ref - DUT_DECODER_PATH: ./IVAS_dec_ref - MERGE_TARGET_ENCODER_PATH: ./IVAS_cod_ref - MERGE_TARGET_DECODER_PATH: ./IVAS_dec_ref .check-be-to-target-job: extends: @@ -911,6 +907,9 @@ check-be-to-target-short-enc-0db: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # -/-0dB LEVEL_SCALING: "1.0" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-be-to-target-short-enc-+10db: extends: @@ -919,6 +918,9 @@ check-be-to-target-short-enc-+10db: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # +10dB LEVEL_SCALING: "3.162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-be-to-target-short-enc--10db: extends: @@ -927,6 +929,9 @@ check-be-to-target-short-enc--10db: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # -10dB LEVEL_SCALING: "0.3162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-be-to-target-short-dec-0db: extends: @@ -935,6 +940,9 @@ check-be-to-target-short-dec-0db: TEST_SUITE: "$SHORT_TEST_SUITE" # +/-0dB LEVEL_SCALING: "1.0" + # overwrite encoder with float reference one + DUT_ENCODER_PATH: "$REF_ENCODER_PATH" + MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" check-be-to-target-short-dec-+10db: extends: @@ -943,6 +951,9 @@ check-be-to-target-short-dec-+10db: TEST_SUITE: "$SHORT_TEST_SUITE" # +10dB LEVEL_SCALING: "3.162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-be-to-target-short-dec--10db: extends: @@ -951,6 +962,9 @@ check-be-to-target-short-dec--10db: TEST_SUITE: "$SHORT_TEST_SUITE" # -10dB LEVEL_SCALING: "0.3162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" ### jobs that check for regressions on non-BE testcases check-regressions-short-enc-0db: @@ -960,6 +974,9 @@ check-regressions-short-enc-0db: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # +/-0dB LEVEL_SCALING: "1.0" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-regressions-short-enc-+10db: extends: @@ -968,6 +985,9 @@ check-regressions-short-enc-+10db: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # +10dB LEVEL_SCALING: "3.162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-regressions-short-enc--10db: extends: @@ -976,6 +996,9 @@ check-regressions-short-enc--10db: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # -10dB LEVEL_SCALING: "0.3162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-regressions-short-dec-0db: extends: @@ -984,6 +1007,9 @@ check-regressions-short-dec-0db: TEST_SUITE: "$SHORT_TEST_SUITE" # +/-0dB LEVEL_SCALING: "1" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-regressions-short-dec-+10db: extends: @@ -992,6 +1018,9 @@ check-regressions-short-dec-+10db: TEST_SUITE: "$SHORT_TEST_SUITE" # +10dB LEVEL_SCALING: "3.162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" check-regressions-short-dec--10db: extends: @@ -1000,6 +1029,9 @@ check-regressions-short-dec--10db: TEST_SUITE: "$SHORT_TEST_SUITE" # -10dB LEVEL_SCALING: "0.3162" + # overwrite decoder with float reference one + DUT_DECODER_PATH: "$REF_DECODER_PATH" + MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" # --------------------------------------------------------------- # Short test jobs for running from web interface or schedule -- GitLab From ba4e30212f18189f5e8698b86f75c7e73a1e7468 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 28 Apr 2025 15:22:14 +0200 Subject: [PATCH 441/698] fix binary name overwrite for decoder BE jobs --- .gitlab-ci.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 95edafd47..0e9e06a56 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -951,9 +951,9 @@ check-be-to-target-short-dec-+10db: TEST_SUITE: "$SHORT_TEST_SUITE" # +10dB LEVEL_SCALING: "3.162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" + # overwrite encoder with float reference one + DUT_ENCODER_PATH: "$REF_ENCODER_PATH" + MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" check-be-to-target-short-dec--10db: extends: @@ -962,9 +962,9 @@ check-be-to-target-short-dec--10db: TEST_SUITE: "$SHORT_TEST_SUITE" # -10dB LEVEL_SCALING: "0.3162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" + # overwrite encoder with float reference one + DUT_ENCODER_PATH: "$REF_ENCODER_PATH" + MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" ### jobs that check for regressions on non-BE testcases check-regressions-short-enc-0db: @@ -1007,9 +1007,9 @@ check-regressions-short-dec-0db: TEST_SUITE: "$SHORT_TEST_SUITE" # +/-0dB LEVEL_SCALING: "1" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" + # overwrite encoder with float reference one + DUT_ENCODER_PATH: "$REF_ENCODER_PATH" + MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" check-regressions-short-dec-+10db: extends: @@ -1018,9 +1018,9 @@ check-regressions-short-dec-+10db: TEST_SUITE: "$SHORT_TEST_SUITE" # +10dB LEVEL_SCALING: "3.162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" + # overwrite encoder with float reference one + DUT_ENCODER_PATH: "$REF_ENCODER_PATH" + MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" check-regressions-short-dec--10db: extends: @@ -1029,9 +1029,9 @@ check-regressions-short-dec--10db: TEST_SUITE: "$SHORT_TEST_SUITE" # -10dB LEVEL_SCALING: "0.3162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" + # overwrite encoder with float reference one + DUT_ENCODER_PATH: "$REF_ENCODER_PATH" + MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" # --------------------------------------------------------------- # Short test jobs for running from web interface or schedule -- GitLab From 2ebe23b3ec8be37c4e9e3a9bb061dad62de88bb9 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 28 Apr 2025 15:38:58 +0200 Subject: [PATCH 442/698] fix job dependencies for regression check jobs --- .gitlab-ci.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0e9e06a56..364e522aa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -444,9 +444,6 @@ workflow: extends: - .check-be-job stage: test - needs: - - job: "check-be-to-target-short-enc-0db" - artifacts: true timeout: "300 minutes" variables: XML_REPORT_BRANCH: "report-junit-branch-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.xml" @@ -970,6 +967,9 @@ check-be-to-target-short-dec--10db: check-regressions-short-enc-0db: extends: - .check-regressions-pytest-job + needs: + - job: "check-be-to-target-short-enc-0db" + artifacts: true variables: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # +/-0dB @@ -981,6 +981,9 @@ check-regressions-short-enc-0db: check-regressions-short-enc-+10db: extends: - .check-regressions-pytest-job + needs: + - job: "check-be-to-target-short-enc-+10db" + artifacts: true variables: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # +10dB @@ -992,6 +995,9 @@ check-regressions-short-enc-+10db: check-regressions-short-enc--10db: extends: - .check-regressions-pytest-job + needs: + - job: "check-be-to-target-short-enc--10db" + artifacts: true variables: TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" # -10dB @@ -1003,6 +1009,9 @@ check-regressions-short-enc--10db: check-regressions-short-dec-0db: extends: - .check-regressions-pytest-job + needs: + - job: "check-be-to-target-short-dec-0db" + artifacts: true variables: TEST_SUITE: "$SHORT_TEST_SUITE" # +/-0dB @@ -1014,6 +1023,9 @@ check-regressions-short-dec-0db: check-regressions-short-dec-+10db: extends: - .check-regressions-pytest-job + needs: + - job: "check-be-to-target-short-dec-+10db" + artifacts: true variables: TEST_SUITE: "$SHORT_TEST_SUITE" # +10dB @@ -1025,6 +1037,9 @@ check-regressions-short-dec-+10db: check-regressions-short-dec--10db: extends: - .check-regressions-pytest-job + needs: + - job: "check-be-to-target-short-dec--10db" + artifacts: true variables: TEST_SUITE: "$SHORT_TEST_SUITE" # -10dB -- GitLab From 6bc3038a7056b9761f6a9c11ac0b1a0c6b167c43 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 28 Apr 2025 19:24:51 +0530 Subject: [PATCH 443/698] Q related fixed for encoder transition and decoder msan fixes --- lib_dec/ivas_mct_dec_fx.c | 2 +- lib_dec/ivas_stereo_dft_dec_dmx_fx.c | 2 ++ lib_enc/acelp_enc_util_fx.c | 12 ++++++------ lib_enc/enc_tran_fx.c | 3 ++- lib_enc/ivas_core_pre_proc_fx.c | 7 ++----- lib_enc/transition_enc_fx.c | 16 ++-------------- 6 files changed, 15 insertions(+), 27 deletions(-) diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index 32403b11a..b34ce0c56 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -398,7 +398,7 @@ ivas_error ivas_mct_dec_fx( test(); IF( ( st_ivas->sba_dirac_stereo_flag != 0 ) && ( NE_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) || GE_16( cpe_id, sub( nCPE, 2 ) ) ) ) { - Copy_Scale_sig_16_32_no_sat( synth_fx[n], synth_fx_32[n], L_FRAME48k, sub( Q11, ( sub( 15, e_sig[n] ) ) ) ); // Q11 + Copy_Scale_sig_16_32_no_sat( synth_fx[n], synth_fx_32[n], output_frame, sub( Q11, ( sub( 15, e_sig[n] ) ) ) ); // Q11 Copy_Scale_sig_16_32_no_sat( hCPE->hCoreCoder[n]->hHQ_core->old_out_fx, hCPE->hCoreCoder[n]->hHQ_core->old_out_fx32, output_frame, sub( Q11, hCPE->hCoreCoder[n]->hHQ_core->Q_old_wtda ) ); ivas_post_proc_fx( NULL, hCPE, n, synth_fx_32[n], NULL, output_frame, 1, Q11 ); Copy_Scale_sig_32_16( synth_fx_32[n], synth_fx[n], output_frame, sub( sub( 15, e_sig[n] ), Q11 ) ); // Q0 diff --git a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c index e82005965..8035af217 100644 --- a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c @@ -102,6 +102,8 @@ void stereo_dft_unify_dmx_fx( Word16 num_plocs; Word32 plocsi[STEREO_DFT_RES_N_PEAKS_MAX]; + set32_fx( DFT_PRED_RES, 0, STEREO_DFT32MS_N_32k ); + output_frame = extract_l( Mult_32_16( st0->output_Fs, INV_FRAME_PER_SEC_Q15 ) ); /* Q0 */ samp_ratio = BASOP_Util_Divide3232_Scale( st0->sr_core, st0->output_Fs, &q_samp_ratio ); samp_ratio = shr( samp_ratio, sub( Q15 - Q12, q_samp_ratio ) ); diff --git a/lib_enc/acelp_enc_util_fx.c b/lib_enc/acelp_enc_util_fx.c index 181583e91..7f57b55da 100644 --- a/lib_enc/acelp_enc_util_fx.c +++ b/lib_enc/acelp_enc_util_fx.c @@ -180,9 +180,9 @@ void E_ACELP_conv( } void E_ACELP_conv_ivas_fx( - const Word16 xn2[], /* i Qx*/ + const Word16 xn2[], /* i Qnew - 1*/ const Word16 h2[], /* i Q12*/ - Word16 cn2[] /* o Q0*/ + Word16 cn2[] /* o Qnew*/ ) { Word16 i, k; @@ -194,14 +194,14 @@ void E_ACELP_conv_ivas_fx( { /*cn2[k] = xn2[k]; */ Word64 L_tmp_64; - L_tmp_64 = W_deposit32_l( L_mult0( xn2[k], 0x800 ) ); /* 4Q11 */ + L_tmp_64 = W_deposit32_l( L_mult0( xn2[k], 0x800 ) ); /* Qnew -1 + 12 */ FOR( i = 0; i < k; i++ ) { /*cn2[k]-=cn2[i]*h2[k-i];*/ - L_tmp_64 = W_msu0_16_16( L_tmp_64, cn2[i], h2[k - i] ); /*h2 4Q11*/ + L_tmp_64 = W_msu0_16_16( L_tmp_64, cn2[i], h2[k - i] ); /*Qnew + 11*/ } - L_tmp = W_sat_l( L_tmp_64 ); /* 4Q11 */ - cn2[k] = round_fx_o( L_shl_o( L_tmp, 5, &Overflow ), &Overflow ); /* Q0*/ + L_tmp = W_sat_l( L_tmp_64 ); /* Qnew + 11 */ + cn2[k] = round_fx_o( L_shl_o( L_tmp, 5, &Overflow ), &Overflow ); /* Qnew*/ move16(); } } diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index 394b22c30..f308e9e87 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -545,7 +545,7 @@ Word16 encod_tran_ivas_fx( Copy( &res_fx[i_subfr], &exc_fx[i_subfr], L_SUBFR ); /* Q_new */ - find_targets_ivas_fx( speech_fx, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq, + find_targets_ivas_new_fx( speech_fx, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq, res_fx, L_SUBFR, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); q_h1 = sub( 14, norm_s( h1[0] ) ); @@ -555,6 +555,7 @@ Word16 encod_tran_ivas_fx( #else Scale_sig( h1, L_SUBFR, sub( 13, q_h1 ) ); #endif + /* scaling of xn[] to limit dynamic at 12 bits */ Scale_sig( xn, L_SUBFR, shift ); diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c index 6fe6b6720..5853e2739 100644 --- a/lib_enc/ivas_core_pre_proc_fx.c +++ b/lib_enc/ivas_core_pre_proc_fx.c @@ -1174,11 +1174,8 @@ ivas_error ivas_compute_core_buffers_fx( ELSE IF( GT_32( input_Fs, 8000 ) && EQ_32( sr_core, INT_FS_16k ) ) { Copy( &old_inp_16k_fx[L_frame_tmp], st->old_inp_16k_fx, L_INP_MEM ); - IF( Q_new ) - { - st->exp_old_inp_16k = sub( Q16, *Q_new ); //(*Q_new - 1) - move16(); - } + st->exp_old_inp_16k = sub(Q16, *Q_new); //(*Q_new - 1) + move16(); } ELSE IF( GT_32( input_Fs, 8000 ) ) { diff --git a/lib_enc/transition_enc_fx.c b/lib_enc/transition_enc_fx.c index 5e50cac15..c724ffd6c 100644 --- a/lib_enc/transition_enc_fx.c +++ b/lib_enc/transition_enc_fx.c @@ -924,8 +924,6 @@ void transition_enc_ivas_fx( /* set limit_flag to 0 for restrained limits, and 1 for extended limits */ limit_flag = 0; move16(); - Word16 h1_fx_q15[L_SUBFR + ( M + 1 )]; - Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 0 ); pit_start = PIT_MIN; move16(); @@ -1443,12 +1441,7 @@ void transition_enc_ivas_fx( *clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, ( Q_new + shift - 1 ) ); move16(); -#ifdef TEST_HR - Copy( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ) ); -#else - Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 1 ); -#endif - lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx_q15, + lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx, xn_fx, y1_fx, xn2_fx, L_SUBFR, st_fx->L_frame, g_corr_fx, *clip_gain, gain_pit_fx, &lp_flag ); IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) @@ -1684,12 +1677,7 @@ void transition_enc_ivas_fx( *clip_gain = gp_clip_fx( st_fx->element_mode, st_fx->core_brate, st_fx->voicing_fx, i_subfr, TRANSITION, xn_fx, gp_cl_fx, Q_new ); move16(); -#ifdef TEST_HR - Copy( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ) ); -#else - Copy_Scale_sig( h1_fx, h1_fx_q15, L_SUBFR + ( M + 1 ), 1 ); -#endif - lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx_q15, + lp_select = lp_filt_exc_enc_ivas_fx( MODE1, TRANSITION, i_subfr, exc_fx, h1_fx, xn_fx, y1_fx, xn2_fx, L_SUBFR, st_fx->L_frame, g_corr_fx, *clip_gain, gain_pit_fx, &lp_flag ); IF( EQ_16( lp_flag, NORMAL_OPERATION ) ) { -- GitLab From c5d45b9cdad87c45d937da2462ce0defad4d3d73 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 29 Apr 2025 08:11:58 +0530 Subject: [PATCH 444/698] Clang formatting changes --- lib_dec/ivas_stereo_dft_dec_dmx_fx.c | 2 +- lib_enc/enc_tran_fx.c | 2 +- lib_enc/ivas_core_pre_proc_fx.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c index 8035af217..cdb64e46c 100644 --- a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c @@ -103,7 +103,7 @@ void stereo_dft_unify_dmx_fx( Word32 plocsi[STEREO_DFT_RES_N_PEAKS_MAX]; set32_fx( DFT_PRED_RES, 0, STEREO_DFT32MS_N_32k ); - + output_frame = extract_l( Mult_32_16( st0->output_Fs, INV_FRAME_PER_SEC_Q15 ) ); /* Q0 */ samp_ratio = BASOP_Util_Divide3232_Scale( st0->sr_core, st0->output_Fs, &q_samp_ratio ); samp_ratio = shr( samp_ratio, sub( Q15 - Q12, q_samp_ratio ) ); diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index f308e9e87..865972819 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -546,7 +546,7 @@ Word16 encod_tran_ivas_fx( Copy( &res_fx[i_subfr], &exc_fx[i_subfr], L_SUBFR ); /* Q_new */ find_targets_ivas_new_fx( speech_fx, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq, - res_fx, L_SUBFR, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); + res_fx, L_SUBFR, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); q_h1 = sub( 14, norm_s( h1[0] ) ); Copy_Scale_sig( h1, h2_fx, L_SUBFR, sub( 11, q_h1 ) ); /*Q11*/ diff --git a/lib_enc/ivas_core_pre_proc_fx.c b/lib_enc/ivas_core_pre_proc_fx.c index 5853e2739..e2c099cd2 100644 --- a/lib_enc/ivas_core_pre_proc_fx.c +++ b/lib_enc/ivas_core_pre_proc_fx.c @@ -1174,7 +1174,7 @@ ivas_error ivas_compute_core_buffers_fx( ELSE IF( GT_32( input_Fs, 8000 ) && EQ_32( sr_core, INT_FS_16k ) ) { Copy( &old_inp_16k_fx[L_frame_tmp], st->old_inp_16k_fx, L_INP_MEM ); - st->exp_old_inp_16k = sub(Q16, *Q_new); //(*Q_new - 1) + st->exp_old_inp_16k = sub( Q16, *Q_new ); //(*Q_new - 1) move16(); } ELSE IF( GT_32( input_Fs, 8000 ) ) -- GitLab From 34c9080325f97b34ea73c8d98f1cfafc30a26ba2 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 29 Apr 2025 08:01:15 +0200 Subject: [PATCH 445/698] add missing reference to common before_script section --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 364e522aa..71a5704aa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1596,6 +1596,7 @@ voip-be-on-merge-request: GET_WMOPS_ARGS: "mem_only" timeout: 3 hours 30 minutes before_script: + - !reference [ .job-linux, before_script ] - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh -- GitLab From 1a9dfb950313aeaa5626608e2d32d53458ab7c7c Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 29 Apr 2025 08:22:37 +0200 Subject: [PATCH 446/698] update CI ref --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 364e522aa..59c8d2b72 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF 4eb4c0dfbdc845280a9994b5f7540f69c737537b + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF 7c6b6f261883e282ebe050e18d48c00ce623b8be include: - local: .gitlab-ci/variables.yml -- GitLab From 997852da13bcfddae4a4e4fb863cf455e03c4421 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 29 Apr 2025 08:50:20 +0200 Subject: [PATCH 447/698] update commit to point to CI repo main --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 59c8d2b72..4b7d05c7b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF 7c6b6f261883e282ebe050e18d48c00ce623b8be + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF f5e61349c22ededcdfe1cc54e533dea477f2d003 include: - local: .gitlab-ci/variables.yml -- GitLab From ee28fb4d85ca4d1adfb0c01eb774bc8b9fda35f5 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 29 Apr 2025 08:01:15 +0200 Subject: [PATCH 448/698] add missing reference to common before_script section --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4b7d05c7b..1f5a98321 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1596,6 +1596,7 @@ voip-be-on-merge-request: GET_WMOPS_ARGS: "mem_only" timeout: 3 hours 30 minutes before_script: + - !reference [ .job-linux, before_script ] - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh -- GitLab From 8f5cd954654c320df786feb4638dc89aba703792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Tue, 29 Apr 2025 01:21:37 +0200 Subject: [PATCH 449/698] Inherit before_script from .test-job-linux --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1f5a98321..bb2259810 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1596,7 +1596,7 @@ voip-be-on-merge-request: GET_WMOPS_ARGS: "mem_only" timeout: 3 hours 30 minutes before_script: - - !reference [ .job-linux, before_script ] + - !reference [ .test-job-linux, before_script ] - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh -- GitLab From 8ebc89d0a003b2287ebbb33aa941d8e8e6e5cfeb Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 29 Apr 2025 14:54:13 +0530 Subject: [PATCH 450/698] Fix for 3GPP issue 1525: Second channel of BASOP decoder MASA format output to FOA has missing energy or wrong signal Link #1525 --- lib_rend/ivas_dirac_output_synthesis_dec_fx.c | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index 509eec6e2..37b5f1e05 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -2134,9 +2134,6 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( move16(); } - subtract_power_y = masa_stereo_type_detect->subtract_power_y_fx; // q_subtract_power_y - move32(); - a = 858993; /* ( 0.0004f in Q31 ); Temporal smoothing coefficient */ move32(); b = L_sub( ONE_IN_Q31, a ); /* Temporal smoothing coefficient */ @@ -2152,24 +2149,42 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( move32(); masa_stereo_type_detect->q_target_power_y_smooth = q_com; move16(); - masa_stereo_type_detect->subtract_power_y_smooth_fx = - L_add( Mpy_32_32( a, subtract_power_y ), - Mpy_32_32( b, masa_stereo_type_detect->subtract_power_y_smooth_fx ) ); //(Q31, q_subtract_power_y) -> q_subtract_power_y + + IF( NE_16( masa_stereo_type_detect->q_subtract_power_y, masa_stereo_type_detect->q_subtract_power_y_smooth ) ) + { + exp = s_min( add( masa_stereo_type_detect->q_subtract_power_y, norm_l( masa_stereo_type_detect->subtract_power_y_fx ) ), add( masa_stereo_type_detect->q_subtract_power_y_smooth, norm_l( masa_stereo_type_detect->subtract_power_y_smooth_fx ) ) ); + masa_stereo_type_detect->subtract_power_y_fx = L_shl( masa_stereo_type_detect->subtract_power_y_fx, sub( exp, masa_stereo_type_detect->q_subtract_power_y ) ); + move32(); + masa_stereo_type_detect->subtract_power_y_smooth_fx = L_shl( masa_stereo_type_detect->subtract_power_y_smooth_fx, sub( exp, masa_stereo_type_detect->q_subtract_power_y_smooth ) ); + move32(); + masa_stereo_type_detect->q_subtract_power_y = exp; + move16(); + masa_stereo_type_detect->q_subtract_power_y_smooth = exp; + move16(); + } + subtract_power_y = masa_stereo_type_detect->subtract_power_y_fx; // q_subtract_power_y move32(); + W_temp = W_add( W_mult0_32_32( a, subtract_power_y ), W_mult0_32_32( b, masa_stereo_type_detect->subtract_power_y_smooth_fx ) ); // Q31 + masa_stereo_type_detect->q_subtract_power_y_smooth + exp = W_norm( W_temp ); + masa_stereo_type_detect->subtract_power_y_smooth_fx = W_extract_h( W_shl( W_temp, exp ) ); // Q31 + masa_stereo_type_detect->q_subtract_power_y_smooth + exp - 32 + move32(); + masa_stereo_type_detect->q_subtract_power_y_smooth = sub( add( masa_stereo_type_detect->q_subtract_power_y_smooth, exp ), 1 ); + move16(); + exp = 0; move16(); IF( masa_stereo_type_detect->target_power_y_smooth_fx != 0 ) { subtract_target_ratio = L_sub( BASOP_Util_Log2( masa_stereo_type_detect->subtract_power_y_smooth_fx ), BASOP_Util_Log2( masa_stereo_type_detect->target_power_y_smooth_fx ) ); // Q25 - exp = sub( masa_stereo_type_detect->q_subtract_power_y, q_com ); + exp = sub( masa_stereo_type_detect->q_subtract_power_y_smooth, q_com ); L_tmp = Mpy_32_32( L_sub( subtract_target_ratio, L_shl( exp, 25 ) ), LOG10_2_Q31 ); // Q25 } ELSE { subtract_target_ratio = BASOP_Util_Log2( masa_stereo_type_detect->subtract_power_y_smooth_fx ); // Q25 - exp = sub( 31, masa_stereo_type_detect->q_subtract_power_y ); + exp = sub( 31, masa_stereo_type_detect->q_subtract_power_y_smooth ); L_tmp = L_sub( Mpy_32_32( L_add( subtract_target_ratio, L_shl( exp, 25 ) ), LOG10_2_Q31 ), -503316480 /* L_shl( -15, 25 ) */ /*log(EPSILON)*/ ); // Q25 } subtract_target_ratio_db = Mpy_32_32( 1342177280 /* 10.0f * in Q27*/, L_tmp ); // (Q27, (Q25, Q31)) -> (Q27, Q25) -> Q21 @@ -2178,6 +2193,8 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( move32(); masa_stereo_type_detect->subtract_power_y_fx = 0; move32(); + masa_stereo_type_detect->q_subtract_power_y = Q31; + move16(); } /*-----------------------------------------------------------------* -- GitLab From 6b052e9535277432f63a9daf3cc2c7bc88a184e2 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 29 Apr 2025 13:33:19 +0530 Subject: [PATCH 451/698] Fix for 3GPP issue 1417: Audible artifact at SBA 13.2 kbps, 48KHz Link #1417 --- lib_enc/sig_clas_fx.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/lib_enc/sig_clas_fx.c b/lib_enc/sig_clas_fx.c index cf5d31d22..ed34798fc 100644 --- a/lib_enc/sig_clas_fx.c +++ b/lib_enc/sig_clas_fx.c @@ -53,9 +53,10 @@ Word16 signal_clas_fx( /* o : classification for current { Word32 Ltmp; Word16 mean_voi2, een, corn, zcn, relEn, pcn, fmerit1; - Word16 i, clas, pc, zc, lo, lo2, hi, hi2, exp_ee, frac_ee; + Word16 i, clas, pc, zc, exp_ee; Word16 tmp16, tmpS; const Word16 *pt1; + Word64 tmp64; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -73,34 +74,34 @@ Word16 signal_clas_fx( /* o : classification for current mean_voi2 = mac_r( Ltmp, st->voicing_fx[2], 16384 ); /* average spectral tilt in dB */ - lo = L_Extract_lc( ee[0], &hi ); - lo2 = L_Extract_lc( ee[1], &hi2 ); - Ltmp = L_mult( lo, lo2 ); /* Q5*Q5->Q11 */ - - test(); - test(); - IF( LT_32( Ltmp, 2048 ) ) + tmp64 = W_mult0_32_32( ee[0], ee[1] ); + exp_ee = W_norm( tmp64 ); + Ltmp = W_extract_h( W_shl( tmp64, exp_ee ) ); // Q = Q6+Q6 + exp_ee - 32 + exp_ee = sub( 31, sub( add( Q12, exp_ee ), 32 ) ); + IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( Ltmp, exp_ee, ONE_IN_Q31, 0 ), -1 ) ) { een = 0; move16(); } - ELSE IF( GT_32( Ltmp, THRES_EEN ) || hi > 0 || hi2 > 0 ) - { - een = 512; - move16(); - } ELSE { /* mean_ee2 = 0.5f * 20.0f * (float)log10( tmp ); */ /* een = K_EE_ENC * mean_ee2 + C_EE_ENC; */ - exp_ee = norm_l( Ltmp ); - frac_ee = Log2_norm_lc( L_shl( Ltmp, exp_ee ) ); - exp_ee = sub( 30 - 11, exp_ee ); - Ltmp = Mpy_32_16( exp_ee, frac_ee, LG10 ); /* Ltmp Q14 */ - een = round_fx( L_shl( Ltmp, 16 - 5 ) ); /* Q14 -> Q9 */ - een = mac_r( C_EE_FX, een, K_EE_FX ); - } + Ltmp = BASOP_Util_Log10( Ltmp, exp_ee ); // Q25 + Ltmp = Mpy_32_32( Ltmp, 671088640 /*20.f in Q25*/ ); // Q25 + Q25 -Q31 = Q19 * 0.5 = Q20 + een = extract_l( L_shl( Mpy_32_16_1( Ltmp, K_EE_FX ), Q9 - Q20 ) ); // Q9 + IF( GT_16( een, 512 ) ) + { + een = 512; + move16(); + } + ELSE IF( een < 0 ) + { + een = 0; + move16(); + } + } /* compute zero crossing rate */ pt1 = speech + sub( L_look, 1 ); tmpS = shr( *pt1, 15 ); /* sets 'tmpS to -1 if *pt1 < 0 */ -- GitLab From 9891182d9469eaa7433f31e765122c1663cdc7ca Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 29 Apr 2025 14:36:41 +0530 Subject: [PATCH 452/698] Fix for EVS Bitexactness issue --- lib_enc/ivas_core_pre_proc_front_fx.c | 2 +- lib_enc/prot_fx_enc.h | 9 + lib_enc/sig_clas_fx.c | 231 ++++++++++++++++++++++++++ 3 files changed, 241 insertions(+), 1 deletion(-) diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index 3d7d87bc2..4a8c4edd2 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -1425,7 +1425,7 @@ ivas_error pre_proc_front_ivas_fx( * TC frame selection *-----------------------------------------------------------------*/ - st->clas = signal_clas_fx( st, inp_12k8_fx, ee_fx, *relE_fx, L_look, tdm_SM_last_clas ); /* Q0 */ + st->clas = signal_clas_ivas_fx( st, inp_12k8_fx, ee_fx, *relE_fx, L_look, tdm_SM_last_clas ); /* Q0 */ move16(); select_TC_fx( MODE1, st->tc_cnt, &st->coder_type, st->localVAD ); diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 4237aa9c3..2aa5df5c4 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -570,6 +570,15 @@ Word16 signal_clas_fx( /* o : classification for current Word16 *uc_clas /* o : temporary classification used in music/speech class*/ ); +Word16 signal_clas_ivas_fx( /* o : classification for current frames */ + Encoder_State *st, /* i/o: encoder state structure */ + const Word16 *speech, /* i : pointer to speech signal for E computation */ + const Word32 *ee, /* i : lf/hf E ration for 2 half-frames */ + const Word16 relE, /* i : frame relative E to the long term average */ + const Word16 L_look, /* i : look-ahead */ + Word16 *uc_clas /* o : temporary classification used in music/speech class*/ +); + void speech_music_classif_fx( Encoder_State *st, /* i/o: state structure */ const Word16 *new_inp, /* i : new input signal */ diff --git a/lib_enc/sig_clas_fx.c b/lib_enc/sig_clas_fx.c index ed34798fc..beb97514a 100644 --- a/lib_enc/sig_clas_fx.c +++ b/lib_enc/sig_clas_fx.c @@ -50,6 +50,236 @@ Word16 signal_clas_fx( /* o : classification for current const Word16 L_look, /* i : look-ahead */ Word16 *clas_mod /* o : class flag for NOOP detection */ ) +{ + Word32 Ltmp; + Word16 mean_voi2, een, corn, zcn, relEn, pcn, fmerit1; + Word16 i, clas, pc, zc, lo, lo2, hi, hi2, exp_ee, frac_ee; + Word16 tmp16, tmpS; + const Word16 *pt1; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + /*----------------------------------------------------------------* + * Calculate average voicing + * Calculate average spectral tilt + * Calculate zero-crossing rate + * Calculate pitch stability + *----------------------------------------------------------------*/ + + /* average voicing on second half-frame and look-ahead */ + Ltmp = L_mult( st->voicing_fx[1], 16384 ); /* Q15*Q14->Q30 */ + mean_voi2 = mac_r( Ltmp, st->voicing_fx[2], 16384 ); + + /* average spectral tilt in dB */ + lo = L_Extract_lc( ee[0], &hi ); + lo2 = L_Extract_lc( ee[1], &hi2 ); + Ltmp = L_mult( lo, lo2 ); /* Q5*Q5->Q11 */ + + test(); + test(); + IF( LT_32( Ltmp, 2048 ) ) + { + een = 0; + move16(); + } + ELSE IF( GT_32( Ltmp, THRES_EEN ) || hi > 0 || hi2 > 0 ) + { + een = 512; + move16(); + } + ELSE + { + /* mean_ee2 = 0.5f * 20.0f * (float)log10( tmp ); */ + /* een = K_EE_ENC * mean_ee2 + C_EE_ENC; */ + exp_ee = norm_l( Ltmp ); + frac_ee = Log2_norm_lc( L_shl( Ltmp, exp_ee ) ); + exp_ee = sub( 30 - 11, exp_ee ); + Ltmp = Mpy_32_16( exp_ee, frac_ee, LG10 ); /* Ltmp Q14 */ + een = round_fx( L_shl( Ltmp, 16 - 5 ) ); /* Q14 -> Q9 */ + een = mac_r( C_EE_FX, een, K_EE_FX ); + } + /* compute zero crossing rate */ + pt1 = speech + sub( L_look, 1 ); + tmpS = shr( *pt1, 15 ); /* sets 'tmpS to -1 if *pt1 < 0 */ + Ltmp = L_deposit_l( 0 ); + FOR( i = 0; i < L_FRAME; i++ ) + { + tmp16 = add( 1, tmpS ); + pt1++; + tmpS = shr( *pt1, 15 ); /* pt1 >=0 ---> 0 OTHERWISE -1 */ + Ltmp = L_msu0( Ltmp, tmpS, tmp16 ); + } + zc = extract_l( Ltmp ); + + /* compute pitch stability */ + pc = add( abs_s( sub( st->pitch[1], st->pitch[0] ) ), abs_s( sub( st->pitch[2], st->pitch[1] ) ) ); + st->tdm_pc = pc; + move16(); + /*-----------------------------------------------------------------* + * Transform parameters to the range <0:1> + * Compute the merit function + *-----------------------------------------------------------------*/ + + /* corn = K_COR * mean_voi2 + C_COR */ + Ltmp = L_mult( C_COR_FX, 32767 ); + corn = round_fx( L_shl( L_mac( Ltmp, mean_voi2, K_COR_FX ), -4 ) ); /*Q13+Q13*Q15 =>Q13->Q9*/ + /* Limit [0, 1] */ + corn = s_max( corn, 0 ); + corn = s_min( corn, 512 ); + + Ltmp = L_mult( C_ZC_FX, 4 ); /*Q13*Q2 -> Q16*/ + zcn = round_fx( L_shl( L_mac( Ltmp, zc, K_ZC_FX ), 16 - 7 ) ); /*Q0*Q15 + Q16*/ + /* Limit [0, 1] */ + zcn = s_max( zcn, 0 ); + zcn = s_min( zcn, 512 ); + + Ltmp = L_mult( C_RELE_FX, 256 ); /*Q15*Q8 ->Q24*/ + relEn = round_fx( L_shl( L_mac( Ltmp, relE, K_RELE_FX ), 1 ) ); /*relE in Q8 but relEn in Q9*/ + /* Limit [0.5, 1] */ + relEn = s_max( relEn, 256 ); + relEn = s_min( relEn, 512 ); + + Ltmp = L_mult( C_PC_FX, 2 ); /*Q14*Q1 -> Q16*/ + pcn = round_fx( L_shl( L_mac( Ltmp, pc, K_PC_FX ), 16 - 7 ) ); /*Q16 + Q0*Q15*/ + /* Limit [0, 1] */ + pcn = s_max( pcn, 0 ); + pcn = s_min( pcn, 512 ); + + Ltmp = L_mult( een, 10923 ); + Ltmp = L_mac( Ltmp, corn, 21845 ); + Ltmp = L_mac( Ltmp, zcn, 10923 ); + Ltmp = L_mac( Ltmp, relEn, 10923 ); + Ltmp = L_mac( Ltmp, pcn, 10923 ); + + fmerit1 = round_fx_o( L_shl_o( Ltmp, 16 - 10 - 1, &Overflow ), &Overflow ); /* fmerit1 ->Q15 */ + + /*-----------------------------------------------------------------* + * FEC classification + *-----------------------------------------------------------------*/ + + st->fmerit_dt = sub( st->prev_fmerit, fmerit1 ); /*Q15*/ + move16(); + st->prev_fmerit = fmerit1; + move16(); + + /* FEC classification */ + test(); + test(); + IF( st->localVAD == 0 || EQ_16( st->coder_type, UNVOICED ) || LT_16( relE, -1536 ) ) + { + clas = UNVOICED_CLAS; + *clas_mod = clas; + move16(); + move16(); + } + ELSE + { + SWITCH( st->last_clas ) + { + case VOICED_CLAS: + case ONSET: + case VOICED_TRANSITION: + + IF( LT_16( fmerit1, 16056 ) ) /*0.49f*/ + { + clas = UNVOICED_CLAS; + move16(); + } + ELSE IF( LT_16( fmerit1, 21626 ) ) /*0.66*/ + { + clas = VOICED_TRANSITION; + move16(); + } + ELSE + { + clas = VOICED_CLAS; + move16(); + } + IF( LT_16( fmerit1, 14745 /* 0.45f*/ ) ) + { + *clas_mod = UNVOICED_CLAS; + move16(); + } + ELSE IF( LT_16( fmerit1, 21626 /* 0.66f*/ ) ) + { + *clas_mod = VOICED_TRANSITION; + move16(); + } + ELSE + { + *clas_mod = VOICED_CLAS; + move16(); + } + BREAK; + + case UNVOICED_CLAS: + case UNVOICED_TRANSITION: + IF( GT_16( fmerit1, 20643 ) ) /*0.63*/ + { + clas = ONSET; + move16(); + } + ELSE IF( GT_16( fmerit1, 19169 ) ) /*0.585*/ + { + clas = UNVOICED_TRANSITION; + move16(); + } + ELSE + { + clas = UNVOICED_CLAS; + move16(); + } + *clas_mod = clas; + move16(); + + BREAK; + + default: + clas = UNVOICED_CLAS; + *clas_mod = clas; + move16(); + move16(); + BREAK; + } + } + /* Onset classification */ + + /* tc_cnt == -1: frame after TC frame in continuous block of GC/VC frames */ + /* tc_cnt == 0: UC frame */ + /* tc_cnt == 1: onset/transition frame, coded by GC coder type */ + /* tc_cnt == 2: frame after onset/transition frame, coded by TC coder type */ + + if ( clas == 0 ) + { + st->tc_cnt = 0; + move16(); + } + + test(); + IF( GE_16( clas, VOICED_TRANSITION ) && st->tc_cnt >= 0 ) + { + st->tc_cnt = add( st->tc_cnt, 1 ); + move16(); + } + + if ( GT_16( st->tc_cnt, 2 ) ) + { + st->tc_cnt = -1; + move16(); + } + return clas; +} + +Word16 signal_clas_ivas_fx( /* o : classification for current frames */ + Encoder_State *st, /* i/o: encoder state structure */ + const Word16 *speech, /* i : pointer to speech signal for E computation in Qx */ + const Word32 *ee, /* i : lf/hf E ration for 2 half-frames in Q6 */ + const Word16 relE, /* i : frame relative E to the long term average in Q8 */ + const Word16 L_look, /* i : look-ahead */ + Word16 *clas_mod /* o : class flag for NOOP detection */ +) { Word32 Ltmp; Word16 mean_voi2, een, corn, zcn, relEn, pcn, fmerit1; @@ -273,6 +503,7 @@ Word16 signal_clas_fx( /* o : classification for current } return clas; } + /*-------------------------------------------------------------------* * select_TC_fx() * -- GitLab From fdd58b16039c3a097cbbc044684fcd88f2986254 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 29 Apr 2025 16:35:26 +0530 Subject: [PATCH 453/698] Fix for 3GPP issue 1461: Issue with VAD sensitivity in SBA DTX mode at 48 and 80 kbps Link #1461 --- lib_enc/vad_fx.c | 73 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 19 deletions(-) diff --git a/lib_enc/vad_fx.c b/lib_enc/vad_fx.c index 1fdcb94fa..531265236 100644 --- a/lib_enc/vad_fx.c +++ b/lib_enc/vad_fx.c @@ -213,6 +213,29 @@ void wb_vad_init_ivas_fx( * * accumulate snr_sum with significance thresholds *-----------------------------------------------------------------*/ +static void sign_thr_snr_acc_ivas_fx( + Word32 *L_snr_sum, /* o: q_snr_sum */ + Word16 *q_snr_sum, + Word32 L_snr, /* i: q_snr */ + Word16 q_snr, + Word32 sign_thr, /* i: q_snr */ + Word32 min_snr /* i: q_snr */ +) +{ + /*if( snr >= sign_thr ) */ + Word32 L_tmp; + Word16 exp_snr_sum = sub( 31, *q_snr_sum ); + L_tmp = min_snr; + move32(); + IF( GE_32( L_snr, sign_thr ) ) + { + L_tmp = L_add( L_snr, 0 ); /* q_snr */ + } + *L_snr_sum = BASOP_Util_Add_Mant32Exp( *L_snr_sum, exp_snr_sum, L_tmp, sub( 31, q_snr ), &exp_snr_sum ); /* q_snr */ + *q_snr_sum = sub( 31, exp_snr_sum ); + move32(); + move32(); +} static void sign_thr_snr_acc_fx( Word32 *L_snr_sum, /* o: Q4 */ Word32 L_snr, /* i: Q4 */ @@ -2186,6 +2209,10 @@ Word16 wb_vad_ivas_fx( L_snr_sum = L_deposit_l( 0 ); L_snr_sum_HE_SAD = L_deposit_l( 0 ); + Word16 q_snr_sum = 0; + Word16 q_snr_sum_HE_SAD = 0; + move16(); + move16(); snr_sumt = 0; move16(); L_mssnr_hov = L_deposit_l( 0 ); @@ -2199,7 +2226,7 @@ Word16 wb_vad_ivas_fx( q_snr = 0; move16(); move16(); - q_shift = add( sub( q_fr_bands, hNoiseEst->q_bckr ), 15 - 4 ); + q_shift = add( sub( q_fr_bands, hNoiseEst->q_bckr ), 14 - 4 ); FOR( i = st_fx->min_band; i <= st_fx->max_band; i++ ) { ftmp = L_add( *pt1++, 0 ); @@ -2207,12 +2234,12 @@ Word16 wb_vad_ivas_fx( ftmp2 = L_add( *pt3++, 0 ); /*fr_enr = ( 0.2f * st->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 );*/ - L_tmp = Mult_32_16( hNoiseEst->enrO_fx[i], 13107 ); /* L_tmp(high word) = Qenr0fx*Q16+1 -16 -> Qener0+1 */ - L_tmp1 = Madd_32_16( L_tmp, ftmp, 26214 ); /* 26214 = .4 in Q16 */ - L_tmp1 = Madd_32_16( L_tmp1, ftmp1, 26214 ); /* L_tmp1 re_used a bit later for final snr[i]*/ + L_tmp = Mult_32_16( hNoiseEst->enrO_fx[i], 6554 ); /* L_tmp(high word) = Qenr0fx*Q15+1 -16 -> Qener0 */ + L_tmp1 = Madd_32_16( L_tmp, ftmp, 13107 ); /* 13107 = .4 in Q15 */ + L_tmp1 = Madd_32_16( L_tmp1, ftmp1, 13107 ); /* L_tmp1 re_used a bit later for final snr[i]*/ - L_tmp2 = Madd_32_16( L_tmp, ftmp, 19661 ); /* 19661 = 0.3 in Q16 */ - L_tmp2 = Msub_32_16( L_tmp2, ftmp1, -32768 ); /* -32768= -0.5 in Q16 */ + L_tmp2 = Madd_32_16( L_tmp, ftmp, 9830 ); /* 9830 = 0.3 in Q15 */ + L_tmp2 = Msub_32_16( L_tmp2, ftmp1, -16384 ); /* -16384= -0.5 in Q15 */ IF( GT_32( ftmp, ftmp1 ) ) { @@ -2221,12 +2248,12 @@ Word16 wb_vad_ivas_fx( IF( ftmp2 != 0 ) { e_num = norm_l( L_tmp1 ); - m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+1+e_num-16 + m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+e_num-16 e_noise = norm_l( ftmp2 ); m_noise_local = extract_h( L_shl( ftmp2, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 - m_num = shr( m_num, 1 ); // q_fr_bands+e_num-16 + m_num = shr( m_num, 1 ); // q_fr_bands-1+e_num-16 shift_snr = add( sub( e_num, e_noise ), q_shift ); snr_tmp = div_s( m_num, m_noise_local ); // q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise @@ -2234,7 +2261,7 @@ Word16 wb_vad_ivas_fx( } ELSE { - L_snr = L_shr_o( L_tmp1, sub( Q3, q_fr_bands ), &Overflow ); // q_fr_bands+1 -> Q4 + L_snr = L_shl_o( L_tmp1, sub( Q4, q_fr_bands ), &Overflow ); // q_fr_bands -> Q4 } } ELSE @@ -2244,12 +2271,12 @@ Word16 wb_vad_ivas_fx( IF( ftmp2 != 0 ) { e_num = norm_l( L_tmp2 ); - m_num = extract_h( L_shl( L_tmp2, e_num ) ); // q_fr_bands+1+e_num-16 + m_num = extract_h( L_shl( L_tmp2, e_num ) ); // q_fr_bands+e_num-16 e_noise = norm_l( ftmp2 ); m_noise_local = extract_h( L_shl( ftmp2, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 - m_num = shr( m_num, 1 ); // q_fr_bands+e_num-16 + m_num = shr( m_num, 1 ); // q_fr_bands-1+e_num-16 shift_snr = add( sub( e_num, e_noise ), q_shift ); snr_tmp = div_s( m_num, m_noise_local ); // q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise @@ -2257,7 +2284,7 @@ Word16 wb_vad_ivas_fx( } ELSE { - L_snr = L_shr_o( L_tmp2, sub( Q3, q_fr_bands ), &Overflow ); // q_fr_bands+1 -> Q4 + L_snr = L_shl_o( L_tmp2, sub( Q4, q_fr_bands ), &Overflow ); // q_fr_bands -> Q4 } } @@ -2350,25 +2377,31 @@ Word16 wb_vad_ivas_fx( IF( hNoiseEst->bckr_fx[i] != 0 ) { e_num = sub( norm_l( L_tmp1 ), 1 ); - m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+1+e_num-16 + m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+e_num-16 e_noise = norm_l( hNoiseEst->bckr_fx[i] ); m_noise_local = extract_h( L_shl( hNoiseEst->bckr_fx[i], e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 L_snr_tmp = L_deposit_h( div_s( m_num, m_noise_local ) ); // 32+q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise - q_snr_tmp = add( 32, sub( add( q_fr_bands, e_num ), add( hNoiseEst->q_bckr, e_noise ) ) ); + q_snr_tmp = add( 31, sub( add( q_fr_bands, e_num ), add( hNoiseEst->q_bckr, e_noise ) ) ); } ELSE { - L_snr_tmp = Mpy_32_16_1( L_tmp1, 18286 /* 1/E_MIN in Q6 */ ); // q_fr_bands-8 - q_snr_tmp = sub( q_fr_bands, 8 ); + L_snr_tmp = Mpy_32_16_1( L_tmp1, 18286 /* 1/E_MIN in Q6 */ ); // q_fr_bands-9 + q_snr_tmp = sub( q_fr_bands, 9 ); } /* conditional snrsum, snr_sum = snr_sum + snr[i];*/ + IF( GT_16( q_snr_tmp, 28 ) ) // added to avoid overflow while scaling sign_thr_HE_SAD,min_snr_HE_SAD,sign_thr and min_snr while scaling to q_snr_tmp + { + L_snr_tmp = L_shl( L_snr_tmp, sub( 28, q_snr_tmp ) ); + q_snr_tmp = 28; + move16(); + } exp = sub( Q4, q_snr_tmp ); L_snr = L_shl_sat( L_snr_tmp, exp ); // Q4 - sign_thr_snr_acc_fx( &L_snr_sum_HE_SAD, L_snr, sign_thr_HE_SAD, min_snr_HE_SAD ); - sign_thr_snr_acc_fx( &L_snr_sum, L_snr, sign_thr, min_snr ); + sign_thr_snr_acc_ivas_fx( &L_snr_sum_HE_SAD, &q_snr_sum_HE_SAD, L_snr_tmp, q_snr_tmp, L_shl( sign_thr_HE_SAD, sub( q_snr_tmp, 4 ) ), L_shl( min_snr_HE_SAD, sub( q_snr_tmp, 4 ) ) ); + sign_thr_snr_acc_ivas_fx( &L_snr_sum, &q_snr_sum, L_snr_tmp, q_snr_tmp, L_shl( sign_thr, sub( q_snr_tmp, 4 ) ), L_shl( min_snr, sub( q_snr_tmp, 4 ) ) ); /* if( snr[i] < 1.0f ) { snr[i] = 1.0f;} */ IF( LT_32( L_snr, 16 /* 1.0 in Q4 */ ) ) @@ -2412,7 +2445,9 @@ Word16 wb_vad_ivas_fx( move16(); move16(); } - } /* end of band loop */ + } /* end of band loop */ + L_snr_sum = L_shl_o( L_snr_sum, sub( 4, q_snr_sum ), &Overflow ); // q_snr_sum->q4 + L_snr_sum_HE_SAD = L_shl_o( L_snr_sum_HE_SAD, sub( 4, q_snr_sum_HE_SAD ), &Overflow ); // q_snr_sum_HE_SAD->q4 L_snr_outlier = L_shl_sat( L_snr_outlier, sub( Q4, q_snr ) ); // q_snr -> Q4 snr_sumt = extract_h( L_shl( L_snr_sumt, Q4 ) ); // Q16 -> Q4 -- GitLab From 5785fc2be7ec1c0b9b3900ad02fe5e561311ba53 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 29 Apr 2025 13:20:37 +0200 Subject: [PATCH 454/698] made 1st parameter const - fix msvc warning fixed two more warnings 'uninitialized local variable' --- lib_com/swb_tbe_com_fx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5631dfa94..ae5fb0323 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -6701,7 +6701,7 @@ void wb_tbe_extras_reset_synth_fx( void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - int16_t element_mode, + const int16_t element_mode, #endif #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic Word16 IsUpsampled3, @@ -7360,8 +7360,8 @@ void synthesise_fb_high_band_fx( { #ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - Word32 L_tmp32; - Word16 tmp16; + Word32 L_tmp32 = L_add(0,0); + Word16 tmp16 = add( 0, 0 ); // if (L_tmp < 0) if ( L_tmp < 0 ) -- GitLab From 5f81a24eba14c191d0af5d8b02c27a713948c07e Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 29 Apr 2025 15:16:40 +0200 Subject: [PATCH 455/698] fix formatting --- lib_com/swb_tbe_com_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index ae5fb0323..a3a18e32c 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7360,7 +7360,7 @@ void synthesise_fb_high_band_fx( { #ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - Word32 L_tmp32 = L_add(0,0); + Word32 L_tmp32 = L_add( 0, 0 ); Word16 tmp16 = add( 0, 0 ); // if (L_tmp < 0) -- GitLab From 20e7299b27635e3b3f7a8e55f2274a5f2f672450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20M=C3=BCller?= Date: Tue, 29 Apr 2025 16:44:20 +0200 Subject: [PATCH 456/698] Restore old base rules from BASOP branch Should re-introduce the expected behavior for BASOP builds. --- .gitlab-ci.yml | 1 + .gitlab-ci/rules-basis.yml | 53 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 .gitlab-ci/rules-basis.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb2259810..e03f48d00 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,7 @@ variables: include: - local: .gitlab-ci/variables.yml + - local: .gitlab-ci/rules-basis.yml - project: ivas-codec-pc/ivas-codec-ci ref: *IVAS_CODEC_CI_REF file: main.yml diff --git a/.gitlab-ci/rules-basis.yml b/.gitlab-ci/rules-basis.yml new file mode 100644 index 000000000..c650f574a --- /dev/null +++ b/.gitlab-ci/rules-basis.yml @@ -0,0 +1,53 @@ +# overwrites the default rules in the IVAS CI repository +# should be refactored and unified +.rules-basis: + rules: + # see https://docs.gitlab.com/ee/ci/yaml/workflow.html#switch-between-branch-pipelines-and-merge-request-pipelines + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push" + when: never + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + variables: + IVAS_PIPELINE_NAME: 'MR pipeline: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME' + ### disabled for now because pipeline cd is redundant with MR pipeline with current workflow + # - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main + # variables: + # IVAS_PIPELINE_NAME: 'Push pipeline: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'default' # for testing + variables: + IVAS_PIPELINE_NAME: 'Web run pipeline: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare' + variables: + IVAS_PIPELINE_NAME: 'Run comparison tools against float ref: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-enc-dmx' + variables: + IVAS_PIPELINE_NAME: 'Run encoder dmx comparison against float ref: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-long' + variables: + IVAS_PIPELINE_NAME: 'Run comparison tools against float ref (long test vectors): $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-compare-to-input' + variables: + IVAS_PIPELINE_NAME: 'Run comparison tools against input (pass-through only): $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-saturation-smoke-test' + variables: + IVAS_PIPELINE_NAME: 'Run saturation smoke-test: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'evs-26444' + variables: + IVAS_PIPELINE_NAME: 'EVS 26.444 test: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'sanitizer' + variables: + IVAS_PIPELINE_NAME: 'Short testvectors sanitizers' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'pytest-renderer' + variables: + IVAS_PIPELINE_NAME: 'Renderer test: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'complexity' + variables: + IVAS_PIPELINE_NAME: 'Complexity Measurement on $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'voip-be-test' + variables: + IVAS_PIPELINE_NAME: 'Voip BE test on $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'peaq-enc-passthrough' + variables: + IVAS_PIPELINE_NAME: 'PEAQ encoder pass-through test: $CI_COMMIT_BRANCH' + - if: $CI_PIPELINE_SOURCE == 'schedule' # Scheduled in any branch + variables: + IVAS_PIPELINE_NAME: 'Scheduled pipeline: $CI_COMMIT_BRANCH' -- GitLab From e6c34b93f38f223762245d4b2b25dadb766cfcaa Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Tue, 29 Apr 2025 17:15:38 +0200 Subject: [PATCH 457/698] Port Issue 947 : NONBE_FIX_947_STEREO_DMX_EVS_POC and NONBE_FIX_947_STEREO_DMX_EVS_PHA. --- lib_com/options.h | 3 + lib_enc/ivas_rom_enc.h | 6 + lib_enc/ivas_rom_enc_fx.c | 110 +++ lib_enc/ivas_stat_enc.h | 35 + lib_enc/ivas_stereo_dmx_evs_fx.c | 1126 +++++++++++++++++++++++++++++- 5 files changed, 1246 insertions(+), 34 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3ad74ec35..9829b1975 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -98,6 +98,9 @@ #define NONBE_FIX_949_MC_5MS_FRAMING /*Dlb: Issue 949: fix for 5ms framing/rendering in MC mode */ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ +#define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ +#define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ + /* #################### End BASOP porting switches ############################ */ #endif diff --git a/lib_enc/ivas_rom_enc.h b/lib_enc/ivas_rom_enc.h index 0d0941cc4..53fa3fd09 100644 --- a/lib_enc/ivas_rom_enc.h +++ b/lib_enc/ivas_rom_enc.h @@ -111,9 +111,15 @@ extern const UWord16 ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE] /*----------------------------------------------------------------------------------* * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ + #ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC + extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1]; + extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1]; + extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1]; + #else extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4]; extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 4]; extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 4]; +#endif extern const Word32 Stereo_dmx_wnd_coef_32k_fx[L_FRAME32k]; extern const Word32 Stereo_dmx_wnd_coef_48k_fx[L_FRAME48k]; /*----------------------------------------------------------------------------------* diff --git a/lib_enc/ivas_rom_enc_fx.c b/lib_enc/ivas_rom_enc_fx.c index b26972b8a..9b1b4dd23 100644 --- a/lib_enc/ivas_rom_enc_fx.c +++ b/lib_enc/ivas_rom_enc_fx.c @@ -508,6 +508,114 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q /*----------------------------------------------------------------------------------* * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ + + #ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC +// Q31 + const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1] = { + 204411, 817566, 1839231, 3269018, 5106382, 7350624, 10000889, 13056168, 16515298, 20376962, + 24639688, 29301856, 34361688, 39817260, 45666492, 51907160, 58536884, 65553148, 72953272, 80734440, + 88893688, 97427912, 106333872, 115608160, 125247248, 135247472, 145605040, 156315968, 167376224, 178781552, + 190527648, 202610016, 215024064, 227765072, 240828160, 254208400, 267900656, 281899744, 296200320, 310796928, + 325684032, 340855968, 356306944, 372031072, 388022368, 404274752, 420782016, 437537920, 454536032, 471769920, + 489232992, 506918624, 524820096, 542930496, 561243072, 579750720, 598446528, 617323264, 636373760, 655590784, + 674967040, 694495104, 714167552, 733976960, 753915712, 773976192, 794150848, 814431936, 834811776, 855282624, + 875836544, 896465920, 917162752, 937919168, 958727360, 979579264, 1000467072, 1021382784, 1042318400, 1063266048, + 1084217599, 1105165183, 1126100863, 1147016575, 1167904383, 1188756351, 1209564415, 1230320895, 1251017727, 1271647103, + 1292201087, 1312671871, 1333051647, 1353332735, 1373507455, 1393567999, 1413506687, 1433316095, 1452988543, 1472516607, + 1491892863, 1511109887, 1530160383, 1549037183, 1567732863, 1586240511, 1604553087, 1622663551, 1640564991, 1658250623, + 1675713663, 1692947583, 1709945727, 1726701567, 1743208959, 1759461247, 1775452543, 1791176703, 1806627711, 1821799551, + 1836686719, 1851283327, 1865583871, 1879582975, 1893275263, 1906655487, 1919718527, 1932459519, 1944873599, 1956956031, + 1968702079, 1980107391, 1991167615, 2001878655, 2012236159, 2022236415, 2031875455, 2041149823, 2050055679, 2058589951, + 2066749183, 2074530431, 2081930495, 2088946815, 2095576447, 2101817215, 2107666431, 2113121919, 2118181759, 2122843903, + 2127106687, 2130968319, 2134427519, 2137482751, 2140132991, 2142377215, 2144214655, 2145644415, 2146666111, 2147279231 + }; + // Q31 + const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1] = { + 51423, 205686, 462776, 822667, 1285325, 1850705, 2518754, 3289407, 4162591, 5138222, + 6216206, 7396441, 8678813, 10063200, 11549468, 13137475, 14827070, 16618091, 18510366, 20503712, + 22597942, 24792852, 27088232, 29483864, 31979518, 34574956, 37269924, 40064172, 42957428, 45949412, + 49039844, 52228420, 55514844, 58898792, 62379948, 65957972, 69632528, 73403256, 77269800, 81231792, + 85288840, 89440576, 93686584, 98026464, 102459800, 106986176, 111605144, 116316264, 121119096, 126013168, + 130998016, 136073168, 141238128, 146492400, 151835488, 157266880, 162786064, 168392496, 174085632, 179864960, + 185729888, 191679888, 197714368, 203832752, 210034448, 216318896, 222685456, 229133536, 235662512, 242271760, + 248960656, 255728544, 262574784, 269498720, 276499680, 283577024, 290730048, 297958048, 305260384, 312636288, + 320085120, 327606144, 335198624, 342861856, 350595072, 358397568, 366268576, 374207360, 382213120, 390285152, + 398422624, 406624768, 414890848, 423220000, 431611456, 440064448, 448578112, 457151680, 465784288, 474475136, + 483223360, 492028160, 500888704, 509804096, 518773504, 527796064, 536870912, 545997184, 555174016, 564400512, + 573675776, 582998976, 592369152, 601785472, 611246976, 620752768, 630301952, 639893568, 649526784, 659200640, + 668914176, 678666496, 688456704, 698283776, 708146816, 718044864, 727976960, 737942208, 747939584, 757968192, + 768027072, 778115200, 788231680, 798375424, 808545600, 818741184, 828961216, 839204672, 849470528, 859757952, + 870065856, 880393216, 890739136, 901102592, 911482560, 921878080, 932288192, 942711808, 953147968, 963595648, + 974053952, 984521728, 994998080, 1005481984, 1015972480, 1026468416, 1036968960, 1047472960, 1057979520, 1068487552, + 1078996095, 1089504127, 1100010751, 1110514687, 1121015167, 1131511167, 1142001663, 1152485503, 1162961919, 1173429759, + 1183887999, 1194335743, 1204771839, 1215195519, 1225605503, 1236001023, 1246381055, 1256744447, 1267090431, 1277417855, + 1287725695, 1298013055, 1308279039, 1318522495, 1328742399, 1338937983, 1349108223, 1359251967, 1369368447, 1379456639, + 1389515391, 1399544063, 1409541503, 1419506687, 1429438847, 1439336831, 1449199871, 1459026943, 1468817151, 1478569471, + 1488283007, 1497956863, 1507590015, 1517181695, 1526730879, 1536236671, 1545698175, 1555114495, 1564484735, 1573807871, + 1583083135, 1592309631, 1601486463, 1610612735, 1619687551, 1628710143, 1637679615, 1646594943, 1655455487, 1664260223, + 1673008511, 1681699327, 1690332031, 1698905471, 1707419135, 1715872127, 1724263679, 1732592767, 1740858879, 1749060991, + 1757198463, 1765270527, 1773276287, 1781215103, 1789086079, 1796888575, 1804621823, 1812285055, 1819877503, 1827398527, + 1834847359, 1842223231, 1849525631, 1856753663, 1863906687, 1870983935, 1877984895, 1884908927, 1891755135, 1898523007, + 1905211903, 1911821183, 1918350079, 1924798207, 1931164799, 1937449215, 1943650943, 1949769343, 1955803775, 1961753727, + 1967618687, 1973398015, 1979091199, 1984697599, 1990216703, 1995648127, 2000991231, 2006245503, 2011410431, 2016485631, + 2021470463, 2026364543, 2031167359, 2035878527, 2040497535, 2045023871, 2049457151, 2053797119, 2058043135, 2062194815, + 2066251903, 2070213887, 2074080383, 2077851135, 2081525631, 2085103743, 2088584831, 2091968767, 2095255167, 2098443775, + 2101534207, 2104526207, 2107419519, 2110213759, 2112908671, 2115504127, 2117999743, 2120395391, 2122690815, 2124885759, + 2126979967, 2128973311, 2130865535, 2132656639, 2134346111, 2135934207, 2137420415, 2138804863, 2140087167, 2141267455, + 2142345471, 2143321087, 2144194303, 2144964863, 2145632895, 2146198271, 2146660991, 2147020927, 2147277951, 2147432191 + }; + // Q31 + const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1] = { + 22902, 91608, 206114, 366416, 572507, 824378, 1122018, 1465415, 1854554, 2289418, + 2769989, 3296246, 3868167, 4485728, 5148901, 5857660, 6611973, 7411808, 8257132, 9147909, + 10084099, 11065664, 12092561, 13164746, 14282175, 15444799, 16652568, 17905432, 19203336, 20546226, + 21934042, 23366728, 24844222, 26366462, 27933380, 29544910, 31200986, 32901534, 34646484, 36435760, + 38269288, 40146984, 42068776, 44034576, 46044300, 48097868, 50195188, 52336168, 54520724, 56748756, + 59020172, 61334876, 63692768, 66093744, 68537712, 71024552, 73554176, 76126456, 78741304, 81398592, + 84098208, 86840048, 89623984, 92449904, 95317680, 98227200, 101178336, 104170952, 107204936, 110280144, + 113396456, 116553736, 119751848, 122990656, 126270024, 129589808, 132949864, 136350064, 139790240, 143270256, + 146789968, 150349232, 153947888, 157585760, 161262736, 164978624, 168733280, 172526544, 176358256, 180228256, + 184136368, 188082416, 192066256, 196087712, 200146592, 204242752, 208376000, 212546160, 216753072, 220996528, + 225276352, 229592384, 233944432, 238332288, 242755792, 247214752, 251708960, 256238240, 260802384, 265401216, + 270034528, 274702112, 279403808, 284139392, 288908640, 293711360, 298547360, 303416448, 308318400, 313252960, + 318220000, 323219264, 328250528, 333313632, 338408288, 343534304, 348691488, 353879616, 359098432, 364347744, + 369627296, 374936928, 380276320, 385645312, 391043680, 396471168, 401927520, 407412544, 412925984, 418467616, + 424037216, 429634528, 435259328, 440911328, 446590336, 452296128, 458028416, 463786944, 469571520, 475381856, + 481217728, 487078848, 492965024, 498875968, 504811424, 510771168, 516754912, 522762432, 528793440, 534847712, + 540924928, 547024960, 553147392, 559292032, 565458624, 571646912, 577856640, 584087488, 590339264, 596611584, + 602904320, 609217152, 615549760, 621901888, 628273344, 634663808, 641072960, 647500608, 653946432, 660410176, + 666891520, 673390208, 679906048, 686438592, 692987712, 699553088, 706134400, 712731392, 719343808, 725971328, + 732613696, 739270592, 745941760, 752626880, 759325760, 766038016, 772763456, 779501696, 786252480, 793015488, + 799790528, 806577216, 813375360, 820184576, 827004608, 833835136, 840675968, 847526656, 854387072, 861256832, + 868135616, 875023168, 881919232, 888823488, 895735616, 902655296, 909582336, 916516352, 923457088, 930404224, + 937357504, 944316544, 951281152, 958250944, 965225728, 972205056, 979188800, 986176512, 993168000, 1000162880, + 1007160960, 1014161856, 1021165248, 1028170944, 1035178560, 1042187776, 1049198400, 1056210048, 1063222464, 1070235328, + 1077248383, 1084261119, 1091273599, 1098285183, 1105295871, 1112305151, 1119312767, 1126318335, 1133321855, 1140322687, + 1147320703, 1154315647, 1161307135, 1168294911, 1175278591, 1182257919, 1189232639, 1196202495, 1203167103, 1210126207, + 1217079423, 1224026495, 1230967295, 1237901311, 1244828287, 1251748095, 1258660223, 1265564415, 1272460415, 1279348095, + 1286226815, 1293096575, 1299956991, 1306807679, 1313648511, 1320479103, 1327299071, 1334108287, 1340906367, 1347693183, + 1354468095, 1361231231, 1367981951, 1374720255, 1381445631, 1388157823, 1394856703, 1401541887, 1408213119, 1414870015, + 1421512319, 1428139903, 1434752255, 1441349247, 1447930623, 1454495871, 1461044991, 1467577599, 1474093439, 1480592127, + 1487073535, 1493537151, 1499982975, 1506410623, 1512819839, 1519210239, 1525581695, 1531933951, 1538266495, 1544579327, + 1550872063, 1557144447, 1563396095, 1569627007, 1575836671, 1582024959, 1588191615, 1594336255, 1600458751, 1606558719, + 1612635903, 1618690175, 1624721279, 1630728703, 1636712447, 1642672255, 1648607743, 1654518655, 1660404735, 1666265983, + 1672101759, 1677912191, 1683696639, 1689455231, 1695187583, 1700893311, 1706572287, 1712224383, 1717849087, 1723446399, + 1729016063, 1734557695, 1740071167, 1745556095, 1751012479, 1756439935, 1761838335, 1767207295, 1772546687, 1777856383, + 1783135871, 1788385151, 1793604095, 1798792191, 1803949311, 1809075327, 1814169983, 1819233151, 1824264319, 1829263615, + 1834230655, 1839165311, 1844067199, 1848936319, 1853772287, 1858574975, 1863344255, 1868079871, 1872781567, 1877449087, + 1882082431, 1886681215, 1891245439, 1895774719, 1900268927, 1904727807, 1909151359, 1913539199, 1917891199, 1922207231, + 1926487167, 1930730623, 1934937471, 1939107583, 1943240831, 1947337087, 1951395967, 1955417343, 1959401215, 1963347327, + 1967255423, 1971125375, 1974957055, 1978750335, 1982504959, 1986220927, 1989897855, 1993535743, 1997134463, 2000693631, + 2004213375, 2007693439, 2011133567, 2014533759, 2017893887, 2021213567, 2024493055, 2027731839, 2030929919, 2034087167, + 2037203455, 2040278655, 2043312639, 2046305279, 2049256447, 2052166015, 2055033727, 2057859711, 2060643583, 2063385471, + 2066085119, 2068742399, 2071357183, 2073929471, 2076459135, 2078945919, 2081389951, 2083790847, 2086148735, 2088463487, + 2090734847, 2092962943, 2095147519, 2097288447, 2099385727, 2101439359, 2103449087, 2105414911, 2107336703, 2109214335, + 2111047935, 2112837119, 2114582143, 2116282623, 2117938687, 2119550207, 2121117183, 2122639487, 2124116863, 2125549567, + 2126937471, 2128280319, 2129578239, 2130831103, 2132038911, 2133201535, 2134318847, 2135391103, 2136418047, 2137399551, + 2138335743, 2139226495, 2140071807, 2140871679, 2141625983, 2142334719, 2142997887, 2143615487, 2144187391, 2144713599, + 2145194239, 2145629055, 2146018175, 2146361599, 2146659327, 2146911103, 2147117183, 2147277567, 2147391999, 2147460735 + }; + #else // Q31 const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4] = { 3309988, 29667578, 81733728, 158226416, 257262128, 376402368, 512713184, 662838656, 823081792, 989497088, @@ -529,6 +637,8 @@ const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 4] = { 1634770560, 1681915904, 1727394560, 1771081600, 1812856960, 1852606720, 1890221568, 1925598592, 1958640640, 1989257344, 2017364480, 2042885504, 2065750016, 2085895424, 2103266688, 2117816064, 2129503616, 2138297728, 2144173568, 2147115776 }; +#endif + // Q31 const Word32 Stereo_dmx_wnd_coef_32k_fx[L_FRAME32k] = { 5270712, 15812011, 26352928, 36893212, 47432604, 57970856, 68507712, 79042912, 89576208, 100107344, diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index f5dddcb77..e1390dc78 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -1180,7 +1180,9 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure typedef struct stereo_dmx_evs_correlation_filter_structure { +#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA Word16 init_frmCntr; +#endif Word32 isd_rate_s_fx; // Q31 Word32 iccr_s_fx; // Q31 @@ -1204,6 +1206,18 @@ typedef struct stereo_dmx_evs_correlation_filter_structure STEREO_DMX_EVS_PHA prev_pha; Word16 pha_hys_cnt; +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + STEREO_DMX_EVS_PHA proc_pha; + Word16 force_poc; + + Word16 pha_ipd_chan2rephase; + Word16 pha_ipd_previouschan2rephase; + Word16 pha_ipd_chan_cnt; + Word16 pha_ipd_chan_thresh; + Word16 pha_ipd_chanswitch; + Word16 pha_ipd_chanswitch_allowed; +#endif + Word16 prc_thres; STEREO_DMX_EVS_PRC curr_prc; STEREO_DMX_EVS_PRC prev_prc; @@ -1216,6 +1230,27 @@ typedef struct stereo_dmx_evs_correlation_filter_structure Word16 trns_aux_energy_fx_e[CPE_CHANNELS]; Word32 crst_fctr_fx; // Q0 +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + Word16 n_fad_g; + Word16 n_fad_cnt; + + Word32 dmx_pha_ener_fx; + Word16 dmx_pha_ener_fx_e; + Word32 dmx_poc_ener_fx; + Word16 dmx_poc_ener_fx_e; + + Word32 dmx_pha_ener_sgc_fx; + Word16 dmx_pha_ener_sgc_fx_e; + Word32 dmx_poc_ener_sgc_fx; + Word16 dmx_poc_ener_sgc_fx_e; + + Word32 dmx_pha_gain_sgc_fx; + Word32 dmx_poc_gain_sgc_fx; + + Word32 low_egy_thres_sgc; + Word16 low_egy_thres_sgc_e; +#endif + } STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE; typedef struct stereo_dmx_evs_enc_data_structure diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 625ff8ee9..26487089d 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -88,7 +88,9 @@ #define STEREO_DMX_EVS_SWTCH_PRC_THRES_48 29 #define STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES 1 -#define STEREO_DMX_EVS_FADE_LEN_PRC_Q0 20 +#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA +#define STEREO_DMX_EVS_FADE_LEN_PRC_Q0 20 +#endif #define STEREO_DMX_EVS_NB_SBFRM 5 #define STEREO_DMX_EVS_TRNS_DTC_INST_Q0 75 @@ -98,6 +100,48 @@ #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576 +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA +#define STEREO_DMX_EVS_FAD_R 3 +#define STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 29491 // 0.9f +#define STEREO_DMX_EVS_SGC_GR_S 32919 // 1.00461543f +#define STEREO_DMX_EVS_SGC_GIR_S 32617 // 1/1.00461543f +#define STEREO_DMX_EVS_SGC_GL 32391 // 0.9885f +#define STEREO_DMX_EVS_SGC_GH 33148 // 1.0116f +#define STEREO_DMX_EVS_SGC_LEGY_THRES_16 2.5E8 +#define STEREO_DMX_EVS_SGC_LEGY_THRES_32 3.E8 +#define STEREO_DMX_EVS_SGC_LEGY_THRES_48 5.E8 +#define STEREO_DMX_EVS_SGC_LEGY_THRES_E 22 +#define STEREO_DMX_EVS_SGC_GMAX 46340 // 1.4142f +#define STEREO_DMX_EVS_SGC_GMIN 23170 // 0.7071f +#define STEREO_DMX_EVS_IPD_ILD_THRES_Q29 1696512082 // 3.16f (5dB) +#define STEREO_DMX_EVS_IPD_SF_THRES_Q31 107374182 // 0.05f +const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { + 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, + 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, + 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, + 2027355520, 2023718912, 2020082304, 2016445696, 2012809088, 2009172480, 2005535872, 2001899264, 1998262656, 1994625920, + 1990989312, 1987352704, 1983716096, 1980079488, 1976442880, 1972806272, 1969169664, 1965533056, 1961896448, 1958259840, + 1954623232, 1950986624, 1947350016, 1943713408, 1940076800, 1936440192, 1932803584, 1929166848, 1925530240, 1921893632, + 1918257024, 1914620416, 1910983808, 1907347200, 1903710592, 1900073984, 1896437376, 1892800768, 1889164160, 1885527552, + 1881890944, 1878254336, 1874617600, 1870981120, 1867344384, 1863707776, 1860071168, 1856434560, 1852797952, 1849161344, + 1845524736, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, + 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128 +}; +#else const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, @@ -124,6 +168,7 @@ const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872 }; +#endif /*-----------------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------------*/ @@ -202,6 +247,13 @@ static Word32 find_poc_peak_fx( const Word16 input_frame, /* i : input frame length per channel */ const Word32 ratio_fixed /* i : adapting ratio */ ); +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA +static Word32 spectral_flatness_fx( + const Word32 *sig_fx, /* i : input signal (mantissa) */ + const Word16 *sig_fx_e, /* i : input signal (exponent) - can be NULL */ + const Word16 sig_length /* i : input signal length */ +); +#endif /*-------------------------------------------------------------------* * estimate_itd_wnd_fft() * @@ -307,7 +359,11 @@ static void calc_poc_fx( Word16 cos_step, cos_max; Word32 eps_cos, eps_sin, EPS; +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + Word16 isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha, pha_ipd_ild_chan2rephase; +#else Word16 isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha; +#endif Word32 Nr, Ni, Dr, Di, tPr, tPi, Pn, energy; Word16 Nr_e, Ni_e, tPr_e, tPi_e, Pn_e, energy_e; Word16 isd_rate, isd_rate_e; @@ -567,7 +623,7 @@ static void calc_poc_fx( specPOr[n0] = imult3216( Mpy_32_32_r( wnd[i * step + bias], gamma ), sign_fx( Mpy_32_32_r( specLr[n0], specRr[n0] ) ) ); // Q31 move32(); - +#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA hPHA->init_frmCntr = sub( hPHA->init_frmCntr, 1 ); move16(); if ( hPHA->init_frmCntr < 0 ) @@ -575,6 +631,7 @@ static void calc_poc_fx( hPHA->init_frmCntr = 0; move16(); } +#endif freq_8k = L_FRAME16k / 2; move16(); // freq_ipd_max = (int16_t) ( freq_8k * 5000.0f / ( 8000.0f * STEREO_DMX_EVS_SUBBAND_SIZE ) ); @@ -799,6 +856,22 @@ static void calc_poc_fx( tPr = L_shl_sat( Mpy_32_32_r( tPr, Pn ), add( tPr_e, Pn_e ) ); // Q31 tPi = L_shl_sat( Mpy_32_32_r( tPi, Pn ), add( tPi_e, Pn_e ) ); // Q31 +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + Pr[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pr[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPr ) ); + move32(); + Pi[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pi[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPi ) ); + move32(); + + // Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ); + Pn = L_add( L_shr( Mpy_32_32_r( Pr[n], Pr[n] ), 1 ), L_shr( Mpy_32_32_r( Pi[n], Pi[n] ), 1 ) ); + Pn = BASOP_Util_Add_Mant32Exp( Pn, 1, EPSILON_FX_M, EPSILON_FX_E, &Pn_e ); + Pn = Isqrt_lc( Pn, &Pn_e ); + + Pr[n] = L_shl_sat( Mpy_32_32_r( Pr[n], Pn ), Pn_e ); // Q31 + move32(); + Pi[n] = L_shl_sat( Mpy_32_32_r( Pi[n], Pn ), Pn_e ); // Q31 + move32(); +#else IF( hPHA->init_frmCntr == 0 ) { Pr[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pr[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPr ) ); @@ -823,10 +896,26 @@ static void calc_poc_fx( Pi[n] = tPi; move32(); } - +#endif // Pr[n] = ( Pr[n] > 1.0f ) ? 1.0f : Pr[n]; // Pr[n] = ( Pr[n] < -1.0f ) ? -1.0f : Pr[n]; } + +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + /* Computes Spectral flatness on one channel */ + tmp1 = spectral_flatness_fx( &tEl[1], &tEl_e[1], nsbd - 1 ); + IF( LT_32( tmp1, STEREO_DMX_EVS_IPD_SF_THRES_Q31 ) ) + { + hPHA->pha_ipd_chanswitch_allowed = 0; + move16(); + } + ELSE + { + hPHA->pha_ipd_chanswitch_allowed = 1; + move16(); + } +#endif + // ICCr = (float) sqrt( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) ); L_tmp1 = BASOP_Util_Add_Mant32Exp( Mpy_32_32_r( Nr, Nr ), shl( Nr_e, 1 ), Mpy_32_32_r( Ni, Ni ), shl( Ni_e, 1 ), &L_tmp1_e ); L_tmp2 = BASOP_Util_Add_Mant32Exp( Mpy_32_32_r( eneL, eneR ), add( eneL_e, eneR_e ), EPSILON_FX_M, EPSILON_FX_E, &L_tmp2_e ); @@ -840,6 +929,322 @@ static void calc_poc_fx( hPHA->iccr_s_fx = L_add( Mpy_32_32_r( STEREO_DMX_EVS_ICCR_FORGETTING_Q31, hPHA->iccr_s_fx ), Mpy_32_32_r( MAX_32 - STEREO_DMX_EVS_ICCR_FORGETTING_Q31, ICCr ) ); // Q31 move32(); +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + + IF( EQ_32( hPHA->curr_pha, STEREO_DMX_EVS_PHA_IPD ) ) + { + hPHA->force_poc = FALSE; + hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD; + move16(); + move32(); + } + ELSE + { + test(); + test(); + test(); + IF( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_L_Q31 ) || ( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_H_Q31 ) && EQ_32( hPHA->proc_pha, STEREO_DMX_EVS_PHA_IPD2 ) && EQ_16( hPHA->force_poc, FALSE ) ) ) + { + hPHA->force_poc = FALSE; + hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD2; + move16(); + move32(); + } + ELSE + { + hPHA->force_poc = TRUE; + move16(); + } + } + + IF( hPHA->proc_pha == STEREO_DMX_EVS_PHA_IPD ) + { + rfft_pha_buf[0] = ONE_IN_Q22; + move32(); + rfft_pha_buf[1] = ONE_IN_Q22; + move32(); + + ild_cnt = 0; + move16(); + FOR( i = 1; i < nsbd; i++ ) + { + rfft_pha_buf[i * 2] = L_shr_r( Pr[i], 9 ); // Q31->Q22 + move32(); + rfft_pha_buf[i * 2 + 1] = L_shr_r( Pi[i], 9 ); // Q31->Q22 + move32(); + // if ( ( tEr[i] > STEREO_DMX_EVS_LR_EGY * tEl[i] ) || ( tEl[i] > STEREO_DMX_EVS_LR_EGY * tEr[i] ) ) + test(); + IF( BASOP_Util_Cmp_Mant32Exp( tEr[i], tEr_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEl[i] ), add( 4, tEl_e[i] ) ) > 0 || BASOP_Util_Cmp_Mant32Exp( tEl[i], tEl_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEr[i] ), add( 4, tEr_e[i] ) ) > 0 ) + { + ild_cnt = add( ild_cnt, 1 ); + tEr[i] = MAX_32; + move32(); + tEr_e[i] = 0; + move16(); + } + ELSE + { + tEr[i] = MIN_32; + move32(); + tEr_e[i] = 0; + move16(); + } + } + IF( GT_16( ild_cnt, mult_r( nsbd, STEREO_DMX_EVS_ILD_PRC_Q15 ) ) ) + { + FOR( i = 1; i < nsbd; i++ ) + { + IF( tEr[i] > 0 ) + { + rfft_pha_buf[i * 2] = ONE_IN_Q22; + move32(); + rfft_pha_buf[i * 2 + 1] = 0; + move32(); + } + } + } + + rfft_fx( rfft_pha_buf, hPHA->rfft_ipd_coef_fx, input_frame_pha, +1 ); + + /* Choose best channel to phase align */ + /* Channel selection based on ILD */ + IF( BASOP_Util_Cmp_Mant32Exp( hPHA->trns_aux_energy_fx[0], hPHA->trns_aux_energy_fx_e[0], Mpy_32_32_r( STEREO_DMX_EVS_IPD_ILD_THRES_Q29, hPHA->trns_aux_energy_fx[1] ), add( 2, hPHA->trns_aux_energy_fx_e[1] ) ) > 0 ) + { + pha_ipd_ild_chan2rephase = 1; + } + ELSE IF( BASOP_Util_Cmp_Mant32Exp( hPHA->trns_aux_energy_fx[1], hPHA->trns_aux_energy_fx_e[1], Mpy_32_32_r( STEREO_DMX_EVS_IPD_ILD_THRES_Q29, hPHA->trns_aux_energy_fx[0] ), add( 2, hPHA->trns_aux_energy_fx_e[0] ) ) > 0 ) + { + pha_ipd_ild_chan2rephase = 0; + } + ELSE + { + pha_ipd_ild_chan2rephase = -1; + } + move16(); + + Word16 rfft_pha_buf_0[L_FRAME48k]; // Temporary solution + FOR( n = 0; n < L_FRAME48k; n++ ) + { + rfft_pha_buf_0[n] = 0; + } + + /* Channel selection based on spikyness of R2L/L2R impulse responses */ + tmp1 = spectral_flatness_fx( rfft_pha_buf, NULL, hPHA->pha_len ); + rfft_pha_buf[sub( input_frame_pha, hPHA->pha_len )] = rfft_pha_buf[0]; + move32(); + tmp2 = spectral_flatness_fx( &rfft_pha_buf[sub( input_frame_pha, hPHA->pha_len )], NULL, hPHA->pha_len ); + + // /* Combined ILD/SF channel selection with tempo */ + IF( ( GT_32( tmp1, tmp2 ) && ( EQ_16( pha_ipd_ild_chan2rephase, -1 ) ) ) || EQ_16( pha_ipd_ild_chan2rephase, 0 ) ) /* L => R */ + { + IF( EQ_16( hPHA->pha_ipd_previouschan2rephase, 0 ) ) + { + hPHA->pha_ipd_chan_cnt = add( hPHA->pha_ipd_chan_cnt, 1 ); + IF( GE_32( hPHA->pha_ipd_chan_cnt, hPHA->pha_ipd_chan_thresh ) ) + { + /* Avoid channel switch in case of too harmonic signals */ + IF( EQ_16( hPHA->pha_ipd_chanswitch_allowed, 1 ) ) + { + IF( NE_16( hPHA->pha_ipd_chan2rephase, 0 ) ) + { + hPHA->pha_ipd_chanswitch = 1; + move16(); + } + ELSE + { + hPHA->pha_ipd_chanswitch = 0; + move16(); + } + hPHA->pha_ipd_chan2rephase = 0; + move16(); + } + } + } + ELSE + { + hPHA->pha_ipd_previouschan2rephase = 0; + hPHA->pha_ipd_chan_cnt = 1; + hPHA->pha_ipd_chanswitch = 0; + move16(); + move16(); + move16(); + } + } + ELSE + { + IF( EQ_16( hPHA->pha_ipd_previouschan2rephase, 1 ) ) + { + hPHA->pha_ipd_chan_cnt = add( hPHA->pha_ipd_chan_cnt, 1 ); + + IF( GE_16( hPHA->pha_ipd_chan_cnt, hPHA->pha_ipd_chan_thresh ) ) + { + /* Avoid channel switch in case of too harmonic signals */ + IF( EQ_16( hPHA->pha_ipd_chanswitch_allowed, 1 ) ) + { + IF( NE_16( hPHA->pha_ipd_chan2rephase, 1 ) ) + { + hPHA->pha_ipd_chanswitch = 1; + move16(); + } + ELSE + { + hPHA->pha_ipd_chanswitch = 0; + move16(); + } + hPHA->pha_ipd_chan2rephase = 1; + move16(); + } + hPHA->pha_ipd_chan_cnt = hPHA->pha_ipd_chan_thresh; + move16(); + } + } + ELSE + { + hPHA->pha_ipd_previouschan2rephase = 1; + hPHA->pha_ipd_chan_cnt = 1; + hPHA->pha_ipd_chanswitch = 0; + move16(); + move16(); + move16(); + } + } + + IF( EQ_16( hPHA->pha_ipd_chanswitch, 0 ) ) + { + IF( EQ_16( hPHA->pha_ipd_chan2rephase, 0 ) ) + { + hPHA->p_curr_taps_fx[1] = NULL; + hPHA->p_curr_taps_fx[0] = hPHA->curr_taps_fx[0]; + p_curr_taps = hPHA->p_curr_taps_fx[0]; + + L_tmp = L_shl( 1, 8 ); + p_curr_taps[0] = W_extract_l( W_mult_32_32( L_tmp, rfft_pha_buf[0] ) ); // Q22 -> Q31 + j = sub( input_frame_pha, 1 ); + FOR( i = 1; i < hPHA->pha_len; i++ ) + { + p_curr_taps[i] = W_extract_l( W_mult_32_32( L_tmp, rfft_pha_buf[j] ) ); // Q22 -> Q31 + j = sub( j, 1 ); + } + } + ELSE + { + hPHA->p_curr_taps_fx[0] = NULL; + hPHA->p_curr_taps_fx[1] = hPHA->curr_taps_fx[1]; + Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31 + } + } + } + + IF( EQ_16( hPHA->pha_ipd_chanswitch, 1 ) ) + { + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + hPHA->p_curr_taps_fx[n] = NULL; + } + } + ELSE IF( EQ_32( hPHA->proc_pha, STEREO_DMX_EVS_PHA_IPD2 ) ) + { + /* IPDn */ + + set32_fx( &( Pr[freq_ipd_max] ), MAX_32, sub( nsbd, freq_ipd_max ) ); + set32_fx( &( Pi[freq_ipd_max] ), 0, sub( nsbd, freq_ipd_max ) ); + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + hPHA->p_curr_taps_fx[n] = hPHA->curr_taps_fx[n]; + } + + rfft_pha_buf[0] = ONE_IN_Q22; + move32(); + rfft_pha_buf[1] = ONE_IN_Q22; + move32(); + + ild_cnt = 0; + move16(); + isd_rate = BASOP_Util_Divide1616_Scale( isd_cnt_l, freq_8k, &isd_rate_e ); + // Saturation to handle values close to 1.0f + isd_rate = shl_sat( isd_rate, isd_rate_e ); // Q15 + FOR( i = 1; i < nsbd; i++ ) + { + // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + Pr[i] ) / 2.0f ); + L_tmp = L_add( ONE_IN_Q30, L_shr( Pr[i], 1 ) ); + L_tmp_e = 0; + move16(); + L_tmp = Sqrt32( L_tmp, &L_tmp_e ); + rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22 + move32(); + // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] ); + L_tmp = L_sub_sat( ONE_IN_Q30, L_shr( Pr[i], 1 ) ); // saturating as Pr does not exceed 1.0f + L_tmp_e = 0; + move16(); + L_tmp = Sqrt32( L_tmp, &L_tmp_e ); + rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( Pi[i] ) ); // Q22 + move32(); + IF( GT_16( isd_rate, STEREO_DMX_EVS_ISD_DIST_THRES_IPD_Q15 ) ) + { + // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - rfft_pha_buf[i * 2] ) / 2.0f ) * sign( rfft_pha_buf[i * 2 + 1] ); + L_tmp = L_sub( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) ); + L_tmp_e = 9; + move16(); + L_tmp = Sqrt32( L_tmp, &L_tmp_e ); + rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( rfft_pha_buf[i * 2 + 1] ) ); // Q22 + move32(); + // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + rfft_pha_buf[i * 2] ) / 2.0f ); + L_tmp = L_add( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) ); // Q22 + L_tmp_e = 9; + move16(); + L_tmp = Sqrt32( L_tmp, &L_tmp_e ); + rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22 + move32(); + } + + // if ( ( tEr[i] > STEREO_DMX_EVS_LR_EGY * tEl[i] ) || ( tEl[i] > STEREO_DMX_EVS_LR_EGY * tEr[i] ) ) + test(); + IF( BASOP_Util_Cmp_Mant32Exp( tEr[i], tEr_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEl[i] ), add( 4, tEl_e[i] ) ) > 0 || BASOP_Util_Cmp_Mant32Exp( tEl[i], tEl_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEr[i] ), add( 4, tEr_e[i] ) ) > 0 ) + { + ild_cnt = add( ild_cnt, 1 ); + tEr[i] = MAX_32; + move32(); + tEr_e[i] = 0; + move16(); + } + ELSE + { + tEr[i] = MIN_32; + move32(); + tEr_e[i] = 0; + move16(); + } + } + IF( GT_16( ild_cnt, mult_r( nsbd, STEREO_DMX_EVS_ILD_PRC_Q15 ) ) ) + { + FOR( i = 1; i < nsbd; i++ ) + { + IF( tEr[i] > 0 ) + { + rfft_pha_buf[i * 2] = ONE_IN_Q22; + move32(); + rfft_pha_buf[i * 2 + 1] = 0; + move32(); + } + } + } + + rfft_fx( rfft_pha_buf, hPHA->rfft_ipd_coef_fx, input_frame_pha, +1 ); + // mvr2r( rfft_pha_buf, hPHA->p_curr_taps[1], hPHA->pha_len ); + Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31 + + /* PHA L2R */ + p_curr_taps = hPHA->p_curr_taps_fx[0]; + p_curr_taps[0] = L_shl( rfft_pha_buf[0], 9 ); // Q22->Q31 + move32(); + FOR( i = 1; i < hPHA->pha_len; i++ ) + { + p_curr_taps[i] = L_shl( rfft_pha_buf[input_frame_pha - i], 9 ); // Q22->Q31 + move32(); + } + } +#else IF( EQ_32( hPHA->curr_pha, STEREO_DMX_EVS_PHA_IPD ) ) { hPHA->p_curr_taps_fx[0] = NULL; @@ -1008,6 +1413,7 @@ static void calc_poc_fx( } } } +#endif FOR( n = 0; n < CPE_CHANNELS; n++ ) { @@ -1536,7 +1942,11 @@ static void weighted_ave_fx( Word16 i, len; Word32 gain_tmp_fx = 0, gain_sub_fx; move32(); +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC + len = shr( input_frame, 1 ); +#else len = shr( input_frame, 4 ); +#endif gain_sub_fx = L_sub( gain_fx, old_gain_fx ); FOR( i = 0; i < len; i++ ) { @@ -1552,6 +1962,61 @@ static void weighted_ave_fx( return; } + +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA +/*-------------------------------------------------------------------* + * spectral_flatness_fx() + * + * computes spectral flatness SF + * SF(x) = exp(mean_i(ln(x_i))) / mean_i(x_i) + *-------------------------------------------------------------------*/ +static Word32 spectral_flatness_fx( + const Word32 *sig_fx, /* i : input signal (mantissa) */ + const Word16 *sig_fx_e, /* i : input signal (exponent) */ + const Word16 sig_length /* i : input signal length */ +) +{ + Word32 L_geoMean, L_ariMean, L_tmp; + Word16 i, geoMean, ariMean, geoMean_e, ariMean_e, L_tmp_e, sf; + + L_geoMean = 0; + geoMean_e = 0; + L_ariMean = 0; + ariMean_e = 0; + + IF( sig_fx_e == NULL ) + { + FOR( i = 0; i < sig_length; i++ ) + { + L_tmp = BASOP_Util_Add_Mant32Exp( L_abs( sig_fx[i] ), 0, EPSILON_FX_M, EPSILON_FX_E, &L_tmp_e ); + L_ariMean = BASOP_Util_Add_Mant32Exp( L_ariMean, ariMean_e, L_tmp, L_tmp_e, &ariMean_e ); + L_geoMean = BASOP_Util_Add_Mant32Exp( L_geoMean, geoMean_e, BASOP_Util_Loge( L_tmp, L_tmp_e ), 6, &geoMean_e ); // +6 : compensate result of log /64 + } + } + ELSE + { + FOR( i = 0; i < sig_length; i++ ) + { + L_tmp = BASOP_Util_Add_Mant32Exp( L_abs( sig_fx[i] ), sig_fx_e[i], EPSILON_FX_M, EPSILON_FX_E, &L_tmp_e ); + L_ariMean = BASOP_Util_Add_Mant32Exp( L_ariMean, ariMean_e, L_tmp, L_tmp_e, &ariMean_e ); + L_geoMean = BASOP_Util_Add_Mant32Exp( L_geoMean, geoMean_e, BASOP_Util_Loge( L_tmp, L_tmp_e ), 6, &geoMean_e ); // +6 : compensate result of log /64 + } + } + + ariMean = BASOP_Util_Divide3216_Scale( L_ariMean, sig_length, &L_tmp_e ); + ariMean_e = add( sub( ariMean_e, Q15 ), L_tmp_e ); // (Q16)-1 : compensate result of division + + geoMean = BASOP_Util_Divide3216_Scale( L_geoMean, sig_length, &L_tmp_e ); + geoMean_e = add( sub( geoMean_e, Q15 ), L_tmp_e ); // (Q16)-1 : compensate result of division + geoMean = extract_h( BASOP_Util_fPow( (Word32) 1459366444, (Word16) 2, L_deposit_h( geoMean ), geoMean_e, &geoMean_e ) ); /* e=2,718281828459045 */ + + sf = BASOP_Util_Divide1616_Scale( geoMean, ariMean, &L_tmp_e ); + L_tmp_e = add( sub( geoMean_e, ariMean_e ), L_tmp_e ); + + return L_shl_sat( L_deposit_h( sf ), L_tmp_e ); +} +#endif + /*-------------------------------------------------------------------* * calc_energy() * @@ -1633,25 +2098,68 @@ static void calc_energy_fx( return; } +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA /*-------------------------------------------------------------------* - * adapt_gain() + * calc_energy_sgc() * - * adapt gain to the signal + * calculate energy for switch gain control *-------------------------------------------------------------------*/ -static void adapt_gain_fx( - const Word32 src_fx[], /* i : input signal Q16 */ - Word32 dst_fx[], /* o : output signal Q16 */ - const Word32 gain_fx, /* i : adapting gain Q31*/ - const Word32 old_gain_fx, /* i : adapting prev gain Q31*/ - const Word16 input_frame, /* i : input frame length per channel */ - const Word32 wnd_fx[] /* i : window coef Q31 */ +static void calc_energy_sgc( + const Word32 src[], /* i : input signal */ + Word32 *energy, /* i/o : calculated energy (mantissa) */ + Word16 *energy_e, /* i/o : calculated energy (exponent) */ + const Word16 input_frame, /* i : input frame length */ + const Word16 ratio /* i : adapting ratio */ ) { - Word16 i, len; - Word32 gain_tmp_fx, gain_sub_fx; + Word16 i, l_tmp_e, l_energy_e; + Word32 l_energy; + Word64 w_tmp; - len = shr( input_frame, 4 ); - // gain_sub = gain - old_gain; + l_energy = 0; + l_energy_e = 0; + FOR( i = 0; i < input_frame; i++ ) + { + w_tmp = W_mult0_32_32( src[i], src[i] ); + l_tmp_e = W_norm( w_tmp ); + IF( l_tmp_e != 0 ) + { + w_tmp = W_shl( w_tmp, l_tmp_e ); + } + l_energy = BASOP_Util_Add_Mant32Exp( l_energy, l_energy_e, W_round64_L( w_tmp ), sub( 32, l_tmp_e ), &l_energy_e ); // Q(2x26 - l_energy_e) + } + + *energy = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( *energy, ratio ), *energy_e, Mpy_32_16_1( l_energy, sub( MAX_16, ratio ) ), l_energy_e, energy_e ); + move32(); + + return; +} +#endif + +/*-------------------------------------------------------------------* + * adapt_gain() + * + * adapt gain to the signal + *-------------------------------------------------------------------*/ +static void adapt_gain_fx( + const Word32 src_fx[], /* i : input signal Q16 */ + Word32 dst_fx[], /* o : output signal Q16 */ + const Word32 gain_fx, /* i : adapting gain Q31*/ + const Word32 old_gain_fx, /* i : adapting prev gain Q31*/ + const Word16 input_frame, /* i : input frame length per channel */ + const Word32 wnd_fx[] /* i : window coef Q31 */ +) +{ + Word16 i, len; + Word32 gain_tmp_fx, gain_sub_fx; + +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC + len = shr( input_frame, 1 ); +#else + len = shr( input_frame, 4 ); +#endif + + // gain_sub = gain - old_gain; gain_sub_fx = L_sub( gain_fx, old_gain_fx ); // Q31 FOR( i = 0; i < len; i++ ) @@ -1764,6 +2272,52 @@ static void create_M_signal_fx( return; } +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA +/*-------------------------------------------------------------------* + * apply_gain_sgc() + * + * Apply gain for switching + *-------------------------------------------------------------------*/ + +static void apply_gain_sgc( + Word32 data[], /* i/o : input signal */ + Word32 *gain, /* i : gain */ + const Word16 input_frame /* i : input frame length */ +) +{ + Word16 n; + Word32 lr; + Word64 W_tmp; + + IF( GT_32( *gain, STEREO_DMX_EVS_SGC_GH ) ) + { + lr = STEREO_DMX_EVS_SGC_GIR_S; + move32(); + } + ELSE IF( LT_32( *gain, STEREO_DMX_EVS_SGC_GL ) ) + { + lr = STEREO_DMX_EVS_SGC_GR_S; + move32(); + } + ELSE + { + return; + } + + FOR( n = 0; n < input_frame; n++ ) + { + W_tmp = W_mult_32_32( data[n], *gain ); + W_tmp = W_shr( W_tmp, 16 ); + data[n] = W_extract_l( W_tmp ); + } + + W_tmp = W_mult_32_32( *gain, lr ); + *gain = W_shr( W_tmp, 16 ); + + return; +} +#endif + /*-------------------------------------------------------------------* * stereo_dmx_evs_enc() * @@ -1777,6 +2331,459 @@ void stereo_dmx_evs_enc_fx( const bool is_binaural /* i : indication that input is binaural audio */ ) { +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + Word16 n; + Word16 dmx_weight, corr; // Q15 + Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11 + + Word16 k, m, pha_len, fad_len; + Word32 mem_prev[STEREO_DMX_EVS_FAD_LEN_MAX], data_mem[STEREO_DMX_EVS_DATA_LEN_MAX]; // Q11 + Word32 *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_data; + + Word32 dmx_poc_data[L_FRAME48k] /*Q11*/, dmx_pha_data[L_FRAME48k] /*Q11*/, *p_dmx_data, fx_tmp, *p_dmx_data_fo; + Word16 n_fad_r, n_fad_g, m_fad_g, n_fad_cnt; + + STEREO_DMX_EVS_PRC prev_prc; + Word16 input_subframe, is_transient, dmx_gain_sgc; + Word32 *p_sub_frame, subframe_energy[STEREO_DMX_EVS_NB_SBFRM]; + Word16 subframe_energy_e[STEREO_DMX_EVS_NB_SBFRM]; + + Word16 input_frame; + + Word32 L_tmp1, L_tmp2; + Word16 L_tmp1_e, L_tmp2_e; + + Word64 W_tmp; + Word16 W_tmp_q; + + if ( is_binaural ) + { + /* use of is_binaural flag is to be considered */ + } + + // input_frame = (int16_t) ( input_Fs / FRAMES_PER_SEC ); + SWITCH( input_Fs ) + { + case 8000: + input_frame = 160; + BREAK; + case 16000: + input_frame = 320; + BREAK; + case 32000: + input_frame = 640; + BREAK; + case 48000: + input_frame = 960; + BREAK; + default: + input_frame = 960; + IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid sample rate\n" ); + BREAK; + } + move16(); + + FOR( n = 0; n < input_frame; n++ ) + { + data_fx[0][n] = L_deposit_h( data[2 * n] ); + move32(); + data_fx[1][n] = L_deposit_h( data[2 * n + 1] ); + move32(); + } + IF( LT_16( n_samples, input_frame ) ) + { + set32_fx( data_fx[0] + n_samples, 0, sub( input_frame, n_samples ) ); + set32_fx( data_fx[1] + n_samples, 0, sub( input_frame, n_samples ) ); + } + + // input_subframe = n_samples / STEREO_DMX_EVS_NB_SBFRM; + IF( EQ_16( n_samples, L_FRAME16k ) ) + { + input_subframe = 64; + move16(); + } + ELSE IF( EQ_16( n_samples, L_FRAME32k ) ) + { + input_subframe = 128; + move16(); + } + ELSE IF( EQ_16( n_samples, L_FRAME48k ) ) + { + input_subframe = 192; + move16(); + } + ELSE + { + input_subframe = 192; + move16(); + IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid frame length\n" ); + } + + is_transient = 0; + move16(); + FOR( k = 0; k < CPE_CHANNELS; k++ ) + { + fx_tmp = 0; + move32(); + FOR( m = 0; m < STEREO_DMX_EVS_NB_SBFRM; m++ ) + { + p_sub_frame = &( data_fx[k][m * input_subframe] ); + subframe_energy[m] = 0; + move32(); + subframe_energy_e[m] = 0; + move16(); + FOR( n = 0; n < input_subframe; n++ ) + { + // subframe_energy[m] += p_sub_frame[n] * p_sub_frame[n]; + W_tmp = W_mult_32_32( p_sub_frame[n], p_sub_frame[n] ); + W_tmp_q = W_norm( W_tmp ); + W_tmp = W_shl( W_tmp, W_tmp_q ); + L_tmp1 = W_extract_h( W_tmp ); // Q(31-(30-W_tmp_q)) + L_tmp1_e = sub( 15 * 2, W_tmp_q ); + subframe_energy[m] = BASOP_Util_Add_Mant32Exp( subframe_energy[m], subframe_energy_e[m], L_tmp1, L_tmp1_e, &subframe_energy_e[m] ); + move32(); + } + + L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); + L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); + // if ( subframe_energy[m] / ( hStereoDmxEVS->hPHA->trns_aux_energy[k] + EPSILON ) > hStereoDmxEVS->hPHA->crst_fctr ) + if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, hStereoDmxEVS->hPHA->crst_fctr_fx, 31 ) > 0 ) + { + is_transient = 1; + move16(); + } + + // hStereoDmxEVS->hPHA->trns_aux_energy[k] = STEREO_DMX_EVS_TRNS_EGY_FORGETTING * hStereoDmxEVS->hPHA->trns_aux_energy[k] + ( 1.0f - STEREO_DMX_EVS_TRNS_EGY_FORGETTING ) * subframe_energy[m]; + hStereoDmxEVS->hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ), hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], Mpy_32_16_1( subframe_energy[m], sub( MAX_16, STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ) ), subframe_energy_e[m], &hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k] ); + move32(); + } + + FOR( m = 1; m < STEREO_DMX_EVS_NB_SBFRM; m++ ) + { + L_tmp1 = BASOP_Util_Add_Mant32Exp( subframe_energy[m - 1], subframe_energy_e[m - 1], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); + L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); + // if ( subframe_energy[m] / ( subframe_energy[m - 1] + EPSILON ) > STEREO_DMX_EVS_TRNS_DTC_INST ) + if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, STEREO_DMX_EVS_TRNS_DTC_INST_Q0, 31 ) > 0 ) + { + is_transient = 1; + move16(); + } + } + } + + estimate_itd_fx( &corr, hStereoDmxEVS->hPOC, hStereoDmxEVS->hPHA, data_fx[0], data_fx[1], &hStereoDmxEVS->itd_fx, input_frame ); + + /* poc */ + + IF( hStereoDmxEVS->itd_fx ) + { + // dmx_weight = ( ( hStereoDmxEVS->itd > 0 ) ? ( -1 ) : 1 ) * 0.5f * corr + 0.5f; + IF( hStereoDmxEVS->itd_fx > 0 ) + { + dmx_weight = add( negate( shr( corr, 1 ) ), ONE_IN_Q14 ); + } + ELSE + { + dmx_weight = add( shr( corr, 1 ), ONE_IN_Q14 ); + } + } + ELSE + { + dmx_weight = ONE_IN_Q14; + move16(); + } + + create_M_signal_fx( data_fx[0], data_fx[1], dmx_poc_data, L_deposit_h( dmx_weight ), input_frame, hStereoDmxEVS->s_wnd_fx, + hStereoDmxEVS->dmx_weight_fx, hStereoDmxEVS->pre_dmx_energy_fx, hStereoDmxEVS->pre_dmx_energy_fx_e, hStereoDmxEVS->aux_dmx_energy_fx, hStereoDmxEVS->aux_dmx_energy_fx_e ); + + // Downscaling signals to avoid accumulation overflows + scale_sig32( data_fx[0], input_frame, -5 ); // Q31->Q26 + scale_sig32( data_fx[1], input_frame, -5 ); // Q31->Q26 + scale_sig32( dmx_poc_data, input_frame, -5 ); // Q31->Q26 + + /* pha */ + + pha_len = hStereoDmxEVS->hPHA->pha_len; + move16(); + fad_len = hStereoDmxEVS->hPHA->fad_len; + move16(); + fad_g = hStereoDmxEVS->hPHA->fad_g_fx; + + set_zero_fx( dmx_pha_data, n_samples ); + set_zero_fx( mem_prev, fad_len ); + + FOR( k = 0; k < CPE_CHANNELS; k++ ) + { + p_data = data_fx[k]; + Copy32( hStereoDmxEVS->hPHA->data_mem_fx[k], data_mem, pha_len ); + Copy32( &( p_data[n_samples - pha_len] ), hStereoDmxEVS->hPHA->data_mem_fx[k], pha_len ); + p_data_mem = &( data_mem[pha_len] ); + Copy32( p_data, p_data_mem, n_samples ); + + p_prev_taps = hStereoDmxEVS->hPHA->p_prev_taps_fx[k]; + IF( p_prev_taps ) + { + FOR( n = 0; n < fad_len; n++ ) + { + FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) + { + // ftmp += p_data_mem[n - m] * p_prev_taps[m]; + fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_prev_taps[m] ) ); // Q25 + } + fx_tmp = L_shl( fx_tmp, 1 ); // Q26 + mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); + move32(); + } + } + ELSE + { + FOR( n = 0; n < fad_len; n++ ) + { + // mem_prev[n] += p_data[n] * INV_SQRT_2; + mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( p_data[n], INV_SQRT_2_Q31 ) ); // Q26 + move32(); + } + } + + p_curr_taps = hStereoDmxEVS->hPHA->p_curr_taps_fx[k]; + IF( p_curr_taps ) + { + FOR( n = 0; n < n_samples; n++ ) + { + FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) + { + // ftmp += p_data_mem[n - m] * p_curr_taps[m]; + fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_curr_taps[m] ) ); // Q25 + } + fx_tmp = L_shl( fx_tmp, 1 ); // Q26 + // dmx_pha_data[n] += ftmp * INV_SQRT_2; + dmx_pha_data[n] = L_add( dmx_pha_data[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); // Q26 + move32(); + } + } + ELSE + { + FOR( n = 0; n < n_samples; n++ ) + { + // dmx_pha_data[n] += p_data[n] * INV_SQRT_2; + dmx_pha_data[n] = L_add( dmx_pha_data[n], Mpy_32_32( p_data[n], INV_SQRT_2_Q31 ) ); // Q26 + move32(); + } + } + } + + FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len; ( n++, m-- ) ) + { + dmx_pha_data[n] = Mpy_32_32( dmx_pha_data[n], fad_g[n] ); + move32(); + dmx_pha_data[n] = L_add( dmx_pha_data[n], Mpy_32_32( mem_prev[n], fad_g[m] ) ); // Q26 + move32(); + } + + /* prc switch */ + + prev_prc = hStereoDmxEVS->hPHA->curr_prc; + move32(); + // if ( abs( (int16_t) hStereoDmxEVS->itd ) > hStereoDmxEVS->hPHA->prc_thres ) + IF( GT_16( abs_s( hStereoDmxEVS->itd_fx ), hStereoDmxEVS->hPHA->prc_thres ) ) + { + IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) + { + IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_POC ) ) + { + hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 ); + move16(); + } + ELSE + { + hStereoDmxEVS->hPHA->prc_hys_cnt = 0; + move16(); + } + + if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) + { + hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; + move32(); + } + } + hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC; + move32(); + } + ELSE + { + IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_PHA ) ) + { + IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_PHA ) ) + { + hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 ); + move16(); + } + ELSE + { + hStereoDmxEVS->hPHA->prc_hys_cnt = 0; + move16(); + } + + if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) + { + hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA; + move32(); + } + } + hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_PHA; + move32(); + } + + // if ( ( is_transient == 1 ) || ( hStereoDmxEVS->aux_dmx_energy[0] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[1] ) || ( hStereoDmxEVS->aux_dmx_energy[1] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[0] ) || ( ( hStereoDmxEVS->hPHA->p_curr_taps[0] == NULL ) && ( hStereoDmxEVS->hPHA->p_curr_taps[1] == NULL ) ) ) + test(); + test(); + test(); + test(); + IF( EQ_16( is_transient, 1 ) || + BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[0], hStereoDmxEVS->aux_dmx_energy_fx_e[0], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[1] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[1], 14 ) ) > 0 || + BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[1], hStereoDmxEVS->aux_dmx_energy_fx_e[1], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[0] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[0], 14 ) ) > 0 || + EQ_16( hStereoDmxEVS->hPHA->force_poc, TRUE ) ) + { + hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; + move32(); + hStereoDmxEVS->hPHA->prc_hys_cnt = 0; + move16(); + } + + calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + + IF( NE_32( prev_prc, hStereoDmxEVS->hPHA->curr_prc ) && EQ_16( is_transient, 0 ) && !( ( BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->hPHA->dmx_pha_ener_fx, hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e, hStereoDmxEVS->hPHA->low_egy_thres_sgc, hStereoDmxEVS->hPHA->low_egy_thres_sgc_e ) < 0 ) && ( BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->hPHA->dmx_poc_ener_fx, hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e, hStereoDmxEVS->hPHA->low_egy_thres_sgc, hStereoDmxEVS->hPHA->low_egy_thres_sgc_e ) < 0 ) ) ) + { + IF( EQ_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) + { + apply_gain_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + + L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->dmx_poc_ener_fx, hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + BASOP_Util_Divide_MantExp( extract_h( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e ); + dmx_gain_sgc = Sqrt16( dmx_gain_sgc, &L_tmp2_e ); + hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15 + hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = L_min( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX ); + hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = L_max( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN ); + + apply_gain_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + } + ELSE + { + apply_gain_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + + L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->dmx_pha_ener_fx, hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + BASOP_Util_Divide_MantExp( extract_h( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e ); + dmx_gain_sgc = Sqrt16( dmx_gain_sgc, &L_tmp2_e ); + hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15 + hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = L_min( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX ); + hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = L_max( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN ); + + apply_gain_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + } + } + ELSE + { + apply_gain_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + + apply_gain_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + } + + IF( EQ_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) + { + p_dmx_data = dmx_poc_data; + p_dmx_data_fo = dmx_pha_data; + } + ELSE + { + p_dmx_data = dmx_pha_data; + p_dmx_data_fo = dmx_poc_data; + } + + IF( EQ_16( is_transient, 1 ) ) + { + n_fad_r = 1; + move16(); + } + ELSE + { + n_fad_r = STEREO_DMX_EVS_FAD_R; + move16(); + } + + IF( NE_32( prev_prc, hStereoDmxEVS->hPHA->curr_prc ) ) + { + IF( EQ_16( hStereoDmxEVS->hPHA->n_fad_g, input_frame ) ) + { + hStereoDmxEVS->hPHA->n_fad_g = 0; + hStereoDmxEVS->hPHA->n_fad_cnt = 0; + move16(); + move16(); + } + ELSE + { + hStereoDmxEVS->hPHA->n_fad_g = sub( input_frame, add( hStereoDmxEVS->hPHA->n_fad_g, 1 ) ); + IF( EQ_16( is_transient, 1 ) ) + { + hStereoDmxEVS->hPHA->n_fad_cnt = 0; + move16(); + } + ELSE + { + hStereoDmxEVS->hPHA->n_fad_cnt = sub( n_fad_r, hStereoDmxEVS->hPHA->n_fad_cnt ); + } + } + } + ELSE IF( is_transient ) + { + hStereoDmxEVS->hPHA->n_fad_cnt = 0; + move16(); + } + + fad_len = s_min( n_samples, sub( mult0( input_frame, n_fad_r ), add( mult0( hStereoDmxEVS->hPHA->n_fad_g, n_fad_r ), hStereoDmxEVS->hPHA->n_fad_cnt ) ) ); + + IF( NE_16( fad_len, 0 ) ) + { + fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; + move32(); + n_fad_g = hStereoDmxEVS->hPHA->n_fad_g; + n_fad_cnt = hStereoDmxEVS->hPHA->n_fad_cnt; + move16(); + move16(); + m_fad_g = sub( input_frame, add( n_fad_g, 1 ) ); + + FOR( n = 0; n < fad_len; n++ ) + { + p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; + p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 + + n_fad_cnt = add( n_fad_cnt, 1 ); + IF( GE_16( n_fad_cnt, n_fad_r ) ) + { + n_fad_cnt = 0; + move16(); + n_fad_g = add( n_fad_g, 1 ); + m_fad_g = sub( m_fad_g, 1 ); + } + } + + hStereoDmxEVS->hPHA->n_fad_g = n_fad_g; + hStereoDmxEVS->hPHA->n_fad_cnt = n_fad_cnt; + move16(); + move16(); + } + + Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15 + +#else Word16 n; Word16 dmx_weight, corr; // Q15 Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11 @@ -2149,6 +3156,7 @@ void stereo_dmx_evs_enc_fx( } Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15 +#endif return; } @@ -2359,6 +3367,12 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_16_Q0; move32(); +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_16; + hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E; + move32(); + move16(); +#endif } ELSE IF( EQ_32( input_Fs, 32000 ) ) { @@ -2370,6 +3384,12 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_32_Q0; move32(); +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_32; + hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E; + move32(); + move16(); +#endif } ELSE IF( EQ_32( input_Fs, 48000 ) ) { @@ -2381,6 +3401,12 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_48_Q0; move32(); +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_48; + hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E; + move32(); + move16(); +#endif } ELSE { @@ -2389,8 +3415,10 @@ ivas_error stereo_dmx_evs_init_encoder_fx( hStereoDmxEVS->hPHA->pha_len = shr( len, 1 ); move16(); +#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA hStereoDmxEVS->hPHA->init_frmCntr = 10; // (int16_t)(FRAMES_PER_SEC * 0.2f) move16(); +#endif hStereoDmxEVS->hPHA->isd_rate_s_fx = 0; move32(); hStereoDmxEVS->hPHA->iccr_s_fx = 0; @@ -2442,23 +3470,25 @@ ivas_error stereo_dmx_evs_init_encoder_fx( ipd_ff = hStereoDmxEVS->hPHA->ipd_ff_fx; Copy32( ipd_ff_Q31, ipd_ff, STEREO_DMX_EVS_NB_SUBBAND_MAX ); - // a_min = 0.8576958985908941f; - // a_max = 0.9440608762859234f; - // itrh = (int16_t)((3000 * input_frame) / (input_Fs * STEREO_DMX_EVS_SUBBAND_SIZE)); /* 3kHz */ - // n0 = L_FRAME16k / (2 * STEREO_DMX_EVS_SUBBAND_SIZE); - // a_step = (a_min - a_max) / (n0 + 1 - itrh); - // for (n = 0; n < itrh; n++) - //{ - // ipd_ff[n] = a_max; - // } - // for (; n < (n0 + 1); n++) /* 8kHz */ - //{ - // ipd_ff[n] = a_max + (n - itrh) * a_step; - // } - // for (; n < STEREO_DMX_EVS_NB_SUBBAND_MAX; n++) - //{ - // ipd_ff[n] = a_min; - // } +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + hStereoDmxEVS->hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD; + hStereoDmxEVS->hPHA->force_poc = FALSE; + move16(); + move32(); + + hStereoDmxEVS->hPHA->pha_ipd_chan_cnt = 0; + move16(); + hStereoDmxEVS->hPHA->pha_ipd_chan_thresh = 10; + move16(); + hStereoDmxEVS->hPHA->pha_ipd_chan2rephase = 1; + move16(); + hStereoDmxEVS->hPHA->pha_ipd_previouschan2rephase = 1; + move16(); + hStereoDmxEVS->hPHA->pha_ipd_chanswitch = 0; + move16(); + hStereoDmxEVS->hPHA->pha_ipd_chanswitch_allowed = 0; + move16(); +#endif set32_fx( hStereoDmxEVS->hPHA->Pr_fx, MAX_32, STEREO_DMX_EVS_NB_SUBBAND_MAX ); set_zero_fx( hStereoDmxEVS->hPHA->Pi_fx, STEREO_DMX_EVS_NB_SUBBAND_MAX ); @@ -2510,6 +3540,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( hStereoDmxEVS->hPHA->prc_hys_cnt = 0; move16(); +#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA // hStereoDmxEVS->hPHA->fad_len_prc = (int16_t) ( STEREO_DMX_EVS_FADE_LEN_PRC * (float) input_Fs / 1000.0f ); SWITCH( input_Fs ) { @@ -2533,9 +3564,11 @@ ivas_error stereo_dmx_evs_init_encoder_fx( IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid sample rate\n" ); BREAK; } - fad_len = hStereoDmxEVS->hPHA->fad_len_prc; +#endif + fad_len = input_frame; move16(); fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; + move32(); // fad_r = 1.0f / (float) ( fad_len + 1 ); fad_r = BASOP_Util_Divide3232_Scale_cadence( 1, add( fad_len, 1 ), &tmp_e ); fad_r = L_shl_r( fad_r, tmp_e ); @@ -2556,6 +3589,31 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); } +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA + + hStereoDmxEVS->hPHA->dmx_poc_ener_fx = 0; + move32(); + hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e = 0; + move16(); + hStereoDmxEVS->hPHA->dmx_pha_ener_fx = 0; + move32(); + hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e = 0; + move16(); + + hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx = 0; + move32(); + hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e = 0; + move16(); + hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx = 0; + move32(); + hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e = 0; + move16(); + + hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = ONE_IN_Q15; + hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = ONE_IN_Q15; + +#endif + *hStereoDmxEVS_out = hStereoDmxEVS; return IVAS_ERR_OK; -- GitLab From ded7d14aac5cfd179b1e1b80f64c0dc84dd5f346 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 29 Apr 2025 17:39:47 +0200 Subject: [PATCH 458/698] remove UTF-8 BOMs at beginning of files --- lib_dec/lib_dec_fx.c | 2 +- lib_enc/init_enc_fx.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 77deb9e7d..421137631 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -1,4 +1,4 @@ -/****************************************************************************************************** +/****************************************************************************************************** (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 98d7fe957..cf79a4de3 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -1,4 +1,4 @@ -/*==================================================================================== +/*==================================================================================== EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 ====================================================================================*/ -- GitLab From 8a5d21c9855023b9da4dfa0d80e1d4e12cfc002a Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Tue, 29 Apr 2025 19:39:31 +0200 Subject: [PATCH 459/698] Fix for ivas-pytest-compare-to-input-anchor --- .gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e03f48d00..b93061941 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -639,8 +639,6 @@ workflow: - report-junit.xml .ivas-pytest-compare-to-input-anchor: &ivas-pytest-compare-to-input-anchor - extends: - - .job-linux stage: test needs: ["build-codec-linux-make"] timeout: "360 minutes" -- GitLab From d584233e8cfa3ce51c96b212d8134d802b1cf7b3 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 29 Apr 2025 20:48:44 +0200 Subject: [PATCH 460/698] fix closing comment - this has confused the prepare_instrumentation.sh (to be more precise: parse_options_h.sh) script --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index f95bc9138..7bcd5473d 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -98,7 +98,7 @@ #define NONBE_FIX_949_MC_5MS_FRAMING /*Dlb: Issue 949: fix for 5ms framing/rendering in MC mode */ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ -//#define SPLIT_REND_WITH_HEAD_ROT_NEW /* Orange: split rendering code differ between branchs main-pc and float-pc, do not know what to do/ +//#define SPLIT_REND_WITH_HEAD_ROT_NEW /* Orange: split rendering code differ between branchs main-pc and float-pc, do not know what to do */ #define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT -- GitLab From 51e39130bb2fbda03cc3e8d145e17f7f028698b6 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 30 Apr 2025 11:56:09 +0530 Subject: [PATCH 461/698] Fix for 3GPP issue 1415: Cleanup of pre-processor macros Link #1415 --- lib_com/basop_util.c | 10 - lib_com/bitstream_fx.c | 2 - lib_com/cldfb_evs.c | 7 - lib_com/core_com_config.c | 55 +- lib_com/hq_conf_fx.c | 4 - lib_com/interleave_spectrum.c | 12 - lib_com/prot_fx.h | 81 +-- lib_com/swb_tbe_com_fx.c | 422 +----------- lib_com/tcx_mdct_window.c | 39 -- lib_com/tns_base.c | 20 - lib_dec/FEC_HQ_phase_ecu_fx.c | 525 --------------- lib_dec/TonalComponentDetection_fx.c | 9 - lib_dec/acelp_core_dec_fx.c | 5 - lib_dec/amr_wb_dec_fx.c | 5 - lib_dec/core_dec_init_fx.c | 116 ---- lib_dec/core_dec_switch_fx.c | 22 - lib_dec/dec_LPD_fx.c | 8 - lib_dec/dec_ace_fx.c | 7 - lib_dec/dec_acelp_tcx_main_fx.c | 4 - lib_dec/dec_tcx_fx.c | 3 - lib_dec/er_dec_tcx_fx.c | 114 ---- lib_dec/evs_dec_fx.c | 4 - lib_dec/fd_cng_dec_fx.c | 155 +---- lib_dec/gs_dec_amr_wb_fx.c | 43 -- lib_dec/hq_classifier_dec_fx.c | 10 - lib_dec/hq_core_dec_fx.c | 111 ---- lib_dec/hq_hr_dec_fx.c | 1 - lib_dec/ivas_output_config_fx.c | 10 - lib_dec/tns_base_dec_fx.c | 53 +- lib_dec/tonalMDCTconcealment_fx.c | 456 ------------- lib_dec/updt_dec_fx.c | 35 - lib_enc/cng_enc_fx.c | 5 - lib_enc/cod_tcx_fx.c | 628 ------------------ lib_enc/core_enc_init_fx.c | 7 - lib_enc/core_enc_switch_fx.c | 11 - lib_enc/core_enc_updt_fx.c | 14 - lib_enc/enc_pit_exc_fx.c | 5 - lib_enc/evs_enc_fx.c | 22 - lib_enc/ext_sig_ana_fx.c | 152 ----- lib_enc/hq_classifier_enc_fx.c | 195 +----- lib_enc/hq_core_enc_fx.c | 117 ---- lib_enc/hq_hr_enc_fx.c | 14 - lib_enc/init_enc_fx.c | 15 +- lib_enc/ivas_omasa_enc_fx.c | 5 - lib_enc/lib_enc.c | 36 +- lib_enc/mdct_classifier_fx.c | 78 +-- lib_enc/tcx_utils_enc_fx.c | 4 +- lib_enc/transient_detection_fx.c | 75 --- lib_enc/updt_enc_fx.c | 31 - .../ivas_dirac_dec_binaural_functions_fx.c | 14 - 50 files changed, 20 insertions(+), 3756 deletions(-) diff --git a/lib_com/basop_util.c b/lib_com/basop_util.c index ec15e9769..dc9013a42 100644 --- a/lib_com/basop_util.c +++ b/lib_com/basop_util.c @@ -1409,15 +1409,6 @@ Word32 BASOP_Util_Divide3232_Scale_newton( Word32 x, Word32 y, Word16 *s ) *s = 0; return ( (Word32) 0 ); } - -#if 0 - sign = L_xor( x, y ); /* check (sign < 0) for result negation */ - - if ( x < 0 ) - { - x = L_negate( x ); - } -#else IF( EQ_32( y, 0x80000000 ) ) { /* Division by -1.0: same as negation of numerator */ @@ -1429,7 +1420,6 @@ Word32 BASOP_Util_Divide3232_Scale_newton( Word32 x, Word32 y, Word16 *s ) } sign = y; move32(); -#endif if ( y < 0 ) { y = L_negate( y ); diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index 07a6a632f..4fcac20b6 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -52,7 +52,6 @@ int16_t FEC_seed = 12558; /* Seed for random FEC generator */ FILE *FEC_pattern = NULL; /* FEC pattern file (for simulation of FEC) */ -#ifndef IVAS_CODE float FEC_random = 0; /* FEC rate in percent (for simulation of FEC) */ /*-------------------------------------------------------------------* * file_read_FECpattern() @@ -109,7 +108,6 @@ static int16_t file_read_FECpattern( void ) return bfi; } #endif -#endif /*-------------------------------------------------------------------* * pack_bit() * diff --git a/lib_com/cldfb_evs.c b/lib_com/cldfb_evs.c index c28a534d6..51c9ee6f9 100644 --- a/lib_com/cldfb_evs.c +++ b/lib_com/cldfb_evs.c @@ -981,10 +981,6 @@ ivas_error openCldfb( const Word16 type, /*!< analysis or synthesis */ const Word16 maxCldfbBands, /*!< number of cldfb bands */ const Word16 frameSize /*!< FrameSize */ -#ifdef ADD_IVAS_CLDFB - , - CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ -#endif ) { HANDLE_CLDFB_FILTER_BANK hs; @@ -996,9 +992,6 @@ ivas_error openCldfb( } hs->type = type; -#ifdef ADD_IVAS_CLDFB - hs->prototype = prototype; -#endif move16(); IF( type == CLDFB_ANALYSIS ) diff --git a/lib_com/core_com_config.c b/lib_com/core_com_config.c index f0ee8efd8..f75f28a18 100644 --- a/lib_com/core_com_config.c +++ b/lib_com/core_com_config.c @@ -246,67 +246,18 @@ Word16 getTcxonly_ivas_fx( } Word16 getTcxonly( -#ifdef IVAS_CODE_SWITCHING - const Word16 element_mode, /* i : IVAS element mode */ -#endif const Word32 total_brate /* i : total bitrate */ -#ifdef IVAS_CODE_SWITCHING - , - const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0)*/ - const int16_t is_ism_format /* i : flag indicating ISM format */ -#endif ) { Word16 tcxonly; tcxonly = 0; move16(); -#ifdef IVAS_CODE_SWITCHING - SWITCH( element_mode ) + if ( GT_32( total_brate, 32000 ) ) { - case EVS_MONO: -#endif - if ( GT_32( total_brate, 32000 ) ) - { - tcxonly = 1; - move16(); - } -#ifdef IVAS_CODE_SWITCHING - break; - case IVAS_SCE: - if ( is_ism_format ) - { - if ( total_brate > MAX_ACELP_BRATE_ISM ) - { - tcxonly = 1; - } - } - else - { - if ( total_brate > MAX_ACELP_BRATE ) - { - tcxonly = 1; - } - } - break; - - case IVAS_CPE_DFT: - case IVAS_CPE_TD: - if ( total_brate > MAX_ACELP_BRATE ) - { - tcxonly = 1; - } - break; - case IVAS_CPE_MDCT: - if ( total_brate >= ( MCT_flag ? IVAS_32k : IVAS_48k ) ) - { - tcxonly = 1; - } - break; -#endif -#ifdef IVAS_CODE_SWITCHING + tcxonly = 1; + move16(); } -#endif return tcxonly; /*Q0*/ } diff --git a/lib_com/hq_conf_fx.c b/lib_com/hq_conf_fx.c index 503975363..f6a01adfc 100644 --- a/lib_com/hq_conf_fx.c +++ b/lib_com/hq_conf_fx.c @@ -303,11 +303,7 @@ void hq_configure_evs_fx( *start_norm = 0; move16(); -#ifndef SOLVED_COMP_ENC_DEC IF( EQ_16( length, L_FRAME48k ) ) /*tbv SOLVED_COMP_ENC_DEC*/ -#else - IF( EQ_16( length, L_SPEC48k ) ) -#endif { IF( EQ_16( hqswb_clas, HQ_GEN_FB ) ) { diff --git a/lib_com/interleave_spectrum.c b/lib_com/interleave_spectrum.c index 5c4c98e29..e8bb728ff 100644 --- a/lib_com/interleave_spectrum.c +++ b/lib_com/interleave_spectrum.c @@ -63,11 +63,7 @@ void interleave_spectrum_fx( /* Common inits */ p1 = coefs; /*Q12*/ p_out = coefs_out; -#ifdef SOLVED_COMP_ENC_DEC - IF( EQ_16( length, L_SPEC48k ) ) -#else IF( EQ_16( length, L_FRAME48k ) ) -#endif { bw = intl_bw_48; /*Q0*/ cnt = intl_cnt_48; /*Q0*/ @@ -337,20 +333,12 @@ void de_interleave_spectrum_fx( p1 = coefs_out; l_frame = length; move16(); -#ifdef SOLVED_COMP_ENC_DEC - IF( EQ_16( length, L_SPEC48k ) ) -#else IF( EQ_16( length, L_FRAME48k ) ) -#endif { bw = intl_bw_48; /*Q0*/ cnt = intl_cnt_48; /*Q0*/ grps = N_INTL_GRP_48; move16(); -#ifdef SOLVED_COMP_ENC_DEC - l_frame = L_FRAME48k; - move16(); -#endif p2 = coefs_out + sublen[2]; /* 240, length/4 */ p3 = coefs_out + sublen[4]; /* 480, 2*length/4 */ p4 = coefs_out + sublen[5]; /* 720, 3*length/4 */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 86b5ec0b7..fde3949fd 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3062,20 +3062,6 @@ void GenShapedSHBExcitation_fx( Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ const Word32 bitrate, const Word16 prev_bfi -#ifdef ADD_IVAS_TBE_CODE - , /* i : previous frame was concealed */ - const Word16 element_mode, /* i : element mode */ - const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ - Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ - Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ - const Word32 extl_brate, /* i : extension layer bitarte */ - const Word16 MSFlag, /* i : Multi Source flag */ - Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ - Word16 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ - Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ - Word16 *Env_error, /* o : error in SHB residual envelope modelling*/ - Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */ -#endif ); void GenShapedSHBExcitation_ivas_enc_fx( @@ -3152,7 +3138,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ const Word32 bitrate, const Word16 prev_bfi -#if 1 // def ADD_IVAS_TBE_CODE , /* i : previous frame was concealed */ const Word16 element_mode, /* i : element mode */ const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ @@ -3165,7 +3150,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ Word16 *Env_error, /* o : error in SHB residual envelope modelling*/ Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */ -#endif ); void GenSHBSynth_fx( @@ -3309,9 +3293,6 @@ void synthesise_fb_high_band_fx( #ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ -#ifdef ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif const Word16 i_subfr_fx, /* i : subframe index */ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ @@ -3326,21 +3307,12 @@ void prep_tbe_exc_fx( Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ Word32 core_brate /* i :core bitrate */ -#ifdef ADD_IVAS_TBE_CODE - , - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif ); #endif void prep_tbe_exc_ivas_fx( const Word16 L_frame_fx, /* i : length of the frame */ -#if 1 // def ADD_IVAS_TBE_CODE const Word16 L_subfr, -#endif const Word16 i_subfr_fx, /* i : subframe index */ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ @@ -3355,13 +3327,11 @@ void prep_tbe_exc_ivas_fx( Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ Word32 core_brate -#if 1 // def ADD_IVAS_TBE_CODE , /* i : core bitrate */ const Word16 element_mode, /* i : element mode */ const Word16 idchan, /* i : channel ID */ const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif ); Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */ @@ -4180,15 +4150,7 @@ Word16 get_codec_mode( ); Word16 getTcxonly( -#ifdef IVAS_CODE_SWITCHING - const Word16 element_mode, /* i : IVAS element mode */ -#endif const Word32 total_brate /* i : total bitrate */ -#ifdef IVAS_CODE_SWITCHING - , - const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0)*/ - const int16_t is_ism_format /* i : flag indicating ISM format */ -#endif ); Word16 getTcxonly_fx( @@ -6578,10 +6540,6 @@ void TonalMDCTConceal_SaveFreqSignal( const Word16 *scaleFactors, const Word16 *scaleFactors_exp, const Word16 gain_tcx_exp -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - , - const Word16 infoIGFStartLine -#endif ); void TonalMDCTConceal_SaveFreqSignal_ivas_fx( @@ -6650,9 +6608,6 @@ void TonalMDCTConceal_InsertNoise( Word16 *pSeed, /*IN/OUT*/ const Word16 tiltCompFactor, Word16 crossfadeGain, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - const Word16concealment_noise[L_FRAME48k], -#endif const Word16 crossOverFreq ); void TonalMDCTConceal_SaveTimeSignal( @@ -7646,9 +7601,6 @@ void configureFdCngDec_fx( Word16 ApplyFdCng_fx( Word16 *timeDomainInput, /* i : pointer to time domain i */ Word16 Q, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - Word16 *powerSpectrum, -#endif Word32 **cldfbBufferReal, /* i/o: real part of the CLDFB buffer */ Word32 **cldfbBufferImag, /* i/o: imaginary part of the CLDFB buffer */ Word16 *cldfbBufferScale, /* o : pointer to the scalefactor for real and imaginary part of the CLDFB buffer */ @@ -7672,9 +7624,6 @@ Word16 ApplyFdCng_ivas_fx( void perform_noise_estimation_dec_fx( const Word16 *timeDomainInput, /* i: pointer to time domain i */ const Word16 Q, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - float *power_spectrum, -#endif HANDLE_FD_CNG_DEC hFdCngDec /* i/o: FD_CNG structure containing all buffers and variables */ ); @@ -8389,10 +8338,6 @@ void improv_amr_wb_gs_fx( const Word16 Last_ener_fx, /* i : Last energy (Q8) Q0*/ const Word16 rate_switching_reset, /* i : rate switching reset flag Q0*/ const Word16 last_coder_type /* i : Last coder_type Q0*/ -#ifdef ADD_IVAS_GS_DEC_IMPR - , - const Word16 VeryLowRateSTflag /* i : Enable the noise enhancement for very low rate stereo generic mode */ -#endif ); // dec_amr_wb_fx.c @@ -8444,18 +8389,7 @@ ivas_error ppp_quarter_decoder_fx( void open_decoder_LPD_fx( Decoder_State *st, const Word32 total_brate, /* Q0 */ -#ifdef NEW_IVAS_OPEN_DEC - const Word32 last_total_brate, -#endif const Word16 bwidth /* Q0 */ -#ifdef NEW_IVAS_OPEN_DEC - , - const Word16 is_mct, /* i : MCT mode flag */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - const Word16 last_element_mode, -#endif - const Word16 is_init /* i : indicate call from init_decoder() to avoid double TC initialization */ -#endif ); void open_decoder_LPD_ivas_fx( Decoder_State *st, /* i/o: decoder state structure */ @@ -9010,28 +8944,19 @@ void tcx_hm_modify_envelope( ); // tns_base_dec_fx.c -#ifdef IVAS_CODE -void -#else Word16 -#endif ReadTnsData( STnsConfig const *pTnsConfig, Decoder_State *st, Word16 *pnBits, Word16 *stream, Word16 *pnSize ); -#define IVAS_CODE -#ifdef IVAS_CODE + void -#else -Word16 -#endif ReadTnsData_ivas_fx( STnsConfig const *pTnsConfig, Decoder_State *st, Word16 *pnBits, Word16 *stream, Word16 *pnSize ); -#undef IVAS_CODE Word16 DecodeTnsData( STnsConfig const *pTnsConfig, Word16 const *stream, @@ -9454,10 +9379,6 @@ void con_tcx_fx( const Word16 coh, /* i : coherence of stereo signal */ Word16 *noise_seed, /* i/o: noise seed for stereo */ const Word16 only_left /* i : TD-PLC only in left channel */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - , - const float *A_cng /* i : CNG LP filter coefficients */ -#endif #endif ); diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 5631dfa94..d1883efde 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -2103,20 +2103,6 @@ void GenShapedSHBExcitation_fx( Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ const Word32 bitrate, const Word16 prev_bfi -#ifdef ADD_IVAS_TBE_CODE - , /* i : previous frame was concealed */ - const Word16 element_mode, /* i : element mode */ - const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ - Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ - Word16 *mixExc16k, /* i/o: exc spreading for IC-BWE */ - const Word32 extl_brate, /* i : extension layer bitarte */ - const Word16 MSFlag, /* i : Multi Source flag */ - Word16 EnvSHBres_4k[], /* i/o: TD envelope of the SHB residual signal */ - Word16 *prev_pow_exc16kWhtnd, /* i/o: power of the LB excitation signal in the previous frame */ - Word16 *prev_mix_factor, /* i/o: mixing factor in the previous frame */ - Word16 *Env_error, /* o : error in SHB residual envelope modelling*/ - Word16 Env_error_part[] /* o : per-segment error in SHB residual envelope modelling */ -#endif ) { Word16 i, j, k; @@ -2160,20 +2146,6 @@ void GenShapedSHBExcitation_fx( Word16 Q_temp; Word16 prev_Q_bwe_exc_fb; -#ifdef ADD_IVAS_TBE_CODE - Word32 tempD; - Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; - Word16 cbsize; - Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; - Word16 c0, c1, c2, c3, c4, c5, g1, g2, g, den; - Word16 EnvWhiteExc16k[L_FRAME16k], EnvExc16kWhtnd[L_FRAME16k]; - Word16 EnvWhiteExc16k_4k[L_FRAME4k] = { 0 }, EnvExc16kWhtnd_4k[L_FRAME4k] = { 0 }; - Word16 flag_plosive; - Word16 delta; - Word16 c0_part[NUM_SHB_SUBGAINS], c1_part[NUM_SHB_SUBGAINS], c2_part[NUM_SHB_SUBGAINS], c3_part[NUM_SHB_SUBGAINS], c4_part[NUM_SHB_SUBGAINS], c5_part[NUM_SHB_SUBGAINS]; - - mix_factor = 0.0f; -#endif set16_fx( zero_mem, 0, LPC_SHB_ORDER ); set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); @@ -2205,12 +2177,7 @@ void GenShapedSHBExcitation_fx( /* i: exc16k in Q_bwe_exc */ /* o: exc16kWhtnd in Q_bwe_exc */ - -#ifdef ADD_IVAS_TBE_CODE - IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) -#else IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif { temp2 = 0; move16(); @@ -2244,11 +2211,7 @@ void GenShapedSHBExcitation_fx( Q_pow1 = shl( *Q_bwe_exc, 1 ); test(); -#ifdef ADD_IVAS_TBE_CODE - IF( EQ_16( flag_ACELP16k, 0 ) ) -#else IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) ) -#endif { /* varEnvShape = mean_fx(voice_factors, 4); */ /* unroll the loop */ @@ -2294,11 +2257,7 @@ void GenShapedSHBExcitation_fx( test(); test(); test(); -#ifdef ADD_IVAS_TBE_CODE - IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#else IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#endif { /* pre-init smoothing filter to avoid energy drop outs */ L_tmp = L_mult( excTmp2[0], 1638 ); @@ -2325,42 +2284,6 @@ void GenShapedSHBExcitation_fx( *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); move32(); } -#ifdef ADD_IVAS_TBE_CODE - if ( MSFlag > 0 ) - { - varEnvShape = 0.995f; - csfilt_num2[0] = 1.0f - varEnvShape; - csfilt_den2[1] = -varEnvShape; - } - - White_exc16k = exc16k; - - /* Track the low band envelope */ - if ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT ) - { - if ( extl_brate != SWB_TBE_1k10 && extl_brate != SWB_TBE_1k75 ) - { - mem_csfilt_left = 0.0f; - mem_csfilt_right = 0.0f; - for ( k = 0; k < L_FRAME16k; k++ ) - { - excNoisyEnvLeft[k] = mem_csfilt_left + csfilt_num2[0] * excTmp2[k]; - mem_csfilt_left = -csfilt_den2[1] * excNoisyEnvLeft[k]; - excNoisyEnvRight[L_FRAME16k - k - 1] = mem_csfilt_right + csfilt_num2[0] * excTmp2[L_FRAME16k - k - 1]; - mem_csfilt_right = -csfilt_den2[1] * excNoisyEnvRight[L_FRAME16k - k - 1]; - } - - alpha = 0.0f; - step = 1.0f / L_FRAME16k; - for ( k = 0; k < L_FRAME16k; k++ ) - { - excNoisyEnv[k] = alpha * excNoisyEnvLeft[k] + ( 1 - alpha ) * excNoisyEnvRight[k]; - alpha += step; - } - } - } - else -#endif { /* Track the low band envelope */ L_tmp = *mem_csfilt; @@ -2376,21 +2299,6 @@ void GenShapedSHBExcitation_fx( *mem_csfilt = L_tmp; move32(); } -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - /* generate gaussian (white) excitation */ - for ( k = 0; k < L_FRAME16k; k++ ) - { - White_exc16k[k] = (float) own_random( &bwe_seed[0] ); - } - - /* normalize the amplitude of the gaussian excitation to that of the LB exc. */ - pow22 = POW_EXC16k_WHTND; - v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), White_exc16k, L_FRAME16k ); - } - else -#endif { /* create a random excitation - Reuse exc16k memory */ White_exc16k = exc16k; @@ -2439,98 +2347,10 @@ void GenShapedSHBExcitation_fx( Q_pow22 = shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ); } -#ifdef ADD_IVAS_TBE_CODE - flag_plosive = 0; - move16(); - test(); - test(); - test(); - IF(GE_32(extl_brate, SWB_TBE_2k8) || EQ_32(extl_brate, SWB_TBE_1k10) || EQ_32(extl_brate, SWB_TBE_1k75))) -#else IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif { IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ { -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - /* calculate TD envelopes of exc16kWhtnd and White_exc16k */ - find_td_envelope( White_exc16k, L_FRAME16k, 20, NULL, EnvWhiteExc16k ); - find_td_envelope( exc16kWhtnd, L_FRAME16k, 20, NULL, EnvExc16kWhtnd ); - - for ( k = 0; k < L_FRAME4k; k++ ) - { - EnvWhiteExc16k_4k[k] = EnvWhiteExc16k[4 * k]; - EnvExc16kWhtnd_4k[k] = EnvExc16kWhtnd[4 * k]; - } - - /* calculate the optimal mix factor */ - c0 = c1 = c2 = c3 = c4 = c5 = 0.0f; - for ( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - c0_part[i] = sum2_f( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c1_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c2_part[i] = sum2_f( &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c3_part[i] = -2.0f * dotp( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c4_part[i] = 2.0f * dotp( &EnvExc16kWhtnd_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], &EnvWhiteExc16k_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - c5_part[i] = sum2_f( &EnvSHBres_4k[i * L_FRAME4k / NUM_SHB_SUBGAINS], L_FRAME4k / NUM_SHB_SUBGAINS ); - - c0 += c0_part[i]; - c1 += c1_part[i]; - c2 += c2_part[i]; - c3 += c3_part[i]; - c4 += c4_part[i]; - c5 += c5_part[i]; - } - - den = 4.0f * c0 * c2 - c4 * c4; - g1 = ( c3 * c4 - 2 * c1 * c2 ) / den; - g2 = ( c1 * c4 - 2 * c0 * c3 ) / den; - - *Env_error = 0.0f; - flag_plosive = 0; - for ( i = 0; i < NUM_SHB_SUBGAINS; i++ ) - { - Env_error_part[i] = c5_part[i] + g1 * g1 * c0_part[i] + g1 * c1_part[i] + g2 * g2 * c2_part[i] + g2 * c3_part[i] + g1 * g2 * c4_part[i]; - *Env_error += Env_error_part[i]; - - if ( Env_error_part[i] > THR_ENV_ERROR_PLOSIVE ) - { - /* envelope error is too high -> likely a plosive */ - flag_plosive = 1; - } - } - - if ( flag_plosive ) - { - /* plosive detected -> set the mixing factor to 0 */ - *vf_ind = 0; - mix_factor = 0.0f; - } - else - { - /* normalize gain */ - g = g2 / ( g1 + g2 ); - - /* quantization of the mixing factor */ - cbsize = 1 << NUM_BITS_SHB_VF; - delta = 1.0f / ( cbsize - 1 ); - if ( g > 1.0f ) - { - g = 1.0f; - } - else if ( g < delta ) - { - /* prevent low gains to be quantized to 0 as this is reserved for plosives */ - g = delta; - } - - *vf_ind = usquant( g, &mix_factor, 0.0f, 1.0f / ( cbsize - 1 ), cbsize ); - } - } - else -#endif { Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, ( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); @@ -2547,21 +2367,6 @@ void GenShapedSHBExcitation_fx( } ELSE /* decoder side */ { -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - if ( *vf_ind == 0 ) - { - mix_factor = 0.0f; - flag_plosive = 1; - } - else - { - mix_factor = usdequant( *vf_ind, 0.0f, 1.0f / ( ( 1 << NUM_BITS_SHB_VF ) - 1 ) ); - } - } - else -#endif { /* *vf_ind is an integer scale by 0.125f*/ tmp = shl( *vf_ind, ( 15 - 3 ) ); @@ -2574,9 +2379,6 @@ void GenShapedSHBExcitation_fx( } } } -#ifdef ADD_IVAS_TBE_CODE - IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) -#endif { voice_factors[0] = mult_r( voice_factors[0], tmp2 ); move16(); @@ -2590,14 +2392,6 @@ void GenShapedSHBExcitation_fx( move16(); } } -#ifdef ADD_IVAS_TBE_CODE - if ( element_mode >= IVAS_CPE_DFT && nlExc16k != NULL ) - { - /* save buffers for IC-BWE */ - mvr2r( exc16kWhtnd, nlExc16k, L_FRAME16k ); - v_multc( White_exc16k, (float) sqrt( pow1 / pow22 ), mixExc16k, L_FRAME16k ); - } -#endif tmp = sub( Q_temp, 3 ); FOR( k = 0; k < L_FRAME16k; k++ ) @@ -2611,47 +2405,8 @@ void GenShapedSHBExcitation_fx( deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph ); /* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */ /* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */ -#ifdef ADD_IVAS_TBE_CODE - if ( extl_brate == SWB_TBE_1k10 || extl_brate == SWB_TBE_1k75 ) - { - if ( !flag_plosive ) /* use only LB excitation in case of plosives */ - { - /* re-scale gaussian excitation at the beginning to gradually move from old energy to new energy */ - old_scale = (float) sqrt( *prev_pow_exc16kWhtnd / pow1 ); - new_scale = 1.0f; - step_scale = ( new_scale - old_scale ) / ( L_FRAME16k / 2 ); - scale = old_scale; - - /* interpolate between the old and the new value of the mixing factor */ - old_fact = *prev_mix_factor; - new_fact = mix_factor; - step = ( new_fact - old_fact ) / ( L_FRAME16k / 2 ); - fact = old_fact; - - /* mixing of LB and gaussian excitation in the first half of the frame */ - for ( k = 0; k < L_FRAME16k / 2; k++ ) - { - exc16kWhtnd[k] = (float) fact * ( White_exc16k[k] * scale ) + (float) ( 1 - fact ) * exc16kWhtnd[k]; - fact += step; - scale += step_scale; - } - - /* mixing of LB and gaussian excitation in the second half of the frame */ - for ( ; k < L_FRAME16k; k++ ) - { - exc16kWhtnd[k] = (float) new_fact * White_exc16k[k] + (float) ( 1 - new_fact ) * exc16kWhtnd[k]; - } - } - preemph( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); - } - else -#endif { -#ifdef ADD_IVAS_TBE_CODE - if ( coder_type == UNVOICED || MSFlag == 1 ) -#else IF( EQ_16( coder_type, UNVOICED ) ) -#endif { L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ @@ -2753,11 +2508,7 @@ void GenShapedSHBExcitation_fx( } } -#ifdef ADD_IVAS_TBE_CODE - IF( LT_32( extl_brate, SWB_TBE_2k8 ) ) -#else IF( LT_32( bitrate, ACELP_24k40 ) ) -#endif { Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); /* i: exc16kWhtnd in Q_bwe_exc */ @@ -2866,10 +2617,6 @@ void GenShapedSHBExcitation_fx( set16_fx( White_exc16k_FB, 0, L_FRAME16k ); } -#ifdef ADD_IVAS_TBE_CODE - *prev_pow_exc16kWhtnd = pow1; - *prev_mix_factor = mix_factor; -#endif return; } @@ -3288,7 +3035,6 @@ void GenShapedSHBExcitation_ivas_enc_fx( { IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ { -#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!! test(); IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) { @@ -3474,33 +3220,6 @@ void GenShapedSHBExcitation_ivas_enc_fx( } } ELSE -#else - UNUSED_PARAM( Env_error_part ); - UNUSED_PARAM( Env_error ); - UNUSED_PARAM( EnvSHBres_4k ); - UNUSED_PARAM( c5_part ); - UNUSED_PARAM( c1 ); - UNUSED_PARAM( den ); - UNUSED_PARAM( c3_part ); - UNUSED_PARAM( c0 ); - UNUSED_PARAM( delta ); - UNUSED_PARAM( c3 ); - UNUSED_PARAM( c2_part ); - UNUSED_PARAM( c1_part ); - UNUSED_PARAM( EnvWhiteExc16k ); - UNUSED_PARAM( g2 ); - UNUSED_PARAM( c5 ); - UNUSED_PARAM( c4_part ); - UNUSED_PARAM( EnvWhiteExc16k_4k ); - UNUSED_PARAM( c2 ); - UNUSED_PARAM( g ); - UNUSED_PARAM( cbsize ); - UNUSED_PARAM( g1 ); - UNUSED_PARAM( EnvExc16kWhtnd ); - UNUSED_PARAM( c0_part ); - UNUSED_PARAM( EnvExc16kWhtnd_4k ); - UNUSED_PARAM( c4 ); -#endif { Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, Q_White_exc16k, pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); @@ -4003,7 +3722,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( move16(); move32(); -#if 1 // def ADD_IVAS_TBE_CODE Word16 alpha, step, mem_csfilt_left, mem_csfilt_right, excNoisyEnvLeft[L_FRAME16k], excNoisyEnvRight[L_FRAME16k]; Word16 cbsize; Word16 mix_factor, old_fact, new_fact, fact, old_scale, new_scale, step_scale; @@ -4018,7 +3736,7 @@ void GenShapedSHBExcitation_ivas_dec_fx( mix_factor = 0; /* Q15 */ move16(); -#endif + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER ); FOR( i = 0; i < L_FRAME32k; i = i + 2 ) @@ -4050,11 +3768,7 @@ void GenShapedSHBExcitation_ivas_dec_fx( /* i: exc16k in Q_bwe_exc */ /* o: exc16kWhtnd in Q_bwe_exc */ -#if 1 // def ADD_IVAS_TBE_CODE IF( GE_32( extl_brate, SWB_TBE_2k8 ) ) -#else - IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif { temp2 = 0; move16(); @@ -4089,11 +3803,8 @@ void GenShapedSHBExcitation_ivas_dec_fx( Q_pow1 = shl( *Q_bwe_exc, 1 ); test(); -#if 1 // ADD_IVAS_TBE_CODE + IF( flag_ACELP16k == 0 ) -#else - IF( ( LE_32( bitrate, ACELP_13k20 ) ) && ( GE_32( bitrate, ACELP_7k20 ) ) ) -#endif { /* varEnvShape = mean_fx(voice_factors, 4); */ /* unroll the loop */ @@ -4139,12 +3850,8 @@ void GenShapedSHBExcitation_ivas_dec_fx( test(); test(); test(); -#if 1 // def ADD_IVAS_TBE_CODE - test(); + IF( EQ_16( element_mode, EVS_MONO ) && *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#else - IF( *mem_csfilt == 0 && ( ( EQ_32( bitrate, ACELP_9k60 ) ) || ( EQ_32( bitrate, ACELP_16k40 ) ) || ( EQ_32( bitrate, ACELP_24k40 ) ) ) ) -#endif { /* pre-init smoothing filter to avoid energy drop outs */ L_tmp = L_mult( excTmp2[0], 1638 ); @@ -4171,7 +3878,7 @@ void GenShapedSHBExcitation_ivas_dec_fx( *mem_csfilt = Mult_32_16( L_tmp, varEnvShape ); move32(); } -#if 1 // def ADD_IVAS_TBE_CODE + IF( MSFlag > 0 ) { // varEnvShape = 0.995f; @@ -4231,7 +3938,7 @@ void GenShapedSHBExcitation_ivas_dec_fx( } } ELSE -#endif + { /* Track the low band envelope */ L_tmp = L_shl( *mem_csfilt, sub( Q_excTmp2, *Q_bwe_exc ) ); @@ -4257,7 +3964,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( *mem_csfilt = L_shr( L_tmp, sub( Q_excTmp2, *Q_bwe_exc ) ); move32(); } -#if 1 // def ADD_IVAS_TBE_CODE test(); IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) { @@ -4303,7 +4009,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( } } ELSE -#endif { /* create a random excitation - Reuse exc16k memory */ White_exc16k = exc16k; @@ -4352,20 +4057,15 @@ void GenShapedSHBExcitation_ivas_dec_fx( Q_White_exc16k = add( Q_White_exc16k, sub( Q_excTmp2, 10 ) ); } -#if 1 // def ADD_IVAS_TBE_CODE flag_plosive = 0; move16(); test(); test(); test(); IF( GE_32( extl_brate, SWB_TBE_2k8 ) || EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) -#else - IF( GE_32( bitrate, ACELP_24k40 ) ) -#endif { IF( EQ_16( *vf_ind, 20 ) ) /* encoder side */ { -#ifndef ADD_IVAS_TBE_CODE // BELOW PART WILL NEED TO BE CONVERTED FOR ENCODER!! test(); IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) { @@ -4544,33 +4244,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( } } ELSE -#else - UNUSED_PARAM( Env_error_part ); - UNUSED_PARAM( Env_error ); - UNUSED_PARAM( EnvSHBres_4k ); - UNUSED_PARAM( c5_part ); - UNUSED_PARAM( c1 ); - UNUSED_PARAM( den ); - UNUSED_PARAM( c3_part ); - UNUSED_PARAM( c0 ); - UNUSED_PARAM( delta ); - UNUSED_PARAM( c3 ); - UNUSED_PARAM( c2_part ); - UNUSED_PARAM( c1_part ); - UNUSED_PARAM( EnvWhiteExc16k ); - UNUSED_PARAM( g2 ); - UNUSED_PARAM( c5 ); - UNUSED_PARAM( c4_part ); - UNUSED_PARAM( EnvWhiteExc16k_4k ); - UNUSED_PARAM( c2 ); - UNUSED_PARAM( g ); - UNUSED_PARAM( cbsize ); - UNUSED_PARAM( g1 ); - UNUSED_PARAM( EnvExc16kWhtnd ); - UNUSED_PARAM( c0_part ); - UNUSED_PARAM( EnvExc16kWhtnd_4k ); - UNUSED_PARAM( c4 ); -#endif { Estimate_mix_factors_fx( shb_res, Q_shb, exc16kWhtnd, *Q_bwe_exc, White_exc16k, ( *Q_bwe_exc - NOISE_QADJ ), pow1, Q_pow1, pow22, Q_pow22, voiceFacEst, vf_ind ); @@ -4588,7 +4261,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( ELSE /* decoder side */ { test(); -#if 1 // def ADD_IVAS_TBE_CODE IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) ) { IF( *vf_ind == 0 ) @@ -4606,7 +4278,6 @@ void GenShapedSHBExcitation_ivas_dec_fx( } } ELSE -#endif { /* *vf_ind is an integer scale by 0.125f*/ tmp = shl( *vf_ind, ( 15 - 3 ) ); @@ -4619,10 +4290,8 @@ void GenShapedSHBExcitation_ivas_dec_fx( } } } -#if 1 // def ADD_IVAS_TBE_CODE test(); IF( NE_32( extl_brate, SWB_TBE_1k10 ) && NE_32( extl_brate, SWB_TBE_1k75 ) ) -#endif { voice_factors[0] = mult_r( voice_factors[0], tmp2 ); move16(); @@ -4979,10 +4648,8 @@ void GenShapedSHBExcitation_ivas_dec_fx( set16_fx( White_exc16k_FB, 0, L_FRAME16k ); } -#if 1 // def ADD_IVAS_TBE_CODE *prev_pow_exc16kWhtnd = L_shr_sat( pow1, Q_pow1 ); // power goes above MAX_32 *prev_mix_factor = mix_factor; -#endif return; } @@ -7566,56 +7233,7 @@ void Estimate_mix_factors_fx( return; } -#ifdef ADD_IVAS_TBE_CODE -/*-------------------------------------------------------------------* - * tbe_celp_exc() * - * * - * Prepare adaptive part of TBE excitation * - *-------------------------------------------------------------------*/ - -void tbe_celp_exc( - const int16_t element_mode, /* i : element mode */ - const int16_t idchan, /* i : channel ID */ - float *bwe_exc, /* i/o: BWE excitation */ - const int16_t L_frame, /* i : frame length */ - const int16_t L_subfr, /* i : subframe length */ - const int16_t i_subfr, /* i : subframe index */ - const int16_t T0, /* i : integer pitch lag */ - const int16_t T0_frac, /* i : fraction of lag */ - float *error, /* i/o: error */ - const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ -) -{ - int16_t i, offset; - - if ( element_mode == IVAS_CPE_TD && idchan == 1 && !tdm_LRTD_flag ) - { - return; - } - - if ( L_frame == L_FRAME ) - { - offset = tbe_celp_exc_offset( T0, T0_frac ); - - for ( i = 0; i < L_subfr * HIBND_ACB_L_FAC; i++ ) - { - bwe_exc[i + i_subfr * HIBND_ACB_L_FAC] = bwe_exc[i + i_subfr * HIBND_ACB_L_FAC - offset + (int16_t) *error]; - } - *error += (float) offset - (float) T0 * HIBND_ACB_L_FAC - 0.25f * HIBND_ACB_L_FAC * (float) T0_frac; - } - else - { - offset = T0 * 2 + (int16_t) ( (float) T0_frac * 0.5f + 4 + 0.5f ) - 4; - for ( i = 0; i < L_subfr * 2; i++ ) - { - bwe_exc[i + i_subfr * 2] = bwe_exc[i + i_subfr * 2 - offset + (int16_t) *error]; - } - *error += (float) offset - (float) T0 * 2 - 0.5f * (float) T0_frac; - } - return; -} -#endif /*======================================================================================*/ /* FUNCTION : prep_tbe_exc_fx() */ /*--------------------------------------------------------------------------------------*/ @@ -7647,9 +7265,6 @@ void tbe_celp_exc( #ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( const Word16 L_frame_fx, /* i : length of the frame */ -#ifdef ADD_IVAS_TBE_CODE - const Word16 L_subfr, -#endif const Word16 i_subfr_fx, /* i : subframe index */ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ @@ -7664,13 +7279,6 @@ void prep_tbe_exc_fx( Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ Word32 core_brate -#ifdef ADD_IVAS_TBE_CODE - , /* i : core bitrate */ - const int16_t element_mode, /* i : element mode */ - const int16_t idchan, /* i : channel ID */ - const int16_t flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif ) { Word16 i; @@ -7685,10 +7293,8 @@ void prep_tbe_exc_fx( Word32 L_tmp, Ltemp1, Ltemp2; Word32 tempQ31; Word16 tempQ15; -#ifndef ADD_IVAS_TBE_CODE Word16 L_subfr = L_SUBFR; move16(); -#endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -7719,17 +7325,6 @@ void prep_tbe_exc_fx( *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); move16(); -#ifdef ADD_IVAS_TBE_CODE - IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) - { - IF( flag_TD_BWE && i_subfr == 0 ) - { - set16_fx( bwe_exc, 0, L_FRAME32k ); - } - return; - } - -#endif IF( EQ_16( L_frame_fx, L_FRAME ) ) { interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ @@ -7816,9 +7411,7 @@ void prep_tbe_exc_fx( #endif void prep_tbe_exc_ivas_fx( const Word16 L_frame_fx, /* i : length of the frame */ -#if 1 // def ADD_IVAS_TBE_CODE const Word16 L_subfr, -#endif const Word16 i_subfr_fx, /* i : subframe index */ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ @@ -7833,13 +7426,11 @@ void prep_tbe_exc_ivas_fx( Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ Word32 core_brate -#if 1 // def ADD_IVAS_TBE_CODE , /* i : core bitrate */ const Word16 element_mode, /* i : element mode */ const Word16 idchan, /* i : channel ID */ const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ -#endif ) { Word16 i; @@ -7885,7 +7476,7 @@ void prep_tbe_exc_ivas_fx( *voice_factors_fx = s_min( s_max( *voice_factors_fx, 0 ), MAX_16 ); move16(); -#if 1 // def ADD_IVAS_TBE_CODE + test(); test(); IF( EQ_16( element_mode, IVAS_CPE_TD ) && EQ_16( idchan, 1 ) && !tdm_LRTD_flag ) @@ -7898,7 +7489,6 @@ void prep_tbe_exc_ivas_fx( return; } -#endif IF( EQ_16( L_frame_fx, L_FRAME ) ) { interp_code_5over2_fx( code_fx, tmp_code_fx, L_subfr ); /* code: Q9, tmp_code: Q9 */ diff --git a/lib_com/tcx_mdct_window.c b/lib_com/tcx_mdct_window.c index 44ce806f7..0316ec582 100644 --- a/lib_com/tcx_mdct_window.c +++ b/lib_com/tcx_mdct_window.c @@ -123,9 +123,6 @@ void mdct_window_sine( Word16 n /* Q0 */ ) { -#ifdef IVAS_CODE - if ( element_mode == EVS_MONO ) -#endif { const PWord16 *table; table = getSineWindowTable( n ); @@ -138,42 +135,6 @@ void mdct_window_sine( } // PMT("getSineWindowTable needs to be updated for IVAS") } -#ifdef IVAS_CODE - else - { - const float *window_table = 0; - Word16 buf_in_size = 0; - switch ( window_type ) - { - case FULL_OVERLAP: - window_table = tcx_mdct_window_48; - buf_in_size = 420; - break; - case HALF_OVERLAP: - window_table = tcx_mdct_window_half_48; - buf_in_size = 180; - break; - case TRANSITION_OVERLAP: - case MIN_OVERLAP: - window_table = tcx_mdct_window_trans_48; - buf_in_size = 60; - break; - - default: - assert( 0 && "Unsupported window type" ); - break; - } - - if ( Fs == 48000 ) - { - mvr2r( window_table, window, n ); - } - else - { - lerp( window_table, window, n, buf_in_size ); - } - } -#endif } diff --git a/lib_com/tns_base.c b/lib_com/tns_base.c index 101bc1df8..82de45023 100644 --- a/lib_com/tns_base.c +++ b/lib_com/tns_base.c @@ -96,10 +96,8 @@ void InitTnsConfiguration( Word32 nSampleRate; Word16 s1; Word16 s2; -#ifndef ADD_IVAS_TNS (void) ( element_mode ); (void) ( is_mct ); -#endif nSampleRate = bwMode2fs[bwidth]; move32(); startLineFilter = &pTnsConfig->iFilterBorders[1]; @@ -138,21 +136,6 @@ void InitTnsConfiguration( ELSE IF( GT_32( nSampleRate, INT_FS_16k ) ) { -#ifdef ADD_IVAS_TNS - if ( ( element_mode > IVAS_SCE ) && ( total_brate >= ( is_mct ? IVAS_32k : IVAS_48k ) ) ) - { - pTnsConfig->nMaxFilters = sizeof( tnsParameters32kHz_Stereo ) / sizeof( tnsParameters32kHz_Stereo[0] ); - if ( nSampleRate == 100 * frameLength ) /* sub-frame length is <= 10 ms */ - { - pTnsConfig->pTnsParameters = tnsParameters32kHz_grouped; - } - else - { - pTnsConfig->pTnsParameters = tnsParameters32kHz_Stereo; - } - } - else -#endif { move16(); @@ -212,9 +195,6 @@ void InitTnsConfiguration( move16(); pTnsConfig->iFilterBorders[0] = frameLength; } -#ifdef ADD_IVAS_TNS - pTnsConfig->allowTnsOnWhite = 0; -#endif return; /*TNS_NO_ERROR;*/ } diff --git a/lib_dec/FEC_HQ_phase_ecu_fx.c b/lib_dec/FEC_HQ_phase_ecu_fx.c index ef09c3de3..dedf9f859 100644 --- a/lib_dec/FEC_HQ_phase_ecu_fx.c +++ b/lib_dec/FEC_HQ_phase_ecu_fx.c @@ -65,25 +65,12 @@ static void windowing_ROM_optimized( const Word16 *, Word16 *, const Word16, con static void fft_spec2_fx( const Word16[], Word32[], const Word16 ); static void trans_ana_fx( const Word16 *, Word16 *, Word16 *, Word16 *, const Word16, const Word16, const Word16, const Word16, Word16 *, Word16 *, Word16 *, Word16 * ); static void peakfinder_fx( const Word16 *, const Word16, Word16 *, Word16 *, const Word16 -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const Word16 endpoints /* i : Flag to include endpoints in peak search */ -#endif ); static Word16 imax_fx( const Word16 *, const Word16 ); static void spec_ana_fx( const Word16 *prevsynth, Word16 *plocs, Word32 *plocsi, Word16 *num_plocs, Word16 *X_sav, const Word16 output_frame, const Word16 bwidth_fx, Word16 *Q -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const Word16 element_mode, - Word16 *noise_fac, - const Word16 pcorr -#endif ); static void subst_spec_fx( const Word16 *, const Word32 *, Word16 *, const Word16, Word16 *, const Word16 *, const Word16, const Word16 *, const Word16, Word16 *, const Word16 *, const Word16 *, Word16, const Word16 * ); static Word16 rand_phase_fx( const Word16 seed, Word16 *sin_F, Word16 *cos_F ); -#ifdef IVAS_FEC_ECU_TO_COMPLETE -static float imax2_jacobsen_mag( const float *y_re, const float *y_im ); -#endif /*------------------------------------------------------------------* * rand_phase() @@ -666,9 +653,6 @@ static void ivas_peakfinder_fx( move16(); } len0Minus2 = sub( len0, 2 ); -#ifdef IVAS_FEC_ECU_TO_COMPLETE - PMT( "\nlen0Minus2 = sub(len0, 2) is it still correct if IVAS_FEC_ECU_TO_COMPLETE is activated\n" ) -#endif FOR( i = 0; i < len0Minus2; i++ ) { @@ -912,10 +896,6 @@ static void peakfinder_fx( Word16 *plocs, /* o : the indices of the identified peaks in x0 Q0 */ Word16 *cInd, /* o : number of identified peaks Q0 */ const Word16 sel /* i : The amount above surrounding data for a peak to be identified */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const Word16 endpoints /* i : Flag to include endpoints in peak search */ -#endif ) { const Word16 *pX0; @@ -951,11 +931,6 @@ static void peakfinder_fx( pInd = indarr; pDx01 = dx0; pDx0 = pDx01 + 1; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - len = 0; - move16(); - IF( endpoints ) -#endif { *pX++ = *pX0++; move16(); @@ -965,9 +940,6 @@ static void peakfinder_fx( move16(); } len0Minus2 = sub( len0, 2 ); -#ifdef IVAS_FEC_ECU_TO_COMPLETE - PMT( "\nlen0Minus2 = sub(len0, 2) is it still correct if IVAS_FEC_ECU_TO_COMPLETE is activated\n" ) -#endif FOR( i = 0; i < len0Minus2; i++ ) { @@ -981,9 +953,6 @@ static void peakfinder_fx( } pX0++; } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( endpoints ) -#endif { *pInd = len0Minus1; move16(); @@ -994,13 +963,7 @@ static void peakfinder_fx( minimum_fx( x, len, &minMag ); pInd = indarr; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - test(); - test(); - IF( GT_16( len, 2 ) || ( !endpoints && ( len > 0 ) ) ) -#else IF( GT_16( len, 2 ) ) -#endif { /* Set initial parameters for loop */ tempMag = minMag; @@ -1011,9 +974,6 @@ static void peakfinder_fx( move16(); threshold = add( leftMin, sel ); -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( len > 0 ) -#endif { /* Deal with first point a little differently since tacked it on Calculate the sign of the derivative since we took the first point @@ -1060,20 +1020,6 @@ static void peakfinder_fx( } pX--; /* After decrement, pX points to either x[-1] or x[0]. */ } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { - PMTE() - ii = -1; /* First point is a peak */ - if ( len >= 2 ) - { - if ( x[1] >= x[0] ) - { - ii = 0; /* First point is a valley, skip it */ - } - } - } -#endif *cInd = 0; move16(); /*Loop through extrema which should be peaks and then valleys*/ @@ -1179,9 +1125,6 @@ static void peakfinder_fx( } ELSE /* This is a monotone function where an endpoint is the only peak */ { -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( endpoints ) -#endif { xInd = 1; move16(); @@ -1206,13 +1149,6 @@ static void peakfinder_fx( move16(); } } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { /* Input constant or all zeros -- no peaks found */ - *cInd = 0; - move16(); - } -#endif } } @@ -1709,12 +1645,6 @@ static void spec_ana_fx( const Word16 output_frame, /* i : Frame length Q0 */ const Word16 bwidth_fx, /* i : Encoded bandwidth index Q0 */ Word16 *Q /* o : Q value of the fft spectrum */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const Word16 element_mode, /* i : IVAS element mode */ - Word16 *noise_fac, /* o : for few peaks zeroing valleys decision making */ - const Word16 pcorr -#endif ) { Word16 Lprot, LprotLog2Minus1, hamm_len2, Lprot2, Lprot2_1, m, n; @@ -1782,52 +1712,18 @@ static void spec_ana_fx( IF( EQ_16( output_frame, L_FRAME48k ) ) { /* Apply hamming-rect window */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( EQ_16( element_mode, EVS_MONO ) ) -#endif { windowing( xfp, xfp, w_hamm_sana48k_2_fx, rectLength, hamm_len2 ); } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { - PMTE() - // window_corr = w_hamm[0]; - // window_corr_step = w_hamm[0] / hamm_len2; - // for (i = 0; i < hamm_len2; i++) - //{ - // xfp[i] = prevsynth[i] * (w_hamm[i] - window_corr); - // xfp[Lprot - i - 1] = prevsynth[Lprot - i - 1] * (w_hamm[i] - window_corr); - // window_corr -= window_corr_step; - // } - } -#endif /* Spectrum */ fft3_fx( xfp, xfp, Lprot ); } ELSE { -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( EQ_16( element_mode, EVS_MONO ) ) -#endif { /* Apply hamming-rect window */ windowing_ROM_optimized( xfp, xfp, sinTblOffset, rectLength, hamm_len2 ); } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { - PMTE() - // window_corr = w_hamm[0]; - // window_corr_step = w_hamm[0] / hamm_len2; - // for (i = 0; i < hamm_len2; i++) - //{ - // xfp[i] = prevsynth[i] * (w_hamm[i] - window_corr); - // xfp[Lprot - i - 1] = prevsynth[Lprot - i - 1] * (w_hamm[i] - window_corr); - // window_corr -= window_corr_step; - // } - } -#endif /* Spectrum */ r_fft_fx_lc( pFftTbl, Lprot, Lprot2, LprotLog2Minus1, xfp, xfp, 1 ); } @@ -1880,35 +1776,13 @@ static void spec_ana_fx( /* Find maximum and minimum. */ maximum_fx( xfp, Lprot2_1, &Xmax ); minimum_fx( xfp, Lprot2_1, &Xmin ); -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( EQ_16( element_mode, EVS_MONO ) ) -#endif { sel = mult_r( sub( Xmax, Xmin ), CMPLMNT_PFIND_SENS_FX ); } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { - sel = ( Xmax - Xmin ) * ( 1.0f - ST_PFIND_SENS ); - } -#endif peakfinder_fx( xfp, Lprot2_1, plocs, num_plocs, sel -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - endpoints -#endif ); -#ifdef IVAS_FEC_ECU_TO_COMPLETE - /* Currently not the pitch correlation but some LF correlation */ - if ( element_mode != EVS_MONO && *num_plocs > 50 && pcorr < 0.6f ) - { - *num_plocs = 0; - } - - IF( EQ_16( element_mode, EVS_MONO ) ) -#endif { /* Refine peaks */ @@ -1955,105 +1829,6 @@ static void spec_ana_fx( move32(); /* in Q16. Append the fractional part to the integral part. */ } } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { - Lprot2p1 = Lprot / 2 + 1; - - /* Refine peaks */ - pPlocsi = plocsi; - pPlocs = plocs; - n = *num_plocs; /* number of peaks to process */ - - /* Special case-- The very 1st peak if it is at 0 index position (DC) */ - /* With DELTA_CORR_F0_INT == 2 one needs to handle both *pPlocs==0 and *pPlocs==1 */ - if ( n > 0 && *pPlocs == 0 ) /* Very 1st peak position possible to have a peak at 0/DC index position. */ - { - *pPlocsi++ = *pPlocs + imax_pos( &xfp[*pPlocs] ); - pPlocs++; - n = n - 1; - } - - if ( n > 0 && *pPlocs == 1 ) /* Also 2nd peak position uses DC which makes jacobsen unsuitable. */ - { - *pPlocsi++ = *pPlocs - 1 + imax_pos( &xfp[*pPlocs - 1] ); - currPlocs = *pPlocs++; - n = n - 1; - } - - /* All remaining peaks except the very last two possible integer positions */ - currPlocs = *pPlocs++; - endPlocs = Lprot2p1 - DELTA_CORR_F0_INT; /* last *pPlocs position for Jacobsen */ - - /* precompute number of turns based on endpoint integer location and make into a proper for loop */ - if ( n > 0 ) - { - nJacob = n; - if ( sub( endPlocs, plocs[sub( *num_plocs, 1 )] ) <= 0 ) - { - nJacob = sub( nJacob, 1 ); - } - - for ( k = 0; k < nJacob; k++ ) - { - *pPlocsi++ = currPlocs + imax2_jacobsen_mag( &( X_sav[currPlocs - 1] ), &( X_sav[Lprot - 1 - currPlocs] ) ); - currPlocs = *pPlocs++; - } - n = n - nJacob; - } - - /* At this point there should at most two plocs left to process */ - /* the position before fs/2 and fs/2 both use the same magnitude points */ - if ( n > 0 ) - { - /* [ . . . . . . . ] Lprot/2+1 positions */ - /* | | | */ - /* 0 (Lprot/2-2) (Lprot/2) */ - - if ( currPlocs == ( Lprot2p1 - DELTA_CORR_F0_INT ) ) /* Also 2nd last peak position uses fs/2 which makes jacobsen less suitable. */ - { - *pPlocsi++ = currPlocs - 1 + imax_pos( &xfp[currPlocs - 1] ); - currPlocs = *pPlocs++; - n = n - 1; - } - - /* Here the only remaining point would be a fs/2 plocs */ - /* pXfp = xfp + sub(Lprot2,1); already set just a reminder where it - * whould point */ - if ( n > 0 ) /* fs/2 which makes special case . */ - { - *pPlocsi++ = currPlocs - 2 + imax_pos( &xfp[currPlocs - 2] ); - currPlocs = *pPlocs++; - n = n - 1; - } - } - - /* For few peaks decide noise floor attenuation */ - if ( *num_plocs < 3 && *num_plocs > 0 ) - { - sig = sum_f( xfp, Lprot2_1 ) + EPSILON; - - /*excluding peaks and neighboring bins*/ - for ( i = 0; i < *num_plocs; i++ ) - { - st_point = max( 0, plocs[i] - DELTA_CORR ); - end_point = min( Lprot2_1 - 1, plocs[i] + DELTA_CORR ); - set_f( &xfp[st_point], 0.0f, end_point - st_point + 1 ); - } - noise = sum_f( xfp, Lprot2_1 ) + EPSILON; - nsr = noise / sig; - - if ( nsr < 0.03f ) - { - *noise_fac = 0.5f; - } - else - { - *noise_fac = 1.0f; - } - } - } -#endif } /*-------------------------------------------------------------------* @@ -2474,12 +2249,6 @@ static void subst_spec_fx( const Word16 *beta, /* i : Magnitude modification factors for fade to average Q15 */ Word16 beta_mute, /* i : Factor for long-term mute Q15 */ const Word16 *Xavg /* i : Frequency group averages to fade to Q0 */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const Word16 element_mode, /* i : IVAS element mode */ - const Word16 ph_ecu_lookahead, /* i : Phase ECU lookahead */ - const Word16 noise_fac /* i : noise factor */ -#endif ) { Word16 Xph_short; @@ -2500,11 +2269,6 @@ static void subst_spec_fx( Word16 alpha_local; Word16 beta_local; Word16 expo; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - Word16 one_peak_flag_mask; - Word16 alpha_local; - Word16 beta_local; -#endif Word16 mag_chg_local; /*for peak attenuation in burst */ Lprot = 512; @@ -2560,21 +2324,6 @@ static void subst_spec_fx( move32(); } } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - one_peak_flag_mask = 1; /* all ones mask -> keep */ - IF( NE_16( element_mode, EVS_MONO ) ) - { - if ( ( *num_plocs > 0 ) && sub( *num_plocs, 3 ) < 0 ) - { - one_peak_flag_mask = noise_fac; /* all zeroes mask -> zero */ - } - if ( *num_plocs == 0 ) - { - X[0] = 0; /* reset DC if there are no peaks */ - X[shr( Lprot, 1 )] = 0; /* also reset fs/2 if there are no peaks */ - } - } -#endif lprotBy2Minus1 = sub( shr( Lprot, 1 ), 1 ); i = 1; move16(); @@ -2635,21 +2384,10 @@ static void subst_spec_fx( move16(); im = *pImX; move16(); -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( EQ_16( element_mode, EVS_MONO ) ) -#endif { tmp = sub( mult_r( re, cos_F ), mult_r( im, sin_F ) ); im = add( mult_r( re, sin_F ), mult_r( im, cos_F ) ); } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { - PMTE() - // tmp = one_peak_flag_mask * (X[i] * cos_F - X[im_ind] * sin_F); - // X[im_ind] = one_peak_flag_mask * (X[i] * sin_F + X[im_ind] * cos_F); - } -#endif IF( LT_16( alpha[k], 32766 ) ) { *seed = rand_phase_fx( *seed, &sin_F, &cos_F ); @@ -2766,21 +2504,10 @@ static void subst_spec_fx( move16(); im = *pImX; move16(); -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( EQ_16( element_mode, EVS_MONO ) ) -#endif { tmp = sub_sat( mult_r( re, cos_F ), mult_r( im, sin_F ) ); im = add_sat( mult_r( re, sin_F ), mult_r( im, cos_F ) ); } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - ELSE - { - PMTE() - // tmp = one_peak_flag_mask * (X[i] * cos_F - X[im_ind] * sin_F); - // X[im_ind] = one_peak_flag_mask * (X[i] * sin_F + X[im_ind] * cos_F); - } -#endif IF( LT_16( alpha[k], 32766 ) ) { alpha_local = mag_chg_local; @@ -3032,97 +2759,7 @@ static void rec_wtda_fx( Word16 *p_ecu; Word16 g; Word16 tbl_delta; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - float xsubst_[2 * L_FRAME48k]; - const float *w_hamm; - float *pX_start, *pX_end; - float tmp; - int16_t hamm_len2; - float *pNew; - const float *pOldW, *pNewW; - float xfwin[NS2SA( L_FRAME48k * FRAMES_PER_SEC, N_ZERO_MDCT_NS - ( 2 * FRAME_SIZE_NS - L_PROT_NS ) / 2 )]; - const float *pOld; - int16_t copy_len; - int16_t ola_len; - - copy_len = NS2SA( output_frame * FRAMES_PER_SEC, ( 2 * FRAME_SIZE_NS - L_PROT_NS ) / 2 ); /* prototype fill on each side of xsubst to fill MDCT Frame */ - ola_len = NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS - ( 2 * FRAME_SIZE_NS - L_PROT_NS ) / 2 ); /* remaining lengt of LA_ZEROS to overlap add decoded with xsubst */ - - if ( output_frame == L_FRAME48k ) - { - w_hamm = w_hamm_sana48k_2; - hamm_len2 = L_PROT_HAMM_LEN2_48k; - } - else if ( output_frame == L_FRAME32k ) - { - w_hamm = w_hamm_sana32k_2; - hamm_len2 = L_PROT_HAMM_LEN2_32k; - } - else - { - w_hamm = w_hamm_sana16k_2; - hamm_len2 = L_PROT_HAMM_LEN2_16k; - } - - if ( element_mode != EVS_MONO && *num_p > 0 && plocs[0] > 3 ) - { - /* Perform inverse windowing of hammrect */ - pX_start = X; - pX_end = X + Lprot - 1; - for ( i = 0; i < hamm_len2; i++ ) - { - tmp = 1.0f / *w_hamm; - *pX_start *= tmp; - *pX_end *= tmp; - pX_start++; - pX_end--; - w_hamm++; - } - } - - /* extract reconstructed frame with aldo window */ - timesh = NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS ) - ( 2 * output_frame - Lprot ) / 2; - - set_f( xsubst_, 0.0f, 2 * output_frame - Lprot + timesh ); - mvr2r( X, xsubst_ + 2 * output_frame - Lprot + timesh, Lprot - timesh ); - - /* Copy and OLA look ahead zero part of MDCT window from decoded signal */ - if ( element_mode != EVS_MONO ) - { - mvr2r( old_dec, xsubst_ + NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS ), copy_len ); /* also need to scale to Q0 ?? */ - pOld = old_dec + copy_len; - pNew = xsubst_ + copy_len + NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS ); - sinq( EVS_PI / ( ola_len * 2 ), 0.0f, ola_len, xfwin ); - v_mult( xfwin, xfwin, xfwin, ola_len ); /* xfwin = sin^2 of 0..pi/4 */ - pOldW = xfwin + ola_len - 1; - pNewW = xfwin; - for ( i = 0; i < ola_len; i++ ) - { - *pNew = *pOld * *pOldW + *pNew * *pNewW; - pOld += 1; - pNew += 1; - pOldW -= 1; - pNewW += 1; - } - } - else - { - /* Smoothen onset of ECU frame */ - xf_len = (int16_t) ( (float) output_frame * N_ZERO_MDCT_NS / FRAME_SIZE_NS ) - ( output_frame - Lprot / 2 ); - p_ecu = xsubst_ + 2 * output_frame - Lprot + timesh; - tbl_delta = 64.f / xf_len; /* 64 samples = 1/4 cycle in sincos_t */ - for ( i = 0; i < xf_len; i++, p_ecu++ ) - { - g = sincos_t[( (int16_t) ( i * tbl_delta ) )]; - g *= g; - *p_ecu = g * ( *p_ecu ); - } - } - - /* Apply TDA and windowing to ECU frame */ - wtda( xsubst_ + output_frame, ecu_rec, NULL, ALDO_WINDOW, ALDO_WINDOW, output_frame ); -#else // PMTE() xsubst_ = rec_buf + output_frame; Lprot2 = shr( Lprot, 1 ); @@ -3175,7 +2812,6 @@ static void rec_wtda_fx( out_ptr = rec_buf + sub( shl( output_frame, 1 ), timesh ); wtda_fx( out_ptr, &Qin, ecu_rec, NULL, 0, ALDO_WINDOW, ALDO_WINDOW, /* window overlap of current frame (0: full, 2: none, or 3: half) */ output_frame ); -#endif return; } @@ -3240,13 +2876,6 @@ static void rec_frame_fx( Word32 *ecu_rec, /* o : Reconstructed frame in tda domain */ const Word16 output_frame, /* i : Frame length */ const Word16 Q -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const float *old_dec, /* i : end of last decoded for OLA before tda and itda */ - const int16_t element_mode, /* i : IVAS element mode */ - const int16_t *num_p, /* i : Number of peaks */ - const int16_t *plocs /* i : Peak locations */ -#endif ) { const Word16 *pFftTbl; @@ -4034,28 +3663,11 @@ static void fec_ecu_dft_fx( Word16 *Tf_abs, /*Qout */ Word16 *Nfft, Word16 *exp /*Qout = Qin+exp */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const int16_t element_mode /* i : IVAS element mode */ -#endif ) { Word32 L_tmp, Tmp, Tfr32[512], Tfi32[512], fac, *Pt1, *Pt2; Word16 i, tmp, tmp_short, N_LP, target[2 * L_FRAME48k], Tfr16[FEC_FFT_MAX_SIZE], *pt1, *pt2, *pt3; Word16 tmp_loop; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - int16_t alignment_point; - - Lon20 = (int16_t) 160 / 20; - if ( element_mode == EVS_MONO ) - { - alignment_point = 2 * 160 - 3 * Lon20; - } - else - { - alignment_point = 2 * 160; - } -#endif tmp = sub( 296, N ); Copy( &prevsynth_LP[tmp], target, N ); @@ -4588,11 +4200,6 @@ static void fec_noise_filling_fx( const Word16 N, const Word16 HqVoicing, Word16 *gapsynth_fx /*Qsynth */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const int16_t element_mode, /* i : IVAS element mode */ - const float *old_out -#endif ) { @@ -4607,22 +4214,6 @@ static void fec_noise_filling_fx( Word32 L_tmp; const Word16 *sinq_tab; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - - const float *p_mdct_ola; - int16_t alignment_point; - PMTE() - if ( element_mode == EVS_MONO ) - { - alignment_point = 2 * L - 3 * L / 20; - } - else - { - alignment_point = 2 * L; - } - mvr2r( prevsynth + alignment_point - N, noisevect, N ); -#endif - IF( EQ_16( L, L_FRAME32k ) ) { sinq_tab = sinq_32k; @@ -4693,18 +4284,6 @@ static void fec_noise_filling_fx( tmp_fx = div_s( 1, Rnd_N_noise ); /*Q15 */ tmp_fx = round_fx_sat( L_shl_sat( L_mult( tmp_fx, 25736 ), 2 ) ); /*Q15 */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - if ( element_mode == EVS_MONO ) - { - kk = 7 * L / 20; - p_mdct_ola = prevsynth + 37 * L / 20; - } - else - { - kk = NS2SA( L * FRAMES_PER_SEC, N_ZERO_MDCT_NS ); - p_mdct_ola = old_out + kk; - } -#endif sinq_fx( shr( tmp_fx, 1 ), shr( tmp_fx, 2 ), Rnd_N_noise, SS_fx ); @@ -4812,11 +4391,6 @@ static void fec_alg_fx( const Word16 decimatefactor, const Word16 HqVoicing, Word16 *gapsynth /*Qin */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const Word16 element_mode, /* i : IVAS element mode */ - const Word16 *old_out -#endif ) { Word16 Nfft; @@ -4829,19 +4403,11 @@ static void fec_alg_fx( Word16 n, Q; fec_ecu_dft_fx( prevsynth_LP, N, Tfr, Tfi, &sum_Tf_abs, Tf_abs, &Nfft, &exp -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - element_mode -#endif ); sinusoidal_synthesis_fx( Tfr, Tfi, Tf_abs, N, output_frame, decimatefactor, Nfft, sum_Tf_abs, synthesis, HqVoicing, exp ); fec_noise_filling_fx( prevsynth, synthesis, ni_seed_forfec, output_frame, i_mult2( N, decimatefactor ), HqVoicing, gapsynth -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - element_mode, old_out -#endif ); n = R1_48 - R2_48; @@ -5018,11 +4584,6 @@ static void hq_phase_ecu_fx( Word16 *beta_mute, /* o : Factor for long-term mute Q15 */ const Word16 bwidth_fx, /* i : Encoded bandwidth */ const Word16 output_frame /* i : frame length */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - const Word16 pcorr, - const Word16 element_mode /* i : IVAS element mode */ -#endif ) { Word16 lprot, offset; @@ -5030,22 +4591,6 @@ static void hq_phase_ecu_fx( Word16 seed; Word16 alpha[LGW_MAX], beta[LGW_MAX]; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - const float *old_dec; - float noise_fac; - int16_t ph_ecu_lookahead; - - noise_fac = 1.0f; - - if ( element_mode == EVS_MONO ) - { - ph_ecu_lookahead = NS2SA( output_frame * FRAMES_PER_SEC, PH_ECU_LOOKAHEAD_NS ); - } - else - { - ph_ecu_lookahead = 0; - } -#endif IF( EQ_16( output_frame, L_FRAME48k ) ) { lprot = L_PROT48k; /* 1536 = (2*output_frame)*1024/1280 */ @@ -5074,29 +4619,17 @@ static void hq_phase_ecu_fx( { test(); // PMT("verify condition compared to float") -#ifdef IVAS_FEC_ECU_TO_COMPLETE - IF( !( prev_bfi != 0 && *last_fec != 0 ) && EQ_16( element_mode == EVS_MONO ) ) -#else if ( !( prev_bfi != 0 && *last_fec != 0 ) ) -#endif { *time_offs = 0; move16(); } -#ifdef IVAS_FEC_ECU_TO_COMPLETE - offset = add( sub( sub( shl( output_frame, 1 ), lprot ), *time_offs ), ph_ecu_lookahead ); -#else offset = sub( sub( shl( output_frame, 1 ), lprot ), *time_offs ); -#endif trans_ana_fx( prevsynth + offset, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, *last_fec, alpha, beta, beta_mute, Xavg ); spec_ana_fx( prevsynth + offset, plocs, plocsi, num_p, X_sav, output_frame, bwidth_fx, Q_spec -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - element_mode, noise_fac, pcorr -#endif ); test(); @@ -5128,21 +4661,10 @@ static void hq_phase_ecu_fx( subst_spec_fx( plocs, plocsi, num_p, *time_offs, X, mag_chg, ph_dith, old_is_transient, output_frame, &seed, alpha, beta, *beta_mute, Xavg -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - element_mode, ph_ecu_lookahead, noise_fac -#endif ); /* reconstructed frame in tda domain */ -#ifdef IVAS_FEC_ECU_TO_COMPLETE - old_dec = prevsynth + 2 * output_frame - NS2SA( output_frame * FRAMES_PER_SEC, N_ZERO_MDCT_NS ); -#endif rec_frame_fx( X, ecu_rec, output_frame, *Q_spec -#ifdef IVAS_FEC_ECU_TO_COMPLETE - , - old_dec, element_mode, num_p, plocs -#endif ); *last_fec = 0; @@ -5297,22 +4819,6 @@ void hq_ecu_fx( Word16 decimatefactor; Word16 corr; /*Q15 */ Word16 prevsynth_LP[2 * L_FRAME8k]; -#ifdef IVAS_FEC_ECU_TO_COMPLETE - HQ_DEC_HANDLE hHQ_core; - const float *fec_alg_input; - int16_t evs_mode_selection; - int16_t ivas_mode_selection; - - hHQ_core = st->hHQ_core; - if ( st->element_mode == EVS_MONO ) - { - fec_alg_input = prevsynth + NS2SA( output_frame * FRAMES_PER_SEC, ACELP_LOOK_NS / 2 - PH_ECU_LOOKAHEAD_NS ); - } - else - { - fec_alg_input = prevsynth - NS2SA( output_frame * FRAMES_PER_SEC, PH_ECU_LOOKAHEAD_NS ); - } -#endif /* init (values ar changed after) */ decimatefactor = 4; move16(); @@ -5323,11 +4829,7 @@ void hq_ecu_fx( IF( !( LT_16( output_frame, L_FRAME16k ) ) ) { -#ifdef IVAS_FEC_ECU_TO_COMPLETE - fec_ecu_pitch_fx( fec_alg_input, prevsynth_LP, output_frame, &N, &corr, &decimatefactor, ph_ecu_HqVoicing ); -#else fec_ecu_pitch_fx( prevsynth + NS2SA_FX2( L_mult0( output_frame, 50 ), ACELP_LOOK_NS / 2 - PH_ECU_LOOKAHEAD_NS ), prevsynth_LP, output_frame, &N, &corr, &decimatefactor, ph_ecu_HqVoicing ); -#endif } ELSE { @@ -5350,32 +4852,6 @@ void hq_ecu_fx( test(); test(); test(); -#if defined IVAS_FEC_ECU_TO_COMPLETE - evs_mode_selection = ( st->total_brate >= 48000 && ( output_frame >= L_FRAME16k && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) && - ( ph_ecu_HqVoicing || ( ( ( hHQ_core->env_stab_plc > 0.5 ) && ( corr < 0.6 ) ) || ( hHQ_core->env_stab_plc < 0.5 && ( corr > 0.85 ) ) ) ) ) ) || - ( st->total_brate < 48000 && ( ( ph_ecu_HqVoicing || corr > 0.85 ) && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) ) ); - - ivas_mode_selection = ( N < PH_ECU_N_LIMIT ) || ( corr < PH_ECU_CORR_LIMIT ); - if ( ( ( st->element_mode == EVS_MONO ) && evs_mode_selection ) || - ( ( st->element_mode != EVS_MONO ) && evs_mode_selection && ivas_mode_selection ) ) - - { - fec_alg_fx( fec_alg_input, prevsynth_LP, ecu_rec, output_frame, N, decimatefactor, ph_ecu_HqVoicing, gapsynth, &hHQ_core->ni_seed_forfec, st->element_mode, st->hHQ_core->old_out ); - *last_fec = 1; - *ph_ecu_active = 0; - move16(); - *time_offs = output_frame; - move16(); - ; - } - else - { - hq_phase_ecu( prevsynth - NS2SA( output_frame * FRAMES_PER_SEC, PH_ECU_LOOKAHEAD_NS ), ecu_rec, time_offs, X_sav, num_p, plocs, plocsi, env_stab, last_fec, prev_bfi, old_is_transient, mag_chg_1st, Xavg, beta_mute, st->bwidth, output_frame, corr, st->element_mode ); - - *last_fec = 0; - *ph_ecu_active = 1; - } -#else IF( ( GE_32( st_fx->total_brate, 48000 ) && ( GE_16( output_frame, L_FRAME16k ) && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) && ( NE_16( ph_ecu_HqVoicing, 0 ) || ( ( ( NE_16( st_fx->hHQ_core->env_stab_plc_fx, 0 ) ) && ( LT_16( corr, 19661 ) ) ) || ( !( NE_16( st_fx->hHQ_core->env_stab_plc_fx, 0 ) ) && ( GT_16( corr, 27853 ) ) ) ) ) ) ) || ( LT_32( st_fx->total_brate, 48000 ) && ( ( ph_ecu_HqVoicing || GT_16( corr, 27853 ) ) && !prev_bfi && ( !old_is_transient[0] || old_is_transient[1] ) ) ) ) @@ -5395,7 +4871,6 @@ void hq_ecu_fx( env_stab, last_fec, ph_ecu_active, prev_bfi, old_is_transient, mag_chg_1st, Xavg, beta_mute, st_fx->bwidth, output_frame ); } -#endif return; } diff --git a/lib_dec/TonalComponentDetection_fx.c b/lib_dec/TonalComponentDetection_fx.c index e820f1399..4b2cf0213 100644 --- a/lib_dec/TonalComponentDetection_fx.c +++ b/lib_dec/TonalComponentDetection_fx.c @@ -740,15 +740,6 @@ static void CorrectF0( Word16 tmp; -#ifdef IVAS_CODE - FOR( i = 0; i < MAX_PEAKS_FROM_PITCH - 1; i++ ) - { - diff[i] = 0; - sortedDiff[i] = 0; - move16)); - move16)); - } -#endif F0 = *pF0; /*Q10*/ test(); diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index 0fbedff60..3570ce86d 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -1287,12 +1287,7 @@ ivas_error acelp_core_dec_fx( /*Noise estimate*/ IF( NE_16( st_fx->element_mode, IVAS_CPE_TD ) /* && !st->cng_ism_flag IVAS_CODE */ ) { -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - PMT( "Code for IVAS_CODE_CNG_FIX185_PLC_FADEOUT not done" ) - ApplyFdCng_fx( syn, st_fx->Q_syn, NULL, realBuffer, imagBuffer, st, 0, ( st->coder_type == AUDIO && !st->GSC_noisy_speech ) ); -#else ApplyFdCng_fx( syn_fx, st_fx->Q_syn, realBuffer, imagBuffer, NULL, st_fx, 0, ( EQ_16( st_fx->coder_type, AUDIO ) && st_fx->GSC_noisy_speech == 0 ) ); -#endif } /* CNA: Generate additional comfort noise to mask potential coding artefacts */ } diff --git a/lib_dec/amr_wb_dec_fx.c b/lib_dec/amr_wb_dec_fx.c index c1c1e6143..971af2b56 100644 --- a/lib_dec/amr_wb_dec_fx.c +++ b/lib_dec/amr_wb_dec_fx.c @@ -813,15 +813,10 @@ ivas_error amr_wb_dec_fx( st_fx->VAD = 0; move16(); } -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - PMT( "Fixed point not done here " ) - ApplyFdCng_fx( syn, NULL, NULL, NULL, st, 0, 0 ); -#else #ifdef REMOVE_EVS_DUPLICATES ApplyFdCng_ivas_fx( syn_fx, st_fx->Q_syn, NULL, 0, NULL, NULL, NULL, st_fx, 0, 0 ); #else ApplyFdCng_fx( syn_fx, st_fx->Q_syn, NULL, NULL, NULL, st_fx, 0, 0 ); -#endif #endif st_fx->hFdCngDec->hFdCngCom->frame_type_previous = st_fx->m_frame_type; move16(); diff --git a/lib_dec/core_dec_init_fx.c b/lib_dec/core_dec_init_fx.c index 967a93bfb..86d8e805a 100644 --- a/lib_dec/core_dec_init_fx.c +++ b/lib_dec/core_dec_init_fx.c @@ -20,18 +20,7 @@ void open_decoder_LPD_fx( Decoder_State *st, const Word32 total_brate, /* Q0 */ -#ifdef NEW_IVAS_OPEN_DEC - const Word32 last_total_brate, -#endif const Word16 bwidth /* Q0 */ -#ifdef NEW_IVAS_OPEN_DEC - , - const Word16 is_mct, /* i : MCT mode flag */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - const Word16 last_element_mode, -#endif - const Word16 is_init /* i : indicate call from init_decoder() to avoid double TC initialization */ -#endif ) { Word16 i; @@ -50,10 +39,8 @@ void open_decoder_LPD_fx( hTcxLtpDec = st->hTcxLtpDec; hTcxDec = st->hTcxDec; -#ifndef NEW_IVAS_OPEN_DEC st->total_brate = total_brate; move32(); -#endif if ( NE_16( st->codec_mode, MODE1 ) ) /*already updated in MODE1*/ { @@ -70,40 +57,18 @@ void open_decoder_LPD_fx( /* initializing variables for frame lengths etc. right in the beginning */ st->L_frame = extract_l( Mult_32_16( st->sr_core, 0x0290 ) ); move16(); -#ifndef NEW_IVAS_OPEN_DEC hTcxDec->L_frameTCX = extract_l( Mult_32_16( st->output_Fs, 0x0290 ) ); move16(); -#endif IF( st->ini_frame == 0 ) { st->last_L_frame = st->L_frame_past = st->L_frame; move16(); move16(); -#ifndef NEW_IVAS_OPEN_DEC st->L_frameTCX_past = hTcxDec->L_frameTCX; -#endif move16(); } -#ifdef NEW_IVAS_OPEN_DEC - IF( st->hTcxDec != NULL ) - { - hTcxDec->L_frameTCX = extract_l( Mult_32_16( st->output_Fs, 0x0290 ) ); - IF( st->ini_frame == 0 ) - { - st->L_frameTCX_past = st->hTcxDec->L_frameTCX; - move16(); - } - } -#endif st->tcxonly = getTcxonly( -#ifdef IVAS_CODE_SWITCHING - st->element_mode, -#endif st->total_brate -#ifdef IVAS_CODE_SWITCHING - , - is_mct -#endif /*, st->is_ism_format Needed in the last version of float IVAS */ ); move16(); @@ -155,9 +120,6 @@ void open_decoder_LPD_fx( // st->pit_res_max = initPitchLagParameters(12800, &st->pit_min, &st->pit_fr1, &st->pit_fr1b, &st->pit_fr2, &st->pit_max); // hTcxDec->pit_max_TCX = (int16_t)(st->pit_max * st->output_Fs / 12800); // hTcxDec->pit_min_TCX = (int16_t)(st->pit_min * st->output_Fs / 12800); -#if 0 - PMT("Fixed point to be verified here") -#endif i = mult_r( hTcxDec->L_frameTCX, getInvFrameLen( L_FRAME ) ); /* Q6 */ hTcxDec->pit_max_TCX = extract_l( L_shr( L_mult( st->pit_max, i ), 7 ) ); /* Q0 */ move16(); @@ -243,7 +205,6 @@ void open_decoder_LPD_fx( } /*TCX config*/ -#ifndef NEW_IVAS_OPEN_DEC st->hTcxCfg->preemph_fac = st->preemph_fac; move16(); st->hTcxCfg->tcx_mdct_window_length_old = st->hTcxCfg->tcx_mdct_window_length; @@ -304,34 +265,6 @@ void open_decoder_LPD_fx( } resetTecDec_Fx( st->hTECDec ); - -#else - if ( st->hIGFDec != NULL ) - { - PMT( "To be done" ) - // IF (!is_init || st->element_mode != IVAS_CPE_MDCT) - //{ - // init_tcx_cfg(st->hTcxCfg, total_brate, st->sr_core, st->output_Fs, st->L_frame, st->bwidth, st->hTcxDec->L_frameTCX, st->fscale, encoderLookahead, encoderLookaheadFB, st->preemph_fac, st->tcxonly, st->rf_flag, st->igf, st->hIGFDec->infoIGFStopFreq, st->element_mode, st->ini_frame, MCT_flag); - // } - // else - //{ - // st->hTcxCfg->tcx_curr_overlap_mode = st->hTcxCfg->tcx_last_overlap_mode = ALDO_WINDOW; - // st->hTcxCfg->last_aldo = 1; - // } - } - /*Constraint for adaptive BPF, otherwise parameter estimation and post-processing not time aligned*/ - IF( st->tcxonly == 0 ) - { - assert( 0 == ( st->hTcxCfg->lfacNext > 0 ? st->hTcxCfg->lfacNext : 0 ) ); - } - // IF (st->tecDec_fx != NULL) - { - resetTecDec_Fx( &( st->tecDec_fx ) ); - } - -#endif - - /* Initialize decoder delay */ @@ -447,7 +380,6 @@ void open_decoder_LPD_fx( move16(); /*PLC*/ -#ifndef NEW_IVAS_OPEN_DEC IF( st->prev_bfi != 0 ) { PWord16 const *w; @@ -498,10 +430,6 @@ void open_decoder_LPD_fx( hTcxDec->Q_syn_Overl_TDAC = hHQ_core->Q_old_wtda_LB; move16(); } -#else - PMT( "acelp_plc_mdct_transition is missing" ) - // acelp_plc_mdct_transition(st); -#endif } test(); @@ -545,9 +473,6 @@ void open_decoder_LPD_fx( set16_fx( hTcxDec->syn_Overl_TDAC, 0, L_FRAME32k / 2 ); /*HQ-CORE(bfi)->TCX don't need it*/ /* Q_syn_Overl_TDAC */ set16_fx( hTcxDec->syn_Overl_TDACFB, 0, L_FRAME_MAX / 2 ); /*HQ-CORE(bfi)->TCX don't need it*/ /* Q_syn_Overl_TDACFB */ set16_fx( hTcxDec->syn_Overl, 0, L_FRAME32k / 2 ); /*HQ-CORE(bfi)->TCX don't need it*/ /* Q_syn_Overl */ -#if 0 - PMT("to be moved to reset_tcx_overl_buf") -#endif } IF( st->hTcxCfg != NULL ) { @@ -575,15 +500,6 @@ void open_decoder_LPD_fx( cldfb_reset_memory( st->cldfbAna ); cldfb_reset_memory( st->cldfbBPF ); cldfb_reset_memory( st->cldfbSyn ); -#ifndef NEW_IVAS_OPEN_DEC -#if 0 - PMT("cldfbSynHB is missing ") -#endif - // IF (st->cldfbSynHB != NULL) - //{ - // cldfb_reset_memory(st->cldfbSynHB); - // } -#endif } ELSE IF( ( NE_16( st->L_frame, st->last_L_frame ) ) && ( LE_16( st->L_frame, L_FRAME16k ) ) && ( LE_16( st->last_L_frame, L_FRAME16k ) ) ) /* Rate switching between 12.8 and 16 kHz*/ { @@ -817,10 +733,6 @@ void open_decoder_LPD_fx( test(); IF( EQ_16( st->core, ACELP_CORE ) && EQ_16( st->last_core, HQ_CORE ) ) { - /*_DIFF_FLOAT_FIX_*/ -#if 0 - PMT("floating point is using L_frameTCX instead of output_frame, is it ok?") -#endif frame_ener_fx( st->output_frame_fx, UNVOICED_CLAS, st->previoussynth_fx, -1, &st->enr_old_fx, 1, 0, 0, 0 ); } } @@ -840,20 +752,6 @@ void open_decoder_LPD_fx( move16(); if ( st->hTcxDec != NULL ) { -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - /* Todo: should be considered for other stereo modes as well */ - IF( is_init || MCT_flag || !( st->element_mode == IVAS_CPE_MDCT && st->element_mode == last_element_mode ) ) - { - PMT( "Fixed point to be done" ) - st->hTcxDec->CngLevelBackgroundTrace_bfi = PLC_MIN_CNG_LEV; - st->hTcxDec->NoiseLevelIndex_bfi = PLC_MIN_STAT_BUFF_SIZE - 1; - st->hTcxDec->CurrLevelIndex_bfi = 0; - st->hTcxDec->LastFrameLevel_bfi = PLC_MIN_CNG_LEV; - set_f( st->hTcxDec->NoiseLevelMemory_bfi, PLC_MIN_CNG_LEV, PLC_MIN_STAT_BUFF_SIZE ); - - st->hTcxDec->cummulative_damping_tcx = 1.0f; - } -#else hTcxDec->conCngLevelBackgroundTrace = PLC_MIN_CNG_LEV_Q21; /*Q21*/ move16(); hTcxDec->conNoiseLevelIndex = PLC_MIN_STAT_BUFF_SIZE - 1; /* Q0 */ @@ -871,7 +769,6 @@ void open_decoder_LPD_fx( hTcxDec->cummulative_damping_tcx = 32767 /*1.0f Q15*/; move16(); -#endif } st->cummulative_damping = 32767 /*1.0f Q15*/; move16(); @@ -891,10 +788,8 @@ void open_decoder_LPD_fx( st->old_fpitch = L_deposit_h( st->pit_min ); move32(); -#ifndef NEW_IVAS_OPEN_DEC st->old_fpitchFB = L_deposit_h( hTcxDec->pit_min_TCX ); move32(); -#endif st->rate_switching_init = 1; move16(); @@ -924,9 +819,6 @@ void open_decoder_LPD_fx( test(); IF( hTcxLtpDec != NULL && ( EQ_16( st->ini_frame, 0 ) || ( EQ_16( st->last_codec_mode, MODE1 ) && st->element_mode == EVS_MONO ) ) ) { -#if 0 - PMT("TO be verify, update seems to differ from float") -#endif hTcxLtpDec->tcxltp_pitch_int = st->pit_max; /* Q0 */ move16(); hTcxLtpDec->tcxltp_pitch_fr = 0; /* Q0 */ @@ -1059,12 +951,6 @@ void open_decoder_LPD_fx( move16(); st->second_last_core = -1; move16(); -#ifdef NEW_IVAS_OPEN_DEC - IF( st->hTcxCfg != NULL && st->element_mode != EVS_MONO ) - { - st->hTcxCfg->fIsTNSAllowed = getTnsAllowed( is_init ? total_brate : st->bits_frame_nominal * FRAMES_PER_SEC, st->igf ); - } -#endif IF( hTcxDec != NULL ) { hTcxDec->tcxltp_second_last_pitch = st->old_fpitch; /*15Q16*/ @@ -1105,10 +991,8 @@ void open_decoder_LPD_fx( hTcxDec->tcx_hm_LtpPitchLag = -1; move16(); } -#ifndef NEW_IVAS_OPEN_DEC st->hTcxCfg->na_scale = 32767 /*1.0f Q15*/; move16(); -#endif if ( hTcxLtpDec != NULL ) { hTcxLtpDec->tcxltp_gain = 0; /* Q15 */ diff --git a/lib_dec/core_dec_switch_fx.c b/lib_dec/core_dec_switch_fx.c index 63c35f876..8c68f39ce 100644 --- a/lib_dec/core_dec_switch_fx.c +++ b/lib_dec/core_dec_switch_fx.c @@ -13,18 +13,7 @@ void mode_switch_decoder_LPD_fx( Decoder_State *st, /* i/o: decoder state structure */ Word16 bwidth, /* i : audio bandwidth Q0*/ Word32 total_brate, /* i : total bitrate Q0*/ -#ifdef IVAS_CODE_SWITCHING - const Word32 last_total_brate, /* i : last frame total bitrate */ -#endif Word16 frame_size_index /* i : index determining the frame size Q0*/ -#ifdef IVAS_CODE_SWITCHING - , - const Word16 MCT_flag /* i : hMCT handle allocated (1) or not (0)*/ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - , - const Word16 last_element_mode -#endif -#endif ) { Word16 fscale, switchWB; @@ -100,15 +89,7 @@ void mode_switch_decoder_LPD_fx( test(); IF( NE_16( fscale, st->fscale ) || ( switchWB != 0 ) || ( bSwitchFromAmrwbIO != 0 ) || EQ_16( st->last_codec_mode, MODE1 ) || st->force_lpd_reset ) { -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - open_decoder_LPD_fx( st, total_brate, last_total_brate, bwidth, MCT_flag, last_element_mode, 0 ); -#else -#ifdef IVAS_CODE - open_decoder_LPD_fx( st, total_brate, last_total_brate, bwidth, is_mct, 0 ); -#else open_decoder_LPD_fx( st, total_brate, bwidth ); -#endif -#endif } ELSE { @@ -153,9 +134,6 @@ void mode_switch_decoder_LPD_fx( IF( ( st->hTcxCfg->fIsTNSAllowed != 0 ) && st->hIGFDec != NULL ) { InitTnsConfigs( bwidth, st->hTcxCfg->tcx_coded_lines, st->hTcxCfg->tnsConfig, st->hIGFDec->infoIGFStopFreq, total_brate, st->element_mode, 0 /* 0 should be replaced with MCT_flag*/ ); -#ifdef IVAS_CODE - SetAllowTnsOnWhite( st->hTcxCfg->tnsConfig, st->element_mode == IVAS_CPE_MDCT ); -#endif } } } diff --git a/lib_dec/dec_LPD_fx.c b/lib_dec/dec_LPD_fx.c index f53234ded..c04ee9dc5 100644 --- a/lib_dec/dec_LPD_fx.c +++ b/lib_dec/dec_LPD_fx.c @@ -574,11 +574,7 @@ void decoder_LPD_fx( IF( bfi != 0 && ( st->last_core != ACELP_CORE ) ) { /* PLC: [TCX: TD PLC] */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - con_tcx_fx( st, &synthFB[0], -1.f, NULL, 0, NULL ); -#else con_tcx_fx( st, &synthFB[0] ); -#endif lerp( synthFB, synth, st->L_frame, hTcxDec->L_frameTCX ); st->con_tcx = 1; move16(); @@ -778,11 +774,7 @@ void decoder_LPD_fx( { TonalMDCTConceal_SaveTimeSignal( st->hTonalMDCTConc, synthFB, L_frameTCX ); } -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - decoder_tcx_post_fx( st, synth, synthFB, Aq, bfi, 0 ); -#else decoder_tcx_post_fx( st, synth, synthFB, Aq, bfi ); -#endif IF( EQ_16( st->core, TCX_20_CORE ) ) { /* LPC Interpolation for BWE/post-processing */ diff --git a/lib_dec/dec_ace_fx.c b/lib_dec/dec_ace_fx.c index 16f749156..55d3ebbae 100644 --- a/lib_dec/dec_ace_fx.c +++ b/lib_dec/dec_ace_fx.c @@ -537,15 +537,8 @@ void decoder_acelp_fx( gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate, st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 ); #else prep_tbe_exc_fx( st->L_frame, -#ifdef ADD_IVAS_TBE_CODE - L_SUBFR, -#endif i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc, gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate -#ifdef ADD_IVAS_TBE_CODE - , - st->element_mode, st->idchan, st->hBWE_TD != NULL, 0 -#endif ); #endif } diff --git a/lib_dec/dec_acelp_tcx_main_fx.c b/lib_dec/dec_acelp_tcx_main_fx.c index 04a41ed46..21bf7cf12 100644 --- a/lib_dec/dec_acelp_tcx_main_fx.c +++ b/lib_dec/dec_acelp_tcx_main_fx.c @@ -208,11 +208,7 @@ static void decode_frame_type_fx( Decoder_State *st ) move16(); /* Reconf Core */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - mode_switch_decoder_LPD_fx( st, st->bwidth, st->total_brate, st->last_total_brate, frame_size_index, 0, st->element_mode ); -#else mode_switch_decoder_LPD_fx( st, st->bwidth, st->total_brate, frame_size_index ); -#endif /* Reconf CLDFB */ IF( NE_16( i_mult( st->cldfbAna->no_channels, st->cldfbAna->no_col ), st->L_frame ) ) { diff --git a/lib_dec/dec_tcx_fx.c b/lib_dec/dec_tcx_fx.c index af80ee1f5..883024002 100644 --- a/lib_dec/dec_tcx_fx.c +++ b/lib_dec/dec_tcx_fx.c @@ -893,9 +893,6 @@ void decoder_tcx_fx( TonalMDCTConceal_InsertNoise( st->hTonalMDCTConc, x, &x_e, st->tonal_mdct_plc_active, &st->seed_tcx_plc, noiseTiltFactor, f, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - concealment_noise, -#endif infoIGFStartLine ); } } diff --git a/lib_dec/er_dec_tcx_fx.c b/lib_dec/er_dec_tcx_fx.c index e804d2009..1a8a8b30d 100644 --- a/lib_dec/er_dec_tcx_fx.c +++ b/lib_dec/er_dec_tcx_fx.c @@ -126,10 +126,6 @@ void con_tcx_fx( const Word16 coh, /* i : coherence of stereo signal Q14*/ Word16 *noise_seed, /* i/o: noise seed for stereo Q0*/ const Word16 only_left /* i : TD-PLC only in left channel Q0*/ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - , - const float *A_cng /* i : CNG LP filter coefficients Q14*/ -#endif #endif ) @@ -489,19 +485,7 @@ void con_tcx_fx( move16(); /* PLC: calculate damping factor */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - alpha = 1.0f; - if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } - else if ( st->element_mode != IVAS_CPE_MDCT ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } -#else alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/ -#endif IF( EQ_16( st->nbLostCmpt, 1 ) ) { st->cummulative_damping = 32767 /*1.f Q15*/; @@ -568,19 +552,7 @@ void con_tcx_fx( } set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/ /* PLC: calculate damping factor */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - alpha = 1.0f; - if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } - else if ( st->element_mode != IVAS_CPE_MDCT ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } -#else alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/ -#endif } /*-----------------------------------------------------------------* @@ -707,20 +679,9 @@ void con_tcx_fx( } /* PLC: [TCX: Fade-out] retrieve background level */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - if ( A_cng != NULL ) - { - gainSynthDeemph = getLevelSynDeemph_fx( &( tmp ), A_cng, L_frame / 4, st->preemph_fac, 1 ) / 4.f; - } - else - { - gainSynthDeemph = getLevelSynDeemph_fx( &( tmp ), A_local, L_frame / 4, st->preemph_fac, 1 ); - } -#else tmp16 = 32767; move16(); gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); /*Q5*/ -#endif IF( st->tcxonly != 0 ) { /* gainCNG = st->conCngLevelBackgroundTrace/gainSynthDeemph; */ @@ -728,19 +689,6 @@ void con_tcx_fx( hTcxDec->conCngLevelBackgroundTrace_e, gainSynthDeemph, gainSynthDeemph_e, &gainCNG, &gainCNG_e ); -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - if ( st->element_mode == IVAS_CPE_MDCT && A_cng != NULL ) - { - if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME + MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN ) - { - gainCNG = 0.f; - } - else if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME ) - { - gainCNG *= 1.f - (float) ( st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME ) / MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN; - } - } -#endif } ELSE { @@ -907,34 +855,6 @@ void con_tcx_fx( /*buf[OLD_EXC_SIZE_DEC;3/2 L_frame] Q1: exc*/ /*buf[0;M] Q0: mem_syn*/ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - if ( A_cng != NULL ) - { - float alpha_delayed; - - alpha_delayed = 1.0f; - if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE ) - { - alpha_delayed = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE, st->last_good, st->stab_fac, &( st->lp_gainp ), ACELP_CORE ); - } - - if ( st->plcBackgroundNoiseUpdated && alpha_delayed != 1.0f ) - { - float lsp_local[M], lsp_fade[M], alpha_inv; - - alpha_inv = 1.0f - alpha_delayed; - - a2lsp_stab( A_local, lsp_local, lsp_local ); - - for ( i = 0; i < M; i++ ) - { - lsp_fade[i] = alpha_delayed * lsp_local[i] + alpha_inv * st->lspold_cng[i]; - } - - lsp2a_stab( lsp_fade, A_local, M ); - } - } -#endif E_UTIL_synthesis( sub( Q_exc, Q_syn ), A_local, @@ -1434,19 +1354,7 @@ void con_tcx_ivas_fx( move16(); /* PLC: calculate damping factor */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - alpha = 1.0f; - if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } - else if ( st->element_mode != IVAS_CPE_MDCT ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } -#else alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/ -#endif IF( EQ_16( st->nbLostCmpt, 1 ) ) { st->cummulative_damping = 32767 /*1.f Q15*/; @@ -1513,19 +1421,7 @@ void con_tcx_ivas_fx( } set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/ /* PLC: calculate damping factor */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - alpha = 1.0f; - if ( st->element_mode == IVAS_CPE_MDCT && st->nbLostCmpt >= MDCT_ST_PLC_FADEOUT_START_FRAME ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_START_FRAME, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } - else if ( st->element_mode != IVAS_CPE_MDCT ) - { - alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac, &( st->lp_gainp ), 0 ); - } -#else alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/ -#endif } /*-----------------------------------------------------------------* @@ -1666,7 +1562,6 @@ void con_tcx_ivas_fx( } /* PLC: [TCX: Fade-out] retrieve background level */ -#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT tmp16 = 32767; move16(); IF( A_cng != NULL ) @@ -1677,11 +1572,6 @@ void con_tcx_ivas_fx( { gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); /*Q13*/ } -#else - tmp16 = 32767; - move16(); - gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); -#endif IF( st->tcxonly != 0 ) { /* gainCNG = st->conCngLevelBackgroundTrace/gainSynthDeemph; */ @@ -1689,7 +1579,6 @@ void con_tcx_ivas_fx( hTcxDec->conCngLevelBackgroundTrace_e, gainSynthDeemph, gainSynthDeemph_e, &gainCNG, &gainCNG_e ); -#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT test(); IF( EQ_16( st->element_mode, IVAS_CPE_MDCT ) && A_cng != NULL ) { @@ -1705,7 +1594,6 @@ void con_tcx_ivas_fx( gainCNG = extract_l( Mpy_32_32( gainCNG, L_tmp ) ); /*Q15-gainCNG_e*/ } } -#endif } ELSE { @@ -1882,7 +1770,6 @@ void con_tcx_ivas_fx( /*buf[OLD_EXC_SIZE_DEC;3/2 L_frame] Q1: exc*/ /*buf[0;M] Q0: mem_syn*/ -#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT IF( A_cng != NULL ) { Word16 alpha_delayed; @@ -1914,7 +1801,6 @@ void con_tcx_ivas_fx( E_LPC_f_lsp_a_conversion( lsp_fade, A_local, M ); } } -#endif E_UTIL_synthesis( sub( Q_exc, Q_syn ), diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index 090409b4c..c0281c7e3 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -957,14 +957,10 @@ ivas_error evs_dec_fx( } st_fx->lp_noise = hFdCngDec->lp_noise; /*Q9.23*/ move32(); -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - ApplyFdCng_fx( output, NULL, realBuffer, imagBuffer, st, concealWholeFrame, 0 ); -#else #ifdef REMOVE_EVS_DUPLICATES ApplyFdCng_ivas_fx( output_sp, 0, NULL, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); #else ApplyFdCng_fx( output_sp, 0, realBuffer, imagBuffer, &st_fx->scaleFactor.hb_scale, st_fx, concealWholeFrame, 0 ); -#endif #endif /* Generate additional comfort noise to mask potential coding artefacts */ test(); diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 47a61a26e..893b49241 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -559,9 +559,6 @@ void deleteFdCngDec_fx( HANDLE_FD_CNG_DEC *hFdCngDec ) Word16 ApplyFdCng_fx( Word16 *timeDomainInput, /* i : pointer to time domain input Q*/ Word16 Q, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - Word16 *powerSpectrum, -#endif Word32 **cldfbBufferReal, /* i/o: real part of the CLDFB buffer cldfbBufferScale*/ Word32 **cldfbBufferImag, /* i/o: imaginary part of the CLDFB buffer cldfbBufferScale*/ Word16 *cldfbBufferScale, /* o : pointer to the scalefactor for real and imaginary part of the CLDFB buffer */ @@ -588,16 +585,6 @@ Word16 ApplyFdCng_fx( move16(); move16(); #endif -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - int16_t L_frame, last_L_frame; - int32_t sr_core; - - PMT( "Fix point code missing for IVAS_CODE_CNG_FIX185_PLC_FADEOUT" ) - /* limit L_frame and core fs values for MDCT-Stereo modes which can have higher core sampling than 16kHz, but use a downsampled buffer */ - L_frame = min( st->L_frame, L_FRAME16k ); - last_L_frame = min( st->last_L_frame, L_FRAME16k ); - sr_core = min( st->sr_core, INT_FS_16k ); -#endif hFdCngDec = st->hFdCngDec; hFdCngCom = hFdCngDec->hFdCngCom; @@ -636,27 +623,6 @@ Word16 ApplyFdCng_fx( /* set noise estimation inactive during concealment, as no update with noise generated by concealment should be performed. */ /* set noise estimation inactive during concealment, no update with noise generated by concealment should be performed. */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - if ( concealWholeFrame == 0 && - ( timeDomainInput == NULL || - ( *timeDomainInput( -FLT_MAX ) && - *( timeDomainInput + hFdCngCom->frameSize - 1 ) < FLT_MAX && - *( timeDomainInput + hFdCngCom->frameSize - 1 ) > ( -FLT_MAX ) ) ) && - ( ( ( ( st->element_mode != IVAS_CPE_TD && st->element_mode != IVAS_CPE_DFT && hFdCngDec->flag_dtx_mode ) || !st->VAD ) && - !( st->cng_type == LP_CNG && hFdCngDec->flag_dtx_mode ) && ( is_music == 0 ) ) || - ( st->element_mode == IVAS_CPE_TD ) ) && - ( !st->BER_detect ) ) -#else test(); test(); test(); @@ -671,14 +637,9 @@ Word16 ApplyFdCng_fx( IF( ( concealWholeFrame == 0 ) && ( LT_16( *timeDomainInput, MAXVAL_WORD16 ) ) && GT_16( *timeDomainInput, MINVAL_WORD16 ) && ( LT_16( *( timeDomainInput + sub( hFdCngCom->frameSize, 1 ) ), MAXVAL_WORD16 ) ) && GT_16( *( timeDomainInput + sub( hFdCngCom->frameSize, 1 ) ), MINVAL_WORD16 ) && ( ( ( hFdCngDec->flag_dtx_mode == 0 ) && ( st->VAD != 0 ) ) == 0 ) && ( ( ( st->cng_type == LP_CNG ) && ( hFdCngDec->flag_dtx_mode != 0 ) ) == 0 ) && ( is_music == 0 ) && ( st->BER_detect == 0 ) ) -#endif { /* Perform noise estimation at the decoder */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); -#else perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); -#endif /* Update the shaping parameters */ test(); @@ -790,16 +751,6 @@ Word16 ApplyFdCng_fx( move16(); } } -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - if ( st->element_mode == IVAS_CPE_MDCT && timeDomainInput == NULL ) - { - st->hTcxDec->CngLevelBackgroundTrace_bfi = sqrtf( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / NORM_MDCT_FACTOR ); - } - else - { - st->hTcxDec->CngLevelBackgroundTrace_bfi = (float) sqrt( ( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / 2 * hFdCngCom->fftlen ) / L_frame ); - } -#endif /*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/ tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); L_tmp = L_deposit_h( 0 ); @@ -840,11 +791,8 @@ Word16 ApplyFdCng_fx( IF( hFdCngCom->active_frame_counter > 0 ) { /* Perform noise estimation in active frames in the decoder for downward updates */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); -#else perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); -#endif + } } test(); @@ -860,58 +808,11 @@ Word16 ApplyFdCng_fx( IF( EQ_16( concealWholeFrame, 1 ) && EQ_16( st->nbLostCmpt, 1 ) && ( GT_32( L_shl_o( L_tmp, L_tmp_exp, &Overflow ), 21474836 ) /*0.01f Q31*/ ) ) { /* update isf cng estimate for concealment. Do that during concealment, in order to avoid addition clean channel complexity*/ -#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT lpc_from_spectrum( hFdCngCom, hFdCngCom->startBand, hFdCngCom->stopFFTbin, 0 ); E_LPC_a_lsp_conversion( hFdCngCom->A_cng, lsp_cng, st->lspold_cng, M ); Copy( lsp_cng, st->lspold_cng, M ); /*Q15*/ lsp2lsf_fx( lsp_cng, st->lsf_cng, M, st->sr_core ); -#else - if ( st->element_mode == IVAS_CPE_MDCT && st->core != ACELP_CORE ) - { - float scf[SNS_NPTS]; - float scf_int[FDNS_NPTS]; - float whitenend_noise_shape[L_FRAME16k]; - int16_t inc, start_idx, stop_idx; - float *noiseLevelPtr; - - - inc = ( st->core > TCX_20 ) ? 2 : 1; - start_idx = hFdCngCom->startBand / inc; - stop_idx = L_frame / inc; - noiseLevelPtr = cngNoiseLevel; - - set_zero( whitenend_noise_shape, start_idx ); - for ( j = start_idx; j < stop_idx; j++, noiseLevelPtr += inc ) - { - whitenend_noise_shape[j] = *noiseLevelPtr; - } - if ( st->core == TCX_20_CORE ) - { - st->hTonalMDCTConc->psychParams = &st->hTonalMDCTConc->psychParamsTCX20; - } - else - { - st->hTonalMDCTConc->psychParams = &st->hTonalMDCTConc->psychParamsTCX10; - } - - sns_compute_scf( whitenend_noise_shape, st->hTonalMDCTConc->psychParams, L_frame, scf ); - sns_interpolate_scalefactors( scf_int, scf, ENC ); - sns_interpolate_scalefactors( st->hTonalMDCTConc->scaleFactorsBackground_flt, scf, DEC ); - sns_shape_spectrum( whitenend_noise_shape, st->hTonalMDCTConc->psychParams, scf_int, L_frame ); - - mvr2r( whitenend_noise_shape + start_idx, cngNoiseLevel, stop_idx - start_idx ); - wmops_sub_end(); - } - else if ( st->element_mode != IVAS_CPE_MDCT ) - { - lpc_from_spectrum( hFdCngCom, hFdCngCom->startBand, hFdCngCom->stopFFTbin, 0.f ); - a2lsp_stab( hFdCngCom->A_cng, lsp_cng, st->lspold_cng ); - mvr2r( lsp_cng, st->lspold_cng, M ); - lsp2lsf( lsp_cng, st->lsf_cng, M, sr_core ); - } - -#endif st->plcBackgroundNoiseUpdated = 1; move16(); } @@ -929,11 +830,7 @@ Word16 ApplyFdCng_fx( IF( st != NULL && st->cng_type == LP_CNG ) { /* Perform noise estimation on inactive phase at the decoder */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - perform_noise_estimation_dec_fx( timeDomainInput, powerSpectrum, hFdCngDec, st->element_mode, st->bwidth, L_frame, last_L_frame, st->last_core_brate, st->VAD ); -#else perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); -#endif /* Update the shaping parameters */ test(); @@ -947,9 +844,6 @@ Word16 ApplyFdCng_fx( Copy32( hFdCngDec->bandNoiseShape, cngNoiseLevel, sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ) ); /* This sets the new CNG levels until a SID update overwrites it Q31 - hFdCngDec->bandNoiseShape_exp*/ *cngNoiseLevel_exp = hFdCngDec->bandNoiseShape_exp; move16(); -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - st->cngTDLevel = (float) sqrt( ( sum_f( cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand ) / 2 * hFdCngCom->fftlen ) / L_frame ); -#else /*st->cngTDLevel = (float)sqrt( (sumFLOAT(cngNoiseLevel, hFdCngCom->stopFFTbin - hFdCngCom->startBand) / 2 * hFdCngCom->fftlen) / st->Mode2_L_frame);*/ tmp_loop = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); L_tmp = L_deposit_h( 0 ); @@ -985,7 +879,6 @@ Word16 ApplyFdCng_fx( move16(); st->cngTDLevel_e = L_tmp_exp; move16(); -#endif BREAK; } hFdCngCom->inactive_frame_counter = add( hFdCngCom->inactive_frame_counter, 1 ); @@ -1903,9 +1796,6 @@ Word16 ApplyFdCng_ivas_fx( void perform_noise_estimation_dec_fx( const Word16 *timeDomainInput, /* i: pointer to time domain input Q*/ const Word16 Q, -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - float *power_spectrum, -#endif HANDLE_FD_CNG_DEC hFdCngDec /* i/o: FD_CNG structure containing all buffers and variables */ ) { @@ -1936,53 +1826,11 @@ void perform_noise_estimation_dec_fx( move16(); /* Perform STFT analysis */ -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - IF( !( EQ_16( element_mode, IVAS_CPE_MDCT ) && power_spectrum != NULL ) ) - { - /* Perform STFT analysis */ - AnalysisSTFT( timeDomainInput, Q, fftBuffer, &fftBuffer_exp, hFdCngDec->hFdCngCom ); - } -#else /* Perform STFT analysis */ AnalysisSTFT( timeDomainInput, Q, fftBuffer, &fftBuffer_exp, hFdCngDec->hFdCngCom ); -#endif fftBuffer_exp = add( fftBuffer_exp, WORD16_BITS - 1 ); { -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - if ( element_mode == IVAS_CPE_MDCT && power_spectrum != NULL ) - { - /* use power spectrum calculated in the MDCT-domain instead of calculating new power spectrum */ - periodog = power_spectrum; - } - else - { - /* Compute the squared magnitude in each FFT bin */ - if ( startBand == 0 ) - { - ( *ptr_per ) = fftBuffer[0] * fftBuffer[0]; /* DC component */ - ptr_per++; - ptr_r = fftBuffer + 2; - } - else - { - ptr_r = fftBuffer + 2 * startBand; - } - - ptr_i = ptr_r + 1; - - for ( ; ptr_per < periodog + stopFFTbin - startBand; ptr_per++ ) - { - ( *ptr_per ) = ( *ptr_r ) * ( *ptr_r ) + ( *ptr_i ) * ( *ptr_i ); - ptr_r += 2; - ptr_i += 2; - } - /* Nyquist frequency is discarded */ - - /* Rescale to get energy/sample: it should be 2*(1/N)*(2/N), parseval relation with 1/N,*2 for nrg computed till Nyquist only, 2/N as windowed samples correspond to half a frame*/ - v_multc( periodog, 4.f / (float) ( hFdCngDec->hFdCngCom->fftlen * hFdCngDec->hFdCngCom->fftlen ), periodog, stopFFTbin - startBand ); - } -#else assert( startBand != 0 ); len = sub( stopFFTbin, startBand ); @@ -2062,7 +1910,6 @@ void perform_noise_estimation_dec_fx( } hFdCngDec->hFdCngCom->periodog_exp = add( hFdCngDec->hFdCngCom->periodog_exp, sub( 2, s ) ); move16(); -#endif /* Adjust to the desired frequency resolution by averaging over spectral partitions for SID transmission */ bandcombinepow( periodog, hFdCngDec->hFdCngCom->periodog_exp, sub( stopFFTbin, startBand ), part, npart, psize_inv, hFdCngDec->msPeriodog, &hFdCngDec->msPeriodog_exp ); diff --git a/lib_dec/gs_dec_amr_wb_fx.c b/lib_dec/gs_dec_amr_wb_fx.c index 65e9eaa87..331142a44 100644 --- a/lib_dec/gs_dec_amr_wb_fx.c +++ b/lib_dec/gs_dec_amr_wb_fx.c @@ -24,9 +24,6 @@ #define NORMALIZE_SPECS_Q_OUT 6 #define ENER_FX_Q_GUARD 1 -#ifdef ADD_IVAS_GS_DEC_IMPR -#define CONTR_LIMIT 3012 to be verified for fixed point /* Threshold to allow an increase in the contribution length */ -#endif /*-------------------------------------------------------------------* * Local functions *-------------------------------------------------------------------*/ @@ -35,10 +32,6 @@ static void Ener_per_band_fx( const Word16 exc_diff_fx[], const Word16 exc_diff_ static void Apply_gain_fx( Word16 exc_diffQ_fx[], Word32 L_Ener_per_bd_iQ[], Word32 L_Ener_per_bd_yQ[], const Word16 Q_out ); static void normalize_spec_fx( Word16 fac_up_fx, Word16 fy_norm_fx[], const Word16 L_frame, const Word16 Q_out ); static void gs_dec_amr_wb_fx( const long core_brate, Word16 *seed_tcx, const Word16 dct_in_fx[], const Word16 Q_dct_in, Word16 dct_out_fx[], Word16 Q_dct_out, const Word16 pitch_fx[], const Word16 voice_fac, const Word16 clas, const Word16 coder_type -#ifdef ADD_IVAS_GS_DEC_IMPR - , - const Word16 VeryLowRateSTflag -#endif ); /*-------------------------------------------------------------------* @@ -223,10 +216,6 @@ static void gs_dec_amr_wb_fx( const Word16 voice_fac, /* i : gain pitch Q15*/ const Word16 clas, /* i : signal frame class Q0*/ const Word16 coder_type /* i : coder type Q0*/ -#ifdef ADD_IVAS_GS_DEC_IMPR - , - const Word16 VeryLowRateSTflag /* i : Enable the noise enhancement for very low rate stereo generic mode */ -#endif ) { Word16 i, mDiff_len; @@ -280,13 +269,7 @@ static void gs_dec_amr_wb_fx( temp = Invert16( temp, &exp ); /* Q15 */ L_temp = L_mult( temp, 12800 ); /* Q15 */ L_temp = L_shl( L_temp, sub( 3, exp ) ); /* *8.0f */ /* Q15 */ -#ifdef ADD_IVAS_GS_DEC_IMPR - test(); - test(); - IF( L_temp <= CONTR_LIMIT && ( VeryLowRateSTflag || GE_32( core_brate, ACELP_12k65 ) ) ) -#else if ( GE_32( core_brate, ACELP_12k65 ) ) -#endif { L_temp = L_shl( L_temp, 1 ); /* Q16 */ } @@ -311,16 +294,6 @@ static void gs_dec_amr_wb_fx( mDiff_len = s_max( round_fx( L_temp ), BIN_1k2 ); /* Q0 */ -#ifdef ADD_IVAS_GS_DEC_IMPR - IF( ( VeryLowRateSTflag && ( EQ_16( clas, VOICED_CLAS ) || EQ_16( clas, AUDIO_CLAS ) ) ) ) /* Do not apply normalization on VOICED signal in case of stereo */ - { - Copy( dct_in_fx, exc_diffQ, L_FRAME ); - - /* normalization of the spectrum and noise fill */ - normalize_spec_fx( 1 * 256, exc_diffQ + mDiff_len, sub( L_FRAME, mDiff_len ), NORMALIZE_SPECS_Q_OUT ); - } - ELSE -#endif { Copy( dct_in_fx, exc_diffQ_fx, mDiff_len ); /* Q_dct_in */ set16_fx( exc_diffQ_fx + mDiff_len, 0, sub( L_FRAME, mDiff_len ) ); @@ -387,10 +360,6 @@ void improv_amr_wb_gs_fx( const Word16 Last_ener_fx, /* i : Last energy (Q8) Q0*/ const Word16 rate_switching_reset, /* i : rate switching reset flag Q0*/ const Word16 last_coder_type /* i : Last coder_type Q0*/ -#ifdef ADD_IVAS_GS_DEC_IMPR - , - const Word16 VeryLowRateSTflag /* i : Enable the noise enhancement for very low rate stereo generic mode */ -#endif ) { Word16 i, exp_a, exp_b, exp_diff, j; @@ -413,18 +382,10 @@ void improv_amr_wb_gs_fx( test(); test(); test(); -#ifdef ADD_IVAS_GS_DEC_IMPR - IF( VeryLowRateSTflag || - ( ( locattack == 0 && LE_32( core_brate, ACELP_12k65 ) ) && - ( ( LT_32( core_brate, ACELP_8k85 ) && NE_16( clas, AUDIO_CLAS ) && - ( EQ_16( clas, UNVOICED_CLAS ) || EQ_16( clas, VOICED_TRANSITION ) ) ) || - EQ_16( coder_type, INACTIVE ) ) ) ) -#else IF( ( locattack == 0 && LE_32( core_brate, ACELP_12k65 ) ) && ( ( LT_32( core_brate, ACELP_8k85 ) && NE_16( clas, AUDIO_CLAS ) && ( ( clas == UNVOICED_CLAS ) || EQ_16( clas, VOICED_TRANSITION ) ) ) || ( EQ_16( coder_type, INACTIVE ) ) ) ) -#endif { /*------------------------------------------------------------* * two differents paths: @@ -495,10 +456,6 @@ void improv_amr_wb_gs_fx( *------------------------------------------------------------*/ edct_16fx( exc2_fx, dct_exc_in_fx, L_FRAME, 6, EVS_MONO ); gs_dec_amr_wb_fx( core_brate, seed_tcx, dct_exc_in_fx, Q_exc2, dct_exc_out_fx, Q_exc2, pitch_buf_fx, lt_voice_fac_fx, clas, coder_type -#ifdef ADD_IVAS_GS_DEC_IMPR - , - VeryLowRateSTflag -#endif ); edct_16fx( dct_exc_out_fx, exc2_fx, L_FRAME, 6, EVS_MONO ); diff --git a/lib_dec/hq_classifier_dec_fx.c b/lib_dec/hq_classifier_dec_fx.c index 5ff5dec58..c8dac0a0b 100644 --- a/lib_dec/hq_classifier_dec_fx.c +++ b/lib_dec/hq_classifier_dec_fx.c @@ -99,17 +99,11 @@ Word16 hq_classifier_dec_fx( /* o : Consumed bits max_brate = HQ_48k; /* Q0 */ move32(); } -#ifndef SOLVED_COMP_ENC_DEC test(); test(); test(); test(); IF( ( EQ_16( length, L_SPEC32k ) || EQ_16( length, L_FRAME48k ) ) && LE_32( core_brate, max_brate ) ) -#else - /*_DIFF_FLOAT_FIX_ -> could this modification break the interoperability with EVS ?? */ - test(); - IF( ( EQ_16( length, L_SPEC32k ) || EQ_16( length, L_SPEC48k ) ) && LE_32( core_brate, max_brate ) ) -#endif { *hqswb_clas = get_next_indice( st_fx, 2 ); /* Q0 */ move16(); @@ -147,11 +141,7 @@ Word16 hq_classifier_dec_fx( /* o : Consumed bits *hqswb_clas = HQ_GEN_SWB; /* Q0 */ move16(); } -#ifndef SOLVED_COMP_ENC_DEC ELSE IF( EQ_16( length, L_FRAME48k ) ) -#else - ELSE IF( EQ_16( length, L_SPEC48k ) ) -#endif { *hqswb_clas = HQ_GEN_FB; /* Q0 */ move16(); diff --git a/lib_dec/hq_core_dec_fx.c b/lib_dec/hq_core_dec_fx.c index 4d1ef6774..3c2cd5a80 100644 --- a/lib_dec/hq_core_dec_fx.c +++ b/lib_dec/hq_core_dec_fx.c @@ -78,22 +78,10 @@ void hq_core_dec_fx( /*num_bits = (short)(st->total_brate / 50); */ Mpy_32_16_ss( st_fx->total_brate, 5243, &L_tmp, &lsb ); /* 5243 is 1/50 in Q18. (0+18-15=3) */ num_bits = extract_l( L_shr( L_tmp, 3 ) ); /*Q0 */ - -#ifdef ADD_IVAS_HQ_CODE_L_SPEC - /* Set default spectrum length */ - L_spec = l_spec_tbl[st_fx->bwidth]; -#endif IF( !st_fx->bfi ) { IF( EQ_16( core_switching_flag, 1 ) ) { -#ifdef ADD_IVAS_HQ_CODE_L_SPEC - IF( NE_16( st_fx->element_mode, EVS_MONO ) ) - { - L_spec = l_spec_ext_tbl[st_fx->bwidth]; - } - ELSE -#endif { core_switching_hq_prepare_dec_fx( st_fx, &num_bits, output_frame ); @@ -105,12 +93,6 @@ void hq_core_dec_fx( } } } -#ifdef ADD_IVAS_HQ_CODE - IF( hq_recovery_flag ) - { - acelp_plc_mdct_transition( st ); - } -#endif /* subtract signalling bits */ num_bits = sub( num_bits, st_fx->next_bit_pos ); /* Q0 */ @@ -145,9 +127,7 @@ void hq_core_dec_fx( /* set inner frame (== coded bandwidth) length */ inner_frame = inner_frame_tbl[st_fx->bwidth]; /* Q0 */ move16(); -#ifndef ADD_IVAS_HQ_CODE_L_SPEC L_spec = inner_frame; /* Q0 */ -#endif move16(); IF( st_fx->bfi == 0 ) @@ -233,12 +213,6 @@ void hq_core_dec_fx( move16(); } -#ifdef ADD_IVAS_HQ_CODE - test(); - test(); - test(); - IF( EQ_16( st_fx->element_mode, EVS_MONO ) || ( !core_switching_flag && !hq_recovery_flag ) ) -#endif { /* scaling (coefficients are in nominal level) */ IF( NE_16( output_frame, NORM_MDCT_FACTOR ) ) @@ -322,59 +296,6 @@ void hq_core_dec_fx( * Overlap-add * Pre-echo reduction *--------------------------------------------------------------------------*/ -#ifdef ADD_IVAS_HQ_CODE - if ( st->element_mode > EVS_MONO && ( core_switching_flag || hq_recovery_flag ) ) - { - /* Initializations for TCX MDCT framework, to be used for switching frame */ - tcx_cfg = st->hTcxCfg; - L_frameTCX_glob = hTcxDec->L_frameTCX; - L_frame_glob = st->L_frame; - L_spec = hTcxDec->L_frameTCX; - st->fscale = sr2fscale( st->sr_core ); - fscaleFB = sr2fscale( st->output_Fs ); - encoderLookahead = ( L_LOOK_12k8 * st->fscale ) / FSCALE_DENOM; - encoderLookaheadFB = ( L_LOOK_12k8 * fscaleFB ) / FSCALE_DENOM; - mdctWindowLength = getMdctWindowLength( st->fscale ); - mdctWindowLengthFB = (int16_t) ( mdctWindowLength * st->output_Fs / st->sr_core ); - if ( core_switching_flag ) - { - tcx_cfg->tcx_last_overlap_mode = TRANSITION_OVERLAP; - tcx_cfg->tcx_curr_overlap_mode = FULL_OVERLAP; - } - else - { - tcx_cfg->tcx_last_overlap_mode = ALDO_WINDOW; - tcx_cfg->tcx_curr_overlap_mode = ALDO_WINDOW; - st->last_core = HQ_CORE; /* Needed to decode non-transition frame */ - } - - init_tcx_window_cfg( tcx_cfg, st->sr_core, st->output_Fs, st->L_frame, hTcxDec->L_frameTCX, encoderLookahead, encoderLookaheadFB, mdctWindowLength, mdctWindowLengthFB, st->element_mode ); - - init_tcx_info( st, L_frame_glob, L_frameTCX_glob, 0, st->bfi, &tcx_offset, &tcx_offsetFB, &L_frame, &L_frameTCX, &left_rect, &L_spec ); - - overlap = tcx_cfg->tcx_mdct_window_length; - overlapFB = tcx_cfg->tcx_mdct_window_lengthFB; - index = tcx_cfg->tcx_last_overlap_mode; - - /* LB synthesis */ - IMDCT_fx( t_audio_q, hTcxDec->syn_Overl, hTcxDec->syn_Overl_TDAC, wtda_audio, tcx_cfg->tcx_aldo_window_1_trunc, tcx_cfg->tcx_aldo_window_2, tcx_cfg->tcx_mdct_window_half, tcx_cfg->tcx_mdct_window_minimum, tcx_cfg->tcx_mdct_window_trans, tcx_cfg->tcx_mdct_window_half_length, tcx_cfg->tcx_mdct_window_min_length, index, - MDCT_IV, left_rect, tcx_offset, overlap, L_frame, L_frameTCX, max( L_frameTCX, L_spec ) >> 1, L_frame_glob, 0, st->bfi, hHQ_core->old_outLB, 0, st, 0, acelp_zir ); - - mvr2r( wtda_audio + ( overlap >> 1 ) - tcx_offset, output, L_frame_glob ); - - /* FB synthesis */ - IMDCT_fx( t_audio_q, hTcxDec->syn_OverlFB, hTcxDec->syn_Overl_TDACFB, wtda_audio, tcx_cfg->tcx_aldo_window_1_FB_trunc, tcx_cfg->tcx_aldo_window_2_FB, tcx_cfg->tcx_mdct_window_halfFB, tcx_cfg->tcx_mdct_window_minimumFB, tcx_cfg->tcx_mdct_window_transFB, tcx_cfg->tcx_mdct_window_half_lengthFB, tcx_cfg->tcx_mdct_window_min_lengthFB, index, - MDCT_IV, left_rect, tcx_offsetFB, overlapFB, L_frameTCX, L_frameTCX, max( L_frameTCX, L_spec ) >> 1, L_frameTCX_glob, 0, st->bfi, hHQ_core->old_out, 1, st, FSCALE_DENOM * L_frameTCX_glob / L_frame_glob, acelp_zir ); - - mvr2r( wtda_audio + ( overlapFB >> 1 ) - tcx_offsetFB, synth, L_frameTCX_glob ); - - if ( !core_switching_flag ) - { - st->last_core = ACELP_CORE; /* Restore last core */ - } - } - else -#endif { test(); IF( EQ_16( output_frame, L_FRAME8k ) || st_fx->bfi == 0 ) @@ -392,24 +313,6 @@ void hq_core_dec_fx( move16(); } } -#ifdef ADD_IVAS_HQ_CODE - if ( st->element_mode > EVS_MONO ) - { - if ( st->bfi ) - { - /* Rough resampling, but reduces energy loss in case of switch to ACELP in first good frame */ - lerp( t_audio_q, wtda_audio_LB, st->L_frame, inner_frame ); - v_multc( t_audio_q, 0.5f, wtda_audio_LB, st->L_frame ); - } - else - { - /* LB synthesis for potential switch to ACELP */ - ener_match = (float) sqrt( (float) st->L_frame / (float) output_frame ); - v_multc( t_audio_q, ener_match, t_audio_q, inner_frame ); - inverse_transform( t_audio_q, wtda_audio_LB, is_transient, st->L_frame, inner_frame, st->element_mode ); - } - } -#endif IF( EQ_16( output_frame, L_FRAME8k ) ) { test(); @@ -465,13 +368,6 @@ void hq_core_dec_fx( window_ola_fx( wtda_audio, synth, Q_synth, hHQ_core->old_out_fx, &hHQ_core->Q_old_wtda, output_frame, st_fx->hTcxCfg->tcx_last_overlap_mode, st_fx->hTcxCfg->tcx_curr_overlap_mode, st_fx->prev_bfi && !hHQ_core->ph_ecu_active, hHQ_core->oldHqVoicing, hHQ_core->oldgapsynth_fx ); } -#ifdef ADD_IVAS_HQ_CODE - if ( st->element_mode > EVS_MONO ) - { - /* LB synthesis for potential switch to ACELP */ - window_ola( wtda_audio_LB, output, hHQ_core->old_outLB, L_FRAME16k, st->hTcxCfg->tcx_last_overlap_mode, st->hTcxCfg->tcx_curr_overlap_mode, st->prev_bfi && !hHQ_core->ph_ecu_active, hHQ_core->oldHqVoicing, hHQ_core->oldgapsynth ); - } -#endif test(); test(); IF( ( st_fx->bfi == 0 && st_fx->prev_bfi == 0 ) || !( GE_16( output_frame, L_FRAME16k ) ) ) @@ -561,13 +457,6 @@ void hq_core_dec_fx( Copy( &st_fx->mem_pitch_gain[2], &st_fx->mem_pitch_gain[nbsubfr + 2], nbsubfr ); /* Q14 */ set16_fx( &st_fx->mem_pitch_gain[2], 0, nbsubfr ); } -#ifdef ADD_IVAS_HQ_CODE - /* Move LB excitation to old_exc memory in case of switch HQ->ACELP */ - if ( st->element_mode > EVS_MONO ) - { - mvr2r( output, st->old_exc + L_EXC_MEM_DEC - st->L_frame, st->L_frame ); - } -#endif return; } diff --git a/lib_dec/hq_hr_dec_fx.c b/lib_dec/hq_hr_dec_fx.c index 89864bc3b..6423015bc 100644 --- a/lib_dec/hq_hr_dec_fx.c +++ b/lib_dec/hq_hr_dec_fx.c @@ -46,7 +46,6 @@ void ivas_hq_pred_hb_bws_fx( } ELSE { - // EVS_FUNC_MODIFIED st_fx->prev_ener_shb_fx = 0; move16(); L_tmp = L_deposit_l( 0 ); diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c index 3a0960960..17999496e 100644 --- a/lib_dec/ivas_output_config_fx.c +++ b/lib_dec/ivas_output_config_fx.c @@ -239,16 +239,6 @@ void ivas_renderer_select( move16(); } -#if 0 // def DEBUGGING /*temp disabling this as paramMC crashes with CREND*/ - IF ( st_ivas->hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_CREND ) - { - *renderer_type = RENDERER_BINAURAL_MIXER_CONV; - } - ELSE IF ( st_ivas->hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_FASTCONV ) - { - *renderer_type = RENDERER_BINAURAL_FASTCONV; - } -#endif test(); IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) { diff --git a/lib_dec/tns_base_dec_fx.c b/lib_dec/tns_base_dec_fx.c index 13f6ca461..def1ffefb 100644 --- a/lib_dec/tns_base_dec_fx.c +++ b/lib_dec/tns_base_dec_fx.c @@ -26,11 +26,8 @@ typedef Word32 ( *TLinearPredictionFilter )( Word16 order, Word16 const parCoeff * * *---------------------------------------------------------------------*/ -#ifdef IVAS_CODE -void -#else + Word16 -#endif ReadTnsData( STnsConfig const *pTnsConfig, Decoder_State *st, @@ -47,20 +44,6 @@ ReadTnsData( IF( GT_16( pTnsConfig->nMaxFilters, 1 ) ) { -#ifdef IVAS_CODE - IF( pTnsConfig->allowTnsOnWhite ) - { - IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) ) - { - ReadFromBitstream( &tnsEnabledOnWhiteSWBTCX10BitMap, 1, st, &stream, pnSize ); - } - ELSE - { - ReadFromBitstream( &tnsEnabledOnWhiteSWBTCX20BitMap, 1, st, &stream, pnSize ); - } - } - ELSE -#endif { IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) ) @@ -81,19 +64,10 @@ ReadTnsData( move16(); *pnBits = sub( st->next_bit_pos, start_bit_pos ); - -#ifdef IVAS_CODE - return; -#else return TNS_NO_ERROR; -#endif } -#define IVAS_CODE -#ifdef IVAS_CODE + void -#else -Word16 -#endif ReadTnsData_ivas_fx( STnsConfig const *pTnsConfig, Decoder_State *st, @@ -109,7 +83,6 @@ ReadTnsData_ivas_fx( IF( GT_16( pTnsConfig->nMaxFilters, 1 ) ) { -#ifdef IVAS_CODE IF( pTnsConfig->allowTnsOnWhite ) { IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) ) @@ -122,7 +95,6 @@ ReadTnsData_ivas_fx( } } ELSE -#endif { IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) ) @@ -143,13 +115,9 @@ ReadTnsData_ivas_fx( move16(); *pnBits = sub( st->next_bit_pos, start_bit_pos ); -#ifdef IVAS_CODE return; -#else - return TNS_NO_ERROR; -#endif } -#undef IVAS_CODE + /*---------------------------------------------------------------------* * DecodeTnsData() * @@ -169,21 +137,6 @@ Word16 DecodeTnsData( IF( GT_16( pTnsConfig->nMaxFilters, 1 ) ) { - -#ifdef IVAS_CODE - IF( pTnsConfig->allowTnsOnWhite ) - { - IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) ) - { - SetParameters( &tnsEnabledOnWhiteSWBTCX10BitMap, 1, pTnsData, &stream, pnSize ); - } - ELSE - { - SetParameters( &tnsEnabledOnWhiteSWBTCX20BitMap, 1, pTnsData, &stream, pnSize ); - } - } - ELSE -#endif { IF( LT_16( pTnsConfig->iFilterBorders[0], 512 ) ) { diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index bc7e1d536..7465a7f65 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -103,18 +103,6 @@ ivas_error TonalMDCTConceal_Init( hTonalMDCTConc->nScaleFactors = nScaleFactors; move16(); -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - PMTE() - set_zero( hTonalMDCTConc->scaleFactorsBackground, FDNS_NPTS ); - PsychoacousticParameters_Init( INT_FS_16k, L_FRAME16k, 64, 1, 1, &hTonalMDCTConc->psychParamsTCX20 ); - PsychoacousticParameters_Init( INT_FS_16k, L_FRAME16k / 2, 64, 0, 1, &hTonalMDCTConc->psychParamsTCX10 ); - hTonalMDCTConc->psychParams = NULL; - hTonalMDCTConc->scf_fadeout = 1.0f; - hTonalMDCTConc->last_block_nrg = 0.0f; - hTonalMDCTConc->curr_noise_nrg = 0.0f; - hTonalMDCTConc->faded_signal_nrg = 0.0f; - -#endif /* Offset the pointer to the end of buffer, so that pTCI is not destroyed when new time samples are stored in lastPcmOut */ move16(); @@ -198,9 +186,6 @@ ivas_error TonalMDCTConceal_Init_ivas_fx( hTonalMDCTConc->nScaleFactors = nScaleFactors; move16(); - //#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - // PMTE() - // To be uncommented when field of fixed type is added for scaleFactorsBackground set32_fx( hTonalMDCTConc->scaleFactorsBackground_fx, 0, FDNS_NPTS ); hTonalMDCTConc->scf_fadeout = 16384 /*1.000000 Q14*/; PsychoacousticParameters_Init_fx( INT_FS_16k, L_FRAME16k, 64, 1, 1, &hTonalMDCTConc->psychParamsTCX20 ); @@ -243,10 +228,6 @@ void TonalMDCTConceal_SaveFreqSignal( const Word16 *scaleFactors, // Q31-scaleFactors_exp const Word16 *scaleFactors_exp, const Word16 gain_tcx_exp -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - , - const int16_t infoIGFStartLine -#endif ) { Word16 *temp; @@ -340,20 +321,6 @@ void TonalMDCTConceal_SaveFreqSignal( test(); IF( ( nNewSamples > 0 ) && ( LE_16( nNewSamples, 2 * L_FRAME_MAX ) ) ) { -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - int16_t i; - PMTE() - hTonalMDCTConc->last_block_nrg_flt = 0.0f; - for ( i = 0; i < infoIGFStartLine; i++ ) - { - hTonalMDCTConc->lastBlockData.spectralData[i] = mdctSpectrum[i]; - hTonalMDCTConc->last_block_nrg_flt += mdctSpectrum[i] * mdctSpectrum[i]; - } - for ( ; i < nNewSamples; i++ ) - { - hTonalMDCTConc->lastBlockData.spectralData[i] = mdctSpectrum[i]; - } -#else /* Store new data */ s = getScaleFactor32( mdctSpectrum, nNewSamples ); @@ -375,7 +342,6 @@ void TonalMDCTConceal_SaveFreqSignal( move16(); } hTonalMDCTConc->lastBlockData.spectralData_exp = sub( mdctSpectrum_exp, s ); -#endif move16(); hTonalMDCTConc->lastBlockData.gain_tcx_exp = gain_tcx_exp; @@ -2207,19 +2173,12 @@ void TonalMDCTConceal_InsertNoise( Word16 *pSeed, /*IN/OUT*/ const Word16 tiltCompFactor, // Q15 Word16 crossfadeGain, // Q15 -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - const Word16concealment_noise[L_FRAME48k], - const float cngLevelBackgroundTrace_bfi, -#endif const Word16 crossOverFreq ) { Word16 i, ld, fac; Word16 rnd, exp, exp_last, exp_noise, inv_samples, inv_exp; Word16 g, tiltFactor, tilt, tmp; Word32 nrgNoiseInLastFrame, nrgWhiteNoise, L_tmp, L_tmp2; -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - float last_block_nrg_correct; -#endif g = sub( 32767 /*1.0f Q15*/, crossfadeGain ); @@ -2230,16 +2189,6 @@ void TonalMDCTConceal_InsertNoise( rnd = *pSeed; move16(); } -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - /* based on what is done in tcx_noise_filling() */ - /* always initialize these to avoid compiler warnings */ - tiltFactor = (float) pow( max( 0.375f, tiltCompFactor ), 1.0f / hTonalMDCTConc->lastBlockData.nSamples ); - tilt = 1.0f; - nrgNoiseInLastFrame = 0.0f; - nrgWhiteNoise = 0.0f; - hTonalMDCTConc->faded_signal_nrg_flt = 0.0f; - last_block_nrg_correct = 0.0f; -#endif IF( hTonalMDCTConc->lastBlockData.blockIsValid == 0 ) { /* may just become active if the very first frame is lost */ @@ -2247,199 +2196,8 @@ void TonalMDCTConceal_InsertNoise( *mdctSpectrum_exp = SPEC_EXP_DEC; move16(); } -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT - else if ( concealment_noise != NULL ) - { - if ( !tonalConcealmentActive ) - { - /* if fadeout has not started yet, only apply sign scrambling */ - if ( crossfadeGain == 1.0f ) - { - for ( i = 0; i < crossOverFreq; i++ ) - { - if ( concealment_noise[i] > 0 ) - { - mdctSpectrum[i] = hTonalMDCTConc->lastBlockData.spectralData[i]; - } - else - { - mdctSpectrum[i] = -hTonalMDCTConc->lastBlockData.spectralData[i]; - } - } - - for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ ) - { - mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l]; - } - } - /* actual fadeout is done in this case */ - else - { - g *= (float) sqrt( cngLevelBackgroundTrace_bfi / hTonalMDCTConc->curr_noise_nrg_flt ); - - for ( i = 0; i < crossOverFreq; i++ ) - { - x = hTonalMDCTConc->lastBlockData.spectralData[i]; - y = concealment_noise[i]; - - if ( y > 0 ) - { - mdctSpectrum[i] = g * y + crossfadeGain * x; - } - else - { - mdctSpectrum[i] = g * y - crossfadeGain * x; - } - - hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[i] * mdctSpectrum[i]; - } - for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ ) - { - mdctSpectrum[l] = 0.0f; - } - } - } - else - { - assert( hTonalMDCTConc->pTCI->numIndexes > 0 ); - - /* initialize bins of tonal components with zero: basically not - necessary, but currently the whole spectrum is rescaled in - mdct_noiseShaping() and then there would be a processing of - uninitialized values */ - for ( i = 0; i < hTonalMDCTConc->pTCI->numIndexes; i++ ) - { - for ( l = hTonalMDCTConc->pTCI->lowerIndex[i]; l <= hTonalMDCTConc->pTCI->upperIndex[i]; l++ ) - { - mdctSpectrum[l] = 0; - if ( l < crossOverFreq ) - { - last_block_nrg_correct += hTonalMDCTConc->lastBlockData.spectralData[l] * hTonalMDCTConc->lastBlockData.spectralData[l]; - hTonalMDCTConc->curr_noise_nrg_flt -= concealment_noise[l] * concealment_noise[l]; - } - } - } - - /* if fadeout has not started yet, only apply sign scrambling */ - if ( crossfadeGain == 1.0f ) - { - for ( l = 0; l < hTonalMDCTConc->pTCI->lowerIndex[0]; l++ ) - { - if ( concealment_noise[l] > 0 ) - { - mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l]; - } - else - { - mdctSpectrum[l] = -hTonalMDCTConc->lastBlockData.spectralData[l]; - } - } - for ( i = 1; i < hTonalMDCTConc->pTCI->numIndexes; i++ ) - { - for ( l = hTonalMDCTConc->pTCI->upperIndex[i - 1] + 1; l < hTonalMDCTConc->pTCI->lowerIndex[i]; l++ ) - { - if ( concealment_noise[l] > 0 ) - { - mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l]; - } - else - { - mdctSpectrum[l] = -hTonalMDCTConc->lastBlockData.spectralData[l]; - } - } - } - - for ( l = hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] + 1; l < crossOverFreq; l++ ) - { - if ( concealment_noise[l] > 0 ) - { - mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l]; - } - else - { - mdctSpectrum[l] = -hTonalMDCTConc->lastBlockData.spectralData[l]; - } - } - - for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ ) - { - mdctSpectrum[l] = hTonalMDCTConc->lastBlockData.spectralData[l]; - } - } - /* actual fadeout is done in this case */ - else - { - g *= (float) sqrt( cngLevelBackgroundTrace_bfi / hTonalMDCTConc->curr_noise_nrg_flt ); - - for ( l = 0; l < hTonalMDCTConc->pTCI->lowerIndex[0]; l++ ) - { - x = hTonalMDCTConc->lastBlockData.spectralData[l]; - y = concealment_noise[l]; - - if ( y > 0 ) - { - mdctSpectrum[l] = g * y + crossfadeGain * x; - } - else - { - mdctSpectrum[l] = g * y - crossfadeGain * x; - } - hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[l] * mdctSpectrum[l]; - } - for ( i = 1; i < hTonalMDCTConc->pTCI->numIndexes; i++ ) - { - for ( l = hTonalMDCTConc->pTCI->upperIndex[i - 1] + 1; l < hTonalMDCTConc->pTCI->lowerIndex[i]; l++ ) - { - x = hTonalMDCTConc->lastBlockData.spectralData[l]; - y = concealment_noise[l]; - - if ( y > 0 ) - { - mdctSpectrum[l] = g * y + crossfadeGain * x; - } - else - { - mdctSpectrum[l] = g * y - crossfadeGain * x; - } - hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[l] * mdctSpectrum[l]; - } - } - - for ( l = hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] + 1; l < crossOverFreq; l++ ) - { - x = hTonalMDCTConc->lastBlockData.spectralData[l]; - y = concealment_noise[l]; - - if ( y > 0 ) - { - mdctSpectrum[l] = g * y + crossfadeGain * x; - } - else - { - mdctSpectrum[l] = g * y - crossfadeGain * x; - } - hTonalMDCTConc->faded_signal_nrg_flt += mdctSpectrum[l] * mdctSpectrum[l]; - } - - for ( l = crossOverFreq; l < hTonalMDCTConc->lastBlockData.nSamples; l++ ) - { - mdctSpectrum[l] = 0.0f; - } - } - } - - if ( hTonalMDCTConc->faded_signal_nrg_flt > 0.0f && hTonalMDCTConc->curr_noise_nrg_flt > MDCT_ST_PLC_FADEOUT_MIN_NOISE_NRG ) - { - float nrg_corr_factor; - - nrg_corr_factor = sqrtf( ( hTonalMDCTConc->last_block_nrg_flt - last_block_nrg_correct ) / hTonalMDCTConc->faded_signal_nrg_flt ); - v_multc( mdctSpectrum, nrg_corr_factor, mdctSpectrum, crossOverFreq ); - } - } -#endif ELSE { -#ifndef IVAS_CODE_CNG_FIX185_PLC_FADEOUT L_tmp = 805306368l /*0.375f Q31*/; move32(); inv_exp = 15; @@ -2456,7 +2214,6 @@ void TonalMDCTConceal_InsertNoise( nrgNoiseInLastFrame = L_deposit_h( 0 ); nrgWhiteNoise = L_deposit_h( 0 ); exp_last = exp_noise = 0; -#endif move16(); move16(); IF( !tonalConcealmentActive ) @@ -3576,216 +3333,3 @@ void TonalMdctConceal_whiten_noise_shape_ivas_fx( pop_wmops(); } - - -#ifdef IVAS_CODE_CNG_FIX185_PLC_FADEOUT -void TonalMdctConceal_create_concealment_noise( - float concealment_noise[L_FRAME48k], - CPE_DEC_HANDLE hCPE, - const int16_t L_frameTCX, - const int16_t L_frame, - const int16_t idchan, - const int16_t subframe_idx, - const int16_t core, - const int16_t crossfade_gain, - const TONALMDCTCONC_NOISE_GEN_MODE noise_gen_mode ) -{ - STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct; - TonalMDCTConcealPtr hTonalMDCTConc; - Decoder_State *st; - HANDLE_FD_CNG_COM hFdCngCom; - int16_t *rnd_c, *rnd; - int16_t crossOverFreq, i, save_rnd_c, max_noise_line; - float c, c_inv; - float noise_shape_buffer[L_FRAME48k]; - int16_t inc, start_idx, stop_idx; - float *cngNoiseLevelPtr; - float last_scf; - - wmops_sub_start( "create_conc_noise" ); - - hStereoMdct = hCPE->hStereoMdct; - st = hCPE->hCoreCoder[idchan]; - hTonalMDCTConc = st->hTonalMDCTConc; - hFdCngCom = st->hFdCngDec->hFdCngCom; - rnd = &hStereoMdct->noise_seeds_channels[idchan]; - rnd_c = &hStereoMdct->noise_seed_common; - - /* determine start bin for IGF */ - if ( st->igf == 0 ) - { - if ( st->narrowBand == 0 ) - { - /* minimum needed for output with sampling rates lower then the - nominal sampling rate */ - crossOverFreq = min( L_frameTCX, L_frame ); - } - else - { - crossOverFreq = L_frameTCX; - } - } - else - { - crossOverFreq = min( st->hIGFDec->infoIGFStartLine, L_frameTCX ); - } - - /* for tonal mdct concealment with tonal components above the crossover frequency, conditionally raise the frequency index until which noise is generated */ - max_noise_line = crossOverFreq; - if ( st->tonal_mdct_plc_active ) - { - max_noise_line = max( max_noise_line, hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] + 1 ); - } - - /* first lost frame is handled separately */ - if ( !hTonalMDCTConc->lastBlockData.blockIsConcealed ) - { - *rnd = 1977 + idchan; - /* will be set twice when looping over two channels, but does not matter */ - *rnd_c = 1979; - } - - if ( crossfade_gain == 1.0f ) - { - /* In first frame, noise is weighted with zero anyway, we only need the random numbers for the sign scrambling */ - for ( i = 0; i < max_noise_line; i++ ) - { - *rnd = own_random( rnd ); - concealment_noise[i] = *rnd; - } - - wmops_sub_end(); - - return; - } - - save_rnd_c = *rnd_c; - - c = sqrtf( hStereoMdct->lastCoh ); - c_inv = sqrtf( 1 - hStereoMdct->lastCoh ); - - /* pre-compute the noise shape for later weighting of the noise spectra */ - cngNoiseLevelPtr = &hFdCngCom->cngNoiseLevel_flt[0]; - inc = ( st->core > TCX_20_CORE ) ? 2 : 1; - start_idx = hFdCngCom->startBand / inc; - stop_idx = hFdCngCom->stopFFTbin / inc; - - for ( i = 0; i < start_idx; i++ ) - { - noise_shape_buffer[i] = 0.0f; - } - for ( ; i < stop_idx; i++, cngNoiseLevelPtr += inc ) - { - noise_shape_buffer[i] = sqrtf( *( cngNoiseLevelPtr ) ); - } - - last_scf = sqrtf( *( cngNoiseLevelPtr - inc ) ); - - for ( ; i < max_noise_line; i++ ) - { - noise_shape_buffer[i] = last_scf; - } - - /* fill the noise vector */ - hTonalMDCTConc->curr_noise_nrg_flt = MDCT_ST_PLC_FADEOUT_MIN_NOISE_NRG; - if ( noise_gen_mode == EQUAL_CORES || ( ( noise_gen_mode == TCX20_IN_0_TCX10_IN_1 && idchan == 0 ) || ( noise_gen_mode == TCX10_IN_0_TCX20_IN_1 && idchan == 1 ) ) ) - { - /* current channel is TCX20 -> generate noise for "full-length" spectrum */ - for ( i = 0; i < max_noise_line; i++ ) - { - *rnd = own_random( rnd ); - *rnd_c = own_random( rnd_c ); - - concealment_noise[i] = ( c_inv * *rnd + c * *rnd_c ) * noise_shape_buffer[i]; - hTonalMDCTConc->curr_noise_nrg_flt += concealment_noise[i] * concealment_noise[i]; - } - } - else /* ( ( noise_gen_mode == TCX10_IN_0_TCX20_IN_1 && idchan == 0 ) || ( noise_gen_mode == TCX20_IN_0_TCX10_IN_1 && idchan == 1 ) ) */ - { - /* current channel is TCX10 and the other is TCX20 -> generate noise for "half-length" spectrum, but "increment" mid seed twice, to have the same seed in mid as the other (TCX20) channel for next frame */ - for ( i = 0; i < max_noise_line; i++ ) - { - *rnd = own_random( rnd ); - *rnd_c = own_random( rnd_c ); - - concealment_noise[i] = ( c_inv * *rnd + c * *rnd_c ) * noise_shape_buffer[i]; - hTonalMDCTConc->curr_noise_nrg_flt += concealment_noise[i] * concealment_noise[i]; - - *rnd_c = own_random( rnd_c ); - } - } - if ( st->tonal_mdct_plc_active ) - { - for ( i = crossOverFreq; i < max( crossOverFreq, hTonalMDCTConc->pTCI->lowerIndex[hTonalMDCTConc->pTCI->numIndexes - 1] ); ++i ) - { - concealment_noise[i] *= 0.0f; - } - } - /* restore common seed - - after finishing the first channel - - after a first subframe if the current channel is TCX10 */ - if ( ( idchan == 0 && ( core == TCX_20 || ( core == TCX_10 && subframe_idx == 1 ) ) ) || ( core == TCX_10 && subframe_idx == 0 ) ) - { - *rnd_c = save_rnd_c; - } - st->seed_tcx_plc = *rnd; - wmops_sub_end(); - - return; -} -void TonalMdctConceal_whiten_noise_shape( - Decoder_State *st, - const int16_t L_frame, - const TONALMDCTCONC_NOISE_SHAPE_WHITENING_MODE whitening_mode ) -{ - int16_t inc, start_idx, stop_idx; - float *noiseLevelPtr, *scfs_bg, *scfs_for_shaping; - HANDLE_FD_CNG_COM hFdCngCom; - float whitenend_noise_shape[L_FRAME16k]; - float scfs_int[FDNS_NPTS]; - const PsychoacousticParameters *psychParams; - - push_wmops( "apply_sns_on_noise_shape" ); - - scfs_bg = &st->hTonalMDCTConc->scaleFactorsBackground_flt[0]; - psychParams = st->hTonalMDCTConc->psychParams; - hFdCngCom = st->hFdCngDec->hFdCngCom; - - inc = ( ( whitening_mode == ON_FIRST_LOST_FRAME ? st->core : st->last_core ) > TCX_20_CORE ) ? 2 : 1; - start_idx = hFdCngCom->startBand / inc; - stop_idx = L_frame / inc; - noiseLevelPtr = hFdCngCom->cngNoiseLevel_flt; - - set_zero( whitenend_noise_shape, start_idx ); - for ( int16_t j = start_idx; j < stop_idx; j++, noiseLevelPtr += inc ) - { - whitenend_noise_shape[j] = *noiseLevelPtr; - } - - if ( whitening_mode == ON_FIRST_LOST_FRAME ) - { - float scf[SNS_NPTS]; - - sns_compute_scf( whitenend_noise_shape, psychParams, L_frame, scf ); - sns_interpolate_scalefactors( scfs_int, scf, ENC ); - sns_interpolate_scalefactors( scfs_bg, scf, DEC ); - scfs_for_shaping = &scfs_int[0]; - } - else /* whitening_mode == ON_FIRST_GOOD_FRAME */ - { - scfs_for_shaping = &scfs_bg[0]; - } - - if ( sum_f( scfs_for_shaping, FDNS_NPTS ) > 0.0f ) - { - sns_shape_spectrum( whitenend_noise_shape, psychParams, scfs_for_shaping, L_frame ); - mvr2r( whitenend_noise_shape + start_idx, hFdCngCom->cngNoiseLevel_flt, stop_idx - start_idx ); - } - else - { - set_zero( hFdCngCom->cngNoiseLevel_flt, stop_idx - start_idx ); - } - - pop_wmops(); -} -#endif diff --git a/lib_dec/updt_dec_fx.c b/lib_dec/updt_dec_fx.c index 0e1b951bb..81046fb19 100644 --- a/lib_dec/updt_dec_fx.c +++ b/lib_dec/updt_dec_fx.c @@ -576,23 +576,6 @@ void updt_dec_common_fx( test(); test(); test(); -#ifdef IVAS_CODE - /* Store long-term estimates of stab_fac and log energy diff to estimate env_stab in case of core switch ACELP/TCX->HQ */ - if ( st->element_mode != EVS_MONO ) - { - output_frame = NS2SA( st->output_Fs, FRAME_SIZE_NS ); - log_energy = log2f( ( sum2_f( synth, output_frame ) / output_frame ) + 1.0f ); - log_energy_diff = fabsf( st->log_energy_old - log_energy ); - st->log_energy_old = log_energy; - st->log_energy_diff_lt = ENV_SMOOTH_FAC * log_energy_diff + ( 1.0f - ENV_SMOOTH_FAC ) * st->log_energy_diff_lt; - if ( st->core == HQ_CORE ) - { - st->stab_fac = min( 1, ( STAB_FAC_EST1 + ( STAB_FAC_EST2 * st->hHQ_core->mem_env_delta ) + ( STAB_FAC_EST3 * st->log_energy_diff_lt ) ) ); - st->stab_fac = max( 0, st->stab_fac ); - } - st->stab_fac_smooth_lt = ENV_SMOOTH_FAC * st->stab_fac + ( 1.0f - ENV_SMOOTH_FAC ) * st->stab_fac_smooth_lt; - } -#endif IF( ( ( LE_32( st_fx->core_brate, SID_2k40 ) ) && EQ_16( st_fx->cng_type, FD_CNG ) ) || ( st_fx->tcxonly && EQ_16( st_fx->codec_mode, MODE2 ) ) ) { @@ -964,23 +947,6 @@ void ivas_updt_dec_common_fx( test(); test(); test(); -#ifdef IVAS_CODE - /* Store long-term estimates of stab_fac and log energy diff to estimate env_stab in case of core switch ACELP/TCX->HQ */ - if ( st->element_mode != EVS_MONO ) - { - output_frame = NS2SA( st->output_Fs, FRAME_SIZE_NS ); - log_energy = log2f( ( sum2_f( synth, output_frame ) / output_frame ) + 1.0f ); - log_energy_diff = fabsf( st->log_energy_old - log_energy ); - st->log_energy_old = log_energy; - st->log_energy_diff_lt = ENV_SMOOTH_FAC * log_energy_diff + ( 1.0f - ENV_SMOOTH_FAC ) * st->log_energy_diff_lt; - if ( st->core == HQ_CORE ) - { - st->stab_fac = min( 1, ( STAB_FAC_EST1 + ( STAB_FAC_EST2 * st->hHQ_core->mem_env_delta ) + ( STAB_FAC_EST3 * st->log_energy_diff_lt ) ) ); - st->stab_fac = max( 0, st->stab_fac ); - } - st->stab_fac_smooth_lt = ENV_SMOOTH_FAC * st->stab_fac + ( 1.0f - ENV_SMOOTH_FAC ) * st->stab_fac_smooth_lt; - } -#else IF( st_fx->element_mode != EVS_MONO ) { Word16 q_div = sub( Q31, shl( Qpostd, 1 ) ); @@ -1003,7 +969,6 @@ void ivas_updt_dec_common_fx( st_fx->stab_fac_smooth_lt_fx = extract_h( L_add( L_mult( ENV_SMOOTH_FAC_FX, st_fx->stab_fac_fx ), L_mult( sub( MAX_16, ENV_SMOOTH_FAC_FX ), st_fx->stab_fac_smooth_lt_fx ) ) ); // Q15 } -#endif test(); test(); diff --git a/lib_enc/cng_enc_fx.c b/lib_enc/cng_enc_fx.c index b031ca528..9dea812a6 100644 --- a/lib_enc/cng_enc_fx.c +++ b/lib_enc/cng_enc_fx.c @@ -462,7 +462,6 @@ void CNG_enc_fx( IF( hTdCngEnc->burst_ho_cnt > 0 ) { /**allow_cn_step |= ( hTdCngEnc->ho_ener_hist_fx[hTdCngEnc->ho_hist_ptr] > 4 * hTdCngEnc->lp_ener_fx ); */ -#if 1 /*allow_cn_step |= (hDtxEnc->first_CNG || st->element_mode == EVS_MONO) && (hTdCngEnc->ho_ener_hist[hTdCngEnc->ho_hist_ptr] > lp_ener_thr_scale * hTdCngEnc->lp_ener);*/ /* (hTdCngEnc->ho_ener_hist[hTdCngEnc->ho_hist_ptr] > lp_ener_thr_scale * hTdCngEnc->lp_ener); */ L_tmp1 = L_shr( hTdCngEnc->ho_ener_hist_fx[hTdCngEnc->ho_hist_ptr], 2 ); @@ -471,10 +470,6 @@ void CNG_enc_fx( L_tmp1 = L_add( L_tmp1, L_shr( hTdCngEnc->lp_ener_fx, 8 ) ); } L_tmp1 = L_sub( L_tmp1, hTdCngEnc->lp_ener_fx ); -#else - L_tmp1 = L_shr( hTdCngEnc->ho_ener_hist_fx[hTdCngEnc->ho_hist_ptr], 2 ); - L_tmp1 = L_sub( L_tmp1, hTdCngEnc->lp_ener_fx ); -#endif test(); test(); IF( ( hDtxEnc->first_CNG > 0 || st_fx->element_mode == EVS_MONO ) && L_tmp1 > 0 ) diff --git a/lib_enc/cod_tcx_fx.c b/lib_enc/cod_tcx_fx.c index 4bb44eae2..c40db6678 100644 --- a/lib_enc/cod_tcx_fx.c +++ b/lib_enc/cod_tcx_fx.c @@ -138,487 +138,7 @@ void HBAutocorrelation_fx( move32(); } } -#ifdef ADD_IVAS_TNS -/*-------------------------------------------------------------------* - * TNSAnalysisStereo() - * - * - *-------------------------------------------------------------------*/ - -#define SIMILAR_TNS_THRESHOLD ( 0.04f ) -#define TNS_GAIN_THRESHOLD_FOR_WHITE ( 3.0f ) - -void TNSAnalysisStereo( - Encoder_State **sts, /* i : encoder state handle */ - float *mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* o : MDST spectrum */ - const int16_t bWhitenedDomain, /* i : whitened domain flag */ - int16_t tnsSize[MCT_MAX_CHANNELS][NB_DIV], /* i : number of tns parameters put into prm */ - int16_t tnsBits[MCT_MAX_CHANNELS][NB_DIV], /* i : number of tns bits in the frame */ - int16_t param_core[][NB_DIV * NPRM_DIV], /* o : TNS parameters */ - const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ -) -{ - int16_t ch, k, L_spec, L_frame, nSubframes, iFilter; - float *spectrum; - Encoder_State *st = NULL; - TCX_ENC_HANDLE hTcxEnc = NULL; - int16_t individual_decision[NB_DIV]; - float maxPredictionGain = 0.f, meanPredictionGain; - - individual_decision[0] = 0; - individual_decision[1] = 0; - L_spec = -1; - L_frame = -1; - - /* TNS filter analysis, loop over channels */ - for ( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - st = sts[ch]; - if ( st->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) - { - continue; - } - - hTcxEnc = st->hTcxEnc; - - nSubframes = ( hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV; - - for ( k = 0; k < nSubframes; k++ ) - { - /* reset tns on whitened domain flag */ - if ( !bWhitenedDomain ) - { - hTcxEnc->bTnsOnWhithenedSpectra[k] = 0; - hTcxEnc->fUseTns[k] = 0; - } - - if ( st->hTcxCfg->fIsTNSAllowed && ( !bWhitenedDomain || hTcxEnc->bTnsOnWhithenedSpectra[k] ) ) - { - - spectrum = hTcxEnc->spectrum[k]; - L_frame = hTcxEnc->L_frameTCX; - st->hTcxCfg->pCurrentTnsConfig = &st->hTcxCfg->tnsConfig[hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( st->last_core == ACELP_CORE )]; - L_spec = st->hTcxCfg->pCurrentTnsConfig->iFilterBorders[0]; - - /*-----------------------------------------------------------* - * Temporal Noise Shaping analysis * - *-----------------------------------------------------------*/ - - if ( hTcxEnc->transform_type[k] == TCX_5 ) - { - /* rearrange LF sub-window lines prior to TNS analysis & filtering */ - tcx5TnsGrouping( L_frame >> 2, L_spec >> 1, spectrum ); - } - - /* WMOPS: All initializations are either for safety or static (tables) and thus not to be counted */ - ResetTnsData( &hTcxEnc->tnsData[k] ); - if ( st->hTcxCfg->pCurrentTnsConfig->maxOrder <= 0 ) - { - break; - } - - CalculateTnsFilt( st->hTcxCfg->pCurrentTnsConfig, spectrum, &hTcxEnc->tnsData[k], NULL ); - } - } - } - - if ( !mct_on ) - { - /* TNS decision */ - /* if framing differs between channels, keep the filter decision per channel */ - if ( ( sts[0]->hTcxEnc->transform_type[0] != sts[1]->hTcxEnc->transform_type[0] && - sts[0]->hTcxEnc->transform_type[1] != sts[1]->hTcxEnc->transform_type[1] ) || - sts[0]->hTcxCfg->fIsTNSAllowed != sts[1]->hTcxCfg->fIsTNSAllowed ) - { - individual_decision[0] = individual_decision[1] = 1; - } - else if ( bWhitenedDomain ) - { - nSubframes = ( sts[0]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV; - for ( k = 0; k < nSubframes; k++ ) - { - if ( sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] != sts[1]->hTcxEnc->bTnsOnWhithenedSpectra[k] ) - { - individual_decision[k] = 1; - } - } - } - - /* framing equal, check for similar filters, if very similar (also indicator for and M signal), - * use at least the same decision, maybe use the same filter - */ - { - int16_t isTCX10; - isTCX10 = ( sts[0]->hTcxEnc->tcxMode == TCX_20 ) ? 0 : 1; - - nSubframes = ( sts[0]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV; - - for ( k = 0; k < nSubframes; k++ ) - { - if ( sts[0]->hTcxCfg->fIsTNSAllowed && individual_decision[k] != 1 && ( !bWhitenedDomain || sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] ) ) - { - float maxPredGain = -1.0f; - sts[0]->hTcxCfg->pCurrentTnsConfig = &sts[0]->hTcxCfg->tnsConfig[sts[0]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[0]->last_core == ACELP_CORE )]; - sts[1]->hTcxCfg->pCurrentTnsConfig = &sts[1]->hTcxCfg->tnsConfig[sts[1]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[1]->last_core == ACELP_CORE )]; - -#ifdef DEBUGGING - assert( sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters == sts[1]->hTcxCfg->pCurrentTnsConfig->nMaxFilters ); -#endif - for ( iFilter = sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- ) - { - STnsFilter *pFilter[2]; - struct TnsParameters const *pTnsParameters[2]; - pFilter[0] = sts[0]->hTcxEnc->tnsData[k].filter + iFilter; - pTnsParameters[0] = sts[0]->hTcxCfg->pCurrentTnsConfig->pTnsParameters + iFilter; - pFilter[1] = sts[1]->hTcxEnc->tnsData[k].filter + iFilter; - pTnsParameters[1] = sts[1]->hTcxCfg->pCurrentTnsConfig->pTnsParameters + iFilter; - -#ifdef DEBUGGING - assert( pTnsParameters[0]->startLineFrequency == pTnsParameters[1]->startLineFrequency ); - assert( pTnsParameters[0]->nSubdivisions == pTnsParameters[1]->nSubdivisions ); -#endif - /* if prediction gain and avgSqrCoef are both close we are pretty sure the filters are quite similar, use the avg of - * both filters for the decision - */ - meanPredictionGain = ( pFilter[0]->predictionGain + pFilter[1]->predictionGain ) * 0.5f; - maxPredictionGain = max( maxPredictionGain, meanPredictionGain ); - - if ( ( pFilter[0]->predictionGain > pTnsParameters[0]->minPredictionGain ) && ( sts[0]->element_brate < IVAS_80k ) && - ( pFilter[1]->predictionGain > pTnsParameters[1]->minPredictionGain ) && ( sts[0]->hTcxEnc->tnsData[k].nFilters == sts[1]->hTcxEnc->tnsData[k].nFilters ) ) - { - pFilter[0]->predictionGain = pFilter[1]->predictionGain = meanPredictionGain; /* more TNS filter sync at 48kbps */ - } - if ( ( fabs( pFilter[0]->predictionGain - pFilter[1]->predictionGain ) < SIMILAR_TNS_THRESHOLD * meanPredictionGain ) && - ( sts[0]->hTcxEnc->tnsData[k].nFilters == sts[1]->hTcxEnc->tnsData[k].nFilters ) ) - { - float maxAvgSqrCoef = max( pFilter[0]->avgSqrCoef, pFilter[1]->avgSqrCoef ); - float meanLtpGain = ( sts[0]->hTcxEnc->tcxltp_gain + sts[1]->hTcxEnc->tcxltp_gain ) * 0.5f; - maxPredGain = max( maxPredGain, meanPredictionGain ); - if ( ( meanPredictionGain > pTnsParameters[0]->minPredictionGain ) || ( maxAvgSqrCoef > pTnsParameters[0]->minAvgSqrCoef ) ) - { - if ( sts[0]->hTcxEnc->tnsData[k].nFilters > 0 || sts[1]->hTcxEnc->tnsData[k].nFilters > 0 || isTCX10 || meanLtpGain < 0.6f ) - { - ++sts[0]->hTcxEnc->tnsData[k].nFilters; - pFilter[0]->filterType = TNS_FILTER_ON; - ++sts[1]->hTcxEnc->tnsData[k].nFilters; - pFilter[1]->filterType = TNS_FILTER_ON; - } - else - { - const float maxEnergyChange = ( GetTCXMaxenergyChange( sts[0]->hTranDet, isTCX10, NSUBBLOCKS, 3 ) + GetTCXMaxenergyChange( sts[1]->hTranDet, isTCX10, NSUBBLOCKS, 3 ) ) * 0.5f; - - if ( maxEnergyChange >= pTnsParameters[0]->minEnergyChange ) - { - ++sts[0]->hTcxEnc->tnsData[k].nFilters; - pFilter[0]->filterType = TNS_FILTER_ON; - ++sts[1]->hTcxEnc->tnsData[k].nFilters; - pFilter[1]->filterType = TNS_FILTER_ON; - } - else - { - pFilter[0]->filterType = TNS_FILTER_OFF; - pFilter[1]->filterType = TNS_FILTER_OFF; - } - } - } - else if ( sts[0]->hTcxEnc->tnsData[k].nFilters > 0 && sts[1]->hTcxEnc->tnsData[k].nFilters > 0 ) /* If a previous filter is turned on */ - { - pFilter[0]->filterType = TNS_FILTER_ON_ZERO; - pFilter[1]->filterType = TNS_FILTER_ON_ZERO; - ++sts[0]->hTcxEnc->tnsData[k].nFilters; - ++sts[1]->hTcxEnc->tnsData[k].nFilters; - } - else if ( sts[0]->hTcxEnc->tnsData[k].nFilters != sts[1]->hTcxEnc->tnsData[k].nFilters ) /* sanity check */ - { - assert( 0 ); - } - else - { - pFilter[0]->filterType = TNS_FILTER_OFF; - pFilter[1]->filterType = TNS_FILTER_OFF; - } - if ( ( pFilter[0]->filterType == TNS_FILTER_ON ) && ( pFilter[1]->filterType == TNS_FILTER_ON ) && ( sts[0]->element_brate < IVAS_80k ) ) - { - int16_t tmpIntValue = 0; - int16_t tmpCoeff[TNS_MAX_FILTER_ORDER]; - int16_t i, maxOrder = max( pFilter[0]->order, pFilter[1]->order ); - - set_s( tmpCoeff, 0, TNS_MAX_FILTER_ORDER ); - for ( i = 0; i < maxOrder; i++ ) - { - tmpIntValue = (int16_t) max( tmpIntValue, abs( pFilter[0]->coefIndex[i] - pFilter[1]->coefIndex[i] ) ); - } - if ( tmpIntValue == 1 ) /* the TNS coefficients are sufficiently similar to equalize the two filters */ - { - for ( i = maxOrder - 1; i >= 0; i-- ) - { - tmpCoeff[i] = ( abs( pFilter[0]->coefIndex[i] ) < abs( pFilter[1]->coefIndex[i] ) ? pFilter[0]->coefIndex[i] : pFilter[1]->coefIndex[i] ); - if ( ( tmpIntValue > 0 ) && ( tmpCoeff[i] == 0 ) ) - { - maxOrder--; - } - else - { - tmpIntValue = 0; - } - } - /* make sure that maxOrder is non zero and not all coefficients are zero (could happen in rare cases) */ - if ( maxOrder > 0 ) - { - for ( i = TNS_MAX_FILTER_ORDER - 1; i >= 0; i-- ) - { - pFilter[0]->coefIndex[i] = pFilter[1]->coefIndex[i] = tmpCoeff[i]; - } - - pFilter[0]->order = pFilter[1]->order = maxOrder; - } - } - } - } - else - { - individual_decision[k] = 1; - } - } - - if ( individual_decision[k] == 0 ) - { - sts[0]->hTcxEnc->fUseTns[k] = ( sts[0]->hTcxEnc->tnsData[k].nFilters > 0 ) ? 1 : 0; - sts[1]->hTcxEnc->fUseTns[k] = ( sts[1]->hTcxEnc->tnsData[k].nFilters > 0 ) ? 1 : 0; - } - else - { - sts[0]->hTcxEnc->tnsData[k].nFilters = 0; - sts[1]->hTcxEnc->tnsData[k].nFilters = 0; - sts[0]->hTcxEnc->fUseTns[k] = 0; - sts[1]->hTcxEnc->fUseTns[k] = 0; - for ( iFilter = sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- ) - { - sts[0]->hTcxEnc->tnsData[k].filter[iFilter].filterType = TNS_FILTER_OFF; - sts[1]->hTcxEnc->tnsData[k].filter[iFilter].filterType = TNS_FILTER_OFF; - } - } - - if ( !bWhitenedDomain && individual_decision[k] == 0 && maxPredGain < TNS_GAIN_THRESHOLD_FOR_WHITE && sts[0]->hTcxEnc->transform_type[k] != TCX_5 ) - { - sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] = 1; - sts[1]->hTcxEnc->bTnsOnWhithenedSpectra[k] = 1; - sts[0]->hTcxEnc->tnsData[k].nFilters = 0; - sts[1]->hTcxEnc->tnsData[k].nFilters = 0; - sts[0]->hTcxEnc->fUseTns[k] = 0; - sts[1]->hTcxEnc->fUseTns[k] = 0; - for ( iFilter = sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- ) - { - ClearTnsFilterCoefficients( sts[0]->hTcxEnc->tnsData[k].filter + iFilter ); - ClearTnsFilterCoefficients( sts[1]->hTcxEnc->tnsData[k].filter + iFilter ); - } - } - maxPredictionGain = max( maxPredictionGain, maxPredGain ); - } - } - } - } - - /* individual decision for each channel */ - for ( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - if ( sts[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) - { - continue; - } - - int16_t isTCX10; - isTCX10 = ( sts[ch]->hTcxEnc->tcxMode == TCX_20 ) ? 0 : 1; - - nSubframes = ( sts[ch]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV; - - for ( k = 0; k < nSubframes; k++ ) - { - if ( sts[ch]->hTcxCfg->fIsTNSAllowed && ( individual_decision[k] || mct_on ) && - ( !bWhitenedDomain || sts[ch]->hTcxEnc->bTnsOnWhithenedSpectra[k] ) ) - { - float maxPredGain = -1.0f; - - sts[ch]->hTcxCfg->pCurrentTnsConfig = &sts[ch]->hTcxCfg->tnsConfig[sts[ch]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[ch]->last_core == ACELP_CORE )]; - - for ( iFilter = sts[ch]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- ) - { - STnsFilter *pFilter; - const struct TnsParameters *pTnsParameters; - pFilter = sts[ch]->hTcxEnc->tnsData[k].filter + iFilter; - pTnsParameters = sts[ch]->hTcxCfg->pCurrentTnsConfig->pTnsParameters + iFilter; - maxPredGain = max( maxPredGain, pFilter->predictionGain ); - - if ( ( pFilter->predictionGain > pTnsParameters->minPredictionGain ) || ( pFilter->avgSqrCoef > pTnsParameters->minAvgSqrCoef ) ) - { - if ( sts[ch]->hTcxEnc->tnsData[k].nFilters > 0 || isTCX10 || sts[ch]->hTcxEnc->tcxltp_gain < 0.6f ) - { - ++sts[ch]->hTcxEnc->tnsData[k].nFilters; - pFilter->filterType = TNS_FILTER_ON; - } - else - { - const float maxEnergyChange = GetTCXMaxenergyChange( sts[ch]->hTranDet, isTCX10, NSUBBLOCKS, 3 ); - - if ( maxEnergyChange >= pTnsParameters->minEnergyChange ) - { - ++sts[ch]->hTcxEnc->tnsData[k].nFilters; - pFilter->filterType = TNS_FILTER_ON; - } - else - { - pFilter->filterType = TNS_FILTER_OFF; - } - } - } - else if ( sts[ch]->hTcxEnc->tnsData[k].nFilters > 0 ) /* If a previous filter is turned on */ - { - pFilter->filterType = TNS_FILTER_ON_ZERO; - ++sts[ch]->hTcxEnc->tnsData[k].nFilters; - } - else - { - pFilter->filterType = TNS_FILTER_OFF; - } - } - - sts[ch]->hTcxEnc->fUseTns[k] = ( sts[ch]->hTcxEnc->tnsData[k].nFilters > 0 ) ? 1 : 0; - - if ( !bWhitenedDomain && maxPredGain < TNS_GAIN_THRESHOLD_FOR_WHITE && sts[ch]->hTcxEnc->transform_type[k] != TCX_5 ) - { - sts[ch]->hTcxEnc->fUseTns[k] = 0; - sts[ch]->hTcxEnc->bTnsOnWhithenedSpectra[k] = 1; - sts[ch]->hTcxEnc->tnsData[k].nFilters = 0; - for ( iFilter = sts[ch]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- ) - { - ClearTnsFilterCoefficients( sts[ch]->hTcxEnc->tnsData[k].filter + iFilter ); - sts[ch]->hTcxEnc->tnsData[k].filter[iFilter].filterType = TNS_FILTER_OFF; - } - } - maxPredictionGain = max( maxPredictionGain, maxPredGain ); - } - } - } - - - /* we have the decision, set filter data accordingly */ - for ( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - if ( sts[ch]->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) - { - continue; - } - - nSubframes = ( sts[ch]->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV; - - for ( k = 0; k < nSubframes; k++ ) - { - if ( sts[ch]->hTcxCfg->fIsTNSAllowed && ( !bWhitenedDomain || sts[ch]->hTcxEnc->bTnsOnWhithenedSpectra[k] ) ) - { - sts[ch]->hTcxCfg->pCurrentTnsConfig = &sts[ch]->hTcxCfg->tnsConfig[sts[ch]->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( sts[ch]->last_core == ACELP_CORE )]; - - for ( iFilter = sts[ch]->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- ) - { - STnsFilter *pFilter; - pFilter = sts[ch]->hTcxEnc->tnsData[k].filter + iFilter; - switch ( pFilter->filterType ) - { - case TNS_FILTER_OFF: - ClearTnsFilterCoefficients( sts[ch]->hTcxEnc->tnsData[k].filter + iFilter ); - break; - case TNS_FILTER_ON_ZERO: - /* Since TNS filter of order 0 is not allowed we have to signal in the stream filter of order 1 with the 0th coefficient equal to 0 */ - ClearTnsFilterCoefficients( pFilter ); - pFilter->order = 1; - break; - } - } - } - } - } - - /* Apply filters, loop over channels */ - for ( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - st = sts[ch]; - if ( st->mct_chan_mode == MCT_CHAN_MODE_IGNORE ) - { - continue; - } - - nSubframes = ( st->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV; - - for ( k = 0; k < nSubframes; k++ ) - { - if ( bWhitenedDomain && ( ch > 0 ) && /* test for identical TNS filter data in both channels */ - sts[0]->hTcxCfg->fIsTNSAllowed && sts[0]->hTcxEnc->fUseTns[k] && - sts[1]->hTcxCfg->fIsTNSAllowed && sts[1]->hTcxEnc->fUseTns[k] ) - { - int16_t equalFilterData = ( sts[0]->hTcxCfg->pCurrentTnsConfig->nMaxFilters == sts[1]->hTcxCfg->pCurrentTnsConfig->nMaxFilters && - sts[0]->hTcxEnc->bTnsOnWhithenedSpectra[k] == sts[1]->hTcxEnc->bTnsOnWhithenedSpectra[k] && - sts[0]->hTcxEnc->tnsData[k].nFilters == sts[1]->hTcxEnc->tnsData[k].nFilters ) - ? 1 - : 0; - if ( equalFilterData ) - { - for ( iFilter = st->hTcxCfg->pCurrentTnsConfig->nMaxFilters - 1; iFilter >= 0; iFilter-- ) - { - const int16_t *pDataCh0 = (const int16_t *) &sts[0]->hTcxEnc->tnsData[k].filter[iFilter]; - const int16_t *pDataCh1 = (const int16_t *) &sts[1]->hTcxEnc->tnsData[k].filter[iFilter]; - int16_t i = 2 + TNS_MAX_FILTER_ORDER; /* excl. informative float data. Portable? */ - - while ( ( i >= 0 ) && ( pDataCh0[i] == pDataCh1[i] ) ) - { - i--; - } - if ( i >= 0 ) - { - equalFilterData = 0; - break; - } - } - if ( equalFilterData ) - { - st->hTcxEnc->tnsData[k].nFilters *= -1; /* signals common TNS */ - } - } - } - if ( st->hTcxCfg->fIsTNSAllowed && ( !bWhitenedDomain || st->hTcxEnc->bTnsOnWhithenedSpectra[k] ) ) - { - L_spec = st->hTcxCfg->pCurrentTnsConfig->iFilterBorders[0]; - spectrum = st->hTcxEnc->spectrum[k]; - /* If TNS should be used then get the residual after applying it inplace in the spectrum */ - if ( st->hTcxEnc->fUseTns[k] ) - { - st->hTcxCfg->pCurrentTnsConfig = &st->hTcxCfg->tnsConfig[st->hTcxEnc->transform_type[k] == TCX_20][( k == 0 ) && ( st->last_core == ACELP_CORE )]; - - ApplyTnsFilter( st->hTcxCfg->pCurrentTnsConfig, &st->hTcxEnc->tnsData[k], spectrum, 1 ); - } - - if ( st->hTcxEnc->transform_type[k] == TCX_5 ) - { - tcx5TnsUngrouping( L_frame >> 2, L_spec >> 1, st->hTcxEnc->spectrum[k], ENC ); - } - - st->hTcxEnc->tnsData[k].tnsOnWhitenedSpectra = st->hTcxEnc->bTnsOnWhithenedSpectra[k]; - - EncodeTnsData( st->hTcxCfg->pCurrentTnsConfig, &st->hTcxEnc->tnsData[k], param_core[ch] + k * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, tnsSize[ch] + k, tnsBits[ch] + k ); - } - - if ( st->hTcxEnc->transform_type[k] == TCX_5 ) - { - tcx5SpectrumInterleaving( st->hTcxCfg->tcx5SizeFB, st->hTcxEnc->spectrum[k] ); - tcx5SpectrumInterleaving( st->hTcxCfg->tcx5SizeFB, mdst_spectrum[ch][k] ); - } - } - } - - return; -} - - -#endif void TNSAnalysis_fx( TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* input: frame length */ @@ -1317,154 +837,6 @@ void ShapeSpectrum_ivas_fx( } } -#ifdef ADD_IVAS_TNS -/*-----------------------------------------------------------* - * EstimateStereoTCXNoiseLevel() - * - * Estimate and quantize stereo noise factors - *-----------------------------------------------------------*/ - -void EstimateStereoTCXNoiseLevel( - Encoder_State **sts, /* i : state handle */ - float *q_spectrum[CPE_CHANNELS][NB_DIV], /* i : quantized MDCT spectrum */ - float gain_tcx[][NB_DIV], /* i : global gain */ - int16_t L_frame[][NB_DIV], /* i : frame length */ - int16_t noiseFillingBorder[][NB_DIV], /* i : noise filling border */ - int16_t hm_active[][NB_DIV], /* i : flag indicating if the harmonic model is active */ - const int16_t ignore_chan[], /* i : flag indicating whether the channel should be ignored */ - float fac_ns[][NB_DIV], /* o : noise filling level */ - int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */ - const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */ -) -{ - int16_t ch, n; - int16_t nSubframes, maxNfCalcBw, iStart, noiseTransWidth; - float smooth_gain; - float combined_q_spectrum[N_MAX]; - int16_t *fac_ns_q; - int32_t total_brate; - - for ( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - Encoder_State *st = sts[ch]; - TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc; - - nSubframes = ( st->hTcxEnc->tcxMode == TCX_20 ) ? 1 : NB_DIV; - - if ( ignore_chan[ch] ) - { - continue; - } - total_brate = ( st->element_mode == IVAS_CPE_MDCT && !MCT_flag ) ? st->element_brate : st->total_brate; - - for ( n = 0; n < nSubframes; n++ ) - { - fac_ns_q = param_core[ch] + n * NPRM_DIV + 1; - maxNfCalcBw = min( noiseFillingBorder[ch][n], (int16_t) ( hTcxEnc->measuredBwRatio * (float) L_frame[ch][n] + 0.5f ) ); - if ( ( total_brate >= HQ_96k && ( st->element_mode <= IVAS_SCE || st->bwidth < SWB ) ) || total_brate > IVAS_192k ) - { - fac_ns[ch][n] = 0.0f; - *fac_ns_q = 0; - } - else - { - iStart = L_frame[ch][n] / ( ( total_brate >= ACELP_13k20 && !st->rf_mode ) ? 6 : 8 ); /* noise filling start bin*/ - - if ( n == 0 ) - { - mvr2r( hTcxEnc->ltpGainMemory, &hTcxEnc->ltpGainMemory[1], N_LTP_GAIN_MEMS - 1 ); - hTcxEnc->ltpGainMemory[0] = st->hTcxEnc->tcxltp_gain; - } - - smooth_gain = dotp( hTcxEnc->ltpGainMemory, nf_tw_smoothing_coeffs, N_LTP_GAIN_MEMS ); - - noiseTransWidth = GetTransWidth( st->tcxonly, ( L_frame[ch][n] == st->L_frame >> 1 ), smooth_gain, ( st->hTcxCfg->ctx_hm && st->last_core != ACELP_CORE && hm_active[ch][n] ) ); - - mvr2r( q_spectrum[ch][n], combined_q_spectrum, L_frame[ch][n] ); - tcx_noise_factor( hTcxEnc->spectrum[n], combined_q_spectrum, iStart, maxNfCalcBw, noiseTransWidth, L_frame[ch][n], gain_tcx[ch][n], hTcxEnc->noiseTiltFactor, &fac_ns[ch][n], fac_ns_q, st->element_mode ); - - /* hysteresis for very tonal passages (more stationary noise filling level) */ - if ( *fac_ns_q == 1 ) - { - hTcxEnc->noiseLevelMemory_cnt = (int16_t) min( INT16_MAX, 1 + abs( hTcxEnc->noiseLevelMemory_cnt ) ); /* update counter */ - } - else - { - if ( ( *fac_ns_q == 2 ) && ( abs( hTcxEnc->noiseLevelMemory_cnt ) > 5 ) ) - { - *fac_ns_q = 1; /* reduce noise filling level by one step */ - fac_ns[ch][n] = 0.75f / ( 1 << NBITS_NOISE_FILL_LEVEL ); - - /* signal that noise level is changed by inverting sign of level memory */ - hTcxEnc->noiseLevelMemory_cnt = ( hTcxEnc->noiseLevelMemory_cnt < 0 ) ? 5 : -1 - hTcxEnc->noiseLevelMemory_cnt; - } - else - { - hTcxEnc->noiseLevelMemory_cnt = 0; /* reset memory since level is too different */ - } - } - } /* bitrate */ - } -#ifdef DEBUG_MODE_MDCT - dbgwrite( &smooth_gain, sizeof( float ), 1, 1, "./res/smooth_gain" ); - dbgwrite( &st->hTcxEnc->tcxltp_gain, sizeof( float ), 1, 1, "./res/tcxltp_gain" ); - dbgwrite( &noiseTransWidth, sizeof( int16_t ), 1, 1, "./res/noiseTrans" ); - dbgwrite( &fac_ns[ch][0], sizeof( float ), 2, 1, "./res/fac_ns" ); -#endif - } - - return; -} - - -/*-----------------------------------------------------------* - * DecideTonalSideInfo() - * - * - *-----------------------------------------------------------*/ - -static int16_t DecideTonalSideInfo( - const float spectrum[], - const int16_t L_frame_glob, - float SFM2 ) -{ - float SFM, K, K2; - int16_t Tonal_SideInfo; - - SFM = SFM_Cal( spectrum, min( 200, L_frame_glob ) ); - - if ( L_frame_glob <= 256 ) - { - K = 0.4f; - K2 = 0.1f; - } - else if ( L_frame_glob == 320 || L_frame_glob == 512 ) - { - K = 0.4f; - K2 = 0.1f; - } - else /*FrameSize_Core == 640*/ - { - K = 0.35f; - K2 = 0.04f; - } - - - Tonal_SideInfo = 0; - if ( SFM < K ) - { - Tonal_SideInfo = 1; - } - - if ( SFM2 < K2 ) - { - Tonal_SideInfo = 1; - } - - return Tonal_SideInfo; -} -#endif - /*-------------------------------------------------------------------* * GetTransWidth() * diff --git a/lib_enc/core_enc_init_fx.c b/lib_enc/core_enc_init_fx.c index 05f838a3a..5c0e4911c 100644 --- a/lib_enc/core_enc_init_fx.c +++ b/lib_enc/core_enc_init_fx.c @@ -53,14 +53,7 @@ void init_coder_ace_plus_fx( /* Bitrate */ st->tcxonly = (Word8) getTcxonly( -#ifdef IVAS_CODE_SWITCHING - st->element_mode, -#endif st->total_brate -#ifdef IVAS_CODE_SWITCHING - , - MCT_flag, st->is_ism_format -#endif ); move16(); diff --git a/lib_enc/core_enc_switch_fx.c b/lib_enc/core_enc_switch_fx.c index 2f21f1015..fb5fd037a 100644 --- a/lib_enc/core_enc_switch_fx.c +++ b/lib_enc/core_enc_switch_fx.c @@ -49,11 +49,7 @@ void core_coder_mode_switch_fx( switchWB = 1; /*force init when coming from MODE1*/ } -#ifdef IVAS_CODE_SWITCHING - tcxonly_tmp = getTcxonly( st->element_mode, st->total_brate, MCT_flag, st->is_ism_format ); -#else tcxonly_tmp = getTcxonly( st->total_brate ); -#endif if ( NE_16( tcxonly_tmp, st->tcxonly ) ) { @@ -71,11 +67,7 @@ void core_coder_mode_switch_fx( move32(); st->L_frame = extract_l( Mult_32_16( st->sr_core, 0x0290 ) ); assert( st->L_frame == st->sr_core / 50 ); -#ifdef IVAS_CODE_SWITCHING - st->tcxonly = getTcxonly( st->element_mode, st->total_brate, MCT_flag, st->is_ism_format ); -#else st->tcxonly = (Word8) getTcxonly( st->total_brate ); -#endif /* st->bits_frame_nominal = (int)( (float)st->L_frame/(float)st->fscale ) * (float)FSCALE_DENOM/128.0f * (float)st->bitrate/100.0f + 0.49f ; */ /* st->bits_frame_nominal = extract_l(L_shr(Mpy_32_16_1( L_shl(st->bitrate,8), mult_r(div_s(st->fscale, shl(st->L_frame,4)), FL2WORD16(FSCALE_DENOM/12800.f))), 6)); */ tmp32 = L_shl( st->total_brate, 1 ); /* (float)st->L_frame/(float)st->fscale * (float)FSCALE_DENOM/128.0f * (float)st->bitrate */ @@ -118,9 +110,6 @@ void core_coder_mode_switch_fx( IF( st->hTcxCfg->fIsTNSAllowed != 0 ) { InitTnsConfigs( st->bwidth, st->hTcxCfg->tcx_coded_lines, st->hTcxCfg->tnsConfig, st->hIGFEnc->infoStopFrequency, st->total_brate, st->element_mode, MCT_flag ); -#ifdef IVAS_CODE - SetAllowTnsOnWhite( st->hTcxCfg->tnsConfig, EQ_16( st->element_mode, IVAS_CPE_MDCT ) ); -#endif } st->narrowBand = 0; diff --git a/lib_enc/core_enc_updt_fx.c b/lib_enc/core_enc_updt_fx.c index ce2681e75..dcf57738a 100644 --- a/lib_enc/core_enc_updt_fx.c +++ b/lib_enc/core_enc_updt_fx.c @@ -48,20 +48,6 @@ void core_encode_update_fx( Encoder_State *st ) if ( hTcxEnc != NULL ) { Copy( hTcxEnc->buf_speech_ltp + st->L_frame, hTcxEnc->buf_speech_ltp, n ); - -#ifdef IVAS_CODE - IF( NE_16( st->element_mode, IVAS_CPE_MDCT ) ) - { - st->hTcxEnc->kernel_switch_corr_past = 0.f; - st->hTcxEnc->kernel_type[0] = MDCT_IV; - st->hTcxEnc->kernel_symmetry_past = 0; - st->hTcxEnc->enc_ste_pre_corr_past = 0; - move16(); - move16(); - move16(); - move16(); - } -#endif } /* Update previous mode */ diff --git a/lib_enc/enc_pit_exc_fx.c b/lib_enc/enc_pit_exc_fx.c index 9180d73b8..f16dd80cb 100644 --- a/lib_enc/enc_pit_exc_fx.c +++ b/lib_enc/enc_pit_exc_fx.c @@ -250,13 +250,8 @@ void enc_pit_exc_fx( *----------------------------------------------------------------*/ Copy( &res[i_subfr], &exc[i_subfr], L_subfr ); /* Q_new */ /* condition on target (compared to float) has been put outside the loop */ -#if 1 // ndef BUG_FIX find_targets_fx( speech, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq, res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); -#else - find_targets_fx( speech, hGSCEnc->mem_syn_tmp_fx, i_subfr, &hLPDmem->mem_w0, p_Aq, /*_DIFF_FLOAT_FIX_ --> Here I think mem_syn_tmp_fx should be used */ - res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); -#endif Copy_Scale_sig( h1, h2, L_subfr, -2 ); /* Q13 */ Scale_sig( h1, L_subfr, add( 1, shift ) ); /* set h1[] in Q14 with scaling for convolution */ diff --git a/lib_enc/evs_enc_fx.c b/lib_enc/evs_enc_fx.c index 396e97c6f..624ec20fc 100644 --- a/lib_enc/evs_enc_fx.c +++ b/lib_enc/evs_enc_fx.c @@ -169,18 +169,6 @@ ivas_error evs_enc_fx( { updt_IO_switch_enc_fx( st, input_frame ); set16_fx( hBWE_TD->old_speech_shb_fx, 0, L_LOOK_16k + L_SUBFR16k ); -#if defined IVAS_CODE - PMT( "find scaling factor for prev_enr_EnvSHBres, prev_pow_exc16kWhtnd and prev_mix_factor " ) - set16_fx( st->hBWE_TD->old_speech_shb, 0, L_LOOK_16k + L_SUBFR16k ); - set16_fx( st->hBWE_TD->mem_shb_res, 0, MAX_LEN_MA_FILTER ); - set16_fx( st->hBWE_TD->old_EnvSHBres, 0, L_FRAME4k ); - st->hBWE_TD->old_mean_EnvSHBres = 0; - st->hBWE_TD->prev_enr_EnvSHBres = 1.0f; - st->hBWE_TD->prev_shb_env_tilt = 0; - st->hBWE_TD->prev_pow_exc16kWhtnd = 1.0f; - st->hBWE_TD->prev_mix_factor = 1.0f; - st->hBWE_TD->prev_Env_error = 0; -#endif cldfb_reset_memory( st->cldfbAnaEnc ); cldfb_reset_memory( st->cldfbSynTd ); } @@ -466,16 +454,6 @@ ivas_error evs_enc_fx( { set16_fx( hBWE_TD->old_speech_shb_fx, 0, L_LOOK_16k + L_SUBFR16k ); set16_fx( shb_speech, 0, L_FRAME16k ); -#if defined IVAS_CODE - set_f( st->hBWE_TD->mem_shb_res, 0.0f, MAX_LEN_MA_FILTER ); - set_f( st->hBWE_TD->old_EnvSHBres, 0.0f, L_FRAME4k ); - st->hBWE_TD->old_mean_EnvSHBres = 0.0f; - st->hBWE_TD->prev_enr_EnvSHBres = 1.0f; - st->hBWE_TD->prev_shb_env_tilt = 0.0f; - st->hBWE_TD->prev_pow_exc16kWhtnd = 1.0f; - st->hBWE_TD->prev_mix_factor = 1.0f; - st->hBWE_TD->prev_Env_error = 0.0f; -#endif } /* SWB TBE encoder */ diff --git a/lib_enc/ext_sig_ana_fx.c b/lib_enc/ext_sig_ana_fx.c index eeeb294b4..49d757be3 100644 --- a/lib_enc/ext_sig_ana_fx.c +++ b/lib_enc/ext_sig_ana_fx.c @@ -70,24 +70,12 @@ void core_signal_analysis_high_bitrate_fx( Word32 *tmpP32; Word16 Q_exp; -#ifdef IVAS_CODE - int16_t disable_ltp = 0; -#endif TCX_ENC_HANDLE hTcxEnc = st->hTcxEnc; -#ifndef IVAS_CODE /* dummy */ (void) vad_hover_flag; (void) last_element_mode; -#endif -#ifdef IVAS_CODE - if ( NE_16( last_element_mode, st->element_mode ) ) - { - disable_ltp = 1; /* disable TCX-LTP in stereo switching to avoid discontinuities in synthesis */ - move16(); - } -#endif left_overlap = -1; move16(); right_overlap = -1; @@ -300,15 +288,6 @@ void core_signal_analysis_high_bitrate_fx( WindowSignal( st->hTcxCfg, st->hTcxCfg->tcx_offsetFB, overlap_mode[frameno], overlap_mode[frameno + 1], &left_overlap, &right_overlap, &hTcxEnc->speech_TCX[frameno * tcx10SizeFB], &L_subframe, tcx20Win, st->element_mode != IVAS_CPE_MDCT /* truncate_aldo */, 1 ); -#ifdef IVAS_CODE - if ( windowed_samples != NULL ) /* save windowed speech_TCX samples */ - { - assert( L_subframe + ( left_overlap + right_overlap ) / 2 < 2 * L_FRAME_MAX / nSubframes - L_FRAME_MAX / 8 ); - windowed_samples[frameno * L_FRAME_MAX + 0] = (float) overlap_mode[frameno]; - windowed_samples[frameno * L_FRAME_MAX + 1] = (float) overlap_mode[frameno + 1]; - mvr2r( tcx20Win, windowed_samples + frameno * L_FRAME_MAX + 2, L_subframe + ( left_overlap + right_overlap ) / 2 ); - } -#endif } IF( EQ_16( transform_type[frameno], TCX_5 ) ) @@ -321,15 +300,6 @@ void core_signal_analysis_high_bitrate_fx( tcx20Win[folding_offset + i] = sub_sat( tcx20Win[folding_offset + i], tcx20Win[folding_offset - 1 - i] ); // Q0 move16(); } -#ifdef IVAS_CODE - if ( st->element_mode == IVAS_CPE_MDCT && frameno == 0 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen ) - { - for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */ - { - tcx20Win[left_overlap + i] -= hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i]; - } - } -#endif /* Outter right folding */ tmp = shr( right_overlap, 1 ); FOR( i = 0; i < tmp; i++ ) @@ -365,13 +335,6 @@ void core_signal_analysis_high_bitrate_fx( tmpP16 += tcx5SizeFB; tmpP32 += tcx5SizeFB; -#ifdef IVAS_CODE - /* high-band gain control in case of BWS */ - if ( st->bwidth_sw_cnt > 0 ) - { - v_multc( hTcxEnc->spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, hTcxEnc->spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), L_subframe - L_FRAME16k / ( 2 * nSubframes ) ); - } -#endif } } ELSE /* transform_type[frameno] != TCX_5 */ @@ -414,33 +377,12 @@ void core_signal_analysis_high_bitrate_fx( } ELSE { -#ifdef IVAS_CODE - if ( st->element_mode == IVAS_CPE_MDCT && frameno == 0 && transform_type[0] == TCX_10 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen ) - { - for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */ - { - tcx20Win[left_overlap + i] -= hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i]; - } - } -#endif TCX_MDCT( tcx20Win, spectrum[frameno], &spectrum_e[frameno], left_overlap, sub( L_subframe, shr( add( left_overlap, right_overlap ), 1 ) ), right_overlap, st->element_mode ); } /* For TCX20 at bitrates up to 64 kbps we need the power spectrum */ /* high-band gain control in case of BWS */ -#ifdef IVAS_CODE - if ( st->bwidth_sw_cnt > 0 ) - { - v_multc( hTcxEnc->spectrum[frameno] + L_FRAME16k / nSubframes, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, hTcxEnc->spectrum[frameno] + L_FRAME16k / nSubframes, L_subframe - L_FRAME16k / nSubframes ); - } - - if ( st->mct_chan_mode == MCT_CHAN_MODE_LFE ) - { - set_f( &hTcxEnc->spectrum[frameno][MCT_LFE_MAX_LINE], 0.f, L_subframe - MCT_LFE_MAX_LINE ); - st->hTcxCfg->tcx_coded_lines = MCT_LFE_MAX_LINE; - } -#endif IF( NE_16( st->element_mode, IVAS_CPE_MDCT ) ) { test(); @@ -461,94 +403,6 @@ void core_signal_analysis_high_bitrate_fx( pMdstWin, powerSpec, &powerSpec_e ); } } -#ifdef IVAS_CODE - if ( st->element_mode == IVAS_CPE_MDCT ) - { - L_subframe = L_frameTCX / nSubframes; - - if ( transform_type[frameno] == TCX_20 && st->hTcxCfg->tcx_last_overlap_mode != TRANSITION_OVERLAP && st->mct_chan_mode != MCT_CHAN_MODE_LFE ) - { - wtda_ext( hTcxEnc->new_speech_TCX, mdstWin, overlap_mode[frameno], overlap_mode[frameno + 1], L_frameTCX, 3 ); - } - else - { - /* Windowing for the MDST */ - WindowSignal( st->hTcxCfg, st->hTcxCfg->tcx_offsetFB, overlap_mode[frameno] == ALDO_WINDOW ? FULL_OVERLAP : overlap_mode[frameno], overlap_mode[frameno + 1] == ALDO_WINDOW ? FULL_OVERLAP : overlap_mode[frameno + 1], &left_overlap, &right_overlap, &hTcxEnc->speech_TCX[frameno * tcx10SizeFB], &L_subframe, mdstWin, 0, 1 ); - } - - if ( transform_type[frameno] == TCX_5 ) - { - /* Outer left folding */ - for ( i = 0; i < left_overlap / 2; i++ ) - { - mdstWin[left_overlap / 2 + i] += mdstWin[left_overlap / 2 - 1 - i]; - } - - if ( frameno == 0 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen ) - { - for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */ - { - mdstWin[left_overlap + i] += hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i]; - } - } - - /* Outer right folding */ - for ( i = 0; i < right_overlap / 2; i++ ) - { - mdstWin[L_subframe + left_overlap / 2 - 1 - i] -= mdstWin[L_subframe + left_overlap / 2 + i]; - } - - /* 2xTCX5 */ - L_subframe = tcx5SizeFB; - folding_offset = left_overlap / 2; - - for ( i = 0; i < 2; i++ ) - { - assert( st->mct_chan_mode != MCT_CHAN_MODE_LFE ); - WindowSignal( st->hTcxCfg, folding_offset, i == 0 ? RECTANGULAR_OVERLAP : MIN_OVERLAP, i == 1 ? RECTANGULAR_OVERLAP : MIN_OVERLAP, &left_overlap, &right_overlap, mdstWin + i * tcx5SizeFB, &L_subframe, tcx5Win, 0, 1 ); - - TCX_MDST( tcx5Win, mdst_spectrum[frameno] + i * tcx5SizeFB, left_overlap, L_subframe - ( left_overlap + right_overlap ) / 2, right_overlap, st->element_mode ); - /* high-band gain control in case of BWS */ - if ( st->bwidth_sw_cnt > 0 ) - { - v_multc( mdst_spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, mdst_spectrum[frameno] + i * tcx5SizeFB + L_FRAME16k / ( 2 * nSubframes ), L_subframe - L_FRAME16k / ( 2 * nSubframes ) ); - } - } - } - else /* transform_type[frameno] != TCX_5 */ - { - if ( transform_type[frameno] == TCX_20 && st->hTcxCfg->tcx_last_overlap_mode != TRANSITION_OVERLAP && st->mct_chan_mode != MCT_CHAN_MODE_LFE ) - { - edst( mdstWin, mdst_spectrum[frameno], L_subframe, st->element_mode ); - - v_multc( mdst_spectrum[frameno], (float) sqrt( (float) NORM_MDCT_FACTOR / L_subframe ), mdst_spectrum[frameno], L_subframe ); - } - else - { - if ( frameno == 0 && transform_type[0] == TCX_10 && overlap_mode[0] == FULL_OVERLAP && L_subframe - left_overlap > minWindowLen ) - { - for ( i = minWindowLen; i >= 0; i-- ) /* outer left folding of shortened long ALDO slope */ - { - mdstWin[left_overlap + i] += hTcxEnc->speech_TCX[-1 - i] * st->hTcxCfg->tcx_aldo_window_1_FB[left_overlap / 2 + minWindowLen - i] * st->hTcxCfg->tcx_mdct_window_minimumFB[minWindowLen - i]; - } - } - - TCX_MDST( mdstWin, mdst_spectrum[frameno], left_overlap, L_subframe - ( left_overlap + right_overlap ) / 2, right_overlap, st->element_mode ); - } - - /* high-band gain control in case of BWS */ - if ( st->bwidth_sw_cnt > 0 ) - { - v_multc( mdst_spectrum[frameno] + L_FRAME16k / nSubframes, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, mdst_spectrum[frameno] + L_FRAME16k / nSubframes, L_subframe - L_FRAME16k / nSubframes ); - } - } - - if ( st->mct_chan_mode == MCT_CHAN_MODE_LFE ) - { - set_f( &mdst_spectrum[frameno][MCT_LFE_MAX_LINE], 0.f, L_subframe - MCT_LFE_MAX_LINE ); - } - } -#endif } IF( NE_16( st->element_mode, IVAS_CPE_MDCT ) ) @@ -559,9 +413,6 @@ void core_signal_analysis_high_bitrate_fx( st->hTcxCfg->tcx_coded_lines, transform_type[frameno], ( frameno == 0 ) && ( st->last_core == ACELP_CORE ), spectrum[frameno], &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL ); -#ifdef IVAS_CODE - IF( st->hTcxCfg->fIsTNSAllowed ) -#endif { EncodeTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, &hTcxEnc->tnsData[frameno], param_core + frameno * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, pTnsSize + frameno, pTnsBits + frameno ); @@ -583,9 +434,6 @@ void core_signal_analysis_high_bitrate_fx( * LPC analysis *---------------------------------------------------------------*/ -#ifdef IVAS_CODE - IF( st->tcxonly ) -#endif { HBAutocorrelation_fx( st->hTcxCfg, lpc_left_overlap_mode, lpc_right_overlap_mode, &st->speech_enc_pe[frameno * tcx10Size], shr( L_frame, sub( nSubframes, 1 ) ), r, M ); diff --git a/lib_enc/hq_classifier_enc_fx.c b/lib_enc/hq_classifier_enc_fx.c index 558ae89a7..aa2c319f1 100644 --- a/lib_enc/hq_classifier_enc_fx.c +++ b/lib_enc/hq_classifier_enc_fx.c @@ -194,7 +194,6 @@ Word16 hq_classifier_enc_fx( /* o : Consumed bits Word16 *hqswb_clas /* o : HQ class Q0 */ ) { -#ifndef SOLVED_COMP_ENC_DEC Word16 bits; HQ_ENC_HANDLE hHQ_core = st_fx->hHQ_core; @@ -277,88 +276,7 @@ Word16 hq_classifier_enc_fx( /* o : Consumed bits *hqswb_clas = HQ_GEN_SWB; /* Q0 */ move16(); } -#else - Word16 bits; - HQ_ENC_HANDLE hHQ_core = st_fx->hHQ_core; - Word32 max_brate; - Word16 harmonic_decision; - - - max_brate = HQ_32k; - move32(); - if ( st_fx->element_mode > EVS_MONO ) - { - max_brate = HQ_48k; - move32(); - } - - *hqswb_clas = HQ_NORMAL; - bits = 1; - move16(); - IF( EQ_16( is_transient, 1 ) ) - { - *hqswb_clas = HQ_TRANSIENT; - move16(); - } - - /* classification and limit bandwidth for bit allocation */ - test(); - IF( EQ_16( length, L_SPEC32k ) || EQ_16( length, L_SPEC48k ) ) - { - IF( LE_32( st_fx->core_brate, max_brate ) ) - { - test(); - IF( !is_transient && EQ_16( st_fx->bwidth, st_fx->last_bwidth ) ) - { - /* Detect HQ_HARMONIC mode */ - *hqswb_clas = peak_avrg_ratio_fx( st_fx->total_brate, coefs, NUMC_N + 96, &hHQ_core->mode_count, &hHQ_core->mode_count1, 12 ); - -#if 0 - harmonic_decision = hf_spectrum_sparseness( st, coefs ); -#else - harmonic_decision = 0; - move16(); -#endif - test(); - IF( EQ_16( *hqswb_clas, HQ_HARMONIC ) && !harmonic_decision ) - { - *hqswb_clas = HQ_NORMAL; - move16(); - } - ELSE - { - /* Detect harmonic VQ mode HQ_HVQ */ - hvq_classifier_fx( coefs, &hHQ_core->prev_Npeaks, hHQ_core->prev_peaks, hqswb_clas, Npeaks, peaks, st_fx->core_brate, st_fx->last_core, - nf_gains, &hHQ_core->hvq_hangover, pe_gains ); - } - } - bits = 2; - move16(); - } - } - ELSE IF( EQ_16( length, L_SPEC16k_EXT ) || EQ_16( length, L_SPEC48k_EXT ) ) - { - bits = 0; /* HQ_NORMAL only -- no signalling needed */ - move16(); - } - /* write signalling info to the bitstream */ - push_indice( st_fx->hBstr, IND_HQ_SWB_CLAS, *hqswb_clas, bits ); - - IF( LE_32( st_fx->core_brate, HQ_32k ) && EQ_16( *hqswb_clas, HQ_NORMAL ) ) - { - IF( EQ_16( length, L_SPEC32k ) ) - { - *hqswb_clas = HQ_GEN_SWB; - move16(); - } - ELSE IF( EQ_16( length, L_SPEC48k ) ) - { - *hqswb_clas = HQ_GEN_FB; - move16(); - } - } -#endif return bits; } Word16 hq_classifier_enc_ivas_fx( /* o : Consumed bits Q0 */ @@ -677,11 +595,8 @@ Word16 peak_avrg_ratio_fx( test(); test(); test(); -#ifndef SOLVED_COMP_ENC_DEC /*This affect BE even if it shouldn't*/ + IF( ( GE_16( add( k, k1 ), 5 ) && GT_16( k1, 2 ) && EQ_32( total_brate, HQ_24k40 ) ) || ( ( ( GE_16( add( k, k1 ), 10 ) && GT_16( k1, 5 ) ) || GE_16( *mode_count, 5 ) ) && LT_16( *mode_count1, 5 ) ) ) -#else - if ( ( GE_16( add( k, k1 ), 5 ) && GT_16( k1, 2 ) && LT_32( total_brate, HQ_BWE_CROSSOVER_BRATE ) ) || ( ( ( GE_16( add( k, k1 ), 10 ) && GT_16( k1, 5 ) ) || GE_16( *mode_count, 5 ) ) && LT_16( *mode_count1, 5 ) ) ) -#endif { hqswb_clas = HQ_HARMONIC; move16(); @@ -1177,11 +1092,7 @@ void hvq_classifier_fx( L_input_max = L_deposit_l( 0 ); set32_fx( L_thr, 0, L_FRAME16k ); -#ifndef SOLVED_COMP_ENC_DEC IF( EQ_32( L_core_brate, HQ_24k40 ) ) -#else - IF( LT_32( L_core_brate, HQ_BWE_CROSSOVER_BRATE ) ) -#endif { nsub = HVQ_NSUB_24k; move16(); @@ -1420,7 +1331,6 @@ void hvq_classifier_fx( num_peak_cands = add( num_peak_cands, 1 ); } } -#ifndef ADD_IVAS_HQ_CODE IF( EQ_32( L_core_brate, HQ_24k40 ) ) { peak_th = HVQ_MAX_PEAKS_24k_CLAS; @@ -1431,9 +1341,6 @@ void hvq_classifier_fx( peak_th = HVQ_MAX_PEAKS_32k; move16(); } -#else - peak_th = (int16_t) ( ( core_brate * HVQ_PEAKS_PER_DELTA_THR + HVQ_PEAKS_PER_DELTA_THR_OFFS ) / HVQ_PEAKS_BPS_DELTA ); -#endif /* Find peaks */ pindx = maximum_32_fx( L_input_abs, num_peak_cands, &L_m ); i = 0; @@ -1555,7 +1462,6 @@ void hvq_classifier_fx( move16(); } -#ifndef ADD_IVAS_HQ_CODE IF( EQ_32( L_core_brate, HQ_24k40 ) ) { *Npeaks = s_min( HVQ_MAX_PEAKS_24k, *Npeaks ); /* Q0 */ @@ -1566,9 +1472,6 @@ void hvq_classifier_fx( *Npeaks = s_min( HVQ_MAX_PEAKS_32k, *Npeaks ); /* Q0 */ move16(); } -#else - *Npeaks = (int16_t) ( min( ( core_brate * HVQ_PEAKS_PER_DELTA + HVQ_PEAKS_PER_DELTA_OFFS ) / HVQ_PEAKS_BPS_DELTA, *Npeaks ) ); -#endif } ELSE { @@ -1581,99 +1484,3 @@ void hvq_classifier_fx( return; } - -#ifdef ADD_IVAS_HQ_CODE -/*--------------------------------------------------------------------------* - * hf_spectrum_sparseness() - * - * Detection of sparse spectrum in high band for activation of harmonic - * modes HQ_HARMONIC and HQ_HVQ - *--------------------------------------------------------------------------*/ -/*! r: Harmonic decision for high band */ -static int16_t hf_spectrum_sparseness( - Encoder_State *st, /* i/o: encoder state structure */ - const float *coefs /* i : MDCT spectrum */ -) -{ - int16_t i; - float thr; - int16_t low_count; - float A[L_SPEC_HB]; - float Amax; - float movmean; - float inv_rms; - float crest; - float crest_mod; - const float *p_num; - float *crest_lp; - float *crest_mod_lp; - int16_t result; - - crest_lp = &st->hHQ_core->crest_lp; - crest_mod_lp = &st->hHQ_core->crest_mod_lp; - - result = TRUE; - if ( st->element_mode != EVS_MONO ) - { - for ( i = 0; i < L_SPEC_HB; i++ ) - { - A[i] = (float) fabsf( coefs[i + L_SPEC_HB] ); - } - low_count = 0; - inv_rms = 0.0f; - crest_mod = 0.0f; - maximum( A, L_SPEC_HB, &Amax ); - thr = Amax * PEAK_THRESHOLD; - movmean = 0.0f; /* avoid uninitialized warning */ - p_num = &inv_tbl[HALF_WIN_LENGTH + 1]; /* Table for division 1./(11:21) */ - for ( i = 0; i < L_SPEC_HB; i++ ) - { - inv_rms += A[i] * A[i]; - if ( A[i] < thr ) - { - low_count += 1; - } - if ( i <= HALF_WIN_LENGTH ) - { - if ( i == 0 ) - { - movmean = sum_f( &A[0], i + HALF_WIN_LENGTH + 1 ) * ( *p_num ); - } - else - { - p_num++; - movmean = movmean + ( A[i + HALF_WIN_LENGTH] - movmean ) * ( *p_num ); - } - } - else - { - if ( L_SPEC_HB <= i + HALF_WIN_LENGTH ) - { - p_num--; - movmean = movmean + ( movmean - A[i - HALF_WIN_LENGTH - 1] ) * ( *p_num ); - } - else - { - movmean = movmean + ( A[i + HALF_WIN_LENGTH] - A[i - HALF_WIN_LENGTH - 1] ) * ( *p_num ); - } - } - if ( crest_mod < movmean ) - { - crest_mod = movmean; - } - } - inv_rms = 1.0f / (float) sqrtf( inv_rms / L_SPEC_HB ); - crest = Amax * inv_rms; - crest_mod = crest_mod * inv_rms; - *crest_lp = HQ_CREST_FAC_SM * ( *crest_lp ) + ( 1.0f - HQ_CREST_FAC_SM ) * crest; - *crest_mod_lp = HQ_CREST_FAC_SM * ( *crest_mod_lp ) + ( 1.0f - HQ_CREST_FAC_SM ) * crest_mod; - - if ( ( ( *crest_lp ) > HQ_CREST_THRESHOLD ) && ( ( *crest_mod_lp ) > HQ_CREST_MOD_THRESHOLD ) && ( low_count > LOW_COUNT_THRESHOLD ) ) - { - result = FALSE; - } - } - - return result; -} -#endif diff --git a/lib_enc/hq_core_enc_fx.c b/lib_enc/hq_core_enc_fx.c index 66430cb8e..b5e1abbca 100644 --- a/lib_enc/hq_core_enc_fx.c +++ b/lib_enc/hq_core_enc_fx.c @@ -35,15 +35,6 @@ void hq_core_enc_fx( Word16 tmp; Word32 L_tmp; UWord16 lsb; -#ifdef ADD_IVAS_HQ_CODE_L_SPEC - Word16 L_spec; -#endif -#ifdef ADD_IVAS_HQ_CODE - Word16 left_overlap, right_overlap; - Word16 overlap, nz, tcx_offset, L_frame; - Word16 Aq_old[M + 1]; - Word16 output[L_FRAME16k]; -#endif Word16 two_frames_buffer[2 * L_FRAME48k]; BSTR_ENC_HANDLE hBstr = st_fx->hBstr; @@ -87,37 +78,6 @@ void hq_core_enc_fx( is_transient = detect_transient_fx( audio, input_frame, 0, st_fx ); /* Q0 */ -#ifdef ADD_IVAS_HQ_CODE - test(); - test(); - test(); - IF( ( st_fx->element_mode > EVS_MONO ) && ( ( st_fx->last_core == ACELP_CORE ) || EQ_16( st_fx->last_core, AMR_WB_CORE ) ) ) - { - /*-------------------------------------------------------------------------- - * IVAS switching frame - *--------------------------------------------------------------------------*/ - - L_spec = input_frame; - left_overlap = -1; - right_overlap = -1; - move16(); - move16(); - move16(); - - WindowSignal( &( st_fx->tcx_cfg ), st_fx->hTcxCfg->tcx_offsetFB, TRANSITION_OVERLAP, FULL_OVERLAP, &left_overlap, &right_overlap, st_fx->hTcxEnc->speech_TCX, &L_spec, wtda_audio, 1, 1 ); - Q_audio = 16; - move16(); /*tbv inspired from core_enc_ol*/ - TCX_MDCT( wtda_audio, t_audio, &Q_audio, left_overlap, sub( L_spec, shr( add( left_overlap, right_overlap ), 1 ) ), right_overlap, st_fx->element_mode ); - - inner_frame = inner_frame_tbl[st_fx->bwidth]; - L_spec = l_spec_ext_tbl[st_fx->bwidth]; - is_transient = 0; - move16(); - move16(); - move16(); - } - ELSE -#endif { /*-------------------------------------------------------------------------- * Windowing and time-domain aliasing @@ -144,10 +104,8 @@ void hq_core_enc_fx( move16(); } } -#ifndef ADD_IVAS_HQ_CODE /* subtract signalling bits */ num_bits = sub( num_bits, hBstr->nb_bits_tot ); /* Q0 */ -#endif direct_transform_fx( wtda_audio, t_audio, is_transient, input_frame, &Q_audio, st_fx->element_mode ); /* scale coefficients to their nominal level (8kHz) */ @@ -174,10 +132,6 @@ void hq_core_enc_fx( /* limit encoded band-width according to the command-line OR BWD limitation */ inner_frame = inner_frame_tbl[st_fx->bwidth]; /* Q0 */ move16(); -#ifdef ADD_IVAS_HQ_CODE_L_SPEC - L_spec = l_spec_tbl[st_fx->bwidth]; - move16(); -#endif IF( GT_16( input_frame, inner_frame ) ) { IF( EQ_16( is_transient, 1 ) ) @@ -193,31 +147,10 @@ void hq_core_enc_fx( set32_fx( t_audio + inner_frame, 0, sub( input_frame, inner_frame ) ); } } -#ifdef ADD_IVAS_HQ_CODE_L_SPEC - /* subtract signalling bits */ - num_bits = sub( num_bits, hBstr->nb_bits_tot_fx ); -#endif - /*-------------------------------------------------------------------------- * High-band gain control in case of BWS *--------------------------------------------------------------------------*/ -#ifdef ADD_IVAS_HQ_CODE - IF( st_fx->bwidth_sw_cnt > 0 ) - { - IF( is_transient ) - { - FOR( i = 0; i < NUM_TIME_SWITCHING_BLOCKS; i++ ) - { - v_multc( t_audio + i * inner_frame / NUM_TIME_SWITCHING_BLOCKS + L_FRAME16k / NUM_TIME_SWITCHING_BLOCKS, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, t_audio + i * inner_frame / NUM_TIME_SWITCHING_BLOCKS + L_FRAME16k / NUM_TIME_SWITCHING_BLOCKS, inner_frame / NUM_TIME_SWITCHING_BLOCKS - L_FRAME16k / NUM_TIME_SWITCHING_BLOCKS ); - } - } - ELSE - { - v_multc( t_audio + L_FRAME16k, (float) ( st->bwidth_sw_cnt ) / (float) BWS_TRAN_PERIOD, t_audio + L_FRAME16k, L_spec - L_FRAME16k ); - } - } -#endif /*-------------------------------------------------------------------------- * Classify whether to put extra bits for FER mitigation *--------------------------------------------------------------------------*/ @@ -263,12 +196,7 @@ void hq_core_enc_fx( t_audio[i] = L_shr( t_audio[i], sub( Q_audio, 12 ) ); /* Q12 */ move32(); } - -#ifdef ADD_IVAS_HQ_CODE_L_SPEC - hq_hr_enc_fx( st_fx, t_audio, L_spec, &num_bits, is_transient, vad_hover_flag ); -#else hq_hr_enc_fx( st_fx, t_audio, inner_frame, &num_bits, is_transient, vad_hover_flag ); -#endif Q_audio = 12; move16(); } @@ -286,51 +214,6 @@ void hq_core_enc_fx( { push_indice( hBstr, IND_UNUSED, 0, num_bits ); } -#ifdef ADD_IVAS_HQ_CODE - if ( st->element_mode > EVS_MONO && ( st->last_core == ACELP_CORE || st->last_core == AMR_WB_CORE ) ) - { - overlap = st->hTcxCfg->tcx_mdct_window_length; - nz = NS2SA( st->sr_core, N_ZERO_MDCT_NS ); - L_frame = (int16_t) ( st->L_frame + st->hTcxCfg->tcx_offset - st->hTcxCfg->lfacNext ); - tcx_offset = st->hTcxCfg->lfacNext; - set_f( Aq_old, 0, M + 1 ); /* Dummy filter */ - Aq_old[0] = 1; - - /* Code taken from InternalTCXDecoder() */ - TCX_MDCT_Inverse( t_audio, wtda_audio, overlap, L_frame - overlap, overlap, st->element_mode ); - - /* Window current frame */ - tcx_windowing_synthesis_current_frame( wtda_audio, st->hTcxCfg->tcx_aldo_window_2, st->hTcxCfg->tcx_mdct_window_half, st->hTcxCfg->tcx_mdct_window_minimum, overlap, /*st->hTcxCfg->tcx_mdct_window_length*/ st->hTcxCfg->tcx_mdct_window_half_length, st->hTcxCfg->tcx_mdct_window_min_length, st->last_core == ACELP_CORE, st->hTcxCfg->tcx_last_overlap_mode, /*left mode*/ st->hTcxEnc->acelp_zir, st->hTcxEnc->Txnq, NULL, Aq_old, st->hTcxCfg->tcx_mdct_window_trans, st->L_frame >> 1, tcx_offset < 0 ? -tcx_offset : 0, st->last_core, 0, 0 ); - - /*Compute windowed synthesis in case of switching to ALDO windows in next frame*/ - mvr2r( wtda_audio + L_frame - nz, st->hTcxEnc->old_out, nz + overlap ); - set_zero( st->hTcxEnc->old_out + nz + overlap, nz ); - - tcx_windowing_synthesis_past_frame( st->hTcxEnc->old_out + nz, st->hTcxCfg->tcx_aldo_window_1_trunc, st->hTcxCfg->tcx_mdct_window_half, st->hTcxCfg->tcx_mdct_window_minimum, overlap, st->hTcxCfg->tcx_mdct_window_half_length, st->hTcxCfg->tcx_mdct_window_min_length, FULL_OVERLAP ); - - for ( i = 0; i < nz; i++ ) - { - st->hTcxEnc->old_out[nz + overlap + i] = wtda_audio[L_frame - 1 - i] * st->hTcxCfg->tcx_aldo_window_1_trunc[-1 - i]; - } - mvr2r( wtda_audio + ( overlap >> 1 ) - tcx_offset, output, st->L_frame ); - } - else - { - ener_match = (float) sqrt( (float) L_FRAME16k / (float) NORM_MDCT_FACTOR ); - v_multc( t_audio, ener_match, t_audio, inner_frame ); - - inverse_transform( t_audio, wtda_audio, is_transient, L_FRAME16k, inner_frame, st->element_mode ); - - window_ola( wtda_audio, output, st->hTcxEnc->old_out, L_FRAME16k, st->hTcxCfg->tcx_last_overlap_mode, st->hTcxCfg->tcx_curr_overlap_mode, 0, 0, NULL ); - } - - if ( st->element_mode > EVS_MONO ) - { - /* Store LB synthesis in case of switch to ACELP */ - mvr2r( output, st->hLPDmem->old_exc, L_FRAME16k ); - } -#endif - return; } diff --git a/lib_enc/hq_hr_enc_fx.c b/lib_enc/hq_hr_enc_fx.c index 705db9ecd..05654e775 100644 --- a/lib_enc/hq_hr_enc_fx.c +++ b/lib_enc/hq_hr_enc_fx.c @@ -249,20 +249,6 @@ void hq_hr_enc_fx( move16(); /* Prepare synthesis for LB generation in case of switch to ACELP */ -#ifdef ADD_IVAS_HQ_CODE - IF( NE_16( hqswb_clas, HQ_HVQ ) ) - { - apply_envelope_enc( t_audio_q, ynrm, num_sfm, sfm_start, sfm_end ); - } - - IF( is_transient ) - { - de_interleave_spectrum( t_audio_q, length ); - } - Copy32( t_audio_q, t_audio, length ); -#endif - - return; } diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 98d7fe957..e80ca0d59 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -20,7 +20,6 @@ * * Initialization of state variables *-----------------------------------------------------------------------*/ -#if 1 ivas_error init_encoder_fx( Encoder_State *st_fx /* i/o: Encoder static variables structure */ ) @@ -946,7 +945,7 @@ ivas_error init_encoder_fx( move32(); return error; } -#endif + /*-----------------------------------------------------------------------* * LPDmem_enc_init_fx() * @@ -1193,10 +1192,8 @@ ivas_error init_encoder_ivas_fx( st->exp_mem_preemph_enc = 0; move16(); -#if 1 // TODO: Float Initializations. To be removed later st->active_cnt = 0; move16(); -#endif st->pst_mem_deemp_err_fx = 0; move16(); @@ -1438,8 +1435,6 @@ ivas_error init_encoder_ivas_fx( st->input32_fx = st->input_buff32_fx + Mpy_32_32( st->input_Fs, 42949673 ) /* 1/50 in Q31*/; // st->input_Fs / FRAMES_PER_SEC st->input_fx = st->input_buff_fx + frame_length; } -#if 1 // TODO: To be removed later -#endif } ELSE { @@ -1454,8 +1449,6 @@ ivas_error init_encoder_ivas_fx( st->buf_speech_enc = NULL; st->buf_wspeech_enc = NULL; st->input_buff_fx = NULL; -#if 1 -#endif } /*-----------------------------------------------------------------* @@ -1956,12 +1949,6 @@ ivas_error init_encoder_ivas_fx( st->hTcxEnc->spectrum_e[0] = st->hTcxEnc->spectrum_e[1] = 0; move16(); move16(); -#if 1 - // set_f( st->hTcxEnc->spectrum_long, 0, N_MAX ); - // st->hTcxEnc->spectrum[0] = st->hTcxEnc->spectrum_long; - // st->hTcxEnc->spectrum[1] = st->hTcxEnc->spectrum_long + N_TCX10_MAX; - // set_f( st->hTcxEnc->old_out, 0, L_FRAME32k ); -#endif set16_fx( st->hTcxEnc->old_out_fx, 0, L_FRAME32k ); st->hTcxEnc->Q_old_out = 0; diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c index f1187bc6c..b5b592582 100644 --- a/lib_enc/ivas_omasa_enc_fx.c +++ b/lib_enc/ivas_omasa_enc_fx.c @@ -1112,11 +1112,6 @@ static void ivas_omasa_param_est_enc_fx( { q = q_data; move16(); -#if 0 - scale_sig32( hOMasa->cldfbAnaEnc[i]->cldfb_state_fx, hOMasa->cldfbAnaEnc[i]->cldfb_state_length, sub( q, hOMasa->cldfbAnaEnc[i]->Q_cldfb_state ) ); - hOMasa->cldfbAnaEnc[i]->Q_cldfb_state = q; - move16(); -#endif cldfbAnalysis_ts_fx_var_q( &( data[i][l_ts * ts] ), Chnl_RealBuffer_fx[i], Chnl_ImagBuffer_fx[i], l_ts, hOMasa->cldfbAnaEnc[i], &q ); /*q_data-5*/ norm_buff = s_min( norm_buff, L_norm_arr( Chnl_RealBuffer_fx[i], 60 ) ); norm_buff = s_min( norm_buff, L_norm_arr( Chnl_ImagBuffer_fx[i], 60 ) ); diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index 063f39dea..f90b2d8ec 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -2650,41 +2650,7 @@ static ivas_error sanitizeBandwidth_fx( } } - IF( EQ_16( hEncoderConfig->ivas_format, MONO_FORMAT ) ) - { -#if 0 // IVAS_fmToDo: temporary disabled to keep EVS bit-exactness -> to be verified - if (max_bwidth_tmp == FB && hEncoderConfig->ivas_total_brate < ACELP_16k40) - { - if (hEncoderConfig->ivas_total_brate < ACELP_9k60) - { - max_bwidth_tmp = WB; - } - else - { - max_bwidth_tmp = SWB; - } - } - - if (max_bwidth_tmp == SWB && hEncoderConfig->ivas_total_brate < ACELP_9k60) - { - max_bwidth_tmp = WB; - } - - /* in case of 8kHz input sampling or "-max_band NB", require the total bitrate to be below 24.40 kbps */ - if ((max_bwidth_tmp == NB || hEncoderConfig->input_Fs == 8000) && hEncoderConfig->ivas_total_brate > ACELP_24k40) - { - if (hEncoderConfig->input_Fs >= 16000) - { - max_bwidth_tmp = WB; - } - else - { - return IVAS_ERR_INVALID_BITRATE; - } - } -#endif - } - ELSE + IF( NE_16( hEncoderConfig->ivas_format, MONO_FORMAT ) ) { Word32 quo = 0, rem; move32(); diff --git a/lib_enc/mdct_classifier_fx.c b/lib_enc/mdct_classifier_fx.c index a4e19e040..ea06878c1 100644 --- a/lib_enc/mdct_classifier_fx.c +++ b/lib_enc/mdct_classifier_fx.c @@ -117,88 +117,15 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision Word32 gain1_tmp = 0, gain2_tmp = 0; Word16 exp, exp1, exp2, exp3; Word32 L_tmp, L_tmp1; -#ifdef IVAS_CODE - Word16 gain2_start, gain3_start, gain4_start, H1_start, H2_start, H_length; - Word16 gain2_start_rs, gain3_start_rs; -#endif TCX_ENC_HANDLE hTcxEnc = st_fx->hTcxEnc; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif test(); -#ifdef IVAS_CODE - IF( EQ_32( st_fx->input_Fs, 32000 ) || EQ_32( st_fx->input_Fs, 48000 ) ) - { - gain2_start = GAIN2_START_SWB; - gain2_start_rs = GAIN2_START_SWB_RS; - gain3_start = GAIN3_START_SWB; - gain3_start_rs = GAIN3_START_SWB_RS; - gain4_start = GAIN4_START_SWB; - // gain4_start_rs = GAIN4_START_SWB_RS; - H1_start = H1_START_SWB; - H2_start = H2_START_SWB; - H_length = H_LENGTH_SWB; - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - } - ELSE IF( EQ_32( st_fx->input_Fs, 16000 ) ) - { - gain2_start = GAIN2_START_WB; - gain2_start_rs = GAIN2_START_SWB_RS; - gain3_start = GAIN3_START_WB; - gain2_start_rs = GAIN2_START_SWB_RS; - gain4_start = GAIN4_START_WB; - H1_start = H1_START_WB; - H2_start = H2_START_WB; - H_length = H_LENGTH_WB; - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - } - ELSE - { - assert( !"Unknown sampling frequency in MDCT_classifier" ); - H1_start = -1; /* to avoid compilation warning */ - H2_start = -1; /* to avoid compilation warning */ - H_length = -1; /* to avoid compilation warning */ - gain2_start = -1; /* to avoid compilation warning */ - gain3_start = -1; /* to avoid compilation warning */ - gain4_start = -1; /* to avoid compilation warning */ - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - } -#endif -#ifdef IVAS_CODE - if ( NE_16( st_fx->element_mode, IVAS_CPE_DFT ) ) -#endif { dft_mag_square_fx( fft_buff, magSq, 256 ); } -#ifdef IVAS_CODE - ELSE - { - float norm_val; - - norm_val = ( L_FFT * L_FFT ) / 4.f; - for ( k = 0; k < 128; k++ ) - { - X[k + 1] = st->Bin_E_old[k] * norm_val; - } - X[0] = X[1]; - } -#endif nf = L_add( magSq[0], 0 ); pe = L_add( magSq[0], 0 ); np = 0; @@ -295,10 +222,7 @@ Word16 mdct_classifier_fx( /* o: MDCT A/B decision gain1 = L_deposit_l( 0 ); gain2 = L_deposit_l( 0 ); gain3 = L_deposit_l( 0 ); -#ifdef IVAS_CODE - PMT( "MDCT_classifier needs review for different sampling rate" ) -#endif - // IVAS_CODE to adapt + FOR( k = 0; k < 8; k++ ) { gain1 = L_add( gain1, L_shr( cldfbBuf_Ener[k], 3 ) ); diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index 7d5f486cc..acc52c2aa 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -3761,7 +3761,7 @@ Word16 tcx_res_Q_spec_ivas_fx( return bits; } -#if 1 // TV + void ProcessIGF_fx( IGF_ENC_INSTANCE_HANDLE const hInstance, /**< in: instance handle of IGF Encoder */ Encoder_State *st, /**< in: Encoder state */ @@ -3893,7 +3893,7 @@ void ProcessIGF_fx( } #endif } -#endif + void attenuateNbSpectrum_fx( Word16 L_frame, Word32 *spectrum ) { Word16 i, length, att; diff --git a/lib_enc/transient_detection_fx.c b/lib_enc/transient_detection_fx.c index 2ade624b6..1ad69a330 100644 --- a/lib_enc/transient_detection_fx.c +++ b/lib_enc/transient_detection_fx.c @@ -638,16 +638,6 @@ void RunTransientDetection_fx( Word16 const *input, Word16 nSamplesAvailable, Tr /* Update the delay buffer. */ UpdateDelayBuffer( filteredInput, nSamplesAvailable, &pTransientDetection->delayBuffer ); -#ifdef IVAS_CODE - /* compute ramp up flag */ - pSubblockEnergies->ramp_up_flag = ( ( pSubblockEnergies->ramp_up_flag << 1 ) & 0x0003 ); - e0 = dotp( filteredInput + length / 2, filteredInput + length / 2, pSubblockEnergies->pDelayBuffer->nSubblockSize / 2 ) + 0.5f * MIN_BLOCK_ENERGY; - e1 = pSubblockEnergies->subblockNrg[pSubblockEnergies->nDelay + 4] - e0; - if ( e1 > e0 ) - { - pSubblockEnergies->ramp_up_flag |= 0x0001; - } -#endif } @@ -1582,72 +1572,7 @@ static void CalculateSubblockEnergies_ivas_fx( Word16 const *input, Word16 nSamp } } } -#ifdef IVAS_CODE -/*-------------------------------------------------------------------* - * set_transient_stereo() - * - * - *-------------------------------------------------------------------*/ - -void set_transient_stereo( - CPE_ENC_HANDLE hCPE, /* i : CPE structure */ - float currFlatness[] /* i/o: current flatness */ -) -{ - int16_t n, attackIsPresent; - float currFlatnessMax; - Encoder_State **sts; - - sts = hCPE->hCoreCoder; - - /* for DFT/TD based stereo ,map avg. flatness to individual stereo channels (M/S or X/Y) */ - maximum( currFlatness, CPE_CHANNELS, &currFlatnessMax ); - attackIsPresent = 0; - - for ( n = 0; n < CPE_CHANNELS; n++ ) - { - attackIsPresent = max( attackIsPresent, sts[n]->hTranDet->transientDetector.bIsAttackPresent ); - } - - set_f( currFlatness, currFlatnessMax, CPE_CHANNELS ); - - for ( n = 0; n < CPE_CHANNELS; n++ ) - { - sts[n]->hTranDet->transientDetector.bIsAttackPresent = attackIsPresent; - } - - if ( hCPE->hStereoDft != NULL ) - { - if ( hCPE->hStereoDft->attackPresent ) - { - hCPE->hStereoDft->wasTransient = 1; - } - else if ( hCPE->hStereoDft->wasTransient ) - { - hCPE->hStereoDft->wasTransient = 0; - } - - hCPE->hStereoDft->attackPresent = attackIsPresent; - hCPE->hStereoDft->hItd->currFlatness = 0; - for ( n = 0; n < CPE_CHANNELS; n++ ) - { - hCPE->hStereoDft->hItd->currFlatness = max( hCPE->hStereoDft->hItd->currFlatness, currFlatness[n] ); - } - } - - if ( hCPE->hStereoMdct != NULL ) - { - hCPE->hStereoMdct->hItd->currFlatness = 0; - for ( n = 0; n < CPE_CHANNELS; n++ ) - { - hCPE->hStereoMdct->hItd->currFlatness = max( hCPE->hStereoMdct->hItd->currFlatness, currFlatness[n] ); - } - } - - return; -} -#endif /*-------------------------------------------------------------------* * transient_analysis() * diff --git a/lib_enc/updt_enc_fx.c b/lib_enc/updt_enc_fx.c index 1210bfd04..aed3bf812 100644 --- a/lib_enc/updt_enc_fx.c +++ b/lib_enc/updt_enc_fx.c @@ -204,20 +204,6 @@ void updt_IO_switch_enc_fx( set16_fx( hBWE_TD->old_speech_wb_fx, 0, ( L_LOOK_12k8 + L_SUBFR ) * 5 / 16 ); set16_fx( hBWE_TD->old_bwe_exc_fx, 0, PIT16k_MAX * 2 ); set16_fx( hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET ); -#ifdef IVAS_CODE - set16_fx( st->hBWE_TD->mem_shb_res, 0, MAX_LEN_MA_FILTER ); - set16_fx( st->hBWE_TD->old_EnvSHBres, 0, L_FRAME4k ); - st->hBWE_TD->old_mean_EnvSHBres = 0; - st->hBWE_TD->prev_enr_EnvSHBres = 32767; - st->hBWE_TD->prev_pow_exc16kWhtnd = 32767; - st->hBWE_TD->prev_mix_factor = 32767; - st->hBWE_TD->prev_Env_error = 0; - move16(); - move16(); - move16(); - move16(); - move16(); -#endif hBWE_TD->bwe_non_lin_prev_scale_fx = 0; move16(); set16_fx( hBWE_TD->decim_state1_fx, 0, ( 2 * ALLPASSSECTIONS_STEEP + 1 ) ); @@ -251,23 +237,6 @@ void updt_IO_switch_enc_fx( st->use_acelp_preq = 0; move16(); -#ifdef IVAS_CODE - set16_fx( st->hSpMusClas->finc_prev, 0, ATT_NSEG ); - set16_fx( st->hSpMusClas->tod_lt_Bin_E, 0, TOD_NSPEC ); - set16_fx( st->hSpMusClas->tod_S_map_lt, 0, TOD_NSPEC ); - st->hSpMusClas->lt_finc = 0; - st->hSpMusClas->last_strong_attack = 0; - st->hSpMusClas->tod_thr_lt = TOD_THR_MASS; - st->hSpMusClas->tod_weight = 0; - st->hSpMusClas->tod_S_mass_prev = TOD_THR_MASS; - st->hSpMusClas->tod_S_mass_lt = TOD_THR_MASS; - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); -#endif } ELSE /* switching to AMR-WB IO mode */ { diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 412b8c226..16fefa3bb 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -3327,17 +3327,10 @@ static void eig2x2_fx( tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 ); -#if 1 tmp2 = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, tmp3, &exp ); exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) ); normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2 q_tmp2 = sub( 31, exp ); -#else - /* Note: This code part does not work yet, see pipeline issue for BASOP #1009 */ - /* although the same code works at other places: mantissa and q_format is fine */ - normVal_fx = ISqrt32( tmp3, &exp ); - q_tmp2 = sub( 31, exp ); -#endif IF( LT_16( q_tmp1, q_c ) ) { @@ -3403,17 +3396,10 @@ static void eig2x2_fx( tmp3 = BASOP_Util_Add_Mant32Exp( tmp2, sub( 31, q_tmp2 ), epsilon_mant, epsilon_exp, &exp_tmp3 ); -#if 1 tmp2 = BASOP_Util_Divide3232_Scale_newton( ONE_IN_Q30, tmp3, &exp ); exp = sub( exp, sub( Q30, sub( 31, exp_tmp3 ) ) ); normVal_fx = Sqrt32( tmp2, &exp ); // q_tmp2 q_tmp2 = sub( 31, exp ); -#else - /* Note: This code part does not work yet, see pipeline issue for BASOP #1009 */ - /* although the same code works at other places: mantissa and q_format is fine */ - normVal_fx = ISqrt32( tmp3, &exp_tmp3 ); - q_tmp2 = sub( 31, exp_tmp3 ); -#endif IF( LT_16( q_tmp1, q_c ) ) { -- GitLab From 6f1ac6e49513f6ba4d675f428489cd8fba35fdc2 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 30 Apr 2025 12:01:49 +0530 Subject: [PATCH 462/698] Clang formatting changes --- lib_com/bitstream_fx.c | 2 +- lib_com/prot_fx.h | 35 ++- lib_com/swb_tbe_com_fx.c | 428 +++++++++++++++--------------- lib_dec/FEC_HQ_phase_ecu_fx.c | 27 +- lib_dec/core_dec_init_fx.c | 2 +- lib_dec/core_dec_switch_fx.c | 6 +- lib_dec/dec_ace_fx.c | 3 +- lib_dec/er_dec_tcx_fx.c | 10 +- lib_dec/fd_cng_dec_fx.c | 1 - lib_dec/gs_dec_amr_wb_fx.c | 6 +- lib_dec/tns_base_dec_fx.c | 3 +- lib_dec/tonalMDCTconcealment_fx.c | 3 +- lib_enc/core_enc_init_fx.c | 3 +- 13 files changed, 252 insertions(+), 277 deletions(-) diff --git a/lib_com/bitstream_fx.c b/lib_com/bitstream_fx.c index 4fcac20b6..2b66f92cd 100644 --- a/lib_com/bitstream_fx.c +++ b/lib_com/bitstream_fx.c @@ -52,7 +52,7 @@ int16_t FEC_seed = 12558; /* Seed for random FEC generator */ FILE *FEC_pattern = NULL; /* FEC pattern file (for simulation of FEC) */ -float FEC_random = 0; /* FEC rate in percent (for simulation of FEC) */ +float FEC_random = 0; /* FEC rate in percent (for simulation of FEC) */ /*-------------------------------------------------------------------* * file_read_FECpattern() * diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index fde3949fd..f422d5e50 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -3061,8 +3061,7 @@ void GenShapedSHBExcitation_fx( Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ const Word32 bitrate, - const Word16 prev_bfi -); + const Word16 prev_bfi ); void GenShapedSHBExcitation_ivas_enc_fx( Word16 *excSHB, /* o : synthesized shaped shb excitation Q_bwe_exc*/ @@ -3137,8 +3136,7 @@ void GenShapedSHBExcitation_ivas_dec_fx( Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ const Word32 bitrate, - const Word16 prev_bfi - , /* i : previous frame was concealed */ + const Word16 prev_bfi, /* i : previous frame was concealed */ const Word16 element_mode, /* i : element mode */ const Word16 flag_ACELP16k, /* i : ACELP@16kHz flag */ Word16 *nlExc16k, /* i/o: NL exc for IC-BWE */ @@ -3292,7 +3290,7 @@ void synthesise_fb_high_band_fx( #ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( - const Word16 L_frame_fx, /* i : length of the frame */ + const Word16 L_frame_fx, /* i : length of the frame */ const Word16 i_subfr_fx, /* i : subframe index */ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ @@ -3326,12 +3324,11 @@ void prep_tbe_exc_ivas_fx( Word16 T0, /* i : integer pitch variables Q0 */ Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ - Word32 core_brate - , /* i : core bitrate */ - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ + Word32 core_brate, /* i : core bitrate */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ + const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ ); Word16 swb_formant_fac_fx( /* o : Formant filter strength [0,1] */ @@ -6539,8 +6536,7 @@ void TonalMDCTConceal_SaveFreqSignal( Word16 nNewSamplesCore, const Word16 *scaleFactors, const Word16 *scaleFactors_exp, - const Word16 gain_tcx_exp -); + const Word16 gain_tcx_exp ); void TonalMDCTConceal_SaveFreqSignal_ivas_fx( TonalMDCTConcealPtr hTonalMDCTConc, @@ -8389,7 +8385,7 @@ ivas_error ppp_quarter_decoder_fx( void open_decoder_LPD_fx( Decoder_State *st, const Word32 total_brate, /* Q0 */ - const Word16 bwidth /* Q0 */ + const Word16 bwidth /* Q0 */ ); void open_decoder_LPD_ivas_fx( Decoder_State *st, /* i/o: decoder state structure */ @@ -8951,12 +8947,11 @@ ReadTnsData( STnsConfig const *pTnsConfig, Word16 *stream, Word16 *pnSize ); -void -ReadTnsData_ivas_fx( STnsConfig const *pTnsConfig, - Decoder_State *st, - Word16 *pnBits, - Word16 *stream, - Word16 *pnSize ); +void ReadTnsData_ivas_fx( STnsConfig const *pTnsConfig, + Decoder_State *st, + Word16 *pnBits, + Word16 *stream, + Word16 *pnSize ); Word16 DecodeTnsData( STnsConfig const *pTnsConfig, Word16 const *stream, diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index d1883efde..c4605393d 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -2102,8 +2102,7 @@ void GenShapedSHBExcitation_fx( Word16 n_mem2, /* i : n_mem2 scale factor to adjust 24.4/32kbps memories */ Word16 prev_Q_bwe_syn, /* i : st_fx->prev_Q_bwe_syn */ const Word32 bitrate, - const Word16 prev_bfi -) + const Word16 prev_bfi ) { Word16 i, j, k; Word16 wht_fil_mem[LPC_WHTN_ORDER]; @@ -2366,258 +2365,257 @@ void GenShapedSHBExcitation_fx( } } ELSE /* decoder side */ - { { - /* *vf_ind is an integer scale by 0.125f*/ - tmp = shl( *vf_ind, ( 15 - 3 ) ); - tmp2 = MAX_16; - move16(); - if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) - { - tmp2 = 26214 /*0.8f Q15*/; - move16(); - } - } - } + { /* *vf_ind is an integer scale by 0.125f*/ + tmp = shl( *vf_ind, ( 15 - 3 ) ); + tmp2 = MAX_16; + move16(); + if ( LE_16( tmp, 22938 /*0.7f Q15*/ ) ) { - voice_factors[0] = mult_r( voice_factors[0], tmp2 ); - move16(); - voice_factors[1] = mult_r( voice_factors[1], tmp2 ); - move16(); - voice_factors[2] = mult_r( voice_factors[2], tmp2 ); - move16(); - voice_factors[3] = mult_r( voice_factors[3], tmp2 ); - move16(); - voice_factors[4] = mult_r( voice_factors[4], tmp2 ); + tmp2 = 26214 /*0.8f Q15*/; move16(); } } +} +{ + voice_factors[0] = mult_r( voice_factors[0], tmp2 ); + move16(); + voice_factors[1] = mult_r( voice_factors[1], tmp2 ); + move16(); + voice_factors[2] = mult_r( voice_factors[2], tmp2 ); + move16(); + voice_factors[3] = mult_r( voice_factors[3], tmp2 ); + move16(); + voice_factors[4] = mult_r( voice_factors[4], tmp2 ); + move16(); +} +} - tmp = sub( Q_temp, 3 ); - FOR( k = 0; k < L_FRAME16k; k++ ) +tmp = sub( Q_temp, 3 ); +FOR( k = 0; k < L_FRAME16k; k++ ) +{ + White_exc16k_FB[k] = round_fx( L_shl( White_exc16k_32[k], tmp ) ); /* Q_bwe_exc +5 +1 +Q_temp -16 -3 */ +} +prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; +move16(); +*Q_bwe_exc_fb = sub( add( *Q_bwe_exc, Q_temp ), 13 ); +move16(); +deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph ); +/* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */ +/* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */ +{ + IF( EQ_16( coder_type, UNVOICED ) ) { - White_exc16k_FB[k] = round_fx( L_shl( White_exc16k_32[k], tmp ) ); /* Q_bwe_exc +5 +1 +Q_temp -16 -3 */ + L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); + scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ + FOR( k = 0; k < L_FRAME16k; k++ ) + { + /* White_exc16k: (Q_bwe_exc-NOISE_QADJ), scale: Q15 */ + L_tmp = L_mult( White_exc16k[k], scale ); + /* L_tmp: (Q_bwe_exc-NOISE_QADJ) + 15 + 1 */ + exc16kWhtnd[k] = round_fx( L_shl( L_tmp, NOISE_QADJ ) ); + move16(); + /* exc16kWhtnd: Q_bwe_exc */ + } + PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); + /* i/o: exc16kWhtnd (Q_bwe_exc) */ + /* i/o: tbe_premph (Q_bwe_exc) */ } - prev_Q_bwe_exc_fb = *Q_bwe_exc_fb; - move16(); - *Q_bwe_exc_fb = sub( add( *Q_bwe_exc, Q_temp ), 13 ); - move16(); - deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph ); - /* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */ - /* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */ + ELSE { - IF( EQ_16( coder_type, UNVOICED ) ) + Word16 nbSubFr, lSubFr; + Word16 tempQ15; + Word32 tempQ31; + /*nbSubFr = ( bitrate < ACELP_24k40 )? NB_SUBFR : NB_SUBFR16k;*/ + nbSubFr = NB_SUBFR16k; + lSubFr = ( L_FRAME16k / NB_SUBFR16k ); + IF( LT_32( bitrate, ACELP_24k40 ) ) { - L_tmp = root_a_over_b_fx( pow1, Q_pow1, pow22, Q_pow22, &exp ); - scale = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /*Q15 */ - FOR( k = 0; k < L_FRAME16k; k++ ) - { - /* White_exc16k: (Q_bwe_exc-NOISE_QADJ), scale: Q15 */ - L_tmp = L_mult( White_exc16k[k], scale ); - /* L_tmp: (Q_bwe_exc-NOISE_QADJ) + 15 + 1 */ - exc16kWhtnd[k] = round_fx( L_shl( L_tmp, NOISE_QADJ ) ); - move16(); - /* exc16kWhtnd: Q_bwe_exc */ - } - PREEMPH_FX( exc16kWhtnd, PREEMPH_FAC, L_FRAME16k, tbe_premph ); - /* i/o: exc16kWhtnd (Q_bwe_exc) */ - /* i/o: tbe_premph (Q_bwe_exc) */ + nbSubFr = NB_SUBFR; + move16(); + lSubFr = ( L_FRAME16k / NB_SUBFR ); + move16(); } - ELSE + k = 0; + FOR( i = 0; i < nbSubFr; i++ ) { - Word16 nbSubFr, lSubFr; - Word16 tempQ15; - Word32 tempQ31; - /*nbSubFr = ( bitrate < ACELP_24k40 )? NB_SUBFR : NB_SUBFR16k;*/ - nbSubFr = NB_SUBFR16k; - lSubFr = ( L_FRAME16k / NB_SUBFR16k ); - IF( LT_32( bitrate, ACELP_24k40 ) ) + test(); + IF( EQ_16( coder_type, VOICED ) && ( LT_32( bitrate, ACELP_24k40 ) ) ) { - nbSubFr = NB_SUBFR; + exp = 0; move16(); - lSubFr = ( L_FRAME16k / NB_SUBFR ); + tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ + temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + exp = 0; move16(); + tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ + temp = sub( MAX_16, temp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ } - k = 0; - FOR( i = 0; i < nbSubFr; i++ ) + ELSE { - test(); - IF( EQ_16( coder_type, VOICED ) && ( LT_32( bitrate, ACELP_24k40 ) ) ) - { - exp = 0; - move16(); - tempQ15 = Sqrt16( voice_factors[i], &exp ); /* Q15 */ - temp = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - exp = 0; - move16(); - tempQ15 = Sqrt16( temp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b_fx( pow1 * (1.0f - temp), pow22 ); */ - temp = sub( MAX_16, temp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } - ELSE - { - /* Adjust noise mixing for formant sharpening filter */ - tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); - /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ - vf_tmp = sub( MAX_16, tempQ15 ); - vf_tmp = mult_r( voice_factors[i], vf_tmp ); - - exp = 0; - move16(); - tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ - temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ - - /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ - temp = sub( MAX_16, vf_tmp ); - tempQ31 = Mult_32_16( pow1, temp ); - L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); - temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ - } + /* Adjust noise mixing for formant sharpening filter */ + tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac ); + /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */ + vf_tmp = sub( MAX_16, tempQ15 ); + vf_tmp = mult_r( voice_factors[i], vf_tmp ); - FOR( j = 0; j < lSubFr; j++ ) - { - /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ - L_tmp = L_mult( temp2, White_exc16k[k + j] ); /* 16+(Q_bwe_exc-NOISE_QADJ)*/ - L_tmp = L_shl_sat( L_tmp, NOISE_QADJ ); /* 16+(Q_bwe_exc) */ - exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); - move16(); - /* Q_bwe_exc */ - } - k = add( k, lSubFr ); - - /* estimate the pre-emph factor */ - tempQ15 = sub( MAX_16, voice_factors[i] ); exp = 0; move16(); - temp = Sqrt16( tempQ15, &exp ); - temp = shl( temp, exp - 1 ); - - temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ - temp = div_s( temp, temp2 ); /* Q15 */ - temp = mult_r( PREEMPH_FAC, temp ); + tempQ15 = Sqrt16( vf_tmp, &exp ); /* Q15 */ + temp1 = shl( tempQ15, exp ); /* Q15 exc16kWhtnd scale factor */ + + /*temp2 = root_a_over_b(pow1 * (1.0f - vf_tmp), pow22); */ + temp = sub( MAX_16, vf_tmp ); + tempQ31 = Mult_32_16( pow1, temp ); + L_tmp = root_a_over_b_fx( tempQ31, Q_pow1, pow22, Q_pow22, &exp ); + temp2 = round_fx_sat( L_shl_sat( L_tmp, exp ) ); /* Q15 whiteEnvShapedExc scale factor */ + } - PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); - /* exc16kWhtnd: Q_bwe_exc; - tbe_premph: Q_bwe_exc*/ + FOR( j = 0; j < lSubFr; j++ ) + { + /*exc16kWhtnd[k+j] = temp1 * exc16kWhtnd[k+j] + temp2 * White_exc16k[k+j]; */ + L_tmp = L_mult( temp2, White_exc16k[k + j] ); /* 16+(Q_bwe_exc-NOISE_QADJ)*/ + L_tmp = L_shl_sat( L_tmp, NOISE_QADJ ); /* 16+(Q_bwe_exc) */ + exc16kWhtnd[k + j] = mac_r_sat( L_tmp, temp1, exc16kWhtnd[k + j] ); + move16(); + /* Q_bwe_exc */ } + k = add( k, lSubFr ); + + /* estimate the pre-emph factor */ + tempQ15 = sub( MAX_16, voice_factors[i] ); + exp = 0; + move16(); + temp = Sqrt16( tempQ15, &exp ); + temp = shl( temp, exp - 1 ); + + temp2 = add( temp, shl( temp1, -1 ) ); /* shift right by 1 to avoid overflow */ + temp = div_s( temp, temp2 ); /* Q15 */ + temp = mult_r( PREEMPH_FAC, temp ); + + PREEMPH_FX( &exc16kWhtnd[i * lSubFr], temp, lSubFr, tbe_premph ); + /* exc16kWhtnd: Q_bwe_exc; + tbe_premph: Q_bwe_exc*/ } } +} - IF( LT_32( bitrate, ACELP_24k40 ) ) - { - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: excSHB in Q_bwe_exc */ - } - ELSE - { - set16_fx( zero_mem, 0, LPC_SHB_ORDER ); +IF( LT_32( bitrate, ACELP_24k40 ) ) +{ + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, exc16kWhtnd, excSHB, L_FRAME16k, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: excSHB in Q_bwe_exc */ +} +ELSE +{ + set16_fx( zero_mem, 0, LPC_SHB_ORDER ); - Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); + Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[0] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); - Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); + Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[1] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); - Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); + Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[2] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); - Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); - syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); - move32(); + Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, tempSHB, 80, zero_mem, 1 ); + syn_shb_ener_sf[3] = L_shr( sum2_fx( tempSHB, 80 ), 3 ); + move32(); - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: tempSHB in Q_bwe_exc */ - /* o: syn_shb_ener_sf in (2*Q_bwe_exc+1) */ - IF( LE_32( bitrate, ACELP_32k ) ) - { - L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: tempSHB in Q_bwe_exc */ + /* o: syn_shb_ener_sf in (2*Q_bwe_exc+1) */ + IF( LE_32( bitrate, ACELP_32k ) ) + { + L_tmp = sum32_fx( syn_shb_ener_sf, 4 ); - /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ - tmp = shl( Q_shb, 1 ); - tmp2 = add( shl( *Q_bwe_exc, 1 ), 1 ); - L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ + /* find root_a(tempSHB[0]) = root_a_over_b(shb_ener_sf[0]), L_tmp) */ + tmp = shl( Q_shb, 1 ); + tmp2 = add( shl( *Q_bwe_exc, 1 ), 1 ); + L_tmp2 = root_a_over_b_fx( shb_ener_sf_32, tmp, L_tmp, tmp2, &exp ); /* L_tmp2 in (Q31-exp) */ - *Q_bwe_exc = sub( *Q_bwe_exc, exp ); - move16(); /* compensate for the exp shift */ - tmp2 = add( prev_Q_bwe_syn, n_mem2 ); - IF( GT_16( *Q_bwe_exc, tmp2 ) ) - { - L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); - *Q_bwe_exc = tmp2; - move16(); - } - FOR( i = 0; i < L_FRAME16k; i++ ) - { - L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ - exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ - move16(); - } - } - /* i: L_tmp2 in (Q31-exp) */ - /* i: exc16kWhtnd in Q_bwe_exc */ - /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ - - /* Rescale the past memories: LP synth and SHB look ahead buffers */ - tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); - FOR( i = 0; i < LPC_SHB_ORDER; i++ ) + *Q_bwe_exc = sub( *Q_bwe_exc, exp ); + move16(); /* compensate for the exp shift */ + tmp2 = add( prev_Q_bwe_syn, n_mem2 ); + IF( GT_16( *Q_bwe_exc, tmp2 ) ) { - state_lpc_syn[i] = shl( state_lpc_syn[i], tmp ); + L_tmp2 = L_shl( L_tmp2, sub( tmp2, *Q_bwe_exc ) ); + *Q_bwe_exc = tmp2; move16(); } - FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) + FOR( i = 0; i < L_FRAME16k; i++ ) { - excSHB[i] = shl( excSHB[i], tmp ); + L_tmp3 = Mult_32_16( L_tmp2, exc16kWhtnd[i] ); /* *Q_bwe_exc + (31-exp) - 15 */ + exc16kWhtnd[i] = round_fx( L_tmp3 ); /* *Q_bwe_exc - exp */ move16(); } - /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ - - Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); - Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); - /* i: exc16kWhtnd in (Q_bwe_exc) */ - /* o: excSHB in (Q_bwe_exc) */ } + /* i: L_tmp2 in (Q31-exp) */ + /* i: exc16kWhtnd in Q_bwe_exc */ + /* o: exc16kWhtnd in Q_bwe_exc: (Q_bwe_exc-exp) */ - IF( EQ_16( extl, FB_TBE ) ) + /* Rescale the past memories: LP synth and SHB look ahead buffers */ + tmp = sub( *Q_bwe_exc, prev_Q_bwe_syn ); + FOR( i = 0; i < LPC_SHB_ORDER; i++ ) { - tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); - Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); - Scale_sig( fb_tbe_demph, 1, tmp ); - Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); - /* i: White_exc16k_FB in (14-n2) */ - /* o: White_exc16k_FB_temp in (14-n2) */ + state_lpc_syn[i] = shl( state_lpc_syn[i], tmp ); + move16(); + } + FOR( i = -L_SHB_LAHEAD; i < 0; i++ ) + { + excSHB[i] = shl( excSHB[i], tmp ); + move16(); + } + /* Do mem_stp_swb_fx scaling before PostShortTerm_fx */ - FOR( i = 0; i < 10; i++ ) - { - FOR( j = 0; j < 32; ++j ) - { - White_exc16k_FB_temp[i * 32 + j] = mult_r( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); - move16(); - } - } + Syn_filt_s( 0, lpc_shb_sf, LPC_SHB_ORDER, exc16kWhtnd, excSHB, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 80, excSHB + 80, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + 2 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 160, excSHB + 160, 80, state_lpc_syn, 1 ); + Syn_filt_s( 0, lpc_shb_sf + 3 * ( LPC_SHB_ORDER + 1 ), LPC_SHB_ORDER, exc16kWhtnd + 240, excSHB + 240, 80, state_lpc_syn, 1 ); + /* i: exc16kWhtnd in (Q_bwe_exc) */ + /* o: excSHB in (Q_bwe_exc) */ +} - *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); - move16(); /**Q_bwe_exc_fb +35 +1 -16*/ - flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); +IF( EQ_16( extl, FB_TBE ) ) +{ + tmp = sub( add( *Q_bwe_exc_fb, 20 ), prev_Q_bwe_exc_fb ); + Scale_sig( fb_state_lpc_syn, LPC_SHB_ORDER, tmp ); + Scale_sig( fb_tbe_demph, 1, tmp ); + Syn_filt_s( 0, lpc_shb, LPC_SHB_ORDER, White_exc16k_FB, White_exc16k_FB_temp, L_FRAME16k, fb_state_lpc_syn, 1 ); + /* i: White_exc16k_FB in (14-n2) */ + /* o: White_exc16k_FB_temp in (14-n2) */ - deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); - } - ELSE + FOR( i = 0; i < 10; i++ ) { - set16_fx( White_exc16k_FB, 0, L_FRAME16k ); + FOR( j = 0; j < 32; ++j ) + { + White_exc16k_FB_temp[i * 32 + j] = mult_r( White_exc16k_FB_temp[i * 32 + j], cos_fb_exc_fx[j] ); + move16(); + } } - return; + *Q_bwe_exc_fb = add( *Q_bwe_exc_fb, 20 ); + move16(); /**Q_bwe_exc_fb +35 +1 -16*/ + flip_spectrum_fx( White_exc16k_FB_temp, White_exc16k_FB, L_FRAME16k ); + + deemph_fx( White_exc16k_FB, fb_deemph_fac, L_FRAME16k, fb_tbe_demph ); +} +ELSE +{ + set16_fx( White_exc16k_FB, 0, L_FRAME16k ); +} + +return; } void GenShapedSHBExcitation_ivas_enc_fx( @@ -7264,7 +7262,7 @@ void Estimate_mix_factors_fx( #ifndef REMOVE_EVS_DUPLICATES void prep_tbe_exc_fx( - const Word16 L_frame_fx, /* i : length of the frame */ + const Word16 L_frame_fx, /* i : length of the frame */ const Word16 i_subfr_fx, /* i : subframe index */ const Word16 gain_pit_fx, /* i : Pitch gain Q14*/ const Word32 gain_code_fx, /* i : algebraic codebook gain 16+Q_exc*/ @@ -7278,8 +7276,7 @@ void prep_tbe_exc_fx( Word16 T0, /* i : integer pitch variables Q0 */ Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ - Word32 core_brate -) + Word32 core_brate ) { Word16 i; Word16 tmp_code_fx[2 * L_SUBFR * HIBND_ACB_L_FAC]; @@ -7425,12 +7422,11 @@ void prep_tbe_exc_ivas_fx( Word16 T0, /* i : integer pitch variables Q0 */ Word16 T0_frac, /* i : Fractional pitch variables Q0*/ const Word16 coder_type, /* i : coding type */ - Word32 core_brate - , /* i : core bitrate */ - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ - const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ + Word32 core_brate, /* i : core bitrate */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 flag_TD_BWE, /* i : flag indicating whether hTD_BWE exists */ + const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ ) { Word16 i; diff --git a/lib_dec/FEC_HQ_phase_ecu_fx.c b/lib_dec/FEC_HQ_phase_ecu_fx.c index dedf9f859..ad2f86073 100644 --- a/lib_dec/FEC_HQ_phase_ecu_fx.c +++ b/lib_dec/FEC_HQ_phase_ecu_fx.c @@ -64,11 +64,9 @@ static void windowing( const Word16 *, Word16 *, const Word16 *, const Word16, c static void windowing_ROM_optimized( const Word16 *, Word16 *, const Word16, const Word16, const Word16 ); static void fft_spec2_fx( const Word16[], Word32[], const Word16 ); static void trans_ana_fx( const Word16 *, Word16 *, Word16 *, Word16 *, const Word16, const Word16, const Word16, const Word16, Word16 *, Word16 *, Word16 *, Word16 * ); -static void peakfinder_fx( const Word16 *, const Word16, Word16 *, Word16 *, const Word16 -); +static void peakfinder_fx( const Word16 *, const Word16, Word16 *, Word16 *, const Word16 ); static Word16 imax_fx( const Word16 *, const Word16 ); -static void spec_ana_fx( const Word16 *prevsynth, Word16 *plocs, Word32 *plocsi, Word16 *num_plocs, Word16 *X_sav, const Word16 output_frame, const Word16 bwidth_fx, Word16 *Q -); +static void spec_ana_fx( const Word16 *prevsynth, Word16 *plocs, Word32 *plocsi, Word16 *num_plocs, Word16 *X_sav, const Word16 output_frame, const Word16 bwidth_fx, Word16 *Q ); static void subst_spec_fx( const Word16 *, const Word32 *, Word16 *, const Word16, Word16 *, const Word16 *, const Word16, const Word16 *, const Word16, Word16 *, const Word16 *, const Word16 *, Word16, const Word16 * ); static Word16 rand_phase_fx( const Word16 seed, Word16 *sin_F, Word16 *cos_F ); @@ -1779,8 +1777,7 @@ static void spec_ana_fx( { sel = mult_r( sub( Xmax, Xmin ), CMPLMNT_PFIND_SENS_FX ); } - peakfinder_fx( xfp, Lprot2_1, plocs, num_plocs, sel - ); + peakfinder_fx( xfp, Lprot2_1, plocs, num_plocs, sel ); { @@ -2875,8 +2872,7 @@ static void rec_frame_fx( Word16 *X, /* i : FFT spectrum */ Word32 *ecu_rec, /* o : Reconstructed frame in tda domain */ const Word16 output_frame, /* i : Frame length */ - const Word16 Q -) + const Word16 Q ) { const Word16 *pFftTbl; Word16 Lprot, lprotLog2Minus1; @@ -4402,13 +4398,11 @@ static void fec_alg_fx( Word16 exp; Word16 n, Q; - fec_ecu_dft_fx( prevsynth_LP, N, Tfr, Tfi, &sum_Tf_abs, Tf_abs, &Nfft, &exp - ); + fec_ecu_dft_fx( prevsynth_LP, N, Tfr, Tfi, &sum_Tf_abs, Tf_abs, &Nfft, &exp ); sinusoidal_synthesis_fx( Tfr, Tfi, Tf_abs, N, output_frame, decimatefactor, Nfft, sum_Tf_abs, synthesis, HqVoicing, exp ); - fec_noise_filling_fx( prevsynth, synthesis, ni_seed_forfec, output_frame, i_mult2( N, decimatefactor ), HqVoicing, gapsynth - ); + fec_noise_filling_fx( prevsynth, synthesis, ni_seed_forfec, output_frame, i_mult2( N, decimatefactor ), HqVoicing, gapsynth ); n = R1_48 - R2_48; move16(); @@ -4629,8 +4623,7 @@ static void hq_phase_ecu_fx( trans_ana_fx( prevsynth + offset, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, *last_fec, alpha, beta, beta_mute, Xavg ); - spec_ana_fx( prevsynth + offset, plocs, plocsi, num_p, X_sav, output_frame, bwidth_fx, Q_spec - ); + spec_ana_fx( prevsynth + offset, plocs, plocsi, num_p, X_sav, output_frame, bwidth_fx, Q_spec ); test(); IF( prev_bfi != 0 && *last_fec != 0 ) @@ -4660,12 +4653,10 @@ static void hq_phase_ecu_fx( } subst_spec_fx( plocs, plocsi, num_p, *time_offs, X, mag_chg, ph_dith, old_is_transient, output_frame, &seed, - alpha, beta, *beta_mute, Xavg - ); + alpha, beta, *beta_mute, Xavg ); /* reconstructed frame in tda domain */ - rec_frame_fx( X, ecu_rec, output_frame, *Q_spec - ); + rec_frame_fx( X, ecu_rec, output_frame, *Q_spec ); *last_fec = 0; move16(); diff --git a/lib_dec/core_dec_init_fx.c b/lib_dec/core_dec_init_fx.c index 86d8e805a..eb34e1bc1 100644 --- a/lib_dec/core_dec_init_fx.c +++ b/lib_dec/core_dec_init_fx.c @@ -20,7 +20,7 @@ void open_decoder_LPD_fx( Decoder_State *st, const Word32 total_brate, /* Q0 */ - const Word16 bwidth /* Q0 */ + const Word16 bwidth /* Q0 */ ) { Word16 i; diff --git a/lib_dec/core_dec_switch_fx.c b/lib_dec/core_dec_switch_fx.c index 8c68f39ce..94b6efb1b 100644 --- a/lib_dec/core_dec_switch_fx.c +++ b/lib_dec/core_dec_switch_fx.c @@ -10,9 +10,9 @@ #include "rom_com.h" void mode_switch_decoder_LPD_fx( - Decoder_State *st, /* i/o: decoder state structure */ - Word16 bwidth, /* i : audio bandwidth Q0*/ - Word32 total_brate, /* i : total bitrate Q0*/ + Decoder_State *st, /* i/o: decoder state structure */ + Word16 bwidth, /* i : audio bandwidth Q0*/ + Word32 total_brate, /* i : total bitrate Q0*/ Word16 frame_size_index /* i : index determining the frame size Q0*/ ) { diff --git a/lib_dec/dec_ace_fx.c b/lib_dec/dec_ace_fx.c index 55d3ebbae..ad89ca556 100644 --- a/lib_dec/dec_ace_fx.c +++ b/lib_dec/dec_ace_fx.c @@ -538,8 +538,7 @@ void decoder_acelp_fx( #else prep_tbe_exc_fx( st->L_frame, i_subfr, gain_pit, gain_code, code, st->voice_fac, &voice_factors[idx], bwe_exc, - gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate - ); + gain_preQ, code_preQ, st->Q_exc, T0, T0_frac, st->coder_type, st->core_brate ); #endif } diff --git a/lib_dec/er_dec_tcx_fx.c b/lib_dec/er_dec_tcx_fx.c index 1a8a8b30d..161cefe76 100644 --- a/lib_dec/er_dec_tcx_fx.c +++ b/lib_dec/er_dec_tcx_fx.c @@ -550,8 +550,8 @@ void con_tcx_fx( { calcGainc2_fx( &exc[0], Q_exc, L_subfr, &( st->Mode2_lp_gainc ) ); } - set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/ - /* PLC: calculate damping factor */ + set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/ + /* PLC: calculate damping factor */ alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/ } @@ -681,7 +681,7 @@ void con_tcx_fx( /* PLC: [TCX: Fade-out] retrieve background level */ tmp16 = 32767; move16(); - gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); /*Q5*/ + gainSynthDeemph = getLevelSynDeemph_fx( &( tmp16 ), A_local, M, shr( L_frame, 2 ), st->preemph_fac, 1, &gainSynthDeemph_e ); /*Q5*/ IF( st->tcxonly != 0 ) { /* gainCNG = st->conCngLevelBackgroundTrace/gainSynthDeemph; */ @@ -1419,8 +1419,8 @@ void con_tcx_ivas_fx( { calcGainc2_fx( &exc[0], Q_exc, L_subfr, &( st->Mode2_lp_gainc ) ); } - set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/ - /* PLC: calculate damping factor */ + set32_fx( pitch_buf, L_deposit_h( L_SUBFR ), st->nb_subfr ); /*Q16*/ + /* PLC: calculate damping factor */ alpha = Damping_fact_fx( st->core_ext_mode, st->nbLostCmpt, st->last_good, st->stab_fac_fx, &( st->Mode2_lp_gainp ), 0 ); /*Q14*/ } diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 893b49241..3fe93854e 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -792,7 +792,6 @@ Word16 ApplyFdCng_fx( { /* Perform noise estimation in active frames in the decoder for downward updates */ perform_noise_estimation_dec_fx( timeDomainInput, Q, hFdCngDec ); - } } test(); diff --git a/lib_dec/gs_dec_amr_wb_fx.c b/lib_dec/gs_dec_amr_wb_fx.c index 331142a44..eea37431a 100644 --- a/lib_dec/gs_dec_amr_wb_fx.c +++ b/lib_dec/gs_dec_amr_wb_fx.c @@ -31,8 +31,7 @@ static void NoiseFill_fx( Word16 *exc_diffQ_fx, Word16 *seed_tcx, const Word16 M static void Ener_per_band_fx( const Word16 exc_diff_fx[], const Word16 exc_diff_exp, Word32 y_gain4_fx[] ); static void Apply_gain_fx( Word16 exc_diffQ_fx[], Word32 L_Ener_per_bd_iQ[], Word32 L_Ener_per_bd_yQ[], const Word16 Q_out ); static void normalize_spec_fx( Word16 fac_up_fx, Word16 fy_norm_fx[], const Word16 L_frame, const Word16 Q_out ); -static void gs_dec_amr_wb_fx( const long core_brate, Word16 *seed_tcx, const Word16 dct_in_fx[], const Word16 Q_dct_in, Word16 dct_out_fx[], Word16 Q_dct_out, const Word16 pitch_fx[], const Word16 voice_fac, const Word16 clas, const Word16 coder_type -); +static void gs_dec_amr_wb_fx( const long core_brate, Word16 *seed_tcx, const Word16 dct_in_fx[], const Word16 Q_dct_in, Word16 dct_out_fx[], Word16 Q_dct_out, const Word16 pitch_fx[], const Word16 voice_fac, const Word16 clas, const Word16 coder_type ); /*-------------------------------------------------------------------* * NoiseFill_fx() @@ -455,8 +454,7 @@ void improv_amr_wb_gs_fx( * Go back to time domain -> Overwrite exctiation *------------------------------------------------------------*/ edct_16fx( exc2_fx, dct_exc_in_fx, L_FRAME, 6, EVS_MONO ); - gs_dec_amr_wb_fx( core_brate, seed_tcx, dct_exc_in_fx, Q_exc2, dct_exc_out_fx, Q_exc2, pitch_buf_fx, lt_voice_fac_fx, clas, coder_type - ); + gs_dec_amr_wb_fx( core_brate, seed_tcx, dct_exc_in_fx, Q_exc2, dct_exc_out_fx, Q_exc2, pitch_buf_fx, lt_voice_fac_fx, clas, coder_type ); edct_16fx( dct_exc_out_fx, exc2_fx, L_FRAME, 6, EVS_MONO ); /*------------------------------------------------------------* diff --git a/lib_dec/tns_base_dec_fx.c b/lib_dec/tns_base_dec_fx.c index def1ffefb..a5df03490 100644 --- a/lib_dec/tns_base_dec_fx.c +++ b/lib_dec/tns_base_dec_fx.c @@ -67,8 +67,7 @@ ReadTnsData( return TNS_NO_ERROR; } -void -ReadTnsData_ivas_fx( +void ReadTnsData_ivas_fx( STnsConfig const *pTnsConfig, Decoder_State *st, Word16 *pnBits, /*Q0*/ diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 7465a7f65..b45b78ad1 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -227,8 +227,7 @@ void TonalMDCTConceal_SaveFreqSignal( Word16 nNewSamplesCore, // Q0 const Word16 *scaleFactors, // Q31-scaleFactors_exp const Word16 *scaleFactors_exp, - const Word16 gain_tcx_exp -) + const Word16 gain_tcx_exp ) { Word16 *temp; Word16 nOldSamples, tmp_exp, s, i, max_exp; diff --git a/lib_enc/core_enc_init_fx.c b/lib_enc/core_enc_init_fx.c index 5c0e4911c..2f7870ab6 100644 --- a/lib_enc/core_enc_init_fx.c +++ b/lib_enc/core_enc_init_fx.c @@ -53,8 +53,7 @@ void init_coder_ace_plus_fx( /* Bitrate */ st->tcxonly = (Word8) getTcxonly( - st->total_brate - ); + st->total_brate ); move16(); /* Core Sampling Rate */ -- GitLab From fc704082890a05725cf377017c86755710fd7478 Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Wed, 30 Apr 2025 10:10:42 +0200 Subject: [PATCH 463/698] clang-format. --- lib_debug/debug.c | 2 +- lib_debug/wmc_auto.c | 8 ++++---- lib_enc/ivas_rom_enc.h | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib_debug/debug.c b/lib_debug/debug.c index aafc1b663..ee6040faf 100644 --- a/lib_debug/debug.c +++ b/lib_debug/debug.c @@ -788,7 +788,7 @@ char *fname( #ifdef DEBUG_FORCE_DIR size_t len; len = strlen( tmp_fname ); - if (tmp_fname[len - 1] != '/' && tmp_fname[len - 1] != '\\' ) + if ( tmp_fname[len - 1] != '/' && tmp_fname[len - 1] != '\\' ) { /* add trailing '/' slash */ strcat( tmp_fname, "/" ); diff --git a/lib_debug/wmc_auto.c b/lib_debug/wmc_auto.c index d357c03dd..9a4b371fc 100644 --- a/lib_debug/wmc_auto.c +++ b/lib_debug/wmc_auto.c @@ -1018,7 +1018,7 @@ int push_stack( const char *filename, const char *fctname ) } /* Check, if This is the New Worst-Case RAM (stack + heap) */ - current_stack_size = ( int32_t )( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) ); + current_stack_size = (int32_t) ( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) ); if ( current_stack_size < 0 ) { @@ -1226,7 +1226,7 @@ void *mem_alloc( current_heap_size += ptr_record->block_size; /* Check, if this is the new Worst-Case RAM (stack + heap) */ - current_stack_size = ( int32_t )( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) ); + current_stack_size = (int32_t) ( ( ( ptr_base_stack - ptr_current_stack ) * sizeof( int16_t ) ) ); if ( current_stack_size + current_heap_size > wc_ram_size ) { wc_ram_size = current_stack_size + current_heap_size; @@ -2416,7 +2416,7 @@ int EQ_64( long long int L64_var1, long long int L64_var2 ) #endif return F_ret; } -int NE_64( long long int L64_var1, long long int L64_var2 ) +int NE_64( long long int L64_var1, long long int L64_var2 ) { int F_ret = 0; @@ -2503,7 +2503,7 @@ void Reset_BASOP_WMOPS_counter( unsigned int counterId ) /* reset the current BASOP operation counter */ ptr = (unsigned int *) &multiCounter[counterId]; - for ( i = 0; i < (int) (sizeof(BASIC_OP) / sizeof(unsigned int)); i++ ) + for ( i = 0; i < (int) ( sizeof( BASIC_OP ) / sizeof( unsigned int ) ); i++ ) { *ptr++ = 0; } diff --git a/lib_enc/ivas_rom_enc.h b/lib_enc/ivas_rom_enc.h index 53fa3fd09..27fa27463 100644 --- a/lib_enc/ivas_rom_enc.h +++ b/lib_enc/ivas_rom_enc.h @@ -111,11 +111,11 @@ extern const UWord16 ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE] /*----------------------------------------------------------------------------------* * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ - #ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC - extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1]; - extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1]; - extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1]; - #else +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC +extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1]; +extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1]; +extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1]; +#else extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4]; extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 4]; extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 4]; -- GitLab From 6dcf203d59ad42b0e2c7b2e98df9c55167d8b0b8 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 30 Apr 2025 14:52:40 +0530 Subject: [PATCH 464/698] Fix for 3GPP issue 1535: Assert in ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx of BASOP decoder for OMASA bitstream Link #1535 --- lib_rend/ivas_dirac_output_synthesis_dec_fx.c | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index 37b5f1e05..9212e3d23 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -2166,15 +2166,25 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( move32(); W_temp = W_add( W_mult0_32_32( a, subtract_power_y ), W_mult0_32_32( b, masa_stereo_type_detect->subtract_power_y_smooth_fx ) ); // Q31 + masa_stereo_type_detect->q_subtract_power_y_smooth - exp = W_norm( W_temp ); - masa_stereo_type_detect->subtract_power_y_smooth_fx = W_extract_h( W_shl( W_temp, exp ) ); // Q31 + masa_stereo_type_detect->q_subtract_power_y_smooth + exp - 32 - move32(); - masa_stereo_type_detect->q_subtract_power_y_smooth = sub( add( masa_stereo_type_detect->q_subtract_power_y_smooth, exp ), 1 ); - move16(); - + IF( W_temp ) + { + exp = W_norm( W_temp ); + masa_stereo_type_detect->subtract_power_y_smooth_fx = W_extract_h( W_shl( W_temp, exp ) ); // Q31 + masa_stereo_type_detect->q_subtract_power_y_smooth + exp - 32 + move32(); + masa_stereo_type_detect->q_subtract_power_y_smooth = sub( add( masa_stereo_type_detect->q_subtract_power_y_smooth, exp ), 1 ); + move16(); + } + ELSE + { + masa_stereo_type_detect->subtract_power_y_smooth_fx = 0; // Q31 + move32(); + masa_stereo_type_detect->q_subtract_power_y_smooth = Q31; + move16(); + } exp = 0; move16(); - IF( masa_stereo_type_detect->target_power_y_smooth_fx != 0 ) + test(); + IF( masa_stereo_type_detect->target_power_y_smooth_fx && masa_stereo_type_detect->subtract_power_y_smooth_fx ) { subtract_target_ratio = L_sub( BASOP_Util_Log2( masa_stereo_type_detect->subtract_power_y_smooth_fx ), BASOP_Util_Log2( masa_stereo_type_detect->target_power_y_smooth_fx ) ); // Q25 -- GitLab From 680ce4707de4e23974435f6dfd66ff72a96b76b6 Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Wed, 30 Apr 2025 11:47:27 +0200 Subject: [PATCH 465/698] Useless code removed. --- lib_enc/ivas_stereo_dmx_evs_fx.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 26487089d..97c53e369 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -1022,12 +1022,6 @@ static void calc_poc_fx( } move16(); - Word16 rfft_pha_buf_0[L_FRAME48k]; // Temporary solution - FOR( n = 0; n < L_FRAME48k; n++ ) - { - rfft_pha_buf_0[n] = 0; - } - /* Channel selection based on spikyness of R2L/L2R impulse responses */ tmp1 = spectral_flatness_fx( rfft_pha_buf, NULL, hPHA->pha_len ); rfft_pha_buf[sub( input_frame_pha, hPHA->pha_len )] = rfft_pha_buf[0]; -- GitLab From 528f8406425967c1634066eda5c83654d1feb415 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 30 Apr 2025 12:57:09 +0200 Subject: [PATCH 466/698] update CI commit SHA --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b93061941..605eb30d2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF f5e61349c22ededcdfe1cc54e533dea477f2d003 + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF e0b6e4f4f5f9281794beca2a669fce9be8f8405e include: - local: .gitlab-ci/variables.yml -- GitLab From afce099d46d4481ffbc828cf44a6d42faeaf054e Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 30 Apr 2025 13:02:43 +0200 Subject: [PATCH 467/698] update sha again to test branch --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 605eb30d2..38aa72681 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF e0b6e4f4f5f9281794beca2a669fce9be8f8405e + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF 725e23e7813092e0aab0d8be711356c374dd7663 include: - local: .gitlab-ci/variables.yml -- GitLab From 7d9c257e5781c5eb849bec81611627dbe1b6dfe1 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 30 Apr 2025 14:35:09 +0530 Subject: [PATCH 468/698] Fix for 3GPP issue 1525: Second channel of BASOP decoder MASA format output to FOA has missing energy or wrong signal - 2 Link #1525 --- lib_rend/ivas_dirac_decorr_dec_fx.c | 75 +++++++++++++++-------------- lib_rend/ivas_rom_rend.h | 8 +-- lib_rend/ivas_rom_rend_fx.c | 9 ++-- lib_rend/ivas_stat_rend.h | 4 +- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/lib_rend/ivas_dirac_decorr_dec_fx.c b/lib_rend/ivas_dirac_decorr_dec_fx.c index 1afac99c4..4db9cd09a 100644 --- a/lib_rend/ivas_dirac_decorr_dec_fx.c +++ b/lib_rend/ivas_dirac_decorr_dec_fx.c @@ -63,8 +63,8 @@ * Local function prototypes *------------------------------------------------------------------------*/ -static void get_lattice_coeffs_fx( const Word16 band_index, const Word16 channel_index, Word16 *lattice_coeffs ); -static void lattice2allpass_fx( const Word16 filter_length, const Word16 *lattice_coeffs_fx, Word16 *filter_coeffs_num_real_fx, Word16 *filter_coeffs_den_real_fx ); +static void get_lattice_coeffs_fx( const Word16 band_index, const Word16 channel_index, Word32 *lattice_coeffs ); +static void lattice2allpass_fx( const Word16 filter_length, const Word32 *lattice_coeffs_fx, Word32 *filter_coeffs_num_real_fx, Word32 *filter_coeffs_den_real_fx ); /*------------------------------------------------------------------------- * ivas_dirac_dec_decorr_open() @@ -90,7 +90,8 @@ ivas_error ivas_dirac_dec_decorr_open_fx( Word16 split_frequencies_bands[DIRAC_DECORR_NUM_SPLIT_BANDS + 1] = { 0, 0, 0, 23768 }; move16(); Word16 *split_freq_ptr; - Word16 cur_lattice_delta_phi_fx, lattice_coeffs_fx[2 * DIRAC_MAX_DECORR_FILTER_LEN]; + Word16 cur_lattice_delta_phi_fx; + Word32 lattice_coeffs_fx[2 * DIRAC_MAX_DECORR_FILTER_LEN]; ivas_error error; @@ -277,12 +278,12 @@ ivas_error ivas_dirac_dec_decorr_open_fx( freq_domain_decorr_ap_state->q_decorr_buffer = Q31; move16(); - IF( ( freq_domain_decorr_ap_params->filter_coeff_num_real_fx = (Word16 *) malloc( sizeof( Word16 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL ) + IF( ( freq_domain_decorr_ap_params->filter_coeff_num_real_fx = (Word32 *) malloc( sizeof( Word32 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD decorrelator\n" ) ); } - IF( ( freq_domain_decorr_ap_params->filter_coeff_den_real_fx = (Word16 *) malloc( sizeof( Word16 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL ) + IF( ( freq_domain_decorr_ap_params->filter_coeff_den_real_fx = (Word32 *) malloc( sizeof( Word32 ) * imult1616( add( ap_filter_length[split_band_index_start], 1 ), imult1616( freq_domain_decorr_ap_params->max_band_decorr, num_outputs_diff ) ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TD decorrelator\n" ) ); } @@ -414,7 +415,7 @@ void ivas_dirac_dec_decorr_process_fx( Word32 frame_ma_fx[2 * ( DIRAC_MAX_DECORR_FILTER_LEN + 1 )]; Word32 *p_frame_dec_fx, *decorr_buffer_fx; Word16 *phase_coeff_real_fx, *phase_coeff_imag_fx; - Word16 *filter_coeff_num_real_fx, *filter_coeff_den_real_fx; + Word32 *filter_coeff_num_real_fx, *filter_coeff_den_real_fx; Word32 *decorr_buffer_start_ptr_fx, *decorr_buffer_ptr_fx; Word32 input_real_fx, input_imag_fx, filter_frame_imag_fx, filter_frame_real_fx; Word16 q_aux_buffer, q_onset_dec, q_frame_f; @@ -666,8 +667,8 @@ void ivas_dirac_dec_decorr_process_fx( /* MA part of filter impulse response */ FOR( l = 0; l < filter_length; l++ ) { - frame_ma_fx[2 * l] = Mpy_32_16_1( input_real_fx, filter_coeff_num_real_fx[l] ); // Q_qux -3 = q_deorr - frame_ma_fx[2 * l + 1] = Mpy_32_16_1( input_imag_fx, filter_coeff_num_real_fx[l] ); // Q_qux - 3 = q_deorr + frame_ma_fx[2 * l] = Mpy_32_32( input_real_fx, filter_coeff_num_real_fx[l] ); // Q_qux -3 = q_deorr + frame_ma_fx[2 * l + 1] = Mpy_32_32( input_imag_fx, filter_coeff_num_real_fx[l] ); // Q_qux - 3 = q_deorr move32(); move32(); } @@ -691,12 +692,12 @@ void ivas_dirac_dec_decorr_process_fx( FOR( l = 1; l < filter_length; l++ ) { // q adjustment needed// - Word32 temp_1 = Mpy_32_16_1( filter_frame_real_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3 + Word32 temp_1 = Mpy_32_32( filter_frame_real_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3 temp_1 = L_shl( temp_1, 3 ); // q_decorr decorr_buffer_ptr_fx[0] = L_sub( L_add( decorr_buffer_ptr_fx[0], frame_ma_fx[2 * l] ), temp_1 ); // q_deocor move32(); - Word32 temp_2 = Mpy_32_16_1( filter_frame_imag_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3 + Word32 temp_2 = Mpy_32_32( filter_frame_imag_fx, filter_coeff_den_real_fx[l] ); // q_decorr - 3 temp_2 = L_shl( temp_2, 3 ); // q_decorr decorr_buffer_ptr_fx[1] = L_sub( L_add( decorr_buffer_ptr_fx[1], frame_ma_fx[2 * l + 1] ), temp_2 ); // q_decorr move32(); @@ -1146,16 +1147,16 @@ void ivas_dirac_dec_decorr_close_fx( static void get_lattice_coeffs_fx( const Word16 band_index, // Q0 const Word16 channel_index, // Q0 - Word16 *lattice_coeffs ) // Q12 + Word32 *lattice_coeffs ) // Q31 { Word16 k; FOR( k = 0; k < ap_filter_length[band_index]; k++ ) { - Word16 cur_lattice_coeff = ap_lattice_coeffs_fx[band_index][add( imult1616( channel_index, ap_filter_length[band_index] ), k )]; // Q12 - lattice_coeffs[k] = cur_lattice_coeff; // Q12 - move16(); - move16(); + Word32 cur_lattice_coeff = ap_lattice_coeffs_fx[band_index][add( imult1616( channel_index, ap_filter_length[band_index] ), k )]; // Q31 + lattice_coeffs[k] = cur_lattice_coeff; // Q31 + move32(); + move32(); } return; @@ -1165,40 +1166,40 @@ static void get_lattice_coeffs_fx( /* convert lattice filter coeffs to all pass transfer function coeffs */ static void lattice2allpass_fx( const Word16 filter_length, // Q0 - const Word16 *lattice_coeffs_fx, // Q15 - Word16 *filter_coeffs_num_real_fx, // Q12 - Word16 *filter_coeffs_den_real_fx ) // Q12 + const Word32 *lattice_coeffs_fx, // Q31 + Word32 *filter_coeffs_num_real_fx, // Q28 + Word32 *filter_coeffs_den_real_fx ) // Q28 { Word16 i, p; - Word16 alpha_real_fx[2][DIRAC_MAX_DECORR_FILTER_LEN + 1]; - Word16 *alpha_real_p_old_fx = &alpha_real_fx[0][0]; - Word16 *alpha_real_p_fx = &alpha_real_fx[1][0]; - Word16 *tmp_fx; + Word32 alpha_real_fx[2][DIRAC_MAX_DECORR_FILTER_LEN + 1]; + Word32 *alpha_real_p_old_fx = &alpha_real_fx[0][0]; + Word32 *alpha_real_p_fx = &alpha_real_fx[1][0]; + Word32 *tmp_fx; FOR( i = 0; i < 2; i++ ) { - set16_fx( alpha_real_fx[i], 0, DIRAC_MAX_DECORR_FILTER_LEN + 1 ); + set32_fx( alpha_real_fx[i], 0, DIRAC_MAX_DECORR_FILTER_LEN + 1 ); } - alpha_real_p_fx[0] = ONE_IN_Q12; - move16(); - alpha_real_p_old_fx[0] = ONE_IN_Q12; - move16(); + alpha_real_p_fx[0] = ONE_IN_Q28; + move32(); + alpha_real_p_old_fx[0] = ONE_IN_Q28; + move32(); /* recursion */ - Word16 lattice_alpha = 0; - move16(); + Word32 lattice_alpha = 0; + move32(); FOR( p = 1; p < filter_length; p++ ) { - alpha_real_p_fx[p] = shr( lattice_coeffs_fx[( p - 1 )], 3 ); /* Q12 */ + alpha_real_p_fx[p] = L_shr( lattice_coeffs_fx[( p - 1 )], 3 ); /* Q28 */ move16(); FOR( i = 1; i < p; i++ ) { - lattice_alpha = mult( lattice_coeffs_fx[( p - 1 )], alpha_real_p_old_fx[sub( p, i )] ); /* Q12 */ - alpha_real_p_fx[i] = add( alpha_real_p_old_fx[i], lattice_alpha ); /* Q12 */ - move16(); + lattice_alpha = Mpy_32_32( lattice_coeffs_fx[( p - 1 )], alpha_real_p_old_fx[sub( p, i )] ); /* Q28 */ + alpha_real_p_fx[i] = L_add( alpha_real_p_old_fx[i], lattice_alpha ); /* Q28 */ + move32(); } /* switch pointers */ tmp_fx = alpha_real_p_old_fx; @@ -1208,10 +1209,10 @@ static void lattice2allpass_fx( FOR( i = 0; i < filter_length; i++ ) { - filter_coeffs_den_real_fx[i] = alpha_real_p_old_fx[i]; /* Q12 */ - move16(); - filter_coeffs_num_real_fx[i] = alpha_real_p_old_fx[sub( sub( filter_length, i ), 1 )]; /* Q12 */ - move16(); + filter_coeffs_den_real_fx[i] = alpha_real_p_old_fx[i]; /* Q28 */ + move32(); + filter_coeffs_num_real_fx[i] = alpha_real_p_old_fx[sub( sub( filter_length, i ), 1 )]; /* Q28 */ + move32(); } return; diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index e7d6c6293..f62440749 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -51,10 +51,10 @@ extern const Word16 diffuse_response_CICP16_fx[9]; /*Q-15*/ extern const Word16 ap_pre_delay[DIRAC_DECORR_NUM_SPLIT_BANDS]; extern const Word16 ap_filter_length[DIRAC_DECORR_NUM_SPLIT_BANDS]; extern const Word16 ap_lattice_delta_phi_fx[DIRAC_MAX_NUM_DECORR_FILTERS * DIRAC_MAX_DECORR_FILTER_LEN]; /*Q-14*/ -extern const Word16 ap_lattice_coeffs_1_fx[DIRAC_DECORR_FILTER_LEN_1 * DIRAC_MAX_NUM_DECORR_FILTERS]; /*Q-15*/ -extern const Word16 ap_lattice_coeffs_2_fx[DIRAC_DECORR_FILTER_LEN_2 * DIRAC_MAX_NUM_DECORR_FILTERS]; /*Q-15*/ -extern const Word16 ap_lattice_coeffs_3_fx[DIRAC_DECORR_FILTER_LEN_3 * DIRAC_MAX_NUM_DECORR_FILTERS]; /*Q-15*/ -extern const Word16 *const ap_lattice_coeffs_fx[DIRAC_DECORR_NUM_SPLIT_BANDS]; +extern const Word32 ap_lattice_coeffs_1_fx[DIRAC_DECORR_FILTER_LEN_1 * DIRAC_MAX_NUM_DECORR_FILTERS]; /*Q-15*/ +extern const Word32 ap_lattice_coeffs_2_fx[DIRAC_DECORR_FILTER_LEN_2 * DIRAC_MAX_NUM_DECORR_FILTERS]; /*Q-15*/ +extern const Word32 ap_lattice_coeffs_3_fx[DIRAC_DECORR_FILTER_LEN_3 * DIRAC_MAX_NUM_DECORR_FILTERS]; /*Q-15*/ +extern const Word32 *const ap_lattice_coeffs_fx[DIRAC_DECORR_NUM_SPLIT_BANDS]; extern const Word16 ap_split_frequencies_fx[DIRAC_DECORR_NUM_SPLIT_BANDS + 1]; /*Q-14*/ extern const Word16 sba_map_tc[11]; /*Q-0*/ diff --git a/lib_rend/ivas_rom_rend_fx.c b/lib_rend/ivas_rom_rend_fx.c index 2b46ff611..4f101582c 100644 --- a/lib_rend/ivas_rom_rend_fx.c +++ b/lib_rend/ivas_rom_rend_fx.c @@ -76,11 +76,10 @@ const Word16 ap_lattice_delta_phi_fx[DIRAC_MAX_NUM_DECORR_FILTERS*DIRAC_MAX_DECO 29799 , 15800 , 24520 , 10977 , 25165 , 30177 , 16042 , 10060 , 30789 , 8397 , 19121 , 1339 , 29056 , 25160 , 12415 , 3611 , 25203 , 20991 , 4951 , 14580 , 13083 , 24188 , 27295 , 14997 , 22841 , 12403 , 5735 , 19656 , 21619 , 18488 , 10360 , 12954 , 7563 , 27744 , 25189 , 5677 , 7107 , 28747 , 9026 , 11251 , 12524 , 29372 , 24412 }; -const Word16 ap_lattice_coeffs_1_fx[330] /* Q15 */ = { 26061, 16472, 6699, 13650, 15061, 8862, -6617, 917, 2222, -1724, -1270, -1880, 671, 12048, -19454, 17487, 6635, -63, 6392, -6044, -7663, 7474, -10790, -11098, -2611, 1716, -310, 5859, 6253, -15691, 1442, 25837, 4375, -5690, 17871, 22329, 10907, 9656, 10658, 1560, 5157, 3810, 7175, -6201, -10400, -24696, 25309, -16625, 9076, -22700, 7612, -11624, -511, -7309, 10174, -1147, 2810, -16383, 7053, 6599, -16238, -9884, 6439, 10687, -19476, 10319, 21911, 2511, 1497, -4089, -6660, -9738, 4122, -5881, -6611, 5279, 12977, 8745, 11684, 15995, -1843, 4563, -9712, -3697, 1225, -12039, -7087, -9088, 12760, 3772, -7879, -8880, 13982, -362, 4974, 8306, 7397, 16341, -4468, 14516, -9994, -1025, -352, 5581, 16268, -4583, -7929, -3435, 9645, -2219, -16128, -15978, 1192, 3584, 12981, -11562, -6747, -2719, -15172, -10135, 848, -3029, -4100, -5115, -160, 5847, 2935, 1468, 7805, -10227, -12802, -5850, 14890, 12681, -12742, -6481, 1164, 14922, -1782, 12452, 9534, 1599, 2576, 7265, -7128, 3974, -12998, -7159, -4170, -8831, -11279, -15238, -13808, -852, 7259, 11861, -11411, 9666, 11998, 2315, -2819, 8261, 5113, -2057, 13401, 7944, -9888, -2167, 12735, -15146, -5206, 7562, -3053, 1542, 2405, -10977, 751, 11619, 2372, 638, 11039, -15746, 5579, 8508, -12896, -11422, -3570, 9137, 12631, 11870, -10444, 11872, 9467, 9542, -9110, -14722, -9453, -13565, -13280, -9671, -8031, 82, 9433, 11410, -5844, -6767, 11504, -15800, 699, -16128, 1593, 14853, 3576, 7621, -15524, 4603, 11551, -3231, 4822, -1828, 3530, -7570, 11708, 11404, 7615, -10642, 5324, 1888, -1990, -319, -7346, -9252, -2144, 2119, 9187, -9335, -15417, 638, -14493, 12360, 14659, -9519, 11322, 12130, -10260, 3918, 9830, 13336, -9106, 14648, 6383, 5167, -7320, -4822, 12421, -7089, 4520, -13014, 2421, -8949, -14517, -5515, 11346, 1230, 2142, 5370, -4014, 11975, -10365, 3842, -9872, 5558, -11025, 8844, -13767, -10855, 16335, -12878, -15144, -10587, 15432, -11778, 8661, 7104, 16167, 4963, -10539, 15217, -11654, 13775, 6039, -9900, 4474, -8285, 6353, 9790, 7825, -12658, -5963, -2533, 4090, -8630, 12766, 147, 11134, 13605, 12378, 13114, 11548, -124, -6046, 14199, -7784, 4839, 13343, 2215, -8169, -11600, 10516, 13959, 10144, -6215, -6863, 5209, -2684, 12675, 5851, -13341, 7280, -4885, }; -const Word16 ap_lattice_coeffs_2_fx[132] /* Q15 */ = { 20764, 22321, -1619, 9395, 4784, 4436, -13439, -6775, -21527, -3334, 14296, 11135, -4305, -25354, -9883, 10733, 10886, 6745, 23514, -18100, -4919, 1787, 7848, -21249, -23653, 6205, 2234, 203, 2523, 1267, 13874, -3560, 14157, -13586, 9104, 13712, 2549, -9275, -11698, 151, -14504, -12200, 13216, 7963, 10301, 14565, 11387, 16254, 3552, 15380, -5579, 10692, 5641, 14428, 1914, 11130, -6388, 16096, -9217, -1412, -15810, -10977, -11015, 6437, -5394, 14499, -4429, -11612, 14815, -10198, -11391, 16329, -9469, 12334, -5830, 6407, 10940, -5003, 1744, 15000, 14499, 7708, -11310, -9374, 5093, 13283, 7113, -3537, 350, 12090, -16330, -16246, -7060, -3075, 10494, -453, 16036, 15427, -2157, 11366, 893, 4918, 15860, -16298, 5531, -16182, -5686, 10966, 8658, -13914, -10319, 8293, 13021, -16107, -14867, -15183, -626, 11, 10336, 15477, 3117, 9285, -7375, -3924, -15626, 1229, 11041, 16204, -2051, 5821, 15200, 16032, }; -const Word16 ap_lattice_coeffs_3_fx[66] /* Q15 */ = { 621, -6953, 13851, -13128, -3502, -805, 4587, 9161, 1060, 20726, 18957, -24071, 563, 433, -908, -11578, -15799, -16097, 14975, 5410, 15391, -6412, 14421, -15642, 11802, -16074, 15880, -5694, 247, 9115, 14234, 1977, -6347, -1104, 16260, 96, -15756, -3589, -760, 10639, -9570, -11670, -12012, 12481, -9887, 3614, 12575, 9960, -16373, -11455, 10969, -662, -14092, -5069, -12161, 10947, 11367, -5465, -7506, 3865, 11183, 16071, 16176, -12049, 13976, -1499, }; - -const Word16 * const ap_lattice_coeffs_fx[DIRAC_DECORR_NUM_SPLIT_BANDS] = +const Word32 ap_lattice_coeffs_1_fx[330] /* Q31 */ = { 1707955968, 1079539968, 439065920, 894568704, 987086592, 580795520, -433671424, 60123100, 145623008, -113015624, -83277272, -123237648, 43980464, 789623296, -1274971776, 1146041216, 434865440, -4194035, 418933248, -396120544, -502225568, 489841024, -707151360, -727382784, -171154448, 112504520, -20332376, 383985120, 409832224, -1028380544, 94536528, 1693286528, 286751360, -372925568, 1171218304, 1463361920, 714828608, 632831232, 698492672, 102256728, 338016064, 249692224, 470255968, -406406976, -681613440, -1618517632, 1658684160, -1089598848, 594810048, -1487723008, 498864736, -761839168, -33543694, -479015552, 666806528, -75234944, 184217584, -1073737536, 462267328, 432535424, -1064187648, -647809920, 422002016, 700395328, -1276386944, 676287680, 1435960064, 164589584, 98163624, -267984480, -436523296, -638210688, 270166336, -385436800, -433269856, 346019744, 850510912, 573156928, 765762624, 1048283392, -120804544, 299101536, -636524864, -242330640, 80326624, -789039168, -464483520, -595626048, 836273088, 247207584, -516360288, -582000256, 916374208, -23749022, 326015936, 544365632, 484824512, 1070984448, -292867392, 951343872, -655019008, -67237712, -23117662, 365821696, 1066178368, -300379264, -519686752, -225163664, 632096768, -145444768, -1056995776, -1047134528, 78157664, 234919680, 850736384, -757728896, -442194816, -178238992, -994355776, -664208128, 55589760, -198547744, -268733952, -335258720, -10494753, 383196992, 192384464, 96265248, 511571392, -670272576, -838996096, -383418176, 975855232, 831101952, -835100544, -424765824, 76321568, 977938304, -116844584, 816118976, 624840448, 104805792, 168871664, 476183040, -467180768, 260466144, -851865984, -469186528, -273299520, -578761856, -739202496, -998661504, -904981824, -55901148, 475768544, 777374080, -747846144, 633471168, 786354816, 151747632, -184790960, 541442880, 335149184, -134861968, 878260672, 520681024, -648033280, -142077520, 834621696, -992624896, -341192192, 495630624, -200100384, 101094944, 157629600, -719445696, 49263276, 761521344, 155458496, 41817948, 723487232, -1031938880, 365645600, 557622016, -845198016, -748587008, -233994112, 598808640, 827833472, 777923776, -684486784, 778044032, 620485312, 625355840, -597041280, -964868672, -619576960, -889000256, -870330048, -633834112, -526369728, 5433133, 618239040, 747816064, -383012288, -443491872, 753940736, -1035527360, 45870252, -1057006464, 104457896, 973415680, 234419312, 499502560, -1017436928, 301725760, 757045952, -211754768, 316049472, -119823144, 231367744, -496124544, 767317376, 747390912, 499083776, -697476928, 348923136, 123795992, -130425272, -20920786, -481433632, -606352768, -140537776, 138935744, 602089984, -611830976, -1010393216, 41841572, -949849216, 810060928, 960749824, -623839680, 742015744, 795013504, -672420096, 256821872, 644275136, 874015104, -596832960, 960008960, 418381344, 338664608, -479752128, -316038720, 814053056, -464590912, 296281888, -852937536, 158709776, -586499264, -951414720, -361479488, 743596288, 80622976, 140417520, 351974720, -263116144, 784855872, -679294144, 251841856, -646998144, 364266912, -722555264, 579635904, -902286720, -711452736, 1070569984, -843980416, -992532608, -693845504, 1011415424, -771940928, 567612160, 465568000, 1059568448, 325320160, -690744576, 997319296, -763801920, 902804288, 395774784, -648814912, 293208832, -542989120, 416409952, 641614400, 512836288, -829568640, -390839872, -166056320, 268091856, -565634304, 836672512, 9667971, 729723520, 891643776, 811214080, 859468032, 756829056, -8177617, -396275168, 930607744, -510143328, 317148960, 874476800, 145204256, -535395584, -760230656, 689206976, 914828032, 664809408, -407354016, -449784000, 341379040, -175941184, 830706816, 383501920, -874332928, 477147232, -320183360}; +const Word32 ap_lattice_coeffs_2_fx[132] /* Q31 */ = { 1360843264, 1462880896, -106124344, 615715776, 313579872, 290773568, -880779712, -444026592, -1410828032, -218497872, 936944960, 729753600, -282142848, -1661606912, -647739072, 703431872, 713452032, 442076704, 1541038592, -1186205568, -322414592, 117158120, 514363136, -1392593792, -1550156800, 406684000, 146426176, 13348758, 165409920, 83060376, 909276800, -233341280, 927820288, -890434752, 596656832, 898691840, 167097856, -607873152, -766668864, 9951439, -950562176, -799540352, 866157440, 521887904, 675097984, 954584384, 746287104, 1065244224, 232804400, 1007990144, -365686400, 700745408, 369704352, 945610048, 125449552, 729442240, -418684160, 1054884800, -604078592, -92599496, -1036132928, -719417728, -721895936, 421913952, -353525216, 950242176, -290318304, -761035968, 970948224, -668342016, -746551232, 1070181312, -620620608, 808379392, -382088896, 419923232, 716984640, -327914304, 114310552, 983047168, 950209984, 505204128, -741223296, -614390784, 333800576, 870574848, 466160704, -231842336, 22973780, 792393536, -1070215680, -1064756736, -462737632, -201582144, 687787456, -29725468, 1050991360, 1011065344, -141377440, 744899776, 58581208, 322307232, 1039409984, -1068139008, 362486656, -1060515456, -372648544, 718711232, 567440320, -911931072, -676298432, 543498048, 853369216, -1055627776, -974371328, -995053760, -41077068, 738734, 677385088, 1014353152, 204309440, 608543168, -483372800, -257186944, -1024072704, 80584320, 723596736, 1061954304, -134438912, 381504768, 996200512, 1050733696}; +const Word32 ap_lattice_coeffs_3_fx[66] /* Q31 */ = { 1360843264, 1462880896, -106124344, 615715776, 313579872, 290773568, -880779712, -444026592, -1410828032, -218497872, 936944960, 729753600, -282142848, -1661606912, -647739072, 703431872, 713452032, 442076704, 1541038592, -1186205568, -322414592, 117158120, 514363136, -1392593792, -1550156800, 406684000, 146426176, 13348758, 165409920, 83060376, 909276800, -233341280, 927820288, -890434752, 596656832, 898691840, 167097856, -607873152, -766668864, 9951439, -950562176, -799540352, 866157440, 521887904, 675097984, 954584384, 746287104, 1065244224, 232804400, 1007990144, -365686400, 700745408, 369704352, 945610048, 125449552, 729442240, -418684160, 1054884800, -604078592, -92599496, -1036132928, -719417728, -721895936, 421913952, -353525216, 950242176}; +const Word32 * const ap_lattice_coeffs_fx[DIRAC_DECORR_NUM_SPLIT_BANDS] = { &ap_lattice_coeffs_1_fx[0], &ap_lattice_coeffs_2_fx[0], diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index 0515e4038..17474bfe7 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -120,8 +120,8 @@ typedef struct dirac_decorr_params_structure Word16 *pre_delay; Word16 *filter_length; - Word16 *filter_coeff_num_real_fx; /* Q12 */ - Word16 *filter_coeff_den_real_fx; /* Q12 */ + Word32 *filter_coeff_num_real_fx; /* Q28 */ + Word32 *filter_coeff_den_real_fx; /* Q28 */ Word16 *phase_coeff_real_fx; /* Q14 */ Word16 *phase_coeff_imag_fx; /* Q14 */ Word16 *split_frequency_bands; -- GitLab From 1609478cc3e8fee37f8a9bf2d43f9da3fc9d0f36 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 30 Apr 2025 14:46:00 +0530 Subject: [PATCH 469/698] Clang formatting changes --- lib_rend/ivas_dirac_decorr_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_rend/ivas_dirac_decorr_dec_fx.c b/lib_rend/ivas_dirac_decorr_dec_fx.c index 4db9cd09a..9b2bf02d7 100644 --- a/lib_rend/ivas_dirac_decorr_dec_fx.c +++ b/lib_rend/ivas_dirac_decorr_dec_fx.c @@ -1154,7 +1154,7 @@ static void get_lattice_coeffs_fx( FOR( k = 0; k < ap_filter_length[band_index]; k++ ) { Word32 cur_lattice_coeff = ap_lattice_coeffs_fx[band_index][add( imult1616( channel_index, ap_filter_length[band_index] ), k )]; // Q31 - lattice_coeffs[k] = cur_lattice_coeff; // Q31 + lattice_coeffs[k] = cur_lattice_coeff; // Q31 move32(); move32(); } -- GitLab From 87f833e2f2c14ee78f51cd74fc6d5c9a0b6c649f Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 30 Apr 2025 13:15:53 +0200 Subject: [PATCH 470/698] update CI repo SHA for latest main commit --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 38aa72681..6d9128027 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF 725e23e7813092e0aab0d8be711356c374dd7663 + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF 44cb5638949b874ce0f5c3bf4359f9db860d88bc include: - local: .gitlab-ci/variables.yml -- GitLab From bbc238ef5ff9e55a3daa76f3385e239e2b355294 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 30 Apr 2025 17:40:40 +0530 Subject: [PATCH 471/698] Fix for decoder msan error --- lib_dec/ivas_stereo_dft_dec_fx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib_dec/ivas_stereo_dft_dec_fx.c b/lib_dec/ivas_stereo_dft_dec_fx.c index 324f2b7f3..f1ccc1d7f 100644 --- a/lib_dec/ivas_stereo_dft_dec_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_fx.c @@ -402,6 +402,8 @@ ivas_error stereo_dft_dec_create_fx( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for TCX-LTP handle\n" ) ); } set_zero_fx( hStereoDft_loc->hb_nrg_subr_fx, STEREO_DFT_NBDIV ); /*Setting hb_nrg_subr_fx to zero*/ + hStereoDft_loc->q_hb_nrg_subr = Q31; + move16(); hStereoDft_loc->hConfig->force_mono_transmission = 0; move16(); -- GitLab From 97117fd61051f35fe7546805a6a518eed474fb1d Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Mon, 5 May 2025 10:45:37 +0200 Subject: [PATCH 472/698] missing pop_wmops() added. --- lib_enc/ivas_cpe_enc_fx.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index a05493aa4..d020b398a 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -329,6 +329,7 @@ ivas_error ivas_cpe_enc_fx( &q_band_energies_LR, NULL, NULL, NULL, Q_inp, Q_buffer, Q_add, &front_create_flag ) ), IVAS_ERR_OK ) ) { + pop_wmops(); return error; } @@ -362,6 +363,7 @@ ivas_error ivas_cpe_enc_fx( *----------------------------------------------------------------*/ IF( ( error = stereo_memory_enc_fx( hCPE, input_Fs, max_bwidth, ivas_format, st_ivas->nchan_transport ) ) != IVAS_ERR_OK ) { + pop_wmops(); return error; } @@ -372,6 +374,7 @@ ivas_error ivas_cpe_enc_fx( IF( ( error = stereo_set_tdm_fx( hCPE, input_frame, sts[1]->q_inp32 ) ) != IVAS_ERR_OK ) { + pop_wmops(); return error; } @@ -917,6 +920,7 @@ ivas_error ivas_cpe_enc_fx( move16(); IF( error != IVAS_ERR_OK ) { + pop_wmops(); return error; } } @@ -991,6 +995,7 @@ ivas_error ivas_cpe_enc_fx( igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->rf_mode ); /* Q0 */ IF( ( error = IGF_Reconfig_fx( &sts[n]->hIGFEnc, igf, 0, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->element_mode, sts[n]->rf_mode ) ) != IVAS_ERR_OK ) { + pop_wmops(); return error; } } @@ -1019,6 +1024,7 @@ ivas_error ivas_cpe_enc_fx( { IF( ( error = initMdctItdHandling_fx( hCPE->hStereoMdct, input_Fs ) ) != IVAS_ERR_OK ) { + pop_wmops(); return error; } } @@ -1195,6 +1201,7 @@ ivas_error ivas_cpe_enc_fx( } IF( NE_32( ( error = ivas_core_enc_fx( NULL, hCPE, st_ivas->hMCT, n_CoreChannels, old_inp_12k8_16fx, old_inp_16k_16fx, Q_new, ener_fx, A_fx, Aw_fx, epsP_fx, epsP_fx_q, lsp_new_fx, lsp_mid_fx, vad_hover_flag, attack_flag, realBuffer_fx, imagBuffer_fx, q_re_im_buf, old_wsp_fx, e_old_wsp, loc_harm, cor_map_sum_fx, vad_flag_dtx, enerBuffer_fx, enerBuffer_fx_exp, fft_buff_fx, tdm_SM_or_LRTD_Pri, ivas_format, 0 ) ), IVAS_ERR_OK ) ) { + pop_wmops(); return error; } -- GitLab From fdfd1c02f905d22b41baf98e6d0109313920ad89 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 6 May 2025 09:37:10 +0530 Subject: [PATCH 473/698] Fix for crash observed with complexity measurement pipeline for stereodownmix --- lib_com/phase_dispersion_fx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_com/phase_dispersion_fx.c b/lib_com/phase_dispersion_fx.c index 723d173bc..3103723be 100644 --- a/lib_com/phase_dispersion_fx.c +++ b/lib_com/phase_dispersion_fx.c @@ -114,12 +114,12 @@ void phase_dispersion( scale2 = getScaleFactor32( x32, L_subfr ); FOR( i = 0; i < L_subfr / 2 - 1; i++ ) { - code[i] = round_fx_sat( L_shl_sat( x32[2 * i + 0], scale2 ) ); + code[i] = round_fx_sat( L_shl_sat( x32[2 * i], scale2 ) ); code[L_subfr - 1 - i] = round_fx_sat( L_shl_sat( x32[2 * i + 3], scale2 ) ); } - code[L_subfr / 2 - 1] = round_fx( L_shl( x32[L_subfr - 2], scale2 ) ); - code[L_subfr / 2] = round_fx( L_shl( x32[1], scale2 ) ); + code[L_subfr / 2 - 1] = round_fx_sat( L_shl_sat( x32[L_subfr - 2], scale2 ) ); + code[L_subfr / 2] = round_fx_sat( L_shl_sat( x32[1], scale2 ) ); j = sub( j, scale2 ); -- GitLab From 4fcac19d00b8401c48753423cd399ccaeea01210 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 6 May 2025 09:46:22 +0530 Subject: [PATCH 474/698] Bug fix for energy level drop Link #1084 --- lib_enc/ivas_front_vad_fx.c | 2 +- lib_enc/nois_est_fx.c | 4 ++-- lib_enc/prot_fx_enc.h | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c index 124ab2996..fff68e5a2 100644 --- a/lib_enc/ivas_front_vad_fx.c +++ b/lib_enc/ivas_front_vad_fx.c @@ -613,7 +613,7 @@ ivas_error front_vad_spar_fx( Word16 q_tmpN, q_tmpE; noise_est_down_ivas_fx( fr_bands_fx[0], q_fr_bands[0], hFrontVad->hNoiseEst->bckr_fx, &hFrontVad->hNoiseEst->q_bckr, tmpN_fx, &q_tmpN, tmpE_fx, &q_tmpE, st->min_band, st->max_band, - &hFrontVad->hNoiseEst->totalNoise_fx, Etot_fx[0], &hFrontVad->hNoiseEst->Etot_last_32fx, &hFrontVad->hNoiseEst->Etot_v_h2_fx ); + &hFrontVad->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_fx[0] ) /*q8->q24*/, &hFrontVad->hNoiseEst->Etot_last_32fx, &hFrontVad->hNoiseEst->Etot_v_h2_fx ); corr_shift_fx = correlation_shift_fx( hFrontVad->hNoiseEst->totalNoise_fx ); /* Q15 */ diff --git a/lib_enc/nois_est_fx.c b/lib_enc/nois_est_fx.c index e8c72baa1..733576975 100644 --- a/lib_enc/nois_est_fx.c +++ b/lib_enc/nois_est_fx.c @@ -748,8 +748,8 @@ void noise_est_down_ivas_fx( const Word16 min_band, /* i : minimum critical band */ const Word16 max_band, /* i : maximum critical band */ Word16 *totalNoise, /* o : noise estimate over all critical bands */ - Word32 Etot, /* i : Energy of current frame */ - Word32 *Etot_last, /* i/o: Energy of last frame Q8 */ + Word32 Etot, /* i : Energy of current frame Q24*/ + Word32 *Etot_last, /* i/o: Energy of last frame Q24 */ Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */ ) diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 54e203db1..2d7e708bb 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -369,8 +369,8 @@ void noise_est_down_ivas_fx( const Word16 min_band, /* i : minimum critical band */ const Word16 max_band, /* i : maximum critical band */ Word16 *totalNoise, /* o : noise estimate over all critical bands */ - Word32 Etot, /* i : Energy of current frame */ - Word32 *Etot_last, /* i/o: Energy of last frame Q8 */ + Word32 Etot, /* i : Energy of current frame Q24*/ + Word32 *Etot_last, /* i/o: Energy of last frame Q24 */ Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */ ); -- GitLab From 88c70599bf3fb7b39d338e5df8b2f56587642f7b Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Tue, 6 May 2025 09:21:34 +0200 Subject: [PATCH 475/698] Reserve ivas-pytest-compare_ref-long-dec* jobs to high-memory-capacity runners --- .gitlab-ci.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b93061941..279e90e46 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1270,7 +1270,10 @@ ivas-pytest-compare_ref-long-enc: ivas-pytest-compare_ref-long-dec: extends: - .rules-pytest-long - - .test-job-linux + - .test-job-linux + tags: + - ivas-basop-linux + - high-memory-capacity before_script: - USE_LTV=1 - DUT_ENCODER_PATH=./$REF_ENCODER_PATH @@ -1282,7 +1285,7 @@ ivas-pytest-compare_ref-long-dec: ivas-pytest-compare_ref-long-enc-lev-10: extends: - .rules-pytest-long - - .test-job-linux + - .test-job-linux before_script: - USE_LTV=1 - DUT_DECODER_PATH=./$REF_DECODER_PATH @@ -1294,7 +1297,10 @@ ivas-pytest-compare_ref-long-enc-lev-10: ivas-pytest-compare_ref-long-dec-lev-10: extends: - .rules-pytest-long - - .test-job-linux + - .test-job-linux + tags: + - ivas-basop-linux + - high-memory-capacity before_script: - USE_LTV=1 - DUT_ENCODER_PATH=./$REF_ENCODER_PATH @@ -1318,7 +1324,10 @@ ivas-pytest-compare_ref-long-enc-lev+10: ivas-pytest-compare_ref-long-dec-lev+10: extends: - .rules-pytest-long - - .test-job-linux + - .test-job-linux + tags: + - ivas-basop-linux + - high-memory-capacity before_script: - USE_LTV=1 - DUT_ENCODER_PATH=./$REF_ENCODER_PATH -- GitLab From 65692897fffed98f744153d0dcba5aa755a8d1e9 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 6 May 2025 13:57:38 +0530 Subject: [PATCH 476/698] Fix for 3GPP issue 1448: Complexity measurement crashes: StereoDmxEVS Link #1448 --- lib_dec/evs_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/evs_dec_fx.c b/lib_dec/evs_dec_fx.c index c0281c7e3..9f08a281b 100644 --- a/lib_dec/evs_dec_fx.c +++ b/lib_dec/evs_dec_fx.c @@ -1151,7 +1151,7 @@ ivas_error evs_dec_fx( FOR( i = 0; i < tmps; i++ ) { - output_sp[i + delay_comp] = msu_r_sat( L_mult_sat( output_sp[i + delay_comp], alpha ), shr( hHQ_core->old_out_fx[i + nz], timeIn_e ), add( alpha, -32768 ) ); /*timeIn_e*/ + output_sp[i + delay_comp] = msu_r_sat( L_mult_sat( output_sp[i + delay_comp], alpha ), shr_sat( hHQ_core->old_out_fx[i + nz], timeIn_e ), add( alpha, -32768 ) ); /*timeIn_e*/ move16(); alpha = add( alpha, step ); } -- GitLab From 28ce1f371027412d1377cddff49d7f03797bcf7f Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 6 May 2025 15:30:48 +0200 Subject: [PATCH 477/698] port 1298 from float --- lib_com/options.h | 1 + lib_dec/ivas_output_config_fx.c | 8 ++++++++ lib_dec/ivas_sba_dec_fx.c | 8 ++++++++ lib_dec/ivas_spar_decoder_fx.c | 6 ++++++ 4 files changed, 23 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 71e860604..d696d9339 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -99,6 +99,7 @@ #define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ +#define NONBE_FIX_935_SBA_REVERB /* FhG: issue 935: fix MSAN error for SBA related to BINAURAL_ROOM_REVERB */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c index 9d8a592e0..75a592e1e 100644 --- a/lib_dec/ivas_output_config_fx.c +++ b/lib_dec/ivas_output_config_fx.c @@ -158,11 +158,19 @@ void ivas_renderer_select( move16(); test(); +#ifdef NONBE_FIX_935_SBA_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) +#else + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) +#endif +#else #ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) #else IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif +#endif /* NONBE_FIX_935_SBA_REVERB */ { *renderer_type = RENDERER_BINAURAL_FASTCONV; move16(); diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index fdbcdef48..b5d494eae 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -216,11 +216,19 @@ ivas_error ivas_sba_dec_reconfigure_fx( ELSE { test(); +#ifdef NONBE_FIX_935_SBA_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) +#else + IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) +#endif +#else #ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) #else IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif +#endif /* NONBE_FIX_935_SBA_REVERB */ { renderer_type_new = RENDERER_BINAURAL_FASTCONV; move16(); diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c index 38b403606..b95a93678 100644 --- a/lib_dec/ivas_spar_decoder_fx.c +++ b/lib_dec/ivas_spar_decoder_fx.c @@ -294,8 +294,14 @@ ivas_error ivas_spar_dec_open_fx( test(); test(); +#ifdef NONBE_FIX_935_SBA_REVERB + + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) +#else test(); + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && ( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) +#endif { /* get correct granularity in case of binaural rendering of the discrete objects with the td obj renderer */ Word32 quo, rem; -- GitLab From 69e2488291842285710c67440681d342844781f8 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 6 May 2025 17:31:17 +0530 Subject: [PATCH 478/698] Improvements related to input_fx and input32_fx buffers scalings --- lib_com/ivas_prot_fx.h | 2 +- lib_enc/init_enc_fx.c | 6 +- lib_enc/ivas_corecoder_enc_reconfig_fx.c | 76 +++++++--- lib_enc/ivas_cpe_enc_fx.c | 181 ++++++++++++----------- lib_enc/ivas_ism_enc_fx.c | 6 +- lib_enc/ivas_mct_enc_fx.c | 3 + lib_enc/ivas_sce_enc_fx.c | 6 +- lib_enc/ivas_stereo_dft_enc_fx.c | 12 +- lib_enc/ivas_stereo_dft_td_itd_fx.c | 38 +---- lib_enc/ivas_stereo_ica_enc_fx.c | 16 +- lib_enc/ivas_stereo_switching_enc_fx.c | 47 ++---- lib_enc/stat_enc.h | 2 + 12 files changed, 198 insertions(+), 197 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 17566e3cb..5816c60b5 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -4746,7 +4746,7 @@ ivas_error stereo_memory_enc_fx( void stereo_switching_enc_fx( CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */ - Word16 old_input_signal_pri[], /* i : old input signal of primary channel */ + Word32 old_input_signal_pri[], /* i : old input signal of primary channel */ const Word16 input_frame, /* i : input frame length */ const Word16 q_inp ); diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 1513cbe23..97cd57308 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -1421,7 +1421,10 @@ ivas_error init_encoder_ivas_fx( set32_fx( st->input_buff32_fx, 0, add( L_FRAME48k, add( L_FRAME48k, NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ) ) ); st->q_inp32 = Q31; move16(); + st->q_old_inp32 = Q31; + move16(); st->old_input_signal_fx = st->input_buff_fx; + st->old_input_signal32_fx = st->input_buff32_fx; /* st->input_Fs / FRAMES_PER_SEC */ Word16 frame_length = extract_l( Mpy_32_32( st->input_Fs, ONE_BY_FRAMES_PER_SEC_Q31 ) ); @@ -1432,7 +1435,8 @@ ivas_error init_encoder_ivas_fx( } ELSE { - st->input32_fx = st->input_buff32_fx + Mpy_32_32( st->input_Fs, 42949673 ) /* 1/50 in Q31*/; // st->input_Fs / FRAMES_PER_SEC + // st->input32_fx = st->input_buff32_fx + Mpy_32_32( st->input_Fs, 42949673 ) /* 1/50 in Q31*/; // st->input_Fs / FRAMES_PER_SEC + st->input32_fx = st->input_buff32_fx + frame_length; st->input_fx = st->input_buff_fx + frame_length; } } diff --git a/lib_enc/ivas_corecoder_enc_reconfig_fx.c b/lib_enc/ivas_corecoder_enc_reconfig_fx.c index 2e09c42ed..a8698bacc 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig_fx.c +++ b/lib_enc/ivas_corecoder_enc_reconfig_fx.c @@ -213,24 +213,37 @@ ivas_error ivas_corecoder_enc_reconfig_fx( move16(); } - Word16 q_com_sce = Q15; + Word16 q_com_sce = Q15, q_com_sce32 = Q31; + move16(); + move16(); + Word16 q_com_cpe = Q15, q_com_cpe32 = Q31; move16(); - Word16 q_com_cpe = Q15; move16(); IF( nSCE_old > 0 ) { FOR( k = 0; k < nSCE_old; k++ ) { shift = sub( getScaleFactor16( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame ), Q1 ); - Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp + shift */ + scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp + shift */ st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp, shift ); move16(); q_com_sce = s_min( q_com_sce, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp ); shift = sub( getScaleFactor16( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 ); - Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_inp + shift */ + scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_inp + shift */ st_ivas->hSCE[k]->hCoreCoder[0]->q_inp = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_inp, shift ); move16(); q_com_sce = s_min( q_com_sce, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp ); + + shift = sub( getScaleFactor32( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal32_fx, input_frame ), Q1 ); + scale_sig32( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal32_fx, input_frame, shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp + shift */ + st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32 = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32, shift ); + move16(); + q_com_sce32 = s_min( q_com_sce32, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32 ); + shift = sub( getScaleFactor32( st_ivas->hSCE[k]->hCoreCoder[0]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 ); + scale_sig32( st_ivas->hSCE[k]->hCoreCoder[0]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hSCE[k]->hCoreCoder[0]->q_inp + shift */ + st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32 = add( st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32, shift ); + move16(); + q_com_sce32 = s_min( q_com_sce32, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32 ); } } @@ -242,15 +255,26 @@ ivas_error ivas_corecoder_enc_reconfig_fx( FOR( n = 0; n < CPE_CHANNELS; n++ ) { shift = sub( getScaleFactor16( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame ), Q1 ); - Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp + shift */ + scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp + shift */ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp, shift ); move16(); q_com_cpe = s_min( q_com_cpe, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp ); shift = sub( getScaleFactor16( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 ); - Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp + shift */ + scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp + shift */ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp, shift ); move16(); q_com_cpe = s_min( q_com_cpe, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp ); + + shift = sub( getScaleFactor32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal32_fx, input_frame ), Q1 ); + scale_sig32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal32_fx, input_frame, shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp + shift */ + st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32, shift ); + move16(); + q_com_cpe32 = s_min( q_com_cpe32, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 ); + shift = sub( getScaleFactor32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ) ), Q1 ); + scale_sig32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input32_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), shift ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp + shift */ + st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 = add( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32, shift ); + move16(); + q_com_cpe32 = s_min( q_com_cpe32, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 ); } } } @@ -259,14 +283,16 @@ ivas_error ivas_corecoder_enc_reconfig_fx( { FOR( k = 0; k < nSCE_old; k++ ) { - Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp ) ); /* q_com */ + scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp ) ); /* q_com */ st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp = q_com; move16(); - Scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp ) ); /* q_com */ + scale_sig( st_ivas->hSCE[k]->hCoreCoder[0]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hSCE[k]->hCoreCoder[0]->q_inp ) ); /* q_com */ st_ivas->hSCE[k]->hCoreCoder[0]->q_inp = q_com; move16(); Copy_Scale_sig_16_32_DEPREC( st_ivas->hSCE[k]->hCoreCoder[0]->input_buff_fx, st_ivas->hSCE[k]->hCoreCoder[0]->input_buff32_fx, L_FRAME48k + NS2SA( 48000, IVAS_FB_ENC_DELAY_NS ) + L_FRAME48k, Q6 ); /* Q6 + q_com */ st_ivas->hSCE[k]->hCoreCoder[0]->q_inp32 = add( Q6, q_com ); + st_ivas->hSCE[k]->hCoreCoder[0]->q_old_inp32 = add( Q6, q_com ); + move16(); move16(); } } @@ -277,14 +303,16 @@ ivas_error ivas_corecoder_enc_reconfig_fx( { FOR( n = 0; n < CPE_CHANNELS; n++ ) { - Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp ) ); /* q_com */ + scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->old_input_signal_fx, input_frame, sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp ) ); /* q_com */ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp = q_com; move16(); - Scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp ) ); /* q_com */ + scale_sig( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_fx, sub( L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), input_frame ), sub( q_com, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp ) ); /* q_com */ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp = q_com; move16(); Copy_Scale_sig_16_32_DEPREC( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff_fx, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff32_fx, L_FRAME48k + NS2SA( 48000, IVAS_FB_ENC_DELAY_NS ) + L_FRAME48k, Q6 ); /* Q6 + q_com */ st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 = add( Q6, q_com ); + st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 = add( Q6, q_com ); + move16(); move16(); } } @@ -301,7 +329,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( { set32_fx( input_buff_fx[0], 0, len_inp_memory ); Copy32( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, input_buff_fx[0], len_inp_memory ); /* st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 */ - q_input_buff[0] = st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32; + q_input_buff[0] = st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32; move16(); } @@ -311,7 +339,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( IF( nCPE_old > 0 ) { Copy32( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, input_buff_fx[n + 1], len_inp_memory ); /* st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 */ - q_input_buff[n + 1] = st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32; + q_input_buff[n + 1] = st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32; move16(); } } @@ -334,7 +362,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( IF( GT_16( n_CoreCoder_existing, sce_id ) ) { Copy32( st_ivas->hSCE[sce_id]->hCoreCoder[0]->input_buff32_fx, input_buff_fx[sce_id], len_inp_memory ); /* st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_inp32 */ - q_input_buff[sce_id] = st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_inp32; + q_input_buff[sce_id] = st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_old_inp32; move16(); } destroy_sce_enc_fx( st_ivas->hSCE[sce_id], ( EQ_16( st_ivas->hEncoderConfig->element_mode_init, EVS_MONO ) && !st_ivas->hEncoderConfig->stereo_dmx_evs ) ); @@ -349,7 +377,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( IF( n_CoreCoder_existing > cpe_id * CPE_CHANNELS + n ) { Copy32( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff32_fx, input_buff_fx[( cpe_id - st_ivas->nCPE ) * CPE_CHANNELS + n], len_inp_memory ); /* st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 */ - q_input_buff[( cpe_id - st_ivas->nCPE ) * CPE_CHANNELS + n] = st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32; + q_input_buff[( cpe_id - st_ivas->nCPE ) * CPE_CHANNELS + n] = st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32; move16(); } } @@ -398,7 +426,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( IF( GT_16( n_CoreCoder_existing, sce_id ) && NE_16( hEncoderConfig->ivas_format, MASA_ISM_FORMAT ) ) { Copy32( input_buff_fx[sce_id], st_ivas->hSCE[sce_id]->hCoreCoder[0]->input_buff32_fx, len_inp_memory ); /* q_input_buff[sce_id] */ - st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_inp32 = q_input_buff[sce_id]; + st_ivas->hSCE[sce_id]->hCoreCoder[0]->q_old_inp32 = q_input_buff[sce_id]; move16(); } test(); @@ -475,7 +503,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( IF( GT_16( n_CoreCoder_existing, add( i_mult( cpe_id, CPE_CHANNELS ), n ) ) ) { Copy32( input_buff_fx[n], st_ivas->hCPE[cpe_id]->hCoreCoder[n]->input_buff32_fx, len_inp_memory ); /* q_input_buff */ - st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_inp32 = q_input_buff[n]; + st_ivas->hCPE[cpe_id]->hCoreCoder[n]->q_old_inp32 = q_input_buff[n]; move16(); } } @@ -560,7 +588,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx( IF( st_ivas->nSCE ) { Copy32( input_buff_fx[0], st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, len_inp_memory ); /* q_input_buff */ - st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 = q_input_buff[0]; + // st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 = q_input_buff[0]; + st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32 = q_input_buff[0]; + move16(); move16(); } @@ -569,7 +599,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx( FOR( n = 0; n < CPE_CHANNELS; n++ ) { Copy32( input_buff_fx[n + 1], st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, len_inp_memory ); /* q_input_buff */ - st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 = q_input_buff[n + 1]; + // st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 = q_input_buff[n + 1]; + st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32 = q_input_buff[n + 1]; + move16(); move16(); } } @@ -579,7 +611,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( { IF( NE_16( input_frame, len_inp_memory ) ) { - Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input) + Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input) st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp = 0; move16(); Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx + sub( len_inp_memory, input_frame ), st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx + sub( len_inp_memory, input_frame ), sub( len_inp_memory, input_frame ), sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input) @@ -588,7 +620,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( } ELSE { - Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input) + Copy_Scale_sig32_16( st_ivas->hSCE[0]->hCoreCoder[0]->input_buff32_fx, st_ivas->hSCE[0]->hCoreCoder[0]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input) st_ivas->hSCE[0]->hCoreCoder[0]->q_old_inp = 0; move16(); } @@ -600,7 +632,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( { IF( NE_16( input_frame, len_inp_memory ) ) { - Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input) + Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input) st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp = 0; move16(); @@ -610,7 +642,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( } ELSE { - Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_inp32 ) ); // Q(q_data_fx) -> Q(q_input) + Copy_Scale_sig32_16( st_ivas->hCPE[0]->hCoreCoder[n]->input_buff32_fx, st_ivas->hCPE[0]->hCoreCoder[n]->input_buff_fx, len_inp_memory, sub( add( Q16, 0 ), st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp32 ) ); // Q(q_data_fx) -> Q(q_input) st_ivas->hCPE[0]->hCoreCoder[n]->q_old_inp = 0; move16(); } diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index d020b398a..19a850a89 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -113,7 +113,9 @@ ivas_error ivas_cpe_enc_fx( Word32 band_energies_LR_fx[2 * NB_BANDS]; /* energy in critical bands without minimum noise floor E_MIN (Q_buffer + QSCALE - band_ener_guardbits) */ Word16 Q_buffer[2]; Word16 orig_input_fx[CPE_CHANNELS][L_FRAME48k]; + Word32 orig_input_fx32[CPE_CHANNELS][L_FRAME48k]; Word16 Q_orig_inp[CPE_CHANNELS]; + Word16 Q_orig_inp32[CPE_CHANNELS]; Word16 Etot_last_fx[CPE_CHANNELS]; Word32 tmp, input_Fs; Word16 max_bwidth, ivas_format; @@ -127,7 +129,7 @@ ivas_error ivas_cpe_enc_fx( Word16 e_old_wsp[CPE_CHANNELS], q_old_wsp; move16(); // Q_new move16(); // Q_new - Word16 q_com; + Word16 q_com, shift, q_min, gb; error = IVAS_ERR_OK; move32(); @@ -217,27 +219,32 @@ ivas_error ivas_cpe_enc_fx( #endif } - Word16 Q_min = s_min( q_data_fx, add( sts[0]->q_inp32, L_norm_arr( sts[0]->input32_fx - input_frame, input_frame ) ) ); - scale_sig32( sts[0]->input32_fx - input_frame, input_frame, sub( Q_min, sts[0]->q_inp32 ) ); + Word16 norm, Q_min = s_min( q_data_fx, add( sts[0]->q_old_inp32, L_norm_arr( sts[0]->input32_fx - input_frame, input_frame ) ) ); + norm = L_norm_arr( data_fx_ch0, input_frame ); + IF( data_fx_ch1 != NULL ) /*this may happen for cases with odd number of channels*/ + { + Q_min = s_min( Q_min, add( sts[1]->q_old_inp32, L_norm_arr( sts[1]->input32_fx - input_frame, input_frame ) ) ); + norm = s_min( norm, L_norm_arr( data_fx_ch1, input_frame ) ); + } + scale_sig32( sts[0]->input32_fx - input_frame, input_frame, sub( Q_min, sts[0]->q_old_inp32 ) ); + sts[0]->q_old_inp32 = Q_min; + move16(); Copy_Scale_sig32( data_fx_ch0, sts[0]->input32_fx, input_frame, sub( Q_min, q_data_fx ) ); // Q(Q_min) sts[0]->q_inp32 = Q_min; move16(); - Word16 norm = L_norm_arr( sts[0]->input32_fx, input_frame ); - Copy_Scale_sig32_16( sts[0]->input32_fx, sts[0]->input_fx, input_frame, norm ); sts[0]->q_inp = add( sub( sts[0]->q_inp32, Q16 ), norm ); move16(); IF( data_fx_ch1 != NULL ) /*this may happen for cases with odd number of channels*/ { - Q_min = s_min( q_data_fx, add( sts[1]->q_inp32, L_norm_arr( sts[1]->input32_fx - input_frame, input_frame ) ) ); - scale_sig32( sts[1]->input32_fx - input_frame, input_frame, sub( Q_min, sts[1]->q_inp32 ) ); + scale_sig32( sts[1]->input32_fx - input_frame, input_frame, sub( Q_min, sts[1]->q_old_inp32 ) ); + sts[1]->q_old_inp32 = Q_min; + move16(); Copy_Scale_sig32( data_fx_ch1, sts[1]->input32_fx, input_frame, sub( Q_min, q_data_fx ) ); // Q(Q_min) sts[1]->q_inp32 = Q_min; move16(); - norm = L_norm_arr( sts[1]->input32_fx, input_frame ); - Copy_Scale_sig32_16( sts[1]->input32_fx, sts[1]->input_fx, input_frame, norm ); sts[1]->q_inp = add( sub( sts[1]->q_inp32, Q16 ), norm ); move16(); @@ -297,8 +304,8 @@ ivas_error ivas_cpe_enc_fx( } FOR( n = 0; n < CPE_CHANNELS; n++ ) { - Scale_sig( sts[n]->input_fx, input_frame, sub( scale_inp, sts[n]->q_inp ) ); - Scale_sig( hCPE->hFrontVad[n]->mem_decim_fx, 2 * L_FILT_MAX, sub( scale_inp, hCPE->hFrontVad[n]->q_mem_decim ) ); + scale_sig( sts[n]->input_fx, input_frame, sub( scale_inp, sts[n]->q_inp ) ); + scale_sig( hCPE->hFrontVad[n]->mem_decim_fx, 2 * L_FILT_MAX, sub( scale_inp, hCPE->hFrontVad[n]->q_mem_decim ) ); sts[n]->q_inp = scale_inp; move16(); hCPE->hFrontVad[n]->q_mem_decim = scale_inp; @@ -382,53 +389,44 @@ ivas_error ivas_cpe_enc_fx( /*----------------------------------------------------------------* * Resets/updates in case of stereo switching *----------------------------------------------------------------*/ - Word16 shift = norm_arr( sts[1]->old_input_signal_fx, input_frame ); - Scale_sig( sts[1]->old_input_signal_fx, input_frame, shift ); /* sts[1]->q_old_inp + shift */ - sts[1]->q_old_inp = add( sts[1]->q_old_inp, shift ); - move16(); - shift = norm_arr( sts[1]->input_fx, input_frame ); - Scale_sig( sts[1]->input_fx, input_frame, shift ); /* sts[1]->q_inp + shift */ - sts[1]->q_inp = add( sts[1]->q_inp, shift ); - move16(); - - shift = norm_arr( sts[0]->old_input_signal_fx, input_frame ); - Scale_sig( sts[0]->old_input_signal_fx, input_frame, shift ); /* sts[1]->q_old_inp + shift */ - sts[0]->q_old_inp = add( sts[0]->q_old_inp, shift ); - move16(); - shift = norm_arr( sts[0]->input_fx, input_frame ); - Scale_sig( sts[0]->input_fx, input_frame, shift ); /* sts[1]->q_inp, shift */ - sts[0]->q_inp = add( sts[0]->q_inp, shift ); - move16(); - - Word16 q_inp = s_min( s_min( sts[0]->q_inp, sts[0]->q_old_inp ), s_min( sts[1]->q_inp, sts[1]->q_old_inp ) ); - - Scale_sig( sts[1]->input_fx, input_frame, sub( q_inp, sts[1]->q_inp ) ); /* q_inp */ - Scale_sig( sts[1]->old_input_signal_fx, input_frame, sub( q_inp, sts[1]->q_old_inp ) ); /* q_inp */ - sts[1]->q_inp = q_inp; - sts[1]->q_old_inp = q_inp; - move16(); - move16(); + test(); + IF( EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) && EQ_16( hCPE->last_element_mode, IVAS_CPE_DFT ) ) + { + gb = find_guarded_bits_fx( sts[0]->encoderLookahead_FB ); + shift = L_norm_arr( sts[1]->old_input_signal32_fx, shl( input_frame, 1 ) ); + shift = s_min( shift, L_norm_arr( sts[0]->old_input_signal32_fx, shl( input_frame, 1 ) ) ); + + IF( LT_16( shift, gb ) ) + { + shift = sub( shift, gb ); + scale_sig32( sts[1]->input32_fx, input_frame, shift ); /* q_inp32 + shift */ + scale_sig32( sts[0]->input32_fx, input_frame, shift ); /* q_inp32 + shift */ + scale_sig32( sts[1]->old_input_signal32_fx, input_frame, shift ); /* q_old_inp32 + shift */ + scale_sig32( sts[0]->old_input_signal32_fx, input_frame, shift ); /* q_old_inp32 + shift */ + sts[1]->q_inp32 = add( sts[1]->q_inp32, shift ); + sts[0]->q_inp32 = add( sts[0]->q_inp32, shift ); + sts[1]->q_old_inp32 = add( sts[1]->q_old_inp32, shift ); + sts[0]->q_old_inp32 = add( sts[0]->q_old_inp32, shift ); + move16(); + move16(); + move16(); + move16(); + } + } - Scale_sig( sts[0]->input_fx, input_frame, sub( q_inp, sts[0]->q_inp ) ); /* q_inp */ - Scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( q_inp, sts[0]->q_old_inp ) ); /* q_inp */ - sts[0]->q_inp = q_inp; - move16(); - sts[0]->q_old_inp = q_inp; - move16(); - Scale_sig( sts[0]->buf_speech_enc, L_PAST_MAX_32k + L_FRAME32k + L_NEXT_MAX_32k, sub( q_inp, sub( Q15, sts[0]->exp_buf_speech_enc ) ) ); // q_inp - sts[0]->exp_buf_speech_enc = sub( Q15, q_inp ); - move16(); - stereo_switching_enc_fx( hCPE, sts[0]->old_input_signal_fx, input_frame, q_inp ); + stereo_switching_enc_fx( hCPE, sts[0]->old_input_signal32_fx, input_frame, sts[0]->q_old_inp32 ); /*----------------------------------------------------------------* * Temporal inter-channel alignment, stereo adjustment *----------------------------------------------------------------*/ - - Copy_Scale_sig_16_32_DEPREC( sts[0]->input_buff_fx, sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), Q6 ); /* Q6 + sts[0]->q_inp */ - sts[0]->q_inp32 = add( Q6, sts[0]->q_inp ); + shift = s_min( L_norm_arr( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ), L_norm_arr( sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ) ) ); + q_min = add( sts[0]->q_inp32, sub( shift, find_guarded_bits_fx( input_frame ) ) ); + scale_sig32( sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( q_min, sts[1]->q_inp32 ) ); /* q_min */ + scale_sig32( sts[0]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), sub( q_min, sts[0]->q_inp32 ) ); /* q_min */ + sts[0]->q_inp32 = sts[1]->q_inp32 = sts[0]->q_old_inp32 = sts[1]->q_old_inp32 = q_min; + move16(); + move16(); move16(); - Copy_Scale_sig_16_32_DEPREC( sts[1]->input_buff_fx, sts[1]->input_buff32_fx, L_FRAME48k + L_FRAME48k + NS2SA( 48000, DELAY_FIR_RESAMPL_NS ), Q6 ); /* Q6 + sts[0]->q_inp */ - sts[1]->q_inp32 = add( Q6, sts[1]->q_inp ); move16(); stereo_tca_enc_fx( hCPE, input_frame ); @@ -449,9 +447,12 @@ ivas_error ivas_cpe_enc_fx( FOR( n = 0; n < CPE_CHANNELS; n++ ) { + Copy32( sts[n]->input32_fx, orig_input_fx32[n], input_frame ); /* sts->q_inp32 */ Copy( sts[n]->input_fx, orig_input_fx[n], input_frame ); /* sts->q_inp */ Scale_sig( orig_input_fx[n], input_frame, sub( -1, sts[n]->q_inp ) ); // Q(-1) Q_orig_inp[n] = -1; + Q_orig_inp32[n] = sts[n]->q_inp32; + move16(); move16(); IF( hCPE->hStereoICBWE != NULL ) @@ -633,10 +634,8 @@ ivas_error ivas_cpe_enc_fx( * Stereo processing * Stereo down-mix *----------------------------------------------------------------*/ - // printf("\n%f %f ", hCPE->hStereoClassif->is_speech, hCPE->hCoreCoder[0]->hSpMusClas->past_dlp[0]); IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) ) { - /*flt2fix: dft_synthesize*/ test(); if ( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) && hCPE->hStereoDft->res_cod_mode[STEREO_DFT_OFFSET] ) { @@ -657,7 +656,7 @@ ivas_error ivas_cpe_enc_fx( FOR( n = 0; n < CPE_CHANNELS; n++ ) { q_com = sub( add( L_norm_arr( sts[n]->input32_fx, input_frame ), sts[n]->q_inp32 ), 16 ); - q_com = s_min( q_com, add( norm_arr( sts[n]->old_input_signal_fx, input_frame ), sts[n]->q_old_inp ) ); + q_com = s_min( q_com, sub( add( L_norm_arr( sts[n]->old_input_signal32_fx, input_frame ), sts[n]->q_old_inp32 ), 16 ) ); q_com = s_min( q_com, add( norm_arr( hCPE->input_mem_fx[n], hCPE->hStereoDft->dft_ovl ), hCPE->q_input_mem[n] ) ); if ( EQ_16( q_com, Q15 ) ) @@ -670,7 +669,7 @@ ivas_error ivas_cpe_enc_fx( sts[n]->q_inp = q_com; move16(); - scale_sig( sts[n]->old_input_signal_fx, input_frame, sub( q_com, sts[n]->q_old_inp ) ); + Copy_Scale_sig_32_16( sts[n]->old_input_signal32_fx, sts[n]->old_input_signal_fx, input_frame, sub( q_com, sts[n]->q_old_inp32 ) ); sts[n]->q_old_inp = q_com; move16(); @@ -754,29 +753,32 @@ ivas_error ivas_cpe_enc_fx( sts[1]->exp_old_inp_12k8 = Q15; move16(); } - } - test(); - IF( hCPE->hStereoMdct != NULL && hCPE->hStereoMdct->hItd != NULL ) - { - Word16 q_min; + q_min = sts[1]->q_old_inp; move16(); q_min = s_min( q_min, sts[1]->q_inp ); q_min = s_min( q_min, sts[0]->q_old_inp ); q_min = s_min( q_min, sts[0]->q_inp ); + q_min = s_min( q_min, hCPE->q_input_mem[0] ); + q_min = s_min( q_min, hCPE->q_input_mem[1] ); shift = norm_arr( sts[1]->old_input_signal_fx, input_frame ); shift = s_min( shift, norm_arr( sts[1]->input_fx, input_frame ) ); shift = s_min( shift, norm_arr( sts[0]->old_input_signal_fx, input_frame ) ); shift = s_min( shift, norm_arr( sts[0]->input_fx, input_frame ) ); + shift = s_min( shift, norm_arr( hCPE->input_mem_fx[0], hCPE->hStereoMdct->hDft_ana->dft_ovl ) ); + shift = s_min( shift, norm_arr( hCPE->input_mem_fx[1], hCPE->hStereoMdct->hDft_ana->dft_ovl ) ); q_min = add( q_min, shift ); - scale_sig( sts[1]->input_fx, input_frame, sub( q_min, sts[1]->q_inp ) ); /* q_min */ - scale_sig( sts[1]->old_input_signal_fx, input_frame, sub( q_min, sts[1]->q_old_inp ) ); /* q_min */ - scale_sig( sts[0]->input_fx, input_frame, sub( q_min, sts[0]->q_inp ) ); /* q_min */ - scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( q_min, sts[0]->q_old_inp ) ); /* q_min */ - + scale_sig( sts[1]->input_fx, input_frame, sub( q_min, sts[1]->q_inp ) ); /* q_min */ + scale_sig( sts[1]->old_input_signal_fx, input_frame, sub( q_min, sts[1]->q_old_inp ) ); /* q_min */ + scale_sig( sts[0]->input_fx, input_frame, sub( q_min, sts[0]->q_inp ) ); /* q_min */ + scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( q_min, sts[0]->q_old_inp ) ); /* q_min */ + scale_sig( hCPE->input_mem_fx[0], hCPE->hStereoMdct->hDft_ana->dft_ovl, sub( q_min, hCPE->q_input_mem[0] ) ); /* q_min */ + scale_sig( hCPE->input_mem_fx[1], hCPE->hStereoMdct->hDft_ana->dft_ovl, sub( q_min, hCPE->q_input_mem[1] ) ); /* q_min */ + hCPE->q_input_mem[1] = q_min; + hCPE->q_input_mem[0] = q_min; sts[1]->q_old_inp = q_min; sts[0]->q_old_inp = q_min; sts[1]->q_inp = q_min; @@ -785,12 +787,11 @@ ivas_error ivas_cpe_enc_fx( move16(); move16(); move16(); + move16(); + move16(); } stereo_td_itd_mdct_stereo_fx( hCPE, vad_flag_dtx, vad_hover_flag, input_frame ); - - Copy_Scale_sig_16_32_no_sat( sts[0]->input_fx - input_frame, sts[0]->input32_fx - input_frame, shl( input_frame, 1 ), sub( sts[0]->q_inp32, sts[0]->q_inp ) ); - Copy_Scale_sig_16_32_no_sat( sts[1]->input_fx - input_frame, sts[1]->input32_fx - input_frame, shl( input_frame, 1 ), sub( sts[1]->q_inp32, sts[1]->q_inp ) ); } /*----------------------------------------------------------------* @@ -816,30 +817,28 @@ ivas_error ivas_cpe_enc_fx( Word16 out_16k_start_ind = 0, out_16k_end_ind = 0; move16(); move16(); + stereo_dft_enc_synthesize_fx( hCPE->hStereoDft, sts[0]->input32_fx, &out_start_ind, &out_end_ind, 0, input_Fs, input_Fs, 0, NULL ); - Scale_sig32( sts[0]->input32_fx - input_frame, add( out_start_ind, input_frame ), sub( Q15, sts[0]->q_inp32 ) ); // scaling initial part of the input buffer + + scale_sig32( sts[0]->input32_fx - input_frame, add( out_start_ind, input_frame ), sub( Q15, sts[0]->q_old_inp32 ) ); // scaling initial part of the input buffer + scale_sig32( sts[0]->input32_fx + out_end_ind, sub( input_frame, out_end_ind ), sub( Q15, sts[0]->q_inp32 ) ); // scaling initial part of the input buffer sts[0]->q_inp32 = Q15; + sts[0]->q_old_inp32 = Q15; move16(); - - // Normalise the input buffer from Q15 - Word16 input_norm, q_inp32, common_q, fir_delay_len; - input_norm = L_norm_arr( sts[0]->input32_fx + out_start_ind, sub( out_end_ind, out_start_ind ) ); - q_inp32 = add( Q15, input_norm ); - fir_delay_len = NS2SA_FX2( sts[0]->input_Fs, DELAY_FIR_RESAMPL_NS ); move16(); - // Find common Q-factor between { q_inp, q_old_inp and q_inp32-16 } - common_q = s_min( s_min( sub( q_inp32, 16 ), sts[0]->q_inp ), sts[0]->q_old_inp ); + // Normalise the input buffer from Q15 + Word16 input_norm, q_inp; //, common_q, fir_delay_len; + input_norm = L_norm_arr( sts[0]->input32_fx - input_frame, shl( input_frame, 1 ) ); + q_inp = sub( add( Q15, input_norm ), 16 ); // Rescale the old input, input and FIR delay section of input buffer - scale_sig( sts[0]->old_input_signal_fx, input_frame, sub( common_q, sts[0]->q_old_inp ) ); // q_old_inp -> common_q - Copy_Scale_sig32_16( sts[0]->input32_fx + out_start_ind, sts[0]->input_fx + out_start_ind, sub( out_end_ind, out_start_ind ), sub( add( Q16, common_q ), Q15 ) ); // Q15 -> common_q - scale_sig( sts[0]->input_fx + out_end_ind, add( sub( input_frame, out_end_ind ), fir_delay_len ), sub( common_q, sts[0]->q_inp ) ); // q_inp -> common_q + Copy_Scale_sig32_16( sts[0]->input32_fx - input_frame, sts[0]->input_fx - input_frame, shl( input_frame, 1 ), sub( add( Q16, q_inp ), Q15 ) ); // Q15 -> q_inp // Update the Q-factors - sts[0]->q_inp = common_q; + sts[0]->q_inp = q_inp; move16(); - sts[0]->q_old_inp = common_q; + sts[0]->q_old_inp = q_inp; move16(); /* iDFT & resampling to 12.8kHz internal sampling rate */ @@ -849,7 +848,7 @@ ivas_error ivas_cpe_enc_fx( /* iDFT & resampling to 16kHz internal sampling rate for M channel */ IF( EQ_32( input_Fs, internal_Fs ) ) { - Copy32( sts[0]->input32_fx - STEREO_DFT_OVL_16k, old_inp_16k_fx[0] + L_INP_MEM - STEREO_DFT_OVL_16k, add( input_frame, STEREO_DFT_OVL_16k ) ); /* Q_inp */ + Copy32( sts[0]->input32_fx - STEREO_DFT_OVL_16k, old_inp_16k_fx[0] + L_INP_MEM - STEREO_DFT_OVL_16k, add( input_frame, STEREO_DFT_OVL_16k ) ); /* sts[0]->q_inp32 */ out_16k_start_ind = -STEREO_DFT_OVL_16k; out_16k_end_ind = add( out_16k_start_ind, add( input_frame, STEREO_DFT_OVL_16k ) ); move16(); @@ -1225,12 +1224,12 @@ ivas_error ivas_cpe_enc_fx( /* update input samples buffer */ FOR( n = 0; n < CPE_CHANNELS; n++ ) { + Copy32( orig_input_fx32[n], sts[n]->old_input_signal32_fx, input_frame ); /* Q_orig_inp32 */ + sts[n]->q_old_inp32 = Q_orig_inp32[n]; + move16(); Copy( orig_input_fx[n], sts[n]->old_input_signal_fx, input_frame ); /* Q_orig_inp */ sts[n]->q_old_inp = Q_orig_inp[n]; move16(); - Copy_Scale_sig_16_32_no_sat( sts[n]->input_fx - input_frame, sts[n]->input32_fx - input_frame, input_frame, 16 ); // duplicating the data for input32_fx - sts[n]->q_inp32 = add( Q_orig_inp[n], 16 ); - move16(); } } ELSE IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) ) @@ -1238,7 +1237,9 @@ ivas_error ivas_cpe_enc_fx( Copy( sts[0]->input_fx, sts[0]->old_input_signal_fx, input_frame ); /* sts[n]->q_inp */ sts[0]->q_old_inp = sts[0]->q_inp; move16(); - Copy32( sts[0]->input32_fx, sts[0]->input32_fx - input_frame, input_frame ); /* st->q_inp32 */ + Copy32( sts[0]->input32_fx, sts[0]->old_input_signal32_fx, input_frame ); /* st->q_inp32 */ + sts[0]->q_old_inp32 = sts[0]->q_inp32; + move16(); } ELSE IF( st_ivas->hMCT == NULL ) /* note: in MCT, input buffers are updated later in ivas_mct_enc() */ { @@ -1248,7 +1249,9 @@ ivas_error ivas_cpe_enc_fx( Copy( sts[n]->input_fx, sts[n]->old_input_signal_fx, input_frame ); /* sts[n]->q_inp */ sts[n]->q_old_inp = sts[n]->q_inp; move16(); - Copy32( sts[n]->input32_fx, sts[n]->input32_fx - input_frame, input_frame ); /* st->q_inp32 */ + Copy32( sts[n]->input32_fx, sts[n]->old_input_signal32_fx, input_frame ); /* st->q_inp32 */ + sts[n]->q_old_inp32 = sts[n]->q_inp32; + move16(); } } diff --git a/lib_enc/ivas_ism_enc_fx.c b/lib_enc/ivas_ism_enc_fx.c index 81c9e01ef..122ea1d75 100644 --- a/lib_enc/ivas_ism_enc_fx.c +++ b/lib_enc/ivas_ism_enc_fx.c @@ -167,6 +167,8 @@ ivas_error ivas_ism_enc_fx( *-----------------------------------------------------------------*/ Word16 Q_min = s_min( q_data, add( st->q_inp32, L_norm_arr( st->input32_fx - input_frame, input_frame ) ) ); scale_sig32( st->input32_fx - input_frame, input_frame, sub( Q_min, st->q_inp32 ) ); + st->q_old_inp32 = Q_min; + move16(); Copy_Scale_sig32( data[sce_id], st->input32_fx, input_frame, sub( Q_min, q_data ) ); // Q(Q_min) st->q_inp32 = Q_min; move16(); @@ -474,7 +476,9 @@ ivas_error ivas_ism_enc_fx( Copy( st->input_fx, st->old_input_signal_fx, input_frame ); /* st->q_inp */ st->q_old_inp = st->q_inp; move16(); - Copy32( st->input32_fx, st->input32_fx - input_frame, input_frame ); /* st->q_inp32 */ + Copy32( st->input32_fx, st->old_input_signal32_fx, input_frame ); /* st->q_inp32 */ + st->q_old_inp32 = st->q_inp32; + move16(); hSCE->last_element_brate = hSCE->element_brate; /* Q0 */ move32(); diff --git a/lib_enc/ivas_mct_enc_fx.c b/lib_enc/ivas_mct_enc_fx.c index 56f5e44db..ee9353379 100644 --- a/lib_enc/ivas_mct_enc_fx.c +++ b/lib_enc/ivas_mct_enc_fx.c @@ -484,6 +484,9 @@ ivas_error ivas_mct_enc_fx( Copy( hCPE->hCoreCoder[n]->input_fx, hCPE->hCoreCoder[n]->old_input_signal_fx, input_frame ); hCPE->hCoreCoder[n]->q_old_inp = hCPE->hCoreCoder[n]->q_inp; move16(); + Copy32( hCPE->hCoreCoder[n]->input32_fx, hCPE->hCoreCoder[n]->old_input_signal32_fx, input_frame ); + hCPE->hCoreCoder[n]->q_old_inp32 = hCPE->hCoreCoder[n]->q_inp32; + move16(); /* common encoder updates */ updt_enc_common_ivas_fx( hCPE->hCoreCoder[n], Q_new_out[cpe_id][n] ); diff --git a/lib_enc/ivas_sce_enc_fx.c b/lib_enc/ivas_sce_enc_fx.c index a578a3cfa..f0811aea6 100644 --- a/lib_enc/ivas_sce_enc_fx.c +++ b/lib_enc/ivas_sce_enc_fx.c @@ -124,6 +124,8 @@ ivas_error ivas_sce_enc_fx( Word16 Q_min = s_min( q_data_fx, add( st->q_inp32, L_norm_arr( st->input32_fx - input_frame, input_frame ) ) ); scale_sig32( st->input32_fx - input_frame, input_frame, sub( Q_min, st->q_inp32 ) ); + st->q_old_inp32 = Q_min; + move16(); Copy_Scale_sig32( data_fx, st->input32_fx, input_frame, sub( Q_min, q_data_fx ) ); // Q(Q_min) st->q_inp32 = Q_min; move16(); @@ -366,7 +368,9 @@ ivas_error ivas_sce_enc_fx( Copy( st->input_fx, st->old_input_signal_fx, input_frame ); st->q_old_inp = st->q_inp; move16(); - Copy32( st->input32_fx, st->input32_fx - input_frame, input_frame ); /* st->q_inp32 */ + Copy32( st->input32_fx, st->old_input_signal32_fx, input_frame ); /* st->q_inp32 */ + st->q_old_inp32 = st->q_inp32; + move16(); hSCE->last_element_brate = hSCE->element_brate; move32(); diff --git a/lib_enc/ivas_stereo_dft_enc_fx.c b/lib_enc/ivas_stereo_dft_enc_fx.c index 6406158b4..80c4b5a21 100644 --- a/lib_enc/ivas_stereo_dft_enc_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_fx.c @@ -1030,7 +1030,7 @@ void stereo_dft_enc_analyze_fx( FOR( n = 0; n < n_channels; n++ ) { - Scale_sig( &mem[n][0], dft_ovl, sts[n]->q_inp - q_input_mem[n] ); // Q(sts[n]->q_inp) + Scale_sig( &mem[n][0], dft_ovl, sub( sts[n]->q_inp, q_input_mem[n] ) ); // Q(sts[n]->q_inp) q_input_mem[n] = sts[n]->q_inp; move16(); } @@ -1115,8 +1115,7 @@ void stereo_dft_enc_analyze_fx( Word32 stereo_dft_enc_synthesize_fx( STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder stereo handle */ - // float *output, /* o : output synthesis */ - Word32 *output_fx, /* o : output synthesis Q15 */ + Word32 *output_fx, /* o : output synthesis Q15 */ Word16 *output_start_index, Word16 *output_end_index, const Word16 chan, /* i : channel number */ @@ -1126,25 +1125,18 @@ Word32 stereo_dft_enc_synthesize_fx( Word16 *nrg_out_fx_e ) { Word16 i, j, sign; - // float *pDFT_in; Word32 *pDFT_in_fx; Word16 DFT_in_fx_e; Word16 offset, NFFT, N, ovl, zp; Word16 temp_exp; - // float fac; Word32 fac_fx; - // float *mem; Word32 *mem_fx; - // const float *trigo, *win, *win_ana; const Word16 *trigo_fx; const Word32 *win_fx; const Word16 *win_ana_fx; - // float tmp[STEREO_DFT_N_MAX_ENC]; Word32 tmp_fx[STEREO_DFT_N_MAX_ENC]; - // float nrg; Word32 nrg_fx; Word16 nrg_fx_e; - // float trigo_enc[STEREO_DFT_N_MAX_ENC / 2 + 1]; Word16 trigo_enc_fx[STEREO_DFT_N_MAX_ENC / 2 + 1]; Word16 trigo_step; Word16 scal_fac; diff --git a/lib_enc/ivas_stereo_dft_td_itd_fx.c b/lib_enc/ivas_stereo_dft_td_itd_fx.c index c457faa4f..309ec3377 100644 --- a/lib_enc/ivas_stereo_dft_td_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_td_itd_fx.c @@ -499,8 +499,8 @@ void stereo_td_itd_fx( Copy( shift_input, sts[ch]->input_fx, input_frame ); sts[ch]->q_inp = q_new_shift; move16(); - /*sts[ch]->q_old_inp = q_new_shift; - move16();*/ + Copy_Scale_sig_16_32_no_sat( sts[ch]->input_fx, sts[ch]->input32_fx, input_frame, sub( sts[ch]->q_inp32, sts[ch]->q_inp ) ); + IF( EQ_16( sts[0]->element_mode, IVAS_CPE_DFT ) ) { // here shift_mem has same as input_mem, no need to update q // @@ -512,6 +512,7 @@ void stereo_td_itd_fx( sts[ch]->q_old_inp = q_new_shift; move16(); Scale_sig( mdct_mem[ch], input_frame, sub( sts[ch]->q_inp, q_shift_mem ) ); // Q(sts[ch]->q_inp) + Copy_Scale_sig_16_32_no_sat( shift_mem, sts[ch]->old_input_signal32_fx, input_frame, sub( sts[ch]->q_old_inp32, q_shift_mem ) ); } } } @@ -531,7 +532,7 @@ void stereo_td_itd_mdct_stereo_fx( const Word16 input_frame /* i : frame length */ ) { - Word16 i, n, q_com; + Word16 i; Word32 bin_nrgL_fx[STEREO_DFT_N_32k_ENC]; Word16 bin_nrgL_e[STEREO_DFT_N_32k_ENC]; Word32 bin_nrgR_fx[STEREO_DFT_N_32k_ENC]; @@ -575,37 +576,6 @@ void stereo_td_itd_mdct_stereo_fx( /*call ITD function*/ stereo_dft_enc_compute_itd_fx( hCPE, DFT_fx[0], DFT_tmp_e[0], DFT_fx[1], DFT_tmp_e[1], STEREO_DFT_OFFSET, input_frame, vad_flag_dtx, vad_hover_flag, bin_nrgL_fx, bin_nrgL_e, bin_nrgR_fx, bin_nrgR_e ); - q_com = MAX_16; - move16(); - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - q_com = s_min( q_com, add( norm_arr( hCPE->hCoreCoder[n]->input_fx, input_frame ), hCPE->hCoreCoder[n]->q_inp ) ); - q_com = s_min( q_com, add( norm_arr( hCPE->hCoreCoder[n]->old_input_signal_fx, input_frame ), hCPE->hCoreCoder[n]->q_old_inp ) ); - q_com = s_min( q_com, add( norm_arr( hCPE->input_mem_fx[n], hStereoMdct->hDft_ana->dft_ovl ), hCPE->q_input_mem[n] ) ); - - if ( EQ_16( q_com, Q15 ) ) - { - q_com = 0; - move16(); - } - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - scale_sig( hCPE->hCoreCoder[n]->input_fx, input_frame, sub( q_com, hCPE->hCoreCoder[n]->q_inp ) ); - hCPE->hCoreCoder[n]->q_inp = q_com; - move16(); - - scale_sig( hCPE->hCoreCoder[n]->old_input_signal_fx, input_frame, sub( q_com, hCPE->hCoreCoder[n]->q_old_inp ) ); - hCPE->hCoreCoder[n]->q_old_inp = q_com; - move16(); - - scale_sig( hCPE->input_mem_fx[n], hStereoMdct->hDft_ana->dft_ovl, sub( q_com, hCPE->q_input_mem[n] ) ); - hCPE->q_input_mem[n] = q_com; - move16(); - } - /* Time Domain ITD compensation using extrapolation */ stereo_td_itd_fx( hStereoMdct->hItd, NULL, NULL, 1, hStereoMdct->hDft_ana->dft_ovl, hCPE->hCoreCoder, input_frame, hCPE->input_mem_fx, hCPE->q_input_mem ); } diff --git a/lib_enc/ivas_stereo_ica_enc_fx.c b/lib_enc/ivas_stereo_ica_enc_fx.c index 6057ace6b..d0252a1f1 100644 --- a/lib_enc/ivas_stereo_ica_enc_fx.c +++ b/lib_enc/ivas_stereo_ica_enc_fx.c @@ -2088,6 +2088,10 @@ void stereo_tca_enc_fx( move16(); sts[1]->q_inp32 = sub( sts[1]->q_inp32, 2 ); move16(); + sts[0]->q_old_inp32 = sub( sts[0]->q_old_inp32, 2 ); + move16(); + sts[1]->q_old_inp32 = sub( sts[1]->q_old_inp32, 2 ); + move16(); } /* update L/R DS memories */ @@ -2319,17 +2323,17 @@ static void unclr_calc_corr_features_fx( move32(); } - hStereoClassif->unclr_fv_fx[E_corrEst0] = L_shl( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */ + hStereoClassif->unclr_fv_fx[E_corrEst0] = L_shl_sat( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */ move32(); - hStereoClassif->unclr_fv_fx[E_corrEstMax] = L_shl( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */ + hStereoClassif->unclr_fv_fx[E_corrEstMax] = L_shl_sat( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */ move32(); - hStereoClassif->unclr_fv_fx[E_corrLagMax] = L_shl( corrLagMax, 15 ); /* Q15 */ + hStereoClassif->unclr_fv_fx[E_corrLagMax] = L_shl_sat( corrLagMax, 15 ); /* Q15 */ move32(); - hStereoClassif->xtalk_fv_fx[E_corrEst0] = L_shl( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */ + hStereoClassif->xtalk_fv_fx[E_corrEst0] = L_shl_sat( corrEst[abs_s( lagSearchRange[0] )], sub( corrEst_exp, 16 ) ); /* Q15 */ move32(); - hStereoClassif->xtalk_fv_fx[E_corrEstMax] = L_shl( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */ + hStereoClassif->xtalk_fv_fx[E_corrEstMax] = L_shl_sat( corrEstMax, sub( corrEst_exp, 16 ) ); /* Q15 */ move32(); - hStereoClassif->xtalk_fv_fx[E_corrLagMax] = L_shl( corrLagMax, 15 ); /* Q15 */ + hStereoClassif->xtalk_fv_fx[E_corrLagMax] = L_shl_sat( corrLagMax, 15 ); /* Q15 */ move32(); /* L/M and R/M correlation */ diff --git a/lib_enc/ivas_stereo_switching_enc_fx.c b/lib_enc/ivas_stereo_switching_enc_fx.c index 5f1208ba7..8e372b311 100644 --- a/lib_enc/ivas_stereo_switching_enc_fx.c +++ b/lib_enc/ivas_stereo_switching_enc_fx.c @@ -628,23 +628,6 @@ ivas_error stereo_memory_enc_fx( return error; } -static void v_multc_fixed_32_16( - const Word16 x[], /* i : Input vector Qx*/ - const Word32 c, /* i : Constant Q31*/ - Word32 y[], /* o : Output vector that contains c*x Qx*/ - const Word16 N /* i : Vector length Q0*/ -) -{ - Word16 i; - - FOR( i = 0; i < N; i++ ) - { - y[i] = Mpy_32_16_1( c, x[i] ); /* Q16+Qx */ - move32(); - } - - return; -} /*-------------------------------------------------------------------* * Function stereo_switching_enc() * @@ -653,7 +636,7 @@ static void v_multc_fixed_32_16( void stereo_switching_enc_fx( CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */ - Word16 old_input_signal_pri[], /* i : old input signal of primary channel q_inp*/ + Word32 old_input_signal_pri[], /* i : old input signal of primary channel q_inp*/ const Word16 input_frame, /* i : input frame length Q0*/ const Word16 q_inp ) { @@ -672,8 +655,8 @@ void stereo_switching_enc_fx( { FOR( n = 0; n < CPE_CHANNELS; n++ ) { - Copy( sts[n]->input_fx + input_frame - dft_ovl, hCPE->input_mem_fx[n], dft_ovl ); /* sts[n]->q_inp */ - hCPE->q_input_mem[n] = sts[n]->q_inp; + Copy_Scale_sig32_16( sts[n]->input32_fx + input_frame - dft_ovl, hCPE->input_mem_fx[n], dft_ovl, 0 ); /* sts[n]->q_inp32 - 16*/ + hCPE->q_input_mem[n] = sub( sts[n]->q_inp32, 16 ); move16(); } } @@ -681,9 +664,9 @@ void stereo_switching_enc_fx( /* save original stereo input (MDCT overlap part) for both channels in unused old input of right channel for possible DFT->MDCT transition */ IF( EQ_16( hCPE->element_mode, IVAS_CPE_DFT ) ) { - Copy( sts[0]->input_fx + sub( (Word16) Mpy_32_32( sts[0]->input_Fs, 42949673 /* 1/50 in Q31*/ ), sts[0]->encoderLookahead_FB ), sts[1]->input_fx - shl( sts[0]->encoderLookahead_FB, 1 ), sts[0]->encoderLookahead_FB ); /* sts[0]->q_inp */ + Copy32( sts[0]->input32_fx + sub( extract_l( Mpy_32_32( sts[0]->input_Fs, 42949673 /* 1/50 in Q31*/ ) ), sts[0]->encoderLookahead_FB ), sts[1]->input32_fx - shl( sts[0]->encoderLookahead_FB, 1 ), sts[0]->encoderLookahead_FB ); /* sts[0]->q_inp32 */ - Copy( sts[1]->input_fx + sub( (Word16) Mpy_32_32( sts[1]->input_Fs, 42949673 /* 1/50 in Q31*/ ), sts[1]->encoderLookahead_FB ), sts[1]->input_fx - sts[1]->encoderLookahead_FB, sts[1]->encoderLookahead_FB ); /* sts[1]->q_inp */ + Copy32( sts[1]->input32_fx + sub( extract_l( Mpy_32_32( sts[1]->input_Fs, 42949673 /* 1/50 in Q31*/ ) ), sts[1]->encoderLookahead_FB ), sts[1]->input32_fx - sts[1]->encoderLookahead_FB, sts[1]->encoderLookahead_FB ); /* sts[1]->q_inp32 */ } @@ -694,7 +677,7 @@ void stereo_switching_enc_fx( /* window DFT synthesis overlap memory @input_Fs, primary channel */ FOR( i = 0; i < dft_ovl; i++ ) { - hCPE->hStereoDft->output_mem_dmx_fx[i] = L_shr( Mpy_32_16_r( hCPE->hStereoDft->win_fx[dft_ovl - 1 - i], old_input_signal_pri[input_frame - dft_ovl + i] ), add( q_inp, 1 ) ); // Q31 + q_inp - Q15 - (q_inp + 1) -> Q15 + hCPE->hStereoDft->output_mem_dmx_fx[i] = L_shl( Mpy_32_32_r( hCPE->hStereoDft->win_fx[dft_ovl - 1 - i], old_input_signal_pri[input_frame - dft_ovl + i] ), sub( 15, q_inp ) ); // Q15 move32(); } /* reset 48kHz BWE overlap memory */ @@ -728,7 +711,7 @@ void stereo_switching_enc_fx( /* update DFT synthesis overlap memory @12.8kHz */ FOR( i = 0; i < STEREO_DFT_OVL_12k8; i++ ) { - hCPE->hStereoDft->output_mem_dmx_12k8_fx[i] = L_shr( Mpy_32_16_r( hCPE->hStereoDft->win_12k8_fx[STEREO_DFT_OVL_12k8 - 1 - i], sts[0]->buf_speech_enc[L_FRAME32k + L_FRAME - STEREO_DFT_OVL_12k8 + i] ), q_inp + 1 ); /* Q15 */ + hCPE->hStereoDft->output_mem_dmx_12k8_fx[i] = L_shr( Mpy_32_16_r( hCPE->hStereoDft->win_12k8_fx[STEREO_DFT_OVL_12k8 - 1 - i], sts[0]->buf_speech_enc[L_FRAME32k + L_FRAME - STEREO_DFT_OVL_12k8 + i] ), sub( 16, sts[0]->exp_buf_speech_enc ) ); /* Q15 */ move32(); } Word16 q_dmx = Q15; @@ -816,10 +799,10 @@ void stereo_switching_enc_fx( offset = sub( sts[0]->cldfbAnaEnc->p_filter_length, sts[0]->cldfbAnaEnc->no_channels ); /* Q0 */ FOR( i = 0; i < offset; i++ ) { - sts[0]->cldfbAnaEnc->cldfb_state_fx[i] = L_deposit_h( old_input_signal_pri[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i] ); /* Q16+q_inp */ + sts[0]->cldfbAnaEnc->cldfb_state_fx[i] = old_input_signal_pri[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i]; /* q_inp */ move32(); } - sts[0]->cldfbAnaEnc->Q_cldfb_state = add( Q16, q_inp ); + sts[0]->cldfbAnaEnc->Q_cldfb_state = q_inp; move16(); } @@ -838,18 +821,18 @@ void stereo_switching_enc_fx( test(); IF( hCPE->hStereoTD != NULL && EQ_16( hCPE->hStereoTD->tdm_last_ratio_idx, LRTD_STEREO_LEFT_IS_PRIM ) ) { - v_multc_fixed_32_16( hCPE->hCoreCoder[1]->old_input_signal_fx + sub( input_frame, add( offset, NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) ) ), -MAX_32, sts[1]->cldfbAnaEnc->cldfb_state_fx, offset ); /* Q16+q_inp */ - sts[1]->cldfbAnaEnc->Q_cldfb_state = add( Q16, q_inp ); + v_multc_fixed( hCPE->hCoreCoder[1]->old_input_signal32_fx + sub( input_frame, add( offset, NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) ) ), -MAX_32, sts[1]->cldfbAnaEnc->cldfb_state_fx, offset ); /* Q16+q_inp */ + sts[1]->cldfbAnaEnc->Q_cldfb_state = q_inp; move16(); } ELSE { FOR( i = 0; i < offset; i++ ) { - sts[1]->cldfbAnaEnc->cldfb_state_fx[i] = L_shr( L_deposit_h( hCPE->hCoreCoder[1]->old_input_signal_fx[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i] ), 5 ); /* Q11+q_inp */ + sts[1]->cldfbAnaEnc->cldfb_state_fx[i] = ( hCPE->hCoreCoder[1]->old_input_signal32_fx[input_frame - offset - NS2SA_FX2( L_mult0( input_frame, FRAMES_PER_SEC ), L_MEM_RECALC_TBE_NS ) + i] ); /* q_inp */ move32(); } - sts[1]->cldfbAnaEnc->Q_cldfb_state = add( Q16 - 5, q_inp ); + sts[1]->cldfbAnaEnc->Q_cldfb_state = q_inp; move16(); } @@ -929,9 +912,9 @@ void stereo_switching_enc_fx( tmp_fx = div_s( 64, shl( sts[0]->encoderLookahead_FB, Q6 ) ); /* Q15 */ FOR( i = 0; i < sts[0]->encoderLookahead_FB; i++ ) { - sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i] = L_shr( Mpy_32_16_1( L_add( Mpy_32_16_1( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), Mpy_32_16_1( sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ), 13 ); /* q_inp32+0-15+15-15-13 */ + sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i] = ( Mpy_32_16_1( L_add( imult3216( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), imult3216( sts[1]->input32_fx[-sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ) ); /* sts[0]->q_inp32 */ move32(); - sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i] = L_shr( Mpy_32_16_1( L_add( Mpy_32_16_1( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), Mpy_32_16_1( sts[1]->input32_fx[-2 * sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ), 13 ); /* q_inp32+0-15+15-15-13 */ + sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i] = ( Mpy_32_16_1( L_add( imult3216( sts[0]->input32_fx[-sts[0]->encoderLookahead_FB + i], sts[0]->encoderLookahead_FB - i ), imult3216( sts[1]->input32_fx[-2 * sts[0]->encoderLookahead_FB + i], i ) ), tmp_fx ) ); /* sts[0]->q_inp32 */ move32(); } /* restore continuous signal in right channel (part of old_output was used to store original left channel) */ diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 4da0bff61..3d6f23dd3 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -1457,7 +1457,9 @@ typedef struct enc_core_structure Word16 q_inp32; Word16 q_inp; Word16 *old_input_signal_fx; + Word32 *old_input_signal32_fx; Word16 q_old_inp; + Word16 q_old_inp32; Word16 Q_old_wtda; SIGNAL_BUFFERS_ENC_HANDLE hSignalBuf; -- GitLab From 1315314d6dd10a3a78ae888cac411bf27d5ad0f3 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 10:17:35 +0530 Subject: [PATCH 479/698] Fix for 3GPP issue 1548: MASA coherence codebook fixed point values Link #1548 --- lib_com/ivas_rom_com_fx.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/lib_com/ivas_rom_com_fx.c b/lib_com/ivas_rom_com_fx.c index ffb18d6d2..e7ee30e8d 100644 --- a/lib_com/ivas_rom_com_fx.c +++ b/lib_com/ivas_rom_com_fx.c @@ -1604,15 +1604,22 @@ const Word16 coherence_cb0_masa_Q14[DIRAC_DIFFUSE_LEVELS * 2 * MASA_NO_CV_COH] = // q = 21 const Word32 coherence_cb0_masa_fx[DIRAC_DIFFUSE_LEVELS * 2 * MASA_NO_CV_COH] = { - 100243, 534144, 1156579, 2068840, 2846464, 3531184, 4125936, 0, 253965, 864655, 1467377, - 2129448, 2977326, 3768791, 0, 0, 338480, 1189924, 2035915, 2872888, 3640026, 0, 0, 0, - 492621, 1532179, 2527278, 3470157, 0, 0, 0, 0, 499331, 1506803, 2465831, 3425697, 0, - 0, 0, 0, 503316, 1473668, 2392221, 3406404, 0, 0, 0, 0, 737778, 1970903, 3450654, 0, 0, - 0, 0, 0, 2097152, 0, 0, 0, 0, 0, 0, 0, 303038, 719742, 1122186, 1577897, 2117075, 2770337, - 3648834, 0, 419849, 932603, 1440533, 2011797, 2745172, 3571240, 0, 0, 548824, 1165177, - 1812987, 2555379, 3366138, 0, 0, 0, 695835, 1428160, 2190475, 3084910, 0, 0, 0, 0, 697093, - 1381603, 2092957, 2970406, 0, 0, 0, 0, 708417, 1396283, 2099039, 2992426, 0, 0, 0, 0, 835924, - 1728892, 2836607, 0, 0, 0, 0, 0, 2097152, 0, 0, 0, 0, 0, 0, 0 + 100244, 534145, 1156579, 2068841, 2846465, 3531185, 4125937, 0, + 253965, 864656, 1467377, 2129448, 2977327, 3768792, 0, 0, + 338480, 1189924, 2035915, 2872889, 3640027, 0, 0, 0, + 492621, 1532179, 2527278, 3470158, 0, 0, 0, 0, + 499332, 1506804, 2465831, 3425698, 0, 0, 0, 0, + 503316, 1473669, 2392221, 3406404, 0, 0, 0, 0, + 737778, 1970904, 3450654, 0, 0, 0, 0, 0, + 2097152, 0, 0, 0, 0, 0, 0, 0, + 303038, 719743, 1122186, 1577897, 2117075, 2770338, 3648835, 0, + 419850, 932604, 1440534, 2011798, 2745172, 3571240, 0, 0, + 548825, 1165178, 1812988, 2555380, 3366139, 0, 0, 0, + 695835, 1428161, 2190475, 3084911, 0, 0, 0, 0, + 697093, 1381604, 2092958, 2970406, 0, 0, 0, 0, + 708418, 1396284, 2099040, 2992426, 0, 0, 0, 0, + 835925, 1728892, 2836608, 0, 0, 0, 0, 0, + 2097152, 0, 0, 0, 0, 0, 0, 0 }; // q = 15 @@ -1626,9 +1633,11 @@ const Word16 coherence_cb1_masa_Q15[MASA_NO_CV_COH1 * MASA_MAXIMUM_CODING_SUBBAN // q = 21 const Word32 coherence_cb1_masa_fx[MASA_NO_CV_COH1 * MASA_MAXIMUM_CODING_SUBBANDS] = { - -3984, 544630, -565392, 1314704, -1320157, -11534, 541484, -583847, 1357486, -1371118, - -6081, 525546, -551551, 1362729, -1371537, -838, 533934, -540855, 1436758, -1414109, - 3565, 528692, -519883, 1513514, -1500931 + -3985, 544630, -565392, 1314705, -1320157, + -11534, 541485, -583847, 1357487, -1371118, + -6082, 525546, -551551, 1362729, -1371537, + -839, 533935, -540856, 1436759, -1414110, + 3565, 528692, -519884, 1513515, -1500932 }; /* Multi-channel input and output setups */ -- GitLab From 86df3c3d2fd583636cad66804c676d9948310497 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 10:38:23 +0530 Subject: [PATCH 480/698] Q fixes in inov_encode function --- lib_enc/acelp_core_switch_enc_fx.c | 3 +- lib_enc/corr_xh_fx.c | 14 +-- lib_enc/enc_gen_voic_fx.c | 2 +- lib_enc/enc_pit_exc_fx.c | 2 +- lib_enc/enc_tran_fx.c | 3 +- lib_enc/find_tar_fx.c | 135 ----------------------------- lib_enc/inov_enc_fx.c | 37 +++++--- lib_enc/prot_fx_enc.h | 16 +--- 8 files changed, 39 insertions(+), 173 deletions(-) diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c index 854f0ff67..4852cb567 100644 --- a/lib_enc/acelp_core_switch_enc_fx.c +++ b/lib_enc/acelp_core_switch_enc_fx.c @@ -6,7 +6,6 @@ #include "options.h" #include "cnst.h" #include "rom_com_fx.h" -//#include "prot_fx.h" #include "rom_com.h" /* Common constants */ #include "prot_fx.h" /* Function prototypes */ #include "prot_fx_enc.h" /* Function prototypes */ @@ -630,7 +629,7 @@ static void encod_gen_voic_core_switch_ivas_fx( ELSE { weight_a_fx( A, Ap, GAMMA1, M ); /* Bandwidth expansion of A(z) filter coefficients */ - find_targets_ivas_fx( inp, hLPDmem->mem_syn, 0, &( hLPDmem->mem_w0 ), Aq, res, L_SUBFR, Ap, TILT_FAC_FX, xn, cn, h1 ); + find_targets_ivas_fx( inp, hLPDmem->mem_syn, 0, &( hLPDmem->mem_w0 ), Aq, res, L_SUBFR, Ap, TILT_FAC_FX, xn, cn, h1 ); } q_h1 = sub( 14, norm_s( h1[0] ) ); diff --git a/lib_enc/corr_xh_fx.c b/lib_enc/corr_xh_fx.c index 51165d141..5fb7c628a 100644 --- a/lib_enc/corr_xh_fx.c +++ b/lib_enc/corr_xh_fx.c @@ -133,7 +133,7 @@ void corr_xh_ivas_fx( const Word16 Qx, Word16 dn[], /* o : correlation between x[] and h[] Qdn*/ Word16 *Qdn, - const Word16 h[], /* i : impulse response (of weighted synthesis filter) (Q15 - norm_s(h[0]))*/ + const Word16 h[], /* i : impulse response (of weighted synthesis filter) (Q14 - norm_s(h[0]))*/ const Word16 L_subfr /* i : length of the subframe Q0*/ ) { @@ -152,16 +152,16 @@ void corr_xh_ivas_fx( L_maxloc = L_deposit_l( 0 ); FOR( i = k; i < L_subfr; i += STEP ) { - L_tmp = L_mac( 0, x[i], h[0] ); // Qx+(15 - norm_s(h[0])) + L_tmp = L_mac( 0, x[i], h[0] ); // Qx+(14 - norm_s(h[0])) + 1 FOR( j = i; j < L_subfr - 1; j++ ) { - L_tmp = L_mac_o( L_tmp, x[j + 1], h[j + 1 - i], &Overflow ); // Qx+(15 - norm_s(h[0])) + L_tmp = L_mac_o( L_tmp, x[j + 1], h[j + 1 - i], &Overflow ); // Qx+(14 - norm_s(h[0])) + 1 } - y32[i] = L_tmp; // Qx+(15 - norm_s(h[0])) + y32[i] = L_tmp; // Qx+(14 - norm_s(h[0])) + 1 move32(); L_tmp = L_abs( L_tmp ); - L_maxloc = L_max( L_tmp, L_maxloc ); // Qx+(15 - norm_s(h[0])) + L_maxloc = L_max( L_tmp, L_maxloc ); // Qx+(14 - norm_s(h[0])) +1 } /* tot += 3*max / 8 */ L_maxloc = L_shr( L_maxloc, 2 ); @@ -176,11 +176,11 @@ void corr_xh_ivas_fx( FOR( i = 0; i < L_subfr; i++ ) { - dn[i] = round_fx( L_shl( y32[i], j ) ); // Qx+(15 - norm_s(h[0])) +j - 16 + dn[i] = round_fx( L_shl( y32[i], j ) ); // Qx+(14 - norm_s(h[0])) + 1 +j - 16 move16(); } - *Qdn = sub( add( add( Qx, sub( 15, norm_s( h[0] ) ) ), j ), 16 ); + *Qdn = sub( add( add( Qx, add( sub( 14, norm_s( h[0] ) ), 1 ) ), j ), 16 ); move16(); return; } diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c index a60828a94..bb305e9c9 100644 --- a/lib_enc/enc_gen_voic_fx.c +++ b/lib_enc/enc_gen_voic_fx.c @@ -562,7 +562,7 @@ void encod_gen_voic_ivas_fx( Copy( &res_fx[i_subfr_fx], &exc_fx[i_subfr_fx], L_SUBFR ); /*Q_new*/ - find_targets_ivas_new_fx( speech_fx, hLPDmem->mem_syn, i_subfr_fx, &hLPDmem->mem_w0, p_Aq_fx, + find_targets_ivas_fx( speech_fx, hLPDmem->mem_syn, i_subfr_fx, &hLPDmem->mem_w0, p_Aq_fx, res_fx, L_SUBFR, p_Aw_fx, st_fx->preemph_fac, xn_fx, cn_fx, h1_fx ); q_h1 = sub( 14, norm_s( h1_fx[0] ) ); diff --git a/lib_enc/enc_pit_exc_fx.c b/lib_enc/enc_pit_exc_fx.c index f16dd80cb..e87462988 100644 --- a/lib_enc/enc_pit_exc_fx.c +++ b/lib_enc/enc_pit_exc_fx.c @@ -721,7 +721,7 @@ void enc_pit_exc_ivas_fx( Copy( &res[i_subfr], &exc[i_subfr], L_subfr ); /* Q_new */ /* condition on target (compared to float) has been put outside the loop */ - find_targets_ivas_new_fx( speech, hGSCEnc->mem_syn_tmp_fx, i_subfr, &hGSCEnc->mem_w0_tmp_fx, p_Aq, + find_targets_ivas_fx( speech, hGSCEnc->mem_syn_tmp_fx, i_subfr, &hGSCEnc->mem_w0_tmp_fx, p_Aq, res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); q_h1 = sub( 14, norm_s( h1[0] ) ); diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index 865972819..c92e1b6db 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -545,7 +545,8 @@ Word16 encod_tran_ivas_fx( Copy( &res_fx[i_subfr], &exc_fx[i_subfr], L_SUBFR ); /* Q_new */ - find_targets_ivas_new_fx( speech_fx, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq, + + find_targets_ivas_fx( speech_fx, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq, res_fx, L_SUBFR, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); q_h1 = sub( 14, norm_s( h1[0] ) ); diff --git a/lib_enc/find_tar_fx.c b/lib_enc/find_tar_fx.c index 4f24ec39f..8d3efb834 100644 --- a/lib_enc/find_tar_fx.c +++ b/lib_enc/find_tar_fx.c @@ -173,141 +173,6 @@ void find_targets_ivas_fx( Word16 *cn, /* o : target vector in residual domain Q_new*/ Word16 *h1 /* o : impulse response of weighted synthesis filter Q(14 - norm_s(h1[0]))*/ ) -{ - Word16 i; - Word16 temp[M + 6 * L_SUBFR]; /* error of quantization */ - Word16 scale, scaleq, j, d, s, s2, tmp; - Word16 Aqs[M + 1]; - Word32 h1_32[6 * L_SUBFR]; - Word16 sf; - Word64 Ltmp64; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move16(); -#endif - /*------------------------------------------------------------------------* - * Find the target vector for excitation search: - * - * |------| res[n] - * speech[n]---| A(z) |-------- - * |------| | |--------| error[n] |------| - * zero -- (-)--| 1/A(z) |-----------| W(z) |-- target - * exc |--------| |------| - * - * Instead of subtracting the zero-input response of filters from - * the weighted input speech, the above configuration is used to - * compute the target vector. - *-----------------------------------------------------------------------*/ - FOR( i = 0; i < M; i++ ) - { - temp[i] = sub_sat( speech[i + i_subfr - M], mem_syn[i] ); /* Q_new - 1 */ - move16(); - } - Scale_sig( temp, M, 1 ); // scaling to make belong function output alligned //Qnew - - syn_filt_fx( 0, p_Aq, M, &res[i_subfr], temp + M, L_subfr, temp, 0 ); - - Residu3_fx( Ap, temp + M, xn, L_subfr, 0 ); /* xn in Q_new */ - - deemph_fx( xn, tilt_fac, L_subfr, mem_w0 ); /* xn in Q_new */ - - *mem_w0 = shr( *mem_w0, 1 ); // Q_new - 1 - - /*-----------------------------------------------------------------* - * Find target in residual domain (cn[]) for innovation search - *--------------------------------------------------------------*/ - IF( cn != NULL ) - { - /* first half: xn[] --> cn[] */ - temp[0] = 0; - move16(); - preemph_copy_fx( xn, cn, tilt_fac, shr( L_subfr, 1 ), temp ); - syn_filt_s_lc_fx( 1, Ap, cn, temp, shr( L_subfr, 1 ) ); /* Q_new -> Q_new - 1 */ - Residu3_lc_fx( p_Aq, M, temp, cn, shr( L_subfr, 1 ), 1 ); /* Q_new - 1 -> Q_new */ - - /* second half: res[] --> cn[] (approximated and faster) */ - Copy( &res[i_subfr + shr( L_subfr, 1 )], cn + shr( L_subfr, 1 ), shr( L_subfr, 1 ) ); /* Q_new */ - } - scale_sig( xn, L_subfr, -1 ); // Q_new - 1 - - /*---------------------------------------------------------------* - * Compute impulse response, h1[], of weighted synthesis filter * - *---------------------------------------------------------------*/ - - scale = norm_s( Ap[0] ); - scaleq = norm_s( p_Aq[0] ); - d = sub( scaleq, scale ); - IF( d >= 0 ) - { - Copy( p_Aq, Aqs, M + 1 ); /* Q12 */ - s = add( scaleq, 1 ); - s2 = shr( 16384, d ); - } - ELSE - { - Copy_Scale_sig( p_Aq, Aqs, M + 1, d ); /* Q12 */ - s = add( scale, 1 ); - s2 = 16384; - move16(); - } - - set32_fx( h1_32, 0, L_subfr ); - Overflow = 0; - move16(); - FOR( i = 0; i < M; i++ ) - { - Ltmp64 = W_mult_16_16( Ap[i], s2 ); /* Q27 */ - FOR( j = 1; j <= i; j++ ) - { - Ltmp64 = W_msu_16_16( Ltmp64, Aqs[j], extract_h( L_shl_o( h1_32[i - j], s, &Overflow ) ) ); /* Q27 */ - } - h1_32[i] = W_extract_l( Ltmp64 ); /* Q27 */ - move32(); - } - - Ltmp64 = W_mult_16_16( Ap[i], s2 ); /* Q27 */ - FOR( j = 1; j <= M; j++ ) - { - Ltmp64 = W_msu_16_16( Ltmp64, Aqs[j], extract_h( L_shl_o( h1_32[i - j], s, &Overflow ) ) ); /* Q27 */ - } - h1_32[M] = W_extract_l( Ltmp64 ); /* Q27 */ - move32(); - - FOR( i = M + 1; i < L_subfr; i++ ) - { - Ltmp64 = W_msu_16_16( 0, Aqs[1], extract_h( L_shl_o( h1_32[i - 1], s, &Overflow ) ) ); /* Q27 */ - FOR( j = 2; j <= M; j++ ) - { - Ltmp64 = W_msu_16_16( Ltmp64, Aqs[j], extract_h( L_shl_o( h1_32[i - j], s, &Overflow ) ) ); /* Q27 */ - } - h1_32[i] = W_extract_l( Ltmp64 ); /* Q27 */ - move32(); - } - - sf = sub( L_norm_arr( h1_32, L_subfr ), 1 ); - Copy_Scale_sig32_16( h1_32, h1, L_subfr, sf ); // Q11 + sf - - tmp = 0; - move16(); - Deemph2( h1, tilt_fac, L_subfr, &tmp ); // Q11 + sf - 1 - - return; -} - -void find_targets_ivas_new_fx( - const Word16 *speech, /* i : pointer to the speech frame Q_new-1*/ - const Word16 *mem_syn, /* i : memory of the synthesis filter Q_new-1*/ - const Word16 i_subfr, /* i : subframe index Q0*/ - Word16 *mem_w0, /* i/o: weighting filter denominator memory Q_new-1*/ - const Word16 *p_Aq, /* i : interpolated quantized A(z) filter Q12*/ - const Word16 *res, /* i : residual signal Q_new*/ - const Word16 L_subfr, /* i : length of vectors for gain quantization Q0*/ - const Word16 *Ap, /* i : unquantized A(z) filter with bandwidth expansion Q12*/ - Word16 tilt_fac, /* i : tilt factor Q15*/ - Word16 *xn, /* o : Close-loop Pitch search target vector Q_new-1*/ - Word16 *cn, /* o : target vector in residual domain Q_new*/ - Word16 *h1 /* o : impulse response of weighted synthesis filter Q(14 - norm_s(h1[0]))*/ -) { Word16 i; Word16 temp[M + 6 * L_SUBFR]; /* error of quantization */ diff --git a/lib_enc/inov_enc_fx.c b/lib_enc/inov_enc_fx.c index fe22ee398..62ea723a3 100644 --- a/lib_enc/inov_enc_fx.c +++ b/lib_enc/inov_enc_fx.c @@ -370,7 +370,7 @@ Word16 inov_encode_ivas_fx( Word16 shift, Word16 Q_new ) { - Word16 dn[2 * L_SUBFR], Qdn; + Word16 dn[2 * L_SUBFR], Qdn, Qcn; Word16 nBits, cmpl_flag; Word16 stack_pulses; Word16 g1, g2; @@ -378,7 +378,7 @@ Word16 inov_encode_ivas_fx( Word16 acelpautoc; BSTR_ENC_HANDLE hBstr = st_fx->hBstr; Word16 i, k; - Word16 Qxn, Rw_q, j, max_xn2; + Word16 Qxn, max_xn2; stack_pulses = 0; move16(); @@ -416,20 +416,22 @@ Word16 inov_encode_ivas_fx( test(); test(); + Qcn = Q_new; + move16(); IF( GT_32( core_brate, ACELP_13k20 ) && !Opt_AMR_WB && EQ_16( L_subfr, L_SUBFR ) ) { acelpautoc = 1; move16(); - Word16 q_h1 = sub( 14, norm_s( h2[0] ) ); - Scale_sig( h2, L_SUBFR, sub( 11, q_h1 ) ); /* set h2[] in Q11*/ - cb_shape_fx( 1, 1, 0, sharpFlag, 0, g1, g2, p_Aq, h2, tilt_code, shr( add( pt_pitch, 26 ), 6 ), 0, L_SUBFR ); + cb_shape_fx(1, 1, 0, sharpFlag, 0, g1, g2, p_Aq, h2, tilt_code, shr(add(pt_pitch, 26), 6), 0, L_SUBFR); /* h2: Q11, Rw: (Rw_e)Q */ - corr_hh_ivas_fx( h2, Rw, &Rw_q, L_subfr ); // Q(Rw) = Q11-2 - E_ACELP_conv_ivas_fx( xn2, h2, cn ); // Qcn = Qxn2 + /* Rw_e = */ E_ACELP_hh_corr(h2, Rw, L_SUBFR, 3); + + E_ACELP_conv(xn2, h2, cn); /* dn_e -> Rw_e*Q_xn */ - j = E_ACELP_toeplitz_mul_fx( Rw, cn, dn, L_SUBFR, 1 ); - Qdn = add( add( Qxn, Rw_q ), add( j, 1 ) ); + /*dn_e = */ E_ACELP_toeplitz_mul_fx(Rw, cn, dn, L_SUBFR, 1); + Qdn = Qcn; + move16(); } ELSE { @@ -442,6 +444,19 @@ Word16 inov_encode_ivas_fx( Scale_sig( h2, L_SUBFR, sub( 11, q_h1 ) ); /* set h2[] in Q11*/ cb_shape_fx( 1, 1, 0, sharpFlag, 0, g1, g2, p_Aq, h2, tilt_code, shr( add( pt_pitch, 26 ), 6 ), 0, L_subfr ); corr_xh_ivas_fx( xn2, Qxn, dn, &Qdn, h2, L_subfr ); // Q(dn) = Q_new+1 + IF( LT_16( Qdn, Qcn ) ) + { + scale_sig( cn, L_subfr, sub(Qdn, Qcn) ); + Qcn = Qdn; + move16(); + } + ELSE + { + scale_sig( dn, L_subfr, sub(Qcn, Qdn) ); + Qdn = Qcn; + move16(); + } + } /*-----------------------------------------------------------------* @@ -607,7 +622,7 @@ Word16 inov_encode_ivas_fx( } ELSE { - acelp_fast_fx( hBstr, nBits, dn, Qdn, cn, Q_new, h2, code, y2, L_subfr ); + acelp_fast_fx( hBstr, nBits, dn, Qdn, cn, Qcn, h2, code, y2, L_subfr ); } } ELSE IF( ( EQ_16( st_fx->idchan, 1 ) && LE_16( st_fx->acelp_cfg.fixed_cdk_index[idx2], 7 ) ) || ( st_fx->idchan == 0 && LE_16( st_fx->acelp_cfg.fixed_cdk_index[idx2], 3 ) ) ) @@ -618,7 +633,7 @@ Word16 inov_encode_ivas_fx( } ELSE { - acelp_fast_fx( hBstr, st_fx->acelp_cfg.fixed_cdk_index[idx2], dn, Qdn, cn, Q_new, h2, code, y2, L_SUBFR ); + acelp_fast_fx( hBstr, st_fx->acelp_cfg.fixed_cdk_index[idx2], dn, Qdn, cn, Qcn, h2, code, y2, L_SUBFR ); } } ELSE diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 2d7e708bb..05bb16832 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -2334,22 +2334,8 @@ void find_targets_fx( Word16 *cn, /* o : target vector in residual domain Q_new*/ Word16 *h1 /* o : impulse response of weighted synthesis filter Q14*/ ); -void find_targets_ivas_fx( - const Word16 *speech, /* i : pointer to the speech frame Q_new-1*/ - const Word16 *mem_syn, /* i : memory of the synthesis filter Q_new-1*/ - const Word16 i_subfr, /* i : subframe index Q0*/ - Word16 *mem_w0, /* i/o: weighting filter denominator memory Q_new-1*/ - const Word16 *p_Aq, /* i : interpolated quantized A(z) filter Q12*/ - const Word16 *res, /* i : residual signal Q_new*/ - const Word16 L_subfr, /* i : length of vectors for gain quantization Q0*/ - const Word16 *Ap, /* i : unquantized A(z) filter with bandwidth expansion Q12*/ - Word16 tilt_fac, /* i : tilt factor Q15*/ - Word16 *xn, /* o : Close-loop Pitch search target vector Q_new-1*/ - Word16 *cn, /* o : target vector in residual domain Q_new*/ - Word16 *h1 /* o : impulse response of weighted synthesis filter Q(14 - norm_s(h1[0]))*/ -); -void find_targets_ivas_new_fx( +void find_targets_ivas_fx( const Word16 *speech, /* i : pointer to the speech frame Q_new-1*/ const Word16 *mem_syn, /* i : memory of the synthesis filter Q_new-1*/ const Word16 i_subfr, /* i : subframe index Q0*/ -- GitLab From 89c0af8f9c3de8b0fa689f96e4280438f1cc066b Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 10:48:05 +0530 Subject: [PATCH 481/698] Clang formatting changes --- lib_enc/acelp_core_switch_enc_fx.c | 2 +- lib_enc/corr_xh_fx.c | 2 +- lib_enc/enc_gen_voic_fx.c | 2 +- lib_enc/enc_pit_exc_fx.c | 2 +- lib_enc/enc_tran_fx.c | 2 +- lib_enc/inov_enc_fx.c | 13 ++++++------- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/lib_enc/acelp_core_switch_enc_fx.c b/lib_enc/acelp_core_switch_enc_fx.c index 4852cb567..bad70b08c 100644 --- a/lib_enc/acelp_core_switch_enc_fx.c +++ b/lib_enc/acelp_core_switch_enc_fx.c @@ -629,7 +629,7 @@ static void encod_gen_voic_core_switch_ivas_fx( ELSE { weight_a_fx( A, Ap, GAMMA1, M ); /* Bandwidth expansion of A(z) filter coefficients */ - find_targets_ivas_fx( inp, hLPDmem->mem_syn, 0, &( hLPDmem->mem_w0 ), Aq, res, L_SUBFR, Ap, TILT_FAC_FX, xn, cn, h1 ); + find_targets_ivas_fx( inp, hLPDmem->mem_syn, 0, &( hLPDmem->mem_w0 ), Aq, res, L_SUBFR, Ap, TILT_FAC_FX, xn, cn, h1 ); } q_h1 = sub( 14, norm_s( h1[0] ) ); diff --git a/lib_enc/corr_xh_fx.c b/lib_enc/corr_xh_fx.c index 5fb7c628a..56b22c206 100644 --- a/lib_enc/corr_xh_fx.c +++ b/lib_enc/corr_xh_fx.c @@ -161,7 +161,7 @@ void corr_xh_ivas_fx( y32[i] = L_tmp; // Qx+(14 - norm_s(h[0])) + 1 move32(); L_tmp = L_abs( L_tmp ); - L_maxloc = L_max( L_tmp, L_maxloc ); // Qx+(14 - norm_s(h[0])) +1 + L_maxloc = L_max( L_tmp, L_maxloc ); // Qx+(14 - norm_s(h[0])) +1 } /* tot += 3*max / 8 */ L_maxloc = L_shr( L_maxloc, 2 ); diff --git a/lib_enc/enc_gen_voic_fx.c b/lib_enc/enc_gen_voic_fx.c index bb305e9c9..3ff99812f 100644 --- a/lib_enc/enc_gen_voic_fx.c +++ b/lib_enc/enc_gen_voic_fx.c @@ -563,7 +563,7 @@ void encod_gen_voic_ivas_fx( Copy( &res_fx[i_subfr_fx], &exc_fx[i_subfr_fx], L_SUBFR ); /*Q_new*/ find_targets_ivas_fx( speech_fx, hLPDmem->mem_syn, i_subfr_fx, &hLPDmem->mem_w0, p_Aq_fx, - res_fx, L_SUBFR, p_Aw_fx, st_fx->preemph_fac, xn_fx, cn_fx, h1_fx ); + res_fx, L_SUBFR, p_Aw_fx, st_fx->preemph_fac, xn_fx, cn_fx, h1_fx ); q_h1 = sub( 14, norm_s( h1_fx[0] ) ); Copy_Scale_sig( h1_fx, h2_fx, L_SUBFR, sub( 11, q_h1 ) ); /*Q11*/ diff --git a/lib_enc/enc_pit_exc_fx.c b/lib_enc/enc_pit_exc_fx.c index e87462988..bfdf46ea0 100644 --- a/lib_enc/enc_pit_exc_fx.c +++ b/lib_enc/enc_pit_exc_fx.c @@ -722,7 +722,7 @@ void enc_pit_exc_ivas_fx( /* condition on target (compared to float) has been put outside the loop */ find_targets_ivas_fx( speech, hGSCEnc->mem_syn_tmp_fx, i_subfr, &hGSCEnc->mem_w0_tmp_fx, p_Aq, - res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); + res, L_subfr, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); q_h1 = sub( 14, norm_s( h1[0] ) ); Copy_Scale_sig( h1, h2, L_subfr, sub( 11, q_h1 ) ); /*Q11*/ diff --git a/lib_enc/enc_tran_fx.c b/lib_enc/enc_tran_fx.c index c92e1b6db..dde834b2b 100644 --- a/lib_enc/enc_tran_fx.c +++ b/lib_enc/enc_tran_fx.c @@ -547,7 +547,7 @@ Word16 encod_tran_ivas_fx( find_targets_ivas_fx( speech_fx, hLPDmem->mem_syn, i_subfr, &hLPDmem->mem_w0, p_Aq, - res_fx, L_SUBFR, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); + res_fx, L_SUBFR, p_Aw, st_fx->preemph_fac, xn, cn, h1 ); q_h1 = sub( 14, norm_s( h1[0] ) ); Copy_Scale_sig( h1, h2_fx, L_SUBFR, sub( 11, q_h1 ) ); /*Q11*/ diff --git a/lib_enc/inov_enc_fx.c b/lib_enc/inov_enc_fx.c index 62ea723a3..d019bf474 100644 --- a/lib_enc/inov_enc_fx.c +++ b/lib_enc/inov_enc_fx.c @@ -422,14 +422,14 @@ Word16 inov_encode_ivas_fx( { acelpautoc = 1; move16(); - cb_shape_fx(1, 1, 0, sharpFlag, 0, g1, g2, p_Aq, h2, tilt_code, shr(add(pt_pitch, 26), 6), 0, L_SUBFR); + cb_shape_fx( 1, 1, 0, sharpFlag, 0, g1, g2, p_Aq, h2, tilt_code, shr( add( pt_pitch, 26 ), 6 ), 0, L_SUBFR ); /* h2: Q11, Rw: (Rw_e)Q */ - /* Rw_e = */ E_ACELP_hh_corr(h2, Rw, L_SUBFR, 3); + /* Rw_e = */ E_ACELP_hh_corr( h2, Rw, L_SUBFR, 3 ); - E_ACELP_conv(xn2, h2, cn); + E_ACELP_conv( xn2, h2, cn ); /* dn_e -> Rw_e*Q_xn */ - /*dn_e = */ E_ACELP_toeplitz_mul_fx(Rw, cn, dn, L_SUBFR, 1); + /*dn_e = */ E_ACELP_toeplitz_mul_fx( Rw, cn, dn, L_SUBFR, 1 ); Qdn = Qcn; move16(); } @@ -446,17 +446,16 @@ Word16 inov_encode_ivas_fx( corr_xh_ivas_fx( xn2, Qxn, dn, &Qdn, h2, L_subfr ); // Q(dn) = Q_new+1 IF( LT_16( Qdn, Qcn ) ) { - scale_sig( cn, L_subfr, sub(Qdn, Qcn) ); + scale_sig( cn, L_subfr, sub( Qdn, Qcn ) ); Qcn = Qdn; move16(); } ELSE { - scale_sig( dn, L_subfr, sub(Qcn, Qdn) ); + scale_sig( dn, L_subfr, sub( Qcn, Qdn ) ); Qdn = Qcn; move16(); } - } /*-----------------------------------------------------------------* -- GitLab From 0a393ee24aa2a754f068ff36f72e760f812482ba Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Wed, 7 May 2025 08:24:39 +0200 Subject: [PATCH 482/698] removed the pop_wmops() --- lib_enc/ivas_cpe_enc_fx.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index 19a850a89..d0a33ed09 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -336,7 +336,6 @@ ivas_error ivas_cpe_enc_fx( &q_band_energies_LR, NULL, NULL, NULL, Q_inp, Q_buffer, Q_add, &front_create_flag ) ), IVAS_ERR_OK ) ) { - pop_wmops(); return error; } @@ -370,7 +369,6 @@ ivas_error ivas_cpe_enc_fx( *----------------------------------------------------------------*/ IF( ( error = stereo_memory_enc_fx( hCPE, input_Fs, max_bwidth, ivas_format, st_ivas->nchan_transport ) ) != IVAS_ERR_OK ) { - pop_wmops(); return error; } @@ -381,7 +379,6 @@ ivas_error ivas_cpe_enc_fx( IF( ( error = stereo_set_tdm_fx( hCPE, input_frame, sts[1]->q_inp32 ) ) != IVAS_ERR_OK ) { - pop_wmops(); return error; } @@ -919,7 +916,6 @@ ivas_error ivas_cpe_enc_fx( move16(); IF( error != IVAS_ERR_OK ) { - pop_wmops(); return error; } } @@ -994,7 +990,6 @@ ivas_error ivas_cpe_enc_fx( igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->rf_mode ); /* Q0 */ IF( ( error = IGF_Reconfig_fx( &sts[n]->hIGFEnc, igf, 0, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->element_mode, sts[n]->rf_mode ) ) != IVAS_ERR_OK ) { - pop_wmops(); return error; } } @@ -1023,7 +1018,6 @@ ivas_error ivas_cpe_enc_fx( { IF( ( error = initMdctItdHandling_fx( hCPE->hStereoMdct, input_Fs ) ) != IVAS_ERR_OK ) { - pop_wmops(); return error; } } @@ -1200,7 +1194,6 @@ ivas_error ivas_cpe_enc_fx( } IF( NE_32( ( error = ivas_core_enc_fx( NULL, hCPE, st_ivas->hMCT, n_CoreChannels, old_inp_12k8_16fx, old_inp_16k_16fx, Q_new, ener_fx, A_fx, Aw_fx, epsP_fx, epsP_fx_q, lsp_new_fx, lsp_mid_fx, vad_hover_flag, attack_flag, realBuffer_fx, imagBuffer_fx, q_re_im_buf, old_wsp_fx, e_old_wsp, loc_harm, cor_map_sum_fx, vad_flag_dtx, enerBuffer_fx, enerBuffer_fx_exp, fft_buff_fx, tdm_SM_or_LRTD_Pri, ivas_format, 0 ) ), IVAS_ERR_OK ) ) { - pop_wmops(); return error; } -- GitLab From 79bbea04f183761a567c9055f58c54de02af8dfd Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 7 May 2025 10:32:30 +0200 Subject: [PATCH 483/698] port FIX_997_REMOVE_SPAR_DEC_UPMIXER --- lib_com/options.h | 1 + lib_dec/ivas_spar_decoder_fx.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index c568a52fa..503f5bb8d 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -101,6 +101,7 @@ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define FIX_969_USAN_IGF_ARITH /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */ +#define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c index 38b403606..737a42c98 100644 --- a/lib_dec/ivas_spar_decoder_fx.c +++ b/lib_dec/ivas_spar_decoder_fx.c @@ -1534,12 +1534,20 @@ void ivas_spar_dec_set_render_map_fx( return; } +#ifdef FIX_997_REMOVE_SPAR_DEC_UPMIXER +/*-------------------------------------------------------------------* + * ivas_spar_dec_set_render_params() + * + * IVAS SPAR set rendering parameters + *-------------------------------------------------------------------*/ +#else /*-------------------------------------------------------------------* * ivas_spar_dec_upmixer() * * IVAS SPAR upmixer *-------------------------------------------------------------------*/ +#endif void ivas_spar_dec_set_render_params_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ -- GitLab From 11a2331d7320e6ddc5d147e93044317a6e0052d7 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 7 May 2025 10:59:43 +0200 Subject: [PATCH 484/698] port FIX_699_FILE_READER_JBM_TSM --- apps/encoder.c | 4 ++++ lib_com/options.h | 1 + 2 files changed, 5 insertions(+) diff --git a/apps/encoder.c b/apps/encoder.c index af9554589..193587f31 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -681,7 +681,11 @@ int main( { if ( ( error = JbmFileReader_readCAconfig( jbmReader, &caConfig ) ) != IVAS_ERR_OK ) { +#ifdef FIX_699_FILE_READER_JBM_TSM + fprintf( stderr, "\nError (%s) while reading Channel-Aware Config. from: %s\n\n", IVAS_ENC_GetErrorMessage( error ), JbmFileReader_getFilePath( jbmReader ) ); +#else fprintf( stderr, "JbmFileReader_readCAconfig() failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); +#endif goto cleanup; } diff --git a/lib_com/options.h b/lib_com/options.h index c568a52fa..269f1004c 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -101,6 +101,7 @@ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define FIX_969_USAN_IGF_ARITH /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */ +#define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ /* #################### End BASOP porting switches ############################ */ -- GitLab From 0e4cf38fb376789c6fda4bb44c2ada3155554464 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 7 May 2025 11:13:59 +0200 Subject: [PATCH 485/698] port FIX_993_REMOVE_SBA_GET_ORDER --- lib_com/ivas_prot_fx.h | 3 ++- lib_com/ivas_sba_config_fx.c | 8 ++++++-- lib_com/options.h | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 6c9166111..5c396140f 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -4937,12 +4937,13 @@ ivas_error ivas_cldfb_dec_reconfig_fx( ivas_error ivas_sba_enc_reconfigure_fx( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ ); - +#ifndef FIX_993_REMOVE_SBA_GET_ORDER Word16 ivas_sba_get_order_fx( const Word16 nb_channels, /* i : Number of ambisonic channels */ const Word16 sba_planar /* i : SBA planar flag */ ); +#endif /*! r: Ambisonic (SBA) order used for analysis and coding */ Word16 ivas_sba_get_analysis_order( const Word32 ivas_total_brate, /* i : IVAS total bitrate */ diff --git a/lib_com/ivas_sba_config_fx.c b/lib_com/ivas_sba_config_fx.c index b3a0806d4..6dbe215ea 100644 --- a/lib_com/ivas_sba_config_fx.c +++ b/lib_com/ivas_sba_config_fx.c @@ -60,6 +60,7 @@ void ivas_sba_config_fx( Word16 *element_mode /* o : element mode of the core coder */ ) { +#ifndef FIX_993_REMOVE_SBA_GET_ORDER test(); IF( sba_order < 0 && nb_channels < 0 ) { @@ -74,6 +75,9 @@ void ivas_sba_config_fx( nb_channels = ivas_sba_get_nchan_fx( sba_order, sba_planar ); } ELSE +#else + IF( nb_channels > 0 ) +#endif { IF( sba_planar ) { @@ -124,7 +128,7 @@ void ivas_sba_config_fx( return; } - +#ifndef FIX_993_REMOVE_SBA_GET_ORDER /*-------------------------------------------------------------------* * ivas_sba_get_order() * @@ -174,7 +178,7 @@ Word16 ivas_sba_get_order_fx( return ( sba_order ); } - +#endif /*-------------------------------------------------------------------* * ivas_sba_get_analysis_order() diff --git a/lib_com/options.h b/lib_com/options.h index c568a52fa..1b05236bb 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -101,6 +101,7 @@ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define FIX_969_USAN_IGF_ARITH /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */ +#define FIX_993_REMOVE_SBA_GET_ORDER /* VA: issue 993: remove unused function ivas_sba_get_order() */ /* #################### End BASOP porting switches ############################ */ -- GitLab From ec12834622a01b2833817478d5d10c450a43f476 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 7 May 2025 11:20:16 +0200 Subject: [PATCH 486/698] remove sum_l() leftover --- lib_com/prot_fx.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 45641b3f8..afae8dfbf 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -11252,12 +11252,6 @@ int16_t sum_s( const int16_t lvec /* i : length of input vector */ ); -/*! r: sum of all vector elements */ -int32_t sum_l( - const int32_t *vec, /* i : input vector */ - const int16_t lvec /* i : length of input vector */ -); - /*! r: sum of all squared vector elements */ float sum2_f( const float *vec, /* i : input vector */ -- GitLab From 59ddeb18819bb6400722762c280b2ceb809eab3a Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 14:54:52 +0530 Subject: [PATCH 487/698] Bug fixes in front vad and pre-proc front functions --- lib_enc/analy_sp_fx.c | 2 +- lib_enc/ivas_core_pre_proc_front_fx.c | 83 ++++++++------------------- lib_enc/ivas_front_vad_fx.c | 6 +- 3 files changed, 27 insertions(+), 64 deletions(-) diff --git a/lib_enc/analy_sp_fx.c b/lib_enc/analy_sp_fx.c index 49bb03f57..dc59ec752 100644 --- a/lib_enc/analy_sp_fx.c +++ b/lib_enc/analy_sp_fx.c @@ -620,7 +620,7 @@ void ivas_analy_sp_fx( *q_fr_bands = add( *q_fr_bands, exp ); move16(); - exp = sub( getScaleFactor32( band_energies, 2 * NB_BANDS ), 1 ); + exp = getScaleFactor32( band_energies, 2 * NB_BANDS ); scale_sig32( band_energies, 2 * NB_BANDS, exp ); /* q_band_energies + exp */ *q_band_energies = add( *q_band_energies, exp ); move16(); diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index 4a8c4edd2..e883d9ec1 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -945,78 +945,41 @@ ivas_error pre_proc_front_ivas_fx( test(); IF( st->idchan == 0 || EQ_16( element_mode, IVAS_CPE_MDCT ) ) { - test(); - test(); - IF( EQ_16( element_mode, IVAS_CPE_TD ) && lr_vad_enabled && band_energies_LR_fx != NULL ) + Word16 norm; + norm = L_norm_arr( st->hFdCngEnc->msPeriodog_fx, NPART ); + IF( NE_16( norm, Q31 ) ) { - Word16 normmsPeriodog_fx = Q31, zero_flag = 0; - move16(); - move16(); - zero_flag = get_zero_flag( st->hFdCngEnc->msPeriodog_fx, NPART ); - IF( zero_flag ) - { - normmsPeriodog_fx = getScaleFactor32( st->hFdCngEnc->msPeriodog_fx, NPART ); - move16(); - } - st->hFdCngEnc->msPeriodog_fx_exp_cldfb = sub( 31, normmsPeriodog_fx ); - st->hFdCngEnc->msPeriodog_fx_exp_fft = sub( 31, normmsPeriodog_fx ); + scale_sig32( st->hFdCngEnc->msPeriodog_fx, NPART, norm ); // exp:st->hFdCngEnc->msPeriodog_fx_exp-norm + st->hFdCngEnc->msPeriodog_fx_exp = sub( st->hFdCngEnc->msPeriodog_fx_exp, norm ); + st->hFdCngEnc->msPeriodog_fx_exp_cldfb = sub( st->hFdCngEnc->msPeriodog_fx_exp_cldfb, norm ); + st->hFdCngEnc->msPeriodog_fx_exp_fft = sub( st->hFdCngEnc->msPeriodog_fx_exp_fft, norm ); move16(); move16(); - Scale_sig32( st->hFdCngEnc->msPeriodog_fx, NPART, normmsPeriodog_fx ); /* exp(st->hFdCngEnc->msPeriodog_fx_exp - normmsPeriodog_fx) */ - st->hFdCngEnc->msPeriodog_fx_exp = sub( st->hFdCngEnc->msPeriodog_fx_exp, normmsPeriodog_fx ); - Word16 msNoiseEst_Q = Q31; move16(); + } + norm = L_norm_arr( st->hFdCngEnc->msNoiseEst_old_fx, NPART ); + IF( NE_16( norm, Q31 ) ) + { + scale_sig32( st->hFdCngEnc->msNoiseEst_old_fx, NPART, norm ); // exp:st->hFdCngEnc->msNoiseEst_old_fx_exp-norm + st->hFdCngEnc->msNoiseEst_old_fx_exp = sub( st->hFdCngEnc->msNoiseEst_old_fx_exp, norm ); move16(); - zero_flag = get_zero_flag( st->hFdCngEnc->msNoiseEst_old_fx, NPART ); - IF( zero_flag ) - { - msNoiseEst_Q = getScaleFactor32( st->hFdCngEnc->msNoiseEst_old_fx, NPART ); - scale_sig32( st->hFdCngEnc->msNoiseEst_old_fx, NPART, msNoiseEst_Q ); /* exp(st->hFdCngEnc->msNoiseEst_old_fx_exp - msNoiseEst_Q) */ - st->hFdCngEnc->msNoiseEst_old_fx_exp = sub( st->hFdCngEnc->msNoiseEst_old_fx_exp, msNoiseEst_Q ); - move16(); - } + } + + test(); + test(); + IF( EQ_16( element_mode, IVAS_CPE_TD ) && lr_vad_enabled && band_energies_LR_fx != NULL ) + { perform_noise_estimation_enc_ivas_fx( band_energies_LR_fx, sub( Q31, band_energies_LR_fx_q ), enerBuffer_fx, *enerBuffer_fx_exp, st->hFdCngEnc, input_Fs, hCPE ); } ELSE { - Word16 normmsPeriodog_fx = Q31, zero_flag = 0; - move16(); - move16(); - shift = getScaleFactor32( band_energies_fx, 2 * NB_BANDS ); - scale_sig32( band_energies_fx, 2 * NB_BANDS, shift ); - q_band_energies = add( q_band_energies, shift ); - - zero_flag = get_zero_flag( st->hFdCngEnc->msPeriodog_fx, NPART ); /* Q0 */ - IF( zero_flag ) - { - normmsPeriodog_fx = getScaleFactor32( st->hFdCngEnc->msPeriodog_fx, NPART ); - } - st->hFdCngEnc->msPeriodog_fx_exp_cldfb = sub( 31, normmsPeriodog_fx ); - st->hFdCngEnc->msPeriodog_fx_exp_fft = sub( 31, normmsPeriodog_fx ); - move16(); - move16(); - Scale_sig32( st->hFdCngEnc->msPeriodog_fx, NPART, normmsPeriodog_fx ); /* exp(st->hFdCngEnc->msPeriodog_fx_exp - normmsPeriodog_fx)*/ - st->hFdCngEnc->msPeriodog_fx_exp = sub( st->hFdCngEnc->msPeriodog_fx_exp, normmsPeriodog_fx ); - move16(); - Word16 msNoiseEst_Q = Q31; - move16(); - zero_flag = get_zero_flag( st->hFdCngEnc->msNoiseEst_old_fx, NPART ); /* Q0 */ - IF( zero_flag ) + norm = L_norm_arr( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN ); + IF( NE_16( norm, Q31 ) ) { - msNoiseEst_Q = getScaleFactor32( st->hFdCngEnc->msNoiseEst_old_fx, NPART ); - scale_sig32( st->hFdCngEnc->msNoiseEst_old_fx, NPART, msNoiseEst_Q ); /* exp(st->hFdCngEnc->msNoiseEst_old_fx_exp - msNoiseEst_Q) */ - st->hFdCngEnc->msNoiseEst_old_fx_exp = sub( st->hFdCngEnc->msNoiseEst_old_fx_exp, msNoiseEst_Q ); + scale_sig32( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN, norm ); // exp:st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog-norm + st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog = sub( st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog, norm ); move16(); } - zero_flag = get_zero_flag( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN ); /* Q0 */ - Word16 normmsperiodog = 31; - move16(); - IF( zero_flag ) - { - normmsperiodog = getScaleFactor32( st->hFdCngEnc->hFdCngCom->periodog, PERIODOGLEN ); - } - st->hFdCngEnc->hFdCngCom->exp_cldfb_periodog = sub( 31, normmsperiodog ); - move16(); perform_noise_estimation_enc_ivas_fx( band_energies_fx, sub( Q31, q_band_energies ), enerBuffer_fx, *enerBuffer_fx_exp, st->hFdCngEnc, input_Fs, hCPE ); } diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c index fff68e5a2..ab090edb8 100644 --- a/lib_enc/ivas_front_vad_fx.c +++ b/lib_enc/ivas_front_vad_fx.c @@ -241,9 +241,9 @@ ivas_error front_vad_fx( PREEMPH_FX( hFrontVad->buffer_12k8_fx + L_FFT / 2, PREEMPH_FAC, L_FRAME, &hFrontVad->mem_preemph_fx ); - Q_new = add( sub( Q_inp, Qband ), Q_add ); - Scale_sig( hFrontVad->buffer_12k8_fx, L_FFT / 2, sub( Q_new, Q_buffer[n] ) ); /* Q_new */ - Scale_sig( hFrontVad->buffer_12k8_fx + L_FFT / 2, 384 - L_FFT / 2, sub( Q_new, add( Q_inp, Qband ) ) ); /* Q_new */ + Q_new = s_min( add( add( Q_inp, Qband ), Q_add ), Q_buffer[n] ); + scale_sig( hFrontVad->buffer_12k8_fx, L_FFT / 2, sub( Q_new, Q_buffer[n] ) ); /* Q_new */ + scale_sig( hFrontVad->buffer_12k8_fx + L_FFT / 2, 3 * L_FRAME / 2 - L_FFT / 2, sub( Q_new, add( Q_inp, Qband ) ) ); /* Q_new */ Q_buffer[n] = Q_new; move16(); -- GitLab From beed21040591e3ca90fe6c83970e3e67cc2df37b Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 6 May 2025 10:57:48 +0530 Subject: [PATCH 488/698] Fix for 3GPP issue 1542: One bit systematic error between BASOP and float decoder MASA EXT output of energy ratios Link #1542 --- lib_dec/ivas_masa_dec_fx.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c index dec4d3465..039ad4137 100644 --- a/lib_dec/ivas_masa_dec_fx.c +++ b/lib_dec/ivas_masa_dec_fx.c @@ -2572,13 +2572,9 @@ static void create_masa_ext_out_meta_fx( { FOR( b_new = bandMap[b_old]; b_new < bandMap[b_old + 1]; b_new++ ) { - IF( EQ_32( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], ONE_IN_Q30 ) ) - { - hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf]--; - } - UWord8 tmp = (UWord8) L_shr( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], Q30 - 8 ); // Q8 + UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); //Q0 move16(); - extOutMeta->directToTotalRatio[dir][sf][b_new] = tmp; // Q8 + extOutMeta->directToTotalRatio[dir][sf][b_new] = tmp; // Q0 move16(); } } @@ -2637,12 +2633,8 @@ static void create_masa_ext_out_meta_fx( move16(); FOR( dir = 0; dir < numDirections; dir++ ) { - /* todo: not optimal, but less invasive */ - IF( EQ_32( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], ONE_IN_Q30 ) ) - { - hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf]--; - } - UWord8 tmp = (UWord8) L_shr( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], Q30 - 8 ); // Q8 + + UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); //Q0 move16(); extOutMeta->diffuseToTotalRatio[sf][b_new] = (UWord8) sub( extOutMeta->diffuseToTotalRatio[sf][b_new], tmp ); // Q8 move16(); -- GitLab From fb5f45affe1237b29fe3a4fbff3c636209363555 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 6 May 2025 11:44:11 +0530 Subject: [PATCH 489/698] Clang formatting changes --- lib_dec/ivas_masa_dec_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c index 039ad4137..36900867e 100644 --- a/lib_dec/ivas_masa_dec_fx.c +++ b/lib_dec/ivas_masa_dec_fx.c @@ -2572,7 +2572,7 @@ static void create_masa_ext_out_meta_fx( { FOR( b_new = bandMap[b_old]; b_new < bandMap[b_old + 1]; b_new++ ) { - UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); //Q0 + UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); // Q0 move16(); extOutMeta->directToTotalRatio[dir][sf][b_new] = tmp; // Q0 move16(); @@ -2634,7 +2634,7 @@ static void create_masa_ext_out_meta_fx( FOR( dir = 0; dir < numDirections; dir++ ) { - UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); //Q0 + UWord8 tmp = (UWord8) W_extract_h( W_mult_32_16( hQMetaData->q_direction[dir].band_data[b_old].energy_ratio_fx[sf], UINT8_MAX << 1 ) ); // Q0 move16(); extOutMeta->diffuseToTotalRatio[sf][b_new] = (UWord8) sub( extOutMeta->diffuseToTotalRatio[sf][b_new], tmp ); // Q8 move16(); -- GitLab From 1f7ede4373cf94a1851008823c4dbe6bfaf0905b Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 16:43:09 +0530 Subject: [PATCH 490/698] Fix for new stream shared --- lib_com/prot_fx.h | 6 ++++++ lib_com/tools_fx.c | 24 ++++++++++++++++++++++++ lib_dec/ivas_qmetadata_dec_fx.c | 25 ++++++++++++++++--------- 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index f422d5e50..912b3b713 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -9969,6 +9969,12 @@ Word16 usdequant_fx( /* Qx*/ const Word16 delta /* i: quantization step Qy*/ ); +Word32 usdequant32_fx( /* Qx*/ + const Word16 idx, /* i: quantizer index Q0*/ + const Word32 qlow, /* i: lowest codebook entry (index 0) Qx*/ + const Word32 delta /* i: quantization step Qy*/ +); + Word16 usquant_fx( /* o: index of the winning codeword */ const Word16 x, /* i: scalar value to quantize Qx*/ Word16 *xq, /* o: quantized value Qx*/ diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 44a86b0eb..a4c0c5484 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -284,6 +284,30 @@ Word16 usdequant_fx( /* Qx*/ return ( g ); } +Word32 usdequant32_fx( /* Qx*/ + const Word16 idx, /* i: quantizer index Q0*/ + const Word32 qlow, /* i: lowest codebook entry (index 0) Qx*/ + const Word32 delta /* i: quantization step Qx-1*/ +) +{ + Word32 g; + Word64 L_tmp; + + /*g = idx * delta + qlow;*/ + L_tmp = W_deposit32_l( qlow ); /*Qx */ + L_tmp = W_mac_32_16( L_tmp, delta, idx ); + IF( GE_64( L_tmp, MAX_32 ) ) + { + g = MAX_32; + move32(); + } + ELSE + { + g = W_extract_l(L_tmp); /*Qx */ + } + return ( g ); +} + /*-------------------------------------------------------------------* * usquant() * diff --git a/lib_dec/ivas_qmetadata_dec_fx.c b/lib_dec/ivas_qmetadata_dec_fx.c index 6e36c7765..c1be6caf8 100644 --- a/lib_dec/ivas_qmetadata_dec_fx.c +++ b/lib_dec/ivas_qmetadata_dec_fx.c @@ -72,8 +72,7 @@ static Word16 read_coherence_data_fx( UWord16 *bitstream, Word16 *p_bit_pos, IVA static Word16 ivas_qmetadata_raw_decode_dir_512_fx( IVAS_QDIRECTION *q_direction, UWord16 *bitstream, Word16 *index, const Word16 nbands, const Word16 start_band, const SPHERICAL_GRID_DATA *sph_grid16 ); static Word16 read_surround_coherence( UWord16 *bitstream, Word16 *p_bit_pos, IVAS_QMETADATA *hQMetaData ); static ivas_error read_huf( Word16 *num_bits_read, const UWord16 *bitstream, UWord16 *out, const Word16 start_pos, const Word16 len, const Word16 *huff_code, const Word16 max_len ); -const Word16 inv_dfRatio_qsteps[9] = { 0, 0, ONE_IN_Q14, 0, 5461, 0, 0, 0, 2341 }; // Q14 - +const Word32 inv_dfRatio_qsteps[9] = { 0, 0, ONE_IN_Q30, 0, 357913941, 0, 0, 0, 153391689 }; // Q30 /*-----------------------------------------------------------------------* * Global function definitions @@ -223,7 +222,7 @@ Word16 ivas_qmetadata_dec_decode( IF( EQ_16( hQMetaData->twoDirBands[b], 1 ) ) { Word32 diffRatio_fx, dir1ratio_fx, dir2ratio_fx; - Word16 dfRatio_fx; + Word32 dfRatio_fx; Word16 dfRatio_qsteps; diffRatio_fx = diffuseness_reconstructions_fx[hQMetaData->q_direction[0].band_data[b].energy_ratio_index[0]]; // Q30 @@ -233,17 +232,25 @@ Word16 ivas_qmetadata_dec_decode( /* already encoded as total and ratios in HO-DirAC */ IF( hodirac_flag ) { - - dfRatio_fx = usdequant_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], 0 /* Q15 */, inv_dfRatio_qsteps[dfRatio_qsteps] ); // Q15 + dfRatio_fx = usdequant32_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], 0 /* Q15 */, inv_dfRatio_qsteps[dfRatio_qsteps] ); // Q31 dir1ratio_fx = L_sub( ONE_IN_Q30, diffRatio_fx ); - dir2ratio_fx = L_shl( (Word32) dfRatio_fx, Q15 ); /*Q30*/ + dir2ratio_fx = L_shr( dfRatio_fx, 1 ); /*Q30*/ } ELSE { - dfRatio_fx = usdequant_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], shr( MAX_16, 1 ), shr( inv_dfRatio_qsteps[dfRatio_qsteps], 1 ) ); // Q15 + IF( EQ_16( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], sub( dfRatio_qsteps, 1 ) ) ) + { + dfRatio_fx = MAX_32; // Q31 + move16(); + dir1ratio_fx = L_sub( ONE_IN_Q30, diffRatio_fx ); // Q30 + } + ELSE + { + dfRatio_fx = usdequant32_fx( hQMetaData->q_direction[1].band_data[dir2band].energy_ratio_index[0], L_shr( MAX_32, 1 ), L_shr( inv_dfRatio_qsteps[dfRatio_qsteps], 1 ) ); // Q31 + dir1ratio_fx = Mpy_32_32( L_sub( ONE_IN_Q30, diffRatio_fx ), dfRatio_fx ); // Q30 + } - dir1ratio_fx = Mpy_32_16_1( L_sub( ONE_IN_Q30, diffRatio_fx ), dfRatio_fx ); // Q30 - dir2ratio_fx = L_sub( L_sub( ONE_IN_Q30, diffRatio_fx ), dir1ratio_fx ); // Q30 + dir2ratio_fx = L_sub( L_sub( ONE_IN_Q30, diffRatio_fx ), dir1ratio_fx ); // Q30 } /* Requantize the 1 - dirRatio separately for each direction to obtain inverted dirRatio index. These are used in further decoding. */ -- GitLab From 1497f24e8bc2e79aeae636a3430394d5c6828c7b Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 16:47:36 +0530 Subject: [PATCH 491/698] Clang formatting changes --- lib_com/prot_fx.h | 6 +++--- lib_com/tools_fx.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 912b3b713..9b78b44d8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -9970,9 +9970,9 @@ Word16 usdequant_fx( /* Qx*/ ); Word32 usdequant32_fx( /* Qx*/ - const Word16 idx, /* i: quantizer index Q0*/ - const Word32 qlow, /* i: lowest codebook entry (index 0) Qx*/ - const Word32 delta /* i: quantization step Qy*/ + const Word16 idx, /* i: quantizer index Q0*/ + const Word32 qlow, /* i: lowest codebook entry (index 0) Qx*/ + const Word32 delta /* i: quantization step Qy*/ ); Word16 usquant_fx( /* o: index of the winning codeword */ diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index a4c0c5484..14a97a034 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -303,7 +303,7 @@ Word32 usdequant32_fx( /* Qx*/ } ELSE { - g = W_extract_l(L_tmp); /*Qx */ + g = W_extract_l( L_tmp ); /*Qx */ } return ( g ); } -- GitLab From 68e750905d1ede809013fd7fd2a93764f9897fc7 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 6 May 2025 21:23:11 +0530 Subject: [PATCH 492/698] Fix for 3GPP issue 1449: OMASA Complexity measurement crashes Link #1449 --- lib_enc/ivas_masa_enc_fx.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index ceb5dec1d..9d0579d12 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -2463,19 +2463,23 @@ static void reduce_metadata_further_fx( } /* Determine if to merge over frequency instead of time */ - meanRatio = 0; - move32(); + W_tmp = 0; + move64(); FOR( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { FOR( band = 0; band < numCodingBands; band++ ) { - meanRatio = L_add( meanRatio, Mpy_32_32( hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[sf], energy[sf][band] ) ); // hMasa->data.q_energy - 1 + W_tmp = W_mac_32_16( W_tmp, Mpy_32_32( hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[sf], energy[sf][band] ), 1 ); // hMasa->data.q_energy } } + shift = W_norm( W_tmp ); + meanRatio = W_extract_h( W_shl( W_tmp, shift ) ); // Q:sub( add( hMasa->data.q_energy, shift ), 32 ) + shift = sub( 31, sub( add( hMasa->data.q_energy, shift ), 32 ) ); + IF( totalEnergySum != 0 ) { meanRatio = BASOP_Util_Divide3232_Scale_newton( meanRatio, totalEnergySum, &exp ); - exp = add( add( exp, 1 ), tmp2 ); // 31 - (hMasa->data.q_energy - 1) - 31 - hMasa->data.q_energy - tmp2 => 1 + tmp2 + exp = add( exp, sub( shift, sub( 31, add( hMasa->data.q_energy, tmp2 ) ) ) ); // exp + (shift - (31 - hMasa->data.q_energy - tmp2)) => 1 + tmp2 } ELSE { -- GitLab From 4fc3bd03def4d5cfdc82c15b2772ec97bf5f2c65 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 10:23:34 +0530 Subject: [PATCH 493/698] Fix for crash in acelp path --- lib_enc/set_impulse_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/set_impulse_fx.c b/lib_enc/set_impulse_fx.c index 9ad5f4a2c..d4dd73abe 100644 --- a/lib_enc/set_impulse_fx.c +++ b/lib_enc/set_impulse_fx.c @@ -285,10 +285,10 @@ static void convolve_tc_fx( L_sum = L_mult( g[0], h[n] ); /* Qx */ FOR( i = 1; i < len; i++ ) { - L_sum = L_mac( L_sum, g[i], h[n - i] ); /* Qx + 16 */ + L_sum = L_mac_sat( L_sum, g[i], h[n - i] ); /* Qx + 16 */ } - y[n] = round_fx( L_sum ); /* Qx */ + y[n] = round_fx_sat( L_sum ); /* Qx */ } } /*-------------------------------------------------------------------* -- GitLab From e123cac9ebda717c88eb823b15af0d206d4a6e34 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 16:54:37 +0530 Subject: [PATCH 494/698] Fix for decoder crash --- lib_dec/swb_tbe_dec_fx.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 890e0e5c8..a541ebf7b 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -618,6 +618,7 @@ void ivas_wb_tbe_dec_fx( move16(); Word32 dummy2[HILBERT_MEM_SIZE]; Word16 f, inc; + Word64 W_tmp; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -853,17 +854,20 @@ void ivas_wb_tbe_dec_fx( move16(); /* restrict this to 21 due to the Q factor requireemnt of the random number generator (keep 1 bit headroom) */ } - prev_pow = 0; - move32(); + W_tmp = 0; + move64(); IF( st_fx->element_mode > EVS_MONO ) { tmp = sub( shl( sub( st_fx->prev_Q_bwe_exc, 16 ), 1 ), 31 + 16 ); - prev_pow = L_shl_sat( 1407374848l /*0.00001f Q47*/, tmp ); /*Q(2*(st_fx->prev_Q_bwe_exc-16))*/ + W_tmp = L_shl( 1407374848l /*0.00001f Q47*/, tmp ); /*Q(2*(st_fx->prev_Q_bwe_exc-16))*/ } FOR( i = 0; i < L_SHB_LAHEAD / 4; i++ ) { - prev_pow = L_mac0( prev_pow, hBWE_TD->state_syn_shbexc_fx[i], hBWE_TD->state_syn_shbexc_fx[i] ); /*Q(2*(st_fx->prev_Q_bwe_exc-16))*/ + W_tmp = W_mac_16_16( W_tmp, hBWE_TD->state_syn_shbexc_fx[i], hBWE_TD->state_syn_shbexc_fx[i] ); /*Q(2*(st_fx->prev_Q_bwe_exc-16 + 1))*/ } + exp = W_norm( W_tmp ); + prev_pow = W_extract_h( W_shl( W_tmp, exp ) ); + exp = sub( add( add( shl( sub( st_fx->prev_Q_bwe_exc, 16 ), 1 ), 1 ), exp ), 32 ); rescale_genWB_mem( st_fx, sub( Q_bwe_exc, st_fx->prev_Q_bwe_exc ) ); @@ -901,7 +905,7 @@ void ivas_wb_tbe_dec_fx( } Lscale = root_a_over_b_fx( curr_pow, shl_r( Q_bwe_exc_ext, 1 ), prev_pow, - shl_r( sub( st_fx->prev_Q_bwe_exc, 16 ), 1 ), &exp ); + exp, &exp ); FOR( i = 0; i < L_SHB_LAHEAD / 4 - 1; i++ ) { -- GitLab From 813cd3820153fdcea08c1f8ff475b87afdf5e1ca Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 7 May 2025 17:52:15 +0530 Subject: [PATCH 495/698] Fix for 3GPP issue 1566: Complexity measurement crashes: MC7_1 encoder (core dumped) Link #1566 --- lib_dec/tonalMDCTconcealment_fx.c | 33 +++++-------------- lib_enc/ivas_mc_param_enc_fx.c | 17 ++++++++-- lib_rend/ivas_dirac_output_synthesis_dec_fx.c | 5 +-- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index b45b78ad1..5afceff55 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -1563,9 +1563,12 @@ void TonalMDCTConceal_InsertNoise_ivas_fx( move16(); Word32 y = concealment_noise[l]; // concealment_noise_e move32(); - last_block_nrg_correct = L_add( last_block_nrg_correct, Mpy_32_16_1( L_msu( 0, x, fac ), x ) ); // exp = 2 * x_exp + ld - y = L_negate( Mpy_32_32( y, y ) ); // Q31-2* concealment_noise_e - hTonalMDCTConc->curr_noise_nrg = BASOP_Util_Add_Mant32Exp( hTonalMDCTConc->curr_noise_nrg, hTonalMDCTConc->curr_noise_nrg_exp, y, 2 * concealment_noise_e, &hTonalMDCTConc->curr_noise_nrg_exp ); // Q31- hTonalMDCTConc->curr_noise_nrg_exp + shift1 = norm_l( y ); + y = L_shl( y, shift1 ); + + last_block_nrg_correct = L_add( last_block_nrg_correct, Mpy_32_16_1( L_msu( 0, x, fac ), x ) ); // exp = 2 * x_exp + ld + y = L_negate( Mpy_32_32( y, y ) ); // Q31-(2* concealment_noise_e + shift1) + hTonalMDCTConc->curr_noise_nrg = BASOP_Util_Add_Mant32Exp( hTonalMDCTConc->curr_noise_nrg, hTonalMDCTConc->curr_noise_nrg_exp, y, shl( sub( concealment_noise_e, shift1 ), 1 ), &hTonalMDCTConc->curr_noise_nrg_exp ); // Q31- hTonalMDCTConc->curr_noise_nrg_exp move32(); } } @@ -1631,29 +1634,9 @@ void TonalMDCTConceal_InsertNoise_ivas_fx( /* actual fadeout is done in this case */ ELSE { - Word32 num, den; - Word16 exp_num, exp_den; - - exp_num = cngLevelBackgroundTrace_bfi_e; - move16(); - exp_den = hTonalMDCTConc->curr_noise_nrg_exp; - move16(); + tmp = BASOP_Util_Divide3232_Scale( cngLevelBackgroundTrace_bfi, hTonalMDCTConc->curr_noise_nrg, &exp ); + exp = add( exp, sub( cngLevelBackgroundTrace_bfi_e, hTonalMDCTConc->curr_noise_nrg_exp ) ); - ld = norm_l( cngLevelBackgroundTrace_bfi ); - num = L_shl( cngLevelBackgroundTrace_bfi, ld ); // Q15 - exp_num + ld - exp_num = sub( exp_num, ld ); - ld = norm_l( hTonalMDCTConc->curr_noise_nrg ); - den = L_shl( hTonalMDCTConc->curr_noise_nrg, ld ); // Q15 - exp_den + ld - exp_den = sub( exp_den, ld ); - - exp = sub( exp_num, exp_den ); - - IF( GT_32( num, den ) ) - { - num = L_shr( num, 1 ); // Q31- exp -1 - exp = add( exp, 1 ); - } - tmp = div_l( num, round_fx( den ) ); tmp = Sqrt16( tmp, &exp ); g = mult_r( g, tmp ); // exponent of g = exp diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 22eacdb32..0c996b25a 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -1613,9 +1613,22 @@ static void ivas_param_mc_quantize_ilds_fx( { dmx_ener_fx = BASOP_Util_Add_Mant32Exp( dmx_ener_fx, dmx_ener_e, Cx_fx[k][k], Cx_e[k][k], &dmx_ener_e ); } + /* ener_fac = 10.0f * log10f( ( tot_ener + EPSILON ) / ( dmx_ener + EPSILON ) ); */ + IF( tot_ener_fx == 0 ) + { + tot_ener_fx = 9223; // 1e-15(EPSILON) in Q63 + tot_ener_e = -32; + move32(); + move16(); + } + IF( dmx_ener_fx == 0 ) + { + dmx_ener_fx = 9223; // 1e-15(EPSILON) in Q63 + dmx_ener_e = -32; + move32(); + move16(); + } - tot_ener_fx = BASOP_Util_Add_Mant32Exp( tot_ener_fx, tot_ener_e, EPSILON_FX, 0, &tot_ener_e ); - dmx_ener_fx = BASOP_Util_Add_Mant32Exp( dmx_ener_fx, dmx_ener_e, EPSILON_FX, 0, &dmx_ener_e ); L_tmp = L_deposit_h( BASOP_Util_Divide3232_Scale( tot_ener_fx, dmx_ener_fx, &tmp_e ) ); tmp_e = add( sub( tot_ener_e, dmx_ener_e ), tmp_e ); ener_fac_fx = BASOP_Util_Log10( L_tmp, tmp_e ); // Q25 diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index 9212e3d23..622ebf89a 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -4016,10 +4016,11 @@ void ivas_lfe_synth_with_filters_fx( } ELSE { + Flag overFlow; lfeGain_fx = extract_h( BASOP_Util_Divide3232_Scale_newton( hMasaLfeSynth->targetEneLfeSmooth_fx, L_add( EPSILON_FX, hMasaLfeSynth->transportEneSmooth_fx ), &lfeGain_fx_exp ) ); /*Q(31-(lfeGain_fx_exp+hMasaLfeSynth->transportEneSmooth_q-hMasaLfeSynth->targetEneLfeSmooth_q))-16*/ lfeGain_fx_exp = add( sub( hMasaLfeSynth->transportEneSmooth_q, hMasaLfeSynth->targetEneLfeSmooth_q ), lfeGain_fx_exp ); - lfeGain_fx = Sqrt16( lfeGain_fx, &lfeGain_fx_exp ); // Q15-lfeGain_fx_exp - lfeGain_fx = shl_r( lfeGain_fx, lfeGain_fx_exp ); // Q15 + lfeGain_fx = Sqrt16( lfeGain_fx, &lfeGain_fx_exp ); // Q15-lfeGain_fx_exp + lfeGain_fx = shl_ro( lfeGain_fx, lfeGain_fx_exp, &overFlow ); // Q15 } IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( hMasaLfeSynth->targetEneTransSmooth_fx, sub( Q31, hMasaLfeSynth->targetEneTransSmooth_q ), /*EPSILON + */ hMasaLfeSynth->transportEneSmooth_fx, sub( Q31, hMasaLfeSynth->transportEneSmooth_q ) ), 1 ) ) { -- GitLab From 30d55ece7594d0b00c20dcb3913bc2fe18b7c57c Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 7 May 2025 15:56:39 +0200 Subject: [PATCH 496/698] use saturated subtraction in loop --- lib_dec/ivas_binRenderer_internal_fx.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index 0709c6b75..313815a58 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -1098,20 +1098,24 @@ static void ivas_binaural_obtain_DMX_fx( FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { Word32 foa_const_fx = L_shl( hBinRenderer->hReverb->foa_enc_fx[chIdx][1], 1 ); // Q30 + Word32 one_add_foa_const, one_sub_foa_const; + + one_add_foa_const = L_add( ONE_IN_Q30, foa_const_fx ); // Q30 + one_sub_foa_const = L_sub_sat( ONE_IN_Q30, foa_const_fx ); // Q30 inRealPtr_fx = (Word32 *) &( RealBuffer[chIdx][k][0] ); inImagPtr_fx = (Word32 *) &( ImagBuffer[chIdx][k][0] ); FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { - outRealLeftPtr_fx[bandIdx] = L_add( outRealLeftPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], L_add( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1 + outRealLeftPtr_fx[bandIdx] = L_add( outRealLeftPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1 move32(); - outImagLeftPtr_fx[bandIdx] = L_add( outImagLeftPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], L_add( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1 + outImagLeftPtr_fx[bandIdx] = L_add( outImagLeftPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1 move32(); - outRealRightPtr_fx[bandIdx] = L_add( outRealRightPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], L_sub( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1 + outRealRightPtr_fx[bandIdx] = L_add( outRealRightPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1 move32(); - outImagRightPtr_fx[bandIdx] = L_add( outImagRightPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], L_sub( ONE_IN_Q30, foa_const_fx ) ) ); // Q_in - 1 + outImagRightPtr_fx[bandIdx] = L_add( outImagRightPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1 move32(); } } -- GitLab From 4f13a0afc15a8ebe125bae11a0a395e113b9c242 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 7 May 2025 16:12:26 +0200 Subject: [PATCH 497/698] apply clang format --- lib_dec/ivas_binRenderer_internal_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index 313815a58..9b7bd86b6 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -1100,7 +1100,7 @@ static void ivas_binaural_obtain_DMX_fx( Word32 foa_const_fx = L_shl( hBinRenderer->hReverb->foa_enc_fx[chIdx][1], 1 ); // Q30 Word32 one_add_foa_const, one_sub_foa_const; - one_add_foa_const = L_add( ONE_IN_Q30, foa_const_fx ); // Q30 + one_add_foa_const = L_add( ONE_IN_Q30, foa_const_fx ); // Q30 one_sub_foa_const = L_sub_sat( ONE_IN_Q30, foa_const_fx ); // Q30 inRealPtr_fx = (Word32 *) &( RealBuffer[chIdx][k][0] ); -- GitLab From d39396e9704e0c596a1682ef73c0e161aaa616fd Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 8 May 2025 08:16:01 +0200 Subject: [PATCH 498/698] port MR 1335 from float --- lib_com/ivas_dirac_com_fx.c | 4 ++++ lib_com/options.h | 1 + 2 files changed, 5 insertions(+) diff --git a/lib_com/ivas_dirac_com_fx.c b/lib_com/ivas_dirac_com_fx.c index f68b976a7..c3ba55b50 100644 --- a/lib_com/ivas_dirac_com_fx.c +++ b/lib_com/ivas_dirac_com_fx.c @@ -578,10 +578,14 @@ ivas_error ivas_dirac_sba_config_fx( { hQMetaData->useLowerBandRes = 0; move16(); +#ifndef NONBE_FIX_973_HODIRAC_BAND_GROUPING IF( hodirac_flag == 0 ) { nbands_coded = sub( nbands, 1 ); /* always combine the last two bands */ } +#else + nbands_coded = sub( nbands, 1 ); /* always combine the last two bands */ +#endif } { diff --git a/lib_com/options.h b/lib_com/options.h index d39d42e25..d8f9a4a67 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -102,6 +102,7 @@ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define NONBE_FIX_935_SBA_REVERB /* FhG: issue 935: fix MSAN error for SBA related to BINAURAL_ROOM_REVERB */ #define FIX_969_USAN_IGF_ARITH /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */ +#define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ /* #################### End BASOP porting switches ############################ */ -- GitLab From 6f1d6deeac2513af3b2b32fd3efd99265e39a126 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 8 May 2025 08:35:03 +0200 Subject: [PATCH 499/698] remove unintentionally added jobs from Draft pipeline --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f48458c78..cff514a63 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1337,7 +1337,7 @@ build-codec-linux-debugging-make: split-rendering-smoke-test: extends: - .test-job-linux - - .rules-merge-request + - .rules-merge-request-to-main-pc needs: ["build-codec-linux-make"] stage: test script: @@ -1361,7 +1361,7 @@ split-rendering-smoke-test: lc3-wrapper-unit-test: extends: - .test-job-linux - - .rules-merge-request + - .rules-merge-request-to-main-pc needs: ["build-codec-linux-make"] stage: test script: @@ -1376,7 +1376,7 @@ lc3-wrapper-unit-test: split-rendering-pytest-on-merge-request: extends: - .test-job-linux-needs-testv-dir - - .rules-merge-request + - .rules-merge-request-to-main-pc needs: ["build-codec-linux-make"] timeout: "45 minutes" stage: compare -- GitLab From 22a2c05ed8af6fcbed7a33c01c497c358a283f21 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 8 May 2025 08:37:50 +0200 Subject: [PATCH 500/698] also remove up-to-date jobs from Draft pls --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cff514a63..5f42dc146 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1047,7 +1047,7 @@ uninterruptible: branch-is-up-to-date-with-target-pre: extends: - - .rules-merge-request + - .rules-merge-request-to-main-pc stage: prevalidate needs: [] tags: @@ -1063,7 +1063,7 @@ branch-is-up-to-date-with-target-pre: branch-is-up-to-date-with-target-post: extends: - - .rules-merge-request + - .rules-merge-request-to-main-pc stage: postvalidate tags: - ivas-basop-linux -- GitLab From 30f81a176096066c1fc65ea263ac2b83b722591b Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 8 May 2025 09:23:21 +0200 Subject: [PATCH 501/698] increase timeout of build jobs to be in line with main --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f42dc146..c16992fdc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1251,6 +1251,7 @@ build-codec-linux-cmake: - .build-job-linux tags: - ivas-basop-linux + timeout: "10 minutes" script: - *print-common-info - *update-scripts-repo @@ -1322,7 +1323,7 @@ build-codec-linux-debugging-make: when: never extends: - .build-job-linux - timeout: "7 minutes" + timeout: "10 minutes" variables: BUILD_WITH_DEBUG_MODE_INFO: "true" script: -- GitLab From eddf4391f0f8d950af6854249e0399f3ec2d39f8 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 8 May 2025 09:56:23 +0200 Subject: [PATCH 502/698] dummy commit to trigger CI -- GitLab From 0288d39e52a9dc7ad3e2d5fcba72a7ddbb4bd332 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 8 May 2025 16:18:54 +0530 Subject: [PATCH 503/698] Fix for complexity measurement CI pipeline crashes --- lib_com/gs_noisefill_fx.c | 3 +- lib_com/lpc_tools_fx.c | 2 +- lib_dec/tonalMDCTconcealment_fx.c | 43 ++++++----------------- lib_rend/ivas_objectRenderer_hrFilt_fx.c | 2 +- lib_rend/ivas_objectRenderer_sfx_fx.c | 20 +++++------ lib_rend/ivas_objectRenderer_sources_fx.c | 20 +++++------ lib_rend/ivas_prot_rend_fx.h | 6 ++-- lib_rend/ivas_stat_rend.h | 4 +-- 8 files changed, 40 insertions(+), 60 deletions(-) diff --git a/lib_com/gs_noisefill_fx.c b/lib_com/gs_noisefill_fx.c index 61aa1333c..1198fb793 100644 --- a/lib_com/gs_noisefill_fx.c +++ b/lib_com/gs_noisefill_fx.c @@ -1418,7 +1418,8 @@ void highband_exc_dct_in_ivas_fx( envelop_modify_fx( exc_diffQ, seed_tcx, last_bin, Ener_per_bd_iQ, *Q_exc, &Q_hb_exc ); #ifdef REMOVE_EVS_DUPLICATES test(); - IF( GT_16( *Q_exc, Q_hb_exc ) && GT_16( element_mode, EVS_MONO ) ) + test(); + IF( GT_16( *Q_exc, Q_hb_exc ) && GT_16( element_mode, EVS_MONO ) && exc_wo_nf != NULL ) #else IF( GT_16( *Q_exc, Q_hb_exc ) ) #endif diff --git a/lib_com/lpc_tools_fx.c b/lib_com/lpc_tools_fx.c index bde05b4f4..1035f017a 100644 --- a/lib_com/lpc_tools_fx.c +++ b/lib_com/lpc_tools_fx.c @@ -1114,7 +1114,7 @@ static void lsp_reorder( { lsp[i] = s_max( lsp[i], lsp_min ); move16(); - lsp_min = add( lsp[i], min_dist ); + lsp_min = add_sat( lsp[i], min_dist ); } /* Reverify the LSF ordering and minimum GAP in the reverse order (security) */ diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index 5afceff55..f33a6c84f 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -450,17 +450,16 @@ void TonalMDCTConceal_SaveFreqSignal_ivas_fx( IF( ( nNewSamples > 0 ) && ( LE_16( nNewSamples, 2 * L_FRAME_MAX ) ) ) { /* Store new data */ - hTonalMDCTConc->last_block_nrg = 0; - move32(); - + Word64 W_tmp = 0; + move64(); FOR( i = 0; i < infoIGFStartLine; i++ ) { - Word16 tmp = extract_h( mdctSpectrum[i] ); - hTonalMDCTConc->last_block_nrg = L_add( hTonalMDCTConc->last_block_nrg, - L_shr( L_mult0( tmp, tmp ), 16 ) ); // Q31-last_block_nrg_exp - move32(); + W_tmp = W_mac_32_16( W_tmp, Mpy_32_32( mdctSpectrum[i], mdctSpectrum[i] ), 1 ); // exp: mdctSpectrum_exp + mdctSpectrum_exp - 1 } - hTonalMDCTConc->last_block_nrg_exp = sub( 31, sub( shl( sub( 15, mdctSpectrum_exp ), 1 ), 16 ) ); + s = W_norm( W_tmp ); + hTonalMDCTConc->last_block_nrg = W_extract_h( W_shl( W_tmp, s ) ); // exp:add( sub( shl( mdctSpectrum_exp, 1 ), s ), 31 ) + move32(); + hTonalMDCTConc->last_block_nrg_exp = add( sub( shl( mdctSpectrum_exp, 1 ), s ), 31 ); move16(); /* Store new data */ @@ -1765,32 +1764,12 @@ void TonalMDCTConceal_InsertNoise_ivas_fx( test(); IF( GT_32( hTonalMDCTConc->faded_signal_nrg, 0 ) && flag ) { - Word16 num_exp, den_exp; - Word32 num, den; + Word16 num_exp; + Word32 num; num = BASOP_Util_Add_Mant32Exp( hTonalMDCTConc->last_block_nrg, hTonalMDCTConc->last_block_nrg_exp, L_negate( last_block_nrg_correct ), last_block_nrg_correct_e, &num_exp ); // Q31-num_exp - - den = hTonalMDCTConc->faded_signal_nrg; // Q31 - hTonalMDCTConc->faded_signal_nrg_exp - move32(); - den_exp = hTonalMDCTConc->faded_signal_nrg_exp; - move16(); - - ld = norm_l( num ); - num = L_shl( num, ld ); // Q31-num_exp + ld - num_exp = sub( num_exp, ld ); - - ld = norm_l( den ); - den = L_shl( den, ld ); // Q31-den_exp + ld - den_exp = sub( den_exp, ld ); - - exp = sub( num_exp, den_exp ); - - IF( GT_32( num, den ) ) - { - num = L_shr( num, 1 ); // Q31- exp -1 - exp = add( exp, 1 ); - } - tmp = div_l( num, extract_h( den ) ); + tmp = BASOP_Util_Divide3232_Scale( num, hTonalMDCTConc->faded_signal_nrg, &exp ); + exp = add( exp, sub( num_exp, hTonalMDCTConc->faded_signal_nrg_exp ) ); tmp = Sqrt16( tmp, &exp ); FOR( i = 0; i < crossOverFreq; i++ ) diff --git a/lib_rend/ivas_objectRenderer_hrFilt_fx.c b/lib_rend/ivas_objectRenderer_hrFilt_fx.c index 30bf8f00a..a098aaa25 100644 --- a/lib_rend/ivas_objectRenderer_hrFilt_fx.c +++ b/lib_rend/ivas_objectRenderer_hrFilt_fx.c @@ -97,7 +97,7 @@ ivas_error TDREND_REND_RenderSourceHRFilt_fx( TDREND_firfilt_fx( RightOutputFrame_fx, Src_p->hrf_right_prev_fx, right_filter_e, hrf_right_delta_fx, intp_count, Src_p->mem_hrf_right_fx, subframe_length, Src_p->filterlength, Src_p->Gain_fx, Src_p->prevGain_fx ); Src_p->prevGain_fx = Src_p->Gain_fx; - move16(); + move32(); /* Copy to accumulative output frame */ v_add_32( LeftOutputFrame_fx, output_buf_fx[0], output_buf_fx[0], subframe_length ); // Same Q as Src_p->InputFrame_p_fx Q11 diff --git a/lib_rend/ivas_objectRenderer_sfx_fx.c b/lib_rend/ivas_objectRenderer_sfx_fx.c index 210706d5b..a570273cf 100644 --- a/lib_rend/ivas_objectRenderer_sfx_fx.c +++ b/lib_rend/ivas_objectRenderer_sfx_fx.c @@ -278,8 +278,8 @@ void TDREND_firfilt_fx( Word32 *mem_fx, /* i/o: filter memory Qx */ const Word16 subframe_length, /* i : Length of signal Q0 */ const Word16 filterlength, /* i : Filter length Q0 */ - const Word16 Gain_fx, /* i : Gain Q14 */ - const Word16 prevGain_fx /* i : Previous gain Q14 */ + const Word32 Gain_fx, /* i : Gain Q30 */ + const Word32 prevGain_fx /* i : Previous gain Q30 */ ) { /* NOTE: this function is implemented with the assumption that the exponent/Q-factor of input signal will not change. */ @@ -289,15 +289,15 @@ void TDREND_firfilt_fx( Word32 *p_filter_fx; // exp(filter_e) Word16 i, j; Word32 tmp_fx; - Word16 step_fx /* Q15 */, gain_tmp_fx /* Q15 */, gain_delta_fx /* Q14 */; + Word32 step_fx /* Q31 */, gain_tmp_fx /* Q31 */, gain_delta_fx /* Q30 */; Word16 tmp_e; Word64 tmp64_fx; - gain_delta_fx = sub( Gain_fx, prevGain_fx ); // Q14 - step_fx = BASOP_Util_Divide1616_Scale( gain_delta_fx, subframe_length, &tmp_e ); // exp(tmp_e) - tmp_e = sub( tmp_e, Q14 ); - step_fx = shl_sat( step_fx, tmp_e ); // Q15 - gain_tmp_fx = shl_sat( prevGain_fx, 1 ); // Q15 + gain_delta_fx = L_sub( Gain_fx, prevGain_fx ); // Q30 + step_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( gain_delta_fx, subframe_length, &tmp_e ) ); // exp(tmp_e) + tmp_e = sub( tmp_e, Q30 ); + step_fx = L_shl_sat( step_fx, tmp_e ); // Q31 + gain_tmp_fx = L_shl_sat( prevGain_fx, 1 ); // Q31 /* Handle memory */ p_signal_fx = buffer_fx + sub( filterlength, 1 ); // Qx @@ -328,8 +328,8 @@ void TDREND_firfilt_fx( tmp_fx = W_extract_h( tmp64_fx ); // Qx /* Apply linear gain interpolation in case of abrupt gain changes */ - gain_tmp_fx = add( gain_tmp_fx, step_fx ); // Q15 - signal_fx[i] = Mpy_32_16_1( tmp_fx, gain_tmp_fx ); // Qx + gain_tmp_fx = L_add_sat( gain_tmp_fx, step_fx ); /* Saturating values which just exceeds 1, Q31*/ + signal_fx[i] = Mpy_32_32( tmp_fx, gain_tmp_fx ); // Qx move32(); IF( LT_16( i, intp_count ) ) { diff --git a/lib_rend/ivas_objectRenderer_sources_fx.c b/lib_rend/ivas_objectRenderer_sources_fx.c index 7e35b80b2..cdb2d9847 100644 --- a/lib_rend/ivas_objectRenderer_sources_fx.c +++ b/lib_rend/ivas_objectRenderer_sources_fx.c @@ -275,8 +275,8 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx( /* o : Length of filters */ // Q0 Word16 *itd, /* o : ITD value */ // Q0 - Word16 *Gain, - /* o : Gain value */ // Q14 + Word32 *Gain, + /* o : Gain value */ // Q30 TDREND_SRC_t *Src_p, /* i/o: Source pointer */ const Word16 subframe_update_flag ) { @@ -368,8 +368,8 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx( /* Update total gains */ - *Gain = extract_h( L_shl( Mpy_32_32( L_shl( L_mult( *SrcRend_p->SrcGain_p_fx, *SrcRend_p->DirGain_p_fx ), 1 ), L_shl( L_mult( *SrcRend_p->DistGain_p_fx, hBinRendererTd->Gain_fx ), 1 ) ), 1 ) ); // Q14 - move16(); + *Gain = L_shl( Mpy_32_32( L_shl( L_mult( *SrcRend_p->SrcGain_p_fx, *SrcRend_p->DirGain_p_fx ), 1 ), L_shl( L_mult( *SrcRend_p->DistGain_p_fx, hBinRendererTd->Gain_fx ), 1 ) ), 1 ); // Q30 + move32(); /* Delta for interpolation, in case the angular step exceeds MAX_ANGULAR_STEP */ Word32 ele_tmp = Src_p->elev_prev_fx; // Q22 move32(); @@ -417,8 +417,8 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx( { *itd = 0; // Q0 move16(); - *Gain = ONE_IN_Q14; // Q14 - move16(); + *Gain = ONE_IN_Q30; // Q30 + move32(); set32_fx( hrf_left, 0, *filterlength ); set32_fx( hrf_right, 0, *filterlength ); hrf_left[0] = L_shr( L_add( SrcSpatial_p->Pos_p_fx[1], ONE_IN_Q25 ), 1 ); // Q25 @@ -886,9 +886,9 @@ void TDREND_SRC_Init_fx( move32(); Src_p->elev_prev_fx = 0; // Q22 move32(); - Src_p->Gain_fx = ONE_IN_Q14; // Q14 - move16(); - Src_p->prevGain_fx = ONE_IN_Q14; // Q14 - move16(); + Src_p->Gain_fx = ONE_IN_Q30; // Q30 + move32(); + Src_p->prevGain_fx = ONE_IN_Q30; // Q30 + move32(); return; } diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index 983c814aa..7cd547cb8 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -755,7 +755,7 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams_fx( Word16 *intp_count, /* o : Interpolation count */ Word16 *filterlength, /* o : Length of filters */ Word16 *itd, /* o : ITD value */ - Word16 *Gain, /* o : Gain value */ + Word32 *Gain, /* o : Gain value Q30 */ TDREND_SRC_t *Src_p, /* i/o: Source pointer */ const Word16 subframe_update_flag); @@ -842,8 +842,8 @@ void TDREND_firfilt_fx( Word32 *mem_fx, /* i/o: filter memory Qx */ const Word16 subframe_length, /* i : Length of signal */ const Word16 filterlength, /* i : Filter length */ - const Word16 Gain_fx, /* i : Gain Q14 */ - const Word16 prevGain_fx /* i : Previous gain Q14 */ + const Word32 Gain_fx, /* i : Gain Q30 */ + const Word32 prevGain_fx /* i : Previous gain Q30 */ ); diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index 17474bfe7..90e4f5d69 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -1259,8 +1259,8 @@ typedef struct Word16 hrf_right_prev_e; Word32 azim_prev_fx; Word32 elev_prev_fx; - Word16 Gain_fx; // Q14 - Word16 prevGain_fx; // Q14 + Word32 Gain_fx; // Q30 + Word32 prevGain_fx; // Q30 } TDREND_SRC_t; -- GitLab From 65394e1eb1ba66c3eacba3befa501f54a18a68de Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 9 May 2025 10:56:20 +0200 Subject: [PATCH 504/698] fix for correct float ref setting in check-be branches --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c16992fdc..27535f94c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1468,6 +1468,7 @@ check-be-to-target-short-enc-0db: - .rules-mr-to-main-or-main-pc - .test-job-linux before_script: + - *set-reference-for-basop-port-branch - USE_LTV=0 - DUT_DECODER_PATH=./IVAS_dec_ref - MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref @@ -1481,6 +1482,7 @@ check-be-to-target-short-enc-+10db: - .rules-mr-to-main-or-main-pc - .test-job-linux before_script: + - *set-reference-for-basop-port-branch - USE_LTV=0 - DUT_DECODER_PATH=./IVAS_dec_ref - MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref @@ -1494,6 +1496,7 @@ check-be-to-target-short-enc--10db: - .rules-mr-to-main-or-main-pc - .test-job-linux before_script: + - *set-reference-for-basop-port-branch - USE_LTV=0 - DUT_DECODER_PATH=./IVAS_dec_ref - MERGE_TARGET_DECODER_PATH=./IVAS_dec_ref @@ -1507,6 +1510,7 @@ check-be-to-target-short-dec-0db: - .rules-mr-to-main-or-main-pc - .test-job-linux before_script: + - *set-reference-for-basop-port-branch - USE_LTV=0 - DUT_ENCODER_PATH=./IVAS_cod_ref - MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref @@ -1520,6 +1524,7 @@ check-be-to-target-short-dec-+10db: - .rules-mr-to-main-or-main-pc - .test-job-linux before_script: + - *set-reference-for-basop-port-branch - USE_LTV=0 - DUT_ENCODER_PATH=./IVAS_cod_ref - MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref @@ -1533,6 +1538,7 @@ check-be-to-target-short-dec--10db: - .rules-mr-to-main-or-main-pc - .test-job-linux before_script: + - *set-reference-for-basop-port-branch - USE_LTV=0 - DUT_ENCODER_PATH=./IVAS_cod_ref - MERGE_TARGET_ENCODER_PATH=./IVAS_cod_ref -- GitLab From e155b386f761bcf00066746bb25a1e599dce4efa Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 12 May 2025 14:56:02 +0530 Subject: [PATCH 505/698] Fix for 3GPP issue 1574: Complexity measurement crashes: ISM Link #1574 --- lib_dec/swb_tbe_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index a541ebf7b..83c229a6b 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -6468,7 +6468,7 @@ void ivas_swb_tbe_dec_fx( exp_ener = norm_s( ener_fx ); tmp = shl( ener_fx, exp_ener ); /*Q(2+exp)*/ inv_ener = div_s( 16384, tmp ); /*Q(15+14-2-exp)*/ - prev_ener_ratio_fx = L_shr( L_mult0( st->prev_ener_shb_fx, inv_ener ), add( sub( 9, exp_ener ), 1 ) ); /*Q: 1+27-exp-9+exp-1 = 18 */ + prev_ener_ratio_fx = L_shr_sat( L_mult0( st->prev_ener_shb_fx, inv_ener ), add( sub( 9, exp_ener ), 1 ) ); /*Q: 1+27-exp-9+exp-1 = 18 */ } IF( EQ_16( st->nbLostCmpt, 1 ) ) -- GitLab From 9dfd2133c045d7e5a0e3e8d465e78295ad0b2dc6 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 12 May 2025 15:01:49 +0530 Subject: [PATCH 506/698] Clang formatting changes --- lib_dec/swb_tbe_dec_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/swb_tbe_dec_fx.c b/lib_dec/swb_tbe_dec_fx.c index 83c229a6b..bd8700063 100644 --- a/lib_dec/swb_tbe_dec_fx.c +++ b/lib_dec/swb_tbe_dec_fx.c @@ -6466,8 +6466,8 @@ void ivas_swb_tbe_dec_fx( { ener_fx = s_max( 1, ener_fx ); exp_ener = norm_s( ener_fx ); - tmp = shl( ener_fx, exp_ener ); /*Q(2+exp)*/ - inv_ener = div_s( 16384, tmp ); /*Q(15+14-2-exp)*/ + tmp = shl( ener_fx, exp_ener ); /*Q(2+exp)*/ + inv_ener = div_s( 16384, tmp ); /*Q(15+14-2-exp)*/ prev_ener_ratio_fx = L_shr_sat( L_mult0( st->prev_ener_shb_fx, inv_ener ), add( sub( 9, exp_ener ), 1 ) ); /*Q: 1+27-exp-9+exp-1 = 18 */ } -- GitLab From 8b5de0a80364e7b3dc2ed03fd0fd0a19ef9d4f90 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 12 May 2025 18:04:32 +0530 Subject: [PATCH 507/698] Fix for 3GPP issue 1337: energy mismatch when switching from ACELP to TCX Link #1337 --- lib_enc/swb_pre_proc_fx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib_enc/swb_pre_proc_fx.c b/lib_enc/swb_pre_proc_fx.c index 8991696e6..0e89e16c1 100644 --- a/lib_enc/swb_pre_proc_fx.c +++ b/lib_enc/swb_pre_proc_fx.c @@ -1068,8 +1068,9 @@ void swb_pre_proc_ivas_fx( { Word16 out_start_ind, out_end_ind; stereo_dft_enc_synthesize_fx( hCPE->hStereoDft, new_swb_speech_fx, &out_start_ind, &out_end_ind, st->idchan, input_Fs, 32000, 0, NULL ); - Copy_Scale_sig32_16( new_swb_speech_fx - STEREO_DFT_OVL_MAX, new_swb_speech - STEREO_DFT_OVL_MAX, L_FRAME48k + STEREO_DFT_OVL_MAX, add( q_reImBuffer, 1 ) ); // Q0 - Copy( new_swb_speech - Sample_Delay_SWB_BWE32k, hBWE_FD->old_input_fx, Sample_Delay_SWB_BWE32k ); // Q0 + Copy_Scale_sig32_16( new_swb_speech_fx - STEREO_DFT_OVL_MAX, new_swb_speech - STEREO_DFT_OVL_MAX, L_FRAME48k + STEREO_DFT_OVL_MAX, add( st->q_inp, add( q_reImBuffer, 1 ) ) ); // st->q_inp + + Copy( new_swb_speech - Sample_Delay_SWB_BWE32k, hBWE_FD->old_input_fx, Sample_Delay_SWB_BWE32k ); // st->q_inp } } } -- GitLab From a965dd81d6b2521322b1d0cecf814f5f44adf576 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Mon, 12 May 2025 18:15:48 +0200 Subject: [PATCH 508/698] Extend timeout for build jobs --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b3f2be0c3..9f37f50f2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -831,7 +831,7 @@ build-codec-linux-make: when: never extends: - .build-job-linux - timeout: "10 minutes" + timeout: "100 minutes" script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - *activate-Werror-linux @@ -848,7 +848,7 @@ build-codec-linux-instrumented-make: when: never extends: - .build-job-linux - timeout: "10 minutes" + timeout: "100 minutes" script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh @@ -865,7 +865,7 @@ build-codec-linux-debugging-make: when: never extends: - .build-job-linux - timeout: "10 minutes" + timeout: "100 minutes" variables: BUILD_WITH_DEBUG_MODE_INFO: "true" script: -- GitLab From 7079ea23e0d39d93b3998a1f99676a4c8b93b37a Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Tue, 13 May 2025 09:37:25 +0200 Subject: [PATCH 509/698] Missing initialization added. --- lib_enc/ivas_stereo_dmx_evs_fx.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 97c53e369..f8731bd0b 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -2756,8 +2756,8 @@ void stereo_dmx_evs_enc_fx( FOR( n = 0; n < fad_len; n++ ) { - p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; - p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 + p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; + p_dmx_data[n] = L_add_sat( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 n_fad_cnt = add( n_fad_cnt, 1 ); IF( GE_16( n_fad_cnt, n_fad_r ) ) @@ -3605,6 +3605,13 @@ ivas_error stereo_dmx_evs_init_encoder_fx( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = ONE_IN_Q15; hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = ONE_IN_Q15; + move32(); + move32(); + + hStereoDmxEVS->hPHA->n_fad_g = input_frame; + hStereoDmxEVS->hPHA->n_fad_cnt = 0; + move16(); + move16(); #endif -- GitLab From 5f77256c31f9f455f48b343692c6a7b0cae0f062 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 12 May 2025 19:44:36 +0530 Subject: [PATCH 510/698] Fix for 3GPP issue 1254: BASOP encoder OSBA 256 kbps: broken signal envelope Link #1254 --- lib_com/ivas_prot_fx.h | 2 +- lib_com/prot_fx.h | 46 ++++++++-------- lib_enc/igf_enc.c | 75 ++++++++++++++++++-------- lib_enc/ivas_mct_core_enc_fx.c | 31 +++++------ lib_enc/ivas_mct_enc_mct_fx.c | 14 +++-- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 51 ++++-------------- lib_enc/tcx_utils_enc_fx.c | 20 +++---- 7 files changed, 116 insertions(+), 123 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 5816c60b5..5bdbd7d73 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -3341,7 +3341,7 @@ void mctStereoIGF_enc_fx( Word32 powerSpec_fx[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */ Word16 q_powerSpec[MCT_MAX_CHANNELS], /* i : Q for powSpec_fx */ Word32 *powerSpecMsInv_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : same as powerSpec_fx but for inverse spect.*/ - Word16 q_powerSpecMsInv[MCT_MAX_CHANNELS], /* i : Q for powSpecMsInv_fx */ + Word16 *q_powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : Q for powSpecMsInv_fx */ Word32 *inv_spectrum_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */ const Word16 sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */ ); diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 9b78b44d8..bbd5416da 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10841,32 +10841,32 @@ void ProcessStereoIGF_fx( Word32 *pITFMDCTSpectrum_fx[CPE_CHANNELS][NB_DIV], /* i : MDCT spectrum fir ITF */ Word16 q_pITFMDCTSpectrum_1, Word16 q_pITFMDCTSpectrum_2, - Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ - Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */ - Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */ - Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ - Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */ - const Word16 frameno, /* i : flag indicating index of current subfr. */ - const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ - const Word32 element_brate, /* i : element bitrate */ + Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ + Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ + Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */ + Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */ + Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ + Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */ + const Word16 frameno, /* i : flag indicating index of current subfr. */ + const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ + const Word32 element_brate, /* i : element bitrate */ const Word16 mct_on ); /*igf_enc.c*/ void IGFEncApplyStereo_fx( - STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */ - Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ - const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */ - const Word16 igfGridIdx, /* i : IGF grid index */ - Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ - Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ - Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */ - Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */ - Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ - Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */ - const Word16 frameno, /* i : flag indicating index of current subfr. */ - const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ - const Word32 element_brate, /* i : element bitrate */ + STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */ + Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ + const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */ + const Word16 igfGridIdx, /* i : IGF grid index */ + Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ + Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ + Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ + Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */ + Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */ + Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ + Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */ + const Word16 frameno, /* i : flag indicating index of current subfr. */ + const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ + const Word32 element_brate, /* i : element bitrate */ const Word16 mct_on ); void IGFSaveSpectrumForITF_ivas_fx( diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c index 9769d83b6..18995bd1d 100644 --- a/lib_enc/igf_enc.c +++ b/lib_enc/igf_enc.c @@ -1002,12 +1002,12 @@ static void IGF_CalculateStereoEnvelope_fx( const Word32 *pPowerSpectrum_fx, /* i : MDCT^2 + MDST^2 spectrum, or estimate */ Word16 pPowerSpectrum_e, /* i : exponent for pPowerSpectrum_fx */ const Word32 *pPowerSpectrumMsInv_fx, /* i : inverse power spectrum */ - Word16 pPowerSpectrumMsInv_e, /* i : exponent for pPowerSpectrumMsInv_fx */ + Word16 *q_pPowerSpectrumMsInv, /* i : Q for pPowerSpectrumMsInv_fx */ const Word16 igfGridIdx, /* i : IGF grid index */ const Word16 coreMsMask[N_MAX], /* i : line wise ms Mask */ const Word16 isTransient, /* i : flag indicating if transient is detected */ - const Word16 last_core_acelp /* i : indicator if last frame was ACELP core */ -) + const Word16 last_core_acelp, /* i : indicator if last frame was ACELP core */ + const Word16 mct_on ) { IGF_ENC_PRIVATE_DATA_HANDLE hPrivateData; H_IGF_GRID hGrid; @@ -1047,6 +1047,32 @@ static void IGF_CalculateStereoEnvelope_fx( Word16 slope_e; /*stores exponent for slope_fx*/ Word16 sfbEnergyR_e; /*stores exponent for sfbEnergyR*/ Word16 tmp_e; + Word32 temp_pPowerSpectrumMsInv[N_MAX], length; + Word16 q_temp_pPowerSpectrumMsInv = Q31, i; + move16(); + + IF( pPowerSpectrumMsInv_fx != NULL ) + { + length = N_MAX; + move16(); + if ( mct_on ) + { + length = L_FRAME48k; + move16(); + } + FOR( i = 0; i < length; i++ ) + { + IF( pPowerSpectrumMsInv_fx[i] != 0 ) + { + q_temp_pPowerSpectrumMsInv = s_min( q_temp_pPowerSpectrumMsInv, add( q_pPowerSpectrumMsInv[i], norm_l( pPowerSpectrumMsInv_fx[i] ) ) ); + } + } + FOR( i = 0; i < length; i++ ) + { + temp_pPowerSpectrumMsInv[i] = L_shl( pPowerSpectrumMsInv_fx[i], sub( q_temp_pPowerSpectrumMsInv, q_pPowerSpectrumMsInv[i] ) ); + move32(); + } + } hPrivateData = &hIGFEnc->igfData; hGrid = &hPrivateData->igfInfo.grid[(Word16) igfGridIdx]; @@ -1130,10 +1156,10 @@ static void IGF_CalculateStereoEnvelope_fx( norm_exp = norm_l( pMDCTSpectrumMsInv_fx[strt_cpy] ); final_exp = sub( pMDCTSpectrumMsInv_e, norm_exp ); scaled_value = L_shl( pMDCTSpectrumMsInv_fx[strt_cpy], norm_exp ); - sfbEnergyTileR_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileR_fx, sfbEnergyTileR_e, Mult_32_32( scaled_value, scaled_value ), shl( final_exp, 1 ), &sfbEnergyTileR_e ); /*resultant exponent is stored in sfbEnergyTileR_e*/ - sfbEnergyTileC_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileC_fx, sfbEnergyTileC_e, pPowerSpectrumMsInv_fx[strt_cpy], pPowerSpectrumMsInv_e, &sfbEnergyTileC_e ); /*resultant exponent is stored in sfbEnergyTileC_e*/ - tileSrcSpec_fx[sub( strt_cpy, tmp )] = pPowerSpectrumMsInv_fx[strt_cpy]; /*resultant exponent is stored in tileSrcSpec_e*/ - tileSrcSpec_e = pPowerSpectrumMsInv_e; + sfbEnergyTileR_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileR_fx, sfbEnergyTileR_e, Mult_32_32( scaled_value, scaled_value ), shl( final_exp, 1 ), &sfbEnergyTileR_e ); /*resultant exponent is stored in sfbEnergyTileR_e*/ + sfbEnergyTileC_fx = BASOP_Util_Add_Mant32Exp( sfbEnergyTileC_fx, sfbEnergyTileC_e, pPowerSpectrumMsInv_fx[strt_cpy], sub( 31, q_pPowerSpectrumMsInv[strt_cpy] ), &sfbEnergyTileC_e ); /*resultant exponent is stored in sfbEnergyTileC_e*/ + tileSrcSpec_fx[sub( strt_cpy, tmp )] = temp_pPowerSpectrumMsInv[strt_cpy]; /*resultant exponent is stored in tileSrcSpec_e*/ + tileSrcSpec_e = sub( 31, q_temp_pPowerSpectrumMsInv ); } ELSE { @@ -2620,24 +2646,25 @@ void IGFEncApplyMono_ivas_fx( *-------------------------------------------------------------------*/ void IGFEncApplyStereo_fx( - STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */ - Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ - const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */ - const Word16 igfGridIdx, /* i : IGF grid index */ - Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ - Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ - Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */ - Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */ - Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ - Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */ - const Word16 frameno, /* i : flag indicating index of current subfr. */ - const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ - const Word32 element_brate, /* i : element bitrate */ + STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo encoder structure */ + Word16 ms_mask[2][MAX_SFB], /* i : bandwise MS mask */ + const IGF_ENC_INSTANCE_HANDLE hIGFEnc[CPE_CHANNELS], /* i : instance handle of IGF Encoder */ + const Word16 igfGridIdx, /* i : IGF grid index */ + Encoder_State *sts[CPE_CHANNELS], /* i : Encoder state */ + Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ + Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ + Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: inverse power spectrum */ + Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */ + Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ + Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i : exp of inverse spectrum */ + const Word16 frameno, /* i : flag indicating index of current subfr. */ + const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ + const Word32 element_brate, /* i : element bitrate */ const Word16 mct_on ) { Word32 *pPowerSpectrumParameter_fx[NB_DIV]; /* If it is NULL it informs a function that specific handling is needed */ Word32 *pPowerSpectrumParameterMsInv_fx[NB_DIV]; + Word16 *q_pPowerSpectrumParameterMsInv_fx[NB_DIV]; Word16 coreMsMask[N_MAX]; Word16 sfb, ch, last_core_acelp; STEREO_MDCT_BAND_PARAMETERS *sfbConf; @@ -2681,6 +2708,8 @@ void IGFEncApplyStereo_fx( pPowerSpectrumParameter_fx[1] = &pPowerSpectrum_fx[1][0]; pPowerSpectrumParameterMsInv_fx[0] = pPowerSpectrumMsInv_fx[0][0]; pPowerSpectrumParameterMsInv_fx[1] = pPowerSpectrumMsInv_fx[1][0]; + q_pPowerSpectrumParameterMsInv_fx[0] = q_pPowerSpectrumMsInv_fx[0][0]; + q_pPowerSpectrumParameterMsInv_fx[1] = q_pPowerSpectrumMsInv_fx[1][0]; } ELSE { @@ -2688,6 +2717,8 @@ void IGFEncApplyStereo_fx( pPowerSpectrumParameter_fx[1] = NULL; pPowerSpectrumParameterMsInv_fx[0] = NULL; pPowerSpectrumParameterMsInv_fx[1] = NULL; + q_pPowerSpectrumParameterMsInv_fx[0] = NULL; + q_pPowerSpectrumParameterMsInv_fx[1] = NULL; } FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { @@ -2696,7 +2727,7 @@ void IGFEncApplyStereo_fx( IGF_UpdateInfo( hIGFEnc[ch], igfGridIdx ); IGF_CalculateStereoEnvelope_fx( hIGFEnc[ch], sts[ch]->hTcxEnc->spectrum_fx[frameno], sts[ch]->hTcxEnc->spectrum_e[frameno], inv_spectrum_fx[ch][frameno], exp_inv_spectrum_fx[ch], pPowerSpectrumParameter_fx[ch], exp_pPowerSpectrum_fx[ch], pPowerSpectrumParameterMsInv_fx[ch], - exp_pPowerSpectrumMsInv_fx[ch], igfGridIdx, coreMsMask, sts[ch]->hTranDet->transientDetector.bIsAttackPresent, last_core_acelp ); + q_pPowerSpectrumParameterMsInv_fx[ch], igfGridIdx, coreMsMask, sts[ch]->hTranDet->transientDetector.bIsAttackPresent, last_core_acelp, mct_on ); IF( EQ_16( sts[ch]->core, TCX_20_CORE ) ) { diff --git a/lib_enc/ivas_mct_core_enc_fx.c b/lib_enc/ivas_mct_core_enc_fx.c index 0ab232dd9..71890120b 100644 --- a/lib_enc/ivas_mct_core_enc_fx.c +++ b/lib_enc/ivas_mct_core_enc_fx.c @@ -244,8 +244,8 @@ void ivas_mct_core_enc_fx( Word32 inv_spectrum_long_fx[MCT_MAX_CHANNELS][L_FRAME48k]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ Word16 total_side_bits; Word16 chBitRatios[MCT_MAX_CHANNELS]; - Word16 q_powSpec[MCT_MAX_CHANNELS], q_powerSpecMsInv[MCT_MAX_CHANNELS], q_spec, q_origSpec, tmp_s; - Word16 tmp_q_powSpec[L_FRAME48k], tmp_q_powSpecInv[L_FRAME48k], *tmp_q_psi[2]; + Word16 q_powSpec[MCT_MAX_CHANNELS], q_spec, q_origSpec, tmp_s; + Word16 tmp_q_powSpec[L_FRAME48k], tmp_q_powSpecInv[MCT_MAX_CHANNELS][L_FRAME48k], *tmp_q_psi[MCT_MAX_CHANNELS][2]; Word64 W_tmp; Encoder_State *sts[MCT_MAX_CHANNELS]; Encoder_State *st; @@ -285,16 +285,17 @@ void ivas_mct_core_enc_fx( inv_mdst_spectrum_fx[ch][0] = powerSpecMsInv_fx[ch][0] = powerSpecMsInv_long_fx[ch]; inv_mdst_spectrum_fx[ch][1] = powerSpecMsInv_fx[ch][1] = powerSpecMsInv_long_fx[ch] + N_TCX10_MAX; + set16_fx( tmp_q_powSpecInv[ch], 63, L_FRAME48k ); + + tmp_q_psi[ch][0] = tmp_q_powSpecInv[ch]; + tmp_q_psi[ch][1] = &tmp_q_powSpecInv[ch][N_TCX10_MAX]; + inv_spectrum_fx[ch][0] = inv_spectrum_long_fx[ch]; inv_spectrum_fx[ch][1] = inv_spectrum_long_fx[ch] + N_TCX10_MAX; } - set16_fx( tmp_q_powSpecInv, 63, L_FRAME48k ); set16_fx( tmp_q_powSpec, 63, L_FRAME48k ); - tmp_q_psi[0] = tmp_q_powSpecInv; - tmp_q_psi[1] = &tmp_q_powSpecInv[N_TCX10_MAX]; - FOR( ( cpe_id = 0, i = 0 ); cpe_id < nCPE; cpe_id++ ) { FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) @@ -451,7 +452,7 @@ void ivas_mct_core_enc_fx( tmp_s = W_norm( W_tmp ); W_tmp = W_shl( W_tmp, tmp_s ); powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp ); - tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + tmp_q_psi[ch][n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 move32(); move16(); } @@ -465,7 +466,7 @@ void ivas_mct_core_enc_fx( tmp_s = W_norm( W_tmp ); W_tmp = W_shl( W_tmp, tmp_s ); powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_tmp ); - tmp_q_psi[n][0] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + tmp_q_psi[ch][n][0] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 move32(); move16(); @@ -477,7 +478,7 @@ void ivas_mct_core_enc_fx( tmp_s = W_norm( W_tmp ); W_tmp = W_shl( W_tmp, tmp_s ); powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_tmp ); - tmp_q_psi[n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + tmp_q_psi[ch][n][i] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 move32(); move16(); } @@ -486,7 +487,7 @@ void ivas_mct_core_enc_fx( tmp_s = W_norm( W_tmp ); W_tmp = W_shl( W_tmp, tmp_s ); powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_tmp ); - tmp_q_psi[n][L_subframeTCX - 1] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 + tmp_q_psi[ch][n][L_subframeTCX - 1] = sub( add( imult1616( q_spec, 2 ), tmp_s ), 31 ); // Q = 2 * q_spec + 1 + tmp_s - 32 move32(); move16(); } @@ -529,8 +530,6 @@ void ivas_mct_core_enc_fx( { q_powSpec[ch] = Q31; move16(); - q_powerSpecMsInv[ch] = Q31; - move16(); /* NOTE: This logic has been added because using a constant headroom while computing `powSpec` and `powSpecMsInv` leads to significant precision loss, which results in poor quality. */ FOR( i = 0; i < L_FRAME48k; i++ ) { @@ -539,18 +538,12 @@ void ivas_mct_core_enc_fx( q_powSpec[ch] = s_min( q_powSpec[ch], add( tmp_q_powSpec[i], norm_l( powerSpec_fx[ch][i] ) ) ); move16(); } - IF( powerSpecMsInv_fx[ch][0][i] != 0 ) - { - q_powerSpecMsInv[ch] = s_min( q_powerSpecMsInv[ch], add( tmp_q_powSpecInv[i], norm_l( powerSpecMsInv_fx[ch][0][i] ) ) ); - move16(); - } } FOR( n = 0; n < nSubframes; n++ ) { FOR( i = 0; i < L_subframeTCX; i++ ) { - powerSpecMsInv_fx[ch][n][i] = L_shr( powerSpecMsInv_fx[ch][n][i], sub( tmp_q_psi[n][i], q_powerSpecMsInv[ch] ) ); powerSpec_fx[ch][( i + ( n * L_subframeTCX ) )] = L_shr( powerSpec_fx[ch][( i + ( n * L_subframeTCX ) )], sub( tmp_q_powSpec[i + ( n * L_subframeTCX )], q_powSpec[ch] ) ); move32(); move32(); @@ -609,7 +602,7 @@ void ivas_mct_core_enc_fx( { IF( hMCT->currBlockDataCnt > 0 ) { - mctStereoIGF_enc_fx( hMCT, sts, orig_spectrum_fx, q_origSpec, powerSpec_fx, q_powSpec, powerSpecMsInv_fx, q_powerSpecMsInv, inv_spectrum_fx, sp_aud_decision0 ); + mctStereoIGF_enc_fx( hMCT, sts, orig_spectrum_fx, q_origSpec, powerSpec_fx, q_powSpec, powerSpecMsInv_fx, tmp_q_psi, inv_spectrum_fx, sp_aud_decision0 ); } ELSE { diff --git a/lib_enc/ivas_mct_enc_mct_fx.c b/lib_enc/ivas_mct_enc_mct_fx.c index 94015abb7..8ff17ae01 100644 --- a/lib_enc/ivas_mct_enc_mct_fx.c +++ b/lib_enc/ivas_mct_enc_mct_fx.c @@ -986,19 +986,19 @@ void mctStereoIGF_enc_fx( Word32 powerSpec_fx[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */ Word16 q_powerSpec[MCT_MAX_CHANNELS], /* i : Q for powSpec_fx */ Word32 *powerSpecMsInv_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : same as powerSpec_fx but for inverse spect.*/ - Word16 q_powerSpecMsInv[MCT_MAX_CHANNELS], /* i : Q for powSpecMsInv_fx */ + Word16 *q_powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : Q for powSpecMsInv_fx */ Word32 *inv_spectrum_fx[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */ const Word16 sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */ ) { Word32 *p_powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV]; + Word16 *q_p_powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV]; Word32 *p_inv_spectrum_fx[CPE_CHANNELS][NB_DIV]; Word32 *p_orig_spectrum_fx[CPE_CHANNELS][NB_DIV]; Word32 *p_powerSpec_fx[NB_DIV]; Word16 b, nSubframes, L_subframeTCX; Word16 p_ch[2], n, ch, ch1, ch2; - Word16 q_pSI_ch[2]; Word16 q_pS_ch[2]; Encoder_State *p_st[NB_DIV]; Encoder_State *st; @@ -1059,12 +1059,12 @@ void mctStereoIGF_enc_fx( p_orig_spectrum_fx[1][n] = orig_spectrum_fx[ch2][n]; p_powerSpecMsInv_fx[0][n] = powerSpecMsInv_fx[ch1][n]; // q_powerSpec p_powerSpecMsInv_fx[1][n] = powerSpecMsInv_fx[ch2][n]; + q_p_powerSpecMsInv_fx[0][n] = q_powerSpecMsInv[ch1][n]; // q_powerSpec + q_p_powerSpecMsInv_fx[1][n] = q_powerSpecMsInv[ch2][n]; p_inv_spectrum_fx[0][n] = inv_spectrum_fx[ch1][n]; p_inv_spectrum_fx[1][n] = inv_spectrum_fx[ch2][n]; q_pS_ch[0] = q_powerSpec[ch1]; - q_pSI_ch[0] = q_powerSpecMsInv[ch1]; q_pS_ch[1] = q_powerSpec[ch2]; - q_pSI_ch[1] = q_powerSpecMsInv[ch2]; move16(); move16(); @@ -1072,20 +1072,18 @@ void mctStereoIGF_enc_fx( IF( NE_16( hMCT->hBlockData[b]->hStereoMdct->mdct_stereo_mode[n], hMCT->hBlockData[b]->hStereoMdct->IGFStereoMode[n] ) || EQ_16( hMCT->hBlockData[b]->hStereoMdct->mdct_stereo_mode[n], SMDCT_BW_MS ) ) { - Word16 exp_powerSpec_fx[CPE_CHANNELS], exp_powerSpecMsInv_fx[CPE_CHANNELS], exp_inv_spectrum_fx[CPE_CHANNELS]; + Word16 exp_powerSpec_fx[CPE_CHANNELS], exp_inv_spectrum_fx[CPE_CHANNELS]; FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { exp_powerSpec_fx[ch] = sub( Q31, q_pS_ch[ch] ); - exp_powerSpecMsInv_fx[ch] = sub( Q31, q_pSI_ch[ch] ); exp_inv_spectrum_fx[ch] = p_st[ch]->hTcxEnc->spectrum_e[n]; move16(); move16(); - move16(); } ProcessStereoIGF_fx( hMCT->hBlockData[b]->hStereoMdct, p_st, hMCT->hBlockData[b]->mask, p_orig_spectrum_fx, q_origSpec, q_origSpec, p_powerSpec_fx, exp_powerSpec_fx, - p_powerSpecMsInv_fx, exp_powerSpecMsInv_fx, p_inv_spectrum_fx, exp_inv_spectrum_fx, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 ); + p_powerSpecMsInv_fx, q_p_powerSpecMsInv_fx, p_inv_spectrum_fx, exp_inv_spectrum_fx, n, sp_aud_decision0[ch1], p_st[0]->total_brate, 1 ); } ELSE { diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 8acbc3e87..cbbc0d000 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -137,8 +137,10 @@ void stereo_mdct_core_enc_fx( Word32 *orig_spectrum_fx[CPE_CHANNELS][NB_DIV]; /* Pointers to MDCT output for a short block (L/R) */ Word64 powerSpec64[CPE_CHANNELS][N_MAX]; Word16 exp_powerSpec64[CPE_CHANNELS][NB_DIV]; - Word32 powerSpecMsInv_long_fx[CPE_CHANNELS][N_MAX]; /* MS inv power spectrum, also inverse MDST spectrum */ + Word32 powerSpecMsInv_long_fx[CPE_CHANNELS][N_MAX]; /* MS inv power spectrum, also inverse MDST spectrum */ + Word16 q_powerSpecMsInv_long_fx[CPE_CHANNELS][N_MAX]; /*Q: MS inv power spectrum, also inverse MDST spectrum */ Word32 *powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV]; + Word16 *q_powerSpecMsInv_fx[CPE_CHANNELS][NB_DIV]; Word32 quantized_spectrum_long_fx[CPE_CHANNELS][N_MAX]; /* quantized MDCT spectrum, inv ms mask mdst spectrum, scratch for MS spectra in the MS decision */ Word32 *quantized_spectrum_fx[CPE_CHANNELS][NB_DIV]; Word32 *inv_mdst_spectrum_fx[CPE_CHANNELS][NB_DIV]; @@ -152,8 +154,6 @@ void stereo_mdct_core_enc_fx( Word32 *p_mdst_spectrum_long_fx[CPE_CHANNELS]; Word32 mdst_spectrum_long_fx[CPE_CHANNELS][N_MAX]; Word32 *mdst_spectrum_fx[CPE_CHANNELS][NB_DIV]; - Word16 exp_powSpecMsInv[MCT_MAX_CHANNELS]; - Word16 tmp_q_powSpecInv[N_MAX], *exp_powSpecInv[2]; Word64 W_tmp; Encoder_State *st, **sts; STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct; @@ -186,11 +186,6 @@ void stereo_mdct_core_enc_fx( set16_fx( exp_powerSpec64[ch], 0, NB_DIV ); } - set16_fx( tmp_q_powSpecInv, 63, N_MAX ); - - exp_powSpecInv[0] = tmp_q_powSpecInv; - exp_powSpecInv[1] = &tmp_q_powSpecInv[N_TCX10_MAX]; - sts = hCPE->hCoreCoder; hStereoMdct = hCPE->hStereoMdct; hBstr = sts[0]->hBstr; @@ -254,6 +249,9 @@ void stereo_mdct_core_enc_fx( { inv_mdst_spectrum_fx[ch][0] = powerSpecMsInv_fx[ch][0] = powerSpecMsInv_long_fx[ch]; inv_mdst_spectrum_fx[ch][1] = powerSpecMsInv_fx[ch][1] = powerSpecMsInv_long_fx[ch] + N_TCX10_MAX; + q_powerSpecMsInv_fx[ch][0] = q_powerSpecMsInv_long_fx[ch]; + q_powerSpecMsInv_fx[ch][1] = q_powerSpecMsInv_long_fx[ch] + N_TCX10_MAX; + set16_fx( q_powerSpecMsInv_long_fx[ch], 63, L_FRAME48k ); quantized_spectrum_fx[ch][0] = quantized_spectrum_long_fx[ch]; quantized_spectrum_fx[ch][1] = quantized_spectrum_long_fx[ch] + N_TCX10_MAX; inv_spectrum_fx[ch][0] = quantized_spectrum_fx[ch][0]; @@ -444,7 +442,7 @@ void stereo_mdct_core_enc_fx( W_tmp = W_mac_32_32( W_mult_32_32( imdct, imdct ), imdst, imdst ); // exp: 2*exp norm = W_norm( W_tmp ); powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*exp-norm - exp_powSpecInv[n][i] = sub( shl( exp, 1 ), norm ); + q_powerSpecMsInv_fx[ch][n][i] = sub( 31, sub( shl( exp, 1 ), norm ) ); move32(); move16(); @@ -464,7 +462,7 @@ void stereo_mdct_core_enc_fx( W_tmp = W_mult_32_32( mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp) norm = W_norm( W_tmp ); powerSpecMsInv_fx[ch][n][0] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm) - exp_powSpecInv[n][0] = sub( exp, norm ); + q_powerSpecMsInv_fx[ch][n][0] = sub( 31, sub( exp, norm ) ); move32(); move16(); @@ -477,7 +475,7 @@ void stereo_mdct_core_enc_fx( W_tmp = W_mac_32_32( W_mult_32_32( mdst, mdst ), mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp) norm = W_norm( W_tmp ); powerSpecMsInv_fx[ch][n][i] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm) - exp_powSpecInv[n][i] = sub( exp, norm ); + q_powerSpecMsInv_fx[ch][n][i] = sub( 31, sub( exp, norm ) ); move32(); move16(); } @@ -486,7 +484,7 @@ void stereo_mdct_core_enc_fx( W_tmp = W_mult_32_32( mdct, mdct ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1) (exp) norm = W_norm( W_tmp ); powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = W_extract_h( W_shl( W_tmp, norm ) ); // exp: 2*(sts[ch]->hTcxEnc->spectrum_e[n]+1)-norm (exp-norm) - exp_powSpecInv[n][L_subframeTCX - 1] = sub( exp, norm ); + q_powerSpecMsInv_fx[ch][n][L_subframeTCX - 1] = sub( 31, sub( exp, norm ) ); move32(); move16(); } @@ -512,33 +510,6 @@ void stereo_mdct_core_enc_fx( move16(); } } - - /* Aligning the Q-factors */ - exp = MIN_16; - move16(); - FOR( n = 0; n < nSubframes; n++ ) - { - FOR( i = 0; i < L_subframeTCX; i++ ) - { - if ( powerSpecMsInv_fx[ch][n][i] != 0 ) - { - exp = s_max( exp, exp_powSpecInv[n][i] ); - } - } - } - IF( NE_16( exp, MIN_16 ) ) - { - FOR( n = 0; n < nSubframes; n++ ) - { - FOR( i = 0; i < L_subframeTCX; i++ ) - { - powerSpecMsInv_fx[ch][n][i] = L_shl( powerSpecMsInv_fx[ch][n][i], sub( exp_powSpecInv[n][i], exp ) ); - move32(); - } - } - } - exp_powSpecMsInv[ch] = exp; - move16(); } FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) @@ -656,7 +627,7 @@ void stereo_mdct_core_enc_fx( move16(); ProcessStereoIGF_fx( hStereoMdct, sts, ms_mask, orig_spectrum_fx, sub( Q31, p_orig_spectrum_e[0] ), sub( Q31, p_orig_spectrum_e[1] ), - p_powerSpec_fx, exp_powSpec, powerSpecMsInv_fx, exp_powSpecMsInv, inv_spectrum_fx, exp_inv_spectrum, + p_powerSpec_fx, exp_powSpec, powerSpecMsInv_fx, q_powerSpecMsInv_fx, inv_spectrum_fx, exp_inv_spectrum, n, hCPE->hCoreCoder[0]->sp_aud_decision0, hCPE->hCoreCoder[0]->element_brate, 0 ); } ELSE diff --git a/lib_enc/tcx_utils_enc_fx.c b/lib_enc/tcx_utils_enc_fx.c index acc52c2aa..680a69fa5 100644 --- a/lib_enc/tcx_utils_enc_fx.c +++ b/lib_enc/tcx_utils_enc_fx.c @@ -4029,15 +4029,15 @@ void ProcessStereoIGF_fx( Word32 *pITFMDCTSpectrum_fx[CPE_CHANNELS][NB_DIV], /* i : MDCT spectrum fir ITF */ Word16 q_pITFMDCTSpectrum_1, Word16 q_pITFMDCTSpectrum_2, - Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ - Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ - Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */ - Word16 exp_pPowerSpectrumMsInv_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrumMsInv_fx */ - Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ - Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */ - const Word16 frameno, /* i : flag indicating index of current subfr. */ - const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ - const Word32 element_brate, /* i : element bitrate */ + Word32 *pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: MDCT^2 + MDST^2 spectrum, or estimate */ + Word16 exp_pPowerSpectrum_fx[CPE_CHANNELS], /* i/o: exp of pPowerSpectrum_fx */ + Word32 *pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i : inverse power spectrum */ + Word16 *q_pPowerSpectrumMsInv_fx[CPE_CHANNELS][NB_DIV], /* i/o: Q of pPowerSpectrumMsInv_fx */ + Word32 *inv_spectrum_fx[CPE_CHANNELS][NB_DIV], /* i : inverse spectrum */ + Word16 exp_inv_spectrum_fx[CPE_CHANNELS], /* i/o: exp of inv_spectrum_fx */ + const Word16 frameno, /* i : flag indicating index of current subfr. */ + const Word16 sp_aud_decision0, /* i : sp_aud_decision0 */ + const Word32 element_brate, /* i : element bitrate */ const Word16 mct_on ) { Word16 ch, igfGridIdx, isIndepFlag, bsBits, pBsStart, curr_order; @@ -4078,7 +4078,7 @@ void ProcessStereoIGF_fx( IGFSaveSpectrumForITF_ivas_fx( hIGFEnc[1], igfGridIdx, pITFMDCTSpectrum_fx[1][frameno], sub( Q31, q_pITFMDCTSpectrum_2 ) ); - IGFEncApplyStereo_fx( hStereoMdct, ms_mask, hIGFEnc, igfGridIdx, sts, pPowerSpectrum_fx, exp_pPowerSpectrum_fx, pPowerSpectrumMsInv_fx, exp_pPowerSpectrumMsInv_fx, + IGFEncApplyStereo_fx( hStereoMdct, ms_mask, hIGFEnc, igfGridIdx, sts, pPowerSpectrum_fx, exp_pPowerSpectrum_fx, pPowerSpectrumMsInv_fx, q_pPowerSpectrumMsInv_fx, inv_spectrum_fx, exp_inv_spectrum_fx, frameno, sp_aud_decision0, element_brate, mct_on ); FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) -- GitLab From 253d721065338c97b05c4b32f4fe544bb8c650ba Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 13 May 2025 11:58:42 +0530 Subject: [PATCH 511/698] Fix for LTV Crash: Multi-channel 7_1_4 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1_4 out --- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index cbbc0d000..2a71fc34d 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -251,7 +251,7 @@ void stereo_mdct_core_enc_fx( inv_mdst_spectrum_fx[ch][1] = powerSpecMsInv_fx[ch][1] = powerSpecMsInv_long_fx[ch] + N_TCX10_MAX; q_powerSpecMsInv_fx[ch][0] = q_powerSpecMsInv_long_fx[ch]; q_powerSpecMsInv_fx[ch][1] = q_powerSpecMsInv_long_fx[ch] + N_TCX10_MAX; - set16_fx( q_powerSpecMsInv_long_fx[ch], 63, L_FRAME48k ); + set16_fx( q_powerSpecMsInv_long_fx[ch], 63, N_MAX ); quantized_spectrum_fx[ch][0] = quantized_spectrum_long_fx[ch]; quantized_spectrum_fx[ch][1] = quantized_spectrum_long_fx[ch] + N_TCX10_MAX; inv_spectrum_fx[ch][0] = quantized_spectrum_fx[ch][0]; -- GitLab From 9853dc8b3dc2c69104377492bdea69d721e0241d Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Tue, 13 May 2025 10:52:01 +0200 Subject: [PATCH 512/698] Add push/pop wmops for stereo_dmx_evs_enc --- lib_enc/ivas_stereo_dmx_evs_fx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 13ecbba00..9d0bb92af 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -1799,6 +1799,7 @@ void stereo_dmx_evs_enc_fx( Word64 W_tmp; Word16 W_tmp_q; + push_wmops( "stereo_dmx_evs_enc" ); if ( is_binaural ) { /* use of is_binaural flag is to be considered */ @@ -2149,6 +2150,7 @@ void stereo_dmx_evs_enc_fx( } Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15 + pop_wmops(); return; } -- GitLab From 430ae6cf3ae9af91659c7046cc42acf26329ee74 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 13 May 2025 12:38:38 +0200 Subject: [PATCH 513/698] deactivcate FIX_1439_SPEEDUP_synthesise_fb_high_band_fx --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index cbc77b6e7..1574146cc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -89,7 +89,7 @@ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ +//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ #define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ -- GitLab From b05870404f337050d4cb7e805a8b1f1482c4326b Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 13 May 2025 14:40:11 +0200 Subject: [PATCH 514/698] delete FIX_1439_SPEEDUP_synthesise_fb_high_band_fx wrapped code --- lib_com/swb_tbe_com_fx.c | 46 +--------------------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index c4605393d..408f75441 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7023,50 +7023,6 @@ void synthesise_fb_high_band_fx( tmp3 = add( sub( Qout, add( sub( 1, exp ), exp_tmp ) ), 16 ); /*Qout - (1 -exp +exp_tmp) + 16 */ FOR( i = 0; i < L_FRAME48k; i++ ) { -#ifdef FIX_1439_SPEEDUP_synthesise_fb_high_band_fx - L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ - Word32 L_tmp32; - Word16 tmp16; - - // if (L_tmp < 0) - if ( L_tmp < 0 ) - { - L_tmp32 = L_negate( L_tmp ); - } - if ( L_tmp < 0 ) - { - L_tmp32 = L_shl_sat( L_tmp32, tmp3 ); - } - if ( L_tmp < 0 ) - { - tmp16 = extract_h( L_tmp32 ); - } - if ( L_tmp < 0 ) - { - tmp16 = negate( tmp16 ); - } - - // if (L_tmp == 0) - if ( L_tmp == 0 ) - { - tmp16 = 0; - move16(); - } - - // if (L_tmp > 0) - if ( L_tmp > 0 ) - { - L_tmp32 = L_shl_sat( L_tmp, tmp3 ); - } - if ( L_tmp > 0 ) - { - tmp16 = extract_h( L_tmp32 ); - } - - output[i] = tmp16; - move16(); - -#else L_tmp = Mult_32_16( ratio2, tmp[i] ); /* Q(16-exp+exp_tmp-15 = 1-exp+exp_tmp) */ IF( L_tmp < 0 ) { @@ -7077,8 +7033,8 @@ void synthesise_fb_high_band_fx( { output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); + } -#endif } return; } -- GitLab From b09eaf4c04bf1d2fefe34427a77d5dcd9ddb650c Mon Sep 17 00:00:00 2001 From: marc emerit Date: Tue, 13 May 2025 14:59:58 +0200 Subject: [PATCH 515/698] merge float-pc and main_pc --- lib_com/options.h | 1 - lib_rend/lib_rend.c | 161 +++++++++----------------------------------- 2 files changed, 31 insertions(+), 131 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 0b0d18cac..d040b705a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -103,7 +103,6 @@ #define FIX_956_DECODER_COMMAND_LINE_FIX /* VA: Output correct error message when the decoder command-line has too many mandatory arguments. */ -//#define SPLIT_REND_WITH_HEAD_ROT_NEW /* Orange: split rendering code differ between branchs main-pc and float-pc, do not know what to do */ #define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index e96257115..02a812cf1 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -1479,6 +1479,9 @@ static ivas_error setRendInputActiveIsm( #ifdef SPLIT_REND_WITH_HEAD_ROT Word16 i; #endif + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + Word16 num_src; + inputIsm = (input_ism *) input; rendCtx = inputIsm->base.ctx; outConfig = *rendCtx.pOutConfig; @@ -1528,7 +1531,7 @@ static ivas_error setRendInputActiveIsm( #endif test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT_NEW +#ifdef SPLIT_REND_WITH_HEAD_ROT test(); test(); IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) @@ -1536,22 +1539,33 @@ static ivas_error setRendInputActiveIsm( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) #endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT -#ifdef NONBE_FIX_BINARY_BINAURAL_READING - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#endif -#else +#ifndef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif -#endif { return error; } +#else + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + + /* Open TD renderer wrappers */ + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->splitTdRendWrappers[i], inConfig, hRendCfg, NULL, *inputIsm->base.ctx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + + /* Assert same delay as main TD renderer */ + assert( inputIsm->splitTdRendWrappers[i].binaural_latency_ns == inputIsm->tdRendWrapper.binaural_latency_ns ); + } +#endif } ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) { @@ -1562,121 +1576,25 @@ static ivas_error setRendInputActiveIsm( } ELSE { -#ifdef SPLIT_REND_WITH_HEAD_ROT_NEW #ifndef SPLIT_REND_WITH_HEAD_ROT - if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ) != IVAS_ERR_OK ) { return error; } if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - if ( ( error = ivas_reverb_open( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac, hRendCfg, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) { return error; } } #else - if ( ( error = ivas_td_binaural_open_ext( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) - { - return error; - } - - if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { - if ( ( error = ivas_reverb_open( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac, hRendCfg, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) - { - return error; - } - } - else if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) - { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING - if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) -#else - if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) -#endif - { - return error; - } - } -#endif - -#else - Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; - Word16 num_src; - Word16 ivas_format; - IF( EQ_32( getAudioConfigType( inConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) - { - ivas_format = MC_FORMAT; - } - ELSE - { - ivas_format = ISM_FORMAT; - } - - move16(); IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; } - - Word16 nchan_rend = num_src; - move16(); - - test(); - IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; - IF( Src_p != NULL ) - { - IF( Src_p->SrcSpatial_p != NULL ) - { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - } - -#ifdef SPLIT_REND_WITH_HEAD_ROT - /* Open TD renderer wrappers */ - FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) - { - if ( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->splitTdRendWrappers[i], inConfig, hRendCfg, NULL, *inputIsm->base.ctx.pOutSampleRate, SrcInd, &num_src ) ) != IVAS_ERR_OK ) - { - return error; - } - - /* Assert same delay as main TD renderer */ - assert( inputIsm->splitTdRendWrappers[i].binaural_latency_ns == inputIsm->tdRendWrapper.binaural_latency_ns ); - - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[SrcInd[nS]]; - IF( Src_p != NULL ) - { - IF( Src_p->SrcSpatial_p != NULL ) - { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - } - } - -#endif - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) @@ -1684,7 +1602,6 @@ static ivas_error setRendInputActiveIsm( return error; } } -#ifdef SPLIT_REND_WITH_HEAD_ROT_NEW ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) { #ifdef NONBE_FIX_BINARY_BINAURAL_READING @@ -1697,8 +1614,6 @@ static ivas_error setRendInputActiveIsm( } } #endif - -#endif /* SPLIT_REND_WITH_HEAD_ROT_NEW */ } return IVAS_ERR_OK; @@ -6273,10 +6188,7 @@ static ivas_error renderIsmToBinauralRoom( IF( NE_32( ( error = ivas_rend_crendProcessSubframe( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, *ismInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) #else /* render 7_1_4 with BRIRs */ - IF( NE_32( ( error = ivas_rend_crendProcess( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, - NULL, NULL, NULL, NULL, p_tmpRendBuffer, *ismInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *ismInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, *ismInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif { return error; @@ -7089,9 +7001,7 @@ static ivas_error renderMcToBinaural( #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, p_tmpRendBuffer_fx, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, *mcInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, p_tmpRendBuffer_fx, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif { return error; @@ -7234,9 +7144,7 @@ static ivas_error renderMcToBinauralRoom( #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif { return error; @@ -7367,9 +7275,7 @@ static ivas_error renderMcCustomLsToBinauralRoom( #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, - p_tmpCrendBuffer, *mcInput->base.ctx.pOutSampleRate, getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif { return error; @@ -8087,9 +7993,7 @@ static ivas_error renderSbaToBinaural( #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, output_fx, output_fx, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, output_fx, *sbaInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, output_fx, output_fx, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif { return error; @@ -8218,10 +8122,7 @@ static ivas_error renderSbaToBinauralRoom( #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, - NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif { return error; -- GitLab From a20cf2d141040cb2e23050cfd5902952f91c9d1f Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 13 May 2025 15:31:17 +0200 Subject: [PATCH 516/698] apply clang patch --- lib_com/swb_tbe_com_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 408f75441..85ea15e9d 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -7033,7 +7033,6 @@ void synthesise_fb_high_band_fx( { output[i] = extract_h( L_shl_sat( L_tmp, tmp3 ) ); /*Qout*/ move16(); - } } return; -- GitLab From 10325469adbe638293dd59ce6d413218af4196b9 Mon Sep 17 00:00:00 2001 From: Fabian Bauer Date: Tue, 13 May 2025 14:57:45 +0000 Subject: [PATCH 517/698] delete FIX_1439_SPEEDUP_synthesise_fb_high_band_fx from options --- lib_com/options.h | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1574146cc..cce7932de 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -89,7 +89,6 @@ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ -//#define FIX_1439_SPEEDUP_synthesise_fb_high_band_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic /*FhG: reduces maintenance complexity & reduces WMOPS & prepares STAGE2 patch*/ #define FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 /*FhG: reduces WMOPS*/ #define FIX_1481_HARDCODE_DIV /* FhG: hardcode division results in stereo_dmx_evs_init_encoder_fx() */ -- GitLab From 42f1abb6475c802742ad48580d3a1e1782d17a93 Mon Sep 17 00:00:00 2001 From: marc emerit Date: Tue, 13 May 2025 20:54:09 +0200 Subject: [PATCH 518/698] initialize q factor --- lib_rend/lib_rend.c | 106 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 02a812cf1..4b4d5c456 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -1481,6 +1481,16 @@ static ivas_error setRendInputActiveIsm( #endif Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; Word16 num_src; + Word16 ivas_format; + IF( EQ_32( getAudioConfigType( inConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) + { + ivas_format = MC_FORMAT; + } + ELSE + { + ivas_format = ISM_FORMAT; + } + inputIsm = (input_ism *) input; rendCtx = inputIsm->base.ctx; @@ -1554,6 +1564,31 @@ static ivas_error setRendInputActiveIsm( return error; } + Word16 nchan_rend = num_src; + move16(); + + test(); + IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } + /* Open TD renderer wrappers */ FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { @@ -1564,6 +1599,22 @@ static ivas_error setRendInputActiveIsm( /* Assert same delay as main TD renderer */ assert( inputIsm->splitTdRendWrappers[i].binaural_latency_ns == inputIsm->tdRendWrapper.binaural_latency_ns ); + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } } #endif } @@ -1577,14 +1628,38 @@ static ivas_error setRendInputActiveIsm( ELSE { #ifndef SPLIT_REND_WITH_HEAD_ROT - if ( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ) != IVAS_ERR_OK ) + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; } + Word16 nchan_rend = num_src; + move16(); - if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + test(); + IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) { - if ( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } + + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) { return error; } @@ -1595,6 +1670,31 @@ static ivas_error setRendInputActiveIsm( return error; } + Word16 nchan_rend = num_src; + move16(); + + test(); + IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -- GitLab From 361e8c5a62a47569ba7f61dbaaa51f01a04b267d Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 14 May 2025 08:53:17 +0530 Subject: [PATCH 519/698] Fix for 3GPP issue 1375: Underflow observed in the quantize_pars_fx() function in the MC param upmix Link #1375 --- lib_com/basop_util.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib_com/basop_util.c b/lib_com/basop_util.c index dc9013a42..e52f404f6 100644 --- a/lib_com/basop_util.c +++ b/lib_com/basop_util.c @@ -2640,10 +2640,16 @@ Word32 BASOP_Util_Add_Mant32Exp /* o : normalized result mantissa */ */ if ( !a_m ) - a_e = add( b_e, 0 ); + { + a_e = b_e; + move16(); + } if ( !b_m ) - b_e = add( a_e, 0 ); + { + b_e = a_e; + move16(); + } shift = sub( a_e, b_e ); shift = s_max( -31, shift ); @@ -2664,7 +2670,10 @@ Word32 BASOP_Util_Add_Mant32Exp /* o : normalized result mantissa */ if ( shift ) L_tmp = L_shl( L_tmp, shift ); if ( L_tmp == 0 ) - a_e = add( 0, 0 ); + { + a_e = 0; + move16(); + } if ( L_tmp != 0 ) a_e = sub( a_e, shift ); *ptr_e = a_e; -- GitLab From f1dbfb661fd3759e15d0b306bed7751377c59e02 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 9 May 2025 12:05:04 +0530 Subject: [PATCH 520/698] Bug fix in find_targets_ivas_fx and GetEnergyCldfb --- lib_com/cldfb.c | 177 +++++++++++++++++++++++++++++++++++++++++- lib_enc/find_tar_fx.c | 10 +-- 2 files changed, 181 insertions(+), 6 deletions(-) diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c index 6a9581498..bf832b640 100644 --- a/lib_com/cldfb.c +++ b/lib_com/cldfb.c @@ -60,6 +60,19 @@ static void cldfb_init_proto_and_twiddles( HANDLE_CLDFB_FILTER_BANK hs ); static void cldfb_init_proto_and_twiddles_enc_fx( HANDLE_CLDFB_FILTER_BANK hs ); +static void GetEnergyCldfb_ivas_fx( Word32 *energyLookahead, /*!< o: Q(*sf_energyLookahead) | pointer to the result in the core look-ahead slot */ + Word16 *sf_energyLookahead, /*!< o: pointer to the scalefactor of the result in the core look-ahead slot */ + const Word16 numLookahead, /*!< i: Q0 the number of look-ahead time-slots */ + Word16 **realValues, /*!< i: Q(sf_Values) | the real part of the CLDFB subsamples */ + Word16 **imagValues, /*!< i: Q(sf_Values) | the imaginary part of the CLDFB subsamples */ + Word16 sf_Values, /*!< i: scalefactor of the CLDFB subcamples - apply as a negated Exponent */ + Word16 numberBands, /*!< i: Q0 | number of CLDFB bands */ + Word16 numberCols, /*!< i: Q0 | number of CLDFB subsamples */ + Word32 *energyHF, /*!< o: Q31 | pointer to HF energy */ + Word16 *energyHF_Exp, /*!< o: pointer to exponent of HF energy */ + Word32 *energyValuesSum, /*!< o: Q(2*sf_Values-4) | pointer to sum array of energy values, not initialized*/ + Word16 *energyValuesSum_Exp, /*!< o: pointer to exponents of energyValuesSum, not initialized */ + TEC_ENC_HANDLE hTecEnc ); /*-------------------------------------------------------------------* * cplxMult() @@ -1552,6 +1565,168 @@ void resampleCldfb_ivas_fx( return; } +static void GetEnergyCldfb_ivas_fx( Word32 *energyLookahead, /*!< o: Q(*sf_energyLookahead) | pointer to the result in the core look-ahead slot */ + Word16 *sf_energyLookahead, /*!< o: pointer to the scalefactor of the result in the core look-ahead slot */ + const Word16 numLookahead, /*!< i: Q0 the number of look-ahead time-slots */ + Word16 **realValues, /*!< i: Q(sf_Values) | the real part of the CLDFB subsamples */ + Word16 **imagValues, /*!< i: Q(sf_Values) | the imaginary part of the CLDFB subsamples */ + Word16 sf_Values, /*!< i: scalefactor of the CLDFB subcamples - apply as a negated Exponent */ + Word16 numberBands, /*!< i: Q0 | number of CLDFB bands */ + Word16 numberCols, /*!< i: Q0 | number of CLDFB subsamples */ + Word32 *energyHF, /*!< o: Q31 | pointer to HF energy */ + Word16 *energyHF_Exp, /*!< o: pointer to exponent of HF energy */ + Word32 *energyValuesSum, /*!< o: Q(2*sf_Values-4) | pointer to sum array of energy values, not initialized*/ + Word16 *energyValuesSum_Exp, /*!< o: pointer to exponents of energyValuesSum, not initialized */ + TEC_ENC_HANDLE hTecEnc ) +{ + Word16 j; + Word16 k; + Word16 s; + Word16 sm; + Word32 nrg; + Word16 numberColsL; + Word16 numberBandsM; + Word16 numberBandsM20; + Word32 energyValues[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word16 energyValuesSumE[CLDFB_NO_CHANNELS_MAX]; + // Word16 freqTable[2] = {20, 40}; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + FOR( k = 0; k < numberCols; k++ ) + { + FOR( j = 0; j < numberBands; j++ ) + { + nrg = L_mult0( realValues[k][j], realValues[k][j] ); // Q(2*sf_Values) + nrg = L_mac0( nrg, imagValues[k][j], imagValues[k][j] ); // Q(2*sf_Values) + + energyValues[k][j] = nrg; + move32(); + } + } + + IF( GE_16( numberBands, freqTable[1] ) && hTecEnc != NULL ) + { + Word32 *tempEnergyValuesArry[CLDFB_NO_COL_MAX]; + Word16 ScaleX2; + assert( numberCols == CLDFB_NO_COL_MAX ); + FOR( j = 0; j < numberCols; j++ ) + { + tempEnergyValuesArry[j] = &energyValues[j][0]; + } + + ScaleX2 = shl( sf_Values, 1 ); + calcHiEnvLoBuff_Fix( + numberCols, + freqTable, + 1, + tempEnergyValuesArry, + hTecEnc->loBuffer, + hTecEnc->hiTempEnv, + ScaleX2 ); + } + + FOR( j = 0; j < numberBands; j++ ) + { + energyValuesSum[j] = 0; + move32(); + energyValuesSumE[j] = 31; + move16(); + FOR( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + nrg = L_shr_r( energyValues[k][j], sub( energyValuesSumE[j], 31 ) ); // Q(2*sf_Values - (energyValuesSumE[j]-31)) + IF( LT_32( L_sub( maxWord32, nrg ), energyValuesSum[j] ) ) + { + energyValuesSumE[j] = add( energyValuesSumE[j], 1 ); + move16(); + energyValuesSum[j] = L_shr_r( energyValuesSum[j], 1 ); + move32(); + nrg = L_shr_r( nrg, 1 ); + } + energyValuesSum[j] = L_add( energyValuesSum[j], nrg ); + move32(); + } + test(); + if ( j == 0 || GT_16( energyValuesSumE[j], *energyValuesSum_Exp ) ) + { + *energyValuesSum_Exp = energyValuesSumE[j]; + move16(); + } + } + FOR( j = 0; j < numberBands; j++ ) + { + energyValuesSum[j] = L_shr_r( energyValuesSum[j], sub( *energyValuesSum_Exp, energyValuesSumE[j] ) ); // Q(energyValuesSum_Exp - (2*sf_Values)) + move32(); + } + *energyValuesSum_Exp = sub( *energyValuesSum_Exp, shl( sf_Values, 1 ) ); + move16(); + + IF( GT_16( numberBands, 20 ) ) + { + numberBandsM = s_min( numberBands, 40 ); + numberBandsM20 = sub( numberBandsM, 20 ); + + numberColsL = sub( numberCols, numLookahead ); + + /* sum up CLDFB energy above 8 kHz */ + s = BASOP_util_norm_s_bands2shift( i_mult( numberColsL, numberBandsM20 ) ); + s = sub( s, 4 ); + nrg = 0; + move32(); + FOR( k = 0; k < numberColsL; k++ ) + { + FOR( j = 20; j < numberBandsM; j++ ) + { + nrg = L_add_o( nrg, L_shr_o( energyValues[k][j], s, &Overflow ), &Overflow ); + } + } + + s = sub( sub( shl( sf_Values, 1 ), 1 ), s ); + sm = sub( s_min( s, *sf_energyLookahead ), 1 ); + + *energyHF = L_add( L_shr( nrg, limitScale32( sub( s, sm ) ) ), + L_shr( *energyLookahead, sub( *sf_energyLookahead, sm ) ) ); // Q(31-(-nm)) + move32(); + + *energyHF_Exp = negate( sm ); + move16(); + + /* process look-ahead region */ + s = BASOP_util_norm_s_bands2shift( i_mult( numLookahead, numberBandsM20 ) ); + s = sub( s, 2 ); + nrg = 0; + move32(); + FOR( k = numberColsL; k < numberCols; k++ ) + { + FOR( j = 20; j < numberBandsM; j++ ) + { + nrg = L_add_o( nrg, L_shr_o( energyValues[k][j], s, &Overflow ), &Overflow ); + } + } + + s = sub( shl( sf_Values, 1 ), s ); + sm = sub( s_min( s, 44 ), 1 ); + BASOP_SATURATE_WARNING_OFF_EVS + /* nrg + 6.1e-5f => value 0x40000000, scale 44 */ + *energyLookahead = L_add_sat( L_shr_sat( nrg, sub( s, sm ) ), + L_shr_sat( 0x40000000, s_max( -31, s_min( 31, sub( 44, sm ) ) ) ) ); + move32(); + BASOP_SATURATE_WARNING_ON_EVS + *sf_energyLookahead = sm; + move16(); + + return; + } + + + *energyHF = 0x40000000; + move32(); + *energyHF_Exp = 17; + move16(); +} + void analysisCldfbEncoder_ivas_fx( Encoder_State *st, /* i/o: encoder state structure */ @@ -1613,7 +1788,7 @@ void analysisCldfbEncoder_ivas_fx( AnalysisPostSpectrumScaling_Fx( st->cldfbAnaEnc, ppBuf_Real, ppBuf_Imag, ppBuf_Real16, ppBuf_Imag16, &enerScale.lb_scale16 ); - GetEnergyCldfb( &st->energyCoreLookahead_Fx, &st->sf_energyCoreLookahead_Fx, 1, ppBuf_Real16, ppBuf_Imag16, enerScale.lb_scale16, st->cldfbAnaEnc->no_channels, st->cldfbAnaEnc->no_col, &st->currEnergyHF_fx, &st->currEnergyHF_e_fx, ppBuf_Ener, enerBuffSum_exp, st->hTECEnc ); + GetEnergyCldfb_ivas_fx( &st->energyCoreLookahead_Fx, &st->sf_energyCoreLookahead_Fx, 1, ppBuf_Real16, ppBuf_Imag16, enerScale.lb_scale16, st->cldfbAnaEnc->no_channels, st->cldfbAnaEnc->no_col, &st->currEnergyHF_fx, &st->currEnergyHF_e_fx, ppBuf_Ener, enerBuffSum_exp, st->hTECEnc ); return; } diff --git a/lib_enc/find_tar_fx.c b/lib_enc/find_tar_fx.c index 8d3efb834..989f309d2 100644 --- a/lib_enc/find_tar_fx.c +++ b/lib_enc/find_tar_fx.c @@ -219,13 +219,13 @@ void find_targets_ivas_fx( /* first half: xn[] --> cn[] */ temp[0] = 0; move16(); - preemph_copy_fx( xn, cn, tilt_fac, L_SUBFR / 2, temp ); - syn_filt_s_lc_fx( 1, Ap, cn, temp, L_SUBFR / 2 ); /* Q-1 -> Q-2 */ - Residu3_lc_fx( p_Aq, M, temp, cn, L_SUBFR / 2, 1 ); /* Q-2 -> Q-1 */ - Scale_sig( cn, L_SUBFR / 2, 1 ); + preemph_copy_fx( xn, cn, tilt_fac, L_subfr / 2, temp ); + syn_filt_s_lc_fx( 1, Ap, cn, temp, L_subfr / 2 ); /* Q-1 -> Q-2 */ + Residu3_lc_fx( p_Aq, M, temp, cn, L_subfr / 2, 1 ); /* Q-2 -> Q-1 */ + Scale_sig( cn, L_subfr / 2, 1 ); /* second half: res[] --> cn[] (approximated and faster) */ - Copy( &res[i_subfr + ( L_SUBFR / 2 )], cn + ( L_SUBFR / 2 ), L_SUBFR / 2 ); + Copy( &res[i_subfr + ( L_subfr / 2 )], cn + ( L_subfr / 2 ), L_subfr / 2 ); } /*---------------------------------------------------------------* -- GitLab From 441cc348071908a2d4030877dc8a5e3a19ac51ac Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 14 May 2025 16:29:38 +0530 Subject: [PATCH 521/698] Fix for 3GPP issue 1395: Stereo Encoder 32 kbps, DTX on: Plop-artefact in right Channel LTV Link #1395 --- lib_enc/ivas_stereo_switching_enc_fx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib_enc/ivas_stereo_switching_enc_fx.c b/lib_enc/ivas_stereo_switching_enc_fx.c index 8e372b311..a54e56fb9 100644 --- a/lib_enc/ivas_stereo_switching_enc_fx.c +++ b/lib_enc/ivas_stereo_switching_enc_fx.c @@ -898,6 +898,8 @@ void stereo_switching_enc_fx( IF( sts[0]->hLPDmem != NULL ) { Copy( sts[0]->hLPDmem->old_exc, sts[1]->hLPDmem->old_exc, L_EXC_MEM ); + sts[1]->hLPDmem->q_lpd_old_exc = sts[0]->hLPDmem->q_lpd_old_exc; + move16(); } Copy( sts[0]->lsf_old_fx, sts[1]->lsf_old_fx, M ); /* Qlog2(2.56) */ Copy( sts[0]->lsp_old_fx, sts[1]->lsp_old_fx, M ); /* Q15 */ -- GitLab From 3b59641e8a6fc5fc7c5d0c0ee7731839f0412bbb Mon Sep 17 00:00:00 2001 From: marc emerit Date: Wed, 14 May 2025 20:20:54 +0200 Subject: [PATCH 522/698] compiling ok to test --- apps/decoder.c | 24 + apps/renderer.c | 23 + lib_com/options.h | 5 +- lib_rend/ivas_crend_fx.c | 312 +- lib_rend/ivas_rom_binaural_crend_head.h | 60 + lib_rend/ivas_rom_binaural_crend_head_fx.c | 114453 +++++++++--------- lib_rend/ivas_stat_rend.h | 14 + lib_util/hrtf_file_reader.c | 41 +- lib_util/hrtf_file_reader.h | 11 + 9 files changed, 57723 insertions(+), 57220 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 01a373fe7..64f131206 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -687,6 +687,29 @@ int main( #ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) { +#ifdef FIX_OLD_BINARY_FORMAT + cleanup_SetOfHRTF( hSetOfHRTF ); + hrtfFileReader_close( &hrtfReader ); + strcat( arg.hrtfFileName, "new" ); + + if ( hrtfFileReader_open( arg.hrtfFileName, &hrtfReader ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + else + { + destroy_SetOfHRTF( hSetOfHRTF ); + } + } +#else if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); @@ -696,6 +719,7 @@ int main( { destroy_SetOfHRTF( hSetOfHRTF ); } +#endif } #else if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) diff --git a/apps/renderer.c b/apps/renderer.c index 851583bbf..1ef7473c5 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -1090,6 +1090,28 @@ int main( if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfFileReader, args.sampleRate ) ) != IVAS_ERR_OK ) { +#ifdef FIX_OLD_BINARY_FORMAT + cleanup_SetOfHRTF( hSetOfHRTF ); + hrtfFileReader_close( &hrtfFileReader ); + strcat( args.customHrtfFilePath, "new" ); + if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s: %s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfFileReader, args.sampleRate ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s:%s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); + goto cleanup; + } + else + { + destroy_SetOfHRTF( hSetOfHRTF ); + } + } +#else if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { fprintf( stderr, "\nError in loading HRTF binary file %s:%s \n\n", args.customHrtfFilePath, ivas_error_to_string( error ) ); @@ -1099,6 +1121,7 @@ int main( { destroy_SetOfHRTF( hSetOfHRTF ); } +#endif } if ( ( error = IVAS_REND_GetHrtfFastConvHandle( hIvasRend, &hHrtfFastConv ) ) != IVAS_ERR_OK ) diff --git a/lib_com/options.h b/lib_com/options.h index 2c698d7ad..1e8036f6b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -106,7 +106,7 @@ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ #define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ -//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES @@ -114,6 +114,9 @@ #endif #define FIX_OLD_BINARY_FORMAT /* Orange: trick to make tests succesful when changing hrtf binary format between ref and new branch*/ #define FIX_OLD_BINARY_FILE /* Orange: current hrtf binary file in ref branch contains wrong values for fastconv value. This switch can be activated to compre running codec with and without hrtf file*/ +#define FIX_WARNING_RENDER_CONFIG /* Orange: fix warning on windows build */ +#define FIX_INV_DIFFUSE_WEIGHT /* Orange : Fix error in energy compensation in late binaural */ + #endif /* #################### End BASOP porting switches ############################ */ diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index c6644b573..134d02996 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -71,6 +71,10 @@ ivas_error ivas_hrtf_init( hHrtf->max_num_ir = 0; hHrtf->max_num_iterations = 0; hHrtf->index_frequency_max_diffuse = 0; +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->same_inv_diffuse_weight = 1; + move16(); +#endif move32(); move16(); move16(); @@ -79,10 +83,16 @@ ivas_error ivas_hrtf_init( FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = 0; move16(); +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = 0; + move16(); +#endif hHrtf->num_iterations[i][j] = 0; move16(); hHrtf->pIndex_frequency_max[i][j] = NULL; @@ -101,8 +111,9 @@ ivas_error ivas_hrtf_init( hHrtf->pOut_to_bin_diffuse_im_fx[j] = NULL; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING +#ifdef FIX_INV_DIFFUSE_WEIGHT hHrtf->init_from_rom = 1; + move16(); #endif return IVAS_ERR_OK; @@ -253,6 +264,7 @@ static ivas_error ivas_rend_initCrend_fx( { #ifdef NONBE_FIX_BINARY_BINAURAL_READING hHrtf->init_from_rom = 1; + move16(); #endif IF( EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) { @@ -422,6 +434,7 @@ static ivas_error ivas_rend_initCrend_fx( IF( EQ_32( output_Fs, 48000 ) ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[tmp]; // Q15 @@ -431,11 +444,14 @@ static ivas_error ivas_rend_initCrend_fx( hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[tmp]; // Q15 } move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[j][tmp]; +#endif hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_48kHz[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[tmp][j]; @@ -444,6 +460,9 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[j][tmp]; +#endif hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_48kHz[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[tmp][j]; @@ -458,6 +477,7 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_32( output_Fs, 32000 ) ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[tmp]; // Q15 @@ -467,11 +487,14 @@ static ivas_error ivas_rend_initCrend_fx( hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[tmp]; // Q15 } move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[j][tmp]; +#endif hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_32kHz[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[tmp][j]; @@ -480,6 +503,9 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[j][tmp]; +#endif hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_32kHz[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[tmp][j]; @@ -494,6 +520,7 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_32( output_Fs, 16000 ) ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[tmp]; // Q15 @@ -503,11 +530,14 @@ static ivas_error ivas_rend_initCrend_fx( hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[tmp]; // Q15 } move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[j][tmp]; +#endif hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_16kHz[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[tmp][j]; @@ -516,6 +546,9 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[j][tmp]; +#endif hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_16kHz[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[tmp][j]; @@ -549,11 +582,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_48kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[i][j]; @@ -589,11 +627,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_32kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[i][j]; @@ -630,11 +673,17 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15 move16(); +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_16kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[i][j]; @@ -678,11 +727,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_48kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[i][j]; @@ -718,11 +772,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_32kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[i][j]; @@ -759,11 +818,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_16kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[i][j]; @@ -807,11 +871,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_48kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[i][j]; @@ -847,11 +916,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_32kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[i][j]; @@ -888,11 +962,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15 + move16(); +#endif hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_16kHz[i][j]; hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[i][j]; @@ -937,7 +1016,6 @@ static ivas_error ivas_rend_initCrend_fx( { #ifdef NONBE_FIX_BINARY_BINAURAL_READING hHrtf->init_from_rom = 0; - move16(); #endif IF( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) { @@ -951,7 +1029,7 @@ static ivas_error ivas_rend_initCrend_fx( #ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( hSetOfHRTF->hHRTF_brir_combined == NULL ) { - return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Invalid command wrong output format" ); } #endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_brir_combined->latency_s_fx; // Q31 @@ -963,7 +1041,7 @@ static ivas_error ivas_rend_initCrend_fx( #ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( hSetOfHRTF->hHRTF_hrir_combined == NULL ) { - return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Invalid command wrong output format" ); } #endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_combined->latency_s_fx; // Q31 @@ -1025,6 +1103,7 @@ static ivas_error ivas_rend_initCrend_fx( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Channel configuration not specified!\n\n" ); } move16(); +#ifndef FIX_INV_DIFFUSE_WEIGHT IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { @@ -1035,11 +1114,15 @@ static ivas_error ivas_rend_initCrend_fx( hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight_fx[tmp]; // Q15 } move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_brir_combined->inv_diffuse_weight_fx[j][tmp]; + move16(); +#endif hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_brir_combined->num_iterations[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_brir_combined->pIndex_frequency_max[tmp][j]; @@ -1048,6 +1131,10 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight_fx[j][tmp]; + move16(); +#endif hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_combined->num_iterations[tmp][j]; hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_combined->pIndex_frequency_max[tmp][j]; @@ -1080,11 +1167,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight_fx[i]; // Q31 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight_fx[j][i]; + move16(); +#endif hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->num_iterations[i][j]; hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->pIndex_frequency_max[i][j]; @@ -1126,11 +1218,16 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight_fx[i]; // Q15 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight_fx[j][i]; + move16(); +#endif hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->num_iterations[i][j]; hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->pIndex_frequency_max[i][j]; @@ -1172,11 +1269,17 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { +#ifndef FIX_INV_DIFFUSE_WEIGHT hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight_fx[i]; // Q31 move16(); - +#endif FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight_fx[j][i]; + move16(); +#endif + hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_foa->num_iterations[i][j]; hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_foa->pIndex_frequency_max[i][j]; @@ -1208,6 +1311,21 @@ static ivas_error ivas_rend_initCrend_fx( } } +#ifdef FIX_INV_DIFFUSE_WEIGHT + hHrtf->same_inv_diffuse_weight = 1; + for ( i = 0; i < hHrtf->max_num_ir; i++ ) + { + if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { + if ( hHrtf->inv_diffuse_weight_fx[0][i] != hHrtf->inv_diffuse_weight_fx[1][i] ) + { + hHrtf->same_inv_diffuse_weight = 0; + break; + } + } + } +#endif + pCrend->hHrtfCrend = hHrtf; return IVAS_ERR_OK; @@ -1520,8 +1638,15 @@ ivas_error ivas_rend_initCrendWrapper( } hCrend->hTrack = NULL; +#ifdef FIX_INV_DIFFUSE_WEIGHT + hCrend->freq_buffer_re_diffuse_fx[0] = NULL; + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + hCrend->freq_buffer_im_diffuse_fx[0] = NULL; + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; +#else hCrend->freq_buffer_re_diffuse_fx = NULL; hCrend->freq_buffer_im_diffuse_fx = NULL; +#endif hCrend->hReverb = NULL; hCrend->reflections = NULL; hCrend->delay_line_rw_index = 0; @@ -1668,22 +1793,80 @@ ivas_error ivas_rend_openCrend( IF( max_total_ir_len > 0 ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + IF( ( hCrend->freq_buffer_re_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + IF( hHrtf->same_inv_diffuse_weight == 0 ) + { + IF( ( hCrend->freq_buffer_re_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + } + ELSE + { + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + } +#else IF( ( hCrend->freq_buffer_re_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } +#endif +#ifdef FIX_INV_DIFFUSE_WEIGHT + set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[0], max_total_ir_len ); + IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL ) + { + set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[1], max_total_ir_len ); + } +#else set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx, max_total_ir_len ); - +#endif +#ifdef FIX_INV_DIFFUSE_WEIGHT + IF( ( hCrend->freq_buffer_im_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + IF( hHrtf->same_inv_diffuse_weight == 0 ) + { + IF( ( hCrend->freq_buffer_im_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + } + ELSE + { + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; + } +#else IF( ( hCrend->freq_buffer_im_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } +#endif +#ifdef FIX_INV_DIFFUSE_WEIGHT + set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[0], max_total_ir_len ); + IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL ) + { + set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[1], max_total_ir_len ); + } +#else set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx, max_total_ir_len ); +#endif } ELSE { +#ifdef FIX_INV_DIFFUSE_WEIGHT + hCrend->freq_buffer_re_diffuse_fx[0] = NULL; + hCrend->freq_buffer_im_diffuse_fx[0] = NULL; + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; +#else hCrend->freq_buffer_re_diffuse_fx = NULL; hCrend->freq_buffer_im_diffuse_fx = NULL; +#endif } max_total_ir_len = add( extract_l( L_shr( L_add( L_shl( Mult_32_32( hHrtf->latency_s_fx, output_Fs ), 1 ), 1 ), 1 ) ), subframe_length ); /*(int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;*/ @@ -1837,7 +2020,31 @@ void ivas_rend_closeCrend( free( hCrend->lfe_delay_line_fx ); hCrend->lfe_delay_line_fx = NULL; } +#ifdef FIX_INV_DIFFUSE_WEIGHT + IF( hCrend->freq_buffer_re_diffuse_fx[0] != NULL ) + { + free( hCrend->freq_buffer_re_diffuse_fx[0] ); + hCrend->freq_buffer_re_diffuse_fx[0] = NULL; + } + + IF( hCrend->freq_buffer_im_diffuse_fx[0] != NULL ) + { + free( hCrend->freq_buffer_im_diffuse_fx[0] ); + hCrend->freq_buffer_im_diffuse_fx[0] = NULL; + } + + IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL ) + { + free( hCrend->freq_buffer_re_diffuse_fx[1] ); + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + } + IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL ) + { + free( hCrend->freq_buffer_im_diffuse_fx[1] ); + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; + } +#else IF( hCrend->freq_buffer_re_diffuse_fx != NULL ) { free( hCrend->freq_buffer_re_diffuse_fx ); @@ -1848,6 +2055,7 @@ void ivas_rend_closeCrend( free( hCrend->freq_buffer_im_diffuse_fx ); hCrend->freq_buffer_im_diffuse_fx = NULL; } +#endif IF( hCrend->hTrack != NULL ) { free( hCrend->hTrack ); @@ -1941,6 +2149,9 @@ static ivas_error ivas_rend_crendConvolver( Word16 nchan_in, nchan_out; const Word32 *pIn; Word32 *pFreq_buf_re, *pFreq_buf_im; +#ifdef FIX_INV_DIFFUSE_WEIGHT + Word32 *pFreq_buf2_re, *pFreq_buf2_im; +#endif const Word32 *pFreq_filt_re, *pFreq_filt_im; Word32 pOut[L_FRAME48k * 2]; Word32 tmp_out_re[L_FRAME48k]; @@ -1987,8 +2198,18 @@ static ivas_error ivas_rend_crendConvolver( IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + set32_fx( &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse], 0, subframe_length ); + set32_fx( &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse], 0, subframe_length ); + if ( pCrend->hHrtfCrend->same_inv_diffuse_weight == 0 ) + { + set32_fx( &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse], 0, subframe_length ); + set32_fx( &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse], 0, subframe_length ); + } +#else set32_fx( &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse], 0, subframe_length ); set32_fx( &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse], 0, subframe_length ); +#endif } i = 0; @@ -2001,6 +2222,38 @@ static ivas_error ivas_rend_crendConvolver( { IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { +#ifdef FIX_INV_DIFFUSE_WEIGHT + IF( pCrend->hHrtfCrend->same_inv_diffuse_weight ) + { + pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; + pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; + pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; + pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; + + FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) + { + pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i]; + pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i]; + } + } + ELSE + { + pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; + pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; + pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse_fx[1][offset_diffuse]; + pFreq_buf2_im = &hCrend->freq_buffer_im_diffuse_fx[1][offset_diffuse]; + pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; + pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; + + for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) + { + pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i]; + pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i]; + pFreq_buf2_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i]; + pFreq_buf2_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i]; + } + } +#else pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse]; // Qx pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse]; // Qx pFreq_filt_re = &hCrend->freq_buffer_re_fx[i][offset]; // Qx @@ -2012,6 +2265,7 @@ static ivas_error ivas_rend_crendConvolver( move32(); move32(); } +#endif } pFreq_buf_re = &hCrend->freq_buffer_re_fx[i][offset]; // Qx pFreq_buf_im = &hCrend->freq_buffer_im_fx[i][offset]; // Qx @@ -2072,9 +2326,21 @@ static ivas_error ivas_rend_crendConvolver( index_in = index_in % pCrend->hHrtfCrend->num_iterations_diffuse[0]; move16(); offset_diffuse = L_mult0( index_in, subframe_length ); - - pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse]; // Qx - pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse]; // Qx +#ifdef FIX_INV_DIFFUSE_WEIGHT + if ( pCrend->hHrtfCrend->same_inv_diffuse_weight ) + { + pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[0][offset_diffuse]; + pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[0][offset_diffuse]; + } + else + { + pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[j][offset_diffuse]; + pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[j][offset_diffuse]; + } +#else + pFreq_buf_re = &hCrend->freq_buffer_re_diffuse_fx[offset_diffuse]; // Qx + pFreq_buf_im = &hCrend->freq_buffer_im_diffuse_fx[offset_diffuse]; // Qx +#endif pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_re_fx[j][offset]; // Q31 pFreq_filt_im = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_im_fx[j][offset]; // Q31 FOR( k = 0; k < pCrend->hHrtfCrend->pIndex_frequency_max_diffuse[j][m]; k++ ) diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h index 456db9e26..1d18ec02a 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.h +++ b/lib_rend/ivas_rom_binaural_crend_head.h @@ -61,7 +61,11 @@ extern UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BIN extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +#else extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]; +#endif extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; @@ -75,7 +79,11 @@ extern UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BIN extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +#else extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]; +#endif extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; @@ -89,7 +97,11 @@ extern UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BIN extern UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +#else extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]; +#endif extern UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; @@ -110,7 +122,11 @@ extern UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHA extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; +#else extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[FOA_CHANNELS]; +#endif extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; @@ -124,7 +140,11 @@ extern UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHA extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; +#else extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[FOA_CHANNELS]; +#endif extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; @@ -138,7 +158,11 @@ extern UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHA extern UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; +#else extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[FOA_CHANNELS]; +#endif extern UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; @@ -158,7 +182,11 @@ extern UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_C extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; +#else extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[HOA2_CHANNELS]; +#endif extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; @@ -172,7 +200,11 @@ extern UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_C extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; +#else extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[HOA2_CHANNELS]; +#endif extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; @@ -186,7 +218,11 @@ extern UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_C extern UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; +#else extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[HOA2_CHANNELS]; +#endif extern UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; @@ -205,7 +241,11 @@ extern UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_C extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; +#else extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[HOA3_CHANNELS]; +#endif extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; extern Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; @@ -219,7 +259,11 @@ extern UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_C extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; +#else extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[HOA3_CHANNELS]; +#endif extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; extern Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; @@ -233,7 +277,11 @@ extern UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_C extern UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; extern UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; +#else extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[HOA3_CHANNELS]; +#endif extern UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; extern Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; extern Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; @@ -253,7 +301,11 @@ extern UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BIN extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]; extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +#else extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]; +#endif extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]; extern Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; extern Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; @@ -267,7 +319,11 @@ extern UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BIN extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]; extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +#else extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]; +#endif extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]; extern Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; extern Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819]; @@ -281,7 +337,11 @@ extern UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BIN extern UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]; extern UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz; +#ifdef FIX_INV_DIFFUSE_WEIGHT +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +#else extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]; +#endif extern UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]; extern Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774]; extern Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774]; diff --git a/lib_rend/ivas_rom_binaural_crend_head_fx.c b/lib_rend/ivas_rom_binaural_crend_head_fx.c index 8b51d8f2a..b4ebfe6e5 100644 --- a/lib_rend/ivas_rom_binaural_crend_head_fx.c +++ b/lib_rend/ivas_rom_binaural_crend_head_fx.c @@ -61,7 +61,11 @@ const UWord16 CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINA const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -72,7 +76,11 @@ const UWord16 CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINA const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +#endif const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -83,7 +91,11 @@ const UWord16 CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINA const UWord16 CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz = 0; -const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +#endif const UWord16 *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -101,7 +113,11 @@ const UWord16 CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHAN const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; +#else +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; +#endif const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -112,7 +128,11 @@ const UWord16 CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHAN const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; +#else +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; +#endif const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -123,7 +143,11 @@ const UWord16 CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHAN const UWord16 CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz = 0; -const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; +#else +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[FOA_CHANNELS]={0, 0, 0, 0}; +#endif const UWord16 *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -140,7 +164,11 @@ const UWord16 CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CH const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -151,7 +179,11 @@ const UWord16 CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CH const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -162,7 +194,11 @@ const UWord16 CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CH const UWord16 CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz = 0; -const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[HOA2_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif const UWord16 *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -178,7 +214,11 @@ const UWord16 CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CH const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz = 0; -const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -189,7 +229,11 @@ const UWord16 CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_CH const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz = 0; -const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -200,8 +244,12 @@ const UWord16 CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CH const UWord16 CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; const UWord16 CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; const UWord16 CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz = 0; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; +#else const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[HOA3_CHANNELS]={0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f}; -const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif +const Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[HOA3_CHANNELS]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const UWord16 *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const Word32 *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; @@ -217,8 +265,13 @@ const UWord16 CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINA const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {40, 40}; const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}}; const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz = 98; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f},{0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f}}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907},{7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907}}; +#else const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[HRTF_LS_CHANNELS]={0.224183f, 0.227455f, 0.241830f, 0.207155f, 0.218087f, 0.222942f, 0.232158f, 0.248203f, 0.249262f, 0.261591f, 0.246276f, 0.279163f, 0.285701f, 0.262541f, 0.271844f}; -const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907,}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[HRTF_LS_CHANNELS]={7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8167, 8571, 8069, 9147, 9361, 8602, 8907}; +#endif const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98},{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98}}; /* Sample Rate = 32000 */ @@ -227,8 +280,13 @@ const UWord16 CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINA const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {40, 40}; const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 137, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 139, 133, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 128, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 123, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 125, 160}},{{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 125, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 140, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 129, 123, 128, 126, 130, 130, 131, 131, 130, 134, 133, 149, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 124, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 126, 131, 123, 128, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 127, 136, 128, 128, 127, 132, 132, 129, 125, 120, 160}},{{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160},{99, 100, 111, 117, 114, 114, 118, 116, 121, 124, 124, 121, 125, 130, 127, 132, 132, 130, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 136, 128, 128, 160}},{{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160},{105, 100, 112, 114, 115, 108, 117, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 139, 153, 116, 160}},{{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160},{110, 106, 113, 110, 122, 116, 119, 125, 123, 128, 125, 127, 128, 127, 133, 130, 132, 132, 143, 155, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 135, 127, 160}},{{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160},{110, 117, 106, 118, 118, 116, 121, 124, 128, 125, 122, 122, 126, 131, 124, 130, 133, 131, 139, 134, 131, 160}}}; const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz = 97; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f},{0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f}}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907},{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}}; +#else const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[HRTF_LS_CHANNELS]={0.224190f, 0.227445f, 0.241827f, 0.207131f, 0.218113f, 0.222941f, 0.232139f, 0.248192f, 0.249239f, 0.261572f, 0.246309f, 0.279145f, 0.285786f, 0.262528f, 0.271847f}; -const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907,}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}; +#endif const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97},{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 63, 63, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97}}; /* Sample Rate = 16000 */ @@ -237,59354 +295,59359 @@ const UWord16 CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINA const UWord16 CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {40, 40}; const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]={{{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80},{77, 76, 77, 77, 77, 76, 77, 76, 77, 76, 77, 77, 77, 78, 76, 76, 77, 77, 77, 77, 77, 76, 80}},{{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80},{76, 77, 77, 75, 77, 78, 77, 76, 77, 77, 76, 77, 77, 77, 77, 77, 76, 77, 76, 76, 77, 78, 80}},{{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80},{77, 76, 76, 78, 75, 76, 74, 78, 77, 76, 77, 77, 77, 76, 76, 77, 78, 78, 77, 77, 77, 77, 80}},{{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80},{76, 76, 76, 76, 77, 77, 76, 78, 77, 77, 77, 77, 78, 78, 77, 77, 77, 77, 77, 78, 77, 78, 80}},{{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80},{76, 77, 77, 76, 77, 77, 75, 77, 77, 77, 76, 77, 77, 77, 77, 78, 77, 77, 77, 77, 76, 76, 80}},{{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80},{77, 76, 77, 77, 77, 77, 77, 77, 76, 78, 76, 78, 75, 76, 77, 77, 76, 76, 77, 78, 78, 77, 80}},{{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80},{77, 77, 75, 76, 76, 77, 77, 77, 77, 77, 77, 75, 77, 76, 76, 76, 77, 77, 76, 77, 76, 77, 80}},{{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80},{75, 76, 77, 77, 75, 77, 75, 76, 76, 77, 77, 77, 78, 78, 77, 77, 76, 77, 78, 78, 78, 76, 80}},{{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80},{77, 77, 77, 76, 77, 77, 76, 76, 76, 77, 77, 75, 76, 78, 78, 77, 77, 78, 78, 77, 76, 76, 80}},{{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80},{76, 75, 76, 76, 77, 77, 77, 77, 77, 77, 74, 78, 77, 78, 78, 77, 76, 77, 77, 77, 77, 76, 80}},{{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80},{76, 76, 77, 76, 77, 77, 76, 76, 76, 76, 77, 77, 76, 76, 77, 75, 77, 76, 76, 76, 77, 77, 80}},{{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80},{76, 76, 77, 75, 78, 77, 77, 77, 77, 77, 77, 77, 77, 76, 78, 77, 76, 78, 76, 77, 76, 77, 80}},{{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80},{76, 77, 77, 76, 76, 77, 77, 75, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 77, 76, 76, 78, 80}},{{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80},{74, 76, 74, 76, 75, 76, 76, 76, 76, 77, 77, 78, 77, 78, 75, 76, 77, 76, 78, 76, 78, 77, 80}},{{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80},{76, 77, 77, 77, 76, 78, 77, 76, 75, 77, 77, 77, 76, 78, 77, 78, 78, 78, 77, 76, 77, 75, 80}}}; const UWord16 CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz = 77; +#ifdef FIX_INV_DIFFUSE_WEIGHT +const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f},{0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f}}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907},{7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}}; +#else const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[HRTF_LS_CHANNELS]={0.223532f, 0.226827f, 0.248830f, 0.208782f, 0.220391f, 0.219790f, 0.231187f, 0.248730f, 0.251408f, 0.263698f, 0.243858f, 0.281483f, 0.283080f, 0.261660f, 0.273527f}; -const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}; +const Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[HRTF_LS_CHANNELS]={7346, 7452, 7924, 6787, 7147, 7305, 7606, 8132, 8167, 8571, 8071, 9147, 9364, 8602, 8907}; +#endif const UWord16 CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]={{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77},{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 55, 55, 61, 61, 61, 65, 67, 67, 67, 67, 67, 67, 69, 72, 72, 72, 73, 73, 75, 75, 75, 75, 75, 75, 75, 75, 75, 77}}; //BRIR and HRIR coeff tables in Q29 const Word32 CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955] ={ { { -4881767, -5023501, -1853815, 6442, 4696010, -2676302, 1832340, -340376, 657130, -3187403, -6676527, --1373316, 2622615, -1711545, 1595044, 2317672, 1963874, -1463510, 1111323, -4126927, -760209, -1038845, 1705639, -134755, -98247, 518617, 1014686, -3453154, -2878165, 1218160, 2386928, --1188095, 2498597, 4788889, -6432788, 922344, -3082176, -2074469, 1426466, -788663, 3940096, --1213865, 3547643, 1880122, 572304, -242666, 1890859, 126702, -398895, -1990181, 5753109, --3987340, -1225139, 2041183, 2226404, -84826, -1961190, 1124208, -2168422, 2252710, 416612, -831613, -59593, -746787, -726386, 3005403, -7708393, 1824824, -1005559, -4444755, -772557, -3782256, 1804423, 2357400, -3384971, 2731062, -1190243, 1726040, 1020592, 1348620, -1440962, -586263, 2006824, -1318555, -3025805, 1251446, -2810519, 564788, 2028298, 24696, -1029718, --1138703, 527744, 1123671, -475131, 1345399, 38655, 971736, 788127, -339839, -214748, -387621, -459025, -235686, -361851, 395137, -628139, 330176, -908922, -191126, -855235, --89657, -287763, -908922, -230854, 466541, -8884140, 7032472, -3280281, 1623498, 1366337, -284542, -1851131, -82141, -4964446, -6192806, 1779727, -1127429, 2024003, 2050847, 5713917, --4540854, 741419, 3921305, 3787624, -3668439, -3931506, -2037425, -3405372, 405874, -1095217, --2614561, -2014340, 104690, -6270653, -5959267, -1210644, 1298691, -481036, 597000, -657130, -1471026, -3261491, 3939559, -1287417, 2284386, -409096, 1642288, -2968896, 1127966, 2175938, -2638184, 1169305, 584116, 978179, -991601, -2449742, 5217312, 3939022, 1720134, -1848447, -6446746, 4366908, -1709934, 4109747, -227096, -3093450, -681289, -1073742, -2725694, 1904818, -2211908, 1085553, -2069637, 4555350, -2869038, 2697240, 3890704, -659814, 489089, -5519570, --2377801, -5945309, 980863, 2929705, -2783139, -793495, 1224603, -2651606, -658741, 1396401, --54224, 1021665, -517007, -1378148, -3853123, -1867237, -605054, -881005, -217970, -11811, -355945, -417686, -556735, -1380295, -550830, 115427, 431107, 386547, -686121, -61203, -93952, 287226, -62814, 294742, 37044, 475668, 50466, -637266, -1071594, -1159104, -537, -655519, -850404, 239444, 7524783, 3449396, -2877091, 1291175, 993211, 11982422, --3519189, 3437048, 5852967, -1124745, 5328444, 2168422, 3632469, -4740034, -1738388, -5556077, --2550674, 3743064, -86436, -2645163, 656056, -3898220, -281320, -2554432, 3583613, -1566053, --464930, -1412507, 1917703, 825171, 68719, -464393, 1581085, -5863167, -4482872, 2003065, -565325, -580894, -2938831, 6957847, 2030983, -912681, 2333778, 2744484, 35970, 1348620, -686658, -3464428, 3155190, -4121558, -3068754, 3657165, -4343286, 3754338, 1727651, -3331821, -5717139, 3042984, 2218888, -1577864, 5186173, 1170916, -666257, -1528472, 1606855, 567473, --860604, -6112276, -840203, -1225139, 1896228, -3609920, 4855998, -1720134, 3987340, -4172561, -180926, -479963, 4956929, -2341294, -1570347, 845572, 1872606, -110595, 1009854, -802085, --4478577, -558346, -273804, -286689, -570157, -139586, 69256, -671089, -821413, -983548, --1014686, 28991, -366683, -30602, 668404, -810675, 534723, 549756, 1391033, -1662689, -1108102, 431107, 872415, -151398, 1293859, 416612, -548682, -1033477, -234076, -519691, -12522514, -10364830, -9095667, -2920041, 9592809, -1321776, -5172215, 6571837, -4350802, 3112241, --221728, -7122667, -4836133, 6032819, -3880503, 2995740, -4049617, 3991098, -1751273, -1089311, --433255, -3921305, 2099165, 2895345, -3932580, 983548, -1987496, 829466, 1831267, -563714, -2616172, 797253, 2145873, 3372086, -4283693, -3155727, 3921305, 214212, 3052111, 2964064, --2705293, -4057134, -1589675, 719407, 5391795, -5773510, 2425046, -6448894, -7840463, -1837709, --4466766, -738198, -5298379, -10136660, -5338645, 4728759, 4443681, 2873333, -3339337, 9735080, --2947958, 1654099, -5330592, -5055714, 1379758, 12885, -448824, -6386080, -2046015, -354335, --1248762, -1231045, -3401077, -2761664, 756451, -875100, -1844152, 226023, -3293166, 607201, -1949915, 3332358, 1901597, -2798171, 2998424, -1928440, -136365, 3314104, 1451699, 493384, --1034550, 1708323, 1999307, 1531693, 387621, -848793, 340376, 2356327, 1261647, 1518808, -698469, -879931, 1309965, 244276, -93416, 358630, -617938, 223338, 396748, -701153, -1343251, 1919850, 2317672, -152471, -121333, 323733, -1410360, 2105071, -89657, 1309428, --272730, 15993384, -5283884, 7463580, -2025077, 10040560, -1978906, -1598265, 1681480, 1991791, --1723893, -11630235, 1125818, -1167694, -3096672, -229781, -565325, 4066797, -1331977, 9803263, --1311039, 1054951, -712965, 5519033, -1101122, 1864016, -4614406, -239444, -3169686, -3370476, --944893, -1024887, 41876, 3507915, -6328098, -1951526, 2151779, -813359, 4383014, 919123, --1104880, -2995740, -2881923, -3178813, -5785321, 2086280, 2459406, 2066416, -10086731, -1584843, -7132330, 3897683, -1610076, -423054, -3118146, -7038378, -7342247, 7223062, -2257542, -5035313, --2743410, 3871376, 3180960, 250719, 3565360, 1358820, 3448322, -1812476, -7197829, -2571612, --3238942, -3791919, 5308580, 3390340, -584116, 5787469, 8838506, -2221035, 3747896, -3532074, --432718, -58519, 3850975, -415001, 966905, 761820, 1197222, 2938295, -3033858, 2279017, --1575716, 129386, -1931662, 217433, 1021129, 2059974, 1578937, -155156, 566936, 26307, --235686, 1012002, -2861522, -510564, -2283849, 420370, -409633, -473520, -999654, -708133, --1191317, 1169842, 602369, -23965918, 13195213, 4814659, -1092532, -1052804, 78383, -3637837, --6666863, -1437203, 3279208, 10165114, 6835978, -9239012, -1751810, -5491116, 3780108, -455803, --12481712, -3673271, 7688529, 4753992, 2641405, 6519761, 3959423, -649077, -802622, 1937567, --4737349, -2794950, 1117228, 5690295, -2367601, -4754529, -6883759, -3460670, 3473018, 11194832, -801548, -1938641, 2394981, -2283849, -8261370, 637803, -5823976, -4582193, -5433134, 3423626, --307090, -7747584, 1477469, 2966212, 3064459, -8383776, -4639102, -3107946, -2063195, -893353, --3084324, -1479616, -3994320, -8136279, -930934, -6906308, -8298951, -5131949, -1450625, 1458141, --4932233, -7286949, 2175401, 5889474, -288300, -1054415, -678068, 4290673, -6364068, 4792110, -7549479, 7344394, 5786395, 9869835, 141197, -4034585, 2669322, 464393, -1025423, -893890, -27380, -2224256, 3273839, 190589, 261993, -1978906, -533650, 1094680, 1245541, -1142998, --1047435, 645856, 3377455, -415001, 1294933, 1156420, 2889976, -2308008, 166430, -26307, --2573759, 415001, 378494, 2218888, 259309, 475668, 1905892, 1216013, -3212099, 1233193, --1138703, 1047972, -9897752, 3763465, -4885526, -824634, 1314797, 2950106, -390842, 5151814, -144955, -1009317, -13895293, 6473590, -2568391, -2931852, 5008469, -8039642, -11072963, 4550518, --3870839, -5173288, -1627793, 10037339, 6308770, -3636764, -2148558, 4684736, -1375463, -472446, -1358820, 4573604, 8353175, 5339718, 6760279, -1007707, -283468, 192737, -4440460, 1165010, --1867237, 11389716, -8679055, -5003100, -4588099, -4271345, 2739116, 1570884, 4074850, -645856, --5733245, -7652021, -2218351, -9533754, -13322452, -2641405, 363462, 10384157, 2054068, -8176007, --2106682, 7793218, -3289945, 2632815, 2335925, 4388920, -6169721, -9216463, -4094178, -4674535, -14926085, 1700807, -4790499, 3282966, 2486786, -1066763, 1876901, 3449933, -419296, 6660958, --8778913, -7822209, 2543695, -3593814, 7952132, -3643743, -212064, 4316979, -1320703, 3829500, --238371, -155693, -270583, -1254131, -147640, 3450469, 1258425, 3353833, 1852742, 1693291, -108448, -1175747, -551903, 1428077, -445603, 461172, -689879, 2421288, -1983738, 1427540, --1779190, 2442763, -2305324, 261993, -234613, -202937, 1695438, 2306934, -2412698, 1722819, -908386, -758599, 3505767, 8449274, 2602750, -804770, 5808944, -1219234, -7451769, -1469953, --748398, 7141994, -4187056, -1081795, -2310693, 1065689, -2339684, 340913, 2273648, 3315715, -4847945, 3127810, 1472100, 12599823, 4919348, 4067334, -634581, -10135586, 566936, -8462696, -2457795, -5775121, 1294396, -92342, 3136400, 15517717, 4349192, -2546379, 5530844, -4539781, -4699231, -2863670, 8061117, -4574677, -136902, -6251862, 3634079, 6082748, -7367480, 14576045, --3704946, 960462, -2357937, -4068408, 1481227, -4525285, -12696460, 2025077, -3257196, -805306, --7878044, 1743757, -2850248, -13072807, -5968931, -3723737, -11560978, 6408091, 16432545, 19926500, --19174882, -14671608, -8169565, 712965, 4664872, -5986111, 2642479, -6780143, 1671816, 9148817, -14173929, -9917616, 15882252, 5026186, 1786706, 2636036, 2801393, -3628174, 5398237, 4962835, -6024766, 4605279, 1888712, 7026030, -46708, 2147484, -209380, -101469, 3776887, -1219771, --4735202, -1343788, 2971044, 2280628, 886374, -118112, -370978, -480499, 2995740, 2372970, -1009317, -2820720, 623844, 691490, -24696, 3197066, 1355599, 1956358, -85362, 2373506, -1346472, 2400887, 3360812, 3499325, 158377, 57445, -1867237, 3867618, 3455301, -488016, --1154273, 319438, 2471217, -1005559, 7070590, -13735842, 19587198, 263067, 11410654, 4032974, --4198868, -4343286, 10564546, -6462852, 6622840, 8184597, -1215476, -6022081, 194884, 8469139, -4723927, 4275640, 3717831, -930397, 1254667, 2739116, 10806675, 7543573, -5977521, -5151814, --1023276, -2693481, -1343788, -5905580, -3960497, 5328981, 9517648, 2298881, 14424111, -4228932, -15785615, 555125, 7365332, 17362942, 12287901, 3811784, 3455301, 7752953, -1859721, -7257421, --171262, 7284265, -4427575, -8303246, 174483, -1466731, 15897821, 12700755, -289373, 17941152, --1739999, 9561671, 5015985, 7523172, -1136556, -6436546, 8003672, -1823214, 9385577, 6326487, -19979114, -11430519, -2059974, -22890028, 4702453, -11352672, -1642825, 10256382, -4406637, 4100083, --1988570, 12021613, -3335579, -8707509, -759672, -3091840, 3541738, -744640, 5807870, 6749541, -1728724, -2026688, 5395016, -1414118, 2274185, -172336, -3755412, 2305861, 2460480, 4629975, -2411624, 5211406, 2325725, -304943, 113817, -1880122, -31675, 5101885, -1991791, -4208531, -2209761, -494995, 696322, 4137127, 902480, 855235, 1730335, 2678449, -999117, -742493, -1844152, 3308736, 5588290, 4990215, -82678, 2252174, -22012, -459562, 2404108, 3443490, -3100430, -1967632, -10737, -788663, 4136054, 588947, -842350, 501437, -13181255, -9683004, -4715874, -7831873, 4438312, -4739497, 1265405, 12062416, -2091649, -11455752, 3055869, -4836670, -11615202, -12242804, -8551817, 4920422, 5578089, 8457327, 265214, -895501, 5452998, -3395172, --8381092, 5126044, -3469797, -6716255, 1954747, 6456947, -4820027, 12191265, 4923107, -513785, -1569274, 5931887, 2585570, -21006686, 8514236, -2223719, -2252174, -3694746, 11094437, -19864, -11817066, 405874, 1000727, 1213328, -3170223, -1369021, 5724118, -6802692, 1556926, 18927384, -1642825, 13889924, 1054951, -2951180, -1562294, -9529996, -19597398, -14362908, 6448357, 8872866, --3898220, 14866492, 6381785, -10808822, -6249715, 13601625, 9730248, 8978629, 2773475, -4325569, -109522, -862752, -8442295, -2713883, -4940286, -23137526, -9913321, -648003, 15453829, 3328063, --3585224, 1542430, 13269301, -3413962, 669478, -42413, 3361349, -4483409, -2090575, -3383361, --1870995, -1279363, 3194382, -285078, -567473, -333397, 2506114, 1866163, 3907883, -2895345, --4306242, 1417339, -4555350, -2663954, 590558, 1515050, 549219, -947040, 4795331, -2374580, --1399623, -5673652, 2126009, -5146445, 3970161, 1582696, 2647311, -4386772, 412317, -892816, -2096481, -2604898, 1645509, -2350958, 2673080, -4864588, 213675, -5676873, 6107981, 5746666, -12443594, 4695473, 4124242, 14296872, 11941620, 9955197, 323196, 3659849, 702227, -2406256, --2878165, 2282775, -1220308, -8682813, 1806034, 8372502, -178778, -2508261, 2531346, -21111912, -6920266, -8454643, 5138929, 7052873, 6349036, -7975755, 4175782, -889595, -255551, 12381317, -9028021, 47245, 4799089, 3536369, -1768453, -7190312, 1656247, 6004901, 42950, 8798241, -2583960, 7951595, 15751256, 750546, 6315213, 6700686, 8414378, -432718, -5504001, 13597330, --5360119, 10963441, -13069585, -10766946, 14918569, -826781, 4887136, 8761196, 13011067, 16838956, -7067369, 2255932, -8319352, 3651259, -1752884, -15189689, 12771622, 7925289, -12435004, -799938, -712965, -15566572, 5154498, 12262132, 7227893, -166967, 4683125, 3310883, -7274601, 13427678, -1242319, -2704756, 6899865, 13281649, 5188858, -595390, -4712116, -3715147, -1650878, 2223719, -3714073, 5456219, 1750199, 898185, 1675037, 6386080, 5708012, 7106024, -139050, -811749, -2797098, 6077379, -23622, 516470, -1273995, 2779918, 460098, -758599, -2357400, 1411434, --4461934, -7936563, -402116, 4377646, -155693, 3080565, -3800509, 2354179, 130460, 2680597, -387621, -2181307, 1752347, -1490891, -1202591, -556735, -4808216, 3328600, -1792612, 1344862, -2612414, 79457, -716723, -2270427, -3124589, -704912, -34845608, -21667036, 7091528, 7424388, -14332843, 23693188, -6510634, -3702799, -7533910, -6987375, -8889509, -9532680, 787053, 3822521, -3011309, 14945412, 666257, 14664629, -726923, 5043366, 6803765, 5209796, 10932302, 7775502, -568546, 9606768, -103079, -1146756, -5519033, 6495601, -855235, -14330695, -12362526, 7762617, --1771674, 17066052, 10221485, 10969346, 4089346, -21500070, 5204427, 13495324, -2045478, 3914326, --3264175, 2663954, 16999480, -608812, 14252849, 23688356, 1364189, -8968429, -221728, 228170, --14848776, 20103668, 9622874, -2694555, -1114007, 14558865, 6907381, -17695266, -14356465, 5647882, --6228240, 8425115, 6132140, 2652679, -6963216, -12579422, -572304, 3156801, 2392834, 13559749, --18213882, 2643016, -1218697, -15487115, -7346542, -15575699, 13605920, -4642860, 18800146, -14789183, -1401233, -7130720, 10697153, 4616553, -4587025, -918049, 9862319, 589484, 3102040, -5718749, --2995740, -4840965, 8749922, 4302484, 2684, 2291902, 2649995, -8013872, 578210, -2276870, -2840584, 1640141, -1687922, -8189966, -2805688, -6057515, 7244536, -5388037, 1216013, -1470489, -7176891, -1538672, -1200443, -2568927, -4395899, -294742, -2899103, 2805688, 7919920, 6825240, --429497, -7215008, 9176734, 24713242, -29417304, -8230768, -14341433, -604517, 4662187, 778463, -19720880, -20353850, 9621800, -2778844, 3928821, -2464238, 10828149, -5971615, -10080825, -841814, --2939905, 7656853, -640487, 5177583, 11470784, -2385854, -8603356, -1148367, 12899934, -7589207, -3071975, 2906082, 507343, -1168231, 12810814, -480499, -3311420, -21400748, 6880538, -5291937, --13525389, -11757473, -3131031, -13033615, -7690139, -11317239, 5364951, -13356811, 13326210, -12258374, -8259222, -6330782, 16157130, -15652471, -9105331, -2351495, 9357660, 3863860, 70867, -6437082, --12839805, 1312113, 5005785, 18327700, 9596031, 4007205, -10487236, 6242735, -9304510, -10472741, -9136469, -10166188, 4838281, 11882564, 9894531, -2630131, -3796214, -8553964, 14274324, 1409286, -13660680, 22113176, -4337380, -11584064, -5192079, -3847754, -7975218, 3512210, -13229036, 5770826, -4297652, 3985730, 10437844, -7372848, 373662, -1329829, 2636036, 9521942, 263067, 7492034, --2726231, -162135, 924492, -4220879, -1530619, 4508642, 2358474, -6039261, -7927436, -3741990, -3476776, 3152506, -3491272, 11323681, 3295851, -8242042, 4148939, 6063420, 15052250, 12264816, -6850473, 2561948, 1439888, -6299644, -4968741, -181462, -5033165, 980326, -2924336, -9207873, -5085242, -3025805, -1298691, 1126355, 5015985, 155156, -4264366, 15992311, 22290880, -24363202, -17250200, 11905649, 225486, 8462159, 29749090, -8858907, -9046275, 2470680, 8495982, 12119324, -3753265, -12147241, 12938589, -5280126, 26246008, -1091459, -4759361, 8220568, 6629282, 6531572, --649614, 24592446, -21117818, 4674535, -739271, 6469295, -9018894, -17667348, 8236137, 6389301, -6652368, -6437082, -4958540, 20493974, 7475391, 25854630, 2042794, -10096394, -1398549, 5444408, --2637110, 26854284, -3782256, 14445049, -2994666, 24055574, 8560944, 6206765, -6281390, -1760937, -13107703, -133681, 14061186, 10491531, 12386686, -17293686, 2369748, 11696807, 14185203, 10464151, -7977365, 19168976, 23655606, -18687402, -2532420, 36088464, -9105331, -10260140, 23270132, 31442918, -269509, -700617, -17551920, -14551886, -1257889, 15602006, -2662880, -3392487, 403190, -1602023, --4756677, -12646531, -4799089, -1305670, -7577933, 122407, 7116224, -4521527, 9190693, -9979357, -8067023, -2318746, 6988449, -7569343, -63888, 5041218, 2865817, 8884140, -1939715, -5234492, --2455648, 2399276, 8151311, 2152316, -3316789, 11324218, -3929895, 5810017, 5881958, -1404454, --1593433, -2976949, 16751983, -6556805, 1904281, 4017942, 6054830, -3411815, -11330124, -6733435, --2203318, 12558484, 5961952, -1282585, 496606, 4270808, -1099512, -150324, 4286378, 2115808, -895501, -182536, 9993852, 22502944, -1388885, 7006166, -19249506, 18299246, -9762998, -6044093, --16851842, -10961293, 34517040, 436476, -24321326, -10890963, -733903, 43487, -3219078, 26641682, -12459700, -2341294, -11159399, -1126355, 7011534, -3376918, 35554276, 7485591, 15627775, 5312875, --8019778, -20221242, 4727149, -317291, 3147137, -15693810, -1660542, -10632192, 11985643, -26307, -1960653, 12346957, -11277510, -8366597, 2451353, 439160, 3693135, -17342542, -13544179, -29637422, --15449534, 1152662, -16865800, 2141041, -12239046, -7452842, 21919902, 6765647, -10665478, 6434398, -2484639, -227096, 21089364, -3755412, 25549150, 9629854, -10997801, -31336618, 5437429, 4816806, -17273284, -9494025, -22404160, -8148090, 6497212, 947040, -5343476, -16299401, -5178120, -22963580, --25957708, 7928510, -1442572, 26411902, -8506183, -16402480, -14086419, -1498407, 18811420, -1219234, -6933688, 11858405, 9249212, -4343286, 6139656, 8031052, 2765959, 8230768, 8312373, -6105833, --838056, 11609297, -2332704, 1414118, 11285027, -2382096, 6705518, -8568460, 3274376, 6221797, --3777424, 3609920, 3734474, -8037495, 10356240, -10023380, 5022428, 4911832, 8231305, -2311766, --5609228, 10730976, -1424319, 7855495, -11720429, -6015102, -8595840, -7573101, 1130113, -6296422, -4512937, 301721, 1911797, -12093554, 1336809, -3665755, 16426639, -17712446, -850404, 27506044, --5641977, 8308078, 3061775, 3850975, -25334402, 21470004, -1897839, -20213726, -11771968, 10980084, --2851858, 5623186, 74088, -8228621, -6125697, 3940633, -6137509, -1217086, -166430, -29392608, --7566122, -19620484, 4584878, 7332046, 5369, -8488466, 3702262, -3921842, 11813844, -25974888, -1939715, 4844186, 15195594, -11157788, 14169097, -10985989, 9080098, 2652142, 11062225, -16863116, -5421860, -8217346, -18041010, 12112345, -14566382, -29349660, 4525822, -2505040, 23529978, -10998874, -3441880, 11008538, 15670188, 17819282, 2064269, -5735929, -10871099, 628139, 8533026, 11831561, --22908282, 26146150, -23622, -17184702, -12878996, -22957138, 9641128, 5923834, 9431211, 4373351, -24824910, -8470749, 26965416, -14253923, 6453189, -5623723, -12263205, -37042484, 21249888, 4319664, --9714679, -25053618, -1288490, 4987531, -1984275, 9562208, -6648073, -7858180, -1130650, 4239133, --6926709, -6733435, -4304631, -1022739, 4115653, -1917166, -2069637, -9759239, 7649874, 524523, --5308580, 4889284, -3798362, 8043937, -2206540, 4169340, 5338645, 9872519, -3110093, 8992588, -1165010, 777926, -9195525, -7085623, 2498060, 3830037, 1501091, 795106, -1619740, -5853504, --3209951, -2619930, -6508486, -2784750, 11937862, -5570036, -6467147, 3953518, -14443438, 248571, --3636764, -21937082, -54224, 12146704, -4784057, -23766202, -3757560, -34746284, 16877610, -38405060, -22974316, -26546656, -23154168, 6629282, 19937238, 14886357, -13176960, 13965623, 25074020, 4466766, -3772592, 5906654, 2289755, -14744086, 17995376, -30137248, -18699214, 1703491, -1835025, -1926293, --3975529, -7504919, 4057670, 27752468, 7209103, 3861713, 2633889, -13051869, 16146930, -2911451, --27881318, -4298189, 636192, 599685, -19061064, -13495324, 14733348, -4791573, 25256556, 4673998, -59056, -20526186, -11207180, 7558069, 3300682, -5601711, 21651468, -17107928, -10341744, -754841, --1215476, 20381768, 1709397, 23843510, 59593, -19504520, 4909685, -16631187, 12720619, -2346126, -17315160, 32628866, -50177568, 17100950, 7019587, 9185324, 19086834, 4699768, -22972170, -5364414, --2018098, -4186519, 11851962, -23617488, 2317135, -6200859, -3277597, -16281684, -8654359, -24621436, -2831457, -1574106, 2627983, 6750615, -9887015, -1833414, 12050604, -7386270, 2449742, -4127464, --12015171, 5601711, 7437810, -8533026, -779537, -13464186, -669478, -19464792, 7105487, 4728759, --2297808, 2036351, -4773856, 768799, 4083440, -3164317, -3491272, 11042361, 13700946, -3104725, -4640176, 2128156, 14065481, 6127845, -17375828, 2259690, 10209674, -5786395, 10318122, 3205119, -4518843, 41084048, 35499516, -10193568, -13768591, -841814, -27055610, 15756088, -1569811, 5927055, -2076617, -13692356, 40987408, -17650704, -72368592, -10616622, 14412300, -48730700, -8370892, 15212774, --41280004, 5695664, 26835492, -18993420, 26771604, -25759604, 22997402, 28532542, -18268106, 7749195, --2656437, 590558, -7753490, -11330124, -2108292, 17550846, -11355894, -18891414, -10327786, -15218143, --1632625, -11951820, -1973001, 6269579, -2861522, 17142826, -15176804, -18643380, 14810121, -19718732, --29236916, -37484864, -13074417, -918586, 7262253, 20845624, -8741332, 9329206, 9757092, -6897718, --3251290, 34367792, -22762790, -903554, 23519240, 7274064, 18489298, -4650913, 6727530, 26090852, -13406740, -1443109, -3205119, -16120086, 6581501, 26246546, -24445344, 18559628, -24190866, 7035157, -34160560, 7860327, -19215684, 19417010, 3071439, -12283606, -9592273, 23502062, 7727720, 10129680, --1430224, 1766842, 6439230, 7702487, -712428, -2367064, 9993315, 8716636, 1830193, -11632382, -12787728, 1574642, -4420595, 3140695, 4380330, -8469676, -2249489, 6522982, 1257352, 10869488, --13428215, 20194400, 15649250, -2782602, -12805445, -5203353, 13465259, 15394237, 24836186, -767725, -4783520, 4064113, 13618268, -20718386, -11050414, 20785494, 13006772, 1409286, -3354370, 1786170, -5748277, -10844792, -8507256, -7295002, 1525787, 6628745, -3343632, -27380, 10799158, -11534135, --8179229, 36349920, 24700356, -34613680, -6816650, 31329102, -9260486, -19042812, -13391708, -19107772, --11199127, 31629750, 19363860, -2312840, 14464376, -3211025, 17585744, -10714870, -5871757, 35121020, --14326937, 6528887, -9903121, -3550327, -201863, 9768903, 28589450, 11166915, -19053012, -5418101, --695785, -2687039, 16173773, 2366527, 28783260, -8196945, 5129802, -2717104, 8535174, -23735064, -14592688, -21874268, 15159624, -933082, 22162568, -5491653, 16481400, -7271917, 5317170, 9594957, --9301825, 9934796, 22370338, 27956480, -14493367, 28642600, 12118250, 33935612, -9491878, 6606197, --1080184, -3891240, -6283001, -2068564, -10980621, -54957328, -34594888, -10435697, -532039, 8100845, -4054449, 13027710, 20958366, -30115774, -1553168, -11999065, 46148888, -2940442, -13856101, -3716757, --40219148, -33475512, 50985020, 20970178, 11503533, -7545184, 16062641, 1620813, -36829344, 7861401, -2631204, -13747653, -14302241, 2641942, 322659, 4257923, -7624104, -3605088, -17999672, -14984604, -6593312, 8398272, 7109245, 5747740, -9323300, -13482976, -8345659, -17542258, 11409044, 4227322, --31754304, -3398393, -9160628, -1821603, 15634755, -14275398, -20536386, -4137127, 13359496, 4901632, --14252312, 8938364, 18442590, -33812132, -9177808, 12625056, -595390, -2163053, -6516539, -931471, -5977521, 10698764, 2418067, -4275103, 27278948, -39689256, 37171332, -10973105, -11228118, 9502078, -17248588, -31097710, -6311455, 454193, 6089190, 1580548, -993211, 15466714, -9546102, 1909650, -8062728, 8968965, 12857521, 10650445, 3469260, -17098802, -3549254, 23060754, -22604412, -19304804, -23856396, 8108899, 16815870, 26139170, 40519260, -9298067, -25991532, 34313568, -14027900, -5881958, -35704600, 11188927, -13299903, -37476812, -24838332, -3828427, -13962402, 17525614, 35176856, 18037788, --12278238, 36221068, 12052215, -13211319, 9852655, 40432824, 11560441, 7787850, -8703751, -32499480, --43714176, -34672196, -2661806, 26193932, 7860327, 16533477, 61915176, 30545808, -37327024, -25074556, -16303159, -51483772, -23804320, 44320840, 15677704, -57192860, -47871168, -22159346, -36694052, -34350076, --20716238, 31077310, -9036611, -6544994, 80981608, 13622563, -23549306, -6495065, -25432648, 43111272, --9287867, 9351754, 2782065, 601832, -23826332, -9149891, -2062658, -11980811, 2632278, 9236327, -20900922, 2734284, -14578730, -635118, -300648, -9483825, 4134443, 6113349, 6918656, -18730352, -4567161, -17351668, 2771328, 9086540, -1272384, 13824426, -3610994, -917512, 13743895, -2883534, -7563975, 15525770, -5552856, 4619238, 10448045, 11671574, 9317932, 1918240, 2115272, 8120173, --8874476, -3309272, 5291400, 15343771, -55486144, 38359428, 16440061, 12377559, 15388868, -6000070, -18894098, 15501611, 22158810, -4271345, 30406220, -19197430, 23053236, -8479339, -17744120, -5680631, --29075318, 2945811, -10708427, 10187126, -7416335, -11315091, 27793270, -32068374, 20589000, -1177895, --13989245, -5671505, 12284680, 13861470, 10024454, 26264798, 21194590, -15359340, -3238942, -13753559, -11791296, -12203613, 9185861, 12594992, 5760625, 7019587, 4670777, -7623030, 29046864, -2838974, -8601209, 2789045, 13361106, 7318088, -34839700, 2131378, -20859582, 5181341, 15316390, -2978560, --14781130, -13639742, 32383516, -34404300, -27758910, 50745576, -21661130, 13057237, 5019743, 16200080, --7718593, 8406862, -35454956, 2276870, 34359740, -18573586, -13943611, 29498910, -2059974, -24744380, --18238578, 10773925, -9674414, -5876589, 18362596, -13719736, 4549444, 22752590, -25847114, 1535451, -15086609, -8544301, -5163088, -6911676, 9277666, 2400350, 3731253, -3561065, 5262409, 3803194, --5094368, 221191, 898185, 13499082, 6876780, -12994424, 15669651, 3747896, -7993471, 4401805, -4782446, -1597728, -4679904, 11063836, 13422, 3610994, 1406602, 14358613, -6750615, -5652714, -8830453, -13238700, 16436840, -1417876, -9279277, -1714766, -984621, 1791538, -177167, -6503118, --934692, 8376797, 17611514, -32603096, -132843336, -143325200, -5032091, -82140712, 73058464, 263656768, -115024592, 159074848, 200876688, -75631152, -53428320, -21169894, -180067040, -125899448, -40688372, -197477760, --85950888, -17417702, -80603648, 19429896, 185732096, 168731008, 182606976, 236609216, 142669152, -12641162, -53350472, -52825952, -210161872, -114121040, -84362824, -174628000, -119640608, 6853157, -134372880, -44130252, -29917132, -134300400, -68745248, 100774968, 39242044, 109274704, 271997056, 221112976, 178884848, 321623264, -233545824, -3811784, 33775084, -59936804, -287829376, -275176416, -283816800, -442253856, -299460160, -185071744, --181103744, 2303176, 143847584, 161939600, 226965936, 343455104, 317917248, 268363520, 265022032, 151783600, -53501872, 8539469, -16121697, -120237608, -206951392, -254203552, -272117312, -367538080, -305455936, -235603648, --115174376, 123300456, 363875520, 338856800, 371360576, 260402256, 31915366, -35298724, -111276160, -153110208, --103421200, -50761144, -51122460, -22655416, -23368918, -37251324, 412854, 5426691, 27194122, 84680648, -76976552, 56690884, 77987480, -7340636, -50173272, -6750078, -58942520, -51096688, 31779000, 34293704, -8041253, 7859790, -89912992, -230230656, -217934160, -185678416, -139811392, 68093488, 210111952, 256853536, -324523968, 290842848, 179467888, 124528280, 44261248, -51707648, -108306728, -129288176, -167586944, -205741824, --231963664, -270989888, -240906864, -83403432, 59290412, 139456512, 180895968, 196524288, 147496160, 102245456, -51210504, -2077690, -6065568, 24787866, 39709120, 43389372, 47182364, 38930120, 2864206, -33474976, --71459128, -127287800, -122781840, -100001336, -83619256, -46903192, -7081328, 23574002, 33800856, 35664872, -22436372, 13960791, 20300162, 32255742, 45293652, 61579092, 73202888, 70543768, 51367808, 25616258, --5674726, -28797218, -38020660, -50489488, -63231044, -62474596, -48408576, -36935644, -26674432, -20204600, --12170864, 2449742, 21632140, 32340566, 29753386, 27722940, 23781234, 13908715, 11783243, 9941239, -4184372, 8645232, 17462800, 16416976, 14577119, 15021111, 3346317, -10750303, -20018306, -33758980, --40598716, -34304440, -26386132, -19046570, -2747169, 7810398, 11220065, 14671608, 11000485, 4314295, -4697621, 10699837, 13073880, 20334522, 22259204, 18894098, 15375983, 6019397, -6820408, -17784386, --23818814, -25642566, -22677964, -15161771, -5388574, 3470871, 7589207, 8280160, 6216429, 4721243, -4328790, 4366908, 3847754, 2950106, 1348083, -134755, -1145683, -1647120, -1563905, -1193464, --614717, -255551, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +5023501, -1853815, 6442, 4696010, -2676302, 1832340, -340376, 657130, -3187403, -6676527, +-1373316, 2622615, -1711545, 1595044, 2317672, 1963874, -1463510, 1111323, -4126927, -760209, +1038845, 1705639, -134755, -98247, 518617, 1014686, -3453154, -2878165, 1218160, 2386928, +-1188095, 2498597, 4788889, -6432788, 922344, -3082176, -2074469, 1426466, -788663, 3940096, +-1213865, 3547643, 1880122, 572304, -242666, 1890859, 126702, -398895, -1990181, 5753109, +-3987340, -1225139, 2041183, 2226404, -84826, -1961190, 1124208, -2168422, 2252710, 416612, +831613, -59593, -746787, -726386, 3005403, -7708393, 1824824, -1005559, -4444755, -772557, +3782256, 1804423, 2357400, -3384971, 2731062, -1190243, 1726040, 1020592, 1348620, -1440962, +586263, 2006824, -1318555, -3025805, 1251446, -2810519, 564788, 2028298, 24696, -1029718, +-1138703, 527744, 1123671, -475131, 1345399, 38655, 971736, 788127, -339839, -214748, +387621, -459025, -235686, -361851, 395137, -628139, 330176, -908922, -191126, -855235, +-89657, -287763, -908922, -230854, 466541, -8884140, 7032472, -3280281, 1623498, 1366337, +284542, -1851131, -82141, -4964446, -6192806, 1779727, -1127429, 2024003, 2050847, 5713917, +-4540854, 741419, 3921305, 3787624, -3668439, -3931506, -2037425, -3405372, 405874, -1095217, +-2614561, -2014340, 104690, -6270653, -5959267, -1210644, 1298691, -481036, 597000, -657130, +1471026, -3261491, 3939559, -1287417, 2284386, -409096, 1642288, -2968896, 1127966, 2175938, +2638184, 1169305, 584116, 978179, -991601, -2449742, 5217312, 3939022, 1720134, -1848447, +6446746, 4366908, -1709934, 4109747, -227096, -3093450, -681289, -1073742, -2725694, 1904818, +2211908, 1085553, -2069637, 4555350, -2869038, 2697240, 3890704, -659814, 489089, -5519570, +-2377801, -5945309, 980863, 2929705, -2783139, -793495, 1224603, -2651606, -658741, 1396401, +-54224, 1021665, -517007, -1378148, -3853123, -1867237, -605054, -881005, -217970, -11811, +355945, -417686, -556735, -1380295, -550830, 115427, 431107, 386547, -686121, -61203, +93952, 287226, -62814, 294742, 37044, 475668, 50466, -637266, -1071594, -1159104, +537, -655519, -850404, 239444, 7524783, 3449396, -2877091, 1291175, 993211, 11982422, +-3519189, 3437048, 5852967, -1124745, 5328444, 2168422, 3632469, -4740034, -1738388, -5556077, +-2550674, 3743064, -86436, -2645163, 656056, -3898220, -281320, -2554432, 3583613, -1566053, +-464930, -1412507, 1917703, 825171, 68719, -464393, 1581085, -5863167, -4482872, 2003065, +565325, -580894, -2938831, 6957847, 2030983, -912681, 2333778, 2744484, 35970, 1348620, +686658, -3464428, 3155190, -4121558, -3068754, 3657165, -4343286, 3754338, 1727651, -3331821, +5717139, 3042984, 2218888, -1577864, 5186173, 1170916, -666257, -1528472, 1606855, 567473, +-860604, -6112276, -840203, -1225139, 1896228, -3609920, 4855998, -1720134, 3987340, -4172561, +180926, -479963, 4956929, -2341294, -1570347, 845572, 1872606, -110595, 1009854, -802085, +-4478577, -558346, -273804, -286689, -570157, -139586, 69256, -671089, -821413, -983548, +-1014686, 28991, -366683, -30602, 668404, -810675, 534723, 549756, 1391033, -1662689, +1108102, 431107, 872415, -151398, 1293859, 416612, -548682, -1033477, -234076, -519691, +12522514, -10364830, -9095667, -2920041, 9592809, -1321776, -5172215, 6571837, -4350802, 3112241, +-221728, -7122667, -4836133, 6032819, -3880503, 2995740, -4049617, 3991098, -1751273, -1089311, +-433255, -3921305, 2099165, 2895345, -3932580, 983548, -1987496, 829466, 1831267, -563714, +2616172, 797253, 2145873, 3372086, -4283693, -3155727, 3921305, 214212, 3052111, 2964064, +-2705293, -4057134, -1589675, 719407, 5391795, -5773510, 2425046, -6448894, -7840463, -1837709, +-4466766, -738198, -5298379, -10136660, -5338645, 4728759, 4443681, 2873333, -3339337, 9735080, +-2947958, 1654099, -5330592, -5055714, 1379758, 12885, -448824, -6386080, -2046015, -354335, +-1248762, -1231045, -3401077, -2761664, 756451, -875100, -1844152, 226023, -3293166, 607201, +1949915, 3332358, 1901597, -2798171, 2998424, -1928440, -136365, 3314104, 1451699, 493384, +-1034550, 1708323, 1999307, 1531693, 387621, -848793, 340376, 2356327, 1261647, 1518808, +698469, -879931, 1309965, 244276, -93416, 358630, -617938, 223338, 396748, -701153, +1343251, 1919850, 2317672, -152471, -121333, 323733, -1410360, 2105071, -89657, 1309428, +-272730, 15993384, -5283884, 7463580, -2025077, 10040560, -1978906, -1598265, 1681480, 1991791, +-1723893, -11630235, 1125818, -1167694, -3096672, -229781, -565325, 4066797, -1331977, 9803263, +-1311039, 1054951, -712965, 5519033, -1101122, 1864016, -4614406, -239444, -3169686, -3370476, +-944893, -1024887, 41876, 3507915, -6328098, -1951526, 2151779, -813359, 4383014, 919123, +-1104880, -2995740, -2881923, -3178813, -5785321, 2086280, 2459406, 2066416, -10086731, -1584843, +7132330, 3897683, -1610076, -423054, -3118146, -7038378, -7342247, 7223062, -2257542, -5035313, +-2743410, 3871376, 3180960, 250719, 3565360, 1358820, 3448322, -1812476, -7197829, -2571612, +-3238942, -3791919, 5308580, 3390340, -584116, 5787469, 8838506, -2221035, 3747896, -3532074, +-432718, -58519, 3850975, -415001, 966905, 761820, 1197222, 2938295, -3033858, 2279017, +-1575716, 129386, -1931662, 217433, 1021129, 2059974, 1578937, -155156, 566936, 26307, +-235686, 1012002, -2861522, -510564, -2283849, 420370, -409633, -473520, -999654, -708133, +-1191317, 1169842, 602369, -23965918, 13195213, 4814659, -1092532, -1052804, 78383, -3637837, +-6666863, -1437203, 3279208, 10165114, 6835978, -9239012, -1751810, -5491116, 3780108, -455803, +-12481712, -3673271, 7688529, 4753992, 2641405, 6519761, 3959423, -649077, -802622, 1937567, +-4737349, -2794950, 1117228, 5690295, -2367601, -4754529, -6883759, -3460670, 3473018, 11194832, +801548, -1938641, 2394981, -2283849, -8261370, 637803, -5823976, -4582193, -5433134, 3423626, +-307090, -7747584, 1477469, 2966212, 3064459, -8383776, -4639102, -3107946, -2063195, -893353, +-3084324, -1479616, -3994320, -8136279, -930934, -6906308, -8298951, -5131949, -1450625, 1458141, +-4932233, -7286949, 2175401, 5889474, -288300, -1054415, -678068, 4290673, -6364068, 4792110, +7549479, 7344394, 5786395, 9869835, 141197, -4034585, 2669322, 464393, -1025423, -893890, +27380, -2224256, 3273839, 190589, 261993, -1978906, -533650, 1094680, 1245541, -1142998, +-1047435, 645856, 3377455, -415001, 1294933, 1156420, 2889976, -2308008, 166430, -26307, +-2573759, 415001, 378494, 2218888, 259309, 475668, 1905892, 1216013, -3212099, 1233193, +-1138703, 1047972, -9897752, 3763465, -4885526, -824634, 1314797, 2950106, -390842, 5151814, +144955, -1009317, -13895293, 6473590, -2568391, -2931852, 5008469, -8039642, -11072963, 4550518, +-3870839, -5173288, -1627793, 10037339, 6308770, -3636764, -2148558, 4684736, -1375463, -472446, +1358820, 4573604, 8353175, 5339718, 6760279, -1007707, -283468, 192737, -4440460, 1165010, +-1867237, 11389716, -8679055, -5003100, -4588099, -4271345, 2739116, 1570884, 4074850, -645856, +-5733245, -7652021, -2218351, -9533754, -13322452, -2641405, 363462, 10384157, 2054068, -8176007, +-2106682, 7793218, -3289945, 2632815, 2335925, 4388920, -6169721, -9216463, -4094178, -4674535, +14926085, 1700807, -4790499, 3282966, 2486786, -1066763, 1876901, 3449933, -419296, 6660958, +-8778913, -7822209, 2543695, -3593814, 7952132, -3643743, -212064, 4316979, -1320703, 3829500, +-238371, -155693, -270583, -1254131, -147640, 3450469, 1258425, 3353833, 1852742, 1693291, +108448, -1175747, -551903, 1428077, -445603, 461172, -689879, 2421288, -1983738, 1427540, +-1779190, 2442763, -2305324, 261993, -234613, -202937, 1695438, 2306934, -2412698, 1722819, +908386, -758599, 3505767, 8449274, 2602750, -804770, 5808944, -1219234, -7451769, -1469953, +-748398, 7141994, -4187056, -1081795, -2310693, 1065689, -2339684, 340913, 2273648, 3315715, +4847945, 3127810, 1472100, 12599823, 4919348, 4067334, -634581, -10135586, 566936, -8462696, +2457795, -5775121, 1294396, -92342, 3136400, 15517717, 4349192, -2546379, 5530844, -4539781, +4699231, -2863670, 8061117, -4574677, -136902, -6251862, 3634079, 6082748, -7367480, 14576045, +-3704946, 960462, -2357937, -4068408, 1481227, -4525285, -12696460, 2025077, -3257196, -805306, +-7878044, 1743757, -2850248, -13072807, -5968931, -3723737, -11560978, 6408091, 16432545, 19926500, +-19174882, -14671608, -8169565, 712965, 4664872, -5986111, 2642479, -6780143, 1671816, 9148817, +14173929, -9917616, 15882252, 5026186, 1786706, 2636036, 2801393, -3628174, 5398237, 4962835, +6024766, 4605279, 1888712, 7026030, -46708, 2147484, -209380, -101469, 3776887, -1219771, +-4735202, -1343788, 2971044, 2280628, 886374, -118112, -370978, -480499, 2995740, 2372970, +1009317, -2820720, 623844, 691490, -24696, 3197066, 1355599, 1956358, -85362, 2373506, +1346472, 2400887, 3360812, 3499325, 158377, 57445, -1867237, 3867618, 3455301, -488016, +-1154273, 319438, 2471217, -1005559, 7070590, -13735842, 19587198, 263067, 11410654, 4032974, +-4198868, -4343286, 10564546, -6462852, 6622840, 8184597, -1215476, -6022081, 194884, 8469139, +4723927, 4275640, 3717831, -930397, 1254667, 2739116, 10806675, 7543573, -5977521, -5151814, +-1023276, -2693481, -1343788, -5905580, -3960497, 5328981, 9517648, 2298881, 14424111, -4228932, +15785615, 555125, 7365332, 17362942, 12287901, 3811784, 3455301, 7752953, -1859721, -7257421, +-171262, 7284265, -4427575, -8303246, 174483, -1466731, 15897821, 12700755, -289373, 17941152, +-1739999, 9561671, 5015985, 7523172, -1136556, -6436546, 8003672, -1823214, 9385577, 6326487, +19979114, -11430519, -2059974, -22890028, 4702453, -11352672, -1642825, 10256382, -4406637, 4100083, +-1988570, 12021613, -3335579, -8707509, -759672, -3091840, 3541738, -744640, 5807870, 6749541, +1728724, -2026688, 5395016, -1414118, 2274185, -172336, -3755412, 2305861, 2460480, 4629975, +2411624, 5211406, 2325725, -304943, 113817, -1880122, -31675, 5101885, -1991791, -4208531, +2209761, -494995, 696322, 4137127, 902480, 855235, 1730335, 2678449, -999117, -742493, +1844152, 3308736, 5588290, 4990215, -82678, 2252174, -22012, -459562, 2404108, 3443490, +3100430, -1967632, -10737, -788663, 4136054, 588947, -842350, 501437, -13181255, -9683004, +4715874, -7831873, 4438312, -4739497, 1265405, 12062416, -2091649, -11455752, 3055869, -4836670, +11615202, -12242804, -8551817, 4920422, 5578089, 8457327, 265214, -895501, 5452998, -3395172, +-8381092, 5126044, -3469797, -6716255, 1954747, 6456947, -4820027, 12191265, 4923107, -513785, +1569274, 5931887, 2585570, -21006686, 8514236, -2223719, -2252174, -3694746, 11094437, -19864, +11817066, 405874, 1000727, 1213328, -3170223, -1369021, 5724118, -6802692, 1556926, 18927384, +1642825, 13889924, 1054951, -2951180, -1562294, -9529996, -19597398, -14362908, 6448357, 8872866, +-3898220, 14866492, 6381785, -10808822, -6249715, 13601625, 9730248, 8978629, 2773475, -4325569, +109522, -862752, -8442295, -2713883, -4940286, -23137526, -9913321, -648003, 15453829, 3328063, +-3585224, 1542430, 13269301, -3413962, 669478, -42413, 3361349, -4483409, -2090575, -3383361, +-1870995, -1279363, 3194382, -285078, -567473, -333397, 2506114, 1866163, 3907883, -2895345, +-4306242, 1417339, -4555350, -2663954, 590558, 1515050, 549219, -947040, 4795331, -2374580, +-1399623, -5673652, 2126009, -5146445, 3970161, 1582696, 2647311, -4386772, 412317, -892816, +2096481, -2604898, 1645509, -2350958, 2673080, -4864588, 213675, -5676873, 6107981, 5746666, +12443594, 4695473, 4124242, 14296872, 11941620, 9955197, 323196, 3659849, 702227, -2406256, +-2878165, 2282775, -1220308, -8682813, 1806034, 8372502, -178778, -2508261, 2531346, -21111912, +6920266, -8454643, 5138929, 7052873, 6349036, -7975755, 4175782, -889595, -255551, 12381317, +9028021, 47245, 4799089, 3536369, -1768453, -7190312, 1656247, 6004901, 42950, 8798241, +2583960, 7951595, 15751256, 750546, 6315213, 6700686, 8414378, -432718, -5504001, 13597330, +-5360119, 10963441, -13069585, -10766946, 14918569, -826781, 4887136, 8761196, 13011067, 16838956, +7067369, 2255932, -8319352, 3651259, -1752884, -15189689, 12771622, 7925289, -12435004, -799938, +712965, -15566572, 5154498, 12262132, 7227893, -166967, 4683125, 3310883, -7274601, 13427678, +1242319, -2704756, 6899865, 13281649, 5188858, -595390, -4712116, -3715147, -1650878, 2223719, +3714073, 5456219, 1750199, 898185, 1675037, 6386080, 5708012, 7106024, -139050, -811749, +2797098, 6077379, -23622, 516470, -1273995, 2779918, 460098, -758599, -2357400, 1411434, +-4461934, -7936563, -402116, 4377646, -155693, 3080565, -3800509, 2354179, 130460, 2680597, +387621, -2181307, 1752347, -1490891, -1202591, -556735, -4808216, 3328600, -1792612, 1344862, +2612414, 79457, -716723, -2270427, -3124589, -704912, -34845608, -21667036, 7091528, 7424388, +14332843, 23693188, -6510634, -3702799, -7533910, -6987375, -8889509, -9532680, 787053, 3822521, +3011309, 14945412, 666257, 14664629, -726923, 5043366, 6803765, 5209796, 10932302, 7775502, +568546, 9606768, -103079, -1146756, -5519033, 6495601, -855235, -14330695, -12362526, 7762617, +-1771674, 17066052, 10221485, 10969346, 4089346, -21500070, 5204427, 13495324, -2045478, 3914326, +-3264175, 2663954, 16999480, -608812, 14252849, 23688356, 1364189, -8968429, -221728, 228170, +-14848776, 20103668, 9622874, -2694555, -1114007, 14558865, 6907381, -17695266, -14356465, 5647882, +-6228240, 8425115, 6132140, 2652679, -6963216, -12579422, -572304, 3156801, 2392834, 13559749, +-18213882, 2643016, -1218697, -15487115, -7346542, -15575699, 13605920, -4642860, 18800146, -14789183, +1401233, -7130720, 10697153, 4616553, -4587025, -918049, 9862319, 589484, 3102040, -5718749, +-2995740, -4840965, 8749922, 4302484, 2684, 2291902, 2649995, -8013872, 578210, -2276870, +2840584, 1640141, -1687922, -8189966, -2805688, -6057515, 7244536, -5388037, 1216013, -1470489, +7176891, -1538672, -1200443, -2568927, -4395899, -294742, -2899103, 2805688, 7919920, 6825240, +-429497, -7215008, 9176734, 24713242, -29417304, -8230768, -14341433, -604517, 4662187, 778463, +19720880, -20353850, 9621800, -2778844, 3928821, -2464238, 10828149, -5971615, -10080825, -841814, +-2939905, 7656853, -640487, 5177583, 11470784, -2385854, -8603356, -1148367, 12899934, -7589207, +3071975, 2906082, 507343, -1168231, 12810814, -480499, -3311420, -21400748, 6880538, -5291937, +-13525389, -11757473, -3131031, -13033615, -7690139, -11317239, 5364951, -13356811, 13326210, -12258374, +8259222, -6330782, 16157130, -15652471, -9105331, -2351495, 9357660, 3863860, 70867, -6437082, +-12839805, 1312113, 5005785, 18327700, 9596031, 4007205, -10487236, 6242735, -9304510, -10472741, +9136469, -10166188, 4838281, 11882564, 9894531, -2630131, -3796214, -8553964, 14274324, 1409286, +13660680, 22113176, -4337380, -11584064, -5192079, -3847754, -7975218, 3512210, -13229036, 5770826, +4297652, 3985730, 10437844, -7372848, 373662, -1329829, 2636036, 9521942, 263067, 7492034, +-2726231, -162135, 924492, -4220879, -1530619, 4508642, 2358474, -6039261, -7927436, -3741990, +3476776, 3152506, -3491272, 11323681, 3295851, -8242042, 4148939, 6063420, 15052250, 12264816, +6850473, 2561948, 1439888, -6299644, -4968741, -181462, -5033165, 980326, -2924336, -9207873, +5085242, -3025805, -1298691, 1126355, 5015985, 155156, -4264366, 15992311, 22290880, -24363202, +17250200, 11905649, 225486, 8462159, 29749090, -8858907, -9046275, 2470680, 8495982, 12119324, +3753265, -12147241, 12938589, -5280126, 26246008, -1091459, -4759361, 8220568, 6629282, 6531572, +-649614, 24592446, -21117818, 4674535, -739271, 6469295, -9018894, -17667348, 8236137, 6389301, +6652368, -6437082, -4958540, 20493974, 7475391, 25854630, 2042794, -10096394, -1398549, 5444408, +-2637110, 26854284, -3782256, 14445049, -2994666, 24055574, 8560944, 6206765, -6281390, -1760937, +13107703, -133681, 14061186, 10491531, 12386686, -17293686, 2369748, 11696807, 14185203, 10464151, +7977365, 19168976, 23655606, -18687402, -2532420, 36088464, -9105331, -10260140, 23270132, 31442918, +269509, -700617, -17551920, -14551886, -1257889, 15602006, -2662880, -3392487, 403190, -1602023, +-4756677, -12646531, -4799089, -1305670, -7577933, 122407, 7116224, -4521527, 9190693, -9979357, +8067023, -2318746, 6988449, -7569343, -63888, 5041218, 2865817, 8884140, -1939715, -5234492, +-2455648, 2399276, 8151311, 2152316, -3316789, 11324218, -3929895, 5810017, 5881958, -1404454, +-1593433, -2976949, 16751983, -6556805, 1904281, 4017942, 6054830, -3411815, -11330124, -6733435, +-2203318, 12558484, 5961952, -1282585, 496606, 4270808, -1099512, -150324, 4286378, 2115808, +895501, -182536, 9993852, 22502944, -1388885, 7006166, -19249506, 18299246, -9762998, -6044093, +-16851842, -10961293, 34517040, 436476, -24321326, -10890963, -733903, 43487, -3219078, 26641682, +12459700, -2341294, -11159399, -1126355, 7011534, -3376918, 35554276, 7485591, 15627775, 5312875, +-8019778, -20221242, 4727149, -317291, 3147137, -15693810, -1660542, -10632192, 11985643, -26307, +1960653, 12346957, -11277510, -8366597, 2451353, 439160, 3693135, -17342542, -13544179, -29637422, +-15449534, 1152662, -16865800, 2141041, -12239046, -7452842, 21919902, 6765647, -10665478, 6434398, +2484639, -227096, 21089364, -3755412, 25549150, 9629854, -10997801, -31336618, 5437429, 4816806, +17273284, -9494025, -22404160, -8148090, 6497212, 947040, -5343476, -16299401, -5178120, -22963580, +-25957708, 7928510, -1442572, 26411902, -8506183, -16402480, -14086419, -1498407, 18811420, -1219234, +6933688, 11858405, 9249212, -4343286, 6139656, 8031052, 2765959, 8230768, 8312373, -6105833, +-838056, 11609297, -2332704, 1414118, 11285027, -2382096, 6705518, -8568460, 3274376, 6221797, +-3777424, 3609920, 3734474, -8037495, 10356240, -10023380, 5022428, 4911832, 8231305, -2311766, +-5609228, 10730976, -1424319, 7855495, -11720429, -6015102, -8595840, -7573101, 1130113, -6296422, +4512937, 301721, 1911797, -12093554, 1336809, -3665755, 16426639, -17712446, -850404, 27506044, +-5641977, 8308078, 3061775, 3850975, -25334402, 21470004, -1897839, -20213726, -11771968, 10980084, +-2851858, 5623186, 74088, -8228621, -6125697, 3940633, -6137509, -1217086, -166430, -29392608, +-7566122, -19620484, 4584878, 7332046, 5369, -8488466, 3702262, -3921842, 11813844, -25974888, +1939715, 4844186, 15195594, -11157788, 14169097, -10985989, 9080098, 2652142, 11062225, -16863116, +5421860, -8217346, -18041010, 12112345, -14566382, -29349660, 4525822, -2505040, 23529978, -10998874, +3441880, 11008538, 15670188, 17819282, 2064269, -5735929, -10871099, 628139, 8533026, 11831561, +-22908282, 26146150, -23622, -17184702, -12878996, -22957138, 9641128, 5923834, 9431211, 4373351, +24824910, -8470749, 26965416, -14253923, 6453189, -5623723, -12263205, -37042484, 21249888, 4319664, +-9714679, -25053618, -1288490, 4987531, -1984275, 9562208, -6648073, -7858180, -1130650, 4239133, +-6926709, -6733435, -4304631, -1022739, 4115653, -1917166, -2069637, -9759239, 7649874, 524523, +-5308580, 4889284, -3798362, 8043937, -2206540, 4169340, 5338645, 9872519, -3110093, 8992588, +1165010, 777926, -9195525, -7085623, 2498060, 3830037, 1501091, 795106, -1619740, -5853504, +-3209951, -2619930, -6508486, -2784750, 11937862, -5570036, -6467147, 3953518, -14443438, 248571, +-3636764, -21937082, -54224, 12146704, -4784057, -23766202, -3757560, -34746284, 16877610, -38405060, +22974316, -26546656, -23154168, 6629282, 19937238, 14886357, -13176960, 13965623, 25074020, 4466766, +3772592, 5906654, 2289755, -14744086, 17995376, -30137248, -18699214, 1703491, -1835025, -1926293, +-3975529, -7504919, 4057670, 27752468, 7209103, 3861713, 2633889, -13051869, 16146930, -2911451, +-27881318, -4298189, 636192, 599685, -19061064, -13495324, 14733348, -4791573, 25256556, 4673998, +59056, -20526186, -11207180, 7558069, 3300682, -5601711, 21651468, -17107928, -10341744, -754841, +-1215476, 20381768, 1709397, 23843510, 59593, -19504520, 4909685, -16631187, 12720619, -2346126, +17315160, 32628866, -50177568, 17100950, 7019587, 9185324, 19086834, 4699768, -22972170, -5364414, +-2018098, -4186519, 11851962, -23617488, 2317135, -6200859, -3277597, -16281684, -8654359, -24621436, +2831457, -1574106, 2627983, 6750615, -9887015, -1833414, 12050604, -7386270, 2449742, -4127464, +-12015171, 5601711, 7437810, -8533026, -779537, -13464186, -669478, -19464792, 7105487, 4728759, +-2297808, 2036351, -4773856, 768799, 4083440, -3164317, -3491272, 11042361, 13700946, -3104725, +4640176, 2128156, 14065481, 6127845, -17375828, 2259690, 10209674, -5786395, 10318122, 3205119, +4518843, 41084048, 35499516, -10193568, -13768591, -841814, -27055610, 15756088, -1569811, 5927055, +2076617, -13692356, 40987408, -17650704, -72368592, -10616622, 14412300, -48730700, -8370892, 15212774, +-41280004, 5695664, 26835492, -18993420, 26771604, -25759604, 22997402, 28532542, -18268106, 7749195, +-2656437, 590558, -7753490, -11330124, -2108292, 17550846, -11355894, -18891414, -10327786, -15218143, +-1632625, -11951820, -1973001, 6269579, -2861522, 17142826, -15176804, -18643380, 14810121, -19718732, +-29236916, -37484864, -13074417, -918586, 7262253, 20845624, -8741332, 9329206, 9757092, -6897718, +-3251290, 34367792, -22762790, -903554, 23519240, 7274064, 18489298, -4650913, 6727530, 26090852, +13406740, -1443109, -3205119, -16120086, 6581501, 26246546, -24445344, 18559628, -24190866, 7035157, +34160560, 7860327, -19215684, 19417010, 3071439, -12283606, -9592273, 23502062, 7727720, 10129680, +-1430224, 1766842, 6439230, 7702487, -712428, -2367064, 9993315, 8716636, 1830193, -11632382, +12787728, 1574642, -4420595, 3140695, 4380330, -8469676, -2249489, 6522982, 1257352, 10869488, +-13428215, 20194400, 15649250, -2782602, -12805445, -5203353, 13465259, 15394237, 24836186, -767725, +4783520, 4064113, 13618268, -20718386, -11050414, 20785494, 13006772, 1409286, -3354370, 1786170, +5748277, -10844792, -8507256, -7295002, 1525787, 6628745, -3343632, -27380, 10799158, -11534135, +-8179229, 36349920, 24700356, -34613680, -6816650, 31329102, -9260486, -19042812, -13391708, -19107772, +-11199127, 31629750, 19363860, -2312840, 14464376, -3211025, 17585744, -10714870, -5871757, 35121020, +-14326937, 6528887, -9903121, -3550327, -201863, 9768903, 28589450, 11166915, -19053012, -5418101, +-695785, -2687039, 16173773, 2366527, 28783260, -8196945, 5129802, -2717104, 8535174, -23735064, +14592688, -21874268, 15159624, -933082, 22162568, -5491653, 16481400, -7271917, 5317170, 9594957, +-9301825, 9934796, 22370338, 27956480, -14493367, 28642600, 12118250, 33935612, -9491878, 6606197, +-1080184, -3891240, -6283001, -2068564, -10980621, -54957328, -34594888, -10435697, -532039, 8100845, +4054449, 13027710, 20958366, -30115774, -1553168, -11999065, 46148888, -2940442, -13856101, -3716757, +-40219148, -33475512, 50985020, 20970178, 11503533, -7545184, 16062641, 1620813, -36829344, 7861401, +2631204, -13747653, -14302241, 2641942, 322659, 4257923, -7624104, -3605088, -17999672, -14984604, +6593312, 8398272, 7109245, 5747740, -9323300, -13482976, -8345659, -17542258, 11409044, 4227322, +-31754304, -3398393, -9160628, -1821603, 15634755, -14275398, -20536386, -4137127, 13359496, 4901632, +-14252312, 8938364, 18442590, -33812132, -9177808, 12625056, -595390, -2163053, -6516539, -931471, +5977521, 10698764, 2418067, -4275103, 27278948, -39689256, 37171332, -10973105, -11228118, 9502078, +17248588, -31097710, -6311455, 454193, 6089190, 1580548, -993211, 15466714, -9546102, 1909650, +8062728, 8968965, 12857521, 10650445, 3469260, -17098802, -3549254, 23060754, -22604412, -19304804, +23856396, 8108899, 16815870, 26139170, 40519260, -9298067, -25991532, 34313568, -14027900, -5881958, +35704600, 11188927, -13299903, -37476812, -24838332, -3828427, -13962402, 17525614, 35176856, 18037788, +-12278238, 36221068, 12052215, -13211319, 9852655, 40432824, 11560441, 7787850, -8703751, -32499480, +-43714176, -34672196, -2661806, 26193932, 7860327, 16533477, 61915176, 30545808, -37327024, -25074556, +16303159, -51483772, -23804320, 44320840, 15677704, -57192860, -47871168, -22159346, -36694052, -34350076, +-20716238, 31077310, -9036611, -6544994, 80981608, 13622563, -23549306, -6495065, -25432648, 43111272, +-9287867, 9351754, 2782065, 601832, -23826332, -9149891, -2062658, -11980811, 2632278, 9236327, +20900922, 2734284, -14578730, -635118, -300648, -9483825, 4134443, 6113349, 6918656, -18730352, +4567161, -17351668, 2771328, 9086540, -1272384, 13824426, -3610994, -917512, 13743895, -2883534, +7563975, 15525770, -5552856, 4619238, 10448045, 11671574, 9317932, 1918240, 2115272, 8120173, +-8874476, -3309272, 5291400, 15343771, -55486144, 38359428, 16440061, 12377559, 15388868, -6000070, +18894098, 15501611, 22158810, -4271345, 30406220, -19197430, 23053236, -8479339, -17744120, -5680631, +-29075318, 2945811, -10708427, 10187126, -7416335, -11315091, 27793270, -32068374, 20589000, -1177895, +-13989245, -5671505, 12284680, 13861470, 10024454, 26264798, 21194590, -15359340, -3238942, -13753559, +11791296, -12203613, 9185861, 12594992, 5760625, 7019587, 4670777, -7623030, 29046864, -2838974, +8601209, 2789045, 13361106, 7318088, -34839700, 2131378, -20859582, 5181341, 15316390, -2978560, +-14781130, -13639742, 32383516, -34404300, -27758910, 50745576, -21661130, 13057237, 5019743, 16200080, +-7718593, 8406862, -35454956, 2276870, 34359740, -18573586, -13943611, 29498910, -2059974, -24744380, +-18238578, 10773925, -9674414, -5876589, 18362596, -13719736, 4549444, 22752590, -25847114, 1535451, +15086609, -8544301, -5163088, -6911676, 9277666, 2400350, 3731253, -3561065, 5262409, 3803194, +-5094368, 221191, 898185, 13499082, 6876780, -12994424, 15669651, 3747896, -7993471, 4401805, +4782446, -1597728, -4679904, 11063836, 13422, 3610994, 1406602, 14358613, -6750615, -5652714, +8830453, -13238700, 16436840, -1417876, -9279277, -1714766, -984621, 1791538, -177167, -6503118, +-934692, 8376797, 17611514, -32603096, -132843336, -143325200, -5032091, -82140712, 73058464, 263656768, +115024592, 159074848, 200876688, -75631152, -53428320, -21169894, -180067040, -125899448, -40688372, -197477760, +-85950888, -17417702, -80603648, 19429896, 185732096, 168731008, 182606976, 236609216, 142669152, -12641162, +53350472, -52825952, -210161872, -114121040, -84362824, -174628000, -119640608, 6853157, -134372880, -44130252, +29917132, -134300400, -68745248, 100774968, 39242044, 109274704, 271997056, 221112976, 178884848, 321623264, +233545824, -3811784, 33775084, -59936804, -287829376, -275176416, -283816800, -442253856, -299460160, -185071744, +-181103744, 2303176, 143847584, 161939600, 226965936, 343455104, 317917248, 268363520, 265022032, 151783600, +53501872, 8539469, -16121697, -120237608, -206951392, -254203552, -272117312, -367538080, -305455936, -235603648, +-115174376, 123300456, 363875520, 338856800, 371360576, 260402256, 31915366, -35298724, -111276160, -153110208, +-103421200, -50761144, -51122460, -22655416, -23368918, -37251324, 412854, 5426691, 27194122, 84680648, +76976552, 56690884, 77987480, -7340636, -50173272, -6750078, -58942520, -51096688, 31779000, 34293704, +8041253, 7859790, -89912992, -230230656, -217934160, -185678416, -139811392, 68093488, 210111952, 256853536, +324523968, 290842848, 179467888, 124528280, 44261248, -51707648, -108306728, -129288176, -167586944, -205741824, +-231963664, -270989888, -240906864, -83403432, 59290412, 139456512, 180895968, 196524288, 147496160, 102245456, +51210504, -2077690, -6065568, 24787866, 39709120, 43389372, 47182364, 38930120, 2864206, -33474976, +-71459128, -127287800, -122781840, -100001336, -83619256, -46903192, -7081328, 23574002, 33800856, 35664872, +22436372, 13960791, 20300162, 32255742, 45293652, 61579092, 73202888, 70543768, 51367808, 25616258, +-5674726, -28797218, -38020660, -50489488, -63231044, -62474596, -48408576, -36935644, -26674432, -20204600, +-12170864, 2449742, 21632140, 32340566, 29753386, 27722940, 23781234, 13908715, 11783243, 9941239, +4184372, 8645232, 17462800, 16416976, 14577119, 15021111, 3346317, -10750303, -20018306, -33758980, +-40598716, -34304440, -26386132, -19046570, -2747169, 7810398, 11220065, 14671608, 11000485, 4314295, +4697621, 10699837, 13073880, 20334522, 22259204, 18894098, 15375983, 6019397, -6820408, -17784386, +-23818814, -25642566, -22677964, -15161771, -5388574, 3470871, 7589207, 8280160, 6216429, 4721243, +4328790, 4366908, 3847754, 2950106, 1348083, -134755, -1145683, -1647120, -1563905, -1193464, +-614717, -255551, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -7737921, -3799972, -8803609, 1763084, 674847, 584652, -5995775, -2106682, 1692754, -1291711, 1998234, -3170223, 1929514, -52076, 2508798, -6786049, 199179, -236760, -133144, 3773129, 5731097, --5946382, -1305670, -3596498, -1146219, 2153926, 3944391, 659814, 1005022, -1445793, -1910724, --1559610, -1173063, -2694555, 1523103, -2716567, -1815161, 3144453, -2627983, 2263448, 406411, --6721087, -2249489, -3693672, -854699, 2888366, -1957968, -567473, -1924682, -2006287, -1381906, -2823404, 4296578, 806917, 2405182, 1903207, -2224793, -4268124, 2339684, 1916629, -900333, --3670587, -3042448, 2800319, 600222, 2099165, 1028645, -5654862, -1835562, -2092723, 3169149, -1285806, -5668820, 1520418, -2986613, -918049, -258235, -2050847, 1666447, -1869921, 476205, -2195265, 2287070, 1398549, 1589138, 1030792, -142271, 1099512, 1372779, 143345, -1068373, -1540283, 355409, 28991, -409633, -1007707, 531502, 976568, 214212, 803159, -263067, --507343, 28991, -787590, 883153, -134755, 1036698, -179315, 234613, -84289, 966905, -498216, -6442, -377957, 628139, -427349, -11036992, 7195144, -5310190, 660888, -766115, --2068027, 5496485, -4959077, -3320547, -67646, 5813238, -2246805, -404264, -695248, 4797479, --2997887, -7861401, -1795296, -4074850, -5510980, 138513, -495532, 836445, 3089692, 5125507, -3175592, 437013, 7877507, 3025805, 208843, 5596343, 5879274, -542777, -3258807, 159988, -2565169, 2030983, -104153, -1212255, -4666482, -4131759, -2054068, 4474282, 1823751, 7755101, -4372814, -419833, 2562485, 3117073, 1010391, -4935455, 5209259, -2160906, 2697776, -282394, -1612223, -5871757, -979789, -1917703, 1997160, -1844689, -2242510, 5976984, -470836, -4619238, -1744294, -3533684, 2774012, -2026688, 4485020, 3833795, 4299799, 1388348, -4241817, 2229088, --685584, 2195802, -1863479, 570694, 5910412, -2376191, 2845953, 3840238, -636192, 158914, --226023, -794032, -1631014, 908386, -140123, 1408212, -77846, 1121523, 31675, 15569, -814970, 1366873, 561567, 1308354, 1508607, -379568, -1175210, 1931125, 179315, -143345, -115964, 1142998, -370978, -1195612, 547608, -355409, 280784, -46171, 1173063, 304943, -621160, 308164, -1052267, 2207613, 2478196, 141197, -2120640, 2314987, 911070, 712428, -1101659, -8665633, 2825552, -5516886, 929324, 1807108, 1894618, -2523293, 4619774, 746251, --1698660, -780610, 5389110, 3877282, -2335925, -2997887, -2466385, 2096481, 3823595, -2294586, --2518998, 760209, -9837623, -10737, -4196720, -1645509, -4175245, -5465346, -671626, 4999342, -1375463, -4451197, -1184337, 4282083, 1292248, -2726231, 4830765, -2088965, -6737193, -1993402, -3782256, -1656784, 4474819, 8570607, 6918119, 972810, -97711, 2434173, -1052804, -5033165, -49392, 1919850, -3621194, 3066070, -7177964, -1055488, 440234, -3027415, -2348810, 3143379, -6247030, -4880694, -5124433, 3200288, 3192235, 5908802, 1889249, -3417183, 4694400, 4081293, --1362042, 4548907, -5018133, 5094905, 1219234, 3461744, 683437, -2670933, -1557463, -463856, -1104344, 132070, -2477123, 875100, 11811, -1414118, -1197759, 361314, -381178, 1134945, -47782, 1874216, -1353989, -945430, -86436, 268435, 1578401, -777389, -1614371, 759136, -39192, -301721, 1065689, -210453, 637266, -682900, 641561, 1006096, 103616, 1607928, -14766098, -5761162, -2546916, -964757, 10641318, -1078574, 8043937, -5879274, 7086159, -7048578, --6185827, 1465121, 3346853, -4168803, -1036698, 2102387, -559956, 2747169, -4297115, 4922570, -1770600, -5315559, -217433, 2108829, 1643362, 929860, 10011032, 7974681, 6236830, -17717, -4043175, 363462, 1155346, 2986076, -9268539, -1431298, 5624260, 3653407, 4362613, -120259, --1654636, 2026151, -379031, 11293080, -1726577, 1890859, 1121523, 536871, -3359201, 6766184, --784368, 7035694, -3898220, -4089883, 2909304, -2729989, -9425843, -4352413, 1883343, -909459, --6745246, 1864016, 8053, 8746701, 756451, 745177, -2689187, 3174518, 3224447, -733903, --521302, 7681549, 5647345, 5603859, -3720516, -5297306, -4620311, -9039296, 742493, -6403796, --2165737, 388158, -3490735, -3990025, -2222646, -463856, -1363652, 2109366, 3954591, -755914, --464930, -1793686, 912144, -1302986, -1493038, 620086, 1080721, 2684, 1394254, -830002, -46171, -802085, -533650, -443992, 811749, -501437, -491237, -304943, -1284732, -1473174, -88047, -175020, -1765232, 1486596, 1503239, 1815161, -34360, -1291175, -746251, 1423782, -381178, 10944650, -8536784, -141734, -8932995, -5842766, -3434900, 7889855, 4658429, -10806675, --14804215, -5650567, 5322538, 3810173, -2157684, 5173825, 121333, -1190243, 651224, -7744900, -2426657, -952409, 723702, 2550674, 599685, 51003, 3355980, 2964064, -5127654, -5102421, -5986111, -1793686, -2841121, 3704946, -10107132, 2507724, 2194192, -9294846, 3482145, 9789304, -5949067, 6746320, 1435593, 3761318, 9285182, 1816234, 1826435, -10484015, 5652177, 8056822, -6590628, 1341640, 6694244, -7443179, 7488813, -2136209, -7339026, -11327976, -41876, -7172059, --5788006, -2420214, -6889665, -17264158, 824097, 998580, -510027, 2797098, 8611409, 3308199, -3516505, 2375117, -6130529, 1006096, 2972654, 2588255, 2274185, 2624762, -6293201, -1787780, --7951595, -3518652, -504659, 1976222, -2860985, 2955474, 644245, 610959, -1936493, -214212, --993211, 128849, -1079647, 1188632, 421981, 929324, -220654, -1349157, -1149441, -1087701, -1307281, 913754, 73014, -442382, -1034550, -1078037, -1095217, -3488587, 620623, 635118, --2665027, -1300301, -919123, -23438710, 11577621, 1511829, -9092446, 2237141, -979789, -2669322, --1838246, -5144297, 2796024, -2628520, 567473, 3399467, 3140695, 10182831, -4086662, -9695889, -5307506, -12300249, -5288179, 2026151, 1716913, 1420024, 4012036, 4958003, 4280472, -75162, -5658083, 381178, -2216740, 7499550, 4660577, -2267743, 4474819, -7730941, 14652818, 564788, -2744484, -1360968, -12538620, -2164127, -4652524, -4389994, 1972464, 10479183, 319438, 448824, --1326608, -2879239, -6755447, 2154463, -1094143, 3757560, -8518531, 2891050, 4576825, 2011655, --6303402, -2239826, 1694902, 824634, 5155572, 1014686, 17816062, -5070746, -7552700, -8611409, --2576981, 186831, 6381785, -8578660, -1081258, -3675418, 3956202, -12528956, -511101, -3392487, --5212480, 1563905, -1486059, 3419868, -407485, 6281390, 4016331, -17717, 1376537, 485868, -834834, 7282117, 921271, 5206574, 1935957, -1318018, 183073, 184684, 1555852, -960999, -826244, -282931, 2259690, 403727, -1592359, -2400887, 1996623, -928250, -2794950, -1264331, --1438814, -670015, -807991, -61203, 3598109, 52076, 1063004, 417686, 1498944, -1406602, --704375, -2585570, -2863670, 10741176, -3266860, -2386391, 2422362, 3269544, -8409546, -8485245, --7750806, -7275675, -11992622, 7786239, -6961605, 2284923, 3082176, 11164231, -1688459, -2482491, -8769786, 2138894, 1942399, -10002442, -6511708, 5122286, 2296734, 4100620, 6093485, -10545218, -248571, 4696010, 10323491, 30602, 1091995, -1401233, 134755, -6835441, -1192927, -2033667, --12836584, -907849, 4088272, -7307350, 3311420, -7961259, 78920, -5468030, -1027034, -1615982, -855235, 10584947, -2925410, 268972, 5479842, -2866354, 3259343, -8546985, -15342697, -8272644, --4568772, -2062658, 1764158, 10442139, -4735202, 2892124, 2627446, -7298223, 2622615, -5592585, --1897839, 3899830, 10579041, -1485522, -450435, 3464428, -127238, -9709847, -9196599, -3785477, -9396315, -1001264, -13821742, 1101122, -9045201, -3943854, -1794760, -853625, 3198140, -3409667, --962610, 3580929, -877247, 4185446, 3627637, 2662343, -1550483, 4100620, -3453691, -2560874, --2417530, 713501, -312996, -654446, -741419, -576063, -1131724, 903554, -224949, 2680597, --1680943, -1021129, 1177895, -1436667, -814970, -3916473, -4773856, -323196, 480499, 2502355, -416612, 1552631, 207769, 10230612, 10744934, -3405372, 920734, 11270531, -11641509, -10376641, -8611409, -2176475, 1106491, 7798587, -1640141, -2256469, 7806640, -14705968, 6145562, -758599, -2396055, 7009387, 7257421, -8282308, 1475858, -11342472, 3383897, -3488050, -1275605, -7927973, --471910, -11319386, 1015760, -9826885, 6736120, -3520800, 1219771, 12014097, 5558225, 5315559, --9746891, 1667521, 11179800, -2776696, -16041703, 8457864, -2012729, 1444720, -3204583, -7530689, -10497437, 3672734, 8544301, 2025614, 1189706, -7221451, -9264781, 3191698, 4258460, 4493610, -6075768, 14012331, -519691, -11097659, -7186554, 8380018, -1273995, -9561671, -2524367, -717796, --2613488, -12068321, 147640, 1488743, 2939905, -4466766, 6838125, -498753, 724239, 9632001, -4968204, 10032507, -10051834, -4344897, 1819456, -5664525, 4535486, 2642479, 2768643, -583042, --1298154, -1007170, -177167, -4117263, 5025649, -2021856, 3075734, -993748, 3586835, -1618129, --1804960, 40265, 2056216, -1964948, -81604, -632434, -2001992, -1194001, 903017, -2384244, --692564, -4844723, -3635153, 1761474, 3200288, 1463510, 1455994, -693637, -383863, -2386391, --351650, 2177012, -3103114, -660888, 1431835, -849330, 2509872, 2204929, -1735167, -934155, -2246268, 1319629, -1164473, -77846, 8213588, -10011032, 11712913, -2644089, 12389907, -10129680, -9170292, 1002338, -973347, 15431817, -8069170, 916439, -7831873, -2340220, 23527830, 11348377, -4993973, 3397319, 6690486, -3767760, -32749, -19900730, 3694209, -838592, -8603356, 9531069, -7155953, -306016, 1699196, -11504070, 10130754, -5377299, 10759430, 7040525, 5745593, -8257075, --1449552, -6943889, 10332081, 2369748, -3759707, 18300318, 8754754, -2075006, 964220, -15178951, -2578591, 694174, 12052215, -5422396, -15424838, -2664490, -4265440, -3009698, -21801790, -10877542, --23221278, -11842835, -8295730, 2723546, -5834176, 10955388, 1373853, -12550431, 7573101, -8400419, -11866995, -10583873, -8565775, 6168647, 10572599, 10394895, 44023, -9769977, -7777649, 4760971, --6376416, 227633, -3214246, 3918084, -4371740, -6459094, 11379516, 5257577, 1568200, -1823751, -4299799, 2407866, 5289252, -510564, 3588445, 1248762, 5939403, 99858, -258235, 317291, --2895882, 85899, 1535451, 708670, 672162, 139586, 4583267, 2071248, -3575560, 379568, -2099165, -1158031, -1348083, -891206, 302795, 849867, 2324651, -597000, 1595580, 2645163, --522912, -2728378, -205085, -2972654, -1262184, -2747169, -1719598, 2340220, 198642, -1547262, -1560147, 839666, 3274376, -1931125, -962610, -2940442, 1299765, 640487, -14133127, -16832514, --11062762, -1352915, 59593, -1941325, 4347044, 6469295, 4578435, 275952, 2585034, -5152350, -3844533, -10745471, -15088220, 761283, 12062953, 2341831, -3869229, 9706626, 5860483, 9404368, -15641734, 2273112, -4464082, -9511205, -7558606, 4767414, -8704825, -5952288, 2593087, -6832756, --15393700, -8314520, -586800, -1540820, 3944928, -3246459, 8962523, 2800856, 3574487, 12295418, --1644973, 1705102, 3067144, -9310952, 11594801, 2142652, -10181220, -16838956, 4639102, 1819456, --12156905, 13447543, 8832600, -11251204, 4189204, 11349451, 6512781, 3249143, 9477919, -3923990, --3420942, 978179, -4803384, -7866770, 14236206, -12153147, -1097364, 5486284, 1484448, 21961242, --18527416, 6024229, -2113661, 194884, 6354404, 528281, 1592359, -4777614, 3163780, -10879689, --23376970, -1049583, 8590, -11885785, -7439420, -1413044, 4773856, 4185983, 1968169, 1284195, --3643206, 161598, -5222680, -2502355, -769336, -2924336, -4676683, 1989107, -643171, 1131724, --2244657, -1584306, 1482301, -3779034, -8328479, -2738579, 890669, -2063195, -8018167, -4369056, -3764002, 2646237, 1949378, -1373316, -2887292, -3714073, -426276, -1728188, -4412005, -3639985, --5256503, -2634963, -3442416, -3492882, 208306, -646393, 1831804, -1200443, 1786706, -1005559, -3109020, -4121021, -11110544, 9889162, -20132122, -14292577, 10697690, -449898, -18327700, 9475235, --10697153, 20860120, 4227322, -27359478, -3422552, 2529199, -6856916, 2098092, 4841502, 9759776, -8393977, -15883863, -629213, 1519345, -3231426, -14557255, -2184528, -3000035, -4937602, -4423817, --136902, 1103270, 12490302, 13623099, -4138738, 7345468, 6406481, 6202470, 13636521, 187905, -3729105, -15600395, -5281199, 5515275, -2999498, 7550016, 18697604, 2750927, -16193100, -36287640, -12885, -11183558, 10404558, -6855842, -3597035, -7128572, -19505058, 8536248, 26316338, 1536525, -6976638, -20562156, 4366371, -2332704, -9149354, 2359011, 10167261, 5224828, 8228084, -8857833, -13127031, 7624641, -15038828, -22524420, -1311039, -17129940, -15894600, -10217727, -11683385, 1533303, -21246130, 8101919, 912144, -2829310, 13732621, -6929393, -9982041, -1629403, 2260227, -1600412, -2650532, 2099702, 273804, 2124935, 5355288, 1904281, -407485, 379031, -1856500, -2011118, -5618891, -1661079, 5534066, 121870, -2874944, 650688, -1431835, -2277407, 6664179, -1575716, -3687230, -7988103, -842887, 3870303, 141734, 1578401, 6816113, -4993437, 6247567, -622233, -863825, 1847373, -1847373, 4625680, 869194, 263067, 1014149, 213675, 2317672, 5957657, --2289218, 2079838, 2552821, 2303713, 2851322, -952409, -39602820, -25012278, 17933100, 14439680, -23497230, -98247, 9247065, 2282775, 7404524, -311385, 4768488, -10431402, -12510703, -7765838, --11202885, -7226820, -7988103, 9558450, 22583474, 4929012, -27604828, -6560026, 4811974, -7332046, -6715718, -15773267, -1299765, -537408, 893353, 7683160, 5803575, 1076963, -1924145, -3525631, -6394670, 12475269, -10027138, -15517180, 10295037, 4913443, 13511430, 6180995, 19654308, -13617194, --4808753, 12566537, 18737332, 16305843, 9622874, 4588636, -4056597, 1234266, -2397129, 69793, -6470905, -24522652, 13147432, -1934883, 3536906, -1622961, 18584860, -5683853, -313533, -4085588, -11770895, 10024454, -20958904, 15007153, -17835388, -901406, -9065065, -8952322, 8085276, 1484448, --27783070, -2459406, -2231236, -5119601, -3273302, -652298, -3585761, 14412300, 1372779, 13786845, --4405563, 16302622, 7645042, -8419210, 3540664, -2102387, 889058, 1060320, 1489817, 2200634, -791885, -3157338, -5269925, 8112657, 3546032, 6659884, 1807108, -3955128, 7608535, 304406, -351114, 5780489, -16229608, -7494181, -7241315, 2279554, -270583, -10982768, 423591, 1854352, --561030, -2055679, -81604, 3787088, -4072166, -151398, 4326106, 2194728, 5283884, -4651450, --2339147, 1342177, 5737003, 21943524, -24479702, -593242, -13928042, -39230232, -4667019, -14498199, --30972620, 6153078, -232465, -6043019, 1912334, 16598438, -1108638, -17605608, 5998996, 680752, --5681705, -4257387, -3167539, 860067, 19128710, -4329327, -739271, 8672613, 6396817, -2786897, -9244917, 8463770, -4126390, -4052302, -7733089, 10635950, -2583423, -18387828, 2769180, -1242856, -6274411, 24034100, -16095390, -25787520, -16282758, -7549479, 3526705, 8569533, 4531728, 18290118, -9116605, -12931610, -7489886, -17629768, 15206869, 9356049, 1658931, 3214246, -10138807, 1042603, --10725607, 18440442, 18077518, 1271847, -8478802, -4714264, 1749662, 16786342, 33503966, 20623360, --3214783, -7512972, 423591, 10658498, 4595615, 9836549, 13550622, -13481365, -668404, -25984016, --17541720, -16702591, -11220602, 6967511, 15901043, 10937671, 1693291, -3191698, -1535451, -14470819, --18216030, -4603131, -9698036, -9121974, 2044941, -1858647, -2365990, 84826, 541166, 4138201, --4672388, 9275519, -9483825, 3976603, -12059731, -4039417, -67646, 2214056, -406411, 2101850, -4553739, -3271691, 491774, 11025181, 13424457, 16210280, 8852464, 10150618, 4547297, 1923609, -704375, 278099, 558883, -2847563, -8816494, -8594230, -1481227, 6662568, -64425, 1019518, --3643743, -2557116, 968515, 8155069, 5087389, 9734543, 7824357, 6975564, 8409009, -19132468, --2240899, -9904195, 14416058, -15895674, 3092377, 1403917, 28186796, -17420924, -5097053, -17918604, --3867618, -17699560, -14870251, -10733123, 5563057, -19040126, -13807246, -20705500, -5279589, -3113315, --6328098, -9356586, -23072028, 6034966, -16305843, 6594923, -17108466, 21098490, 3258807, 9455907, --4063576, -19903952, 10671383, 6171868, -6689949, 10654740, 14919106, -8062191, -21435644, -11487964, -28752658, -12285754, -928787, 737124, -4867809, 6314676, 18638010, 3301219, 7932268, -6004365, -13335873, 181462, 10506564, 3193845, 3571802, -331786, 1083942, 22784264, 6915434, 54556824, --33298882, 21254720, 29908542, -7909719, 687195, 15413564, -11172284, -3286187, 25041270, 9906342, --4170950, 13275207, -5685463, -24260122, -17934172, 6069863, 976031, -32411434, -9015673, -3330747, --16825534, 8625368, 5040681, -10959146, -8960376, -6628745, 943819, 2956011, 6851547, -5713380, -800475, 3974455, -1801202, -7232725, 1976759, 1477469, 2258079, 6700686, 1186485, -4141422, -530965, 7763691, 6901476, 3321084, -7763691, -215285, 14228153, -4116726, -3032784, 7855495, --7769059, -13456669, -3851512, 673773, -1778117, -6942278, -2153926, -482647, -7630547, -1646046, -764504, -2182917, -7926362, -13066364, 4879083, 13872744, 4989679, -383326, 437013, -2713346, --8335458, -6707129, 30298310, 33864744, 431644, 24432458, 24334748, -1395328, 10935524, -24574192, --7638063, 21674552, 2034741, 21399674, 29972966, 24671366, -4996658, 16084116, -25166360, -39244188, --16803522, -14708116, 9421548, 26307, 10082436, 10892037, 23600846, 18247168, 6354404, -18734648, --2293513, 18649284, 5996848, -9217000, 12009265, 25730612, -2919504, 8927090, -21049098, 10024454, --16620987, -4547834, -10559714, -21857626, 13354664, 1463510, 6502581, 26064546, -14144401, -15924128, -9401147, 27009438, -21287468, -14275398, 8769249, -6915434, 38191388, 28242632, -26922466, -10206990, --21290690, 1087164, 23285702, -10875931, -16230681, -7442105, 1394254, 5557151, -19423452, 4581657, -38919920, 2760053, -26091926, -39840652, 32052804, -38435124, -32258426, -18911814, -16523813, -27830852, -7356742, 6971269, 44560824, 11076721, 19545860, -9946071, 21258478, -2701535, -9216463, 7962333, -883153, -2157147, 21799106, 2687576, 11100343, 13835700, 7434589, 16608102, -4866735, 4409858, --3738769, -1465658, -3721052, -14172855, -10518912, -11723113, 13259101, 4656282, 11793443, 14638859, --3384971, 8726300, 19011672, 6775848, -6318971, 9757092, 11355357, 3830037, -2831457, -14003741, --12601971, 12295954, 5114769, 8142185, 16216723, 36195300, 15479599, 9046812, 6528887, 10164040, --5564667, -1320703, 18161270, -11880416, -14530948, -2930778, 6907381, -6333466, 6547141, 3888556, --35296040, -20395726, -26501558, 7192997, 14959371, 5339718, 22877144, 20519206, 28975996, 9059160, -31629212, 14156749, 20478940, -9879499, -3753265, -9931575, -24060406, -17309792, -37315212, -22164716, --7020661, -21776558, 5019743, -766115, -371515, 9044127, 7573638, 3486440, 18366890, -4483946, --14838038, 21807160, 2228551, -28678570, -12173011, -3038153, -34319472, -26156350, -25251186, 2422899, -12566537, 3402151, -13015362, -1618666, 14703284, 8947491, 34656628, 6460168, -45978700, -15373299, --7719130, 7422241, 7507066, -5285494, -11976516, 17165374, -25318832, -4730370, -20233590, 15584826, --40053256, -24995636, -32598802, -26440356, 1594507, -14912126, -11179263, -26540214, 13697724, 47670916, --878321, 30804580, -16740172, 7535520, -22269406, -124017, 34339336, 8056285, -15669651, 1752884, -13465796, -22993644, -35128536, -19192062, 9493488, -27709518, 12291123, -490163, -343597, 17645336, -9692131, -4834523, 21024402, 20388746, 16902844, -5527086, -5203353, -3721052, 223338, 14148159, -10748693, 7065758, 853625, 14739791, 8758512, 2126009, 2467459, 10856067, -4077535, -3968013, -8216273, -11680164, 10915123, -10184441, -9256191, -11959873, 21121038, 12553116, 19685982, 6735583, -7798587, 1421097, 1952063, 9046812, -13706314, -23378580, 2454037, 6127845, 6425271, 8456791, --1496259, -9281424, 26570816, 10942503, 26805428, -43408696, 19020262, 32825362, -3042984, 37787124, --19826642, -57363584, -29601988, -293668, -5590437, 6447820, -20443508, 19964618, 28229210, -25186762, -22455162, -13757317, -16799764, -40042516, -16232292, -22975390, -15072651, -18362058, 18260590, 2783139, --35801236, -45967424, 34947612, 7946763, 12635257, -10692321, 2955474, -12389907, 499827, 10650445, -16222628, 14616847, 39122320, 1316944, -27777164, 37845104, -3823058, -9752260, -17363480, 16006269, --30899068, -20813412, 17818208, -16106664, -24023362, -30325690, -26432840, -5631776, 3747896, 2932389, --8027831, 32811940, 28080496, -2639794, -15702400, -27343372, -31242666, 7808788, 6832756, -6138582, --2866891, 45015016, 3240016, -13074954, 19637664, 9377524, -29425358, 23626078, 43010340, -46881180, -76025752, 20297478, 22106734, 8351564, 22264574, -5978058, -46582140, 32101660, 2957085, -5776194, -33541548, -39483636, 7151121, 6985228, 8590, -3782793, 1897302, -3049427, -10688563, 5867462, -11927124, -9701257, -1009317, -14367739, -16274705, 21453362, -4501663, -10486163, 5158793, -5708012, --12895639, -23803782, -5229123, -8079371, 21104932, -19972672, -1769527, 24576876, -4949413, 19641422, --6757594, -17152488, 9186398, -3450469, -7897908, 10171556, 2665027, 27062052, -3351685, -413927, -17643726, 54181012, 23703924, 1108102, -18360986, 25803090, -600222, 1724966, -12633646, 23539106, --27655832, 19917910, 19108846, 20178294, 9655086, -7581154, 26759794, 33652680, -7069516, 13831942, --21122650, 33866892, 14325863, 11261404, -21854942, -47486232, 9260486, -14619532, -11005854, -19318762, --24408836, 14552423, 6388764, -11854110, 2528125, 1066226, -12983686, -57979376, -3796751, -12360916, --6124624, -950798, 40628244, 27808840, -13796509, 10465225, -27078696, 2952790, 19934554, -30774514, --28698972, -23480586, 36751500, -26600344, 7489349, 29620778, -40189620, -37197640, 34019364, 27174258, -28523952, 38330436, 13989782, -49149460, 10870562, 14473503, -4548907, 80142480, -8503498, -12254615, --36451924, -31370978, 15950435, -28916942, 18608482, 6517613, 21074330, 43889732, -28403156, -19259708, -53265112, -32613298, -36197984, 23477902, -46559056, 33668248, -35458712, 8001524, 11886859, -25537876, -10351945, -29640644, 20380694, 37765648, -1781338, 6541235, 7524246, 1389959, -11787001, -10894185, --2718714, 10947335, -5123359, 7387881, -7917236, -23430120, 9795210, 2078227, 15680926, 7907572, -13659070, -4728759, -4898410, -23214836, 16051367, -3110630, -21476448, 4993437, 43420508, 12124693, --11424076, 12894566, 23256712, -11599096, 2301029, 18107582, -9332964, 18064632, 5833640, -5553930, --28382218, 4871567, -11026792, -569620, 34744136, -15888695, 1556926, 6890738, 4803384, -9893457, -11570642, 39775156, 2896956, -34773664, 48527760, 11450383, -3736085, 34481072, 16837882, 27814746, -10081899, -42438036, -9718974, -16131897, 19287624, 48526152, -31511638, 7495255, -15380815, 21392158, -24557012, -33425046, 27074400, -26919782, -24360518, 11754252, 22194780, 588411, 7035694, 17303350, --27237608, 23240604, 1357210, 28449326, -5607080, -7964480, 8898098, 42309724, -19649476, 34119756, --17176648, 6605660, 8516383, 34103652, -2522757, -2573759, 11353746, 51582556, 2922188, -40910636, --3797288, -49182744, 28841242, -215285, 79594336, 16830904, -23920284, -7421704, 17202954, -18035642, -27624692, 51960516, 35281544, 478352, 14700062, 22337588, -3089692, -24628954, -3857418, -5834176, --84131968, 51832204, 38377680, 35583268, 8140037, -36517960, -11368778, 27010512, 13615583, 23487566, -12283606, -80371184, -29169808, 48875116, 12971338, 15578920, 41791644, -30296162, -1543504, -4520990, -23417236, 5761162, -2950643, -6839199, 18323404, -5268315, -22443888, 10526428, -11140608, -12836584, -10734197, 16322486, -12905303, -4161823, -1064078, 12813498, -17428440, 13327820, -15474230, 6693170, --26298084, -26572426, 25413322, 3077344, 1660542, -3320010, -19607600, -6141267, 16797618, 1573569, -5277441, 28742458, -5151277, -22346714, -2780991, -12826383, 9249212, 10578504, -11162083, -9196599, -10788958, 23767812, 29756070, -1234803, 31532040, -19452980, 32090386, -29314762, 4984847, 15346992, --15029701, 2156074, 6077379, -8025147, -15684684, -29677150, 45252312, -10146860, -8836358, -15101105, --2459406, -6255620, 14766634, -30426622, -8682276, -19060528, 6615324, -19166828, 18446348, -179315, -9557376, -21143050, -38308424, 1748052, -27966680, -29406030, 13407277, -22580254, -18917184, 37042484, --13606993, -21800180, 2921115, -22419730, 10621991, 13916231, -3931506, -18343268, -5159330, 10510322, -9523553, -8415452, -608812, 32605244, -5650567, -20344724, -25472378, -3839164, -11052025, -38788388, -36455684, 12373801, -44147968, 27145804, -1753420, -18778134, 85541256, 47860968, 39517996, 20658256, -12232067, -20453708, 3408057, 9175661, 10312753, 3602404, 37622304, 8144332, -10807748, -18633716, --75187160, 15155329, 10208064, -624918, -14430016, -28691456, -5311801, -18585398, -16081431, -1461900, -24154896, -16626892, 41558640, 5746666, -7884486, -3195456, -3160022, 2966749, 17702782, -7057705, -4714801, 11840151, 4574140, 1999307, 9870372, -15731928, 7872138, 2411087, 24520506, -8752606, --5616207, -7016903, -5674726, -19537806, -10004053, 6588480, -20477330, 15188615, -3789772, -10398116, -14816563, 8706972, 12541841, -4945655, -1430761, 1160715, 2778307, -13670881, 7419019, 484794, --130997, -1661616, 9127879, 4320737, -39349952, 65700116, 8141111, 21354578, 11521250, -16622597, -12000675, 18316962, 4365835, -2153926, -16209207, -3055332, 4235912, -7713762, -5925981, 2509335, -7143605, 18935974, -13554917, 7818451, 519154, 15064598, -5671505, 2783676, 4785131, -17844516, -14046154, 2069101, 3281892, 4889821, 5025649, -11395085, 11627550, -9854802, 2174864, 11143830, --6461242, 10922639, -5081483, 13831405, 10652593, 6110665, -17710298, 12814035, 9648107, 7708930, -21481816, -21136070, -2093797, -417149, -4712116, 6172942, -11069204, -17544404, 11617350, 13218836, -6473053, -1875290, 2587718, -2079301, 6723772, -6290517, 2570538, -13077102, 11443940, -20184198, -18589692, 10311143, -6600828, -488553, 7560753, 351114, 6749004, -63888, 525597, -874026, --7046431, 9477919, 12847858, -11771432, -2931852, 2224793, 7006703, -5451924, -5789079, 1338419, -2121177, -1505923, 1039919, -4441533, 1330903, 5216238, -4482872, 970663, 2900177, -4537096, -3453154, 4555887, -714575, -1696512, -2535641, 752156, 9516037, -3855270, 983548, -9259949, -254477, 9940165, -7438347, 7363185, -3767760, 422517, 16423418, -3076270, 31675, -492311, --5461051, 8524436, 3240553, 3590056, 3239479, -2858301, 1925219, 9366787, -3077881, 6346351, --4525822, -821949, 12642773, -52740052, -122714728, -19705310, 71701792, 65058016, 160388576, 83687976, --43239584, -13376139, -88902600, -150936960, -10461467, -68659888, -9595494, 109775072, 46888696, 84780504, -130302328, -15292231, -19128710, -66337916, -112613504, -89646704, -5797669, -33772940, -12768401, 93390304, -29640106, 60695404, 110547624, 17965312, -465467, 11294153, -67262408, -101979704, 17486422, -105378632, --68840808, 23192286, -10584410, 16939352, 135420848, 15369540, 51917028, 110402136, -22025130, 3255585, -24663850, -106780400, -88888104, -31686658, -121310816, -47176996, 15475841, 22253836, 83580064, 117504400, -83919368, 59023588, 51620140, -19805704, -71042520, -58565100, -87835304, -92522184, -39539468, -23601920, -652298, 77263776, 92465280, 28722594, 72266048, 20849918, -22821846, 14979235, -50291384, -70203384, --13643500, -32733556, -21699248, 39222180, -1404454, 27280558, 49131204, -13698798, -1013612, -236223, --24768540, -7889318, -1636919, -18868866, 20863878, 7287486, -4755066, 33705292, 10920491, -5118528, -32725504, -11718818, -34867080, 432718, -53312356, -37652368, 11656541, -35811436, 7718593, 40913860, -30391188, 55863564, 61351460, 22018150, 21781926, -2854006, -50337016, -70839040, -72449120, -76120240, --48037060, -3928821, 24492588, 52068964, 91118808, 97281544, 81201192, 63106492, -3610457, -59942712, --85295904, -109619376, -111293344, -59787556, -17729624, 46332496, 98919536, 89058832, 54117660, 39574904, -11865921, -8658654, -13118441, -39715024, -45245868, -34539052, -28333900, -20845624, -3913252, 3833795, -16726213, 24142548, 25353192, 23786602, 22161494, 10681047, 805306, -8604430, -12870406, -19087908, --18429168, -14185740, -7497939, -3231963, 3518115, 6052146, 8740795, 6889665, 5964636, 4750234, -4688494, 1338956, 1243930, 1018981, 423054, -2266132, -659814, -3400540, -6561100, -7131257, --6762963, -6407555, -265751, 1012002, 3613141, 7634841, 9371619, 8734890, 7911867, 2665027, --877247, -5407901, -8227010, -9317932, -7037304, -5051419, -1835562, 1433445, 4271345, 4689031, -5375152, 4203699, 2879239, 1453846, -31139, -2088965, -1560147, -2231773, -1773822, -1399086, --1402307, -683974, 300648, -1142461, -682363, -148176, 590558, 1393180, 1385664, 1470489, -2398739, 1546188, 823560, -73014, -1124745, -1881196, -1870458, -2114198, -1498407, -860067, --192200, 445603, 1000727, 1009854, 1067836, 875636, 597537, 151398, -43487, -292595, --419833, -466004, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +3799972, -8803609, 1763084, 674847, 584652, -5995775, -2106682, 1692754, -1291711, 1998234, +3170223, 1929514, -52076, 2508798, -6786049, 199179, -236760, -133144, 3773129, 5731097, +-5946382, -1305670, -3596498, -1146219, 2153926, 3944391, 659814, 1005022, -1445793, -1910724, +-1559610, -1173063, -2694555, 1523103, -2716567, -1815161, 3144453, -2627983, 2263448, 406411, +-6721087, -2249489, -3693672, -854699, 2888366, -1957968, -567473, -1924682, -2006287, -1381906, +2823404, 4296578, 806917, 2405182, 1903207, -2224793, -4268124, 2339684, 1916629, -900333, +-3670587, -3042448, 2800319, 600222, 2099165, 1028645, -5654862, -1835562, -2092723, 3169149, +1285806, -5668820, 1520418, -2986613, -918049, -258235, -2050847, 1666447, -1869921, 476205, +2195265, 2287070, 1398549, 1589138, 1030792, -142271, 1099512, 1372779, 143345, -1068373, +1540283, 355409, 28991, -409633, -1007707, 531502, 976568, 214212, 803159, -263067, +-507343, 28991, -787590, 883153, -134755, 1036698, -179315, 234613, -84289, 966905, +498216, -6442, -377957, 628139, -427349, -11036992, 7195144, -5310190, 660888, -766115, +-2068027, 5496485, -4959077, -3320547, -67646, 5813238, -2246805, -404264, -695248, 4797479, +-2997887, -7861401, -1795296, -4074850, -5510980, 138513, -495532, 836445, 3089692, 5125507, +3175592, 437013, 7877507, 3025805, 208843, 5596343, 5879274, -542777, -3258807, 159988, +2565169, 2030983, -104153, -1212255, -4666482, -4131759, -2054068, 4474282, 1823751, 7755101, +4372814, -419833, 2562485, 3117073, 1010391, -4935455, 5209259, -2160906, 2697776, -282394, +1612223, -5871757, -979789, -1917703, 1997160, -1844689, -2242510, 5976984, -470836, -4619238, +1744294, -3533684, 2774012, -2026688, 4485020, 3833795, 4299799, 1388348, -4241817, 2229088, +-685584, 2195802, -1863479, 570694, 5910412, -2376191, 2845953, 3840238, -636192, 158914, +-226023, -794032, -1631014, 908386, -140123, 1408212, -77846, 1121523, 31675, 15569, +814970, 1366873, 561567, 1308354, 1508607, -379568, -1175210, 1931125, 179315, -143345, +115964, 1142998, -370978, -1195612, 547608, -355409, 280784, -46171, 1173063, 304943, +621160, 308164, -1052267, 2207613, 2478196, 141197, -2120640, 2314987, 911070, 712428, +1101659, -8665633, 2825552, -5516886, 929324, 1807108, 1894618, -2523293, 4619774, 746251, +-1698660, -780610, 5389110, 3877282, -2335925, -2997887, -2466385, 2096481, 3823595, -2294586, +-2518998, 760209, -9837623, -10737, -4196720, -1645509, -4175245, -5465346, -671626, 4999342, +1375463, -4451197, -1184337, 4282083, 1292248, -2726231, 4830765, -2088965, -6737193, -1993402, +3782256, -1656784, 4474819, 8570607, 6918119, 972810, -97711, 2434173, -1052804, -5033165, +49392, 1919850, -3621194, 3066070, -7177964, -1055488, 440234, -3027415, -2348810, 3143379, +6247030, -4880694, -5124433, 3200288, 3192235, 5908802, 1889249, -3417183, 4694400, 4081293, +-1362042, 4548907, -5018133, 5094905, 1219234, 3461744, 683437, -2670933, -1557463, -463856, +1104344, 132070, -2477123, 875100, 11811, -1414118, -1197759, 361314, -381178, 1134945, +47782, 1874216, -1353989, -945430, -86436, 268435, 1578401, -777389, -1614371, 759136, +39192, -301721, 1065689, -210453, 637266, -682900, 641561, 1006096, 103616, 1607928, +14766098, -5761162, -2546916, -964757, 10641318, -1078574, 8043937, -5879274, 7086159, -7048578, +-6185827, 1465121, 3346853, -4168803, -1036698, 2102387, -559956, 2747169, -4297115, 4922570, +1770600, -5315559, -217433, 2108829, 1643362, 929860, 10011032, 7974681, 6236830, -17717, +4043175, 363462, 1155346, 2986076, -9268539, -1431298, 5624260, 3653407, 4362613, -120259, +-1654636, 2026151, -379031, 11293080, -1726577, 1890859, 1121523, 536871, -3359201, 6766184, +-784368, 7035694, -3898220, -4089883, 2909304, -2729989, -9425843, -4352413, 1883343, -909459, +-6745246, 1864016, 8053, 8746701, 756451, 745177, -2689187, 3174518, 3224447, -733903, +-521302, 7681549, 5647345, 5603859, -3720516, -5297306, -4620311, -9039296, 742493, -6403796, +-2165737, 388158, -3490735, -3990025, -2222646, -463856, -1363652, 2109366, 3954591, -755914, +-464930, -1793686, 912144, -1302986, -1493038, 620086, 1080721, 2684, 1394254, -830002, +46171, -802085, -533650, -443992, 811749, -501437, -491237, -304943, -1284732, -1473174, +88047, -175020, -1765232, 1486596, 1503239, 1815161, -34360, -1291175, -746251, 1423782, +381178, 10944650, -8536784, -141734, -8932995, -5842766, -3434900, 7889855, 4658429, -10806675, +-14804215, -5650567, 5322538, 3810173, -2157684, 5173825, 121333, -1190243, 651224, -7744900, +2426657, -952409, 723702, 2550674, 599685, 51003, 3355980, 2964064, -5127654, -5102421, +5986111, -1793686, -2841121, 3704946, -10107132, 2507724, 2194192, -9294846, 3482145, 9789304, +5949067, 6746320, 1435593, 3761318, 9285182, 1816234, 1826435, -10484015, 5652177, 8056822, +6590628, 1341640, 6694244, -7443179, 7488813, -2136209, -7339026, -11327976, -41876, -7172059, +-5788006, -2420214, -6889665, -17264158, 824097, 998580, -510027, 2797098, 8611409, 3308199, +3516505, 2375117, -6130529, 1006096, 2972654, 2588255, 2274185, 2624762, -6293201, -1787780, +-7951595, -3518652, -504659, 1976222, -2860985, 2955474, 644245, 610959, -1936493, -214212, +-993211, 128849, -1079647, 1188632, 421981, 929324, -220654, -1349157, -1149441, -1087701, +1307281, 913754, 73014, -442382, -1034550, -1078037, -1095217, -3488587, 620623, 635118, +-2665027, -1300301, -919123, -23438710, 11577621, 1511829, -9092446, 2237141, -979789, -2669322, +-1838246, -5144297, 2796024, -2628520, 567473, 3399467, 3140695, 10182831, -4086662, -9695889, +5307506, -12300249, -5288179, 2026151, 1716913, 1420024, 4012036, 4958003, 4280472, -75162, +5658083, 381178, -2216740, 7499550, 4660577, -2267743, 4474819, -7730941, 14652818, 564788, +2744484, -1360968, -12538620, -2164127, -4652524, -4389994, 1972464, 10479183, 319438, 448824, +-1326608, -2879239, -6755447, 2154463, -1094143, 3757560, -8518531, 2891050, 4576825, 2011655, +-6303402, -2239826, 1694902, 824634, 5155572, 1014686, 17816062, -5070746, -7552700, -8611409, +-2576981, 186831, 6381785, -8578660, -1081258, -3675418, 3956202, -12528956, -511101, -3392487, +-5212480, 1563905, -1486059, 3419868, -407485, 6281390, 4016331, -17717, 1376537, 485868, +834834, 7282117, 921271, 5206574, 1935957, -1318018, 183073, 184684, 1555852, -960999, +826244, -282931, 2259690, 403727, -1592359, -2400887, 1996623, -928250, -2794950, -1264331, +-1438814, -670015, -807991, -61203, 3598109, 52076, 1063004, 417686, 1498944, -1406602, +-704375, -2585570, -2863670, 10741176, -3266860, -2386391, 2422362, 3269544, -8409546, -8485245, +-7750806, -7275675, -11992622, 7786239, -6961605, 2284923, 3082176, 11164231, -1688459, -2482491, +8769786, 2138894, 1942399, -10002442, -6511708, 5122286, 2296734, 4100620, 6093485, -10545218, +248571, 4696010, 10323491, 30602, 1091995, -1401233, 134755, -6835441, -1192927, -2033667, +-12836584, -907849, 4088272, -7307350, 3311420, -7961259, 78920, -5468030, -1027034, -1615982, +855235, 10584947, -2925410, 268972, 5479842, -2866354, 3259343, -8546985, -15342697, -8272644, +-4568772, -2062658, 1764158, 10442139, -4735202, 2892124, 2627446, -7298223, 2622615, -5592585, +-1897839, 3899830, 10579041, -1485522, -450435, 3464428, -127238, -9709847, -9196599, -3785477, +9396315, -1001264, -13821742, 1101122, -9045201, -3943854, -1794760, -853625, 3198140, -3409667, +-962610, 3580929, -877247, 4185446, 3627637, 2662343, -1550483, 4100620, -3453691, -2560874, +-2417530, 713501, -312996, -654446, -741419, -576063, -1131724, 903554, -224949, 2680597, +-1680943, -1021129, 1177895, -1436667, -814970, -3916473, -4773856, -323196, 480499, 2502355, +416612, 1552631, 207769, 10230612, 10744934, -3405372, 920734, 11270531, -11641509, -10376641, +8611409, -2176475, 1106491, 7798587, -1640141, -2256469, 7806640, -14705968, 6145562, -758599, +2396055, 7009387, 7257421, -8282308, 1475858, -11342472, 3383897, -3488050, -1275605, -7927973, +-471910, -11319386, 1015760, -9826885, 6736120, -3520800, 1219771, 12014097, 5558225, 5315559, +-9746891, 1667521, 11179800, -2776696, -16041703, 8457864, -2012729, 1444720, -3204583, -7530689, +10497437, 3672734, 8544301, 2025614, 1189706, -7221451, -9264781, 3191698, 4258460, 4493610, +6075768, 14012331, -519691, -11097659, -7186554, 8380018, -1273995, -9561671, -2524367, -717796, +-2613488, -12068321, 147640, 1488743, 2939905, -4466766, 6838125, -498753, 724239, 9632001, +4968204, 10032507, -10051834, -4344897, 1819456, -5664525, 4535486, 2642479, 2768643, -583042, +-1298154, -1007170, -177167, -4117263, 5025649, -2021856, 3075734, -993748, 3586835, -1618129, +-1804960, 40265, 2056216, -1964948, -81604, -632434, -2001992, -1194001, 903017, -2384244, +-692564, -4844723, -3635153, 1761474, 3200288, 1463510, 1455994, -693637, -383863, -2386391, +-351650, 2177012, -3103114, -660888, 1431835, -849330, 2509872, 2204929, -1735167, -934155, +2246268, 1319629, -1164473, -77846, 8213588, -10011032, 11712913, -2644089, 12389907, -10129680, +9170292, 1002338, -973347, 15431817, -8069170, 916439, -7831873, -2340220, 23527830, 11348377, +4993973, 3397319, 6690486, -3767760, -32749, -19900730, 3694209, -838592, -8603356, 9531069, +7155953, -306016, 1699196, -11504070, 10130754, -5377299, 10759430, 7040525, 5745593, -8257075, +-1449552, -6943889, 10332081, 2369748, -3759707, 18300318, 8754754, -2075006, 964220, -15178951, +2578591, 694174, 12052215, -5422396, -15424838, -2664490, -4265440, -3009698, -21801790, -10877542, +-23221278, -11842835, -8295730, 2723546, -5834176, 10955388, 1373853, -12550431, 7573101, -8400419, +11866995, -10583873, -8565775, 6168647, 10572599, 10394895, 44023, -9769977, -7777649, 4760971, +-6376416, 227633, -3214246, 3918084, -4371740, -6459094, 11379516, 5257577, 1568200, -1823751, +4299799, 2407866, 5289252, -510564, 3588445, 1248762, 5939403, 99858, -258235, 317291, +-2895882, 85899, 1535451, 708670, 672162, 139586, 4583267, 2071248, -3575560, 379568, +2099165, -1158031, -1348083, -891206, 302795, 849867, 2324651, -597000, 1595580, 2645163, +-522912, -2728378, -205085, -2972654, -1262184, -2747169, -1719598, 2340220, 198642, -1547262, +1560147, 839666, 3274376, -1931125, -962610, -2940442, 1299765, 640487, -14133127, -16832514, +-11062762, -1352915, 59593, -1941325, 4347044, 6469295, 4578435, 275952, 2585034, -5152350, +3844533, -10745471, -15088220, 761283, 12062953, 2341831, -3869229, 9706626, 5860483, 9404368, +15641734, 2273112, -4464082, -9511205, -7558606, 4767414, -8704825, -5952288, 2593087, -6832756, +-15393700, -8314520, -586800, -1540820, 3944928, -3246459, 8962523, 2800856, 3574487, 12295418, +-1644973, 1705102, 3067144, -9310952, 11594801, 2142652, -10181220, -16838956, 4639102, 1819456, +-12156905, 13447543, 8832600, -11251204, 4189204, 11349451, 6512781, 3249143, 9477919, -3923990, +-3420942, 978179, -4803384, -7866770, 14236206, -12153147, -1097364, 5486284, 1484448, 21961242, +-18527416, 6024229, -2113661, 194884, 6354404, 528281, 1592359, -4777614, 3163780, -10879689, +-23376970, -1049583, 8590, -11885785, -7439420, -1413044, 4773856, 4185983, 1968169, 1284195, +-3643206, 161598, -5222680, -2502355, -769336, -2924336, -4676683, 1989107, -643171, 1131724, +-2244657, -1584306, 1482301, -3779034, -8328479, -2738579, 890669, -2063195, -8018167, -4369056, +3764002, 2646237, 1949378, -1373316, -2887292, -3714073, -426276, -1728188, -4412005, -3639985, +-5256503, -2634963, -3442416, -3492882, 208306, -646393, 1831804, -1200443, 1786706, -1005559, +3109020, -4121021, -11110544, 9889162, -20132122, -14292577, 10697690, -449898, -18327700, 9475235, +-10697153, 20860120, 4227322, -27359478, -3422552, 2529199, -6856916, 2098092, 4841502, 9759776, +8393977, -15883863, -629213, 1519345, -3231426, -14557255, -2184528, -3000035, -4937602, -4423817, +-136902, 1103270, 12490302, 13623099, -4138738, 7345468, 6406481, 6202470, 13636521, 187905, +3729105, -15600395, -5281199, 5515275, -2999498, 7550016, 18697604, 2750927, -16193100, -36287640, +12885, -11183558, 10404558, -6855842, -3597035, -7128572, -19505058, 8536248, 26316338, 1536525, +6976638, -20562156, 4366371, -2332704, -9149354, 2359011, 10167261, 5224828, 8228084, -8857833, +13127031, 7624641, -15038828, -22524420, -1311039, -17129940, -15894600, -10217727, -11683385, 1533303, +21246130, 8101919, 912144, -2829310, 13732621, -6929393, -9982041, -1629403, 2260227, -1600412, +2650532, 2099702, 273804, 2124935, 5355288, 1904281, -407485, 379031, -1856500, -2011118, +5618891, -1661079, 5534066, 121870, -2874944, 650688, -1431835, -2277407, 6664179, -1575716, +3687230, -7988103, -842887, 3870303, 141734, 1578401, 6816113, -4993437, 6247567, -622233, +863825, 1847373, -1847373, 4625680, 869194, 263067, 1014149, 213675, 2317672, 5957657, +-2289218, 2079838, 2552821, 2303713, 2851322, -952409, -39602820, -25012278, 17933100, 14439680, +23497230, -98247, 9247065, 2282775, 7404524, -311385, 4768488, -10431402, -12510703, -7765838, +-11202885, -7226820, -7988103, 9558450, 22583474, 4929012, -27604828, -6560026, 4811974, -7332046, +6715718, -15773267, -1299765, -537408, 893353, 7683160, 5803575, 1076963, -1924145, -3525631, +6394670, 12475269, -10027138, -15517180, 10295037, 4913443, 13511430, 6180995, 19654308, -13617194, +-4808753, 12566537, 18737332, 16305843, 9622874, 4588636, -4056597, 1234266, -2397129, 69793, +6470905, -24522652, 13147432, -1934883, 3536906, -1622961, 18584860, -5683853, -313533, -4085588, +11770895, 10024454, -20958904, 15007153, -17835388, -901406, -9065065, -8952322, 8085276, 1484448, +-27783070, -2459406, -2231236, -5119601, -3273302, -652298, -3585761, 14412300, 1372779, 13786845, +-4405563, 16302622, 7645042, -8419210, 3540664, -2102387, 889058, 1060320, 1489817, 2200634, +791885, -3157338, -5269925, 8112657, 3546032, 6659884, 1807108, -3955128, 7608535, 304406, +351114, 5780489, -16229608, -7494181, -7241315, 2279554, -270583, -10982768, 423591, 1854352, +-561030, -2055679, -81604, 3787088, -4072166, -151398, 4326106, 2194728, 5283884, -4651450, +-2339147, 1342177, 5737003, 21943524, -24479702, -593242, -13928042, -39230232, -4667019, -14498199, +-30972620, 6153078, -232465, -6043019, 1912334, 16598438, -1108638, -17605608, 5998996, 680752, +-5681705, -4257387, -3167539, 860067, 19128710, -4329327, -739271, 8672613, 6396817, -2786897, +9244917, 8463770, -4126390, -4052302, -7733089, 10635950, -2583423, -18387828, 2769180, -1242856, +6274411, 24034100, -16095390, -25787520, -16282758, -7549479, 3526705, 8569533, 4531728, 18290118, +9116605, -12931610, -7489886, -17629768, 15206869, 9356049, 1658931, 3214246, -10138807, 1042603, +-10725607, 18440442, 18077518, 1271847, -8478802, -4714264, 1749662, 16786342, 33503966, 20623360, +-3214783, -7512972, 423591, 10658498, 4595615, 9836549, 13550622, -13481365, -668404, -25984016, +-17541720, -16702591, -11220602, 6967511, 15901043, 10937671, 1693291, -3191698, -1535451, -14470819, +-18216030, -4603131, -9698036, -9121974, 2044941, -1858647, -2365990, 84826, 541166, 4138201, +-4672388, 9275519, -9483825, 3976603, -12059731, -4039417, -67646, 2214056, -406411, 2101850, +4553739, -3271691, 491774, 11025181, 13424457, 16210280, 8852464, 10150618, 4547297, 1923609, +704375, 278099, 558883, -2847563, -8816494, -8594230, -1481227, 6662568, -64425, 1019518, +-3643743, -2557116, 968515, 8155069, 5087389, 9734543, 7824357, 6975564, 8409009, -19132468, +-2240899, -9904195, 14416058, -15895674, 3092377, 1403917, 28186796, -17420924, -5097053, -17918604, +-3867618, -17699560, -14870251, -10733123, 5563057, -19040126, -13807246, -20705500, -5279589, -3113315, +-6328098, -9356586, -23072028, 6034966, -16305843, 6594923, -17108466, 21098490, 3258807, 9455907, +-4063576, -19903952, 10671383, 6171868, -6689949, 10654740, 14919106, -8062191, -21435644, -11487964, +28752658, -12285754, -928787, 737124, -4867809, 6314676, 18638010, 3301219, 7932268, -6004365, +13335873, 181462, 10506564, 3193845, 3571802, -331786, 1083942, 22784264, 6915434, 54556824, +-33298882, 21254720, 29908542, -7909719, 687195, 15413564, -11172284, -3286187, 25041270, 9906342, +-4170950, 13275207, -5685463, -24260122, -17934172, 6069863, 976031, -32411434, -9015673, -3330747, +-16825534, 8625368, 5040681, -10959146, -8960376, -6628745, 943819, 2956011, 6851547, -5713380, +800475, 3974455, -1801202, -7232725, 1976759, 1477469, 2258079, 6700686, 1186485, -4141422, +530965, 7763691, 6901476, 3321084, -7763691, -215285, 14228153, -4116726, -3032784, 7855495, +-7769059, -13456669, -3851512, 673773, -1778117, -6942278, -2153926, -482647, -7630547, -1646046, +764504, -2182917, -7926362, -13066364, 4879083, 13872744, 4989679, -383326, 437013, -2713346, +-8335458, -6707129, 30298310, 33864744, 431644, 24432458, 24334748, -1395328, 10935524, -24574192, +-7638063, 21674552, 2034741, 21399674, 29972966, 24671366, -4996658, 16084116, -25166360, -39244188, +-16803522, -14708116, 9421548, 26307, 10082436, 10892037, 23600846, 18247168, 6354404, -18734648, +-2293513, 18649284, 5996848, -9217000, 12009265, 25730612, -2919504, 8927090, -21049098, 10024454, +-16620987, -4547834, -10559714, -21857626, 13354664, 1463510, 6502581, 26064546, -14144401, -15924128, +9401147, 27009438, -21287468, -14275398, 8769249, -6915434, 38191388, 28242632, -26922466, -10206990, +-21290690, 1087164, 23285702, -10875931, -16230681, -7442105, 1394254, 5557151, -19423452, 4581657, +38919920, 2760053, -26091926, -39840652, 32052804, -38435124, -32258426, -18911814, -16523813, -27830852, +7356742, 6971269, 44560824, 11076721, 19545860, -9946071, 21258478, -2701535, -9216463, 7962333, +883153, -2157147, 21799106, 2687576, 11100343, 13835700, 7434589, 16608102, -4866735, 4409858, +-3738769, -1465658, -3721052, -14172855, -10518912, -11723113, 13259101, 4656282, 11793443, 14638859, +-3384971, 8726300, 19011672, 6775848, -6318971, 9757092, 11355357, 3830037, -2831457, -14003741, +-12601971, 12295954, 5114769, 8142185, 16216723, 36195300, 15479599, 9046812, 6528887, 10164040, +-5564667, -1320703, 18161270, -11880416, -14530948, -2930778, 6907381, -6333466, 6547141, 3888556, +-35296040, -20395726, -26501558, 7192997, 14959371, 5339718, 22877144, 20519206, 28975996, 9059160, +31629212, 14156749, 20478940, -9879499, -3753265, -9931575, -24060406, -17309792, -37315212, -22164716, +-7020661, -21776558, 5019743, -766115, -371515, 9044127, 7573638, 3486440, 18366890, -4483946, +-14838038, 21807160, 2228551, -28678570, -12173011, -3038153, -34319472, -26156350, -25251186, 2422899, +12566537, 3402151, -13015362, -1618666, 14703284, 8947491, 34656628, 6460168, -45978700, -15373299, +-7719130, 7422241, 7507066, -5285494, -11976516, 17165374, -25318832, -4730370, -20233590, 15584826, +-40053256, -24995636, -32598802, -26440356, 1594507, -14912126, -11179263, -26540214, 13697724, 47670916, +-878321, 30804580, -16740172, 7535520, -22269406, -124017, 34339336, 8056285, -15669651, 1752884, +13465796, -22993644, -35128536, -19192062, 9493488, -27709518, 12291123, -490163, -343597, 17645336, +9692131, -4834523, 21024402, 20388746, 16902844, -5527086, -5203353, -3721052, 223338, 14148159, +10748693, 7065758, 853625, 14739791, 8758512, 2126009, 2467459, 10856067, -4077535, -3968013, +8216273, -11680164, 10915123, -10184441, -9256191, -11959873, 21121038, 12553116, 19685982, 6735583, +7798587, 1421097, 1952063, 9046812, -13706314, -23378580, 2454037, 6127845, 6425271, 8456791, +-1496259, -9281424, 26570816, 10942503, 26805428, -43408696, 19020262, 32825362, -3042984, 37787124, +-19826642, -57363584, -29601988, -293668, -5590437, 6447820, -20443508, 19964618, 28229210, -25186762, +22455162, -13757317, -16799764, -40042516, -16232292, -22975390, -15072651, -18362058, 18260590, 2783139, +-35801236, -45967424, 34947612, 7946763, 12635257, -10692321, 2955474, -12389907, 499827, 10650445, +16222628, 14616847, 39122320, 1316944, -27777164, 37845104, -3823058, -9752260, -17363480, 16006269, +-30899068, -20813412, 17818208, -16106664, -24023362, -30325690, -26432840, -5631776, 3747896, 2932389, +-8027831, 32811940, 28080496, -2639794, -15702400, -27343372, -31242666, 7808788, 6832756, -6138582, +-2866891, 45015016, 3240016, -13074954, 19637664, 9377524, -29425358, 23626078, 43010340, -46881180, +76025752, 20297478, 22106734, 8351564, 22264574, -5978058, -46582140, 32101660, 2957085, -5776194, +33541548, -39483636, 7151121, 6985228, 8590, -3782793, 1897302, -3049427, -10688563, 5867462, +11927124, -9701257, -1009317, -14367739, -16274705, 21453362, -4501663, -10486163, 5158793, -5708012, +-12895639, -23803782, -5229123, -8079371, 21104932, -19972672, -1769527, 24576876, -4949413, 19641422, +-6757594, -17152488, 9186398, -3450469, -7897908, 10171556, 2665027, 27062052, -3351685, -413927, +17643726, 54181012, 23703924, 1108102, -18360986, 25803090, -600222, 1724966, -12633646, 23539106, +-27655832, 19917910, 19108846, 20178294, 9655086, -7581154, 26759794, 33652680, -7069516, 13831942, +-21122650, 33866892, 14325863, 11261404, -21854942, -47486232, 9260486, -14619532, -11005854, -19318762, +-24408836, 14552423, 6388764, -11854110, 2528125, 1066226, -12983686, -57979376, -3796751, -12360916, +-6124624, -950798, 40628244, 27808840, -13796509, 10465225, -27078696, 2952790, 19934554, -30774514, +-28698972, -23480586, 36751500, -26600344, 7489349, 29620778, -40189620, -37197640, 34019364, 27174258, +28523952, 38330436, 13989782, -49149460, 10870562, 14473503, -4548907, 80142480, -8503498, -12254615, +-36451924, -31370978, 15950435, -28916942, 18608482, 6517613, 21074330, 43889732, -28403156, -19259708, +53265112, -32613298, -36197984, 23477902, -46559056, 33668248, -35458712, 8001524, 11886859, -25537876, +10351945, -29640644, 20380694, 37765648, -1781338, 6541235, 7524246, 1389959, -11787001, -10894185, +-2718714, 10947335, -5123359, 7387881, -7917236, -23430120, 9795210, 2078227, 15680926, 7907572, +13659070, -4728759, -4898410, -23214836, 16051367, -3110630, -21476448, 4993437, 43420508, 12124693, +-11424076, 12894566, 23256712, -11599096, 2301029, 18107582, -9332964, 18064632, 5833640, -5553930, +-28382218, 4871567, -11026792, -569620, 34744136, -15888695, 1556926, 6890738, 4803384, -9893457, +11570642, 39775156, 2896956, -34773664, 48527760, 11450383, -3736085, 34481072, 16837882, 27814746, +10081899, -42438036, -9718974, -16131897, 19287624, 48526152, -31511638, 7495255, -15380815, 21392158, +24557012, -33425046, 27074400, -26919782, -24360518, 11754252, 22194780, 588411, 7035694, 17303350, +-27237608, 23240604, 1357210, 28449326, -5607080, -7964480, 8898098, 42309724, -19649476, 34119756, +-17176648, 6605660, 8516383, 34103652, -2522757, -2573759, 11353746, 51582556, 2922188, -40910636, +-3797288, -49182744, 28841242, -215285, 79594336, 16830904, -23920284, -7421704, 17202954, -18035642, +27624692, 51960516, 35281544, 478352, 14700062, 22337588, -3089692, -24628954, -3857418, -5834176, +-84131968, 51832204, 38377680, 35583268, 8140037, -36517960, -11368778, 27010512, 13615583, 23487566, +12283606, -80371184, -29169808, 48875116, 12971338, 15578920, 41791644, -30296162, -1543504, -4520990, +23417236, 5761162, -2950643, -6839199, 18323404, -5268315, -22443888, 10526428, -11140608, -12836584, +10734197, 16322486, -12905303, -4161823, -1064078, 12813498, -17428440, 13327820, -15474230, 6693170, +-26298084, -26572426, 25413322, 3077344, 1660542, -3320010, -19607600, -6141267, 16797618, 1573569, +5277441, 28742458, -5151277, -22346714, -2780991, -12826383, 9249212, 10578504, -11162083, -9196599, +10788958, 23767812, 29756070, -1234803, 31532040, -19452980, 32090386, -29314762, 4984847, 15346992, +-15029701, 2156074, 6077379, -8025147, -15684684, -29677150, 45252312, -10146860, -8836358, -15101105, +-2459406, -6255620, 14766634, -30426622, -8682276, -19060528, 6615324, -19166828, 18446348, -179315, +9557376, -21143050, -38308424, 1748052, -27966680, -29406030, 13407277, -22580254, -18917184, 37042484, +-13606993, -21800180, 2921115, -22419730, 10621991, 13916231, -3931506, -18343268, -5159330, 10510322, +9523553, -8415452, -608812, 32605244, -5650567, -20344724, -25472378, -3839164, -11052025, -38788388, +36455684, 12373801, -44147968, 27145804, -1753420, -18778134, 85541256, 47860968, 39517996, 20658256, +12232067, -20453708, 3408057, 9175661, 10312753, 3602404, 37622304, 8144332, -10807748, -18633716, +-75187160, 15155329, 10208064, -624918, -14430016, -28691456, -5311801, -18585398, -16081431, -1461900, +24154896, -16626892, 41558640, 5746666, -7884486, -3195456, -3160022, 2966749, 17702782, -7057705, +4714801, 11840151, 4574140, 1999307, 9870372, -15731928, 7872138, 2411087, 24520506, -8752606, +-5616207, -7016903, -5674726, -19537806, -10004053, 6588480, -20477330, 15188615, -3789772, -10398116, +14816563, 8706972, 12541841, -4945655, -1430761, 1160715, 2778307, -13670881, 7419019, 484794, +-130997, -1661616, 9127879, 4320737, -39349952, 65700116, 8141111, 21354578, 11521250, -16622597, +12000675, 18316962, 4365835, -2153926, -16209207, -3055332, 4235912, -7713762, -5925981, 2509335, +7143605, 18935974, -13554917, 7818451, 519154, 15064598, -5671505, 2783676, 4785131, -17844516, +14046154, 2069101, 3281892, 4889821, 5025649, -11395085, 11627550, -9854802, 2174864, 11143830, +-6461242, 10922639, -5081483, 13831405, 10652593, 6110665, -17710298, 12814035, 9648107, 7708930, +21481816, -21136070, -2093797, -417149, -4712116, 6172942, -11069204, -17544404, 11617350, 13218836, +6473053, -1875290, 2587718, -2079301, 6723772, -6290517, 2570538, -13077102, 11443940, -20184198, +18589692, 10311143, -6600828, -488553, 7560753, 351114, 6749004, -63888, 525597, -874026, +-7046431, 9477919, 12847858, -11771432, -2931852, 2224793, 7006703, -5451924, -5789079, 1338419, +2121177, -1505923, 1039919, -4441533, 1330903, 5216238, -4482872, 970663, 2900177, -4537096, +3453154, 4555887, -714575, -1696512, -2535641, 752156, 9516037, -3855270, 983548, -9259949, +254477, 9940165, -7438347, 7363185, -3767760, 422517, 16423418, -3076270, 31675, -492311, +-5461051, 8524436, 3240553, 3590056, 3239479, -2858301, 1925219, 9366787, -3077881, 6346351, +-4525822, -821949, 12642773, -52740052, -122714728, -19705310, 71701792, 65058016, 160388576, 83687976, +-43239584, -13376139, -88902600, -150936960, -10461467, -68659888, -9595494, 109775072, 46888696, 84780504, +130302328, -15292231, -19128710, -66337916, -112613504, -89646704, -5797669, -33772940, -12768401, 93390304, +29640106, 60695404, 110547624, 17965312, -465467, 11294153, -67262408, -101979704, 17486422, -105378632, +-68840808, 23192286, -10584410, 16939352, 135420848, 15369540, 51917028, 110402136, -22025130, 3255585, +24663850, -106780400, -88888104, -31686658, -121310816, -47176996, 15475841, 22253836, 83580064, 117504400, +83919368, 59023588, 51620140, -19805704, -71042520, -58565100, -87835304, -92522184, -39539468, -23601920, +652298, 77263776, 92465280, 28722594, 72266048, 20849918, -22821846, 14979235, -50291384, -70203384, +-13643500, -32733556, -21699248, 39222180, -1404454, 27280558, 49131204, -13698798, -1013612, -236223, +-24768540, -7889318, -1636919, -18868866, 20863878, 7287486, -4755066, 33705292, 10920491, -5118528, +32725504, -11718818, -34867080, 432718, -53312356, -37652368, 11656541, -35811436, 7718593, 40913860, +30391188, 55863564, 61351460, 22018150, 21781926, -2854006, -50337016, -70839040, -72449120, -76120240, +-48037060, -3928821, 24492588, 52068964, 91118808, 97281544, 81201192, 63106492, -3610457, -59942712, +-85295904, -109619376, -111293344, -59787556, -17729624, 46332496, 98919536, 89058832, 54117660, 39574904, +11865921, -8658654, -13118441, -39715024, -45245868, -34539052, -28333900, -20845624, -3913252, 3833795, +16726213, 24142548, 25353192, 23786602, 22161494, 10681047, 805306, -8604430, -12870406, -19087908, +-18429168, -14185740, -7497939, -3231963, 3518115, 6052146, 8740795, 6889665, 5964636, 4750234, +4688494, 1338956, 1243930, 1018981, 423054, -2266132, -659814, -3400540, -6561100, -7131257, +-6762963, -6407555, -265751, 1012002, 3613141, 7634841, 9371619, 8734890, 7911867, 2665027, +-877247, -5407901, -8227010, -9317932, -7037304, -5051419, -1835562, 1433445, 4271345, 4689031, +5375152, 4203699, 2879239, 1453846, -31139, -2088965, -1560147, -2231773, -1773822, -1399086, +-1402307, -683974, 300648, -1142461, -682363, -148176, 590558, 1393180, 1385664, 1470489, +2398739, 1546188, 823560, -73014, -1124745, -1881196, -1870458, -2114198, -1498407, -860067, +-192200, 445603, 1000727, 1009854, 1067836, 875636, 597537, 151398, -43487, -292595, +-419833, -466004, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -4391067, -4664335, 1187559, -2494302, -1096290, -5590437, -1477469, 4733591, -2462627, -1784559, 1475858, --703301, -151398, 329102, -1475321, -1174137, 5728950, 2807298, -668941, 312996, -823023, --1668595, 810675, 2073396, 3163244, -766115, 1225139, 1484985, -5024575, -1511829, 13959, --965294, 3120294, 319438, -1039382, 2825552, -2102387, 980326, 4348655, -2360622, 296890, -618475, 3306051, -1226213, 4551592, -6383932, -2323577, 2834679, -1253594, -5404143, 409096, -1133871, 1830730, 1903207, -571231, -2304787, 218506, -2087891, -1430761, 674847, 2711198, -2522220, -3613678, 3234110, -3956202, 3587372, 216896, 3150896, -1197759, -2536178, -1127966, -2131915, -391379, -489089, -617402, 2937221, -3111167, 1646046, 773631, 819265, 1000727, -2357937, 750009, -1452773, -1677722, -892816, 1269700, -234613, -1230508, 277025, -1487132, --290984, -98784, -1486059, -605054, -819265, 205622, 863288, -1025960, -699006, 430034, --168577, -1469416, 27917, 805843, -529892, -71941, 345208, -134755, 622233, 421444, -88584, -1111323, -325881, 41876, -457414, 30602, -75162, -779537, 486405, -1321239, --212064, -15295989, 5012227, -5564667, -2221572, -4557497, -4678830, 2648384, -1565516, -3952981, --2126546, 5358509, 7968775, -4369593, -1630477, -395137, -5750961, -5405753, 397821, -553514, -3502546, 1174674, 2607045, -2310693, -1447941, -2991445, 833761, 5139465, 2228551, 992137, --3325379, 2508261, 754304, 1531693, -2173254, 182536, 754304, 1147293, -2950106, -2162516, -799401, -4073240, -4160750, 1772748, 3144990, -3552475, -1788854, -1376000, 248571, 3131568, -2526515, 1085553, 470836, 8114267, 3184182, -2576981, 3156801, 2242510, -2263985, 3827353, --1437203, -974421, -27917, -1685238, 3404299, -1932735, 889058, 2043868, 1640678, -3048890, -1188632, 554051, 607201, -1074816, -1512902, -645319, 4757750, 303869, -1420024, -1035624, -1116692, -4301947, 822486, 2538863, -173946, 1638530, -952409, -1560147, 1028108, 928787, --408022, 1591285, 819265, -474594, 1131724, 1177895, 1987496, 243203, -2147, -158377, --610422, -866510, -95563, -170188, -541166, 569620, -199716, 1958505, 11601780, 4604742, --843961, 493384, 2632815, 1359894, -820339, -5062156, 129386, 4427038, -4610111, -545998, --8622684, 2219961, 3464428, 198642, -2079301, 6244346, 4380867, -4080756, 1921998, 202937, --3582003, 5568425, 3055332, -399969, 2229088, 5303748, -1689533, -1138166, 322659, -3221, -93416, 1247151, 6521908, 1285269, 943819, -10635413, -595390, 447213, 1231582, -4832375, -1075352, -3905199, -3005403, -4128537, -2709588, -11811, 1195612, -2537252, 2464238, -6126771, --3534221, -408559, -117038, 1916629, -2477123, -605590, -2246805, 1285806, 3260954, -2032056, -317291, -1764695, -351650, 5075578, 3967476, -1653026, 3715684, -1836635, -3238942, -4036733, --339302, -410169, -2735894, 2397666, -468151, 656056, -338766, -927713, 142808, -614180, --2226941, -178241, -3524558, 353798, -1757179, -1160715, -2968359, 3354906, -1083406, 1117228, -2276870, 878321, -1224066, -315143, -1370095, -137976, 540629, -1347009, 1303523, -151934, -102542, 151934, -525060, 749472, 413927, 206695, 53687, 1876364, 875100, -662499, --1355599, -1236414, 1111323, 1516660, -54761, 353261, 1461363, 193274, 18290118, -8063801, -1437203, -744103, -3461207, 2844879, 5075041, -3415573, 5461588, -377420, 5830418, 1563905, -2011118, -2617246, 3273302, 1220845, 3353296, -7298223, 3797825, -4345433, 1264331, -3660923, -4460324, -1310502, 4493610, -2756832, 1608465, -1832340, -469225, -274878, -533650, 1722282, -9417253, 346819, 2713346, -2699924, -4471598, 112743, 12348, 113280, 1371705, -3121368, -6152004, -468151, 5145908, 290984, -2329483, -2927020, -7901129, 3773666, 2477659, -3732864, -335544, 3064996, 1594507, -9190693, 5373004, -379568, 3798362, -5549098, -5970005, -2934537, --5816997, -1126355, 6565932, 1309428, -2617246, 324807, 3681861, -1334661, -3088082, -1637456, --3454228, 2348810, -5199058, -973884, -4006668, -1573569, -92342, 4338454, 1998770, 413391, -1302449, 5464809, 2834679, 608275, 1949915, -1633161, -690953, 302258, 27380, 816581, -388158, -1021665, 467078, 1885491, -210990, 354335, 653372, -1010391, -1352915, 1158567, --1604707, 1750199, 998580, 1616518, -35970, -710817, 958315, 1599875, 359704, -759136, -468688, -114890, 4755603, -11307575, 2250563, -3597035, -10333691, -7978439, 4172561, 4654134, -6145562, -3111704, -1634772, 4211753, 1993939, 6317360, 2032056, -760746, 610959, 4013110, -7878581, -2079301, 2268280, -149250, 6376953, 1423245, -430570, -1340567, -4933844, -7499013, -43487, -1125281, 2201171, -477278, 1716913, 1248225, 418759, 420907, 1447404, -2599529, -250719, 3482682, 5504538, -2769180, 624918, -2447595, -3214783, 4515621, -3543885, -8805757, --3470334, -2301566, 4171487, 288300, 4605816, 4175782, -2276333, 123480, -3658239, -569620, --1586454, 5363878, -6866579, -264677, 2276870, -7309498, -8178155, 57445, 2492155, 5092758, --3624953, -8692477, 4475893, -8026757, 9278203, 5185636, 1506997, 3893925, -117575, -3904125, -11802570, -1150514, 5701032, -293668, 8249559, 5611375, 3002719, -919660, -1633698, -2852932, --1043140, 1171989, 279710, 2206540, -2358474, 1343788, -1261647, -928787, -897111, -1038845, -1104344, -678605, -38118, -1837172, -97711, 996432, 1978369, -2091112, -2467996, 258235, -1069447, -104690, 1289027, -821949, 138513, -1051193, -324270, 584116, 1218697, 1418950, -891743, -1286343, -1801739, -24828132, 5218922, 1346472, -12427488, -15704548, -2454574, -12104828, -9996000, 2925410, -7265474, 546535, -3336653, 1189706, -4934381, 730144, -203474, 146029, -7070053, -2409477, -1546725, -2826089, -2488397, -6501507, -4335770, 6700149, -2647847, 4269735, --3599720, 1898376, 193274, 3867081, -3762928, 2950643, -3780645, 1774358, -1396401, -2320893, -2473364, -6070400, 2449205, -3046206, -1045825, -4387309, 10903311, 5242545, 9570261, -3953518, -4083440, 3313031, -1801739, 1781875, -4411469, 4861366, 10486163, 8319889, -5647345, -1439888, -2519535, -4052302, -2704219, -7166690, -13508746, -4513474, 7052337, 2604361, -3271691, 1477469, -797253, -3604551, -6373732, -6417218, 4715874, 640487, -9907953, 1164473, 1046898, -386547, --664646, 3418257, 7326678, -633508, 74088, 1119376, 75162, -1798518, -6523519, 2294050, -2308545, 1467268, 3168075, 1977833, -2745021, 838056, -1698123, 478889, -1423782, -496606, --1584306, 154082, 455267, -88584, -1124745, -1059246, -273804, 627065, 40802, 2541547, -948114, 2379949, 2532957, 2770254, -3103114, -3117073, -1132261, 2554432, -750009, 1010928, --872952, 1463510, 1491427, 1029182, -1472637, -758599, -9820443, -4126390, -2596845, 7315403, --2008434, 1695438, -7666517, -7990787, 336081, 2250026, -4704600, -2712272, -4418448, 8983998, -1935420, -3074123, -6647536, -6548215, -6415608, -1812476, 3000035, 9029095, 2887829, 5085778, --4127464, 9620727, 5462125, 1741609, 54224, 9898289, -5858873, 913217, 3092377, 6693170, --10933376, -5565204, 4693326, 1887101, -1555315, 11317776, -5010080, 3189013, 6788196, 2109903, -1098438, 4982699, 1979980, 2474438, 2494839, 1074816, 2882997, -175020, 4271345, -1008244, -10546829, -7709467, 8670465, 6928319, -6088116, 6862821, 1218160, 5834176, 5852430, -12954695, --392990, -516470, -3951907, 2076617, -3570192, 3597035, -1522566, 8267812, -951335, 1305670, -3336653, 2330020, 3227668, -5259725, -1818919, -5374078, -5039071, -2850248, 7970386, 1210644, --2604361, 2383170, 2161979, 1036161, -1401233, 852014, -1005559, 3178813, 1151051, 1022202, --1576790, 994285, -3058017, -256624, 3455838, 1847373, -614180, 1188632, 1195075, -954020, -1431298, 1021129, 3351685, 1900523, -1935420, -719407, -1166621, 1069984, -3064996, 916976, -1617592, 1050120, -492311, -116501, -312996, 12948790, -3466576, -2046015, -3219078, 9214315, -4817343, 957241, 3489124, -6283537, 13787382, 4551592, -1132261, 5191542, 6636798, -11316165, --800475, 2646237, 1276142, -40265, 9507984, -4617627, -5847598, 13123809, 1939715, -955630, --1356136, 6848862, 476741, -1018444, -1340567, -3211562, 3374234, -1997697, 4516695, 3197603, --8337606, -7866233, 928787, 15503758, -240518, 3153043, -9630927, 4712653, 6315213, -3974455, -4665945, 5851893, -9767829, -5937256, -1281511, -12445205, -6663105, -7431367, 2117956, -2552821, --2824478, -1373316, 8677445, -11997454, 5228586, 2600066, -3960497, 7315940, -4758287, 699543, --10145250, -214212, 6014565, 5469641, 11386495, -13548474, -3445638, -15040439, -3308736, -306553, --3661460, 1685775, -820339, 13682155, 10536092, 6012954, -6898791, 349503, 2533494, 6669548, -8116952, -187368, -58519, -1167694, 77846, 4668630, -325344, -402116, -288837, 85899, -132607, 570157, 1791001, -1923609, -712428, 1956358, 217970, 1808718, -173409, 206158, --1685238, 2483028, 1413581, 39728, 2211371, -1171452, -267362, 2183454, 462246, -360777, --2818572, -168577, 482647, 406948, -1088774, 2801393, 4539781, -833761, -261456, -2084133, -1409823, 8769249, -10027675, 240518, -6179921, 16931298, -7282117, -4216584, 14661945, 11037529, -1971927, -20656108, -5105643, 9382893, 678068, -1069447, -3018825, -1701344, -1693828, 1357747, -3096672, 2827162, 2674691, 18149458, -3893925, -2723546, -75162, 2302103, -5523865, 3126199, -1845225, -758062, -6070937, -3836480, 6493454, 6972343, 13255343, 3335042, -5582921, 3295851, --261993, 3342022, 158377, 7329362, -6260452, -9280351, -9577777, 6136972, -2796024, 1223529, -2379949, -3466039, -721018, 15765751, 5317170, -13436268, 9411347, 2962991, 15946140, -8414378, --7956964, 4568772, 8540006, 5894843, 3230352, -1546188, 407485, 4057670, -5323612, -1569274, -73551, 6743099, -5036386, 13615583, -594316, -253940, -7175280, -8041253, 15543487, 4586488, --12942347, -3068754, 10681584, 7416335, 1387274, 2646237, -6641093, 1984812, 1636383, 2042794, -1090385, 2275259, -3110630, -3712462, 383863, -170188, -3117073, -1057636, 2698850, 2695092, --4133369, 1009854, -104690, 1702955, 2313914, -725850, -806380, -1045825, 1530082, 4759898, --3580929, 2600066, -322659, 67109, -2138894, -526134, -1616518, -1077500, 2209224, -845572, --1436667, -3172370, -203474, -1816234, -12150999, -10302553, -3977677, 3834869, 3935264, 18884434, -18333604, -2076080, 1525250, 861141, 186831, -155693, -3732864, -12221329, -9366250, -4810900, -4392141, -3372086, -10630581, -2974802, 2075006, -742493, -16322486, -4762582, 3670050, -1625645, -1595580, 1178432, 4964982, 7254200, 1211718, -5175436, 5358509, 5583458, 3937411, -170188, -7217693, -14307610, 4855461, -12671764, 15897285, -11202348, 4376572, -11889006, -1934346, -13288629, --7002944, -8264591, -8948027, 6213207, -7863012, -1481764, 2828236, -55298, -4169876, -2991982, --1337346, -12998719, 475131, 897648, 6517613, -20317880, 528281, -485868, 9546102, 11460046, --7704635, -4720169, 480499, 8813273, -16787954, 10829223, -7522099, -4968204, 871878, -16345035, --798864, -1288490, -2515777, -2893734, -1999844, 16464220, 6747931, 3409667, -3888556, -3658775, --4071092, 545998, 4078072, -6550362, -134755, -1116155, -1726577, 907312, 4898947, -1781338, --3067681, 3099356, 1928977, -39192, 3454228, 1870458, 2901787, -1713155, -2165201, 4158602, --2942590, 1088774, -3871376, -724776, 220117, -771484, -1440962, -3434900, -3760781, -4012036, -1021665, -196495, -835371, -2886218, -2707440, -1101122, -1406602, 933082, 4152697, -1070521, -3189550, -9531606, -25071334, -9928354, -4660577, 4534412, 6945499, -8129836, -2996277, -10262287, --9047885, 4982699, -7934952, 8450885, 3511673, 6110128, -871342, -8043400, 14420353, 5820218, -8126078, -10086731, 4449586, 2003065, -14788646, 9346386, 5623186, 681289, -10040560, -3771518, -5100274, 5441187, -151398, 1963337, 7312719, -6945499, -5146445, 8642548, -16887812, -16604880, --21915070, -4811437, 7137699, -19178640, -16043850, -9649718, 381715, 7067906, 2270964, 2080912, -386547, -5463199, -7652558, -18105434, 9666361, 2836826, 22137872, -5163088, 620623, -13558675, --16322486, 2200097, 10600516, 849330, -10291279, 6934225, 2789045, 15185931, 1503775, 2017561, --7269769, -1261647, 6405407, -14654428, -27590870, -7573101, -6881612, 1613834, 7267622, -13095892, --6684580, 4440460, -4612795, -944356, 4323422, -2426657, -2215666, 5813238, 1402844, -380641, -2802466, 4546760, 4929549, 1074816, -3307125, -8645232, -805306, -5222680, 1450625, 1107028, -1119376, 3774740, -3149822, 3444027, 4519380, 3164317, 2554969, 2675765, -6512781, -5819681, --2263985, -4992900, 564251, 1605781, 1717450, 6241125, -1442572, 4020090, 2371359, -2421825, --1340567, -3590593, -5059472, -1227287, -6664716, -2014340, -1513439, -23601920, -18136574, -8348343, -12462921, -1093069, 21340082, 4207458, -1839320, -11985106, 4271882, 21969294, -22999550, -20730734, --6832756, -3460670, -14418205, 13654238, 4018479, 7387881, 8864276, -14477798, -1707250, 5776731, --9094056, 17026860, 263604, 3808562, -4951024, 4180614, -11256036, -6459094, -3860639, 6381248, -3058017, 10333691, -16979616, 1487132, -118648, -12698071, 13836237, -8302709, -20205136, 3956739, -7296613, 1430224, -6027450, -1510755, -8409009, 1345935, 6899328, 2884071, -13808320, 5366562, --3139084, -15398531, -9062381, -18909130, 430034, -2988760, -491774, 2393371, 11579769, 14324790, -11971684, -6175626, -10424422, 3391951, -2646774, -1816771, -8056822, 14902463, 12372727, -2717641, -22986128, -14720464, 7668664, 14427332, 15607374, 356482, 9924596, -6486475, -2526515, -12930536, --5437966, 7624641, -2612951, -10089415, 6255620, -5812165, 6572911, -3003256, -6832219, 3498788, --1348083, -3987877, -2973191, 2546916, -3317862, 2211371, 4642860, -4944581, 6294275, -847719, --3402688, 2263448, 770947, 326954, -2823941, 3592203, -5565741, 1826972, 2121714, 155693, --3707631, -470836, -2190970, 2760590, 5219996, 11176579, 5734855, 8910983, -427886, -163209, -4653597, -5819144, 1578937, -7868917, -3128347, 1632088, -77846, 8629126, -20440824, 2600066, -248571, -12920872, 1893007, -28755342, -24869472, -5946382, -209380, 1081795, -617402, -10217727, --348966, -2915746, 9210020, 1803886, -570157, 1735704, -21721260, 7521562, 4065187, 12070469, -5016522, 5232881, 14181445, 7065758, 2063195, 35459788, 7596187, 13647259, 18824842, 886374, -13280576, 3331284, -7354595, 8621073, 623844, 4153770, -7202660, 544387, -4668093, 3012920, --4653060, 9978283, 1216013, -6199249, -7739531, 1073205, -21021718, 12233677, 8265665, -1066763, --1889786, 4811437, -5576478, -4634807, -6885907, -8326868, 6970732, -6641630, 11508365, 13378286, -13122199, 13944685, -3218004, -21117818, 355409, 8921721, 21322902, -4937065, -765578, 10098542, -14898705, 21927956, -2822331, 9663676, -6467147, -3754338, -17592722, -13731010, -5982353, -6228240, --5009006, 3684008, 786516, -7547868, 8579734, 5405753, 6747931, 12062953, 4849555, 4526359, --1412507, 22549, -1757715, -3442416, 129386, 2183991, 38118, 6371047, 5112085, 3119757, --334471, -5207648, 332323, -3736622, -4122095, 2666101, 3256659, 979253, -6470905, -1452236, --9424232, -2290291, 3118146, 4695473, -2997887, 3906273, -5373004, -6272800, -3148211, -3776887, -3529390, 1831804, -5498095, -3788698, 4334696, 16988206, 22158810, -17118666, -17897666, -23526220, -20537460, -2530273, -8762270, 6920266, 6688338, 19213536, 15964393, 755377, 17536352, 25056840, -6925635, -13197361, 11870216, -12233677, -6960532, -2749316, -8625368, -10310069, 4948876, -5333276, --5237176, -12380243, 27333172, 3193845, -14928769, -256087, -2232846, 12104828, 12822088, 4907000, --8830990, 12931073, -3810710, 7890392, -25463788, 1084479, 10260677, -11063836, 3400004, -12001749, --9817758, 25817586, 10597295, 7624641, -2043331, -23314694, -5830955, 6449431, 4751845, 3503620, --5695127, 18134962, -13133473, 9974525, -6289443, 6520297, 7216619, 14320495, 19439022, -23066658, --821413, 11509975, 5478768, 16271484, 15773804, -23003308, -164283, -6534793, -12030740, -973884, --12572443, 4844723, 9221832, -4836670, 16893716, -4092567, -10469520, -12660490, 10424959, 12000139, -11942157, -3592203, 1880122, -952409, -17923972, -17355426, -16294569, 9685151, 4747013, 2918430, -7730941, -791348, -4727149, 11810623, 1398012, -345208, 7130720, 11428371, 6812355, 610422, -1010928, -3743601, 6835441, 3264712, 14686104, -1693828, 1529008, 10227391, 8244727, 2636573, --1780264, 6426345, -508954, -1699196, 11523397, -9782862, 205085, 6984154, 274341, -2509872, --3869766, -2132451, -335544, 7553774, 1170379, 233539, 8367670, 5995238, -5920613, 9008694, --742493, 17474612, 34820372, 1487669, -16656957, 4702989, -11147051, 7209640, -9693204, -10420664, -31601296, -23994908, 39680664, 24334210, -5879810, 8026220, 19164680, 2810519, -29950954, 11790759, --24259050, 5810554, 2144799, -11931419, 498753, -1585380, 17303350, -8614094, -882616, -614180, --5284421, 36644124, -2116345, -5440650, 4700842, 12383464, -12484396, -26266946, 20763482, -3259880, --1603633, 23752780, -13944148, -3784403, -16599512, 4507568, -11606075, 13451301, 12321724, 25283398, --7241852, 7124814, 16824460, -23817204, 2913599, -15144592, -24067386, -30656402, -16190416, -33152316, --37402184, -5141076, 2401961, -17501992, -18950470, 11818676, -1347009, -10524280, -20430086, 14823543, --10924249, 3932580, 18493592, -34799972, -10095321, -6311455, 15467788, 41845328, -19776176, 1320703, --12563316, -18415210, 8956617, -22057342, 17832704, 31222802, -8901857, -14421963, -15436112, -3774740, --3714073, 415001, 10065256, 7541963, -8226473, 8360154, -1065152, 6603512, 340913, -7427072, --2184528, 9240622, -15162845, 7230578, -7963406, 2211908, -6491843, -2355253, -9146670, 2202245, --8793946, -13475997, -6587406, 3349538, -10140955, 107911, 3004867, 15051176, -8663486, -4902169, -4860829, 6280853, -10819023, -6586869, 3019899, -2792266, -5790153, 10549513, 1780801, -8006356, -7228967, 2200097, -12628814, 2205466, -10137733, 11254425, -5009543, -16146393, -23897198, -18126372, -20149302, -16412681, 8167954, 19173270, 8227010, 12325482, -22778360, 32864016, 20702816, 17939004, --13154948, 23561116, -2527588, 15591805, 10277857, 3491272, 8537858, 11452530, 7012608, -3806415, --5796595, -5209259, 2428804, -15786152, -18592914, 10523207, 4694936, 6119792, -15280420, 4208531, -4733591, 11516955, 17190606, 25789668, -14487998, 3924526, 36719288, 7930120, 3999152, 3567507, --7486128, 2713883, 36567888, 10611254, 23712514, 6760816, -25222732, -10516227, -18346490, 53014392, -21607980, -20464982, -12752832, -18252000, 3168075, -11972221, -28715078, 6627672, -21725556, 32463510, --2193655, -26851598, 35451732, 28683402, 4182225, -7786776, 4930623, -16341814, 21878564, 38927436, --10314364, 18465138, 43622372, -6845641, -6976638, -4952634, 26605712, -1921461, -14515379, -13733158, --13853954, -231928, -1603633, -12170327, 1091995, -5101885, 13479755, 3331821, -12712566, -8087961, --14494441, -1584306, 2127620, -2375117, -10108206, -11415486, -7984881, 7165079, 12189117, 1890859, --12406013, -1817845, 16103980, 132070, 14774687, 7697655, -8043937, -724776, -12566537, 12508019, -5750961, -16385300, -30698278, 2848637, -1822677, -9343701, 10319196, -65498, -5203890, -4379793, -3352759, 856309, -1029182, 9115531, -24970940, 10110890, -3297998, 25043954, -51946556, -35604204, -20760798, 9997073, 7610145, 17634062, -17621714, -23039816, -12603582, -18955302, 10940355, -20349556, -6131066, 13720273, 22494354, 863288, 18879602, 11020886, 3240553, -5854041, -19415936, -13703093, -11577084, -23834384, 12357158, 2926483, 20566450, 15669651, -7459285, -29699698, -19206020, -1699733, --1316944, -7782481, 20575040, -35932232, -2618320, 1352378, -37553584, -638340, -4469987, -2922725, -4216584, 22176526, -21345988, -59222768, 22318798, 24248312, 14587856, 46336256, -37901476, -4814659, -25881472, 19731080, -23719494, -11038603, -6410239, 36502928, 7356742, 34842384, -50130320, 7399692, --59836412, -35893040, -34610456, 41309532, 13258027, -26564372, 24407226, 2877091, -23159538, 23787140, --34737160, -36617816, 5665062, -38035156, 11483132, -65000036, 10116259, 20549808, -27515172, 30481920, --13626857, -7323456, 20551956, -7013145, -5412733, -14496588, -877784, 4803921, 11416560, -1335735, -10621991, 20511690, -15256261, -1692217, -12095165, 7294465, -7841000, -2143189, 4649302, 2508798, -2920578, -2723546, 21300354, -7034083, 1877438, 9013526, -18485540, -16443282, -17946520, -8472360, --30339112, -14048838, -10992969, 26229366, 5360119, 23334020, 10228465, 4667556, 10781979, 7347616, -1107028, 8784819, 2032056, 18249852, 44950052, 16610786, -16135655, -10553272, 6184216, -11461120, --13423383, -1633698, 20910048, -3674882, 3894999, -22293028, -4616016, 30690226, -22439594, 16955458, -40130028, 20023674, -1712081, -7710003, -13203803, -25720948, -18878528, 22065932, -12602508, 20700668, -14961519, 7066832, 983548, 8045011, -6394670, -32706176, -11316702, 23296976, 18521510, 19352048, --20642150, 35582732, -9162239, 13797582, -26331908, 24070070, 41555420, -8421894, -14775761, -1597191, -1544578, -9300752, 9098351, 18101676, -34057480, 22304838, 21725018, -5380521, 25182466, 13268228, -10882373, -16025597, 3322694, 22436372, -47496432, -42395084, -17601850, 11143293, -21848498, -64404644, -26989574, 17580912, -8313983, -10990284, 521839, -3849901, -22003654, -59170692, -3541201, 41887744, -10222022, -7543037, -4983773, 8986682, 34403760, 27292906, -40303972, -16724603, 26954678, -5779952, --10780368, -46201500, -2652679, 25220048, 8444443, -7184944, 15636902, -5883032, 1688996, -17457432, --2811593, 10485089, 15910169, -9102109, -3221762, 3180423, 9220758, -5768141, 5694590, 669478, --11227045, 6689412, 19344532, 3236795, 5810554, 3524021, 8762807, -9168681, -15887621, 1473174, -17292076, -14201309, 6245956, -4848481, 1603097, -13773960, -26331908, -14427869, 9891847, 32053878, --3217468, 15108621, -21206402, -9409736, -14315126, 8836895, 6314676, 10087268, -7185481, -11048266, --705448, 2275259, 2543158, -4990752, -1094143, 21876416, 28997472, 645856, -32695976, 43296492, --12164421, -30227442, 27084064, -4350802, -16445430, 20932060, 5602248, -4383014, 17657684, -24212342, -22961968, -8206609, 770947, -7041599, -6015102, -33754148, 13364864, -12885976, 5316633, -13532905, --1116692, -10089415, 9664750, -5911486, 36477696, 6444599, 23863912, -9286793, 5967320, 15083925, --6406481, 10424422, -2068027, 18219252, -915902, -6125697, 28806882, -25742960, 14361834, 19684908, --11556146, 22280142, -13641890, -558883, 11463805, -8722542, 26192858, 23450522, 4876399, 39027296, --24055038, -55116240, -9276592, -34080564, -22546968, 80483392, -2050847, 24689620, -3757560, -33973192, --875100, 33811056, 47887276, 29111826, 48238388, -25953950, -7763154, -11632382, -27542552, 18259516, --7733626, -17004850, -1775969, -33431488, -61097520, 15374909, 21509196, -18087182, 12177306, -3808562, --18226768, 19450834, 14328011, -7125351, 20042464, -7369090, -17895518, 9190156, -8886287, 23763518, -2235531, 1773822, 13426068, 4476430, -15141907, -6352257, 7792682, -4988605, 14794015, -20637854, -13316009, -21638046, -5512591, 5394479, -15358803, 9801115, 616328, -23051626, -3736622, 1487132, --6192269, -56908, -4310537, -16911970, 6922414, 5073967, -2695629, 16983912, 26029650, -14187888, --20310364, -1296543, -9691057, 28168544, 28918014, -17043504, -10807211, -3547106, -14343043, 303332, -5078262, 24316494, -26086558, 30828202, -18967112, 4054449, -286689, 3002719, -24087788, -3908957, --21809844, -18073222, -164819, -7254737, -16511465, -6709813, 11710228, -14115947, 10772852, -6780143, -33152852, -15672336, 9739912, 1817308, -8533026, -27012124, -10067403, 20215338, 3454228, -6884833, -26531624, -20007032, -20233590, -2927557, 25322054, -23447300, -3491809, 4361540, 6694244, -26088706, -7548942, 8794482, -9502078, -27270358, 239444, -21219822, 8659191, 4585415, 7814693, -41576896, --17940078, 23408108, 63411436, -29018410, -4235912, 4935455, -11002096, -18170932, -610959, 52993452, -11999065, -5611912, -4932233, -14249091, -3526168, -10955388, 20371030, 894427, -13431436, -14331232, -479426, 9354976, -21470004, 16376710, 4645544, 17871358, 457951, 22781044, 9385040, -16181826, -21297132, 20402706, 50659140, 16041703, 3688303, 5086852, -18860812, 6059125, 16394964, 17063906, -5684926, -1347546, 399432, -2215666, 6163815, 7032472, -1945083, 9128953, -2645163, -1082869, -17333952, 7344931, 2768643, -5389647, 4954245, 13193603, 13761612, 15983721, 5592585, 5794448, --9279814, -183073, -777389, 2837363, 8851391, -484794, -7463043, 8156680, -7808788, 6771016, --583042, 8011725, 967441, -6762963, -2097018, 446677, 1612760, 3942780, -1212255, 2799782, -1945620, -196495, -40537512, 53643068, 7337415, 12146168, 12811351, -12495670, -14384919, 426276, --5592048, 7551090, 17619566, -24947854, 8150238, -5335423, 6385543, 5953899, 4134443, 14069239, -11011222, -10697153, 9893457, 8563628, -8671002, -14944876, 4466766, -5371394, -12380243, 7268159, -5987185, -1149441, -8115341, 118112, -5932961, -2963528, 504659, 3087008, 5592048, -11216844, --1712081, 8773008, -4029753, 7859790, 1466731, 5636071, 11611444, 3329674, -11976516, 1123134, -11078868, -6448357, -640487, 5268851, -19002546, -1281511, -4741107, -17792976, 24368570, -6346888, --1074816, 14359149, 2432562, -11038066, 4249334, -10558103, -2154463, 7921531, -9815611, -3675418, -18008262, -19323058, 2001992, 1576253, 6516539, -8672613, 5764383, -3077881, 5370857, -7465727, -298500, -1924682, 18149994, -8460549, -859530, 4582730, -9229348, -1048509, 12556337, -2824478, -8082592, -5710159, -5252745, 769873, 4847408, -4970888, 9257802, -238908, -2066416, -2197413, --2965675, -3102577, 7895761, -6932614, 7729868, 4061965, -10228465, 2270964, -1060857, -1056562, -5986648, -8683887, -3437048, 1051730, -5683853, 5700496, -5844377, -1050656, 9590662, 1530082, --1817308, 4177930, -4844723, -4045322, -2358474, 4463008, 8000987, -2683281, -2321967, 663036, --6920266, 12566537, -53253300, -108307264, -13989245, 67903432, 52196736, 149959328, 72122704, -35019016, --30605400, -71170296, -124615256, -15794742, -48343616, -15032922, 87898120, 56021404, 59797220, 114428664, --4062502, -25382182, -43229920, -113250768, -62542776, -20146618, -21087216, 3111167, 51484308, 39875012, -42315628, 79861160, 46699180, -29411400, 42543260, -44788456, -104469712, 13327820, -70131448, -97534416, -37977176, -8404177, -18119394, 119859112, 39222180, 31841276, 103282688, -11120744, -20380156, 31424666, --69305200, -86073832, -23197118, -73705936, -65904124, 13931263, 14219026, 29746406, 90103048, 79825192, -48316236, 57248692, 11023034, -45193792, -48700636, -60234232, -82812336, -38665980, -21061446, -28143846, -24955908, 79723720, 52005076, 51399484, 42216308, -29825326, -382252, 8392366, -68357624, -28177670, --17176648, -20016696, 31268436, 16009491, -3986804, 25593174, -6003291, -5350993, 4320200, -18446348, --13955422, 9077413, -11476689, 18545668, 23288386, -8722542, 12600897, 23779086, -13936632, 15570867, -7737921, -46506444, 8170102, -15108621, -50536732, 765578, -28885802, -25812754, 36658620, 39727372, -38316476, 71102648, 22617834, 22623740, 24065238, -31128850, -62147104, -69342248, -88809720, -66136592, --19991462, 11570105, 53782656, 89197880, 98794984, 77186464, 56215752, 11107322, -52376588, -78829832, --96288336, -89441624, -46396384, -2952253, 25212532, 64072860, 59112708, 32298690, 32434520, 12625056, --912144, -186294, -10008348, -19592568, -16251083, -20317880, -24624658, -18060338, -13399761, -3456375, -6895570, 16695612, 20103132, 21766894, 18805514, 13237626, 6739341, -35433, -10909217, -18176302, --16645146, -11653320, -8116415, -6350109, -1699733, 2315524, 7962870, 9302362, 6191732, 5869073, -5098126, 2101313, 2913062, 2610266, -3103651, -4044249, -1980517, -3850438, -3483219, -5171678, --6981470, -3368865, 298500, 693637, 3617436, 5631239, 5721434, 6972343, 5208722, 1904818, --717796, -3526705, -4970888, -4906464, -4493610, -4117263, -2047626, 840740, 2229625, 2108292, -2018635, 1798518, 1785096, 1616518, 572841, 127238, 437550, 316754, 164283, -168577, --993748, -1340567, -2186138, -2949032, -2353105, -1235340, 207232, 1484448, 2149094, 2724620, -2834142, 1893544, 1155883, 581968, -1116692, -1840394, -1715303, -1751810, -1512902, -962610, --784368, -62277, 495532, 667867, 862752, 912681, 585726, 301185, 42950, -235686, --376883, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +4664335, 1187559, -2494302, -1096290, -5590437, -1477469, 4733591, -2462627, -1784559, 1475858, +-703301, -151398, 329102, -1475321, -1174137, 5728950, 2807298, -668941, 312996, -823023, +-1668595, 810675, 2073396, 3163244, -766115, 1225139, 1484985, -5024575, -1511829, 13959, +-965294, 3120294, 319438, -1039382, 2825552, -2102387, 980326, 4348655, -2360622, 296890, +618475, 3306051, -1226213, 4551592, -6383932, -2323577, 2834679, -1253594, -5404143, 409096, +1133871, 1830730, 1903207, -571231, -2304787, 218506, -2087891, -1430761, 674847, 2711198, +2522220, -3613678, 3234110, -3956202, 3587372, 216896, 3150896, -1197759, -2536178, -1127966, +2131915, -391379, -489089, -617402, 2937221, -3111167, 1646046, 773631, 819265, 1000727, +2357937, 750009, -1452773, -1677722, -892816, 1269700, -234613, -1230508, 277025, -1487132, +-290984, -98784, -1486059, -605054, -819265, 205622, 863288, -1025960, -699006, 430034, +-168577, -1469416, 27917, 805843, -529892, -71941, 345208, -134755, 622233, 421444, +88584, -1111323, -325881, 41876, -457414, 30602, -75162, -779537, 486405, -1321239, +-212064, -15295989, 5012227, -5564667, -2221572, -4557497, -4678830, 2648384, -1565516, -3952981, +-2126546, 5358509, 7968775, -4369593, -1630477, -395137, -5750961, -5405753, 397821, -553514, +3502546, 1174674, 2607045, -2310693, -1447941, -2991445, 833761, 5139465, 2228551, 992137, +-3325379, 2508261, 754304, 1531693, -2173254, 182536, 754304, 1147293, -2950106, -2162516, +799401, -4073240, -4160750, 1772748, 3144990, -3552475, -1788854, -1376000, 248571, 3131568, +2526515, 1085553, 470836, 8114267, 3184182, -2576981, 3156801, 2242510, -2263985, 3827353, +-1437203, -974421, -27917, -1685238, 3404299, -1932735, 889058, 2043868, 1640678, -3048890, +1188632, 554051, 607201, -1074816, -1512902, -645319, 4757750, 303869, -1420024, -1035624, +1116692, -4301947, 822486, 2538863, -173946, 1638530, -952409, -1560147, 1028108, 928787, +-408022, 1591285, 819265, -474594, 1131724, 1177895, 1987496, 243203, -2147, -158377, +-610422, -866510, -95563, -170188, -541166, 569620, -199716, 1958505, 11601780, 4604742, +-843961, 493384, 2632815, 1359894, -820339, -5062156, 129386, 4427038, -4610111, -545998, +-8622684, 2219961, 3464428, 198642, -2079301, 6244346, 4380867, -4080756, 1921998, 202937, +-3582003, 5568425, 3055332, -399969, 2229088, 5303748, -1689533, -1138166, 322659, -3221, +93416, 1247151, 6521908, 1285269, 943819, -10635413, -595390, 447213, 1231582, -4832375, +1075352, -3905199, -3005403, -4128537, -2709588, -11811, 1195612, -2537252, 2464238, -6126771, +-3534221, -408559, -117038, 1916629, -2477123, -605590, -2246805, 1285806, 3260954, -2032056, +317291, -1764695, -351650, 5075578, 3967476, -1653026, 3715684, -1836635, -3238942, -4036733, +-339302, -410169, -2735894, 2397666, -468151, 656056, -338766, -927713, 142808, -614180, +-2226941, -178241, -3524558, 353798, -1757179, -1160715, -2968359, 3354906, -1083406, 1117228, +2276870, 878321, -1224066, -315143, -1370095, -137976, 540629, -1347009, 1303523, -151934, +102542, 151934, -525060, 749472, 413927, 206695, 53687, 1876364, 875100, -662499, +-1355599, -1236414, 1111323, 1516660, -54761, 353261, 1461363, 193274, 18290118, -8063801, +1437203, -744103, -3461207, 2844879, 5075041, -3415573, 5461588, -377420, 5830418, 1563905, +2011118, -2617246, 3273302, 1220845, 3353296, -7298223, 3797825, -4345433, 1264331, -3660923, +4460324, -1310502, 4493610, -2756832, 1608465, -1832340, -469225, -274878, -533650, 1722282, +9417253, 346819, 2713346, -2699924, -4471598, 112743, 12348, 113280, 1371705, -3121368, +6152004, -468151, 5145908, 290984, -2329483, -2927020, -7901129, 3773666, 2477659, -3732864, +335544, 3064996, 1594507, -9190693, 5373004, -379568, 3798362, -5549098, -5970005, -2934537, +-5816997, -1126355, 6565932, 1309428, -2617246, 324807, 3681861, -1334661, -3088082, -1637456, +-3454228, 2348810, -5199058, -973884, -4006668, -1573569, -92342, 4338454, 1998770, 413391, +1302449, 5464809, 2834679, 608275, 1949915, -1633161, -690953, 302258, 27380, 816581, +388158, -1021665, 467078, 1885491, -210990, 354335, 653372, -1010391, -1352915, 1158567, +-1604707, 1750199, 998580, 1616518, -35970, -710817, 958315, 1599875, 359704, -759136, +468688, -114890, 4755603, -11307575, 2250563, -3597035, -10333691, -7978439, 4172561, 4654134, +6145562, -3111704, -1634772, 4211753, 1993939, 6317360, 2032056, -760746, 610959, 4013110, +7878581, -2079301, 2268280, -149250, 6376953, 1423245, -430570, -1340567, -4933844, -7499013, +43487, -1125281, 2201171, -477278, 1716913, 1248225, 418759, 420907, 1447404, -2599529, +250719, 3482682, 5504538, -2769180, 624918, -2447595, -3214783, 4515621, -3543885, -8805757, +-3470334, -2301566, 4171487, 288300, 4605816, 4175782, -2276333, 123480, -3658239, -569620, +-1586454, 5363878, -6866579, -264677, 2276870, -7309498, -8178155, 57445, 2492155, 5092758, +-3624953, -8692477, 4475893, -8026757, 9278203, 5185636, 1506997, 3893925, -117575, -3904125, +11802570, -1150514, 5701032, -293668, 8249559, 5611375, 3002719, -919660, -1633698, -2852932, +-1043140, 1171989, 279710, 2206540, -2358474, 1343788, -1261647, -928787, -897111, -1038845, +1104344, -678605, -38118, -1837172, -97711, 996432, 1978369, -2091112, -2467996, 258235, +1069447, -104690, 1289027, -821949, 138513, -1051193, -324270, 584116, 1218697, 1418950, +891743, -1286343, -1801739, -24828132, 5218922, 1346472, -12427488, -15704548, -2454574, -12104828, +9996000, 2925410, -7265474, 546535, -3336653, 1189706, -4934381, 730144, -203474, 146029, +7070053, -2409477, -1546725, -2826089, -2488397, -6501507, -4335770, 6700149, -2647847, 4269735, +-3599720, 1898376, 193274, 3867081, -3762928, 2950643, -3780645, 1774358, -1396401, -2320893, +2473364, -6070400, 2449205, -3046206, -1045825, -4387309, 10903311, 5242545, 9570261, -3953518, +4083440, 3313031, -1801739, 1781875, -4411469, 4861366, 10486163, 8319889, -5647345, -1439888, +2519535, -4052302, -2704219, -7166690, -13508746, -4513474, 7052337, 2604361, -3271691, 1477469, +797253, -3604551, -6373732, -6417218, 4715874, 640487, -9907953, 1164473, 1046898, -386547, +-664646, 3418257, 7326678, -633508, 74088, 1119376, 75162, -1798518, -6523519, 2294050, +2308545, 1467268, 3168075, 1977833, -2745021, 838056, -1698123, 478889, -1423782, -496606, +-1584306, 154082, 455267, -88584, -1124745, -1059246, -273804, 627065, 40802, 2541547, +948114, 2379949, 2532957, 2770254, -3103114, -3117073, -1132261, 2554432, -750009, 1010928, +-872952, 1463510, 1491427, 1029182, -1472637, -758599, -9820443, -4126390, -2596845, 7315403, +-2008434, 1695438, -7666517, -7990787, 336081, 2250026, -4704600, -2712272, -4418448, 8983998, +1935420, -3074123, -6647536, -6548215, -6415608, -1812476, 3000035, 9029095, 2887829, 5085778, +-4127464, 9620727, 5462125, 1741609, 54224, 9898289, -5858873, 913217, 3092377, 6693170, +-10933376, -5565204, 4693326, 1887101, -1555315, 11317776, -5010080, 3189013, 6788196, 2109903, +1098438, 4982699, 1979980, 2474438, 2494839, 1074816, 2882997, -175020, 4271345, -1008244, +10546829, -7709467, 8670465, 6928319, -6088116, 6862821, 1218160, 5834176, 5852430, -12954695, +-392990, -516470, -3951907, 2076617, -3570192, 3597035, -1522566, 8267812, -951335, 1305670, +3336653, 2330020, 3227668, -5259725, -1818919, -5374078, -5039071, -2850248, 7970386, 1210644, +-2604361, 2383170, 2161979, 1036161, -1401233, 852014, -1005559, 3178813, 1151051, 1022202, +-1576790, 994285, -3058017, -256624, 3455838, 1847373, -614180, 1188632, 1195075, -954020, +1431298, 1021129, 3351685, 1900523, -1935420, -719407, -1166621, 1069984, -3064996, 916976, +1617592, 1050120, -492311, -116501, -312996, 12948790, -3466576, -2046015, -3219078, 9214315, +4817343, 957241, 3489124, -6283537, 13787382, 4551592, -1132261, 5191542, 6636798, -11316165, +-800475, 2646237, 1276142, -40265, 9507984, -4617627, -5847598, 13123809, 1939715, -955630, +-1356136, 6848862, 476741, -1018444, -1340567, -3211562, 3374234, -1997697, 4516695, 3197603, +-8337606, -7866233, 928787, 15503758, -240518, 3153043, -9630927, 4712653, 6315213, -3974455, +4665945, 5851893, -9767829, -5937256, -1281511, -12445205, -6663105, -7431367, 2117956, -2552821, +-2824478, -1373316, 8677445, -11997454, 5228586, 2600066, -3960497, 7315940, -4758287, 699543, +-10145250, -214212, 6014565, 5469641, 11386495, -13548474, -3445638, -15040439, -3308736, -306553, +-3661460, 1685775, -820339, 13682155, 10536092, 6012954, -6898791, 349503, 2533494, 6669548, +8116952, -187368, -58519, -1167694, 77846, 4668630, -325344, -402116, -288837, 85899, +132607, 570157, 1791001, -1923609, -712428, 1956358, 217970, 1808718, -173409, 206158, +-1685238, 2483028, 1413581, 39728, 2211371, -1171452, -267362, 2183454, 462246, -360777, +-2818572, -168577, 482647, 406948, -1088774, 2801393, 4539781, -833761, -261456, -2084133, +1409823, 8769249, -10027675, 240518, -6179921, 16931298, -7282117, -4216584, 14661945, 11037529, +1971927, -20656108, -5105643, 9382893, 678068, -1069447, -3018825, -1701344, -1693828, 1357747, +3096672, 2827162, 2674691, 18149458, -3893925, -2723546, -75162, 2302103, -5523865, 3126199, +1845225, -758062, -6070937, -3836480, 6493454, 6972343, 13255343, 3335042, -5582921, 3295851, +-261993, 3342022, 158377, 7329362, -6260452, -9280351, -9577777, 6136972, -2796024, 1223529, +2379949, -3466039, -721018, 15765751, 5317170, -13436268, 9411347, 2962991, 15946140, -8414378, +-7956964, 4568772, 8540006, 5894843, 3230352, -1546188, 407485, 4057670, -5323612, -1569274, +73551, 6743099, -5036386, 13615583, -594316, -253940, -7175280, -8041253, 15543487, 4586488, +-12942347, -3068754, 10681584, 7416335, 1387274, 2646237, -6641093, 1984812, 1636383, 2042794, +1090385, 2275259, -3110630, -3712462, 383863, -170188, -3117073, -1057636, 2698850, 2695092, +-4133369, 1009854, -104690, 1702955, 2313914, -725850, -806380, -1045825, 1530082, 4759898, +-3580929, 2600066, -322659, 67109, -2138894, -526134, -1616518, -1077500, 2209224, -845572, +-1436667, -3172370, -203474, -1816234, -12150999, -10302553, -3977677, 3834869, 3935264, 18884434, +18333604, -2076080, 1525250, 861141, 186831, -155693, -3732864, -12221329, -9366250, -4810900, +4392141, -3372086, -10630581, -2974802, 2075006, -742493, -16322486, -4762582, 3670050, -1625645, +1595580, 1178432, 4964982, 7254200, 1211718, -5175436, 5358509, 5583458, 3937411, -170188, +7217693, -14307610, 4855461, -12671764, 15897285, -11202348, 4376572, -11889006, -1934346, -13288629, +-7002944, -8264591, -8948027, 6213207, -7863012, -1481764, 2828236, -55298, -4169876, -2991982, +-1337346, -12998719, 475131, 897648, 6517613, -20317880, 528281, -485868, 9546102, 11460046, +-7704635, -4720169, 480499, 8813273, -16787954, 10829223, -7522099, -4968204, 871878, -16345035, +-798864, -1288490, -2515777, -2893734, -1999844, 16464220, 6747931, 3409667, -3888556, -3658775, +-4071092, 545998, 4078072, -6550362, -134755, -1116155, -1726577, 907312, 4898947, -1781338, +-3067681, 3099356, 1928977, -39192, 3454228, 1870458, 2901787, -1713155, -2165201, 4158602, +-2942590, 1088774, -3871376, -724776, 220117, -771484, -1440962, -3434900, -3760781, -4012036, +1021665, -196495, -835371, -2886218, -2707440, -1101122, -1406602, 933082, 4152697, -1070521, +3189550, -9531606, -25071334, -9928354, -4660577, 4534412, 6945499, -8129836, -2996277, -10262287, +-9047885, 4982699, -7934952, 8450885, 3511673, 6110128, -871342, -8043400, 14420353, 5820218, +8126078, -10086731, 4449586, 2003065, -14788646, 9346386, 5623186, 681289, -10040560, -3771518, +5100274, 5441187, -151398, 1963337, 7312719, -6945499, -5146445, 8642548, -16887812, -16604880, +-21915070, -4811437, 7137699, -19178640, -16043850, -9649718, 381715, 7067906, 2270964, 2080912, +386547, -5463199, -7652558, -18105434, 9666361, 2836826, 22137872, -5163088, 620623, -13558675, +-16322486, 2200097, 10600516, 849330, -10291279, 6934225, 2789045, 15185931, 1503775, 2017561, +-7269769, -1261647, 6405407, -14654428, -27590870, -7573101, -6881612, 1613834, 7267622, -13095892, +-6684580, 4440460, -4612795, -944356, 4323422, -2426657, -2215666, 5813238, 1402844, -380641, +2802466, 4546760, 4929549, 1074816, -3307125, -8645232, -805306, -5222680, 1450625, 1107028, +1119376, 3774740, -3149822, 3444027, 4519380, 3164317, 2554969, 2675765, -6512781, -5819681, +-2263985, -4992900, 564251, 1605781, 1717450, 6241125, -1442572, 4020090, 2371359, -2421825, +-1340567, -3590593, -5059472, -1227287, -6664716, -2014340, -1513439, -23601920, -18136574, -8348343, +12462921, -1093069, 21340082, 4207458, -1839320, -11985106, 4271882, 21969294, -22999550, -20730734, +-6832756, -3460670, -14418205, 13654238, 4018479, 7387881, 8864276, -14477798, -1707250, 5776731, +-9094056, 17026860, 263604, 3808562, -4951024, 4180614, -11256036, -6459094, -3860639, 6381248, +3058017, 10333691, -16979616, 1487132, -118648, -12698071, 13836237, -8302709, -20205136, 3956739, +7296613, 1430224, -6027450, -1510755, -8409009, 1345935, 6899328, 2884071, -13808320, 5366562, +-3139084, -15398531, -9062381, -18909130, 430034, -2988760, -491774, 2393371, 11579769, 14324790, +11971684, -6175626, -10424422, 3391951, -2646774, -1816771, -8056822, 14902463, 12372727, -2717641, +22986128, -14720464, 7668664, 14427332, 15607374, 356482, 9924596, -6486475, -2526515, -12930536, +-5437966, 7624641, -2612951, -10089415, 6255620, -5812165, 6572911, -3003256, -6832219, 3498788, +-1348083, -3987877, -2973191, 2546916, -3317862, 2211371, 4642860, -4944581, 6294275, -847719, +-3402688, 2263448, 770947, 326954, -2823941, 3592203, -5565741, 1826972, 2121714, 155693, +-3707631, -470836, -2190970, 2760590, 5219996, 11176579, 5734855, 8910983, -427886, -163209, +4653597, -5819144, 1578937, -7868917, -3128347, 1632088, -77846, 8629126, -20440824, 2600066, +248571, -12920872, 1893007, -28755342, -24869472, -5946382, -209380, 1081795, -617402, -10217727, +-348966, -2915746, 9210020, 1803886, -570157, 1735704, -21721260, 7521562, 4065187, 12070469, +5016522, 5232881, 14181445, 7065758, 2063195, 35459788, 7596187, 13647259, 18824842, 886374, +13280576, 3331284, -7354595, 8621073, 623844, 4153770, -7202660, 544387, -4668093, 3012920, +-4653060, 9978283, 1216013, -6199249, -7739531, 1073205, -21021718, 12233677, 8265665, -1066763, +-1889786, 4811437, -5576478, -4634807, -6885907, -8326868, 6970732, -6641630, 11508365, 13378286, +13122199, 13944685, -3218004, -21117818, 355409, 8921721, 21322902, -4937065, -765578, 10098542, +14898705, 21927956, -2822331, 9663676, -6467147, -3754338, -17592722, -13731010, -5982353, -6228240, +-5009006, 3684008, 786516, -7547868, 8579734, 5405753, 6747931, 12062953, 4849555, 4526359, +-1412507, 22549, -1757715, -3442416, 129386, 2183991, 38118, 6371047, 5112085, 3119757, +-334471, -5207648, 332323, -3736622, -4122095, 2666101, 3256659, 979253, -6470905, -1452236, +-9424232, -2290291, 3118146, 4695473, -2997887, 3906273, -5373004, -6272800, -3148211, -3776887, +3529390, 1831804, -5498095, -3788698, 4334696, 16988206, 22158810, -17118666, -17897666, -23526220, +20537460, -2530273, -8762270, 6920266, 6688338, 19213536, 15964393, 755377, 17536352, 25056840, +6925635, -13197361, 11870216, -12233677, -6960532, -2749316, -8625368, -10310069, 4948876, -5333276, +-5237176, -12380243, 27333172, 3193845, -14928769, -256087, -2232846, 12104828, 12822088, 4907000, +-8830990, 12931073, -3810710, 7890392, -25463788, 1084479, 10260677, -11063836, 3400004, -12001749, +-9817758, 25817586, 10597295, 7624641, -2043331, -23314694, -5830955, 6449431, 4751845, 3503620, +-5695127, 18134962, -13133473, 9974525, -6289443, 6520297, 7216619, 14320495, 19439022, -23066658, +-821413, 11509975, 5478768, 16271484, 15773804, -23003308, -164283, -6534793, -12030740, -973884, +-12572443, 4844723, 9221832, -4836670, 16893716, -4092567, -10469520, -12660490, 10424959, 12000139, +11942157, -3592203, 1880122, -952409, -17923972, -17355426, -16294569, 9685151, 4747013, 2918430, +7730941, -791348, -4727149, 11810623, 1398012, -345208, 7130720, 11428371, 6812355, 610422, +1010928, -3743601, 6835441, 3264712, 14686104, -1693828, 1529008, 10227391, 8244727, 2636573, +-1780264, 6426345, -508954, -1699196, 11523397, -9782862, 205085, 6984154, 274341, -2509872, +-3869766, -2132451, -335544, 7553774, 1170379, 233539, 8367670, 5995238, -5920613, 9008694, +-742493, 17474612, 34820372, 1487669, -16656957, 4702989, -11147051, 7209640, -9693204, -10420664, +31601296, -23994908, 39680664, 24334210, -5879810, 8026220, 19164680, 2810519, -29950954, 11790759, +-24259050, 5810554, 2144799, -11931419, 498753, -1585380, 17303350, -8614094, -882616, -614180, +-5284421, 36644124, -2116345, -5440650, 4700842, 12383464, -12484396, -26266946, 20763482, -3259880, +-1603633, 23752780, -13944148, -3784403, -16599512, 4507568, -11606075, 13451301, 12321724, 25283398, +-7241852, 7124814, 16824460, -23817204, 2913599, -15144592, -24067386, -30656402, -16190416, -33152316, +-37402184, -5141076, 2401961, -17501992, -18950470, 11818676, -1347009, -10524280, -20430086, 14823543, +-10924249, 3932580, 18493592, -34799972, -10095321, -6311455, 15467788, 41845328, -19776176, 1320703, +-12563316, -18415210, 8956617, -22057342, 17832704, 31222802, -8901857, -14421963, -15436112, -3774740, +-3714073, 415001, 10065256, 7541963, -8226473, 8360154, -1065152, 6603512, 340913, -7427072, +-2184528, 9240622, -15162845, 7230578, -7963406, 2211908, -6491843, -2355253, -9146670, 2202245, +-8793946, -13475997, -6587406, 3349538, -10140955, 107911, 3004867, 15051176, -8663486, -4902169, +4860829, 6280853, -10819023, -6586869, 3019899, -2792266, -5790153, 10549513, 1780801, -8006356, +7228967, 2200097, -12628814, 2205466, -10137733, 11254425, -5009543, -16146393, -23897198, -18126372, +20149302, -16412681, 8167954, 19173270, 8227010, 12325482, -22778360, 32864016, 20702816, 17939004, +-13154948, 23561116, -2527588, 15591805, 10277857, 3491272, 8537858, 11452530, 7012608, -3806415, +-5796595, -5209259, 2428804, -15786152, -18592914, 10523207, 4694936, 6119792, -15280420, 4208531, +4733591, 11516955, 17190606, 25789668, -14487998, 3924526, 36719288, 7930120, 3999152, 3567507, +-7486128, 2713883, 36567888, 10611254, 23712514, 6760816, -25222732, -10516227, -18346490, 53014392, +21607980, -20464982, -12752832, -18252000, 3168075, -11972221, -28715078, 6627672, -21725556, 32463510, +-2193655, -26851598, 35451732, 28683402, 4182225, -7786776, 4930623, -16341814, 21878564, 38927436, +-10314364, 18465138, 43622372, -6845641, -6976638, -4952634, 26605712, -1921461, -14515379, -13733158, +-13853954, -231928, -1603633, -12170327, 1091995, -5101885, 13479755, 3331821, -12712566, -8087961, +-14494441, -1584306, 2127620, -2375117, -10108206, -11415486, -7984881, 7165079, 12189117, 1890859, +-12406013, -1817845, 16103980, 132070, 14774687, 7697655, -8043937, -724776, -12566537, 12508019, +5750961, -16385300, -30698278, 2848637, -1822677, -9343701, 10319196, -65498, -5203890, -4379793, +3352759, 856309, -1029182, 9115531, -24970940, 10110890, -3297998, 25043954, -51946556, -35604204, +20760798, 9997073, 7610145, 17634062, -17621714, -23039816, -12603582, -18955302, 10940355, -20349556, +6131066, 13720273, 22494354, 863288, 18879602, 11020886, 3240553, -5854041, -19415936, -13703093, +11577084, -23834384, 12357158, 2926483, 20566450, 15669651, -7459285, -29699698, -19206020, -1699733, +-1316944, -7782481, 20575040, -35932232, -2618320, 1352378, -37553584, -638340, -4469987, -2922725, +4216584, 22176526, -21345988, -59222768, 22318798, 24248312, 14587856, 46336256, -37901476, -4814659, +25881472, 19731080, -23719494, -11038603, -6410239, 36502928, 7356742, 34842384, -50130320, 7399692, +-59836412, -35893040, -34610456, 41309532, 13258027, -26564372, 24407226, 2877091, -23159538, 23787140, +-34737160, -36617816, 5665062, -38035156, 11483132, -65000036, 10116259, 20549808, -27515172, 30481920, +-13626857, -7323456, 20551956, -7013145, -5412733, -14496588, -877784, 4803921, 11416560, -1335735, +10621991, 20511690, -15256261, -1692217, -12095165, 7294465, -7841000, -2143189, 4649302, 2508798, +2920578, -2723546, 21300354, -7034083, 1877438, 9013526, -18485540, -16443282, -17946520, -8472360, +-30339112, -14048838, -10992969, 26229366, 5360119, 23334020, 10228465, 4667556, 10781979, 7347616, +1107028, 8784819, 2032056, 18249852, 44950052, 16610786, -16135655, -10553272, 6184216, -11461120, +-13423383, -1633698, 20910048, -3674882, 3894999, -22293028, -4616016, 30690226, -22439594, 16955458, +40130028, 20023674, -1712081, -7710003, -13203803, -25720948, -18878528, 22065932, -12602508, 20700668, +14961519, 7066832, 983548, 8045011, -6394670, -32706176, -11316702, 23296976, 18521510, 19352048, +-20642150, 35582732, -9162239, 13797582, -26331908, 24070070, 41555420, -8421894, -14775761, -1597191, +1544578, -9300752, 9098351, 18101676, -34057480, 22304838, 21725018, -5380521, 25182466, 13268228, +10882373, -16025597, 3322694, 22436372, -47496432, -42395084, -17601850, 11143293, -21848498, -64404644, +26989574, 17580912, -8313983, -10990284, 521839, -3849901, -22003654, -59170692, -3541201, 41887744, +10222022, -7543037, -4983773, 8986682, 34403760, 27292906, -40303972, -16724603, 26954678, -5779952, +-10780368, -46201500, -2652679, 25220048, 8444443, -7184944, 15636902, -5883032, 1688996, -17457432, +-2811593, 10485089, 15910169, -9102109, -3221762, 3180423, 9220758, -5768141, 5694590, 669478, +-11227045, 6689412, 19344532, 3236795, 5810554, 3524021, 8762807, -9168681, -15887621, 1473174, +17292076, -14201309, 6245956, -4848481, 1603097, -13773960, -26331908, -14427869, 9891847, 32053878, +-3217468, 15108621, -21206402, -9409736, -14315126, 8836895, 6314676, 10087268, -7185481, -11048266, +-705448, 2275259, 2543158, -4990752, -1094143, 21876416, 28997472, 645856, -32695976, 43296492, +-12164421, -30227442, 27084064, -4350802, -16445430, 20932060, 5602248, -4383014, 17657684, -24212342, +22961968, -8206609, 770947, -7041599, -6015102, -33754148, 13364864, -12885976, 5316633, -13532905, +-1116692, -10089415, 9664750, -5911486, 36477696, 6444599, 23863912, -9286793, 5967320, 15083925, +-6406481, 10424422, -2068027, 18219252, -915902, -6125697, 28806882, -25742960, 14361834, 19684908, +-11556146, 22280142, -13641890, -558883, 11463805, -8722542, 26192858, 23450522, 4876399, 39027296, +-24055038, -55116240, -9276592, -34080564, -22546968, 80483392, -2050847, 24689620, -3757560, -33973192, +-875100, 33811056, 47887276, 29111826, 48238388, -25953950, -7763154, -11632382, -27542552, 18259516, +-7733626, -17004850, -1775969, -33431488, -61097520, 15374909, 21509196, -18087182, 12177306, -3808562, +-18226768, 19450834, 14328011, -7125351, 20042464, -7369090, -17895518, 9190156, -8886287, 23763518, +2235531, 1773822, 13426068, 4476430, -15141907, -6352257, 7792682, -4988605, 14794015, -20637854, +13316009, -21638046, -5512591, 5394479, -15358803, 9801115, 616328, -23051626, -3736622, 1487132, +-6192269, -56908, -4310537, -16911970, 6922414, 5073967, -2695629, 16983912, 26029650, -14187888, +-20310364, -1296543, -9691057, 28168544, 28918014, -17043504, -10807211, -3547106, -14343043, 303332, +5078262, 24316494, -26086558, 30828202, -18967112, 4054449, -286689, 3002719, -24087788, -3908957, +-21809844, -18073222, -164819, -7254737, -16511465, -6709813, 11710228, -14115947, 10772852, -6780143, +33152852, -15672336, 9739912, 1817308, -8533026, -27012124, -10067403, 20215338, 3454228, -6884833, +26531624, -20007032, -20233590, -2927557, 25322054, -23447300, -3491809, 4361540, 6694244, -26088706, +7548942, 8794482, -9502078, -27270358, 239444, -21219822, 8659191, 4585415, 7814693, -41576896, +-17940078, 23408108, 63411436, -29018410, -4235912, 4935455, -11002096, -18170932, -610959, 52993452, +11999065, -5611912, -4932233, -14249091, -3526168, -10955388, 20371030, 894427, -13431436, -14331232, +479426, 9354976, -21470004, 16376710, 4645544, 17871358, 457951, 22781044, 9385040, -16181826, +21297132, 20402706, 50659140, 16041703, 3688303, 5086852, -18860812, 6059125, 16394964, 17063906, +5684926, -1347546, 399432, -2215666, 6163815, 7032472, -1945083, 9128953, -2645163, -1082869, +17333952, 7344931, 2768643, -5389647, 4954245, 13193603, 13761612, 15983721, 5592585, 5794448, +-9279814, -183073, -777389, 2837363, 8851391, -484794, -7463043, 8156680, -7808788, 6771016, +-583042, 8011725, 967441, -6762963, -2097018, 446677, 1612760, 3942780, -1212255, 2799782, +1945620, -196495, -40537512, 53643068, 7337415, 12146168, 12811351, -12495670, -14384919, 426276, +-5592048, 7551090, 17619566, -24947854, 8150238, -5335423, 6385543, 5953899, 4134443, 14069239, +11011222, -10697153, 9893457, 8563628, -8671002, -14944876, 4466766, -5371394, -12380243, 7268159, +5987185, -1149441, -8115341, 118112, -5932961, -2963528, 504659, 3087008, 5592048, -11216844, +-1712081, 8773008, -4029753, 7859790, 1466731, 5636071, 11611444, 3329674, -11976516, 1123134, +11078868, -6448357, -640487, 5268851, -19002546, -1281511, -4741107, -17792976, 24368570, -6346888, +-1074816, 14359149, 2432562, -11038066, 4249334, -10558103, -2154463, 7921531, -9815611, -3675418, +18008262, -19323058, 2001992, 1576253, 6516539, -8672613, 5764383, -3077881, 5370857, -7465727, +298500, -1924682, 18149994, -8460549, -859530, 4582730, -9229348, -1048509, 12556337, -2824478, +8082592, -5710159, -5252745, 769873, 4847408, -4970888, 9257802, -238908, -2066416, -2197413, +-2965675, -3102577, 7895761, -6932614, 7729868, 4061965, -10228465, 2270964, -1060857, -1056562, +5986648, -8683887, -3437048, 1051730, -5683853, 5700496, -5844377, -1050656, 9590662, 1530082, +-1817308, 4177930, -4844723, -4045322, -2358474, 4463008, 8000987, -2683281, -2321967, 663036, +-6920266, 12566537, -53253300, -108307264, -13989245, 67903432, 52196736, 149959328, 72122704, -35019016, +-30605400, -71170296, -124615256, -15794742, -48343616, -15032922, 87898120, 56021404, 59797220, 114428664, +-4062502, -25382182, -43229920, -113250768, -62542776, -20146618, -21087216, 3111167, 51484308, 39875012, +42315628, 79861160, 46699180, -29411400, 42543260, -44788456, -104469712, 13327820, -70131448, -97534416, +37977176, -8404177, -18119394, 119859112, 39222180, 31841276, 103282688, -11120744, -20380156, 31424666, +-69305200, -86073832, -23197118, -73705936, -65904124, 13931263, 14219026, 29746406, 90103048, 79825192, +48316236, 57248692, 11023034, -45193792, -48700636, -60234232, -82812336, -38665980, -21061446, -28143846, +24955908, 79723720, 52005076, 51399484, 42216308, -29825326, -382252, 8392366, -68357624, -28177670, +-17176648, -20016696, 31268436, 16009491, -3986804, 25593174, -6003291, -5350993, 4320200, -18446348, +-13955422, 9077413, -11476689, 18545668, 23288386, -8722542, 12600897, 23779086, -13936632, 15570867, +7737921, -46506444, 8170102, -15108621, -50536732, 765578, -28885802, -25812754, 36658620, 39727372, +38316476, 71102648, 22617834, 22623740, 24065238, -31128850, -62147104, -69342248, -88809720, -66136592, +-19991462, 11570105, 53782656, 89197880, 98794984, 77186464, 56215752, 11107322, -52376588, -78829832, +-96288336, -89441624, -46396384, -2952253, 25212532, 64072860, 59112708, 32298690, 32434520, 12625056, +-912144, -186294, -10008348, -19592568, -16251083, -20317880, -24624658, -18060338, -13399761, -3456375, +6895570, 16695612, 20103132, 21766894, 18805514, 13237626, 6739341, -35433, -10909217, -18176302, +-16645146, -11653320, -8116415, -6350109, -1699733, 2315524, 7962870, 9302362, 6191732, 5869073, +5098126, 2101313, 2913062, 2610266, -3103651, -4044249, -1980517, -3850438, -3483219, -5171678, +-6981470, -3368865, 298500, 693637, 3617436, 5631239, 5721434, 6972343, 5208722, 1904818, +-717796, -3526705, -4970888, -4906464, -4493610, -4117263, -2047626, 840740, 2229625, 2108292, +2018635, 1798518, 1785096, 1616518, 572841, 127238, 437550, 316754, 164283, -168577, +-993748, -1340567, -2186138, -2949032, -2353105, -1235340, 207232, 1484448, 2149094, 2724620, +2834142, 1893544, 1155883, 581968, -1116692, -1840394, -1715303, -1751810, -1512902, -962610, +-784368, -62277, 495532, 667867, 862752, 912681, 585726, 301185, 42950, -235686, +-376883, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -1049583, -2694555, 4660577, -3473555, -3004867, -4648765, 4219806, 2105071, 372052, 6239514, -619012, --73551, -1902671, -1538672, 1357747, -1663226, -3244848, 1832877, 532039, 5211943, 7121056, --1848447, -4182761, -5153961, -320512, -2945274, -2838437, -1946157, -391916, -4104915, 3961571, --1467268, -1548336, -2713883, -1999844, 762894, 4450660, -459025, -1278827, 1347546, -4363687, -3281355, -2720325, -9791452, 4862977, 3233037, 5401458, 5602248, 1070521, 2952253, -2918430, -834834, 4247186, 335007, -46171, -1017370, -558346, 2280628, -2063732, -1488743, 111669, -2168422, -1791001, -2232309, -3270618, 4197257, 1670205, 521839, -1015760, -4190814, -139586, -3140158, 1953136, -593242, -788663, 3145527, -375810, -225486, -1362578, -1288490, -1911797, --2265595, 147640, 483721, 1085016, -2331630, -919123, 1304060, -1612223, 1407139, 385473, -633508, -598611, -33286, 311385, 688805, 178778, -266825, 435939, -292595, -791348, --254477, -1314797, 882616, 458488, -372588, 25770, -592706, 795643, 817118, 269509, -85899, 313533, 293132, -814433, 34897, -153008, -195421, -314069, -106300, 469225, -142808, -14672682, 7678865, -707596, 234076, 2680597, 3770981, -5457293, -679679, -967978, -3139084, 1202591, -3332895, 10461467, -1103807, -633508, 4664335, 3830037, 1263794, 2661806, -8543764, -4207458, 284542, -2138357, 870805, -2611877, 230318, 279710, 976568, -4721243, -425202, -1123671, -1762547, -190052, 2994666, -1627256, 2785823, 4041027, -6929930, 949725, --2805688, -755377, -4258997, 2147484, -2519535, -423054, -1414118, -4334696, 1681480, -2904472, -2003065, 1102733, -2130304, -3152506, 121870, 2951180, 2232309, 5353140, 2490007, -2297271, --6537477, -428960, 1178432, 8282845, -2543158, -1245004, -69256, -1601486, -4289062, -2046015, --3991635, -530428, 3352759, -743029, 3987340, 2564096, 2071785, 2888903, 542240, -5163625, --1185948, -3319473, -2093260, -5735392, -171262, -1627793, 798327, 1567663, 704375, -846109, --1146219, 206158, 1541893, -1286343, -332323, 45097, -443992, -111669, -506269, 618475, --1951526, -669478, -442382, 67646, -168041, -358093, 30065, -2901251, 10624138, 5491653, --1836635, -4421669, 6037651, -7270843, -1297080, 3882651, -3061775, -2238752, -3189013, 6978248, --2599529, 2083059, 489089, 2056216, 9569724, -9826348, 2786897, 4762045, -3346853, -9103183, --4799089, -722628, 455267, -1384053, -1735704, 3661997, 5372467, -559956, -3994320, 185220, --5032091, 1358820, -3200825, 1630477, 5745593, 2038499, -5992553, -263067, 250719, 8659191, -1531156, 4281009, -1369558, 1839857, 1428614, -10703595, 64425, 4916664, 2220498, 5510980, --5077725, -3159485, -5055714, 1240709, 3073586, -1115618, 979789, 171799, -2586644, 841277, --1967632, 1585380, 1495186, -466004, 2496450, 431644, -482647, 1044214, 6206765, 1056562, -3194382, 4002910, 2173790, -3758, -192200, -6015639, -106300, 6198712, 2132988, 2692408, --213138, -538482, 3869766, -3063386, 236760, -374199, 1923072, 967978, -70867, -2673080, -337155, -1402307, -468688, 333397, -912144, -710280, 537408, -179315, 1955821, 753230, -1781338, 792958, 487479, 907849, -835371, -1119913, 39728, 13959, 2250026, 1324997, -265751, 703301, 2136209, -476741, 144955, 585189, 897648, -23622, 22066468, -5772436, --2124398, -3416647, 4468914, 2960306, 7472170, 2927020, -1167694, 3546032, -216359, 3972845, -1505386, 5545877, 61203, 4643397, 6068789, -6859600, 1161789, 1690607, 1076963, 1003949, -1461900, -4107063, -66035, -4719632, -727997, -236760, -7937100, -5425081, 1918777, -103616, --331249, 3067681, 3022583, -1674500, -6848326, 1966558, 6073084, 3962644, 5661304, -1611687, -3036542, 5596880, -9494562, 2922188, 4102231, -4740570, 5792301, -4143033, -905164, 502511, -1102196, -3219078, 2714956, -905164, -1112933, -3347390, -2718178, 3196530, 3243237, 1404991, -3192771, 4958003, 2716567, 6922951, -1517197, -7962870, 7585986, 1165010, 3702799, 1503775, --1340030, 1909650, 1415729, 249645, 5197448, -1684164, 5128728, -7495255, -1739462, 876173, -2265059, 419296, -4085051, -1955284, 642098, 146566, -459562, 162672, 1536525, -2076080, --1162862, -1210107, -1474248, 759136, -464393, -638340, -1204738, -947040, 2224793, -628139, --767189, -120796, -813896, -744103, 1120987, -544924, 1199907, -351114, 79457, 857920, --290984, 20938, 9922448, -11135776, 7601555, 1697586, 7781944, 1891396, -4197794, 1532230, -6024766, -6939057, -1371705, 922344, -7831873, -1459215, -5990406, -3628711, -4330401, -4773320, -2199023, -7485055, -4592931, -5941551, -1418413, 5957120, 2234457, -7171522, -2710124, -7506529, --1756642, 1771137, 11062225, -8698383, 3738769, -2133525, -3100967, -6456410, 434329, 1226750, -7138236, 3791383, 1010391, -5845988, -10205379, -46708, 3157338, 8221105, 2958159, 2707977, --5873368, 2292439, 5215164, 497142, 920197, -3107946, -3055332, -971200, 3089692, 633508, --1932735, 165356, -6468758, -841277, -5430450, 3608846, -1036161, 3607773, -5316633, -4510790, --7369090, -767725, -4691715, -1975148, 2054605, -7180112, -3008625, 941672, 4147865, -8646306, -5240397, -4016331, -4280472, -4548907, -3746285, 2728378, -2471754, 1317481, 1649804, -2222109, -474057, 1918777, 1555315, 191663, -1934346, -213675, -855235, -2251100, -269509, 1832340, -1175747, -1066226, 1735704, -1265942, -886911, -163746, 690416, -1655173, 271657, -120259, -1338419, 1024887, 2110977, -1486059, 618475, -265751, -517544, 701153, -1661616, -548145, -1082869, 586263, -692564, -27327266, 4422743, 3134789, -7876433, -1744294, -16106, 285615, --1493575, -2612414, -2001992, -8115878, 6274411, -3927211, 883690, -6760279, -2385318, 9797894, -8893804, -5621576, -3374771, 287763, -134755, -4614943, -5363878, -3816615, 663572, 420907, -186831, -555661, 2307471, -6672769, 2108292, 226560, -11745662, -1417339, -3496640, 5377299, -7888781, 1222992, -1358283, 369367, -6871411, -8647380, 4659503, 8537858, 9545028, -2577517, -1764158, 5541045, 5758478, -2980171, 5315022, 8598525, -330712, 7235410, 6176700, -7240241, -2397666, 401579, 7803419, -4781909, -5044439, 4459250, 5924371, -1831804, 561567, -8534637, -6028524, -4784594, 6362457, -10610717, 1187022, 2493766, 5091147, 321049, -4393752, -9058623, --5499706, 7569880, -7464653, -381178, 892279, 4069482, -2228014, -1634235, 3241090, -6069326, --5214627, 2124398, 1483911, -473520, 4365298, -2037425, 1072668, 1079111, 1204202, 1597728, -401579, -1721208, 1098975, 2189360, -874563, 270046, -400506, -1163936, 960462, -2836826, --343061, -3056943, -523986, -613643, -930934, -1592359, 679679, -941135, 13422, -2391223, -992674, -474594, 871342, 902480, 414464, 342524, -10536092, 3815542, -9303973, 11908871, -11454141, 410169, -15377594, 6453189, 934155, -2817499, 10710575, 107911, -9140227, -915902, -11638288, -14463302, 517007, -3571265, -11407433, -3125126, 265751, -2193118, -5814849, 3445101, --4807142, 4019553, -4086662, -7702487, 4197257, -515396, 6005975, -11500312, 4776004, 9167608, --3604015, 814433, 9205726, 13447006, -3503620, -2665564, -11221139, 726923, -9248138, -691490, --6421513, 389768, 960999, 5474473, 2644626, 5009543, -3512210, 978179, 3114925, -516470, -12402255, -8127152, -3996467, 16318728, 16371878, -3149822, -978179, -10169946, -5184026, 593242, --2790655, -6706055, 9907953, 3111704, -2517388, 14537927, 2854006, -6866042, -141734, -13207561, --6612639, -7454990, -6404870, -1688996, -10321343, -7408819, 4321811, 4027606, -714038, 2408403, --3029563, 3550864, -2263985, -3315715, 634045, -4807142, -2185602, 6353867, 548682, 3206730, --1631014, 722628, 526670, 1553704, 1406065, -192737, -79994, -3023657, 9127, 745714, -546535, -791885, -836445, 2181307, 668404, -363998, 118112, -449361, 113817, 1248762, -774705, -333934, -1130650, 408559, -736050, 13082470, -3531000, -188979, 9000104, -2201171, -5306969, -2971581, -11501922, -784905, -17717, -2399276, -6825240, -7625715, 3920768, -6050535, -10590852, -3308736, -7728257, 6524592, 13302051, -3358665, 3712462, -3631395, 7677791, 120796, --16217797, 5718212, 8977019, 846645, -2716030, -9470940, 7880191, 5232881, 5069135, 982474, -3190087, 10516764, -7477538, 1264868, 2054068, -5937793, -11400991, 10790568, 6020471, 20129974, --1042066, 8847633, -2980171, -6402186, 1065152, -1052267, -299037, -1866700, -6589554, 14434848, -324270, 1069984, 2041183, -2085207, 11916387, 1451699, 9975598, 4105452, 1669669, 10611790, --5047661, -12033961, -2374580, 2145873, 1536525, -5017059, 5837935, -3611531, -16759499, 1447941, -3316789, -9320616, 4300336, -1029718, 1796370, -47245, -3813931, -4275103, -29528, 1514513, -5099737, -533650, 1422171, -2046015, -1476395, 2237141, 1504849, -364535, 1551557, -1779727, --205622, 41876, -2306934, -3383361, 2051384, -3758633, -964220, -1683627, -3229816, -972810, --440234, -1273995, 1391569, -629213, -1365800, -481573, 6146635, 2333778, 2339147, -1325534, -870268, -2010045, -2513630, -905701, -873489, 986232, -1666447, 2894808, -3871376, -1302986, -818728, 10547903, -17708688, 2812130, 7810398, 11670500, -12429098, -1858647, 8282845, 5753109, -7055021, 1182727, 14987288, 2717104, 6162205, -1950989, 802622, 6143951, 3321084, 7104950, -478352, -10043781, -14637785, 7640210, 3641059, -2842732, 1617055, 4265977, -13704167, 55298, --8683887, 3947075, -564251, 8849780, -2957085, 3914863, -2159295, 2240899, 1120987, -447750, -4922570, 6636262, 2301029, 3815005, -10764799, 4345433, -1982127, -18661632, -12457553, 3099893, --13683229, -1001801, 11116986, -8254927, 22187264, 7993471, -4597763, 12033425, 457951, -4027606, --9108015, -8977555, -12490839, -1989644, 7124277, -8921721, -1214402, 7969312, 3553012, 4473209, -16219944, 1953673, 10562935, 18790, 1977833, -17597554, 4736812, 1258425, -16082505, -15171435, -8595840, -5824513, 890132, 4529043, -2729452, -4169340, 794569, -973347, -1222455, 862752, --2986076, 2509872, -2185602, 514859, -5173288, 2680597, 710817, 1057099, -410169, 6164352, --5178657, 380105, -1552631, -1308891, 1114544, 1219234, 1593970, 2940442, 4850092, 3035468, --3360275, 727997, -555125, 4500052, -1650878, 2886218, -4815195, -3592203, -2842732, -2309082, --467615, -302258, 2153926, 2658048, -9218610, -298500, 5756867, -102005, 4033511, -9443022, -7299834, -599148, 2107755, 6801081, -12738873, -8763881, 2285996, -193274, 6954089, 14372571, --1359894, 3568581, 15435576, -5762773, -10500658, -622770, 11302743, -2474975, -13066901, 1025960, -4795331, -2585034, -4102768, -980863, 16743930, -3214246, 14410689, 10879689, 13146895, 703838, -1057099, 7669738, 2564632, -2692945, 2696703, -10446434, 7843147, 13164075, 8260833, 1109712, -7344394, -5807333, 5637145, -5650567, 8251169, -7475928, 129386, -617938, -594316, 23432268, --3523484, -1335198, -2056216, 3235721, 6454799, 12326556, 14088566, -7730405, 3366718, 14012331, --7883413, -9797357, 5867462, -4279398, 6049999, 26770532, -12672301, 1789928, 2494839, -7000797, -3009162, 8724152, 6120329, 704375, -5500780, -13220983, 6242198, -5778879, 7223598, -4982699, -1006096, -6556805, -1445257, -10952167, 922881, -3492345, -3876208, -1382443, 1315334, 2738579, -5410585, 2272038, -3119220, -799938, 5516349, -3284039, -2874407, 368293, 381178, -4998805, --75162, -2532957, -1245004, -960462, -903017, 1888712, 1186485, 3893388, -2513630, -2534031, -292595, -3030636, 1401770, 6128382, -3085934, -3306588, -6125160, 3110630, -1553168, -4185446, --1504312, -9036074, -14268955, -10978473, -14848776, -5697274, 1725503, 11969537, 8891119, 3240016, -12618614, 3814468, 7731478, 7099044, -3347927, 10929081, 11870216, 8371965, -15877420, -8903467, --9167608, 3505767, -6300180, 469762, 4607963, -4607426, -11178189, 7300908, -5260798, 2605435, -2494839, 11497091, -11889543, 18626736, -18299782, 19026168, 39728, 9552544, -9139690, 3369939, --20459076, -11429445, -9908490, 9067213, 4261682, 13139916, -1213865, -40265, -6570763, -16465294, -10850698, -8990440, -4576288, 7838316, 18783502, 18078592, 8581882, -1205275, -12126840, 7195144, --18677202, -1464047, -10556493, 6049999, 20384452, -19459960, 7211250, 9026411, -11979201, -1205275, --1944547, 6777459, -7897908, -11559904, 2424509, -4683125, -16840566, 8602283, -1547799, -15952045, -11968463, 15640123, -5028333, 511101, 2348810, -6756521, 10308458, 4694400, -2735894, -2549600, --6528887, -3832722, 8304320, 4650376, 4804995, -377420, -7199976, -2239289, -2340220, -8193724, --1581085, 2428804, -329639, -2420214, -577673, -5852430, 931471, -2010582, 4136054, 2174327, -1002338, -6781217, 5750961, 485331, -2735357, -1739462, -923418, -372052, 3495567, -2524367, --843424, 2496450, 7050189, 3406446, 2226404, -4184909, 5673652, -13493177, -15786152, -4325569, -10481868, -12045236, 8275328, -16616155, -2813741, -6276558, -5732708, -13135621, -1001264, -4786204, --7816304, 6594923, -8730058, 9788767, 2218888, 7686381, -11595338, -21860310, -1640678, 4733591, --9039832, -6573985, 3798362, 3061775, -10604811, -4939213, 15554224, 7643431, -1830193, 8588861, -22254374, 969589, 2992519, 2445447, -1479616, -177704, 3447785, 3139084, -16756278, -5980742, --20518132, -6365142, -19121732, -8925479, 1249299, 22753662, 10733123, -10990821, -12921409, 8595303, -18024904, 11449309, -7778186, 13842143, -5004711, -854699, -23734526, -6943889, -2885681, -2780991, --16170552, -26058640, 8607651, 106837, -18990198, 5055177, 30221538, 4079682, 3598646, -18801220, --1506997, -114354, 4401268, -21134460, 19863150, 3263638, 5633387, 11027329, 4401805, 11947525, --701153, 5688684, -4427038, -9071508, -7476465, 4202626, -5985037, -1815697, -8064338, 2914672, -6953552, 265751, 5888937, 773094, -2084670, 31675, -4551055, 3430068, 3607236, 735513, -822486, -3112778, -1123134, 1927904, 5143224, 3709241, -4151623, -1431835, -1596654, -9844602, --13611288, -10057203, -3134253, -1173600, 1801202, -2275259, -3716221, -4140885, 188979, -2748242, --3486440, -6098854, -3165928, 10053982, -5978595, -5325223, -1372779, 12293270, -18218178, -3615826, -4514548, -8704825, 21276194, -17325362, -17822504, -14488535, 20585242, 9248138, -11709155, -10574209, --6985228, -2122788, -6279242, -6506876, 1151588, 7732552, 20347944, -2142115, 8755291, 7587060, -7432978, -13399761, -16684874, -12011950, 14275398, -2366527, 17314086, 5777805, -1746441, -23394686, --18983756, -1905355, 1712618, -13540421, -8360154, -6324340, -6376953, -30719754, -6533182, -7452305, --10937134, -5368172, -7096897, -14066018, 10098005, 19275814, 10844792, 594853, 11513197, 14490146, --4971425, 4635881, 3843459, 1489280, -423591, -3612068, 10298795, 4139275, 17153026, -3885335, -1860258, 6111739, 33609192, -336081, 17956184, 22534082, -1767916, -19539416, 1883880, 19576998, -3066607, -16634408, -14754823, -19077170, 12683575, -15575699, -4032438, 22437982, -9418326, -14949171, -4845797, -4061429, 650151, 6163278, -9180493, -4172561, 2086280, -2763812, -4039954, -805306, -1942936, 11224897, -820339, -5768141, -4767951, -12885, -4068408, -3497714, -2900177, -5607617, --2433636, 2149094, -2445984, -515933, -7418483, 1988570, -479963, 1561221, 7916162, 4803921, --4263829, 2094870, 1926830, -6760816, -10036802, 3842922, 4387309, 576063, -10256382, -11399380, --1522029, -7976291, -2312840, -1199907, -10116259, 18689014, 13568339, -31836982, 9867150, 12446278, --5721434, 8987756, 29911226, 2287607, 6528351, -10696079, 6806987, -11295227, -7259032, -6109054, -2048699, 7546258, 10663867, -1748052, 4305168, -3471944, -1996623, -6007049, 7813083, 28192166, --9423158, -9358197, 10034117, 6974490, 881542, -20857972, 13243532, -16672526, 9305584, 11639898, -1178969, 2798708, -3546032, 19320374, 14650670, -41339, 9813463, -8032126, 12410845, 1883880, -14034343, 20468740, -586800, 5028333, -2823941, -7845832, -650151, 8795019, 10046465, -19985020, --12125230, 4407710, 21351356, -10629507, 14135274, 9316858, 2657511, -23255638, 2688113, 3354370, --27569932, 15954730, -15475841, -18512920, -34862788, 8227010, 20994338, -9790378, -19492172, 3782793, -23284092, 14669998, 2515240, -3292629, 244276, 8000451, -7232188, 10755135, 17876728, 16859894, --1338956, 6999186, 17692580, -3053185, -303869, -2226404, 15231565, -2520609, 3702262, -7425462, -3833258, -4676683, 542240, -63888, -1245004, -3746285, 3309272, 8725763, 3002182, 2273648, --8170102, 1780801, -8428873, 2258079, 13215077, -5116380, 189515, 1445793, -6290517, -8489003, --9427453, -2444910, 5980742, -3077344, 1612223, -6012418, -566936, -95563, -17421998, -4793184, --711354, 3351685, 4487167, -3944391, 6234682, 2954401, 3359738, -5499706, -5004711, -3466576, -1622424, 8037495, 22104586, 16107201, -5177583, -42331196, 5294084, 21626770, 10465762, 4931696, --18414136, 183073, -12628278, 3299072, -968515, 3832722, 6692633, 9236327, 4086125, -22871238, -13692356, -2923262, 4333622, 17901960, 7044820, 3595425, -6036577, 22135724, -510027, 22004728, --26101590, -7444252, 8665633, -15054934, -13020193, 1239098, -3217468, -11714523, 1656247, 19485730, --394063, 1585380, -9836012, -20645908, -13122199, -5674189, 8920647, -1992865, 2253784, -9992241, --10982231, -5181878, 16899086, -11150809, 9826348, 6773164, 5626407, 2178622, -17030620, -24274618, --1784559, 16783658, -20216948, 10193568, -17378512, 11343545, -18294414, -608275, -18035104, 26204132, --23405962, -13776108, 6314139, 4583267, 12064026, 10203232, -5912560, -2923799, -5951214, 3553012, --50466, 15766288, -18951006, -7243999, -24410446, 13071196, -8544301, 1309965, -825171, 7067906, --5245229, 2869038, -9868761, -14967424, 10051297, -7564511, 455803, 2885681, 13285408, 5580237, --9185324, 2366527, -2970507, -11735461, -2025614, 3196530, 4027606, -10572599, -5121212, 12432857, --1009317, -9800578, -4236449, 14530948, -16399796, -5277441, 3627100, -3496640, 6161668, -877784, --7068980, -9472550, -2906619, -4037806, -2808909, -2861522, 2955474, -390842, 6437082, -6136972, -3696356, 1570347, -2677375, 6579890, -36390720, -5186173, 10853382, 2627983, -8694088, -13014825, -1171452, -12375948, -1178432, -19092204, 17810156, -7175817, 11138998, -24817932, -14079440, -562641, -30334280, -24902758, -2183991, -19507204, -15501074, -4789426, 18997178, -4488241, 8417599, 8832600, --10125385, -21645562, 30370788, 13156022, -17418240, 3289945, 2209224, 8302172, -16947404, 15087683, --1367947, -31877248, 3337190, 6269042, 8175470, -26433914, -6328635, 3221226, 23180476, 4312684, -12907987, -34082712, -20673288, 10314901, -16106, 22063784, -5957120, -3857954, 1685238, 11155104, -10314364, 3821984, -43211664, 12048994, -5038534, 9761387, 23019950, -7413114, -2052994, -26446798, -8536248, 11764452, -13839995, -8356933, 23829552, 37484864, 9844065, 5987185, -10653130, -4566087, --20548198, 1415729, 258235, -25531970, 9259413, -925029, -7421167, -2100776, 11950210, -9888088, --6539625, -1306207, -2705830, -1091995, 10558103, -4731444, 227096, 5886253, 2435783, 8163659, -7055021, 5156108, 3794067, 9800578, 11728482, -15867757, 5005248, -9986336, 7776575, 948114, --9887015, -6942815, -3828963, -3507915, -6471979, 5787469, -3281892, -6662568, 10812580, -1942399, --3379603, 5899675, 11139535, -287226, -3946538, 2809982, 10400800, 10989748, 7124814, -3947075, -1939178, 1818919, 9370545, 5445482, -30714384, -19923816, -6546604, 157840, -17288854, 14591615, --36384280, 2274722, -22150756, 12224014, -7910256, -24674588, -1745367, -6298033, -8382703, -28172838, --20431696, 6463389, 23068270, -14691473, 28363428, -23289998, -15151571, 5567352, -1852205, 13131863, --7432978, -7822209, -11065983, -2758443, -38685844, -10805601, 1593970, -1242319, -6067178, -14954002, -12750684, -13182328, 21364778, -6026913, -2152852, -14375792, -13200045, -25484188, -10836739, 10024991, -4398584, -1116155, 2160369, -8877697, -6585796, -11576011, -9634149, 5730560, 8154533, 4060355, --22073448, 26203058, 3936338, -10755672, 21061982, 15163382, 25014964, -4258997, 14775224, -33272038, --17776870, -31419296, 32803350, -10059350, -22160958, -21348672, -45699524, -18920942, 32339494, -1730872, --15770046, 12037183, -31058520, -20692078, 8315057, -1504312, -25853556, -25310780, 99858, -14406931, -4346507, 5817533, -19131394, 19366544, -11227581, -16751446, 1882269, -9807021, 27599996, -10174778, -12618077, 2255932, 16928614, -8118562, -4450123, 1890323, -7156490, 15569, -15479599, -11719892, --2683818, 6894497, 690416, 11277510, 4806069, 8435316, -6757594, 227633, -13440563, -3118146, --4621922, 4389994, 13526463, 6336688, 5635534, 6532646, 5796595, 1707786, -17646410, -5095442, --12084427, -2852395, 2406792, 8553964, 40581000, 51857436, -4583804, -22624814, -5130339, -8384850, --22818088, 10234370, 980863, -16512002, 49631032, 17353816, -11323681, -33927556, -2702071, 8479876, -9359807, 10242960, 23951958, -6559489, -11273752, 11291469, -42378444, -28370406, -10774462, -2866891, -4993437, -22643604, -20449950, 22184580, 17913234, -13273060, -25460566, 16601122, 916439, 29146722, --23152022, -5260798, -7598871, -1318555, -18196166, -27644558, 23804856, -17095580, -10418517, -21107080, --4277251, 14150843, 13661217, -8446053, 2342905, 2579128, 18109192, 27078158, 20365662, -34467648, --16100759, -20415054, -4616553, 11880416, 4837744, -23550916, -33442226, 28876138, 2363843, -28159954, --46304580, 23687282, -5550172, 12767327, 12302934, 12479027, 2218888, 9218074, -17845052, -6940131, -13214541, 2334852, -8039642, 5257040, -1607928, -24817394, 13123273, -31520228, -1461900, -1527398, --4886599, -11316165, -3793530, 13881871, -329639, -3167002, 7742216, -10196252, 31351650, -2427194, -3386045, -2286533, 943819, 7649337, 169651, 7364795, -15023796, 3375844, -2212982, -10966662, -1789928, 5201743, 10910291, -5200669, 3544422, -26215406, -7869454, -1487669, -13007845, 11604465, --862215, -3223373, -6655052, -10851772, -15180562, -22392886, 7490423, -2319819, 17090748, 19314468, -13103408, -13309030, -17619566, -23412940, -7976828, 21305186, 18254148, 2884608, 8953933, -7611756, --12651900, -10366440, 814433, 2962991, -9757092, 4614406, 18109730, 22435298, -27785218, -23295366, -66279936, -5314485, -6478422, -9914395, -20917028, -2248952, 23911694, 38454988, -17696340, -10654740, --3901978, -17446694, -4356708, -9819906, 15265924, -15760382, 17473538, 8375186, -6011344, -21994528, --1627793, -9035001, 33062122, -18128520, -459562, 99321, -3313567, 15008226, -9548786, -1203128, -6858526, -4481262, -32321240, 16525424, -14760729, -17013440, -3954591, -18147848, -10601053, -33013266, -31609886, 1512902, -21113522, -38689064, 22524420, -22793928, -22360674, 368830, -17428978, 7912404, -14261976, 44146896, -12585328, 17333414, -3768834, -21234318, -18170932, -5209259, 66242356, -58402964, --4349192, 60978872, -55790016, -21049098, 31304942, -4540854, -25259240, 58982248, -29237452, -12015171, -26944478, 6804839, 11442330, -17352742, 19422916, 27567784, 12764643, -6913824, -1916629, 27846958, --4155918, 15982647, -495532, 11192685, -16003585, -1948841, 7187628, 4585952, 2929705, 862215, -994822, 11668889, -5438503, 3112241, 4135517, 4038880, -25070260, -10124312, 7834557, -20970714, -6200859, 12193949, -9082245, -9264244, -7429220, 5200132, -10385231, 12236362, 10074383, -1177358, -5761162, -7344931, -15200963, -14472966, 28927142, 5418101, 17971216, 3912715, 3396246, 11696807, --10124312, -2157684, 18261128, -10781442, -25393994, 19082540, -2749853, 11245835, -3125126, -7248831, --7377143, 30946850, -40259412, 35478040, -6465000, -22613002, 18916646, 6415608, -3923453, 3686693, -2272575, -4658966, 6680285, -8061117, -10328859, -4901095, -14176076, -11882564, -26322244, -10304700, -22008486, 20710870, -32642826, 10444287, 16807280, 14003204, -5893232, -32259500, -3226057, -16154983, --37682968, 23185844, 59471876, -34701188, -4060355, 42130944, -12411919, -15529528, 34176664, 25256018, -12305081, -14301167, -28155122, 8904004, -11673184, -17956184, 62213140, 45656576, -38080252, -28167470, -33443836, -62001076, -22024056, -17833778, -10975252, 42698956, 28302760, 18456548, 20345796, -72784128, --25606058, 68602440, 39628052, 7792145, -18756660, 23379654, -24637544, -49582176, -33136746, 23603530, --18291728, -4254165, 27514634, 51201380, -6561637, -29462938, 3385508, 20002200, -35525820, -13430900, -36294084, 32564442, 32683628, 22536230, -6933688, -21336860, -10739566, 27611272, 7744900, 11382737, --5738077, 2751464, 12404939, 724776, -5434744, -6365142, -8362302, 5834176, 4160750, 26458072, -7176891, -5716602, -11064373, 2246268, 983011, -4354023, -9761387, 2259690, 20423644, -22497576, --6979322, 19568944, -4931160, -932008, 12906377, -5494337, 9452149, 3733937, 11164231, -22752590, --3575024, 4276177, 25067040, 5732171, 11827803, 10197326, 5498095, -5313949, 8021925, 11610907, --13967234, 6276021, -61499636, 26322780, 105764, -6488622, 31217970, -5553393, -23900420, 11709691, -10685879, 30495342, 17223892, -16831976, 716723, 4523675, 20870856, 4650913, -24391656, -1165010, --1551557, 4705137, -22694608, -24813100, 35451196, -13075491, -37393060, 18909668, 32902670, -18847390, --6476274, 1916629, 22514756, -27296128, -35650912, 9483288, 29848412, -6767258, -12921409, -7684234, --7443179, 12771622, 5429376, 7515119, 75459888, 3891240, -9783399, 741419, 2254321, 40529996, -1175210, -14810658, 9084930, -32218160, -18852758, 7966628, 56371, 34770980, 27752468, -18347564, --5375689, -17368310, 716186, 12250320, 3103114, 3568581, 12499965, -9378061, -37241124, 9113921, -25006374, -12210592, 22063784, -34765076, 16130823, 10011032, -30222074, 4791573, 540629, -13533442, -1327682, -6012418, 14949171, 14239427, -25313464, -15983721, 33683280, -26145076, 12370043, -2825552, --9917079, 6976638, -1024350, -15575162, 8609799, 4788352, 6165426, -921271, -2574296, 1221381, -4677757, -6235756, -5466420, 4111358, 3304977, -3673808, -252329, 6969122, 12585865, -7933879, --5038534, 1094680, -2201171, 3877282, -3059627, -2216203, 2967823, -689879, 7610682, -2936147, -3798362, -10331007, 6020471, -7390565, 6367289, 10451803, -881005, -393526, 1643899, -13316546, -10450729, 21100100, -39589936, -130214280, -154093232, -13858249, -106873816, 41982232, 260532176, 140152832, -211603376, 223013488, -24254218, -64273648, 19048716, -162438880, -198572448, -61350924, -218593968, -175475184, -44484588, -126225328, -34413424, 251605088, 91071560, 177882512, 307292576, 182902800, 81787448, 62261456, -21759914, -136901008, -170455440, -56240448, -232802800, -232939696, 30671436, -174201184, -142995568, 85938536, --146616768, -150730272, 113749528, 46227268, -20840256, 268606176, 251486448, 160610832, 340967264, 321362336, -109740176, 127911640, 99643240, -161809136, -162257424, -205122800, -406199232, -479413376, -344867072, -343273120, --253272608, 8677445, 23332946, 167186432, 289026080, 356322304, 324591072, 376766880, 322743168, 190393760, -127935264, 42631308, -63723356, -143001472, -203539568, -174811616, -253581856, -283915584, -235557488, -275279488, --206656112, 32745904, 66126392, 160399312, 321615200, 256187280, 197332816, 149243664, 58674084, -48759152, --39924944, -80635864, -101040720, -77058696, -87799872, -84696752, -36244156, -34275988, 1788317, 52346524, -37096168, 73486888, 88126288, 15408732, 63887640, 61531848, -17208860, 20471962, 14237817, -46772732, -1871532, 15173583, -54303420, -59117004, -82729664, -169825696, -190070560, -147715744, -141366160, -46255188, -69153808, 124996968, 203141216, 306776640, 330991104, 307147616, 214999088, 65689376, -69609072, -148442128, --221878544, -273578688, -269337952, -210184432, -144614768, -68605664, -21357798, 8660265, 24625194, 62510564, -102779640, 106274672, 98368712, 101282848, 71738304, 64864208, 55816320, 22701050, 4789426, 14002130, -11826192, 7431367, 4471061, -12984760, -34911104, -52956948, -76360760, -96848832, -97089344, -78134584, --60030220, -31525060, 5239860, 32794760, 47868484, 55713780, 49017388, 43458088, 47481400, 46005004, -36797132, 31502512, 26009786, 17885318, 9236864, 511101, -17603998, -32460290, -35913980, -33692944, --30681636, -28620052, -26534844, -19709068, -7157026, 732292, -2668249, -8731132, -4916127, 675921, -3926674, 7726110, 8959302, 12268574, 19513648, 26594974, 26102664, 26889716, 23726474, 15349139, -9273908, 5373541, -2098629, -8809515, -13642964, -24398098, -33830920, -37126236, -38620884, -33381022, --21327734, -5653251, 11912629, 27623082, 35036196, 34208876, 26719528, 17685602, 8708583, 462246, --4380867, -6918656, -7317551, -6398965, -6178848, -6049462, -5478768, -4278325, -3321084, -1988570, --689342, 200790, 984084, 1385127, 1319092, 1007170, 503585, 139050, -35433, -62814, --51540, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +2694555, 4660577, -3473555, -3004867, -4648765, 4219806, 2105071, 372052, 6239514, -619012, +-73551, -1902671, -1538672, 1357747, -1663226, -3244848, 1832877, 532039, 5211943, 7121056, +-1848447, -4182761, -5153961, -320512, -2945274, -2838437, -1946157, -391916, -4104915, 3961571, +-1467268, -1548336, -2713883, -1999844, 762894, 4450660, -459025, -1278827, 1347546, -4363687, +3281355, -2720325, -9791452, 4862977, 3233037, 5401458, 5602248, 1070521, 2952253, -2918430, +834834, 4247186, 335007, -46171, -1017370, -558346, 2280628, -2063732, -1488743, 111669, +2168422, -1791001, -2232309, -3270618, 4197257, 1670205, 521839, -1015760, -4190814, -139586, +3140158, 1953136, -593242, -788663, 3145527, -375810, -225486, -1362578, -1288490, -1911797, +-2265595, 147640, 483721, 1085016, -2331630, -919123, 1304060, -1612223, 1407139, 385473, +633508, -598611, -33286, 311385, 688805, 178778, -266825, 435939, -292595, -791348, +-254477, -1314797, 882616, 458488, -372588, 25770, -592706, 795643, 817118, 269509, +85899, 313533, 293132, -814433, 34897, -153008, -195421, -314069, -106300, 469225, +142808, -14672682, 7678865, -707596, 234076, 2680597, 3770981, -5457293, -679679, -967978, +3139084, 1202591, -3332895, 10461467, -1103807, -633508, 4664335, 3830037, 1263794, 2661806, +8543764, -4207458, 284542, -2138357, 870805, -2611877, 230318, 279710, 976568, -4721243, +425202, -1123671, -1762547, -190052, 2994666, -1627256, 2785823, 4041027, -6929930, 949725, +-2805688, -755377, -4258997, 2147484, -2519535, -423054, -1414118, -4334696, 1681480, -2904472, +2003065, 1102733, -2130304, -3152506, 121870, 2951180, 2232309, 5353140, 2490007, -2297271, +-6537477, -428960, 1178432, 8282845, -2543158, -1245004, -69256, -1601486, -4289062, -2046015, +-3991635, -530428, 3352759, -743029, 3987340, 2564096, 2071785, 2888903, 542240, -5163625, +-1185948, -3319473, -2093260, -5735392, -171262, -1627793, 798327, 1567663, 704375, -846109, +-1146219, 206158, 1541893, -1286343, -332323, 45097, -443992, -111669, -506269, 618475, +-1951526, -669478, -442382, 67646, -168041, -358093, 30065, -2901251, 10624138, 5491653, +-1836635, -4421669, 6037651, -7270843, -1297080, 3882651, -3061775, -2238752, -3189013, 6978248, +-2599529, 2083059, 489089, 2056216, 9569724, -9826348, 2786897, 4762045, -3346853, -9103183, +-4799089, -722628, 455267, -1384053, -1735704, 3661997, 5372467, -559956, -3994320, 185220, +-5032091, 1358820, -3200825, 1630477, 5745593, 2038499, -5992553, -263067, 250719, 8659191, +1531156, 4281009, -1369558, 1839857, 1428614, -10703595, 64425, 4916664, 2220498, 5510980, +-5077725, -3159485, -5055714, 1240709, 3073586, -1115618, 979789, 171799, -2586644, 841277, +-1967632, 1585380, 1495186, -466004, 2496450, 431644, -482647, 1044214, 6206765, 1056562, +3194382, 4002910, 2173790, -3758, -192200, -6015639, -106300, 6198712, 2132988, 2692408, +-213138, -538482, 3869766, -3063386, 236760, -374199, 1923072, 967978, -70867, -2673080, +337155, -1402307, -468688, 333397, -912144, -710280, 537408, -179315, 1955821, 753230, +1781338, 792958, 487479, 907849, -835371, -1119913, 39728, 13959, 2250026, 1324997, +265751, 703301, 2136209, -476741, 144955, 585189, 897648, -23622, 22066468, -5772436, +-2124398, -3416647, 4468914, 2960306, 7472170, 2927020, -1167694, 3546032, -216359, 3972845, +1505386, 5545877, 61203, 4643397, 6068789, -6859600, 1161789, 1690607, 1076963, 1003949, +1461900, -4107063, -66035, -4719632, -727997, -236760, -7937100, -5425081, 1918777, -103616, +-331249, 3067681, 3022583, -1674500, -6848326, 1966558, 6073084, 3962644, 5661304, -1611687, +3036542, 5596880, -9494562, 2922188, 4102231, -4740570, 5792301, -4143033, -905164, 502511, +1102196, -3219078, 2714956, -905164, -1112933, -3347390, -2718178, 3196530, 3243237, 1404991, +3192771, 4958003, 2716567, 6922951, -1517197, -7962870, 7585986, 1165010, 3702799, 1503775, +-1340030, 1909650, 1415729, 249645, 5197448, -1684164, 5128728, -7495255, -1739462, 876173, +2265059, 419296, -4085051, -1955284, 642098, 146566, -459562, 162672, 1536525, -2076080, +-1162862, -1210107, -1474248, 759136, -464393, -638340, -1204738, -947040, 2224793, -628139, +-767189, -120796, -813896, -744103, 1120987, -544924, 1199907, -351114, 79457, 857920, +-290984, 20938, 9922448, -11135776, 7601555, 1697586, 7781944, 1891396, -4197794, 1532230, +6024766, -6939057, -1371705, 922344, -7831873, -1459215, -5990406, -3628711, -4330401, -4773320, +2199023, -7485055, -4592931, -5941551, -1418413, 5957120, 2234457, -7171522, -2710124, -7506529, +-1756642, 1771137, 11062225, -8698383, 3738769, -2133525, -3100967, -6456410, 434329, 1226750, +7138236, 3791383, 1010391, -5845988, -10205379, -46708, 3157338, 8221105, 2958159, 2707977, +-5873368, 2292439, 5215164, 497142, 920197, -3107946, -3055332, -971200, 3089692, 633508, +-1932735, 165356, -6468758, -841277, -5430450, 3608846, -1036161, 3607773, -5316633, -4510790, +-7369090, -767725, -4691715, -1975148, 2054605, -7180112, -3008625, 941672, 4147865, -8646306, +5240397, -4016331, -4280472, -4548907, -3746285, 2728378, -2471754, 1317481, 1649804, -2222109, +474057, 1918777, 1555315, 191663, -1934346, -213675, -855235, -2251100, -269509, 1832340, +1175747, -1066226, 1735704, -1265942, -886911, -163746, 690416, -1655173, 271657, -120259, +1338419, 1024887, 2110977, -1486059, 618475, -265751, -517544, 701153, -1661616, -548145, +1082869, 586263, -692564, -27327266, 4422743, 3134789, -7876433, -1744294, -16106, 285615, +-1493575, -2612414, -2001992, -8115878, 6274411, -3927211, 883690, -6760279, -2385318, 9797894, +8893804, -5621576, -3374771, 287763, -134755, -4614943, -5363878, -3816615, 663572, 420907, +186831, -555661, 2307471, -6672769, 2108292, 226560, -11745662, -1417339, -3496640, 5377299, +7888781, 1222992, -1358283, 369367, -6871411, -8647380, 4659503, 8537858, 9545028, -2577517, +1764158, 5541045, 5758478, -2980171, 5315022, 8598525, -330712, 7235410, 6176700, -7240241, +2397666, 401579, 7803419, -4781909, -5044439, 4459250, 5924371, -1831804, 561567, -8534637, +6028524, -4784594, 6362457, -10610717, 1187022, 2493766, 5091147, 321049, -4393752, -9058623, +-5499706, 7569880, -7464653, -381178, 892279, 4069482, -2228014, -1634235, 3241090, -6069326, +-5214627, 2124398, 1483911, -473520, 4365298, -2037425, 1072668, 1079111, 1204202, 1597728, +401579, -1721208, 1098975, 2189360, -874563, 270046, -400506, -1163936, 960462, -2836826, +-343061, -3056943, -523986, -613643, -930934, -1592359, 679679, -941135, 13422, -2391223, +992674, -474594, 871342, 902480, 414464, 342524, -10536092, 3815542, -9303973, 11908871, +11454141, 410169, -15377594, 6453189, 934155, -2817499, 10710575, 107911, -9140227, -915902, +11638288, -14463302, 517007, -3571265, -11407433, -3125126, 265751, -2193118, -5814849, 3445101, +-4807142, 4019553, -4086662, -7702487, 4197257, -515396, 6005975, -11500312, 4776004, 9167608, +-3604015, 814433, 9205726, 13447006, -3503620, -2665564, -11221139, 726923, -9248138, -691490, +-6421513, 389768, 960999, 5474473, 2644626, 5009543, -3512210, 978179, 3114925, -516470, +12402255, -8127152, -3996467, 16318728, 16371878, -3149822, -978179, -10169946, -5184026, 593242, +-2790655, -6706055, 9907953, 3111704, -2517388, 14537927, 2854006, -6866042, -141734, -13207561, +-6612639, -7454990, -6404870, -1688996, -10321343, -7408819, 4321811, 4027606, -714038, 2408403, +-3029563, 3550864, -2263985, -3315715, 634045, -4807142, -2185602, 6353867, 548682, 3206730, +-1631014, 722628, 526670, 1553704, 1406065, -192737, -79994, -3023657, 9127, 745714, +546535, -791885, -836445, 2181307, 668404, -363998, 118112, -449361, 113817, 1248762, +774705, -333934, -1130650, 408559, -736050, 13082470, -3531000, -188979, 9000104, -2201171, +5306969, -2971581, -11501922, -784905, -17717, -2399276, -6825240, -7625715, 3920768, -6050535, +10590852, -3308736, -7728257, 6524592, 13302051, -3358665, 3712462, -3631395, 7677791, 120796, +-16217797, 5718212, 8977019, 846645, -2716030, -9470940, 7880191, 5232881, 5069135, 982474, +3190087, 10516764, -7477538, 1264868, 2054068, -5937793, -11400991, 10790568, 6020471, 20129974, +-1042066, 8847633, -2980171, -6402186, 1065152, -1052267, -299037, -1866700, -6589554, 14434848, +324270, 1069984, 2041183, -2085207, 11916387, 1451699, 9975598, 4105452, 1669669, 10611790, +-5047661, -12033961, -2374580, 2145873, 1536525, -5017059, 5837935, -3611531, -16759499, 1447941, +3316789, -9320616, 4300336, -1029718, 1796370, -47245, -3813931, -4275103, -29528, 1514513, +5099737, -533650, 1422171, -2046015, -1476395, 2237141, 1504849, -364535, 1551557, -1779727, +-205622, 41876, -2306934, -3383361, 2051384, -3758633, -964220, -1683627, -3229816, -972810, +-440234, -1273995, 1391569, -629213, -1365800, -481573, 6146635, 2333778, 2339147, -1325534, +870268, -2010045, -2513630, -905701, -873489, 986232, -1666447, 2894808, -3871376, -1302986, +818728, 10547903, -17708688, 2812130, 7810398, 11670500, -12429098, -1858647, 8282845, 5753109, +7055021, 1182727, 14987288, 2717104, 6162205, -1950989, 802622, 6143951, 3321084, 7104950, +478352, -10043781, -14637785, 7640210, 3641059, -2842732, 1617055, 4265977, -13704167, 55298, +-8683887, 3947075, -564251, 8849780, -2957085, 3914863, -2159295, 2240899, 1120987, -447750, +4922570, 6636262, 2301029, 3815005, -10764799, 4345433, -1982127, -18661632, -12457553, 3099893, +-13683229, -1001801, 11116986, -8254927, 22187264, 7993471, -4597763, 12033425, 457951, -4027606, +-9108015, -8977555, -12490839, -1989644, 7124277, -8921721, -1214402, 7969312, 3553012, 4473209, +16219944, 1953673, 10562935, 18790, 1977833, -17597554, 4736812, 1258425, -16082505, -15171435, +8595840, -5824513, 890132, 4529043, -2729452, -4169340, 794569, -973347, -1222455, 862752, +-2986076, 2509872, -2185602, 514859, -5173288, 2680597, 710817, 1057099, -410169, 6164352, +-5178657, 380105, -1552631, -1308891, 1114544, 1219234, 1593970, 2940442, 4850092, 3035468, +-3360275, 727997, -555125, 4500052, -1650878, 2886218, -4815195, -3592203, -2842732, -2309082, +-467615, -302258, 2153926, 2658048, -9218610, -298500, 5756867, -102005, 4033511, -9443022, +7299834, -599148, 2107755, 6801081, -12738873, -8763881, 2285996, -193274, 6954089, 14372571, +-1359894, 3568581, 15435576, -5762773, -10500658, -622770, 11302743, -2474975, -13066901, 1025960, +4795331, -2585034, -4102768, -980863, 16743930, -3214246, 14410689, 10879689, 13146895, 703838, +1057099, 7669738, 2564632, -2692945, 2696703, -10446434, 7843147, 13164075, 8260833, 1109712, +7344394, -5807333, 5637145, -5650567, 8251169, -7475928, 129386, -617938, -594316, 23432268, +-3523484, -1335198, -2056216, 3235721, 6454799, 12326556, 14088566, -7730405, 3366718, 14012331, +-7883413, -9797357, 5867462, -4279398, 6049999, 26770532, -12672301, 1789928, 2494839, -7000797, +3009162, 8724152, 6120329, 704375, -5500780, -13220983, 6242198, -5778879, 7223598, -4982699, +1006096, -6556805, -1445257, -10952167, 922881, -3492345, -3876208, -1382443, 1315334, 2738579, +5410585, 2272038, -3119220, -799938, 5516349, -3284039, -2874407, 368293, 381178, -4998805, +-75162, -2532957, -1245004, -960462, -903017, 1888712, 1186485, 3893388, -2513630, -2534031, +292595, -3030636, 1401770, 6128382, -3085934, -3306588, -6125160, 3110630, -1553168, -4185446, +-1504312, -9036074, -14268955, -10978473, -14848776, -5697274, 1725503, 11969537, 8891119, 3240016, +12618614, 3814468, 7731478, 7099044, -3347927, 10929081, 11870216, 8371965, -15877420, -8903467, +-9167608, 3505767, -6300180, 469762, 4607963, -4607426, -11178189, 7300908, -5260798, 2605435, +2494839, 11497091, -11889543, 18626736, -18299782, 19026168, 39728, 9552544, -9139690, 3369939, +-20459076, -11429445, -9908490, 9067213, 4261682, 13139916, -1213865, -40265, -6570763, -16465294, +10850698, -8990440, -4576288, 7838316, 18783502, 18078592, 8581882, -1205275, -12126840, 7195144, +-18677202, -1464047, -10556493, 6049999, 20384452, -19459960, 7211250, 9026411, -11979201, -1205275, +-1944547, 6777459, -7897908, -11559904, 2424509, -4683125, -16840566, 8602283, -1547799, -15952045, +11968463, 15640123, -5028333, 511101, 2348810, -6756521, 10308458, 4694400, -2735894, -2549600, +-6528887, -3832722, 8304320, 4650376, 4804995, -377420, -7199976, -2239289, -2340220, -8193724, +-1581085, 2428804, -329639, -2420214, -577673, -5852430, 931471, -2010582, 4136054, 2174327, +1002338, -6781217, 5750961, 485331, -2735357, -1739462, -923418, -372052, 3495567, -2524367, +-843424, 2496450, 7050189, 3406446, 2226404, -4184909, 5673652, -13493177, -15786152, -4325569, +10481868, -12045236, 8275328, -16616155, -2813741, -6276558, -5732708, -13135621, -1001264, -4786204, +-7816304, 6594923, -8730058, 9788767, 2218888, 7686381, -11595338, -21860310, -1640678, 4733591, +-9039832, -6573985, 3798362, 3061775, -10604811, -4939213, 15554224, 7643431, -1830193, 8588861, +22254374, 969589, 2992519, 2445447, -1479616, -177704, 3447785, 3139084, -16756278, -5980742, +-20518132, -6365142, -19121732, -8925479, 1249299, 22753662, 10733123, -10990821, -12921409, 8595303, +18024904, 11449309, -7778186, 13842143, -5004711, -854699, -23734526, -6943889, -2885681, -2780991, +-16170552, -26058640, 8607651, 106837, -18990198, 5055177, 30221538, 4079682, 3598646, -18801220, +-1506997, -114354, 4401268, -21134460, 19863150, 3263638, 5633387, 11027329, 4401805, 11947525, +-701153, 5688684, -4427038, -9071508, -7476465, 4202626, -5985037, -1815697, -8064338, 2914672, +6953552, 265751, 5888937, 773094, -2084670, 31675, -4551055, 3430068, 3607236, 735513, +822486, -3112778, -1123134, 1927904, 5143224, 3709241, -4151623, -1431835, -1596654, -9844602, +-13611288, -10057203, -3134253, -1173600, 1801202, -2275259, -3716221, -4140885, 188979, -2748242, +-3486440, -6098854, -3165928, 10053982, -5978595, -5325223, -1372779, 12293270, -18218178, -3615826, +4514548, -8704825, 21276194, -17325362, -17822504, -14488535, 20585242, 9248138, -11709155, -10574209, +-6985228, -2122788, -6279242, -6506876, 1151588, 7732552, 20347944, -2142115, 8755291, 7587060, +7432978, -13399761, -16684874, -12011950, 14275398, -2366527, 17314086, 5777805, -1746441, -23394686, +-18983756, -1905355, 1712618, -13540421, -8360154, -6324340, -6376953, -30719754, -6533182, -7452305, +-10937134, -5368172, -7096897, -14066018, 10098005, 19275814, 10844792, 594853, 11513197, 14490146, +-4971425, 4635881, 3843459, 1489280, -423591, -3612068, 10298795, 4139275, 17153026, -3885335, +1860258, 6111739, 33609192, -336081, 17956184, 22534082, -1767916, -19539416, 1883880, 19576998, +3066607, -16634408, -14754823, -19077170, 12683575, -15575699, -4032438, 22437982, -9418326, -14949171, +4845797, -4061429, 650151, 6163278, -9180493, -4172561, 2086280, -2763812, -4039954, -805306, +1942936, 11224897, -820339, -5768141, -4767951, -12885, -4068408, -3497714, -2900177, -5607617, +-2433636, 2149094, -2445984, -515933, -7418483, 1988570, -479963, 1561221, 7916162, 4803921, +-4263829, 2094870, 1926830, -6760816, -10036802, 3842922, 4387309, 576063, -10256382, -11399380, +-1522029, -7976291, -2312840, -1199907, -10116259, 18689014, 13568339, -31836982, 9867150, 12446278, +-5721434, 8987756, 29911226, 2287607, 6528351, -10696079, 6806987, -11295227, -7259032, -6109054, +2048699, 7546258, 10663867, -1748052, 4305168, -3471944, -1996623, -6007049, 7813083, 28192166, +-9423158, -9358197, 10034117, 6974490, 881542, -20857972, 13243532, -16672526, 9305584, 11639898, +1178969, 2798708, -3546032, 19320374, 14650670, -41339, 9813463, -8032126, 12410845, 1883880, +14034343, 20468740, -586800, 5028333, -2823941, -7845832, -650151, 8795019, 10046465, -19985020, +-12125230, 4407710, 21351356, -10629507, 14135274, 9316858, 2657511, -23255638, 2688113, 3354370, +-27569932, 15954730, -15475841, -18512920, -34862788, 8227010, 20994338, -9790378, -19492172, 3782793, +23284092, 14669998, 2515240, -3292629, 244276, 8000451, -7232188, 10755135, 17876728, 16859894, +-1338956, 6999186, 17692580, -3053185, -303869, -2226404, 15231565, -2520609, 3702262, -7425462, +3833258, -4676683, 542240, -63888, -1245004, -3746285, 3309272, 8725763, 3002182, 2273648, +-8170102, 1780801, -8428873, 2258079, 13215077, -5116380, 189515, 1445793, -6290517, -8489003, +-9427453, -2444910, 5980742, -3077344, 1612223, -6012418, -566936, -95563, -17421998, -4793184, +-711354, 3351685, 4487167, -3944391, 6234682, 2954401, 3359738, -5499706, -5004711, -3466576, +1622424, 8037495, 22104586, 16107201, -5177583, -42331196, 5294084, 21626770, 10465762, 4931696, +-18414136, 183073, -12628278, 3299072, -968515, 3832722, 6692633, 9236327, 4086125, -22871238, +13692356, -2923262, 4333622, 17901960, 7044820, 3595425, -6036577, 22135724, -510027, 22004728, +-26101590, -7444252, 8665633, -15054934, -13020193, 1239098, -3217468, -11714523, 1656247, 19485730, +-394063, 1585380, -9836012, -20645908, -13122199, -5674189, 8920647, -1992865, 2253784, -9992241, +-10982231, -5181878, 16899086, -11150809, 9826348, 6773164, 5626407, 2178622, -17030620, -24274618, +-1784559, 16783658, -20216948, 10193568, -17378512, 11343545, -18294414, -608275, -18035104, 26204132, +-23405962, -13776108, 6314139, 4583267, 12064026, 10203232, -5912560, -2923799, -5951214, 3553012, +-50466, 15766288, -18951006, -7243999, -24410446, 13071196, -8544301, 1309965, -825171, 7067906, +-5245229, 2869038, -9868761, -14967424, 10051297, -7564511, 455803, 2885681, 13285408, 5580237, +-9185324, 2366527, -2970507, -11735461, -2025614, 3196530, 4027606, -10572599, -5121212, 12432857, +-1009317, -9800578, -4236449, 14530948, -16399796, -5277441, 3627100, -3496640, 6161668, -877784, +-7068980, -9472550, -2906619, -4037806, -2808909, -2861522, 2955474, -390842, 6437082, -6136972, +3696356, 1570347, -2677375, 6579890, -36390720, -5186173, 10853382, 2627983, -8694088, -13014825, +1171452, -12375948, -1178432, -19092204, 17810156, -7175817, 11138998, -24817932, -14079440, -562641, +30334280, -24902758, -2183991, -19507204, -15501074, -4789426, 18997178, -4488241, 8417599, 8832600, +-10125385, -21645562, 30370788, 13156022, -17418240, 3289945, 2209224, 8302172, -16947404, 15087683, +-1367947, -31877248, 3337190, 6269042, 8175470, -26433914, -6328635, 3221226, 23180476, 4312684, +12907987, -34082712, -20673288, 10314901, -16106, 22063784, -5957120, -3857954, 1685238, 11155104, +10314364, 3821984, -43211664, 12048994, -5038534, 9761387, 23019950, -7413114, -2052994, -26446798, +8536248, 11764452, -13839995, -8356933, 23829552, 37484864, 9844065, 5987185, -10653130, -4566087, +-20548198, 1415729, 258235, -25531970, 9259413, -925029, -7421167, -2100776, 11950210, -9888088, +-6539625, -1306207, -2705830, -1091995, 10558103, -4731444, 227096, 5886253, 2435783, 8163659, +7055021, 5156108, 3794067, 9800578, 11728482, -15867757, 5005248, -9986336, 7776575, 948114, +-9887015, -6942815, -3828963, -3507915, -6471979, 5787469, -3281892, -6662568, 10812580, -1942399, +-3379603, 5899675, 11139535, -287226, -3946538, 2809982, 10400800, 10989748, 7124814, -3947075, +1939178, 1818919, 9370545, 5445482, -30714384, -19923816, -6546604, 157840, -17288854, 14591615, +-36384280, 2274722, -22150756, 12224014, -7910256, -24674588, -1745367, -6298033, -8382703, -28172838, +-20431696, 6463389, 23068270, -14691473, 28363428, -23289998, -15151571, 5567352, -1852205, 13131863, +-7432978, -7822209, -11065983, -2758443, -38685844, -10805601, 1593970, -1242319, -6067178, -14954002, +12750684, -13182328, 21364778, -6026913, -2152852, -14375792, -13200045, -25484188, -10836739, 10024991, +4398584, -1116155, 2160369, -8877697, -6585796, -11576011, -9634149, 5730560, 8154533, 4060355, +-22073448, 26203058, 3936338, -10755672, 21061982, 15163382, 25014964, -4258997, 14775224, -33272038, +-17776870, -31419296, 32803350, -10059350, -22160958, -21348672, -45699524, -18920942, 32339494, -1730872, +-15770046, 12037183, -31058520, -20692078, 8315057, -1504312, -25853556, -25310780, 99858, -14406931, +4346507, 5817533, -19131394, 19366544, -11227581, -16751446, 1882269, -9807021, 27599996, -10174778, +12618077, 2255932, 16928614, -8118562, -4450123, 1890323, -7156490, 15569, -15479599, -11719892, +-2683818, 6894497, 690416, 11277510, 4806069, 8435316, -6757594, 227633, -13440563, -3118146, +-4621922, 4389994, 13526463, 6336688, 5635534, 6532646, 5796595, 1707786, -17646410, -5095442, +-12084427, -2852395, 2406792, 8553964, 40581000, 51857436, -4583804, -22624814, -5130339, -8384850, +-22818088, 10234370, 980863, -16512002, 49631032, 17353816, -11323681, -33927556, -2702071, 8479876, +9359807, 10242960, 23951958, -6559489, -11273752, 11291469, -42378444, -28370406, -10774462, -2866891, +4993437, -22643604, -20449950, 22184580, 17913234, -13273060, -25460566, 16601122, 916439, 29146722, +-23152022, -5260798, -7598871, -1318555, -18196166, -27644558, 23804856, -17095580, -10418517, -21107080, +-4277251, 14150843, 13661217, -8446053, 2342905, 2579128, 18109192, 27078158, 20365662, -34467648, +-16100759, -20415054, -4616553, 11880416, 4837744, -23550916, -33442226, 28876138, 2363843, -28159954, +-46304580, 23687282, -5550172, 12767327, 12302934, 12479027, 2218888, 9218074, -17845052, -6940131, +13214541, 2334852, -8039642, 5257040, -1607928, -24817394, 13123273, -31520228, -1461900, -1527398, +-4886599, -11316165, -3793530, 13881871, -329639, -3167002, 7742216, -10196252, 31351650, -2427194, +3386045, -2286533, 943819, 7649337, 169651, 7364795, -15023796, 3375844, -2212982, -10966662, +1789928, 5201743, 10910291, -5200669, 3544422, -26215406, -7869454, -1487669, -13007845, 11604465, +-862215, -3223373, -6655052, -10851772, -15180562, -22392886, 7490423, -2319819, 17090748, 19314468, +13103408, -13309030, -17619566, -23412940, -7976828, 21305186, 18254148, 2884608, 8953933, -7611756, +-12651900, -10366440, 814433, 2962991, -9757092, 4614406, 18109730, 22435298, -27785218, -23295366, +66279936, -5314485, -6478422, -9914395, -20917028, -2248952, 23911694, 38454988, -17696340, -10654740, +-3901978, -17446694, -4356708, -9819906, 15265924, -15760382, 17473538, 8375186, -6011344, -21994528, +-1627793, -9035001, 33062122, -18128520, -459562, 99321, -3313567, 15008226, -9548786, -1203128, +6858526, -4481262, -32321240, 16525424, -14760729, -17013440, -3954591, -18147848, -10601053, -33013266, +31609886, 1512902, -21113522, -38689064, 22524420, -22793928, -22360674, 368830, -17428978, 7912404, +14261976, 44146896, -12585328, 17333414, -3768834, -21234318, -18170932, -5209259, 66242356, -58402964, +-4349192, 60978872, -55790016, -21049098, 31304942, -4540854, -25259240, 58982248, -29237452, -12015171, +26944478, 6804839, 11442330, -17352742, 19422916, 27567784, 12764643, -6913824, -1916629, 27846958, +-4155918, 15982647, -495532, 11192685, -16003585, -1948841, 7187628, 4585952, 2929705, 862215, +994822, 11668889, -5438503, 3112241, 4135517, 4038880, -25070260, -10124312, 7834557, -20970714, +6200859, 12193949, -9082245, -9264244, -7429220, 5200132, -10385231, 12236362, 10074383, -1177358, +5761162, -7344931, -15200963, -14472966, 28927142, 5418101, 17971216, 3912715, 3396246, 11696807, +-10124312, -2157684, 18261128, -10781442, -25393994, 19082540, -2749853, 11245835, -3125126, -7248831, +-7377143, 30946850, -40259412, 35478040, -6465000, -22613002, 18916646, 6415608, -3923453, 3686693, +2272575, -4658966, 6680285, -8061117, -10328859, -4901095, -14176076, -11882564, -26322244, -10304700, +22008486, 20710870, -32642826, 10444287, 16807280, 14003204, -5893232, -32259500, -3226057, -16154983, +-37682968, 23185844, 59471876, -34701188, -4060355, 42130944, -12411919, -15529528, 34176664, 25256018, +12305081, -14301167, -28155122, 8904004, -11673184, -17956184, 62213140, 45656576, -38080252, -28167470, +33443836, -62001076, -22024056, -17833778, -10975252, 42698956, 28302760, 18456548, 20345796, -72784128, +-25606058, 68602440, 39628052, 7792145, -18756660, 23379654, -24637544, -49582176, -33136746, 23603530, +-18291728, -4254165, 27514634, 51201380, -6561637, -29462938, 3385508, 20002200, -35525820, -13430900, +36294084, 32564442, 32683628, 22536230, -6933688, -21336860, -10739566, 27611272, 7744900, 11382737, +-5738077, 2751464, 12404939, 724776, -5434744, -6365142, -8362302, 5834176, 4160750, 26458072, +7176891, -5716602, -11064373, 2246268, 983011, -4354023, -9761387, 2259690, 20423644, -22497576, +-6979322, 19568944, -4931160, -932008, 12906377, -5494337, 9452149, 3733937, 11164231, -22752590, +-3575024, 4276177, 25067040, 5732171, 11827803, 10197326, 5498095, -5313949, 8021925, 11610907, +-13967234, 6276021, -61499636, 26322780, 105764, -6488622, 31217970, -5553393, -23900420, 11709691, +10685879, 30495342, 17223892, -16831976, 716723, 4523675, 20870856, 4650913, -24391656, -1165010, +-1551557, 4705137, -22694608, -24813100, 35451196, -13075491, -37393060, 18909668, 32902670, -18847390, +-6476274, 1916629, 22514756, -27296128, -35650912, 9483288, 29848412, -6767258, -12921409, -7684234, +-7443179, 12771622, 5429376, 7515119, 75459888, 3891240, -9783399, 741419, 2254321, 40529996, +1175210, -14810658, 9084930, -32218160, -18852758, 7966628, 56371, 34770980, 27752468, -18347564, +-5375689, -17368310, 716186, 12250320, 3103114, 3568581, 12499965, -9378061, -37241124, 9113921, +25006374, -12210592, 22063784, -34765076, 16130823, 10011032, -30222074, 4791573, 540629, -13533442, +1327682, -6012418, 14949171, 14239427, -25313464, -15983721, 33683280, -26145076, 12370043, -2825552, +-9917079, 6976638, -1024350, -15575162, 8609799, 4788352, 6165426, -921271, -2574296, 1221381, +4677757, -6235756, -5466420, 4111358, 3304977, -3673808, -252329, 6969122, 12585865, -7933879, +-5038534, 1094680, -2201171, 3877282, -3059627, -2216203, 2967823, -689879, 7610682, -2936147, +3798362, -10331007, 6020471, -7390565, 6367289, 10451803, -881005, -393526, 1643899, -13316546, +10450729, 21100100, -39589936, -130214280, -154093232, -13858249, -106873816, 41982232, 260532176, 140152832, +211603376, 223013488, -24254218, -64273648, 19048716, -162438880, -198572448, -61350924, -218593968, -175475184, +44484588, -126225328, -34413424, 251605088, 91071560, 177882512, 307292576, 182902800, 81787448, 62261456, +21759914, -136901008, -170455440, -56240448, -232802800, -232939696, 30671436, -174201184, -142995568, 85938536, +-146616768, -150730272, 113749528, 46227268, -20840256, 268606176, 251486448, 160610832, 340967264, 321362336, +109740176, 127911640, 99643240, -161809136, -162257424, -205122800, -406199232, -479413376, -344867072, -343273120, +-253272608, 8677445, 23332946, 167186432, 289026080, 356322304, 324591072, 376766880, 322743168, 190393760, +127935264, 42631308, -63723356, -143001472, -203539568, -174811616, -253581856, -283915584, -235557488, -275279488, +-206656112, 32745904, 66126392, 160399312, 321615200, 256187280, 197332816, 149243664, 58674084, -48759152, +-39924944, -80635864, -101040720, -77058696, -87799872, -84696752, -36244156, -34275988, 1788317, 52346524, +37096168, 73486888, 88126288, 15408732, 63887640, 61531848, -17208860, 20471962, 14237817, -46772732, +1871532, 15173583, -54303420, -59117004, -82729664, -169825696, -190070560, -147715744, -141366160, -46255188, +69153808, 124996968, 203141216, 306776640, 330991104, 307147616, 214999088, 65689376, -69609072, -148442128, +-221878544, -273578688, -269337952, -210184432, -144614768, -68605664, -21357798, 8660265, 24625194, 62510564, +102779640, 106274672, 98368712, 101282848, 71738304, 64864208, 55816320, 22701050, 4789426, 14002130, +11826192, 7431367, 4471061, -12984760, -34911104, -52956948, -76360760, -96848832, -97089344, -78134584, +-60030220, -31525060, 5239860, 32794760, 47868484, 55713780, 49017388, 43458088, 47481400, 46005004, +36797132, 31502512, 26009786, 17885318, 9236864, 511101, -17603998, -32460290, -35913980, -33692944, +-30681636, -28620052, -26534844, -19709068, -7157026, 732292, -2668249, -8731132, -4916127, 675921, +3926674, 7726110, 8959302, 12268574, 19513648, 26594974, 26102664, 26889716, 23726474, 15349139, +9273908, 5373541, -2098629, -8809515, -13642964, -24398098, -33830920, -37126236, -38620884, -33381022, +-21327734, -5653251, 11912629, 27623082, 35036196, 34208876, 26719528, 17685602, 8708583, 462246, +-4380867, -6918656, -7317551, -6398965, -6178848, -6049462, -5478768, -4278325, -3321084, -1988570, +-689342, 200790, 984084, 1385127, 1319092, 1007170, 503585, 139050, -35433, -62814, +-51540, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -8851391, --10554345, 5538361, 401043, 8317741, 3059627, 3714610, 2408940, 3423089, -24696, -33286, --1786706, -5329518, -3050501, 1511829, -200790, -922881, -573915, 2948495, 2304250, 105764, -2659659, -2349884, -6079526, 2031520, -1364189, 761820, -3068754, 2532420, -2500745, -1211718, --950262, 4478577, -975494, 21475, -1776506, -435939, -4912906, 1746441, -780073, 2756832, --2304250, 386010, -1056562, -3927211, 1328219, -330712, -1019518, 1844152, 3344706, -615254, --1953673, -5776731, 592169, -3408594, 1672353, 121870, -2190970, -27380, -906238, -753230, --4154307, 2789045, -3677029, 2127083, -1410360, -2433099, -2063732, -4427575, 2534568, 290447, -1293322, 2761127, -2818036, -4543539, 3011846, -4352413, 205622, -2881386, 1001801, -2217277, -2066416, -1093069, 1122060, -1906429, 419833, -854699, 1244467, -885300, -970663, -947577, --883690, -1706713, 321049, 487479, -241055, -1334124, 1027034, -995359, 213675, -648540, --1133871, -391916, -362388, -142808, -197032, -126165, -923418, -486942, 219580, -545461, --248034, -270583, -630286, -165356, -452582, -601832, -505732, -15754477, -202937, -2121177, -4103305, 43487, 1560684, -1335198, 2027225, 365072, 1771137, -1854889, 10121627, -2243584, --1453846, -4394289, 1435056, -5298379, -1712618, 356482, -2580202, -73014, 3702262, 2094870, -1394791, 2470143, 3597572, -4442607, -1699733, -125091, 2281702, -4195110, 4035122, -3517578, --1769527, 3204046, -629750, 708670, -2594697, 2956011, 3124589, 3323768, -5180805, -1620276, -5576478, -117038, -851477, -1295470, 6082211, 3928285, 4704063, 41339, -1109175, -1452773, --340913, -171262, 686658, 1777580, -5892159, -577136, -2746095, -3525631, -459025, 956704, --3057480, 769336, -2336999, -903017, -945430, -119722, 2037962, 1838783, -1066763, -746787, --1334661, -4827543, -1131187, -3012383, 79457, -3958349, 1060320, 12885, 3950296, -1414118, -543313, -3475166, 299037, 430034, -1596117, -1693828, 1678259, 3758, 447213, -210990, -1178432, -360240, 490163, -250719, -270583, 1376537, 656593, 545461, 221728, -209917, -850940, 5290326, 6274947, -4456566, 513249, -3809099, 5745056, 1009854, -2451353, -3454228, --3061238, -685584, 680752, 1481227, 7661148, -4646081, -784905, -1880122, 2968359, -8675297, --1064615, 5436355, -207769, 4558571, 1985886, 3644280, 3797825, 1616518, -810138, -4105989, -1278290, -1192390, 456877, 6365679, 1562831, 5452998, -2954938, -1568737, 363462, -7479686, -811212, 5480915, -1686848, 454730, -4694400, 3439195, -135291, 1492501, -5545340, 3166465, --3743601, -2119566, -3907883, -4587562, 2549600, 820876, -1523640, -2380486, -2247879, -1676111, --1152662, 2495913, -2595234, -4661114, -7136625, 6484864, 4970351, 205622, -7139310, 2085744, --3453154, 2723546, -2350958, 440771, -4395899, -2800319, -5709086, -2623688, -845035, 5453535, -3235721, -6229313, 2618856, 69793, -588947, 2627983, -418222, 2072322, 4333085, 161598, -872952, 2839510, 549756, 512712, 2823941, -574452, -126702, 151398, 324270, 541703, -664646, -710817, 784368, -671089, 162672, 72478, 688805, 99321, 1771137, 1518271, -66035, -159988, 1736777, 838592, -1388348, 181999, 596464, 26716844, -9944460, 11959873, --9532143, 799401, 2826089, 2793339, -7872138, -2685428, -2655364, -13170517, -89121, 677531, --4757213, -785442, -74625, 9385577, 1720671, -6578280, 4772246, 5210332, 1149441, 9514963, --7107097, -2612951, -3806952, 1994476, 7618735, -572841, 463320, 2822331, -1384053, 3394098, -1523103, 8706972, -1335198, 3401614, -5734318, 5196911, -4021163, 5804649, -122943, -6107444, --933082, 8778376, -407485, 5933498, 3554086, 5705864, 491237, -4548371, -3703873, 76773, --2757906, 4681515, 3097745, -4668630, 623844, -3651259, 6185827, -1704565, 4959077, 5925445, -1023276, 6109054, -299574, -2986613, -1027034, -3801046, 156766, 8033737, -5063767, -5183489, --1970316, 2269890, -3553012, -2206003, 1544041, 3852586, -1620813, 1406602, -7820599, 1908039, -492848, -571768, 2720325, 160524, 722628, 1844689, -250719, -1022739, 828392, -1810329, -551903, -761283, 214212, 329102, -289373, -637803, -1572495, -134755, -1254131, -786516, --535797, -2610266, -22202296, 2502355, -6493991, -4623533, -7129109, -8650601, 3498788, 7860864, --1115618, 3097745, 1293322, 4070019, 965831, 361314, 2472828, -4702989, 11118597, -506269, --6385006, 7329899, -2165737, 3151969, -7206419, -4446902, -5091684, 2298344, 1402844, 5752572, -222265, -3457986, 642635, -3079492, -3417720, -3771518, -1289564, -5278515, -2667175, 5060545, --4598300, -255014, -3588982, -5605469, -2488934, 785442, 1860795, 3679176, -2820183, -2547989, -3601867, 696858, 1378685, 1020592, 2242510, 3418257, -5400922, -1745904, -518617, -7545721, -2051921, -462783, 4493073, -4393752, -3382824, -4102231, 747861, 4799626, 3684545, 8410620, -5620502, -5080410, 2117419, -2262911, 3968013, 2542084, -5550709, 4088809, 1101122, -6111202, -816044, -1054951, 548145, -1088774, -4207458, 845035, -3015604, -3115462, 1182190, -1682017, -745714, 2338073, -1508607, -1955284, -2097018, -3078955, -578747, 2499134, -637803, 2596845, -25770, 1777043, 1163399, 958315, -1126355, -373125, 433255, -1028645, -1228361, 358630, --1188095, -387084, 317828, -2144263, 1236951, -1064078, -392990, 324807, -88047, 246424, -704375, -916976, 622770, 1555852, -28246926, 7887171, -8353175, -6940131, -4966056, 1060857, --1374390, 16805670, 1744831, 4102768, -1762010, 171799, -6761353, 6921340, 2087891, -883690, -1466195, 9004399, -4358318, -1429150, 2149631, 726386, 4561256, -3776887, -1653026, 5018133, -1896765, 4631586, 634581, -4687420, -3049427, 2816425, -375273, -1518808, -2905009, -1619203, --106837, 8541616, 2218888, -1414118, 266288, 734439, -2469606, 6185290, 4737349, -1336272, --6293738, 1708860, -3292093, 5891085, 4575214, -4392678, 1843078, -5720360, -5113159, -4459787, --5652177, -1872606, 1348620, -3340411, 367220, -3700651, -3147137, 6765111, 4314295, -5531918, --7536057, 963683, 6566468, -4899484, -3636227, 5588826, 4391067, 6359773, -3954591, -69793, -1843615, 2685428, 7101729, 2005750, -844498, -163746, -5045513, -663036, -18790, -4287451, -394600, -1187559, -1932735, 193274, -521302, 2274722, -448287, -737661, 1100585, -550293, --1759863, -1095754, 454730, 1859184, -768262, -545998, 122407, -324270, 3360812, 703301, -4336843, -2910377, 839129, 330176, -1712618, 67109, -81068, -2176475, 645856, -327491, --2464774, -2238752, -1163399, -2135136, -1652489, 705448, -1057099, -14930917, -1480690, 2512556, -7260106, -1416266, -3805341, 1700270, 10669236, -13439490, 3114925, -2729452, -2495376, -6051609, -3635153, -10771241, -7010461, 3699578, -5630702, 3402688, 15341623, -2718178, 6200859, -7218230, -7408819, -1928977, 2209761, -6475200, 3021510, 1833414, -3468186, 1520955, -699543, -3333432, --221728, 4209068, 6605123, -5177046, -8248485, -6541772, -6054830, 779000, 4844186, 12824235, --146029, 8633958, 9025337, -8402030, 6456947, -12355010, -4513474, 774705, -5491116, -5126581, -3426847, -11966316, -2361158, 8311836, -3587372, -3138011, 1101122, -3663070, 3403762, -3635153, -5837935, 7526930, -2085744, 2331094, 316217, -7646116, 659814, -4953708, -3402688, -6045167, -3433826, 2609193, -5789616, 453656, 4320737, 3995930, 5117991, 5253282, -802085, -5031554, -4159139, 2153926, 2493229, 1336272, 3009698, -363462, -92879, 416612, 1241782, 1431298, --2046552, -657667, -1649804, -1128503, 2418604, 2042794, 2334852, -4256850, 871878, -559956, --1735167, -2075543, 2188286, -1381906, -2302103, 549756, 555125, -798864, 5150740, 1667521, --1001264, -1178969, -2381023, -703838, 2110440, 3157338, 812823, -38655, 3230889, 35344896, --1748052, -14031121, -1790465, -651761, 1304060, 4420058, 1782411, -1658931, -1488206, -7084012, --3372623, 3913252, 8611409, -7121056, -4489852, 5735929, 437013, -2113124, 2281165, -599685, --8231842, -8386461, 11337103, -1093606, -751619, -1932735, 5811091, -485868, 590021, 3684008, --6251862, 6573985, 2724083, 1045288, 2499671, 6571837, -15902116, -7139310, -3884261, 14603963, -1868848, 1066226, -4526359, -4994510, 4361540, -688269, 5060545, -1836099, -10166724, 1060857, -1223529, -1564442, 4915590, 2187749, 1308891, 8086350, 19760070, -1591285, -1686312, 7505456, -2274185, -2361695, 5159867, 15363635, -1741609, 2920041, 5558762, 4454418, 3990562, 4065724, -4560182, 3500935, -4080756, 6117107, 10963978, -2561411, 4196183, 37044, -1395328, -7619272, -4724464, 1770600, -631360, 2277943, 2621541, 606127, 292595, -2582349, -2957085, -1182190, --5878200, -2628520, -3987340, 5076115, 2486249, 1916629, -838592, -788663, 288837, -3393561, --3758, 1219234, -4669703, 4064650, -2041183, 706522, -1435593, 202937, 1537061, 1837709, --3640522, -3611531, -3001645, 385473, -629213, -1015760, -286152, 2499671, -674847, 244276, --1501091, -3212099, -1750199, -105764, 7136625, 7946763, -10135049, -2946885, -8603356, 8507793, -15950972, -7649874, -1795833, -8776229, -3812320, -10618233, 7560753, -6487548, -2633889, -700080, -75699, -4236449, -5195300, 9507984, -8641474, -3210488, 991601, 6481106, 6943352, -9982041, --2923799, 3812320, -8563628, 4848481, -6791417, -2790655, 2513093, 179315, -3710852, -1056562, -2058363, 11110007, 1387274, 2491081, 14496, -9542344, 10412611, -5126581, -7785702, 6215892, --5545340, -6316287, 8213051, -3735011, 1065689, -1840930, 1118839, 10746008, -1825361, 2385854, --9402220, -770410, 10988137, 2421825, 10887742, 9271224, -3040837, -2414845, -12617540, 1907502, --2101313, 8345659, 10293426, -5939403, 2582886, -18605798, -5052492, 6114423, -6389301, 9584220, -674310, 2039036, -3379603, -760746, -4424890, 746251, -3040300, 6751689, 6713034, -347892, -2308008, -148176, 3809099, 1584306, 2769180, 5694590, -1694902, -6508486, 3000572, 1421097, -4130148, -1117228, 4380330, -939524, -1471563, 1042066, -2575370, -1790465, 483184, -4596152, -1308354, -1636383, 4066797, 1683090, -255014, -914828, -2613488, -4086125, -279173, 485868, -1679332, -1540283, 946503, -3850438, -5369, 163746, -1953673, 2475512, 303869, -6442, -1129040, -1306744, 248034, -44560, 6364605, -8176007, 2750927, -7647726, -865973, -10317585, -16855062, -5007932, 1114007, -5368709, -15441481, 8846559, 3076270, -11533061, 7084549, -5214627, --3847754, 3987340, 15953656, -8014409, 15410880, -338229, -10888816, 422517, 3575560, -9584756, -10510859, -5564130, 7774428, 16938278, 1627793, -7959648, -2250563, -935766, 3859028, -6773701, --3713536, -940598, 8333847, -3016141, -3390340, -11138998, -407485, -13163538, -2451353, 14855755, --3368865, 8448201, 775778, 2234457, -19534586, 242666, -12509092, 10030896, 17453136, 5369783, -4366908, 1063541, 2595234, -10215580, 3569655, 5426691, -4563940, -1290101, -4047470, -2582349, -7858180, 162672, 9536438, 29268592, 10677826, 2908230, -10075993, -9362492, -6076305, 5741835, --9976135, -877784, -923418, 2026688, 5619965, -5475010, -1044751, 5434744, 5965710, 1221381, -1007170, 4057134, 5136781, 4290136, -60130, -961536, -977105, 446140, -2137283, -2662880, -2323577, -1349694, 3617973, -4444755, -1412507, 3063386, 2602213, -269509, 2351495, -2290291, -1069984, 1610613, 2184528, -2513093, -2470680, 3470334, 2480344, 1946694, -898722, -1753420, -841814, -4946729, -1297617, 790274, -2632815, 1200980, -1825898, -1287953, 563714, 399432, --412317, -981937, -3278671, 30987116, -16178068, -63888, -7841537, -15140297, -20332912, 6126234, --6255620, 6463389, -19224810, 4228932, 7377680, 6669011, -7854422, -17626546, -13795435, -11531450, -527744, -6556268, -12763569, -8677981, -4226248, -10367514, -7116224, 2136746, 13914620, -20401, -2291902, -156766, -11567958, 7662759, -731218, 2469069, -2309619, -7576859, 7063074, -9528922, --13405130, 12619688, -13069585, 2945811, 221728, -18513456, -10889353, 7634305, 4832, 9320616, --5667210, -19690814, 258772, 963683, 7789460, 8224863, 18997178, -10550050, -38102804, -13186623, --12773770, 8858907, -24707874, -8221105, -3839701, -22707492, -7313793, -147640, -4033511, -4065724, -5350456, -5952288, -206695, -5570573, 5735929, -13262859, 5208722, 11083700, -13323525, -6637335, -7073811, 5525476, 4886062, -13758928, 3670050, 399432, -1632088, 7654706, -1522029, 6335614, -5740224, -978716, 2025077, 1407676, -1340030, -4425964, 7993471, -2276333, -5026723, 398358, -136902, 4323422, 1802276, 244813, 1627793, -3802657, -3770981, 695785, 1800128, 2684892, -4735202, -278636, 2358474, -200790, 2127620, -4464082, -1682554, -3024194, -2639794, -257698, --279710, 1966021, -4967130, -2179696, -3624416, -2587718, -5216775, -6614250, -5729487, -409633, --182536, 992674, -3376918, -4562866, -17725330, 7021198, 8766028, -2913062, -3416110, -8823473, --9756555, 22551800, 8203925, -21007222, 7272990, -11430519, -1100585, -10378788, -21616034, 6382322, --11272679, -4671851, 878858, 678068, -5518496, -18226230, -11352135, 9020505, -11228118, -250719, --9938017, -15146739, -5950677, 16956530, 2676302, 3079492, -14760192, -4860829, -3052648, -1838246, -5945846, 7489349, 9500468, 11902965, -5811628, 6752763, 2280628, -6723235, 4139275, -11361799, --10042707, -8526584, 3668976, -9862319, 423054, -14882599, -13217762, -6655589, 15489800, 12276627, -11752641, 13172665, -12070469, 16476568, 474594, 7670275, 22391812, -4468377, -4206921, 3811784, --10888279, 4617627, -5155035, -13805099, 1747515, 11579232, -13571023, -9450539, -1730335, 12438225, --10334765, 1348083, 3699578, 7554311, 1767379, -2871186, -7078643, 2061584, 5140539, -2687576, -578210, -3428995, 1068910, -3248069, 1284732, 414464, 1838246, -1113470, 1239098, 2674691, -6236830, -616328, -239981, 710280, 2846490, -4512400, -2066416, -4985920, -1560684, -969052, --6047851, 1313723, 5261872, -289910, -7188702, -1007170, -766115, -5951751, -7047505, -9907416, --4320200, 4067871, 495532, 2936684, -1669132, -1616518, -3772592, -329102, -9029095, -1414118, -5171141, 8666707, -588947, 2752000, -5199595, 851477, -3163780, 4544613, 1742683, -8490613, --19796042, 22637162, -17690970, 23441394, 13120588, 8924942, 5017596, 9206799, 10005126, 9244917, -25197500, -8828842, 1775969, -1692217, -4349192, -774168, 3123515, -2350421, 4847408, -1644973, -7881265, 6601365, -1419487, -4376035, -25116432, -8959839, -18218178, -853625, 9605157, 9677098, -3082713, 4923643, 7241852, 5969468, 7019587, 17974438, 26831198, 17985712, 3631395, -3428458, --5182415, -7719667, 9388799, 9543954, 10721849, -7990787, -6281927, -9907416, -1632625, 13056164, -128312, 15648713, -9498857, 8373039, 5057861, 14041322, -29389924, -21069498, -8617852, -11834246, --12081743, 3606699, -4930086, 18479634, 5494874, -20646982, -1697049, 33356326, -11248519, 10388452, --5039608, 13696114, -6385543, -4194036, 497142, -5689221, -7441568, -557809, 5616744, 8235600, -5763846, -2190433, 6499896, -1750736, 3011846, -8527121, -5779416, 5425618, 3474629, -8574365, --3716221, -3654480, -1135482, 2100239, -2238752, -4218195, 1944010, 353261, 1414118, -700617, --2402497, 3767760, 1254667, -2181844, 5040144, -733366, 1494649, -967978, 5943161, -5066988, -5295695, 2283849, -4940286, 3244311, 195958, 841814, -5150203, -15129022, 5679021, 94489, -1114007, -1767379, 5774047, -1433445, -2670396, 1802276, 4516695, 3689377, -2206003, 4583267, --14397804, -7163469, 12100533, 5334887, 8950175, 23195508, 2066953, 15526844, 22664542, 15760919, --10125385, -22877680, -682363, -10460930, 24850144, 7205345, 19435264, -2689187, -10276246, -3748433, --11221139, 4535486, -8612483, 1117765, -9603010, 5112622, -6990596, -2918967, -15476915, -15371688, --1435593, -22049288, 12202539, 8396661, -6518687, 11373610, -5291400, 4452808, 12699681, -13929653, --18221936, 3302293, -3903589, 30798674, 13167296, -33716568, -9012989, -9547175, -17313550, -18403398, --37602440, 6674379, -13408351, -3513820, 5508296, 1392106, 7866770, -1479079, -4357245, -28563144, -3504693, -12981002, 3618510, 16764868, 3636227, 11242077, -16916266, -22598508, 4679904, 14013941, -9547712, 5262409, 9078487, 14565308, 18341120, 18737332, -16543140, -10035728, -11883101, -8592619, --13890461, 19761144, 11712376, 11135776, 3175055, 8511551, 7429757, -711354, 10463614, -15946140, --5472325, -1920924, 1443109, -3469260, -11157788, 621160, -2145336, 1444183, 3812320, 11521250, -789200, 5373541, 5567352, 832687, 5904507, 155156, -3324305, 667331, -8503498, -3562675, -4794794, 6617471, 2220498, 1173063, -10422812, -1077500, 554588, -5151277, -3346317, 1515587, -3590593, -9793062, -10572599, -4975183, 3853660, 3058017, 5704791, 1243930, -3221762, 2338073, --10923176, -9995463, 40831180, 26975616, 37464464, 2448668, -7403987, -25419764, -7485591, 4275640, -5922760, -6045167, -19641960, -7086696, 32370094, 13397077, -4457639, 9928354, -713501, -11866995, --3455838, -7736847, 22074522, -1675574, 1309965, 9540733, 641024, 10824391, -97711, 15314243, --14059039, 17642652, 3582540, -8186208, -4952098, -9069897, 15922518, -22022444, -23791434, 15075872, -24908126, 1189706, 17197586, 23656680, -26601416, 8879845, 5449240, -1439351, -231928, 3973919, --9979357, 18579492, -11252277, -8928700, 7505992, 967978, -2003602, -4293357, -5539971, 2699924, --17570712, -5241471, 14164265, -17317846, -3988414, -11689827, 445603, 35116728, -11018739, 2280091, -9395241, 197569, -8075076, -21896280, 21422224, 10016401, -44146896, 10966125, 11115912, 8240969, --9896678, -4586488, 22557168, 1037772, 1665374, 5808407, -15684147, 625992, 9985262, -4052302, -5771363, -1228898, -5095979, -13053479, 1996086, -1694365, 12125230, -1104344, -513785, -8684961, -9606231, -3206730, -3337190, -13778255, -6937446, 4878009, -8886287, 760209, -4379793, 5546951, --5203353, -11078868, 5609764, -11936251, -3280281, -5411122, 558346, 754304, -4491999, 11949136, --1476932, 16103443, 9805410, -1590212, 1686312, 10313827, -7134478, 1870458, 1219234, 9900973, --8942122, -5270462, 454193, -18234284, -43700756, 38878044, 23174570, 12326556, 8668318, 19206556, --44100188, 18107582, 20364588, 8722542, -28232430, 15710453, 28540594, 13230110, 31470836, 11481521, -537945, -1247151, -987306, -5358509, 13334800, 22362284, 21296058, 7446937, -6544457, -11105175, -2654827, -10110353, -11840688, 12458090, 8564165, 2374043, -11866995, -11543261, -2538326, -10035191, -5118528, 25701084, -4570919, -8307004, 8672076, 4659503, 7612293, 8977019, -1968169, -5184563, -20645908, 13663365, 6748468, 9113921, -1666447, -20517596, 4757750, 13662828, 1768453, -15270756, -20434380, 5331128, 28425704, 1057099, 25553444, 2734284, -8378408, -2719251, 6127845, 36381056, --4597763, 13078175, 8963060, 17190606, 9003325, 81068, -1105954, 11215770, 51760800, 2423435, -20765630, -17547088, -13107703, 6577743, 8137890, 10091563, 4148402, 1658394, -25440702, -10061498, --26676042, 1458141, -4582730, -8808441, -7460895, -2962991, -11255499, 1416802, -1169305, -11829951, -8459475, -13778255, -6696391, -12439836, -8509941, -814970, 1367410, -9949829, -11552925, 2781528, -7340636, 8579197, -1747515, -3278671, -14862734, -19422916, 1940252, 2381559, -8857296, 17685064, -17107392, 25323128, 8878771, -5564667, 3457986, 7827578, 9582072, 11511586, 1696512, -11989938, -3025268, 15389405, 7876970, 803159, 6154152, -28472948, 31227096, -463856, 27638652, 695248, -1881196, -25073482, -7707856, -11271605, 19173808, 4896263, 8500277, 5087926, -19262928, 1930588, -1547262, -16893180, -24217710, -24720222, 8383240, -9171366, 22544284, 1327682, -7152731, -5819681, -4860293, -8694624, 1451699, 6645388, -9490267, 5365488, 7592429, 2630668, 2163053, 17093970, -28659244, -5572720, -242666, 14450954, 11777337, 17301738, -12822088, -4968204, 5173825, -17104170, -1645509, 1546188, -22816476, 29427506, -1477469, 14884209, 12753905, 9040369, -17379048, 1711545, -14761803, -11978664, 26307748, 7319161, -9698573, 21882322, 16371878, 11553999, -36772436, -7386807, -7231651, -12438225, 1893544, -20371030, -5212480, -30919470, -8969502, -4636417, -8667781, -34267396, --3556770, -9270687, 51552492, -7318088, 10405632, -5181878, 8144869, -4206921, -8559333, 5718749, --7202660, -950798, -3940096, 14025216, 4845260, 6253473, -22457310, -19800336, -15059229, -6045704, -3796751, -27885076, -4674535, -2085744, 1939178, 10446971, 7606924, -656056, 10713259, -9630927, -48855, 787053, -16335371, -22109954, 4217658, -6318971, -20890720, -5463199, -9945534, 1633698, --22334366, -2297271, -9870909, 13301514, 2684, -9205189, -3663070, 4319664, 4941360, -1860795, -9756018, -9842454, -6520297, 13214541, 12097312, 21910238, -7486128, -1610076, -3106872, 5869610, -15591268, 13636521, 10031433, -8127689, 6086506, 17149804, 16530255, 7013682, -21041582, -24319716, -10110890, -3746285, 7178501, -4850092, 19757924, -15559593, -3604551, -5663988, 17169668, -13717052, -30464204, 37598680, 38320772, 1945620, -7682086, 5858873, -5528160, 9055939, -2142115, -651761, --11860015, -31580894, -10865730, -30261266, 16608102, 15666430, -18877456, -14186277, -18925774, -9038222, --3161633, 40247600, -24696, -21168284, -22797686, -1762547, 27930172, 13174275, -57512832, -12042551, --10590852, 7088307, 20910586, -25163676, -8359080, -15147813, 5956583, -34185256, 16281147, -6035503, --1286343, 8977555, 868657, -16940962, 32821066, -3735548, 15339476, 35310536, 72653664, 43499428, --1599339, 24269250, 36791764, 47617764, 51496120, 14506252, 31336618, 8739722, -123480, 19191524, --15934329, 31728534, 13222594, -14324253, -48399988, -35185444, 3999152, -13972065, -10360535, -9190693, --5850819, -6228240, -20263118, -13251048, 184147, -3389266, -1632625, -6540162, -2301029, -10602127, -12202002, -21602074, -9263708, 5848135, 3362960, 1606855, -6054294, -6962142, -4320200, 3988414, --3955665, 10673531, -13452911, -16465294, -16769700, -10277857, 11770358, 13553843, -5756867, -2692945, -4467303, -2918967, 22377854, 4707284, 1442572, 18121540, 10945187, 10257456, 25479894, 16876000, -19022410, 5864778, 8859444, 21271900, 7709467, 16466905, -15955804, 8644695, -7516730, -16585553, -18587008, -23964306, 39470212, -4922570, -7555921, 506806, 31369368, -21355652, -4009352, -1140314, -146029, 11268384, -8477729, 16349867, 5455682, -3319473, 3546032, 1701344, 12703976, -40009232, --12865575, -1409286, 3897146, -4125316, -29337310, 23627688, -1649804, 3076807, 8286066, -19106698, --8973260, -44097504, 11285563, -10462540, 8058433, 31906776, -9168145, 6561637, -4510790, 15132244, --26613764, -35249332, 30348776, -3043521, 2244121, 5053566, 30515206, 22383222, 26424250, -610959, --36342404, 21170430, 9583146, -8630200, -13141526, 20238422, -4168803, 25630218, 42174432, 33003066, -5191005, 2764348, 30982820, -6324340, 9190693, 25756918, -18090402, 29804926, 17832168, 10561325, --21634288, -10546292, -28712930, -914291, 9183714, 41925860, 17190606, -39087960, -4115653, 25159382, --4223027, 12219182, 16372415, -27721866, -7379828, 13463649, 2708514, 7513509, -12641699, 8947491, -14660871, 1956358, -354335, 22276384, 3668439, -4813048, -6382859, 7399692, -2573222, 11986180, -1274532, 9081708, 9684078, -1540283, -11327439, 21976274, -3799972, -6694244, -2071785, -14852534, --15652471, -9783936, -11057930, 7196755, 12304008, -12986907, -11892228, 2687039, 18811420, -28098750, --7566122, 10990821, -4082903, 184147, -4590247, -2922725, -21026012, -146566, -6175089, 5763846, -776315, 3535832, -564788, 1934346, -5052492, 8796093, 4145180, -2320893, -4952098, 3730716, -435939, -1570884, -55158656, 12639552, -9129490, -2161979, 43073692, 18519362, -13506062, -10454487, --163746, -27857694, -34135328, 2892124, 295279, -19200652, 20379620, 2477659, -19704236, 12459700, -37047316, -4955856, -21351894, 13415330, -12576738, -13691282, 6908455, 30103426, -9805410, 4417911, -8243116, -9269613, -22413286, -14687714, 29705604, 10468446, -29310468, 25075630, 9816685, -20065014, --10509785, 41286984, -13441100, -31661426, -16293495, 54871964, -54175644, -25087440, 32115618, -14530411, --17437568, -51592220, 40235792, -33029910, 11806865, 1729798, -6222871, -58262840, -17252346, 49894636, -31425738, -39412768, -10826539, -17059610, -8109435, 8099235, 10801843, 13001940, -68880536, 37674916, -28840168, 30320858, 434865, 15881178, -33725156, -29931090, 58885612, 24196236, 6488085, 23746874, --31758598, 6405944, -14076218, 15180025, -8610873, 41369124, -16902844, -14350559, 5687611, 5016522, --15691126, 9443022, 4494147, 3548180, -3003256, 2123325, 3271691, 3395709, -3931506, -2207613, -8600135, 529355, -4655745, 18124226, 5267241, -16052977, 1704028, 15552077, 3975529, -15266998, -20450486, 36885716, -18192944, -21095806, -5812702, -4731980, 12418898, 27033598, 8091719, -24953760, --8416525, -3600793, 3626026, 7633231, -4306779, 11079405, -8083666, -921271, 6349573, -10664404, --45574972, 7809325, 56734372, 17680232, 6018860, 1475858, 4187593, 24285356, 33273648, -7709467, -6147709, 8546985, -5828808, 20039780, -10695005, -2929705, -8116415, 15377057, 11388643, -6395743, -10462540, -15236933, -12443594, 15355045, -10019085, 16881906, -11404749, -5104032, -428960, 9191230, --678605, 6818261, 2694555, 17195438, -12462921, -2554432, 201863, -6956237, 16579648, 14390288, --12060268, -4325032, -7452305, 3753802, -15530065, 8240969, 4653060, 7558606, -6270116, -4758287, -18884434, -22901302, -4054986, 9550397, -6300180, -4229469, 9825811, -28125594, 6662568, -10230075, -1568200, -10018548, 24144696, -7973070, -10586021, 9882183, -5618354, -15974594, 30736934, -928250, -3051038, -6969122, -11987791, -14073534, 15454366, -17556752, -8536784, 17718350, -24391120, -10650982, -3027415, -2349884, 2876554, -453119, 3362423, 10743861, -3988951, 4169340, -5053566, 11279658, -6118181, -549756, 864362, 6847252, -6170258, 4959614, 723702, 5462662, -2592550, 8527121, --4470524, 2248952, -7567196, -6513855, -10302553, 1846836, 511638, 3360275, -5090610, 11368778, --3856881, -2018098, 9716290, 8587787, 4551055, -4069482, -6655589, 5847598, 7738994, 4851166, -3301756, -151934, 6992744, 7616588, 3318399, 6464463, 789737, -5091684, -300648, 14928233, --42287176, -119658328, -98298920, 52078088, 14983530, 119087096, 212701280, 31659278, 67102960, 24467354, --169536848, -53552336, -114994528, -138956688, 3964792, 22286048, -57943404, 84127672, 110051560, 61826056, -175484848, 101261904, -22524956, -41554344, -81365472, -158361888, -125089848, -36792300, -111544056, -15458124, -96311960, 16170552, 22443888, 145644496, 74282000, 46027552, 151780384, 23479512, -41867880, 59427852, --79454208, -157319824, -65857416, -132712344, -166206112, -2324651, -34698504, -43645996, 110716200, 122110216, -77644952, 184184848, 148529632, 70176544, 63369020, 36800892, -123001424, -113037096, -143292992, -189079488, --151702544, -63895156, -43982076, 3999152, 108756088, 132379480, 138436464, 132839584, 122972432, 26353920, -2264522, -20769388, -93776856, -102605160, -59391880, -107593224, -45352172, 9517648, -23533200, 54172960, -97235376, 29862370, 41058276, 18399104, -26593364, -16446504, -40691056, -52773336, -6400575, 14998563, -367757, 43750684, 40218072, 4694936, 38710004, 134218, -49121004, 43423192, 12976707, -43511240, -30601642, -32198296, -65643744, 30071750, -46743740, -115453552, 1731946, -50758996, -33752000, 114666496, -51730196, 54581520, 163784816, 108777024, 60182692, 71656160, -17970144, -103492072, -131838856, -178711440, --197983504, -125429152, -80383000, -13737990, 75077640, 167717392, 184826944, 171645680, 178404352, 95595768, -4105989, -45518600, -117962352, -150462368, -97784592, -108713672, -87010672, -17450988, 2742874, 11485279, -42071888, 36158792, 31053150, 56232396, 55504936, 47275240, 55187644, 38605312, 12290049, -4423280, --24950538, -54898808, -61031484, -51034948, -54644332, -40052716, -21967684, -3133179, 16164109, 40825812, -44159780, 40898288, 37124088, 26186416, 9602473, 817654, -3697967, -15650324, -16220481, -9794136, --12292733, -14273250, -10107132, -15697569, -14224932, 247497, 1376000, 110595, 5337571, 2545842, -2959233, 12268574, 12438762, 13592498, 15623480, 8404177, 2361158, 529355, -4701916, -9816685, --12713640, -14305999, -14755897, -10423349, -4828617, -312996, 3998615, 8468602, 8866960, 9455371, -9275519, 5036386, 177704, -948651, -3879429, -4543539, -3332895, -1042603, 864362, 2592013, -2745558, 2111513, 460098, -2187212, -4085588, -4489852, -4865124, -4706211, -3590056, -1403381, -1792612, 3970697, 4594542, 5500780, 5881421, 4587562, 3154117, 1469416, -689879, -2100239, --2970507, -3582540, -3296388, -2416993, -1619740, -624918, 387084, 992674, 1302449, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-10554345, 5538361, 401043, 8317741, 3059627, 3714610, 2408940, 3423089, -24696, -33286, +-1786706, -5329518, -3050501, 1511829, -200790, -922881, -573915, 2948495, 2304250, 105764, +2659659, -2349884, -6079526, 2031520, -1364189, 761820, -3068754, 2532420, -2500745, -1211718, +-950262, 4478577, -975494, 21475, -1776506, -435939, -4912906, 1746441, -780073, 2756832, +-2304250, 386010, -1056562, -3927211, 1328219, -330712, -1019518, 1844152, 3344706, -615254, +-1953673, -5776731, 592169, -3408594, 1672353, 121870, -2190970, -27380, -906238, -753230, +-4154307, 2789045, -3677029, 2127083, -1410360, -2433099, -2063732, -4427575, 2534568, 290447, +1293322, 2761127, -2818036, -4543539, 3011846, -4352413, 205622, -2881386, 1001801, -2217277, +2066416, -1093069, 1122060, -1906429, 419833, -854699, 1244467, -885300, -970663, -947577, +-883690, -1706713, 321049, 487479, -241055, -1334124, 1027034, -995359, 213675, -648540, +-1133871, -391916, -362388, -142808, -197032, -126165, -923418, -486942, 219580, -545461, +-248034, -270583, -630286, -165356, -452582, -601832, -505732, -15754477, -202937, -2121177, +4103305, 43487, 1560684, -1335198, 2027225, 365072, 1771137, -1854889, 10121627, -2243584, +-1453846, -4394289, 1435056, -5298379, -1712618, 356482, -2580202, -73014, 3702262, 2094870, +1394791, 2470143, 3597572, -4442607, -1699733, -125091, 2281702, -4195110, 4035122, -3517578, +-1769527, 3204046, -629750, 708670, -2594697, 2956011, 3124589, 3323768, -5180805, -1620276, +5576478, -117038, -851477, -1295470, 6082211, 3928285, 4704063, 41339, -1109175, -1452773, +-340913, -171262, 686658, 1777580, -5892159, -577136, -2746095, -3525631, -459025, 956704, +-3057480, 769336, -2336999, -903017, -945430, -119722, 2037962, 1838783, -1066763, -746787, +-1334661, -4827543, -1131187, -3012383, 79457, -3958349, 1060320, 12885, 3950296, -1414118, +543313, -3475166, 299037, 430034, -1596117, -1693828, 1678259, 3758, 447213, -210990, +1178432, -360240, 490163, -250719, -270583, 1376537, 656593, 545461, 221728, -209917, +850940, 5290326, 6274947, -4456566, 513249, -3809099, 5745056, 1009854, -2451353, -3454228, +-3061238, -685584, 680752, 1481227, 7661148, -4646081, -784905, -1880122, 2968359, -8675297, +-1064615, 5436355, -207769, 4558571, 1985886, 3644280, 3797825, 1616518, -810138, -4105989, +1278290, -1192390, 456877, 6365679, 1562831, 5452998, -2954938, -1568737, 363462, -7479686, +811212, 5480915, -1686848, 454730, -4694400, 3439195, -135291, 1492501, -5545340, 3166465, +-3743601, -2119566, -3907883, -4587562, 2549600, 820876, -1523640, -2380486, -2247879, -1676111, +-1152662, 2495913, -2595234, -4661114, -7136625, 6484864, 4970351, 205622, -7139310, 2085744, +-3453154, 2723546, -2350958, 440771, -4395899, -2800319, -5709086, -2623688, -845035, 5453535, +3235721, -6229313, 2618856, 69793, -588947, 2627983, -418222, 2072322, 4333085, 161598, +872952, 2839510, 549756, 512712, 2823941, -574452, -126702, 151398, 324270, 541703, +664646, -710817, 784368, -671089, 162672, 72478, 688805, 99321, 1771137, 1518271, +66035, -159988, 1736777, 838592, -1388348, 181999, 596464, 26716844, -9944460, 11959873, +-9532143, 799401, 2826089, 2793339, -7872138, -2685428, -2655364, -13170517, -89121, 677531, +-4757213, -785442, -74625, 9385577, 1720671, -6578280, 4772246, 5210332, 1149441, 9514963, +-7107097, -2612951, -3806952, 1994476, 7618735, -572841, 463320, 2822331, -1384053, 3394098, +1523103, 8706972, -1335198, 3401614, -5734318, 5196911, -4021163, 5804649, -122943, -6107444, +-933082, 8778376, -407485, 5933498, 3554086, 5705864, 491237, -4548371, -3703873, 76773, +-2757906, 4681515, 3097745, -4668630, 623844, -3651259, 6185827, -1704565, 4959077, 5925445, +1023276, 6109054, -299574, -2986613, -1027034, -3801046, 156766, 8033737, -5063767, -5183489, +-1970316, 2269890, -3553012, -2206003, 1544041, 3852586, -1620813, 1406602, -7820599, 1908039, +492848, -571768, 2720325, 160524, 722628, 1844689, -250719, -1022739, 828392, -1810329, +551903, -761283, 214212, 329102, -289373, -637803, -1572495, -134755, -1254131, -786516, +-535797, -2610266, -22202296, 2502355, -6493991, -4623533, -7129109, -8650601, 3498788, 7860864, +-1115618, 3097745, 1293322, 4070019, 965831, 361314, 2472828, -4702989, 11118597, -506269, +-6385006, 7329899, -2165737, 3151969, -7206419, -4446902, -5091684, 2298344, 1402844, 5752572, +222265, -3457986, 642635, -3079492, -3417720, -3771518, -1289564, -5278515, -2667175, 5060545, +-4598300, -255014, -3588982, -5605469, -2488934, 785442, 1860795, 3679176, -2820183, -2547989, +3601867, 696858, 1378685, 1020592, 2242510, 3418257, -5400922, -1745904, -518617, -7545721, +2051921, -462783, 4493073, -4393752, -3382824, -4102231, 747861, 4799626, 3684545, 8410620, +5620502, -5080410, 2117419, -2262911, 3968013, 2542084, -5550709, 4088809, 1101122, -6111202, +816044, -1054951, 548145, -1088774, -4207458, 845035, -3015604, -3115462, 1182190, -1682017, +745714, 2338073, -1508607, -1955284, -2097018, -3078955, -578747, 2499134, -637803, 2596845, +25770, 1777043, 1163399, 958315, -1126355, -373125, 433255, -1028645, -1228361, 358630, +-1188095, -387084, 317828, -2144263, 1236951, -1064078, -392990, 324807, -88047, 246424, +704375, -916976, 622770, 1555852, -28246926, 7887171, -8353175, -6940131, -4966056, 1060857, +-1374390, 16805670, 1744831, 4102768, -1762010, 171799, -6761353, 6921340, 2087891, -883690, +1466195, 9004399, -4358318, -1429150, 2149631, 726386, 4561256, -3776887, -1653026, 5018133, +1896765, 4631586, 634581, -4687420, -3049427, 2816425, -375273, -1518808, -2905009, -1619203, +-106837, 8541616, 2218888, -1414118, 266288, 734439, -2469606, 6185290, 4737349, -1336272, +-6293738, 1708860, -3292093, 5891085, 4575214, -4392678, 1843078, -5720360, -5113159, -4459787, +-5652177, -1872606, 1348620, -3340411, 367220, -3700651, -3147137, 6765111, 4314295, -5531918, +-7536057, 963683, 6566468, -4899484, -3636227, 5588826, 4391067, 6359773, -3954591, -69793, +1843615, 2685428, 7101729, 2005750, -844498, -163746, -5045513, -663036, -18790, -4287451, +394600, -1187559, -1932735, 193274, -521302, 2274722, -448287, -737661, 1100585, -550293, +-1759863, -1095754, 454730, 1859184, -768262, -545998, 122407, -324270, 3360812, 703301, +4336843, -2910377, 839129, 330176, -1712618, 67109, -81068, -2176475, 645856, -327491, +-2464774, -2238752, -1163399, -2135136, -1652489, 705448, -1057099, -14930917, -1480690, 2512556, +7260106, -1416266, -3805341, 1700270, 10669236, -13439490, 3114925, -2729452, -2495376, -6051609, +3635153, -10771241, -7010461, 3699578, -5630702, 3402688, 15341623, -2718178, 6200859, -7218230, +7408819, -1928977, 2209761, -6475200, 3021510, 1833414, -3468186, 1520955, -699543, -3333432, +-221728, 4209068, 6605123, -5177046, -8248485, -6541772, -6054830, 779000, 4844186, 12824235, +-146029, 8633958, 9025337, -8402030, 6456947, -12355010, -4513474, 774705, -5491116, -5126581, +3426847, -11966316, -2361158, 8311836, -3587372, -3138011, 1101122, -3663070, 3403762, -3635153, +5837935, 7526930, -2085744, 2331094, 316217, -7646116, 659814, -4953708, -3402688, -6045167, +3433826, 2609193, -5789616, 453656, 4320737, 3995930, 5117991, 5253282, -802085, -5031554, +4159139, 2153926, 2493229, 1336272, 3009698, -363462, -92879, 416612, 1241782, 1431298, +-2046552, -657667, -1649804, -1128503, 2418604, 2042794, 2334852, -4256850, 871878, -559956, +-1735167, -2075543, 2188286, -1381906, -2302103, 549756, 555125, -798864, 5150740, 1667521, +-1001264, -1178969, -2381023, -703838, 2110440, 3157338, 812823, -38655, 3230889, 35344896, +-1748052, -14031121, -1790465, -651761, 1304060, 4420058, 1782411, -1658931, -1488206, -7084012, +-3372623, 3913252, 8611409, -7121056, -4489852, 5735929, 437013, -2113124, 2281165, -599685, +-8231842, -8386461, 11337103, -1093606, -751619, -1932735, 5811091, -485868, 590021, 3684008, +-6251862, 6573985, 2724083, 1045288, 2499671, 6571837, -15902116, -7139310, -3884261, 14603963, +1868848, 1066226, -4526359, -4994510, 4361540, -688269, 5060545, -1836099, -10166724, 1060857, +1223529, -1564442, 4915590, 2187749, 1308891, 8086350, 19760070, -1591285, -1686312, 7505456, +2274185, -2361695, 5159867, 15363635, -1741609, 2920041, 5558762, 4454418, 3990562, 4065724, +4560182, 3500935, -4080756, 6117107, 10963978, -2561411, 4196183, 37044, -1395328, -7619272, +4724464, 1770600, -631360, 2277943, 2621541, 606127, 292595, -2582349, -2957085, -1182190, +-5878200, -2628520, -3987340, 5076115, 2486249, 1916629, -838592, -788663, 288837, -3393561, +-3758, 1219234, -4669703, 4064650, -2041183, 706522, -1435593, 202937, 1537061, 1837709, +-3640522, -3611531, -3001645, 385473, -629213, -1015760, -286152, 2499671, -674847, 244276, +-1501091, -3212099, -1750199, -105764, 7136625, 7946763, -10135049, -2946885, -8603356, 8507793, +15950972, -7649874, -1795833, -8776229, -3812320, -10618233, 7560753, -6487548, -2633889, -700080, +75699, -4236449, -5195300, 9507984, -8641474, -3210488, 991601, 6481106, 6943352, -9982041, +-2923799, 3812320, -8563628, 4848481, -6791417, -2790655, 2513093, 179315, -3710852, -1056562, +2058363, 11110007, 1387274, 2491081, 14496, -9542344, 10412611, -5126581, -7785702, 6215892, +-5545340, -6316287, 8213051, -3735011, 1065689, -1840930, 1118839, 10746008, -1825361, 2385854, +-9402220, -770410, 10988137, 2421825, 10887742, 9271224, -3040837, -2414845, -12617540, 1907502, +-2101313, 8345659, 10293426, -5939403, 2582886, -18605798, -5052492, 6114423, -6389301, 9584220, +674310, 2039036, -3379603, -760746, -4424890, 746251, -3040300, 6751689, 6713034, -347892, +2308008, -148176, 3809099, 1584306, 2769180, 5694590, -1694902, -6508486, 3000572, 1421097, +4130148, -1117228, 4380330, -939524, -1471563, 1042066, -2575370, -1790465, 483184, -4596152, +1308354, -1636383, 4066797, 1683090, -255014, -914828, -2613488, -4086125, -279173, 485868, +1679332, -1540283, 946503, -3850438, -5369, 163746, -1953673, 2475512, 303869, -6442, +1129040, -1306744, 248034, -44560, 6364605, -8176007, 2750927, -7647726, -865973, -10317585, +16855062, -5007932, 1114007, -5368709, -15441481, 8846559, 3076270, -11533061, 7084549, -5214627, +-3847754, 3987340, 15953656, -8014409, 15410880, -338229, -10888816, 422517, 3575560, -9584756, +10510859, -5564130, 7774428, 16938278, 1627793, -7959648, -2250563, -935766, 3859028, -6773701, +-3713536, -940598, 8333847, -3016141, -3390340, -11138998, -407485, -13163538, -2451353, 14855755, +-3368865, 8448201, 775778, 2234457, -19534586, 242666, -12509092, 10030896, 17453136, 5369783, +4366908, 1063541, 2595234, -10215580, 3569655, 5426691, -4563940, -1290101, -4047470, -2582349, +7858180, 162672, 9536438, 29268592, 10677826, 2908230, -10075993, -9362492, -6076305, 5741835, +-9976135, -877784, -923418, 2026688, 5619965, -5475010, -1044751, 5434744, 5965710, 1221381, +1007170, 4057134, 5136781, 4290136, -60130, -961536, -977105, 446140, -2137283, -2662880, +2323577, -1349694, 3617973, -4444755, -1412507, 3063386, 2602213, -269509, 2351495, -2290291, +1069984, 1610613, 2184528, -2513093, -2470680, 3470334, 2480344, 1946694, -898722, -1753420, +841814, -4946729, -1297617, 790274, -2632815, 1200980, -1825898, -1287953, 563714, 399432, +-412317, -981937, -3278671, 30987116, -16178068, -63888, -7841537, -15140297, -20332912, 6126234, +-6255620, 6463389, -19224810, 4228932, 7377680, 6669011, -7854422, -17626546, -13795435, -11531450, +527744, -6556268, -12763569, -8677981, -4226248, -10367514, -7116224, 2136746, 13914620, -20401, +2291902, -156766, -11567958, 7662759, -731218, 2469069, -2309619, -7576859, 7063074, -9528922, +-13405130, 12619688, -13069585, 2945811, 221728, -18513456, -10889353, 7634305, 4832, 9320616, +-5667210, -19690814, 258772, 963683, 7789460, 8224863, 18997178, -10550050, -38102804, -13186623, +-12773770, 8858907, -24707874, -8221105, -3839701, -22707492, -7313793, -147640, -4033511, -4065724, +5350456, -5952288, -206695, -5570573, 5735929, -13262859, 5208722, 11083700, -13323525, -6637335, +7073811, 5525476, 4886062, -13758928, 3670050, 399432, -1632088, 7654706, -1522029, 6335614, +5740224, -978716, 2025077, 1407676, -1340030, -4425964, 7993471, -2276333, -5026723, 398358, +136902, 4323422, 1802276, 244813, 1627793, -3802657, -3770981, 695785, 1800128, 2684892, +4735202, -278636, 2358474, -200790, 2127620, -4464082, -1682554, -3024194, -2639794, -257698, +-279710, 1966021, -4967130, -2179696, -3624416, -2587718, -5216775, -6614250, -5729487, -409633, +-182536, 992674, -3376918, -4562866, -17725330, 7021198, 8766028, -2913062, -3416110, -8823473, +-9756555, 22551800, 8203925, -21007222, 7272990, -11430519, -1100585, -10378788, -21616034, 6382322, +-11272679, -4671851, 878858, 678068, -5518496, -18226230, -11352135, 9020505, -11228118, -250719, +-9938017, -15146739, -5950677, 16956530, 2676302, 3079492, -14760192, -4860829, -3052648, -1838246, +5945846, 7489349, 9500468, 11902965, -5811628, 6752763, 2280628, -6723235, 4139275, -11361799, +-10042707, -8526584, 3668976, -9862319, 423054, -14882599, -13217762, -6655589, 15489800, 12276627, +11752641, 13172665, -12070469, 16476568, 474594, 7670275, 22391812, -4468377, -4206921, 3811784, +-10888279, 4617627, -5155035, -13805099, 1747515, 11579232, -13571023, -9450539, -1730335, 12438225, +-10334765, 1348083, 3699578, 7554311, 1767379, -2871186, -7078643, 2061584, 5140539, -2687576, +578210, -3428995, 1068910, -3248069, 1284732, 414464, 1838246, -1113470, 1239098, 2674691, +6236830, -616328, -239981, 710280, 2846490, -4512400, -2066416, -4985920, -1560684, -969052, +-6047851, 1313723, 5261872, -289910, -7188702, -1007170, -766115, -5951751, -7047505, -9907416, +-4320200, 4067871, 495532, 2936684, -1669132, -1616518, -3772592, -329102, -9029095, -1414118, +5171141, 8666707, -588947, 2752000, -5199595, 851477, -3163780, 4544613, 1742683, -8490613, +-19796042, 22637162, -17690970, 23441394, 13120588, 8924942, 5017596, 9206799, 10005126, 9244917, +25197500, -8828842, 1775969, -1692217, -4349192, -774168, 3123515, -2350421, 4847408, -1644973, +7881265, 6601365, -1419487, -4376035, -25116432, -8959839, -18218178, -853625, 9605157, 9677098, +3082713, 4923643, 7241852, 5969468, 7019587, 17974438, 26831198, 17985712, 3631395, -3428458, +-5182415, -7719667, 9388799, 9543954, 10721849, -7990787, -6281927, -9907416, -1632625, 13056164, +128312, 15648713, -9498857, 8373039, 5057861, 14041322, -29389924, -21069498, -8617852, -11834246, +-12081743, 3606699, -4930086, 18479634, 5494874, -20646982, -1697049, 33356326, -11248519, 10388452, +-5039608, 13696114, -6385543, -4194036, 497142, -5689221, -7441568, -557809, 5616744, 8235600, +5763846, -2190433, 6499896, -1750736, 3011846, -8527121, -5779416, 5425618, 3474629, -8574365, +-3716221, -3654480, -1135482, 2100239, -2238752, -4218195, 1944010, 353261, 1414118, -700617, +-2402497, 3767760, 1254667, -2181844, 5040144, -733366, 1494649, -967978, 5943161, -5066988, +5295695, 2283849, -4940286, 3244311, 195958, 841814, -5150203, -15129022, 5679021, 94489, +1114007, -1767379, 5774047, -1433445, -2670396, 1802276, 4516695, 3689377, -2206003, 4583267, +-14397804, -7163469, 12100533, 5334887, 8950175, 23195508, 2066953, 15526844, 22664542, 15760919, +-10125385, -22877680, -682363, -10460930, 24850144, 7205345, 19435264, -2689187, -10276246, -3748433, +-11221139, 4535486, -8612483, 1117765, -9603010, 5112622, -6990596, -2918967, -15476915, -15371688, +-1435593, -22049288, 12202539, 8396661, -6518687, 11373610, -5291400, 4452808, 12699681, -13929653, +-18221936, 3302293, -3903589, 30798674, 13167296, -33716568, -9012989, -9547175, -17313550, -18403398, +-37602440, 6674379, -13408351, -3513820, 5508296, 1392106, 7866770, -1479079, -4357245, -28563144, +3504693, -12981002, 3618510, 16764868, 3636227, 11242077, -16916266, -22598508, 4679904, 14013941, +9547712, 5262409, 9078487, 14565308, 18341120, 18737332, -16543140, -10035728, -11883101, -8592619, +-13890461, 19761144, 11712376, 11135776, 3175055, 8511551, 7429757, -711354, 10463614, -15946140, +-5472325, -1920924, 1443109, -3469260, -11157788, 621160, -2145336, 1444183, 3812320, 11521250, +789200, 5373541, 5567352, 832687, 5904507, 155156, -3324305, 667331, -8503498, -3562675, +4794794, 6617471, 2220498, 1173063, -10422812, -1077500, 554588, -5151277, -3346317, 1515587, +3590593, -9793062, -10572599, -4975183, 3853660, 3058017, 5704791, 1243930, -3221762, 2338073, +-10923176, -9995463, 40831180, 26975616, 37464464, 2448668, -7403987, -25419764, -7485591, 4275640, +5922760, -6045167, -19641960, -7086696, 32370094, 13397077, -4457639, 9928354, -713501, -11866995, +-3455838, -7736847, 22074522, -1675574, 1309965, 9540733, 641024, 10824391, -97711, 15314243, +-14059039, 17642652, 3582540, -8186208, -4952098, -9069897, 15922518, -22022444, -23791434, 15075872, +24908126, 1189706, 17197586, 23656680, -26601416, 8879845, 5449240, -1439351, -231928, 3973919, +-9979357, 18579492, -11252277, -8928700, 7505992, 967978, -2003602, -4293357, -5539971, 2699924, +-17570712, -5241471, 14164265, -17317846, -3988414, -11689827, 445603, 35116728, -11018739, 2280091, +9395241, 197569, -8075076, -21896280, 21422224, 10016401, -44146896, 10966125, 11115912, 8240969, +-9896678, -4586488, 22557168, 1037772, 1665374, 5808407, -15684147, 625992, 9985262, -4052302, +5771363, -1228898, -5095979, -13053479, 1996086, -1694365, 12125230, -1104344, -513785, -8684961, +9606231, -3206730, -3337190, -13778255, -6937446, 4878009, -8886287, 760209, -4379793, 5546951, +-5203353, -11078868, 5609764, -11936251, -3280281, -5411122, 558346, 754304, -4491999, 11949136, +-1476932, 16103443, 9805410, -1590212, 1686312, 10313827, -7134478, 1870458, 1219234, 9900973, +-8942122, -5270462, 454193, -18234284, -43700756, 38878044, 23174570, 12326556, 8668318, 19206556, +-44100188, 18107582, 20364588, 8722542, -28232430, 15710453, 28540594, 13230110, 31470836, 11481521, +537945, -1247151, -987306, -5358509, 13334800, 22362284, 21296058, 7446937, -6544457, -11105175, +2654827, -10110353, -11840688, 12458090, 8564165, 2374043, -11866995, -11543261, -2538326, -10035191, +5118528, 25701084, -4570919, -8307004, 8672076, 4659503, 7612293, 8977019, -1968169, -5184563, +20645908, 13663365, 6748468, 9113921, -1666447, -20517596, 4757750, 13662828, 1768453, -15270756, +20434380, 5331128, 28425704, 1057099, 25553444, 2734284, -8378408, -2719251, 6127845, 36381056, +-4597763, 13078175, 8963060, 17190606, 9003325, 81068, -1105954, 11215770, 51760800, 2423435, +20765630, -17547088, -13107703, 6577743, 8137890, 10091563, 4148402, 1658394, -25440702, -10061498, +-26676042, 1458141, -4582730, -8808441, -7460895, -2962991, -11255499, 1416802, -1169305, -11829951, +8459475, -13778255, -6696391, -12439836, -8509941, -814970, 1367410, -9949829, -11552925, 2781528, +7340636, 8579197, -1747515, -3278671, -14862734, -19422916, 1940252, 2381559, -8857296, 17685064, +17107392, 25323128, 8878771, -5564667, 3457986, 7827578, 9582072, 11511586, 1696512, -11989938, +3025268, 15389405, 7876970, 803159, 6154152, -28472948, 31227096, -463856, 27638652, 695248, +1881196, -25073482, -7707856, -11271605, 19173808, 4896263, 8500277, 5087926, -19262928, 1930588, +1547262, -16893180, -24217710, -24720222, 8383240, -9171366, 22544284, 1327682, -7152731, -5819681, +4860293, -8694624, 1451699, 6645388, -9490267, 5365488, 7592429, 2630668, 2163053, 17093970, +28659244, -5572720, -242666, 14450954, 11777337, 17301738, -12822088, -4968204, 5173825, -17104170, +1645509, 1546188, -22816476, 29427506, -1477469, 14884209, 12753905, 9040369, -17379048, 1711545, +14761803, -11978664, 26307748, 7319161, -9698573, 21882322, 16371878, 11553999, -36772436, -7386807, +7231651, -12438225, 1893544, -20371030, -5212480, -30919470, -8969502, -4636417, -8667781, -34267396, +-3556770, -9270687, 51552492, -7318088, 10405632, -5181878, 8144869, -4206921, -8559333, 5718749, +-7202660, -950798, -3940096, 14025216, 4845260, 6253473, -22457310, -19800336, -15059229, -6045704, +3796751, -27885076, -4674535, -2085744, 1939178, 10446971, 7606924, -656056, 10713259, -9630927, +48855, 787053, -16335371, -22109954, 4217658, -6318971, -20890720, -5463199, -9945534, 1633698, +-22334366, -2297271, -9870909, 13301514, 2684, -9205189, -3663070, 4319664, 4941360, -1860795, +9756018, -9842454, -6520297, 13214541, 12097312, 21910238, -7486128, -1610076, -3106872, 5869610, +15591268, 13636521, 10031433, -8127689, 6086506, 17149804, 16530255, 7013682, -21041582, -24319716, +10110890, -3746285, 7178501, -4850092, 19757924, -15559593, -3604551, -5663988, 17169668, -13717052, +30464204, 37598680, 38320772, 1945620, -7682086, 5858873, -5528160, 9055939, -2142115, -651761, +-11860015, -31580894, -10865730, -30261266, 16608102, 15666430, -18877456, -14186277, -18925774, -9038222, +-3161633, 40247600, -24696, -21168284, -22797686, -1762547, 27930172, 13174275, -57512832, -12042551, +-10590852, 7088307, 20910586, -25163676, -8359080, -15147813, 5956583, -34185256, 16281147, -6035503, +-1286343, 8977555, 868657, -16940962, 32821066, -3735548, 15339476, 35310536, 72653664, 43499428, +-1599339, 24269250, 36791764, 47617764, 51496120, 14506252, 31336618, 8739722, -123480, 19191524, +-15934329, 31728534, 13222594, -14324253, -48399988, -35185444, 3999152, -13972065, -10360535, -9190693, +-5850819, -6228240, -20263118, -13251048, 184147, -3389266, -1632625, -6540162, -2301029, -10602127, +12202002, -21602074, -9263708, 5848135, 3362960, 1606855, -6054294, -6962142, -4320200, 3988414, +-3955665, 10673531, -13452911, -16465294, -16769700, -10277857, 11770358, 13553843, -5756867, -2692945, +4467303, -2918967, 22377854, 4707284, 1442572, 18121540, 10945187, 10257456, 25479894, 16876000, +19022410, 5864778, 8859444, 21271900, 7709467, 16466905, -15955804, 8644695, -7516730, -16585553, +18587008, -23964306, 39470212, -4922570, -7555921, 506806, 31369368, -21355652, -4009352, -1140314, +146029, 11268384, -8477729, 16349867, 5455682, -3319473, 3546032, 1701344, 12703976, -40009232, +-12865575, -1409286, 3897146, -4125316, -29337310, 23627688, -1649804, 3076807, 8286066, -19106698, +-8973260, -44097504, 11285563, -10462540, 8058433, 31906776, -9168145, 6561637, -4510790, 15132244, +-26613764, -35249332, 30348776, -3043521, 2244121, 5053566, 30515206, 22383222, 26424250, -610959, +-36342404, 21170430, 9583146, -8630200, -13141526, 20238422, -4168803, 25630218, 42174432, 33003066, +5191005, 2764348, 30982820, -6324340, 9190693, 25756918, -18090402, 29804926, 17832168, 10561325, +-21634288, -10546292, -28712930, -914291, 9183714, 41925860, 17190606, -39087960, -4115653, 25159382, +-4223027, 12219182, 16372415, -27721866, -7379828, 13463649, 2708514, 7513509, -12641699, 8947491, +14660871, 1956358, -354335, 22276384, 3668439, -4813048, -6382859, 7399692, -2573222, 11986180, +1274532, 9081708, 9684078, -1540283, -11327439, 21976274, -3799972, -6694244, -2071785, -14852534, +-15652471, -9783936, -11057930, 7196755, 12304008, -12986907, -11892228, 2687039, 18811420, -28098750, +-7566122, 10990821, -4082903, 184147, -4590247, -2922725, -21026012, -146566, -6175089, 5763846, +776315, 3535832, -564788, 1934346, -5052492, 8796093, 4145180, -2320893, -4952098, 3730716, +435939, -1570884, -55158656, 12639552, -9129490, -2161979, 43073692, 18519362, -13506062, -10454487, +-163746, -27857694, -34135328, 2892124, 295279, -19200652, 20379620, 2477659, -19704236, 12459700, +37047316, -4955856, -21351894, 13415330, -12576738, -13691282, 6908455, 30103426, -9805410, 4417911, +8243116, -9269613, -22413286, -14687714, 29705604, 10468446, -29310468, 25075630, 9816685, -20065014, +-10509785, 41286984, -13441100, -31661426, -16293495, 54871964, -54175644, -25087440, 32115618, -14530411, +-17437568, -51592220, 40235792, -33029910, 11806865, 1729798, -6222871, -58262840, -17252346, 49894636, +31425738, -39412768, -10826539, -17059610, -8109435, 8099235, 10801843, 13001940, -68880536, 37674916, +28840168, 30320858, 434865, 15881178, -33725156, -29931090, 58885612, 24196236, 6488085, 23746874, +-31758598, 6405944, -14076218, 15180025, -8610873, 41369124, -16902844, -14350559, 5687611, 5016522, +-15691126, 9443022, 4494147, 3548180, -3003256, 2123325, 3271691, 3395709, -3931506, -2207613, +8600135, 529355, -4655745, 18124226, 5267241, -16052977, 1704028, 15552077, 3975529, -15266998, +20450486, 36885716, -18192944, -21095806, -5812702, -4731980, 12418898, 27033598, 8091719, -24953760, +-8416525, -3600793, 3626026, 7633231, -4306779, 11079405, -8083666, -921271, 6349573, -10664404, +-45574972, 7809325, 56734372, 17680232, 6018860, 1475858, 4187593, 24285356, 33273648, -7709467, +6147709, 8546985, -5828808, 20039780, -10695005, -2929705, -8116415, 15377057, 11388643, -6395743, +10462540, -15236933, -12443594, 15355045, -10019085, 16881906, -11404749, -5104032, -428960, 9191230, +-678605, 6818261, 2694555, 17195438, -12462921, -2554432, 201863, -6956237, 16579648, 14390288, +-12060268, -4325032, -7452305, 3753802, -15530065, 8240969, 4653060, 7558606, -6270116, -4758287, +18884434, -22901302, -4054986, 9550397, -6300180, -4229469, 9825811, -28125594, 6662568, -10230075, +1568200, -10018548, 24144696, -7973070, -10586021, 9882183, -5618354, -15974594, 30736934, -928250, +3051038, -6969122, -11987791, -14073534, 15454366, -17556752, -8536784, 17718350, -24391120, -10650982, +3027415, -2349884, 2876554, -453119, 3362423, 10743861, -3988951, 4169340, -5053566, 11279658, +6118181, -549756, 864362, 6847252, -6170258, 4959614, 723702, 5462662, -2592550, 8527121, +-4470524, 2248952, -7567196, -6513855, -10302553, 1846836, 511638, 3360275, -5090610, 11368778, +-3856881, -2018098, 9716290, 8587787, 4551055, -4069482, -6655589, 5847598, 7738994, 4851166, +3301756, -151934, 6992744, 7616588, 3318399, 6464463, 789737, -5091684, -300648, 14928233, +-42287176, -119658328, -98298920, 52078088, 14983530, 119087096, 212701280, 31659278, 67102960, 24467354, +-169536848, -53552336, -114994528, -138956688, 3964792, 22286048, -57943404, 84127672, 110051560, 61826056, +175484848, 101261904, -22524956, -41554344, -81365472, -158361888, -125089848, -36792300, -111544056, -15458124, +96311960, 16170552, 22443888, 145644496, 74282000, 46027552, 151780384, 23479512, -41867880, 59427852, +-79454208, -157319824, -65857416, -132712344, -166206112, -2324651, -34698504, -43645996, 110716200, 122110216, +77644952, 184184848, 148529632, 70176544, 63369020, 36800892, -123001424, -113037096, -143292992, -189079488, +-151702544, -63895156, -43982076, 3999152, 108756088, 132379480, 138436464, 132839584, 122972432, 26353920, +2264522, -20769388, -93776856, -102605160, -59391880, -107593224, -45352172, 9517648, -23533200, 54172960, +97235376, 29862370, 41058276, 18399104, -26593364, -16446504, -40691056, -52773336, -6400575, 14998563, +367757, 43750684, 40218072, 4694936, 38710004, 134218, -49121004, 43423192, 12976707, -43511240, +30601642, -32198296, -65643744, 30071750, -46743740, -115453552, 1731946, -50758996, -33752000, 114666496, +51730196, 54581520, 163784816, 108777024, 60182692, 71656160, -17970144, -103492072, -131838856, -178711440, +-197983504, -125429152, -80383000, -13737990, 75077640, 167717392, 184826944, 171645680, 178404352, 95595768, +4105989, -45518600, -117962352, -150462368, -97784592, -108713672, -87010672, -17450988, 2742874, 11485279, +42071888, 36158792, 31053150, 56232396, 55504936, 47275240, 55187644, 38605312, 12290049, -4423280, +-24950538, -54898808, -61031484, -51034948, -54644332, -40052716, -21967684, -3133179, 16164109, 40825812, +44159780, 40898288, 37124088, 26186416, 9602473, 817654, -3697967, -15650324, -16220481, -9794136, +-12292733, -14273250, -10107132, -15697569, -14224932, 247497, 1376000, 110595, 5337571, 2545842, +2959233, 12268574, 12438762, 13592498, 15623480, 8404177, 2361158, 529355, -4701916, -9816685, +-12713640, -14305999, -14755897, -10423349, -4828617, -312996, 3998615, 8468602, 8866960, 9455371, +9275519, 5036386, 177704, -948651, -3879429, -4543539, -3332895, -1042603, 864362, 2592013, +2745558, 2111513, 460098, -2187212, -4085588, -4489852, -4865124, -4706211, -3590056, -1403381, +1792612, 3970697, 4594542, 5500780, 5881421, 4587562, 3154117, 1469416, -689879, -2100239, +-2970507, -3582540, -3296388, -2416993, -1619740, -624918, 387084, 992674, 1302449, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -10530723, --12826383, 6532109, -2314451, 5718212, -2777770, -2840584, -5715528, 1399623, 1261647, -214748, -134218, -602369, -4362613, -468688, -2477659, -2852932, -2704219, -62277, 370978, -176631, --455803, 2226941, -566936, -6618545, 4184372, 2103460, -2230699, 708670, -25770, 114354, -974421, 4326106, -2348273, 296353, -7511898, 3805878, 780610, 1742146, 2647311, 4283156, --2333778, -1759863, -820876, -3753802, 340913, -528281, 3317862, -1721745, -188979, -1794223, --2069637, 4039954, -2976949, -1413044, 410169, -2690260, 2317672, -57982, -1249836, 2515777, -4568235, 328565, -142271, -592169, 3909494, -3808026, 67109, -557272, 2061047, -903554, --1733019, 4261682, -42950, 935229, -1139777, 920734, 2298344, -1771674, -2511482, 175020, -2244657, 3764539, -1644436, -1087701, 944893, 248034, 597537, -1658931, -521302, 1064615, --201327, 762357, -1320703, -372052, -804770, -1115618, -815507, -734439, 617938, 153008, --563714, 642098, 433792, -484794, -140660, -82678, -706522, -1264331, -345208, 49929, -294742, 761820, -75162, 510564, 289373, -569083, 545998, -15329275, 2623151, 1826972, -5393405, -2094870, 1645509, 6265821, -2405719, 1721745, -3777424, -5555540, 2054068, -3778498, --4308389, -4329327, 1324461, 1665911, -7386270, 4362613, 2903935, -1250372, -2692408, 1741072, --654446, -1677722, 555661, 2462627, 1835562, 3927748, 777389, -1186485, 4056597, -2023467, -8824010, 1988570, 5445482, 2096481, 4780836, 2124398, 3302830, 1780264, 416075, 187368, -6685654, 1134408, -1043677, 445066, 3543348, 2608656, 409633, -294742, -1342177, 745177, -8153996, 2333241, 3784403, -3924526, -1991791, -4139275, -2588792, -4018479, 3049427, 1908039, --2538326, -1829119, 1840930, -1915019, 2051384, -901406, -577136, -2780455, -4655745, 2018098, --7581691, -1076426, -1592896, -1927904, 447213, -1778653, 390842, 2866891, 1423245, -1955284, -389768, -1551557, -3280818, -539018, 1626719, -165356, -2523830, 928787, 506806, 969589, -1791538, 65498, 284542, -1207960, -690416, -180926, 19327, 627602, -1345399, -1188632, -129386, 8551280, 11814381, -3731253, 3114388, -5996848, -398358, 267899, 15119359, -1640141, --4101157, -6637872, 69793, 4277788, 6910066, -1661616, -9260486, -2725157, -3582003, -2591476, -3037079, -758062, 5757404, 566399, -3384971, -7508140, 2145336, -780610, 1643362, -980326, -756988, 3553012, 1253057, -9424769, 1043140, 5923834, 2874407, 653909, 1357210, -1585917, -4082367, -5607617, -620086, 4470524, -3223910, -84826, 7320235, -3504693, -431107, -2594160, -4472135, -4874788, -3635690, 2130304, -5048197, -2534568, 6380711, 3713536, -5857262, -2216203, --949725, -1519882, -2714956, 1988570, -2342368, 2293513, -153545, 267899, 959388, 4791573, --637803, 6638409, 3393024, -5250598, -2462627, -2607045, 3956202, 1117228, -355409, -2161442, -5325760, 1997160, -184147, -203474, -1435593, -1328219, 1522029, 536334, 1697049, 4133369, -1449552, -314606, 192737, 253940, 1285269, -367220, 437550, 1930588, 354872, 2410014, --537, 797253, 1194001, 1443646, 465467, 882616, 1026497, 827318, 1351304, -526134, -358093, 897111, 1385127, -213138, -1202054, -1402307, 239444, 28406376, -10473815, 5777805, --7996156, -813896, 296890, -563714, -4233227, 2346126, 3279745, 816044, -3076807, -6554657, --235149, 4042101, 2865817, -2867965, -4942434, -374199, 4443144, 8123931, -4361540, -561567, --3291556, -7062000, 799401, -3539053, 2157147, -2612414, 5519033, -9651328, 6539625, -400506, --5759551, 1432909, 2428804, -652835, -3049964, 219043, 7572564, -255014, 1247151, -1039382, -2898029, 1367410, -1788854, -2811593, -6226629, 4068945, -1305670, -1799054, 2390686, 75699, --10467372, 8074539, -11266773, -6465537, -7981660, 1753957, -941672, 4816269, -2619393, 2578591, --4809827, 2345589, -1264868, -1927367, -5306969, 3281355, 3719442, 6413460, -1561221, -572841, -1716913, -1899986, -1156420, 1265942, 3673808, -4840428, 2399276, 3543885, 3881040, -6142877, --5067525, 2158758, -3174518, 1653026, -69793, -329639, 526134, 819265, -281320, 1501628, --1819992, 918586, -579284, 3658239, 194347, 929324, 792421, 275415, -1446330, -78920, -330712, -390305, -22395034, 2284923, 238371, -1900523, -3453154, 3920232, -3036542, 2609193, --802622, -37044, 3622805, 4715874, -2896956, 3474092, -1009854, -1912334, -6279779, -305480, --8485782, -6229850, 7475928, 2669322, -2889439, -1054415, -871878, 5189394, 2741800, -2663417, -4733591, 3149822, 1860258, 1640141, 2019172, 3605625, 3106872, 3063922, 8362302, 7523709, -3256659, 838592, -5182952, 5786395, -7704635, 1531156, -2138357, 6267968, -4708358, -6133750, -10566693, -2451353, -5641440, -5035849, 7868917, 4830228, 303332, 4046396, 5717139, 2623688, -9236864, -542240, -1439351, 5240397, 3215857, 315143, 224412, -4789963, 2894808, 3000035, -7461969, 3037616, 4653597, -2852932, -3806415, -8118562, -1848447, -4387846, -3476239, -3693672, -4124779, -137976, 336081, -2372433, -2733210, -756988, -2401961, 759136, -1611687, -2685965, -1125281, -257161, 121333, -2513093, -346819, 112743, -3153580, -426812, -734976, 220654, --1404991, -1640141, -1000727, -602369, 78920, -520228, 525060, -732829, 909996, 223875, -807454, 1752884, -376883, 1851131, 401043, 1220308, -819265, 388695, -1565516, -579284, --242666, -1902134, -566936, -927713, -29732984, 8126615, -6255620, -9305584, -9199820, 5897527, --6798397, 5223217, -8570070, 4900021, 4202089, 2627983, -9028021, 6380711, 5369, 3908420, --7459822, 4335770, 9079561, 6966974, 364535, -3095061, 1377074, -1821066, -9546639, -1842541, --4527433, 2326262, -5961415, 5334887, 5236102, -1908039, -108448, 7297150, -1458678, 4987531, --3804804, -6146635, 3379066, 5369, 3492345, 8949638, 5493800, -215822, -15288473, -7271917, --2022930, 2252174, -2253784, 8597988, -13267154, 4350265, 1932735, -21475, 4312147, -1620276, -6616397, -13916768, -6432788, 5549635, -13984950, -2500745, 6696391, 2470143, -2999498, -9292162, -3608310, 6182606, 4569309, -1566589, -9752797, -738198, 190052, -1007170, -411780, -4719632, -2305324, -7617662, 4868883, 781147, -4471061, 1018981, -5401458, 530965, -6483253, -1735704, -2428267, 2544231, 330176, -523986, -2159295, -1604707, 576063, -3767223, 3237332, 350040, --1761474, 122407, -3232500, -2530273, 861141, -1267552, 1929514, -1653562, -869194, -1046361, --1154809, -2156074, -267899, -1155346, -388695, 741419, -413927, -913217, 946503, -303869, --760209, -787590, -1893007, -1300301, 381715, 1167694, -190589, -14039711, 1512365, 2335389, -10994043, -10390600, 12006044, 3397319, -968515, -2828236, -1294396, 1105417, -8778376, -1690607, -2815351, -2894808, -5150740, -1403381, 8307541, -8591008, -1863479, 8581882, 42413, -3420942, -3035468, -4194573, 6329708, 2765422, -75699, 3147674, -3665755, -5796059, -407485, 424665, -4738423, -10152766, -5458904, -4491462, -3124589, -3022046, -3064996, 1501091, 504122, 823023, --7555921, -7787850, -6159520, 203474, -9708237, -5388037, 5826660, -3957276, 1293322, 597537, --175557, 2405719, 3459596, 3265249, 3915400, 5709086, -1006096, 6177774, -389768, 3111704, --511101, -4007741, -228707, -6448894, 3976603, -7544110, 7026567, -8415988, -120796, -8680666, -828392, -8723079, -8355322, 3928821, 11522324, 3445638, -7418483, 5266704, 7516, -3313567, --1952063, -3471407, 4588099, 3914863, 5640903, 981400, 4400194, -3743601, -390305, 4269198, -515396, 1294396, 857920, -2128693, 2588792, -270046, 970126, 3777424, 1127966, -987843, --2269890, -1086627, 1583232, 1518808, 1253594, 401579, -1766842, 97174, -368830, -4037269, -3890704, 406948, 1428614, 140123, -940598, -1934883, 1374390, -1972464, -914828, 38830264, -267899, -11457362, 1574642, -6314139, 15363098, -2752000, 4181688, 932545, 557809, -13882408, --7204271, 7375533, 6470368, -10984916, -2086817, -537945, 9397388, 4504347, 3457449, 9190693, -1287953, 403190, 7971996, -3069291, -12621298, 1622961, 9316321, 5410585, -3788698, -28454, -6440304, 3823058, 1624571, -574452, -7162395, 3172907, -7773354, 532576, -14469208, 3521336, -4212826, -1380832, -6758131, 8842264, 4583804, -2106145, 6868190, 3024194, -6129455, 10657961, -991064, -4089346, 2345589, 10932302, 1556926, -519691, -9494562, -5665599, 1126355, 3550864, -12543989, -4429722, -5221070, 867583, 6767258, -4723391, -5692979, -734439, 9071508, 6381785, --2480344, -7339562, -546535, 7836168, -3388729, 16532940, 3482682, 2263985, -8758512, 7043747, -270046, -2100239, -4533338, 183610, -2606508, 201863, 10206990, 4482335, 3613141, 1731946, -1035624, -78383, -837519, 709207, 1925219, 3490198, 418222, 419833, 1216550, -3097208, --97174, 974421, -797790, 2999498, -2466922, -325881, -1287953, 1020055, 5355288, 1621350, --1876364, -676457, 1159641, 200790, 1687385, -624918, -2528125, 1927367, 1819456, -2133525, --653909, 4585952, 1511829, 2222109, 8858370, 4729833, -13822279, -1390496, -6962679, 13990856, --5179731, 6542309, 1298691, 8773008, 3500935, 1331977, -660351, 3583077, -3929895, -5891622, --16353625, -12115029, 4076461, 10836739, 14566918, -5310190, -7021735, -6208912, 3301756, -3393561, --673236, -564788, 2021856, 2229088, 9754408, -5141076, 981400, 2403034, 4803384, -4668093, --3402151, -7714835, -5161477, -5376762, -9121974, -23337242, -191663, -3119757, -9951976, 2258616, --1048509, -12658342, 4339528, -10735271, 2841658, -1303523, -790274, 5447093, 7149510, -205622, --10377715, 3078955, -6476811, -7260106, 10180146, 9096741, 10255845, -3323231, 1749125, 1336272, --5075041, 790274, -2381023, 15888695, -2516314, -1655173, -1462973, -133681, -9594957, -12045236, -2976949, -902480, -773631, 2691334, 17427904, -2165201, -7983808, -3449933, 9211631, -1355599, --2818572, -2647847, -54224, -7406671, 1917166, -1453310, 1514513, -3762928, 302258, -4725538, --256087, -340913, 2038499, -2011118, -818728, -2910377, 4015258, 196495, -2691334, 581431, -1430761, -3091303, 928250, 1142461, 4884452, -1040993, 1248762, 3291019, 2225867, -1792612, -2164127, -3663607, -5719286, 650151, 720481, -2289755, -5317170, -1192927, -1189169, 4784057, -1963337, 3184182, -395674, 3990025, 4538707, -15261629, 5652177, 1875290, 16141024, -10842645, --6138582, -3592740, 8622684, -8209830, -7892003, 7149510, 4812511, -8303783, -8380555, -8199630, --18372260, 12081206, 11336566, 12028593, -5164698, 3815005, 11929272, -17259326, 32212, 11359115, -10523207, 4789963, -18790, -5511517, 1163936, -2643552, -14939507, 1916629, 4103305, 2216740, -9921374, -8715026, 948651, -16307454, -2065879, 3252364, -8966281, 3495030, 2762201, 7330973, -8935143, 12449500, -2536178, -4850629, -14992120, -10676752, 4630512, 22060562, -6833293, -887985, --10152229, -5351530, -8054675, 4776004, 4882841, -1664837, 723165, -16094853, -2126009, 10943577, --8711804, -7521562, 6475200, -2879776, 9473624, 2374043, -6961605, 1153199, -10517838, -3000035, --2778844, 20318416, -2032593, -5910412, 4440996, 4171487, -1785633, -3421478, -1040456, -2744484, --3776350, -3482682, -2692408, 1454920, 1570347, 3300682, -851477, -21475, -1963874, 2011655, -504659, -5177046, 1383516, -17717, -574989, 1911261, -128312, -2814277, -2825552, -6699075, -2229625, -2088965, 1971927, 2597918, -3179350, 1473711, 901406, -646393, 2535105, 38118, -7274064, 1050656, -1341640, 201327, -2138894, -354335, 1249836, 233539, -656593, 620086, --2871723, 2306934, -9378598, 22081500, -10710038, -5456219, -323733, -608812, -15476915, 1122060, --11366094, 8418136, -21464100, -3025268, -6781754, 7488276, -7305203, -7347079, -18140868, 12428025, --7387344, 5181341, -5753109, 3805878, 9845139, -6935836, -11850889, -3894462, 8318278, 17132624, -5588826, 7250442, 967441, -16990354, -9044127, -9096204, -4621385, 3130494, 15650324, 6828461, -9167608, 8617852, -2248416, -3476239, -5096516, -14172318, 903017, -9846213, 15622407, -6942278, -10798622, 2433099, -5461588, 3726958, -3594888, -4703526, -8317741, 12884365, 3457986, 21664888, -4832375, -22996328, -5651640, 7581154, 6144488, 3547106, -1188632, 2215666, 24348170, 12282533, --3977677, 2773475, -6406481, 17726404, -555661, -519691, 6950868, -15295989, -6560563, -5087389, --16429324, -19423990, 4002910, 7167764, -1719061, -9482214, -2414309, -2898566, -7472170, 294742, --1436667, -5827197, 6082748, 9341017, -1902134, -1171452, -1274532, -3419868, 2735894, 794569, --937377, -1671279, -1489280, -902480, 3124589, -1586454, -4211753, -871878, -106837, 1566053, -962610, -2452426, 6575595, -1940788, 4032974, -578210, 3383361, 1921461, -949725, -4214437, --4132832, 1647657, -1055488, -6461779, -2353105, -1437740, 2542084, 823023, -405874, 2069101, -3146064, 1245541, -1732482, -2525978, -13390097, 8005282, 17891224, -1761474, -782758, -415001, -16625818, 5152350, 3977140, 2842195, 1954210, 2829847, -6568079, 1220845, -20626044, 2957622, --9949292, 8609799, 21060372, -2740189, 1515587, -16632261, 22200150, 10776610, 9418863, -2768643, --12242804, 1469953, -4194036, 11274826, 8061117, -10102837, 512175, 5949067, 4176856, -7819525, --6972880, 32556926, -7581691, -5674726, 6830609, -8288213, -6078453, 10354092, 10106595, 402653, -3866008, 3688840, -12639015, -6266358, -577136, 4296041, 10991358, 2729989, 2563022, -14230300, --1388348, 4203699, -19472844, 4263829, -5450851, -1957431, -3631395, 5719286, -5828808, -10540923, --11325829, -17838072, 2202781, -7225746, -3539590, 11436424, -3929895, 3716221, -20187956, -29528, -18482854, 4345433, -9423695, -5561983, 11200738, 5784247, -12416214, 6943889, -9011378, -6882685, --3013457, -1716913, 4134980, -1181653, 653372, -1896228, -2539936, 1508607, 2165201, -3124589, -2590939, 8205535, 1183800, -1098975, 3415573, 5194763, -2294050, 3542811, -2401961, -3155190, -793495, 2365990, 6697465, 1821066, -773094, 2503429, -1148367, 3540127, -2099165, 3257733, --2578591, 1104344, 2716030, 860067, -4834523, -2646237, 8500277, -3624953, -7044283, 3441880, -1662152, 2576444, -1968706, 11096585, 3071975, -2527588, -1442035, 2806224, -1246614, -10273562, --10315975, 24589224, -14688251, 3854196, -9383430, 28986198, 6171331, 5376762, -9244380, -10935524, -1070521, 8296803, -8866960, -14139032, -8403104, -20569672, -8011188, -12067784, -9664, -27652610, -1949915, 15015743, 9242233, 12277164, -8543227, 3219615, 13313862, -1517734, 9656160, 3612068, -15043123, -7518341, 12546673, 9997073, 7136625, 16319802, -9119289, 9731859, -4981089, -5768678, --3841312, 3628174, -31591632, -10078141, -19636054, 22759032, -14324253, -16146930, -3459596, 12853763, -358630, -5755256, 17879948, -6366216, -5671505, -12953084, -31960462, 1575716, 2966212, 13343927, --13405667, 63888, -8177081, -10755672, 17082696, -3427384, 8551817, -18562848, -18106508, -11264089, -14232985, -1446330, -9040906, -9556839, -400506, -15743739, -10784126, 1551020, -6635188, -11739219, -17313014, -23781234, -22705882, 5945846, 64961, 10031970, 1116155, -1081795, -7351911, -6448894, -1024350, -11243151, -4577362, 9594957, 1228898, 1649268, -5611375, 5680631, 2055142, -6143951, -2823941, -4555887, -992674, -4673998, 4001836, -6220724, -1627793, 4228396, 8173860, 913754, -260382, -8990440, -2800856, -628676, 1216550, -1342714, 7547868, -339839, -3026878, 4865661, --5804649, -5258114, 3105798, 6953015, -2087891, -4988068, -6861747, 5337571, 4185446, 8616778, --11810086, -9664, 15998753, 2165737, -4750771, 8294656, -12877386, 25841208, 16236050, -77309, --11723113, -13249974, 5618891, -3278671, -1149441, -623844, 23557358, -11457899, 488016, -7945153, -8701604, -14518063, -13338558, -26261040, 6154688, -10619844, -14767171, -1717450, -25010668, -12217034, -7115687, 5436355, -3396246, 13141526, 1256815, 15910706, -6942815, -21689048, -3274913, -15860777, --3009162, -4689568, -20861730, 2841121, 17055852, -47822852, 6102612, 232465, 11919071, -2263448, --14891188, -28325846, 11367705, -3370476, 10624675, 6470368, -3440269, 16726750, -20623360, 29078002, --7237557, 16281684, 33800856, 13651554, 24056112, 9587978, 6328098, -3139621, 12572443, -4525285, --13117904, -17558364, -11413339, -446677, 9981504, -1480153, -7715909, -10834592, -9818295, 13532905, --5944772, -4661114, 12006581, 2347737, 9045201, -766652, -1297617, -3474092, 2136209, 4714264, --6123013, -817654, -14997489, -10659572, 7386807, -3471944, -370441, -1999844, -275415, -5536213, --8974871, 6708739, -5399311, 8661875, -8633958, -3772592, -952946, -5851893, -3040837, 4472135, -1775432, 10473815, -2573222, -5906117, 3877819, -12029130, 208843, 1719061, -1899449, 1025960, --1359894, 6262063, 8693014, 1714229, -305480, -3957812, -7262253, -3280818, 423591, 14471892, -7134478, -6930467, 40353904, 32874216, 29614336, -6815576, 14496, -25249038, 18767396, 23305566, -7881802, 22512608, 8943196, 7620883, 7852811, -4034585, 3051574, 6196564, -5825050, -24319716, --14811195, -942208, -16202227, -18838800, -44218836, 9657234, 7549479, 11466489, -8533563, -3058017, --5956583, 273267, -13890461, -432718, -10605885, 12184822, 10082973, -6339909, -8650064, -23311472, -39113192, -12276627, 7646653, -48855, 2428267, 6226092, -16305843, 19520090, -9961103, 6653441, -4279935, -14638859, -15160698, -2815888, -1423782, 9055939, 41273024, -3482682, 6044093, 1348620, -12368969, 8861054, 9184251, -7331509, -2296734, 3559991, -20117626, 4048544, -17235166, -27347668, -9401683, 853625, 2042257, -20023138, -48220672, 20786568, 21594022, 14959908, -27407260, 25959320, -27461484, 10201084, 7870528, 237834, -8086887, -18170932, 13458280, -12804371, 686658, 222265, --7354595, 5485210, -13193066, -1364726, -2699387, 6455336, -3768297, -6009196, -8260296, 12426414, --6969122, -2960843, 3082713, -11166915, 6049999, 5083094, -4027606, -3907883, 920734, -10371272, -9429064, -3478387, -2762201, -864899, 641024, 7077569, -5748814, -13111461, 3726421, -7306813, --2448668, -7488276, -6828461, 1030792, -5561983, -2455648, -5199058, 16851304, -7667054, -13681618, -1955284, -4906464, -543313, -23617488, -47219944, 39336532, 6395743, 7049652, -15673946, -11263552, --50240916, 13994077, 36075576, 11116986, -31787052, -15866146, 5264020, -12327093, -7788387, 14830522, --16504486, 9347459, 8357470, 6919729, -18382996, 6678674, 5807333, -8591008, -17198122, -9931038, --6565395, -4398047, -16401406, -14148696, -7733626, -16930762, 13500693, -6275484, -21856552, -7507603, -13554380, -2713883, -15128485, -8308078, -7676717, 15032, -11973295, -7209103, -19899658, -18927384, -8178692, -6692633, 25029458, 16455093, 1693291, 14945949, -21713208, 14158360, -20606716, 17452062, --2892124, 8954470, -9142912, 30960808, -7619272, 17361868, -4342212, 25473452, 10323491, 6236293, --26152056, 28508382, 22865870, 9967008, 10669773, -20420958, -3823058, 8418673, 14067092, -3587372, -3458523, -22568442, 14586783, 24831354, -464393, -17721036, -955093, -11710228, -9972914, 4883378, -20938, -4879620, 5808407, -12936441, -2971044, 517007, 3764539, -8919573, -12191265, 4731444, --5902359, -11570105, -20700132, -1520955, 6516539, -1728724, -10392210, -12613245, -3806952, 8021925, --8610873, 3322157, 4711579, 1299765, 3478387, -1084479, -5522791, -4728759, -1510218, 5774584, -1998770, -2273648, -7743826, 10652056, -6853157, -6069326, -4991826, 2108292, 12468827, -8445516, -12276627, 10278394, -4077535, 3711389, 6551973, -33640332, 27238146, -4041564, 12670154, -18884972, --6622303, -5251135, -4954245, -4965519, 15609522, -248034, -14330695, 10227391, 1157494, 7182796, -13123809, 13258027, 9664, -12783970, 48810156, -14293651, 37372120, -401043, 1564442, -22256520, --10145786, 2902324, 17734994, 8451959, -6698539, 14440217, 2385854, -21499532, 2796024, 2405182, -20768314, -1431298, 12162811, -16449188, -668941, 13887240, 6551436, 11521787, 31553514, 25191594, --4688494, 12772159, -2674154, 24733642, -20985210, 16330539, 6228240, -1503239, 14555644, -8589935, -38821136, -7384660, 18428094, -14919106, -13401372, 89121, 41407244, 13131326, -39649528, 34039764, --1315871, 11572253, -30032022, 9447854, 2787434, -59479392, 24137180, 44461500, 16700443, -19376208, --12438225, 8565239, 43861280, 24698210, 33303714, -12868259, -16993574, -15563888, 6589017, 8653285, --2045478, -17502528, -8051990, 20483236, 3269007, 4241817, -7735236, 9116605, -2945811, 3842922, --4983236, -6253473, -7221988, 12148315, 20891794, 20089710, 4241280, 10407243, 19177566, 12411919, -13401372, 18224620, 10258529, 17377974, 13290239, 4370129, -27592480, -5893232, -13085692, 7036230, -15519864, -18748070, -6803228, 20813948, 11416023, 1841467, -5309117, 17523466, -14499273, 2681133, -18453326, 14114873, 7932268, 9272298, 11170673, 6017786, 2130841, -1839857, 2641942, 965294, -9556302, 11321534, 7347079, -9314710, -4706748, -16291885, 20001126, 2797098, 13253732, -11181947, -26809186, -9779641, 12399571, 3868155, 5439576, 3632469, 2201171, -28597502, -16524350, -167504, -2412698, 18964964, 15815680, -23416698, 2223183, -13072807, -11659226, 5305895, 1304596, -8289824, -9426916, 36907192, -24831890, -2379412, 57046292, -35196184, 4001836, 19975892, -10554345, -8847096, -11762305, 18403398, -20603494, 9669582, -37309308, -4466229, 55506548, 1977833, 15694347, -6339372, -30327300, 30055108, -8461086, -995359, -14442364, 3047279, -10676752, -27574226, -17432198, -32814624, --23864448, 35482872, 14464913, 10145250, 47858284, -34423628, -20067160, 5597416, 17944374, -13836237, -8740795, -14791330, 26521424, 15386183, 9200894, 18958522, 69446936, -16942572, -5394479, -19888920, --22306450, -1926293, 29235842, -23360864, -2913062, 20302848, 22370874, 25934624, 15479062, -18345416, -4666482, -10366977, -2037425, 14911053, 5091684, -1805497, 11648488, -21519396, 1537598, -111132, -5840619, -5210332, -5254356, 12309376, -4555887, -3662533, 14330695, 17677548, 14717242, 5885179, -6373732, 11480448, 3799972, 408022, 8554501, 307627, -4485020, 3110630, 165356, -1818919, --23365158, 5184563, 15578383, 24362666, -5474473, -7644505, -7874823, 12099997, 14696304, -32723892, -4212826, -14919643, -1663226, 1162862, 2480344, 8756365, 6957847, 5688148, -7963943, -16777216, -13727252, -4046396, 31344672, -28466506, 7196755, -2046015, -9131100, -8274792, -4114042, 9622874, -5916855, 6546604, -1509144, 17554606, 3070365, -22907744, -18064096, -2460480, -10616085, -13157632, -3006477, 14534706, -2040110, -3252901, -21027624, 10399190, -3375844, 21562884, -7322919, -41333692, -5061082, -12217034, -6241125, 118648, -33571612, -17598628, -28840168, 580357, -2103997, -8029978, --38182260, -15464030, -3344706, 20024212, 22057342, 1838783, 1677185, 10816875, 2433636, -26164404, -22990424, 31387084, -13604846, 4806606, -13633837, 5727876, -124017, 23933706, -26801670, -19362786, --61283816, -21659520, 15424301, 24765318, 17543868, 16016470, -15117748, -4933307, 12198781, 11807402, -26563836, 12686260, 11331734, 20546050, 5143760, -22470196, -24183350, -32678258, 13645111, -20859046, -1800665, -18280992, -28337120, -42800960, 6039798, -12343736, -13456133, 3898220, 3998078, -1551557, --6231461, 966368, 14074071, 9883257, 3562139, -5386426, 10155987, 23131620, -5156108, -12527346, --10407780, 11386495, -6087043, -5103495, -20651276, -19825570, -15391552, -33934536, -1967095, 170725, --13706314, 6105833, 9101573, 6785512, 16852914, 4764193, 19904490, 1389422, 5404680, 22131966, --10853919, -524523, 3183108, -102542, -15430207, -486405, -3078955, 26656178, -1833951, -10951630, -8185671, 3395709, 7633768, 17107928, -3082713, -185757, 9628780, 4460324, 415001, -1198296, --5352603, 5732708, -49129596, 20526722, -14724759, 1762547, 34804268, 29117730, -11643119, -4967667, -17886928, -11270531, -11862163, -9891310, 2333778, -3457449, -1399086, 4083440, -3926674, 17102560, -40889700, -17394080, -32195074, 31964220, -24965034, -6813966, 136902, 39908300, 2989834, -12212203, -11668889, 11045045, -41972568, -12418898, 6790344, -1743220, -19999516, -1619740, 7741679, -61612916, --28578712, 30327300, -30464204, -33901788, -20984674, 24737402, -32436130, -50710140, 50782620, -15137612, --31997506, -2006824, 19752554, -19654308, -34336116, -1013612, 15436112, -1933809, -44131864, 10180146, --775778, -19875498, 46134928, 43404404, -3430605, -17910014, -34456912, 52948356, 7274601, 9216463, -18228914, -13233331, -51645908, 23043036, 39284992, 31358094, -19624780, 11207717, 42872900, 24786794, --29832842, -6735046, -23420994, 10307385, 6355478, 26870926, 26613228, -32285806, -1194538, -3540127, -4737349, -12662100, 12815646, -8358543, 7394323, 6566468, 5393942, -9229885, 6966974, -13706314, -22304838, -11518565, -5767068, 14052596, 12358768, -13084618, 2014340, -6196027, -15105937, -8216273, -6018860, 11725798, 7232188, -12340515, 6813966, -7985418, -18769008, 782758, 3332895, -3142842, --1553168, 12626130, 795643, 1279363, 5997385, -1857037, 3226594, -20229296, 15092515, 5400922, --51140176, 5202279, 47486768, 25675852, 6323803, -1005022, -9033390, 12044162, -17245904, 39351564, --3402688, 10194642, 14316200, -14085345, 167504, -2134599, -15511811, -469762, 5382668, 21889300, --441308, -14252312, 6518687, 17530446, -3329137, 28026272, -22448184, 4197794, 6054294, 7004018, -24304146, -13927505, 1819456, -1353452, -32529546, 4145717, -10872173, -18008798, 7172596, -7120519, -24939802, 17788680, -13612899, -29291140, 13362180, 2353642, 5434208, 15679852, 34754876, -6429029, -6929930, -14702210, 19801946, 13967234, 14718853, -17183090, 22732726, -8374650, -10411538, -20643224, --2144263, -8429410, 29540248, -22718766, 1279900, 6940667, -7141457, -14039711, 41385768, -2266132, -9577240, -4269735, 4707284, -3906273, 11378442, -1891396, -5397700, -3789772, -4786741, 13515725, -9384504, 12700218, 6999186, 3787088, -9294846, 9288941, 467615, 4988605, 4320737, 11392401, --1952600, 56908, 1606855, 3408594, 3605088, 8405251, -7532836, 5175436, 4537633, 3964255, -3338263, 2645700, 8293582, 2976949, -11521250, 6489696, 7534447, 7842074, 3288871, 8452496, -2152316, -865973, 4705137, 2545305, 6058052, -819265, -5858336, 1085553, 8495982, -4733054, -3387119, 166967, 9279277, 8284992, 3076270, 5745056, 8620536, 3875134, 6958384, 16689706, --44396540, -124570160, -118455200, 51470352, 5023501, 113868712, 241192480, 52823804, 97189208, 51869784, --178961088, -80073224, -120373976, -176707840, -11886322, 20905216, -83530672, 74221864, 126175936, 77317464, -217321056, 133438728, 1173063, -20079508, -76971184, -191963024, -155593248, -66986456, -147392544, -43436616, -84170624, 25076166, 21255794, 199150656, 76747848, 48541720, 184213296, 8769249, -9389872, 85004384, --42388644, -151886144, -73640976, -151770720, -221850096, -24515674, -100831336, -82188496, 70899712, 137723488, -63592896, 243323856, 193715376, 112453520, 147090288, 49947248, -72261752, -111118856, -148339040, -237334528, --190449056, -127634616, -108925200, -33776160, 82558400, 125672888, 139852720, 188247872, 158296928, 74334072, -26876832, 40891308, -63684164, -97307856, -69318624, -145430816, -109667696, -18749680, -65541736, 26057030, -106378824, 38182260, 54191748, 77508056, 8049843, 4753455, -19057844, -72790568, -38388416, 738734, --29322816, 22639310, 30674120, -12412455, 38947300, 33801928, -53022980, 40510668, 46875272, -33086280, -76542760, 11850889, -75806176, 53009024, -41699836, -147508512, -24664386, -89593552, -109226384, 67418104, -8250096, 17264158, 141813376, 90447176, 100240240, 161683504, 118549688, 39527120, 16706349, -112363320, --204874240, -203387632, -204411984, -192866576, -118081536, 6199786, 110640504, 163078304, 222916320, 207487184, -195545024, 154524864, 25860534, -70851392, -78206520, -163796624, -203262016, -121908888, -109767552, -60799556, -10871636, 29502130, 34922380, 69923680, 60793652, 57636312, 80866720, 67270464, 42054172, 37154688, -7705172, -23409182, -41954316, -50718196, -68838664, -57800596, -46001248, -35788352, -11805791, 12075837, -20795694, 30060476, 35089884, 33999496, 25931402, 20927228, 9119289, -715649, -4572530, -4766877, --9295920, -7206419, -4793184, -5450851, -5377299, -1381369, -7475928, -8608188, -8471286, -13127031, --14709726, -8643622, -7382512, 4129074, 17818746, 23784992, 24197308, 22899692, 14922864, 10889353, -4014721, -6808597, -17940078, -21398600, -23333484, -20936892, -15610059, -7123204, 973347, 10068477, -15825344, 16633335, 13915157, 10421738, 3864934, -1120987, -5113159, -7458748, -8167417, -5198521, --2738579, 943819, 3526705, 5567888, 5354214, 3582003, -625455, -3535295, -5954436, -6616934, --5913633, -3850438, -1870995, 1142461, 3083787, 4349728, 4837207, 4627828, 3320547, 2259153, -1078574, 20401, -941135, -1369558, -1687922, -1490354, -1090922, -672699, -493384, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-12826383, 6532109, -2314451, 5718212, -2777770, -2840584, -5715528, 1399623, 1261647, -214748, +134218, -602369, -4362613, -468688, -2477659, -2852932, -2704219, -62277, 370978, -176631, +-455803, 2226941, -566936, -6618545, 4184372, 2103460, -2230699, 708670, -25770, 114354, +974421, 4326106, -2348273, 296353, -7511898, 3805878, 780610, 1742146, 2647311, 4283156, +-2333778, -1759863, -820876, -3753802, 340913, -528281, 3317862, -1721745, -188979, -1794223, +-2069637, 4039954, -2976949, -1413044, 410169, -2690260, 2317672, -57982, -1249836, 2515777, +4568235, 328565, -142271, -592169, 3909494, -3808026, 67109, -557272, 2061047, -903554, +-1733019, 4261682, -42950, 935229, -1139777, 920734, 2298344, -1771674, -2511482, 175020, +2244657, 3764539, -1644436, -1087701, 944893, 248034, 597537, -1658931, -521302, 1064615, +-201327, 762357, -1320703, -372052, -804770, -1115618, -815507, -734439, 617938, 153008, +-563714, 642098, 433792, -484794, -140660, -82678, -706522, -1264331, -345208, 49929, +294742, 761820, -75162, 510564, 289373, -569083, 545998, -15329275, 2623151, 1826972, +5393405, -2094870, 1645509, 6265821, -2405719, 1721745, -3777424, -5555540, 2054068, -3778498, +-4308389, -4329327, 1324461, 1665911, -7386270, 4362613, 2903935, -1250372, -2692408, 1741072, +-654446, -1677722, 555661, 2462627, 1835562, 3927748, 777389, -1186485, 4056597, -2023467, +8824010, 1988570, 5445482, 2096481, 4780836, 2124398, 3302830, 1780264, 416075, 187368, +6685654, 1134408, -1043677, 445066, 3543348, 2608656, 409633, -294742, -1342177, 745177, +8153996, 2333241, 3784403, -3924526, -1991791, -4139275, -2588792, -4018479, 3049427, 1908039, +-2538326, -1829119, 1840930, -1915019, 2051384, -901406, -577136, -2780455, -4655745, 2018098, +-7581691, -1076426, -1592896, -1927904, 447213, -1778653, 390842, 2866891, 1423245, -1955284, +389768, -1551557, -3280818, -539018, 1626719, -165356, -2523830, 928787, 506806, 969589, +1791538, 65498, 284542, -1207960, -690416, -180926, 19327, 627602, -1345399, -1188632, +129386, 8551280, 11814381, -3731253, 3114388, -5996848, -398358, 267899, 15119359, -1640141, +-4101157, -6637872, 69793, 4277788, 6910066, -1661616, -9260486, -2725157, -3582003, -2591476, +3037079, -758062, 5757404, 566399, -3384971, -7508140, 2145336, -780610, 1643362, -980326, +756988, 3553012, 1253057, -9424769, 1043140, 5923834, 2874407, 653909, 1357210, -1585917, +4082367, -5607617, -620086, 4470524, -3223910, -84826, 7320235, -3504693, -431107, -2594160, +4472135, -4874788, -3635690, 2130304, -5048197, -2534568, 6380711, 3713536, -5857262, -2216203, +-949725, -1519882, -2714956, 1988570, -2342368, 2293513, -153545, 267899, 959388, 4791573, +-637803, 6638409, 3393024, -5250598, -2462627, -2607045, 3956202, 1117228, -355409, -2161442, +5325760, 1997160, -184147, -203474, -1435593, -1328219, 1522029, 536334, 1697049, 4133369, +1449552, -314606, 192737, 253940, 1285269, -367220, 437550, 1930588, 354872, 2410014, +-537, 797253, 1194001, 1443646, 465467, 882616, 1026497, 827318, 1351304, -526134, +358093, 897111, 1385127, -213138, -1202054, -1402307, 239444, 28406376, -10473815, 5777805, +-7996156, -813896, 296890, -563714, -4233227, 2346126, 3279745, 816044, -3076807, -6554657, +-235149, 4042101, 2865817, -2867965, -4942434, -374199, 4443144, 8123931, -4361540, -561567, +-3291556, -7062000, 799401, -3539053, 2157147, -2612414, 5519033, -9651328, 6539625, -400506, +-5759551, 1432909, 2428804, -652835, -3049964, 219043, 7572564, -255014, 1247151, -1039382, +2898029, 1367410, -1788854, -2811593, -6226629, 4068945, -1305670, -1799054, 2390686, 75699, +-10467372, 8074539, -11266773, -6465537, -7981660, 1753957, -941672, 4816269, -2619393, 2578591, +-4809827, 2345589, -1264868, -1927367, -5306969, 3281355, 3719442, 6413460, -1561221, -572841, +1716913, -1899986, -1156420, 1265942, 3673808, -4840428, 2399276, 3543885, 3881040, -6142877, +-5067525, 2158758, -3174518, 1653026, -69793, -329639, 526134, 819265, -281320, 1501628, +-1819992, 918586, -579284, 3658239, 194347, 929324, 792421, 275415, -1446330, -78920, +330712, -390305, -22395034, 2284923, 238371, -1900523, -3453154, 3920232, -3036542, 2609193, +-802622, -37044, 3622805, 4715874, -2896956, 3474092, -1009854, -1912334, -6279779, -305480, +-8485782, -6229850, 7475928, 2669322, -2889439, -1054415, -871878, 5189394, 2741800, -2663417, +4733591, 3149822, 1860258, 1640141, 2019172, 3605625, 3106872, 3063922, 8362302, 7523709, +3256659, 838592, -5182952, 5786395, -7704635, 1531156, -2138357, 6267968, -4708358, -6133750, +10566693, -2451353, -5641440, -5035849, 7868917, 4830228, 303332, 4046396, 5717139, 2623688, +9236864, -542240, -1439351, 5240397, 3215857, 315143, 224412, -4789963, 2894808, 3000035, +7461969, 3037616, 4653597, -2852932, -3806415, -8118562, -1848447, -4387846, -3476239, -3693672, +4124779, -137976, 336081, -2372433, -2733210, -756988, -2401961, 759136, -1611687, -2685965, +1125281, -257161, 121333, -2513093, -346819, 112743, -3153580, -426812, -734976, 220654, +-1404991, -1640141, -1000727, -602369, 78920, -520228, 525060, -732829, 909996, 223875, +807454, 1752884, -376883, 1851131, 401043, 1220308, -819265, 388695, -1565516, -579284, +-242666, -1902134, -566936, -927713, -29732984, 8126615, -6255620, -9305584, -9199820, 5897527, +-6798397, 5223217, -8570070, 4900021, 4202089, 2627983, -9028021, 6380711, 5369, 3908420, +-7459822, 4335770, 9079561, 6966974, 364535, -3095061, 1377074, -1821066, -9546639, -1842541, +-4527433, 2326262, -5961415, 5334887, 5236102, -1908039, -108448, 7297150, -1458678, 4987531, +-3804804, -6146635, 3379066, 5369, 3492345, 8949638, 5493800, -215822, -15288473, -7271917, +-2022930, 2252174, -2253784, 8597988, -13267154, 4350265, 1932735, -21475, 4312147, -1620276, +6616397, -13916768, -6432788, 5549635, -13984950, -2500745, 6696391, 2470143, -2999498, -9292162, +3608310, 6182606, 4569309, -1566589, -9752797, -738198, 190052, -1007170, -411780, -4719632, +2305324, -7617662, 4868883, 781147, -4471061, 1018981, -5401458, 530965, -6483253, -1735704, +2428267, 2544231, 330176, -523986, -2159295, -1604707, 576063, -3767223, 3237332, 350040, +-1761474, 122407, -3232500, -2530273, 861141, -1267552, 1929514, -1653562, -869194, -1046361, +-1154809, -2156074, -267899, -1155346, -388695, 741419, -413927, -913217, 946503, -303869, +-760209, -787590, -1893007, -1300301, 381715, 1167694, -190589, -14039711, 1512365, 2335389, +10994043, -10390600, 12006044, 3397319, -968515, -2828236, -1294396, 1105417, -8778376, -1690607, +2815351, -2894808, -5150740, -1403381, 8307541, -8591008, -1863479, 8581882, 42413, -3420942, +3035468, -4194573, 6329708, 2765422, -75699, 3147674, -3665755, -5796059, -407485, 424665, +4738423, -10152766, -5458904, -4491462, -3124589, -3022046, -3064996, 1501091, 504122, 823023, +-7555921, -7787850, -6159520, 203474, -9708237, -5388037, 5826660, -3957276, 1293322, 597537, +-175557, 2405719, 3459596, 3265249, 3915400, 5709086, -1006096, 6177774, -389768, 3111704, +-511101, -4007741, -228707, -6448894, 3976603, -7544110, 7026567, -8415988, -120796, -8680666, +828392, -8723079, -8355322, 3928821, 11522324, 3445638, -7418483, 5266704, 7516, -3313567, +-1952063, -3471407, 4588099, 3914863, 5640903, 981400, 4400194, -3743601, -390305, 4269198, +515396, 1294396, 857920, -2128693, 2588792, -270046, 970126, 3777424, 1127966, -987843, +-2269890, -1086627, 1583232, 1518808, 1253594, 401579, -1766842, 97174, -368830, -4037269, +3890704, 406948, 1428614, 140123, -940598, -1934883, 1374390, -1972464, -914828, 38830264, +267899, -11457362, 1574642, -6314139, 15363098, -2752000, 4181688, 932545, 557809, -13882408, +-7204271, 7375533, 6470368, -10984916, -2086817, -537945, 9397388, 4504347, 3457449, 9190693, +1287953, 403190, 7971996, -3069291, -12621298, 1622961, 9316321, 5410585, -3788698, -28454, +6440304, 3823058, 1624571, -574452, -7162395, 3172907, -7773354, 532576, -14469208, 3521336, +4212826, -1380832, -6758131, 8842264, 4583804, -2106145, 6868190, 3024194, -6129455, 10657961, +991064, -4089346, 2345589, 10932302, 1556926, -519691, -9494562, -5665599, 1126355, 3550864, +12543989, -4429722, -5221070, 867583, 6767258, -4723391, -5692979, -734439, 9071508, 6381785, +-2480344, -7339562, -546535, 7836168, -3388729, 16532940, 3482682, 2263985, -8758512, 7043747, +270046, -2100239, -4533338, 183610, -2606508, 201863, 10206990, 4482335, 3613141, 1731946, +1035624, -78383, -837519, 709207, 1925219, 3490198, 418222, 419833, 1216550, -3097208, +-97174, 974421, -797790, 2999498, -2466922, -325881, -1287953, 1020055, 5355288, 1621350, +-1876364, -676457, 1159641, 200790, 1687385, -624918, -2528125, 1927367, 1819456, -2133525, +-653909, 4585952, 1511829, 2222109, 8858370, 4729833, -13822279, -1390496, -6962679, 13990856, +-5179731, 6542309, 1298691, 8773008, 3500935, 1331977, -660351, 3583077, -3929895, -5891622, +-16353625, -12115029, 4076461, 10836739, 14566918, -5310190, -7021735, -6208912, 3301756, -3393561, +-673236, -564788, 2021856, 2229088, 9754408, -5141076, 981400, 2403034, 4803384, -4668093, +-3402151, -7714835, -5161477, -5376762, -9121974, -23337242, -191663, -3119757, -9951976, 2258616, +-1048509, -12658342, 4339528, -10735271, 2841658, -1303523, -790274, 5447093, 7149510, -205622, +-10377715, 3078955, -6476811, -7260106, 10180146, 9096741, 10255845, -3323231, 1749125, 1336272, +-5075041, 790274, -2381023, 15888695, -2516314, -1655173, -1462973, -133681, -9594957, -12045236, +2976949, -902480, -773631, 2691334, 17427904, -2165201, -7983808, -3449933, 9211631, -1355599, +-2818572, -2647847, -54224, -7406671, 1917166, -1453310, 1514513, -3762928, 302258, -4725538, +-256087, -340913, 2038499, -2011118, -818728, -2910377, 4015258, 196495, -2691334, 581431, +1430761, -3091303, 928250, 1142461, 4884452, -1040993, 1248762, 3291019, 2225867, -1792612, +2164127, -3663607, -5719286, 650151, 720481, -2289755, -5317170, -1192927, -1189169, 4784057, +1963337, 3184182, -395674, 3990025, 4538707, -15261629, 5652177, 1875290, 16141024, -10842645, +-6138582, -3592740, 8622684, -8209830, -7892003, 7149510, 4812511, -8303783, -8380555, -8199630, +-18372260, 12081206, 11336566, 12028593, -5164698, 3815005, 11929272, -17259326, 32212, 11359115, +10523207, 4789963, -18790, -5511517, 1163936, -2643552, -14939507, 1916629, 4103305, 2216740, +9921374, -8715026, 948651, -16307454, -2065879, 3252364, -8966281, 3495030, 2762201, 7330973, +8935143, 12449500, -2536178, -4850629, -14992120, -10676752, 4630512, 22060562, -6833293, -887985, +-10152229, -5351530, -8054675, 4776004, 4882841, -1664837, 723165, -16094853, -2126009, 10943577, +-8711804, -7521562, 6475200, -2879776, 9473624, 2374043, -6961605, 1153199, -10517838, -3000035, +-2778844, 20318416, -2032593, -5910412, 4440996, 4171487, -1785633, -3421478, -1040456, -2744484, +-3776350, -3482682, -2692408, 1454920, 1570347, 3300682, -851477, -21475, -1963874, 2011655, +504659, -5177046, 1383516, -17717, -574989, 1911261, -128312, -2814277, -2825552, -6699075, +2229625, -2088965, 1971927, 2597918, -3179350, 1473711, 901406, -646393, 2535105, 38118, +7274064, 1050656, -1341640, 201327, -2138894, -354335, 1249836, 233539, -656593, 620086, +-2871723, 2306934, -9378598, 22081500, -10710038, -5456219, -323733, -608812, -15476915, 1122060, +-11366094, 8418136, -21464100, -3025268, -6781754, 7488276, -7305203, -7347079, -18140868, 12428025, +-7387344, 5181341, -5753109, 3805878, 9845139, -6935836, -11850889, -3894462, 8318278, 17132624, +5588826, 7250442, 967441, -16990354, -9044127, -9096204, -4621385, 3130494, 15650324, 6828461, +9167608, 8617852, -2248416, -3476239, -5096516, -14172318, 903017, -9846213, 15622407, -6942278, +10798622, 2433099, -5461588, 3726958, -3594888, -4703526, -8317741, 12884365, 3457986, 21664888, +4832375, -22996328, -5651640, 7581154, 6144488, 3547106, -1188632, 2215666, 24348170, 12282533, +-3977677, 2773475, -6406481, 17726404, -555661, -519691, 6950868, -15295989, -6560563, -5087389, +-16429324, -19423990, 4002910, 7167764, -1719061, -9482214, -2414309, -2898566, -7472170, 294742, +-1436667, -5827197, 6082748, 9341017, -1902134, -1171452, -1274532, -3419868, 2735894, 794569, +-937377, -1671279, -1489280, -902480, 3124589, -1586454, -4211753, -871878, -106837, 1566053, +962610, -2452426, 6575595, -1940788, 4032974, -578210, 3383361, 1921461, -949725, -4214437, +-4132832, 1647657, -1055488, -6461779, -2353105, -1437740, 2542084, 823023, -405874, 2069101, +3146064, 1245541, -1732482, -2525978, -13390097, 8005282, 17891224, -1761474, -782758, -415001, +16625818, 5152350, 3977140, 2842195, 1954210, 2829847, -6568079, 1220845, -20626044, 2957622, +-9949292, 8609799, 21060372, -2740189, 1515587, -16632261, 22200150, 10776610, 9418863, -2768643, +-12242804, 1469953, -4194036, 11274826, 8061117, -10102837, 512175, 5949067, 4176856, -7819525, +-6972880, 32556926, -7581691, -5674726, 6830609, -8288213, -6078453, 10354092, 10106595, 402653, +3866008, 3688840, -12639015, -6266358, -577136, 4296041, 10991358, 2729989, 2563022, -14230300, +-1388348, 4203699, -19472844, 4263829, -5450851, -1957431, -3631395, 5719286, -5828808, -10540923, +-11325829, -17838072, 2202781, -7225746, -3539590, 11436424, -3929895, 3716221, -20187956, -29528, +18482854, 4345433, -9423695, -5561983, 11200738, 5784247, -12416214, 6943889, -9011378, -6882685, +-3013457, -1716913, 4134980, -1181653, 653372, -1896228, -2539936, 1508607, 2165201, -3124589, +2590939, 8205535, 1183800, -1098975, 3415573, 5194763, -2294050, 3542811, -2401961, -3155190, +793495, 2365990, 6697465, 1821066, -773094, 2503429, -1148367, 3540127, -2099165, 3257733, +-2578591, 1104344, 2716030, 860067, -4834523, -2646237, 8500277, -3624953, -7044283, 3441880, +1662152, 2576444, -1968706, 11096585, 3071975, -2527588, -1442035, 2806224, -1246614, -10273562, +-10315975, 24589224, -14688251, 3854196, -9383430, 28986198, 6171331, 5376762, -9244380, -10935524, +1070521, 8296803, -8866960, -14139032, -8403104, -20569672, -8011188, -12067784, -9664, -27652610, +1949915, 15015743, 9242233, 12277164, -8543227, 3219615, 13313862, -1517734, 9656160, 3612068, +15043123, -7518341, 12546673, 9997073, 7136625, 16319802, -9119289, 9731859, -4981089, -5768678, +-3841312, 3628174, -31591632, -10078141, -19636054, 22759032, -14324253, -16146930, -3459596, 12853763, +358630, -5755256, 17879948, -6366216, -5671505, -12953084, -31960462, 1575716, 2966212, 13343927, +-13405667, 63888, -8177081, -10755672, 17082696, -3427384, 8551817, -18562848, -18106508, -11264089, +14232985, -1446330, -9040906, -9556839, -400506, -15743739, -10784126, 1551020, -6635188, -11739219, +17313014, -23781234, -22705882, 5945846, 64961, 10031970, 1116155, -1081795, -7351911, -6448894, +1024350, -11243151, -4577362, 9594957, 1228898, 1649268, -5611375, 5680631, 2055142, -6143951, +2823941, -4555887, -992674, -4673998, 4001836, -6220724, -1627793, 4228396, 8173860, 913754, +260382, -8990440, -2800856, -628676, 1216550, -1342714, 7547868, -339839, -3026878, 4865661, +-5804649, -5258114, 3105798, 6953015, -2087891, -4988068, -6861747, 5337571, 4185446, 8616778, +-11810086, -9664, 15998753, 2165737, -4750771, 8294656, -12877386, 25841208, 16236050, -77309, +-11723113, -13249974, 5618891, -3278671, -1149441, -623844, 23557358, -11457899, 488016, -7945153, +8701604, -14518063, -13338558, -26261040, 6154688, -10619844, -14767171, -1717450, -25010668, -12217034, +7115687, 5436355, -3396246, 13141526, 1256815, 15910706, -6942815, -21689048, -3274913, -15860777, +-3009162, -4689568, -20861730, 2841121, 17055852, -47822852, 6102612, 232465, 11919071, -2263448, +-14891188, -28325846, 11367705, -3370476, 10624675, 6470368, -3440269, 16726750, -20623360, 29078002, +-7237557, 16281684, 33800856, 13651554, 24056112, 9587978, 6328098, -3139621, 12572443, -4525285, +-13117904, -17558364, -11413339, -446677, 9981504, -1480153, -7715909, -10834592, -9818295, 13532905, +-5944772, -4661114, 12006581, 2347737, 9045201, -766652, -1297617, -3474092, 2136209, 4714264, +-6123013, -817654, -14997489, -10659572, 7386807, -3471944, -370441, -1999844, -275415, -5536213, +-8974871, 6708739, -5399311, 8661875, -8633958, -3772592, -952946, -5851893, -3040837, 4472135, +1775432, 10473815, -2573222, -5906117, 3877819, -12029130, 208843, 1719061, -1899449, 1025960, +-1359894, 6262063, 8693014, 1714229, -305480, -3957812, -7262253, -3280818, 423591, 14471892, +7134478, -6930467, 40353904, 32874216, 29614336, -6815576, 14496, -25249038, 18767396, 23305566, +7881802, 22512608, 8943196, 7620883, 7852811, -4034585, 3051574, 6196564, -5825050, -24319716, +-14811195, -942208, -16202227, -18838800, -44218836, 9657234, 7549479, 11466489, -8533563, -3058017, +-5956583, 273267, -13890461, -432718, -10605885, 12184822, 10082973, -6339909, -8650064, -23311472, +39113192, -12276627, 7646653, -48855, 2428267, 6226092, -16305843, 19520090, -9961103, 6653441, +4279935, -14638859, -15160698, -2815888, -1423782, 9055939, 41273024, -3482682, 6044093, 1348620, +12368969, 8861054, 9184251, -7331509, -2296734, 3559991, -20117626, 4048544, -17235166, -27347668, +9401683, 853625, 2042257, -20023138, -48220672, 20786568, 21594022, 14959908, -27407260, 25959320, +27461484, 10201084, 7870528, 237834, -8086887, -18170932, 13458280, -12804371, 686658, 222265, +-7354595, 5485210, -13193066, -1364726, -2699387, 6455336, -3768297, -6009196, -8260296, 12426414, +-6969122, -2960843, 3082713, -11166915, 6049999, 5083094, -4027606, -3907883, 920734, -10371272, +9429064, -3478387, -2762201, -864899, 641024, 7077569, -5748814, -13111461, 3726421, -7306813, +-2448668, -7488276, -6828461, 1030792, -5561983, -2455648, -5199058, 16851304, -7667054, -13681618, +1955284, -4906464, -543313, -23617488, -47219944, 39336532, 6395743, 7049652, -15673946, -11263552, +-50240916, 13994077, 36075576, 11116986, -31787052, -15866146, 5264020, -12327093, -7788387, 14830522, +-16504486, 9347459, 8357470, 6919729, -18382996, 6678674, 5807333, -8591008, -17198122, -9931038, +-6565395, -4398047, -16401406, -14148696, -7733626, -16930762, 13500693, -6275484, -21856552, -7507603, +13554380, -2713883, -15128485, -8308078, -7676717, 15032, -11973295, -7209103, -19899658, -18927384, +8178692, -6692633, 25029458, 16455093, 1693291, 14945949, -21713208, 14158360, -20606716, 17452062, +-2892124, 8954470, -9142912, 30960808, -7619272, 17361868, -4342212, 25473452, 10323491, 6236293, +-26152056, 28508382, 22865870, 9967008, 10669773, -20420958, -3823058, 8418673, 14067092, -3587372, +3458523, -22568442, 14586783, 24831354, -464393, -17721036, -955093, -11710228, -9972914, 4883378, +20938, -4879620, 5808407, -12936441, -2971044, 517007, 3764539, -8919573, -12191265, 4731444, +-5902359, -11570105, -20700132, -1520955, 6516539, -1728724, -10392210, -12613245, -3806952, 8021925, +-8610873, 3322157, 4711579, 1299765, 3478387, -1084479, -5522791, -4728759, -1510218, 5774584, +1998770, -2273648, -7743826, 10652056, -6853157, -6069326, -4991826, 2108292, 12468827, -8445516, +12276627, 10278394, -4077535, 3711389, 6551973, -33640332, 27238146, -4041564, 12670154, -18884972, +-6622303, -5251135, -4954245, -4965519, 15609522, -248034, -14330695, 10227391, 1157494, 7182796, +13123809, 13258027, 9664, -12783970, 48810156, -14293651, 37372120, -401043, 1564442, -22256520, +-10145786, 2902324, 17734994, 8451959, -6698539, 14440217, 2385854, -21499532, 2796024, 2405182, +20768314, -1431298, 12162811, -16449188, -668941, 13887240, 6551436, 11521787, 31553514, 25191594, +-4688494, 12772159, -2674154, 24733642, -20985210, 16330539, 6228240, -1503239, 14555644, -8589935, +38821136, -7384660, 18428094, -14919106, -13401372, 89121, 41407244, 13131326, -39649528, 34039764, +-1315871, 11572253, -30032022, 9447854, 2787434, -59479392, 24137180, 44461500, 16700443, -19376208, +-12438225, 8565239, 43861280, 24698210, 33303714, -12868259, -16993574, -15563888, 6589017, 8653285, +-2045478, -17502528, -8051990, 20483236, 3269007, 4241817, -7735236, 9116605, -2945811, 3842922, +-4983236, -6253473, -7221988, 12148315, 20891794, 20089710, 4241280, 10407243, 19177566, 12411919, +13401372, 18224620, 10258529, 17377974, 13290239, 4370129, -27592480, -5893232, -13085692, 7036230, +15519864, -18748070, -6803228, 20813948, 11416023, 1841467, -5309117, 17523466, -14499273, 2681133, +18453326, 14114873, 7932268, 9272298, 11170673, 6017786, 2130841, -1839857, 2641942, 965294, +9556302, 11321534, 7347079, -9314710, -4706748, -16291885, 20001126, 2797098, 13253732, -11181947, +26809186, -9779641, 12399571, 3868155, 5439576, 3632469, 2201171, -28597502, -16524350, -167504, +2412698, 18964964, 15815680, -23416698, 2223183, -13072807, -11659226, 5305895, 1304596, -8289824, +9426916, 36907192, -24831890, -2379412, 57046292, -35196184, 4001836, 19975892, -10554345, -8847096, +11762305, 18403398, -20603494, 9669582, -37309308, -4466229, 55506548, 1977833, 15694347, -6339372, +30327300, 30055108, -8461086, -995359, -14442364, 3047279, -10676752, -27574226, -17432198, -32814624, +-23864448, 35482872, 14464913, 10145250, 47858284, -34423628, -20067160, 5597416, 17944374, -13836237, +8740795, -14791330, 26521424, 15386183, 9200894, 18958522, 69446936, -16942572, -5394479, -19888920, +-22306450, -1926293, 29235842, -23360864, -2913062, 20302848, 22370874, 25934624, 15479062, -18345416, +4666482, -10366977, -2037425, 14911053, 5091684, -1805497, 11648488, -21519396, 1537598, -111132, +5840619, -5210332, -5254356, 12309376, -4555887, -3662533, 14330695, 17677548, 14717242, 5885179, +6373732, 11480448, 3799972, 408022, 8554501, 307627, -4485020, 3110630, 165356, -1818919, +-23365158, 5184563, 15578383, 24362666, -5474473, -7644505, -7874823, 12099997, 14696304, -32723892, +4212826, -14919643, -1663226, 1162862, 2480344, 8756365, 6957847, 5688148, -7963943, -16777216, +13727252, -4046396, 31344672, -28466506, 7196755, -2046015, -9131100, -8274792, -4114042, 9622874, +5916855, 6546604, -1509144, 17554606, 3070365, -22907744, -18064096, -2460480, -10616085, -13157632, +3006477, 14534706, -2040110, -3252901, -21027624, 10399190, -3375844, 21562884, -7322919, -41333692, +5061082, -12217034, -6241125, 118648, -33571612, -17598628, -28840168, 580357, -2103997, -8029978, +-38182260, -15464030, -3344706, 20024212, 22057342, 1838783, 1677185, 10816875, 2433636, -26164404, +22990424, 31387084, -13604846, 4806606, -13633837, 5727876, -124017, 23933706, -26801670, -19362786, +-61283816, -21659520, 15424301, 24765318, 17543868, 16016470, -15117748, -4933307, 12198781, 11807402, +26563836, 12686260, 11331734, 20546050, 5143760, -22470196, -24183350, -32678258, 13645111, -20859046, +1800665, -18280992, -28337120, -42800960, 6039798, -12343736, -13456133, 3898220, 3998078, -1551557, +-6231461, 966368, 14074071, 9883257, 3562139, -5386426, 10155987, 23131620, -5156108, -12527346, +-10407780, 11386495, -6087043, -5103495, -20651276, -19825570, -15391552, -33934536, -1967095, 170725, +-13706314, 6105833, 9101573, 6785512, 16852914, 4764193, 19904490, 1389422, 5404680, 22131966, +-10853919, -524523, 3183108, -102542, -15430207, -486405, -3078955, 26656178, -1833951, -10951630, +8185671, 3395709, 7633768, 17107928, -3082713, -185757, 9628780, 4460324, 415001, -1198296, +-5352603, 5732708, -49129596, 20526722, -14724759, 1762547, 34804268, 29117730, -11643119, -4967667, +17886928, -11270531, -11862163, -9891310, 2333778, -3457449, -1399086, 4083440, -3926674, 17102560, +40889700, -17394080, -32195074, 31964220, -24965034, -6813966, 136902, 39908300, 2989834, -12212203, +11668889, 11045045, -41972568, -12418898, 6790344, -1743220, -19999516, -1619740, 7741679, -61612916, +-28578712, 30327300, -30464204, -33901788, -20984674, 24737402, -32436130, -50710140, 50782620, -15137612, +-31997506, -2006824, 19752554, -19654308, -34336116, -1013612, 15436112, -1933809, -44131864, 10180146, +-775778, -19875498, 46134928, 43404404, -3430605, -17910014, -34456912, 52948356, 7274601, 9216463, +18228914, -13233331, -51645908, 23043036, 39284992, 31358094, -19624780, 11207717, 42872900, 24786794, +-29832842, -6735046, -23420994, 10307385, 6355478, 26870926, 26613228, -32285806, -1194538, -3540127, +4737349, -12662100, 12815646, -8358543, 7394323, 6566468, 5393942, -9229885, 6966974, -13706314, +22304838, -11518565, -5767068, 14052596, 12358768, -13084618, 2014340, -6196027, -15105937, -8216273, +6018860, 11725798, 7232188, -12340515, 6813966, -7985418, -18769008, 782758, 3332895, -3142842, +-1553168, 12626130, 795643, 1279363, 5997385, -1857037, 3226594, -20229296, 15092515, 5400922, +-51140176, 5202279, 47486768, 25675852, 6323803, -1005022, -9033390, 12044162, -17245904, 39351564, +-3402688, 10194642, 14316200, -14085345, 167504, -2134599, -15511811, -469762, 5382668, 21889300, +-441308, -14252312, 6518687, 17530446, -3329137, 28026272, -22448184, 4197794, 6054294, 7004018, +24304146, -13927505, 1819456, -1353452, -32529546, 4145717, -10872173, -18008798, 7172596, -7120519, +24939802, 17788680, -13612899, -29291140, 13362180, 2353642, 5434208, 15679852, 34754876, -6429029, +6929930, -14702210, 19801946, 13967234, 14718853, -17183090, 22732726, -8374650, -10411538, -20643224, +-2144263, -8429410, 29540248, -22718766, 1279900, 6940667, -7141457, -14039711, 41385768, -2266132, +9577240, -4269735, 4707284, -3906273, 11378442, -1891396, -5397700, -3789772, -4786741, 13515725, +9384504, 12700218, 6999186, 3787088, -9294846, 9288941, 467615, 4988605, 4320737, 11392401, +-1952600, 56908, 1606855, 3408594, 3605088, 8405251, -7532836, 5175436, 4537633, 3964255, +3338263, 2645700, 8293582, 2976949, -11521250, 6489696, 7534447, 7842074, 3288871, 8452496, +2152316, -865973, 4705137, 2545305, 6058052, -819265, -5858336, 1085553, 8495982, -4733054, +3387119, 166967, 9279277, 8284992, 3076270, 5745056, 8620536, 3875134, 6958384, 16689706, +-44396540, -124570160, -118455200, 51470352, 5023501, 113868712, 241192480, 52823804, 97189208, 51869784, +-178961088, -80073224, -120373976, -176707840, -11886322, 20905216, -83530672, 74221864, 126175936, 77317464, +217321056, 133438728, 1173063, -20079508, -76971184, -191963024, -155593248, -66986456, -147392544, -43436616, +84170624, 25076166, 21255794, 199150656, 76747848, 48541720, 184213296, 8769249, -9389872, 85004384, +-42388644, -151886144, -73640976, -151770720, -221850096, -24515674, -100831336, -82188496, 70899712, 137723488, +63592896, 243323856, 193715376, 112453520, 147090288, 49947248, -72261752, -111118856, -148339040, -237334528, +-190449056, -127634616, -108925200, -33776160, 82558400, 125672888, 139852720, 188247872, 158296928, 74334072, +26876832, 40891308, -63684164, -97307856, -69318624, -145430816, -109667696, -18749680, -65541736, 26057030, +106378824, 38182260, 54191748, 77508056, 8049843, 4753455, -19057844, -72790568, -38388416, 738734, +-29322816, 22639310, 30674120, -12412455, 38947300, 33801928, -53022980, 40510668, 46875272, -33086280, +76542760, 11850889, -75806176, 53009024, -41699836, -147508512, -24664386, -89593552, -109226384, 67418104, +8250096, 17264158, 141813376, 90447176, 100240240, 161683504, 118549688, 39527120, 16706349, -112363320, +-204874240, -203387632, -204411984, -192866576, -118081536, 6199786, 110640504, 163078304, 222916320, 207487184, +195545024, 154524864, 25860534, -70851392, -78206520, -163796624, -203262016, -121908888, -109767552, -60799556, +10871636, 29502130, 34922380, 69923680, 60793652, 57636312, 80866720, 67270464, 42054172, 37154688, +7705172, -23409182, -41954316, -50718196, -68838664, -57800596, -46001248, -35788352, -11805791, 12075837, +20795694, 30060476, 35089884, 33999496, 25931402, 20927228, 9119289, -715649, -4572530, -4766877, +-9295920, -7206419, -4793184, -5450851, -5377299, -1381369, -7475928, -8608188, -8471286, -13127031, +-14709726, -8643622, -7382512, 4129074, 17818746, 23784992, 24197308, 22899692, 14922864, 10889353, +4014721, -6808597, -17940078, -21398600, -23333484, -20936892, -15610059, -7123204, 973347, 10068477, +15825344, 16633335, 13915157, 10421738, 3864934, -1120987, -5113159, -7458748, -8167417, -5198521, +-2738579, 943819, 3526705, 5567888, 5354214, 3582003, -625455, -3535295, -5954436, -6616934, +-5913633, -3850438, -1870995, 1142461, 3083787, 4349728, 4837207, 4627828, 3320547, 2259153, +1078574, 20401, -941135, -1369558, -1687922, -1490354, -1090922, -672699, -493384, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -5042829, --1938641, 1176284, -935766, -2905009, -210453, 6729677, -3454228, 785442, -1456531, -75699, --2573222, 4843113, -2512019, -2677375, -3024194, 5770826, -3430605, -898185, -1620813, 1622961, -2665027, 3376918, -4763656, -11811, 4562329, 2017561, 782221, -252329, -568546, 2059437, -4651987, 1121523, -5970005, -3080029, -3211025, 5212480, -531502, 3976603, -2498060, 1842004, -5219459, -2544231, -3926137, 1394254, -1466731, -265751, -3512210, -1422171, -2623688, 996432, --4763119, -1575716, -1215476, -155693, 6456947, -2108829, -964757, -233002, -1685238, -671626, --602906, 3902515, 2027761, 2391760, -3348464, 2458869, 2594160, -2289755, 1078037, 1530082, --1719061, -2348810, 2752537, -4116189, 2914672, 1752347, 779000, -3815005, -1310502, 1417876, --325881, -795106, -1016834, -92879, -2032593, -2378338, -352724, -394600, 298500, -897111, -33823, 1403381, -39192, 520228, 215822, 273804, 30602, -280784, -1013075, -625455, -721018, -326954, 57445, -102005, -3131031, 3389266, 430034, -1408749, -2124935, -553514, --1062468, 40802, -2641942, -2020782, 1552631, -387084, -993748, -4642860, -665183, 4387846, --2900177, -697932, 3311420, -1855426, -3477850, -2643552, 2268817, 54224, -310311, -640487, --3333968, 1167694, -1467268, -756451, 3837553, -2059974, -5127117, -1503775, 316754, 1578401, -1385664, 475668, -3888019, -871878, -4743255, -4305168, -1139240, 4576288, -757525, -8950712, --375273, 3056943, 2655901, -1823214, 1795833, 1962800, 208843, 2702071, -4810900, -3395172, --427349, 1434519, 249108, 1030255, -493921, 1294933, 1175747, 1897839, -255014, 1180579, -1123134, -875636, 1882269, -432718, -4692789, -3839701, -2479807, -1968169, -2093797, 670552, --1049583, 3681324, 3047279, -534723, -1433982, -1247151, -652298, 1121523, 1750736, 239981, --984621, 206695, 266288, -978716, 1323387, 27917, -274878, -480499, -84826, -724776, -544924, -129386, 123480, -843424, 538482, -526134, 30602, 20938, 380641, -129386, --384936, -153008, -784368, -303332, 107374, -387621, 93952, -251256, -712428, 4068408, -2253784, 6116034, 363462, -1257352, -807454, 4314295, -1237488, 2294050, -4042101, -469225, --157840, 2244657, 1540820, 3866544, 2699924, -2055679, -3993246, -3262565, 2144799, -1416802, -2949569, 1845225, 344671, -239981, 2441689, 1714766, -1875827, 2014340, -4299263, -635118, --3990562, -3411278, -4790499, 1334661, 2636036, -546535, 3690451, -2962454, 3413425, -7085086, -2644089, 1154809, 5143760, 1481764, 1806571, 2765422, -190589, -1839320, 1880122, 4501663, -1480153, 2159295, -800475, -121870, -6512244, -469762, 958315, 1200443, -1013612, 3398393, -6391448, -2200097, -4718022, 3057480, 615791, -3331821, -123480, -1564442, -3388192, 370978, -4576288, 1126892, 1618666, 747861, -569083, 1731946, 1018444, -126165, 1455457, 62277, --496606, -376883, -952409, 868120, -1364726, -192737, 2082522, -500364, -126702, 794569, --586263, 1442035, -2135136, -955093, -46171, -850404, -976568, 190589, -583579, 679679, -1501091, -621697, 812286, 213675, 12348, -2684, 138513, -1799591, -540629, -424665, -265751, 1440962, 779537, 2273112, 3338800, 3209414, -3204046, 4923643, -1817845, -3355980, --4932770, 1081795, -6507949, -456340, 624381, 1734093, -4167192, 2609193, -112743, 539018, -1679332, 1005559, 1414655, -5616207, -418222, -1314260, -3672734, 2064806, 1023813, 776852, -3069291, 10898480, -850940, 505196, 1518808, 2648921, 1029718, -9051644, 1825898, -1553704, --1074279, 4865661, 103616, 2390686, 3512210, -4497368, -2516851, -1341640, -4345433, -9292162, -395674, -3542274, -596464, -868120, -229781, -2204392, -4556424, 1217623, -4361540, -1438277, -935229, -4884989, 4949950, 1654636, 1380295, -2092723, -407485, -857383, 954557, -1622961, -2523830, -4022774, 1276142, 5939403, 4941897, -1811939, 2495376, -2439542, 1037235, -4555350, --184147, 2714956, 3182034, 2804077, -532039, 5284958, 454193, 2602750, 2357400, -171262, -1079647, 505732, 165356, -985158, 503585, 755377, -358093, 13959, -639413, -1554778, --264677, 924492, -823023, 2078227, -632971, -1207423, -992137, 673236, -574989, 859530, --215822, -996969, 507343, -340913, 1081795, 590021, 621160, 357556, -1971390, -549219, -228707, 736587, -4832, 66572, -553514, 7349763, -9269076, 417149, -5699422, 2951180, -4246649, 5173825, -777389, -4869419, 146029, 5097590, 1103270, 994285, -3794604, -487479, --6660421, 8904004, -450972, -6812892, 7423314, 1878511, 2214593, -457951, -2650532, -848256, --3506841, -3454228, 2755759, 3907347, -771484, 3688303, -2999498, -1860795, 19864, 5138392, -4859756, -1331977, -2708514, 4006668, 2559801, 399969, 3389803, 829466, -3940096, 4194036, -2619930, -285078, -1356136, 1178432, -4248797, 11400454, -569083, -377957, 8493835, -741419, --5164162, -2783139, -592169, 2094870, -5367636, 3717294, 1133871, 158377, -4871567, -4091493, --8625368, -732292, 4054449, 2039036, 4912369, -2678986, -1898376, 10275709, -2823404, 1745904, --1401233, -4210679, 349503, 1908576, -4407710, -7821136, 350577, -4809290, -4865124, -2353642, -2574296, 264677, -715112, -2967286, -1005559, 382252, -1100049, -797790, 827855, 2837363, -418222, 744103, -1956358, -970663, -181462, 22012, -2770254, -2006287, -1749662, -62814, -700617, 316754, -885837, 112206, -154082, -237834, -1441498, -492311, -187368, -513785, --743029, -970126, -9827422, -161061, -4164508, -4702453, 1354525, -5637682, 101469, 3767223, -2024540, 7950522, -13407277, 8519068, -1479616, 3695283, -2616709, -1966021, -7075422, 6194954, -5451924, 1332514, -6296959, -397284, -3668976, -484258, 6431177, 4467840, 932545, 6134824, --151934, 265214, 542777, -268435, -4395362, 9198746, -993211, 34360, 10683194, -6987912, -2504503, -3360275, -765578, 3345780, -1534914, -5522791, 10280004, 8014946, -358093, 2568391, -4269735, 11126113, -1515050, -2064806, -6132140, 1013075, 2056216, -6467147, -6911676, -6069863, -7153268, 117575, -3027952, 4912906, 3462818, 18790, -1779190, 1569811, -3961034, -1039382, --4304631, -996432, 3950296, -7881265, 1800128, -1686312, -5485747, 3289945, 5174362, 2196876, -5390721, 4685810, -4046396, -6424734, -3240016, 2787434, -2567317, -4943508, 3146064, 5348845, --3945464, 646393, 1107565, 581968, -3687766, 2110440, -1662689, -1303523, -2379412, -1240172, --1870995, -194884, -240518, 696858, 1094143, -935229, -836445, -366146, -1493038, -856846, --428423, -586800, 1120987, 1445793, 337692, 2130841, -1942399, 1472637, -1681480, -745714, -1508070, 7385733, 7834557, 1328219, -6685654, -888521, -6347962, 2698313, 16829830, 4181688, -11673184, 4312684, 184684, -10817949, -2629057, 1825361, 10547903, -4610648, -2276333, -4009889, -1047435, 8486855, -6144488, 4175245, 7351374, 1664300, 2731062, -4744865, 9075266, -1896228, -11807939, -71404, -3556770, -11002096, 1394791, 81068, 13212393, -3933653, -1030792, 8393440, -104690, 1147830, -2671470, -8593156, 969589, 5015448, -6156836, -4846334, 1336272, -10312216, -5728413, 5792837, -1701344, -629213, 2967286, 5907728, -450435, -3562675, -90194, 8655970, --1052267, -1277216, -3208341, 11194295, 11334956, 812286, -1998770, 1808181, -433255, 2992519, -5266167, -380105, 7584912, -2883534, -4135517, -6046777, 2112587, -447213, -9226663, -6638409, --3800509, 7350300, -2083059, -3360275, -889595, 59056, -3094524, -4694936, -1616518, -1334661, --2783676, 524523, -1725503, -1501628, 1551557, -2957622, -3058017, 1043140, 2552821, -1439888, --1948305, -1451162, -2557116, -1186485, 872952, -834297, 507880, 1449552, -399432, -701690, --2244657, 1377611, 156766, -7449084, 7464653, 5669894, 398895, -4955856, -5561446, -2443837, --11005854, 12688944, 9532143, -2094333, 3504693, 1107565, -2136746, 9612137, -819265, -4530117, -14243722, -15524159, 3953518, 6629819, -99321, -6372658, 6764037, 1012002, 9801115, -3850438, --1105417, 2585034, 3887482, 624918, -1393180, 14286672, 6133214, -6590091, -9939628, 6841346, --9943386, -2912525, -11441256, -1517197, 17008608, 6937983, 8197482, 19327, -9098351, -1546725, --4471061, -2006287, 12707734, -2027761, -14108431, -1174674, 2709588, -8983998, -1534377, 5728950, -4488778, -6051072, -3191698, 6122476, 8102993, -2407866, 8443369, 113817, 2084670, 3141769, -668941, 3300146, 5043902, 4894652, 4747013, -2561411, -10252087, -11304354, 2757906, -2299955, -8005282, -1478006, 9509594, 3200825, 4395899, -5128191, -4598300, 3374234, -230318, 664109, -839129, 390842, -4626217, -2128156, -761820, -3831111, -166430, -3295314, 533113, -1874753, -1353989, -491237, 2385854, -31139, 1280974, 400506, -1283122, -1098975, -1526324, 2994666, -291521, -921807, 904628, 1536525, 1250909, 268972, -2292976, -6277632, -3600793, 1074, --3082176, -97174, -558346, -624918, 3704409, -635118, 6110128, -957241, 5689221, -11860015, -4032438, 3162707, 1557463, -7823283, -6569690, -8323110, 6200322, 3146601, -5992553, -5983963, -7836705, 2436857, -802622, -5063230, -8256001, -3468186, 3127810, -5348308, 453656, -9884330, --2885681, 966905, 3162170, 6178848, -1192390, 3879966, 5363878, -5816460, -13674639, 9118752, -256087, -2326262, 8677445, -1551557, 180389, -6150930, 7604777, -5159330, -6487548, -2659122, -6203544, 9484362, 7956427, 2332704, 1464584, -17278116, 7588671, -1236951, 3090766, -6103149, --1290638, -6807523, -2469069, -1824824, -8950712, -4627291, -3771518, -5012764, 8921184, -3136400, -11655467, -1623498, -840740, 7211787, 8290898, 14055817, 9608916, -409633, -4801237, -755377, --153545, -7057705, 1553704, -4633733, -7681549, 14367739, -9436580, -10055055, -1600412, 5264020, -632971, 1540820, 556198, 5953362, -252329, 1520955, 2025077, -2535641, 208306, 3601330, --2244657, 1391033, 2565169, 2051921, 4568772, 896574, -60666, 2429878, 329102, -1032403, -1614908, 2520072, 931471, -154082, 696322, 281320, 5320391, 293132, 4307852, 2801393, -545998, 4503810, 4984847, 367757, -261456, 545998, 592169, 478889, -553514, -751619, -1177358, 147103, -3008088, -4388920, -17980880, 4206384, -12315819, -7298223, 12013560, 9383430, --20555714, -18833968, 828929, 8300561, -4638028, 5192079, -6660421, -586800, -11855183, -2965138, --10684268, -599148, -2790118, 527207, 4362076, 3601330, 6953015, -663036, -5586679, 5192079, --6698002, -2583960, 2394444, 609885, 3694209, 7355669, -974958, 1078037, 1838246, -2744484, --576063, -10352482, -12276627, -11897059, 198642, -11970611, 4253628, 1762010, -4609574, -5482526, --2241973, -1859184, -856846, -7066295, -11227045, -490700, 18305150, 10139881, -2370285, -10673531, --10995653, 12655658, -11557757, -3726958, -1906429, -7692824, -5763846, -7845295, -9167071, -12866111, --17415556, -2390686, -2655901, -2367064, 6076305, 5714991, 1640678, 5022965, -3816079, -4755603, -16448651, 7015292, -4166118, -11871290, 3896072, -6976638, -8249559, 88047, 13820668, -2597918, -53150, 9501541, -892279, -6149320, 430570, 2344515, -30065, -2457795, -2309619, 32749, -2467996, 1226213, 1700807, 1045288, 4825396, -1273995, 2667175, -6642704, 3272765, 1725503, --1054415, 1522029, -1260573, 2569464, -1065152, -1873143, -976568, 2339684, 2100776, 344134, -2760053, -3738232, 3982509, -1822677, -2158221, 395137, 1018981, -15089831, 1525250, 7344394, -7983808, 7401840, 3011309, 14768782, -6092948, -11049340, -3042984, 1745904, -2404108, 4585415, -9739912, 19909320, 12419972, 7196755, 9141838, -7914014, -15037217, -5251135, -11321534, 12428562, -2629594, -2825015, -9232032, 14129906, 12048994, -4715337, -1147293, -227096, -7650411, -6344741, --11390253, 3147137, 3591130, 6183143, -10788958, 803696, 2747705, -4953171, -10496900, 146566, -5687074, 7710540, 1061931, -20187420, -7431367, -10036265, 3827890, 11795591, -287226, -11389716, -2396055, -10997264, 5727876, -2779381, 673236, -7838852, 15868830, 12622372, -4297115, -3876208, --9626632, -764504, 12617003, 2839510, 15571941, 15181636, 12451110, 7379828, 2305861, -10337986, --6010807, -13713294, 15382962, 15670188, -1578401, -12118787, 7420630, 18228914, -541166, 2249489, --4740570, -500901, -12341052, 1848983, -9801652, 6447820, 1969779, 9098888, 8792872, 4900021, -439160, 772020, 5312875, 2028835, -1639604, -3736085, -1538135, -5680631, 662499, 4373888, --4052302, -2112587, -4592931, 3092377, -1292785, 6618008, -6617471, 1696512, -550293, 6311992, --3388729, 2103460, 3484292, 718333, -547608, 261456, 774168, -2859375, -1508607, 3813394, -4322348, -10351945, -2937758, 6800544, 12182138, -13701483, -16549046, -14354318, 14834280, -6800544, -9762461, -613107, -296353, 24154360, -3432216, 1351841, -11359652, -17442936, 3777424, -2991982, -4118874, 2529736, -1824287, -10173167, 2288144, 3176128, 1241782, -9628243, 5612449, 3969087, -17490718, -8731132, 763967, 9364639, 9570261, -57445, 9666898, -3004867, -66035, 8612483, -7178501, 1608465, -4430259, -14891725, -11439109, 8040179, -720481, -3745748, -3357591, 1714766, -18919330, -1632088, -7274064, 9450539, -5263483, 8910447, 1744831, 27571006, -6005975, -1331440, --593242, 3733937, 9032853, -2294586, -3796214, 5801964, -13680545, 10293426, 19161996, 5414343, --4682588, 10575283, -4744865, -1003949, 21735756, -13298829, 4374424, 8337069, -4307852, 18148922, -3879966, 3568044, -7704635, -11111080, 1324997, 4440996, -12057047, 11256572, -599685, 2536178, --527744, 2988760, 10171019, -2863133, 10262824, 4740570, 2974265, 5643050, 4789426, -3574487, -6234145, 5964636, -6214818, 1698660, 4087735, 8283382, 1424319, 2092186, 3700651, 4678293, -7083475, 375273, -392990, -878321, 4631586, 4074313, -5543192, -492848, 2823941, 4531728, -3198140, -3321084, 6674916, -620086, 1852742, 489626, 5374615, 2687039, 2119030, 2500208, -3482682, 2576981, -1338419, -841277, 825707, 5517423, 1078574, 568546, -828929, 752693, -1746441, 2200097, 409633, 2586644, 3024194, 5087926, -13772350, -3765076, 9818832, -4396436, --7083475, -6264747, -6470368, 1470489, 9862319, -952946, -21185464, 294205, -16048145, 6612639, -7211250, 425739, 3520263, -6859063, -705448, 8948564, -20298016, 5522791, -4269198, 11756936, -8132521, 5463736, 1102733, -7855495, -18311594, -659814, -15981573, 10335839, 337692, -4553739, -17245368, 9181029, -6599218, -5050345, -3351148, -2250563, -4566087, -8827768, 1851668, 2992519, -24841554, -468688, -17434882, 355409, 12229919, 1258425, -8888435, 6102612, -13507135, 9524090, --5603859, 6442988, -7794292, 4072166, -13828721, 37261524, 1565516, 25869124, -2298344, -6584722, -6777996, -7816304, -7914551, 14602889, 13963476, -11684459, -31928786, 30955976, -10566693, -7954280, --3868692, -3864934, 4182761, -2382633, 2499671, 13591424, 3280818, -10211285, -8485782, -6011881, -4048007, -6298033, -871878, 6570763, -16550120, -980863, 1144072, -2151779, -4809290, 2332167, --3393024, 9543954, -3537443, 4512400, -4011500, -2476049, 258772, -3736622, 2478196, 2646774, --1721745, 2780455, -3863323, 2400350, -1016297, 212601, -1740536, 566936, -6959995, -4570919, --998580, -2306934, -5711233, -7009387, -4267587, -1294933, -3046743, -85362, -5090610, 559956, --4532801, -720481, -5899138, 3723737, -3309809, -1939715, -1714766, -15661598, -5507759, -4703526, --13457743, -23756000, -5804649, 464930, -12585328, 6282464, -5341329, 10690174, -9061844, -3732327, --12945568, 31122944, 26322780, -5800354, 5925445, 18122614, -18890876, 19317690, -7930120, -7919920, -6995428, 2632278, 3350075, -2733210, -4117263, 637803, 6284611, 5474473, -8370892, 9757629, --9026411, -15013595, 11022497, 9754408, -12533788, -15534360, -18026514, -2544231, -2945274, 5165772, --11758010, -14685567, -7509214, 24867324, 8710194, 8533563, -10562398, 9661529, 13072270, -10058277, -24365350, 4628364, -8664560, -11293617, 6548752, -9466645, -20765630, 5180268, -202400, 581431, -11404212, 10704669, -9110699, 1853278, -26630408, -3195993, -10486700, 22180822, 1342714, 3229279, --12835510, 10555419, -22626424, -2634426, 8880382, 2674154, -2444373, -2464238, 2761127, -924492, -2568391, -3265249, 648540, 2003065, 5398237, 1462973, 1725503, -1104880, 3204583, -3195456, -1032403, 10182831, -1975148, 583042, -3218004, 4611721, 2083059, -403190, 5259725, -5405217, --5266704, 5850283, -4807679, -1643899, -4407710, 2559801, -6442988, -2761664, -2110440, 5304822, -5160940, -8126078, 1283122, 4374424, -2864743, -9178882, -4527433, 7055021, -2143726, -1024887, --4493073, -11515344, 14629732, 15419469, 13950054, 9421548, -106300, 12786118, 11586211, 1959579, --2181307, 5168993, 43487, -12986907, -1540820, 4969277, -10167798, 14562623, -15146739, 12165495, -13218836, -3768834, -2978023, 5636608, 17635136, 13246216, -15935402, -3441343, -4265440, -1232119, -3981972, -7393250, -7786776, 17341468, 430570, 24886652, -16227997, -15341086, 12501576, -8238821, -4504884, -9700721, 8342974, 9580998, 6282464, -3840238, -14263050, 1466195, 4734128, -11799886, --21787832, -693637, 1978369, -12795781, 23524072, -2622615, -6677601, 31328028, 29438780, 3007551, --4099546, -1029182, -6291590, 7159711, -15448997, 14546517, 1906429, -8323110, 17477832, 2883534, -3536369, -4908611, -9504226, -23397908, 5144834, -7912941, -3881577, 10917807, 4379793, -5064304, --15357729, -4151623, -17487496, 7561827, 15707232, -2123325, -11887396, -8202314, -11855720, 236223, -6366216, 7748658, -1632625, -8276402, -4384625, -4463008, 1084479, -2425583, -4043175, 3493419, --656056, -2355253, 4112431, -9353902, 2682744, 2579128, 14624364, 1461363, -3280818, -7363722, -6429566, -7694971, -1060320, 5628555, -10447508, 9853192, 2036888, -263604, 1948305, 6720550, --3352222, -10122701, 200253, -2888903, -1344862, 10060961, 9376450, -1028108, 2878702, -25773562, --59732796, 20059108, 19007378, -6653978, 4264903, -14360760, 25814900, 16521129, -14593225, 4195110, -3535295, 399969, -6552510, -4713190, -30793842, 13066364, 15243376, -3486440, 17717, -1698123, -10267119, -7698192, 19568944, 5821828, -23201414, -13133473, 29525216, 19395536, -19196894, -4492536, --6806450, -11742441, 1866163, -4671851, 4234838, 38352448, 10475425, 40182640, 22966800, 25907242, -23613194, 46278272, -3003793, -4262218, 11093901, -3236795, -38762616, 31482110, -13595182, 18067316, --25611964, -20361366, -38269232, 7638063, -3495030, -12827457, 9377524, -17972290, 100932, -25688200, --25655450, 7238094, 15036681, -20841866, -5504001, -14440754, -20063402, -22534620, -16179679, 12374875, --9759776, -28143310, 40499396, 25390772, 40832792, -5295158, -8752606, -8090645, -14368276, -23111220, --1450625, -5055177, -17482664, -5814849, 5182952, -12374875, -11159399, 1323924, -1805497, -5498095, --4510253, 10099079, 10754598, 369367, 2734821, 7660074, 9587978, 1976222, -774705, -1441498, -4523675, -1884954, 1151588, -1731946, -6701760, -152471, 6376416, -6581501, 8700530, 10988137, -4654671, 384400, 1814087, 1183800, -7286412, 628139, 4184372, -3735548, 76236, -1694365, -1217086, -2583960, 992137, 4100083, -5582384, -4744865, 8836358, 3619584, -1101659, 1365800, --4890357, -21755084, -57050052, 24711632, 29519310, -13357348, -5815386, -1476932, 33427730, 1083406, -7153268, 7058242, -7853348, 6649683, 15576236, -3113851, -14966350, 3739843, 28434294, -15058155, --9417790, 6235756, -3960497, 21287468, -5319317, 9599789, -10958609, -13166759, -13146895, 13955422, --4190814, 12388833, 14447733, -3724274, 1912871, 93416, -11783243, 3914863, -10686952, 12635794, -30949534, 50818052, -620623, -1446330, -21505438, 11629698, 16640314, -497679, 18686866, 26708792, -11242614, 15188078, -23417772, -14066018, 19474456, 50774028, -9291088, -29802778, 7604777, -9906342, --528818, 13766444, 267362, -13593571, -6492917, -7015829, -34524020, -14433238, 234076, 5729487, -12051678, -1983201, -13271449, -7648800, 3265249, -5383742, -13328357, 13741748, 33229088, 14373108, -17902498, 1832340, -4529043, -27021250, -5968931, 7674033, 5983427, -6052683, 15334644, -4336307, -8584029, -18915036, 1102196, -6524592, -5438503, 178778, 5255966, 5143224, -5331128, -10292889, -9963250, -3905736, 8186745, 731218, -2062121, 671089, 1759863, 7567733, 254477, -1205812, --3913789, -4340602, 6521371, 2156611, 6010270, -12874164, 8960376, 5174362, 2439005, -4669167, --1705102, 9343164, -1125281, 363462, -7204271, 668404, -11053635, -2341831, 3198677, 9362492, -4648765, 8269423, 1904281, -1410897, -8090108, 18234820, 6133214, 9613211, 3829500, 27430882, --8506183, -3311957, -10631118, 6452115, -6565395, 6123013, 31095564, 6237367, -32742146, -7900056, --9484362, -27981176, 17947594, 8543764, -3161096, 4081830, 1841467, -12504260, -26844, -785979, --12439299, -3649112, 27138288, 39873940, 18845242, -13760538, -21842056, 10449119, 18252000, 2131378, -14615774, -10021769, -6935299, 15032922, 4793721, 307627, -33302640, -43418900, -1335735, -25352656, --14705431, 9197672, 36479840, 7988103, 1876364, -10457708, -12530030, -18153754, -15983721, 3082713, -11045582, -3802120, -18023830, -29027536, 11632382, 857383, -16154983, -27052388, -18325014, -29787208, --53864260, -32449552, -4810900, -6366216, 64874408, -7837779, -2390149, 37436544, 4418985, 2193118, -22502944, -13319767, -32749662, -38021196, -5885179, -18162880, -20177220, -21393768, -23480586, 4687957, -21260624, 33820184, 20067698, 4233764, 2214056, -8576513, 17428440, 3685082, -5264020, -21654152, -4501663, 15927886, -753230, 37044, -7795366, 4469451, 8796093, 14577656, 4095788, 6259378, -5564130, 7348689, 8996883, 9481140, -2627983, 7243999, 1466195, -4873178, -11375221, -13462038, -1385664, 3385508, -13553843, -6495065, -13037373, 4420058, 6723235, 10525891, 15201500, 25825638, -19092740, 19742354, 11642046, 7822746, -4680441, 2270427, 102005, -11754252, -18406620, -13622563, --17818746, -11115912, -15484968, 20488604, -29073170, 7343321, 4614406, -12658879, -40772660, 27740120, -8229694, -2618856, -41285912, 10988674, 6400038, -21794274, 3637837, 19126026, 11743514, 5572720, --18696530, -3804804, -6984691, 3298535, -7046431, 1735167, -14486925, -20817170, 22826678, -15767899, -34694208, -21406654, -19407346, -13131326, -24394340, 2150705, -486942, 36465884, -27034672, -28483686, -14668924, 9394704, -23608898, -31361314, -3503620, -17668958, 20302310, 4335233, -25997438, 16864726, --4464619, -39917964, 26182658, -17802102, 17077326, -29699162, -7305203, -821949, -12528420, -5116380, -3382824, 37499896, -10161893, -3505230, -10821707, 10712722, -17792976, 13886166, 29255170, -1797981, -29414620, 23142358, -3568044, 47227460, -2817499, 5462662, -1440425, 13334263, 47554952, -3911642, --13220983, -50888920, 39368208, 14066018, 33603288, 11459510, -26491896, 11774116, 7506529, 4854924, --23526758, 13420162, 2699387, 3877819, -12670690, -3675955, 16026670, 13772886, 561030, -1651952, --1689533, -1841467, 3888556, 10096394, -20672752, -6082748, -2903935, 3301219, -4264903, 4590247, -4399657, 6513855, -4863514, -10953777, 16982300, 26666378, 9290014, -13664975, -11787001, -5043902, --4045859, 7228430, 3587908, -2655901, -16874926, -12048457, -13677323, -1323924, 13042205, 5758478, -10994043, 4225174, -18387292, -3280281, 8008504, 17870286, 11158325, -7488813, -5634460, -4292820, -2563559, 3117610, -389231, -1067836, -3511136, 28094992, -53687628, 2218888, -60441464, -20150376, --10134512, 18600430, 56120728, 47718696, 17679696, 28236726, -18087182, -15220827, 2868501, -3974455, -13114683, 4257923, -12491912, 18925236, 27804544, 23124104, 17332878, 14667850, -314606, 2737505, --9249212, 26309896, 12369506, -4863514, -15977815, 5541045, 10890426, -2711198, 34393560, 35906464, --20533702, -15155866, 913754, 27924804, 17471926, 4591857, 3554622, -6500433, -12381854, 7058242, -42863772, -17165374, -21002390, -22879290, 22463752, 9252433, -12667469, -19771882, -31762894, -37644316, -4282083, 8410620, 6953552, -8201777, -2660195, -10263898, 7588134, -30002494, -49376016, -22189412, --3321084, -8292508, -19206020, 24899536, 41525356, -9189619, 21482890, 45832668, 29943438, 10713259, --31403190, 5217312, 5792837, -27772870, -15300821, -4338991, -22085796, 24358370, 34662532, -1971390, --7852274, -4168803, -9960029, -5522254, -13993540, -13738527, -4973572, -6777996, 5084168, -3007551, --3715684, 6890202, -20848308, -2457795, 1832877, 21366926, -21677774, -3467649, -4855461, 4116189, --13763760, -4799626, 4345433, -7519951, -12714714, -2037425, -872952, -12504797, 14912126, -20219096, --2175938, -7421167, 4614943, -2092186, -5859946, -11788075, 499290, 6003291, -4110821, 2827699, --34241088, 27611272, -3508452, 23722714, 14389751, 546535, 15731928, -6903086, -1768453, 13547401, -16604880, 2558190, 83752, -545998, -15119895, -9822590, 4040491, -21075404, 565862, -7924215, -510027, -17869748, 3043521, 994822, -16260746, 13574244, 5770289, 9186935, -20421496, -5513665, -3845606, -1072131, 1473711, 11710228, 2587181, 3278134, -2349347, -4529043, -3202972, -1678795, -7554848, -3424163, -13042205, 10557030, -17932562, -5632850, -6156299, 2146947, -8781598, -10401874, -13644037, -1743220, -13698798, 8366060, -19102404, 15295452, 4752382, 718333, 15749108, 17533668, -2428267, 4995047, -13174275, 17008070, -8332237, -11639361, -1012539, 2514167, 32148368, -14453102, --23757074, 20344724, -7751342, 20328618, -3452080, 1333051, -8899709, 12312061, -20648056, -17121350, --6788733, 8087424, 4820564, -1250909, 9880035, -12275017, -12431783, -8250096, 2925410, 3592203, -723702, -533650, -3768834, 2130841, -17149268, 3471407, 3483219, -4132296, -1599875, 5168993, --2762738, -7323456, 8848706, -4423817, 1080721, -375810, -2261300, 5983963, 2571612, -6213207, --729608, -1475858, -5577015, -1196148, -2078764, -11410654, 3461744, 6973417, 5549635, -5179194, -5178657, -8324721, -2625299, 209380, -5418638, 17029008, -7153268, -88985816, -169941648, -60316372, --133006008, -151604832, 37460704, -4872641, 51227148, 197127184, 213702544, 150970240, 215222960, 176933328, -58897424, 62124556, 46027552, -118398824, -121929288, -67728416, -118351584, -127957816, -42705932, -37557880, --107821392, -81184008, -12982612, -48010220, -58766428, -14440217, -44924820, -79646408, -45259292, 15089831, --31822486, -39283380, 47145856, -7773354, -44203268, 40669584, 75154952, -17148194, 18944028, 116335632, -16208670, -37056976, 77280424, 67519568, -66566624, 38422240, 85146656, -26311506, 9481677, 147371072, -112496464, 56756384, 206929376, 230348224, 117882896, 212154736, 273915840, 171976928, 162282656, 225223792, -144879440, 92214560, 102109088, 53202832, -61710092, -119579944, -162224672, -277040960, -337111968, -382238656, --432253024, -426240608, -461988160, -412734016, -306328352, -306341216, -241457152, -21568788, -12390444, 6324340, -173333072, 136924624, 45683420, 90886880, 135238864, 50106700, 60397976, 137297760, 100008312, 20435454, -82429552, 116239528, 50026168, 62649076, 142983760, 53582940, -22580254, 65940096, 46171972, -31615254, -62284004, 138097152, 65064460, 101812200, 220379072, 183271616, 173681504, 258810976, 239046608, 164758704, -143289776, 128441000, 48124572, -1900523, 6903623, -27049704, -86038392, -85689432, -98371392, -168444864, --188407328, -180655456, -202628496, -243159040, -212962192, -205905568, -219639792, -170103792, -114982720, -90008016, --56703768, 2044404, 22759032, 19047106, 31616328, 34708168, 17814450, 16254304, 31880468, 27560268, -18758270, 22564684, 26389890, 19977504, 25969520, 39737036, 43741556, 42039676, 49045304, 52041580, -43067784, 49382460, 45434848, 28339268, 14612552, 6326487, -397284, -5661841, -4162897, -4232691, --8332774, -8964670, -3345243, 4051765, 14475114, 20694764, 24975772, 25930328, 23259396, 23247584, -28804736, 27916214, 27014270, 31185220, 29529510, 21956410, 22815404, 21766358, 13243532, 10821707, -13297756, 6174553, -708133, -2150168, -9614821, -20323248, -21838298, -24748138, -34369404, -38190848, --35816808, -40867152, -43764644, -38876972, -38421704, -40087616, -35231616, -28348394, -26904748, -23046258, --16352014, -16281147, -15825881, -11970074, -8026757, -6051609, -550830, 4383014, 6077379, 8376797, -13872207, 18928458, 21829708, 25740812, 25997974, 23320062, 20241644, 18300318, 16487306, 14206141, -11686069, 9198746, 7044820, 5297306, 4930086, 4467303, 3384971, 2837363, 2339147, 1272921, -561567, 102542, -360240, -734439, -869194, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-1938641, 1176284, -935766, -2905009, -210453, 6729677, -3454228, 785442, -1456531, -75699, +-2573222, 4843113, -2512019, -2677375, -3024194, 5770826, -3430605, -898185, -1620813, 1622961, +2665027, 3376918, -4763656, -11811, 4562329, 2017561, 782221, -252329, -568546, 2059437, +4651987, 1121523, -5970005, -3080029, -3211025, 5212480, -531502, 3976603, -2498060, 1842004, +5219459, -2544231, -3926137, 1394254, -1466731, -265751, -3512210, -1422171, -2623688, 996432, +-4763119, -1575716, -1215476, -155693, 6456947, -2108829, -964757, -233002, -1685238, -671626, +-602906, 3902515, 2027761, 2391760, -3348464, 2458869, 2594160, -2289755, 1078037, 1530082, +-1719061, -2348810, 2752537, -4116189, 2914672, 1752347, 779000, -3815005, -1310502, 1417876, +-325881, -795106, -1016834, -92879, -2032593, -2378338, -352724, -394600, 298500, -897111, +33823, 1403381, -39192, 520228, 215822, 273804, 30602, -280784, -1013075, -625455, +721018, -326954, 57445, -102005, -3131031, 3389266, 430034, -1408749, -2124935, -553514, +-1062468, 40802, -2641942, -2020782, 1552631, -387084, -993748, -4642860, -665183, 4387846, +-2900177, -697932, 3311420, -1855426, -3477850, -2643552, 2268817, 54224, -310311, -640487, +-3333968, 1167694, -1467268, -756451, 3837553, -2059974, -5127117, -1503775, 316754, 1578401, +1385664, 475668, -3888019, -871878, -4743255, -4305168, -1139240, 4576288, -757525, -8950712, +-375273, 3056943, 2655901, -1823214, 1795833, 1962800, 208843, 2702071, -4810900, -3395172, +-427349, 1434519, 249108, 1030255, -493921, 1294933, 1175747, 1897839, -255014, 1180579, +1123134, -875636, 1882269, -432718, -4692789, -3839701, -2479807, -1968169, -2093797, 670552, +-1049583, 3681324, 3047279, -534723, -1433982, -1247151, -652298, 1121523, 1750736, 239981, +-984621, 206695, 266288, -978716, 1323387, 27917, -274878, -480499, -84826, -724776, +544924, -129386, 123480, -843424, 538482, -526134, 30602, 20938, 380641, -129386, +-384936, -153008, -784368, -303332, 107374, -387621, 93952, -251256, -712428, 4068408, +2253784, 6116034, 363462, -1257352, -807454, 4314295, -1237488, 2294050, -4042101, -469225, +-157840, 2244657, 1540820, 3866544, 2699924, -2055679, -3993246, -3262565, 2144799, -1416802, +2949569, 1845225, 344671, -239981, 2441689, 1714766, -1875827, 2014340, -4299263, -635118, +-3990562, -3411278, -4790499, 1334661, 2636036, -546535, 3690451, -2962454, 3413425, -7085086, +2644089, 1154809, 5143760, 1481764, 1806571, 2765422, -190589, -1839320, 1880122, 4501663, +1480153, 2159295, -800475, -121870, -6512244, -469762, 958315, 1200443, -1013612, 3398393, +6391448, -2200097, -4718022, 3057480, 615791, -3331821, -123480, -1564442, -3388192, 370978, +4576288, 1126892, 1618666, 747861, -569083, 1731946, 1018444, -126165, 1455457, 62277, +-496606, -376883, -952409, 868120, -1364726, -192737, 2082522, -500364, -126702, 794569, +-586263, 1442035, -2135136, -955093, -46171, -850404, -976568, 190589, -583579, 679679, +1501091, -621697, 812286, 213675, 12348, -2684, 138513, -1799591, -540629, -424665, +265751, 1440962, 779537, 2273112, 3338800, 3209414, -3204046, 4923643, -1817845, -3355980, +-4932770, 1081795, -6507949, -456340, 624381, 1734093, -4167192, 2609193, -112743, 539018, +1679332, 1005559, 1414655, -5616207, -418222, -1314260, -3672734, 2064806, 1023813, 776852, +3069291, 10898480, -850940, 505196, 1518808, 2648921, 1029718, -9051644, 1825898, -1553704, +-1074279, 4865661, 103616, 2390686, 3512210, -4497368, -2516851, -1341640, -4345433, -9292162, +395674, -3542274, -596464, -868120, -229781, -2204392, -4556424, 1217623, -4361540, -1438277, +935229, -4884989, 4949950, 1654636, 1380295, -2092723, -407485, -857383, 954557, -1622961, +2523830, -4022774, 1276142, 5939403, 4941897, -1811939, 2495376, -2439542, 1037235, -4555350, +-184147, 2714956, 3182034, 2804077, -532039, 5284958, 454193, 2602750, 2357400, -171262, +1079647, 505732, 165356, -985158, 503585, 755377, -358093, 13959, -639413, -1554778, +-264677, 924492, -823023, 2078227, -632971, -1207423, -992137, 673236, -574989, 859530, +-215822, -996969, 507343, -340913, 1081795, 590021, 621160, 357556, -1971390, -549219, +228707, 736587, -4832, 66572, -553514, 7349763, -9269076, 417149, -5699422, 2951180, +4246649, 5173825, -777389, -4869419, 146029, 5097590, 1103270, 994285, -3794604, -487479, +-6660421, 8904004, -450972, -6812892, 7423314, 1878511, 2214593, -457951, -2650532, -848256, +-3506841, -3454228, 2755759, 3907347, -771484, 3688303, -2999498, -1860795, 19864, 5138392, +4859756, -1331977, -2708514, 4006668, 2559801, 399969, 3389803, 829466, -3940096, 4194036, +2619930, -285078, -1356136, 1178432, -4248797, 11400454, -569083, -377957, 8493835, -741419, +-5164162, -2783139, -592169, 2094870, -5367636, 3717294, 1133871, 158377, -4871567, -4091493, +-8625368, -732292, 4054449, 2039036, 4912369, -2678986, -1898376, 10275709, -2823404, 1745904, +-1401233, -4210679, 349503, 1908576, -4407710, -7821136, 350577, -4809290, -4865124, -2353642, +2574296, 264677, -715112, -2967286, -1005559, 382252, -1100049, -797790, 827855, 2837363, +418222, 744103, -1956358, -970663, -181462, 22012, -2770254, -2006287, -1749662, -62814, +700617, 316754, -885837, 112206, -154082, -237834, -1441498, -492311, -187368, -513785, +-743029, -970126, -9827422, -161061, -4164508, -4702453, 1354525, -5637682, 101469, 3767223, +2024540, 7950522, -13407277, 8519068, -1479616, 3695283, -2616709, -1966021, -7075422, 6194954, +5451924, 1332514, -6296959, -397284, -3668976, -484258, 6431177, 4467840, 932545, 6134824, +-151934, 265214, 542777, -268435, -4395362, 9198746, -993211, 34360, 10683194, -6987912, +2504503, -3360275, -765578, 3345780, -1534914, -5522791, 10280004, 8014946, -358093, 2568391, +4269735, 11126113, -1515050, -2064806, -6132140, 1013075, 2056216, -6467147, -6911676, -6069863, +7153268, 117575, -3027952, 4912906, 3462818, 18790, -1779190, 1569811, -3961034, -1039382, +-4304631, -996432, 3950296, -7881265, 1800128, -1686312, -5485747, 3289945, 5174362, 2196876, +5390721, 4685810, -4046396, -6424734, -3240016, 2787434, -2567317, -4943508, 3146064, 5348845, +-3945464, 646393, 1107565, 581968, -3687766, 2110440, -1662689, -1303523, -2379412, -1240172, +-1870995, -194884, -240518, 696858, 1094143, -935229, -836445, -366146, -1493038, -856846, +-428423, -586800, 1120987, 1445793, 337692, 2130841, -1942399, 1472637, -1681480, -745714, +1508070, 7385733, 7834557, 1328219, -6685654, -888521, -6347962, 2698313, 16829830, 4181688, +11673184, 4312684, 184684, -10817949, -2629057, 1825361, 10547903, -4610648, -2276333, -4009889, +1047435, 8486855, -6144488, 4175245, 7351374, 1664300, 2731062, -4744865, 9075266, -1896228, +11807939, -71404, -3556770, -11002096, 1394791, 81068, 13212393, -3933653, -1030792, 8393440, +104690, 1147830, -2671470, -8593156, 969589, 5015448, -6156836, -4846334, 1336272, -10312216, +5728413, 5792837, -1701344, -629213, 2967286, 5907728, -450435, -3562675, -90194, 8655970, +-1052267, -1277216, -3208341, 11194295, 11334956, 812286, -1998770, 1808181, -433255, 2992519, +5266167, -380105, 7584912, -2883534, -4135517, -6046777, 2112587, -447213, -9226663, -6638409, +-3800509, 7350300, -2083059, -3360275, -889595, 59056, -3094524, -4694936, -1616518, -1334661, +-2783676, 524523, -1725503, -1501628, 1551557, -2957622, -3058017, 1043140, 2552821, -1439888, +-1948305, -1451162, -2557116, -1186485, 872952, -834297, 507880, 1449552, -399432, -701690, +-2244657, 1377611, 156766, -7449084, 7464653, 5669894, 398895, -4955856, -5561446, -2443837, +-11005854, 12688944, 9532143, -2094333, 3504693, 1107565, -2136746, 9612137, -819265, -4530117, +14243722, -15524159, 3953518, 6629819, -99321, -6372658, 6764037, 1012002, 9801115, -3850438, +-1105417, 2585034, 3887482, 624918, -1393180, 14286672, 6133214, -6590091, -9939628, 6841346, +-9943386, -2912525, -11441256, -1517197, 17008608, 6937983, 8197482, 19327, -9098351, -1546725, +-4471061, -2006287, 12707734, -2027761, -14108431, -1174674, 2709588, -8983998, -1534377, 5728950, +4488778, -6051072, -3191698, 6122476, 8102993, -2407866, 8443369, 113817, 2084670, 3141769, +668941, 3300146, 5043902, 4894652, 4747013, -2561411, -10252087, -11304354, 2757906, -2299955, +8005282, -1478006, 9509594, 3200825, 4395899, -5128191, -4598300, 3374234, -230318, 664109, +839129, 390842, -4626217, -2128156, -761820, -3831111, -166430, -3295314, 533113, -1874753, +1353989, -491237, 2385854, -31139, 1280974, 400506, -1283122, -1098975, -1526324, 2994666, +291521, -921807, 904628, 1536525, 1250909, 268972, -2292976, -6277632, -3600793, 1074, +-3082176, -97174, -558346, -624918, 3704409, -635118, 6110128, -957241, 5689221, -11860015, +4032438, 3162707, 1557463, -7823283, -6569690, -8323110, 6200322, 3146601, -5992553, -5983963, +7836705, 2436857, -802622, -5063230, -8256001, -3468186, 3127810, -5348308, 453656, -9884330, +-2885681, 966905, 3162170, 6178848, -1192390, 3879966, 5363878, -5816460, -13674639, 9118752, +256087, -2326262, 8677445, -1551557, 180389, -6150930, 7604777, -5159330, -6487548, -2659122, +6203544, 9484362, 7956427, 2332704, 1464584, -17278116, 7588671, -1236951, 3090766, -6103149, +-1290638, -6807523, -2469069, -1824824, -8950712, -4627291, -3771518, -5012764, 8921184, -3136400, +11655467, -1623498, -840740, 7211787, 8290898, 14055817, 9608916, -409633, -4801237, -755377, +-153545, -7057705, 1553704, -4633733, -7681549, 14367739, -9436580, -10055055, -1600412, 5264020, +632971, 1540820, 556198, 5953362, -252329, 1520955, 2025077, -2535641, 208306, 3601330, +-2244657, 1391033, 2565169, 2051921, 4568772, 896574, -60666, 2429878, 329102, -1032403, +1614908, 2520072, 931471, -154082, 696322, 281320, 5320391, 293132, 4307852, 2801393, +545998, 4503810, 4984847, 367757, -261456, 545998, 592169, 478889, -553514, -751619, +1177358, 147103, -3008088, -4388920, -17980880, 4206384, -12315819, -7298223, 12013560, 9383430, +-20555714, -18833968, 828929, 8300561, -4638028, 5192079, -6660421, -586800, -11855183, -2965138, +-10684268, -599148, -2790118, 527207, 4362076, 3601330, 6953015, -663036, -5586679, 5192079, +-6698002, -2583960, 2394444, 609885, 3694209, 7355669, -974958, 1078037, 1838246, -2744484, +-576063, -10352482, -12276627, -11897059, 198642, -11970611, 4253628, 1762010, -4609574, -5482526, +-2241973, -1859184, -856846, -7066295, -11227045, -490700, 18305150, 10139881, -2370285, -10673531, +-10995653, 12655658, -11557757, -3726958, -1906429, -7692824, -5763846, -7845295, -9167071, -12866111, +-17415556, -2390686, -2655901, -2367064, 6076305, 5714991, 1640678, 5022965, -3816079, -4755603, +16448651, 7015292, -4166118, -11871290, 3896072, -6976638, -8249559, 88047, 13820668, -2597918, +53150, 9501541, -892279, -6149320, 430570, 2344515, -30065, -2457795, -2309619, 32749, +2467996, 1226213, 1700807, 1045288, 4825396, -1273995, 2667175, -6642704, 3272765, 1725503, +-1054415, 1522029, -1260573, 2569464, -1065152, -1873143, -976568, 2339684, 2100776, 344134, +2760053, -3738232, 3982509, -1822677, -2158221, 395137, 1018981, -15089831, 1525250, 7344394, +7983808, 7401840, 3011309, 14768782, -6092948, -11049340, -3042984, 1745904, -2404108, 4585415, +9739912, 19909320, 12419972, 7196755, 9141838, -7914014, -15037217, -5251135, -11321534, 12428562, +2629594, -2825015, -9232032, 14129906, 12048994, -4715337, -1147293, -227096, -7650411, -6344741, +-11390253, 3147137, 3591130, 6183143, -10788958, 803696, 2747705, -4953171, -10496900, 146566, +5687074, 7710540, 1061931, -20187420, -7431367, -10036265, 3827890, 11795591, -287226, -11389716, +2396055, -10997264, 5727876, -2779381, 673236, -7838852, 15868830, 12622372, -4297115, -3876208, +-9626632, -764504, 12617003, 2839510, 15571941, 15181636, 12451110, 7379828, 2305861, -10337986, +-6010807, -13713294, 15382962, 15670188, -1578401, -12118787, 7420630, 18228914, -541166, 2249489, +-4740570, -500901, -12341052, 1848983, -9801652, 6447820, 1969779, 9098888, 8792872, 4900021, +439160, 772020, 5312875, 2028835, -1639604, -3736085, -1538135, -5680631, 662499, 4373888, +-4052302, -2112587, -4592931, 3092377, -1292785, 6618008, -6617471, 1696512, -550293, 6311992, +-3388729, 2103460, 3484292, 718333, -547608, 261456, 774168, -2859375, -1508607, 3813394, +4322348, -10351945, -2937758, 6800544, 12182138, -13701483, -16549046, -14354318, 14834280, -6800544, +9762461, -613107, -296353, 24154360, -3432216, 1351841, -11359652, -17442936, 3777424, -2991982, +4118874, 2529736, -1824287, -10173167, 2288144, 3176128, 1241782, -9628243, 5612449, 3969087, +17490718, -8731132, 763967, 9364639, 9570261, -57445, 9666898, -3004867, -66035, 8612483, +7178501, 1608465, -4430259, -14891725, -11439109, 8040179, -720481, -3745748, -3357591, 1714766, +18919330, -1632088, -7274064, 9450539, -5263483, 8910447, 1744831, 27571006, -6005975, -1331440, +-593242, 3733937, 9032853, -2294586, -3796214, 5801964, -13680545, 10293426, 19161996, 5414343, +-4682588, 10575283, -4744865, -1003949, 21735756, -13298829, 4374424, 8337069, -4307852, 18148922, +3879966, 3568044, -7704635, -11111080, 1324997, 4440996, -12057047, 11256572, -599685, 2536178, +-527744, 2988760, 10171019, -2863133, 10262824, 4740570, 2974265, 5643050, 4789426, -3574487, +6234145, 5964636, -6214818, 1698660, 4087735, 8283382, 1424319, 2092186, 3700651, 4678293, +7083475, 375273, -392990, -878321, 4631586, 4074313, -5543192, -492848, 2823941, 4531728, +3198140, -3321084, 6674916, -620086, 1852742, 489626, 5374615, 2687039, 2119030, 2500208, +3482682, 2576981, -1338419, -841277, 825707, 5517423, 1078574, 568546, -828929, 752693, +1746441, 2200097, 409633, 2586644, 3024194, 5087926, -13772350, -3765076, 9818832, -4396436, +-7083475, -6264747, -6470368, 1470489, 9862319, -952946, -21185464, 294205, -16048145, 6612639, +7211250, 425739, 3520263, -6859063, -705448, 8948564, -20298016, 5522791, -4269198, 11756936, +8132521, 5463736, 1102733, -7855495, -18311594, -659814, -15981573, 10335839, 337692, -4553739, +17245368, 9181029, -6599218, -5050345, -3351148, -2250563, -4566087, -8827768, 1851668, 2992519, +24841554, -468688, -17434882, 355409, 12229919, 1258425, -8888435, 6102612, -13507135, 9524090, +-5603859, 6442988, -7794292, 4072166, -13828721, 37261524, 1565516, 25869124, -2298344, -6584722, +6777996, -7816304, -7914551, 14602889, 13963476, -11684459, -31928786, 30955976, -10566693, -7954280, +-3868692, -3864934, 4182761, -2382633, 2499671, 13591424, 3280818, -10211285, -8485782, -6011881, +4048007, -6298033, -871878, 6570763, -16550120, -980863, 1144072, -2151779, -4809290, 2332167, +-3393024, 9543954, -3537443, 4512400, -4011500, -2476049, 258772, -3736622, 2478196, 2646774, +-1721745, 2780455, -3863323, 2400350, -1016297, 212601, -1740536, 566936, -6959995, -4570919, +-998580, -2306934, -5711233, -7009387, -4267587, -1294933, -3046743, -85362, -5090610, 559956, +-4532801, -720481, -5899138, 3723737, -3309809, -1939715, -1714766, -15661598, -5507759, -4703526, +-13457743, -23756000, -5804649, 464930, -12585328, 6282464, -5341329, 10690174, -9061844, -3732327, +-12945568, 31122944, 26322780, -5800354, 5925445, 18122614, -18890876, 19317690, -7930120, -7919920, +6995428, 2632278, 3350075, -2733210, -4117263, 637803, 6284611, 5474473, -8370892, 9757629, +-9026411, -15013595, 11022497, 9754408, -12533788, -15534360, -18026514, -2544231, -2945274, 5165772, +-11758010, -14685567, -7509214, 24867324, 8710194, 8533563, -10562398, 9661529, 13072270, -10058277, +24365350, 4628364, -8664560, -11293617, 6548752, -9466645, -20765630, 5180268, -202400, 581431, +11404212, 10704669, -9110699, 1853278, -26630408, -3195993, -10486700, 22180822, 1342714, 3229279, +-12835510, 10555419, -22626424, -2634426, 8880382, 2674154, -2444373, -2464238, 2761127, -924492, +2568391, -3265249, 648540, 2003065, 5398237, 1462973, 1725503, -1104880, 3204583, -3195456, +1032403, 10182831, -1975148, 583042, -3218004, 4611721, 2083059, -403190, 5259725, -5405217, +-5266704, 5850283, -4807679, -1643899, -4407710, 2559801, -6442988, -2761664, -2110440, 5304822, +5160940, -8126078, 1283122, 4374424, -2864743, -9178882, -4527433, 7055021, -2143726, -1024887, +-4493073, -11515344, 14629732, 15419469, 13950054, 9421548, -106300, 12786118, 11586211, 1959579, +-2181307, 5168993, 43487, -12986907, -1540820, 4969277, -10167798, 14562623, -15146739, 12165495, +13218836, -3768834, -2978023, 5636608, 17635136, 13246216, -15935402, -3441343, -4265440, -1232119, +3981972, -7393250, -7786776, 17341468, 430570, 24886652, -16227997, -15341086, 12501576, -8238821, +4504884, -9700721, 8342974, 9580998, 6282464, -3840238, -14263050, 1466195, 4734128, -11799886, +-21787832, -693637, 1978369, -12795781, 23524072, -2622615, -6677601, 31328028, 29438780, 3007551, +-4099546, -1029182, -6291590, 7159711, -15448997, 14546517, 1906429, -8323110, 17477832, 2883534, +3536369, -4908611, -9504226, -23397908, 5144834, -7912941, -3881577, 10917807, 4379793, -5064304, +-15357729, -4151623, -17487496, 7561827, 15707232, -2123325, -11887396, -8202314, -11855720, 236223, +6366216, 7748658, -1632625, -8276402, -4384625, -4463008, 1084479, -2425583, -4043175, 3493419, +-656056, -2355253, 4112431, -9353902, 2682744, 2579128, 14624364, 1461363, -3280818, -7363722, +6429566, -7694971, -1060320, 5628555, -10447508, 9853192, 2036888, -263604, 1948305, 6720550, +-3352222, -10122701, 200253, -2888903, -1344862, 10060961, 9376450, -1028108, 2878702, -25773562, +-59732796, 20059108, 19007378, -6653978, 4264903, -14360760, 25814900, 16521129, -14593225, 4195110, +3535295, 399969, -6552510, -4713190, -30793842, 13066364, 15243376, -3486440, 17717, -1698123, +10267119, -7698192, 19568944, 5821828, -23201414, -13133473, 29525216, 19395536, -19196894, -4492536, +-6806450, -11742441, 1866163, -4671851, 4234838, 38352448, 10475425, 40182640, 22966800, 25907242, +23613194, 46278272, -3003793, -4262218, 11093901, -3236795, -38762616, 31482110, -13595182, 18067316, +-25611964, -20361366, -38269232, 7638063, -3495030, -12827457, 9377524, -17972290, 100932, -25688200, +-25655450, 7238094, 15036681, -20841866, -5504001, -14440754, -20063402, -22534620, -16179679, 12374875, +-9759776, -28143310, 40499396, 25390772, 40832792, -5295158, -8752606, -8090645, -14368276, -23111220, +-1450625, -5055177, -17482664, -5814849, 5182952, -12374875, -11159399, 1323924, -1805497, -5498095, +-4510253, 10099079, 10754598, 369367, 2734821, 7660074, 9587978, 1976222, -774705, -1441498, +4523675, -1884954, 1151588, -1731946, -6701760, -152471, 6376416, -6581501, 8700530, 10988137, +4654671, 384400, 1814087, 1183800, -7286412, 628139, 4184372, -3735548, 76236, -1694365, +1217086, -2583960, 992137, 4100083, -5582384, -4744865, 8836358, 3619584, -1101659, 1365800, +-4890357, -21755084, -57050052, 24711632, 29519310, -13357348, -5815386, -1476932, 33427730, 1083406, +7153268, 7058242, -7853348, 6649683, 15576236, -3113851, -14966350, 3739843, 28434294, -15058155, +-9417790, 6235756, -3960497, 21287468, -5319317, 9599789, -10958609, -13166759, -13146895, 13955422, +-4190814, 12388833, 14447733, -3724274, 1912871, 93416, -11783243, 3914863, -10686952, 12635794, +30949534, 50818052, -620623, -1446330, -21505438, 11629698, 16640314, -497679, 18686866, 26708792, +11242614, 15188078, -23417772, -14066018, 19474456, 50774028, -9291088, -29802778, 7604777, -9906342, +-528818, 13766444, 267362, -13593571, -6492917, -7015829, -34524020, -14433238, 234076, 5729487, +12051678, -1983201, -13271449, -7648800, 3265249, -5383742, -13328357, 13741748, 33229088, 14373108, +17902498, 1832340, -4529043, -27021250, -5968931, 7674033, 5983427, -6052683, 15334644, -4336307, +8584029, -18915036, 1102196, -6524592, -5438503, 178778, 5255966, 5143224, -5331128, -10292889, +9963250, -3905736, 8186745, 731218, -2062121, 671089, 1759863, 7567733, 254477, -1205812, +-3913789, -4340602, 6521371, 2156611, 6010270, -12874164, 8960376, 5174362, 2439005, -4669167, +-1705102, 9343164, -1125281, 363462, -7204271, 668404, -11053635, -2341831, 3198677, 9362492, +4648765, 8269423, 1904281, -1410897, -8090108, 18234820, 6133214, 9613211, 3829500, 27430882, +-8506183, -3311957, -10631118, 6452115, -6565395, 6123013, 31095564, 6237367, -32742146, -7900056, +-9484362, -27981176, 17947594, 8543764, -3161096, 4081830, 1841467, -12504260, -26844, -785979, +-12439299, -3649112, 27138288, 39873940, 18845242, -13760538, -21842056, 10449119, 18252000, 2131378, +14615774, -10021769, -6935299, 15032922, 4793721, 307627, -33302640, -43418900, -1335735, -25352656, +-14705431, 9197672, 36479840, 7988103, 1876364, -10457708, -12530030, -18153754, -15983721, 3082713, +11045582, -3802120, -18023830, -29027536, 11632382, 857383, -16154983, -27052388, -18325014, -29787208, +-53864260, -32449552, -4810900, -6366216, 64874408, -7837779, -2390149, 37436544, 4418985, 2193118, +22502944, -13319767, -32749662, -38021196, -5885179, -18162880, -20177220, -21393768, -23480586, 4687957, +21260624, 33820184, 20067698, 4233764, 2214056, -8576513, 17428440, 3685082, -5264020, -21654152, +4501663, 15927886, -753230, 37044, -7795366, 4469451, 8796093, 14577656, 4095788, 6259378, +5564130, 7348689, 8996883, 9481140, -2627983, 7243999, 1466195, -4873178, -11375221, -13462038, +1385664, 3385508, -13553843, -6495065, -13037373, 4420058, 6723235, 10525891, 15201500, 25825638, +19092740, 19742354, 11642046, 7822746, -4680441, 2270427, 102005, -11754252, -18406620, -13622563, +-17818746, -11115912, -15484968, 20488604, -29073170, 7343321, 4614406, -12658879, -40772660, 27740120, +8229694, -2618856, -41285912, 10988674, 6400038, -21794274, 3637837, 19126026, 11743514, 5572720, +-18696530, -3804804, -6984691, 3298535, -7046431, 1735167, -14486925, -20817170, 22826678, -15767899, +34694208, -21406654, -19407346, -13131326, -24394340, 2150705, -486942, 36465884, -27034672, -28483686, +14668924, 9394704, -23608898, -31361314, -3503620, -17668958, 20302310, 4335233, -25997438, 16864726, +-4464619, -39917964, 26182658, -17802102, 17077326, -29699162, -7305203, -821949, -12528420, -5116380, +3382824, 37499896, -10161893, -3505230, -10821707, 10712722, -17792976, 13886166, 29255170, -1797981, +29414620, 23142358, -3568044, 47227460, -2817499, 5462662, -1440425, 13334263, 47554952, -3911642, +-13220983, -50888920, 39368208, 14066018, 33603288, 11459510, -26491896, 11774116, 7506529, 4854924, +-23526758, 13420162, 2699387, 3877819, -12670690, -3675955, 16026670, 13772886, 561030, -1651952, +-1689533, -1841467, 3888556, 10096394, -20672752, -6082748, -2903935, 3301219, -4264903, 4590247, +4399657, 6513855, -4863514, -10953777, 16982300, 26666378, 9290014, -13664975, -11787001, -5043902, +-4045859, 7228430, 3587908, -2655901, -16874926, -12048457, -13677323, -1323924, 13042205, 5758478, +10994043, 4225174, -18387292, -3280281, 8008504, 17870286, 11158325, -7488813, -5634460, -4292820, +2563559, 3117610, -389231, -1067836, -3511136, 28094992, -53687628, 2218888, -60441464, -20150376, +-10134512, 18600430, 56120728, 47718696, 17679696, 28236726, -18087182, -15220827, 2868501, -3974455, +13114683, 4257923, -12491912, 18925236, 27804544, 23124104, 17332878, 14667850, -314606, 2737505, +-9249212, 26309896, 12369506, -4863514, -15977815, 5541045, 10890426, -2711198, 34393560, 35906464, +-20533702, -15155866, 913754, 27924804, 17471926, 4591857, 3554622, -6500433, -12381854, 7058242, +42863772, -17165374, -21002390, -22879290, 22463752, 9252433, -12667469, -19771882, -31762894, -37644316, +4282083, 8410620, 6953552, -8201777, -2660195, -10263898, 7588134, -30002494, -49376016, -22189412, +-3321084, -8292508, -19206020, 24899536, 41525356, -9189619, 21482890, 45832668, 29943438, 10713259, +-31403190, 5217312, 5792837, -27772870, -15300821, -4338991, -22085796, 24358370, 34662532, -1971390, +-7852274, -4168803, -9960029, -5522254, -13993540, -13738527, -4973572, -6777996, 5084168, -3007551, +-3715684, 6890202, -20848308, -2457795, 1832877, 21366926, -21677774, -3467649, -4855461, 4116189, +-13763760, -4799626, 4345433, -7519951, -12714714, -2037425, -872952, -12504797, 14912126, -20219096, +-2175938, -7421167, 4614943, -2092186, -5859946, -11788075, 499290, 6003291, -4110821, 2827699, +-34241088, 27611272, -3508452, 23722714, 14389751, 546535, 15731928, -6903086, -1768453, 13547401, +16604880, 2558190, 83752, -545998, -15119895, -9822590, 4040491, -21075404, 565862, -7924215, +510027, -17869748, 3043521, 994822, -16260746, 13574244, 5770289, 9186935, -20421496, -5513665, +3845606, -1072131, 1473711, 11710228, 2587181, 3278134, -2349347, -4529043, -3202972, -1678795, +7554848, -3424163, -13042205, 10557030, -17932562, -5632850, -6156299, 2146947, -8781598, -10401874, +13644037, -1743220, -13698798, 8366060, -19102404, 15295452, 4752382, 718333, 15749108, 17533668, +2428267, 4995047, -13174275, 17008070, -8332237, -11639361, -1012539, 2514167, 32148368, -14453102, +-23757074, 20344724, -7751342, 20328618, -3452080, 1333051, -8899709, 12312061, -20648056, -17121350, +-6788733, 8087424, 4820564, -1250909, 9880035, -12275017, -12431783, -8250096, 2925410, 3592203, +723702, -533650, -3768834, 2130841, -17149268, 3471407, 3483219, -4132296, -1599875, 5168993, +-2762738, -7323456, 8848706, -4423817, 1080721, -375810, -2261300, 5983963, 2571612, -6213207, +-729608, -1475858, -5577015, -1196148, -2078764, -11410654, 3461744, 6973417, 5549635, -5179194, +5178657, -8324721, -2625299, 209380, -5418638, 17029008, -7153268, -88985816, -169941648, -60316372, +-133006008, -151604832, 37460704, -4872641, 51227148, 197127184, 213702544, 150970240, 215222960, 176933328, +58897424, 62124556, 46027552, -118398824, -121929288, -67728416, -118351584, -127957816, -42705932, -37557880, +-107821392, -81184008, -12982612, -48010220, -58766428, -14440217, -44924820, -79646408, -45259292, 15089831, +-31822486, -39283380, 47145856, -7773354, -44203268, 40669584, 75154952, -17148194, 18944028, 116335632, +16208670, -37056976, 77280424, 67519568, -66566624, 38422240, 85146656, -26311506, 9481677, 147371072, +112496464, 56756384, 206929376, 230348224, 117882896, 212154736, 273915840, 171976928, 162282656, 225223792, +144879440, 92214560, 102109088, 53202832, -61710092, -119579944, -162224672, -277040960, -337111968, -382238656, +-432253024, -426240608, -461988160, -412734016, -306328352, -306341216, -241457152, -21568788, -12390444, 6324340, +173333072, 136924624, 45683420, 90886880, 135238864, 50106700, 60397976, 137297760, 100008312, 20435454, +82429552, 116239528, 50026168, 62649076, 142983760, 53582940, -22580254, 65940096, 46171972, -31615254, +62284004, 138097152, 65064460, 101812200, 220379072, 183271616, 173681504, 258810976, 239046608, 164758704, +143289776, 128441000, 48124572, -1900523, 6903623, -27049704, -86038392, -85689432, -98371392, -168444864, +-188407328, -180655456, -202628496, -243159040, -212962192, -205905568, -219639792, -170103792, -114982720, -90008016, +-56703768, 2044404, 22759032, 19047106, 31616328, 34708168, 17814450, 16254304, 31880468, 27560268, +18758270, 22564684, 26389890, 19977504, 25969520, 39737036, 43741556, 42039676, 49045304, 52041580, +43067784, 49382460, 45434848, 28339268, 14612552, 6326487, -397284, -5661841, -4162897, -4232691, +-8332774, -8964670, -3345243, 4051765, 14475114, 20694764, 24975772, 25930328, 23259396, 23247584, +28804736, 27916214, 27014270, 31185220, 29529510, 21956410, 22815404, 21766358, 13243532, 10821707, +13297756, 6174553, -708133, -2150168, -9614821, -20323248, -21838298, -24748138, -34369404, -38190848, +-35816808, -40867152, -43764644, -38876972, -38421704, -40087616, -35231616, -28348394, -26904748, -23046258, +-16352014, -16281147, -15825881, -11970074, -8026757, -6051609, -550830, 4383014, 6077379, 8376797, +13872207, 18928458, 21829708, 25740812, 25997974, 23320062, 20241644, 18300318, 16487306, 14206141, +11686069, 9198746, 7044820, 5297306, 4930086, 4467303, 3384971, 2837363, 2339147, 1272921, +561567, 102542, -360240, -734439, -869194, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -4409858, -3595961, 3853123, -1881733, 3867081, -2391223, -550293, 5157719, -2161979, 2434173, 1473174, --5794985, -2631204, 4287988, -1717450, -861141, 2688113, 1765232, 1906429, 483721, 6626061, -1101122, -1742146, 1456531, -2331630, 4088809, -1217623, -2304787, -1015223, -5427765, -1854889, --4008278, 1274532, -105227, 1430761, -1628866, 2233383, 1030255, -274341, 653909, 336618, -483721, 703301, -2889439, 7094212, 1012002, -2619930, 5236102, -1293859, -4591857, -5017059, -4830228, -994285, -428423, 3197066, 323196, -863288, 2480344, -295279, 1420560, 396211, -1815697, -991064, 1980517, -934692, 2360622, 3462281, 1857037, -2085207, -2156611, -1064615, -898722, -2225867, 1514513, -1104344, 1889786, 2490007, -3156801, -1781875, 2680597, 787590, --898722, 4172561, 2391760, 1981054, -248034, 1085016, -123480, 540092, -523986, 619012, -208843, 284542, -992137, 1535988, 470299, 93416, -308701, 614180, 976031, -549756, -1053878, -78383, 4519916, 853088, 993211, 3787624, 1074, 2722473, 1269163, -354872, -246961, -3033858, 1351841, 200253, 4646081, 1622424, 1491964, 172336, 1340030, 5112085, --4908611, 2714419, 679142, -3244848, -1484985, -2024003, -698469, -1879585, 1255741, 5912560, -3694209, 4408247, 3479461, 6029597, 4367445, -5529771, -10024454, -1292785, 419296, -2461553, -5208722, -250719, 7825431, -3703336, -3736622, 3368328, 137439, 256624, 3068754, -5776194, -1428614, -4142496, 5401458, 3187403, -68183, 8256001, 320512, -813896, -1073742, -1475321, --2101850, 3899294, 2046552, -2036351, -708670, -5783174, -2582349, -780073, 5994701, 4107599, -692027, 3024194, 66572, 3222299, -41339, 1323924, -3507378, -2248952, 796180, 436476, --227096, -1767379, 1578401, 1896228, -530965, -1814087, -373662, 1912871, -347892, 1014149, --965831, -544387, -770947, 604517, -680752, 102005, -89657, 965831, -852014, 933082, -1411971, -694711, 300111, 114354, -75699, 1746978, -608275, 441308, -700080, 693637, -467615, 296890, -251256, 1537061, -122407, 76773, 607201, 1730335, 3673271, 8293045, -2466922, 408559, 304943, 2369211, 2216740, 537408, 1352378, 1912334, -76773, -129923, -2409477, 9375914, 3173444, 7324530, -4074313, -3323768, -1313723, -4330401, -5066988, -2001992, -3842922, -6273337, -828392, -700080, -9879499, 2041720, -9980430, -3292629, -1279363, 2429341, -91268, 2138357, -1899986, -54224, -6713571, 2536178, -2184528, -3738769, 777389, 1950989, --251792, 543313, 2963528, 5184026, -8584566, 2412698, 654446, -2510945, -2687576, -513785, -1264331, -1112933, -5134097, -1181116, 1488206, 2756832, -284542, 6500970, 644782, 329639, -2716030, -4095251, 6192806, 1990717, 3712462, 1661079, 3120294, -600222, -500901, 1845225, -1143535, -817654, -1764695, -1464047, -2969433, -52076, -4012573, 306016, 2472828, -181999, --1658394, -3180960, 2939905, -1680406, 1245541, 462783, -416612, -3027415, 345745, -264141, -842350, -912144, -792958, 281320, -891206, -1657857, -807454, -682900, -69256, -1087164, --91805, -612033, 1536525, -252329, -676457, -246424, 868120, -295279, -1196685, -1378685, -1590212, 35970, 237297, -869194, 4882841, 5339718, -209380, 5895380, 335007, -807991, -690416, 462246, -1136556, -90194, -4176856, -2393908, 3659312, 4318053, -5127654, -1243930, -2079301, -3422552, -9776956, 2396592, 3565897, 4207458, -2274185, -2608119, -3509525, 5287642, -6021008, 1014149, 2354179, -4780836, -3888019, 4477504, 1665374, -3588445, 6216965, -6291054, -1005559, 577673, 5827197, 2134599, -1334661, 936840, -2069637, 3199214, -7686918, -2285460, --11058467, -4829154, 5542656, -483721, 8519605, -1183264, -7182259, 4507568, 957778, -2936684, --376883, 332323, -2930242, 1883880, 5087926, 5760088, 121333, 2746095, -302258, 6556805, --3382287, 2828236, -654446, -127775, 177167, 2261837, -709207, 8208756, 789737, 733366, --1305670, 4832375, 1624571, -1644436, -3492345, 64961, 3279208, 1135482, 941135, -2156074, --141197, 656593, -359167, -578747, -619012, -1154273, 868120, 69256, 365072, 694174, -1709397, -685584, -1821066, 1975685, -557272, 193810, 13959, -237834, -257161, 783295, -695248, 957241, -369367, 893353, -46171, 517007, 867047, -205622, 90194, 759136, -1129576, 629750, 704912, 231928, 68183, 5929739, -8257612, -1213865, -5624797, -5835787, -1974611, 1032403, 11812234, 538482, 4293894, -10012106, -2460480, 2113661, -5244692, 3331284, -909996, 763430, 2818036, 3282429, 7721278, 3400004, -1319092, 2394981, -3973919, 1060320, -3066070, -289373, 570157, 3388729, 4392141, 10726144, 2029909, -1678795, -7471633, -383326, -5529234, -8817568, 886911, -713501, 2669322, -4454418, -5246840, 9283035, -6054830, 1861332, --454193, -5924908, 13437879, 3423089, 7009924, 3753265, 7672959, -1487669, -2990908, 4877472, --4627291, 3736085, -3702262, 2006287, 5268315, 2891587, -2467459, -465467, 2656974, -4782983, --3570192, 219580, -630823, 7942469, -4466766, -7538742, -1190780, 4099546, 6667937, -4232691, --7148436, -1611687, 9777493, 1245541, -77309, -3573950, 412317, -260919, 2972117, 3070902, --267362, 1440962, 1606318, -4854924, -1174674, 1600949, -303332, 2752000, 1050120, 229781, --2101850, -265214, -345208, 1025423, -393526, 2876018, -636729, -353798, -1520418, 273804, --1904281, 33823, -270046, 681289, 1637993, 10201, 1360431, -140123, -1791001, -391916, -98784, 936840, -3098819, 3641596, -12882754, 7384660, 2209761, -2842195, 3990025, -10522133, --8767639, 1195612, -4299799, 10058277, 8948027, 9500468, -6250251, 3723200, 199179, 9469329, -726386, 6708202, 2728378, -2771865, -8419210, -7641821, 2514703, -10198937, -91805, -2375654, --4915053, -6798933, -3956739, 102542, 8305393, 71941, 3277597, -11678553, -6481643, -1206349, --7282654, 550293, 7420093, -7918309, 3351685, -61203, -2653753, -704375, -1639067, 8132521, -4413616, 4069482, -1876364, -2434173, 11220065, -3342022, -2974802, -9165460, 6782290, -13025562, -1854352, -4265440, 2106145, 4664335, -3077344, -6941204, -4240744, 499827, 9530532, -4733054, --979789, -6120329, -4880694, 3082713, 3354370, 7497939, -8670465, -52076, -4561256, -3033858, -1899449, -3436511, -6796786, -3903052, -541166, 6299644, 6466074, 2229088, 407485, 945430, -2984466, 259846, 516470, 1336809, -1749125, 194884, 2712809, -784368, 374736, 3242164, --734439, -115964, 580357, 2360085, 46171, 370978, 919123, 404264, 2039573, -2332704, --2523293, -172336, -881542, 26844, 1502702, -630823, 2723546, 1773285, -11988864, 3309272, -1187022, 2097018, -16535624, 14922327, 379031, -249108, -219580, -5315022, 1818382, 269509, -5388574, -4575214, 6032819, 1780801, -3640522, -6315750, -7926362, 4092567, 782221, -612570, -621160, -4534412, 5054640, 3801046, 9266392, 5544266, 3707094, 5152350, -1128503, -4997732, --3732327, 382252, -2602750, 4053912, -4419522, -6717866, -7380365, 511638, -10122164, 4727149, -5400922, -6019397, 6283537, -7285339, 3762928, -10783052, 1529008, -1924145, 860067, -2816425, --97711, -10027138, -1626182, -3406983, -6342056, -1650341, -4940823, 1659468, -4446902, -2531346, --6411850, 2928631, -6128919, -388158, 9987946, -1625108, 357556, 3289408, -2146410, -10014790, --11440719, -1851668, -7981660, 463856, -2134599, 7566122, 605590, 2888366, -7518341, 735513, --1651952, -1311576, 5532455, 1423245, -597000, -2916820, 1543504, 2192044, 824097, 2953864, --68183, 1678259, -813359, -231928, 478889, 571231, 1080184, -209917, 3230889, -836982, --2668249, 1183264, 9127, 887985, 1096290, 746251, -351114, -1327682, 852014, -2384244, -991064, 4900021, 3397856, -10203232, -221191, 1941862, -9490804, -10819559, 6082211, -10619844, -2190970, 7256884, -5090073, -12221866, -5169530, 398895, 8250096, -3194919, 14467060, -881005, --1014149, -8176544, -5767604, -871342, 3017752, 914828, -2843268, -2384244, -551366, -2986076, --6030134, 5167920, -4976257, -3020973, 5504001, 1695975, -8559870, -9135395, -8377334, 7444789, --7783555, -8434242, 14039711, -8643085, 6260452, -1124208, 3872450, -12466679, 5859946, 813896, --1932735, -526134, -2344515, 4150012, 3081639, 11923903, -2879776, -2160369, 5719823, 11523934, -3247532, 2389613, -5315559, -3495030, -9329206, -1923072, -140123, -21475, 6932614, -2074469, -3753265, 12053289, -1743757, -365609, -1298691, -163209, -12079596, -13846975, 807454, 9255118, -212601, -18406620, 4928475, -6400575, 3202972, -11471321, -7082938, -1736241, 432718, -4166118, -1956358, 4323422, -423054, -515396, -308701, -1921998, 1997697, -2200634, 1988570, 331249, -711891, -1917166, -1255741, -2697776, 1373316, 241592, -763430, -2589865, -496069, -752156, --1602023, -1909650, 1273995, -2177549, -766115, 1918240, 649614, -1042066, -81068, 82141, --2738579, 322659, -1707250, -2245194, -162672, -576599, 5097590, -863825, 6038724, -930397, --2567854, -3707094, 5122286, 3160022, -2865817, 2324114, 5212480, -2744484, -17769354, -7734163, --3494493, -1983738, 7922604, -13931263, -10229538, 8537321, 5291937, 21496312, 6054294, 4949950, -5905043, 2719251, -3861713, 422517, -4067334, 6842957, 299037, 6907918, 201327, -205085, --9447854, 4887136, -6412386, 4963372, -992674, 5206037, 2056753, 6991133, -10931766, 1269163, --7586523, 9104257, 547608, -9154723, 12078522, 8930311, 5732708, -5487895, -18417894, 5293011, --2007360, -2291365, 9012989, -878321, 4167729, 8713415, -1933272, -11064373, -98247, 4955856, -3221226, -2973728, -1236951, -8109972, 3008088, 1106491, 1709934, -1219234, 1143535, 6975027, --4350802, 3182571, -1152662, -265751, 12562779, -3377455, 5767604, 4145717, -3969087, -4420058, -1560147, 948114, -2123325, 1059246, -2210835, 2025614, -1976222, 4785668, 425202, 4575751, -868120, -115964, 5748814, 2044941, -1717987, 1619203, -1362578, -1794760, 822486, 2294586, --2192044, 1464047, -1138703, -2235531, -116501, 2289755, -1068373, -2488934, 751082, -1162862, --3871913, 1670742, -5906, -1968169, -1180579, -645856, -2201171, -179852, 2836289, 4100620, --3893388, 530965, 4539244, -5114769, -20094542, 4049617, 4835597, 20276004, -4303557, -3308199, -9574019, 12583180, -20623360, -11783243, 11207717, -5883032, 339302, 4572530, -13148506, -28760712, --11312407, 16285979, 12945031, 10945187, -3371013, 6119792, -3386045, 5632850, -6017786, 1959042, --14522358, 3513283, -5144834, 7391102, 7191386, 215822, -6869800, 6726456, 4235912, 11640972, --1235340, -7285875, -3635153, -18435610, -9431748, 4474819, -1255741, -12361453, 8341900, 11429445, --16274168, 15678241, -1523103, -1767379, 9860708, 1994476, 9322763, -1267552, 3320547, -3595961, --1920387, 4690105, 18756122, -6832219, 11934640, -1046898, 1097901, 4455492, 10390600, -9667435, -1098438, 15211700, 4531191, -7038915, 4045859, 5979668, 1387811, 11943230, 8643622, 15024869, --1384053, 4274566, -157840, 475668, -8402567, -5869610, -6684580, -3281355, -33823, -1453310, --2716567, -2440615, 4482872, 6465000, 2969433, -3413425, 5229660, -1584306, -856846, -3204046, --2544231, 3253975, 1083406, -1258962, 197569, -3550864, -2975339, -3495567, 67646, -1979980, -3049964, 1817308, -1303523, 1292248, 3575024, -2252174, 1643362, 2026151, -1912871, -1793149, --2035278, -399432, -581431, 2157684, -752156, 304406, -934155, -13071733, -3333432, 13481902, -8565775, 10162966, -6597607, -3332358, -1059783, -1428077, 14446659, 1860258, -14860587, -6632503, --4543002, 9525701, 1862942, 2043331, 8099772, 17718350, -26203596, 17369384, -3449933, -3112778, --6772090, 5158793, 5349382, 10201084, 1591285, 9720585, -1006633, -2614561, 3023657, -1644436, -4976794, 8934606, 1063004, -692027, 11774116, -8771934, -1624571, 2854006, -1023276, 10356777, --12247099, 1096290, -10479720, 1683627, -11110544, -1591285, 345208, 6071473, 15053324, -8804683, --4836133, -9127879, -528281, -13331042, -8644159, -8775155, 5907728, 10842645, 140660, 21508122, --13653164, 19216220, -13566191, -3204583, 5942624, 4344897, 19082002, 10963441, -14284524, 7431904, --5987722, -19788524, -493921, -12559021, 15785615, 23941222, 15262166, -3017752, -8492224, -3170223, -13418552, -2037425, 6995428, 769873, 3102577, 4694936, 1503775, 1842541, 1586454, -5898064, -4068945, 25233, 1719061, -2306398, -1926293, -5603322, -3106335, -1962263, 3417183, -1751810, -2291902, 2837363, -1090922, -761283, 79994, 3237332, 2091649, 1167157, 6135898, -145492, -6410776, -5751498, -2512019, 4068945, 3976066, -2440078, 1362578, -2056753, -4159676, 435939, --1474784, -13663902, -8779987, -344671, 16441135, -3273839, 7224672, 15262703, -13073344, 5506148, --20855288, 12444131, -12837120, -6340446, 20004348, 6707665, 21573620, -9386114, 38655, -9943386, -6160594, 27683748, 7034620, 9298604, -14161044, -2826625, 583042, 10570451, 9344775, 17666274, --14589467, -5168457, -15867220, -13503914, 881542, 953483, 9219147, -9262097, 6421513, -21532282, -13302051, 10042707, 4720706, -3769908, -2647847, 1246077, 6248641, 1960116, 1676111, -255551, -14432164, 12320651, 5270462, 970126, -11133629, -10995116, 29908542, 964757, 3629247, 16590385, -7289633, -4886599, -3656091, 10500658, 21501680, -15816754, -6648073, -17805324, -16532403, 21007222, -9343164, 73551, -4276714, 6869264, 15963857, 10124849, 16474958, 4495220, -7534983, 11887396, --8717710, -22146998, 6386080, 649077, 246961, -85362, 9096204, 15791521, -3372086, 8294656, -9252970, 8393440, 882616, 1757179, 8092792, -30602, -2675765, -1934346, -3583077, 7894687, --4801237, -1472100, 1881733, 4397510, 516470, -879931, 8433705, 1658394, -1963874, 6323803, -8058433, 3644817, -3571265, -168041, -1685238, 2391223, -73551, -104690, -380105, -2024540, -2703682, 969589, 569083, 2653753, 3499862, -776852, -4135517, -1670205, -668941, 4711043, -1544578, -3517041, 1048509, 1822677, 5025649, 2179159, -437013, 4702989, 76236, 2425046, --1969779, -64961, -185220, 813359, -685047, 6516539, -14008036, -10451266, -4101157, -13019656, -14673756, -1640141, -3744138, -12393128, -2069101, -11535745, -28617368, 4987531, -3531000, -9008157, -6460168, -15155329, -930934, -8272644, -22950158, -5233418, -9965398, -10844256, 18315888, -4883915, --6637335, -3310883, -443992, -4628364, -6499896, -1016297, 4810364, 15538118, 11662984, -420370, --934155, -26011932, 1557463, 3578782, 10637560, -5988258, -5448703, 39522288, -6827388, -19288162, --18808198, 16405701, -11019275, 4752918, -22289270, 5559299, -6292664, -11873437, -10345502, -25267292, -4003447, 7292855, 17923972, 5323612, -9808632, 14208289, 1606318, 13368623, 14747844, 42739756, -11376295, 3002719, -16688632, -18570902, -5089000, 2025077, -2464238, -16801912, 7472170, 19580220, -4417374, 13940927, 21428666, 19338628, -8295730, -15397995, -10667088, 1408749, 3308199, -1843078, --16510391, 3212099, -13453985, 4128537, -6045704, 923418, -7494181, 4886599, -1360968, 3128347, -255551, -3086471, -7669738, -1672353, -340376, 4460324, 5945309, 4877472, 6871948, 463856, -5850819, 10579041, 74625, 2054605, 5735929, 2105071, -5518496, -2983392, -9272298, -2622078, -5251135, 3144990, 462783, -1138166, 3239479, 2001992, -2143189, -4180077, -8163659, 1103270, -1009317, -1068373, -2845953, -537408, -3060164, 1596117, -5761162, -17280800, -7495255, -2703682, -5287105, -6337761, 10224707, -5359046, -7093139, 19887310, 10326175, 22620520, 259309, -6611566, --8969502, 23985782, -20657182, -7727183, 27999428, -16940962, 5575405, 5805185, 7245073, 1618666, -15723338, -4942434, 14148159, -5405217, 3074123, 3359201, -7317014, 10502269, -15982647, -11138461, --10380936, -4789426, -14209899, -26171384, -4786741, -7858180, 4131759, -6767258, -34764540, 9626632, -21794274, -1290638, -4669703, 34121904, -42335492, -9186398, 23572928, -5814849, 18287434, -13483513, --8376260, 6326487, -40404904, 13032541, -13776644, 20163260, 14810658, -21497386, 42349988, 6225555, -2222109, -2199560, 16672526, -30687542, 12526809, -1468879, -4893042, 8191040, -19842748, 28026272, -25438554, -47084652, 6737193, -9392020, -44196824, -7630010, -19746112, 10847477, 2761664, 7633768, --17860622, 27698780, -2741263, -7463580, 12779138, -553514, 9069897, -1959042, 14334990, 325881, -7132330, 2210298, -660888, -1547262, 7999914, -5830418, -6556268, 126165, -7697119, 11462731, --2539936, -5968931, 584116, 5265630, 2503429, 5431523, 2078227, 13303661, 3119220, -7259569, -13774497, -7508140, 7819525, 11876121, -3358128, 2658048, 8303783, -5761162, 435402, -7509214, -8118025, 1165010, 25794500, -11758010, -33597380, -33707976, 2518462, 4023311, -14899778, 8623221, --18816252, 5856725, -8607114, 17134772, 21986474, 585726, 21267604, 19339700, -10965588, -409096, --13988172, -3610994, -3390340, 7385733, -1497870, -2269890, -2459406, -22560926, -34053720, -13768591, -17564806, 13553843, -14688788, -16874390, 9641665, 9774809, -22193706, 10997801, -14810658, -2864743, -16935592, 23570780, 37581, -14173929, 8943733, 1681480, 14642080, 2435783, 12197707, 12599287, --3718368, -48724256, 5383742, 1153736, 19543174, -7280507, 19934016, 19759534, -13418552, -65978212, --8951786, 2579665, -8031052, 39494372, 41441064, 28875066, 41178000, -10798622, 19301584, -16407312, -27484032, 19230716, -32639604, 40980968, -42603928, -36303212, -34227668, 10732586, 25551834, 21257404, -7056095, -26759794, 24490440, 3317325, -8945880, -11521787, 1341104, 23117662, -18083422, -7301445, -35374424, 6451041, 16115791, 3003256, 1611687, 8633421, -13521631, 7115150, -5595269, 164283, -3519189, -3533148, -7067369, -4689031, -6203007, -13587129, 2898566, 12389907, -2615098, 12670154, -9772124, -8296266, -6608344, -6181532, 7768522, 4842039, -16576426, -9645423, 718870, 687195, --2593087, 2063732, 10637023, -384936, 8424041, 766115, -6505265, 4085588, 14106820, -26162256, --49355616, 10287520, 18090402, -2727304, 24896314, 9489730, -31164820, -7918846, 6529961, 7573638, -8476655, -6358699, 14327474, 1151051, -9356586, -4330401, 5049271, 20422032, 26665304, 20138564, -31994822, -30923764, -8646843, -8083129, -31637802, -7646653, 5343476, 1526324, 3425773, -12657269, --14315126, 15959562, 35963372, -17148730, 18521510, -12265890, 4751308, -11320460, -2014877, -28193240, --10325101, -1699196, -39023000, -22859964, -38194072, -32266478, 21225728, 50140520, 39994736, 1073205, --2619930, 29528, -9134322, -17384954, -61022896, -20473036, -8842264, 4860829, 2502892, -21609592, --15130096, 7787313, 26702886, 15877420, 8533026, 17415018, 29959008, 11655467, -30211336, 22908818, --17942226, -9460739, 17721036, 40022116, 8522289, 51348480, -12399034, -53645752, -6317897, -17404818, --32945620, 49359376, 13907104, 15967615, -238908, -4540854, 14175540, 11681774, 538482, -2145336, --8741332, -1875827, -2705830, 13379360, 16175384, 19366008, -2379949, -871878, -952409, -863288, -12621298, -5647882, -4460861, -7675107, -6071473, 7102802, -1671279, -401579, 1979980, 4462471, -7331509, 9126269, -1491427, -5708549, -9866077, 4649839, 1613297, 4369056, 11875048, 10394895, --5574331, 2471217, 5231270, -9597641, -3101503, -2371896, -9245991, -4376035, -620086, 7954817, --13295071, -20837570, -34230352, 21442624, -3180960, -20610474, 10181220, 22728966, 19699942, -40018356, --34553548, 8820252, -15973520, 4264903, 19795504, -10531797, -7730405, 32627256, 8960912, -4376035, --10186589, -9072045, 12333535, -7161321, -1290638, -812823, -13079786, -4967130, -21860846, -29147796, -10597295, 16129750, -18362058, 13660680, 9383967, -6252936, -12699681, 2113124, 23284628, 13466870, -4301947, -23033910, -25784300, -12493523, 7133404, 29148332, -21614960, -11380053, -9757092, 17459578, -46875808, 12505334, -45589468, -10028212, -5251135, 23609972, 657667, 12291660, -5843840, -10714870, --10001905, -25759066, 24254218, 25691958, 10426570, 27155468, -8338142, 17607756, -7975755, -19379966, --21468930, -22956064, 4202626, -43091408, 45439680, -2005750, -17088602, -24861956, -20327544, -1258425, --13269301, -3922379, -23667418, -14567455, -42147588, -11638288, -27728846, 10389526, -9771051, 8351564, -9594957, 10279467, -6867653, 23480586, -5187247, 17042430, 744103, 4193499, -1202591, 7481296, --3494493, -9243306, 2037425, 2805151, 8815420, -13860933, -4770098, 3730716, -13673028, 160524, -5170067, -17110612, -7430294, 4228932, -2280628, -13085692, -20287278, -12146168, 7562364, -3775276, -9475235, 2359548, 474594, 13939853, 1072131, 12001212, 4721243, 7512972, 27880780, 16729971, --7697655, 4320200, -9594957, 470836, -4495220, 35093104, 26348550, 10092099, 5232344, 16529719, -14982993, -23772108, -34270616, 11697343, 26826366, 38359428, 244276, -8560407, -23914914, -14054744, -16135655, -447213, -20411296, -41206988, -41181220, 8695698, -12362526, 23124104, -47449724, -15676631, -9261560, 6840809, 9066676, -15022185, 6925635, -1272384, -8887361, -1767379, -22248468, 20557860, -25393458, 18847928, -29963302, -16036871, -678605, 10173167, 15130096, 16151225, 12999255, -3395172, --2087354, -4067871, 21517250, 59540056, 37665788, -31010200, -30431990, -19396610, -39217884, 46275052, -24761560, -14352170, -40678172, -39060580, 44493712, 27307938, 6037651, 34160024, -35403952, -3940633, -2299418, -9161165, 3565360, -13244605, -35804996, 8900246, -27338004, 36685464, 34827352, -13277355, --6046777, 370978, 4109210, 39037496, 40109624, -63418952, -35214972, -20404852, 8138426, 17770428, -17388176, -24598888, -26175142, -31156230, -3681861, 32219234, 894427, 6375879, -7181186, -34462816, -8118025, -14479945, -17818746, 7814156, 60477436, 20329690, -11082626, -15495705, -14236206, -11976516, -16041166, 18769544, 21984864, -3970161, 14267881, -21384642, 5383205, 7721815, 9944997, -7736310, -4385699, 17765058, -4385699, -5110474, -2741800, 17532056, 11678016, 27328876, 7149510, -9809168, --7109782, 10080825, 34120292, 27504970, 6009196, -20379082, -24721294, -8115341, -5741298, 5845988, -2683281, -10107669, -12418898, 23341536, -38104948, 33253784, 49027052, 53202832, -59936804, 11034308, --1861868, -5133023, 25401510, -10813117, -17797270, 17588428, 8965207, 36461588, -3714073, -28852516, -873489, -13163001, 21538188, -33155536, -11742441, -15579994, -22094922, 30280056, -22143778, -3144990, -20852604, 12106976, -7350300, -11582990, -31032750, 4011500, 40881648, 24897388, -1756642, 12156905, --9220758, 33390686, -22506702, 15422691, -12422119, 20740398, 34473020, -7662759, -22389664, 11050414, --30534534, 50571092, 5932961, -26847304, -9189083, -41884520, 5342403, 59974924, -10921565, -35302484, --24649892, 36764384, 10985453, -19320374, -978716, 9465034, 20638392, 50527604, -41229540, 18353468, -41436232, -6295349, -48959944, -47436304, -27755690, 83027624, -60772176, 20567524, -64005212, -30798674, -133728640, 12826920, -58290224, -56055764, -64561948, 81420768, 10511932, -15443092, -64689188, -15585363, -20245402, 65876744, -23607288, 7126962, -28483686, 9749039, 40065604, 24366960, -35791036, 16853452, -6603512, 15461882, 13814762, -36435280, 1279900, -8696235, -13726715, 7145215, -13307956, -26882738, -10330470, -7979513, 34929360, 5116380, -32044214, -36728412, -11617887, 936303, 28182502, 21070572, -5007932, -17192754, 7307350, -799401, -13540421, 881542, 17980880, 15646029, 3974455, -27116276, -6837588, 10430865, 17226576, 15097347, 11129871, -5366562, -17428978, -6731288, -4053912, -5556614, -8462696, -14344117, -3867618, -5180268, -6699612, 21807696, -56304872, 9904731, -50585588, 22379464, -23964306, 47298328, 20949776, 10868952, 12394739, -14703821, -36109400, -25110526, -23703924, 10161893, -5915781, -6132140, 21636972, 33363306, -14892262, -20917028, 23177254, 4140349, -30816928, -7071664, -13991393, -25420838, -4473209, 5642514, 12974559, 6925098, 18340584, 31426276, 5566278, -20007032, --2294586, 6070400, -15889232, -7092065, 14701136, -11135776, -20124070, 28033252, -6742562, -6921340, --11132555, -10992969, 18175764, 4645007, 4166118, 24195698, -11540577, -18660560, -1068910, 1816771, --7907035, 6200859, -1300838, -6634651, -1188632, -23536958, 5267778, 4630512, -3992709, 12709882, -8585103, 4453881, 5689758, -24310588, 28819768, -10770704, -10408853, 8842264, -26331908, 8594766, --19716584, 2313914, -15595563, 5087926, 6896644, 10682657, 965831, 9477382, 14283451, -5492190, --3207804, 7931731, -470836, -5003100, 4361540, 1024887, -3275986, -5034239, -4574677, -3016678, -10314901, -9833864, 10005663, 703301, 2720862, 5015985, 2988760, 7298223, -394063, -181999, --4440460, -966368, -6124624, 12402792, 919660, -5538897, -9051644, -2946348, 4810364, -8841190, -11753178, -5687611, -14908368, 864362, 6334003, -848793, -430034, 1547262, -7047505, -4254702, --26296474, 42213088, -2301029, 23848342, -21853868, 2581275, -4047470, 7456063, 6730214, 12729209, --6668474, 9337259, -5986648, 5093295, -1056025, 4005057, 10096931, -1380295, 15720117, -6478422, -11849815, 510564, -619549, -4595078, 7547332, -6219113, 6806987, -4193499, 371515, -3499325, -3675955, -2879239, 8891656, -2930242, -6422050, 14314052, -10095858, 7427072, 5963025, 2100776, -6883759, -8967892, -6255620, 6505265, 6084358, -4013647, -942208, 6944962, -744640, -9967008, -4221953, -5123896, 4954782, 6739878, 3121904, 2229088, 2110977, -10719165, 5069672, 2866354, --3312494, 3758633, -5102958, 2298881, -2596308, -602906, -1449552, 3579318, 7020661, -10007274, -8710194, -1866163, -3598109, 4952634, -6995965, 3142306, 4734665, -1316944, -2611877, 3266323, --1466195, 1868848, -1043677, -3641059, -661425, 3662533, -1122060, 1341104, -898185, -2703682, -1552094, 1405528, 2547453, -3866008, 2884608, -380641, -1669669, 3425237, -4087198, 6073621, -3031710, -2446521, 6199249, -609885, -2621004, 126702, -2618856, 3655017, -4262218, 4210679, -1627793, 2208687, 969052, -2618320, 1970316, 851477, 370441, 270583, 51540, -1138703, -1015760, -2731599, 3048890, 1146219, -3105261, 10505490, -35705136, -111235896, -16381005, 53992572, -27906550, 131262256, 24379844, 28213104, 17726940, -35378184, -49851148, -35498980, -63896764, -54886996, --31175556, -12775917, 36496484, 99694248, 79027400, 68106904, 38662220, -30687004, -49984292, -36739688, --68867120, -65174520, -20052128, -9148280, -15282031, 25267830, 39439076, 26139170, 48110612, 37243808, -11314018, 34258808, 6896644, -5091684, 3068217, -20649666, -54427972, -46187540, -39347268, -55077048, --23168128, 16093779, 10959146, 35275640, 39829916, 34910568, 35717484, 36592048, 23077396, 22679038, -2370822, -20318954, -38086696, -25915296, -35862440, -47240884, -23390928, -21665962, -17772574, 6702834, -17804250, 17169132, 33282776, 41767484, 20075750, 29451128, 24999930, -6954089, 2790655, 11319386, --13993540, -12533788, -22375706, -39969504, -40281960, -31855772, -33148020, -6450504, 13770202, 9309878, -26182120, 39493836, 30984430, 28775208, 29407642, 19753628, 6371047, 1910724, -9266929, -17143898, --18609556, -27480812, -34964256, -37014028, -32044214, -28596430, -16495359, 3760244, 17976586, 41459320, -54621784, 48119204, 39703216, 33872796, 19422378, 4161823, -17011292, -34704408, -47583404, -49632104, --54958940, -40343700, -17002164, -4183298, 11357504, 32729798, 41998336, 45558328, 46680924, 39243116, -16462610, -1105954, -12227772, -26508538, -34762928, -32407138, -29035052, -20714090, -8677981, 1166621, -11362336, 15033459, 11312407, 12700218, 9842454, 6940667, 5160940, 5612449, 1630477, 1927904, --704912, -2715493, -3616363, -2928631, -4643397, -5155572, -5890011, -4970351, -4926865, -3838090, --2816962, 416612, 1785096, 3362423, 4625143, 6303938, 5869073, 5486821, 4158602, 3415036, -1660005, -222801, -2260764, -3211025, -4683125, -5371394, -5515812, -4553202, -4558571, -2728378, --954020, 1069447, 2522220, 4196720, 4169876, 4653060, 4553202, 4736275, 4203699, 2286533, --846645, -2369211, -4050154, -4757213, -4413079, -3476239, -3455301, -2323577, -1741609, -461709, -772557, 2214056, 3180960, 4277251, 4177393, 3694209, 2515240, 1178432, -209917, -959925, --2129767, -2925410, -3491809, -3375844, -2894808, -1573032, -515396, 761820, 1632088, 2141578, -2193118, 1863479, 1089311, 905701, 479426, 188442, -266288, -522375, -768262, -783832, --811749, -644245, -504659, -276489, -158377, -15569, 23622, 133144, 138513, 161061, -100395, 93416, 76236, 71404, 74088, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +3595961, 3853123, -1881733, 3867081, -2391223, -550293, 5157719, -2161979, 2434173, 1473174, +-5794985, -2631204, 4287988, -1717450, -861141, 2688113, 1765232, 1906429, 483721, 6626061, +1101122, -1742146, 1456531, -2331630, 4088809, -1217623, -2304787, -1015223, -5427765, -1854889, +-4008278, 1274532, -105227, 1430761, -1628866, 2233383, 1030255, -274341, 653909, 336618, +483721, 703301, -2889439, 7094212, 1012002, -2619930, 5236102, -1293859, -4591857, -5017059, +4830228, -994285, -428423, 3197066, 323196, -863288, 2480344, -295279, 1420560, 396211, +1815697, -991064, 1980517, -934692, 2360622, 3462281, 1857037, -2085207, -2156611, -1064615, +898722, -2225867, 1514513, -1104344, 1889786, 2490007, -3156801, -1781875, 2680597, 787590, +-898722, 4172561, 2391760, 1981054, -248034, 1085016, -123480, 540092, -523986, 619012, +208843, 284542, -992137, 1535988, 470299, 93416, -308701, 614180, 976031, -549756, +1053878, -78383, 4519916, 853088, 993211, 3787624, 1074, 2722473, 1269163, -354872, +246961, -3033858, 1351841, 200253, 4646081, 1622424, 1491964, 172336, 1340030, 5112085, +-4908611, 2714419, 679142, -3244848, -1484985, -2024003, -698469, -1879585, 1255741, 5912560, +3694209, 4408247, 3479461, 6029597, 4367445, -5529771, -10024454, -1292785, 419296, -2461553, +5208722, -250719, 7825431, -3703336, -3736622, 3368328, 137439, 256624, 3068754, -5776194, +1428614, -4142496, 5401458, 3187403, -68183, 8256001, 320512, -813896, -1073742, -1475321, +-2101850, 3899294, 2046552, -2036351, -708670, -5783174, -2582349, -780073, 5994701, 4107599, +692027, 3024194, 66572, 3222299, -41339, 1323924, -3507378, -2248952, 796180, 436476, +-227096, -1767379, 1578401, 1896228, -530965, -1814087, -373662, 1912871, -347892, 1014149, +-965831, -544387, -770947, 604517, -680752, 102005, -89657, 965831, -852014, 933082, +1411971, -694711, 300111, 114354, -75699, 1746978, -608275, 441308, -700080, 693637, +467615, 296890, -251256, 1537061, -122407, 76773, 607201, 1730335, 3673271, 8293045, +2466922, 408559, 304943, 2369211, 2216740, 537408, 1352378, 1912334, -76773, -129923, +2409477, 9375914, 3173444, 7324530, -4074313, -3323768, -1313723, -4330401, -5066988, -2001992, +3842922, -6273337, -828392, -700080, -9879499, 2041720, -9980430, -3292629, -1279363, 2429341, +91268, 2138357, -1899986, -54224, -6713571, 2536178, -2184528, -3738769, 777389, 1950989, +-251792, 543313, 2963528, 5184026, -8584566, 2412698, 654446, -2510945, -2687576, -513785, +1264331, -1112933, -5134097, -1181116, 1488206, 2756832, -284542, 6500970, 644782, 329639, +2716030, -4095251, 6192806, 1990717, 3712462, 1661079, 3120294, -600222, -500901, 1845225, +1143535, -817654, -1764695, -1464047, -2969433, -52076, -4012573, 306016, 2472828, -181999, +-1658394, -3180960, 2939905, -1680406, 1245541, 462783, -416612, -3027415, 345745, -264141, +842350, -912144, -792958, 281320, -891206, -1657857, -807454, -682900, -69256, -1087164, +-91805, -612033, 1536525, -252329, -676457, -246424, 868120, -295279, -1196685, -1378685, +1590212, 35970, 237297, -869194, 4882841, 5339718, -209380, 5895380, 335007, -807991, +690416, 462246, -1136556, -90194, -4176856, -2393908, 3659312, 4318053, -5127654, -1243930, +2079301, -3422552, -9776956, 2396592, 3565897, 4207458, -2274185, -2608119, -3509525, 5287642, +6021008, 1014149, 2354179, -4780836, -3888019, 4477504, 1665374, -3588445, 6216965, -6291054, +1005559, 577673, 5827197, 2134599, -1334661, 936840, -2069637, 3199214, -7686918, -2285460, +-11058467, -4829154, 5542656, -483721, 8519605, -1183264, -7182259, 4507568, 957778, -2936684, +-376883, 332323, -2930242, 1883880, 5087926, 5760088, 121333, 2746095, -302258, 6556805, +-3382287, 2828236, -654446, -127775, 177167, 2261837, -709207, 8208756, 789737, 733366, +-1305670, 4832375, 1624571, -1644436, -3492345, 64961, 3279208, 1135482, 941135, -2156074, +-141197, 656593, -359167, -578747, -619012, -1154273, 868120, 69256, 365072, 694174, +1709397, -685584, -1821066, 1975685, -557272, 193810, 13959, -237834, -257161, 783295, +695248, 957241, -369367, 893353, -46171, 517007, 867047, -205622, 90194, 759136, +1129576, 629750, 704912, 231928, 68183, 5929739, -8257612, -1213865, -5624797, -5835787, +1974611, 1032403, 11812234, 538482, 4293894, -10012106, -2460480, 2113661, -5244692, 3331284, +909996, 763430, 2818036, 3282429, 7721278, 3400004, -1319092, 2394981, -3973919, 1060320, +3066070, -289373, 570157, 3388729, 4392141, 10726144, 2029909, -1678795, -7471633, -383326, +5529234, -8817568, 886911, -713501, 2669322, -4454418, -5246840, 9283035, -6054830, 1861332, +-454193, -5924908, 13437879, 3423089, 7009924, 3753265, 7672959, -1487669, -2990908, 4877472, +-4627291, 3736085, -3702262, 2006287, 5268315, 2891587, -2467459, -465467, 2656974, -4782983, +-3570192, 219580, -630823, 7942469, -4466766, -7538742, -1190780, 4099546, 6667937, -4232691, +-7148436, -1611687, 9777493, 1245541, -77309, -3573950, 412317, -260919, 2972117, 3070902, +-267362, 1440962, 1606318, -4854924, -1174674, 1600949, -303332, 2752000, 1050120, 229781, +-2101850, -265214, -345208, 1025423, -393526, 2876018, -636729, -353798, -1520418, 273804, +-1904281, 33823, -270046, 681289, 1637993, 10201, 1360431, -140123, -1791001, -391916, +98784, 936840, -3098819, 3641596, -12882754, 7384660, 2209761, -2842195, 3990025, -10522133, +-8767639, 1195612, -4299799, 10058277, 8948027, 9500468, -6250251, 3723200, 199179, 9469329, +726386, 6708202, 2728378, -2771865, -8419210, -7641821, 2514703, -10198937, -91805, -2375654, +-4915053, -6798933, -3956739, 102542, 8305393, 71941, 3277597, -11678553, -6481643, -1206349, +-7282654, 550293, 7420093, -7918309, 3351685, -61203, -2653753, -704375, -1639067, 8132521, +4413616, 4069482, -1876364, -2434173, 11220065, -3342022, -2974802, -9165460, 6782290, -13025562, +1854352, -4265440, 2106145, 4664335, -3077344, -6941204, -4240744, 499827, 9530532, -4733054, +-979789, -6120329, -4880694, 3082713, 3354370, 7497939, -8670465, -52076, -4561256, -3033858, +1899449, -3436511, -6796786, -3903052, -541166, 6299644, 6466074, 2229088, 407485, 945430, +2984466, 259846, 516470, 1336809, -1749125, 194884, 2712809, -784368, 374736, 3242164, +-734439, -115964, 580357, 2360085, 46171, 370978, 919123, 404264, 2039573, -2332704, +-2523293, -172336, -881542, 26844, 1502702, -630823, 2723546, 1773285, -11988864, 3309272, +1187022, 2097018, -16535624, 14922327, 379031, -249108, -219580, -5315022, 1818382, 269509, +5388574, -4575214, 6032819, 1780801, -3640522, -6315750, -7926362, 4092567, 782221, -612570, +621160, -4534412, 5054640, 3801046, 9266392, 5544266, 3707094, 5152350, -1128503, -4997732, +-3732327, 382252, -2602750, 4053912, -4419522, -6717866, -7380365, 511638, -10122164, 4727149, +5400922, -6019397, 6283537, -7285339, 3762928, -10783052, 1529008, -1924145, 860067, -2816425, +-97711, -10027138, -1626182, -3406983, -6342056, -1650341, -4940823, 1659468, -4446902, -2531346, +-6411850, 2928631, -6128919, -388158, 9987946, -1625108, 357556, 3289408, -2146410, -10014790, +-11440719, -1851668, -7981660, 463856, -2134599, 7566122, 605590, 2888366, -7518341, 735513, +-1651952, -1311576, 5532455, 1423245, -597000, -2916820, 1543504, 2192044, 824097, 2953864, +-68183, 1678259, -813359, -231928, 478889, 571231, 1080184, -209917, 3230889, -836982, +-2668249, 1183264, 9127, 887985, 1096290, 746251, -351114, -1327682, 852014, -2384244, +991064, 4900021, 3397856, -10203232, -221191, 1941862, -9490804, -10819559, 6082211, -10619844, +2190970, 7256884, -5090073, -12221866, -5169530, 398895, 8250096, -3194919, 14467060, -881005, +-1014149, -8176544, -5767604, -871342, 3017752, 914828, -2843268, -2384244, -551366, -2986076, +-6030134, 5167920, -4976257, -3020973, 5504001, 1695975, -8559870, -9135395, -8377334, 7444789, +-7783555, -8434242, 14039711, -8643085, 6260452, -1124208, 3872450, -12466679, 5859946, 813896, +-1932735, -526134, -2344515, 4150012, 3081639, 11923903, -2879776, -2160369, 5719823, 11523934, +3247532, 2389613, -5315559, -3495030, -9329206, -1923072, -140123, -21475, 6932614, -2074469, +3753265, 12053289, -1743757, -365609, -1298691, -163209, -12079596, -13846975, 807454, 9255118, +212601, -18406620, 4928475, -6400575, 3202972, -11471321, -7082938, -1736241, 432718, -4166118, +1956358, 4323422, -423054, -515396, -308701, -1921998, 1997697, -2200634, 1988570, 331249, +711891, -1917166, -1255741, -2697776, 1373316, 241592, -763430, -2589865, -496069, -752156, +-1602023, -1909650, 1273995, -2177549, -766115, 1918240, 649614, -1042066, -81068, 82141, +-2738579, 322659, -1707250, -2245194, -162672, -576599, 5097590, -863825, 6038724, -930397, +-2567854, -3707094, 5122286, 3160022, -2865817, 2324114, 5212480, -2744484, -17769354, -7734163, +-3494493, -1983738, 7922604, -13931263, -10229538, 8537321, 5291937, 21496312, 6054294, 4949950, +5905043, 2719251, -3861713, 422517, -4067334, 6842957, 299037, 6907918, 201327, -205085, +-9447854, 4887136, -6412386, 4963372, -992674, 5206037, 2056753, 6991133, -10931766, 1269163, +-7586523, 9104257, 547608, -9154723, 12078522, 8930311, 5732708, -5487895, -18417894, 5293011, +-2007360, -2291365, 9012989, -878321, 4167729, 8713415, -1933272, -11064373, -98247, 4955856, +3221226, -2973728, -1236951, -8109972, 3008088, 1106491, 1709934, -1219234, 1143535, 6975027, +-4350802, 3182571, -1152662, -265751, 12562779, -3377455, 5767604, 4145717, -3969087, -4420058, +1560147, 948114, -2123325, 1059246, -2210835, 2025614, -1976222, 4785668, 425202, 4575751, +868120, -115964, 5748814, 2044941, -1717987, 1619203, -1362578, -1794760, 822486, 2294586, +-2192044, 1464047, -1138703, -2235531, -116501, 2289755, -1068373, -2488934, 751082, -1162862, +-3871913, 1670742, -5906, -1968169, -1180579, -645856, -2201171, -179852, 2836289, 4100620, +-3893388, 530965, 4539244, -5114769, -20094542, 4049617, 4835597, 20276004, -4303557, -3308199, +9574019, 12583180, -20623360, -11783243, 11207717, -5883032, 339302, 4572530, -13148506, -28760712, +-11312407, 16285979, 12945031, 10945187, -3371013, 6119792, -3386045, 5632850, -6017786, 1959042, +-14522358, 3513283, -5144834, 7391102, 7191386, 215822, -6869800, 6726456, 4235912, 11640972, +-1235340, -7285875, -3635153, -18435610, -9431748, 4474819, -1255741, -12361453, 8341900, 11429445, +-16274168, 15678241, -1523103, -1767379, 9860708, 1994476, 9322763, -1267552, 3320547, -3595961, +-1920387, 4690105, 18756122, -6832219, 11934640, -1046898, 1097901, 4455492, 10390600, -9667435, +1098438, 15211700, 4531191, -7038915, 4045859, 5979668, 1387811, 11943230, 8643622, 15024869, +-1384053, 4274566, -157840, 475668, -8402567, -5869610, -6684580, -3281355, -33823, -1453310, +-2716567, -2440615, 4482872, 6465000, 2969433, -3413425, 5229660, -1584306, -856846, -3204046, +-2544231, 3253975, 1083406, -1258962, 197569, -3550864, -2975339, -3495567, 67646, -1979980, +3049964, 1817308, -1303523, 1292248, 3575024, -2252174, 1643362, 2026151, -1912871, -1793149, +-2035278, -399432, -581431, 2157684, -752156, 304406, -934155, -13071733, -3333432, 13481902, +8565775, 10162966, -6597607, -3332358, -1059783, -1428077, 14446659, 1860258, -14860587, -6632503, +-4543002, 9525701, 1862942, 2043331, 8099772, 17718350, -26203596, 17369384, -3449933, -3112778, +-6772090, 5158793, 5349382, 10201084, 1591285, 9720585, -1006633, -2614561, 3023657, -1644436, +4976794, 8934606, 1063004, -692027, 11774116, -8771934, -1624571, 2854006, -1023276, 10356777, +-12247099, 1096290, -10479720, 1683627, -11110544, -1591285, 345208, 6071473, 15053324, -8804683, +-4836133, -9127879, -528281, -13331042, -8644159, -8775155, 5907728, 10842645, 140660, 21508122, +-13653164, 19216220, -13566191, -3204583, 5942624, 4344897, 19082002, 10963441, -14284524, 7431904, +-5987722, -19788524, -493921, -12559021, 15785615, 23941222, 15262166, -3017752, -8492224, -3170223, +13418552, -2037425, 6995428, 769873, 3102577, 4694936, 1503775, 1842541, 1586454, -5898064, +4068945, 25233, 1719061, -2306398, -1926293, -5603322, -3106335, -1962263, 3417183, -1751810, +2291902, 2837363, -1090922, -761283, 79994, 3237332, 2091649, 1167157, 6135898, -145492, +6410776, -5751498, -2512019, 4068945, 3976066, -2440078, 1362578, -2056753, -4159676, 435939, +-1474784, -13663902, -8779987, -344671, 16441135, -3273839, 7224672, 15262703, -13073344, 5506148, +-20855288, 12444131, -12837120, -6340446, 20004348, 6707665, 21573620, -9386114, 38655, -9943386, +6160594, 27683748, 7034620, 9298604, -14161044, -2826625, 583042, 10570451, 9344775, 17666274, +-14589467, -5168457, -15867220, -13503914, 881542, 953483, 9219147, -9262097, 6421513, -21532282, +13302051, 10042707, 4720706, -3769908, -2647847, 1246077, 6248641, 1960116, 1676111, -255551, +14432164, 12320651, 5270462, 970126, -11133629, -10995116, 29908542, 964757, 3629247, 16590385, +7289633, -4886599, -3656091, 10500658, 21501680, -15816754, -6648073, -17805324, -16532403, 21007222, +9343164, 73551, -4276714, 6869264, 15963857, 10124849, 16474958, 4495220, -7534983, 11887396, +-8717710, -22146998, 6386080, 649077, 246961, -85362, 9096204, 15791521, -3372086, 8294656, +9252970, 8393440, 882616, 1757179, 8092792, -30602, -2675765, -1934346, -3583077, 7894687, +-4801237, -1472100, 1881733, 4397510, 516470, -879931, 8433705, 1658394, -1963874, 6323803, +8058433, 3644817, -3571265, -168041, -1685238, 2391223, -73551, -104690, -380105, -2024540, +2703682, 969589, 569083, 2653753, 3499862, -776852, -4135517, -1670205, -668941, 4711043, +1544578, -3517041, 1048509, 1822677, 5025649, 2179159, -437013, 4702989, 76236, 2425046, +-1969779, -64961, -185220, 813359, -685047, 6516539, -14008036, -10451266, -4101157, -13019656, +14673756, -1640141, -3744138, -12393128, -2069101, -11535745, -28617368, 4987531, -3531000, -9008157, +6460168, -15155329, -930934, -8272644, -22950158, -5233418, -9965398, -10844256, 18315888, -4883915, +-6637335, -3310883, -443992, -4628364, -6499896, -1016297, 4810364, 15538118, 11662984, -420370, +-934155, -26011932, 1557463, 3578782, 10637560, -5988258, -5448703, 39522288, -6827388, -19288162, +-18808198, 16405701, -11019275, 4752918, -22289270, 5559299, -6292664, -11873437, -10345502, -25267292, +4003447, 7292855, 17923972, 5323612, -9808632, 14208289, 1606318, 13368623, 14747844, 42739756, +11376295, 3002719, -16688632, -18570902, -5089000, 2025077, -2464238, -16801912, 7472170, 19580220, +4417374, 13940927, 21428666, 19338628, -8295730, -15397995, -10667088, 1408749, 3308199, -1843078, +-16510391, 3212099, -13453985, 4128537, -6045704, 923418, -7494181, 4886599, -1360968, 3128347, +255551, -3086471, -7669738, -1672353, -340376, 4460324, 5945309, 4877472, 6871948, 463856, +5850819, 10579041, 74625, 2054605, 5735929, 2105071, -5518496, -2983392, -9272298, -2622078, +5251135, 3144990, 462783, -1138166, 3239479, 2001992, -2143189, -4180077, -8163659, 1103270, +1009317, -1068373, -2845953, -537408, -3060164, 1596117, -5761162, -17280800, -7495255, -2703682, +5287105, -6337761, 10224707, -5359046, -7093139, 19887310, 10326175, 22620520, 259309, -6611566, +-8969502, 23985782, -20657182, -7727183, 27999428, -16940962, 5575405, 5805185, 7245073, 1618666, +15723338, -4942434, 14148159, -5405217, 3074123, 3359201, -7317014, 10502269, -15982647, -11138461, +-10380936, -4789426, -14209899, -26171384, -4786741, -7858180, 4131759, -6767258, -34764540, 9626632, +21794274, -1290638, -4669703, 34121904, -42335492, -9186398, 23572928, -5814849, 18287434, -13483513, +-8376260, 6326487, -40404904, 13032541, -13776644, 20163260, 14810658, -21497386, 42349988, 6225555, +2222109, -2199560, 16672526, -30687542, 12526809, -1468879, -4893042, 8191040, -19842748, 28026272, +25438554, -47084652, 6737193, -9392020, -44196824, -7630010, -19746112, 10847477, 2761664, 7633768, +-17860622, 27698780, -2741263, -7463580, 12779138, -553514, 9069897, -1959042, 14334990, 325881, +7132330, 2210298, -660888, -1547262, 7999914, -5830418, -6556268, 126165, -7697119, 11462731, +-2539936, -5968931, 584116, 5265630, 2503429, 5431523, 2078227, 13303661, 3119220, -7259569, +13774497, -7508140, 7819525, 11876121, -3358128, 2658048, 8303783, -5761162, 435402, -7509214, +8118025, 1165010, 25794500, -11758010, -33597380, -33707976, 2518462, 4023311, -14899778, 8623221, +-18816252, 5856725, -8607114, 17134772, 21986474, 585726, 21267604, 19339700, -10965588, -409096, +-13988172, -3610994, -3390340, 7385733, -1497870, -2269890, -2459406, -22560926, -34053720, -13768591, +17564806, 13553843, -14688788, -16874390, 9641665, 9774809, -22193706, 10997801, -14810658, -2864743, +16935592, 23570780, 37581, -14173929, 8943733, 1681480, 14642080, 2435783, 12197707, 12599287, +-3718368, -48724256, 5383742, 1153736, 19543174, -7280507, 19934016, 19759534, -13418552, -65978212, +-8951786, 2579665, -8031052, 39494372, 41441064, 28875066, 41178000, -10798622, 19301584, -16407312, +27484032, 19230716, -32639604, 40980968, -42603928, -36303212, -34227668, 10732586, 25551834, 21257404, +7056095, -26759794, 24490440, 3317325, -8945880, -11521787, 1341104, 23117662, -18083422, -7301445, +35374424, 6451041, 16115791, 3003256, 1611687, 8633421, -13521631, 7115150, -5595269, 164283, +3519189, -3533148, -7067369, -4689031, -6203007, -13587129, 2898566, 12389907, -2615098, 12670154, +9772124, -8296266, -6608344, -6181532, 7768522, 4842039, -16576426, -9645423, 718870, 687195, +-2593087, 2063732, 10637023, -384936, 8424041, 766115, -6505265, 4085588, 14106820, -26162256, +-49355616, 10287520, 18090402, -2727304, 24896314, 9489730, -31164820, -7918846, 6529961, 7573638, +8476655, -6358699, 14327474, 1151051, -9356586, -4330401, 5049271, 20422032, 26665304, 20138564, +31994822, -30923764, -8646843, -8083129, -31637802, -7646653, 5343476, 1526324, 3425773, -12657269, +-14315126, 15959562, 35963372, -17148730, 18521510, -12265890, 4751308, -11320460, -2014877, -28193240, +-10325101, -1699196, -39023000, -22859964, -38194072, -32266478, 21225728, 50140520, 39994736, 1073205, +-2619930, 29528, -9134322, -17384954, -61022896, -20473036, -8842264, 4860829, 2502892, -21609592, +-15130096, 7787313, 26702886, 15877420, 8533026, 17415018, 29959008, 11655467, -30211336, 22908818, +-17942226, -9460739, 17721036, 40022116, 8522289, 51348480, -12399034, -53645752, -6317897, -17404818, +-32945620, 49359376, 13907104, 15967615, -238908, -4540854, 14175540, 11681774, 538482, -2145336, +-8741332, -1875827, -2705830, 13379360, 16175384, 19366008, -2379949, -871878, -952409, -863288, +12621298, -5647882, -4460861, -7675107, -6071473, 7102802, -1671279, -401579, 1979980, 4462471, +7331509, 9126269, -1491427, -5708549, -9866077, 4649839, 1613297, 4369056, 11875048, 10394895, +-5574331, 2471217, 5231270, -9597641, -3101503, -2371896, -9245991, -4376035, -620086, 7954817, +-13295071, -20837570, -34230352, 21442624, -3180960, -20610474, 10181220, 22728966, 19699942, -40018356, +-34553548, 8820252, -15973520, 4264903, 19795504, -10531797, -7730405, 32627256, 8960912, -4376035, +-10186589, -9072045, 12333535, -7161321, -1290638, -812823, -13079786, -4967130, -21860846, -29147796, +10597295, 16129750, -18362058, 13660680, 9383967, -6252936, -12699681, 2113124, 23284628, 13466870, +4301947, -23033910, -25784300, -12493523, 7133404, 29148332, -21614960, -11380053, -9757092, 17459578, +46875808, 12505334, -45589468, -10028212, -5251135, 23609972, 657667, 12291660, -5843840, -10714870, +-10001905, -25759066, 24254218, 25691958, 10426570, 27155468, -8338142, 17607756, -7975755, -19379966, +-21468930, -22956064, 4202626, -43091408, 45439680, -2005750, -17088602, -24861956, -20327544, -1258425, +-13269301, -3922379, -23667418, -14567455, -42147588, -11638288, -27728846, 10389526, -9771051, 8351564, +9594957, 10279467, -6867653, 23480586, -5187247, 17042430, 744103, 4193499, -1202591, 7481296, +-3494493, -9243306, 2037425, 2805151, 8815420, -13860933, -4770098, 3730716, -13673028, 160524, +5170067, -17110612, -7430294, 4228932, -2280628, -13085692, -20287278, -12146168, 7562364, -3775276, +9475235, 2359548, 474594, 13939853, 1072131, 12001212, 4721243, 7512972, 27880780, 16729971, +-7697655, 4320200, -9594957, 470836, -4495220, 35093104, 26348550, 10092099, 5232344, 16529719, +14982993, -23772108, -34270616, 11697343, 26826366, 38359428, 244276, -8560407, -23914914, -14054744, +16135655, -447213, -20411296, -41206988, -41181220, 8695698, -12362526, 23124104, -47449724, -15676631, +9261560, 6840809, 9066676, -15022185, 6925635, -1272384, -8887361, -1767379, -22248468, 20557860, +25393458, 18847928, -29963302, -16036871, -678605, 10173167, 15130096, 16151225, 12999255, -3395172, +-2087354, -4067871, 21517250, 59540056, 37665788, -31010200, -30431990, -19396610, -39217884, 46275052, +24761560, -14352170, -40678172, -39060580, 44493712, 27307938, 6037651, 34160024, -35403952, -3940633, +2299418, -9161165, 3565360, -13244605, -35804996, 8900246, -27338004, 36685464, 34827352, -13277355, +-6046777, 370978, 4109210, 39037496, 40109624, -63418952, -35214972, -20404852, 8138426, 17770428, +17388176, -24598888, -26175142, -31156230, -3681861, 32219234, 894427, 6375879, -7181186, -34462816, +8118025, -14479945, -17818746, 7814156, 60477436, 20329690, -11082626, -15495705, -14236206, -11976516, +16041166, 18769544, 21984864, -3970161, 14267881, -21384642, 5383205, 7721815, 9944997, -7736310, +4385699, 17765058, -4385699, -5110474, -2741800, 17532056, 11678016, 27328876, 7149510, -9809168, +-7109782, 10080825, 34120292, 27504970, 6009196, -20379082, -24721294, -8115341, -5741298, 5845988, +2683281, -10107669, -12418898, 23341536, -38104948, 33253784, 49027052, 53202832, -59936804, 11034308, +-1861868, -5133023, 25401510, -10813117, -17797270, 17588428, 8965207, 36461588, -3714073, -28852516, +873489, -13163001, 21538188, -33155536, -11742441, -15579994, -22094922, 30280056, -22143778, -3144990, +20852604, 12106976, -7350300, -11582990, -31032750, 4011500, 40881648, 24897388, -1756642, 12156905, +-9220758, 33390686, -22506702, 15422691, -12422119, 20740398, 34473020, -7662759, -22389664, 11050414, +-30534534, 50571092, 5932961, -26847304, -9189083, -41884520, 5342403, 59974924, -10921565, -35302484, +-24649892, 36764384, 10985453, -19320374, -978716, 9465034, 20638392, 50527604, -41229540, 18353468, +41436232, -6295349, -48959944, -47436304, -27755690, 83027624, -60772176, 20567524, -64005212, -30798674, +133728640, 12826920, -58290224, -56055764, -64561948, 81420768, 10511932, -15443092, -64689188, -15585363, +20245402, 65876744, -23607288, 7126962, -28483686, 9749039, 40065604, 24366960, -35791036, 16853452, +6603512, 15461882, 13814762, -36435280, 1279900, -8696235, -13726715, 7145215, -13307956, -26882738, +10330470, -7979513, 34929360, 5116380, -32044214, -36728412, -11617887, 936303, 28182502, 21070572, +5007932, -17192754, 7307350, -799401, -13540421, 881542, 17980880, 15646029, 3974455, -27116276, +6837588, 10430865, 17226576, 15097347, 11129871, -5366562, -17428978, -6731288, -4053912, -5556614, +8462696, -14344117, -3867618, -5180268, -6699612, 21807696, -56304872, 9904731, -50585588, 22379464, +23964306, 47298328, 20949776, 10868952, 12394739, -14703821, -36109400, -25110526, -23703924, 10161893, +5915781, -6132140, 21636972, 33363306, -14892262, -20917028, 23177254, 4140349, -30816928, -7071664, +13991393, -25420838, -4473209, 5642514, 12974559, 6925098, 18340584, 31426276, 5566278, -20007032, +-2294586, 6070400, -15889232, -7092065, 14701136, -11135776, -20124070, 28033252, -6742562, -6921340, +-11132555, -10992969, 18175764, 4645007, 4166118, 24195698, -11540577, -18660560, -1068910, 1816771, +-7907035, 6200859, -1300838, -6634651, -1188632, -23536958, 5267778, 4630512, -3992709, 12709882, +8585103, 4453881, 5689758, -24310588, 28819768, -10770704, -10408853, 8842264, -26331908, 8594766, +-19716584, 2313914, -15595563, 5087926, 6896644, 10682657, 965831, 9477382, 14283451, -5492190, +-3207804, 7931731, -470836, -5003100, 4361540, 1024887, -3275986, -5034239, -4574677, -3016678, +10314901, -9833864, 10005663, 703301, 2720862, 5015985, 2988760, 7298223, -394063, -181999, +-4440460, -966368, -6124624, 12402792, 919660, -5538897, -9051644, -2946348, 4810364, -8841190, +11753178, -5687611, -14908368, 864362, 6334003, -848793, -430034, 1547262, -7047505, -4254702, +-26296474, 42213088, -2301029, 23848342, -21853868, 2581275, -4047470, 7456063, 6730214, 12729209, +-6668474, 9337259, -5986648, 5093295, -1056025, 4005057, 10096931, -1380295, 15720117, -6478422, +11849815, 510564, -619549, -4595078, 7547332, -6219113, 6806987, -4193499, 371515, -3499325, +3675955, -2879239, 8891656, -2930242, -6422050, 14314052, -10095858, 7427072, 5963025, 2100776, +6883759, -8967892, -6255620, 6505265, 6084358, -4013647, -942208, 6944962, -744640, -9967008, +4221953, -5123896, 4954782, 6739878, 3121904, 2229088, 2110977, -10719165, 5069672, 2866354, +-3312494, 3758633, -5102958, 2298881, -2596308, -602906, -1449552, 3579318, 7020661, -10007274, +8710194, -1866163, -3598109, 4952634, -6995965, 3142306, 4734665, -1316944, -2611877, 3266323, +-1466195, 1868848, -1043677, -3641059, -661425, 3662533, -1122060, 1341104, -898185, -2703682, +1552094, 1405528, 2547453, -3866008, 2884608, -380641, -1669669, 3425237, -4087198, 6073621, +3031710, -2446521, 6199249, -609885, -2621004, 126702, -2618856, 3655017, -4262218, 4210679, +1627793, 2208687, 969052, -2618320, 1970316, 851477, 370441, 270583, 51540, -1138703, +1015760, -2731599, 3048890, 1146219, -3105261, 10505490, -35705136, -111235896, -16381005, 53992572, +27906550, 131262256, 24379844, 28213104, 17726940, -35378184, -49851148, -35498980, -63896764, -54886996, +-31175556, -12775917, 36496484, 99694248, 79027400, 68106904, 38662220, -30687004, -49984292, -36739688, +-68867120, -65174520, -20052128, -9148280, -15282031, 25267830, 39439076, 26139170, 48110612, 37243808, +11314018, 34258808, 6896644, -5091684, 3068217, -20649666, -54427972, -46187540, -39347268, -55077048, +-23168128, 16093779, 10959146, 35275640, 39829916, 34910568, 35717484, 36592048, 23077396, 22679038, +2370822, -20318954, -38086696, -25915296, -35862440, -47240884, -23390928, -21665962, -17772574, 6702834, +17804250, 17169132, 33282776, 41767484, 20075750, 29451128, 24999930, -6954089, 2790655, 11319386, +-13993540, -12533788, -22375706, -39969504, -40281960, -31855772, -33148020, -6450504, 13770202, 9309878, +26182120, 39493836, 30984430, 28775208, 29407642, 19753628, 6371047, 1910724, -9266929, -17143898, +-18609556, -27480812, -34964256, -37014028, -32044214, -28596430, -16495359, 3760244, 17976586, 41459320, +54621784, 48119204, 39703216, 33872796, 19422378, 4161823, -17011292, -34704408, -47583404, -49632104, +-54958940, -40343700, -17002164, -4183298, 11357504, 32729798, 41998336, 45558328, 46680924, 39243116, +16462610, -1105954, -12227772, -26508538, -34762928, -32407138, -29035052, -20714090, -8677981, 1166621, +11362336, 15033459, 11312407, 12700218, 9842454, 6940667, 5160940, 5612449, 1630477, 1927904, +-704912, -2715493, -3616363, -2928631, -4643397, -5155572, -5890011, -4970351, -4926865, -3838090, +-2816962, 416612, 1785096, 3362423, 4625143, 6303938, 5869073, 5486821, 4158602, 3415036, +1660005, -222801, -2260764, -3211025, -4683125, -5371394, -5515812, -4553202, -4558571, -2728378, +-954020, 1069447, 2522220, 4196720, 4169876, 4653060, 4553202, 4736275, 4203699, 2286533, +-846645, -2369211, -4050154, -4757213, -4413079, -3476239, -3455301, -2323577, -1741609, -461709, +772557, 2214056, 3180960, 4277251, 4177393, 3694209, 2515240, 1178432, -209917, -959925, +-2129767, -2925410, -3491809, -3375844, -2894808, -1573032, -515396, 761820, 1632088, 2141578, +2193118, 1863479, 1089311, 905701, 479426, 188442, -266288, -522375, -768262, -783832, +-811749, -644245, -504659, -276489, -158377, -15569, 23622, 133144, 138513, 161061, +100395, 93416, 76236, 71404, 74088, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -3562139, -2681133, 1685775, -3515968, -622233, 4472135, 1325534, 1097364, 2467996, -594316, 673773, --1175747, -4686883, -1853278, -233002, -1045825, 1347009, -1463510, -453656, -3983045, -3758, -669478, -2800319, -625455, -3535295, -1275068, -1124208, -4299799, -1963337, 1344862, 1869921, -4780299, 2845416, 6111202, -661962, -1021129, 901943, -2137820, 5334887, 290984, 2522757, -4202626, 745714, -1737314, 1734093, -2285460, -2998961, -783295, -1294396, -1692754, -5543192, --1826435, 30602, 833224, 1659468, 428960, 2825015, -3183645, 2493229, -57982, 624381, -1721745, -2185065, -4944044, -2108292, 2047626, 3071439, 2283312, 202400, 2327336, 1804423, -3179887, 1627256, 1347009, -2121177, 120796, -336618, -474594, -1803886, -2288681, -958851, --566936, -193810, -1777580, 25770, 197032, 686658, 109522, 1254667, -723702, 578210, --1134945, -1621350, 755914, -224949, -95563, 1149978, 738734, 1009854, 13959, 110059, --1004486, 577673, 116501, 349503, -200253, 1555852, -392453, 99321, -725850, -522375, --809601, 671089, -570157, -1389959, -891206, -2522757, 2493766, -3905736, -2381559, 6417755, --983011, 5679558, -2831457, 597000, 2833605, 1289027, 234613, -3730179, -5312875, -5543729, -651224, 193810, -1534914, 809601, -4902705, 9912248, 1163399, -5434744, 1508070, -2822867, --3081102, 2992519, 4229469, -11274, 988916, 2048163, -255014, 72478, 3330747, -1749125, --754841, 247497, 6025839, -67646, -652298, -2208150, -3485366, 1893007, -824634, -3575024, --1591285, -4314295, 632434, -3908420, 135828, -2947421, -944356, -2586107, -5442261, -2199023, --299037, 5231807, 807991, -1448478, 2870112, 4794794, 761283, -6410776, 3020973, 33286, -1252520, 2173254, -1458141, 4146254, -1998770, -3606699, -3768297, -6702297, 675384, -2255395, --2353105, -2993055, -3143916, -135291, -3433826, 1150514, -500901, -1926293, -689879, -2182380, -89121, -49929, -2515240, -1015223, 1078037, -324807, 206158, 621697, 280247, 485331, -364535, -648003, -2250563, -366146, -820339, 690953, -254477, 316217, -400506, 64425, -2147, -451508, -1400696, -1136556, -158914, -476741, -518617, -419296, -1042603, -354872, --4859756, 8383240, -1984812, -7423851, 673236, 2673080, 335544, 2472828, 2030446, -5852967, -2225867, -1279900, -144418, 352724, -992674, 4661650, -1308891, -2842195, -162672, 3750580, -2384781, 1465658, 2233383, 8931921, 2421288, -2907156, 4075387, -3573413, 1315871, -2859375, -8380018, 1413044, -2607045, -1503239, -2614561, -815507, 5587753, -4266513, -3612604, -1003949, -4641249, 2735357, -4127464, 1315871, 1034013, -2340757, 204548, -8900783, 3085397, -1953136, --1643899, -5596343, 8754217, 612033, -4447439, -3428995, -4364224, 467078, -884763, 610959, -45097, -5078799, 6941204, -3754875, -3490198, 2847027, 803159, 2829847, -1861332, -276489, --4162360, 513249, 988916, -5241471, -3944928, 525060, -3679176, 1483911, -3285113, -813896, --882616, 2524904, -4262755, -4358318, -858993, -577673, -1013612, -153008, -1879048, -353261, --1352915, -1023813, -857920, -1260573, -1639067, -11274, -2220498, 747324, -1456531, 139050, -197569, -401043, -805306, 30065, -552440, 1323924, -128849, -840740, -9664, -1600412, --295816, -920197, 133681, 392453, -1156957, -1351841, -337155, 7232188, 261456, 1592896, --5911486, 1866163, 3460133, 2530810, -208306, -2950643, 7779260, 1378148, -1497870, 3743601, -3076270, -3585224, 4786204, -3156801, 7864622, 1138166, 7024956, -732829, 1279363, -2708514, --7851737, 882079, 212064, 297427, -1314797, 1651415, 4223564, -1022739, -4005057, -2662880, --5717675, -1573569, -2787434, -3030636, 586800, 2009508, 3191161, -3690988, 2647311, -2464774, --3027952, -398895, 2709051, 514322, 717796, -5754183, -5505611, -1039919, -1588601, -4204773, -9259949, 4282083, -516470, 1785633, 3761855, -9264781, -4626217, 6233608, -3400004, 5847061, -1394254, -1205812, -6154688, -4585952, 7475391, 3930432, 7073275, -7345468, -435402, -5093295, --331249, 1818382, -2641405, 869731, 622770, -4574140, 4191888, 462783, 703301, -745177, --8070781, 885837, -1879585, -2566243, -2467459, -494995, 1503775, -1315871, 719407, -2871723, --518617, -1318555, 1923072, -358630, -129386, -937377, 158914, -980326, 721018, -1627793, --679679, 525597, -363462, -111669, -2684, -24159, 854699, 457414, -32212, -1149441, --1076426, -1246614, 1168768, 468688, 1657321, 796716, -574989, 673773, -12133283, 627602, --1573569, 3263102, -7349226, 2326799, -2490544, 12228846, -3266860, -6365679, -2340757, -5342940, -1641751, 4526896, -1468342, 8541079, 858993, -2546916, 2045478, 1023276, 2211908, -3054796, --552440, 3165391, 5007395, 1968169, -1021129, 2390686, -4505958, -1421634, 6301791, 4496831, -7402913, 5244155, -142808, -3798362, -7933342, 5440650, -883690, -5795522, 2978560, -1548336, --8883603, 208306, -7408819, -610422, 6664716, -1158567, -4988068, -2313377, 6364605, -5556077, --9069360, 9164386, -1748052, -2258616, 2137820, 1141388, 1073205, 2184528, 2199560, 1197222, --6686191, -2560338, 5140539, -722091, -1992328, 1533303, 8835285, -4512937, -4924180, -2268280, -3611531, 1815161, -7987029, -3571265, -2754148, -3504693, 2611340, -498753, -612570, -2990908, --2358474, -6336688, -3639985, 1496259, 201863, 977642, -260919, 3712999, 3864397, 651224, -1408749, -1969779, 441308, 159988, 1578401, -2420214, -1097901, 272194, 55298, 1091995, --46708, -1386201, 1391569, 491237, -2654290, -545461, 771484, 450435, 456877, -692564, -357556, -1320166, -1270237, -1131187, 680215, -595390, -644782, -221191, -10695005, -296890, -2770254, 10158135, 10498511, -3476239, 5191542, -6869800, 2164127, 4425427, 6717329, -2049236, -10110890, -1985886, 8564702, -4791573, 7163469, -3708168, -12112882, -2804077, 2930778, -4225174, -4571993, -2676838, -2968359, 1232119, -13271986, -4336843, -350577, -2364916, -872415, -6448357, --2282775, -2346663, 2018098, 13380434, 7672422, -7893613, 4195646, 10686416, 2585570, -3844533, -2598455, -2909304, -3286724, 7674033, 5304822, -5455146, -808528, 5451924, 11454678, -3782256, -6192269, 17063368, 7286412, -7961796, 3105261, 1925219, -9629854, 1364726, -7973070, 3460133, --8681203, -2088965, 271120, 4002910, -5695664, -1613297, -2866891, -5159867, 6505802, 5603322, --395674, -3796751, 935229, 949188, 847719, 1535451, 4810900, 908386, -6597607, -164819, -7827041, 202937, 1691680, 1551020, 2313377, -2509872, -1235877, -4006668, -1772748, -3688840, --388695, 2138894, -561030, -2101313, 1073742, -449898, 370441, -1149978, -860067, 1446330, --198105, 3499325, 774705, -772557, 1771674, -62277, -918586, -1345399, -1885491, 770410, --1041530, -494458, 828392, -99858, 1556389, 90194, -2253247, 4655208, -2326799, -10760504, -2470143, -8645769, 1383516, -2870649, 11156178, -5678484, 1563905, 2929168, 1095217, 4045322, --1654099, 12215424, 945430, -7935489, -1488206, -5853504, -950798, -1910187, -5486821, -6879464, --1778653, -4433480, -2106145, 7813083, 2892661, -6619619, 2564096, -7904351, -1512902, 5737003, --10794327, -9522479, 5397164, 5077725, 2618320, -333397, -6564321, 2583423, -3247532, -6193343, --2877628, 322659, 1935957, 10222559, -4057670, -1171452, 519154, 4758824, 2490544, -3560528, --4599910, -8222178, -2529199, -1834488, -4539781, -5280663, 3329137, 6822019, -59593, -4388383, -7545721, 1438814, -3765076, 913217, -1136019, -1001264, -2637110, -1494112, 4887136, -3927748, --5891085, -3397856, 3037616, -4552129, 7973070, 3565897, -1354525, -3304977, -3757023, 2255395, -4939750, 10167798, -2977486, 5193689, 140123, -39192, 523986, 1615445, -1911261, 26307, -1224066, 2123325, -1380295, 1479616, -1191317, 4916664, 1848983, 3691525, 7516, 2501819, --171799, 2217814, -482647, -226023, 2572686, 966368, 278099, 1361505, 267362, 2558190, --1954747, 581431, 1722819, 2348810, 2003602, -813359, -2666638, -67109, 1605244, 332860, -255014, 2105071, 5546414, 10596758, -7931194, -293132, 7211250, -3474629, -5203353, 6629819, --10501732, -657130, 1922535, -1380295, -3927748, -4632122, -2236067, 1799054, -578747, 5004711, -2513093, -1694902, -4010963, -2932389, 8247411, 307627, -10117332, 4694400, -6405944, -6279242, -3823595, 7260642, 7402376, 5614596, -194347, 3789235, 2573759, 3576634, -3326452, -183073, --3000572, -7288560, 3043521, -1893007, -412854, -1619740, 693637, -1217623, 8020315, 14931991, -2448668, -2607582, -57445, -10692858, 10349261, -7296076, -4737349, -7021735, -8596377, 14514305, -782758, -8091719, -2936684, 10010495, 5158793, -7614977, -5690295, 11476689, 918586, 1171452, -14849849, -7113003, 4073240, -5346161, -14755360, 6914898, 7092602, 1170916, -8521215, -1210107, --1855963, 1747515, -3701725, 5384815, 3318936, -11675869, 4945655, 5573794, 7117298, 1218697, --6240588, 10415296, 1764158, -937914, -805843, -3507915, -3682398, -1331977, 655519, 3137474, --11811, 246424, -339302, -2813741, 1176284, 1253594, 553514, -1296006, -775778, 2097555, -751082, 2390686, -1569274, 556735, -3656628, 405874, 3448859, -4632659, 640487, -3631395, -4217658, -1765232, -97711, -2829310, -17180, 2433099, -290984, 3321084, 11274, -952946, -2408940, 5088463, 6485938, 11972221, 10969346, -375273, 9361955, 4240207, 9545565, 9224516, --15173583, 5579163, -4867809, -6529961, -4745939, -1379221, -9652939, -1975685, 2439005, -8246337, --16988206, 3959960, -1136019, -15300821, -11210938, -10002442, -5557688, 608812, -2820720, 3709778, --1962800, 6168647, 11978127, -6758668, 4117800, -2619393, -5391795, -3909494, 792958, -1105954, --426812, 8938364, -300648, 9009768, 11659226, 3527779, 5057324, 7738994, -938987, 1619203, --11380590, 10766946, -9269613, -3219078, -2908767, 1015223, -2515240, -8840653, -7784628, -17142826, -15659988, -17512730, -16976932, 2950643, 16419660, 5872294, -2048163, -4043712, 7587060, -8184060, -9473624, -2676838, 1262184, 1040456, -6178848, 6626061, -7311645, -5955509, -643171, 2433099, --6982006, -1040456, 3847754, -496606, -1869921, 5109938, -3274913, -6264210, -1398549, 3257196, --4137127, -2389613, -2814814, -578747, 1963874, -1297617, 628139, -989990, -2245731, 716186, --1425392, 1525787, -1493038, 2182380, -588411, 4021163, -518080, 1591285, 2210835, -1315871, --2631204, -224412, -609349, -99858, -781147, 1898912, 141197, 2438468, -2087891, 897111, --4531191, 259846, 241592, -1625108, 1303523, 7084012, 9243306, 9242233, 10062035, 23796266, -10657961, 13580687, -6788196, 22025130, -12656195, 561030, 4813048, -144955, -8355859, 2712809, --2348273, -18858664, 7076496, -4780836, 1966021, -1803349, -6289443, -27380, 5540508, -7636989, --4000762, -1221918, 4368519, -11514270, 7215545, 2710124, -10579041, -856309, 4231617, -9565966, -3512747, -11464878, 5217312, -1011465, -3759707, -474057, -7530689, 9576166, 11288785, -10849624, --6247567, 4882304, -3918621, 2994666, 2674154, 702764, 299037, 13073880, -3369939, -8777839, -8043937, -355945, -6959995, -5810017, -10951630, 2078227, 2898566, 5421860, 5154498, -5048197, --8527121, 4713727, 2292439, 16354162, 1651415, -2046015, 338229, 1078574, -4908074, -2176475, --6134287, 6692096, 3797288, 4354023, -1364189, -10478110, -9621800, -3139084, -930934, -3770445, --6695854, 1850594, -2980707, 4310537, 673773, -709207, 2598992, 2777233, 4345970, 4148402, -3258270, -33823, -1090922, 1176821, 2887292, 2297808, -1426466, -1264868, -936840, 756451, --107911, -827318, -48318, -5155035, 530965, 3361886, 2476586, -4015795, -2992519, 5752572, -2974802, 5705327, 2148021, -4171487, 3854733, -1019518, -3264175, 614717, -4612795, -2472828, --1260036, 1725503, -1017907, -12868796, -14463839, 24157580, 16847010, 21597244, 1386201, -13846438, -4889821, 11275900, 8028368, -3525631, -8759586, -2570538, -3216394, -4244502, -7541426, -3018288, --6333466, 16109349, 2579128, 2668785, 127238, 948651, 1714766, -5941551, 10660646, 6027450, --631360, 3885872, -1513976, 10979547, 2025614, -959925, -17941152, -1316408, 1131187, 1721745, --3357591, 2257005, -8497056, 14579266, 11802570, 11400991, 9942849, -7802345, -10818486, 8317741, -2562485, 4074313, -708670, -12583717, -9109089, 743029, -7100655, 99321, -5963025, -2580202, -7561827, 2421825, -5391258, 1948305, -13923747, 443992, -23608898, -11981885, -22305376, 19282792, -17367774, 18551574, 22465364, 10896332, -3710852, -9942849, -3016678, -531502, 3230889, 17813914, --5870147, -13498008, 10319733, -8582418, 4498978, -1948305, -1938104, 4195646, -4000225, -7289097, --2061047, -8979703, -1902134, -8071854, -1852742, 1159104, -705985, -951335, -2190433, -2799782, --5581847, -59056, 2944200, 484258, -2805688, 1010928, 4895726, -631897, 3277597, 1817845, -1945083, 1399623, -6451041, 5688148, -2485712, -2024003, 3813394, 1338419, 4214974, 457951, --5363878, -970663, 134755, 966368, -3274376, 184684, -213675, -8565239, -11525545, 10165114, -13189308, -6476811, 12245489, 1728188, -5199058, 4925254, -17747342, -5505611, 5006858, -5653788, --10883447, -20512764, 10079215, -8814347, 2373506, 13289166, 3190087, 15495705, 11854110, 6739341, -2544768, -9149354, -2684355, -4789426, 839129, 8629663, 4498978, 1782411, 7368017, 21066814, --1099512, -17916456, -7866770, 2895882, 4302484, -1025423, 445066, 1697049, -7642358, 471373, --16863652, 3793530, -17641578, -6432788, -13661217, 6726456, -6815040, -11209328, 17105780, 4797479, -1394791, -7698729, -10261751, 2562485, 4067334, 1506997, 5573794, -8746701, 19230716, -23350664, -6074158, -9733470, -14173392, -7941932, 12239046, 3687230, -13287018, 9385577, -10581189, 25934624, --2418067, -2848637, -12617003, 1508070, -16831440, -9031779, 22453552, -9041980, -10197863, -6662031, -6713571, 840203, 9517111, 4740570, 4975183, 6933151, 3769908, -641024, 715649, 3304441, -1416802, -1839320, 5573794, -1756105, -1943473, -4207458, -3774203, -1701344, 2056753, -3314641, -243203, 1610613, -1365800, 1403381, 260382, 5493263, 2882460, -15569, -1123134, 537, --401043, 3278134, -2923799, 2972117, -825707, 1309428, 4609037, -1471026, 241592, -648540, --2319282, 5632313, -794032, 4390531, 24475408, 25183540, 23757074, 5132486, -6271189, -3880503, --15176804, 12467216, 442382, 7348689, -4487167, 2416993, -5500780, -4210679, -8744017, 4846871, --9108015, 15163919, -39289288, -11380590, 358093, -11829414, 8536248, -12161737, 2593624, -4649302, -12455405, 2285460, 11992086, 946503, -2739652, -108985, 4435628, -13708999, -9836012, -10645076, --1446867, 13506062, -26407070, 9270150, 23097260, 2913599, -16871706, -584652, -14199699, -13596256, -9540733, -1709934, -11589432, 6562173, 1035624, -4264366, -6520834, 3849901, 9637907, 5896453, --13475997, -9804873, 7807714, 11753715, -9470403, -12517682, 6270116, 13158169, -15845745, -471910, --14141180, -19412178, 23242216, -3782256, 3638374, -4273493, 14425721, -3313567, 3572876, -7648800, -12553116, 7008313, 11552388, 13367549, -13197361, -14552960, -5908265, -2731062, -8732205, -21934934, -2473901, 1268089, 35433, -1551557, -3526168, -2892124, 6367289, -488016, -2684892, 5905043, --6395743, -3359738, 2432025, 11529303, -3440806, -3476776, 599685, -1387274, 3998078, -1327145, --603980, -1960116, -3189550, -7995619, -11525008, 2100239, -789200, -8750459, -4376035, 2368675, --3043521, -9924596, -5530308, -622770, -1716913, 841277, 2851858, 1233193, -7516, 8216810, -2835215, 12907987, -4124779, 23085, -18434000, -8367670, -3927211, -15562814, -22544284, -3870303, --7266548, 22038550, 6895570, 32567126, 6206765, -8811125, 4645007, 6525129, -25877714, 1932735, -23463944, 15083388, -14912663, 2532957, 11926587, -20669530, -2988760, -10126459, 9366250, -7827041, -6309307, 1876901, -3769908, 1592359, 348966, -6338298, 7595113, -13889387, -5198521, -5705864, --17601312, -3327526, -1969779, 740882, 1697586, -4453344, -5268851, 33293512, 10281078, -12296491, --22840100, -7969849, 2760053, 24194624, -5352603, -2630131, -12868259, -3078955, -8937290, 19922742, --15428059, 17824114, 22405770, -21784610, 15083388, 6010270, -9050033, -7946227, 5776194, 10760504, --48153564, -5975374, 296353, -6213744, 13172665, -6117107, -35900020, -13675176, -10196789, -15957414, --15610059, 3253438, 3500398, -8859444, -7880191, -14687714, 1927904, -5181341, 1659468, -6145025, --7305203, -8273718, 2372970, -1342714, 5650030, -7106024, 4041564, -511638, -7328825, -15626702, --3654480, -529355, 5555004, -1847373, -20975546, 4785131, 10708427, 4549981, -112743, -7069516, -7965017, -652835, -2089502, -12475806, -1828582, -4032974, 11050414, -1211181, 2094333, 483184, -2682207, 7199976, -4555350, 830002, 744103, -1932198, 969052, 3350075, -14879914, -12688407, --4611721, -10173704, -7010997, -2503429, -6332393, -8022462, -7760469, -1890859, -1880122, -3196530, --5609228, -2151242, -3857954, -677531, -1861332, -6859600, 5530844, 32288490, -934692, -37592240, --21012590, -23256712, -4326643, -12854837, -504659, -19080930, 31369904, 18647138, -3313567, 24663850, -771484, 26590142, 6418292, -15315317, -20860120, -13160317, -16820166, -7519951, 4173098, 11477226, --3686693, 3767760, -13884556, 2397666, -20052666, -1805497, -1101122, 6916508, -7501161, 32217086, -4208531, -833224, 21422224, -8296266, -15107547, -8891656, 13150653, -1002875, -8556112, 3585761, --68183, 27395986, 6815040, 75162, -10582799, -16550656, -41731512, 2694555, -33142652, 16802448, -56989920, -40707164, -8654896, 9206799, -6962142, -7184944, -11353746, 9505299, -11656004, -39384852, --10413685, -39274256, -8162586, -1176284, -24557550, -3514894, -35362076, 15332496, -3499325, -22491670, -55253680, 4247723, 22567368, 18831284, 30515206, -18747532, -1188632, -11325829, -4010963, -7684770, -14535243, 9130564, 13068512, -26889716, -5322538, -14662481, -18785650, -15869367, -9611063, -2192581, -10574746, 8597451, 6098854, 7580618, -2049236, 2384244, 15106474, -2878702, 14951855, 4271882, --12790949, -3646964, 4719632, -5701569, -2080375, 17337710, 397821, -5439039, 19683298, -9194988, --1240709, -16243029, -3788698, -11384885, 8592619, -8747238, -3687766, -3433826, 3381750, -3988414, -7787313, 3221, 8051453, 2014877, -2801929, -5648956, -7410966, -5829881, -11323144, -65821448, --6505265, -16522202, -18129056, 24529632, 19534586, -22802518, -17948132, 45893336, -4756140, 15167140, -2743410, -1966021, -4849555, -4533338, -14376329, 249108, 5646809, 8559333, 5893232, 16674674, --12382391, 104153, -12058121, -7002944, 5430986, 23486492, 15220827, 20787642, 18664318, -3687230, -7001334, 11378442, 414464, -18286360, -3018288, 26321170, -4250944, -36592584, -15920907, 4468914, --30976914, -13154411, -31755378, -21677774, -19704236, 30100742, 20689932, -6052683, 20707112, 8216273, -29053844, 19662898, 9597641, -50067508, -10893111, 2656974, -43976708, -32054952, -12090333, -8244190, --51574504, 11574937, 29087130, 38887172, 46501076, -15145665, -29714732, 42413, -29984240, -22195318, --41779296, -46483356, -32743756, -27518930, 31389232, 1717450, 6578816, -27999428, -29393682, -26304528, --2335925, 41049148, 51970180, 1706713, -18642842, -14245333, -20527796, -53919020, -23935852, -23854786, --6390375, -1794760, -12030740, 14464913, 198105, -3981972, -19080930, -24967182, -12947716, -13989245, --22028350, -4734665, -5459441, -1984812, -5778879, -10006737, 13653164, 8483097, -1227824, -12110734, -9053254, 14852534, 1271847, -12436615, -6458020, 10438918, 2958159, -2652679, -11934104, 10426570, --2299418, -3797825, 1322850, 8126615, 2185065, -2159832, 1376537, 6339372, 1163399, -21005612, --50077172, 18849000, 1924145, -34216932, 31049392, 15170898, 9258876, -7835094, -30604326, -8049843, -466004, 28925530, 38632692, 1844152, 10146323, 2090575, 814433, -2274722, 4879620, -16775605, -54586888, 12775917, -18345952, -18389976, -8384313, 1997160, 26486526, -13436268, -4465156, -419296, -13217225, -13482439, 6783901, 497142, -3415573, -45828912, -14607721, 14148159, 23157390, 7948374, --5442261, -13508209, -30353608, -3680787, 4529580, -7530689, 153008, -8225399, -19693498, 19067508, --4857608, 6565932, -21028160, -4727686, 52505440, 3580929, -6222334, 5784784, 6544457, 4595615, -26268556, -10147934, -12390981, 19466940, -2595771, 11386495, 7009387, 16915728, -7022809, -20040318, -9611600, -9458592, 1237488, 74327632, 71615896, 31935766, -6723772, -4076998, 8792335, 33474438, -15356119, -10458782, -1416802, -4852776, -19387482, -20683488, 10852309, 5201206, 2612414, 16524350, --2523830, -9834401, 9791989, 3857954, 14583561, -21976810, -17828946, -22325240, 3022583, -10253698, -998043, -4800163, 7706782, 8447664, 18188112, 10269804, -19751480, -14819785, 6813966, -12435004, --7055021, 1083942, 6166500, -8506720, -19420232, -2577517, 483184, -2093260, 8356396, 1839857, --15698642, 4351876, 24938190, 28423020, 21343840, 24191940, 17468168, 21774410, -6153078, -1810866, -8445516, -2864206, 8318815, 7372848, 11233487, 20685636, 37041408, 5350456, -38277824, -9739912, -8956081, 6206765, -8902393, 29645474, 14874009, 11817603, -9309878, 34627636, -1713155, 1326071, --8854612, 18706194, 12394739, -25654914, -37876780, -10170483, 6715182, 2735357, -7002408, -34561064, --3213709, 13083007, 3129958, -11256036, -4571993, -9988483, -13209709, 8826695, 10278930, -21930104, --24940338, -8179765, -31009128, 9092446, 27727236, -23475218, 26664230, -11804718, -14276471, -26412438, --37343132, -41752452, -39775156, -20025822, 261993, 15796890, 7296076, 15737297, -20854750, -46612744, --18339510, -44772348, -79296368, -29702920, 64397128, 110442936, 64655900, -26297012, -21351356, -96963720, --87351584, 61601644, 10943040, 80726056, 83250960, 86900608, 29351270, -33718176, -42375220, -46963856, --54166516, -7223598, 54649700, 92560304, 29736742, 10272488, -3818226, -45057964, -66756140, -44533444, -9162776, 64173792, 30021284, 41842644, 33851860, 13041131, -23641110, -25941602, 1598265, -14016626, -5617281, 31841276, 33404108, 25069188, 5313949, 13177497, 1007170, -20070920, 4960151, 9397388, --2773475, 4464082, -5438503, 45871860, 26668526, 29421600, 17790828, -14629195, -39026756, -55195160, -9059160, 20496658, 38507604, 39103528, 49707804, 24854438, -35660576, -44328356, -54477904, -8723079, -616328, 30920006, 17915920, 10460930, 16879222, -26473104, -80688480, -53451404, -49435072, -10372883, -7256884, 19934554, -4209605, -9821516, -17898740, -21132312, -3553012, 7644505, -24987582, 34979824, -16791712, 31067646, -68302328, 15490873, 9204115, -20984674, 15274514, -15690052, -7792682, -4664872, --9807558, 29436632, 54138064, -15710453, 10833518, -7511898, 12919798, 27597312, -8500277, -4983773, --15080167, 7967165, -9602473, -29840896, 21736292, 36910412, -4945655, -19242528, -17781164, -38767984, --10790568, 29493004, 19891604, 10315975, -42862700, -24755654, -18751828, 37896644, 32730336, 28858422, --83591336, -55498492, -6870337, 41342280, 88025352, 423591, -106110392, -38858716, 3423089, 35824860, --3040300, 19704236, 14709726, -46208480, -20402168, -12715251, -27893128, 2018098, -52262236, 8253854, -20512764, -62909460, -40467180, -19550154, -8197482, 69835096, -547071, -106938240, 10154913, 15187004, -16211354, 42273752, 19535658, -45624364, 2170032, -1650341, 91450592, 64717104, -53832048, 49052284, --28759638, 19583978, 50443316, 18299782, -27886686, 25522306, -11233487, 6641630, 17407502, -1756642, --18924162, 34761856, -22406844, 25512642, -12021077, 13785771, -4292283, 28000502, -9881109, 22032646, --38301980, -6462852, -566936, -4887673, 12163884, 23871966, -24387898, 49081276, -19276350, -16724066, --33494840, 24570972, 51354388, 10296110, -67914704, 5607617, -15362561, 33090576, 16105054, 14991046, --27365920, -1750736, -17463338, 16549046, -7181722, -10755135, -4101157, 22396644, -5481989, -13582297, --16898012, 12759274, 1847910, 12165495, -7617662, 439160, -13035226, -827318, -2851322, 6250788, -1789391, 13773960, -3000035, -4007741, -14442901, 9823664, 3364033, 8747238, -48855, -8228621, --10762114, 3240553, 2488934, 7453916, 23659364, -56435332, 8038568, -41430864, 7578470, 35223564, -31142808, 10218264, -20151986, 4067871, -11965779, -2939368, -14853608, -10964515, 7663296, 2086280, --21633750, -2465311, 11287174, -2377801, 1291711, 4109747, -13793824, -13653164, -338766, 9082782, -1221381, -21990770, 1855426, 11323144, 3565360, 2654827, 23054310, -2508798, -6124624, 8288213, -8837432, -15551003, -17260936, 12841952, 2495913, -13236552, 8924942, 3889093, 4332012, -9250823, -3754875, 10472741, 1275068, -13029857, 17733920, -2120640, -19850266, 631360, 15558519, 4879083, --12986370, 11861626, 3933653, -18090940, 7465727, 966368, 18518288, -16738024, 1523640, 12783970, --29355028, 972810, 12693239, -452582, 8801462, -4847408, -18788334, 2532420, -19881940, 18711562, -9655086, 5302137, -7380365, -7758322, 15440407, -13259101, 13779329, 15160698, -21613886, -6980396, -937914, 16784196, 274341, -9666898, 6213744, -11716134, -693637, 1744294, 9897752, 718333, -1636919, -6032819, 10300405, -3401077, -11997454, 10964515, -4839892, 4754529, -2711735, 7919920, -9954660, -11376295, 2006287, -6142877, 2698850, -6242198, 22124988, -6203544, -12402792, 10028749, --5583995, -1828046, -6308770, 6576132, 6026376, -8892730, 5009006, 8765491, -4506495, 636729, --12344810, -28123982, 45632416, 6292664, 20543902, -17999134, 7747048, -4031901, 5373004, 4839892, --7807177, 2913062, 8238284, -4992363, 18112950, 664646, 452582, 6055367, 5832029, -833224, --4789963, 7644505, -1342714, -5535139, -1236414, 7683697, -8582955, 1662689, 3701725, -10902774, -13322989, -2814814, -6595459, 20503638, -8614094, -12288975, 9368934, 5113696, -5811091, 8826158, -7055021, -2611340, -3013457, -1724966, 2583960, 5033165, 2909304, -145492, -3668439, 10521596, --11425687, 10085657, 1491427, -1345935, 2743410, 3128884, 3207267, 362925, -10178536, 2733210, -8588861, -6277095, -127775, -84826, 6519761, -756451, -2668785, 9908490, -5176510, 5281736, --10454487, -3918084, 9938554, -9628780, 9552007, -2583960, 6257231, 7672422, -8893267, -3067144, -10793790, -9170292, -574452, 1066763, 3198140, 738198, -1336272, 329102, 716723, 4954782, --4387846, 1036161, 3106872, -392990, -2317672, 489089, 1784022, -504122, 549219, -1967632, -2166811, 3065533, -5578626, -941135, 9383430, -4659503, 2608656, -767189, 5305359, 1464047, --3088618, 539555, -689879, -3223910, -2291902, 11116449, -2003602, -2632815, 1501091, 1180042, --972273, 2310156, 4507032, 79994, 1097364, 361314, -1083942, 623844, 1251446, -2197413, -1383516, -204548, 10712722, -37781216, -120830312, -6137509, 65150360, 29242822, 138766640, 11844983, -29326574, 1230508, -40429600, -50955492, -34489660, -62100396, -43421044, -27322434, 1022202, 47426104, -93452584, 68751688, 59871308, 19489488, -32482300, -47766480, -42903504, -50617800, -56092808, -22756348, --10721312, -4909685, 27436788, 36352068, 27464168, 50821812, 32866164, 12167105, 34153044, 788127, --14770929, -9808632, -30570504, -62799940, -38118908, -36770824, -37430640, 1947768, 17513266, 12055973, -46198280, 37827388, 26135412, 37204616, 39633960, 11201275, 11922829, -4231080, -34029024, -47392816, --36145908, -47502340, -33709052, -11810086, -8295730, 2909840, 25917444, 20222316, 18330384, 36489504, -30241402, 22165252, 37768868, 10313290, -7672422, -1582696, -15066208, -32786706, -18986440, -41472740, --52320756, -30908196, -26004954, -11354283, 30480846, 41019084, 38348152, 44130252, 36408436, 20629264, -19986630, 9625559, -4202089, -11263015, -21001854, -31178242, -31107912, -35283156, -36934572, -31688268, --10715943, -3779034, 12526809, 31780074, 35502200, 35008816, 41030360, 32531692, 24472186, 20244328, -6736656, -15875273, -28122908, -45986216, -58580668, -54976656, -43457016, -21962316, 5632850, 29387776, -40496708, 46462420, 48568564, 41781440, 29655138, 15029701, -9559523, -23853174, -31381716, -36566276, --31868120, -24114630, -16514686, -6933151, 7757248, 10098005, 13931800, 15859167, 14251238, 11206643, -9087614, 5993090, 5408975, 2290828, -1725503, -3134253, -3041374, -5001490, -5328444, -7093676, --8138426, -9179419, -7223598, -5677947, -2936684, -325881, 4667556, 7592429, 9059160, 8913131, -10022306, 8800925, 6479495, 2731599, -1291175, -5437966, -6752763, -7977365, -7904351, -8789651, --7717520, -5583995, -1465121, 1134408, 3344169, 5185100, 6529424, 6298033, 6855842, 6331319, -5337571, 3164854, 974958, -2584497, -4889284, -6817187, -6794102, -6506339, -5331665, -3772592, --938450, 598611, 1988570, 3254512, 4522064, 4980015, 4960151, 3805878, 2895882, 1393180, -163209, -1280437, -2283849, -3639985, -3945464, -4173635, -3545496, -2755759, -1115081, 220654, -1824824, 2705830, 2957622, 2472828, 2287070, 1906429, 1676111, 916976, 188979, -734439, --1352915, -2070711, -2260764, -2221572, -1614908, -959388, -178241, 202400, 667867, 842887, -1013075, 921807, 784905, 541703, 404264, 157303, 9127, -141197, -185757, -218506, --226023, -214212, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +2681133, 1685775, -3515968, -622233, 4472135, 1325534, 1097364, 2467996, -594316, 673773, +-1175747, -4686883, -1853278, -233002, -1045825, 1347009, -1463510, -453656, -3983045, -3758, +669478, -2800319, -625455, -3535295, -1275068, -1124208, -4299799, -1963337, 1344862, 1869921, +4780299, 2845416, 6111202, -661962, -1021129, 901943, -2137820, 5334887, 290984, 2522757, +4202626, 745714, -1737314, 1734093, -2285460, -2998961, -783295, -1294396, -1692754, -5543192, +-1826435, 30602, 833224, 1659468, 428960, 2825015, -3183645, 2493229, -57982, 624381, +1721745, -2185065, -4944044, -2108292, 2047626, 3071439, 2283312, 202400, 2327336, 1804423, +3179887, 1627256, 1347009, -2121177, 120796, -336618, -474594, -1803886, -2288681, -958851, +-566936, -193810, -1777580, 25770, 197032, 686658, 109522, 1254667, -723702, 578210, +-1134945, -1621350, 755914, -224949, -95563, 1149978, 738734, 1009854, 13959, 110059, +-1004486, 577673, 116501, 349503, -200253, 1555852, -392453, 99321, -725850, -522375, +-809601, 671089, -570157, -1389959, -891206, -2522757, 2493766, -3905736, -2381559, 6417755, +-983011, 5679558, -2831457, 597000, 2833605, 1289027, 234613, -3730179, -5312875, -5543729, +651224, 193810, -1534914, 809601, -4902705, 9912248, 1163399, -5434744, 1508070, -2822867, +-3081102, 2992519, 4229469, -11274, 988916, 2048163, -255014, 72478, 3330747, -1749125, +-754841, 247497, 6025839, -67646, -652298, -2208150, -3485366, 1893007, -824634, -3575024, +-1591285, -4314295, 632434, -3908420, 135828, -2947421, -944356, -2586107, -5442261, -2199023, +-299037, 5231807, 807991, -1448478, 2870112, 4794794, 761283, -6410776, 3020973, 33286, +1252520, 2173254, -1458141, 4146254, -1998770, -3606699, -3768297, -6702297, 675384, -2255395, +-2353105, -2993055, -3143916, -135291, -3433826, 1150514, -500901, -1926293, -689879, -2182380, +89121, -49929, -2515240, -1015223, 1078037, -324807, 206158, 621697, 280247, 485331, +364535, -648003, -2250563, -366146, -820339, 690953, -254477, 316217, -400506, 64425, +2147, -451508, -1400696, -1136556, -158914, -476741, -518617, -419296, -1042603, -354872, +-4859756, 8383240, -1984812, -7423851, 673236, 2673080, 335544, 2472828, 2030446, -5852967, +2225867, -1279900, -144418, 352724, -992674, 4661650, -1308891, -2842195, -162672, 3750580, +2384781, 1465658, 2233383, 8931921, 2421288, -2907156, 4075387, -3573413, 1315871, -2859375, +8380018, 1413044, -2607045, -1503239, -2614561, -815507, 5587753, -4266513, -3612604, -1003949, +4641249, 2735357, -4127464, 1315871, 1034013, -2340757, 204548, -8900783, 3085397, -1953136, +-1643899, -5596343, 8754217, 612033, -4447439, -3428995, -4364224, 467078, -884763, 610959, +45097, -5078799, 6941204, -3754875, -3490198, 2847027, 803159, 2829847, -1861332, -276489, +-4162360, 513249, 988916, -5241471, -3944928, 525060, -3679176, 1483911, -3285113, -813896, +-882616, 2524904, -4262755, -4358318, -858993, -577673, -1013612, -153008, -1879048, -353261, +-1352915, -1023813, -857920, -1260573, -1639067, -11274, -2220498, 747324, -1456531, 139050, +197569, -401043, -805306, 30065, -552440, 1323924, -128849, -840740, -9664, -1600412, +-295816, -920197, 133681, 392453, -1156957, -1351841, -337155, 7232188, 261456, 1592896, +-5911486, 1866163, 3460133, 2530810, -208306, -2950643, 7779260, 1378148, -1497870, 3743601, +3076270, -3585224, 4786204, -3156801, 7864622, 1138166, 7024956, -732829, 1279363, -2708514, +-7851737, 882079, 212064, 297427, -1314797, 1651415, 4223564, -1022739, -4005057, -2662880, +-5717675, -1573569, -2787434, -3030636, 586800, 2009508, 3191161, -3690988, 2647311, -2464774, +-3027952, -398895, 2709051, 514322, 717796, -5754183, -5505611, -1039919, -1588601, -4204773, +9259949, 4282083, -516470, 1785633, 3761855, -9264781, -4626217, 6233608, -3400004, 5847061, +1394254, -1205812, -6154688, -4585952, 7475391, 3930432, 7073275, -7345468, -435402, -5093295, +-331249, 1818382, -2641405, 869731, 622770, -4574140, 4191888, 462783, 703301, -745177, +-8070781, 885837, -1879585, -2566243, -2467459, -494995, 1503775, -1315871, 719407, -2871723, +-518617, -1318555, 1923072, -358630, -129386, -937377, 158914, -980326, 721018, -1627793, +-679679, 525597, -363462, -111669, -2684, -24159, 854699, 457414, -32212, -1149441, +-1076426, -1246614, 1168768, 468688, 1657321, 796716, -574989, 673773, -12133283, 627602, +-1573569, 3263102, -7349226, 2326799, -2490544, 12228846, -3266860, -6365679, -2340757, -5342940, +1641751, 4526896, -1468342, 8541079, 858993, -2546916, 2045478, 1023276, 2211908, -3054796, +-552440, 3165391, 5007395, 1968169, -1021129, 2390686, -4505958, -1421634, 6301791, 4496831, +7402913, 5244155, -142808, -3798362, -7933342, 5440650, -883690, -5795522, 2978560, -1548336, +-8883603, 208306, -7408819, -610422, 6664716, -1158567, -4988068, -2313377, 6364605, -5556077, +-9069360, 9164386, -1748052, -2258616, 2137820, 1141388, 1073205, 2184528, 2199560, 1197222, +-6686191, -2560338, 5140539, -722091, -1992328, 1533303, 8835285, -4512937, -4924180, -2268280, +3611531, 1815161, -7987029, -3571265, -2754148, -3504693, 2611340, -498753, -612570, -2990908, +-2358474, -6336688, -3639985, 1496259, 201863, 977642, -260919, 3712999, 3864397, 651224, +1408749, -1969779, 441308, 159988, 1578401, -2420214, -1097901, 272194, 55298, 1091995, +-46708, -1386201, 1391569, 491237, -2654290, -545461, 771484, 450435, 456877, -692564, +357556, -1320166, -1270237, -1131187, 680215, -595390, -644782, -221191, -10695005, -296890, +2770254, 10158135, 10498511, -3476239, 5191542, -6869800, 2164127, 4425427, 6717329, -2049236, +10110890, -1985886, 8564702, -4791573, 7163469, -3708168, -12112882, -2804077, 2930778, -4225174, +4571993, -2676838, -2968359, 1232119, -13271986, -4336843, -350577, -2364916, -872415, -6448357, +-2282775, -2346663, 2018098, 13380434, 7672422, -7893613, 4195646, 10686416, 2585570, -3844533, +2598455, -2909304, -3286724, 7674033, 5304822, -5455146, -808528, 5451924, 11454678, -3782256, +6192269, 17063368, 7286412, -7961796, 3105261, 1925219, -9629854, 1364726, -7973070, 3460133, +-8681203, -2088965, 271120, 4002910, -5695664, -1613297, -2866891, -5159867, 6505802, 5603322, +-395674, -3796751, 935229, 949188, 847719, 1535451, 4810900, 908386, -6597607, -164819, +7827041, 202937, 1691680, 1551020, 2313377, -2509872, -1235877, -4006668, -1772748, -3688840, +-388695, 2138894, -561030, -2101313, 1073742, -449898, 370441, -1149978, -860067, 1446330, +-198105, 3499325, 774705, -772557, 1771674, -62277, -918586, -1345399, -1885491, 770410, +-1041530, -494458, 828392, -99858, 1556389, 90194, -2253247, 4655208, -2326799, -10760504, +2470143, -8645769, 1383516, -2870649, 11156178, -5678484, 1563905, 2929168, 1095217, 4045322, +-1654099, 12215424, 945430, -7935489, -1488206, -5853504, -950798, -1910187, -5486821, -6879464, +-1778653, -4433480, -2106145, 7813083, 2892661, -6619619, 2564096, -7904351, -1512902, 5737003, +-10794327, -9522479, 5397164, 5077725, 2618320, -333397, -6564321, 2583423, -3247532, -6193343, +-2877628, 322659, 1935957, 10222559, -4057670, -1171452, 519154, 4758824, 2490544, -3560528, +-4599910, -8222178, -2529199, -1834488, -4539781, -5280663, 3329137, 6822019, -59593, -4388383, +7545721, 1438814, -3765076, 913217, -1136019, -1001264, -2637110, -1494112, 4887136, -3927748, +-5891085, -3397856, 3037616, -4552129, 7973070, 3565897, -1354525, -3304977, -3757023, 2255395, +4939750, 10167798, -2977486, 5193689, 140123, -39192, 523986, 1615445, -1911261, 26307, +1224066, 2123325, -1380295, 1479616, -1191317, 4916664, 1848983, 3691525, 7516, 2501819, +-171799, 2217814, -482647, -226023, 2572686, 966368, 278099, 1361505, 267362, 2558190, +-1954747, 581431, 1722819, 2348810, 2003602, -813359, -2666638, -67109, 1605244, 332860, +255014, 2105071, 5546414, 10596758, -7931194, -293132, 7211250, -3474629, -5203353, 6629819, +-10501732, -657130, 1922535, -1380295, -3927748, -4632122, -2236067, 1799054, -578747, 5004711, +2513093, -1694902, -4010963, -2932389, 8247411, 307627, -10117332, 4694400, -6405944, -6279242, +3823595, 7260642, 7402376, 5614596, -194347, 3789235, 2573759, 3576634, -3326452, -183073, +-3000572, -7288560, 3043521, -1893007, -412854, -1619740, 693637, -1217623, 8020315, 14931991, +2448668, -2607582, -57445, -10692858, 10349261, -7296076, -4737349, -7021735, -8596377, 14514305, +782758, -8091719, -2936684, 10010495, 5158793, -7614977, -5690295, 11476689, 918586, 1171452, +14849849, -7113003, 4073240, -5346161, -14755360, 6914898, 7092602, 1170916, -8521215, -1210107, +-1855963, 1747515, -3701725, 5384815, 3318936, -11675869, 4945655, 5573794, 7117298, 1218697, +-6240588, 10415296, 1764158, -937914, -805843, -3507915, -3682398, -1331977, 655519, 3137474, +-11811, 246424, -339302, -2813741, 1176284, 1253594, 553514, -1296006, -775778, 2097555, +751082, 2390686, -1569274, 556735, -3656628, 405874, 3448859, -4632659, 640487, -3631395, +4217658, -1765232, -97711, -2829310, -17180, 2433099, -290984, 3321084, 11274, -952946, +2408940, 5088463, 6485938, 11972221, 10969346, -375273, 9361955, 4240207, 9545565, 9224516, +-15173583, 5579163, -4867809, -6529961, -4745939, -1379221, -9652939, -1975685, 2439005, -8246337, +-16988206, 3959960, -1136019, -15300821, -11210938, -10002442, -5557688, 608812, -2820720, 3709778, +-1962800, 6168647, 11978127, -6758668, 4117800, -2619393, -5391795, -3909494, 792958, -1105954, +-426812, 8938364, -300648, 9009768, 11659226, 3527779, 5057324, 7738994, -938987, 1619203, +-11380590, 10766946, -9269613, -3219078, -2908767, 1015223, -2515240, -8840653, -7784628, -17142826, +15659988, -17512730, -16976932, 2950643, 16419660, 5872294, -2048163, -4043712, 7587060, -8184060, +9473624, -2676838, 1262184, 1040456, -6178848, 6626061, -7311645, -5955509, -643171, 2433099, +-6982006, -1040456, 3847754, -496606, -1869921, 5109938, -3274913, -6264210, -1398549, 3257196, +-4137127, -2389613, -2814814, -578747, 1963874, -1297617, 628139, -989990, -2245731, 716186, +-1425392, 1525787, -1493038, 2182380, -588411, 4021163, -518080, 1591285, 2210835, -1315871, +-2631204, -224412, -609349, -99858, -781147, 1898912, 141197, 2438468, -2087891, 897111, +-4531191, 259846, 241592, -1625108, 1303523, 7084012, 9243306, 9242233, 10062035, 23796266, +10657961, 13580687, -6788196, 22025130, -12656195, 561030, 4813048, -144955, -8355859, 2712809, +-2348273, -18858664, 7076496, -4780836, 1966021, -1803349, -6289443, -27380, 5540508, -7636989, +-4000762, -1221918, 4368519, -11514270, 7215545, 2710124, -10579041, -856309, 4231617, -9565966, +3512747, -11464878, 5217312, -1011465, -3759707, -474057, -7530689, 9576166, 11288785, -10849624, +-6247567, 4882304, -3918621, 2994666, 2674154, 702764, 299037, 13073880, -3369939, -8777839, +8043937, -355945, -6959995, -5810017, -10951630, 2078227, 2898566, 5421860, 5154498, -5048197, +-8527121, 4713727, 2292439, 16354162, 1651415, -2046015, 338229, 1078574, -4908074, -2176475, +-6134287, 6692096, 3797288, 4354023, -1364189, -10478110, -9621800, -3139084, -930934, -3770445, +-6695854, 1850594, -2980707, 4310537, 673773, -709207, 2598992, 2777233, 4345970, 4148402, +3258270, -33823, -1090922, 1176821, 2887292, 2297808, -1426466, -1264868, -936840, 756451, +-107911, -827318, -48318, -5155035, 530965, 3361886, 2476586, -4015795, -2992519, 5752572, +2974802, 5705327, 2148021, -4171487, 3854733, -1019518, -3264175, 614717, -4612795, -2472828, +-1260036, 1725503, -1017907, -12868796, -14463839, 24157580, 16847010, 21597244, 1386201, -13846438, +4889821, 11275900, 8028368, -3525631, -8759586, -2570538, -3216394, -4244502, -7541426, -3018288, +-6333466, 16109349, 2579128, 2668785, 127238, 948651, 1714766, -5941551, 10660646, 6027450, +-631360, 3885872, -1513976, 10979547, 2025614, -959925, -17941152, -1316408, 1131187, 1721745, +-3357591, 2257005, -8497056, 14579266, 11802570, 11400991, 9942849, -7802345, -10818486, 8317741, +2562485, 4074313, -708670, -12583717, -9109089, 743029, -7100655, 99321, -5963025, -2580202, +7561827, 2421825, -5391258, 1948305, -13923747, 443992, -23608898, -11981885, -22305376, 19282792, +17367774, 18551574, 22465364, 10896332, -3710852, -9942849, -3016678, -531502, 3230889, 17813914, +-5870147, -13498008, 10319733, -8582418, 4498978, -1948305, -1938104, 4195646, -4000225, -7289097, +-2061047, -8979703, -1902134, -8071854, -1852742, 1159104, -705985, -951335, -2190433, -2799782, +-5581847, -59056, 2944200, 484258, -2805688, 1010928, 4895726, -631897, 3277597, 1817845, +1945083, 1399623, -6451041, 5688148, -2485712, -2024003, 3813394, 1338419, 4214974, 457951, +-5363878, -970663, 134755, 966368, -3274376, 184684, -213675, -8565239, -11525545, 10165114, +13189308, -6476811, 12245489, 1728188, -5199058, 4925254, -17747342, -5505611, 5006858, -5653788, +-10883447, -20512764, 10079215, -8814347, 2373506, 13289166, 3190087, 15495705, 11854110, 6739341, +2544768, -9149354, -2684355, -4789426, 839129, 8629663, 4498978, 1782411, 7368017, 21066814, +-1099512, -17916456, -7866770, 2895882, 4302484, -1025423, 445066, 1697049, -7642358, 471373, +-16863652, 3793530, -17641578, -6432788, -13661217, 6726456, -6815040, -11209328, 17105780, 4797479, +1394791, -7698729, -10261751, 2562485, 4067334, 1506997, 5573794, -8746701, 19230716, -23350664, +6074158, -9733470, -14173392, -7941932, 12239046, 3687230, -13287018, 9385577, -10581189, 25934624, +-2418067, -2848637, -12617003, 1508070, -16831440, -9031779, 22453552, -9041980, -10197863, -6662031, +6713571, 840203, 9517111, 4740570, 4975183, 6933151, 3769908, -641024, 715649, 3304441, +1416802, -1839320, 5573794, -1756105, -1943473, -4207458, -3774203, -1701344, 2056753, -3314641, +243203, 1610613, -1365800, 1403381, 260382, 5493263, 2882460, -15569, -1123134, 537, +-401043, 3278134, -2923799, 2972117, -825707, 1309428, 4609037, -1471026, 241592, -648540, +-2319282, 5632313, -794032, 4390531, 24475408, 25183540, 23757074, 5132486, -6271189, -3880503, +-15176804, 12467216, 442382, 7348689, -4487167, 2416993, -5500780, -4210679, -8744017, 4846871, +-9108015, 15163919, -39289288, -11380590, 358093, -11829414, 8536248, -12161737, 2593624, -4649302, +12455405, 2285460, 11992086, 946503, -2739652, -108985, 4435628, -13708999, -9836012, -10645076, +-1446867, 13506062, -26407070, 9270150, 23097260, 2913599, -16871706, -584652, -14199699, -13596256, +9540733, -1709934, -11589432, 6562173, 1035624, -4264366, -6520834, 3849901, 9637907, 5896453, +-13475997, -9804873, 7807714, 11753715, -9470403, -12517682, 6270116, 13158169, -15845745, -471910, +-14141180, -19412178, 23242216, -3782256, 3638374, -4273493, 14425721, -3313567, 3572876, -7648800, +12553116, 7008313, 11552388, 13367549, -13197361, -14552960, -5908265, -2731062, -8732205, -21934934, +2473901, 1268089, 35433, -1551557, -3526168, -2892124, 6367289, -488016, -2684892, 5905043, +-6395743, -3359738, 2432025, 11529303, -3440806, -3476776, 599685, -1387274, 3998078, -1327145, +-603980, -1960116, -3189550, -7995619, -11525008, 2100239, -789200, -8750459, -4376035, 2368675, +-3043521, -9924596, -5530308, -622770, -1716913, 841277, 2851858, 1233193, -7516, 8216810, +2835215, 12907987, -4124779, 23085, -18434000, -8367670, -3927211, -15562814, -22544284, -3870303, +-7266548, 22038550, 6895570, 32567126, 6206765, -8811125, 4645007, 6525129, -25877714, 1932735, +23463944, 15083388, -14912663, 2532957, 11926587, -20669530, -2988760, -10126459, 9366250, -7827041, +6309307, 1876901, -3769908, 1592359, 348966, -6338298, 7595113, -13889387, -5198521, -5705864, +-17601312, -3327526, -1969779, 740882, 1697586, -4453344, -5268851, 33293512, 10281078, -12296491, +-22840100, -7969849, 2760053, 24194624, -5352603, -2630131, -12868259, -3078955, -8937290, 19922742, +-15428059, 17824114, 22405770, -21784610, 15083388, 6010270, -9050033, -7946227, 5776194, 10760504, +-48153564, -5975374, 296353, -6213744, 13172665, -6117107, -35900020, -13675176, -10196789, -15957414, +-15610059, 3253438, 3500398, -8859444, -7880191, -14687714, 1927904, -5181341, 1659468, -6145025, +-7305203, -8273718, 2372970, -1342714, 5650030, -7106024, 4041564, -511638, -7328825, -15626702, +-3654480, -529355, 5555004, -1847373, -20975546, 4785131, 10708427, 4549981, -112743, -7069516, +7965017, -652835, -2089502, -12475806, -1828582, -4032974, 11050414, -1211181, 2094333, 483184, +2682207, 7199976, -4555350, 830002, 744103, -1932198, 969052, 3350075, -14879914, -12688407, +-4611721, -10173704, -7010997, -2503429, -6332393, -8022462, -7760469, -1890859, -1880122, -3196530, +-5609228, -2151242, -3857954, -677531, -1861332, -6859600, 5530844, 32288490, -934692, -37592240, +-21012590, -23256712, -4326643, -12854837, -504659, -19080930, 31369904, 18647138, -3313567, 24663850, +771484, 26590142, 6418292, -15315317, -20860120, -13160317, -16820166, -7519951, 4173098, 11477226, +-3686693, 3767760, -13884556, 2397666, -20052666, -1805497, -1101122, 6916508, -7501161, 32217086, +4208531, -833224, 21422224, -8296266, -15107547, -8891656, 13150653, -1002875, -8556112, 3585761, +-68183, 27395986, 6815040, 75162, -10582799, -16550656, -41731512, 2694555, -33142652, 16802448, +56989920, -40707164, -8654896, 9206799, -6962142, -7184944, -11353746, 9505299, -11656004, -39384852, +-10413685, -39274256, -8162586, -1176284, -24557550, -3514894, -35362076, 15332496, -3499325, -22491670, +55253680, 4247723, 22567368, 18831284, 30515206, -18747532, -1188632, -11325829, -4010963, -7684770, +14535243, 9130564, 13068512, -26889716, -5322538, -14662481, -18785650, -15869367, -9611063, -2192581, +10574746, 8597451, 6098854, 7580618, -2049236, 2384244, 15106474, -2878702, 14951855, 4271882, +-12790949, -3646964, 4719632, -5701569, -2080375, 17337710, 397821, -5439039, 19683298, -9194988, +-1240709, -16243029, -3788698, -11384885, 8592619, -8747238, -3687766, -3433826, 3381750, -3988414, +7787313, 3221, 8051453, 2014877, -2801929, -5648956, -7410966, -5829881, -11323144, -65821448, +-6505265, -16522202, -18129056, 24529632, 19534586, -22802518, -17948132, 45893336, -4756140, 15167140, +2743410, -1966021, -4849555, -4533338, -14376329, 249108, 5646809, 8559333, 5893232, 16674674, +-12382391, 104153, -12058121, -7002944, 5430986, 23486492, 15220827, 20787642, 18664318, -3687230, +7001334, 11378442, 414464, -18286360, -3018288, 26321170, -4250944, -36592584, -15920907, 4468914, +-30976914, -13154411, -31755378, -21677774, -19704236, 30100742, 20689932, -6052683, 20707112, 8216273, +29053844, 19662898, 9597641, -50067508, -10893111, 2656974, -43976708, -32054952, -12090333, -8244190, +-51574504, 11574937, 29087130, 38887172, 46501076, -15145665, -29714732, 42413, -29984240, -22195318, +-41779296, -46483356, -32743756, -27518930, 31389232, 1717450, 6578816, -27999428, -29393682, -26304528, +-2335925, 41049148, 51970180, 1706713, -18642842, -14245333, -20527796, -53919020, -23935852, -23854786, +-6390375, -1794760, -12030740, 14464913, 198105, -3981972, -19080930, -24967182, -12947716, -13989245, +-22028350, -4734665, -5459441, -1984812, -5778879, -10006737, 13653164, 8483097, -1227824, -12110734, +9053254, 14852534, 1271847, -12436615, -6458020, 10438918, 2958159, -2652679, -11934104, 10426570, +-2299418, -3797825, 1322850, 8126615, 2185065, -2159832, 1376537, 6339372, 1163399, -21005612, +-50077172, 18849000, 1924145, -34216932, 31049392, 15170898, 9258876, -7835094, -30604326, -8049843, +466004, 28925530, 38632692, 1844152, 10146323, 2090575, 814433, -2274722, 4879620, -16775605, +54586888, 12775917, -18345952, -18389976, -8384313, 1997160, 26486526, -13436268, -4465156, -419296, +13217225, -13482439, 6783901, 497142, -3415573, -45828912, -14607721, 14148159, 23157390, 7948374, +-5442261, -13508209, -30353608, -3680787, 4529580, -7530689, 153008, -8225399, -19693498, 19067508, +-4857608, 6565932, -21028160, -4727686, 52505440, 3580929, -6222334, 5784784, 6544457, 4595615, +26268556, -10147934, -12390981, 19466940, -2595771, 11386495, 7009387, 16915728, -7022809, -20040318, +9611600, -9458592, 1237488, 74327632, 71615896, 31935766, -6723772, -4076998, 8792335, 33474438, +15356119, -10458782, -1416802, -4852776, -19387482, -20683488, 10852309, 5201206, 2612414, 16524350, +-2523830, -9834401, 9791989, 3857954, 14583561, -21976810, -17828946, -22325240, 3022583, -10253698, +998043, -4800163, 7706782, 8447664, 18188112, 10269804, -19751480, -14819785, 6813966, -12435004, +-7055021, 1083942, 6166500, -8506720, -19420232, -2577517, 483184, -2093260, 8356396, 1839857, +-15698642, 4351876, 24938190, 28423020, 21343840, 24191940, 17468168, 21774410, -6153078, -1810866, +8445516, -2864206, 8318815, 7372848, 11233487, 20685636, 37041408, 5350456, -38277824, -9739912, +8956081, 6206765, -8902393, 29645474, 14874009, 11817603, -9309878, 34627636, -1713155, 1326071, +-8854612, 18706194, 12394739, -25654914, -37876780, -10170483, 6715182, 2735357, -7002408, -34561064, +-3213709, 13083007, 3129958, -11256036, -4571993, -9988483, -13209709, 8826695, 10278930, -21930104, +-24940338, -8179765, -31009128, 9092446, 27727236, -23475218, 26664230, -11804718, -14276471, -26412438, +-37343132, -41752452, -39775156, -20025822, 261993, 15796890, 7296076, 15737297, -20854750, -46612744, +-18339510, -44772348, -79296368, -29702920, 64397128, 110442936, 64655900, -26297012, -21351356, -96963720, +-87351584, 61601644, 10943040, 80726056, 83250960, 86900608, 29351270, -33718176, -42375220, -46963856, +-54166516, -7223598, 54649700, 92560304, 29736742, 10272488, -3818226, -45057964, -66756140, -44533444, +9162776, 64173792, 30021284, 41842644, 33851860, 13041131, -23641110, -25941602, 1598265, -14016626, +5617281, 31841276, 33404108, 25069188, 5313949, 13177497, 1007170, -20070920, 4960151, 9397388, +-2773475, 4464082, -5438503, 45871860, 26668526, 29421600, 17790828, -14629195, -39026756, -55195160, +9059160, 20496658, 38507604, 39103528, 49707804, 24854438, -35660576, -44328356, -54477904, -8723079, +616328, 30920006, 17915920, 10460930, 16879222, -26473104, -80688480, -53451404, -49435072, -10372883, +7256884, 19934554, -4209605, -9821516, -17898740, -21132312, -3553012, 7644505, -24987582, 34979824, +16791712, 31067646, -68302328, 15490873, 9204115, -20984674, 15274514, -15690052, -7792682, -4664872, +-9807558, 29436632, 54138064, -15710453, 10833518, -7511898, 12919798, 27597312, -8500277, -4983773, +-15080167, 7967165, -9602473, -29840896, 21736292, 36910412, -4945655, -19242528, -17781164, -38767984, +-10790568, 29493004, 19891604, 10315975, -42862700, -24755654, -18751828, 37896644, 32730336, 28858422, +-83591336, -55498492, -6870337, 41342280, 88025352, 423591, -106110392, -38858716, 3423089, 35824860, +-3040300, 19704236, 14709726, -46208480, -20402168, -12715251, -27893128, 2018098, -52262236, 8253854, +20512764, -62909460, -40467180, -19550154, -8197482, 69835096, -547071, -106938240, 10154913, 15187004, +16211354, 42273752, 19535658, -45624364, 2170032, -1650341, 91450592, 64717104, -53832048, 49052284, +-28759638, 19583978, 50443316, 18299782, -27886686, 25522306, -11233487, 6641630, 17407502, -1756642, +-18924162, 34761856, -22406844, 25512642, -12021077, 13785771, -4292283, 28000502, -9881109, 22032646, +-38301980, -6462852, -566936, -4887673, 12163884, 23871966, -24387898, 49081276, -19276350, -16724066, +-33494840, 24570972, 51354388, 10296110, -67914704, 5607617, -15362561, 33090576, 16105054, 14991046, +-27365920, -1750736, -17463338, 16549046, -7181722, -10755135, -4101157, 22396644, -5481989, -13582297, +-16898012, 12759274, 1847910, 12165495, -7617662, 439160, -13035226, -827318, -2851322, 6250788, +1789391, 13773960, -3000035, -4007741, -14442901, 9823664, 3364033, 8747238, -48855, -8228621, +-10762114, 3240553, 2488934, 7453916, 23659364, -56435332, 8038568, -41430864, 7578470, 35223564, +31142808, 10218264, -20151986, 4067871, -11965779, -2939368, -14853608, -10964515, 7663296, 2086280, +-21633750, -2465311, 11287174, -2377801, 1291711, 4109747, -13793824, -13653164, -338766, 9082782, +1221381, -21990770, 1855426, 11323144, 3565360, 2654827, 23054310, -2508798, -6124624, 8288213, +8837432, -15551003, -17260936, 12841952, 2495913, -13236552, 8924942, 3889093, 4332012, -9250823, +3754875, 10472741, 1275068, -13029857, 17733920, -2120640, -19850266, 631360, 15558519, 4879083, +-12986370, 11861626, 3933653, -18090940, 7465727, 966368, 18518288, -16738024, 1523640, 12783970, +-29355028, 972810, 12693239, -452582, 8801462, -4847408, -18788334, 2532420, -19881940, 18711562, +9655086, 5302137, -7380365, -7758322, 15440407, -13259101, 13779329, 15160698, -21613886, -6980396, +937914, 16784196, 274341, -9666898, 6213744, -11716134, -693637, 1744294, 9897752, 718333, +1636919, -6032819, 10300405, -3401077, -11997454, 10964515, -4839892, 4754529, -2711735, 7919920, +9954660, -11376295, 2006287, -6142877, 2698850, -6242198, 22124988, -6203544, -12402792, 10028749, +-5583995, -1828046, -6308770, 6576132, 6026376, -8892730, 5009006, 8765491, -4506495, 636729, +-12344810, -28123982, 45632416, 6292664, 20543902, -17999134, 7747048, -4031901, 5373004, 4839892, +-7807177, 2913062, 8238284, -4992363, 18112950, 664646, 452582, 6055367, 5832029, -833224, +-4789963, 7644505, -1342714, -5535139, -1236414, 7683697, -8582955, 1662689, 3701725, -10902774, +13322989, -2814814, -6595459, 20503638, -8614094, -12288975, 9368934, 5113696, -5811091, 8826158, +7055021, -2611340, -3013457, -1724966, 2583960, 5033165, 2909304, -145492, -3668439, 10521596, +-11425687, 10085657, 1491427, -1345935, 2743410, 3128884, 3207267, 362925, -10178536, 2733210, +8588861, -6277095, -127775, -84826, 6519761, -756451, -2668785, 9908490, -5176510, 5281736, +-10454487, -3918084, 9938554, -9628780, 9552007, -2583960, 6257231, 7672422, -8893267, -3067144, +10793790, -9170292, -574452, 1066763, 3198140, 738198, -1336272, 329102, 716723, 4954782, +-4387846, 1036161, 3106872, -392990, -2317672, 489089, 1784022, -504122, 549219, -1967632, +2166811, 3065533, -5578626, -941135, 9383430, -4659503, 2608656, -767189, 5305359, 1464047, +-3088618, 539555, -689879, -3223910, -2291902, 11116449, -2003602, -2632815, 1501091, 1180042, +-972273, 2310156, 4507032, 79994, 1097364, 361314, -1083942, 623844, 1251446, -2197413, +1383516, -204548, 10712722, -37781216, -120830312, -6137509, 65150360, 29242822, 138766640, 11844983, +29326574, 1230508, -40429600, -50955492, -34489660, -62100396, -43421044, -27322434, 1022202, 47426104, +93452584, 68751688, 59871308, 19489488, -32482300, -47766480, -42903504, -50617800, -56092808, -22756348, +-10721312, -4909685, 27436788, 36352068, 27464168, 50821812, 32866164, 12167105, 34153044, 788127, +-14770929, -9808632, -30570504, -62799940, -38118908, -36770824, -37430640, 1947768, 17513266, 12055973, +46198280, 37827388, 26135412, 37204616, 39633960, 11201275, 11922829, -4231080, -34029024, -47392816, +-36145908, -47502340, -33709052, -11810086, -8295730, 2909840, 25917444, 20222316, 18330384, 36489504, +30241402, 22165252, 37768868, 10313290, -7672422, -1582696, -15066208, -32786706, -18986440, -41472740, +-52320756, -30908196, -26004954, -11354283, 30480846, 41019084, 38348152, 44130252, 36408436, 20629264, +19986630, 9625559, -4202089, -11263015, -21001854, -31178242, -31107912, -35283156, -36934572, -31688268, +-10715943, -3779034, 12526809, 31780074, 35502200, 35008816, 41030360, 32531692, 24472186, 20244328, +6736656, -15875273, -28122908, -45986216, -58580668, -54976656, -43457016, -21962316, 5632850, 29387776, +40496708, 46462420, 48568564, 41781440, 29655138, 15029701, -9559523, -23853174, -31381716, -36566276, +-31868120, -24114630, -16514686, -6933151, 7757248, 10098005, 13931800, 15859167, 14251238, 11206643, +9087614, 5993090, 5408975, 2290828, -1725503, -3134253, -3041374, -5001490, -5328444, -7093676, +-8138426, -9179419, -7223598, -5677947, -2936684, -325881, 4667556, 7592429, 9059160, 8913131, +10022306, 8800925, 6479495, 2731599, -1291175, -5437966, -6752763, -7977365, -7904351, -8789651, +-7717520, -5583995, -1465121, 1134408, 3344169, 5185100, 6529424, 6298033, 6855842, 6331319, +5337571, 3164854, 974958, -2584497, -4889284, -6817187, -6794102, -6506339, -5331665, -3772592, +-938450, 598611, 1988570, 3254512, 4522064, 4980015, 4960151, 3805878, 2895882, 1393180, +163209, -1280437, -2283849, -3639985, -3945464, -4173635, -3545496, -2755759, -1115081, 220654, +1824824, 2705830, 2957622, 2472828, 2287070, 1906429, 1676111, 916976, 188979, -734439, +-1352915, -2070711, -2260764, -2221572, -1614908, -959388, -178241, 202400, 667867, 842887, +1013075, 921807, 784905, 541703, 404264, 157303, 9127, -141197, -185757, -218506, +-226023, -214212, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -2823404, -606664, 3182034, -341450, 234076, -4857608, -2471217, 653372, 6309844, -4161287, 1273995, --6667400, 6730751, 391916, 2432025, -835371, 1020592, -1329292, -2384244, -5803038, 2379412, --5817533, -2747169, -3305514, 3218541, 2547453, 1200443, 2657511, 5061082, 282394, -4692789, -3001645, 447213, -268972, 2451353, -972810, -1733556, -6835441, 1051730, -1993402, 1435593, -2801393, -3730716, -1514513, 3303904, 1005022, 350040, -3503083, 8666170, 5204964, 806380, -4169876, 3418794, 3316789, -8010651, 452582, -819265, -2152852, 1908039, 1278290, -1322850, --1530082, -472446, -2425583, 2306398, -941135, 4591320, -212064, -1227824, -2240362, -4099010, --781684, 3079492, -175020, 671626, 3635690, 960999, 4211753, -127238, 605590, -481036, -4531191, 4014721, 4060355, 849867, -42950, 1780801, -129386, 521302, 48855, 164819, --379031, -1311039, -1114007, -277025, -1270774, 543313, 586263, -567473, 1302449, -570157, --427349, -316754, 512175, 112206, 1160178, 62277, -20938, 55298, 1516124, 723165, --156229, -459025, 33823, -259846, 836982, 395137, 1617055, 363998, 2059437, 7208566, --3514357, 2400350, -2006287, -3139621, -1298691, -2176475, 3928285, -3266323, -6060199, -1553168, -1575716, -5046587, -3061238, 5681705, 9813463, -1664837, 3740380, -3378529, -3566970, -164283, -1018444, -439160, -119722, 3642669, -6251862, 2028298, -478889, -1311039, -5274220, 453119, -103079, 2957085, 865973, -4115116, 5402532, -4319664, 5039608, -571231, 896574, 2055679, --616865, -2534031, 3934727, 971200, 5264556, 803696, -4685273, 8453569, 6698002, -2343979, --713501, -1628866, -5900212, -3177739, -992137, -1011465, 2348273, -3234110, 235686, 2318209, --14496, -88047, -399969, -554588, -3233574, 5113159, 140123, -109522, -1636383, -568546, --4714801, -4169340, 1356136, 3413962, -453656, -883153, -27380, -33286, -2426657, 4583267, -603443, 1518271, -1214402, 1252520, 762357, -187368, -105227, -198105, 40802, 1088774, --624381, 690953, 713501, -138513, -206695, 572304, 1203665, 1097901, -804233, 307627, -355945, -600759, -362388, 1724429, -263067, -79994, -1370632, -1235340, -2093797, -762894, --7494718, 9299141, -1989107, -1057099, 6652368, -2556579, 3445101, 14747307, -1735704, 470836, --5600101, -4514548, -6984154, 4097399, -2867965, 2018098, 3892851, -4384625, -3744675, -2734284, -344134, 1482301, -5425618, -2105071, 2410014, 2076617, -2135673, -855235, 3358128, -3406446, -563178, -1676111, -594853, -2361158, 2069101, -2163590, 933619, 1986959, -874026, 6219650, -287763, -805843, -4546223, 579284, 6641630, 947577, 2260227, -6019934, -8616241, -3106872, --7408819, -6533719, -145492, -2800319, -230854, -7932805, 6842420, -7341710, 1111860, 5090073, --4537633, -7672422, -5454609, -1583232, 5146982, 4578435, 6878927, -3996467, -3511673, -2799782, --2400350, 4992900, 1305670, -2012192, -1067299, 2396592, 2715493, 854162, 1269163, 1758252, --340913, -2811056, -430570, -1846836, 747861, 287763, 660888, 609885, 185757, 1240172, -196495, 1439888, 176094, -1006633, 1462973, -1603097, -1034550, 379568, -392990, 1475858, --826781, -604517, -243203, 238908, -518080, -939524, 957778, -260919, 718333, -784368, --756988, -937377, -1100585, -667331, -996969, 1552094, -1285806, 8017094, 829466, -3230352, -451508, -2675228, -597537, 5607617, 9413495, -3226057, -3296924, -8551280, 1079647, 2137283, -4859756, -3230889, 5240934, 820876, 8071854, -6487548, 1037235, -12242804, -1348083, 1450625, --2990371, -2763275, -1081258, 4495757, -3693135, -6443525, 1823751, -9448391, -2057826, -4546223, -2080375, -1018981, 3191161, 404801, -7193534, -7784628, 212601, 4122095, 7691213, -1544041, --3130494, 6425271, -7104950, -3881577, 3428458, 3045132, 5090610, -4876936, 180926, 1950452, --3065533, -1051193, 3006477, -4429185, 5745593, -2518462, -1068910, -6150393, -5096516, 2443300, --12885, 96637, -867047, -3782793, 3558381, -2385318, 4425427, -96637, -5855114, -6163278, -2246805, -3110093, 1096827, -8765491, -8351027, -1353989, 7859254, 33823, -1621350, 369367, -1132261, 817118, -361314, 1232119, -4099010, 741956, 690416, 1219771, 1576790, 1728188, -921807, -2321967, 165893, 2001992, 933082, 521302, -1147293, -1429150, 323196, -29528, --474057, 1876364, -41339, -159988, -1324461, 2347200, 1954210, -144955, 166967, -1198296, -679142, 711354, 324270, 76773, 775778, -1087701, -565325, 4747013, -13127031, 2973728, --5735392, 4745402, 5432060, -6237367, -11515881, 1551557, -1588601, 7200513, -4419522, 10453950, --4486094, 6896644, -8662949, -3249143, 3536369, 5112085, 1391033, -97711, -5336497, -754841, --4211216, -5253819, 2821257, -4493073, 1676111, 955093, 2078764, -2581812, 4835060, -981400, -4153770, -1013612, -8119099, -1408749, -2636036, 751082, 7993471, 443455, -749472, -483184, --3319473, 2721399, -3132642, 4186519, 4543539, 1606318, 1713692, 8046621, -2063732, -1530082, --6544457, 4556961, 4022237, 793495, 995896, 789200, 286152, 2309619, 4888747, 3237869, -1831804, 1736241, -1311039, 6380711, 2146947, -1393180, -5004174, 2451353, -1522029, 9346386, -5291937, 1124745, -4388920, -1683627, 7122130, -2849711, 892279, 4093641, -2359548, -2951716, --5740224, 658741, 2036888, -514859, 2694555, -2293513, -879395, -1802276, 1966021, -238371, --674847, -2797098, 615254, 634045, 1600412, 1867774, -692564, 252866, 2098629, -232465, -2130841, -220117, 620086, 3120831, 626528, 3208878, -281857, -787590, -237834, -358093, -78920, 159988, -2504503, 844498, 1951526, 133144, 769873, -671089, -16847010, -9156333, -3373697, -3299609, 6764037, 6745246, 10189810, 4206921, 4117800, 2502355, -12279311, -2761127, --1705102, 1085016, -1236951, 3802120, 2705293, -4734665, -3774740, 3133716, 5967857, 7518877, -6491843, 8542690, -4700305, -4705137, -6230924, 6580964, -3825742, 5433134, -1388348, -307090, --5835250, -3515968, -3340948, 4931160, 6101001, 1052804, 6099391, 8713952, -3479461, 2183454, -10250476, -5185636, 3323231, 3451006, 378494, 7683697, 9877888, 7486128, 17136382, 3154654, --2439005, -3204583, -2943663, -217433, 3012383, 5165772, -952946, -1712081, -1817845, -4627291, -1925219, 2448668, 4438849, -10735808, -1472100, 2670933, 7096360, 4914517, -9142912, -6808597, -1724966, 1672353, 7405598, -6561100, 410169, -697932, 783295, -9320616, -2512556, -3236795, --2253784, -3854733, -1603097, 251792, 3563749, -48318, 201327, 1348083, 1705639, -3587372, --558883, 222801, 16643, 1224066, -1220845, -2360085, -1568737, -1812476, 2526515, -2469606, --1165010, -2836289, 704912, -642635, 1799054, -2600603, 1078574, -910533, 1060320, 912144, -187368, 2170569, -2097018, 1046898, 1225676, 324270, 2589329, 4055523, 8126078, -1059783, -1654099, 6947647, 10201621, 5743445, -11275900, 31675, -11996381, -8507256, -5157719, -1000727, --7344394, 8753680, 3230889, 5180268, -14922327, -1073205, 9745818, 4958540, -4385699, -6272263, --3838627, 3801583, -11419244, -667331, -7342247, 11225971, -1489280, -3284039, 1186485, -402116, --1935420, 1981054, -2977486, 5213017, 3697430, 7493644, -566399, 382252, 11556146, -3660386, -7731478, -1257889, -1372242, 20376398, 2415919, -2185065, -4613332, -15762530, 1649804, -16154983, --2731062, 17009682, -4812511, -3307125, -11833172, -3467112, 408022, -6354941, 3404299, -618475, --8676371, 9204115, 3280818, 2996277, 2520072, -6411313, 7018514, -10988137, 3164317, 4218732, -449898, -1456531, -4460861, -3495567, -4543539, -1454920, 3635153, 4693863, -1198833, -3843459, --2288681, 5232344, 2134062, 10017474, -190052, 753767, 4064650, -418222, -1860258, -1389959, --1280974, -1108102, -1667521, 1174674, -1902134, -75162, 2027761, 747324, 2067490, 2008434, -1599875, 177167, 3008088, 2183454, 1288490, 924492, 899796, -3164854, -2699387, 2288144, -310311, -1954747, 330176, -2222646, 624381, 2524904, 906775, -434865, 913217, 2163053, -469225, -1768990, 854699, 6581501, -13445395, 5712307, -4782446, -6828461, -6511708, 5026723, -6440841, 3729642, 11212012, 8255464, 1622424, 3332895, -8894340, 1732482, 3919695, 8681740, -1633161, -4253092, 3135326, 4024384, -7977902, 1097364, -8181376, 6280316, 5719823, 7378217, --7286949, 4359929, 7907572, -3658775, 1997697, 10514080, -382789, -6601365, -5267778, 2300492, --1807108, -6707665, -2793876, 70330, 1494112, 3557844, -4641786, 7323456, 4428112, -1740536, -8848170, -1152125, 3320547, 11619497, -12461311, 22841710, -10593000, 3095598, 6847789, -2440615, --1331977, 2847563, 15451682, -896038, -2201171, -512712, -3736085, 7484518, 8398272, -2755222, -3562675, 2955474, 2703145, 5125507, 6603512, 500901, 7145752, 1504312, -6233072, -9562208, -2223719, 890669, 4314295, 1816771, 14303852, -1494112, 7968238, 6419903, -4496294, -8223252, --1006096, 883690, 2075543, -2263985, 3647501, 1695438, -3569118, -1007170, -3408594, -1279900, -2052458, -1122597, 3051038, -824097, 1067836, 753230, -1478543, 1599875, 1837172, -2894808, -1877975, 1238024, 560493, 638876, -136365, 515933, 3398930, 1032940, -1251983, 585189, -911607, 1664837, 2083596, -683974, -2405719, -720481, -2104534, -1590212, 2512556, 2302639, -2961917, 7598334, 10007274, 6150393, -10654203, 20393578, -6428493, 3860102, -14981383, 5942088, --13251048, 10246181, 1049583, -2855617, -7504382, 9686762, 1283658, 6177774, 6373732, 3269544, --11165841, 5694590, -6765111, -1243930, 5015448, 5465883, 1257352, -2079301, -11190000, 1552631, -10275172, 1146219, 6645388, 7448547, -11685532, 6424198, -5951214, -5859409, 8590471, 9535901, -4935455, 5366025, 1466731, 5144297, -12046310, -5364951, -3862249, 346282, 12779675, 6146098, -5048734, -944893, 5603322, -285078, 14075682, 5207648, 5321465, 2159295, -816044, -20859582, -7706245, 4936528, -1961190, -1473711, -15610596, 148176, -5987185, 3728032, 13536126, -2274722, --7798587, 15825881, -742493, 8939438, -5307506, 57982, -9905268, -910533, 155693, -17095044, --5120138, -2946885, -7724499, -3564286, -1547799, 1080184, 8531416, 635655, -238908, -1652489, --4452808, -708670, 758062, -1622961, 575526, 212601, 2261837, -4008815, -1612223, -534723, --3725884, 202937, -2426657, -1508607, -1240172, -2982855, -1566589, 3500935, -1199907, 625455, --985695, 3795141, -199716, 1720671, -2492155, -5549635, -1712618, -240518, 2371896, 1002875, -3390340, -226560, -1109712, 2905009, -3567507, 4238596, -115427, 13352516, -11515881, 1670742, -4852776, 6036577, -19982336, 13251048, 3699041, -14209362, -9088151, 7742216, 17794050, -6276021, --3240553, -12303471, 25478282, 9891310, 1581085, 4237522, -13386876, -8672613, -567473, 1104344, -13214004, 2859911, 10186052, 11449309, -504122, 703838, 7975755, -2109903, -8515310, -8145943, --2074469, 11335492, -6131066, 14341970, -6658810, 21064130, 9367861, 16988206, -4605279, 2743410, -13635984, -10622528, 6355478, 6149320, 5783174, -6085432, 7261179, 1753420, 2314987, 6195491, -12968117, 10900627, -11066520, -2592550, 5697811, -10797548, -6857989, -2854006, -22090628, 5908802, --10919954, -6849399, 2130304, -2740726, 7561827, 14078366, 9025337, 5691369, -7603703, -1798518, --461709, -14947023, 2732673, 1269163, 18476950, 3976066, 4157528, -4003983, 14276471, -127775, --406948, 44023, -4641786, -2122251, 601832, -850404, -5029407, 467078, -1290638, 913217, --5997922, -6508486, -2132451, 5196374, -854699, 2027225, 1975685, 1610613, -416612, -1370095, --1785633, -3600256, -6008659, 2079301, 331249, -1461900, -7098507, 5258114, 3593277, 2045478, --566399, 462783, -2399276, 1807644, -1252520, -2318746, 864899, 3063386, 1872069, -1850594, --421981, -730681, 2279554, -15912317, -23484882, 12710956, -9561134, 10422812, 3410741, 5047661, -6172405, -15775415, -28704340, 2546379, 4154844, 16180216, -15946677, -17482664, 15093589, -6023692, -6866579, -3294240, 3595425, 2397129, 3980898, -7960722, 3848291, -1144609, -2493229, 9975598, -3724811, -1430761, -12950400, -1764695, -370441, -2382633, -617938, -7005629, -17178258, -7632157, -12610024, -5368172, 6218039, -9735617, 7215008, 3720516, -129386, -4901095, -21307332, 11781632, -11433740, 14703821, -10281615, -4355097, 19981798, 17663590, 8159901, 3799972, 11293080, 4158065, -10147397, -5443334, 8814347, -16843788, -1070521, 4704600, -4386236, 20053740, 781684, 10967736, --6537477, -10771778, 23172960, -386010, 9198746, -3061775, 328028, -27249956, -2294050, 5802501, --10517301, 12845173, 9738301, 2404108, -5576478, -20755966, -442919, -4216584, 5174362, 6313602, -1053878, -2522220, 4884452, 222801, 2399813, -1312649, -6279242, -2290291, -5733782, 10051297, -3082713, -198105, -208843, 1263257, 9279814, -1598802, -2223183, 1439351, -727997, 123480, -4162897, 2277407, 3741990, -2673617, -350577, -4286378, 834834, 75699, 3918621, 3923990, --4342749, 7012608, 7122130, -5553393, 433792, 921271, -805843, -11775190, -15426449, -4479114, --3613678, -26416196, -24779814, -6492380, 120259, 18651432, 15171972, 15015743, -5807333, -2414309, --3759170, 16033113, 6889128, -6727530, -1190243, -5356361, 11595875, 9000104, -6694244, -9374303, --8603893, -17573396, 7339026, 489626, 497679, 3835406, -2628520, 6663642, 24712704, -14068165, -7450695, 1474248, -9526237, -5455682, -11310260, 4287451, -5027259, -5683316, 12795781, 1570884, --4269198, 12919798, -1758252, -5705864, 4495757, 9425843, -5190468, 10129680, 18196166, 17549236, --11997454, -168577, 4383551, 9888625, -15193447, -3167539, -4196720, 18927920, 8065949, -2043331, --11514807, -12779675, -11361262, 17093432, 14156212, -27087284, -22599044, -17140678, -12072079, 4083440, --10888279, 6607271, 1802813, 2683818, -21791054, -6988449, 19696184, 15189689, -6602439, -13987098, -13605383, 7126425, -1640678, 221191, -1739462, -3320547, 7730941, -6943352, 1689533, 1182727, --292595, -5019743, -9154186, 1760937, 7431367, -736587, 812823, -3204583, 7057168, 7721815, -754841, -1033477, 2600066, -286152, 3118683, 3360275, 4860829, -6545530, -636729, 2382633, --8053, -4067334, 1080184, 8182450, 7617662, -2918967, 5835250, -8961986, 2232846, -2901787, --2493229, -3599183, -5601711, 2080912, 21873194, 17247514, 10717017, 1695975, -14231911, -7374459, --2170569, 5906117, 9100499, -12587475, 3317325, 823560, -10752987, -5064304, 8721468, -6372121, -6937446, 3011846, 8152922, -10031970, -13959, -22449258, 3396246, -28404766, 11726334, 11602854, --11025181, 13095892, 15592342, 495532, 4453881, -18301392, 10836202, 1116692, -7594039, 9978283, --2330020, 179315, -161598, 1254667, 19178640, -2128156, -17180, 23549306, -224949, -10824928, --31052614, -25511032, 28399934, 17710834, 7005092, 7176891, -11868605, -23907936, -11751031, 3820910, --9185324, 18748606, -994285, 2516851, 20205136, -4116726, -6265284, -4512400, -12713640, -21579526, --17149268, 48868676, -23711440, -10711648, 14021458, -24707336, -17805860, 17744658, 24852828, 8212515, --4511327, 29261612, 14130442, -23488102, -8149164, -13103945, -12800076, 26607322, 1933272, -17674328, --12222403, -13749264, 3889630, -2811056, 8115341, -165893, -4076461, -6430640, 608275, 7390565, --3948149, 3434363, -3845606, 3699578, 3346317, 10280541, -3978750, -1457605, 8803072, 737124, -4505958, 4615479, 6287296, 1214939, -3655017, -2022930, -926102, -1432909, 3861713, -1153199, --4094715, 8298951, 8553964, -4669703, 2196339, -5322002, 1962263, 2046552, 5288179, -1294933, --500901, -2607045, 2531883, 5944772, -20065550, -14812268, -10340134, -18363670, -1665374, 17376364, --1271847, 3565360, 8546985, 5670431, -14784888, -7162395, -12220793, -6547141, 15646566, -4793721, --1719598, -2157147, 9482751, 9458592, 28247464, 4492536, 20790326, -1225139, 7008313, -11340324, --8544837, 7445326, -14430016, -16039018, 513785, 5041755, -8238821, 6572911, -9643812, 2930778, --25355876, 14139569, 7905424, 11563663, 1430224, -10313290, -21246666, -7581691, -1905355, 17498770, --13347148, -7901129, 4878546, 40029096, -11078331, 40693204, -24980604, 9852118, -9218610, 17853106, --7095823, 30873298, -29057602, 44217764, -4195110, 9088151, 19128710, -32804960, 29229936, -35038880, -23630910, -57089780, 30933428, -29351806, 25990458, -38290172, 33642480, 1125281, 21802864, 9434433, --17863306, 15518254, -12794708, 38670276, -17630840, 6358699, -23091354, 6240588, -1558536, 4230006, --8266739, 10726681, -10612327, 7595650, -3768297, 2440615, 3243237, 3406446, 4467840, -2644089, --6110665, -4960687, -5855651, -13434658, 7741679, 1974611, -9237401, -4304631, -2800856, 5963025, --10281078, 9750650, -7878044, 1932198, -4230006, 4734665, 1573569, -107911, 14814953, -13153874, -8011188, -12709882, 19110456, -3655017, 18670222, -7377680, 5822902, 8425652, 2814277, 2894271, --28454, 8929237, -13362180, 14619532, -10191957, 9615358, -2174327, 57445, -3871376, 134755, -790811, -3788161, 1775432, 3494493, 1713155, -17594334, -15943455, 18514530, 31947040, -26500486, -40503688, -2368138, -27917, -1571958, 7014219, -12072616, -8883603, -18079128, -4063576, 566936, -16643, -106837, 15905875, 2715493, 17440252, 17083770, -10897943, 6279779, 36400384, 11890080, -7777112, 5453535, -31619550, 1599875, -5146445, -3969624, -29001230, -6138582, 16627429, 4694936, -5512054, 8366060, 21072720, 5495948, -6535330, -2170569, -1844152, 7905424, -14384919, -8843875, -21758842, 13512504, 10117869, 16832514, 12412455, -7336878, -3703873, -25127706, -11064373, 10215580, -8033737, 18966576, -13700946, -6812355, -4825396, 13943074, 8132521, 12517682, 5138392, -9912785, --9231495, 31367220, -9624485, -30476552, 7015829, 22050898, 15079093, -397821, -2667712, 2727304, -5019743, 3122441, 27986006, -33738580, -28847684, 3357591, 11348914, -14515916, -7526930, 2464774, --11462194, 5424544, -5617817, -1429687, 2981244, -2179696, -7711077, 296890, 6351720, -4094178, -35970, -11158862, -1981591, -9816148, 7201050, -3112241, 6602439, -3989488, 4116726, 1735704, -5568962, 8762270, -8895951, -3966402, -2673080, 6912213, -4327717, -8002598, -14717779, -36507, --5895380, -2179696, 2209761, 1484985, 394600, 2900177, 4789426, -930397, 14799384, 1847373, --1210644, -11454678, 1963874, -2094333, -668941, 2820720, -12044162, -6117107, -12439836, -64132988, -17700098, -7830799, -4088809, 15709380, -10886131, 16858284, -2290291, -27804008, -5084705, 2681133, -9736691, 12388296, 2870112, -19710678, 19470160, -7665443, -1789928, -12121471, -5458904, 10428181, --2105608, 9300215, 15697032, -3659312, -20308216, 4480725, 22253300, -20755966, 7612830, 17265768, --3159485, -13736379, -25604984, -17288318, 18038326, 46244448, -14259828, -18477486, 52114060, -3427384, --7518341, 37495600, 21831318, 18620830, 15052250, 6162205, -11040750, 19039590, 17741974, 12212203, -5653788, -34514896, 21537114, 19051938, -36427764, -21079700, -13093745, -10217190, -10041097, 39726300, -19835770, -22739168, 21235928, -8427263, -21254182, 9239548, 10805601, -9402757, -9010305, -33350422, -3745212, 5681168, 24380918, 11668889, 3016141, 20376398, -16203301, 42165304, -44836236, -52312164, -36922760, -22582938, -1400159, 25888990, -16319265, -11241003, -3228742, -3091840, 3221762, 15881715, -7803419, -13018046, -796180, 6181532, -1553704, 8822937, -347355, 4876399, 956704, -6910066, -3709778, 14097156, 9714679, -617938, 1891933, 9427453, -1511829, -1122597, 2396592, 21837762, -11213623, -3505767, 4780836, -19362786, -840740, 5115306, -8910983, -12001212, 11337103, -5184026, --325881, 11656541, -10100689, 4491462, -1716376, -2881923, 14467060, -8159364, -1939178, -16961362, --69671888, 21549462, 39443368, -24302536, -4992900, -18877992, 40577240, 27322434, 17179870, -3136400, --14079440, 3002719, 16400869, 7693360, -6966437, -1454383, 22404160, -1373853, -8151311, -29822106, --14111652, 25334938, 14744086, -15823196, 12822625, -11430519, -3585761, 7669201, 7171522, -6846715, -4653597, -26128970, 7573101, 35555888, -4443144, -6810208, -34783868, -20844550, 16962436, -27385248, --14874545, 6388227, 7047505, -8400419, 22892176, 21654152, -22140556, 8388071, 12425340, 35831300, -32785096, -5073967, 10761577, -770947, 37474664, 16367047, 15229417, 35561792, -15780247, -23062900, --11814381, -29552060, 25062208, 11901891, 12270722, 6600291, 42492796, -27993524, -6509023, 18232136, --9970767, 20222316, -920734, 2463164, 9412958, -24426552, -37155224, 4799089, 7217693, 41036264, -31191664, 865436, -30138860, -4659503, -32923072, -76236, -987843, -9146133, -8393440, 4593468, --2793339, -2365453, -8305930, -5319854, -7370164, -4311611, 1201517, -8713415, -8005282, -1222455, -8294656, 4326106, -10657961, 9868224, -5367636, 18210662, -5595806, -15954193, -5829345, 8134668, --4919348, -12069395, 14010183, -2870649, -12643310, -19553376, 3121368, -3031710, 2397666, 4486094, --7479149, -6331319, -17144436, -3688840, -4460861, 1351304, 3287798, 6488622, 5608154, -12985834, -155693, -16462073, -5974300, 1804423, 1871532, 16173236, 27514098, 24012088, 24739548, 31856310, --18404472, 25082072, -49142480, -21498996, 18538152, 4370129, 35813048, 16326244, 30533996, -13353053, -4000225, -26593364, 17969070, 29698088, 27006754, 2680060, 19126026, -47201152, -30757872, 29222958, -8472897, -29438780, -15236396, 3546032, 43193948, 13305272, -17655000, -22260816, 4347581, -6535330, -26543972, 28666222, -2896419, -4723927, 5645198, -8206072, 34345244, 9828496, -8222178, 6869264, --16437914, -9783399, -77154792, -26273388, 13678397, -12130598, -11602854, -450972, -13973139, -14002667, -35268660, 23564338, -17862232, 32142462, 66728760, 13649406, 47511464, 6490233, 9604084, 34812856, -22990960, -18892488, -21387864, -37625524, -23393614, -2564632, -37090264, 13623099, -4522601, -35953172, --25775710, -25757456, -32297618, -19670950, -13019120, -17254494, 5005785, 30474404, 37281388, 19574850, --3950833, -27354110, -3541201, 949725, 2253247, -13385266, -2441689, -9078487, 7227893, 10402948, -1096290, 7585449, -317291, -5413270, 8857833, -9761387, 1145683, 8368207, 18219788, 2388539, --244276, 12209518, 5147519, 32960652, -8369281, -27060978, -1466195, 18036178, 3162170, -7468948, --8287140, -22037478, -20784958, -11877732, -8323110, -3965329, -12511777, -18112950, -19178640, -10628970, --1626719, 2464774, 25210384, 18130130, -6870337, 29255706, 52244520, 36021352, 25398826, 15727633, -9918690, -13072807, -8424578, -13052942, -11729019, -3267933, -941135, 30181272, -3629247, 25592100, --17056388, 6598144, -57732412, 15876883, -9024263, 29219736, -7641284, -34653408, 34242700, -13281113, -4992363, 19360102, 14408542, 31321586, -5119064, 4519916, -6309307, 35752380, -7949985, 6553047, -24813100, -29217588, 24464134, -7525320, 14855218, 23728620, -6749004, 5115306, 3735011, 2209224, --8025684, 10432476, 10101226, -4487704, -14386530, -2855080, -16722992, -5630702, -3402688, 13213467, --7179038, -26423712, -17500382, 27329414, 27628450, -26602490, -22326314, 32775432, 38587060, -15256798, --4089883, 27726162, 894427, 14143327, 20127290, -47261284, -14130442, -3441880, 45324252, 3929895, --3465502, -45048840, 8669928, 17350058, 11312944, 1343788, 11835319, 4383551, 6002217, 56865904, --1971927, 2744484, 33413772, -20403242, 22130356, 3923990, 16647830, 10738492, -26125750, -8806830, -30611306, 20147154, 11599096, -7573101, 10567230, 5119601, -216896, 3833795, 7646653, -4009889, -13231720, -9100499, -2574833, 13604846, 7997229, 2549600, -29268054, 2352568, 14164265, -11176579, -4921496, -26076894, -16561931, 17875118, 8621073, 14653892, 12814572, -10539313, -28471338, -8135742, -9506910, 24390046, 14795089, -3908957, -5615670, -8889509, 20096688, -617938, -4246112, -8507793, -10571525, 4299799, -4588636, -20786032, -13181792, 12797392, 12812424, 9045201, -14327474, -20063402, -9780714, 26007638, 12029667, 1598265, -13335873, -3355980, 5909338, -498753, 285615, 1308891, --3463354, -6214281, 1961190, 6644315, 1867237, 988379, 3077344, 816581, 714038, 1209570, -3242164, 362388, -286689, 2496987, 33086818, -55910812, -3810173, -47302624, -43822088, 11062225, -9314710, 8067023, 1168231, 41771240, 23858544, 53768160, 58893664, -6450504, -28849832, 6162205, --7774428, -5360119, 12829067, 5708012, -4628901, -27067420, -29523606, 32097902, 14921790, -3645354, -5011153, 5221607, 3043521, 5912023, -2935610, -7684770, -43681428, 956704, 25221658, -7373385, --33648384, -11078331, 27795954, -51409148, -17586280, 32489280, 19760070, 38800196, -1032940, 2819109, --35701380, -36151276, -45436996, 38318624, 54368916, -71502616, -35535484, -3754875, 36395552, -28375776, --4532801, 65544960, 26758720, 16615081, 43486008, 31690416, 47730508, -17223892, 47458852, -7234336, --37059664, -54662048, -12716861, 20907364, -43190192, -8500814, 9415105, -9162776, -15144592, 9206799, -8458938, -29800630, 22287122, 10824391, 32342714, -7792145, -31485332, 39361228, 8069170, -35945120, -307627, -8389145, 15075872, -15934329, -16203838, -8407935, -1557999, -557272, -12254079, -15016279, -11750494, -15666430, -10737, -15484431, 8617852, 14634564, 2441689, 21898428, 15193447, -22138946, --8093329, -32212, -19741818, 3287798, -3220689, 7858180, -5091147, 6922951, 19359028, 13959, -3866008, -13509283, 20819854, 13104482, -14447733, -4329864, 14904610, 13817447, -1868848, -21288006, --2580739, -41360000, 32074278, -2589865, 9890236, 12487617, 12095165, 511638, -13862007, 22782654, -5800890, 21994528, -4589173, -46287400, -4097399, 13516262, -15140297, -16871168, -10283762, -15542413, -19022948, -4741107, -16377784, -820876, 17706002, -23523000, 16678432, -8085813, 8931921, -23170812, --5680094, 9555228, -1873680, -2029909, 3002182, 13189308, -2186675, -1996623, -16143708, 8231842, --4335770, 2740189, 5168457, 1836099, 12199318, -17534204, -13353053, 18623516, 16087874, -22048752, -10714870, -17794050, 20811800, -17187922, 7938174, 5466420, -14521284, 32621888, 3300682, -36022428, -16805670, 4506495, -27816892, 15818901, -10120554, 16839494, -24095840, 12571906, -25531970, 11920145, -18421114, -16409996, 9638443, -17444546, 766115, 729071, 1833414, -11416560, 380641, 8935679, --335544, -15733539, 12133819, -9806484, -21201570, 9341554, -9323300, 4791573, 10109816, -7419556, --4404489, 1928440, -1237488, 6597607, -3222299, -2217814, 5929739, 7465727, 2630668, -7226283, --4227859, 7215008, 4406637, -16530792, 15393700, -2043868, -5521181, 2263448, -1017907, 3739843, -8340827, -1875827, 15641197, -4424353, -6545530, -7396471, -2844879, 1628330, -7129109, 2089502, --2298881, -2838437, 2052994, 2641405, -2851858, 70330, -667867, -3092913, 3356517, 2266132, --3375844, 9809168, 20000588, -10193568, -111706192, -201515040, -67036924, -156194000, -154528624, 83120504, -17218524, 115629112, 261337488, 235485536, 193056096, 235827520, 144277616, 32201518, 45320496, -33617784, --175205680, -173144096, -129608688, -168237632, -115404160, -23932632, -77922520, -107443976, -46699180, -13472776, --55904904, -26603028, -1181653, -27955942, -49770080, 10402411, 42821896, -14577119, 59461676, 88911192, -2092723, 17135308, 120197880, 59584620, 636192, 112688128, 92080880, -21654688, 43554728, 105212200, --2103460, 8578123, 148440512, 79753784, 33079838, 179580096, 197829952, 97299800, 187543504, 233316576, -61098056, 31294206, 94934344, -38032472, -113018840, -65927748, -147030688, -260668544, -260181072, -295284896, --393307872, -396089408, -380151840, -388895872, -348046976, -298370304, -239091696, -156690608, -79844512, 38310036, -171604352, 226413488, 276238336, 374259168, 329042272, 294158016, 328540288, 242524448, 113074680, 133015672, -150251376, 55391656, 72312216, 150549872, 73711304, 13664975, 64360620, 57960584, -33617244, -429497, -40072044, -60286308, -76906224, 16911434, -15777025, -25393994, 83626768, 71807560, 6933688, 65237868, -94745368, 16280610, -7783555, 4870493, -98256504, -177180288, -185147456, -236020272, -297016864, -281414848, --251886416, -229454336, -204745392, -150393648, -142765792, -155847184, -104554000, -34390876, 8930311, 38075420, -101494912, 121813328, 137777184, 247362192, 288292160, 266512928, 245753728, 195856416, 123822296, 106148504, -90205584, 55292336, 39353712, 36453536, 14416595, -3268470, -4954245, -10351945, -21728240, -26823682, --22114250, -30316026, -41684268, -39770324, -38636452, -43732968, -44300976, -37630892, -39605504, -37008124, --28435368, -27448062, -29050086, -24123220, -19923816, -19261318, -13589813, -7288560, -5177046, -5042292, --6925098, -7172596, -7733089, -7992934, -6492917, -5804649, -11095511, -17236778, -22021372, -25350508, --27209692, -22492206, -17958332, -17541720, -14499810, -8620536, -6453725, 1058173, 12206297, 18081276, -19878720, 26056492, 29393146, 28156732, 31595390, 36076652, 32991792, 33191508, 37349036, 36407900, -34822520, 35712652, 30326228, 21599928, 15795279, 10532334, 2860985, -3503083, -7540889, -13227962, --18807662, -20139638, -20585242, -21851720, -20174536, -19476066, -21349746, -20744156, -19586124, -18283138, --16120086, -13944685, -11451457, -9069897, -7029788, -4107599, -2130304, -979789, 294742, 1420560, -1697049, 2155000, 2633889, 2876018, 2913062, 3060701, 3073586, 2917894, 2745558, 2698313, -2647311, 2597918, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +606664, 3182034, -341450, 234076, -4857608, -2471217, 653372, 6309844, -4161287, 1273995, +-6667400, 6730751, 391916, 2432025, -835371, 1020592, -1329292, -2384244, -5803038, 2379412, +-5817533, -2747169, -3305514, 3218541, 2547453, 1200443, 2657511, 5061082, 282394, -4692789, +3001645, 447213, -268972, 2451353, -972810, -1733556, -6835441, 1051730, -1993402, 1435593, +2801393, -3730716, -1514513, 3303904, 1005022, 350040, -3503083, 8666170, 5204964, 806380, +4169876, 3418794, 3316789, -8010651, 452582, -819265, -2152852, 1908039, 1278290, -1322850, +-1530082, -472446, -2425583, 2306398, -941135, 4591320, -212064, -1227824, -2240362, -4099010, +-781684, 3079492, -175020, 671626, 3635690, 960999, 4211753, -127238, 605590, -481036, +4531191, 4014721, 4060355, 849867, -42950, 1780801, -129386, 521302, 48855, 164819, +-379031, -1311039, -1114007, -277025, -1270774, 543313, 586263, -567473, 1302449, -570157, +-427349, -316754, 512175, 112206, 1160178, 62277, -20938, 55298, 1516124, 723165, +-156229, -459025, 33823, -259846, 836982, 395137, 1617055, 363998, 2059437, 7208566, +-3514357, 2400350, -2006287, -3139621, -1298691, -2176475, 3928285, -3266323, -6060199, -1553168, +1575716, -5046587, -3061238, 5681705, 9813463, -1664837, 3740380, -3378529, -3566970, -164283, +1018444, -439160, -119722, 3642669, -6251862, 2028298, -478889, -1311039, -5274220, 453119, +103079, 2957085, 865973, -4115116, 5402532, -4319664, 5039608, -571231, 896574, 2055679, +-616865, -2534031, 3934727, 971200, 5264556, 803696, -4685273, 8453569, 6698002, -2343979, +-713501, -1628866, -5900212, -3177739, -992137, -1011465, 2348273, -3234110, 235686, 2318209, +-14496, -88047, -399969, -554588, -3233574, 5113159, 140123, -109522, -1636383, -568546, +-4714801, -4169340, 1356136, 3413962, -453656, -883153, -27380, -33286, -2426657, 4583267, +603443, 1518271, -1214402, 1252520, 762357, -187368, -105227, -198105, 40802, 1088774, +-624381, 690953, 713501, -138513, -206695, 572304, 1203665, 1097901, -804233, 307627, +355945, -600759, -362388, 1724429, -263067, -79994, -1370632, -1235340, -2093797, -762894, +-7494718, 9299141, -1989107, -1057099, 6652368, -2556579, 3445101, 14747307, -1735704, 470836, +-5600101, -4514548, -6984154, 4097399, -2867965, 2018098, 3892851, -4384625, -3744675, -2734284, +344134, 1482301, -5425618, -2105071, 2410014, 2076617, -2135673, -855235, 3358128, -3406446, +563178, -1676111, -594853, -2361158, 2069101, -2163590, 933619, 1986959, -874026, 6219650, +287763, -805843, -4546223, 579284, 6641630, 947577, 2260227, -6019934, -8616241, -3106872, +-7408819, -6533719, -145492, -2800319, -230854, -7932805, 6842420, -7341710, 1111860, 5090073, +-4537633, -7672422, -5454609, -1583232, 5146982, 4578435, 6878927, -3996467, -3511673, -2799782, +-2400350, 4992900, 1305670, -2012192, -1067299, 2396592, 2715493, 854162, 1269163, 1758252, +-340913, -2811056, -430570, -1846836, 747861, 287763, 660888, 609885, 185757, 1240172, +196495, 1439888, 176094, -1006633, 1462973, -1603097, -1034550, 379568, -392990, 1475858, +-826781, -604517, -243203, 238908, -518080, -939524, 957778, -260919, 718333, -784368, +-756988, -937377, -1100585, -667331, -996969, 1552094, -1285806, 8017094, 829466, -3230352, +451508, -2675228, -597537, 5607617, 9413495, -3226057, -3296924, -8551280, 1079647, 2137283, +4859756, -3230889, 5240934, 820876, 8071854, -6487548, 1037235, -12242804, -1348083, 1450625, +-2990371, -2763275, -1081258, 4495757, -3693135, -6443525, 1823751, -9448391, -2057826, -4546223, +2080375, -1018981, 3191161, 404801, -7193534, -7784628, 212601, 4122095, 7691213, -1544041, +-3130494, 6425271, -7104950, -3881577, 3428458, 3045132, 5090610, -4876936, 180926, 1950452, +-3065533, -1051193, 3006477, -4429185, 5745593, -2518462, -1068910, -6150393, -5096516, 2443300, +-12885, 96637, -867047, -3782793, 3558381, -2385318, 4425427, -96637, -5855114, -6163278, +2246805, -3110093, 1096827, -8765491, -8351027, -1353989, 7859254, 33823, -1621350, 369367, +1132261, 817118, -361314, 1232119, -4099010, 741956, 690416, 1219771, 1576790, 1728188, +921807, -2321967, 165893, 2001992, 933082, 521302, -1147293, -1429150, 323196, -29528, +-474057, 1876364, -41339, -159988, -1324461, 2347200, 1954210, -144955, 166967, -1198296, +679142, 711354, 324270, 76773, 775778, -1087701, -565325, 4747013, -13127031, 2973728, +-5735392, 4745402, 5432060, -6237367, -11515881, 1551557, -1588601, 7200513, -4419522, 10453950, +-4486094, 6896644, -8662949, -3249143, 3536369, 5112085, 1391033, -97711, -5336497, -754841, +-4211216, -5253819, 2821257, -4493073, 1676111, 955093, 2078764, -2581812, 4835060, -981400, +4153770, -1013612, -8119099, -1408749, -2636036, 751082, 7993471, 443455, -749472, -483184, +-3319473, 2721399, -3132642, 4186519, 4543539, 1606318, 1713692, 8046621, -2063732, -1530082, +-6544457, 4556961, 4022237, 793495, 995896, 789200, 286152, 2309619, 4888747, 3237869, +1831804, 1736241, -1311039, 6380711, 2146947, -1393180, -5004174, 2451353, -1522029, 9346386, +5291937, 1124745, -4388920, -1683627, 7122130, -2849711, 892279, 4093641, -2359548, -2951716, +-5740224, 658741, 2036888, -514859, 2694555, -2293513, -879395, -1802276, 1966021, -238371, +-674847, -2797098, 615254, 634045, 1600412, 1867774, -692564, 252866, 2098629, -232465, +2130841, -220117, 620086, 3120831, 626528, 3208878, -281857, -787590, -237834, -358093, +78920, 159988, -2504503, 844498, 1951526, 133144, 769873, -671089, -16847010, -9156333, +3373697, -3299609, 6764037, 6745246, 10189810, 4206921, 4117800, 2502355, -12279311, -2761127, +-1705102, 1085016, -1236951, 3802120, 2705293, -4734665, -3774740, 3133716, 5967857, 7518877, +6491843, 8542690, -4700305, -4705137, -6230924, 6580964, -3825742, 5433134, -1388348, -307090, +-5835250, -3515968, -3340948, 4931160, 6101001, 1052804, 6099391, 8713952, -3479461, 2183454, +10250476, -5185636, 3323231, 3451006, 378494, 7683697, 9877888, 7486128, 17136382, 3154654, +-2439005, -3204583, -2943663, -217433, 3012383, 5165772, -952946, -1712081, -1817845, -4627291, +1925219, 2448668, 4438849, -10735808, -1472100, 2670933, 7096360, 4914517, -9142912, -6808597, +1724966, 1672353, 7405598, -6561100, 410169, -697932, 783295, -9320616, -2512556, -3236795, +-2253784, -3854733, -1603097, 251792, 3563749, -48318, 201327, 1348083, 1705639, -3587372, +-558883, 222801, 16643, 1224066, -1220845, -2360085, -1568737, -1812476, 2526515, -2469606, +-1165010, -2836289, 704912, -642635, 1799054, -2600603, 1078574, -910533, 1060320, 912144, +187368, 2170569, -2097018, 1046898, 1225676, 324270, 2589329, 4055523, 8126078, -1059783, +1654099, 6947647, 10201621, 5743445, -11275900, 31675, -11996381, -8507256, -5157719, -1000727, +-7344394, 8753680, 3230889, 5180268, -14922327, -1073205, 9745818, 4958540, -4385699, -6272263, +-3838627, 3801583, -11419244, -667331, -7342247, 11225971, -1489280, -3284039, 1186485, -402116, +-1935420, 1981054, -2977486, 5213017, 3697430, 7493644, -566399, 382252, 11556146, -3660386, +7731478, -1257889, -1372242, 20376398, 2415919, -2185065, -4613332, -15762530, 1649804, -16154983, +-2731062, 17009682, -4812511, -3307125, -11833172, -3467112, 408022, -6354941, 3404299, -618475, +-8676371, 9204115, 3280818, 2996277, 2520072, -6411313, 7018514, -10988137, 3164317, 4218732, +449898, -1456531, -4460861, -3495567, -4543539, -1454920, 3635153, 4693863, -1198833, -3843459, +-2288681, 5232344, 2134062, 10017474, -190052, 753767, 4064650, -418222, -1860258, -1389959, +-1280974, -1108102, -1667521, 1174674, -1902134, -75162, 2027761, 747324, 2067490, 2008434, +1599875, 177167, 3008088, 2183454, 1288490, 924492, 899796, -3164854, -2699387, 2288144, +310311, -1954747, 330176, -2222646, 624381, 2524904, 906775, -434865, 913217, 2163053, +469225, -1768990, 854699, 6581501, -13445395, 5712307, -4782446, -6828461, -6511708, 5026723, +6440841, 3729642, 11212012, 8255464, 1622424, 3332895, -8894340, 1732482, 3919695, 8681740, +1633161, -4253092, 3135326, 4024384, -7977902, 1097364, -8181376, 6280316, 5719823, 7378217, +-7286949, 4359929, 7907572, -3658775, 1997697, 10514080, -382789, -6601365, -5267778, 2300492, +-1807108, -6707665, -2793876, 70330, 1494112, 3557844, -4641786, 7323456, 4428112, -1740536, +8848170, -1152125, 3320547, 11619497, -12461311, 22841710, -10593000, 3095598, 6847789, -2440615, +-1331977, 2847563, 15451682, -896038, -2201171, -512712, -3736085, 7484518, 8398272, -2755222, +3562675, 2955474, 2703145, 5125507, 6603512, 500901, 7145752, 1504312, -6233072, -9562208, +2223719, 890669, 4314295, 1816771, 14303852, -1494112, 7968238, 6419903, -4496294, -8223252, +-1006096, 883690, 2075543, -2263985, 3647501, 1695438, -3569118, -1007170, -3408594, -1279900, +2052458, -1122597, 3051038, -824097, 1067836, 753230, -1478543, 1599875, 1837172, -2894808, +1877975, 1238024, 560493, 638876, -136365, 515933, 3398930, 1032940, -1251983, 585189, +911607, 1664837, 2083596, -683974, -2405719, -720481, -2104534, -1590212, 2512556, 2302639, +2961917, 7598334, 10007274, 6150393, -10654203, 20393578, -6428493, 3860102, -14981383, 5942088, +-13251048, 10246181, 1049583, -2855617, -7504382, 9686762, 1283658, 6177774, 6373732, 3269544, +-11165841, 5694590, -6765111, -1243930, 5015448, 5465883, 1257352, -2079301, -11190000, 1552631, +10275172, 1146219, 6645388, 7448547, -11685532, 6424198, -5951214, -5859409, 8590471, 9535901, +4935455, 5366025, 1466731, 5144297, -12046310, -5364951, -3862249, 346282, 12779675, 6146098, +5048734, -944893, 5603322, -285078, 14075682, 5207648, 5321465, 2159295, -816044, -20859582, +7706245, 4936528, -1961190, -1473711, -15610596, 148176, -5987185, 3728032, 13536126, -2274722, +-7798587, 15825881, -742493, 8939438, -5307506, 57982, -9905268, -910533, 155693, -17095044, +-5120138, -2946885, -7724499, -3564286, -1547799, 1080184, 8531416, 635655, -238908, -1652489, +-4452808, -708670, 758062, -1622961, 575526, 212601, 2261837, -4008815, -1612223, -534723, +-3725884, 202937, -2426657, -1508607, -1240172, -2982855, -1566589, 3500935, -1199907, 625455, +-985695, 3795141, -199716, 1720671, -2492155, -5549635, -1712618, -240518, 2371896, 1002875, +3390340, -226560, -1109712, 2905009, -3567507, 4238596, -115427, 13352516, -11515881, 1670742, +4852776, 6036577, -19982336, 13251048, 3699041, -14209362, -9088151, 7742216, 17794050, -6276021, +-3240553, -12303471, 25478282, 9891310, 1581085, 4237522, -13386876, -8672613, -567473, 1104344, +13214004, 2859911, 10186052, 11449309, -504122, 703838, 7975755, -2109903, -8515310, -8145943, +-2074469, 11335492, -6131066, 14341970, -6658810, 21064130, 9367861, 16988206, -4605279, 2743410, +13635984, -10622528, 6355478, 6149320, 5783174, -6085432, 7261179, 1753420, 2314987, 6195491, +12968117, 10900627, -11066520, -2592550, 5697811, -10797548, -6857989, -2854006, -22090628, 5908802, +-10919954, -6849399, 2130304, -2740726, 7561827, 14078366, 9025337, 5691369, -7603703, -1798518, +-461709, -14947023, 2732673, 1269163, 18476950, 3976066, 4157528, -4003983, 14276471, -127775, +-406948, 44023, -4641786, -2122251, 601832, -850404, -5029407, 467078, -1290638, 913217, +-5997922, -6508486, -2132451, 5196374, -854699, 2027225, 1975685, 1610613, -416612, -1370095, +-1785633, -3600256, -6008659, 2079301, 331249, -1461900, -7098507, 5258114, 3593277, 2045478, +-566399, 462783, -2399276, 1807644, -1252520, -2318746, 864899, 3063386, 1872069, -1850594, +-421981, -730681, 2279554, -15912317, -23484882, 12710956, -9561134, 10422812, 3410741, 5047661, +6172405, -15775415, -28704340, 2546379, 4154844, 16180216, -15946677, -17482664, 15093589, -6023692, +6866579, -3294240, 3595425, 2397129, 3980898, -7960722, 3848291, -1144609, -2493229, 9975598, +3724811, -1430761, -12950400, -1764695, -370441, -2382633, -617938, -7005629, -17178258, -7632157, +12610024, -5368172, 6218039, -9735617, 7215008, 3720516, -129386, -4901095, -21307332, 11781632, +11433740, 14703821, -10281615, -4355097, 19981798, 17663590, 8159901, 3799972, 11293080, 4158065, +10147397, -5443334, 8814347, -16843788, -1070521, 4704600, -4386236, 20053740, 781684, 10967736, +-6537477, -10771778, 23172960, -386010, 9198746, -3061775, 328028, -27249956, -2294050, 5802501, +-10517301, 12845173, 9738301, 2404108, -5576478, -20755966, -442919, -4216584, 5174362, 6313602, +1053878, -2522220, 4884452, 222801, 2399813, -1312649, -6279242, -2290291, -5733782, 10051297, +3082713, -198105, -208843, 1263257, 9279814, -1598802, -2223183, 1439351, -727997, 123480, +4162897, 2277407, 3741990, -2673617, -350577, -4286378, 834834, 75699, 3918621, 3923990, +-4342749, 7012608, 7122130, -5553393, 433792, 921271, -805843, -11775190, -15426449, -4479114, +-3613678, -26416196, -24779814, -6492380, 120259, 18651432, 15171972, 15015743, -5807333, -2414309, +-3759170, 16033113, 6889128, -6727530, -1190243, -5356361, 11595875, 9000104, -6694244, -9374303, +-8603893, -17573396, 7339026, 489626, 497679, 3835406, -2628520, 6663642, 24712704, -14068165, +7450695, 1474248, -9526237, -5455682, -11310260, 4287451, -5027259, -5683316, 12795781, 1570884, +-4269198, 12919798, -1758252, -5705864, 4495757, 9425843, -5190468, 10129680, 18196166, 17549236, +-11997454, -168577, 4383551, 9888625, -15193447, -3167539, -4196720, 18927920, 8065949, -2043331, +-11514807, -12779675, -11361262, 17093432, 14156212, -27087284, -22599044, -17140678, -12072079, 4083440, +-10888279, 6607271, 1802813, 2683818, -21791054, -6988449, 19696184, 15189689, -6602439, -13987098, +13605383, 7126425, -1640678, 221191, -1739462, -3320547, 7730941, -6943352, 1689533, 1182727, +-292595, -5019743, -9154186, 1760937, 7431367, -736587, 812823, -3204583, 7057168, 7721815, +754841, -1033477, 2600066, -286152, 3118683, 3360275, 4860829, -6545530, -636729, 2382633, +-8053, -4067334, 1080184, 8182450, 7617662, -2918967, 5835250, -8961986, 2232846, -2901787, +-2493229, -3599183, -5601711, 2080912, 21873194, 17247514, 10717017, 1695975, -14231911, -7374459, +-2170569, 5906117, 9100499, -12587475, 3317325, 823560, -10752987, -5064304, 8721468, -6372121, +6937446, 3011846, 8152922, -10031970, -13959, -22449258, 3396246, -28404766, 11726334, 11602854, +-11025181, 13095892, 15592342, 495532, 4453881, -18301392, 10836202, 1116692, -7594039, 9978283, +-2330020, 179315, -161598, 1254667, 19178640, -2128156, -17180, 23549306, -224949, -10824928, +-31052614, -25511032, 28399934, 17710834, 7005092, 7176891, -11868605, -23907936, -11751031, 3820910, +-9185324, 18748606, -994285, 2516851, 20205136, -4116726, -6265284, -4512400, -12713640, -21579526, +-17149268, 48868676, -23711440, -10711648, 14021458, -24707336, -17805860, 17744658, 24852828, 8212515, +-4511327, 29261612, 14130442, -23488102, -8149164, -13103945, -12800076, 26607322, 1933272, -17674328, +-12222403, -13749264, 3889630, -2811056, 8115341, -165893, -4076461, -6430640, 608275, 7390565, +-3948149, 3434363, -3845606, 3699578, 3346317, 10280541, -3978750, -1457605, 8803072, 737124, +4505958, 4615479, 6287296, 1214939, -3655017, -2022930, -926102, -1432909, 3861713, -1153199, +-4094715, 8298951, 8553964, -4669703, 2196339, -5322002, 1962263, 2046552, 5288179, -1294933, +-500901, -2607045, 2531883, 5944772, -20065550, -14812268, -10340134, -18363670, -1665374, 17376364, +-1271847, 3565360, 8546985, 5670431, -14784888, -7162395, -12220793, -6547141, 15646566, -4793721, +-1719598, -2157147, 9482751, 9458592, 28247464, 4492536, 20790326, -1225139, 7008313, -11340324, +-8544837, 7445326, -14430016, -16039018, 513785, 5041755, -8238821, 6572911, -9643812, 2930778, +-25355876, 14139569, 7905424, 11563663, 1430224, -10313290, -21246666, -7581691, -1905355, 17498770, +-13347148, -7901129, 4878546, 40029096, -11078331, 40693204, -24980604, 9852118, -9218610, 17853106, +-7095823, 30873298, -29057602, 44217764, -4195110, 9088151, 19128710, -32804960, 29229936, -35038880, +23630910, -57089780, 30933428, -29351806, 25990458, -38290172, 33642480, 1125281, 21802864, 9434433, +-17863306, 15518254, -12794708, 38670276, -17630840, 6358699, -23091354, 6240588, -1558536, 4230006, +-8266739, 10726681, -10612327, 7595650, -3768297, 2440615, 3243237, 3406446, 4467840, -2644089, +-6110665, -4960687, -5855651, -13434658, 7741679, 1974611, -9237401, -4304631, -2800856, 5963025, +-10281078, 9750650, -7878044, 1932198, -4230006, 4734665, 1573569, -107911, 14814953, -13153874, +8011188, -12709882, 19110456, -3655017, 18670222, -7377680, 5822902, 8425652, 2814277, 2894271, +-28454, 8929237, -13362180, 14619532, -10191957, 9615358, -2174327, 57445, -3871376, 134755, +790811, -3788161, 1775432, 3494493, 1713155, -17594334, -15943455, 18514530, 31947040, -26500486, +40503688, -2368138, -27917, -1571958, 7014219, -12072616, -8883603, -18079128, -4063576, 566936, +16643, -106837, 15905875, 2715493, 17440252, 17083770, -10897943, 6279779, 36400384, 11890080, +7777112, 5453535, -31619550, 1599875, -5146445, -3969624, -29001230, -6138582, 16627429, 4694936, +5512054, 8366060, 21072720, 5495948, -6535330, -2170569, -1844152, 7905424, -14384919, -8843875, +21758842, 13512504, 10117869, 16832514, 12412455, -7336878, -3703873, -25127706, -11064373, 10215580, +8033737, 18966576, -13700946, -6812355, -4825396, 13943074, 8132521, 12517682, 5138392, -9912785, +-9231495, 31367220, -9624485, -30476552, 7015829, 22050898, 15079093, -397821, -2667712, 2727304, +5019743, 3122441, 27986006, -33738580, -28847684, 3357591, 11348914, -14515916, -7526930, 2464774, +-11462194, 5424544, -5617817, -1429687, 2981244, -2179696, -7711077, 296890, 6351720, -4094178, +35970, -11158862, -1981591, -9816148, 7201050, -3112241, 6602439, -3989488, 4116726, 1735704, +5568962, 8762270, -8895951, -3966402, -2673080, 6912213, -4327717, -8002598, -14717779, -36507, +-5895380, -2179696, 2209761, 1484985, 394600, 2900177, 4789426, -930397, 14799384, 1847373, +-1210644, -11454678, 1963874, -2094333, -668941, 2820720, -12044162, -6117107, -12439836, -64132988, +17700098, -7830799, -4088809, 15709380, -10886131, 16858284, -2290291, -27804008, -5084705, 2681133, +9736691, 12388296, 2870112, -19710678, 19470160, -7665443, -1789928, -12121471, -5458904, 10428181, +-2105608, 9300215, 15697032, -3659312, -20308216, 4480725, 22253300, -20755966, 7612830, 17265768, +-3159485, -13736379, -25604984, -17288318, 18038326, 46244448, -14259828, -18477486, 52114060, -3427384, +-7518341, 37495600, 21831318, 18620830, 15052250, 6162205, -11040750, 19039590, 17741974, 12212203, +5653788, -34514896, 21537114, 19051938, -36427764, -21079700, -13093745, -10217190, -10041097, 39726300, +19835770, -22739168, 21235928, -8427263, -21254182, 9239548, 10805601, -9402757, -9010305, -33350422, +3745212, 5681168, 24380918, 11668889, 3016141, 20376398, -16203301, 42165304, -44836236, -52312164, +36922760, -22582938, -1400159, 25888990, -16319265, -11241003, -3228742, -3091840, 3221762, 15881715, +7803419, -13018046, -796180, 6181532, -1553704, 8822937, -347355, 4876399, 956704, -6910066, +3709778, 14097156, 9714679, -617938, 1891933, 9427453, -1511829, -1122597, 2396592, 21837762, +11213623, -3505767, 4780836, -19362786, -840740, 5115306, -8910983, -12001212, 11337103, -5184026, +-325881, 11656541, -10100689, 4491462, -1716376, -2881923, 14467060, -8159364, -1939178, -16961362, +-69671888, 21549462, 39443368, -24302536, -4992900, -18877992, 40577240, 27322434, 17179870, -3136400, +-14079440, 3002719, 16400869, 7693360, -6966437, -1454383, 22404160, -1373853, -8151311, -29822106, +-14111652, 25334938, 14744086, -15823196, 12822625, -11430519, -3585761, 7669201, 7171522, -6846715, +4653597, -26128970, 7573101, 35555888, -4443144, -6810208, -34783868, -20844550, 16962436, -27385248, +-14874545, 6388227, 7047505, -8400419, 22892176, 21654152, -22140556, 8388071, 12425340, 35831300, +32785096, -5073967, 10761577, -770947, 37474664, 16367047, 15229417, 35561792, -15780247, -23062900, +-11814381, -29552060, 25062208, 11901891, 12270722, 6600291, 42492796, -27993524, -6509023, 18232136, +-9970767, 20222316, -920734, 2463164, 9412958, -24426552, -37155224, 4799089, 7217693, 41036264, +31191664, 865436, -30138860, -4659503, -32923072, -76236, -987843, -9146133, -8393440, 4593468, +-2793339, -2365453, -8305930, -5319854, -7370164, -4311611, 1201517, -8713415, -8005282, -1222455, +8294656, 4326106, -10657961, 9868224, -5367636, 18210662, -5595806, -15954193, -5829345, 8134668, +-4919348, -12069395, 14010183, -2870649, -12643310, -19553376, 3121368, -3031710, 2397666, 4486094, +-7479149, -6331319, -17144436, -3688840, -4460861, 1351304, 3287798, 6488622, 5608154, -12985834, +155693, -16462073, -5974300, 1804423, 1871532, 16173236, 27514098, 24012088, 24739548, 31856310, +-18404472, 25082072, -49142480, -21498996, 18538152, 4370129, 35813048, 16326244, 30533996, -13353053, +4000225, -26593364, 17969070, 29698088, 27006754, 2680060, 19126026, -47201152, -30757872, 29222958, +8472897, -29438780, -15236396, 3546032, 43193948, 13305272, -17655000, -22260816, 4347581, -6535330, +26543972, 28666222, -2896419, -4723927, 5645198, -8206072, 34345244, 9828496, -8222178, 6869264, +-16437914, -9783399, -77154792, -26273388, 13678397, -12130598, -11602854, -450972, -13973139, -14002667, +35268660, 23564338, -17862232, 32142462, 66728760, 13649406, 47511464, 6490233, 9604084, 34812856, +22990960, -18892488, -21387864, -37625524, -23393614, -2564632, -37090264, 13623099, -4522601, -35953172, +-25775710, -25757456, -32297618, -19670950, -13019120, -17254494, 5005785, 30474404, 37281388, 19574850, +-3950833, -27354110, -3541201, 949725, 2253247, -13385266, -2441689, -9078487, 7227893, 10402948, +1096290, 7585449, -317291, -5413270, 8857833, -9761387, 1145683, 8368207, 18219788, 2388539, +-244276, 12209518, 5147519, 32960652, -8369281, -27060978, -1466195, 18036178, 3162170, -7468948, +-8287140, -22037478, -20784958, -11877732, -8323110, -3965329, -12511777, -18112950, -19178640, -10628970, +-1626719, 2464774, 25210384, 18130130, -6870337, 29255706, 52244520, 36021352, 25398826, 15727633, +9918690, -13072807, -8424578, -13052942, -11729019, -3267933, -941135, 30181272, -3629247, 25592100, +-17056388, 6598144, -57732412, 15876883, -9024263, 29219736, -7641284, -34653408, 34242700, -13281113, +4992363, 19360102, 14408542, 31321586, -5119064, 4519916, -6309307, 35752380, -7949985, 6553047, +24813100, -29217588, 24464134, -7525320, 14855218, 23728620, -6749004, 5115306, 3735011, 2209224, +-8025684, 10432476, 10101226, -4487704, -14386530, -2855080, -16722992, -5630702, -3402688, 13213467, +-7179038, -26423712, -17500382, 27329414, 27628450, -26602490, -22326314, 32775432, 38587060, -15256798, +-4089883, 27726162, 894427, 14143327, 20127290, -47261284, -14130442, -3441880, 45324252, 3929895, +-3465502, -45048840, 8669928, 17350058, 11312944, 1343788, 11835319, 4383551, 6002217, 56865904, +-1971927, 2744484, 33413772, -20403242, 22130356, 3923990, 16647830, 10738492, -26125750, -8806830, +30611306, 20147154, 11599096, -7573101, 10567230, 5119601, -216896, 3833795, 7646653, -4009889, +13231720, -9100499, -2574833, 13604846, 7997229, 2549600, -29268054, 2352568, 14164265, -11176579, +4921496, -26076894, -16561931, 17875118, 8621073, 14653892, 12814572, -10539313, -28471338, -8135742, +9506910, 24390046, 14795089, -3908957, -5615670, -8889509, 20096688, -617938, -4246112, -8507793, +10571525, 4299799, -4588636, -20786032, -13181792, 12797392, 12812424, 9045201, -14327474, -20063402, +9780714, 26007638, 12029667, 1598265, -13335873, -3355980, 5909338, -498753, 285615, 1308891, +-3463354, -6214281, 1961190, 6644315, 1867237, 988379, 3077344, 816581, 714038, 1209570, +3242164, 362388, -286689, 2496987, 33086818, -55910812, -3810173, -47302624, -43822088, 11062225, +9314710, 8067023, 1168231, 41771240, 23858544, 53768160, 58893664, -6450504, -28849832, 6162205, +-7774428, -5360119, 12829067, 5708012, -4628901, -27067420, -29523606, 32097902, 14921790, -3645354, +5011153, 5221607, 3043521, 5912023, -2935610, -7684770, -43681428, 956704, 25221658, -7373385, +-33648384, -11078331, 27795954, -51409148, -17586280, 32489280, 19760070, 38800196, -1032940, 2819109, +-35701380, -36151276, -45436996, 38318624, 54368916, -71502616, -35535484, -3754875, 36395552, -28375776, +-4532801, 65544960, 26758720, 16615081, 43486008, 31690416, 47730508, -17223892, 47458852, -7234336, +-37059664, -54662048, -12716861, 20907364, -43190192, -8500814, 9415105, -9162776, -15144592, 9206799, +8458938, -29800630, 22287122, 10824391, 32342714, -7792145, -31485332, 39361228, 8069170, -35945120, +307627, -8389145, 15075872, -15934329, -16203838, -8407935, -1557999, -557272, -12254079, -15016279, +11750494, -15666430, -10737, -15484431, 8617852, 14634564, 2441689, 21898428, 15193447, -22138946, +-8093329, -32212, -19741818, 3287798, -3220689, 7858180, -5091147, 6922951, 19359028, 13959, +3866008, -13509283, 20819854, 13104482, -14447733, -4329864, 14904610, 13817447, -1868848, -21288006, +-2580739, -41360000, 32074278, -2589865, 9890236, 12487617, 12095165, 511638, -13862007, 22782654, +5800890, 21994528, -4589173, -46287400, -4097399, 13516262, -15140297, -16871168, -10283762, -15542413, +19022948, -4741107, -16377784, -820876, 17706002, -23523000, 16678432, -8085813, 8931921, -23170812, +-5680094, 9555228, -1873680, -2029909, 3002182, 13189308, -2186675, -1996623, -16143708, 8231842, +-4335770, 2740189, 5168457, 1836099, 12199318, -17534204, -13353053, 18623516, 16087874, -22048752, +10714870, -17794050, 20811800, -17187922, 7938174, 5466420, -14521284, 32621888, 3300682, -36022428, +16805670, 4506495, -27816892, 15818901, -10120554, 16839494, -24095840, 12571906, -25531970, 11920145, +18421114, -16409996, 9638443, -17444546, 766115, 729071, 1833414, -11416560, 380641, 8935679, +-335544, -15733539, 12133819, -9806484, -21201570, 9341554, -9323300, 4791573, 10109816, -7419556, +-4404489, 1928440, -1237488, 6597607, -3222299, -2217814, 5929739, 7465727, 2630668, -7226283, +-4227859, 7215008, 4406637, -16530792, 15393700, -2043868, -5521181, 2263448, -1017907, 3739843, +8340827, -1875827, 15641197, -4424353, -6545530, -7396471, -2844879, 1628330, -7129109, 2089502, +-2298881, -2838437, 2052994, 2641405, -2851858, 70330, -667867, -3092913, 3356517, 2266132, +-3375844, 9809168, 20000588, -10193568, -111706192, -201515040, -67036924, -156194000, -154528624, 83120504, +17218524, 115629112, 261337488, 235485536, 193056096, 235827520, 144277616, 32201518, 45320496, -33617784, +-175205680, -173144096, -129608688, -168237632, -115404160, -23932632, -77922520, -107443976, -46699180, -13472776, +-55904904, -26603028, -1181653, -27955942, -49770080, 10402411, 42821896, -14577119, 59461676, 88911192, +2092723, 17135308, 120197880, 59584620, 636192, 112688128, 92080880, -21654688, 43554728, 105212200, +-2103460, 8578123, 148440512, 79753784, 33079838, 179580096, 197829952, 97299800, 187543504, 233316576, +61098056, 31294206, 94934344, -38032472, -113018840, -65927748, -147030688, -260668544, -260181072, -295284896, +-393307872, -396089408, -380151840, -388895872, -348046976, -298370304, -239091696, -156690608, -79844512, 38310036, +171604352, 226413488, 276238336, 374259168, 329042272, 294158016, 328540288, 242524448, 113074680, 133015672, +150251376, 55391656, 72312216, 150549872, 73711304, 13664975, 64360620, 57960584, -33617244, -429497, +40072044, -60286308, -76906224, 16911434, -15777025, -25393994, 83626768, 71807560, 6933688, 65237868, +94745368, 16280610, -7783555, 4870493, -98256504, -177180288, -185147456, -236020272, -297016864, -281414848, +-251886416, -229454336, -204745392, -150393648, -142765792, -155847184, -104554000, -34390876, 8930311, 38075420, +101494912, 121813328, 137777184, 247362192, 288292160, 266512928, 245753728, 195856416, 123822296, 106148504, +90205584, 55292336, 39353712, 36453536, 14416595, -3268470, -4954245, -10351945, -21728240, -26823682, +-22114250, -30316026, -41684268, -39770324, -38636452, -43732968, -44300976, -37630892, -39605504, -37008124, +-28435368, -27448062, -29050086, -24123220, -19923816, -19261318, -13589813, -7288560, -5177046, -5042292, +-6925098, -7172596, -7733089, -7992934, -6492917, -5804649, -11095511, -17236778, -22021372, -25350508, +-27209692, -22492206, -17958332, -17541720, -14499810, -8620536, -6453725, 1058173, 12206297, 18081276, +19878720, 26056492, 29393146, 28156732, 31595390, 36076652, 32991792, 33191508, 37349036, 36407900, +34822520, 35712652, 30326228, 21599928, 15795279, 10532334, 2860985, -3503083, -7540889, -13227962, +-18807662, -20139638, -20585242, -21851720, -20174536, -19476066, -21349746, -20744156, -19586124, -18283138, +-16120086, -13944685, -11451457, -9069897, -7029788, -4107599, -2130304, -979789, 294742, 1420560, +1697049, 2155000, 2633889, 2876018, 2913062, 3060701, 3073586, 2917894, 2745558, 2698313, +2647311, 2597918, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -8483634, -933082, 5575942, 1903744, 3631932, -5309117, -2911988, 236223, -944893, 1418413, 4414690, --10631655, -79994, 3491272, 2092723, 3217468, -3083250, -4298189, 4639102, -80531, 1288490, -2893734, 3837017, 1415729, 795106, 3455838, -518080, -1108638, -2995203, 1607928, -848793, --487479, -1559610, 1986422, 5048197, 20401, -1059246, 2379412, -3243774, -4839892, -2684355, --980863, -3148748, 282931, -735513, 2033130, -1968706, 565325, -3937948, -376883, -3240553, --153008, -1489817, -1273995, 1633698, -1861868, -200790, 2660732, -1409286, 3172907, 3830574, -281857, 5181341, -2653216, -189515, 2486786, -911070, 1679332, 2347737, 1279363, -2745021, -1080184, 1236951, 883690, 153008, -2279017, 3016678, -812286, 1433982, -492848, -642635, -197032, -3169149, -253940, -2465848, -1136019, -123480, -420370, -99858, -236760, -1333587, -1575716, 166430, 447213, 92879, 883690, -551903, 1115081, -99321, 480499, -199179, --471910, 605054, 70867, -204011, -3221, 861141, 199716, -173409, 554588, 264677, --101469, 14155675, -3929895, 1413044, -3022583, -197569, -1232656, 1678259, 1146756, 4889284, -1537061, 899796, 1923072, -1116155, -9695352, -9273371, -2864743, 1300301, 2904472, -2312840, -580894, -2978560, -1032940, 206158, 1700807, -4083977, -4457103, -1278827, -239981, 2483028, -846645, -959388, -3204583, 626528, -1744294, 143881, 2323577, -3246995, 1631551, 2983392, --2243047, -6004365, -1534377, 2253247, -314069, 1839320, -249645, 1599339, -235149, 1752347, -377420, -5600638, 1159104, 2363843, -846645, 1618666, 311922, -275952, -1073205, 108448, --3282966, -245350, -867047, -4152160, -661962, -80531, 3780645, -3641596, 6188511, 7195144, -5668820, -2384781, -1093606, -1245541, 2772402, -982474, -1494649, 1756642, -3998078, -3624953, -497142, 3314641, -54224, -1598265, -3570192, -2081985, -2710661, -1400159, -2497524, 1006096, --1476395, -352187, -1551557, -783832, 136902, 905701, 120796, 930397, -539555, 122943, -741419, 420907, 595390, 612033, 374199, -611496, 743566, -13307956, -85899, -2052458, -919660, -460635, -6888591, -1319629, -1452773, 2151242, 3350611, -4615479, 3686693, -1177895, -2541010, 2545305, -1384053, 5536213, 339839, 240518, -959925, 956704, -1373316, 1016297, --1542967, 199716, -3616899, 381715, 3994857, -8053, 1685238, 4195110, -4129074, -4365298, -1823214, -1988570, 3368328, -3412352, -1021665, -7123740, -5478231, -4765266, 2080912, 600222, -2535105, -2597382, -1833414, -551366, 4470524, -4953171, 2046552, 846109, 374736, 2487860, --1715839, -2279554, -2964064, 1797981, 974421, -4387309, -4806606, -5618891, -154082, -1222992, -1833951, -275415, -1047972, 503048, 763430, 2483028, -6682432, 805306, 3821984, 5631239, -5818070, 4774393, -834297, -3563749, 5216775, 1563905, 1022202, -2625299, 1516124, 1047972, -171799, -672162, -1526324, -256087, 1793686, -1404991, -2261837, -960462, -965294, 352724, --176094, -585726, 1566589, 91268, 1996623, -217433, 585726, 1292248, 1261110, 936303, -719944, -825707, -859530, -320512, 802085, -190052, 783832, -577136, 1359357, 1087164, --1151051, 30602, 110595, -1949915, 1461363, -7878044, 4720169, -4225174, 5645198, 7381975, -4563403, -186831, 2117956, 405338, 6027987, -3449396, -3462281, 1653562, -1036698, 2407866, -4616016, -6847252, 2042257, 5949604, 2753074, -542777, -151934, 628676, -2916283, -149787, --2760590, -3814468, -1069984, 5630166, -2254321, 2558727, -2090039, -3610994, 6768332, -6096169, -4510790, 4936528, 897111, 3089692, -4537633, -1322850, -1858110, -1510218, 3102040, 858457, --4872104, 666794, -562641, 794032, -1130650, 1607392, 1548873, 5610838, -6088653, 2771328, -2175938, -717260, 2160906, 518080, 3420405, 3180423, 1987496, -2050310, 2704756, 4838281, --226023, 2786897, -2198487, 5756867, 5961415, 6536940, -2014877, -4779225, 1402844, -768799, -2272575, 1593970, -127238, -472983, -6768869, -1865090, -1648194, -649077, -1468879, -2122788, -2188286, 755377, 621697, 2561411, -260919, 2590939, 1612760, 754304, -481573, 342524, --695785, -1264331, 702227, 76773, 1214402, -523449, 215285, -215822, -988379, 1350230, --157840, -1399623, 416612, 1067836, 38118, -1784022, 309775, -896038, 2170569, 1532230, -1554778, -319438, 409633, 1163399, 30602, 533113, 1062468, 531502, 10890426, -1012002, --3415036, 10357314, -4105452, 4646081, -2501282, -9918690, 1760400, -2860985, 307627, 11866458, --4604205, -5633387, 452045, 6233608, -10048613, -3737695, 7534447, -2658585, 2433636, 3554622, --2689723, 3234110, -2102387, -3488587, 700617, -988916, -1220308, -1296543, 4202089, -3374771, -8181913, 2030983, 179315, -4699231, -1387811, 4992900, -5734855, 1213328, 1993402, -904091, --7997229, 5466420, 1462436, 1338419, 717260, -1111323, 4138738, -2460480, 5656472, 3206730, --2186138, -9762461, 4350265, 2608656, -231391, -2770791, 2367601, 6288906, 6407555, -708670, -3796214, -5758478, 4192962, -1025960, -1970316, 2480881, 4962298, -3482145, 4912906, 869731, --2054068, -1737314, 4012036, -3352759, 9504226, -4889821, 3945464, -3288334, 871878, -2939368, -3815542, -3412352, 190052, 2153926, -636192, 405338, -2908767, -1008780, -380105, 6442, -824097, -1284195, 1671816, -173946, -1122597, 1667521, -3337727, -3404299, -1911261, 47782, --304943, -688805, 125628, -2324651, 2863670, 173946, -156766, 1977833, -1599339, -338229, -2270427, 954020, 817654, 3512210, 3137474, 10137733, 1253057, -2680060, -13184476, 3950296, -7326678, 4347581, 2805151, -1198296, 3679713, 14147085, -1829656, 6488622, 545461, 3590056, -1304060, 170725, 2756295, -1280974, -6183679, -1789391, -4622996, -1264868, -6480032, 2214056, -86973, 7384660, 1364189, -3562139, 2369211, -1145683, -1927367, 4702989, 1618666, 3493956, -1989644, -2152852, -8436390, 431644, 4748087, -414464, -1698660, 2092723, -4504347, -1955821, --7865696, -9701794, 4886599, 5468567, 4236985, -1440962, -1677185, -7516, -259309, 2759517, --586800, 3030100, 2690260, -170725, 2776160, -2749853, 678605, -1487132, 1609002, 2013803, -8942659, -49929, 7300908, -2851322, -7699266, -762894, -1120450, -2963528, 5969468, -555125, -2415382, 494995, -4416300, -5268851, -1924145, -1166084, 495532, 5283884, 1672890, 508954, -2179159, 3524558, -1596654, 2644626, -400506, 2243584, 1364726, 526670, 3112778, -396748, -1785633, 1016834, 883690, -631897, -925029, -1911797, -927713, 1829656, 2807298, -759672, -169651, -1669132, -317291, 71941, -1696512, 1110786, -3119757, 79457, -235149, -45634, -1862405, 1999844, -308701, 4710506, -11614128, -382789, 11820287, 16256988, -6761889, 1825898, -2573222, -5647882, -3304977, 639950, -4722317, -4908611, 11368242, 1593433, -7563438, -1200980, --4942971, -2804077, 7385197, -2323577, -3301219, 6722698, 4129611, 6793028, -2906082, 1403381, -6600828, 299037, -4003447, 1822140, -602906, 834834, -8417599, -5710159, 2478196, -587874, -1966558, -7715909, 3594888, 2834679, 1773285, -13607530, -8007430, -3441880, -1737851, 1945620, --5991480, -3973382, 1296543, 10446971, 6838125, 3707094, -1889249, -1134945, -3987877, 3025268, --1185948, -7711077, -5942624, -703301, -162135, 10945724, 6014565, -5405217, -6094559, 7571491, -1467805, -4548371, 2147, 6796249, 2529736, 213138, -8875550, 9738301, -3467649, 6496675, -8460549, 8962523, 748398, -3291556, -2730526, 4611185, 5225902, -4597226, 3660923, 5011153, -3486440, -1512902, -1231045, 721018, 2989834, 2499671, -2686502, -4077535, -3897146, 1915555, --1895691, -1201517, -2721399, -519154, -1965484, 1001264, -1631551, 1191853, 881542, -297963, --49392, 2206003, -1652489, -3246459, -643171, 3010772, -1861332, -1600949, -1765232, -1206349, --271657, -51003, -2076080, -45634, -1528472, -699543, 494995, 2019172, -1380295, -43487, --491774, -875636, 1792612, 2185065, -3198140, 4770098, -6204081, 6983080, -693100, -1948841, -3690451, -7144141, 2374580, 3820374, 727997, 2655901, 3300146, -1964948, 7784628, -3731253, --13418552, -7998303, -1808181, 480499, -2881923, -5755256, -6296959, -4282620, 13082470, -3687230, --1086090, 1853815, -2779381, 1526324, 10723460, -5224828, 5063767, -3401077, -6976101, 6164889, -4431870, 2822867, 9605157, 177704, 4497368, -460635, 1102733, -416075, -3221762, 2090039, --784905, 6956774, 1348083, -4855998, -1289564, -1427003, -380105, -7891466, 3107946, -7780334, -1833414, 10384694, -6844568, -13062069, 2974802, 1771137, 5925445, -2675228, -169651, 6062347, --3809099, 2954401, 4446902, 1228361, -2780991, 5986111, 1250909, 7697119, 1593970, -4831302, --4595078, 4991289, 8399882, 2939905, -125091, -6977711, -1450625, -2263985, 4964982, 1240172, --9537512, 1466731, 2474438, 670015, 917512, 3664144, -1712081, 1532230, -2633352, 1600949, -1441498, 1168231, 1902671, 827318, 1245004, 1155883, -2234994, 695785, -708670, -364535, -2112587, 884763, 1160715, 2407866, -774168, -7633768, 703838, -525060, 529892, -705448, --497679, 2113661, 1370095, -1238561, -1468879, -10373420, 23951422, -5589363, 10761577, 1015760, -4493073, 3253438, -62277, -13418552, 11422466, -16729434, 5414343, 4018479, 15081241, -7066295, -6794102, -10641855, 6949257, -3440269, -11469173, -5490042, 2694555, 2940442, 4182761, 2135136, -6017249, 3948686, 9124121, -2827699, -7486128, -6736120, 2617246, -78383, -3703336, 6113886, -2658048, -1250909, 3634079, 7567733, -708133, 1960116, -1141924, 3743064, 2189360, -9683541, --4225711, -12688407, -2935073, -2152852, -307627, 6094559, 5407901, 809601, -3519726, -67109, --1924682, -3011309, 1678259, 17858474, 1589138, -388158, 5658083, -424665, 6485401, -2788508, -63888, -4236449, 17892834, 4227859, -7386270, -8422968, -5654325, 706522, -401043, -11450920, -621160, 2368138, 767189, 12506408, -3261491, 1844152, -7767985, -2535641, -21078626, -3637301, -1078574, 810138, -8107288, 2122788, -3906273, 2647847, 1212255, -3823595, -484794, 2775086, -4264366, 7960185, 2082522, -2887292, -2734821, -6391448, -2498597, 608812, 1056562, -3671660, --1418950, 3477850, 1220308, -945967, -893890, -2716567, -2558727, -1224603, 718870, -5316096, --3780108, 1010928, 2122251, 36507, -1384053, 1337346, 4358855, 747861, 341450, -350577, --1923072, 150861, -6245420, 2656437, 1444183, 12532178, 1087701, 10433549, 6334540, 10231686, -3433826, -10344966, 10155450, -6618545, 17566416, -11345156, -3352222, -15694347, -3309809, -1661079, -6986301, -7298223, 10248866, 8265128, -4969277, 586263, 11717745, 16490527, -5248450, 419833, --2150168, 5171141, 80531, -1925219, 2392834, 4521527, -7856569, 5928129, 1127966, 6796249, -2594160, 1039382, -13418552, -2166274, 15571404, -1861868, 5211406, 11938398, 3445101, -926102, --4166655, -5497558, -3293166, 547608, -5118528, -3069828, 9025874, 8346195, 2618856, 13859859, -9207336, -2900714, -1382443, 1899449, 3212099, -4233764, -11047193, 14413373, 6344741, -2955474, -13188771, 13793824, 15369540, 6668474, 2318209, -5571110, 388158, -7796977, -6256694, -3979287, --15417322, 6193880, -1954747, 13151727, -3119757, -10330470, -1946157, 992674, -1533303, -13780403, -2203855, 3678103, 6276021, 6644852, -4655745, 2138894, -3177739, -8961449, 1764695, 3471407, --685584, -2649458, -6760279, 7094212, 4010963, -6322729, -7172059, -4019016, 4124242, -730144, --2033130, 1919314, -3183108, 1990181, -811749, 1227824, 3111167, -4572530, -2122788, 2051921, --963683, 85362, 9201967, 3012920, 626528, -619549, 2197413, -3052111, -1722282, -292058, -3024194, -1898912, 13769665, 851477, 2552284, -2020782, 1179505, -1721208, -20752746, 2449742, --154082, -3700651, -1503239, -10184978, 11777874, 12066711, 13499619, -21789980, 7097434, 4549444, -598611, 21561810, 8890582, -10673531, -1194538, 21286932, 2564632, 3825742, 4394289, -6211597, -3607773, 4414153, 13256953, 6730751, -10030896, -16568910, 6343130, 3967476, -8303246, -1542430, -873489, -10175851, 1229971, 12490302, 5375152, 7014219, 10190884, 16422881, 1620813, 14468134, -2924873, -5704254, -761820, -8516920, -4399121, 3605088, 4964446, 3769371, 7334731, -10247792, --4566624, 18429168, -1283122, -3929358, -10204305, 8752606, 7988639, 2763275, 3386582, -119722, -5157182, -7979513, 13226352, -6600291, -7757248, -6369437, -4306242, 17838610, 4889821, 3731253, --19302656, -10641318, -15852724, 1178969, -1620813, -1561221, -15033996, -20987894, -521839, 9451612, --5104569, 2702608, -1299765, -1427003, 5353677, -7304129, -3052111, -3325379, 6449967, 1066763, --4603131, -66035, -675384, -111132, -2142115, -4397510, 1176821, 7029788, -3338800, -2302103, --4421132, -2044404, -3071439, -1543504, 3159485, -1032403, 4947266, -1600949, -964757, -2784213, --1975148, 7388418, -671089, -494995, -3401614, -559420, 4460324, 1196685, -5274757, 1214939, -511101, 1561758, 19444928, 22871238, -5832566, 6438156, -1647120, -6665253, 1343251, -15292768, --9436043, -657667, -3059091, 30666066, -13768591, 3940096, -19450296, -2844879, 11912092, -4979478, --10814191, -11357504, -4132832, 4705137, 6083821, -746251, -946503, -12768401, 3044595, 8964134, -4549444, 5501853, 1668058, 2016487, -7431367, -2428267, 5036923, 1851668, 20401, 580894, --8970039, 4027069, -9441412, -1520418, -216896, 2771865, -10487236, -1067836, 5189394, 7565585, --11954505, -6271726, 21316460, -8163122, -16748225, 14117021, -13620952, -4289062, -6009733, -2436857, --10450729, -7255811, -2172180, -10544682, -15042586, 24317032, 13438416, 10845329, 7440494, -9426916, --3661460, -6354404, 6857989, -11425687, 8134131, -6091338, 3514357, 8156680, 5339181, 1664837, --15493021, 15224585, -18513994, -4852240, -17948132, -7285875, 11863773, -675921, 6743099, 13615583, -4352950, -1369558, 2677375, -4740034, 290984, -1437203, -5117991, 6156836, -2112050, -2833605, -7051800, 3738232, -1840930, 493384, 346282, 1131724, -3145527, 3075197, 985158, 1664300, --3769371, 2602213, -1739999, 6678138, -2964601, 4724464, -1407676, -2311229, 7079717, -4709969, --2038499, -4212289, 2862596, 7001334, 3236795, -1978369, 3317325, -2803540, 3388192, 4878009, --5263483, -12696460, -812286, 32272922, -14238353, 14120242, -28556700, 8054138, -18099530, -3262028, -10325101, -748398, 6669548, 10821170, 8649527, -12360379, 9479530, 2090039, 7042136, -2527052, -9715753, 9047349, -1824287, 2032056, 5890548, 6666326, -9091909, -2993592, -13319767, -1490891, -11975979, 493921, -5512591, 1398549, 4502737, 1007707, -4776541, -9405978, 2553358, -6301254, -6311992, -5942088, 22959284, -1961726, -12315282, -13837848, 3270081, -7515119, 7301445, -15539729, --12199318, -15789374, 3782793, -13306346, -3110630, -19175956, 13945222, 3022583, 9417253, 5927055, --20777978, 1784559, -1762010, -7639673, -11566347, -3011309, -9834401, -12354473, -6812355, 5992553, -8364449, 12202539, -6828461, 1863479, 5309654, -17361332, 8155606, -11836393, -993748, 10081899, -4312684, 4184372, 1939715, 20517596, -11548630, -4092030, -4333622, 5520107, -17249126, 1563368, --1310502, 16106, 11360188, 6727530, 5667746, 2201171, -4130685, 874026, -2000381, 8378408, --3063386, -869731, -4519916, 9476845, 3819300, -3071975, 2645700, -8040179, 5760625, 3076807, -4552666, 908386, -1548336, 5401458, 9564355, 3416110, -4504884, -6091338, -2470680, 2593624, --6307697, -1265405, -9642738, -6906308, -3736622, 194347, -5258114, 4116189, -4121558, 9760850, --7431367, 49929, 60666, -26827440, -7793755, 30001420, 26545046, 14891188, -12911209, 13119514, -19846508, -13215077, 17529372, -14221174, 16183974, 3770981, -1122597, 5290863, -382789, 8480950, --12848395, -3700114, -5813775, 6444599, -12181601, -10976326, 17057462, -1707250, -3591130, 1553168, --16542603, -429497, 26538066, 14423574, 2994666, -316217, 5634997, 25069724, 10702522, 318364, -4212289, -7021735, -3008625, -6054294, 10776610, -5666673, 7191386, 1292248, 12877923, -15353434, --340913, -989990, 374736, -4380330, 7180112, 11512660, -2748242, -3368865, 11674258, 1268089, -1432909, 26418880, 4151086, 286152, -12155294, 5284958, -9045201, 12193412, -14203457, -12646531, -1910724, -12459700, -13253195, -20292110, 5401995, -6824703, 10416906, -3504693, 5872294, -29604672, -6003828, -10065793, -17923436, 9250823, 12352863, 6396280, 3814468, 2166811, 5175436, 7815767, --3833258, -4651450, -5447629, -428960, -5973226, 3652870, 772557, -8608188, -5905043, 4815195, -2903398, 310311, 8715562, -3127273, -920734, -7023882, -1480690, -27917, 3608310, 2214056, --5845988, -3646427, -1621350, -7114614, -1336272, -6686191, 2655364, 1719598, 7850127, 5283347, --559956, -3252364, -6442, -20938, -2244121, -559420, -8209293, -1534914, 3359738, 3570192, -1038308, -1459215, 7907572, 1242319, 22466438, -34221224, 14556718, 15164456, -24284818, -2356327, --20787642, -6772627, -18646600, -8365523, 21636434, -7227356, -1429687, -14984604, -2787971, 3599183, --22258132, -746787, 14457397, -27538256, 1161789, -18764712, -10050760, 501437, 2183991, -12388296, --9900973, -10362145, -2873870, -8893267, -431644, 4917738, -2570538, 7133404, -13345000, -8490077, -18178450, -8321499, 9914395, -10616085, 10309532, 9406515, 1739462, 2590402, 9614821, 557272, -13637058, 17170742, -3061775, 2633889, 25506738, 1612223, 13183939, -810138, -9932112, -19883014, -3515968, 13984950, -21894670, 393526, -12808129, -6711424, -28436978, 12459700, 19032610, -4832375, -9255118, -4532264, 20685636, 22811646, -1661616, -22393960, -21689048, 31265214, -24110336, 9188546, -3765076, 3332895, 23487028, -9836549, 38160784, -541703, -8447664, -9810242, -6684580, 6167036, --2211908, -2808909, -60130, 9902584, -2265595, -6082748, 8398809, -2877091, 4323422, -7467875, --4381941, 7270306, 731755, 10821170, -3364033, 4654671, -7719667, -2173254, -10629507, 2320356, -4588636, 5446019, 1225139, 5591511, 711354, -1606855, 6045167, -9077950, 6248641, -7688529, --2582886, 4793184, -9352828, -2333778, -5285494, -15939161, -4099546, 1126355, 5979668, -7749195, --3883187, -6808060, -2047626, 1748589, 12221866, 6307697, 37322728, 42058468, -2474438, -31711354, -31336618, -34671124, 4898410, 14705968, 3657165, -3711389, -15984258, 18014166, -8049843, -6458020, --16275242, -9480067, -5062156, -20341502, -11170673, -9096204, -5066451, -3349538, 14143864, -215822, -12229919, 80531, -5252745, -17825188, -19490024, -4941897, -686121, -276489, -2935610, -7311645, --8402567, 9320616, 22507776, -12231530, 7773354, -7645579, -7827041, 8908836, -8673150, -14127221, -31591632, -3508988, 2938295, 1523640, -17593796, -3904125, -3659312, 8910983, -22737020, -10117332, -24137180, 3843459, -10200547, 13062606, 24533390, -13963476, -17201344, 8925479, -14573361, 200253, --27315456, 8796630, 23317914, -2420214, 12186970, 7045894, 4122095, 26650272, 8431021, -161598, -15445239, -2278480, -2078764, 9374303, 10150618, -38756712, 3596498, -16882980, 13748190, -680752, -586263, 9578314, -2851858, -3748970, -5029407, 5133560, 2041183, -3839701, 5236639, -5593658, -629750, -2995740, -7401840, 3379603, -3670050, 8309688, 4674535, -193274, 113280, 2241436, --2143726, 4895726, 2507187, 1491964, 2103460, -1460289, 1915019, -3405372, -6405407, -3621194, --1599875, 832687, -8354249, 6808060, 4704063, 279173, 2598455, -5733782, 8003135, 899259, --4607963, 2806761, 3508452, -10183367, -1998770, 944893, -716723, 73014, 1941862, -1726577, -1583769, -50870128, -35539780, 15261093, -14882599, -14006962, -43226700, -12256226, 9593346, 3906273, --8265665, -23899882, -1611, 12584791, -587337, 1979980, 13026636, 22894324, -19275276, 51721608, --12920335, -16755741, -4884989, -2574296, 544387, -20031190, 776315, -3266323, 11171210, -6555731, -15681999, -6048388, -12768938, 5679021, 6648073, -11366094, 13061532, -38842612, 622233, -2818572, -15939161, 19210852, -13378823, 17935784, -6455336, 5354214, -8116415, -2510945, -4873178, 14413910, --1580011, 18877992, 29307784, -24927990, -6751152, 13924821, -16702054, 10605885, -19015968, -10350871, --9314710, -11008001, -19419694, -9807558, 9491341, 7810935, 15426986, 19934016, 14561013, -23480050, -3269544, 4701379, 5955509, 5104569, 15495168, -7143068, -15788300, 9503152, -3894999, -12273406, -2741800, -21239150, -8624831, -18464064, 2000918, 11350525, -6550899, 10919954, 5984500, -348429, --3795141, -24159, -16440061, -5983427, 5813238, 3073049, 3923990, 1444183, 2147484, 1780264, -5464272, 1693828, -10959146, -1291175, 1954210, -853088, 3162707, -4867272, -4444218, -10699300, -3077881, 9980430, -10768557, -7481296, 5915781, -2525441, -10997264, 7672422, -5233955, -4244502, -6965900, -250719, -1868848, -3187940, -4760971, -6416145, -6824166, -1581085, -5777268, -3347390, --2870649, 5069672, -118648, 52613, 7655243, -10128070, -34349000, 26819924, -44115220, 31874026, --4000225, -19435800, -16535624, -18483392, -12383464, -9494025, 1442035, 23518704, -1382980, -18738942, -20948166, 29549374, -44055092, -11352672, 3572339, -3143379, -6483790, -1686312, -5719286, -7367480, --12489228, 17068736, -5342940, -11810086, -20740398, -20503638, 21189758, 5960341, -3360275, -1735704, -452045, -4083440, -5221070, 5136781, -18213346, 10721849, 21630530, 16404628, 10292889, 20825222, -23976118, -12973486, 5427765, -18924162, 21485038, -11490111, -3073586, 457414, -30365418, 10559714, -25707526, 4890357, -10030359, -7882876, 33480880, -12749610, -13927505, 9872519, -33406256, -3363496, --16392816, 1311039, -32666984, 14388677, 6086506, 14116484, -53234508, -45356464, 7848516, -15461345, --10440529, -6055904, -35555888, 12479027, -20892868, -22535694, 17771500, -14966350, -8883066, 8055748, --3455301, -6396280, -993211, -1328756, 7806103, -17076790, -8062728, -16451872, 322659, -6878390, -3710315, -1820529, -13219909, -4905390, 5025649, -246961, 1239635, 4239670, -14520748, 2522220, --18474264, 9265318, 3087545, -12952548, 4569845, -15524696, -3251827, -5273683, 1442572, 9217000, --6160594, 9517648, -4516158, 15750182, -6700686, 10142565, -5093831, -1020055, -291521, -1176284, -3252364, -898185, 171799, -572841, -3259343, 697395, 5581310, -846645, -2182917, -1217086, -1875827, -1247688, -1905355, -772557, -846109, 1142461, -854162, 19327, -763430, -1169305, --718333, 1716376, 36507, -1829119, -5906, 554588, -2441689, 2180233, 38620884, -55790016, -55032488, 15551003, -2736431, 3743064, -41195716, 7463580, 18114024, -7969849, 46769508, -14440217, -19760070, -17637284, 51616380, -2761127, -7890929, -20927228, -8160438, 6783364, -6106907, 20395726, -15697569, -6453725, 605590, -21508660, 7058779, 20180440, 20526186, -24129664, 8924942, -5493263, -21979496, -7078106, 14011794, -14668924, -11592654, -31910534, 1290101, -20560546, -29819958, 40257804, --19071802, -4565550, -8658117, -10821170, 4763119, 2468533, 13753022, -7827578, 21563420, 1151588, -39793408, 14639396, 44136696, 37234684, -4619774, 24573118, 18700288, -7695508, 22145388, 30236570, --14212584, -32146756, 16938814, 10521059, 24705726, 12108050, -3321084, -1307818, -34138548, -4163971, --10632192, -13104482, 43521976, -6090264, -1306207, 54050016, 36010616, 18814642, 23789286, 11637214, -766115, 5275831, 31143344, -632434, -9181566, 8453569, 26048440, 11603391, 14508400, 6538551, -17786534, -2025077, 4560182, 5889474, 12227235, 3405372, 2524367, 1289564, 700617, 9483825, -15046344, 5680094, 20139102, 465467, 12144557, 11752104, 22815404, -1411971, 15388868, 13264470, -2324114, 11021423, -55298, 1632088, -4708895, 3932580, 5842230, 2193118, 2691334, -192737, --3511673, -377420, 4831838, -3968550, 2320893, 9666361, -3028489, 18865644, 1493038, 4214974, --2047626, -8981313, 4846871, -3552475, 5571110, 16944720, -38510824, 73568496, -10142028, -8298414, --4857608, 53516904, -33087892, 26810260, -36222144, 34083788, 6721087, -6715718, 671626, 19958176, --8807367, 18615998, -8889509, -188979, 37422052, 11535745, -9888088, -150861, 9145059, 7390565, --36792300, 9750113, -13580687, -3306588, -19534586, 18629420, 17402134, 2776696, 8086887, 31463320, --10743861, -50015432, 11647414, 32804424, -13029320, -32869384, 8407935, 23508504, 7601555, 57445, --39764956, -18869402, -23694798, 21946746, 8526584, 22611392, -47822852, 3080029, -9124121, -52397528, --13968844, 7760469, 23374286, 33078764, -17960480, 61746596, 11622718, 1122597, -13113072, -24846922, --17623324, 11687680, -28993714, 58226872, -19029390, 2452963, 34005940, -22606024, 20586316, -22075058, --13107166, 48331804, -24866250, 31720480, 28739236, 10680510, 12848395, -41722924, -5455146, -2113124, --15080167, 19768660, 17296370, 7295539, 4941360, 19252728, -5034239, 7576323, -2789045, 5828808, --8725226, 6904697, -1917703, 5855114, 3946538, 1387811, -14764487, -2317135, 1437203, -4991826, --2212982, 10294500, 5102958, 16894790, -8153459, 3665755, -27998354, -22923852, -3891777, -1261647, -15781320, 12444131, -8368207, -5582921, -22487376, 106837, 6955163, -3347927, -638876, 5436355, --7516193, 5137855, -16780974, 1144072, -6065568, -6079526, 9997610, -43248172, 24785720, 15886547, -24789478, -9801652, -6967511, 10084583, 126702, 2922188, 978179, 4961761, 1219234, -6739341, -32040456, -7391102, -22010634, 9403294, -534723, -19346680, 6806450, 4566087, 13245142, -8883603, --14656576, 15880642, -12668006, -1658394, -3748433, 13049721, -22337588, 7714835, -13845901, 11417634, --19676318, 7083475, -6577743, 3470871, 43231532, -29633664, 5660230, 9583683, -26751740, 9793599, -12369506, -19767050, -4109747, -7523709, 35954780, 3102577, -41536092, 24958592, -33572684, 6186364, -17412334, -16047608, 19913078, -23995446, -19830400, 27400818, -4628901, 11690364, -40929428, 7747584, -8868034, -2095944, -6300717, -263067, 16632798, 705448, -54439784, 33066954, -3416647, 12749074, --14292041, -16569984, 51939576, -1302986, -33201708, 2957622, 16779900, 3913252, -50483044, 1877975, -46845208, -8492761, -21658446, 5212480, 22664542, -2943126, 83752, -3905199, -2335925, 3324305, --8189966, -4706211, 15390478, -6597070, -415001, -8967892, 9029632, 13813152, -2457258, -1978369, -14544370, 4846871, -9984725, -2292439, 6271189, 4280472, -8480413, 4638028, 10010495, -8258149, -2156611, 2595771, 6455336, -15448460, 998580, 9837086, 3688840, -10734734, 623307, 7759932, -1279363, -7940321, -5406290, 8698383, 21048024, -6551436, -106514112, -227261216, -90339808, -170964928, --208346176, 74546672, -296890, 76447200, 289189824, 252627296, 143950128, 276778432, 154566208, 17940078, -95986616, 59269476, -103961296, -73320464, -21233782, -115290880, -139544032, -46102180, -70414376, -110349520, --27364848, -4532801, -140662864, -96759704, -14258218, -85299664, -110590040, -31887984, -54039280, -120263376, --22720914, 12764106, -67253280, -51162724, 51511152, -17904644, -72162968, 15705085, 48518636, -35364760, -29916594, 106194144, -15094126, -27753542, 105079056, 56315076, -25705916, 174244144, 236658608, 147485952, -249518816, 373060320, 287053056, 273210912, 399023936, 345994528, 254754912, 312487872, 284094912, 180900800, -160053568, 86361056, -29238526, -124050464, -222340800, -316038176, -376195104, -471784992, -504119104, -531599904, --602326720, -601882752, -454811808, -465380640, -423807520, -190611184, -147416160, -143347216, 64187212, 122146184, -3046206, 127283504, 176451216, 60701848, 84324704, 165521600, 123800288, 72280008, 116941760, 144709792, -61733176, 90252296, 179455552, 106909256, 70509408, 165423344, 124139584, 50385872, 107630272, 122924648, -16128676, 63675576, 147852640, 84950160, 101817568, 208285520, 195940704, 206478944, 267224272, 269111904, -215923040, 204262736, 174369760, 106613976, 76947024, 41098544, -6082748, -41659572, -113491288, -155152480, --209835456, -279681824, -311481760, -351964512, -409767808, -390216576, -350481152, -309506624, -226271232, -148282128, --78575352, -28872918, 12364674, 26057030, 31842888, 41044320, 43493524, 36816460, 39323648, 43449500, -42179264, 47282760, 61100740, 68599216, 73390792, 81787992, 84344568, 85528368, 89899568, 83154328, -71506376, 53586696, 33440078, 21274584, 5987722, -3935801, -6850473, -10212358, -14584635, -14309757, --12278238, -6786585, 812286, 8786966, 17835388, 20947092, 22754736, 26548804, 28432684, 28261422, -29658360, 32751810, 31223876, 28227062, 31469762, 28022514, 20662014, 25450366, 26267484, 17830556, -17988934, 15598784, 4242354, 1209033, -210453, -12014097, -19874962, -22814866, -28948616, -35170952, --36511516, -39032124, -44935020, -45916960, -45435924, -48728552, -51187956, -48898204, -47878684, -48764520, --44014288, -37648072, -34082176, -27918362, -17423072, -9823127, -3357591, 5983963, 14271103, 18410914, -22398792, 27732604, 29164976, 28369870, 29122562, 28196998, 25244744, 23264764, 21437792, 18597746, -15851651, 13785234, 11205033, 8602283, 6847789, 5546951, 4046396, 3058017, 2118493, 1206349, -641561, 303869, 10201, -122943, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +933082, 5575942, 1903744, 3631932, -5309117, -2911988, 236223, -944893, 1418413, 4414690, +-10631655, -79994, 3491272, 2092723, 3217468, -3083250, -4298189, 4639102, -80531, 1288490, +2893734, 3837017, 1415729, 795106, 3455838, -518080, -1108638, -2995203, 1607928, -848793, +-487479, -1559610, 1986422, 5048197, 20401, -1059246, 2379412, -3243774, -4839892, -2684355, +-980863, -3148748, 282931, -735513, 2033130, -1968706, 565325, -3937948, -376883, -3240553, +-153008, -1489817, -1273995, 1633698, -1861868, -200790, 2660732, -1409286, 3172907, 3830574, +281857, 5181341, -2653216, -189515, 2486786, -911070, 1679332, 2347737, 1279363, -2745021, +1080184, 1236951, 883690, 153008, -2279017, 3016678, -812286, 1433982, -492848, -642635, +197032, -3169149, -253940, -2465848, -1136019, -123480, -420370, -99858, -236760, -1333587, +1575716, 166430, 447213, 92879, 883690, -551903, 1115081, -99321, 480499, -199179, +-471910, 605054, 70867, -204011, -3221, 861141, 199716, -173409, 554588, 264677, +-101469, 14155675, -3929895, 1413044, -3022583, -197569, -1232656, 1678259, 1146756, 4889284, +1537061, 899796, 1923072, -1116155, -9695352, -9273371, -2864743, 1300301, 2904472, -2312840, +580894, -2978560, -1032940, 206158, 1700807, -4083977, -4457103, -1278827, -239981, 2483028, +846645, -959388, -3204583, 626528, -1744294, 143881, 2323577, -3246995, 1631551, 2983392, +-2243047, -6004365, -1534377, 2253247, -314069, 1839320, -249645, 1599339, -235149, 1752347, +377420, -5600638, 1159104, 2363843, -846645, 1618666, 311922, -275952, -1073205, 108448, +-3282966, -245350, -867047, -4152160, -661962, -80531, 3780645, -3641596, 6188511, 7195144, +5668820, -2384781, -1093606, -1245541, 2772402, -982474, -1494649, 1756642, -3998078, -3624953, +497142, 3314641, -54224, -1598265, -3570192, -2081985, -2710661, -1400159, -2497524, 1006096, +-1476395, -352187, -1551557, -783832, 136902, 905701, 120796, 930397, -539555, 122943, +741419, 420907, 595390, 612033, 374199, -611496, 743566, -13307956, -85899, -2052458, +919660, -460635, -6888591, -1319629, -1452773, 2151242, 3350611, -4615479, 3686693, -1177895, +2541010, 2545305, -1384053, 5536213, 339839, 240518, -959925, 956704, -1373316, 1016297, +-1542967, 199716, -3616899, 381715, 3994857, -8053, 1685238, 4195110, -4129074, -4365298, +1823214, -1988570, 3368328, -3412352, -1021665, -7123740, -5478231, -4765266, 2080912, 600222, +2535105, -2597382, -1833414, -551366, 4470524, -4953171, 2046552, 846109, 374736, 2487860, +-1715839, -2279554, -2964064, 1797981, 974421, -4387309, -4806606, -5618891, -154082, -1222992, +1833951, -275415, -1047972, 503048, 763430, 2483028, -6682432, 805306, 3821984, 5631239, +5818070, 4774393, -834297, -3563749, 5216775, 1563905, 1022202, -2625299, 1516124, 1047972, +171799, -672162, -1526324, -256087, 1793686, -1404991, -2261837, -960462, -965294, 352724, +-176094, -585726, 1566589, 91268, 1996623, -217433, 585726, 1292248, 1261110, 936303, +719944, -825707, -859530, -320512, 802085, -190052, 783832, -577136, 1359357, 1087164, +-1151051, 30602, 110595, -1949915, 1461363, -7878044, 4720169, -4225174, 5645198, 7381975, +4563403, -186831, 2117956, 405338, 6027987, -3449396, -3462281, 1653562, -1036698, 2407866, +4616016, -6847252, 2042257, 5949604, 2753074, -542777, -151934, 628676, -2916283, -149787, +-2760590, -3814468, -1069984, 5630166, -2254321, 2558727, -2090039, -3610994, 6768332, -6096169, +4510790, 4936528, 897111, 3089692, -4537633, -1322850, -1858110, -1510218, 3102040, 858457, +-4872104, 666794, -562641, 794032, -1130650, 1607392, 1548873, 5610838, -6088653, 2771328, +2175938, -717260, 2160906, 518080, 3420405, 3180423, 1987496, -2050310, 2704756, 4838281, +-226023, 2786897, -2198487, 5756867, 5961415, 6536940, -2014877, -4779225, 1402844, -768799, +2272575, 1593970, -127238, -472983, -6768869, -1865090, -1648194, -649077, -1468879, -2122788, +2188286, 755377, 621697, 2561411, -260919, 2590939, 1612760, 754304, -481573, 342524, +-695785, -1264331, 702227, 76773, 1214402, -523449, 215285, -215822, -988379, 1350230, +-157840, -1399623, 416612, 1067836, 38118, -1784022, 309775, -896038, 2170569, 1532230, +1554778, -319438, 409633, 1163399, 30602, 533113, 1062468, 531502, 10890426, -1012002, +-3415036, 10357314, -4105452, 4646081, -2501282, -9918690, 1760400, -2860985, 307627, 11866458, +-4604205, -5633387, 452045, 6233608, -10048613, -3737695, 7534447, -2658585, 2433636, 3554622, +-2689723, 3234110, -2102387, -3488587, 700617, -988916, -1220308, -1296543, 4202089, -3374771, +8181913, 2030983, 179315, -4699231, -1387811, 4992900, -5734855, 1213328, 1993402, -904091, +-7997229, 5466420, 1462436, 1338419, 717260, -1111323, 4138738, -2460480, 5656472, 3206730, +-2186138, -9762461, 4350265, 2608656, -231391, -2770791, 2367601, 6288906, 6407555, -708670, +3796214, -5758478, 4192962, -1025960, -1970316, 2480881, 4962298, -3482145, 4912906, 869731, +-2054068, -1737314, 4012036, -3352759, 9504226, -4889821, 3945464, -3288334, 871878, -2939368, +3815542, -3412352, 190052, 2153926, -636192, 405338, -2908767, -1008780, -380105, 6442, +824097, -1284195, 1671816, -173946, -1122597, 1667521, -3337727, -3404299, -1911261, 47782, +-304943, -688805, 125628, -2324651, 2863670, 173946, -156766, 1977833, -1599339, -338229, +2270427, 954020, 817654, 3512210, 3137474, 10137733, 1253057, -2680060, -13184476, 3950296, +7326678, 4347581, 2805151, -1198296, 3679713, 14147085, -1829656, 6488622, 545461, 3590056, +1304060, 170725, 2756295, -1280974, -6183679, -1789391, -4622996, -1264868, -6480032, 2214056, +86973, 7384660, 1364189, -3562139, 2369211, -1145683, -1927367, 4702989, 1618666, 3493956, +1989644, -2152852, -8436390, 431644, 4748087, -414464, -1698660, 2092723, -4504347, -1955821, +-7865696, -9701794, 4886599, 5468567, 4236985, -1440962, -1677185, -7516, -259309, 2759517, +-586800, 3030100, 2690260, -170725, 2776160, -2749853, 678605, -1487132, 1609002, 2013803, +8942659, -49929, 7300908, -2851322, -7699266, -762894, -1120450, -2963528, 5969468, -555125, +2415382, 494995, -4416300, -5268851, -1924145, -1166084, 495532, 5283884, 1672890, 508954, +2179159, 3524558, -1596654, 2644626, -400506, 2243584, 1364726, 526670, 3112778, -396748, +1785633, 1016834, 883690, -631897, -925029, -1911797, -927713, 1829656, 2807298, -759672, +169651, -1669132, -317291, 71941, -1696512, 1110786, -3119757, 79457, -235149, -45634, +1862405, 1999844, -308701, 4710506, -11614128, -382789, 11820287, 16256988, -6761889, 1825898, +2573222, -5647882, -3304977, 639950, -4722317, -4908611, 11368242, 1593433, -7563438, -1200980, +-4942971, -2804077, 7385197, -2323577, -3301219, 6722698, 4129611, 6793028, -2906082, 1403381, +6600828, 299037, -4003447, 1822140, -602906, 834834, -8417599, -5710159, 2478196, -587874, +1966558, -7715909, 3594888, 2834679, 1773285, -13607530, -8007430, -3441880, -1737851, 1945620, +-5991480, -3973382, 1296543, 10446971, 6838125, 3707094, -1889249, -1134945, -3987877, 3025268, +-1185948, -7711077, -5942624, -703301, -162135, 10945724, 6014565, -5405217, -6094559, 7571491, +1467805, -4548371, 2147, 6796249, 2529736, 213138, -8875550, 9738301, -3467649, 6496675, +8460549, 8962523, 748398, -3291556, -2730526, 4611185, 5225902, -4597226, 3660923, 5011153, +3486440, -1512902, -1231045, 721018, 2989834, 2499671, -2686502, -4077535, -3897146, 1915555, +-1895691, -1201517, -2721399, -519154, -1965484, 1001264, -1631551, 1191853, 881542, -297963, +-49392, 2206003, -1652489, -3246459, -643171, 3010772, -1861332, -1600949, -1765232, -1206349, +-271657, -51003, -2076080, -45634, -1528472, -699543, 494995, 2019172, -1380295, -43487, +-491774, -875636, 1792612, 2185065, -3198140, 4770098, -6204081, 6983080, -693100, -1948841, +3690451, -7144141, 2374580, 3820374, 727997, 2655901, 3300146, -1964948, 7784628, -3731253, +-13418552, -7998303, -1808181, 480499, -2881923, -5755256, -6296959, -4282620, 13082470, -3687230, +-1086090, 1853815, -2779381, 1526324, 10723460, -5224828, 5063767, -3401077, -6976101, 6164889, +4431870, 2822867, 9605157, 177704, 4497368, -460635, 1102733, -416075, -3221762, 2090039, +-784905, 6956774, 1348083, -4855998, -1289564, -1427003, -380105, -7891466, 3107946, -7780334, +1833414, 10384694, -6844568, -13062069, 2974802, 1771137, 5925445, -2675228, -169651, 6062347, +-3809099, 2954401, 4446902, 1228361, -2780991, 5986111, 1250909, 7697119, 1593970, -4831302, +-4595078, 4991289, 8399882, 2939905, -125091, -6977711, -1450625, -2263985, 4964982, 1240172, +-9537512, 1466731, 2474438, 670015, 917512, 3664144, -1712081, 1532230, -2633352, 1600949, +1441498, 1168231, 1902671, 827318, 1245004, 1155883, -2234994, 695785, -708670, -364535, +2112587, 884763, 1160715, 2407866, -774168, -7633768, 703838, -525060, 529892, -705448, +-497679, 2113661, 1370095, -1238561, -1468879, -10373420, 23951422, -5589363, 10761577, 1015760, +4493073, 3253438, -62277, -13418552, 11422466, -16729434, 5414343, 4018479, 15081241, -7066295, +6794102, -10641855, 6949257, -3440269, -11469173, -5490042, 2694555, 2940442, 4182761, 2135136, +6017249, 3948686, 9124121, -2827699, -7486128, -6736120, 2617246, -78383, -3703336, 6113886, +2658048, -1250909, 3634079, 7567733, -708133, 1960116, -1141924, 3743064, 2189360, -9683541, +-4225711, -12688407, -2935073, -2152852, -307627, 6094559, 5407901, 809601, -3519726, -67109, +-1924682, -3011309, 1678259, 17858474, 1589138, -388158, 5658083, -424665, 6485401, -2788508, +63888, -4236449, 17892834, 4227859, -7386270, -8422968, -5654325, 706522, -401043, -11450920, +621160, 2368138, 767189, 12506408, -3261491, 1844152, -7767985, -2535641, -21078626, -3637301, +1078574, 810138, -8107288, 2122788, -3906273, 2647847, 1212255, -3823595, -484794, 2775086, +4264366, 7960185, 2082522, -2887292, -2734821, -6391448, -2498597, 608812, 1056562, -3671660, +-1418950, 3477850, 1220308, -945967, -893890, -2716567, -2558727, -1224603, 718870, -5316096, +-3780108, 1010928, 2122251, 36507, -1384053, 1337346, 4358855, 747861, 341450, -350577, +-1923072, 150861, -6245420, 2656437, 1444183, 12532178, 1087701, 10433549, 6334540, 10231686, +3433826, -10344966, 10155450, -6618545, 17566416, -11345156, -3352222, -15694347, -3309809, -1661079, +6986301, -7298223, 10248866, 8265128, -4969277, 586263, 11717745, 16490527, -5248450, 419833, +-2150168, 5171141, 80531, -1925219, 2392834, 4521527, -7856569, 5928129, 1127966, 6796249, +2594160, 1039382, -13418552, -2166274, 15571404, -1861868, 5211406, 11938398, 3445101, -926102, +-4166655, -5497558, -3293166, 547608, -5118528, -3069828, 9025874, 8346195, 2618856, 13859859, +9207336, -2900714, -1382443, 1899449, 3212099, -4233764, -11047193, 14413373, 6344741, -2955474, +13188771, 13793824, 15369540, 6668474, 2318209, -5571110, 388158, -7796977, -6256694, -3979287, +-15417322, 6193880, -1954747, 13151727, -3119757, -10330470, -1946157, 992674, -1533303, -13780403, +2203855, 3678103, 6276021, 6644852, -4655745, 2138894, -3177739, -8961449, 1764695, 3471407, +-685584, -2649458, -6760279, 7094212, 4010963, -6322729, -7172059, -4019016, 4124242, -730144, +-2033130, 1919314, -3183108, 1990181, -811749, 1227824, 3111167, -4572530, -2122788, 2051921, +-963683, 85362, 9201967, 3012920, 626528, -619549, 2197413, -3052111, -1722282, -292058, +3024194, -1898912, 13769665, 851477, 2552284, -2020782, 1179505, -1721208, -20752746, 2449742, +-154082, -3700651, -1503239, -10184978, 11777874, 12066711, 13499619, -21789980, 7097434, 4549444, +598611, 21561810, 8890582, -10673531, -1194538, 21286932, 2564632, 3825742, 4394289, -6211597, +3607773, 4414153, 13256953, 6730751, -10030896, -16568910, 6343130, 3967476, -8303246, -1542430, +873489, -10175851, 1229971, 12490302, 5375152, 7014219, 10190884, 16422881, 1620813, 14468134, +2924873, -5704254, -761820, -8516920, -4399121, 3605088, 4964446, 3769371, 7334731, -10247792, +-4566624, 18429168, -1283122, -3929358, -10204305, 8752606, 7988639, 2763275, 3386582, -119722, +5157182, -7979513, 13226352, -6600291, -7757248, -6369437, -4306242, 17838610, 4889821, 3731253, +-19302656, -10641318, -15852724, 1178969, -1620813, -1561221, -15033996, -20987894, -521839, 9451612, +-5104569, 2702608, -1299765, -1427003, 5353677, -7304129, -3052111, -3325379, 6449967, 1066763, +-4603131, -66035, -675384, -111132, -2142115, -4397510, 1176821, 7029788, -3338800, -2302103, +-4421132, -2044404, -3071439, -1543504, 3159485, -1032403, 4947266, -1600949, -964757, -2784213, +-1975148, 7388418, -671089, -494995, -3401614, -559420, 4460324, 1196685, -5274757, 1214939, +511101, 1561758, 19444928, 22871238, -5832566, 6438156, -1647120, -6665253, 1343251, -15292768, +-9436043, -657667, -3059091, 30666066, -13768591, 3940096, -19450296, -2844879, 11912092, -4979478, +-10814191, -11357504, -4132832, 4705137, 6083821, -746251, -946503, -12768401, 3044595, 8964134, +4549444, 5501853, 1668058, 2016487, -7431367, -2428267, 5036923, 1851668, 20401, 580894, +-8970039, 4027069, -9441412, -1520418, -216896, 2771865, -10487236, -1067836, 5189394, 7565585, +-11954505, -6271726, 21316460, -8163122, -16748225, 14117021, -13620952, -4289062, -6009733, -2436857, +-10450729, -7255811, -2172180, -10544682, -15042586, 24317032, 13438416, 10845329, 7440494, -9426916, +-3661460, -6354404, 6857989, -11425687, 8134131, -6091338, 3514357, 8156680, 5339181, 1664837, +-15493021, 15224585, -18513994, -4852240, -17948132, -7285875, 11863773, -675921, 6743099, 13615583, +4352950, -1369558, 2677375, -4740034, 290984, -1437203, -5117991, 6156836, -2112050, -2833605, +7051800, 3738232, -1840930, 493384, 346282, 1131724, -3145527, 3075197, 985158, 1664300, +-3769371, 2602213, -1739999, 6678138, -2964601, 4724464, -1407676, -2311229, 7079717, -4709969, +-2038499, -4212289, 2862596, 7001334, 3236795, -1978369, 3317325, -2803540, 3388192, 4878009, +-5263483, -12696460, -812286, 32272922, -14238353, 14120242, -28556700, 8054138, -18099530, -3262028, +10325101, -748398, 6669548, 10821170, 8649527, -12360379, 9479530, 2090039, 7042136, -2527052, +9715753, 9047349, -1824287, 2032056, 5890548, 6666326, -9091909, -2993592, -13319767, -1490891, +11975979, 493921, -5512591, 1398549, 4502737, 1007707, -4776541, -9405978, 2553358, -6301254, +6311992, -5942088, 22959284, -1961726, -12315282, -13837848, 3270081, -7515119, 7301445, -15539729, +-12199318, -15789374, 3782793, -13306346, -3110630, -19175956, 13945222, 3022583, 9417253, 5927055, +-20777978, 1784559, -1762010, -7639673, -11566347, -3011309, -9834401, -12354473, -6812355, 5992553, +8364449, 12202539, -6828461, 1863479, 5309654, -17361332, 8155606, -11836393, -993748, 10081899, +4312684, 4184372, 1939715, 20517596, -11548630, -4092030, -4333622, 5520107, -17249126, 1563368, +-1310502, 16106, 11360188, 6727530, 5667746, 2201171, -4130685, 874026, -2000381, 8378408, +-3063386, -869731, -4519916, 9476845, 3819300, -3071975, 2645700, -8040179, 5760625, 3076807, +4552666, 908386, -1548336, 5401458, 9564355, 3416110, -4504884, -6091338, -2470680, 2593624, +-6307697, -1265405, -9642738, -6906308, -3736622, 194347, -5258114, 4116189, -4121558, 9760850, +-7431367, 49929, 60666, -26827440, -7793755, 30001420, 26545046, 14891188, -12911209, 13119514, +19846508, -13215077, 17529372, -14221174, 16183974, 3770981, -1122597, 5290863, -382789, 8480950, +-12848395, -3700114, -5813775, 6444599, -12181601, -10976326, 17057462, -1707250, -3591130, 1553168, +-16542603, -429497, 26538066, 14423574, 2994666, -316217, 5634997, 25069724, 10702522, 318364, +4212289, -7021735, -3008625, -6054294, 10776610, -5666673, 7191386, 1292248, 12877923, -15353434, +-340913, -989990, 374736, -4380330, 7180112, 11512660, -2748242, -3368865, 11674258, 1268089, +1432909, 26418880, 4151086, 286152, -12155294, 5284958, -9045201, 12193412, -14203457, -12646531, +1910724, -12459700, -13253195, -20292110, 5401995, -6824703, 10416906, -3504693, 5872294, -29604672, +6003828, -10065793, -17923436, 9250823, 12352863, 6396280, 3814468, 2166811, 5175436, 7815767, +-3833258, -4651450, -5447629, -428960, -5973226, 3652870, 772557, -8608188, -5905043, 4815195, +2903398, 310311, 8715562, -3127273, -920734, -7023882, -1480690, -27917, 3608310, 2214056, +-5845988, -3646427, -1621350, -7114614, -1336272, -6686191, 2655364, 1719598, 7850127, 5283347, +-559956, -3252364, -6442, -20938, -2244121, -559420, -8209293, -1534914, 3359738, 3570192, +1038308, -1459215, 7907572, 1242319, 22466438, -34221224, 14556718, 15164456, -24284818, -2356327, +-20787642, -6772627, -18646600, -8365523, 21636434, -7227356, -1429687, -14984604, -2787971, 3599183, +-22258132, -746787, 14457397, -27538256, 1161789, -18764712, -10050760, 501437, 2183991, -12388296, +-9900973, -10362145, -2873870, -8893267, -431644, 4917738, -2570538, 7133404, -13345000, -8490077, +18178450, -8321499, 9914395, -10616085, 10309532, 9406515, 1739462, 2590402, 9614821, 557272, +13637058, 17170742, -3061775, 2633889, 25506738, 1612223, 13183939, -810138, -9932112, -19883014, +3515968, 13984950, -21894670, 393526, -12808129, -6711424, -28436978, 12459700, 19032610, -4832375, +9255118, -4532264, 20685636, 22811646, -1661616, -22393960, -21689048, 31265214, -24110336, 9188546, +3765076, 3332895, 23487028, -9836549, 38160784, -541703, -8447664, -9810242, -6684580, 6167036, +-2211908, -2808909, -60130, 9902584, -2265595, -6082748, 8398809, -2877091, 4323422, -7467875, +-4381941, 7270306, 731755, 10821170, -3364033, 4654671, -7719667, -2173254, -10629507, 2320356, +4588636, 5446019, 1225139, 5591511, 711354, -1606855, 6045167, -9077950, 6248641, -7688529, +-2582886, 4793184, -9352828, -2333778, -5285494, -15939161, -4099546, 1126355, 5979668, -7749195, +-3883187, -6808060, -2047626, 1748589, 12221866, 6307697, 37322728, 42058468, -2474438, -31711354, +31336618, -34671124, 4898410, 14705968, 3657165, -3711389, -15984258, 18014166, -8049843, -6458020, +-16275242, -9480067, -5062156, -20341502, -11170673, -9096204, -5066451, -3349538, 14143864, -215822, +12229919, 80531, -5252745, -17825188, -19490024, -4941897, -686121, -276489, -2935610, -7311645, +-8402567, 9320616, 22507776, -12231530, 7773354, -7645579, -7827041, 8908836, -8673150, -14127221, +31591632, -3508988, 2938295, 1523640, -17593796, -3904125, -3659312, 8910983, -22737020, -10117332, +24137180, 3843459, -10200547, 13062606, 24533390, -13963476, -17201344, 8925479, -14573361, 200253, +-27315456, 8796630, 23317914, -2420214, 12186970, 7045894, 4122095, 26650272, 8431021, -161598, +15445239, -2278480, -2078764, 9374303, 10150618, -38756712, 3596498, -16882980, 13748190, -680752, +586263, 9578314, -2851858, -3748970, -5029407, 5133560, 2041183, -3839701, 5236639, -5593658, +629750, -2995740, -7401840, 3379603, -3670050, 8309688, 4674535, -193274, 113280, 2241436, +-2143726, 4895726, 2507187, 1491964, 2103460, -1460289, 1915019, -3405372, -6405407, -3621194, +-1599875, 832687, -8354249, 6808060, 4704063, 279173, 2598455, -5733782, 8003135, 899259, +-4607963, 2806761, 3508452, -10183367, -1998770, 944893, -716723, 73014, 1941862, -1726577, +1583769, -50870128, -35539780, 15261093, -14882599, -14006962, -43226700, -12256226, 9593346, 3906273, +-8265665, -23899882, -1611, 12584791, -587337, 1979980, 13026636, 22894324, -19275276, 51721608, +-12920335, -16755741, -4884989, -2574296, 544387, -20031190, 776315, -3266323, 11171210, -6555731, +15681999, -6048388, -12768938, 5679021, 6648073, -11366094, 13061532, -38842612, 622233, -2818572, +15939161, 19210852, -13378823, 17935784, -6455336, 5354214, -8116415, -2510945, -4873178, 14413910, +-1580011, 18877992, 29307784, -24927990, -6751152, 13924821, -16702054, 10605885, -19015968, -10350871, +-9314710, -11008001, -19419694, -9807558, 9491341, 7810935, 15426986, 19934016, 14561013, -23480050, +3269544, 4701379, 5955509, 5104569, 15495168, -7143068, -15788300, 9503152, -3894999, -12273406, +2741800, -21239150, -8624831, -18464064, 2000918, 11350525, -6550899, 10919954, 5984500, -348429, +-3795141, -24159, -16440061, -5983427, 5813238, 3073049, 3923990, 1444183, 2147484, 1780264, +5464272, 1693828, -10959146, -1291175, 1954210, -853088, 3162707, -4867272, -4444218, -10699300, +3077881, 9980430, -10768557, -7481296, 5915781, -2525441, -10997264, 7672422, -5233955, -4244502, +6965900, -250719, -1868848, -3187940, -4760971, -6416145, -6824166, -1581085, -5777268, -3347390, +-2870649, 5069672, -118648, 52613, 7655243, -10128070, -34349000, 26819924, -44115220, 31874026, +-4000225, -19435800, -16535624, -18483392, -12383464, -9494025, 1442035, 23518704, -1382980, -18738942, +20948166, 29549374, -44055092, -11352672, 3572339, -3143379, -6483790, -1686312, -5719286, -7367480, +-12489228, 17068736, -5342940, -11810086, -20740398, -20503638, 21189758, 5960341, -3360275, -1735704, +452045, -4083440, -5221070, 5136781, -18213346, 10721849, 21630530, 16404628, 10292889, 20825222, +23976118, -12973486, 5427765, -18924162, 21485038, -11490111, -3073586, 457414, -30365418, 10559714, +25707526, 4890357, -10030359, -7882876, 33480880, -12749610, -13927505, 9872519, -33406256, -3363496, +-16392816, 1311039, -32666984, 14388677, 6086506, 14116484, -53234508, -45356464, 7848516, -15461345, +-10440529, -6055904, -35555888, 12479027, -20892868, -22535694, 17771500, -14966350, -8883066, 8055748, +-3455301, -6396280, -993211, -1328756, 7806103, -17076790, -8062728, -16451872, 322659, -6878390, +3710315, -1820529, -13219909, -4905390, 5025649, -246961, 1239635, 4239670, -14520748, 2522220, +-18474264, 9265318, 3087545, -12952548, 4569845, -15524696, -3251827, -5273683, 1442572, 9217000, +-6160594, 9517648, -4516158, 15750182, -6700686, 10142565, -5093831, -1020055, -291521, -1176284, +3252364, -898185, 171799, -572841, -3259343, 697395, 5581310, -846645, -2182917, -1217086, +1875827, -1247688, -1905355, -772557, -846109, 1142461, -854162, 19327, -763430, -1169305, +-718333, 1716376, 36507, -1829119, -5906, 554588, -2441689, 2180233, 38620884, -55790016, +55032488, 15551003, -2736431, 3743064, -41195716, 7463580, 18114024, -7969849, 46769508, -14440217, +19760070, -17637284, 51616380, -2761127, -7890929, -20927228, -8160438, 6783364, -6106907, 20395726, +15697569, -6453725, 605590, -21508660, 7058779, 20180440, 20526186, -24129664, 8924942, -5493263, +21979496, -7078106, 14011794, -14668924, -11592654, -31910534, 1290101, -20560546, -29819958, 40257804, +-19071802, -4565550, -8658117, -10821170, 4763119, 2468533, 13753022, -7827578, 21563420, 1151588, +39793408, 14639396, 44136696, 37234684, -4619774, 24573118, 18700288, -7695508, 22145388, 30236570, +-14212584, -32146756, 16938814, 10521059, 24705726, 12108050, -3321084, -1307818, -34138548, -4163971, +-10632192, -13104482, 43521976, -6090264, -1306207, 54050016, 36010616, 18814642, 23789286, 11637214, +766115, 5275831, 31143344, -632434, -9181566, 8453569, 26048440, 11603391, 14508400, 6538551, +17786534, -2025077, 4560182, 5889474, 12227235, 3405372, 2524367, 1289564, 700617, 9483825, +15046344, 5680094, 20139102, 465467, 12144557, 11752104, 22815404, -1411971, 15388868, 13264470, +2324114, 11021423, -55298, 1632088, -4708895, 3932580, 5842230, 2193118, 2691334, -192737, +-3511673, -377420, 4831838, -3968550, 2320893, 9666361, -3028489, 18865644, 1493038, 4214974, +-2047626, -8981313, 4846871, -3552475, 5571110, 16944720, -38510824, 73568496, -10142028, -8298414, +-4857608, 53516904, -33087892, 26810260, -36222144, 34083788, 6721087, -6715718, 671626, 19958176, +-8807367, 18615998, -8889509, -188979, 37422052, 11535745, -9888088, -150861, 9145059, 7390565, +-36792300, 9750113, -13580687, -3306588, -19534586, 18629420, 17402134, 2776696, 8086887, 31463320, +-10743861, -50015432, 11647414, 32804424, -13029320, -32869384, 8407935, 23508504, 7601555, 57445, +-39764956, -18869402, -23694798, 21946746, 8526584, 22611392, -47822852, 3080029, -9124121, -52397528, +-13968844, 7760469, 23374286, 33078764, -17960480, 61746596, 11622718, 1122597, -13113072, -24846922, +-17623324, 11687680, -28993714, 58226872, -19029390, 2452963, 34005940, -22606024, 20586316, -22075058, +-13107166, 48331804, -24866250, 31720480, 28739236, 10680510, 12848395, -41722924, -5455146, -2113124, +-15080167, 19768660, 17296370, 7295539, 4941360, 19252728, -5034239, 7576323, -2789045, 5828808, +-8725226, 6904697, -1917703, 5855114, 3946538, 1387811, -14764487, -2317135, 1437203, -4991826, +-2212982, 10294500, 5102958, 16894790, -8153459, 3665755, -27998354, -22923852, -3891777, -1261647, +15781320, 12444131, -8368207, -5582921, -22487376, 106837, 6955163, -3347927, -638876, 5436355, +-7516193, 5137855, -16780974, 1144072, -6065568, -6079526, 9997610, -43248172, 24785720, 15886547, +24789478, -9801652, -6967511, 10084583, 126702, 2922188, 978179, 4961761, 1219234, -6739341, +32040456, -7391102, -22010634, 9403294, -534723, -19346680, 6806450, 4566087, 13245142, -8883603, +-14656576, 15880642, -12668006, -1658394, -3748433, 13049721, -22337588, 7714835, -13845901, 11417634, +-19676318, 7083475, -6577743, 3470871, 43231532, -29633664, 5660230, 9583683, -26751740, 9793599, +12369506, -19767050, -4109747, -7523709, 35954780, 3102577, -41536092, 24958592, -33572684, 6186364, +17412334, -16047608, 19913078, -23995446, -19830400, 27400818, -4628901, 11690364, -40929428, 7747584, +8868034, -2095944, -6300717, -263067, 16632798, 705448, -54439784, 33066954, -3416647, 12749074, +-14292041, -16569984, 51939576, -1302986, -33201708, 2957622, 16779900, 3913252, -50483044, 1877975, +46845208, -8492761, -21658446, 5212480, 22664542, -2943126, 83752, -3905199, -2335925, 3324305, +-8189966, -4706211, 15390478, -6597070, -415001, -8967892, 9029632, 13813152, -2457258, -1978369, +14544370, 4846871, -9984725, -2292439, 6271189, 4280472, -8480413, 4638028, 10010495, -8258149, +2156611, 2595771, 6455336, -15448460, 998580, 9837086, 3688840, -10734734, 623307, 7759932, +1279363, -7940321, -5406290, 8698383, 21048024, -6551436, -106514112, -227261216, -90339808, -170964928, +-208346176, 74546672, -296890, 76447200, 289189824, 252627296, 143950128, 276778432, 154566208, 17940078, +95986616, 59269476, -103961296, -73320464, -21233782, -115290880, -139544032, -46102180, -70414376, -110349520, +-27364848, -4532801, -140662864, -96759704, -14258218, -85299664, -110590040, -31887984, -54039280, -120263376, +-22720914, 12764106, -67253280, -51162724, 51511152, -17904644, -72162968, 15705085, 48518636, -35364760, +29916594, 106194144, -15094126, -27753542, 105079056, 56315076, -25705916, 174244144, 236658608, 147485952, +249518816, 373060320, 287053056, 273210912, 399023936, 345994528, 254754912, 312487872, 284094912, 180900800, +160053568, 86361056, -29238526, -124050464, -222340800, -316038176, -376195104, -471784992, -504119104, -531599904, +-602326720, -601882752, -454811808, -465380640, -423807520, -190611184, -147416160, -143347216, 64187212, 122146184, +3046206, 127283504, 176451216, 60701848, 84324704, 165521600, 123800288, 72280008, 116941760, 144709792, +61733176, 90252296, 179455552, 106909256, 70509408, 165423344, 124139584, 50385872, 107630272, 122924648, +16128676, 63675576, 147852640, 84950160, 101817568, 208285520, 195940704, 206478944, 267224272, 269111904, +215923040, 204262736, 174369760, 106613976, 76947024, 41098544, -6082748, -41659572, -113491288, -155152480, +-209835456, -279681824, -311481760, -351964512, -409767808, -390216576, -350481152, -309506624, -226271232, -148282128, +-78575352, -28872918, 12364674, 26057030, 31842888, 41044320, 43493524, 36816460, 39323648, 43449500, +42179264, 47282760, 61100740, 68599216, 73390792, 81787992, 84344568, 85528368, 89899568, 83154328, +71506376, 53586696, 33440078, 21274584, 5987722, -3935801, -6850473, -10212358, -14584635, -14309757, +-12278238, -6786585, 812286, 8786966, 17835388, 20947092, 22754736, 26548804, 28432684, 28261422, +29658360, 32751810, 31223876, 28227062, 31469762, 28022514, 20662014, 25450366, 26267484, 17830556, +17988934, 15598784, 4242354, 1209033, -210453, -12014097, -19874962, -22814866, -28948616, -35170952, +-36511516, -39032124, -44935020, -45916960, -45435924, -48728552, -51187956, -48898204, -47878684, -48764520, +-44014288, -37648072, -34082176, -27918362, -17423072, -9823127, -3357591, 5983963, 14271103, 18410914, +22398792, 27732604, 29164976, 28369870, 29122562, 28196998, 25244744, 23264764, 21437792, 18597746, +15851651, 13785234, 11205033, 8602283, 6847789, 5546951, 4046396, 3058017, 2118493, 1206349, +641561, 303869, 10201, -122943, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -7136625, -232465, 5719286, 3935801, 3961034, 2498597, 1589138, -2220498, 112206, -2531346, 6118181, -3750580, 1489817, 903554, 906775, -54224, -1899449, 3012383, 4218732, 4048544, 2495913, --3048353, -4396436, -4825396, -4569845, -466004, 2430415, -4718022, 3980361, -936840, 6936372, --1136019, 4417911, 72478, -5698348, 1653026, -706522, 4647155, 351114, -528818, -2306398, --3910568, 384936, 2227478, -4998268, -6865505, 4835597, -3972308, -3639448, -3454228, 2739652, --2723009, 1184337, -1211718, -306553, -4040491, -1190243, -2746095, -3994320, 1336272, 3158949, --1151588, -4396973, -855772, -870268, -2214593, -3796214, -286689, -3081639, -3660386, -629750, -261993, 897648, -1235340, 573378, -671626, -5143760, -1134945, 672699, -1423245, -1294396, --1617592, 1691680, -1977296, 1740536, -135291, 330176, 660888, -1231582, 1250909, 46708, --687732, 344134, -335544, -1040456, 179315, 842350, -550830, -434329, -47782, 1338956, -591095, 219580, 202937, 739271, 476741, 852551, 231928, 1087164, -876173, -349503, --396748, 13454522, -4745939, -3119757, -4234301, -2921115, 282931, -9060234, 1492501, -4512937, --8866960, -1923609, 7543573, -5482526, 1447404, -679679, 2512019, 3789235, 4064650, 6578280, --1445257, -3828963, 1659468, 1559073, -3066607, -478352, -2080375, -1376000, 787053, -3512747, --2197413, -545461, -4398047, -5173288, 2596845, 3925600, -2377801, -5939940, -1058710, -1425929, -810675, 4721243, 291521, -2018098, -340376, 6334540, 772557, -3948686, -3786014, 1605781, -1185948, 5044976, 2869575, -381178, -4882304, 224412, -307090, 4130685, -4494684, -1551557, -2438468, 4807142, -1388885, 381178, -3697967, -2116882, 2236067, 88584, 457414, 1266479, --1448478, 1715303, 506806, 2109903, 1314260, 782221, 8427800, 2531346, -361851, -1194538, --2504503, 3564286, 2231773, 3856344, 2773475, 923955, 1024350, -876710, 761820, -1641214, --1701881, -1357210, 431107, -659814, -425739, -318364, 1350767, 162135, 1769527, 103616, --574989, -288300, -180926, -312996, 570694, 350577, 710817, -9887015, -2312840, -4658429, -4546760, 1162326, 124017, 3239479, -1898912, -7638063, -4020626, 5102958, -262530, 5257040, --373662, -2947421, 5823439, 2200634, 12746389, -2376728, 5543192, 826781, -5981816, 1531156, --5078799, 3320010, 1184337, 1319092, -5428302, 2746095, -933082, -1901597, 2250026, 8689256, -3237869, -26307, -6939057, 6054830, -1255741, 51003, 4282083, -6302328, -1168231, 4388383, --2573222, -2232309, -7126425, -7773354, -579284, 4749160, 2794950, -3102577, -73014, 3103651, -3868155, 1561758, -779000, -1475858, -6830072, 3245385, 8524973, 3898757, -2443837, -1173600, -2705293, 4089346, -309238, -1240709, 1023276, -5603859, -1034550, -3918621, -1835562, -337155, --2415919, 6516003, 5663452, -1661079, 2845416, 2128693, -1076426, -3804267, 908386, -2938295, --1118839, 905164, -3821447, -787590, 385473, -1081795, 1090385, 1666447, -2445447, -848256, --161598, 194884, -1919850, 536334, -889058, 1475321, -1703491, 1627256, -1166621, 414464, -258772, -801011, 640487, 315143, -624381, 590558, 622233, 677531, -1268626, -563178, -19864, -1759326, 227633, 1090385, -362925, -7386807, 8371428, -7109245, 7649874, -14496, --5997385, -14223321, -5565741, -4042101, 2197950, 7542500, 5918465, -1745904, -1087701, -1683090, --4035659, -1122597, -4542465, 1636383, 1756105, 2894808, 4770098, 2849174, 9068287, 86973, -1882806, -3113315, -677531, -2088965, 3374234, 1060857, -4123169, -5998996, 316217, -4289599, -613107, 4179003, -6788196, 4893579, -11467026, -3111704, -8487929, 1530082, -456340, 213138, --3282429, -4453881, 1672353, 4160213, 3004330, 1153199, -6802692, 2171643, -4674535, -1734630, --1287417, -9297530, -3580929, 2884071, 3704946, -244276, -6374805, 1190780, 2534031, -1168768, --1199370, 855772, 5707475, 2100776, -1174137, -1721208, 1079647, -13276818, 1051730, 3470871, -3271155, 9498320, 1395864, -5194763, 6007586, -1985886, 983548, 2164664, 2053531, -1277753, --4306242, 332860, 2679523, 2552821, 4096325, -1170916, -1217623, 783295, -669478, -422517, -730681, -1057099, 469762, 1000191, -456877, -2068564, -1556389, -2684, 345745, 645319, --937914, 2116345, -970126, -508954, 1406065, 1611687, -355409, -2302639, -1160715, 1026497, --1117765, -572841, -643171, 587874, 1946694, -269509, 471910, 2009508, 9548786, -2421288, -137976, 6301791, -3248069, -3030636, 9418326, -7169374, -16976396, -11135776, -6564321, 10206990, -4340065, 1420560, -9834938, 10416369, -4491462, 2927020, -2697240, 4097936, 5006322, -402116, -124017, -81604, -1697049, -5369783, -4346507, -1309965, 559420, 4737886, 2670933, 7394860, -3517041, -3207267, -1727651, 6584722, -4740034, 8077223, -6459094, 1750199, 3529390, 2302639, --5241471, 7123740, -705448, 7653632, 10050223, 1561758, -4034585, -3878356, 4239670, -4818954, --10241350, -2614561, 2130841, -6539625, 3727495, 3062312, -2197413, -4055523, -1760937, -1534377, -1947768, -760746, -5778879, -2163053, 9920838, 8024610, 4279935, -11813844, -11659762, -6323803, -11139535, 5695127, -903017, 1594507, -5535139, 7095286, -345745, -5446019, -1936493, 773631, --572304, -2706903, -432718, -2133525, -1185411, 2135673, 3047279, -1755568, -64425, 324807, -484794, 493384, -3092913, 3569655, -278099, -3441880, -2101850, -430570, -1122060, 116501, --289910, -380105, -400506, 893353, 139050, -1552094, -140123, 681289, -428423, -2441689, --1738388, -2272575, -853625, 1757715, 4894115, 7155953, -287226, 2822867, -10989211, -3641059, -1920387, 3899294, -13653701, -1420560, 6027987, -4042638, -8846559, 5679558, -10306848, -7537668, --4023311, 1011465, -3675955, -2470143, -234076, 7837779, -6470368, 1815697, -1981054, -2635499, --5430450, -1431298, -7975218, -2310693, -136365, 1637993, -5545877, -1097364, -3461207, 607738, --1715839, -2412698, 1585917, 6460168, 1720671, -3226057, 3267396, -4770635, -1105954, 1954747, --1748589, 3263102, -933619, -268435, -22308598, 1576790, -7665443, 3881577, 3344706, 5038534, --12232067, -12497281, 1801739, 525597, 3042984, 167504, 6810745, -2635499, 3750043, 4598300, --2047089, 10612327, -3189550, -6775848, -1356136, -5595806, -91268, -11150809, 272194, 5633387, -2709588, 8458938, -2216203, -2218351, 3809099, -4358318, 1157494, 2801393, 5519570, -2827162, -3213173, -4328790, 980326, 243203, 692027, -2100776, -922881, -1550483, 1837172, -1946694, --3087008, -2684, -1398549, -1937030, -606664, -1505923, -571768, -926639, 1027034, -1510218, -1020055, -3107946, -224949, -1839857, -690416, 304943, 325881, -398895, -1398549, 186831, --1002338, 520765, 170188, 8673150, -17505750, 4679367, 744103, 4849555, 7044283, 1266479, --6788733, -14921253, 1064078, -6041409, 11326903, -4626217, 2341294, 806380, 2425583, 8524973, --3765613, -281320, -3954591, -2254321, 2242510, -2177549, 8028368, 5947456, 1726577, -1725503, -126165, 5340255, -535260, 2563559, -104690, -4452271, 3930969, -1167157, -3291019, 4708358, -8051990, -10201, 3164317, 528818, -5300527, -3357054, 9776956, -4745402, 4693326, 7063611, --9389335, 6681359, 3627637, 3371549, -4147328, 6850473, 2021856, -1234803, 8853538, 281320, --68719, -4177393, -2312303, -51540, -3815542, -9477919, -2439005, 9580998, 7307350, 7872138, --839666, -8409546, 3514357, 10049150, -1838246, -7210713, -316217, -5112622, -1246077, -898185, -7921531, -813896, 4094715, -1096290, 423054, -5609228, 1525250, -1018981, 2236604, 2088965, --3757560, 2527052, -5981279, 526670, 2244657, 88584, -1490891, -175557, 1271310, -4263292, --699543, -4017942, 1304060, -2569464, -1490354, -2493766, -3963718, -2747705, -952409, 504659, --1152125, -180926, 1370632, 344671, -965831, -836445, -1117228, 2233383, 176631, 750009, -1605781, 845035, 1162862, -632971, 2088965, -392453, 158914, 731218, -660888, -1184337, -638876, 1992865, -8324721, -2466385, -13412109, -3933116, -7786239, -9179419, -8703751, -3093987, -11673721, 12702903, 17509508, 3901978, -6702297, -4131759, 14490146, -71941, -3398930, 11095511, --1180579, 466541, -17380658, 7834021, 4350802, -11605539, 16038482, -2255932, 7195681, -1968706, -3753802, 7117835, -2147, 12598213, 4820564, 3560528, -1479079, -4494684, 1192927, 7624104, --2068564, 2250026, 3563212, 10103911, -491237, -3085397, 6509560, -7688529, -4834523, 3446175, -11158325, -4975720, -6006512, -1912334, 9193377, 62277, 1286880, -3462281, -1588601, 3282429, -4842576, 408559, -3987877, -12758737, 1496796, 3731253, 12112345, 3502546, -991601, 9292162, -16630113, -3448859, 5818070, 3906810, 6883222, -1363115, -5864241, 3409130, -13809930, -3772592, --2103460, -4496831, -2800856, 7164543, 2469606, -8952859, -5281736, 235149, -2927020, -338766, --6845104, -227096, -2350958, -1741609, -948651, 667867, -1912871, -493921, -936303, 1446330, --543850, 1325534, -1875290, -73014, 282931, 605590, 2768107, 67646, -1068910, 2573759, -3779571, -317828, -2325725, -1480690, -3274376, -2873870, 3926137, -680752, 1057636, 1427540, -1389422, 1289027, -3014530, 1461363, -1095754, -15311022, 21101174, -10850698, 4680978, -927176, --7468948, 16051903, 3670050, 1869385, -17257716, 4302484, -6969658, -7929584, 1757715, -7742753, -8514773, 5101348, -1600412, 1597191, -4338454, -2032056, -6365679, -4137127, -7616588, -11673184, --2988760, -8209293, -2313914, 4253628, -3409667, -4482335, 8986145, 5602785, 9019431, -7654169, --997506, -1647657, -8407935, -55835, -4541391, -20694226, 1648731, 234076, -3330747, 6995428, --897648, 7732015, 6513318, 2323041, 12214350, 10866804, -11020886, -3115999, -64425, -539018, -3711926, 1342177, 10358924, -2383707, 16638166, -160524, -10063645, -8176544, 1126355, 2893197, -3275450, 12069932, 3046206, 2917357, 11314554, 15143518, 462783, -9515500, -9044127, -980326, --3144453, -2306398, 19578608, 1275068, -9135395, 6273874, -8020315, 7364795, 1069984, -1700270, --2518462, -6174553, 1507534, 1853278, -1066763, 1621350, 3156801, 1709397, 2094333, -1032403, --1015760, 71941, -1281511, -1077500, 2058900, 736050, 1407139, 1847373, 3357054, 50466, --1845762, 3143379, 1688996, 483721, 566936, -836445, 311922, -280247, 3335579, 5345087, --3161633, 2466922, -843961, 2128156, 103079, 325881, 4496831, -408022, 256624, 237297, -3655554, 2391760, 2619393, 1690070, 273267, 12633109, 865436, 8479339, -9513353, 4095788, -638340, -805843, 5556614, 13369159, -3835406, -1330366, 12288438, -16514686, -9266929, -7270843, --18919330, 3588982, -6085969, -2752000, 2130841, -12931610, 13929116, 10499584, 14802605, 6597607, --9427453, 776852, 463320, 11070815, -2200634, -462246, -571231, -7039452, 419296, -4181688, -6106907, -7461432, -2925410, -2583960, -3324842, -8720931, 3911105, -12742631, -2075543, -991601, -7794829, 4600984, 909459, 36507, -2364916, 825707, -30602, 6493454, 1373316, 1813550, --1208496, -19888382, -9359271, 2199023, 8045548, 9739912, -15665356, 10281615, 2917894, -6199249, -1329292, 3265249, -3839701, 14930380, -26844, 2791192, -3711389, -21015812, -7349226, -9617506, --2654827, 300111, -5982353, 2928631, 4279398, -4379256, -1077500, 13378823, 197569, 6779069, --8438537, 966368, -322123, 7670275, 6651831, 4856535, -2056753, 1528472, 5422396, 3342558, --446677, 5854041, 5547487, 6221260, 612033, 2332704, 1948305, 959388, -1026497, -867047, -5217849, 963683, -3084324, 427349, -638876, 2934537, -2310693, 895501, 2604361, -2260764, -4172024, 1473711, -840203, 317828, -4045859, 2751464, 2578054, -500901, -1094680, -2375654, --3405909, 868657, 19536196, 3223910, 7976828, -11555073, -10446434, 6215892, 10205916, 1308891, --3427384, 18749680, 5995238, 200253, -5020817, 4178466, -1306207, -1937030, -555661, -3080029, -1007707, -6075231, -14630806, 4986994, 1658394, 4622459, 1607392, 8327942, 2641405, -8718784, --17839146, 586263, 1488206, -1328219, -15592342, -7562901, -2223719, 4523675, -3291556, 1877975, --13618804, 785442, -2929705, 202937, 1525787, 3934727, -1338419, -12838194, -11766063, -7310571, -5150740, 3810710, -3027415, -2577517, -20618528, -11640435, -271657, -20141250, 18788334, -19011136, --5104032, -12272332, 20140712, 6517613, -13935021, 7188702, -1485522, 7663296, -11849815, -3869766, -673236, 8235600, -11241003, -4452808, -3721589, -11481521, 974421, 7794829, -1298691, -2027761, -14011794, -21862458, 17447230, -2771328, 3807489, -9807558, 7106561, -1017370, 5694053, -4931696, -439160, 4483946, 4932233, -1283122, -2247342, 116501, 649077, 665183, -1455994, 5500780, -5843303, 4097399, 1206886, 4151086, -224949, 5082557, -1680943, 1001801, -54224, -1799591, --1763084, 426812, -3961034, -4911295, -1284195, -230854, 5221607, -227096, -660351, -1306207, --3318936, 2531346, -950798, -1748589, -1082869, 2679523, -379568, -5588826, -585189, 2081449, -652298, -471373, 17247514, 37541236, -4869956, -11497091, -10769630, -9480603, -13683766, 2449205, --23404350, -43487, -18062484, -8253854, 5755256, 11593727, 6695854, -8029442, -986232, 11039140, --608812, 12716324, -7342784, -7381975, -6527814, 6088116, -4257387, -5557688, 2142115, -6695854, --6867116, 8680666, 20217484, 7754027, 8719320, 3978750, -11704323, -2630668, -9475235, -8899709, --1318555, -1469416, -7421704, -11904039, -24143084, -2092723, -8689256, 3318936, -4363150, 9266929, -8547522, 4961761, 8939974, 6385543, -816044, 17172890, 24363202, 5978058, -28277528, 5962489, --4971962, -16444356, 2431488, 8311299, 4151623, 908386, 7916162, -281857, -13414793, 1013075, -6527814, -13371844, -7008313, -12516072, -23437636, 18725520, 2677912, -1183800, 13054553, 10295037, -836982, 943819, 12903155, -17185238, -7448547, 2152852, 9549860, 8167417, 12243341, 8942122, --7045357, -3946001, -1463510, -2545842, -911070, -1522029, -3353833, -4338454, -6941204, -6902013, --4967130, -2498597, -631360, 3738232, -1789391, -1214939, -7968238, -5310190, 975494, 4489852, -3068217, 1991791, 1850057, 1455994, -1000191, -3896072, -1872069, -2336462, -2157147, 1053341, --4317516, 1177358, -3036542, 3640522, -235686, -909459, -2899640, 3061775, -2653753, -622770, -5776731, -2051384, -24159, 27737972, -20232518, 24002962, -1823751, -2677375, -11956115, -4295504, --11878269, -10050760, 12894029, -11129871, 6745783, 28760712, 10788421, -4037806, -12728672, -10625749, -12907987, -10217190, -17468706, -7059853, 1970853, 1890323, -19969450, 1637456, -5947456, 10712185, --6200859, -79994, 2491618, 30255360, -7107097, -9374303, 14727443, -11375221, 17659294, -10009421, -12971338, 2378338, -9106404, -8240969, 16422344, -20781200, 16158204, -8822937, 1789928, -4794257, -8893267, -7029251, -3565360, -45634, -6329171, 30878668, -8666170, 21150030, 8252243, 9832791, --8590, 8157754, 13550622, 15276662, -3990025, -14329085, 211527, 12661027, 5130876, -1963337, --18206366, 24766928, -5005248, -15969225, -4371203, -9695352, 7793755, 10839424, 551903, 18002892, --4676683, 9359807, -20049444, -3305514, -21402896, -6440841, -7758322, -226023, 1308891, -3884261, -7795366, 2790655, -5697811, -9635222, -7242926, -1858647, -812823, -4690105, -963146, -1480153, -6181532, -1519882, 360240, -2021319, -9218610, -2530810, -3648038, 1433982, -1456531, -4939750, --8046085, 3522410, -5411659, 2842195, 3702262, -5391795, -13864691, -3025805, -2103460, -3410741, --4898410, 884226, -2250563, 1819456, 1711008, -6016176, -750546, -6054294, 5987185, 3963181, --3282429, 1934883, -5521718, -31294742, -13383655, 19131932, -3827890, -7894150, 22250614, 2094333, --11609297, 8411693, 12102144, 10248329, 1581622, -19270982, -7966628, 2896419, 2820183, 10010495, -6634651, 11296838, -9837623, -7798050, 3795677, -2709051, 9285182, -18122614, -3067144, -19600084, --6328098, 3499325, -2698313, -2498060, 20924544, 4317516, -15507516, -2394444, 1247151, -15888158, --2145336, 735513, 9528385, 24019604, -8534637, 8001524, -13424457, 1979980, -7895761, -10216117, -9814000, 20998632, -16671452, 1566053, 18753974, -8513699, -1723356, -7085623, 12279311, 2910377, --15232638, -238908, -5316096, -5000416, -1506460, -7543573, 11368242, -27006754, 5720897, 2200634, --11320997, 15038828, 23167054, 16285442, 44119516, 13314399, -11294690, -15727633, -12931073, -7136088, -16210817, -5907191, 22505092, 1995012, 27401354, -32610076, -20845086, 9729712, -5319854, -3441880, -13160854, -8940511, -979789, 13888850, 6257231, 10280541, 15335181, 11870216, -2554432, 4795868, --9319005, 248571, -320512, -6658810, -7144141, 4697084, -9858024, -939524, 15024332, 1269163, --8891656, -11777874, 2224793, -14775224, -5346698, 15686831, 8264591, -2689187, -3554086, 2932389, --2861522, -5093295, 1132261, -3751117, -5539971, -1080721, -7631083, 5334887, 4818954, 5101348, --2779918, -2181307, 3434363, 7946763, 21740050, -51583632, -2232309, 29113972, -39231840, -1967095, -7495792, -40524628, 17874580, 4730370, 32141924, -3418257, 11240466, 9343701, -35674000, -29577830, --11625403, -3036542, -17945984, -22035330, -11737072, 19996830, 13974750, 12040404, 1125281, 2084670, -6199786, 1060857, -25945898, -9838159, -33256468, -10761041, 18320184, 5311264, 12320651, 41408316, -10645613, 15528454, -828392, 8131984, 36468032, 27359478, 7512972, 17884244, 16426102, 36363340, -29867740, -40028020, 24780350, -2420751, 23709294, 24107114, 9961103, 43695924, 38613368, -21555368, -19031000, -459562, 18131204, -32247688, 2972654, 3286724, 1048509, -7433515, 20174536, 21828098, --21461414, -7388418, -12664248, 7563438, -17812304, -22112102, 20485384, 35009352, 12770548, 36441724, --10688026, 49579492, 48577152, 13451301, 25412784, -7622493, -12921409, 11287174, 11169062, 5302137, -3742527, 2818036, 6439767, -7107097, -12690555, -9169755, -23723252, -24917252, -10108206, 11363410, --433255, 9999758, 1674500, 6023155, 14916421, 18261664, -6082748, 8283382, -1001264, -7795366, --6431714, -5592585, -15651935, -7326141, 142808, -13616657, -4868346, -12274480, -6795712, 2441152, -16807818, -8149164, 5986111, 4598836, -2957622, 9163313, 5356898, 6953015, 106300, 12224551, -7866770, 5226439, -5053566, -7693360, -3312494, -16594143, 23670638, 42750492, -6043556, -58822800, --18911278, 5793374, -4759361, -9910100, -13050258, 18254, -33720860, -20289962, -28028956, -4667556, --8314520, 9120900, -20058572, -5878200, 5186710, 9159018, -404801, 10210748, 20093468, 4038343, -29066728, -18983218, 6874632, 1031329, 27721330, 7175280, -5640903, -28236726, 18502182, -4974109, -25273736, -21501680, -17140140, -16316044, -8802535, -26015690, -3734474, -4596152, -24546274, 13315472, -27581744, -13530758, 3943854, -36135708, 34476776, -11020886, -19036368, 15737297, 13668733, -20684026, -1630477, -12911745, 4367982, -9466645, 43202004, -1646583, -3887482, -10726144, 76389216, 1932735, --10560251, 32787244, 26161182, -27827630, 21546778, -34085396, -19116900, -35612796, 27041650, -24500104, -12960064, 18727132, 14722611, -31552978, 39679056, -7161858, -52382496, -59499792, -23643794, -7285875, --17481054, 13926431, 13480829, 23608898, 3666292, 2117956, -17901424, 17864380, 27713276, 41012644, -10572062, -11649025, 3767760, 34923988, 5580773, -19132468, -4984310, 37277096, 8293582, -21876952, --5938866, 18463528, 10361072, 16829830, 10997801, 23670102, -58519, 13066364, 4336843, 16801376, -7623030, 26637924, 8533563, 16889422, -3558381, 5408975, 964220, -1810866, 6770479, -2183454, -8865886, 16691854, 2200634, 9775882, 908922, 12661027, -28516436, -6349573, 21442088, 1961190, --16522202, -78857208, 5629092, 50667728, -30623116, -20429548, 40692668, -29619706, -1924145, -8421357, -39058968, -67092220, 37499896, 22244710, -18928994, 6990596, 36637680, 26148298, -12825846, 14957760, -6724845, -10232760, 17234094, -383863, 10451803, 15843597, -6757058, 3817689, -1703491, 7549479, --9698573, -7829726, -611496, 13594645, -39766564, -19705846, 19796578, -4483409, -26360362, -31166430, -5409512, 38743288, -16798690, -24778740, 19077170, 28894930, -6303938, 7252589, -5087389, 26912266, --14601278, 40360880, -5435281, 57445, 22154516, 449361, 5124433, -28702192, 45106284, -23322210, --28193240, 21381420, -29853780, -9904195, 5090073, 14880451, 41685880, -14804752, 26010322, -5319854, -13640279, -70565240, -53900764, -9942312, -20978230, 10736344, 9802189, 26743150, -4168803, -5652177, -32003948, -35020088, -709743, 22332220, 22165790, -8181376, 24692304, 3059627, -5169530, -169651, --5385352, 23533200, -13018046, -1388885, 23070416, 5231807, -5121212, 9010841, -11319923, 2892661, --770947, 341450, 9391483, 4292820, -12951474, -3044058, 4155918, -10217727, -14795089, -263067, -11026255, 19115288, -16067473, 18673980, 6540162, -18797462, 15663746, 17709224, -8819715, -21288006, -19649476, -9767829, 3744675, 10662256, -10537165, -28176596, 9343701, 7467875, -15385647, -14788109, -1260573, 10525354, -12160663, 4465692, -5252208, -25849260, -11890617, 19741818, -32350230, 32572496, --27478664, -34584688, 20266340, -16494285, -11000485, 20691542, -14766634, 17352204, -11517492, 8298951, -39908300, -34892316, -2122788, -4973572, 33683280, 4910222, 3558381, -31197032, -29256244, -10137733, --8253317, -4206384, -9154723, 6273337, 2145336, -2831994, 5335423, 7531762, 3830574, 5935645, --5692979, 15945066, -9681393, 15273977, -27705224, 1394254, -22365506, -29133836, -17003238, 39661340, --16513076, -16879222, -12429098, 9419400, -7414724, 17869748, 25870198, -26317412, 24329380, 4674535, --36509368, -18103288, 76741400, 39979704, -57437672, -10503879, 37172404, -18251464, -20699594, 15182173, --17832704, -39594228, 29127394, 13480292, -53949084, 22772990, 27973658, -31584652, -20682952, 32844688, --7520488, -24033026, 6001680, 16491064, -38977364, 7845832, 7384660, 11713986, -29653528, -8576513, --2197950, -9269076, -1661079, 2323577, 3753802, -18040474, 3306588, 27535036, 9818295, 2073396, -9354439, -115964, -4110821, -14574972, -4236449, -7727183, -10579578, -25217364, 7210177, -14238890, --3668439, 31750008, -27381490, -17787608, 23516020, -16363825, -5697274, -6876780, 10802916, -17754858, --6206765, 29306710, 15701864, -13761075, 16642461, 9494562, -11679627, -7271380, 39763344, -31082142, --24082418, 42306500, 144955, -33065880, 4965519, 21026550, -19434728, -41378252, 28256590, 3843459, --45949172, 8370355, 13303661, -33428268, -352187, 23130010, -5953899, -14636712, 12332999, 9922985, --22917408, -1946694, 17573396, -12840342, -16414291, 11803107, 1065689, 47661788, 67630704, -27452358, -75749800, -6299644, -21081846, -16404628, -26006564, -2481954, 12510703, 44523240, 1290101, 13481365, --11636677, -39021388, 488553, 1071594, 25258166, 4490389, -29472066, 54006528, -23452132, 9788767, -24206436, -27467926, -22218940, -39045548, -17157858, 23500450, 29549912, 36381056, -14099841, -90383288, -19737522, 46577308, 60018948, 51359220, -1014149, -26181046, -32134946, 10459319, 30505542, -20030116, --10581189, -80161808, -49060336, 42406360, 71888088, 14339822, -2197413, -17960480, -31764504, -7857106, -19786378, -28388124, 10724533, -4443144, 45371496, -2433099, 17567490, -89640800, -11539503, 602906, -54550916, 41939280, -1358283, -27210228, -7574175, 64639256, 29239600, -76978160, -94932200, -37516004, -18836652, 146545360, 15694347, -26080116, 20058034, -39910448, 104294152, 31352724, -83384640, -52591336, --10557030, 73229728, 10901164, -31287764, -28654948, -26902064, 20842402, 39155608, 19754702, -43373800, --3711926, -15298674, 35173096, -4421669, 21220896, -8106214, -9138080, -28991030, 10932839, -9308805, --3148211, 21456582, -34799436, 19651622, -5347235, -5925445, 51003, 15376520, 34307660, 16739635, -2246268, -7451232, 7201587, -964757, 13888314, 3922379, 15339476, 3149285, 3831648, -18130668, -8039642, 8494372, 6217502, -585189, 5113159, 2524904, 15222438, 17691508, 14202920, 1298154, --10040023, -15431817, 4350802, 6841346, -8898635, 7502234, -12367895, 31361314, -36153960, 1126355, --14556718, 8357470, -22401476, 21018496, 5786395, -11906723, -22601728, -11073499, -4313758, 6595459, --30842160, 7133941, -15126875, -5842766, -24164560, -11325829, 19512036, -20537996, -7321846, -2785823, -9509594, 6515466, -8068096, 11129334, -17712982, -1347009, 158914, 9542344, -11627550, 16844324, -12463995, -12692702, -14840186, -5573257, 23795730, -17102560, 7467338, 17812304, 3882651, -17192754, --6691022, 7530689, -10923712, 8150774, 708670, 3998615, -16040629, 3461744, -13062069, -452045, -11981885, 15354508, 11774653, -8693551, 11228118, 1559073, -14281303, -1974611, -128849, 17088602, --4748623, 3714610, 14642617, -3034395, -19292994, 26964878, -10992432, 16015396, 11537356, 2889439, -3652870, -11172284, -14000520, 18636400, 2755759, 16418586, 4843113, 9022653, 4446902, -345745, --915902, -14040785, 1546188, 3970161, 4952098, 5786932, -1816234, 6714108, 1063541, -683974, -1736241, 1003412, 6699612, -1680406, 5208722, -6356552, -1733556, 166430, 448824, -3499862, --2158758, 12724914, 7831873, -1961190, -9066676, -9990094, -3856344, -3925600, 11394011, 1333587, --3560528, -7405598, -4006668, 1260573, -6411850, 13424457, 1113470, -5184026, 2138357, -56371, --2527588, 3935801, -4012036, 11694122, -10950556, 8098161, -10666014, -29316374, 54380192, 4793184, -2824478, -22190486, 12495670, -2015413, 14158897, 10750303, 16597364, 1690070, 4114042, -9583683, -2560874, 15194521, -1659468, 8243116, -1489280, 2517388, 3243237, 6070937, -6659884, 11465415, --8068633, 913754, -1429150, 3788161, -1191853, 2184528, 8683887, 9542880, -4837207, 4126927, -1736777, -2319282, -4318590, 12761422, -4123169, 2583423, -3826816, 6604049, -194884, -6333466, -12823699, -8213588, -2945811, 3295851, -6258304, -3839164, -2049236, 395674, -2490007, 79457, --1397475, -3493419, 4258460, -8491150, 5116917, 3437585, -3009162, 5405217, -4357781, 6428493, --3527779, 1132798, 1137630, -4073240, 6316287, -115427, 756451, -2160906, 8557185, -10448045, -10871636, -7918309, 1182727, 1782948, -443455, 1926293, -1893007, 6264210, -6122476, 319438, -5345624, -6707129, 4011500, 3635153, -1103807, 714575, 3607773, 1677722, -1864553, 2392297, -548145, -943819, 384936, 2090039, 128849, -2872260, 627602, 1045825, -1552094, 3106335, --831613, 2537252, -1820529, 343597, 1945083, -1442572, 208306, 1340030, -2188823, 3418794, --464930, 1647657, -580357, 3605088, -1436667, 357556, 3329137, -3116536, 3871376, -2391760, -1606855, -2456185, 3797288, -673773, 10441602, -49767932, -123915712, 19270444, 94399624, 87701088, -152145456, -38821672, -40707164, -103574744, -141405360, -29154774, 51162724, 54731304, 103092104, 55992952, -4440460, -26766236, -71937480, -51158428, -8811662, -8011188, 25665650, 23781770, 13775571, 8771397, -6939057, -3802120, -17655536, -1380832, 20453708, 145492, 4326643, -1182190, -15287936, -11740830, --26020522, -25537338, 11604465, 10664404, 23705536, 35984848, 27007292, 13160317, 4800700, -38884488, --27454504, -21288542, -21274046, -23790898, 4998805, 15133317, 26389352, 33639256, 27888834, 6044093, --3251290, -22356916, -22755810, -13575855, -6558952, 2158221, 3799972, 7518877, 710817, -7324530, -2521146, -11673184, 6123550, 9859634, 1185948, 19770808, 23997592, 7370701, -4495757, -26379152, --34640520, -14010183, -6344741, -4088272, 17709224, 13634911, -3538516, 15467788, 16899086, 9376987, -11696270, -6487548, -12441447, -10103911, -14322642, -11471321, -2054605, -11016054, -4267050, 543850, -8865886, 12368432, 17988934, 15412490, 14331769, 11264089, -5810017, -13492103, -22464290, -27848568, --16089484, -12125230, 1646046, 13182328, 19610820, 22568442, 17982492, 16413218, 10714870, -14107357, --24949466, -22682260, -10966662, -3314104, -928787, 1613834, 9666898, 8343511, 4134443, 1832877, -7934952, 4354023, 6920803, 1810329, -10374494, -11609833, -7459822, -3148211, 3732864, 2458869, --3670587, -2245731, 3725884, 1773822, 1695438, 4695473, 7846369, 3408594, 345208, -3952444, --4258460, -3828427, -4348655, -6011881, -4258997, -450972, 3551938, 4544613, 6331856, 6458557, -3845606, -332860, -2737505, -3791383, -3174518, -3306051, -2165737, -1748589, -288837, 1487669, -2672007, 1889249, 1401770, 854699, 1426466, 652298, -390842, -2512019, -2100776, -912144, -949188, 1065152, 516470, -1080184, -647466, -289910, 143345, 0, 756451, 957778, -641024, -492311, -200790, 83752, 599685, 225486, -157840, -796180, -796716, -895501, --185757, 229781, 344671, -29528, 395137, 705985, 1163936, 606664, 3758, -780610, --862752, -899259, -387084, -205085, 3221, 118648, 578210, 399969, 267362, -62277, --8590, -107911, -31675, -82678, 110059, 4832, -104153, -298500, -116501, -40265, -102542, 5369, 39728, -20401, 34360, 12885, 81604, 35433, 49929, 9664, -9664, -28454, -39192, -47245, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +232465, 5719286, 3935801, 3961034, 2498597, 1589138, -2220498, 112206, -2531346, 6118181, +3750580, 1489817, 903554, 906775, -54224, -1899449, 3012383, 4218732, 4048544, 2495913, +-3048353, -4396436, -4825396, -4569845, -466004, 2430415, -4718022, 3980361, -936840, 6936372, +-1136019, 4417911, 72478, -5698348, 1653026, -706522, 4647155, 351114, -528818, -2306398, +-3910568, 384936, 2227478, -4998268, -6865505, 4835597, -3972308, -3639448, -3454228, 2739652, +-2723009, 1184337, -1211718, -306553, -4040491, -1190243, -2746095, -3994320, 1336272, 3158949, +-1151588, -4396973, -855772, -870268, -2214593, -3796214, -286689, -3081639, -3660386, -629750, +261993, 897648, -1235340, 573378, -671626, -5143760, -1134945, 672699, -1423245, -1294396, +-1617592, 1691680, -1977296, 1740536, -135291, 330176, 660888, -1231582, 1250909, 46708, +-687732, 344134, -335544, -1040456, 179315, 842350, -550830, -434329, -47782, 1338956, +591095, 219580, 202937, 739271, 476741, 852551, 231928, 1087164, -876173, -349503, +-396748, 13454522, -4745939, -3119757, -4234301, -2921115, 282931, -9060234, 1492501, -4512937, +-8866960, -1923609, 7543573, -5482526, 1447404, -679679, 2512019, 3789235, 4064650, 6578280, +-1445257, -3828963, 1659468, 1559073, -3066607, -478352, -2080375, -1376000, 787053, -3512747, +-2197413, -545461, -4398047, -5173288, 2596845, 3925600, -2377801, -5939940, -1058710, -1425929, +810675, 4721243, 291521, -2018098, -340376, 6334540, 772557, -3948686, -3786014, 1605781, +1185948, 5044976, 2869575, -381178, -4882304, 224412, -307090, 4130685, -4494684, -1551557, +2438468, 4807142, -1388885, 381178, -3697967, -2116882, 2236067, 88584, 457414, 1266479, +-1448478, 1715303, 506806, 2109903, 1314260, 782221, 8427800, 2531346, -361851, -1194538, +-2504503, 3564286, 2231773, 3856344, 2773475, 923955, 1024350, -876710, 761820, -1641214, +-1701881, -1357210, 431107, -659814, -425739, -318364, 1350767, 162135, 1769527, 103616, +-574989, -288300, -180926, -312996, 570694, 350577, 710817, -9887015, -2312840, -4658429, +4546760, 1162326, 124017, 3239479, -1898912, -7638063, -4020626, 5102958, -262530, 5257040, +-373662, -2947421, 5823439, 2200634, 12746389, -2376728, 5543192, 826781, -5981816, 1531156, +-5078799, 3320010, 1184337, 1319092, -5428302, 2746095, -933082, -1901597, 2250026, 8689256, +3237869, -26307, -6939057, 6054830, -1255741, 51003, 4282083, -6302328, -1168231, 4388383, +-2573222, -2232309, -7126425, -7773354, -579284, 4749160, 2794950, -3102577, -73014, 3103651, +3868155, 1561758, -779000, -1475858, -6830072, 3245385, 8524973, 3898757, -2443837, -1173600, +2705293, 4089346, -309238, -1240709, 1023276, -5603859, -1034550, -3918621, -1835562, -337155, +-2415919, 6516003, 5663452, -1661079, 2845416, 2128693, -1076426, -3804267, 908386, -2938295, +-1118839, 905164, -3821447, -787590, 385473, -1081795, 1090385, 1666447, -2445447, -848256, +-161598, 194884, -1919850, 536334, -889058, 1475321, -1703491, 1627256, -1166621, 414464, +258772, -801011, 640487, 315143, -624381, 590558, 622233, 677531, -1268626, -563178, +19864, -1759326, 227633, 1090385, -362925, -7386807, 8371428, -7109245, 7649874, -14496, +-5997385, -14223321, -5565741, -4042101, 2197950, 7542500, 5918465, -1745904, -1087701, -1683090, +-4035659, -1122597, -4542465, 1636383, 1756105, 2894808, 4770098, 2849174, 9068287, 86973, +1882806, -3113315, -677531, -2088965, 3374234, 1060857, -4123169, -5998996, 316217, -4289599, +613107, 4179003, -6788196, 4893579, -11467026, -3111704, -8487929, 1530082, -456340, 213138, +-3282429, -4453881, 1672353, 4160213, 3004330, 1153199, -6802692, 2171643, -4674535, -1734630, +-1287417, -9297530, -3580929, 2884071, 3704946, -244276, -6374805, 1190780, 2534031, -1168768, +-1199370, 855772, 5707475, 2100776, -1174137, -1721208, 1079647, -13276818, 1051730, 3470871, +3271155, 9498320, 1395864, -5194763, 6007586, -1985886, 983548, 2164664, 2053531, -1277753, +-4306242, 332860, 2679523, 2552821, 4096325, -1170916, -1217623, 783295, -669478, -422517, +730681, -1057099, 469762, 1000191, -456877, -2068564, -1556389, -2684, 345745, 645319, +-937914, 2116345, -970126, -508954, 1406065, 1611687, -355409, -2302639, -1160715, 1026497, +-1117765, -572841, -643171, 587874, 1946694, -269509, 471910, 2009508, 9548786, -2421288, +137976, 6301791, -3248069, -3030636, 9418326, -7169374, -16976396, -11135776, -6564321, 10206990, +4340065, 1420560, -9834938, 10416369, -4491462, 2927020, -2697240, 4097936, 5006322, -402116, +124017, -81604, -1697049, -5369783, -4346507, -1309965, 559420, 4737886, 2670933, 7394860, +3517041, -3207267, -1727651, 6584722, -4740034, 8077223, -6459094, 1750199, 3529390, 2302639, +-5241471, 7123740, -705448, 7653632, 10050223, 1561758, -4034585, -3878356, 4239670, -4818954, +-10241350, -2614561, 2130841, -6539625, 3727495, 3062312, -2197413, -4055523, -1760937, -1534377, +1947768, -760746, -5778879, -2163053, 9920838, 8024610, 4279935, -11813844, -11659762, -6323803, +11139535, 5695127, -903017, 1594507, -5535139, 7095286, -345745, -5446019, -1936493, 773631, +-572304, -2706903, -432718, -2133525, -1185411, 2135673, 3047279, -1755568, -64425, 324807, +484794, 493384, -3092913, 3569655, -278099, -3441880, -2101850, -430570, -1122060, 116501, +-289910, -380105, -400506, 893353, 139050, -1552094, -140123, 681289, -428423, -2441689, +-1738388, -2272575, -853625, 1757715, 4894115, 7155953, -287226, 2822867, -10989211, -3641059, +1920387, 3899294, -13653701, -1420560, 6027987, -4042638, -8846559, 5679558, -10306848, -7537668, +-4023311, 1011465, -3675955, -2470143, -234076, 7837779, -6470368, 1815697, -1981054, -2635499, +-5430450, -1431298, -7975218, -2310693, -136365, 1637993, -5545877, -1097364, -3461207, 607738, +-1715839, -2412698, 1585917, 6460168, 1720671, -3226057, 3267396, -4770635, -1105954, 1954747, +-1748589, 3263102, -933619, -268435, -22308598, 1576790, -7665443, 3881577, 3344706, 5038534, +-12232067, -12497281, 1801739, 525597, 3042984, 167504, 6810745, -2635499, 3750043, 4598300, +-2047089, 10612327, -3189550, -6775848, -1356136, -5595806, -91268, -11150809, 272194, 5633387, +2709588, 8458938, -2216203, -2218351, 3809099, -4358318, 1157494, 2801393, 5519570, -2827162, +3213173, -4328790, 980326, 243203, 692027, -2100776, -922881, -1550483, 1837172, -1946694, +-3087008, -2684, -1398549, -1937030, -606664, -1505923, -571768, -926639, 1027034, -1510218, +1020055, -3107946, -224949, -1839857, -690416, 304943, 325881, -398895, -1398549, 186831, +-1002338, 520765, 170188, 8673150, -17505750, 4679367, 744103, 4849555, 7044283, 1266479, +-6788733, -14921253, 1064078, -6041409, 11326903, -4626217, 2341294, 806380, 2425583, 8524973, +-3765613, -281320, -3954591, -2254321, 2242510, -2177549, 8028368, 5947456, 1726577, -1725503, +126165, 5340255, -535260, 2563559, -104690, -4452271, 3930969, -1167157, -3291019, 4708358, +8051990, -10201, 3164317, 528818, -5300527, -3357054, 9776956, -4745402, 4693326, 7063611, +-9389335, 6681359, 3627637, 3371549, -4147328, 6850473, 2021856, -1234803, 8853538, 281320, +-68719, -4177393, -2312303, -51540, -3815542, -9477919, -2439005, 9580998, 7307350, 7872138, +-839666, -8409546, 3514357, 10049150, -1838246, -7210713, -316217, -5112622, -1246077, -898185, +7921531, -813896, 4094715, -1096290, 423054, -5609228, 1525250, -1018981, 2236604, 2088965, +-3757560, 2527052, -5981279, 526670, 2244657, 88584, -1490891, -175557, 1271310, -4263292, +-699543, -4017942, 1304060, -2569464, -1490354, -2493766, -3963718, -2747705, -952409, 504659, +-1152125, -180926, 1370632, 344671, -965831, -836445, -1117228, 2233383, 176631, 750009, +1605781, 845035, 1162862, -632971, 2088965, -392453, 158914, 731218, -660888, -1184337, +638876, 1992865, -8324721, -2466385, -13412109, -3933116, -7786239, -9179419, -8703751, -3093987, +11673721, 12702903, 17509508, 3901978, -6702297, -4131759, 14490146, -71941, -3398930, 11095511, +-1180579, 466541, -17380658, 7834021, 4350802, -11605539, 16038482, -2255932, 7195681, -1968706, +3753802, 7117835, -2147, 12598213, 4820564, 3560528, -1479079, -4494684, 1192927, 7624104, +-2068564, 2250026, 3563212, 10103911, -491237, -3085397, 6509560, -7688529, -4834523, 3446175, +11158325, -4975720, -6006512, -1912334, 9193377, 62277, 1286880, -3462281, -1588601, 3282429, +4842576, 408559, -3987877, -12758737, 1496796, 3731253, 12112345, 3502546, -991601, 9292162, +16630113, -3448859, 5818070, 3906810, 6883222, -1363115, -5864241, 3409130, -13809930, -3772592, +-2103460, -4496831, -2800856, 7164543, 2469606, -8952859, -5281736, 235149, -2927020, -338766, +-6845104, -227096, -2350958, -1741609, -948651, 667867, -1912871, -493921, -936303, 1446330, +-543850, 1325534, -1875290, -73014, 282931, 605590, 2768107, 67646, -1068910, 2573759, +3779571, -317828, -2325725, -1480690, -3274376, -2873870, 3926137, -680752, 1057636, 1427540, +1389422, 1289027, -3014530, 1461363, -1095754, -15311022, 21101174, -10850698, 4680978, -927176, +-7468948, 16051903, 3670050, 1869385, -17257716, 4302484, -6969658, -7929584, 1757715, -7742753, +8514773, 5101348, -1600412, 1597191, -4338454, -2032056, -6365679, -4137127, -7616588, -11673184, +-2988760, -8209293, -2313914, 4253628, -3409667, -4482335, 8986145, 5602785, 9019431, -7654169, +-997506, -1647657, -8407935, -55835, -4541391, -20694226, 1648731, 234076, -3330747, 6995428, +-897648, 7732015, 6513318, 2323041, 12214350, 10866804, -11020886, -3115999, -64425, -539018, +3711926, 1342177, 10358924, -2383707, 16638166, -160524, -10063645, -8176544, 1126355, 2893197, +3275450, 12069932, 3046206, 2917357, 11314554, 15143518, 462783, -9515500, -9044127, -980326, +-3144453, -2306398, 19578608, 1275068, -9135395, 6273874, -8020315, 7364795, 1069984, -1700270, +-2518462, -6174553, 1507534, 1853278, -1066763, 1621350, 3156801, 1709397, 2094333, -1032403, +-1015760, 71941, -1281511, -1077500, 2058900, 736050, 1407139, 1847373, 3357054, 50466, +-1845762, 3143379, 1688996, 483721, 566936, -836445, 311922, -280247, 3335579, 5345087, +-3161633, 2466922, -843961, 2128156, 103079, 325881, 4496831, -408022, 256624, 237297, +3655554, 2391760, 2619393, 1690070, 273267, 12633109, 865436, 8479339, -9513353, 4095788, +638340, -805843, 5556614, 13369159, -3835406, -1330366, 12288438, -16514686, -9266929, -7270843, +-18919330, 3588982, -6085969, -2752000, 2130841, -12931610, 13929116, 10499584, 14802605, 6597607, +-9427453, 776852, 463320, 11070815, -2200634, -462246, -571231, -7039452, 419296, -4181688, +6106907, -7461432, -2925410, -2583960, -3324842, -8720931, 3911105, -12742631, -2075543, -991601, +7794829, 4600984, 909459, 36507, -2364916, 825707, -30602, 6493454, 1373316, 1813550, +-1208496, -19888382, -9359271, 2199023, 8045548, 9739912, -15665356, 10281615, 2917894, -6199249, +1329292, 3265249, -3839701, 14930380, -26844, 2791192, -3711389, -21015812, -7349226, -9617506, +-2654827, 300111, -5982353, 2928631, 4279398, -4379256, -1077500, 13378823, 197569, 6779069, +-8438537, 966368, -322123, 7670275, 6651831, 4856535, -2056753, 1528472, 5422396, 3342558, +-446677, 5854041, 5547487, 6221260, 612033, 2332704, 1948305, 959388, -1026497, -867047, +5217849, 963683, -3084324, 427349, -638876, 2934537, -2310693, 895501, 2604361, -2260764, +4172024, 1473711, -840203, 317828, -4045859, 2751464, 2578054, -500901, -1094680, -2375654, +-3405909, 868657, 19536196, 3223910, 7976828, -11555073, -10446434, 6215892, 10205916, 1308891, +-3427384, 18749680, 5995238, 200253, -5020817, 4178466, -1306207, -1937030, -555661, -3080029, +1007707, -6075231, -14630806, 4986994, 1658394, 4622459, 1607392, 8327942, 2641405, -8718784, +-17839146, 586263, 1488206, -1328219, -15592342, -7562901, -2223719, 4523675, -3291556, 1877975, +-13618804, 785442, -2929705, 202937, 1525787, 3934727, -1338419, -12838194, -11766063, -7310571, +5150740, 3810710, -3027415, -2577517, -20618528, -11640435, -271657, -20141250, 18788334, -19011136, +-5104032, -12272332, 20140712, 6517613, -13935021, 7188702, -1485522, 7663296, -11849815, -3869766, +673236, 8235600, -11241003, -4452808, -3721589, -11481521, 974421, 7794829, -1298691, -2027761, +14011794, -21862458, 17447230, -2771328, 3807489, -9807558, 7106561, -1017370, 5694053, -4931696, +439160, 4483946, 4932233, -1283122, -2247342, 116501, 649077, 665183, -1455994, 5500780, +5843303, 4097399, 1206886, 4151086, -224949, 5082557, -1680943, 1001801, -54224, -1799591, +-1763084, 426812, -3961034, -4911295, -1284195, -230854, 5221607, -227096, -660351, -1306207, +-3318936, 2531346, -950798, -1748589, -1082869, 2679523, -379568, -5588826, -585189, 2081449, +652298, -471373, 17247514, 37541236, -4869956, -11497091, -10769630, -9480603, -13683766, 2449205, +-23404350, -43487, -18062484, -8253854, 5755256, 11593727, 6695854, -8029442, -986232, 11039140, +-608812, 12716324, -7342784, -7381975, -6527814, 6088116, -4257387, -5557688, 2142115, -6695854, +-6867116, 8680666, 20217484, 7754027, 8719320, 3978750, -11704323, -2630668, -9475235, -8899709, +-1318555, -1469416, -7421704, -11904039, -24143084, -2092723, -8689256, 3318936, -4363150, 9266929, +8547522, 4961761, 8939974, 6385543, -816044, 17172890, 24363202, 5978058, -28277528, 5962489, +-4971962, -16444356, 2431488, 8311299, 4151623, 908386, 7916162, -281857, -13414793, 1013075, +6527814, -13371844, -7008313, -12516072, -23437636, 18725520, 2677912, -1183800, 13054553, 10295037, +836982, 943819, 12903155, -17185238, -7448547, 2152852, 9549860, 8167417, 12243341, 8942122, +-7045357, -3946001, -1463510, -2545842, -911070, -1522029, -3353833, -4338454, -6941204, -6902013, +-4967130, -2498597, -631360, 3738232, -1789391, -1214939, -7968238, -5310190, 975494, 4489852, +3068217, 1991791, 1850057, 1455994, -1000191, -3896072, -1872069, -2336462, -2157147, 1053341, +-4317516, 1177358, -3036542, 3640522, -235686, -909459, -2899640, 3061775, -2653753, -622770, +5776731, -2051384, -24159, 27737972, -20232518, 24002962, -1823751, -2677375, -11956115, -4295504, +-11878269, -10050760, 12894029, -11129871, 6745783, 28760712, 10788421, -4037806, -12728672, -10625749, +12907987, -10217190, -17468706, -7059853, 1970853, 1890323, -19969450, 1637456, -5947456, 10712185, +-6200859, -79994, 2491618, 30255360, -7107097, -9374303, 14727443, -11375221, 17659294, -10009421, +12971338, 2378338, -9106404, -8240969, 16422344, -20781200, 16158204, -8822937, 1789928, -4794257, +8893267, -7029251, -3565360, -45634, -6329171, 30878668, -8666170, 21150030, 8252243, 9832791, +-8590, 8157754, 13550622, 15276662, -3990025, -14329085, 211527, 12661027, 5130876, -1963337, +-18206366, 24766928, -5005248, -15969225, -4371203, -9695352, 7793755, 10839424, 551903, 18002892, +-4676683, 9359807, -20049444, -3305514, -21402896, -6440841, -7758322, -226023, 1308891, -3884261, +7795366, 2790655, -5697811, -9635222, -7242926, -1858647, -812823, -4690105, -963146, -1480153, +6181532, -1519882, 360240, -2021319, -9218610, -2530810, -3648038, 1433982, -1456531, -4939750, +-8046085, 3522410, -5411659, 2842195, 3702262, -5391795, -13864691, -3025805, -2103460, -3410741, +-4898410, 884226, -2250563, 1819456, 1711008, -6016176, -750546, -6054294, 5987185, 3963181, +-3282429, 1934883, -5521718, -31294742, -13383655, 19131932, -3827890, -7894150, 22250614, 2094333, +-11609297, 8411693, 12102144, 10248329, 1581622, -19270982, -7966628, 2896419, 2820183, 10010495, +6634651, 11296838, -9837623, -7798050, 3795677, -2709051, 9285182, -18122614, -3067144, -19600084, +-6328098, 3499325, -2698313, -2498060, 20924544, 4317516, -15507516, -2394444, 1247151, -15888158, +-2145336, 735513, 9528385, 24019604, -8534637, 8001524, -13424457, 1979980, -7895761, -10216117, +9814000, 20998632, -16671452, 1566053, 18753974, -8513699, -1723356, -7085623, 12279311, 2910377, +-15232638, -238908, -5316096, -5000416, -1506460, -7543573, 11368242, -27006754, 5720897, 2200634, +-11320997, 15038828, 23167054, 16285442, 44119516, 13314399, -11294690, -15727633, -12931073, -7136088, +16210817, -5907191, 22505092, 1995012, 27401354, -32610076, -20845086, 9729712, -5319854, -3441880, +13160854, -8940511, -979789, 13888850, 6257231, 10280541, 15335181, 11870216, -2554432, 4795868, +-9319005, 248571, -320512, -6658810, -7144141, 4697084, -9858024, -939524, 15024332, 1269163, +-8891656, -11777874, 2224793, -14775224, -5346698, 15686831, 8264591, -2689187, -3554086, 2932389, +-2861522, -5093295, 1132261, -3751117, -5539971, -1080721, -7631083, 5334887, 4818954, 5101348, +-2779918, -2181307, 3434363, 7946763, 21740050, -51583632, -2232309, 29113972, -39231840, -1967095, +7495792, -40524628, 17874580, 4730370, 32141924, -3418257, 11240466, 9343701, -35674000, -29577830, +-11625403, -3036542, -17945984, -22035330, -11737072, 19996830, 13974750, 12040404, 1125281, 2084670, +6199786, 1060857, -25945898, -9838159, -33256468, -10761041, 18320184, 5311264, 12320651, 41408316, +10645613, 15528454, -828392, 8131984, 36468032, 27359478, 7512972, 17884244, 16426102, 36363340, +29867740, -40028020, 24780350, -2420751, 23709294, 24107114, 9961103, 43695924, 38613368, -21555368, +19031000, -459562, 18131204, -32247688, 2972654, 3286724, 1048509, -7433515, 20174536, 21828098, +-21461414, -7388418, -12664248, 7563438, -17812304, -22112102, 20485384, 35009352, 12770548, 36441724, +-10688026, 49579492, 48577152, 13451301, 25412784, -7622493, -12921409, 11287174, 11169062, 5302137, +3742527, 2818036, 6439767, -7107097, -12690555, -9169755, -23723252, -24917252, -10108206, 11363410, +-433255, 9999758, 1674500, 6023155, 14916421, 18261664, -6082748, 8283382, -1001264, -7795366, +-6431714, -5592585, -15651935, -7326141, 142808, -13616657, -4868346, -12274480, -6795712, 2441152, +16807818, -8149164, 5986111, 4598836, -2957622, 9163313, 5356898, 6953015, 106300, 12224551, +7866770, 5226439, -5053566, -7693360, -3312494, -16594143, 23670638, 42750492, -6043556, -58822800, +-18911278, 5793374, -4759361, -9910100, -13050258, 18254, -33720860, -20289962, -28028956, -4667556, +-8314520, 9120900, -20058572, -5878200, 5186710, 9159018, -404801, 10210748, 20093468, 4038343, +29066728, -18983218, 6874632, 1031329, 27721330, 7175280, -5640903, -28236726, 18502182, -4974109, +25273736, -21501680, -17140140, -16316044, -8802535, -26015690, -3734474, -4596152, -24546274, 13315472, +27581744, -13530758, 3943854, -36135708, 34476776, -11020886, -19036368, 15737297, 13668733, -20684026, +1630477, -12911745, 4367982, -9466645, 43202004, -1646583, -3887482, -10726144, 76389216, 1932735, +-10560251, 32787244, 26161182, -27827630, 21546778, -34085396, -19116900, -35612796, 27041650, -24500104, +12960064, 18727132, 14722611, -31552978, 39679056, -7161858, -52382496, -59499792, -23643794, -7285875, +-17481054, 13926431, 13480829, 23608898, 3666292, 2117956, -17901424, 17864380, 27713276, 41012644, +10572062, -11649025, 3767760, 34923988, 5580773, -19132468, -4984310, 37277096, 8293582, -21876952, +-5938866, 18463528, 10361072, 16829830, 10997801, 23670102, -58519, 13066364, 4336843, 16801376, +7623030, 26637924, 8533563, 16889422, -3558381, 5408975, 964220, -1810866, 6770479, -2183454, +8865886, 16691854, 2200634, 9775882, 908922, 12661027, -28516436, -6349573, 21442088, 1961190, +-16522202, -78857208, 5629092, 50667728, -30623116, -20429548, 40692668, -29619706, -1924145, -8421357, +39058968, -67092220, 37499896, 22244710, -18928994, 6990596, 36637680, 26148298, -12825846, 14957760, +6724845, -10232760, 17234094, -383863, 10451803, 15843597, -6757058, 3817689, -1703491, 7549479, +-9698573, -7829726, -611496, 13594645, -39766564, -19705846, 19796578, -4483409, -26360362, -31166430, +5409512, 38743288, -16798690, -24778740, 19077170, 28894930, -6303938, 7252589, -5087389, 26912266, +-14601278, 40360880, -5435281, 57445, 22154516, 449361, 5124433, -28702192, 45106284, -23322210, +-28193240, 21381420, -29853780, -9904195, 5090073, 14880451, 41685880, -14804752, 26010322, -5319854, +13640279, -70565240, -53900764, -9942312, -20978230, 10736344, 9802189, 26743150, -4168803, -5652177, +32003948, -35020088, -709743, 22332220, 22165790, -8181376, 24692304, 3059627, -5169530, -169651, +-5385352, 23533200, -13018046, -1388885, 23070416, 5231807, -5121212, 9010841, -11319923, 2892661, +-770947, 341450, 9391483, 4292820, -12951474, -3044058, 4155918, -10217727, -14795089, -263067, +11026255, 19115288, -16067473, 18673980, 6540162, -18797462, 15663746, 17709224, -8819715, -21288006, +19649476, -9767829, 3744675, 10662256, -10537165, -28176596, 9343701, 7467875, -15385647, -14788109, +1260573, 10525354, -12160663, 4465692, -5252208, -25849260, -11890617, 19741818, -32350230, 32572496, +-27478664, -34584688, 20266340, -16494285, -11000485, 20691542, -14766634, 17352204, -11517492, 8298951, +39908300, -34892316, -2122788, -4973572, 33683280, 4910222, 3558381, -31197032, -29256244, -10137733, +-8253317, -4206384, -9154723, 6273337, 2145336, -2831994, 5335423, 7531762, 3830574, 5935645, +-5692979, 15945066, -9681393, 15273977, -27705224, 1394254, -22365506, -29133836, -17003238, 39661340, +-16513076, -16879222, -12429098, 9419400, -7414724, 17869748, 25870198, -26317412, 24329380, 4674535, +-36509368, -18103288, 76741400, 39979704, -57437672, -10503879, 37172404, -18251464, -20699594, 15182173, +-17832704, -39594228, 29127394, 13480292, -53949084, 22772990, 27973658, -31584652, -20682952, 32844688, +-7520488, -24033026, 6001680, 16491064, -38977364, 7845832, 7384660, 11713986, -29653528, -8576513, +-2197950, -9269076, -1661079, 2323577, 3753802, -18040474, 3306588, 27535036, 9818295, 2073396, +9354439, -115964, -4110821, -14574972, -4236449, -7727183, -10579578, -25217364, 7210177, -14238890, +-3668439, 31750008, -27381490, -17787608, 23516020, -16363825, -5697274, -6876780, 10802916, -17754858, +-6206765, 29306710, 15701864, -13761075, 16642461, 9494562, -11679627, -7271380, 39763344, -31082142, +-24082418, 42306500, 144955, -33065880, 4965519, 21026550, -19434728, -41378252, 28256590, 3843459, +-45949172, 8370355, 13303661, -33428268, -352187, 23130010, -5953899, -14636712, 12332999, 9922985, +-22917408, -1946694, 17573396, -12840342, -16414291, 11803107, 1065689, 47661788, 67630704, -27452358, +75749800, -6299644, -21081846, -16404628, -26006564, -2481954, 12510703, 44523240, 1290101, 13481365, +-11636677, -39021388, 488553, 1071594, 25258166, 4490389, -29472066, 54006528, -23452132, 9788767, +24206436, -27467926, -22218940, -39045548, -17157858, 23500450, 29549912, 36381056, -14099841, -90383288, +19737522, 46577308, 60018948, 51359220, -1014149, -26181046, -32134946, 10459319, 30505542, -20030116, +-10581189, -80161808, -49060336, 42406360, 71888088, 14339822, -2197413, -17960480, -31764504, -7857106, +19786378, -28388124, 10724533, -4443144, 45371496, -2433099, 17567490, -89640800, -11539503, 602906, +54550916, 41939280, -1358283, -27210228, -7574175, 64639256, 29239600, -76978160, -94932200, -37516004, +18836652, 146545360, 15694347, -26080116, 20058034, -39910448, 104294152, 31352724, -83384640, -52591336, +-10557030, 73229728, 10901164, -31287764, -28654948, -26902064, 20842402, 39155608, 19754702, -43373800, +-3711926, -15298674, 35173096, -4421669, 21220896, -8106214, -9138080, -28991030, 10932839, -9308805, +-3148211, 21456582, -34799436, 19651622, -5347235, -5925445, 51003, 15376520, 34307660, 16739635, +2246268, -7451232, 7201587, -964757, 13888314, 3922379, 15339476, 3149285, 3831648, -18130668, +8039642, 8494372, 6217502, -585189, 5113159, 2524904, 15222438, 17691508, 14202920, 1298154, +-10040023, -15431817, 4350802, 6841346, -8898635, 7502234, -12367895, 31361314, -36153960, 1126355, +-14556718, 8357470, -22401476, 21018496, 5786395, -11906723, -22601728, -11073499, -4313758, 6595459, +-30842160, 7133941, -15126875, -5842766, -24164560, -11325829, 19512036, -20537996, -7321846, -2785823, +9509594, 6515466, -8068096, 11129334, -17712982, -1347009, 158914, 9542344, -11627550, 16844324, +12463995, -12692702, -14840186, -5573257, 23795730, -17102560, 7467338, 17812304, 3882651, -17192754, +-6691022, 7530689, -10923712, 8150774, 708670, 3998615, -16040629, 3461744, -13062069, -452045, +11981885, 15354508, 11774653, -8693551, 11228118, 1559073, -14281303, -1974611, -128849, 17088602, +-4748623, 3714610, 14642617, -3034395, -19292994, 26964878, -10992432, 16015396, 11537356, 2889439, +3652870, -11172284, -14000520, 18636400, 2755759, 16418586, 4843113, 9022653, 4446902, -345745, +-915902, -14040785, 1546188, 3970161, 4952098, 5786932, -1816234, 6714108, 1063541, -683974, +1736241, 1003412, 6699612, -1680406, 5208722, -6356552, -1733556, 166430, 448824, -3499862, +-2158758, 12724914, 7831873, -1961190, -9066676, -9990094, -3856344, -3925600, 11394011, 1333587, +-3560528, -7405598, -4006668, 1260573, -6411850, 13424457, 1113470, -5184026, 2138357, -56371, +-2527588, 3935801, -4012036, 11694122, -10950556, 8098161, -10666014, -29316374, 54380192, 4793184, +2824478, -22190486, 12495670, -2015413, 14158897, 10750303, 16597364, 1690070, 4114042, -9583683, +2560874, 15194521, -1659468, 8243116, -1489280, 2517388, 3243237, 6070937, -6659884, 11465415, +-8068633, 913754, -1429150, 3788161, -1191853, 2184528, 8683887, 9542880, -4837207, 4126927, +1736777, -2319282, -4318590, 12761422, -4123169, 2583423, -3826816, 6604049, -194884, -6333466, +12823699, -8213588, -2945811, 3295851, -6258304, -3839164, -2049236, 395674, -2490007, 79457, +-1397475, -3493419, 4258460, -8491150, 5116917, 3437585, -3009162, 5405217, -4357781, 6428493, +-3527779, 1132798, 1137630, -4073240, 6316287, -115427, 756451, -2160906, 8557185, -10448045, +10871636, -7918309, 1182727, 1782948, -443455, 1926293, -1893007, 6264210, -6122476, 319438, +5345624, -6707129, 4011500, 3635153, -1103807, 714575, 3607773, 1677722, -1864553, 2392297, +548145, -943819, 384936, 2090039, 128849, -2872260, 627602, 1045825, -1552094, 3106335, +-831613, 2537252, -1820529, 343597, 1945083, -1442572, 208306, 1340030, -2188823, 3418794, +-464930, 1647657, -580357, 3605088, -1436667, 357556, 3329137, -3116536, 3871376, -2391760, +1606855, -2456185, 3797288, -673773, 10441602, -49767932, -123915712, 19270444, 94399624, 87701088, +152145456, -38821672, -40707164, -103574744, -141405360, -29154774, 51162724, 54731304, 103092104, 55992952, +4440460, -26766236, -71937480, -51158428, -8811662, -8011188, 25665650, 23781770, 13775571, 8771397, +6939057, -3802120, -17655536, -1380832, 20453708, 145492, 4326643, -1182190, -15287936, -11740830, +-26020522, -25537338, 11604465, 10664404, 23705536, 35984848, 27007292, 13160317, 4800700, -38884488, +-27454504, -21288542, -21274046, -23790898, 4998805, 15133317, 26389352, 33639256, 27888834, 6044093, +-3251290, -22356916, -22755810, -13575855, -6558952, 2158221, 3799972, 7518877, 710817, -7324530, +2521146, -11673184, 6123550, 9859634, 1185948, 19770808, 23997592, 7370701, -4495757, -26379152, +-34640520, -14010183, -6344741, -4088272, 17709224, 13634911, -3538516, 15467788, 16899086, 9376987, +11696270, -6487548, -12441447, -10103911, -14322642, -11471321, -2054605, -11016054, -4267050, 543850, +8865886, 12368432, 17988934, 15412490, 14331769, 11264089, -5810017, -13492103, -22464290, -27848568, +-16089484, -12125230, 1646046, 13182328, 19610820, 22568442, 17982492, 16413218, 10714870, -14107357, +-24949466, -22682260, -10966662, -3314104, -928787, 1613834, 9666898, 8343511, 4134443, 1832877, +7934952, 4354023, 6920803, 1810329, -10374494, -11609833, -7459822, -3148211, 3732864, 2458869, +-3670587, -2245731, 3725884, 1773822, 1695438, 4695473, 7846369, 3408594, 345208, -3952444, +-4258460, -3828427, -4348655, -6011881, -4258997, -450972, 3551938, 4544613, 6331856, 6458557, +3845606, -332860, -2737505, -3791383, -3174518, -3306051, -2165737, -1748589, -288837, 1487669, +2672007, 1889249, 1401770, 854699, 1426466, 652298, -390842, -2512019, -2100776, -912144, +949188, 1065152, 516470, -1080184, -647466, -289910, 143345, 0, 756451, 957778, +641024, -492311, -200790, 83752, 599685, 225486, -157840, -796180, -796716, -895501, +-185757, 229781, 344671, -29528, 395137, 705985, 1163936, 606664, 3758, -780610, +-862752, -899259, -387084, -205085, 3221, 118648, 578210, 399969, 267362, -62277, +-8590, -107911, -31675, -82678, 110059, 4832, -104153, -298500, -116501, -40265, +102542, 5369, 39728, -20401, 34360, 12885, 81604, 35433, 49929, 9664, +9664, -28454, -39192, -47245, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -5833103, --75162, 1282048, 973347, 4169340, 551366, -506806, -2681670, 6125160, 3785477, 202937, --750546, 6084358, 2068564, -1939178, -5328981, 3406983, -1532230, 2646237, -5071820, 330712, --1210107, -3767760, -1018981, -1894618, -699006, 292058, 27917, -2746632, -1685238, -434329, --526670, -1707250, 1833951, -173409, -1826972, 3263638, -5421860, -2570538, 2592550, -3255048, -451508, -2019708, -2975339, 2027225, 1840930, -1596117, 2039036, 3926674, 2211908, -2034204, --2379949, 430034, 773631, -2398739, 2602213, 4329864, -3689914, -1178969, 2132451, 1595044, --877784, -1129040, -1801202, 2386391, 727997, -2858301, 3253438, 1583769, -2668785, -2002529, -3420942, -2579665, -3294777, -6212134, -5399311, 2939905, 3402688, 272194, 1494649, -590558, -1224066, -2301566, 3490198, -291521, 1615982, -1600949, 901943, -1458678, -1136556, 52613, -2236604, -496069, -568546, -1003949, 333934, -759136, 155156, 258772, -461172, -547071, -71941, -33823, -180926, -600222, 302795, -224412, 7785165, -754841, -1580548, -3195993, -4980552, -2660732, -290984, -4058207, -4331475, -5443871, -2566243, 4258997, -4421669, -1655710, --1561221, 1473174, -1107565, -6063420, 3148748, 1512902, 11769284, -1207423, 5501316, -1103807, --300648, -537945, 599148, -2487860, 4551592, -1202054, -929324, -2756832, -514859, -988379, -7057705, 1308891, -726386, -6628209, -688805, -1277753, 1987496, -4213363, -1177358, 1136556, -937914, -1167694, -723165, -2618856, -997506, -3147137, -1428614, 6101001, -1809792, 1930051, -3393561, -826781, -3331284, -4355097, 1116155, 1020055, 1300301, 2704219, 3192235, 2639794, -1511829, -1210644, -1188632, -1400696, -6144488, -1466731, -639413, 2967823, 2514703, -1515050, --165356, 3259880, -3417183, 1340030, 79994, -849330, -1984812, -2996814, -54761, 1784022, -1785096, 1900523, -812823, 781684, -729071, 159988, 2652679, 1084479, 187368, 24696, --427886, -62277, 150324, 533650, -360240, -371515, 1138166, 595927, 1159104, 1212791, -226560, 675384, -195958, 197569, 64961, -539018, -1395328, -246424, -10292889, -2487323, --173946, -2175401, -1500017, 3646427, -7222525, -6047851, -3530463, -2342905, 1060320, 8180839, --1742683, 11274, 1007170, -5815386, -1503239, -4852240, -730144, 8662412, -642098, -4172561, --2707440, 136365, 1785633, 1757715, -2398739, -10909217, -5211943, -1436130, -4198868, 416075, -221191, 4456566, -2836289, 3961571, 983011, -1997697, -5835787, -4879083, 6804839, -5578626, -3748433, 1117228, -3572339, -1320166, -3187940, -2276870, 3215857, -5994164, 3135863, 1085553, --74088, 1036698, 444529, -572841, 156766, -3023657, -4162360, 328028, -1253057, -3062312, --1226750, -4750234, 5577015, 3831648, 982474, 4575751, 561567, -1905892, 5666136, -2951180, --1846836, -1889786, 4317516, -4166655, 1887638, 3048353, 191126, 1899449, 4699768, 1743220, --119722, 326418, 1018444, 807991, -900333, -530428, 80531, -210453, 1523640, 760209, -1609539, 1211181, 474594, -1402844, -1660005, 1045288, -38655, -66035, 1556926, -1041530, --834297, 4832, 388695, 534723, -132607, -1697049, 1455994, 415538, -1267552, -7022809, -8428873, 9573482, 2566780, 2516851, -2840584, 4423280, 2180233, -5721434, 1691143, 3555696, --6818261, -5965173, 5847598, -5236102, -821413, -3402151, 5895380, 1227287, -753767, -2271501, --114354, -3943317, 3523484, -2006287, 2107218, -1006633, -98247, 3806952, 1460289, 470836, --1568737, 3728032, 2352032, 1056562, -390305, 3858491, -369367, 642635, -2544231, 4719096, -1017370, 1835025, 3451006, -9713069, -3188476, -1978906, -3507378, -3433826, 921271, 5295158, --2376191, -1515587, -2998424, -1399086, 1108102, 2282775, -6683506, -481573, 2265595, 186831, --576063, 2798171, 1827509, -6300180, -1788317, -1437203, 3798899, -4174171, 5386963, 5793374, -3031173, 1126892, -2787971, -231928, 423591, 3842922, -1100585, 384400, 426812, 505732, -5763846, 544924, 6145562, 2194728, 44023, -3058017, -1741609, 2443837, -565862, -97711, -201327, 56908, 520228, 2486786, 692564, 911607, 54761, 875636, -2107755, -275415, -608275, 720481, -572841, -434865, -30602, 716186, -658204, -560493, 819265, 722628, -1519345, 615254, 1402844, -970126, 71404, 57982, -613643, 1253057, 1928440, 10733123, --1941325, -107374, 3946001, 2573222, 1933809, 3651796, 9534291, -2601140, -830539, -9098888, -221191, -7810935, -9931575, 405338, 4287451, -12827457, 4409858, 4264366, 2347200, -3858491, --3054259, -4211753, -1581622, 301721, 307627, 4150012, 5445482, -685584, -5290326, -3175055, -4038880, -5665599, -2814277, -4778688, 1076963, -7758322, 3928285, 678605, -497142, 1318555, --220654, -1726577, 37581, 5096516, -5779416, 7100655, -5313949, -557809, 1326071, -3478387, --2868501, 2820720, 1383516, -1053878, -2690260, 5319854, 2216740, -3590593, -7307887, 921271, -1721745, 4363150, -154082, -1825361, 393526, 2346663, -1723893, 10273562, -3391951, -1582696, --7254737, -4744865, 11527155, 4748623, -2537252, -580894, -3983045, -4400731, -340376, 1680406, -322659, -2093797, 2500208, 1449015, 3458523, -282394, -2477123, 1087701, 115427, -1053341, -1019518, 1056025, -250182, 534187, 1371705, 536334, -313533, -945967, 578747, 446140, --955093, 1982127, 1602560, 609349, -934692, -2331094, 178778, -96100, -89657, 1167694, --1195612, 878858, 1275068, 404264, -728534, 2997887, 6936372, -9137543, -5376762, 6484327, --4763656, -5074504, -5579163, -6677064, 4891968, -1646046, -148176, -1493575, 304943, -7435126, --1444183, 3483219, 3798362, 907312, -3905199, -5693516, -4721243, -6010807, 1279363, 7291781, -1023276, 2396592, 2528662, 2469069, -4205847, 4514548, 2821794, -3130494, -2516314, -9766756, -1557463, 2246805, -7668127, -558346, 2418067, -1394791, 998580, -643171, -8231842, 7091528, --7665980, 6115497, 370441, 3107409, -8635032, -4803384, -7728257, -6075768, 1174137, -2134062, --2719251, -3403225, 16643, 3917010, -7149510, -73551, 2127083, -2273112, -7977365, -4971425, --1639604, 1559073, 3928285, 1738388, -6565395, 7094749, -2234994, -1491964, 7039989, -9141301, --2989297, -1785096, -1609002, 11045045, -3978750, -141197, -4130685, -3403762, 2028298, 1560684, --223338, 1223529, -852014, -1505386, 2079838, 74088, 863825, 925029, 2681133, -995896, -796716, 636192, 205085, 742493, -3003793, 3985193, 3597035, -1175210, -598074, 606127, --499827, 721018, 132070, -231391, -1437203, 937377, -735513, 390842, 3497177, 2267206, -1884954, -1389422, 2497524, 1035087, -992137, 1174137, 390305, 879931, 295279, 14107357, --12709882, -6732898, -8490077, 6011344, 2221035, -4371203, 2786897, -139050, 8365523, 458488, -15032, -8210904, 5675800, 9242233, 9700721, 8051990, -4600984, -767725, 1184337, -5268851, --3624953, 1290638, 519691, -7559680, -3738769, -3228742, 3588445, -639950, -5725192, -2675228, -1789928, 4424890, 486942, -1641214, 3221, -4048007, -179852, -319975, 544924, -8635032, -4933307, 5821828, 1149978, 2966749, 3446175, -7004018, 9858024, 8865349, 1593433, -6242735, -3489124, -2253784, -9220758, -2399813, -2943126, -206695, 515933, -238371, -5586679, -5011690, --11438035, -9561134, 92879, 5696201, -5258651, 2365453, 707596, -3585224, -9321690, -980326, -5395553, -3660923, 4839892, 9527848, 2882997, -4015258, 5501316, -75699, -607738, 2566780, -4278325, -428960, -772557, 1140851, 2755222, -1586454, -6265821, 310311, -196495, 612570, -755377, 2042794, 4551592, -1687385, -822486, 3404835, 3118146, 625992, 437013, -2269890, -4387846, 449361, -314606, 2594160, 809064, 916439, 429497, 2335389, 2101850, 2323041, -3875134, 264141, 2305324, 284542, 2568927, 1186485, 1449552, 963146, 2430952, 2117956, -1740536, -13553843, 1387274, -5086852, -18141404, -13965086, 3439732, 88047, -3163244, 3185255, -8663486, -1424319, 5174362, 4583267, 2644089, -1426466, -4754529, 3809636, -4056060, 448287, --3489661, 5405753, 9911711, -8989903, -2623688, 521302, 3573950, 933082, -2834142, -1660542, --3381750, -290447, -4175245, 5231807, 1111323, -6327024, 6959458, -7053410, -2294586, 8571144, -7531225, 6365142, -7352447, -4822175, -6593312, 7556458, 10228465, -180389, -2184528, 8129300, --12068858, 1451699, 3162707, -1185948, -10152766, 9057549, 3122978, 4591857, 8464307, 430034, --12241731, 3175055, 4936528, -3140158, -972273, 8374113, -8769249, -8188892, -7117298, 832687, -10751377, 5830955, -1633698, 12370580, -16557099, -6099928, 120259, 7912404, 3617436, -2400887, --13178570, -2062658, -5334887, 1442035, 4902169, 12749610, 2094333, -3621194, 1588601, -2189360, --934692, -4237522, -67109, -3493956, 1104880, 3468186, 1885491, 3191698, 3529926, 1136556, -685047, 15569, 549756, -1762547, -1925219, 153008, 3722663, 1432372, -565325, 667867, -1437740, 3059627, 308701, -1034013, 420907, -1009317, 2361695, -4571456, -2873870, -2024540, -2752537, 2468533, -4107063, 887985, -14602889, 14660334, 5929203, -408559, -1544578, 1187559, -2477659, 7919920, -1561221, 831076, -2598455, -1889249, 4446902, 2268817, 5171141, 2248952, -2965675, -9989557, -4168803, 16632261, 1641214, 4909685, 6960532, 2583423, -5701569, -10535018, -3217468, -4423280, 346282, 3641059, -5268315, -6186901, 7431367, 8731132, -4621922, -3297461, -6751689, -8403640, 3610994, -6478958, 2846490, -6271726, 8985608, 1211181, -1246077, 3131031, -15473157, 4234301, 5963562, -1800665, 739271, 2597918, 11412802, -1042066, 16378858, 440234, -7754564, -332323, 14779519, 5201743, 11016054, 8351564, -1920387, -5011690, -1393180, -5718212, --6311455, 8646843, -1813013, -3447248, 1291711, 77846, -4505958, -2215666, 1295470, 3843459, -1017370, -7488813, -7432978, -3878892, -7588134, -245887, -221191, -2260227, 2022393, -196495, -2996814, -496069, -3132642, 587337, -1359894, -5716602, -3640522, 766115, 7521562, -3241627, -2744484, -900333, -146566, 3474629, -2703145, 1153736, 1657857, -1967632, -1380295, -987306, --2237141, 1030792, -2780991, -3578782, -1416802, -3873524, 4743792, -1386738, 226023, -447750, --353798, 476205, -1661616, 679142, 1148904, 595390, 1891933, 2574833, 391379, 1913408, --1520418, -4176319, 756988, -1173063, 1668058, -1719598, 17145510, -4397510, -66035, -20947092, --664109, 11317239, -5799817, 9842991, -13291313, 2018635, 1428077, -312459, -17652316, -726386, --29469382, 1466195, -3174518, -12307766, -2073932, 1727651, -6400575, 1192390, 7556458, 1214939, --6680285, 1321776, -2009508, 6617471, -7188702, 485331, 9563282, 2196339, 871342, -1354525, -7349763, -4617627, 848793, 27917, 5661841, 1134408, -9887015, -5257577, -6947647, 8301098, --18594524, 9096204, 7524783, 6439767, 3656628, 1444183, -8088497, 5878200, -12021077, -2818572, --2455111, -2463164, -444529, 815507, 3981435, -9267466, -3566434, 15760919, 6678138, -5683316, --6567542, 1755568, -2673080, 4835597, -3099893, -924492, -4990215, 14292577, 7354595, -4846871, -989453, -7213935, 1781338, -5436355, -1794760, 5698885, 5378373, -1606318, 10499048, -4045859, -5260261, -6774774, 7362648, 1097901, -4121558, -5701032, -8435316, 2200097, -835371, 3925063, --989453, -2491618, 1671816, 1626719, 2689187, 2113661, 4872641, -153545, 1639604, -3653944, -3081639, -2616709, -1221918, -1957968, -284005, -4662724, -697932, 1853815, 4342212, -4006668, --1836099, -2891050, 3014530, 2255395, -1751273, -348966, -3020436, 2425046, 399969, 10776073, -10889890, 6299644, 5622112, -5371394, 6260452, 10463614, -7860327, -333397, -20323248, 11562589, -7881265, -2944200, 4651450, -1360968, 1576253, 7176354, -4584341, 11257109, -10245644, 926639, -12698608, 5521718, 743029, 9774809, -3518652, 4458176, 2553358, 5209259, 8667244, -5203890, --1079647, 15995532, 7991324, -412317, 2181307, -10939819, 14741938, -12502650, -817118, 12876312, -3984119, 13867376, -8774081, 2170569, -595927, -3473018, 1839320, -13521094, -9468255, 12618614, --6345278, -2782602, -4316442, -14376329, 10137197, -3440269, -2394981, -6407555, 6228240, 14472966, --11486353, -2401961, 9782862, -10837276, -4718559, 8690866, 12202539, -20272782, -5407364, -1803349, -8603893, -376347, 10051834, -2516851, -7392176, 418759, 5345087, 12974022, 6566468, -8840653, --468688, 6346351, -13016435, -8035347, -2500208, -6733972, -6781217, -869731, 6164352, -5910412, -1438277, 6359236, 1782411, 1080184, 4494147, -1185411, 2893197, 2723546, 2739652, 1503775, --513785, -3988951, -1334661, -1161789, -3568044, -1684701, 556198, 389231, -532039, 488553, -3941169, -3316252, -1046898, -2480344, 1893007, 1780801, -766652, -2757369, -5944235, 2934000, -2274722, 3803194, 1066226, 879931, -412854, -3761318, 1500017, -1548873, -1683627, -1137630, -1032403, -727460, 10566156, 22397718, 4325569, -13252658, -4725001, 4389994, -29392072, 917512, -176631, -4612258, -1444183, 13564044, -22180822, 4865661, 10368588, -8170639, 9190156, 17127792, -4252018, -15855946, 4291209, -4005057, -284005, -15544560, -4685810, 14146012, -1585917, 12968117, --3412352, -4571993, 2131915, -11011222, -6171868, -7933342, -5859409, -4346507, 10606959, -11732777, -1913408, 20431160, 13821205, 4587025, -20783884, 3429532, 13656385, 5681705, 824634, -7446400, --9016210, -22231288, -15322833, 3139621, -7574712, -7622493, -421444, 9451076, 6734509, -6710350, -308701, 13459354, -5178120, -2321967, 631897, 17703856, 694174, -932545, 9043591, 2784750, --20172388, 5621576, 5870147, -142271, -16700980, 7013145, 9817758, -7396471, -5220533, -13760001, -3674345, -5082020, 5215164, 2559801, -3206193, -5862094, 3809636, 1686848, 5870147, -2958696, -9141838, 3173444, -6230387, 701153, -299037, -8642011, 186831, 643708, -3758, -228707, --4502200, -3972308, -1797981, -163746, 5742372, 1840930, 3015067, 4571993, -2088428, -2804077, -2223183, -4531728, -3981972, -228170, -197032, 1333587, -1299765, 949725, 2838437, 2931315, -398358, -1840930, -402653, -301721, -479963, -35433, -719944, 286152, -77846, 3819837, --2214593, -2872260, 7117298, 5000953, -663572, 1889786, -3189550, 1360968, 99858, -1345399, --6765647, 22994182, 1116155, -4823785, -473520, 10078678, -5087389, 2668785, -2643016, 2266132, -8622147, -16147466, 16747688, 18991272, 5236639, 7953743, -6635188, 10708427, 25054692, 676457, --3033858, -4782446, 10582799, -3939559, -6243272, -2262374, 3660923, -12685723, 5442798, -11188390, -12506408, 2746095, 12595528, -8120173, 11468636, 3331821, 15055471, 2393908, 3060701, -5560909, -9324911, 2250563, -3138547, 13531294, -5455146, -9844065, 19174882, 15285252, 5557151, 14442364, -20994874, 25490630, -8096014, -8141648, -9167608, 3089692, -11891154, 13763223, -1846299, -1377611, --19817516, 4465156, 22213570, 22645752, -1006633, -3088082, -15741592, 140123, 14705968, -7677254, --9375377, 8286603, 1195612, -8190503, 2750390, -1414655, -5058935, -1215476, -4355097, -269509, -8486855, 6302328, -1868311, 1443109, -2195802, -8690329, -11317239, -2181844, 5469104, 2168422, -7788387, -1682554, -7556995, -2126546, 8082055, -3938485, 4552666, 7458211, -7699803, -2106145, --846645, 1845762, -517007, 4954782, 3585224, 1739999, -7670812, 1837172, 4038880, 1179505, -1599875, 2657511, -6815576, -3212636, -96100, -419833, -3662533, -8790187, -2925410, 696322, -4418985, 924492, -3670050, -4232154, 1566589, -30114164, -20984674, 11334419, 4515085, -15690052, -1830193, 7226283, -14301167, -8913131, -6063957, 17476758, 7923678, 5727876, -5313412, -4012036, --4188667, -10550050, -14178761, -25070260, 13344463, 11494406, -5190468, 28767154, 13889924, 27632746, -18985902, 1978906, -8606578, 7493108, 3540127, 12699145, 14494978, 16063178, -2105071, -2545842, -6915971, -6914898, -1488743, -6063957, -11669426, -19209242, -5505611, 20059644, -4744328, -7660074, --11051488, 8135205, 12157442, 8239895, 948651, 11933567, 22917946, -13314935, -6036040, -10186589, --7425999, -21663816, -5209796, 5813775, -9826885, -7536594, -25104620, -35691180, 4092030, -23420456, --37141804, -26702886, -11205033, 24420110, 8489003, 15015206, 11187853, -24571508, -10355703, 2437394, -12600897, -12059194, -14512694, -13864691, -4275640, 7692824, -8291971, -30681636, -19374598, -4158065, --6155225, -1927904, -4476430, 17799418, 16085726, 16856672, 16994112, 5926518, -28991, 6658273, -1882269, -213138, 5098126, -13638132, -5287642, 6386617, 8278550, -47782, -4445291, -4714801, -2151779, -7264937, -10953240, 10495289, -8139500, -3828963, 1005559, -9263708, -8978629, -16045461, --6315750, -3497714, 1248762, 14055280, -3442953, -1667521, -4267050, 7352984, -3614215, 750009, -6740415, 917512, -4648229, 3449396, 6715718, -3698504, -943282, 181462, -2265059, 4105989, --57084948, -8475581, 19116362, -19057844, 8643085, -7079180, -30697206, -9179956, 34087544, 42752640, --21809844, 1343788, -7125351, -33865816, -26820460, -25352118, -27051852, -14232448, -17458506, -945967, -6504191, -4272419, 7647190, 7035157, -10719165, -2567854, -14931454, 7046968, -23851564, -21507586, -5883569, 4314295, -6063957, -7566659, 19779398, -5145908, 27235462, 6386617, 25290914, -16222628, -11353746, 7464117, 30509838, 16462073, 11089069, 3331821, 5130876, -3077881, 9392557, 12780749, --9067750, -13042742, 21539798, -2448131, -25663504, -49961208, -60017336, -43275016, 7850664, 352724, --55848532, 18759344, 10203769, 14545980, -18657338, 2850248, 7231115, 2915209, 29549374, 29908004, -59574956, 19983946, -30867394, -40006008, -24235964, -21937082, -25232932, -22607098, -217970, 12943958, -17514876, -10550050, 22873922, -18774376, -26103200, -20423644, -13211856, -10049150, -20272246, 13389024, --870268, 12815109, 10172093, 1751273, 22475564, -11192148, -4444218, -21511344, 7907572, 11892228, --1256815, -1701344, 7155953, -20665236, 1330366, -7206955, 4558034, -9849434, -13806709, 8926016, -140123, -5762236, -1724429, 10443750, -7501698, 5493263, -6945499, 6222871, 5790153, -2772938, --6892349, 4870493, 5682242, -15242839, 6964290, -3766150, -4002373, -4584878, 3849365, -10273025, --4702453, 32338956, -8652212, -61108796, -17459042, 50303192, -6958384, 11214696, 7183870, 9385577, -17638894, 14417131, 5058398, -9982578, -3674882, 2483028, -10845866, -2550674, 18516678, -16564615, --9809705, -16608639, -3927748, 2826625, 2177549, 4363150, 8698383, -12646531, 11304891, 27509266, --427886, -16115791, 1544578, -10561325, -3543885, 16292958, -17146584, 1901060, 5544803, 19927038, -29042568, -18459770, -10390063, 11149198, 1664300, 3098819, 3485366, -12276627, -31047782, -5647345, --14372571, 28292024, -53727892, -35509180, -14426795, -5964099, 15729781, 3162707, -18849538, -3310346, --21736292, -23780698, -8290361, -17233020, 3311957, 13921063, 64969432, 11870216, -9425306, -41816340, --34053720, 10013716, -836982, -39276404, 21336324, 20838108, -39567388, -919123, 10581726, 11310260, -43146704, 18659486, 9205726, -42606612, -21622476, -29468308, 26886496, -2895882, -8473434, -4959077, -8572218, 27867358, 24114630, -12797392, -24894168, -37015100, 9196599, 21503290, -7395397, -4026532, -19443316, 10687489, 16987670, 3954591, 6242735, -14445049, -3936338, -6985228, 7521025, 7239168, --1685775, -3588982, -1810329, 9846749, 11713986, -17002164, 9977746, 6998113, 14101988, -9178345, --5820755, 8303246, 3382287, -12410845, -932008, 13791677, 3015604, -10851235, -3557844, 1433982, --20789252, -71877888, 10918344, 11826729, -1828582, -586263, -5012764, -20276004, 8753680, -4013647, -37523520, -37562712, -7225209, 39516920, -1240172, -25755308, -2685428, 23547158, 28492276, 17730162, --4474819, 20562156, -14578730, 14071387, -5602248, -4620311, -12545599, 22469122, 15446850, -13757317, --6054830, -1544578, 22757958, -1557463, 2885144, -13740137, 15502148, 10264435, -15950435, 30406220, -1849520, -26334592, 24240258, -28656022, -14889578, 27108222, -56219512, -35625144, 31346818, -19063212, -23368380, -35435628, 8522289, 13721884, -19272056, 1285269, -1058173, -36588828, -8114804, 38863548, -40960568, -45502496, -14783277, 14583025, -36410584, 48192216, 48227652, 7372312, -67815920, -35321276, -73147048, -37837588, -7154879, 59464360, -34069292, -69990248, -15323370, 64256468, -13205951, -45951856, --10916733, -84339736, -3360812, 69333656, -24545202, -68061272, -6453189, -18706194, -8722005, 21000242, --1914482, -230318, -24476482, -15781857, -7435126, 28083180, -34372088, 2304787, 6149320, -10345502, -1780801, 33321966, -20389284, -25722560, -2926483, 9819906, 21096342, -7568269, 10901164, 16252156, -2367064, -23157926, -12101607, 1146219, -18358838, -8595303, 36826124, -13065291, -34768836, -8868034, -21218212, 9146133, -2075006, 5200132, -31369904, -17821966, 24967718, 36698348, 5000953, -26138098, --12434467, 1769527, 10190347, 18702972, 2509335, -10253161, -39760660, -37519760, -836445, -47367584, --13868986, -20135344, -18868328, -14310831, 30993020, -3370476, -9681930, -13002477, 6220724, -16640851, --39335456, 30629022, 9853729, 26456998, 8511551, 27359478, -10654203, -16908212, 6304475, -28616294, -22472342, -25920128, -5234492, 17077326, -19412178, -4155918, -11683922, -31386010, 4993437, -23700704, --16829830, -20682416, -15046344, -9459665, -20763482, 3704409, 23614804, -15791521, -5331665, 2873870, -21794274, -9804337, 7915625, -22055194, 36110476, 11192685, 15663209, 9800042, 34656092, -2027225, --40044128, 8893804, 14980309, -11229729, 195958, 21235392, -27744952, -27858768, -32248226, 28123446, -8679592, -40097816, 15962246, -26473104, -4821101, -37424196, 16904454, 26547192, 5856725, -41459320, -23625542, 19199578, -4928475, -36449240, 10193568, -22005802, -7159711, -1614908, -10755135, 18009334, --15913391, -29578902, 15041512, -6635725, 12782360, -208843, -729608, -243203, -7644505, -9254044, -6623377, 26313654, -2830384, -37318432, -9923522, 15433965, -18025978, -7924215, 18274012, -6824703, --2176475, -14987288, 29614874, 17067664, -8216273, 13037373, -1932198, 5796595, 24113020, -4412005, --20348482, 8556649, 13950591, -10838350, 17506286, -2895345, 10969883, 1080184, -7289633, 14118094, -21196738, -12034498, -21407190, 8404177, 13895830, -10937134, -1717450, 12311524, 4791573, -8567386, --8574902, 10903311, 35111356, 66104916, -16107738, 32705640, 6230387, -15805480, -29783450, -17409650, -38371776, -12775917, 6985228, 14817637, -4070555, 35391068, -5406290, 27748174, 28959354, -35898412, -18249316, -9492415, 681826, 12998182, 10697153, -1336809, 5619965, 10506564, 35481260, 36575404, -28105730, -20820928, -7264401, -48864916, -1670742, 11421392, 21807696, 4984847, -40550396, 17588428, --24422794, 31221192, -28480466, -19854024, 1833951, -23736674, -4269198, -13732084, 47976932, -26403312, --13107703, -50567336, -16645146, -26572962, 71096208, 43301324, -15247134, -48091824, -51731808, -30656402, -35254164, 46252504, 23248658, 6791417, -62035972, -28731720, 20091320, 17322676, 2462627, 22339736, --13052942, -40708236, 19031536, -69045360, 74855912, -7029251, -48767208, 112939384, 15968688, 39305932, -67460512, -112114216, -81013824, 22391276, -6891812, 17160542, 24319716, -70070240, -5426155, 14178224, -1174137, 58756228, 3930969, -30707942, -3448322, 31609886, -18556406, 13842143, 15984258, 702227, --13079786, 15501074, -41049688, 31221728, -8201777, -12924093, 17346300, 4763119, 1014686, 18540300, --4597226, 11144903, -2497524, 7190849, -5564130, -21336324, 12776454, 9169755, 12071006, -12348, -134755, 8549132, 4462471, 3396246, 24730422, 27850716, 1370632, 18301392, -17300128, 2721399, --11431592, 21155398, 18960134, 3118146, -5743445, -12458626, -29805462, -12890271, 2354716, -29436632, -19801410, -41559176, 25612500, -17151952, 42075112, -19087908, -2014340, 23916526, 4217121, 2017024, --10909754, -9495636, 1052267, -16230145, 17738214, -2167885, 18842558, -14900852, -14627585, 4867272, -715649, -15111842, 9434433, -1997697, 8234526, -4715874, -4074313, 7778723, -7542500, -725850, -5873368, -3175055, -3598646, 29778082, -2055142, -10131828, -5351530, 14072997, -1289564, -16410533, -8656507, 17365626, 3551938, 287226, -10334228, 3542274, -8361765, 7882876, 21285322, -7686918, -9752797, -8157754, -2351495, -8925479, -4110284, 5456756, 6921340, -12575664, 7537131, 2065342, --1524177, -12581033, 2190970, 4351339, -9141301, 13180718, 11267310, -22610856, 5805722, -20772072, --23332410, 15919833, -8251706, 19261854, 10679973, 401043, 10056666, -3301219, -11978127, -3085397, -830539, 13348221, -5999533, 3943854, 5701032, -8001524, -1293322, 4487167, -2222109, -1728724, -7980049, -321049, 3151432, -6700686, 2850248, -907312, -6507949, 12374338, 1276142, 10048613, --4862440, 8199630, -4057670, 324270, -6455873, 5379984, -3030100, 12214350, -3688303, 11527155, --11939472, 2389613, 1024350, -2865280, 655519, 1165547, 9647033, -744103, -10801306, 6971806, --5965710, 829466, 6982543, -7211250, 12010339, -24503862, 51458540, 9631464, 12569759, -6653441, -4619238, -1599339, 9671729, 2981244, 21876952, 1411434, -12016245, 7136088, -7873749, 3288334, -4405563, -10183367, 440234, 2335925, -10994043, 9841381, 2456721, -4570382, 13271986, -4873714, -5188321, -4183298, 2395518, 2455111, 1127429, -1773285, -4046933, -1916629, 1776506, 239981, --2322504, -6591164, 4758287, -4454955, 2326799, 4181151, -4542465, 857920, -4249334, 1105954, --6685117, -10768557, 10937671, -6009733, -2954401, 4598836, 2057826, -1966021, 1158567, 9403831, --10553272, 4445828, -4038343, 8137890, -8886287, 4923643, 2364916, -1625645, 1823751, 133144, -18790, 3947612, -5658620, 3058554, 2653216, -1577864, -646929, 7110319, -1208496, 2377265, --8436926, 11171210, -8820252, -200253, 5516886, -5138392, 3731790, 1190780, 1248762, -5368172, -4174171, 4391067, -2906619, 1700807, 2103460, -3841312, 1219234, 1797981, -930397, 3850975, -60666, -147103, -534723, 3452080, 2591476, -2285460, 2935073, -1626719, 1249836, 1489280, --501974, 4311074, -2088428, -21475, 2664490, -3503620, 153008, -402116, -2565706, 294742, -2368138, -788127, -2179159, 4298726, -2907693, 607738, 9752260, -45808512, -113716240, 24562918, -94565520, 63920388, 133380744, -43626668, -37286220, -76741400, -122638496, -12127914, 38233260, 50383188, -65773128, 33148020, 3645890, -10761041, -28424630, -40565968, -6133214, -10844792, 4006131, 9296994, --468688, 2325725, 4918812, 2160906, 16077136, 19055696, 11869679, -2203318, 2222109, -14130442, --29593398, -31575526, -15454366, -20717312, 17067664, 31399432, 33369212, 36590436, 20088098, -5943161, --14434311, -26931592, -28403156, -19776714, -11089606, -1302449, 7204271, 13779866, 14846628, 12440910, -10768557, -1869921, 2915209, -3203509, 1453310, -2414845, -1439351, -882079, -10048613, -10591926, --7620346, -15950972, 54224, -3027415, 2040110, 27055610, 35716412, 12016782, 12128451, -9816148, --19572702, -13584982, -23575076, -18994492, 6724845, -1657857, -11406359, 8770860, 9468792, 11212012, -26750666, 11085311, 11760694, 2887292, -14333916, -14200772, -11553999, -12688407, -15981573, -13714904, --8104604, 2495913, 17887466, 26856430, 25225416, 10181220, 5139465, -6580964, -12132746, -10984916, --12022687, -13974213, -6322729, -5831492, -418222, 4684736, 3676492, 10821707, 14454176, 10388989, -7161321, 2479270, -843961, -6837051, -6983617, -11012833, -12304544, -9743133, -8606578, -2209761, -9312026, 13800804, 14954539, 13212930, 5462662, 2441152, -6564858, -10540923, -5542119, -7788923, --10510859, -8010114, 1541893, 7206419, 6845641, 3811247, 4391604, 3900904, 3070902, 907849, --648003, -1088237, -2707440, -3576097, -3234110, -3854733, -4467840, -2411624, 2134062, 3740917, -4836133, 4030827, 2955474, 1007707, 134755, -1179505, -1682017, -2179696, -2368138, -2689723, --1528472, -598611, 963146, 1566053, 1571958, 1340567, 1220845, 251792, 40265, -292058, -193810, 183610, 629213, -887448, -1576253, -1376537, -751619, -707059, 336081, 965294, -1271847, 751082, -404264, -536871, 740882, 1180042, 1013612, -317291, -1243930, -1464584, --526670, -38118, 273804, -170188, -271657, -355409, 91805, 351650, 860067, 669478, -655519, 456340, 129386, -431107, -631897, -853625, -719407, -745177, -435402, 155156, -786516, 755377, 723702, 434329, 302795, 181999, -110059, -589484, -540629, -440771, --238371, -86973, 122943, 4295, 20401, 77309, 208843, 239444, 201863, 39728, --55835, -110059, -84826, -52613, -22549, -25770, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-75162, 1282048, 973347, 4169340, 551366, -506806, -2681670, 6125160, 3785477, 202937, +-750546, 6084358, 2068564, -1939178, -5328981, 3406983, -1532230, 2646237, -5071820, 330712, +-1210107, -3767760, -1018981, -1894618, -699006, 292058, 27917, -2746632, -1685238, -434329, +-526670, -1707250, 1833951, -173409, -1826972, 3263638, -5421860, -2570538, 2592550, -3255048, +451508, -2019708, -2975339, 2027225, 1840930, -1596117, 2039036, 3926674, 2211908, -2034204, +-2379949, 430034, 773631, -2398739, 2602213, 4329864, -3689914, -1178969, 2132451, 1595044, +-877784, -1129040, -1801202, 2386391, 727997, -2858301, 3253438, 1583769, -2668785, -2002529, +3420942, -2579665, -3294777, -6212134, -5399311, 2939905, 3402688, 272194, 1494649, -590558, +1224066, -2301566, 3490198, -291521, 1615982, -1600949, 901943, -1458678, -1136556, 52613, +2236604, -496069, -568546, -1003949, 333934, -759136, 155156, 258772, -461172, -547071, +71941, -33823, -180926, -600222, 302795, -224412, 7785165, -754841, -1580548, -3195993, +4980552, -2660732, -290984, -4058207, -4331475, -5443871, -2566243, 4258997, -4421669, -1655710, +-1561221, 1473174, -1107565, -6063420, 3148748, 1512902, 11769284, -1207423, 5501316, -1103807, +-300648, -537945, 599148, -2487860, 4551592, -1202054, -929324, -2756832, -514859, -988379, +7057705, 1308891, -726386, -6628209, -688805, -1277753, 1987496, -4213363, -1177358, 1136556, +937914, -1167694, -723165, -2618856, -997506, -3147137, -1428614, 6101001, -1809792, 1930051, +3393561, -826781, -3331284, -4355097, 1116155, 1020055, 1300301, 2704219, 3192235, 2639794, +1511829, -1210644, -1188632, -1400696, -6144488, -1466731, -639413, 2967823, 2514703, -1515050, +-165356, 3259880, -3417183, 1340030, 79994, -849330, -1984812, -2996814, -54761, 1784022, +1785096, 1900523, -812823, 781684, -729071, 159988, 2652679, 1084479, 187368, 24696, +-427886, -62277, 150324, 533650, -360240, -371515, 1138166, 595927, 1159104, 1212791, +226560, 675384, -195958, 197569, 64961, -539018, -1395328, -246424, -10292889, -2487323, +-173946, -2175401, -1500017, 3646427, -7222525, -6047851, -3530463, -2342905, 1060320, 8180839, +-1742683, 11274, 1007170, -5815386, -1503239, -4852240, -730144, 8662412, -642098, -4172561, +-2707440, 136365, 1785633, 1757715, -2398739, -10909217, -5211943, -1436130, -4198868, 416075, +221191, 4456566, -2836289, 3961571, 983011, -1997697, -5835787, -4879083, 6804839, -5578626, +3748433, 1117228, -3572339, -1320166, -3187940, -2276870, 3215857, -5994164, 3135863, 1085553, +-74088, 1036698, 444529, -572841, 156766, -3023657, -4162360, 328028, -1253057, -3062312, +-1226750, -4750234, 5577015, 3831648, 982474, 4575751, 561567, -1905892, 5666136, -2951180, +-1846836, -1889786, 4317516, -4166655, 1887638, 3048353, 191126, 1899449, 4699768, 1743220, +-119722, 326418, 1018444, 807991, -900333, -530428, 80531, -210453, 1523640, 760209, +1609539, 1211181, 474594, -1402844, -1660005, 1045288, -38655, -66035, 1556926, -1041530, +-834297, 4832, 388695, 534723, -132607, -1697049, 1455994, 415538, -1267552, -7022809, +8428873, 9573482, 2566780, 2516851, -2840584, 4423280, 2180233, -5721434, 1691143, 3555696, +-6818261, -5965173, 5847598, -5236102, -821413, -3402151, 5895380, 1227287, -753767, -2271501, +-114354, -3943317, 3523484, -2006287, 2107218, -1006633, -98247, 3806952, 1460289, 470836, +-1568737, 3728032, 2352032, 1056562, -390305, 3858491, -369367, 642635, -2544231, 4719096, +1017370, 1835025, 3451006, -9713069, -3188476, -1978906, -3507378, -3433826, 921271, 5295158, +-2376191, -1515587, -2998424, -1399086, 1108102, 2282775, -6683506, -481573, 2265595, 186831, +-576063, 2798171, 1827509, -6300180, -1788317, -1437203, 3798899, -4174171, 5386963, 5793374, +3031173, 1126892, -2787971, -231928, 423591, 3842922, -1100585, 384400, 426812, 505732, +5763846, 544924, 6145562, 2194728, 44023, -3058017, -1741609, 2443837, -565862, -97711, +201327, 56908, 520228, 2486786, 692564, 911607, 54761, 875636, -2107755, -275415, +608275, 720481, -572841, -434865, -30602, 716186, -658204, -560493, 819265, 722628, +1519345, 615254, 1402844, -970126, 71404, 57982, -613643, 1253057, 1928440, 10733123, +-1941325, -107374, 3946001, 2573222, 1933809, 3651796, 9534291, -2601140, -830539, -9098888, +221191, -7810935, -9931575, 405338, 4287451, -12827457, 4409858, 4264366, 2347200, -3858491, +-3054259, -4211753, -1581622, 301721, 307627, 4150012, 5445482, -685584, -5290326, -3175055, +4038880, -5665599, -2814277, -4778688, 1076963, -7758322, 3928285, 678605, -497142, 1318555, +-220654, -1726577, 37581, 5096516, -5779416, 7100655, -5313949, -557809, 1326071, -3478387, +-2868501, 2820720, 1383516, -1053878, -2690260, 5319854, 2216740, -3590593, -7307887, 921271, +1721745, 4363150, -154082, -1825361, 393526, 2346663, -1723893, 10273562, -3391951, -1582696, +-7254737, -4744865, 11527155, 4748623, -2537252, -580894, -3983045, -4400731, -340376, 1680406, +322659, -2093797, 2500208, 1449015, 3458523, -282394, -2477123, 1087701, 115427, -1053341, +1019518, 1056025, -250182, 534187, 1371705, 536334, -313533, -945967, 578747, 446140, +-955093, 1982127, 1602560, 609349, -934692, -2331094, 178778, -96100, -89657, 1167694, +-1195612, 878858, 1275068, 404264, -728534, 2997887, 6936372, -9137543, -5376762, 6484327, +-4763656, -5074504, -5579163, -6677064, 4891968, -1646046, -148176, -1493575, 304943, -7435126, +-1444183, 3483219, 3798362, 907312, -3905199, -5693516, -4721243, -6010807, 1279363, 7291781, +1023276, 2396592, 2528662, 2469069, -4205847, 4514548, 2821794, -3130494, -2516314, -9766756, +1557463, 2246805, -7668127, -558346, 2418067, -1394791, 998580, -643171, -8231842, 7091528, +-7665980, 6115497, 370441, 3107409, -8635032, -4803384, -7728257, -6075768, 1174137, -2134062, +-2719251, -3403225, 16643, 3917010, -7149510, -73551, 2127083, -2273112, -7977365, -4971425, +-1639604, 1559073, 3928285, 1738388, -6565395, 7094749, -2234994, -1491964, 7039989, -9141301, +-2989297, -1785096, -1609002, 11045045, -3978750, -141197, -4130685, -3403762, 2028298, 1560684, +-223338, 1223529, -852014, -1505386, 2079838, 74088, 863825, 925029, 2681133, -995896, +796716, 636192, 205085, 742493, -3003793, 3985193, 3597035, -1175210, -598074, 606127, +-499827, 721018, 132070, -231391, -1437203, 937377, -735513, 390842, 3497177, 2267206, +1884954, -1389422, 2497524, 1035087, -992137, 1174137, 390305, 879931, 295279, 14107357, +-12709882, -6732898, -8490077, 6011344, 2221035, -4371203, 2786897, -139050, 8365523, 458488, +15032, -8210904, 5675800, 9242233, 9700721, 8051990, -4600984, -767725, 1184337, -5268851, +-3624953, 1290638, 519691, -7559680, -3738769, -3228742, 3588445, -639950, -5725192, -2675228, +1789928, 4424890, 486942, -1641214, 3221, -4048007, -179852, -319975, 544924, -8635032, +4933307, 5821828, 1149978, 2966749, 3446175, -7004018, 9858024, 8865349, 1593433, -6242735, +3489124, -2253784, -9220758, -2399813, -2943126, -206695, 515933, -238371, -5586679, -5011690, +-11438035, -9561134, 92879, 5696201, -5258651, 2365453, 707596, -3585224, -9321690, -980326, +5395553, -3660923, 4839892, 9527848, 2882997, -4015258, 5501316, -75699, -607738, 2566780, +4278325, -428960, -772557, 1140851, 2755222, -1586454, -6265821, 310311, -196495, 612570, +755377, 2042794, 4551592, -1687385, -822486, 3404835, 3118146, 625992, 437013, -2269890, +4387846, 449361, -314606, 2594160, 809064, 916439, 429497, 2335389, 2101850, 2323041, +3875134, 264141, 2305324, 284542, 2568927, 1186485, 1449552, 963146, 2430952, 2117956, +1740536, -13553843, 1387274, -5086852, -18141404, -13965086, 3439732, 88047, -3163244, 3185255, +8663486, -1424319, 5174362, 4583267, 2644089, -1426466, -4754529, 3809636, -4056060, 448287, +-3489661, 5405753, 9911711, -8989903, -2623688, 521302, 3573950, 933082, -2834142, -1660542, +-3381750, -290447, -4175245, 5231807, 1111323, -6327024, 6959458, -7053410, -2294586, 8571144, +7531225, 6365142, -7352447, -4822175, -6593312, 7556458, 10228465, -180389, -2184528, 8129300, +-12068858, 1451699, 3162707, -1185948, -10152766, 9057549, 3122978, 4591857, 8464307, 430034, +-12241731, 3175055, 4936528, -3140158, -972273, 8374113, -8769249, -8188892, -7117298, 832687, +10751377, 5830955, -1633698, 12370580, -16557099, -6099928, 120259, 7912404, 3617436, -2400887, +-13178570, -2062658, -5334887, 1442035, 4902169, 12749610, 2094333, -3621194, 1588601, -2189360, +-934692, -4237522, -67109, -3493956, 1104880, 3468186, 1885491, 3191698, 3529926, 1136556, +685047, 15569, 549756, -1762547, -1925219, 153008, 3722663, 1432372, -565325, 667867, +1437740, 3059627, 308701, -1034013, 420907, -1009317, 2361695, -4571456, -2873870, -2024540, +2752537, 2468533, -4107063, 887985, -14602889, 14660334, 5929203, -408559, -1544578, 1187559, +2477659, 7919920, -1561221, 831076, -2598455, -1889249, 4446902, 2268817, 5171141, 2248952, +2965675, -9989557, -4168803, 16632261, 1641214, 4909685, 6960532, 2583423, -5701569, -10535018, +3217468, -4423280, 346282, 3641059, -5268315, -6186901, 7431367, 8731132, -4621922, -3297461, +6751689, -8403640, 3610994, -6478958, 2846490, -6271726, 8985608, 1211181, -1246077, 3131031, +15473157, 4234301, 5963562, -1800665, 739271, 2597918, 11412802, -1042066, 16378858, 440234, +7754564, -332323, 14779519, 5201743, 11016054, 8351564, -1920387, -5011690, -1393180, -5718212, +-6311455, 8646843, -1813013, -3447248, 1291711, 77846, -4505958, -2215666, 1295470, 3843459, +1017370, -7488813, -7432978, -3878892, -7588134, -245887, -221191, -2260227, 2022393, -196495, +2996814, -496069, -3132642, 587337, -1359894, -5716602, -3640522, 766115, 7521562, -3241627, +2744484, -900333, -146566, 3474629, -2703145, 1153736, 1657857, -1967632, -1380295, -987306, +-2237141, 1030792, -2780991, -3578782, -1416802, -3873524, 4743792, -1386738, 226023, -447750, +-353798, 476205, -1661616, 679142, 1148904, 595390, 1891933, 2574833, 391379, 1913408, +-1520418, -4176319, 756988, -1173063, 1668058, -1719598, 17145510, -4397510, -66035, -20947092, +-664109, 11317239, -5799817, 9842991, -13291313, 2018635, 1428077, -312459, -17652316, -726386, +-29469382, 1466195, -3174518, -12307766, -2073932, 1727651, -6400575, 1192390, 7556458, 1214939, +-6680285, 1321776, -2009508, 6617471, -7188702, 485331, 9563282, 2196339, 871342, -1354525, +7349763, -4617627, 848793, 27917, 5661841, 1134408, -9887015, -5257577, -6947647, 8301098, +-18594524, 9096204, 7524783, 6439767, 3656628, 1444183, -8088497, 5878200, -12021077, -2818572, +-2455111, -2463164, -444529, 815507, 3981435, -9267466, -3566434, 15760919, 6678138, -5683316, +-6567542, 1755568, -2673080, 4835597, -3099893, -924492, -4990215, 14292577, 7354595, -4846871, +989453, -7213935, 1781338, -5436355, -1794760, 5698885, 5378373, -1606318, 10499048, -4045859, +5260261, -6774774, 7362648, 1097901, -4121558, -5701032, -8435316, 2200097, -835371, 3925063, +-989453, -2491618, 1671816, 1626719, 2689187, 2113661, 4872641, -153545, 1639604, -3653944, +3081639, -2616709, -1221918, -1957968, -284005, -4662724, -697932, 1853815, 4342212, -4006668, +-1836099, -2891050, 3014530, 2255395, -1751273, -348966, -3020436, 2425046, 399969, 10776073, +10889890, 6299644, 5622112, -5371394, 6260452, 10463614, -7860327, -333397, -20323248, 11562589, +7881265, -2944200, 4651450, -1360968, 1576253, 7176354, -4584341, 11257109, -10245644, 926639, +12698608, 5521718, 743029, 9774809, -3518652, 4458176, 2553358, 5209259, 8667244, -5203890, +-1079647, 15995532, 7991324, -412317, 2181307, -10939819, 14741938, -12502650, -817118, 12876312, +3984119, 13867376, -8774081, 2170569, -595927, -3473018, 1839320, -13521094, -9468255, 12618614, +-6345278, -2782602, -4316442, -14376329, 10137197, -3440269, -2394981, -6407555, 6228240, 14472966, +-11486353, -2401961, 9782862, -10837276, -4718559, 8690866, 12202539, -20272782, -5407364, -1803349, +8603893, -376347, 10051834, -2516851, -7392176, 418759, 5345087, 12974022, 6566468, -8840653, +-468688, 6346351, -13016435, -8035347, -2500208, -6733972, -6781217, -869731, 6164352, -5910412, +1438277, 6359236, 1782411, 1080184, 4494147, -1185411, 2893197, 2723546, 2739652, 1503775, +-513785, -3988951, -1334661, -1161789, -3568044, -1684701, 556198, 389231, -532039, 488553, +3941169, -3316252, -1046898, -2480344, 1893007, 1780801, -766652, -2757369, -5944235, 2934000, +2274722, 3803194, 1066226, 879931, -412854, -3761318, 1500017, -1548873, -1683627, -1137630, +1032403, -727460, 10566156, 22397718, 4325569, -13252658, -4725001, 4389994, -29392072, 917512, +176631, -4612258, -1444183, 13564044, -22180822, 4865661, 10368588, -8170639, 9190156, 17127792, +4252018, -15855946, 4291209, -4005057, -284005, -15544560, -4685810, 14146012, -1585917, 12968117, +-3412352, -4571993, 2131915, -11011222, -6171868, -7933342, -5859409, -4346507, 10606959, -11732777, +1913408, 20431160, 13821205, 4587025, -20783884, 3429532, 13656385, 5681705, 824634, -7446400, +-9016210, -22231288, -15322833, 3139621, -7574712, -7622493, -421444, 9451076, 6734509, -6710350, +308701, 13459354, -5178120, -2321967, 631897, 17703856, 694174, -932545, 9043591, 2784750, +-20172388, 5621576, 5870147, -142271, -16700980, 7013145, 9817758, -7396471, -5220533, -13760001, +3674345, -5082020, 5215164, 2559801, -3206193, -5862094, 3809636, 1686848, 5870147, -2958696, +9141838, 3173444, -6230387, 701153, -299037, -8642011, 186831, 643708, -3758, -228707, +-4502200, -3972308, -1797981, -163746, 5742372, 1840930, 3015067, 4571993, -2088428, -2804077, +2223183, -4531728, -3981972, -228170, -197032, 1333587, -1299765, 949725, 2838437, 2931315, +398358, -1840930, -402653, -301721, -479963, -35433, -719944, 286152, -77846, 3819837, +-2214593, -2872260, 7117298, 5000953, -663572, 1889786, -3189550, 1360968, 99858, -1345399, +-6765647, 22994182, 1116155, -4823785, -473520, 10078678, -5087389, 2668785, -2643016, 2266132, +8622147, -16147466, 16747688, 18991272, 5236639, 7953743, -6635188, 10708427, 25054692, 676457, +-3033858, -4782446, 10582799, -3939559, -6243272, -2262374, 3660923, -12685723, 5442798, -11188390, +12506408, 2746095, 12595528, -8120173, 11468636, 3331821, 15055471, 2393908, 3060701, -5560909, +9324911, 2250563, -3138547, 13531294, -5455146, -9844065, 19174882, 15285252, 5557151, 14442364, +20994874, 25490630, -8096014, -8141648, -9167608, 3089692, -11891154, 13763223, -1846299, -1377611, +-19817516, 4465156, 22213570, 22645752, -1006633, -3088082, -15741592, 140123, 14705968, -7677254, +-9375377, 8286603, 1195612, -8190503, 2750390, -1414655, -5058935, -1215476, -4355097, -269509, +8486855, 6302328, -1868311, 1443109, -2195802, -8690329, -11317239, -2181844, 5469104, 2168422, +7788387, -1682554, -7556995, -2126546, 8082055, -3938485, 4552666, 7458211, -7699803, -2106145, +-846645, 1845762, -517007, 4954782, 3585224, 1739999, -7670812, 1837172, 4038880, 1179505, +1599875, 2657511, -6815576, -3212636, -96100, -419833, -3662533, -8790187, -2925410, 696322, +4418985, 924492, -3670050, -4232154, 1566589, -30114164, -20984674, 11334419, 4515085, -15690052, +1830193, 7226283, -14301167, -8913131, -6063957, 17476758, 7923678, 5727876, -5313412, -4012036, +-4188667, -10550050, -14178761, -25070260, 13344463, 11494406, -5190468, 28767154, 13889924, 27632746, +18985902, 1978906, -8606578, 7493108, 3540127, 12699145, 14494978, 16063178, -2105071, -2545842, +6915971, -6914898, -1488743, -6063957, -11669426, -19209242, -5505611, 20059644, -4744328, -7660074, +-11051488, 8135205, 12157442, 8239895, 948651, 11933567, 22917946, -13314935, -6036040, -10186589, +-7425999, -21663816, -5209796, 5813775, -9826885, -7536594, -25104620, -35691180, 4092030, -23420456, +-37141804, -26702886, -11205033, 24420110, 8489003, 15015206, 11187853, -24571508, -10355703, 2437394, +12600897, -12059194, -14512694, -13864691, -4275640, 7692824, -8291971, -30681636, -19374598, -4158065, +-6155225, -1927904, -4476430, 17799418, 16085726, 16856672, 16994112, 5926518, -28991, 6658273, +1882269, -213138, 5098126, -13638132, -5287642, 6386617, 8278550, -47782, -4445291, -4714801, +2151779, -7264937, -10953240, 10495289, -8139500, -3828963, 1005559, -9263708, -8978629, -16045461, +-6315750, -3497714, 1248762, 14055280, -3442953, -1667521, -4267050, 7352984, -3614215, 750009, +6740415, 917512, -4648229, 3449396, 6715718, -3698504, -943282, 181462, -2265059, 4105989, +-57084948, -8475581, 19116362, -19057844, 8643085, -7079180, -30697206, -9179956, 34087544, 42752640, +-21809844, 1343788, -7125351, -33865816, -26820460, -25352118, -27051852, -14232448, -17458506, -945967, +6504191, -4272419, 7647190, 7035157, -10719165, -2567854, -14931454, 7046968, -23851564, -21507586, +5883569, 4314295, -6063957, -7566659, 19779398, -5145908, 27235462, 6386617, 25290914, -16222628, +11353746, 7464117, 30509838, 16462073, 11089069, 3331821, 5130876, -3077881, 9392557, 12780749, +-9067750, -13042742, 21539798, -2448131, -25663504, -49961208, -60017336, -43275016, 7850664, 352724, +-55848532, 18759344, 10203769, 14545980, -18657338, 2850248, 7231115, 2915209, 29549374, 29908004, +59574956, 19983946, -30867394, -40006008, -24235964, -21937082, -25232932, -22607098, -217970, 12943958, +17514876, -10550050, 22873922, -18774376, -26103200, -20423644, -13211856, -10049150, -20272246, 13389024, +-870268, 12815109, 10172093, 1751273, 22475564, -11192148, -4444218, -21511344, 7907572, 11892228, +-1256815, -1701344, 7155953, -20665236, 1330366, -7206955, 4558034, -9849434, -13806709, 8926016, +140123, -5762236, -1724429, 10443750, -7501698, 5493263, -6945499, 6222871, 5790153, -2772938, +-6892349, 4870493, 5682242, -15242839, 6964290, -3766150, -4002373, -4584878, 3849365, -10273025, +-4702453, 32338956, -8652212, -61108796, -17459042, 50303192, -6958384, 11214696, 7183870, 9385577, +17638894, 14417131, 5058398, -9982578, -3674882, 2483028, -10845866, -2550674, 18516678, -16564615, +-9809705, -16608639, -3927748, 2826625, 2177549, 4363150, 8698383, -12646531, 11304891, 27509266, +-427886, -16115791, 1544578, -10561325, -3543885, 16292958, -17146584, 1901060, 5544803, 19927038, +29042568, -18459770, -10390063, 11149198, 1664300, 3098819, 3485366, -12276627, -31047782, -5647345, +-14372571, 28292024, -53727892, -35509180, -14426795, -5964099, 15729781, 3162707, -18849538, -3310346, +-21736292, -23780698, -8290361, -17233020, 3311957, 13921063, 64969432, 11870216, -9425306, -41816340, +-34053720, 10013716, -836982, -39276404, 21336324, 20838108, -39567388, -919123, 10581726, 11310260, +43146704, 18659486, 9205726, -42606612, -21622476, -29468308, 26886496, -2895882, -8473434, -4959077, +8572218, 27867358, 24114630, -12797392, -24894168, -37015100, 9196599, 21503290, -7395397, -4026532, +19443316, 10687489, 16987670, 3954591, 6242735, -14445049, -3936338, -6985228, 7521025, 7239168, +-1685775, -3588982, -1810329, 9846749, 11713986, -17002164, 9977746, 6998113, 14101988, -9178345, +-5820755, 8303246, 3382287, -12410845, -932008, 13791677, 3015604, -10851235, -3557844, 1433982, +-20789252, -71877888, 10918344, 11826729, -1828582, -586263, -5012764, -20276004, 8753680, -4013647, +37523520, -37562712, -7225209, 39516920, -1240172, -25755308, -2685428, 23547158, 28492276, 17730162, +-4474819, 20562156, -14578730, 14071387, -5602248, -4620311, -12545599, 22469122, 15446850, -13757317, +-6054830, -1544578, 22757958, -1557463, 2885144, -13740137, 15502148, 10264435, -15950435, 30406220, +1849520, -26334592, 24240258, -28656022, -14889578, 27108222, -56219512, -35625144, 31346818, -19063212, +23368380, -35435628, 8522289, 13721884, -19272056, 1285269, -1058173, -36588828, -8114804, 38863548, +40960568, -45502496, -14783277, 14583025, -36410584, 48192216, 48227652, 7372312, -67815920, -35321276, +73147048, -37837588, -7154879, 59464360, -34069292, -69990248, -15323370, 64256468, -13205951, -45951856, +-10916733, -84339736, -3360812, 69333656, -24545202, -68061272, -6453189, -18706194, -8722005, 21000242, +-1914482, -230318, -24476482, -15781857, -7435126, 28083180, -34372088, 2304787, 6149320, -10345502, +1780801, 33321966, -20389284, -25722560, -2926483, 9819906, 21096342, -7568269, 10901164, 16252156, +2367064, -23157926, -12101607, 1146219, -18358838, -8595303, 36826124, -13065291, -34768836, -8868034, +21218212, 9146133, -2075006, 5200132, -31369904, -17821966, 24967718, 36698348, 5000953, -26138098, +-12434467, 1769527, 10190347, 18702972, 2509335, -10253161, -39760660, -37519760, -836445, -47367584, +-13868986, -20135344, -18868328, -14310831, 30993020, -3370476, -9681930, -13002477, 6220724, -16640851, +-39335456, 30629022, 9853729, 26456998, 8511551, 27359478, -10654203, -16908212, 6304475, -28616294, +22472342, -25920128, -5234492, 17077326, -19412178, -4155918, -11683922, -31386010, 4993437, -23700704, +-16829830, -20682416, -15046344, -9459665, -20763482, 3704409, 23614804, -15791521, -5331665, 2873870, +21794274, -9804337, 7915625, -22055194, 36110476, 11192685, 15663209, 9800042, 34656092, -2027225, +-40044128, 8893804, 14980309, -11229729, 195958, 21235392, -27744952, -27858768, -32248226, 28123446, +8679592, -40097816, 15962246, -26473104, -4821101, -37424196, 16904454, 26547192, 5856725, -41459320, +23625542, 19199578, -4928475, -36449240, 10193568, -22005802, -7159711, -1614908, -10755135, 18009334, +-15913391, -29578902, 15041512, -6635725, 12782360, -208843, -729608, -243203, -7644505, -9254044, +6623377, 26313654, -2830384, -37318432, -9923522, 15433965, -18025978, -7924215, 18274012, -6824703, +-2176475, -14987288, 29614874, 17067664, -8216273, 13037373, -1932198, 5796595, 24113020, -4412005, +-20348482, 8556649, 13950591, -10838350, 17506286, -2895345, 10969883, 1080184, -7289633, 14118094, +21196738, -12034498, -21407190, 8404177, 13895830, -10937134, -1717450, 12311524, 4791573, -8567386, +-8574902, 10903311, 35111356, 66104916, -16107738, 32705640, 6230387, -15805480, -29783450, -17409650, +38371776, -12775917, 6985228, 14817637, -4070555, 35391068, -5406290, 27748174, 28959354, -35898412, +18249316, -9492415, 681826, 12998182, 10697153, -1336809, 5619965, 10506564, 35481260, 36575404, +28105730, -20820928, -7264401, -48864916, -1670742, 11421392, 21807696, 4984847, -40550396, 17588428, +-24422794, 31221192, -28480466, -19854024, 1833951, -23736674, -4269198, -13732084, 47976932, -26403312, +-13107703, -50567336, -16645146, -26572962, 71096208, 43301324, -15247134, -48091824, -51731808, -30656402, +35254164, 46252504, 23248658, 6791417, -62035972, -28731720, 20091320, 17322676, 2462627, 22339736, +-13052942, -40708236, 19031536, -69045360, 74855912, -7029251, -48767208, 112939384, 15968688, 39305932, +67460512, -112114216, -81013824, 22391276, -6891812, 17160542, 24319716, -70070240, -5426155, 14178224, +1174137, 58756228, 3930969, -30707942, -3448322, 31609886, -18556406, 13842143, 15984258, 702227, +-13079786, 15501074, -41049688, 31221728, -8201777, -12924093, 17346300, 4763119, 1014686, 18540300, +-4597226, 11144903, -2497524, 7190849, -5564130, -21336324, 12776454, 9169755, 12071006, -12348, +134755, 8549132, 4462471, 3396246, 24730422, 27850716, 1370632, 18301392, -17300128, 2721399, +-11431592, 21155398, 18960134, 3118146, -5743445, -12458626, -29805462, -12890271, 2354716, -29436632, +19801410, -41559176, 25612500, -17151952, 42075112, -19087908, -2014340, 23916526, 4217121, 2017024, +-10909754, -9495636, 1052267, -16230145, 17738214, -2167885, 18842558, -14900852, -14627585, 4867272, +715649, -15111842, 9434433, -1997697, 8234526, -4715874, -4074313, 7778723, -7542500, -725850, +5873368, -3175055, -3598646, 29778082, -2055142, -10131828, -5351530, 14072997, -1289564, -16410533, +8656507, 17365626, 3551938, 287226, -10334228, 3542274, -8361765, 7882876, 21285322, -7686918, +9752797, -8157754, -2351495, -8925479, -4110284, 5456756, 6921340, -12575664, 7537131, 2065342, +-1524177, -12581033, 2190970, 4351339, -9141301, 13180718, 11267310, -22610856, 5805722, -20772072, +-23332410, 15919833, -8251706, 19261854, 10679973, 401043, 10056666, -3301219, -11978127, -3085397, +830539, 13348221, -5999533, 3943854, 5701032, -8001524, -1293322, 4487167, -2222109, -1728724, +7980049, -321049, 3151432, -6700686, 2850248, -907312, -6507949, 12374338, 1276142, 10048613, +-4862440, 8199630, -4057670, 324270, -6455873, 5379984, -3030100, 12214350, -3688303, 11527155, +-11939472, 2389613, 1024350, -2865280, 655519, 1165547, 9647033, -744103, -10801306, 6971806, +-5965710, 829466, 6982543, -7211250, 12010339, -24503862, 51458540, 9631464, 12569759, -6653441, +4619238, -1599339, 9671729, 2981244, 21876952, 1411434, -12016245, 7136088, -7873749, 3288334, +4405563, -10183367, 440234, 2335925, -10994043, 9841381, 2456721, -4570382, 13271986, -4873714, +5188321, -4183298, 2395518, 2455111, 1127429, -1773285, -4046933, -1916629, 1776506, 239981, +-2322504, -6591164, 4758287, -4454955, 2326799, 4181151, -4542465, 857920, -4249334, 1105954, +-6685117, -10768557, 10937671, -6009733, -2954401, 4598836, 2057826, -1966021, 1158567, 9403831, +-10553272, 4445828, -4038343, 8137890, -8886287, 4923643, 2364916, -1625645, 1823751, 133144, +18790, 3947612, -5658620, 3058554, 2653216, -1577864, -646929, 7110319, -1208496, 2377265, +-8436926, 11171210, -8820252, -200253, 5516886, -5138392, 3731790, 1190780, 1248762, -5368172, +4174171, 4391067, -2906619, 1700807, 2103460, -3841312, 1219234, 1797981, -930397, 3850975, +60666, -147103, -534723, 3452080, 2591476, -2285460, 2935073, -1626719, 1249836, 1489280, +-501974, 4311074, -2088428, -21475, 2664490, -3503620, 153008, -402116, -2565706, 294742, +2368138, -788127, -2179159, 4298726, -2907693, 607738, 9752260, -45808512, -113716240, 24562918, +94565520, 63920388, 133380744, -43626668, -37286220, -76741400, -122638496, -12127914, 38233260, 50383188, +65773128, 33148020, 3645890, -10761041, -28424630, -40565968, -6133214, -10844792, 4006131, 9296994, +-468688, 2325725, 4918812, 2160906, 16077136, 19055696, 11869679, -2203318, 2222109, -14130442, +-29593398, -31575526, -15454366, -20717312, 17067664, 31399432, 33369212, 36590436, 20088098, -5943161, +-14434311, -26931592, -28403156, -19776714, -11089606, -1302449, 7204271, 13779866, 14846628, 12440910, +10768557, -1869921, 2915209, -3203509, 1453310, -2414845, -1439351, -882079, -10048613, -10591926, +-7620346, -15950972, 54224, -3027415, 2040110, 27055610, 35716412, 12016782, 12128451, -9816148, +-19572702, -13584982, -23575076, -18994492, 6724845, -1657857, -11406359, 8770860, 9468792, 11212012, +26750666, 11085311, 11760694, 2887292, -14333916, -14200772, -11553999, -12688407, -15981573, -13714904, +-8104604, 2495913, 17887466, 26856430, 25225416, 10181220, 5139465, -6580964, -12132746, -10984916, +-12022687, -13974213, -6322729, -5831492, -418222, 4684736, 3676492, 10821707, 14454176, 10388989, +7161321, 2479270, -843961, -6837051, -6983617, -11012833, -12304544, -9743133, -8606578, -2209761, +9312026, 13800804, 14954539, 13212930, 5462662, 2441152, -6564858, -10540923, -5542119, -7788923, +-10510859, -8010114, 1541893, 7206419, 6845641, 3811247, 4391604, 3900904, 3070902, 907849, +-648003, -1088237, -2707440, -3576097, -3234110, -3854733, -4467840, -2411624, 2134062, 3740917, +4836133, 4030827, 2955474, 1007707, 134755, -1179505, -1682017, -2179696, -2368138, -2689723, +-1528472, -598611, 963146, 1566053, 1571958, 1340567, 1220845, 251792, 40265, -292058, +193810, 183610, 629213, -887448, -1576253, -1376537, -751619, -707059, 336081, 965294, +1271847, 751082, -404264, -536871, 740882, 1180042, 1013612, -317291, -1243930, -1464584, +-526670, -38118, 273804, -170188, -271657, -355409, 91805, 351650, 860067, 669478, +655519, 456340, 129386, -431107, -631897, -853625, -719407, -745177, -435402, 155156, +786516, 755377, 723702, 434329, 302795, 181999, -110059, -589484, -540629, -440771, +-238371, -86973, 122943, 4295, 20401, 77309, 208843, 239444, 201863, 39728, +-55835, -110059, -84826, -52613, -22549, -25770, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -6444599, -798327, 2026688, 1962800, 10102837, 2733210, 2121714, -3013457, 372052, -5147519, 1188632, -4697084, -2405719, 208843, -1010391, -2541547, -4082367, 3124052, -6818261, -3449933, -3429532, -3672734, 4026532, 2113124, 951872, 2910377, 2401424, 4817880, -1694902, 1676111, 2991982, -621697, 975494, -3542274, -1534377, -1490891, -1342177, 3251827, -6272263, 1030255, -2182917, -6541235, 141734, -1197222, -1660005, -2719788, -915365, -2837900, -8267812, -2628520, -1631014, --1349694, -1866163, 836982, -1561758, -405338, -546535, 2873333, 1277753, -390305, 1831267, --1633698, 3528316, -2338610, -3856881, 3694746, 3876208, -1698660, -3704946, 337155, 2006287, -1508607, 1741609, -1764695, 6442, 1409286, 1909650, 823023, -544387, 217970, 2376728, -4591857, 2216740, -587874, -71404, -1111323, -1171452, 944356, -1537598, 916976, 1122060, --466004, -166430, 483721, 426276, -483721, 367757, 243203, -2133525, 315143, 148713, -636192, 360240, -831076, 748935, 583579, -71404, 9132174, -1735167, -898722, 960462, -2503966, -6768332, 4179003, -8029978, -383326, -3898757, -592169, -2584497, -626528, -646393, -4002373, -3415036, 4336843, -4567161, -4985920, 2081449, 6640557, -7876433, -2202781, -3821447, -33823, -1998770, 2101850, 2794413, 1403381, 2847027, -4584878, 143881, 6385006, 2493766, -795106, -4672925, -6663642, -4020626, 998580, -3421478, -1939178, 1275068, 4293894, -3911105, --3850438, 1529545, -2820720, 4931160, 1639604, -533113, 3473555, 3294240, -24159, 5544803, -2734821, 1720134, 1455457, 3626563, 5727876, -3809099, 1079111, 1555315, -4061429, 335007, -3263102, -1301912, 8281234, -2588255, -2222646, -1753420, 3040837, 4198868, -5403606, -2218351, -1445793, -1002875, 1301912, 494458, -2379412, 1026497, 483721, -1764695, -2873870, 1148904, -779537, 2590402, 199716, 780073, 1181116, -144955, -877247, 1890323, 93952, -36507, -1632625, -926102, 780073, 2175938, -206695, -506806, 396748, -359704, 660351, -1381906, --444529, -660351, 68183, -236760, 842350, 59593, -866510, 5369, -11746736, -1891396, --2608656, -2083059, -1039919, -1426466, 6268505, 7490960, -1695438, 6114423, 2340757, -3361349, -1603097, -5100274, 914291, 1093606, -6860137, -1005559, 1080184, 1212791, 4765803, -903554, -4141422, -2755759, -5259725, -5555004, -1580548, -2805151, -4210142, 4381404, -1701344, -834297, --753230, 923418, 2391223, -6732361, 38118, 951335, -3184182, 8046085, 641024, -1971927, --1729798, 8590471, -601295, 1100049, 5087389, 160524, 3114388, 1217623, 299574, 4744865, --14496, -3303367, 4263292, 2289755, 2743410, 3862249, 1286880, -3118683, 2240899, 3170760, -3083250, 4752382, 42413, -4383014, -3497714, 5571647, 7755101, -7056095, 1433445, -1860795, --1231045, 1631014, 2970507, 2846490, -2245194, -899796, -2168959, -3635153, -3171297, -1161252, --2010582, -3123515, 729071, -846109, 1204202, 1020055, -957778, 570694, 207232, -2536715, -874563, -1712618, -3075197, 214748, -896038, -1291711, -1372779, -387621, 574989, -463320, -906775, -587337, -1027571, -1427003, -1308354, -563178, 253403, 1028108, -1989644, -8659191, -9226127, 8546985, 6443525, -4497368, 5036923, 9095130, -2289218, 7107097, 2674691, 1066226, --1108102, 7836705, 3704409, -1836635, -5622112, 3258807, -2330020, -3007551, 3175055, 3748970, -1644973, -5582384, 905701, 5010080, -2444910, 1698123, -10977936, 1580548, -883153, 5288179, -1293859, -2278480, -3309809, 6768332, -5826660, 471373, -4705674, 549756, -1440962, 3780645, --787590, -1233193, -5765994, -1384053, -1016297, 7160784, 358093, -6550899, -241055, -361851, -2240899, 3424163, -2913062, 12885, -3717294, 3969624, -868657, 4798016, -2586644, 7143068, -3550327, -7883413, 8356396, -1204202, -5768678, 983011, 7636989, 1551020, 1178432, -6174016, --399432, -2391760, -3332895, -3234110, 297963, 2911451, 3763465, 2043331, 2059437, -2409477, -1818919, -2088428, -231928, -111669, -958315, -401043, 2179696, -3432216, 942745, -335007, -309775, 1153736, 947577, -92342, 1502702, 163746, -2249489, -2446521, 1449552, 662499, --85899, -1615445, -306553, 390305, -204548, -705985, -1560147, 993748, -11274, -981400, -1109175, -653372, -413927, -1257889, -754841, -474594, -1573032, 1119376, 912144, 10045392, --3352759, -7137162, -298500, -10743324, 64425, -9220221, -3156801, 6471979, -6557878, -7241315, -2268280, 687195, 731755, -1635846, -2323577, -5218922, 3661460, -10288594, -3114388, 1132261, -6503118, 459562, 6596533, 2400350, 14404247, 5571110, -75699, 712965, 6899865, -1547799, --1967632, -1199370, 1206886, -4433480, -2168422, -7531225, -456877, -3414499, -2021319, 9464497, -228707, 5953362, -2274722, 2478196, -515396, 3586835, -1094680, 3345243, -3145527, -3904662, --565325, 1214939, -3950833, -3941169, 433255, 2159832, 4437238, -540092, -1960116, -799401, -4214437, 7140383, 466541, -4713190, -6791954, 188979, 1965484, 810675, 9454834, -5785858, --240518, 4290136, -1473174, -4830765, 6687264, 3119757, 1252520, -3177739, -3450469, -5779416, --2222109, -534723, -2966749, -1430224, -2558727, 598611, 762894, 1566053, 268972, 533113, --3194919, -1597191, -3430605, -1121523, -932545, -2576444, -1618666, 1022202, -228707, -1029718, --220654, 973347, -2115272, 1205812, -1501628, -76773, -576063, -1096290, -336618, 77309, -1078037, -1443109, -2217814, 1949915, 1191317, 635118, 8924942, -6823630, -1378148, 584652, --518080, -236760, -5617817, -4317516, -595927, 3755412, 1370632, 1519345, 1584843, 3946538, --795643, 3611531, 2922188, -9246528, -3549791, -10854993, 2830920, -3810173, 5481989, -3503620, --4793721, -3500935, 2852395, -7226820, -6018860, 8443906, -4593468, 9153649, -2153926, 2769180, --3211562, -6128919, 6780680, -5194763, -5854578, -564788, -3183645, -6860137, -5298379, -8655970, -359704, 5601174, 3212099, -3350075, 9639517, 3557307, -3543885, -4456029, -6976638, 327491, --2616709, -4855998, -2464238, -2046015, -3441343, 1860258, 7706782, -442382, 499827, -5199595, -2446521, 2636573, -4553739, -3583077, 1834488, 9401683, 3725347, -2300492, -1254131, -1944010, --9668508, -7574175, -6424734, 6736120, 7114077, -1008780, -3350611, 3146601, -2146410, 2766496, --1442572, 1326071, 198642, 171262, -3155727, 2127620, -1858110, -1283658, -521302, 1908576, -1376537, -153008, -2646237, 1694902, -415001, 1254667, -921807, -545461, -2345589, -971200, --126165, -245350, 403727, 486405, -339839, 433792, -1961726, 902480, 139050, 320512, --744103, 2421288, 1458678, -56371, -995359, 279710, -1515587, 2735357, 558883, 12694850, --2521683, -124017, -2199023, 8227547, 7798050, 2625836, -13258564, -2289755, -16081431, 9363566, -3903052, 164819, 16414291, 7709467, -1542430, -7496329, 6714108, -3264175, 1599875, 2211908, -985695, 5310727, -4893579, 9149354, 3433826, 802085, -2884608, -4802847, 6189048, 5189394, --1100585, 3340411, -7953743, 1378685, -10592463, 4189204, 513785, 5265093, -8710731, 1693291, --2896419, 1809792, 9745818, 8223789, 317828, 2309082, -6178311, 7924215, 154619, 16975322, -17977122, -2495376, -4886062, -5017059, -3977677, -10565083, -2995740, -13766981, 759672, -1243393, --827318, -2887829, 4735202, 7978439, 12596065, 11666742, 9000104, -15005005, -10693395, -568009, -686658, 15532749, -11070278, 8298414, -646393, -3259880, -1671279, -485331, -3153580, -8762270, --5719823, -1734093, 2479270, 710280, -271120, -2464774, 1313723, -3172907, -348429, -1735167, -3267933, 3598109, -942745, -807991, 3404835, 2528125, 397821, -616865, 1221918, 116501, -476205, -781147, 1449552, -223338, -911070, -1500554, 397821, 1372779, 2173790, 4663261, -3678103, -1918240, 412854, -3502546, -674310, 1406065, -310311, -783832, 61203, 580357, -742493, -4709969, 9103720, 1893007, -6867653, -3828963, 17166448, 16886738, 18927384, -1942936, --886911, -3311420, 3113851, 9228274, 10616622, 3036005, -4682588, -9222369, -18701362, 5452461, --11099269, -2482491, -1209033, -2448668, 1171452, -619549, -3501472, -472983, -10876468, -4336843, -564251, -2056753, -12145094, -5145908, 949188, 8706972, -2560338, 197032, -9686225, -3294240, -33286, 6306086, -3979287, 3857418, -10816338, -3040300, 2414309, 4022237, -3024194, 14364518, --3045132, -1875827, -7589207, -2523293, 5720360, 1928977, -742493, 7473780, 10331007, 12104828, --2225867, -6126771, -6981470, 54224, 1353989, 2807298, -4980552, 3877282, 5086852, 4311611, -4159676, 12110197, 8111583, 5389110, -740345, 2694555, -12186433, -2305861, 1184874, 6156299, -9707163, -1894618, -5622649, 1690070, 3281355, -2865280, 4928475, 3995393, 5334887, 808528, -2279554, -292058, -526134, -3960497, 2976949, -1258962, 1921998, 1764695, 472446, 2849174, -155693, 4605279, 3173444, 2069101, 1207960, 1277753, -89657, -623844, 273804, -1958505, --240518, -2441689, -3995930, -1571958, 700617, 658741, 1585917, -818191, 1006096, -1621350, -622770, 2035815, -195958, 350577, -17642652, 21931714, -627065, 3214783, 11991012, 202400, --4217658, 619012, -21415244, -13037373, -6129992, 3410741, -4224637, 2435783, -10018011, 6920803, --3504157, -103079, 13202193, -12890271, -8575439, 12349105, -3880503, -18121540, 1278290, -11178189, -2302103, -940061, 6778532, 2908767, 3415036, 1366873, -2191507, 8036421, -901406, 10328859, -6318971, -3692598, -6208912, -5833640, 2813204, -2875481, 2831457, 1984812, 6087580, 1760400, --11431055, 657667, 3884261, -3969087, 486405, -7901666, -1749662, 676457, 517007, 18080202, --3158949, 12840878, 15394773, -4255239, 8243653, -2556043, -447750, -8585640, 5444408, 13067975, -9156870, 2009508, 3604015, 8089571, -521302, 6699612, -2727304, -3783866, -6521908, 3535832, -16738561, 3713536, -2150168, 1298691, -11747809, -4008278, 295816, 11041287, 8096014, 3459059, -7191923, -2091649, 7065758, -109522, 4453881, 522912, -319975, -885300, 4936528, -562104, --3069291, -1944010, -1203128, -791348, -1218697, -2513093, 3577171, -2338610, -3039226, -932008, --4000225, -2815351, -3408594, -2017561, -2368675, -3129421, 1083406, 679142, 1355599, 1057636, --1787780, -994822, -3135326, -4192425, -333934, -2352568, 1396938, -1150514, 398358, 1983738, -2172180, 1422708, 3699578, -1023813, -274878, 2734821, 21058224, 3080565, 5266167, -4956393, --2501282, 14307073, -9410273, -2160369, -18539226, 17405892, 9105868, 1270237, -6282464, -17502528, -1797444, -4644471, 2171643, -19628538, 7033546, 10393284, -11389180, -2714419, 1736241, 1225139, -3828427, 11278584, 13889387, 60666, 1611, 2613488, 561567, -8384850, -9575093, -6350109, --12628278, -6213744, 10825465, 5040144, -3998615, -5329518, -3499325, -22239340, 4874788, 5361730, --10378788, 17068736, 652835, 12735115, -4538707, 8266202, -2680060, -10991358, 1037772, 10147934, --5543192, 5578089, 6552510, 18127984, 5064840, 5706938, 17412334, 9925133, 6626061, -24006182, -5025112, 3692061, 4713190, 505196, -9747965, 17426830, -12878996, 9946607, 10464688, -15654619, --3367254, 21455510, -19040664, 3255048, -4416300, -2053531, -6819335, 8360691, -3515968, -7116761, --6024766, 3744675, 8179765, -7562901, 9490267, -7806103, -3350075, 10727755, 4020626, -876710, --4641786, -5010616, -59056, -1984812, -8076686, -932545, -1655173, -2280091, -657667, 6444599, --459562, -5936719, 641024, 2517388, 6240588, 3848828, 4981089, -1960116, 2678449, -3543885, -278099, -1204738, 2677912, 5116380, -3671123, 2353642, 2534031, -275415, -3156264, 1756105, -1498407, -10980084, -16589311, -7285875, -6890202, -22287660, 15271830, 2438468, 16299401, 984621, -2405719, -7675644, -3949223, 7968238, -518617, 8237748, -8036958, -2531346, 1548336, -3612068, --6560563, 9812927, -9846213, 11678553, -3970161, 3843996, -2410014, -7821136, -6988986, 3455838, --2467459, -21475, 6087043, 23314156, 1772211, -2907693, -7740068, 3410741, 18872624, -3381750, --2956548, -10852845, -3660923, 1644436, -10220412, -3700114, -14628659, 9567040, -17933100, -32564442, --3294777, 1132261, 15699179, -16028281, 15080704, 9829033, -7519951, -15124190, -2294586, 2598992, -4592394, 649614, 9595494, -6213744, -2216203, -32118840, -4158602, 33378876, 3406983, -5482526, --4265977, -17137994, 13131326, -5428302, -4744865, -4138738, -2324651, -7346542, -10945724, 3459059, -6573448, -198642, 5057324, -9241159, -16978542, -477815, -8858907, -2448131, 501974, -8798777, -2271501, -6372658, -11314018, -8359080, -3949223, 3874061, 5469104, -836982, -13414793, -3238405, -1066763, -6536404, -2780455, -396748, -6032819, -3486440, 1880122, -95026, -4695473, -1772748, -2464774, 1020055, -6307697, -2400887, 359704, 6206228, 6884833, 1989644, -1796907, -2228014, --566936, 4689568, -745714, -227633, 578747, 1908039, -5243082, 5314485, -890669, 3661460, -605054, -3637837, 15421617, 13775034, -4468377, -5697811, -1419487, -22228604, 14570677, -14069239, --11621108, -9009768, 5444408, 2199560, 13498545, 1612223, -7482370, -8728447, -9052180, 6944425, --3529390, -4863514, 12321187, 13800804, 4631049, -9360881, 11343009, 18377092, -7124277, -4070555, -15855409, 4063039, 3095598, -10431402, -118112, 15124190, -22466974, 15365246, -3457986, 2055679, -9121974, 11111080, -206695, 5537287, -10650982, -8629126, 5669894, 21160766, 5555540, 5143760, -7896834, -10714333, 2117419, 9383430, 5309117, -1782411, 7435126, 4687957, -12846784, 10306311, --12527883, 2769717, 8908836, -9856413, 7340636, -12023224, -4938139, 2186138, 278099, 7663833, --5083094, 6572911, -5197984, 916439, 2284386, -2248952, -5105106, -9719511, 25772488, 2763275, -7595113, -11322608, -26674432, 18679886, -18203146, -7818451, -314069, -4170413, -2920041, -1578937, --7665443, 4628364, 3510599, 1993402, -7111929, 8494908, 6293738, -2852395, -3170223, 2502355, --2656437, 2357400, -2683281, 9019431, 3041374, 843424, 6111739, 6752763, -4206921, 42950, -2933463, 4697621, 1612223, 2253247, -4560182, -5553930, 4162897, 5833103, 8093866, -1149441, --7992934, -1067836, 394063, 3805878, -12133819, 4472672, -4270271, -1705102, 2409477, 2791729, --3258807, 4126927, -5906, 3287261, -2243584, 7810935, 2325725, 3264175, -1458141, 4451197, --14687178, 15363635, -5776194, -15374909, -19902342, -5637145, -2099165, 11547556, -17526688, -2903935, --2130841, 9074192, 17250736, 14258755, 8857833, 1267552, -4519916, -2776160, -1858110, 12096239, -9943923, -2459943, 1511829, -2758980, 7776575, -19053548, 11235634, 6129992, 8780524, 2902861, -1970316, 16231218, -6507949, -14006962, 8053, -4680978, 884226, -19390166, -10741713, -1239635, -16054051, -10998874, -3507915, 2545305, -715649, 361314, 15779173, 6272263, -2521683, 1289564, -7688529, 5011153, 18395882, -5537824, 8369281, 9283035, 4959077, -3100430, 2959233, -20202990, -8528194, -3868155, 851477, -4722854, -11119670, -14977088, 2962454, -7203197, -20249160, 4732517, --17214228, -12738336, -3028489, -25982404, -15733002, 3752728, 10972031, -13038447, 2725694, 906775, -29651380, 28061706, 26535918, -933082, 1431298, -14121316, -8502962, 10969346, -6067178, -4073240, -1771137, -3697967, 6172942, -7793218, -3872450, -425739, 2303176, -4745402, 5654325, 5598490, -193274, -2610803, 1517197, 5462662, -4624606, -6176700, -1605244, 4893042, -6914898, 11421929, -6595996, -703301, 5190468, -2024540, -4874788, -7814693, -4212826, -6953552, -3737695, 3784403, -630286, 11510512, -2792266, -3925063, -1844689, -26360898, -29148870, 17122960, 15370614, 5066988, -16666084, 28007482, 7866770, -10867878, 8944806, -4410395, -8082055, 12734041, 787590, -11661373, -6935299, 9128416, 1999307, 3124052, 565862, 1294933, 25630218, -689879, 5376226, 2267743, -15850577, 808528, 25421912, -253940, -11394548, 20315732, 4037269, -9175124, -3338263, 10695542, --2388002, -321049, 8329552, -15676631, 15369004, -3407520, -22868016, -6492380, 2084133, -22843858, --2693481, -2499671, 9842454, 9529996, 16941498, -12109660, 2461553, 2595771, 3408594, 7181186, --11028939, -12386149, 6285148, -421981, 12916577, 10503879, 3136937, 27170500, -4695473, -4307852, --18797998, 27729382, 4776004, 19209242, 11684459, -31175556, 4311611, 2721936, 18901614, -10203769, -7975755, 75699, -8408472, -1124208, -6823093, 15250892, -29542396, -3665218, -2253247, 28454, -1186485, 4636954, 7051263, -188979, 13428752, -612570, -2087891, -4436165, -2965138, 802085, --4865661, 1526861, -1433982, 4028143, 2727841, -1465121, 988379, -1652489, -8346732, -503585, -263067, 2024003, -8522289, 4432406, -1870995, 4662187, 3572876, 6612102, -6932614, 7738458, --4373888, 2478733, 5464809, 5044439, -1888712, 158914, -3207804, 4377109, -409096, 2132988, --251256, -909459, 11171210, 6352794, 13422, 5264556, 1425392, 5478768, 1060857, 17191144, --36191540, 21551072, 21920440, -9299141, 5235029, 3085397, 5953362, 194884, 17453674, -12659953, --2716030, -13583371, -87510, -7656853, 1252520, 3708704, -19850266, 8987219, 21615496, -14811732, --14216342, -14489609, 28769838, -12513387, -7037841, 2723009, -9832254, -29743186, 5255430, 21678310, --29680372, -13404593, 10276246, 15985331, 4338454, -4463008, 6889128, -10482405, -4926865, -495532, -14715632, -20151450, -16061567, 11463805, 18477486, 7331509, -23073638, -7412040, 577673, -1010391, --4008278, 12111808, -3578245, 18252000, -14804215, -3165928, -25233, -16885664, 10744398, -19666118, --13571560, 6364605, -8826158, 19251654, 27738510, 16440061, -18353468, 9794136, -5401995, -5425081, --12958453, -3955665, -21116206, 16219407, 11873974, 5823439, 626528, -9903121, -5614059, 6609418, --22046604, 17871896, -4215511, -2942053, 9294846, 1749125, 8462696, -2308545, -1345935, -7430294, --2190433, 817118, 1487132, -5802501, -2092723, -2709588, -2144799, 10102837, 1040456, -50466, --4806069, 4176319, 3952444, -3430068, 2171643, 4699768, 994285, 7832410, -2791192, -5299453, -1079111, -8718247, 4533338, 3430068, 1100585, -140660, 3478387, -615254, 5707475, 1984812, -4047470, -6859063, -2166274, 6669548, 304943, 2803540, 3279208, -6380174, 885300, 6725919, -21095268, 35125316, -193810, -26490284, 5682779, -31620086, 5484673, 14443438, 6822019, 1966558, -19104552, 14139032, -791885, -2848100, -26127360, -14058502, 449361, -12202002, 35535484, -6416681, --7981123, -15261093, 1972464, 13397077, 9398999, -430570, 6922414, 10448582, -15670725, 5440650, -30502320, 10833518, -20823076, -14671071, 9950902, -10274099, -1343788, 7471096, -4561256, -17183628, --4048007, 2149631, 29072096, -6219650, 6514392, -7658464, -23361400, 4160213, 29495152, -7853348, --17563196, 5202279, -10725607, 7266011, -6095096, -7114614, 20298552, -5104569, -2226404, 9961103, --17343078, 6362457, 21481278, -8779450, 1925219, -12463995, 37711960, -6763500, 4574677, 12297028, --8650064, -2004676, -9955734, 5368709, -11260867, -9483825, -8862665, 14512158, -19466940, 2974802, --2800319, -5727876, 15303505, 453119, -5094905, -6342593, 894964, 5827734, 4540854, -8587250, --1482838, 519691, -2327336, -10648298, -6378027, -1825898, 2673617, 1007707, 976031, 1654099, -8888972, -8715026, 9341017, 1977296, 2777770, 779537, 7431904, -3985730, 12133283, -2473901, --71404, 9388262, 12192338, -6139119, 8012799, -3760781, 2766496, -6811818, 6226092, 5329518, --10295037, -313533, -4043712, -1212255, -5082557, 3992709, -6281927, 6004901, -1140851, -2063195, --10433549, -58262304, -20553030, -1269700, 18335216, -9952513, -29265370, -11164231, -4468377, 14010720, -3492882, -4100083, -14578193, 14952392, 26734024, -12454331, 20160040, 4886599, -38779796, 14165339, -17898740, -6578816, -15890305, -3164854, 23566486, 25143276, -2305324, -19463182, 1140851, -2423435, --2690260, -16259672, 3762391, 7086696, -25636122, 17329120, 14725295, -18168248, 3127810, -20355998, -6932614, 48959944, -44144212, 45248016, 20382304, 1825361, 27624156, 13595182, -28639916, 16874390, --21580600, -5027259, 23190140, 866510, 6514929, -12177306, -21016886, 63149440, -15070503, 688805, -24793772, -12290586, 4697621, 1680406, 15254113, 35474820, 33753076, 31883152, 1831267, -855772, --5333813, 1401770, -8843875, 2181307, 27081380, -7447474, -9616432, 2493229, 3607236, 15586973, -18266496, 5021891, 5008469, 12860206, 5405753, -10233296, 3107409, -5392869, -14957760, -6883222, -7628399, -11392401, -16221018, -12440373, -710280, 1234803, -9360344, 4490389, 10280004, 1382443, --3516505, -861678, -11884711, 13675713, -2185602, -3275450, 9499931, -8209293, 6417755, -6207302, --4904316, 16134582, -186831, -12404939, 15399605, -9780714, 9237401, 4137664, -6210523, 4427575, --2257005, 11057930, -5294621, 3695283, 448287, 692564, -1306744, 11781095, -6285148, -1668595, --970663, 1883343, -1844152, 4988068, 9135932, 14837501, -3950833, -42844448, 19428822, -31130460, -43725988, 5146982, -38075420, 8566312, 308164, 17850420, 8396124, -9223979, 32341104, 7890392, -1609002, 21607980, -17321604, -24044838, 745714, 12576738, 43589624, -6144488, 68719, -4574140, -31399432, 3422552, -25025164, -14763413, 4678293, -2763812, 13868986, -24268712, 11606075, 3965866, -7132330, -2163590, -9543954, 5531918, 9694815, 108448, 29151554, -47097000, 4052302, -16603807, --10394895, -6066105, -34515432, -50039592, -51883740, -37650756, 3921842, 205622, -30129732, -228170, --5556614, 3256659, -18731962, -48205640, 47435228, -833761, -7107097, 9700721, -47234976, -3219078, --11832635, 8869107, 13749264, 64755760, 48143900, -5387500, -698469, -1503775, 12606803, 19596862, -11764452, 8954470, -1928977, -7792682, -45984068, 8689256, -1069447, -17861158, -8148090, 29989072, --4343286, -5438503, 14166413, -1184337, 15549392, -6075231, 7736310, -848256, -3425237, 11110007, -13387413, -6149857, 1748052, 6028524, -2690797, 2857764, 537408, -137439, 9078487, -3895535, --4871567, 7681549, -9113384, 11874511, -242129, 6437619, 9687836, -4923643, 2263985, 8625905, --2250563, -5618354, -2279554, 998043, -1756105, 2384781, -11854647, -707596, -9434433, 9749576, -1241782, 6576132, 4428112, -1357210, 77309, -602906, 4219806, 6087043, 4743792, -729071, --5887327, -836982, -12341589, 58750856, -56296284, 9513889, -10931766, 2066416, 23664732, -17459042, -5834713, 789200, -60898880, 1392643, -6926709, 2836289, 6921877, -27276264, -10231686, -45079440, --11694122, -2314451, 2353642, -17140678, -12897787, -19708532, -8269960, 19305878, 4129611, 39119100, -9503689, -13402445, -14030584, 23984708, -26934276, 46032384, -36181880, 10370199, -29213294, 462246, -27661736, -50591492, 47418048, 8252780, 5380521, -34788700, -7041599, -6716792, -114354, 16479790, -16476568, 20779588, -40120364, -1160178, -15850577, -13780403, -15522549, -21718040, -15042049, 599148, -22783728, -24626806, 6459631, -45212048, -15207942, 11232413, 13281649, 2273112, -51394116, -27902256, --18405008, -26280904, -21770652, 1647120, -17185238, 27101780, 8038032, 13493177, -9611600, -14310831, -45556720, -15507516, 12130061, -9368397, 3398393, 34153044, 4435628, 6016713, -19394462, 19324668, -11164231, -8254927, 17947058, -13792751, 4822712, -5241471, 12088185, 2260764, -4276714, 6455336, -15436649, -5545877, 4810364, 5349919, 4483946, -2065342, 4009889, -2446521, 10517838, -3772592, -1576253, 9921374, -2319282, -4181151, 2907156, 4157528, -7212861, -1785096, -19638202, 11918534, -8057359, -177167, -11013907, -4661114, 703838, 3798362, 14533096, -2697776, -4327717, 4876399, -3514894, -2515777, 14671608, 2532420, -18569292, 4457639, 17725866, -2360085, 25269976, -47755740, -72659032, -54796268, -5830955, -33084134, 6443525, 656593, -20035486, -28305446, 32976758, 22152904, -10305774, -14474577, 14505715, 4473209, 31126702, -24748138, -16401943, 19342386, 32357210, -41443752, -16623671, -1540283, 19578072, -14981383, 5650567, -18406082, 3662533, -34430068, 11156714, 36796596, --1355062, -2893197, 45674292, 7917772, -21253108, -44801876, 38128572, -20284056, 17119202, -16482474, -45601280, 20124606, -5175973, 4645544, -26626112, 3480534, 11237245, -12845173, 12623983, -55409908, -21565030, 50153944, 39099236, -21780852, -22706956, -22711250, 25249038, 2006824, -8215736, 2010045, -64677912, -31680216, -14931454, 25066502, -21759914, -58583352, 24705188, 13053479, -42004780, 23443006, -40360344, 35721780, -11091216, -16018617, -28706488, 15274514, -17781164, -11308112, 25832618, 17674864, -7871602, 22789634, 12707198, -8858370, -8394514, -29473140, 6706055, -12397423, 10035728, -10939819, -20837034, 14480482, 3039226, -3970161, 19801410, -10946261, -1720134, 2552821, 7494718, 4603668, -9052180, 8441221, 514322, -4848481, -3045669, 7082938, 3571265, 2831994, 798864, 11165841, -35999344, -1119376, -3042448, 5381057, -12757663, 4430259, 12836584, -18676666, 8017094, 9616969, --7332583, -5258114, 8311299, 4756677, -10959683, -46898360, 25070798, -2731062, 6548752, -17177722, -15026480, 332860, 8246337, 2514167, 2739652, -9758166, 7482370, 25409026, -32405528, 27880244, --4751845, -17097192, 5735392, -11624866, 7548405, -11909944, -9797894, 8259222, -25849798, -2639258, -34438660, -49707268, 14027900, 2384244, -8318815, -15270219, -18077518, -11744588, 36133024, -29743722, --4262218, 11691975, -30232812, 7684770, 16594143, 11112154, 5682242, 5243082, -17055316, 13442174, --44475996, 637803, 38938712, -16267726, -4376035, -8722005, -10985453, -295279, -31481036, 16701517, -12650826, -26013006, 24422258, 6820408, -29673930, 12224551, -5762773, 21544092, 18762028, -27579058, -9638443, 30680562, -28879896, 16183437, -20565914, 16218870, 18753438, -29297582, 16513076, -2090039, --15543487, 22402550, 1174674, -35239132, 10836739, 15723338, 4732517, -9773198, 1705639, 26776974, --12370043, -24957518, 26601954, -1078037, 2010582, -1106491, -3363496, 16426102, -12227772, -5795522, -11569568, 4500589, -2866891, -11911555, 17648020, -6638946, -11600707, 1040993, 9272834, -5463199, --4316442, -2676302, 13774497, -10678362, -5604933, 1090922, 7461432, -6538551, 5339718, -154619, -13649406, -8552890, 2129230, 1264868, 1305133, 12124693, 22726282, -9742060, -107778984, -235927392, --93603440, -156848992, -213573696, 80554256, 28566902, 69540352, 317378208, 264364896, 174210848, 272515136, -185121680, 21909166, 45882060, 33170032, -145693888, -94066224, -64885144, -166638288, -170088224, -47278464, --47776144, -105819944, -31785980, -23027468, -127413424, -109594144, -35851704, -60446832, -120363776, -29632590, --20510080, -94363112, -11270531, 65066608, -28760712, -23274428, 96199216, 58896348, -39800388, 85205168, -140754672, 15393700, 79008608, 172852032, 84334904, 43409236, 186479424, 136257840, 101245264, 226518192, -306565632, 242429968, 281605440, 365037856, 238260624, 155841808, 204504336, 131644504, -37111200, -9382893, --91223496, -225601216, -318817024, -342947232, -458939264, -522025888, -554204864, -536141312, -515258112, -512292960, --427953760, -327641568, -307483680, -200805296, 15673946, 84666688, 109923784, 333779104, 327557280, 225815952, -332813248, 305007648, 165339056, 160667216, 212138640, 128190280, 60155312, 148279984, 151293984, 67783176, -122181616, 184613264, 122301880, 72661720, 157024544, 129997920, 25854092, 79507360, 115389664, 12598213, -21614422, 126342904, 77158016, 41384156, 133992776, 132815424, 48302276, 105766792, 91292216, -24161338, --66640176, -69076496, -158614752, -214687168, -211965232, -244640800, -269623008, -279608288, -273707520, -280787232, --312185600, -322973472, -308976192, -344664160, -295132448, -201167136, -153895664, -52661668, 88653496, 185942016, -272508160, 351890976, 357875456, 306459872, 278437888, 228783776, 173322864, 139827488, 117795920, 95318744, -74786656, 67928664, 63155884, 47057272, 40037684, 35871568, 19665582, 944356, -9678172, -26363046, --44558140, -56114284, -59055264, -64900712, -62697396, -51506320, -38879116, -28726352, -16068546, -8058970, --1786170, 5812165, 10996190, 10759430, 11323144, 7328825, 823560, -2627446, -5781026, -12096239, --14780593, -16276315, -20671140, -21386790, -18957448, -22625888, -25163140, -22430466, -24363738, -27937152, --26048976, -31117038, -37219648, -35335232, -35476968, -37627672, -32907502, -28376312, -25067040, -17754322, --8554501, -3359738, 2591476, 11011759, 18143016, 24471114, 31445604, 37023156, 39361228, 42083164, -45114872, 46407660, 47404092, 48569636, 46903728, 43354472, 38542500, 32251446, 24950002, 15705622, -6451578, -2192044, -11038066, -16878684, -19400368, -20314658, -19907710, -17541720, -15591805, -14633490, --13009993, -11562052, -10954314, -10108206, -8999567, -8184060, -7532299, -6605660, -5648419, -4878546, --4104378, -3309272, -2682744, -2281165, -1988570, -1767916, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +798327, 2026688, 1962800, 10102837, 2733210, 2121714, -3013457, 372052, -5147519, 1188632, +4697084, -2405719, 208843, -1010391, -2541547, -4082367, 3124052, -6818261, -3449933, -3429532, +3672734, 4026532, 2113124, 951872, 2910377, 2401424, 4817880, -1694902, 1676111, 2991982, +621697, 975494, -3542274, -1534377, -1490891, -1342177, 3251827, -6272263, 1030255, -2182917, +6541235, 141734, -1197222, -1660005, -2719788, -915365, -2837900, -8267812, -2628520, -1631014, +-1349694, -1866163, 836982, -1561758, -405338, -546535, 2873333, 1277753, -390305, 1831267, +-1633698, 3528316, -2338610, -3856881, 3694746, 3876208, -1698660, -3704946, 337155, 2006287, +1508607, 1741609, -1764695, 6442, 1409286, 1909650, 823023, -544387, 217970, 2376728, +4591857, 2216740, -587874, -71404, -1111323, -1171452, 944356, -1537598, 916976, 1122060, +-466004, -166430, 483721, 426276, -483721, 367757, 243203, -2133525, 315143, 148713, +636192, 360240, -831076, 748935, 583579, -71404, 9132174, -1735167, -898722, 960462, +2503966, -6768332, 4179003, -8029978, -383326, -3898757, -592169, -2584497, -626528, -646393, +4002373, -3415036, 4336843, -4567161, -4985920, 2081449, 6640557, -7876433, -2202781, -3821447, +33823, -1998770, 2101850, 2794413, 1403381, 2847027, -4584878, 143881, 6385006, 2493766, +795106, -4672925, -6663642, -4020626, 998580, -3421478, -1939178, 1275068, 4293894, -3911105, +-3850438, 1529545, -2820720, 4931160, 1639604, -533113, 3473555, 3294240, -24159, 5544803, +2734821, 1720134, 1455457, 3626563, 5727876, -3809099, 1079111, 1555315, -4061429, 335007, +3263102, -1301912, 8281234, -2588255, -2222646, -1753420, 3040837, 4198868, -5403606, -2218351, +1445793, -1002875, 1301912, 494458, -2379412, 1026497, 483721, -1764695, -2873870, 1148904, +779537, 2590402, 199716, 780073, 1181116, -144955, -877247, 1890323, 93952, -36507, +1632625, -926102, 780073, 2175938, -206695, -506806, 396748, -359704, 660351, -1381906, +-444529, -660351, 68183, -236760, 842350, 59593, -866510, 5369, -11746736, -1891396, +-2608656, -2083059, -1039919, -1426466, 6268505, 7490960, -1695438, 6114423, 2340757, -3361349, +1603097, -5100274, 914291, 1093606, -6860137, -1005559, 1080184, 1212791, 4765803, -903554, +4141422, -2755759, -5259725, -5555004, -1580548, -2805151, -4210142, 4381404, -1701344, -834297, +-753230, 923418, 2391223, -6732361, 38118, 951335, -3184182, 8046085, 641024, -1971927, +-1729798, 8590471, -601295, 1100049, 5087389, 160524, 3114388, 1217623, 299574, 4744865, +-14496, -3303367, 4263292, 2289755, 2743410, 3862249, 1286880, -3118683, 2240899, 3170760, +3083250, 4752382, 42413, -4383014, -3497714, 5571647, 7755101, -7056095, 1433445, -1860795, +-1231045, 1631014, 2970507, 2846490, -2245194, -899796, -2168959, -3635153, -3171297, -1161252, +-2010582, -3123515, 729071, -846109, 1204202, 1020055, -957778, 570694, 207232, -2536715, +874563, -1712618, -3075197, 214748, -896038, -1291711, -1372779, -387621, 574989, -463320, +906775, -587337, -1027571, -1427003, -1308354, -563178, 253403, 1028108, -1989644, -8659191, +9226127, 8546985, 6443525, -4497368, 5036923, 9095130, -2289218, 7107097, 2674691, 1066226, +-1108102, 7836705, 3704409, -1836635, -5622112, 3258807, -2330020, -3007551, 3175055, 3748970, +1644973, -5582384, 905701, 5010080, -2444910, 1698123, -10977936, 1580548, -883153, 5288179, +1293859, -2278480, -3309809, 6768332, -5826660, 471373, -4705674, 549756, -1440962, 3780645, +-787590, -1233193, -5765994, -1384053, -1016297, 7160784, 358093, -6550899, -241055, -361851, +2240899, 3424163, -2913062, 12885, -3717294, 3969624, -868657, 4798016, -2586644, 7143068, +3550327, -7883413, 8356396, -1204202, -5768678, 983011, 7636989, 1551020, 1178432, -6174016, +-399432, -2391760, -3332895, -3234110, 297963, 2911451, 3763465, 2043331, 2059437, -2409477, +1818919, -2088428, -231928, -111669, -958315, -401043, 2179696, -3432216, 942745, -335007, +309775, 1153736, 947577, -92342, 1502702, 163746, -2249489, -2446521, 1449552, 662499, +-85899, -1615445, -306553, 390305, -204548, -705985, -1560147, 993748, -11274, -981400, +1109175, -653372, -413927, -1257889, -754841, -474594, -1573032, 1119376, 912144, 10045392, +-3352759, -7137162, -298500, -10743324, 64425, -9220221, -3156801, 6471979, -6557878, -7241315, +2268280, 687195, 731755, -1635846, -2323577, -5218922, 3661460, -10288594, -3114388, 1132261, +6503118, 459562, 6596533, 2400350, 14404247, 5571110, -75699, 712965, 6899865, -1547799, +-1967632, -1199370, 1206886, -4433480, -2168422, -7531225, -456877, -3414499, -2021319, 9464497, +228707, 5953362, -2274722, 2478196, -515396, 3586835, -1094680, 3345243, -3145527, -3904662, +-565325, 1214939, -3950833, -3941169, 433255, 2159832, 4437238, -540092, -1960116, -799401, +4214437, 7140383, 466541, -4713190, -6791954, 188979, 1965484, 810675, 9454834, -5785858, +-240518, 4290136, -1473174, -4830765, 6687264, 3119757, 1252520, -3177739, -3450469, -5779416, +-2222109, -534723, -2966749, -1430224, -2558727, 598611, 762894, 1566053, 268972, 533113, +-3194919, -1597191, -3430605, -1121523, -932545, -2576444, -1618666, 1022202, -228707, -1029718, +-220654, 973347, -2115272, 1205812, -1501628, -76773, -576063, -1096290, -336618, 77309, +1078037, -1443109, -2217814, 1949915, 1191317, 635118, 8924942, -6823630, -1378148, 584652, +-518080, -236760, -5617817, -4317516, -595927, 3755412, 1370632, 1519345, 1584843, 3946538, +-795643, 3611531, 2922188, -9246528, -3549791, -10854993, 2830920, -3810173, 5481989, -3503620, +-4793721, -3500935, 2852395, -7226820, -6018860, 8443906, -4593468, 9153649, -2153926, 2769180, +-3211562, -6128919, 6780680, -5194763, -5854578, -564788, -3183645, -6860137, -5298379, -8655970, +359704, 5601174, 3212099, -3350075, 9639517, 3557307, -3543885, -4456029, -6976638, 327491, +-2616709, -4855998, -2464238, -2046015, -3441343, 1860258, 7706782, -442382, 499827, -5199595, +2446521, 2636573, -4553739, -3583077, 1834488, 9401683, 3725347, -2300492, -1254131, -1944010, +-9668508, -7574175, -6424734, 6736120, 7114077, -1008780, -3350611, 3146601, -2146410, 2766496, +-1442572, 1326071, 198642, 171262, -3155727, 2127620, -1858110, -1283658, -521302, 1908576, +1376537, -153008, -2646237, 1694902, -415001, 1254667, -921807, -545461, -2345589, -971200, +-126165, -245350, 403727, 486405, -339839, 433792, -1961726, 902480, 139050, 320512, +-744103, 2421288, 1458678, -56371, -995359, 279710, -1515587, 2735357, 558883, 12694850, +-2521683, -124017, -2199023, 8227547, 7798050, 2625836, -13258564, -2289755, -16081431, 9363566, +3903052, 164819, 16414291, 7709467, -1542430, -7496329, 6714108, -3264175, 1599875, 2211908, +985695, 5310727, -4893579, 9149354, 3433826, 802085, -2884608, -4802847, 6189048, 5189394, +-1100585, 3340411, -7953743, 1378685, -10592463, 4189204, 513785, 5265093, -8710731, 1693291, +-2896419, 1809792, 9745818, 8223789, 317828, 2309082, -6178311, 7924215, 154619, 16975322, +17977122, -2495376, -4886062, -5017059, -3977677, -10565083, -2995740, -13766981, 759672, -1243393, +-827318, -2887829, 4735202, 7978439, 12596065, 11666742, 9000104, -15005005, -10693395, -568009, +686658, 15532749, -11070278, 8298414, -646393, -3259880, -1671279, -485331, -3153580, -8762270, +-5719823, -1734093, 2479270, 710280, -271120, -2464774, 1313723, -3172907, -348429, -1735167, +3267933, 3598109, -942745, -807991, 3404835, 2528125, 397821, -616865, 1221918, 116501, +476205, -781147, 1449552, -223338, -911070, -1500554, 397821, 1372779, 2173790, 4663261, +3678103, -1918240, 412854, -3502546, -674310, 1406065, -310311, -783832, 61203, 580357, +742493, -4709969, 9103720, 1893007, -6867653, -3828963, 17166448, 16886738, 18927384, -1942936, +-886911, -3311420, 3113851, 9228274, 10616622, 3036005, -4682588, -9222369, -18701362, 5452461, +-11099269, -2482491, -1209033, -2448668, 1171452, -619549, -3501472, -472983, -10876468, -4336843, +564251, -2056753, -12145094, -5145908, 949188, 8706972, -2560338, 197032, -9686225, -3294240, +33286, 6306086, -3979287, 3857418, -10816338, -3040300, 2414309, 4022237, -3024194, 14364518, +-3045132, -1875827, -7589207, -2523293, 5720360, 1928977, -742493, 7473780, 10331007, 12104828, +-2225867, -6126771, -6981470, 54224, 1353989, 2807298, -4980552, 3877282, 5086852, 4311611, +4159676, 12110197, 8111583, 5389110, -740345, 2694555, -12186433, -2305861, 1184874, 6156299, +9707163, -1894618, -5622649, 1690070, 3281355, -2865280, 4928475, 3995393, 5334887, 808528, +2279554, -292058, -526134, -3960497, 2976949, -1258962, 1921998, 1764695, 472446, 2849174, +155693, 4605279, 3173444, 2069101, 1207960, 1277753, -89657, -623844, 273804, -1958505, +-240518, -2441689, -3995930, -1571958, 700617, 658741, 1585917, -818191, 1006096, -1621350, +622770, 2035815, -195958, 350577, -17642652, 21931714, -627065, 3214783, 11991012, 202400, +-4217658, 619012, -21415244, -13037373, -6129992, 3410741, -4224637, 2435783, -10018011, 6920803, +-3504157, -103079, 13202193, -12890271, -8575439, 12349105, -3880503, -18121540, 1278290, -11178189, +2302103, -940061, 6778532, 2908767, 3415036, 1366873, -2191507, 8036421, -901406, 10328859, +6318971, -3692598, -6208912, -5833640, 2813204, -2875481, 2831457, 1984812, 6087580, 1760400, +-11431055, 657667, 3884261, -3969087, 486405, -7901666, -1749662, 676457, 517007, 18080202, +-3158949, 12840878, 15394773, -4255239, 8243653, -2556043, -447750, -8585640, 5444408, 13067975, +9156870, 2009508, 3604015, 8089571, -521302, 6699612, -2727304, -3783866, -6521908, 3535832, +16738561, 3713536, -2150168, 1298691, -11747809, -4008278, 295816, 11041287, 8096014, 3459059, +7191923, -2091649, 7065758, -109522, 4453881, 522912, -319975, -885300, 4936528, -562104, +-3069291, -1944010, -1203128, -791348, -1218697, -2513093, 3577171, -2338610, -3039226, -932008, +-4000225, -2815351, -3408594, -2017561, -2368675, -3129421, 1083406, 679142, 1355599, 1057636, +-1787780, -994822, -3135326, -4192425, -333934, -2352568, 1396938, -1150514, 398358, 1983738, +2172180, 1422708, 3699578, -1023813, -274878, 2734821, 21058224, 3080565, 5266167, -4956393, +-2501282, 14307073, -9410273, -2160369, -18539226, 17405892, 9105868, 1270237, -6282464, -17502528, +1797444, -4644471, 2171643, -19628538, 7033546, 10393284, -11389180, -2714419, 1736241, 1225139, +3828427, 11278584, 13889387, 60666, 1611, 2613488, 561567, -8384850, -9575093, -6350109, +-12628278, -6213744, 10825465, 5040144, -3998615, -5329518, -3499325, -22239340, 4874788, 5361730, +-10378788, 17068736, 652835, 12735115, -4538707, 8266202, -2680060, -10991358, 1037772, 10147934, +-5543192, 5578089, 6552510, 18127984, 5064840, 5706938, 17412334, 9925133, 6626061, -24006182, +5025112, 3692061, 4713190, 505196, -9747965, 17426830, -12878996, 9946607, 10464688, -15654619, +-3367254, 21455510, -19040664, 3255048, -4416300, -2053531, -6819335, 8360691, -3515968, -7116761, +-6024766, 3744675, 8179765, -7562901, 9490267, -7806103, -3350075, 10727755, 4020626, -876710, +-4641786, -5010616, -59056, -1984812, -8076686, -932545, -1655173, -2280091, -657667, 6444599, +-459562, -5936719, 641024, 2517388, 6240588, 3848828, 4981089, -1960116, 2678449, -3543885, +278099, -1204738, 2677912, 5116380, -3671123, 2353642, 2534031, -275415, -3156264, 1756105, +1498407, -10980084, -16589311, -7285875, -6890202, -22287660, 15271830, 2438468, 16299401, 984621, +2405719, -7675644, -3949223, 7968238, -518617, 8237748, -8036958, -2531346, 1548336, -3612068, +-6560563, 9812927, -9846213, 11678553, -3970161, 3843996, -2410014, -7821136, -6988986, 3455838, +-2467459, -21475, 6087043, 23314156, 1772211, -2907693, -7740068, 3410741, 18872624, -3381750, +-2956548, -10852845, -3660923, 1644436, -10220412, -3700114, -14628659, 9567040, -17933100, -32564442, +-3294777, 1132261, 15699179, -16028281, 15080704, 9829033, -7519951, -15124190, -2294586, 2598992, +4592394, 649614, 9595494, -6213744, -2216203, -32118840, -4158602, 33378876, 3406983, -5482526, +-4265977, -17137994, 13131326, -5428302, -4744865, -4138738, -2324651, -7346542, -10945724, 3459059, +6573448, -198642, 5057324, -9241159, -16978542, -477815, -8858907, -2448131, 501974, -8798777, +2271501, -6372658, -11314018, -8359080, -3949223, 3874061, 5469104, -836982, -13414793, -3238405, +1066763, -6536404, -2780455, -396748, -6032819, -3486440, 1880122, -95026, -4695473, -1772748, +2464774, 1020055, -6307697, -2400887, 359704, 6206228, 6884833, 1989644, -1796907, -2228014, +-566936, 4689568, -745714, -227633, 578747, 1908039, -5243082, 5314485, -890669, 3661460, +605054, -3637837, 15421617, 13775034, -4468377, -5697811, -1419487, -22228604, 14570677, -14069239, +-11621108, -9009768, 5444408, 2199560, 13498545, 1612223, -7482370, -8728447, -9052180, 6944425, +-3529390, -4863514, 12321187, 13800804, 4631049, -9360881, 11343009, 18377092, -7124277, -4070555, +15855409, 4063039, 3095598, -10431402, -118112, 15124190, -22466974, 15365246, -3457986, 2055679, +9121974, 11111080, -206695, 5537287, -10650982, -8629126, 5669894, 21160766, 5555540, 5143760, +7896834, -10714333, 2117419, 9383430, 5309117, -1782411, 7435126, 4687957, -12846784, 10306311, +-12527883, 2769717, 8908836, -9856413, 7340636, -12023224, -4938139, 2186138, 278099, 7663833, +-5083094, 6572911, -5197984, 916439, 2284386, -2248952, -5105106, -9719511, 25772488, 2763275, +7595113, -11322608, -26674432, 18679886, -18203146, -7818451, -314069, -4170413, -2920041, -1578937, +-7665443, 4628364, 3510599, 1993402, -7111929, 8494908, 6293738, -2852395, -3170223, 2502355, +-2656437, 2357400, -2683281, 9019431, 3041374, 843424, 6111739, 6752763, -4206921, 42950, +2933463, 4697621, 1612223, 2253247, -4560182, -5553930, 4162897, 5833103, 8093866, -1149441, +-7992934, -1067836, 394063, 3805878, -12133819, 4472672, -4270271, -1705102, 2409477, 2791729, +-3258807, 4126927, -5906, 3287261, -2243584, 7810935, 2325725, 3264175, -1458141, 4451197, +-14687178, 15363635, -5776194, -15374909, -19902342, -5637145, -2099165, 11547556, -17526688, -2903935, +-2130841, 9074192, 17250736, 14258755, 8857833, 1267552, -4519916, -2776160, -1858110, 12096239, +9943923, -2459943, 1511829, -2758980, 7776575, -19053548, 11235634, 6129992, 8780524, 2902861, +1970316, 16231218, -6507949, -14006962, 8053, -4680978, 884226, -19390166, -10741713, -1239635, +16054051, -10998874, -3507915, 2545305, -715649, 361314, 15779173, 6272263, -2521683, 1289564, +7688529, 5011153, 18395882, -5537824, 8369281, 9283035, 4959077, -3100430, 2959233, -20202990, +8528194, -3868155, 851477, -4722854, -11119670, -14977088, 2962454, -7203197, -20249160, 4732517, +-17214228, -12738336, -3028489, -25982404, -15733002, 3752728, 10972031, -13038447, 2725694, 906775, +29651380, 28061706, 26535918, -933082, 1431298, -14121316, -8502962, 10969346, -6067178, -4073240, +1771137, -3697967, 6172942, -7793218, -3872450, -425739, 2303176, -4745402, 5654325, 5598490, +193274, -2610803, 1517197, 5462662, -4624606, -6176700, -1605244, 4893042, -6914898, 11421929, +6595996, -703301, 5190468, -2024540, -4874788, -7814693, -4212826, -6953552, -3737695, 3784403, +630286, 11510512, -2792266, -3925063, -1844689, -26360898, -29148870, 17122960, 15370614, 5066988, +16666084, 28007482, 7866770, -10867878, 8944806, -4410395, -8082055, 12734041, 787590, -11661373, +6935299, 9128416, 1999307, 3124052, 565862, 1294933, 25630218, -689879, 5376226, 2267743, +15850577, 808528, 25421912, -253940, -11394548, 20315732, 4037269, -9175124, -3338263, 10695542, +-2388002, -321049, 8329552, -15676631, 15369004, -3407520, -22868016, -6492380, 2084133, -22843858, +-2693481, -2499671, 9842454, 9529996, 16941498, -12109660, 2461553, 2595771, 3408594, 7181186, +-11028939, -12386149, 6285148, -421981, 12916577, 10503879, 3136937, 27170500, -4695473, -4307852, +-18797998, 27729382, 4776004, 19209242, 11684459, -31175556, 4311611, 2721936, 18901614, -10203769, +7975755, 75699, -8408472, -1124208, -6823093, 15250892, -29542396, -3665218, -2253247, 28454, +1186485, 4636954, 7051263, -188979, 13428752, -612570, -2087891, -4436165, -2965138, 802085, +-4865661, 1526861, -1433982, 4028143, 2727841, -1465121, 988379, -1652489, -8346732, -503585, +263067, 2024003, -8522289, 4432406, -1870995, 4662187, 3572876, 6612102, -6932614, 7738458, +-4373888, 2478733, 5464809, 5044439, -1888712, 158914, -3207804, 4377109, -409096, 2132988, +-251256, -909459, 11171210, 6352794, 13422, 5264556, 1425392, 5478768, 1060857, 17191144, +-36191540, 21551072, 21920440, -9299141, 5235029, 3085397, 5953362, 194884, 17453674, -12659953, +-2716030, -13583371, -87510, -7656853, 1252520, 3708704, -19850266, 8987219, 21615496, -14811732, +-14216342, -14489609, 28769838, -12513387, -7037841, 2723009, -9832254, -29743186, 5255430, 21678310, +-29680372, -13404593, 10276246, 15985331, 4338454, -4463008, 6889128, -10482405, -4926865, -495532, +14715632, -20151450, -16061567, 11463805, 18477486, 7331509, -23073638, -7412040, 577673, -1010391, +-4008278, 12111808, -3578245, 18252000, -14804215, -3165928, -25233, -16885664, 10744398, -19666118, +-13571560, 6364605, -8826158, 19251654, 27738510, 16440061, -18353468, 9794136, -5401995, -5425081, +-12958453, -3955665, -21116206, 16219407, 11873974, 5823439, 626528, -9903121, -5614059, 6609418, +-22046604, 17871896, -4215511, -2942053, 9294846, 1749125, 8462696, -2308545, -1345935, -7430294, +-2190433, 817118, 1487132, -5802501, -2092723, -2709588, -2144799, 10102837, 1040456, -50466, +-4806069, 4176319, 3952444, -3430068, 2171643, 4699768, 994285, 7832410, -2791192, -5299453, +1079111, -8718247, 4533338, 3430068, 1100585, -140660, 3478387, -615254, 5707475, 1984812, +4047470, -6859063, -2166274, 6669548, 304943, 2803540, 3279208, -6380174, 885300, 6725919, +21095268, 35125316, -193810, -26490284, 5682779, -31620086, 5484673, 14443438, 6822019, 1966558, +19104552, 14139032, -791885, -2848100, -26127360, -14058502, 449361, -12202002, 35535484, -6416681, +-7981123, -15261093, 1972464, 13397077, 9398999, -430570, 6922414, 10448582, -15670725, 5440650, +30502320, 10833518, -20823076, -14671071, 9950902, -10274099, -1343788, 7471096, -4561256, -17183628, +-4048007, 2149631, 29072096, -6219650, 6514392, -7658464, -23361400, 4160213, 29495152, -7853348, +-17563196, 5202279, -10725607, 7266011, -6095096, -7114614, 20298552, -5104569, -2226404, 9961103, +-17343078, 6362457, 21481278, -8779450, 1925219, -12463995, 37711960, -6763500, 4574677, 12297028, +-8650064, -2004676, -9955734, 5368709, -11260867, -9483825, -8862665, 14512158, -19466940, 2974802, +-2800319, -5727876, 15303505, 453119, -5094905, -6342593, 894964, 5827734, 4540854, -8587250, +-1482838, 519691, -2327336, -10648298, -6378027, -1825898, 2673617, 1007707, 976031, 1654099, +8888972, -8715026, 9341017, 1977296, 2777770, 779537, 7431904, -3985730, 12133283, -2473901, +-71404, 9388262, 12192338, -6139119, 8012799, -3760781, 2766496, -6811818, 6226092, 5329518, +-10295037, -313533, -4043712, -1212255, -5082557, 3992709, -6281927, 6004901, -1140851, -2063195, +-10433549, -58262304, -20553030, -1269700, 18335216, -9952513, -29265370, -11164231, -4468377, 14010720, +3492882, -4100083, -14578193, 14952392, 26734024, -12454331, 20160040, 4886599, -38779796, 14165339, +17898740, -6578816, -15890305, -3164854, 23566486, 25143276, -2305324, -19463182, 1140851, -2423435, +-2690260, -16259672, 3762391, 7086696, -25636122, 17329120, 14725295, -18168248, 3127810, -20355998, +6932614, 48959944, -44144212, 45248016, 20382304, 1825361, 27624156, 13595182, -28639916, 16874390, +-21580600, -5027259, 23190140, 866510, 6514929, -12177306, -21016886, 63149440, -15070503, 688805, +24793772, -12290586, 4697621, 1680406, 15254113, 35474820, 33753076, 31883152, 1831267, -855772, +-5333813, 1401770, -8843875, 2181307, 27081380, -7447474, -9616432, 2493229, 3607236, 15586973, +18266496, 5021891, 5008469, 12860206, 5405753, -10233296, 3107409, -5392869, -14957760, -6883222, +7628399, -11392401, -16221018, -12440373, -710280, 1234803, -9360344, 4490389, 10280004, 1382443, +-3516505, -861678, -11884711, 13675713, -2185602, -3275450, 9499931, -8209293, 6417755, -6207302, +-4904316, 16134582, -186831, -12404939, 15399605, -9780714, 9237401, 4137664, -6210523, 4427575, +-2257005, 11057930, -5294621, 3695283, 448287, 692564, -1306744, 11781095, -6285148, -1668595, +-970663, 1883343, -1844152, 4988068, 9135932, 14837501, -3950833, -42844448, 19428822, -31130460, +43725988, 5146982, -38075420, 8566312, 308164, 17850420, 8396124, -9223979, 32341104, 7890392, +1609002, 21607980, -17321604, -24044838, 745714, 12576738, 43589624, -6144488, 68719, -4574140, +31399432, 3422552, -25025164, -14763413, 4678293, -2763812, 13868986, -24268712, 11606075, 3965866, +7132330, -2163590, -9543954, 5531918, 9694815, 108448, 29151554, -47097000, 4052302, -16603807, +-10394895, -6066105, -34515432, -50039592, -51883740, -37650756, 3921842, 205622, -30129732, -228170, +-5556614, 3256659, -18731962, -48205640, 47435228, -833761, -7107097, 9700721, -47234976, -3219078, +-11832635, 8869107, 13749264, 64755760, 48143900, -5387500, -698469, -1503775, 12606803, 19596862, +11764452, 8954470, -1928977, -7792682, -45984068, 8689256, -1069447, -17861158, -8148090, 29989072, +-4343286, -5438503, 14166413, -1184337, 15549392, -6075231, 7736310, -848256, -3425237, 11110007, +13387413, -6149857, 1748052, 6028524, -2690797, 2857764, 537408, -137439, 9078487, -3895535, +-4871567, 7681549, -9113384, 11874511, -242129, 6437619, 9687836, -4923643, 2263985, 8625905, +-2250563, -5618354, -2279554, 998043, -1756105, 2384781, -11854647, -707596, -9434433, 9749576, +1241782, 6576132, 4428112, -1357210, 77309, -602906, 4219806, 6087043, 4743792, -729071, +-5887327, -836982, -12341589, 58750856, -56296284, 9513889, -10931766, 2066416, 23664732, -17459042, +5834713, 789200, -60898880, 1392643, -6926709, 2836289, 6921877, -27276264, -10231686, -45079440, +-11694122, -2314451, 2353642, -17140678, -12897787, -19708532, -8269960, 19305878, 4129611, 39119100, +9503689, -13402445, -14030584, 23984708, -26934276, 46032384, -36181880, 10370199, -29213294, 462246, +27661736, -50591492, 47418048, 8252780, 5380521, -34788700, -7041599, -6716792, -114354, 16479790, +16476568, 20779588, -40120364, -1160178, -15850577, -13780403, -15522549, -21718040, -15042049, 599148, +22783728, -24626806, 6459631, -45212048, -15207942, 11232413, 13281649, 2273112, -51394116, -27902256, +-18405008, -26280904, -21770652, 1647120, -17185238, 27101780, 8038032, 13493177, -9611600, -14310831, +45556720, -15507516, 12130061, -9368397, 3398393, 34153044, 4435628, 6016713, -19394462, 19324668, +11164231, -8254927, 17947058, -13792751, 4822712, -5241471, 12088185, 2260764, -4276714, 6455336, +15436649, -5545877, 4810364, 5349919, 4483946, -2065342, 4009889, -2446521, 10517838, -3772592, +1576253, 9921374, -2319282, -4181151, 2907156, 4157528, -7212861, -1785096, -19638202, 11918534, +8057359, -177167, -11013907, -4661114, 703838, 3798362, 14533096, -2697776, -4327717, 4876399, +3514894, -2515777, 14671608, 2532420, -18569292, 4457639, 17725866, -2360085, 25269976, -47755740, +72659032, -54796268, -5830955, -33084134, 6443525, 656593, -20035486, -28305446, 32976758, 22152904, +10305774, -14474577, 14505715, 4473209, 31126702, -24748138, -16401943, 19342386, 32357210, -41443752, +16623671, -1540283, 19578072, -14981383, 5650567, -18406082, 3662533, -34430068, 11156714, 36796596, +-1355062, -2893197, 45674292, 7917772, -21253108, -44801876, 38128572, -20284056, 17119202, -16482474, +45601280, 20124606, -5175973, 4645544, -26626112, 3480534, 11237245, -12845173, 12623983, -55409908, +21565030, 50153944, 39099236, -21780852, -22706956, -22711250, 25249038, 2006824, -8215736, 2010045, +64677912, -31680216, -14931454, 25066502, -21759914, -58583352, 24705188, 13053479, -42004780, 23443006, +40360344, 35721780, -11091216, -16018617, -28706488, 15274514, -17781164, -11308112, 25832618, 17674864, +7871602, 22789634, 12707198, -8858370, -8394514, -29473140, 6706055, -12397423, 10035728, -10939819, +20837034, 14480482, 3039226, -3970161, 19801410, -10946261, -1720134, 2552821, 7494718, 4603668, +9052180, 8441221, 514322, -4848481, -3045669, 7082938, 3571265, 2831994, 798864, 11165841, +35999344, -1119376, -3042448, 5381057, -12757663, 4430259, 12836584, -18676666, 8017094, 9616969, +-7332583, -5258114, 8311299, 4756677, -10959683, -46898360, 25070798, -2731062, 6548752, -17177722, +15026480, 332860, 8246337, 2514167, 2739652, -9758166, 7482370, 25409026, -32405528, 27880244, +-4751845, -17097192, 5735392, -11624866, 7548405, -11909944, -9797894, 8259222, -25849798, -2639258, +34438660, -49707268, 14027900, 2384244, -8318815, -15270219, -18077518, -11744588, 36133024, -29743722, +-4262218, 11691975, -30232812, 7684770, 16594143, 11112154, 5682242, 5243082, -17055316, 13442174, +-44475996, 637803, 38938712, -16267726, -4376035, -8722005, -10985453, -295279, -31481036, 16701517, +12650826, -26013006, 24422258, 6820408, -29673930, 12224551, -5762773, 21544092, 18762028, -27579058, +9638443, 30680562, -28879896, 16183437, -20565914, 16218870, 18753438, -29297582, 16513076, -2090039, +-15543487, 22402550, 1174674, -35239132, 10836739, 15723338, 4732517, -9773198, 1705639, 26776974, +-12370043, -24957518, 26601954, -1078037, 2010582, -1106491, -3363496, 16426102, -12227772, -5795522, +11569568, 4500589, -2866891, -11911555, 17648020, -6638946, -11600707, 1040993, 9272834, -5463199, +-4316442, -2676302, 13774497, -10678362, -5604933, 1090922, 7461432, -6538551, 5339718, -154619, +13649406, -8552890, 2129230, 1264868, 1305133, 12124693, 22726282, -9742060, -107778984, -235927392, +-93603440, -156848992, -213573696, 80554256, 28566902, 69540352, 317378208, 264364896, 174210848, 272515136, +185121680, 21909166, 45882060, 33170032, -145693888, -94066224, -64885144, -166638288, -170088224, -47278464, +-47776144, -105819944, -31785980, -23027468, -127413424, -109594144, -35851704, -60446832, -120363776, -29632590, +-20510080, -94363112, -11270531, 65066608, -28760712, -23274428, 96199216, 58896348, -39800388, 85205168, +140754672, 15393700, 79008608, 172852032, 84334904, 43409236, 186479424, 136257840, 101245264, 226518192, +306565632, 242429968, 281605440, 365037856, 238260624, 155841808, 204504336, 131644504, -37111200, -9382893, +-91223496, -225601216, -318817024, -342947232, -458939264, -522025888, -554204864, -536141312, -515258112, -512292960, +-427953760, -327641568, -307483680, -200805296, 15673946, 84666688, 109923784, 333779104, 327557280, 225815952, +332813248, 305007648, 165339056, 160667216, 212138640, 128190280, 60155312, 148279984, 151293984, 67783176, +122181616, 184613264, 122301880, 72661720, 157024544, 129997920, 25854092, 79507360, 115389664, 12598213, +21614422, 126342904, 77158016, 41384156, 133992776, 132815424, 48302276, 105766792, 91292216, -24161338, +-66640176, -69076496, -158614752, -214687168, -211965232, -244640800, -269623008, -279608288, -273707520, -280787232, +-312185600, -322973472, -308976192, -344664160, -295132448, -201167136, -153895664, -52661668, 88653496, 185942016, +272508160, 351890976, 357875456, 306459872, 278437888, 228783776, 173322864, 139827488, 117795920, 95318744, +74786656, 67928664, 63155884, 47057272, 40037684, 35871568, 19665582, 944356, -9678172, -26363046, +-44558140, -56114284, -59055264, -64900712, -62697396, -51506320, -38879116, -28726352, -16068546, -8058970, +-1786170, 5812165, 10996190, 10759430, 11323144, 7328825, 823560, -2627446, -5781026, -12096239, +-14780593, -16276315, -20671140, -21386790, -18957448, -22625888, -25163140, -22430466, -24363738, -27937152, +-26048976, -31117038, -37219648, -35335232, -35476968, -37627672, -32907502, -28376312, -25067040, -17754322, +-8554501, -3359738, 2591476, 11011759, 18143016, 24471114, 31445604, 37023156, 39361228, 42083164, +45114872, 46407660, 47404092, 48569636, 46903728, 43354472, 38542500, 32251446, 24950002, 15705622, +6451578, -2192044, -11038066, -16878684, -19400368, -20314658, -19907710, -17541720, -15591805, -14633490, +-13009993, -11562052, -10954314, -10108206, -8999567, -8184060, -7532299, -6605660, -5648419, -4878546, +-4104378, -3309272, -2682744, -2281165, -1988570, -1767916, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -3986804, -2424509, 3884798, -1372779, 3452080, -563714, 3643743, 1831804, -803696, -1430224, 3690988, -309775, 734439, -4200478, -674847, -304406, -189515, 5737540, 2802466, -211527, -4308389, --3133716, -1854352, 523449, -100395, 1241246, 2637110, 801548, 971736, -4348118, -670552, --4232154, 168577, -2341294, 2768643, 2763812, -1104344, -2284386, 2894808, 618475, -1087701, --3912715, -532039, -2509872, 701153, 2390149, -3968550, -1938104, -664109, -1553704, 10126996, -2411624, 5845988, 424665, 1917703, -45097, -2927020, -2716030, -3455301, 1631551, -2850785, -2049773, 63888, 2502892, 2560874, 6218039, 1876364, -516470, -315143, -3694209, 6023155, -5541045, 969589, 1708323, 1569811, 1714766, -350577, -3092377, 921271, 1788317, -1161252, -517544, -951335, -2825552, 1345399, -2356863, -1600412, -733903, 188442, -1054415, -1144072, --1342714, -28991, -73551, -210990, 272194, -471373, 900333, -500364, -839129, -81068, -1129576, 425202, -461172, -1515587, -445603, 1403917, 96100, 634045, 557272, 394600, -14017700, -3288871, -2905546, -1114544, -2749316, 664109, -6631430, 540629, 1347546, 359704, -4544613, 539018, -911070, -3974455, 2581812, -5611375, -4832912, 1774358, -2344515, -1111860, --816044, 959925, 3820374, 5216238, 415001, -785442, 6200322, 2247342, -334471, 245350, --2499671, 98247, 6804302, 23085, -3125663, -2528125, -706522, 2320356, -3111704, -3847217, --3923990, -3212099, 3120294, -3020436, 1183800, -3674345, 1327145, 4492536, 319438, 3198140, --1323924, -2502355, -1220308, 2224793, -106300, 3432216, 5019206, 751082, -1481764, -2562485, --100932, -362388, 257698, 178241, -4371203, -445603, -2027225, -2219424, 2162516, 471373, -1398549, 1639604, -5205501, -2899640, 2201171, -960462, 3900904, 722628, 3291556, -646929, --799401, -881005, -1864016, -424665, -2055679, -819802, 92879, 3071975, -702764, -48318, --494458, 987306, 7516, 1197222, 270046, -236760, -734439, 968515, -1462436, 27917, -114890, -830539, 739808, 919123, -1227824, 445603, -586263, 566936, 568546, 18254, -938987, 118648, -426812, -9847823, -4792647, -2021319, -6691022, -2237678, -6417755, 2050847, --450435, -3951370, -4575751, -576063, -3715684, 30065, 3315715, -117575, -5717139, -2046015, -209917, -2163053, -1769527, 1811939, 5627481, 7175280, -1013075, -1762547, 4086125, 4626217, --1280437, -923955, -773631, -3060701, 1093069, 1589675, -2742874, -2026688, -543313, 2841658, -6146098, 514859, -1904818, 124017, -2912525, -998580, -4703526, -2151242, -2018098, -7514582, --687732, -3345243, -2281702, -8261907, 5327907, -3528853, -3111704, 1611150, -397284, -483721, -1222455, -6844568, -1684701, -2376191, -426812, -3901441, -424128, -1774358, 1971927, 2538326, --2141578, -1090385, -3202972, 1300301, -370978, -560493, 137439, -5036923, 5906, -4540854, -843961, -195958, -1339493, 1495722, 5796059, 2821257, -1203128, 428423, -860604, -2083059, -349503, 998580, -976568, -37581, -1240709, 158377, -433255, -1586454, 820339, 780610, --1666984, -720481, 622770, -634045, 379568, -1052267, -781684, -832150, -1547799, -1699733, --5906, 586800, -795106, -977642, 133681, -397284, -96637, -471373, 123480, -214212, --478352, -1381369, 942208, -407485, -588411, -607738, -1139777, -77309, 269509, -932545, -177167, 193274, 183610, -735513, 344134, -18544596, -1514513, -9170292, 8131447, -4803384, -14680735, -9485435, 9237401, -8414915, -549756, -184684, -6484864, 4947803, 139586, -2461553, -1466195, -2163590, -884763, -6336688, -97711, -4798016, 3711389, 1244467, 4553202, -2758443, -6811818, 6093485, -6014028, 1614371, -5116917, 5343476, 20938, -3854196, 289373, -605054, --221728, 3899294, 558346, -5979132, 2413772, 4174171, -302258, 4941360, -2353642, 4013647, --6140730, -3194919, 3999688, -3602404, 1001264, 5320928, -4931160, 7900056, 3146064, -7970923, -1906966, -7683697, 2724083, 4146791, 2856153, 3987877, 5861020, 1887638, -725313, -566936, -386547, 1762547, 4216048, -1553704, 7968238, 1446867, 5462125, 2864743, 1590749, 289910, -5484137, 885300, 1367947, -3243237, -4263829, 2075006, 2967823, 215822, 4723391, -665183, --22012, -979789, 5609228, 1580548, -1979443, 1156957, 975494, 693100, 1928977, 178241, -3505230, -661425, 1225676, 540629, 1359894, -1000191, 694711, 207769, 111132, 186294, --1151051, -1193464, 477815, -1442035, -545998, -1554778, 951335, -151934, -424665, -594316, -12274480, 128849, -3262565, -1054951, -4492536, -5379984, 8981850, -1672890, -1234803, 8243116, --569620, -1523640, 3685082, 6426345, 1883343, 3220152, -96637, -6895570, -1775432, 5281199, --7856569, -7792145, -2874944, 1774895, -5519570, -3302830, 179315, -728534, 5558225, -2062658, --1135482, 5842766, 8121247, -6924561, 1893544, -1610613, 3007551, 855772, -3026878, -622233, -3419331, 5186710, -1308354, -7195681, -1560147, -588411, -1841467, -3566434, 597537, -410706, -1392643, -949725, 1080184, 6820408, -4935455, 695785, -3741454, -3045669, -5169530, -1535451, --2955474, -7203197, -185220, 540629, -2746632, -513249, -2911451, 2838437, 3598109, -513249, -1124745, -2570538, -648003, 8790724, -1081258, -3591667, -11805254, -5374615, -79457, -4025458, -2819646, -1118839, 1100049, 18254, -2310693, -420370, 3538516, -2894271, 758062, -796716, -415001, 33286, -2409477, -1817845, -968515, -1897302, -304406, -3019362, -554051, -1704565, -417149, -1184874, -312459, -1622961, -1684701, -1722282, -363998, -172872, 705448, 457951, --155156, 504122, 488016, -87510, 1782411, 1477469, 62277, 875636, -615254, -922344, -295816, 15694884, 17655000, 3248606, -6606734, 3915400, 6881075, 6898255, 3838090, 5176510, -2248952, 8563091, -1011465, -1203665, -3676492, 5323075, -3328600, -7798587, -10681047, 1077500, --5186710, -4494684, 3610994, -1247151, -2929705, 8748848, -758062, 10902238, -2147, -4498442, --3101503, 3738232, 2455648, -2309619, -8855149, 12470438, 7173669, -61203, 6720550, 3947075, -4332012, -4267050, 4906464, 2427194, 900333, -1655710, -2357400, -5691369, -7948911, 2086280, -3693135, -6242735, 2351495, 5149666, 7774428, 1955821, 7014756, 3174518, 5963025, -9035001, -2551211, 694174, 1695438, 99321, -701690, 3658239, 3346853, 3217468, 4769025, -1728724, -2272038, 1272384, 6902013, 8436926, -4413616, -5194226, 683974, -2190970, -4631049, 1785096, -4658966, -3049964, 1929514, -8684961, -6365679, 1327145, -4415764, -2165737, -1476932, -4014184, --57982, -176094, 424128, -216896, 1632625, 1893007, -201327, 895501, 286152, 1402307, -1559073, -102542, 60130, -227633, 1713155, 773094, 921807, 2066416, -434865, -1242856, -1597191, -599685, -57445, 2390149, 1502165, 2255395, 3210488, 381715, 1415729, 751082, -2114198, 447213, 871342, 1056025, 14501420, 4559108, 6386080, -5355824, 2076080, -13198971, -679142, -9546639, 7175280, 4807679, -4032438, 6024229, 3421478, -6478958, -1621350, 9271761, --325881, 6371584, -1776506, 1248762, 7407745, -9276592, -729608, 1472100, 2698313, 577136, -2971581, 347892, 8993125, -4217121, -2601677, -2763812, 6798933, 822486, -3209951, 4092030, -11475616, -8063801, 1410897, 1501091, -704912, 4590783, -2328946, 8727910, 2944200, 2174327, --7198902, -760209, -1911261, 4021163, 3056406, 4346507, -4944044, -3274376, 4178466, -8665633, --4827543, 1906966, 9266929, 5568962, 8195872, -8986682, -2829847, -9132711, -2352568, 2705293, --774168, -8621073, 1125818, -5303211, -73551, -9430674, -11364483, -4693863, -8202314, 417686, -2903398, 1581085, -3506304, 4481262, 7289097, 1990717, 2154463, 4136591, -1313186, -7041062, --421444, -4861366, 2519535, 744103, -466004, 1245541, 658204, -5175436, -2611340, -1512902, -2573759, 313533, -1789391, -673236, -149787, -806917, 430570, -1101122, -468688, 301185, -2346126, 534187, 767189, 469225, -447750, 630286, 1570884, 745714, 2041720, 547071, -1061931, 59593, 1619740, -2568391, 1601486, -16980690, -15298137, -10963441, 3534221, 3577708, -12969727, -5523865, 12324409, -4834523, -19958176, -1649268, -1729798, -7636989, -12865038, -4610111, --147103, -7878581, 67646, -12196097, 1037772, -12865038, 7580618, -3137474, 5558762, -2415919, --97711, -3907347, -4560719, 8163122, 1706176, -2207076, 9239012, 1151051, 1595580, 3258270, -8511551, 7492571, 5742372, 270046, -9795747, -908386, 4893579, 1571958, 6207839, -2791192, -2835215, -14446659, 4730907, 8910447, -10912438, 6616934, 2392834, 10516227, 8072928, 93952, --2626909, -145492, 7174206, 3587908, -9183714, -7460358, -12744779, -6121939, -8519068, -1855963, --10568304, -2175938, -3473555, 10980084, -4970888, 5475010, -2716030, -1495186, -3442953, -7428683, --3919695, -2323577, -2403571, 6946036, -20488604, -4296041, 9729712, 533113, 1946694, 5245229, -9850507, -6030671, 1262184, 2678449, -358093, -5906, -1333587, 2756295, 4129074, -1677722, -421981, -308701, 4601521, -1586990, -42413, 4624606, 1020592, 1683090, 2192581, 2216203, --656056, 465467, -1124208, -1679869, -909459, -3041911, 994822, 2134062, 1507534, 906238, --3976066, 100932, -448287, -105764, -1814087, 1216013, 1914482, -897648, -103616, 2240899, -2383707, -2399276, -22849226, 17104708, -5131412, 10014790, 5719823, -657667, -15202037, 11541114, -1351841, -1276142, 7186554, 5036923, -6433324, -345745, 12429098, 3969624, -5995775, 8764955, --5196911, -4205310, -2989834, 2649458, -212064, -1885491, 946503, 3622268, 3175592, 3311957, --9624485, 5534602, -8046085, 10324028, -6856379, 10274636, 3094524, 763967, -10604811, -10719701, --3769371, -3731253, 11936788, 3220152, 9484898, 3865471, -9044664, 95563, -2296197, 3957812, --69793, 3456912, -1404991, -6119792, -3759170, 5972689, 15185931, 10941966, 934155, 3604551, --1451699, -2411087, 7624104, 6436546, -3185792, 9583683, 13516799, 19131394, 73551, -11337640, --13718662, 4430259, 2080912, -793495, 3017215, -163746, -4634807, -728534, 11352135, -2360085, --5465883, 20614770, 4911295, -3751654, 5775658, -80531, -571768, -878858, -3659312, -688269, -5983963, 2927557, -2389613, -3267396, 4089346, 3386045, -648540, 8252243, 2093797, 1386738, -566936, 3592203, 1110786, 3353833, 2105071, 1042066, 362388, 4281546, 2140504, 2190970, -317291, 4250944, -910533, 1548873, 2312303, 1652489, -687732, 4775467, 5354751, 1571421, --1238561, 5749888, 150324, -2905546, -778463, 4161287, -64425, -512712, -1205812, -927713, --68183, 986769, 2520072, 3858491, 1116155, 4081830, -1226750, 10491531, -15344308, 12918188, -5310190, -10470057, 24532316, 3701188, -12527346, 2918967, 6830609, 674310, 4932770, 17629768, --16842714, 11017665, -6813429, 9778567, -3718905, 2114735, -15603079, 2688650, -1697049, 6310381, --5983963, 915365, 1193464, 208843, -9162776, 8836358, 920734, -901943, 4136591, -1701344, -4074850, -2125472, 12383464, 9833328, 12257300, 12259984, -1979443, 4324495, 5280663, 605054, --6416145, 8694624, -10237055, 3227668, 10139881, -5963562, 5369783, -11263552, 3616363, -914291, --2703145, -903554, 863825, 3580929, 3367254, 12021613, -7838852, -300111, 7898982, 17098802, --15089294, 3951370, -3711926, 5259188, -2779918, 24939264, -15302968, 5549098, -8530879, -4635344, -2214056, 2694555, 1369558, -21635898, -11462731, 18054432, 9836549, -1874753, -9714679, -11136850, --4458176, 4116189, -12090333, -6493454, 5947993, 3435974, -247497, -237297, -8461622, 1691143, --2462090, -3078418, 3872987, -1968169, -2609730, -882616, -7402376, 2625299, -1917166, -2399813, --2691871, 3483219, -3570192, 4220342, -642098, -942745, 1408749, 1564979, 5316096, -5365488, --1165010, -4057134, -886911, 2765422, 2018098, 7079717, -2282238, 3951370, 865973, -2452426, --1670205, -593242, 2639258, -318364, 1353452, 11513734, -15075872, -3175055, 21392158, -6382859, --398358, 11476153, 2716567, 7094212, -15914464, 15327665, 1024350, 1174674, -4019553, -9559523, --1293322, -1452236, -10246181, -6166500, 11418707, -3588982, 2214056, -5559835, -25022480, 8514236, -1164473, -7704098, 4809290, 9736154, -884226, 1106491, -1934883, 2474438, 6599754, 2127620, -10589242, 7270306, 1677185, 9271761, -7419556, -7295539, -10416369, 3978214, 6055367, 1789928, --16536698, 4729833, -14127221, 20533164, -4840428, 7319698, 17508434, -6859063, 11131481, 2807835, -12117176, 4905927, -5819681, -17919140, -12868259, -10010495, -1365800, -10509785, -2087891, -9183714, --5965710, 18089328, 3931506, -7667054, -6817724, 3674345, 6724845, -1538135, 2636573, -32801738, -13232794, 2267206, -10516227, -12916040, -3360812, -21655226, 2357400, 10807748, 1207423, -9289477, -5772973, 4880157, -7641821, 3860639, 2295123, -1883880, 270046, -4878009, 1305133, 1729798, -1284732, -6366216, -3484829, 2651069, -3991098, 947577, -2405719, -1521492, 1553168, 5410585, --6819335, 2404108, 5322002, -6338835, -5980742, 812286, -5488968, 1286880, -3642669, 3815542, -2061584, -6351720, 3578782, -4166118, -2705830, 4415764, 1023813, 9913321, 3068217, 0, --617938, 790274, -2592550, 1111323, 7341710, -20116016, -24706800, 15188615, -12053289, -14048301, --3903589, 9599252, 19579682, -12613245, 1194538, 9419400, -2631204, -3854733, 5148592, 3424700, -14751065, 5062693, -13900125, -357019, -6981470, -306016, -8204462, -10823318, 1833951, 11188927, --668941, 5091684, -8993662, 2860448, 11023034, 8620536, 1413044, 1043140, 6937446, 6638946, -4247186, 10143639, -12470438, 13997298, 10069014, 3584150, -10287520, 949188, 8156143, -8053064, -9453760, -6356552, 10690174, -2634963, 13917842, -21495774, 23134842, 5577015, 21822728, 1581085, --4474282, -1335735, 7956427, 694711, -18003430, 888521, -1171452, -18621904, 6053757, 13536126, --17729088, 15042586, -15595563, 5069672, 6169184, 3433826, -19545860, -9313100, -9543417, 2066953, -1565516, -11308649, -16727287, 3458523, -14701136, 10265509, -7046968, -3711926, 5186710, -9070971, --7026030, -9311489, -3801583, -5120138, 391379, -7415798, -5551245, -6752763, -10128070, -4824322, --2040110, -2158758, -2490007, -2831994, -1888712, -4722317, -5236639, 3684008, -6287296, -3327526, --1540283, 5083094, -2309619, 308164, -8058433, -5735392, -2563559, -6442, -1756642, -6824166, --868120, -451508, 5763309, 3794067, -4490925, -4159139, 1025960, -2152852, 4279398, -2193118, -2341294, -4165045, -11730629, 17230336, 3302293, 11268384, 10906533, 2914135, -8813273, 1686848, -29219736, -20458002, 4645544, -3767760, -11288248, 454193, 3722663, 4550518, -374199, -127238, --6037651, -8702677, -13476534, -6886443, 9761387, -8581882, -13543106, 7458748, -5010616, 2746095, --2005750, 5758478, -5910412, 12345347, -4769025, 1175747, -535260, 1146756, 11291469, 3752728, --5614596, 5982890, -5161477, 9289477, -5948530, 3712462, -13798656, -10060424, -7514582, 2202781, --7029251, -11969537, 4706748, 8596914, 2299955, -6436009, 3774740, 6031745, 6757058, 18777060, -25844966, 35340600, -3868155, 5514201, 8320426, 4876399, 4545149, 5566815, -7496329, 13946833, --2220498, 18252000, 22455162, 16514149, 6524056, 9242770, 2916283, 31610960, 8914741, -5930276, --5237713, -4628364, -2021856, -2156611, 1490891, -2644626, -6119255, 5199595, -9576166, 2687576, --2301029, 2844879, -4840965, -3832185, -3090229, 7100655, -7161858, -6832219, -650151, 2878165, --3679176, -8738648, -3023120, 416612, -4257387, 4541928, 8629663, -5071820, -693637, 1793149, --999117, 2881386, 4971962, -2433099, -6154688, -1052267, 2837900, -2996277, 7844221, 9419937, -5693516, -2740189, -6476811, -860067, 9185324, 1046898, -323733, 4132832, 1240172, -82678, --1610613, 2318209, 2300492, -6255083, -4630512, -241055, 35455492, 28388660, -12352863, -5672578, --14739791, 8517457, 4153770, 17372606, -3047816, -7504382, -3395172, -11234561, 2539936, 446677, -16374563, -6114960, 6105296, -22020834, 12141336, -1710471, 8543764, -88047, 7740605, 1342177, --12548284, -6451578, -10766946, -8147553, 9057012, 21876416, 9510131, -2571075, -6785512, -266825, --1848447, 5480915, 7370701, -13940390, -290447, -4837207, -4691178, -15137075, -11734388, -24551644, -434329, -1195612, 8842801, -7329899, 15741592, -11931419, -5294621, 31596464, 31222264, -21561272, -4802311, 18169322, -10541460, -4967667, 9293235, -3430068, -13236015, 35148400, -8766565, -53255984, -17708150, -626528, -27515172, 21088826, 22414898, -7898982, 15682536, 20043002, -9477382, 770410, -12634183, -13660680, 5711233, 11083700, -19694572, -2632278, -6520834, 1145146, -7233799, 186294, -2716567, -8232379, 6660421, -9555765, -4478041, 4774930, 9459129, -5393405, 502511, 1995012, --1469416, 3319473, -6981470, 10304700, -5231807, 10880226, 10408316, -156229, 500364, 7187091, --5226975, 1637456, -318364, 8984535, -6690486, 5490042, 1602023, -20691542, 3984656, -2483028, --3946538, 1242319, -622770, 2345052, -11778948, 1726040, -3093987, -10243497, 1744831, 17923436, --16766479, 5638219, 9733470, -14149770, -95563, 8048232, -12870406, -6191196, 2864743, 6593312, -12154221, 6095633, -9163313, -1409823, 9085466, -9659918, 10390600, -4643934, -12461311, 11875585, -6309307, 6077379, -2858838, -2900714, -4193499, -308164, 10049150, -19741280, 10311680, -109522, -17074106, -10251013, 375273, -12822088, 6056978, -21061982, 2700998, 1257352, -8160975, -6135898, -3765613, -14083735, -24519968, 15364709, -1059783, 4831838, -14367739, 9316321, -2048163, 9988483, -10711648, 5454609, -10037875, 8875013, -4643397, -1970853, -18882286, 3068754, -13345000, -14695231, --21556978, -8682813, 3832722, 6368900, -22262426, -10866267, 1545115, -7791071, -30010010, -23762444, --24406152, -4833449, -14460618, 13396540, 18781892, 5352066, -17960480, -20917028, -24405078, -2027225, --1508607, 13776644, -11615202, -20336670, -9815611, -13452911, 4990752, 529892, 5200132, 2735357, --6490770, 1735167, 5345087, -5065914, -1944010, -4253092, -2542084, -3003256, -6300180, -48318, -8460549, 535260, 2677375, 2638721, -1127966, 6389838, -3700651, 9739375, 8797704, -3111167, --7358353, -132070, -2650532, -4026532, -4523675, -4022774, 7128035, 543313, 6730751, -6483253, --7013682, -1097364, 3838090, -11450920, 2294586, 1404454, -8270497, 2100776, -6757058, -15043123, -9698036, -3424700, 1457068, -2318209, 1889786, -7595650, -1746441, -562641, -15952045, 26459682, -29443612, -7537668, 19724100, -6065031, -8259222, -8170639, 19186692, -17398376, -4297115, -8447127, -30651034, 863288, 10969346, 3778498, -3288334, 15191836, 8287140, 12393128, 3616363, -2243047, --5811628, 11861089, -2401961, -12146168, 14458471, -651761, 12611098, -14770929, 9744207, 3366181, --15173046, -11635066, 26584236, 17296908, -2053531, 9458055, 7684234, -17364016, -11651709, 5470715, -3913789, 11796128, 1090385, 2439542, 4276714, 14450417, 5616744, 3574487, -15002858, 40170292, -26671746, 2940979, -18571976, 8862128, -6534793, 4866735, -4586488, 8490613, -6376953, 1217086, -21821656, -15564961, -7889318, -20866024, 5340792, -5772973, -4097936, 18827526, 5506148, 2283849, -1167694, -7937637, -15934866, 11069741, -500901, 107374, 11530377, 11814918, -1447404, -8884140, --10681584, 19498078, -2553895, -1254131, -4330938, 14638859, -1712618, -10411001, 6225555, 5375689, -8698919, 4105989, 2718714, 13532905, -3336116, -5076115, 4200478, -437013, -6979, 1104344, -5692443, -3611531, -605590, -4576288, 898722, 6473053, -3637301, 1471563, 7633768, -2986076, -1160715, 5903970, -195421, -1699196, -13317620, 8182987, -7734163, 5344013, -9123047, -1921461, -2780455, -5411659, -2782602, 12038256, 8127152, 987843, -2551211, 11258183, 1565516, 5359046, -4317516, 2508261, -2739652, 4835597, 1855963, 4788352, -9891847, -21233782, 54554676, -61572116, --7256884, -32489816, 39528732, 10519986, 6854768, -15600395, 3576097, -12764643, 35408248, -6440304, --2413235, 3483219, -1889249, -14062260, 5191005, 7916162, 10631655, -24158654, -12713103, -12523051, -4813585, -7431904, -6567005, -939524, -325881, 15575699, -8223789, 608812, 11800960, -1656247, --15920370, 1815697, 12432320, -1676648, -25035902, 18469970, 2160906, 159988, -115964, -10717017, -8154533, -46359876, -32307280, -4689031, -11610907, 1905892, 3469260, -21818434, 33940444, -13663365, -46781856, -6808597, -16451872, 15842524, 2633352, 14117021, 21643950, 6678674, -22320946, -6376416, -25003152, 57920320, 1897302, -15064061, 24194624, 1894618, 28544352, 4420595, 38654704, -10185515, --1569811, -1246614, 9017284, 1131187, 14847702, 26977764, 1602023, -5954436, -4858145, 8452496, --7386807, -3381213, 17738752, 12758737, 1947231, -3525095, -6693170, -7726110, -4597763, -6324876, -12793634, -8129300, -5509370, 6118718, 2282238, -2649458, 5733245, 6300180, -3621194, 5371394, -9092983, -4925791, 605054, -13100187, 16269336, -304943, 13086228, 642098, -13634374, -142808, -1420560, 3353296, 1465658, -237834, -11712376, -11093364, -649077, -6555731, 8652748, 2924873, --3998078, -645319, 6810208, 1146219, -3921842, 137976, 4938676, -195958, -2368675, -751082, -2681670, 80351856, 25131464, 9139690, -2240362, -8318815, -11217918, 26422102, 24250996, -27343910, -16669842, 12723841, 3097208, -8061117, -14415521, -37394668, -13876502, 12329240, 4161287, -11836930, -22991496, -7109782, 9448391, 9389872, -5262409, -5049271, 23982024, 903017, -8805220, 15106474, --12701829, 29418916, -14054744, -8403104, -1357747, 11639361, 6260989, 29748554, -8840116, -17360794, --6041945, 8062191, 2249489, 16061567, 4561256, 1652489, -6198712, 12992276, 55558624, 23785528, --20343112, 18014704, -10565620, -16540993, 13873281, -355409, 4202089, -863825, 10056129, -14417668, --22081500, -58877024, -15343234, 21326660, -7594576, -20062866, 9087077, -4504347, 9051644, -23460722, --20538534, -9565966, 9123584, 9635759, 28421410, 5172751, -1772211, -21871048, -31028454, -3684545, --13834090, 2924336, 11478837, -14694157, -15095736, -3098282, -18832894, -31596464, -10357851, -8251706, --16782584, -3768297, 9658845, -8676371, -4465156, -10004589, -2159295, -22454090, -14210973, -14228690, -631360, 2297271, 8414378, -12471511, 7355132, -16887812, 940061, -9861782, -1078037, 5493800, --5050345, 8233989, -22235582, -4257387, 7881265, 3402151, 7264401, -2654827, -5902896, 11204496, --1951526, -2088965, 7911867, -11027865, -8689793, -1452773, 2347200, -14694157, -6856379, -7910793, --4308389, -1058710, 34897, 1480690, -6493991, 891206, -1840394, -12930536, 17361868, -14618458, -48495548, 40635224, 18845780, -11605539, -17566954, 28929826, 24776592, -33342904, -7031399, -20583094, -27977954, -5190468, -40513352, -17898740, 13996225, 24742232, -46773804, 18258442, -32475322, 11531987, --19296752, -5299453, 22060026, -7915625, 3113315, 13899051, 29504278, -19881940, -32994476, 6941741, --2855080, 3177739, 30263414, 7309498, 22519050, -29265908, -5601174, 8879845, -26033944, 41718628, --5176510, 24842628, -3781719, -6306086, 20442970, 20300700, -12151536, 45982456, -11106785, -20576652, -22134650, 39451960, 2026151, 6824166, 1702418, 17178796, -18972482, 13701483, 60260000, 27423366, --2105608, 26020522, 32339494, -24509768, -74196632, 5208722, 44423920, 50040664, 13606993, -5257040, --21989696, 25791278, 55530704, 25616796, 13409425, -54976656, 10133975, -31309238, -19425600, -48513804, -40754944, 8527121, -14257681, -19523848, 14241575, -14211510, 7653632, 5124433, 7129109, -18200460, --3920768, -2573759, 9410273, -6497749, 7945153, 6688338, -8231842, -5599027, 11092290, 150861, -11921219, -5437966, 4380330, -8204462, 4187056, 22347788, 4204773, 3937411, -2941516, -24680492, --12390981, -15350213, 8000451, 40784472, 38674568, 34717832, -2775086, -25749402, -24136106, -11750494, -16237124, 17886928, -1370632, -8728447, -13050795, -19236622, 5005785, 10362145, 8833137, 8056285, -6501507, -91805, 662499, -3671660, 3773129, -5313949, 3642132, -1408212, -781147, -191126, -4734665, 1115081, 2039573, 311922, 2244121, -4032438, 440234, -1891933, -607738, 34152508, --67017596, 51501488, 10842645, -30612380, 617402, 28893318, -18913426, 1014149, 16102906, -19805704, -1886028, -17777406, -11236708, 19202262, -16137266, -9074192, -34091304, 15038291, 33469606, 9564355, --14811195, -25224342, -3901441, 19298898, 10493679, -21518324, -421981, 26353920, -3310883, 1974611, --8774618, -6212670, 61610768, -29314226, -7388418, -6670621, 10465762, 28731184, -30217780, -16860430, -40571336, -4608500, -2472828, -48237852, -39896488, 16906602, 27313308, 15017353, -49457624, 34127272, --805306, -7444789, 7201050, -35306780, -9728101, -4467303, -17476758, 32009318, -24808804, -13706851, --26686242, -15346455, -35217660, 10759430, -55111408, -15364172, 6534256, -27370216, 6847789, 15384573, -6765647, -300111, -9842991, -19753628, 29250874, -6251862, -2777770, -10419591, 17719962, 35504348, -5350993, -47785808, 4251481, -21246130, 3215857, 4501663, -8717173, 3408594, -14322105, -4777614, --1206886, -10799158, 204548, -3052648, 8409546, 7552700, -2631741, 3830037, 15648713, -7024419, --5649493, 16062641, -11660299, 10677826, -5677410, -5355824, 1145146, -6770479, -3335579, 9790378, --19051938, 5764383, 4418985, 7085086, 13549011, -9540733, 1569274, 10203769, 3635690, -3437585, --9048422, -1753957, -2246268, 266288, -9287867, 2789045, -1697049, -3736085, 2181844, 1238024, --4356171, 9782862, -4249870, -2964601, 155156, 2586107, -443992, -38739532, 23372138, -799401, -30278982, -6342056, 31326954, 3840775, -4070019, 13940390, 36368708, 17342004, 9286256, 7170985, -4609037, 14215268, -18373870, -1606318, -13785234, -14563697, 22369800, 13811541, 8544837, -6579890, --5655398, -2793876, 23409182, 3445101, -10389526, -17089138, -786516, -4159676, 17611514, 2523293, -14730664, 27520002, -7718593, -70289824, 4604205, 56820808, 5946382, -41978472, -5412733, 15924128, -12646531, 22207128, 20358144, -1849520, -13223131, -13747653, 17822504, -11030550, 1996623, 6038724, --72815800, -12827457, -13999446, 11356430, 57235272, -1258962, 4600447, -13498545, 3893925, 11582453, -24015310, 12315819, -14185740, -7693897, -35348656, -2377265, 24312736, -10962367, -5039608, 8708583, -24701430, 19765440, -5314485, -25381646, 166430, 8919573, 2815351, -16957604, 2083059, 1763621, --1242856, -14683956, -18665390, 15960635, 13358959, -949725, -2891050, -14379551, 11221676, 4344360, -2590939, 4063576, 3613678, 6192269, 471910, -15915538, 8796630, 139050, -913217, 600759, -4227322, 1683627, -2042257, -328028, 688805, -5432060, -2944200, -21919902, 3489124, 14962592, --10640781, 5141076, -17397302, 9546102, 4666482, -2915746, -4731980, -2079838, -1606855, 1752884, --3728032, 19725174, -2285460, -114974128, -216266096, -86909736, -146375712, -168225808, 104614128, 36575404, -96118680, 289042720, 189186864, 152665680, 228787008, 114221432, 7376607, 90491736, 22529788, -91556352, --64340756, -72960760, -167657808, -136184288, -58856620, -121946472, -134399728, -55560772, -82726976, -138758576, --71731856, 10737418, -87282864, -79863840, 17602386, -17298518, -79598096, 89179624, 58194124, -66844188, -66133908, 100366944, 15184857, 57383448, 201639056, 95770792, 60429116, 237221248, 166195904, 96238944, -233818560, 313495040, 194053072, 281115264, 364082240, 260193952, 172519168, 227442672, 119684632, -115854592, --76347336, -153031296, -356576768, -357509312, -362166144, -546620480, -539802752, -542292224, -564992768, -533350656, --518883040, -408425088, -326990368, -247233344, -101946416, 29992294, 79237312, 201849504, 350595488, 297107584, -398215424, 566326848, 475965600, 444584416, 541227072, 401013568, 205641968, 222919536, 209086528, 78510392, -55818468, 112277424, 41457708, -9803263, 37524056, 13407277, -78087336, -69707856, -42112692, -139520400, --160383200, -69931728, -122039888, -167891344, -69459288, -44569412, -91621856, -1279900, 29465624, -30203284, --4640176, -22274774, -128250408, -184597696, -207071648, -258466832, -304471840, -273139520, -249846832, -232501072, --174679008, -111100600, -79272752, -14313515, 61551176, 95938832, 138836432, 228888464, 278005728, 324459552, -347487552, 329436352, 293428960, 224679408, 153418912, 85848344, 11886322, -14376866, -24871082, -40209484, --45617920, -46239080, -53912040, -56945896, -51776368, -46379740, -51896628, -55413132, -53262428, -55683176, --61290792, -58942520, -56664576, -44727252, -30185030, -23958938, -15392089, 850404, 6777996, 14328011, -30232274, 39797704, 41323492, 40657772, 31958314, 21353504, 12538083, -404801, -11883638, -17962090, --29010356, -37242200, -40296456, -47302624, -49655192, -45314052, -42583528, -39825620, -33300492, -29113972, --23296976, -16974784, -12474733, -6114960, -579821, 6496675, 10862509, 15374372, 20226612, 25370908, -28627568, 33884608, 39545376, 43643848, 45848776, 47496968, 48521320, 47852380, 46573016, 46170900, -41958072, 36586144, 29709900, 21926344, 14084808, 5937793, -3006477, -10468983, -18383534, -24939802, --31581968, -37468220, -43444132, -45805828, -47371340, -46968688, -43336756, -39413840, -34636764, -27095874, --19742890, -12797392, -4628364, 2423435, 7080254, 11267310, 14266271, 14582488, 13673028, 12974022, -11217918, 8858907, 7205345, 6215892, 4965519, 4001836, 3454764, 3042448, 2530273, 2335389, -2358474, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +2424509, 3884798, -1372779, 3452080, -563714, 3643743, 1831804, -803696, -1430224, 3690988, +309775, 734439, -4200478, -674847, -304406, -189515, 5737540, 2802466, -211527, -4308389, +-3133716, -1854352, 523449, -100395, 1241246, 2637110, 801548, 971736, -4348118, -670552, +-4232154, 168577, -2341294, 2768643, 2763812, -1104344, -2284386, 2894808, 618475, -1087701, +-3912715, -532039, -2509872, 701153, 2390149, -3968550, -1938104, -664109, -1553704, 10126996, +2411624, 5845988, 424665, 1917703, -45097, -2927020, -2716030, -3455301, 1631551, -2850785, +2049773, 63888, 2502892, 2560874, 6218039, 1876364, -516470, -315143, -3694209, 6023155, +5541045, 969589, 1708323, 1569811, 1714766, -350577, -3092377, 921271, 1788317, -1161252, +517544, -951335, -2825552, 1345399, -2356863, -1600412, -733903, 188442, -1054415, -1144072, +-1342714, -28991, -73551, -210990, 272194, -471373, 900333, -500364, -839129, -81068, +1129576, 425202, -461172, -1515587, -445603, 1403917, 96100, 634045, 557272, 394600, +14017700, -3288871, -2905546, -1114544, -2749316, 664109, -6631430, 540629, 1347546, 359704, +4544613, 539018, -911070, -3974455, 2581812, -5611375, -4832912, 1774358, -2344515, -1111860, +-816044, 959925, 3820374, 5216238, 415001, -785442, 6200322, 2247342, -334471, 245350, +-2499671, 98247, 6804302, 23085, -3125663, -2528125, -706522, 2320356, -3111704, -3847217, +-3923990, -3212099, 3120294, -3020436, 1183800, -3674345, 1327145, 4492536, 319438, 3198140, +-1323924, -2502355, -1220308, 2224793, -106300, 3432216, 5019206, 751082, -1481764, -2562485, +-100932, -362388, 257698, 178241, -4371203, -445603, -2027225, -2219424, 2162516, 471373, +1398549, 1639604, -5205501, -2899640, 2201171, -960462, 3900904, 722628, 3291556, -646929, +-799401, -881005, -1864016, -424665, -2055679, -819802, 92879, 3071975, -702764, -48318, +-494458, 987306, 7516, 1197222, 270046, -236760, -734439, 968515, -1462436, 27917, +114890, -830539, 739808, 919123, -1227824, 445603, -586263, 566936, 568546, 18254, +938987, 118648, -426812, -9847823, -4792647, -2021319, -6691022, -2237678, -6417755, 2050847, +-450435, -3951370, -4575751, -576063, -3715684, 30065, 3315715, -117575, -5717139, -2046015, +209917, -2163053, -1769527, 1811939, 5627481, 7175280, -1013075, -1762547, 4086125, 4626217, +-1280437, -923955, -773631, -3060701, 1093069, 1589675, -2742874, -2026688, -543313, 2841658, +6146098, 514859, -1904818, 124017, -2912525, -998580, -4703526, -2151242, -2018098, -7514582, +-687732, -3345243, -2281702, -8261907, 5327907, -3528853, -3111704, 1611150, -397284, -483721, +1222455, -6844568, -1684701, -2376191, -426812, -3901441, -424128, -1774358, 1971927, 2538326, +-2141578, -1090385, -3202972, 1300301, -370978, -560493, 137439, -5036923, 5906, -4540854, +843961, -195958, -1339493, 1495722, 5796059, 2821257, -1203128, 428423, -860604, -2083059, +349503, 998580, -976568, -37581, -1240709, 158377, -433255, -1586454, 820339, 780610, +-1666984, -720481, 622770, -634045, 379568, -1052267, -781684, -832150, -1547799, -1699733, +-5906, 586800, -795106, -977642, 133681, -397284, -96637, -471373, 123480, -214212, +-478352, -1381369, 942208, -407485, -588411, -607738, -1139777, -77309, 269509, -932545, +177167, 193274, 183610, -735513, 344134, -18544596, -1514513, -9170292, 8131447, -4803384, +14680735, -9485435, 9237401, -8414915, -549756, -184684, -6484864, 4947803, 139586, -2461553, +1466195, -2163590, -884763, -6336688, -97711, -4798016, 3711389, 1244467, 4553202, -2758443, +6811818, 6093485, -6014028, 1614371, -5116917, 5343476, 20938, -3854196, 289373, -605054, +-221728, 3899294, 558346, -5979132, 2413772, 4174171, -302258, 4941360, -2353642, 4013647, +-6140730, -3194919, 3999688, -3602404, 1001264, 5320928, -4931160, 7900056, 3146064, -7970923, +1906966, -7683697, 2724083, 4146791, 2856153, 3987877, 5861020, 1887638, -725313, -566936, +386547, 1762547, 4216048, -1553704, 7968238, 1446867, 5462125, 2864743, 1590749, 289910, +5484137, 885300, 1367947, -3243237, -4263829, 2075006, 2967823, 215822, 4723391, -665183, +-22012, -979789, 5609228, 1580548, -1979443, 1156957, 975494, 693100, 1928977, 178241, +3505230, -661425, 1225676, 540629, 1359894, -1000191, 694711, 207769, 111132, 186294, +-1151051, -1193464, 477815, -1442035, -545998, -1554778, 951335, -151934, -424665, -594316, +12274480, 128849, -3262565, -1054951, -4492536, -5379984, 8981850, -1672890, -1234803, 8243116, +-569620, -1523640, 3685082, 6426345, 1883343, 3220152, -96637, -6895570, -1775432, 5281199, +-7856569, -7792145, -2874944, 1774895, -5519570, -3302830, 179315, -728534, 5558225, -2062658, +-1135482, 5842766, 8121247, -6924561, 1893544, -1610613, 3007551, 855772, -3026878, -622233, +3419331, 5186710, -1308354, -7195681, -1560147, -588411, -1841467, -3566434, 597537, -410706, +1392643, -949725, 1080184, 6820408, -4935455, 695785, -3741454, -3045669, -5169530, -1535451, +-2955474, -7203197, -185220, 540629, -2746632, -513249, -2911451, 2838437, 3598109, -513249, +1124745, -2570538, -648003, 8790724, -1081258, -3591667, -11805254, -5374615, -79457, -4025458, +2819646, -1118839, 1100049, 18254, -2310693, -420370, 3538516, -2894271, 758062, -796716, +415001, 33286, -2409477, -1817845, -968515, -1897302, -304406, -3019362, -554051, -1704565, +417149, -1184874, -312459, -1622961, -1684701, -1722282, -363998, -172872, 705448, 457951, +-155156, 504122, 488016, -87510, 1782411, 1477469, 62277, 875636, -615254, -922344, +295816, 15694884, 17655000, 3248606, -6606734, 3915400, 6881075, 6898255, 3838090, 5176510, +2248952, 8563091, -1011465, -1203665, -3676492, 5323075, -3328600, -7798587, -10681047, 1077500, +-5186710, -4494684, 3610994, -1247151, -2929705, 8748848, -758062, 10902238, -2147, -4498442, +-3101503, 3738232, 2455648, -2309619, -8855149, 12470438, 7173669, -61203, 6720550, 3947075, +4332012, -4267050, 4906464, 2427194, 900333, -1655710, -2357400, -5691369, -7948911, 2086280, +3693135, -6242735, 2351495, 5149666, 7774428, 1955821, 7014756, 3174518, 5963025, -9035001, +2551211, 694174, 1695438, 99321, -701690, 3658239, 3346853, 3217468, 4769025, -1728724, +2272038, 1272384, 6902013, 8436926, -4413616, -5194226, 683974, -2190970, -4631049, 1785096, +4658966, -3049964, 1929514, -8684961, -6365679, 1327145, -4415764, -2165737, -1476932, -4014184, +-57982, -176094, 424128, -216896, 1632625, 1893007, -201327, 895501, 286152, 1402307, +1559073, -102542, 60130, -227633, 1713155, 773094, 921807, 2066416, -434865, -1242856, +1597191, -599685, -57445, 2390149, 1502165, 2255395, 3210488, 381715, 1415729, 751082, +2114198, 447213, 871342, 1056025, 14501420, 4559108, 6386080, -5355824, 2076080, -13198971, +679142, -9546639, 7175280, 4807679, -4032438, 6024229, 3421478, -6478958, -1621350, 9271761, +-325881, 6371584, -1776506, 1248762, 7407745, -9276592, -729608, 1472100, 2698313, 577136, +2971581, 347892, 8993125, -4217121, -2601677, -2763812, 6798933, 822486, -3209951, 4092030, +11475616, -8063801, 1410897, 1501091, -704912, 4590783, -2328946, 8727910, 2944200, 2174327, +-7198902, -760209, -1911261, 4021163, 3056406, 4346507, -4944044, -3274376, 4178466, -8665633, +-4827543, 1906966, 9266929, 5568962, 8195872, -8986682, -2829847, -9132711, -2352568, 2705293, +-774168, -8621073, 1125818, -5303211, -73551, -9430674, -11364483, -4693863, -8202314, 417686, +2903398, 1581085, -3506304, 4481262, 7289097, 1990717, 2154463, 4136591, -1313186, -7041062, +-421444, -4861366, 2519535, 744103, -466004, 1245541, 658204, -5175436, -2611340, -1512902, +2573759, 313533, -1789391, -673236, -149787, -806917, 430570, -1101122, -468688, 301185, +2346126, 534187, 767189, 469225, -447750, 630286, 1570884, 745714, 2041720, 547071, +1061931, 59593, 1619740, -2568391, 1601486, -16980690, -15298137, -10963441, 3534221, 3577708, +12969727, -5523865, 12324409, -4834523, -19958176, -1649268, -1729798, -7636989, -12865038, -4610111, +-147103, -7878581, 67646, -12196097, 1037772, -12865038, 7580618, -3137474, 5558762, -2415919, +-97711, -3907347, -4560719, 8163122, 1706176, -2207076, 9239012, 1151051, 1595580, 3258270, +8511551, 7492571, 5742372, 270046, -9795747, -908386, 4893579, 1571958, 6207839, -2791192, +2835215, -14446659, 4730907, 8910447, -10912438, 6616934, 2392834, 10516227, 8072928, 93952, +-2626909, -145492, 7174206, 3587908, -9183714, -7460358, -12744779, -6121939, -8519068, -1855963, +-10568304, -2175938, -3473555, 10980084, -4970888, 5475010, -2716030, -1495186, -3442953, -7428683, +-3919695, -2323577, -2403571, 6946036, -20488604, -4296041, 9729712, 533113, 1946694, 5245229, +9850507, -6030671, 1262184, 2678449, -358093, -5906, -1333587, 2756295, 4129074, -1677722, +421981, -308701, 4601521, -1586990, -42413, 4624606, 1020592, 1683090, 2192581, 2216203, +-656056, 465467, -1124208, -1679869, -909459, -3041911, 994822, 2134062, 1507534, 906238, +-3976066, 100932, -448287, -105764, -1814087, 1216013, 1914482, -897648, -103616, 2240899, +2383707, -2399276, -22849226, 17104708, -5131412, 10014790, 5719823, -657667, -15202037, 11541114, +1351841, -1276142, 7186554, 5036923, -6433324, -345745, 12429098, 3969624, -5995775, 8764955, +-5196911, -4205310, -2989834, 2649458, -212064, -1885491, 946503, 3622268, 3175592, 3311957, +-9624485, 5534602, -8046085, 10324028, -6856379, 10274636, 3094524, 763967, -10604811, -10719701, +-3769371, -3731253, 11936788, 3220152, 9484898, 3865471, -9044664, 95563, -2296197, 3957812, +-69793, 3456912, -1404991, -6119792, -3759170, 5972689, 15185931, 10941966, 934155, 3604551, +-1451699, -2411087, 7624104, 6436546, -3185792, 9583683, 13516799, 19131394, 73551, -11337640, +-13718662, 4430259, 2080912, -793495, 3017215, -163746, -4634807, -728534, 11352135, -2360085, +-5465883, 20614770, 4911295, -3751654, 5775658, -80531, -571768, -878858, -3659312, -688269, +5983963, 2927557, -2389613, -3267396, 4089346, 3386045, -648540, 8252243, 2093797, 1386738, +566936, 3592203, 1110786, 3353833, 2105071, 1042066, 362388, 4281546, 2140504, 2190970, +317291, 4250944, -910533, 1548873, 2312303, 1652489, -687732, 4775467, 5354751, 1571421, +-1238561, 5749888, 150324, -2905546, -778463, 4161287, -64425, -512712, -1205812, -927713, +-68183, 986769, 2520072, 3858491, 1116155, 4081830, -1226750, 10491531, -15344308, 12918188, +5310190, -10470057, 24532316, 3701188, -12527346, 2918967, 6830609, 674310, 4932770, 17629768, +-16842714, 11017665, -6813429, 9778567, -3718905, 2114735, -15603079, 2688650, -1697049, 6310381, +-5983963, 915365, 1193464, 208843, -9162776, 8836358, 920734, -901943, 4136591, -1701344, +4074850, -2125472, 12383464, 9833328, 12257300, 12259984, -1979443, 4324495, 5280663, 605054, +-6416145, 8694624, -10237055, 3227668, 10139881, -5963562, 5369783, -11263552, 3616363, -914291, +-2703145, -903554, 863825, 3580929, 3367254, 12021613, -7838852, -300111, 7898982, 17098802, +-15089294, 3951370, -3711926, 5259188, -2779918, 24939264, -15302968, 5549098, -8530879, -4635344, +2214056, 2694555, 1369558, -21635898, -11462731, 18054432, 9836549, -1874753, -9714679, -11136850, +-4458176, 4116189, -12090333, -6493454, 5947993, 3435974, -247497, -237297, -8461622, 1691143, +-2462090, -3078418, 3872987, -1968169, -2609730, -882616, -7402376, 2625299, -1917166, -2399813, +-2691871, 3483219, -3570192, 4220342, -642098, -942745, 1408749, 1564979, 5316096, -5365488, +-1165010, -4057134, -886911, 2765422, 2018098, 7079717, -2282238, 3951370, 865973, -2452426, +-1670205, -593242, 2639258, -318364, 1353452, 11513734, -15075872, -3175055, 21392158, -6382859, +-398358, 11476153, 2716567, 7094212, -15914464, 15327665, 1024350, 1174674, -4019553, -9559523, +-1293322, -1452236, -10246181, -6166500, 11418707, -3588982, 2214056, -5559835, -25022480, 8514236, +1164473, -7704098, 4809290, 9736154, -884226, 1106491, -1934883, 2474438, 6599754, 2127620, +10589242, 7270306, 1677185, 9271761, -7419556, -7295539, -10416369, 3978214, 6055367, 1789928, +-16536698, 4729833, -14127221, 20533164, -4840428, 7319698, 17508434, -6859063, 11131481, 2807835, +12117176, 4905927, -5819681, -17919140, -12868259, -10010495, -1365800, -10509785, -2087891, -9183714, +-5965710, 18089328, 3931506, -7667054, -6817724, 3674345, 6724845, -1538135, 2636573, -32801738, +13232794, 2267206, -10516227, -12916040, -3360812, -21655226, 2357400, 10807748, 1207423, -9289477, +5772973, 4880157, -7641821, 3860639, 2295123, -1883880, 270046, -4878009, 1305133, 1729798, +1284732, -6366216, -3484829, 2651069, -3991098, 947577, -2405719, -1521492, 1553168, 5410585, +-6819335, 2404108, 5322002, -6338835, -5980742, 812286, -5488968, 1286880, -3642669, 3815542, +2061584, -6351720, 3578782, -4166118, -2705830, 4415764, 1023813, 9913321, 3068217, 0, +-617938, 790274, -2592550, 1111323, 7341710, -20116016, -24706800, 15188615, -12053289, -14048301, +-3903589, 9599252, 19579682, -12613245, 1194538, 9419400, -2631204, -3854733, 5148592, 3424700, +14751065, 5062693, -13900125, -357019, -6981470, -306016, -8204462, -10823318, 1833951, 11188927, +-668941, 5091684, -8993662, 2860448, 11023034, 8620536, 1413044, 1043140, 6937446, 6638946, +4247186, 10143639, -12470438, 13997298, 10069014, 3584150, -10287520, 949188, 8156143, -8053064, +9453760, -6356552, 10690174, -2634963, 13917842, -21495774, 23134842, 5577015, 21822728, 1581085, +-4474282, -1335735, 7956427, 694711, -18003430, 888521, -1171452, -18621904, 6053757, 13536126, +-17729088, 15042586, -15595563, 5069672, 6169184, 3433826, -19545860, -9313100, -9543417, 2066953, +1565516, -11308649, -16727287, 3458523, -14701136, 10265509, -7046968, -3711926, 5186710, -9070971, +-7026030, -9311489, -3801583, -5120138, 391379, -7415798, -5551245, -6752763, -10128070, -4824322, +-2040110, -2158758, -2490007, -2831994, -1888712, -4722317, -5236639, 3684008, -6287296, -3327526, +-1540283, 5083094, -2309619, 308164, -8058433, -5735392, -2563559, -6442, -1756642, -6824166, +-868120, -451508, 5763309, 3794067, -4490925, -4159139, 1025960, -2152852, 4279398, -2193118, +2341294, -4165045, -11730629, 17230336, 3302293, 11268384, 10906533, 2914135, -8813273, 1686848, +29219736, -20458002, 4645544, -3767760, -11288248, 454193, 3722663, 4550518, -374199, -127238, +-6037651, -8702677, -13476534, -6886443, 9761387, -8581882, -13543106, 7458748, -5010616, 2746095, +-2005750, 5758478, -5910412, 12345347, -4769025, 1175747, -535260, 1146756, 11291469, 3752728, +-5614596, 5982890, -5161477, 9289477, -5948530, 3712462, -13798656, -10060424, -7514582, 2202781, +-7029251, -11969537, 4706748, 8596914, 2299955, -6436009, 3774740, 6031745, 6757058, 18777060, +25844966, 35340600, -3868155, 5514201, 8320426, 4876399, 4545149, 5566815, -7496329, 13946833, +-2220498, 18252000, 22455162, 16514149, 6524056, 9242770, 2916283, 31610960, 8914741, -5930276, +-5237713, -4628364, -2021856, -2156611, 1490891, -2644626, -6119255, 5199595, -9576166, 2687576, +-2301029, 2844879, -4840965, -3832185, -3090229, 7100655, -7161858, -6832219, -650151, 2878165, +-3679176, -8738648, -3023120, 416612, -4257387, 4541928, 8629663, -5071820, -693637, 1793149, +-999117, 2881386, 4971962, -2433099, -6154688, -1052267, 2837900, -2996277, 7844221, 9419937, +5693516, -2740189, -6476811, -860067, 9185324, 1046898, -323733, 4132832, 1240172, -82678, +-1610613, 2318209, 2300492, -6255083, -4630512, -241055, 35455492, 28388660, -12352863, -5672578, +-14739791, 8517457, 4153770, 17372606, -3047816, -7504382, -3395172, -11234561, 2539936, 446677, +16374563, -6114960, 6105296, -22020834, 12141336, -1710471, 8543764, -88047, 7740605, 1342177, +-12548284, -6451578, -10766946, -8147553, 9057012, 21876416, 9510131, -2571075, -6785512, -266825, +-1848447, 5480915, 7370701, -13940390, -290447, -4837207, -4691178, -15137075, -11734388, -24551644, +434329, -1195612, 8842801, -7329899, 15741592, -11931419, -5294621, 31596464, 31222264, -21561272, +4802311, 18169322, -10541460, -4967667, 9293235, -3430068, -13236015, 35148400, -8766565, -53255984, +17708150, -626528, -27515172, 21088826, 22414898, -7898982, 15682536, 20043002, -9477382, 770410, +12634183, -13660680, 5711233, 11083700, -19694572, -2632278, -6520834, 1145146, -7233799, 186294, +2716567, -8232379, 6660421, -9555765, -4478041, 4774930, 9459129, -5393405, 502511, 1995012, +-1469416, 3319473, -6981470, 10304700, -5231807, 10880226, 10408316, -156229, 500364, 7187091, +-5226975, 1637456, -318364, 8984535, -6690486, 5490042, 1602023, -20691542, 3984656, -2483028, +-3946538, 1242319, -622770, 2345052, -11778948, 1726040, -3093987, -10243497, 1744831, 17923436, +-16766479, 5638219, 9733470, -14149770, -95563, 8048232, -12870406, -6191196, 2864743, 6593312, +12154221, 6095633, -9163313, -1409823, 9085466, -9659918, 10390600, -4643934, -12461311, 11875585, +6309307, 6077379, -2858838, -2900714, -4193499, -308164, 10049150, -19741280, 10311680, -109522, +17074106, -10251013, 375273, -12822088, 6056978, -21061982, 2700998, 1257352, -8160975, -6135898, +3765613, -14083735, -24519968, 15364709, -1059783, 4831838, -14367739, 9316321, -2048163, 9988483, +10711648, 5454609, -10037875, 8875013, -4643397, -1970853, -18882286, 3068754, -13345000, -14695231, +-21556978, -8682813, 3832722, 6368900, -22262426, -10866267, 1545115, -7791071, -30010010, -23762444, +-24406152, -4833449, -14460618, 13396540, 18781892, 5352066, -17960480, -20917028, -24405078, -2027225, +-1508607, 13776644, -11615202, -20336670, -9815611, -13452911, 4990752, 529892, 5200132, 2735357, +-6490770, 1735167, 5345087, -5065914, -1944010, -4253092, -2542084, -3003256, -6300180, -48318, +8460549, 535260, 2677375, 2638721, -1127966, 6389838, -3700651, 9739375, 8797704, -3111167, +-7358353, -132070, -2650532, -4026532, -4523675, -4022774, 7128035, 543313, 6730751, -6483253, +-7013682, -1097364, 3838090, -11450920, 2294586, 1404454, -8270497, 2100776, -6757058, -15043123, +9698036, -3424700, 1457068, -2318209, 1889786, -7595650, -1746441, -562641, -15952045, 26459682, +29443612, -7537668, 19724100, -6065031, -8259222, -8170639, 19186692, -17398376, -4297115, -8447127, +30651034, 863288, 10969346, 3778498, -3288334, 15191836, 8287140, 12393128, 3616363, -2243047, +-5811628, 11861089, -2401961, -12146168, 14458471, -651761, 12611098, -14770929, 9744207, 3366181, +-15173046, -11635066, 26584236, 17296908, -2053531, 9458055, 7684234, -17364016, -11651709, 5470715, +3913789, 11796128, 1090385, 2439542, 4276714, 14450417, 5616744, 3574487, -15002858, 40170292, +26671746, 2940979, -18571976, 8862128, -6534793, 4866735, -4586488, 8490613, -6376953, 1217086, +21821656, -15564961, -7889318, -20866024, 5340792, -5772973, -4097936, 18827526, 5506148, 2283849, +1167694, -7937637, -15934866, 11069741, -500901, 107374, 11530377, 11814918, -1447404, -8884140, +-10681584, 19498078, -2553895, -1254131, -4330938, 14638859, -1712618, -10411001, 6225555, 5375689, +8698919, 4105989, 2718714, 13532905, -3336116, -5076115, 4200478, -437013, -6979, 1104344, +5692443, -3611531, -605590, -4576288, 898722, 6473053, -3637301, 1471563, 7633768, -2986076, +1160715, 5903970, -195421, -1699196, -13317620, 8182987, -7734163, 5344013, -9123047, -1921461, +2780455, -5411659, -2782602, 12038256, 8127152, 987843, -2551211, 11258183, 1565516, 5359046, +4317516, 2508261, -2739652, 4835597, 1855963, 4788352, -9891847, -21233782, 54554676, -61572116, +-7256884, -32489816, 39528732, 10519986, 6854768, -15600395, 3576097, -12764643, 35408248, -6440304, +-2413235, 3483219, -1889249, -14062260, 5191005, 7916162, 10631655, -24158654, -12713103, -12523051, +4813585, -7431904, -6567005, -939524, -325881, 15575699, -8223789, 608812, 11800960, -1656247, +-15920370, 1815697, 12432320, -1676648, -25035902, 18469970, 2160906, 159988, -115964, -10717017, +8154533, -46359876, -32307280, -4689031, -11610907, 1905892, 3469260, -21818434, 33940444, -13663365, +46781856, -6808597, -16451872, 15842524, 2633352, 14117021, 21643950, 6678674, -22320946, -6376416, +25003152, 57920320, 1897302, -15064061, 24194624, 1894618, 28544352, 4420595, 38654704, -10185515, +-1569811, -1246614, 9017284, 1131187, 14847702, 26977764, 1602023, -5954436, -4858145, 8452496, +-7386807, -3381213, 17738752, 12758737, 1947231, -3525095, -6693170, -7726110, -4597763, -6324876, +12793634, -8129300, -5509370, 6118718, 2282238, -2649458, 5733245, 6300180, -3621194, 5371394, +9092983, -4925791, 605054, -13100187, 16269336, -304943, 13086228, 642098, -13634374, -142808, +1420560, 3353296, 1465658, -237834, -11712376, -11093364, -649077, -6555731, 8652748, 2924873, +-3998078, -645319, 6810208, 1146219, -3921842, 137976, 4938676, -195958, -2368675, -751082, +2681670, 80351856, 25131464, 9139690, -2240362, -8318815, -11217918, 26422102, 24250996, -27343910, +16669842, 12723841, 3097208, -8061117, -14415521, -37394668, -13876502, 12329240, 4161287, -11836930, +22991496, -7109782, 9448391, 9389872, -5262409, -5049271, 23982024, 903017, -8805220, 15106474, +-12701829, 29418916, -14054744, -8403104, -1357747, 11639361, 6260989, 29748554, -8840116, -17360794, +-6041945, 8062191, 2249489, 16061567, 4561256, 1652489, -6198712, 12992276, 55558624, 23785528, +-20343112, 18014704, -10565620, -16540993, 13873281, -355409, 4202089, -863825, 10056129, -14417668, +-22081500, -58877024, -15343234, 21326660, -7594576, -20062866, 9087077, -4504347, 9051644, -23460722, +-20538534, -9565966, 9123584, 9635759, 28421410, 5172751, -1772211, -21871048, -31028454, -3684545, +-13834090, 2924336, 11478837, -14694157, -15095736, -3098282, -18832894, -31596464, -10357851, -8251706, +-16782584, -3768297, 9658845, -8676371, -4465156, -10004589, -2159295, -22454090, -14210973, -14228690, +631360, 2297271, 8414378, -12471511, 7355132, -16887812, 940061, -9861782, -1078037, 5493800, +-5050345, 8233989, -22235582, -4257387, 7881265, 3402151, 7264401, -2654827, -5902896, 11204496, +-1951526, -2088965, 7911867, -11027865, -8689793, -1452773, 2347200, -14694157, -6856379, -7910793, +-4308389, -1058710, 34897, 1480690, -6493991, 891206, -1840394, -12930536, 17361868, -14618458, +48495548, 40635224, 18845780, -11605539, -17566954, 28929826, 24776592, -33342904, -7031399, -20583094, +27977954, -5190468, -40513352, -17898740, 13996225, 24742232, -46773804, 18258442, -32475322, 11531987, +-19296752, -5299453, 22060026, -7915625, 3113315, 13899051, 29504278, -19881940, -32994476, 6941741, +-2855080, 3177739, 30263414, 7309498, 22519050, -29265908, -5601174, 8879845, -26033944, 41718628, +-5176510, 24842628, -3781719, -6306086, 20442970, 20300700, -12151536, 45982456, -11106785, -20576652, +22134650, 39451960, 2026151, 6824166, 1702418, 17178796, -18972482, 13701483, 60260000, 27423366, +-2105608, 26020522, 32339494, -24509768, -74196632, 5208722, 44423920, 50040664, 13606993, -5257040, +-21989696, 25791278, 55530704, 25616796, 13409425, -54976656, 10133975, -31309238, -19425600, -48513804, +40754944, 8527121, -14257681, -19523848, 14241575, -14211510, 7653632, 5124433, 7129109, -18200460, +-3920768, -2573759, 9410273, -6497749, 7945153, 6688338, -8231842, -5599027, 11092290, 150861, +11921219, -5437966, 4380330, -8204462, 4187056, 22347788, 4204773, 3937411, -2941516, -24680492, +-12390981, -15350213, 8000451, 40784472, 38674568, 34717832, -2775086, -25749402, -24136106, -11750494, +16237124, 17886928, -1370632, -8728447, -13050795, -19236622, 5005785, 10362145, 8833137, 8056285, +6501507, -91805, 662499, -3671660, 3773129, -5313949, 3642132, -1408212, -781147, -191126, +4734665, 1115081, 2039573, 311922, 2244121, -4032438, 440234, -1891933, -607738, 34152508, +-67017596, 51501488, 10842645, -30612380, 617402, 28893318, -18913426, 1014149, 16102906, -19805704, +1886028, -17777406, -11236708, 19202262, -16137266, -9074192, -34091304, 15038291, 33469606, 9564355, +-14811195, -25224342, -3901441, 19298898, 10493679, -21518324, -421981, 26353920, -3310883, 1974611, +-8774618, -6212670, 61610768, -29314226, -7388418, -6670621, 10465762, 28731184, -30217780, -16860430, +40571336, -4608500, -2472828, -48237852, -39896488, 16906602, 27313308, 15017353, -49457624, 34127272, +-805306, -7444789, 7201050, -35306780, -9728101, -4467303, -17476758, 32009318, -24808804, -13706851, +-26686242, -15346455, -35217660, 10759430, -55111408, -15364172, 6534256, -27370216, 6847789, 15384573, +6765647, -300111, -9842991, -19753628, 29250874, -6251862, -2777770, -10419591, 17719962, 35504348, +5350993, -47785808, 4251481, -21246130, 3215857, 4501663, -8717173, 3408594, -14322105, -4777614, +-1206886, -10799158, 204548, -3052648, 8409546, 7552700, -2631741, 3830037, 15648713, -7024419, +-5649493, 16062641, -11660299, 10677826, -5677410, -5355824, 1145146, -6770479, -3335579, 9790378, +-19051938, 5764383, 4418985, 7085086, 13549011, -9540733, 1569274, 10203769, 3635690, -3437585, +-9048422, -1753957, -2246268, 266288, -9287867, 2789045, -1697049, -3736085, 2181844, 1238024, +-4356171, 9782862, -4249870, -2964601, 155156, 2586107, -443992, -38739532, 23372138, -799401, +30278982, -6342056, 31326954, 3840775, -4070019, 13940390, 36368708, 17342004, 9286256, 7170985, +4609037, 14215268, -18373870, -1606318, -13785234, -14563697, 22369800, 13811541, 8544837, -6579890, +-5655398, -2793876, 23409182, 3445101, -10389526, -17089138, -786516, -4159676, 17611514, 2523293, +14730664, 27520002, -7718593, -70289824, 4604205, 56820808, 5946382, -41978472, -5412733, 15924128, +12646531, 22207128, 20358144, -1849520, -13223131, -13747653, 17822504, -11030550, 1996623, 6038724, +-72815800, -12827457, -13999446, 11356430, 57235272, -1258962, 4600447, -13498545, 3893925, 11582453, +24015310, 12315819, -14185740, -7693897, -35348656, -2377265, 24312736, -10962367, -5039608, 8708583, +24701430, 19765440, -5314485, -25381646, 166430, 8919573, 2815351, -16957604, 2083059, 1763621, +-1242856, -14683956, -18665390, 15960635, 13358959, -949725, -2891050, -14379551, 11221676, 4344360, +2590939, 4063576, 3613678, 6192269, 471910, -15915538, 8796630, 139050, -913217, 600759, +4227322, 1683627, -2042257, -328028, 688805, -5432060, -2944200, -21919902, 3489124, 14962592, +-10640781, 5141076, -17397302, 9546102, 4666482, -2915746, -4731980, -2079838, -1606855, 1752884, +-3728032, 19725174, -2285460, -114974128, -216266096, -86909736, -146375712, -168225808, 104614128, 36575404, +96118680, 289042720, 189186864, 152665680, 228787008, 114221432, 7376607, 90491736, 22529788, -91556352, +-64340756, -72960760, -167657808, -136184288, -58856620, -121946472, -134399728, -55560772, -82726976, -138758576, +-71731856, 10737418, -87282864, -79863840, 17602386, -17298518, -79598096, 89179624, 58194124, -66844188, +66133908, 100366944, 15184857, 57383448, 201639056, 95770792, 60429116, 237221248, 166195904, 96238944, +233818560, 313495040, 194053072, 281115264, 364082240, 260193952, 172519168, 227442672, 119684632, -115854592, +-76347336, -153031296, -356576768, -357509312, -362166144, -546620480, -539802752, -542292224, -564992768, -533350656, +-518883040, -408425088, -326990368, -247233344, -101946416, 29992294, 79237312, 201849504, 350595488, 297107584, +398215424, 566326848, 475965600, 444584416, 541227072, 401013568, 205641968, 222919536, 209086528, 78510392, +55818468, 112277424, 41457708, -9803263, 37524056, 13407277, -78087336, -69707856, -42112692, -139520400, +-160383200, -69931728, -122039888, -167891344, -69459288, -44569412, -91621856, -1279900, 29465624, -30203284, +-4640176, -22274774, -128250408, -184597696, -207071648, -258466832, -304471840, -273139520, -249846832, -232501072, +-174679008, -111100600, -79272752, -14313515, 61551176, 95938832, 138836432, 228888464, 278005728, 324459552, +347487552, 329436352, 293428960, 224679408, 153418912, 85848344, 11886322, -14376866, -24871082, -40209484, +-45617920, -46239080, -53912040, -56945896, -51776368, -46379740, -51896628, -55413132, -53262428, -55683176, +-61290792, -58942520, -56664576, -44727252, -30185030, -23958938, -15392089, 850404, 6777996, 14328011, +30232274, 39797704, 41323492, 40657772, 31958314, 21353504, 12538083, -404801, -11883638, -17962090, +-29010356, -37242200, -40296456, -47302624, -49655192, -45314052, -42583528, -39825620, -33300492, -29113972, +-23296976, -16974784, -12474733, -6114960, -579821, 6496675, 10862509, 15374372, 20226612, 25370908, +28627568, 33884608, 39545376, 43643848, 45848776, 47496968, 48521320, 47852380, 46573016, 46170900, +41958072, 36586144, 29709900, 21926344, 14084808, 5937793, -3006477, -10468983, -18383534, -24939802, +-31581968, -37468220, -43444132, -45805828, -47371340, -46968688, -43336756, -39413840, -34636764, -27095874, +-19742890, -12797392, -4628364, 2423435, 7080254, 11267310, 14266271, 14582488, 13673028, 12974022, +11217918, 8858907, 7205345, 6215892, 4965519, 4001836, 3454764, 3042448, 2530273, 2335389, +2358474, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -6914898, --610959, 6533719, -5777805, 2272038, -9754408, 127775, -3511136, 3959960, -3275450, 920734, --2211371, -4068408, -1021665, -366683, 3001109, 3742527, -3497714, -6128382, 3254512, 1122060, -2284923, 1380295, 2579128, -3542811, -2644089, 659278, -647466, 3227668, 2342905, -2705830, --554588, 2463701, 4567161, 2809982, 67646, -3541201, 1946157, -593779, -1861868, 2518998, -1116155, -3252901, -2701535, -2203855, 1860795, -3187403, -1687922, 2703682, 1071594, -84826, --3316789, 1245004, -2847027, -7419556, 768799, -2519535, -4759361, 2211908, -1329292, -1360968, --1609002, 111669, 3689377, 2209761, 1267552, 1673964, 2794413, -5589900, 2951716, -2219961, --2112587, -1231582, 1894618, 361851, 3964792, 5720897, 2269353, 446677, 686658, -81604, -3693135, -1541356, -94489, 1789928, 166967, -1511292, -1511292, 521302, -2147, -1707250, --817118, 537408, -47782, -226023, -639413, -845572, 610422, 366146, 658204, -252329, -258235, -175557, -1540820, -613107, 766652, 1264868, -668404, -842350, 332323, 800475, -14845554, -1257352, 2717641, 3264712, -1525787, 1536525, 5910412, -4616553, -821949, 1688459, --2300492, -454730, 4339528, -1406602, -986232, -303869, 1677722, -832687, 2085744, -1470489, --1451162, -666794, -3379066, -5759015, -1092532, -1848447, -780073, 3389803, -6106907, 7496329, -37044, 129923, 249108, 1415192, -189515, -2881923, 444529, 2310693, 5648419, 282394, --50466, -861678, -1917166, 3761855, 1776506, -1373316, 2065342, -3745748, 629213, 1196685, --2845416, -9739375, -3059627, -242666, -583579, -462783, -868120, -1239635, -717260, -1850594, -2375654, 7178501, 4056060, 315680, -24159, -190589, 2497524, -1466195, -6556268, -224949, --3420405, 2146947, -3879429, 2189360, -9456981, -56908, -1357210, 3209951, 5135171, -786516, --1238024, 775242, -34360, 2769717, 1002875, 465467, 3734474, -2759517, -377420, 478352, -1327682, 8590, 1353989, 78383, 862215, 402116, -194347, 282394, -350040, -37581, -774168, 1194001, 129386, -323733, -478352, 159988, -219580, 678068, 469762, 332323, --235686, 128312, 440771, -13082470, -12614856, -4750771, -1873143, -1804423, 5369, 3184718, -755377, 2586107, -5927055, 2924336, 3684008, 3561602, 4175245, -3238942, 892816, 9836012, --6092411, -218506, -4342212, -6291054, -759136, -449898, 5444945, -2647311, 566399, -4699768, -3003793, 1877975, 2356327, -10531260, 1615982, -1927904, -3700651, -996432, -59593, -7813620, --5066451, -4364224, -359704, 6524592, 2255395, 2159832, 3127273, -2921652, 1837172, -2621541, -5571110, 8584029, -813359, -790811, 2432025, 599685, 2210835, 4823249, -2273112, 4990215, --790811, -154619, 2943663, 4041564, -1540283, -5841156, -5383205, 2074469, -744640, -1003949, --2378338, 2650532, -4484483, 1662152, 3343095, 5665599, -3305514, 5432597, 3536906, 1766305, -2703682, 655519, -931471, -3659849, 2592013, -1722282, -3429532, -4317516, 1778653, -1423245, -2590939, 457414, -1675574, -2014877, -1040993, 858993, -1078574, -379568, -1382980, -605054, --96100, 1328219, 683974, -42413, 756988, 2617783, -266825, 8053, 1514513, -825707, -415538, -575526, -462783, 753767, 1085016, 1108638, 693100, -15032, -359704, 818191, -372588, 1793149, 2129767, -1707786, -193810, 943819, 278099, -972273, 307090, 1227287, -1050120, -556735, 129923, 690953, -624918, -14268418, 6223408, -6368363, 11526082, -10666014, -8441221, 4320737, -4410932, -5521718, -3059627, 2227478, 2010045, -2965138, 6811282, -2401961, --6442988, -1284732, 7043210, 4842039, -7056632, 1171989, -854699, -7388418, -3042984, -4738423, --1083406, -5646809, -1478543, -2332167, -7801271, -2753074, 4010963, 5748814, -1068373, -6672769, --1324997, 4802311, -1429687, 209380, 357556, 151398, -6643778, -153545, -766115, -1648731, --280247, 1224603, -4748623, 2777233, -5086315, -66035, -1611, 152471, 3832185, 125091, --1732482, 1595044, 2667175, 6324876, 2900177, 1473711, -1785096, -3847754, -3636227, -1481227, --3974455, -2833068, 2396055, 4155918, -2990908, -5019206, -3430605, 1652489, 920197, -4705137, --1595044, 637803, -3956739, -1790465, 587874, 1269163, 1657321, -1798518, -2171106, -2987687, -150324, -326418, -1127429, 981937, -962610, -299574, -2275259, -473520, -740345, 2073396, -1038308, -784905, 1032940, -81068, 352187, -949188, 153008, -547608, -11274, -783832, --1502702, 1147830, -69256, -1431298, -882616, -104153, -1306744, -1525250, 1478006, -881005, -17473000, 6942278, -1186485, 3949223, -2825552, 9788767, 4129611, 17643726, 319975, -17097192, -4367445, 10349797, -6174553, 1804423, 7120519, -5494337, 5017596, -4456029, -977642, -5491653, --5233955, -1662152, 1438814, -577136, 2354179, -2359011, 7560216, -4536559, 2128693, 1388348, -4915053, -9037148, -4718022, -3568044, -1078574, -3204583, 840740, 5502927, 3922916, 8744553, --1291711, -657130, -4997732, -1646583, 5513128, -5397164, 4551592, -5049271, -2130304, 8027294, -11590506, 8309151, 1449015, -6126234, 4282620, 3184718, -3269544, 6749541, -4467303, 1328219, -1056025, -12343736, -119185, -11701102, -4720169, 1861868, -3106872, -5586679, -4780836, 972810, -8023536, 2001992, -3295851, -4082903, -3603478, 806380, 1290638, 3841848, -6099928, -5484137, -361851, -1059246, 351650, -1577327, -918049, -980326, -540092, 1822140, 457414, 836445, --806917, -1267015, -1251446, 359704, 3190624, 1069447, 2314451, 742493, -3690988, 2771865, -1230508, 506806, 524523, 1603633, -382789, 1382980, 255551, -31675, -1162326, -843424, --1600412, 470299, 1511829, -292058, -769873, -858457, -5232881, -583042, -656593, 180926, --839129, 10790032, 21914534, -9630390, -7174206, -1986959, -2647311, 7599945, -7382512, -13390097, --4689031, 872415, -3334505, 3768297, 1739462, 6583111, 2712809, -2719788, 9483825, 8898635, --4202626, 591632, -6239514, -1106491, 263604, -3855270, -813359, 6627135, 9516037, 326418, -1500554, 3888556, 2445447, 1485522, 576599, -3688303, -6972880, 737124, -9995463, 301185, -2195802, -3215857, 3811784, -2567854, -5564667, -483721, 5252208, 2305861, -2476586, 16137803, --133144, 5168993, -9725953, -2203318, 6526203, -3153043, -7225209, 4145180, -8452496, -7554311, -1619203, 9132711, -7607461, -4281009, -2311766, 328028, -3495567, -3444564, 12301860, 7195681, --1214939, 637803, -5927055, -4232154, -2466385, 3673808, 4806069, 377420, 3833795, 2488397, --891743, 3597035, -3449396, 12323872, 6915434, 1313723, 299037, 1091459, -2189897, -848793, --2180770, -2245731, -165893, -128312, -2104534, 1021129, -3125126, -957778, 2255932, -892816, -2313914, 1333587, 2182917, 51540, 1474248, 1758789, 1530619, 266825, 2608119, 849867, -272730, -2005750, 91805, -769336, -134218, 93416, 870268, -172336, 782758, -1911797, --187368, 739808, 931471, 1421097, 8759586, -15546708, -2042257, -11663521, -6615860, -10561325, --2643552, -1576790, -1535451, -4028143, 4805532, -14906221, 7755101, -5049808, 4639102, 2051384, -6308233, 401579, 2656974, -5979668, -2489471, 2844342, -5936182, -4309463, 7423851, 2077690, -3402688, 3003256, -678068, 2026688, 11019275, -3874597, 1130650, -4885526, 8878771, -5266704, --19470698, 6101538, 3157875, 8276939, 4531191, 11388106, -7575249, -2988224, 6931004, -2797634, --6462852, -3047279, 3649649, -9453760, 9477919, -282394, 6348499, -7974681, -3429532, -2865280, --8603893, -1722819, -6820408, -3103651, 830539, 10062035, 8159364, -862215, -12183748, -6953015, --2163053, 9773735, 8144332, 5907191, 5520644, -3400004, -14114873, -3590056, -315143, 3375844, --4387846, -1351841, 7375533, -1344325, 8699993, 154082, 6059662, 2324651, 390842, -2150168, --123480, 3285650, 971200, -1465121, 402653, -3884261, -566399, -183610, -5146445, -3105261, --3249680, -1597728, 1147830, -2072322, 962073, -2792803, -256624, -789737, -1423782, 2340757, -1227824, -447750, -3461744, -1349694, 1544041, 2382096, 157840, -3442953, -1724429, 825171, -1913945, 530965, 988379, 299574, -1717450, -20419348, -24676198, -13923747, 10191957, 864362, --4564477, -5191542, -7848516, -789200, 2730526, -13745506, -1265942, 8759586, -5269925, -3739843, -9787694, 2608119, -6359236, 2500745, -6150930, 14484777, -4602595, -3386582, 4733054, -7463043, --4643934, -4358318, 2508798, -5168993, -1886028, 2463164, 1812476, -16908212, 7650948, 7432441, --4811974, 13172128, 5119064, 1297617, 12664785, 7231651, 2325188, 1809255, 13689671, -1311039, --2240899, -871878, 8446053, 4725001, -12250320, 4826470, 3950833, -46171, -6481643, -19859928, -8873939, -1265942, -4809290, -12439299, -6949794, 7712151, -1529545, -3593277, -8211978, -16146930, -1742683, -2199560, -8485782, -3576097, -15196131, -2404645, -3329137, -2852932, -541703, 5531918, -11868605, 5080410, -3814468, -8363912, 3379603, 630286, 5023501, 3126199, -1774895, 3623879, -1430761, -347355, -4431333, 459025, -7290170, -404264, -1503775, 1270774, -2738042, 3542274, -2195802, -780610, -478889, -669478, 636729, -1644973, -299037, 2051921, -663572, -702227, -3968550, -1474784, -846109, 3111704, -2229625, 1892470, -6067178, -4002910, -2141578, -3267933, --192737, -3248069, -4226248, -3230889, -780610, -650151, 1619203, -131533, -2525441, 1571421, -726386, -1401233, -21228950, 16979080, 898185, 8653822, -1613834, -758599, 1542430, 9356586, -870805, -1214939, -12851616, 4510253, -1465658, -9922985, 2521146, -6495601, -5028333, 18306762, -5150203, 5614059, -4023848, 6538014, 7864622, 7636989, -4516695, 6666326, 3405909, -7747048, -4962298, -7532836, -2664490, 4777614, 2202781, -795106, -4239670, -3932043, 12125766, -3562675, --5430986, -3440806, 2417530, 2641942, -5904507, -9847286, -793495, -10563472, -1323924, -9523016, --3671123, -2262374, 1793686, -4852240, -8320963, 10411538, -4383014, -11463805, 7253663, 12240657, --6003828, -3915937, 6114423, 4503273, 12052215, 7854959, 1149978, -106300, -12548821, 3024731, -11872363, 9626632, -8567923, 9180493, 9841381, -6618008, -18600966, -5954436, -16669842, 2811056, -9436043, 4823249, 1069447, -4955319, -6794102, -721555, 791885, 2908767, -1599339, 5457293, --2517925, -1881196, 2043868, 5779952, -8544837, -1091459, -1156957, -2545305, -25233, 2347737, --559956, -229244, -1421097, -128849, -1435593, 512175, -194884, -141734, 719944, 3045132, --2692408, -1454383, 1631014, 1975685, 6231998, -568009, 2554969, 2543695, -2806761, 2306398, -928787, -2319819, 532039, 988379, 657667, 2624762, 5426155, 1236414, -1939178, 3754875, --1239635, -1997160, 226560, -3512210, -1607928, -186831, 106837, 3991635, -33833068, 16094316, -4501663, -1666447, 22688702, -1423245, 11446625, -10254771, -2460480, 1718524, 68183, 12937515, -8200703, -17751100, 10960757, 755914, 6551436, -15996606, -697395, 9122511, -15702937, 19476602, -5222144, -286689, -7061463, 1091459, 8393440, -14097693, 1217086, 3504157, 2403571, -8722542, --3278134, 8102456, 4552129, -957241, 1140314, -5763846, -9802726, 3946001, -16519518, -759672, -23477902, 22917946, -7439420, 2772402, -1090922, 6504191, 16469589, 1314797, 7834021, 2550137, --8779450, -732829, -1746978, -25058450, -11370389, 15381352, 622770, 4687420, -6125697, -1612760, -5404680, 7405598, -776315, 19162534, 181462, 14929306, 1772211, 3084860, 1862405, -9905268, --12442520, 15120432, 3421478, -8009041, 10930692, -9118752, 717260, 9254044, 1410360, -2471217, -4243428, -4090956, -3955128, 4592394, 6301791, 376347, -8703751, -4218195, -9369471, -3389266, -2180233, 2901787, 1382980, -3664681, -1794223, -6743636, 4696547, -159988, -2807298, -1299228, -1906429, 1040993, 5848672, 5265630, 3340948, 3397319, 1057099, 4168266, -2970507, 1878511, -2153389, 2099702, -2612951, 4213900, 2132988, -709207, -904628, -1185948, -1194001, -2026151, --4821101, -1427540, -204548, -1952600, -3566970, 11307038, -24597814, 9886478, 15495705, -2140504, -4605816, 6979859, -3767223, -2374580, 9557376, -3593814, 14504641, -13804025, 7539815, 17954038, --19239306, 791885, -9157944, 11348377, 4768488, 9416179, -9745818, -7582228, -129386, 24267102, -260382, 12288975, -5462662, 765578, -1691143, -2130304, -10786810, -390305, -3045132, 4966593, --4832375, -6953552, -5892695, -415001, -2072859, 10985989, 1853815, -6024229, -5524939, -5542119, --2073932, -2621004, 17847736, 816044, 8945880, 653372, -4332012, -3873524, 14834280, 11137387, --4321274, -13968307, 7872675, 5487895, -30929134, 1840394, 17385490, 17045114, 3920232, 13565654, --18680424, 30586610, 2633352, 5896990, 5994164, 14621142, -1190780, -13001940, -4019016, -15370077, -17507360, -7702487, -5254356, 15382962, -511638, -5963562, -4716948, -11457899, 10863583, -18741090, --2816962, 1880122, -517007, 2748779, -3959423, -8000451, -5199058, 2585034, 2009508, -3738769, -919123, -3560528, -3987877, -2816425, 3394635, 1890859, -4520990, 4238596, 779537, -5337571, -2394981, -904091, -1973001, -4048007, -4763656, 984084, 2218351, 9831180, -4333622, 5863167, -640487, -1845225, -767725, -1049583, -2635499, 1589675, -345208, -2798708, -1041530, -1905355, -711891, 2081449, 1520955, -4003447, 9460739, -18210662, -14552960, 13073880, 11008538, 26833882, --9422621, -7057705, -4738423, 5083631, -11339787, -1340567, 4486630, -770410, 14440217, 9308268, --11501386, 1071058, 3408594, 8351027, -13103945, 13823352, -200253, 6138045, -2298344, -6270653, --13748190, 4888747, -2357400, -5791227, 2801929, -8436390, -8193724, -1825898, 4350265, 16737488, --24860344, -15040975, -13397077, -15065672, -4252018, 17353278, -10228465, -461172, 17093432, -2493766, --7675644, -14788646, -3973382, -6366752, -30588220, -23749558, -6685654, 5375152, -2905546, 5358509, --6781754, -4895189, 14553497, 8782671, -15289547, -7901666, -17114908, -6807523, 1418950, 6856379, --3055869, 1836099, -14603426, -11694659, -10662793, -300648, 2506650, 921271, -13822279, 451508, -18615462, 8027294, 21248276, -16732119, 25966298, 2296734, -16131897, -2685428, 750546, 4553739, --2703682, 7066832, -9865003, 4683125, -8738111, 4122095, 5975910, -1886028, 13293998, -1114007, -3138011, -3587908, -4801774, -2711735, 384936, 3002182, -5082020, -907312, 1706176, -1133335, -5107253, -1531693, -2557116, -8586176, 3794604, 548682, 4491999, 1909650, -2880849, -8078834, -2603287, -10327249, 2619393, -2683818, -430570, 1102196, -2224793, 818191, 1621887, 7178501, -2803003, -3099356, -13096966, 2528662, -1422708, 30231202, 3311957, 14570677, -12584791, -8538395, --3084324, -14206678, -9025337, -13719736, -6382859, -8880919, 16401943, 4147865, 4145180, 16924318, --442919, -932008, 7638600, 15236396, 23772644, 17416092, -3565360, -6410776, -27364848, 7586523, -8582955, 3386045, -17064442, 19781008, 7872138, 11644730, -3234647, 1151051, 11214696, 24704116, -24004036, 13900125, 2904472, 25688200, 664646, -7587060, 8319352, 15606301, 12625593, 23118736, -12178380, 585726, 2774549, -13838385, 6031208, -34692060, -5961952, -3416110, 7707319, 27407260, -15374372, 4111358, 19853486, -14337675, -13078175, 2895345, -33749852, -7977902, 1388885, 6562710, -7813620, 9016747, -2033130, 14905684, 1849520, 7755637, 27345520, -16743393, -8761196, -4555350, -5207111, -3107946, -25820806, -4776004, 17596482, -1175747, 22318260, -11878806, 605590, 9345312, --2172717, 2701535, -9329743, -4452808, -7247221, -4712116, -8040716, -6472516, 1729798, 1495186, --16121697, -7364795, -9092983, -2304787, 2944737, 4987531, -7206419, -176631, 2126009, -11206643, -1656247, -4432943, -7456063, -3763465, 542777, 2898029, -5129802, -1158031, -7829726, -485331, --2132988, -2400887, -5727876, -8209830, 2060511, 2901787, -4601521, -3033321, -3395709, -2396592, -1453310, 5651103, 1492501, 1888712, -1818382, -23300734, -7351911, 4222490, 17595944, 32337346, --13018046, 560493, 5331665, -5941551, 29965450, 5306969, -14786499, 26261578, -5434744, -8822400, -18785114, -17069810, -9997610, 1141388, 1628330, 2335925, 12295954, 6583111, 9974525, -3064459, -5280663, 15056008, 897111, 10264435, 1861332, 391379, 16617228, -21737904, -7924215, -7374459, -14458471, -11083163, -2908230, -6531035, 14316737, -6091338, 31884764, 23337242, -21777632, 10652056, --26162256, 3748433, 9404905, 5083631, 5610838, -33301028, -6500433, -32116692, 4219806, 2649458, -3874597, -5072357, -5865315, 15362024, -27780922, 9539122, -12055973, -52245056, -19610820, -17099338, -8549669, -7610145, 7898982, 26150446, 27827094, 15793132, 14615774, 13616120, 3906810, -20774220, -21758842, 37581, -24186572, -19201726, -30383672, -40170828, -20776368, -4066797, 32071058, 11582453, -1895691, 12309376, -9877351, -230854, 6117644, 5134097, -2651606, 4706748, 1455457, 3263638, -1279363, -9936944, 7945690, 5317170, 3866544, 1589675, -5262946, 2812667, -7791608, -2764348, --12065100, 9977746, 7466264, -1660005, 1013075, 7978439, 12612171, -5723044, -12460237, -3770445, -10001368, -2255395, -7473243, 10754061, -1015760, -6279779, 7349226, 2959233, 399969, -1876901, --363462, -5344013, 3543348, -3423626, -1617592, 8269423, -41307920, -19126564, -14265197, 7780334, --31483184, 11448772, -18772766, 27026618, -31308700, -39730060, -8513699, -5612449, 31379032, 15400679, -14041859, -7887171, 3761318, -19186156, -15416785, 3752728, 6672769, -24766928, -23051090, -16102906, --1952063, 12706124, 9161165, -17343614, -21948356, -12645994, -12910672, -29764660, -17157320, 13395466, --8213051, -35433, -4000225, 9876277, 15551540, -3898220, -44693428, 19079318, 37609416, 14146549, --694174, -44800804, -10598369, 19793356, -5462125, 50438484, -5228586, -40345848, 6830609, -6653978, -3501472, 1293322, -7956964, 11058467, 13623099, -42571716, -11261404, 2527052, 15302432, -7764227, --21618718, 19585588, 2110440, -14317810, -42436960, -49234284, -25267292, -2974802, 3824132, 39770324, -56098180, 28998008, 22124988, 9772661, -32233192, 12034498, 60666, -16757889, -4657892, -53228604, --11024644, -143881, 645319, 2096481, 23553600, 8963597, 7202660, -9374840, -2816962, 20468204, --13543106, -8053, -580894, 4146791, -9977746, -16631187, -18587544, 8596377, -8523363, -2840047, -11320997, 639413, 2073396, -14135811, 5158256, 4898947, 2790118, -11582990, -5694053, -7538205, --12132209, 1939178, -6910066, 13662828, 5561446, -8862128, 2058363, -3100967, 9567040, -12282533, --1331977, -251792, 6900939, 6222334, 3368865, 7463580, 233002, 4238059, 3481608, 75240848, -69099048, -29091960, 35857072, 31799938, -8902393, -5312875, -16469052, -8854075, -19366544, -13554380, -57309896, -3044058, 33389076, 481573, 1631014, 524523, -22610856, 5477694, 4683662, -49612240, -7399692, 12128451, -26157962, -5370857, -8072391, -3466576, 7343321, -1379758, 1501091, 21998286, -8859444, -10542534, 6728067, 35012036, 555661, 16201690, -885300, 13248363, -19267224, -23102092, --13036836, -42518028, 11378442, 4921496, -18997178, -51681880, -33903400, -48300664, 35256312, -24996172, -5461588, 8914741, 7969312, 6914361, 37616936, -36055712, 155693, -20118700, 39816496, -89248344, -18292802, 7126425, 28550258, 26262652, 66035, -8023536, -13758928, -3715147, -26066156, 19335406, -52617644, -3752191, 10799158, 33535642, -23308250, 13495324, 16130287, -28971166, -20378546, -53961432, -44858784, -8415452, -39687108, 26895086, -6752763, 17695802, -1317481, 15396384, 2449742, -11265162, -18500572, 18221936, 2774012, 10617159, 16808354, 10481868, -11517492, -4461934, -11254962, -4473746, -14136885, 27779312, -1343788, -4579509, -1273458, 18029736, -27825482, 16367583, -7669738, 37486476, -7158637, -21471616, -4646081, 16960288, -8765491, -10976863, -8806830, -6078990, -8660802, 9615358, -6226629, 24271398, -19931870, 1885491, -2436320, 13610214, 689879, -955093, 7534447, 10077604, -7059316, 16152298, 1800128, 18536542, 9991168, -249645, -26069914, -24720758, 30581778, -62266824, -42949136, -25680146, -17935246, -11290932, 3926137, -18034030, -14020921, 19519552, -5977521, -42599632, -14712410, -2621541, 7556995, -9605157, 37884832, -30912490, 1335198, 15698105, -10705743, 11883638, --25191594, 2052458, -21672942, -11014981, 23616414, 3001645, 9477382, -13434121, 22830972, -6599218, --10620917, 8716099, -13944148, -11660299, -7440494, -7720741, -23526758, -31578748, -8756365, 17470316, -300111, -9916006, -31471372, 1171452, -24870544, -1703491, 10047539, -24678882, -6041945, 18080738, -18429168, 13310104, -30550640, -14534169, 21090436, 6792491, -572304, 16999480, -100317016, -23293756, --11173894, -45668924, 4498978, 12429635, -2665027, 8309688, 21519934, -12511777, -21322366, 5318244, --19360638, -5992553, 20884278, 32989106, -12567611, -40137008, -24138790, 2434173, -21347062, 3168612, --16566763, -15809238, 4151086, -32231582, 361851, -20199232, -6167036, -11173894, 4460861, 7870528, --3210488, -20089710, 4356171, -1571421, -12566537, 15256261, -698469, -14906221, -5086315, -4130685, --5574868, -10450192, 5437429, -9587441, 7522635, 10164040, -4205310, 849867, -6238440, -14239427, --19675782, 3110630, 2530273, 8676908, -22775674, 4338454, -177167, -15096273, 11198590, -6528887, -7987566, 17965312, -41304700, 7818451, 5698885, 11417634, -6949794, -4749697, 13501767, -1441498, -999654, 67515816, -8414378, -18512920, 2677912, -7360500, 33494302, 6432251, -2726231, 31854698, -32259500, 10717554, 12534862, 17797270, -39561480, -21769042, 32964410, -4337917, -32472638, -16313360, --14704357, 22587770, 12075837, -11783243, -46945068, 14778982, 7421704, 6403260, 7757785, -5500780, -4805532, -35079684, 31550830, 22060026, 11651709, -17486960, -14979772, 108985, 15795816, -3273302, -16420734, 7332046, -37170796, -16356309, 5878200, -37244344, 2218351, 7337952, -32932198, -46206868, --6504728, 14190572, -26980448, -56141128, -24686936, -14554034, 36550172, -22014928, 41244572, -8301635, -1918777, 17845052, 2391760, -62909996, -4233764, 2859375, 29459718, -55954832, -77683072, 5861557, --5104569, -49247704, 27888834, 13408351, -1906429, 96637, 45638860, -65133180, 53613004, 11624329, -7116761, 22050898, -23616952, -21037286, -4164508, 10450729, -13475997, -666794, 27469538, -23029614, --18815178, 24709484, -13887240, -6521908, 10116795, 7074885, -27434104, 14287746, -9264781, -2106145, -9550934, 9885404, -29234232, -4334159, -22764938, 13082470, 17495012, 1593970, -37595996, 26966490, --6634651, -147103, 15880105, -3566434, -13810467, -1989644, 21016886, -31448824, 21638046, 1693291, --2609193, 8537321, 4005594, -19449760, 8997956, 454193, 682363, -25480968, 17649094, -16473347, -19493246, 3552475, -24140400, 2580202, 2683281, -6205154, 11002096, 2648384, 30775052, 11538967, -73584600, -31986768, -33311766, -14300094, -2018098, 69823824, -10501195, 57686780, -41697688, -16901234, -24049670, -45417132, -15395847, -42787000, 6266894, 41865732, -59332824, -22318798, -5665062, 16976932, --1111323, 5702106, 15650324, -4975183, -37813964, -35203700, 1136019, 23432268, 64639256, -15332496, -17110612, -19621022, 31625992, 231928, 3200288, -9887015, -39060580, 402653, 34947076, -6975564, --2629594, -14128832, -34130496, 43350180, 16300475, 28624346, 38987564, -2834142, 1792612, 23646480, --63666984, 20924544, -32399086, 73843912, -7568806, 6453725, 10714870, -22714472, -22517976, 6600828, --32287954, 46512884, -28224378, -35869420, -35850092, 48668420, 16332150, 27807228, -6874095, 27773406, -28631326, -30646202, -9054865, -28497644, -15008763, 50731080, 36125508, 3892851, 9548249, -79189536, -53160420, 69468952, 7621420, -6622303, -13851806, -42946452, 60323888, -4488241, 3637301, -12913356, -1287953, -27477054, 56438016, -14547591, 27268210, 3467112, -10346039, -4279935, 54352812, -31264678, -26549340, 8038032, -23727546, 2246805, -7939247, 14141180, 3902515, 21219286, -9699647, 1342714, -3736622, -1243393, 21551072, 36678484, -12057584, -2914672, 3867618, 19692962, 5480915, -29970282, --19866372, 39767104, 7514582, 18981608, -40438728, -49093088, 43976708, 28455768, 13431436, -4446902, --37666864, -1839857, 33430952, 9824201, 1459752, -3656091, -6631967, 5748814, 4498442, 6989523, --5551782, 3664681, 7174743, 4686346, -3106872, 1026497, 1371168, 6929393, 17611514, 6583648, --55529632, 37969660, -39504036, 4795331, -18224084, 14663555, -1572495, 20898238, -3406983, -18044768, -31062814, -10899553, -4413079, 4820564, -13128641, -11310796, 35850092, -8429410, -5013301, -4152697, --1930588, 16543140, -12660490, 3949759, -9295383, 8302172, -8134668, -6040335, -19380504, 28268402, --17524004, 9438728, 4397510, 19624242, -22065932, 5013838, -9106404, 22260278, 2767033, 1877975, -17379048, 5345087, -29203094, -4167192, -5140002, 8205535, 12553653, 10772852, -26581552, 11455215, --20128902, 14260902, -11557757, 3156801, -6717329, 14092861, -5648956, 4205310, -29748554, 7157026, -14142254, -13360570, 13215077, 2021319, 4718022, 8561480, -12139188, 20618528, 7828115, -944356, --6665253, 10133438, -6467147, 18741626, -15760919, -4404489, -15019501, 19412178, -19246822, 17660906, --16095390, 21432960, -18301392, 11362873, -18053896, 15845208, -1508070, 1886028, -5436892, 1116155, --3395172, -2457795, -5771363, 9554155, 3318399, -975494, 2721936, -2516851, -5320391, 9618042, -1102196, 3856344, -6350646, 709207, 8949638, -10371272, -2965675, 6582038, -219580, -2837363, --7269232, 17219060, -5706938, -8114804, 4001299, 1906429, -3069291, 2194192, -1372779, 2047626, --3283503, 2833605, -5391795, 8690329, -7283728, 9965935, 3722663, -6702297, 2074469, -1003949, -604517, -407485, 4083977, 464930, -3260954, 2867965, -3521873, -23032836, 46790984, 3981972, -5957120, -18597208, -13677860, -29577292, 19966230, -8242042, -5976447, -12811351, -428423, -11414412, --1353989, -1443109, 5288716, 5903433, -840740, -1307281, -8359080, 7930657, 7417946, -6922414, -3367254, -15806553, 6397354, 3154654, -2711198, -2398739, -5230734, 5122286, 1181116, -11239393, --2970507, -3250753, -9316321, 15455440, 1680943, -9767829, 1570347, -3790309, 13476534, -4589710, --6205154, 2663417, -7935489, 15715285, 517007, -8592619, 2544231, -3465502, 7721278, -9810242, --1892470, 3318399, -3522410, 6939057, -3850438, 2053531, 3185255, -8843338, 1312113, 8912594, --13464186, -826781, 4170950, -12495670, 22943178, -20868172, 10513006, 3847217, -11890617, 23715198, --16027744, 3859565, 3084324, -9941239, 7863012, -4024921, -7653095, 7607461, -9130564, 6044630, --4160213, -3053722, 6863358, -5593658, 2251100, -2230699, -3221, 1389959, -3027952, 1516660, --105764, -2954401, 6491843, -5406827, 4854387, 243203, -4432406, 4462471, -7868917, -699543, -2152852, -1240172, -1031866, 1185948, -4062502, 5120138, -2502355, -1730335, 597537, 592169, --3157875, -419296, -1800665, 1815161, 2594697, -3561065, 3224984, -3396246, -617402, 3419331, --2448668, 10912438, -50017580, -115480400, 30313342, 106902808, 90390272, 121278600, -59773060, -77473696, --116496696, -119083336, 8209293, 88786104, 98046584, 107383848, 35735740, -23368380, -85169736, -141049408, --77248208, 35879084, 55619828, 94067840, 71339944, 19478750, -12603045, -29717952, -70616240, -45784888, --43523052, -7991324, 37272800, 57067232, 30090004, 38094748, 19321448, -21476448, -3297998, -45917496, --63851132, -10945724, -14848776, 11258720, 60349660, 34729104, 29989072, 8827232, -22520124, -23269060, --19972672, -33112050, -8603356, 1449015, 14264660, 17296908, 28907278, 8201240, -943282, -14581414, --26775900, -2319819, 9740449, 9897752, 16986058, -4338454, -13405667, -6497749, -13421773, -10620917, -2956011, 7577933, 21742198, 18338436, 17631378, 986232, -9338333, -35228396, -32640140, -13368623, -2181307, 27158688, 29251948, 11998528, 12454331, -1420024, -23435490, -14434848, -1609539, -5552856, -1353452, 2436320, 5747740, 4683662, -2949032, -7722351, 4635344, 7045357, 5909875, 6000070, --455803, -4470524, -2658048, -11990475, -4819490, -6641093, -11135240, 6594386, 16412144, 18976776, -6403260, 6808060, -3605625, -4509716, -16949014, -25388626, -9667435, 2836826, 8017630, 9776419, -20874614, 19251654, 9467719, -7726646, -16153909, -18402324, -17064442, -12763569, -759672, 15333570, -23947128, 18835042, 5586679, -9067213, -10700374, -10858214, -6147172, -4194036, -4590247, 4595078, -11019812, 7967701, 1839857, -1497870, -746251, -2891050, -3097208, -4609574, -1896228, 2537789, -2284923, 1255741, 1578401, 1206349, 1132798, -2383170, -2913599, -942745, 1337346, 981937, -406948, 405874, 486942, -950262, -707059, -392990, 235686, 255014, 717796, 611496, -458488, -226560, -814433, -1455457, -126702, 246424, 128312, 375810, 1008244, 306016, -312996, 819265, 107911, -2259153, -1759326, -574989, 489626, 965831, 1487132, 491774, -172872, -100395, -37581, -596464, -501974, -308164, -151398, -493921, -73014, 44023, -466004, 667331, 784905, 386547, 340376, -267899, -661962, -1149441, -758062, -419296, -221728, 833761, 1273458, 831076, 170725, -435402, -548682, -841814, -622770, -64425, -352724, 328565, 312459, 92342, 56908, -45097, 2147, -67646, -55835, -78383, -6979, -20401, -32749, -75699, 4832, 40802, 45634, 24159, 37044, -6442, --17180, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-610959, 6533719, -5777805, 2272038, -9754408, 127775, -3511136, 3959960, -3275450, 920734, +-2211371, -4068408, -1021665, -366683, 3001109, 3742527, -3497714, -6128382, 3254512, 1122060, +2284923, 1380295, 2579128, -3542811, -2644089, 659278, -647466, 3227668, 2342905, -2705830, +-554588, 2463701, 4567161, 2809982, 67646, -3541201, 1946157, -593779, -1861868, 2518998, +1116155, -3252901, -2701535, -2203855, 1860795, -3187403, -1687922, 2703682, 1071594, -84826, +-3316789, 1245004, -2847027, -7419556, 768799, -2519535, -4759361, 2211908, -1329292, -1360968, +-1609002, 111669, 3689377, 2209761, 1267552, 1673964, 2794413, -5589900, 2951716, -2219961, +-2112587, -1231582, 1894618, 361851, 3964792, 5720897, 2269353, 446677, 686658, -81604, +3693135, -1541356, -94489, 1789928, 166967, -1511292, -1511292, 521302, -2147, -1707250, +-817118, 537408, -47782, -226023, -639413, -845572, 610422, 366146, 658204, -252329, +258235, -175557, -1540820, -613107, 766652, 1264868, -668404, -842350, 332323, 800475, +14845554, -1257352, 2717641, 3264712, -1525787, 1536525, 5910412, -4616553, -821949, 1688459, +-2300492, -454730, 4339528, -1406602, -986232, -303869, 1677722, -832687, 2085744, -1470489, +-1451162, -666794, -3379066, -5759015, -1092532, -1848447, -780073, 3389803, -6106907, 7496329, +37044, 129923, 249108, 1415192, -189515, -2881923, 444529, 2310693, 5648419, 282394, +-50466, -861678, -1917166, 3761855, 1776506, -1373316, 2065342, -3745748, 629213, 1196685, +-2845416, -9739375, -3059627, -242666, -583579, -462783, -868120, -1239635, -717260, -1850594, +2375654, 7178501, 4056060, 315680, -24159, -190589, 2497524, -1466195, -6556268, -224949, +-3420405, 2146947, -3879429, 2189360, -9456981, -56908, -1357210, 3209951, 5135171, -786516, +-1238024, 775242, -34360, 2769717, 1002875, 465467, 3734474, -2759517, -377420, 478352, +1327682, 8590, 1353989, 78383, 862215, 402116, -194347, 282394, -350040, -37581, +774168, 1194001, 129386, -323733, -478352, 159988, -219580, 678068, 469762, 332323, +-235686, 128312, 440771, -13082470, -12614856, -4750771, -1873143, -1804423, 5369, 3184718, +755377, 2586107, -5927055, 2924336, 3684008, 3561602, 4175245, -3238942, 892816, 9836012, +-6092411, -218506, -4342212, -6291054, -759136, -449898, 5444945, -2647311, 566399, -4699768, +3003793, 1877975, 2356327, -10531260, 1615982, -1927904, -3700651, -996432, -59593, -7813620, +-5066451, -4364224, -359704, 6524592, 2255395, 2159832, 3127273, -2921652, 1837172, -2621541, +5571110, 8584029, -813359, -790811, 2432025, 599685, 2210835, 4823249, -2273112, 4990215, +-790811, -154619, 2943663, 4041564, -1540283, -5841156, -5383205, 2074469, -744640, -1003949, +-2378338, 2650532, -4484483, 1662152, 3343095, 5665599, -3305514, 5432597, 3536906, 1766305, +2703682, 655519, -931471, -3659849, 2592013, -1722282, -3429532, -4317516, 1778653, -1423245, +2590939, 457414, -1675574, -2014877, -1040993, 858993, -1078574, -379568, -1382980, -605054, +-96100, 1328219, 683974, -42413, 756988, 2617783, -266825, 8053, 1514513, -825707, +415538, -575526, -462783, 753767, 1085016, 1108638, 693100, -15032, -359704, 818191, +372588, 1793149, 2129767, -1707786, -193810, 943819, 278099, -972273, 307090, 1227287, +1050120, -556735, 129923, 690953, -624918, -14268418, 6223408, -6368363, 11526082, -10666014, +8441221, 4320737, -4410932, -5521718, -3059627, 2227478, 2010045, -2965138, 6811282, -2401961, +-6442988, -1284732, 7043210, 4842039, -7056632, 1171989, -854699, -7388418, -3042984, -4738423, +-1083406, -5646809, -1478543, -2332167, -7801271, -2753074, 4010963, 5748814, -1068373, -6672769, +-1324997, 4802311, -1429687, 209380, 357556, 151398, -6643778, -153545, -766115, -1648731, +-280247, 1224603, -4748623, 2777233, -5086315, -66035, -1611, 152471, 3832185, 125091, +-1732482, 1595044, 2667175, 6324876, 2900177, 1473711, -1785096, -3847754, -3636227, -1481227, +-3974455, -2833068, 2396055, 4155918, -2990908, -5019206, -3430605, 1652489, 920197, -4705137, +-1595044, 637803, -3956739, -1790465, 587874, 1269163, 1657321, -1798518, -2171106, -2987687, +150324, -326418, -1127429, 981937, -962610, -299574, -2275259, -473520, -740345, 2073396, +1038308, -784905, 1032940, -81068, 352187, -949188, 153008, -547608, -11274, -783832, +-1502702, 1147830, -69256, -1431298, -882616, -104153, -1306744, -1525250, 1478006, -881005, +17473000, 6942278, -1186485, 3949223, -2825552, 9788767, 4129611, 17643726, 319975, -17097192, +4367445, 10349797, -6174553, 1804423, 7120519, -5494337, 5017596, -4456029, -977642, -5491653, +-5233955, -1662152, 1438814, -577136, 2354179, -2359011, 7560216, -4536559, 2128693, 1388348, +4915053, -9037148, -4718022, -3568044, -1078574, -3204583, 840740, 5502927, 3922916, 8744553, +-1291711, -657130, -4997732, -1646583, 5513128, -5397164, 4551592, -5049271, -2130304, 8027294, +11590506, 8309151, 1449015, -6126234, 4282620, 3184718, -3269544, 6749541, -4467303, 1328219, +1056025, -12343736, -119185, -11701102, -4720169, 1861868, -3106872, -5586679, -4780836, 972810, +8023536, 2001992, -3295851, -4082903, -3603478, 806380, 1290638, 3841848, -6099928, -5484137, +361851, -1059246, 351650, -1577327, -918049, -980326, -540092, 1822140, 457414, 836445, +-806917, -1267015, -1251446, 359704, 3190624, 1069447, 2314451, 742493, -3690988, 2771865, +1230508, 506806, 524523, 1603633, -382789, 1382980, 255551, -31675, -1162326, -843424, +-1600412, 470299, 1511829, -292058, -769873, -858457, -5232881, -583042, -656593, 180926, +-839129, 10790032, 21914534, -9630390, -7174206, -1986959, -2647311, 7599945, -7382512, -13390097, +-4689031, 872415, -3334505, 3768297, 1739462, 6583111, 2712809, -2719788, 9483825, 8898635, +-4202626, 591632, -6239514, -1106491, 263604, -3855270, -813359, 6627135, 9516037, 326418, +1500554, 3888556, 2445447, 1485522, 576599, -3688303, -6972880, 737124, -9995463, 301185, +2195802, -3215857, 3811784, -2567854, -5564667, -483721, 5252208, 2305861, -2476586, 16137803, +-133144, 5168993, -9725953, -2203318, 6526203, -3153043, -7225209, 4145180, -8452496, -7554311, +1619203, 9132711, -7607461, -4281009, -2311766, 328028, -3495567, -3444564, 12301860, 7195681, +-1214939, 637803, -5927055, -4232154, -2466385, 3673808, 4806069, 377420, 3833795, 2488397, +-891743, 3597035, -3449396, 12323872, 6915434, 1313723, 299037, 1091459, -2189897, -848793, +-2180770, -2245731, -165893, -128312, -2104534, 1021129, -3125126, -957778, 2255932, -892816, +2313914, 1333587, 2182917, 51540, 1474248, 1758789, 1530619, 266825, 2608119, 849867, +272730, -2005750, 91805, -769336, -134218, 93416, 870268, -172336, 782758, -1911797, +-187368, 739808, 931471, 1421097, 8759586, -15546708, -2042257, -11663521, -6615860, -10561325, +-2643552, -1576790, -1535451, -4028143, 4805532, -14906221, 7755101, -5049808, 4639102, 2051384, +6308233, 401579, 2656974, -5979668, -2489471, 2844342, -5936182, -4309463, 7423851, 2077690, +3402688, 3003256, -678068, 2026688, 11019275, -3874597, 1130650, -4885526, 8878771, -5266704, +-19470698, 6101538, 3157875, 8276939, 4531191, 11388106, -7575249, -2988224, 6931004, -2797634, +-6462852, -3047279, 3649649, -9453760, 9477919, -282394, 6348499, -7974681, -3429532, -2865280, +-8603893, -1722819, -6820408, -3103651, 830539, 10062035, 8159364, -862215, -12183748, -6953015, +-2163053, 9773735, 8144332, 5907191, 5520644, -3400004, -14114873, -3590056, -315143, 3375844, +-4387846, -1351841, 7375533, -1344325, 8699993, 154082, 6059662, 2324651, 390842, -2150168, +-123480, 3285650, 971200, -1465121, 402653, -3884261, -566399, -183610, -5146445, -3105261, +-3249680, -1597728, 1147830, -2072322, 962073, -2792803, -256624, -789737, -1423782, 2340757, +1227824, -447750, -3461744, -1349694, 1544041, 2382096, 157840, -3442953, -1724429, 825171, +1913945, 530965, 988379, 299574, -1717450, -20419348, -24676198, -13923747, 10191957, 864362, +-4564477, -5191542, -7848516, -789200, 2730526, -13745506, -1265942, 8759586, -5269925, -3739843, +9787694, 2608119, -6359236, 2500745, -6150930, 14484777, -4602595, -3386582, 4733054, -7463043, +-4643934, -4358318, 2508798, -5168993, -1886028, 2463164, 1812476, -16908212, 7650948, 7432441, +-4811974, 13172128, 5119064, 1297617, 12664785, 7231651, 2325188, 1809255, 13689671, -1311039, +-2240899, -871878, 8446053, 4725001, -12250320, 4826470, 3950833, -46171, -6481643, -19859928, +8873939, -1265942, -4809290, -12439299, -6949794, 7712151, -1529545, -3593277, -8211978, -16146930, +1742683, -2199560, -8485782, -3576097, -15196131, -2404645, -3329137, -2852932, -541703, 5531918, +11868605, 5080410, -3814468, -8363912, 3379603, 630286, 5023501, 3126199, -1774895, 3623879, +1430761, -347355, -4431333, 459025, -7290170, -404264, -1503775, 1270774, -2738042, 3542274, +2195802, -780610, -478889, -669478, 636729, -1644973, -299037, 2051921, -663572, -702227, +3968550, -1474784, -846109, 3111704, -2229625, 1892470, -6067178, -4002910, -2141578, -3267933, +-192737, -3248069, -4226248, -3230889, -780610, -650151, 1619203, -131533, -2525441, 1571421, +726386, -1401233, -21228950, 16979080, 898185, 8653822, -1613834, -758599, 1542430, 9356586, +870805, -1214939, -12851616, 4510253, -1465658, -9922985, 2521146, -6495601, -5028333, 18306762, +5150203, 5614059, -4023848, 6538014, 7864622, 7636989, -4516695, 6666326, 3405909, -7747048, +4962298, -7532836, -2664490, 4777614, 2202781, -795106, -4239670, -3932043, 12125766, -3562675, +-5430986, -3440806, 2417530, 2641942, -5904507, -9847286, -793495, -10563472, -1323924, -9523016, +-3671123, -2262374, 1793686, -4852240, -8320963, 10411538, -4383014, -11463805, 7253663, 12240657, +-6003828, -3915937, 6114423, 4503273, 12052215, 7854959, 1149978, -106300, -12548821, 3024731, +11872363, 9626632, -8567923, 9180493, 9841381, -6618008, -18600966, -5954436, -16669842, 2811056, +9436043, 4823249, 1069447, -4955319, -6794102, -721555, 791885, 2908767, -1599339, 5457293, +-2517925, -1881196, 2043868, 5779952, -8544837, -1091459, -1156957, -2545305, -25233, 2347737, +-559956, -229244, -1421097, -128849, -1435593, 512175, -194884, -141734, 719944, 3045132, +-2692408, -1454383, 1631014, 1975685, 6231998, -568009, 2554969, 2543695, -2806761, 2306398, +928787, -2319819, 532039, 988379, 657667, 2624762, 5426155, 1236414, -1939178, 3754875, +-1239635, -1997160, 226560, -3512210, -1607928, -186831, 106837, 3991635, -33833068, 16094316, +4501663, -1666447, 22688702, -1423245, 11446625, -10254771, -2460480, 1718524, 68183, 12937515, +8200703, -17751100, 10960757, 755914, 6551436, -15996606, -697395, 9122511, -15702937, 19476602, +5222144, -286689, -7061463, 1091459, 8393440, -14097693, 1217086, 3504157, 2403571, -8722542, +-3278134, 8102456, 4552129, -957241, 1140314, -5763846, -9802726, 3946001, -16519518, -759672, +23477902, 22917946, -7439420, 2772402, -1090922, 6504191, 16469589, 1314797, 7834021, 2550137, +-8779450, -732829, -1746978, -25058450, -11370389, 15381352, 622770, 4687420, -6125697, -1612760, +5404680, 7405598, -776315, 19162534, 181462, 14929306, 1772211, 3084860, 1862405, -9905268, +-12442520, 15120432, 3421478, -8009041, 10930692, -9118752, 717260, 9254044, 1410360, -2471217, +4243428, -4090956, -3955128, 4592394, 6301791, 376347, -8703751, -4218195, -9369471, -3389266, +2180233, 2901787, 1382980, -3664681, -1794223, -6743636, 4696547, -159988, -2807298, -1299228, +1906429, 1040993, 5848672, 5265630, 3340948, 3397319, 1057099, 4168266, -2970507, 1878511, +2153389, 2099702, -2612951, 4213900, 2132988, -709207, -904628, -1185948, -1194001, -2026151, +-4821101, -1427540, -204548, -1952600, -3566970, 11307038, -24597814, 9886478, 15495705, -2140504, +4605816, 6979859, -3767223, -2374580, 9557376, -3593814, 14504641, -13804025, 7539815, 17954038, +-19239306, 791885, -9157944, 11348377, 4768488, 9416179, -9745818, -7582228, -129386, 24267102, +260382, 12288975, -5462662, 765578, -1691143, -2130304, -10786810, -390305, -3045132, 4966593, +-4832375, -6953552, -5892695, -415001, -2072859, 10985989, 1853815, -6024229, -5524939, -5542119, +-2073932, -2621004, 17847736, 816044, 8945880, 653372, -4332012, -3873524, 14834280, 11137387, +-4321274, -13968307, 7872675, 5487895, -30929134, 1840394, 17385490, 17045114, 3920232, 13565654, +-18680424, 30586610, 2633352, 5896990, 5994164, 14621142, -1190780, -13001940, -4019016, -15370077, +17507360, -7702487, -5254356, 15382962, -511638, -5963562, -4716948, -11457899, 10863583, -18741090, +-2816962, 1880122, -517007, 2748779, -3959423, -8000451, -5199058, 2585034, 2009508, -3738769, +919123, -3560528, -3987877, -2816425, 3394635, 1890859, -4520990, 4238596, 779537, -5337571, +2394981, -904091, -1973001, -4048007, -4763656, 984084, 2218351, 9831180, -4333622, 5863167, +640487, -1845225, -767725, -1049583, -2635499, 1589675, -345208, -2798708, -1041530, -1905355, +711891, 2081449, 1520955, -4003447, 9460739, -18210662, -14552960, 13073880, 11008538, 26833882, +-9422621, -7057705, -4738423, 5083631, -11339787, -1340567, 4486630, -770410, 14440217, 9308268, +-11501386, 1071058, 3408594, 8351027, -13103945, 13823352, -200253, 6138045, -2298344, -6270653, +-13748190, 4888747, -2357400, -5791227, 2801929, -8436390, -8193724, -1825898, 4350265, 16737488, +-24860344, -15040975, -13397077, -15065672, -4252018, 17353278, -10228465, -461172, 17093432, -2493766, +-7675644, -14788646, -3973382, -6366752, -30588220, -23749558, -6685654, 5375152, -2905546, 5358509, +-6781754, -4895189, 14553497, 8782671, -15289547, -7901666, -17114908, -6807523, 1418950, 6856379, +-3055869, 1836099, -14603426, -11694659, -10662793, -300648, 2506650, 921271, -13822279, 451508, +18615462, 8027294, 21248276, -16732119, 25966298, 2296734, -16131897, -2685428, 750546, 4553739, +-2703682, 7066832, -9865003, 4683125, -8738111, 4122095, 5975910, -1886028, 13293998, -1114007, +3138011, -3587908, -4801774, -2711735, 384936, 3002182, -5082020, -907312, 1706176, -1133335, +5107253, -1531693, -2557116, -8586176, 3794604, 548682, 4491999, 1909650, -2880849, -8078834, +2603287, -10327249, 2619393, -2683818, -430570, 1102196, -2224793, 818191, 1621887, 7178501, +2803003, -3099356, -13096966, 2528662, -1422708, 30231202, 3311957, 14570677, -12584791, -8538395, +-3084324, -14206678, -9025337, -13719736, -6382859, -8880919, 16401943, 4147865, 4145180, 16924318, +-442919, -932008, 7638600, 15236396, 23772644, 17416092, -3565360, -6410776, -27364848, 7586523, +8582955, 3386045, -17064442, 19781008, 7872138, 11644730, -3234647, 1151051, 11214696, 24704116, +24004036, 13900125, 2904472, 25688200, 664646, -7587060, 8319352, 15606301, 12625593, 23118736, +12178380, 585726, 2774549, -13838385, 6031208, -34692060, -5961952, -3416110, 7707319, 27407260, +15374372, 4111358, 19853486, -14337675, -13078175, 2895345, -33749852, -7977902, 1388885, 6562710, +7813620, 9016747, -2033130, 14905684, 1849520, 7755637, 27345520, -16743393, -8761196, -4555350, +5207111, -3107946, -25820806, -4776004, 17596482, -1175747, 22318260, -11878806, 605590, 9345312, +-2172717, 2701535, -9329743, -4452808, -7247221, -4712116, -8040716, -6472516, 1729798, 1495186, +-16121697, -7364795, -9092983, -2304787, 2944737, 4987531, -7206419, -176631, 2126009, -11206643, +1656247, -4432943, -7456063, -3763465, 542777, 2898029, -5129802, -1158031, -7829726, -485331, +-2132988, -2400887, -5727876, -8209830, 2060511, 2901787, -4601521, -3033321, -3395709, -2396592, +1453310, 5651103, 1492501, 1888712, -1818382, -23300734, -7351911, 4222490, 17595944, 32337346, +-13018046, 560493, 5331665, -5941551, 29965450, 5306969, -14786499, 26261578, -5434744, -8822400, +18785114, -17069810, -9997610, 1141388, 1628330, 2335925, 12295954, 6583111, 9974525, -3064459, +5280663, 15056008, 897111, 10264435, 1861332, 391379, 16617228, -21737904, -7924215, -7374459, +14458471, -11083163, -2908230, -6531035, 14316737, -6091338, 31884764, 23337242, -21777632, 10652056, +-26162256, 3748433, 9404905, 5083631, 5610838, -33301028, -6500433, -32116692, 4219806, 2649458, +3874597, -5072357, -5865315, 15362024, -27780922, 9539122, -12055973, -52245056, -19610820, -17099338, +8549669, -7610145, 7898982, 26150446, 27827094, 15793132, 14615774, 13616120, 3906810, -20774220, +21758842, 37581, -24186572, -19201726, -30383672, -40170828, -20776368, -4066797, 32071058, 11582453, +1895691, 12309376, -9877351, -230854, 6117644, 5134097, -2651606, 4706748, 1455457, 3263638, +1279363, -9936944, 7945690, 5317170, 3866544, 1589675, -5262946, 2812667, -7791608, -2764348, +-12065100, 9977746, 7466264, -1660005, 1013075, 7978439, 12612171, -5723044, -12460237, -3770445, +10001368, -2255395, -7473243, 10754061, -1015760, -6279779, 7349226, 2959233, 399969, -1876901, +-363462, -5344013, 3543348, -3423626, -1617592, 8269423, -41307920, -19126564, -14265197, 7780334, +-31483184, 11448772, -18772766, 27026618, -31308700, -39730060, -8513699, -5612449, 31379032, 15400679, +14041859, -7887171, 3761318, -19186156, -15416785, 3752728, 6672769, -24766928, -23051090, -16102906, +-1952063, 12706124, 9161165, -17343614, -21948356, -12645994, -12910672, -29764660, -17157320, 13395466, +-8213051, -35433, -4000225, 9876277, 15551540, -3898220, -44693428, 19079318, 37609416, 14146549, +-694174, -44800804, -10598369, 19793356, -5462125, 50438484, -5228586, -40345848, 6830609, -6653978, +3501472, 1293322, -7956964, 11058467, 13623099, -42571716, -11261404, 2527052, 15302432, -7764227, +-21618718, 19585588, 2110440, -14317810, -42436960, -49234284, -25267292, -2974802, 3824132, 39770324, +56098180, 28998008, 22124988, 9772661, -32233192, 12034498, 60666, -16757889, -4657892, -53228604, +-11024644, -143881, 645319, 2096481, 23553600, 8963597, 7202660, -9374840, -2816962, 20468204, +-13543106, -8053, -580894, 4146791, -9977746, -16631187, -18587544, 8596377, -8523363, -2840047, +11320997, 639413, 2073396, -14135811, 5158256, 4898947, 2790118, -11582990, -5694053, -7538205, +-12132209, 1939178, -6910066, 13662828, 5561446, -8862128, 2058363, -3100967, 9567040, -12282533, +-1331977, -251792, 6900939, 6222334, 3368865, 7463580, 233002, 4238059, 3481608, 75240848, +69099048, -29091960, 35857072, 31799938, -8902393, -5312875, -16469052, -8854075, -19366544, -13554380, +57309896, -3044058, 33389076, 481573, 1631014, 524523, -22610856, 5477694, 4683662, -49612240, +7399692, 12128451, -26157962, -5370857, -8072391, -3466576, 7343321, -1379758, 1501091, 21998286, +8859444, -10542534, 6728067, 35012036, 555661, 16201690, -885300, 13248363, -19267224, -23102092, +-13036836, -42518028, 11378442, 4921496, -18997178, -51681880, -33903400, -48300664, 35256312, -24996172, +5461588, 8914741, 7969312, 6914361, 37616936, -36055712, 155693, -20118700, 39816496, -89248344, +18292802, 7126425, 28550258, 26262652, 66035, -8023536, -13758928, -3715147, -26066156, 19335406, +52617644, -3752191, 10799158, 33535642, -23308250, 13495324, 16130287, -28971166, -20378546, -53961432, +44858784, -8415452, -39687108, 26895086, -6752763, 17695802, -1317481, 15396384, 2449742, -11265162, +18500572, 18221936, 2774012, 10617159, 16808354, 10481868, -11517492, -4461934, -11254962, -4473746, +14136885, 27779312, -1343788, -4579509, -1273458, 18029736, -27825482, 16367583, -7669738, 37486476, +7158637, -21471616, -4646081, 16960288, -8765491, -10976863, -8806830, -6078990, -8660802, 9615358, +6226629, 24271398, -19931870, 1885491, -2436320, 13610214, 689879, -955093, 7534447, 10077604, +7059316, 16152298, 1800128, 18536542, 9991168, -249645, -26069914, -24720758, 30581778, -62266824, +42949136, -25680146, -17935246, -11290932, 3926137, -18034030, -14020921, 19519552, -5977521, -42599632, +14712410, -2621541, 7556995, -9605157, 37884832, -30912490, 1335198, 15698105, -10705743, 11883638, +-25191594, 2052458, -21672942, -11014981, 23616414, 3001645, 9477382, -13434121, 22830972, -6599218, +-10620917, 8716099, -13944148, -11660299, -7440494, -7720741, -23526758, -31578748, -8756365, 17470316, +300111, -9916006, -31471372, 1171452, -24870544, -1703491, 10047539, -24678882, -6041945, 18080738, +18429168, 13310104, -30550640, -14534169, 21090436, 6792491, -572304, 16999480, -100317016, -23293756, +-11173894, -45668924, 4498978, 12429635, -2665027, 8309688, 21519934, -12511777, -21322366, 5318244, +-19360638, -5992553, 20884278, 32989106, -12567611, -40137008, -24138790, 2434173, -21347062, 3168612, +-16566763, -15809238, 4151086, -32231582, 361851, -20199232, -6167036, -11173894, 4460861, 7870528, +-3210488, -20089710, 4356171, -1571421, -12566537, 15256261, -698469, -14906221, -5086315, -4130685, +-5574868, -10450192, 5437429, -9587441, 7522635, 10164040, -4205310, 849867, -6238440, -14239427, +-19675782, 3110630, 2530273, 8676908, -22775674, 4338454, -177167, -15096273, 11198590, -6528887, +7987566, 17965312, -41304700, 7818451, 5698885, 11417634, -6949794, -4749697, 13501767, -1441498, +999654, 67515816, -8414378, -18512920, 2677912, -7360500, 33494302, 6432251, -2726231, 31854698, +32259500, 10717554, 12534862, 17797270, -39561480, -21769042, 32964410, -4337917, -32472638, -16313360, +-14704357, 22587770, 12075837, -11783243, -46945068, 14778982, 7421704, 6403260, 7757785, -5500780, +4805532, -35079684, 31550830, 22060026, 11651709, -17486960, -14979772, 108985, 15795816, -3273302, +16420734, 7332046, -37170796, -16356309, 5878200, -37244344, 2218351, 7337952, -32932198, -46206868, +-6504728, 14190572, -26980448, -56141128, -24686936, -14554034, 36550172, -22014928, 41244572, -8301635, +1918777, 17845052, 2391760, -62909996, -4233764, 2859375, 29459718, -55954832, -77683072, 5861557, +-5104569, -49247704, 27888834, 13408351, -1906429, 96637, 45638860, -65133180, 53613004, 11624329, +7116761, 22050898, -23616952, -21037286, -4164508, 10450729, -13475997, -666794, 27469538, -23029614, +-18815178, 24709484, -13887240, -6521908, 10116795, 7074885, -27434104, 14287746, -9264781, -2106145, +9550934, 9885404, -29234232, -4334159, -22764938, 13082470, 17495012, 1593970, -37595996, 26966490, +-6634651, -147103, 15880105, -3566434, -13810467, -1989644, 21016886, -31448824, 21638046, 1693291, +-2609193, 8537321, 4005594, -19449760, 8997956, 454193, 682363, -25480968, 17649094, -16473347, +19493246, 3552475, -24140400, 2580202, 2683281, -6205154, 11002096, 2648384, 30775052, 11538967, +73584600, -31986768, -33311766, -14300094, -2018098, 69823824, -10501195, 57686780, -41697688, -16901234, +24049670, -45417132, -15395847, -42787000, 6266894, 41865732, -59332824, -22318798, -5665062, 16976932, +-1111323, 5702106, 15650324, -4975183, -37813964, -35203700, 1136019, 23432268, 64639256, -15332496, +17110612, -19621022, 31625992, 231928, 3200288, -9887015, -39060580, 402653, 34947076, -6975564, +-2629594, -14128832, -34130496, 43350180, 16300475, 28624346, 38987564, -2834142, 1792612, 23646480, +-63666984, 20924544, -32399086, 73843912, -7568806, 6453725, 10714870, -22714472, -22517976, 6600828, +-32287954, 46512884, -28224378, -35869420, -35850092, 48668420, 16332150, 27807228, -6874095, 27773406, +28631326, -30646202, -9054865, -28497644, -15008763, 50731080, 36125508, 3892851, 9548249, -79189536, +53160420, 69468952, 7621420, -6622303, -13851806, -42946452, 60323888, -4488241, 3637301, -12913356, +1287953, -27477054, 56438016, -14547591, 27268210, 3467112, -10346039, -4279935, 54352812, -31264678, +26549340, 8038032, -23727546, 2246805, -7939247, 14141180, 3902515, 21219286, -9699647, 1342714, +3736622, -1243393, 21551072, 36678484, -12057584, -2914672, 3867618, 19692962, 5480915, -29970282, +-19866372, 39767104, 7514582, 18981608, -40438728, -49093088, 43976708, 28455768, 13431436, -4446902, +-37666864, -1839857, 33430952, 9824201, 1459752, -3656091, -6631967, 5748814, 4498442, 6989523, +-5551782, 3664681, 7174743, 4686346, -3106872, 1026497, 1371168, 6929393, 17611514, 6583648, +-55529632, 37969660, -39504036, 4795331, -18224084, 14663555, -1572495, 20898238, -3406983, -18044768, +31062814, -10899553, -4413079, 4820564, -13128641, -11310796, 35850092, -8429410, -5013301, -4152697, +-1930588, 16543140, -12660490, 3949759, -9295383, 8302172, -8134668, -6040335, -19380504, 28268402, +-17524004, 9438728, 4397510, 19624242, -22065932, 5013838, -9106404, 22260278, 2767033, 1877975, +17379048, 5345087, -29203094, -4167192, -5140002, 8205535, 12553653, 10772852, -26581552, 11455215, +-20128902, 14260902, -11557757, 3156801, -6717329, 14092861, -5648956, 4205310, -29748554, 7157026, +14142254, -13360570, 13215077, 2021319, 4718022, 8561480, -12139188, 20618528, 7828115, -944356, +-6665253, 10133438, -6467147, 18741626, -15760919, -4404489, -15019501, 19412178, -19246822, 17660906, +-16095390, 21432960, -18301392, 11362873, -18053896, 15845208, -1508070, 1886028, -5436892, 1116155, +-3395172, -2457795, -5771363, 9554155, 3318399, -975494, 2721936, -2516851, -5320391, 9618042, +1102196, 3856344, -6350646, 709207, 8949638, -10371272, -2965675, 6582038, -219580, -2837363, +-7269232, 17219060, -5706938, -8114804, 4001299, 1906429, -3069291, 2194192, -1372779, 2047626, +-3283503, 2833605, -5391795, 8690329, -7283728, 9965935, 3722663, -6702297, 2074469, -1003949, +604517, -407485, 4083977, 464930, -3260954, 2867965, -3521873, -23032836, 46790984, 3981972, +5957120, -18597208, -13677860, -29577292, 19966230, -8242042, -5976447, -12811351, -428423, -11414412, +-1353989, -1443109, 5288716, 5903433, -840740, -1307281, -8359080, 7930657, 7417946, -6922414, +3367254, -15806553, 6397354, 3154654, -2711198, -2398739, -5230734, 5122286, 1181116, -11239393, +-2970507, -3250753, -9316321, 15455440, 1680943, -9767829, 1570347, -3790309, 13476534, -4589710, +-6205154, 2663417, -7935489, 15715285, 517007, -8592619, 2544231, -3465502, 7721278, -9810242, +-1892470, 3318399, -3522410, 6939057, -3850438, 2053531, 3185255, -8843338, 1312113, 8912594, +-13464186, -826781, 4170950, -12495670, 22943178, -20868172, 10513006, 3847217, -11890617, 23715198, +-16027744, 3859565, 3084324, -9941239, 7863012, -4024921, -7653095, 7607461, -9130564, 6044630, +-4160213, -3053722, 6863358, -5593658, 2251100, -2230699, -3221, 1389959, -3027952, 1516660, +-105764, -2954401, 6491843, -5406827, 4854387, 243203, -4432406, 4462471, -7868917, -699543, +2152852, -1240172, -1031866, 1185948, -4062502, 5120138, -2502355, -1730335, 597537, 592169, +-3157875, -419296, -1800665, 1815161, 2594697, -3561065, 3224984, -3396246, -617402, 3419331, +-2448668, 10912438, -50017580, -115480400, 30313342, 106902808, 90390272, 121278600, -59773060, -77473696, +-116496696, -119083336, 8209293, 88786104, 98046584, 107383848, 35735740, -23368380, -85169736, -141049408, +-77248208, 35879084, 55619828, 94067840, 71339944, 19478750, -12603045, -29717952, -70616240, -45784888, +-43523052, -7991324, 37272800, 57067232, 30090004, 38094748, 19321448, -21476448, -3297998, -45917496, +-63851132, -10945724, -14848776, 11258720, 60349660, 34729104, 29989072, 8827232, -22520124, -23269060, +-19972672, -33112050, -8603356, 1449015, 14264660, 17296908, 28907278, 8201240, -943282, -14581414, +-26775900, -2319819, 9740449, 9897752, 16986058, -4338454, -13405667, -6497749, -13421773, -10620917, +2956011, 7577933, 21742198, 18338436, 17631378, 986232, -9338333, -35228396, -32640140, -13368623, +2181307, 27158688, 29251948, 11998528, 12454331, -1420024, -23435490, -14434848, -1609539, -5552856, +1353452, 2436320, 5747740, 4683662, -2949032, -7722351, 4635344, 7045357, 5909875, 6000070, +-455803, -4470524, -2658048, -11990475, -4819490, -6641093, -11135240, 6594386, 16412144, 18976776, +6403260, 6808060, -3605625, -4509716, -16949014, -25388626, -9667435, 2836826, 8017630, 9776419, +20874614, 19251654, 9467719, -7726646, -16153909, -18402324, -17064442, -12763569, -759672, 15333570, +23947128, 18835042, 5586679, -9067213, -10700374, -10858214, -6147172, -4194036, -4590247, 4595078, +11019812, 7967701, 1839857, -1497870, -746251, -2891050, -3097208, -4609574, -1896228, 2537789, +2284923, 1255741, 1578401, 1206349, 1132798, -2383170, -2913599, -942745, 1337346, 981937, +406948, 405874, 486942, -950262, -707059, -392990, 235686, 255014, 717796, 611496, +458488, -226560, -814433, -1455457, -126702, 246424, 128312, 375810, 1008244, 306016, +312996, 819265, 107911, -2259153, -1759326, -574989, 489626, 965831, 1487132, 491774, +172872, -100395, -37581, -596464, -501974, -308164, -151398, -493921, -73014, 44023, +466004, 667331, 784905, 386547, 340376, -267899, -661962, -1149441, -758062, -419296, +221728, 833761, 1273458, 831076, 170725, -435402, -548682, -841814, -622770, -64425, +352724, 328565, 312459, 92342, 56908, -45097, 2147, -67646, -55835, -78383, +6979, -20401, -32749, -75699, 4832, 40802, 45634, 24159, 37044, -6442, +-17180, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -5501316, --4846334, 6116571, -1204202, 4890894, 1455457, 7255274, -1642825, -3696893, -2532420, 4446365, -163209, -1569274, -387084, 5022428, -1286880, 940598, 1791001, -3316252, -2508798, -1058173, -961536, -3444027, 926102, 738734, -3986804, -1278827, -2368675, 370441, -1719061, 673773, -6613176, 3397319, -1879585, 339839, -3078418, 2421288, -797253, 3908957, -8016020, -860067, -1288490, -2844342, 558346, 3928821, 3023657, -3605625, -2640331, -2894808, -499290, -2290828, --1130650, -3520800, 1394254, -295816, -4051765, -2105608, -1610076, -192737, 887448, -881542, --381715, 1772748, 740345, -1921998, 1056562, 4371740, -2195265, -569620, -4646081, -1780264, --321049, 1948305, -1939178, 570694, 834834, 657130, 1557463, -3618510, -77846, -2038499, -1762010, -1304060, -3451006, -991064, -66035, -57982, -1500017, -1623498, 1744831, -766115, --270046, 630823, 1037772, 47782, -185220, 193274, 635118, 38655, -343597, 775242, -184147, -678605, -575526, 723165, -213138, 260382, -419296, 651761, -559420, -395674, --54761, -135828, 276489, 7499550, -2850248, 2417530, 6265821, -5143224, -5794985, -880468, --1471563, -102542, 3176128, 1754494, -8043400, 1219234, -4628364, -6356552, -439697, 2286533, -2476586, -2095944, -299574, -709207, 3410741, -746787, 2799782, -1356673, 298500, 587337, -831076, -4038880, 1654636, 3063386, -1482301, 3913789, -2216203, -464930, -4962835, 3472481, -856309, -1338419, -3854196, -3826816, -1749125, -1330903, 1888712, -454193, 1627256, 1599875, --3419868, 2078227, -4584878, 1594507, 2630668, 4996121, 4823249, -4215511, 2047626, -306016, --1127429, 2907693, -2270964, -2723546, -2041183, 2362769, 1176284, 3091303, -3134789, 4675072, --1549410, -280247, 1401770, 739808, 2748242, -2136746, 3923990, 4933844, 8690329, 3999688, -2753074, -5187247, -956704, -3401077, -2443837, 3119220, -430034, 3863860, 1583769, -357019, --795106, -725313, 2244657, -1757715, 1787780, 2082522, -1692754, 971200, 768262, 177704, -1277216, -845572, -246961, -1735704, -99858, 93952, 870805, -9277666, -9980430, 1080721, --867047, 2310156, 2151242, 6506876, 2913599, 3082176, 1534377, -3256659, 1184337, 8235600, --5587753, -668404, 204011, 6602976, 3948149, 881005, 2897492, -571231, 2226404, 3020436, -6762963, 3732864, 3775276, 2013803, 1589138, 3279745, 1153199, -4791036, 2865817, 3883187, --1446330, 2813204, 3715147, -1351841, 1135482, 4665945, 1688996, -1169842, 1641214, 4764193, --294205, -86973, -994285, 1283658, 4449049, -1361505, -2583960, 1268089, -1605781, 2346126, -2775086, -3377992, 671626, -2192044, 126165, 1342714, 3736622, 3087008, -8010651, -43487, -3851512, -2052994, -3367254, 422517, 561567, 3897683, -376347, -8518531, -3762928, 2729452, --2411087, 3981435, -1161789, 1611, 966905, 5000416, 3098819, 2110440, -2633352, 4105452, --543850, 2508798, 1190780, 483721, 813359, 845035, -114890, -673236, 501437, -369367, --2111513, -885837, -898722, -272730, -526670, -17717, -674310, -1499481, 688805, 306016, --810138, 161598, 1349694, 1018981, 432181, -204548, -289373, -153545, -128849, 1323924, --16643, -16726213, 2426657, 1808181, 7906498, -228707, 6188511, 3215320, 1627793, -9767829, -81604, -73014, -7570954, 1301912, 5776194, 1165010, -45097, -640487, -2982855, -3412889, -1622424, 2335389, -207769, 1586454, 1817308, 6944425, 847182, 3122978, 3263102, -3513820, -836982, -762894, -934155, -373662, 2585034, -304406, -1662689, -2662880, -1590212, 968515, --4829154, -3382287, 2113124, -3797288, 1324461, -6293738, -7590818, -1860258, 9505836, -2408940, --506806, 5670968, 1920387, 503585, 6018323, -753230, 715649, -664109, 1797981, 3929895, --1454383, -5873905, 3859565, -3384434, -6578816, -2543695, -1808718, 89121, 2479270, 7270306, -91268, 26307, -2765422, -166967, 4273493, -1901597, -2148558, 5217312, -4283156, -229781, -2379412, -5128728, -987843, -1709397, -1733556, 689879, -2767570, -3840238, 277025, 2557653, --1105417, -1594507, -2204929, -2149631, -285078, 1744294, 765041, -108985, -633508, -1644436, -110595, -472446, -2122251, -3041374, -2671470, 82678, -322659, 1398012, -2075543, 22012, --285078, 1140851, -144955, 562641, -610959, 127775, 343597, -945430, 14867029, 397284, --1002338, -5767068, -3359738, 7803419, -3292093, 6072547, 5207648, -6112812, -1078574, 4532801, --3469797, -1715839, -1674500, -2271501, 892816, 1572495, 184147, 2801393, -1413581, 368830, -988379, -1293322, -2932926, -3034931, -3438121, 184684, 3791919, 1615982, -3396782, 229244, -1433982, 7353521, -2303713, 6576132, -6159520, 2668249, 4693326, -3237869, -2034204, -6251325, -2814277, -132070, -4440996, 4228932, -5481989, 5963025, -434329, 8469139, 1857573, 865436, -1959042, 3490198, 1789928, -2821794, 4103841, -845572, -4603131, -7093676, -2024003, 2924336, --3635153, -2345589, 2633889, -3991098, 7602092, -7477001, -149250, 4906464, -4351339, -1736777, --7899519, -636192, -3166465, -1759863, -2455111, 6682969, 2529736, 635118, 156229, 5760088, -452582, -548682, 4532801, 3783329, 3366718, 7169374, -1666447, 656593, -2160906, 1992328, -2250563, 438624, 566399, -1264868, -180389, -1771137, -993748, 122407, 519154, 1102733, --704375, -296353, 2180770, 1034013, -1006633, 4430259, -386010, -1156957, -1980517, -1246614, -1494112, -1580548, 5906, -230318, -1720134, 648540, 326418, -470299, 978716, 1137093, --1349157, 1181653, 1974611, 7182796, 12743168, -3771518, -5601711, 1430224, -2309082, 3491272, -11596412, 39728, -2715493, 3660923, 1964411, 3414499, 2051384, -6361384, 199179, -5679558, -3112778, 2705830, 1627256, 10610717, -546535, 7904888, -246424, -219580, 2375654, -89657, -8308078, 1081795, 5216775, -1962800, 7080254, -3230352, 3757023, 14084808, -2346663, -3579318, -9903121, 2075006, 6437082, -175020, -6224482, 1911797, -3608846, 4247723, -7492034, -1009854, --3914863, 4189741, -675384, 855235, 7638600, -3744138, -7767985, 2154463, -711354, -372052, -6202470, 1201517, 843961, -2823404, -5127117, -5389647, -1847910, -4449586, -3406983, 4602595, --2366527, -439160, -1731946, 542240, -25233, 4112431, 2522220, -4704600, -6845104, -1584843, -167504, 1879048, -1903207, -1660542, 5533529, 3193845, 2699924, 821949, -4600447, -2090039, -2409477, 120796, -1554241, 2005213, -679679, 1230508, -1531693, 138513, -900869, -2560874, --3116536, -790274, -2763812, 741956, -456340, 293132, 1803349, -466004, -1507534, 2313914, -438087, 1488743, 799401, 177704, -904091, 1164473, -338229, -222265, -139586, -209380, -43487, -427886, 580894, 1491964, -1829656, 527207, -2147484, 371515, -1068910, 2673617, -17445620, -9300752, 6061810, 145492, 2941516, -4332012, -3410741, -2026151, 3723200, 4814659, -953483, -2790118, -5188858, 2567317, 4760435, -1047972, 1433982, -2695092, 5198521, 1858110, --10021769, -3365107, 3111167, -682363, -4309463, -302795, 4434017, -3421478, 1448478, -6564321, -3684545, 8064338, -3467112, 8535711, 208843, -1681480, 5672578, -357019, 360240, 5097590, --11329050, 1578401, 3325915, 4672925, 3150896, 3624953, -5128728, -4026532, -258235, 1678259, --5546951, 1690070, 5231270, 4651450, 1686312, 14442901, -4667019, -1946157, -6671695, -2946885, --4400731, -6184216, 7425462, 3006477, 7250979, -1271310, -11805254, 6701223, -4217121, 3624416, -3286724, 1508607, 1947231, -9393630, 10900627, 2263985, -5162551, -9021579, -5644661, -5703717, -704375, 4402342, -4212289, 207769, 2717641, 2244121, -68719, -2070711, 383326, -337692, -1660542, 1701881, 1912871, 1235877, 1240709, 535797, -3302293, -3049427, 70330, -1217623, -987306, 1165010, -1571958, 1949378, -579821, 610959, 1671279, 592169, 1282048, 240518, --3505767, -401579, -113817, 1047435, 825171, 249645, -845035, -1095754, 1792075, -715649, -4460861, 607201, 1891396, -20812338, -17487496, -16105590, 3848828, 3562675, 1574106, 944356, --957778, -1057636, 643171, -2570001, -5714991, -3901441, -10159208, -4363687, -4826470, 6409702, --7762617, -3310346, -4306779, 1554241, 292595, -1848983, 2524904, -472983, -8070244, 51540, -7789460, 1200980, -7178501, -6300717, 3049427, -2415382, 6568079, 4701916, -6773164, 7105487, -11060078, -8882529, -9131100, -4763119, 3622805, 8861591, -5956583, -6134287, 3462818, -3445101, -867047, -588947, -598074, -9676561, 2086280, 6229313, -2886218, 3666292, -4733591, -5624797, --5623186, -2644089, -9826348, 17393006, -3446711, -921271, 3187403, 2104534, 3845606, 2575907, -5543192, 2684355, 4837207, 10860899, -13517336, 9833328, -3081102, -2362232, -282394, -15052787, --512175, 4927401, 612033, 850404, 4461398, 1813013, -192200, 2793339, -4985384, 6239514, --1978906, -3233037, 3435974, -1866163, -1727651, 868657, 2838437, -1789928, -3062312, 1363652, -2759517, 361851, -919123, -2568391, -1372242, 654446, -3818763, -2408403, -1213328, 2176475, --722628, 412854, 2292976, 307090, -3804267, -635118, -3212636, -2745021, -2665564, -1481764, --2964064, 2943663, -758599, 456340, 5898064, -856846, -1560684, -1261110, 3273839, 1063004, --881542, -852551, -20667382, 15853261, 4202089, 3463891, -3825742, 15520938, -2441689, 7320772, --24159, 6589554, -9235253, 3670587, 3615289, 1431298, -4549444, 13826573, -3752728, 4230543, -3164854, 14352707, -9681930, -602906, 3970697, -2463701, -7111392, 4311074, -6692096, 1757715, -1806034, -7802345, 3010235, 677531, 368830, 15797427, 9826885, -1280437, -6477885, -4998805, -3486440, -795643, -9483825, 2727304, -865973, 2830920, 7080254, 10531797, -7237557, 7179575, -3528316, -4672925, 3364033, 2797098, -7490423, -3971771, -4714801, 7563438, -8163122, -6831683, --18648212, -13565117, 3723737, -2495913, -2731062, -7097971, -14487462, 5602785, 1051193, -356482, -7006166, 6091874, 8436926, 5121749, 1990181, -167504, 1291175, 9687299, -7169374, 13239237, --4911295, -3645890, -12095165, 2004139, -2284923, -6037651, -1165547, 1556926, -3105798, 3597572, --1537598, 251256, -1565516, -376347, -1359357, -186294, 2080375, 3554086, 182536, 2956011, --3302830, -2165737, -1724429, 1302449, 2372433, -3148211, -1334124, -1400696, 372588, -1697586, -1362578, -200253, 1168768, 2308008, -80531, -3347927, 4810364, 4874251, 1851668, 175557, --2252174, 12885, -1235877, -363998, -276489, 5388037, -25176562, 22930294, 16418586, -6961605, --5907191, 6054830, -132607, 380641, 10844256, 7621420, 132070, -1811939, 4254165, -2751464, --1785633, 2927557, -5134634, 6025302, 4068408, -5347771, 6507413, -904628, 1617055, -671089, --11201812, -797253, 7828115, 8126615, 3072512, 3377455, 4267050, -5312338, -6678674, 2621541, -4804995, -389231, -2694018, -5839008, 2163590, -1839857, 6891275, 8155069, -1118839, 9429064, --5186173, 10528575, 5614596, 12727062, 744640, 1706713, -3902515, -5450851, -1186485, 9727564, -15988016, 803696, 12141873, -5491653, -12013024, 1407139, 4279935, -10514080, 10590316, -3737159, -3623879, -22950694, -9981504, -319975, -5658083, 4239133, 7348152, 15649787, 3112778, -51003, --7932268, -13916768, 3365644, 424665, -11720429, 4563403, 2315524, -8493835, -2547989, 1825898, -8936753, 42950, 2574833, 2627983, 4570919, 3739843, -7898982, 2586644, -318901, -1695438, --12885, -540629, -1420024, 3122978, 2923262, -3376381, -1507534, -203474, 2035278, -1390496, -2980707, 315143, 2121714, 1899449, -2696166, 1739462, 2127620, 5795522, 359167, 3245385, -3541738, 766115, 4189204, 1434519, 2072322, 853625, 368830, 1432909, 4952634, -2345052, --4916664, 1006096, 5745056, -10121090, 16269336, -7567196, 1600949, 12050068, 12498355, -1369558, --7811472, -4394289, -4328254, 535260, -9976672, -8024610, 7632694, 1591285, 4768488, 5860483, -7043210, -3753802, 4434554, -2254858, 5388037, 23613730, 5281199, -12030203, 10878078, 12490302, -184147, -2575370, 306553, -6841346, -9192304, -5062156, 12812424, 8405788, 6930467, 10762114, -1903744, -2387465, -5523328, -14702210, 6235756, 7052337, 3807489, -2721399, -2125472, -5380521, -1621350, 11126113, 7632694, -13760001, 8420820, -11678016, 11456288, 2041720, 4068945, 4798016, --2327336, -6817724, -2275796, 4265977, 20087026, -3745748, 9861782, -5034776, -9584756, 10351408, -9425306, 1976222, 1894081, 9333501, 3103114, 69793, -1458678, -6769406, -2264522, -9695352, -2614561, -7646653, -3898757, 13957033, -1096290, -135828, -40802, 6146635, -2509335, 1455457, -4096325, 6185290, 6949257, 5517959, 2054605, 2635499, 3005403, 5538361, -1261110, -5426155, -6571300, 2171106, 3483219, 3612604, -136365, -1061931, 119722, -3619047, 1582696, 5945309, -426276, 245350, -1680943, -3025805, 5152350, 5264556, 836982, 9793062, -1592359, 3871913, -7664906, -115964, 1914482, -1785096, -3344169, 180926, 1437203, 2236067, 5444408, 1846299, -4007741, 933082, 743029, 5299453, -1248225, 469762, 4264903, 708670, 1113470, 229244, -1831267, 5906, 2610803, -595390, 1875827, 231928, 8437463, -4363687, 8580808, 10967199, --12723841, 8449811, 4881231, -3145527, 739271, 5780489, -5346161, -11280195, 16764331, 3536369, -3180423, 3040300, 9942312, 2802466, -10069014, 10616622, -14422500, -16932908, 1474248, 1905892, --9304510, -3166465, -27521614, -19604378, -14676440, -5086852, -15094663, -7566122, 5724655, -13705778, -9525701, 8613557, -11040750, 14119705, 7625715, -2943663, -1417339, -7540352, 343061, -13346074, -28962038, 8295193, 4540854, -14612016, 3554086, -4633733, 19228568, -4038880, -454730, -17695802, -17187386, 957778, 6766721, 5368709, 10054518, 5466957, -3816079, 5527086, -8464844, 8454643, --3058017, 4893042, -13581760, 30722974, 4804458, -14566918, 7874823, 8809515, 7157563, 10298258, -9086540, -14169097, 11214696, -518080, 9069360, -7296613, 2778844, -18180596, 7663296, 7557532, -2396055, -4565550, -13427678, -1145683, 9422085, -12309913, -1498407, -1699733, 93416, 3398930, -2951180, -3001109, 5380521, -597537, -2386928, 3823595, 3347927, -4073240, -2855617, -8175470, --302258, -7633768, 4591857, 903017, 939524, 5423470, 9084393, 5287642, 4394826, 2476586, --2927557, -1584843, 328028, -6068789, -4473746, -1675574, -1657321, 2717641, 7467875, 1896228, -4830228, -1422171, 193810, 1889249, 71941, 1541356, 5760088, -22425634, 6215355, -3121904, --2236067, 13221520, -2502355, -2319819, 1228361, 11832635, -3156801, 6878927, -5866926, -6897718, --8809515, -11143293, 19202798, 9992778, 6927246, -6102612, -17707076, -21701396, 10361072, 7133404, --7746511, 5111548, -5284958, 468688, 19108310, 8328479, -5498095, 10296110, -3554086, 5322002, --6449967, 6446209, -14222247, -20855288, -8150774, -9325985, -1641751, 24314884, -19889994, 11424613, -6524592, 4938676, -4444755, 9548786, 4217658, -19073412, -24276766, -8653822, -11106785, 27382028, -19812684, -6675453, -12290586, -1052804, -12611098, -2683818, 19894826, 18452254, 10423349, -16335908, -3459059, -12766790, 19945828, 9473087, -2178085, 40802, 6673843, -11848204, 2595234, 17625472, -9526774, -15994995, 17287244, -8879845, 10306311, 27521076, 10454487, -6509023, -8218420, 23551990, -2538863, -1457068, -10769630, 4134443, -5108864, 1498944, -3212636, -572304, -759136, -11756399, -1421634, -1475321, -3407520, 5151814, -971200, -4163971, 688805, -2477659, 593242, -3071439, --4633733, 4064650, -5130339, -3246459, 2342368, 6128919, -365609, 4330401, 3510062, -811749, --78383, -5897527, 750009, 2007897, -5060545, 6718403, 3250753, -4076998, -2804614, -2838974, --1331440, -6570763, 3841312, 6275484, 229781, -4879083, -2907156, 3280818, -1480153, 3160559, -4352413, 364535, 1571421, 61740, -15569, -18072686, -7261179, 29464550, 13480829, 16852914, -3885872, -25027312, 7343321, -20361366, 12896713, 36901824, 12926778, 23042500, -10806138, 6442988, -10544145, -1415729, 2499671, -9839233, 2134599, 14332306, 475131, -4195646, -13504451, 6975564, -5158793, -13752485, 6724308, -5405753, 10002979, 14409078, 15336254, 18539226, 1596654, -14900852, -3657702, 8604430, -457951, 25348360, 1963874, -29770028, -18787798, 8092256, -7792682, -35081292, -970126, 14532559, 5180268, 1260036, -3457449, 18028126, -14689325, -18146236, -3740380, -6687801, --17668422, -1261647, 978716, -10418517, -15254113, -9461813, 444529, 1866700, -21905406, 6154152, --9303973, 4954245, 24656870, -3709241, -8966281, 17083770, -3316252, 14172318, -14002667, 9043591, -319975, -16173236, -18009334, 31670016, 2820720, 4011500, 1224066, -275415, 31768262, 25885232, -7987566, -2723009, 12279848, -6470905, 3999688, 7180649, -1676648, 9534827, 3945464, 2553895, --14896020, 8374113, 4373888, -1138703, 1037772, -5265630, 3917547, 10991895, -2161442, -3997004, --6568079, -7178501, 6517076, 7700340, 147103, -294205, -6475200, -6973417, 900333, -9872519, -1068910, -3508988, 9714679, 3226057, 145492, -6645388, -11317776, -2851858, -5639292, -7773891, -4000762, 4100083, 8291435, 3042984, 978716, 9425843, -1443109, 25322054, 3419868, -34316788, --15446313, 21547314, -30687004, 17681844, -29036126, 2535641, -4520990, -42033772, -5424544, 19164680, -38973072, 12542378, -5512054, 9603547, -14769319, -4818417, -33757908, -1706176, -22891638, -3133179, --4920422, -15721728, -16761110, -5419175, 9812390, -15097884, 10644003, 19588808, -19885162, 7442105, -6559489, 3628711, -21175800, -3050501, -123480, -22086870, 5905580, 28591598, -2065342, -41008884, -14683956, -24685862, -63466196, 18132278, -26201984, -32469952, 1817845, -14751065, 4610111, 11452530, --6192806, 16954920, -13921600, 14840186, -11479374, -28216324, 225486, 20577726, 19565724, -36727340, -5488432, -4188130, -27464706, -7124277, -6773701, 48110076, 23940148, 28322088, 12829604, 12455405, -29657822, 42805792, -9689983, -19918448, -21982716, 4112431, -27321360, -8160438, 14165876, 23245974, -3238942, 2344515, 19966766, -4363150, -11331197, -15149960, 12021077, 13907104, 13390634, 3396246, -15357729, 6645925, -9453760, -1823214, -9163313, 14297946, 2230162, -1363652, -15770046, 5050882, -12557411, 1665374, 184684, 12600360, -9890773, -6288906, 6750078, 984621, -5034239, -9176198, --3104188, 14788109, -788127, -31790274, -3075197, -492848, -7453916, -5952825, -8585640, -4888210, -6876780, 6568079, 3598646, 2534568, -5408438, -628139, -6645925, 55730420, 60240136, -35342748, --14003741, 26911192, -12198781, 10869488, -16782584, 5043902, -17246442, -32266478, 43992276, 6445136, -13805636, 11348377, 4104378, 5814312, 1302449, 8953396, 10909754, -31209380, -25789668, -22528714, --21340082, -15919833, -10095858, -8293582, -16793322, -9444633, -14242648, 16194711, 12227772, 6258841, --7877507, 3332895, -33121178, -16558710, 8931384, -29992830, -2845416, 14682883, 25868588, 3860639, -4949413, -11038603, -19487340, -22826140, 18297634, -2426120, 18108656, -64107756, 3908420, -7397008, -7282117, 39302708, 4707284, 6614787, 4308926, -11426760, -13341779, 427886, -2740189, -35959076, -7592966, -13145284, 32172526, 2224256, -35558036, -48127792, -30106110, -6016176, -34013992, -33076080, --20740398, 23444616, -6238977, -22758494, -30971546, 25789668, -3510062, 15287399, -17527224, 9405442, -25141128, -16777752, -24651502, -10194642, -12850005, 26586384, 5340255, -11571716, 10190884, 7839926, -22810572, 14381698, 6436009, -20444582, -20726438, -4440996, 2087891, -5316096, 3376381, 14262513, --3441880, -1152125, -10721849, -7563438, -6019397, -10758356, -2410551, 4465692, 6134824, 33549600, -1835025, -8382166, -3085934, 4503273, 10042170, -594853, 16136192, 6962679, 37832220, 5933498, --786516, 1391033, 6489696, 1879585, -1802813, -10962367, -16832514, 62400508, -36721972, 23473070, -44129716, -21665962, 5994701, 35179540, -45254460, 1464584, 4764730, 21551072, -50709068, 2473901, -3134253, 16253767, -22271552, -54224, 8781598, -30004104, 4164508, -2592550, -5792837, 15993921, --5152350, -4821101, 6662031, -4236449, -5286568, 15673409, -15208479, 4065724, -6403260, 3739306, --9823664, -5673652, -11927661, -192200, 2050847, 30991410, 10201621, 14872398, -3390877, -10201, -23021024, -1351841, -9007083, 12662100, 9392557, -10848014, -30633318, 27504434, -30529702, 4583804, -14351633, 18733574, -30043296, 31495532, 51034948, -28397786, -52266532, 69302520, 24443196, -34812320, -15729244, -33530810, -41322416, -20912196, -7703024, -43380244, 34613680, -60317448, 17818746, 28182502, --23953570, -80507552, 75587128, -13598403, -19697794, 50057844, -50485728, 25574382, 42925512, -13356275, --11979738, 12938589, 14642617, -8533563, 5181341, 3966402, 13506598, -7198365, -5118528, 14823543, --186294, 2954938, -1767916, 2393371, 12082280, 8562554, -1805497, -11410654, 17777944, 18882824, --3810173, -17168594, -1910187, 7701413, 1639067, 11420318, -79457, 9919764, 4293357, 14787572, -11197517, 12328704, -19254338, 4363150, -501974, 216359, -56371, -12241194, -20783346, 29647622, --5007932, -28541132, 10035728, 6178311, 2797634, -5219459, -19429358, -15075872, 34979824, -22874996, --18271864, -36584532, -16787954, 21935472, 17039210, -9671193, -12106976, 11741904, 29027000, -12305618, -21922050, 26248692, -18438832, -2538326, 16057272, -4008278, -537, -5151814, 1470489, -26561152, -7385197, -5792301, 972273, 6556805, -5302137, 5635534, -11011222, -22222698, -10516227, -38788388, -4929012, 48318, -5748814, 7354058, 3765613, -2400887, -8816494, 15782931, 24774446, -25840134, -38036768, -4142496, 5121749, 5646809, 33625836, 15552077, 24617142, -30688078, -7600482, -5636608, -43814036, -40697500, -13911399, 20118164, -1430761, -47016472, 3235184, -9577777, -8028368, 21689048, -23638426, 1813550, -17678622, 38270844, -16022912, 63719060, 871878, -29329794, -9127, -4959077, --33339684, 64020784, 12860743, -9359807, -75572632, -37613176, 21323438, -27660664, -25024090, 29773250, --110795120, 2964601, 21859236, 16205448, -8944806, 31338228, -19050864, -2299955, 163746, 16407312, --4595078, 3492345, 22100828, -1365263, -5555004, -6812892, -7932268, -173409, 2488934, -1293859, --3333432, 14448270, -19973208, -4304094, 2384781, 3512747, -11964168, -20069846, -5148055, -6037114, --2894808, -1508607, 3922379, -22284438, 1726577, 17216376, -10616622, 13205951, 9984725, -9613211, -606664, -6991133, 2830920, 4967130, -10479183, 29603062, -14297946, -13012140, -17047262, -15463493, --7722888, 13899051, 18979998, 11448235, 47673600, -9571335, 10555956, -4927401, -25082072, 12076374, --16097537, -9233643, 9587978, 21185464, -23011898, 24459302, 2546379, -1598802, 50272592, -10623065, --5919002, 37553584, -24533926, 33130840, 14156749, -8296803, 13064217, 13743895, 30954366, 32119376, -9150965, -26744224, 54912232, -55746528, 1583232, 50013820, -27403502, 10781442, -6259915, -6911140, --58653148, 39257612, 10212895, 17210470, 18321256, -12519293, -29327648, -22245246, -17973902, 2367064, -55206436, -26844, 43247636, -14880451, -33742336, 1431298, 12257300, -27917288, 44395468, 17742510, -21691732, 43670152, 28307056, -47604880, 17755932, -68102072, -83837224, 1314797, 70164736, 43707196, -5465346, -50248432, -178121424, -33159296, 54786064, 62402652, 88866096, -4987531, -113190640, -64191508, --59064392, 89855544, 68834904, -12940736, -45348948, -26896158, -55100136, -7493108, 70536248, -7354058, -16355772, 11316702, -11784317, -26124138, 38368016, -16149614, 21330418, 15255187, -1633161, -36316096, -48924508, -19881940, -9429064, 13684303, 12583180, -27105538, 294742, -8869107, -10166724, 2836826, --1090922, 19102940, -35236448, 18044232, -42374684, -7246147, -7159174, 49661096, 1389959, 13050795, --30758408, 15442555, -11616813, 21604222, 26476862, -13448079, -30566208, 10376641, 7842074, 25085294, -21161840, -5706401, -8346195, -4319664, 17398912, 2731062, 17534204, 7287486, -43545600, 36702108, --27358942, -4665945, -17697412, 17106318, -19891068, -762894, -2046552, -5321465, 4139812, 18850074, --19769734, 8815420, 1593970, -4486094, 311385, 13332115, -16717086, -4472672, -2427730, 27584428, --27796492, 7494718, -12173548, 18324478, -20295868, -5653251, 6975027, -3805341, 3862249, -13007308, --2321430, 12017855, -3610457, 4729833, 3764539, 2629594, 14854681, -13622563, 9313637, 10869488, -13253195, -1708860, -30802432, 4101694, 3638911, 12700218, 11431055, -2078227, 3046206, -5020280, --14024679, -2214056, 6386080, -2466385, 18664854, -15047955, -5076652, -30197378, 9030169, 3464965, --4835597, 6972343, 5878737, -249645, -15742129, 5080947, 15273977, -2790655, -2295660, 6223408, --6251325, 11650099, -7131257, 2148558, -14477261, 7024419, 2646774, -2079301, -4023311, 8557185, --4076998, -5832029, -8776229, 9298067, -459562, -4330938, -2040110, 9262634, -3673808, 4226248, --5111548, -2780991, -579821, 564788, -206695, -4725001, 427349, 403190, -4307316, 4531728, --4098473, 12063489, 1743220, 1845762, -16481937, 4883915, -468688, -6246493, 7259569, 14136348, --10194642, -1973001, -540092, -6930467, 10819023, -1523640, 1399623, -6933151, 3613141, -1231582, -1166621, -4300336, 4214437, -4287988, -24865176, 60288456, 16434692, 14898168, -7972533, -19297824, --18568218, 5274220, 11705396, 1850057, -687732, -61203, -8807367, -1598802, 4233227, -2330557, -1822677, -938450, -8823473, -454730, 4369593, 6891275, -6141803, 1696512, 4410932, -8787503, -14430553, -8756365, -7647190, -7589207, 1970853, 4227322, 6694244, -7300371, 9339943, -13451838, -8916889, 7963406, -5929739, -602906, -432181, -1537598, 6948184, -7475391, 2178622, -2382096, --9689446, 13734232, -7672422, -247497, -5686000, -1763621, 9560597, -12475269, 5077188, 3476239, --5462125, 4602595, -10662793, 3106335, 4424890, -7900593, 181999, 4268661, -7330436, 7366943, --10116259, 2821794, 10347650, -15143518, 4352413, -5775658, 1035624, 5973226, -4538170, -2301566, -1060320, 1315871, -917512, 4275640, -3249680, -2775086, 2065879, -2479270, 1350230, -943819, -1778653, 1698660, -2460480, 1245541, -476741, 2221035, -2033130, -550830, 1473174, 65498, --1181116, -3506841, 2218351, 2354179, -540092, -2419677, 2311229, -103616, -1107565, 2409477, --5032628, -1004486, 2825015, -3604551, 5251135, -3213173, 233002, 8750459, -2554969, 6307697, --3592203, -335007, 6932077, -4855461, -1849520, 9045201, -46580532, -109298864, 30946314, 107009648, -73595872, 116361936, -64772400, -68946576, -94017904, -108833936, 2345052, 83985400, 86769080, 90589984, -17790828, -29925184, -59389196, -85243288, -72248864, 5636608, 56138980, 66588636, 59915332, 14341970, --16546362, -10331544, -46770048, -52313776, -22064858, -1418413, 20133732, 44126492, 21559126, 16010027, -22106196, -11028402, -26233660, -4290673, -41945188, -19674708, 469225, 6664716, 31980864, 37235220, -3310883, -5636071, -3490735, -27469538, -7437273, -381178, -5710159, 9514963, 18402862, -3919695, --1453310, -7217693, -11481521, 2359011, 1140314, -1251446, 20763482, 14055280, 5196911, -526670, --19572166, -28302760, -22379464, 1618129, 21070036, 18087182, 23737748, 3230352, 620623, 5399848, --29453276, -16764331, -13848585, -2516851, 22604950, 5113159, 7585449, 21088290, -12167642, -17702782, --4119411, -3020973, 6539088, 7603703, 2379412, 4246112, 1860258, -10866267, -11260331, -2744484, --2147, 8100845, 11720966, 3848291, -1654636, -2542084, -3333968, 2939368, -3287798, -13817447, --2168422, 3262028, 6405944, 13765370, 3352759, -2849711, -6612102, -11311870, -2474438, 1145146, -3689914, 6477885, 8087961, 6374805, -3264175, -9800578, -10334228, -9014063, -1032940, 4493610, -4971425, 13299366, 13650480, 6658810, -2946348, -16777216, -17749490, -8223252, -6220724, 6276021, -16569984, 12283070, 5309654, 72478, -1319092, -2157684, -5069135, -8332237, -8016020, -3419331, -1175747, 3473555, 5557151, 8075613, 7699803, 2952790, -2989834, -6476811, -7013145, -5205501, --1972464, 1068373, 2479270, 2449742, 2974802, 3425237, 2632815, 74088, -2011655, -3477313, --2837900, -1035624, 598074, 1379758, 238371, -153545, 243739, 357556, 1023813, 1087701, --36507, -1146756, -477815, 893353, 228707, -1025960, -842350, -139050, -695248, -1144072, --183073, 2070711, 2803540, 870805, -689342, -1047972, -746251, -474057, -807454, -1125818, --443455, 791348, 1271847, 716723, 583042, 700080, 132070, -448824, -947577, -966905, --679679, -226560, 466004, 782758, 572841, 466004, 233539, -126165, -473520, -655519, --499290, 16106, 340376, 379568, 280784, 84289, -178241, -394063, -279173, 42413, -195421, 209380, 202400, 88584, -103079, -182536, -114354, -53687, -13959, 30065, -41339, 28991, 13422, -5369, -20938, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-4846334, 6116571, -1204202, 4890894, 1455457, 7255274, -1642825, -3696893, -2532420, 4446365, +163209, -1569274, -387084, 5022428, -1286880, 940598, 1791001, -3316252, -2508798, -1058173, +961536, -3444027, 926102, 738734, -3986804, -1278827, -2368675, 370441, -1719061, 673773, +6613176, 3397319, -1879585, 339839, -3078418, 2421288, -797253, 3908957, -8016020, -860067, +1288490, -2844342, 558346, 3928821, 3023657, -3605625, -2640331, -2894808, -499290, -2290828, +-1130650, -3520800, 1394254, -295816, -4051765, -2105608, -1610076, -192737, 887448, -881542, +-381715, 1772748, 740345, -1921998, 1056562, 4371740, -2195265, -569620, -4646081, -1780264, +-321049, 1948305, -1939178, 570694, 834834, 657130, 1557463, -3618510, -77846, -2038499, +1762010, -1304060, -3451006, -991064, -66035, -57982, -1500017, -1623498, 1744831, -766115, +-270046, 630823, 1037772, 47782, -185220, 193274, 635118, 38655, -343597, 775242, +184147, -678605, -575526, 723165, -213138, 260382, -419296, 651761, -559420, -395674, +-54761, -135828, 276489, 7499550, -2850248, 2417530, 6265821, -5143224, -5794985, -880468, +-1471563, -102542, 3176128, 1754494, -8043400, 1219234, -4628364, -6356552, -439697, 2286533, +2476586, -2095944, -299574, -709207, 3410741, -746787, 2799782, -1356673, 298500, 587337, +831076, -4038880, 1654636, 3063386, -1482301, 3913789, -2216203, -464930, -4962835, 3472481, +856309, -1338419, -3854196, -3826816, -1749125, -1330903, 1888712, -454193, 1627256, 1599875, +-3419868, 2078227, -4584878, 1594507, 2630668, 4996121, 4823249, -4215511, 2047626, -306016, +-1127429, 2907693, -2270964, -2723546, -2041183, 2362769, 1176284, 3091303, -3134789, 4675072, +-1549410, -280247, 1401770, 739808, 2748242, -2136746, 3923990, 4933844, 8690329, 3999688, +2753074, -5187247, -956704, -3401077, -2443837, 3119220, -430034, 3863860, 1583769, -357019, +-795106, -725313, 2244657, -1757715, 1787780, 2082522, -1692754, 971200, 768262, 177704, +1277216, -845572, -246961, -1735704, -99858, 93952, 870805, -9277666, -9980430, 1080721, +-867047, 2310156, 2151242, 6506876, 2913599, 3082176, 1534377, -3256659, 1184337, 8235600, +-5587753, -668404, 204011, 6602976, 3948149, 881005, 2897492, -571231, 2226404, 3020436, +6762963, 3732864, 3775276, 2013803, 1589138, 3279745, 1153199, -4791036, 2865817, 3883187, +-1446330, 2813204, 3715147, -1351841, 1135482, 4665945, 1688996, -1169842, 1641214, 4764193, +-294205, -86973, -994285, 1283658, 4449049, -1361505, -2583960, 1268089, -1605781, 2346126, +2775086, -3377992, 671626, -2192044, 126165, 1342714, 3736622, 3087008, -8010651, -43487, +3851512, -2052994, -3367254, 422517, 561567, 3897683, -376347, -8518531, -3762928, 2729452, +-2411087, 3981435, -1161789, 1611, 966905, 5000416, 3098819, 2110440, -2633352, 4105452, +-543850, 2508798, 1190780, 483721, 813359, 845035, -114890, -673236, 501437, -369367, +-2111513, -885837, -898722, -272730, -526670, -17717, -674310, -1499481, 688805, 306016, +-810138, 161598, 1349694, 1018981, 432181, -204548, -289373, -153545, -128849, 1323924, +-16643, -16726213, 2426657, 1808181, 7906498, -228707, 6188511, 3215320, 1627793, -9767829, +81604, -73014, -7570954, 1301912, 5776194, 1165010, -45097, -640487, -2982855, -3412889, +1622424, 2335389, -207769, 1586454, 1817308, 6944425, 847182, 3122978, 3263102, -3513820, +836982, -762894, -934155, -373662, 2585034, -304406, -1662689, -2662880, -1590212, 968515, +-4829154, -3382287, 2113124, -3797288, 1324461, -6293738, -7590818, -1860258, 9505836, -2408940, +-506806, 5670968, 1920387, 503585, 6018323, -753230, 715649, -664109, 1797981, 3929895, +-1454383, -5873905, 3859565, -3384434, -6578816, -2543695, -1808718, 89121, 2479270, 7270306, +91268, 26307, -2765422, -166967, 4273493, -1901597, -2148558, 5217312, -4283156, -229781, +2379412, -5128728, -987843, -1709397, -1733556, 689879, -2767570, -3840238, 277025, 2557653, +-1105417, -1594507, -2204929, -2149631, -285078, 1744294, 765041, -108985, -633508, -1644436, +110595, -472446, -2122251, -3041374, -2671470, 82678, -322659, 1398012, -2075543, 22012, +-285078, 1140851, -144955, 562641, -610959, 127775, 343597, -945430, 14867029, 397284, +-1002338, -5767068, -3359738, 7803419, -3292093, 6072547, 5207648, -6112812, -1078574, 4532801, +-3469797, -1715839, -1674500, -2271501, 892816, 1572495, 184147, 2801393, -1413581, 368830, +988379, -1293322, -2932926, -3034931, -3438121, 184684, 3791919, 1615982, -3396782, 229244, +1433982, 7353521, -2303713, 6576132, -6159520, 2668249, 4693326, -3237869, -2034204, -6251325, +2814277, -132070, -4440996, 4228932, -5481989, 5963025, -434329, 8469139, 1857573, 865436, +1959042, 3490198, 1789928, -2821794, 4103841, -845572, -4603131, -7093676, -2024003, 2924336, +-3635153, -2345589, 2633889, -3991098, 7602092, -7477001, -149250, 4906464, -4351339, -1736777, +-7899519, -636192, -3166465, -1759863, -2455111, 6682969, 2529736, 635118, 156229, 5760088, +452582, -548682, 4532801, 3783329, 3366718, 7169374, -1666447, 656593, -2160906, 1992328, +2250563, 438624, 566399, -1264868, -180389, -1771137, -993748, 122407, 519154, 1102733, +-704375, -296353, 2180770, 1034013, -1006633, 4430259, -386010, -1156957, -1980517, -1246614, +1494112, -1580548, 5906, -230318, -1720134, 648540, 326418, -470299, 978716, 1137093, +-1349157, 1181653, 1974611, 7182796, 12743168, -3771518, -5601711, 1430224, -2309082, 3491272, +11596412, 39728, -2715493, 3660923, 1964411, 3414499, 2051384, -6361384, 199179, -5679558, +3112778, 2705830, 1627256, 10610717, -546535, 7904888, -246424, -219580, 2375654, -89657, +8308078, 1081795, 5216775, -1962800, 7080254, -3230352, 3757023, 14084808, -2346663, -3579318, +9903121, 2075006, 6437082, -175020, -6224482, 1911797, -3608846, 4247723, -7492034, -1009854, +-3914863, 4189741, -675384, 855235, 7638600, -3744138, -7767985, 2154463, -711354, -372052, +6202470, 1201517, 843961, -2823404, -5127117, -5389647, -1847910, -4449586, -3406983, 4602595, +-2366527, -439160, -1731946, 542240, -25233, 4112431, 2522220, -4704600, -6845104, -1584843, +167504, 1879048, -1903207, -1660542, 5533529, 3193845, 2699924, 821949, -4600447, -2090039, +2409477, 120796, -1554241, 2005213, -679679, 1230508, -1531693, 138513, -900869, -2560874, +-3116536, -790274, -2763812, 741956, -456340, 293132, 1803349, -466004, -1507534, 2313914, +438087, 1488743, 799401, 177704, -904091, 1164473, -338229, -222265, -139586, -209380, +43487, -427886, 580894, 1491964, -1829656, 527207, -2147484, 371515, -1068910, 2673617, +17445620, -9300752, 6061810, 145492, 2941516, -4332012, -3410741, -2026151, 3723200, 4814659, +953483, -2790118, -5188858, 2567317, 4760435, -1047972, 1433982, -2695092, 5198521, 1858110, +-10021769, -3365107, 3111167, -682363, -4309463, -302795, 4434017, -3421478, 1448478, -6564321, +3684545, 8064338, -3467112, 8535711, 208843, -1681480, 5672578, -357019, 360240, 5097590, +-11329050, 1578401, 3325915, 4672925, 3150896, 3624953, -5128728, -4026532, -258235, 1678259, +-5546951, 1690070, 5231270, 4651450, 1686312, 14442901, -4667019, -1946157, -6671695, -2946885, +-4400731, -6184216, 7425462, 3006477, 7250979, -1271310, -11805254, 6701223, -4217121, 3624416, +3286724, 1508607, 1947231, -9393630, 10900627, 2263985, -5162551, -9021579, -5644661, -5703717, +704375, 4402342, -4212289, 207769, 2717641, 2244121, -68719, -2070711, 383326, -337692, +1660542, 1701881, 1912871, 1235877, 1240709, 535797, -3302293, -3049427, 70330, -1217623, +987306, 1165010, -1571958, 1949378, -579821, 610959, 1671279, 592169, 1282048, 240518, +-3505767, -401579, -113817, 1047435, 825171, 249645, -845035, -1095754, 1792075, -715649, +4460861, 607201, 1891396, -20812338, -17487496, -16105590, 3848828, 3562675, 1574106, 944356, +-957778, -1057636, 643171, -2570001, -5714991, -3901441, -10159208, -4363687, -4826470, 6409702, +-7762617, -3310346, -4306779, 1554241, 292595, -1848983, 2524904, -472983, -8070244, 51540, +7789460, 1200980, -7178501, -6300717, 3049427, -2415382, 6568079, 4701916, -6773164, 7105487, +11060078, -8882529, -9131100, -4763119, 3622805, 8861591, -5956583, -6134287, 3462818, -3445101, +867047, -588947, -598074, -9676561, 2086280, 6229313, -2886218, 3666292, -4733591, -5624797, +-5623186, -2644089, -9826348, 17393006, -3446711, -921271, 3187403, 2104534, 3845606, 2575907, +5543192, 2684355, 4837207, 10860899, -13517336, 9833328, -3081102, -2362232, -282394, -15052787, +-512175, 4927401, 612033, 850404, 4461398, 1813013, -192200, 2793339, -4985384, 6239514, +-1978906, -3233037, 3435974, -1866163, -1727651, 868657, 2838437, -1789928, -3062312, 1363652, +2759517, 361851, -919123, -2568391, -1372242, 654446, -3818763, -2408403, -1213328, 2176475, +-722628, 412854, 2292976, 307090, -3804267, -635118, -3212636, -2745021, -2665564, -1481764, +-2964064, 2943663, -758599, 456340, 5898064, -856846, -1560684, -1261110, 3273839, 1063004, +-881542, -852551, -20667382, 15853261, 4202089, 3463891, -3825742, 15520938, -2441689, 7320772, +-24159, 6589554, -9235253, 3670587, 3615289, 1431298, -4549444, 13826573, -3752728, 4230543, +3164854, 14352707, -9681930, -602906, 3970697, -2463701, -7111392, 4311074, -6692096, 1757715, +1806034, -7802345, 3010235, 677531, 368830, 15797427, 9826885, -1280437, -6477885, -4998805, +3486440, -795643, -9483825, 2727304, -865973, 2830920, 7080254, 10531797, -7237557, 7179575, +3528316, -4672925, 3364033, 2797098, -7490423, -3971771, -4714801, 7563438, -8163122, -6831683, +-18648212, -13565117, 3723737, -2495913, -2731062, -7097971, -14487462, 5602785, 1051193, -356482, +7006166, 6091874, 8436926, 5121749, 1990181, -167504, 1291175, 9687299, -7169374, 13239237, +-4911295, -3645890, -12095165, 2004139, -2284923, -6037651, -1165547, 1556926, -3105798, 3597572, +-1537598, 251256, -1565516, -376347, -1359357, -186294, 2080375, 3554086, 182536, 2956011, +-3302830, -2165737, -1724429, 1302449, 2372433, -3148211, -1334124, -1400696, 372588, -1697586, +1362578, -200253, 1168768, 2308008, -80531, -3347927, 4810364, 4874251, 1851668, 175557, +-2252174, 12885, -1235877, -363998, -276489, 5388037, -25176562, 22930294, 16418586, -6961605, +-5907191, 6054830, -132607, 380641, 10844256, 7621420, 132070, -1811939, 4254165, -2751464, +-1785633, 2927557, -5134634, 6025302, 4068408, -5347771, 6507413, -904628, 1617055, -671089, +-11201812, -797253, 7828115, 8126615, 3072512, 3377455, 4267050, -5312338, -6678674, 2621541, +4804995, -389231, -2694018, -5839008, 2163590, -1839857, 6891275, 8155069, -1118839, 9429064, +-5186173, 10528575, 5614596, 12727062, 744640, 1706713, -3902515, -5450851, -1186485, 9727564, +15988016, 803696, 12141873, -5491653, -12013024, 1407139, 4279935, -10514080, 10590316, -3737159, +3623879, -22950694, -9981504, -319975, -5658083, 4239133, 7348152, 15649787, 3112778, -51003, +-7932268, -13916768, 3365644, 424665, -11720429, 4563403, 2315524, -8493835, -2547989, 1825898, +8936753, 42950, 2574833, 2627983, 4570919, 3739843, -7898982, 2586644, -318901, -1695438, +-12885, -540629, -1420024, 3122978, 2923262, -3376381, -1507534, -203474, 2035278, -1390496, +2980707, 315143, 2121714, 1899449, -2696166, 1739462, 2127620, 5795522, 359167, 3245385, +3541738, 766115, 4189204, 1434519, 2072322, 853625, 368830, 1432909, 4952634, -2345052, +-4916664, 1006096, 5745056, -10121090, 16269336, -7567196, 1600949, 12050068, 12498355, -1369558, +-7811472, -4394289, -4328254, 535260, -9976672, -8024610, 7632694, 1591285, 4768488, 5860483, +7043210, -3753802, 4434554, -2254858, 5388037, 23613730, 5281199, -12030203, 10878078, 12490302, +184147, -2575370, 306553, -6841346, -9192304, -5062156, 12812424, 8405788, 6930467, 10762114, +1903744, -2387465, -5523328, -14702210, 6235756, 7052337, 3807489, -2721399, -2125472, -5380521, +1621350, 11126113, 7632694, -13760001, 8420820, -11678016, 11456288, 2041720, 4068945, 4798016, +-2327336, -6817724, -2275796, 4265977, 20087026, -3745748, 9861782, -5034776, -9584756, 10351408, +9425306, 1976222, 1894081, 9333501, 3103114, 69793, -1458678, -6769406, -2264522, -9695352, +2614561, -7646653, -3898757, 13957033, -1096290, -135828, -40802, 6146635, -2509335, 1455457, +4096325, 6185290, 6949257, 5517959, 2054605, 2635499, 3005403, 5538361, -1261110, -5426155, +6571300, 2171106, 3483219, 3612604, -136365, -1061931, 119722, -3619047, 1582696, 5945309, +426276, 245350, -1680943, -3025805, 5152350, 5264556, 836982, 9793062, -1592359, 3871913, +7664906, -115964, 1914482, -1785096, -3344169, 180926, 1437203, 2236067, 5444408, 1846299, +4007741, 933082, 743029, 5299453, -1248225, 469762, 4264903, 708670, 1113470, 229244, +1831267, 5906, 2610803, -595390, 1875827, 231928, 8437463, -4363687, 8580808, 10967199, +-12723841, 8449811, 4881231, -3145527, 739271, 5780489, -5346161, -11280195, 16764331, 3536369, +3180423, 3040300, 9942312, 2802466, -10069014, 10616622, -14422500, -16932908, 1474248, 1905892, +-9304510, -3166465, -27521614, -19604378, -14676440, -5086852, -15094663, -7566122, 5724655, -13705778, +9525701, 8613557, -11040750, 14119705, 7625715, -2943663, -1417339, -7540352, 343061, -13346074, +28962038, 8295193, 4540854, -14612016, 3554086, -4633733, 19228568, -4038880, -454730, -17695802, +17187386, 957778, 6766721, 5368709, 10054518, 5466957, -3816079, 5527086, -8464844, 8454643, +-3058017, 4893042, -13581760, 30722974, 4804458, -14566918, 7874823, 8809515, 7157563, 10298258, +9086540, -14169097, 11214696, -518080, 9069360, -7296613, 2778844, -18180596, 7663296, 7557532, +2396055, -4565550, -13427678, -1145683, 9422085, -12309913, -1498407, -1699733, 93416, 3398930, +2951180, -3001109, 5380521, -597537, -2386928, 3823595, 3347927, -4073240, -2855617, -8175470, +-302258, -7633768, 4591857, 903017, 939524, 5423470, 9084393, 5287642, 4394826, 2476586, +-2927557, -1584843, 328028, -6068789, -4473746, -1675574, -1657321, 2717641, 7467875, 1896228, +4830228, -1422171, 193810, 1889249, 71941, 1541356, 5760088, -22425634, 6215355, -3121904, +-2236067, 13221520, -2502355, -2319819, 1228361, 11832635, -3156801, 6878927, -5866926, -6897718, +-8809515, -11143293, 19202798, 9992778, 6927246, -6102612, -17707076, -21701396, 10361072, 7133404, +-7746511, 5111548, -5284958, 468688, 19108310, 8328479, -5498095, 10296110, -3554086, 5322002, +-6449967, 6446209, -14222247, -20855288, -8150774, -9325985, -1641751, 24314884, -19889994, 11424613, +6524592, 4938676, -4444755, 9548786, 4217658, -19073412, -24276766, -8653822, -11106785, 27382028, +19812684, -6675453, -12290586, -1052804, -12611098, -2683818, 19894826, 18452254, 10423349, -16335908, +3459059, -12766790, 19945828, 9473087, -2178085, 40802, 6673843, -11848204, 2595234, 17625472, +9526774, -15994995, 17287244, -8879845, 10306311, 27521076, 10454487, -6509023, -8218420, 23551990, +2538863, -1457068, -10769630, 4134443, -5108864, 1498944, -3212636, -572304, -759136, -11756399, +1421634, -1475321, -3407520, 5151814, -971200, -4163971, 688805, -2477659, 593242, -3071439, +-4633733, 4064650, -5130339, -3246459, 2342368, 6128919, -365609, 4330401, 3510062, -811749, +-78383, -5897527, 750009, 2007897, -5060545, 6718403, 3250753, -4076998, -2804614, -2838974, +-1331440, -6570763, 3841312, 6275484, 229781, -4879083, -2907156, 3280818, -1480153, 3160559, +4352413, 364535, 1571421, 61740, -15569, -18072686, -7261179, 29464550, 13480829, 16852914, +3885872, -25027312, 7343321, -20361366, 12896713, 36901824, 12926778, 23042500, -10806138, 6442988, +10544145, -1415729, 2499671, -9839233, 2134599, 14332306, 475131, -4195646, -13504451, 6975564, +5158793, -13752485, 6724308, -5405753, 10002979, 14409078, 15336254, 18539226, 1596654, -14900852, +3657702, 8604430, -457951, 25348360, 1963874, -29770028, -18787798, 8092256, -7792682, -35081292, +970126, 14532559, 5180268, 1260036, -3457449, 18028126, -14689325, -18146236, -3740380, -6687801, +-17668422, -1261647, 978716, -10418517, -15254113, -9461813, 444529, 1866700, -21905406, 6154152, +-9303973, 4954245, 24656870, -3709241, -8966281, 17083770, -3316252, 14172318, -14002667, 9043591, +319975, -16173236, -18009334, 31670016, 2820720, 4011500, 1224066, -275415, 31768262, 25885232, +7987566, -2723009, 12279848, -6470905, 3999688, 7180649, -1676648, 9534827, 3945464, 2553895, +-14896020, 8374113, 4373888, -1138703, 1037772, -5265630, 3917547, 10991895, -2161442, -3997004, +-6568079, -7178501, 6517076, 7700340, 147103, -294205, -6475200, -6973417, 900333, -9872519, +1068910, -3508988, 9714679, 3226057, 145492, -6645388, -11317776, -2851858, -5639292, -7773891, +4000762, 4100083, 8291435, 3042984, 978716, 9425843, -1443109, 25322054, 3419868, -34316788, +-15446313, 21547314, -30687004, 17681844, -29036126, 2535641, -4520990, -42033772, -5424544, 19164680, +38973072, 12542378, -5512054, 9603547, -14769319, -4818417, -33757908, -1706176, -22891638, -3133179, +-4920422, -15721728, -16761110, -5419175, 9812390, -15097884, 10644003, 19588808, -19885162, 7442105, +6559489, 3628711, -21175800, -3050501, -123480, -22086870, 5905580, 28591598, -2065342, -41008884, +14683956, -24685862, -63466196, 18132278, -26201984, -32469952, 1817845, -14751065, 4610111, 11452530, +-6192806, 16954920, -13921600, 14840186, -11479374, -28216324, 225486, 20577726, 19565724, -36727340, +5488432, -4188130, -27464706, -7124277, -6773701, 48110076, 23940148, 28322088, 12829604, 12455405, +29657822, 42805792, -9689983, -19918448, -21982716, 4112431, -27321360, -8160438, 14165876, 23245974, +3238942, 2344515, 19966766, -4363150, -11331197, -15149960, 12021077, 13907104, 13390634, 3396246, +15357729, 6645925, -9453760, -1823214, -9163313, 14297946, 2230162, -1363652, -15770046, 5050882, +12557411, 1665374, 184684, 12600360, -9890773, -6288906, 6750078, 984621, -5034239, -9176198, +-3104188, 14788109, -788127, -31790274, -3075197, -492848, -7453916, -5952825, -8585640, -4888210, +6876780, 6568079, 3598646, 2534568, -5408438, -628139, -6645925, 55730420, 60240136, -35342748, +-14003741, 26911192, -12198781, 10869488, -16782584, 5043902, -17246442, -32266478, 43992276, 6445136, +13805636, 11348377, 4104378, 5814312, 1302449, 8953396, 10909754, -31209380, -25789668, -22528714, +-21340082, -15919833, -10095858, -8293582, -16793322, -9444633, -14242648, 16194711, 12227772, 6258841, +-7877507, 3332895, -33121178, -16558710, 8931384, -29992830, -2845416, 14682883, 25868588, 3860639, +4949413, -11038603, -19487340, -22826140, 18297634, -2426120, 18108656, -64107756, 3908420, -7397008, +7282117, 39302708, 4707284, 6614787, 4308926, -11426760, -13341779, 427886, -2740189, -35959076, +7592966, -13145284, 32172526, 2224256, -35558036, -48127792, -30106110, -6016176, -34013992, -33076080, +-20740398, 23444616, -6238977, -22758494, -30971546, 25789668, -3510062, 15287399, -17527224, 9405442, +25141128, -16777752, -24651502, -10194642, -12850005, 26586384, 5340255, -11571716, 10190884, 7839926, +22810572, 14381698, 6436009, -20444582, -20726438, -4440996, 2087891, -5316096, 3376381, 14262513, +-3441880, -1152125, -10721849, -7563438, -6019397, -10758356, -2410551, 4465692, 6134824, 33549600, +1835025, -8382166, -3085934, 4503273, 10042170, -594853, 16136192, 6962679, 37832220, 5933498, +-786516, 1391033, 6489696, 1879585, -1802813, -10962367, -16832514, 62400508, -36721972, 23473070, +44129716, -21665962, 5994701, 35179540, -45254460, 1464584, 4764730, 21551072, -50709068, 2473901, +3134253, 16253767, -22271552, -54224, 8781598, -30004104, 4164508, -2592550, -5792837, 15993921, +-5152350, -4821101, 6662031, -4236449, -5286568, 15673409, -15208479, 4065724, -6403260, 3739306, +-9823664, -5673652, -11927661, -192200, 2050847, 30991410, 10201621, 14872398, -3390877, -10201, +23021024, -1351841, -9007083, 12662100, 9392557, -10848014, -30633318, 27504434, -30529702, 4583804, +14351633, 18733574, -30043296, 31495532, 51034948, -28397786, -52266532, 69302520, 24443196, -34812320, +15729244, -33530810, -41322416, -20912196, -7703024, -43380244, 34613680, -60317448, 17818746, 28182502, +-23953570, -80507552, 75587128, -13598403, -19697794, 50057844, -50485728, 25574382, 42925512, -13356275, +-11979738, 12938589, 14642617, -8533563, 5181341, 3966402, 13506598, -7198365, -5118528, 14823543, +-186294, 2954938, -1767916, 2393371, 12082280, 8562554, -1805497, -11410654, 17777944, 18882824, +-3810173, -17168594, -1910187, 7701413, 1639067, 11420318, -79457, 9919764, 4293357, 14787572, +11197517, 12328704, -19254338, 4363150, -501974, 216359, -56371, -12241194, -20783346, 29647622, +-5007932, -28541132, 10035728, 6178311, 2797634, -5219459, -19429358, -15075872, 34979824, -22874996, +-18271864, -36584532, -16787954, 21935472, 17039210, -9671193, -12106976, 11741904, 29027000, -12305618, +21922050, 26248692, -18438832, -2538326, 16057272, -4008278, -537, -5151814, 1470489, -26561152, +7385197, -5792301, 972273, 6556805, -5302137, 5635534, -11011222, -22222698, -10516227, -38788388, +4929012, 48318, -5748814, 7354058, 3765613, -2400887, -8816494, 15782931, 24774446, -25840134, +38036768, -4142496, 5121749, 5646809, 33625836, 15552077, 24617142, -30688078, -7600482, -5636608, +43814036, -40697500, -13911399, 20118164, -1430761, -47016472, 3235184, -9577777, -8028368, 21689048, +23638426, 1813550, -17678622, 38270844, -16022912, 63719060, 871878, -29329794, -9127, -4959077, +-33339684, 64020784, 12860743, -9359807, -75572632, -37613176, 21323438, -27660664, -25024090, 29773250, +-110795120, 2964601, 21859236, 16205448, -8944806, 31338228, -19050864, -2299955, 163746, 16407312, +-4595078, 3492345, 22100828, -1365263, -5555004, -6812892, -7932268, -173409, 2488934, -1293859, +-3333432, 14448270, -19973208, -4304094, 2384781, 3512747, -11964168, -20069846, -5148055, -6037114, +-2894808, -1508607, 3922379, -22284438, 1726577, 17216376, -10616622, 13205951, 9984725, -9613211, +606664, -6991133, 2830920, 4967130, -10479183, 29603062, -14297946, -13012140, -17047262, -15463493, +-7722888, 13899051, 18979998, 11448235, 47673600, -9571335, 10555956, -4927401, -25082072, 12076374, +-16097537, -9233643, 9587978, 21185464, -23011898, 24459302, 2546379, -1598802, 50272592, -10623065, +-5919002, 37553584, -24533926, 33130840, 14156749, -8296803, 13064217, 13743895, 30954366, 32119376, +9150965, -26744224, 54912232, -55746528, 1583232, 50013820, -27403502, 10781442, -6259915, -6911140, +-58653148, 39257612, 10212895, 17210470, 18321256, -12519293, -29327648, -22245246, -17973902, 2367064, +55206436, -26844, 43247636, -14880451, -33742336, 1431298, 12257300, -27917288, 44395468, 17742510, +21691732, 43670152, 28307056, -47604880, 17755932, -68102072, -83837224, 1314797, 70164736, 43707196, +5465346, -50248432, -178121424, -33159296, 54786064, 62402652, 88866096, -4987531, -113190640, -64191508, +-59064392, 89855544, 68834904, -12940736, -45348948, -26896158, -55100136, -7493108, 70536248, -7354058, +16355772, 11316702, -11784317, -26124138, 38368016, -16149614, 21330418, 15255187, -1633161, -36316096, +48924508, -19881940, -9429064, 13684303, 12583180, -27105538, 294742, -8869107, -10166724, 2836826, +-1090922, 19102940, -35236448, 18044232, -42374684, -7246147, -7159174, 49661096, 1389959, 13050795, +-30758408, 15442555, -11616813, 21604222, 26476862, -13448079, -30566208, 10376641, 7842074, 25085294, +21161840, -5706401, -8346195, -4319664, 17398912, 2731062, 17534204, 7287486, -43545600, 36702108, +-27358942, -4665945, -17697412, 17106318, -19891068, -762894, -2046552, -5321465, 4139812, 18850074, +-19769734, 8815420, 1593970, -4486094, 311385, 13332115, -16717086, -4472672, -2427730, 27584428, +-27796492, 7494718, -12173548, 18324478, -20295868, -5653251, 6975027, -3805341, 3862249, -13007308, +-2321430, 12017855, -3610457, 4729833, 3764539, 2629594, 14854681, -13622563, 9313637, 10869488, +13253195, -1708860, -30802432, 4101694, 3638911, 12700218, 11431055, -2078227, 3046206, -5020280, +-14024679, -2214056, 6386080, -2466385, 18664854, -15047955, -5076652, -30197378, 9030169, 3464965, +-4835597, 6972343, 5878737, -249645, -15742129, 5080947, 15273977, -2790655, -2295660, 6223408, +-6251325, 11650099, -7131257, 2148558, -14477261, 7024419, 2646774, -2079301, -4023311, 8557185, +-4076998, -5832029, -8776229, 9298067, -459562, -4330938, -2040110, 9262634, -3673808, 4226248, +-5111548, -2780991, -579821, 564788, -206695, -4725001, 427349, 403190, -4307316, 4531728, +-4098473, 12063489, 1743220, 1845762, -16481937, 4883915, -468688, -6246493, 7259569, 14136348, +-10194642, -1973001, -540092, -6930467, 10819023, -1523640, 1399623, -6933151, 3613141, -1231582, +1166621, -4300336, 4214437, -4287988, -24865176, 60288456, 16434692, 14898168, -7972533, -19297824, +-18568218, 5274220, 11705396, 1850057, -687732, -61203, -8807367, -1598802, 4233227, -2330557, +1822677, -938450, -8823473, -454730, 4369593, 6891275, -6141803, 1696512, 4410932, -8787503, +14430553, -8756365, -7647190, -7589207, 1970853, 4227322, 6694244, -7300371, 9339943, -13451838, +8916889, 7963406, -5929739, -602906, -432181, -1537598, 6948184, -7475391, 2178622, -2382096, +-9689446, 13734232, -7672422, -247497, -5686000, -1763621, 9560597, -12475269, 5077188, 3476239, +-5462125, 4602595, -10662793, 3106335, 4424890, -7900593, 181999, 4268661, -7330436, 7366943, +-10116259, 2821794, 10347650, -15143518, 4352413, -5775658, 1035624, 5973226, -4538170, -2301566, +1060320, 1315871, -917512, 4275640, -3249680, -2775086, 2065879, -2479270, 1350230, -943819, +1778653, 1698660, -2460480, 1245541, -476741, 2221035, -2033130, -550830, 1473174, 65498, +-1181116, -3506841, 2218351, 2354179, -540092, -2419677, 2311229, -103616, -1107565, 2409477, +-5032628, -1004486, 2825015, -3604551, 5251135, -3213173, 233002, 8750459, -2554969, 6307697, +-3592203, -335007, 6932077, -4855461, -1849520, 9045201, -46580532, -109298864, 30946314, 107009648, +73595872, 116361936, -64772400, -68946576, -94017904, -108833936, 2345052, 83985400, 86769080, 90589984, +17790828, -29925184, -59389196, -85243288, -72248864, 5636608, 56138980, 66588636, 59915332, 14341970, +-16546362, -10331544, -46770048, -52313776, -22064858, -1418413, 20133732, 44126492, 21559126, 16010027, +22106196, -11028402, -26233660, -4290673, -41945188, -19674708, 469225, 6664716, 31980864, 37235220, +3310883, -5636071, -3490735, -27469538, -7437273, -381178, -5710159, 9514963, 18402862, -3919695, +-1453310, -7217693, -11481521, 2359011, 1140314, -1251446, 20763482, 14055280, 5196911, -526670, +-19572166, -28302760, -22379464, 1618129, 21070036, 18087182, 23737748, 3230352, 620623, 5399848, +-29453276, -16764331, -13848585, -2516851, 22604950, 5113159, 7585449, 21088290, -12167642, -17702782, +-4119411, -3020973, 6539088, 7603703, 2379412, 4246112, 1860258, -10866267, -11260331, -2744484, +-2147, 8100845, 11720966, 3848291, -1654636, -2542084, -3333968, 2939368, -3287798, -13817447, +-2168422, 3262028, 6405944, 13765370, 3352759, -2849711, -6612102, -11311870, -2474438, 1145146, +3689914, 6477885, 8087961, 6374805, -3264175, -9800578, -10334228, -9014063, -1032940, 4493610, +4971425, 13299366, 13650480, 6658810, -2946348, -16777216, -17749490, -8223252, -6220724, 6276021, +16569984, 12283070, 5309654, 72478, -1319092, -2157684, -5069135, -8332237, -8016020, -3419331, +1175747, 3473555, 5557151, 8075613, 7699803, 2952790, -2989834, -6476811, -7013145, -5205501, +-1972464, 1068373, 2479270, 2449742, 2974802, 3425237, 2632815, 74088, -2011655, -3477313, +-2837900, -1035624, 598074, 1379758, 238371, -153545, 243739, 357556, 1023813, 1087701, +-36507, -1146756, -477815, 893353, 228707, -1025960, -842350, -139050, -695248, -1144072, +-183073, 2070711, 2803540, 870805, -689342, -1047972, -746251, -474057, -807454, -1125818, +-443455, 791348, 1271847, 716723, 583042, 700080, 132070, -448824, -947577, -966905, +-679679, -226560, 466004, 782758, 572841, 466004, 233539, -126165, -473520, -655519, +-499290, 16106, 340376, 379568, 280784, 84289, -178241, -394063, -279173, 42413, +195421, 209380, 202400, 88584, -103079, -182536, -114354, -53687, -13959, 30065, +41339, 28991, 13422, -5369, -20938, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -4407710, --2930242, 1226213, -1134408, -1394791, -2151242, 518080, 4252555, -1371705, 9127, 431644, -7286949, -147103, 1388348, -3003256, -2093797, -747861, -1973001, -2112050, -1990181, -1347546, --1891933, -2486786, 2080375, 3466039, -1915555, 527207, 130460, -3935264, 100395, -87510, --2804077, 5268851, -2704219, 2996277, 1130113, -807454, -3036005, -2792266, 2697240, -1408749, --1034550, -4160750, -1074816, -384400, -1978369, 5558762, -1228898, -346819, 2306934, -402653, --4646618, -2376191, -4099010, -2738579, 6317897, -1776506, 7027640, -25233, -310311, -1273458, -801548, 300648, -4209068, -4460861, 3231963, 375810, 2190433, -293668, 2553895, 1586454, --4081830, -20401, 1329292, 2196339, -29528, 1855426, 3342022, -4479114, 1159641, 1161789, --2270964, 8053, 994822, 3229279, 2094333, -2234994, -706522, -112206, 725850, 1034550, -750546, 853625, -619549, 449898, -1251983, -770410, -49929, 1652489, 688805, -35433, --151398, -1097901, 617938, -70867, -415538, -79994, 544924, 261456, 380105, 1073205, --390305, 481573, 1231582, 9575630, -804770, -1217086, -2520072, -5318780, -6548752, -5996848, -609349, 5242545, 1801202, 7016903, 2377265, -3263638, 802085, -8471823, -7182259, 3257733, --2557653, 4611721, -490163, -3795677, -1916629, 9212168, 2015950, 3862786, -231928, 2944737, --1436130, -1194538, 1781338, -1333051, -4101694, -354335, 1428077, -527744, -296890, 5839008, -3593277, -6393596, 91268, -4076461, 6624987, 3892851, 225486, -2428804, -2493229, 3017215, -1660542, 4927401, -4682051, 7854959, 9652939, -2730526, 9403294, -69793, 4902705, 3024194, --1802813, 1582696, 7526394, -943282, -5169530, 4323959, 1359894, -113280, -642098, -957241, -270583, 4366908, -2896419, 1549946, 1132261, 2284923, -3721589, 4112968, 911607, -425739, -1264868, 549219, 350577, -235149, 887985, 2392834, -1784022, 929860, 595390, 972273, --1633698, 52613, -2588255, 380641, 1133871, -1524177, -992137, 275952, 642635, 762894, -172336, 689342, -59056, -48855, 1484448, -208306, 329102, -8319889, -6500433, 2073932, --3670587, 2658585, -4592931, -6533182, -6037651, 868657, -4504347, 4168266, 3060701, -5793374, --1174674, 2393371, 578747, 2938295, -1692217, 3039763, 3735548, -5137855, 1675574, 1727651, --4125316, 2465848, 449361, -4865124, 3655554, 3533148, -1717987, 3858491, 571768, 3155190, -2851322, 1213328, -1818919, -426276, -5846524, -1737314, -2895882, 3121904, 3274376, 1316408, --9380745, 1829119, 3981435, -2091112, 6629819, -5370320, -7151121, 581431, -2108829, 2328946, --5101348, 9372156, -473520, -3087545, 931471, 153545, 5332202, -265751, -3085397, -168577, --2090575, -2830920, -3618510, 1746978, -6553047, 712965, 252866, 1967632, 4399657, 1483374, -3133716, 4876399, -3297461, -543850, 1090385, -4097936, 2836289, -1370095, 2418067, 1962800, --1275068, -937377, 3553549, -1109712, -3228742, 499827, -339302, -79457, -1742146, 2624762, --1990181, 1024350, 968515, 1359357, -514322, -494995, 156229, -949725, 386547, -636729, -59593, -378494, -978716, 1309428, -501437, 321586, -180389, 124554, 10201, 273267, --1670205, -19943144, -286152, -2399276, 14120779, 348429, 891206, 3042984, -1921998, 7130720, -1790465, -7545721, -4037806, -8859981, 1620276, -588411, -3014530, -2540473, -3219615, -2044404, -10995116, -5007932, -2449742, -2822867, -8308078, -326418, -2010582, 2879239, 4182225, -1327145, --16643, 2467459, -2520072, -671089, -1050120, -2996814, 3386582, 6775848, -769336, -1091459, -5375689, -7036767, 4625680, -5613523, -11333882, -7183333, -11287711, -1700270, -6418829, -4314295, -1233193, 4545686, 2334852, 3256659, -1628866, 3944928, -4769561, -1058710, 4150549, 11811, -5747203, -2350958, 1803886, -3968013, -2972654, 2994666, -6874095, 1886564, 5248987, -6716255, -757525, -1755031, -3069291, -4394289, -3927211, -1291175, -1686848, 1102196, 4922033, -2308545, -1597728, -4027069, -4264903, -3373697, 1736777, 2352032, 700080, -1032403, -1175747, -1783485, -1098975, -1506460, -1270237, -585726, -1170916, -121333, 341450, -2164664, -413391, -224412, --1568200, -393526, -642635, 47245, -179852, -2972654, 479963, 1307281, -460098, -1146756, --8590, 1908576, 1081795, -692027, -2003602, 1187559, -144418, -657667, 12809203, 95026, --7132867, -6852084, -2345589, -4993973, -1923609, -3751654, 984084, 632971, -5642514, -3308199, --6198712, 11773042, 4989679, 1101122, -664109, 6393059, -9514426, -132070, -200790, -5994701, --8007430, 7187091, 144955, 5134097, -8033737, -3493419, -2800319, 2812667, -288300, 3453691, --5543729, 1697049, 2265595, -5974300, -5773510, -5195300, 1245004, -1695438, -1618666, 5091147, --1489280, 585726, 89121, -975494, -5731634, -3466039, -663572, -8580271, -5628018, -4507568, -2391223, 1675037, 3436511, -822486, 1501091, -68719, -885300, 4033511, -3113851, 7005629, -973884, 2141578, -924492, -2274185, 2771328, 2188286, 5505075, -1633161, 856846, 3395709, --1995012, 99321, -7286412, 3461207, -5611375, 3583077, -4150012, -3997541, -7858180, -1498407, -1981591, 894427, -1331977, 1864016, 784905, 3622805, 576063, -1054415, 3131568, 1752884, --2806224, 721555, -2284386, 2506114, -1009317, 455803, -635655, -245887, -2018635, -35433, -98784, 418759, -1191317, 977105, -1701344, 703838, -324807, -800475, -1512365, 429497, --1023276, 2158221, 575526, -522912, -952409, -813359, 1620813, 1140314, 1547262, 201863, -146566, 862215, -1800128, 15177878, 14371497, 10742787, -3550864, 3974455, 5467494, 3233574, -3112778, -5251135, -4575214, -6892886, 6250788, -6464463, -743029, -4687957, 8273181, -9056475, --6745246, -3340411, -1413581, -4964446, -7487739, 2204929, 452045, 492848, -9091372, -4990215, -2443300, 1966021, 2650532, -2432025, -3580929, 335007, 2803540, 3560528, -2522757, 3387656, --4803921, -1245004, -11834246, 4399657, 1481227, -2005213, -2203318, -8725226, -3956739, 1142998, --2078227, -12272332, 6690486, 2777770, 31139, -3289945, -2539400, -5175436, 1635309, -1817308, -3589519, -745177, -1728188, -6972343, -1314797, -675921, -3819300, 7712688, -5538897, 127238, -4600447, -1896228, -5994164, -3369939, 5221070, 7533910, 3748970, -557272, -190052, 3992709, --8071318, 3316252, -826781, -380641, 406948, 1758789, -435939, -326418, 435939, -1575179, --4864051, -1312649, -1467805, 1499481, 1071058, 572841, -1868311, -989453, -2162516, -2692945, --646393, -98784, 3255585, 309238, 465467, 401579, -1101122, -653372, 1511292, -1696512, --239981, 581968, 954557, -2027761, 48855, -181999, 1215476, -1459215, -324270, -862215, --1391569, -3118683, -1408212, -156766, -1333051, -3758, 182536, -157840, -1698123, -688269, -18285286, 6129992, -2680060, -2138357, 6415071, -12362526, -2334852, 10004589, 5009543, -6979322, --163746, -4736275, 1923609, 7694971, 18894634, 6238977, 14714021, -5217849, -1104344, -14327474, -4852240, -4180077, 4022774, -6274947, -340913, 606127, -2244657, 5144297, -2315524, 2457795, -6318971, -4847945, 2844879, 8087424, -2215666, 2707440, -2684, 3253438, 4415764, 4554813, --24318642, 8892193, -2822331, -11377905, -2002529, 6956237, 2113124, -8787503, 4730370, 6937446, --14329085, 1156420, -4055523, 8429947, 1908576, 6965900, -1715839, -5000416, -10068477, 625992, --6096706, 18988050, 3490198, -3106872, 6308233, 809064, 6103149, -14919643, -1984275, 2318746, -4609574, 1114007, -7005092, -1085553, 2532957, 6661495, 5587753, -4617090, 104153, 6556268, --306016, 3098282, -2301029, -1103807, 4561792, 468151, -381178, -602369, 206158, 2272575, --2189897, -932008, -302258, 1774895, 1666984, -192737, -631360, 4552129, -1468342, -741956, --2414309, 350040, 1195612, -1149978, 51540, 1430224, 1812476, -1571421, -769873, -2634963, -164283, 2164127, -1051730, 441845, 942208, 1148904, 3606162, 520228, 1745904, -56371, --1622961, 2436857, 542240, -21708376, -23809152, -8151848, -1858647, 437550, 5057861, -10167261, -3207267, 11988327, -6878927, 6382322, 8297340, -5780489, 176631, -2814277, 10147397, 14159970, --6784438, -7989176, 7116761, 688805, -6800007, 3223373, 110595, 1780264, 2021319, -3628174, --2651069, -15121506, -781684, -4319127, -352187, -439697, 10281078, 3062849, -18467822, 319975, -8898098, -10086731, 2653753, 10872710, -2394981, 3835943, 213675, -2835215, -7023346, 13976897, -11742441, -8919573, 4670777, -3306588, -471910, 4363150, -3109556, 3663607, -5538361, -610422, -11785390, -3330210, 2485176, 5592585, -4039417, -9672266, -426812, 3353296, 1710471, -4634270, -602906, 2639258, 4181688, 8652748, 5324149, 9519795, 5002027, 1864016, 4399121, -1527935, -8544837, -248571, -6781217, -9074729, 1101122, 2990908, -1613297, 6844568, -3539053, -3641596, -2685965, -820876, 707596, 384400, -4234301, -549219, -2561411, 3136937, 1363652, 2531346, -4833449, 649077, -1748589, -7005629, -571768, 1681480, -1831804, -681826, 680215, -1521492, -1473174, 1615982, 166430, -1611687, -1219234, 3502546, -523986, 1672890, 820339, 1171452, --2511482, -2565169, -1585380, 658741, 1148367, 2124398, 1491964, 1071594, 921807, 2658048, --722628, -2492692, -23599772, 25866440, -1731409, 16564615, 1064078, -9953050, -3133179, -5854578, --7050189, -1104880, 251792, 11924440, -2134599, 8127689, -8603356, -654446, 1860795, 1716376, -746251, 10339060, 10310606, 3639448, 1472100, -1532767, -2251100, -805843, -1951526, -17770964, --6187438, 7897371, 5036386, -2157147, 700617, -8514236, 4019553, -10394895, 2042794, 16007343, -1575716, 3322694, -13660143, 7002944, 6096706, 1536525, -9222905, -4148402, -4394826, 548682, --8295193, 8104067, 9958419, 5927592, -1071594, 15000173, 5214627, 22042846, 8519068, -6133214, -18354542, 232465, -6919729, 13223667, -2347200, 4242891, 8289824, -6284611, -5382668, 12219719, -13174812, 7694434, -10972568, 3927748, -259846, -5178120, -9038222, 6411850, 11646341, 6951405, -16980690, 2184528, -3926137, -3995930, -10707353, -4179540, 6394670, 846645, -2080912, 246961, --6732361, -4784594, 779000, 1518808, -363998, 6920266, 5458904, 2319282, 86436, 1910724, -3221226, 1568200, -3423626, -1493038, 826781, -916976, -1266479, 2823941, 133681, -1002338, -2266669, 757525, 635118, 784368, -2303176, 395137, 6070400, -2966749, 3779034, 1668058, -33286, -2946348, -3231963, -1741072, 1185411, 5758478, -12549358, 16703665, -4818417, -10961293, -3675418, 7270306, -7277285, -3679713, -15371688, 6449431, -5637145, -1843615, -14093398, -6182606, --4782446, -2398202, -6358699, 3338800, -2857764, -3457449, 3308199, 4672388, 8198019, 8059506, --3489661, -2889976, -11368778, 4494147, 203474, 7495792, 2036888, 2024003, -2592550, 3013457, --7119982, -5990943, 3318399, 1726577, 3367254, -13829795, 4609574, 9086003, -60130, -12176769, --12772159, -9904195, -29412472, 4177930, -3420942, 14244259, -6998649, 11839077, 3751117, 830002, -15189152, 2345589, -1803886, 10972031, 4006668, -14903000, -7468948, 1809255, -4811974, -8448201, --5206037, 19270444, 8797704, -9032853, -1157494, -5062156, -2547453, 2840047, 13530221, 274341, --3712999, 18009872, -6511171, -16307454, -15655156, -18458158, -3355980, 1444183, -558346, -3222836, --2339147, -7874286, -1634772, 2345052, -2535641, -2308008, 1475321, 1546188, -11713450, -4745402, --9195525, 469225, -3180423, -2914135, -4971962, -1489280, 1201517, 7096360, -32212, 8695161, -4151623, 6397354, 562641, 3034395, -3085397, 5838471, -156229, -4130148, -6352794, 3631932, -440234, 2030446, -1762547, 1186485, -2100776, 2051384, -849330, 2423435, -646929, -971200, -1380832, -277025, 7275138, -12087112, -3051038, -3249143, -1599339, -853088, 32056026, 5239323, -11708081, -5702643, 10222022, 20656108, -17733920, 26838714, 15896748, -7194070, 220117, 1617592, --9676024, -16204375, 1092532, -9399536, -14471892, -6487548, 1261110, 13422, -1799591, -6505802, --1110786, -6334540, -465467, -7321309, -558883, 5000953, -11381663, 6229850, 9536438, -7453379, --6947110, 4927938, 3702262, -656056, 28770912, 2534031, 19168976, -13808320, -1369021, -16740709, --12316356, 2953864, -12353937, -16922172, -11314018, -12853763, -2836826, -3425773, -14304925, -15511274, -20201378, 3175055, 1235340, -2745021, 10445360, 5818607, 12606266, -1255204, 11912092, -6684043, -2681670, -22363358, 18227842, 8834748, 1391033, -12281459, -972273, 5547487, 1116692, 2138894, -8977019, 12592307, -9803263, -12534862, -8305393, -1959579, -263067, 1374926, -7421167, 843961, -2052458, 5191542, 6684580, -849330, -4230006, 7032472, 3408057, -5242545, -427349, 2543695, --3204046, -5539971, 931471, -1876364, -1899449, -164819, -2506650, 6448357, -6875706, 3744675, --273804, 7132330, -7526930, -1802276, 1166084, -1884954, -2924873, -1192390, -5992553, -6483790, --1321239, 685047, 1818382, 2357937, -4503810, 4469451, 3274376, -2651606, 3885335, -783295, -2183991, 198642, 2157684, -1801202, -1527398, 614180, 1067836, 2618856, -442919, 3592740, --1770063, -1241246, 537, -1301375, 2267206, 2306398, 15679315, -6322729, -5145908, 17498770, --14630269, -11142219, -2691334, -8851391, -1371168, -17428440, 3972308, -10710038, 8311836, 1219771, -2866891, 10049687, 2922188, 7109245, 9740986, 9256191, 7646653, 12948253, 1578401, 8819715, -7903277, -9352291, 16326781, 4043712, 7572028, -8726837, 12750684, 5783711, 8966818, 2316598, -3227131, -1591822, -11675869, 3040300, 6670084, 7871602, 8578123, 1893544, -14208826, -8953933, -10293963, 5636608, 2374580, -5357972, 7138773, -5122286, -14241575, 21032454, 12849468, 9424232, --8028905, -3910568, -10598369, -33097018, -961536, -4566624, 4323959, -7682623, -8282845, -14558865, -2629057, 4755066, 18602040, -14570140, 5981279, 340376, 8589935, -12817793, -15770046, -9563282, -10267119, 3190624, 3246995, 5507222, -4290136, 1889249, 12030203, 4341675, 6120329, 7728257, --2997350, -2699924, -4963372, 212064, 5294084, 6577743, 304406, 2782602, 1372779, 1148904, -4984310, -2943126, -2546916, -4189204, -2343442, -4336307, -66035, -6638409, -2648921, -7020661, --323733, -4175782, -1155346, -860604, -2393371, 2178622, -1700807, -9034464, -1286880, 3805341, -4095788, 7693897, -1039382, -4343823, 2234457, -1620813, -6582038, 6309844, 5300527, 5164162, -11772505, 7816304, -543850, 583579, -2516314, 3272228, 1048509, -27091580, 15087146, 16077673, --8443906, 13667660, 4504347, -22891638, -4293894, 29402272, -4524211, -20046222, -3387119, -2189360, --17462800, 11729019, 2198487, -8943196, 12654584, 8309151, 30327838, 17666274, 179852, 1971390, -28595356, -7690676, 7016903, -12082280, -17282948, -5343476, -11835856, 2324651, -1137093, 5549098, --1176821, -2345052, -5181341, 22502408, 811212, -18216030, -14530948, -3511136, -3985193, -908386, -7144678, 20518670, 12993887, 4127464, -12903692, 15904264, 29258390, -6511708, 13133473, 12299713, -35315904, 6513318, 6503118, 10509785, 14890115, 8158827, -12505871, -12006581, 7910793, -22082574, --13430363, -15896211, 14555644, 12732431, 8790724, -3795141, 10657424, 22601192, -13312251, 17954574, -17843442, -2680597, 17535814, -16988744, -7670812, -6080600, 37044092, -18456548, 18067316, 11238319, -6484327, 4984310, -16790638, -1865626, -13261248, 13721884, 12984760, -433792, 713501, -6889128, -9642738, -4099546, 729608, 3517578, 3801583, -243739, 5785858, -4381404, -2500208, -1870458, --4407174, 1678259, 3392487, -3284576, 1413581, 4090956, 7314330, 963146, -7227356, 2761127, --7813083, 1161252, 6567005, 4256850, 6961068, -1436667, 11378979, -4792110, 8334384, -2432562, --3039226, -1707250, 228170, 9205726, -7074885, 4333085, -457951, 4395899, -5811091, 1297080, -2000918, -2697240, 12066174, -6914361, 5221070, 5700496, 20216948, 36251136, 3677566, -3995393, -3623342, -2172717, -6247567, 875100, 3565897, -9111236, -12115566, 3830037, -6411850, -3556770, -9043054, -651761, 18004502, -9790915, 17644262, 8616241, 1505386, -10565083, 3122978, 17683990, -4910222, -9233106, 3269007, -2316598, 242666, 10332081, -14790257, -7833484, 15948824, 200253, --4271882, 13939316, -963683, 4847945, 2930242, -13604309, -24834038, -5325760, 8247411, 15623480, -3128884, -12195560, 15444702, -5260261, 31614180, -16252693, 21179558, -12639015, 7397545, 18313204, --27481348, -28198608, -475668, -8039642, 6977175, 8886287, 1004486, -4211753, -16919486, 11142756, --2700461, 19893752, 8728447, 18524194, 4777078, 10762114, -4829691, 14217415, 4857071, -8585103, -1436130, -288837, -41419592, -1258962, 6931541, 9910637, 17083232, 14711874, -5114769, 1210107, --3368328, 2731062, -327491, -4595615, -11221676, 4716948, -6685654, 14244796, 1352915, 2771865, -6674916, 4141959, -4821101, 4113505, 9996536, 9065065, -3427921, -1633161, 1137630, -2177549, --1843615, -6427419, -1522029, -13483513, -2239289, 4666482, -11635066, 7857643, -8876624, -6860137, -1647657, -6971806, 6769406, 2831457, -3073586, 4728759, -932008, -703838, 2597918, 9997073, --7300908, 1627256, 1076426, 4471061, 2778844, 2094870, -4131759, 23893976, 30876520, -6633577, --1109175, 10950019, 40814000, 1231045, -24016384, -9549323, 4977330, 4728222, -7543037, 7882339, --5428839, 12720083, -20362440, 1173063, 12799003, -8432095, -9149354, 1879585, -20131586, -6120329, --6514392, -32052804, -27091044, -15628312, 11915850, 14059039, -2385318, -22774600, 2636036, 926102, --751619, 4702453, -11435350, 27592480, -7788923, 3619584, 30493730, -26525182, 12899397, 4630512, --9246528, 11198053, -7153805, -21476984, 492848, 18824842, -8321499, -13439490, 7826504, 2658048, -17861158, 276489, -27435714, 2343442, -16207596, 27214524, -9787157, 4243428, 6684580, 3400004, --3860639, -17414482, 7362111, 18592376, 5377299, 19180788, -27834072, -15167140, -4573067, -79457, -3015067, -21322366, 19262928, -2468533, -20478404, -6655589, 12968117, 12243341, -11340324, -15569256, -15567109, -12351789, -7856032, -93416, -1926830, -1513976, -1017370, -4381404, -871878, 8020852, --1777580, 7392176, -8228621, 5924371, 7490423, -1788317, 4042101, 1453310, -1526324, 337155, -1013075, 13612362, 694711, -2306398, 1134945, 3229816, -6681359, 2659122, -8543227, -405874, -9873056, -3267396, -7784092, -2587718, 4423280, 444529, 319975, 6137509, 459025, -7479686, --4058744, 14519674, 10362682, -3089155, -615791, -146029, -21130702, 31061204, 885300, -53202296, -21311090, -7313256, 4146254, 5427765, 7143068, 13059385, 4760971, -9633075, -2326799, 13151727, -8892730, -10564546, -565325, -8382166, -4345970, -26132728, -3335042, 12576201, 15618649, 3510062, --6199249, 17301202, -17823578, 19713364, -11359115, -6381785, 2349347, -6118718, 5255966, -15728707, --21233244, -23763518, -7606387, 12303471, -4752382, 118648, 14471355, 4017405, 2528662, -455803, -491237, -5006322, 194347, 15595026, 9601399, 16457778, 13960254, 16510391, 11236708, -9819906, --6261526, 4054449, -1052267, -18977312, 12759274, -3436511, -17927730, 22502408, -254477, 3655554, --626528, -8188355, -2702071, 9448391, 13690745, 11385421, 348966, 6972343, -22963042, -3264712, --8183524, 12492449, 4313758, -6403796, -7304666, 28913182, -8815420, -9910100, -3133179, 4659503, --7159711, -19059454, -1075352, -3269007, -10296647, 17854180, 3644280, 6717866, -5488432, -961536, -4159676, 1067299, 5253282, 5659157, -1855426, 3467649, -3438121, 3930432, 1500554, -3165391, --2390686, 2908230, 4110821, 1109175, -3629247, -3021510, -3262028, -2419140, 88584, 2033130, --2953327, -3593814, 858457, -294205, -635118, 3089692, -1442572, 4900558, 1502165, 14375792, --1203665, -1818382, -3156801, 1750736, 89657, -6059662, -7962333, 72469520, -71069360, -3511673, --77274512, -11915313, -29359860, -3527242, 18913426, -9533754, -21363168, 33789580, -9092446, -5825050, -1149441, 10451266, -1175210, 28092308, 18592914, 11178726, -16525960, 1155346, -11267310, -11438035, --7656853, 468688, -3511673, -3049427, -9327595, -2033667, 15519327, 1955821, 10276246, 10288057, --807991, 13717589, 19937238, 1112933, -4070019, -10354629, -12409771, 5006858, 5450314, -10263898, -16893180, -22274774, -22566832, 2525441, -7894687, 12108050, -20924006, 8966818, -40242232, -21417392, --32216550, -2765959, -15901580, -1415729, -9706626, -12080669, -10530723, -940598, 2728378, -31457952, -3587908, -6874632, 3611531, 161598, -14553497, -25591026, 17707076, -15394237, -2751464, 15859167, --1606318, -4954782, 10482405, 13146895, -2710124, 13095892, 8567386, 15822123, 8720931, 16010027, -7577933, -9472014, -2639794, -8342974, 381715, -6906845, 1479616, 5806796, 8195872, 8987756, --3984656, 4182225, 2996277, 5897527, -1396938, -2237141, 3075734, 7066832, 930397, 1651415, -7783555, 4002373, 8012262, -1133871, 369904, -818728, 3908420, 5555540, -1008780, -9212705, -5055714, -1531156, 1963874, -2886755, 1281511, -2612951, -1364189, 491774, -7684770, 133144, -10522670, -6570763, -6940131, 914828, 3591667, 3673271, 1241782, -7271917, 58631672, 29427506, -14221174, -14234595, -7376070, -30670362, 6722698, 24515674, -4820027, -5890548, 40206800, -7261716, --8966818, 19858318, 29431800, 5036923, 30019138, -7577933, 4356171, 17673790, 20013474, 31561568, -25556666, -1420560, -11434277, 9433896, 11502996, 10817412, 13526999, 23580444, 11549167, 30007862, --11697880, -882079, 8767102, 8081518, 25447144, 14725832, 27275190, -19775640, -6226092, 10808285, --21246666, 17044040, 17370458, 16577500, 7068980, -21477520, -7843684, 40459664, 10409390, 27245126, -22651658, 24773908, -5137318, 32866700, 51583096, 17675402, 4519380, 36107792, 24982214, -14044006, --8619462, -17635672, -14056891, 15134928, 17677548, 1429150, -14963666, 198105, -13383118, -735513, --5998459, 8618926, -31428960, -3702262, 3136937, -16025060, 11964705, 1999844, -9841918, 8267275, --19792284, -12974559, -21923660, -7444789, -10590852, 7618198, 2382096, -10305774, 2281165, 14183056, -4198331, -4809290, -8713952, -13637058, -5242545, 4356708, -19148574, -9045201, -1650878, 15249818, -5142687, -6657736, 3204046, -10437844, -2835752, -3295851, -8551280, -5639292, 14368813, -3444564, --1017370, -3634616, 3394635, 9061844, 6539625, 7746511, 19828790, -103079, 15988016, 618475, -1650341, 9886478, 8588324, -13291313, -7611756, -1160715, 3101503, 1269163, 138513, -1452236, -6278706, -18450106, 9327058, -22260816, 39296268, 55759948, 32500554, -14155138, -30470108, -11139535, -27617714, -8026757, -22693534, 41603200, -28653874, 24900072, 14070313, -32446868, -13418552, -3286187, --53692996, 2275796, 6261526, -25792890, 53061100, -18057654, 49284748, -36715528, 5546951, 2518462, -36053028, 53149148, -4287451, 18157512, 25099252, -29134910, 19740206, -39491688, -10860899, 75533440, --4167729, -20614770, -3996467, -41995652, 1899449, -13095355, 47230144, 18119394, 22027276, -7036767, --12383464, -23279796, -21642878, 5669357, 3085397, 325881, 31471910, -7414188, 6066105, -32363652, --16814796, 21985938, -48455284, -18903224, -14523432, -16356846, 45387604, 3539053, 49031884, 35349192, -15680926, 19030464, -10907606, -25618406, 21996138, -34956200, -21451752, 43719544, 13265006, -25899726, --43102144, -25845502, -30656940, 24954296, -26457536, 14041859, -19093278, -1379221, -16391206, 17805324, -10268193, 1831267, -14215805, -2347200, -9802189, 3195993, -19353122, -13151190, -7263327, 4574140, -10875931, -86436, -7864622, -10747082, -17987324, -12592307, 11487427, 15963320, -4894652, 11111080, -21977348, 10805064, -20350628, -5682242, -7464653, 13198971, -12411382, -7868380, -2909304, 5069672, --16324097, -21756156, -15682536, -4917738, 9084930, 34360, 2061047, -2790655, 12432857, 4223027, --761283, -11124502, -3783329, -6764037, 8746701, -2146410, 2098092, 35140884, -58771260, 62159988, --1738925, 4619774, -20148766, 50156628, 11641509, 32234266, 12073690, -21434034, 7068980, 17819820, --30988726, 21369072, 203474, 14114336, -41306312, -3398393, 9904195, 37673304, -15975131, -31427350, --1551020, 37465000, 19693498, -14583025, -32647658, -1797444, 27012124, 3361886, 1716376, 7341173, -19592030, 49715320, -70536248, -11802570, 6626598, 38938712, 8590471, -21517786, -5450314, 14713484, -35651988, -3812857, 1578401, -67676336, 19376208, 10353556, 18249316, -49156976, 43146704, 37093484, -13886166, -22344030, -2401424, -24702504, 18175228, 31739808, 13256953, 14750528, -2924873, 24012626, --35414152, 33250564, -10034117, -12125230, 39187280, 32203128, 1969779, -12440373, -32441498, 23476828, -25793962, -69422776, -5599027, 39617852, 9810779, -631360, -24863566, -10847477, 67572720, -5375152, --23243290, -3121368, -12574591, -15248745, 22414898, -19216758, 6781217, 10084583, 13651017, -9692667, -1268626, -9838159, -11662984, -7910793, 10298258, 10205379, -10674604, -2301566, 5121749, -8603356, -20415054, -19841676, 5069135, -3716221, -6422050, 7100118, 33864744, 2051384, 24159, -5616744, --11971684, -116501, 18433462, 4231080, -878321, -3745748, -8705362, 15554224, -4064650, -1080721, --9227737, 8855686, -1446867, -4320200, -52583820, 25236690, 4634807, 15960635, 19322520, 28213640, -9839770, 8872329, -13859323, 14404247, 2446521, 33532420, -4146791, -10390600, 26332982, 20113868, --4715337, 1470489, -11606612, 62277, 8185134, -2913062, -7021735, 14871324, -12305081, 1270237, -20307142, -4726612, 11630235, -21220360, -4482335, 2502355, -8830453, -3630321, 2187212, 14669461, --4014184, -25324200, 780610, 49613316, 10144713, -27336394, 7887708, -27865748, -19073950, -14524506, --4052839, 31568546, -3646427, -25652766, 51322712, -55997784, 9286793, 56615724, 5847061, 39721468, --30724048, -57285736, 18242336, 1688459, 45283988, 2139431, -25773562, 20834886, -5886253, -4986994, --11040213, -2082522, -16083042, 7701950, 2086280, 11885248, -19600084, -17010754, -6784975, 19889994, -25796648, -8912594, 13682692, -2348273, 21585432, 15088757, -27385248, 21529060, -5682242, 2962991, --4708895, -8747775, -165893, -396211, 2891587, -2361158, 2236067, 1677722, 1498407, 2850248, --9044127, 171799, 4976794, -7816841, -1009854, 4502200, -4844723, 5993090, 6929930, -10586021, -12380780, 4735739, 12829067, -3174518, 5944772, 10023380, -19584514, -569083, 5989869, 11091216, --6999723, -5535676, -6729677, -5217312, 11402064, 22564148, -9731859, -106081400, -243754432, -96599184, --146715008, -214809568, 115480400, 31938450, 66448512, 305956288, 235827520, 137586064, 251857424, 187937568, -32114544, 62139048, 51692616, -119334592, -102132176, -50017580, -182538800, -174536192, -66845796, -89669792, --126631744, -52927420, -45485852, -128869960, -107575512, -8918500, -61281132, -104482056, -35891968, 33348810, --75902808, 22875532, 112980192, -8585103, -16192564, 153461328, 122539712, -5336497, 179270320, 207756688, -84367656, 195198752, 273861088, 163419744, 141948128, 328678272, 262294192, 197233488, 233786880, 310098240, -110869752, 44022876, 129827736, -102349608, -293803136, -212952528, -324941664, -526171072, -471316832, -500182752, --581717376, -592851008, -511226752, -445141696, -446453792, -313833248, -139023792, -94118304, -14260902, 152336048, -279900864, 282594880, 350785536, 504700544, 441149504, 403304960, 557276864, 442954464, 250352576, 365381472, -255838848, 99365680, 89894200, 118074560, 12171937, -37207840, 22928682, 3420405, -82732344, -44043280, -7373922, -65840776, -122082832, -58566176, -83759912, -177770304, -112099184, -43255152, -132912056, -89288072, -17914846, -42174432, -62072476, 30514668, -36720896, -146380544, -112213536, -179693920, -303886112, -286110336, --274438208, -285029056, -250571616, -168308496, -131546256, -79125112, -15362024, 67011692, 118789672, 182319216, -229953088, 285655584, 297182208, 315216224, 351171008, 333135904, 305451616, 288976128, 191427760, 67463736, -6396280, -28631326, -81791208, -96422016, -84175456, -95040112, -106743360, -94031864, -94978904, -93069792, --78594680, -76689328, -80470504, -77655696, -67998456, -56378424, -48183092, -31522912, -19556596, -3972308, -2241973, 14318884, 21761526, 27354646, 28386512, 30036316, 29775934, 23423142, 13696114, 10580115, -5338108, -1497333, -7163469, -9122511, -20160040, -26324928, -32513976, -43333000, -51040856, -47828220, --46061912, -41101228, -30829276, -21849036, -16048145, -4029753, 8537858, 16728898, 25423522, 39543764, -42771968, 42411728, 45886356, 50422916, 46664284, 48507360, 50929724, 48279728, 46437188, 46646028, -41264436, 35532800, 31338228, 24085102, 13677860, 6203544, -2624225, -14336064, -26169236, -34802120, --45135812, -51350092, -54061292, -53309136, -52699248, -48287244, -41787348, -35224100, -28522878, -19915764, --14063334, -7572028, -2129767, 3038153, 7327751, 10848551, 13807246, 15938087, 15619185, 15316927, -13914620, 12097849, 10292889, 9065602, 7478075, 6085969, 4820027, 4054449, 3210488, 2785823, -2450279, 2230162, 1970853, 1804423, 1735167, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-2930242, 1226213, -1134408, -1394791, -2151242, 518080, 4252555, -1371705, 9127, 431644, +7286949, -147103, 1388348, -3003256, -2093797, -747861, -1973001, -2112050, -1990181, -1347546, +-1891933, -2486786, 2080375, 3466039, -1915555, 527207, 130460, -3935264, 100395, -87510, +-2804077, 5268851, -2704219, 2996277, 1130113, -807454, -3036005, -2792266, 2697240, -1408749, +-1034550, -4160750, -1074816, -384400, -1978369, 5558762, -1228898, -346819, 2306934, -402653, +-4646618, -2376191, -4099010, -2738579, 6317897, -1776506, 7027640, -25233, -310311, -1273458, +801548, 300648, -4209068, -4460861, 3231963, 375810, 2190433, -293668, 2553895, 1586454, +-4081830, -20401, 1329292, 2196339, -29528, 1855426, 3342022, -4479114, 1159641, 1161789, +-2270964, 8053, 994822, 3229279, 2094333, -2234994, -706522, -112206, 725850, 1034550, +750546, 853625, -619549, 449898, -1251983, -770410, -49929, 1652489, 688805, -35433, +-151398, -1097901, 617938, -70867, -415538, -79994, 544924, 261456, 380105, 1073205, +-390305, 481573, 1231582, 9575630, -804770, -1217086, -2520072, -5318780, -6548752, -5996848, +609349, 5242545, 1801202, 7016903, 2377265, -3263638, 802085, -8471823, -7182259, 3257733, +-2557653, 4611721, -490163, -3795677, -1916629, 9212168, 2015950, 3862786, -231928, 2944737, +-1436130, -1194538, 1781338, -1333051, -4101694, -354335, 1428077, -527744, -296890, 5839008, +3593277, -6393596, 91268, -4076461, 6624987, 3892851, 225486, -2428804, -2493229, 3017215, +1660542, 4927401, -4682051, 7854959, 9652939, -2730526, 9403294, -69793, 4902705, 3024194, +-1802813, 1582696, 7526394, -943282, -5169530, 4323959, 1359894, -113280, -642098, -957241, +270583, 4366908, -2896419, 1549946, 1132261, 2284923, -3721589, 4112968, 911607, -425739, +1264868, 549219, 350577, -235149, 887985, 2392834, -1784022, 929860, 595390, 972273, +-1633698, 52613, -2588255, 380641, 1133871, -1524177, -992137, 275952, 642635, 762894, +172336, 689342, -59056, -48855, 1484448, -208306, 329102, -8319889, -6500433, 2073932, +-3670587, 2658585, -4592931, -6533182, -6037651, 868657, -4504347, 4168266, 3060701, -5793374, +-1174674, 2393371, 578747, 2938295, -1692217, 3039763, 3735548, -5137855, 1675574, 1727651, +-4125316, 2465848, 449361, -4865124, 3655554, 3533148, -1717987, 3858491, 571768, 3155190, +2851322, 1213328, -1818919, -426276, -5846524, -1737314, -2895882, 3121904, 3274376, 1316408, +-9380745, 1829119, 3981435, -2091112, 6629819, -5370320, -7151121, 581431, -2108829, 2328946, +-5101348, 9372156, -473520, -3087545, 931471, 153545, 5332202, -265751, -3085397, -168577, +-2090575, -2830920, -3618510, 1746978, -6553047, 712965, 252866, 1967632, 4399657, 1483374, +3133716, 4876399, -3297461, -543850, 1090385, -4097936, 2836289, -1370095, 2418067, 1962800, +-1275068, -937377, 3553549, -1109712, -3228742, 499827, -339302, -79457, -1742146, 2624762, +-1990181, 1024350, 968515, 1359357, -514322, -494995, 156229, -949725, 386547, -636729, +59593, -378494, -978716, 1309428, -501437, 321586, -180389, 124554, 10201, 273267, +-1670205, -19943144, -286152, -2399276, 14120779, 348429, 891206, 3042984, -1921998, 7130720, +1790465, -7545721, -4037806, -8859981, 1620276, -588411, -3014530, -2540473, -3219615, -2044404, +10995116, -5007932, -2449742, -2822867, -8308078, -326418, -2010582, 2879239, 4182225, -1327145, +-16643, 2467459, -2520072, -671089, -1050120, -2996814, 3386582, 6775848, -769336, -1091459, +5375689, -7036767, 4625680, -5613523, -11333882, -7183333, -11287711, -1700270, -6418829, -4314295, +1233193, 4545686, 2334852, 3256659, -1628866, 3944928, -4769561, -1058710, 4150549, 11811, +5747203, -2350958, 1803886, -3968013, -2972654, 2994666, -6874095, 1886564, 5248987, -6716255, +757525, -1755031, -3069291, -4394289, -3927211, -1291175, -1686848, 1102196, 4922033, -2308545, +1597728, -4027069, -4264903, -3373697, 1736777, 2352032, 700080, -1032403, -1175747, -1783485, +1098975, -1506460, -1270237, -585726, -1170916, -121333, 341450, -2164664, -413391, -224412, +-1568200, -393526, -642635, 47245, -179852, -2972654, 479963, 1307281, -460098, -1146756, +-8590, 1908576, 1081795, -692027, -2003602, 1187559, -144418, -657667, 12809203, 95026, +-7132867, -6852084, -2345589, -4993973, -1923609, -3751654, 984084, 632971, -5642514, -3308199, +-6198712, 11773042, 4989679, 1101122, -664109, 6393059, -9514426, -132070, -200790, -5994701, +-8007430, 7187091, 144955, 5134097, -8033737, -3493419, -2800319, 2812667, -288300, 3453691, +-5543729, 1697049, 2265595, -5974300, -5773510, -5195300, 1245004, -1695438, -1618666, 5091147, +-1489280, 585726, 89121, -975494, -5731634, -3466039, -663572, -8580271, -5628018, -4507568, +2391223, 1675037, 3436511, -822486, 1501091, -68719, -885300, 4033511, -3113851, 7005629, +973884, 2141578, -924492, -2274185, 2771328, 2188286, 5505075, -1633161, 856846, 3395709, +-1995012, 99321, -7286412, 3461207, -5611375, 3583077, -4150012, -3997541, -7858180, -1498407, +1981591, 894427, -1331977, 1864016, 784905, 3622805, 576063, -1054415, 3131568, 1752884, +-2806224, 721555, -2284386, 2506114, -1009317, 455803, -635655, -245887, -2018635, -35433, +98784, 418759, -1191317, 977105, -1701344, 703838, -324807, -800475, -1512365, 429497, +-1023276, 2158221, 575526, -522912, -952409, -813359, 1620813, 1140314, 1547262, 201863, +146566, 862215, -1800128, 15177878, 14371497, 10742787, -3550864, 3974455, 5467494, 3233574, +3112778, -5251135, -4575214, -6892886, 6250788, -6464463, -743029, -4687957, 8273181, -9056475, +-6745246, -3340411, -1413581, -4964446, -7487739, 2204929, 452045, 492848, -9091372, -4990215, +2443300, 1966021, 2650532, -2432025, -3580929, 335007, 2803540, 3560528, -2522757, 3387656, +-4803921, -1245004, -11834246, 4399657, 1481227, -2005213, -2203318, -8725226, -3956739, 1142998, +-2078227, -12272332, 6690486, 2777770, 31139, -3289945, -2539400, -5175436, 1635309, -1817308, +3589519, -745177, -1728188, -6972343, -1314797, -675921, -3819300, 7712688, -5538897, 127238, +4600447, -1896228, -5994164, -3369939, 5221070, 7533910, 3748970, -557272, -190052, 3992709, +-8071318, 3316252, -826781, -380641, 406948, 1758789, -435939, -326418, 435939, -1575179, +-4864051, -1312649, -1467805, 1499481, 1071058, 572841, -1868311, -989453, -2162516, -2692945, +-646393, -98784, 3255585, 309238, 465467, 401579, -1101122, -653372, 1511292, -1696512, +-239981, 581968, 954557, -2027761, 48855, -181999, 1215476, -1459215, -324270, -862215, +-1391569, -3118683, -1408212, -156766, -1333051, -3758, 182536, -157840, -1698123, -688269, +18285286, 6129992, -2680060, -2138357, 6415071, -12362526, -2334852, 10004589, 5009543, -6979322, +-163746, -4736275, 1923609, 7694971, 18894634, 6238977, 14714021, -5217849, -1104344, -14327474, +4852240, -4180077, 4022774, -6274947, -340913, 606127, -2244657, 5144297, -2315524, 2457795, +6318971, -4847945, 2844879, 8087424, -2215666, 2707440, -2684, 3253438, 4415764, 4554813, +-24318642, 8892193, -2822331, -11377905, -2002529, 6956237, 2113124, -8787503, 4730370, 6937446, +-14329085, 1156420, -4055523, 8429947, 1908576, 6965900, -1715839, -5000416, -10068477, 625992, +-6096706, 18988050, 3490198, -3106872, 6308233, 809064, 6103149, -14919643, -1984275, 2318746, +4609574, 1114007, -7005092, -1085553, 2532957, 6661495, 5587753, -4617090, 104153, 6556268, +-306016, 3098282, -2301029, -1103807, 4561792, 468151, -381178, -602369, 206158, 2272575, +-2189897, -932008, -302258, 1774895, 1666984, -192737, -631360, 4552129, -1468342, -741956, +-2414309, 350040, 1195612, -1149978, 51540, 1430224, 1812476, -1571421, -769873, -2634963, +164283, 2164127, -1051730, 441845, 942208, 1148904, 3606162, 520228, 1745904, -56371, +-1622961, 2436857, 542240, -21708376, -23809152, -8151848, -1858647, 437550, 5057861, -10167261, +3207267, 11988327, -6878927, 6382322, 8297340, -5780489, 176631, -2814277, 10147397, 14159970, +-6784438, -7989176, 7116761, 688805, -6800007, 3223373, 110595, 1780264, 2021319, -3628174, +-2651069, -15121506, -781684, -4319127, -352187, -439697, 10281078, 3062849, -18467822, 319975, +8898098, -10086731, 2653753, 10872710, -2394981, 3835943, 213675, -2835215, -7023346, 13976897, +11742441, -8919573, 4670777, -3306588, -471910, 4363150, -3109556, 3663607, -5538361, -610422, +11785390, -3330210, 2485176, 5592585, -4039417, -9672266, -426812, 3353296, 1710471, -4634270, +602906, 2639258, 4181688, 8652748, 5324149, 9519795, 5002027, 1864016, 4399121, -1527935, +8544837, -248571, -6781217, -9074729, 1101122, 2990908, -1613297, 6844568, -3539053, -3641596, +2685965, -820876, 707596, 384400, -4234301, -549219, -2561411, 3136937, 1363652, 2531346, +4833449, 649077, -1748589, -7005629, -571768, 1681480, -1831804, -681826, 680215, -1521492, +1473174, 1615982, 166430, -1611687, -1219234, 3502546, -523986, 1672890, 820339, 1171452, +-2511482, -2565169, -1585380, 658741, 1148367, 2124398, 1491964, 1071594, 921807, 2658048, +-722628, -2492692, -23599772, 25866440, -1731409, 16564615, 1064078, -9953050, -3133179, -5854578, +-7050189, -1104880, 251792, 11924440, -2134599, 8127689, -8603356, -654446, 1860795, 1716376, +746251, 10339060, 10310606, 3639448, 1472100, -1532767, -2251100, -805843, -1951526, -17770964, +-6187438, 7897371, 5036386, -2157147, 700617, -8514236, 4019553, -10394895, 2042794, 16007343, +1575716, 3322694, -13660143, 7002944, 6096706, 1536525, -9222905, -4148402, -4394826, 548682, +-8295193, 8104067, 9958419, 5927592, -1071594, 15000173, 5214627, 22042846, 8519068, -6133214, +18354542, 232465, -6919729, 13223667, -2347200, 4242891, 8289824, -6284611, -5382668, 12219719, +13174812, 7694434, -10972568, 3927748, -259846, -5178120, -9038222, 6411850, 11646341, 6951405, +16980690, 2184528, -3926137, -3995930, -10707353, -4179540, 6394670, 846645, -2080912, 246961, +-6732361, -4784594, 779000, 1518808, -363998, 6920266, 5458904, 2319282, 86436, 1910724, +3221226, 1568200, -3423626, -1493038, 826781, -916976, -1266479, 2823941, 133681, -1002338, +2266669, 757525, 635118, 784368, -2303176, 395137, 6070400, -2966749, 3779034, 1668058, +33286, -2946348, -3231963, -1741072, 1185411, 5758478, -12549358, 16703665, -4818417, -10961293, +3675418, 7270306, -7277285, -3679713, -15371688, 6449431, -5637145, -1843615, -14093398, -6182606, +-4782446, -2398202, -6358699, 3338800, -2857764, -3457449, 3308199, 4672388, 8198019, 8059506, +-3489661, -2889976, -11368778, 4494147, 203474, 7495792, 2036888, 2024003, -2592550, 3013457, +-7119982, -5990943, 3318399, 1726577, 3367254, -13829795, 4609574, 9086003, -60130, -12176769, +-12772159, -9904195, -29412472, 4177930, -3420942, 14244259, -6998649, 11839077, 3751117, 830002, +15189152, 2345589, -1803886, 10972031, 4006668, -14903000, -7468948, 1809255, -4811974, -8448201, +-5206037, 19270444, 8797704, -9032853, -1157494, -5062156, -2547453, 2840047, 13530221, 274341, +-3712999, 18009872, -6511171, -16307454, -15655156, -18458158, -3355980, 1444183, -558346, -3222836, +-2339147, -7874286, -1634772, 2345052, -2535641, -2308008, 1475321, 1546188, -11713450, -4745402, +-9195525, 469225, -3180423, -2914135, -4971962, -1489280, 1201517, 7096360, -32212, 8695161, +4151623, 6397354, 562641, 3034395, -3085397, 5838471, -156229, -4130148, -6352794, 3631932, +440234, 2030446, -1762547, 1186485, -2100776, 2051384, -849330, 2423435, -646929, -971200, +1380832, -277025, 7275138, -12087112, -3051038, -3249143, -1599339, -853088, 32056026, 5239323, +11708081, -5702643, 10222022, 20656108, -17733920, 26838714, 15896748, -7194070, 220117, 1617592, +-9676024, -16204375, 1092532, -9399536, -14471892, -6487548, 1261110, 13422, -1799591, -6505802, +-1110786, -6334540, -465467, -7321309, -558883, 5000953, -11381663, 6229850, 9536438, -7453379, +-6947110, 4927938, 3702262, -656056, 28770912, 2534031, 19168976, -13808320, -1369021, -16740709, +-12316356, 2953864, -12353937, -16922172, -11314018, -12853763, -2836826, -3425773, -14304925, -15511274, +20201378, 3175055, 1235340, -2745021, 10445360, 5818607, 12606266, -1255204, 11912092, -6684043, +2681670, -22363358, 18227842, 8834748, 1391033, -12281459, -972273, 5547487, 1116692, 2138894, +8977019, 12592307, -9803263, -12534862, -8305393, -1959579, -263067, 1374926, -7421167, 843961, +2052458, 5191542, 6684580, -849330, -4230006, 7032472, 3408057, -5242545, -427349, 2543695, +-3204046, -5539971, 931471, -1876364, -1899449, -164819, -2506650, 6448357, -6875706, 3744675, +-273804, 7132330, -7526930, -1802276, 1166084, -1884954, -2924873, -1192390, -5992553, -6483790, +-1321239, 685047, 1818382, 2357937, -4503810, 4469451, 3274376, -2651606, 3885335, -783295, +2183991, 198642, 2157684, -1801202, -1527398, 614180, 1067836, 2618856, -442919, 3592740, +-1770063, -1241246, 537, -1301375, 2267206, 2306398, 15679315, -6322729, -5145908, 17498770, +-14630269, -11142219, -2691334, -8851391, -1371168, -17428440, 3972308, -10710038, 8311836, 1219771, +2866891, 10049687, 2922188, 7109245, 9740986, 9256191, 7646653, 12948253, 1578401, 8819715, +7903277, -9352291, 16326781, 4043712, 7572028, -8726837, 12750684, 5783711, 8966818, 2316598, +3227131, -1591822, -11675869, 3040300, 6670084, 7871602, 8578123, 1893544, -14208826, -8953933, +10293963, 5636608, 2374580, -5357972, 7138773, -5122286, -14241575, 21032454, 12849468, 9424232, +-8028905, -3910568, -10598369, -33097018, -961536, -4566624, 4323959, -7682623, -8282845, -14558865, +2629057, 4755066, 18602040, -14570140, 5981279, 340376, 8589935, -12817793, -15770046, -9563282, +10267119, 3190624, 3246995, 5507222, -4290136, 1889249, 12030203, 4341675, 6120329, 7728257, +-2997350, -2699924, -4963372, 212064, 5294084, 6577743, 304406, 2782602, 1372779, 1148904, +4984310, -2943126, -2546916, -4189204, -2343442, -4336307, -66035, -6638409, -2648921, -7020661, +-323733, -4175782, -1155346, -860604, -2393371, 2178622, -1700807, -9034464, -1286880, 3805341, +4095788, 7693897, -1039382, -4343823, 2234457, -1620813, -6582038, 6309844, 5300527, 5164162, +11772505, 7816304, -543850, 583579, -2516314, 3272228, 1048509, -27091580, 15087146, 16077673, +-8443906, 13667660, 4504347, -22891638, -4293894, 29402272, -4524211, -20046222, -3387119, -2189360, +-17462800, 11729019, 2198487, -8943196, 12654584, 8309151, 30327838, 17666274, 179852, 1971390, +28595356, -7690676, 7016903, -12082280, -17282948, -5343476, -11835856, 2324651, -1137093, 5549098, +-1176821, -2345052, -5181341, 22502408, 811212, -18216030, -14530948, -3511136, -3985193, -908386, +7144678, 20518670, 12993887, 4127464, -12903692, 15904264, 29258390, -6511708, 13133473, 12299713, +35315904, 6513318, 6503118, 10509785, 14890115, 8158827, -12505871, -12006581, 7910793, -22082574, +-13430363, -15896211, 14555644, 12732431, 8790724, -3795141, 10657424, 22601192, -13312251, 17954574, +17843442, -2680597, 17535814, -16988744, -7670812, -6080600, 37044092, -18456548, 18067316, 11238319, +6484327, 4984310, -16790638, -1865626, -13261248, 13721884, 12984760, -433792, 713501, -6889128, +9642738, -4099546, 729608, 3517578, 3801583, -243739, 5785858, -4381404, -2500208, -1870458, +-4407174, 1678259, 3392487, -3284576, 1413581, 4090956, 7314330, 963146, -7227356, 2761127, +-7813083, 1161252, 6567005, 4256850, 6961068, -1436667, 11378979, -4792110, 8334384, -2432562, +-3039226, -1707250, 228170, 9205726, -7074885, 4333085, -457951, 4395899, -5811091, 1297080, +2000918, -2697240, 12066174, -6914361, 5221070, 5700496, 20216948, 36251136, 3677566, -3995393, +3623342, -2172717, -6247567, 875100, 3565897, -9111236, -12115566, 3830037, -6411850, -3556770, +9043054, -651761, 18004502, -9790915, 17644262, 8616241, 1505386, -10565083, 3122978, 17683990, +4910222, -9233106, 3269007, -2316598, 242666, 10332081, -14790257, -7833484, 15948824, 200253, +-4271882, 13939316, -963683, 4847945, 2930242, -13604309, -24834038, -5325760, 8247411, 15623480, +3128884, -12195560, 15444702, -5260261, 31614180, -16252693, 21179558, -12639015, 7397545, 18313204, +-27481348, -28198608, -475668, -8039642, 6977175, 8886287, 1004486, -4211753, -16919486, 11142756, +-2700461, 19893752, 8728447, 18524194, 4777078, 10762114, -4829691, 14217415, 4857071, -8585103, +1436130, -288837, -41419592, -1258962, 6931541, 9910637, 17083232, 14711874, -5114769, 1210107, +-3368328, 2731062, -327491, -4595615, -11221676, 4716948, -6685654, 14244796, 1352915, 2771865, +6674916, 4141959, -4821101, 4113505, 9996536, 9065065, -3427921, -1633161, 1137630, -2177549, +-1843615, -6427419, -1522029, -13483513, -2239289, 4666482, -11635066, 7857643, -8876624, -6860137, +1647657, -6971806, 6769406, 2831457, -3073586, 4728759, -932008, -703838, 2597918, 9997073, +-7300908, 1627256, 1076426, 4471061, 2778844, 2094870, -4131759, 23893976, 30876520, -6633577, +-1109175, 10950019, 40814000, 1231045, -24016384, -9549323, 4977330, 4728222, -7543037, 7882339, +-5428839, 12720083, -20362440, 1173063, 12799003, -8432095, -9149354, 1879585, -20131586, -6120329, +-6514392, -32052804, -27091044, -15628312, 11915850, 14059039, -2385318, -22774600, 2636036, 926102, +-751619, 4702453, -11435350, 27592480, -7788923, 3619584, 30493730, -26525182, 12899397, 4630512, +-9246528, 11198053, -7153805, -21476984, 492848, 18824842, -8321499, -13439490, 7826504, 2658048, +17861158, 276489, -27435714, 2343442, -16207596, 27214524, -9787157, 4243428, 6684580, 3400004, +-3860639, -17414482, 7362111, 18592376, 5377299, 19180788, -27834072, -15167140, -4573067, -79457, +3015067, -21322366, 19262928, -2468533, -20478404, -6655589, 12968117, 12243341, -11340324, -15569256, +15567109, -12351789, -7856032, -93416, -1926830, -1513976, -1017370, -4381404, -871878, 8020852, +-1777580, 7392176, -8228621, 5924371, 7490423, -1788317, 4042101, 1453310, -1526324, 337155, +1013075, 13612362, 694711, -2306398, 1134945, 3229816, -6681359, 2659122, -8543227, -405874, +9873056, -3267396, -7784092, -2587718, 4423280, 444529, 319975, 6137509, 459025, -7479686, +-4058744, 14519674, 10362682, -3089155, -615791, -146029, -21130702, 31061204, 885300, -53202296, +21311090, -7313256, 4146254, 5427765, 7143068, 13059385, 4760971, -9633075, -2326799, 13151727, +8892730, -10564546, -565325, -8382166, -4345970, -26132728, -3335042, 12576201, 15618649, 3510062, +-6199249, 17301202, -17823578, 19713364, -11359115, -6381785, 2349347, -6118718, 5255966, -15728707, +-21233244, -23763518, -7606387, 12303471, -4752382, 118648, 14471355, 4017405, 2528662, -455803, +491237, -5006322, 194347, 15595026, 9601399, 16457778, 13960254, 16510391, 11236708, -9819906, +-6261526, 4054449, -1052267, -18977312, 12759274, -3436511, -17927730, 22502408, -254477, 3655554, +-626528, -8188355, -2702071, 9448391, 13690745, 11385421, 348966, 6972343, -22963042, -3264712, +-8183524, 12492449, 4313758, -6403796, -7304666, 28913182, -8815420, -9910100, -3133179, 4659503, +-7159711, -19059454, -1075352, -3269007, -10296647, 17854180, 3644280, 6717866, -5488432, -961536, +4159676, 1067299, 5253282, 5659157, -1855426, 3467649, -3438121, 3930432, 1500554, -3165391, +-2390686, 2908230, 4110821, 1109175, -3629247, -3021510, -3262028, -2419140, 88584, 2033130, +-2953327, -3593814, 858457, -294205, -635118, 3089692, -1442572, 4900558, 1502165, 14375792, +-1203665, -1818382, -3156801, 1750736, 89657, -6059662, -7962333, 72469520, -71069360, -3511673, +-77274512, -11915313, -29359860, -3527242, 18913426, -9533754, -21363168, 33789580, -9092446, -5825050, +1149441, 10451266, -1175210, 28092308, 18592914, 11178726, -16525960, 1155346, -11267310, -11438035, +-7656853, 468688, -3511673, -3049427, -9327595, -2033667, 15519327, 1955821, 10276246, 10288057, +-807991, 13717589, 19937238, 1112933, -4070019, -10354629, -12409771, 5006858, 5450314, -10263898, +16893180, -22274774, -22566832, 2525441, -7894687, 12108050, -20924006, 8966818, -40242232, -21417392, +-32216550, -2765959, -15901580, -1415729, -9706626, -12080669, -10530723, -940598, 2728378, -31457952, +3587908, -6874632, 3611531, 161598, -14553497, -25591026, 17707076, -15394237, -2751464, 15859167, +-1606318, -4954782, 10482405, 13146895, -2710124, 13095892, 8567386, 15822123, 8720931, 16010027, +7577933, -9472014, -2639794, -8342974, 381715, -6906845, 1479616, 5806796, 8195872, 8987756, +-3984656, 4182225, 2996277, 5897527, -1396938, -2237141, 3075734, 7066832, 930397, 1651415, +7783555, 4002373, 8012262, -1133871, 369904, -818728, 3908420, 5555540, -1008780, -9212705, +5055714, -1531156, 1963874, -2886755, 1281511, -2612951, -1364189, 491774, -7684770, 133144, +10522670, -6570763, -6940131, 914828, 3591667, 3673271, 1241782, -7271917, 58631672, 29427506, +14221174, -14234595, -7376070, -30670362, 6722698, 24515674, -4820027, -5890548, 40206800, -7261716, +-8966818, 19858318, 29431800, 5036923, 30019138, -7577933, 4356171, 17673790, 20013474, 31561568, +25556666, -1420560, -11434277, 9433896, 11502996, 10817412, 13526999, 23580444, 11549167, 30007862, +-11697880, -882079, 8767102, 8081518, 25447144, 14725832, 27275190, -19775640, -6226092, 10808285, +-21246666, 17044040, 17370458, 16577500, 7068980, -21477520, -7843684, 40459664, 10409390, 27245126, +22651658, 24773908, -5137318, 32866700, 51583096, 17675402, 4519380, 36107792, 24982214, -14044006, +-8619462, -17635672, -14056891, 15134928, 17677548, 1429150, -14963666, 198105, -13383118, -735513, +-5998459, 8618926, -31428960, -3702262, 3136937, -16025060, 11964705, 1999844, -9841918, 8267275, +-19792284, -12974559, -21923660, -7444789, -10590852, 7618198, 2382096, -10305774, 2281165, 14183056, +4198331, -4809290, -8713952, -13637058, -5242545, 4356708, -19148574, -9045201, -1650878, 15249818, +5142687, -6657736, 3204046, -10437844, -2835752, -3295851, -8551280, -5639292, 14368813, -3444564, +-1017370, -3634616, 3394635, 9061844, 6539625, 7746511, 19828790, -103079, 15988016, 618475, +1650341, 9886478, 8588324, -13291313, -7611756, -1160715, 3101503, 1269163, 138513, -1452236, +6278706, -18450106, 9327058, -22260816, 39296268, 55759948, 32500554, -14155138, -30470108, -11139535, +27617714, -8026757, -22693534, 41603200, -28653874, 24900072, 14070313, -32446868, -13418552, -3286187, +-53692996, 2275796, 6261526, -25792890, 53061100, -18057654, 49284748, -36715528, 5546951, 2518462, +36053028, 53149148, -4287451, 18157512, 25099252, -29134910, 19740206, -39491688, -10860899, 75533440, +-4167729, -20614770, -3996467, -41995652, 1899449, -13095355, 47230144, 18119394, 22027276, -7036767, +-12383464, -23279796, -21642878, 5669357, 3085397, 325881, 31471910, -7414188, 6066105, -32363652, +-16814796, 21985938, -48455284, -18903224, -14523432, -16356846, 45387604, 3539053, 49031884, 35349192, +15680926, 19030464, -10907606, -25618406, 21996138, -34956200, -21451752, 43719544, 13265006, -25899726, +-43102144, -25845502, -30656940, 24954296, -26457536, 14041859, -19093278, -1379221, -16391206, 17805324, +10268193, 1831267, -14215805, -2347200, -9802189, 3195993, -19353122, -13151190, -7263327, 4574140, +10875931, -86436, -7864622, -10747082, -17987324, -12592307, 11487427, 15963320, -4894652, 11111080, +21977348, 10805064, -20350628, -5682242, -7464653, 13198971, -12411382, -7868380, -2909304, 5069672, +-16324097, -21756156, -15682536, -4917738, 9084930, 34360, 2061047, -2790655, 12432857, 4223027, +-761283, -11124502, -3783329, -6764037, 8746701, -2146410, 2098092, 35140884, -58771260, 62159988, +-1738925, 4619774, -20148766, 50156628, 11641509, 32234266, 12073690, -21434034, 7068980, 17819820, +-30988726, 21369072, 203474, 14114336, -41306312, -3398393, 9904195, 37673304, -15975131, -31427350, +-1551020, 37465000, 19693498, -14583025, -32647658, -1797444, 27012124, 3361886, 1716376, 7341173, +19592030, 49715320, -70536248, -11802570, 6626598, 38938712, 8590471, -21517786, -5450314, 14713484, +35651988, -3812857, 1578401, -67676336, 19376208, 10353556, 18249316, -49156976, 43146704, 37093484, +13886166, -22344030, -2401424, -24702504, 18175228, 31739808, 13256953, 14750528, -2924873, 24012626, +-35414152, 33250564, -10034117, -12125230, 39187280, 32203128, 1969779, -12440373, -32441498, 23476828, +25793962, -69422776, -5599027, 39617852, 9810779, -631360, -24863566, -10847477, 67572720, -5375152, +-23243290, -3121368, -12574591, -15248745, 22414898, -19216758, 6781217, 10084583, 13651017, -9692667, +1268626, -9838159, -11662984, -7910793, 10298258, 10205379, -10674604, -2301566, 5121749, -8603356, +20415054, -19841676, 5069135, -3716221, -6422050, 7100118, 33864744, 2051384, 24159, -5616744, +-11971684, -116501, 18433462, 4231080, -878321, -3745748, -8705362, 15554224, -4064650, -1080721, +-9227737, 8855686, -1446867, -4320200, -52583820, 25236690, 4634807, 15960635, 19322520, 28213640, +9839770, 8872329, -13859323, 14404247, 2446521, 33532420, -4146791, -10390600, 26332982, 20113868, +-4715337, 1470489, -11606612, 62277, 8185134, -2913062, -7021735, 14871324, -12305081, 1270237, +20307142, -4726612, 11630235, -21220360, -4482335, 2502355, -8830453, -3630321, 2187212, 14669461, +-4014184, -25324200, 780610, 49613316, 10144713, -27336394, 7887708, -27865748, -19073950, -14524506, +-4052839, 31568546, -3646427, -25652766, 51322712, -55997784, 9286793, 56615724, 5847061, 39721468, +-30724048, -57285736, 18242336, 1688459, 45283988, 2139431, -25773562, 20834886, -5886253, -4986994, +-11040213, -2082522, -16083042, 7701950, 2086280, 11885248, -19600084, -17010754, -6784975, 19889994, +25796648, -8912594, 13682692, -2348273, 21585432, 15088757, -27385248, 21529060, -5682242, 2962991, +-4708895, -8747775, -165893, -396211, 2891587, -2361158, 2236067, 1677722, 1498407, 2850248, +-9044127, 171799, 4976794, -7816841, -1009854, 4502200, -4844723, 5993090, 6929930, -10586021, +12380780, 4735739, 12829067, -3174518, 5944772, 10023380, -19584514, -569083, 5989869, 11091216, +-6999723, -5535676, -6729677, -5217312, 11402064, 22564148, -9731859, -106081400, -243754432, -96599184, +-146715008, -214809568, 115480400, 31938450, 66448512, 305956288, 235827520, 137586064, 251857424, 187937568, +32114544, 62139048, 51692616, -119334592, -102132176, -50017580, -182538800, -174536192, -66845796, -89669792, +-126631744, -52927420, -45485852, -128869960, -107575512, -8918500, -61281132, -104482056, -35891968, 33348810, +-75902808, 22875532, 112980192, -8585103, -16192564, 153461328, 122539712, -5336497, 179270320, 207756688, +84367656, 195198752, 273861088, 163419744, 141948128, 328678272, 262294192, 197233488, 233786880, 310098240, +110869752, 44022876, 129827736, -102349608, -293803136, -212952528, -324941664, -526171072, -471316832, -500182752, +-581717376, -592851008, -511226752, -445141696, -446453792, -313833248, -139023792, -94118304, -14260902, 152336048, +279900864, 282594880, 350785536, 504700544, 441149504, 403304960, 557276864, 442954464, 250352576, 365381472, +255838848, 99365680, 89894200, 118074560, 12171937, -37207840, 22928682, 3420405, -82732344, -44043280, +7373922, -65840776, -122082832, -58566176, -83759912, -177770304, -112099184, -43255152, -132912056, -89288072, +17914846, -42174432, -62072476, 30514668, -36720896, -146380544, -112213536, -179693920, -303886112, -286110336, +-274438208, -285029056, -250571616, -168308496, -131546256, -79125112, -15362024, 67011692, 118789672, 182319216, +229953088, 285655584, 297182208, 315216224, 351171008, 333135904, 305451616, 288976128, 191427760, 67463736, +6396280, -28631326, -81791208, -96422016, -84175456, -95040112, -106743360, -94031864, -94978904, -93069792, +-78594680, -76689328, -80470504, -77655696, -67998456, -56378424, -48183092, -31522912, -19556596, -3972308, +2241973, 14318884, 21761526, 27354646, 28386512, 30036316, 29775934, 23423142, 13696114, 10580115, +5338108, -1497333, -7163469, -9122511, -20160040, -26324928, -32513976, -43333000, -51040856, -47828220, +-46061912, -41101228, -30829276, -21849036, -16048145, -4029753, 8537858, 16728898, 25423522, 39543764, +42771968, 42411728, 45886356, 50422916, 46664284, 48507360, 50929724, 48279728, 46437188, 46646028, +41264436, 35532800, 31338228, 24085102, 13677860, 6203544, -2624225, -14336064, -26169236, -34802120, +-45135812, -51350092, -54061292, -53309136, -52699248, -48287244, -41787348, -35224100, -28522878, -19915764, +-14063334, -7572028, -2129767, 3038153, 7327751, 10848551, 13807246, 15938087, 15619185, 15316927, +13914620, 12097849, 10292889, 9065602, 7478075, 6085969, 4820027, 4054449, 3210488, 2785823, +2450279, 2230162, 1970853, 1804423, 1735167, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -8537321, -5090610, -6489159, 817118, -2736968, -835908, 2556043, -4011500, -7315940, -1848983, 641024, --4179540, -2405719, 3586298, -2092186, 1675037, -9168681, -760209, 6233072, 3339874, -10261214, --3510599, -2680597, -2700998, 3486977, -1469953, -5339181, -3332895, -3813394, -3865471, 6786585, -2148558, 4374961, -2795487, 5741835, 5240934, 3723200, -2028835, -4852776, -3787088, 413927, -1003949, 7804493, 2798171, 1491964, -3637301, 855235, 372588, 899259, 3126199, 1836635, --5255966, -4494684, -2288144, 2853469, 701690, -993748, -5619965, -1726577, 2259153, 2565169, --2243584, -861678, 166967, 2714419, -544924, -2994666, 44560, 431107, -3819300, 8218957, -558883, -5580773, 33823, -862215, 5319854, 420907, 3614752, 4927401, 1892470, -340913, -281320, -1796907, -1124745, -1197222, 3176128, -1016834, -362388, -1421634, 1123671, 370441, --564251, -137976, -775778, 155693, -76236, 625992, 680752, 1036698, 1330366, -5672578, --5135707, 5773510, 5294084, -4325032, 3179350, 296890, 1628330, -14149233, 5442261, -2124398, --9665824, -12602508, 319975, 9068287, 531502, 5870684, 202400, -11401528, -3942780, 1285269, -3962644, -2029372, -988916, -4815732, 619549, -896038, 8025684, 4060355, 1694902, 1416266, -2171106, 2765422, 7317551, 4416300, -6489159, -576599, 1493575, 1540283, -7714835, 2479270, --2302103, -4899484, -1390496, -233539, 5258651, 1327682, -2956011, 5309654, 8308078, -1789928, --3166465, 1984275, -606127, 4520453, 4627291, 3602941, -5572183, -4262218, 3979824, -1712081, --1406065, -4294431, 453119, -6364605, 3764539, 3371549, 4457103, 1119376, 5181341, -5644661, --3536906, 7262790, 373662, 2675765, 8601209, 3299072, 839666, -3495567, 5042829, 579284, --2569464, 1416266, -6094559, 145492, -648540, 879395, 1627793, -722091, -2719788, -1514513, --448287, 1298691, 1236414, 392453, -755914, 715649, 1713155, 275952, -574989, -555661, -7516, 7188702, 636192, 2783676, -6051609, -5139465, 2942590, -1424319, -2213519, -2810519, --2630131, 2185065, -7003481, -4013110, -8648990, -10387915, -1924145, 8650601, 5574868, -3490735, --974958, -1198833, -2015413, -7480223, 5388037, -1875290, -1924682, 476205, 3520800, -1682554, -309775, -255014, 5099737, -4713190, 5115306, 2798171, 6133214, -2088965, 4744328, 2115272, --2940442, 4284767, -2907693, 2469069, 4545149, -3427921, 4773320, -2847563, -2308008, -716723, --1419487, 2411624, -1397475, -3628174, 1454383, -3148748, 685584, 435402, 484794, 7211250, -1393180, -1650341, 33286, -2947958, -4130148, 2137283, -1001264, 6884833, 7005092, 2851322, --1955821, -1075889, -59593, -2756832, -3208341, 3545496, 5549098, 186831, -615254, 3427384, -3678640, -473520, 1292248, 1193464, -2692408, 2551748, -498753, 3659312, -1822140, -690416, --150861, -1510755, -179315, 2668249, -595390, 814433, 766115, -1871532, 574989, -336618, --394063, 768799, 681289, -1194538, 1356673, -455803, -605590, 109522, -170725, -216896, --1114544, -805306, 353798, 13716515, -5801427, 5624260, -6991133, -5879274, 29528, -1630477, --1486596, 1912871, -2940979, 5932961, 5788006, 4959614, -1487132, -644782, -2581812, -6328635, -990527, -3801046, -702227, 696322, -2119030, 3608846, 1365800, -431107, -10448045, -4359929, --6584185, 249108, -4307316, -6621766, -2901787, -3658239, -4047470, 6595459, -5267778, 4649839, -404801, -1868848, 2604898, 2238752, -4721780, -1292248, 99321, 5093831, -483184, -6960532, --8831527, -9193377, 2393908, -3357591, 203474, -727460, 1331440, 3109556, 5112085, -3529390, --1868848, 1683627, 1758789, 656056, 6410239, -3585224, 3964255, -7362111, 14432164, 1775432, --1535988, 2806761, 1381906, 2760053, -4012036, -706522, 1095754, -444529, -863825, -7282654, --2421825, -4949413, -1473711, -578747, -3569655, -3488587, 2592013, 3028489, 922344, 595927, --333934, 2558727, 1503239, 2937758, -1472100, 259309, 89657, 2699387, -1083942, -158377, --165893, 301185, -2138357, 526134, -1548336, 780610, 1075889, -511638, -1801202, 359704, -551903, -555125, -622233, -1934346, 507343, -226560, -991064, 1221381, 1401233, -179315, --413927, -6754373, 930934, 1198833, 401579, -1105954, -4059818, 2343442, 1870458, -6107981, -7076496, -8924942, 10910291, -1123134, 3614752, 1564979, -264141, -1229971, 2213519, 10213432, -11474542, -2259153, 2034741, -1440962, -1672353, 1472100, 2407866, 7839926, -1037772, 2336999, --4030827, 4272419, 926639, 6168647, 2981781, 5774047, -8439074, 3488050, 3033321, -2704219, --117575, 6272263, -1611, 438087, 1897839, 3792993, -1333587, -606127, 12183748, 5752035, -1056562, 1052804, -2576444, 5484673, -7402376, -10872710, -13113072, -865973, 6860137, -272730, -3409667, 9244380, 3656628, -1709934, -3293703, 4898947, -983011, 11902965, 5359046, 1711008, -1654099, -6595459, 1370632, 4866198, -2527588, -7419019, 1275605, 2579665, -335544, -2621004, --952946, 1184337, -2403034, 1315871, 1349157, 1181653, -486942, 1373853, -2355790, -2253247, --730681, -1455994, 740345, -2262374, 1258962, 2081449, 1406065, 1552631, 1618129, 441308, -1036161, -3095061, -2558727, -1023813, -1345399, -1651952, -332323, 940598, 557272, -182536, -1891933, 954557, -147103, 2315524, 1483911, -80531, -16011101, 1646046, -1265942, 10876468, --8249022, 4736812, -16945256, 6581501, -1649804, -8674760, -9511205, -6684043, 4990215, 3870839, -12767864, 1631551, 4220342, 12199855, -2180770, -8998493, 1293859, -6951405, 1636919, 9931575, -1817308, -2878702, -1233193, -1989107, 2901251, 3799436, -863825, 2514167, 5116917, -3294777, -1596117, -6127845, -504659, -7650411, -1221381, 953483, -3623879, 5506685, 3783866, 4679904, -9461813, 524523, 11457899, 8711804, 4224637, -6059125, 13146895, 5583995, 2287607, 11460046, --1292785, 170188, 936840, 3742527, -2432562, -3463354, -7936026, -7749732, -6271726, -24696, --4953171, 10036265, -6129455, 4095251, 6302865, -3649112, 303332, -3002719, -1720134, -10053445, --11413876, 5109938, -2006824, -3924526, -3398930, 870805, 1313723, 666794, 2211908, -4086662, -9299141, 549756, 2784213, -2017561, 500901, 2666101, -4559108, 1422171, 158377, 1459752, -2096481, -124017, 1634772, 3070365, -7516, 803159, 2279554, 2415382, 3284039, -256087, -552977, -1806571, -481573, 48855, -798864, -2509335, 160524, -811212, -1040993, 137976, --972810, -1393180, 13328894, 486405, 140123, -1257352, -2630668, 2375654, 534187, -6835441, --8750996, -11855183, -6221260, -12403329, -7892540, -4241280, -9181566, -5818070, -4028143, -4786741, --12404939, 8468602, 5298916, 288300, 4454418, 2029909, -3462818, 15348066, 921271, -5340255, --2815351, -10449655, -4508642, 11421929, 530428, -9635222, -9630927, 1371705, -9748502, 3087545, -3381213, -7601019, 271120, 2338073, 508417, 11240466, 3346317, -5174899, 1108638, -6198712, -5658620, 780610, 2488934, -13809394, 9473087, -4765266, 3928821, 289910, 1811939, 2232846, -323733, -4043175, -348966, -5411122, -20938, -10894721, -92879, -11751031, 15418933, -2658585, -9797357, -7260642, -3414499, -1584306, -7494718, -4198331, 6002217, -249108, -266288, 4442070, -5767604, 897111, 9440875, 8169565, 11360725, 6036040, 2385854, 1356673, 5137855, 2729452, -1684701, 2070711, 1134408, 2505577, -754304, 4115116, 687195, -302258, -911070, 3197066, -1276142, 2265059, 1115081, -1555315, 1064615, 1239635, 1030792, -2540473, 4733054, 2536178, --505732, -3684545, -442382, -587874, -2665564, 915365, 430570, 2676838, -2281165, -5076115, --6799470, 20938, 5088463, -13105019, 45634, -5637145, -4502200, 9364639, -15122580, -14282377, -3786014, 19159312, 540629, 1866700, 1520418, -2863133, 10515691, 10210211, 5921150, 2932389, --2704219, -15484431, 9259413, 128312, -12394202, -3965866, 2937221, -579284, 155156, 1321776, --2945811, -12205223, -639413, 550830, -2189360, -5070746, 3728569, 10678899, -13662828, 8581345, --5090610, -2532957, 865436, 6819335, 22333830, -14361297, -3581466, 1464047, -1378685, -2588255, -787053, -5475547, 1973001, -4940286, 15370614, 5317707, 2920578, 4277251, -3187403, -834834, -8159901, -1224603, 3575024, -6693170, 11811697, 572841, -8274792, 16498580, -10430865, 7623567, -2209224, 3785477, 12013560, -4718022, 5144834, -532039, 74625, 1492501, -749472, -8024610, --4226248, -468688, -3517578, -1216550, -1893544, -4902169, -5009543, -3750580, 2412698, -4286378, -2552284, -1108102, -124017, -3754338, -2549600, -2756295, 2292976, -5202816, 583042, 561030, -3245922, 5044976, -1901597, -897111, -4437775, -3785477, 326418, -3324305, 1008244, -572841, --2931315, 110059, -847182, 1414118, 1857573, -1200443, 16273094, 1248762, 4224637, 4810900, --2753611, -9407052, -7383049, 1103270, 16278463, 9218610, 1981591, -14602889, 2075543, -8041790, -22549, 16290274, 15662672, 7902740, 10579041, -9589588, -19841138, -10397042, -14307610, 7897371, --168041, -2435247, -81604, -10828686, -3235721, 3322694, -2058363, -4127464, -4022774, 11537893, --774705, 3124589, -3313567, 7558069, 1578401, -4392678, -9220221, -7081328, 20895552, -920734, --4759361, 6665789, -11985106, 3730179, -6871948, -20910586, -4715874, -2737505, 6293738, 2403034, -5525476, 1744831, 8237211, 290447, 544387, 4557497, -20448340, -3244848, -5515275, -1477469, -1952063, 11705933, 12923020, 4649839, -3420942, -8950712, -11764989, -3958349, -6935299, 1460289, --3466039, -3677029, -8113730, 12072079, 8681203, 3523484, 11085847, -2666101, 4407174, 6801081, --4376572, 4043712, -2831994, 870805, 4021163, -1252520, -2724083, -1136019, -1520418, -1074279, --129923, 256087, 3981972, 143881, 442382, 1217086, -2270427, -6198175, 210990, -1458678, --841277, -1136019, -3676492, -430034, 1171989, 5479842, 4476967, -2567317, 593242, 3600256, --807991, 816044, -1343251, 813359, 3426310, 420370, 3762928, -23602992, -15431281, -3570192, --5617281, 12064026, 8288213, -1974074, 20772610, -20986284, -4890357, -7917772, 22187264, 10647224, --7285875, 8182987, 3115999, -8629126, 15324980, -16891570, 8370355, -7776039, 1326608, 1847910, --5634460, 14799384, -10391673, 9090298, -4324495, -21759914, -3605088, 15210627, -9199283, -14854681, -209380, -1846836, -22230214, -4151623, 8928700, 3790309, 11865384, 8727374, -2506114, 21395380, --5112622, -6580427, -10513543, -9788767, -9468255, 5877126, 7992934, -6880001, -7761543, 2567854, --6731825, 8973797, -2465311, 4873178, -3637837, -5556077, -4264903, -118112, -12583180, 3412889, -9080098, -2118493, 3928821, 5458367, 6447820, 11623255, -8313983, 3740917, 9062918, -1165010, --19299972, -20543366, 2263448, -1950989, 1527398, -7517804, -3122978, 1516124, -7442105, -13500693, --4125853, 10190884, 8266739, -4060892, -1647120, 3136400, 2793339, -1607928, -3282429, 244276, --435402, -5309117, -1970316, 5641440, -1626182, 4532264, 814970, -1411971, -2782065, 3639985, -3586298, 4212826, 500901, -2368138, 2442226, -6326487, -3799436, 3115462, 1450625, 2672544, -4919348, -2518998, 1014686, 1930051, 2394981, 456877, -2895345, -4154844, 1848983, -2264522, --1392106, 16779364, -10826002, -27066884, -24696, 19059454, 24366424, 4444218, -9178345, -6915971, -2377265, -4509716, -4013110, 10636487, 10784126, -5487895, 10400800, -13496398, -1775969, 9511742, --4845797, 11545946, 5355824, -1750199, -16204375, 6016176, -3899294, -3947612, 684510, -1328756, --1851131, 21912386, -10976326, 11121818, 18748070, 12972949, 6753836, 118112, -12625056, 12361453, --7131793, 11771968, -6854768, 2622615, -13266617, -2653753, -12547210, -8272107, 1733019, -11669963, --3343095, -4148939, -624918, 10155450, -12261058, -10540923, -3952981, -6106370, -2609730, -10450192, --13494787, -16822314, 1532230, 12829067, -1052804, -8353175, 1232119, 2638721, 10137733, -11447698, --6637335, -3737695, -442919, 7597261, -17180, 2041720, -7963406, -3376381, 3923453, 15522012, -6862284, 10692321, 12419972, 16222091, 6217502, -2314987, -5879274, 3884261, 4911832, 7115687, -2988224, 607201, -74625, 9820443, 3468186, -3747896, 714575, 5476620, 2172717, 1271310, --3704409, -3629247, -2602213, -5019206, 271657, 4605816, 4431333, 919660, -2723009, 6455336, -3712462, 8196408, 4263292, 178778, 5484137, 4295, -4349728, 6271726, -99858, -925565, --2466922, 1189706, -1566589, -192200, 5496485, 3192235, -45167488, -21471616, 15071577, -36884104, --25564182, -1650341, -15044197, -10320806, 11260867, 12869333, 3950296, -2369211, 4669703, 36830420, --4506495, 5888937, 14190035, 16156593, -16787416, -8721468, -7943542, 13595719, 14858439, 7453916, -2747169, 13898514, -4070019, -6971269, 9780714, 18811420, 1358283, 6076305, 19157164, 14113799, -11532524, -8593693, 3648038, 5794448, -12885, -318364, 12308839, -4030290, -167504, -1245541, -8231305, 304943, -13407277, -8994735, 2724083, -18245558, 13852343, -4054449, 30569430, 1215476, -16781510, 3320547, -697932, -9848897, -439160, 3913789, -12879533, -6648610, -15050639, -1907502, -7754027, 10512469, -4549444, -24551644, 8930848, -3902515, 8413304, -8804146, -10479183, 7707319, --15865609, -12170327, 23738284, 354872, 10952703, -2233383, -10224707, 2850248, 13997298, 3401614, -11140071, -17984638, -854699, -1217623, -2942053, -15460809, 15136538, -9001178, 1146756, -1760400, -1861868, -5731097, -521839, 3176128, 4667556, -3823058, 9932112, -2433099, -3119757, -5788006, --4901632, -4993437, 4798552, -1916629, -3451006, -1459215, 1304060, -3796214, 6962679, -2058900, -7875360, -4895189, 3373160, 1221918, 3178276, 5082020, 1084479, 18233210, -8434779, -21275120, -9006546, -11151346, 4552666, -365072, -10632728, 19417548, -26162794, -1159641, -31565326, 685584, -25360708, 35512936, 16758962, -6195491, 16375637, -1331440, -2362769, 1687922, -2870112, 8671539, --1161252, -16740709, 897648, -23232552, 8074002, -7246147, -5240397, 15444702, -392453, -17883170, --19979650, 4533875, 2672007, -9998684, -8339753, 14825690, -21652540, -197032, -4430259, 7533910, --5867999, -4760971, -17337172, -7417946, -7697119, -3302293, 12365211, -14840723, 5235029, -1880659, --2637110, 1856500, 5286031, -25065966, -2736431, 3307125, -2284923, 9163850, -7949985, -11121818, --5114233, -28038620, -12412455, -12269648, 504659, 11855183, 17892296, -8583492, 13518946, -23393614, -37286220, 2482491, -6794639, 19469086, -23270670, 19541028, 8684424, -5328444, 320512, 6466610, -431644, 3054259, 17783312, -7724499, 7536057, -4220342, 5426691, 8832600, 8685498, 10646687, --3791383, 8964134, 2037962, 1275605, -1598802, -12120935, 359167, -8624831, 3837017, 5462662, --1952600, -1420560, 1505386, 1136019, 5919002, 2698313, -4466766, 6450504, -186831, 687195, -7966628, 5435818, 3125126, 14571213, -12145631, 8053, 5255966, -66035, -9564892, 2214593, --6120329, -5758478, 22950158, 1328219, -16338592, -337692, -2447058, 10660109, 7039452, -9957882, -11565810, 239444, -25729538, -28026272, -2650532, -8422431, 7037841, -1176821, -9868761, -25258702, --22018686, 12059194, -18727668, -4184372, 1231045, 5967857, 1448478, 18056580, 1557999, -9088688, -12127914, -1578937, 1816234, 11180337, -14646375, -938450, 3238942, -14972793, 9148817, 12487617, -5487895, 11114838, 5847598, 17200270, 4744865, 12528956, -17510582, -5459977, -2745021, -23556286, --67646, -2524904, 9931038, -1553704, 11375758, -1860795, -13626857, -9293772, -645319, -21786222, -9625022, 627602, -4175782, 12779138, 8142185, 10619844, 11057393, 3389803, -1256815, 9276592, --29510720, 8995272, 3787624, 13266080, -5165235, -20855288, 13212930, -3130494, 22662394, -33308546, --11803107, -23319524, 16037408, -6783901, -21391622, -23895588, -15692200, -7055021, 7687455, 6023692, --6499360, -6776385, -3506841, -409633, -7184407, -2726767, 12265353, 1914482, -1103807, 3604551, -2731599, 2258616, 6687801, -5116917, -6743099, -153008, -11761231, 17180, -4089346, -1669669, --7570954, -2041720, -10354629, -9308805, 11864847, -6582038, -366146, 3985730, 5745056, -986769, -9965398, -8230231, -2607045, 4110284, -9656160, -2650532, 11423539, 4095251, 2601677, -3878892, --5818607, 4402342, 15609522, 14469745, 53059488, 40082784, 5384815, 11589969, 3317862, 30787936, -795643, 14964740, -14058502, 36475008, -14519137, 33075544, -1544041, 21114596, -2517925, 14890652, --14905147, 3540127, 7401840, -8177081, -2718714, -4409858, -3484292, 9842991, 180389, -8559333, --11797738, -17757006, -22594212, -10871636, -3850975, 104153, 7037841, -19020800, 7994545, -10481331, --16175921, -3382824, -11833709, 5352066, -2925410, -24736328, -5932961, -12589623, -14944339, -15660525, -14147085, 18948858, -39731132, 8979166, 3473018, 11123965, 3879966, -5021891, 23953032, 13487808, -12509629, -33221036, -14912126, -449898, 8136279, 27480812, 979253, -3728032, 1280974, 23281408, -20871394, -19833622, 22338662, 1654099, 4976794, -3792993, 13087302, -28261422, -9951439, 29123636, --4523675, -1894081, -11271068, 19421842, 12637941, -10040560, -17048872, -2928094, -784368, 1729261, -199716, -3630321, -15897821, -5413807, 12299176, 16203838, 9987410, -8936216, -2420214, -2607582, --7718056, 2499671, 2507187, 7501161, -1701344, -5274220, 4629975, 1829119, 2769180, 14680735, -1936493, -4060355, -5628555, 2543695, 5208722, 11441256, 2239289, -11078331, -5989332, -8311299, -3254512, 4282620, -9239012, -19532974, 6273337, -1570884, -3344706, -6806450, -12103218, 14621679, --5729487, 12746926, 19800872, -22284438, 6972880, -12713103, 37272264, -22003118, 21073794, 19435800, --7346005, -34740916, -20212652, -2248952, -9224516, -988916, -15918759, -25294136, -33687040, -19276350, --22422414, 9737765, -19174882, 8046085, 2308545, -2157684, -1962263, -15761456, -4865661, -16193100, -4790499, 14566382, 19033148, 397284, -5317170, -16622597, -3954054, 1712618, -9894531, 2884071, --13656385, -8862128, -1937030, -13527536, 10768020, -11941083, -35391604, 1368484, -1074816, -11642046, -15114527, 11877732, 17219598, 6652905, 13553843, 27431956, 4627291, -27183384, -6194417, 12869870, --5968394, -22586696, 12674448, 18000208, 6070937, -72478, -30600032, 27413166, -1281511, 22384832, --18507550, 22668300, 55438900, -4849555, -1563368, -27012124, 14604499, -21962852, 18606872, 9496173, --12090870, -2654827, -29895120, 6952479, -16288127, 314606, 11549704, 11596949, -375810, -7677254, --6645925, 8286603, 20290500, -9773735, -1540820, 3173981, -8786429, -2509872, -2743410, 4313221, --934155, 8570070, -3844533, -9652402, -5345624, 3008088, 7714835, -9553081, -2942053, -81604, -1379221, 7219840, 1604170, -2349347, 2611877, -16255914, -9291088, -915365, -1432909, 3485366, -1037772, 1423245, -226560, -2719251, 8420283, -339839, 6302328, -292595, -1705639, -5915781, --4044786, -43641700, 14730664, -57222388, 37679212, 13447006, -9831180, 40156332, -3929358, -20559472, -35617628, -13809930, -2004139, 7472706, 12420509, 32911260, 1285806, -2754685, 23229868, 9815074, -19500226, 23869818, 17703318, 1572495, 12359842, 1895691, -1297617, -13174275, 8341900, 12496207, -2989834, -817654, -14195404, 6730751, -13299903, 15896211, 15706695, 2679523, 18566606, -11516955, -12247099, 19237696, 12274480, -26089778, -28015534, 32831804, -3216394, 20517596, 31906776, 707059, -8590, -3373160, 6259378, 18402862, 17510582, 1784559, 14545980, -35970, -16625282, -20780662, --30726732, 497679, -12480638, 398358, 17405892, 16262357, -28737626, 2424509, 11145977, -25245818, -4187056, 35022772, -15204184, -17534204, 18825916, -20270636, 4665945, -5726802, 36781564, -10732586, -22724672, -11310796, 19102404, -1835025, 7107634, 15215459, -24008868, -7358353, 9167608, -15954730, -11684995, -14324253, -3935264, -8107825, -7330973, 988379, -3926137, -6590628, 3875671, 10889890, --5474473, 2945274, 4023848, -9528922, 1713692, 1253594, -2400350, -6751152, -2725157, -5224291, --15386183, -6171331, 3362960, -20309826, 7393250, -10429791, 7881802, -4762045, -1899449, -14256070, --7359964, 130460, 4000762, -6318971, -13785771, 2267743, 1024887, 7398081, 3280281, -24696, -9104257, 7191386, 858457, 6171868, 4281009, -19846508, 4566624, -23011898, 47649976, 11774653, --25269440, 9771587, -5779416, -22487912, -26513370, -26914412, 8115878, -1219771, 23961622, 35475892, -17111686, 8678518, -4169876, 11853573, 1236414, -44398152, 19632832, 46335180, -30154966, -31705986, --27368606, -38779260, 28230820, -38185480, 17340394, 340913, -4683125, -159988, -12330851, -14721537, -19102940, -39296268, 40587976, 23311472, 5476620, -25832080, -19478214, -17085916, 3729105, 6833830, --16662862, -2253784, -12277701, 27941446, 12736189, -4974109, -744640, 11520713, 2674154, 13139379, --22698366, -8978629, -2086280, -3992172, -21107616, -14879377, 12694850, -40288940, -23697482, 3107946, -47246788, 22786412, -14272176, -932545, -35750772, 17470316, 54786064, 1961190, -11669963, -8196408, --25740812, 33711736, -10744398, -12994424, -1046361, 19989314, 12630425, -17301202, -15531675, -5563057, -17678086, -4676146, 5237176, -1357210, -13882408, -4514548, 22374096, 12776991, 1908576, -10332081, --1569811, -1557999, 17464410, 14166413, 7163469, 6404333, -20536922, 7895224, 7503845, -3077881, -4758287, -3218004, -2868501, -18046916, -1838783, -918586, -2477659, -5755793, 4919885, 6626061, -3554622, -21229486, -18193482, -9000104, 16106, 1295470, -21343304, 7641821, 27001922, 5428839, --7392713, 506806, 4250944, 85362, -11605002, -8902393, -2975339, 3651796, 192200, -21986474, --15107547, -44088912, 9799505, -32446330, -48593260, 11592654, 27072790, 6776385, 7363185, -20477868, --25669408, -6556268, -38094748, -18635864, 10107132, -31839130, 50512572, 9960566, -12262132, 10985453, --24031952, -47579648, -15895674, -36354212, 5906654, 10817949, -13282723, -25811680, -13062069, -15865609, -14106820, -18893562, -6851010, -2317672, 21661668, -15442555, -2756832, -7139310, 5601174, 9168145, -1729261, -6292664, 22333830, 29251412, 18687940, -14740865, -12127914, -42636676, -23739358, -9625559, -11408507, 72058280, -12214887, 1003412, 32079110, -2748242, 13698798, -16197395, -16963510, -13609678, -15247671, -40434968, 362388, -5224828, -465467, 35283692, -15396384, 53331684, 4752918, 40453760, --51315732, -15247134, 14900852, -862752, -22246856, -18618684, 41720240, -42811160, -35415228, 51302848, -9043054, 44564580, -17609902, -2797634, -3058017, 14449881, 6136972, -3914326, 15144592, 15306727, --797253, 7283728, 4793184, 1760400, -5238250, -9405978, -2163590, -6169721, -8463233, 8055211, -4599910, -7019051, 5158256, -15522549, -1538135, 11244761, 19357954, -1387274, -12191802, -758599, --13880797, 8108362, 13298292, -9108015, -7631620, 7639136, 8864276, -19654308, 7086696, 1046361, -12923557, -8258685, -8704825, 76773, 4085588, 6199249, -22328462, 3799972, -9474698, 17872432, --6196564, -3979824, -2586644, -44065828, 21050708, 32422708, -23440858, -19246822, -6563247, -21143588, --25508348, 6878927, 7583302, 19905026, 899796, 17403208, 30877594, 32261646, 21386252, 7461969, --23589572, 2390686, 12291123, 16357383, 25044492, 338766, -12946105, -18772228, -7112466, 25463788, --10410464, 10064719, 22058416, 2253784, 43338368, 5078799, -27662274, 23990614, 23605678, 6896107, -10175314, 21995064, 3494493, 1947231, -25395604, 54934780, -58472760, -42884712, -49882824, -16415365, -10305237, -29219200, 15044197, 32807108, -9717900, 3303904, 28823526, 9315784, -31272730, -10747082, --24209656, -3365107, 1776506, 1695975, 27860916, 27524298, -6331319, -6815576, 17488034, 42329052, -7295539, 34845608, -29327648, 30987652, -13581223, 10347650, -6213744, -19585050, -13748727, -3007014, -13934485, 8679055, 34406448, -44464724, 22641994, -17524540, -11064373, -8571144, 16457241, -7738994, --1609539, 3709778, -17941690, 11317776, -8816494, -486942, -13642964, 4314295, -2822867, 716186, --15362024, 2387465, -1486059, 3172370, -1582696, -16539382, 6562710, -9368397, -8734890, -3809636, -12320651, 14505715, 15789910, -13511967, 27215598, -20467130, -6322729, 1684701, -2343442, -15093052, --8299488, -755914, -11534135, 3386582, -1067836, -369904, -1488743, -11151346, 1319092, -1755031, --651761, -24976846, -50236620, -50563040, -36600100, 7493108, 93889592, 23718956, -12969727, -28406914, --67874976, -95463704, 21531744, 39517456, 47437912, -10000831, 4094178, -28003186, -48711908, 14024679, -8820789, 15829102, 2268817, -40850508, -12498355, 9961640, -8232379, -1627256, -7748658, 53191024, -46698644, 31488552, -2908230, -22855132, -38813620, -25693032, -23237384, 36327372, -6049999, 26577258, -11999602, 12436615, -16379395, -88428544, -60899416, 30038464, -47927004, -16365436, 101971648, 70115880, -52668112, -39968964, 28832652, -27690192, 1990717, 2004139, 14769856, 43245488, 76219024, -29218126, --2755222, -50303732, -40660992, -66566624, 7184407, -2771865, -71687296, -17188996, 46111304, 17221746, -32171452, 43636332, 78636560, -57342108, -34443492, 4522064, -46828564, -6058588, 26114474, 61256972, -31111132, 9538585, -37447820, -35890356, 24157044, -10244034, 36069136, 31721018, -8625368, 14512694, -5791764, -6148246, -12071542, -7036230, -4588636, 10745471, 3071975, -319438, 3697430, -1166084, -5153961, 94489, 22796076, 18743238, 29731912, 5315559, -16437377, -34528316, -28229210, 11402601, -26704496, 30609696, -3914326, -19665044, -79362408, -40818296, -37608344, 827318, 3945464, 8025684, --355945, 5823976, -9054865, -128849, -13365938, -11973832, 16689706, 14697915, 8519605, 8581882, -4282620, 1866163, 3726421, 23226646, -37755984, -124970128, -116288920, -66763656, -72597296, -18122078, -120341224, 61127584, 123814240, 109859896, 172228720, 122986392, 105804368, 17047798, -45941656, -103872712, --166413872, -141344160, -142329312, -74412456, -35712116, -8413304, 1186485, 4064113, 29382946, 39241504, -99039264, 60117732, 116878408, 76107896, 100190312, 36218384, 96810712, 33601676, 23689428, 22880902, --5750961, -27207008, -65523484, -75654240, -140379392, -96204048, -177887888, -140784736, -215903168, -128044784, --101562552, -24544128, 59351080, 31523450, 5348845, 59198072, 126626376, 169092864, 221765808, 264282224, -226193376, 165184976, 206066096, 169965808, 95326800, 42820824, -10539850, -70924944, -163972192, -194827776, --260823696, -336830656, -389721024, -351761056, -309951680, -220660384, -150590688, 46105936, 145321824, 177027808, -272721824, 227629504, 284420256, 298820192, 293228160, 337933408, 221921504, 57591752, -55796992, -108360952, --134006736, -86852832, -125495184, -107690400, -125592360, -170099488, -171936672, -200292576, -118501368, -92356832, --78626352, -44029320, -2595771, 11770895, 48714592, 131985952, 139207936, 197487968, 172036528, 225870720, -166221136, 110969072, 114644488, 43630424, -29942364, -49080200, -217787056, -280961728, -261463120, -230867376, --135031088, -106107704, -57873612, 5050345, 59042380, 89746560, 122198264, 145674560, 173430240, 164499392, -155720480, 136929456, 76744624, -300111, -38511360, -90315648, -94247152, -80909664, -65776888, -68793032, --69345472, -54661512, -38881804, -23109072, -9186935, -8630737, -5681168, 2371359, -5889474, -7402376, -10667625, 23259396, 26505854, 17559436, 13641890, 20933134, 26779658, 21045340, 25551834, 33587180, -41008348, 34887484, 8455180, -4130148, -1467268, -1749662, -11314554, -9800042, -6849399, -15786152, --25914758, -32639604, -30975304, -27277338, -21926344, -18196166, -10467909, -4167192, -2336462, -1035087, -4993437, 10080825, 13377749, 14493904, 15471009, 12569759, 10346576, 10069551, 6594386, 1457605, -3268470, 4005594, 1468879, -1540820, -2433636, -119722, 4810900, 6691022, 5814849, 5041755, -7487739, 5913633, 1737314, -2017561, -4309463, -6175626, -7748121, -12868259, -15598247, -14781130, --15588584, -18523658, -14382235, -5492727, 603443, 1969779, 5387500, 9977209, 12601434, 11283416, -11292543, 12510703, 11515344, 8492761, 6075768, 3447785, 1685775, -354335, -1882806, -2112050, --1903744, -2341294, -3115999, -3331284, -2873333, -2536178, -2312303, -1957431, -1450088, -1095754, --820339, -676994, -520765, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +5090610, -6489159, 817118, -2736968, -835908, 2556043, -4011500, -7315940, -1848983, 641024, +-4179540, -2405719, 3586298, -2092186, 1675037, -9168681, -760209, 6233072, 3339874, -10261214, +-3510599, -2680597, -2700998, 3486977, -1469953, -5339181, -3332895, -3813394, -3865471, 6786585, +2148558, 4374961, -2795487, 5741835, 5240934, 3723200, -2028835, -4852776, -3787088, 413927, +1003949, 7804493, 2798171, 1491964, -3637301, 855235, 372588, 899259, 3126199, 1836635, +-5255966, -4494684, -2288144, 2853469, 701690, -993748, -5619965, -1726577, 2259153, 2565169, +-2243584, -861678, 166967, 2714419, -544924, -2994666, 44560, 431107, -3819300, 8218957, +558883, -5580773, 33823, -862215, 5319854, 420907, 3614752, 4927401, 1892470, -340913, +281320, -1796907, -1124745, -1197222, 3176128, -1016834, -362388, -1421634, 1123671, 370441, +-564251, -137976, -775778, 155693, -76236, 625992, 680752, 1036698, 1330366, -5672578, +-5135707, 5773510, 5294084, -4325032, 3179350, 296890, 1628330, -14149233, 5442261, -2124398, +-9665824, -12602508, 319975, 9068287, 531502, 5870684, 202400, -11401528, -3942780, 1285269, +3962644, -2029372, -988916, -4815732, 619549, -896038, 8025684, 4060355, 1694902, 1416266, +2171106, 2765422, 7317551, 4416300, -6489159, -576599, 1493575, 1540283, -7714835, 2479270, +-2302103, -4899484, -1390496, -233539, 5258651, 1327682, -2956011, 5309654, 8308078, -1789928, +-3166465, 1984275, -606127, 4520453, 4627291, 3602941, -5572183, -4262218, 3979824, -1712081, +-1406065, -4294431, 453119, -6364605, 3764539, 3371549, 4457103, 1119376, 5181341, -5644661, +-3536906, 7262790, 373662, 2675765, 8601209, 3299072, 839666, -3495567, 5042829, 579284, +-2569464, 1416266, -6094559, 145492, -648540, 879395, 1627793, -722091, -2719788, -1514513, +-448287, 1298691, 1236414, 392453, -755914, 715649, 1713155, 275952, -574989, -555661, +7516, 7188702, 636192, 2783676, -6051609, -5139465, 2942590, -1424319, -2213519, -2810519, +-2630131, 2185065, -7003481, -4013110, -8648990, -10387915, -1924145, 8650601, 5574868, -3490735, +-974958, -1198833, -2015413, -7480223, 5388037, -1875290, -1924682, 476205, 3520800, -1682554, +309775, -255014, 5099737, -4713190, 5115306, 2798171, 6133214, -2088965, 4744328, 2115272, +-2940442, 4284767, -2907693, 2469069, 4545149, -3427921, 4773320, -2847563, -2308008, -716723, +-1419487, 2411624, -1397475, -3628174, 1454383, -3148748, 685584, 435402, 484794, 7211250, +1393180, -1650341, 33286, -2947958, -4130148, 2137283, -1001264, 6884833, 7005092, 2851322, +-1955821, -1075889, -59593, -2756832, -3208341, 3545496, 5549098, 186831, -615254, 3427384, +3678640, -473520, 1292248, 1193464, -2692408, 2551748, -498753, 3659312, -1822140, -690416, +-150861, -1510755, -179315, 2668249, -595390, 814433, 766115, -1871532, 574989, -336618, +-394063, 768799, 681289, -1194538, 1356673, -455803, -605590, 109522, -170725, -216896, +-1114544, -805306, 353798, 13716515, -5801427, 5624260, -6991133, -5879274, 29528, -1630477, +-1486596, 1912871, -2940979, 5932961, 5788006, 4959614, -1487132, -644782, -2581812, -6328635, +990527, -3801046, -702227, 696322, -2119030, 3608846, 1365800, -431107, -10448045, -4359929, +-6584185, 249108, -4307316, -6621766, -2901787, -3658239, -4047470, 6595459, -5267778, 4649839, +404801, -1868848, 2604898, 2238752, -4721780, -1292248, 99321, 5093831, -483184, -6960532, +-8831527, -9193377, 2393908, -3357591, 203474, -727460, 1331440, 3109556, 5112085, -3529390, +-1868848, 1683627, 1758789, 656056, 6410239, -3585224, 3964255, -7362111, 14432164, 1775432, +-1535988, 2806761, 1381906, 2760053, -4012036, -706522, 1095754, -444529, -863825, -7282654, +-2421825, -4949413, -1473711, -578747, -3569655, -3488587, 2592013, 3028489, 922344, 595927, +-333934, 2558727, 1503239, 2937758, -1472100, 259309, 89657, 2699387, -1083942, -158377, +-165893, 301185, -2138357, 526134, -1548336, 780610, 1075889, -511638, -1801202, 359704, +551903, -555125, -622233, -1934346, 507343, -226560, -991064, 1221381, 1401233, -179315, +-413927, -6754373, 930934, 1198833, 401579, -1105954, -4059818, 2343442, 1870458, -6107981, +7076496, -8924942, 10910291, -1123134, 3614752, 1564979, -264141, -1229971, 2213519, 10213432, +11474542, -2259153, 2034741, -1440962, -1672353, 1472100, 2407866, 7839926, -1037772, 2336999, +-4030827, 4272419, 926639, 6168647, 2981781, 5774047, -8439074, 3488050, 3033321, -2704219, +-117575, 6272263, -1611, 438087, 1897839, 3792993, -1333587, -606127, 12183748, 5752035, +1056562, 1052804, -2576444, 5484673, -7402376, -10872710, -13113072, -865973, 6860137, -272730, +3409667, 9244380, 3656628, -1709934, -3293703, 4898947, -983011, 11902965, 5359046, 1711008, +1654099, -6595459, 1370632, 4866198, -2527588, -7419019, 1275605, 2579665, -335544, -2621004, +-952946, 1184337, -2403034, 1315871, 1349157, 1181653, -486942, 1373853, -2355790, -2253247, +-730681, -1455994, 740345, -2262374, 1258962, 2081449, 1406065, 1552631, 1618129, 441308, +1036161, -3095061, -2558727, -1023813, -1345399, -1651952, -332323, 940598, 557272, -182536, +1891933, 954557, -147103, 2315524, 1483911, -80531, -16011101, 1646046, -1265942, 10876468, +-8249022, 4736812, -16945256, 6581501, -1649804, -8674760, -9511205, -6684043, 4990215, 3870839, +12767864, 1631551, 4220342, 12199855, -2180770, -8998493, 1293859, -6951405, 1636919, 9931575, +1817308, -2878702, -1233193, -1989107, 2901251, 3799436, -863825, 2514167, 5116917, -3294777, +1596117, -6127845, -504659, -7650411, -1221381, 953483, -3623879, 5506685, 3783866, 4679904, +9461813, 524523, 11457899, 8711804, 4224637, -6059125, 13146895, 5583995, 2287607, 11460046, +-1292785, 170188, 936840, 3742527, -2432562, -3463354, -7936026, -7749732, -6271726, -24696, +-4953171, 10036265, -6129455, 4095251, 6302865, -3649112, 303332, -3002719, -1720134, -10053445, +-11413876, 5109938, -2006824, -3924526, -3398930, 870805, 1313723, 666794, 2211908, -4086662, +9299141, 549756, 2784213, -2017561, 500901, 2666101, -4559108, 1422171, 158377, 1459752, +2096481, -124017, 1634772, 3070365, -7516, 803159, 2279554, 2415382, 3284039, -256087, +552977, -1806571, -481573, 48855, -798864, -2509335, 160524, -811212, -1040993, 137976, +-972810, -1393180, 13328894, 486405, 140123, -1257352, -2630668, 2375654, 534187, -6835441, +-8750996, -11855183, -6221260, -12403329, -7892540, -4241280, -9181566, -5818070, -4028143, -4786741, +-12404939, 8468602, 5298916, 288300, 4454418, 2029909, -3462818, 15348066, 921271, -5340255, +-2815351, -10449655, -4508642, 11421929, 530428, -9635222, -9630927, 1371705, -9748502, 3087545, +3381213, -7601019, 271120, 2338073, 508417, 11240466, 3346317, -5174899, 1108638, -6198712, +5658620, 780610, 2488934, -13809394, 9473087, -4765266, 3928821, 289910, 1811939, 2232846, +323733, -4043175, -348966, -5411122, -20938, -10894721, -92879, -11751031, 15418933, -2658585, +9797357, -7260642, -3414499, -1584306, -7494718, -4198331, 6002217, -249108, -266288, 4442070, +5767604, 897111, 9440875, 8169565, 11360725, 6036040, 2385854, 1356673, 5137855, 2729452, +1684701, 2070711, 1134408, 2505577, -754304, 4115116, 687195, -302258, -911070, 3197066, +1276142, 2265059, 1115081, -1555315, 1064615, 1239635, 1030792, -2540473, 4733054, 2536178, +-505732, -3684545, -442382, -587874, -2665564, 915365, 430570, 2676838, -2281165, -5076115, +-6799470, 20938, 5088463, -13105019, 45634, -5637145, -4502200, 9364639, -15122580, -14282377, +3786014, 19159312, 540629, 1866700, 1520418, -2863133, 10515691, 10210211, 5921150, 2932389, +-2704219, -15484431, 9259413, 128312, -12394202, -3965866, 2937221, -579284, 155156, 1321776, +-2945811, -12205223, -639413, 550830, -2189360, -5070746, 3728569, 10678899, -13662828, 8581345, +-5090610, -2532957, 865436, 6819335, 22333830, -14361297, -3581466, 1464047, -1378685, -2588255, +787053, -5475547, 1973001, -4940286, 15370614, 5317707, 2920578, 4277251, -3187403, -834834, +8159901, -1224603, 3575024, -6693170, 11811697, 572841, -8274792, 16498580, -10430865, 7623567, +2209224, 3785477, 12013560, -4718022, 5144834, -532039, 74625, 1492501, -749472, -8024610, +-4226248, -468688, -3517578, -1216550, -1893544, -4902169, -5009543, -3750580, 2412698, -4286378, +2552284, -1108102, -124017, -3754338, -2549600, -2756295, 2292976, -5202816, 583042, 561030, +3245922, 5044976, -1901597, -897111, -4437775, -3785477, 326418, -3324305, 1008244, -572841, +-2931315, 110059, -847182, 1414118, 1857573, -1200443, 16273094, 1248762, 4224637, 4810900, +-2753611, -9407052, -7383049, 1103270, 16278463, 9218610, 1981591, -14602889, 2075543, -8041790, +22549, 16290274, 15662672, 7902740, 10579041, -9589588, -19841138, -10397042, -14307610, 7897371, +-168041, -2435247, -81604, -10828686, -3235721, 3322694, -2058363, -4127464, -4022774, 11537893, +-774705, 3124589, -3313567, 7558069, 1578401, -4392678, -9220221, -7081328, 20895552, -920734, +-4759361, 6665789, -11985106, 3730179, -6871948, -20910586, -4715874, -2737505, 6293738, 2403034, +5525476, 1744831, 8237211, 290447, 544387, 4557497, -20448340, -3244848, -5515275, -1477469, +1952063, 11705933, 12923020, 4649839, -3420942, -8950712, -11764989, -3958349, -6935299, 1460289, +-3466039, -3677029, -8113730, 12072079, 8681203, 3523484, 11085847, -2666101, 4407174, 6801081, +-4376572, 4043712, -2831994, 870805, 4021163, -1252520, -2724083, -1136019, -1520418, -1074279, +-129923, 256087, 3981972, 143881, 442382, 1217086, -2270427, -6198175, 210990, -1458678, +-841277, -1136019, -3676492, -430034, 1171989, 5479842, 4476967, -2567317, 593242, 3600256, +-807991, 816044, -1343251, 813359, 3426310, 420370, 3762928, -23602992, -15431281, -3570192, +-5617281, 12064026, 8288213, -1974074, 20772610, -20986284, -4890357, -7917772, 22187264, 10647224, +-7285875, 8182987, 3115999, -8629126, 15324980, -16891570, 8370355, -7776039, 1326608, 1847910, +-5634460, 14799384, -10391673, 9090298, -4324495, -21759914, -3605088, 15210627, -9199283, -14854681, +209380, -1846836, -22230214, -4151623, 8928700, 3790309, 11865384, 8727374, -2506114, 21395380, +-5112622, -6580427, -10513543, -9788767, -9468255, 5877126, 7992934, -6880001, -7761543, 2567854, +-6731825, 8973797, -2465311, 4873178, -3637837, -5556077, -4264903, -118112, -12583180, 3412889, +9080098, -2118493, 3928821, 5458367, 6447820, 11623255, -8313983, 3740917, 9062918, -1165010, +-19299972, -20543366, 2263448, -1950989, 1527398, -7517804, -3122978, 1516124, -7442105, -13500693, +-4125853, 10190884, 8266739, -4060892, -1647120, 3136400, 2793339, -1607928, -3282429, 244276, +-435402, -5309117, -1970316, 5641440, -1626182, 4532264, 814970, -1411971, -2782065, 3639985, +3586298, 4212826, 500901, -2368138, 2442226, -6326487, -3799436, 3115462, 1450625, 2672544, +4919348, -2518998, 1014686, 1930051, 2394981, 456877, -2895345, -4154844, 1848983, -2264522, +-1392106, 16779364, -10826002, -27066884, -24696, 19059454, 24366424, 4444218, -9178345, -6915971, +2377265, -4509716, -4013110, 10636487, 10784126, -5487895, 10400800, -13496398, -1775969, 9511742, +-4845797, 11545946, 5355824, -1750199, -16204375, 6016176, -3899294, -3947612, 684510, -1328756, +-1851131, 21912386, -10976326, 11121818, 18748070, 12972949, 6753836, 118112, -12625056, 12361453, +-7131793, 11771968, -6854768, 2622615, -13266617, -2653753, -12547210, -8272107, 1733019, -11669963, +-3343095, -4148939, -624918, 10155450, -12261058, -10540923, -3952981, -6106370, -2609730, -10450192, +-13494787, -16822314, 1532230, 12829067, -1052804, -8353175, 1232119, 2638721, 10137733, -11447698, +-6637335, -3737695, -442919, 7597261, -17180, 2041720, -7963406, -3376381, 3923453, 15522012, +6862284, 10692321, 12419972, 16222091, 6217502, -2314987, -5879274, 3884261, 4911832, 7115687, +2988224, 607201, -74625, 9820443, 3468186, -3747896, 714575, 5476620, 2172717, 1271310, +-3704409, -3629247, -2602213, -5019206, 271657, 4605816, 4431333, 919660, -2723009, 6455336, +3712462, 8196408, 4263292, 178778, 5484137, 4295, -4349728, 6271726, -99858, -925565, +-2466922, 1189706, -1566589, -192200, 5496485, 3192235, -45167488, -21471616, 15071577, -36884104, +-25564182, -1650341, -15044197, -10320806, 11260867, 12869333, 3950296, -2369211, 4669703, 36830420, +-4506495, 5888937, 14190035, 16156593, -16787416, -8721468, -7943542, 13595719, 14858439, 7453916, +2747169, 13898514, -4070019, -6971269, 9780714, 18811420, 1358283, 6076305, 19157164, 14113799, +11532524, -8593693, 3648038, 5794448, -12885, -318364, 12308839, -4030290, -167504, -1245541, +8231305, 304943, -13407277, -8994735, 2724083, -18245558, 13852343, -4054449, 30569430, 1215476, +16781510, 3320547, -697932, -9848897, -439160, 3913789, -12879533, -6648610, -15050639, -1907502, +7754027, 10512469, -4549444, -24551644, 8930848, -3902515, 8413304, -8804146, -10479183, 7707319, +-15865609, -12170327, 23738284, 354872, 10952703, -2233383, -10224707, 2850248, 13997298, 3401614, +11140071, -17984638, -854699, -1217623, -2942053, -15460809, 15136538, -9001178, 1146756, -1760400, +1861868, -5731097, -521839, 3176128, 4667556, -3823058, 9932112, -2433099, -3119757, -5788006, +-4901632, -4993437, 4798552, -1916629, -3451006, -1459215, 1304060, -3796214, 6962679, -2058900, +7875360, -4895189, 3373160, 1221918, 3178276, 5082020, 1084479, 18233210, -8434779, -21275120, +9006546, -11151346, 4552666, -365072, -10632728, 19417548, -26162794, -1159641, -31565326, 685584, +25360708, 35512936, 16758962, -6195491, 16375637, -1331440, -2362769, 1687922, -2870112, 8671539, +-1161252, -16740709, 897648, -23232552, 8074002, -7246147, -5240397, 15444702, -392453, -17883170, +-19979650, 4533875, 2672007, -9998684, -8339753, 14825690, -21652540, -197032, -4430259, 7533910, +-5867999, -4760971, -17337172, -7417946, -7697119, -3302293, 12365211, -14840723, 5235029, -1880659, +-2637110, 1856500, 5286031, -25065966, -2736431, 3307125, -2284923, 9163850, -7949985, -11121818, +-5114233, -28038620, -12412455, -12269648, 504659, 11855183, 17892296, -8583492, 13518946, -23393614, +37286220, 2482491, -6794639, 19469086, -23270670, 19541028, 8684424, -5328444, 320512, 6466610, +431644, 3054259, 17783312, -7724499, 7536057, -4220342, 5426691, 8832600, 8685498, 10646687, +-3791383, 8964134, 2037962, 1275605, -1598802, -12120935, 359167, -8624831, 3837017, 5462662, +-1952600, -1420560, 1505386, 1136019, 5919002, 2698313, -4466766, 6450504, -186831, 687195, +7966628, 5435818, 3125126, 14571213, -12145631, 8053, 5255966, -66035, -9564892, 2214593, +-6120329, -5758478, 22950158, 1328219, -16338592, -337692, -2447058, 10660109, 7039452, -9957882, +11565810, 239444, -25729538, -28026272, -2650532, -8422431, 7037841, -1176821, -9868761, -25258702, +-22018686, 12059194, -18727668, -4184372, 1231045, 5967857, 1448478, 18056580, 1557999, -9088688, +12127914, -1578937, 1816234, 11180337, -14646375, -938450, 3238942, -14972793, 9148817, 12487617, +5487895, 11114838, 5847598, 17200270, 4744865, 12528956, -17510582, -5459977, -2745021, -23556286, +-67646, -2524904, 9931038, -1553704, 11375758, -1860795, -13626857, -9293772, -645319, -21786222, +9625022, 627602, -4175782, 12779138, 8142185, 10619844, 11057393, 3389803, -1256815, 9276592, +-29510720, 8995272, 3787624, 13266080, -5165235, -20855288, 13212930, -3130494, 22662394, -33308546, +-11803107, -23319524, 16037408, -6783901, -21391622, -23895588, -15692200, -7055021, 7687455, 6023692, +-6499360, -6776385, -3506841, -409633, -7184407, -2726767, 12265353, 1914482, -1103807, 3604551, +2731599, 2258616, 6687801, -5116917, -6743099, -153008, -11761231, 17180, -4089346, -1669669, +-7570954, -2041720, -10354629, -9308805, 11864847, -6582038, -366146, 3985730, 5745056, -986769, +9965398, -8230231, -2607045, 4110284, -9656160, -2650532, 11423539, 4095251, 2601677, -3878892, +-5818607, 4402342, 15609522, 14469745, 53059488, 40082784, 5384815, 11589969, 3317862, 30787936, +795643, 14964740, -14058502, 36475008, -14519137, 33075544, -1544041, 21114596, -2517925, 14890652, +-14905147, 3540127, 7401840, -8177081, -2718714, -4409858, -3484292, 9842991, 180389, -8559333, +-11797738, -17757006, -22594212, -10871636, -3850975, 104153, 7037841, -19020800, 7994545, -10481331, +-16175921, -3382824, -11833709, 5352066, -2925410, -24736328, -5932961, -12589623, -14944339, -15660525, +14147085, 18948858, -39731132, 8979166, 3473018, 11123965, 3879966, -5021891, 23953032, 13487808, +12509629, -33221036, -14912126, -449898, 8136279, 27480812, 979253, -3728032, 1280974, 23281408, +20871394, -19833622, 22338662, 1654099, 4976794, -3792993, 13087302, -28261422, -9951439, 29123636, +-4523675, -1894081, -11271068, 19421842, 12637941, -10040560, -17048872, -2928094, -784368, 1729261, +199716, -3630321, -15897821, -5413807, 12299176, 16203838, 9987410, -8936216, -2420214, -2607582, +-7718056, 2499671, 2507187, 7501161, -1701344, -5274220, 4629975, 1829119, 2769180, 14680735, +1936493, -4060355, -5628555, 2543695, 5208722, 11441256, 2239289, -11078331, -5989332, -8311299, +3254512, 4282620, -9239012, -19532974, 6273337, -1570884, -3344706, -6806450, -12103218, 14621679, +-5729487, 12746926, 19800872, -22284438, 6972880, -12713103, 37272264, -22003118, 21073794, 19435800, +-7346005, -34740916, -20212652, -2248952, -9224516, -988916, -15918759, -25294136, -33687040, -19276350, +-22422414, 9737765, -19174882, 8046085, 2308545, -2157684, -1962263, -15761456, -4865661, -16193100, +4790499, 14566382, 19033148, 397284, -5317170, -16622597, -3954054, 1712618, -9894531, 2884071, +-13656385, -8862128, -1937030, -13527536, 10768020, -11941083, -35391604, 1368484, -1074816, -11642046, +15114527, 11877732, 17219598, 6652905, 13553843, 27431956, 4627291, -27183384, -6194417, 12869870, +-5968394, -22586696, 12674448, 18000208, 6070937, -72478, -30600032, 27413166, -1281511, 22384832, +-18507550, 22668300, 55438900, -4849555, -1563368, -27012124, 14604499, -21962852, 18606872, 9496173, +-12090870, -2654827, -29895120, 6952479, -16288127, 314606, 11549704, 11596949, -375810, -7677254, +-6645925, 8286603, 20290500, -9773735, -1540820, 3173981, -8786429, -2509872, -2743410, 4313221, +-934155, 8570070, -3844533, -9652402, -5345624, 3008088, 7714835, -9553081, -2942053, -81604, +1379221, 7219840, 1604170, -2349347, 2611877, -16255914, -9291088, -915365, -1432909, 3485366, +1037772, 1423245, -226560, -2719251, 8420283, -339839, 6302328, -292595, -1705639, -5915781, +-4044786, -43641700, 14730664, -57222388, 37679212, 13447006, -9831180, 40156332, -3929358, -20559472, +35617628, -13809930, -2004139, 7472706, 12420509, 32911260, 1285806, -2754685, 23229868, 9815074, +19500226, 23869818, 17703318, 1572495, 12359842, 1895691, -1297617, -13174275, 8341900, 12496207, +2989834, -817654, -14195404, 6730751, -13299903, 15896211, 15706695, 2679523, 18566606, -11516955, +12247099, 19237696, 12274480, -26089778, -28015534, 32831804, -3216394, 20517596, 31906776, 707059, +8590, -3373160, 6259378, 18402862, 17510582, 1784559, 14545980, -35970, -16625282, -20780662, +-30726732, 497679, -12480638, 398358, 17405892, 16262357, -28737626, 2424509, 11145977, -25245818, +4187056, 35022772, -15204184, -17534204, 18825916, -20270636, 4665945, -5726802, 36781564, -10732586, +22724672, -11310796, 19102404, -1835025, 7107634, 15215459, -24008868, -7358353, 9167608, -15954730, +11684995, -14324253, -3935264, -8107825, -7330973, 988379, -3926137, -6590628, 3875671, 10889890, +-5474473, 2945274, 4023848, -9528922, 1713692, 1253594, -2400350, -6751152, -2725157, -5224291, +-15386183, -6171331, 3362960, -20309826, 7393250, -10429791, 7881802, -4762045, -1899449, -14256070, +-7359964, 130460, 4000762, -6318971, -13785771, 2267743, 1024887, 7398081, 3280281, -24696, +9104257, 7191386, 858457, 6171868, 4281009, -19846508, 4566624, -23011898, 47649976, 11774653, +-25269440, 9771587, -5779416, -22487912, -26513370, -26914412, 8115878, -1219771, 23961622, 35475892, +17111686, 8678518, -4169876, 11853573, 1236414, -44398152, 19632832, 46335180, -30154966, -31705986, +-27368606, -38779260, 28230820, -38185480, 17340394, 340913, -4683125, -159988, -12330851, -14721537, +19102940, -39296268, 40587976, 23311472, 5476620, -25832080, -19478214, -17085916, 3729105, 6833830, +-16662862, -2253784, -12277701, 27941446, 12736189, -4974109, -744640, 11520713, 2674154, 13139379, +-22698366, -8978629, -2086280, -3992172, -21107616, -14879377, 12694850, -40288940, -23697482, 3107946, +47246788, 22786412, -14272176, -932545, -35750772, 17470316, 54786064, 1961190, -11669963, -8196408, +-25740812, 33711736, -10744398, -12994424, -1046361, 19989314, 12630425, -17301202, -15531675, -5563057, +17678086, -4676146, 5237176, -1357210, -13882408, -4514548, 22374096, 12776991, 1908576, -10332081, +-1569811, -1557999, 17464410, 14166413, 7163469, 6404333, -20536922, 7895224, 7503845, -3077881, +4758287, -3218004, -2868501, -18046916, -1838783, -918586, -2477659, -5755793, 4919885, 6626061, +3554622, -21229486, -18193482, -9000104, 16106, 1295470, -21343304, 7641821, 27001922, 5428839, +-7392713, 506806, 4250944, 85362, -11605002, -8902393, -2975339, 3651796, 192200, -21986474, +-15107547, -44088912, 9799505, -32446330, -48593260, 11592654, 27072790, 6776385, 7363185, -20477868, +-25669408, -6556268, -38094748, -18635864, 10107132, -31839130, 50512572, 9960566, -12262132, 10985453, +-24031952, -47579648, -15895674, -36354212, 5906654, 10817949, -13282723, -25811680, -13062069, -15865609, +14106820, -18893562, -6851010, -2317672, 21661668, -15442555, -2756832, -7139310, 5601174, 9168145, +1729261, -6292664, 22333830, 29251412, 18687940, -14740865, -12127914, -42636676, -23739358, -9625559, +11408507, 72058280, -12214887, 1003412, 32079110, -2748242, 13698798, -16197395, -16963510, -13609678, +15247671, -40434968, 362388, -5224828, -465467, 35283692, -15396384, 53331684, 4752918, 40453760, +-51315732, -15247134, 14900852, -862752, -22246856, -18618684, 41720240, -42811160, -35415228, 51302848, +9043054, 44564580, -17609902, -2797634, -3058017, 14449881, 6136972, -3914326, 15144592, 15306727, +-797253, 7283728, 4793184, 1760400, -5238250, -9405978, -2163590, -6169721, -8463233, 8055211, +4599910, -7019051, 5158256, -15522549, -1538135, 11244761, 19357954, -1387274, -12191802, -758599, +-13880797, 8108362, 13298292, -9108015, -7631620, 7639136, 8864276, -19654308, 7086696, 1046361, +12923557, -8258685, -8704825, 76773, 4085588, 6199249, -22328462, 3799972, -9474698, 17872432, +-6196564, -3979824, -2586644, -44065828, 21050708, 32422708, -23440858, -19246822, -6563247, -21143588, +-25508348, 6878927, 7583302, 19905026, 899796, 17403208, 30877594, 32261646, 21386252, 7461969, +-23589572, 2390686, 12291123, 16357383, 25044492, 338766, -12946105, -18772228, -7112466, 25463788, +-10410464, 10064719, 22058416, 2253784, 43338368, 5078799, -27662274, 23990614, 23605678, 6896107, +10175314, 21995064, 3494493, 1947231, -25395604, 54934780, -58472760, -42884712, -49882824, -16415365, +10305237, -29219200, 15044197, 32807108, -9717900, 3303904, 28823526, 9315784, -31272730, -10747082, +-24209656, -3365107, 1776506, 1695975, 27860916, 27524298, -6331319, -6815576, 17488034, 42329052, +7295539, 34845608, -29327648, 30987652, -13581223, 10347650, -6213744, -19585050, -13748727, -3007014, +13934485, 8679055, 34406448, -44464724, 22641994, -17524540, -11064373, -8571144, 16457241, -7738994, +-1609539, 3709778, -17941690, 11317776, -8816494, -486942, -13642964, 4314295, -2822867, 716186, +-15362024, 2387465, -1486059, 3172370, -1582696, -16539382, 6562710, -9368397, -8734890, -3809636, +12320651, 14505715, 15789910, -13511967, 27215598, -20467130, -6322729, 1684701, -2343442, -15093052, +-8299488, -755914, -11534135, 3386582, -1067836, -369904, -1488743, -11151346, 1319092, -1755031, +-651761, -24976846, -50236620, -50563040, -36600100, 7493108, 93889592, 23718956, -12969727, -28406914, +-67874976, -95463704, 21531744, 39517456, 47437912, -10000831, 4094178, -28003186, -48711908, 14024679, +8820789, 15829102, 2268817, -40850508, -12498355, 9961640, -8232379, -1627256, -7748658, 53191024, +46698644, 31488552, -2908230, -22855132, -38813620, -25693032, -23237384, 36327372, -6049999, 26577258, +11999602, 12436615, -16379395, -88428544, -60899416, 30038464, -47927004, -16365436, 101971648, 70115880, +52668112, -39968964, 28832652, -27690192, 1990717, 2004139, 14769856, 43245488, 76219024, -29218126, +-2755222, -50303732, -40660992, -66566624, 7184407, -2771865, -71687296, -17188996, 46111304, 17221746, +32171452, 43636332, 78636560, -57342108, -34443492, 4522064, -46828564, -6058588, 26114474, 61256972, +31111132, 9538585, -37447820, -35890356, 24157044, -10244034, 36069136, 31721018, -8625368, 14512694, +5791764, -6148246, -12071542, -7036230, -4588636, 10745471, 3071975, -319438, 3697430, -1166084, +5153961, 94489, 22796076, 18743238, 29731912, 5315559, -16437377, -34528316, -28229210, 11402601, +26704496, 30609696, -3914326, -19665044, -79362408, -40818296, -37608344, 827318, 3945464, 8025684, +-355945, 5823976, -9054865, -128849, -13365938, -11973832, 16689706, 14697915, 8519605, 8581882, +4282620, 1866163, 3726421, 23226646, -37755984, -124970128, -116288920, -66763656, -72597296, -18122078, +120341224, 61127584, 123814240, 109859896, 172228720, 122986392, 105804368, 17047798, -45941656, -103872712, +-166413872, -141344160, -142329312, -74412456, -35712116, -8413304, 1186485, 4064113, 29382946, 39241504, +99039264, 60117732, 116878408, 76107896, 100190312, 36218384, 96810712, 33601676, 23689428, 22880902, +-5750961, -27207008, -65523484, -75654240, -140379392, -96204048, -177887888, -140784736, -215903168, -128044784, +-101562552, -24544128, 59351080, 31523450, 5348845, 59198072, 126626376, 169092864, 221765808, 264282224, +226193376, 165184976, 206066096, 169965808, 95326800, 42820824, -10539850, -70924944, -163972192, -194827776, +-260823696, -336830656, -389721024, -351761056, -309951680, -220660384, -150590688, 46105936, 145321824, 177027808, +272721824, 227629504, 284420256, 298820192, 293228160, 337933408, 221921504, 57591752, -55796992, -108360952, +-134006736, -86852832, -125495184, -107690400, -125592360, -170099488, -171936672, -200292576, -118501368, -92356832, +-78626352, -44029320, -2595771, 11770895, 48714592, 131985952, 139207936, 197487968, 172036528, 225870720, +166221136, 110969072, 114644488, 43630424, -29942364, -49080200, -217787056, -280961728, -261463120, -230867376, +-135031088, -106107704, -57873612, 5050345, 59042380, 89746560, 122198264, 145674560, 173430240, 164499392, +155720480, 136929456, 76744624, -300111, -38511360, -90315648, -94247152, -80909664, -65776888, -68793032, +-69345472, -54661512, -38881804, -23109072, -9186935, -8630737, -5681168, 2371359, -5889474, -7402376, +10667625, 23259396, 26505854, 17559436, 13641890, 20933134, 26779658, 21045340, 25551834, 33587180, +41008348, 34887484, 8455180, -4130148, -1467268, -1749662, -11314554, -9800042, -6849399, -15786152, +-25914758, -32639604, -30975304, -27277338, -21926344, -18196166, -10467909, -4167192, -2336462, -1035087, +4993437, 10080825, 13377749, 14493904, 15471009, 12569759, 10346576, 10069551, 6594386, 1457605, +3268470, 4005594, 1468879, -1540820, -2433636, -119722, 4810900, 6691022, 5814849, 5041755, +7487739, 5913633, 1737314, -2017561, -4309463, -6175626, -7748121, -12868259, -15598247, -14781130, +-15588584, -18523658, -14382235, -5492727, 603443, 1969779, 5387500, 9977209, 12601434, 11283416, +11292543, 12510703, 11515344, 8492761, 6075768, 3447785, 1685775, -354335, -1882806, -2112050, +-1903744, -2341294, -3115999, -3331284, -2873333, -2536178, -2312303, -1957431, -1450088, -1095754, +-820339, -676994, -520765, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -11935714, -4490389, -6781217, 3733400, -3810173, -7852811, -13598940, 2443837, 442919, 3472481, 3055869, --909459, -964220, 1072131, 8282308, -5812165, -10409927, 3504693, -4285304, -6958384, 159988, --1002875, 4361003, 1584306, 3120831, -3104188, -746251, -2021319, 7058242, -1874216, -2805688, --2459943, -1205275, -1656247, -2787434, -2450816, -1696512, 1430761, 627065, 958851, 270583, -1868311, 3011846, 1553168, -2624762, -7891466, -49929, -5475547, 830002, -336081, -2484639, -3586835, 268435, 63351, -7875897, -3190087, 1083942, -581431, 2785823, 239981, 2480881, --2255932, 1042603, -956704, 4898410, -1690070, 2589865, -4323959, -4321274, -5452998, 293668, --1264868, -1581085, 74625, -1898912, 4295, -2218888, 513785, 117575, -904091, -3440806, -384400, 376347, 2028835, 1767916, 56371, 1881733, -157840, -1433445, -437550, -670552, -768262, -1611, 142808, 1064615, 805306, -122407, 1000191, -630823, 237834, -8562017, --1758789, -1114007, -2418067, -1086090, -2916283, 2851858, -1145683, -987306, -230854, 73551, --159451, -2054068, 7613367, 4900021, 7956964, -3707094, 7920457, -4671851, -3271691, 3085934, -8769786, -181999, -5294621, -7826504, -5616744, -1073742, 6256157, 2462090, 2126546, 2778844, --2729989, 4256850, 554588, 3182571, -1535988, -7133941, 1956895, -4934381, -3371549, -3460670, --811749, -9060770, -406948, 433255, -3775813, 8475044, -1593970, -2733747, -3391951, -81068, -946503, -3626026, 136902, -4448513, -1662152, 125091, -1822140, 6091874, 201863, -1639067, -3425773, 2189360, 5655398, 2268280, 6796249, 1671279, 5559835, -6324876, 1657321, 5056250, --1714766, -4518843, -6205691, -122407, -471910, -1244467, 1546188, 1829119, -1304596, 4846334, --4154307, 1608465, 1709397, -3108483, 2285460, 508417, -2255395, 1215476, -555661, 477815, --2112050, 659814, 285078, 394063, -219580, -151934, 1073742, 271120, 1970316, -398358, -193274, 9673877, -4444218, -3427921, 937377, -2198487, -1644973, 4835597, -3824132, 4655208, -2116345, 70330, 2359011, -3174518, -3027952, -5543192, -5972152, 7789997, 3663607, 2720325, -4148939, -2767570, -1860795, -2043868, 9844602, -3852049, 10778757, -392990, -2786897, -2631741, --5761162, -6186364, -7507603, -488016, -1917166, 1326608, 7186554, -640487, -3419331, -10094784, -316217, 7976828, 11709155, -5534602, 2996814, 2141041, -3023657, -2679523, 3027952, 11106249, --2691334, 1731409, -991064, -1643899, -1079647, 5318780, 7666517, -5851893, -3202972, 2371896, -10063108, 1669132, 7116761, -5861557, -5458367, -312996, -934155, 2032056, 1496259, -145492, -595927, 1033477, -2669322, 1213328, 3231426, 2496987, -2015950, 6442988, -1684164, 4044786, --2158221, -2238752, 2387465, 2027761, 2154463, 480499, 2248416, 425739, -3394098, -2291902, -615791, -173946, 1199907, -643171, 1811403, -93952, 994822, -1013075, -223338, -100932, --529892, -1176821, -143345, -722091, -215822, -865973, -768262, 1813550, -63351, -889058, -1944010, 27380, -1050120, 15985331, -10943040, -2396055, -4531728, 1276142, 4276177, 7693360, --7635378, 5282810, -1975685, -8078297, -13088376, -2658048, -5545340, 960999, -1225676, -5515812, --2806224, 3088618, 3265249, 10283762, 5717675, 5248450, 566936, 1656784, -5283884, -3563212, -8269423, 6343130, 4313758, 2020782, 3984119, 882616, 67646, -6842957, -9700721, 6551973, --2562485, -6512244, -3090229, -4078072, 3517041, -3585761, 8308078, 1952600, -4732517, -2280091, --3616363, -3120831, 4076998, 6123013, -485868, 4143033, -2968359, -3303904, 59593, 870268, --3166465, -1195612, 4813048, 108448, -1935957, -2297271, 2638721, 2954938, -332323, 3561065, -523449, -2426657, 8289287, -1118302, 945430, 456340, -9905805, 3940096, 3154654, 5221607, -3398393, -3577708, -796716, -8905078, -4088272, -8165807, -2986076, -3624416, 66035, 850940, --5392332, 304406, -1278290, 84289, 2344515, -752693, -969589, -110595, -1471026, 339302, --735513, 693100, -893890, -1949915, -991064, -438624, -3365107, -233539, -129386, 779537, --184147, 494995, -159451, 161061, -1788854, -2267743, 260382, -260382, -1024350, 523449, --2614025, -10934987, 2757369, 63351, -3273839, -6012954, 2443837, -5749351, -1093606, 9795747, -14874009, 7293392, 8155069, -668404, -4189741, 6111202, 5473399, 2274185, 2901251, 7296613, --1131187, 5289789, 5141613, 7571491, 7268696, -6051072, 4857071, -447750, 1673964, -5643587, -1653562, -811212, 4952634, -2001455, -1463510, -4007205, 3590593, -6177237, -5013838, 425202, -5204427, 2799782, -3215320, -1713155, -1024887, -2166811, 3124589, -7424388, 6714108, -107374, -8364449, -12020540, 793495, -10835129, -3445638, -3507378, 2885144, -1205275, -2500745, 2280628, -840203, 2817499, 4597763, 7544110, -995359, -6212670, 1268626, 10192494, 2049773, -3063386, --801011, 6249715, -3391414, 3767760, -3277597, -11073499, 6301791, 6640020, 6197638, -5520644, --8191577, -5968394, 6860674, -835371, -1099512, 4791573, 1764158, 1109712, 799401, -442382, -1860258, 2448668, -889595, -1490891, 1396938, 50466, -520228, 762357, -1415192, 295279, -2181844, -1024350, 2294586, -1085553, -1764158, 712965, -85899, -98247, 1146219, 792421, -1165010, 826781, 828392, -180389, 1124745, -838056, -16366510, 290447, -3617973, 1519345, --9159555, 1131187, 1529545, 12173011, -9716290, 133681, -13038984, 2985002, -7872675, -1912871, -496069, -4265440, 3790846, 1680406, -6818261, 135828, -86973, 6329171, -4114042, 10189810, --106300, -8816494, -4486630, 10842645, -1024350, 4345433, 2902324, -1781338, 6497749, -7163469, --6766184, -5272609, 761283, -6861211, 7320235, -4015795, 4704063, -6644315, -55835, -8074539, -5330592, 715112, 6381248, 5684926, -5358509, 10685342, 9134322, 8603893, 1727114, 9033390, -7448010, -7661148, 6605660, 3143916, 634581, -7113003, 3308199, -6053757, 6033356, -2602750, --4745939, -581431, 8988293, 3187403, -10280541, 9830643, -779000, -3479461, -5860483, 10012106, -8696772, -7468412, 7422777, -538482, -8864812, 105764, -5022965, -2780455, 4929549, -4293894, -3530463, -363998, 1583769, -2060511, 2698850, -373662, -237297, -600759, -948651, 937914, -554588, -2497524, 926639, 1233729, 35970, 917512, 1126355, -2346126, 543850, -288837, -88584, -1980517, 740882, -817118, -1152125, -2633352, 3061775, 621160, -1387811, -416075, -846109, -320512, 23376434, 3971234, -935229, -8063264, -15147276, 3864934, -2233383, -22231824, -19500226, -9450539, -14110041, 2979634, -903017, 2626373, -913217, 3779034, 5622112, 73551, --360777, -11361799, -945967, -1079111, 13393856, -2448131, 346282, 4929549, -2352568, -1650341, --5452998, 11438035, -8584566, 8264591, -2041720, -6854768, 1280974, -7663296, -3897683, -12445741, -2189897, 5712844, -3367254, -6209986, -4916664, 7521562, -11667816, -2759517, -5755256, -163746, --1675037, 1517734, -10123238, 9858024, -13820131, -9449465, 3744675, 1667521, -527744, 3689377, --7170448, -10313290, 1274532, -2805688, -476741, 5061082, -6169184, 4588099, 3190087, 11374147, --3156801, 1630477, -882079, 162672, 15767362, 1320166, 15611132, -3772592, -5871221, 1778117, --8039105, -718333, 7974681, 639950, -9352828, -8182987, 2287070, -871878, 28454, 8013872, -616328, -1510755, 3322157, -460635, -331786, -3748970, 1378685, 1749662, -1891396, -55835, --934692, 3091303, -1409823, -631360, 1580011, 406948, 955630, -299037, 1762547, -588411, --1611, 940061, -1973001, 2431488, -1556926, 896574, 2036888, 1109175, 1923072, 525060, --17115982, -2209761, -3451543, -13877039, -23921894, 7427072, 12480638, -8741869, -4184372, 7077569, --2545305, 14967424, -1622961, -7934415, -4712116, -22289270, 7590818, 2563559, -1992865, -15643345, -3751654, -8680666, -2255395, -7614440, -3876208, 11193759, -10653666, 4659503, -15796353, 10190347, -2066953, 249108, -4524211, 1245541, -2022930, -8807367, -16633871, 3287261, 76236, 3622268, -7041599, -4002373, -1288490, -10678899, -5470178, -2822331, 4593468, 3125126, 7959648, 12683575, -9927280, 5134097, 7586523, 2343979, 7905424, 7121056, -6836514, 8149701, 9197672, -1826435, -12301323, -1222992, 14424111, -6305012, -15391015, -2469069, 9903658, 10896869, 12511777, -2349884, --21494700, -2109366, -1091459, 872952, -673773, -5242545, 3146601, -15665893, 12297028, 7778186, -7479149, -8174934, -7720741, -1657857, 4609574, -498216, -8643085, 135828, -4192962, -7014756, --2784750, -1111323, -3329137, 377420, -2805151, 1493038, -1728724, -917512, 2327872, 488553, -1092532, -1066763, -3052111, -3386582, 2466922, -2688113, -40265, -942208, 1539209, -1059246, --647466, -1047435, 3673808, 1979980, 1162862, -1060857, 22939958, -5050345, -5513665, 7649337, -12348031, -888521, 5743445, 14304389, 10328323, -23488640, -21589190, 176094, -2083059, 3165928, --9655623, -17134236, 4058744, 13738527, 9064528, -9944997, 16148540, 13059922, 12244415, -20583094, -5816997, 10800769, 541166, 1647657, 9177271, 21214990, -4114042, -9688372, 6418829, 4815195, --2905009, 11472395, 17098802, 3205656, 17714056, 7761006, -13326747, 1511292, 14685567, -1575716, --6056978, 7629473, 1210107, 2910914, 15412490, 9924596, 5229660, 1846836, -17939542, -18236432, --1548336, 2910914, 4745402, -5613523, -817654, -4698694, 1578937, 2298881, -6861211, 2612414, --4221953, -1040993, -5834713, 680752, 11378979, -6718403, -16501801, -2546379, -14039711, 3115462, --5027259, -335544, -1906429, 6647536, -2501282, 4822712, -86973, 4141959, 1917166, -1874216, --2259690, -2822867, -8153459, 2993592, 1035624, 2071785, 248571, -6251325, 3137474, -4881767, --4158602, -1396401, -5333276, -1082332, -1757715, -1944547, -1691143, 3491272, -1545115, 2341831, --233002, 1893007, 311385, 4500589, -1939715, 1249836, -3610994, -869194, -3098282, -2774012, --598611, -2032593, 6841883, 2936684, 249645, -907312, -972273, -38156488, -23741506, -7078106, -7122130, -2193118, -9407589, 1868311, -9165997, 26980448, -10713259, 17362942, 26623966, 14504641, -13189308, -10210211, 9522479, -4994510, -12141873, 10835666, 12620761, 8415988, 17969070, 244813, --801548, -7747584, -7948374, -6769406, -10993506, -10700374, -7311645, 4282083, 1610613, 27917, --6878927, -3686156, -10669236, 4617090, -9204115, -8337069, -3683471, 4638565, 39728, -5585605, --15585899, 2004676, -4552666, 5806259, -18402862, -14191109, 16295643, -2353105, -3058017, -7379291, --4525822, 12277164, 4011500, -2395518, 6732898, -1698123, 7001871, 5625871, 7978976, -5553393, --9266392, -23389318, 1697049, -22680648, -1488206, -19180788, -2726767, 18372796, -2247879, 3353296, --12965969, -5520644, -6665789, 1577327, -8310225, -4747013, 8273181, 10327786, -1010391, -924492, -1209033, -4548371, 1778117, -416612, -4530117, -1762547, -3871913, -1429150, -2183991, -10467372, -1886028, -1663226, -1334661, 764504, -2855617, -3316252, -7241852, -1593433, -4174708, -4918275, --904628, -6222871, -2913062, 1160178, -3937948, -4505421, 611496, -3748433, 1324997, 1618129, -4592931, -2640868, 3221762, 1627793, -4120484, -1452236, -963146, -1808181, 868657, -801548, --1170916, 26387742, 520228, -19105626, -16199543, 16553878, 12982612, -12230993, -11812234, 22193706, -14108431, 813896, -13166759, 1589675, -5532992, 10523207, -8167417, 1248225, -3455301, -2427194, -22956600, -3250217, -6238977, 4250407, 3916473, 6854231, 7101729, 771484, -9043054, 6846715, -3484292, 7845832, 17766132, 8114267, -25538412, -7329362, -4147865, -19580220, 7595113, -3415573, -421444, -10925323, 9239548, -4260608, 1786706, -14205067, 9643275, -11578158, 976031, 11355357, --1799591, 11978664, -9347996, 14945412, -19171660, 9556839, 249108, -6956237, 25153476, 6659884, --5189394, -15022722, 6554120, -3124052, 2105071, -2324651, 9230422, 13655849, 18509698, -11740830, -8345659, -4689568, 16564078, 5996311, 2409477, -1583232, 9953587, 1701881, -6510634, 7976291, --5662915, -9739375, -4133906, -13222594, 228707, -14807437, -1191853, -10007811, 11416023, -3685082, -7363185, -8035347, 364535, -4540854, 6956774, -2281165, -591095, -4504884, 2398202, -3406983, --5254893, -3172370, 2378875, -5246840, 3197603, -4183298, 1993402, -2752000, -2479270, -2753611, --5591511, -3426310, 224412, -4265440, -3676492, 5107790, 4631586, 2335389, -2543695, -6802692, --617402, 2756832, -147640, -5317170, -2988224, -521302, -38352984, -24823838, 20703890, -15126338, --14192183, 7992934, 18130668, -29774860, -4910758, 7146289, 1964948, -15524159, -23287312, 43855376, --18845242, 5995775, -21432424, 11883101, -7436736, 20531018, 18247168, 1886028, 3272228, -24286966, -13959, 11554536, -9814537, -14460618, 11580842, 3315178, 12483322, 9935333, -2017561, 4201552, --2689723, -1497333, 18387828, -15537581, -9113921, 14765024, -550293, -11715060, 15624017, -415001, --3369402, -10464151, -4591320, 5806259, -8164196, -877784, 5537824, -10380399, -10642929, -6899865, -7953206, -22601192, 10887205, -973347, 21619254, -20191716, 6803765, -15340013, 5755256, -9182640, --11729556, 19508278, -10674604, -4664872, -10389526, 8473434, -11893838, 7145752, -3999688, 14288282, -14649597, -1758252, -22660248, 9154723, 9527311, -1016297, -654446, -12902619, -8903467, -2079838, --11116449, -8917426, -3097745, -190589, -5498095, -7315940, 8526047, 2915209, -5210869, -4337380, --5326297, -5625871, 6219650, 2352568, 1551557, -8494908, -3207804, 7461432, -4221953, -5179731, -3528316, -3683471, 95563, 2775086, 4368519, -1668595, -7029788, 1509681, 4304094, -9390409, -288300, 2554432, 295279, -4902169, -2784750, 342524, -2185065, 19370840, 9450002, -21666500, -7482370, 23446226, -1988033, 115427, 10865730, -6933688, 16471736, 14894410, -19536732, -11973295, --3536369, 10413685, 18804978, 3376918, 10032507, 21181704, 15901580, -22180284, -2301029, 35364224, -8809515, -2308008, -4080756, -6602976, -10282689, 3156264, 8749385, 9685151, 9073118, -6277095, --14982993, 4093641, -7741142, 8320426, 24484534, -6445672, -24372866, 29336774, -8723615, -16109885, -23848880, -4248260, -6963753, -25378424, -4457639, 10534481, 5129265, -5492190, -10606422, 9844065, -1167157, -11746199, 10217727, -2336462, 23291608, -17024176, 2546916, -3307662, 26672284, 9065602, --37567544, 11841225, -15617575, -6595459, -13337484, 16328392, 54111756, 19732154, 3281892, 12503724, -15861314, -19887846, -8289287, -5586679, -11206107, -6861747, -12416214, 11890080, -27550604, -7335804, -2672007, 3325379, -8913668, 1736241, 5061082, -2702608, -3341485, 9439801, 1913945, 6305549, -5418101, -5674189, 1797981, 4671851, 1971927, 3908957, -2647847, 2403034, -5182415, 729608, --1424855, -5142150, -2506114, -1157494, 8665633, 480499, 2415382, 358093, -1528472, -1722819, -944356, -741956, -7591892, -934692, 1515587, -1847373, -5783711, -14068702, -4853850, -4255776, -8562017, -1425392, 1565516, -8256001, -28592134, -12182675, 1928977, -11627013, -35980552, 31149788, --6016176, 14023068, 2626909, -16516297, -28393492, -27364310, 30625264, 18635864, 7005629, -10842645, --20532628, -15395310, -24376624, -6292127, 9050570, -3824132, 1959579, 3848828, -4026532, -12651363, --12158516, -20736102, -7457674, -4015258, 10146860, 7064685, 11158325, -5589363, -9296994, -3922379, -14593762, 2041720, 12917114, -43314744, -10227928, -97711, 9463960, -13846975, -641024, -16021839, -12489228, 10984916, 2073396, 53414896, 811749, 16664473, 21959630, 913217, 7066832, 292595, --3886946, -6471442, 11046119, 16231218, 21242908, -520765, -4061429, 1418950, 13940927, 12663174, -409633, 10256919, 8853538, 6888054, -2893734, 20876226, -6083285, 26801670, -26589068, -13320841, --32692754, -10220412, 5787469, 731218, -8512088, 1688459, -166430, 14555644, -3020436, 17449378, --8072391, -6573448, -8864812, 4451734, 9784472, -1677185, -4842039, -5395016, 6017249, 2684, -20364050, -3328600, -1460826, 3568581, 5675263, 8319352, -7119445, -732829, 2680060, 4048544, --9805410, 3279208, 3661997, 12408161, -12449500, 6927246, 4670240, -5404143, 10574209, -6124087, --7337952, -88584, -2524367, 5310190, 2674691, -4513474, -183073, 4329864, 989453, 10760504, --561567, 6980396, 19997368, -4032974, 603443, 5050345, -28056336, 870805, 3695283, 17184164, -26374320, -22986128, 4738960, -14600741, 18718542, 16934520, 1896228, 32782948, 10034654, 12877386, --12340515, -2235531, -21395916, 32752346, -19487878, 4867272, 19942606, -5109938, -13283260, 9914932, --3250217, 4868346, 21434034, 264141, -7156490, -2298881, 3798899, -985158, -13150116, 9240085, --1500554, -3955128, 36795520, -28783260, 26548804, 17011292, 33198486, 13333189, -23921358, 18008798, -108985, 16712791, 43805984, -32087164, -13429289, -4392141, 598611, 29658896, -18030810, 1257352, --19342922, 1196685, 33527052, -4108136, 34803732, 9579388, 5744519, 15636365, -21664888, -3846143, -15165530, 21515102, -35694936, -1567663, -30617748, 13302587, -16038482, -827855, 6942815, 9588514, -511638, -11110544, -8847633, -33515778, -4016868, -23900420, 18897856, 1348620, -1729798, 14591615, -599685, -386010, 14078903, 10373957, 6964827, -135291, -5055714, 6439767, -11446625, -1151588, --7923141, 7379828, 7781944, -7094212, -1528472, -14727443, 6169184, -1212791, -234076, -712965, --14206678, -17181480, -5795522, 5132486, 12574054, 6179921, 5559299, -2362232, 10502806, 7124814, --678068, -5782100, 9116068, -13608604, -3933653, 2434173, 14827301, 12087112, 2495913, -5904507, --21328808, 6174553, -37430104, -32960652, 610959, 597000, -20898774, 17206712, 5057324, -5594732, --19390704, 26674968, -6074695, 39637180, -5663452, 8635032, 14355928, -19107772, -6323266, 6142877, --22828288, -12789876, -19956028, 17329656, -15973520, -4255239, -5193153, 15016816, -13460964, -22762252, --31823024, -837519, 26593364, 1678795, -14559402, -6141267, -18454400, -6120866, 213675, 11142219, --20798380, -2254858, -4494684, -14791330, -20446728, 1054415, 3468723, 13327820, 4583267, 22848690, -6353867, 28813862, -11955578, 23804320, -6019397, -18450106, -4806069, 38667592, -16641925, 17665200, --12195560, 28394028, -14957760, 9635222, 17984638, -990527, -7394860, 3511673, -10233296, 25833692, --23587424, -8808978, 25712896, -3078418, -21437256, 1101122, 19654308, 11011222, 19653234, -19747722, --16858820, -10620917, -2170569, 19468014, 23429046, -41373420, 2196339, 12103755, -22759032, 3857954, -14374182, 11293617, 10543608, 10404021, 6882148, -3066607, 754304, 8002598, 8821326, 7306813, -17709760, -5262946, 9305047, 4056597, 19167902, 11540040, -14821395, -18596134, 5944772, 20277614, --5755793, -5451387, -12858595, -21748104, 2498597, -18538152, -5891622, 4412005, -12456479, 11736535, -3292629, -3740917, -10295037, -1830193, -10672994, -719407, 5877126, 2945274, 1637993, -1705639, --2644089, -36128728, 38774964, -13493177, 32952600, -7407208, 26386132, 1818382, -8820252, -18771692, --13394929, -2856153, -23622, 19272592, -7927973, -1947231, 5230197, -18360986, 28537374, 10391673, -663036, -24259050, 15936476, 8186745, -19427748, 18182208, 1213865, -3336653, 4285841, -986232, -24036784, -6005438, -31130996, 32798518, -17526688, -3102577, 24282672, -11302743, -5799280, -15159624, -38562364, -17869212, -5218922, -24780350, -5138929, 2565706, 34430068, -16722992, 6152004, 10684268, -20308752, -5858873, -22499186, 23665270, 14207215, 19134080, -9942849, -5097053, 2066416, 21241834, --12410308, -25817586, -28747290, 14680735, -20252918, 4664872, 20788716, 19247360, -14246407, -5162014, -28120762, -45898168, -1476932, 5858336, 15331423, -2527588, -16998944, -3735548, 25613574, -5475547, -53013856, 20474646, -15672336, -2489471, 1181116, -6862821, -19733228, -24125906, -17739288, 14422500, --11622718, -5037460, -840740, 22858352, 9710384, -8509404, 9897752, 7079180, -701690, 2986613, -3944928, -726923, 2854006, 23409720, 19272592, 18539226, 12565464, 1374926, -12116640, 5885179, --9547175, 10983842, -14482630, 14886357, 22045530, 6994891, 28025198, 30152282, 12063489, -748398, -15714748, 5065377, -3282429, -10215043, 16356309, -4817880, -13706851, -649077, 7754564, -4294431, -6710350, 12661564, 4657892, -16997870, 13267154, -7965017, -9024800, -50678468, 16782584, 9417790, -44518948, 38933340, -6155225, -14898168, -46563888, 971200, 15152108, -20182588, 14797773, 26678726, -26025354, -12602508, 31398896, 27939836, 1066226, -17507360, -18607946, 28529320, 24475944, -35576824, --48210472, 63318556, 3061238, -4929549, 8132521, 4301947, 23420456, 23081692, -9667435, -8470749, -33001992, 15363098, -6138582, -22510998, 13205414, 2222646, 1617055, 11391864, 1496796, -1478543, --13407277, 6995965, -4111358, -16688095, 29690036, -47916264, 32982128, 27014270, -45065480, -3586298, -22814866, 5323612, 26052734, -6594386, 3588445, 23482196, -3237332, 11756936, -22239878, -35590784, -98782640, -40916544, -56910464, -12920872, 110034376, 47040092, -46969224, -11117523, 19403588, 12944495, --1034550, -28845538, 41366440, 22652194, 17346300, 3575024, -55889872, -9689983, 9090298, 16117939, --22948548, -38489348, 3359201, 11476689, 5264020, -18450642, -18947786, 8593156, 5132486, 13222594, --2516851, -5158256, -1339493, 14156212, 18734110, 12357695, -28078348, -11430519, 19913078, 14082124, --14105746, -497679, 16263431, 28195386, 11316702, -15729781, -20444044, -27409944, 12767864, -9162239, -11889543, -23266374, 12866648, 6029597, 14490683, -10974715, -5353140, -18803904, -7603166, 17390322, -3444027, -15527917, 8415452, 26571352, 1834488, -2347737, 8236674, -4297115, 7337415, -19539416, --12279311, 24871618, 43006580, 3105261, 71341016, -31465468, -11997454, 41420128, 2188823, -2230162, --21094732, -42324756, 35420596, -22000434, -23912230, 18416282, -26557394, 13378823, -25169046, -27953258, --4558571, 6265284, 4154307, -6493454, 33915748, 8573292, 20755966, 9996000, 764504, 640487, --15047418, -32280438, 10558103, 32415192, -26185878, 22668300, -26693222, -2697240, -1269700, -41507100, -29828010, -14325327, 11747809, 906775, -12027519, 797253, -29871498, 30993020, -21563420, 10408316, --34805340, -21215528, -45721536, 17432198, -21250424, -24095304, -19297288, -9982041, 261456, 48963700, -17731772, 24237038, -6453189, -22823994, -28701118, 7691213, 2015950, -49812492, -22962506, -87629144, --41020696, -33876016, -4846871, -40376452, -33024004, -7312182, 32327146, 36575940, -29508572, -37627672, --43013560, 21775484, 51991116, 2624762, 41865732, 1043677, 25389700, 10060424, 3303904, 12087112, -4727149, -1038308, -14748918, 21441014, 18029736, 9496710, -17667348, -7169911, -2120103, 9136469, -9953587, -3641596, 10783589, -4715874, -11775190, -21134998, 2903398, 29175712, 10832444, -3580392, -8545374, -9569724, 15982110, -5877126, 20804822, 19729470, 2640331, -21547850, 3849365, 4603131, -23554674, 5487358, 26734560, -17888002, -10583873, 24174224, 25593174, 6531572, -6282464, -4851166, --24688546, 17993228, -11470247, -49838800, 12098386, 18000208, -43118788, 24362666, 5085778, -12295418, -2886218, -11973832, -926639, 9646497, 12958990, 22520662, -25864294, 2851858, 30434138, -3043521, --14092861, 27425514, -11638288, 2209761, -15779710, -6205691, -31787052, 8671539, 1047972, 18429168, --12380243, 1659468, 22796076, -10344966, 631360, 23560044, -45356464, 3287798, -51962660, -16295643, --34726420, 28258200, 10141492, -1726040, 11981885, -9925133, 13046500, 35829692, 9808632, 55450176, --30459908, -34912716, 32728188, 9170292, -23577760, -22041236, -8883603, 20687246, -19315542, -421444, --16673600, -21514564, 13066901, 16378858, -32333588, -18604188, 28241020, -159451, 10121090, -5732171, -15579457, 7150584, 28499256, -16127602, -11993696, 7507603, 6742562, -7835631, -29323890, -21265994, --23156854, 31617402, -14322642, -23871966, 7233262, -5995775, -7767449, -15621333, 6227703, 7497403, --2451353, -4408784, -8482560, -14369350, -2376728, -2996814, -10532334, 732292, -5061619, -9753871, -6311992, -5617817, 5820755, -5538897, -4807142, 15108084, -5676336, 7318625, 5349382, -13732084, -6454799, 2198487, -5515275, -16726213, 23370528, 15579457, -6409702, 3930969, -11242614, -8344048, -7235410, 124554, -14492830, 5455146, -5711233, 13629542, -3408057, -2152852, 2713883, 6519761, -8381092, -33928096, -68576672, -34293168, -13076028, 29952566, 39062192, -74859672, 12891344, -29748554, --40581000, -8353175, 46842524, 29925722, 25537338, -16174310, -18064632, -21615496, 23625004, 16641388, -36460516, 4725538, -47383152, -18593988, 35606888, -5507759, 10442676, 31857384, -15253576, -22127672, --34655556, -34747360, 215822, 22571126, 48830020, 36111012, 23973970, 9766756, -49953156, -53273164, -18612778, -36773508, 8677981, 46838764, 18660022, 3122978, -23653996, -42508364, -7263864, -18355080, -14259828, 11025718, 7975218, 29329258, -4568772, -5757404, 7742216, 21263846, 34607772, 35764728, -12168179, 31839666, 10747619, 11387569, -7007776, -35820564, -14020384, -15582678, -29295436, 21986474, -20639466, 15253039, 15274514, -6892886, -35170952, 5742372, 10529112, -643171, 23439248, 14978162, -12297028, -2877628, 1631014, 3353833, 24140938, 24198920, 18474264, 5256503, -4424353, -17930952, --3274376, 10296110, 3058017, -5377836, -61740, -14273787, -6562173, -8306467, -9278740, 7235410, -26382374, 12830141, -4784057, -2774012, -19658602, -2153389, 6944425, 13178033, 14820322, -4787278, --6254546, -30813706, -17675938, -4577899, 272194, 12191265, 10321343, -6188511, -7329899, 4824322, -2022930, 3027415, 7627862, -8720931, -2981781, -1874753, 5102958, 8010114, 874026, -3031173, --2198487, -13007845, -5825587, 21246130, -60298656, -121356984, -62639952, 11775727, 47407848, 115528712, -113026360, 47100220, 48099876, 34542276, 1888175, -57513908, -97473744, -146879296, -43836048, -61434676, --10685342, 59969556, 106871136, 89865208, 79356504, 43751760, -963683, -27954332, -37512780, -8003135, --64978024, -51590072, -49019536, -32106492, -26359824, -12210055, -2287607, 22411676, 52709988, 54291072, -53351548, 39080444, 50827716, 26985280, 29081224, -9468255, -2100776, -23938538, -62933620, -91154776, --110159472, -53336516, -21460878, 17191680, -2813741, 11686606, 25649008, 33550138, 71507984, 82467128, -109258600, 69724496, 7063074, 31891742, -16476031, -60276108, -52747568, -104989936, -122523608, -91559040, --56610892, -24296630, -19173808, 44158168, 49837728, 138264128, 113198160, 82869248, 81096496, 38896836, --4933844, -54839216, -79366160, -57891328, -69492032, -95386928, -45322644, 2703145, -9317932, 2779918, -41749228, 58230628, 42998528, 22492744, 21738976, 37132676, 15833397, -2680597, -4431870, -18102214, --3052648, -16143171, -42760156, -22537840, -31886910, -51730196, -9114457, -8914741, 41417444, 37811280, -22722524, 40674952, 70277480, 50368156, -12336757, -8404714, -33891052, -30090004, -70749920, -73300600, --35496296, -14901926, 6094559, 24972550, 29474750, 44007844, 50051400, 48461728, 50813220, 13042205, --5191542, -26972394, -33055678, -43559020, -48322140, -48409652, -20918638, 10942503, 14495515, 21116744, -21966610, 15342697, 16250009, 17115982, 5413270, 4038880, -5794448, -6003291, 10212895, -6893960, --16899086, 960999, 3591667, -2177549, -5310190, -7254737, 11274, -2099702, -11901354, -5335423, -3399467, 752693, 692564, 6895033, 8669391, 6432788, 5888937, 5429376, 2017561, -860604, --650151, -1150514, -3672734, -3991635, -4283156, -3984656, -3019362, -1461363, -1915555, -720481, -561567, 1687922, 3562139, 2763275, 512175, 661425, 1385664, -231391, -2813204, -3082176, --1744294, 266288, 1528472, 2936147, 4476967, 4264366, 3550864, 2758443, 570694, -1788317, --3802120, -5407364, -6338298, -7009924, -6852084, -4414153, -1014686, 2203855, 5254893, 7446400, -8196945, 8385387, 6798397, 3476239, 151398, -3175055, -5397164, -6725382, -6990060, -5210869, --3149285, -1306744, 863825, 2181307, 2552284, 2306398, 1945620, 1531693, 1122060, 799938, -294205, 93416, 91805, 32212, -193810, -270046, -304406, -267362, -273267, -213675, --190589, -200253, -191663, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +4490389, -6781217, 3733400, -3810173, -7852811, -13598940, 2443837, 442919, 3472481, 3055869, +-909459, -964220, 1072131, 8282308, -5812165, -10409927, 3504693, -4285304, -6958384, 159988, +-1002875, 4361003, 1584306, 3120831, -3104188, -746251, -2021319, 7058242, -1874216, -2805688, +-2459943, -1205275, -1656247, -2787434, -2450816, -1696512, 1430761, 627065, 958851, 270583, +1868311, 3011846, 1553168, -2624762, -7891466, -49929, -5475547, 830002, -336081, -2484639, +3586835, 268435, 63351, -7875897, -3190087, 1083942, -581431, 2785823, 239981, 2480881, +-2255932, 1042603, -956704, 4898410, -1690070, 2589865, -4323959, -4321274, -5452998, 293668, +-1264868, -1581085, 74625, -1898912, 4295, -2218888, 513785, 117575, -904091, -3440806, +384400, 376347, 2028835, 1767916, 56371, 1881733, -157840, -1433445, -437550, -670552, +768262, -1611, 142808, 1064615, 805306, -122407, 1000191, -630823, 237834, -8562017, +-1758789, -1114007, -2418067, -1086090, -2916283, 2851858, -1145683, -987306, -230854, 73551, +-159451, -2054068, 7613367, 4900021, 7956964, -3707094, 7920457, -4671851, -3271691, 3085934, +8769786, -181999, -5294621, -7826504, -5616744, -1073742, 6256157, 2462090, 2126546, 2778844, +-2729989, 4256850, 554588, 3182571, -1535988, -7133941, 1956895, -4934381, -3371549, -3460670, +-811749, -9060770, -406948, 433255, -3775813, 8475044, -1593970, -2733747, -3391951, -81068, +946503, -3626026, 136902, -4448513, -1662152, 125091, -1822140, 6091874, 201863, -1639067, +3425773, 2189360, 5655398, 2268280, 6796249, 1671279, 5559835, -6324876, 1657321, 5056250, +-1714766, -4518843, -6205691, -122407, -471910, -1244467, 1546188, 1829119, -1304596, 4846334, +-4154307, 1608465, 1709397, -3108483, 2285460, 508417, -2255395, 1215476, -555661, 477815, +-2112050, 659814, 285078, 394063, -219580, -151934, 1073742, 271120, 1970316, -398358, +193274, 9673877, -4444218, -3427921, 937377, -2198487, -1644973, 4835597, -3824132, 4655208, +2116345, 70330, 2359011, -3174518, -3027952, -5543192, -5972152, 7789997, 3663607, 2720325, +4148939, -2767570, -1860795, -2043868, 9844602, -3852049, 10778757, -392990, -2786897, -2631741, +-5761162, -6186364, -7507603, -488016, -1917166, 1326608, 7186554, -640487, -3419331, -10094784, +316217, 7976828, 11709155, -5534602, 2996814, 2141041, -3023657, -2679523, 3027952, 11106249, +-2691334, 1731409, -991064, -1643899, -1079647, 5318780, 7666517, -5851893, -3202972, 2371896, +10063108, 1669132, 7116761, -5861557, -5458367, -312996, -934155, 2032056, 1496259, -145492, +595927, 1033477, -2669322, 1213328, 3231426, 2496987, -2015950, 6442988, -1684164, 4044786, +-2158221, -2238752, 2387465, 2027761, 2154463, 480499, 2248416, 425739, -3394098, -2291902, +615791, -173946, 1199907, -643171, 1811403, -93952, 994822, -1013075, -223338, -100932, +-529892, -1176821, -143345, -722091, -215822, -865973, -768262, 1813550, -63351, -889058, +1944010, 27380, -1050120, 15985331, -10943040, -2396055, -4531728, 1276142, 4276177, 7693360, +-7635378, 5282810, -1975685, -8078297, -13088376, -2658048, -5545340, 960999, -1225676, -5515812, +-2806224, 3088618, 3265249, 10283762, 5717675, 5248450, 566936, 1656784, -5283884, -3563212, +8269423, 6343130, 4313758, 2020782, 3984119, 882616, 67646, -6842957, -9700721, 6551973, +-2562485, -6512244, -3090229, -4078072, 3517041, -3585761, 8308078, 1952600, -4732517, -2280091, +-3616363, -3120831, 4076998, 6123013, -485868, 4143033, -2968359, -3303904, 59593, 870268, +-3166465, -1195612, 4813048, 108448, -1935957, -2297271, 2638721, 2954938, -332323, 3561065, +523449, -2426657, 8289287, -1118302, 945430, 456340, -9905805, 3940096, 3154654, 5221607, +3398393, -3577708, -796716, -8905078, -4088272, -8165807, -2986076, -3624416, 66035, 850940, +-5392332, 304406, -1278290, 84289, 2344515, -752693, -969589, -110595, -1471026, 339302, +-735513, 693100, -893890, -1949915, -991064, -438624, -3365107, -233539, -129386, 779537, +-184147, 494995, -159451, 161061, -1788854, -2267743, 260382, -260382, -1024350, 523449, +-2614025, -10934987, 2757369, 63351, -3273839, -6012954, 2443837, -5749351, -1093606, 9795747, +14874009, 7293392, 8155069, -668404, -4189741, 6111202, 5473399, 2274185, 2901251, 7296613, +-1131187, 5289789, 5141613, 7571491, 7268696, -6051072, 4857071, -447750, 1673964, -5643587, +1653562, -811212, 4952634, -2001455, -1463510, -4007205, 3590593, -6177237, -5013838, 425202, +5204427, 2799782, -3215320, -1713155, -1024887, -2166811, 3124589, -7424388, 6714108, -107374, +8364449, -12020540, 793495, -10835129, -3445638, -3507378, 2885144, -1205275, -2500745, 2280628, +840203, 2817499, 4597763, 7544110, -995359, -6212670, 1268626, 10192494, 2049773, -3063386, +-801011, 6249715, -3391414, 3767760, -3277597, -11073499, 6301791, 6640020, 6197638, -5520644, +-8191577, -5968394, 6860674, -835371, -1099512, 4791573, 1764158, 1109712, 799401, -442382, +1860258, 2448668, -889595, -1490891, 1396938, 50466, -520228, 762357, -1415192, 295279, +2181844, -1024350, 2294586, -1085553, -1764158, 712965, -85899, -98247, 1146219, 792421, +1165010, 826781, 828392, -180389, 1124745, -838056, -16366510, 290447, -3617973, 1519345, +-9159555, 1131187, 1529545, 12173011, -9716290, 133681, -13038984, 2985002, -7872675, -1912871, +496069, -4265440, 3790846, 1680406, -6818261, 135828, -86973, 6329171, -4114042, 10189810, +-106300, -8816494, -4486630, 10842645, -1024350, 4345433, 2902324, -1781338, 6497749, -7163469, +-6766184, -5272609, 761283, -6861211, 7320235, -4015795, 4704063, -6644315, -55835, -8074539, +5330592, 715112, 6381248, 5684926, -5358509, 10685342, 9134322, 8603893, 1727114, 9033390, +7448010, -7661148, 6605660, 3143916, 634581, -7113003, 3308199, -6053757, 6033356, -2602750, +-4745939, -581431, 8988293, 3187403, -10280541, 9830643, -779000, -3479461, -5860483, 10012106, +8696772, -7468412, 7422777, -538482, -8864812, 105764, -5022965, -2780455, 4929549, -4293894, +3530463, -363998, 1583769, -2060511, 2698850, -373662, -237297, -600759, -948651, 937914, +554588, -2497524, 926639, 1233729, 35970, 917512, 1126355, -2346126, 543850, -288837, +88584, -1980517, 740882, -817118, -1152125, -2633352, 3061775, 621160, -1387811, -416075, +846109, -320512, 23376434, 3971234, -935229, -8063264, -15147276, 3864934, -2233383, -22231824, +19500226, -9450539, -14110041, 2979634, -903017, 2626373, -913217, 3779034, 5622112, 73551, +-360777, -11361799, -945967, -1079111, 13393856, -2448131, 346282, 4929549, -2352568, -1650341, +-5452998, 11438035, -8584566, 8264591, -2041720, -6854768, 1280974, -7663296, -3897683, -12445741, +2189897, 5712844, -3367254, -6209986, -4916664, 7521562, -11667816, -2759517, -5755256, -163746, +-1675037, 1517734, -10123238, 9858024, -13820131, -9449465, 3744675, 1667521, -527744, 3689377, +-7170448, -10313290, 1274532, -2805688, -476741, 5061082, -6169184, 4588099, 3190087, 11374147, +-3156801, 1630477, -882079, 162672, 15767362, 1320166, 15611132, -3772592, -5871221, 1778117, +-8039105, -718333, 7974681, 639950, -9352828, -8182987, 2287070, -871878, 28454, 8013872, +616328, -1510755, 3322157, -460635, -331786, -3748970, 1378685, 1749662, -1891396, -55835, +-934692, 3091303, -1409823, -631360, 1580011, 406948, 955630, -299037, 1762547, -588411, +-1611, 940061, -1973001, 2431488, -1556926, 896574, 2036888, 1109175, 1923072, 525060, +-17115982, -2209761, -3451543, -13877039, -23921894, 7427072, 12480638, -8741869, -4184372, 7077569, +-2545305, 14967424, -1622961, -7934415, -4712116, -22289270, 7590818, 2563559, -1992865, -15643345, +3751654, -8680666, -2255395, -7614440, -3876208, 11193759, -10653666, 4659503, -15796353, 10190347, +2066953, 249108, -4524211, 1245541, -2022930, -8807367, -16633871, 3287261, 76236, 3622268, +7041599, -4002373, -1288490, -10678899, -5470178, -2822331, 4593468, 3125126, 7959648, 12683575, +9927280, 5134097, 7586523, 2343979, 7905424, 7121056, -6836514, 8149701, 9197672, -1826435, +12301323, -1222992, 14424111, -6305012, -15391015, -2469069, 9903658, 10896869, 12511777, -2349884, +-21494700, -2109366, -1091459, 872952, -673773, -5242545, 3146601, -15665893, 12297028, 7778186, +7479149, -8174934, -7720741, -1657857, 4609574, -498216, -8643085, 135828, -4192962, -7014756, +-2784750, -1111323, -3329137, 377420, -2805151, 1493038, -1728724, -917512, 2327872, 488553, +1092532, -1066763, -3052111, -3386582, 2466922, -2688113, -40265, -942208, 1539209, -1059246, +-647466, -1047435, 3673808, 1979980, 1162862, -1060857, 22939958, -5050345, -5513665, 7649337, +12348031, -888521, 5743445, 14304389, 10328323, -23488640, -21589190, 176094, -2083059, 3165928, +-9655623, -17134236, 4058744, 13738527, 9064528, -9944997, 16148540, 13059922, 12244415, -20583094, +5816997, 10800769, 541166, 1647657, 9177271, 21214990, -4114042, -9688372, 6418829, 4815195, +-2905009, 11472395, 17098802, 3205656, 17714056, 7761006, -13326747, 1511292, 14685567, -1575716, +-6056978, 7629473, 1210107, 2910914, 15412490, 9924596, 5229660, 1846836, -17939542, -18236432, +-1548336, 2910914, 4745402, -5613523, -817654, -4698694, 1578937, 2298881, -6861211, 2612414, +-4221953, -1040993, -5834713, 680752, 11378979, -6718403, -16501801, -2546379, -14039711, 3115462, +-5027259, -335544, -1906429, 6647536, -2501282, 4822712, -86973, 4141959, 1917166, -1874216, +-2259690, -2822867, -8153459, 2993592, 1035624, 2071785, 248571, -6251325, 3137474, -4881767, +-4158602, -1396401, -5333276, -1082332, -1757715, -1944547, -1691143, 3491272, -1545115, 2341831, +-233002, 1893007, 311385, 4500589, -1939715, 1249836, -3610994, -869194, -3098282, -2774012, +-598611, -2032593, 6841883, 2936684, 249645, -907312, -972273, -38156488, -23741506, -7078106, +7122130, -2193118, -9407589, 1868311, -9165997, 26980448, -10713259, 17362942, 26623966, 14504641, +13189308, -10210211, 9522479, -4994510, -12141873, 10835666, 12620761, 8415988, 17969070, 244813, +-801548, -7747584, -7948374, -6769406, -10993506, -10700374, -7311645, 4282083, 1610613, 27917, +-6878927, -3686156, -10669236, 4617090, -9204115, -8337069, -3683471, 4638565, 39728, -5585605, +-15585899, 2004676, -4552666, 5806259, -18402862, -14191109, 16295643, -2353105, -3058017, -7379291, +-4525822, 12277164, 4011500, -2395518, 6732898, -1698123, 7001871, 5625871, 7978976, -5553393, +-9266392, -23389318, 1697049, -22680648, -1488206, -19180788, -2726767, 18372796, -2247879, 3353296, +-12965969, -5520644, -6665789, 1577327, -8310225, -4747013, 8273181, 10327786, -1010391, -924492, +1209033, -4548371, 1778117, -416612, -4530117, -1762547, -3871913, -1429150, -2183991, -10467372, +1886028, -1663226, -1334661, 764504, -2855617, -3316252, -7241852, -1593433, -4174708, -4918275, +-904628, -6222871, -2913062, 1160178, -3937948, -4505421, 611496, -3748433, 1324997, 1618129, +4592931, -2640868, 3221762, 1627793, -4120484, -1452236, -963146, -1808181, 868657, -801548, +-1170916, 26387742, 520228, -19105626, -16199543, 16553878, 12982612, -12230993, -11812234, 22193706, +14108431, 813896, -13166759, 1589675, -5532992, 10523207, -8167417, 1248225, -3455301, -2427194, +22956600, -3250217, -6238977, 4250407, 3916473, 6854231, 7101729, 771484, -9043054, 6846715, +3484292, 7845832, 17766132, 8114267, -25538412, -7329362, -4147865, -19580220, 7595113, -3415573, +421444, -10925323, 9239548, -4260608, 1786706, -14205067, 9643275, -11578158, 976031, 11355357, +-1799591, 11978664, -9347996, 14945412, -19171660, 9556839, 249108, -6956237, 25153476, 6659884, +-5189394, -15022722, 6554120, -3124052, 2105071, -2324651, 9230422, 13655849, 18509698, -11740830, +8345659, -4689568, 16564078, 5996311, 2409477, -1583232, 9953587, 1701881, -6510634, 7976291, +-5662915, -9739375, -4133906, -13222594, 228707, -14807437, -1191853, -10007811, 11416023, -3685082, +7363185, -8035347, 364535, -4540854, 6956774, -2281165, -591095, -4504884, 2398202, -3406983, +-5254893, -3172370, 2378875, -5246840, 3197603, -4183298, 1993402, -2752000, -2479270, -2753611, +-5591511, -3426310, 224412, -4265440, -3676492, 5107790, 4631586, 2335389, -2543695, -6802692, +-617402, 2756832, -147640, -5317170, -2988224, -521302, -38352984, -24823838, 20703890, -15126338, +-14192183, 7992934, 18130668, -29774860, -4910758, 7146289, 1964948, -15524159, -23287312, 43855376, +-18845242, 5995775, -21432424, 11883101, -7436736, 20531018, 18247168, 1886028, 3272228, -24286966, +13959, 11554536, -9814537, -14460618, 11580842, 3315178, 12483322, 9935333, -2017561, 4201552, +-2689723, -1497333, 18387828, -15537581, -9113921, 14765024, -550293, -11715060, 15624017, -415001, +-3369402, -10464151, -4591320, 5806259, -8164196, -877784, 5537824, -10380399, -10642929, -6899865, +7953206, -22601192, 10887205, -973347, 21619254, -20191716, 6803765, -15340013, 5755256, -9182640, +-11729556, 19508278, -10674604, -4664872, -10389526, 8473434, -11893838, 7145752, -3999688, 14288282, +14649597, -1758252, -22660248, 9154723, 9527311, -1016297, -654446, -12902619, -8903467, -2079838, +-11116449, -8917426, -3097745, -190589, -5498095, -7315940, 8526047, 2915209, -5210869, -4337380, +-5326297, -5625871, 6219650, 2352568, 1551557, -8494908, -3207804, 7461432, -4221953, -5179731, +3528316, -3683471, 95563, 2775086, 4368519, -1668595, -7029788, 1509681, 4304094, -9390409, +288300, 2554432, 295279, -4902169, -2784750, 342524, -2185065, 19370840, 9450002, -21666500, +7482370, 23446226, -1988033, 115427, 10865730, -6933688, 16471736, 14894410, -19536732, -11973295, +-3536369, 10413685, 18804978, 3376918, 10032507, 21181704, 15901580, -22180284, -2301029, 35364224, +8809515, -2308008, -4080756, -6602976, -10282689, 3156264, 8749385, 9685151, 9073118, -6277095, +-14982993, 4093641, -7741142, 8320426, 24484534, -6445672, -24372866, 29336774, -8723615, -16109885, +23848880, -4248260, -6963753, -25378424, -4457639, 10534481, 5129265, -5492190, -10606422, 9844065, +1167157, -11746199, 10217727, -2336462, 23291608, -17024176, 2546916, -3307662, 26672284, 9065602, +-37567544, 11841225, -15617575, -6595459, -13337484, 16328392, 54111756, 19732154, 3281892, 12503724, +15861314, -19887846, -8289287, -5586679, -11206107, -6861747, -12416214, 11890080, -27550604, -7335804, +2672007, 3325379, -8913668, 1736241, 5061082, -2702608, -3341485, 9439801, 1913945, 6305549, +5418101, -5674189, 1797981, 4671851, 1971927, 3908957, -2647847, 2403034, -5182415, 729608, +-1424855, -5142150, -2506114, -1157494, 8665633, 480499, 2415382, 358093, -1528472, -1722819, +944356, -741956, -7591892, -934692, 1515587, -1847373, -5783711, -14068702, -4853850, -4255776, +8562017, -1425392, 1565516, -8256001, -28592134, -12182675, 1928977, -11627013, -35980552, 31149788, +-6016176, 14023068, 2626909, -16516297, -28393492, -27364310, 30625264, 18635864, 7005629, -10842645, +-20532628, -15395310, -24376624, -6292127, 9050570, -3824132, 1959579, 3848828, -4026532, -12651363, +-12158516, -20736102, -7457674, -4015258, 10146860, 7064685, 11158325, -5589363, -9296994, -3922379, +14593762, 2041720, 12917114, -43314744, -10227928, -97711, 9463960, -13846975, -641024, -16021839, +12489228, 10984916, 2073396, 53414896, 811749, 16664473, 21959630, 913217, 7066832, 292595, +-3886946, -6471442, 11046119, 16231218, 21242908, -520765, -4061429, 1418950, 13940927, 12663174, +409633, 10256919, 8853538, 6888054, -2893734, 20876226, -6083285, 26801670, -26589068, -13320841, +-32692754, -10220412, 5787469, 731218, -8512088, 1688459, -166430, 14555644, -3020436, 17449378, +-8072391, -6573448, -8864812, 4451734, 9784472, -1677185, -4842039, -5395016, 6017249, 2684, +20364050, -3328600, -1460826, 3568581, 5675263, 8319352, -7119445, -732829, 2680060, 4048544, +-9805410, 3279208, 3661997, 12408161, -12449500, 6927246, 4670240, -5404143, 10574209, -6124087, +-7337952, -88584, -2524367, 5310190, 2674691, -4513474, -183073, 4329864, 989453, 10760504, +-561567, 6980396, 19997368, -4032974, 603443, 5050345, -28056336, 870805, 3695283, 17184164, +26374320, -22986128, 4738960, -14600741, 18718542, 16934520, 1896228, 32782948, 10034654, 12877386, +-12340515, -2235531, -21395916, 32752346, -19487878, 4867272, 19942606, -5109938, -13283260, 9914932, +-3250217, 4868346, 21434034, 264141, -7156490, -2298881, 3798899, -985158, -13150116, 9240085, +-1500554, -3955128, 36795520, -28783260, 26548804, 17011292, 33198486, 13333189, -23921358, 18008798, +108985, 16712791, 43805984, -32087164, -13429289, -4392141, 598611, 29658896, -18030810, 1257352, +-19342922, 1196685, 33527052, -4108136, 34803732, 9579388, 5744519, 15636365, -21664888, -3846143, +15165530, 21515102, -35694936, -1567663, -30617748, 13302587, -16038482, -827855, 6942815, 9588514, +511638, -11110544, -8847633, -33515778, -4016868, -23900420, 18897856, 1348620, -1729798, 14591615, +599685, -386010, 14078903, 10373957, 6964827, -135291, -5055714, 6439767, -11446625, -1151588, +-7923141, 7379828, 7781944, -7094212, -1528472, -14727443, 6169184, -1212791, -234076, -712965, +-14206678, -17181480, -5795522, 5132486, 12574054, 6179921, 5559299, -2362232, 10502806, 7124814, +-678068, -5782100, 9116068, -13608604, -3933653, 2434173, 14827301, 12087112, 2495913, -5904507, +-21328808, 6174553, -37430104, -32960652, 610959, 597000, -20898774, 17206712, 5057324, -5594732, +-19390704, 26674968, -6074695, 39637180, -5663452, 8635032, 14355928, -19107772, -6323266, 6142877, +-22828288, -12789876, -19956028, 17329656, -15973520, -4255239, -5193153, 15016816, -13460964, -22762252, +-31823024, -837519, 26593364, 1678795, -14559402, -6141267, -18454400, -6120866, 213675, 11142219, +-20798380, -2254858, -4494684, -14791330, -20446728, 1054415, 3468723, 13327820, 4583267, 22848690, +6353867, 28813862, -11955578, 23804320, -6019397, -18450106, -4806069, 38667592, -16641925, 17665200, +-12195560, 28394028, -14957760, 9635222, 17984638, -990527, -7394860, 3511673, -10233296, 25833692, +-23587424, -8808978, 25712896, -3078418, -21437256, 1101122, 19654308, 11011222, 19653234, -19747722, +-16858820, -10620917, -2170569, 19468014, 23429046, -41373420, 2196339, 12103755, -22759032, 3857954, +14374182, 11293617, 10543608, 10404021, 6882148, -3066607, 754304, 8002598, 8821326, 7306813, +17709760, -5262946, 9305047, 4056597, 19167902, 11540040, -14821395, -18596134, 5944772, 20277614, +-5755793, -5451387, -12858595, -21748104, 2498597, -18538152, -5891622, 4412005, -12456479, 11736535, +3292629, -3740917, -10295037, -1830193, -10672994, -719407, 5877126, 2945274, 1637993, -1705639, +-2644089, -36128728, 38774964, -13493177, 32952600, -7407208, 26386132, 1818382, -8820252, -18771692, +-13394929, -2856153, -23622, 19272592, -7927973, -1947231, 5230197, -18360986, 28537374, 10391673, +663036, -24259050, 15936476, 8186745, -19427748, 18182208, 1213865, -3336653, 4285841, -986232, +24036784, -6005438, -31130996, 32798518, -17526688, -3102577, 24282672, -11302743, -5799280, -15159624, +38562364, -17869212, -5218922, -24780350, -5138929, 2565706, 34430068, -16722992, 6152004, 10684268, +20308752, -5858873, -22499186, 23665270, 14207215, 19134080, -9942849, -5097053, 2066416, 21241834, +-12410308, -25817586, -28747290, 14680735, -20252918, 4664872, 20788716, 19247360, -14246407, -5162014, +28120762, -45898168, -1476932, 5858336, 15331423, -2527588, -16998944, -3735548, 25613574, -5475547, +53013856, 20474646, -15672336, -2489471, 1181116, -6862821, -19733228, -24125906, -17739288, 14422500, +-11622718, -5037460, -840740, 22858352, 9710384, -8509404, 9897752, 7079180, -701690, 2986613, +3944928, -726923, 2854006, 23409720, 19272592, 18539226, 12565464, 1374926, -12116640, 5885179, +-9547175, 10983842, -14482630, 14886357, 22045530, 6994891, 28025198, 30152282, 12063489, -748398, +15714748, 5065377, -3282429, -10215043, 16356309, -4817880, -13706851, -649077, 7754564, -4294431, +6710350, 12661564, 4657892, -16997870, 13267154, -7965017, -9024800, -50678468, 16782584, 9417790, +44518948, 38933340, -6155225, -14898168, -46563888, 971200, 15152108, -20182588, 14797773, 26678726, +26025354, -12602508, 31398896, 27939836, 1066226, -17507360, -18607946, 28529320, 24475944, -35576824, +-48210472, 63318556, 3061238, -4929549, 8132521, 4301947, 23420456, 23081692, -9667435, -8470749, +33001992, 15363098, -6138582, -22510998, 13205414, 2222646, 1617055, 11391864, 1496796, -1478543, +-13407277, 6995965, -4111358, -16688095, 29690036, -47916264, 32982128, 27014270, -45065480, -3586298, +22814866, 5323612, 26052734, -6594386, 3588445, 23482196, -3237332, 11756936, -22239878, -35590784, +98782640, -40916544, -56910464, -12920872, 110034376, 47040092, -46969224, -11117523, 19403588, 12944495, +-1034550, -28845538, 41366440, 22652194, 17346300, 3575024, -55889872, -9689983, 9090298, 16117939, +-22948548, -38489348, 3359201, 11476689, 5264020, -18450642, -18947786, 8593156, 5132486, 13222594, +-2516851, -5158256, -1339493, 14156212, 18734110, 12357695, -28078348, -11430519, 19913078, 14082124, +-14105746, -497679, 16263431, 28195386, 11316702, -15729781, -20444044, -27409944, 12767864, -9162239, +11889543, -23266374, 12866648, 6029597, 14490683, -10974715, -5353140, -18803904, -7603166, 17390322, +3444027, -15527917, 8415452, 26571352, 1834488, -2347737, 8236674, -4297115, 7337415, -19539416, +-12279311, 24871618, 43006580, 3105261, 71341016, -31465468, -11997454, 41420128, 2188823, -2230162, +-21094732, -42324756, 35420596, -22000434, -23912230, 18416282, -26557394, 13378823, -25169046, -27953258, +-4558571, 6265284, 4154307, -6493454, 33915748, 8573292, 20755966, 9996000, 764504, 640487, +-15047418, -32280438, 10558103, 32415192, -26185878, 22668300, -26693222, -2697240, -1269700, -41507100, +29828010, -14325327, 11747809, 906775, -12027519, 797253, -29871498, 30993020, -21563420, 10408316, +-34805340, -21215528, -45721536, 17432198, -21250424, -24095304, -19297288, -9982041, 261456, 48963700, +17731772, 24237038, -6453189, -22823994, -28701118, 7691213, 2015950, -49812492, -22962506, -87629144, +-41020696, -33876016, -4846871, -40376452, -33024004, -7312182, 32327146, 36575940, -29508572, -37627672, +-43013560, 21775484, 51991116, 2624762, 41865732, 1043677, 25389700, 10060424, 3303904, 12087112, +4727149, -1038308, -14748918, 21441014, 18029736, 9496710, -17667348, -7169911, -2120103, 9136469, +9953587, -3641596, 10783589, -4715874, -11775190, -21134998, 2903398, 29175712, 10832444, -3580392, +8545374, -9569724, 15982110, -5877126, 20804822, 19729470, 2640331, -21547850, 3849365, 4603131, +23554674, 5487358, 26734560, -17888002, -10583873, 24174224, 25593174, 6531572, -6282464, -4851166, +-24688546, 17993228, -11470247, -49838800, 12098386, 18000208, -43118788, 24362666, 5085778, -12295418, +2886218, -11973832, -926639, 9646497, 12958990, 22520662, -25864294, 2851858, 30434138, -3043521, +-14092861, 27425514, -11638288, 2209761, -15779710, -6205691, -31787052, 8671539, 1047972, 18429168, +-12380243, 1659468, 22796076, -10344966, 631360, 23560044, -45356464, 3287798, -51962660, -16295643, +-34726420, 28258200, 10141492, -1726040, 11981885, -9925133, 13046500, 35829692, 9808632, 55450176, +-30459908, -34912716, 32728188, 9170292, -23577760, -22041236, -8883603, 20687246, -19315542, -421444, +-16673600, -21514564, 13066901, 16378858, -32333588, -18604188, 28241020, -159451, 10121090, -5732171, +15579457, 7150584, 28499256, -16127602, -11993696, 7507603, 6742562, -7835631, -29323890, -21265994, +-23156854, 31617402, -14322642, -23871966, 7233262, -5995775, -7767449, -15621333, 6227703, 7497403, +-2451353, -4408784, -8482560, -14369350, -2376728, -2996814, -10532334, 732292, -5061619, -9753871, +6311992, -5617817, 5820755, -5538897, -4807142, 15108084, -5676336, 7318625, 5349382, -13732084, +6454799, 2198487, -5515275, -16726213, 23370528, 15579457, -6409702, 3930969, -11242614, -8344048, +7235410, 124554, -14492830, 5455146, -5711233, 13629542, -3408057, -2152852, 2713883, 6519761, +8381092, -33928096, -68576672, -34293168, -13076028, 29952566, 39062192, -74859672, 12891344, -29748554, +-40581000, -8353175, 46842524, 29925722, 25537338, -16174310, -18064632, -21615496, 23625004, 16641388, +36460516, 4725538, -47383152, -18593988, 35606888, -5507759, 10442676, 31857384, -15253576, -22127672, +-34655556, -34747360, 215822, 22571126, 48830020, 36111012, 23973970, 9766756, -49953156, -53273164, +18612778, -36773508, 8677981, 46838764, 18660022, 3122978, -23653996, -42508364, -7263864, -18355080, +14259828, 11025718, 7975218, 29329258, -4568772, -5757404, 7742216, 21263846, 34607772, 35764728, +12168179, 31839666, 10747619, 11387569, -7007776, -35820564, -14020384, -15582678, -29295436, 21986474, +20639466, 15253039, 15274514, -6892886, -35170952, 5742372, 10529112, -643171, 23439248, 14978162, +12297028, -2877628, 1631014, 3353833, 24140938, 24198920, 18474264, 5256503, -4424353, -17930952, +-3274376, 10296110, 3058017, -5377836, -61740, -14273787, -6562173, -8306467, -9278740, 7235410, +26382374, 12830141, -4784057, -2774012, -19658602, -2153389, 6944425, 13178033, 14820322, -4787278, +-6254546, -30813706, -17675938, -4577899, 272194, 12191265, 10321343, -6188511, -7329899, 4824322, +2022930, 3027415, 7627862, -8720931, -2981781, -1874753, 5102958, 8010114, 874026, -3031173, +-2198487, -13007845, -5825587, 21246130, -60298656, -121356984, -62639952, 11775727, 47407848, 115528712, +113026360, 47100220, 48099876, 34542276, 1888175, -57513908, -97473744, -146879296, -43836048, -61434676, +-10685342, 59969556, 106871136, 89865208, 79356504, 43751760, -963683, -27954332, -37512780, -8003135, +-64978024, -51590072, -49019536, -32106492, -26359824, -12210055, -2287607, 22411676, 52709988, 54291072, +53351548, 39080444, 50827716, 26985280, 29081224, -9468255, -2100776, -23938538, -62933620, -91154776, +-110159472, -53336516, -21460878, 17191680, -2813741, 11686606, 25649008, 33550138, 71507984, 82467128, +109258600, 69724496, 7063074, 31891742, -16476031, -60276108, -52747568, -104989936, -122523608, -91559040, +-56610892, -24296630, -19173808, 44158168, 49837728, 138264128, 113198160, 82869248, 81096496, 38896836, +-4933844, -54839216, -79366160, -57891328, -69492032, -95386928, -45322644, 2703145, -9317932, 2779918, +41749228, 58230628, 42998528, 22492744, 21738976, 37132676, 15833397, -2680597, -4431870, -18102214, +-3052648, -16143171, -42760156, -22537840, -31886910, -51730196, -9114457, -8914741, 41417444, 37811280, +22722524, 40674952, 70277480, 50368156, -12336757, -8404714, -33891052, -30090004, -70749920, -73300600, +-35496296, -14901926, 6094559, 24972550, 29474750, 44007844, 50051400, 48461728, 50813220, 13042205, +-5191542, -26972394, -33055678, -43559020, -48322140, -48409652, -20918638, 10942503, 14495515, 21116744, +21966610, 15342697, 16250009, 17115982, 5413270, 4038880, -5794448, -6003291, 10212895, -6893960, +-16899086, 960999, 3591667, -2177549, -5310190, -7254737, 11274, -2099702, -11901354, -5335423, +3399467, 752693, 692564, 6895033, 8669391, 6432788, 5888937, 5429376, 2017561, -860604, +-650151, -1150514, -3672734, -3991635, -4283156, -3984656, -3019362, -1461363, -1915555, -720481, +561567, 1687922, 3562139, 2763275, 512175, 661425, 1385664, -231391, -2813204, -3082176, +-1744294, 266288, 1528472, 2936147, 4476967, 4264366, 3550864, 2758443, 570694, -1788317, +-3802120, -5407364, -6338298, -7009924, -6852084, -4414153, -1014686, 2203855, 5254893, 7446400, +8196945, 8385387, 6798397, 3476239, 151398, -3175055, -5397164, -6725382, -6990060, -5210869, +-3149285, -1306744, 863825, 2181307, 2552284, 2306398, 1945620, 1531693, 1122060, 799938, +294205, 93416, 91805, 32212, -193810, -270046, -304406, -267362, -273267, -213675, +-190589, -200253, -191663, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -4538707, --7080791, -5145908, 2013266, -771484, -12128451, -6881612, -520765, 1748589, -3726958, 1291711, --4499515, 894427, -3251290, 8531416, -6935299, -3031710, -3047816, 5442798, 3751654, 8687645, -2291365, 1818919, -3963718, 4108673, 522912, 1126355, -483184, 3301219, 4501663, 353798, -4486094, 4277788, -2073396, 2400887, -2535105, -2803540, 314069, -2287607, 1440425, -3599183, --6558952, 1788854, 2335925, -1606318, 1818919, -3109020, 2945811, 4042101, -6930467, 1373853, --389768, 2627446, 2218351, 386547, -6842420, -2026151, -3012920, 2290291, -91268, 711354, --2204929, 1290638, -3517578, 193810, 3790309, 2453500, 243739, -1918240, 1243930, -5563057, --3154117, -4079145, 727460, 734439, -366683, 5935645, 10201, 5178120, 55298, 576599, -460635, 13959, -2810519, 2124935, -191126, 1069447, -620623, 702227, 952946, -343061, --998580, -342524, -319438, -257698, -189515, -1458141, 229781, 1588601, 863825, 59593, -143345, -377957, -710817, 699006, -464393, -14031121, -466004, 717796, 178241, 2277943, --4967130, 3607773, 2017024, -2619393, -8371428, 5466957, 5609764, -1351304, 4663798, 3358128, --4650913, 9170292, 1892470, -4188667, 4919348, 329102, 4595078, 651761, -8034273, 3017215, --1542967, -2992519, -3134789, -2459943, 5220533, 4037806, 304943, 4225711, 1515587, -4049081, --5002027, -482647, -1187559, 2113124, 1431835, -3943854, 911070, 2009508, 1902671, -3471407, --2909840, -4590783, -1624035, -1167694, 892279, -1147293, 6099928, 2590402, -970663, -3133179, -1125818, 2517388, 1298691, 6560563, -1120450, 3288871, -412854, -2199560, -4025995, 2791729, --928250, -1889786, 3845070, -1226213, 1266479, -897111, -821413, -4482872, 956167, -1295470, -5210332, 6439230, -3916473, -3997004, -2804077, 1054415, -2518462, -1311576, -1632088, -1646583, --1760400, 999117, 2393371, -194347, 604517, 681289, -272194, 38118, -1161252, -2619393, --4123706, -9509594, -5674189, -2056216, 6857452, 892816, 1293859, 4199405, 1147293, 1814087, --9963250, -9154723, -5822365, -1526324, -19327, 4230543, -2978560, 3310883, -1694902, -6156299, -1940788, -900333, -4201015, -66572, 5930813, 8600672, 3916473, -3937411, 2326262, 275415, -6216965, -27917, -4916127, -168577, -2861522, 6096169, 2685428, 2859375, 6189585, -1066226, -471910, 8281771, 7257958, -271120, -12348, 570157, -436476, 2204929, 628676, -6031745, --7989176, -2824478, -994822, 28991, -2632815, -8923868, -926639, 2477659, -4840965, -2368138, --3145527, -2701535, 968515, 1148904, 2967823, -6218576, -4957466, 4803384, -2008434, -1082869, -1012539, -366683, 3151432, -5988795, 2397129, 2225867, -2358474, -2280091, 2415382, -2614561, -3837553, -1495186, 58519, 3221, -1480690, 760209, 2842732, 1571958, 341987, 1717450, -507880, -777389, -1515587, -840740, -864362, 353798, 454193, -253940, -202937, 424665, --115427, 12823162, -4811437, -3796214, -540629, 295816, -4685810, 120259, -3253975, 6206765, --1418950, -7504382, -10476499, -2635499, -6912213, 9820980, 874026, 6990596, 5909338, -9166534, --436476, 3952981, 2889439, 4986457, 998580, -521302, -753767, 2377265, -2977486, 3601330, -2035278, -3224447, 2126009, 221728, 2468533, 5370320, -2774012, 2175938, -250182, 3098282, -2694555, -1014686, 3680787, -948114, 3214246, -2318209, 2939368, -7416872, -3090766, -2665564, -2197413, 6541235, -4662187, -3075197, -1661616, 461172, -2079301, -2801929, -1424855, 2687039, -2219424, 3809636, -1146219, 2198487, -2108292, -2259690, -120259, -1332514, 2689187, 28991, --3811784, 2262911, -2183454, -3786551, -1329292, -2332167, 1794223, -2747169, -7521562, -1018981, --3192771, -3187403, 1757179, -2042794, -4484483, -874026, 1075889, -269509, 382789, 13959, --2775086, 150861, 1629403, -1031329, -1095754, 363998, 51540, 607738, 599685, 1552631, -546535, -1241782, 974958, -174483, -346819, -446677, -1175210, -1154809, -1200443, 2279017, -3459059, -1179505, 5185636, -7807714, 3675955, -4616553, -5103495, 7796977, 2985539, -8926553, -1074816, 182536, 2862596, -6389301, -4035122, -443992, -5142150, -9497783, -9180493, -6023692, --9161165, 4119948, -831076, 1535988, 5176510, -8041790, 5522254, -2183991, 2660732, 1783485, --688269, 966905, -1037235, -1052267, -5178657, -3067144, 7100118, -2443837, -5638755, -5201743, --371515, -2270427, 2314451, -4968204, -7730405, 1324997, 7470559, -995896, 4587025, -2415919, -2568391, -3817689, 3134253, 1338419, -5235565, 8031589, 1559073, -1552094, 1997697, 7392713, -6864432, 3643206, -571231, -8009577, -1222992, -6658810, 2097018, -1378148, 1276679, 1278827, -2035815, -6046240, 97711, -354335, 3119757, 6387153, -7718056, 1146756, -2154463, -7270306, --682900, 2246805, -601832, -84826, -555661, 2516314, 628676, -2048699, -1312649, -1459215, --787590, -2459406, 243739, -128312, 1583232, -2985002, -1996623, -154619, -251256, -302795, -301185, -158914, 653909, -1037772, -988379, -222801, -30602, -737124, -41339, -146566, -1531156, 1341104, 144418, 100932, -1250372, -2234994, -649614, 181999, -1923609, -1172526, --819802, -686121, -692564, -8863202, -8484171, -5458904, -9358734, -11124502, -10591926, 4708895, -5137318, -6764574, -1669669, -6110665, -10057203, 5621039, -2518462, -8715562, 3206730, -456340, -612033, 1046898, 3171297, 1132798, -159451, 2427730, 3227668, -4954245, -4738960, -1177358, --5813775, -282394, -6206765, -10878078, -716186, 6810745, -7819525, -5977521, 4481262, -4072166, -656593, 1832877, -3954591, -3179887, -3329674, -11737609, -4991289, 2683281, -3244311, -3803194, --7333120, 3471407, 6828461, -2287070, 10449119, -5575942, -2540473, 77846, -2338073, -8582955, --466541, 2115272, -140660, -1713692, -7453379, -1135482, 7629473, 3888019, 2354716, 3994857, -2922725, -1857573, 14457934, -4387309, -5407364, -5182952, -6197638, 2631741, 8281234, 5657009, -774705, -1217623, -3953518, -1367410, 30065, -1825898, 499827, -2485176, 1152125, 6058052, -4011500, -2834142, -467078, -967978, 2308008, -1144609, 2499134, -2388539, -1093069, 459562, -633508, -530428, 956167, -1347546, 1706176, 142808, 1378685, 1083406, 887448, -619549, --985158, -221191, -995896, -1271310, 15904264, 10783052, -620623, 9838696, -962610, 1341104, -1779190, -5559835, 8952322, -15569, 7881802, 7566122, -6340983, 9862319, 19327, -7715372, --12682502, 11347304, 5414880, 11273752, -9679783, 6431177, 3402688, -10611790, -10521596, -6250251, --3093450, 10864657, -10594074, 9147207, -1047435, -1141388, 6512244, 6180458, 8410083, 3045132, --4840965, 4079145, 7892540, -4986457, 7888781, 12135967, 5042292, 7323456, 2920578, 1993402, -1919314, 209917, -6835978, 2359548, 506269, 386547, 5445482, -4071092, 3178813, 3651796, --1801202, 10587094, -6442988, -3905199, -2590402, 9134322, -1856500, 7529078, 3676492, 5060545, -4445828, 804770, -13223667, -2112050, -10637560, -5764920, 13404056, 7004018, -6245956, -447750, --7657927, -6772627, -3672734, 11220602, 825707, 3813931, 2024003, -1842004, 2137283, 3976066, -6901476, -2074469, 3962107, 2916820, 2384781, -2499671, -1729261, 1060857, -1439351, -116501, -1753420, 2559264, 909996, 1078037, 2972654, 3031710, 973884, 44560, 1336272, -705448, -2495376, 4038343, 1763084, 76236, 4301947, 469762, -2141578, 1840930, -14089640, 8873939, -8522826, 25238302, 981937, 2165737, -1275605, -3488587, -1657321, 8516920, 7778723, 6754910, -9813463, 3950833, 15501611, 4503273, -6147709, 1444720, 13512504, 5296232, 1370095, 2055679, --6950868, -10046465, 6410239, -5018133, -9791989, -20797306, -326954, 8192650, -629750, 4803921, --7177964, -3868692, -2677912, 1480153, -2267206, -6291590, -3026341, -16779900, -4350265, -14257681, -1208496, -7556995, 5710159, -8222178, 3111167, -7910793, -2699924, -588947, 253403, 1107565, -1603633, -10458245, 5027796, -1668058, 2318209, -5522254, 168577, 8152922, 3354370, 11308112, -6426882, -3608846, -648003, -2479807, -1137093, -2808372, -3605625, -308701, 4724464, 2904472, -3522947, 2107218, -16305843, 10653666, 10631118, -4102768, 6108517, 4605279, -8593693, 4024921, -2638721, 410706, -1784559, 1369021, 5635534, -5048734, 3309809, -1524177, 341450, -521302, -1291711, 2845953, -2433099, -1259499, 4210679, -3077881, 277025, -9664, 1644436, -2061047, --3396246, 1981591, 212601, -1228361, -958315, 383326, -42413, 1835025, 2379949, 2426120, -123480, -2894271, 622233, 27145804, 9736154, -4624069, 13368086, -8908299, 9299678, 6161668, --12891344, 2657511, -16197395, 253940, -5555004, -11425150, 5995775, 131533, 4571456, 6582575, -8180839, 13179644, 5457293, -1014686, -3497177, -9096741, -16327855, 5696201, 6295349, 1695438, --5746130, 8713952, 1075352, 9211094, 5449777, -17023640, -6506339, 2214593, -12545599, 574452, --964220, -2437931, 3604015, 2687576, -3008625, 12433393, -7290707, 428423, 6941204, -6228240, -4746476, -2756295, -7648263, 5017596, -127775, -1045288, 7135552, 4701379, 202937, -3803194, -14842333, 602906, 8322036, 781684, -4705137, -5230197, -12556337, -4889284, 5158793, -391379, -4394289, -1474248, -9795210, 3831648, 3160559, -14332306, 4096325, 7306813, -3864934, 7798050, -1797444, -8157217, -8300025, 9309342, -238371, -18798534, 2300492, 1969779, 753767, -1955284, -1069447, -2623688, 435402, 5551245, -1749662, 850940, 1377074, 1607928, -4754529, 1381369, --1720134, 1258425, 3454228, 3645354, 2627446, 1239098, -3131031, 1367410, -302258, -321049, -1221918, -3496104, -73014, 2330557, 3216931, -2196339, -1344325, -4086125, 688269, 4213900, --4207458, 1668595, 1467268, -28348394, -9454297, 29496762, 8142721, 4657355, -4514011, -857383, --4609037, 5967320, -9622874, 12861816, 7327751, 5998459, 6160057, -4637491, -514859, -592169, -4089346, 8639327, -13156022, -7827041, -4249334, 9888088, 3523484, 5490579, 5901822, -1422171, --9453223, 3019899, 664109, 18001282, 14141180, 3680250, 10722386, 534187, -5273146, 2182380, --1563368, -2532420, 6885370, 8498130, 6969122, 17418776, 8369281, 6801618, 7603703, -7976828, --13053479, -6140193, 5846524, -11120744, -5548561, 10710038, 11401528, 6243809, -5262409, 10103911, --4071092, 1059246, 2357400, 5784247, -3059627, -6380174, 3555696, -5757404, -17980344, 733903, -5715528, -9804873, 1199907, -1802813, -2606508, -1829119, -5871221, 14527727, -1598265, 8287677, --20965346, -19907174, -16905528, -7712688, 1634235, 2006824, -628139, 1114544, -435939, -4473209, -2097018, -4913443, -1520418, -2172180, 5010616, 776315, 1758789, -3950296, -809601, -3519189, --1352378, 2739652, 4313221, 4697621, 4451197, -91268, -3129958, 2443300, 3908420, 2449742, -3889630, 1367410, -474594, 1657857, 475668, 798864, -1295470, -2753611, 3116536, 3569655, --1286880, -1051193, -899259, -620623, 14702747, 23036058, -33592548, -4643934, 2147484, -128312, --3906810, -8283382, 9373229, -10670309, -17022030, -1620813, 16893180, -2275796, -9658845, 3234110, --13567265, -7322383, 682900, 8919573, -14226542, 1716913, 15816217, 16205985, 557809, 5816460, -14192183, -7916699, -12412992, -17430052, 1842541, -17374754, -3595425, 7482370, 7068443, -15362561, --14463302, -8763344, 6433324, -3998078, -2585034, -3950833, 14099304, -20620674, -5920076, 3338800, --11035382, -3745212, 184147, -12970801, 753767, 5490042, -565325, 17257716, -1013612, -6838125, -1603633, -761283, -5483600, 3396246, 8588861, -7704098, 12185359, -5841693, -22255984, 1155346, --8594230, -4697084, -471373, -2296734, -29407642, -4862977, 13703093, 11800960, 8338679, 17743046, -18127984, -24224690, -2578054, 1665374, 5210332, -6971269, -11958263, -130997, 5646809, 6578816, -5696737, 4415227, 2215130, 3579318, -6342056, 130460, 4034585, -1952600, -1353452, 816044, -1410897, 3595425, -3727495, 805843, -1422171, 1732482, 2426657, -5101885, 891743, -442382, --3425237, 1609002, -679142, 770947, 300648, 0, -4369593, 2389613, 451508, 1287953, --2867965, -2166274, -1857573, -1904818, -32270236, 8995272, -6011344, 10983305, -10332618, -125628, -16866874, -5662915, 23968602, 5493263, 4616016, -10329396, 4533338, 11861626, -7322919, -1512902, -15506443, 9966472, 11674258, 1623498, -17919678, 11370926, -11565810, -1110786, -6966974, 1744831, --8896488, 5153424, -2308008, 5020280, 4829154, 8542153, 8717173, 9615895, -11418707, 2698313, -18298708, 3866008, -3253438, -3700651, -9146670, -7436736, -6442, 638876, 3323768, 15337865, -1363115, 8444443, 8260833, -616865, -3876208, -3779034, 13997835, -16335371, -3498788, -14461692, --11832635, -3379603, 150861, -24239184, 6343667, -7650411, 14875082, -3114388, 704375, 10238128, -2164127, 24798604, 20584704, 29546690, 11258183, 1207960, -3371549, -3051574, -4922033, -1503239, --5864778, -16345035, 11112154, 13456133, 6514929, -2258079, 1586454, -11528766, -15532212, 7199976, -2011118, 2106145, -4950487, -2204929, -5376226, -3005940, 4875325, 1536525, 6365679, -463320, -1473174, -3650722, 4464082, -12984760, -3341485, -506269, -446677, -2484102, 2345052, 540092, -905701, -945430, -3081102, -685047, -1241782, -916976, 4103841, 427886, 573378, -2709588, -938987, 597000, -131533, -5820218, -4121021, -4535486, -9561671, 12636331, -3831111, -2887292, -29624536, -6236293, -6636798, 32947230, -569083, 18701898, 13780403, 999117, 7690139, -4548371, -6010270, 5626944, 3545496, 4544613, 15179488, -10644540, 18312666, -10252624, -406411, 3656091, --2580739, -13466333, -12016782, -473520, -19449222, -6305549, -21237540, -1580548, -12652974, -9521942, --6969122, -6164352, 3064996, -17133162, 19652696, 2973191, -12910135, -9699647, -696858, -2609193, --3227668, 4980015, 2624762, 19284404, 2142115, -348966, -10003516, 1506460, 3936875, -857383, --10664404, -4713727, 12097849, 13153337, -871342, -11415486, 4532264, -2353642, 17243756, 19165754, --7619272, -5125507, -3647501, 2058900, -7494181, 7668664, -24099062, -2387465, 28307056, -25747256, --12705587, -6069326, 1759326, 2134062, 3307125, -2451890, 7521025, -4674535, -1360431, 13688061, --2258079, 9883257, -6861211, 9956808, -8915278, 6777459, 5552319, 13584445, -367220, -2455648, -5711233, 8895414, 720481, -2297808, -1502702, 783295, -4989142, -1631551, 4539244, 5959267, -1835562, -2112050, 5836324, -4760435, 4780836, 3927211, 4355634, 2308545, 78920, -7345468, -7167227, 4149475, 3273839, 1457068, 3338263, 6207839, 1378148, -5111011, 2401961, -4189204, --3205656, 5116917, -1357747, 4413079, 4846334, -2053531, -3617436, -3609383, 1999307, -17324288, --9508521, -2730526, 13357348, 16112570, 11028939, -10291279, -26385058, 45602888, 11445014, -28652800, --28760712, -4323422, 6921877, 19413790, -25028386, -4428648, 4631049, -376883, -3631395, 26131118, -5572183, -15362561, 8157217, 1067299, -773094, 13754633, -2551748, 7513509, -17081622, -5781563, -29903172, 11054709, 23571854, 7445863, 21306796, 3728032, -7884486, 15007689, 13637058, 21441014, -10515691, -24218246, -9227737, 5238250, 12472048, -9726490, 3646427, -9370545, -15705622, 1586990, --1857037, -9364102, 7237557, 10153303, 8761196, 6443525, 5990943, -4607963, 16158741, -117575, --16151225, -11679627, 14527190, 7916699, -25338696, 11013907, 4440460, 8148627, -22147536, -15085536, -14159433, 21971978, 12359305, -4910758, -23680840, 5372467, -1095217, 20178830, -6777996, -27064736, -11306501, 15836618, -6040335, 16483011, 13488882, 5617281, -10871099, 1457068, -191663, 3203509, -1137630, -692027, -5806259, -2375117, -7274601, -702227, -1475858, 3826279, -4461398, -2596308, --1529545, -3252901, -2064269, -1700807, -2062121, 8457864, 2481417, 163746, 8127152, -1963337, --7748658, -5106716, -4170950, -3259343, 316217, -5544266, 2323577, 3497714, 2852932, 2234457, --7435662, -2790118, 6181532, 5215701, -794032, 4033511, -884226, 10644003, 21030308, 7952669, -22215182, 3515431, 10053445, 7428683, 37172940, 50676320, 3726421, 9943923, -32666984, -10545755, -19346680, -16762184, 38293392, -7917236, 5817533, 10139881, 22317724, 12278775, -5640366, -16601659, --19435264, -6570226, -3417720, -24285356, -11660299, -9809168, 15160161, -9188546, 4326643, -15660525, -1785096, -6303938, -22767622, 23140746, 15946140, 18582712, 8018704, -11719892, -11389716, -26425860, -208843, -23842974, -7446400, -2252710, 2835215, 11836930, 9247601, -7907035, -5714454, 9762998, -21831318, 5692443, 8172786, 15891379, -20847234, 14323716, -11964705, -11046119, -21048024, -9347996, -9210020, 7778186, 1037235, 24025510, -5602785, -9256191, 3430068, 6099391, 33058900, -11223823, -13077639, 12917651, -32349694, -217433, 3712462, -7318625, -5018670, 10829223, -6657200, 689342, -13287555, 6766721, -20026896, -23933706, -23166516, -10958072, -8811662, 18817326, 16322486, -4811437, --7570417, 723165, 1807644, 12328167, -1723893, -4187056, 7495792, -1685238, -1608465, -3547643, -5342940, 7501161, -4417911, 7169911, 6674379, 6927782, 950798, -3264712, 6007049, -4602595, -3472481, 7829189, 278636, 4578435, 6128919, -11171210, -795106, 5105106, 5639829, 7801808, -624918, 6960532, 57982, 238371, -2790655, 3899830, 5719286, -21352430, 5792837, 32262184, --7211250, 5024575, -13913547, -3723200, -18668076, 15478525, -27014270, 1626719, -21687974, 4732517, -9777493, 3798899, -12847858, 45575508, -2837900, -5698885, 4439923, -25339234, 1809792, -16994648, -928250, 5274757, -4882304, -198642, 10970957, -9048422, 730144, 14078903, 1439351, 3863860, --21815212, 3224984, -1554778, -970126, -5292474, -27046482, -14971182, 7203197, 2554969, 12613245, --31512176, 3893925, -29309394, 15444702, -19894826, -31876710, 16661789, 30225832, 5434208, 15092515, --22017076, 22540526, -5184563, 3747359, -13393856, 18857054, 7704098, 19567872, 6288906, 23649164, --20719996, 4478577, 1443646, -3130494, -16373489, -13107703, -15375446, 18249316, -4456029, 24634322, --14731201, -11027865, 2976949, 3712462, -13151727, 7472706, -7627325, -30947386, 14090714, 21350282, -34866008, 12618077, 24805584, -13660143, 303869, -15461345, 26551488, 9400073, -4785131, -9936944, -12736189, -8442295, -2281165, 1887101, -7686381, -12830141, -8680129, -5780489, -5078799, -17258252, --7520488, -14282377, 11694659, -2247342, 7042673, 13946296, 3753802, -9509058, -747324, -9507984, --4124242, -14503031, -8138426, -15378130, -2586644, 26863410, 5563057, -1359894, 6100464, 8521752, --14957224, -6306086, -673236, -1354525, -6083285, 7350837, -2778844, -22499724, -1787780, -4619238, --16712255, -52698712, 6593312, -16765405, 48978196, -9096204, -24561844, 9909563, -1298691, -24491514, --4090420, 4184372, -14683956, 36981280, 5359583, 3625489, 16864726, -20664162, -31808528, -19602230, -45151380, -3516505, -9450539, 29828010, 16905528, -14121316, -13986024, -7882339, 35824860, 5070209, --8590471, -13901199, -6621229, -27829240, 18937048, -3192771, 7749195, 17994840, -6219650, -28831578, --3411278, 37297496, -1470489, -9244917, 18081812, -8114267, 22410066, 14665166, -1755031, -27486180, --13885092, -3739306, -25333328, -14916958, -14527727, 2026688, -3340411, 21535502, -14799920, -5164162, -82141, 55319716, 19405200, -9499931, 11383811, 6538014, -3054259, 28097676, 13859859, -10616085, -4614943, 22714472, 25872882, -15649250, -10945724, -37547676, -29917668, 17164836, -11020886, 18527416, --256087, -22081500, 5659693, -1753420, 7274064, -14698452, -10936060, 20779052, 5538897, 2743947, --1773822, -2445447, 14103599, -6644852, 7416872, -3555159, 8927626, 17441862, 4966056, -12652974, -2412698, -4882841, 9858024, 7824894, 2954938, 11333882, 18041010, -6985228, 14632417, -1424855, --18552112, -4942434, 995359, -10635413, 4663798, 13739064, 152471, -7034083, 1278827, -2636036, -18421652, 15361487, 2021856, 7238631, 9731322, 4781373, 12492986, -15475841, -10975789, 5451387, -3610994, -3342022, -839129, -2523293, -5751498, -5671505, -59665684, 20492900, -12767864, 31759672, -32293860, -18711026, 15251429, -31954556, -47979616, 1174137, -33742872, 4438312, -4220879, 26109106, --19382114, 18627810, 15987479, 26184804, -39866960, 4347044, -24399172, -22367116, 2421825, -28874528, --18619756, 26197154, -7647726, 9942312, 30600032, -6078453, 10077067, -25223270, 2901787, -27810986, -25773562, -23057532, -15301358, -17025250, 28747826, 23024246, -16502338, 31487478, 20863340, -6682969, -31263604, -1762547, -33080374, -9163313, -3900904, -25800406, 5804112, -54563264, 5469641, -13903883, --26179974, -21169894, 24373940, -14595373, 50538880, 37524592, -56516936, -16106, -1485522, 2669322, -26112864, -44410500, -30953830, 30469572, -25446608, -31831076, -36612984, 2421288, 75145824, 37306084, --34999688, -22077206, 3025268, 27300960, 10436234, -36634996, 5411659, -24497420, -14388140, -1362042, --4436701, 1343251, 24091008, 5633924, 14267881, 9411884, -28178206, 7481296, 12586402, -4059818, --10187662, 1398012, -24061480, 21279416, 7706245, 5742908, -31903018, 5207648, 16364899, 4520990, --7588671, -6077916, 14052059, -23363548, -1570347, -17464410, -9659381, 22618908, -24142012, -1140314, -14258218, -12239046, 11157251, 13484587, 3465502, 1860795, 9933186, 3079492, -12901008, 18486612, --14527190, -11521250, -6650220, -19979650, -6320581, -17973364, -17215840, 6936372, 28186260, -31224412, -15722265, -52467856, -7862475, -20404852, -17782238, 27810450, -35842040, -55927452, 32715302, 49251464, -11962558, -9517111, -44678396, 3056406, 17539572, 17523466, -7461432, -17907866, 2278480, -4409858, --5819144, 5711233, -6555194, -14999636, -29249264, 3723200, -17586818, 4376572, -15762530, -33386928, -20784958, 15277199, 25548612, 904091, 27628450, 15466714, 4189741, -8943733, -14064407, -22987202, --16363825, -9241696, 6570763, 15865609, -10587631, -5178657, -38012072, 35737884, 42378980, 23569170, --21518860, 22617298, -29403882, -441308, 6848862, -64404108, 5340255, 6442988, 30535606, -38409892, -49718540, 19549618, -35465692, -20085952, 15052250, -6129455, -25956098, -31865436, -34314640, -46848428, -34652868, -14681809, 5547487, -71670120, -28448252, 4539244, 897111, 16594680, -11325829, 3046206, -12363063, 13018583, -34179348, -7727183, 5688148, 19157164, 13906567, -2807298, -13063680, -5470178, --2743947, 17903572, 3129958, -10949482, -1216550, -8471286, -3234647, 16576963, 7633768, -7954280, -17629230, -17282948, -10117332, -12849468, 17044578, -6559489, 2147484, -7610682, 7517804, -24097988, -3720516, 10353019, 3958349, -4052839, -10492068, -8917963, -12298639, 12526809, 2765422, -3882114, --14103599, 14939507, 927176, 1306744, 2188823, -24512452, -12061879, -15955804, 2180770, -7946763, -185757, -305480, -5672041, -13698261, -4964446, -48968532, -6461779, 17964238, -22956600, -21367462, -20340428, 20637318, 4254165, -19288162, -66320200, -9660455, 13062069, 8020852, 28865938, -525597, -16806744, -4223027, -358093, -8247948, 1300301, 17693118, 2083596, 835371, 17126718, -4440460, --4077535, -22327388, -2033130, -3488050, -2481417, 3986267, 13652090, 18741090, -3633006, 134218, -14622216, -3173981, -28127204, -1800128, -24974162, 3774740, 3404299, -32613298, 23746874, -44986024, -10093173, 12565464, -19809462, -1245004, 58496916, -16416976, 19724638, -12202002, 10418517, -43676060, -4681515, 25816512, -739271, 22301618, -5212480, 2472291, -1493575, 28464896, -18279380, -21698712, -25027848, -23018340, -28726352, -190589, -45835356, 30701500, 25271050, -8977019, 9685151, 4409321, --392453, -38765300, -6542309, -2784750, 17029546, 6638946, -16574816, 15669651, -1271847, -19637664, --13624173, -12128988, 2462090, 2908767, -2892661, -227096, 12251394, -12068321, -3743601, 8808978, --13330505, -6842957, 9867150, -13207561, 647466, 12184822, 499827, -3078418, 4922033, -181462, -910533, 10698764, -4084514, -2860985, -8252780, 3790309, -5334350, -4467303, 4236449, 6054830, --11534135, 2179159, -10808285, 10498511, -12272332, 7036767, -476741, -1708860, 779000, -2166274, --1817845, -19864, 7777112, -23987930, -73078328, -34213708, -11205570, 24230594, 54320600, -49236432, -11104638, -14062260, -49634252, -6721624, 45150844, 12339441, 37249176, -30925376, 9575630, -10531797, -2485176, 22080964, 3997541, 12121471, -6751152, -63351840, 19178640, 3396782, -26688926, 28000502, -21489868, -18956376, 19893214, 2624225, -20390358, 6627135, -12470438, 40068824, 5220533, 16392816, -1110786, -40548788, -32353988, -10740639, -23882702, 26847840, 38522636, 39523364, 31940598, -10652593, -4764193, -31805844, -4480188, -2950643, -13143674, -16631187, 3091840, 3376381, -43731892, -12639552, --16874926, -937377, 20117090, -21425444, -4640712, 7899519, 414464, 22970558, -24782498, -756451, --28121836, -14709189, -20691542, 11868605, 7949985, 22938884, -2694555, -2100239, -26480084, -7798050, --12378633, -3128347, 11713986, 15781857, 32285806, -20228760, 6183679, -17497160, 6742562, 12199318, -3706557, -9525164, -3624953, -3194382, -3624416, -1213865, 8793946, 9095130, -2153389, -814970, --3900367, -6059125, 4465692, 9046812, 3358128, 1204738, 2756295, -7220914, -8301098, -7890392, -13771813, -163746, 9642202, 7866770, -909996, -10231686, -10834055, 1880659, 3506841, -8456791, --2400350, -7334731, 5953362, -5258651, 2281702, 1792612, 6211597, -2743410, -3054259, 1633698, -2497524, -4263829, 7110319, -2177549, 19105626, -30830348, -121703264, -64164664, 13172665, 51219632, -114591872, 87570624, 49325016, 16630650, 25727928, -8135205, -48189532, -93174480, -123993024, -31337156, --35940824, 1897839, 60385092, 86178520, 57752816, 77220288, 17756468, 16400333, -9041980, -39003136, --44241384, -35714264, -38022272, -46937552, -37701760, -16054588, -2447058, -521839, 30089468, 39140572, -74691088, 35370668, 11591043, 30744986, 47650516, 15270219, 9059160, -38408280, -52714280, -86009944, --39831528, -45074072, -32727650, -19371914, -15324443, 6454799, 10546292, 36277440, 74050072, 59708100, -65000036, 48262548, 58961848, 44014824, -35582192, -32464048, -82111720, -63447404, -46581604, -104387032, --80897320, -49344880, 3835406, 63433444, 60270740, 71427992, 89089968, 76366128, 40976672, 49604724, -1864016, -19270982, -52425980, -75872744, -76413912, -62860068, -37953016, -8052527, 10757819, 18524730, -21046950, 35385160, 25367150, 41372884, 25989920, 10437844, 6619082, -1466731, -4181688, -868120, --28667296, -19815906, -4160213, -13150653, -34224984, -9456444, -12373801, -12564390, -2500208, 25604984, -48035452, 40076876, 4064113, 39395588, 27524298, -5022965, -32482838, -51059644, -47750908, -21428128, --23732916, -14615237, -8351027, 13702556, 29678224, 41531796, 46878496, 34027416, 13070122, 14641544, --9213779, -25589952, -43557948, -38709468, -17411798, -1605244, -12922483, -4015258, 12237972, 15978889, -16116865, 15695421, 3747896, 6608344, 9700184, -1612223, -9331890, 394600, 2905009, -6543383, --7796440, -976031, 2539936, 2194728, -5126044, -2423972, 1670205, 823023, -4494684, -7101192, --5733245, 2141578, 367220, -326418, 4235375, 7963406, 5893769, 6070937, 4129611, 3320010, --449898, -2192581, -3786014, -5168993, -4513474, -1536525, -3647501, -3114925, -2700998, 2882460, -3309809, -974421, -1578937, 3125663, 1773285, -330176, -514322, -775778, -2226404, 1753957, -2387465, 1235340, 2127620, 4174708, 4228396, 3777961, 288300, -1224603, -2450816, -3696893, --7072201, -8356933, -7110319, -4737349, -3775276, -171799, 3756486, 6982543, 8635569, 9871445, -8543227, 6291054, 2726767, -198105, -3752728, -6447820, -7882339, -7201050, -7425462, -5027259, --2384244, -386547, 1818382, 4675072, 4961224, 4671851, 4155381, 3485903, 1632088, 64425, --1084479, -1148904, -1413044, -1456531, -1502702, -1081258, -809601, -424665, -227096, -66035, --11811, 140660, 194884, 243739, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-7080791, -5145908, 2013266, -771484, -12128451, -6881612, -520765, 1748589, -3726958, 1291711, +-4499515, 894427, -3251290, 8531416, -6935299, -3031710, -3047816, 5442798, 3751654, 8687645, +2291365, 1818919, -3963718, 4108673, 522912, 1126355, -483184, 3301219, 4501663, 353798, +4486094, 4277788, -2073396, 2400887, -2535105, -2803540, 314069, -2287607, 1440425, -3599183, +-6558952, 1788854, 2335925, -1606318, 1818919, -3109020, 2945811, 4042101, -6930467, 1373853, +-389768, 2627446, 2218351, 386547, -6842420, -2026151, -3012920, 2290291, -91268, 711354, +-2204929, 1290638, -3517578, 193810, 3790309, 2453500, 243739, -1918240, 1243930, -5563057, +-3154117, -4079145, 727460, 734439, -366683, 5935645, 10201, 5178120, 55298, 576599, +460635, 13959, -2810519, 2124935, -191126, 1069447, -620623, 702227, 952946, -343061, +-998580, -342524, -319438, -257698, -189515, -1458141, 229781, 1588601, 863825, 59593, +143345, -377957, -710817, 699006, -464393, -14031121, -466004, 717796, 178241, 2277943, +-4967130, 3607773, 2017024, -2619393, -8371428, 5466957, 5609764, -1351304, 4663798, 3358128, +-4650913, 9170292, 1892470, -4188667, 4919348, 329102, 4595078, 651761, -8034273, 3017215, +-1542967, -2992519, -3134789, -2459943, 5220533, 4037806, 304943, 4225711, 1515587, -4049081, +-5002027, -482647, -1187559, 2113124, 1431835, -3943854, 911070, 2009508, 1902671, -3471407, +-2909840, -4590783, -1624035, -1167694, 892279, -1147293, 6099928, 2590402, -970663, -3133179, +1125818, 2517388, 1298691, 6560563, -1120450, 3288871, -412854, -2199560, -4025995, 2791729, +-928250, -1889786, 3845070, -1226213, 1266479, -897111, -821413, -4482872, 956167, -1295470, +5210332, 6439230, -3916473, -3997004, -2804077, 1054415, -2518462, -1311576, -1632088, -1646583, +-1760400, 999117, 2393371, -194347, 604517, 681289, -272194, 38118, -1161252, -2619393, +-4123706, -9509594, -5674189, -2056216, 6857452, 892816, 1293859, 4199405, 1147293, 1814087, +-9963250, -9154723, -5822365, -1526324, -19327, 4230543, -2978560, 3310883, -1694902, -6156299, +1940788, -900333, -4201015, -66572, 5930813, 8600672, 3916473, -3937411, 2326262, 275415, +6216965, -27917, -4916127, -168577, -2861522, 6096169, 2685428, 2859375, 6189585, -1066226, +471910, 8281771, 7257958, -271120, -12348, 570157, -436476, 2204929, 628676, -6031745, +-7989176, -2824478, -994822, 28991, -2632815, -8923868, -926639, 2477659, -4840965, -2368138, +-3145527, -2701535, 968515, 1148904, 2967823, -6218576, -4957466, 4803384, -2008434, -1082869, +1012539, -366683, 3151432, -5988795, 2397129, 2225867, -2358474, -2280091, 2415382, -2614561, +3837553, -1495186, 58519, 3221, -1480690, 760209, 2842732, 1571958, 341987, 1717450, +507880, -777389, -1515587, -840740, -864362, 353798, 454193, -253940, -202937, 424665, +-115427, 12823162, -4811437, -3796214, -540629, 295816, -4685810, 120259, -3253975, 6206765, +-1418950, -7504382, -10476499, -2635499, -6912213, 9820980, 874026, 6990596, 5909338, -9166534, +-436476, 3952981, 2889439, 4986457, 998580, -521302, -753767, 2377265, -2977486, 3601330, +2035278, -3224447, 2126009, 221728, 2468533, 5370320, -2774012, 2175938, -250182, 3098282, +2694555, -1014686, 3680787, -948114, 3214246, -2318209, 2939368, -7416872, -3090766, -2665564, +2197413, 6541235, -4662187, -3075197, -1661616, 461172, -2079301, -2801929, -1424855, 2687039, +2219424, 3809636, -1146219, 2198487, -2108292, -2259690, -120259, -1332514, 2689187, 28991, +-3811784, 2262911, -2183454, -3786551, -1329292, -2332167, 1794223, -2747169, -7521562, -1018981, +-3192771, -3187403, 1757179, -2042794, -4484483, -874026, 1075889, -269509, 382789, 13959, +-2775086, 150861, 1629403, -1031329, -1095754, 363998, 51540, 607738, 599685, 1552631, +546535, -1241782, 974958, -174483, -346819, -446677, -1175210, -1154809, -1200443, 2279017, +3459059, -1179505, 5185636, -7807714, 3675955, -4616553, -5103495, 7796977, 2985539, -8926553, +1074816, 182536, 2862596, -6389301, -4035122, -443992, -5142150, -9497783, -9180493, -6023692, +-9161165, 4119948, -831076, 1535988, 5176510, -8041790, 5522254, -2183991, 2660732, 1783485, +-688269, 966905, -1037235, -1052267, -5178657, -3067144, 7100118, -2443837, -5638755, -5201743, +-371515, -2270427, 2314451, -4968204, -7730405, 1324997, 7470559, -995896, 4587025, -2415919, +2568391, -3817689, 3134253, 1338419, -5235565, 8031589, 1559073, -1552094, 1997697, 7392713, +6864432, 3643206, -571231, -8009577, -1222992, -6658810, 2097018, -1378148, 1276679, 1278827, +2035815, -6046240, 97711, -354335, 3119757, 6387153, -7718056, 1146756, -2154463, -7270306, +-682900, 2246805, -601832, -84826, -555661, 2516314, 628676, -2048699, -1312649, -1459215, +-787590, -2459406, 243739, -128312, 1583232, -2985002, -1996623, -154619, -251256, -302795, +301185, -158914, 653909, -1037772, -988379, -222801, -30602, -737124, -41339, -146566, +1531156, 1341104, 144418, 100932, -1250372, -2234994, -649614, 181999, -1923609, -1172526, +-819802, -686121, -692564, -8863202, -8484171, -5458904, -9358734, -11124502, -10591926, 4708895, +5137318, -6764574, -1669669, -6110665, -10057203, 5621039, -2518462, -8715562, 3206730, -456340, +612033, 1046898, 3171297, 1132798, -159451, 2427730, 3227668, -4954245, -4738960, -1177358, +-5813775, -282394, -6206765, -10878078, -716186, 6810745, -7819525, -5977521, 4481262, -4072166, +656593, 1832877, -3954591, -3179887, -3329674, -11737609, -4991289, 2683281, -3244311, -3803194, +-7333120, 3471407, 6828461, -2287070, 10449119, -5575942, -2540473, 77846, -2338073, -8582955, +-466541, 2115272, -140660, -1713692, -7453379, -1135482, 7629473, 3888019, 2354716, 3994857, +2922725, -1857573, 14457934, -4387309, -5407364, -5182952, -6197638, 2631741, 8281234, 5657009, +774705, -1217623, -3953518, -1367410, 30065, -1825898, 499827, -2485176, 1152125, 6058052, +4011500, -2834142, -467078, -967978, 2308008, -1144609, 2499134, -2388539, -1093069, 459562, +633508, -530428, 956167, -1347546, 1706176, 142808, 1378685, 1083406, 887448, -619549, +-985158, -221191, -995896, -1271310, 15904264, 10783052, -620623, 9838696, -962610, 1341104, +1779190, -5559835, 8952322, -15569, 7881802, 7566122, -6340983, 9862319, 19327, -7715372, +-12682502, 11347304, 5414880, 11273752, -9679783, 6431177, 3402688, -10611790, -10521596, -6250251, +-3093450, 10864657, -10594074, 9147207, -1047435, -1141388, 6512244, 6180458, 8410083, 3045132, +-4840965, 4079145, 7892540, -4986457, 7888781, 12135967, 5042292, 7323456, 2920578, 1993402, +1919314, 209917, -6835978, 2359548, 506269, 386547, 5445482, -4071092, 3178813, 3651796, +-1801202, 10587094, -6442988, -3905199, -2590402, 9134322, -1856500, 7529078, 3676492, 5060545, +4445828, 804770, -13223667, -2112050, -10637560, -5764920, 13404056, 7004018, -6245956, -447750, +-7657927, -6772627, -3672734, 11220602, 825707, 3813931, 2024003, -1842004, 2137283, 3976066, +6901476, -2074469, 3962107, 2916820, 2384781, -2499671, -1729261, 1060857, -1439351, -116501, +1753420, 2559264, 909996, 1078037, 2972654, 3031710, 973884, 44560, 1336272, -705448, +2495376, 4038343, 1763084, 76236, 4301947, 469762, -2141578, 1840930, -14089640, 8873939, +8522826, 25238302, 981937, 2165737, -1275605, -3488587, -1657321, 8516920, 7778723, 6754910, +9813463, 3950833, 15501611, 4503273, -6147709, 1444720, 13512504, 5296232, 1370095, 2055679, +-6950868, -10046465, 6410239, -5018133, -9791989, -20797306, -326954, 8192650, -629750, 4803921, +-7177964, -3868692, -2677912, 1480153, -2267206, -6291590, -3026341, -16779900, -4350265, -14257681, +1208496, -7556995, 5710159, -8222178, 3111167, -7910793, -2699924, -588947, 253403, 1107565, +1603633, -10458245, 5027796, -1668058, 2318209, -5522254, 168577, 8152922, 3354370, 11308112, +6426882, -3608846, -648003, -2479807, -1137093, -2808372, -3605625, -308701, 4724464, 2904472, +3522947, 2107218, -16305843, 10653666, 10631118, -4102768, 6108517, 4605279, -8593693, 4024921, +2638721, 410706, -1784559, 1369021, 5635534, -5048734, 3309809, -1524177, 341450, -521302, +1291711, 2845953, -2433099, -1259499, 4210679, -3077881, 277025, -9664, 1644436, -2061047, +-3396246, 1981591, 212601, -1228361, -958315, 383326, -42413, 1835025, 2379949, 2426120, +123480, -2894271, 622233, 27145804, 9736154, -4624069, 13368086, -8908299, 9299678, 6161668, +-12891344, 2657511, -16197395, 253940, -5555004, -11425150, 5995775, 131533, 4571456, 6582575, +8180839, 13179644, 5457293, -1014686, -3497177, -9096741, -16327855, 5696201, 6295349, 1695438, +-5746130, 8713952, 1075352, 9211094, 5449777, -17023640, -6506339, 2214593, -12545599, 574452, +-964220, -2437931, 3604015, 2687576, -3008625, 12433393, -7290707, 428423, 6941204, -6228240, +4746476, -2756295, -7648263, 5017596, -127775, -1045288, 7135552, 4701379, 202937, -3803194, +14842333, 602906, 8322036, 781684, -4705137, -5230197, -12556337, -4889284, 5158793, -391379, +4394289, -1474248, -9795210, 3831648, 3160559, -14332306, 4096325, 7306813, -3864934, 7798050, +1797444, -8157217, -8300025, 9309342, -238371, -18798534, 2300492, 1969779, 753767, -1955284, +1069447, -2623688, 435402, 5551245, -1749662, 850940, 1377074, 1607928, -4754529, 1381369, +-1720134, 1258425, 3454228, 3645354, 2627446, 1239098, -3131031, 1367410, -302258, -321049, +1221918, -3496104, -73014, 2330557, 3216931, -2196339, -1344325, -4086125, 688269, 4213900, +-4207458, 1668595, 1467268, -28348394, -9454297, 29496762, 8142721, 4657355, -4514011, -857383, +-4609037, 5967320, -9622874, 12861816, 7327751, 5998459, 6160057, -4637491, -514859, -592169, +4089346, 8639327, -13156022, -7827041, -4249334, 9888088, 3523484, 5490579, 5901822, -1422171, +-9453223, 3019899, 664109, 18001282, 14141180, 3680250, 10722386, 534187, -5273146, 2182380, +-1563368, -2532420, 6885370, 8498130, 6969122, 17418776, 8369281, 6801618, 7603703, -7976828, +-13053479, -6140193, 5846524, -11120744, -5548561, 10710038, 11401528, 6243809, -5262409, 10103911, +-4071092, 1059246, 2357400, 5784247, -3059627, -6380174, 3555696, -5757404, -17980344, 733903, +5715528, -9804873, 1199907, -1802813, -2606508, -1829119, -5871221, 14527727, -1598265, 8287677, +-20965346, -19907174, -16905528, -7712688, 1634235, 2006824, -628139, 1114544, -435939, -4473209, +2097018, -4913443, -1520418, -2172180, 5010616, 776315, 1758789, -3950296, -809601, -3519189, +-1352378, 2739652, 4313221, 4697621, 4451197, -91268, -3129958, 2443300, 3908420, 2449742, +3889630, 1367410, -474594, 1657857, 475668, 798864, -1295470, -2753611, 3116536, 3569655, +-1286880, -1051193, -899259, -620623, 14702747, 23036058, -33592548, -4643934, 2147484, -128312, +-3906810, -8283382, 9373229, -10670309, -17022030, -1620813, 16893180, -2275796, -9658845, 3234110, +-13567265, -7322383, 682900, 8919573, -14226542, 1716913, 15816217, 16205985, 557809, 5816460, +14192183, -7916699, -12412992, -17430052, 1842541, -17374754, -3595425, 7482370, 7068443, -15362561, +-14463302, -8763344, 6433324, -3998078, -2585034, -3950833, 14099304, -20620674, -5920076, 3338800, +-11035382, -3745212, 184147, -12970801, 753767, 5490042, -565325, 17257716, -1013612, -6838125, +1603633, -761283, -5483600, 3396246, 8588861, -7704098, 12185359, -5841693, -22255984, 1155346, +-8594230, -4697084, -471373, -2296734, -29407642, -4862977, 13703093, 11800960, 8338679, 17743046, +18127984, -24224690, -2578054, 1665374, 5210332, -6971269, -11958263, -130997, 5646809, 6578816, +5696737, 4415227, 2215130, 3579318, -6342056, 130460, 4034585, -1952600, -1353452, 816044, +1410897, 3595425, -3727495, 805843, -1422171, 1732482, 2426657, -5101885, 891743, -442382, +-3425237, 1609002, -679142, 770947, 300648, 0, -4369593, 2389613, 451508, 1287953, +-2867965, -2166274, -1857573, -1904818, -32270236, 8995272, -6011344, 10983305, -10332618, -125628, +16866874, -5662915, 23968602, 5493263, 4616016, -10329396, 4533338, 11861626, -7322919, -1512902, +15506443, 9966472, 11674258, 1623498, -17919678, 11370926, -11565810, -1110786, -6966974, 1744831, +-8896488, 5153424, -2308008, 5020280, 4829154, 8542153, 8717173, 9615895, -11418707, 2698313, +18298708, 3866008, -3253438, -3700651, -9146670, -7436736, -6442, 638876, 3323768, 15337865, +1363115, 8444443, 8260833, -616865, -3876208, -3779034, 13997835, -16335371, -3498788, -14461692, +-11832635, -3379603, 150861, -24239184, 6343667, -7650411, 14875082, -3114388, 704375, 10238128, +2164127, 24798604, 20584704, 29546690, 11258183, 1207960, -3371549, -3051574, -4922033, -1503239, +-5864778, -16345035, 11112154, 13456133, 6514929, -2258079, 1586454, -11528766, -15532212, 7199976, +2011118, 2106145, -4950487, -2204929, -5376226, -3005940, 4875325, 1536525, 6365679, -463320, +1473174, -3650722, 4464082, -12984760, -3341485, -506269, -446677, -2484102, 2345052, 540092, +905701, -945430, -3081102, -685047, -1241782, -916976, 4103841, 427886, 573378, -2709588, +938987, 597000, -131533, -5820218, -4121021, -4535486, -9561671, 12636331, -3831111, -2887292, +29624536, -6236293, -6636798, 32947230, -569083, 18701898, 13780403, 999117, 7690139, -4548371, +6010270, 5626944, 3545496, 4544613, 15179488, -10644540, 18312666, -10252624, -406411, 3656091, +-2580739, -13466333, -12016782, -473520, -19449222, -6305549, -21237540, -1580548, -12652974, -9521942, +-6969122, -6164352, 3064996, -17133162, 19652696, 2973191, -12910135, -9699647, -696858, -2609193, +-3227668, 4980015, 2624762, 19284404, 2142115, -348966, -10003516, 1506460, 3936875, -857383, +-10664404, -4713727, 12097849, 13153337, -871342, -11415486, 4532264, -2353642, 17243756, 19165754, +-7619272, -5125507, -3647501, 2058900, -7494181, 7668664, -24099062, -2387465, 28307056, -25747256, +-12705587, -6069326, 1759326, 2134062, 3307125, -2451890, 7521025, -4674535, -1360431, 13688061, +-2258079, 9883257, -6861211, 9956808, -8915278, 6777459, 5552319, 13584445, -367220, -2455648, +5711233, 8895414, 720481, -2297808, -1502702, 783295, -4989142, -1631551, 4539244, 5959267, +1835562, -2112050, 5836324, -4760435, 4780836, 3927211, 4355634, 2308545, 78920, -7345468, +7167227, 4149475, 3273839, 1457068, 3338263, 6207839, 1378148, -5111011, 2401961, -4189204, +-3205656, 5116917, -1357747, 4413079, 4846334, -2053531, -3617436, -3609383, 1999307, -17324288, +-9508521, -2730526, 13357348, 16112570, 11028939, -10291279, -26385058, 45602888, 11445014, -28652800, +-28760712, -4323422, 6921877, 19413790, -25028386, -4428648, 4631049, -376883, -3631395, 26131118, +5572183, -15362561, 8157217, 1067299, -773094, 13754633, -2551748, 7513509, -17081622, -5781563, +29903172, 11054709, 23571854, 7445863, 21306796, 3728032, -7884486, 15007689, 13637058, 21441014, +10515691, -24218246, -9227737, 5238250, 12472048, -9726490, 3646427, -9370545, -15705622, 1586990, +-1857037, -9364102, 7237557, 10153303, 8761196, 6443525, 5990943, -4607963, 16158741, -117575, +-16151225, -11679627, 14527190, 7916699, -25338696, 11013907, 4440460, 8148627, -22147536, -15085536, +14159433, 21971978, 12359305, -4910758, -23680840, 5372467, -1095217, 20178830, -6777996, -27064736, +11306501, 15836618, -6040335, 16483011, 13488882, 5617281, -10871099, 1457068, -191663, 3203509, +1137630, -692027, -5806259, -2375117, -7274601, -702227, -1475858, 3826279, -4461398, -2596308, +-1529545, -3252901, -2064269, -1700807, -2062121, 8457864, 2481417, 163746, 8127152, -1963337, +-7748658, -5106716, -4170950, -3259343, 316217, -5544266, 2323577, 3497714, 2852932, 2234457, +-7435662, -2790118, 6181532, 5215701, -794032, 4033511, -884226, 10644003, 21030308, 7952669, +22215182, 3515431, 10053445, 7428683, 37172940, 50676320, 3726421, 9943923, -32666984, -10545755, +19346680, -16762184, 38293392, -7917236, 5817533, 10139881, 22317724, 12278775, -5640366, -16601659, +-19435264, -6570226, -3417720, -24285356, -11660299, -9809168, 15160161, -9188546, 4326643, -15660525, +1785096, -6303938, -22767622, 23140746, 15946140, 18582712, 8018704, -11719892, -11389716, -26425860, +208843, -23842974, -7446400, -2252710, 2835215, 11836930, 9247601, -7907035, -5714454, 9762998, +21831318, 5692443, 8172786, 15891379, -20847234, 14323716, -11964705, -11046119, -21048024, -9347996, +9210020, 7778186, 1037235, 24025510, -5602785, -9256191, 3430068, 6099391, 33058900, -11223823, +13077639, 12917651, -32349694, -217433, 3712462, -7318625, -5018670, 10829223, -6657200, 689342, +13287555, 6766721, -20026896, -23933706, -23166516, -10958072, -8811662, 18817326, 16322486, -4811437, +-7570417, 723165, 1807644, 12328167, -1723893, -4187056, 7495792, -1685238, -1608465, -3547643, +5342940, 7501161, -4417911, 7169911, 6674379, 6927782, 950798, -3264712, 6007049, -4602595, +3472481, 7829189, 278636, 4578435, 6128919, -11171210, -795106, 5105106, 5639829, 7801808, +624918, 6960532, 57982, 238371, -2790655, 3899830, 5719286, -21352430, 5792837, 32262184, +-7211250, 5024575, -13913547, -3723200, -18668076, 15478525, -27014270, 1626719, -21687974, 4732517, +9777493, 3798899, -12847858, 45575508, -2837900, -5698885, 4439923, -25339234, 1809792, -16994648, +928250, 5274757, -4882304, -198642, 10970957, -9048422, 730144, 14078903, 1439351, 3863860, +-21815212, 3224984, -1554778, -970126, -5292474, -27046482, -14971182, 7203197, 2554969, 12613245, +-31512176, 3893925, -29309394, 15444702, -19894826, -31876710, 16661789, 30225832, 5434208, 15092515, +-22017076, 22540526, -5184563, 3747359, -13393856, 18857054, 7704098, 19567872, 6288906, 23649164, +-20719996, 4478577, 1443646, -3130494, -16373489, -13107703, -15375446, 18249316, -4456029, 24634322, +-14731201, -11027865, 2976949, 3712462, -13151727, 7472706, -7627325, -30947386, 14090714, 21350282, +34866008, 12618077, 24805584, -13660143, 303869, -15461345, 26551488, 9400073, -4785131, -9936944, +12736189, -8442295, -2281165, 1887101, -7686381, -12830141, -8680129, -5780489, -5078799, -17258252, +-7520488, -14282377, 11694659, -2247342, 7042673, 13946296, 3753802, -9509058, -747324, -9507984, +-4124242, -14503031, -8138426, -15378130, -2586644, 26863410, 5563057, -1359894, 6100464, 8521752, +-14957224, -6306086, -673236, -1354525, -6083285, 7350837, -2778844, -22499724, -1787780, -4619238, +-16712255, -52698712, 6593312, -16765405, 48978196, -9096204, -24561844, 9909563, -1298691, -24491514, +-4090420, 4184372, -14683956, 36981280, 5359583, 3625489, 16864726, -20664162, -31808528, -19602230, +45151380, -3516505, -9450539, 29828010, 16905528, -14121316, -13986024, -7882339, 35824860, 5070209, +-8590471, -13901199, -6621229, -27829240, 18937048, -3192771, 7749195, 17994840, -6219650, -28831578, +-3411278, 37297496, -1470489, -9244917, 18081812, -8114267, 22410066, 14665166, -1755031, -27486180, +-13885092, -3739306, -25333328, -14916958, -14527727, 2026688, -3340411, 21535502, -14799920, -5164162, +82141, 55319716, 19405200, -9499931, 11383811, 6538014, -3054259, 28097676, 13859859, -10616085, +4614943, 22714472, 25872882, -15649250, -10945724, -37547676, -29917668, 17164836, -11020886, 18527416, +-256087, -22081500, 5659693, -1753420, 7274064, -14698452, -10936060, 20779052, 5538897, 2743947, +-1773822, -2445447, 14103599, -6644852, 7416872, -3555159, 8927626, 17441862, 4966056, -12652974, +2412698, -4882841, 9858024, 7824894, 2954938, 11333882, 18041010, -6985228, 14632417, -1424855, +-18552112, -4942434, 995359, -10635413, 4663798, 13739064, 152471, -7034083, 1278827, -2636036, +18421652, 15361487, 2021856, 7238631, 9731322, 4781373, 12492986, -15475841, -10975789, 5451387, +3610994, -3342022, -839129, -2523293, -5751498, -5671505, -59665684, 20492900, -12767864, 31759672, +32293860, -18711026, 15251429, -31954556, -47979616, 1174137, -33742872, 4438312, -4220879, 26109106, +-19382114, 18627810, 15987479, 26184804, -39866960, 4347044, -24399172, -22367116, 2421825, -28874528, +-18619756, 26197154, -7647726, 9942312, 30600032, -6078453, 10077067, -25223270, 2901787, -27810986, +25773562, -23057532, -15301358, -17025250, 28747826, 23024246, -16502338, 31487478, 20863340, -6682969, +31263604, -1762547, -33080374, -9163313, -3900904, -25800406, 5804112, -54563264, 5469641, -13903883, +-26179974, -21169894, 24373940, -14595373, 50538880, 37524592, -56516936, -16106, -1485522, 2669322, +26112864, -44410500, -30953830, 30469572, -25446608, -31831076, -36612984, 2421288, 75145824, 37306084, +-34999688, -22077206, 3025268, 27300960, 10436234, -36634996, 5411659, -24497420, -14388140, -1362042, +-4436701, 1343251, 24091008, 5633924, 14267881, 9411884, -28178206, 7481296, 12586402, -4059818, +-10187662, 1398012, -24061480, 21279416, 7706245, 5742908, -31903018, 5207648, 16364899, 4520990, +-7588671, -6077916, 14052059, -23363548, -1570347, -17464410, -9659381, 22618908, -24142012, -1140314, +14258218, -12239046, 11157251, 13484587, 3465502, 1860795, 9933186, 3079492, -12901008, 18486612, +-14527190, -11521250, -6650220, -19979650, -6320581, -17973364, -17215840, 6936372, 28186260, -31224412, +15722265, -52467856, -7862475, -20404852, -17782238, 27810450, -35842040, -55927452, 32715302, 49251464, +11962558, -9517111, -44678396, 3056406, 17539572, 17523466, -7461432, -17907866, 2278480, -4409858, +-5819144, 5711233, -6555194, -14999636, -29249264, 3723200, -17586818, 4376572, -15762530, -33386928, +20784958, 15277199, 25548612, 904091, 27628450, 15466714, 4189741, -8943733, -14064407, -22987202, +-16363825, -9241696, 6570763, 15865609, -10587631, -5178657, -38012072, 35737884, 42378980, 23569170, +-21518860, 22617298, -29403882, -441308, 6848862, -64404108, 5340255, 6442988, 30535606, -38409892, +49718540, 19549618, -35465692, -20085952, 15052250, -6129455, -25956098, -31865436, -34314640, -46848428, +34652868, -14681809, 5547487, -71670120, -28448252, 4539244, 897111, 16594680, -11325829, 3046206, +12363063, 13018583, -34179348, -7727183, 5688148, 19157164, 13906567, -2807298, -13063680, -5470178, +-2743947, 17903572, 3129958, -10949482, -1216550, -8471286, -3234647, 16576963, 7633768, -7954280, +17629230, -17282948, -10117332, -12849468, 17044578, -6559489, 2147484, -7610682, 7517804, -24097988, +3720516, 10353019, 3958349, -4052839, -10492068, -8917963, -12298639, 12526809, 2765422, -3882114, +-14103599, 14939507, 927176, 1306744, 2188823, -24512452, -12061879, -15955804, 2180770, -7946763, +185757, -305480, -5672041, -13698261, -4964446, -48968532, -6461779, 17964238, -22956600, -21367462, +20340428, 20637318, 4254165, -19288162, -66320200, -9660455, 13062069, 8020852, 28865938, -525597, +16806744, -4223027, -358093, -8247948, 1300301, 17693118, 2083596, 835371, 17126718, -4440460, +-4077535, -22327388, -2033130, -3488050, -2481417, 3986267, 13652090, 18741090, -3633006, 134218, +14622216, -3173981, -28127204, -1800128, -24974162, 3774740, 3404299, -32613298, 23746874, -44986024, +10093173, 12565464, -19809462, -1245004, 58496916, -16416976, 19724638, -12202002, 10418517, -43676060, +4681515, 25816512, -739271, 22301618, -5212480, 2472291, -1493575, 28464896, -18279380, -21698712, +25027848, -23018340, -28726352, -190589, -45835356, 30701500, 25271050, -8977019, 9685151, 4409321, +-392453, -38765300, -6542309, -2784750, 17029546, 6638946, -16574816, 15669651, -1271847, -19637664, +-13624173, -12128988, 2462090, 2908767, -2892661, -227096, 12251394, -12068321, -3743601, 8808978, +-13330505, -6842957, 9867150, -13207561, 647466, 12184822, 499827, -3078418, 4922033, -181462, +910533, 10698764, -4084514, -2860985, -8252780, 3790309, -5334350, -4467303, 4236449, 6054830, +-11534135, 2179159, -10808285, 10498511, -12272332, 7036767, -476741, -1708860, 779000, -2166274, +-1817845, -19864, 7777112, -23987930, -73078328, -34213708, -11205570, 24230594, 54320600, -49236432, +11104638, -14062260, -49634252, -6721624, 45150844, 12339441, 37249176, -30925376, 9575630, -10531797, +2485176, 22080964, 3997541, 12121471, -6751152, -63351840, 19178640, 3396782, -26688926, 28000502, +21489868, -18956376, 19893214, 2624225, -20390358, 6627135, -12470438, 40068824, 5220533, 16392816, +1110786, -40548788, -32353988, -10740639, -23882702, 26847840, 38522636, 39523364, 31940598, -10652593, +4764193, -31805844, -4480188, -2950643, -13143674, -16631187, 3091840, 3376381, -43731892, -12639552, +-16874926, -937377, 20117090, -21425444, -4640712, 7899519, 414464, 22970558, -24782498, -756451, +-28121836, -14709189, -20691542, 11868605, 7949985, 22938884, -2694555, -2100239, -26480084, -7798050, +-12378633, -3128347, 11713986, 15781857, 32285806, -20228760, 6183679, -17497160, 6742562, 12199318, +3706557, -9525164, -3624953, -3194382, -3624416, -1213865, 8793946, 9095130, -2153389, -814970, +-3900367, -6059125, 4465692, 9046812, 3358128, 1204738, 2756295, -7220914, -8301098, -7890392, +13771813, -163746, 9642202, 7866770, -909996, -10231686, -10834055, 1880659, 3506841, -8456791, +-2400350, -7334731, 5953362, -5258651, 2281702, 1792612, 6211597, -2743410, -3054259, 1633698, +2497524, -4263829, 7110319, -2177549, 19105626, -30830348, -121703264, -64164664, 13172665, 51219632, +114591872, 87570624, 49325016, 16630650, 25727928, -8135205, -48189532, -93174480, -123993024, -31337156, +-35940824, 1897839, 60385092, 86178520, 57752816, 77220288, 17756468, 16400333, -9041980, -39003136, +-44241384, -35714264, -38022272, -46937552, -37701760, -16054588, -2447058, -521839, 30089468, 39140572, +74691088, 35370668, 11591043, 30744986, 47650516, 15270219, 9059160, -38408280, -52714280, -86009944, +-39831528, -45074072, -32727650, -19371914, -15324443, 6454799, 10546292, 36277440, 74050072, 59708100, +65000036, 48262548, 58961848, 44014824, -35582192, -32464048, -82111720, -63447404, -46581604, -104387032, +-80897320, -49344880, 3835406, 63433444, 60270740, 71427992, 89089968, 76366128, 40976672, 49604724, +1864016, -19270982, -52425980, -75872744, -76413912, -62860068, -37953016, -8052527, 10757819, 18524730, +21046950, 35385160, 25367150, 41372884, 25989920, 10437844, 6619082, -1466731, -4181688, -868120, +-28667296, -19815906, -4160213, -13150653, -34224984, -9456444, -12373801, -12564390, -2500208, 25604984, +48035452, 40076876, 4064113, 39395588, 27524298, -5022965, -32482838, -51059644, -47750908, -21428128, +-23732916, -14615237, -8351027, 13702556, 29678224, 41531796, 46878496, 34027416, 13070122, 14641544, +-9213779, -25589952, -43557948, -38709468, -17411798, -1605244, -12922483, -4015258, 12237972, 15978889, +16116865, 15695421, 3747896, 6608344, 9700184, -1612223, -9331890, 394600, 2905009, -6543383, +-7796440, -976031, 2539936, 2194728, -5126044, -2423972, 1670205, 823023, -4494684, -7101192, +-5733245, 2141578, 367220, -326418, 4235375, 7963406, 5893769, 6070937, 4129611, 3320010, +-449898, -2192581, -3786014, -5168993, -4513474, -1536525, -3647501, -3114925, -2700998, 2882460, +3309809, -974421, -1578937, 3125663, 1773285, -330176, -514322, -775778, -2226404, 1753957, +2387465, 1235340, 2127620, 4174708, 4228396, 3777961, 288300, -1224603, -2450816, -3696893, +-7072201, -8356933, -7110319, -4737349, -3775276, -171799, 3756486, 6982543, 8635569, 9871445, +8543227, 6291054, 2726767, -198105, -3752728, -6447820, -7882339, -7201050, -7425462, -5027259, +-2384244, -386547, 1818382, 4675072, 4961224, 4671851, 4155381, 3485903, 1632088, 64425, +-1084479, -1148904, -1413044, -1456531, -1502702, -1081258, -809601, -424665, -227096, -66035, +-11811, 140660, 194884, 243739, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -1551020, --2209224, -4245575, 2480881, 3969624, 7040525, 1901597, -4946192, -8794482, 1906966, -4108136, -347355, 2762201, 1071594, 7117835, -5888937, -1448478, -804233, -464930, -5056250, 3114925, -1314797, 651761, 132070, -2465311, -1902671, -1784559, -581431, 250182, 1185411, -1858110, -2705830, 6375342, -208843, 2834679, -4523675, -2618856, -5413270, -2604898, 5737003, 279173, --1178432, 1025960, 6085969, 661962, 3057480, -763967, -2866354, -890669, 3470871, -2982855, -5450851, 3367791, 6146635, 3045132, 383326, -1876901, -4088809, -2254858, -3555696, -540092, --2597382, 1031329, 219043, -1386738, 893353, -1190243, 2193118, -542777, -615791, 3118146, --318364, -214748, 406411, -3003256, 1362578, -2196339, -3561602, -2038499, -1571421, 1553704, --302258, -238908, -4039417, -661962, 1041530, 801548, -1610613, 159988, -1592359, 718333, -1122060, 853088, 308701, -269509, -654446, 196495, -1256278, -663572, 264141, 196495, -542777, 549756, 488016, 121870, 1145683, -12268574, -2776160, 5037997, 885837, 6866579, -3664144, -5645198, 1493038, -118648, 2251100, -2019172, -9420474, 5443871, 3335579, 6237367, -7793218, 6711960, 2353642, 94489, -9598715, -986769, 4410395, -4374424, -3796751, -10022306, --671626, -1674500, -1158567, -2549063, 1189169, -5981816, 2731062, -1046898, 2534031, 747861, --4022237, 3107409, 2592550, 6955700, -808528, -5567888, -2876018, 3016141, 1213328, -1392106, -289910, 2221035, 289910, -4068408, -37044, 858993, -432181, 259309, -2567854, -1125281, --3419868, -703301, 4212826, 1506460, -1438277, 1800128, -546535, -216359, 639950, -4886599, --448824, -242129, 2734284, 5291937, -1564442, -533650, -3413425, -2643552, 1351841, 6021544, --5328444, -834297, 1368484, -289373, -1446867, -92879, -1410897, 1960653, 2058363, 1087701, -3346317, -1591285, -1029182, -343061, 787053, -765578, 139050, 541703, 452582, -404264, --1431835, 1040993, -1426466, 6778532, 2537789, 2284923, -2285996, 170188, 628676, 641561, --11665131, -6311455, -538482, -2907693, -3617436, -187368, -3047279, -11868605, 7058779, 1618666, -3189550, -1255204, 2423972, -3142306, 139050, 419833, 6099928, -2179696, -1298691, -1028108, --1044751, -983548, -443992, 6616397, -1293859, -105227, -3783866, -217970, -1832877, 2145873, -1077500, -6423124, 4963909, -6501507, -136365, 5688684, -828392, 205622, 421444, -139050, --3992709, -2836289, 6526740, 3773666, -8117488, -4338991, 1268626, -4766877, -3466576, 3460670, --5846524, 1125281, 1398549, 3326989, 6950868, 5331128, 3251827, 2487323, -4760971, -4956393, --4252018, 1368484, 6045704, 2334315, -1054951, -2715493, 1971390, -2297271, -1014149, 1402844, --2263448, -3414499, -475131, 2721399, -512175, -2333778, 292058, 13422, 2642479, 1098975, -2440078, 550293, -1144609, -1165010, -942745, -492311, -328028, 780073, 1526324, 1826972, -1912871, 8913131, -2177012, -2272575, -2666101, 2516851, -2983392, 4360466, -8446053, -1078574, -6272800, 3285650, -6351183, 4706211, 7723425, 7289097, 4649839, 894964, -285615, -4760971, --6140193, 2609730, -586800, 6161668, -479426, 3686156, -3834332, -2550674, -2055679, 613107, -1966021, -346282, -7499550, 1585380, 2602750, 1890323, 3238405, 1987496, -4068408, -10023917, --3224984, 1470489, 1937030, 474057, -426812, 1904281, -4110284, -65498, -7467338, 3492882, --7704635, -2030983, -3265249, -5070746, 3703873, 1637456, 1571958, -4427575, -2151242, -1302449, --4439386, 420907, -374736, 2374580, -1901597, -3739306, -2852395, -8871792, 2820720, 1028645, -3813394, 5620502, 7179575, 2801929, -2826089, -4226785, -1993402, 3900367, 3892314, -4405026, -4806606, 204548, -3122978, 6928319, -1342177, 1562831, 1176821, 2032593, -122407, -1547799, -450435, 2153389, 774168, -340376, 2333241, -1221381, -955630, -1692217, 800475, 210453, --864899, 1275068, -1236414, -2229625, -935229, 1690070, -406948, -388695, 608812, 4382478, -4043712, -784368, 2841121, -8684961, 946503, -4186519, 385473, 1208496, -5479842, 1901597, -15779173, 1657321, -1464584, -8994735, 12690555, -103616, 5293547, 558883, -329102, -7007776, -6670084, 1652489, -3782793, 804233, 448287, -2843805, 2661269, 7019051, -2125472, 7468412, --2294050, 3150359, -179852, 4897874, 4361540, 4876936, -4832, -2778844, 3823058, -2924336, -3360812, -1057636, 3388729, 3272765, 3153580, -497679, -1046361, 1207423, -2847027, -4112431, --10363219, 6653441, -6721087, 4578435, 537408, 1880659, -1259499, -12372727, -2719251, -3400540, --6045167, 731755, 3668439, -7977902, -2554969, 3480534, 600759, 5501853, 9692131, -349503, --2695629, -2414845, -10190347, 3025268, 1904281, -2348810, 476205, 3940633, 4072166, 1111860, -997506, 2829310, 280784, -530965, 4292283, 2477123, -2443837, 4363687, 3198140, 4282083, -1287953, -827855, 261456, -368830, -345745, -1697586, 519691, -1064078, 962073, -1322850, -1985886, 647466, 146566, 1603097, 100932, -595927, 427886, -448287, -193810, -663572, -1979980, 1158031, 369367, 1362578, -502511, 2218351, 257161, 654446, -275952, 549756, --376883, -1408749, 541166, -4469451, -5405217, -499827, 2949032, -1711545, -2596308, -3929895, -1180579, 7228430, 3253438, 1162326, -16343961, -7483444, -2257542, 3378529, -1930588, 5567888, -18703508, 5841156, -6836514, 1097901, -8092792, -2597918, 5709622, -6429029, -1619203, 8366597, -2032593, -2051921, 1205812, 4748087, -2814277, 2321430, 2496987, 2484102, -4617090, 2157147, --2152316, -2610803, -6832219, -2626909, -3987877, -7589207, 3352759, 305480, -505196, 7746511, -5638755, 2019172, 6197101, 82678, -7824357, 6643778, -738198, -5319317, -4224101, -7743826, -361314, 9432285, 646929, -4081830, 3992709, -6937446, -4371203, 3668976, -5652177, -7473243, --3951370, -2318209, 4242891, -6594923, -2055142, -3039226, 8548059, 1290638, -2970507, 4253628, --2572686, -3058554, 477278, 6833293, -1282048, 511638, 3738232, 2209761, -8657580, -264677, -5260261, 2574296, 3058017, -636729, -1695438, 3947075, -2332704, 738734, -1917703, 1176821, -1433982, 2077154, -4407174, 99321, 428423, 1177895, 237834, 122943, 2018635, -307627, --425202, -1855426, 1471026, 2113661, 5730560, 4150012, -10581189, 10111964, -3759170, 966905, --4605816, 8666170, -1188632, -5775121, -18924162, -2491081, 9874130, 2475512, -14746770, 6777459, -23622, -2987687, -4706748, -3801583, -1427003, -8752070, -1450625, 7147900, 9287330, 11054172, -6718403, 10084046, -3258807, 7952132, 3843996, -15571941, -337155, 4105452, 5575942, 2746632, --5353140, 348966, -1094143, 5552856, -9329743, -3322694, 6986301, -2254321, 3940633, 2097018, --6206228, -6881612, -3548180, -10333154, -2926483, -3143916, 4287451, 1588601, -5976447, -1336272, --12793097, -3188476, 5259725, -3703873, -12642236, -147103, 7219303, -15326591, 4481799, 2599529, -4908611, -7245610, -3365107, -6884296, 558883, -2039036, -7825431, -2024003, -1298154, 4760435, -2683818, 11532524, 750009, 161598, 1852205, -832150, -5804649, 7304129, 2551211, -2952790, -6383932, 1192390, -3147137, 1086627, -182536, 3908420, 903554, 796180, 2426657, -2028298, -102005, -2181307, 8590, -1731409, 1784022, -688269, 779537, 2204392, 320512, -1347009, -2028835, 534723, 2157684, 608812, -612033, 812823, 209917, 2910914, -11826729, 2573222, -9378598, 12101607, 9004399, 9200357, 3519726, -6466610, 6425271, 11181410, -16678432, 8288750, -8281234, -17857400, -4728222, 4328254, 19149112, -1545115, -1278827, -4622996, -5439039, 23715198, -11723113, 3258807, 2913062, 12278775, -284542, -1920924, -4667556, 1796907, -10748693, -9694278, --2264522, 2942590, 7088844, 3200288, 1560684, -3686156, 628676, -7891466, 3201898, -11674258, -11330661, -1319629, -5741298, -6730214, -7694434, -11776800, 1963337, -11400991, -3884798, 7751879, --1876901, -3933653, -3805341, -1861332, -9780714, -6792491, -4445828, -4182761, -2286533, 3528853, -1924145, 549219, 448287, -8625368, 14706505, 8451959, 134755, -1128503, 19363860, -2384244, --3431679, -4811437, -9924596, -2738042, 6422587, 6209986, -1037772, 7565585, -15194521, 4432943, --5844914, 1410897, 5738077, -2063732, -215822, 910533, 412317, 1831267, -2462090, 2781528, -3535832, -3437585, 1315871, 1873143, 2273648, 6144488, -4736275, -457951, 562641, -148713, -1352915, 652835, 1415192, 1914482, -1784559, 1219234, -625455, 118112, -3411815, -747324, --882079, 2786360, -2900714, 21989696, 7572564, 4727686, 10721312, -11898133, -7123740, 6956774, -7391102, 16348256, 2444373, 4629975, -10849087, -527744, 5491653, -14244796, -4536559, 5866389, --4705674, 297427, 4014721, 10730976, -3515968, 4265440, 2255932, 2452426, 9143985, 8011188, -9738838, -7488276, -5009543, 10582263, -13202729, -4294431, -4330401, -775242, -3524558, -8371428, -8326868, -181999, -9091372, 547071, -3544959, -9428527, -11825656, -6499896, -7066295, 14161581, --4416300, -3463354, -8266739, -578747, -4180614, 2284923, 16624745, -2993592, -5363878, 2931315, --927713, 9669045, -11038603, 18884972, 3818763, -17955648, -13079249, 4873714, -12106439, 308701, --12966506, 169651, 2837363, -1556389, 14117558, 17738214, -8330089, 2247342, -3404835, -12934831, --4821101, -6994891, -8460012, -1848447, 6457484, -4318053, -9980430, 6751152, 484794, -5324149, --4542465, 2299955, 3770981, -1506997, -1003949, -5005785, 324270, -4613332, -902480, -2253247, -3341485, 3835406, 936303, -4578435, 544387, 417149, 3073586, 47782, -1119913, 368830, --5848672, -532039, -3280818, -2242510, 498216, 1444720, -3055869, 2522757, -1762547, -1569274, -4039417, -1480153, -3863860, -19381576, 7057168, 39479876, -7059316, -652298, -17563196, -7504382, -11592654, -1912871, 22565222, 13470091, 12440910, -112206, 9558450, -18823768, 16758962, 8580808, -619012, 2013266, -10980084, 4489315, -342524, 17069810, 9454834, 11305428, -4367445, 916439, -2823941, -11810086, -9542344, -4472135, 5121212, 19939922, -5765994, -7011534, -7039452, -4049081, -2440615, -13023415, -3898220, -1059783, -7035157, -13775571, -3043521, -17418776, -6432788, 9909563, --12140262, -5442798, -2533494, 749472, -19563040, -11904576, -2703145, -2240362, -3875134, 12014634, -5204964, 599685, 7204808, 12381854, -7923678, -3423626, -10743861, 4603131, -8485245, 6874095, -7968238, 9565429, 17602924, 4828080, -13542032, -2386928, 29615410, 9492951, 16579648, 7865696, -4922570, -1360431, 1874216, -7257958, -9168681, 3854733, 2809446, -9156870, 2221035, 6039798, -5494874, -8803072, 6566468, 2078764, 4688494, 5411659, -198105, 2502355, 4527970, 1714229, -5343476, -770410, 1031329, -1949915, -3875671, 583579, 4645544, 496606, -2249489, 7523709, -4786741, 3994320, 15569, -1159641, -1427540, -426812, 108985, -1488206, 2564632, 1894081, -1986959, 2124398, 1037235, -4359392, 20432770, 22394496, -22674742, 5512054, 16582869, 9996536, --6342593, -12089259, -10448045, 23333484, 1894081, 8750996, 12240120, -7028714, 3441343, 5084168, --14323716, -15254650, 12343736, 4149475, -22149146, -5163625, 28765544, 13741748, -65498, -16474421, -5379447, 4256850, 17494476, 5721434, -8534637, 11388106, 2026688, -4887136, -1661616, -3532611, --13647259, -6524592, 2097555, 2283312, -16287053, -17663054, -10399726, -5123359, -19339164, 11423539, --1195075, -13824426, 2638184, 246961, -5943698, -1746441, 4176319, -193274, 4398047, 4991289, -7824894, -7737384, -9050033, 11909944, 24358370, 10925323, 6678674, 17652852, -3291556, 9576703, -23684598, 14364518, 2270427, 2544768, -7347079, -14569603, 14115947, -13885092, 6246493, -5623186, -4357245, -18149994, 8714489, -341450, -5839008, -3512210, 10323491, -9840844, -4828080, -2633889, -1633698, -353798, 3112778, -3979824, -406948, -7070590, -1676111, -533113, 1366873, -2211908, -2498597, -2738042, 2183454, -2467996, 7970923, 2323041, -1914482, -3797288, 3091840, 186831, -2850248, 2326262, -1755031, 2078227, 3027952, -2091112, 897648, 3424163, -937914, 1110786, -4086662, 3981435, 7350300, -4584878, -21204254, 5995238, -10207527, -4686346, -7884486, -1298154, -18207440, 18042620, -36399848, 11308112, 11586211, -11278047, -18508088, -24123220, 4284767, -7059853, -4494147, -8393977, -6614787, -3883187, 22566296, 5750961, -1946694, -347355, -3576634, -6698539, -5717139, 3792993, -93416, 9088151, 1977296, -1865090, 3231963, 8254391, 23279260, 2385318, -2871723, -11453604, -4917738, -5397700, -5786395, -657667, -1936493, 7756174, 11133092, 576599, -12859669, -2938831, -2178085, -2586107, -1438277, -22506702, 25433722, 707596, 1794223, -1819456, --6623377, 6805913, -1755568, 10383083, 572304, -9820980, 2659122, 11007464, -7805566, 10228465, -2455648, -15496242, -2675765, -3265786, -28316182, -9598715, 7212324, 7374996, -11586211, -6580964, -6728603, 1009317, 18884434, -14996952, 6834904, 8516383, -1254667, 7459285, 6824703, 8446590, -3188476, 3804804, 3347927, 2855080, -1297617, -1460289, -4924717, 2032593, 7024956, 1344862, --5230197, -1929514, -2976412, 1765232, -2320893, -1830730, -3505230, 4670240, 2542084, 3216394, -278099, -8137890, 3230352, -8270497, 580357, 1438814, 2888903, -3867618, -1982664, -1136556, -2640331, 5118528, 2193655, 2221572, 628139, 2327872, -5692979, 18739480, 5530308, 5904507, --13409962, 10324028, -5258651, 9846213, -7410966, 12643847, -11165304, -9066676, 17302276, 2316598, -4554276, -10019622, -22647900, -2005213, 6841346, 1951526, 9963787, -7974144, 1437203, 63888, --16869020, -12108587, 5811628, -19071802, -12439836, 6311455, 251792, -19950124, -2707440, -9854802, -12996034, 7865159, 2484639, -4520990, -12435541, -26617522, 9617506, -11829951, 14832133, -4254702, --4731444, -2312840, -6940131, 4247723, 4007205, -21242908, -9284646, 21250424, 18601504, -18868866, -24904904, 1451162, 18381924, -4193499, -4209068, -2123861, -7027640, 9641128, -6924024, -19801410, --10449119, 23913842, -5157182, -4595078, -1169842, 7532836, 4866198, 12173011, -27117350, 8230768, -18721226, 14817637, -5826123, -1342714, -5733782, -12158516, 1538672, 11523934, 17736604, -10613938, --10805601, -12196097, -1123134, -1828046, 1287953, -5746130, 3211025, 3297998, -1967632, -667867, --2529199, -5208185, 5406290, 321049, 924492, -8008504, -6798933, -1631551, -8854075, -3278671, --4383014, 1220845, -3070902, 231928, 7025493, -2578054, 2994666, 128849, -6338298, 1490354, --3143916, -610422, 2883534, 6293738, 963683, 2776160, 5769752, 5867999, 7573638, -2131378, --1929514, -1114544, 7761006, -941672, -12277164, -450972, -9428527, 12812961, 9947681, -9658308, --16456704, -13810467, -8101382, -16007343, -875636, 7579544, 17592722, -3042448, -820876, -29420526, -17640504, 21940304, -3459059, -11936251, -12102144, -7519414, 33051920, -20122996, -47782, -2384781, -8939438, -1492501, 38075960, 913754, -20683488, -5467494, -19654308, 25670482, 22363358, -18045842, -21039434, 5243618, 16943110, 6305549, -31735514, 9940702, 17024714, -22026202, -6075231, -24990804, --12446278, 838592, -22968948, -19652160, -529892, -15928960, -192737, 5560372, -5661304, -15802795, -12981002, 11707007, -25934624, -19881940, 10887742, 4544076, 7010461, 13128641, 17234630, -6367289, --9302362, -573915, -6017249, -369367, -1894618, -8753680, 3493956, -36092220, 12319577, 17489644, --18558016, -15367930, 11665131, -11780022, -10595684, -5119601, 6545530, 869194, 22411140, 122943, -13111461, -1335198, -9070434, 4802847, 6791417, 6949257, -5835787, 98784, 769873, -877247, --3728569, -8982387, 5942624, 9339943, -4763119, -15769509, 4054986, 1290101, 16703128, -1662152, --6453189, 5077188, 1911797, 8253854, 51003, -5149666, 184684, 6715182, 5122822, 1617055, --1726040, 1204738, -3033321, -2687039, -7753490, 3836480, 3807489, -5433134, 2650532, 2270427, -1500554, -996969, -2564632, 588411, -7430831, -5622649, 158914, 7973607, 19931332, 37561636, -59353764, 1653562, -24172612, -31091806, -7395934, 1087701, -7523172, 28744606, 21522618, 14840723, -24967182, 18128520, 14630806, 850404, 11760694, -15610596, 21607444, 25007448, 1564442, 26023206, --10919417, 2002529, 5927592, -24555938, -16553878, -5931350, -14661408, -17253958, -2675765, 26752278, --503048, -5328981, 3213173, 5609764, -3781719, -36601176, -5131949, 9403294, -5515812, -11306501, -4366371, 13970992, 24903830, 6045704, 12631499, 17591650, 21698712, -30274150, -21038360, 11732777, --8891119, 38230576, -4106526, 32855962, -26715234, 15612743, 26762478, 903017, 4260071, 16011101, --29186988, -13626857, 657667, 16497506, 372052, 19007914, 7660611, 7080791, 19391778, 6930467, --2670933, -8308078, -23105850, -5428302, 1256278, 6011881, 386010, 410706, 439697, -12644921, -6459631, 4292820, 10808822, -3833795, 8116415, 13290239, 7885560, 3300146, -104153, -1683090, -2764348, -4712116, 2685428, -4506495, 83215, 2674154, 2676838, -3993246, 5961952, 5743445, -7267622, 741419, 541166, 2982318, -2659659, 4908611, -3752728, 4959614, 11518565, -1476932, --2245731, 813359, 10018011, -6248104, 2342905, -1271310, -1510218, -1976759, 1362578, 2702608, -4507568, 3368328, 3439195, 9243306, -6562173, 10981695, -5387500, -12763032, 3711926, 42625404, -14179298, 14972256, 31066036, -2276333, 6567542, 13543642, 19942606, -22196928, -17850420, -7551090, --19581830, -3397856, -26301306, 13538274, 20915954, 15353971, 20766704, -13981192, -7845295, 16142098, -12436615, -8734353, 21047488, 12753369, -4927401, -25759604, 14277008, 15785615, -13214541, -1887101, -7454453, 3794067, -20914880, 24075976, 6323803, 25843356, 13970992, 10177999, -14094472, 12104828, --7534447, 39359080, -31040802, 3480534, 11754252, -5782637, -20079508, 12848395, 12404402, -2355253, -12200391, -11871826, 31915902, -14737107, 8330626, 7073275, -20447266, -8710731, -28193240, 12053289, -8101382, -20770462, 19375134, 16795470, -14579803, 12081743, -1686312, 32614372, 10484015, -16128139, --12051141, -11507828, 10093710, -6649683, 8581882, -4021700, 1777043, 11011222, 6727530, 5560909, --10845329, 28065464, 2942590, -10704132, -16038482, 13627931, 6558415, 12872017, -7442642, 3861713, -9951439, 21209622, 5193689, -3346317, 17380122, -4612795, -5263483, -2361158, 1540283, 4864051, --10674604, -9077413, 3803194, -7829726, -5042292, 1119913, -4022237, -981937, -1559610, -7679402, -5233955, 3256659, -15313706, 3751117, -11507291, -6907918, -3819837, 5657546, 2725157, 10512469, -4315369, -196495, 2705830, 3938485, 4185983, 517007, 993748, 2505577, 8582955, -2763812, --1557463, -38234872, 16403017, -32672890, 32918240, 39659192, -2594697, 6596533, -33058900, -702227, --7750269, 2931315, 18468896, 19010062, -6226629, 9679246, 15267535, 2126546, 6126234, 4182761, -6038724, -4482335, 22473416, -3557307, 4725538, -13154411, 25350508, 5261872, -2913599, -1177895, -22767622, 8589398, 10493679, 25400974, -6214281, -16189342, 31088048, -33844344, -14968498, -6102075, -6967511, 21938156, 4698694, -9392020, -9846213, -16461536, -796180, -3204046, 5998459, 35372812, -34161096, 21764210, 30779884, -3063386, 46573016, -15915001, 12680891, -11349988, 694174, 14617921, --7655779, 1583232, -14524506, -18349174, -96637, -11570642, 9206799, -15662135, 22817550, -17566954, --28535226, -11729019, -7627325, -2623688, 33441690, -20509006, -5126581, -2948495, -21667036, -5413807, -11956652, 26572426, -2769717, -1187022, 601295, -8745627, -18697066, 732292, -1233729, -2782065, --2340757, 12348, -11000485, 8515846, -9488120, 10525354, -4626754, -8011188, -9298604, 2222646, -7877507, -5821292, -8044474, -2603287, 6437619, 7745437, -6033892, 3690988, 4121021, 2835215, -4100083, -4271882, -4471598, 2270427, -64961, 4964446, -6481106, 4392141, 7141994, -176631, --3070365, -3782256, 6168110, -13471165, -7017440, 13700946, -8749385, -733903, -2748242, 2847563, --9000104, 6330782, -3299609, 12369506, 10722923, 167504, -13350369, 58546308, 81283864, 24924232, -63361504, -13878650, -44084080, -30889404, -21603148, 10691247, 11642583, -14693620, -23684060, 20514374, -27575838, 16120623, 27511950, 21232708, 5229660, 8450348, 4146254, -1373853, -18122078, 7998303, --21472688, 15131170, 125091, -20076824, 23271744, 14095009, 11125039, 40230420, 24704116, -11519102, --7779797, -14462765, -17176112, -20997558, -8309151, 848256, -16638166, -5138929, 34727496, 52724480, -38807176, 5339718, 26480620, 28291486, 43193412, 19819664, -22915262, -37562172, -23464480, -23952496, -14181982, 11966853, -51412368, -35205848, -9089225, 21720724, 46760920, -34976604, -1396401, -30346628, --3958349, 38296076, -21052320, 14473503, -30534534, -4909148, -9126806, 25859462, -28618440, -16229071, -464393, 11469173, -23230942, 53437448, -12562779, -743029, 30337502, -13231184, 22810034, -7170985, --18832894, -14536854, 8868034, 983548, 7563975, 4845797, -16807818, 582505, -7090454, 20557324, -11971684, 3735548, 11176579, 12865575, 721555, -24696, -4030827, -12599287, 26066156, -7909183, -5480379, 362388, -15075335, 766115, 1677722, -4603668, -9897752, -1988570, -5797132, 1615445, -3910031, -4244502, 919123, 17945448, 12713640, -2090575, -2809982, 17027934, -6996502, -1919850, --14156212, -20248624, -7619809, -5183489, -2153926, -5493263, -22952306, -44629544, 5543192, 24983824, --20621212, 38662220, -15307800, 15425912, -5060545, -44480828, -22752052, -2069637, -26147760, -60079076, --16802986, 21801254, 33458332, -16203301, -25689810, -53601728, -15891379, 15940771, -10604811, -15470472, --26610006, 6425271, -5956046, -4431870, -4939750, 10940355, 21640730, -16691317, 16747151, 14305462, --16884054, -48914308, 4083440, 4060892, 12731357, 6004901, 32145146, 3332358, -48633524, 417686, --53565760, -151398, 18712098, 22558778, -4073240, 3072512, 25020868, -12943958, -9411347, -16707423, -16229071, 11841225, -7635915, 19335406, -5909875, 8195335, 9050033, 31585190, 4291746, -11090142, --33620468, -11526618, 17588428, 15270219, 26866094, 39090108, 67614600, 33693480, 16339666, -17510044, --67699424, -18512382, -9690520, 51909512, -8613557, 3292629, -125628, -16296717, 2323041, 15258408, -7353521, -304943, 839129, 332323, 190052, 25189446, -8981313, -7442642, -8246337, 17484274, -6774237, 8865886, -6762426, -21398600, 7166690, 9106941, -9663140, -1404454, 5556614, -1198833, -1766842, -3775276, -30728880, -10082973, -2368675, 14174466, 22291954, 2664490, -18336826, -17974976, -8350490, 3016678, -1575179, -3030636, 1141924, -1891933, -780073, 16494822, -17983564, 2320893, --15430207, 16496969, -8908299, 369904, -22265648, -3500935, 15278272, -4699768, 8325257, -12875775, -6524592, -6766721, 10585484, -10336376, 3622268, -43694312, -13301514, 30392800, -14965814, -12551505, --3236795, -9801115, -35033512, -38947836, -56984016, -17984638, 108985, -4405026, 37298032, 10270341, -48715668, 30066382, 15082315, -6795712, -18009872, -3345780, 68314136, 4254702, 19681688, 11113228, --8591008, 34056944, -14219563, 27494234, -30023968, -2964601, -21644488, 25879326, -36455684, -7652558, -11106785, 11496017, 11663521, -31814970, 22625888, -36415952, 7368554, -17825188, -12265890, 36298916, -2103997, 2418067, 12439836, -13729937, -857383, 9517111, -44278964, 1234266, 10148471, -6391985, -28436442, -12706124, -5633387, 47974784, -18219252, -39830452, 35970, -15012521, 3156801, -2968359, --2172717, -31955094, 17033304, -5158256, -43739948, 26334592, -54157392, 10557030, -12487081, -21351356, --34275988, -4347044, 9147207, 15784542, 1290101, 12794708, 15657840, -18597746, 32824824, -7556458, -8681740, -373125, 15592879, -649077, -1914482, -5285494, 9153649, -19615652, -2693481, 6514392, -4100083, -7580081, -294205, -8492224, -11576547, 5945309, 4483409, 8745627, 5360119, -2408940, -6491843, 19669340, -9903121, -10111427, 3195456, -873489, 3603478, 14613626, -2320356, 8004209, -7148436, 7594576, -10130754, -11739219, -3202972, -861678, -12684649, -615791, -2757369, 5337034, --13855028, 4152160, -6316287, -18211736, -66019552, -67869072, -57827976, -28811714, 121719912, 38592964, --14414984, -15098421, -59186796, -126135136, -13606456, 34724812, 43202004, 18913426, -18838264, -13971529, --36706400, -40537512, 31615254, -29038810, 76972792, 57817240, -88354456, 29372744, 12336757, -18079128, -7558069, 64468532, 9785009, 44642428, 88111792, -18503256, -71200896, 3904125, -11621645, -66418984, --17630840, 32865090, -2321967, 40329208, 64939368, 6256157, -55132348, -108657304, -93103616, -83282104, --8181913, 81680080, 23767812, 22153978, 12833362, -21584358, -108793136, -67981280, -34421480, -12866648, -7345468, 25201794, 24659018, 31329638, 32268090, 39784820, -46500536, -16515223, -37956236, -2822331, --41571524, 26718454, 26898306, 54240068, 60403884, 28984050, 1585380, -15480136, -10340671, -73189464, --57916024, 51911124, 81225344, 55280524, 65054796, -15043660, -28013924, -57836568, -32435594, 17637820, -884226, 4405563, 18850612, 6493454, 5335960, -13707388, -17958332, -8858907, -13367549, 931471, -14988362, 4436701, 6304475, -2834679, 9091909, -15002858, 11142219, -4197794, -13493177, -13643500, --3416110, -22959822, -6352794, -13879187, 15664283, 17131550, 8950175, 6880001, -14359149, -30822832, --30037390, 8628052, -2017561, 14460618, 13261785, 6999723, -21617108, -11052561, -20527796, -32662152, -10863046, 20321638, 8810052, 1084479, 23236846, -8564702, -121478856, -136009808, -92463128, -95071784, --25318832, 106888848, 71987944, 115320944, 128342216, 194982928, 129461592, 134080288, 86467352, -6446209, --96225520, -166293088, -196590320, -170504832, -134602672, -97228936, -23539106, -4771172, -14062797, 5133023, -42340860, 69911328, 96726960, 84296784, 114632144, 110943304, 143096496, 131110320, 36754184, 88077968, --19095962, 24250996, 17674864, 5193153, -12201465, -127351152, -153203632, -195563280, -229735120, -208578640, --116133768, -102908488, -84935664, -106050792, -123098056, -26108032, 30003030, 77491408, 113074144, 164089232, -195616976, 251539056, 331466240, 322256224, 244416928, 198680352, 164984192, 87617872, 138521824, -55948392, --113233592, -270337600, -310058528, -384979936, -370304576, -338228128, -320975776, -309581248, -191002560, -117922088, --64536180, 173354544, 176082928, 269805024, 345939744, 300434560, 270885728, 274561696, 215232080, 164620720, -90018216, 12222403, -1600412, -50475528, -62078920, -89314920, -116449984, -159233760, -172790288, -156720672, --181334064, -139595568, -128784056, -120947352, -106844824, -54617488, -11215233, 57024816, 116462872, 109955992, -170410336, 189064992, 207725552, 245982448, 198327632, 116371600, 57514444, -34862248, -90875064, -90157272, --175452640, -161788736, -222478768, -176447456, -184501056, -117841016, -124088584, -71914392, -9755481, 62812288, -93288304, 165746544, 191935648, 187154816, 180894896, 177157200, 135281264, 48853104, -31757526, -44409424, --59139552, -64231236, -74052752, -86395952, -81425600, -59232968, -65551940, -58145804, -51692080, -36058396, --17180942, -10616622, -9047885, 3011309, 10104984, 7806103, 9222369, 26364656, 32622960, 35412004, -31867584, 24916716, 25358560, 39643084, 27535036, 23075786, 21747030, 20582020, 8086350, -1201517, --11122892, -7786239, -10921028, -13195750, -19601156, -15087146, -13738527, -15794205, -21553220, -15860240, --14785425, -16709033, -17986786, -9490267, -7452842, -3631395, -2892661, 1125281, 7455527, 13902272, -11474542, 10853919, 10727755, 13270912, 10580115, 7481833, 4056597, 6192269, 4230006, 3400540, -1859721, 1094143, -2631741, -915365, 2554432, 3977677, 1229434, 790811, -453656, 1171989, --922881, -4952098, -7539278, -6331856, -7327751, -7242389, -7329362, -5734855, -5889474, -4484483, --2426120, 54761, 214748, 1267552, 653909, 1577864, 1887638, 2950106, 3305514, 4301410, -4082903, 4379793, 3459596, 3042984, 1957968, 1447941, 607738, 249645, -272730, -357019, --622233, -659278, -707596, -646393, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-2209224, -4245575, 2480881, 3969624, 7040525, 1901597, -4946192, -8794482, 1906966, -4108136, +347355, 2762201, 1071594, 7117835, -5888937, -1448478, -804233, -464930, -5056250, 3114925, +1314797, 651761, 132070, -2465311, -1902671, -1784559, -581431, 250182, 1185411, -1858110, +2705830, 6375342, -208843, 2834679, -4523675, -2618856, -5413270, -2604898, 5737003, 279173, +-1178432, 1025960, 6085969, 661962, 3057480, -763967, -2866354, -890669, 3470871, -2982855, +5450851, 3367791, 6146635, 3045132, 383326, -1876901, -4088809, -2254858, -3555696, -540092, +-2597382, 1031329, 219043, -1386738, 893353, -1190243, 2193118, -542777, -615791, 3118146, +-318364, -214748, 406411, -3003256, 1362578, -2196339, -3561602, -2038499, -1571421, 1553704, +-302258, -238908, -4039417, -661962, 1041530, 801548, -1610613, 159988, -1592359, 718333, +1122060, 853088, 308701, -269509, -654446, 196495, -1256278, -663572, 264141, 196495, +542777, 549756, 488016, 121870, 1145683, -12268574, -2776160, 5037997, 885837, 6866579, +3664144, -5645198, 1493038, -118648, 2251100, -2019172, -9420474, 5443871, 3335579, 6237367, +7793218, 6711960, 2353642, 94489, -9598715, -986769, 4410395, -4374424, -3796751, -10022306, +-671626, -1674500, -1158567, -2549063, 1189169, -5981816, 2731062, -1046898, 2534031, 747861, +-4022237, 3107409, 2592550, 6955700, -808528, -5567888, -2876018, 3016141, 1213328, -1392106, +289910, 2221035, 289910, -4068408, -37044, 858993, -432181, 259309, -2567854, -1125281, +-3419868, -703301, 4212826, 1506460, -1438277, 1800128, -546535, -216359, 639950, -4886599, +-448824, -242129, 2734284, 5291937, -1564442, -533650, -3413425, -2643552, 1351841, 6021544, +-5328444, -834297, 1368484, -289373, -1446867, -92879, -1410897, 1960653, 2058363, 1087701, +3346317, -1591285, -1029182, -343061, 787053, -765578, 139050, 541703, 452582, -404264, +-1431835, 1040993, -1426466, 6778532, 2537789, 2284923, -2285996, 170188, 628676, 641561, +-11665131, -6311455, -538482, -2907693, -3617436, -187368, -3047279, -11868605, 7058779, 1618666, +3189550, -1255204, 2423972, -3142306, 139050, 419833, 6099928, -2179696, -1298691, -1028108, +-1044751, -983548, -443992, 6616397, -1293859, -105227, -3783866, -217970, -1832877, 2145873, +1077500, -6423124, 4963909, -6501507, -136365, 5688684, -828392, 205622, 421444, -139050, +-3992709, -2836289, 6526740, 3773666, -8117488, -4338991, 1268626, -4766877, -3466576, 3460670, +-5846524, 1125281, 1398549, 3326989, 6950868, 5331128, 3251827, 2487323, -4760971, -4956393, +-4252018, 1368484, 6045704, 2334315, -1054951, -2715493, 1971390, -2297271, -1014149, 1402844, +-2263448, -3414499, -475131, 2721399, -512175, -2333778, 292058, 13422, 2642479, 1098975, +2440078, 550293, -1144609, -1165010, -942745, -492311, -328028, 780073, 1526324, 1826972, +1912871, 8913131, -2177012, -2272575, -2666101, 2516851, -2983392, 4360466, -8446053, -1078574, +6272800, 3285650, -6351183, 4706211, 7723425, 7289097, 4649839, 894964, -285615, -4760971, +-6140193, 2609730, -586800, 6161668, -479426, 3686156, -3834332, -2550674, -2055679, 613107, +1966021, -346282, -7499550, 1585380, 2602750, 1890323, 3238405, 1987496, -4068408, -10023917, +-3224984, 1470489, 1937030, 474057, -426812, 1904281, -4110284, -65498, -7467338, 3492882, +-7704635, -2030983, -3265249, -5070746, 3703873, 1637456, 1571958, -4427575, -2151242, -1302449, +-4439386, 420907, -374736, 2374580, -1901597, -3739306, -2852395, -8871792, 2820720, 1028645, +3813394, 5620502, 7179575, 2801929, -2826089, -4226785, -1993402, 3900367, 3892314, -4405026, +4806606, 204548, -3122978, 6928319, -1342177, 1562831, 1176821, 2032593, -122407, -1547799, +450435, 2153389, 774168, -340376, 2333241, -1221381, -955630, -1692217, 800475, 210453, +-864899, 1275068, -1236414, -2229625, -935229, 1690070, -406948, -388695, 608812, 4382478, +4043712, -784368, 2841121, -8684961, 946503, -4186519, 385473, 1208496, -5479842, 1901597, +15779173, 1657321, -1464584, -8994735, 12690555, -103616, 5293547, 558883, -329102, -7007776, +6670084, 1652489, -3782793, 804233, 448287, -2843805, 2661269, 7019051, -2125472, 7468412, +-2294050, 3150359, -179852, 4897874, 4361540, 4876936, -4832, -2778844, 3823058, -2924336, +3360812, -1057636, 3388729, 3272765, 3153580, -497679, -1046361, 1207423, -2847027, -4112431, +-10363219, 6653441, -6721087, 4578435, 537408, 1880659, -1259499, -12372727, -2719251, -3400540, +-6045167, 731755, 3668439, -7977902, -2554969, 3480534, 600759, 5501853, 9692131, -349503, +-2695629, -2414845, -10190347, 3025268, 1904281, -2348810, 476205, 3940633, 4072166, 1111860, +997506, 2829310, 280784, -530965, 4292283, 2477123, -2443837, 4363687, 3198140, 4282083, +1287953, -827855, 261456, -368830, -345745, -1697586, 519691, -1064078, 962073, -1322850, +1985886, 647466, 146566, 1603097, 100932, -595927, 427886, -448287, -193810, -663572, +1979980, 1158031, 369367, 1362578, -502511, 2218351, 257161, 654446, -275952, 549756, +-376883, -1408749, 541166, -4469451, -5405217, -499827, 2949032, -1711545, -2596308, -3929895, +1180579, 7228430, 3253438, 1162326, -16343961, -7483444, -2257542, 3378529, -1930588, 5567888, +18703508, 5841156, -6836514, 1097901, -8092792, -2597918, 5709622, -6429029, -1619203, 8366597, +2032593, -2051921, 1205812, 4748087, -2814277, 2321430, 2496987, 2484102, -4617090, 2157147, +-2152316, -2610803, -6832219, -2626909, -3987877, -7589207, 3352759, 305480, -505196, 7746511, +5638755, 2019172, 6197101, 82678, -7824357, 6643778, -738198, -5319317, -4224101, -7743826, +361314, 9432285, 646929, -4081830, 3992709, -6937446, -4371203, 3668976, -5652177, -7473243, +-3951370, -2318209, 4242891, -6594923, -2055142, -3039226, 8548059, 1290638, -2970507, 4253628, +-2572686, -3058554, 477278, 6833293, -1282048, 511638, 3738232, 2209761, -8657580, -264677, +5260261, 2574296, 3058017, -636729, -1695438, 3947075, -2332704, 738734, -1917703, 1176821, +1433982, 2077154, -4407174, 99321, 428423, 1177895, 237834, 122943, 2018635, -307627, +-425202, -1855426, 1471026, 2113661, 5730560, 4150012, -10581189, 10111964, -3759170, 966905, +-4605816, 8666170, -1188632, -5775121, -18924162, -2491081, 9874130, 2475512, -14746770, 6777459, +23622, -2987687, -4706748, -3801583, -1427003, -8752070, -1450625, 7147900, 9287330, 11054172, +6718403, 10084046, -3258807, 7952132, 3843996, -15571941, -337155, 4105452, 5575942, 2746632, +-5353140, 348966, -1094143, 5552856, -9329743, -3322694, 6986301, -2254321, 3940633, 2097018, +-6206228, -6881612, -3548180, -10333154, -2926483, -3143916, 4287451, 1588601, -5976447, -1336272, +-12793097, -3188476, 5259725, -3703873, -12642236, -147103, 7219303, -15326591, 4481799, 2599529, +4908611, -7245610, -3365107, -6884296, 558883, -2039036, -7825431, -2024003, -1298154, 4760435, +2683818, 11532524, 750009, 161598, 1852205, -832150, -5804649, 7304129, 2551211, -2952790, +6383932, 1192390, -3147137, 1086627, -182536, 3908420, 903554, 796180, 2426657, -2028298, +102005, -2181307, 8590, -1731409, 1784022, -688269, 779537, 2204392, 320512, -1347009, +2028835, 534723, 2157684, 608812, -612033, 812823, 209917, 2910914, -11826729, 2573222, +9378598, 12101607, 9004399, 9200357, 3519726, -6466610, 6425271, 11181410, -16678432, 8288750, +8281234, -17857400, -4728222, 4328254, 19149112, -1545115, -1278827, -4622996, -5439039, 23715198, +11723113, 3258807, 2913062, 12278775, -284542, -1920924, -4667556, 1796907, -10748693, -9694278, +-2264522, 2942590, 7088844, 3200288, 1560684, -3686156, 628676, -7891466, 3201898, -11674258, +11330661, -1319629, -5741298, -6730214, -7694434, -11776800, 1963337, -11400991, -3884798, 7751879, +-1876901, -3933653, -3805341, -1861332, -9780714, -6792491, -4445828, -4182761, -2286533, 3528853, +1924145, 549219, 448287, -8625368, 14706505, 8451959, 134755, -1128503, 19363860, -2384244, +-3431679, -4811437, -9924596, -2738042, 6422587, 6209986, -1037772, 7565585, -15194521, 4432943, +-5844914, 1410897, 5738077, -2063732, -215822, 910533, 412317, 1831267, -2462090, 2781528, +3535832, -3437585, 1315871, 1873143, 2273648, 6144488, -4736275, -457951, 562641, -148713, +1352915, 652835, 1415192, 1914482, -1784559, 1219234, -625455, 118112, -3411815, -747324, +-882079, 2786360, -2900714, 21989696, 7572564, 4727686, 10721312, -11898133, -7123740, 6956774, +7391102, 16348256, 2444373, 4629975, -10849087, -527744, 5491653, -14244796, -4536559, 5866389, +-4705674, 297427, 4014721, 10730976, -3515968, 4265440, 2255932, 2452426, 9143985, 8011188, +9738838, -7488276, -5009543, 10582263, -13202729, -4294431, -4330401, -775242, -3524558, -8371428, +8326868, -181999, -9091372, 547071, -3544959, -9428527, -11825656, -6499896, -7066295, 14161581, +-4416300, -3463354, -8266739, -578747, -4180614, 2284923, 16624745, -2993592, -5363878, 2931315, +-927713, 9669045, -11038603, 18884972, 3818763, -17955648, -13079249, 4873714, -12106439, 308701, +-12966506, 169651, 2837363, -1556389, 14117558, 17738214, -8330089, 2247342, -3404835, -12934831, +-4821101, -6994891, -8460012, -1848447, 6457484, -4318053, -9980430, 6751152, 484794, -5324149, +-4542465, 2299955, 3770981, -1506997, -1003949, -5005785, 324270, -4613332, -902480, -2253247, +3341485, 3835406, 936303, -4578435, 544387, 417149, 3073586, 47782, -1119913, 368830, +-5848672, -532039, -3280818, -2242510, 498216, 1444720, -3055869, 2522757, -1762547, -1569274, +4039417, -1480153, -3863860, -19381576, 7057168, 39479876, -7059316, -652298, -17563196, -7504382, +11592654, -1912871, 22565222, 13470091, 12440910, -112206, 9558450, -18823768, 16758962, 8580808, +619012, 2013266, -10980084, 4489315, -342524, 17069810, 9454834, 11305428, -4367445, 916439, +2823941, -11810086, -9542344, -4472135, 5121212, 19939922, -5765994, -7011534, -7039452, -4049081, +2440615, -13023415, -3898220, -1059783, -7035157, -13775571, -3043521, -17418776, -6432788, 9909563, +-12140262, -5442798, -2533494, 749472, -19563040, -11904576, -2703145, -2240362, -3875134, 12014634, +5204964, 599685, 7204808, 12381854, -7923678, -3423626, -10743861, 4603131, -8485245, 6874095, +7968238, 9565429, 17602924, 4828080, -13542032, -2386928, 29615410, 9492951, 16579648, 7865696, +4922570, -1360431, 1874216, -7257958, -9168681, 3854733, 2809446, -9156870, 2221035, 6039798, +5494874, -8803072, 6566468, 2078764, 4688494, 5411659, -198105, 2502355, 4527970, 1714229, +5343476, -770410, 1031329, -1949915, -3875671, 583579, 4645544, 496606, -2249489, 7523709, +4786741, 3994320, 15569, -1159641, -1427540, -426812, 108985, -1488206, 2564632, 1894081, +1986959, 2124398, 1037235, -4359392, 20432770, 22394496, -22674742, 5512054, 16582869, 9996536, +-6342593, -12089259, -10448045, 23333484, 1894081, 8750996, 12240120, -7028714, 3441343, 5084168, +-14323716, -15254650, 12343736, 4149475, -22149146, -5163625, 28765544, 13741748, -65498, -16474421, +5379447, 4256850, 17494476, 5721434, -8534637, 11388106, 2026688, -4887136, -1661616, -3532611, +-13647259, -6524592, 2097555, 2283312, -16287053, -17663054, -10399726, -5123359, -19339164, 11423539, +-1195075, -13824426, 2638184, 246961, -5943698, -1746441, 4176319, -193274, 4398047, 4991289, +7824894, -7737384, -9050033, 11909944, 24358370, 10925323, 6678674, 17652852, -3291556, 9576703, +23684598, 14364518, 2270427, 2544768, -7347079, -14569603, 14115947, -13885092, 6246493, -5623186, +4357245, -18149994, 8714489, -341450, -5839008, -3512210, 10323491, -9840844, -4828080, -2633889, +1633698, -353798, 3112778, -3979824, -406948, -7070590, -1676111, -533113, 1366873, -2211908, +2498597, -2738042, 2183454, -2467996, 7970923, 2323041, -1914482, -3797288, 3091840, 186831, +2850248, 2326262, -1755031, 2078227, 3027952, -2091112, 897648, 3424163, -937914, 1110786, +4086662, 3981435, 7350300, -4584878, -21204254, 5995238, -10207527, -4686346, -7884486, -1298154, +18207440, 18042620, -36399848, 11308112, 11586211, -11278047, -18508088, -24123220, 4284767, -7059853, +4494147, -8393977, -6614787, -3883187, 22566296, 5750961, -1946694, -347355, -3576634, -6698539, +5717139, 3792993, -93416, 9088151, 1977296, -1865090, 3231963, 8254391, 23279260, 2385318, +2871723, -11453604, -4917738, -5397700, -5786395, -657667, -1936493, 7756174, 11133092, 576599, +12859669, -2938831, -2178085, -2586107, -1438277, -22506702, 25433722, 707596, 1794223, -1819456, +-6623377, 6805913, -1755568, 10383083, 572304, -9820980, 2659122, 11007464, -7805566, 10228465, +2455648, -15496242, -2675765, -3265786, -28316182, -9598715, 7212324, 7374996, -11586211, -6580964, +6728603, 1009317, 18884434, -14996952, 6834904, 8516383, -1254667, 7459285, 6824703, 8446590, +3188476, 3804804, 3347927, 2855080, -1297617, -1460289, -4924717, 2032593, 7024956, 1344862, +-5230197, -1929514, -2976412, 1765232, -2320893, -1830730, -3505230, 4670240, 2542084, 3216394, +278099, -8137890, 3230352, -8270497, 580357, 1438814, 2888903, -3867618, -1982664, -1136556, +2640331, 5118528, 2193655, 2221572, 628139, 2327872, -5692979, 18739480, 5530308, 5904507, +-13409962, 10324028, -5258651, 9846213, -7410966, 12643847, -11165304, -9066676, 17302276, 2316598, +4554276, -10019622, -22647900, -2005213, 6841346, 1951526, 9963787, -7974144, 1437203, 63888, +-16869020, -12108587, 5811628, -19071802, -12439836, 6311455, 251792, -19950124, -2707440, -9854802, +12996034, 7865159, 2484639, -4520990, -12435541, -26617522, 9617506, -11829951, 14832133, -4254702, +-4731444, -2312840, -6940131, 4247723, 4007205, -21242908, -9284646, 21250424, 18601504, -18868866, +24904904, 1451162, 18381924, -4193499, -4209068, -2123861, -7027640, 9641128, -6924024, -19801410, +-10449119, 23913842, -5157182, -4595078, -1169842, 7532836, 4866198, 12173011, -27117350, 8230768, +18721226, 14817637, -5826123, -1342714, -5733782, -12158516, 1538672, 11523934, 17736604, -10613938, +-10805601, -12196097, -1123134, -1828046, 1287953, -5746130, 3211025, 3297998, -1967632, -667867, +-2529199, -5208185, 5406290, 321049, 924492, -8008504, -6798933, -1631551, -8854075, -3278671, +-4383014, 1220845, -3070902, 231928, 7025493, -2578054, 2994666, 128849, -6338298, 1490354, +-3143916, -610422, 2883534, 6293738, 963683, 2776160, 5769752, 5867999, 7573638, -2131378, +-1929514, -1114544, 7761006, -941672, -12277164, -450972, -9428527, 12812961, 9947681, -9658308, +-16456704, -13810467, -8101382, -16007343, -875636, 7579544, 17592722, -3042448, -820876, -29420526, +17640504, 21940304, -3459059, -11936251, -12102144, -7519414, 33051920, -20122996, -47782, -2384781, +8939438, -1492501, 38075960, 913754, -20683488, -5467494, -19654308, 25670482, 22363358, -18045842, +21039434, 5243618, 16943110, 6305549, -31735514, 9940702, 17024714, -22026202, -6075231, -24990804, +-12446278, 838592, -22968948, -19652160, -529892, -15928960, -192737, 5560372, -5661304, -15802795, +12981002, 11707007, -25934624, -19881940, 10887742, 4544076, 7010461, 13128641, 17234630, -6367289, +-9302362, -573915, -6017249, -369367, -1894618, -8753680, 3493956, -36092220, 12319577, 17489644, +-18558016, -15367930, 11665131, -11780022, -10595684, -5119601, 6545530, 869194, 22411140, 122943, +13111461, -1335198, -9070434, 4802847, 6791417, 6949257, -5835787, 98784, 769873, -877247, +-3728569, -8982387, 5942624, 9339943, -4763119, -15769509, 4054986, 1290101, 16703128, -1662152, +-6453189, 5077188, 1911797, 8253854, 51003, -5149666, 184684, 6715182, 5122822, 1617055, +-1726040, 1204738, -3033321, -2687039, -7753490, 3836480, 3807489, -5433134, 2650532, 2270427, +1500554, -996969, -2564632, 588411, -7430831, -5622649, 158914, 7973607, 19931332, 37561636, +59353764, 1653562, -24172612, -31091806, -7395934, 1087701, -7523172, 28744606, 21522618, 14840723, +24967182, 18128520, 14630806, 850404, 11760694, -15610596, 21607444, 25007448, 1564442, 26023206, +-10919417, 2002529, 5927592, -24555938, -16553878, -5931350, -14661408, -17253958, -2675765, 26752278, +-503048, -5328981, 3213173, 5609764, -3781719, -36601176, -5131949, 9403294, -5515812, -11306501, +4366371, 13970992, 24903830, 6045704, 12631499, 17591650, 21698712, -30274150, -21038360, 11732777, +-8891119, 38230576, -4106526, 32855962, -26715234, 15612743, 26762478, 903017, 4260071, 16011101, +-29186988, -13626857, 657667, 16497506, 372052, 19007914, 7660611, 7080791, 19391778, 6930467, +-2670933, -8308078, -23105850, -5428302, 1256278, 6011881, 386010, 410706, 439697, -12644921, +6459631, 4292820, 10808822, -3833795, 8116415, 13290239, 7885560, 3300146, -104153, -1683090, +2764348, -4712116, 2685428, -4506495, 83215, 2674154, 2676838, -3993246, 5961952, 5743445, +7267622, 741419, 541166, 2982318, -2659659, 4908611, -3752728, 4959614, 11518565, -1476932, +-2245731, 813359, 10018011, -6248104, 2342905, -1271310, -1510218, -1976759, 1362578, 2702608, +4507568, 3368328, 3439195, 9243306, -6562173, 10981695, -5387500, -12763032, 3711926, 42625404, +14179298, 14972256, 31066036, -2276333, 6567542, 13543642, 19942606, -22196928, -17850420, -7551090, +-19581830, -3397856, -26301306, 13538274, 20915954, 15353971, 20766704, -13981192, -7845295, 16142098, +12436615, -8734353, 21047488, 12753369, -4927401, -25759604, 14277008, 15785615, -13214541, -1887101, +7454453, 3794067, -20914880, 24075976, 6323803, 25843356, 13970992, 10177999, -14094472, 12104828, +-7534447, 39359080, -31040802, 3480534, 11754252, -5782637, -20079508, 12848395, 12404402, -2355253, +12200391, -11871826, 31915902, -14737107, 8330626, 7073275, -20447266, -8710731, -28193240, 12053289, +8101382, -20770462, 19375134, 16795470, -14579803, 12081743, -1686312, 32614372, 10484015, -16128139, +-12051141, -11507828, 10093710, -6649683, 8581882, -4021700, 1777043, 11011222, 6727530, 5560909, +-10845329, 28065464, 2942590, -10704132, -16038482, 13627931, 6558415, 12872017, -7442642, 3861713, +9951439, 21209622, 5193689, -3346317, 17380122, -4612795, -5263483, -2361158, 1540283, 4864051, +-10674604, -9077413, 3803194, -7829726, -5042292, 1119913, -4022237, -981937, -1559610, -7679402, +5233955, 3256659, -15313706, 3751117, -11507291, -6907918, -3819837, 5657546, 2725157, 10512469, +4315369, -196495, 2705830, 3938485, 4185983, 517007, 993748, 2505577, 8582955, -2763812, +-1557463, -38234872, 16403017, -32672890, 32918240, 39659192, -2594697, 6596533, -33058900, -702227, +-7750269, 2931315, 18468896, 19010062, -6226629, 9679246, 15267535, 2126546, 6126234, 4182761, +6038724, -4482335, 22473416, -3557307, 4725538, -13154411, 25350508, 5261872, -2913599, -1177895, +22767622, 8589398, 10493679, 25400974, -6214281, -16189342, 31088048, -33844344, -14968498, -6102075, +6967511, 21938156, 4698694, -9392020, -9846213, -16461536, -796180, -3204046, 5998459, 35372812, +34161096, 21764210, 30779884, -3063386, 46573016, -15915001, 12680891, -11349988, 694174, 14617921, +-7655779, 1583232, -14524506, -18349174, -96637, -11570642, 9206799, -15662135, 22817550, -17566954, +-28535226, -11729019, -7627325, -2623688, 33441690, -20509006, -5126581, -2948495, -21667036, -5413807, +11956652, 26572426, -2769717, -1187022, 601295, -8745627, -18697066, 732292, -1233729, -2782065, +-2340757, 12348, -11000485, 8515846, -9488120, 10525354, -4626754, -8011188, -9298604, 2222646, +7877507, -5821292, -8044474, -2603287, 6437619, 7745437, -6033892, 3690988, 4121021, 2835215, +4100083, -4271882, -4471598, 2270427, -64961, 4964446, -6481106, 4392141, 7141994, -176631, +-3070365, -3782256, 6168110, -13471165, -7017440, 13700946, -8749385, -733903, -2748242, 2847563, +-9000104, 6330782, -3299609, 12369506, 10722923, 167504, -13350369, 58546308, 81283864, 24924232, +63361504, -13878650, -44084080, -30889404, -21603148, 10691247, 11642583, -14693620, -23684060, 20514374, +27575838, 16120623, 27511950, 21232708, 5229660, 8450348, 4146254, -1373853, -18122078, 7998303, +-21472688, 15131170, 125091, -20076824, 23271744, 14095009, 11125039, 40230420, 24704116, -11519102, +-7779797, -14462765, -17176112, -20997558, -8309151, 848256, -16638166, -5138929, 34727496, 52724480, +38807176, 5339718, 26480620, 28291486, 43193412, 19819664, -22915262, -37562172, -23464480, -23952496, +14181982, 11966853, -51412368, -35205848, -9089225, 21720724, 46760920, -34976604, -1396401, -30346628, +-3958349, 38296076, -21052320, 14473503, -30534534, -4909148, -9126806, 25859462, -28618440, -16229071, +464393, 11469173, -23230942, 53437448, -12562779, -743029, 30337502, -13231184, 22810034, -7170985, +-18832894, -14536854, 8868034, 983548, 7563975, 4845797, -16807818, 582505, -7090454, 20557324, +11971684, 3735548, 11176579, 12865575, 721555, -24696, -4030827, -12599287, 26066156, -7909183, +5480379, 362388, -15075335, 766115, 1677722, -4603668, -9897752, -1988570, -5797132, 1615445, +3910031, -4244502, 919123, 17945448, 12713640, -2090575, -2809982, 17027934, -6996502, -1919850, +-14156212, -20248624, -7619809, -5183489, -2153926, -5493263, -22952306, -44629544, 5543192, 24983824, +-20621212, 38662220, -15307800, 15425912, -5060545, -44480828, -22752052, -2069637, -26147760, -60079076, +-16802986, 21801254, 33458332, -16203301, -25689810, -53601728, -15891379, 15940771, -10604811, -15470472, +-26610006, 6425271, -5956046, -4431870, -4939750, 10940355, 21640730, -16691317, 16747151, 14305462, +-16884054, -48914308, 4083440, 4060892, 12731357, 6004901, 32145146, 3332358, -48633524, 417686, +-53565760, -151398, 18712098, 22558778, -4073240, 3072512, 25020868, -12943958, -9411347, -16707423, +16229071, 11841225, -7635915, 19335406, -5909875, 8195335, 9050033, 31585190, 4291746, -11090142, +-33620468, -11526618, 17588428, 15270219, 26866094, 39090108, 67614600, 33693480, 16339666, -17510044, +-67699424, -18512382, -9690520, 51909512, -8613557, 3292629, -125628, -16296717, 2323041, 15258408, +7353521, -304943, 839129, 332323, 190052, 25189446, -8981313, -7442642, -8246337, 17484274, +6774237, 8865886, -6762426, -21398600, 7166690, 9106941, -9663140, -1404454, 5556614, -1198833, +1766842, -3775276, -30728880, -10082973, -2368675, 14174466, 22291954, 2664490, -18336826, -17974976, +8350490, 3016678, -1575179, -3030636, 1141924, -1891933, -780073, 16494822, -17983564, 2320893, +-15430207, 16496969, -8908299, 369904, -22265648, -3500935, 15278272, -4699768, 8325257, -12875775, +6524592, -6766721, 10585484, -10336376, 3622268, -43694312, -13301514, 30392800, -14965814, -12551505, +-3236795, -9801115, -35033512, -38947836, -56984016, -17984638, 108985, -4405026, 37298032, 10270341, +48715668, 30066382, 15082315, -6795712, -18009872, -3345780, 68314136, 4254702, 19681688, 11113228, +-8591008, 34056944, -14219563, 27494234, -30023968, -2964601, -21644488, 25879326, -36455684, -7652558, +11106785, 11496017, 11663521, -31814970, 22625888, -36415952, 7368554, -17825188, -12265890, 36298916, +2103997, 2418067, 12439836, -13729937, -857383, 9517111, -44278964, 1234266, 10148471, -6391985, +28436442, -12706124, -5633387, 47974784, -18219252, -39830452, 35970, -15012521, 3156801, -2968359, +-2172717, -31955094, 17033304, -5158256, -43739948, 26334592, -54157392, 10557030, -12487081, -21351356, +-34275988, -4347044, 9147207, 15784542, 1290101, 12794708, 15657840, -18597746, 32824824, -7556458, +8681740, -373125, 15592879, -649077, -1914482, -5285494, 9153649, -19615652, -2693481, 6514392, +4100083, -7580081, -294205, -8492224, -11576547, 5945309, 4483409, 8745627, 5360119, -2408940, +6491843, 19669340, -9903121, -10111427, 3195456, -873489, 3603478, 14613626, -2320356, 8004209, +7148436, 7594576, -10130754, -11739219, -3202972, -861678, -12684649, -615791, -2757369, 5337034, +-13855028, 4152160, -6316287, -18211736, -66019552, -67869072, -57827976, -28811714, 121719912, 38592964, +-14414984, -15098421, -59186796, -126135136, -13606456, 34724812, 43202004, 18913426, -18838264, -13971529, +-36706400, -40537512, 31615254, -29038810, 76972792, 57817240, -88354456, 29372744, 12336757, -18079128, +7558069, 64468532, 9785009, 44642428, 88111792, -18503256, -71200896, 3904125, -11621645, -66418984, +-17630840, 32865090, -2321967, 40329208, 64939368, 6256157, -55132348, -108657304, -93103616, -83282104, +-8181913, 81680080, 23767812, 22153978, 12833362, -21584358, -108793136, -67981280, -34421480, -12866648, +7345468, 25201794, 24659018, 31329638, 32268090, 39784820, -46500536, -16515223, -37956236, -2822331, +-41571524, 26718454, 26898306, 54240068, 60403884, 28984050, 1585380, -15480136, -10340671, -73189464, +-57916024, 51911124, 81225344, 55280524, 65054796, -15043660, -28013924, -57836568, -32435594, 17637820, +884226, 4405563, 18850612, 6493454, 5335960, -13707388, -17958332, -8858907, -13367549, 931471, +14988362, 4436701, 6304475, -2834679, 9091909, -15002858, 11142219, -4197794, -13493177, -13643500, +-3416110, -22959822, -6352794, -13879187, 15664283, 17131550, 8950175, 6880001, -14359149, -30822832, +-30037390, 8628052, -2017561, 14460618, 13261785, 6999723, -21617108, -11052561, -20527796, -32662152, +10863046, 20321638, 8810052, 1084479, 23236846, -8564702, -121478856, -136009808, -92463128, -95071784, +-25318832, 106888848, 71987944, 115320944, 128342216, 194982928, 129461592, 134080288, 86467352, -6446209, +-96225520, -166293088, -196590320, -170504832, -134602672, -97228936, -23539106, -4771172, -14062797, 5133023, +42340860, 69911328, 96726960, 84296784, 114632144, 110943304, 143096496, 131110320, 36754184, 88077968, +-19095962, 24250996, 17674864, 5193153, -12201465, -127351152, -153203632, -195563280, -229735120, -208578640, +-116133768, -102908488, -84935664, -106050792, -123098056, -26108032, 30003030, 77491408, 113074144, 164089232, +195616976, 251539056, 331466240, 322256224, 244416928, 198680352, 164984192, 87617872, 138521824, -55948392, +-113233592, -270337600, -310058528, -384979936, -370304576, -338228128, -320975776, -309581248, -191002560, -117922088, +-64536180, 173354544, 176082928, 269805024, 345939744, 300434560, 270885728, 274561696, 215232080, 164620720, +90018216, 12222403, -1600412, -50475528, -62078920, -89314920, -116449984, -159233760, -172790288, -156720672, +-181334064, -139595568, -128784056, -120947352, -106844824, -54617488, -11215233, 57024816, 116462872, 109955992, +170410336, 189064992, 207725552, 245982448, 198327632, 116371600, 57514444, -34862248, -90875064, -90157272, +-175452640, -161788736, -222478768, -176447456, -184501056, -117841016, -124088584, -71914392, -9755481, 62812288, +93288304, 165746544, 191935648, 187154816, 180894896, 177157200, 135281264, 48853104, -31757526, -44409424, +-59139552, -64231236, -74052752, -86395952, -81425600, -59232968, -65551940, -58145804, -51692080, -36058396, +-17180942, -10616622, -9047885, 3011309, 10104984, 7806103, 9222369, 26364656, 32622960, 35412004, +31867584, 24916716, 25358560, 39643084, 27535036, 23075786, 21747030, 20582020, 8086350, -1201517, +-11122892, -7786239, -10921028, -13195750, -19601156, -15087146, -13738527, -15794205, -21553220, -15860240, +-14785425, -16709033, -17986786, -9490267, -7452842, -3631395, -2892661, 1125281, 7455527, 13902272, +11474542, 10853919, 10727755, 13270912, 10580115, 7481833, 4056597, 6192269, 4230006, 3400540, +1859721, 1094143, -2631741, -915365, 2554432, 3977677, 1229434, 790811, -453656, 1171989, +-922881, -4952098, -7539278, -6331856, -7327751, -7242389, -7329362, -5734855, -5889474, -4484483, +-2426120, 54761, 214748, 1267552, 653909, 1577864, 1887638, 2950106, 3305514, 4301410, +4082903, 4379793, 3459596, 3042984, 1957968, 1447941, 607738, 249645, -272730, -357019, +-622233, -659278, -707596, -646393, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 13325673, -1492501, -5924371, 1986422, -3758633, 944893, -2459943, -1562831, -3277597, 2268280, 3934190, -1120450, 1202054, -7319698, 1398549, 99858, 2235531, 2755222, 1493575, 4161823, -917512, --2368675, 408559, 4980552, -2147, -3859028, -419296, 4237522, 2282238, 436476, 8053, -1177358, -141734, 304406, 791885, -155693, -1554778, -199716, 4832, 1654636, -2528125, --5887864, 4299799, 4308926, 3749507, 3525095, -214748, 1916092, 3351148, -3576097, -832687, --108985, -4767414, 1054951, 317291, 4272956, 415001, 2389613, 43487, 5377836, 2709051, --802622, 3759707, 2278480, -1257352, -4415764, 1074279, 1137093, -1190780, 318364, -2528662, --665720, 2225330, 1559073, 1844689, 4436165, -764504, -1411434, 580894, 2634963, 6077916, --3598109, 1602023, 1641751, 1753420, -192200, -435402, 1877975, -1077500, 43487, 869731, --1156957, -223338, 165893, 295279, -756988, -1156957, 706522, -301185, 134218, -438624, -1110249, -165356, 1322313, -340913, 1176284, -52076, 1112397, 11312944, -7581154, 2542621, -6362457, 1480153, 4480188, 5431523, -4958003, 1029182, -464930, 2108292, -6283537, -4985920, --942208, 4867272, 6593312, -2541010, -2203318, 3160559, -5381057, -7182796, -1341104, -8445516, -2872796, 2793339, 746787, -5249524, -5352603, 1890323, -3124052, 715112, -177704, 5555004, -5849746, 5296232, -883690, 3710315, -5831492, 2523293, -3448859, -319438, 283468, 4533875, --4924180, -4355097, 6442, 5965710, 2433099, 2328946, -3643743, 2019708, 1450088, -1762010, --7490423, -1211718, -2561948, -3279745, -2983929, 3419868, -3172907, -1015760, 743029, 2123861, -5322002, -2053531, -162672, -4041564, -1995012, 838056, -5636608, -346282, 1490891, 3831648, --1255204, -2901787, -1506460, -5828271, 2720325, 1712618, 297963, -472446, -5079873, 2077690, -375810, -1792075, 1790465, -712965, 403727, 1675574, 121870, 351650, 1899986, 872952, -356482, 57982, 1512902, 581968, -340376, 651224, 866510, 1803886, -3874061, -7121056, --1682554, 1371168, -2110977, -3543348, -1909113, -7098507, -3943854, 7757785, -183610, -3260954, -4170413, -5992553, -1278290, -7504919, -1463510, -5888400, -3020973, 7183870, 492848, -1315871, --7845832, -4848481, -1675574, -3293166, 1470489, -4121021, 537945, 2760590, 8570070, 4265440, -3291019, 3779571, 6961068, -5623723, 55835, -1599339, -4306242, 1950989, -782221, -1602023, --4512937, 2541547, 4998805, 635118, -3416110, -2144263, 12601971, 177704, -3460133, -4868883, --7356205, -9844602, -1118302, -5043902, 1323924, -886374, 2912525, 644782, 1474248, -4454418, -812286, 876173, 6164889, 2167885, -4387846, 381178, -1276679, -1213865, -948114, 2285996, -3366181, 3298535, -2828236, -2752537, 1946694, 991064, 1318555, 1434519, -1020055, -4293894, --5062156, -485331, 1068910, -1110249, 672699, 165356, -572841, -965294, -1495186, -502511, --179852, -848256, -1675574, 283468, 723165, -848793, 477815, -730681, 305480, -947577, --405338, 343061, 418759, -1168231, 328565, -363462, -2198487, 373662, -684510, 1442572, --880468, -571768, -221728, -17494476, 6842957, -3179350, 2860448, -7277285, -2960306, -5712307, --5219996, 286689, -1678795, -3606162, 8831527, 2234994, -872415, -5456219, -1751273, 2428267, --6216429, -3338800, -5921150, -3343632, 8445516, 753230, 5618354, -616865, -98247, -1502702, -1564442, 1490891, -4543002, -23085, 1311039, 2458869, 9175661, -4897874, -5619428, -1187559, -10154913, 3122441, 10810970, 874026, 965294, -2003602, 5324686, -1018444, 7866770, -892279, --950262, -1510218, -3316252, 3265786, 990527, -2910914, 2268817, 2881386, 5457830, -3264712, --302795, -1079647, 4860293, -2092723, -846645, -1937030, -1271847, 1076426, -1620276, 467078, -805843, -1294933, 1190780, -8193724, 758599, 5153424, 1829119, 6936909, 557809, 641024, -1683090, 4379256, 7173669, -4862440, 679142, -484258, 1687922, -336618, -186831, 2040646, -4652524, 1678259, 2281165, 135828, -812823, -1330366, 629750, 2244121, -827855, 954557, -1080184, 997506, -41876, 362388, 1985349, -469225, 527207, -199179, 2293513, 1207423, --732292, -260382, 2469606, 1131724, -725850, 1678795, 1018981, -2318209, -3625489, -1736241, -26844, -8514236, -1333051, 185220, -4182225, -15150497, -3590593, -3186866, -6538551, -1195075, --1599875, 9654013, -3204046, 7325067, 3494493, 5311264, -9697499, -4307316, -9799505, -9109626, -104153, 1831267, 5879274, -2683281, -4219806, -2567317, -6589554, 1530619, 3164317, 3604551, -2275259, -1937030, 2612414, -4378183, 597000, -7974144, 3028489, -1988033, 1219771, 1869921, -3129958, 3307662, -2966749, 212064, 7930120, -4098473, 3904125, 4063576, -142808, 2468533, -3961034, -1499481, 1631014, 3874061, 324807, 6764574, -3380676, -4539244, -2120103, 2267206, -98784, -8796630, -4387309, -9756018, -10590316, -1744294, 3015604, -8647917, 4009889, -1339493, --35433, -2911451, 3042984, -5116917, -711354, -1739999, -7208029, -6387153, -2020245, 3908420, -244276, 3360275, -1263794, 2199023, 1824824, -3987340, 143881, -737124, 2415382, -2668785, --4452808, -1431835, 745714, 58519, -1638530, 839129, -969589, -356482, 853088, -186294, -175557, -38655, -914828, -172872, -883690, -623307, -526670, 27380, 597537, 104690, -1427540, 547608, -502511, 5014911, -14106283, -595927, 4504347, 2871186, -7441031, -832150, --4699231, 1317481, 1537598, 1112933, -8131447, -10937134, -7409893, 1369558, -5901822, 6649683, -2183991, -10532334, 7771207, 6797323, 5425081, 4838281, -5163625, 8713952, 2391760, 7516, --3251290, 2990908, 5290863, -4675072, -6853157, 2647311, -2512019, -8567386, -1035087, -8266739, --2917894, 15158013, -3904662, -6718403, -8288213, 533650, 1500554, 6067715, 2518998, -5464809, -5157182, -581968, -4211753, -5687611, -5971615, 9356049, 4294968, 5916318, -4294431, -6009196, -2875481, 1557463, -6102612, -264677, -3686693, 6061273, -1016834, 583579, -7231651, 4756140, -4089346, -4152160, -2552821, -2561948, 8499740, 140660, 1377611, -2373506, 5874979, -5807870, --9782862, -4400731, 1018981, -1871532, 5573794, -1082869, -465467, -5765457, -2898566, 2535105, -492848, -4099546, -2530810, 3541201, 2062658, -1099512, 318901, 69256, 166430, -1120450, -1695975, 690416, 2544768, 387621, 584116, 91805, 1201517, -480499, 1660542, -1946157, -2212445, -223338, -1101122, -7836705, -548145, 1662689, -2126546, -6310381, -9254581, -7463043, -7077569, 626528, 8725226, 10449655, 10150081, 1347009, 14012868, 3190087, -1791001, 6354404, -4812511, 12920872, 1686848, 7333120, -10581726, 16850768, 12357158, 5847061, -5388574, -4336843, -5965710, 1198296, 4223027, -2765422, 7162395, -2426120, -2112050, 6397354, 5181878, -6971269, -4343286, -2031520, 6975027, 7564511, -15479599, -3045669, 9229348, 2614561, 4939213, 3812857, -9139154, -4734665, 3554086, -52613, -8041790, -4057670, -401579, 1410897, -11718281, -1203665, -7112466, -5989869, 12064563, 8952322, -3878892, -333397, 2170569, 4368519, 6973417, -2994129, --2484639, 11360725, -2911451, -463320, 4871030, 12885, 6607807, 5172215, 2061047, 3505230, -3739843, 3500398, 1559610, 1358283, -1778653, -2931315, -1300301, -2690797, -453656, -1948305, -1122597, 931471, -2616172, -2168959, -451508, 1641214, 3631395, 2935610, 1637993, 131533, -1728188, -3490735, -1626719, -1981054, 571231, -1500017, 1538135, -4022774, 263604, -296890, -3124052, 1077500, 15032, 336081, 3245922, 808528, -3071439, 738198, -413391, 560493, -2719251, -314069, 754841, -275415, 29577830, -15651398, 2049236, 12123082, -1290638, 318364, -16097001, 17642652, 2001992, -1480153, 3633542, -980863, 3913252, 4976794, -6594386, -2120103, -10393284, 9133248, -4424353, -8577050, -9125195, -9504763, -5153424, 7656316, -6088116, 3280818, -328565, -11091216, -826244, -7419556, -962610, 2999498, 4720169, -14348949, -6760816, -11455752, --3597035, 16991964, 2387465, -1693291, 1441498, -1704028, 766652, 4910222, 2892124, 8403640, --535260, 6238977, 3734474, -6123013, 3712462, -9238475, 186831, -9280887, -9577240, 3431679, --10528575, 4236449, -185757, 5162014, 4177930, 3673808, -5645735, 6339372, -9546102, -372588, --4427038, -1656247, 11859478, 246424, 5912023, 5725729, -1260573, -2448131, 4560719, -10035728, -3900904, 9182640, -14001057, -10450192, -2887292, 6892886, -692564, -8776229, 3205656, -1450625, -3648575, -3361349, 1101122, -1999844, 6133214, -1356136, 5640366, 2923799, 5268851, 1620813, -1449015, -2996277, 3566434, 1378685, -134755, 1885491, 1804423, -1250372, 2665027, 1873680, --1305670, -1628866, -4566087, -1180042, -2605435, -323196, -110059, -1780264, 2355253, -1042066, -1387274, 259309, 4778688, -4011500, 1793149, 561567, 216359, -601295, -17520246, 3508452, -4491999, -11767674, 5619965, 127775, 12763569, -3105261, -6175089, 5521181, -15307800, -5129802, -13296682, 5949604, -7758322, -18956912, 8739722, -2458869, 4892505, -12020003, -16000364, -10790032, -14227079, 1357210, 7939784, -1139240, -7221988, -10810970, 5401458, -2730526, -9386651, -11004243, -1015223, -9800578, -7493644, -3992172, -1777043, -10635950, 6278706, 7458211, 10009421, -4483409, -8920110, -6813429, 13998372, -2359011, -533113, 10718091, 5612449, -2396592, -6862821, -3334505, -10353556, 2552821, -7336341, 3810173, 10986526, 10397579, 4588636, -12252468, -13549011, -1026497, -2881923, 1059783, -9693741, 3172370, 11140608, 3368865, -4447976, -17415018, 4921496, -7461969, --16973174, 739808, 1131724, -9509058, 14183056, -807991, -5530308, -18847928, 98784, -5405217, --667331, 7352447, -4046933, -7084549, -269509, 1839857, 1946694, -5575942, -5633924, -5615133, -2369748, -4820564, 540629, -708133, 1045825, -1198296, 1634235, 2756832, 2503966, 3122978, -1678259, 5457293, 6920266, 573378, 2199560, 1423782, -2375654, -532039, -1892470, 1014686, -967441, 589484, -6263136, 963683, -316217, -2174327, -73551, -1934883, 2196876, -2408403, --2494302, -1831267, -21760988, 13952201, 10799695, 11878806, 1843615, 12546136, 1438814, -7718056, --8976482, 1590749, 10091563, -6627135, 2490007, -14579266, 10333154, 10983305, -5233955, -2829847, -2675228, 12013024, 8784819, -5854578, -5252745, 8295730, -9481677, 3591130, -13033078, 234613, --3706020, -17471390, -18092550, 3814468, 10761041, 5164162, -15416785, -8151311, 12154757, -12962748, --5283884, 10895795, -2648921, 13554380, -4452271, -8973797, 3704409, -13178570, 15729244, -1349694, -2962991, -6961605, -3475166, -323733, -14344654, -8579734, 1379758, -2048699, 1661079, -4393752, --15242839, 3234110, -12586402, 6043019, -3021510, 9573482, -15216532, 7282654, 2836289, -4041027, -11687143, -1098975, -7705172, -14794015, -1851668, 3690451, -12036109, 9394167, -8075076, 6225555, --15912854, -16091632, 8005282, 6608881, -6407555, -4813048, 5398774, 3935264, -3333968, -2563559, --4270808, -5341329, -367220, -8809515, -819802, -961536, 836982, 2909304, -1555315, 2940442, --1628330, -204011, -4824322, -2093797, -1214402, -276489, 7455527, -1804960, -900869, 4602058, --4453881, 3541201, 1947231, -1403917, -993748, -4233764, -4150012, 184147, -2383707, 1025423, -396748, -1677722, -2929168, 7162395, -6970195, 2381559, 8523899, 12586402, -3326452, 1396401, --4467840, -16807280, -3590056, -3597572, 7302518, -14762876, -43487, -8516920, 9162239, -10327249, --14083198, 9367861, 4300873, 6094559, 19396072, -3197066, -5562520, 5474473, -12424267, -14489072, -1193464, 18564460, 5645735, 10423886, -7406671, -9109089, -14759655, 2953327, 18846316, -8442832, -9850507, 2268280, 14653892, -22416508, -7129109, -371515, 2632815, 12774843, 6158983, -17082158, --4629438, -7925289, -679679, -19668802, -3095598, -7076496, 1357210, -10348724, -690416, 2409477, --28724742, 3297998, -9008694, 1770063, -11372000, -612570, 7060390, 3615826, -3870303, -3632469, --15151034, 15235323, 14627048, 4833449, 3643743, -13133473, 20059108, 6997039, 10337986, -3940633, --31590558, 12321724, -1088237, 23707146, 22252762, 7033546, -2865817, 9819369, 512712, 8601746, -455803, 998043, -5596343, 2688650, -5113159, -2713346, -1431298, 10346576, -155156, 639950, -2645700, -638876, -5586142, -2852395, 942745, 4206921, -1981591, 2103997, -3283503, 4378183, --3435437, -5248987, -2690260, -742493, 2451890, 972810, -1140851, -897648, -1167157, 6836514, --1500017, 411780, 1117228, 3419331, 27197344, 9589588, 18613314, -18063558, 4197794, 18979460, --5704254, -6840273, 2682744, -11737072, 8961986, 2270964, -13707388, -17948668, -1348620, 15223512, --394063, -1226750, 9960566, -14872935, -3789235, -12243341, 6876780, -20864414, 344134, -4460861, -7588134, -21791590, -15055471, -9522479, 6386617, 7012608, 4853850, -7069516, 5295158, -5259725, -6460168, -4314832, -1909113, -1501091, -6119792, 4145180, 9643275, 5740761, 9708237, -800475, --9418326, 1341104, -9378061, 24981140, -6314676, -24575802, -7656853, 6715718, 21344376, -21365852, --8809515, -1393717, 13724568, 877247, -30235496, -3714073, 13952738, 28815472, 1066763, 20060182, -28903520, -2152852, 9303973, 13654775, -3780645, 24630026, -3310883, 29743722, 4736812, -8175470, --25797722, -16162499, 191663, 7756174, 3706020, -3929895, -5013838, -8019241, -10941966, -9727027, -11832635, 3457449, -144418, -16965658, -1916629, 620086, -3096672, -9650792, 2517388, 5101885, --1461363, -5004174, -3648038, -9455907, -5707475, -2784750, 5953362, -1173063, -5145908, 5150740, --7392713, 5308580, 5365488, -4638565, -8959839, 8181376, 12164421, 1855963, 373125, 733366, -7088307, -2121177, -8473434, 992674, 8216273, 6799470, -8412767, -7150047, 1312649, 1342714, -122407, 2427194, -1313723, 11399380, 13807246, -23792508, -23147190, 6088116, -5429376, 698469, --9234717, 21537114, -9724880, -6226092, 7458748, 5371931, 171262, -9892383, -7255274, -12031277, -4800700, -724776, -5840082, -987306, 14305999, 21508122, -23328652, -1517197, -22757958, -2450816, --5908802, 22494354, -9546639, -9120900, -4411469, 13677860, 4517769, 3751654, 5713380, 5454072, --4103305, 238371, -2982855, 3628711, -2722473, 21054466, -5525476, 5565204, 14816027, -7764764, --17071958, 3759707, 5776731, -6026913, -6565395, -1457068, 3475166, 10663867, -14625974, 19531364, -28742994, 19297288, -8104067, -11674795, -26667988, -34410204, -12676059, -164283, -6247567, -1775969, --3942780, 8185671, -741419, -13312251, 6944425, -5914707, -1293859, 12581033, 21013664, -5187247, -5884642, -3737695, 1123671, 19122806, 9648644, 16349330, 16650514, -13365938, -4130685, -3090229, -443992, -341987, 5907191, 373125, 3609920, 16763794, 670015, 7813083, -3590593, -3724274, --6911676, -2149094, 948651, 7616051, -2154463, -6404870, -3025268, 3648038, -2675228, -1463510, --2003065, 2291365, 576599, -2507187, -1364189, 1683090, 820876, 844498, 9659918, -4001836, -209917, 1223529, 110059, -5379984, 2414845, 2984466, 6156836, -12347494, 23041962, 10311143, -13066901, 19665582, 30434676, -11826729, 15701327, -31532040, -3968550, -14196478, -30990874, 12410845, -7218230, 9316321, 4032974, 12154757, 3638374, -22325240, 18624052, 32986960, -5049808, -5412196, -7999914, 3195993, -7010997, -29579976, 2314451, 13959, -2784213, 308164, 9929964, -21172042, -4460324, 5898064, -4440996, -12249784, -6033892, -13641890, 13696114, -30361124, -4496294, -19559282, -10706817, 4289062, 10858751, -3940633, 2877628, -7827578, 18417894, 5492190, 15099494, -13922673, -14839649, -423591, -14748918, 30151744, -5123359, 3619584, 20307680, -19704236, 22775674, 13597866, --18053896, 7488813, -6972880, 9979357, -24968256, 18088254, 2460480, 6306086, -2448131, 5806796, --20299626, 12775917, 22803592, -45610944, 4537096, 43848396, -28486908, -9178882, 2983929, 21338472, -15065672, 5211406, 13147969, -6056978, 7880728, -3398393, -9834938, 4741644, -2293513, -1697049, -8138963, 11922292, -1149441, -4719632, -4119948, 3488587, 7521562, -10198937, -3925063, -6994891, --4443144, -9121437, 8946417, 11932493, -2653216, 5469641, -3536369, 2196876, 7499550, 8567923, --10041634, 806380, 3542811, -5238250, 7752953, 376347, -287226, 7114077, 3519726, -8607114, --7314330, 2423972, 1013075, -2605435, 1329829, 18446348, -11157788, -13433584, -424128, -12860206, --5848135, -33989836, -29018946, -4002373, -16648904, -19978040, -14416058, 8876087, -5135171, -10113574, --16248935, 15007153, 1004486, -24539296, -3875134, -137439, -11684995, -3672734, 9956271, 7162932, --1732482, 93416, 459025, -6156299, 5228586, 11462731, -4305168, -2729452, 17582522, -33043868, --5395016, 9308805, 35229468, -14585709, -9155797, -13139916, -17898202, 7808788, 37381248, 6954626, -23148264, 4793721, -3822521, -1944010, -2787434, -18033494, 3934190, 4095788, -14712947, 3268470, -29185376, -4724464, -9034464, 4913443, -10515691, -2390686, 25738128, 38109244, 10251013, 22885734, -26400628, -9361955, -11070815, 3031173, -8767102, 1522566, -26181046, -213138, -20411296, 6216965, -4212826, 12435541, -21251498, -7904888, -7278896, -8288213, -6687801, -7414724, 11764989, 2569464, -15175730, -3842385, 5752572, 15246597, -2850248, 564251, -2264522, -6017786, -4919348, -801011, --3733937, -5528160, -159451, 2333241, -2942053, 1056025, 7041062, -7100118, -6561637, 521839, -5256503, 2800319, -3503620, -10531797, -10359998, -1223529, 2330557, -6230924, -3579318, 2257005, --2216740, 1150514, 661425, 7271380, 2334315, 1883880, -8013872, 8814884, -3785477, -8501888, -26737246, 30245696, -12577812, 68828464, -9819906, 1272921, -13112535, 7831873, -5732171, 7726646, -17435420, 4725538, -16884590, -9300752, -17628694, -592169, -12074227, -21740588, 2551211, 13606993, --2677375, 3746285, 6276021, 7856569, -452045, -6483790, -8406862, 3808562, -380105, -10984379, -3867618, 29426432, 20679730, 11647414, -25535192, 17805860, 13821205, -6940667, -8021389, -8005282, --10413148, -4632659, 7839926, -18540836, 1415192, 1982664, 10621454, 28045062, 5142150, 5583458, -1211181, -3680787, -6065031, 12000139, -7781944, 28326384, 8873939, -3054259, 12202002, 2095407, --19617800, -14159433, 15935402, 18470506, 6638409, -4976257, 12140799, 13134010, 18784040, 37072012, -3679176, -11020349, -19534048, -13109851, 9377524, 1831804, 2816962, -2055142, 12813498, 1118302, --1921461, -17710298, -8915278, 17883706, 20045150, -7531762, -14159433, -16798154, -5108864, 8599061, -5264556, 1365263, -5908802, 1171989, -319975, -7582228, -243739, -16425029, -4513474, -877247, -11292006, -2347200, -3817689, -168577, 9103183, -5887864, 6439230, -3753802, -7891466, 6324340, -8996346, 5739687, 6277632, -1087701, 6743636, 13111461, 5531381, 5465346, 3532074, -5162014, --2521683, 138513, -1480690, 3783866, -4051765, 6325950, 8170639, 4778688, 332860, -6649146, -2250026, 2123325, 6577743, 10770167, -11177652, 48993764, -7785165, 1646583, 5051956, -4188130, --1111860, 11940546, -9613747, -11333345, -6120866, 15535970, 13879724, -38677256, 6968048, 6083285, -15235860, -10230075, -15476378, -14821932, 10545755, 9440875, -15795816, -8871792, -6707129, 25275346, -12568148, 6785512, -5357435, -27084600, 7185481, 6267968, 13376676, -3739306, 6945499, -7828652, -2246805, -23584202, 9266392, 9031779, -2684, -6174553, -14856292, -29223494, 18335216, -12561169, -9269076, 9416179, 16167868, 1869385, -17864916, 28766618, 5400922, -28971702, -13555454, 16653199, -3753265, 21934398, 9151502, 3263102, -20646444, -10477573, 11056320, -35807144, 37807524, -27637040, -1248225, 22441740, -6434935, 44905492, 6508486, 7797513, -16702591, 52381960, 5228049, 33933464, --23597088, -10855530, -7609072, 12990129, -1687385, -5765994, 23698556, -20206748, 22852448, -27833536, -5669894, 2403034, 4774930, -5698885, 20132660, -2829847, 10158671, 8766565, 13308493, 7306276, -3765076, 9086540, 10358924, -8053, 3692598, 791885, -7312719, 8667244, 106837, 5838471, -12604118, 6018860, 659814, -1036698, 9623948, 10119480, 5114233, -6383932, 21254720, -1372242, --4418448, -4581657, 13601625, -10849087, 4642860, -2731062, 7258495, 29528, 2943126, 3612604, --3048890, -2795487, 1978906, 3643206, 3438121, 3825205, 5404143, -5700496, 17769890, 41198936, -13955422, 26038240, 33046016, -956167, 37830072, -28387586, -9922448, -10406169, -9133785, 4456566, -6509023, -2017024, -12343199, -24342800, 24184424, 22916334, 9916006, 20744692, -32855962, -28322088, -10086194, 14206141, -14988362, -21119964, 14166413, -6347425, -30610768, -10931229, -5532455, 15786152, --28120762, 16225850, 11067594, 12953621, -12966506, -334471, -12824772, -5324686, -37592240, -8781061, -18743774, -59665148, -18709952, -1832340, -1006096, 2556579, -35840428, -8523899, -54151484, -4058744, -11095511, -15028627, -16723529, -6563247, 16710644, -5044976, -19329500, -21905944, -56537876, -19771346, -26916024, -24657408, -37961068, 32544040, -9763534, -42507828, 13303661, 39371428, -20490216, -8903467, -4984847, -27689118, 35281544, 16059420, 22680112, -11198590, -2216203, 12043625, 33600604, 16068010, -5513128, -10141492, -2077154, 38371776, 3927748, 6437619, -2539400, -21755620, -9667971, 18315352, --162672, 1669669, -3388729, -19365470, -1291175, 9174050, -12139725, 15221364, -18843096, -11663521, -4129074, -6121939, 10103911, 4586488, -17143362, 7698729, 8904541, 5267778, 3498788, -6453189, -4337917, 418222, -4056060, -11703786, 6295885, 5601174, -1259499, 9886478, -13477607, 2146947, --12902619, 966905, 3620658, -4006131, -2112587, -33286, 5304822, 1380295, -3763465, 839666, -46835008, 64849712, -10444287, -2272575, -25769266, -25910464, -44499084, 18507014, -7785702, 64788508, --14010183, -28383828, -39448200, 2017024, 11893301, -14731201, 11982422, 42276972, -17161078, -7836705, --30015378, -13770739, 28451474, 32921998, -33745020, -9729175, 16775069, -7475928, 7223598, -10239739, -41421200, 33230162, 70853536, 22953378, 31132070, -14270029, 22217328, 47900160, 15252503, -3320547, -10853382, -1867237, 31006442, 16179142, 45388140, 12664248, -46557984, 15989626, 17440252, 37810744, --21677236, -18336290, 21648246, 23683524, -11775190, 38026568, -13762149, 15476378, -42409044, 26403312, --10234370, 14397267, 14588930, 33339684, 28675886, -23283018, -24487220, -7926899, 34781720, 35372812, --13761612, -19881404, -38217692, -4458713, 26309896, 30093762, 19787988, -8977555, -25399362, -23825794, --4399657, 16337519, -16694538, 22835268, 5383742, 15915538, 2573759, -8296803, 17929340, 11381663, --2991445, -7843147, 5457830, 15358803, -22635552, 8925479, 10983842, 14978162, 8038568, 21221434, --7247758, 7429220, -10190347, -14696841, 8257075, 17874044, 15590731, 24028194, -419833, -386547, -7068980, 6338298, 42849280, 8184597, -1976759, -18867792, -46171, 27441620, 13845364, 21189222, -12249247, -668404, 260919, -4828617, -290984, 26409218, 21859236, 2240899, 8118025, -2738579, --4440996, 907312, 11099269, 8420820, 7353521, -5776731, -5647882, 6358162, -16513076, -53391276, -3159485, 80406080, 47834124, -11876658, -119198768, -17558364, -12576201, 8683887, -14024142, 1639604, -11864847, -5152350, 4839355, -26446798, 15992848, 19201188, 36190468, -27167816, -33984464, 34008088, -54432268, 13172128, -24862492, -33183992, -7436736, 7478075, 2632278, 7978439, -224412, 11368778, -4446902, 35115652, -11858942, -49969796, -21731998, 15076946, 5407364, -17792976, -21922586, 2085744, -22853520, 40438192, 37483792, -1618666, 293132, 14699526, -14958297, -43319040, 12592844, -27349278, -50707456, 55093156, -1430761, 14933601, 7715909, 10280004, -25013352, -4450123, 52930640, -20941724, -237834, -73186240, -9845139, 7255811, 16489453, 14805826, 14746233, -18837190, -11457362, 31765578, -47707424, -9422621, -2253784, 3672734, 19116362, 22385370, -11026255, 6859600, -26218628, -31802086, -3019899, 7410966, 11279658, -4809290, -4925254, -6897181, -6719477, 19946364, -205085, -5043902, --11135776, -1999844, 12939663, 10642929, -6346351, 14955076, 3663070, 23338852, 2007897, 3134253, -809064, -9842454, -7338489, -5563057, -5689758, -2945811, -7354058, -6462315, 1929514, 19061064, -23140210, 5494874, 12066711, 3123515, 4285304, 18516140, -14285598, 13682692, 5575405, 23336704, --6523519, 4956393, 4720706, -11654394, 8035347, -6405944, 8215736, -4458713, 13911399, -6526740, --8333847, 5064840, 3215857, 1539209, 5658083, 1589138, 9998684, -9664, 3915937, -173409, -3714073, 1387811, 3233037, 4275640, 4912369, -1441498, 1176284, -804770, 6467147, 2259690, -4908074, -1056562, 1348620, 826244, 3666828, 151934, 4112431, -1610613, 5600101, -6168647, --53310744, -22055730, 42681776, 47029892, 44675712, 60555816, 10432476, -26050588, -79852032, -60630980, --11390253, 16936666, 50661824, 55089936, 26081726, 1238561, -26783416, -23202488, -10268730, 17208324, -47295644, 26858578, -6196027, 1731409, -3818226, -25942676, -35476968, -29058674, 5488968, 43528956, -32728724, 65451008, 42599632, 42150808, 59340880, -17268990, -40935872, -46612208, -61869004, -76235672, --28739236, -8992051, 22681722, 41977936, 60658360, 56651692, 46071040, 29126320, 58273044, -11395085, --36785320, -1733019, -9344775, 15404974, 17656074, 69517264, 60742648, -22585086, 10924249, -15822660, --46452220, -13728326, 12379169, -27996744, 43246024, -17317846, 14401025, 3665755, -4891968, 37368364, -51979840, 41401876, 29185376, -21603686, -52487184, -59805808, 17111150, -25232396, 4650913, -2909840, -33795488, 5238250, 19152870, -16166257, -36753108, -34202972, -53565220, -46677168, 19877646, 11101954, -27087284, 40603012, 31722628, 1155346, -23861228, -38671348, -52279416, -28724204, -13282186, -19350976, -8746701, -7086159, -5971615, -6295349, -15790984, 53150, -6943352, -10669236, -12500502, -8146479, --1556926, 8252243, -15132244, -9682467, 3118683, 9179956, -3872450, 22256520, 2180233, -119514448, --125791000, -130835976, -134110888, -177188336, -19280108, -50153944, -12178917, 16506096, 80646064, 91672856, -94774896, 132698384, 183441280, 175785488, 172740896, 138797232, 100224136, 72837816, 21857088, -83758840, --40227200, -49497888, -30683246, -100583304, -16734803, -41647224, -45894948, -83232168, -63997160, -65076808, --58986544, -61582316, -108239080, -95819112, -56584584, -51129976, -64265060, -88972928, -13573170, -77911240, --147706608, -126525440, -111132816, -58563488, -75517336, -13486734, -152885264, -67681704, -67752032, -31289374, --22870164, -78702592, 3431142, -78851304, -9579925, 12279311, 36891084, 3305514, 37915436, 56691956, -89081920, 95020248, 130666328, 85416696, 205079856, 129629632, 238718048, 162337408, 237816096, 275922656, -327574464, 269124800, 270882528, 305371648, 273936768, 278276288, 270760096, 234825184, 135795056, 108569256, -76540616, 55870544, 65320548, 97582728, 53716620, -19820738, -34046204, -39198020, -67407368, -87371448, --106606992, -98105640, -161306624, -156182192, -160951216, -194863744, -171694544, -216455616, -191758480, -224902208, --231070320, -217597536, -240194432, -217130464, -242545392, -192454256, -188666640, -156304592, -166918000, -171956528, --121000504, -108269680, -82844552, -42172284, 14019310, 46000172, 40226664, 51495048, 45999636, 52050708, -59733332, 85480584, 102659384, 92863096, 83463560, 102145056, 94983736, 117499568, 106909256, 78176992, -71108016, 61879740, 54460184, 34305516, 25991532, 24237038, 15188078, 16736414, 6582575, 10861435, -9470403, 6522445, 9510131, 6947110, 4096325, 1489280, -3804804, -588947, -148713, -10206453, --16306380, -9359807, -8235600, -10747082, -10559177, -6575595, -7858180, -11259794, -15076946, -11584601, --7606387, -6247030, -4045322, -4896263, -3707094, -650151, 3100967, 5426691, 4970351, 2710661, -2294586, 5697811, 8583492, 6097243, 5935108, 2856690, 1320703, 3639985, 3057480, 3113315, -2414845, 2506650, 1003412, -1867237, 2601677, 6408628, 6189585, 7444789, 8042327, 11662984, -13684840, 13884556, 14847165, 15737834, 17164300, 18609556, 18673444, 17501992, 16856672, 18556406, -15053324, 13044353, 11529303, 9912248, 6659347, 5365488, 2188823, 1528472, -294205, -3491272, --6594386, -9566503, -10395431, -13165149, -13584982, -13288629, -13372381, -14816563, -15610059, -14462765, --14071387, -12804908, -11777337, -10839961, -9656160, -7499013, -5458367, -4122095, -3292629, -2326262, --1780801, -1297617, -1126355, -866510, -812286, -743029, -675384, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +1492501, -5924371, 1986422, -3758633, 944893, -2459943, -1562831, -3277597, 2268280, 3934190, +1120450, 1202054, -7319698, 1398549, 99858, 2235531, 2755222, 1493575, 4161823, -917512, +-2368675, 408559, 4980552, -2147, -3859028, -419296, 4237522, 2282238, 436476, 8053, +1177358, -141734, 304406, 791885, -155693, -1554778, -199716, 4832, 1654636, -2528125, +-5887864, 4299799, 4308926, 3749507, 3525095, -214748, 1916092, 3351148, -3576097, -832687, +-108985, -4767414, 1054951, 317291, 4272956, 415001, 2389613, 43487, 5377836, 2709051, +-802622, 3759707, 2278480, -1257352, -4415764, 1074279, 1137093, -1190780, 318364, -2528662, +-665720, 2225330, 1559073, 1844689, 4436165, -764504, -1411434, 580894, 2634963, 6077916, +-3598109, 1602023, 1641751, 1753420, -192200, -435402, 1877975, -1077500, 43487, 869731, +-1156957, -223338, 165893, 295279, -756988, -1156957, 706522, -301185, 134218, -438624, +1110249, -165356, 1322313, -340913, 1176284, -52076, 1112397, 11312944, -7581154, 2542621, +6362457, 1480153, 4480188, 5431523, -4958003, 1029182, -464930, 2108292, -6283537, -4985920, +-942208, 4867272, 6593312, -2541010, -2203318, 3160559, -5381057, -7182796, -1341104, -8445516, +2872796, 2793339, 746787, -5249524, -5352603, 1890323, -3124052, 715112, -177704, 5555004, +5849746, 5296232, -883690, 3710315, -5831492, 2523293, -3448859, -319438, 283468, 4533875, +-4924180, -4355097, 6442, 5965710, 2433099, 2328946, -3643743, 2019708, 1450088, -1762010, +-7490423, -1211718, -2561948, -3279745, -2983929, 3419868, -3172907, -1015760, 743029, 2123861, +5322002, -2053531, -162672, -4041564, -1995012, 838056, -5636608, -346282, 1490891, 3831648, +-1255204, -2901787, -1506460, -5828271, 2720325, 1712618, 297963, -472446, -5079873, 2077690, +375810, -1792075, 1790465, -712965, 403727, 1675574, 121870, 351650, 1899986, 872952, +356482, 57982, 1512902, 581968, -340376, 651224, 866510, 1803886, -3874061, -7121056, +-1682554, 1371168, -2110977, -3543348, -1909113, -7098507, -3943854, 7757785, -183610, -3260954, +4170413, -5992553, -1278290, -7504919, -1463510, -5888400, -3020973, 7183870, 492848, -1315871, +-7845832, -4848481, -1675574, -3293166, 1470489, -4121021, 537945, 2760590, 8570070, 4265440, +3291019, 3779571, 6961068, -5623723, 55835, -1599339, -4306242, 1950989, -782221, -1602023, +-4512937, 2541547, 4998805, 635118, -3416110, -2144263, 12601971, 177704, -3460133, -4868883, +-7356205, -9844602, -1118302, -5043902, 1323924, -886374, 2912525, 644782, 1474248, -4454418, +812286, 876173, 6164889, 2167885, -4387846, 381178, -1276679, -1213865, -948114, 2285996, +3366181, 3298535, -2828236, -2752537, 1946694, 991064, 1318555, 1434519, -1020055, -4293894, +-5062156, -485331, 1068910, -1110249, 672699, 165356, -572841, -965294, -1495186, -502511, +-179852, -848256, -1675574, 283468, 723165, -848793, 477815, -730681, 305480, -947577, +-405338, 343061, 418759, -1168231, 328565, -363462, -2198487, 373662, -684510, 1442572, +-880468, -571768, -221728, -17494476, 6842957, -3179350, 2860448, -7277285, -2960306, -5712307, +-5219996, 286689, -1678795, -3606162, 8831527, 2234994, -872415, -5456219, -1751273, 2428267, +-6216429, -3338800, -5921150, -3343632, 8445516, 753230, 5618354, -616865, -98247, -1502702, +1564442, 1490891, -4543002, -23085, 1311039, 2458869, 9175661, -4897874, -5619428, -1187559, +10154913, 3122441, 10810970, 874026, 965294, -2003602, 5324686, -1018444, 7866770, -892279, +-950262, -1510218, -3316252, 3265786, 990527, -2910914, 2268817, 2881386, 5457830, -3264712, +-302795, -1079647, 4860293, -2092723, -846645, -1937030, -1271847, 1076426, -1620276, 467078, +805843, -1294933, 1190780, -8193724, 758599, 5153424, 1829119, 6936909, 557809, 641024, +1683090, 4379256, 7173669, -4862440, 679142, -484258, 1687922, -336618, -186831, 2040646, +4652524, 1678259, 2281165, 135828, -812823, -1330366, 629750, 2244121, -827855, 954557, +1080184, 997506, -41876, 362388, 1985349, -469225, 527207, -199179, 2293513, 1207423, +-732292, -260382, 2469606, 1131724, -725850, 1678795, 1018981, -2318209, -3625489, -1736241, +26844, -8514236, -1333051, 185220, -4182225, -15150497, -3590593, -3186866, -6538551, -1195075, +-1599875, 9654013, -3204046, 7325067, 3494493, 5311264, -9697499, -4307316, -9799505, -9109626, +104153, 1831267, 5879274, -2683281, -4219806, -2567317, -6589554, 1530619, 3164317, 3604551, +2275259, -1937030, 2612414, -4378183, 597000, -7974144, 3028489, -1988033, 1219771, 1869921, +3129958, 3307662, -2966749, 212064, 7930120, -4098473, 3904125, 4063576, -142808, 2468533, +3961034, -1499481, 1631014, 3874061, 324807, 6764574, -3380676, -4539244, -2120103, 2267206, +98784, -8796630, -4387309, -9756018, -10590316, -1744294, 3015604, -8647917, 4009889, -1339493, +-35433, -2911451, 3042984, -5116917, -711354, -1739999, -7208029, -6387153, -2020245, 3908420, +244276, 3360275, -1263794, 2199023, 1824824, -3987340, 143881, -737124, 2415382, -2668785, +-4452808, -1431835, 745714, 58519, -1638530, 839129, -969589, -356482, 853088, -186294, +175557, -38655, -914828, -172872, -883690, -623307, -526670, 27380, 597537, 104690, +1427540, 547608, -502511, 5014911, -14106283, -595927, 4504347, 2871186, -7441031, -832150, +-4699231, 1317481, 1537598, 1112933, -8131447, -10937134, -7409893, 1369558, -5901822, 6649683, +2183991, -10532334, 7771207, 6797323, 5425081, 4838281, -5163625, 8713952, 2391760, 7516, +-3251290, 2990908, 5290863, -4675072, -6853157, 2647311, -2512019, -8567386, -1035087, -8266739, +-2917894, 15158013, -3904662, -6718403, -8288213, 533650, 1500554, 6067715, 2518998, -5464809, +5157182, -581968, -4211753, -5687611, -5971615, 9356049, 4294968, 5916318, -4294431, -6009196, +2875481, 1557463, -6102612, -264677, -3686693, 6061273, -1016834, 583579, -7231651, 4756140, +4089346, -4152160, -2552821, -2561948, 8499740, 140660, 1377611, -2373506, 5874979, -5807870, +-9782862, -4400731, 1018981, -1871532, 5573794, -1082869, -465467, -5765457, -2898566, 2535105, +492848, -4099546, -2530810, 3541201, 2062658, -1099512, 318901, 69256, 166430, -1120450, +1695975, 690416, 2544768, 387621, 584116, 91805, 1201517, -480499, 1660542, -1946157, +2212445, -223338, -1101122, -7836705, -548145, 1662689, -2126546, -6310381, -9254581, -7463043, +7077569, 626528, 8725226, 10449655, 10150081, 1347009, 14012868, 3190087, -1791001, 6354404, +4812511, 12920872, 1686848, 7333120, -10581726, 16850768, 12357158, 5847061, -5388574, -4336843, +5965710, 1198296, 4223027, -2765422, 7162395, -2426120, -2112050, 6397354, 5181878, -6971269, +4343286, -2031520, 6975027, 7564511, -15479599, -3045669, 9229348, 2614561, 4939213, 3812857, +9139154, -4734665, 3554086, -52613, -8041790, -4057670, -401579, 1410897, -11718281, -1203665, +7112466, -5989869, 12064563, 8952322, -3878892, -333397, 2170569, 4368519, 6973417, -2994129, +-2484639, 11360725, -2911451, -463320, 4871030, 12885, 6607807, 5172215, 2061047, 3505230, +3739843, 3500398, 1559610, 1358283, -1778653, -2931315, -1300301, -2690797, -453656, -1948305, +1122597, 931471, -2616172, -2168959, -451508, 1641214, 3631395, 2935610, 1637993, 131533, +1728188, -3490735, -1626719, -1981054, 571231, -1500017, 1538135, -4022774, 263604, -296890, +3124052, 1077500, 15032, 336081, 3245922, 808528, -3071439, 738198, -413391, 560493, +2719251, -314069, 754841, -275415, 29577830, -15651398, 2049236, 12123082, -1290638, 318364, +16097001, 17642652, 2001992, -1480153, 3633542, -980863, 3913252, 4976794, -6594386, -2120103, +10393284, 9133248, -4424353, -8577050, -9125195, -9504763, -5153424, 7656316, -6088116, 3280818, +328565, -11091216, -826244, -7419556, -962610, 2999498, 4720169, -14348949, -6760816, -11455752, +-3597035, 16991964, 2387465, -1693291, 1441498, -1704028, 766652, 4910222, 2892124, 8403640, +-535260, 6238977, 3734474, -6123013, 3712462, -9238475, 186831, -9280887, -9577240, 3431679, +-10528575, 4236449, -185757, 5162014, 4177930, 3673808, -5645735, 6339372, -9546102, -372588, +-4427038, -1656247, 11859478, 246424, 5912023, 5725729, -1260573, -2448131, 4560719, -10035728, +3900904, 9182640, -14001057, -10450192, -2887292, 6892886, -692564, -8776229, 3205656, -1450625, +3648575, -3361349, 1101122, -1999844, 6133214, -1356136, 5640366, 2923799, 5268851, 1620813, +1449015, -2996277, 3566434, 1378685, -134755, 1885491, 1804423, -1250372, 2665027, 1873680, +-1305670, -1628866, -4566087, -1180042, -2605435, -323196, -110059, -1780264, 2355253, -1042066, +1387274, 259309, 4778688, -4011500, 1793149, 561567, 216359, -601295, -17520246, 3508452, +4491999, -11767674, 5619965, 127775, 12763569, -3105261, -6175089, 5521181, -15307800, -5129802, +13296682, 5949604, -7758322, -18956912, 8739722, -2458869, 4892505, -12020003, -16000364, -10790032, +14227079, 1357210, 7939784, -1139240, -7221988, -10810970, 5401458, -2730526, -9386651, -11004243, +1015223, -9800578, -7493644, -3992172, -1777043, -10635950, 6278706, 7458211, 10009421, -4483409, +8920110, -6813429, 13998372, -2359011, -533113, 10718091, 5612449, -2396592, -6862821, -3334505, +10353556, 2552821, -7336341, 3810173, 10986526, 10397579, 4588636, -12252468, -13549011, -1026497, +2881923, 1059783, -9693741, 3172370, 11140608, 3368865, -4447976, -17415018, 4921496, -7461969, +-16973174, 739808, 1131724, -9509058, 14183056, -807991, -5530308, -18847928, 98784, -5405217, +-667331, 7352447, -4046933, -7084549, -269509, 1839857, 1946694, -5575942, -5633924, -5615133, +2369748, -4820564, 540629, -708133, 1045825, -1198296, 1634235, 2756832, 2503966, 3122978, +1678259, 5457293, 6920266, 573378, 2199560, 1423782, -2375654, -532039, -1892470, 1014686, +967441, 589484, -6263136, 963683, -316217, -2174327, -73551, -1934883, 2196876, -2408403, +-2494302, -1831267, -21760988, 13952201, 10799695, 11878806, 1843615, 12546136, 1438814, -7718056, +-8976482, 1590749, 10091563, -6627135, 2490007, -14579266, 10333154, 10983305, -5233955, -2829847, +2675228, 12013024, 8784819, -5854578, -5252745, 8295730, -9481677, 3591130, -13033078, 234613, +-3706020, -17471390, -18092550, 3814468, 10761041, 5164162, -15416785, -8151311, 12154757, -12962748, +-5283884, 10895795, -2648921, 13554380, -4452271, -8973797, 3704409, -13178570, 15729244, -1349694, +2962991, -6961605, -3475166, -323733, -14344654, -8579734, 1379758, -2048699, 1661079, -4393752, +-15242839, 3234110, -12586402, 6043019, -3021510, 9573482, -15216532, 7282654, 2836289, -4041027, +11687143, -1098975, -7705172, -14794015, -1851668, 3690451, -12036109, 9394167, -8075076, 6225555, +-15912854, -16091632, 8005282, 6608881, -6407555, -4813048, 5398774, 3935264, -3333968, -2563559, +-4270808, -5341329, -367220, -8809515, -819802, -961536, 836982, 2909304, -1555315, 2940442, +-1628330, -204011, -4824322, -2093797, -1214402, -276489, 7455527, -1804960, -900869, 4602058, +-4453881, 3541201, 1947231, -1403917, -993748, -4233764, -4150012, 184147, -2383707, 1025423, +396748, -1677722, -2929168, 7162395, -6970195, 2381559, 8523899, 12586402, -3326452, 1396401, +-4467840, -16807280, -3590056, -3597572, 7302518, -14762876, -43487, -8516920, 9162239, -10327249, +-14083198, 9367861, 4300873, 6094559, 19396072, -3197066, -5562520, 5474473, -12424267, -14489072, +1193464, 18564460, 5645735, 10423886, -7406671, -9109089, -14759655, 2953327, 18846316, -8442832, +9850507, 2268280, 14653892, -22416508, -7129109, -371515, 2632815, 12774843, 6158983, -17082158, +-4629438, -7925289, -679679, -19668802, -3095598, -7076496, 1357210, -10348724, -690416, 2409477, +-28724742, 3297998, -9008694, 1770063, -11372000, -612570, 7060390, 3615826, -3870303, -3632469, +-15151034, 15235323, 14627048, 4833449, 3643743, -13133473, 20059108, 6997039, 10337986, -3940633, +-31590558, 12321724, -1088237, 23707146, 22252762, 7033546, -2865817, 9819369, 512712, 8601746, +455803, 998043, -5596343, 2688650, -5113159, -2713346, -1431298, 10346576, -155156, 639950, +2645700, -638876, -5586142, -2852395, 942745, 4206921, -1981591, 2103997, -3283503, 4378183, +-3435437, -5248987, -2690260, -742493, 2451890, 972810, -1140851, -897648, -1167157, 6836514, +-1500017, 411780, 1117228, 3419331, 27197344, 9589588, 18613314, -18063558, 4197794, 18979460, +-5704254, -6840273, 2682744, -11737072, 8961986, 2270964, -13707388, -17948668, -1348620, 15223512, +-394063, -1226750, 9960566, -14872935, -3789235, -12243341, 6876780, -20864414, 344134, -4460861, +7588134, -21791590, -15055471, -9522479, 6386617, 7012608, 4853850, -7069516, 5295158, -5259725, +6460168, -4314832, -1909113, -1501091, -6119792, 4145180, 9643275, 5740761, 9708237, -800475, +-9418326, 1341104, -9378061, 24981140, -6314676, -24575802, -7656853, 6715718, 21344376, -21365852, +-8809515, -1393717, 13724568, 877247, -30235496, -3714073, 13952738, 28815472, 1066763, 20060182, +28903520, -2152852, 9303973, 13654775, -3780645, 24630026, -3310883, 29743722, 4736812, -8175470, +-25797722, -16162499, 191663, 7756174, 3706020, -3929895, -5013838, -8019241, -10941966, -9727027, +11832635, 3457449, -144418, -16965658, -1916629, 620086, -3096672, -9650792, 2517388, 5101885, +-1461363, -5004174, -3648038, -9455907, -5707475, -2784750, 5953362, -1173063, -5145908, 5150740, +-7392713, 5308580, 5365488, -4638565, -8959839, 8181376, 12164421, 1855963, 373125, 733366, +7088307, -2121177, -8473434, 992674, 8216273, 6799470, -8412767, -7150047, 1312649, 1342714, +122407, 2427194, -1313723, 11399380, 13807246, -23792508, -23147190, 6088116, -5429376, 698469, +-9234717, 21537114, -9724880, -6226092, 7458748, 5371931, 171262, -9892383, -7255274, -12031277, +4800700, -724776, -5840082, -987306, 14305999, 21508122, -23328652, -1517197, -22757958, -2450816, +-5908802, 22494354, -9546639, -9120900, -4411469, 13677860, 4517769, 3751654, 5713380, 5454072, +-4103305, 238371, -2982855, 3628711, -2722473, 21054466, -5525476, 5565204, 14816027, -7764764, +-17071958, 3759707, 5776731, -6026913, -6565395, -1457068, 3475166, 10663867, -14625974, 19531364, +28742994, 19297288, -8104067, -11674795, -26667988, -34410204, -12676059, -164283, -6247567, -1775969, +-3942780, 8185671, -741419, -13312251, 6944425, -5914707, -1293859, 12581033, 21013664, -5187247, +5884642, -3737695, 1123671, 19122806, 9648644, 16349330, 16650514, -13365938, -4130685, -3090229, +443992, -341987, 5907191, 373125, 3609920, 16763794, 670015, 7813083, -3590593, -3724274, +-6911676, -2149094, 948651, 7616051, -2154463, -6404870, -3025268, 3648038, -2675228, -1463510, +-2003065, 2291365, 576599, -2507187, -1364189, 1683090, 820876, 844498, 9659918, -4001836, +209917, 1223529, 110059, -5379984, 2414845, 2984466, 6156836, -12347494, 23041962, 10311143, +13066901, 19665582, 30434676, -11826729, 15701327, -31532040, -3968550, -14196478, -30990874, 12410845, +7218230, 9316321, 4032974, 12154757, 3638374, -22325240, 18624052, 32986960, -5049808, -5412196, +7999914, 3195993, -7010997, -29579976, 2314451, 13959, -2784213, 308164, 9929964, -21172042, +4460324, 5898064, -4440996, -12249784, -6033892, -13641890, 13696114, -30361124, -4496294, -19559282, +10706817, 4289062, 10858751, -3940633, 2877628, -7827578, 18417894, 5492190, 15099494, -13922673, +14839649, -423591, -14748918, 30151744, -5123359, 3619584, 20307680, -19704236, 22775674, 13597866, +-18053896, 7488813, -6972880, 9979357, -24968256, 18088254, 2460480, 6306086, -2448131, 5806796, +-20299626, 12775917, 22803592, -45610944, 4537096, 43848396, -28486908, -9178882, 2983929, 21338472, +15065672, 5211406, 13147969, -6056978, 7880728, -3398393, -9834938, 4741644, -2293513, -1697049, +8138963, 11922292, -1149441, -4719632, -4119948, 3488587, 7521562, -10198937, -3925063, -6994891, +-4443144, -9121437, 8946417, 11932493, -2653216, 5469641, -3536369, 2196876, 7499550, 8567923, +-10041634, 806380, 3542811, -5238250, 7752953, 376347, -287226, 7114077, 3519726, -8607114, +-7314330, 2423972, 1013075, -2605435, 1329829, 18446348, -11157788, -13433584, -424128, -12860206, +-5848135, -33989836, -29018946, -4002373, -16648904, -19978040, -14416058, 8876087, -5135171, -10113574, +-16248935, 15007153, 1004486, -24539296, -3875134, -137439, -11684995, -3672734, 9956271, 7162932, +-1732482, 93416, 459025, -6156299, 5228586, 11462731, -4305168, -2729452, 17582522, -33043868, +-5395016, 9308805, 35229468, -14585709, -9155797, -13139916, -17898202, 7808788, 37381248, 6954626, +23148264, 4793721, -3822521, -1944010, -2787434, -18033494, 3934190, 4095788, -14712947, 3268470, +29185376, -4724464, -9034464, 4913443, -10515691, -2390686, 25738128, 38109244, 10251013, 22885734, +26400628, -9361955, -11070815, 3031173, -8767102, 1522566, -26181046, -213138, -20411296, 6216965, +4212826, 12435541, -21251498, -7904888, -7278896, -8288213, -6687801, -7414724, 11764989, 2569464, +15175730, -3842385, 5752572, 15246597, -2850248, 564251, -2264522, -6017786, -4919348, -801011, +-3733937, -5528160, -159451, 2333241, -2942053, 1056025, 7041062, -7100118, -6561637, 521839, +5256503, 2800319, -3503620, -10531797, -10359998, -1223529, 2330557, -6230924, -3579318, 2257005, +-2216740, 1150514, 661425, 7271380, 2334315, 1883880, -8013872, 8814884, -3785477, -8501888, +26737246, 30245696, -12577812, 68828464, -9819906, 1272921, -13112535, 7831873, -5732171, 7726646, +17435420, 4725538, -16884590, -9300752, -17628694, -592169, -12074227, -21740588, 2551211, 13606993, +-2677375, 3746285, 6276021, 7856569, -452045, -6483790, -8406862, 3808562, -380105, -10984379, +3867618, 29426432, 20679730, 11647414, -25535192, 17805860, 13821205, -6940667, -8021389, -8005282, +-10413148, -4632659, 7839926, -18540836, 1415192, 1982664, 10621454, 28045062, 5142150, 5583458, +1211181, -3680787, -6065031, 12000139, -7781944, 28326384, 8873939, -3054259, 12202002, 2095407, +-19617800, -14159433, 15935402, 18470506, 6638409, -4976257, 12140799, 13134010, 18784040, 37072012, +3679176, -11020349, -19534048, -13109851, 9377524, 1831804, 2816962, -2055142, 12813498, 1118302, +-1921461, -17710298, -8915278, 17883706, 20045150, -7531762, -14159433, -16798154, -5108864, 8599061, +5264556, 1365263, -5908802, 1171989, -319975, -7582228, -243739, -16425029, -4513474, -877247, +11292006, -2347200, -3817689, -168577, 9103183, -5887864, 6439230, -3753802, -7891466, 6324340, +8996346, 5739687, 6277632, -1087701, 6743636, 13111461, 5531381, 5465346, 3532074, -5162014, +-2521683, 138513, -1480690, 3783866, -4051765, 6325950, 8170639, 4778688, 332860, -6649146, +2250026, 2123325, 6577743, 10770167, -11177652, 48993764, -7785165, 1646583, 5051956, -4188130, +-1111860, 11940546, -9613747, -11333345, -6120866, 15535970, 13879724, -38677256, 6968048, 6083285, +15235860, -10230075, -15476378, -14821932, 10545755, 9440875, -15795816, -8871792, -6707129, 25275346, +12568148, 6785512, -5357435, -27084600, 7185481, 6267968, 13376676, -3739306, 6945499, -7828652, +2246805, -23584202, 9266392, 9031779, -2684, -6174553, -14856292, -29223494, 18335216, -12561169, +9269076, 9416179, 16167868, 1869385, -17864916, 28766618, 5400922, -28971702, -13555454, 16653199, +3753265, 21934398, 9151502, 3263102, -20646444, -10477573, 11056320, -35807144, 37807524, -27637040, +1248225, 22441740, -6434935, 44905492, 6508486, 7797513, -16702591, 52381960, 5228049, 33933464, +-23597088, -10855530, -7609072, 12990129, -1687385, -5765994, 23698556, -20206748, 22852448, -27833536, +5669894, 2403034, 4774930, -5698885, 20132660, -2829847, 10158671, 8766565, 13308493, 7306276, +3765076, 9086540, 10358924, -8053, 3692598, 791885, -7312719, 8667244, 106837, 5838471, +12604118, 6018860, 659814, -1036698, 9623948, 10119480, 5114233, -6383932, 21254720, -1372242, +-4418448, -4581657, 13601625, -10849087, 4642860, -2731062, 7258495, 29528, 2943126, 3612604, +-3048890, -2795487, 1978906, 3643206, 3438121, 3825205, 5404143, -5700496, 17769890, 41198936, +13955422, 26038240, 33046016, -956167, 37830072, -28387586, -9922448, -10406169, -9133785, 4456566, +6509023, -2017024, -12343199, -24342800, 24184424, 22916334, 9916006, 20744692, -32855962, -28322088, +10086194, 14206141, -14988362, -21119964, 14166413, -6347425, -30610768, -10931229, -5532455, 15786152, +-28120762, 16225850, 11067594, 12953621, -12966506, -334471, -12824772, -5324686, -37592240, -8781061, +18743774, -59665148, -18709952, -1832340, -1006096, 2556579, -35840428, -8523899, -54151484, -4058744, +11095511, -15028627, -16723529, -6563247, 16710644, -5044976, -19329500, -21905944, -56537876, -19771346, +26916024, -24657408, -37961068, 32544040, -9763534, -42507828, 13303661, 39371428, -20490216, -8903467, +4984847, -27689118, 35281544, 16059420, 22680112, -11198590, -2216203, 12043625, 33600604, 16068010, +5513128, -10141492, -2077154, 38371776, 3927748, 6437619, -2539400, -21755620, -9667971, 18315352, +-162672, 1669669, -3388729, -19365470, -1291175, 9174050, -12139725, 15221364, -18843096, -11663521, +4129074, -6121939, 10103911, 4586488, -17143362, 7698729, 8904541, 5267778, 3498788, -6453189, +4337917, 418222, -4056060, -11703786, 6295885, 5601174, -1259499, 9886478, -13477607, 2146947, +-12902619, 966905, 3620658, -4006131, -2112587, -33286, 5304822, 1380295, -3763465, 839666, +46835008, 64849712, -10444287, -2272575, -25769266, -25910464, -44499084, 18507014, -7785702, 64788508, +-14010183, -28383828, -39448200, 2017024, 11893301, -14731201, 11982422, 42276972, -17161078, -7836705, +-30015378, -13770739, 28451474, 32921998, -33745020, -9729175, 16775069, -7475928, 7223598, -10239739, +41421200, 33230162, 70853536, 22953378, 31132070, -14270029, 22217328, 47900160, 15252503, -3320547, +10853382, -1867237, 31006442, 16179142, 45388140, 12664248, -46557984, 15989626, 17440252, 37810744, +-21677236, -18336290, 21648246, 23683524, -11775190, 38026568, -13762149, 15476378, -42409044, 26403312, +-10234370, 14397267, 14588930, 33339684, 28675886, -23283018, -24487220, -7926899, 34781720, 35372812, +-13761612, -19881404, -38217692, -4458713, 26309896, 30093762, 19787988, -8977555, -25399362, -23825794, +-4399657, 16337519, -16694538, 22835268, 5383742, 15915538, 2573759, -8296803, 17929340, 11381663, +-2991445, -7843147, 5457830, 15358803, -22635552, 8925479, 10983842, 14978162, 8038568, 21221434, +-7247758, 7429220, -10190347, -14696841, 8257075, 17874044, 15590731, 24028194, -419833, -386547, +7068980, 6338298, 42849280, 8184597, -1976759, -18867792, -46171, 27441620, 13845364, 21189222, +12249247, -668404, 260919, -4828617, -290984, 26409218, 21859236, 2240899, 8118025, -2738579, +-4440996, 907312, 11099269, 8420820, 7353521, -5776731, -5647882, 6358162, -16513076, -53391276, +3159485, 80406080, 47834124, -11876658, -119198768, -17558364, -12576201, 8683887, -14024142, 1639604, +11864847, -5152350, 4839355, -26446798, 15992848, 19201188, 36190468, -27167816, -33984464, 34008088, +54432268, 13172128, -24862492, -33183992, -7436736, 7478075, 2632278, 7978439, -224412, 11368778, +4446902, 35115652, -11858942, -49969796, -21731998, 15076946, 5407364, -17792976, -21922586, 2085744, +22853520, 40438192, 37483792, -1618666, 293132, 14699526, -14958297, -43319040, 12592844, -27349278, +50707456, 55093156, -1430761, 14933601, 7715909, 10280004, -25013352, -4450123, 52930640, -20941724, +237834, -73186240, -9845139, 7255811, 16489453, 14805826, 14746233, -18837190, -11457362, 31765578, +47707424, -9422621, -2253784, 3672734, 19116362, 22385370, -11026255, 6859600, -26218628, -31802086, +3019899, 7410966, 11279658, -4809290, -4925254, -6897181, -6719477, 19946364, -205085, -5043902, +-11135776, -1999844, 12939663, 10642929, -6346351, 14955076, 3663070, 23338852, 2007897, 3134253, +809064, -9842454, -7338489, -5563057, -5689758, -2945811, -7354058, -6462315, 1929514, 19061064, +23140210, 5494874, 12066711, 3123515, 4285304, 18516140, -14285598, 13682692, 5575405, 23336704, +-6523519, 4956393, 4720706, -11654394, 8035347, -6405944, 8215736, -4458713, 13911399, -6526740, +-8333847, 5064840, 3215857, 1539209, 5658083, 1589138, 9998684, -9664, 3915937, -173409, +3714073, 1387811, 3233037, 4275640, 4912369, -1441498, 1176284, -804770, 6467147, 2259690, +4908074, -1056562, 1348620, 826244, 3666828, 151934, 4112431, -1610613, 5600101, -6168647, +-53310744, -22055730, 42681776, 47029892, 44675712, 60555816, 10432476, -26050588, -79852032, -60630980, +-11390253, 16936666, 50661824, 55089936, 26081726, 1238561, -26783416, -23202488, -10268730, 17208324, +47295644, 26858578, -6196027, 1731409, -3818226, -25942676, -35476968, -29058674, 5488968, 43528956, +32728724, 65451008, 42599632, 42150808, 59340880, -17268990, -40935872, -46612208, -61869004, -76235672, +-28739236, -8992051, 22681722, 41977936, 60658360, 56651692, 46071040, 29126320, 58273044, -11395085, +-36785320, -1733019, -9344775, 15404974, 17656074, 69517264, 60742648, -22585086, 10924249, -15822660, +-46452220, -13728326, 12379169, -27996744, 43246024, -17317846, 14401025, 3665755, -4891968, 37368364, +51979840, 41401876, 29185376, -21603686, -52487184, -59805808, 17111150, -25232396, 4650913, -2909840, +33795488, 5238250, 19152870, -16166257, -36753108, -34202972, -53565220, -46677168, 19877646, 11101954, +27087284, 40603012, 31722628, 1155346, -23861228, -38671348, -52279416, -28724204, -13282186, -19350976, +8746701, -7086159, -5971615, -6295349, -15790984, 53150, -6943352, -10669236, -12500502, -8146479, +-1556926, 8252243, -15132244, -9682467, 3118683, 9179956, -3872450, 22256520, 2180233, -119514448, +-125791000, -130835976, -134110888, -177188336, -19280108, -50153944, -12178917, 16506096, 80646064, 91672856, +94774896, 132698384, 183441280, 175785488, 172740896, 138797232, 100224136, 72837816, 21857088, -83758840, +-40227200, -49497888, -30683246, -100583304, -16734803, -41647224, -45894948, -83232168, -63997160, -65076808, +-58986544, -61582316, -108239080, -95819112, -56584584, -51129976, -64265060, -88972928, -13573170, -77911240, +-147706608, -126525440, -111132816, -58563488, -75517336, -13486734, -152885264, -67681704, -67752032, -31289374, +-22870164, -78702592, 3431142, -78851304, -9579925, 12279311, 36891084, 3305514, 37915436, 56691956, +89081920, 95020248, 130666328, 85416696, 205079856, 129629632, 238718048, 162337408, 237816096, 275922656, +327574464, 269124800, 270882528, 305371648, 273936768, 278276288, 270760096, 234825184, 135795056, 108569256, +76540616, 55870544, 65320548, 97582728, 53716620, -19820738, -34046204, -39198020, -67407368, -87371448, +-106606992, -98105640, -161306624, -156182192, -160951216, -194863744, -171694544, -216455616, -191758480, -224902208, +-231070320, -217597536, -240194432, -217130464, -242545392, -192454256, -188666640, -156304592, -166918000, -171956528, +-121000504, -108269680, -82844552, -42172284, 14019310, 46000172, 40226664, 51495048, 45999636, 52050708, +59733332, 85480584, 102659384, 92863096, 83463560, 102145056, 94983736, 117499568, 106909256, 78176992, +71108016, 61879740, 54460184, 34305516, 25991532, 24237038, 15188078, 16736414, 6582575, 10861435, +9470403, 6522445, 9510131, 6947110, 4096325, 1489280, -3804804, -588947, -148713, -10206453, +-16306380, -9359807, -8235600, -10747082, -10559177, -6575595, -7858180, -11259794, -15076946, -11584601, +-7606387, -6247030, -4045322, -4896263, -3707094, -650151, 3100967, 5426691, 4970351, 2710661, +2294586, 5697811, 8583492, 6097243, 5935108, 2856690, 1320703, 3639985, 3057480, 3113315, +2414845, 2506650, 1003412, -1867237, 2601677, 6408628, 6189585, 7444789, 8042327, 11662984, +13684840, 13884556, 14847165, 15737834, 17164300, 18609556, 18673444, 17501992, 16856672, 18556406, +15053324, 13044353, 11529303, 9912248, 6659347, 5365488, 2188823, 1528472, -294205, -3491272, +-6594386, -9566503, -10395431, -13165149, -13584982, -13288629, -13372381, -14816563, -15610059, -14462765, +-14071387, -12804908, -11777337, -10839961, -9656160, -7499013, -5458367, -4122095, -3292629, -2326262, +-1780801, -1297617, -1126355, -866510, -812286, -743029, -675384, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 17017198, -2232309, -5614059, 2633889, 2989834, 1023813, -7104413, 3218541, 5006858, -5430450, -1642825, --6649683, -1478543, -2834142, -2451890, -970663, 346282, -245350, 653372, 2370822, -2976949, -1307281, -6817724, 2325188, 4154844, 874563, -1809255, -5523865, 3578782, -2434710, 5802501, -4955856, -237297, -2326262, 4725538, 5523328, 4429722, 4489852, 1095217, -3467112, 1058173, -4246649, -1812476, -3621731, 3216394, 5122822, -2281702, 2668785, -5871757, -496069, -5153961, -3485366, -6852084, -1857573, -1299765, 2323041, 3374234, 2397129, -223875, -3631932, 413391, --5019206, -3333968, 902480, -650151, -3031710, 1618666, 1682017, 399969, 3145527, -2843805, -1346472, -3830574, -1520955, -1648194, 2079838, -2001992, -4034585, -1835025, -1511829, 5500243, -4743792, 1174137, -2538863, 295279, -307627, 933619, 1897302, 317828, 94489, 302795, --91268, 46708, -724239, 518080, -2131378, 64961, -174483, 837519, 443992, -689342, --939524, 156766, 369904, 367220, -179852, 19327, -428423, 9742060, -9768903, 396211, -197569, -2454574, -2915209, -3105261, 1038308, -5493800, -5420786, 795643, 2668785, -176094, -3157875, 2469069, -2969970, 1260573, -10718628, -2601140, -2377265, -2472291, -3362960, -3707094, --9444096, -7327214, 1033477, 2245194, -484794, 5155035, 4123169, 1754494, -1800128, -991601, -4825933, -1823751, 619549, -668404, -5019206, 1719598, -1663763, -3403762, -1303523, 4156992, -9988483, -3766150, 1137630, 2459406, -1817845, 3171297, 1427540, -3447248, 2055142, -8199093, --3787088, 128312, 3393024, 5266704, -3180960, -1451162, -333397, -11897059, 2063732, 6207302, -357556, 933619, 3400540, -1903744, 5294084, 7144141, -875100, 2057826, 4294968, 4093641, -830002, 260919, -1957968, -2811593, -1757715, 1298154, -2690260, 5974300, 4010963, -92879, --2877628, -1445793, 3441343, 4060355, -1990181, 3160022, -1877975, 889058, -1915019, -1132798, --1306207, 415538, 111132, 271657, 287226, -180389, -623844, -462783, -2564096, -8380555, -1950452, 314606, -8106751, 1250372, 4553739, 6700149, 1725503, -4804995, 11347840, -1513439, --2228014, 5340792, -3289408, -3199751, 551903, -4131759, 5060545, 5063230, -2039036, -7619809, --3765613, 3808026, -4908074, 10800769, 9315784, -7431367, -9102646, 338229, 1707786, -8654359, --563178, 3593814, 2434173, -4230006, -2464774, 9960566, -1052804, 6860674, -676457, -2209761, --2310156, -5108327, 894427, -712965, 5369246, -4565550, 1243930, -1184874, 999117, -2681670, --352724, 4545149, 3599720, -5652714, 8834748, 747861, -39728, -121870, -808528, 2415919, --1217623, -7888245, -1122597, -4155381, 6888591, 2907156, 179315, 8483634, -4682051, 5682779, -5565741, 534723, -4118874, -818191, -877784, -65498, -1173063, -1682017, 2338610, 2505577, --3741454, 1819992, -222801, 2651069, 2315524, -738198, 360240, -1131724, -1759863, 1282585, --1620276, -1335198, 690416, 1804960, -1636383, -1186485, -2128693, -880468, 1274532, -778463, --313533, 59056, 644782, -1143535, -673773, 1672353, 539555, -312459, -520228, -1806571, --78383, 965294, 552977, -20148228, 4707821, 1150514, 14471892, -712428, 5855651, -7682086, -1735167, -5740224, -1322850, -2779381, -848256, 2712272, -1490354, 2537252, 4923107, 3774203, -13743895, 9504763, -6140730, 3201898, -264677, 2590402, 1682017, -1679332, -13519483, 3507378, --625455, -66035, 5226439, -743029, -3721589, -2569464, -572841, -4153770, -2199023, -10792179, --2478196, 352724, -3766150, -614717, 4570382, 6508486, -2013803, 8026757, -5885179, 1377074, -2789045, 1109712, -1777580, -4123169, 3033858, -986232, 1895691, -3046206, -4360466, 893890, -2649458, -4405026, 4336307, -2988224, 10229538, 10847477, -3206730, 4003983, 4209605, -490163, --1327682, -1377611, -13097503, 5573257, 5422396, 232465, -2145336, -5429913, 649077, -1544041, --6638946, -14960445, 1058173, -3655017, 3927748, 70867, 10737, -2439005, -1627793, -2757369, --209380, 1614371, -1889786, 2363306, -2343442, -1325534, -947577, -526134, 1301375, 1096827, --741956, 548145, 410706, 901406, 1413581, 1114007, -631360, -1516124, 1203665, -594316, --1117228, 517007, 461172, -622233, 910533, 1442035, 537945, -103616, -4363150, -6641630, -6558415, 3723200, -610959, 7588671, -4124242, 6804839, -7738458, -7425999, 3562675, -11830487, --4217121, 2944737, 7145215, 9357123, -1677185, 6977175, -282931, 6644315, 2427730, 1055488, --1138166, 336618, 6619082, -3202972, -741956, 1184337, 536334, -6589554, -858993, -3586835, -13526463, -6512244, -6616934, -1621887, 6352257, 6411313, 5482526, 7369627, -1324461, 1334661, --1685238, -3692598, 2753611, -353261, -745177, -4218732, 10596758, 6541772, -3335579, 2007360, -3098819, -5633387, 1145146, 4117263, -1094680, 7964480, -3271691, -1053878, -8726300, -3291019, --7427072, 313533, 10128607, -4021163, 2824478, 1728724, 301721, -2791729, -993211, 77309, --2538863, 4874251, -5073430, -2380486, -498216, 10719701, 1647657, -74625, 3336653, -2931852, --8104604, 1987496, 757525, -1290638, 529892, 1970316, -586800, 399969, 3859028, 734976, --369904, 925565, 1611, -528818, -991064, 3629784, -234613, 302258, -3379603, 2013803, -456340, 2005750, -550293, -1366337, -467615, 1020055, 1585917, 1066763, -2767033, 135828, -1858110, -590558, -3475702, -2298881, -19144280, 13739600, 1370632, -7095286, -16918950, -1759326, -341450, -10041634, -985695, 4555887, 3864934, 282931, -2967286, 3590593, 11943230, 12124693, --5318780, -5818607, -13326210, 2565169, -2476586, 12778065, -5331128, -364535, -3109020, 4760435, --1534914, -13259638, 4235912, -697395, -7904888, -70867, 1139777, -1148367, -1425392, -5495411, --7638063, 4508105, 1039382, 5920076, -5308580, 10016937, 4694400, -2161442, -9039832, -1851668, -3135326, 9795747, 2964064, -5658620, -2644089, 4511863, 2863133, -2942590, -1498944, 4760971, -3860639, 5029944, 9681393, 10843182, 5234492, 5738613, 6610492, -4005057, 872415, -7300371, -7124814, 1065689, 3549254, -5236102, -8130373, 1761474, -10365904, -3771518, -4580046, 7460895, -7791608, 8193724, 2066416, -2415919, -2726231, 7649874, 1462973, -1152662, 1836099, -2505040, -4822712, 184147, -184684, 1549410, 1913408, -839129, 3929895, -73551, 570157, -2011655, --1283122, 1043140, 3038689, -264141, 1025960, 1756105, 933082, 538482, -1071594, 1439351, --1384590, -2007360, 1589675, -6840809, -392990, 12840342, 7898982, 10858751, 2076617, -11848204, --3898757, 12610024, -3620658, -7961796, -8301098, -8167954, -8648454, 4779762, 4849018, 3124589, -2855080, 2957085, 12126303, -1478543, 5267778, -10387378, -11702175, 7862475, -409633, -6370510, -464930, -16291885, -5320928, -5474473, 2008971, -551903, -1501091, -11454678, -7508677, 1296006, -7929047, 12902082, -5105643, -5029944, 6864969, -8820789, -632971, -427886, 2961380, 5659693, -4597763, 8952322, -4792647, 12968117, 6104759, -13960254, 6986838, -7747584, -9278740, -7690139, --11224360, 10184441, 2383707, -11933567, 1364189, 2552284, 1104880, 1923609, -2198487, 8453033, --4893579, 6505802, -10413685, 7923678, -5288179, -4779225, 1020592, 3535295, -414464, 5735929, -16328929, -1337882, -8772471, 5211406, 10696616, 890669, -1175210, -8452496, -3716221, 7924215, --1353452, -492848, 255014, 1632625, -2226404, -1228361, -210990, 2369748, -1364189, -236223, --1566053, 4493073, -3278134, 732829, -3082713, -3782256, 988916, 1283122, -1218160, 647466, --1133335, -788127, -265214, -379568, -117575, -1567663, -982474, 4620311, -261993, 90194, --464930, 1762547, 968515, 1586454, 26386132, -24171002, 10882910, 11365020, -10976326, -2146410, -15703474, 5565204, 9899363, 2819109, -3703336, 23728084, -1164473, -4678830, -229244, -120259, -11282342, 17799418, 6611029, -324807, 157303, 2501819, 5980205, -286689, 3076807, -12781823, -5751498, 9606768, -2262374, 3800509, -204548, 1621887, -8316131, -6528351, 250719, -477815, -10901164, 5287642, 4387846, -4877472, -5959804, -5946382, 6186364, 9093520, -129386, -3187403, -17942226, 9202504, 11920682, -6736120, -13750875, -2777233, -14390288, -9529459, -4482335, -6112276, --1024350, 10417443, -3569118, 210990, -8894340, -9470940, 10366977, -732829, 4723391, 5083094, --5728950, 9963787, 2434710, 711891, -3743064, -7004555, 7764764, -2643552, -14337675, 7965554, -6687264, 8338679, 3637837, -10151692, -2300492, 726386, -10603201, 5735929, 5743982, -1174137, -4284230, 3559454, 3806415, -1177895, 6140730, 741956, -467615, -3427921, 1361505, -269509, -4845797, 885837, -360240, 828929, -268435, 3517578, -1805497, -668404, -2689187, 1056025, --879395, -2144263, 198642, 309775, -957778, 364535, 3878892, 2884608, -1998234, -1370632, --2871723, 474057, -795643, -570694, 227633, 286689, 1162862, -1991791, -18442590, 2422899, -6278169, -8990977, 7757785, -15636902, 3749507, 4943508, -1926830, -6114423, -7864085, -9216463, --15670725, 2148558, 18151606, -5793911, 8837432, 4950487, 13543106, 7233262, -4895726, -11369315, -6085432, -2779918, -3919695, -11789685, -1611687, -1480690, -4581120, -4982699, -2566243, -8252780, --10820096, 12940736, -1082869, -7328288, 10242960, 3666292, -8597988, 1434519, -461709, 5839008, --11479911, 3400540, 4197257, -17115444, 5944772, 5738613, -8679055, 2662880, 865973, -2675765, -6562710, 701153, -1002338, 872952, 4513474, 11733314, 9453760, 11970074, 8397735, 4335233, --2862596, 17761300, -4277788, -8939438, 19794430, 1406602, 12050068, 2644626, -3577171, -18080202, --16580184, -4081293, 1286343, -6548752, -2990908, -5124433, 11781632, -10029822, -2715493, -1633698, -3054796, -9791989, 7364795, -702764, 2493766, -772020, -3587908, -6350109, -4065724, -4987531, --3850438, -1148367, 906238, -3043521, -1954210, -1670205, 4482872, -4850092, -4063039, -3472481, --3899830, -116501, 3657702, -1446330, -1389959, 2479270, 869194, -1177895, 1935420, -3025268, --3095598, 2634963, -3653407, -6300717, 2519535, 5727339, -2729989, 654983, 4113505, -1267552, --2841121, -3171833, -30862024, 15214922, 26735098, 1933809, -15051713, 6977711, -2719788, -974958, -4443681, 2661269, 6934225, -7986492, 1002875, 23971824, 18423262, 16136192, -17452600, -658204, -4372277, 9253507, -8340827, -9329206, -2334852, 3111704, 8366597, 4217121, -22470196, -25482040, -8018167, -751619, 14472429, 14868640, -9473087, 12324409, 9899900, 13159780, -833224, -7681549, --8047158, 6346888, -8526047, -3182571, 49392, -258235, 7864622, 16715476, 9387725, -4429185, --3868155, -8102456, -2047089, 853088, 4540854, -1646583, -2878702, 8287677, 5185100, -12409771, --123480, 651761, 15116137, -7450695, -8610873, -16299401, -5537287, 2955474, 1141924, 8633421, --1791001, 2270427, -7312719, -10773925, -9867687, -9856950, -5720897, 4930623, -20589000, 2620467, --2854543, -3077344, -4327717, 4242354, 11330124, 8395050, 1339493, -1680943, -10446434, -3171297, --936303, -1956358, 6950868, 3710852, 2141041, 1705102, 3625489, 4384625, -1578937, -1568200, -131533, -1710471, 390842, 658741, 1406065, 2507724, -6678138, 1238024, -844498, 5291937, -1401770, -6529424, -355945, -4052302, -3250753, -1462436, -1486596, -1565516, -833224, -640487, -1789391, -133681, 3681324, 3361349, 2813741, 4912906, 15463493, 1144072, 13401909, -1982127, -17434346, 8631274, 13566191, 8287677, 3861176, -6913287, -814433, -4376035, 9258339, 2633889, -8115341, -8002598, -1504312, 14432701, -18080202, -10166724, 13866302, -23812910, -10567767, 1633698, --4647155, -11857331, 23722714, -4394826, 16347719, 6476811, -14478872, -2328946, -5524402, -17486422, --22667226, 17870822, -289910, -6693170, 4327717, 193810, -3118146, 6422587, 2448131, -2458869, --8417599, 1457068, 16884054, 14285598, -12020003, 4584341, 809601, 13318157, -6249178, 8982387, --19463718, -4817880, 13080860, 4299263, -4550518, 15620796, -5136244, 10910291, -21593484, -24894704, --9048422, 346282, -17661442, 18813568, 13252658, 19113678, -8949101, -6637872, -6797860, 861141, --9885404, -242129, -15044734, -13688598, 499827, 3677566, 13707388, 6395743, -1575716, -5239860, -4232691, 7841537, 5115306, 3049964, -5033702, 5629092, 5039071, 6361384, 4702453, 3378529, -5099737, -7306813, 5922760, -4479114, -2311766, 9317395, 8254927, 5477694, -1108638, 186831, --2639258, 4702453, 1411971, -2145336, 2526515, 4770098, 635655, 3671660, 3614752, -5090073, -1531693, -3888019, -1195075, 1006633, 21640730, 15575699, 24380918, -21556978, -16186121, -36965172, -16002511, -4074850, -31572304, -6089190, 3058017, 4702453, -11759620, 12918188, 10937671, 1263257, --82141, 2050847, -5178120, -10973641, 2491618, -6225018, -10241350, -97711, 24044838, 780610, --3571265, -19139448, 8158291, 15175730, -7763154, -23102630, -4124779, 7830263, 2840047, -4879620, -5116917, 1678259, 8399345, -2310156, 13804562, 21005074, 8016020, -13920526, 15890842, 7144678, --17781702, -18985366, 20750598, 10019622, -7960722, -9252970, -369904, -16827682, 12425877, 16273094, --294742, 937914, 4186519, -2059974, 17881022, 6000070, 4721780, -7355669, 2974265, 6024229, -22064858, -5254356, 8519605, -16998406, -19276350, 17300128, -2499134, -1600412, 1896228, 16489453, -473520, -760746, 10510859, -4961761, 2189360, 9554155, 11763915, -5557151, -7133941, -15618649, --7588671, 5117454, -6781754, 5451924, -46708, 5784247, -2997887, 4268124, 1014686, -2398202, -2011118, 8749385, 2290828, 8709120, 2762738, -5498632, 494458, 3637837, 3154117, -5396627, --4807679, -5257040, -2111513, -4129074, -3896609, -6422587, -2615635, 3586298, 2430415, -649614, --889058, 1962800, -4110821, -99321, 5661841, -1545115, -726923, -2642479, -2063732, -1150514, --7979513, -1140851, -2988760, -3249680, -4851166, -7015292, -24796456, -1812476, -16137266, -32996086, --34013456, -14559939, -25910464, -11610907, -3973919, 4951024, 14884746, 16575889, 1924145, -8581345, -17835388, -8688182, 8918500, -32575180, -2976949, -22268332, -14861661, 15503758, 10961293, 10669773, -3717294, 22215182, -1968706, -1124745, -15569256, -5235029, -2934537, -10518912, -10624138, -26725434, --10356240, -2729452, -4098473, -16440598, 15009837, 6125697, 9057549, -7099581, -2578054, -40687300, --11548093, -11035918, 9730248, 21226802, -12674985, -1735704, -23598698, -1475858, 12524662, -3663070, --7804493, 5610838, 17854180, 30284352, 6564321, 1197222, -1410897, -7815230, -11774653, 8275865, --7673496, 27491012, 5608691, 11973832, 55818468, -10817412, -9207873, -13797582, -19227494, -2402497, -19233400, 8784819, 2964601, 6555731, -7778186, -5986648, -16703128, -3822521, 9782325, -1320703, --3498251, -1356673, -3702262, 2232309, -374736, 3929358, 3995930, 4052839, 5265093, 5721434, -14405320, 8871255, -4995047, 8467528, 31675, 753230, 6172405, -6622303, 380641, -7676181, --4527433, -10591389, -7781407, -11058467, -9110163, -6052683, 12620225, -7480223, -4092567, -8864276, -819802, 2910377, -1711545, 3937948, 1753420, -22012, -7418483, -27755152, 15832860, 26058104, --15337865, 822486, 5890011, -8959839, -2110440, -19419158, -345745, -10886668, 28308130, 8053, --5269388, 22687628, -5701032, 6597070, -25957708, 13498008, 4090420, 17584132, -8143258, 13088913, -23191212, 24829206, 14014478, 22377854, 11549167, -3585761, 21844204, -10561861, -14249628, -4621922, -8823473, 14725295, -35337380, -2456721, -22810572, 18131204, 8324184, -496069, 6353867, 25401510, -1194538, 22662394, 9809705, 34343096, 3207804, -3973919, 15182709, 4920422, -17416092, 3710315, --1918777, -23591182, 16641925, -14256070, -22828288, -47029356, 3787624, -5858873, 27768038, -15455977, -37115496, 12127914, -462783, -5726802, 14578730, 15129022, -26873610, -11625940, -19810536, 6888591, --8839580, 20226074, 6644315, 6750078, 10004589, -4754529, 1939178, -7188165, -2266669, 492311, --2465848, -20970714, 8470212, -115964, 6414534, 125091, -5921150, 592706, 8780524, -13980119, -12232067, -5172751, 219043, 1284195, -11409044, -1074816, 7328288, 3493419, -8104067, -3543885, --1736777, -9913321, 3604551, -2878702, 14644765, -11569568, 5428302, 9918690, 3914863, -4311611, --2801929, 4789426, 2738042, 2947958, -2175401, 4970888, -14954002, 4041027, 4071629, 6528887, --4248260, -7226283, 966368, 6394133, 1330366, 17534204, -12265890, -13685376, -13470628, 16850230, -8584566, 22040162, 5881958, 68863896, -20874614, 49929, 193810, 31883690, 13008382, 14590541, --21453898, 8957154, -8657580, 277562, -10100152, 1830193, 22948548, -6444599, 7054484, 44659068, -13791140, -20691004, -24182276, 2456185, 29004452, 14979772, 5245229, -11667816, 24641838, 3922379, --4034585, -27757836, 8059506, -4676683, 11496017, -25226490, -15534897, 983011, -6667400, 2962991, --23559506, -1116155, -14499810, 6267431, 20264730, 16149077, 5057324, -32185948, -62277, 2837363, --29052232, -25965224, -17331266, -14337675, -14333380, 22420266, 4861903, -963146, 14491220, 23325430, -5975910, 20159502, 223338, 13241384, 90058488, -20936354, 14563160, 10064719, -16213502, 3053185, --60559576, 901943, 29577830, 7517804, -16900160, 22716618, 5221070, 8449811, -15357192, -3722126, --13167296, 4201552, 791348, 834297, 4831302, -18972482, 6583648, -10547366, -7771744, -25862146, -6019397, 5560909, 4771709, 6272263, 31662498, 4522064, 3102577, 3364570, 2184528, 18809810, -1929514, 7765301, 6372121, 14276471, 5549635, -1184337, -3543348, -2961917, 2110440, 8939974, -10734197, 2957085, -17096118, -8024073, -4024921, -4032974, -5851893, -17848274, -4561792, 5880884, -13155485, 36283884, -17322140, -1185948, -24855512, -18153216, 5515275, 15715822, -20608326, 23929410, -9881646, -32161252, 19298898, -13220446, -16049219, -1651415, -19346680, 4150012, -8810052, 24270324, --14449344, -1465658, 13284334, -47862580, 6546604, 14396730, -14595373, 11346767, -28963648, 28341952, -2888903, 4581120, -54575076, 48668960, 20786032, 15731928, 840740, -31355946, 28164784, -2194192, --14305462, 49760416, -10216117, -22410066, -11827803, 5661841, 14287746, 13340168, 3437585, -8858907, --59261960, -7079180, 14554570, 446677, 21465710, -31412854, 31777390, 2822867, 10608032, -31933618, --9310952, 4634270, 40568652, -17399986, 9327058, -29635274, 25617332, 14014478, 24166170, -9856413, -10601590, 3743064, -32091996, -30939334, 16564615, 13211319, 25799868, 5082020, 33165738, -50752016, --65947076, 10001905, -14059575, 36653252, -24426016, -5764920, 4102768, -28524488, 1205812, -17246442, -14385456, 20117626, 1887101, 16214038, 18264348, 4926328, -16830904, -8971113, 29492466, 14871324, -3678103, 4613332, -9069360, 127238, 17891760, 9534291, -14792941, -8866423, 16637093, -2986613, -10303627, 9910100, -6632503, -9210557, -8841190, -562104, 8800925, 3417183, 11305428, 15796353, -1183800, -1183264, 13253732, 158377, 2531346, 3562139, -5782637, 3903052, -9987410, 4884989, -1844152, -490700, 4165045, -4853850, -45926084, 41895260, -9034464, -10115185, -16340203, -4774930, --36211944, -67626408, 23363548, 19417548, -2970507, -13943611, -27540940, -4553202, -8535174, -14653892, -26658862, -60483340, -25834228, -31933618, -9511742, -46055472, -4234838, -6944425, -1642288, -7722351, --9330816, 7410429, -448824, -20391968, -6377490, -473520, -27886686, -14913200, -8225399, 2020782, -21472688, -11033234, 43035572, -22501870, -3224984, 18078592, -19197430, 11650636, 2441689, -29521458, --44141528, -10843182, 11259794, 40223980, 17443472, -30862562, -13063143, -88550952, -29646012, -6421513, -18597208, 48029544, -2579128, -51536388, 2826625, 27919434, -10331544, -2487860, 29606284, 31149250, -71547176, -79177720, -15399068, 11144903, 19955492, -25046638, -29721710, -42385960, -42083164, -23584740, --19617800, -5595806, -3104725, -48978196, -20365124, -18022756, 17976586, -9342628, -4945118, 43898324, -33204930, 2542084, -6437619, -2160369, -27355184, -1360968, 9513889, -19807852, -10712722, 3554086, -12221329, -8508867, -9844065, -6706055, 13631689, -9375914, 14279693, 825171, 14738717, 10434623, -10532334, -8502425, 5173825, -20846160, 10308995, -2973728, 5926518, -18488224, -14462765, -2335925, -4321274, -10561325, -140123, -23405424, -4480725, -3111167, 9421011, 11864847, -15181636, 29759828, -106300, 10787884, 6152541, 21418466, 21298206, -1498944, 13295071, -25519622, 6718940, -10059887, --62293668, 14647449, -10263898, 18991272, -16876000, -17424146, 1804960, -25824564, 4948876, -26047366, --57982, -4191888, -9900436, 13153337, -19279572, -25356414, -23046794, -29853244, -4582193, -2906082, -34029024, 7820599, -23992224, -35992364, 5264556, -381178, 9152038, -6704444, 20820928, -23548232, --9015673, -33229088, -21013128, -9293772, 1611150, -13824426, 35506496, -11878269, -29420526, 9646497, -36841156, 26714160, 11274826, -25355876, -16223702, -2285996, 33510408, 63504312, -54761, 12758737, --11587822, -61495880, -13045963, 5934034, 23854786, 53064856, -28672128, -35470524, 21540872, 10261214, --11865921, 1964948, -19096498, 12433393, -51688856, -5731097, 3567507, 12970801, -30928596, 36621040, --50523848, -57897232, -53111564, 27376122, -10424959, 51448340, -70762272, -30838402, 6340446, 73117520, --5233955, -12728136, -39464844, -14439680, -4050154, 35377108, -2338610, 75162, 2749316, 6330782, -1352915, -302258, -14512694, -12715788, 17435956, 7610682, 2709051, -37958384, 10248329, -9616969, --3827353, -19564112, 1582696, -1586454, -2913599, -44727788, 4854924, -9763534, -4436701, -3723737, -8323647, 7516, 3491272, -154082, 984621, -537, 923955, -16245177, -2454037, -10413685, --8324721, 7936026, 8860518, -13030931, 1221918, -9261023, 12949863, -4433480, -20117626, 3221762, -36753644, 10874857, -67126040, -12328704, -46494096, 19996294, 3267933, -92053496, 5662915, -28657632, --59905668, -46626700, -68291056, 41427644, -21265994, -53739704, -24575266, 16864190, -32395864, -27855010, --22036940, -13134547, -24240796, -23848880, -43906912, -31700080, -59998544, -33870112, -30866856, -10361072, --28639916, -6109054, -13778792, -1169305, 1558536, 7542500, 15915538, -16716013, 13105556, 1343251, -29730300, 12941273, 18282066, 18879602, -56392384, -14949171, 43914428, -7984881, -28452548, -31519692, --23904714, 17580912, 71293776, -5097590, -1902671, -48678624, -50183472, -10730439, 9330816, 42789148, --3839164, 38970384, 13657459, -47837344, 84849760, 1315334, 65802120, -164819, -17995912, 35498980, --49028124, -62414464, -40786620, -137842144, -84461608, -27719182, 61938796, 38279968, -56251724, -36674188, --85418848, 41411536, 54633056, -43482248, -44268764, 9478993, 35647156, 52038360, 13466333, 29637958, --29263222, -15882252, -22403086, -32563368, -14468671, -3441880, 1737314, 743566, -18888192, 2141578, -10527502, 3282966, -4211216, -13356275, -10078678, -15161235, -6913824, -22111028, -6151467, 12411382, --22416508, -34600256, -6620155, -23023710, -16834124, -3502546, -30329986, -22987738, -7592966, 12671227, -12261595, 14719390, -2282238, -13287555, -4053376, 3940633, -9367861, 19947976, -1129576, 14305999, --1293859, -1436130, 13304735, 10633802, 15129559, 36419176, 21452824, 26664768, -23364622, -56738128, -65994856, 63124744, -39915816, -51758652, -255014, 56654912, -6158446, -3252364, -17667884, 49557480, --5521181, -13168907, -1242856, 13728326, 25380036, 740345, -19138374, -21662742, 30499100, 2339684, --13190381, -32599876, 18514530, 10334228, -3786014, -25667262, 8022462, 11175505, 9116605, -16190953, --9863929, 2982318, 25114284, -7304666, 8955007, -36968396, -10424959, 180389, 24311662, -51495048, --9339406, 5154498, 37034428, -17721572, 5633387, -26234198, 3461207, 11068668, -18284212, -13677860, --2297808, 6194954, 11178726, -11602854, 637266, -45838040, 24732570, -7518341, 42928736, -26546656, -19050864, -18006114, 19808390, 3924526, 13217762, 11559368, -33680596, 38067904, 7283191, 22050362, --37165424, 10477573, -9616432, 6085432, -10757282, 1682017, -2787971, 5258114, 12319577, -1748589, --15014669, -8559333, 3528853, -1760400, 674310, -5519570, -14651744, 5062693, 3557844, -4224101, --4347044, -24696, -4791573, 923955, -8113730, 0, -4115653, 6720550, 3478924, -2426657, --6113886, 2270427, -149787, -4847408, 3419868, -15526844, -462783, -1586990, 6708739, 537, -17865454, -11809013, -12611098, -3914863, 9269613, -12809203, 19178640, -16135655, 7939784, -7779260, -17451526, -15664283, 19235548, -10870562, 14966350, -13581760, 23455354, -22157200, 16898548, -4927401, -12643310, -11843909, 12430172, -13454522, 14077292, -13554380, 11254425, -9014599, 12492986, -9713605, -10415296, -9676561, 2931315, -3140158, 6311455, -4794794, 5186173, -4241817, 4224637, -3034931, -5826123, -3564823, 2267206, -2790118, 3100430, -2425583, 1115081, 488553, -19240916, -42899744, --57077968, 41793788, 27759984, -32510218, -46368468, -22673670, 21611738, 11380053, 28716688, 30903900, -6133750, -15440407, -4431333, 10873247, -10497974, -772557, 6470905, 1842541, 17344152, 12152073, -5326297, -15427523, -477815, -9517648, 10104984, -16167868, -13992467, 11905112, -3656628, -6525129, --6404870, -11210938, -15403363, 1281511, 12758200, 11649025, 9782862, -3583613, -12685186, -11005854, --7668664, 13904420, 18874770, -8654359, -13030931, -5579163, 15677704, 8149164, 20941724, -14636175, --5512054, 8338142, -3837017, 789737, -2142115, 7503845, 4528506, 6082211, 1345399, -13996762, -5927592, 2731062, -433255, 11032160, -5586142, -2680060, 1973001, -1901060, 1486596, -3970161, -18591302, 4769025, -1412507, 17750562, 17745732, -17830556, -27095338, -9838159, -18532784, 681826, -12393665, 3645354, -11053635, -13303124, -3503083, -2461553, 10778757, 5239860, 6747394, 10157061, -6195491, -5456756, 6271726, 4530654, -13006772, -17394618, 5326297, -4483409, 8797704, 6546067, --9542880, -2427194, -3193845, -3379066, -11101954, -5983427, -623844, 3680787, 5406827, 15012521, --7329899, -5383205, 3876745, -3296388, -4307316, 8843875, 368293, 19603304, -47634944, -125403920, --46101644, 22486302, 65233036, 137773424, 92197912, 23722714, 34942244, -18420578, -56082608, -93145496, --81036904, -64435784, -18580028, 2469606, 44824428, 49407156, 105197704, 51060180, 33675764, -2652679, --22422950, -50646256, -26291642, -40956808, -47215648, -29086056, -24336896, -1829656, 13157632, 39343512, -24333674, 28236188, 25683904, 25941602, 39046084, 3353833, 27056146, -5033702, -12139188, -32964948, --19625316, -49154292, -72321880, -63218160, 753767, -10768557, 19844360, 33960308, 18643916, 52395916, -45781132, 66227320, 37723236, 44907640, 2237141, 2187212, -35413616, -57905824, -67627480, -81226960, --53359600, -66387308, -5566278, -288837, 31961000, 33481954, 80232136, 62986768, 89620936, 36341864, -41909756, 17443472, -358093, -53494892, -87195888, -58430884, -69655776, -43438764, -47158740, -4438849, -7319161, 27814208, 36553928, 49466212, 50548008, 48551384, 31836446, 34757560, 9083856, -6337224, --11926050, -39210368, -35694936, -46939160, -33120104, -46922516, -35701380, -3764002, 8404177, 24684250, -37347960, 33252174, 34338800, 56484724, 20500416, 34473556, 26528402, -35676684, -64471756, -28008556, --56842280, -35904316, -19477140, -4107599, 5111011, 18074296, 32869384, 22803592, 35358856, 22369264, -19273666, 7709467, -2115272, -20561082, -6688875, -9667971, -35938140, -33678448, -9214315, -3845070, -1974611, 11789685, 13902272, 17510044, 14091788, 13838921, 5286568, 4650376, -111132, -7901129, --3817689, -2899103, -7912941, -12837120, -4249334, -6426345, -7367480, -877784, 3577708, 3899830, -6002754, 7105487, 8892730, 5690832, 4224637, 1312113, -700617, -2229625, -3507378, -4809827, --5105643, -3714610, -2746632, -2067490, -1822677, 41876, 975494, 1110786, 1637456, 1739462, -2630131, 3909494, 3933116, 1130113, 780610, 1054951, -507880, -2042257, -2685428, -3712462, --3187403, -2237141, -657130, -887985, -36507, 1539746, 1659468, 1575179, 2268817, 1816771, -1059246, 74088, 63888, 117038, -257698, -1005022, -863288, -1021665, -999117, -1023813, --650688, -391379, 114890, 441308, 841814, 932545, 733903, -30602, 353798, 511638, -343061, -132607, -598611, -794032, -656593, -408559, -60666, 222265, 530965, 369904, -141734, 164819, 227633, -165893, -328028, -277025, -264677, -208843, 12348, -11274, -26307, 100932, 104690, 48318, 19327, 10201, -9664, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +2232309, -5614059, 2633889, 2989834, 1023813, -7104413, 3218541, 5006858, -5430450, -1642825, +-6649683, -1478543, -2834142, -2451890, -970663, 346282, -245350, 653372, 2370822, -2976949, +1307281, -6817724, 2325188, 4154844, 874563, -1809255, -5523865, 3578782, -2434710, 5802501, +4955856, -237297, -2326262, 4725538, 5523328, 4429722, 4489852, 1095217, -3467112, 1058173, +4246649, -1812476, -3621731, 3216394, 5122822, -2281702, 2668785, -5871757, -496069, -5153961, +3485366, -6852084, -1857573, -1299765, 2323041, 3374234, 2397129, -223875, -3631932, 413391, +-5019206, -3333968, 902480, -650151, -3031710, 1618666, 1682017, 399969, 3145527, -2843805, +1346472, -3830574, -1520955, -1648194, 2079838, -2001992, -4034585, -1835025, -1511829, 5500243, +4743792, 1174137, -2538863, 295279, -307627, 933619, 1897302, 317828, 94489, 302795, +-91268, 46708, -724239, 518080, -2131378, 64961, -174483, 837519, 443992, -689342, +-939524, 156766, 369904, 367220, -179852, 19327, -428423, 9742060, -9768903, 396211, +197569, -2454574, -2915209, -3105261, 1038308, -5493800, -5420786, 795643, 2668785, -176094, +3157875, 2469069, -2969970, 1260573, -10718628, -2601140, -2377265, -2472291, -3362960, -3707094, +-9444096, -7327214, 1033477, 2245194, -484794, 5155035, 4123169, 1754494, -1800128, -991601, +4825933, -1823751, 619549, -668404, -5019206, 1719598, -1663763, -3403762, -1303523, 4156992, +9988483, -3766150, 1137630, 2459406, -1817845, 3171297, 1427540, -3447248, 2055142, -8199093, +-3787088, 128312, 3393024, 5266704, -3180960, -1451162, -333397, -11897059, 2063732, 6207302, +357556, 933619, 3400540, -1903744, 5294084, 7144141, -875100, 2057826, 4294968, 4093641, +830002, 260919, -1957968, -2811593, -1757715, 1298154, -2690260, 5974300, 4010963, -92879, +-2877628, -1445793, 3441343, 4060355, -1990181, 3160022, -1877975, 889058, -1915019, -1132798, +-1306207, 415538, 111132, 271657, 287226, -180389, -623844, -462783, -2564096, -8380555, +1950452, 314606, -8106751, 1250372, 4553739, 6700149, 1725503, -4804995, 11347840, -1513439, +-2228014, 5340792, -3289408, -3199751, 551903, -4131759, 5060545, 5063230, -2039036, -7619809, +-3765613, 3808026, -4908074, 10800769, 9315784, -7431367, -9102646, 338229, 1707786, -8654359, +-563178, 3593814, 2434173, -4230006, -2464774, 9960566, -1052804, 6860674, -676457, -2209761, +-2310156, -5108327, 894427, -712965, 5369246, -4565550, 1243930, -1184874, 999117, -2681670, +-352724, 4545149, 3599720, -5652714, 8834748, 747861, -39728, -121870, -808528, 2415919, +-1217623, -7888245, -1122597, -4155381, 6888591, 2907156, 179315, 8483634, -4682051, 5682779, +5565741, 534723, -4118874, -818191, -877784, -65498, -1173063, -1682017, 2338610, 2505577, +-3741454, 1819992, -222801, 2651069, 2315524, -738198, 360240, -1131724, -1759863, 1282585, +-1620276, -1335198, 690416, 1804960, -1636383, -1186485, -2128693, -880468, 1274532, -778463, +-313533, 59056, 644782, -1143535, -673773, 1672353, 539555, -312459, -520228, -1806571, +-78383, 965294, 552977, -20148228, 4707821, 1150514, 14471892, -712428, 5855651, -7682086, +1735167, -5740224, -1322850, -2779381, -848256, 2712272, -1490354, 2537252, 4923107, 3774203, +13743895, 9504763, -6140730, 3201898, -264677, 2590402, 1682017, -1679332, -13519483, 3507378, +-625455, -66035, 5226439, -743029, -3721589, -2569464, -572841, -4153770, -2199023, -10792179, +-2478196, 352724, -3766150, -614717, 4570382, 6508486, -2013803, 8026757, -5885179, 1377074, +2789045, 1109712, -1777580, -4123169, 3033858, -986232, 1895691, -3046206, -4360466, 893890, +2649458, -4405026, 4336307, -2988224, 10229538, 10847477, -3206730, 4003983, 4209605, -490163, +-1327682, -1377611, -13097503, 5573257, 5422396, 232465, -2145336, -5429913, 649077, -1544041, +-6638946, -14960445, 1058173, -3655017, 3927748, 70867, 10737, -2439005, -1627793, -2757369, +-209380, 1614371, -1889786, 2363306, -2343442, -1325534, -947577, -526134, 1301375, 1096827, +-741956, 548145, 410706, 901406, 1413581, 1114007, -631360, -1516124, 1203665, -594316, +-1117228, 517007, 461172, -622233, 910533, 1442035, 537945, -103616, -4363150, -6641630, +6558415, 3723200, -610959, 7588671, -4124242, 6804839, -7738458, -7425999, 3562675, -11830487, +-4217121, 2944737, 7145215, 9357123, -1677185, 6977175, -282931, 6644315, 2427730, 1055488, +-1138166, 336618, 6619082, -3202972, -741956, 1184337, 536334, -6589554, -858993, -3586835, +13526463, -6512244, -6616934, -1621887, 6352257, 6411313, 5482526, 7369627, -1324461, 1334661, +-1685238, -3692598, 2753611, -353261, -745177, -4218732, 10596758, 6541772, -3335579, 2007360, +3098819, -5633387, 1145146, 4117263, -1094680, 7964480, -3271691, -1053878, -8726300, -3291019, +-7427072, 313533, 10128607, -4021163, 2824478, 1728724, 301721, -2791729, -993211, 77309, +-2538863, 4874251, -5073430, -2380486, -498216, 10719701, 1647657, -74625, 3336653, -2931852, +-8104604, 1987496, 757525, -1290638, 529892, 1970316, -586800, 399969, 3859028, 734976, +-369904, 925565, 1611, -528818, -991064, 3629784, -234613, 302258, -3379603, 2013803, +456340, 2005750, -550293, -1366337, -467615, 1020055, 1585917, 1066763, -2767033, 135828, +1858110, -590558, -3475702, -2298881, -19144280, 13739600, 1370632, -7095286, -16918950, -1759326, +341450, -10041634, -985695, 4555887, 3864934, 282931, -2967286, 3590593, 11943230, 12124693, +-5318780, -5818607, -13326210, 2565169, -2476586, 12778065, -5331128, -364535, -3109020, 4760435, +-1534914, -13259638, 4235912, -697395, -7904888, -70867, 1139777, -1148367, -1425392, -5495411, +-7638063, 4508105, 1039382, 5920076, -5308580, 10016937, 4694400, -2161442, -9039832, -1851668, +3135326, 9795747, 2964064, -5658620, -2644089, 4511863, 2863133, -2942590, -1498944, 4760971, +3860639, 5029944, 9681393, 10843182, 5234492, 5738613, 6610492, -4005057, 872415, -7300371, +7124814, 1065689, 3549254, -5236102, -8130373, 1761474, -10365904, -3771518, -4580046, 7460895, +7791608, 8193724, 2066416, -2415919, -2726231, 7649874, 1462973, -1152662, 1836099, -2505040, +4822712, 184147, -184684, 1549410, 1913408, -839129, 3929895, -73551, 570157, -2011655, +-1283122, 1043140, 3038689, -264141, 1025960, 1756105, 933082, 538482, -1071594, 1439351, +-1384590, -2007360, 1589675, -6840809, -392990, 12840342, 7898982, 10858751, 2076617, -11848204, +-3898757, 12610024, -3620658, -7961796, -8301098, -8167954, -8648454, 4779762, 4849018, 3124589, +2855080, 2957085, 12126303, -1478543, 5267778, -10387378, -11702175, 7862475, -409633, -6370510, +464930, -16291885, -5320928, -5474473, 2008971, -551903, -1501091, -11454678, -7508677, 1296006, +7929047, 12902082, -5105643, -5029944, 6864969, -8820789, -632971, -427886, 2961380, 5659693, +4597763, 8952322, -4792647, 12968117, 6104759, -13960254, 6986838, -7747584, -9278740, -7690139, +-11224360, 10184441, 2383707, -11933567, 1364189, 2552284, 1104880, 1923609, -2198487, 8453033, +-4893579, 6505802, -10413685, 7923678, -5288179, -4779225, 1020592, 3535295, -414464, 5735929, +16328929, -1337882, -8772471, 5211406, 10696616, 890669, -1175210, -8452496, -3716221, 7924215, +-1353452, -492848, 255014, 1632625, -2226404, -1228361, -210990, 2369748, -1364189, -236223, +-1566053, 4493073, -3278134, 732829, -3082713, -3782256, 988916, 1283122, -1218160, 647466, +-1133335, -788127, -265214, -379568, -117575, -1567663, -982474, 4620311, -261993, 90194, +-464930, 1762547, 968515, 1586454, 26386132, -24171002, 10882910, 11365020, -10976326, -2146410, +15703474, 5565204, 9899363, 2819109, -3703336, 23728084, -1164473, -4678830, -229244, -120259, +11282342, 17799418, 6611029, -324807, 157303, 2501819, 5980205, -286689, 3076807, -12781823, +5751498, 9606768, -2262374, 3800509, -204548, 1621887, -8316131, -6528351, 250719, -477815, +10901164, 5287642, 4387846, -4877472, -5959804, -5946382, 6186364, 9093520, -129386, -3187403, +17942226, 9202504, 11920682, -6736120, -13750875, -2777233, -14390288, -9529459, -4482335, -6112276, +-1024350, 10417443, -3569118, 210990, -8894340, -9470940, 10366977, -732829, 4723391, 5083094, +-5728950, 9963787, 2434710, 711891, -3743064, -7004555, 7764764, -2643552, -14337675, 7965554, +6687264, 8338679, 3637837, -10151692, -2300492, 726386, -10603201, 5735929, 5743982, -1174137, +4284230, 3559454, 3806415, -1177895, 6140730, 741956, -467615, -3427921, 1361505, -269509, +4845797, 885837, -360240, 828929, -268435, 3517578, -1805497, -668404, -2689187, 1056025, +-879395, -2144263, 198642, 309775, -957778, 364535, 3878892, 2884608, -1998234, -1370632, +-2871723, 474057, -795643, -570694, 227633, 286689, 1162862, -1991791, -18442590, 2422899, +6278169, -8990977, 7757785, -15636902, 3749507, 4943508, -1926830, -6114423, -7864085, -9216463, +-15670725, 2148558, 18151606, -5793911, 8837432, 4950487, 13543106, 7233262, -4895726, -11369315, +6085432, -2779918, -3919695, -11789685, -1611687, -1480690, -4581120, -4982699, -2566243, -8252780, +-10820096, 12940736, -1082869, -7328288, 10242960, 3666292, -8597988, 1434519, -461709, 5839008, +-11479911, 3400540, 4197257, -17115444, 5944772, 5738613, -8679055, 2662880, 865973, -2675765, +6562710, 701153, -1002338, 872952, 4513474, 11733314, 9453760, 11970074, 8397735, 4335233, +-2862596, 17761300, -4277788, -8939438, 19794430, 1406602, 12050068, 2644626, -3577171, -18080202, +-16580184, -4081293, 1286343, -6548752, -2990908, -5124433, 11781632, -10029822, -2715493, -1633698, +3054796, -9791989, 7364795, -702764, 2493766, -772020, -3587908, -6350109, -4065724, -4987531, +-3850438, -1148367, 906238, -3043521, -1954210, -1670205, 4482872, -4850092, -4063039, -3472481, +-3899830, -116501, 3657702, -1446330, -1389959, 2479270, 869194, -1177895, 1935420, -3025268, +-3095598, 2634963, -3653407, -6300717, 2519535, 5727339, -2729989, 654983, 4113505, -1267552, +-2841121, -3171833, -30862024, 15214922, 26735098, 1933809, -15051713, 6977711, -2719788, -974958, +4443681, 2661269, 6934225, -7986492, 1002875, 23971824, 18423262, 16136192, -17452600, -658204, +4372277, 9253507, -8340827, -9329206, -2334852, 3111704, 8366597, 4217121, -22470196, -25482040, +8018167, -751619, 14472429, 14868640, -9473087, 12324409, 9899900, 13159780, -833224, -7681549, +-8047158, 6346888, -8526047, -3182571, 49392, -258235, 7864622, 16715476, 9387725, -4429185, +-3868155, -8102456, -2047089, 853088, 4540854, -1646583, -2878702, 8287677, 5185100, -12409771, +-123480, 651761, 15116137, -7450695, -8610873, -16299401, -5537287, 2955474, 1141924, 8633421, +-1791001, 2270427, -7312719, -10773925, -9867687, -9856950, -5720897, 4930623, -20589000, 2620467, +-2854543, -3077344, -4327717, 4242354, 11330124, 8395050, 1339493, -1680943, -10446434, -3171297, +-936303, -1956358, 6950868, 3710852, 2141041, 1705102, 3625489, 4384625, -1578937, -1568200, +131533, -1710471, 390842, 658741, 1406065, 2507724, -6678138, 1238024, -844498, 5291937, +1401770, -6529424, -355945, -4052302, -3250753, -1462436, -1486596, -1565516, -833224, -640487, +1789391, -133681, 3681324, 3361349, 2813741, 4912906, 15463493, 1144072, 13401909, -1982127, +17434346, 8631274, 13566191, 8287677, 3861176, -6913287, -814433, -4376035, 9258339, 2633889, +8115341, -8002598, -1504312, 14432701, -18080202, -10166724, 13866302, -23812910, -10567767, 1633698, +-4647155, -11857331, 23722714, -4394826, 16347719, 6476811, -14478872, -2328946, -5524402, -17486422, +-22667226, 17870822, -289910, -6693170, 4327717, 193810, -3118146, 6422587, 2448131, -2458869, +-8417599, 1457068, 16884054, 14285598, -12020003, 4584341, 809601, 13318157, -6249178, 8982387, +-19463718, -4817880, 13080860, 4299263, -4550518, 15620796, -5136244, 10910291, -21593484, -24894704, +-9048422, 346282, -17661442, 18813568, 13252658, 19113678, -8949101, -6637872, -6797860, 861141, +-9885404, -242129, -15044734, -13688598, 499827, 3677566, 13707388, 6395743, -1575716, -5239860, +4232691, 7841537, 5115306, 3049964, -5033702, 5629092, 5039071, 6361384, 4702453, 3378529, +5099737, -7306813, 5922760, -4479114, -2311766, 9317395, 8254927, 5477694, -1108638, 186831, +-2639258, 4702453, 1411971, -2145336, 2526515, 4770098, 635655, 3671660, 3614752, -5090073, +1531693, -3888019, -1195075, 1006633, 21640730, 15575699, 24380918, -21556978, -16186121, -36965172, +16002511, -4074850, -31572304, -6089190, 3058017, 4702453, -11759620, 12918188, 10937671, 1263257, +-82141, 2050847, -5178120, -10973641, 2491618, -6225018, -10241350, -97711, 24044838, 780610, +-3571265, -19139448, 8158291, 15175730, -7763154, -23102630, -4124779, 7830263, 2840047, -4879620, +5116917, 1678259, 8399345, -2310156, 13804562, 21005074, 8016020, -13920526, 15890842, 7144678, +-17781702, -18985366, 20750598, 10019622, -7960722, -9252970, -369904, -16827682, 12425877, 16273094, +-294742, 937914, 4186519, -2059974, 17881022, 6000070, 4721780, -7355669, 2974265, 6024229, +22064858, -5254356, 8519605, -16998406, -19276350, 17300128, -2499134, -1600412, 1896228, 16489453, +473520, -760746, 10510859, -4961761, 2189360, 9554155, 11763915, -5557151, -7133941, -15618649, +-7588671, 5117454, -6781754, 5451924, -46708, 5784247, -2997887, 4268124, 1014686, -2398202, +2011118, 8749385, 2290828, 8709120, 2762738, -5498632, 494458, 3637837, 3154117, -5396627, +-4807679, -5257040, -2111513, -4129074, -3896609, -6422587, -2615635, 3586298, 2430415, -649614, +-889058, 1962800, -4110821, -99321, 5661841, -1545115, -726923, -2642479, -2063732, -1150514, +-7979513, -1140851, -2988760, -3249680, -4851166, -7015292, -24796456, -1812476, -16137266, -32996086, +-34013456, -14559939, -25910464, -11610907, -3973919, 4951024, 14884746, 16575889, 1924145, -8581345, +17835388, -8688182, 8918500, -32575180, -2976949, -22268332, -14861661, 15503758, 10961293, 10669773, +3717294, 22215182, -1968706, -1124745, -15569256, -5235029, -2934537, -10518912, -10624138, -26725434, +-10356240, -2729452, -4098473, -16440598, 15009837, 6125697, 9057549, -7099581, -2578054, -40687300, +-11548093, -11035918, 9730248, 21226802, -12674985, -1735704, -23598698, -1475858, 12524662, -3663070, +-7804493, 5610838, 17854180, 30284352, 6564321, 1197222, -1410897, -7815230, -11774653, 8275865, +-7673496, 27491012, 5608691, 11973832, 55818468, -10817412, -9207873, -13797582, -19227494, -2402497, +19233400, 8784819, 2964601, 6555731, -7778186, -5986648, -16703128, -3822521, 9782325, -1320703, +-3498251, -1356673, -3702262, 2232309, -374736, 3929358, 3995930, 4052839, 5265093, 5721434, +14405320, 8871255, -4995047, 8467528, 31675, 753230, 6172405, -6622303, 380641, -7676181, +-4527433, -10591389, -7781407, -11058467, -9110163, -6052683, 12620225, -7480223, -4092567, -8864276, +819802, 2910377, -1711545, 3937948, 1753420, -22012, -7418483, -27755152, 15832860, 26058104, +-15337865, 822486, 5890011, -8959839, -2110440, -19419158, -345745, -10886668, 28308130, 8053, +-5269388, 22687628, -5701032, 6597070, -25957708, 13498008, 4090420, 17584132, -8143258, 13088913, +23191212, 24829206, 14014478, 22377854, 11549167, -3585761, 21844204, -10561861, -14249628, -4621922, +8823473, 14725295, -35337380, -2456721, -22810572, 18131204, 8324184, -496069, 6353867, 25401510, +1194538, 22662394, 9809705, 34343096, 3207804, -3973919, 15182709, 4920422, -17416092, 3710315, +-1918777, -23591182, 16641925, -14256070, -22828288, -47029356, 3787624, -5858873, 27768038, -15455977, +37115496, 12127914, -462783, -5726802, 14578730, 15129022, -26873610, -11625940, -19810536, 6888591, +-8839580, 20226074, 6644315, 6750078, 10004589, -4754529, 1939178, -7188165, -2266669, 492311, +-2465848, -20970714, 8470212, -115964, 6414534, 125091, -5921150, 592706, 8780524, -13980119, +12232067, -5172751, 219043, 1284195, -11409044, -1074816, 7328288, 3493419, -8104067, -3543885, +-1736777, -9913321, 3604551, -2878702, 14644765, -11569568, 5428302, 9918690, 3914863, -4311611, +-2801929, 4789426, 2738042, 2947958, -2175401, 4970888, -14954002, 4041027, 4071629, 6528887, +-4248260, -7226283, 966368, 6394133, 1330366, 17534204, -12265890, -13685376, -13470628, 16850230, +8584566, 22040162, 5881958, 68863896, -20874614, 49929, 193810, 31883690, 13008382, 14590541, +-21453898, 8957154, -8657580, 277562, -10100152, 1830193, 22948548, -6444599, 7054484, 44659068, +13791140, -20691004, -24182276, 2456185, 29004452, 14979772, 5245229, -11667816, 24641838, 3922379, +-4034585, -27757836, 8059506, -4676683, 11496017, -25226490, -15534897, 983011, -6667400, 2962991, +-23559506, -1116155, -14499810, 6267431, 20264730, 16149077, 5057324, -32185948, -62277, 2837363, +-29052232, -25965224, -17331266, -14337675, -14333380, 22420266, 4861903, -963146, 14491220, 23325430, +5975910, 20159502, 223338, 13241384, 90058488, -20936354, 14563160, 10064719, -16213502, 3053185, +-60559576, 901943, 29577830, 7517804, -16900160, 22716618, 5221070, 8449811, -15357192, -3722126, +-13167296, 4201552, 791348, 834297, 4831302, -18972482, 6583648, -10547366, -7771744, -25862146, +6019397, 5560909, 4771709, 6272263, 31662498, 4522064, 3102577, 3364570, 2184528, 18809810, +1929514, 7765301, 6372121, 14276471, 5549635, -1184337, -3543348, -2961917, 2110440, 8939974, +10734197, 2957085, -17096118, -8024073, -4024921, -4032974, -5851893, -17848274, -4561792, 5880884, +13155485, 36283884, -17322140, -1185948, -24855512, -18153216, 5515275, 15715822, -20608326, 23929410, +9881646, -32161252, 19298898, -13220446, -16049219, -1651415, -19346680, 4150012, -8810052, 24270324, +-14449344, -1465658, 13284334, -47862580, 6546604, 14396730, -14595373, 11346767, -28963648, 28341952, +2888903, 4581120, -54575076, 48668960, 20786032, 15731928, 840740, -31355946, 28164784, -2194192, +-14305462, 49760416, -10216117, -22410066, -11827803, 5661841, 14287746, 13340168, 3437585, -8858907, +-59261960, -7079180, 14554570, 446677, 21465710, -31412854, 31777390, 2822867, 10608032, -31933618, +-9310952, 4634270, 40568652, -17399986, 9327058, -29635274, 25617332, 14014478, 24166170, -9856413, +10601590, 3743064, -32091996, -30939334, 16564615, 13211319, 25799868, 5082020, 33165738, -50752016, +-65947076, 10001905, -14059575, 36653252, -24426016, -5764920, 4102768, -28524488, 1205812, -17246442, +14385456, 20117626, 1887101, 16214038, 18264348, 4926328, -16830904, -8971113, 29492466, 14871324, +3678103, 4613332, -9069360, 127238, 17891760, 9534291, -14792941, -8866423, 16637093, -2986613, +10303627, 9910100, -6632503, -9210557, -8841190, -562104, 8800925, 3417183, 11305428, 15796353, +1183800, -1183264, 13253732, 158377, 2531346, 3562139, -5782637, 3903052, -9987410, 4884989, +1844152, -490700, 4165045, -4853850, -45926084, 41895260, -9034464, -10115185, -16340203, -4774930, +-36211944, -67626408, 23363548, 19417548, -2970507, -13943611, -27540940, -4553202, -8535174, -14653892, +26658862, -60483340, -25834228, -31933618, -9511742, -46055472, -4234838, -6944425, -1642288, -7722351, +-9330816, 7410429, -448824, -20391968, -6377490, -473520, -27886686, -14913200, -8225399, 2020782, +21472688, -11033234, 43035572, -22501870, -3224984, 18078592, -19197430, 11650636, 2441689, -29521458, +-44141528, -10843182, 11259794, 40223980, 17443472, -30862562, -13063143, -88550952, -29646012, -6421513, +18597208, 48029544, -2579128, -51536388, 2826625, 27919434, -10331544, -2487860, 29606284, 31149250, +71547176, -79177720, -15399068, 11144903, 19955492, -25046638, -29721710, -42385960, -42083164, -23584740, +-19617800, -5595806, -3104725, -48978196, -20365124, -18022756, 17976586, -9342628, -4945118, 43898324, +33204930, 2542084, -6437619, -2160369, -27355184, -1360968, 9513889, -19807852, -10712722, 3554086, +12221329, -8508867, -9844065, -6706055, 13631689, -9375914, 14279693, 825171, 14738717, 10434623, +10532334, -8502425, 5173825, -20846160, 10308995, -2973728, 5926518, -18488224, -14462765, -2335925, +4321274, -10561325, -140123, -23405424, -4480725, -3111167, 9421011, 11864847, -15181636, 29759828, +106300, 10787884, 6152541, 21418466, 21298206, -1498944, 13295071, -25519622, 6718940, -10059887, +-62293668, 14647449, -10263898, 18991272, -16876000, -17424146, 1804960, -25824564, 4948876, -26047366, +-57982, -4191888, -9900436, 13153337, -19279572, -25356414, -23046794, -29853244, -4582193, -2906082, +34029024, 7820599, -23992224, -35992364, 5264556, -381178, 9152038, -6704444, 20820928, -23548232, +-9015673, -33229088, -21013128, -9293772, 1611150, -13824426, 35506496, -11878269, -29420526, 9646497, +36841156, 26714160, 11274826, -25355876, -16223702, -2285996, 33510408, 63504312, -54761, 12758737, +-11587822, -61495880, -13045963, 5934034, 23854786, 53064856, -28672128, -35470524, 21540872, 10261214, +-11865921, 1964948, -19096498, 12433393, -51688856, -5731097, 3567507, 12970801, -30928596, 36621040, +-50523848, -57897232, -53111564, 27376122, -10424959, 51448340, -70762272, -30838402, 6340446, 73117520, +-5233955, -12728136, -39464844, -14439680, -4050154, 35377108, -2338610, 75162, 2749316, 6330782, +1352915, -302258, -14512694, -12715788, 17435956, 7610682, 2709051, -37958384, 10248329, -9616969, +-3827353, -19564112, 1582696, -1586454, -2913599, -44727788, 4854924, -9763534, -4436701, -3723737, +8323647, 7516, 3491272, -154082, 984621, -537, 923955, -16245177, -2454037, -10413685, +-8324721, 7936026, 8860518, -13030931, 1221918, -9261023, 12949863, -4433480, -20117626, 3221762, +36753644, 10874857, -67126040, -12328704, -46494096, 19996294, 3267933, -92053496, 5662915, -28657632, +-59905668, -46626700, -68291056, 41427644, -21265994, -53739704, -24575266, 16864190, -32395864, -27855010, +-22036940, -13134547, -24240796, -23848880, -43906912, -31700080, -59998544, -33870112, -30866856, -10361072, +-28639916, -6109054, -13778792, -1169305, 1558536, 7542500, 15915538, -16716013, 13105556, 1343251, +29730300, 12941273, 18282066, 18879602, -56392384, -14949171, 43914428, -7984881, -28452548, -31519692, +-23904714, 17580912, 71293776, -5097590, -1902671, -48678624, -50183472, -10730439, 9330816, 42789148, +-3839164, 38970384, 13657459, -47837344, 84849760, 1315334, 65802120, -164819, -17995912, 35498980, +-49028124, -62414464, -40786620, -137842144, -84461608, -27719182, 61938796, 38279968, -56251724, -36674188, +-85418848, 41411536, 54633056, -43482248, -44268764, 9478993, 35647156, 52038360, 13466333, 29637958, +-29263222, -15882252, -22403086, -32563368, -14468671, -3441880, 1737314, 743566, -18888192, 2141578, +10527502, 3282966, -4211216, -13356275, -10078678, -15161235, -6913824, -22111028, -6151467, 12411382, +-22416508, -34600256, -6620155, -23023710, -16834124, -3502546, -30329986, -22987738, -7592966, 12671227, +12261595, 14719390, -2282238, -13287555, -4053376, 3940633, -9367861, 19947976, -1129576, 14305999, +-1293859, -1436130, 13304735, 10633802, 15129559, 36419176, 21452824, 26664768, -23364622, -56738128, +65994856, 63124744, -39915816, -51758652, -255014, 56654912, -6158446, -3252364, -17667884, 49557480, +-5521181, -13168907, -1242856, 13728326, 25380036, 740345, -19138374, -21662742, 30499100, 2339684, +-13190381, -32599876, 18514530, 10334228, -3786014, -25667262, 8022462, 11175505, 9116605, -16190953, +-9863929, 2982318, 25114284, -7304666, 8955007, -36968396, -10424959, 180389, 24311662, -51495048, +-9339406, 5154498, 37034428, -17721572, 5633387, -26234198, 3461207, 11068668, -18284212, -13677860, +-2297808, 6194954, 11178726, -11602854, 637266, -45838040, 24732570, -7518341, 42928736, -26546656, +19050864, -18006114, 19808390, 3924526, 13217762, 11559368, -33680596, 38067904, 7283191, 22050362, +-37165424, 10477573, -9616432, 6085432, -10757282, 1682017, -2787971, 5258114, 12319577, -1748589, +-15014669, -8559333, 3528853, -1760400, 674310, -5519570, -14651744, 5062693, 3557844, -4224101, +-4347044, -24696, -4791573, 923955, -8113730, 0, -4115653, 6720550, 3478924, -2426657, +-6113886, 2270427, -149787, -4847408, 3419868, -15526844, -462783, -1586990, 6708739, 537, +17865454, -11809013, -12611098, -3914863, 9269613, -12809203, 19178640, -16135655, 7939784, -7779260, +17451526, -15664283, 19235548, -10870562, 14966350, -13581760, 23455354, -22157200, 16898548, -4927401, +12643310, -11843909, 12430172, -13454522, 14077292, -13554380, 11254425, -9014599, 12492986, -9713605, +10415296, -9676561, 2931315, -3140158, 6311455, -4794794, 5186173, -4241817, 4224637, -3034931, +5826123, -3564823, 2267206, -2790118, 3100430, -2425583, 1115081, 488553, -19240916, -42899744, +-57077968, 41793788, 27759984, -32510218, -46368468, -22673670, 21611738, 11380053, 28716688, 30903900, +6133750, -15440407, -4431333, 10873247, -10497974, -772557, 6470905, 1842541, 17344152, 12152073, +5326297, -15427523, -477815, -9517648, 10104984, -16167868, -13992467, 11905112, -3656628, -6525129, +-6404870, -11210938, -15403363, 1281511, 12758200, 11649025, 9782862, -3583613, -12685186, -11005854, +-7668664, 13904420, 18874770, -8654359, -13030931, -5579163, 15677704, 8149164, 20941724, -14636175, +-5512054, 8338142, -3837017, 789737, -2142115, 7503845, 4528506, 6082211, 1345399, -13996762, +5927592, 2731062, -433255, 11032160, -5586142, -2680060, 1973001, -1901060, 1486596, -3970161, +18591302, 4769025, -1412507, 17750562, 17745732, -17830556, -27095338, -9838159, -18532784, 681826, +12393665, 3645354, -11053635, -13303124, -3503083, -2461553, 10778757, 5239860, 6747394, 10157061, +6195491, -5456756, 6271726, 4530654, -13006772, -17394618, 5326297, -4483409, 8797704, 6546067, +-9542880, -2427194, -3193845, -3379066, -11101954, -5983427, -623844, 3680787, 5406827, 15012521, +-7329899, -5383205, 3876745, -3296388, -4307316, 8843875, 368293, 19603304, -47634944, -125403920, +-46101644, 22486302, 65233036, 137773424, 92197912, 23722714, 34942244, -18420578, -56082608, -93145496, +-81036904, -64435784, -18580028, 2469606, 44824428, 49407156, 105197704, 51060180, 33675764, -2652679, +-22422950, -50646256, -26291642, -40956808, -47215648, -29086056, -24336896, -1829656, 13157632, 39343512, +24333674, 28236188, 25683904, 25941602, 39046084, 3353833, 27056146, -5033702, -12139188, -32964948, +-19625316, -49154292, -72321880, -63218160, 753767, -10768557, 19844360, 33960308, 18643916, 52395916, +45781132, 66227320, 37723236, 44907640, 2237141, 2187212, -35413616, -57905824, -67627480, -81226960, +-53359600, -66387308, -5566278, -288837, 31961000, 33481954, 80232136, 62986768, 89620936, 36341864, +41909756, 17443472, -358093, -53494892, -87195888, -58430884, -69655776, -43438764, -47158740, -4438849, +7319161, 27814208, 36553928, 49466212, 50548008, 48551384, 31836446, 34757560, 9083856, -6337224, +-11926050, -39210368, -35694936, -46939160, -33120104, -46922516, -35701380, -3764002, 8404177, 24684250, +37347960, 33252174, 34338800, 56484724, 20500416, 34473556, 26528402, -35676684, -64471756, -28008556, +-56842280, -35904316, -19477140, -4107599, 5111011, 18074296, 32869384, 22803592, 35358856, 22369264, +19273666, 7709467, -2115272, -20561082, -6688875, -9667971, -35938140, -33678448, -9214315, -3845070, +1974611, 11789685, 13902272, 17510044, 14091788, 13838921, 5286568, 4650376, -111132, -7901129, +-3817689, -2899103, -7912941, -12837120, -4249334, -6426345, -7367480, -877784, 3577708, 3899830, +6002754, 7105487, 8892730, 5690832, 4224637, 1312113, -700617, -2229625, -3507378, -4809827, +-5105643, -3714610, -2746632, -2067490, -1822677, 41876, 975494, 1110786, 1637456, 1739462, +2630131, 3909494, 3933116, 1130113, 780610, 1054951, -507880, -2042257, -2685428, -3712462, +-3187403, -2237141, -657130, -887985, -36507, 1539746, 1659468, 1575179, 2268817, 1816771, +1059246, 74088, 63888, 117038, -257698, -1005022, -863288, -1021665, -999117, -1023813, +-650688, -391379, 114890, 441308, 841814, 932545, 733903, -30602, 353798, 511638, +343061, -132607, -598611, -794032, -656593, -408559, -60666, 222265, 530965, 369904, +141734, 164819, 227633, -165893, -328028, -277025, -264677, -208843, 12348, -11274, +26307, 100932, 104690, 48318, 19327, 10201, -9664, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 7642895, -806917, -2076080, -2172180, 1324997, -3704409, -62277, -7210177, 5160403, 6544994, 4571456, -6441377, -7742216, 619549, 1764695, -2765422, -2129230, -1893007, -9066676, -1531156, 5382668, --9283572, -7543573, 4381404, 3972308, -5967320, -2084133, 3939559, 501437, 4790499, 2051384, -4990215, -3142306, 949188, 688805, -1334661, 2323041, 1822140, 3388192, 1416802, -1501628, -318364, 3786014, -1031866, -1727114, -649077, -4586488, -10122701, 6010807, 2911451, -3168075, -4429722, -1780264, 483184, -158377, 2053531, -2672544, -702227, 5973763, -5637145, -2259690, -1946157, 972810, -879931, -280247, 2610803, 296890, 2310156, -4014721, 4072703, 2097555, --5239323, 4163434, 359704, 1506460, -634581, -1557463, -6114423, -1891396, -467615, 3134789, --816581, 2563022, -1545115, 302258, 753767, 304406, 1809255, -327491, 114354, -224949, --1248225, -566399, 231391, -666257, 75162, -33286, -293668, 1666447, 1666447, 871342, -687732, 606127, 204011, 3758, 211527, 89121, -267362, -747324, -851477, -191663, --88584, 11988327, -6839199, 2134062, -7562901, 949725, 1812476, -7624641, -9651328, 2455111, --10474351, 2351495, -2705830, -689879, -6410776, -898722, -7203197, -3685082, 63888, -7622493, -8172786, 2901251, -12666395, 1242319, -665183, -2264522, -5403069, 2767570, 6623377, 166967, --452045, 6221260, -3600793, 114354, -2280628, 4134443, -4769025, 1443646, 5814312, -4997732, -5088463, 1813013, 5500780, -434865, 1271847, -793495, -2279017, 7199439, -8863739, 2085744, --3907347, -1676111, -1131724, -3204583, -2366527, -7056095, -4428648, -1074816, 4642860, -360777, -1759326, 6492380, -126165, -5569499, -696322, 234613, 1776506, -2703145, 31139, -5478231, -138513, -2212445, 1842541, 2894271, 4233764, 1531693, -2357937, -3064996, 4154844, -1354525, --1874753, 801548, 2318746, 4793184, 598611, 1395864, -293132, 2821794, -525597, -2184528, --1115081, -1067299, -83752, 1921998, 386010, -97711, -991064, 1862942, 10737, -660351, --498753, -442919, -520228, 899259, -353261, -64961, -1046898, -2835215, -9854266, -76236, --5921686, -1842004, -928787, -6916508, -909459, -1581622, 3495567, 8149701, 8203388, 1007170, --3442416, 3298535, -7857643, -1094680, -2978560, 2790118, -11731166, 4192425, 2041720, -396748, --3341485, -5044439, -2273112, -4156455, -3554622, 2234457, -739271, -4484483, -1267015, 943819, -7740068, -268435, -7718593, 636192, 3396782, -69793, -2393371, 671089, 2978560, -8417062, --603443, -3646427, 5985574, 3635690, 1060857, -7781944, 938450, 3028489, 4842576, 4499515, --5072893, -2391760, 290984, -1583769, -1549410, 4190814, -2528662, 2571612, 760746, -3263102, --678605, -4490389, 5491116, 2054068, -5300527, -3685082, 970126, 2859375, -4190278, -5354751, --847719, 278099, -3502546, 778463, -1397475, 1820529, -3333432, 5066988, 2779381, 3820910, -1160715, 509491, 3502546, 4647155, 614180, 1323387, -369904, 663572, 153545, -191126, -593779, 391916, 614717, -733366, 104153, 355409, -180926, 79457, 1626182, -903554, -433255, -1082869, -782758, -729071, 241592, 578747, 478352, 44560, -918586, -674847, -1672353, -16796006, 5485210, 4909685, 8195335, -2076080, 5162014, -14483167, -3929895, 4588099, -580357, -7146289, -1830730, -2354716, -12679817, -5120675, 1330903, -549756, -9028558, 5698885, -8092256, -8235063, 6316823, -10795400, -3642132, -940061, 3768297, -27917, -4349728, 3000572, -1522029, -694174, 4879083, -2313377, -3076270, -945430, -1738388, -3177202, 4800700, -3630858, -1389422, 3589519, -683974, -2807298, -5275831, -621697, -3752191, -1135482, -4372277, -1171989, -9862319, 222265, 6013491, -5459977, 5053029, -1546188, -7981123, -4714801, 4486094, -2898566, --4037269, 2947958, -4754529, 4012573, 1118839, -1459752, 5268851, 4733054, 2126546, -5167383, --5821828, -391379, 7856569, 1567126, 1230508, -4414690, 1200443, 2819646, -5912023, -2168422, -1984812, 4173098, 2112050, 3534221, -150861, 45097, 1345935, 177167, -621160, 223338, --460098, -742493, -2586644, -2098092, 692027, -1258962, -704912, 897111, 450972, 658741, --114354, 1087701, -647466, 60666, -876173, 18254, -1073742, 571231, 245887, 779537, --1415729, -8842801, -8396661, -5494874, 1229434, -1279900, 3675955, -2939905, 173946, 784368, --2387465, -807991, 2327872, -2371896, 10190347, -6412386, 4810364, -1564979, -515933, -4507032, --1113470, -488016, 7477001, -4834523, 824634, 1570884, -6996502, -4228396, -4725001, -4008815, --8137353, -2711198, 3160022, 5785321, 3741990, -6483790, -9184788, -1906429, 459562, -4616553, -1046898, -3089692, -4707821, -11436424, -5648419, -7973070, 4853313, -1955284, 3977140, -4519380, --11117523, -5844914, 734976, -2157684, -3528853, -1543504, -4269735, 6173479, 718870, 3652870, -4877472, 1330366, -15569, -3776887, 353261, 5245229, -701690, -3642669, -5060545, 8542690, --6811282, -9626095, -6714108, -3834869, -5240934, 6249715, 9940165, -7641284, -5180268, 1333587, -4918275, 7408282, 5938866, 4625143, 4617090, -1436130, -1749125, -2080375, -2103997, 1933272, --1215476, 621697, -1523640, -2627983, -933619, -1855963, 1650878, -1110249, -2266132, -1305670, --1226213, -2341294, -2537252, -1580011, -493384, 676994, 690953, 1416266, 363998, -4115653, -704912, -523986, -1505386, 628676, -539018, -1153736, -2578591, -2165201, 283468, 135828, --728534, -945967, 209380, -1174674, 935229, -1007170, -470299, -374736, -1768990, 2319819, --18468360, 5707475, -1298691, 3273302, 10144176, 3978750, -2495376, 3428458, -7611219, 4712116, -5548561, -10071161, -2132988, -5104569, 5697274, 4930086, 7726110, 8924942, -11587822, -5995775, -1940252, 9959492, -3757023, 4619774, -11071352, -3374234, -3861176, -2377801, -6686727, 1641214, --10954314, 7589744, -2119030, -1978906, 5606543, -362388, 1314797, 5881958, 207232, 4807142, -3292093, -1406065, -1856500, -691490, -7663833, -5697274, -6995428, -486942, 14720464, 3361886, -2896956, -389768, -1984275, -170188, 8827768, -1923609, 2810519, -16957068, 15627239, -3823595, --2704756, 837519, 9603547, 3409130, -1516124, -5857799, 16749299, -3277060, -119185, 5274757, --4136591, -94489, 2478733, -3825205, 3383897, 3196530, 13859859, -6925635, -8525510, -1662152, -4219806, -5260261, 1257352, 3477850, 1243930, -3111704, 1472100, 3563212, -2191507, 237834, --3824669, -1328756, -1040993, -3310346, 4345970, -3155727, -2471217, 1831804, 4832, -3729105, --197569, 773631, 1693828, 72478, 1973001, -1423782, -983548, -1182727, 1377611, -1454920, -2340220, 124017, -774168, 885300, 2443837, -4173098, -163746, -1162862, 7885560, 4374424, -8788040, -3671123, -2227478, 5017596, -8319889, 7280507, 8323647, -4335233, -820339, -13362180, -519154, 4453881, 3582540, -2914672, -9126806, -18401250, 185220, -3216931, -8791798, 1918240, -5727339, -8049843, -3494493, -8769786, 4273493, 390842, -1399623, -2986613, -3866008, 9233643, -10788421, 4132296, 5083094, -2534031, -5581847, 15090904, 3669513, -2697240, -9035001, 6472516, -164283, 8633421, -881005, 10693395, 5293011, 7451769, 6283001, 3153043, 8298414, 10387378, --410169, 1835025, -3460133, -213138, 5617281, 2292439, 3004867, -9382893, -3515968, -2061047, --8188892, -7829189, -5198521, 4225174, 8810052, 11558294, 15149423, 3295314, 1225676, 12193412, --5009006, -9367324, -3336116, -4792110, 7849590, 6404870, 2384244, -8875013, -2499134, 1470489, -1166621, -1802276, -4153234, 1145683, 925565, 4985920, -1324997, -2899103, 481573, 897648, -1138166, 7516, -32749, 921271, 2221035, -1729261, -1706713, 69793, -305480, -2390686, --634581, -3025805, 3113851, 955093, -2317135, -173409, 2078764, -1222455, -297427, -1828046, -863288, 1071058, -875100, 2712272, 2017024, -384936, 14025753, -13481365, -6387153, -1893544, -5318244, -12620761, 7829726, -12436615, 5983963, -136365, 6356015, 10102837, -4262755, 9217537, -10106058, 9586904, -5700496, 8070244, -8883066, -7121056, -1171989, -5528160, -166430, -4769561, -7927973, -6034429, 1683627, -5959804, -10350871, -4897874, -2239826, 12306692, -10486163, 9669582, -4231617, -14532559, 16467978, 3962644, 1773822, 11504070, 1992865, 409096, -6648610, -147103, --3741990, 13130789, 5527623, 9168681, -3681861, -2307471, 6328635, 10915123, -11595338, 11314554, -2027761, -1977296, -2209761, -10983842, 5179194, -5247913, 2155537, 361314, -9903121, 3203509, -8285529, -7698192, 5237713, 3339874, 11621645, 1115618, -836982, 6957847, 10160282, 702764, --5902359, 6725382, -7947300, -4246649, 2064806, -3331284, 2092186, -2697776, 975494, 4279935, -3186866, -3359738, 2781528, -1795833, 2237141, -2401424, 7074885, 578747, 6755447, -954020, -1671279, -1574642, -616328, -2308008, 4275640, 1664300, -3569118, 3563212, 4288525, -622233, --613107, 2485712, -205622, -370441, 3572876, -258235, 867047, 2167885, 1503775, -707596, -2731062, -2419677, -425202, 376347, 736587, 456877, -157840, -478352, -2730526, 1142998, -4062502, 1005022, -11422466, -8178155, 12395276, -15913928, 3994857, -8480413, 9436580, -10118943, -15422691, 5330592, 1486596, -13409425, 6818798, 11314554, 2991445, -6904697, -4478041, -3962644, -10521596, 5701032, -14687178, 2054068, -10389526, -597537, 1191317, -8905615, 11645804, 11659762, --5301064, 2535105, 7933879, -9709847, -1466195, -3010235, -8009041, 17019344, -6187438, -3845070, --8575976, -14374719, -2263448, 231928, -4942434, 2096481, -11855183, 1010928, 854699, -2415919, -9400610, -1993402, -7279433, 3761318, 15032, -5502390, 4708358, 20171850, -4019553, 4770635, -1127966, -13771276, -2204929, 12206834, 5552319, 12117176, -1214402, 6986301, -9654013, 4303557, -4318053, 1385664, -8196408, 7567196, 2732136, -21410412, 1708860, -3907347, 14332843, -5534602, -11141682, 10225243, 8309688, -1073742, 3221762, 433792, 886911, -1444183, -2297271, 5528697, -2312303, -129923, -3641596, -5230197, -1141388, 2162516, 3692061, 2541547, 4720706, 106837, --1186485, -1976759, -1423782, 1624571, 2859375, -315143, 2275259, 1380295, 489089, 1953136, --300111, 2043868, -3402151, -4381404, -5594195, -331786, 2683281, 1112933, -2572149, -1033477, --1768453, -2133525, 3581466, 997506, 1657321, 1402307, -25104620, 28077812, 3183645, 10995116, --20620674, 11034308, 14405320, -16913044, 6245956, 8156680, 6280853, -10980621, 1279900, 1766305, --3798899, 6179921, 12890271, -10608569, -8846559, -3331284, 10906533, 9407052, 13370233, -798864, -5566815, -10215043, -2776696, -2763275, 2070174, 6203007, 17130478, 10134512, 6140193, 3135326, --710817, 8100845, -3191161, -14967961, -3014530, 4207458, 4596689, -8822400, -6703907, -10890426, -1939178, -1003412, 3636764, -7191923, 12474196, 12175159, -10806675, 25227564, 1031329, -2483565, --276489, -5435281, -1273458, -1777043, -10392747, 18254, -98247, 6584722, -21485038, 5079336, --7697655, 15360414, 18607946, 7956427, 7657927, 3346853, 1125281, 16760036, -3296924, -12661564, -10580115, -5787469, 2747169, 8201240, 15117211, 1986959, 1382443, -12354473, -650688, 3413962, -9554155, -4358855, 5136781, 2378338, -3819300, 9667971, 1542430, 4248260, -2976412, -1061931, --2949569, 323733, 1018444, -1653562, -195958, 2803003, -1743220, 2842732, 1911797, -2248416, --329102, 1237488, -989990, 83215, -2116345, -6781754, -2006287, -1163936, 6827388, 8420283, -743566, 1107565, -2560338, -3022583, 627602, 782221, -3678640, -2937758, -1954210, -1775969, -2214593, -4123169, -278099, -3069828, 10419054, 2117956, -6991133, 6806450, 10147397, 8825084, -5636071, 10497437, -12432857, -7890929, 1562294, -11251741, -2681133, -1803886, 2669322, -2821794, --7232725, -9165460, -5426155, 4669167, 7965017, -13595719, 3043521, -1344325, -221728, -16405701, --14670535, -2497524, -11345693, 5506148, -12957379, 923418, 7159174, 10162966, -8786966, 12059731, -3207267, -1111323, -2493229, 17844516, -4801774, -810675, -14127758, -7955890, 11794517, -815507, -4561792, -13673028, -14890652, -4045859, -8333847, -1413044, 815507, -5486821, -6957847, 4297652, --6446209, 644782, -9574556, -5202279, -85362, -15986405, 1642288, 10622528, 2179696, 5607617, -11669963, 19772956, -18854370, 3525095, -11567958, -11355894, -6211060, -8616778, -5397700, -5063767, -19466402, 10669236, 10856067, 2271501, 3316789, -13894756, 863825, -4860829, 2415919, -6005975, -8723615, 11319386, 1291175, -5055714, -3274913, -9577240, 1066763, 5964099, 3472481, -2284386, -6301254, 2986613, 6660958, -1345935, -986232, 1101122, 4406637, -2642479, 1998770, -3906810, --5275294, 3998615, 1633698, 851477, 1091459, -7435126, -4231617, -6442, 5953899, -4804995, -3088618, -6451041, -1950989, -1009317, 2513630, 1582159, -1710471, -1557999, -8391829, 3684008, -20176146, 21372832, 23446226, -16902306, 1559610, 12788802, 10126996, -9744744, -18935974, -1930588, --2570001, -14818711, -8452496, 29025388, 2554432, 2275796, 11039140, -929324, 4887136, -3642132, --11099269, 7822209, 6563784, -15098958, -21626770, -16660178, -13208635, -12530567, 1522029, 4065187, -6805913, -8221105, 8661338, 2338610, -3912715, -8716099, -23085, 838592, -13688061, -10598906, -1881733, -2185602, 2182917, -8123394, 7116761, 2472291, -7696045, -16747688, -6487011, -5423470, --22464290, -6817724, 2390149, 11585674, -826244, 13656922, -2090039, -765041, -19113678, -3760781, -7868380, 3992172, -32160178, 9652939, 3059091, -8672613, -5247913, -9059697, -10394358, -54761, -735513, -9907416, -3070902, 6938520, 9693204, 15266461, -11142756, 927713, 8639864, 8053, --24551644, -19368156, 4295, -4835597, 6437082, 214748, -5868536, -8473970, 4322348, -2151242, -3945464, 10541460, -52076, -4597763, -8224326, -15075335, -5068599, 1367410, -2348810, -2186138, -1230508, 1446867, 7100655, -3093987, 931471, 3031173, 1574642, -5151814, 853088, -969589, --13276818, 1835562, -4786204, -5622649, 2388539, 2128693, -3886409, -805843, 5053029, 1897302, -1484985, -4490389, -5454609, -1486596, -237297, 801548, 3643743, -5913633, -520228, -3706557, --2312840, -4874788, 8249559, -6431714, 22857280, -18993420, -11588896, -3609383, -36208720, -18747532, -188442, -22945326, 18351858, -7857106, -7260642, 2397666, 41649372, 20299090, 1551557, 8831527, --1655710, -10764799, -841814, -16837346, -12174622, 6260989, 6259915, 7773354, -11688753, 15649787, -9608379, 17663054, -17343078, 3187403, 25884694, 2762201, 1285806, 5429376, -24363738, 6649683, --5989869, 4420595, -9681393, -22840636, -1205275, 9766219, 11649025, 3347390, -3419331, 2076080, --861141, 8087961, -17336636, -25121264, 4758824, -8913668, 15422154, -5691369, -6157910, 20306606, -4658429, 8970039, 1763621, -16405164, -6729677, -1591285, 9244380, 26671746, 20360830, -5598490, --23046794, -46171, -2518462, 9031242, -14159433, -17484274, -10037875, 8935679, -18030272, -2386391, --15111306, 550830, 12410308, 84826, -22724136, -4559108, 3149285, 6481106, 2961917, -13768055, --9493488, -14762876, 2467996, -2712272, -6524056, -4595078, -6524592, 1789928, -2669859, -5822365, --1707250, 4977867, 58519, 310848, -7673496, 337155, -653909, -4406100, 477278, 10063645, -3249680, 2275259, -9753871, 4362076, -1032403, -578210, 1583769, 327491, -155156, -1450088, --5807333, -5937256, -5319317, 7193534, 5791764, -2094870, -14555644, -4799089, -5400922, -589484, --7751342, -41739028, 15823196, 12939663, -6300717, -27665494, -6257768, -10795937, -11325829, 11880953, -14763950, -1759326, 3899830, -31416612, 10800769, -39266200, -10057203, -3621731, 7599945, 19407346, -31022548, 12710956, -18225694, 3959960, 21629992, 2659122, 6469295, 11582453, -18512920, -7329899, --3052111, 5319317, -13083544, -7208029, -4070555, -9969156, -7556458, 12991739, 12860743, 3078418, -941672, 22165790, -4357781, 10207527, -25495462, 16546898, 4678830, -23267448, 2221035, 7090991, --21740050, -3070365, -21262236, 6788196, 8785356, 9209484, -14349486, -1513439, 14096620, -12137578, -56371, -2207613, 23347980, -14188961, 17176112, 8449274, -21955336, 18877456, -16189879, 12032888, -16175384, -16755204, 9181029, -14347875, -17535278, -26627186, -22025666, -24383066, -5827197, 3948686, --7320772, 20680268, 21757768, -9585830, 19168440, -3310883, -4130148, 24109798, -5516349, -16771847, -11344082, -2838974, -12874701, -10239202, 9613211, 1328756, 4955856, 7263864, 1298154, 5899138, -9680319, -3008088, 10863583, 7089918, 5396090, 5783174, 866510, 3382287, 9233106, 7036767, -9364102, 964757, 7771744, -1906966, 508954, 6354404, -3403762, -12702366, 5766531, 1484448, --9664, -224412, 5510980, -11323681, 5546414, 7129646, 6176700, -7689065, 6323803, -33299956, --15965467, -16601659, 28340342, 443992, 10331544, -5106716, 40367324, 6009196, -27659052, 1563905, -29551522, -11533061, 6261526, -5384279, 2185602, -17951890, -24041080, 37048924, 26269630, -10706280, -20068772, 7607998, 26230440, 29845728, -9261560, -7597261, 26526254, 19296752, 1782411, -8966818, --13793824, -14499810, 12063489, 23298050, 10759967, -4793721, 15560130, -8860518, 14748381, -7243999, -21692270, 38679940, 29402272, -32351304, 14162655, -5906117, -13396540, -897648, 10698227, 10253698, -71093520, -7701950, -1160178, -12123619, -13106093, 13443248, 25419228, -6813966, 19223736, 16281147, --2665564, 106300, -14333380, 13686450, 11499238, 37549288, 38270308, 46488728, 19100794, -12494060, --10143102, -22093312, 20662550, -32440962, 22684406, -30483530, 17199734, -11081552, -18454938, 12527883, --48966384, -38911328, 6571300, 7028714, -14317810, -13986561, 22214644, 10766409, -21254182, 2573759, --5172215, -11928198, 3304441, 5311264, 1352915, 5386963, 6525666, 11698954, -6091874, 1851131, --7276749, -12673375, -7842074, 2368138, 629213, 16232829, 3155727, -4601521, -14018236, 1610613, --5813775, -4922033, -6470368, 4140885, 9692667, 3029026, 8357470, 6801081, 11186779, -5443334, -8424041, 605590, 2159832, -1364189, 341450, -7396471, 7740068, 18891414, 10034654, -2639258, --2581812, 16175921, 13660680, -11278047, 4492536, 8491687, -5342940, 23117662, 5710696, -51896088, -12696997, 7584912, -38488276, 3005403, -6087043, 2328409, 14945949, -1187559, -35544612, -5705864, --10922639, -1306207, 26192322, 31453120, -16901770, -3678103, -14099304, 8301635, -27125940, -52989160, --18685256, -15482283, 3379603, 1631014, 24984362, -35976256, 18045842, -7784628, -3524558, 15848429, -7615514, 26311506, 6344741, 10604811, 27843200, -30455076, 39475044, 31717260, 16631724, 29801168, --10779294, 11804718, -26700202, -4622459, -13206488, 24835648, -20839718, 5939403, -45296336, -55945172, -38339564, -950798, 24892020, -16428787, 16622597, -10450192, 3945464, -5646809, -36751500, -10941429, --24434068, -10984916, 13873281, 55938728, 20082730, -47818556, -10610180, 13696114, -10882373, -6466610, --31753766, -15802258, 25200720, -8477192, 6379637, 5705327, -19667192, 13497472, -2570001, 1804960, --40760852, -11142756, -533650, -17957258, -10324565, 2392297, -27494770, 3737695, 6545530, -21674552, --17402134, -30943628, -23399518, -1366873, -12833899, -5450314, 1080184, -8261907, -8705362, -2889439, --13771276, -5887327, 2061047, 10398116, -12133819, -3579318, -20961588, 8341364, 5435281, 13324062, --8561480, 13824426, -27222040, -769336, 189515, -1071058, 4371203, -3601330, 3073049, -11870216, --13200582, 968515, 5485210, 489089, -10383620, 3747359, 3213173, -32349156, 17044578, 16993574, -30245696, -14798847, 11097659, -17011292, -19687594, 8731669, 40186936, 65001644, -4016331, -4385162, -1415192, -1523103, -28939490, 45441828, 21932250, 24123758, 18740016, -13285944, 15887621, -25774636, --36856724, -6500433, 27763742, 17863842, -13113609, -8672076, -1719598, 22237194, 1068910, 16161425, -16115791, 26341034, 8976482, -16850768, -15687368, 14972793, -17669496, -13486734, 8016557, 28913720, -27017492, -30879742, -23540178, 15600932, 19066434, 57007100, -13082470, -31402116, -32087700, 27143656, --20448340, 25586730, 29451664, 58629524, 125220848, -28218472, -15677168, -47116864, -74298104, -24069534, --37274948, 4002373, 52123188, -7930120, 27749246, 38837780, 25971668, -14803142, -45863808, -75967768, -42547020, -3322694, 48361332, -25037512, -65227132, 22519588, -38500088, -52144124, -26193394, -16866874, -16884590, 15849503, 29901562, -2608656, -13931263, -2707440, -769873, -27220428, -25503516, 12761422, --8725226, 26002806, 24590298, -11999602, 24501178, -19402514, 1036161, 23164906, 3068217, -37358164, -10371272, -19084688, -2671470, -6511171, -4364761, -27721866, -21641266, 3748970, 32841468, 33950644, --31709744, -4433480, 40008156, 37050000, 734976, 7307350, -34916472, -19571092, 6017249, 20143396, --30034706, 7180649, 24789478, 11335492, 9904195, 1985886, 15991237, 22781580, 12150999, -3463891, -4209068, -24753508, 5171141, -22518514, -62959924, 16456704, -26035018, 26817238, 4336307, 15193447, -13346074, -57531088, -40653476, -19862076, -12330851, -12984223, -23265300, -6868727, -38953204, -24584392, -19397146, -25140054, 49272940, -35811976, 4175782, 10588168, -3427921, 4823249, -1664300, 12200391, --10896869, -11669963, -1688459, 9283572, -1116692, 21487722, -19349364, 5008469, 31016106, 10358387, -4999879, 16138876, 2339147, -11904039, -7537131, 25398290, 5970005, -38679400, -17005924, -31272194, --14105209, 42787000, 39747236, -40070436, -4110821, -45635100, -10757819, -3247532, 11041824, 23779086, --37491308, 25869124, -31864900, -4841502, -21471078, 49216032, -9458055, 34901440, 32422172, 71979896, --32508608, 30062624, 5145908, 28601260, 10115185, 21978958, -35405564, -32185948, 48010220, 2987687, --1455457, -33085206, 38821672, -12351789, 20077362, -34843996, 75006232, -39321500, 41868952, -49400176, -20114942, -37055368, 21178484, -34076272, 26107496, -21314312, 15460809, -11572253, 8649527, -18011482, --11293080, -8134668, -2043331, 7382512, 1447404, 6107444, 723165, 6024229, -2551748, -8794482, --14889041, 7664369, 7811472, 2979097, 7173133, -4862977, 2953864, -3676492, 3087008, 26501558, --6230924, -17594870, 2837900, -9599252, -19441170, 7099044, -10524280, 8709657, -8797704, 7395397, --16978006, 7854422, -22016540, 14797236, 32257888, 5945846, -56051472, -24031952, -34308736, 3098282, --7174206, -76059040, -33950104, -19098646, -40024800, -24470040, -76687176, -64516852, -10896332, 29090350, --41765872, -24464670, -5238787, -35352948, -7376070, -1854352, -34250752, -8333847, 8187282, 2809446, --45778984, -25529822, -25697864, -13743358, -15586973, -3696893, -31488552, 28142774, 18603650, 39716636, -57140780, 49953692, 13443785, 52759916, 21669720, 10316511, -21991844, 19209242, 19781546, 16005732, --5021891, -16565689, -7233262, 14075145, 23949812, 119257824, 16995186, 25492778, 18344880, 49469432, -19685982, 43604120, 78221016, -36071284, -74626664, 10613401, 49328236, 87534120, 39274792, -73326904, -11101954, -17354890, 109931832, 81397144, 98470712, 90629712, -76586248, -49923628, 64742872, 77786688, --21246666, -43140264, -52604224, 121950768, 81408424, -3844533, -102709312, 26230976, -2865817, -21717502, -29727080, 9084930, -7928510, -20881594, 738734, 17762910, 45991048, 33282238, -25531970, -9330280, --5955509, -4284230, 26549340, 19869592, 20897164, 1758252, 11818676, 42812772, 29296508, 7332046, -17835388, -9767293, 21947282, 28271622, 36383204, 46302432, 36264020, 28407988, 1777580, -4354023, --7570954, -1293322, -18269180, -9139154, -7845832, -22765474, -30268246, -34422552, -60958472, -33574832, --21412022, -35668092, -67876056, -46369004, -39075076, -45615772, -54954108, -57827976, -18354006, -20566450, --30636002, -15802258, -17985712, -10758356, -16540993, -15659451, -15633681, -11038603, -14913737, -8804146, --11905649, -8205535, -9474161, -4892505, -10787347, -661962, -10654203, -14405320, -19047644, -55984900, -89550072, 72307384, -62753768, 13925358, -1546725, 10008884, -2543158, -6264747, 22971632, -23256174, -22428856, -9247065, -38118, 8860518, 7140920, 7996156, -199179, -13190918, -8543764, 14376866, --11996917, -1560147, 13755707, -7628936, -8087424, -11083163, -20382842, -20350628, 14702747, -7445326, -5375689, -12809203, 2393371, -27133456, -5058398, 7393786, 17279190, -11119670, 3637301, 11929809, -18932216, -4608500, 15640660, -12875775, 50216220, -18745922, 17194364, 2291902, 9654550, -9469329, -13170517, -5383205, 35715336, -5887327, 10922639, -25099788, 32743756, -17348446, -1553168, -4888747, -4581120, -9846213, 19566798, -22836878, 18367428, -20927766, 26931056, -28410672, 34207268, -22895396, --12613782, -14349486, -7482907, 1384590, -22939420, 14784888, -13721347, 12975096, 746787, 17931488, -6430103, 12414603, 21478594, 9452686, -7908646, 5922223, 4978404, -3047816, 3550864, -6754373, -7500087, -3754875, -358093, -6590628, 14937359, -15068356, 1003412, -1265405, 12009802, -2247342, -2114735, -2768643, 4540854, -7035157, 5053566, -5982353, -3716221, 11911018, 10077067, -3005940, --11156714, 7070053, 8821326, 10283225, -9771051, 8068633, -6952479, 6138045, 825707, 2535105, --10517301, 10877005, -4558034, -12102681, 9652402, 10157061, -9035001, -1322313, -2520072, 3102040, --8841727, 11764452, -11287711, 4388920, -12305618, 10839961, -9156870, 9398462, -7572028, 11461120, --12918725, 13728326, -12785044, 7002408, -10838350, 10714870, -12283070, 9883257, -8145406, 12229919, --13602698, 13637058, -12063489, 11424613, -9146670, 10601590, -9862319, 9051644, -7923141, 7361037, --8099235, 7096897, -7517267, 7987029, -8238821, 7865159, -6879464, 6964290, -7106561, 6679211, --6463389, 7480223, -6381785, 7296613, -5342403, 6330245, -5215164, 5325760, -5482526, 6524056, --4828617, 4996121, -3924526, 5651640, -4201015, 4116189, -3739843, 2783139, -2858838, 3567507, --2429878, 3813394, -2928631, 3885335, -2945274, -21910238, -45354856, -49906448, 42559904, 10810970, --13088376, -67655400, -27162984, 37809132, 7754564, 27328876, 30455076, -10899016, -19043884, 975494, -7259032, 5662915, 5093295, -11908871, -8752606, -6583111, 82678, 18394272, 9949829, -820876, -4166655, -5215164, -8819178, -5595806, -4598836, 392990, 5452461, -4105989, 7022809, 7395397, --24838332, -10992969, -10972568, 13338558, 9273908, -781147, -11548093, -15604153, 13670344, 3064459, -9175124, 12779675, -23041426, -15304042, 4233227, 18629420, 9403294, -26199300, -16156593, -21276194, --10155450, 5537824, 4832375, -8736500, 9660455, -3918621, -9192841, 4158065, 8800388, -6527277, -2096481, -217970, -8220568, -716186, -2906619, -18599356, -18821084, -1126355, -20080046, -15022722, -625455, 6118181, -4388383, 22174916, 16340740, 9344238, 683437, -2095407, -9873593, 12294344, -5990943, 7183333, 6892886, -6178848, -2633352, -443992, 3496104, -11581379, -14153528, -1923072, -6191732, 942745, 7841000, 5509906, -7399692, 2448131, 4297115, 3075197, -2406256, 7894687, --9844602, -5825587, 18009334, 10392210, -11149735, -8324184, -5698885, -9886478, 10912438, -350040, -1522566, 5050882, 3205656, -98784, -472446, -7366406, 4648765, 2833068, 6404870, -3626563, --1137093, 4216584, -467078, -4865124, 17603460, -43889732, -119597656, -45456860, 27228482, 57605176, -135826192, 79844512, 21707302, 28443420, -23544474, -43951476, -96218544, -64855080, -49749144, -16258599, -19710678, 52969832, 41136660, 51425256, 49648212, 33692944, -11370389, -39173324, -33960844, -34847216, --28055264, -40397924, 12395812, -25528212, 1855963, 18830210, 34720516, 19644644, 32497334, 42927660, -779537, 12829067, 925565, -629750, -23997592, -3140695, -21357798, -41599980, -65758096, -36571648, --20083268, 5340255, 4970351, 39119100, 54206244, 52197812, 62039192, 9082782, 40701256, 16194711, --3710852, -38144680, -37465536, -50746112, -66733592, -45414448, -51722680, -32668058, 150324, 16078747, -37087580, 60052232, 88310968, 70868032, 64095944, 34803192, -13290776, -13013751, -34743064, -73721504, --56751552, -93176096, -61374008, -27088358, -20738786, 29219736, 55914568, 76793480, 54081156, 41544680, -25140054, 28824062, 25190520, -3951907, -29118804, -27618250, -43774308, -48277044, -38566120, -26242788, --24559160, -23181012, 10590316, 22772990, 40052716, 47722992, 38987564, 34430604, 19511500, 789737, -912681, 4541928, -29020558, -48980880, -20198158, -42761232, -48688288, -1525787, 12060805, 27204860, -27924266, 18027588, 29516088, 17330730, 23592792, -4872104, -601295, -20654498, -12605192, -10909217, --13858786, -15613280, -12814572, 2238215, -5405217, 174483, 14308684, 20166482, 12486544, 11132018, --2901787, -3350075, -312459, -137439, -6236830, -7050726, -1332514, -4100620, -4500589, -2435247, --46171, -4284767, -1619740, 9019968, 3000035, 4254702, 5668820, 4853850, 1740536, 1660005, --1074816, -3818763, -5586142, -4014721, -6545530, -5371394, -1459215, 1023276, 2261300, 4454418, -3533148, 3265249, 4241817, 2949032, -1825898, 780073, 1706713, -1261647, -3488587, -3667365, --2982855, -232465, -1333587, -2130841, -1321776, 1217086, -141197, 1245541, 3205656, 3160022, -2630668, 1465658, 234076, 48855, -992674, -945430, -1580011, -1459215, -1132261, -970126, --1589138, -840203, -823023, -603980, 463320, 1924682, 1089311, 1620276, 1845225, 1533840, -927176, 237297, -589484, -1021665, -1619203, -1198296, -1356136, -1244467, -443455, -28991, --504659, 249108, 1144072, 1394791, 908386, 567473, 618475, 690953, -158377, -599685, --666794, -564251, -517544, -256087, -206158, -27380, 44560, 108985, 33823, 61740, -52076, 56371, 16106, 21475, }, +806917, -2076080, -2172180, 1324997, -3704409, -62277, -7210177, 5160403, 6544994, 4571456, +6441377, -7742216, 619549, 1764695, -2765422, -2129230, -1893007, -9066676, -1531156, 5382668, +-9283572, -7543573, 4381404, 3972308, -5967320, -2084133, 3939559, 501437, 4790499, 2051384, +4990215, -3142306, 949188, 688805, -1334661, 2323041, 1822140, 3388192, 1416802, -1501628, +318364, 3786014, -1031866, -1727114, -649077, -4586488, -10122701, 6010807, 2911451, -3168075, +4429722, -1780264, 483184, -158377, 2053531, -2672544, -702227, 5973763, -5637145, -2259690, +1946157, 972810, -879931, -280247, 2610803, 296890, 2310156, -4014721, 4072703, 2097555, +-5239323, 4163434, 359704, 1506460, -634581, -1557463, -6114423, -1891396, -467615, 3134789, +-816581, 2563022, -1545115, 302258, 753767, 304406, 1809255, -327491, 114354, -224949, +-1248225, -566399, 231391, -666257, 75162, -33286, -293668, 1666447, 1666447, 871342, +687732, 606127, 204011, 3758, 211527, 89121, -267362, -747324, -851477, -191663, +-88584, 11988327, -6839199, 2134062, -7562901, 949725, 1812476, -7624641, -9651328, 2455111, +-10474351, 2351495, -2705830, -689879, -6410776, -898722, -7203197, -3685082, 63888, -7622493, +8172786, 2901251, -12666395, 1242319, -665183, -2264522, -5403069, 2767570, 6623377, 166967, +-452045, 6221260, -3600793, 114354, -2280628, 4134443, -4769025, 1443646, 5814312, -4997732, +5088463, 1813013, 5500780, -434865, 1271847, -793495, -2279017, 7199439, -8863739, 2085744, +-3907347, -1676111, -1131724, -3204583, -2366527, -7056095, -4428648, -1074816, 4642860, -360777, +1759326, 6492380, -126165, -5569499, -696322, 234613, 1776506, -2703145, 31139, -5478231, +138513, -2212445, 1842541, 2894271, 4233764, 1531693, -2357937, -3064996, 4154844, -1354525, +-1874753, 801548, 2318746, 4793184, 598611, 1395864, -293132, 2821794, -525597, -2184528, +-1115081, -1067299, -83752, 1921998, 386010, -97711, -991064, 1862942, 10737, -660351, +-498753, -442919, -520228, 899259, -353261, -64961, -1046898, -2835215, -9854266, -76236, +-5921686, -1842004, -928787, -6916508, -909459, -1581622, 3495567, 8149701, 8203388, 1007170, +-3442416, 3298535, -7857643, -1094680, -2978560, 2790118, -11731166, 4192425, 2041720, -396748, +-3341485, -5044439, -2273112, -4156455, -3554622, 2234457, -739271, -4484483, -1267015, 943819, +7740068, -268435, -7718593, 636192, 3396782, -69793, -2393371, 671089, 2978560, -8417062, +-603443, -3646427, 5985574, 3635690, 1060857, -7781944, 938450, 3028489, 4842576, 4499515, +-5072893, -2391760, 290984, -1583769, -1549410, 4190814, -2528662, 2571612, 760746, -3263102, +-678605, -4490389, 5491116, 2054068, -5300527, -3685082, 970126, 2859375, -4190278, -5354751, +-847719, 278099, -3502546, 778463, -1397475, 1820529, -3333432, 5066988, 2779381, 3820910, +1160715, 509491, 3502546, 4647155, 614180, 1323387, -369904, 663572, 153545, -191126, +593779, 391916, 614717, -733366, 104153, 355409, -180926, 79457, 1626182, -903554, +433255, -1082869, -782758, -729071, 241592, 578747, 478352, 44560, -918586, -674847, +1672353, -16796006, 5485210, 4909685, 8195335, -2076080, 5162014, -14483167, -3929895, 4588099, +580357, -7146289, -1830730, -2354716, -12679817, -5120675, 1330903, -549756, -9028558, 5698885, +8092256, -8235063, 6316823, -10795400, -3642132, -940061, 3768297, -27917, -4349728, 3000572, +1522029, -694174, 4879083, -2313377, -3076270, -945430, -1738388, -3177202, 4800700, -3630858, +1389422, 3589519, -683974, -2807298, -5275831, -621697, -3752191, -1135482, -4372277, -1171989, +9862319, 222265, 6013491, -5459977, 5053029, -1546188, -7981123, -4714801, 4486094, -2898566, +-4037269, 2947958, -4754529, 4012573, 1118839, -1459752, 5268851, 4733054, 2126546, -5167383, +-5821828, -391379, 7856569, 1567126, 1230508, -4414690, 1200443, 2819646, -5912023, -2168422, +1984812, 4173098, 2112050, 3534221, -150861, 45097, 1345935, 177167, -621160, 223338, +-460098, -742493, -2586644, -2098092, 692027, -1258962, -704912, 897111, 450972, 658741, +-114354, 1087701, -647466, 60666, -876173, 18254, -1073742, 571231, 245887, 779537, +-1415729, -8842801, -8396661, -5494874, 1229434, -1279900, 3675955, -2939905, 173946, 784368, +-2387465, -807991, 2327872, -2371896, 10190347, -6412386, 4810364, -1564979, -515933, -4507032, +-1113470, -488016, 7477001, -4834523, 824634, 1570884, -6996502, -4228396, -4725001, -4008815, +-8137353, -2711198, 3160022, 5785321, 3741990, -6483790, -9184788, -1906429, 459562, -4616553, +1046898, -3089692, -4707821, -11436424, -5648419, -7973070, 4853313, -1955284, 3977140, -4519380, +-11117523, -5844914, 734976, -2157684, -3528853, -1543504, -4269735, 6173479, 718870, 3652870, +4877472, 1330366, -15569, -3776887, 353261, 5245229, -701690, -3642669, -5060545, 8542690, +-6811282, -9626095, -6714108, -3834869, -5240934, 6249715, 9940165, -7641284, -5180268, 1333587, +4918275, 7408282, 5938866, 4625143, 4617090, -1436130, -1749125, -2080375, -2103997, 1933272, +-1215476, 621697, -1523640, -2627983, -933619, -1855963, 1650878, -1110249, -2266132, -1305670, +-1226213, -2341294, -2537252, -1580011, -493384, 676994, 690953, 1416266, 363998, -4115653, +704912, -523986, -1505386, 628676, -539018, -1153736, -2578591, -2165201, 283468, 135828, +-728534, -945967, 209380, -1174674, 935229, -1007170, -470299, -374736, -1768990, 2319819, +-18468360, 5707475, -1298691, 3273302, 10144176, 3978750, -2495376, 3428458, -7611219, 4712116, +5548561, -10071161, -2132988, -5104569, 5697274, 4930086, 7726110, 8924942, -11587822, -5995775, +1940252, 9959492, -3757023, 4619774, -11071352, -3374234, -3861176, -2377801, -6686727, 1641214, +-10954314, 7589744, -2119030, -1978906, 5606543, -362388, 1314797, 5881958, 207232, 4807142, +3292093, -1406065, -1856500, -691490, -7663833, -5697274, -6995428, -486942, 14720464, 3361886, +2896956, -389768, -1984275, -170188, 8827768, -1923609, 2810519, -16957068, 15627239, -3823595, +-2704756, 837519, 9603547, 3409130, -1516124, -5857799, 16749299, -3277060, -119185, 5274757, +-4136591, -94489, 2478733, -3825205, 3383897, 3196530, 13859859, -6925635, -8525510, -1662152, +4219806, -5260261, 1257352, 3477850, 1243930, -3111704, 1472100, 3563212, -2191507, 237834, +-3824669, -1328756, -1040993, -3310346, 4345970, -3155727, -2471217, 1831804, 4832, -3729105, +-197569, 773631, 1693828, 72478, 1973001, -1423782, -983548, -1182727, 1377611, -1454920, +2340220, 124017, -774168, 885300, 2443837, -4173098, -163746, -1162862, 7885560, 4374424, +8788040, -3671123, -2227478, 5017596, -8319889, 7280507, 8323647, -4335233, -820339, -13362180, +519154, 4453881, 3582540, -2914672, -9126806, -18401250, 185220, -3216931, -8791798, 1918240, +5727339, -8049843, -3494493, -8769786, 4273493, 390842, -1399623, -2986613, -3866008, 9233643, +10788421, 4132296, 5083094, -2534031, -5581847, 15090904, 3669513, -2697240, -9035001, 6472516, +164283, 8633421, -881005, 10693395, 5293011, 7451769, 6283001, 3153043, 8298414, 10387378, +-410169, 1835025, -3460133, -213138, 5617281, 2292439, 3004867, -9382893, -3515968, -2061047, +-8188892, -7829189, -5198521, 4225174, 8810052, 11558294, 15149423, 3295314, 1225676, 12193412, +-5009006, -9367324, -3336116, -4792110, 7849590, 6404870, 2384244, -8875013, -2499134, 1470489, +1166621, -1802276, -4153234, 1145683, 925565, 4985920, -1324997, -2899103, 481573, 897648, +1138166, 7516, -32749, 921271, 2221035, -1729261, -1706713, 69793, -305480, -2390686, +-634581, -3025805, 3113851, 955093, -2317135, -173409, 2078764, -1222455, -297427, -1828046, +863288, 1071058, -875100, 2712272, 2017024, -384936, 14025753, -13481365, -6387153, -1893544, +5318244, -12620761, 7829726, -12436615, 5983963, -136365, 6356015, 10102837, -4262755, 9217537, +10106058, 9586904, -5700496, 8070244, -8883066, -7121056, -1171989, -5528160, -166430, -4769561, +7927973, -6034429, 1683627, -5959804, -10350871, -4897874, -2239826, 12306692, -10486163, 9669582, +4231617, -14532559, 16467978, 3962644, 1773822, 11504070, 1992865, 409096, -6648610, -147103, +-3741990, 13130789, 5527623, 9168681, -3681861, -2307471, 6328635, 10915123, -11595338, 11314554, +2027761, -1977296, -2209761, -10983842, 5179194, -5247913, 2155537, 361314, -9903121, 3203509, +8285529, -7698192, 5237713, 3339874, 11621645, 1115618, -836982, 6957847, 10160282, 702764, +-5902359, 6725382, -7947300, -4246649, 2064806, -3331284, 2092186, -2697776, 975494, 4279935, +3186866, -3359738, 2781528, -1795833, 2237141, -2401424, 7074885, 578747, 6755447, -954020, +1671279, -1574642, -616328, -2308008, 4275640, 1664300, -3569118, 3563212, 4288525, -622233, +-613107, 2485712, -205622, -370441, 3572876, -258235, 867047, 2167885, 1503775, -707596, +2731062, -2419677, -425202, 376347, 736587, 456877, -157840, -478352, -2730526, 1142998, +4062502, 1005022, -11422466, -8178155, 12395276, -15913928, 3994857, -8480413, 9436580, -10118943, +15422691, 5330592, 1486596, -13409425, 6818798, 11314554, 2991445, -6904697, -4478041, -3962644, +10521596, 5701032, -14687178, 2054068, -10389526, -597537, 1191317, -8905615, 11645804, 11659762, +-5301064, 2535105, 7933879, -9709847, -1466195, -3010235, -8009041, 17019344, -6187438, -3845070, +-8575976, -14374719, -2263448, 231928, -4942434, 2096481, -11855183, 1010928, 854699, -2415919, +9400610, -1993402, -7279433, 3761318, 15032, -5502390, 4708358, 20171850, -4019553, 4770635, +1127966, -13771276, -2204929, 12206834, 5552319, 12117176, -1214402, 6986301, -9654013, 4303557, +4318053, 1385664, -8196408, 7567196, 2732136, -21410412, 1708860, -3907347, 14332843, -5534602, +11141682, 10225243, 8309688, -1073742, 3221762, 433792, 886911, -1444183, -2297271, 5528697, +2312303, -129923, -3641596, -5230197, -1141388, 2162516, 3692061, 2541547, 4720706, 106837, +-1186485, -1976759, -1423782, 1624571, 2859375, -315143, 2275259, 1380295, 489089, 1953136, +-300111, 2043868, -3402151, -4381404, -5594195, -331786, 2683281, 1112933, -2572149, -1033477, +-1768453, -2133525, 3581466, 997506, 1657321, 1402307, -25104620, 28077812, 3183645, 10995116, +-20620674, 11034308, 14405320, -16913044, 6245956, 8156680, 6280853, -10980621, 1279900, 1766305, +-3798899, 6179921, 12890271, -10608569, -8846559, -3331284, 10906533, 9407052, 13370233, -798864, +5566815, -10215043, -2776696, -2763275, 2070174, 6203007, 17130478, 10134512, 6140193, 3135326, +-710817, 8100845, -3191161, -14967961, -3014530, 4207458, 4596689, -8822400, -6703907, -10890426, +1939178, -1003412, 3636764, -7191923, 12474196, 12175159, -10806675, 25227564, 1031329, -2483565, +-276489, -5435281, -1273458, -1777043, -10392747, 18254, -98247, 6584722, -21485038, 5079336, +-7697655, 15360414, 18607946, 7956427, 7657927, 3346853, 1125281, 16760036, -3296924, -12661564, +10580115, -5787469, 2747169, 8201240, 15117211, 1986959, 1382443, -12354473, -650688, 3413962, +9554155, -4358855, 5136781, 2378338, -3819300, 9667971, 1542430, 4248260, -2976412, -1061931, +-2949569, 323733, 1018444, -1653562, -195958, 2803003, -1743220, 2842732, 1911797, -2248416, +-329102, 1237488, -989990, 83215, -2116345, -6781754, -2006287, -1163936, 6827388, 8420283, +743566, 1107565, -2560338, -3022583, 627602, 782221, -3678640, -2937758, -1954210, -1775969, +2214593, -4123169, -278099, -3069828, 10419054, 2117956, -6991133, 6806450, 10147397, 8825084, +5636071, 10497437, -12432857, -7890929, 1562294, -11251741, -2681133, -1803886, 2669322, -2821794, +-7232725, -9165460, -5426155, 4669167, 7965017, -13595719, 3043521, -1344325, -221728, -16405701, +-14670535, -2497524, -11345693, 5506148, -12957379, 923418, 7159174, 10162966, -8786966, 12059731, +3207267, -1111323, -2493229, 17844516, -4801774, -810675, -14127758, -7955890, 11794517, -815507, +4561792, -13673028, -14890652, -4045859, -8333847, -1413044, 815507, -5486821, -6957847, 4297652, +-6446209, 644782, -9574556, -5202279, -85362, -15986405, 1642288, 10622528, 2179696, 5607617, +11669963, 19772956, -18854370, 3525095, -11567958, -11355894, -6211060, -8616778, -5397700, -5063767, +19466402, 10669236, 10856067, 2271501, 3316789, -13894756, 863825, -4860829, 2415919, -6005975, +8723615, 11319386, 1291175, -5055714, -3274913, -9577240, 1066763, 5964099, 3472481, -2284386, +6301254, 2986613, 6660958, -1345935, -986232, 1101122, 4406637, -2642479, 1998770, -3906810, +-5275294, 3998615, 1633698, 851477, 1091459, -7435126, -4231617, -6442, 5953899, -4804995, +3088618, -6451041, -1950989, -1009317, 2513630, 1582159, -1710471, -1557999, -8391829, 3684008, +20176146, 21372832, 23446226, -16902306, 1559610, 12788802, 10126996, -9744744, -18935974, -1930588, +-2570001, -14818711, -8452496, 29025388, 2554432, 2275796, 11039140, -929324, 4887136, -3642132, +-11099269, 7822209, 6563784, -15098958, -21626770, -16660178, -13208635, -12530567, 1522029, 4065187, +6805913, -8221105, 8661338, 2338610, -3912715, -8716099, -23085, 838592, -13688061, -10598906, +1881733, -2185602, 2182917, -8123394, 7116761, 2472291, -7696045, -16747688, -6487011, -5423470, +-22464290, -6817724, 2390149, 11585674, -826244, 13656922, -2090039, -765041, -19113678, -3760781, +7868380, 3992172, -32160178, 9652939, 3059091, -8672613, -5247913, -9059697, -10394358, -54761, +735513, -9907416, -3070902, 6938520, 9693204, 15266461, -11142756, 927713, 8639864, 8053, +-24551644, -19368156, 4295, -4835597, 6437082, 214748, -5868536, -8473970, 4322348, -2151242, +3945464, 10541460, -52076, -4597763, -8224326, -15075335, -5068599, 1367410, -2348810, -2186138, +1230508, 1446867, 7100655, -3093987, 931471, 3031173, 1574642, -5151814, 853088, -969589, +-13276818, 1835562, -4786204, -5622649, 2388539, 2128693, -3886409, -805843, 5053029, 1897302, +1484985, -4490389, -5454609, -1486596, -237297, 801548, 3643743, -5913633, -520228, -3706557, +-2312840, -4874788, 8249559, -6431714, 22857280, -18993420, -11588896, -3609383, -36208720, -18747532, +188442, -22945326, 18351858, -7857106, -7260642, 2397666, 41649372, 20299090, 1551557, 8831527, +-1655710, -10764799, -841814, -16837346, -12174622, 6260989, 6259915, 7773354, -11688753, 15649787, +9608379, 17663054, -17343078, 3187403, 25884694, 2762201, 1285806, 5429376, -24363738, 6649683, +-5989869, 4420595, -9681393, -22840636, -1205275, 9766219, 11649025, 3347390, -3419331, 2076080, +-861141, 8087961, -17336636, -25121264, 4758824, -8913668, 15422154, -5691369, -6157910, 20306606, +4658429, 8970039, 1763621, -16405164, -6729677, -1591285, 9244380, 26671746, 20360830, -5598490, +-23046794, -46171, -2518462, 9031242, -14159433, -17484274, -10037875, 8935679, -18030272, -2386391, +-15111306, 550830, 12410308, 84826, -22724136, -4559108, 3149285, 6481106, 2961917, -13768055, +-9493488, -14762876, 2467996, -2712272, -6524056, -4595078, -6524592, 1789928, -2669859, -5822365, +-1707250, 4977867, 58519, 310848, -7673496, 337155, -653909, -4406100, 477278, 10063645, +3249680, 2275259, -9753871, 4362076, -1032403, -578210, 1583769, 327491, -155156, -1450088, +-5807333, -5937256, -5319317, 7193534, 5791764, -2094870, -14555644, -4799089, -5400922, -589484, +-7751342, -41739028, 15823196, 12939663, -6300717, -27665494, -6257768, -10795937, -11325829, 11880953, +14763950, -1759326, 3899830, -31416612, 10800769, -39266200, -10057203, -3621731, 7599945, 19407346, +31022548, 12710956, -18225694, 3959960, 21629992, 2659122, 6469295, 11582453, -18512920, -7329899, +-3052111, 5319317, -13083544, -7208029, -4070555, -9969156, -7556458, 12991739, 12860743, 3078418, +941672, 22165790, -4357781, 10207527, -25495462, 16546898, 4678830, -23267448, 2221035, 7090991, +-21740050, -3070365, -21262236, 6788196, 8785356, 9209484, -14349486, -1513439, 14096620, -12137578, +56371, -2207613, 23347980, -14188961, 17176112, 8449274, -21955336, 18877456, -16189879, 12032888, +16175384, -16755204, 9181029, -14347875, -17535278, -26627186, -22025666, -24383066, -5827197, 3948686, +-7320772, 20680268, 21757768, -9585830, 19168440, -3310883, -4130148, 24109798, -5516349, -16771847, +11344082, -2838974, -12874701, -10239202, 9613211, 1328756, 4955856, 7263864, 1298154, 5899138, +9680319, -3008088, 10863583, 7089918, 5396090, 5783174, 866510, 3382287, 9233106, 7036767, +9364102, 964757, 7771744, -1906966, 508954, 6354404, -3403762, -12702366, 5766531, 1484448, +-9664, -224412, 5510980, -11323681, 5546414, 7129646, 6176700, -7689065, 6323803, -33299956, +-15965467, -16601659, 28340342, 443992, 10331544, -5106716, 40367324, 6009196, -27659052, 1563905, +29551522, -11533061, 6261526, -5384279, 2185602, -17951890, -24041080, 37048924, 26269630, -10706280, +20068772, 7607998, 26230440, 29845728, -9261560, -7597261, 26526254, 19296752, 1782411, -8966818, +-13793824, -14499810, 12063489, 23298050, 10759967, -4793721, 15560130, -8860518, 14748381, -7243999, +21692270, 38679940, 29402272, -32351304, 14162655, -5906117, -13396540, -897648, 10698227, 10253698, +71093520, -7701950, -1160178, -12123619, -13106093, 13443248, 25419228, -6813966, 19223736, 16281147, +-2665564, 106300, -14333380, 13686450, 11499238, 37549288, 38270308, 46488728, 19100794, -12494060, +-10143102, -22093312, 20662550, -32440962, 22684406, -30483530, 17199734, -11081552, -18454938, 12527883, +-48966384, -38911328, 6571300, 7028714, -14317810, -13986561, 22214644, 10766409, -21254182, 2573759, +-5172215, -11928198, 3304441, 5311264, 1352915, 5386963, 6525666, 11698954, -6091874, 1851131, +-7276749, -12673375, -7842074, 2368138, 629213, 16232829, 3155727, -4601521, -14018236, 1610613, +-5813775, -4922033, -6470368, 4140885, 9692667, 3029026, 8357470, 6801081, 11186779, -5443334, +8424041, 605590, 2159832, -1364189, 341450, -7396471, 7740068, 18891414, 10034654, -2639258, +-2581812, 16175921, 13660680, -11278047, 4492536, 8491687, -5342940, 23117662, 5710696, -51896088, +12696997, 7584912, -38488276, 3005403, -6087043, 2328409, 14945949, -1187559, -35544612, -5705864, +-10922639, -1306207, 26192322, 31453120, -16901770, -3678103, -14099304, 8301635, -27125940, -52989160, +-18685256, -15482283, 3379603, 1631014, 24984362, -35976256, 18045842, -7784628, -3524558, 15848429, +7615514, 26311506, 6344741, 10604811, 27843200, -30455076, 39475044, 31717260, 16631724, 29801168, +-10779294, 11804718, -26700202, -4622459, -13206488, 24835648, -20839718, 5939403, -45296336, -55945172, +38339564, -950798, 24892020, -16428787, 16622597, -10450192, 3945464, -5646809, -36751500, -10941429, +-24434068, -10984916, 13873281, 55938728, 20082730, -47818556, -10610180, 13696114, -10882373, -6466610, +-31753766, -15802258, 25200720, -8477192, 6379637, 5705327, -19667192, 13497472, -2570001, 1804960, +-40760852, -11142756, -533650, -17957258, -10324565, 2392297, -27494770, 3737695, 6545530, -21674552, +-17402134, -30943628, -23399518, -1366873, -12833899, -5450314, 1080184, -8261907, -8705362, -2889439, +-13771276, -5887327, 2061047, 10398116, -12133819, -3579318, -20961588, 8341364, 5435281, 13324062, +-8561480, 13824426, -27222040, -769336, 189515, -1071058, 4371203, -3601330, 3073049, -11870216, +-13200582, 968515, 5485210, 489089, -10383620, 3747359, 3213173, -32349156, 17044578, 16993574, +30245696, -14798847, 11097659, -17011292, -19687594, 8731669, 40186936, 65001644, -4016331, -4385162, +1415192, -1523103, -28939490, 45441828, 21932250, 24123758, 18740016, -13285944, 15887621, -25774636, +-36856724, -6500433, 27763742, 17863842, -13113609, -8672076, -1719598, 22237194, 1068910, 16161425, +16115791, 26341034, 8976482, -16850768, -15687368, 14972793, -17669496, -13486734, 8016557, 28913720, +27017492, -30879742, -23540178, 15600932, 19066434, 57007100, -13082470, -31402116, -32087700, 27143656, +-20448340, 25586730, 29451664, 58629524, 125220848, -28218472, -15677168, -47116864, -74298104, -24069534, +-37274948, 4002373, 52123188, -7930120, 27749246, 38837780, 25971668, -14803142, -45863808, -75967768, +42547020, -3322694, 48361332, -25037512, -65227132, 22519588, -38500088, -52144124, -26193394, -16866874, +16884590, 15849503, 29901562, -2608656, -13931263, -2707440, -769873, -27220428, -25503516, 12761422, +-8725226, 26002806, 24590298, -11999602, 24501178, -19402514, 1036161, 23164906, 3068217, -37358164, +10371272, -19084688, -2671470, -6511171, -4364761, -27721866, -21641266, 3748970, 32841468, 33950644, +-31709744, -4433480, 40008156, 37050000, 734976, 7307350, -34916472, -19571092, 6017249, 20143396, +-30034706, 7180649, 24789478, 11335492, 9904195, 1985886, 15991237, 22781580, 12150999, -3463891, +4209068, -24753508, 5171141, -22518514, -62959924, 16456704, -26035018, 26817238, 4336307, 15193447, +13346074, -57531088, -40653476, -19862076, -12330851, -12984223, -23265300, -6868727, -38953204, -24584392, +19397146, -25140054, 49272940, -35811976, 4175782, 10588168, -3427921, 4823249, -1664300, 12200391, +-10896869, -11669963, -1688459, 9283572, -1116692, 21487722, -19349364, 5008469, 31016106, 10358387, +4999879, 16138876, 2339147, -11904039, -7537131, 25398290, 5970005, -38679400, -17005924, -31272194, +-14105209, 42787000, 39747236, -40070436, -4110821, -45635100, -10757819, -3247532, 11041824, 23779086, +-37491308, 25869124, -31864900, -4841502, -21471078, 49216032, -9458055, 34901440, 32422172, 71979896, +-32508608, 30062624, 5145908, 28601260, 10115185, 21978958, -35405564, -32185948, 48010220, 2987687, +-1455457, -33085206, 38821672, -12351789, 20077362, -34843996, 75006232, -39321500, 41868952, -49400176, +20114942, -37055368, 21178484, -34076272, 26107496, -21314312, 15460809, -11572253, 8649527, -18011482, +-11293080, -8134668, -2043331, 7382512, 1447404, 6107444, 723165, 6024229, -2551748, -8794482, +-14889041, 7664369, 7811472, 2979097, 7173133, -4862977, 2953864, -3676492, 3087008, 26501558, +-6230924, -17594870, 2837900, -9599252, -19441170, 7099044, -10524280, 8709657, -8797704, 7395397, +-16978006, 7854422, -22016540, 14797236, 32257888, 5945846, -56051472, -24031952, -34308736, 3098282, +-7174206, -76059040, -33950104, -19098646, -40024800, -24470040, -76687176, -64516852, -10896332, 29090350, +-41765872, -24464670, -5238787, -35352948, -7376070, -1854352, -34250752, -8333847, 8187282, 2809446, +-45778984, -25529822, -25697864, -13743358, -15586973, -3696893, -31488552, 28142774, 18603650, 39716636, +57140780, 49953692, 13443785, 52759916, 21669720, 10316511, -21991844, 19209242, 19781546, 16005732, +-5021891, -16565689, -7233262, 14075145, 23949812, 119257824, 16995186, 25492778, 18344880, 49469432, +19685982, 43604120, 78221016, -36071284, -74626664, 10613401, 49328236, 87534120, 39274792, -73326904, +11101954, -17354890, 109931832, 81397144, 98470712, 90629712, -76586248, -49923628, 64742872, 77786688, +-21246666, -43140264, -52604224, 121950768, 81408424, -3844533, -102709312, 26230976, -2865817, -21717502, +29727080, 9084930, -7928510, -20881594, 738734, 17762910, 45991048, 33282238, -25531970, -9330280, +-5955509, -4284230, 26549340, 19869592, 20897164, 1758252, 11818676, 42812772, 29296508, 7332046, +17835388, -9767293, 21947282, 28271622, 36383204, 46302432, 36264020, 28407988, 1777580, -4354023, +-7570954, -1293322, -18269180, -9139154, -7845832, -22765474, -30268246, -34422552, -60958472, -33574832, +-21412022, -35668092, -67876056, -46369004, -39075076, -45615772, -54954108, -57827976, -18354006, -20566450, +-30636002, -15802258, -17985712, -10758356, -16540993, -15659451, -15633681, -11038603, -14913737, -8804146, +-11905649, -8205535, -9474161, -4892505, -10787347, -661962, -10654203, -14405320, -19047644, -55984900, +89550072, 72307384, -62753768, 13925358, -1546725, 10008884, -2543158, -6264747, 22971632, -23256174, +22428856, -9247065, -38118, 8860518, 7140920, 7996156, -199179, -13190918, -8543764, 14376866, +-11996917, -1560147, 13755707, -7628936, -8087424, -11083163, -20382842, -20350628, 14702747, -7445326, +5375689, -12809203, 2393371, -27133456, -5058398, 7393786, 17279190, -11119670, 3637301, 11929809, +18932216, -4608500, 15640660, -12875775, 50216220, -18745922, 17194364, 2291902, 9654550, -9469329, +13170517, -5383205, 35715336, -5887327, 10922639, -25099788, 32743756, -17348446, -1553168, -4888747, +4581120, -9846213, 19566798, -22836878, 18367428, -20927766, 26931056, -28410672, 34207268, -22895396, +-12613782, -14349486, -7482907, 1384590, -22939420, 14784888, -13721347, 12975096, 746787, 17931488, +6430103, 12414603, 21478594, 9452686, -7908646, 5922223, 4978404, -3047816, 3550864, -6754373, +7500087, -3754875, -358093, -6590628, 14937359, -15068356, 1003412, -1265405, 12009802, -2247342, +2114735, -2768643, 4540854, -7035157, 5053566, -5982353, -3716221, 11911018, 10077067, -3005940, +-11156714, 7070053, 8821326, 10283225, -9771051, 8068633, -6952479, 6138045, 825707, 2535105, +-10517301, 10877005, -4558034, -12102681, 9652402, 10157061, -9035001, -1322313, -2520072, 3102040, +-8841727, 11764452, -11287711, 4388920, -12305618, 10839961, -9156870, 9398462, -7572028, 11461120, +-12918725, 13728326, -12785044, 7002408, -10838350, 10714870, -12283070, 9883257, -8145406, 12229919, +-13602698, 13637058, -12063489, 11424613, -9146670, 10601590, -9862319, 9051644, -7923141, 7361037, +-8099235, 7096897, -7517267, 7987029, -8238821, 7865159, -6879464, 6964290, -7106561, 6679211, +-6463389, 7480223, -6381785, 7296613, -5342403, 6330245, -5215164, 5325760, -5482526, 6524056, +-4828617, 4996121, -3924526, 5651640, -4201015, 4116189, -3739843, 2783139, -2858838, 3567507, +-2429878, 3813394, -2928631, 3885335, -2945274, -21910238, -45354856, -49906448, 42559904, 10810970, +-13088376, -67655400, -27162984, 37809132, 7754564, 27328876, 30455076, -10899016, -19043884, 975494, +7259032, 5662915, 5093295, -11908871, -8752606, -6583111, 82678, 18394272, 9949829, -820876, +4166655, -5215164, -8819178, -5595806, -4598836, 392990, 5452461, -4105989, 7022809, 7395397, +-24838332, -10992969, -10972568, 13338558, 9273908, -781147, -11548093, -15604153, 13670344, 3064459, +9175124, 12779675, -23041426, -15304042, 4233227, 18629420, 9403294, -26199300, -16156593, -21276194, +-10155450, 5537824, 4832375, -8736500, 9660455, -3918621, -9192841, 4158065, 8800388, -6527277, +2096481, -217970, -8220568, -716186, -2906619, -18599356, -18821084, -1126355, -20080046, -15022722, +625455, 6118181, -4388383, 22174916, 16340740, 9344238, 683437, -2095407, -9873593, 12294344, +5990943, 7183333, 6892886, -6178848, -2633352, -443992, 3496104, -11581379, -14153528, -1923072, +6191732, 942745, 7841000, 5509906, -7399692, 2448131, 4297115, 3075197, -2406256, 7894687, +-9844602, -5825587, 18009334, 10392210, -11149735, -8324184, -5698885, -9886478, 10912438, -350040, +1522566, 5050882, 3205656, -98784, -472446, -7366406, 4648765, 2833068, 6404870, -3626563, +-1137093, 4216584, -467078, -4865124, 17603460, -43889732, -119597656, -45456860, 27228482, 57605176, +135826192, 79844512, 21707302, 28443420, -23544474, -43951476, -96218544, -64855080, -49749144, -16258599, +19710678, 52969832, 41136660, 51425256, 49648212, 33692944, -11370389, -39173324, -33960844, -34847216, +-28055264, -40397924, 12395812, -25528212, 1855963, 18830210, 34720516, 19644644, 32497334, 42927660, +779537, 12829067, 925565, -629750, -23997592, -3140695, -21357798, -41599980, -65758096, -36571648, +-20083268, 5340255, 4970351, 39119100, 54206244, 52197812, 62039192, 9082782, 40701256, 16194711, +-3710852, -38144680, -37465536, -50746112, -66733592, -45414448, -51722680, -32668058, 150324, 16078747, +37087580, 60052232, 88310968, 70868032, 64095944, 34803192, -13290776, -13013751, -34743064, -73721504, +-56751552, -93176096, -61374008, -27088358, -20738786, 29219736, 55914568, 76793480, 54081156, 41544680, +25140054, 28824062, 25190520, -3951907, -29118804, -27618250, -43774308, -48277044, -38566120, -26242788, +-24559160, -23181012, 10590316, 22772990, 40052716, 47722992, 38987564, 34430604, 19511500, 789737, +912681, 4541928, -29020558, -48980880, -20198158, -42761232, -48688288, -1525787, 12060805, 27204860, +27924266, 18027588, 29516088, 17330730, 23592792, -4872104, -601295, -20654498, -12605192, -10909217, +-13858786, -15613280, -12814572, 2238215, -5405217, 174483, 14308684, 20166482, 12486544, 11132018, +-2901787, -3350075, -312459, -137439, -6236830, -7050726, -1332514, -4100620, -4500589, -2435247, +-46171, -4284767, -1619740, 9019968, 3000035, 4254702, 5668820, 4853850, 1740536, 1660005, +-1074816, -3818763, -5586142, -4014721, -6545530, -5371394, -1459215, 1023276, 2261300, 4454418, +3533148, 3265249, 4241817, 2949032, -1825898, 780073, 1706713, -1261647, -3488587, -3667365, +-2982855, -232465, -1333587, -2130841, -1321776, 1217086, -141197, 1245541, 3205656, 3160022, +2630668, 1465658, 234076, 48855, -992674, -945430, -1580011, -1459215, -1132261, -970126, +-1589138, -840203, -823023, -603980, 463320, 1924682, 1089311, 1620276, 1845225, 1533840, +927176, 237297, -589484, -1021665, -1619203, -1198296, -1356136, -1244467, -443455, -28991, +-504659, 249108, 1144072, 1394791, 908386, 567473, 618475, 690953, -158377, -599685, +-666794, -564251, -517544, -256087, -206158, -27380, 44560, 108985, 33823, 61740, +52076, 56371, 16106, 21475, }, { 8093329, -5188321, 158377, 290984, 6376416, 1604707, -3152506, 2183991, 4246649, -2122251, -3498788, --12596602, 684510, -4220342, 8437463, -4155918, 4235375, 3432216, -430034, 2780455, 4671314, -1301375, 1097901, -2270964, -2764348, -2117419, -3485903, 3074660, 1821066, -1617055, 2748779, --1864553, -2786897, -3300682, -1604707, -2600066, 228707, 76773, -486942, 5808944, -3336653, -4758824, -1703491, -1164473, 3172907, -1926830, 993211, -1926293, 3477850, -987843, -9861782, -2971581, 346819, 1249299, 4962835, 2603287, 359167, -1086090, -3260954, 8484171, -4465156, -3324305, 1719598, -3452617, 3555696, 1623498, -4126927, 3314104, -4256850, 285078, -440234, -3766150, 613107, 3935264, -1501091, -8671539, -1864553, -2060511, -4140349, -3666292, -3674345, -3051038, 1324461, 1097364, 1826972, 1868311, 363462, 909459, -1021129, 654983, -753767, --300648, -2127620, 17180, -707059, 1657857, -157840, -463856, -325881, 217970, -1103270, -425739, -479426, 645319, -352724, 159451, -1271847, -108448, -1589138, -926639, -907312, -1342177, 15291157, -7649337, 782221, -528818, -517544, 3424163, -2832531, -11099269, -10234370, -4713190, -3285650, -1014149, 2525441, 490700, 2491618, 2786360, -4913443, 2541010, 1733019, --3505767, 3942780, 5973226, -4023311, -1376000, 225486, -6606734, -3027415, 577673, 7722888, --1339493, -517544, -6583648, 3767223, -79994, -5911486, -2576444, 1946157, -970126, 1050656, --5129265, -204548, 257161, -2139431, 5301064, 1279363, 1121523, 5119601, -630286, 6673843, --2361158, -8679055, 3381750, 3277060, -3115462, -1406065, -1144609, 979789, 293132, 2308008, --2060511, 1497870, -4779225, -297427, 2987687, -4570382, -618475, 2550674, 746251, -2431488, -1451699, -1862405, 394600, 4313221, 1492501, -6133750, 7256884, 2672007, 2616709, -712428, -4141422, 4611185, -2122251, -374199, 957778, 1124745, 1392643, 1899449, -279710, 82141, -1399623, -292058, 136365, 845572, 2214593, -447213, 2257005, -167504, 488553, 1114007, -239444, -754841, -264141, 737124, 720481, -214748, -1112933, -3708704, -8958228, -1068910, -965294, 9891310, -3767223, 8477729, 2126009, -287226, 526134, 7584912, -1762547, -2072859, --2194192, 5346698, 10856604, 2845416, -7485055, -10155987, -14450954, 1896228, -3774740, -6073621, --3334505, -9418326, -44560, -4369593, 710817, 4526359, 4765266, -5368709, -4810364, -3413962, -604517, -7990250, -871878, 2488934, -3619584, -1314260, 840203, 3227131, -4490925, 1176821, -10566156, -433255, -512712, -3889630, 4400731, -1955284, 389231, 3363496, 4376035, 6505265, --1037772, 964757, -1957968, -82141, -1110786, 865436, 10151692, -11273215, 252329, 2198487, -5998459, -2488934, -2985002, -657130, -2818036, 8116952, -4468377, -10625749, -736050, -3166465, --4451197, 2645700, -10523744, 3894999, -1125818, -2916283, 212601, 7438347, -2202245, -2789581, --2866891, 3568581, -3341485, -901406, 627602, -299574, 1282585, 123480, 501437, 2211371, -179852, 581968, -551366, 1778653, 390842, -348429, -2000381, -1070521, -150324, -1046361, -2057289, 1257352, -1172526, 1539209, 155693, 231391, -1089848, 576599, -478352, 52076, -531502, -16510928, 6165426, -5166309, 6919729, -6222334, -563714, 4786741, -9547712, -1644436, -2912525, -2604361, 13914083, -5843303, -1760937, -5574868, -4654134, 7141457, 7952132, 3069828, --9362492, -11311333, 10456098, 1745367, -10590852, 3949223, 392453, 5004174, -3139084, 4773856, --6335614, 3080565, 10235444, 4218195, 4386236, 2313377, 182536, -2615635, 2141041, 787590, --6978785, 106300, -2210835, -5140539, -5115843, -1955284, 4046933, -7373385, 1008244, -5337571, --543313, -825707, 2433099, 4355097, 9248675, 3252901, -50466, 3961571, -4938676, -7283728, --126702, 1682017, 759136, 8773544, -1995549, -1086090, -2805688, -1254667, 1253057, 4254702, --1153736, 1771674, -4354560, 7097434, -1861332, -2496450, -1636383, 2291365, -3854196, 108448, -4402342, -325881, -1256278, 637266, 3499325, 2739116, -537945, 2205466, -1883343, 1391033, --1136019, 532576, 2508798, -895501, 1077500, 1050120, -1697586, 1698660, 1059246, 367220, --722091, -1567126, -360777, 1901060, 1286343, -685047, 782758, -388695, 3156264, -301721, --863825, -8252780, -1925756, -5356898, -547071, 10960220, 7005629, 4894652, -833224, -9647033, -1345935, -6347962, -10225243, -3394635, 7358890, -5775658, -9066676, 2368138, 777926, -4517232, -968515, 5159330, 1421097, -12085501, -3425237, 7594039, 8945880, 4460861, -10015864, -3634079, -4563940, -1707250, -2156611, 649077, 3352759, 539018, 1239098, 10277320, 19327, 6216429, -4818417, -79457, -4628364, -113817, -2731062, 6127308, -3504693, -5846524, 13422, 9614284, -539018, 9550934, 5147519, 926102, 6170795, -1040993, 13260175, 1069984, 6560026, 7473780, -691490, -6179921, -948651, -7393786, 3773666, -5298379, -2972117, -4885526, -3222299, -2344515, -2426657, 820876, 3653407, -151398, -4224637, -3677029, 1373316, 6831146, -2024540, 1690070, --7332046, 2323577, 6334540, 9727027, -3351148, -723702, 1610076, -3344169, -253940, 3211562, --984621, 5899675, 388158, 1343251, 147103, 281320, 2175401, -1436667, -934692, -765578, --443992, 597000, 730144, -1109712, 964757, -337155, -1177358, -1432372, 485868, -1359357, --896574, -1705102, 831076, 1183800, -246961, 3328600, -2157147, 588411, -234613, -1883880, -3167002, -911607, -448824, -1653562, 1797981, 1185948, -289373, 482647, 1586454, 10007811, --14944339, -2750390, 12524125, -6211597, 2292976, -9658308, 4259534, 17617418, -2379412, 934155, --741956, -12441447, 1007707, -789737, 18693308, -5895380, -912144, 8173323, -5149129, 11587285, --7808788, -1163936, -11807402, 13354664, 185220, -5251135, 170725, 4894652, -6207302, 9285719, --986769, 8230231, -58519, 4313221, -12906914, -8303246, -6022081, -1931125, 7780870, -11693048, -6252936, 4835597, 1631551, -4838818, -7053410, 16087874, 3194919, -1819456, 6238977, -5678484, -3381750, -7561290, -7431367, -3092377, -4990215, 17374754, 5186710, -3446711, -5163625, -6621766, -5459441, 4515621, 1641214, -6106907, -748398, -2471217, 7420093, 675921, 6001680, -14021458, -7627325, -1224603, 374736, -1555315, 2465311, -6185827, -2881386, -9721658, -3186866, 3544959, -5932424, 6279779, 2317672, 2292976, 1462436, -3474092, 2072322, 1435593, -261456, -2326799, --3887482, 2083059, 1934883, -2959233, 1527398, 220654, -2454574, 1619203, 441308, -1036161, --586263, 168577, 469762, -1790465, 1247688, 709743, -2828236, -641561, -1456531, 249645, -1977833, 1384590, -308701, 106837, -1320703, 3173981, 258235, -1082332, 6433324, 3219615, -5320391, 1645509, 161061, -1884954, -7908109, -2392297, -5066451, 3248606, -204011, 12134893, --10022306, -12938589, -3205119, 4145717, -3979824, -3068754, 10330470, 2138357, -5581310, -6444599, --6685117, 11283953, -5573794, 7650948, -3580929, 8362838, -8196945, 1893544, 12793634, 4428112, --17270064, 4062502, 455267, -2151779, -1480153, 1847910, -2008971, 1750736, -2768107, 1454920, --643708, -7683160, 7821136, 8026220, -2313914, 8883603, -7465190, -1240172, -2108292, -3520263, -9767293, -6924024, -12322261, -6876243, 2388539, -10035728, -9349070, -4641249, -3117610, -6405944, --479426, 8346195, 8785892, 1398549, 9467182, 3004330, 1323387, 7192460, -7565585, -1277216, -63888, -6203007, -537, -6007049, 7407208, -2047089, -1278827, 6172942, -1058173, -1858647, --1200980, 7357816, -829466, 2611340, -7037841, -2452963, 4034048, -4540854, 401043, 194347, -852014, -3444564, -2362769, -1781338, 178778, -1857037, -2224256, 798864, -285615, -1992328, --838592, 336081, -153545, -573915, -634045, -1117765, 442919, -3745212, -2588255, -2500208, --2477659, 100932, -77846, -836445, 994285, -1886564, 19265612, -9606231, -9250823, 6163278, -15644418, 2994666, 14082661, 8016020, 12782896, 5634997, -2469606, -5891085, 4534412, -9659918, --7373922, 10667625, 8899709, 22352620, -647466, 3064996, -8370355, 8602819, 3849365, -10037339, --2440078, 12640626, -114354, -14030048, -5721434, -7938174, -2752537, 7752953, 7088844, -5347771, --2646774, 9684614, -9502078, 4286914, 8121247, 9755481, -5305359, 8392903, -3638911, -12773770, -4423280, 11653320, -3201361, 3339874, 2781528, -3997004, 1355599, 3470334, -3706557, 1272921, -9395241, -5604396, -3017752, 8709120, -1946694, -1792612, -14561013, -5153961, -8820252, -14402636, --9754408, 7195144, -4783520, -6168110, 12387759, 12436615, -3214246, 13378823, 5304285, 8784819, --2537789, -6943352, 5726265, -7198902, -14416595, -8658117, -3752728, 7070053, 3204046, 11860552, -2035278, -2567854, -1983738, -12885, 2000381, -3696893, 179852, -2149094, -369367, 2080912, --418222, 332860, 3783866, -1394791, -751619, 3818763, -2862059, -1433982, -1913945, 1132798, --2127620, 1398549, 801011, 602906, 1957968, 2576444, 1116692, 4644471, 518617, 3179350, -1031866, 2393908, 2690260, -2387465, 2133525, 2354179, -1729798, -506269, -280247, -3338263, -930934, -1723893, -9765145, -10446971, 14132590, -2364916, 32294932, -13312788, -6259915, -752693, -7878044, -4515085, -4402342, -13318694, -15398531, 6942278, 1336272, 21243446, 6886980, -2182380, --2425046, 14106820, 14416595, -11923366, 8654896, -11390790, 2995740, -4913980, -5860483, -3506304, -2426657, -1865626, 7493108, 3737695, 8384313, -1059246, -3991098, -7881802, -1515587, 9140764, -828392, -12181601, -1521492, 2944200, -5185636, 9621264, 8153996, 1677722, 2845416, -26582090, --10162966, 9267466, -607738, 14894410, 4177393, 16790638, -1871532, -9109089, 8992588, -5100811, -6140730, 1075352, 24506010, 20234128, 2411087, 5715528, -3315715, 8038568, 8564702, 9222369, -10008348, 16226386, -273267, 2902861, -6200322, -5436892, 5113696, -7606387, -18807124, -13978508, --299037, 11688217, -5875516, -10663330, -6089727, -5755256, -607201, -12728672, -479963, 2352568, --53687, -1722819, -1218160, 1310502, 2780991, -354872, 2105608, -9506910, -5789616, -3041374, --6699075, 588411, -2396055, -3932043, -2602213, -1607928, 3884261, 1564979, -3570192, 1174137, -8546985, 4371203, -1757179, -3039763, -3832722, -2260227, -3080565, -6659884, 2487323, -2573222, --491237, 4824859, 1624571, -962073, 976568, 1850057, -28014998, 22151294, -610959, 2541547, --7742216, 12429635, -26597122, -17041356, -5355824, -6812892, -620086, -23845658, 4697084, 513249, --616865, -10877542, -11069741, 4537633, 15235323, 2379412, -20275466, -4377109, -16597364, 13153337, -8499203, 682363, -7335268, -3459059, -3732864, 10842645, -1518271, -197032, -2318746, -14685567, -7668127, 10331544, -6140730, -3271691, 8045011, -15988016, -11641509, -17641578, -5959804, 4463008, --11240466, -5360656, -454193, -18271328, 5615133, 11301670, 19998978, 2893734, -1957968, 1243930, --13111461, -10285910, 15316390, -1075352, -5789079, -3598646, -23387170, -12548284, 4605816, -4933844, --2706903, -1814087, 15341623, -2646237, -14534706, 1177358, 11365020, -284005, -7118909, -133681, -804770, -6009733, -10188199, 8025684, -18750216, -9286256, -120796, 9075803, -11454678, 7258495, -4824859, 6612639, 7060926, -7208029, -1807108, 8642548, 1668058, -5287642, 4972499, 7150047, --6676527, 2480344, 6426882, 6053220, 9528922, 633508, -2902861, -1636919, 1567126, 118112, -4189204, 3513820, 325881, -881005, -3040300, -1051193, 2093797, 4233227, -7041062, 891206, --1342177, 2895882, 6783364, 317291, 4747013, -2557653, 3148211, 3863860, 5712844, 4440460, -5572183, -438624, 3191161, -1056025, 2428804, 14551349, 13335337, 4656819, 22800370, -10614475, --5114769, 3457986, -6347425, -2064806, 7244536, 24464670, -4292283, 4748623, -455267, -1797981, --710817, 27015882, -13526999, 13889924, -449898, -18164490, 5626407, -18018998, -11155104, 9994926, --9659381, 6997576, 83215, 724776, 11920145, 9541270, -15013595, -16919486, -12835510, -4446902, -4454955, 4565550, 1485522, 3055869, -20339892, 2825015, -11067594, -25463250, 16860430, -5204427, -15834471, 17026860, 678068, 6213744, -9540196, -11466489, -20185810, 4328254, 17885318, 2978560, --8319352, 843961, -4350802, 2558190, -11026255, -8986682, -11011759, 1613297, -1625645, -3718368, -11403138, 10321880, 6021544, 16861504, 1592896, -18206904, 22900228, -17197586, -5557151, -4482335, --4823785, 19240916, -3444564, -28104656, 23383412, -9488656, -6009733, 6277632, 5682242, 18055506, -11336029, 7430294, 8596377, 7857106, 5770289, 130460, 7336341, 9012452, 2111513, -93952, -9548249, -1974611, 806917, -9305047, -2527052, -3113315, -5067525, 540629, -1079647, 5744519, -3993783, 1554241, -1090922, 2653753, 889058, 1874216, 3672734, -1463510, -1893544, 621160, --1872069, 2771865, 1044751, 1174137, 2021319, 1143535, 8774618, 6447820, 1546725, 1625108, -20946018, 23699630, 5369246, -45204532, 1411434, 12499429, -15059229, 8834211, 17796196, 674847, -4692252, 11153493, 8543227, 3182034, 15983184, 3463891, -2429341, 30180198, 11124502, 3773129, -12957379, -10237591, 15938624, -11485279, -1156420, -1466195, -3893388, -16852378, 5419712, -11977590, -21484500, -2115272, -4418985, 31636730, 4089883, 4471061, 10430865, 1018981, 5946919, -7319698, --14024142, -1757715, 9205726, -16602196, 18907520, 17026860, 12548284, 3150359, 7412577, -11528229, --11937862, -18882824, -8407935, -10272488, -9761387, 4271345, -1957431, -18496814, -8264054, 15930034, --411780, -15292231, 8432631, -1018981, -10426570, -24718610, 1580548, -37370512, 21490942, -12845710, -19538344, 766115, 5362267, 454730, -7426536, 9701794, 33135672, 2861522, 9363566, -6009196, --26030186, 2101850, -2907156, 18767934, 10931229, -4662724, -1020592, -4126390, -2150705, 6247030, --7516730, 5851356, -969589, -6723772, -6659347, 6796786, -8132521, -8126615, -11236171, -2461553, --8100845, 2309619, 6931004, 265214, -2107755, -5412733, 10164040, -9818295, 2452963, 1031866, -793495, -5851893, 4010426, 9864466, -508954, -5223217, -1284195, 8980777, 9487583, -7861938, -9084393, -874026, -2437394, 1244467, -634581, 9906879, 2581812, -5603322, -4772246, -263604, -1086627, 5719823, 12628278, 9450539, 24738474, -33488934, 13514651, -19526532, 17049410, -8167417, --13940927, -3854196, -16088947, -6653978, -3424163, 6091338, 7726646, -4560719, 23771570, -913217, --3842385, -2971044, -21124260, -2173790, 302795, -17770428, 5973226, -15130633, -19087908, -6070400, -11839077, -31793496, -21484500, -14334990, 1861332, -22248468, -18820010, -15261629, -7531225, -6099391, --2726231, -14996415, 16407849, 2920578, -1360431, -11163157, -11408507, 22031572, -18835580, -12898861, -5969468, 5963562, 8085276, -10944650, -15175193, -6381785, -2640331, 7282117, -10836739, -4326106, --4306242, -13093745, -22290880, -28348394, 27139362, -29381872, -1418950, 2191507, -4924717, -5352603, --26144540, 10308458, -6101538, -27562952, -410706, -5982353, 26253524, 6534793, 18748606, 17714592, --5028870, 6985765, -2674691, -4952098, 13257490, -3215857, 7714298, -9916543, 1005559, -9991705, -8815957, 6784438, 1452773, 6211597, -2400350, -896038, 6745783, 3172370, -6140193, 4767414, -10856604, -1590749, 2683818, -5738613, -13371844, -1392643, -964220, -420370, -9211094, -2021319, -1744831, -1342714, -4800700, 6469832, -948651, -3627637, -10775536, -11129334, 398895, 6124624, -3839701, 2369211, -510564, 8024073, 9345312, -4093104, 2201708, 2198487, -368830, 2703682, -6856379, -29885994, 34816616, 5600638, 3618510, -5915781, 17742510, 314069, 29138668, -7818451, -20032802, 10817949, -28481002, 12488154, 4828617, 13666049, -2202245, -7544110, -11256572, -4121558, -14117558, 30826054, 3398393, -4428648, -19311784, 7409356, -20896090, -3270618, 21396454, -19135690, -188979, 1402307, -3151432, -7194607, -7998303, 34133180, -7194070, -8330089, -3958886, 7770133, -11611981, 4321274, 746787, -6914898, 85362, 5129802, 20899848, -4730370, 29822642, 17338246, -9028021, -7106561, 26029650, 29361470, -2206540, -7764764, -1322313, -9533217, 3142306, -9443022, -15030775, 5047124, 21560736, 16481400, -25882010, -29431264, 35539780, 26225070, 4414690, -4998268, --13747117, -19392314, -7319161, 19866372, -18437758, -20247012, -2579128, -5471789, -32095216, -7221988, -7472170, -12552042, 2025614, -91805, 2013803, 2622615, 5688148, -9554692, -5572720, -9820443, --3235721, -52076, 1776506, -5363341, -2217277, -955630, -15639587, -5327907, -7265474, -3526705, --77309, 1404991, 1017370, 2667712, -667331, 584116, -8039105, 4829691, -6863358, -8366060, -6331856, 2549063, -14595373, -1634235, -4292283, 7391102, 14685030, 304406, -11764989, 9769977, --2360622, 2552821, 3848291, -3956202, -2414845, 891743, -6063420, -8587250, 15626165, -12324409, --3815005, -2384781, 3300146, 748935, -18656802, -54557896, 27734752, -26096222, 11011759, 39393440, -6242198, -16124918, 11559368, 13908178, -5424544, -12130061, -2307471, -26734024, 9186398, -27795954, --16779900, 11547020, 1431835, 5137318, -25096568, -4886062, -18041010, -15268609, -22323630, -7606924, -8008504, -13176423, -13388487, 13555454, 2103997, -833224, 4491462, -25706454, -1330366, -19929186, -17575006, 5056787, -49199924, 12743168, 26780194, -5381594, 16083579, 13594108, 9250286, 7487739, -25587804, 20138028, 998043, -17832704, -3565897, 20352776, 13286481, -16505559, 1474248, -19327890, --6057515, 1614908, 14495515, 19346144, -34727496, -27378270, -15224585, 3240016, -10139344, -3552475, -32817308, 5652177, 7970386, 25651156, -10027138, 5530844, -6206765, 26242788, -12945031, 1363115, -2848100, 19522774, -5092758, -1733556, 7295539, 8196408, -740345, 4161823, 12813498, 813896, --133144, -199179, 12483322, -5876589, -3698504, 3259880, 5549098, 3911105, 1872069, 6086506, --2421288, 347892, -5336497, 167504, -3905199, -290447, -5475010, 9701794, -6813966, -10058277, -10057203, 6765647, 7002944, -6997576, -9182103, 332323, -16670916, -4301947, -8472360, -8524436, -3689914, 245350, -8783745, 3380676, 3919695, -651224, -5100811, -4808753, 4168803, 2797098, -8304320, 18163954, 17556752, -30617212, 6405944, -6596533, -8051990, -7117298, 20540144, 10905996, --14979772, -8551280, 15676094, -28164784, 1601486, 10241886, 15707232, -3349001, 3481071, -32869384, --117038, -14564771, 11000485, 4034585, 18248780, -28910498, -14570677, -4212826, 3576634, -2496987, -5657546, 2057289, 15779710, 29704530, -18799072, -24315958, 6419366, -25340308, -7450158, 10593000, --18393198, -17901424, 1512902, 11005317, 15488726, 10960220, -6889128, -1571958, -32225676, -21760988, -28654412, -19888382, 38671884, -16406775, 7893613, 5639829, -278636, -28423556, 35612796, -16595217, --3345780, -6419903, 13921063, 26782342, -27086212, -15440407, 31850940, -23576150, -23622, -8913131, -6525129, 36813776, 228707, -2732136, -22771380, 28154584, -9161702, 7305203, 9337796, -17842368, --21467858, 2079301, 12416214, -6455336, 6374269, -51006496, -23756538, -7321309, -25978110, -12841415, -4366371, 16872780, -3537979, -4663261, -13271449, 327491, -1245541, -9741523, -3329674, 5941551, -521839, 7970386, 3773129, 7552163, -10001905, -1453846, -2079838, 10515154, 8364986, -6347425, -19362786, 7106561, -7768522, 11704323, 3235184, -1185411, -6108517, 4413616, -4414690, -4185446, -8661875, 709207, -3787088, -3431679, 7262253, -2036888, 6567005, -1520955, 11932493, 2452426, -1748052, -4836670, -3517578, -4327717, -1576253, 1433982, 17452600, -20203526, 5455682, 16485158, -16296180, 37155224, -23849954, 34119220, -6178311, -22578644, -22099754, 5499706, 14170171, -10062035, --4722854, -15586973, -6498823, 28887414, -20621748, -2041183, 23199266, -7684234, 13790603, -9457518, --4584341, 24610700, -1014149, 1123671, 23742580, 16413754, 5707475, -3080565, 20030654, 27392764, --28198070, 25734908, -24925306, 12973486, -18033494, 3601867, 21188684, 7155953, -48588964, 21366926, -13608604, -299037, 24413668, -38595112, -7575249, 26013544, 22111566, 3584687, 34833796, -18746996, -257161, -4611185, -5555540, 14869177, 6051072, 26074746, 21690658, -16518444, 14339822, -30549566, --9576166, 2297271, -1703491, -2497524, -5101885, -47737488, -26424786, -36901284, -25121800, 27202176, --17162152, -4257387, 2961917, 44624172, -10871636, -15902116, 35765268, 21865142, -1213328, 28949690, -4243428, 5373541, -13771813, -79994, -11549167, -12156368, -6369437, 9295920, -11674795, -6146098, -5390184, 2010582, 8824547, -3739306, -1698660, 11495480, 6585796, 563178, -9392557, -7561290, --1331440, -2989297, 6736120, 11470247, -1051193, 1937567, 2496450, -4823785, 28707024, 8805757, -1865626, 1041530, -9637370, 7565585, -17074642, -1371705, 14360760, -1132798, -4040491, 10435160, -5850819, 3118683, -444529, -9532143, 6075768, 6723235, 2069637, 3628174, 4841502, -3396246, -3700114, -11531450, 11919071, 29963840, -15919296, 11816529, 14984067, -20887500, 3122441, -25780004, -10350334, -2380486, -13580150, 21173116, 988916, 32794760, -1610076, -23800024, 41344964, -6933688, -4458176, 6090801, -38088844, 12016782, 33464774, 12248173, -14030584, -24732570, 2979634, 6593849, -28663002, 18713710, -8875013, -5044439, -21703006, 678605, 32378684, -43060804, 13560822, 30913564, --27035208, 10532870, 3188476, 11041287, 32381370, 11194832, 12706661, -5432060, -31120796, 33081448, --5710159, -16139413, 68638408, 34127812, 17760226, 3517041, 1882269, -31608274, -26024818, -11413339, -20409684, -133144, -18320720, -12610561, 25656524, -14909442, 17772574, 10469520, -12184285, 19214610, -8859444, -26473642, -13192529, -15282031, 4777614, 17535814, -33524904, 11735461, -34359740, -43203076, --27235998, 42651708, -14214194, 9320616, -9511742, -13956496, -1782948, -16749836, -11739756, -8606578, -2457795, -16011101, 2276333, 10445897, 299037, -13996762, -10591926, 5827734, 1972464, 19368156, -2815888, -20768852, -8034273, -11589969, 17952426, -2857764, -6822556, -16258599, 95563, 10959146, -4972499, 12394202, -5577552, -1136556, 3757023, 12634183, 7866770, 471910, -6400038, 9636833, --7906498, -28454, 5109401, -6819335, 122407, 14112726, -100395, 3340948, -14238890, -9352291, --10752451, 7515656, -11457899, -2715493, 41467372, 69389488, -12017318, -2712809, -57597660, -19587736, --42449308, -28430536, 38613368, 2381023, 10222022, -32771138, 10129680, -28819768, -64383708, 8956081, -30392262, -2911451, 3619047, 32741072, -44250512, 49737868, 24620364, 15277736, -25183004, 33328410, -64608120, -13269301, 19735912, 48978732, 41313292, 73156712, 15637439, 26048976, 19671488, 17562658, -62809600, -16751446, -7814693, 22951768, 13517336, -7168838, 34421480, 1791538, 7023882, -20893942, --56661892, 1904818, 37350648, 5452998, 22529788, -40961104, 2285996, -54369456, -129386, -58402428, -3783866, 40553080, -5382131, -17566416, -55649892, 72410464, 13012140, 4665945, 75044888, -1100585, --17357036, -12881144, 3731790, 14875619, -4297115, 107911, -6097243, -39922256, 23456428, 9022653, --25039122, -15403900, 19594714, -24139864, -41683196, -20394652, 8964670, 39687108, -41710576, 33041184, --1723893, 17608292, -7363185, 14375792, -10065256, -1491427, 3520263, 4035122, 13267154, 12101070, -2431488, 25438554, -1391569, 10475962, 13331042, 7859254, 5808407, 6136972, 21915608, 16437377, -7869991, -8475044, -3629247, 19198504, -25393994, 9952513, -15151034, 3838627, -5637145, 17431662, -19866372, 40568112, 22573812, 38325604, 21862458, 8337606, 40043592, 41837276, 39577048, 23044110, --6623377, 24152212, 26394184, 16724066, 31776316, 24426016, 288837, 7927436, 5723044, 6016176, -9651865, 7635915, -7613904, -7096897, 938987, 7793218, -1304596, 72478, -1750199, -3510062, --7530152, -6583648, -2582886, -1536525, -2612414, 256624, -4154307, -1818919, -23005992, -73950208, -2588255, 97692792, 13424457, -21066278, -19979114, -45880988, -30280594, 397284, 60686816, 9905805, --42030012, -3903589, 15891379, 3099356, 351650, -4996658, 9839770, -30334818, -11893301, 14081050, -33267742, 33486786, -33342368, -13422847, 1636383, 3661460, 7836705, -38296612, 2776696, 5170067, --10661719, 25949656, -1094680, 30086246, 45892800, 21424908, 8879308, 19410030, -27286464, 23159000, --22178138, 35101692, 62894428, 20028506, -35133368, -30596274, 28119150, 9601936, 53538916, 39857832, -11763915, -11104638, -12853763, 746787, 2155537, -19804094, 20439212, 17547088, 2872796, 48103096, -32937568, -5424544, 23317914, 25750476, 11841225, 25752088, 550830, -47531868, -6350646, -12145094, --11349988, 52108692, 23870354, 7689602, 41628972, 24056112, 26349624, 32082332, 10881837, -34615288, --17233556, -1728188, -1101122, -12824772, -10372883, -21378736, 12236899, 7262253, 19349902, -10245644, -21658984, 5252745, 22457848, 14362908, -5485210, -12653511, 3036542, 5205501, -163209, 1646583, -16401406, 635655, 25883084, 34127272, 9740986, -3965866, 2274722, 24222004, 5530844, -9031242, --6971269, 18902152, -1284195, -7267622, -4096325, 5506685, 13954349, 27139898, -15050102, 1161252, --9795210, 1204202, 1003412, 21900038, -12458626, 10216653, 13895293, 7144141, -10516227, 2028835, -16244103, 831613, 503585, 14470819, 2211371, 8209830, 6039798, 282931, -2898566, 1518808, --2018635, 2243584, 1360431, 2449205, 1202054, 6250251, 2486249, 1668595, 2013803, 4089346, -1886564, 4476967, 1817845, 2188286, 2381559, 1879585, 2505577, 1246614, 2321430, 3185255, -3619584, 3489661, 3929895, 3124052, 4154307, 3079492, 3386045, 1430224, 3447785, 1434519, -3176665, 1060857, 3202972, 2174327, 2936147, 703301, 2934000, 1887101, 3121904, 2040646, -3516505, 1085553, 3760781, 1134945, 3362423, 1868848, 3333968, 1303523, 3750580, 1237488, -3053722, 1740536, 3280281, 1610076, 3871376, -38655, -14081587, -68940128, -14582488, 39197484, -21342766, 85219664, 5021891, -11812771, -37606732, -73895984, -81333792, -13109314, 35575752, 40088152, -25715580, -40754944, -54193896, 135828, -6355478, 22294638, 57204132, 29500520, -5035849, -33568392, --45985676, -28538448, 2183991, -27938762, 11383811, -23284092, -11507291, 38487740, 31632972, 28477780, -11165304, -38400228, -10616622, -36703716, -28427314, -14418205, 22240414, -3572876, 23598698, 58106076, -60240676, -24459838, 7126425, -43731892, -30084636, -20582020, -3637837, 8844411, 35003984, 37702832, -51382840, 36966248, 13254269, -24768540, -23172960, -5017596, 16626892, -41225244, 3211025, 49463528, -39138428, -9630927, 52977884, 47743932, 26752814, 49873696, -93256624, 22799834, -26418880, -28207734, -16152835, -14857902, -1223529, 94795832, 79817136, 28852516, -24511378, -1591285, -37365680, -6765111, --50287624, -17289390, -8380018, 20045150, 61794916, 32938104, 13019656, 11607149, -9867687, -30354682, --39806292, 730144, -26260504, 21706764, -2233920, 478352, 23727010, 19984482, 7357816, 20679730, -7136625, 31955094, -21799644, 208306, -24043764, 10672994, -20910048, -18547280, 3401077, -5131949, -16693464, 30273076, 1851131, -26746372, -46154256, -13225278, -26739930, 3776887, 12043625, 22594212, --17824114, -5616207, 836982, -303332, 23430658, 1884417, -120120568, -136177312, -146416512, -147928336, --200539008, -12016782, -71917080, -23322210, 26450020, 66853312, 93842352, 96807488, 197941088, 212262112, -172776864, 128502736, 136121472, 129802504, 49961744, -19432580, -89388472, -89544696, -137370768, -44703092, --74490304, -55554328, -5288179, -116609432, -33606508, -104162624, -28414430, -119672288, -112831472, -52136608, --93168576, -9587978, -47098076, -43528956, -69690136, -46149424, -105185896, -74370040, -39560944, -36257576, --55682104, -34133180, -4170413, -45059040, 15071577, 67177584, -52459804, 79484272, 47600584, 106120592, -106574248, 93070328, 114757768, 96970160, 160101888, 159068944, 126811056, 169737648, 145504368, 222319312, -218885488, 258002976, 200749456, 216142624, 235490368, 212766768, 254358704, 188517920, 275440544, 220178816, -83845280, 107652280, 28298466, 42632384, -149148112, -125123136, -139748576, -148664928, -156815696, -202507712, --190747008, -209578304, -230199504, -270528192, -226192848, -207038368, -230220992, -250978032, -299321632, -240025856, --265865984, -267515792, -203067664, -228821360, -132118024, -163864816, -112246288, -104118064, -55229520, -40295384, --57180512, -9807558, 26863946, 130009200, 123085176, 89468464, 101032664, 108820512, 147383952, 151100176, -163283376, 172350064, 148109264, 150632016, 110566952, 156735168, 160133568, 122129008, 85784992, 66388920, -96192768, 95333240, 74068856, 44545792, 24536612, 37553048, -9813463, 5218386, -17602386, -13796509, --71155264, -64961380, -47498044, -32694902, -43337292, -33020782, -15898895, -12899397, -17221746, -31849866, --29491392, -14448807, -18996640, -12357158, -10623065, 2296734, 4966056, 1094143, -5065914, -1152125, -2566243, -1563368, -1621350, 1913408, 3468723, 7017977, 1906966, -1779727, -331786, 2392834, -1999844, -1588064, -683437, 3801583, 2393908, 2012729, 2217814, 4051765, 3341485, 928787, --318901, 2863133, 2729989, 3012383, -668404, -3170760, -1611150, 1130113, 3907883, 4661650, -2579665, 967441, -2382633, -3772055, -2808909, -2777770, -5510443, -9002251, -11369315, -11647951, --12056510, -13174812, -14428943, -16759499, -18712098, -20225538, -20037096, -18172544, -16728898, -16773995, --16254841, -15315853, -9931038, -6803765, -4958540, -1067299, 2647847, 5661841, 8704288, 11909407, -13696651, 15919833, 15829102, 15282567, 15201500, 13640816, 11307038, 8756365, 7007239, 5683316, -4191888, 2874407, 1736777, 1038308, 485868, 367757, 228707, 165893, 110059, 60666, -56908, 104690, 176094, 213675, }, +5188321, 158377, 290984, 6376416, 1604707, -3152506, 2183991, 4246649, -2122251, -3498788, +-12596602, 684510, -4220342, 8437463, -4155918, 4235375, 3432216, -430034, 2780455, 4671314, +1301375, 1097901, -2270964, -2764348, -2117419, -3485903, 3074660, 1821066, -1617055, 2748779, +-1864553, -2786897, -3300682, -1604707, -2600066, 228707, 76773, -486942, 5808944, -3336653, +4758824, -1703491, -1164473, 3172907, -1926830, 993211, -1926293, 3477850, -987843, -9861782, +2971581, 346819, 1249299, 4962835, 2603287, 359167, -1086090, -3260954, 8484171, -4465156, +3324305, 1719598, -3452617, 3555696, 1623498, -4126927, 3314104, -4256850, 285078, -440234, +3766150, 613107, 3935264, -1501091, -8671539, -1864553, -2060511, -4140349, -3666292, -3674345, +3051038, 1324461, 1097364, 1826972, 1868311, 363462, 909459, -1021129, 654983, -753767, +-300648, -2127620, 17180, -707059, 1657857, -157840, -463856, -325881, 217970, -1103270, +425739, -479426, 645319, -352724, 159451, -1271847, -108448, -1589138, -926639, -907312, +1342177, 15291157, -7649337, 782221, -528818, -517544, 3424163, -2832531, -11099269, -10234370, +4713190, -3285650, -1014149, 2525441, 490700, 2491618, 2786360, -4913443, 2541010, 1733019, +-3505767, 3942780, 5973226, -4023311, -1376000, 225486, -6606734, -3027415, 577673, 7722888, +-1339493, -517544, -6583648, 3767223, -79994, -5911486, -2576444, 1946157, -970126, 1050656, +-5129265, -204548, 257161, -2139431, 5301064, 1279363, 1121523, 5119601, -630286, 6673843, +-2361158, -8679055, 3381750, 3277060, -3115462, -1406065, -1144609, 979789, 293132, 2308008, +-2060511, 1497870, -4779225, -297427, 2987687, -4570382, -618475, 2550674, 746251, -2431488, +1451699, -1862405, 394600, 4313221, 1492501, -6133750, 7256884, 2672007, 2616709, -712428, +4141422, 4611185, -2122251, -374199, 957778, 1124745, 1392643, 1899449, -279710, 82141, +1399623, -292058, 136365, 845572, 2214593, -447213, 2257005, -167504, 488553, 1114007, +239444, -754841, -264141, 737124, 720481, -214748, -1112933, -3708704, -8958228, -1068910, +965294, 9891310, -3767223, 8477729, 2126009, -287226, 526134, 7584912, -1762547, -2072859, +-2194192, 5346698, 10856604, 2845416, -7485055, -10155987, -14450954, 1896228, -3774740, -6073621, +-3334505, -9418326, -44560, -4369593, 710817, 4526359, 4765266, -5368709, -4810364, -3413962, +604517, -7990250, -871878, 2488934, -3619584, -1314260, 840203, 3227131, -4490925, 1176821, +10566156, -433255, -512712, -3889630, 4400731, -1955284, 389231, 3363496, 4376035, 6505265, +-1037772, 964757, -1957968, -82141, -1110786, 865436, 10151692, -11273215, 252329, 2198487, +5998459, -2488934, -2985002, -657130, -2818036, 8116952, -4468377, -10625749, -736050, -3166465, +-4451197, 2645700, -10523744, 3894999, -1125818, -2916283, 212601, 7438347, -2202245, -2789581, +-2866891, 3568581, -3341485, -901406, 627602, -299574, 1282585, 123480, 501437, 2211371, +179852, 581968, -551366, 1778653, 390842, -348429, -2000381, -1070521, -150324, -1046361, +2057289, 1257352, -1172526, 1539209, 155693, 231391, -1089848, 576599, -478352, 52076, +531502, -16510928, 6165426, -5166309, 6919729, -6222334, -563714, 4786741, -9547712, -1644436, +2912525, -2604361, 13914083, -5843303, -1760937, -5574868, -4654134, 7141457, 7952132, 3069828, +-9362492, -11311333, 10456098, 1745367, -10590852, 3949223, 392453, 5004174, -3139084, 4773856, +-6335614, 3080565, 10235444, 4218195, 4386236, 2313377, 182536, -2615635, 2141041, 787590, +-6978785, 106300, -2210835, -5140539, -5115843, -1955284, 4046933, -7373385, 1008244, -5337571, +-543313, -825707, 2433099, 4355097, 9248675, 3252901, -50466, 3961571, -4938676, -7283728, +-126702, 1682017, 759136, 8773544, -1995549, -1086090, -2805688, -1254667, 1253057, 4254702, +-1153736, 1771674, -4354560, 7097434, -1861332, -2496450, -1636383, 2291365, -3854196, 108448, +4402342, -325881, -1256278, 637266, 3499325, 2739116, -537945, 2205466, -1883343, 1391033, +-1136019, 532576, 2508798, -895501, 1077500, 1050120, -1697586, 1698660, 1059246, 367220, +-722091, -1567126, -360777, 1901060, 1286343, -685047, 782758, -388695, 3156264, -301721, +-863825, -8252780, -1925756, -5356898, -547071, 10960220, 7005629, 4894652, -833224, -9647033, +1345935, -6347962, -10225243, -3394635, 7358890, -5775658, -9066676, 2368138, 777926, -4517232, +968515, 5159330, 1421097, -12085501, -3425237, 7594039, 8945880, 4460861, -10015864, -3634079, +4563940, -1707250, -2156611, 649077, 3352759, 539018, 1239098, 10277320, 19327, 6216429, +4818417, -79457, -4628364, -113817, -2731062, 6127308, -3504693, -5846524, 13422, 9614284, +539018, 9550934, 5147519, 926102, 6170795, -1040993, 13260175, 1069984, 6560026, 7473780, +691490, -6179921, -948651, -7393786, 3773666, -5298379, -2972117, -4885526, -3222299, -2344515, +2426657, 820876, 3653407, -151398, -4224637, -3677029, 1373316, 6831146, -2024540, 1690070, +-7332046, 2323577, 6334540, 9727027, -3351148, -723702, 1610076, -3344169, -253940, 3211562, +-984621, 5899675, 388158, 1343251, 147103, 281320, 2175401, -1436667, -934692, -765578, +-443992, 597000, 730144, -1109712, 964757, -337155, -1177358, -1432372, 485868, -1359357, +-896574, -1705102, 831076, 1183800, -246961, 3328600, -2157147, 588411, -234613, -1883880, +3167002, -911607, -448824, -1653562, 1797981, 1185948, -289373, 482647, 1586454, 10007811, +-14944339, -2750390, 12524125, -6211597, 2292976, -9658308, 4259534, 17617418, -2379412, 934155, +-741956, -12441447, 1007707, -789737, 18693308, -5895380, -912144, 8173323, -5149129, 11587285, +-7808788, -1163936, -11807402, 13354664, 185220, -5251135, 170725, 4894652, -6207302, 9285719, +-986769, 8230231, -58519, 4313221, -12906914, -8303246, -6022081, -1931125, 7780870, -11693048, +6252936, 4835597, 1631551, -4838818, -7053410, 16087874, 3194919, -1819456, 6238977, -5678484, +3381750, -7561290, -7431367, -3092377, -4990215, 17374754, 5186710, -3446711, -5163625, -6621766, +5459441, 4515621, 1641214, -6106907, -748398, -2471217, 7420093, 675921, 6001680, -14021458, +7627325, -1224603, 374736, -1555315, 2465311, -6185827, -2881386, -9721658, -3186866, 3544959, +5932424, 6279779, 2317672, 2292976, 1462436, -3474092, 2072322, 1435593, -261456, -2326799, +-3887482, 2083059, 1934883, -2959233, 1527398, 220654, -2454574, 1619203, 441308, -1036161, +-586263, 168577, 469762, -1790465, 1247688, 709743, -2828236, -641561, -1456531, 249645, +1977833, 1384590, -308701, 106837, -1320703, 3173981, 258235, -1082332, 6433324, 3219615, +5320391, 1645509, 161061, -1884954, -7908109, -2392297, -5066451, 3248606, -204011, 12134893, +-10022306, -12938589, -3205119, 4145717, -3979824, -3068754, 10330470, 2138357, -5581310, -6444599, +-6685117, 11283953, -5573794, 7650948, -3580929, 8362838, -8196945, 1893544, 12793634, 4428112, +-17270064, 4062502, 455267, -2151779, -1480153, 1847910, -2008971, 1750736, -2768107, 1454920, +-643708, -7683160, 7821136, 8026220, -2313914, 8883603, -7465190, -1240172, -2108292, -3520263, +9767293, -6924024, -12322261, -6876243, 2388539, -10035728, -9349070, -4641249, -3117610, -6405944, +-479426, 8346195, 8785892, 1398549, 9467182, 3004330, 1323387, 7192460, -7565585, -1277216, +63888, -6203007, -537, -6007049, 7407208, -2047089, -1278827, 6172942, -1058173, -1858647, +-1200980, 7357816, -829466, 2611340, -7037841, -2452963, 4034048, -4540854, 401043, 194347, +852014, -3444564, -2362769, -1781338, 178778, -1857037, -2224256, 798864, -285615, -1992328, +-838592, 336081, -153545, -573915, -634045, -1117765, 442919, -3745212, -2588255, -2500208, +-2477659, 100932, -77846, -836445, 994285, -1886564, 19265612, -9606231, -9250823, 6163278, +15644418, 2994666, 14082661, 8016020, 12782896, 5634997, -2469606, -5891085, 4534412, -9659918, +-7373922, 10667625, 8899709, 22352620, -647466, 3064996, -8370355, 8602819, 3849365, -10037339, +-2440078, 12640626, -114354, -14030048, -5721434, -7938174, -2752537, 7752953, 7088844, -5347771, +-2646774, 9684614, -9502078, 4286914, 8121247, 9755481, -5305359, 8392903, -3638911, -12773770, +4423280, 11653320, -3201361, 3339874, 2781528, -3997004, 1355599, 3470334, -3706557, 1272921, +9395241, -5604396, -3017752, 8709120, -1946694, -1792612, -14561013, -5153961, -8820252, -14402636, +-9754408, 7195144, -4783520, -6168110, 12387759, 12436615, -3214246, 13378823, 5304285, 8784819, +-2537789, -6943352, 5726265, -7198902, -14416595, -8658117, -3752728, 7070053, 3204046, 11860552, +2035278, -2567854, -1983738, -12885, 2000381, -3696893, 179852, -2149094, -369367, 2080912, +-418222, 332860, 3783866, -1394791, -751619, 3818763, -2862059, -1433982, -1913945, 1132798, +-2127620, 1398549, 801011, 602906, 1957968, 2576444, 1116692, 4644471, 518617, 3179350, +1031866, 2393908, 2690260, -2387465, 2133525, 2354179, -1729798, -506269, -280247, -3338263, +930934, -1723893, -9765145, -10446971, 14132590, -2364916, 32294932, -13312788, -6259915, -752693, +7878044, -4515085, -4402342, -13318694, -15398531, 6942278, 1336272, 21243446, 6886980, -2182380, +-2425046, 14106820, 14416595, -11923366, 8654896, -11390790, 2995740, -4913980, -5860483, -3506304, +2426657, -1865626, 7493108, 3737695, 8384313, -1059246, -3991098, -7881802, -1515587, 9140764, +828392, -12181601, -1521492, 2944200, -5185636, 9621264, 8153996, 1677722, 2845416, -26582090, +-10162966, 9267466, -607738, 14894410, 4177393, 16790638, -1871532, -9109089, 8992588, -5100811, +6140730, 1075352, 24506010, 20234128, 2411087, 5715528, -3315715, 8038568, 8564702, 9222369, +10008348, 16226386, -273267, 2902861, -6200322, -5436892, 5113696, -7606387, -18807124, -13978508, +-299037, 11688217, -5875516, -10663330, -6089727, -5755256, -607201, -12728672, -479963, 2352568, +-53687, -1722819, -1218160, 1310502, 2780991, -354872, 2105608, -9506910, -5789616, -3041374, +-6699075, 588411, -2396055, -3932043, -2602213, -1607928, 3884261, 1564979, -3570192, 1174137, +8546985, 4371203, -1757179, -3039763, -3832722, -2260227, -3080565, -6659884, 2487323, -2573222, +-491237, 4824859, 1624571, -962073, 976568, 1850057, -28014998, 22151294, -610959, 2541547, +-7742216, 12429635, -26597122, -17041356, -5355824, -6812892, -620086, -23845658, 4697084, 513249, +-616865, -10877542, -11069741, 4537633, 15235323, 2379412, -20275466, -4377109, -16597364, 13153337, +8499203, 682363, -7335268, -3459059, -3732864, 10842645, -1518271, -197032, -2318746, -14685567, +7668127, 10331544, -6140730, -3271691, 8045011, -15988016, -11641509, -17641578, -5959804, 4463008, +-11240466, -5360656, -454193, -18271328, 5615133, 11301670, 19998978, 2893734, -1957968, 1243930, +-13111461, -10285910, 15316390, -1075352, -5789079, -3598646, -23387170, -12548284, 4605816, -4933844, +-2706903, -1814087, 15341623, -2646237, -14534706, 1177358, 11365020, -284005, -7118909, -133681, +804770, -6009733, -10188199, 8025684, -18750216, -9286256, -120796, 9075803, -11454678, 7258495, +4824859, 6612639, 7060926, -7208029, -1807108, 8642548, 1668058, -5287642, 4972499, 7150047, +-6676527, 2480344, 6426882, 6053220, 9528922, 633508, -2902861, -1636919, 1567126, 118112, +4189204, 3513820, 325881, -881005, -3040300, -1051193, 2093797, 4233227, -7041062, 891206, +-1342177, 2895882, 6783364, 317291, 4747013, -2557653, 3148211, 3863860, 5712844, 4440460, +5572183, -438624, 3191161, -1056025, 2428804, 14551349, 13335337, 4656819, 22800370, -10614475, +-5114769, 3457986, -6347425, -2064806, 7244536, 24464670, -4292283, 4748623, -455267, -1797981, +-710817, 27015882, -13526999, 13889924, -449898, -18164490, 5626407, -18018998, -11155104, 9994926, +-9659381, 6997576, 83215, 724776, 11920145, 9541270, -15013595, -16919486, -12835510, -4446902, +4454955, 4565550, 1485522, 3055869, -20339892, 2825015, -11067594, -25463250, 16860430, -5204427, +15834471, 17026860, 678068, 6213744, -9540196, -11466489, -20185810, 4328254, 17885318, 2978560, +-8319352, 843961, -4350802, 2558190, -11026255, -8986682, -11011759, 1613297, -1625645, -3718368, +11403138, 10321880, 6021544, 16861504, 1592896, -18206904, 22900228, -17197586, -5557151, -4482335, +-4823785, 19240916, -3444564, -28104656, 23383412, -9488656, -6009733, 6277632, 5682242, 18055506, +11336029, 7430294, 8596377, 7857106, 5770289, 130460, 7336341, 9012452, 2111513, -93952, +9548249, -1974611, 806917, -9305047, -2527052, -3113315, -5067525, 540629, -1079647, 5744519, +3993783, 1554241, -1090922, 2653753, 889058, 1874216, 3672734, -1463510, -1893544, 621160, +-1872069, 2771865, 1044751, 1174137, 2021319, 1143535, 8774618, 6447820, 1546725, 1625108, +20946018, 23699630, 5369246, -45204532, 1411434, 12499429, -15059229, 8834211, 17796196, 674847, +4692252, 11153493, 8543227, 3182034, 15983184, 3463891, -2429341, 30180198, 11124502, 3773129, +12957379, -10237591, 15938624, -11485279, -1156420, -1466195, -3893388, -16852378, 5419712, -11977590, +21484500, -2115272, -4418985, 31636730, 4089883, 4471061, 10430865, 1018981, 5946919, -7319698, +-14024142, -1757715, 9205726, -16602196, 18907520, 17026860, 12548284, 3150359, 7412577, -11528229, +-11937862, -18882824, -8407935, -10272488, -9761387, 4271345, -1957431, -18496814, -8264054, 15930034, +-411780, -15292231, 8432631, -1018981, -10426570, -24718610, 1580548, -37370512, 21490942, -12845710, +19538344, 766115, 5362267, 454730, -7426536, 9701794, 33135672, 2861522, 9363566, -6009196, +-26030186, 2101850, -2907156, 18767934, 10931229, -4662724, -1020592, -4126390, -2150705, 6247030, +-7516730, 5851356, -969589, -6723772, -6659347, 6796786, -8132521, -8126615, -11236171, -2461553, +-8100845, 2309619, 6931004, 265214, -2107755, -5412733, 10164040, -9818295, 2452963, 1031866, +793495, -5851893, 4010426, 9864466, -508954, -5223217, -1284195, 8980777, 9487583, -7861938, +9084393, -874026, -2437394, 1244467, -634581, 9906879, 2581812, -5603322, -4772246, -263604, +1086627, 5719823, 12628278, 9450539, 24738474, -33488934, 13514651, -19526532, 17049410, -8167417, +-13940927, -3854196, -16088947, -6653978, -3424163, 6091338, 7726646, -4560719, 23771570, -913217, +-3842385, -2971044, -21124260, -2173790, 302795, -17770428, 5973226, -15130633, -19087908, -6070400, +11839077, -31793496, -21484500, -14334990, 1861332, -22248468, -18820010, -15261629, -7531225, -6099391, +-2726231, -14996415, 16407849, 2920578, -1360431, -11163157, -11408507, 22031572, -18835580, -12898861, +5969468, 5963562, 8085276, -10944650, -15175193, -6381785, -2640331, 7282117, -10836739, -4326106, +-4306242, -13093745, -22290880, -28348394, 27139362, -29381872, -1418950, 2191507, -4924717, -5352603, +-26144540, 10308458, -6101538, -27562952, -410706, -5982353, 26253524, 6534793, 18748606, 17714592, +-5028870, 6985765, -2674691, -4952098, 13257490, -3215857, 7714298, -9916543, 1005559, -9991705, +8815957, 6784438, 1452773, 6211597, -2400350, -896038, 6745783, 3172370, -6140193, 4767414, +10856604, -1590749, 2683818, -5738613, -13371844, -1392643, -964220, -420370, -9211094, -2021319, +1744831, -1342714, -4800700, 6469832, -948651, -3627637, -10775536, -11129334, 398895, 6124624, +3839701, 2369211, -510564, 8024073, 9345312, -4093104, 2201708, 2198487, -368830, 2703682, +6856379, -29885994, 34816616, 5600638, 3618510, -5915781, 17742510, 314069, 29138668, -7818451, +20032802, 10817949, -28481002, 12488154, 4828617, 13666049, -2202245, -7544110, -11256572, -4121558, +14117558, 30826054, 3398393, -4428648, -19311784, 7409356, -20896090, -3270618, 21396454, -19135690, +188979, 1402307, -3151432, -7194607, -7998303, 34133180, -7194070, -8330089, -3958886, 7770133, +11611981, 4321274, 746787, -6914898, 85362, 5129802, 20899848, -4730370, 29822642, 17338246, +9028021, -7106561, 26029650, 29361470, -2206540, -7764764, -1322313, -9533217, 3142306, -9443022, +15030775, 5047124, 21560736, 16481400, -25882010, -29431264, 35539780, 26225070, 4414690, -4998268, +-13747117, -19392314, -7319161, 19866372, -18437758, -20247012, -2579128, -5471789, -32095216, -7221988, +7472170, -12552042, 2025614, -91805, 2013803, 2622615, 5688148, -9554692, -5572720, -9820443, +-3235721, -52076, 1776506, -5363341, -2217277, -955630, -15639587, -5327907, -7265474, -3526705, +-77309, 1404991, 1017370, 2667712, -667331, 584116, -8039105, 4829691, -6863358, -8366060, +6331856, 2549063, -14595373, -1634235, -4292283, 7391102, 14685030, 304406, -11764989, 9769977, +-2360622, 2552821, 3848291, -3956202, -2414845, 891743, -6063420, -8587250, 15626165, -12324409, +-3815005, -2384781, 3300146, 748935, -18656802, -54557896, 27734752, -26096222, 11011759, 39393440, +6242198, -16124918, 11559368, 13908178, -5424544, -12130061, -2307471, -26734024, 9186398, -27795954, +-16779900, 11547020, 1431835, 5137318, -25096568, -4886062, -18041010, -15268609, -22323630, -7606924, +8008504, -13176423, -13388487, 13555454, 2103997, -833224, 4491462, -25706454, -1330366, -19929186, +17575006, 5056787, -49199924, 12743168, 26780194, -5381594, 16083579, 13594108, 9250286, 7487739, +25587804, 20138028, 998043, -17832704, -3565897, 20352776, 13286481, -16505559, 1474248, -19327890, +-6057515, 1614908, 14495515, 19346144, -34727496, -27378270, -15224585, 3240016, -10139344, -3552475, +32817308, 5652177, 7970386, 25651156, -10027138, 5530844, -6206765, 26242788, -12945031, 1363115, +2848100, 19522774, -5092758, -1733556, 7295539, 8196408, -740345, 4161823, 12813498, 813896, +-133144, -199179, 12483322, -5876589, -3698504, 3259880, 5549098, 3911105, 1872069, 6086506, +-2421288, 347892, -5336497, 167504, -3905199, -290447, -5475010, 9701794, -6813966, -10058277, +10057203, 6765647, 7002944, -6997576, -9182103, 332323, -16670916, -4301947, -8472360, -8524436, +3689914, 245350, -8783745, 3380676, 3919695, -651224, -5100811, -4808753, 4168803, 2797098, +8304320, 18163954, 17556752, -30617212, 6405944, -6596533, -8051990, -7117298, 20540144, 10905996, +-14979772, -8551280, 15676094, -28164784, 1601486, 10241886, 15707232, -3349001, 3481071, -32869384, +-117038, -14564771, 11000485, 4034585, 18248780, -28910498, -14570677, -4212826, 3576634, -2496987, +5657546, 2057289, 15779710, 29704530, -18799072, -24315958, 6419366, -25340308, -7450158, 10593000, +-18393198, -17901424, 1512902, 11005317, 15488726, 10960220, -6889128, -1571958, -32225676, -21760988, +28654412, -19888382, 38671884, -16406775, 7893613, 5639829, -278636, -28423556, 35612796, -16595217, +-3345780, -6419903, 13921063, 26782342, -27086212, -15440407, 31850940, -23576150, -23622, -8913131, +6525129, 36813776, 228707, -2732136, -22771380, 28154584, -9161702, 7305203, 9337796, -17842368, +-21467858, 2079301, 12416214, -6455336, 6374269, -51006496, -23756538, -7321309, -25978110, -12841415, +4366371, 16872780, -3537979, -4663261, -13271449, 327491, -1245541, -9741523, -3329674, 5941551, +521839, 7970386, 3773129, 7552163, -10001905, -1453846, -2079838, 10515154, 8364986, -6347425, +19362786, 7106561, -7768522, 11704323, 3235184, -1185411, -6108517, 4413616, -4414690, -4185446, +8661875, 709207, -3787088, -3431679, 7262253, -2036888, 6567005, -1520955, 11932493, 2452426, +1748052, -4836670, -3517578, -4327717, -1576253, 1433982, 17452600, -20203526, 5455682, 16485158, +16296180, 37155224, -23849954, 34119220, -6178311, -22578644, -22099754, 5499706, 14170171, -10062035, +-4722854, -15586973, -6498823, 28887414, -20621748, -2041183, 23199266, -7684234, 13790603, -9457518, +-4584341, 24610700, -1014149, 1123671, 23742580, 16413754, 5707475, -3080565, 20030654, 27392764, +-28198070, 25734908, -24925306, 12973486, -18033494, 3601867, 21188684, 7155953, -48588964, 21366926, +13608604, -299037, 24413668, -38595112, -7575249, 26013544, 22111566, 3584687, 34833796, -18746996, +257161, -4611185, -5555540, 14869177, 6051072, 26074746, 21690658, -16518444, 14339822, -30549566, +-9576166, 2297271, -1703491, -2497524, -5101885, -47737488, -26424786, -36901284, -25121800, 27202176, +-17162152, -4257387, 2961917, 44624172, -10871636, -15902116, 35765268, 21865142, -1213328, 28949690, +4243428, 5373541, -13771813, -79994, -11549167, -12156368, -6369437, 9295920, -11674795, -6146098, +5390184, 2010582, 8824547, -3739306, -1698660, 11495480, 6585796, 563178, -9392557, -7561290, +-1331440, -2989297, 6736120, 11470247, -1051193, 1937567, 2496450, -4823785, 28707024, 8805757, +1865626, 1041530, -9637370, 7565585, -17074642, -1371705, 14360760, -1132798, -4040491, 10435160, +5850819, 3118683, -444529, -9532143, 6075768, 6723235, 2069637, 3628174, 4841502, -3396246, +3700114, -11531450, 11919071, 29963840, -15919296, 11816529, 14984067, -20887500, 3122441, -25780004, +10350334, -2380486, -13580150, 21173116, 988916, 32794760, -1610076, -23800024, 41344964, -6933688, +4458176, 6090801, -38088844, 12016782, 33464774, 12248173, -14030584, -24732570, 2979634, 6593849, +28663002, 18713710, -8875013, -5044439, -21703006, 678605, 32378684, -43060804, 13560822, 30913564, +-27035208, 10532870, 3188476, 11041287, 32381370, 11194832, 12706661, -5432060, -31120796, 33081448, +-5710159, -16139413, 68638408, 34127812, 17760226, 3517041, 1882269, -31608274, -26024818, -11413339, +20409684, -133144, -18320720, -12610561, 25656524, -14909442, 17772574, 10469520, -12184285, 19214610, +8859444, -26473642, -13192529, -15282031, 4777614, 17535814, -33524904, 11735461, -34359740, -43203076, +-27235998, 42651708, -14214194, 9320616, -9511742, -13956496, -1782948, -16749836, -11739756, -8606578, +2457795, -16011101, 2276333, 10445897, 299037, -13996762, -10591926, 5827734, 1972464, 19368156, +2815888, -20768852, -8034273, -11589969, 17952426, -2857764, -6822556, -16258599, 95563, 10959146, +4972499, 12394202, -5577552, -1136556, 3757023, 12634183, 7866770, 471910, -6400038, 9636833, +-7906498, -28454, 5109401, -6819335, 122407, 14112726, -100395, 3340948, -14238890, -9352291, +-10752451, 7515656, -11457899, -2715493, 41467372, 69389488, -12017318, -2712809, -57597660, -19587736, +-42449308, -28430536, 38613368, 2381023, 10222022, -32771138, 10129680, -28819768, -64383708, 8956081, +30392262, -2911451, 3619047, 32741072, -44250512, 49737868, 24620364, 15277736, -25183004, 33328410, +64608120, -13269301, 19735912, 48978732, 41313292, 73156712, 15637439, 26048976, 19671488, 17562658, +62809600, -16751446, -7814693, 22951768, 13517336, -7168838, 34421480, 1791538, 7023882, -20893942, +-56661892, 1904818, 37350648, 5452998, 22529788, -40961104, 2285996, -54369456, -129386, -58402428, +3783866, 40553080, -5382131, -17566416, -55649892, 72410464, 13012140, 4665945, 75044888, -1100585, +-17357036, -12881144, 3731790, 14875619, -4297115, 107911, -6097243, -39922256, 23456428, 9022653, +-25039122, -15403900, 19594714, -24139864, -41683196, -20394652, 8964670, 39687108, -41710576, 33041184, +-1723893, 17608292, -7363185, 14375792, -10065256, -1491427, 3520263, 4035122, 13267154, 12101070, +2431488, 25438554, -1391569, 10475962, 13331042, 7859254, 5808407, 6136972, 21915608, 16437377, +7869991, -8475044, -3629247, 19198504, -25393994, 9952513, -15151034, 3838627, -5637145, 17431662, +19866372, 40568112, 22573812, 38325604, 21862458, 8337606, 40043592, 41837276, 39577048, 23044110, +-6623377, 24152212, 26394184, 16724066, 31776316, 24426016, 288837, 7927436, 5723044, 6016176, +9651865, 7635915, -7613904, -7096897, 938987, 7793218, -1304596, 72478, -1750199, -3510062, +-7530152, -6583648, -2582886, -1536525, -2612414, 256624, -4154307, -1818919, -23005992, -73950208, +2588255, 97692792, 13424457, -21066278, -19979114, -45880988, -30280594, 397284, 60686816, 9905805, +-42030012, -3903589, 15891379, 3099356, 351650, -4996658, 9839770, -30334818, -11893301, 14081050, +33267742, 33486786, -33342368, -13422847, 1636383, 3661460, 7836705, -38296612, 2776696, 5170067, +-10661719, 25949656, -1094680, 30086246, 45892800, 21424908, 8879308, 19410030, -27286464, 23159000, +-22178138, 35101692, 62894428, 20028506, -35133368, -30596274, 28119150, 9601936, 53538916, 39857832, +11763915, -11104638, -12853763, 746787, 2155537, -19804094, 20439212, 17547088, 2872796, 48103096, +32937568, -5424544, 23317914, 25750476, 11841225, 25752088, 550830, -47531868, -6350646, -12145094, +-11349988, 52108692, 23870354, 7689602, 41628972, 24056112, 26349624, 32082332, 10881837, -34615288, +-17233556, -1728188, -1101122, -12824772, -10372883, -21378736, 12236899, 7262253, 19349902, -10245644, +21658984, 5252745, 22457848, 14362908, -5485210, -12653511, 3036542, 5205501, -163209, 1646583, +16401406, 635655, 25883084, 34127272, 9740986, -3965866, 2274722, 24222004, 5530844, -9031242, +-6971269, 18902152, -1284195, -7267622, -4096325, 5506685, 13954349, 27139898, -15050102, 1161252, +-9795210, 1204202, 1003412, 21900038, -12458626, 10216653, 13895293, 7144141, -10516227, 2028835, +16244103, 831613, 503585, 14470819, 2211371, 8209830, 6039798, 282931, -2898566, 1518808, +-2018635, 2243584, 1360431, 2449205, 1202054, 6250251, 2486249, 1668595, 2013803, 4089346, +1886564, 4476967, 1817845, 2188286, 2381559, 1879585, 2505577, 1246614, 2321430, 3185255, +3619584, 3489661, 3929895, 3124052, 4154307, 3079492, 3386045, 1430224, 3447785, 1434519, +3176665, 1060857, 3202972, 2174327, 2936147, 703301, 2934000, 1887101, 3121904, 2040646, +3516505, 1085553, 3760781, 1134945, 3362423, 1868848, 3333968, 1303523, 3750580, 1237488, +3053722, 1740536, 3280281, 1610076, 3871376, -38655, -14081587, -68940128, -14582488, 39197484, +21342766, 85219664, 5021891, -11812771, -37606732, -73895984, -81333792, -13109314, 35575752, 40088152, +25715580, -40754944, -54193896, 135828, -6355478, 22294638, 57204132, 29500520, -5035849, -33568392, +-45985676, -28538448, 2183991, -27938762, 11383811, -23284092, -11507291, 38487740, 31632972, 28477780, +11165304, -38400228, -10616622, -36703716, -28427314, -14418205, 22240414, -3572876, 23598698, 58106076, +60240676, -24459838, 7126425, -43731892, -30084636, -20582020, -3637837, 8844411, 35003984, 37702832, +51382840, 36966248, 13254269, -24768540, -23172960, -5017596, 16626892, -41225244, 3211025, 49463528, +39138428, -9630927, 52977884, 47743932, 26752814, 49873696, -93256624, 22799834, -26418880, -28207734, +16152835, -14857902, -1223529, 94795832, 79817136, 28852516, -24511378, -1591285, -37365680, -6765111, +-50287624, -17289390, -8380018, 20045150, 61794916, 32938104, 13019656, 11607149, -9867687, -30354682, +-39806292, 730144, -26260504, 21706764, -2233920, 478352, 23727010, 19984482, 7357816, 20679730, +7136625, 31955094, -21799644, 208306, -24043764, 10672994, -20910048, -18547280, 3401077, -5131949, +16693464, 30273076, 1851131, -26746372, -46154256, -13225278, -26739930, 3776887, 12043625, 22594212, +-17824114, -5616207, 836982, -303332, 23430658, 1884417, -120120568, -136177312, -146416512, -147928336, +-200539008, -12016782, -71917080, -23322210, 26450020, 66853312, 93842352, 96807488, 197941088, 212262112, +172776864, 128502736, 136121472, 129802504, 49961744, -19432580, -89388472, -89544696, -137370768, -44703092, +-74490304, -55554328, -5288179, -116609432, -33606508, -104162624, -28414430, -119672288, -112831472, -52136608, +-93168576, -9587978, -47098076, -43528956, -69690136, -46149424, -105185896, -74370040, -39560944, -36257576, +-55682104, -34133180, -4170413, -45059040, 15071577, 67177584, -52459804, 79484272, 47600584, 106120592, +106574248, 93070328, 114757768, 96970160, 160101888, 159068944, 126811056, 169737648, 145504368, 222319312, +218885488, 258002976, 200749456, 216142624, 235490368, 212766768, 254358704, 188517920, 275440544, 220178816, +83845280, 107652280, 28298466, 42632384, -149148112, -125123136, -139748576, -148664928, -156815696, -202507712, +-190747008, -209578304, -230199504, -270528192, -226192848, -207038368, -230220992, -250978032, -299321632, -240025856, +-265865984, -267515792, -203067664, -228821360, -132118024, -163864816, -112246288, -104118064, -55229520, -40295384, +-57180512, -9807558, 26863946, 130009200, 123085176, 89468464, 101032664, 108820512, 147383952, 151100176, +163283376, 172350064, 148109264, 150632016, 110566952, 156735168, 160133568, 122129008, 85784992, 66388920, +96192768, 95333240, 74068856, 44545792, 24536612, 37553048, -9813463, 5218386, -17602386, -13796509, +-71155264, -64961380, -47498044, -32694902, -43337292, -33020782, -15898895, -12899397, -17221746, -31849866, +-29491392, -14448807, -18996640, -12357158, -10623065, 2296734, 4966056, 1094143, -5065914, -1152125, +2566243, -1563368, -1621350, 1913408, 3468723, 7017977, 1906966, -1779727, -331786, 2392834, +1999844, -1588064, -683437, 3801583, 2393908, 2012729, 2217814, 4051765, 3341485, 928787, +-318901, 2863133, 2729989, 3012383, -668404, -3170760, -1611150, 1130113, 3907883, 4661650, +2579665, 967441, -2382633, -3772055, -2808909, -2777770, -5510443, -9002251, -11369315, -11647951, +-12056510, -13174812, -14428943, -16759499, -18712098, -20225538, -20037096, -18172544, -16728898, -16773995, +-16254841, -15315853, -9931038, -6803765, -4958540, -1067299, 2647847, 5661841, 8704288, 11909407, +13696651, 15919833, 15829102, 15282567, 15201500, 13640816, 11307038, 8756365, 7007239, 5683316, +4191888, 2874407, 1736777, 1038308, 485868, 367757, 228707, 165893, 110059, 60666, +56908, 104690, 176094, 213675, }, }, { { -2786897, -5300527, -159988, 2206003, 885837, -4539781, -3401077, 1249299, -3059091, -4565014, 2684892, --495532, 739271, -2598455, 1998770, 239444, -4037806, -134755, 4772246, 3886409, -2884608, --5123896, -4663798, 744640, -1035087, -874026, -3961571, 4417374, -1109712, 1280974, -1778653, --1060857, -348966, 1706176, -1136019, -2248952, -8756901, 3045669, -617402, 2896419, 1741072, -1246077, -177167, 5922223, 1154273, 1222992, 870268, -2955474, -1870995, -229781, 482110, --2959233, -661425, 1219771, -362925, -2793876, -1445793, 153008, 2830384, -4304094, -5851893, --7267622, 2640868, 4239133, 475131, 3514357, 2594160, 534723, -6655052, -127238, -1704028, --2305861, 167504, 421444, 2829847, -551903, 4005594, 2846490, -1199907, -3969624, -1902671, --671089, 1076963, 353261, 1347546, 1550483, 2812667, -12885, -213138, -1254667, -1075352, --1031329, -428423, -2195802, -1007170, -1222455, 748398, -103616, -230854, -644245, 1101659, --1533303, 3186866, 4162360, -942745, -40265, -5920613, 5307506, -6783901, 2641405, 11454678, --2435783, -4251481, 666257, 5979132, 651761, -1692217, -810138, -1705639, -1064615, -5373541, --2076080, 2655364, -4251481, -2439005, 262530, -234613, 4741107, -2880313, 903554, -1114544, -1054415, -599685, -2733210, 5226439, 8913668, 2251100, -481036, -1667521, 9646497, 446677, --3996467, 267362, -7146826, 24159, 3773129, -5509370, -670015, 1178432, -4367445, -1326608, -5098126, 717796, -511638, 4885526, -3219078, -5145908, 2944737, 1925756, -3555159, -1784559, --3808026, -4510790, -4810364, -2687039, -2733747, 3924526, 2834142, 763967, -70867, -2733210, -2568391, -597537, -1818919, 3322694, 3722663, -2633352, -480499, -1249836, -1629940, 507880, -4261682, -2137820, 991601, 4008815, 2705830, -932008, 1068910, -713501, -60130, 1692217, --190052, 15032, 1787780, -1867774, 806380, 368830, -539018, -1723356, 1365263, 135828, --706522, 387621, 246424, -628676, 255014, -330712, -508417, -1016834, 5873368, -8497593, --5601711, -2003065, -1214402, 314606, 1121523, -8101382, 5669357, -2540473, 1869385, 1190243, -1903207, 3577171, -1074, -1149441, -2680597, 5878200, -438624, 3830574, 7249368, -1540820, -6167036, 5268315, -4520453, 3064459, 3095598, 3324305, -7994545, -769336, 501437, -2492155, --5020280, 106300, 5905043, -1353452, -2498597, -1950989, 1820529, 5483600, 2714956, -2758443, --26307, -2269890, 251792, -702764, -2699387, 5123896, -6565395, -5411122, -4978941, 1574642, --683974, -149787, -6125160, -6456947, 1598265, -106837, 384936, -609885, -327491, -4811974, --2849174, -5264020, 1054415, 4568235, -1398012, 4057134, 769873, 3610994, -7716983, 64425, -1132261, -2547989, -1152125, 1064615, -2740726, -307090, 2039573, 2220498, -1701881, -5140002, -4566624, 746787, 124554, -1109712, -648540, -4108136, 194884, 319438, -717260, 781684, -144955, -1427003, 635118, 705448, -407485, -560493, -196495, -211527, -270583, 264141, -2188823, 72478, -646393, 1840930, 812823, -105227, -594316, -141734, -296353, -3000035, -641561, -665720, 4940286, 7902740, 428423, -3115999, -6866042, 3025268, 1939178, 1802813, -8379481, -5609764, 119185, 948114, -1608465, -2847563, 1175747, 450972, 5022965, 11164231, --1064078, 1864016, 4628901, -2122251, 4122095, 7226820, -5173288, -273267, -1972464, -188979, -3190087, -5777268, 6081674, 1288490, 2147, 3159485, -602369, 4407174, -2502355, -1118302, --1331440, 6970732, 3221762, 4408784, -917512, 3617973, -6912213, 7830799, -3128347, 3028489, --7271380, 2824478, 5170067, 9562208, 3479997, 1717450, -6408628, -2515240, 1693291, -4889284, --5775121, -1439888, 11339251, 13114683, 2474438, 3020973, -3821984, -1757179, 7325604, 1355062, -3177739, -531502, 2193655, 1893544, -1027571, 1603097, -1130650, 1187559, 839666, 4577899, -3745212, -5939403, 5169530, -1797444, 2636036, -1928977, 1926830, -1641214, -2220498, -126165, --3517578, 460635, 2501819, 493921, 1271310, -1319092, -1574642, -876173, 598611, 24159, -544387, -309238, 368293, -1066226, 333397, 290447, 1820529, 25770, 1231582, -677531, -1101659, -1386738, 128849, 131533, 1312649, 5473399, 60666, 602369, 7714298, -6667937, --7840463, 11981348, -3223910, -2019172, 7793755, 4638565, 484258, -13930726, 14859513, -2821794, --1991254, -1651415, -916976, 515933, 821949, 4600447, 6874632, 4522064, -1105954, 7755637, -4861903, 2443300, 2000918, -2951716, 3467649, -5697811, 4387309, -926639, 1773285, -4831302, --7034083, 824634, -986232, 2477659, 4066260, -2118493, -6740415, -3927211, 1519345, -8012262, -5029944, 1542967, -12799003, 5678484, 762357, 3226594, 707059, 1923072, 2037962, -565325, --3694209, -3151969, -8775155, -6404870, -3651796, -4463008, -1093606, 476741, -6456947, -9006546, --1457068, 5797669, 9931038, -545998, -6813429, 1080184, -10646150, 692564, -840740, -4167729, -8756365, 8322573, 2686502, -347892, -2271501, -656593, -4791036, 2171106, 8385924, 4531728, -6906845, 1400696, -3341485, 3253975, 1569274, -255014, 539555, 366683, 71404, 1504849, -1429687, 1493575, -615791, 2634426, 574989, 5216775, 1898376, 1388885, 100395, 437550, -1232119, -387621, 2303176, 893353, 797253, -1408212, 2895882, 753767, -1246077, -464393, -2230699, -13598940, 7016903, -2600603, -4843113, -3840238, -4634270, -6466610, 12447889, -15867757, -3733400, 3830037, 5181878, 7749195, 1264331, 2151779, 2909304, 2098629, 1604707, 2625299, -6811282, 1231045, -3767223, -7516, -671626, -4883915, -4431333, 2261837, 4556961, 4919885, -652298, 3508452, -8280160, -958851, -133681, -453119, -7848516, -4689031, -2837363, 5122286, -4575751, -77846, -8591008, 50466, -4662724, -3320010, -1706176, -2303176, 5362267, 7329362, -2201708, 7625178, -12218108, -8515310, 4032438, 2494839, 389231, 1618129, 771484, -3948149, --7697655, -5294084, 4038343, -3427921, 6189048, 6129992, -2261300, 5809480, -9262097, -4556424, --2629057, -3105798, 642098, 16821240, -2450816, 4764730, -2717641, -2423435, -1748589, 3578782, -3788161, -434329, 3049964, 2122251, -5283347, 1458141, 361851, 2263985, 448287, 289373, --2685965, 1708323, -153008, 1731409, 505196, 904091, -534723, -987843, 455267, -1515587, --2254858, 766652, -1257889, -1880122, -611496, 585726, 697932, 768262, 770410, -91805, -536871, 1209570, 937377, 353798, 233002, -373662, -695785, 1131187, 563714, -89121, -772020, 13896367, -2681670, 372588, 5847598, -13243532, 9090298, 4606353, -7467875, 8273718, -9257265, 3102577, -14297946, 8827232, 376347, -1355599, 7226820, 7807714, -451508, -2315524, -220654, -5553930, 5182415, -3040300, -5292474, -11125039, 2588792, -12091407, 3236795, -2969433, --1359357, 3476776, -9853729, -4053376, 8178692, -722628, -3829500, 5002027, 324807, -4305168, -3700114, 1336272, 356482, -1850594, 2820183, -6002217, -636192, -8761733, 8274792, 8272107, --10316511, 6881075, -7362111, -2784750, 7110319, 9945534, -730144, -4967130, 3001645, -634045, -1427540, -12175695, -9627706, 1912334, 1718524, -2639794, -2508798, 3147137, -383326, -4321274, -5135171, -4980015, 1734093, 3712999, -861141, 5828271, -5858873, 5893232, -49929, 9382356, --3230889, 2841658, 5291937, 591095, -3376918, -967978, -359167, 2745021, -930397, -4429185, -3714610, 799401, -1864016, 1636383, -1257889, -65498, -1750736, -508417, 1261110, -1490354, -941672, 2564632, -1347546, 616328, 165893, -863825, 1615982, 425739, 1373316, -2085744, -829466, -2135136, -2444373, 893890, -402116, 977105, 1009317, 295816, 2963528, 3869766, -1698123, -5041755, 9782862, -3321084, 4770635, -9836549, -678068, -2581275, -8928163, 332323, -6341519, 11255499, 14719390, -8351564, -214212, -10414759, -760209, -6625524, 5953899, -6201933, --12285754, 817118, -7867307, -718333, 10223633, -6029061, -6016176, 10970957, 358093, 1902134, --1125818, -6419366, 2754148, 2356327, 13215614, -9085466, 6491306, -7702487, 1944547, 2581812, --7601555, -4671851, 12690555, 3485366, -9407052, -2414309, -3430605, -7548405, -300648, 12441447, -6672232, 8663486, 1993939, 3475702, -11318849, -1620813, 14435385, 1161252, -8942659, 4813585, -4784594, -6556805, -5709086, -3150896, -14794015, -2265595, 4415764, 7336878, 13021804, -3241090, --7097434, -2039573, -4411469, 10576894, -3911105, -9199283, -6264747, -2704756, -1241782, -2837900, --5311801, 11512660, -6571837, -782221, 1077500, 568009, 3769371, 2357937, -3369939, -4529043, -3432216, 4119411, 4354023, -975494, 1978369, -1184874, -700617, 1956358, -410169, -1999844, -2059974, 974421, -42950, -1304060, -425739, -3343632, 330176, -817654, -2872260, -1459215, -1330903, 1159641, 70867, 1358820, 6372658, -21907018, -15086073, -9651328, 1205275, -18346490, -2796561, 13724568, 4571456, 14130442, -7509214, -3433826, -1483374, -7267085, -2693481, -10934450, -19572166, 11200738, 7829726, -16444893, -3144453, -5257040, -10689637, 3765613, -1085553, 3535295, --13288629, -862752, -1151051, -9520332, 5612986, 1640678, 9827422, 3991635, -8140037, 12947716, --6053220, 5288716, 2757369, -51540, 10243497, 9539122, 2433636, -12243341, 15047955, -7537668, -10801306, 4964982, -5527086, -6132677, 12106439, 1831804, -1365263, 3202435, -10151692, -3591130, -5917928, -790274, 10710038, -6105296, -9606768, 4018479, 2769717, 392453, 10650982, 4638565, -2197413, -6703907, 7762080, 3095598, -5879274, -746787, -595390, -3334505, -2435783, -2800319, -4684199, 11725261, 19680078, 9199283, -3273839, 1068910, -4469451, 4592394, 6082748, -21475, --4978941, -2876018, -6511171, 4116726, -3539590, 1037235, -3055332, -769336, 4398047, -438087, -512175, -3906273, 4301947, -2167885, -1872606, 2423972, -3879966, 4379793, -2963528, 2385318, --2083059, -313533, 1002338, -2836826, -2040646, -1192927, -4728222, -4697621, -2062121, -158377, --1649268, 3887482, 3541201, 2142652, -14136885, 18362058, 7453916, 21036750, -9826885, -11717208, -20034948, 415538, -2364916, 4180614, 1290101, 11616276, 15571404, 1796370, -14976551, -23830626, -3044058, -6772627, 1177358, 398358, -10458782, -920734, 12575664, 10226854, 7994545, 16258062, --3990025, 13734769, -10093173, 12132746, 3825742, 9340480, -6695854, 16658568, 9491341, 12091944, --19870130, -362388, 17595408, 9893457, 2990908, -4501663, 26596584, 11064373, -10773389, -6755984, -6300717, -10508174, -1241246, -5183489, 1141388, 22275312, 23368380, 16879758, 6056441, -69256, -8648454, -8102993, -2218351, 9407052, -10260140, 23604066, 14646375, 11449846, 4383014, -1184337, --11505681, 13907104, 282394, 12097849, -5754720, 4539244, -8184060, -4824322, -432181, 5971615, --9583683, 21959094, 9352828, -2706366, -11112691, -21203180, 10084046, 1574106, -7029788, -901406, -2378338, -5152887, 2828773, 7824894, -1611687, -3038689, 42950, -1970316, -2292976, 1570347, --2735894, -2109903, -3670050, 3367254, 1863479, -5516349, 2757369, 3119757, 3073586, -365072, --1753957, -849330, -235686, 1491427, -642635, 1035624, -3306051, 4873178, -6629819, -150324, -2034741, 5495411, 558883, 23314694, -1057636, -11086384, -4847945, -8625905, -62814, -14014478, -3987877, -12032351, 7253663, 1889786, -3060164, -9400610, -11329050, -17272748, -17969070, -5103495, -16073378, -871342, -10062035, 4571993, -9586904, 7865159, -8158291, 15134391, -14978162, 3881040, --10558103, -10725070, -1796907, 2208687, -2996277, 7325604, -21679922, 9155260, 2328409, -4940823, --1302986, -1114007, -10631655, -17038136, -18424872, 13749264, 6825777, -6936372, 11795591, 722091, --4650913, -13354127, -28621126, -23363012, 13614509, -3788161, 477815, -2490544, -1185411, -1012539, --19346144, 7782481, -22888954, -11928735, 1211181, -355945, -4780836, -2728378, -2928631, 24146306, --7219840, -7377143, -6319508, 25251724, -4363150, -9611600, 15880105, -11987254, -7756174, -9809168, --8484171, -31694174, 6524056, 5524939, -10660109, -1171989, 7581691, -3796214, -2811056, -5588826, --5414343, -382252, -2806761, -2447595, 11252277, -529355, -1155346, 7886634, 8949638, -4003983, --3193308, -329102, -1542967, 2676838, -5413270, 1022202, 647466, 1422708, -3221226, -3578782, --1632088, 4064113, -1488206, -2550137, -415001, 2731062, -7024956, -688269, 3954591, 682363, --2819646, 4192962, -2470680, 3768297, -51003, 3625489, 3356517, 3919158, -6183143, -182536, -35433, -33804612, -25476136, -14501957, 29873108, -1335735, -4746476, -3454764, -2135673, -9613747, -10712722, 8281234, 26775900, -24355148, -4559645, 7701413, -17707076, -7028714, -6114960, 30738008, --214748, 7190849, 15812459, 1541893, 15232638, -16056735, -20095078, -13491029, -3491272, -3342558, -2686502, 9673877, -207232, -17027934, -11556146, -774168, -8875550, -19126564, 17436494, -2775623, --9306657, -33823, 5797132, 5533529, 3498251, -8609799, 2048163, -17804250, -7523709, -26444114, -12766253, 8071854, -2822867, -8267275, 10117332, -13158169, -3052111, 28647432, -2683281, 24279986, -11176579, 6534793, -6008659, -30413200, -12317429, -5831492, -16040629, -12236362, -7458211, 13640279, --5869610, 318901, -11868605, 25960930, -8911520, 10704132, 7640210, -17721036, -6745246, 3890704, -16800838, 29945586, 25324200, 10774462, -1302449, 10255308, 481036, 854699, -5466420, 2981781, --5658620, -4277251, 310848, 1705102, -3238942, -4934381, -8342437, -7064685, 4170950, 2801393, -3488050, -3320547, -904628, -17534204, 119185, -8143795, -3322694, 3051038, 2881923, 892816, -7677254, 55298, -544924, 587337, -2429341, -12793634, -712965, -7340099, 4096325, -6538551, --6450504, 648003, 8578660, 3508452, -1787780, -4908074, -3855807, -2268280, 4867272, 939524, --1416266, -3340411, 17053704, -1409286, -10591389, 10312216, 5663452, 36283884, 712428, -125628, -12427488, -17137994, -12017318, -3817689, 2472291, 5448166, -5021891, 15075335, -10123775, 1670742, -14091788, 6106907, 4870493, 4947803, -11382737, 1571421, -887985, -5762236, 1681480, -8315594, --14530948, -7750806, 540092, -14206141, 17221746, -1741609, 1216013, -2878702, 11675332, 13374528, --3172370, -10617696, -1500017, -3672197, 15722802, 20487530, -15425375, -10620917, -8078297, 4827007, -14963129, -14281303, 4077535, -999117, 2696166, -7606387, -10232760, 2652679, 9675488, 1530619, --13217762, 11089606, 33087892, -11257109, 5703717, -2896956, 2042257, 12635257, 3115462, 14963129, -12246562, -3723200, 19066970, 35333624, 884763, -13541495, 34376920, -1046361, 32843614, -11907797, --16914654, 15061913, 5377299, 22980760, -4355097, 32506996, 9809168, 7273527, -10401337, 15218143, -1246614, 1218697, 3088082, 12369506, 2105608, 14177150, 1198296, 3269544, -70867, 1852742, -1753957, 4309463, -2044941, 4873714, 11642046, 4798552, 5015448, 1418413, 2700461, -7107634, -5390721, 1997697, 2150168, 4093104, 1744294, -723702, -674310, 3139084, -4017942, 905701, --431107, 2773475, 8120710, 2867965, -886374, -4675609, 3990562, 540629, 499290, -1071058, -3871913, 2379412, -7354595, 6473053, -23526758, -7851737, 35677220, 5652177, -17086454, 4591857, --13051869, 4307316, 6490770, -3291556, -19525996, -7534447, -28981366, 11499238, 9343164, -11310260, -10166188, 16245177, 2947958, -4773856, -17137994, 3487514, 26195542, -13067438, 15524696, 14986215, -1927367, 11206643, 10164040, 213675, 12792023, 8590471, -25909928, -3867618, -10752451, 25696790, -16695075, -18360986, 10612327, -2330020, 13168370, 43045236, -4632659, -7554848, 3781182, 38730404, -15444166, -2616172, 4424353, 6844568, 21923660, 19640348, -14148159, 23626078, 10350871, 21893058, --16227460, 2186138, 3839701, 4520453, 13056701, 20095078, -13798656, -10654203, 15441481, 7863012, --6078990, -5894306, -576063, 24182276, -46522548, 10659035, -16960826, -12184285, 1557463, -15855409, --15269146, -2230162, -25761214, 17991082, -6012954, 19022948, -1377074, 16633335, -11747809, 6634114, --297427, 5447629, -1227824, -6540699, 4351339, 3493419, 3322157, 8098161, -4725001, 4071092, -4888210, -4750234, -317828, 7758859, 2134062, -4243965, 7938710, -5765994, 389768, 4515621, --6389301, -4240744, 979253, 1730872, 8904004, 8040179, 4944044, 2928094, -1755568, 6288369, -575526, 2787434, 1923072, 5239323, 5478768, -5214627, -5262946, -8449811, 5815386, 2706903, --348429, 2182380, -777926, -9096204, -8728447, 5849209, 7644505, 8098161, -10313827, -12261595, --31546534, 1356136, -17670032, 28520194, 3343632, -7484518, -4398047, 17100412, 4788352, 27810450, -11086921, -7276212, 996969, 5846524, 12520367, 20926154, -23614268, -20323248, -4430796, 35226248, --11033771, 4484483, 9875740, 15435039, 18551574, 26786638, 22956064, 2037962, -5705327, 25027312, -1753420, -15930034, 8288213, -14773077, 10488847, 2688650, -13383655, 12091407, 46852724, 26247082, --16825534, -12545599, -1921461, -13011067, -13150653, -11135240, 7865696, -6317360, -11228118, 2508261, -12725988, 7802882, 4067871, 18559628, 4731444, -4402342, 19296214, 16527571, -14348412, 9667435, --16170552, -12358768, -14368813, 58519, -34367256, -10000294, 23494544, 17631378, -8376797, 11880416, --3125126, 964220, -21234318, 4840428, 12315819, 20115480, 10963441, 13373991, 6979859, 6480032, --9231495, -7736847, -9804873, 5497022, -2353105, 908922, 3745748, 4347581, -744103, 10506564, --3567507, -4383551, -5258114, 7431367, -9820443, -3673271, -12042015, -452045, 1962800, -4872104, -109522, -2609193, 6954089, -1211181, -15794742, 434329, -1425392, 4808216, 5668283, 2170569, -6486475, -213138, 10777684, 2512019, -1270237, -61740, 826244, 717796, 171262, 4553202, --2916820, -13058848, 10343892, 8306467, -16524350, -7197292, -35637492, -3055869, 29253560, 132607, --21879638, 3266323, 753767, -14742475, 19407884, 11160473, -8170639, 5390721, 8647380, 11938398, -6479495, 1900523, -9007083, 4559108, 6724308, 18601504, 27819576, -7915088, -19197966, -10159208, -5075041, 5653788, 22836342, -9036611, -18405546, -14304925, -14788109, 27788438, 50987168, 18436684, -2270964, 56071872, 3077881, 23138600, 13001403, -4920959, -12108587, 9816148, -16286516, -10829760, -11085311, 585726, -34220688, -35291748, -9108552, 14487998, -18646064, -23154706, -12982076, -17187386, --14339285, 11690364, -10091563, -26225608, 11371463, 858457, -7943005, 5926518, -6222334, 12969727, -52432424, -32502702, 26252450, -36930812, -21211232, -12351252, -8687645, 20279224, 7887171, 9642738, --4348655, 11199127, 23308788, 5769215, 168577, 153008, -7263864, 3104725, 6099928, 18829136, --1541356, -9556302, -1809255, 14351096, 8910983, -4245575, 5085242, 6435472, -5654325, -325344, --2663954, 18053896, 6162741, 8486855, 5968394, 5067525, -7934415, -5448703, -1626182, 4534949, --9622337, 1214402, -9502078, -6371047, 1008244, 838056, -10865194, 10068477, 13453985, -1491427, --2260764, 8350490, -369367, -3763465, 11833709, -5181878, 8051453, 658741, 28432684, 18239116, -16426639, 24199456, -28543816, 10787347, -29891362, -1326071, 38728256, 34442952, 14589467, 406948, -6576132, 4264366, -11301670, 8883603, 11039677, -49111340, 2847563, 7078106, 14739254, -18072686, --27741194, 20112794, 9411884, 5029944, -11951820, 23881092, -3535832, 18540300, 15336254, -1962263, -2200097, -5531918, 18723910, -11319923, 5597953, 11259257, -1161789, 24036784, 13806709, -1455994, -12212740, 13972602, -901943, -10998874, -36922760, -6875169, 3746822, -21857626, 1925219, 17268990, --33573760, -14909442, 4941360, -14446123, -2507724, 17535278, 838056, -12554189, -16456167, 7160248, -6874632, -33843268, -11446088, -2884071, -49929, 21126408, 10197863, 2294586, 36852968, -4743255, --1396401, 1389422, -21328808, 19944754, -28454, 32778116, -12934294, -5560909, 9680319, 4896263, --28203440, 847719, -4071629, -11264625, -9256728, 3440269, 952409, -7962333, -912144, -4967667, --3673808, 962610, -12191802, 3400540, 1430761, -1728724, 4367445, 1207423, -8126078, 1561758, -2043868, 2052458, -7872675, 11128797, 1973538, 14495515, -10951093, 1308891, -9265318, -3235184, --1892470, -16145856, 3192771, 1451162, -907849, -2223719, -3144990, 5920613, -7494181, -5644661, -6769942, 9327595, -7330973, -9433896, -34801048, -30345018, 5407364, -15677168, -4999342, -23408108, --29140816, -30641908, -20190642, 21656836, 29590714, 682900, -24603184, 1830193, 1012002, 222265, -11166915, 18863496, 18835580, 370441, -12428025, -30560302, -17599702, -26761942, -5857262, 19864, -2114735, 2659122, 3615289, 7253663, 9385040, 17855790, -28314572, 12278238, 4784594, 6131066, -14973330, 26641682, 29868276, -17375828, 13229036, -23983634, -7612293, -21769578, -2263985, -8537858, -49743776, 17616882, 35791036, 1428077, -19437412, -8370355, 22862110, 24830280, -14800994, 45943804, --19443854, 2786360, 1860795, 7910256, 16742319, 51122460, -3751117, 12456479, 28344100, 6430103, --22765474, 14277008, 52220360, -9643275, -12854837, -30981210, -2753074, 19251118, 11750494, 1545115, --29849486, -22551262, 3591130, -23527830, 6877317, 965294, -29723322, -3419868, 2850785, -4714801, -21139292, 19965156, 250182, -5918465, -12920335, 13801877, -6081674, 24037858, -5696737, 248034, -16309601, 16509317, 23380192, 18155364, -13518410, -5280663, 2968359, -4467303, 1400696, -10208600, --9967545, -9942312, 4952098, -12161737, -14313515, 8307004, 10711648, 930397, -12329777, 7654169, -4080756, -3038689, -3300682, -8296803, -380641, 4654671, -2300492, -7421704, -9814537, -1879048, --6522982, 7833484, 4205847, 666257, -8991514, -3904662, -5105106, 10270877, 46714748, -2253784, --106837, 19912542, 3987877, -64086280, -20041392, 45782204, 15329275, -13230647, -25444460, -3435974, --16761647, 23685134, 12366821, 4576825, -13416404, -30251602, 6665789, -52223580, -6261526, 25777320, -35103840, -3877282, -29555818, -20063402, -61172684, 18158048, -10513006, 24172612, 18277770, -17260936, --12552579, -54239532, -40736692, 21438866, 58096948, 23313082, 27658516, -19145354, -34338800, -32903744, --13744969, 49437756, 66489852, 34781720, -77027552, -28115930, -59001040, -31444530, 73402064, 18033494, -16364899, -9564355, -70466992, -57622892, -57881664, -10613938, 5731097, 36719824, -13463649, 27974732, --55866788, 34969088, 14025753, 4415227, 70473432, 4692789, -6403796, -3192771, -95377264, -28996398, --6391985, 30246770, 15774341, 13923210, 42227044, -44870596, 2991445, -29632054, 32593434, 23658290, -2334852, 6670084, 7004555, -5141076, 19411642, 10541997, 5214091, 16641925, -11152419, -20802138, -5172215, 15239081, 22935126, 19027242, 12502113, -15573015, -25477746, -35610112, -3140158, 2742337, -29017872, 36072356, -5350456, -27150098, -46930032, -22374096, 3395172, 36087388, 57683020, 15197742, --56352120, -57702348, -59046136, -474057, 48216912, 42601244, 44790068, -14867566, -21791590, -41854992, --42407432, 15713138, 28675886, 37548216, 18976776, -29475824, -28012314, -15680926, -4445828, 34849364, -18371722, 5884642, -1602560, -21129628, -15385110, -3030636, -4180614, 9211094, 11464878, 5239323, -4615479, -27239756, 53290880, 23077934, 24608016, -65233036, 13487808, -91008208, -19867444, 90194, -13226352, 5600101, -58241904, 32060858, -15947214, -10200010, -10742787, -12110734, -14082661, -17761838, -38596724, -10621454, -32687386, 10864657, -9078487, 4382478, 18730890, -36845988, -13076565, -1938104, -15834471, 1959579, 42407972, -3224447, -23906324, 56048248, -46903728, 27908698, -43485472, -14085345, -21537114, -35128000, 2808372, 26113938, -13223131, -2684355, -2438468, 33524368, 50768660, 29641716, --16814260, -6615324, -7707856, 3598646, 16436840, -6307160, -9868761, 10233296, 5398237, -91276648, --3508988, -2989297, 13523778, 11799349, 773631, 556198, 26252450, -28447180, -7249368, -2400350, -20038706, -73185168, -10160819, 66932772, -16894254, -26414586, -93416, 50757924, -9122511, -11628624, -13852343, -19397682, -20609938, 31518618, 48287244, -17023640, -24343874, 8721468, 14564234, -7212324, --25679610, -127238, 3860639, -4828617, -3643206, -7650411, -11126113, 5702106, 470836, -9902047, --1761474, 24159, -280784, -9088688, 5572183, -12309913, -13413183, -7478075, -8167954, 12928388, --1743220, -2208687, -219580, -6699612, 10394358, -13081934, 3959960, 818728, 1026497, 9808632, --395137, -15795279, 1903207, -3847217, 3080565, 2665027, -14588930, 23462332, -6046240, -1725503, --2204929, 2570538, 5830418, -73551, -5392332, -2516314, -11572253, -21657910, -66476432, -54484880, -48830556, 41736880, 4399121, 44547936, -47473884, -2257005, -92125976, -32373316, -15919833, 45387604, -41322416, 25562572, -36812164, -12296491, -1170916, -17245904, 9258339, 16762720, 21530672, 28676960, --21004000, 16313896, -39622684, -24810416, -5898064, -7974681, 1509144, 27077084, -31198642, 27879706, --11789148, -17018808, -6559489, 3138547, -39291436, -304943, -35536024, -12849468, -13545253, -33601676, -47419660, 22169548, 11090679, 12080669, -8680129, -47343960, -70626976, -40920836, -41371808, 28955596, -7183333, 31165894, 43028056, 35733056, -11104638, 9038222, -24138254, -18235894, -22020834, 18198850, --23366770, -517544, -22287660, -22832046, -14368276, 28296318, -21906480, -5653251, 2620467, -2552284, --31772020, -33970508, -20613158, -11770895, -46262704, -27113054, 7408282, 28709708, 29656750, 38010460, --2097555, -29827474, -39128764, -29717952, 15811385, 5600638, -4571993, 18835042, 46377056, 12879533, -12597139, -11003169, -8440684, -14511621, -8960912, -4234301, -14388677, -2740726, 17751636, -3100430, --7465190, -13542569, -15513422, -17118666, -5046587, 9334038, -4535486, 4385162, 2367064, -31362388, -3672734, -14596983, 13604846, 26434450, -12789876, 18473192, -2093797, 5024575, 760209, -24661702, --3889630, -7570954, -6455336, 4281009, -369367, -2128693, -5326297, -10835666, -14931991, 22695144, --15149423, -100402912, -135906720, -128478576, -122177328, -146450336, -24801288, -40819908, 25547540, 40857488, -130397888, 83534968, 110505752, 152294704, 167635792, 114194056, 145602080, 82574504, 38400228, -6334003, --27712202, -37737732, -61915176, -60994440, -83861920, -35861904, -31026306, -79158928, -58980640, -56760140, --64197412, -104579232, -71108552, -55106040, -44048648, -80627808, -11391864, -24554328, -33509334, -78111496, --71816688, -59626496, -50673636, -37251324, -15095199, -49894100, 14090714, 24966644, -38748660, 42645804, -59950764, 57115548, 104666744, 84530328, 65482144, 71559520, 72537704, 71439264, 110112224, 123354680, -121789704, 82737712, 131375000, 129120672, 135171216, 136827456, 156103808, 137915696, 146334912, 193519408, -99061808, 99345280, 101407400, 93784904, -4450123, 42459508, 54347980, -31834298, -16733729, -54354960, --98310728, -89765888, -93943816, -170107008, -124235152, -76359688, -132355856, -140955456, -115643608, -124078384, --121998008, -147392544, -134264976, -136454864, -126863672, -119285200, -107925552, -100832944, -100014752, -84030496, --69956968, -111758808, -16709033, -50682760, -57084948, -13713831, -6819871, -56958244, -6801618, -22485228, --7712688, 19907710, 25228102, 64398204, 39109972, 53710176, 60916060, 64998424, 60213296, 82573432, -81871744, 85804320, 81385336, 96174520, 100190848, 96978216, 79714592, 101453568, 108108624, 82597592, -56949656, 53679040, 33806760, 27865210, 8673150, -4153234, -2279017, -18347564, -14887967, -12766790, --5909875, -16281684, -15689516, -16205985, -5979668, -16128139, -18576270, -12018392, -2333778, -13930190, --17022030, -15061377, -10547366, -20949776, -23746338, -25207164, -16034724, -15262166, -17452062, -15959025, --1612760, -4128001, -9527311, -6589017, 717796, -3256122, -5669357, -5511517, 849867, -3455301, --6259378, -7389491, -2920041, -4607963, -1489817, -2822867, -3737159, -5906654, 1062468, 3002719, -2395518, -584116, 1726040, 691490, 2755222, 1588064, 4084514, 3581466, 4337380, -1472100, --1341640, -2199560, -1031329, -5332202, -5424544, -5737003, -5866926, -9413495, -6891812, -6757058, --4715337, -8159364, -7850127, -7976828, -4916664, -6114960, -6930467, -5021354, -624381, -1067299, --1709934, 722628, 4239670, 3132642, 3107409, 3051574, 5226975, 5849209, 6051609, 4989142, -6340983, 6592238, 6068252, 5852967, 6135361, 5804112, 4858682, 3695819, 3623342, 2841121, -2245194, 1187559, 1009854, 587337, 433255, 83752, 54761, -17180, -79457, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +5300527, -159988, 2206003, 885837, -4539781, -3401077, 1249299, -3059091, -4565014, 2684892, +-495532, 739271, -2598455, 1998770, 239444, -4037806, -134755, 4772246, 3886409, -2884608, +-5123896, -4663798, 744640, -1035087, -874026, -3961571, 4417374, -1109712, 1280974, -1778653, +-1060857, -348966, 1706176, -1136019, -2248952, -8756901, 3045669, -617402, 2896419, 1741072, +1246077, -177167, 5922223, 1154273, 1222992, 870268, -2955474, -1870995, -229781, 482110, +-2959233, -661425, 1219771, -362925, -2793876, -1445793, 153008, 2830384, -4304094, -5851893, +-7267622, 2640868, 4239133, 475131, 3514357, 2594160, 534723, -6655052, -127238, -1704028, +-2305861, 167504, 421444, 2829847, -551903, 4005594, 2846490, -1199907, -3969624, -1902671, +-671089, 1076963, 353261, 1347546, 1550483, 2812667, -12885, -213138, -1254667, -1075352, +-1031329, -428423, -2195802, -1007170, -1222455, 748398, -103616, -230854, -644245, 1101659, +-1533303, 3186866, 4162360, -942745, -40265, -5920613, 5307506, -6783901, 2641405, 11454678, +-2435783, -4251481, 666257, 5979132, 651761, -1692217, -810138, -1705639, -1064615, -5373541, +-2076080, 2655364, -4251481, -2439005, 262530, -234613, 4741107, -2880313, 903554, -1114544, +1054415, -599685, -2733210, 5226439, 8913668, 2251100, -481036, -1667521, 9646497, 446677, +-3996467, 267362, -7146826, 24159, 3773129, -5509370, -670015, 1178432, -4367445, -1326608, +5098126, 717796, -511638, 4885526, -3219078, -5145908, 2944737, 1925756, -3555159, -1784559, +-3808026, -4510790, -4810364, -2687039, -2733747, 3924526, 2834142, 763967, -70867, -2733210, +2568391, -597537, -1818919, 3322694, 3722663, -2633352, -480499, -1249836, -1629940, 507880, +4261682, -2137820, 991601, 4008815, 2705830, -932008, 1068910, -713501, -60130, 1692217, +-190052, 15032, 1787780, -1867774, 806380, 368830, -539018, -1723356, 1365263, 135828, +-706522, 387621, 246424, -628676, 255014, -330712, -508417, -1016834, 5873368, -8497593, +-5601711, -2003065, -1214402, 314606, 1121523, -8101382, 5669357, -2540473, 1869385, 1190243, +1903207, 3577171, -1074, -1149441, -2680597, 5878200, -438624, 3830574, 7249368, -1540820, +6167036, 5268315, -4520453, 3064459, 3095598, 3324305, -7994545, -769336, 501437, -2492155, +-5020280, 106300, 5905043, -1353452, -2498597, -1950989, 1820529, 5483600, 2714956, -2758443, +-26307, -2269890, 251792, -702764, -2699387, 5123896, -6565395, -5411122, -4978941, 1574642, +-683974, -149787, -6125160, -6456947, 1598265, -106837, 384936, -609885, -327491, -4811974, +-2849174, -5264020, 1054415, 4568235, -1398012, 4057134, 769873, 3610994, -7716983, 64425, +1132261, -2547989, -1152125, 1064615, -2740726, -307090, 2039573, 2220498, -1701881, -5140002, +4566624, 746787, 124554, -1109712, -648540, -4108136, 194884, 319438, -717260, 781684, +144955, -1427003, 635118, 705448, -407485, -560493, -196495, -211527, -270583, 264141, +2188823, 72478, -646393, 1840930, 812823, -105227, -594316, -141734, -296353, -3000035, +641561, -665720, 4940286, 7902740, 428423, -3115999, -6866042, 3025268, 1939178, 1802813, +8379481, -5609764, 119185, 948114, -1608465, -2847563, 1175747, 450972, 5022965, 11164231, +-1064078, 1864016, 4628901, -2122251, 4122095, 7226820, -5173288, -273267, -1972464, -188979, +3190087, -5777268, 6081674, 1288490, 2147, 3159485, -602369, 4407174, -2502355, -1118302, +-1331440, 6970732, 3221762, 4408784, -917512, 3617973, -6912213, 7830799, -3128347, 3028489, +-7271380, 2824478, 5170067, 9562208, 3479997, 1717450, -6408628, -2515240, 1693291, -4889284, +-5775121, -1439888, 11339251, 13114683, 2474438, 3020973, -3821984, -1757179, 7325604, 1355062, +3177739, -531502, 2193655, 1893544, -1027571, 1603097, -1130650, 1187559, 839666, 4577899, +3745212, -5939403, 5169530, -1797444, 2636036, -1928977, 1926830, -1641214, -2220498, -126165, +-3517578, 460635, 2501819, 493921, 1271310, -1319092, -1574642, -876173, 598611, 24159, +544387, -309238, 368293, -1066226, 333397, 290447, 1820529, 25770, 1231582, -677531, +1101659, -1386738, 128849, 131533, 1312649, 5473399, 60666, 602369, 7714298, -6667937, +-7840463, 11981348, -3223910, -2019172, 7793755, 4638565, 484258, -13930726, 14859513, -2821794, +-1991254, -1651415, -916976, 515933, 821949, 4600447, 6874632, 4522064, -1105954, 7755637, +4861903, 2443300, 2000918, -2951716, 3467649, -5697811, 4387309, -926639, 1773285, -4831302, +-7034083, 824634, -986232, 2477659, 4066260, -2118493, -6740415, -3927211, 1519345, -8012262, +5029944, 1542967, -12799003, 5678484, 762357, 3226594, 707059, 1923072, 2037962, -565325, +-3694209, -3151969, -8775155, -6404870, -3651796, -4463008, -1093606, 476741, -6456947, -9006546, +-1457068, 5797669, 9931038, -545998, -6813429, 1080184, -10646150, 692564, -840740, -4167729, +8756365, 8322573, 2686502, -347892, -2271501, -656593, -4791036, 2171106, 8385924, 4531728, +6906845, 1400696, -3341485, 3253975, 1569274, -255014, 539555, 366683, 71404, 1504849, +1429687, 1493575, -615791, 2634426, 574989, 5216775, 1898376, 1388885, 100395, 437550, +1232119, -387621, 2303176, 893353, 797253, -1408212, 2895882, 753767, -1246077, -464393, +2230699, -13598940, 7016903, -2600603, -4843113, -3840238, -4634270, -6466610, 12447889, -15867757, +3733400, 3830037, 5181878, 7749195, 1264331, 2151779, 2909304, 2098629, 1604707, 2625299, +6811282, 1231045, -3767223, -7516, -671626, -4883915, -4431333, 2261837, 4556961, 4919885, +652298, 3508452, -8280160, -958851, -133681, -453119, -7848516, -4689031, -2837363, 5122286, +4575751, -77846, -8591008, 50466, -4662724, -3320010, -1706176, -2303176, 5362267, 7329362, +2201708, 7625178, -12218108, -8515310, 4032438, 2494839, 389231, 1618129, 771484, -3948149, +-7697655, -5294084, 4038343, -3427921, 6189048, 6129992, -2261300, 5809480, -9262097, -4556424, +-2629057, -3105798, 642098, 16821240, -2450816, 4764730, -2717641, -2423435, -1748589, 3578782, +3788161, -434329, 3049964, 2122251, -5283347, 1458141, 361851, 2263985, 448287, 289373, +-2685965, 1708323, -153008, 1731409, 505196, 904091, -534723, -987843, 455267, -1515587, +-2254858, 766652, -1257889, -1880122, -611496, 585726, 697932, 768262, 770410, -91805, +536871, 1209570, 937377, 353798, 233002, -373662, -695785, 1131187, 563714, -89121, +772020, 13896367, -2681670, 372588, 5847598, -13243532, 9090298, 4606353, -7467875, 8273718, +9257265, 3102577, -14297946, 8827232, 376347, -1355599, 7226820, 7807714, -451508, -2315524, +220654, -5553930, 5182415, -3040300, -5292474, -11125039, 2588792, -12091407, 3236795, -2969433, +-1359357, 3476776, -9853729, -4053376, 8178692, -722628, -3829500, 5002027, 324807, -4305168, +3700114, 1336272, 356482, -1850594, 2820183, -6002217, -636192, -8761733, 8274792, 8272107, +-10316511, 6881075, -7362111, -2784750, 7110319, 9945534, -730144, -4967130, 3001645, -634045, +1427540, -12175695, -9627706, 1912334, 1718524, -2639794, -2508798, 3147137, -383326, -4321274, +5135171, -4980015, 1734093, 3712999, -861141, 5828271, -5858873, 5893232, -49929, 9382356, +-3230889, 2841658, 5291937, 591095, -3376918, -967978, -359167, 2745021, -930397, -4429185, +3714610, 799401, -1864016, 1636383, -1257889, -65498, -1750736, -508417, 1261110, -1490354, +941672, 2564632, -1347546, 616328, 165893, -863825, 1615982, 425739, 1373316, -2085744, +829466, -2135136, -2444373, 893890, -402116, 977105, 1009317, 295816, 2963528, 3869766, +1698123, -5041755, 9782862, -3321084, 4770635, -9836549, -678068, -2581275, -8928163, 332323, +6341519, 11255499, 14719390, -8351564, -214212, -10414759, -760209, -6625524, 5953899, -6201933, +-12285754, 817118, -7867307, -718333, 10223633, -6029061, -6016176, 10970957, 358093, 1902134, +-1125818, -6419366, 2754148, 2356327, 13215614, -9085466, 6491306, -7702487, 1944547, 2581812, +-7601555, -4671851, 12690555, 3485366, -9407052, -2414309, -3430605, -7548405, -300648, 12441447, +6672232, 8663486, 1993939, 3475702, -11318849, -1620813, 14435385, 1161252, -8942659, 4813585, +4784594, -6556805, -5709086, -3150896, -14794015, -2265595, 4415764, 7336878, 13021804, -3241090, +-7097434, -2039573, -4411469, 10576894, -3911105, -9199283, -6264747, -2704756, -1241782, -2837900, +-5311801, 11512660, -6571837, -782221, 1077500, 568009, 3769371, 2357937, -3369939, -4529043, +3432216, 4119411, 4354023, -975494, 1978369, -1184874, -700617, 1956358, -410169, -1999844, +2059974, 974421, -42950, -1304060, -425739, -3343632, 330176, -817654, -2872260, -1459215, +1330903, 1159641, 70867, 1358820, 6372658, -21907018, -15086073, -9651328, 1205275, -18346490, +2796561, 13724568, 4571456, 14130442, -7509214, -3433826, -1483374, -7267085, -2693481, -10934450, +19572166, 11200738, 7829726, -16444893, -3144453, -5257040, -10689637, 3765613, -1085553, 3535295, +-13288629, -862752, -1151051, -9520332, 5612986, 1640678, 9827422, 3991635, -8140037, 12947716, +-6053220, 5288716, 2757369, -51540, 10243497, 9539122, 2433636, -12243341, 15047955, -7537668, +10801306, 4964982, -5527086, -6132677, 12106439, 1831804, -1365263, 3202435, -10151692, -3591130, +5917928, -790274, 10710038, -6105296, -9606768, 4018479, 2769717, 392453, 10650982, 4638565, +2197413, -6703907, 7762080, 3095598, -5879274, -746787, -595390, -3334505, -2435783, -2800319, +4684199, 11725261, 19680078, 9199283, -3273839, 1068910, -4469451, 4592394, 6082748, -21475, +-4978941, -2876018, -6511171, 4116726, -3539590, 1037235, -3055332, -769336, 4398047, -438087, +512175, -3906273, 4301947, -2167885, -1872606, 2423972, -3879966, 4379793, -2963528, 2385318, +-2083059, -313533, 1002338, -2836826, -2040646, -1192927, -4728222, -4697621, -2062121, -158377, +-1649268, 3887482, 3541201, 2142652, -14136885, 18362058, 7453916, 21036750, -9826885, -11717208, +20034948, 415538, -2364916, 4180614, 1290101, 11616276, 15571404, 1796370, -14976551, -23830626, +3044058, -6772627, 1177358, 398358, -10458782, -920734, 12575664, 10226854, 7994545, 16258062, +-3990025, 13734769, -10093173, 12132746, 3825742, 9340480, -6695854, 16658568, 9491341, 12091944, +-19870130, -362388, 17595408, 9893457, 2990908, -4501663, 26596584, 11064373, -10773389, -6755984, +6300717, -10508174, -1241246, -5183489, 1141388, 22275312, 23368380, 16879758, 6056441, -69256, +8648454, -8102993, -2218351, 9407052, -10260140, 23604066, 14646375, 11449846, 4383014, -1184337, +-11505681, 13907104, 282394, 12097849, -5754720, 4539244, -8184060, -4824322, -432181, 5971615, +-9583683, 21959094, 9352828, -2706366, -11112691, -21203180, 10084046, 1574106, -7029788, -901406, +2378338, -5152887, 2828773, 7824894, -1611687, -3038689, 42950, -1970316, -2292976, 1570347, +-2735894, -2109903, -3670050, 3367254, 1863479, -5516349, 2757369, 3119757, 3073586, -365072, +-1753957, -849330, -235686, 1491427, -642635, 1035624, -3306051, 4873178, -6629819, -150324, +2034741, 5495411, 558883, 23314694, -1057636, -11086384, -4847945, -8625905, -62814, -14014478, +3987877, -12032351, 7253663, 1889786, -3060164, -9400610, -11329050, -17272748, -17969070, -5103495, +16073378, -871342, -10062035, 4571993, -9586904, 7865159, -8158291, 15134391, -14978162, 3881040, +-10558103, -10725070, -1796907, 2208687, -2996277, 7325604, -21679922, 9155260, 2328409, -4940823, +-1302986, -1114007, -10631655, -17038136, -18424872, 13749264, 6825777, -6936372, 11795591, 722091, +-4650913, -13354127, -28621126, -23363012, 13614509, -3788161, 477815, -2490544, -1185411, -1012539, +-19346144, 7782481, -22888954, -11928735, 1211181, -355945, -4780836, -2728378, -2928631, 24146306, +-7219840, -7377143, -6319508, 25251724, -4363150, -9611600, 15880105, -11987254, -7756174, -9809168, +-8484171, -31694174, 6524056, 5524939, -10660109, -1171989, 7581691, -3796214, -2811056, -5588826, +-5414343, -382252, -2806761, -2447595, 11252277, -529355, -1155346, 7886634, 8949638, -4003983, +-3193308, -329102, -1542967, 2676838, -5413270, 1022202, 647466, 1422708, -3221226, -3578782, +-1632088, 4064113, -1488206, -2550137, -415001, 2731062, -7024956, -688269, 3954591, 682363, +-2819646, 4192962, -2470680, 3768297, -51003, 3625489, 3356517, 3919158, -6183143, -182536, +35433, -33804612, -25476136, -14501957, 29873108, -1335735, -4746476, -3454764, -2135673, -9613747, +10712722, 8281234, 26775900, -24355148, -4559645, 7701413, -17707076, -7028714, -6114960, 30738008, +-214748, 7190849, 15812459, 1541893, 15232638, -16056735, -20095078, -13491029, -3491272, -3342558, +2686502, 9673877, -207232, -17027934, -11556146, -774168, -8875550, -19126564, 17436494, -2775623, +-9306657, -33823, 5797132, 5533529, 3498251, -8609799, 2048163, -17804250, -7523709, -26444114, +12766253, 8071854, -2822867, -8267275, 10117332, -13158169, -3052111, 28647432, -2683281, 24279986, +11176579, 6534793, -6008659, -30413200, -12317429, -5831492, -16040629, -12236362, -7458211, 13640279, +-5869610, 318901, -11868605, 25960930, -8911520, 10704132, 7640210, -17721036, -6745246, 3890704, +16800838, 29945586, 25324200, 10774462, -1302449, 10255308, 481036, 854699, -5466420, 2981781, +-5658620, -4277251, 310848, 1705102, -3238942, -4934381, -8342437, -7064685, 4170950, 2801393, +3488050, -3320547, -904628, -17534204, 119185, -8143795, -3322694, 3051038, 2881923, 892816, +7677254, 55298, -544924, 587337, -2429341, -12793634, -712965, -7340099, 4096325, -6538551, +-6450504, 648003, 8578660, 3508452, -1787780, -4908074, -3855807, -2268280, 4867272, 939524, +-1416266, -3340411, 17053704, -1409286, -10591389, 10312216, 5663452, 36283884, 712428, -125628, +12427488, -17137994, -12017318, -3817689, 2472291, 5448166, -5021891, 15075335, -10123775, 1670742, +14091788, 6106907, 4870493, 4947803, -11382737, 1571421, -887985, -5762236, 1681480, -8315594, +-14530948, -7750806, 540092, -14206141, 17221746, -1741609, 1216013, -2878702, 11675332, 13374528, +-3172370, -10617696, -1500017, -3672197, 15722802, 20487530, -15425375, -10620917, -8078297, 4827007, +14963129, -14281303, 4077535, -999117, 2696166, -7606387, -10232760, 2652679, 9675488, 1530619, +-13217762, 11089606, 33087892, -11257109, 5703717, -2896956, 2042257, 12635257, 3115462, 14963129, +12246562, -3723200, 19066970, 35333624, 884763, -13541495, 34376920, -1046361, 32843614, -11907797, +-16914654, 15061913, 5377299, 22980760, -4355097, 32506996, 9809168, 7273527, -10401337, 15218143, +1246614, 1218697, 3088082, 12369506, 2105608, 14177150, 1198296, 3269544, -70867, 1852742, +1753957, 4309463, -2044941, 4873714, 11642046, 4798552, 5015448, 1418413, 2700461, -7107634, +5390721, 1997697, 2150168, 4093104, 1744294, -723702, -674310, 3139084, -4017942, 905701, +-431107, 2773475, 8120710, 2867965, -886374, -4675609, 3990562, 540629, 499290, -1071058, +3871913, 2379412, -7354595, 6473053, -23526758, -7851737, 35677220, 5652177, -17086454, 4591857, +-13051869, 4307316, 6490770, -3291556, -19525996, -7534447, -28981366, 11499238, 9343164, -11310260, +10166188, 16245177, 2947958, -4773856, -17137994, 3487514, 26195542, -13067438, 15524696, 14986215, +1927367, 11206643, 10164040, 213675, 12792023, 8590471, -25909928, -3867618, -10752451, 25696790, +16695075, -18360986, 10612327, -2330020, 13168370, 43045236, -4632659, -7554848, 3781182, 38730404, +15444166, -2616172, 4424353, 6844568, 21923660, 19640348, -14148159, 23626078, 10350871, 21893058, +-16227460, 2186138, 3839701, 4520453, 13056701, 20095078, -13798656, -10654203, 15441481, 7863012, +-6078990, -5894306, -576063, 24182276, -46522548, 10659035, -16960826, -12184285, 1557463, -15855409, +-15269146, -2230162, -25761214, 17991082, -6012954, 19022948, -1377074, 16633335, -11747809, 6634114, +-297427, 5447629, -1227824, -6540699, 4351339, 3493419, 3322157, 8098161, -4725001, 4071092, +4888210, -4750234, -317828, 7758859, 2134062, -4243965, 7938710, -5765994, 389768, 4515621, +-6389301, -4240744, 979253, 1730872, 8904004, 8040179, 4944044, 2928094, -1755568, 6288369, +575526, 2787434, 1923072, 5239323, 5478768, -5214627, -5262946, -8449811, 5815386, 2706903, +-348429, 2182380, -777926, -9096204, -8728447, 5849209, 7644505, 8098161, -10313827, -12261595, +-31546534, 1356136, -17670032, 28520194, 3343632, -7484518, -4398047, 17100412, 4788352, 27810450, +11086921, -7276212, 996969, 5846524, 12520367, 20926154, -23614268, -20323248, -4430796, 35226248, +-11033771, 4484483, 9875740, 15435039, 18551574, 26786638, 22956064, 2037962, -5705327, 25027312, +1753420, -15930034, 8288213, -14773077, 10488847, 2688650, -13383655, 12091407, 46852724, 26247082, +-16825534, -12545599, -1921461, -13011067, -13150653, -11135240, 7865696, -6317360, -11228118, 2508261, +12725988, 7802882, 4067871, 18559628, 4731444, -4402342, 19296214, 16527571, -14348412, 9667435, +-16170552, -12358768, -14368813, 58519, -34367256, -10000294, 23494544, 17631378, -8376797, 11880416, +-3125126, 964220, -21234318, 4840428, 12315819, 20115480, 10963441, 13373991, 6979859, 6480032, +-9231495, -7736847, -9804873, 5497022, -2353105, 908922, 3745748, 4347581, -744103, 10506564, +-3567507, -4383551, -5258114, 7431367, -9820443, -3673271, -12042015, -452045, 1962800, -4872104, +109522, -2609193, 6954089, -1211181, -15794742, 434329, -1425392, 4808216, 5668283, 2170569, +6486475, -213138, 10777684, 2512019, -1270237, -61740, 826244, 717796, 171262, 4553202, +-2916820, -13058848, 10343892, 8306467, -16524350, -7197292, -35637492, -3055869, 29253560, 132607, +-21879638, 3266323, 753767, -14742475, 19407884, 11160473, -8170639, 5390721, 8647380, 11938398, +6479495, 1900523, -9007083, 4559108, 6724308, 18601504, 27819576, -7915088, -19197966, -10159208, +5075041, 5653788, 22836342, -9036611, -18405546, -14304925, -14788109, 27788438, 50987168, 18436684, +2270964, 56071872, 3077881, 23138600, 13001403, -4920959, -12108587, 9816148, -16286516, -10829760, +11085311, 585726, -34220688, -35291748, -9108552, 14487998, -18646064, -23154706, -12982076, -17187386, +-14339285, 11690364, -10091563, -26225608, 11371463, 858457, -7943005, 5926518, -6222334, 12969727, +52432424, -32502702, 26252450, -36930812, -21211232, -12351252, -8687645, 20279224, 7887171, 9642738, +-4348655, 11199127, 23308788, 5769215, 168577, 153008, -7263864, 3104725, 6099928, 18829136, +-1541356, -9556302, -1809255, 14351096, 8910983, -4245575, 5085242, 6435472, -5654325, -325344, +-2663954, 18053896, 6162741, 8486855, 5968394, 5067525, -7934415, -5448703, -1626182, 4534949, +-9622337, 1214402, -9502078, -6371047, 1008244, 838056, -10865194, 10068477, 13453985, -1491427, +-2260764, 8350490, -369367, -3763465, 11833709, -5181878, 8051453, 658741, 28432684, 18239116, +16426639, 24199456, -28543816, 10787347, -29891362, -1326071, 38728256, 34442952, 14589467, 406948, +6576132, 4264366, -11301670, 8883603, 11039677, -49111340, 2847563, 7078106, 14739254, -18072686, +-27741194, 20112794, 9411884, 5029944, -11951820, 23881092, -3535832, 18540300, 15336254, -1962263, +2200097, -5531918, 18723910, -11319923, 5597953, 11259257, -1161789, 24036784, 13806709, -1455994, +12212740, 13972602, -901943, -10998874, -36922760, -6875169, 3746822, -21857626, 1925219, 17268990, +-33573760, -14909442, 4941360, -14446123, -2507724, 17535278, 838056, -12554189, -16456167, 7160248, +6874632, -33843268, -11446088, -2884071, -49929, 21126408, 10197863, 2294586, 36852968, -4743255, +-1396401, 1389422, -21328808, 19944754, -28454, 32778116, -12934294, -5560909, 9680319, 4896263, +-28203440, 847719, -4071629, -11264625, -9256728, 3440269, 952409, -7962333, -912144, -4967667, +-3673808, 962610, -12191802, 3400540, 1430761, -1728724, 4367445, 1207423, -8126078, 1561758, +2043868, 2052458, -7872675, 11128797, 1973538, 14495515, -10951093, 1308891, -9265318, -3235184, +-1892470, -16145856, 3192771, 1451162, -907849, -2223719, -3144990, 5920613, -7494181, -5644661, +6769942, 9327595, -7330973, -9433896, -34801048, -30345018, 5407364, -15677168, -4999342, -23408108, +-29140816, -30641908, -20190642, 21656836, 29590714, 682900, -24603184, 1830193, 1012002, 222265, +11166915, 18863496, 18835580, 370441, -12428025, -30560302, -17599702, -26761942, -5857262, 19864, +2114735, 2659122, 3615289, 7253663, 9385040, 17855790, -28314572, 12278238, 4784594, 6131066, +14973330, 26641682, 29868276, -17375828, 13229036, -23983634, -7612293, -21769578, -2263985, -8537858, +49743776, 17616882, 35791036, 1428077, -19437412, -8370355, 22862110, 24830280, -14800994, 45943804, +-19443854, 2786360, 1860795, 7910256, 16742319, 51122460, -3751117, 12456479, 28344100, 6430103, +-22765474, 14277008, 52220360, -9643275, -12854837, -30981210, -2753074, 19251118, 11750494, 1545115, +-29849486, -22551262, 3591130, -23527830, 6877317, 965294, -29723322, -3419868, 2850785, -4714801, +21139292, 19965156, 250182, -5918465, -12920335, 13801877, -6081674, 24037858, -5696737, 248034, +16309601, 16509317, 23380192, 18155364, -13518410, -5280663, 2968359, -4467303, 1400696, -10208600, +-9967545, -9942312, 4952098, -12161737, -14313515, 8307004, 10711648, 930397, -12329777, 7654169, +4080756, -3038689, -3300682, -8296803, -380641, 4654671, -2300492, -7421704, -9814537, -1879048, +-6522982, 7833484, 4205847, 666257, -8991514, -3904662, -5105106, 10270877, 46714748, -2253784, +-106837, 19912542, 3987877, -64086280, -20041392, 45782204, 15329275, -13230647, -25444460, -3435974, +-16761647, 23685134, 12366821, 4576825, -13416404, -30251602, 6665789, -52223580, -6261526, 25777320, +35103840, -3877282, -29555818, -20063402, -61172684, 18158048, -10513006, 24172612, 18277770, -17260936, +-12552579, -54239532, -40736692, 21438866, 58096948, 23313082, 27658516, -19145354, -34338800, -32903744, +-13744969, 49437756, 66489852, 34781720, -77027552, -28115930, -59001040, -31444530, 73402064, 18033494, +16364899, -9564355, -70466992, -57622892, -57881664, -10613938, 5731097, 36719824, -13463649, 27974732, +-55866788, 34969088, 14025753, 4415227, 70473432, 4692789, -6403796, -3192771, -95377264, -28996398, +-6391985, 30246770, 15774341, 13923210, 42227044, -44870596, 2991445, -29632054, 32593434, 23658290, +2334852, 6670084, 7004555, -5141076, 19411642, 10541997, 5214091, 16641925, -11152419, -20802138, +5172215, 15239081, 22935126, 19027242, 12502113, -15573015, -25477746, -35610112, -3140158, 2742337, +29017872, 36072356, -5350456, -27150098, -46930032, -22374096, 3395172, 36087388, 57683020, 15197742, +-56352120, -57702348, -59046136, -474057, 48216912, 42601244, 44790068, -14867566, -21791590, -41854992, +-42407432, 15713138, 28675886, 37548216, 18976776, -29475824, -28012314, -15680926, -4445828, 34849364, +18371722, 5884642, -1602560, -21129628, -15385110, -3030636, -4180614, 9211094, 11464878, 5239323, +4615479, -27239756, 53290880, 23077934, 24608016, -65233036, 13487808, -91008208, -19867444, 90194, +13226352, 5600101, -58241904, 32060858, -15947214, -10200010, -10742787, -12110734, -14082661, -17761838, +38596724, -10621454, -32687386, 10864657, -9078487, 4382478, 18730890, -36845988, -13076565, -1938104, +15834471, 1959579, 42407972, -3224447, -23906324, 56048248, -46903728, 27908698, -43485472, -14085345, +21537114, -35128000, 2808372, 26113938, -13223131, -2684355, -2438468, 33524368, 50768660, 29641716, +-16814260, -6615324, -7707856, 3598646, 16436840, -6307160, -9868761, 10233296, 5398237, -91276648, +-3508988, -2989297, 13523778, 11799349, 773631, 556198, 26252450, -28447180, -7249368, -2400350, +20038706, -73185168, -10160819, 66932772, -16894254, -26414586, -93416, 50757924, -9122511, -11628624, +13852343, -19397682, -20609938, 31518618, 48287244, -17023640, -24343874, 8721468, 14564234, -7212324, +-25679610, -127238, 3860639, -4828617, -3643206, -7650411, -11126113, 5702106, 470836, -9902047, +-1761474, 24159, -280784, -9088688, 5572183, -12309913, -13413183, -7478075, -8167954, 12928388, +-1743220, -2208687, -219580, -6699612, 10394358, -13081934, 3959960, 818728, 1026497, 9808632, +-395137, -15795279, 1903207, -3847217, 3080565, 2665027, -14588930, 23462332, -6046240, -1725503, +-2204929, 2570538, 5830418, -73551, -5392332, -2516314, -11572253, -21657910, -66476432, -54484880, +48830556, 41736880, 4399121, 44547936, -47473884, -2257005, -92125976, -32373316, -15919833, 45387604, +41322416, 25562572, -36812164, -12296491, -1170916, -17245904, 9258339, 16762720, 21530672, 28676960, +-21004000, 16313896, -39622684, -24810416, -5898064, -7974681, 1509144, 27077084, -31198642, 27879706, +-11789148, -17018808, -6559489, 3138547, -39291436, -304943, -35536024, -12849468, -13545253, -33601676, +47419660, 22169548, 11090679, 12080669, -8680129, -47343960, -70626976, -40920836, -41371808, 28955596, +7183333, 31165894, 43028056, 35733056, -11104638, 9038222, -24138254, -18235894, -22020834, 18198850, +-23366770, -517544, -22287660, -22832046, -14368276, 28296318, -21906480, -5653251, 2620467, -2552284, +-31772020, -33970508, -20613158, -11770895, -46262704, -27113054, 7408282, 28709708, 29656750, 38010460, +-2097555, -29827474, -39128764, -29717952, 15811385, 5600638, -4571993, 18835042, 46377056, 12879533, +12597139, -11003169, -8440684, -14511621, -8960912, -4234301, -14388677, -2740726, 17751636, -3100430, +-7465190, -13542569, -15513422, -17118666, -5046587, 9334038, -4535486, 4385162, 2367064, -31362388, +3672734, -14596983, 13604846, 26434450, -12789876, 18473192, -2093797, 5024575, 760209, -24661702, +-3889630, -7570954, -6455336, 4281009, -369367, -2128693, -5326297, -10835666, -14931991, 22695144, +-15149423, -100402912, -135906720, -128478576, -122177328, -146450336, -24801288, -40819908, 25547540, 40857488, +130397888, 83534968, 110505752, 152294704, 167635792, 114194056, 145602080, 82574504, 38400228, -6334003, +-27712202, -37737732, -61915176, -60994440, -83861920, -35861904, -31026306, -79158928, -58980640, -56760140, +-64197412, -104579232, -71108552, -55106040, -44048648, -80627808, -11391864, -24554328, -33509334, -78111496, +-71816688, -59626496, -50673636, -37251324, -15095199, -49894100, 14090714, 24966644, -38748660, 42645804, +59950764, 57115548, 104666744, 84530328, 65482144, 71559520, 72537704, 71439264, 110112224, 123354680, +121789704, 82737712, 131375000, 129120672, 135171216, 136827456, 156103808, 137915696, 146334912, 193519408, +99061808, 99345280, 101407400, 93784904, -4450123, 42459508, 54347980, -31834298, -16733729, -54354960, +-98310728, -89765888, -93943816, -170107008, -124235152, -76359688, -132355856, -140955456, -115643608, -124078384, +-121998008, -147392544, -134264976, -136454864, -126863672, -119285200, -107925552, -100832944, -100014752, -84030496, +-69956968, -111758808, -16709033, -50682760, -57084948, -13713831, -6819871, -56958244, -6801618, -22485228, +-7712688, 19907710, 25228102, 64398204, 39109972, 53710176, 60916060, 64998424, 60213296, 82573432, +81871744, 85804320, 81385336, 96174520, 100190848, 96978216, 79714592, 101453568, 108108624, 82597592, +56949656, 53679040, 33806760, 27865210, 8673150, -4153234, -2279017, -18347564, -14887967, -12766790, +-5909875, -16281684, -15689516, -16205985, -5979668, -16128139, -18576270, -12018392, -2333778, -13930190, +-17022030, -15061377, -10547366, -20949776, -23746338, -25207164, -16034724, -15262166, -17452062, -15959025, +-1612760, -4128001, -9527311, -6589017, 717796, -3256122, -5669357, -5511517, 849867, -3455301, +-6259378, -7389491, -2920041, -4607963, -1489817, -2822867, -3737159, -5906654, 1062468, 3002719, +2395518, -584116, 1726040, 691490, 2755222, 1588064, 4084514, 3581466, 4337380, -1472100, +-1341640, -2199560, -1031329, -5332202, -5424544, -5737003, -5866926, -9413495, -6891812, -6757058, +-4715337, -8159364, -7850127, -7976828, -4916664, -6114960, -6930467, -5021354, -624381, -1067299, +-1709934, 722628, 4239670, 3132642, 3107409, 3051574, 5226975, 5849209, 6051609, 4989142, +6340983, 6592238, 6068252, 5852967, 6135361, 5804112, 4858682, 3695819, 3623342, 2841121, +2245194, 1187559, 1009854, 587337, 433255, 83752, 54761, -17180, -79457, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -6262063, -8022462, -569620, 3258807, 1661616, 3830037, -6724845, -3609920, 4388383, 2147484, 88584, --3718368, 812286, -10456635, -6720550, -320512, -3990025, -4514011, 1911797, 8252243, 1416802, -6294812, -1408212, 6221797, -3649112, -3246459, -372588, -5529234, 1145146, 2816962, -1977296, --89657, 1484985, 308164, 2552821, -253403, -5929739, 2180233, -3661997, -2742874, 1710471, --3629784, -5531918, 5584531, -5806796, 5316633, 4955856, 3285650, -233002, -6809671, -3957812, -814970, -1264868, 8863739, -5371931, 2188823, -670015, 1209033, -6649683, -11104638, -1941862, --3304441, -3695819, -835908, 4733591, -980863, -5003637, 4450660, 1895154, -2194192, 3704409, --678605, 1125281, -5090073, -403190, -1240709, -64961, 2005213, -2332167, 1632088, -4677220, -3208341, -721018, 375810, -1701881, -1513439, 29528, 1963874, 713501, -27917, 747861, -4295, -2819109, 855772, 234613, 1815697, -282394, 100395, -4832, 80531, -178241, --973884, 4328254, 4318053, 651224, 7749195, -41876, 3374234, 4183298, -1074, -3714610, -442919, -5296769, -6789807, -2553358, -7743826, -8002598, -2569464, 5330055, -1839320, -1791538, --4137664, -1020055, -7272990, 3619584, -1999844, 1847373, 4449586, 1529545, -1489280, 3060164, -2920578, -3538516, 2538326, 366146, 718870, 2715493, -6334003, -2722473, 4582730, -2867428, --154619, -1811939, 5080947, -6404333, -477278, -5359583, 3554622, -288837, -336618, 4902169, --2045478, -2310156, -1622961, -4523138, 387084, -2033130, -299574, 329639, 3161096, 3176128, -1123671, -1371705, -5310190, -8765491, -2661269, -585726, -2107218, 4749697, -1840394, -2686502, -3839164, -2406792, -3703873, 8366060, -1745367, -4645544, -350577, 786516, -1329292, 4134980, --463320, -3659849, 125091, 179852, -721555, -1090922, 3345780, 755377, 535260, -1937030, -481573, -580357, 296890, 1290101, -210453, 736587, 1595580, 203474, -230318, -316217, -722091, -1845225, -614180, -362388, -775778, 779537, 720481, -297427, 8885750, -5735392, --2732673, -4163434, 3266860, 592706, -452582, 6397891, 1497870, 1841467, -9397388, 1676648, --4410395, -5117454, -6642167, -153008, 187368, 7781407, -6446209, 2916820, -2733210, 9633612, --3540664, -3248606, 6833830, -2674691, 2324651, 998043, -508954, 1097364, -4669167, 710817, -164819, 1913408, 9041980, 3131568, 795643, -3921842, 3128347, -7105487, -2015950, -1389959, -3816079, 3273302, 5439576, 3569118, -4176319, -6095096, -2700998, 4596689, -625455, 2370822, --1031866, -701153, 9188009, 2149631, -760209, -11067594, -4982162, 257161, 3779571, 5876589, -8249559, 4626217, -2067490, 1462436, -2097555, -2850248, 5900212, -3782793, 6075768, 255014, --5606006, 1974074, -2920578, 4767951, -4178466, -493384, 4099546, 4758287, -4859756, -1859721, --970126, -1984275, 2811593, -664109, -2118493, 1308891, 624918, 712428, 737661, 1140851, -556198, 675921, 235686, -360777, -490700, -1789391, 2686502, -120796, 90731, 303332, --33823, 427349, 1396938, 1422708, -143881, -386547, 1758252, 1390496, -191126, 1161252, -4728222, -1080184, -744640, -1686848, -5445482, 256624, 3979824, 3969087, 7381975, 3410204, --9603547, -8009041, -6951405, 335007, -1146756, 557809, -3770445, -2319282, -556198, 2974265, --3758, -6129992, 6710350, -905701, -6167573, 1318555, 1498944, -77846, -562104, 2733210, -3567507, -2161979, 5434744, 318901, 3196530, -7316477, 5272609, 1916092, 3052648, -5018670, --527207, 3760244, 3201898, 8099772, -272194, -11057930, -3011309, -5268315, 2631204, 1854889, --433792, -2911451, 874563, -4501126, -1589675, -8241506, -4859756, -222801, 4644471, 5214091, --3700114, -3129421, -3240553, 5358509, -1788317, -593779, -7948374, 4861903, -7845295, -2671470, --323196, -1602560, -2119030, 8427800, -695785, -1883343, -2223719, 1722282, -5028333, 643708, --8731669, -6966437, 2575370, -2389613, -1293859, 3190087, -1571958, 4235375, 832687, 1981591, -2946348, -717796, 1427540, 1025423, 550293, -548145, 1080721, 502511, 271120, -580894, --682900, 241592, -2557653, 23085, 1611687, 456877, -96637, 377420, -1570884, -435402, -960999, 595390, 2575370, 751619, -321049, -331786, 2371359, -2760590, 4246649, -3163244, -144955, 5805185, 10460393, 7275675, 1675037, -7943005, -5919002, 2304250, -1243393, -5046050, --1556389, -6539625, -2725157, 13545253, 1695975, -1294933, -2351495, 141197, -2973728, -2025614, -9215389, -9277666, -961536, 1060857, -1863479, 2492692, 5634460, -2390149, -2947421, 1517197, --3702262, -3630858, -8596914, -3111704, 2509872, -7704098, -1159104, 4014721, 6055367, 2226941, --12130598, -3580392, 2625299, 6319508, -4663261, 10813654, -1087701, -5298916, -2867428, -2188823, --4063576, 5934034, -4184909, -1035087, -5576478, -4378719, -1944010, -4454955, 6306623, -2138894, --12152610, 4826470, 8429410, 231928, 3152506, -14847702, 11848741, 332323, -9647033, 1110786, --6460705, -1286880, 1206886, -7004018, -8186745, 5669894, 2767033, -7118909, -323733, 297963, --4306779, -448824, -1482838, 1230508, -3801046, -1935957, -613107, -1864553, -832687, -2808909, -1133871, -82141, 1678259, -3064996, 923955, 1903744, 133144, -1695975, 1341640, -1643362, -1846836, 1466731, -1163936, 1432909, -66572, -820876, -250182, 568546, 824097, 489626, -472446, -10926934, 2651069, -8005282, 8872329, 2372970, -3158949, -6433861, -11377905, -4863514, --8192113, 3037079, 16302085, 2906619, -4020626, -91268, -2037425, -2330557, -7093139, -4627828, --7306813, 2182380, -382789, 1797981, -2437931, 1396401, -7727183, -389231, 1995012, -5226439, --1795833, 831076, -2746095, 927713, -2511482, 12066174, -14372034, -2444373, 1372242, 4065724, --1311039, -5835250, -8738111, -6189585, 4985384, -1130113, 5510443, -4390531, 14002667, 1952600, --2479807, 6979, -8002598, -10344966, -5096516, 4117800, -8750459, -402116, 10715943, -153545, --4776004, -9841381, -16669305, 838592, 8861591, -2260227, 10139881, -763430, -2907156, -6098317, --5305895, 1101122, 4153770, -3049427, 14617921, 4484483, -4417911, 2347737, -5710696, 2305324, -2936684, -1854352, 3336653, 5965173, 2697240, 393526, -3652333, -10469520, 930397, -2287070, --848256, -1499481, 983011, 342524, 84826, -4569309, 963683, -2575370, 1105954, -2537789, --650688, -585189, -12885, -136902, -279710, -1800128, -1467805, -1983738, -2825015, -3162170, --1124745, 258235, 1097901, -1620276, 191126, 185220, 562104, -1217086, 1405528, -2199560, --89657, 9384504, -4245575, -11045582, -3080565, -8274255, -4341138, -3648575, 11524471, -3012383, --3963718, -4996658, 7384123, 6602439, 5848672, 16266115, 17079474, 7835631, 10592463, -4123169, --4999342, 6981470, 10454487, -4679904, 4562866, 3133179, -9193914, -8764955, 5049808, -1386738, --166967, -8750459, -11013907, -2732136, -8935679, 9932649, 18751828, 3755949, 7373385, 2033667, --2255395, 6587406, -12883828, -3563749, 2631204, 7023882, -4267050, -10506027, 15108621, -165356, --4685810, -3838627, 6182069, -1996086, 5509370, -3927748, 8666170, -870268, -254477, 10598369, -3313567, 4810900, 1906429, -1782948, 8000987, -12367895, -4922033, 4423817, 13807783, -8561480, --996969, -1867237, -1965484, -5917391, -1285806, -3145527, -3978214, -722628, 917512, 3749507, --1635846, 10940355, 4036196, -6533719, -1544578, 666794, 4232691, 1335735, -1930051, -4011500, --841277, 2284386, -2473901, -2336462, -1891396, 2103460, 1422171, 2072859, 1177895, -2221572, --803159, -112743, -2054068, -537945, 1625108, 816581, -242666, -2478733, 3046206, -602369, -1903207, -1468879, 944356, -2857227, -237834, -585726, 150861, -1973538, -565325, 6774774, --6793028, -2677375, 6107444, -4885526, 2600066, 4589710, -9245454, -9851044, 2717641, 7439420, --2626909, 6786585, -5057861, -2259153, 12965433, -14845018, 8836358, -4265440, 25233, 345745, -16025060, -3633006, 3099356, 5071283, 8790724, 5142150, 7689602, -1340567, -1335198, 2491618, -1164473, 1247688, -7863012, 12039867, -16206522, -3593277, -4332549, 8960376, -1905355, 10930155, --595927, 993211, -19271518, -5303748, 11599633, 19838454, -275415, -9904731, -8405788, 8127152, -6471442, 4902169, 4589173, -8492761, -3968013, -4930086, 2485176, 327491, -5295158, 3030100, -2571612, -2455648, -2761127, -11602854, -3152506, -4274030, 16442209, 1489817, 3016678, 6247567, -394600, -12975633, 542777, -7820062, 6363531, 15426986, -8294656, 4757750, -2462090, -8035347, -3770981, -6737193, -1269700, 2790118, 1970316, 3523484, 1384053, -571231, -3047816, 3336116, -7131257, 1209033, 3476776, 5950141, 2539400, 6730214, -2148558, 6367289, 204548, 148176, -1272384, 712428, 1713692, -193274, -3249680, -1738925, 15569, 1711545, 1675574, -1217086, -2966212, 2935073, -2586107, 4148402, 7115687, -11887933, -4494684, -4392678, 2418067, -565325, -18011482, -2120640, 755914, 11475079, -9990094, -7228430, -9357123, -9814537, -2278480, -243739, -4597763, 19245748, -1619203, -10889353, 19937776, 443992, 5673115, 13654238, 9467719, 12750147, --3173444, 10095858, -6313065, 13340168, 11696270, -3022046, 6158446, -5210869, -4809827, 5107253, -15269682, 6927246, 6117107, 2253247, -4697621, -8255464, -8380555, 1489280, 10540923, -5950677, --7158637, -8850854, -3269007, -17649094, -4032974, 3508452, -12914967, 6412386, 1059246, -5849209, --15192373, -10142565, 148176, -20224464, 6502581, 4600447, -321586, 5763846, 3811247, -1883880, --10460930, -6316287, -1066226, -6611566, 6386080, -6933688, 16959752, -11237245, 725850, 7487739, -777926, -4972499, -19298362, 3479997, 9647033, 2399813, 682900, 10630044, 5938866, -5945309, -133144, -609349, 914828, -337155, -3231963, -6750615, -1917703, -7301445, 541166, 1941325, -1030792, -1823214, -3694209, -1679869, -2423435, 3302830, 1097364, 4292820, 3124052, 2504503, -1056025, -256624, -1326608, -1210107, -3219078, 1633161, 348966, 1626719, -1488206, -133681, --2672007, 267899, -2061047, 955093, -24850144, 8686571, 11303817, 19910394, -88584, -14839649, -4150012, 7107097, -15364709, -15974594, -9996536, -421444, 8484708, -467078, -6276021, -352724, --5495411, -3704946, -9916006, 16483548, 12865038, 4830765, -20273320, -6089190, 3227131, -1174674, --4536559, 25604984, 9361418, 8032126, 7515119, 12144020, 9099425, 2204392, 9528385, -669478, --15935939, 8592619, -16392280, 4984847, -16229071, 13670881, -4311074, 16511465, -9044664, 4002910, --7320772, 5944772, 9640054, 25212532, 5305895, -32085016, -1725503, -4473209, 6861211, 14006962, --2863670, -6237367, 10274099, -1827509, -5083631, 13799730, 849330, -617938, 674847, 5908265, -11018202, 8741869, -9517111, -7059316, -6013491, -9631464, 2232309, -892816, 10893111, 7846369, --14757508, -3554086, -8359080, 7148973, -4082367, -3935264, 2554969, 480499, -5699959, 4870493, -1164473, 811749, -861141, 2771865, 2844879, 460635, -8362302, 2333241, 1435056, -1067299, --1492501, -2768107, 85899, -3704409, 1700270, 4191351, -1293322, -1236951, 4087198, 648540, --3848291, -2928631, -709207, 2007897, -1687385, -390842, -2374043, 640487, -1593433, 28991, -3928821, -2633889, 620623, 27079768, -10191421, -17959406, -5683853, 7089918, -4404489, 13042742, -18842022, -7504382, 17284022, 11147051, 8711804, -2791729, -2030983, -3416647, 16765405, 3114925, -2059974, -9674951, 4282620, -5027259, -381715, -16015396, 10938745, -14690399, 111669, -10343355, -17484274, -8850317, 433255, 17295834, 13142600, 8920647, -1010928, -6773701, 8052527, -183610, --1505923, -21936546, -6492917, -13221520, -10756746, -8358007, -3932043, 11514270, 7232188, 6745783, -69793, 16914118, -8877697, 17894982, 15708843, 16885128, 29445758, -11290395, -8829379, 13006235, -2476049, -11330124, 17783848, -5757404, -8524436, 5837398, -2152852, -6072010, -5037460, 7701413, --10248866, 4748087, -6334540, 16377247, -6891812, 337155, 4796942, 11964705, 16190416, 1376000, --14064944, -15242302, 5048734, -10127533, -32846300, -17227650, 5286568, -289373, 9550397, 1297617, --5353677, -542777, -3092377, 1479079, -5666673, -2428267, -3877819, -1565516, 487479, -627602, --10233833, -2616172, -6689412, -5961415, -4707821, 2170569, -438087, 499827, -7440494, -5132486, --242666, -204548, 1497870, 3937411, 3206730, 2434173, -5341866, 343061, 1267552, -6878927, -2492155, 491237, 3068754, 1457605, 3904125, 2258079, -1536525, 3348464, -2454574, -1780264, --726386, -24799678, -20899848, -621160, 4884989, -14141180, 1053878, 1695438, 23841900, -14877230, --17080012, 6075768, -6962679, 379568, -12371116, 12580496, -12575664, -16985522, -10117332, 20509542, --13306346, -10794863, -2176475, 8569533, -5607080, -14010720, 4877472, -5431523, 488553, 6969658, --18615462, -1025423, 10937134, 17336098, -2168959, 26283590, 11747809, -2540473, 1553168, 12176232, --4443144, -10112500, 2399276, 14426258, 1964948, 7138773, 717796, -11068131, 4370666, -24787866, -2696703, 1779727, -2806761, -14431090, -13070122, 2047089, -5742372, -9779104, -6422050, -7792145, -10049150, -16184511, -9068823, -4373351, 7626252, -9352291, 20755966, -2651069, -16699370, -1068910, --9777493, -26721676, -7710540, 2209224, -419833, -17214766, -9006546, -3610457, 4424890, -10062572, --4793184, 17806934, -5779952, -23322746, -7943542, 3488050, 2226404, 8216810, 7008850, 5338645, --5104569, -6480569, -1232119, -4401805, 3877282, 1461363, -2630668, 5498632, 2531883, 3405372, --1636919, 2866354, 2250563, 405338, -594316, -1337346, -1786170, 464393, 1795833, -8016557, -2228551, -4432943, 5844914, 2431488, -5820218, -5103495, -59593, -3950296, -216896, 2207613, --1157494, -2527052, -4204236, -3091303, 2867428, 1332514, -4815732, 2389076, 974958, -3058017, --2539400, -5567352, 18974092, 16934520, 4880157, 34952444, -6824166, -12560632, -11308649, -5417028, --19262392, 25382182, -15650324, -5850283, -12737262, -6657736, -6150930, 2789045, -18351858, 51003, --105227, -2714419, 4810900, -19294604, -5166846, 12867185, -13313862, 501974, -17137456, 15925739, --236223, -28861106, -15206869, -5387500, -955093, 7776575, -17750026, -9948218, 11603928, -2227478, -7903277, 7415798, 7138773, -10618770, 805843, 12508019, 4323422, -23822572, 14885820, 10853919, --13157095, 36181340, -1016297, -26229366, 6859600, 8096014, -940598, 19252728, -6307697, -32533840, -8773544, 4517232, 9342628, 11376295, -15178951, 23323820, 8454106, 7176891, -5944235, 35392680, --3097745, 508954, 23851564, -4237522, 10672457, 19085224, 6191196, 2773475, -4990215, 9135395, -8053, 16138340, -7517267, 15712601, 14083198, 817118, 13925895, 8516383, 11010149, -5871757, --442382, 13050795, 9032853, 6993818, 3803194, 4445291, -9069897, -1045825, -3758, -4064650, -117038, -1486059, -4138738, 7577396, -8234526, -1486059, -8092792, 6614787, -3704946, 7934415, --7209640, 1116155, -5165772, -6657200, 4176319, -2521683, -639950, -6482717, -10152766, -7140383, -7003481, 765041, -3572876, 846109, 8820789, 6826314, -3324842, 3352759, -386547, -2533494, -9113921, 434329, 5782100, 7078643, -25146496, -24675660, 50556596, 16301548, -31624918, -15902653, --14525043, -28945932, -2185602, -15280420, 21030844, -11919608, 62814, 26272314, 521302, 4361003, --19399294, 24226836, 18008798, -317291, -5896990, -1889786, -15100031, 1144609, 1854352, 3077344, --20735028, -3004330, -1258962, -6215355, -4669167, -14241575, 13434658, 26760868, 32060858, -2601677, --13088376, -5412196, -6731288, -4482872, -19798726, 6732361, 7625715, 7099044, -20634096, -27404038, -29566554, 11229192, 16518981, 21572010, 20107426, -8719857, -13901735, 19528680, -19929186, 10103911, --14942191, -11344619, -6722161, 23236846, -7791071, 4762045, 7867307, -4175782, -18861886, 38832408, --23555748, 2464774, 27979028, -25368224, -11618423, 3053185, 10162429, 28943784, 5061619, -16681116, -365072, 3591667, -4039417, -6958921, 4041027, -11653320, 8872329, -9630390, -13755170, 7439420, -4015258, 10481331, 4556424, -289910, -4854387, 1267015, 2786360, 3304441, 10994043, -541166, -1412507, 7012608, -16588237, 2476049, -7546795, 1920387, 1703491, -2542084, -6365679, -7601019, --2025077, -7624104, 2901251, 4338454, 9368934, -703301, -6510634, 6205154, 7223598, 4630512, -4356171, -11694659, 261456, 3142842, -3093450, 10355166, -3983045, 936303, 922881, 9588514, --4656282, 3000035, 13113609, 13173202, -8402030, 8269423, 33724084, 20332912, -3025805, -21566642, -2278480, 34583612, 27539330, 5816997, -27341224, -10517301, -23602456, -1741072, 18504866, 22857816, --1656784, 8702677, 27160836, 28908888, 44841068, 45142792, -22509924, 9841918, -24308442, -4375498, --19702088, -7060390, 15570330, -3455301, 6828461, 6140193, -13993003, -10238128, 11464878, 12787191, -16575889, 11795591, -536871, 12160663, 18294950, -9642202, 9277666, 10808822, 3234110, 10557566, -34984120, -26237956, -22592064, -5057861, 21628382, 20735566, -12270722, -120259, 33214592, 26877906, --18775450, -12503187, 11435350, -22925998, 6420439, -11010149, -20799990, 6775311, -24443732, 25475062, -9378061, 28215788, -11793980, -16430934, -31786516, -6841346, 10435697, -27837830, -23816130, -13013751, -12503187, 7428683, 5907191, -12232067, 5375689, -8738648, 3428995, 25959856, -10979010, 3095598, --14645838, 11179263, -6008659, -12285754, 8763881, 12150462, -6674916, -3419868, -3929895, 8745090, -19377818, -6127845, -12932683, 345745, -179315, -4748087, -2004139, -17942226, 2557653, -9501541, --4225711, 6592238, -5814849, -3133179, -467615, -4920422, 8004209, -7837242, -12410845, -11231876, --9460739, 10208600, 5404680, -2238215, 4556961, 3101503, -8007430, -8738648, 3365644, -9320079, --996432, -16200080, 12858058, 33444910, -2618856, -10919417, 21319144, 4041027, -1684164, -32685774, -27900644, -14415521, -31077846, -10842645, 1644973, 34898756, 2955474, 24887724, 9835475, -30410516, --6947647, -26990112, 3835406, -26903676, -19467476, -11794517, 903554, 5140539, -20950314, 19713364, --6928856, 11812771, 12727062, 12596602, 24002962, 44144212, 25723096, -8929774, -22354768, -1190780, -46498388, 28813324, -16410533, 22939958, -9432822, 28115392, -14608794, 2348810, -11045045, -5688148, --2029909, -8440684, 70099768, -13838385, -19899658, -22924924, -32079648, -12596602, -24823838, -1507534, -26825828, -11275900, 7618735, -9495099, -14343043, 24377698, -7330436, 41355168, 7307350, 32996624, --41250476, 16396575, 71271760, 25678536, -40425304, 23396298, 21372294, 902480, 4196183, -12668543, -13230110, 62536336, 33044942, 13718126, 18663780, -20097762, 36005248, -4218195, 5174362, 5375152, -8570607, 3820374, 23540716, -20203526, -5363878, 1321776, 30130270, -5558225, 7074348, 34983044, --3200825, -20090246, -4966593, 12611635, 1735167, -8726837, -20369420, 11212012, 7918309, -14141717, --8480950, 9126269, -17291002, -14445049, 4162897, 6629282, -459562, 4483409, 2919504, 5308580, --6585259, 5569499, -4163434, -5442261, 5116917, 1959579, 7233262, 1270237, 49086644, 22958210, -5514201, -1468342, -53490060, 25012278, 33659660, -24167244, -17597554, 41599980, 27117886, -33199024, --35286376, 1295470, -20618528, 9035001, 3438121, 8628589, -33172716, 8730595, -6437619, -16474958, -29504814, -1993939, -4900021, 9976135, 24739012, 22286048, 15211700, -28338194, 624381, -13793824, --30271466, 11098732, 8571144, 18717468, -6397354, -14049375, 38737384, -27742804, 12277164, 13527536, -10941429, 8389145, -4818954, 22969486, -21242908, -36604396, -6169184, -41938744, 36870148, 22737020, -36178120, -2849711, 7109782, -29143500, 30376694, 38402376, 13732084, -16221555, -42973296, -9803263, --56688200, 911607, -10579578, -38356204, -32639604, 15006079, 2353105, 23721104, -18323404, 27182312, -22767084, -32075890, 6772627, -19127636, -5478768, -28967406, 3647501, 84664544, 21050172, 24902758, -30935576, 13914083, -24062554, -3207804, -402653, 20162724, -4671851, 20718922, -9413495, -12613245, -428423, -1336272, -23790360, 20496658, -3852049, -5706938, -7442105, -16502875, 2297271, -7728257, --10705743, -15320148, -12251394, 7660611, -8880919, 7510287, 8304856, -5780489, -10000831, -13190381, -5989869, -2254858, 5564667, 20565914, 12589623, -59593, -1822140, 6717866, 12619151, -12421582, -11109470, -12517682, -9677635, -6501507, -34489124, 14126684, 10612864, -16615081, 4898947, -8913131, --51514912, -14174466, 11923903, -6641630, 4959614, -29046864, 36325760, -49384608, 3209951, -36374616, -24137716, 26567594, 8295730, 22110492, 1924682, -24241332, 39485780, -19462644, 3626026, -131533, --23657754, 37287296, 2057826, 9114457, 7752953, 11120744, 5755256, 27750858, 33030446, 10596758, -38691748, -34850440, -3179887, -719407, 49633180, -10327249, 39464308, 21613886, 54438712, 10096931, --13014825, -18253074, 21309480, -41828148, 38262252, -24119462, -14373645, -7216619, 7292318, 28703266, --7417409, -54010824, -15349676, 85661512, 5865315, -55067924, 12903692, -36701032, 10173704, 84393424, --23939074, -23976654, 58525908, -64404644, 31655520, 13942538, 18722836, 54732380, 34507916, -49932752, -60109676, 39291436, 1305670, 64012728, -27099634, -9491878, 46292232, 30275224, 5084168, 12001212, --568009, -1190243, 5151277, 15524696, -15023796, 16444893, 16928614, -15033459, 7057705, 11306501, --21284784, -2423972, 7280507, -2430952, 3460670, 25904022, -54224, 17108466, -9767293, -209917, -12269648, -8435316, -7130183, -17749490, 2492692, 15392089, 10087268, 14481556, -28314036, 15183783, -17725330, 7885023, 2720862, 7182259, -1742146, 16224239, 29122562, 6929930, 13814762, 13231720, --7295002, -8043937, 13629542, -17837536, 6533182, 21031382, 28759638, 55328304, 27262842, -27252104, -35153232, 10227928, 31649614, -9737765, -60189672, 60170344, 52056076, 31911070, 98784248, -9691057, --83984328, -43519292, -39964672, 87743496, 64167348, 15281494, -6236830, -16480863, -58941448, -28051506, --19541564, -33848100, 89034672, 72438920, 100494184, 1557999, -116409184, -180537344, -88581016, 100124280, -134815808, 138098768, 55082420, -114971976, -211450896, -129483600, -65932580, 96991632, 164600320, 93664648, -50338628, 13450764, -75295072, -100406136, -75722960, -5835250, 57402236, 117700896, 140162496, 24905978, -26817238, -111965504, -186105760, -98952824, 91629368, 154969392, 146244704, 91710440, -54681376, -180370912, --117513528, -151249424, -196495, 102584224, 110147656, 55569896, -44787384, -94945080, -84919560, -66521528, -18937048, 63230508, 43695924, 127927208, 45457932, -28587302, -76354856, -28027346, 84505632, 124579824, -41313828, -4802847, -76911592, -15412490, -17837000, 49240188, 17942762, -12469901, -53335440, -15726023, -2281165, -8392366, -16450262, -3366181, 11846057, 26725970, 44409424, 21805012, -44923212, -39390220, --37584184, 8978629, 46812996, 52789444, 23822572, 5743982, -34235720, -14410689, -66530656, -58237608, --5582384, 17456894, 72030896, 109260208, 40970768, -37848324, -90406912, -111916112, -47491064, 88172456, -144818240, 99920800, 29904246, -72689640, -119256208, -57994408, -702227, 21912924, 21101712, 50888920, -25439628, 11517492, -30572114, -63838248, -48721036, 7090454, 32094680, 64072860, 29829084, 11056856, --12150999, -31938450, 37855840, 5827734, -53692460, 7426536, -13616120, -21278342, 16786342, -16189879, --6130529, -28504624, 2188286, -10580652, -21129092, 9181029, -1918777, 7778723, 4045859, 18529562, --17121350, -5411122, 6003291, 2517388, 8926553, -6978785, 18712636, -12224014, 13084081, 6497749, --5253282, -12865575, -5164162, -24596740, 28038620, -1894618, 1584843, -4172561, -5863704, 2108292, --115427, 1313186, 11278584, 6924561, 386010, 15977815, -12577812, 5355824, -11904039, 14426258, -9150965, -9822053, 8051453, -12125230, -13627931, -11005854, -21403432, -1803349, 17364016, -14576045, --29368450, -20046760, 2523293, 18916110, 1098438, 14237817, -27907086, -6989523, -2609193, -2087891, --27269284, -6515466, 1651415, 4568235, -9313100, 29637958, 12458090, -9006010, 27602682, -2261300, --47400868, -1620276, -6295349, -3956739, 9984725, 6454262, 13495324, -14696304, 21387326, -35038344, -10917807, 6569690, -781684, 301721, -1591822, -2139431, 12566537, -1938641, 2807835, -5047661, -187905, -10106058, 3364033, 326954, 21368536, 66035, 9873593, -9291625, 1882806, -4565014, --11463268, 3988951, 433255, -5847061, 15475304, -2610266, -3069291, -5787469, 11564199, -3934190, --19683836, 4363687, -3278671, 6480032, -7937100, 1064615, -1750199, -12363063, 12310450, -10934450, -8729521, -10452340, 6394133, -869194, -3150359, -6048925, -28829968, -47554952, -74947176, 3175055, -62592704, -23360864, -37768868, -40370008, -38153268, 8489540, 8391829, 72116792, -9980430, -9842454, --31503048, 4024921, 10085120, 23025320, -23592256, 12603045, -17058536, 28530394, 9323300, 9658308, -3749507, -16996796, -9134322, -10910291, -3395709, 10637560, -10170483, -8799851, 20153598, -17597018, --10926397, 16844324, -15226196, -5239323, -13024488, -21328270, 8052527, 14805826, 2968359, 13981729, --20184736, -4730370, -278636, 12395276, 15060303, 18757196, 1598802, -1411971, -30537754, -31205622, --11414949, -9778030, -6629819, 15065672, 20251308, 28673202, 3409130, -12346420, 28532542, -19661286, --8725763, 13080860, -8551280, 37593848, 2174864, -5658620, 6565395, -13025025, 11034308, 26209502, -21325586, -7075959, 8238284, -24429774, -16023449, -8732205, -5896453, 19041738, -2136209, 18606336, -5063767, -5427228, 2428267, 3768834, -21383568, 13401909, -15765751, 10484552, -7104950, -3987340, --884226, 12331388, -11001559, 1928977, 2220498, 10837276, 18317498, -8680666, -2469069, -13859323, --5554467, 5487895, -5433671, 4468377, -4202089, -5373541, -9772124, -15185931, -8433168, 14825690, --5407901, 7559680, -10084046, -1882269, -615254, -2758980, -9024800, -3653944, 1245004, -573915, -326954, 517007, -13766444, -1792612, -2968359, -2401961, -18254, -331786, -458488, 19676856, --48499844, -113441360, -86673512, -9976672, 37591164, 97933304, 82705504, 78947408, 80641768, 53213572, -22452478, -29025388, -51478940, -98328984, -72421736, -71191768, -70950176, -44144748, 42890616, 57752816, -84897544, 65158412, 54626080, 18022220, 36456756, -8178155, -9375377, -11425150, -19862614, -37238976, --30461518, -62727996, -22797150, -49818400, -23684598, -11780022, 16371878, 3266323, 23402740, 5402532, -32754494, 24040542, 39611948, 52576844, 65375844, 41773924, 28128814, 46410344, 3648038, -15801722, --57268556, -67242544, -92423936, -82455320, -77014136, -29546154, -50523312, -26491358, 3172907, 13933411, -32726578, 62279172, 66469452, 74185896, 112173272, 63084480, 85959472, 59528248, 13653701, -9144522, --35116728, -89731528, -98018672, -93437552, -103546296, -76134200, -52995064, -42642584, -11571716, 21776022, -36666136, 46416784, 69224672, 73356968, 77413024, 72982232, 45637784, 31731218, 15218680, 1593433, --84289, -22115860, -35942972, -52172580, -61844308, -65848292, -62116500, -43814572, -19519552, -17706002, --6530498, 11581916, 31139050, 38534984, 73295224, 51481088, 40880036, 40605696, 14847165, -1808718, --10393284, -13100187, -13606993, -35614944, -31688806, -23176718, -23957864, -17803176, 2532420, 5350456, -7217156, -4462471, 11850352, 140660, 13989245, 14011794, 4878009, -5135171, -357556, 2819646, -2206003, 1956895, 6767795, 1156957, -3025268, -10609643, -2102923, 1983738, 8053, 6002754, -5268315, -1473711, -657130, -4804995, -3190087, -2823941, -1261110, -2446521, 1765232, -1743757, --617402, -950798, -2094333, -4354023, 29528, -464393, 2777233, 5421323, 4323959, 2544231, -3782793, 185220, 380105, 331249, 1015223, -1130650, -767725, -1467268, 365072, -576063, --2053531, -2494302, 231391, 163209, -239444, -2229625, -2304787, -2415919, -2183991, -1312649, -1249836, 1064078, 2116345, 2105608, 2078764, 129923, 1161789, 821949, 1349694, 1102733, -2400887, 1823214, 1890859, 54224, -1342714, -2214056, -1748052, -2559801, -2193118, -2351495, --1880122, -2445984, -1537598, -900869, 12348, 423054, 1247151, 1659468, 2736431, 2810519, -3400004, 2326799, 1705639, 797790, 542777, -890669, -1589675, -2235531, -2376191, -2357937, --1411971, -1159104, -619549, -324270, 166430, 182536, 581431, 563178, 661962, 550293, -535797, 281857, 249108, 101469, 90731, -9127, -37581, -84289, -87510, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +8022462, -569620, 3258807, 1661616, 3830037, -6724845, -3609920, 4388383, 2147484, 88584, +-3718368, 812286, -10456635, -6720550, -320512, -3990025, -4514011, 1911797, 8252243, 1416802, +6294812, -1408212, 6221797, -3649112, -3246459, -372588, -5529234, 1145146, 2816962, -1977296, +-89657, 1484985, 308164, 2552821, -253403, -5929739, 2180233, -3661997, -2742874, 1710471, +-3629784, -5531918, 5584531, -5806796, 5316633, 4955856, 3285650, -233002, -6809671, -3957812, +814970, -1264868, 8863739, -5371931, 2188823, -670015, 1209033, -6649683, -11104638, -1941862, +-3304441, -3695819, -835908, 4733591, -980863, -5003637, 4450660, 1895154, -2194192, 3704409, +-678605, 1125281, -5090073, -403190, -1240709, -64961, 2005213, -2332167, 1632088, -4677220, +3208341, -721018, 375810, -1701881, -1513439, 29528, 1963874, 713501, -27917, 747861, +4295, -2819109, 855772, 234613, 1815697, -282394, 100395, -4832, 80531, -178241, +-973884, 4328254, 4318053, 651224, 7749195, -41876, 3374234, 4183298, -1074, -3714610, +442919, -5296769, -6789807, -2553358, -7743826, -8002598, -2569464, 5330055, -1839320, -1791538, +-4137664, -1020055, -7272990, 3619584, -1999844, 1847373, 4449586, 1529545, -1489280, 3060164, +2920578, -3538516, 2538326, 366146, 718870, 2715493, -6334003, -2722473, 4582730, -2867428, +-154619, -1811939, 5080947, -6404333, -477278, -5359583, 3554622, -288837, -336618, 4902169, +-2045478, -2310156, -1622961, -4523138, 387084, -2033130, -299574, 329639, 3161096, 3176128, +1123671, -1371705, -5310190, -8765491, -2661269, -585726, -2107218, 4749697, -1840394, -2686502, +3839164, -2406792, -3703873, 8366060, -1745367, -4645544, -350577, 786516, -1329292, 4134980, +-463320, -3659849, 125091, 179852, -721555, -1090922, 3345780, 755377, 535260, -1937030, +481573, -580357, 296890, 1290101, -210453, 736587, 1595580, 203474, -230318, -316217, +722091, -1845225, -614180, -362388, -775778, 779537, 720481, -297427, 8885750, -5735392, +-2732673, -4163434, 3266860, 592706, -452582, 6397891, 1497870, 1841467, -9397388, 1676648, +-4410395, -5117454, -6642167, -153008, 187368, 7781407, -6446209, 2916820, -2733210, 9633612, +-3540664, -3248606, 6833830, -2674691, 2324651, 998043, -508954, 1097364, -4669167, 710817, +164819, 1913408, 9041980, 3131568, 795643, -3921842, 3128347, -7105487, -2015950, -1389959, +3816079, 3273302, 5439576, 3569118, -4176319, -6095096, -2700998, 4596689, -625455, 2370822, +-1031866, -701153, 9188009, 2149631, -760209, -11067594, -4982162, 257161, 3779571, 5876589, +8249559, 4626217, -2067490, 1462436, -2097555, -2850248, 5900212, -3782793, 6075768, 255014, +-5606006, 1974074, -2920578, 4767951, -4178466, -493384, 4099546, 4758287, -4859756, -1859721, +-970126, -1984275, 2811593, -664109, -2118493, 1308891, 624918, 712428, 737661, 1140851, +556198, 675921, 235686, -360777, -490700, -1789391, 2686502, -120796, 90731, 303332, +-33823, 427349, 1396938, 1422708, -143881, -386547, 1758252, 1390496, -191126, 1161252, +4728222, -1080184, -744640, -1686848, -5445482, 256624, 3979824, 3969087, 7381975, 3410204, +-9603547, -8009041, -6951405, 335007, -1146756, 557809, -3770445, -2319282, -556198, 2974265, +-3758, -6129992, 6710350, -905701, -6167573, 1318555, 1498944, -77846, -562104, 2733210, +3567507, -2161979, 5434744, 318901, 3196530, -7316477, 5272609, 1916092, 3052648, -5018670, +-527207, 3760244, 3201898, 8099772, -272194, -11057930, -3011309, -5268315, 2631204, 1854889, +-433792, -2911451, 874563, -4501126, -1589675, -8241506, -4859756, -222801, 4644471, 5214091, +-3700114, -3129421, -3240553, 5358509, -1788317, -593779, -7948374, 4861903, -7845295, -2671470, +-323196, -1602560, -2119030, 8427800, -695785, -1883343, -2223719, 1722282, -5028333, 643708, +-8731669, -6966437, 2575370, -2389613, -1293859, 3190087, -1571958, 4235375, 832687, 1981591, +2946348, -717796, 1427540, 1025423, 550293, -548145, 1080721, 502511, 271120, -580894, +-682900, 241592, -2557653, 23085, 1611687, 456877, -96637, 377420, -1570884, -435402, +960999, 595390, 2575370, 751619, -321049, -331786, 2371359, -2760590, 4246649, -3163244, +144955, 5805185, 10460393, 7275675, 1675037, -7943005, -5919002, 2304250, -1243393, -5046050, +-1556389, -6539625, -2725157, 13545253, 1695975, -1294933, -2351495, 141197, -2973728, -2025614, +9215389, -9277666, -961536, 1060857, -1863479, 2492692, 5634460, -2390149, -2947421, 1517197, +-3702262, -3630858, -8596914, -3111704, 2509872, -7704098, -1159104, 4014721, 6055367, 2226941, +-12130598, -3580392, 2625299, 6319508, -4663261, 10813654, -1087701, -5298916, -2867428, -2188823, +-4063576, 5934034, -4184909, -1035087, -5576478, -4378719, -1944010, -4454955, 6306623, -2138894, +-12152610, 4826470, 8429410, 231928, 3152506, -14847702, 11848741, 332323, -9647033, 1110786, +-6460705, -1286880, 1206886, -7004018, -8186745, 5669894, 2767033, -7118909, -323733, 297963, +-4306779, -448824, -1482838, 1230508, -3801046, -1935957, -613107, -1864553, -832687, -2808909, +1133871, -82141, 1678259, -3064996, 923955, 1903744, 133144, -1695975, 1341640, -1643362, +1846836, 1466731, -1163936, 1432909, -66572, -820876, -250182, 568546, 824097, 489626, +472446, -10926934, 2651069, -8005282, 8872329, 2372970, -3158949, -6433861, -11377905, -4863514, +-8192113, 3037079, 16302085, 2906619, -4020626, -91268, -2037425, -2330557, -7093139, -4627828, +-7306813, 2182380, -382789, 1797981, -2437931, 1396401, -7727183, -389231, 1995012, -5226439, +-1795833, 831076, -2746095, 927713, -2511482, 12066174, -14372034, -2444373, 1372242, 4065724, +-1311039, -5835250, -8738111, -6189585, 4985384, -1130113, 5510443, -4390531, 14002667, 1952600, +-2479807, 6979, -8002598, -10344966, -5096516, 4117800, -8750459, -402116, 10715943, -153545, +-4776004, -9841381, -16669305, 838592, 8861591, -2260227, 10139881, -763430, -2907156, -6098317, +-5305895, 1101122, 4153770, -3049427, 14617921, 4484483, -4417911, 2347737, -5710696, 2305324, +2936684, -1854352, 3336653, 5965173, 2697240, 393526, -3652333, -10469520, 930397, -2287070, +-848256, -1499481, 983011, 342524, 84826, -4569309, 963683, -2575370, 1105954, -2537789, +-650688, -585189, -12885, -136902, -279710, -1800128, -1467805, -1983738, -2825015, -3162170, +-1124745, 258235, 1097901, -1620276, 191126, 185220, 562104, -1217086, 1405528, -2199560, +-89657, 9384504, -4245575, -11045582, -3080565, -8274255, -4341138, -3648575, 11524471, -3012383, +-3963718, -4996658, 7384123, 6602439, 5848672, 16266115, 17079474, 7835631, 10592463, -4123169, +-4999342, 6981470, 10454487, -4679904, 4562866, 3133179, -9193914, -8764955, 5049808, -1386738, +-166967, -8750459, -11013907, -2732136, -8935679, 9932649, 18751828, 3755949, 7373385, 2033667, +-2255395, 6587406, -12883828, -3563749, 2631204, 7023882, -4267050, -10506027, 15108621, -165356, +-4685810, -3838627, 6182069, -1996086, 5509370, -3927748, 8666170, -870268, -254477, 10598369, +3313567, 4810900, 1906429, -1782948, 8000987, -12367895, -4922033, 4423817, 13807783, -8561480, +-996969, -1867237, -1965484, -5917391, -1285806, -3145527, -3978214, -722628, 917512, 3749507, +-1635846, 10940355, 4036196, -6533719, -1544578, 666794, 4232691, 1335735, -1930051, -4011500, +-841277, 2284386, -2473901, -2336462, -1891396, 2103460, 1422171, 2072859, 1177895, -2221572, +-803159, -112743, -2054068, -537945, 1625108, 816581, -242666, -2478733, 3046206, -602369, +1903207, -1468879, 944356, -2857227, -237834, -585726, 150861, -1973538, -565325, 6774774, +-6793028, -2677375, 6107444, -4885526, 2600066, 4589710, -9245454, -9851044, 2717641, 7439420, +-2626909, 6786585, -5057861, -2259153, 12965433, -14845018, 8836358, -4265440, 25233, 345745, +16025060, -3633006, 3099356, 5071283, 8790724, 5142150, 7689602, -1340567, -1335198, 2491618, +1164473, 1247688, -7863012, 12039867, -16206522, -3593277, -4332549, 8960376, -1905355, 10930155, +-595927, 993211, -19271518, -5303748, 11599633, 19838454, -275415, -9904731, -8405788, 8127152, +6471442, 4902169, 4589173, -8492761, -3968013, -4930086, 2485176, 327491, -5295158, 3030100, +2571612, -2455648, -2761127, -11602854, -3152506, -4274030, 16442209, 1489817, 3016678, 6247567, +394600, -12975633, 542777, -7820062, 6363531, 15426986, -8294656, 4757750, -2462090, -8035347, +3770981, -6737193, -1269700, 2790118, 1970316, 3523484, 1384053, -571231, -3047816, 3336116, +7131257, 1209033, 3476776, 5950141, 2539400, 6730214, -2148558, 6367289, 204548, 148176, +1272384, 712428, 1713692, -193274, -3249680, -1738925, 15569, 1711545, 1675574, -1217086, +2966212, 2935073, -2586107, 4148402, 7115687, -11887933, -4494684, -4392678, 2418067, -565325, +18011482, -2120640, 755914, 11475079, -9990094, -7228430, -9357123, -9814537, -2278480, -243739, +4597763, 19245748, -1619203, -10889353, 19937776, 443992, 5673115, 13654238, 9467719, 12750147, +-3173444, 10095858, -6313065, 13340168, 11696270, -3022046, 6158446, -5210869, -4809827, 5107253, +15269682, 6927246, 6117107, 2253247, -4697621, -8255464, -8380555, 1489280, 10540923, -5950677, +-7158637, -8850854, -3269007, -17649094, -4032974, 3508452, -12914967, 6412386, 1059246, -5849209, +-15192373, -10142565, 148176, -20224464, 6502581, 4600447, -321586, 5763846, 3811247, -1883880, +-10460930, -6316287, -1066226, -6611566, 6386080, -6933688, 16959752, -11237245, 725850, 7487739, +777926, -4972499, -19298362, 3479997, 9647033, 2399813, 682900, 10630044, 5938866, -5945309, +133144, -609349, 914828, -337155, -3231963, -6750615, -1917703, -7301445, 541166, 1941325, +1030792, -1823214, -3694209, -1679869, -2423435, 3302830, 1097364, 4292820, 3124052, 2504503, +1056025, -256624, -1326608, -1210107, -3219078, 1633161, 348966, 1626719, -1488206, -133681, +-2672007, 267899, -2061047, 955093, -24850144, 8686571, 11303817, 19910394, -88584, -14839649, +4150012, 7107097, -15364709, -15974594, -9996536, -421444, 8484708, -467078, -6276021, -352724, +-5495411, -3704946, -9916006, 16483548, 12865038, 4830765, -20273320, -6089190, 3227131, -1174674, +-4536559, 25604984, 9361418, 8032126, 7515119, 12144020, 9099425, 2204392, 9528385, -669478, +-15935939, 8592619, -16392280, 4984847, -16229071, 13670881, -4311074, 16511465, -9044664, 4002910, +-7320772, 5944772, 9640054, 25212532, 5305895, -32085016, -1725503, -4473209, 6861211, 14006962, +-2863670, -6237367, 10274099, -1827509, -5083631, 13799730, 849330, -617938, 674847, 5908265, +11018202, 8741869, -9517111, -7059316, -6013491, -9631464, 2232309, -892816, 10893111, 7846369, +-14757508, -3554086, -8359080, 7148973, -4082367, -3935264, 2554969, 480499, -5699959, 4870493, +1164473, 811749, -861141, 2771865, 2844879, 460635, -8362302, 2333241, 1435056, -1067299, +-1492501, -2768107, 85899, -3704409, 1700270, 4191351, -1293322, -1236951, 4087198, 648540, +-3848291, -2928631, -709207, 2007897, -1687385, -390842, -2374043, 640487, -1593433, 28991, +3928821, -2633889, 620623, 27079768, -10191421, -17959406, -5683853, 7089918, -4404489, 13042742, +18842022, -7504382, 17284022, 11147051, 8711804, -2791729, -2030983, -3416647, 16765405, 3114925, +2059974, -9674951, 4282620, -5027259, -381715, -16015396, 10938745, -14690399, 111669, -10343355, +17484274, -8850317, 433255, 17295834, 13142600, 8920647, -1010928, -6773701, 8052527, -183610, +-1505923, -21936546, -6492917, -13221520, -10756746, -8358007, -3932043, 11514270, 7232188, 6745783, +69793, 16914118, -8877697, 17894982, 15708843, 16885128, 29445758, -11290395, -8829379, 13006235, +2476049, -11330124, 17783848, -5757404, -8524436, 5837398, -2152852, -6072010, -5037460, 7701413, +-10248866, 4748087, -6334540, 16377247, -6891812, 337155, 4796942, 11964705, 16190416, 1376000, +-14064944, -15242302, 5048734, -10127533, -32846300, -17227650, 5286568, -289373, 9550397, 1297617, +-5353677, -542777, -3092377, 1479079, -5666673, -2428267, -3877819, -1565516, 487479, -627602, +-10233833, -2616172, -6689412, -5961415, -4707821, 2170569, -438087, 499827, -7440494, -5132486, +-242666, -204548, 1497870, 3937411, 3206730, 2434173, -5341866, 343061, 1267552, -6878927, +2492155, 491237, 3068754, 1457605, 3904125, 2258079, -1536525, 3348464, -2454574, -1780264, +-726386, -24799678, -20899848, -621160, 4884989, -14141180, 1053878, 1695438, 23841900, -14877230, +-17080012, 6075768, -6962679, 379568, -12371116, 12580496, -12575664, -16985522, -10117332, 20509542, +-13306346, -10794863, -2176475, 8569533, -5607080, -14010720, 4877472, -5431523, 488553, 6969658, +-18615462, -1025423, 10937134, 17336098, -2168959, 26283590, 11747809, -2540473, 1553168, 12176232, +-4443144, -10112500, 2399276, 14426258, 1964948, 7138773, 717796, -11068131, 4370666, -24787866, +2696703, 1779727, -2806761, -14431090, -13070122, 2047089, -5742372, -9779104, -6422050, -7792145, +10049150, -16184511, -9068823, -4373351, 7626252, -9352291, 20755966, -2651069, -16699370, -1068910, +-9777493, -26721676, -7710540, 2209224, -419833, -17214766, -9006546, -3610457, 4424890, -10062572, +-4793184, 17806934, -5779952, -23322746, -7943542, 3488050, 2226404, 8216810, 7008850, 5338645, +-5104569, -6480569, -1232119, -4401805, 3877282, 1461363, -2630668, 5498632, 2531883, 3405372, +-1636919, 2866354, 2250563, 405338, -594316, -1337346, -1786170, 464393, 1795833, -8016557, +2228551, -4432943, 5844914, 2431488, -5820218, -5103495, -59593, -3950296, -216896, 2207613, +-1157494, -2527052, -4204236, -3091303, 2867428, 1332514, -4815732, 2389076, 974958, -3058017, +-2539400, -5567352, 18974092, 16934520, 4880157, 34952444, -6824166, -12560632, -11308649, -5417028, +-19262392, 25382182, -15650324, -5850283, -12737262, -6657736, -6150930, 2789045, -18351858, 51003, +-105227, -2714419, 4810900, -19294604, -5166846, 12867185, -13313862, 501974, -17137456, 15925739, +-236223, -28861106, -15206869, -5387500, -955093, 7776575, -17750026, -9948218, 11603928, -2227478, +7903277, 7415798, 7138773, -10618770, 805843, 12508019, 4323422, -23822572, 14885820, 10853919, +-13157095, 36181340, -1016297, -26229366, 6859600, 8096014, -940598, 19252728, -6307697, -32533840, +8773544, 4517232, 9342628, 11376295, -15178951, 23323820, 8454106, 7176891, -5944235, 35392680, +-3097745, 508954, 23851564, -4237522, 10672457, 19085224, 6191196, 2773475, -4990215, 9135395, +8053, 16138340, -7517267, 15712601, 14083198, 817118, 13925895, 8516383, 11010149, -5871757, +-442382, 13050795, 9032853, 6993818, 3803194, 4445291, -9069897, -1045825, -3758, -4064650, +117038, -1486059, -4138738, 7577396, -8234526, -1486059, -8092792, 6614787, -3704946, 7934415, +-7209640, 1116155, -5165772, -6657200, 4176319, -2521683, -639950, -6482717, -10152766, -7140383, +7003481, 765041, -3572876, 846109, 8820789, 6826314, -3324842, 3352759, -386547, -2533494, +9113921, 434329, 5782100, 7078643, -25146496, -24675660, 50556596, 16301548, -31624918, -15902653, +-14525043, -28945932, -2185602, -15280420, 21030844, -11919608, 62814, 26272314, 521302, 4361003, +-19399294, 24226836, 18008798, -317291, -5896990, -1889786, -15100031, 1144609, 1854352, 3077344, +-20735028, -3004330, -1258962, -6215355, -4669167, -14241575, 13434658, 26760868, 32060858, -2601677, +-13088376, -5412196, -6731288, -4482872, -19798726, 6732361, 7625715, 7099044, -20634096, -27404038, +29566554, 11229192, 16518981, 21572010, 20107426, -8719857, -13901735, 19528680, -19929186, 10103911, +-14942191, -11344619, -6722161, 23236846, -7791071, 4762045, 7867307, -4175782, -18861886, 38832408, +-23555748, 2464774, 27979028, -25368224, -11618423, 3053185, 10162429, 28943784, 5061619, -16681116, +365072, 3591667, -4039417, -6958921, 4041027, -11653320, 8872329, -9630390, -13755170, 7439420, +4015258, 10481331, 4556424, -289910, -4854387, 1267015, 2786360, 3304441, 10994043, -541166, +1412507, 7012608, -16588237, 2476049, -7546795, 1920387, 1703491, -2542084, -6365679, -7601019, +-2025077, -7624104, 2901251, 4338454, 9368934, -703301, -6510634, 6205154, 7223598, 4630512, +4356171, -11694659, 261456, 3142842, -3093450, 10355166, -3983045, 936303, 922881, 9588514, +-4656282, 3000035, 13113609, 13173202, -8402030, 8269423, 33724084, 20332912, -3025805, -21566642, +2278480, 34583612, 27539330, 5816997, -27341224, -10517301, -23602456, -1741072, 18504866, 22857816, +-1656784, 8702677, 27160836, 28908888, 44841068, 45142792, -22509924, 9841918, -24308442, -4375498, +-19702088, -7060390, 15570330, -3455301, 6828461, 6140193, -13993003, -10238128, 11464878, 12787191, +16575889, 11795591, -536871, 12160663, 18294950, -9642202, 9277666, 10808822, 3234110, 10557566, +34984120, -26237956, -22592064, -5057861, 21628382, 20735566, -12270722, -120259, 33214592, 26877906, +-18775450, -12503187, 11435350, -22925998, 6420439, -11010149, -20799990, 6775311, -24443732, 25475062, +9378061, 28215788, -11793980, -16430934, -31786516, -6841346, 10435697, -27837830, -23816130, -13013751, +12503187, 7428683, 5907191, -12232067, 5375689, -8738648, 3428995, 25959856, -10979010, 3095598, +-14645838, 11179263, -6008659, -12285754, 8763881, 12150462, -6674916, -3419868, -3929895, 8745090, +19377818, -6127845, -12932683, 345745, -179315, -4748087, -2004139, -17942226, 2557653, -9501541, +-4225711, 6592238, -5814849, -3133179, -467615, -4920422, 8004209, -7837242, -12410845, -11231876, +-9460739, 10208600, 5404680, -2238215, 4556961, 3101503, -8007430, -8738648, 3365644, -9320079, +-996432, -16200080, 12858058, 33444910, -2618856, -10919417, 21319144, 4041027, -1684164, -32685774, +27900644, -14415521, -31077846, -10842645, 1644973, 34898756, 2955474, 24887724, 9835475, -30410516, +-6947647, -26990112, 3835406, -26903676, -19467476, -11794517, 903554, 5140539, -20950314, 19713364, +-6928856, 11812771, 12727062, 12596602, 24002962, 44144212, 25723096, -8929774, -22354768, -1190780, +46498388, 28813324, -16410533, 22939958, -9432822, 28115392, -14608794, 2348810, -11045045, -5688148, +-2029909, -8440684, 70099768, -13838385, -19899658, -22924924, -32079648, -12596602, -24823838, -1507534, +26825828, -11275900, 7618735, -9495099, -14343043, 24377698, -7330436, 41355168, 7307350, 32996624, +-41250476, 16396575, 71271760, 25678536, -40425304, 23396298, 21372294, 902480, 4196183, -12668543, +13230110, 62536336, 33044942, 13718126, 18663780, -20097762, 36005248, -4218195, 5174362, 5375152, +8570607, 3820374, 23540716, -20203526, -5363878, 1321776, 30130270, -5558225, 7074348, 34983044, +-3200825, -20090246, -4966593, 12611635, 1735167, -8726837, -20369420, 11212012, 7918309, -14141717, +-8480950, 9126269, -17291002, -14445049, 4162897, 6629282, -459562, 4483409, 2919504, 5308580, +-6585259, 5569499, -4163434, -5442261, 5116917, 1959579, 7233262, 1270237, 49086644, 22958210, +5514201, -1468342, -53490060, 25012278, 33659660, -24167244, -17597554, 41599980, 27117886, -33199024, +-35286376, 1295470, -20618528, 9035001, 3438121, 8628589, -33172716, 8730595, -6437619, -16474958, +29504814, -1993939, -4900021, 9976135, 24739012, 22286048, 15211700, -28338194, 624381, -13793824, +-30271466, 11098732, 8571144, 18717468, -6397354, -14049375, 38737384, -27742804, 12277164, 13527536, +10941429, 8389145, -4818954, 22969486, -21242908, -36604396, -6169184, -41938744, 36870148, 22737020, +36178120, -2849711, 7109782, -29143500, 30376694, 38402376, 13732084, -16221555, -42973296, -9803263, +-56688200, 911607, -10579578, -38356204, -32639604, 15006079, 2353105, 23721104, -18323404, 27182312, +22767084, -32075890, 6772627, -19127636, -5478768, -28967406, 3647501, 84664544, 21050172, 24902758, +30935576, 13914083, -24062554, -3207804, -402653, 20162724, -4671851, 20718922, -9413495, -12613245, +428423, -1336272, -23790360, 20496658, -3852049, -5706938, -7442105, -16502875, 2297271, -7728257, +-10705743, -15320148, -12251394, 7660611, -8880919, 7510287, 8304856, -5780489, -10000831, -13190381, +5989869, -2254858, 5564667, 20565914, 12589623, -59593, -1822140, 6717866, 12619151, -12421582, +11109470, -12517682, -9677635, -6501507, -34489124, 14126684, 10612864, -16615081, 4898947, -8913131, +-51514912, -14174466, 11923903, -6641630, 4959614, -29046864, 36325760, -49384608, 3209951, -36374616, +24137716, 26567594, 8295730, 22110492, 1924682, -24241332, 39485780, -19462644, 3626026, -131533, +-23657754, 37287296, 2057826, 9114457, 7752953, 11120744, 5755256, 27750858, 33030446, 10596758, +38691748, -34850440, -3179887, -719407, 49633180, -10327249, 39464308, 21613886, 54438712, 10096931, +-13014825, -18253074, 21309480, -41828148, 38262252, -24119462, -14373645, -7216619, 7292318, 28703266, +-7417409, -54010824, -15349676, 85661512, 5865315, -55067924, 12903692, -36701032, 10173704, 84393424, +-23939074, -23976654, 58525908, -64404644, 31655520, 13942538, 18722836, 54732380, 34507916, -49932752, +60109676, 39291436, 1305670, 64012728, -27099634, -9491878, 46292232, 30275224, 5084168, 12001212, +-568009, -1190243, 5151277, 15524696, -15023796, 16444893, 16928614, -15033459, 7057705, 11306501, +-21284784, -2423972, 7280507, -2430952, 3460670, 25904022, -54224, 17108466, -9767293, -209917, +12269648, -8435316, -7130183, -17749490, 2492692, 15392089, 10087268, 14481556, -28314036, 15183783, +17725330, 7885023, 2720862, 7182259, -1742146, 16224239, 29122562, 6929930, 13814762, 13231720, +-7295002, -8043937, 13629542, -17837536, 6533182, 21031382, 28759638, 55328304, 27262842, -27252104, +35153232, 10227928, 31649614, -9737765, -60189672, 60170344, 52056076, 31911070, 98784248, -9691057, +-83984328, -43519292, -39964672, 87743496, 64167348, 15281494, -6236830, -16480863, -58941448, -28051506, +-19541564, -33848100, 89034672, 72438920, 100494184, 1557999, -116409184, -180537344, -88581016, 100124280, +134815808, 138098768, 55082420, -114971976, -211450896, -129483600, -65932580, 96991632, 164600320, 93664648, +50338628, 13450764, -75295072, -100406136, -75722960, -5835250, 57402236, 117700896, 140162496, 24905978, +26817238, -111965504, -186105760, -98952824, 91629368, 154969392, 146244704, 91710440, -54681376, -180370912, +-117513528, -151249424, -196495, 102584224, 110147656, 55569896, -44787384, -94945080, -84919560, -66521528, +18937048, 63230508, 43695924, 127927208, 45457932, -28587302, -76354856, -28027346, 84505632, 124579824, +41313828, -4802847, -76911592, -15412490, -17837000, 49240188, 17942762, -12469901, -53335440, -15726023, +2281165, -8392366, -16450262, -3366181, 11846057, 26725970, 44409424, 21805012, -44923212, -39390220, +-37584184, 8978629, 46812996, 52789444, 23822572, 5743982, -34235720, -14410689, -66530656, -58237608, +-5582384, 17456894, 72030896, 109260208, 40970768, -37848324, -90406912, -111916112, -47491064, 88172456, +144818240, 99920800, 29904246, -72689640, -119256208, -57994408, -702227, 21912924, 21101712, 50888920, +25439628, 11517492, -30572114, -63838248, -48721036, 7090454, 32094680, 64072860, 29829084, 11056856, +-12150999, -31938450, 37855840, 5827734, -53692460, 7426536, -13616120, -21278342, 16786342, -16189879, +-6130529, -28504624, 2188286, -10580652, -21129092, 9181029, -1918777, 7778723, 4045859, 18529562, +-17121350, -5411122, 6003291, 2517388, 8926553, -6978785, 18712636, -12224014, 13084081, 6497749, +-5253282, -12865575, -5164162, -24596740, 28038620, -1894618, 1584843, -4172561, -5863704, 2108292, +-115427, 1313186, 11278584, 6924561, 386010, 15977815, -12577812, 5355824, -11904039, 14426258, +9150965, -9822053, 8051453, -12125230, -13627931, -11005854, -21403432, -1803349, 17364016, -14576045, +-29368450, -20046760, 2523293, 18916110, 1098438, 14237817, -27907086, -6989523, -2609193, -2087891, +-27269284, -6515466, 1651415, 4568235, -9313100, 29637958, 12458090, -9006010, 27602682, -2261300, +-47400868, -1620276, -6295349, -3956739, 9984725, 6454262, 13495324, -14696304, 21387326, -35038344, +10917807, 6569690, -781684, 301721, -1591822, -2139431, 12566537, -1938641, 2807835, -5047661, +187905, -10106058, 3364033, 326954, 21368536, 66035, 9873593, -9291625, 1882806, -4565014, +-11463268, 3988951, 433255, -5847061, 15475304, -2610266, -3069291, -5787469, 11564199, -3934190, +-19683836, 4363687, -3278671, 6480032, -7937100, 1064615, -1750199, -12363063, 12310450, -10934450, +8729521, -10452340, 6394133, -869194, -3150359, -6048925, -28829968, -47554952, -74947176, 3175055, +62592704, -23360864, -37768868, -40370008, -38153268, 8489540, 8391829, 72116792, -9980430, -9842454, +-31503048, 4024921, 10085120, 23025320, -23592256, 12603045, -17058536, 28530394, 9323300, 9658308, +3749507, -16996796, -9134322, -10910291, -3395709, 10637560, -10170483, -8799851, 20153598, -17597018, +-10926397, 16844324, -15226196, -5239323, -13024488, -21328270, 8052527, 14805826, 2968359, 13981729, +-20184736, -4730370, -278636, 12395276, 15060303, 18757196, 1598802, -1411971, -30537754, -31205622, +-11414949, -9778030, -6629819, 15065672, 20251308, 28673202, 3409130, -12346420, 28532542, -19661286, +-8725763, 13080860, -8551280, 37593848, 2174864, -5658620, 6565395, -13025025, 11034308, 26209502, +21325586, -7075959, 8238284, -24429774, -16023449, -8732205, -5896453, 19041738, -2136209, 18606336, +5063767, -5427228, 2428267, 3768834, -21383568, 13401909, -15765751, 10484552, -7104950, -3987340, +-884226, 12331388, -11001559, 1928977, 2220498, 10837276, 18317498, -8680666, -2469069, -13859323, +-5554467, 5487895, -5433671, 4468377, -4202089, -5373541, -9772124, -15185931, -8433168, 14825690, +-5407901, 7559680, -10084046, -1882269, -615254, -2758980, -9024800, -3653944, 1245004, -573915, +326954, 517007, -13766444, -1792612, -2968359, -2401961, -18254, -331786, -458488, 19676856, +-48499844, -113441360, -86673512, -9976672, 37591164, 97933304, 82705504, 78947408, 80641768, 53213572, +22452478, -29025388, -51478940, -98328984, -72421736, -71191768, -70950176, -44144748, 42890616, 57752816, +84897544, 65158412, 54626080, 18022220, 36456756, -8178155, -9375377, -11425150, -19862614, -37238976, +-30461518, -62727996, -22797150, -49818400, -23684598, -11780022, 16371878, 3266323, 23402740, 5402532, +32754494, 24040542, 39611948, 52576844, 65375844, 41773924, 28128814, 46410344, 3648038, -15801722, +-57268556, -67242544, -92423936, -82455320, -77014136, -29546154, -50523312, -26491358, 3172907, 13933411, +32726578, 62279172, 66469452, 74185896, 112173272, 63084480, 85959472, 59528248, 13653701, -9144522, +-35116728, -89731528, -98018672, -93437552, -103546296, -76134200, -52995064, -42642584, -11571716, 21776022, +36666136, 46416784, 69224672, 73356968, 77413024, 72982232, 45637784, 31731218, 15218680, 1593433, +-84289, -22115860, -35942972, -52172580, -61844308, -65848292, -62116500, -43814572, -19519552, -17706002, +-6530498, 11581916, 31139050, 38534984, 73295224, 51481088, 40880036, 40605696, 14847165, -1808718, +-10393284, -13100187, -13606993, -35614944, -31688806, -23176718, -23957864, -17803176, 2532420, 5350456, +7217156, -4462471, 11850352, 140660, 13989245, 14011794, 4878009, -5135171, -357556, 2819646, +2206003, 1956895, 6767795, 1156957, -3025268, -10609643, -2102923, 1983738, 8053, 6002754, +5268315, -1473711, -657130, -4804995, -3190087, -2823941, -1261110, -2446521, 1765232, -1743757, +-617402, -950798, -2094333, -4354023, 29528, -464393, 2777233, 5421323, 4323959, 2544231, +3782793, 185220, 380105, 331249, 1015223, -1130650, -767725, -1467268, 365072, -576063, +-2053531, -2494302, 231391, 163209, -239444, -2229625, -2304787, -2415919, -2183991, -1312649, +1249836, 1064078, 2116345, 2105608, 2078764, 129923, 1161789, 821949, 1349694, 1102733, +2400887, 1823214, 1890859, 54224, -1342714, -2214056, -1748052, -2559801, -2193118, -2351495, +-1880122, -2445984, -1537598, -900869, 12348, 423054, 1247151, 1659468, 2736431, 2810519, +3400004, 2326799, 1705639, 797790, 542777, -890669, -1589675, -2235531, -2376191, -2357937, +-1411971, -1159104, -619549, -324270, 166430, 182536, 581431, 563178, 661962, 550293, +535797, 281857, 249108, 101469, 90731, -9127, -37581, -84289, -87510, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -9311489, -7208566, 353261, 3310883, 3283503, 9331353, 4386772, -3447248, -4356708, -6072010, 4347044, --5311801, -3867618, 869194, 1332514, 577136, 5469641, -1786170, 5111548, -1307818, 4587562, --4346507, 2007897, -1918240, -4655208, -323733, -8873939, 1334661, 2167348, 3969624, -3246995, --47245, 3449933, -2540473, 3876208, 3664681, -2207076, 2633889, -2954401, -1363115, -2188286, --3172907, -4052302, 3625489, 5332202, -3991635, 2359011, 4305705, 3464428, 5269925, 647466, --781147, 3049427, 2334852, -5576478, -202400, 628676, 364535, 1750736, 3616363, 792958, -1318555, -1946694, -1210644, 2535105, 3594351, 1980517, -1886028, -3339874, 3706557, -3017215, --961536, 2049236, -609885, -154082, 1588064, 353261, 114354, 3328600, -3263102, 2473901, -1372779, 1614908, 3107946, -1266479, -343061, -1067836, -417686, 104690, 1530619, -1225676, --202400, -854699, -461709, 26307, -100395, -508954, -324807, 315143, 467078, -35433, --177167, -361851, 68719, -134218, 72478, -508417, -86973, 453119, -1046361, -518617, -3697430, -1941862, 2712809, 270046, -215822, -7494718, 1218160, 6404870, -3911642, 2652142, --7956964, -8054675, -2643552, -6548215, -5709622, -852551, 1197759, 4515085, 732829, -2161979, -1036161, 3075197, -3948149, 5501853, -3705483, -4017405, 4671314, -2308545, 5379447, 6822019, -962073, -4908611, 3457986, 2254858, 1397475, -2494839, -1794223, 2868501, 2409477, 492311, --5536213, -1597728, -5112085, 4641249, -4611721, -3016141, 3433826, 166430, 2983392, 852551, -1158567, 5049271, 875636, 5662378, -7272454, -3741454, -1663763, 3619047, 5135171, 5845988, -7973607, 866510, -2241436, -757525, -1043140, -240518, -5143224, -2260227, -2223719, -627065, -822486, -4189741, -2456721, -944893, -1759326, -3275986, 3963181, -3938485, -1317481, 2623151, --6722698, 2040110, 3706020, 4081293, 2174864, 1182727, 2473364, -1199370, -2590402, -661425, -732829, -282931, 733366, 127238, -699543, 49929, -1020592, -1235877, 1531693, 673773, --110059, -13959, 17717, 1137630, 559956, -448824, -436476, -469225, 115427, 839129, --970663, -173409, -25233, -190589, 587874, -32749, -374199, 8527658, -6336688, -2383170, --1255204, 5239860, 4730370, -4791036, -442382, -8886287, -1945083, 10754061, 4049617, -4339528, -7722888, 2512019, 2967823, 779000, -2595771, -8482024, 1134408, -3825742, -2418067, -1558536, --5166309, -1837709, -3999688, 2778844, -1811939, -2349347, 4831838, -9128953, 8387535, -2967823, -1190780, -2866354, 2616709, -351114, -840203, -236760, 3569118, 165356, 2255932, -3270618, -6283001, -4899484, 7316477, 1546725, -726386, -4109747, -4809290, 9935333, 1713155, -9337796, -9534827, 8975945, -4883378, -1801739, 2820720, -3694209, -688269, -2281702, 2254858, 5720360, --3490198, 1297617, -2614561, -2401424, 937377, 7704635, -7080254, 4280472, -7297687, -5623723, --5271536, -944356, 141197, -18790, 4411469, 6818261, 1779727, 1642825, 3333432, 2690797, -1490891, 1680943, 1996623, -756451, 2150168, -1001801, -2121714, 3620658, -188442, 484258, --666257, -1096827, -638876, 6979, 1531693, -406411, 338766, 136902, -1374926, -4832, -751082, 950262, -118112, 662499, 2240362, -3468186, 197569, -6659347, 6029061, -9280351, -188442, 9354439, -17450988, 11879343, 4650376, -4753455, 3629247, -506806, 10331007, -1250909, --8837432, -6215892, 3369402, 3915400, 1012539, 137976, 4303021, 1187022, 579821, 5902359, -2324114, 1585917, 4208531, 2993592, 14799384, -4249334, 3830037, -352724, -2602213, 3743601, -2263448, 1383516, 1750736, -2583423, -4285841, 141197, -153008, 81604, 2017024, 4430796, --4800700, -5073430, 1988033, -1314260, -2038499, -3089155, 5936182, -4495220, 8644695, 4003447, -240518, 1936493, 594316, 2276870, 11023034, 9258876, 565325, 404801, 1998234, -2371896, -4032438, -1045288, 3621731, 1038308, 96637, -117038, -4914517, 4441533, 3342022, -1140314, --2888366, 259309, 4242891, 311922, -1382443, 133681, -3475166, 2291902, 759136, 2953327, --962610, 795643, 1139777, 1167694, 929860, 1729798, 727997, 709743, -4203699, -345745, -1432909, 2166811, -1538135, 1369021, 1211181, 1107028, 1217086, 477278, 907849, 1220845, -1334124, 131533, 418759, 325344, 527744, 113280, 228170, 823560, 204011, -278099, --1053878, 461709, 1211181, -1126355, 2188286, -1037772, 4825933, 97174, 5572720, -2154463, -4939213, -3765076, 10352482, -7946227, -2984466, -3797825, 10672994, 6044630, 3907347, 6781754, --6163815, -1249299, 9843528, 5594732, 4603668, 4786741, 2527588, 3287798, -1162326, 9463424, --1016834, -4361540, -3274376, 3317862, -3606699, 2169495, -8990440, 3317862, -1755031, 178778, --9659918, 4152697, -2105608, 9037148, -1516660, 2866354, 2433099, -3796751, -992137, 4125316, -518617, 2833605, -2085744, 5022428, 7050189, 913754, -5006858, 1918777, 4939213, 3588982, -605590, -3374771, -7038915, 5872831, -7832410, -3266323, 4299263, -10284836, -2422362, 6419903, --4825396, 1372242, 24696, -550830, -1444183, 2631741, -5207648, 317828, -8652212, -4409321, --11802033, 923418, -3362960, 296890, -2346126, -324270, -3058554, 2731062, 2494302, 1082869, --1932198, 2528662, -360777, 1017907, -3462818, 913217, 609885, 1137093, 656593, 2377801, --385473, 2677912, -1236951, -115427, 1730335, 2521146, 291521, 1424855, -1676111, -533113, --543313, -546535, -1234803, 834834, 1818382, 595390, 1921998, -1846299, -1257352, -1000191, --2771865, 357556, -498753, 1336272, -477815, -446140, -2903935, 2960843, -18807124, 3463354, --5826660, -3331284, 4493610, 3433826, 2462627, 964757, -13776644, -1342177, 4487167, -7358353, --1810329, -10113574, -5060545, 2399813, -1066763, -9307731, 9963250, 6032819, -2851322, 1165547, -7871065, -4887136, 2225330, -3315715, -5235565, -3580392, -9591199, -3546569, 7498476, 3548717, -9539659, -4670777, -15213311, -6562710, 3904125, -4857071, -9866077, -1624035, -1738388, 9206799, -4804458, -10597832, 7259032, -7486665, -325881, -5395016, -5120675, -4939750, -11667279, -6932077, -986232, 7632694, 11559904, 7379291, 2247879, 4604205, -5115306, -8710731, -5299453, 5585605, --2575907, 6019934, -1703491, -5524402, -175020, 551366, -2586107, -6231998, 489626, 4760971, --15236396, -10098005, 14413910, -4610111, 389231, -7856032, 3878356, 2157684, -830539, -579821, -5335423, 3904662, 1276142, -1606318, -1855963, -326418, -2084670, 1260036, 1636919, -2998961, --1430224, 1148904, 437550, 28454, 993748, 3002182, -3083250, -1439351, -5717675, -2345052, --781684, -1067836, 383326, 843961, 1741072, 134218, 2207076, -2499671, -1715303, 460098, -601295, 858457, -2028298, -1159104, -2830384, -124554, 1053878, 7065221, -380641, 3485366, --5144297, 3461207, -6963753, -663036, 11621108, -5742908, 10970420, 11110007, 13757854, 3296388, -5407364, 11821897, 9239012, 6730751, -9473087, 1021665, 2785823, 7861938, -1742146, -7102266, -8789114, 8872866, -2724083, 5845451, -3159485, -3357591, 5539971, 4711579, -833761, 5626407, -371515, -9730785, -7756711, 8035347, 11816529, -1145683, -4275103, 2318209, 235149, -5907191, --10815265, 5367636, -10231686, -5131412, 7599945, 1421634, 6711424, 75162, 10822781, 1301375, -11899207, -14200236, 12565464, -2685965, -592706, 3595425, 6593849, -5604396, -11675869, -3512747, -10506564, -2296734, -12481712, -7549479, -7682623, 1816234, 4389457, -11021960, 5364951, 6000070, -11118060, 3207267, 3447248, -204548, 3074660, 334471, 2391223, 1449015, -8241506, -1156957, -3823058, 2480881, 6546604, -4588099, -1396938, -327491, 475668, 2898566, 347892, 2347200, -1001801, -1527398, -615791, 2220498, 2230162, 613107, 2438468, 426812, 1047435, 3009698, --12348, -2036351, -965294, 444529, 1551557, -500901, -809601, 2370822, 1321239, 306553, --2759517, -1160715, -1595044, -1643899, -166430, 2539936, 120796, 2399276, 1904281, 1509144, --226023, 115427, 3729642, 12017855, 1519882, 5000953, 14299020, 15403900, 4580583, 3850975, --11428371, -5792301, 12590160, -9393630, 12869333, 3606699, -67646, -2598455, -4519916, -7478612, -1353452, 5678484, -13872744, -6309307, -5905043, 3044595, 2777770, 3006477, 423054, 2323041, --510027, 4146254, 3394098, -3710852, -6502044, -12020540, 2114198, -6511171, 10824391, 398358, --6003291, -7577933, -2299418, 4988605, -9403831, 5852967, -3139084, 1904281, -97174, -6742562, -6670621, 8387535, -5763309, 7050726, 2040646, -585189, 20230370, -5124433, -13090523, 2444373, -4951561, -3318936, 1117228, -5746666, 13748727, 7941395, -1336272, -2976949, 9774272, 9271224, --1920387, -7982734, -5737003, 19049790, -1725503, -2671470, -7664369, -5040144, -1500554, 1814624, --1959042, -5123896, 8265128, -2648384, 9802726, 2786360, -3032247, -1122597, 1793686, -100395, --1622424, -1751273, 3490198, -4388920, -1012002, -1212791, 5696737, 468151, -1169842, -192737, --2813741, -2734821, -292595, 517544, 5981279, -1443646, 3576097, 1287953, -1850594, 1158567, -317828, -2922188, 2287607, -1484448, 3132105, -356482, -3033858, -2354179, -1692217, -2369211, -55835, -791885, -889595, 998043, 1187559, 1591285, 716723, 5102421, -10403485, -2849711, --3186329, 1008780, 4613332, 10517301, 9204652, -14371497, 461709, 1839320, -1340030, -4195110, --9863392, -888521, 3498788, 6073084, 4956929, -9039296, -1472100, -11494406, 11025181, 613107, --956167, 5374078, -5056250, -813359, -12262669, 2213519, -7271917, 5239860, -846109, -1941325, --4067871, -8089571, -7875360, -816581, -9743133, -15947214, -2871723, -7197829, -15336791, -1127966, --1213865, -8329552, 5652177, 8614094, -942208, 4170950, -959388, -1219771, 2412161, 2630131, --12406013, -3567507, 6972343, -5908802, 15077483, 2826089, 4100620, -9539122, 12348, -4241280, --9752797, -930397, 14000520, 6565395, 10662256, 5985037, -4498978, -11084774, -17411260, 11877195, -12152073, -1315871, 6328635, -13535053, 6638946, 5713917, 9912248, 1599875, -11588359, -1381906, --10795937, -3657702, 1004486, -3415036, 2408940, -2302103, -3518115, -817654, 1151051, -419833, --1086090, 3332895, -904628, 1367410, -7814693, 265214, -556198, -1130113, -3495030, -1403381, -2466922, -3210488, -3786014, -1273458, -1305670, -1477469, 69793, -824634, -4203163, -3337727, --2055142, 1333587, 1516124, 2635499, 1275605, 2429341, 868657, -2977486, 703838, -387621, --1833414, 1272921, -3524021, 1653026, -1878511, -204548, 2496987, -26996016, -6667937, 21667574, -7321309, 8902930, -5499169, 8989367, 15148887, 1213328, -2411624, -24930138, -5721434, -1070521, -14475650, 4144107, 5877663, -18654654, -4926865, -6873559, -4341138, 11761768, -6455336, -2184528, -2150705, 3437048, -5794448, -2493229, 3143379, -5145908, 11598022, -12759274, 1527398, 8563091, --10879689, 9131637, 15506443, 17986786, 8732742, 8847633, 11887396, -7967165, -14631343, 5983427, -6564321, 9854802, 7915625, -16611860, -4605279, 8857833, 5217312, 3273839, 10627897, 2435247, -12356084, -4460324, -2479270, 7063074, 6609418, 2025077, -10598369, -5672041, -11395085, -13153337, --611496, -14394046, 927713, -8351027, 762894, -7590281, -4361540, -18514530, 12986907, 3449396, --2598455, -3266860, -1924682, 2549600, -6707129, -902480, -16000901, -8801999, 5798743, 7376070, -3184182, 2513093, 803696, -8426189, 4055523, 3927211, 3186329, -8051453, 2027761, 365072, --6274411, -2129230, 1300838, 1063004, -3144453, -4799626, 1777043, -2337536, -2786360, -693637, -884226, -563178, -180926, 1682554, -1321239, 2325725, -203474, 3300682, -1255741, 2952253, -4763656, -3210488, 2741800, 256624, 1969243, -1967632, 3221, 2670933, 2323041, -3964792, -2328946, 2127083, 17065516, -8222178, -7027640, -6220187, 11768210, 14925011, -9272298, 23913842, -5065377, -10137197, 12264816, 3540127, -9884330, -11620034, -9375377, -704912, -5012227, -3414499, --15512348, 6295885, 6528887, 21571474, 2959769, -3617973, -9667435, -10120554, 2618856, -1151588, --13568875, 2464774, -5007932, 704912, 10547366, -8079371, 13935558, -12149389, -10218264, -641561, --15928423, -19046032, 3131568, -2137283, -22009560, 1576790, 282931, -10437307, 5534602, -5043902, -2808909, -14843944, -24295020, 16020228, -14856829, 24790552, 13526999, -17629230, -2246268, -17864380, --4813048, -2219961, 7452842, -6402723, 11364483, 14360760, 13600551, -9756555, -7980586, 1321776, --12015171, -1072131, -3911105, -15822123, 9498320, 7078643, -8445516, 12542378, -18553722, -1734093, -1120987, -4813048, -3122441, 16173773, 11918534, 7977365, -967978, -8372502, -6817187, -6300717, -2794950, 2644626, -512175, 1870995, -490700, -701153, 340376, -633508, 648003, 3259880, --3835943, 1571421, -277562, 3583077, -2071785, -327491, 2038499, 4772783, 1867774, 3859565, --4562329, -4927401, 2348810, -3268470, 784368, 19327, -5322002, -2921115, -3185255, 95563, -1716376, 1613297, 1040993, 1282585, -765041, -14761266, -11299522, 6895033, 8423505, 9339406, -16013249, -6328098, 29722248, -1238024, -15840376, 6482180, 14503568, 3753802, 7483981, -6880001, --16939888, 24739012, 13613973, 9963250, 4575214, -8965744, 7779797, 20554640, -7947300, 4176856, --488553, 4095251, 3313567, 14561013, -4554813, 4757750, -5518496, 4224101, -1686312, -1091995, -8955007, 1667521, -18685792, -12651900, -17525614, -12121471, -9418326, -4846871, -13474923, -7776575, --6747931, -11758010, -8218420, 4758287, -12215961, -4425964, -9538585, 21910238, 11048803, 19035296, --17764522, -1947768, -16251083, -3686156, 17693118, 9563818, 20890184, 9772661, 12838731, -14199699, -6038724, 5857799, 19332184, 19561966, 5716065, 17669496, -15716896, -7707856, 11298985, -40936408, -499827, 6364605, 618475, 9772124, 6284074, 22593138, -2000918, -3484292, 24592446, 7180649, --2428267, -11434277, -448287, -128849, 20117090, 2378875, 328565, 1320703, 3893925, 6017786, --1352378, -1481227, 6347962, 2826625, 1921461, 3140158, 4552666, 3354906, -455267, 476741, -440771, 6458557, -1409823, 3250753, 6348499, 4500589, 7108171, -3532611, -2630668, 1402844, -2169495, -2800856, 9127, 3879966, 6592238, -754304, 1832340, 697932, 17507898, 11383274, --11445014, 22373558, 13288092, -1123671, -5568425, -2806224, 13444858, 33039036, 17666274, 4751308, -1395864, 10853382, -2635499, 26665842, 15094126, 16653199, 697395, -8496519, 5672041, 1999307, --14161581, -3506841, -874026, -3365107, -4020090, 5397700, 2974802, -11653857, -5551782, -20580946, --2080912, -6416681, -26422102, -11908334, 837519, 9868224, -13577465, 16990354, -4676146, -4104915, --2276870, -4198868, 12428562, -8379481, 8703214, -27171036, 8443369, 11780558, 9181029, 18017924, --17792976, 15418396, -15963857, -12027519, 13452374, -7911867, -2319282, 11172284, -18103288, 16041703, -25898652, -601295, -3681861, 32876364, -7022272, 6263673, 18655728, -39695700, -20198158, 1258425, -1289027, 5283347, 9614284, 19175956, 11677479, -15245523, -12046310, -3695283, -4235912, -20565914, --1901597, -4184909, 5146445, -21490942, 344671, -6555731, 8798777, -3344169, 11178189, 2853469, -205622, -6455873, -4538170, -6080600, -6192269, -4962298, 4476430, -13131326, 9439801, -1686312, -5313949, 177704, -701690, -9016210, 5005785, -6448357, 1748052, -6845641, -3512210, -198642, --2816962, -7839926, 718333, -2568391, 1002875, -5394479, -5611375, -6317897, 1273995, 1148367, -7955890, 8143258, 106300, 10737, -9960566, -5936719, -31372588, -18854906, 23170812, 23038204, -2513093, -5401458, 19544786, -31470836, -16874926, -34055332, 14954539, 4176856, 1556389, 6649146, --15470472, 7894687, 10833518, 14186814, 24017994, 24679418, 20742008, -797253, 4723927, 309238, --8965744, -1823751, -7479149, -3846680, 28615220, -6634651, -26226680, -6601902, -5361193, 2386928, -41210212, -14846628, -14714021, 13967771, -22250078, 7744900, -24693914, 32352378, 9176198, -871342, -8334921, -12437152, -15735686, 22174380, -26884884, -21482890, -19307488, 5395016, 8135205, 10103911, --17909476, 18447958, -5644661, 1414118, 28427852, -1913408, -4779762, 8381092, 22952306, -14803142, -38034084, 1433982, -43725988, -5301601, -1635846, -14593225, -4168266, 15032, -4046933, -11915313, --9993852, 21559126, 14482630, -5280663, 14016626, -25121800, 7108171, 11290932, 7064148, 835908, -13503377, -2195265, -542240, 5057861, 13204340, -5424007, -5680094, -4463008, 662499, 4991826, --2474438, -10349797, -11089606, 569620, -5172215, 3891777, -70867, 2753074, 5984500, -7232725, --4727149, 12559558, -2826089, 2289755, -893353, 353798, -4204773, -4746476, -2336462, -1578401, --6582575, 3244311, 6177237, 3434363, -30065, 589484, 2838974, -5094368, 1266479, 5856725, --488553, 5027259, -2736431, -9073655, -12213276, 314069, 5277441, -9043591, -4212289, 41611792, -24591908, -33838972, -27376658, 33463700, 31887448, 19898046, 22870164, -40256728, -8965744, -11210402, -10414759, 3738232, -16353088, -29773788, -45028976, 12970264, 11674258, 3325915, 12173011, -6280853, --2419677, -10799695, 8740258, 15377594, 13770202, 3491809, 18350248, 5790690, -2267743, -7699803, --27441620, -1615445, -11645267, -9657771, 9313637, -29404956, 2448668, 1033477, -13825500, 11803107, -10778220, 5268315, -19862614, -18459770, -48438104, -12428025, 165356, -15604690, 2546379, 10052908, -9975062, 26846766, 13063143, -12064563, -8541616, -18073222, 22515830, -9681930, 39105140, 32694364, -8913668, -21115670, 43190728, 19822884, -17762910, 2557653, 21604222, 50334868, -21047488, -38707856, --20096688, 399432, -14108968, 5960878, 13721347, 11493869, -10324565, -15902116, -8919036, -13254806, --14621679, 3880503, 15479062, 12407087, 6843494, 6123013, 2080375, 10420128, 1224603, 1578937, -15122580, 11906186, -911070, -5147519, 3255048, -8097624, 8317204, -3150896, 8516920, -4580046, -3280281, 2176475, 5554467, 7330436, 4162360, 3357054, -7454990, -14355391, 1471026, -7334731, --3887482, 4205310, 1066763, -2201171, -2989834, 10210748, 3170223, 13849122, -4694936, 7373385, --7218230, 7154342, -9867687, 9516037, 128849, -8303783, 16362215, 5645735, -6147172, -16498580, -13246753, -27743878, -25694104, -9438728, 19360638, -11578695, -14742475, -435402, 22354232, 2105071, -23110146, -8121783, 27962384, 2981244, 14840723, -10188199, -6930467, 8671002, -29458644, -8397735, -10700911, -5457293, -4215511, -23720030, -22455162, 10046465, -13808320, -9949292, 17897666, 24694988, --3946001, 16165720, -29767344, 1575179, -8281234, 38078644, -16065862, 12538620, 23205172, 22134114, -6278169, -15787226, 9683541, 6937446, 6546604, 12179990, -37963216, 69450696, 22033182, -6286759, -3446175, 7646653, 19123342, -5529234, 14675366, 40447856, -2518462, -50347756, 20783346, 17328582, --18025440, 23449984, -5388574, -10650982, -27106076, 51892868, -26978838, 57794692, -38331508, 14203457, --918586, 62804768, 27736362, -27005144, 25626996, 1016834, -16889422, 12538083, 1787780, 5586679, -13909252, 5889474, -16340203, -4305168, 19026706, 5048734, 10699837, -8928700, 11844446, -20391968, -7390028, -1234266, -6710350, 12539157, -7164006, -4035122, 8942122, -1632625, 1213328, -1685775, -15137612, -10087804, 14770393, -8886287, 13655312, 19216220, 7034620, 5153961, 10537165, -2854543, --7721278, -7463043, 9077950, 3118683, -1654636, -201863, -2523293, -13932874, -10774999, -2219961, -319975, -3225521, -8215199, 47862580, 5806796, 26023206, 13331042, -26200912, 1743757, 15671799, --4588099, -22813792, -4276714, -49846852, -13864691, -18528488, -10653666, 10961830, -1348083, 17928804, --8643622, 1994476, 17521320, -15455977, 1795296, 9978283, -859530, -16969416, 91268, -11644193, -34564288, -5993627, 20084340, 3276523, -213138, 35358856, 25565792, -15511274, -18130130, 8992051, -16112570, 19419158, 23662048, -403190, 8429947, 22351010, -1086090, -8954470, 7117298, 804770, --19656454, -430034, 13165149, -19449760, -26097832, -2465311, -1456531, -2797634, -8671002, -9461813, --31117038, -4295, 30814242, 9463960, 17202418, 10098542, -3983582, -40372692, -29484414, 7975218, -26275000, 8548596, 13348221, 53069688, 55234352, 46629924, -3563212, 23182622, -14635638, -39127152, --65112240, 11361799, 8188355, -2894808, 9208410, -20623896, 4573067, -5012227, 24068460, -1781338, -19358492, -23625542, 11797201, -29016800, -5476620, 12276627, 2238752, -14766098, 3625489, -12159589, --13018583, -5604396, 3651796, 11110007, 14496588, 18853832, -4369056, -1004486, 5046050, -5151814, -6238977, -19510426, -16470663, -11573326, -15395847, -15022722, -15720654, 10365367, 7740605, -2641405, --10230612, -15908559, 9905268, 183610, 15527917, -3724811, 13798656, 10008348, 870268, 4323959, -16514149, -19417548, -17979806, 11209328, -1350230, -3846680, -8477729, -15013595, -31344672, 8661338, --18883898, 8934069, -8324184, -22174380, -7012071, -317291, 10695542, -9466645, 5345087, -32454920, -30012158, -67833104, -6964827, -17070884, -14056891, 8912057, 38540352, 6072010, 13865765, -33478196, -7285339, 12144020, 26436060, -13992467, -21729850, -15095736, -7489886, -1153199, -753230, 15968152, -11543261, -9622874, -49052820, -23337778, -39921184, 4491999, 69927976, -49710488, -19812148, -7740068, -40345848, -13660143, 16965120, -13057237, 19364396, -7837779, -11988327, -25268904, 12826920, -29266980, -26834956, 48631376, 6113886, -9084393, -9259413, 40321688, 10579041, -459025, 21223044, 6919729, -7582228, -7873212, 46588048, -73550776, 53046068, -44850732, 21104396, 52428664, -42284488, 85072024, -57886496, -21922586, -7431904, 58480276, 21240224, -5647882, 38427608, 34481608, -45117020, 60339996, --36705328, 10664941, 11431592, -16288127, 11508902, 19660212, -12360916, -22203370, 7031399, -12006581, -4977330, 4984847, -6227703, -17426830, 6761353, 6104223, -7243999, 7202660, 5719823, -14043469, -34078956, 3628711, 563178, 625992, -7082938, 5133560, 4463545, 1707250, -11301133, 5691369, -1422708, -4985920, -9928354, 21020644, -8149164, 17073568, 19471234, -2110440, -7416872, 5057861, -4677757, 7484518, 23499376, 20217484, -18413598, 8354249, -7568806, -1220308, 26863410, -5374078, -7395934, 10456635, -1822140, 49576272, 47245712, -40379672, 39336532, 36202816, -34082712, -51423644, --75990320, 17662516, 113978768, 46814068, 150324, 23501524, -109073376, -45059040, -3927748, 16583942, -81948512, 80216032, 13782550, -30966714, -60473676, -35437776, 4018479, 25885232, 39133056, 63073744, -38016368, -50876572, -120268744, -97982160, -9711458, 108990704, 118508888, 74907984, 22803592, -25206626, --48505752, -73189464, -41815264, -44527000, 87150792, 72575280, 45768244, 40587976, -61814244, -86485072, --100442104, -89874872, 34507916, 121685552, 149747792, 50645180, -45512696, -106705776, -128080216, -34835404, -20484310, 13207561, 79959408, 31400506, -30369176, -17949742, -61758408, -13471165, -70592080, 30496416, -83406120, 156241776, -9626095, -83560200, -181633088, -7111392, -61508228, -6534793, 86851752, 17223356, --8134668, -38827580, -81912544, -53602804, 39107824, 63381368, 20696374, -11084774, -28018220, -33360084, -32327146, 37343668, 22903450, 19995220, 8762270, 18644990, -1986959, 1766842, -18341658, -8407398, -1874753, 47131896, 41020696, -2130841, -17879412, -4583267, -42286636, -28260348, -1284732, 16073378, -43290048, 33538862, 23566486, 2179159, -58849104, -52795348, -35974648, 13852880, 56315076, 109620448, -66880156, -50539416, -91258392, -80380848, -32638530, 2295660, 74815648, 94476936, 70224864, 12411382, --56346748, -127380680, -80533856, 25942140, 78785272, 90319944, 26107496, -13225815, -35366908, -41518912, --24072754, -7653632, 8575439, 19859928, 24829742, 19891604, 4555887, -1738388, -17478906, 871878, --10297184, 51507932, 30177514, -4413616, 11043972, 5681705, -36484672, -3705483, -2859375, 4110821, -1257889, 3047279, -13268765, -5235029, -4822175, -3251290, -5973226, 22024592, -7754027, 9530532, --16372952, -1541356, 6923488, -660351, -4894115, 37953552, 5352603, -21298742, -24774446, 5354751, -5348845, -14506789, 4174708, 19125490, 9986336, 18008798, -18191334, 5663988, -532039, 4420595, --12771085, 2574833, 14413910, 20368882, 5240934, -5148592, 6051609, 2412161, -4600984, 13927505, --20278688, 4728222, -33102924, -10278394, 13832479, -11151346, -13238700, 18183280, -11409581, -30884036, --23891830, 21380884, -2544768, -4093104, 4993437, 10893111, 27042724, -17440788, -22771916, 1095217, --3037079, 18361522, 237834, 10786810, 4982162, -1682017, 28082644, -36326832, -5242545, -5023501, --21310554, 5607080, 12079059, 656056, -12657805, 5787469, -2785823, 3767760, -10934987, 8227010, --484258, 1453310, -892279, -2564096, 14275398, -14126147, 1189169, -2296197, -5052492, -4417911, -1733556, -6028524, 6583111, 8505109, -8617852, -2049773, -3256122, 7811472, 8545374, -4113505, -10515691, 1190243, -1445257, -6877854, 7595113, 2778844, -2931852, -11474005, 5551245, -10389526, -6856916, -5526013, -5083631, 9842454, 9669045, -12957379, 1610613, -2879239, -12864501, 4384088, --7513509, 8663486, -7409893, -29948270, -33041184, -78792784, 22955526, 22704270, -1470489, -66405028, --42877196, -6198712, -10778220, 44588740, 30128658, 14552423, -29318520, -12032888, -7669738, 27964532, -3194382, -7810398, -17151416, 11538430, 5207111, 13970992, -622770, -5538361, -6939057, -15808701, --7815767, -9521406, 26732950, 14331769, 3269007, 4101694, -17376364, -826244, 2266669, 24391656, --1617055, 11426760, -8885750, -6180458, 5086315, -9901510, 6752226, 3010235, 7252589, 23788750, --1933809, 20886962, -134755, 13448079, -10184978, 975494, -15042586, -19559818, -20539070, -17606144, -5973763, 3163780, 1665911, -25976500, 13023951, -22599044, -2416993, 1269163, -14068165, -15307263, --7983808, 365609, -26951456, -18251464, 16982838, -8100845, 15822123, 2571612, -4198868, -14575508, --16769163, -1023813, 24155970, 29824252, -7262790, -2976412, -11040750, -14843407, -10144176, 9552007, -5191542, 3714073, 9458592, -1778653, -6017249, 6508486, 3705483, 5424544, 8294656, -4510253, -2896419, -850940, 339839, -6155225, 10910828, 3456375, 2605435, -3183645, 1709934, -188979, -16924318, 2179159, 5182415, -9370545, 785979, -6056978, 11129334, 790274, 322659, -3835943, -2703145, -1238024, 294742, 5276368, 654446, 6905234, -4527970, 2251100, 881005, -8817568, --322659, 5054103, 2094870, -1815161, 3047816, 17723720, -38173668, -94637456, -90706488, -13784161, -27418534, 91231544, 78849696, 74319040, 79846664, 44433048, 10749766, -40340480, -40510668, -84208736, --65376380, -57342644, -36359044, -45762340, 62986232, 51788716, 68209448, 39307004, 55752432, -2051384, -14689325, -8987219, -21741124, -12471511, -25994216, -30281666, -30121680, -29758218, -35175244, -25796110, --20907900, -2409477, 5558762, 49413060, 41520524, 21835076, 23523536, 32582158, 30298310, 14542222, -70420280, 9116605, 946503, 13167296, -26269094, -80809808, -23079006, -64787436, -69409352, -73409048, --51866560, -46264312, 2342905, 38280508, 39135204, 47711180, 86914032, 62480500, 76279160, 74880608, -47847008, 51355996, 17595408, -18140332, -58650464, -77061912, -87944824, -57293788, -78923248, -66415764, --75776112, -44302052, -5233418, 20716238, 61411052, 58494772, 59500868, 98931888, 69027640, 81767584, -51027968, 8414378, -9553081, -24856050, -40918152, -45957224, -48565344, -47449188, -54562728, -46885472, --34193844, -21117280, -10838350, -8318278, 23771570, 22441740, 31803160, 51208360, 57856432, 36569500, -44219908, 27145268, -1612223, -12094091, -26584236, -33415920, -28511066, -24772834, -29803852, -11020349, --7330973, 563714, 8502425, 9269076, 2427194, 1168768, 8331163, -1321239, -7137699, 6499896, -3978214, 4599910, 7376070, 2050847, 2012192, 4327717, 10233833, 8596377, 4054986, 726386, --2181844, -8805220, -6536940, -8018704, -6817724, -2864206, -5253819, -4750234, -2521683, -2150168, --2786360, -880468, 3349001, 3157338, 4093104, 6346888, 4387846, 3020436, 4216584, 1497870, -1838783, 1742146, 1230508, 1025960, 469225, -1191317, -2535105, -4860293, -3694209, -3993783, --3145527, -1690070, -645856, -1548336, -908922, -1285806, 239981, 1104344, 1921461, 3629784, -3621194, 1396401, 1500017, 648003, -507343, 899259, 720481, 197032, 1230508, 347355, --456340, -1083406, -893890, -1092532, -867583, -961536, -305480, -587337, -673773, -2194728, --2478196, -2471217, -1744831, -421444, 755914, 2049236, 2652679, 2731062, 2934000, 2322504, -2564096, 1744831, 843961, 139050, -344671, -1328756, -2025614, -2451353, -2190970, -2312303, --1879585, -1832877, -1534377, -729071, 135291, 536334, 1236951, 1797981, 2083596, 2003065, -1743757, 1179505, 708670, 124017, -86436, -444529, -532576, -588411, -524523, -495532, --375810, -284542, -155693, -93952, -46171, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +7208566, 353261, 3310883, 3283503, 9331353, 4386772, -3447248, -4356708, -6072010, 4347044, +-5311801, -3867618, 869194, 1332514, 577136, 5469641, -1786170, 5111548, -1307818, 4587562, +-4346507, 2007897, -1918240, -4655208, -323733, -8873939, 1334661, 2167348, 3969624, -3246995, +-47245, 3449933, -2540473, 3876208, 3664681, -2207076, 2633889, -2954401, -1363115, -2188286, +-3172907, -4052302, 3625489, 5332202, -3991635, 2359011, 4305705, 3464428, 5269925, 647466, +-781147, 3049427, 2334852, -5576478, -202400, 628676, 364535, 1750736, 3616363, 792958, +1318555, -1946694, -1210644, 2535105, 3594351, 1980517, -1886028, -3339874, 3706557, -3017215, +-961536, 2049236, -609885, -154082, 1588064, 353261, 114354, 3328600, -3263102, 2473901, +1372779, 1614908, 3107946, -1266479, -343061, -1067836, -417686, 104690, 1530619, -1225676, +-202400, -854699, -461709, 26307, -100395, -508954, -324807, 315143, 467078, -35433, +-177167, -361851, 68719, -134218, 72478, -508417, -86973, 453119, -1046361, -518617, +3697430, -1941862, 2712809, 270046, -215822, -7494718, 1218160, 6404870, -3911642, 2652142, +-7956964, -8054675, -2643552, -6548215, -5709622, -852551, 1197759, 4515085, 732829, -2161979, +1036161, 3075197, -3948149, 5501853, -3705483, -4017405, 4671314, -2308545, 5379447, 6822019, +962073, -4908611, 3457986, 2254858, 1397475, -2494839, -1794223, 2868501, 2409477, 492311, +-5536213, -1597728, -5112085, 4641249, -4611721, -3016141, 3433826, 166430, 2983392, 852551, +1158567, 5049271, 875636, 5662378, -7272454, -3741454, -1663763, 3619047, 5135171, 5845988, +7973607, 866510, -2241436, -757525, -1043140, -240518, -5143224, -2260227, -2223719, -627065, +822486, -4189741, -2456721, -944893, -1759326, -3275986, 3963181, -3938485, -1317481, 2623151, +-6722698, 2040110, 3706020, 4081293, 2174864, 1182727, 2473364, -1199370, -2590402, -661425, +732829, -282931, 733366, 127238, -699543, 49929, -1020592, -1235877, 1531693, 673773, +-110059, -13959, 17717, 1137630, 559956, -448824, -436476, -469225, 115427, 839129, +-970663, -173409, -25233, -190589, 587874, -32749, -374199, 8527658, -6336688, -2383170, +-1255204, 5239860, 4730370, -4791036, -442382, -8886287, -1945083, 10754061, 4049617, -4339528, +7722888, 2512019, 2967823, 779000, -2595771, -8482024, 1134408, -3825742, -2418067, -1558536, +-5166309, -1837709, -3999688, 2778844, -1811939, -2349347, 4831838, -9128953, 8387535, -2967823, +1190780, -2866354, 2616709, -351114, -840203, -236760, 3569118, 165356, 2255932, -3270618, +6283001, -4899484, 7316477, 1546725, -726386, -4109747, -4809290, 9935333, 1713155, -9337796, +9534827, 8975945, -4883378, -1801739, 2820720, -3694209, -688269, -2281702, 2254858, 5720360, +-3490198, 1297617, -2614561, -2401424, 937377, 7704635, -7080254, 4280472, -7297687, -5623723, +-5271536, -944356, 141197, -18790, 4411469, 6818261, 1779727, 1642825, 3333432, 2690797, +1490891, 1680943, 1996623, -756451, 2150168, -1001801, -2121714, 3620658, -188442, 484258, +-666257, -1096827, -638876, 6979, 1531693, -406411, 338766, 136902, -1374926, -4832, +751082, 950262, -118112, 662499, 2240362, -3468186, 197569, -6659347, 6029061, -9280351, +188442, 9354439, -17450988, 11879343, 4650376, -4753455, 3629247, -506806, 10331007, -1250909, +-8837432, -6215892, 3369402, 3915400, 1012539, 137976, 4303021, 1187022, 579821, 5902359, +2324114, 1585917, 4208531, 2993592, 14799384, -4249334, 3830037, -352724, -2602213, 3743601, +2263448, 1383516, 1750736, -2583423, -4285841, 141197, -153008, 81604, 2017024, 4430796, +-4800700, -5073430, 1988033, -1314260, -2038499, -3089155, 5936182, -4495220, 8644695, 4003447, +240518, 1936493, 594316, 2276870, 11023034, 9258876, 565325, 404801, 1998234, -2371896, +4032438, -1045288, 3621731, 1038308, 96637, -117038, -4914517, 4441533, 3342022, -1140314, +-2888366, 259309, 4242891, 311922, -1382443, 133681, -3475166, 2291902, 759136, 2953327, +-962610, 795643, 1139777, 1167694, 929860, 1729798, 727997, 709743, -4203699, -345745, +1432909, 2166811, -1538135, 1369021, 1211181, 1107028, 1217086, 477278, 907849, 1220845, +1334124, 131533, 418759, 325344, 527744, 113280, 228170, 823560, 204011, -278099, +-1053878, 461709, 1211181, -1126355, 2188286, -1037772, 4825933, 97174, 5572720, -2154463, +4939213, -3765076, 10352482, -7946227, -2984466, -3797825, 10672994, 6044630, 3907347, 6781754, +-6163815, -1249299, 9843528, 5594732, 4603668, 4786741, 2527588, 3287798, -1162326, 9463424, +-1016834, -4361540, -3274376, 3317862, -3606699, 2169495, -8990440, 3317862, -1755031, 178778, +-9659918, 4152697, -2105608, 9037148, -1516660, 2866354, 2433099, -3796751, -992137, 4125316, +518617, 2833605, -2085744, 5022428, 7050189, 913754, -5006858, 1918777, 4939213, 3588982, +605590, -3374771, -7038915, 5872831, -7832410, -3266323, 4299263, -10284836, -2422362, 6419903, +-4825396, 1372242, 24696, -550830, -1444183, 2631741, -5207648, 317828, -8652212, -4409321, +-11802033, 923418, -3362960, 296890, -2346126, -324270, -3058554, 2731062, 2494302, 1082869, +-1932198, 2528662, -360777, 1017907, -3462818, 913217, 609885, 1137093, 656593, 2377801, +-385473, 2677912, -1236951, -115427, 1730335, 2521146, 291521, 1424855, -1676111, -533113, +-543313, -546535, -1234803, 834834, 1818382, 595390, 1921998, -1846299, -1257352, -1000191, +-2771865, 357556, -498753, 1336272, -477815, -446140, -2903935, 2960843, -18807124, 3463354, +-5826660, -3331284, 4493610, 3433826, 2462627, 964757, -13776644, -1342177, 4487167, -7358353, +-1810329, -10113574, -5060545, 2399813, -1066763, -9307731, 9963250, 6032819, -2851322, 1165547, +7871065, -4887136, 2225330, -3315715, -5235565, -3580392, -9591199, -3546569, 7498476, 3548717, +9539659, -4670777, -15213311, -6562710, 3904125, -4857071, -9866077, -1624035, -1738388, 9206799, +4804458, -10597832, 7259032, -7486665, -325881, -5395016, -5120675, -4939750, -11667279, -6932077, +986232, 7632694, 11559904, 7379291, 2247879, 4604205, -5115306, -8710731, -5299453, 5585605, +-2575907, 6019934, -1703491, -5524402, -175020, 551366, -2586107, -6231998, 489626, 4760971, +-15236396, -10098005, 14413910, -4610111, 389231, -7856032, 3878356, 2157684, -830539, -579821, +5335423, 3904662, 1276142, -1606318, -1855963, -326418, -2084670, 1260036, 1636919, -2998961, +-1430224, 1148904, 437550, 28454, 993748, 3002182, -3083250, -1439351, -5717675, -2345052, +-781684, -1067836, 383326, 843961, 1741072, 134218, 2207076, -2499671, -1715303, 460098, +601295, 858457, -2028298, -1159104, -2830384, -124554, 1053878, 7065221, -380641, 3485366, +-5144297, 3461207, -6963753, -663036, 11621108, -5742908, 10970420, 11110007, 13757854, 3296388, +5407364, 11821897, 9239012, 6730751, -9473087, 1021665, 2785823, 7861938, -1742146, -7102266, +8789114, 8872866, -2724083, 5845451, -3159485, -3357591, 5539971, 4711579, -833761, 5626407, +371515, -9730785, -7756711, 8035347, 11816529, -1145683, -4275103, 2318209, 235149, -5907191, +-10815265, 5367636, -10231686, -5131412, 7599945, 1421634, 6711424, 75162, 10822781, 1301375, +11899207, -14200236, 12565464, -2685965, -592706, 3595425, 6593849, -5604396, -11675869, -3512747, +10506564, -2296734, -12481712, -7549479, -7682623, 1816234, 4389457, -11021960, 5364951, 6000070, +11118060, 3207267, 3447248, -204548, 3074660, 334471, 2391223, 1449015, -8241506, -1156957, +3823058, 2480881, 6546604, -4588099, -1396938, -327491, 475668, 2898566, 347892, 2347200, +1001801, -1527398, -615791, 2220498, 2230162, 613107, 2438468, 426812, 1047435, 3009698, +-12348, -2036351, -965294, 444529, 1551557, -500901, -809601, 2370822, 1321239, 306553, +-2759517, -1160715, -1595044, -1643899, -166430, 2539936, 120796, 2399276, 1904281, 1509144, +-226023, 115427, 3729642, 12017855, 1519882, 5000953, 14299020, 15403900, 4580583, 3850975, +-11428371, -5792301, 12590160, -9393630, 12869333, 3606699, -67646, -2598455, -4519916, -7478612, +1353452, 5678484, -13872744, -6309307, -5905043, 3044595, 2777770, 3006477, 423054, 2323041, +-510027, 4146254, 3394098, -3710852, -6502044, -12020540, 2114198, -6511171, 10824391, 398358, +-6003291, -7577933, -2299418, 4988605, -9403831, 5852967, -3139084, 1904281, -97174, -6742562, +6670621, 8387535, -5763309, 7050726, 2040646, -585189, 20230370, -5124433, -13090523, 2444373, +4951561, -3318936, 1117228, -5746666, 13748727, 7941395, -1336272, -2976949, 9774272, 9271224, +-1920387, -7982734, -5737003, 19049790, -1725503, -2671470, -7664369, -5040144, -1500554, 1814624, +-1959042, -5123896, 8265128, -2648384, 9802726, 2786360, -3032247, -1122597, 1793686, -100395, +-1622424, -1751273, 3490198, -4388920, -1012002, -1212791, 5696737, 468151, -1169842, -192737, +-2813741, -2734821, -292595, 517544, 5981279, -1443646, 3576097, 1287953, -1850594, 1158567, +317828, -2922188, 2287607, -1484448, 3132105, -356482, -3033858, -2354179, -1692217, -2369211, +55835, -791885, -889595, 998043, 1187559, 1591285, 716723, 5102421, -10403485, -2849711, +-3186329, 1008780, 4613332, 10517301, 9204652, -14371497, 461709, 1839320, -1340030, -4195110, +-9863392, -888521, 3498788, 6073084, 4956929, -9039296, -1472100, -11494406, 11025181, 613107, +-956167, 5374078, -5056250, -813359, -12262669, 2213519, -7271917, 5239860, -846109, -1941325, +-4067871, -8089571, -7875360, -816581, -9743133, -15947214, -2871723, -7197829, -15336791, -1127966, +-1213865, -8329552, 5652177, 8614094, -942208, 4170950, -959388, -1219771, 2412161, 2630131, +-12406013, -3567507, 6972343, -5908802, 15077483, 2826089, 4100620, -9539122, 12348, -4241280, +-9752797, -930397, 14000520, 6565395, 10662256, 5985037, -4498978, -11084774, -17411260, 11877195, +12152073, -1315871, 6328635, -13535053, 6638946, 5713917, 9912248, 1599875, -11588359, -1381906, +-10795937, -3657702, 1004486, -3415036, 2408940, -2302103, -3518115, -817654, 1151051, -419833, +-1086090, 3332895, -904628, 1367410, -7814693, 265214, -556198, -1130113, -3495030, -1403381, +2466922, -3210488, -3786014, -1273458, -1305670, -1477469, 69793, -824634, -4203163, -3337727, +-2055142, 1333587, 1516124, 2635499, 1275605, 2429341, 868657, -2977486, 703838, -387621, +-1833414, 1272921, -3524021, 1653026, -1878511, -204548, 2496987, -26996016, -6667937, 21667574, +7321309, 8902930, -5499169, 8989367, 15148887, 1213328, -2411624, -24930138, -5721434, -1070521, +14475650, 4144107, 5877663, -18654654, -4926865, -6873559, -4341138, 11761768, -6455336, -2184528, +2150705, 3437048, -5794448, -2493229, 3143379, -5145908, 11598022, -12759274, 1527398, 8563091, +-10879689, 9131637, 15506443, 17986786, 8732742, 8847633, 11887396, -7967165, -14631343, 5983427, +6564321, 9854802, 7915625, -16611860, -4605279, 8857833, 5217312, 3273839, 10627897, 2435247, +12356084, -4460324, -2479270, 7063074, 6609418, 2025077, -10598369, -5672041, -11395085, -13153337, +-611496, -14394046, 927713, -8351027, 762894, -7590281, -4361540, -18514530, 12986907, 3449396, +-2598455, -3266860, -1924682, 2549600, -6707129, -902480, -16000901, -8801999, 5798743, 7376070, +3184182, 2513093, 803696, -8426189, 4055523, 3927211, 3186329, -8051453, 2027761, 365072, +-6274411, -2129230, 1300838, 1063004, -3144453, -4799626, 1777043, -2337536, -2786360, -693637, +884226, -563178, -180926, 1682554, -1321239, 2325725, -203474, 3300682, -1255741, 2952253, +4763656, -3210488, 2741800, 256624, 1969243, -1967632, 3221, 2670933, 2323041, -3964792, +2328946, 2127083, 17065516, -8222178, -7027640, -6220187, 11768210, 14925011, -9272298, 23913842, +5065377, -10137197, 12264816, 3540127, -9884330, -11620034, -9375377, -704912, -5012227, -3414499, +-15512348, 6295885, 6528887, 21571474, 2959769, -3617973, -9667435, -10120554, 2618856, -1151588, +-13568875, 2464774, -5007932, 704912, 10547366, -8079371, 13935558, -12149389, -10218264, -641561, +-15928423, -19046032, 3131568, -2137283, -22009560, 1576790, 282931, -10437307, 5534602, -5043902, +2808909, -14843944, -24295020, 16020228, -14856829, 24790552, 13526999, -17629230, -2246268, -17864380, +-4813048, -2219961, 7452842, -6402723, 11364483, 14360760, 13600551, -9756555, -7980586, 1321776, +-12015171, -1072131, -3911105, -15822123, 9498320, 7078643, -8445516, 12542378, -18553722, -1734093, +1120987, -4813048, -3122441, 16173773, 11918534, 7977365, -967978, -8372502, -6817187, -6300717, +2794950, 2644626, -512175, 1870995, -490700, -701153, 340376, -633508, 648003, 3259880, +-3835943, 1571421, -277562, 3583077, -2071785, -327491, 2038499, 4772783, 1867774, 3859565, +-4562329, -4927401, 2348810, -3268470, 784368, 19327, -5322002, -2921115, -3185255, 95563, +1716376, 1613297, 1040993, 1282585, -765041, -14761266, -11299522, 6895033, 8423505, 9339406, +16013249, -6328098, 29722248, -1238024, -15840376, 6482180, 14503568, 3753802, 7483981, -6880001, +-16939888, 24739012, 13613973, 9963250, 4575214, -8965744, 7779797, 20554640, -7947300, 4176856, +-488553, 4095251, 3313567, 14561013, -4554813, 4757750, -5518496, 4224101, -1686312, -1091995, +8955007, 1667521, -18685792, -12651900, -17525614, -12121471, -9418326, -4846871, -13474923, -7776575, +-6747931, -11758010, -8218420, 4758287, -12215961, -4425964, -9538585, 21910238, 11048803, 19035296, +-17764522, -1947768, -16251083, -3686156, 17693118, 9563818, 20890184, 9772661, 12838731, -14199699, +6038724, 5857799, 19332184, 19561966, 5716065, 17669496, -15716896, -7707856, 11298985, -40936408, +499827, 6364605, 618475, 9772124, 6284074, 22593138, -2000918, -3484292, 24592446, 7180649, +-2428267, -11434277, -448287, -128849, 20117090, 2378875, 328565, 1320703, 3893925, 6017786, +-1352378, -1481227, 6347962, 2826625, 1921461, 3140158, 4552666, 3354906, -455267, 476741, +440771, 6458557, -1409823, 3250753, 6348499, 4500589, 7108171, -3532611, -2630668, 1402844, +2169495, -2800856, 9127, 3879966, 6592238, -754304, 1832340, 697932, 17507898, 11383274, +-11445014, 22373558, 13288092, -1123671, -5568425, -2806224, 13444858, 33039036, 17666274, 4751308, +1395864, 10853382, -2635499, 26665842, 15094126, 16653199, 697395, -8496519, 5672041, 1999307, +-14161581, -3506841, -874026, -3365107, -4020090, 5397700, 2974802, -11653857, -5551782, -20580946, +-2080912, -6416681, -26422102, -11908334, 837519, 9868224, -13577465, 16990354, -4676146, -4104915, +-2276870, -4198868, 12428562, -8379481, 8703214, -27171036, 8443369, 11780558, 9181029, 18017924, +-17792976, 15418396, -15963857, -12027519, 13452374, -7911867, -2319282, 11172284, -18103288, 16041703, +25898652, -601295, -3681861, 32876364, -7022272, 6263673, 18655728, -39695700, -20198158, 1258425, +1289027, 5283347, 9614284, 19175956, 11677479, -15245523, -12046310, -3695283, -4235912, -20565914, +-1901597, -4184909, 5146445, -21490942, 344671, -6555731, 8798777, -3344169, 11178189, 2853469, +205622, -6455873, -4538170, -6080600, -6192269, -4962298, 4476430, -13131326, 9439801, -1686312, +5313949, 177704, -701690, -9016210, 5005785, -6448357, 1748052, -6845641, -3512210, -198642, +-2816962, -7839926, 718333, -2568391, 1002875, -5394479, -5611375, -6317897, 1273995, 1148367, +7955890, 8143258, 106300, 10737, -9960566, -5936719, -31372588, -18854906, 23170812, 23038204, +2513093, -5401458, 19544786, -31470836, -16874926, -34055332, 14954539, 4176856, 1556389, 6649146, +-15470472, 7894687, 10833518, 14186814, 24017994, 24679418, 20742008, -797253, 4723927, 309238, +-8965744, -1823751, -7479149, -3846680, 28615220, -6634651, -26226680, -6601902, -5361193, 2386928, +41210212, -14846628, -14714021, 13967771, -22250078, 7744900, -24693914, 32352378, 9176198, -871342, +8334921, -12437152, -15735686, 22174380, -26884884, -21482890, -19307488, 5395016, 8135205, 10103911, +-17909476, 18447958, -5644661, 1414118, 28427852, -1913408, -4779762, 8381092, 22952306, -14803142, +38034084, 1433982, -43725988, -5301601, -1635846, -14593225, -4168266, 15032, -4046933, -11915313, +-9993852, 21559126, 14482630, -5280663, 14016626, -25121800, 7108171, 11290932, 7064148, 835908, +13503377, -2195265, -542240, 5057861, 13204340, -5424007, -5680094, -4463008, 662499, 4991826, +-2474438, -10349797, -11089606, 569620, -5172215, 3891777, -70867, 2753074, 5984500, -7232725, +-4727149, 12559558, -2826089, 2289755, -893353, 353798, -4204773, -4746476, -2336462, -1578401, +-6582575, 3244311, 6177237, 3434363, -30065, 589484, 2838974, -5094368, 1266479, 5856725, +-488553, 5027259, -2736431, -9073655, -12213276, 314069, 5277441, -9043591, -4212289, 41611792, +24591908, -33838972, -27376658, 33463700, 31887448, 19898046, 22870164, -40256728, -8965744, -11210402, +10414759, 3738232, -16353088, -29773788, -45028976, 12970264, 11674258, 3325915, 12173011, -6280853, +-2419677, -10799695, 8740258, 15377594, 13770202, 3491809, 18350248, 5790690, -2267743, -7699803, +-27441620, -1615445, -11645267, -9657771, 9313637, -29404956, 2448668, 1033477, -13825500, 11803107, +10778220, 5268315, -19862614, -18459770, -48438104, -12428025, 165356, -15604690, 2546379, 10052908, +9975062, 26846766, 13063143, -12064563, -8541616, -18073222, 22515830, -9681930, 39105140, 32694364, +8913668, -21115670, 43190728, 19822884, -17762910, 2557653, 21604222, 50334868, -21047488, -38707856, +-20096688, 399432, -14108968, 5960878, 13721347, 11493869, -10324565, -15902116, -8919036, -13254806, +-14621679, 3880503, 15479062, 12407087, 6843494, 6123013, 2080375, 10420128, 1224603, 1578937, +15122580, 11906186, -911070, -5147519, 3255048, -8097624, 8317204, -3150896, 8516920, -4580046, +3280281, 2176475, 5554467, 7330436, 4162360, 3357054, -7454990, -14355391, 1471026, -7334731, +-3887482, 4205310, 1066763, -2201171, -2989834, 10210748, 3170223, 13849122, -4694936, 7373385, +-7218230, 7154342, -9867687, 9516037, 128849, -8303783, 16362215, 5645735, -6147172, -16498580, +13246753, -27743878, -25694104, -9438728, 19360638, -11578695, -14742475, -435402, 22354232, 2105071, +23110146, -8121783, 27962384, 2981244, 14840723, -10188199, -6930467, 8671002, -29458644, -8397735, +10700911, -5457293, -4215511, -23720030, -22455162, 10046465, -13808320, -9949292, 17897666, 24694988, +-3946001, 16165720, -29767344, 1575179, -8281234, 38078644, -16065862, 12538620, 23205172, 22134114, +6278169, -15787226, 9683541, 6937446, 6546604, 12179990, -37963216, 69450696, 22033182, -6286759, +3446175, 7646653, 19123342, -5529234, 14675366, 40447856, -2518462, -50347756, 20783346, 17328582, +-18025440, 23449984, -5388574, -10650982, -27106076, 51892868, -26978838, 57794692, -38331508, 14203457, +-918586, 62804768, 27736362, -27005144, 25626996, 1016834, -16889422, 12538083, 1787780, 5586679, +13909252, 5889474, -16340203, -4305168, 19026706, 5048734, 10699837, -8928700, 11844446, -20391968, +7390028, -1234266, -6710350, 12539157, -7164006, -4035122, 8942122, -1632625, 1213328, -1685775, +15137612, -10087804, 14770393, -8886287, 13655312, 19216220, 7034620, 5153961, 10537165, -2854543, +-7721278, -7463043, 9077950, 3118683, -1654636, -201863, -2523293, -13932874, -10774999, -2219961, +319975, -3225521, -8215199, 47862580, 5806796, 26023206, 13331042, -26200912, 1743757, 15671799, +-4588099, -22813792, -4276714, -49846852, -13864691, -18528488, -10653666, 10961830, -1348083, 17928804, +-8643622, 1994476, 17521320, -15455977, 1795296, 9978283, -859530, -16969416, 91268, -11644193, +34564288, -5993627, 20084340, 3276523, -213138, 35358856, 25565792, -15511274, -18130130, 8992051, +16112570, 19419158, 23662048, -403190, 8429947, 22351010, -1086090, -8954470, 7117298, 804770, +-19656454, -430034, 13165149, -19449760, -26097832, -2465311, -1456531, -2797634, -8671002, -9461813, +-31117038, -4295, 30814242, 9463960, 17202418, 10098542, -3983582, -40372692, -29484414, 7975218, +26275000, 8548596, 13348221, 53069688, 55234352, 46629924, -3563212, 23182622, -14635638, -39127152, +-65112240, 11361799, 8188355, -2894808, 9208410, -20623896, 4573067, -5012227, 24068460, -1781338, +19358492, -23625542, 11797201, -29016800, -5476620, 12276627, 2238752, -14766098, 3625489, -12159589, +-13018583, -5604396, 3651796, 11110007, 14496588, 18853832, -4369056, -1004486, 5046050, -5151814, +6238977, -19510426, -16470663, -11573326, -15395847, -15022722, -15720654, 10365367, 7740605, -2641405, +-10230612, -15908559, 9905268, 183610, 15527917, -3724811, 13798656, 10008348, 870268, 4323959, +16514149, -19417548, -17979806, 11209328, -1350230, -3846680, -8477729, -15013595, -31344672, 8661338, +-18883898, 8934069, -8324184, -22174380, -7012071, -317291, 10695542, -9466645, 5345087, -32454920, +30012158, -67833104, -6964827, -17070884, -14056891, 8912057, 38540352, 6072010, 13865765, -33478196, +7285339, 12144020, 26436060, -13992467, -21729850, -15095736, -7489886, -1153199, -753230, 15968152, +11543261, -9622874, -49052820, -23337778, -39921184, 4491999, 69927976, -49710488, -19812148, -7740068, +40345848, -13660143, 16965120, -13057237, 19364396, -7837779, -11988327, -25268904, 12826920, -29266980, +26834956, 48631376, 6113886, -9084393, -9259413, 40321688, 10579041, -459025, 21223044, 6919729, +7582228, -7873212, 46588048, -73550776, 53046068, -44850732, 21104396, 52428664, -42284488, 85072024, +57886496, -21922586, -7431904, 58480276, 21240224, -5647882, 38427608, 34481608, -45117020, 60339996, +-36705328, 10664941, 11431592, -16288127, 11508902, 19660212, -12360916, -22203370, 7031399, -12006581, +4977330, 4984847, -6227703, -17426830, 6761353, 6104223, -7243999, 7202660, 5719823, -14043469, +34078956, 3628711, 563178, 625992, -7082938, 5133560, 4463545, 1707250, -11301133, 5691369, +1422708, -4985920, -9928354, 21020644, -8149164, 17073568, 19471234, -2110440, -7416872, 5057861, +4677757, 7484518, 23499376, 20217484, -18413598, 8354249, -7568806, -1220308, 26863410, -5374078, +7395934, 10456635, -1822140, 49576272, 47245712, -40379672, 39336532, 36202816, -34082712, -51423644, +-75990320, 17662516, 113978768, 46814068, 150324, 23501524, -109073376, -45059040, -3927748, 16583942, +81948512, 80216032, 13782550, -30966714, -60473676, -35437776, 4018479, 25885232, 39133056, 63073744, +38016368, -50876572, -120268744, -97982160, -9711458, 108990704, 118508888, 74907984, 22803592, -25206626, +-48505752, -73189464, -41815264, -44527000, 87150792, 72575280, 45768244, 40587976, -61814244, -86485072, +-100442104, -89874872, 34507916, 121685552, 149747792, 50645180, -45512696, -106705776, -128080216, -34835404, +20484310, 13207561, 79959408, 31400506, -30369176, -17949742, -61758408, -13471165, -70592080, 30496416, +83406120, 156241776, -9626095, -83560200, -181633088, -7111392, -61508228, -6534793, 86851752, 17223356, +-8134668, -38827580, -81912544, -53602804, 39107824, 63381368, 20696374, -11084774, -28018220, -33360084, +32327146, 37343668, 22903450, 19995220, 8762270, 18644990, -1986959, 1766842, -18341658, -8407398, +1874753, 47131896, 41020696, -2130841, -17879412, -4583267, -42286636, -28260348, -1284732, 16073378, +43290048, 33538862, 23566486, 2179159, -58849104, -52795348, -35974648, 13852880, 56315076, 109620448, +66880156, -50539416, -91258392, -80380848, -32638530, 2295660, 74815648, 94476936, 70224864, 12411382, +-56346748, -127380680, -80533856, 25942140, 78785272, 90319944, 26107496, -13225815, -35366908, -41518912, +-24072754, -7653632, 8575439, 19859928, 24829742, 19891604, 4555887, -1738388, -17478906, 871878, +-10297184, 51507932, 30177514, -4413616, 11043972, 5681705, -36484672, -3705483, -2859375, 4110821, +1257889, 3047279, -13268765, -5235029, -4822175, -3251290, -5973226, 22024592, -7754027, 9530532, +-16372952, -1541356, 6923488, -660351, -4894115, 37953552, 5352603, -21298742, -24774446, 5354751, +5348845, -14506789, 4174708, 19125490, 9986336, 18008798, -18191334, 5663988, -532039, 4420595, +-12771085, 2574833, 14413910, 20368882, 5240934, -5148592, 6051609, 2412161, -4600984, 13927505, +-20278688, 4728222, -33102924, -10278394, 13832479, -11151346, -13238700, 18183280, -11409581, -30884036, +-23891830, 21380884, -2544768, -4093104, 4993437, 10893111, 27042724, -17440788, -22771916, 1095217, +-3037079, 18361522, 237834, 10786810, 4982162, -1682017, 28082644, -36326832, -5242545, -5023501, +-21310554, 5607080, 12079059, 656056, -12657805, 5787469, -2785823, 3767760, -10934987, 8227010, +-484258, 1453310, -892279, -2564096, 14275398, -14126147, 1189169, -2296197, -5052492, -4417911, +1733556, -6028524, 6583111, 8505109, -8617852, -2049773, -3256122, 7811472, 8545374, -4113505, +10515691, 1190243, -1445257, -6877854, 7595113, 2778844, -2931852, -11474005, 5551245, -10389526, +6856916, -5526013, -5083631, 9842454, 9669045, -12957379, 1610613, -2879239, -12864501, 4384088, +-7513509, 8663486, -7409893, -29948270, -33041184, -78792784, 22955526, 22704270, -1470489, -66405028, +-42877196, -6198712, -10778220, 44588740, 30128658, 14552423, -29318520, -12032888, -7669738, 27964532, +3194382, -7810398, -17151416, 11538430, 5207111, 13970992, -622770, -5538361, -6939057, -15808701, +-7815767, -9521406, 26732950, 14331769, 3269007, 4101694, -17376364, -826244, 2266669, 24391656, +-1617055, 11426760, -8885750, -6180458, 5086315, -9901510, 6752226, 3010235, 7252589, 23788750, +-1933809, 20886962, -134755, 13448079, -10184978, 975494, -15042586, -19559818, -20539070, -17606144, +5973763, 3163780, 1665911, -25976500, 13023951, -22599044, -2416993, 1269163, -14068165, -15307263, +-7983808, 365609, -26951456, -18251464, 16982838, -8100845, 15822123, 2571612, -4198868, -14575508, +-16769163, -1023813, 24155970, 29824252, -7262790, -2976412, -11040750, -14843407, -10144176, 9552007, +5191542, 3714073, 9458592, -1778653, -6017249, 6508486, 3705483, 5424544, 8294656, -4510253, +2896419, -850940, 339839, -6155225, 10910828, 3456375, 2605435, -3183645, 1709934, -188979, +16924318, 2179159, 5182415, -9370545, 785979, -6056978, 11129334, 790274, 322659, -3835943, +2703145, -1238024, 294742, 5276368, 654446, 6905234, -4527970, 2251100, 881005, -8817568, +-322659, 5054103, 2094870, -1815161, 3047816, 17723720, -38173668, -94637456, -90706488, -13784161, +27418534, 91231544, 78849696, 74319040, 79846664, 44433048, 10749766, -40340480, -40510668, -84208736, +-65376380, -57342644, -36359044, -45762340, 62986232, 51788716, 68209448, 39307004, 55752432, -2051384, +14689325, -8987219, -21741124, -12471511, -25994216, -30281666, -30121680, -29758218, -35175244, -25796110, +-20907900, -2409477, 5558762, 49413060, 41520524, 21835076, 23523536, 32582158, 30298310, 14542222, +70420280, 9116605, 946503, 13167296, -26269094, -80809808, -23079006, -64787436, -69409352, -73409048, +-51866560, -46264312, 2342905, 38280508, 39135204, 47711180, 86914032, 62480500, 76279160, 74880608, +47847008, 51355996, 17595408, -18140332, -58650464, -77061912, -87944824, -57293788, -78923248, -66415764, +-75776112, -44302052, -5233418, 20716238, 61411052, 58494772, 59500868, 98931888, 69027640, 81767584, +51027968, 8414378, -9553081, -24856050, -40918152, -45957224, -48565344, -47449188, -54562728, -46885472, +-34193844, -21117280, -10838350, -8318278, 23771570, 22441740, 31803160, 51208360, 57856432, 36569500, +44219908, 27145268, -1612223, -12094091, -26584236, -33415920, -28511066, -24772834, -29803852, -11020349, +-7330973, 563714, 8502425, 9269076, 2427194, 1168768, 8331163, -1321239, -7137699, 6499896, +3978214, 4599910, 7376070, 2050847, 2012192, 4327717, 10233833, 8596377, 4054986, 726386, +-2181844, -8805220, -6536940, -8018704, -6817724, -2864206, -5253819, -4750234, -2521683, -2150168, +-2786360, -880468, 3349001, 3157338, 4093104, 6346888, 4387846, 3020436, 4216584, 1497870, +1838783, 1742146, 1230508, 1025960, 469225, -1191317, -2535105, -4860293, -3694209, -3993783, +-3145527, -1690070, -645856, -1548336, -908922, -1285806, 239981, 1104344, 1921461, 3629784, +3621194, 1396401, 1500017, 648003, -507343, 899259, 720481, 197032, 1230508, 347355, +-456340, -1083406, -893890, -1092532, -867583, -961536, -305480, -587337, -673773, -2194728, +-2478196, -2471217, -1744831, -421444, 755914, 2049236, 2652679, 2731062, 2934000, 2322504, +2564096, 1744831, 843961, 139050, -344671, -1328756, -2025614, -2451353, -2190970, -2312303, +-1879585, -1832877, -1534377, -729071, 135291, 536334, 1236951, 1797981, 2083596, 2003065, +1743757, 1179505, 708670, 124017, -86436, -444529, -532576, -588411, -524523, -495532, +-375810, -284542, -155693, -93952, -46171, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -4386236, -7451232, 2618320, -1320703, 1911261, 2416456, 4479651, 7463580, -3540127, 2500745, -3012383, --2331094, 1519345, 49929, 646393, -5214091, -2524367, 1883880, 3725884, -459562, 3142842, --5591511, -4968204, 3177739, 2032593, 899796, 2309082, -1884954, 4053376, 4549444, 4401805, -6320581, -3464428, -2841658, 244813, 836982, -6004901, -341450, -503585, 1694902, 611496, --3728569, -910533, 5172751, -2724083, 1047972, -3127810, 1549946, 1601486, 1069984, -4668630, -3825205, 360777, 897111, -630823, -1495186, -1928977, -3149822, 6810208, -1151588, -1240172, --1476932, 3031173, 752156, -6415608, 1682017, -2924336, -4361003, 2614025, -2676838, -6948184, -2827162, 1031329, 356482, -6402723, -7723425, -3167539, -3779034, 3613678, -991064, -2147, --1703491, -2095944, -1693828, 59593, 3242164, 585189, -1363115, -110595, -1426466, -654983, -1472637, 433792, -1284732, -1817308, -568546, -743566, 762894, -454193, 327491, 259309, -827855, 200253, 1159641, -455803, 324807, -250182, 838592, -45097, 776315, 898185, -4294431, 464930, 321586, 3815005, -5825050, 915365, -4869956, -6148246, 1705639, 5669357, --3590056, 2665564, -2715493, -1335198, 1098975, 238371, -2885144, -8456791, -8404177, 102005, --2168422, -123480, 4313221, 652835, 5293011, 7179038, -3863860, 6193880, 724239, 6287832, -345208, 7470559, 901406, -4250944, -1212791, 378494, 3367254, -970663, -1186485, 702227, -2541547, -3167539, -246961, -1007170, 2240899, 2757906, 96100, -2888366, -260382, -557272, -1585380, 2900177, 5210332, -1879585, 3359738, -1581622, -4646081, -4133906, -2829310, 2555506, -2754685, -1587527, 4497368, 112206, 1593970, 200253, 5480915, 3638911, 4022237, 1623498, -2342905, 1449552, 2169495, 4494147, -1024350, -268435, 6334003, 1250372, 120796, 1297617, --2443300, 323196, 1822677, -176094, -6044093, 1842541, 569620, -990527, -2141578, 1351304, -341450, 3226057, -1269700, -622233, -1314797, -1042066, 754304, 207769, 1235877, 588947, -231391, -1204202, -1004486, -577136, -650688, 486405, -1626719, 1343788, -631897, 379568, --450972, -579284, -938450, 504122, -772020, -548145, -1768990, 6516003, -6558952, -4404489, --3609920, -5301064, 1738925, 2354716, -4255776, 1046898, 8883066, -6387690, 4526896, 7670275, -7581691, -4598300, -1226750, 3785477, 762357, 1209570, -3336653, 1907502, -11421392, 9057012, -14154602, 2551211, 4799089, -2239289, -144418, 7546795, -3890704, -8994198, -1457605, 191126, -21475, -7254200, 590558, 1876364, -8640400, -4024921, 4081293, 1427003, -3041911, -745177, -3060701, -4177393, 9046812, 2868501, 466004, -5713380, -520228, 3166465, -1910724, 254477, --2012192, -52613, -810138, -4562866, 339302, -4409858, 6802692, -6458020, -4292283, -1395864, --7762080, 5303211, -4153234, -10806675, -1949915, -4621922, 1377611, 5068062, -5032091, 701690, --3401614, 3620658, 539018, -3521336, 3130494, -3820910, -5100274, 5806796, -3656628, 1711545, -185757, 597000, 2049236, -1054951, -1705102, -1877438, -3090229, 1130113, -4386236, 332860, --853088, 1474248, -1274532, -26844, 49392, 202400, -2309619, 2191507, 143881, 482647, --1225676, -804233, -909459, -135291, 1372242, -5099737, 3213709, -175557, -1017370, 3814468, --3660923, -12812424, -2517925, -816581, 5566278, 7881265, 6990596, 3339874, -2770254, -894427, --7900056, -6715718, 2291365, 8956081, -2588792, 9175124, 5844914, -5718212, 3041911, -910533, -3182571, -6388764, -4296041, 1009854, 4577362, -619012, 2725694, 3782256, -7190312, -1481227, --3321084, -9820980, 6075768, 928250, 2203318, 4198331, 7751879, 2662880, 361314, 6041945, --1423782, -3155190, 6256157, -3338800, 10574746, 4829691, 4206384, 176631, -3039763, -3744138, -5187247, 6999723, -5231807, 1227824, 6731825, -1240709, 2193118, 14814953, -4487704, -1837172, -2896419, -7497939, -292595, 1285269, -3312494, 3570729, -2395518, 2182380, 7388955, 208306, --1685775, -5073430, -398895, -6289443, 2653753, -2367601, -3049427, -1331977, 1202591, -1848983, --1779190, -1567663, 359704, 2241973, 1722819, 411243, -508417, -753767, -504122, -404264, --1009317, -1896228, -328565, -629750, 999654, -56371, 518617, -1919850, 819265, 917512, --661425, -1691680, -569620, -1771674, -864899, -826244, 1299765, 70867, -229244, -197569, -338229, 135291, 707596, -2681133, -639950, 787590, -3327526, -18369576, -1552631, -454193, --3729642, -5743982, -1927367, 9753871, -7029251, -10482405, 3843996, -4298189, 1422171, 1786706, -6522982, -4564477, -1423245, 1228898, 6060199, -2935610, -4090420, -1272921, -3528316, 4447976, -8205535, 4095251, 7516, -751619, -4806606, -351650, 12947179, 2223183, -1683627, 14971182, --966905, 11117523, -3446175, 23085, 7523709, 2238215, 1821066, 2643016, 1264868, 4110284, -2365990, -7207492, 13211319, 8004209, 10836739, 7246147, 4747550, -7331509, 3147137, 3635690, -493921, -4519916, 12261058, 7398618, 11070815, 1920387, -2285460, -2807298, 8135742, -4060355, --8532489, 9899900, 3052648, -5533529, -3237869, 434329, -2624762, 915365, -1223529, 1347546, --3521873, -1005559, -8078834, 3018825, -1052267, -264677, 2880849, -1042066, -1564979, 4658966, --376883, 3608310, 4842576, 3969624, 2527052, 2524367, 971200, 1454383, -40802, -1069447, --1000191, 2102387, -670015, -1368484, -1438814, 974958, -1614908, -449361, -371515, 2636573, -1055488, 1877438, -1865090, 526134, -1508607, -550293, 1789928, -292058, -818191, -635655, --551366, -1103807, -783832, 744640, -111132, -507880, -4725538, -749472, -12080132, -4822175, --13499082, -9278740, 909459, -8800388, -6934762, 725850, -1605781, 8899172, -6052146, 9870909, -12145094, 1169842, -10455561, -7382512, 10903848, -5657546, -3073586, 6069863, -8106751, -14358613, -5651103, 12227772, -6403260, 3057480, -295279, 5281736, -14951318, 2877628, -6044093, 3506304, -238908, -6337761, 10320270, 4651450, 4325569, 13728326, 6386617, 2761127, 7777112, 1472100, -2482491, 3848291, 1265942, 530428, 2087354, 1786706, 15693274, 8749385, -84289, 13102871, -8226473, 9643275, 15199352, -7902203, -6553583, 13242995, -4699768, -627065, -7973607, -3471407, -4707821, 6968585, -6083285, -830539, 1972464, -1830193, 3639985, -6518687, -1240172, -7522635, -14339822, -4773320, 7814156, -2360085, -3878356, 10443750, 1817308, -3228205, 3402688, -1440425, -266288, -3126199, 3965866, -889058, 1407139, 4145717, 2424509, 1141388, 2383170, 47782, --414464, 1576790, 407485, -3072512, 602906, -758599, -1395328, 2507187, -28454, 1149441, -1061394, -745714, 482647, -1870995, 335007, -1723893, 111132, -796180, 1898376, 355945, -1629403, 287763, 1977296, 382789, 897111, 1034550, 181462, 4510253, -4903242, 1527398, -659278, 1515050, -7026567, 9043591, 5226975, 12301860, 2345052, -1703491, -13968844, -7474317, --5265093, 3525631, -7279970, -12083890, -3405372, 3063386, 1293859, -13487808, 10878615, 817654, --868120, -11489574, -6647536, 2684892, 1362578, -12759811, -4014184, 4639639, 463320, 1270237, -6477348, 7616051, 4403415, -1984275, 3791383, 1179505, -4626217, -9438728, 16192564, -4086125, --7970386, 149787, 3973919, 5247913, 12090870, 1995549, -279173, -4566624, -195421, 6738804, --911607, 8421357, 16072304, 1360431, -3559991, 495532, 13827110, 17380122, -8720931, 2434710, -2361695, 9404368, 4899484, 1670205, 2823404, -6900939, 4243965, 4497368, 4406100, -2969970, -187368, 3432753, 5104032, -705985, 1706713, 1221381, -5946919, 2862059, 205622, -5268315, --3923990, 5651103, -2597382, 3921842, -5713380, -4270808, -1999307, 1318555, -164819, 5111011, -2237678, 951872, 169114, 2580739, 2259690, 783832, -4362076, 237297, -1881196, 738198, --1438277, -988916, -137976, -373125, -695785, -1397475, -4283156, -1103270, 367220, -2762201, --1891933, -1723893, -16106, -1723356, -3051038, -617938, 1308354, 2359548, -879395, 736587, --1214939, 877784, -4599910, 6318434, -5774047, -10417980, 7093139, -915365, -2588255, 2649458, -6029597, -17430052, 1000191, 13227962, -1611150, 23856932, 11372537, -7383586, -5428839, -2319282, --6977175, -3147137, 10621991, -4187593, -3566434, 10631118, 8630200, 2792803, 4923107, 9931038, -6563247, 7412040, -5548561, -3831111, 9443022, -1944547, 8543227, -22012, -10332081, -6682432, -2723009, 8042327, -11231339, 620086, -6023155, 3051574, -6874632, 9418326, 9414568, -9323837, --1039382, 2623688, -354335, -12581033, -5659693, 2066953, 8237748, 13565654, 4585952, -10185515, --2282238, -2537252, -1237488, 8503498, 1313186, 6798397, -10388452, 4563403, 656056, -8275865, -9659918, 4047470, -1359894, -2254858, 1628866, -444529, -8409546, 6220187, -1982127, 3676492, --6544994, -11571179, -6418292, 2638184, 5082020, 42950, 2786897, 10234907, 61740, -2718714, -6442988, -2090039, 6062883, 278636, 1940252, -5322538, 493921, 56371, 2760053, 2998424, -4286914, 2667712, -1105417, -1349157, -2052458, 5048734, -2441152, 2589865, 521839, 1529008, -2068027, 2790118, 1231045, -1069447, 2553358, 933082, 833224, -1079647, 3449396, 1562831, -698469, -3545496, 1228361, -1448478, -66035, 2283312, 667331, 10992432, -13732621, -2251100, --4443681, 13919452, -6337761, 11456288, -3682935, 10691247, 14513231, -6546604, 4519380, -3787624, -8229694, -3233037, 6837051, 5677410, 5329518, -1310502, 5609228, -2944200, -7332046, -3546569, -7996692, -9527848, 1405528, -98247, 7111929, 14523969, -13441637, 408022, 12979928, -380105, -11857868, 1573032, 5156645, -1707786, -1110786, 3169149, -18537078, 1760400, -541166, -7391102, -4779225, 2965675, 13281649, 6605660, -1431298, 25362318, 6229850, -13446469, 3439195, 1233729, -8770860, -5823439, 1597728, 7448010, 483721, 4517232, -1444183, -14679124, -15093589, -20401, --5177046, 11988327, -20475720, 26131118, -268972, 14526653, 16556025, 3959960, -4534412, -3379603, --7950522, -10424422, -1008780, 3297998, -2753611, 5192616, -3626563, -8402030, -5401995, -4270808, -1377611, -1354525, 792958, 5557688, 2689723, 2610266, 1923609, -2389613, -3011846, 117575, --744103, 1558536, 248034, 600759, 1629940, 3206730, 1803349, -6534256, 1044751, -1272384, -4581657, 4715874, 2613488, -484794, -1525250, 1824287, 1343788, -2337536, -2565169, -641561, --1801739, 414464, -1916092, -3180960, 1102196, 5209259, -1504312, 2079301, -4176856, 488016, -2164664, 2376191, -274341, 1516660, 3224984, -2515240, 1094143, -24186572, -1684701, 8273718, -1385127, -9063992, -22463752, 22549, 2593087, -3911105, -918586, -6588480, 3506841, -5478231, -11602854, 4124242, -6884833, -8593156, -14767171, 11108396, -4700842, 797790, 14424111, 19859928, -12094628, -1796370, 1049583, -13544179, -5800354, -5417565, 3660923, -19232326, 5048734, 5319317, -1112933, -9860171, 9527311, 14860587, -2378875, -201863, 1733556, -8533026, -9077950, 5288716, -3584150, 11260867, -12307766, 13426068, -7034083, 7430831, -11396159, -8930848, -4506495, -223875, --1349694, 4947803, -2458869, -19857782, -14947560, -4133906, 528281, -19908248, 275415, 9959492, --5293011, -2232309, 3023657, 8483097, -17588428, 9064528, -3099893, -2564096, -94489, 7265474, -8964134, -10479720, -5402532, -7018514, -3460670, -2481417, 5204964, 1816771, -6387153, -2774549, --4902705, 3477313, 11670500, 7789460, -80531, -250719, -6546067, 336081, -4008815, 5590437, --1022739, 9685688, 3179350, 3439195, -3471944, 293132, 85362, -7582765, 8164196, 706522, --1478006, 4366371, -1547262, -1202054, -425202, 725850, -6694244, 3024731, 4014721, 4395899, --736050, -1474784, 1414118, 2530273, -2430415, -1312649, 2310156, -4962298, 505196, -22549, -4698694, -260919, 21725018, 508417, -4434554, 16894790, -3718368, -6895570, -1843078, -1570884, -20951924, 23975044, -3147137, 5092221, 6089190, -3073586, -11415486, 5599564, 22279606, 17006460, -14522358, -5287105, 6279242, 11973832, -15572478, -11580842, 13552769, -6930467, -7634841, -522375, -16949552, -2553895, 15600395, 1030792, 13996225, -8390219, 19241454, 5869610, -6004365, -9820980, -3491809, -13895830, 1643899, -16489453, -5655398, -5905043, 9421011, -9432285, 15538655, -19036368, --32992866, 20620138, 9193914, -4029216, 147640, 22746146, 10644003, 1830730, -5989869, 4936528, --2671470, 302258, -14791867, -14948634, 8791261, -4995584, 4846334, 28246926, -7406134, 6106370, --18443664, 21838834, -7321309, -9695352, -4690105, -3002719, 9079024, -18428630, 15423764, -18059800, -13035763, -9272298, -12650289, 12654047, -568546, 4184909, -5141613, 7511361, -4111894, -5638219, --2570538, -8575439, 5928666, -216896, -5646809, -2323041, 2079838, 9285719, 1725503, 1388348, -2440078, -156229, -1591822, 4756677, -2650532, 2195802, 1934346, -2310156, -694174, -448824, -6600828, 5873368, -2144263, -3109556, -6935836, -35433, -1427003, -897648, -1141388, 306553, -6331856, 2010045, -775242, 8113730, 3900367, -24705726, -18361522, -17799956, 24890410, 853625, -10689637, 6382859, -21904334, -19138912, 12891881, -34163244, 9996536, 10177462, -2191507, -13577465, --12506945, 21325050, -11452530, -1477469, -3582003, -11011222, 16197395, 5188321, 14652818, 8554501, -10106058, -3174518, 16448651, -1482301, -10772315, -12640089, -2929168, 7176354, -9621264, 12814572, -8188892, -9596568, -34629248, -2869575, -2864206, -818191, 25126096, 609885, -19724638, -11647414, --12073690, 10369125, -7623030, -16362215, -18341120, -11346767, -8937290, -40766756, 941135, 5136244, -13368086, -21272436, 6937446, -17568026, -14456323, -4886599, 17013976, 4412005, 15785615, 29953638, -8946417, 6912213, 19447612, -15154792, -1999844, -7171522, -8403640, 15676631, 14386530, 23005992, -11214160, -20968568, -14072997, 16559783, -24905978, -27302570, -8679055, 19983946, 3079492, -4821101, -13507135, 11143830, -205085, 3217468, 11432129, -7489886, 6720550, -5506148, -1165010, -5739687, --1184337, 1572495, 7961796, -5071820, -6599754, 37581, 4434017, 1511292, 4015258, -592169, --6613713, -1497333, -4432406, 390842, -3732327, -651761, -659278, -7239168, 5756330, 957778, -5855114, 7621420, 10287520, -3873524, -5746130, -389768, 821949, 601832, 11457362, -11159936, --23000624, 5937256, -629213, -739271, 529892, 2863670, 4508105, 9655086, 2925947, 8078834, -4301410, 9628243, 25414932, 544387, -33864208, -12600897, 8166881, 13422, -7312182, -21874806, --14539538, 4217658, 17129404, 6451041, -17056926, 8617315, 6734509, -19216758, -3929358, -23688892, -17974976, -10063108, -12560095, 16608102, -16784732, 4252018, 34917012, -4476967, 5357972, 10083509, --458488, 4803921, -21091510, 4693863, 3248606, 3008088, 45970644, 31060666, -3877819, -16523813, --11128260, 14229764, 16485695, -18936510, -10791642, -25295746, 39153996, 10562935, 4144644, -6730751, --4763119, -9185861, -5340255, 28113782, -8074539, 7341710, 27977416, 4412542, -8489003, -21479668, -74625, 8069707, -42915852, 8851928, 4162897, 28635620, 19339700, 15081241, 25419764, 14254460, --5625871, 2155537, 8538932, -3335042, 765578, -2246805, 3610994, 1869921, 23698018, -1122060, -9430674, -4694400, 9088151, -1240172, 12300786, 2279017, 3052648, 11229192, -1476395, 4393215, -7338489, -249645, 5827734, 8520678, 3418257, 6695854, 9914395, 5541045, -4452271, -1231582, -1755568, 2089502, -464393, -4675609, 1519882, 2254858, 672162, 5072893, -1351841, 8231842, -4155918, -4068408, 8487392, -1738388, 725850, -5950677, -27174258, -3922379, 18653042, 10456098, --30447024, -40096740, 4557497, 27181238, 10944114, 16608639, -9509058, 12829067, 2088965, 337692, --14612552, -5203353, -22721988, 33647312, 11200201, -27302034, -18818400, 12243341, 1216550, 6760816, --8260833, 16807818, 9714679, 11583527, 21929030, 19542638, 3925063, 19112604, -10135586, 10994579, --153008, 13358959, 6011344, -3141769, -8127152, 9245454, -12020540, 31448824, -8541616, -5866926, -6325950, 15587510, 15228880, -10315438, 26920318, 26872000, 15465640, 6566468, 2130304, -8531416, --20479478, -34745748, -5779952, 12483322, -871342, 15259482, 16403554, 17816598, 6048388, 9975598, -57727580, -28337658, -12548821, 5840082, 11053098, -1354525, -45290968, 10709501, -7149510, 6883222, -7883413, 20130512, 3889093, 456877, -18283676, 18955838, -6868727, 2838974, 16377247, 7618735, --17727478, -3681861, -10014790, -3249143, -7716983, 1366873, 576599, 7225209, -1816234, 8788577, -8378945, 11363410, -228170, 37581, -6937983, -2933463, -9248675, -6025839, -2838437, 12084964, -3708704, -1742683, 693637, -4541391, 1612223, 10627897, 11652246, -2199560, -10978473, -52613, -550293, 5235029, -3113315, 3670050, -5272073, 8125542, -15315853, 1701344, -4776541, -5206574, --110059, 3181497, -9907416, 4902705, -1969243, 4859756, -5122286, -8972187, 3365644, 15103789, -14874009, -8262444, -11212549, 3281355, -10773925, -34467648, 35560720, -10430328, 9980967, 3251290, -29826938, 23751706, 14938433, -14283987, -2370822, 20367808, 10818486, 23980414, 64035280, -4016331, --25259240, -6633040, 19137300, -2912525, -29829084, 45507864, 23601920, -16121160, -24972550, -3136400, -5593121, -7993471, 18093624, 15316927, 17755394, 33952252, 5695127, 9545565, 6081674, -13241384, --31660352, 18548354, -21541408, -16254304, 24998320, 13029857, 14105209, 7326141, 5158793, -1505386, --31253940, -27829778, 531502, 16524350, -20654498, 19502910, -9152038, -23263154, 7331509, 20262582, --3738769, 3834332, 20226612, 19827180, 20695836, 1438814, -12588549, 11696270, 49145164, 5835250, -20004884, 27969364, 1404454, -8987756, -24648818, -10074920, -38863548, -13435195, -9698036, -4896800, -8883066, 1412507, -1725503, -11282342, -7321846, -6597607, 9656697, -10109816, -1950989, -8934069, -2925947, -5716065, -9532143, 268435, -13740674, -4978404, 292058, -12577812, -2298881, -10976326, --6210523, 1076426, -19859928, -2055142, 996969, -352724, 9475772, -12813498, -4112431, 13459354, -330712, -5497022, -523449, -4720706, 2684892, -5990943, -4351876, 6615324, -400506, 302258, --10672457, 17734456, 14541686, 98247, -12157442, -17811766, -31265214, 5257577, 18748606, 25761750, --22424024, -23875186, 28662464, 12732431, -1429687, -3205656, -12303471, 5245229, -5894843, -12805982, -12977244, 15916612, 10899016, 807991, -2662880, -9324911, 1639067, 6530498, 3805341, -10498511, --36461052, 7796977, -8536784, -11117523, 1691680, -4943508, 2710124, -36293012, 16472810, 12901008, --26263726, 17886928, 23779086, 19906100, -5741298, 3117610, -3555696, 12889734, -3306051, -337155, -64063732, -19600620, 5019743, -17526688, -10359461, 36106716, 12967580, 12160663, 22924388, -29873108, --24858734, 36309116, -23491860, 18406620, 22742388, 1951526, 5813238, 8530342, 41132900, -14354854, --16194174, -38325068, -8508330, -16651051, 12540768, -24079198, 39960376, 21684754, 24269250, 11874511, -21165598, 11033771, 38124276, 9217000, 18156438, 13880261, -19276886, -9312563, -7679402, 3106872, -1828046, 18596134, 7856569, -272194, -1251446, 4044786, 1387811, -7589744, -14785962, -7953206, --11195906, 13355738, -5166846, -8021389, 4018479, -3267933, 16427176, 7505456, -3369939, 9171366, --11196980, 4930623, 8076149, -3321084, 15887621, 16358457, 10719701, -8060580, 13349832, 7641284, --13948980, -2873870, 1009854, -8463233, 519691, 11605539, -14044006, -16027207, 6539625, 2858301, --1929514, 14907295, -10647224, 26356604, -15699716, 13799730, 45004816, 22192632, 16873316, -25592100, -6884296, 24917790, -21778706, 35394824, 12563316, 18794776, 16869020, -11283953, 17489644, 14942191, -6211597, 35070556, 26617522, -2352568, -60740500, -7421167, 27943058, 26814018, 27715424, 6358162, -15400142, 1045825, 7677791, -2340757, -18903224, 38436736, -1155346, 36603860, 16505559, 26318486, --37420440, 24959666, 12491912, 11042898, -9885941, 8445516, -7049652, 8043400, 37034968, 14457934, -48359720, 2050847, 10638097, 27965606, -5784247, 44152800, 21872658, 3558381, -29518236, -18764176, -16184511, 1527398, -4947803, 638340, -5055714, 3158949, -21490942, 14020384, -22874996, -34382824, --12749074, -2238752, -11372537, -9109089, 28860570, -3779034, 26294326, -25354266, 28900298, 3540664, --31923418, 31303332, 26467736, -10238665, -4409858, 7214472, 13940390, 8571144, -1264868, -14853071, -9230422, -6609418, -834834, 17907330, -3629247, -3343632, -14650133, -4294431, 4212289, 2506114, --849330, 13373991, 12314208, -9947144, 3461744, -580357, 698469, 12270185, 4066797, -14114336, -9489730, -12125766, 6212670, -9877888, -3557844, -3377992, -1877438, 1253594, 2942590, 1317481, -1040993, -3093450, 2648384, -6979322, 4932233, 4884989, -748935, -5791227, 4428648, -1598265, -7259032, -4215511, -2838974, -9907416, 49392, -9802189, 2735894, -8174934, -26835492, -25633976, --10226317, -10992432, 21060372, -33607584, -41972568, -45594836, -55173148, 24924768, 27270894, -1363115, --4332012, 51540, -13046500, 3435437, 6977175, -11425687, 37751152, 35714264, 23265300, 25624312, --23286776, 15784542, 1351304, 18755048, -7226283, -9255655, -34489660, 31182536, -31168578, -37525668, --9898289, -7650948, 40605696, -21998286, 5475547, -20741470, -5873368, 39434780, 7262253, 12697534, -19368692, 36256504, 2202245, -3689377, -43910672, -7759932, -3542811, -898722, 24019068, 13285408, -81702088, 4457103, -2572149, -26740466, -2232309, 32873142, 29746944, -2299418, -14433774, -39992052, -10016937, 25968446, -13176423, -29043642, -12564927, 25614648, -7786776, 18920942, -58613956, -32313724, --46881180, -12221329, 18682034, 10422275, -20490752, -19002010, -23019414, 9652402, 48085916, 15061377, --339302, -16627429, -1524713, -12839268, -3788161, 6194954, 5543729, -14840723, -7096897, -864899, -10288594, -25558814, -17921288, -5567888, 12630962, -1253594, 16669305, 5935645, 1788317, -5345087, --3121368, -11183021, -2705830, -17124572, -4163971, 20001126, 6745783, 9426916, -13807783, -23871428, -11860552, 12084964, -7348152, 594853, -10361072, -1270237, 2780455, -703838, 8869644, 6316823, -5692979, 12275017, 6149857, 9838159, 9606231, -1319092, 7639673, 4940823, 7391102, 1028108, -974958, -7493108, -17147656, -9284109, 38961260, 502511, -564251, 69577936, 6173479, -52925272, --40817760, 48548164, 43017856, 1982127, -35507568, -43927852, -25520696, 7810398, 41829760, 37194952, -24671366, -16269336, 4257923, -16338592, 13166222, 31553514, 49100604, 53692460, -7544110, -29788282, --46672872, -69393784, -1434519, 35943508, 148089936, -20109036, -8658117, -72577432, -30464740, 5410048, -16464757, 87914224, 63194000, 38834556, -45712948, -26132192, -44678936, -3295314, 73482592, 67915784, -82915952, -23762980, -83034600, -60622388, -83832392, 20118164, 75577464, 66357244, 122959008, -59761248, --72546296, -63690608, -11209328, 53978612, 72197328, 101204464, 45437532, -22145388, -40375912, 8663486, --3747359, 28272696, 80843632, -18671834, 49967112, -18829136, -47652664, -50466, 6602976, 43435004, -1371705, -4844186, 3477850, -12302397, -41315436, 16198469, -6327024, 13099650, -12213813, -34143916, --8835285, -8619462, 3029026, 21449604, 2355790, -7152195, 7786776, -8850317, -11152419, -2697240, -31594316, 7471096, 28950228, -2911451, 2639258, -9236864, 3115462, 2676302, 5245229, 22195854, -38927436, -1913945, -11475079, -37085968, -48740364, 1157494, 2135673, 57339960, 36692980, 5558225, --20871394, -82568064, -46816756, -7783018, 36295696, 71694816, 36848136, -22648974, -27771258, -85564336, --32265404, 39723616, 73784320, 59448788, 3158949, -39122320, -44204876, -5039071, -2310156, 34473556, -20503100, 18569828, 464393, -18114562, -10634876, -867583, -8346732, 10545218, 11232950, -6197101, --36202816, 47808892, -10914586, 56429428, -51686172, 770947, -22523346, -53636088, 39473972, -28079422, -36541580, -28712394, -11057393, -2415919, 18844706, 4367982, -20554102, -10821707, -829466, 29341070, --27041650, 33636036, 24040542, -18030810, 4228396, -22683870, -22994182, 39157216, -38394324, -19151260, -25879862, 59716152, -415538, 8278550, -5453535, -25819732, -7289633, 24519432, -8428336, -39065412, -5542656, -8351027, -6679748, 12105902, -35869420, 18307298, -148713, 12628278, 27576912, -62209380, --46295988, -15062450, -1462973, 64590940, -34189012, 23587424, 50485192, -27471148, -16501801, -1458141, -27329950, 40269076, -21956410, 11866995, -8160438, 16146930, 62124016, -22781580, -70293584, 15269146, -31993212, 8708583, -37646464, 23756538, 9662066, 23857470, -7510824, -676457, -26368952, -20416128, -15237470, 4319664, -28111634, 8611409, 19088446, -8935679, -352187, -30540976, 4321274, -7259569, --34280820, -725313, 14994805, 13683229, 5245766, -438087, 8179765, -22784264, -6015639, 8736500, --11561515, 18376554, -11173894, -4041027, -10591926, 547608, -11275900, 17633526, 2800856, -12986907, --11915313, -6979, -821949, 28776818, -10196252, 10567230, -5473936, 29528, 5796059, -11615739, --11166915, 2447058, -24264418, -6029597, 6606734, -19722490, 555661, -3163780, -7449621, 4993973, -12863964, 621697, 1518271, -7373385, -4748087, -72331008, -22880902, 31184684, 42675868, 35436164, --36015448, 11604465, -100738456, -65499324, -55613920, -8797704, 47310676, 30447560, -2026688, -22102976, --27278948, 13429289, -16653199, -1650341, 36195836, 9893457, 1788317, -35692252, -17112224, -3587372, --16822314, 10974178, -2883534, 19428822, -4977867, -150324, -6244346, -1110249, -4509716, -20368882, --15338939, -34217468, -24073828, 17532056, 33645164, 36564668, 20448340, 31868658, -4714801, 27120570, --6193880, -12361990, -42633456, -1606855, -23483808, 18353468, 7155953, 54140748, -43528956, 15556372, -30484604, -16671989, -23054848, -13419088, -10661183, -11057930, 4088809, 38460896, 24863028, -10206453, --1266479, 27614492, -31745714, -35240744, 14747844, -40910636, -31341450, -27452894, 3615826, 13326747, -16086800, 47546360, 32479616, -5116380, 24230594, -13798119, 1169842, 5971615, 18016314, 28865402, -31363462, 21961778, 18408230, 14666240, 1474784, -39897024, -11070278, -20594368, -4927938, 23329188, --769336, 3548717, -8450348, -17762910, 2230162, -8774618, -7001334, -19353122, 8807904, 14532022, --6194417, 5601711, 13143674, 7081328, 8673150, 1464047, 8549132, -5731097, 5976984, -2715493, --9874130, 7745437, 10056666, -8037495, -11391327, 989453, -7586523, -13699872, 10872710, 11288248, -4770635, 14552423, -966368, -13556527, -16328392, 23159000, -9245454, -86307368, -127586832, -156639072, --123756264, -184650304, -32617056, -67411656, 20483772, 38822208, 133734544, 78127064, 138536320, 140867952, -192839200, 140769696, 143104016, 105419976, 4572530, -30490510, -55767464, -34280280, -115110496, -78654808, --62636192, -64014340, -63341104, -63219236, -61358976, -66215512, -72668696, -54158464, -84501872, -69092064, --60207388, -27007828, -70999032, -21901112, 26184804, -52735220, -25451976, 14255533, 11640972, -44635984, -37302864, 47924856, 60673392, 82284056, 83635896, -6500433, 49751828, 80886048, 114770656, 90471336, -180754240, 169766640, 149949664, 121518584, 153840896, 76409616, 122494080, 149097104, 114839376, 73462728, -124544928, 40452148, 41875396, 76536856, 76781128, 54542328, 15852187, 44595720, -14775224, 2711735, -39039104, -44336948, -111518824, -166684464, -65842384, -228228656, -199635984, -175569136, -203042976, -225897568, --189345776, -163884144, -158103120, -108952584, -143297824, -73540040, -90969016, -96690992, -146673136, -118504592, --85458040, -69969312, -59240484, -55510840, -34786012, 13907104, -102542, -3287798, 41375032, 86380920, -72036800, 72976328, 116295904, 99461776, 103333688, 131209640, 123719216, 105299176, 100138240, 120137216, -102278200, 99191192, 105231528, 109214040, 92870080, 81237696, 74721696, 69875360, 91282552, 71633616, -53712860, 56191056, 41994580, 24545202, -14550812, -30216168, -39633960, -70972184, -60789356, -62906240, --74956840, -79199736, -72963976, -47556024, -53443352, -48326972, -49255220, -25448754, -28331752, -33957624, --23489176, -7790534, -8927626, -16285979, -10781442, 183610, -6806450, -9193377, -8538932, -3248606, --5095979, -7385733, -5835250, 3609383, 5513128, 1544578, -3471944, 149250, 4469987, 1070521, --3996467, -734439, 1762010, 949188, -1082332, 1695438, 1512365, 2489471, 2152852, 118112, -74088, 2058363, 2199560, 4771172, 2962454, -974958, -3105798, 1211181, 2410551, -1263794, --2437931, -1414118, -3338800, -2516851, -2779918, -4188130, -3579855, -3551938, -4393752, -2779918, -184147, 2433099, 1624035, 3780645, 5678484, 5562520, 4446365, 6312528, 8870181, 8296803, -7861938, 9255655, 9115531, 10865730, 9685688, 8902930, 10469520, 10480257, 7837779, 4392141, -4481799, 3311420, 125091, -1080184, -2151779, -3193845, -4639102, -5245229, -5329518, -5064840, --5197984, -4807142, -4381941, -4062502, -3435974, -3059091, -2345052, -1722819, -1393717, -1169842, --885837, -612570, -547071, -446140, -383863, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +7451232, 2618320, -1320703, 1911261, 2416456, 4479651, 7463580, -3540127, 2500745, -3012383, +-2331094, 1519345, 49929, 646393, -5214091, -2524367, 1883880, 3725884, -459562, 3142842, +-5591511, -4968204, 3177739, 2032593, 899796, 2309082, -1884954, 4053376, 4549444, 4401805, +6320581, -3464428, -2841658, 244813, 836982, -6004901, -341450, -503585, 1694902, 611496, +-3728569, -910533, 5172751, -2724083, 1047972, -3127810, 1549946, 1601486, 1069984, -4668630, +3825205, 360777, 897111, -630823, -1495186, -1928977, -3149822, 6810208, -1151588, -1240172, +-1476932, 3031173, 752156, -6415608, 1682017, -2924336, -4361003, 2614025, -2676838, -6948184, +2827162, 1031329, 356482, -6402723, -7723425, -3167539, -3779034, 3613678, -991064, -2147, +-1703491, -2095944, -1693828, 59593, 3242164, 585189, -1363115, -110595, -1426466, -654983, +1472637, 433792, -1284732, -1817308, -568546, -743566, 762894, -454193, 327491, 259309, +827855, 200253, 1159641, -455803, 324807, -250182, 838592, -45097, 776315, 898185, +4294431, 464930, 321586, 3815005, -5825050, 915365, -4869956, -6148246, 1705639, 5669357, +-3590056, 2665564, -2715493, -1335198, 1098975, 238371, -2885144, -8456791, -8404177, 102005, +-2168422, -123480, 4313221, 652835, 5293011, 7179038, -3863860, 6193880, 724239, 6287832, +345208, 7470559, 901406, -4250944, -1212791, 378494, 3367254, -970663, -1186485, 702227, +2541547, -3167539, -246961, -1007170, 2240899, 2757906, 96100, -2888366, -260382, -557272, +1585380, 2900177, 5210332, -1879585, 3359738, -1581622, -4646081, -4133906, -2829310, 2555506, +2754685, -1587527, 4497368, 112206, 1593970, 200253, 5480915, 3638911, 4022237, 1623498, +2342905, 1449552, 2169495, 4494147, -1024350, -268435, 6334003, 1250372, 120796, 1297617, +-2443300, 323196, 1822677, -176094, -6044093, 1842541, 569620, -990527, -2141578, 1351304, +341450, 3226057, -1269700, -622233, -1314797, -1042066, 754304, 207769, 1235877, 588947, +231391, -1204202, -1004486, -577136, -650688, 486405, -1626719, 1343788, -631897, 379568, +-450972, -579284, -938450, 504122, -772020, -548145, -1768990, 6516003, -6558952, -4404489, +-3609920, -5301064, 1738925, 2354716, -4255776, 1046898, 8883066, -6387690, 4526896, 7670275, +7581691, -4598300, -1226750, 3785477, 762357, 1209570, -3336653, 1907502, -11421392, 9057012, +14154602, 2551211, 4799089, -2239289, -144418, 7546795, -3890704, -8994198, -1457605, 191126, +21475, -7254200, 590558, 1876364, -8640400, -4024921, 4081293, 1427003, -3041911, -745177, +3060701, -4177393, 9046812, 2868501, 466004, -5713380, -520228, 3166465, -1910724, 254477, +-2012192, -52613, -810138, -4562866, 339302, -4409858, 6802692, -6458020, -4292283, -1395864, +-7762080, 5303211, -4153234, -10806675, -1949915, -4621922, 1377611, 5068062, -5032091, 701690, +-3401614, 3620658, 539018, -3521336, 3130494, -3820910, -5100274, 5806796, -3656628, 1711545, +185757, 597000, 2049236, -1054951, -1705102, -1877438, -3090229, 1130113, -4386236, 332860, +-853088, 1474248, -1274532, -26844, 49392, 202400, -2309619, 2191507, 143881, 482647, +-1225676, -804233, -909459, -135291, 1372242, -5099737, 3213709, -175557, -1017370, 3814468, +-3660923, -12812424, -2517925, -816581, 5566278, 7881265, 6990596, 3339874, -2770254, -894427, +-7900056, -6715718, 2291365, 8956081, -2588792, 9175124, 5844914, -5718212, 3041911, -910533, +3182571, -6388764, -4296041, 1009854, 4577362, -619012, 2725694, 3782256, -7190312, -1481227, +-3321084, -9820980, 6075768, 928250, 2203318, 4198331, 7751879, 2662880, 361314, 6041945, +-1423782, -3155190, 6256157, -3338800, 10574746, 4829691, 4206384, 176631, -3039763, -3744138, +5187247, 6999723, -5231807, 1227824, 6731825, -1240709, 2193118, 14814953, -4487704, -1837172, +2896419, -7497939, -292595, 1285269, -3312494, 3570729, -2395518, 2182380, 7388955, 208306, +-1685775, -5073430, -398895, -6289443, 2653753, -2367601, -3049427, -1331977, 1202591, -1848983, +-1779190, -1567663, 359704, 2241973, 1722819, 411243, -508417, -753767, -504122, -404264, +-1009317, -1896228, -328565, -629750, 999654, -56371, 518617, -1919850, 819265, 917512, +-661425, -1691680, -569620, -1771674, -864899, -826244, 1299765, 70867, -229244, -197569, +338229, 135291, 707596, -2681133, -639950, 787590, -3327526, -18369576, -1552631, -454193, +-3729642, -5743982, -1927367, 9753871, -7029251, -10482405, 3843996, -4298189, 1422171, 1786706, +6522982, -4564477, -1423245, 1228898, 6060199, -2935610, -4090420, -1272921, -3528316, 4447976, +8205535, 4095251, 7516, -751619, -4806606, -351650, 12947179, 2223183, -1683627, 14971182, +-966905, 11117523, -3446175, 23085, 7523709, 2238215, 1821066, 2643016, 1264868, 4110284, +2365990, -7207492, 13211319, 8004209, 10836739, 7246147, 4747550, -7331509, 3147137, 3635690, +493921, -4519916, 12261058, 7398618, 11070815, 1920387, -2285460, -2807298, 8135742, -4060355, +-8532489, 9899900, 3052648, -5533529, -3237869, 434329, -2624762, 915365, -1223529, 1347546, +-3521873, -1005559, -8078834, 3018825, -1052267, -264677, 2880849, -1042066, -1564979, 4658966, +-376883, 3608310, 4842576, 3969624, 2527052, 2524367, 971200, 1454383, -40802, -1069447, +-1000191, 2102387, -670015, -1368484, -1438814, 974958, -1614908, -449361, -371515, 2636573, +1055488, 1877438, -1865090, 526134, -1508607, -550293, 1789928, -292058, -818191, -635655, +-551366, -1103807, -783832, 744640, -111132, -507880, -4725538, -749472, -12080132, -4822175, +-13499082, -9278740, 909459, -8800388, -6934762, 725850, -1605781, 8899172, -6052146, 9870909, +12145094, 1169842, -10455561, -7382512, 10903848, -5657546, -3073586, 6069863, -8106751, -14358613, +5651103, 12227772, -6403260, 3057480, -295279, 5281736, -14951318, 2877628, -6044093, 3506304, +238908, -6337761, 10320270, 4651450, 4325569, 13728326, 6386617, 2761127, 7777112, 1472100, +2482491, 3848291, 1265942, 530428, 2087354, 1786706, 15693274, 8749385, -84289, 13102871, +8226473, 9643275, 15199352, -7902203, -6553583, 13242995, -4699768, -627065, -7973607, -3471407, +4707821, 6968585, -6083285, -830539, 1972464, -1830193, 3639985, -6518687, -1240172, -7522635, +14339822, -4773320, 7814156, -2360085, -3878356, 10443750, 1817308, -3228205, 3402688, -1440425, +266288, -3126199, 3965866, -889058, 1407139, 4145717, 2424509, 1141388, 2383170, 47782, +-414464, 1576790, 407485, -3072512, 602906, -758599, -1395328, 2507187, -28454, 1149441, +1061394, -745714, 482647, -1870995, 335007, -1723893, 111132, -796180, 1898376, 355945, +1629403, 287763, 1977296, 382789, 897111, 1034550, 181462, 4510253, -4903242, 1527398, +659278, 1515050, -7026567, 9043591, 5226975, 12301860, 2345052, -1703491, -13968844, -7474317, +-5265093, 3525631, -7279970, -12083890, -3405372, 3063386, 1293859, -13487808, 10878615, 817654, +-868120, -11489574, -6647536, 2684892, 1362578, -12759811, -4014184, 4639639, 463320, 1270237, +6477348, 7616051, 4403415, -1984275, 3791383, 1179505, -4626217, -9438728, 16192564, -4086125, +-7970386, 149787, 3973919, 5247913, 12090870, 1995549, -279173, -4566624, -195421, 6738804, +-911607, 8421357, 16072304, 1360431, -3559991, 495532, 13827110, 17380122, -8720931, 2434710, +2361695, 9404368, 4899484, 1670205, 2823404, -6900939, 4243965, 4497368, 4406100, -2969970, +187368, 3432753, 5104032, -705985, 1706713, 1221381, -5946919, 2862059, 205622, -5268315, +-3923990, 5651103, -2597382, 3921842, -5713380, -4270808, -1999307, 1318555, -164819, 5111011, +2237678, 951872, 169114, 2580739, 2259690, 783832, -4362076, 237297, -1881196, 738198, +-1438277, -988916, -137976, -373125, -695785, -1397475, -4283156, -1103270, 367220, -2762201, +-1891933, -1723893, -16106, -1723356, -3051038, -617938, 1308354, 2359548, -879395, 736587, +-1214939, 877784, -4599910, 6318434, -5774047, -10417980, 7093139, -915365, -2588255, 2649458, +6029597, -17430052, 1000191, 13227962, -1611150, 23856932, 11372537, -7383586, -5428839, -2319282, +-6977175, -3147137, 10621991, -4187593, -3566434, 10631118, 8630200, 2792803, 4923107, 9931038, +6563247, 7412040, -5548561, -3831111, 9443022, -1944547, 8543227, -22012, -10332081, -6682432, +2723009, 8042327, -11231339, 620086, -6023155, 3051574, -6874632, 9418326, 9414568, -9323837, +-1039382, 2623688, -354335, -12581033, -5659693, 2066953, 8237748, 13565654, 4585952, -10185515, +-2282238, -2537252, -1237488, 8503498, 1313186, 6798397, -10388452, 4563403, 656056, -8275865, +9659918, 4047470, -1359894, -2254858, 1628866, -444529, -8409546, 6220187, -1982127, 3676492, +-6544994, -11571179, -6418292, 2638184, 5082020, 42950, 2786897, 10234907, 61740, -2718714, +6442988, -2090039, 6062883, 278636, 1940252, -5322538, 493921, 56371, 2760053, 2998424, +4286914, 2667712, -1105417, -1349157, -2052458, 5048734, -2441152, 2589865, 521839, 1529008, +2068027, 2790118, 1231045, -1069447, 2553358, 933082, 833224, -1079647, 3449396, 1562831, +698469, -3545496, 1228361, -1448478, -66035, 2283312, 667331, 10992432, -13732621, -2251100, +-4443681, 13919452, -6337761, 11456288, -3682935, 10691247, 14513231, -6546604, 4519380, -3787624, +8229694, -3233037, 6837051, 5677410, 5329518, -1310502, 5609228, -2944200, -7332046, -3546569, +7996692, -9527848, 1405528, -98247, 7111929, 14523969, -13441637, 408022, 12979928, -380105, +11857868, 1573032, 5156645, -1707786, -1110786, 3169149, -18537078, 1760400, -541166, -7391102, +4779225, 2965675, 13281649, 6605660, -1431298, 25362318, 6229850, -13446469, 3439195, 1233729, +8770860, -5823439, 1597728, 7448010, 483721, 4517232, -1444183, -14679124, -15093589, -20401, +-5177046, 11988327, -20475720, 26131118, -268972, 14526653, 16556025, 3959960, -4534412, -3379603, +-7950522, -10424422, -1008780, 3297998, -2753611, 5192616, -3626563, -8402030, -5401995, -4270808, +1377611, -1354525, 792958, 5557688, 2689723, 2610266, 1923609, -2389613, -3011846, 117575, +-744103, 1558536, 248034, 600759, 1629940, 3206730, 1803349, -6534256, 1044751, -1272384, +4581657, 4715874, 2613488, -484794, -1525250, 1824287, 1343788, -2337536, -2565169, -641561, +-1801739, 414464, -1916092, -3180960, 1102196, 5209259, -1504312, 2079301, -4176856, 488016, +2164664, 2376191, -274341, 1516660, 3224984, -2515240, 1094143, -24186572, -1684701, 8273718, +1385127, -9063992, -22463752, 22549, 2593087, -3911105, -918586, -6588480, 3506841, -5478231, +11602854, 4124242, -6884833, -8593156, -14767171, 11108396, -4700842, 797790, 14424111, 19859928, +12094628, -1796370, 1049583, -13544179, -5800354, -5417565, 3660923, -19232326, 5048734, 5319317, +1112933, -9860171, 9527311, 14860587, -2378875, -201863, 1733556, -8533026, -9077950, 5288716, +3584150, 11260867, -12307766, 13426068, -7034083, 7430831, -11396159, -8930848, -4506495, -223875, +-1349694, 4947803, -2458869, -19857782, -14947560, -4133906, 528281, -19908248, 275415, 9959492, +-5293011, -2232309, 3023657, 8483097, -17588428, 9064528, -3099893, -2564096, -94489, 7265474, +8964134, -10479720, -5402532, -7018514, -3460670, -2481417, 5204964, 1816771, -6387153, -2774549, +-4902705, 3477313, 11670500, 7789460, -80531, -250719, -6546067, 336081, -4008815, 5590437, +-1022739, 9685688, 3179350, 3439195, -3471944, 293132, 85362, -7582765, 8164196, 706522, +-1478006, 4366371, -1547262, -1202054, -425202, 725850, -6694244, 3024731, 4014721, 4395899, +-736050, -1474784, 1414118, 2530273, -2430415, -1312649, 2310156, -4962298, 505196, -22549, +4698694, -260919, 21725018, 508417, -4434554, 16894790, -3718368, -6895570, -1843078, -1570884, +20951924, 23975044, -3147137, 5092221, 6089190, -3073586, -11415486, 5599564, 22279606, 17006460, +14522358, -5287105, 6279242, 11973832, -15572478, -11580842, 13552769, -6930467, -7634841, -522375, +16949552, -2553895, 15600395, 1030792, 13996225, -8390219, 19241454, 5869610, -6004365, -9820980, +3491809, -13895830, 1643899, -16489453, -5655398, -5905043, 9421011, -9432285, 15538655, -19036368, +-32992866, 20620138, 9193914, -4029216, 147640, 22746146, 10644003, 1830730, -5989869, 4936528, +-2671470, 302258, -14791867, -14948634, 8791261, -4995584, 4846334, 28246926, -7406134, 6106370, +-18443664, 21838834, -7321309, -9695352, -4690105, -3002719, 9079024, -18428630, 15423764, -18059800, +13035763, -9272298, -12650289, 12654047, -568546, 4184909, -5141613, 7511361, -4111894, -5638219, +-2570538, -8575439, 5928666, -216896, -5646809, -2323041, 2079838, 9285719, 1725503, 1388348, +2440078, -156229, -1591822, 4756677, -2650532, 2195802, 1934346, -2310156, -694174, -448824, +6600828, 5873368, -2144263, -3109556, -6935836, -35433, -1427003, -897648, -1141388, 306553, +6331856, 2010045, -775242, 8113730, 3900367, -24705726, -18361522, -17799956, 24890410, 853625, +10689637, 6382859, -21904334, -19138912, 12891881, -34163244, 9996536, 10177462, -2191507, -13577465, +-12506945, 21325050, -11452530, -1477469, -3582003, -11011222, 16197395, 5188321, 14652818, 8554501, +10106058, -3174518, 16448651, -1482301, -10772315, -12640089, -2929168, 7176354, -9621264, 12814572, +8188892, -9596568, -34629248, -2869575, -2864206, -818191, 25126096, 609885, -19724638, -11647414, +-12073690, 10369125, -7623030, -16362215, -18341120, -11346767, -8937290, -40766756, 941135, 5136244, +13368086, -21272436, 6937446, -17568026, -14456323, -4886599, 17013976, 4412005, 15785615, 29953638, +8946417, 6912213, 19447612, -15154792, -1999844, -7171522, -8403640, 15676631, 14386530, 23005992, +11214160, -20968568, -14072997, 16559783, -24905978, -27302570, -8679055, 19983946, 3079492, -4821101, +13507135, 11143830, -205085, 3217468, 11432129, -7489886, 6720550, -5506148, -1165010, -5739687, +-1184337, 1572495, 7961796, -5071820, -6599754, 37581, 4434017, 1511292, 4015258, -592169, +-6613713, -1497333, -4432406, 390842, -3732327, -651761, -659278, -7239168, 5756330, 957778, +5855114, 7621420, 10287520, -3873524, -5746130, -389768, 821949, 601832, 11457362, -11159936, +-23000624, 5937256, -629213, -739271, 529892, 2863670, 4508105, 9655086, 2925947, 8078834, +4301410, 9628243, 25414932, 544387, -33864208, -12600897, 8166881, 13422, -7312182, -21874806, +-14539538, 4217658, 17129404, 6451041, -17056926, 8617315, 6734509, -19216758, -3929358, -23688892, +17974976, -10063108, -12560095, 16608102, -16784732, 4252018, 34917012, -4476967, 5357972, 10083509, +-458488, 4803921, -21091510, 4693863, 3248606, 3008088, 45970644, 31060666, -3877819, -16523813, +-11128260, 14229764, 16485695, -18936510, -10791642, -25295746, 39153996, 10562935, 4144644, -6730751, +-4763119, -9185861, -5340255, 28113782, -8074539, 7341710, 27977416, 4412542, -8489003, -21479668, +74625, 8069707, -42915852, 8851928, 4162897, 28635620, 19339700, 15081241, 25419764, 14254460, +-5625871, 2155537, 8538932, -3335042, 765578, -2246805, 3610994, 1869921, 23698018, -1122060, +9430674, -4694400, 9088151, -1240172, 12300786, 2279017, 3052648, 11229192, -1476395, 4393215, +7338489, -249645, 5827734, 8520678, 3418257, 6695854, 9914395, 5541045, -4452271, -1231582, +1755568, 2089502, -464393, -4675609, 1519882, 2254858, 672162, 5072893, -1351841, 8231842, +4155918, -4068408, 8487392, -1738388, 725850, -5950677, -27174258, -3922379, 18653042, 10456098, +-30447024, -40096740, 4557497, 27181238, 10944114, 16608639, -9509058, 12829067, 2088965, 337692, +-14612552, -5203353, -22721988, 33647312, 11200201, -27302034, -18818400, 12243341, 1216550, 6760816, +-8260833, 16807818, 9714679, 11583527, 21929030, 19542638, 3925063, 19112604, -10135586, 10994579, +-153008, 13358959, 6011344, -3141769, -8127152, 9245454, -12020540, 31448824, -8541616, -5866926, +6325950, 15587510, 15228880, -10315438, 26920318, 26872000, 15465640, 6566468, 2130304, -8531416, +-20479478, -34745748, -5779952, 12483322, -871342, 15259482, 16403554, 17816598, 6048388, 9975598, +57727580, -28337658, -12548821, 5840082, 11053098, -1354525, -45290968, 10709501, -7149510, 6883222, +7883413, 20130512, 3889093, 456877, -18283676, 18955838, -6868727, 2838974, 16377247, 7618735, +-17727478, -3681861, -10014790, -3249143, -7716983, 1366873, 576599, 7225209, -1816234, 8788577, +8378945, 11363410, -228170, 37581, -6937983, -2933463, -9248675, -6025839, -2838437, 12084964, +3708704, -1742683, 693637, -4541391, 1612223, 10627897, 11652246, -2199560, -10978473, -52613, +550293, 5235029, -3113315, 3670050, -5272073, 8125542, -15315853, 1701344, -4776541, -5206574, +-110059, 3181497, -9907416, 4902705, -1969243, 4859756, -5122286, -8972187, 3365644, 15103789, +14874009, -8262444, -11212549, 3281355, -10773925, -34467648, 35560720, -10430328, 9980967, 3251290, +29826938, 23751706, 14938433, -14283987, -2370822, 20367808, 10818486, 23980414, 64035280, -4016331, +-25259240, -6633040, 19137300, -2912525, -29829084, 45507864, 23601920, -16121160, -24972550, -3136400, +5593121, -7993471, 18093624, 15316927, 17755394, 33952252, 5695127, 9545565, 6081674, -13241384, +-31660352, 18548354, -21541408, -16254304, 24998320, 13029857, 14105209, 7326141, 5158793, -1505386, +-31253940, -27829778, 531502, 16524350, -20654498, 19502910, -9152038, -23263154, 7331509, 20262582, +-3738769, 3834332, 20226612, 19827180, 20695836, 1438814, -12588549, 11696270, 49145164, 5835250, +20004884, 27969364, 1404454, -8987756, -24648818, -10074920, -38863548, -13435195, -9698036, -4896800, +8883066, 1412507, -1725503, -11282342, -7321846, -6597607, 9656697, -10109816, -1950989, -8934069, +2925947, -5716065, -9532143, 268435, -13740674, -4978404, 292058, -12577812, -2298881, -10976326, +-6210523, 1076426, -19859928, -2055142, 996969, -352724, 9475772, -12813498, -4112431, 13459354, +330712, -5497022, -523449, -4720706, 2684892, -5990943, -4351876, 6615324, -400506, 302258, +-10672457, 17734456, 14541686, 98247, -12157442, -17811766, -31265214, 5257577, 18748606, 25761750, +-22424024, -23875186, 28662464, 12732431, -1429687, -3205656, -12303471, 5245229, -5894843, -12805982, +12977244, 15916612, 10899016, 807991, -2662880, -9324911, 1639067, 6530498, 3805341, -10498511, +-36461052, 7796977, -8536784, -11117523, 1691680, -4943508, 2710124, -36293012, 16472810, 12901008, +-26263726, 17886928, 23779086, 19906100, -5741298, 3117610, -3555696, 12889734, -3306051, -337155, +64063732, -19600620, 5019743, -17526688, -10359461, 36106716, 12967580, 12160663, 22924388, -29873108, +-24858734, 36309116, -23491860, 18406620, 22742388, 1951526, 5813238, 8530342, 41132900, -14354854, +-16194174, -38325068, -8508330, -16651051, 12540768, -24079198, 39960376, 21684754, 24269250, 11874511, +21165598, 11033771, 38124276, 9217000, 18156438, 13880261, -19276886, -9312563, -7679402, 3106872, +1828046, 18596134, 7856569, -272194, -1251446, 4044786, 1387811, -7589744, -14785962, -7953206, +-11195906, 13355738, -5166846, -8021389, 4018479, -3267933, 16427176, 7505456, -3369939, 9171366, +-11196980, 4930623, 8076149, -3321084, 15887621, 16358457, 10719701, -8060580, 13349832, 7641284, +-13948980, -2873870, 1009854, -8463233, 519691, 11605539, -14044006, -16027207, 6539625, 2858301, +-1929514, 14907295, -10647224, 26356604, -15699716, 13799730, 45004816, 22192632, 16873316, -25592100, +6884296, 24917790, -21778706, 35394824, 12563316, 18794776, 16869020, -11283953, 17489644, 14942191, +6211597, 35070556, 26617522, -2352568, -60740500, -7421167, 27943058, 26814018, 27715424, 6358162, +15400142, 1045825, 7677791, -2340757, -18903224, 38436736, -1155346, 36603860, 16505559, 26318486, +-37420440, 24959666, 12491912, 11042898, -9885941, 8445516, -7049652, 8043400, 37034968, 14457934, +48359720, 2050847, 10638097, 27965606, -5784247, 44152800, 21872658, 3558381, -29518236, -18764176, +16184511, 1527398, -4947803, 638340, -5055714, 3158949, -21490942, 14020384, -22874996, -34382824, +-12749074, -2238752, -11372537, -9109089, 28860570, -3779034, 26294326, -25354266, 28900298, 3540664, +-31923418, 31303332, 26467736, -10238665, -4409858, 7214472, 13940390, 8571144, -1264868, -14853071, +9230422, -6609418, -834834, 17907330, -3629247, -3343632, -14650133, -4294431, 4212289, 2506114, +-849330, 13373991, 12314208, -9947144, 3461744, -580357, 698469, 12270185, 4066797, -14114336, +9489730, -12125766, 6212670, -9877888, -3557844, -3377992, -1877438, 1253594, 2942590, 1317481, +1040993, -3093450, 2648384, -6979322, 4932233, 4884989, -748935, -5791227, 4428648, -1598265, +7259032, -4215511, -2838974, -9907416, 49392, -9802189, 2735894, -8174934, -26835492, -25633976, +-10226317, -10992432, 21060372, -33607584, -41972568, -45594836, -55173148, 24924768, 27270894, -1363115, +-4332012, 51540, -13046500, 3435437, 6977175, -11425687, 37751152, 35714264, 23265300, 25624312, +-23286776, 15784542, 1351304, 18755048, -7226283, -9255655, -34489660, 31182536, -31168578, -37525668, +-9898289, -7650948, 40605696, -21998286, 5475547, -20741470, -5873368, 39434780, 7262253, 12697534, +19368692, 36256504, 2202245, -3689377, -43910672, -7759932, -3542811, -898722, 24019068, 13285408, +81702088, 4457103, -2572149, -26740466, -2232309, 32873142, 29746944, -2299418, -14433774, -39992052, +10016937, 25968446, -13176423, -29043642, -12564927, 25614648, -7786776, 18920942, -58613956, -32313724, +-46881180, -12221329, 18682034, 10422275, -20490752, -19002010, -23019414, 9652402, 48085916, 15061377, +-339302, -16627429, -1524713, -12839268, -3788161, 6194954, 5543729, -14840723, -7096897, -864899, +10288594, -25558814, -17921288, -5567888, 12630962, -1253594, 16669305, 5935645, 1788317, -5345087, +-3121368, -11183021, -2705830, -17124572, -4163971, 20001126, 6745783, 9426916, -13807783, -23871428, +11860552, 12084964, -7348152, 594853, -10361072, -1270237, 2780455, -703838, 8869644, 6316823, +5692979, 12275017, 6149857, 9838159, 9606231, -1319092, 7639673, 4940823, 7391102, 1028108, +974958, -7493108, -17147656, -9284109, 38961260, 502511, -564251, 69577936, 6173479, -52925272, +-40817760, 48548164, 43017856, 1982127, -35507568, -43927852, -25520696, 7810398, 41829760, 37194952, +24671366, -16269336, 4257923, -16338592, 13166222, 31553514, 49100604, 53692460, -7544110, -29788282, +-46672872, -69393784, -1434519, 35943508, 148089936, -20109036, -8658117, -72577432, -30464740, 5410048, +16464757, 87914224, 63194000, 38834556, -45712948, -26132192, -44678936, -3295314, 73482592, 67915784, +82915952, -23762980, -83034600, -60622388, -83832392, 20118164, 75577464, 66357244, 122959008, -59761248, +-72546296, -63690608, -11209328, 53978612, 72197328, 101204464, 45437532, -22145388, -40375912, 8663486, +-3747359, 28272696, 80843632, -18671834, 49967112, -18829136, -47652664, -50466, 6602976, 43435004, +1371705, -4844186, 3477850, -12302397, -41315436, 16198469, -6327024, 13099650, -12213813, -34143916, +-8835285, -8619462, 3029026, 21449604, 2355790, -7152195, 7786776, -8850317, -11152419, -2697240, +31594316, 7471096, 28950228, -2911451, 2639258, -9236864, 3115462, 2676302, 5245229, 22195854, +38927436, -1913945, -11475079, -37085968, -48740364, 1157494, 2135673, 57339960, 36692980, 5558225, +-20871394, -82568064, -46816756, -7783018, 36295696, 71694816, 36848136, -22648974, -27771258, -85564336, +-32265404, 39723616, 73784320, 59448788, 3158949, -39122320, -44204876, -5039071, -2310156, 34473556, +20503100, 18569828, 464393, -18114562, -10634876, -867583, -8346732, 10545218, 11232950, -6197101, +-36202816, 47808892, -10914586, 56429428, -51686172, 770947, -22523346, -53636088, 39473972, -28079422, +36541580, -28712394, -11057393, -2415919, 18844706, 4367982, -20554102, -10821707, -829466, 29341070, +-27041650, 33636036, 24040542, -18030810, 4228396, -22683870, -22994182, 39157216, -38394324, -19151260, +25879862, 59716152, -415538, 8278550, -5453535, -25819732, -7289633, 24519432, -8428336, -39065412, +5542656, -8351027, -6679748, 12105902, -35869420, 18307298, -148713, 12628278, 27576912, -62209380, +-46295988, -15062450, -1462973, 64590940, -34189012, 23587424, 50485192, -27471148, -16501801, -1458141, +27329950, 40269076, -21956410, 11866995, -8160438, 16146930, 62124016, -22781580, -70293584, 15269146, +31993212, 8708583, -37646464, 23756538, 9662066, 23857470, -7510824, -676457, -26368952, -20416128, +15237470, 4319664, -28111634, 8611409, 19088446, -8935679, -352187, -30540976, 4321274, -7259569, +-34280820, -725313, 14994805, 13683229, 5245766, -438087, 8179765, -22784264, -6015639, 8736500, +-11561515, 18376554, -11173894, -4041027, -10591926, 547608, -11275900, 17633526, 2800856, -12986907, +-11915313, -6979, -821949, 28776818, -10196252, 10567230, -5473936, 29528, 5796059, -11615739, +-11166915, 2447058, -24264418, -6029597, 6606734, -19722490, 555661, -3163780, -7449621, 4993973, +12863964, 621697, 1518271, -7373385, -4748087, -72331008, -22880902, 31184684, 42675868, 35436164, +-36015448, 11604465, -100738456, -65499324, -55613920, -8797704, 47310676, 30447560, -2026688, -22102976, +-27278948, 13429289, -16653199, -1650341, 36195836, 9893457, 1788317, -35692252, -17112224, -3587372, +-16822314, 10974178, -2883534, 19428822, -4977867, -150324, -6244346, -1110249, -4509716, -20368882, +-15338939, -34217468, -24073828, 17532056, 33645164, 36564668, 20448340, 31868658, -4714801, 27120570, +-6193880, -12361990, -42633456, -1606855, -23483808, 18353468, 7155953, 54140748, -43528956, 15556372, +30484604, -16671989, -23054848, -13419088, -10661183, -11057930, 4088809, 38460896, 24863028, -10206453, +-1266479, 27614492, -31745714, -35240744, 14747844, -40910636, -31341450, -27452894, 3615826, 13326747, +16086800, 47546360, 32479616, -5116380, 24230594, -13798119, 1169842, 5971615, 18016314, 28865402, +31363462, 21961778, 18408230, 14666240, 1474784, -39897024, -11070278, -20594368, -4927938, 23329188, +-769336, 3548717, -8450348, -17762910, 2230162, -8774618, -7001334, -19353122, 8807904, 14532022, +-6194417, 5601711, 13143674, 7081328, 8673150, 1464047, 8549132, -5731097, 5976984, -2715493, +-9874130, 7745437, 10056666, -8037495, -11391327, 989453, -7586523, -13699872, 10872710, 11288248, +4770635, 14552423, -966368, -13556527, -16328392, 23159000, -9245454, -86307368, -127586832, -156639072, +-123756264, -184650304, -32617056, -67411656, 20483772, 38822208, 133734544, 78127064, 138536320, 140867952, +192839200, 140769696, 143104016, 105419976, 4572530, -30490510, -55767464, -34280280, -115110496, -78654808, +-62636192, -64014340, -63341104, -63219236, -61358976, -66215512, -72668696, -54158464, -84501872, -69092064, +-60207388, -27007828, -70999032, -21901112, 26184804, -52735220, -25451976, 14255533, 11640972, -44635984, +37302864, 47924856, 60673392, 82284056, 83635896, -6500433, 49751828, 80886048, 114770656, 90471336, +180754240, 169766640, 149949664, 121518584, 153840896, 76409616, 122494080, 149097104, 114839376, 73462728, +124544928, 40452148, 41875396, 76536856, 76781128, 54542328, 15852187, 44595720, -14775224, 2711735, +39039104, -44336948, -111518824, -166684464, -65842384, -228228656, -199635984, -175569136, -203042976, -225897568, +-189345776, -163884144, -158103120, -108952584, -143297824, -73540040, -90969016, -96690992, -146673136, -118504592, +-85458040, -69969312, -59240484, -55510840, -34786012, 13907104, -102542, -3287798, 41375032, 86380920, +72036800, 72976328, 116295904, 99461776, 103333688, 131209640, 123719216, 105299176, 100138240, 120137216, +102278200, 99191192, 105231528, 109214040, 92870080, 81237696, 74721696, 69875360, 91282552, 71633616, +53712860, 56191056, 41994580, 24545202, -14550812, -30216168, -39633960, -70972184, -60789356, -62906240, +-74956840, -79199736, -72963976, -47556024, -53443352, -48326972, -49255220, -25448754, -28331752, -33957624, +-23489176, -7790534, -8927626, -16285979, -10781442, 183610, -6806450, -9193377, -8538932, -3248606, +-5095979, -7385733, -5835250, 3609383, 5513128, 1544578, -3471944, 149250, 4469987, 1070521, +-3996467, -734439, 1762010, 949188, -1082332, 1695438, 1512365, 2489471, 2152852, 118112, +74088, 2058363, 2199560, 4771172, 2962454, -974958, -3105798, 1211181, 2410551, -1263794, +-2437931, -1414118, -3338800, -2516851, -2779918, -4188130, -3579855, -3551938, -4393752, -2779918, +184147, 2433099, 1624035, 3780645, 5678484, 5562520, 4446365, 6312528, 8870181, 8296803, +7861938, 9255655, 9115531, 10865730, 9685688, 8902930, 10469520, 10480257, 7837779, 4392141, +4481799, 3311420, 125091, -1080184, -2151779, -3193845, -4639102, -5245229, -5329518, -5064840, +-5197984, -4807142, -4381941, -4062502, -3435974, -3059091, -2345052, -1722819, -1393717, -1169842, +-885837, -612570, -547071, -446140, -383863, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, }; const Word32 CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955] ={ { { 5294084, -2538326, -3474629, 5252208, -3056406, -1127966, 133681, -1877975, -1990717, -4176856, 1038845, -6187438, 693100, 1060320, 2706903, 584116, -2163590, -748935, -1264868, -1388885, 3839701, -979253, 550293, -1351304, 752156, -217433, -1385664, -2418067, 3723200, 2762738, 577136, --842350, 4309463, -5984500, -2153926, 2461553, -2401424, 5037997, 574452, 3537979, 515933, -354872, 2382633, -2103460, -798327, -131533, -4832, -1655710, -1222455, 2188286, -60130, --5524939, 5177583, -782221, 924492, -4676683, 2245194, -2105071, 1868848, 77309, -106837, --1795833, -126165, -2731062, 2806761, -5251135, -534723, 3732864, -2956011, 1352915, 5713380, -1661616, 619549, -2879776, 350040, 1449015, -1017370, 1831267, -1140314, -881542, -1546725, -1650878, -1812476, -3036005, 995359, 437550, -697395, 3586298, -876710, -848256, -841814, -1151588, 1376000, -154082, 193810, 600222, -682363, 593779, -1360431, -639950, -185757, --353798, -713501, -85899, 1074, -216359, -401579, -93952, -716723, 343061, -339839, -817654, -532039, 593242, 935229, 555661, 10934450, 2017561, -1526861, 3339874, -1648194, --1367947, -1745904, -711891, -4099546, 5811091, 3362423, 2509335, 2706903, 2570538, -2687039, --3627100, 4898410, -1048509, -3787624, -7222525, 1190780, -2135673, 2276333, 49392, -604517, --1612760, 2283312, -2672007, -1342714, 3576634, 6794639, 1773285, 3097745, 594853, 3423089, --700080, 3642132, 2297808, 422517, 2038499, 193274, 605054, 200790, 4967667, 1064615, -1314260, -1105417, 744640, -336081, -682900, 4039417, 4617090, -1639604, -1683627, 945430, -4250944, -6881612, -348966, -1855963, -5093295, -2059437, 724239, -2158221, 2284386, 1859184, -166967, -3093450, 1464584, -642635, -2962454, 3842385, -5257040, -2471217, -5607617, -2761664, --781147, 860067, 5692443, -2429341, -1460289, 1778653, -876710, -1324997, 2706903, -419833, --91268, -1201517, -1882269, -2333241, -608812, 2032056, 819802, 1002338, 951872, 739808, -93952, -306553, -122943, 190052, 1438814, 719407, 769336, -453656, 141197, 518080, -426812, 32749, 117038, 37581, -81604, -161061, -962610, -725850, -486405, 582505, -486942, -185757, 922881, 3372623, 1386738, -6590091, -694174, 1054415, 4669167, -1360431, --8325257, 6721087, -7870528, 480499, -3472481, -2638721, -8342437, -5436892, -3291556, -2022930, -3346853, 1219234, -5513665, 836445, -2976949, 106300, -252866, 2309619, 398358, -2317135, -328565, 645319, 1278290, -1620813, -1224603, -442919, -2758980, -4035659, 5486284, 2633352, -690953, -704912, 4664335, 4145180, -4723927, 1363652, 383326, -832150, -2779381, 672162, --4879620, 1138166, -979789, -3880503, 4795868, 135828, -441845, 6135361, -5349919, 4836670, -1701881, -660351, -3982509, 1188095, -632971, -4089883, -3517041, 79457, -1578937, -1811403, --5789616, 311385, 1151051, 2726767, -1731946, 2538863, 686658, -968515, -870805, -3337727, -2847563, 639950, 353261, -5575405, 2870112, -453119, 323196, -2863133, 12885, -5120675, -548682, 1139777, 616328, -411780, 427886, -68719, -41876, -867047, 201327, -238371, -1053878, 678068, 389768, 1076426, -66035, 384936, 970663, 658741, -812823, -271657, -1588064, -567473, 246424, -551903, 539018, -1896765, -564788, -565325, 699543, -325881, --12291123, -11610370, 4491462, 7709467, 4645007, -10456098, 7444789, -2517388, -965831, 675921, --4862440, -3665755, 8787503, -105764, -25233, 686121, -219043, 2890513, -4385699, 2676302, --2326799, 2401424, 4019553, -2649995, -731755, 2353642, -678605, 4220342, -1315334, 1846299, -358093, -405874, 345745, -3557307, -4983773, 4723391, 608812, -882079, 35433, -4642860, --5813775, -137439, 106837, 3049964, -5404143, -4577899, -986232, -9569187, 3721589, -730144, -1954210, -710817, -2312840, 1494649, 12291123, 6851010, 3566434, -3656628, 4843650, -27380, --6314139, 46708, -6589554, 5629092, 772557, 690953, -3753265, 64961, 3833795, 1432909, -768799, 510027, 431644, 4146254, 2873870, 558883, 2800856, 1692754, 2238215, 6055904, -2507187, 2995203, -2786897, 2295123, 1695438, -690416, 4757213, 1472100, -4832, -396211, -1427540, 2556579, 319438, -537, -926639, 638340, 2096481, 1181653, -462246, 236223, --1698660, 522375, 445603, -732829, 181999, -75162, -16643, 1197759, -208306, 1249299, -1691680, 635118, -963683, -1859184, 331249, -1160178, 933082, 854699, -1177895, 525060, --2746095, -17623324, -1351841, -4232154, -627065, -2937758, -10013179, -417149, -2700998, -4115116, --9388262, -1148367, 6646999, -4645007, 4368519, -768262, 6163278, -2085207, 5005248, -1646583, --4980015, -1326608, 521839, -2173254, -4479114, -3583613, -4403415, 147640, -4019553, 1465658, -460635, 405338, 1882806, -3009698, -4049617, 5828271, -544387, 1730872, 47245, -4569845, --2914135, -3225521, 143345, -2315524, 4047470, 4129611, 667867, -5600101, -1849520, 10304700, -2550137, -4358318, -3481071, -2207076, -3833795, -2019172, 8036421, 4897874, -5858336, 3574487, -4734665, 7008313, -1822677, 2847027, -444529, 59056, -2851858, -5840619, -1069984, 4302484, -429497, 8336532, 5905043, 390842, 1923609, 7029251, -5616207, -2573759, -1665911, -3457986, -2467459, 1083406, 1125281, -3032784, 2042794, -2206003, 2265595, -4310000, -212601, -406411, --1699196, -114354, -380105, 2102923, 567473, 463320, -1854352, -1258962, -604517, -1749662, --83215, -2518998, -1467805, 88047, -203474, 1547262, -1073742, 411780, -523449, 833224, -607201, 2143189, -1792612, 22574348, 15197205, -4696547, -823560, 33823, -586800, -2606508, -3185792, 7715909, 6561637, 3371549, -11825656, -5288716, 1555852, 670015, 5070209, -8943196, -1836635, 12083890, 8178155, -1406065, 2936147, -1079111, -4051228, -5594732, 346819, -4768488, --2738042, 1378148, 3794067, -3498251, -6452115, -3097208, 1153736, 5947456, 8360691, -1596117, --8761733, -1873680, -3107409, -8841727, -491774, -277025, -4197794, 1451162, 2420214, 5152350, --7365332, 3017752, 3862249, 825171, -7120519, -5328981, 2483565, 306553, 1903207, -787590, --656593, -254477, -3925600, 1951526, 2119030, -2778307, 5018133, 5876589, 8089034, 1926293, -649614, 7572564, 12399571, 1969243, 1738925, 2102387, 7312719, 820339, 4348118, 12192338, -3669513, 2244657, 388695, -2305324, -10370199, 1392643, -226560, -1694365, -1942399, 1280974, --1393180, 2575370, 1198833, -1379758, -705985, -353261, 2156611, 1337882, -526134, -405874, -1486059, 3098282, 78920, -776315, 1138703, 119185, -1390496, -2880849, 2149094, -2712272, -1713155, 1147830, 2071785, -134218, -276489, 43487, 716723, -3783329, 169114, 553514, --298500, 439697, 11954505, 202400, 2539936, 2832531, 5797669, -2296197, 3714610, -3150359, --1909650, -9857487, 3972845, 6637335, -6000070, 5024038, -2445984, -8643085, 9006010, 5253282, --1529545, 5312875, 10536629, 7291244, -5338645, -3061775, 5343476, 1626182, -1128503, 4023311, -3795141, 5398774, 409096, -2422899, -4605279, -8334384, -207232, -6924561, 912681, -2281702, -3911642, -5513665, -12526809, 2732136, -3058017, 5775121, 1531156, 419833, -3419331, -7454453, --6158446, -622770, -570694, -5629092, 7944616, 10159208, 10648298, 4245039, -7510287, -699006, -10093173, 933619, -1661616, 4637491, -1244467, -2557116, -9450002, 5213554, 2825552, 13764833, -6444062, -9401147, 3214783, 3493956, -924492, -201327, 3416647, -2309082, 835908, -4044786, --9802189, 8893804, 1700807, 5290863, 2645700, -4679367, 7621420, -1702418, 1869385, 382789, --1600949, 264141, 300648, 577136, 4021163, 1285806, 824097, 318364, -1280437, -1610613, --1994476, -1241246, 1432372, -674310, -33286, -807454, 1318555, -1175210, -534187, 102005, --81068, 513785, -2106682, 2514167, -994822, 2211371, 805306, -1177895, -1366337, 3128884, --2801929, 2510409, -627065, -3639448, -6136972, -1626182, -1588064, -10528575, 499827, 1314797, -5251135, -1976759, -4576825, 1910187, 544387, 2512019, 49929, 5745593, 2267743, 3971234, -640487, -431644, 3370476, 2002529, -10425496, -3202972, -14889041, 678605, -2808372, 1720134, -2592013, 201327, 7056632, 1807644, 10091563, 1245004, -12091944, 243739, -4893042, -1997160, --618475, -1813013, -666794, -9558987, 2030446, -4607426, 11457362, -11955578, 6577743, -2607582, --10257456, -1922535, -7230041, -1559610, -2240899, -10873783, 3059091, 3307662, -2047626, -1816771, --753230, 3820910, -8686571, 196495, 8024073, 1469953, 11186242, 18347026, 7524783, -16668231, --22276384, 10742787, 4755603, 16554951, -3507915, 7926362, 1627793, 7869991, 10994043, 14217415, --7654706, 4072703, 10528575, -8725763, 1536525, -1158567, -1173600, 753767, 7489886, -1200980, -2501819, -4954782, 1687922, -3833795, -4081293, -1815161, -3426310, 494458, -2059974, -5660230, --304406, 3657702, 2214056, -1104344, -1139240, -897648, -22549, 1663226, 1712081, -1517197, --2294050, -1039382, 3109556, -862752, 3006477, 417149, 342524, -872415, 637266, 841277, -141734, 777389, 27380, -2739652, -2709051, -1769527, 697932, 2581812, -3905736, -2607582, --1327145, 1462436, -1913945, -1530082, -20474646, 15324443, 2649995, -2547989, -442382, -9075266, --7693897, 8050380, -2280091, -2463164, 8064338, -5996311, -6735583, 476741, 8012262, 3585224, --2798171, 345208, -4840428, -532039, 478352, 4475893, 25770, -10300942, -10500658, 2408403, --1557999, 2570538, -1211181, 4227859, 7846369, 15040439, -419833, 9351754, -2473901, 2682744, -6209986, -6174553, 12026982, -1708323, -7795366, -10689100, -2253784, -8866423, -11435350, -3076807, -4964982, -3446175, -8936753, 4376572, 6000070, 9731859, 12331388, -10229001, 3678103, -2849174, --9644886, 3531537, -10757819, -1940788, -17423072, 6857452, -5367099, 2535105, -3338263, 2695629, --18726594, -18440442, -11431055, -4346507, 9970767, -9937481, 19150722, -6872485, 1672353, -1837172, -3357591, -1804423, -13995151, 1952600, 1336272, 3708704, 2917894, 1566053, 5046050, -3100430, --4989679, -34360, -66035, -4644471, 1799054, -5965710, 3052648, 1912871, 2415919, -941672, --287763, -1882806, -4860829, -3400540, -2176475, -2149631, 2723546, -2139431, -5826123, 1805497, -2039036, -1123134, 3416647, -427886, -1430761, -141197, 551903, -1731946, -1908039, 1857037, -2370822, 1892470, 571768, -4156455, -3219078, -1020055, -3537979, 1023813, -60666, -201863, --4974646, -2498060, -1000727, 1029718, -43487, -3867081, -805306, -96637, -3048890, 17433810, -731218, 6748468, 4251481, 2077690, 9735617, 1649268, -14278619, 7017977, 1740536, 6712497, --906238, -10107132, 14573898, 8292508, 5826660, -1140314, -4773320, 2173254, -1353989, -7968238, -5059472, 3980361, -4849555, 6223408, 9174587, 506806, 3285113, 9657234, -10509248, 2707977, --3720516, 4468914, -19528680, 6128919, 8995809, -2990371, 2195802, 9529996, 4693863, 389231, -2797098, -9402757, 2210298, -5438503, 161061, 3027952, 1255741, -4170413, 18175764, -3089692, --3768297, -4089346, -16363825, -6315213, -10131291, -11215233, -2471217, 16068010, 17135846, -1510218, -5107253, 7164543, -14810121, -4505958, 11545409, 9948755, -6044630, -3890704, -14590004, -4472672, --5687074, -6724845, -8346732, 2330557, -14878840, 2580202, 13449690, 19340238, 5633924, -5470178, --660351, 10335839, -3823595, -6751152, 407485, -722628, -3306588, -4480188, 421444, -315680, -2007897, 3196530, 1499481, -1496259, 623844, 1777580, 1005022, -113817, -3061238, -5975374, -1488206, -227633, -2762201, 4801237, 1198296, 2758443, -2866354, 4098473, -3052111, -1995012, --3402688, 3277597, 367220, 2457258, 4358855, -256087, -2633889, -1140314, 2060511, 1178969, --454193, 261456, 386547, 802085, -518617, -793495, 2098629, 3286187, 8127152, 3955665, --1531156, -5450314, 3411815, 862215, -7165616, -10698764, -11438035, -4617090, -11185705, -4699768, --4527433, 137976, -10646687, 2344515, 4501663, 454193, -12161200, 3742527, -15091978, 4622459, -8436926, 194884, 13107166, 351114, -3894999, -2439542, 8838506, -3228205, 12162274, 4280472, --4209605, -4218195, 2139431, -6251325, -3353296, 408559, 11496017, -435402, 6072010, 3408057, -1034550, 8020852, -3629784, -7450695, 3268470, -5352066, -2473364, -14510547, 8126615, -5135707, --4291746, -2988760, -15957951, 19004694, 4922570, -2335389, 8278550, 2651069, 4015258, -8509404, --12719546, -14509473, -7002408, 679679, -14621679, 5366562, 10537702, -16441672, -6012418, 5921150, --7573638, 3866544, 18140868, 494458, -2991982, -4924717, 4057134, -9981504, 6415608, 3394635, --8979166, 2825552, 6280316, -3706020, -10628433, -9141838, -4795331, -448824, 2821794, 2352032, -1903744, -1957968, -2720862, -1434519, 2251100, 537, -1579474, -6102075, -7210177, -2081985, -395137, -5225902, -6198712, -4357781, -2667175, -2476586, -5458367, -4766340, -2596308, -3484292, --6947110, 1027571, 6291054, -814970, -728534, -2743410, -2071785, 1960116, -2544231, 306553, --5525476, 12348, -1707786, -3086471, -162135, -2911988, 1523103, 2309619, -2424509, 3590056, --2820183, -1250372, -2914672, -426276, 256087, 5172215, 11348377, 29120416, 30107184, 9424769, -18599356, -12650826, -13251048, -2786897, -2142115, 1343251, 4060892, 9928891, 17203492, 5958731, -15908559, 2029372, 4672388, 2643016, -4655208, 7597261, -390842, 3171297, 1050656, -7974681, --1212255, -4171487, -9089761, -5312875, -48855, 1116155, -11989401, -4635344, 14681809, 10937671, -7543573, 12814572, -7987566, 303869, -21799644, 1224603, 18376018, -3404835, -3874597, 2445984, --2169495, 14738717, -1329829, -2210298, 11024107, -13151727, -21825414, -8519068, 1764695, -11436424, -8441221, 12256226, -17219598, -6253473, -22012, -115964, -24634322, -15384036, 7684234, 3583613, --1988033, 8075613, -10835129, -6357089, -15265924, 3789235, 4707284, 1448478, 901943, -9849971, --16807818, 13975824, -22800908, 6809134, -8440148, 21824876, 2118493, 9206799, -6298570, -8362838, -6156299, 3105261, 9580998, -9055402, -1785096, 6754373, -546535, -4938676, -4882841, -4852776, -376883, 5230197, 5459977, -6051609, -2691871, -840740, -8382166, -2773475, 1416266, -738198, -637803, -4172024, -7361037, -865973, 105227, 5869610, 1689533, -3360812, 4328790, 920734, -2169495, -7854422, 1572495, -4624069, 3740380, 874026, 3966402, 6613713, 1934883, -4359392, --9090835, 2997887, 2978023, -28127204, -20318954, 14090714, -2976412, 25578140, -6272800, 21067352, --16956530, 561567, 7504919, -1621887, 860604, 2520609, -1363652, -12635257, 4404489, 4826470, -5506148, 6375879, -3950833, 10481868, -9525701, -6944962, -5466957, 14722611, -8147553, -2675765, -1264331, -252866, -7668127, 6595459, -8550743, -10062035, -19122806, 1794223, 3441343, -12896176, --6097780, 6293738, -2677375, 3389266, 978716, 15116137, 990527, 11391327, 4996658, 544924, -9023726, 2121177, 3085934, -17024176, 17531520, 6289980, 13721884, -8317741, 3596498, -9108552, -14235669, 10910291, 17380658, 2843268, -4635344, -12619151, -855772, 2298881, -10861972, 15396921, -2404108, 2449205, 16441672, 3760244, -5018670, -6526740, -608812, 9882720, 11775190, -3784403, -14701673, -17609366, -18596134, -8035347, 4231080, -5575405, 8001524, -1941325, 4259534, 14228153, --708670, 7100655, -5973226, -5312338, 6107981, -467078, 9844602, -2988760, -148176, -2967286, --6217502, 1324997, -3695819, -1351304, 4000762, 1475858, -5665062, -5021354, 2887829, 7603166, -7703024, -699006, 6290517, 7024419, -9822053, 4628364, 9091372, 7324530, 3973382, -7164543, --8904541, -9075803, -9357123, -9079024, 654983, -3100967, -1404454, 1145146, -6883759, 4909685, -4228396, -3368328, 5050345, 1956358, 2314451, -6316823, 5252745, 12986370, -30633318, -1399623, -15949361, -10207527, -3418794, 11747809, -12771085, -25919054, 5129802, 4382478, 3990025, -3401614, --15348603, 3841312, 4322348, 1126355, 8471286, -27485644, 12559558, -6413997, 6514392, -15684147, -12682502, -19839528, -12692165, 7637526, -5239860, -2355790, -15105937, 11768747, 15502684, -100395, -1670742, -7222525, 23277112, 5724655, 6294812, -4308389, -20273856, -4414153, 11080479, -2105608, -16617765, 64961, -6134824, 3951370, -1253057, 10392210, -20075214, -2498060, -15420543, 16490527, --6267968, 5468567, -562104, -682900, -18215494, -6456410, 15809775, 4986994, 1316944, -4894652, -360240, 1930588, -23329188, -24143084, 25479894, -11469710, -27916214, 11201812, 13012677, -22490596, --29405494, -20547660, -19754166, 3368865, 7650411, -2571075, -19001472, -734976, -10242423, -4878009, --13824963, -892816, 1218160, 1242856, -2891050, 12811351, -7196755, 4953708, -6139656, -437013, -3373697, -3441343, -685584, -7803419, 9926743, -2510945, 3359738, -5765994, -8378408, -1852205, -3765613, 4382478, 1220845, -8134668, 4518843, -1305133, -6620155, 6097780, -9917079, -2100239, --6222871, 9562208, -4507032, -10963441, 4466766, -4451734, -4890894, -14515379, -996969, 3032784, -11775727, 4734128, -7350300, -3826279, 930934, -2118493, -4045322, 2019708, -825171, -2945811, --2974265, -1147293, 11783780, -16585553, -9580998, -17351132, -1839857, 3799436, -23800562, 3972845, --11749957, 32993402, 1510218, -29324962, -6999723, 14496051, 8536784, 7161858, 14654428, 15123117, --21512418, -5259725, -8451422, 20146080, -7231115, 23490786, -238908, -13303661, -10936060, -20684026, --24107652, 1577864, 2580202, -3755412, -12517682, -5097053, 1413581, 3933116, 8011725, -11551851, -5748277, -13612362, -16357383, 3292093, -3634079, -4177393, -17045114, -15867220, -7875897, -4815195, -22736484, 2240899, 7529078, 12992276, -561030, 28921772, 11513734, -9487583, 1329829, 14940581, --5948530, 18884434, -5085778, 2457795, 1153199, -25391846, -26229902, 3949759, 18100066, 481036, --5822365, -28424630, 1701344, 9827422, 5990406, -9701794, -8096014, -5588826, 3358665, -12237436, -30158186, 17156784, 18446884, 3762928, -21500070, 7851200, 9635222, 30230128, 6837051, 3155190, -11995307, 5244692, -5034239, 346282, 9168145, -791348, 1154273, 3071439, -7761543, -5299453, -8918500, 322659, -7392713, 9562208, -5990943, -2119566, -4611721, -4315906, 8346195, -5388574, --2536178, 4536023, -9190156, 3885335, -920197, -5140002, 11041824, -3956739, -86973, -14144938, -8589935, -4282083, -3784403, -9102646, -13088376, 2113661, -5324149, 9208947, -373662, 5485210, -3425237, 257698, -5489505, 200253, 8207146, -41876, -14249091, -12852690, 27230630, -8389145, --10176388, -1370095, -7587597, -18519362, 338766, 12933757, -31958314, -476741, 8223789, 10253698, --10930692, 7301982, -18314814, 1474784, -4761508, 5784784, -16404628, 10253698, -27899034, 4635881, -723702, 15850577, 14804752, 7458211, -10441602, 11668352, -3428458, 13026636, -14139032, 2302103, -16485695, 13165685, -7784628, 2764885, 387621, -3586298, 7987029, -3040300, -9640591, -10641855, -7618735, -19285476, 12770548, 3064996, -20781736, 19640348, 18708878, 17696876, 6342593, -9077950, -22650046, 2801929, 9726490, -13838921, -12087112, -13262322, 4133369, 5249524, 8114267, -18634790, -1811403, 13841069, -35929548, 1424319, -11800960, 22592602, 14520211, 11382737, -3179350, 15001247, --14088030, -667867, -9808095, -21531744, -903554, -19822348, -16639240, 9812927, 26552562, -24879134, --5913096, -4488778, 26658862, -6519224, 11667279, -7571491, -4665945, -952409, 9440338, -5504538, --2311766, 838056, 6438156, 4799626, 3393561, -3483219, 991601, 2851322, 13218836, -10377715, -11034845, -2328946, 8078834, 84289, 2162516, 2876554, 5094905, -6841346, -1542967, -1270237, --8564702, -7606387, -7596187, 5355824, 4274566, -1496796, -3395709, -4355097, -5983427, -3654480, -527744, -2602750, -36507, 8020852, -158377, -14479408, 6859600, -8443369, -1267015, 6205691, --2373506, 24075976, 4817880, 12357695, -34540128, 16193637, -19452980, 26235808, -2880313, 10408853, -19347218, -20878910, 37514928, 27428734, 20173998, -8981313, 5251135, 26218090, -6755984, -8032126, --6293738, -1071058, -19822884, 5476084, -10658498, -23460186, 22758494, 7894150, 6087043, 3165391, -5100811, 9185324, 23973970, 5366025, -15316927, -1011465, -15884400, 3376918, 2044941, -27268210, --1388348, 15272904, 878858, -1696512, -8619462, 29554206, 5823439, 12744242, 6238440, -15533823, --11502459, -8364986, 17988396, 11016591, -3849901, 11316165, -1829119, -19667728, 19145354, 2630131, -21976810, 2729452, 2079838, 716186, -29642254, 4290136, 580357, 3535832, 18104360, -6959995, -28606630, -43498892, -7975218, 32927904, -13422310, 11080479, -15106474, -23023710, -18971944, 13804025, --13030931, 12890271, -20368882, -4035659, 3197603, -4684199, -8128226, -2268280, -2572149, 9083856, -20082730, 2427194, 11837467, -3649112, -2219424, 15078556, -2348810, -3937411, 3898757, -7107634, -6381248, 13169980, -8801462, -1028108, -3549791, 2649995, 2224793, 6405407, 22713398, -3866008, -7876433, 708670, 5312338, 8623221, 3986804, 1586454, 12559021, 14090714, -4041564, -1636383, -5505611, 3296388, 4739497, -17439714, -1662152, 17162690, -3968550, 3809099, 6423124, -630823, -17476222, 6051072, -35367980, -42494408, -3671123, -19964082, 2765422, 11987254, -16901234, 4865124, --25855166, 11187853, -14212047, -70972720, -4499515, 43148852, -18577882, -8108899, 43509092, -10291279, -2400350, 51958904, -12401181, 11413876, 4920959, -7700340, 41970420, -33853468, -4310000, -1021665, --5893232, -6893960, -6867116, -940598, 13693966, -7785702, -22835268, 156766, 492848, 6657200, -8372502, 1410897, 18855444, -823560, 8690329, -5242008, -22670448, 15716359, -2764885, -23469848, -915365, 13373454, 41306848, 20783346, 34724812, 625455, 8557185, 16464220, 3922379, -2131378, -32453310, -1816771, -12641162, 37880536, 6635725, 6606197, 269509, -5468030, 21697102, -117038, --12634183, -14362371, -2963528, -2932926, 32846300, -22405234, 2859375, 4116189, -5865852, 38477000, -296353, -24805046, 4114579, 12492986, -18168248, -988916, 18441516, 15128485, -9366787, 1345399, --10584947, 8783208, -2889439, 1100585, -10426570, 9524627, 67646, -1177358, -15138686, 6118718, -5086852, -9951439, 705448, 3447248, -5152887, -3473555, 11573326, 1697586, 6416145, -4402879, -3332358, 20061792, -18413062, -8477729, -6103149, 21701396, 8039642, 11429445, -13285944, -12172474, --5004174, -1574642, -16103443, -18087718, 21430276, 8580271, -12753369, -11904576, -7322383, -250719, --12659953, -11115912, 47245, 3205119, 8053064, -2232846, -4130148, 6560026, -1720671, 2057826, -24157044, 19389092, -39687644, -19478750, 30592516, -5669894, -29731374, -319438, 663036, 10741713, -32350230, 28685012, -17646410, 5274757, -3971771, 212064, -258235, -18644454, 28067612, -8361228, --18335752, 6500970, -13152264, 15887084, 1431835, 22609782, -6941204, -21518324, -19381040, 17125108, --8223252, 22306450, -5961952, 14439680, -14654965, -11449309, -6950868, 1573032, -18402862, 4496294, -1012002, 278636, 18061412, -230854, 6059662, -12542378, 8973797, -19779936, 21194590, -19027242, -12615393, 6376953, 17825188, -29766270, 1059246, 2494839, -8949101, -21506512, -36374616, -6100464, --31031138, -11954505, -24822764, -11587285, -45403708, -14124537, 20674362, 26122528, 14269492, 15213311, --2403034, 16530792, -32328756, -7388955, 5082020, 20936892, 5829881, -44518408, -1697049, -19553912, --12973486, 52110300, 35067336, -24656870, -9983651, -17299054, 5873905, -45858976, 2892124, 9629317, --13048111, -13565117, 8426189, 2742337, 522375, -8748312, -7655779, -7477001, -7566659, 14405857, -13234942, -854162, -3590593, -14038637, -16121160, -3347927, -3963181, 5565741, 14116484, -27251568, --1968706, 13811004, 52613, 17648020, -6003291, -16648367, 9182103, 19083076, 9693741, -11227045, -1518808, 17689896, -22189948, -15728170, 29731912, 1808181, -879395, -2820720, 4833986, 7023882, -9139154, -3510062, -7055558, -8283382, -52170432, 15090904, 8403640, -27776090, 11055783, 10031433, --19832012, -15577310, 23704462, 2708514, 12703976, -6543920, 15721191, -5170067, -2294050, 12030203, -6086506, 3794604, 498753, -8501888, -14063870, -8895414, 22404160, -8075613, -19146964, 32571958, -20418274, 2361695, 15113990, 4206921, -16806744, -50337552, 20657182, -1910724, -26940182, 22490596, --2274185, -36760624, -30590904, -16209207, 24097988, 9380745, 24970402, 31071404, 9474698, -25551834, -8126615, 8857833, -32113470, -5448703, 18276696, -10307922, -35006668, -26890254, -42700028, -27542552, --6078990, 26805964, 39276404, 18624052, -2483028, 26721676, -6624450, -66376036, -52327196, 11267310, --26310432, -31592706, 45035952, 5690295, -60327112, -46961708, 16069620, 2549600, 10459319, 22232898, -54244364, 30802968, -4424890, 60029148, 19348828, -63471564, 700617, -13719199, 32830730, 9578851, --20612622, 9920838, -15436112, -9489730, -13408351, 20318954, -3652870, 14792404, 12763569, 16039018, --3487514, -16565689, -5143224, 10997801, -6878927, 9208947, 6247030, 6570763, -14015552, 1466731, -5891085, 59056, 25636122, -1098438, 11476153, 2274722, -4063039, 13390097, 3439195, -2257005, -15298674, -7468412, -2158221, 9043054, 3959423, -1665911, -5993090, -8815957, 1124208, -10092636, --7181722, 5061619, 7434589, -7795903, 49400712, 48193828, -15229417, 16869558, -19812684, 12176232, -564251, 7101729, -23592792, 2005750, -20167018, -17775796, 99858, -41248328, 951872, -17477832, -4544613, 12302397, -384936, 14229227, -20403242, 30963492, -15302968, -426276, 21268678, -19963008, -7792145, 15508590, 18865644, 2837900, 6781754, 4793184, -29773250, -16440598, -4840428, 4487167, -4556424, -4327180, 19679540, -6267431, -300111, -3674882, -8562017, 7056095, 3898757, -23428510, -6896644, -18814642, 5150740, -45315664, -2224256, -1058173, -126702, 18610094, -7507066, -16478716, --7424925, 17099338, -87510, -43803836, 61351996, -5299453, -11776263, 13443785, -2717104, -8968429, --11547556, -12159589, -13201119, 42168524, -16326781, -24327768, 20822002, 2101313, -33279018, -7778723, -13837848, 11113228, -11010149, 22771380, -4061429, -6168110, 20946556, -15405511, -14270566, 26626650, --11822971, -4138201, -1515587, 11319923, 5370857, -212064, -1940252, 724239, 4950487, -5392332, --493921, 5270462, 5438503, 6669011, -16387448, 4274030, 8133058, -15782931, 1245541, 3391951, --2914135, -6343667, 6300180, 1893544, -5834176, 995359, -650151, -2594160, -20084878, 11429445, --11933567, 3663607, 3265786, -17988934, -1127429, 970663, -232465, -166967, -6231998, -799938, -4992900, -641024, -39080980, -57623428, -55455008, 122781304, 101855688, 116037672, 262088032, 68655592, --65648040, 20816096, -210177984, -222760096, -55123756, -139942384, -108257872, 66411468, -34378528, 13975287, -167072080, 83068424, 123875448, 237941728, 158567504, 41640244, 34587372, -69844760, -216312272, -165144176, --126436856, -255467344, -103314904, 6411313, -45091252, -20077898, 129559296, 34613140, 17584132, 160551776, -20074140, 38659536, 227867872, 167700224, 106213464, 215572992, 107469744, -37389300, -2970507, -67716064, --334947328, -292135616, -236071808, -366940000, -279588960, -98735392, -132268352, 30363808, 255468416, 228307040, -315713920, 398616992, 296617408, 231549744, 225137360, 124840744, -41691784, -79621176, -182415312, -260505872, --255969856, -221628896, -254082752, -259896528, -208974848, -116569168, -84466976, 32179506, 200041328, 288338880, -411251712, 462615744, 276290944, 67536752, -39064876, -277811360, -264469056, -201281488, -156429696, -57802744, -29885994, 22371948, 28801514, 36064304, 17029008, 42369316, 59176060, 44150652, 71372152, 40873056, --17703318, -21584896, -62223876, -113985208, -31006980, -35326108, -40931040, 36417564, 31215286, -38414188, --49750216, -92739616, -151871648, -63468344, 87251184, 148390576, 287313440, 346670432, 235777600, 146572736, -39529268, -129344016, -189536912, -214430000, -250881920, -235670224, -180812752, -146375168, -121126664, -73237248, --18156438, 63735704, 219578048, 306405120, 272004032, 195751728, 121012848, 26828514, -46658376, -71418864, --90714544, -64438468, -16832514, -2421288, -18158584, -30495342, -49466748, -79549776, -103589240, -99981472, --100369088, -58452356, 10364830, 38043208, 69184408, 90896544, 91934848, 71729712, 48964776, 28124520, -15826418, 22891102, 31132070, 31839666, 28161026, 16952236, -6439230, -37280852, -62181464, -76198088, --77845744, -62555124, -49427556, -39984536, -20632486, 5682779, 22249004, 28858422, 33149094, 35403416, -42133628, 46341088, 41539848, 23870892, 10438918, 3092913, -6102612, -8810589, -5403069, -8459475, --4842576, 1653026, -2673617, -11917461, -14500883, -23751170, -33704220, -32192928, -28791314, -21981642, --3300146, 12139725, 19881404, 28233504, 32287416, 23257248, 17863842, 9987410, 2796561, 2595234, -9167608, 8540542, 7665443, 4325032, -5967320, -13225815, -20402168, -27709518, -27945742, -21998822, --11977053, -1756642, 9164386, 16327318, 19455664, 15980500, 10468983, 4713190, 1666447, 667331, -505196, -666794, -1643362, -2986076, -3389266, -3277597, -2282775, -1489280, -335544, 37044, -511638, 29528, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +2538326, -3474629, 5252208, -3056406, -1127966, 133681, -1877975, -1990717, -4176856, 1038845, +6187438, 693100, 1060320, 2706903, 584116, -2163590, -748935, -1264868, -1388885, 3839701, +979253, 550293, -1351304, 752156, -217433, -1385664, -2418067, 3723200, 2762738, 577136, +-842350, 4309463, -5984500, -2153926, 2461553, -2401424, 5037997, 574452, 3537979, 515933, +354872, 2382633, -2103460, -798327, -131533, -4832, -1655710, -1222455, 2188286, -60130, +-5524939, 5177583, -782221, 924492, -4676683, 2245194, -2105071, 1868848, 77309, -106837, +-1795833, -126165, -2731062, 2806761, -5251135, -534723, 3732864, -2956011, 1352915, 5713380, +1661616, 619549, -2879776, 350040, 1449015, -1017370, 1831267, -1140314, -881542, -1546725, +1650878, -1812476, -3036005, 995359, 437550, -697395, 3586298, -876710, -848256, -841814, +1151588, 1376000, -154082, 193810, 600222, -682363, 593779, -1360431, -639950, -185757, +-353798, -713501, -85899, 1074, -216359, -401579, -93952, -716723, 343061, -339839, +817654, -532039, 593242, 935229, 555661, 10934450, 2017561, -1526861, 3339874, -1648194, +-1367947, -1745904, -711891, -4099546, 5811091, 3362423, 2509335, 2706903, 2570538, -2687039, +-3627100, 4898410, -1048509, -3787624, -7222525, 1190780, -2135673, 2276333, 49392, -604517, +-1612760, 2283312, -2672007, -1342714, 3576634, 6794639, 1773285, 3097745, 594853, 3423089, +-700080, 3642132, 2297808, 422517, 2038499, 193274, 605054, 200790, 4967667, 1064615, +1314260, -1105417, 744640, -336081, -682900, 4039417, 4617090, -1639604, -1683627, 945430, +4250944, -6881612, -348966, -1855963, -5093295, -2059437, 724239, -2158221, 2284386, 1859184, +166967, -3093450, 1464584, -642635, -2962454, 3842385, -5257040, -2471217, -5607617, -2761664, +-781147, 860067, 5692443, -2429341, -1460289, 1778653, -876710, -1324997, 2706903, -419833, +-91268, -1201517, -1882269, -2333241, -608812, 2032056, 819802, 1002338, 951872, 739808, +93952, -306553, -122943, 190052, 1438814, 719407, 769336, -453656, 141197, 518080, +426812, 32749, 117038, 37581, -81604, -161061, -962610, -725850, -486405, 582505, +486942, -185757, 922881, 3372623, 1386738, -6590091, -694174, 1054415, 4669167, -1360431, +-8325257, 6721087, -7870528, 480499, -3472481, -2638721, -8342437, -5436892, -3291556, -2022930, +3346853, 1219234, -5513665, 836445, -2976949, 106300, -252866, 2309619, 398358, -2317135, +328565, 645319, 1278290, -1620813, -1224603, -442919, -2758980, -4035659, 5486284, 2633352, +690953, -704912, 4664335, 4145180, -4723927, 1363652, 383326, -832150, -2779381, 672162, +-4879620, 1138166, -979789, -3880503, 4795868, 135828, -441845, 6135361, -5349919, 4836670, +1701881, -660351, -3982509, 1188095, -632971, -4089883, -3517041, 79457, -1578937, -1811403, +-5789616, 311385, 1151051, 2726767, -1731946, 2538863, 686658, -968515, -870805, -3337727, +2847563, 639950, 353261, -5575405, 2870112, -453119, 323196, -2863133, 12885, -5120675, +548682, 1139777, 616328, -411780, 427886, -68719, -41876, -867047, 201327, -238371, +1053878, 678068, 389768, 1076426, -66035, 384936, 970663, 658741, -812823, -271657, +1588064, -567473, 246424, -551903, 539018, -1896765, -564788, -565325, 699543, -325881, +-12291123, -11610370, 4491462, 7709467, 4645007, -10456098, 7444789, -2517388, -965831, 675921, +-4862440, -3665755, 8787503, -105764, -25233, 686121, -219043, 2890513, -4385699, 2676302, +-2326799, 2401424, 4019553, -2649995, -731755, 2353642, -678605, 4220342, -1315334, 1846299, +358093, -405874, 345745, -3557307, -4983773, 4723391, 608812, -882079, 35433, -4642860, +-5813775, -137439, 106837, 3049964, -5404143, -4577899, -986232, -9569187, 3721589, -730144, +1954210, -710817, -2312840, 1494649, 12291123, 6851010, 3566434, -3656628, 4843650, -27380, +-6314139, 46708, -6589554, 5629092, 772557, 690953, -3753265, 64961, 3833795, 1432909, +768799, 510027, 431644, 4146254, 2873870, 558883, 2800856, 1692754, 2238215, 6055904, +2507187, 2995203, -2786897, 2295123, 1695438, -690416, 4757213, 1472100, -4832, -396211, +1427540, 2556579, 319438, -537, -926639, 638340, 2096481, 1181653, -462246, 236223, +-1698660, 522375, 445603, -732829, 181999, -75162, -16643, 1197759, -208306, 1249299, +1691680, 635118, -963683, -1859184, 331249, -1160178, 933082, 854699, -1177895, 525060, +-2746095, -17623324, -1351841, -4232154, -627065, -2937758, -10013179, -417149, -2700998, -4115116, +-9388262, -1148367, 6646999, -4645007, 4368519, -768262, 6163278, -2085207, 5005248, -1646583, +-4980015, -1326608, 521839, -2173254, -4479114, -3583613, -4403415, 147640, -4019553, 1465658, +460635, 405338, 1882806, -3009698, -4049617, 5828271, -544387, 1730872, 47245, -4569845, +-2914135, -3225521, 143345, -2315524, 4047470, 4129611, 667867, -5600101, -1849520, 10304700, +2550137, -4358318, -3481071, -2207076, -3833795, -2019172, 8036421, 4897874, -5858336, 3574487, +4734665, 7008313, -1822677, 2847027, -444529, 59056, -2851858, -5840619, -1069984, 4302484, +429497, 8336532, 5905043, 390842, 1923609, 7029251, -5616207, -2573759, -1665911, -3457986, +2467459, 1083406, 1125281, -3032784, 2042794, -2206003, 2265595, -4310000, -212601, -406411, +-1699196, -114354, -380105, 2102923, 567473, 463320, -1854352, -1258962, -604517, -1749662, +-83215, -2518998, -1467805, 88047, -203474, 1547262, -1073742, 411780, -523449, 833224, +607201, 2143189, -1792612, 22574348, 15197205, -4696547, -823560, 33823, -586800, -2606508, +3185792, 7715909, 6561637, 3371549, -11825656, -5288716, 1555852, 670015, 5070209, -8943196, +1836635, 12083890, 8178155, -1406065, 2936147, -1079111, -4051228, -5594732, 346819, -4768488, +-2738042, 1378148, 3794067, -3498251, -6452115, -3097208, 1153736, 5947456, 8360691, -1596117, +-8761733, -1873680, -3107409, -8841727, -491774, -277025, -4197794, 1451162, 2420214, 5152350, +-7365332, 3017752, 3862249, 825171, -7120519, -5328981, 2483565, 306553, 1903207, -787590, +-656593, -254477, -3925600, 1951526, 2119030, -2778307, 5018133, 5876589, 8089034, 1926293, +649614, 7572564, 12399571, 1969243, 1738925, 2102387, 7312719, 820339, 4348118, 12192338, +3669513, 2244657, 388695, -2305324, -10370199, 1392643, -226560, -1694365, -1942399, 1280974, +-1393180, 2575370, 1198833, -1379758, -705985, -353261, 2156611, 1337882, -526134, -405874, +1486059, 3098282, 78920, -776315, 1138703, 119185, -1390496, -2880849, 2149094, -2712272, +1713155, 1147830, 2071785, -134218, -276489, 43487, 716723, -3783329, 169114, 553514, +-298500, 439697, 11954505, 202400, 2539936, 2832531, 5797669, -2296197, 3714610, -3150359, +-1909650, -9857487, 3972845, 6637335, -6000070, 5024038, -2445984, -8643085, 9006010, 5253282, +-1529545, 5312875, 10536629, 7291244, -5338645, -3061775, 5343476, 1626182, -1128503, 4023311, +3795141, 5398774, 409096, -2422899, -4605279, -8334384, -207232, -6924561, 912681, -2281702, +3911642, -5513665, -12526809, 2732136, -3058017, 5775121, 1531156, 419833, -3419331, -7454453, +-6158446, -622770, -570694, -5629092, 7944616, 10159208, 10648298, 4245039, -7510287, -699006, +10093173, 933619, -1661616, 4637491, -1244467, -2557116, -9450002, 5213554, 2825552, 13764833, +6444062, -9401147, 3214783, 3493956, -924492, -201327, 3416647, -2309082, 835908, -4044786, +-9802189, 8893804, 1700807, 5290863, 2645700, -4679367, 7621420, -1702418, 1869385, 382789, +-1600949, 264141, 300648, 577136, 4021163, 1285806, 824097, 318364, -1280437, -1610613, +-1994476, -1241246, 1432372, -674310, -33286, -807454, 1318555, -1175210, -534187, 102005, +-81068, 513785, -2106682, 2514167, -994822, 2211371, 805306, -1177895, -1366337, 3128884, +-2801929, 2510409, -627065, -3639448, -6136972, -1626182, -1588064, -10528575, 499827, 1314797, +5251135, -1976759, -4576825, 1910187, 544387, 2512019, 49929, 5745593, 2267743, 3971234, +640487, -431644, 3370476, 2002529, -10425496, -3202972, -14889041, 678605, -2808372, 1720134, +2592013, 201327, 7056632, 1807644, 10091563, 1245004, -12091944, 243739, -4893042, -1997160, +-618475, -1813013, -666794, -9558987, 2030446, -4607426, 11457362, -11955578, 6577743, -2607582, +-10257456, -1922535, -7230041, -1559610, -2240899, -10873783, 3059091, 3307662, -2047626, -1816771, +-753230, 3820910, -8686571, 196495, 8024073, 1469953, 11186242, 18347026, 7524783, -16668231, +-22276384, 10742787, 4755603, 16554951, -3507915, 7926362, 1627793, 7869991, 10994043, 14217415, +-7654706, 4072703, 10528575, -8725763, 1536525, -1158567, -1173600, 753767, 7489886, -1200980, +2501819, -4954782, 1687922, -3833795, -4081293, -1815161, -3426310, 494458, -2059974, -5660230, +-304406, 3657702, 2214056, -1104344, -1139240, -897648, -22549, 1663226, 1712081, -1517197, +-2294050, -1039382, 3109556, -862752, 3006477, 417149, 342524, -872415, 637266, 841277, +141734, 777389, 27380, -2739652, -2709051, -1769527, 697932, 2581812, -3905736, -2607582, +-1327145, 1462436, -1913945, -1530082, -20474646, 15324443, 2649995, -2547989, -442382, -9075266, +-7693897, 8050380, -2280091, -2463164, 8064338, -5996311, -6735583, 476741, 8012262, 3585224, +-2798171, 345208, -4840428, -532039, 478352, 4475893, 25770, -10300942, -10500658, 2408403, +-1557999, 2570538, -1211181, 4227859, 7846369, 15040439, -419833, 9351754, -2473901, 2682744, +6209986, -6174553, 12026982, -1708323, -7795366, -10689100, -2253784, -8866423, -11435350, -3076807, +4964982, -3446175, -8936753, 4376572, 6000070, 9731859, 12331388, -10229001, 3678103, -2849174, +-9644886, 3531537, -10757819, -1940788, -17423072, 6857452, -5367099, 2535105, -3338263, 2695629, +-18726594, -18440442, -11431055, -4346507, 9970767, -9937481, 19150722, -6872485, 1672353, -1837172, +3357591, -1804423, -13995151, 1952600, 1336272, 3708704, 2917894, 1566053, 5046050, -3100430, +-4989679, -34360, -66035, -4644471, 1799054, -5965710, 3052648, 1912871, 2415919, -941672, +-287763, -1882806, -4860829, -3400540, -2176475, -2149631, 2723546, -2139431, -5826123, 1805497, +2039036, -1123134, 3416647, -427886, -1430761, -141197, 551903, -1731946, -1908039, 1857037, +2370822, 1892470, 571768, -4156455, -3219078, -1020055, -3537979, 1023813, -60666, -201863, +-4974646, -2498060, -1000727, 1029718, -43487, -3867081, -805306, -96637, -3048890, 17433810, +731218, 6748468, 4251481, 2077690, 9735617, 1649268, -14278619, 7017977, 1740536, 6712497, +-906238, -10107132, 14573898, 8292508, 5826660, -1140314, -4773320, 2173254, -1353989, -7968238, +5059472, 3980361, -4849555, 6223408, 9174587, 506806, 3285113, 9657234, -10509248, 2707977, +-3720516, 4468914, -19528680, 6128919, 8995809, -2990371, 2195802, 9529996, 4693863, 389231, +2797098, -9402757, 2210298, -5438503, 161061, 3027952, 1255741, -4170413, 18175764, -3089692, +-3768297, -4089346, -16363825, -6315213, -10131291, -11215233, -2471217, 16068010, 17135846, -1510218, +5107253, 7164543, -14810121, -4505958, 11545409, 9948755, -6044630, -3890704, -14590004, -4472672, +-5687074, -6724845, -8346732, 2330557, -14878840, 2580202, 13449690, 19340238, 5633924, -5470178, +-660351, 10335839, -3823595, -6751152, 407485, -722628, -3306588, -4480188, 421444, -315680, +2007897, 3196530, 1499481, -1496259, 623844, 1777580, 1005022, -113817, -3061238, -5975374, +1488206, -227633, -2762201, 4801237, 1198296, 2758443, -2866354, 4098473, -3052111, -1995012, +-3402688, 3277597, 367220, 2457258, 4358855, -256087, -2633889, -1140314, 2060511, 1178969, +-454193, 261456, 386547, 802085, -518617, -793495, 2098629, 3286187, 8127152, 3955665, +-1531156, -5450314, 3411815, 862215, -7165616, -10698764, -11438035, -4617090, -11185705, -4699768, +-4527433, 137976, -10646687, 2344515, 4501663, 454193, -12161200, 3742527, -15091978, 4622459, +8436926, 194884, 13107166, 351114, -3894999, -2439542, 8838506, -3228205, 12162274, 4280472, +-4209605, -4218195, 2139431, -6251325, -3353296, 408559, 11496017, -435402, 6072010, 3408057, +1034550, 8020852, -3629784, -7450695, 3268470, -5352066, -2473364, -14510547, 8126615, -5135707, +-4291746, -2988760, -15957951, 19004694, 4922570, -2335389, 8278550, 2651069, 4015258, -8509404, +-12719546, -14509473, -7002408, 679679, -14621679, 5366562, 10537702, -16441672, -6012418, 5921150, +-7573638, 3866544, 18140868, 494458, -2991982, -4924717, 4057134, -9981504, 6415608, 3394635, +-8979166, 2825552, 6280316, -3706020, -10628433, -9141838, -4795331, -448824, 2821794, 2352032, +1903744, -1957968, -2720862, -1434519, 2251100, 537, -1579474, -6102075, -7210177, -2081985, +395137, -5225902, -6198712, -4357781, -2667175, -2476586, -5458367, -4766340, -2596308, -3484292, +-6947110, 1027571, 6291054, -814970, -728534, -2743410, -2071785, 1960116, -2544231, 306553, +-5525476, 12348, -1707786, -3086471, -162135, -2911988, 1523103, 2309619, -2424509, 3590056, +-2820183, -1250372, -2914672, -426276, 256087, 5172215, 11348377, 29120416, 30107184, 9424769, +18599356, -12650826, -13251048, -2786897, -2142115, 1343251, 4060892, 9928891, 17203492, 5958731, +15908559, 2029372, 4672388, 2643016, -4655208, 7597261, -390842, 3171297, 1050656, -7974681, +-1212255, -4171487, -9089761, -5312875, -48855, 1116155, -11989401, -4635344, 14681809, 10937671, +7543573, 12814572, -7987566, 303869, -21799644, 1224603, 18376018, -3404835, -3874597, 2445984, +-2169495, 14738717, -1329829, -2210298, 11024107, -13151727, -21825414, -8519068, 1764695, -11436424, +8441221, 12256226, -17219598, -6253473, -22012, -115964, -24634322, -15384036, 7684234, 3583613, +-1988033, 8075613, -10835129, -6357089, -15265924, 3789235, 4707284, 1448478, 901943, -9849971, +-16807818, 13975824, -22800908, 6809134, -8440148, 21824876, 2118493, 9206799, -6298570, -8362838, +6156299, 3105261, 9580998, -9055402, -1785096, 6754373, -546535, -4938676, -4882841, -4852776, +376883, 5230197, 5459977, -6051609, -2691871, -840740, -8382166, -2773475, 1416266, -738198, +637803, -4172024, -7361037, -865973, 105227, 5869610, 1689533, -3360812, 4328790, 920734, +2169495, -7854422, 1572495, -4624069, 3740380, 874026, 3966402, 6613713, 1934883, -4359392, +-9090835, 2997887, 2978023, -28127204, -20318954, 14090714, -2976412, 25578140, -6272800, 21067352, +-16956530, 561567, 7504919, -1621887, 860604, 2520609, -1363652, -12635257, 4404489, 4826470, +5506148, 6375879, -3950833, 10481868, -9525701, -6944962, -5466957, 14722611, -8147553, -2675765, +1264331, -252866, -7668127, 6595459, -8550743, -10062035, -19122806, 1794223, 3441343, -12896176, +-6097780, 6293738, -2677375, 3389266, 978716, 15116137, 990527, 11391327, 4996658, 544924, +9023726, 2121177, 3085934, -17024176, 17531520, 6289980, 13721884, -8317741, 3596498, -9108552, +14235669, 10910291, 17380658, 2843268, -4635344, -12619151, -855772, 2298881, -10861972, 15396921, +2404108, 2449205, 16441672, 3760244, -5018670, -6526740, -608812, 9882720, 11775190, -3784403, +14701673, -17609366, -18596134, -8035347, 4231080, -5575405, 8001524, -1941325, 4259534, 14228153, +-708670, 7100655, -5973226, -5312338, 6107981, -467078, 9844602, -2988760, -148176, -2967286, +-6217502, 1324997, -3695819, -1351304, 4000762, 1475858, -5665062, -5021354, 2887829, 7603166, +7703024, -699006, 6290517, 7024419, -9822053, 4628364, 9091372, 7324530, 3973382, -7164543, +-8904541, -9075803, -9357123, -9079024, 654983, -3100967, -1404454, 1145146, -6883759, 4909685, +4228396, -3368328, 5050345, 1956358, 2314451, -6316823, 5252745, 12986370, -30633318, -1399623, +15949361, -10207527, -3418794, 11747809, -12771085, -25919054, 5129802, 4382478, 3990025, -3401614, +-15348603, 3841312, 4322348, 1126355, 8471286, -27485644, 12559558, -6413997, 6514392, -15684147, +12682502, -19839528, -12692165, 7637526, -5239860, -2355790, -15105937, 11768747, 15502684, -100395, +1670742, -7222525, 23277112, 5724655, 6294812, -4308389, -20273856, -4414153, 11080479, -2105608, +16617765, 64961, -6134824, 3951370, -1253057, 10392210, -20075214, -2498060, -15420543, 16490527, +-6267968, 5468567, -562104, -682900, -18215494, -6456410, 15809775, 4986994, 1316944, -4894652, +360240, 1930588, -23329188, -24143084, 25479894, -11469710, -27916214, 11201812, 13012677, -22490596, +-29405494, -20547660, -19754166, 3368865, 7650411, -2571075, -19001472, -734976, -10242423, -4878009, +-13824963, -892816, 1218160, 1242856, -2891050, 12811351, -7196755, 4953708, -6139656, -437013, +3373697, -3441343, -685584, -7803419, 9926743, -2510945, 3359738, -5765994, -8378408, -1852205, +3765613, 4382478, 1220845, -8134668, 4518843, -1305133, -6620155, 6097780, -9917079, -2100239, +-6222871, 9562208, -4507032, -10963441, 4466766, -4451734, -4890894, -14515379, -996969, 3032784, +11775727, 4734128, -7350300, -3826279, 930934, -2118493, -4045322, 2019708, -825171, -2945811, +-2974265, -1147293, 11783780, -16585553, -9580998, -17351132, -1839857, 3799436, -23800562, 3972845, +-11749957, 32993402, 1510218, -29324962, -6999723, 14496051, 8536784, 7161858, 14654428, 15123117, +-21512418, -5259725, -8451422, 20146080, -7231115, 23490786, -238908, -13303661, -10936060, -20684026, +-24107652, 1577864, 2580202, -3755412, -12517682, -5097053, 1413581, 3933116, 8011725, -11551851, +5748277, -13612362, -16357383, 3292093, -3634079, -4177393, -17045114, -15867220, -7875897, -4815195, +22736484, 2240899, 7529078, 12992276, -561030, 28921772, 11513734, -9487583, 1329829, 14940581, +-5948530, 18884434, -5085778, 2457795, 1153199, -25391846, -26229902, 3949759, 18100066, 481036, +-5822365, -28424630, 1701344, 9827422, 5990406, -9701794, -8096014, -5588826, 3358665, -12237436, +30158186, 17156784, 18446884, 3762928, -21500070, 7851200, 9635222, 30230128, 6837051, 3155190, +11995307, 5244692, -5034239, 346282, 9168145, -791348, 1154273, 3071439, -7761543, -5299453, +8918500, 322659, -7392713, 9562208, -5990943, -2119566, -4611721, -4315906, 8346195, -5388574, +-2536178, 4536023, -9190156, 3885335, -920197, -5140002, 11041824, -3956739, -86973, -14144938, +8589935, -4282083, -3784403, -9102646, -13088376, 2113661, -5324149, 9208947, -373662, 5485210, +3425237, 257698, -5489505, 200253, 8207146, -41876, -14249091, -12852690, 27230630, -8389145, +-10176388, -1370095, -7587597, -18519362, 338766, 12933757, -31958314, -476741, 8223789, 10253698, +-10930692, 7301982, -18314814, 1474784, -4761508, 5784784, -16404628, 10253698, -27899034, 4635881, +723702, 15850577, 14804752, 7458211, -10441602, 11668352, -3428458, 13026636, -14139032, 2302103, +16485695, 13165685, -7784628, 2764885, 387621, -3586298, 7987029, -3040300, -9640591, -10641855, +7618735, -19285476, 12770548, 3064996, -20781736, 19640348, 18708878, 17696876, 6342593, -9077950, +22650046, 2801929, 9726490, -13838921, -12087112, -13262322, 4133369, 5249524, 8114267, -18634790, +1811403, 13841069, -35929548, 1424319, -11800960, 22592602, 14520211, 11382737, -3179350, 15001247, +-14088030, -667867, -9808095, -21531744, -903554, -19822348, -16639240, 9812927, 26552562, -24879134, +-5913096, -4488778, 26658862, -6519224, 11667279, -7571491, -4665945, -952409, 9440338, -5504538, +-2311766, 838056, 6438156, 4799626, 3393561, -3483219, 991601, 2851322, 13218836, -10377715, +11034845, -2328946, 8078834, 84289, 2162516, 2876554, 5094905, -6841346, -1542967, -1270237, +-8564702, -7606387, -7596187, 5355824, 4274566, -1496796, -3395709, -4355097, -5983427, -3654480, +527744, -2602750, -36507, 8020852, -158377, -14479408, 6859600, -8443369, -1267015, 6205691, +-2373506, 24075976, 4817880, 12357695, -34540128, 16193637, -19452980, 26235808, -2880313, 10408853, +19347218, -20878910, 37514928, 27428734, 20173998, -8981313, 5251135, 26218090, -6755984, -8032126, +-6293738, -1071058, -19822884, 5476084, -10658498, -23460186, 22758494, 7894150, 6087043, 3165391, +5100811, 9185324, 23973970, 5366025, -15316927, -1011465, -15884400, 3376918, 2044941, -27268210, +-1388348, 15272904, 878858, -1696512, -8619462, 29554206, 5823439, 12744242, 6238440, -15533823, +-11502459, -8364986, 17988396, 11016591, -3849901, 11316165, -1829119, -19667728, 19145354, 2630131, +21976810, 2729452, 2079838, 716186, -29642254, 4290136, 580357, 3535832, 18104360, -6959995, +28606630, -43498892, -7975218, 32927904, -13422310, 11080479, -15106474, -23023710, -18971944, 13804025, +-13030931, 12890271, -20368882, -4035659, 3197603, -4684199, -8128226, -2268280, -2572149, 9083856, +20082730, 2427194, 11837467, -3649112, -2219424, 15078556, -2348810, -3937411, 3898757, -7107634, +6381248, 13169980, -8801462, -1028108, -3549791, 2649995, 2224793, 6405407, 22713398, -3866008, +7876433, 708670, 5312338, 8623221, 3986804, 1586454, 12559021, 14090714, -4041564, -1636383, +5505611, 3296388, 4739497, -17439714, -1662152, 17162690, -3968550, 3809099, 6423124, -630823, +17476222, 6051072, -35367980, -42494408, -3671123, -19964082, 2765422, 11987254, -16901234, 4865124, +-25855166, 11187853, -14212047, -70972720, -4499515, 43148852, -18577882, -8108899, 43509092, -10291279, +2400350, 51958904, -12401181, 11413876, 4920959, -7700340, 41970420, -33853468, -4310000, -1021665, +-5893232, -6893960, -6867116, -940598, 13693966, -7785702, -22835268, 156766, 492848, 6657200, +8372502, 1410897, 18855444, -823560, 8690329, -5242008, -22670448, 15716359, -2764885, -23469848, +915365, 13373454, 41306848, 20783346, 34724812, 625455, 8557185, 16464220, 3922379, -2131378, +32453310, -1816771, -12641162, 37880536, 6635725, 6606197, 269509, -5468030, 21697102, -117038, +-12634183, -14362371, -2963528, -2932926, 32846300, -22405234, 2859375, 4116189, -5865852, 38477000, +296353, -24805046, 4114579, 12492986, -18168248, -988916, 18441516, 15128485, -9366787, 1345399, +-10584947, 8783208, -2889439, 1100585, -10426570, 9524627, 67646, -1177358, -15138686, 6118718, +5086852, -9951439, 705448, 3447248, -5152887, -3473555, 11573326, 1697586, 6416145, -4402879, +3332358, 20061792, -18413062, -8477729, -6103149, 21701396, 8039642, 11429445, -13285944, -12172474, +-5004174, -1574642, -16103443, -18087718, 21430276, 8580271, -12753369, -11904576, -7322383, -250719, +-12659953, -11115912, 47245, 3205119, 8053064, -2232846, -4130148, 6560026, -1720671, 2057826, +24157044, 19389092, -39687644, -19478750, 30592516, -5669894, -29731374, -319438, 663036, 10741713, +32350230, 28685012, -17646410, 5274757, -3971771, 212064, -258235, -18644454, 28067612, -8361228, +-18335752, 6500970, -13152264, 15887084, 1431835, 22609782, -6941204, -21518324, -19381040, 17125108, +-8223252, 22306450, -5961952, 14439680, -14654965, -11449309, -6950868, 1573032, -18402862, 4496294, +1012002, 278636, 18061412, -230854, 6059662, -12542378, 8973797, -19779936, 21194590, -19027242, +12615393, 6376953, 17825188, -29766270, 1059246, 2494839, -8949101, -21506512, -36374616, -6100464, +-31031138, -11954505, -24822764, -11587285, -45403708, -14124537, 20674362, 26122528, 14269492, 15213311, +-2403034, 16530792, -32328756, -7388955, 5082020, 20936892, 5829881, -44518408, -1697049, -19553912, +-12973486, 52110300, 35067336, -24656870, -9983651, -17299054, 5873905, -45858976, 2892124, 9629317, +-13048111, -13565117, 8426189, 2742337, 522375, -8748312, -7655779, -7477001, -7566659, 14405857, +13234942, -854162, -3590593, -14038637, -16121160, -3347927, -3963181, 5565741, 14116484, -27251568, +-1968706, 13811004, 52613, 17648020, -6003291, -16648367, 9182103, 19083076, 9693741, -11227045, +1518808, 17689896, -22189948, -15728170, 29731912, 1808181, -879395, -2820720, 4833986, 7023882, +9139154, -3510062, -7055558, -8283382, -52170432, 15090904, 8403640, -27776090, 11055783, 10031433, +-19832012, -15577310, 23704462, 2708514, 12703976, -6543920, 15721191, -5170067, -2294050, 12030203, +6086506, 3794604, 498753, -8501888, -14063870, -8895414, 22404160, -8075613, -19146964, 32571958, +20418274, 2361695, 15113990, 4206921, -16806744, -50337552, 20657182, -1910724, -26940182, 22490596, +-2274185, -36760624, -30590904, -16209207, 24097988, 9380745, 24970402, 31071404, 9474698, -25551834, +8126615, 8857833, -32113470, -5448703, 18276696, -10307922, -35006668, -26890254, -42700028, -27542552, +-6078990, 26805964, 39276404, 18624052, -2483028, 26721676, -6624450, -66376036, -52327196, 11267310, +-26310432, -31592706, 45035952, 5690295, -60327112, -46961708, 16069620, 2549600, 10459319, 22232898, +54244364, 30802968, -4424890, 60029148, 19348828, -63471564, 700617, -13719199, 32830730, 9578851, +-20612622, 9920838, -15436112, -9489730, -13408351, 20318954, -3652870, 14792404, 12763569, 16039018, +-3487514, -16565689, -5143224, 10997801, -6878927, 9208947, 6247030, 6570763, -14015552, 1466731, +5891085, 59056, 25636122, -1098438, 11476153, 2274722, -4063039, 13390097, 3439195, -2257005, +15298674, -7468412, -2158221, 9043054, 3959423, -1665911, -5993090, -8815957, 1124208, -10092636, +-7181722, 5061619, 7434589, -7795903, 49400712, 48193828, -15229417, 16869558, -19812684, 12176232, +564251, 7101729, -23592792, 2005750, -20167018, -17775796, 99858, -41248328, 951872, -17477832, +4544613, 12302397, -384936, 14229227, -20403242, 30963492, -15302968, -426276, 21268678, -19963008, +7792145, 15508590, 18865644, 2837900, 6781754, 4793184, -29773250, -16440598, -4840428, 4487167, +4556424, -4327180, 19679540, -6267431, -300111, -3674882, -8562017, 7056095, 3898757, -23428510, +6896644, -18814642, 5150740, -45315664, -2224256, -1058173, -126702, 18610094, -7507066, -16478716, +-7424925, 17099338, -87510, -43803836, 61351996, -5299453, -11776263, 13443785, -2717104, -8968429, +-11547556, -12159589, -13201119, 42168524, -16326781, -24327768, 20822002, 2101313, -33279018, -7778723, +13837848, 11113228, -11010149, 22771380, -4061429, -6168110, 20946556, -15405511, -14270566, 26626650, +-11822971, -4138201, -1515587, 11319923, 5370857, -212064, -1940252, 724239, 4950487, -5392332, +-493921, 5270462, 5438503, 6669011, -16387448, 4274030, 8133058, -15782931, 1245541, 3391951, +-2914135, -6343667, 6300180, 1893544, -5834176, 995359, -650151, -2594160, -20084878, 11429445, +-11933567, 3663607, 3265786, -17988934, -1127429, 970663, -232465, -166967, -6231998, -799938, +4992900, -641024, -39080980, -57623428, -55455008, 122781304, 101855688, 116037672, 262088032, 68655592, +-65648040, 20816096, -210177984, -222760096, -55123756, -139942384, -108257872, 66411468, -34378528, 13975287, +167072080, 83068424, 123875448, 237941728, 158567504, 41640244, 34587372, -69844760, -216312272, -165144176, +-126436856, -255467344, -103314904, 6411313, -45091252, -20077898, 129559296, 34613140, 17584132, 160551776, +20074140, 38659536, 227867872, 167700224, 106213464, 215572992, 107469744, -37389300, -2970507, -67716064, +-334947328, -292135616, -236071808, -366940000, -279588960, -98735392, -132268352, 30363808, 255468416, 228307040, +315713920, 398616992, 296617408, 231549744, 225137360, 124840744, -41691784, -79621176, -182415312, -260505872, +-255969856, -221628896, -254082752, -259896528, -208974848, -116569168, -84466976, 32179506, 200041328, 288338880, +411251712, 462615744, 276290944, 67536752, -39064876, -277811360, -264469056, -201281488, -156429696, -57802744, +29885994, 22371948, 28801514, 36064304, 17029008, 42369316, 59176060, 44150652, 71372152, 40873056, +-17703318, -21584896, -62223876, -113985208, -31006980, -35326108, -40931040, 36417564, 31215286, -38414188, +-49750216, -92739616, -151871648, -63468344, 87251184, 148390576, 287313440, 346670432, 235777600, 146572736, +39529268, -129344016, -189536912, -214430000, -250881920, -235670224, -180812752, -146375168, -121126664, -73237248, +-18156438, 63735704, 219578048, 306405120, 272004032, 195751728, 121012848, 26828514, -46658376, -71418864, +-90714544, -64438468, -16832514, -2421288, -18158584, -30495342, -49466748, -79549776, -103589240, -99981472, +-100369088, -58452356, 10364830, 38043208, 69184408, 90896544, 91934848, 71729712, 48964776, 28124520, +15826418, 22891102, 31132070, 31839666, 28161026, 16952236, -6439230, -37280852, -62181464, -76198088, +-77845744, -62555124, -49427556, -39984536, -20632486, 5682779, 22249004, 28858422, 33149094, 35403416, +42133628, 46341088, 41539848, 23870892, 10438918, 3092913, -6102612, -8810589, -5403069, -8459475, +-4842576, 1653026, -2673617, -11917461, -14500883, -23751170, -33704220, -32192928, -28791314, -21981642, +-3300146, 12139725, 19881404, 28233504, 32287416, 23257248, 17863842, 9987410, 2796561, 2595234, +9167608, 8540542, 7665443, 4325032, -5967320, -13225815, -20402168, -27709518, -27945742, -21998822, +-11977053, -1756642, 9164386, 16327318, 19455664, 15980500, 10468983, 4713190, 1666447, 667331, +505196, -666794, -1643362, -2986076, -3389266, -3277597, -2282775, -1489280, -335544, 37044, +511638, 29528, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 8932458, --1172526, 709207, 7030862, -908922, -324807, -2050847, 7669738, 445603, 3730179, 2262374, -2258616, -3167539, 1592359, -4903779, -531502, 3795677, 772020, 2221035, 3579318, -6054830, --4224637, 1436130, -299574, 4486630, 2735357, -237297, -2491618, -1571958, -3082713, -494995, --410706, -466541, 854699, 1170379, -2682744, 4497368, -1033477, -705985, 1538672, -5740761, --1323387, 2479807, 878321, 5658620, -21475, -417149, 1105954, 383326, 2357400, 3917547, -4984847, -290447, -514322, 87510, -2867428, -3641596, 2009508, 3248606, -2281702, -2190433, --1479079, 4144107, 2441689, -572304, 646393, -4889821, -1408212, 2539936, 2107218, 3613678, --5255430, 1192390, 1988033, -1096290, 3707094, -239444, 3231426, 1537061, 1039382, 4098473, -2034741, 1034013, 33286, 483184, -977642, 344134, 569620, -323196, -1456531, 719944, -708670, -1078037, -150861, -727460, 761283, 1178969, 47782, -150324, -66572, -1093069, -536334, -386010, 907849, 428960, 279173, 194884, -488553, 296353, 134218, 466541, --868657, -413391, -192200, 119185, -1183264, 11647951, 3206193, -2667712, 5936719, -2886218, -6178848, -2055142, -2819109, 3143379, 5777268, -177704, -2859375, 1542967, 1211718, -237297, --8229694, 1927904, 2408403, 660351, 5137318, 6918656, 3711389, 6812892, 4629975, 4151086, --1109712, 4610111, 2218888, -3495567, 1307281, 2129767, -4503810, -5716602, -880468, 2253247, -87510, -2063195, -2767033, -2692408, -1337882, 3084324, 6179921, 5236639, 1975148, 4022237, --6493991, 409633, -1658394, 63351, -7453379, 2763275, -718333, -1757179, -292058, -2022930, --3685619, -2588792, 2611340, 625455, 2002529, -2716567, 5081483, 1306744, -5888937, 2432025, -745177, 1636383, 3223373, 978716, 5917391, -1888175, 646929, -6912750, 1312649, 666257, -195958, 163746, -1303523, 4917201, -1505923, -2285996, 3728569, -3864934, -1888175, -1596654, --721018, -1802813, 1244467, 329102, 648540, -51003, -172872, 63351, -708133, 423054, -644782, -250719, -304943, -34360, -1281511, -2087891, 766652, 253940, -1649804, -220117, --185220, -360777, -1998234, 509491, -12885, -66035, 133144, 345745, 212601, -758599, --32749, -1377611, -160524, 572304, -2352032, -2378875, -762357, 2155537, -3982509, 1155346, --7871065, 1467268, 1493575, -928250, 5634997, 345745, -620086, 494458, 2987687, -4840965, -696322, 1466731, 3090766, -6882148, -3472481, -2604898, 2526515, 1017370, -2149094, -6955163, -1690607, -6918656, -415538, 2727304, -1271310, 2073932, -1185411, 4639102, 6907918, 3631932, --3563212, 655519, 5237176, 3215857, -3225521, 2701535, 817654, -5396627, 1900523, 7383049, -3477313, 2465848, 8259222, 725313, -3122978, -6329171, -267362, -3559454, -4242891, -2029372, -4545149, -4322348, 1511292, -2586107, -2396592, 5272073, -684510, 861141, 4223564, 5727876, --2542084, -5288716, 6717866, 5133023, 3294240, 296353, -4024384, 628139, 5310190, -5392869, -1646046, -3519726, -108448, 3266323, -3071975, -188979, -5919539, -1580011, -513249, 884226, --307627, -2259153, -259846, 1117228, -1742683, -469762, 819802, 661962, 515933, 471910, --83752, -449361, -2331094, 1240172, -121333, 1278290, -898722, -1556926, 551903, 1211181, --800475, 1067836, -179315, -89121, -91805, -259846, 1306207, -775778, 510564, -783295, --15601469, -5712307, -2401961, 8535711, -3239479, -1284732, -5043366, -4269735, -728534, -11254962, -6307697, 2081985, -319438, -4159676, 6209986, -1750736, 3154117, -2517925, 1992328, 3956739, --4947266, 519691, 5459977, 3083250, 2199023, 5836324, 5223217, -3280281, -4179003, -5216775, --86436, -6857452, 1636383, -9057012, -1733019, 6664716, 3506841, -2299955, -704912, -6815040, -3093987, -2916283, 6004365, -3462818, -6162741, -1270237, -2539936, -5068062, 1961726, -1165010, --3223373, -3289408, -10916733, 1487132, -3274376, -8094940, -2152852, 4983773, 2558727, -4189741, -3456375, 4439386, 4292820, 1589138, -5581310, -936303, -1239635, 3860102, -3922916, -1513976, -2035815, 2062121, -6109054, -7283191, -13066901, -2242510, -7589207, 2491081, -293668, -1819992, -3842385, -819265, -1749125, 1668058, 2620467, 2509872, 1958505, 4540318, -1941862, -1609002, --1228898, 659814, 228707, -1043140, 1253594, 1796370, -401579, 415001, -797253, -1043140, --193274, -681289, 187905, 386547, 53150, -1156420, 177167, -783295, -296890, 642098, -1465658, -662499, 1755568, 2129230, 336618, -630823, -1859184, -386547, 1249836, 820876, --809064, -13579076, -5430986, -2433099, -4020626, 4620311, 6041945, 5694590, -11335492, -8465381, -3263638, 13814225, 8170102, -5369, 1969779, 3936338, -4961224, 3278134, -4598836, 3325379, -4911832, 759136, 3942243, 1230508, -270583, 2045478, 1217623, -3701188, -4684199, 6483253, -2633889, -4729833, 4647692, -2578591, -471910, 11144366, -5310727, 6310918, 12463995, 5086852, --702764, 483721, -4483946, 5828271, -5939940, -3248606, -9990094, 1888712, 7721815, -188979, --7068443, -2517925, -10024991, -5091147, -1852205, -14268955, -7756174, -1405528, 1524713, -6244346, -3178813, -1650341, -4921496, 5349382, 15792058, 1473711, 8056822, 5463199, 4743255, -4988605, -2114735, -8504572, 923418, 2454574, 1923072, -3299072, 92342, -8634495, -2994666, -3024731, --598074, 4207994, 4518306, -193810, 1770063, 2456721, -1218697, -935766, -777389, 817654, -119722, 614180, 492311, 1389959, -711354, -37044, -2051921, -245887, -300648, 1491427, -869194, -899259, -1229434, -1196685, -1152662, -384400, -1420560, 529892, 2685965, -2093797, --248571, 923955, 1539209, 21209622, 13402982, -7292318, 2720862, 6827388, -2817499, 3908957, --1327145, 6369437, 3190087, 2040110, 5776194, 3269007, 2857764, -1799054, -14192719, 6797323, --2417530, -3227668, 11103027, 6875169, 3836480, 5123896, 3802120, 2828236, -2172717, 1648194, -450972, -3629784, 2935073, 4806606, -8006356, 1537061, -5181878, 3834332, 4431870, -12511240, --206158, -14889578, 255551, 1865626, 1263257, 4070555, 10160282, -1237488, -5267241, -2575907, --2828236, -3911105, 2923799, 3155727, 982474, -1647120, -1828046, 9881109, -3277597, -1969779, --5392869, 8777839, -1334124, 7377680, -3471944, 7884486, -7589744, -15947750, -4744865, 1005022, -3226594, 5398774, -5374078, -3995930, 2183991, 1445257, -2492692, -4155381, 9970767, -3897683, -9484898, 2513093, 6701223, 2646237, 4881231, 4123706, -1720134, -639950, 1915019, -277025, -5171141, 138513, -1719598, 477278, -5806796, -1145146, -1348620, 407485, -1945620, -738734, --659814, -133681, -675921, -3038689, -2476586, 744103, 202937, -3411815, -213675, 507880, -494458, 1398012, 583579, 3364570, 140660, -1130113, -146029, -452582, -1567663, -1833414, --737661, 508954, 9931575, -3797288, -6589017, -308701, 1055488, -9432285, -7364259, -2354716, -2572686, -1410897, 12249247, 7340099, 332323, 11682311, 4224101, 3415036, -10008884, 9393093, --1749662, -2364380, -8440148, -3822521, 7509751, 7401840, -2102923, 4907537, -10151692, -1433445, -6833830, 5134634, -3789772, -7218767, -4043175, -4462471, -5557688, -4635881, 1119913, -7586523, --723702, 10478646, -5037997, 1209033, -388158, -2413235, 4095251, -1671816, 6857452, 8590, -9668508, -2479807, -6077916, 3495030, -4800163, -4764193, -4800163, -13712757, 1601486, 5680094, -8176007, 5889474, 10741713, -1097364, -4116726, 6206228, -7614977, 1777580, 1189706, -1140851, -6965363, 6493454, -1658931, -8278550, 1668595, -4272956, -7876970, -7304129, 4044249, 7091528, -4453344, -15315317, 3469260, 1641751, -747324, 7239168, 3919158, 5926518, 2255395, -562641, -7780334, 1056025, 3546032, 2833605, 633508, -3470871, 589484, -1928440, -4246649, 828929, -1319629, 2043331, -486942, 569083, 503585, 395674, 1545651, 1009317, 1075889, -140660, --2667712, 1928977, -1060857, -1188632, -984084, -1896228, 3550864, 4003447, 3410741, 1387811, -406411, 605590, -775778, 2745558, -12242804, -6895570, 1102733, -6724308, -18039400, 13711146, --469225, -717796, 1542430, 1241782, -11990475, 8436926, -12493523, 1270774, 5463736, -1448478, -1881733, 2160369, -13428752, -4290673, -6077379, -1053878, 2551211, -4183298, -2933463, -364535, --947040, 1388885, 5381057, 3144990, 11763915, -4155381, 16209743, -972810, 280784, -10533407, --1752347, 8132521, -1743220, -16295106, 6488085, 7830263, -5062156, 4224637, -6313602, 11586211, -6154688, -151398, -832150, -7152195, -4832375, -7843147, 7348152, 7580081, 3099356, 1016834, -3223910, -6290517, -17152488, -6043556, 5802501, 2782065, -12759811, 490163, 1338956, 1897302, --6196564, 4507568, 8807904, 4794794, 40802, 3796214, 6017786, -3308736, 9032316, 312996, --382252, -8922795, -11747272, 7627325, -3674345, 3866008, 3638911, -468688, -2619393, -2382633, --2071785, 1342714, -2985002, 3922379, 747324, -891206, 836982, -1189706, 31675, -4598300, -1072668, 514859, -941135, -2501819, 775778, -2199560, -238371, 890132, -591632, -1398012, --133681, -1404454, 5634460, 4493073, 1529545, -543850, -589484, -1535988, -62814, -534723, -3572339, -1116692, -582505, 3614215, 730144, 1574642, 2474438, -1686848, -1057099, 2725157, -1492501, -629750, -491774, 3854196, -18882824, 10179072, -2623151, 3777961, -5628018, -2997887, -7866233, -9117142, 8852464, -5496485, -10740103, 4884989, -5813775, 22822382, 3326452, -7922067, --11127187, -1947768, -13786308, -6269579, -14844481, -833761, 9822053, -6973417, 6034966, 10011032, --9311489, 63888, -10858214, 6086506, 2064806, -367220, 6294812, -6702834, -9747428, -8149164, -492311, 1851131, 8062191, -11684995, 8266202, 1656784, -17365626, -9491878, -14031121, -5710696, -5231270, -4684736, -4731980, -26548804, -628676, -5814849, -2508798, -17024176, -6009733, -2236604, -1243393, 13914083, 12588549, 10733660, 6088116, 13412109, -14500883, 11255499, 1482301, 5257040, -3697967, -10285910, 15939697, 9947681, 6236293, -7026030, -9540196, -6791417, 9216463, 1086090, --44023, 5053566, 2345589, 5312875, -4751845, 14093935, 7308424, -1493575, -2386391, 3174518, -2752000, 1735167, -933619, -842350, 1216550, -205085, -340376, -5816997, 250182, -3353833, -116501, 1873680, 550293, -335544, -67646, 1174137, 919123, -5532455, -1570884, 1984275, --1708323, -2150168, -234076, 763967, 812286, 1096290, -910533, -1131187, 858993, -2403034, --4223564, -1022202, -1127966, -1326071, 655519, -302258, 3568581, 1742683, -1588064, 1638530, -1107565, 951335, -1639067, -2870649, -164819, 459562, 3029026, -1060320, -826244, 7132330, -13219909, 14334453, 5860483, 10033044, 8120710, 4861366, -2618856, 1087164, -3905736, 350040, --1342714, -8640400, 11034845, 17511118, 6982543, -4763656, 7853348, 7477001, -290984, 4655208, --8235600, -15877420, -10565620, -7210177, 4620848, -1894081, -8291435, 6247030, -2835752, -7399692, --70867, 12926241, 6519224, 9589588, 3369939, 7072738, 7835631, -1742146, 7180112, -2732673, --8145406, 3501472, -9436043, 3587908, 3802120, -13869523, -9011915, 5769215, 14467060, -7418483, -10095321, 14098767, -11561515, 545998, 12840878, 1452773, -4632659, -1006633, -6518687, -11399380, -186294, -3406983, -5971079, 7961259, 445066, -13052942, 16879758, -6875169, 13701483, -16068010, --10988137, 7969849, -9875204, 5567352, -6621766, -4790499, -9269613, -5630702, -7534447, -18975702, -3201361, 11724724, -5315022, -785979, 8137353, 8692477, 6179384, -1126892, -636192, -4865124, --1486596, -2096481, -2522757, 2120640, -461709, -1741609, 2855080, 2594160, -1132261, -184684, --3354370, 1560147, -2943126, -5400385, -324807, 5166309, 102005, -2793339, -700080, 8493298, -4278861, 355409, -2469606, -2991982, -2173790, 580357, 643171, -2499134, -897111, 167504, -1061394, 3428458, 872415, 5370857, 3253438, 3868692, 1521492, 1773822, 2123861, -642098, -142271, -11761768, 7498476, -4958540, -13073344, 18779208, 9423695, -12867722, 9157407, 8608188, -2337536, 15865609, -32198832, 2532420, 13101798, 4751308, 1100585, 14225469, 466541, 7887708, --18647674, -2285996, 4980552, 455267, -9368934, 3844533, 7400766, 3835406, 3469797, 10118943, -8166881, 13375602, 10271951, -3835406, -4291746, 10402411, -6323803, 7364259, -11588359, -6038724, --14806900, -6495065, 8078297, 3067144, -3459059, 12353400, -14440217, -19204946, -31515396, 9994926, -10815801, 8745090, 6601902, -7194607, 4952634, -4079682, 11834782, 31970126, -4994510, -6467147, --13861470, -4156992, 11838004, -7875897, 6762963, 11931956, 1860795, -34360, -9271761, -2442763, -4321811, -21767968, -20367272, 2268280, 2698850, -7580618, 11101417, 8746701, 16001974, 26216480, -10302016, -5814849, -3217468, 5709086, -196495, -14115410, 6763500, 6237903, 5068599, 1919850, -6627135, -54761, 3646427, 3294240, 2010582, -3047279, 216359, -125091, -500364, 5526549, -1526324, 120259, 2727304, -5494337, 1578937, 1220308, -768799, 5807333, 1064078, -1446867, --1001801, -3277060, 9910637, 853625, 1663226, 4369593, -1512365, -1298691, 5562520, -5888937, -5532992, -4257387, 4580046, -127238, -433792, -890132, 1843615, -747861, 4737349, -3742527, --1651415, 1648731, -912681, -1166621, -3035468, -4446365, 3326452, 47582332, 26924614, 17141752, --4380330, -4859219, -579284, -4064113, -4883915, -7391639, -8882529, -15279346, 688805, -1087701, -3743601, 6651294, 12700755, 19182934, -2550674, -24974162, -9746355, 21420612, -3325915, 8022999, --2761127, -367757, 14289893, 4936528, 10854456, 6369974, -433255, -651224, -187368, 7201050, -9222905, -3580929, -14049912, 18409840, 13211319, 9370008, 3463891, 4770635, -7464653, -13943074, -19210852, 10707890, 4954782, -8913131, -9897215, -13911399, -8551817, -2477659, -8687645, 4814659, --17778480, 2456721, 13138305, -8544301, 4640176, 791348, 1932735, -20308216, 7203197, -8722005, -14821395, -32612760, 5602785, -8524973, -11006391, 2698313, -6639483, 6706592, 6363531, -21246666, -235149, 14852534, 2225330, 4355634, 9346386, 3813394, 15499463, 6322729, 3280818, 1039382, --2245194, 9982578, -19716584, -373662, -1149978, -1808181, 777389, -564788, -149787, -1713692, --2901251, -3789772, 6135898, 5140539, -2697776, -437013, -9443022, 930397, -590558, -9315784, --44560, -13819057, -10504953, 4662724, 1758252, 7281580, -8215736, 3536906, 7153268, 1585917, --309775, 1863479, 3833795, 331786, -2062121, 7586523, 52613, 2474975, -4450660, -3329674, -3150359, 4554276, 801548, -29248190, -15021111, 2158221, -25696790, 5891085, 18658412, -8981313, -22680648, 26597122, 3389266, 13286481, 16411070, 7353521, -15735686, 10268193, 12524125, -619549, -3169686, 8828842, 7815767, 18770618, 3208878, -7240241, 11992086, 4294968, -1858647, 270046, -8041253, -10976326, -4957466, -4646618, 6709813, 3473555, -15472083, 4568235, 12934294, 342524, -15587510, -14741402, -27836756, 2222646, 12497818, 18887118, 17526688, 9040906, 8319352, 6658273, --18913426, -5539434, -787590, 14191646, 22445500, -7758859, 4837744, -8261907, 5311801, 3566970, -13664975, 21153788, -8152385, -9273371, -1839320, 11589432, 14892799, 20848844, 515933, -22537840, --21251498, -3471944, 2753611, 64961, -9740986, 217970, -25624312, -16544214, -15140833, -17241610, -7351911, 2643016, 20651814, 16498580, 6226092, -9874667, -9850507, -9179419, -8329552, -14323716, -6760279, 4483409, 2654827, 9627706, 10713259, 57982, 9140764, 1874216, 9760850, -3397319, -8096550, -2589865, -729071, 2399276, -2969970, 13533442, 6102075, 8033737, 3638374, 9635222, -2162516, 4618164, 13829258, 11984032, 6424734, -775778, -5297842, -4549981, -9775346, -5496485, --6415608, -3837553, -5916318, -7182259, -4146791, 4173635, 9218610, 2552284, -2155537, 332860, --1360431, 5751498, 6811282, 5643050, -594853, 2536178, -10414759, 12358768, -27339078, 2462627, --5461051, 14973330, -8023536, -1259499, 4639102, 11340324, -15260019, -25704842, -4459787, -10079215, -724239, -11605539, 6832219, 6731825, 678068, -13872207, 8660802, 856846, 23163832, -3708168, -12688407, -10711648, 23924042, 6888591, 14933064, 10016937, 16291885, 23941222, -5830955, 9286793, --16748762, 17663590, 17183628, -402116, 5590437, 17298518, -11066520, -10701448, -1756105, 34830576, -5674189, -9742060, 17308718, 2262374, 13278428, 19071266, 5574868, -1291175, 1810329, 2975876, -12600897, -4403952, 13513041, -9316858, 13192529, -7292855, 29753922, -4320737, 25589416, -23192286, --25449292, 35442608, -29653528, -15880105, 1216013, -9557913, -18399104, 16193100, -2139968, -22834730, --10785200, -11728482, -33570000, -12458090, 4165582, 7550016, -25894358, -6619619, 15746961, -3140695, -9055402, 15512348, -11057930, -2529199, 2552284, 10127533, 7297150, 7641821, -2486249, -1462973, -6294812, -543850, -4143033, 3445638, 7256347, 1374390, 5053566, -146029, -4628901, -9664, -6698002, 2520609, -3365644, -8381629, -5032628, 9833864, -4480188, -13207024, 3185255, -7577396, --14344117, 16643, 5463199, 515933, -3679713, -1058173, 4005594, -3005940, 246961, 5182952, --223338, -2396592, -3032784, 9336185, 17965312, 989453, -6230387, -5216775, -2838974, -8434779, --1731409, -3527242, 3536369, -22944790, -15306727, 4464619, -30002494, -17502528, -20847772, -21212306, -25851946, -638340, 891206, 7698729, -7537131, -32988570, -24677808, -24171540, -49287972, 3561065, -5596880, 21298206, 12449500, 7380365, 10628433, 7371238, 2305324, -15557982, -22859964, -13167296, -17767206, -2248416, -13371844, -5399848, 17403208, -21047488, -13581223, -21619792, -10748693, -1848983, --20739860, 7713762, -17222282, 18632106, 13068512, -2895345, 12891881, -12681428, -26067768, 11387032, -15202574, -13458817, -29913910, 22533546, -1945083, 16319802, 13707925, -42788076, -30398704, 284005, --6942278, 27853400, -15981036, -18475876, -4964446, 10270341, 1569274, -2581275, -9707163, 36984500, --18153754, -30131880, -40740988, 29203630, -6984691, -33550674, 15621333, 15902116, 9427990, 33706368, -36063768, 37026376, 15841987, -8418136, -3412889, -5757941, 12287365, -23721642, 15229417, 2893197, -2967823, 11542188, 11164767, -9801652, 14301167, -11253351, 4764730, -15972447, -9111236, -6219113, --8290361, -3318936, -8929774, -2241436, 6101001, 16711718, 19448148, 784905, 15249818, -9169755, -2183991, 8996346, 1180042, -16986596, 2043331, 4119948, -4737886, -12630425, -8107825, -7784628, -20161650, 12549358, 6491306, 9483288, 16997870, -2725157, -20375862, -12802761, -11742441, -14624364, --18944028, 3291019, -15903190, -27742268, -599148, -4926865, -6595459, -5277441, 4193499, -27051852, --10775536, 12608413, 20512226, 41771240, 6848326, 21850646, 10589779, 10550050, -9528922, -3053185, --8123931, -22912576, -26921928, -37798396, -13760001, -34051576, -13387413, -17824652, -6658273, 18300856, -4498978, 12454868, 21521544, 33823, 14540075, 4233227, 741956, -490163, -2840584, -28724204, -10459319, -3581466, -32460826, -20092930, 9483288, -20823612, -7991861, 7591892, 23567560, 28603946, -9950902, -5936182, 3938485, 19152870, 10247255, 4046933, -563178, -56612500, -11417634, 12539694, -14375256, 5747740, -2163053, -19079856, 13244605, -17019344, -12834973, -3338800, 3481071, -9458055, --30238718, 16179679, -3868155, 37638408, 14315126, 12871480, 14464376, 27673012, 62048320, 962610, -1063541, -2592013, -18471580, 11040213, -12814035, 45129368, -4009352, -16170015, -14554034, 19080392, --24467892, -16513076, -3216394, 38604776, 1297617, 18426484, 28516436, 5771899, 23087596, 17511656, --3183645, 16057809, 17401596, 591632, -11876658, -12794171, 3593814, 4419522, 14601815, 9385577, --617402, -2172180, 2602750, 5948530, -10812043, -2249489, -2643016, -1410360, -16963510, 10707353, --12307766, 4322348, -2484639, -7356205, 2068027, 20688858, 18098456, 50466, -1199907, -13140452, --5357972, -13060459, -1933272, -15201500, -21674016, 6379637, 15054934, 1051193, 879395, -7479149, --11350525, 31688806, -4294968, 5756867, -34678640, -11731703, 40614284, -27066348, -7399692, -23437100, --69262256, -9828496, 21223044, 17540110, 3343095, 5050345, -3766686, 38821136, -41842108, -21475, --12064563, -27939300, -23699092, -3506304, 7916162, 6986301, 9330280, 25072946, 16227997, -17723182, --18075906, 49854908, 40691056, -3255585, 4741644, -5448166, 13247290, -177704, 29036126, 10599442, -15424301, 4369056, 2226941, -51511152, 21339546, -2196876, -29708826, -15094663, 2919504, -7977902, --29566018, 28467580, -5041755, -21010444, -4421132, 3129958, 25189984, 28261958, 21449066, 8315057, -25123412, 26897770, -20198694, -22022444, -14120779, -3569118, 26035018, 34873524, 5956046, 12598213, -33385854, 20112258, -31328566, 23190676, 8410620, -6846715, 1227824, 64297808, -42545948, 32794222, -37486476, -37685116, -2213519, -24474334, -7918846, -54159536, 15598247, 24036248, -32646046, 19754702, --28247464, -20349556, 24699820, -15326591, -2277943, -9192841, 1199907, -13516262, 4181688, 6315213, --10285373, -14486388, -1138166, -15738908, 20696374, 3773129, -19433654, 4304631, -3264175, -10506564, --10201084, 6736656, 13197361, 16611860, 6793565, -14847165, 38121056, -6997039, 3799436, -2417530, --20171314, 7759396, 11009612, -10180146, 16265041, 4205310, 12153147, -2779381, -19509888, 6643778, -29405494, -19008988, -27253714, -44530220, 8914741, -8654896, -14027900, -18108656, 9941776, -11056320, --5035313, 29023778, -9028021, -1806571, -22821308, 1699196, 14682346, -32249836, -20189030, -19366544, --9386114, 11491185, -43206836, -24242406, -62382788, 10679436, -591095, -16042777, -6921877, -9405442, -13374528, 19857244, -22145926, 643708, -7716446, -7700877, -38979512, 8383776, 29956860, 7721278, -22663468, 28232968, 25484188, -34398928, -10453414, -10532870, -16012175, 28563144, -29403346, -17162152, -1028108, 41566692, 9433359, -14881525, 42089604, -23888072, -22246856, 49998252, 48077328, 4418985, -12237436, -13890998, -45577656, -14243722, 45886892, -22474490, 41586556, -15232638, -65504692, -17491792, --30641908, 34699576, 303332, 7603703, 31286152, -5219996, 25792890, -33903936, -39712880, 30317100, --7975218, -67115840, 41303088, -21519934, 11260867, 13340705, -23408646, 44161928, -30317638, 15880105, --476741, 11600170, 44941464, -11637214, -14214194, 1539209, -9371082, -12409771, -10169409, 4922033, -10095858, 2317135, -6460168, 5513665, -21422760, 19134080, 13481902, 10713259, 4275103, -2147, --10028749, -11017128, -10433549, 8959839, 17541720, -17318382, 15209553, 35362612, 11895449, -30495878, -2923799, 10985989, -11304891, -20182052, 18871550, -17113834, -403190, -1611687, -18178450, -23511188, --257161, 13186623, -7773891, 30407294, -10256382, -20320028, 14097156, -9087614, 1040456, 11794517, -23278722, 1546188, -41477572, 24374476, 28457380, -34591128, 18947786, -383326, -12322261, -14918569, --49515604, -22099754, 17547088, 2934537, 45647448, -36786932, -20591684, 8350490, -4945655, 28989956, --40511204, -169114, 4241280, -34520800, 34375308, 18591302, 10534481, -16308528, 23552526, -28030568, -15424838, 11725798, 7279433, -2204392, -15487652, 6214818, 31242128, -16640851, -5939940, 5867999, --24403468, 24685862, 1002338, 6289443, -33458332, 17816598, 4452808, 5888937, -78553880, 10522670, --22319334, 36463200, 30423938, 32012002, 16513076, -64174328, -11205033, 13422847, 1376537, 3964792, -45018772, -6994354, -27090506, -32789928, 1316944, -36442260, -31723166, -28398860, 13529684, -53036940, -37473588, 71392024, -18808736, -8905078, -55977384, -12510166, 21430814, 12925704, -18629420, -4131759, --67732704, -24094230, 67977520, 28648506, -21118892, 19597936, -38431368, -28678570, 7476465, 1220845, -4573604, -26318486, -9058086, -5742372, -49929, -38022808, 8094940, -5126581, -11862700, 4745939, -15560667, -20886426, -10358924, -3504693, 7392176, -16108275, -4271882, -2997350, -15016279, -46171, --27772870, 35944580, 11634530, -9756018, -3717831, -10912975, -1559610, 22975390, 6892886, -4551592, -12074764, -7794829, -34581468, 1332514, 1504849, 7031935, 15229417, -9293772, -6581501, 14795625, -18089328, 7510824, -16724066, -37165424, -51835424, 14500346, -23047332, -14730664, 15010374, -11988864, --18591840, 14840186, -24266566, -886374, -27581206, 39594228, 128849, -27958626, -8979166, 1224066, --3421478, 9642738, -19608136, -12635794, 3730179, 8425652, 4032974, 4387309, 14265734, -16603807, --7129646, -38916700, 14110578, 4238059, -12592307, 29050622, 15062987, -11161546, 43116640, 10191421, --27957552, 21219286, 3063386, 13977971, 28302224, -2199560, -7569343, 4974646, 23247584, 13878650, -42413, -1974611, 24914032, -1815697, -29982092, -4673998, 4975183, 23726474, -10796474, 40537512, -43865036, -27735826, 22692996, 50219980, -13892072, 76042936, 42273216, -18558016, -17646410, -28126668, --32674500, -17862232, 9672266, -5275294, -6134824, -634581, -5310190, -52510272, -20875152, -51841864, -11842299, 47150152, -17890150, -2483565, -25829934, 13028783, 2795487, 9368934, 12694850, 39613556, --2297271, 18188650, 17893908, -29139742, 909996, 284542, 6093485, 13252658, -2011655, -6629819, -11928198, -1466195, -7117835, 1899986, -12539694, -2589329, 8675834, 2030983, -5558225, -27880244, -1142998, -12666932, -1362042, -10624138, 23304492, -7585449, 11223823, 14533096, -11527692, 17467096, -10718091, 497679, -6352794, -10463077, 2405182, -910533, -6420439, -776852, 11491722, -8750996, -4866198, -2972654, 8232916, -21994528, 66778688, 17631914, -23911156, 2666101, -31402116, -4121558, -11013370, -13045963, -16690243, -18615462, -7055021, 7150584, -4110821, -5988795, 8481487, 4882841, -11496554, -11882027, -7456600, 8546985, -3082713, 1514513, -17359720, 11759084, -20322174, 9735080, -6700686, -4395362, -919123, 726386, -11803107, 1959579, 2391760, -9422085, 16974248, -9161165, -4096325, 70867, 572841, 8563091, -8401493, -13056701, -3936875, 19605988, -14591615, 9589051, --26737782, -15917686, 5043902, -5808944, -452045, -1799054, -16110959, 17024176, 13596256, 1205812, --11806328, -621160, -7193534, 3471407, -8970039, -324807, -8612483, 6383932, -2405182, 1631014, -21572546, -18327700, -1598802, 3198140, 1283122, -4015258, 477278, -8724152, 458488, -7322383, -4410395, 8475044, -13129715, -10927471, 6230924, 754304, -3142842, -10420128, 4432406, 1321239, --482110, -2423972, 52076, -2450279, 7174743, -4879083, -1378148, 3280281, -2465848, -469762, -5737540, -3953518, -2589865, -1571421, 1183800, 5884642, -2085744, -6815040, 355945, -4423817, -15503758, -6379100, 1860795, 3455301, -4005594, 12306692, -1837172, -10864120, 3802657, -6253473, -7594576, 3652870, -1764695, -770410, -2918430, -3049427, 7495792, -5120138, -2347200, -938450, --6673306, 8371965, -32304596, -47041168, 32691680, 151848576, 66105988, 69747048, -741419, -140010560, --101835824, -52546240, -110857400, 53950696, 65667904, 34561064, 142689008, 64560336, -6498823, 47680044, --92813704, -117711632, -67628552, -82389824, -18107046, 64149096, 65147136, 27655832, 109642464, 54808076, --7933342, 53119620, -48947596, -83262240, -48168060, -62583580, -98865312, 36531920, -1126355, -35172560, -105900472, 64144264, 35721780, 108895672, 26029112, -54998668, 53286584, -78509320, -89974200, -18178450, --94619200, -95583960, 37650220, -15666430, 22939958, 120918360, 82505248, 86261200, 81024024, 10018548, --45732276, -52470540, -88294864, -115444960, -60819960, -32796908, -24109798, 44282188, 68644848, 64775624, -91349656, 82804824, -12934294, -14492830, -15042049, -84778360, -25633976, -41703060, -63255740, 14209362, -25702158, 4279935, 58628452, 26322780, 374199, 36899136, -28492814, -31132070, 703301, -20214800, --6543383, 15431281, -3323768, 17119740, 22646826, -12503724, 17783848, 7350837, -27704150, 2658048, --13289166, -52288544, -887985, -13265543, -22468048, 50538880, 14995341, 18995566, 66194036, 26320634, -19333258, 14615237, -33026688, -48110612, -44724032, -74898864, -61368104, -27285390, 2449742, 33668784, -76915352, 81548008, 74795248, 66334160, 40880036, -16388521, -47108812, -93791888, -118867512, -91750168, --55139864, -19489488, 49873696, 92463664, 106277888, 108948824, 52465708, -13139916, -36048196, -44297756, --57130580, -41292352, -42426224, -34329136, -5100811, 10273025, 16789564, 28822452, 30978526, 28351616, -25851946, 14023605, 3661997, -4414153, -14708116, -22870700, -22622666, -19403588, -13933948, -8004746, -2718178, 8898098, 12319577, 12787191, 12302934, 7923141, 4788889, -47245, -448824, -2206003, --3201898, -4710506, -2464774, -3774203, -4188130, -4038880, -2665027, -5740761, -2375117, 66035, -2941516, 6598144, 9072045, 6065031, 8182987, 5013301, 1560147, -2833605, -6347425, -10062572, --8756901, -8764418, -4068408, -513785, 4300873, 5161477, 7738994, 6389838, 5264020, 1903207, -897111, -2472291, -2388539, -3947612, -3363496, -3054259, -768799, -1487669, 806380, -236760, -1251446, 922881, 920197, -337692, 2000381, 937914, 2284923, 625992, 963146, 33286, -119722, -2251100, -1434519, -2835215, -1533840, -1693828, 87510, -198105, 1779190, 962073, -2161442, 957241, 1504312, -88047, 602906, -891206, -107911, -1233729, -44023, -1045288, -266288, -641024, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-1172526, 709207, 7030862, -908922, -324807, -2050847, 7669738, 445603, 3730179, 2262374, +2258616, -3167539, 1592359, -4903779, -531502, 3795677, 772020, 2221035, 3579318, -6054830, +-4224637, 1436130, -299574, 4486630, 2735357, -237297, -2491618, -1571958, -3082713, -494995, +-410706, -466541, 854699, 1170379, -2682744, 4497368, -1033477, -705985, 1538672, -5740761, +-1323387, 2479807, 878321, 5658620, -21475, -417149, 1105954, 383326, 2357400, 3917547, +4984847, -290447, -514322, 87510, -2867428, -3641596, 2009508, 3248606, -2281702, -2190433, +-1479079, 4144107, 2441689, -572304, 646393, -4889821, -1408212, 2539936, 2107218, 3613678, +-5255430, 1192390, 1988033, -1096290, 3707094, -239444, 3231426, 1537061, 1039382, 4098473, +2034741, 1034013, 33286, 483184, -977642, 344134, 569620, -323196, -1456531, 719944, +708670, -1078037, -150861, -727460, 761283, 1178969, 47782, -150324, -66572, -1093069, +536334, -386010, 907849, 428960, 279173, 194884, -488553, 296353, 134218, 466541, +-868657, -413391, -192200, 119185, -1183264, 11647951, 3206193, -2667712, 5936719, -2886218, +6178848, -2055142, -2819109, 3143379, 5777268, -177704, -2859375, 1542967, 1211718, -237297, +-8229694, 1927904, 2408403, 660351, 5137318, 6918656, 3711389, 6812892, 4629975, 4151086, +-1109712, 4610111, 2218888, -3495567, 1307281, 2129767, -4503810, -5716602, -880468, 2253247, +87510, -2063195, -2767033, -2692408, -1337882, 3084324, 6179921, 5236639, 1975148, 4022237, +-6493991, 409633, -1658394, 63351, -7453379, 2763275, -718333, -1757179, -292058, -2022930, +-3685619, -2588792, 2611340, 625455, 2002529, -2716567, 5081483, 1306744, -5888937, 2432025, +745177, 1636383, 3223373, 978716, 5917391, -1888175, 646929, -6912750, 1312649, 666257, +195958, 163746, -1303523, 4917201, -1505923, -2285996, 3728569, -3864934, -1888175, -1596654, +-721018, -1802813, 1244467, 329102, 648540, -51003, -172872, 63351, -708133, 423054, +644782, -250719, -304943, -34360, -1281511, -2087891, 766652, 253940, -1649804, -220117, +-185220, -360777, -1998234, 509491, -12885, -66035, 133144, 345745, 212601, -758599, +-32749, -1377611, -160524, 572304, -2352032, -2378875, -762357, 2155537, -3982509, 1155346, +-7871065, 1467268, 1493575, -928250, 5634997, 345745, -620086, 494458, 2987687, -4840965, +696322, 1466731, 3090766, -6882148, -3472481, -2604898, 2526515, 1017370, -2149094, -6955163, +1690607, -6918656, -415538, 2727304, -1271310, 2073932, -1185411, 4639102, 6907918, 3631932, +-3563212, 655519, 5237176, 3215857, -3225521, 2701535, 817654, -5396627, 1900523, 7383049, +3477313, 2465848, 8259222, 725313, -3122978, -6329171, -267362, -3559454, -4242891, -2029372, +4545149, -4322348, 1511292, -2586107, -2396592, 5272073, -684510, 861141, 4223564, 5727876, +-2542084, -5288716, 6717866, 5133023, 3294240, 296353, -4024384, 628139, 5310190, -5392869, +1646046, -3519726, -108448, 3266323, -3071975, -188979, -5919539, -1580011, -513249, 884226, +-307627, -2259153, -259846, 1117228, -1742683, -469762, 819802, 661962, 515933, 471910, +-83752, -449361, -2331094, 1240172, -121333, 1278290, -898722, -1556926, 551903, 1211181, +-800475, 1067836, -179315, -89121, -91805, -259846, 1306207, -775778, 510564, -783295, +-15601469, -5712307, -2401961, 8535711, -3239479, -1284732, -5043366, -4269735, -728534, -11254962, +6307697, 2081985, -319438, -4159676, 6209986, -1750736, 3154117, -2517925, 1992328, 3956739, +-4947266, 519691, 5459977, 3083250, 2199023, 5836324, 5223217, -3280281, -4179003, -5216775, +-86436, -6857452, 1636383, -9057012, -1733019, 6664716, 3506841, -2299955, -704912, -6815040, +3093987, -2916283, 6004365, -3462818, -6162741, -1270237, -2539936, -5068062, 1961726, -1165010, +-3223373, -3289408, -10916733, 1487132, -3274376, -8094940, -2152852, 4983773, 2558727, -4189741, +3456375, 4439386, 4292820, 1589138, -5581310, -936303, -1239635, 3860102, -3922916, -1513976, +2035815, 2062121, -6109054, -7283191, -13066901, -2242510, -7589207, 2491081, -293668, -1819992, +3842385, -819265, -1749125, 1668058, 2620467, 2509872, 1958505, 4540318, -1941862, -1609002, +-1228898, 659814, 228707, -1043140, 1253594, 1796370, -401579, 415001, -797253, -1043140, +-193274, -681289, 187905, 386547, 53150, -1156420, 177167, -783295, -296890, 642098, +1465658, -662499, 1755568, 2129230, 336618, -630823, -1859184, -386547, 1249836, 820876, +-809064, -13579076, -5430986, -2433099, -4020626, 4620311, 6041945, 5694590, -11335492, -8465381, +3263638, 13814225, 8170102, -5369, 1969779, 3936338, -4961224, 3278134, -4598836, 3325379, +4911832, 759136, 3942243, 1230508, -270583, 2045478, 1217623, -3701188, -4684199, 6483253, +2633889, -4729833, 4647692, -2578591, -471910, 11144366, -5310727, 6310918, 12463995, 5086852, +-702764, 483721, -4483946, 5828271, -5939940, -3248606, -9990094, 1888712, 7721815, -188979, +-7068443, -2517925, -10024991, -5091147, -1852205, -14268955, -7756174, -1405528, 1524713, -6244346, +3178813, -1650341, -4921496, 5349382, 15792058, 1473711, 8056822, 5463199, 4743255, -4988605, +2114735, -8504572, 923418, 2454574, 1923072, -3299072, 92342, -8634495, -2994666, -3024731, +-598074, 4207994, 4518306, -193810, 1770063, 2456721, -1218697, -935766, -777389, 817654, +119722, 614180, 492311, 1389959, -711354, -37044, -2051921, -245887, -300648, 1491427, +869194, -899259, -1229434, -1196685, -1152662, -384400, -1420560, 529892, 2685965, -2093797, +-248571, 923955, 1539209, 21209622, 13402982, -7292318, 2720862, 6827388, -2817499, 3908957, +-1327145, 6369437, 3190087, 2040110, 5776194, 3269007, 2857764, -1799054, -14192719, 6797323, +-2417530, -3227668, 11103027, 6875169, 3836480, 5123896, 3802120, 2828236, -2172717, 1648194, +450972, -3629784, 2935073, 4806606, -8006356, 1537061, -5181878, 3834332, 4431870, -12511240, +-206158, -14889578, 255551, 1865626, 1263257, 4070555, 10160282, -1237488, -5267241, -2575907, +-2828236, -3911105, 2923799, 3155727, 982474, -1647120, -1828046, 9881109, -3277597, -1969779, +-5392869, 8777839, -1334124, 7377680, -3471944, 7884486, -7589744, -15947750, -4744865, 1005022, +3226594, 5398774, -5374078, -3995930, 2183991, 1445257, -2492692, -4155381, 9970767, -3897683, +9484898, 2513093, 6701223, 2646237, 4881231, 4123706, -1720134, -639950, 1915019, -277025, +5171141, 138513, -1719598, 477278, -5806796, -1145146, -1348620, 407485, -1945620, -738734, +-659814, -133681, -675921, -3038689, -2476586, 744103, 202937, -3411815, -213675, 507880, +494458, 1398012, 583579, 3364570, 140660, -1130113, -146029, -452582, -1567663, -1833414, +-737661, 508954, 9931575, -3797288, -6589017, -308701, 1055488, -9432285, -7364259, -2354716, +2572686, -1410897, 12249247, 7340099, 332323, 11682311, 4224101, 3415036, -10008884, 9393093, +-1749662, -2364380, -8440148, -3822521, 7509751, 7401840, -2102923, 4907537, -10151692, -1433445, +6833830, 5134634, -3789772, -7218767, -4043175, -4462471, -5557688, -4635881, 1119913, -7586523, +-723702, 10478646, -5037997, 1209033, -388158, -2413235, 4095251, -1671816, 6857452, 8590, +9668508, -2479807, -6077916, 3495030, -4800163, -4764193, -4800163, -13712757, 1601486, 5680094, +8176007, 5889474, 10741713, -1097364, -4116726, 6206228, -7614977, 1777580, 1189706, -1140851, +6965363, 6493454, -1658931, -8278550, 1668595, -4272956, -7876970, -7304129, 4044249, 7091528, +4453344, -15315317, 3469260, 1641751, -747324, 7239168, 3919158, 5926518, 2255395, -562641, +7780334, 1056025, 3546032, 2833605, 633508, -3470871, 589484, -1928440, -4246649, 828929, +1319629, 2043331, -486942, 569083, 503585, 395674, 1545651, 1009317, 1075889, -140660, +-2667712, 1928977, -1060857, -1188632, -984084, -1896228, 3550864, 4003447, 3410741, 1387811, +406411, 605590, -775778, 2745558, -12242804, -6895570, 1102733, -6724308, -18039400, 13711146, +-469225, -717796, 1542430, 1241782, -11990475, 8436926, -12493523, 1270774, 5463736, -1448478, +1881733, 2160369, -13428752, -4290673, -6077379, -1053878, 2551211, -4183298, -2933463, -364535, +-947040, 1388885, 5381057, 3144990, 11763915, -4155381, 16209743, -972810, 280784, -10533407, +-1752347, 8132521, -1743220, -16295106, 6488085, 7830263, -5062156, 4224637, -6313602, 11586211, +6154688, -151398, -832150, -7152195, -4832375, -7843147, 7348152, 7580081, 3099356, 1016834, +3223910, -6290517, -17152488, -6043556, 5802501, 2782065, -12759811, 490163, 1338956, 1897302, +-6196564, 4507568, 8807904, 4794794, 40802, 3796214, 6017786, -3308736, 9032316, 312996, +-382252, -8922795, -11747272, 7627325, -3674345, 3866008, 3638911, -468688, -2619393, -2382633, +-2071785, 1342714, -2985002, 3922379, 747324, -891206, 836982, -1189706, 31675, -4598300, +1072668, 514859, -941135, -2501819, 775778, -2199560, -238371, 890132, -591632, -1398012, +-133681, -1404454, 5634460, 4493073, 1529545, -543850, -589484, -1535988, -62814, -534723, +3572339, -1116692, -582505, 3614215, 730144, 1574642, 2474438, -1686848, -1057099, 2725157, +1492501, -629750, -491774, 3854196, -18882824, 10179072, -2623151, 3777961, -5628018, -2997887, +7866233, -9117142, 8852464, -5496485, -10740103, 4884989, -5813775, 22822382, 3326452, -7922067, +-11127187, -1947768, -13786308, -6269579, -14844481, -833761, 9822053, -6973417, 6034966, 10011032, +-9311489, 63888, -10858214, 6086506, 2064806, -367220, 6294812, -6702834, -9747428, -8149164, +492311, 1851131, 8062191, -11684995, 8266202, 1656784, -17365626, -9491878, -14031121, -5710696, +5231270, -4684736, -4731980, -26548804, -628676, -5814849, -2508798, -17024176, -6009733, -2236604, +1243393, 13914083, 12588549, 10733660, 6088116, 13412109, -14500883, 11255499, 1482301, 5257040, +3697967, -10285910, 15939697, 9947681, 6236293, -7026030, -9540196, -6791417, 9216463, 1086090, +-44023, 5053566, 2345589, 5312875, -4751845, 14093935, 7308424, -1493575, -2386391, 3174518, +2752000, 1735167, -933619, -842350, 1216550, -205085, -340376, -5816997, 250182, -3353833, +116501, 1873680, 550293, -335544, -67646, 1174137, 919123, -5532455, -1570884, 1984275, +-1708323, -2150168, -234076, 763967, 812286, 1096290, -910533, -1131187, 858993, -2403034, +-4223564, -1022202, -1127966, -1326071, 655519, -302258, 3568581, 1742683, -1588064, 1638530, +1107565, 951335, -1639067, -2870649, -164819, 459562, 3029026, -1060320, -826244, 7132330, +13219909, 14334453, 5860483, 10033044, 8120710, 4861366, -2618856, 1087164, -3905736, 350040, +-1342714, -8640400, 11034845, 17511118, 6982543, -4763656, 7853348, 7477001, -290984, 4655208, +-8235600, -15877420, -10565620, -7210177, 4620848, -1894081, -8291435, 6247030, -2835752, -7399692, +-70867, 12926241, 6519224, 9589588, 3369939, 7072738, 7835631, -1742146, 7180112, -2732673, +-8145406, 3501472, -9436043, 3587908, 3802120, -13869523, -9011915, 5769215, 14467060, -7418483, +10095321, 14098767, -11561515, 545998, 12840878, 1452773, -4632659, -1006633, -6518687, -11399380, +186294, -3406983, -5971079, 7961259, 445066, -13052942, 16879758, -6875169, 13701483, -16068010, +-10988137, 7969849, -9875204, 5567352, -6621766, -4790499, -9269613, -5630702, -7534447, -18975702, +3201361, 11724724, -5315022, -785979, 8137353, 8692477, 6179384, -1126892, -636192, -4865124, +-1486596, -2096481, -2522757, 2120640, -461709, -1741609, 2855080, 2594160, -1132261, -184684, +-3354370, 1560147, -2943126, -5400385, -324807, 5166309, 102005, -2793339, -700080, 8493298, +4278861, 355409, -2469606, -2991982, -2173790, 580357, 643171, -2499134, -897111, 167504, +1061394, 3428458, 872415, 5370857, 3253438, 3868692, 1521492, 1773822, 2123861, -642098, +142271, -11761768, 7498476, -4958540, -13073344, 18779208, 9423695, -12867722, 9157407, 8608188, +2337536, 15865609, -32198832, 2532420, 13101798, 4751308, 1100585, 14225469, 466541, 7887708, +-18647674, -2285996, 4980552, 455267, -9368934, 3844533, 7400766, 3835406, 3469797, 10118943, +8166881, 13375602, 10271951, -3835406, -4291746, 10402411, -6323803, 7364259, -11588359, -6038724, +-14806900, -6495065, 8078297, 3067144, -3459059, 12353400, -14440217, -19204946, -31515396, 9994926, +10815801, 8745090, 6601902, -7194607, 4952634, -4079682, 11834782, 31970126, -4994510, -6467147, +-13861470, -4156992, 11838004, -7875897, 6762963, 11931956, 1860795, -34360, -9271761, -2442763, +4321811, -21767968, -20367272, 2268280, 2698850, -7580618, 11101417, 8746701, 16001974, 26216480, +10302016, -5814849, -3217468, 5709086, -196495, -14115410, 6763500, 6237903, 5068599, 1919850, +6627135, -54761, 3646427, 3294240, 2010582, -3047279, 216359, -125091, -500364, 5526549, +1526324, 120259, 2727304, -5494337, 1578937, 1220308, -768799, 5807333, 1064078, -1446867, +-1001801, -3277060, 9910637, 853625, 1663226, 4369593, -1512365, -1298691, 5562520, -5888937, +5532992, -4257387, 4580046, -127238, -433792, -890132, 1843615, -747861, 4737349, -3742527, +-1651415, 1648731, -912681, -1166621, -3035468, -4446365, 3326452, 47582332, 26924614, 17141752, +-4380330, -4859219, -579284, -4064113, -4883915, -7391639, -8882529, -15279346, 688805, -1087701, +3743601, 6651294, 12700755, 19182934, -2550674, -24974162, -9746355, 21420612, -3325915, 8022999, +-2761127, -367757, 14289893, 4936528, 10854456, 6369974, -433255, -651224, -187368, 7201050, +9222905, -3580929, -14049912, 18409840, 13211319, 9370008, 3463891, 4770635, -7464653, -13943074, +19210852, 10707890, 4954782, -8913131, -9897215, -13911399, -8551817, -2477659, -8687645, 4814659, +-17778480, 2456721, 13138305, -8544301, 4640176, 791348, 1932735, -20308216, 7203197, -8722005, +14821395, -32612760, 5602785, -8524973, -11006391, 2698313, -6639483, 6706592, 6363531, -21246666, +235149, 14852534, 2225330, 4355634, 9346386, 3813394, 15499463, 6322729, 3280818, 1039382, +-2245194, 9982578, -19716584, -373662, -1149978, -1808181, 777389, -564788, -149787, -1713692, +-2901251, -3789772, 6135898, 5140539, -2697776, -437013, -9443022, 930397, -590558, -9315784, +-44560, -13819057, -10504953, 4662724, 1758252, 7281580, -8215736, 3536906, 7153268, 1585917, +-309775, 1863479, 3833795, 331786, -2062121, 7586523, 52613, 2474975, -4450660, -3329674, +3150359, 4554276, 801548, -29248190, -15021111, 2158221, -25696790, 5891085, 18658412, -8981313, +22680648, 26597122, 3389266, 13286481, 16411070, 7353521, -15735686, 10268193, 12524125, -619549, +3169686, 8828842, 7815767, 18770618, 3208878, -7240241, 11992086, 4294968, -1858647, 270046, +8041253, -10976326, -4957466, -4646618, 6709813, 3473555, -15472083, 4568235, 12934294, 342524, +15587510, -14741402, -27836756, 2222646, 12497818, 18887118, 17526688, 9040906, 8319352, 6658273, +-18913426, -5539434, -787590, 14191646, 22445500, -7758859, 4837744, -8261907, 5311801, 3566970, +13664975, 21153788, -8152385, -9273371, -1839320, 11589432, 14892799, 20848844, 515933, -22537840, +-21251498, -3471944, 2753611, 64961, -9740986, 217970, -25624312, -16544214, -15140833, -17241610, +7351911, 2643016, 20651814, 16498580, 6226092, -9874667, -9850507, -9179419, -8329552, -14323716, +6760279, 4483409, 2654827, 9627706, 10713259, 57982, 9140764, 1874216, 9760850, -3397319, +8096550, -2589865, -729071, 2399276, -2969970, 13533442, 6102075, 8033737, 3638374, 9635222, +2162516, 4618164, 13829258, 11984032, 6424734, -775778, -5297842, -4549981, -9775346, -5496485, +-6415608, -3837553, -5916318, -7182259, -4146791, 4173635, 9218610, 2552284, -2155537, 332860, +-1360431, 5751498, 6811282, 5643050, -594853, 2536178, -10414759, 12358768, -27339078, 2462627, +-5461051, 14973330, -8023536, -1259499, 4639102, 11340324, -15260019, -25704842, -4459787, -10079215, +724239, -11605539, 6832219, 6731825, 678068, -13872207, 8660802, 856846, 23163832, -3708168, +12688407, -10711648, 23924042, 6888591, 14933064, 10016937, 16291885, 23941222, -5830955, 9286793, +-16748762, 17663590, 17183628, -402116, 5590437, 17298518, -11066520, -10701448, -1756105, 34830576, +5674189, -9742060, 17308718, 2262374, 13278428, 19071266, 5574868, -1291175, 1810329, 2975876, +12600897, -4403952, 13513041, -9316858, 13192529, -7292855, 29753922, -4320737, 25589416, -23192286, +-25449292, 35442608, -29653528, -15880105, 1216013, -9557913, -18399104, 16193100, -2139968, -22834730, +-10785200, -11728482, -33570000, -12458090, 4165582, 7550016, -25894358, -6619619, 15746961, -3140695, +9055402, 15512348, -11057930, -2529199, 2552284, 10127533, 7297150, 7641821, -2486249, -1462973, +6294812, -543850, -4143033, 3445638, 7256347, 1374390, 5053566, -146029, -4628901, -9664, +6698002, 2520609, -3365644, -8381629, -5032628, 9833864, -4480188, -13207024, 3185255, -7577396, +-14344117, 16643, 5463199, 515933, -3679713, -1058173, 4005594, -3005940, 246961, 5182952, +-223338, -2396592, -3032784, 9336185, 17965312, 989453, -6230387, -5216775, -2838974, -8434779, +-1731409, -3527242, 3536369, -22944790, -15306727, 4464619, -30002494, -17502528, -20847772, -21212306, +25851946, -638340, 891206, 7698729, -7537131, -32988570, -24677808, -24171540, -49287972, 3561065, +5596880, 21298206, 12449500, 7380365, 10628433, 7371238, 2305324, -15557982, -22859964, -13167296, +17767206, -2248416, -13371844, -5399848, 17403208, -21047488, -13581223, -21619792, -10748693, -1848983, +-20739860, 7713762, -17222282, 18632106, 13068512, -2895345, 12891881, -12681428, -26067768, 11387032, +15202574, -13458817, -29913910, 22533546, -1945083, 16319802, 13707925, -42788076, -30398704, 284005, +-6942278, 27853400, -15981036, -18475876, -4964446, 10270341, 1569274, -2581275, -9707163, 36984500, +-18153754, -30131880, -40740988, 29203630, -6984691, -33550674, 15621333, 15902116, 9427990, 33706368, +36063768, 37026376, 15841987, -8418136, -3412889, -5757941, 12287365, -23721642, 15229417, 2893197, +2967823, 11542188, 11164767, -9801652, 14301167, -11253351, 4764730, -15972447, -9111236, -6219113, +-8290361, -3318936, -8929774, -2241436, 6101001, 16711718, 19448148, 784905, 15249818, -9169755, +2183991, 8996346, 1180042, -16986596, 2043331, 4119948, -4737886, -12630425, -8107825, -7784628, +20161650, 12549358, 6491306, 9483288, 16997870, -2725157, -20375862, -12802761, -11742441, -14624364, +-18944028, 3291019, -15903190, -27742268, -599148, -4926865, -6595459, -5277441, 4193499, -27051852, +-10775536, 12608413, 20512226, 41771240, 6848326, 21850646, 10589779, 10550050, -9528922, -3053185, +-8123931, -22912576, -26921928, -37798396, -13760001, -34051576, -13387413, -17824652, -6658273, 18300856, +4498978, 12454868, 21521544, 33823, 14540075, 4233227, 741956, -490163, -2840584, -28724204, +10459319, -3581466, -32460826, -20092930, 9483288, -20823612, -7991861, 7591892, 23567560, 28603946, +9950902, -5936182, 3938485, 19152870, 10247255, 4046933, -563178, -56612500, -11417634, 12539694, +14375256, 5747740, -2163053, -19079856, 13244605, -17019344, -12834973, -3338800, 3481071, -9458055, +-30238718, 16179679, -3868155, 37638408, 14315126, 12871480, 14464376, 27673012, 62048320, 962610, +1063541, -2592013, -18471580, 11040213, -12814035, 45129368, -4009352, -16170015, -14554034, 19080392, +-24467892, -16513076, -3216394, 38604776, 1297617, 18426484, 28516436, 5771899, 23087596, 17511656, +-3183645, 16057809, 17401596, 591632, -11876658, -12794171, 3593814, 4419522, 14601815, 9385577, +-617402, -2172180, 2602750, 5948530, -10812043, -2249489, -2643016, -1410360, -16963510, 10707353, +-12307766, 4322348, -2484639, -7356205, 2068027, 20688858, 18098456, 50466, -1199907, -13140452, +-5357972, -13060459, -1933272, -15201500, -21674016, 6379637, 15054934, 1051193, 879395, -7479149, +-11350525, 31688806, -4294968, 5756867, -34678640, -11731703, 40614284, -27066348, -7399692, -23437100, +-69262256, -9828496, 21223044, 17540110, 3343095, 5050345, -3766686, 38821136, -41842108, -21475, +-12064563, -27939300, -23699092, -3506304, 7916162, 6986301, 9330280, 25072946, 16227997, -17723182, +-18075906, 49854908, 40691056, -3255585, 4741644, -5448166, 13247290, -177704, 29036126, 10599442, +15424301, 4369056, 2226941, -51511152, 21339546, -2196876, -29708826, -15094663, 2919504, -7977902, +-29566018, 28467580, -5041755, -21010444, -4421132, 3129958, 25189984, 28261958, 21449066, 8315057, +25123412, 26897770, -20198694, -22022444, -14120779, -3569118, 26035018, 34873524, 5956046, 12598213, +33385854, 20112258, -31328566, 23190676, 8410620, -6846715, 1227824, 64297808, -42545948, 32794222, +37486476, -37685116, -2213519, -24474334, -7918846, -54159536, 15598247, 24036248, -32646046, 19754702, +-28247464, -20349556, 24699820, -15326591, -2277943, -9192841, 1199907, -13516262, 4181688, 6315213, +-10285373, -14486388, -1138166, -15738908, 20696374, 3773129, -19433654, 4304631, -3264175, -10506564, +-10201084, 6736656, 13197361, 16611860, 6793565, -14847165, 38121056, -6997039, 3799436, -2417530, +-20171314, 7759396, 11009612, -10180146, 16265041, 4205310, 12153147, -2779381, -19509888, 6643778, +29405494, -19008988, -27253714, -44530220, 8914741, -8654896, -14027900, -18108656, 9941776, -11056320, +-5035313, 29023778, -9028021, -1806571, -22821308, 1699196, 14682346, -32249836, -20189030, -19366544, +-9386114, 11491185, -43206836, -24242406, -62382788, 10679436, -591095, -16042777, -6921877, -9405442, +13374528, 19857244, -22145926, 643708, -7716446, -7700877, -38979512, 8383776, 29956860, 7721278, +22663468, 28232968, 25484188, -34398928, -10453414, -10532870, -16012175, 28563144, -29403346, -17162152, +1028108, 41566692, 9433359, -14881525, 42089604, -23888072, -22246856, 49998252, 48077328, 4418985, +12237436, -13890998, -45577656, -14243722, 45886892, -22474490, 41586556, -15232638, -65504692, -17491792, +-30641908, 34699576, 303332, 7603703, 31286152, -5219996, 25792890, -33903936, -39712880, 30317100, +-7975218, -67115840, 41303088, -21519934, 11260867, 13340705, -23408646, 44161928, -30317638, 15880105, +-476741, 11600170, 44941464, -11637214, -14214194, 1539209, -9371082, -12409771, -10169409, 4922033, +10095858, 2317135, -6460168, 5513665, -21422760, 19134080, 13481902, 10713259, 4275103, -2147, +-10028749, -11017128, -10433549, 8959839, 17541720, -17318382, 15209553, 35362612, 11895449, -30495878, +2923799, 10985989, -11304891, -20182052, 18871550, -17113834, -403190, -1611687, -18178450, -23511188, +-257161, 13186623, -7773891, 30407294, -10256382, -20320028, 14097156, -9087614, 1040456, 11794517, +23278722, 1546188, -41477572, 24374476, 28457380, -34591128, 18947786, -383326, -12322261, -14918569, +-49515604, -22099754, 17547088, 2934537, 45647448, -36786932, -20591684, 8350490, -4945655, 28989956, +-40511204, -169114, 4241280, -34520800, 34375308, 18591302, 10534481, -16308528, 23552526, -28030568, +15424838, 11725798, 7279433, -2204392, -15487652, 6214818, 31242128, -16640851, -5939940, 5867999, +-24403468, 24685862, 1002338, 6289443, -33458332, 17816598, 4452808, 5888937, -78553880, 10522670, +-22319334, 36463200, 30423938, 32012002, 16513076, -64174328, -11205033, 13422847, 1376537, 3964792, +45018772, -6994354, -27090506, -32789928, 1316944, -36442260, -31723166, -28398860, 13529684, -53036940, +37473588, 71392024, -18808736, -8905078, -55977384, -12510166, 21430814, 12925704, -18629420, -4131759, +-67732704, -24094230, 67977520, 28648506, -21118892, 19597936, -38431368, -28678570, 7476465, 1220845, +4573604, -26318486, -9058086, -5742372, -49929, -38022808, 8094940, -5126581, -11862700, 4745939, +15560667, -20886426, -10358924, -3504693, 7392176, -16108275, -4271882, -2997350, -15016279, -46171, +-27772870, 35944580, 11634530, -9756018, -3717831, -10912975, -1559610, 22975390, 6892886, -4551592, +12074764, -7794829, -34581468, 1332514, 1504849, 7031935, 15229417, -9293772, -6581501, 14795625, +18089328, 7510824, -16724066, -37165424, -51835424, 14500346, -23047332, -14730664, 15010374, -11988864, +-18591840, 14840186, -24266566, -886374, -27581206, 39594228, 128849, -27958626, -8979166, 1224066, +-3421478, 9642738, -19608136, -12635794, 3730179, 8425652, 4032974, 4387309, 14265734, -16603807, +-7129646, -38916700, 14110578, 4238059, -12592307, 29050622, 15062987, -11161546, 43116640, 10191421, +-27957552, 21219286, 3063386, 13977971, 28302224, -2199560, -7569343, 4974646, 23247584, 13878650, +42413, -1974611, 24914032, -1815697, -29982092, -4673998, 4975183, 23726474, -10796474, 40537512, +43865036, -27735826, 22692996, 50219980, -13892072, 76042936, 42273216, -18558016, -17646410, -28126668, +-32674500, -17862232, 9672266, -5275294, -6134824, -634581, -5310190, -52510272, -20875152, -51841864, +11842299, 47150152, -17890150, -2483565, -25829934, 13028783, 2795487, 9368934, 12694850, 39613556, +-2297271, 18188650, 17893908, -29139742, 909996, 284542, 6093485, 13252658, -2011655, -6629819, +11928198, -1466195, -7117835, 1899986, -12539694, -2589329, 8675834, 2030983, -5558225, -27880244, +1142998, -12666932, -1362042, -10624138, 23304492, -7585449, 11223823, 14533096, -11527692, 17467096, +10718091, 497679, -6352794, -10463077, 2405182, -910533, -6420439, -776852, 11491722, -8750996, +4866198, -2972654, 8232916, -21994528, 66778688, 17631914, -23911156, 2666101, -31402116, -4121558, +11013370, -13045963, -16690243, -18615462, -7055021, 7150584, -4110821, -5988795, 8481487, 4882841, +11496554, -11882027, -7456600, 8546985, -3082713, 1514513, -17359720, 11759084, -20322174, 9735080, +6700686, -4395362, -919123, 726386, -11803107, 1959579, 2391760, -9422085, 16974248, -9161165, +4096325, 70867, 572841, 8563091, -8401493, -13056701, -3936875, 19605988, -14591615, 9589051, +-26737782, -15917686, 5043902, -5808944, -452045, -1799054, -16110959, 17024176, 13596256, 1205812, +-11806328, -621160, -7193534, 3471407, -8970039, -324807, -8612483, 6383932, -2405182, 1631014, +21572546, -18327700, -1598802, 3198140, 1283122, -4015258, 477278, -8724152, 458488, -7322383, +4410395, 8475044, -13129715, -10927471, 6230924, 754304, -3142842, -10420128, 4432406, 1321239, +-482110, -2423972, 52076, -2450279, 7174743, -4879083, -1378148, 3280281, -2465848, -469762, +5737540, -3953518, -2589865, -1571421, 1183800, 5884642, -2085744, -6815040, 355945, -4423817, +15503758, -6379100, 1860795, 3455301, -4005594, 12306692, -1837172, -10864120, 3802657, -6253473, +7594576, 3652870, -1764695, -770410, -2918430, -3049427, 7495792, -5120138, -2347200, -938450, +-6673306, 8371965, -32304596, -47041168, 32691680, 151848576, 66105988, 69747048, -741419, -140010560, +-101835824, -52546240, -110857400, 53950696, 65667904, 34561064, 142689008, 64560336, -6498823, 47680044, +-92813704, -117711632, -67628552, -82389824, -18107046, 64149096, 65147136, 27655832, 109642464, 54808076, +-7933342, 53119620, -48947596, -83262240, -48168060, -62583580, -98865312, 36531920, -1126355, -35172560, +105900472, 64144264, 35721780, 108895672, 26029112, -54998668, 53286584, -78509320, -89974200, -18178450, +-94619200, -95583960, 37650220, -15666430, 22939958, 120918360, 82505248, 86261200, 81024024, 10018548, +-45732276, -52470540, -88294864, -115444960, -60819960, -32796908, -24109798, 44282188, 68644848, 64775624, +91349656, 82804824, -12934294, -14492830, -15042049, -84778360, -25633976, -41703060, -63255740, 14209362, +25702158, 4279935, 58628452, 26322780, 374199, 36899136, -28492814, -31132070, 703301, -20214800, +-6543383, 15431281, -3323768, 17119740, 22646826, -12503724, 17783848, 7350837, -27704150, 2658048, +-13289166, -52288544, -887985, -13265543, -22468048, 50538880, 14995341, 18995566, 66194036, 26320634, +19333258, 14615237, -33026688, -48110612, -44724032, -74898864, -61368104, -27285390, 2449742, 33668784, +76915352, 81548008, 74795248, 66334160, 40880036, -16388521, -47108812, -93791888, -118867512, -91750168, +-55139864, -19489488, 49873696, 92463664, 106277888, 108948824, 52465708, -13139916, -36048196, -44297756, +-57130580, -41292352, -42426224, -34329136, -5100811, 10273025, 16789564, 28822452, 30978526, 28351616, +25851946, 14023605, 3661997, -4414153, -14708116, -22870700, -22622666, -19403588, -13933948, -8004746, +2718178, 8898098, 12319577, 12787191, 12302934, 7923141, 4788889, -47245, -448824, -2206003, +-3201898, -4710506, -2464774, -3774203, -4188130, -4038880, -2665027, -5740761, -2375117, 66035, +2941516, 6598144, 9072045, 6065031, 8182987, 5013301, 1560147, -2833605, -6347425, -10062572, +-8756901, -8764418, -4068408, -513785, 4300873, 5161477, 7738994, 6389838, 5264020, 1903207, +897111, -2472291, -2388539, -3947612, -3363496, -3054259, -768799, -1487669, 806380, -236760, +1251446, 922881, 920197, -337692, 2000381, 937914, 2284923, 625992, 963146, 33286, +119722, -2251100, -1434519, -2835215, -1533840, -1693828, 87510, -198105, 1779190, 962073, +2161442, 957241, 1504312, -88047, 602906, -891206, -107911, -1233729, -44023, -1045288, +266288, -641024, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 4847408, -2728378, -4322348, -1034013, -1574642, -177704, 6568079, 336618, -2756832, 3404299, 738734, -314069, 1185948, 685584, 95563, 4875325, 2806761, -3362423, -1244467, -419296, -1131187, -1340567, 2134062, 1371705, -1387274, -2160906, 853625, -4315906, -1908576, 3176128, 319438, -2550137, 1360968, -2124398, 1618666, -9127, -1805497, 4474819, -2981781, -1456531, 613107, -1515050, -2027225, -579821, -2927020, -5905043, 5526549, -1138166, -3023120, 286152, 5083631, --32212, 1989644, -2545842, -1429687, -1072131, 1588601, -2021319, 4073240, 600222, 3679176, --5324149, 2274185, -1411434, 921807, 2208150, -874026, -626528, -3868692, -10201, 2149631, -441845, -1050656, -221728, 1917703, -1032403, -1002875, 2924873, -1313723, 903017, -525597, --215285, -3608846, -1536525, -956704, 1292785, -235149, -1663763, -242666, -369367, -987843, -932008, -1189169, 42413, 311922, 585189, 1026497, -471910, -846645, 889595, 223338, --707596, 157840, 1542967, -177167, -192200, 668941, 15569, 247497, 217433, -448824, --896574, -456340, 637266, -126165, 36507, 366683, -499290, 474594, -30065, -246424, -1692754, 13801877, 4707284, -1073205, 3714073, 208843, 6782827, 4291746, -972273, 3514357, -6088653, 8005819, -4733054, -4596152, 1944547, -1843615, -1561221, 5730023, 4597763, 4415227, -3120831, 609349, -198642, -1976222, 2161442, 1540283, 7258495, 754304, -176094, -3200288, -1496796, 2149094, -432718, -973884, -1156420, 1991254, -307090, -1154809, -2683281, 2844342, --966905, -938450, 3999688, 5719286, -1488743, -680752, 3277597, 2967823, 5204427, 3253975, -1416802, 555661, 4428112, 2534568, -6150393, 24696, 1862405, -3514894, 72478, 595927, --4393215, 2245194, -2143189, 3297461, -726923, -548145, 1744831, 585726, -3037616, -251256, -1655173, -574452, -767189, -857383, 304943, 3508452, 595390, -3496640, -856846, 844498, --1069984, -428960, 5141613, -1027571, 605590, -587337, -1342714, 1185948, 1898376, -479963, -850404, 958851, -979789, 474594, 836445, 219580, -659814, -1794760, -587874, -1072668, --532039, -113280, 551366, -317828, 667867, 398358, -182536, 4761508, -364535, -9010305, --4183298, -1753957, -1941325, -4908074, -4494147, -2833605, 4886062, -5368709, -2496450, -2553895, -988379, 8131984, -1215476, -653372, 1997160, 4650913, -7116761, -1169305, 1460289, -3151969, -2521683, 3974992, -4385699, -278636, 572841, -2561411, -6458557, 1117765, -2716030, 869194, --2500208, 3693135, -4457103, -4174171, -10254234, -2772938, 3535295, -579821, -3930432, -1947231, --489089, -4134443, 214748, -702764, 2842195, 2234994, -1056025, 121333, -1043677, -4364224, -5327370, 919660, 3602941, -1327682, 19327, 928250, 1562831, 4114042, -1314260, -1002875, -1225139, -123480, 4505958, 2397129, -3883187, -1551557, -963683, -6166500, -685047, -589484, -3670587, -2368138, 3345780, 565862, -110059, -350577, -580894, -672699, 719407, -2493766, -1161789, -1441498, 1262184, 1061931, 490700, 299037, 3594351, 2623151, -651224, 3256122, --435939, -1109175, -1029182, 629750, -225486, 2225330, -569620, 1385664, 1141924, -208843, -958851, -11274, 1003949, 973884, 297427, 327491, 1086627, 707596, -1464047, -822486, --145492, 1803349, 2031520, -5906, -204011, 1085016, 19864, -686658, -19837380, -6172942, --1780801, -1571958, -1686848, 7673496, -7086159, 3421478, -1677722, 1578401, -2047089, -1614371, --5711770, 954020, -2102387, 450435, -8277476, 185220, -874026, -1458678, -164283, 1567126, -1219771, -765041, -594853, -3291556, 991064, -2640868, 1716376, 9664, 1461363, 5162551, --1378148, -5890548, -2553895, -6900402, 927176, 1255204, -656056, 1205812, -2443837, 2323577, -1160715, -3053722, 234613, -8300561, -1800665, -5550172, 3011309, 5499169, -4869419, -374199, -1546188, 847182, -7954280, 1326071, 4044786, -3801583, -1840930, -9040906, 3040300, -1305670, -3709241, 6700686, 3790309, -5383742, 1112933, 1273995, 267899, -5987185, 1518808, -2552821, -3959423, -1612223, -220117, 1870458, 1599339, 4711043, 5334350, 3665218, -297427, 1354525, -3168075, 1613297, -3183645, -652298, -2131378, -2119566, 941135, -92879, 493384, 50466, --650688, -178778, 1907502, -636192, -654983, 54224, -568546, -1420560, 1728724, 66572, -808528, 2120103, -284005, 235149, -1688996, 1075352, 721555, 170725, -1697586, 554051, -4832, 1122060, -12294344, 1388348, 2157147, -4355097, -580357, 12023761, 9273908, 5092221, --1376000, -2136209, 5927055, 3780108, 1873143, 2298881, -4847408, 1686312, 427349, 5676336, --5417565, -2418604, -1065689, 750009, -1140314, -6166500, -4248797, -4327717, -5203353, 2900177, -3421478, 2267743, 1494649, 154082, 1458678, -738198, -712965, 435939, -1920924, -494458, -2675765, 2164127, -4263829, -4663261, -484794, -4677220, 2779381, -1389422, -8028905, 1008780, -4009889, 5796059, 3929895, 269509, 3709778, -5648956, -1881733, -2496987, -451508, 448824, -2500745, -1914482, -5271536, 6400575, -5820755, -2712809, 3870839, 9233106, 2112050, 1866163, --9027484, 9750650, 1098438, 6811282, 10349261, -2247342, 1046898, 1265405, -4327717, 8676371, -1952600, -2775623, 2312303, -1154273, 4187056, -7041599, -3851512, -7196218, -1479079, -3162707, -2833605, -1786170, 1162862, -3345780, -945430, -610959, -2258079, -95026, -898185, 943282, --237297, -896574, -583042, -376883, 1633698, 515396, -1388885, -2898566, 1567126, 1690070, -215285, 49929, -135291, -1171989, 433792, -767189, 1700807, 387621, 917512, -974958, --1279363, -2290291, 1267015, 18491982, 13105019, -4699768, -6756521, 10250476, 6760279, 10792716, -15961709, -8057896, 5572183, 2628520, 4679904, 2050847, 2838437, 6559489, 1702955, 6700149, -288837, -4310537, 1873143, -1401233, 2335389, -812823, 12414603, 2072322, 2791192, 1661079, -559420, 4308926, 1907502, 242666, -721555, 3082713, -2314987, 5897527, -4532264, 7103339, --3286724, 4293894, 2324651, 2622615, 2160906, 10435160, 8056285, 496606, -2172180, -5664525, -6262599, -6903086, 1809255, -3019899, 3121904, 6534256, 865436, -10942503, -8800388, 916976, --5444408, -5991480, -3374771, -6907918, 2545842, 11975443, 6091874, -4409858, 360777, 1382443, --3053722, -3528853, -498753, 5881958, 6626061, -6937983, 3375308, 7677791, 1615982, 2527052, -3794067, 5983427, -941672, -4083440, 1680406, -1757715, -258235, -3917547, 3714073, 5657546, -957778, 1014686, 875636, -3964792, -481573, -65498, -347355, 403190, -529355, 654446, -582505, 1940788, 300648, -31675, 277562, 1248762, 2237141, 1118839, 2364380, 1241246, -515933, 670015, -381715, -3689377, -3729105, 783295, 2921115, 727997, -738198, 693100, --390842, 1786706, -1316944, -1303523, -2293513, 1053341, 8210904, 1506460, 11864310, -1090385, --95563, -3973382, -3121368, 3914326, 8987219, -2659659, 2414845, 590021, 9731859, 3958886, --4468377, -4216048, 676994, 1982664, 8846022, 8582955, 13183402, 2340220, 3698504, -2354179, -5398774, 6044630, -2324651, -3063386, 4762045, -3670050, -4994510, 4684736, 1466195, -5873905, --7109782, 10826002, 5488968, -408022, 6972343, 1314260, -4831302, 10281078, -2382096, 276489, --214748, 2641405, -3723737, 2641405, -3730179, 2570538, -3462818, 3125126, -2826089, 4265440, --3572876, -3699041, 9645960, -12071006, 710280, 1395328, -4101694, 772557, -13493714, -6680822, -6497749, -5426155, 4004520, -1470489, 2712272, 1144609, 2329483, 1393180, -6102075, 3268470, --3534221, -440234, -7761543, -4253092, -1920387, -1893007, 2250026, 7314330, 4280472, -5946919, -2312840, 1127429, 80531, -2873333, 431644, -567473, 1469416, 657130, -1476395, -2030983, --759136, -580357, -1115618, 4225711, 812286, -1647657, -890132, 996969, -1720671, 164283, -877247, 39728, 255551, -4502737, -1795296, -1133871, 700080, -1262720, -158914, 2826625, --227633, -767189, -811749, 290447, 898722, -9637907, -8232916, -68183, 3626563, 6692633, --7795366, 2220498, -7001334, 5782100, 4495220, -9711458, -1966558, 1006633, -11308649, -6488085, -6948720, -927713, -452582, 1603097, -676457, -11914776, 10903311, 667867, -7657927, -3777961, -1483374, -1028108, -7359964, -2247879, -4214437, 1198296, -333934, -2388002, 2408403, -10332081, --4543002, 2632815, 13507672, -2281702, -7881802, -5628018, -4373888, 9141838, -9734543, -1981591, --644245, -10467372, -12975633, 3173444, -8983998, -1460826, 1380832, 6832219, 3869229, 535797, -1520418, 8163659, -3503620, -2582886, 12174622, -8135205, 6357626, -2807835, -3000572, -1260036, --1432372, 12934294, 335007, 5015448, -13303124, -9700184, 357556, -1955821, 14936823, 460098, -10195179, 4258460, 12741020, 7689065, -1893007, -8866423, -3293166, 5925981, 2624225, 3995393, --4878009, -5554467, -1501628, -1883880, 2662343, -1386738, -3548180, -668941, -843424, -56371, --413927, 458488, -1435056, -1999844, 2449742, -199716, 176631, -703838, -1054951, -867583, -680752, 2041183, -2150705, 463320, -1313186, -1999307, 1414655, -614717, -1822140, -2177549, --403727, 1990717, 223875, 229781, 775778, 3616899, -3073049, -2595771, -1560684, 264677, -1481227, -16028818, 1590212, -1646046, 10969883, 1185948, -11524471, 13729937, 4494147, -8193187, --17735530, -7493644, 17609902, 785442, -2189360, -3029563, 1848983, 489089, 5455682, 2777233, -5841156, -1353989, 10402411, -5448703, -12185359, 420907, 600222, -3008088, -411780, 4479114, --3106335, -1970853, -1033477, 9667971, 7616588, 3822521, -690953, -13412646, -226560, -802622, --525597, -2320893, -186294, -5933498, -10824391, -1812476, 7493108, 7148973, -2705830, 7688529, --2491618, 3255048, 8601746, 8086887, -18089866, 6095096, 6559489, 2592013, -4393215, -16005732, -9658845, 5568425, 3101503, -5788542, -3148211, -6540162, 3579318, -7243463, -1303523, 2684, -6500970, -4148402, 3317862, 1668058, -11601244, -1727114, -7750806, 12602508, 5917928, -15084999, --3160559, 11724187, 5917391, -6289443, -3067144, -6934762, -2290828, 3411815, -2071785, -949725, --2593087, -3398393, -5685463, 973347, 449898, -1956895, -579821, 2785823, 1963874, -3722126, --1276679, 2508261, -704375, 1887101, -2375117, -1777580, -471373, 399969, 3039763, -3374234, --2314987, 1500554, -3693135, -424665, -2611340, 1437740, -2078764, 3392487, -1267015, -769873, --1838783, 2110440, 1493575, 3880503, 1133871, 9986336, 12135430, 12493523, 9516037, 12251931, --15390478, -10020696, -5324149, -4956929, -7379291, -5608154, -12352863, -4151086, 812286, 7386807, --24696, -7025493, -347355, 7383586, 343061, -6056441, -2873333, 16752520, 1609002, 6322192, -1914482, 6947110, 1395328, 2281702, -10294500, 5775658, 373125, 2414845, -10788421, 3768834, --16563005, 32212, -5246303, 4143033, -1525787, -12052752, -302795, -11995844, 2196339, -9960566, -9123047, -5141076, 14347875, 490163, -272730, 7277285, 1547799, -2231236, -2118493, 2972654, --4912369, 3435974, 8854075, 4578972, -6593849, -3401077, 18983218, 1504312, 15142444, -13986561, --2952253, -1433445, 11017665, -12194486, 1733019, 5927055, -12182138, 8571144, -7649337, 2290828, -11850352, 1343788, 6678674, 3223910, 15485505, 6768869, -6414534, -4987531, -6178848, 1006096, -599148, 6582038, -3862786, -663572, 4258460, 374199, 3287261, 4536023, 630286, -3510599, -4297652, 3365644, -405338, 1413044, 1451699, -1500017, -1271847, -4999342, 3409667, -2350421, --2265595, -912144, -2627983, 2576444, -1785096, -523986, -2815351, -607201, -623844, 3668439, -2570001, -28454, -559420, -121870, 2047089, 2545305, 2171643, 4690105, -511638, -1702418, --4510253, -15489800, 2456721, 14837501, 11341935, 12103755, -3919158, -3267396, 3210488, -2243047, -15291157, 4951561, 7366406, 12644921, -767189, 4667019, -8506183, 12599287, 6510634, -3300146, --7630547, -7347079, 8689793, -14841796, 5924908, 8396124, -5996311, -8322573, -4535486, 7830263, -3127273, -3073586, -5237713, 25770, -8925479, -13743358, 2650532, -13191992, -19387482, -2530810, -916439, 19738596, -8385924, -6820408, 8979166, 14529337, 14766098, 7718593, -732292, 3328063, --6143951, 1070521, -6447283, 16261283, 14548665, 9280351, -511638, -16732656, 47245, -14296336, -15868830, 12168179, 7734699, -11870753, 9904195, 5516349, 6899865, -2249489, -9885941, -7325067, --7881802, 2691334, -11136313, -20672752, 4183835, 13971529, 7531762, 13719199, -4066260, -3808562, -14005351, 4606353, 1991791, 9212168, 3168612, 252329, 8064875, 4989679, -626528, 3621194, -3559991, 2081985, -2523830, -4563940, -5916318, 1610613, 3992709, 2257005, 8129300, 209917, -5823976, -1799054, 2450816, 4536559, 728534, -2064806, -1133335, -6645388, -5611375, 2026688, -1554778, 2675765, 7071664, 1054951, 5401995, -1974074, -1054415, 947040, -4998268, -3983582, --1373853, -4273493, 2155537, -1386738, 1767916, 3933116, 5571110, 7875897, 12444131, 26910654, -11894375, 9415642, 8695698, -16604344, -2662343, -6053220, 21210696, -21572010, -20540144, 5902359, -13826037, -361851, 16920024, 15422691, -789737, 5950677, -10239202, -7323993, 16080894, -6339909, -11031623, 3945464, -7235946, -3729642, -3240016, -3537443, -7547332, 6286759, 6636798, 5615670, -464393, -8362302, -10834055, 13965623, -13780403, 10817949, 935766, -16893716, 8461622, 16136729, --389768, -4360466, -2107755, 1327145, 864899, 11014981, -642635, -8249559, -3512747, 9374840, --17116518, 4133906, -2924336, 13881871, 14562087, 9783399, 11383811, 15090904, 10766409, 3956739, --9865540, -11028402, 5271536, 7370701, -598074, 6387153, 8621073, 22991496, -13033615, 14554570, --8686034, -5490579, 15738908, 2426657, -9507984, -8210367, -8777839, -14155138, -4908074, -6910066, -11276974, 297427, -9134859, 4988068, 3084324, -1915019, 5258114, -10788421, 6996502, 483184, --1075352, -1139777, 5936719, 1059246, 1517197, 6285148, -2666638, 1046898, 4513474, -6897718, -4819490, 304943, 1757715, -3070365, 3831111, -1358283, 397284, 5367099, -39728, -1264331, -1303523, 3628174, 4485557, 7611756, 6124624, 2280628, -3572339, -2896956, -10849624, 2410014, --9045738, -2636573, -3972308, -3676492, 4199941, 1643899, -4349728, -17884244, -3197603, 10413685, --12848932, 411780, -8085813, -14127758, 20549272, 17574470, 14686641, 6967511, 3824669, 5784784, -15084999, 8338142, 15465103, -5726802, 12952548, -9760850, 15687905, 21079162, 13211319, 10537165, -5360119, 10883447, 10958609, -3257733, 21811454, 5238250, -13164075, 6241661, -13327820, -9163313, --2736431, -20721070, 349503, -4419522, -5624797, -10075456, -5245229, -2896419, -653372, -2046552, -892816, 863288, -11899744, -7858180, 2457795, -6284611, 4932770, 20401094, -10294500, -835908, --1945620, 748398, -9760850, 5250598, -4692252, 15789374, 3355980, 9427990, 14766098, 2514167, --986769, -9751186, -21696028, 2855080, 16140487, 11710765, -3060164, -14464913, 12175159, 1272921, -7332583, -18517214, -13290776, -12197707, -18356690, -11374684, -13430900, 6242198, 1982127, 4685273, -6123013, 8460012, -4146791, 8610873, 9804337, 295816, 5270462, -3161633, -6513318, -6717866, --7051263, -2836289, -5141076, -328028, 1549410, -693637, 464930, 1292785, -5965173, -5530308, --9444096, -3250753, -2190433, -5268315, 2077154, 769336, -2789581, -8556649, -3929358, -3167002, --2202781, 7113540, 2180233, -3126199, -3937948, -1449552, -10248866, 2784750, -2085207, 5284958, -609885, -3240016, -6039798, 6295885, -4139812, 9009768, -30701500, -19654844, -9352291, 21930640, -15969225, -11892764, 13681618, 12348031, 10527502, 10308995, -10309532, 1038308, 5938329, -10254771, --30947924, -5662378, -8601746, -18981072, 1693828, -6489159, -4876399, 5778342, 3424700, -4242354, -883153, 14472966, 15475841, -28539520, 6747394, 1423782, 13156559, 4461398, 682363, -17789218, -5381057, -4587025, -4975720, -12247636, -9129490, 22808424, -10421201, -449898, 2668785, -6080063, -25210384, 11955578, -11310796, -6848862, -19837380, -2898566, 18830748, 5501316, 5645735, -6253473, -11470784, -2769180, -5060545, 10580652, -6376953, 17574470, -4225174, 13079249, -26850524, -9117679, -15244986, 3716757, -2554969, 4259534, -29707752, -14057428, 4401268, -11871826, 4421669, 1147830, -3182571, 18107582, -6907918, 7273527, -1552631, -14816027, -2683281, 11119670, 16057272, -575526, --6910066, -12570832, 212064, -17528298, -5823439, 1453846, 20411832, 18281528, 2357937, 7645579, -2156074, -3133716, 10030359, 7631083, -4199405, 8381092, 6217502, 3318936, -7244536, -562104, --3840238, 6095096, 4132296, 5413270, -634581, -8449274, 7708393, 286152, -4088272, -8232379, --583042, -736587, -7896298, 5322538, -5797669, -8979166, 9846749, -4100620, -3608846, -4579509, -2030983, 1349694, 7841000, 1689533, -1591822, 3256122, 4763656, -9100499, 2259153, 2474975, --3701188, 5568425, -13370770, -38436736, -3257196, -4641249, -4161823, 5878737, -15334644, 30113626, --5499169, 1320703, 33229088, -39130372, -4067871, -7676717, -3728569, -44818520, 2499134, -6965900, --8659728, 15152645, -15379204, 2319282, 2937221, 7199976, -1408212, -16369194, 11169599, -10769094, -23280334, -4058744, -26388280, -1999844, -886911, -13375602, -26585848, 11883101, 13543106, -22324704, -18185966, -20197620, -15653545, -9700721, 1763621, 1549946, 3006477, 12786118, -2430952, -12331925, --28983514, 5836861, -39183524, -20908974, -13464186, -31493922, -18590766, -9140227, -1913945, -14833206, -22468584, 23010824, 5151277, -7052337, 25527138, 11411191, -2889439, -5846524, 18389440, 13449153, --6240051, 24193014, -20359756, -10549513, 26591754, 12395812, 37288908, -20441360, -22858352, 5832566, --17370996, 18662170, 2062658, 6436546, 35458176, -19607062, -20866024, -7788387, 7416335, 7998303, -8980240, 8986682, 10324565, -10970957, 4385162, 1602023, -699543, -1323924, -7224672, -5881958, -10413148, -11235634, -476205, 2209761, -5314485, 1346472, -5449777, -447750, -502511, 2278480, --8852464, 4525822, 11281268, 3266323, 2799245, 12308303, 9186935, -905164, -11800423, 10880763, -2885144, -4164508, -8764955, 11297375, 1812476, 317291, 7020124, 8749385, -11190537, 5836861, -3802657, -8138426, -3234110, -12627741, 8066486, -1536525, -14253923, -7118909, 3527779, 29916594, -16939888, -2763812, 40373228, -4658966, 16525960, -19099720, 23525146, 22255984, -2118493, -17865454, -1790465, 6454262, -10075993, 10555419, -14660334, -242666, -4578972, -4786204, -16650514, -12108587, --7636452, -1021129, -5469104, -13008382, 19192598, 13236552, 3467649, -5407364, 3175055, 18575734, -8634495, 13647795, 8476118, -10179072, -15855946, 31769336, -4285841, -17381196, -7368017, -7471096, --4280472, 22989886, 860604, -17735530, -6900939, -44074956, -10983305, -5173825, 27018028, 18740552, --53691388, -23076322, -13164075, -279710, 2552821, -21389474, 15606837, 8412230, 13563507, 26854284, --35273492, 34366716, 24542516, -11177116, -23737748, 1495186, -6030134, 9143449, 31148714, -16221555, --18292266, 25511032, -30205968, -33647312, -13702019, 3437048, -9794136, -36872296, -15070503, -11926050, -401043, 2015413, -10722386, -748935, 1414655, 438624, 2962454, -23309862, -8370892, -7725573, -1313723, 6507413, -1919850, -7457674, -4532264, 2472291, 11695733, 12703976, -1969779, -11044508, --3075734, 16164109, 752693, -4217121, 3161096, -21951040, -6675453, -10360535, 1232656, 3784403, --21505438, -21700860, 5184026, 18857590, -8332237, 12338367, 3580929, -6088653, -2005213, 5002027, -3552475, -1794760, 3526168, -632971, 28068148, 3775276, 10559177, -21904870, -34579320, 49984828, -25046638, 2274722, 3297998, -11239393, -29407104, 10333154, -2265595, 25245280, 5671505, 9377524, -27699854, 15315853, -279173, -2936684, 4713190, -16852914, -13835163, -17918604, -9968619, 16623134, --4502200, 1068910, 20812874, -3547643, 9160628, -28822452, -25859998, -17561048, 15039902, 6118181, --898722, 6885907, -9108015, -25912612, 32813014, -31081068, 14404247, 14813879, 11719355, 5223754, -19903952, -12765180, -31738734, 23548768, 66781908, -11733851, 32350768, -38788388, -20854214, 24015846, -14133664, -36010616, -10060961, -3018288, 31381178, -7759396, -3293703, -48974440, -31392990, -11236171, --35878548, 30100742, 32163936, 50610284, -44697724, 19278498, 5721970, -24899000, -1321239, -1167694, --51644296, 36929740, -15251966, 17441862, -5189394, 2883534, 70182448, -18914500, 24434606, 16068010, --16836808, 30540976, 92342, -5873905, 2002529, 7885560, 19870130, 12083354, 7992934, -687732, -18822694, -17503602, -8477192, 1480153, 4823785, 8674223, -4643934, 15089831, 2187749, 6706055, --2782602, 11432666, -803159, -16752520, 9793062, -20580410, -11992086, -4787278, 8987756, -2201708, -10700374, 24064702, 37354940, 26823682, 7563975, 17251274, -9786083, 8768176, -447750, -768799, --1395328, 3582003, -7514582, 10538776, -10030896, -44479220, -25451976, -774705, -6907918, -14810121, -5273146, 14535780, 1343251, -15662135, -943282, -15008226, 40893996, -12462384, 794569, 31255550, --1894081, -31774168, -22350472, -21674016, -9809168, -11474542, 34046744, 3684008, 5495948, 17182016, --9513889, -9403831, -5887327, -9590125, -20993800, -4762582, 39050916, 12783970, 9175661, -25910464, -9470403, 2175938, -18690088, -2031520, -9433359, 42661372, -33772940, -28905130, -10368051, 5435818, --10154913, 1426466, 11349988, -22011170, -6077916, 36153960, -29159606, 5225902, -7402376, -17522930, --30917322, -23404350, 1017370, -42753716, -51969640, 12426951, 10499584, 8444443, -46448996, 35894116, -43343736, -14642080, -12703440, 2824478, -1926293, -9686762, -24185498, 17548700, 65471944, 17133162, --16317118, 423054, 10303627, 21982716, 5816997, -38712688, -34720516, 37596532, -7285875, -15250892, --22715008, 7877507, 42765528, 13217225, -13653701, 7988639, -1761474, -7551090, -3844533, -2214056, -18876382, 10563472, -6537477, -10419591, 8499740, 5049808, -1676648, -4275640, 6862284, -10084583, -6229313, 16497506, -1583232, -9038222, -2799245, -5803038, -10011569, -18358838, 2628520, 14092325, --9449465, -11570105, 5689758, -14454712, 46708, -23540716, 11285027, 14723148, 37531036, -11932493, --5134634, -15531139, -15964393, 4523138, 8271570, 15637439, -1877438, -3370476, -15736760, 6341519, -3897683, 4731980, -4646618, -982474, 9900973, 11458973, -14221710, -37426344, 10340134, 14659797, --55488292, 30403536, 1290638, -15786152, 5302137, 20260434, -28684476, 17723720, -26636850, 7205345, --1557999, -13402445, -7469485, -3618510, -19615116, 14056354, 12276627, -558883, 6765111, 865436, -10858214, 14191646, 13704704, 20348482, 17464410, -10805064, 2710661, -22185654, 23516556, -18188650, -5749888, -3502009, 4785668, 1156420, -16820166, 15290084, -8531953, -16244640, 34068756, -27269284, -8178155, -7863012, -13565117, 13755170, -3561602, 4081830, 21223044, -25671020, 1026497, -31454192, --61982820, -1581622, 19732690, -7444252, 79639432, 16215649, -31143344, 8749385, -43444132, 15079093, -31051002, 36697276, -12637941, -7243999, -48299056, -55346024, -4677757, -34506840, 8151848, -2183454, --30138860, -7057705, -14936823, -32971390, 26984206, 53130892, -14940044, 3741990, 11436424, -14103599, -16412681, 20941724, -14585172, 2424509, 20938, -26468272, 13182865, 2221035, 8000451, 9668508, --18728742, 7306276, -9953587, -15015743, -17027934, 14433238, -10581189, 5925981, -16463147, -5941014, --1157494, -20051054, 19586662, -12716324, 3887482, 5974300, -18708878, -3058554, 14354854, -1719598, -2012192, 3188476, -5492727, 8827232, 18541910, -2240362, 10754598, 12703976, -15914464, -30154428, -10158671, 4199941, 17368310, 20832738, -27278948, -26776974, 4653597, -7870528, 4741644, 9076340, -4943508, -39546448, 8159364, -2888366, -23034984, 10358387, -14954539, -10118943, -18592376, 9470940, --20248624, 25924422, -2752537, 9588514, -5976447, 34825744, -9465034, 19117974, -311922, 22795538, --6367826, -11540040, 7449084, -13058311, -13779329, 1852205, 25956634, 16672526, -17676474, 18856518, --13260175, -20321638, 5719286, 27742804, -10687489, -11338714, 14843944, 6640557, -13841069, 1525787, -18882824, -7901129, -18187576, 9878425, 7563438, 11585137, 21260624, 4436701, -12855374, -4248797, -46719044, 49070000, -13590350, -40687836, 31162672, -13623636, 8775155, 4394826, 52605832, 7207492, --27340152, -10009958, -6644852, 1454920, 8119636, 12677133, 17078400, -20345260, 6501507, 4596689, -30485140, -7635915, 21470004, 23105850, 12776454, 11008001, 6637872, 18395882, -17683990, 19797652, -25190520, 18174154, 3047279, -35755604, -5367636, -23066658, 1042603, 15457587, 5173825, -7895224, --12584254, -7367480, -2032593, -927176, 6521371, -7420630, 1977833, -787053, -5639292, 10869488, -4206921, -9774272, -4642860, -2521683, 13258027, -22012, 2684892, -12816719, -9204652, -16997334, --8036958, -1051730, -1660005, 215822, -3009698, -15235323, 3875134, -5215164, -2545305, 2247342, --4301410, -227633, -13244069, -3153580, 500901, 194884, 227633, -3376381, -3379603, -1166084, --5284421, -7432978, 55439436, 23372138, -25103546, 6090801, -26223996, -14164265, -1843078, 9511205, --4227859, 20367808, -24256902, -715649, 9503152, -777926, 9884867, -1408212, 3437585, 2359011, --17396766, -5414343, 4512937, -16155519, -16352551, 1405528, 4151086, -11479911, 8196945, 7994008, --4897874, -8105677, -1343788, 1796907, -2893197, 6872485, 1714766, 5419712, -7189776, -3000035, -12649216, 40265, 613643, 6161131, -4137127, 6813429, -6514929, -11993159, -7846905, 12444668, --9904195, -7223598, 733903, -9751186, -10598906, 15133317, -15064061, 23905252, 5204427, -10557566, -10426033, 1687385, -17727478, 1575179, -3196530, -3075734, 8376797, -244276, -10412611, 20339354, --12210592, -4702989, 10492605, 3406446, -4450123, 548682, 3230889, -311922, -876710, -2075006, -4650913, 8464844, -345745, -14053670, 10059350, -7236483, -1108638, 12071006, -814433, -3662533, --513249, -10386305, 5016522, 3626563, -1178969, 253403, 4227322, -10113574, 718333, -3451006, -1001264, 4215511, 1054951, -4286914, 9917616, -15090904, 1957431, 1807644, -1097364, 1892470, --2248416, -8512088, 9386651, -4347581, 6698002, 133144, -1125281, 8888435, 3285650, -7402913, -2776160, -3722663, -3259880, 1722819, 5586679, 5735392, -2270427, -7308424, 3721052, -4150549, -5055714, -33692408, -40260488, 33934536, 138030048, 53842784, 63384592, 744103, -129016520, -95211368, --49600968, -75897440, 34105260, 65138012, 27015882, 115242024, 65383896, -4460324, 27218282, -58446452, --117563992, -47079284, -81627464, -13187697, 56721484, 47576428, 43279848, 71779104, 44463112, 12072616, -19850802, -5484137, -83632680, -37132140, -30062086, -115817552, 21548924, 15032922, -51282984, 83194056, -82553032, -2950643, 104424616, 51164336, -48380124, 32235340, -48099340, -100430296, -7873749, -60723860, --87679608, 15362024, 9467719, -5390184, 81905560, 78754128, 47201152, 70086888, 42762840, -27472222, --30714384, -54899884, -93744640, -69385736, -32965484, -31121870, 16892644, 52811456, 36272608, 58036284, -87954488, 34027416, -11503533, -11170136, -60749628, -49274548, 4553202, -56537876, -25542170, 30397094, -7582765, 38094212, 30831422, -15880642, 10304163, -3355443, -20959440, 4452808, -9340480, -9687836, -19468550, 6544457, 8259222, 25673704, -14840723, -5976447, 14081587, -19501300, -15810848, 7119982, --46176804, -7902740, 15870978, -37455872, 18251464, 23038204, 2499134, 58191440, 55586540, 12547210, -22572738, -16465831, -49649284, -25152940, -66085052, -75278432, -42556684, -18362596, 14221710, 71278200, -82874616, 86561304, 77101640, 43761960, -9618579, -48790292, -76794016, -107399952, -91669096, -50736448, --13107703, 42878268, 77457048, 77020040, 69096896, 44627396, -8495445, -14242112, -22263500, -33864208, --23936390, -21363168, -24946244, -13806172, -7085086, -6381248, 4862977, 14090714, 19130322, 24723442, -23032298, 17706540, 7861938, 628139, -9373766, -14001057, -18262200, -19474456, -19316616, -8223789, -614717, 6662568, 6604586, 9985262, 10718091, 11385421, 8237748, 2327336, -1110249, -702227, --4121558, -3486440, -3197603, -6143951, -7156490, -1592359, -2497524, -1760937, -1137630, -843424, -2638721, 7115150, 5375152, 5545340, 5408438, 3035468, 875636, -1122597, -5516349, -6068252, --6627672, -4920959, -2943663, -189515, 726923, 3082176, 4450123, 4684199, 2326799, 1520955, -382789, 314606, -493384, -860604, -1682017, -575526, -962610, -799938, -1381906, -1335735, --1725503, -949188, -1247151, 622233, 1688996, 3003793, 2822331, 2683818, 1402844, 962073, --914828, -1541356, -2136209, -2368138, -2803540, -1040993, -769336, 215822, 470836, 1174137, -947040, 1707786, 819265, 982474, 197032, 193810, -653909, -222801, -752693, -134755, --380641, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +2728378, -4322348, -1034013, -1574642, -177704, 6568079, 336618, -2756832, 3404299, 738734, +314069, 1185948, 685584, 95563, 4875325, 2806761, -3362423, -1244467, -419296, -1131187, +1340567, 2134062, 1371705, -1387274, -2160906, 853625, -4315906, -1908576, 3176128, 319438, +2550137, 1360968, -2124398, 1618666, -9127, -1805497, 4474819, -2981781, -1456531, 613107, +1515050, -2027225, -579821, -2927020, -5905043, 5526549, -1138166, -3023120, 286152, 5083631, +-32212, 1989644, -2545842, -1429687, -1072131, 1588601, -2021319, 4073240, 600222, 3679176, +-5324149, 2274185, -1411434, 921807, 2208150, -874026, -626528, -3868692, -10201, 2149631, +441845, -1050656, -221728, 1917703, -1032403, -1002875, 2924873, -1313723, 903017, -525597, +-215285, -3608846, -1536525, -956704, 1292785, -235149, -1663763, -242666, -369367, -987843, +932008, -1189169, 42413, 311922, 585189, 1026497, -471910, -846645, 889595, 223338, +-707596, 157840, 1542967, -177167, -192200, 668941, 15569, 247497, 217433, -448824, +-896574, -456340, 637266, -126165, 36507, 366683, -499290, 474594, -30065, -246424, +1692754, 13801877, 4707284, -1073205, 3714073, 208843, 6782827, 4291746, -972273, 3514357, +6088653, 8005819, -4733054, -4596152, 1944547, -1843615, -1561221, 5730023, 4597763, 4415227, +3120831, 609349, -198642, -1976222, 2161442, 1540283, 7258495, 754304, -176094, -3200288, +1496796, 2149094, -432718, -973884, -1156420, 1991254, -307090, -1154809, -2683281, 2844342, +-966905, -938450, 3999688, 5719286, -1488743, -680752, 3277597, 2967823, 5204427, 3253975, +1416802, 555661, 4428112, 2534568, -6150393, 24696, 1862405, -3514894, 72478, 595927, +-4393215, 2245194, -2143189, 3297461, -726923, -548145, 1744831, 585726, -3037616, -251256, +1655173, -574452, -767189, -857383, 304943, 3508452, 595390, -3496640, -856846, 844498, +-1069984, -428960, 5141613, -1027571, 605590, -587337, -1342714, 1185948, 1898376, -479963, +850404, 958851, -979789, 474594, 836445, 219580, -659814, -1794760, -587874, -1072668, +-532039, -113280, 551366, -317828, 667867, 398358, -182536, 4761508, -364535, -9010305, +-4183298, -1753957, -1941325, -4908074, -4494147, -2833605, 4886062, -5368709, -2496450, -2553895, +988379, 8131984, -1215476, -653372, 1997160, 4650913, -7116761, -1169305, 1460289, -3151969, +2521683, 3974992, -4385699, -278636, 572841, -2561411, -6458557, 1117765, -2716030, 869194, +-2500208, 3693135, -4457103, -4174171, -10254234, -2772938, 3535295, -579821, -3930432, -1947231, +-489089, -4134443, 214748, -702764, 2842195, 2234994, -1056025, 121333, -1043677, -4364224, +5327370, 919660, 3602941, -1327682, 19327, 928250, 1562831, 4114042, -1314260, -1002875, +1225139, -123480, 4505958, 2397129, -3883187, -1551557, -963683, -6166500, -685047, -589484, +3670587, -2368138, 3345780, 565862, -110059, -350577, -580894, -672699, 719407, -2493766, +1161789, -1441498, 1262184, 1061931, 490700, 299037, 3594351, 2623151, -651224, 3256122, +-435939, -1109175, -1029182, 629750, -225486, 2225330, -569620, 1385664, 1141924, -208843, +958851, -11274, 1003949, 973884, 297427, 327491, 1086627, 707596, -1464047, -822486, +-145492, 1803349, 2031520, -5906, -204011, 1085016, 19864, -686658, -19837380, -6172942, +-1780801, -1571958, -1686848, 7673496, -7086159, 3421478, -1677722, 1578401, -2047089, -1614371, +-5711770, 954020, -2102387, 450435, -8277476, 185220, -874026, -1458678, -164283, 1567126, +1219771, -765041, -594853, -3291556, 991064, -2640868, 1716376, 9664, 1461363, 5162551, +-1378148, -5890548, -2553895, -6900402, 927176, 1255204, -656056, 1205812, -2443837, 2323577, +1160715, -3053722, 234613, -8300561, -1800665, -5550172, 3011309, 5499169, -4869419, -374199, +1546188, 847182, -7954280, 1326071, 4044786, -3801583, -1840930, -9040906, 3040300, -1305670, +3709241, 6700686, 3790309, -5383742, 1112933, 1273995, 267899, -5987185, 1518808, -2552821, +3959423, -1612223, -220117, 1870458, 1599339, 4711043, 5334350, 3665218, -297427, 1354525, +3168075, 1613297, -3183645, -652298, -2131378, -2119566, 941135, -92879, 493384, 50466, +-650688, -178778, 1907502, -636192, -654983, 54224, -568546, -1420560, 1728724, 66572, +808528, 2120103, -284005, 235149, -1688996, 1075352, 721555, 170725, -1697586, 554051, +4832, 1122060, -12294344, 1388348, 2157147, -4355097, -580357, 12023761, 9273908, 5092221, +-1376000, -2136209, 5927055, 3780108, 1873143, 2298881, -4847408, 1686312, 427349, 5676336, +-5417565, -2418604, -1065689, 750009, -1140314, -6166500, -4248797, -4327717, -5203353, 2900177, +3421478, 2267743, 1494649, 154082, 1458678, -738198, -712965, 435939, -1920924, -494458, +2675765, 2164127, -4263829, -4663261, -484794, -4677220, 2779381, -1389422, -8028905, 1008780, +4009889, 5796059, 3929895, 269509, 3709778, -5648956, -1881733, -2496987, -451508, 448824, +2500745, -1914482, -5271536, 6400575, -5820755, -2712809, 3870839, 9233106, 2112050, 1866163, +-9027484, 9750650, 1098438, 6811282, 10349261, -2247342, 1046898, 1265405, -4327717, 8676371, +1952600, -2775623, 2312303, -1154273, 4187056, -7041599, -3851512, -7196218, -1479079, -3162707, +2833605, -1786170, 1162862, -3345780, -945430, -610959, -2258079, -95026, -898185, 943282, +-237297, -896574, -583042, -376883, 1633698, 515396, -1388885, -2898566, 1567126, 1690070, +215285, 49929, -135291, -1171989, 433792, -767189, 1700807, 387621, 917512, -974958, +-1279363, -2290291, 1267015, 18491982, 13105019, -4699768, -6756521, 10250476, 6760279, 10792716, +15961709, -8057896, 5572183, 2628520, 4679904, 2050847, 2838437, 6559489, 1702955, 6700149, +288837, -4310537, 1873143, -1401233, 2335389, -812823, 12414603, 2072322, 2791192, 1661079, +559420, 4308926, 1907502, 242666, -721555, 3082713, -2314987, 5897527, -4532264, 7103339, +-3286724, 4293894, 2324651, 2622615, 2160906, 10435160, 8056285, 496606, -2172180, -5664525, +6262599, -6903086, 1809255, -3019899, 3121904, 6534256, 865436, -10942503, -8800388, 916976, +-5444408, -5991480, -3374771, -6907918, 2545842, 11975443, 6091874, -4409858, 360777, 1382443, +-3053722, -3528853, -498753, 5881958, 6626061, -6937983, 3375308, 7677791, 1615982, 2527052, +3794067, 5983427, -941672, -4083440, 1680406, -1757715, -258235, -3917547, 3714073, 5657546, +957778, 1014686, 875636, -3964792, -481573, -65498, -347355, 403190, -529355, 654446, +582505, 1940788, 300648, -31675, 277562, 1248762, 2237141, 1118839, 2364380, 1241246, +515933, 670015, -381715, -3689377, -3729105, 783295, 2921115, 727997, -738198, 693100, +-390842, 1786706, -1316944, -1303523, -2293513, 1053341, 8210904, 1506460, 11864310, -1090385, +-95563, -3973382, -3121368, 3914326, 8987219, -2659659, 2414845, 590021, 9731859, 3958886, +-4468377, -4216048, 676994, 1982664, 8846022, 8582955, 13183402, 2340220, 3698504, -2354179, +5398774, 6044630, -2324651, -3063386, 4762045, -3670050, -4994510, 4684736, 1466195, -5873905, +-7109782, 10826002, 5488968, -408022, 6972343, 1314260, -4831302, 10281078, -2382096, 276489, +-214748, 2641405, -3723737, 2641405, -3730179, 2570538, -3462818, 3125126, -2826089, 4265440, +-3572876, -3699041, 9645960, -12071006, 710280, 1395328, -4101694, 772557, -13493714, -6680822, +6497749, -5426155, 4004520, -1470489, 2712272, 1144609, 2329483, 1393180, -6102075, 3268470, +-3534221, -440234, -7761543, -4253092, -1920387, -1893007, 2250026, 7314330, 4280472, -5946919, +2312840, 1127429, 80531, -2873333, 431644, -567473, 1469416, 657130, -1476395, -2030983, +-759136, -580357, -1115618, 4225711, 812286, -1647657, -890132, 996969, -1720671, 164283, +877247, 39728, 255551, -4502737, -1795296, -1133871, 700080, -1262720, -158914, 2826625, +-227633, -767189, -811749, 290447, 898722, -9637907, -8232916, -68183, 3626563, 6692633, +-7795366, 2220498, -7001334, 5782100, 4495220, -9711458, -1966558, 1006633, -11308649, -6488085, +6948720, -927713, -452582, 1603097, -676457, -11914776, 10903311, 667867, -7657927, -3777961, +1483374, -1028108, -7359964, -2247879, -4214437, 1198296, -333934, -2388002, 2408403, -10332081, +-4543002, 2632815, 13507672, -2281702, -7881802, -5628018, -4373888, 9141838, -9734543, -1981591, +-644245, -10467372, -12975633, 3173444, -8983998, -1460826, 1380832, 6832219, 3869229, 535797, +1520418, 8163659, -3503620, -2582886, 12174622, -8135205, 6357626, -2807835, -3000572, -1260036, +-1432372, 12934294, 335007, 5015448, -13303124, -9700184, 357556, -1955821, 14936823, 460098, +10195179, 4258460, 12741020, 7689065, -1893007, -8866423, -3293166, 5925981, 2624225, 3995393, +-4878009, -5554467, -1501628, -1883880, 2662343, -1386738, -3548180, -668941, -843424, -56371, +-413927, 458488, -1435056, -1999844, 2449742, -199716, 176631, -703838, -1054951, -867583, +680752, 2041183, -2150705, 463320, -1313186, -1999307, 1414655, -614717, -1822140, -2177549, +-403727, 1990717, 223875, 229781, 775778, 3616899, -3073049, -2595771, -1560684, 264677, +1481227, -16028818, 1590212, -1646046, 10969883, 1185948, -11524471, 13729937, 4494147, -8193187, +-17735530, -7493644, 17609902, 785442, -2189360, -3029563, 1848983, 489089, 5455682, 2777233, +5841156, -1353989, 10402411, -5448703, -12185359, 420907, 600222, -3008088, -411780, 4479114, +-3106335, -1970853, -1033477, 9667971, 7616588, 3822521, -690953, -13412646, -226560, -802622, +-525597, -2320893, -186294, -5933498, -10824391, -1812476, 7493108, 7148973, -2705830, 7688529, +-2491618, 3255048, 8601746, 8086887, -18089866, 6095096, 6559489, 2592013, -4393215, -16005732, +9658845, 5568425, 3101503, -5788542, -3148211, -6540162, 3579318, -7243463, -1303523, 2684, +6500970, -4148402, 3317862, 1668058, -11601244, -1727114, -7750806, 12602508, 5917928, -15084999, +-3160559, 11724187, 5917391, -6289443, -3067144, -6934762, -2290828, 3411815, -2071785, -949725, +-2593087, -3398393, -5685463, 973347, 449898, -1956895, -579821, 2785823, 1963874, -3722126, +-1276679, 2508261, -704375, 1887101, -2375117, -1777580, -471373, 399969, 3039763, -3374234, +-2314987, 1500554, -3693135, -424665, -2611340, 1437740, -2078764, 3392487, -1267015, -769873, +-1838783, 2110440, 1493575, 3880503, 1133871, 9986336, 12135430, 12493523, 9516037, 12251931, +-15390478, -10020696, -5324149, -4956929, -7379291, -5608154, -12352863, -4151086, 812286, 7386807, +-24696, -7025493, -347355, 7383586, 343061, -6056441, -2873333, 16752520, 1609002, 6322192, +1914482, 6947110, 1395328, 2281702, -10294500, 5775658, 373125, 2414845, -10788421, 3768834, +-16563005, 32212, -5246303, 4143033, -1525787, -12052752, -302795, -11995844, 2196339, -9960566, +9123047, -5141076, 14347875, 490163, -272730, 7277285, 1547799, -2231236, -2118493, 2972654, +-4912369, 3435974, 8854075, 4578972, -6593849, -3401077, 18983218, 1504312, 15142444, -13986561, +-2952253, -1433445, 11017665, -12194486, 1733019, 5927055, -12182138, 8571144, -7649337, 2290828, +11850352, 1343788, 6678674, 3223910, 15485505, 6768869, -6414534, -4987531, -6178848, 1006096, +599148, 6582038, -3862786, -663572, 4258460, 374199, 3287261, 4536023, 630286, -3510599, +4297652, 3365644, -405338, 1413044, 1451699, -1500017, -1271847, -4999342, 3409667, -2350421, +-2265595, -912144, -2627983, 2576444, -1785096, -523986, -2815351, -607201, -623844, 3668439, +2570001, -28454, -559420, -121870, 2047089, 2545305, 2171643, 4690105, -511638, -1702418, +-4510253, -15489800, 2456721, 14837501, 11341935, 12103755, -3919158, -3267396, 3210488, -2243047, +15291157, 4951561, 7366406, 12644921, -767189, 4667019, -8506183, 12599287, 6510634, -3300146, +-7630547, -7347079, 8689793, -14841796, 5924908, 8396124, -5996311, -8322573, -4535486, 7830263, +3127273, -3073586, -5237713, 25770, -8925479, -13743358, 2650532, -13191992, -19387482, -2530810, +916439, 19738596, -8385924, -6820408, 8979166, 14529337, 14766098, 7718593, -732292, 3328063, +-6143951, 1070521, -6447283, 16261283, 14548665, 9280351, -511638, -16732656, 47245, -14296336, +15868830, 12168179, 7734699, -11870753, 9904195, 5516349, 6899865, -2249489, -9885941, -7325067, +-7881802, 2691334, -11136313, -20672752, 4183835, 13971529, 7531762, 13719199, -4066260, -3808562, +14005351, 4606353, 1991791, 9212168, 3168612, 252329, 8064875, 4989679, -626528, 3621194, +3559991, 2081985, -2523830, -4563940, -5916318, 1610613, 3992709, 2257005, 8129300, 209917, +5823976, -1799054, 2450816, 4536559, 728534, -2064806, -1133335, -6645388, -5611375, 2026688, +1554778, 2675765, 7071664, 1054951, 5401995, -1974074, -1054415, 947040, -4998268, -3983582, +-1373853, -4273493, 2155537, -1386738, 1767916, 3933116, 5571110, 7875897, 12444131, 26910654, +11894375, 9415642, 8695698, -16604344, -2662343, -6053220, 21210696, -21572010, -20540144, 5902359, +13826037, -361851, 16920024, 15422691, -789737, 5950677, -10239202, -7323993, 16080894, -6339909, +11031623, 3945464, -7235946, -3729642, -3240016, -3537443, -7547332, 6286759, 6636798, 5615670, +464393, -8362302, -10834055, 13965623, -13780403, 10817949, 935766, -16893716, 8461622, 16136729, +-389768, -4360466, -2107755, 1327145, 864899, 11014981, -642635, -8249559, -3512747, 9374840, +-17116518, 4133906, -2924336, 13881871, 14562087, 9783399, 11383811, 15090904, 10766409, 3956739, +-9865540, -11028402, 5271536, 7370701, -598074, 6387153, 8621073, 22991496, -13033615, 14554570, +-8686034, -5490579, 15738908, 2426657, -9507984, -8210367, -8777839, -14155138, -4908074, -6910066, +11276974, 297427, -9134859, 4988068, 3084324, -1915019, 5258114, -10788421, 6996502, 483184, +-1075352, -1139777, 5936719, 1059246, 1517197, 6285148, -2666638, 1046898, 4513474, -6897718, +4819490, 304943, 1757715, -3070365, 3831111, -1358283, 397284, 5367099, -39728, -1264331, +1303523, 3628174, 4485557, 7611756, 6124624, 2280628, -3572339, -2896956, -10849624, 2410014, +-9045738, -2636573, -3972308, -3676492, 4199941, 1643899, -4349728, -17884244, -3197603, 10413685, +-12848932, 411780, -8085813, -14127758, 20549272, 17574470, 14686641, 6967511, 3824669, 5784784, +15084999, 8338142, 15465103, -5726802, 12952548, -9760850, 15687905, 21079162, 13211319, 10537165, +5360119, 10883447, 10958609, -3257733, 21811454, 5238250, -13164075, 6241661, -13327820, -9163313, +-2736431, -20721070, 349503, -4419522, -5624797, -10075456, -5245229, -2896419, -653372, -2046552, +892816, 863288, -11899744, -7858180, 2457795, -6284611, 4932770, 20401094, -10294500, -835908, +-1945620, 748398, -9760850, 5250598, -4692252, 15789374, 3355980, 9427990, 14766098, 2514167, +-986769, -9751186, -21696028, 2855080, 16140487, 11710765, -3060164, -14464913, 12175159, 1272921, +7332583, -18517214, -13290776, -12197707, -18356690, -11374684, -13430900, 6242198, 1982127, 4685273, +6123013, 8460012, -4146791, 8610873, 9804337, 295816, 5270462, -3161633, -6513318, -6717866, +-7051263, -2836289, -5141076, -328028, 1549410, -693637, 464930, 1292785, -5965173, -5530308, +-9444096, -3250753, -2190433, -5268315, 2077154, 769336, -2789581, -8556649, -3929358, -3167002, +-2202781, 7113540, 2180233, -3126199, -3937948, -1449552, -10248866, 2784750, -2085207, 5284958, +609885, -3240016, -6039798, 6295885, -4139812, 9009768, -30701500, -19654844, -9352291, 21930640, +15969225, -11892764, 13681618, 12348031, 10527502, 10308995, -10309532, 1038308, 5938329, -10254771, +-30947924, -5662378, -8601746, -18981072, 1693828, -6489159, -4876399, 5778342, 3424700, -4242354, +883153, 14472966, 15475841, -28539520, 6747394, 1423782, 13156559, 4461398, 682363, -17789218, +5381057, -4587025, -4975720, -12247636, -9129490, 22808424, -10421201, -449898, 2668785, -6080063, +25210384, 11955578, -11310796, -6848862, -19837380, -2898566, 18830748, 5501316, 5645735, -6253473, +11470784, -2769180, -5060545, 10580652, -6376953, 17574470, -4225174, 13079249, -26850524, -9117679, +15244986, 3716757, -2554969, 4259534, -29707752, -14057428, 4401268, -11871826, 4421669, 1147830, +3182571, 18107582, -6907918, 7273527, -1552631, -14816027, -2683281, 11119670, 16057272, -575526, +-6910066, -12570832, 212064, -17528298, -5823439, 1453846, 20411832, 18281528, 2357937, 7645579, +2156074, -3133716, 10030359, 7631083, -4199405, 8381092, 6217502, 3318936, -7244536, -562104, +-3840238, 6095096, 4132296, 5413270, -634581, -8449274, 7708393, 286152, -4088272, -8232379, +-583042, -736587, -7896298, 5322538, -5797669, -8979166, 9846749, -4100620, -3608846, -4579509, +2030983, 1349694, 7841000, 1689533, -1591822, 3256122, 4763656, -9100499, 2259153, 2474975, +-3701188, 5568425, -13370770, -38436736, -3257196, -4641249, -4161823, 5878737, -15334644, 30113626, +-5499169, 1320703, 33229088, -39130372, -4067871, -7676717, -3728569, -44818520, 2499134, -6965900, +-8659728, 15152645, -15379204, 2319282, 2937221, 7199976, -1408212, -16369194, 11169599, -10769094, +23280334, -4058744, -26388280, -1999844, -886911, -13375602, -26585848, 11883101, 13543106, -22324704, +18185966, -20197620, -15653545, -9700721, 1763621, 1549946, 3006477, 12786118, -2430952, -12331925, +-28983514, 5836861, -39183524, -20908974, -13464186, -31493922, -18590766, -9140227, -1913945, -14833206, +22468584, 23010824, 5151277, -7052337, 25527138, 11411191, -2889439, -5846524, 18389440, 13449153, +-6240051, 24193014, -20359756, -10549513, 26591754, 12395812, 37288908, -20441360, -22858352, 5832566, +-17370996, 18662170, 2062658, 6436546, 35458176, -19607062, -20866024, -7788387, 7416335, 7998303, +8980240, 8986682, 10324565, -10970957, 4385162, 1602023, -699543, -1323924, -7224672, -5881958, +10413148, -11235634, -476205, 2209761, -5314485, 1346472, -5449777, -447750, -502511, 2278480, +-8852464, 4525822, 11281268, 3266323, 2799245, 12308303, 9186935, -905164, -11800423, 10880763, +2885144, -4164508, -8764955, 11297375, 1812476, 317291, 7020124, 8749385, -11190537, 5836861, +3802657, -8138426, -3234110, -12627741, 8066486, -1536525, -14253923, -7118909, 3527779, 29916594, +16939888, -2763812, 40373228, -4658966, 16525960, -19099720, 23525146, 22255984, -2118493, -17865454, +1790465, 6454262, -10075993, 10555419, -14660334, -242666, -4578972, -4786204, -16650514, -12108587, +-7636452, -1021129, -5469104, -13008382, 19192598, 13236552, 3467649, -5407364, 3175055, 18575734, +8634495, 13647795, 8476118, -10179072, -15855946, 31769336, -4285841, -17381196, -7368017, -7471096, +-4280472, 22989886, 860604, -17735530, -6900939, -44074956, -10983305, -5173825, 27018028, 18740552, +-53691388, -23076322, -13164075, -279710, 2552821, -21389474, 15606837, 8412230, 13563507, 26854284, +-35273492, 34366716, 24542516, -11177116, -23737748, 1495186, -6030134, 9143449, 31148714, -16221555, +-18292266, 25511032, -30205968, -33647312, -13702019, 3437048, -9794136, -36872296, -15070503, -11926050, +401043, 2015413, -10722386, -748935, 1414655, 438624, 2962454, -23309862, -8370892, -7725573, +1313723, 6507413, -1919850, -7457674, -4532264, 2472291, 11695733, 12703976, -1969779, -11044508, +-3075734, 16164109, 752693, -4217121, 3161096, -21951040, -6675453, -10360535, 1232656, 3784403, +-21505438, -21700860, 5184026, 18857590, -8332237, 12338367, 3580929, -6088653, -2005213, 5002027, +3552475, -1794760, 3526168, -632971, 28068148, 3775276, 10559177, -21904870, -34579320, 49984828, +25046638, 2274722, 3297998, -11239393, -29407104, 10333154, -2265595, 25245280, 5671505, 9377524, +27699854, 15315853, -279173, -2936684, 4713190, -16852914, -13835163, -17918604, -9968619, 16623134, +-4502200, 1068910, 20812874, -3547643, 9160628, -28822452, -25859998, -17561048, 15039902, 6118181, +-898722, 6885907, -9108015, -25912612, 32813014, -31081068, 14404247, 14813879, 11719355, 5223754, +19903952, -12765180, -31738734, 23548768, 66781908, -11733851, 32350768, -38788388, -20854214, 24015846, +14133664, -36010616, -10060961, -3018288, 31381178, -7759396, -3293703, -48974440, -31392990, -11236171, +-35878548, 30100742, 32163936, 50610284, -44697724, 19278498, 5721970, -24899000, -1321239, -1167694, +-51644296, 36929740, -15251966, 17441862, -5189394, 2883534, 70182448, -18914500, 24434606, 16068010, +-16836808, 30540976, 92342, -5873905, 2002529, 7885560, 19870130, 12083354, 7992934, -687732, +18822694, -17503602, -8477192, 1480153, 4823785, 8674223, -4643934, 15089831, 2187749, 6706055, +-2782602, 11432666, -803159, -16752520, 9793062, -20580410, -11992086, -4787278, 8987756, -2201708, +10700374, 24064702, 37354940, 26823682, 7563975, 17251274, -9786083, 8768176, -447750, -768799, +-1395328, 3582003, -7514582, 10538776, -10030896, -44479220, -25451976, -774705, -6907918, -14810121, +5273146, 14535780, 1343251, -15662135, -943282, -15008226, 40893996, -12462384, 794569, 31255550, +-1894081, -31774168, -22350472, -21674016, -9809168, -11474542, 34046744, 3684008, 5495948, 17182016, +-9513889, -9403831, -5887327, -9590125, -20993800, -4762582, 39050916, 12783970, 9175661, -25910464, +9470403, 2175938, -18690088, -2031520, -9433359, 42661372, -33772940, -28905130, -10368051, 5435818, +-10154913, 1426466, 11349988, -22011170, -6077916, 36153960, -29159606, 5225902, -7402376, -17522930, +-30917322, -23404350, 1017370, -42753716, -51969640, 12426951, 10499584, 8444443, -46448996, 35894116, +43343736, -14642080, -12703440, 2824478, -1926293, -9686762, -24185498, 17548700, 65471944, 17133162, +-16317118, 423054, 10303627, 21982716, 5816997, -38712688, -34720516, 37596532, -7285875, -15250892, +-22715008, 7877507, 42765528, 13217225, -13653701, 7988639, -1761474, -7551090, -3844533, -2214056, +18876382, 10563472, -6537477, -10419591, 8499740, 5049808, -1676648, -4275640, 6862284, -10084583, +6229313, 16497506, -1583232, -9038222, -2799245, -5803038, -10011569, -18358838, 2628520, 14092325, +-9449465, -11570105, 5689758, -14454712, 46708, -23540716, 11285027, 14723148, 37531036, -11932493, +-5134634, -15531139, -15964393, 4523138, 8271570, 15637439, -1877438, -3370476, -15736760, 6341519, +3897683, 4731980, -4646618, -982474, 9900973, 11458973, -14221710, -37426344, 10340134, 14659797, +-55488292, 30403536, 1290638, -15786152, 5302137, 20260434, -28684476, 17723720, -26636850, 7205345, +-1557999, -13402445, -7469485, -3618510, -19615116, 14056354, 12276627, -558883, 6765111, 865436, +10858214, 14191646, 13704704, 20348482, 17464410, -10805064, 2710661, -22185654, 23516556, -18188650, +5749888, -3502009, 4785668, 1156420, -16820166, 15290084, -8531953, -16244640, 34068756, -27269284, +8178155, -7863012, -13565117, 13755170, -3561602, 4081830, 21223044, -25671020, 1026497, -31454192, +-61982820, -1581622, 19732690, -7444252, 79639432, 16215649, -31143344, 8749385, -43444132, 15079093, +31051002, 36697276, -12637941, -7243999, -48299056, -55346024, -4677757, -34506840, 8151848, -2183454, +-30138860, -7057705, -14936823, -32971390, 26984206, 53130892, -14940044, 3741990, 11436424, -14103599, +16412681, 20941724, -14585172, 2424509, 20938, -26468272, 13182865, 2221035, 8000451, 9668508, +-18728742, 7306276, -9953587, -15015743, -17027934, 14433238, -10581189, 5925981, -16463147, -5941014, +-1157494, -20051054, 19586662, -12716324, 3887482, 5974300, -18708878, -3058554, 14354854, -1719598, +2012192, 3188476, -5492727, 8827232, 18541910, -2240362, 10754598, 12703976, -15914464, -30154428, +10158671, 4199941, 17368310, 20832738, -27278948, -26776974, 4653597, -7870528, 4741644, 9076340, +4943508, -39546448, 8159364, -2888366, -23034984, 10358387, -14954539, -10118943, -18592376, 9470940, +-20248624, 25924422, -2752537, 9588514, -5976447, 34825744, -9465034, 19117974, -311922, 22795538, +-6367826, -11540040, 7449084, -13058311, -13779329, 1852205, 25956634, 16672526, -17676474, 18856518, +-13260175, -20321638, 5719286, 27742804, -10687489, -11338714, 14843944, 6640557, -13841069, 1525787, +18882824, -7901129, -18187576, 9878425, 7563438, 11585137, 21260624, 4436701, -12855374, -4248797, +46719044, 49070000, -13590350, -40687836, 31162672, -13623636, 8775155, 4394826, 52605832, 7207492, +-27340152, -10009958, -6644852, 1454920, 8119636, 12677133, 17078400, -20345260, 6501507, 4596689, +30485140, -7635915, 21470004, 23105850, 12776454, 11008001, 6637872, 18395882, -17683990, 19797652, +25190520, 18174154, 3047279, -35755604, -5367636, -23066658, 1042603, 15457587, 5173825, -7895224, +-12584254, -7367480, -2032593, -927176, 6521371, -7420630, 1977833, -787053, -5639292, 10869488, +4206921, -9774272, -4642860, -2521683, 13258027, -22012, 2684892, -12816719, -9204652, -16997334, +-8036958, -1051730, -1660005, 215822, -3009698, -15235323, 3875134, -5215164, -2545305, 2247342, +-4301410, -227633, -13244069, -3153580, 500901, 194884, 227633, -3376381, -3379603, -1166084, +-5284421, -7432978, 55439436, 23372138, -25103546, 6090801, -26223996, -14164265, -1843078, 9511205, +-4227859, 20367808, -24256902, -715649, 9503152, -777926, 9884867, -1408212, 3437585, 2359011, +-17396766, -5414343, 4512937, -16155519, -16352551, 1405528, 4151086, -11479911, 8196945, 7994008, +-4897874, -8105677, -1343788, 1796907, -2893197, 6872485, 1714766, 5419712, -7189776, -3000035, +12649216, 40265, 613643, 6161131, -4137127, 6813429, -6514929, -11993159, -7846905, 12444668, +-9904195, -7223598, 733903, -9751186, -10598906, 15133317, -15064061, 23905252, 5204427, -10557566, +10426033, 1687385, -17727478, 1575179, -3196530, -3075734, 8376797, -244276, -10412611, 20339354, +-12210592, -4702989, 10492605, 3406446, -4450123, 548682, 3230889, -311922, -876710, -2075006, +4650913, 8464844, -345745, -14053670, 10059350, -7236483, -1108638, 12071006, -814433, -3662533, +-513249, -10386305, 5016522, 3626563, -1178969, 253403, 4227322, -10113574, 718333, -3451006, +1001264, 4215511, 1054951, -4286914, 9917616, -15090904, 1957431, 1807644, -1097364, 1892470, +-2248416, -8512088, 9386651, -4347581, 6698002, 133144, -1125281, 8888435, 3285650, -7402913, +2776160, -3722663, -3259880, 1722819, 5586679, 5735392, -2270427, -7308424, 3721052, -4150549, +5055714, -33692408, -40260488, 33934536, 138030048, 53842784, 63384592, 744103, -129016520, -95211368, +-49600968, -75897440, 34105260, 65138012, 27015882, 115242024, 65383896, -4460324, 27218282, -58446452, +-117563992, -47079284, -81627464, -13187697, 56721484, 47576428, 43279848, 71779104, 44463112, 12072616, +19850802, -5484137, -83632680, -37132140, -30062086, -115817552, 21548924, 15032922, -51282984, 83194056, +82553032, -2950643, 104424616, 51164336, -48380124, 32235340, -48099340, -100430296, -7873749, -60723860, +-87679608, 15362024, 9467719, -5390184, 81905560, 78754128, 47201152, 70086888, 42762840, -27472222, +-30714384, -54899884, -93744640, -69385736, -32965484, -31121870, 16892644, 52811456, 36272608, 58036284, +87954488, 34027416, -11503533, -11170136, -60749628, -49274548, 4553202, -56537876, -25542170, 30397094, +7582765, 38094212, 30831422, -15880642, 10304163, -3355443, -20959440, 4452808, -9340480, -9687836, +19468550, 6544457, 8259222, 25673704, -14840723, -5976447, 14081587, -19501300, -15810848, 7119982, +-46176804, -7902740, 15870978, -37455872, 18251464, 23038204, 2499134, 58191440, 55586540, 12547210, +22572738, -16465831, -49649284, -25152940, -66085052, -75278432, -42556684, -18362596, 14221710, 71278200, +82874616, 86561304, 77101640, 43761960, -9618579, -48790292, -76794016, -107399952, -91669096, -50736448, +-13107703, 42878268, 77457048, 77020040, 69096896, 44627396, -8495445, -14242112, -22263500, -33864208, +-23936390, -21363168, -24946244, -13806172, -7085086, -6381248, 4862977, 14090714, 19130322, 24723442, +23032298, 17706540, 7861938, 628139, -9373766, -14001057, -18262200, -19474456, -19316616, -8223789, +614717, 6662568, 6604586, 9985262, 10718091, 11385421, 8237748, 2327336, -1110249, -702227, +-4121558, -3486440, -3197603, -6143951, -7156490, -1592359, -2497524, -1760937, -1137630, -843424, +2638721, 7115150, 5375152, 5545340, 5408438, 3035468, 875636, -1122597, -5516349, -6068252, +-6627672, -4920959, -2943663, -189515, 726923, 3082176, 4450123, 4684199, 2326799, 1520955, +382789, 314606, -493384, -860604, -1682017, -575526, -962610, -799938, -1381906, -1335735, +-1725503, -949188, -1247151, 622233, 1688996, 3003793, 2822331, 2683818, 1402844, 962073, +-914828, -1541356, -2136209, -2368138, -2803540, -1040993, -769336, 215822, 470836, 1174137, +947040, 1707786, 819265, 982474, 197032, 193810, -653909, -222801, -752693, -134755, +-380641, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 547608, -3428458, -4665408, -3816615, -642635, 3676492, 5444408, -2568927, 3183645, -1767379, -4513474, --1250909, -2518462, 1476932, -612033, -2196876, 2015950, 3032784, 693100, 3668439, -6729677, --7293928, -4668630, 667867, -6979, -1255204, 362925, 2213519, -717260, 2992519, 2491618, --3192235, 1222455, -248034, 3899830, 3576097, 1364189, -3820374, 2509335, -2279554, 1281511, -2490007, -6076305, 6642167, 9780714, 1269163, 4438312, -3607236, -715649, -3386582, -1743757, -3016678, -1000191, -3502009, -914828, -2208687, 1694902, -2153926, -1938104, 186294, 1797444, --1787780, -1996086, -879931, 3482682, 3115999, -2629594, -981400, -3109556, 708670, 4134980, -1136556, -1498407, -1979980, 1562831, -563714, -2797634, -1035624, -1884954, -282931, -1005022, -1620276, 1538672, 810138, -890669, -1255741, 2792266, -387084, 769336, 1431835, -401579, --49392, -563178, 837519, 125628, 202400, -799938, 104153, -244276, -819265, 53687, --136365, 614180, 1452236, -799401, 329102, -143345, 700617, 887448, -223875, -344671, --195958, -29528, -794032, -312459, 337155, -283468, 134755, -1074, 637803, 157840, -72478, 15035070, 6910603, -514859, 3140158, 2863670, -3610994, -1760937, 4161823, 1902134, -4530117, -3291019, 6590091, 2484639, -6516539, 5173288, 268435, -110595, -3442953, 3787088, --7044820, -6032282, -1301375, -2140504, -1176821, -2150168, 806917, -1302449, -2934537, -2108292, -2439542, -2665027, 1700807, 1087701, 675921, -2942590, 4130148, -8657043, -1534914, -40265, --1530082, -1081795, 734439, 1624571, -2792266, 2217277, -3380676, 3229816, 1006633, 711891, -3309809, -2338610, -579284, 1353452, 5186173, 1293859, 2166811, -1192927, -4529580, -6298570, -1143535, 3428458, 4452271, -1826435, -7065758, 1053878, -2899103, -1961190, -1648194, 1959579, -189515, 6897718, -222265, 2325188, 1334661, -1038845, -1811939, -1917703, -7218767, -2110977, --1195075, -974958, -1395864, 1344325, 3590593, 1012002, 3405372, -33823, -340913, -1089848, -923955, 1251983, -361314, -1391033, 1196685, -714038, 460635, -605054, 614180, -1029718, --655519, 981937, 300648, 556198, -390305, 344134, -676994, 8123931, 1855963, -6810208, --7783018, 2151242, -2389076, -6400038, 7269232, -3557307, -1216550, -972273, 5695127, 1226750, --3338263, 4035659, -3134789, 6087580, -8407935, -5510980, 6653978, -6947647, -7059853, -2804614, -5682779, 2520072, 2706903, -652298, 5088463, 3114388, -559420, -6738804, 1797444, -1863479, -2400350, 2157147, 1809255, 5875516, 1539746, -5764920, 498753, 4031901, 5873368, 2000918, --3268470, -755914, -4805532, 2048163, -8498130, -323196, 9105868, 497142, 944893, -4682051, --5839545, 896574, 1231045, 6728603, -1500017, 583579, 671089, -989990, 653909, 2238752, -362925, 4733054, -1320703, 3144453, 427886, 851477, 530965, 5550709, 193810, -772020, -987306, -1182190, -3790846, -1997160, -3907347, -88047, 6946573, 1466195, -2326262, -784368, --4027606, 2268280, -3162707, -2192581, 717796, 116501, 193274, -1800665, -2589865, -527207, -589484, -857383, 1420024, -163746, -45634, 1430224, 852014, 1440425, 1147830, -17180, -429497, -1171452, 20938, -1039919, -1160178, 781147, 891743, 1650878, 1154273, -803696, --251792, 871878, -689342, -1266479, 667331, 177704, 9664, 161061, -18677202, -12108587, --2736968, 2077154, 2938831, 365609, -83215, -7059853, -498216, -1500017, -1248762, 204011, --1868848, -772557, -5318244, 2775086, -11124502, -4000225, 932545, -2177549, -3441880, -1894081, --6356015, -3150359, -2676302, -2946885, 1332514, -4833986, -2741800, 6080600, 3876745, 448824, -2840047, 2171643, -2039573, -4007741, 2340757, 9058086, 961536, 1170379, -3616899, -3138547, -2589865, -7684770, -4173098, 8600135, -7889318, 2404108, -1928977, -3907347, 1745904, 616328, --2240899, 547071, 1249836, -2669859, -39192, -496606, 5216238, 4725001, 626528, 1302449, -2224256, -114890, -1096827, -1782411, -10932302, 5301601, 3213173, -2918967, -187368, -4507032, --1307281, 687195, -3395709, 1549410, -4105452, -2203855, -4768488, -6926172, 4510253, -1284732, -132607, -5847598, -1544041, 802622, 902480, -1510755, -346282, -283468, -1700270, -3006477, -411243, -1523640, 1235877, -201327, -845572, -586263, -396748, 1531693, 180926, -2216740, -348966, -639413, -266825, 765041, 258235, -548682, 452582, -1733019, 869731, -1572495, --583042, -2055142, -16143708, 2534568, 3719442, -957778, -1463510, -8850854, -3696893, 2500208, --8004746, -7565048, 1508070, -7192997, -3781719, -126702, -4424890, 2529736, -3496640, 5499706, --2915746, -1825361, 1673964, 3864934, 6995965, 4459787, -7885560, -365072, -622233, 3928821, -5761162, 9916543, -4417911, -3812320, 5071283, -5322002, 1214402, 1607928, 8293045, 3114925, -4614943, -6133750, -2770791, -8397198, 6663642, 7072201, 8027831, -63888, -1759863, -5334887, --1158031, 5480379, -2536715, -3413425, -3227131, -4174171, 894427, 1061394, 1251446, -5735392, --96100, -5617817, -324270, -785442, 2299955, 2066416, -1758252, -2513630, -7215008, -355945, --588411, 4503810, -2791729, 7441568, -4213363, 985158, 3412889, 6767795, -5188858, 1617055, -3508988, -5956583, 3015067, 66572, 7416872, 2541547, 1661616, 4627828, -459562, 1316944, -3511136, 1487132, 43487, -1227824, 64961, 1547799, -470299, 1947768, 2882997, 2420751, --1075889, 1374390, 195958, -709207, 1164473, 1583769, 15569, 763967, 1857037, 1423245, -1502702, 782758, -701153, -1124208, 1440425, -1211718, 1436130, -668941, 130460, 1844152, -1376537, -348966, 1018981, 20033874, 16944182, -488553, 383326, 9005473, 1087164, 4474282, --2786897, 4999879, -3879429, 9090298, 2945274, 139586, 1706713, 751619, 11224897, 7788923, --7562901, -6069863, 2289755, 1325534, -2507187, -1489817, 1316408, 5567352, 3918084, 2609730, -461172, 2998424, -2017024, -24159, 6130529, -6743636, 2636036, 8475044, 6141803, 11476689, --1238561, -1601486, -1110786, 841277, -3744675, 12461311, 11187316, 8204998, -3881577, -1000727, -4688494, 4042638, -3572339, 894964, 6352257, -2295123, -3149822, 4241817, -12111808, -1270237, -543850, 1887638, -4178466, -7716983, 3082176, 5485747, -6496675, -2252174, -7054484, 2707440, -368830, -1337346, -1609539, -5929203, 10019622, -2547989, 1245541, -10191421, -2566243, -4804458, -11937862, -2009508, -1773285, 5486821, 2364916, 83215, -3964792, 3684545, -2648384, -3477850, -5472862, 5320928, -194884, 3365644, 1611, -1371168, 2849711, -349503, 1041530, -850404, --1424855, -221728, 2192044, -1603097, -1422708, 32212, -1864553, 731755, -1692217, -805306, -35433, -182536, 2178622, 175557, 558883, 1566053, 1357210, 490700, 647466, 1310502, -2942590, 680215, 2767570, 585726, 1314260, 2194192, 13122736, -518080, 8298414, 11312944, --5966784, -13950054, 599685, 10597832, -8193187, 7439957, -2200097, -10096394, -4640712, 10156524, --9910637, -8769786, 6402186, -10139881, 3395709, 4828617, 3995393, -2880313, 6158983, 1725503, -1174674, 3944391, -6451578, 8818105, 4365298, 3826816, -1797981, -988379, 16469589, -5762236, -1045825, 4276714, 8301098, -11250667, -9233106, -8628052, 359167, 634581, -550293, 5231270, -1656247, 9340480, 3788161, 5473399, -851477, 731218, -4589173, 8348880, -3751117, 8236137, --4461934, -7103339, 12283606, 9953050, -14059039, -12435004, -8143795, -6391985, 4468914, 704912, --2820720, 6486475, 7183870, -8578123, 5086315, -690953, -17143898, -5671505, -8626979, -7853348, -3011309, -2669859, 5679021, -1293859, 885300, 10282689, 10504953, -964757, 2791729, -904091, -1668058, 1487669, -3500935, 2955474, 900333, -125091, 8872866, 2664490, -22012, 274878, --1535451, 2621004, -246424, 1730335, -1868311, -91805, -1972464, 551903, 2342905, 740345, -37581, -259846, 2055679, 1312649, -1225676, 192737, -10201, 322659, 1067299, 470836, --794569, -963683, 330176, 597537, -71941, -7409893, -10473815, 6300717, -6036040, -4371740, --3761318, -12099997, -1306744, 5452998, -3313567, -696858, -4463008, 10037875, 1516124, 6407018, -4836133, -8022999, 8251169, 12431246, -3824669, -5026723, 1307818, -2116345, 5327370, -15292231, -5848672, 13313325, -1788317, -4308389, -3806952, 5811091, 11869679, -2784213, 2981244, -5268851, -8125542, -9780177, -3782793, 1946694, -1555315, -7580618, 14006962, 9927280, 7388955, -3085934, --10587094, -1263794, -15031849, 2631204, -1109712, -442382, -330712, -2226941, 8120710, 6928319, --10447508, 5868536, -6262063, 8665097, -807991, -1712618, -732292, -9102109, -1761474, -8301098, --18473728, -802622, 2145336, 1493038, -7101192, -205085, -2041720, -13753022, 265751, 12009265, --7580081, 3169686, 3894999, -1483911, 836982, -3509525, -2109903, 2845953, 3395709, 3789772, --966368, -2370822, -930397, -2550674, 2101313, 1070521, -2189360, -596464, -2014340, -2148021, --301721, -1927904, -2988224, 1863479, -632434, -2249489, 1794223, -1566589, 1477469, 2306934, -948651, 2217814, 1536525, 4295, 1451699, 4971425, 2370285, -2429878, -1701344, -2794413, --2147, -3624416, 1919850, -186831, 2813741, -723165, 2190970, -351650, -1566053, 4692789, -2236067, -19389092, 1363115, 11301670, 6173479, -8837432, -7182259, 14168023, 3275450, 3180960, --2792803, 3662533, -144955, -9483288, -2471217, -9960029, 4708358, -5936182, -906775, -9705552, --10737418, -14440217, 9030169, 6089727, -4632122, -5153424, 4053912, -13262322, -1212255, 991064, -3199214, 5818070, 2842195, 364535, -4590247, 1920387, -4215511, 3489124, -4044249, 2301566, -1222992, -4207994, -5457830, -10397579, -6858526, 2617783, -17732846, -4843650, 9721122, 5164698, --2144263, 23131620, -3357054, 10708964, 10598369, -16881368, 1093069, -2254858, -14253923, -7467338, --7847979, 233539, 1661616, 15978352, -2580739, 1521492, 10834055, 8024610, -1898376, 10779831, --5127117, -3980898, -7221988, -9587978, -13942001, -5312875, 7943542, -15195057, -7748121, 11710228, -8545374, -5132486, 10714870, -4792647, -746787, -496069, 5152350, -3373160, 5134634, -3231963, -4392141, -1290101, 1812476, -2082522, 3553549, 3394635, 1475321, -617938, 4011500, -2612414, --2945811, 3120831, -881542, 3407520, 2492692, 1683627, 2305861, 1392643, 653909, -5864778, --1084479, -68183, 1630477, -1569274, -2474975, -2076617, -5603322, 2114198, -117038, 3525631, -1994476, 3431679, 2618320, 723165, 1057636, 13383655, -2374043, 4353486, -6565395, 3896609, -5534602, -3355980, 4725538, -7326141, -8162049, 12418898, 6686727, 8040716, 9808095, 15032, --8165270, 10733123, -9398999, -12497818, 128312, 11840688, -1743757, -10145250, 1343788, 13923210, --2050310, 3865471, 1290638, 19506668, 1177358, 4219269, 9544491, -1165010, -5019206, -9262634, -1264868, -1239098, -9006546, 344134, -5327907, 3622805, 13134010, 181999, -8004746, -2309082, --7426536, -3876745, -1200443, -3065533, 1732482, -9786620, 10506027, -5532455, 17784386, -4453881, --13012140, 785442, 577136, 6372121, 2649458, 3467112, -13346611, -10735271, 7734699, -11181947, --15682536, 4525285, 3049964, -3512747, 16842714, -13711146, -19108846, 7167227, -13065827, 1286880, -1742146, 409096, -12567611, -7581154, -16329466, 5615670, -1692754, -862752, -2568391, -7212324, --3315178, -5463736, -2771865, -2100776, 6156299, -4720169, 4714801, 1769527, 4869419, 856309, -581431, -6611566, -2479270, 1832877, -2194192, -7220377, 1373316, -1148367, -2885144, -2525441, -2251100, -2887829, 3058554, -1644973, 3725347, -704912, 1869385, -3760781, -3770445, -103079, -221728, -1329292, 5652177, -4977330, -4816806, -3115462, 2708514, 3019899, -3917010, 2921115, -807991, -10356777, 5744519, 595390, 14147085, 14857366, 21424908, 9796820, 4553202, 2993055, -7072201, -7259032, 8176007, -12885439, 6300180, -1241782, -1078574, -24719684, -9557376, -4036733, -8443369, -1031866, 2062121, 2709051, 2262911, -12619151, 13103945, -466541, 5346161, 464393, -12232604, -13092671, 9141838, -6420439, -293132, 9926206, -11214696, -4989142, -12222403, -4840965, --13612362, 12451110, 9149354, 16716013, -797253, 3980898, -15173583, 3494493, -15730855, 15342160, -4354023, -2454037, 14521821, 14828375, 7584912, -8781598, -13137231, -18922016, -816581, -6677064, --9529996, 10322417, -2806761, 23988466, -17719962, -6436009, 13720273, -14250165, -5654325, 3327526, -277025, -2048163, -13687524, 6296422, 2357937, -7425462, 6813966, 14474040, -12382928, 13972065, -17381196, -5160940, -9161165, 7183870, -7023882, 6640557, 4253628, -7228967, -5626407, -1404991, --2229088, 10213969, 3465502, -1690607, -4908074, -8042327, -4536023, 2596308, -5134634, 2514167, -4937065, 3183645, -3440269, 2700461, -2808372, 3924526, 2562485, 4374424, 2662880, 245350, --4522064, 3030100, 4591320, -4554813, 227633, 1637456, 1736777, 3977677, 401043, -458488, -4374961, 5370857, 1085016, -2376191, -4107063, -48855, 3733937, 4537633, 3105798, 22315040, --5108864, 3167539, -1207423, -7323456, 9985799, -3636764, 3693135, 1224603, 14313515, -4481799, -16694538, 307090, 8309151, 7412040, -1321239, -5384279, -16268799, 7755637, 16933982, 922344, --112743, 11786464, 9972377, -686658, 1845762, 20195474, 12636331, -3614752, 4398584, 13292924, --3331284, -14641007, 361851, -10619307, -1668058, -6716255, 636729, -20263118, -6048925, -7355669, -359704, 4293357, 4292283, 19796578, 21845814, 11558831, -15082851, -8860518, 12288438, 17263084, -3661460, -15669651, -2561948, -3671660, -16372415, -10299868, -12389907, 15228880, -5645735, 2137820, --15406048, 22512608, 16600049, -1802813, 6881612, 37332928, -1853278, -7577396, -14294725, -803696, -9940165, 7909183, -5731097, 11302743, 22340272, -9488120, 14264660, -6411850, 4698158, -8884140, --4818417, -7654706, -10076530, -5131412, 6670621, 46708, -2179159, 1689533, 2796561, 12104828, --1286880, 1274532, -94489, -5484673, -554588, -1911797, 1163399, 4944044, -3102577, -1416266, --3855270, -1775432, 1418413, 1560147, -1360431, -7866233, -7365332, -2463701, -9081708, -7900593, --1396938, 7165616, 6327024, 5496485, 1272921, -1169842, 381715, 3102040, 2583960, -898185, -1799591, 1331977, 11480448, 1174674, -6896107, 6821482, 2638721, -9543417, -16157130, 20975546, --13175886, 15832323, -11581379, -17215302, 788663, 21728776, 13895830, -15985331, -10769630, 3750043, -3142842, 7380902, -1318018, 14507326, 7652021, 19102404, -7001334, -3144990, -726386, -3643206, --18414136, -13489419, -4292820, 19207630, 3935264, 1552631, 595390, -17806934, -20381768, -15665356, -8066486, 9326521, -7004555, -4538170, 1724429, 2253784, -10892574, 3174518, 20156282, 3595425, -12607876, 12494597, 8892730, 21741124, 31085362, 10277320, 491774, 4535486, 12246562, -6446209, --3505230, 8323647, -2851858, 4476430, -2922725, 13499082, 4723927, 9577240, -2688113, -3525631, -6790880, 18020072, -1347546, -14677514, 9390946, -22999550, -26776436, -9104257, 13798656, -8879308, --26477400, -16117402, -6759742, 9706626, 6564858, -14251238, 25636660, -8200167, -18017924, 4747013, -6999186, -5869073, 8896488, -9235790, -3674345, 3372623, 2392834, -4835060, 4518306, 896038, -8083129, -4445291, -9696962, -5602785, 1605781, -2110440, -1967632, -741956, 62277, -754841, -6566468, -1106491, 1088774, -2641942, 3029563, 5447093, 1061394, 5221607, 1621887, -8075613, --3569118, 46171, -6983617, -8251169, 3990562, 5818607, -4516695, -8805220, -9672803, 3970697, -1636919, -420907, 6283001, -3624953, 2302639, 8591545, -37467148, 2164664, 18742164, -3341485, --4600447, 23095650, -12475269, -12576738, -16376710, -5242545, -5648956, -10672994, 3027415, 5384279, -8669928, 6371047, -5363341, -3973919, -2010045, -4470524, 1354525, 4433480, 18501646, -7903814, --24395414, 13045963, -88047, -615254, -20326470, 9071508, 3714073, -1993939, 22738094, -6478422, -2295123, -2041183, 9913321, 12281996, -13623099, -1242856, -7734699, -801011, 6652905, -5005248, -10296110, -16313896, -13889924, -8587250, -14827838, -2477659, 1112397, 2327872, -20657182, -13375065, -9509058, 16542603, -8050380, -9164923, 8442295, -18651432, -17183090, -16362215, 17807472, -30393872, -9652402, -1600949, -18195628, -5692979, 14921253, 38732016, -5429913, -10658498, 12508555, 29700772, -10410464, -6674916, -7450695, -1342714, 7868380, -543313, 3531000, 17679160, 897111, -6598144, --12747463, 10358387, -14993731, -10040560, -7605850, 5204964, -6351183, -10668162, -7035694, -6492917, --379568, -7873212, 2410551, -6104223, -840740, -2004676, 7192997, -5674726, -4757750, -11623255, --3772055, -2075543, -4227322, 11020886, -8454643, -10453414, -991064, -9176734, -8705362, -3846680, -912144, 8253854, -1416802, -3554086, -1931125, -5493263, 3526705, -11065983, -1296543, 11403138, -5089536, 7455527, -3230352, 2816962, 3312494, -2763275, -4690105, -6252399, 1868848, 2938295, -4656819, 5179194, -2184528, -21028696, -33427194, -1998770, 38429756, -6198712, -2700998, -25429428, --1868848, -1751273, 2690797, 8338679, 1204738, 6923488, 551366, -473520, -18028126, 2517925, -16505559, -11166915, 20459614, -8658654, -1206349, -18148384, 11647414, -9070434, -5794985, -20933134, --28236188, 14397267, -13748727, -13658533, 5032628, 2845416, -6024229, 1331977, 16098074, -4814122, --15215995, -9556839, -19502910, -2460480, 5681705, 13495861, 2866354, -4053376, -3266860, -8173323, -4791573, 14022531, 2428267, -8876624, 16121160, -15404974, 1749125, -26502096, -7680476, -5242008, -32704028, -20662550, 6774237, -6752763, 4400194, -3856344, -3518115, 571768, 13380971, 3962107, --23924042, 26390426, 8212515, 9390409, 3551938, -10593000, -7917236, -3069828, 3482682, -634581, -5424007, -14347338, -14756434, -2473901, 7405598, 16031502, -9808632, 13594645, -3207267, 5279589, --10624675, 6109591, -17408576, 19617264, 1008780, 2164127, 6597070, 8838506, 1009854, -12279311, --5767604, 3288871, -11480984, 3141232, 5616207, 4901632, -6766721, -4306779, 11924440, 2143726, --11801496, -1730872, 10362682, -3853123, -14551886, 16647293, -4372277, 6433324, -2658048, -4781373, --7683160, 5120138, 1569274, 5328981, 962073, 8947491, 1218160, 6437082, -2962991, 445603, -4185983, -2266669, -3377992, -16360604, -9920301, 35788888, -4542465, 3236258, -18604188, 16852378, --9686762, 12483859, -9773198, 21734682, 2054068, 2473364, -10510859, -8245264, 12426414, 28088550, --11644730, -16649978, 7927436, -6376416, 18278308, 23459648, 11375758, -3179887, 14289356, -9218074, --8890045, 19761144, 26759794, -29674466, 2436320, 4780836, 5061082, -9836549, -719407, 12416750, --30313342, 9419400, 17701170, 6978248, -13487271, -3412889, 21740588, 18127984, 5920076, -9918690, --13368086, -25907780, 37416680, 7095286, 19240916, -2476586, -7961259, 4514548, 11205033, 678068, --594316, -30154966, 4732517, 29080150, -5124970, 27881318, -16516834, -7094212, -11511586, 6757058, -25936234, -7833484, -730681, 23778550, 28651726, -9006010, -20900384, -18329846, -16247324, -7241315, --6846715, 16809966, -20138564, 11325292, 12452721, -4243428, 1459752, 13250511, -2462090, -7097434, -7805030, 5829881, 4182225, 12213276, 2654290, -1789928, 10801843, 4171487, 4596689, 5782637, --1801739, 972273, -2400350, 4980552, -19723564, -5177046, 888521, -3544422, 7760469, -14542222, --1625108, 484794, 5327370, -56371, 8434242, 6128382, -3937948, 12173011, 6120329, -3836480, -8635569, 9580461, 155693, -5703717, 4588099, 9334038, 5556077, -1053341, -8651138, -3945464, -2354179, 1671816, 1472637, -8082055, 14144401, 10433549, 24978992, -7530152, 18096844, -9542344, --3810173, 16859358, -550293, 22972706, -27645094, 17391396, 3191161, 7762080, -11092827, 8461086, -20685100, 40215388, -9190693, 10275709, -507880, -26552024, 24481314, 2561411, 9612137, -4774930, --12399034, -4536023, -947040, -10233833, -6419366, 34188476, 2465848, 13217762, -9667435, 24273008, -223875, 11839077, 5046050, -14008573, -2916283, -8589398, 361851, 4498442, 28666222, 14672145, -1313723, 3528853, -900869, -2229625, 4796942, 2995203, 18006114, 14712410, 7452842, -8358543, -12545063, 26276074, -24547886, 23052164, 3799436, 7042673, -24664924, -11615202, -31022548, -24977382, --4835597, 16925392, 14111652, -43020540, -191663, -19313394, 10358387, 43272332, 21760988, -27563490, -15283641, -11241540, -14179835, 23920284, 12125230, -12041478, -6681896, 21074330, 17242146, 9531606, -26718454, -6999723, 16437377, 14533096, -16834662, 23920820, 6642704, 27737972, 8523363, -2382096, -16356309, -1509681, 4359392, -19185618, 14696841, -9262634, 7714298, -6842420, 3481071, 9163313, -22091164, 5936719, 13482976, 3556770, 4401805, -7031399, -1489817, -2397666, 1936493, 11200201, -9556839, 16750372, 6272263, -1814087, 2797098, -3704409, -2032593, -16464757, -2646237, 4325032, -5423470, 14474040, 12906377, 11731166, 13532368, -35762044, -56166360, -14093935, -6754910, -13314935, -2611877, 19226958, -20106352, 28782186, 9895605, -40417788, -31819802, -5850819, 21879638, 1239098, -1410360, -3841848, -13406204, -39110508, 1175210, -32789390, -27972586, 13929116, 10268730, 10199474, --5091147, -12451647, 29531122, 18396956, -13146895, -25478820, 19360638, 10435697, 4241280, -11756399, --30758408, 11973295, -14654428, 4988068, -26250840, 31854162, 383863, -12152073, 2675765, 8340827, -25530896, 16632798, -7016903, -865973, 8703214, 9409200, 9619653, -5471252, -40896140, -31450972, -6094022, -3960497, 23379118, -4124242, -10521596, -28174986, 32889786, 13174812, -23480050, -23464480, -33760052, 32370094, -649614, 23860154, -3438658, 1231582, -9986873, -5463736, -18600966, 23012972, --4464082, -4702453, -10063645, 9739912, -29078540, 14016626, -8699456, -4993437, 20205136, -24159, -2986076, 5563594, 18541910, 10029286, -7897371, 14367202, -4384625, 17258790, 6432788, -18479096, -4487167, -9172976, 8770860, -7359964, 537, -12125230, -6640020, 7342784, -12612708, 5732171, -4085051, 5880347, -11275900, -7499550, -14455249, -12071542, 16535087, -5552856, 10632728, 7246684, --10348187, -967441, -9055939, 843961, -5778342, 21584896, 17689896, 12546673, 16529182, -3581466, --18530100, -20622286, -3092913, 6910066, 30692910, 19304268, -7136625, -5214091, -8308614, -14775761, --955093, 7501698, 10664941, 7296613, 3417720, 19219442, 2226404, -14074608, -35051764, 55455008, -1720134, -43441984, -2949032, -16364362, 7611219, 21095268, 19757386, -24302536, -38190312, 6273874, --18111340, 5570573, -3434363, 16676821, -5252208, 2127620, 10410464, -16032576, -18967112, 1738925, -5389110, 16512539, -59056, -27194660, 18019536, -15298674, 14232985, -13334800, -8546448, -1763621, --3937411, -29211146, 5764920, 7785165, -27624156, 11533061, -10653130, 5308580, -8993125, 26720066, -21369610, -27526982, -14118094, 18313204, 23650238, -28159416, 37135360, 2099165, 29969208, 21238614, -35305168, -11100880, -14492293, 7565048, -28663538, 4146254, 4014721, 50655920, -15443629, -48166984, -81187768, -38475928, -29027000, 46323908, 21405580, -27473296, 45641544, 4759898, -36528160, 45593224, -5896990, 3828427, -7657927, 6461242, 30800822, -7724499, -10253161, -16125455, 23027468, -8534100, --5450314, -3464428, -8790724, -10052371, -13857175, 13326747, -1677722, -1552631, -4800163, -3788698, -2066416, -6420976, -10329933, 1075352, -8295730, -16297790, -16321949, 20421496, -8666170, 1638530, -19447612, -9485972, -8435853, 1059783, 9807021, 3792993, 4359392, 18098992, -11035382, 2371359, --8053064, -5510980, -3373160, 30123826, 15403900, -5231270, 4631586, -16406775, 5470178, -15039365, --8859981, 6846178, -3606162, -30733712, 19065360, 7385733, -5363878, -386547, -15346992, -2378875, -513785, -50184544, 6932614, 15055471, -37681896, 17246442, 9946607, -13197898, -3782793, -654446, --9256191, -3024731, -5435818, -16786880, 442382, -8373039, -1879585, -4122632, 8145943, 29993904, -25074020, -23145042, -2594697, 31559956, -5570573, -5929739, -32329292, 3728032, 10552735, -5285494, -27463094, 65950296, -22240414, -27804544, 46902652, -3144990, -25379498, 29291140, 19229642, -15213848, --22811108, -28128814, 8504035, 15063524, -12594992, 44227424, 28794534, -55212340, -53039088, 30852360, --25007984, -32309428, 41790568, 6709276, 55968256, 26870926, -6890738, -7577396, -40542344, -31581968, -91973504, 25376814, -19856708, -44604308, 1134945, -18206904, -39904540, -6259915, 46504832, 19768660, -475668, 38308424, 33425046, -10704132, -42849816, 6549825, 25485800, -10687489, -10123775, 53393960, -30613454, 5225365, -5757404, -27593018, -27100170, -7059316, 25317222, 10160282, -10493679, -5013301, --12125230, 9901510, -7854959, -10426033, -6806987, -1403381, 7486128, 10160282, 8967355, 3686156, --24635932, -8696772, -4964982, 9076340, -9687299, 1529545, -2707977, 22329534, -14695767, -10267656, -23051090, 6310381, -11938935, 18124762, -6571300, 5162014, 1258962, 3976603, -14217415, -3991098, -18920942, 18522584, 7580081, -7640210, 4807142, -8747238, -7072201, -5471789, 9824201, -15921981, --3515431, 12217034, 49428632, 42068668, -11613055, 30040612, 2559801, -22433688, 14198088, 25730612, -7941932, 11409581, -33535642, -6231998, 3384434, 7181186, -5354751, -28244242, -10841571, 10853919, --7488813, -2565706, -24805584, 37810208, 4182225, -30315490, 16953310, 44301512, -23107998, -12705587, -5920076, 14924474, -14628122, -27131308, 23177792, 40321152, -3688303, -15217069, 4682051, 11739219, -17661442, 25987774, 1183800, 46933792, -1539209, -51327544, -96637, -5388037, 16384763, -4980015, --42777876, -732292, -18765248, -17395154, 24866786, 13776644, 13961865, 18663244, -38401840, -19383188, --7170985, -74088, 14778446, 966905, -8268349, 1498407, -13497472, -25390772, 1975148, 40592808, --21180094, 4257923, -16581258, -11055246, 26925686, -33349884, -920197, 15275051, -12496207, 5974300, -3662533, 8837969, 9180493, -17413944, -21935472, 36384816, -8041253, -11238319, 17952964, -18030272, -10986526, 2736968, -8167954, 6086506, 14975477, -2536715, 1509681, -7250442, 3143916, 1389959, --1639067, -6430640, 7890929, 4670240, -1473711, -313533, 6506339, 6341519, -7272454, -11550241, -5900212, -313533, 2681133, 1101659, -3760781, 6574521, -494458, 5523328, -2658048, -567473, --4162360, 1374926, 5082557, -891206, 13702556, -5449777, -5087926, 1059246, -7004555, 4403415, -8941048, -43456480, -61774516, -55067924, 110521320, 105046312, 105297568, 296404288, 105611096, -12462384, -19736986, -205365472, -249640672, -84194240, -139990704, -194542160, 25186226, -11039140, -32314798, 213711664, -130798936, 54295904, 334333664, 157492160, 29353954, 152088544, -35952096, -182061520, -173921472, -166131488, --229686800, -225322032, -52682604, -81506128, -132346200, 154469040, 71421008, -55996172, 223621760, 71910640, --26088706, 252391072, 230351440, 52754548, 239036400, 242117504, -9156333, 59913184, 27577448, -233574288, --270684416, -201976736, -381123040, -361348480, -216721904, -289900096, -217735520, 24393804, 179225760, 202946864, -436866880, 396795936, 350273920, 376967136, 278385824, 140979616, 43250856, -30924302, -212477936, -256613024, --274256736, -309524864, -293268416, -250400896, -161514928, -117741696, -114722336, 21585968, 69672424, 136331392, -325111296, 337201632, 230875968, 288127872, 122037200, -40197136, -95472288, -148344944, -202755744, -147261008, --98185640, -98156112, -33674692, -9592273, 839666, 51626580, 66114044, 62568008, 96487512, 60329260, -39298412, 48235704, -28786482, -27060978, 8172249, -78685952, -55397560, -20859582, -75618264, -47160352, --5304285, -76572288, -80418968, -53872312, -78929152, -52296060, 59260348, 110400520, 176386256, 259783776, -242857312, 207364240, 195342096, 105098920, -32502702, -163337600, -288167616, -342635296, -308623456, -250413232, --188777232, -89234392, 27912992, 110945448, 156483376, 168397616, 149017648, 132417600, 123573192, 124018256, -86437824, 40044128, 18291192, -12176769, -36501316, -33727304, -59032176, -64124936, -45552424, -35300336, --45694692, -44913548, -56786448, -65630320, -64938832, -56726316, -46354508, -15621333, 23014046, 52843132, -70893800, 90907280, 89882928, 74788264, 53563076, 32307280, 12123619, 9306120, 1151588, -12102144, --22018686, -24888798, -32581622, -36738076, -40644348, -44139916, -46322296, -31825170, -17904108, -5712307, --137439, 6755447, 12523051, 22112640, 22662932, 15803869, 7158637, 11808476, 17511656, 18367964, -17174500, 16449725, 14377403, 16482474, 14841796, 7766912, -1653562, -6953552, -18049600, -22174380, --23832774, -24934970, -28201292, -24932822, -25971668, -23615878, -14461692, -2006287, 9957345, 26101590, -36421860, 42974368, 40807560, 31504658, 14549739, -217433, -12787191, -17411260, -20653960, -17745194, --14516453, -9337259, -6227166, -3047816, -2709588, -244813, 470836, 2520609, 2251637, 3777961, -2629057, 3165928, 1622961, 1675574, -47245, 306553, -886911, 117038, -667867, 397284, --485331, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +3428458, -4665408, -3816615, -642635, 3676492, 5444408, -2568927, 3183645, -1767379, -4513474, +-1250909, -2518462, 1476932, -612033, -2196876, 2015950, 3032784, 693100, 3668439, -6729677, +-7293928, -4668630, 667867, -6979, -1255204, 362925, 2213519, -717260, 2992519, 2491618, +-3192235, 1222455, -248034, 3899830, 3576097, 1364189, -3820374, 2509335, -2279554, 1281511, +2490007, -6076305, 6642167, 9780714, 1269163, 4438312, -3607236, -715649, -3386582, -1743757, +3016678, -1000191, -3502009, -914828, -2208687, 1694902, -2153926, -1938104, 186294, 1797444, +-1787780, -1996086, -879931, 3482682, 3115999, -2629594, -981400, -3109556, 708670, 4134980, +1136556, -1498407, -1979980, 1562831, -563714, -2797634, -1035624, -1884954, -282931, -1005022, +1620276, 1538672, 810138, -890669, -1255741, 2792266, -387084, 769336, 1431835, -401579, +-49392, -563178, 837519, 125628, 202400, -799938, 104153, -244276, -819265, 53687, +-136365, 614180, 1452236, -799401, 329102, -143345, 700617, 887448, -223875, -344671, +-195958, -29528, -794032, -312459, 337155, -283468, 134755, -1074, 637803, 157840, +72478, 15035070, 6910603, -514859, 3140158, 2863670, -3610994, -1760937, 4161823, 1902134, +4530117, -3291019, 6590091, 2484639, -6516539, 5173288, 268435, -110595, -3442953, 3787088, +-7044820, -6032282, -1301375, -2140504, -1176821, -2150168, 806917, -1302449, -2934537, -2108292, +2439542, -2665027, 1700807, 1087701, 675921, -2942590, 4130148, -8657043, -1534914, -40265, +-1530082, -1081795, 734439, 1624571, -2792266, 2217277, -3380676, 3229816, 1006633, 711891, +3309809, -2338610, -579284, 1353452, 5186173, 1293859, 2166811, -1192927, -4529580, -6298570, +1143535, 3428458, 4452271, -1826435, -7065758, 1053878, -2899103, -1961190, -1648194, 1959579, +189515, 6897718, -222265, 2325188, 1334661, -1038845, -1811939, -1917703, -7218767, -2110977, +-1195075, -974958, -1395864, 1344325, 3590593, 1012002, 3405372, -33823, -340913, -1089848, +923955, 1251983, -361314, -1391033, 1196685, -714038, 460635, -605054, 614180, -1029718, +-655519, 981937, 300648, 556198, -390305, 344134, -676994, 8123931, 1855963, -6810208, +-7783018, 2151242, -2389076, -6400038, 7269232, -3557307, -1216550, -972273, 5695127, 1226750, +-3338263, 4035659, -3134789, 6087580, -8407935, -5510980, 6653978, -6947647, -7059853, -2804614, +5682779, 2520072, 2706903, -652298, 5088463, 3114388, -559420, -6738804, 1797444, -1863479, +2400350, 2157147, 1809255, 5875516, 1539746, -5764920, 498753, 4031901, 5873368, 2000918, +-3268470, -755914, -4805532, 2048163, -8498130, -323196, 9105868, 497142, 944893, -4682051, +-5839545, 896574, 1231045, 6728603, -1500017, 583579, 671089, -989990, 653909, 2238752, +362925, 4733054, -1320703, 3144453, 427886, 851477, 530965, 5550709, 193810, -772020, +987306, -1182190, -3790846, -1997160, -3907347, -88047, 6946573, 1466195, -2326262, -784368, +-4027606, 2268280, -3162707, -2192581, 717796, 116501, 193274, -1800665, -2589865, -527207, +589484, -857383, 1420024, -163746, -45634, 1430224, 852014, 1440425, 1147830, -17180, +429497, -1171452, 20938, -1039919, -1160178, 781147, 891743, 1650878, 1154273, -803696, +-251792, 871878, -689342, -1266479, 667331, 177704, 9664, 161061, -18677202, -12108587, +-2736968, 2077154, 2938831, 365609, -83215, -7059853, -498216, -1500017, -1248762, 204011, +-1868848, -772557, -5318244, 2775086, -11124502, -4000225, 932545, -2177549, -3441880, -1894081, +-6356015, -3150359, -2676302, -2946885, 1332514, -4833986, -2741800, 6080600, 3876745, 448824, +2840047, 2171643, -2039573, -4007741, 2340757, 9058086, 961536, 1170379, -3616899, -3138547, +2589865, -7684770, -4173098, 8600135, -7889318, 2404108, -1928977, -3907347, 1745904, 616328, +-2240899, 547071, 1249836, -2669859, -39192, -496606, 5216238, 4725001, 626528, 1302449, +2224256, -114890, -1096827, -1782411, -10932302, 5301601, 3213173, -2918967, -187368, -4507032, +-1307281, 687195, -3395709, 1549410, -4105452, -2203855, -4768488, -6926172, 4510253, -1284732, +132607, -5847598, -1544041, 802622, 902480, -1510755, -346282, -283468, -1700270, -3006477, +411243, -1523640, 1235877, -201327, -845572, -586263, -396748, 1531693, 180926, -2216740, +348966, -639413, -266825, 765041, 258235, -548682, 452582, -1733019, 869731, -1572495, +-583042, -2055142, -16143708, 2534568, 3719442, -957778, -1463510, -8850854, -3696893, 2500208, +-8004746, -7565048, 1508070, -7192997, -3781719, -126702, -4424890, 2529736, -3496640, 5499706, +-2915746, -1825361, 1673964, 3864934, 6995965, 4459787, -7885560, -365072, -622233, 3928821, +5761162, 9916543, -4417911, -3812320, 5071283, -5322002, 1214402, 1607928, 8293045, 3114925, +4614943, -6133750, -2770791, -8397198, 6663642, 7072201, 8027831, -63888, -1759863, -5334887, +-1158031, 5480379, -2536715, -3413425, -3227131, -4174171, 894427, 1061394, 1251446, -5735392, +-96100, -5617817, -324270, -785442, 2299955, 2066416, -1758252, -2513630, -7215008, -355945, +-588411, 4503810, -2791729, 7441568, -4213363, 985158, 3412889, 6767795, -5188858, 1617055, +3508988, -5956583, 3015067, 66572, 7416872, 2541547, 1661616, 4627828, -459562, 1316944, +3511136, 1487132, 43487, -1227824, 64961, 1547799, -470299, 1947768, 2882997, 2420751, +-1075889, 1374390, 195958, -709207, 1164473, 1583769, 15569, 763967, 1857037, 1423245, +1502702, 782758, -701153, -1124208, 1440425, -1211718, 1436130, -668941, 130460, 1844152, +1376537, -348966, 1018981, 20033874, 16944182, -488553, 383326, 9005473, 1087164, 4474282, +-2786897, 4999879, -3879429, 9090298, 2945274, 139586, 1706713, 751619, 11224897, 7788923, +-7562901, -6069863, 2289755, 1325534, -2507187, -1489817, 1316408, 5567352, 3918084, 2609730, +461172, 2998424, -2017024, -24159, 6130529, -6743636, 2636036, 8475044, 6141803, 11476689, +-1238561, -1601486, -1110786, 841277, -3744675, 12461311, 11187316, 8204998, -3881577, -1000727, +4688494, 4042638, -3572339, 894964, 6352257, -2295123, -3149822, 4241817, -12111808, -1270237, +543850, 1887638, -4178466, -7716983, 3082176, 5485747, -6496675, -2252174, -7054484, 2707440, +368830, -1337346, -1609539, -5929203, 10019622, -2547989, 1245541, -10191421, -2566243, -4804458, +11937862, -2009508, -1773285, 5486821, 2364916, 83215, -3964792, 3684545, -2648384, -3477850, +5472862, 5320928, -194884, 3365644, 1611, -1371168, 2849711, -349503, 1041530, -850404, +-1424855, -221728, 2192044, -1603097, -1422708, 32212, -1864553, 731755, -1692217, -805306, +35433, -182536, 2178622, 175557, 558883, 1566053, 1357210, 490700, 647466, 1310502, +2942590, 680215, 2767570, 585726, 1314260, 2194192, 13122736, -518080, 8298414, 11312944, +-5966784, -13950054, 599685, 10597832, -8193187, 7439957, -2200097, -10096394, -4640712, 10156524, +-9910637, -8769786, 6402186, -10139881, 3395709, 4828617, 3995393, -2880313, 6158983, 1725503, +1174674, 3944391, -6451578, 8818105, 4365298, 3826816, -1797981, -988379, 16469589, -5762236, +1045825, 4276714, 8301098, -11250667, -9233106, -8628052, 359167, 634581, -550293, 5231270, +1656247, 9340480, 3788161, 5473399, -851477, 731218, -4589173, 8348880, -3751117, 8236137, +-4461934, -7103339, 12283606, 9953050, -14059039, -12435004, -8143795, -6391985, 4468914, 704912, +-2820720, 6486475, 7183870, -8578123, 5086315, -690953, -17143898, -5671505, -8626979, -7853348, +3011309, -2669859, 5679021, -1293859, 885300, 10282689, 10504953, -964757, 2791729, -904091, +1668058, 1487669, -3500935, 2955474, 900333, -125091, 8872866, 2664490, -22012, 274878, +-1535451, 2621004, -246424, 1730335, -1868311, -91805, -1972464, 551903, 2342905, 740345, +37581, -259846, 2055679, 1312649, -1225676, 192737, -10201, 322659, 1067299, 470836, +-794569, -963683, 330176, 597537, -71941, -7409893, -10473815, 6300717, -6036040, -4371740, +-3761318, -12099997, -1306744, 5452998, -3313567, -696858, -4463008, 10037875, 1516124, 6407018, +4836133, -8022999, 8251169, 12431246, -3824669, -5026723, 1307818, -2116345, 5327370, -15292231, +5848672, 13313325, -1788317, -4308389, -3806952, 5811091, 11869679, -2784213, 2981244, -5268851, +8125542, -9780177, -3782793, 1946694, -1555315, -7580618, 14006962, 9927280, 7388955, -3085934, +-10587094, -1263794, -15031849, 2631204, -1109712, -442382, -330712, -2226941, 8120710, 6928319, +-10447508, 5868536, -6262063, 8665097, -807991, -1712618, -732292, -9102109, -1761474, -8301098, +-18473728, -802622, 2145336, 1493038, -7101192, -205085, -2041720, -13753022, 265751, 12009265, +-7580081, 3169686, 3894999, -1483911, 836982, -3509525, -2109903, 2845953, 3395709, 3789772, +-966368, -2370822, -930397, -2550674, 2101313, 1070521, -2189360, -596464, -2014340, -2148021, +-301721, -1927904, -2988224, 1863479, -632434, -2249489, 1794223, -1566589, 1477469, 2306934, +948651, 2217814, 1536525, 4295, 1451699, 4971425, 2370285, -2429878, -1701344, -2794413, +-2147, -3624416, 1919850, -186831, 2813741, -723165, 2190970, -351650, -1566053, 4692789, +2236067, -19389092, 1363115, 11301670, 6173479, -8837432, -7182259, 14168023, 3275450, 3180960, +-2792803, 3662533, -144955, -9483288, -2471217, -9960029, 4708358, -5936182, -906775, -9705552, +-10737418, -14440217, 9030169, 6089727, -4632122, -5153424, 4053912, -13262322, -1212255, 991064, +3199214, 5818070, 2842195, 364535, -4590247, 1920387, -4215511, 3489124, -4044249, 2301566, +1222992, -4207994, -5457830, -10397579, -6858526, 2617783, -17732846, -4843650, 9721122, 5164698, +-2144263, 23131620, -3357054, 10708964, 10598369, -16881368, 1093069, -2254858, -14253923, -7467338, +-7847979, 233539, 1661616, 15978352, -2580739, 1521492, 10834055, 8024610, -1898376, 10779831, +-5127117, -3980898, -7221988, -9587978, -13942001, -5312875, 7943542, -15195057, -7748121, 11710228, +8545374, -5132486, 10714870, -4792647, -746787, -496069, 5152350, -3373160, 5134634, -3231963, +4392141, -1290101, 1812476, -2082522, 3553549, 3394635, 1475321, -617938, 4011500, -2612414, +-2945811, 3120831, -881542, 3407520, 2492692, 1683627, 2305861, 1392643, 653909, -5864778, +-1084479, -68183, 1630477, -1569274, -2474975, -2076617, -5603322, 2114198, -117038, 3525631, +1994476, 3431679, 2618320, 723165, 1057636, 13383655, -2374043, 4353486, -6565395, 3896609, +5534602, -3355980, 4725538, -7326141, -8162049, 12418898, 6686727, 8040716, 9808095, 15032, +-8165270, 10733123, -9398999, -12497818, 128312, 11840688, -1743757, -10145250, 1343788, 13923210, +-2050310, 3865471, 1290638, 19506668, 1177358, 4219269, 9544491, -1165010, -5019206, -9262634, +1264868, -1239098, -9006546, 344134, -5327907, 3622805, 13134010, 181999, -8004746, -2309082, +-7426536, -3876745, -1200443, -3065533, 1732482, -9786620, 10506027, -5532455, 17784386, -4453881, +-13012140, 785442, 577136, 6372121, 2649458, 3467112, -13346611, -10735271, 7734699, -11181947, +-15682536, 4525285, 3049964, -3512747, 16842714, -13711146, -19108846, 7167227, -13065827, 1286880, +1742146, 409096, -12567611, -7581154, -16329466, 5615670, -1692754, -862752, -2568391, -7212324, +-3315178, -5463736, -2771865, -2100776, 6156299, -4720169, 4714801, 1769527, 4869419, 856309, +581431, -6611566, -2479270, 1832877, -2194192, -7220377, 1373316, -1148367, -2885144, -2525441, +2251100, -2887829, 3058554, -1644973, 3725347, -704912, 1869385, -3760781, -3770445, -103079, +221728, -1329292, 5652177, -4977330, -4816806, -3115462, 2708514, 3019899, -3917010, 2921115, +807991, -10356777, 5744519, 595390, 14147085, 14857366, 21424908, 9796820, 4553202, 2993055, +7072201, -7259032, 8176007, -12885439, 6300180, -1241782, -1078574, -24719684, -9557376, -4036733, +8443369, -1031866, 2062121, 2709051, 2262911, -12619151, 13103945, -466541, 5346161, 464393, +12232604, -13092671, 9141838, -6420439, -293132, 9926206, -11214696, -4989142, -12222403, -4840965, +-13612362, 12451110, 9149354, 16716013, -797253, 3980898, -15173583, 3494493, -15730855, 15342160, +4354023, -2454037, 14521821, 14828375, 7584912, -8781598, -13137231, -18922016, -816581, -6677064, +-9529996, 10322417, -2806761, 23988466, -17719962, -6436009, 13720273, -14250165, -5654325, 3327526, +277025, -2048163, -13687524, 6296422, 2357937, -7425462, 6813966, 14474040, -12382928, 13972065, +17381196, -5160940, -9161165, 7183870, -7023882, 6640557, 4253628, -7228967, -5626407, -1404991, +-2229088, 10213969, 3465502, -1690607, -4908074, -8042327, -4536023, 2596308, -5134634, 2514167, +4937065, 3183645, -3440269, 2700461, -2808372, 3924526, 2562485, 4374424, 2662880, 245350, +-4522064, 3030100, 4591320, -4554813, 227633, 1637456, 1736777, 3977677, 401043, -458488, +4374961, 5370857, 1085016, -2376191, -4107063, -48855, 3733937, 4537633, 3105798, 22315040, +-5108864, 3167539, -1207423, -7323456, 9985799, -3636764, 3693135, 1224603, 14313515, -4481799, +16694538, 307090, 8309151, 7412040, -1321239, -5384279, -16268799, 7755637, 16933982, 922344, +-112743, 11786464, 9972377, -686658, 1845762, 20195474, 12636331, -3614752, 4398584, 13292924, +-3331284, -14641007, 361851, -10619307, -1668058, -6716255, 636729, -20263118, -6048925, -7355669, +359704, 4293357, 4292283, 19796578, 21845814, 11558831, -15082851, -8860518, 12288438, 17263084, +3661460, -15669651, -2561948, -3671660, -16372415, -10299868, -12389907, 15228880, -5645735, 2137820, +-15406048, 22512608, 16600049, -1802813, 6881612, 37332928, -1853278, -7577396, -14294725, -803696, +9940165, 7909183, -5731097, 11302743, 22340272, -9488120, 14264660, -6411850, 4698158, -8884140, +-4818417, -7654706, -10076530, -5131412, 6670621, 46708, -2179159, 1689533, 2796561, 12104828, +-1286880, 1274532, -94489, -5484673, -554588, -1911797, 1163399, 4944044, -3102577, -1416266, +-3855270, -1775432, 1418413, 1560147, -1360431, -7866233, -7365332, -2463701, -9081708, -7900593, +-1396938, 7165616, 6327024, 5496485, 1272921, -1169842, 381715, 3102040, 2583960, -898185, +1799591, 1331977, 11480448, 1174674, -6896107, 6821482, 2638721, -9543417, -16157130, 20975546, +-13175886, 15832323, -11581379, -17215302, 788663, 21728776, 13895830, -15985331, -10769630, 3750043, +3142842, 7380902, -1318018, 14507326, 7652021, 19102404, -7001334, -3144990, -726386, -3643206, +-18414136, -13489419, -4292820, 19207630, 3935264, 1552631, 595390, -17806934, -20381768, -15665356, +8066486, 9326521, -7004555, -4538170, 1724429, 2253784, -10892574, 3174518, 20156282, 3595425, +12607876, 12494597, 8892730, 21741124, 31085362, 10277320, 491774, 4535486, 12246562, -6446209, +-3505230, 8323647, -2851858, 4476430, -2922725, 13499082, 4723927, 9577240, -2688113, -3525631, +6790880, 18020072, -1347546, -14677514, 9390946, -22999550, -26776436, -9104257, 13798656, -8879308, +-26477400, -16117402, -6759742, 9706626, 6564858, -14251238, 25636660, -8200167, -18017924, 4747013, +6999186, -5869073, 8896488, -9235790, -3674345, 3372623, 2392834, -4835060, 4518306, 896038, +8083129, -4445291, -9696962, -5602785, 1605781, -2110440, -1967632, -741956, 62277, -754841, +6566468, -1106491, 1088774, -2641942, 3029563, 5447093, 1061394, 5221607, 1621887, -8075613, +-3569118, 46171, -6983617, -8251169, 3990562, 5818607, -4516695, -8805220, -9672803, 3970697, +1636919, -420907, 6283001, -3624953, 2302639, 8591545, -37467148, 2164664, 18742164, -3341485, +-4600447, 23095650, -12475269, -12576738, -16376710, -5242545, -5648956, -10672994, 3027415, 5384279, +8669928, 6371047, -5363341, -3973919, -2010045, -4470524, 1354525, 4433480, 18501646, -7903814, +-24395414, 13045963, -88047, -615254, -20326470, 9071508, 3714073, -1993939, 22738094, -6478422, +2295123, -2041183, 9913321, 12281996, -13623099, -1242856, -7734699, -801011, 6652905, -5005248, +10296110, -16313896, -13889924, -8587250, -14827838, -2477659, 1112397, 2327872, -20657182, -13375065, +9509058, 16542603, -8050380, -9164923, 8442295, -18651432, -17183090, -16362215, 17807472, -30393872, +9652402, -1600949, -18195628, -5692979, 14921253, 38732016, -5429913, -10658498, 12508555, 29700772, +10410464, -6674916, -7450695, -1342714, 7868380, -543313, 3531000, 17679160, 897111, -6598144, +-12747463, 10358387, -14993731, -10040560, -7605850, 5204964, -6351183, -10668162, -7035694, -6492917, +-379568, -7873212, 2410551, -6104223, -840740, -2004676, 7192997, -5674726, -4757750, -11623255, +-3772055, -2075543, -4227322, 11020886, -8454643, -10453414, -991064, -9176734, -8705362, -3846680, +912144, 8253854, -1416802, -3554086, -1931125, -5493263, 3526705, -11065983, -1296543, 11403138, +5089536, 7455527, -3230352, 2816962, 3312494, -2763275, -4690105, -6252399, 1868848, 2938295, +4656819, 5179194, -2184528, -21028696, -33427194, -1998770, 38429756, -6198712, -2700998, -25429428, +-1868848, -1751273, 2690797, 8338679, 1204738, 6923488, 551366, -473520, -18028126, 2517925, +16505559, -11166915, 20459614, -8658654, -1206349, -18148384, 11647414, -9070434, -5794985, -20933134, +-28236188, 14397267, -13748727, -13658533, 5032628, 2845416, -6024229, 1331977, 16098074, -4814122, +-15215995, -9556839, -19502910, -2460480, 5681705, 13495861, 2866354, -4053376, -3266860, -8173323, +4791573, 14022531, 2428267, -8876624, 16121160, -15404974, 1749125, -26502096, -7680476, -5242008, +32704028, -20662550, 6774237, -6752763, 4400194, -3856344, -3518115, 571768, 13380971, 3962107, +-23924042, 26390426, 8212515, 9390409, 3551938, -10593000, -7917236, -3069828, 3482682, -634581, +5424007, -14347338, -14756434, -2473901, 7405598, 16031502, -9808632, 13594645, -3207267, 5279589, +-10624675, 6109591, -17408576, 19617264, 1008780, 2164127, 6597070, 8838506, 1009854, -12279311, +-5767604, 3288871, -11480984, 3141232, 5616207, 4901632, -6766721, -4306779, 11924440, 2143726, +-11801496, -1730872, 10362682, -3853123, -14551886, 16647293, -4372277, 6433324, -2658048, -4781373, +-7683160, 5120138, 1569274, 5328981, 962073, 8947491, 1218160, 6437082, -2962991, 445603, +4185983, -2266669, -3377992, -16360604, -9920301, 35788888, -4542465, 3236258, -18604188, 16852378, +-9686762, 12483859, -9773198, 21734682, 2054068, 2473364, -10510859, -8245264, 12426414, 28088550, +-11644730, -16649978, 7927436, -6376416, 18278308, 23459648, 11375758, -3179887, 14289356, -9218074, +-8890045, 19761144, 26759794, -29674466, 2436320, 4780836, 5061082, -9836549, -719407, 12416750, +-30313342, 9419400, 17701170, 6978248, -13487271, -3412889, 21740588, 18127984, 5920076, -9918690, +-13368086, -25907780, 37416680, 7095286, 19240916, -2476586, -7961259, 4514548, 11205033, 678068, +-594316, -30154966, 4732517, 29080150, -5124970, 27881318, -16516834, -7094212, -11511586, 6757058, +25936234, -7833484, -730681, 23778550, 28651726, -9006010, -20900384, -18329846, -16247324, -7241315, +-6846715, 16809966, -20138564, 11325292, 12452721, -4243428, 1459752, 13250511, -2462090, -7097434, +7805030, 5829881, 4182225, 12213276, 2654290, -1789928, 10801843, 4171487, 4596689, 5782637, +-1801739, 972273, -2400350, 4980552, -19723564, -5177046, 888521, -3544422, 7760469, -14542222, +-1625108, 484794, 5327370, -56371, 8434242, 6128382, -3937948, 12173011, 6120329, -3836480, +8635569, 9580461, 155693, -5703717, 4588099, 9334038, 5556077, -1053341, -8651138, -3945464, +2354179, 1671816, 1472637, -8082055, 14144401, 10433549, 24978992, -7530152, 18096844, -9542344, +-3810173, 16859358, -550293, 22972706, -27645094, 17391396, 3191161, 7762080, -11092827, 8461086, +20685100, 40215388, -9190693, 10275709, -507880, -26552024, 24481314, 2561411, 9612137, -4774930, +-12399034, -4536023, -947040, -10233833, -6419366, 34188476, 2465848, 13217762, -9667435, 24273008, +223875, 11839077, 5046050, -14008573, -2916283, -8589398, 361851, 4498442, 28666222, 14672145, +1313723, 3528853, -900869, -2229625, 4796942, 2995203, 18006114, 14712410, 7452842, -8358543, +12545063, 26276074, -24547886, 23052164, 3799436, 7042673, -24664924, -11615202, -31022548, -24977382, +-4835597, 16925392, 14111652, -43020540, -191663, -19313394, 10358387, 43272332, 21760988, -27563490, +15283641, -11241540, -14179835, 23920284, 12125230, -12041478, -6681896, 21074330, 17242146, 9531606, +26718454, -6999723, 16437377, 14533096, -16834662, 23920820, 6642704, 27737972, 8523363, -2382096, +16356309, -1509681, 4359392, -19185618, 14696841, -9262634, 7714298, -6842420, 3481071, 9163313, +22091164, 5936719, 13482976, 3556770, 4401805, -7031399, -1489817, -2397666, 1936493, 11200201, +9556839, 16750372, 6272263, -1814087, 2797098, -3704409, -2032593, -16464757, -2646237, 4325032, +5423470, 14474040, 12906377, 11731166, 13532368, -35762044, -56166360, -14093935, -6754910, -13314935, +2611877, 19226958, -20106352, 28782186, 9895605, -40417788, -31819802, -5850819, 21879638, 1239098, +1410360, -3841848, -13406204, -39110508, 1175210, -32789390, -27972586, 13929116, 10268730, 10199474, +-5091147, -12451647, 29531122, 18396956, -13146895, -25478820, 19360638, 10435697, 4241280, -11756399, +-30758408, 11973295, -14654428, 4988068, -26250840, 31854162, 383863, -12152073, 2675765, 8340827, +25530896, 16632798, -7016903, -865973, 8703214, 9409200, 9619653, -5471252, -40896140, -31450972, +6094022, -3960497, 23379118, -4124242, -10521596, -28174986, 32889786, 13174812, -23480050, -23464480, +33760052, 32370094, -649614, 23860154, -3438658, 1231582, -9986873, -5463736, -18600966, 23012972, +-4464082, -4702453, -10063645, 9739912, -29078540, 14016626, -8699456, -4993437, 20205136, -24159, +2986076, 5563594, 18541910, 10029286, -7897371, 14367202, -4384625, 17258790, 6432788, -18479096, +4487167, -9172976, 8770860, -7359964, 537, -12125230, -6640020, 7342784, -12612708, 5732171, +4085051, 5880347, -11275900, -7499550, -14455249, -12071542, 16535087, -5552856, 10632728, 7246684, +-10348187, -967441, -9055939, 843961, -5778342, 21584896, 17689896, 12546673, 16529182, -3581466, +-18530100, -20622286, -3092913, 6910066, 30692910, 19304268, -7136625, -5214091, -8308614, -14775761, +-955093, 7501698, 10664941, 7296613, 3417720, 19219442, 2226404, -14074608, -35051764, 55455008, +1720134, -43441984, -2949032, -16364362, 7611219, 21095268, 19757386, -24302536, -38190312, 6273874, +-18111340, 5570573, -3434363, 16676821, -5252208, 2127620, 10410464, -16032576, -18967112, 1738925, +5389110, 16512539, -59056, -27194660, 18019536, -15298674, 14232985, -13334800, -8546448, -1763621, +-3937411, -29211146, 5764920, 7785165, -27624156, 11533061, -10653130, 5308580, -8993125, 26720066, +21369610, -27526982, -14118094, 18313204, 23650238, -28159416, 37135360, 2099165, 29969208, 21238614, +35305168, -11100880, -14492293, 7565048, -28663538, 4146254, 4014721, 50655920, -15443629, -48166984, +81187768, -38475928, -29027000, 46323908, 21405580, -27473296, 45641544, 4759898, -36528160, 45593224, +5896990, 3828427, -7657927, 6461242, 30800822, -7724499, -10253161, -16125455, 23027468, -8534100, +-5450314, -3464428, -8790724, -10052371, -13857175, 13326747, -1677722, -1552631, -4800163, -3788698, +2066416, -6420976, -10329933, 1075352, -8295730, -16297790, -16321949, 20421496, -8666170, 1638530, +19447612, -9485972, -8435853, 1059783, 9807021, 3792993, 4359392, 18098992, -11035382, 2371359, +-8053064, -5510980, -3373160, 30123826, 15403900, -5231270, 4631586, -16406775, 5470178, -15039365, +-8859981, 6846178, -3606162, -30733712, 19065360, 7385733, -5363878, -386547, -15346992, -2378875, +513785, -50184544, 6932614, 15055471, -37681896, 17246442, 9946607, -13197898, -3782793, -654446, +-9256191, -3024731, -5435818, -16786880, 442382, -8373039, -1879585, -4122632, 8145943, 29993904, +25074020, -23145042, -2594697, 31559956, -5570573, -5929739, -32329292, 3728032, 10552735, -5285494, +27463094, 65950296, -22240414, -27804544, 46902652, -3144990, -25379498, 29291140, 19229642, -15213848, +-22811108, -28128814, 8504035, 15063524, -12594992, 44227424, 28794534, -55212340, -53039088, 30852360, +-25007984, -32309428, 41790568, 6709276, 55968256, 26870926, -6890738, -7577396, -40542344, -31581968, +91973504, 25376814, -19856708, -44604308, 1134945, -18206904, -39904540, -6259915, 46504832, 19768660, +475668, 38308424, 33425046, -10704132, -42849816, 6549825, 25485800, -10687489, -10123775, 53393960, +30613454, 5225365, -5757404, -27593018, -27100170, -7059316, 25317222, 10160282, -10493679, -5013301, +-12125230, 9901510, -7854959, -10426033, -6806987, -1403381, 7486128, 10160282, 8967355, 3686156, +-24635932, -8696772, -4964982, 9076340, -9687299, 1529545, -2707977, 22329534, -14695767, -10267656, +23051090, 6310381, -11938935, 18124762, -6571300, 5162014, 1258962, 3976603, -14217415, -3991098, +18920942, 18522584, 7580081, -7640210, 4807142, -8747238, -7072201, -5471789, 9824201, -15921981, +-3515431, 12217034, 49428632, 42068668, -11613055, 30040612, 2559801, -22433688, 14198088, 25730612, +7941932, 11409581, -33535642, -6231998, 3384434, 7181186, -5354751, -28244242, -10841571, 10853919, +-7488813, -2565706, -24805584, 37810208, 4182225, -30315490, 16953310, 44301512, -23107998, -12705587, +5920076, 14924474, -14628122, -27131308, 23177792, 40321152, -3688303, -15217069, 4682051, 11739219, +17661442, 25987774, 1183800, 46933792, -1539209, -51327544, -96637, -5388037, 16384763, -4980015, +-42777876, -732292, -18765248, -17395154, 24866786, 13776644, 13961865, 18663244, -38401840, -19383188, +-7170985, -74088, 14778446, 966905, -8268349, 1498407, -13497472, -25390772, 1975148, 40592808, +-21180094, 4257923, -16581258, -11055246, 26925686, -33349884, -920197, 15275051, -12496207, 5974300, +3662533, 8837969, 9180493, -17413944, -21935472, 36384816, -8041253, -11238319, 17952964, -18030272, +10986526, 2736968, -8167954, 6086506, 14975477, -2536715, 1509681, -7250442, 3143916, 1389959, +-1639067, -6430640, 7890929, 4670240, -1473711, -313533, 6506339, 6341519, -7272454, -11550241, +5900212, -313533, 2681133, 1101659, -3760781, 6574521, -494458, 5523328, -2658048, -567473, +-4162360, 1374926, 5082557, -891206, 13702556, -5449777, -5087926, 1059246, -7004555, 4403415, +8941048, -43456480, -61774516, -55067924, 110521320, 105046312, 105297568, 296404288, 105611096, -12462384, +19736986, -205365472, -249640672, -84194240, -139990704, -194542160, 25186226, -11039140, -32314798, 213711664, +130798936, 54295904, 334333664, 157492160, 29353954, 152088544, -35952096, -182061520, -173921472, -166131488, +-229686800, -225322032, -52682604, -81506128, -132346200, 154469040, 71421008, -55996172, 223621760, 71910640, +-26088706, 252391072, 230351440, 52754548, 239036400, 242117504, -9156333, 59913184, 27577448, -233574288, +-270684416, -201976736, -381123040, -361348480, -216721904, -289900096, -217735520, 24393804, 179225760, 202946864, +436866880, 396795936, 350273920, 376967136, 278385824, 140979616, 43250856, -30924302, -212477936, -256613024, +-274256736, -309524864, -293268416, -250400896, -161514928, -117741696, -114722336, 21585968, 69672424, 136331392, +325111296, 337201632, 230875968, 288127872, 122037200, -40197136, -95472288, -148344944, -202755744, -147261008, +-98185640, -98156112, -33674692, -9592273, 839666, 51626580, 66114044, 62568008, 96487512, 60329260, +39298412, 48235704, -28786482, -27060978, 8172249, -78685952, -55397560, -20859582, -75618264, -47160352, +-5304285, -76572288, -80418968, -53872312, -78929152, -52296060, 59260348, 110400520, 176386256, 259783776, +242857312, 207364240, 195342096, 105098920, -32502702, -163337600, -288167616, -342635296, -308623456, -250413232, +-188777232, -89234392, 27912992, 110945448, 156483376, 168397616, 149017648, 132417600, 123573192, 124018256, +86437824, 40044128, 18291192, -12176769, -36501316, -33727304, -59032176, -64124936, -45552424, -35300336, +-45694692, -44913548, -56786448, -65630320, -64938832, -56726316, -46354508, -15621333, 23014046, 52843132, +70893800, 90907280, 89882928, 74788264, 53563076, 32307280, 12123619, 9306120, 1151588, -12102144, +-22018686, -24888798, -32581622, -36738076, -40644348, -44139916, -46322296, -31825170, -17904108, -5712307, +-137439, 6755447, 12523051, 22112640, 22662932, 15803869, 7158637, 11808476, 17511656, 18367964, +17174500, 16449725, 14377403, 16482474, 14841796, 7766912, -1653562, -6953552, -18049600, -22174380, +-23832774, -24934970, -28201292, -24932822, -25971668, -23615878, -14461692, -2006287, 9957345, 26101590, +36421860, 42974368, 40807560, 31504658, 14549739, -217433, -12787191, -17411260, -20653960, -17745194, +-14516453, -9337259, -6227166, -3047816, -2709588, -244813, 470836, 2520609, 2251637, 3777961, +2629057, 3165928, 1622961, 1675574, -47245, 306553, -886911, 117038, -667867, 397284, +-485331, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -3626026, -13776108, 7361037, 6051609, 3442416, -1507534, -387084, -1458141, -2828773, -4032438, -2775086, --4118874, -1673964, 3842922, 1374926, -241592, 47782, 2507187, 1237488, -1647657, -1679332, --1341640, -7150584, 2951180, 811212, 35433, -1429687, 901943, 185220, -2024540, 1098438, -2605435, 49392, -3321084, -776852, -1452236, -1469416, 376347, 3233037, -849330, 812823, --3794604, 2483028, -4680441, 3031710, 631360, 242129, 11274, 3017752, -3597035, -2584497, --4892505, 1360968, 853088, 309238, 2757906, -2933463, 628139, -340376, 60130, -2119030, -1910187, 952946, -1632625, 3074123, -4804995, 2266669, -2629594, 4952098, 2206003, 932545, -333397, -900869, -5987722, 4624606, -1447404, -74088, 767725, 1345935, 1072668, 1278827, -1427540, -358630, 407485, -588947, 1394791, -27380, 789737, -1735167, 607201, -207232, -385473, 801548, 1937030, -32749, -340376, 736050, 762357, -709743, 999117, -1110786, -976568, 288837, 869194, 147103, 560493, -229781, 219043, 844498, 374736, -46708, -578747, -45634, 388158, 420370, -50466, 548682, -155693, 13286481, 6214281, 8701604, -2284386, 3011846, -578747, 3453691, 277025, 3078418, -2288144, 5927055, -1560684, -6602439, --1908576, 216359, 290984, -2042794, 5048197, 362388, 1926293, 5030481, 2348273, 135828, --81604, 1258962, -4591857, -2909304, 1721208, 2233920, -1717987, 550293, 2135136, -4401805, -6245420, -569620, 857920, -923955, 2273648, 3338263, 90731, -3347390, -3568044, 6933688, -80531, -1925219, -362925, 4027069, 2846490, -1961726, -2824478, -5968394, -1950452, -2401961, -178778, -2161979, 467078, -5796595, -2473901, 759672, -2467459, 1370632, 2296734, -1112933, --230854, 1190780, -1565516, 2391760, -242666, 2988760, -36507, -922881, -3452080, 461172, --4264903, 1397475, 4832, 2452963, -28454, 2516851, 3069828, 2755759, 31139, -1658931, --203474, -556198, 3396782, -855235, 374199, 2297271, 2249489, -81604, 1238024, 548682, -1125281, -408559, 1377611, -467078, 2064269, 569620, 339302, -94489, 122407, 298500, -1003949, 2779381, -8902393, -2887829, -2025614, 1540283, 1760400, -6102075, -2729989, -1217623, -1462436, 3228742, 1019518, 4430259, -3665218, -5308043, 1534377, 169651, -951872, -3639448, -11770895, -623844, 3131031, 693100, 366146, -274878, -1814624, -4485557, -3514357, -1110249, -3007014, -2510409, 6162741, -2097555, -576063, -5062156, -6013491, -528818, -3835943, -2143189, -8197482, -4492536, -1243393, -4362076, 1593433, 196495, -1579474, -4583267, -872415, 26844, --5191005, 600759, -2794950, 4140885, 2728915, -2401424, -1273458, -1332514, 1271310, -237834, -3296924, -1716913, -2167885, -2236604, 7475391, 6740951, -2318209, -6514392, 881005, 2000918, --209380, 1900523, -2702071, 520765, -3133716, 2225330, 170188, 7168838, 4426501, 6815040, --6215892, 2680597, 4159139, 149250, 3156264, 2263448, 469762, 4685273, -864362, -509491, -1202054, 642098, -1929514, 1862942, -1478543, -1276142, -133681, 467615, -211527, 701690, --1104880, 540092, -141734, 136365, 607738, 854162, 411780, 991601, 938450, -725850, --946503, 734439, 274341, -1698660, -690416, 1348620, -828392, -29341606, -4699231, -8488466, --9533217, 2529736, -3198140, -8375186, -6860137, 1109712, -6758668, 919660, 10182294, -2566780, -4393752, 3252901, 8591545, 2176475, -5915781, 1320166, 9333501, -4384088, 4665945, -6903086, --6211060, 2004676, 2704756, 7259569, 467078, -4524748, 4278861, -3049964, 3292093, -420907, -4646618, -3951370, -2498597, -4402342, 92879, 750546, -1672353, 3307662, -7658464, 949188, -7794292, 1640141, -2166274, 2947958, -3933653, -2051921, -9680856, -2918430, -289910, 1480153, -197032, 5179194, -7767449, 717796, -1039382, 3889093, 2131915, -1548336, 5587753, -4913980, --625992, -3951370, -7465190, -3197066, -1695438, -2158758, 5665062, -5086852, -8069170, 279710, -2680597, -850940, -2308545, 2745558, 3122978, -2304787, -1800128, -3187403, -1272921, 6478422, --3000572, 3554622, -1050656, -152471, -574452, -257698, -3352222, 788663, -1997160, -135828, --214748, -525597, 104153, -816581, -1034013, -1076426, -261456, 290984, -629750, 1043677, -504122, -14596446, 8338142, 9349607, -484258, 5240397, 2416993, 11050414, 14737107, 1875827, -1953673, 4208531, 1857573, 2434710, -2060511, 2901251, -2393371, 3856881, 4533875, -12610024, -6564858, -1389959, -2301566, -3906273, -5068599, 2052994, 3617436, 5731097, 1156957, 970126, --7321846, 315680, -2109903, -2464238, -1051193, 978179, 464393, -569083, 7274601, -382252, --2360085, 2384781, -2770254, 3702799, 4930086, 5463199, 2883534, 595390, -3001109, 6103686, -1983201, 818728, 682900, 801011, 484794, -3536369, -4933844, 4517769, -4595615, 4328254, -3997004, 2901251, -596464, -3279745, 3003256, 3846680, 8578123, 3939559, 3265249, 1999844, --8303783, -2567317, 1069447, -1363652, 3636227, -7230041, 406948, 2390149, -6722161, -635655, -2312840, -1638530, 910533, -3964255, 1539746, 510564, -1649268, 3120831, 1878511, 125628, -3464428, -1548336, -1464584, -342524, 754841, 1400159, 5230734, 848793, 1815697, 1225139, --1074, 1134945, -808528, -982474, -1347009, 916976, -718870, -661425, 631897, 553514, --586800, 1762010, -981400, 1233193, 1181653, -513785, 1752884, 493921, 775242, 853625, -163746, 186294, 2029909, -139586, 27090506, 8092256, 2059437, 5229123, 13574244, 5388037, -16355772, 3934190, -3532074, -1225676, -1304060, -1611687, 4484483, 6928319, -3182034, 1445257, -4932233, -1864016, -6708202, 5327907, -572841, 2505577, -2241973, -3451006, 5602785, 1240172, --442919, -1626182, -6103686, -3100967, 3408057, 789737, -2055679, -1130113, 1002338, 2276333, -6274947, 1916092, -5652714, -1357747, 438624, -1840930, 2127083, 2900714, -5695664, -7001871, --334471, 1705102, -668404, 5339718, -9852118, -2144263, -4430259, -5620502, -542240, -467078, -1537061, 5280663, 18790, 767189, 1788854, -890669, 7158637, 4491999, -5746130, -5133560, -3956739, 8556649, -670552, -4044786, 8540006, 4450660, 2034741, -3749507, -3966939, 4160213, -288300, 3141769, -1845225, -6172942, -3318399, -4207994, -2581275, 2407866, -3358665, 452045, -1537598, -1253057, 1493575, 1015223, 1282585, 695248, -2147484, 1215476, -630286, -1184337, --468688, 1641214, 1366337, 206695, -1835562, 1682554, -684510, 2915746, -390305, 392990, --2721936, -3597572, 1262720, -3386045, -589484, -528281, -1843615, -923418, 477278, -3036542, --1199907, -312459, 400506, -636192, 2199023, 300111, -745714, 13365938, 6340983, 12045773, --4131222, 198642, -3139621, 12135430, -12481712, -1656784, 3069291, -2270427, -2552821, 4130685, --1492501, -3714610, 10457172, 6069326, 1115081, 17941690, -4975720, -1085016, -3877282, 238371, -2845416, -4502200, -693100, -2287070, 6707665, -5653251, 1431835, 504122, -1909650, 725313, -3901441, 2833068, -5516886, -9342628, 122407, 2049773, 7722351, 9285719, 9037685, 939524, --5368709, 6681359, -16047608, -2516851, -6364068, -9174050, 6393059, -2026688, -3106335, 5171678, --1938104, -2609193, 13816373, 276489, -4206921, 4958003, 273267, 3800509, 2617246, 1927904, -8331163, -4941897, -3201898, 609349, -7339026, 56908, 1269163, -1721208, 2382633, 4284230, -8764418, -3227668, 2856153, 7774965, 4549444, 2388002, 1345399, -2518462, -5697811, 2984466, -4170413, -810675, 327491, -763967, -815507, -3064996, 524523, -853625, 446677, -2852932, --1600412, 134755, -622770, 2883534, 1098975, 137976, -3935264, -1611150, 1802276, -2109366, --142271, 1606318, 1401770, -2459406, 2306398, 2010045, 515396, 2614561, 2133525, -4307316, --895501, -1575716, 1101122, 2537789, 2825552, -477815, -1739462, 517544, -994285, -20691004, --31077846, -5250061, 1542967, -550293, 861141, -1467268, -6233072, -3526168, -4969814, -1352378, -5051419, 6012954, -5476620, -8090645, 6899865, 1411434, -4437238, 340376, -741419, -4944581, --4135517, 11442867, 5829345, -6189048, 3125663, 1271847, 4897874, -6007586, 6649146, -6680285, -4566087, 2960843, -1418413, -3134253, 2944200, -12435004, -6168110, 7563975, 12222940, 6755984, --8578660, 164283, -6088116, 8098161, 1666447, 2070711, 561030, -6746857, 3237869, 9912248, -1105417, 7481833, 5309117, 3401614, 5735929, 12164421, -3410204, -12342662, 5938329, -15032, --2935073, 574989, 10544145, -4370666, -7370701, 3548717, -1971390, -1307281, -2807835, -1708860, --3333968, -5806259, -2918430, 7026030, -9688909, -6121939, -3593814, -7000260, -6781754, -467078, -4159676, -6426882, -149250, -2419140, -2721399, -5799280, -3659849, -6650757, -388695, -5129802, --429497, -192737, 4590783, 3224984, -2385854, -2576981, -3403762, -1083942, -2420214, -2340220, -2765422, -4552129, 1654636, 325344, -2897492, 248571, -1911261, 1021129, -1009854, -3732864, --4534412, -102542, 1136556, 1802813, -896038, 729608, 1374926, -61740, -2390686, -380105, --3049964, 251792, 1348620, 1030255, 1279363, -11861089, -7886634, 2116345, 1819456, 16039555, --14032732, -9439264, -5478231, -2538326, -1823751, 5253282, 4887136, -7282654, 7488276, -1660542, -3343632, -5217849, 11209865, -2101313, -4354023, 7404524, 5175973, 4348118, -7783018, -7136625, -9474698, -4915053, 2729989, 2435247, -3560528, 8229158, 2382633, 86973, 1716376, 6065568, -7572028, 2456185, -6903086, 1679869, -9812390, 5895917, 2447058, -10792179, 7631083, 1889249, --5747740, 10063108, 3085397, -2608656, 5730560, -811212, 10926934, -2426120, -2840047, -2243047, --1524177, 14415521, 2944200, 335544, 3818226, -11949136, -7598871, -8092256, 818728, 7710003, -937914, 9540733, -12295418, -4939213, -7829189, -7101192, 17755394, -1730335, 6298033, 4654671, --3896072, -811749, -2552821, 1432372, 871342, 4948876, 2901251, 9830106, -5323612, 889058, --1733019, 2197413, -133681, -113817, -95026, -2002529, -9270150, 3502546, 2083596, 1438814, --2509872, -794032, -1246614, -5065914, -391916, -1769527, -3403762, 1938641, -2881923, 1269163, -1581085, 1358820, 2047089, -3510599, -2008971, -2359548, -2263448, 1345399, 2494839, 1560684, --906775, -426276, -696858, -1057099, 3654480, -1223529, 2583960, 1706176, -1069447, 1168231, --794032, 49929, 868120, 1042066, -16153372, 5048734, -6943352, 3936875, -4860293, 13048648, -2188286, -9134859, 1427540, -9313100, 7548942, 14420890, -12305081, 8123394, 2995203, -358630, -5933498, 15370077, -5888400, -14496, 4688494, -16779364, 972273, 7634305, -4676683, 5471789, -5946382, -3061238, 15046881, -7505992, -13633837, -5859409, 1628866, 363998, -2799782, -5873905, -4093641, 3802120, -5906, -9591736, -2263448, -2430415, 6396817, -4201015, 25241522, -3176128, -3602941, -1161789, -1086090, -12253542, 1245004, 9088151, 7339562, 24630564, -2661806, -2384244, --5114769, -971736, -6948184, -525597, 9862856, -5259188, -1036161, 1788317, 2314987, 9709847, -7885560, 2233920, 19050864, -3607773, -17677012, -17680770, -12486007, -2569464, 5560372, -1745904, --4660040, 8409546, -530965, 7466801, -4623533, -878321, 6046240, 5143760, -1891396, -1809792, -598074, 1572495, -1983738, -4132832, -5956583, -2006287, -2544768, -753767, -4254702, 3157338, --1296543, 944356, -2167348, -3049427, 4051228, 1820529, -2108829, -571231, -1734093, -1823751, -1750736, -1139240, -2047089, -4025995, 3144453, 1248762, -1755568, -3052111, -4075924, -767189, --2813204, -2820720, 3383361, -2031520, 646929, 129386, -1505386, 1458141, 634045, -563714, --788127, -905164, 28686086, -20657718, -15741592, -4974109, -9954660, -11293080, 13909252, 5714991, -2774012, -4312684, -2794413, 16980154, -4916127, -7027640, -20225538, -2835215, -486942, 9640054, -3541738, -4011500, 1270774, 8474507, 3815005, 5345087, 12984223, 16372415, 4547834, -5935108, -4231080, -9636833, 6741488, 5614596, -3440269, 465467, -7507603, 3195456, 264141, -14519674, -14355928, -1136556, -6583648, 8975945, -13494787, -2979634, 15003931, 8676908, -108448, 725850, --18707804, 6768869, 10591389, 6167573, 3585224, -847182, -13770202, -40575092, -3146064, 8501888, -11566884, -848793, -11838540, 20340966, -9205189, 9400073, 15375446, 12777528, 2471217, 15417859, -1869921, 5643050, 3362960, 9454297, 1966558, 3164317, 19516332, -6249178, -4063576, 16615618, -8704288, 4691715, -6585796, 1902134, 13496935, -1183264, 10857677, 2719251, 2517925, 6990596, --3415573, -51003, 917512, -419833, -2803003, 5523865, 2646237, -6991133, 4220342, 3018288, -4078072, 2202781, -1862942, 300111, -2086817, -2356327, 3464428, 4417374, 1952600, 2806224, --1920924, -1791001, -1188095, -2272575, -3164317, -4796405, 1017907, -2952253, 2720325, -864362, -1701881, -4389994, -2840047, -646393, -1265942, -1047972, -1870995, 974421, 4855998, 5126044, -2088428, 751082, -2355790, 4140349, 14743549, 13261248, -3218541, -7385733, -966368, -4516158, -16099685, 9822590, -27028766, -3392487, 2595234, -13246753, 5461588, -19145354, 14611479, 3068217, --1857037, 7407745, 4221416, -4326106, -5954972, -4979478, 20483772, 431644, 185757, 4079145, --2385854, 7696045, 24068996, 9297530, -3129421, -4560719, -3151969, 13379360, 5218922, 13553306, -9959492, 6582575, 4338991, -6420439, -6341519, 5850283, -13764296, 2052994, -7160784, -6611566, -799938, 9379135, 1684701, 434329, 3806415, -3408057, 16595754, 20769924, 24477556, -456877, -11343009, -14683419, 5853504, 7972533, -6264747, 11958263, -9525701, -19979114, 2920041, -10626286, --1231045, 598611, -10130217, 2301566, 14587320, -8994735, -8156680, 6874632, 13536126, -903554, --4559108, 11853573, 1389422, 2418067, -8049306, -2029372, -266825, 9739912, -4785668, 522912, --2052458, 1911797, 111132, 1662152, 2849711, 1506460, 317828, 715649, 2489471, 2554432, --1990717, -4816806, -523449, -942208, -3930969, -5412196, -104690, -2624225, 3976603, -3735011, -3088082, 4628901, -62814, -8291971, -594853, 1351841, -2602750, -4023848, 775778, 2022930, -12766790, 3978214, 4076998, -587337, 495532, -1277753, 3864934, -1084479, 4100620, 10338523, -9780714, -1414655, -372052, -1971390, 664109, 3083250, 3913252, 5421323, 1213865, -17067126, -31088048, 1981054, 8065949, 23797876, -8814884, 2441689, -4564477, 6280316, -6886980, 6870874, --16770774, -19845970, -639413, -11753715, -933619, -1095754, -1369021, -3354906, 1232119, -5506148, -4920959, -15784542, -6349573, -21295522, -1119913, 4878009, 10166724, 22986128, 12703440, 3966939, -2888903, 6593312, 5048734, 3868692, 9237401, 9721122, -3140695, -19467476, -19337016, -13242995, --7955890, 1912334, 6448894, -7147900, -11359115, -19758998, 515933, -7566122, 17955648, -8062191, -4470524, -13727252, -6664179, -2435783, -5688148, -26501022, -27628988, 7521025, 2761664, 672699, -14076218, 8022462, 11286637, 9098351, -17238924, -3788161, 32156958, -6021544, -12254615, 4680441, --7157026, 3233574, -19954954, 7996692, -9191230, 1294933, -1376537, 13007845, 705985, 5174362, --11384885, 2074469, -6451041, -2948495, -7833484, -5952825, 3986267, 4469451, -10417443, -3555696, -677531, 1870458, 2501282, 1279900, -4084514, 4436165, 1793686, 1463510, -612033, -382789, -1349157, 4487167, -4996121, 4531191, -1305670, -258235, -1828046, 2838974, -2971044, -1795833, -3994857, -7777649, -233539, 1387811, -4750771, -1720671, -10834592, 7619809, 9050033, -740882, -2074469, 2306398, 3032247, -4923107, 5006858, 3119757, 3890704, -3631395, 2087891, 2921115, -4613869, 18566070, 13973139, 1933272, 14853071, -2698850, -6172405, 8281234, -11466489, -22173842, --33356326, 2891050, 647466, 12973486, 9350144, -12307229, -6405944, -32421098, -2238215, -15044197, -3482145, -7518877, -3690988, -6153615, -2463164, -2429341, -11348914, -4976257, -13217225, 10610717, --2695092, 9096741, 23251342, -12198781, 6653978, -1802813, -5836861, 6113886, -12518756, -21093122, -10127533, 5092758, 10073309, 6445672, -44467408, -20049982, 5867462, -14671608, -1306207, -12518219, -18536006, 22504018, -1150514, 24864102, 3438658, 11358041, -3321084, -703838, -13895830, 8884140, -17840758, 3993783, 29742112, 820876, 4050691, -8631274, -13146358, 17752174, 27911382, 9877351, -5382131, 2873333, 10528039, 1031329, 1976222, -26048976, -19236622, -1869385, 1353452, 3586835, -19634980, 21278878, -3936338, 1508607, -7301445, 4524748, -13588740, 464930, -14376866, -12032888, -6241661, -236223, 1549410, -7949985, 5151277, 6452115, 4235375, 6532109, 7552163, 773631, --4320737, 3440269, -5892695, -1318018, -3641059, -8494908, -2486249, -4647692, -3844533, 7259032, -3938485, -2433099, -5666673, -8414915, -5586679, 5864778, -5666136, -450435, 459562, 4046933, --8039642, -6318971, 2860448, 10097468, 6381248, 2675228, 1074, -5907728, -715112, -3554086, --6944425, 11997991, -17316234, -8686571, -32442572, -40658308, -29970282, -13834627, 9296457, -366683, --7033546, -14920716, 130460, 26661010, 13204877, -23513872, -3754875, -4942971, -16446504, -3054259, -1319629, 11163157, 8395587, -17570174, 12648142, -9971840, 5424544, -9296994, 2879776, -13486197, --4906464, 6524056, -24082418, -4725538, -9021579, 7836705, -5924371, -22442814, 26373246, 25239912, -435939, -10341744, 14407468, -34336652, -10635413, 10096394, -11431055, -7374996, -795643, -11165841, -2281165, -2949569, -22863722, 9750113, -2839510, -7153805, -7766912, -6161131, -1352378, -6383395, --9648107, 18945100, -8984535, -9099962, 9139690, -339839, 31330712, -6351183, -19292994, 10981158, --10037875, -8692477, -15036144, 10385231, 19351512, -37701224, 3027952, 31647466, -5088463, -2063195, --12483859, 21544630, -1456531, -11858942, -1492501, -11139535, -8793946, 15581604, -9345849, -887448, --5156645, -6649146, -10934450, 4558034, 3747896, 5638755, -1244467, -8967355, -6019397, 225486, -1622424, -13607530, -3807489, -8789114, 13507672, -4592394, 1023813, 1814087, 1726577, 1327682, --10868415, 7277285, 430570, -4275640, 9867687, 1417339, 12892418, -2375117, 14886357, 3336653, -6044093, 7159174, -9538585, -6431714, 4746476, -7997766, -6104223, 2242510, 93416, -5652177, --12916040, 6238440, -1804423, -25639344, 51239496, 36588288, -730144, -9760313, 8099235, -30726732, -471373, 38268160, -6787122, -13293461, 580894, 43364136, -6257231, 9520869, -9274445, -19610820, --15913928, -4014721, -7304666, 7984881, 11024644, 594853, -16382616, -22856742, -21086678, -3405372, --4691178, -11348377, 10544682, 8579197, -9264244, -11225971, -12312597, 6867116, 2316598, 8442832, -21591874, -147640, -18580566, 12549358, 4875862, 4224101, 1238561, -368293, -9001178, 16015933, -8130910, -6446209, -7744363, -5108864, -21111374, 5773510, 15322833, 4650913, -14813342, 17202418, -12542915, 7098507, 1828582, -9082782, 4646081, -30010010, 4590783, -1899986, 26644904, -9645423, --13340705, 5636608, -7012071, -601832, -19431506, -3545496, -5291400, 25923886, -16995722, -31537944, --20646444, -40970228, 7909183, -8381629, -2840047, -21896818, -14069776, -36223756, -16156056, -12707734, --2010045, 8806830, -11822434, -2107755, -2358474, -1907502, -3374234, 7686381, -13728326, 5823439, --5497558, -10629507, 1466195, -3119220, 9543417, 4951024, 20938, -5373541, 12363063, 11632382, -6882685, -4614943, -6448357, -6283537, -5919539, 13079249, 21321292, 2439542, 19570556, 21658984, -7036230, 297963, -19663434, -2172180, 3403225, 2758443, -2057826, -5433671, -16702054, -465467, -10810970, 1684164, -12614319, -3231426, -9555765, 48660904, 1969779, 8034273, -8090108, -16030965, --21452824, -7159711, 6118181, 14218489, 11858405, -10372883, -15032, -21548924, -7814693, 7655243, --18065170, -9762461, -6817724, 26239028, 13769128, 14421963, 13722957, -15284715, 2852395, 5481989, -6263136, -1516124, 17790828, -3951907, 7864085, 13713831, 5327907, 3777961, 11683385, 15924665, --9354439, -18816252, 12604655, -2080912, 112206, -19883552, -18414136, 4203699, -9185861, -7230578, -16275779, -16760036, 21508122, 13807783, -9472550, 11254962, -12523588, -12718472, -15295989, 22119082, --15482820, 6941204, 6818798, -25438018, 2462090, 2896956, -19993610, -34592740, -30835718, 22454090, --23164906, -476741, -20824148, -4874251, -14875619, -1311576, 9707163, 5850819, -15140297, 15686294, -18337900, 38159172, 10060961, -25773562, 9125195, -15890842, 8629126, -22679574, 12198244, -9754944, -1770063, -4716948, 9326521, -2872260, -9118216, -21773336, -21553756, 2329483, 2164664, 13618268, --9681930, -1007707, 21450678, 5980205, 14895483, 4424353, -3790846, -1700807, -4999879, -14370424, -5213554, -17321066, -10110353, 3648038, 14384382, -18898930, 10580652, 1910187, 13606456, -4641786, -7654706, 13602698, 15112379, 15069966, -6800007, 7329899, 11865921, 12677670, 2571612, 7553237, -4052839, -5842230, 23527294, 10828149, 11904576, -10129143, -11198053, 2925410, 3961571, 4523138, --9756018, 804233, -21365852, -421981, 3660923, 4101694, -18845780, -19755776, -31079458, 21531208, -2255395, 7348689, -5089536, 11368778, -8499203, -8471823, 6454262, 16367583, 3869766, 10730976, -33520072, -4942434, -20231444, -43077448, -6127308, -16704738, -8184597, -10334765, -19985020, -14163728, --29850022, -3565897, -490700, 10339597, 30896920, -25853018, -9953050, -4343286, 10089415, 10846403, -30597348, 4058207, -35047472, -8149701, 7127498, 27261768, 7128572, -42506756, -17058000, 38252052, -3429532, 38156488, -22588306, 1119913, 2924336, 23047868, -2231773, 20960514, 31685048, 4373351, -26866094, 18779744, 4485557, 37196564, 31801548, 10219875, 49638012, 38070052, 23858544, -40424232, --2712809, 15657303, 9070971, -603443, -29313152, -35058208, -18170932, -50125488, -8003672, -37313064, --14287746, -9699647, -53630184, -50922208, -35444756, 17313014, 433792, -11880416, -745177, -4000762, --1197222, -10027138, -5354751, 12302934, 4844723, 2008434, -1807108, 1829119, -2553358, 7561827, --1416802, -13515725, 23111220, 3599183, 5475010, -7057168, 1008244, -974421, 12054899, -789200, -6978785, -4350265, -12829067, 4931696, 9715216, 25542708, 22720376, 1351841, -350577, 16246251, -8046621, 19003082, 15811385, -5252745, 18252538, 10122164, 3591667, 11383274, 7355132, -6713571, --3091303, -14862197, 8882529, -13284334, -5952825, -23219130, -14104673, 6804839, -27217208, 29079612, --12339978, 18874770, 9918153, -25286620, 4086125, 14969572, -9364102, -26396870, 17564268, -7487739, -15074261, -9163313, 4124242, 5539434, -15606837, -2347200, -6678138, -798864, -25778930, -21007222, -25777320, 708133, 10633802, -20519744, 21134460, 18116708, -13638669, 11376295, -19957102, -4819490, --11034308, 14279693, 36479840, -1089848, 44188772, -11549704, -1778117, 1654099, 4800163, -3436511, --24437290, 42608224, 28365038, -3781182, 23868744, 18020072, 24761560, -9702331, -281320, -44136156, -20046760, 20189568, -5420249, -7874823, 27633282, 14069239, 14690936, 33666640, 5948530, -17884244, --20851530, 6005975, -6383932, -25534654, 21052320, -29518774, 1473711, 6088653, -20496658, -32748052, --21800180, -8623757, 2517388, 25753698, 17722646, 7965017, -49431316, -14326937, 30090540, -2749316, --10616622, 8452496, -26709328, -17146584, 22805202, -488016, 503048, -9940165, 319438, 13380971, --4097399, -10529649, 7984881, -3894462, -18966576, -10786810, 2046015, -1824287, -1010928, -88047, --8235063, -380641, -12982612, -18071074, 2538326, -2046015, -28912646, -3677566, -17451526, -10576894, --3077881, 3979824, 5458904, 15518791, -14551886, -10437307, 3368328, 15100568, -16124918, -17855252, -24656870, -4270808, -1233193, -5134634, -9127, -10733660, 4516158, 11017665, 6458020, 9523553, -860604, 3273839, 399432, 947577, 3810173, 7858180, -6274947, -2044941, 3435437, 5571647, -3225521, -37112276, 21213380, 32320166, -384400, 37285684, 11595338, -32851132, -19841676, -2818036, --11106249, -20078436, 21206938, 24283208, -2128693, 16827682, 23235774, -18405546, 16458852, 27332636, --1440962, -37476276, 14862197, -1295470, -7152195, 10041097, 28357522, -9213242, -13928042, 6670621, --12093017, -16374563, -891206, 24489366, 21336860, -35319664, 11397769, 14807437, -23333484, -15272904, -28689308, -7950522, -41137196, -5483600, 35034048, -11545946, -59541668, 62517008, -17594334, -7412040, --30665530, 40338332, 13449153, -14125074, 29724932, -17490180, -12700218, -7716983, 75688600, 25034290, --31323196, -28082106, 29192356, -6836514, 42378444, 650688, 31873490, -43638480, 35034584, 59826212, -5925981, -6561637, -10297184, -10570451, -23658290, 56450364, 38283728, -33935072, 9762461, -35661112, --5823976, 3745212, 7679402, 4909685, 10760504, 907312, -38716444, 18162342, 2643552, -4119948, --577673, 17854716, -7509214, 3905736, -5429913, 9232569, -3430068, 2342368, -5968931, 11650636, -730681, -2406256, 6923488, 9354976, -21080236, 2536178, 13703093, 5076652, -15119895, 8176007, -24430310, -23716810, -36514200, 7192997, 4823785, 14368276, 14370424, -1965484, -32960116, -11262478, -9342628, 4575751, 9602473, -5029407, 1648194, -1351841, -10834055, 9663676, -8422968, -4042101, -27074400, 61814244, 11985643, -23951958, -5672578, -5903970, 10870025, 9266929, -19291920, -27580132, -7364259, -23348516, 4649839, -14553497, -16672526, -3676492, 2834679, 7853885, -18589156, -7565585, --7369627, -23199802, 19412178, -7338489, 1249836, -3494493, -15443092, 6062883, 4338454, 472983, --3343632, 105764, -576063, -9197136, -19655380, 8329552, -9766219, 8447664, 5972689, -19708532, --15915001, -1882806, -2306398, -2316598, -4243428, 15924128, -11100343, 1555315, -20881058, 17719424, --20461224, -10900090, 10125922, 199179, -16408923, 12928925, -22053046, 1586990, 6590628, -673773, -2368675, 10458782, 4966056, -22780506, 11438035, 1517197, -13735305, 19366008, 7618735, -21627844, --2406256, -17265232, -2312840, 6895570, 5701569, -22021372, 27869506, -14862197, -8169028, 15446313, -10257993, 2449205, 10320806, -958851, 14464376, -6558415, 2913062, -1893007, 6966974, 5398774, --4234301, -5131949, 5523328, -7063074, 674847, 1118302, 857383, -4185983, 620623, -3911105, --6370510, -3507378, -6927246, -445066, 5070746, 8888435, 3259343, 985158, 4667019, 5794448, --8247948, 12504797, 3217468, -471910, -8373039, -4784057, 3852586, 9878962, -2032593, -274878, --4989142, 1568737, 1327145, -4170413, -5679558, -5013838, -13074417, -4795868, -5172215, -37270652, --46196668, -17137994, 140181296, 111932216, 74486544, 135393472, -53650048, -128351336, -40929428, -207361552, --80572512, 5742372, -48380660, 94933272, 130046776, 21129628, 82752208, 141669504, 3310346, 38977364, --9000104, -166731712, -137624176, -104264088, -103234904, -51078972, 79307648, 42402064, 61435748, 173954768, -74080672, 10727755, 104480984, 48369920, -59404768, 20262046, -49780820, -168939312, -40350144, -88296472, --173680960, -28976534, 4323422, -42566884, 118004760, 135805248, 53891104, 159705136, 161977168, 30131344, -62635120, 28004260, -101885752, -114612280, -106918912, -192938528, -170141376, -64991980, -78841640, 16670379, -103666016, 141468176, 117253680, 180717728, 134419056, 71949832, 10296110, -22557168, -103901704, -126967824, --93415000, -111559088, -92699352, -4059281, -4912906, 21184926, 100746512, 48422536, 61683248, 96221224, --1659468, -29931090, -15545097, -60267516, -34130496, -20172388, -21897354, 24756728, 51219096, 19784230, -28519656, 32111322, -22996328, -8253854, -9575093, -61426084, 8858370, 25792352, -66283692, -704912, --5792301, -67152352, 25383794, 11486353, -75803488, 48258252, 72078680, 17015050, 144827904, 90020368, --1432909, 77054936, 14229227, -97466232, -80732504, -126968360, -180053088, -135258720, -87785912, -47177532, -61988728, 133791456, 156934352, 195139152, 191397168, 135486352, 30331060, -13999446, -96536904, -176648784, --171616160, -152574960, -127942240, -27273042, 14398878, 22842784, 89078696, 94531160, 65950296, 67800888, -52951580, 23376434, 32805498, 23974508, -4731980, -10854456, -26884884, -55110872, -59734944, -59287192, --60063508, -45511620, -9881109, 2686502, 19469624, 40834940, 49560164, 52799108, 52614960, 38297148, -12673912, 86436, -14816563, -26673358, -30714922, -23895050, -24931212, -19400368, -6634114, -4094715, --6136435, 509491, 1262720, 1978369, 15060840, 16094853, 7620346, 10130217, 8276939, 4808753, -10649371, 8918500, 1738925, 609349, -7515119, -13951128, -12724377, -12803834, -13896904, -10638097, --6460705, -1726040, 4377646, 10545218, 12138651, 12225088, 11315628, 7940321, 3300146, 998043, --3935801, -7623567, -6795712, -5242008, -4534949, -571231, 1367947, 2940442, 2141041, 1300301, --1304060, -2422899, -4431870, -4017405, -2769180, -553514, 440234, 2940979, 4458176, 6529961, -6132140, 4676683, 2588792, 1676111, -1213328, -2881386, -4314832, -4791036, -5034239, -3559454, --2879239, -1054951, 143345, 1454383, 1560147, 2246268, 1554778, 1308891, 200253, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +13776108, 7361037, 6051609, 3442416, -1507534, -387084, -1458141, -2828773, -4032438, -2775086, +-4118874, -1673964, 3842922, 1374926, -241592, 47782, 2507187, 1237488, -1647657, -1679332, +-1341640, -7150584, 2951180, 811212, 35433, -1429687, 901943, 185220, -2024540, 1098438, +2605435, 49392, -3321084, -776852, -1452236, -1469416, 376347, 3233037, -849330, 812823, +-3794604, 2483028, -4680441, 3031710, 631360, 242129, 11274, 3017752, -3597035, -2584497, +-4892505, 1360968, 853088, 309238, 2757906, -2933463, 628139, -340376, 60130, -2119030, +1910187, 952946, -1632625, 3074123, -4804995, 2266669, -2629594, 4952098, 2206003, 932545, +333397, -900869, -5987722, 4624606, -1447404, -74088, 767725, 1345935, 1072668, 1278827, +1427540, -358630, 407485, -588947, 1394791, -27380, 789737, -1735167, 607201, -207232, +385473, 801548, 1937030, -32749, -340376, 736050, 762357, -709743, 999117, -1110786, +976568, 288837, 869194, 147103, 560493, -229781, 219043, 844498, 374736, -46708, +578747, -45634, 388158, 420370, -50466, 548682, -155693, 13286481, 6214281, 8701604, +2284386, 3011846, -578747, 3453691, 277025, 3078418, -2288144, 5927055, -1560684, -6602439, +-1908576, 216359, 290984, -2042794, 5048197, 362388, 1926293, 5030481, 2348273, 135828, +-81604, 1258962, -4591857, -2909304, 1721208, 2233920, -1717987, 550293, 2135136, -4401805, +6245420, -569620, 857920, -923955, 2273648, 3338263, 90731, -3347390, -3568044, 6933688, +80531, -1925219, -362925, 4027069, 2846490, -1961726, -2824478, -5968394, -1950452, -2401961, +178778, -2161979, 467078, -5796595, -2473901, 759672, -2467459, 1370632, 2296734, -1112933, +-230854, 1190780, -1565516, 2391760, -242666, 2988760, -36507, -922881, -3452080, 461172, +-4264903, 1397475, 4832, 2452963, -28454, 2516851, 3069828, 2755759, 31139, -1658931, +-203474, -556198, 3396782, -855235, 374199, 2297271, 2249489, -81604, 1238024, 548682, +1125281, -408559, 1377611, -467078, 2064269, 569620, 339302, -94489, 122407, 298500, +1003949, 2779381, -8902393, -2887829, -2025614, 1540283, 1760400, -6102075, -2729989, -1217623, +1462436, 3228742, 1019518, 4430259, -3665218, -5308043, 1534377, 169651, -951872, -3639448, +11770895, -623844, 3131031, 693100, 366146, -274878, -1814624, -4485557, -3514357, -1110249, +3007014, -2510409, 6162741, -2097555, -576063, -5062156, -6013491, -528818, -3835943, -2143189, +8197482, -4492536, -1243393, -4362076, 1593433, 196495, -1579474, -4583267, -872415, 26844, +-5191005, 600759, -2794950, 4140885, 2728915, -2401424, -1273458, -1332514, 1271310, -237834, +3296924, -1716913, -2167885, -2236604, 7475391, 6740951, -2318209, -6514392, 881005, 2000918, +-209380, 1900523, -2702071, 520765, -3133716, 2225330, 170188, 7168838, 4426501, 6815040, +-6215892, 2680597, 4159139, 149250, 3156264, 2263448, 469762, 4685273, -864362, -509491, +1202054, 642098, -1929514, 1862942, -1478543, -1276142, -133681, 467615, -211527, 701690, +-1104880, 540092, -141734, 136365, 607738, 854162, 411780, 991601, 938450, -725850, +-946503, 734439, 274341, -1698660, -690416, 1348620, -828392, -29341606, -4699231, -8488466, +-9533217, 2529736, -3198140, -8375186, -6860137, 1109712, -6758668, 919660, 10182294, -2566780, +4393752, 3252901, 8591545, 2176475, -5915781, 1320166, 9333501, -4384088, 4665945, -6903086, +-6211060, 2004676, 2704756, 7259569, 467078, -4524748, 4278861, -3049964, 3292093, -420907, +4646618, -3951370, -2498597, -4402342, 92879, 750546, -1672353, 3307662, -7658464, 949188, +7794292, 1640141, -2166274, 2947958, -3933653, -2051921, -9680856, -2918430, -289910, 1480153, +197032, 5179194, -7767449, 717796, -1039382, 3889093, 2131915, -1548336, 5587753, -4913980, +-625992, -3951370, -7465190, -3197066, -1695438, -2158758, 5665062, -5086852, -8069170, 279710, +2680597, -850940, -2308545, 2745558, 3122978, -2304787, -1800128, -3187403, -1272921, 6478422, +-3000572, 3554622, -1050656, -152471, -574452, -257698, -3352222, 788663, -1997160, -135828, +-214748, -525597, 104153, -816581, -1034013, -1076426, -261456, 290984, -629750, 1043677, +504122, -14596446, 8338142, 9349607, -484258, 5240397, 2416993, 11050414, 14737107, 1875827, +1953673, 4208531, 1857573, 2434710, -2060511, 2901251, -2393371, 3856881, 4533875, -12610024, +6564858, -1389959, -2301566, -3906273, -5068599, 2052994, 3617436, 5731097, 1156957, 970126, +-7321846, 315680, -2109903, -2464238, -1051193, 978179, 464393, -569083, 7274601, -382252, +-2360085, 2384781, -2770254, 3702799, 4930086, 5463199, 2883534, 595390, -3001109, 6103686, +1983201, 818728, 682900, 801011, 484794, -3536369, -4933844, 4517769, -4595615, 4328254, +3997004, 2901251, -596464, -3279745, 3003256, 3846680, 8578123, 3939559, 3265249, 1999844, +-8303783, -2567317, 1069447, -1363652, 3636227, -7230041, 406948, 2390149, -6722161, -635655, +2312840, -1638530, 910533, -3964255, 1539746, 510564, -1649268, 3120831, 1878511, 125628, +3464428, -1548336, -1464584, -342524, 754841, 1400159, 5230734, 848793, 1815697, 1225139, +-1074, 1134945, -808528, -982474, -1347009, 916976, -718870, -661425, 631897, 553514, +-586800, 1762010, -981400, 1233193, 1181653, -513785, 1752884, 493921, 775242, 853625, +163746, 186294, 2029909, -139586, 27090506, 8092256, 2059437, 5229123, 13574244, 5388037, +16355772, 3934190, -3532074, -1225676, -1304060, -1611687, 4484483, 6928319, -3182034, 1445257, +4932233, -1864016, -6708202, 5327907, -572841, 2505577, -2241973, -3451006, 5602785, 1240172, +-442919, -1626182, -6103686, -3100967, 3408057, 789737, -2055679, -1130113, 1002338, 2276333, +6274947, 1916092, -5652714, -1357747, 438624, -1840930, 2127083, 2900714, -5695664, -7001871, +-334471, 1705102, -668404, 5339718, -9852118, -2144263, -4430259, -5620502, -542240, -467078, +1537061, 5280663, 18790, 767189, 1788854, -890669, 7158637, 4491999, -5746130, -5133560, +3956739, 8556649, -670552, -4044786, 8540006, 4450660, 2034741, -3749507, -3966939, 4160213, +288300, 3141769, -1845225, -6172942, -3318399, -4207994, -2581275, 2407866, -3358665, 452045, +1537598, -1253057, 1493575, 1015223, 1282585, 695248, -2147484, 1215476, -630286, -1184337, +-468688, 1641214, 1366337, 206695, -1835562, 1682554, -684510, 2915746, -390305, 392990, +-2721936, -3597572, 1262720, -3386045, -589484, -528281, -1843615, -923418, 477278, -3036542, +-1199907, -312459, 400506, -636192, 2199023, 300111, -745714, 13365938, 6340983, 12045773, +-4131222, 198642, -3139621, 12135430, -12481712, -1656784, 3069291, -2270427, -2552821, 4130685, +-1492501, -3714610, 10457172, 6069326, 1115081, 17941690, -4975720, -1085016, -3877282, 238371, +2845416, -4502200, -693100, -2287070, 6707665, -5653251, 1431835, 504122, -1909650, 725313, +3901441, 2833068, -5516886, -9342628, 122407, 2049773, 7722351, 9285719, 9037685, 939524, +-5368709, 6681359, -16047608, -2516851, -6364068, -9174050, 6393059, -2026688, -3106335, 5171678, +-1938104, -2609193, 13816373, 276489, -4206921, 4958003, 273267, 3800509, 2617246, 1927904, +8331163, -4941897, -3201898, 609349, -7339026, 56908, 1269163, -1721208, 2382633, 4284230, +8764418, -3227668, 2856153, 7774965, 4549444, 2388002, 1345399, -2518462, -5697811, 2984466, +4170413, -810675, 327491, -763967, -815507, -3064996, 524523, -853625, 446677, -2852932, +-1600412, 134755, -622770, 2883534, 1098975, 137976, -3935264, -1611150, 1802276, -2109366, +-142271, 1606318, 1401770, -2459406, 2306398, 2010045, 515396, 2614561, 2133525, -4307316, +-895501, -1575716, 1101122, 2537789, 2825552, -477815, -1739462, 517544, -994285, -20691004, +-31077846, -5250061, 1542967, -550293, 861141, -1467268, -6233072, -3526168, -4969814, -1352378, +5051419, 6012954, -5476620, -8090645, 6899865, 1411434, -4437238, 340376, -741419, -4944581, +-4135517, 11442867, 5829345, -6189048, 3125663, 1271847, 4897874, -6007586, 6649146, -6680285, +4566087, 2960843, -1418413, -3134253, 2944200, -12435004, -6168110, 7563975, 12222940, 6755984, +-8578660, 164283, -6088116, 8098161, 1666447, 2070711, 561030, -6746857, 3237869, 9912248, +1105417, 7481833, 5309117, 3401614, 5735929, 12164421, -3410204, -12342662, 5938329, -15032, +-2935073, 574989, 10544145, -4370666, -7370701, 3548717, -1971390, -1307281, -2807835, -1708860, +-3333968, -5806259, -2918430, 7026030, -9688909, -6121939, -3593814, -7000260, -6781754, -467078, +4159676, -6426882, -149250, -2419140, -2721399, -5799280, -3659849, -6650757, -388695, -5129802, +-429497, -192737, 4590783, 3224984, -2385854, -2576981, -3403762, -1083942, -2420214, -2340220, +2765422, -4552129, 1654636, 325344, -2897492, 248571, -1911261, 1021129, -1009854, -3732864, +-4534412, -102542, 1136556, 1802813, -896038, 729608, 1374926, -61740, -2390686, -380105, +-3049964, 251792, 1348620, 1030255, 1279363, -11861089, -7886634, 2116345, 1819456, 16039555, +-14032732, -9439264, -5478231, -2538326, -1823751, 5253282, 4887136, -7282654, 7488276, -1660542, +3343632, -5217849, 11209865, -2101313, -4354023, 7404524, 5175973, 4348118, -7783018, -7136625, +9474698, -4915053, 2729989, 2435247, -3560528, 8229158, 2382633, 86973, 1716376, 6065568, +7572028, 2456185, -6903086, 1679869, -9812390, 5895917, 2447058, -10792179, 7631083, 1889249, +-5747740, 10063108, 3085397, -2608656, 5730560, -811212, 10926934, -2426120, -2840047, -2243047, +-1524177, 14415521, 2944200, 335544, 3818226, -11949136, -7598871, -8092256, 818728, 7710003, +937914, 9540733, -12295418, -4939213, -7829189, -7101192, 17755394, -1730335, 6298033, 4654671, +-3896072, -811749, -2552821, 1432372, 871342, 4948876, 2901251, 9830106, -5323612, 889058, +-1733019, 2197413, -133681, -113817, -95026, -2002529, -9270150, 3502546, 2083596, 1438814, +-2509872, -794032, -1246614, -5065914, -391916, -1769527, -3403762, 1938641, -2881923, 1269163, +1581085, 1358820, 2047089, -3510599, -2008971, -2359548, -2263448, 1345399, 2494839, 1560684, +-906775, -426276, -696858, -1057099, 3654480, -1223529, 2583960, 1706176, -1069447, 1168231, +-794032, 49929, 868120, 1042066, -16153372, 5048734, -6943352, 3936875, -4860293, 13048648, +2188286, -9134859, 1427540, -9313100, 7548942, 14420890, -12305081, 8123394, 2995203, -358630, +5933498, 15370077, -5888400, -14496, 4688494, -16779364, 972273, 7634305, -4676683, 5471789, +5946382, -3061238, 15046881, -7505992, -13633837, -5859409, 1628866, 363998, -2799782, -5873905, +4093641, 3802120, -5906, -9591736, -2263448, -2430415, 6396817, -4201015, 25241522, -3176128, +3602941, -1161789, -1086090, -12253542, 1245004, 9088151, 7339562, 24630564, -2661806, -2384244, +-5114769, -971736, -6948184, -525597, 9862856, -5259188, -1036161, 1788317, 2314987, 9709847, +7885560, 2233920, 19050864, -3607773, -17677012, -17680770, -12486007, -2569464, 5560372, -1745904, +-4660040, 8409546, -530965, 7466801, -4623533, -878321, 6046240, 5143760, -1891396, -1809792, +598074, 1572495, -1983738, -4132832, -5956583, -2006287, -2544768, -753767, -4254702, 3157338, +-1296543, 944356, -2167348, -3049427, 4051228, 1820529, -2108829, -571231, -1734093, -1823751, +1750736, -1139240, -2047089, -4025995, 3144453, 1248762, -1755568, -3052111, -4075924, -767189, +-2813204, -2820720, 3383361, -2031520, 646929, 129386, -1505386, 1458141, 634045, -563714, +-788127, -905164, 28686086, -20657718, -15741592, -4974109, -9954660, -11293080, 13909252, 5714991, +2774012, -4312684, -2794413, 16980154, -4916127, -7027640, -20225538, -2835215, -486942, 9640054, +3541738, -4011500, 1270774, 8474507, 3815005, 5345087, 12984223, 16372415, 4547834, -5935108, +4231080, -9636833, 6741488, 5614596, -3440269, 465467, -7507603, 3195456, 264141, -14519674, +14355928, -1136556, -6583648, 8975945, -13494787, -2979634, 15003931, 8676908, -108448, 725850, +-18707804, 6768869, 10591389, 6167573, 3585224, -847182, -13770202, -40575092, -3146064, 8501888, +11566884, -848793, -11838540, 20340966, -9205189, 9400073, 15375446, 12777528, 2471217, 15417859, +1869921, 5643050, 3362960, 9454297, 1966558, 3164317, 19516332, -6249178, -4063576, 16615618, +8704288, 4691715, -6585796, 1902134, 13496935, -1183264, 10857677, 2719251, 2517925, 6990596, +-3415573, -51003, 917512, -419833, -2803003, 5523865, 2646237, -6991133, 4220342, 3018288, +4078072, 2202781, -1862942, 300111, -2086817, -2356327, 3464428, 4417374, 1952600, 2806224, +-1920924, -1791001, -1188095, -2272575, -3164317, -4796405, 1017907, -2952253, 2720325, -864362, +1701881, -4389994, -2840047, -646393, -1265942, -1047972, -1870995, 974421, 4855998, 5126044, +2088428, 751082, -2355790, 4140349, 14743549, 13261248, -3218541, -7385733, -966368, -4516158, +16099685, 9822590, -27028766, -3392487, 2595234, -13246753, 5461588, -19145354, 14611479, 3068217, +-1857037, 7407745, 4221416, -4326106, -5954972, -4979478, 20483772, 431644, 185757, 4079145, +-2385854, 7696045, 24068996, 9297530, -3129421, -4560719, -3151969, 13379360, 5218922, 13553306, +9959492, 6582575, 4338991, -6420439, -6341519, 5850283, -13764296, 2052994, -7160784, -6611566, +799938, 9379135, 1684701, 434329, 3806415, -3408057, 16595754, 20769924, 24477556, -456877, +11343009, -14683419, 5853504, 7972533, -6264747, 11958263, -9525701, -19979114, 2920041, -10626286, +-1231045, 598611, -10130217, 2301566, 14587320, -8994735, -8156680, 6874632, 13536126, -903554, +-4559108, 11853573, 1389422, 2418067, -8049306, -2029372, -266825, 9739912, -4785668, 522912, +-2052458, 1911797, 111132, 1662152, 2849711, 1506460, 317828, 715649, 2489471, 2554432, +-1990717, -4816806, -523449, -942208, -3930969, -5412196, -104690, -2624225, 3976603, -3735011, +3088082, 4628901, -62814, -8291971, -594853, 1351841, -2602750, -4023848, 775778, 2022930, +12766790, 3978214, 4076998, -587337, 495532, -1277753, 3864934, -1084479, 4100620, 10338523, +9780714, -1414655, -372052, -1971390, 664109, 3083250, 3913252, 5421323, 1213865, -17067126, +31088048, 1981054, 8065949, 23797876, -8814884, 2441689, -4564477, 6280316, -6886980, 6870874, +-16770774, -19845970, -639413, -11753715, -933619, -1095754, -1369021, -3354906, 1232119, -5506148, +4920959, -15784542, -6349573, -21295522, -1119913, 4878009, 10166724, 22986128, 12703440, 3966939, +2888903, 6593312, 5048734, 3868692, 9237401, 9721122, -3140695, -19467476, -19337016, -13242995, +-7955890, 1912334, 6448894, -7147900, -11359115, -19758998, 515933, -7566122, 17955648, -8062191, +4470524, -13727252, -6664179, -2435783, -5688148, -26501022, -27628988, 7521025, 2761664, 672699, +14076218, 8022462, 11286637, 9098351, -17238924, -3788161, 32156958, -6021544, -12254615, 4680441, +-7157026, 3233574, -19954954, 7996692, -9191230, 1294933, -1376537, 13007845, 705985, 5174362, +-11384885, 2074469, -6451041, -2948495, -7833484, -5952825, 3986267, 4469451, -10417443, -3555696, +677531, 1870458, 2501282, 1279900, -4084514, 4436165, 1793686, 1463510, -612033, -382789, +1349157, 4487167, -4996121, 4531191, -1305670, -258235, -1828046, 2838974, -2971044, -1795833, +3994857, -7777649, -233539, 1387811, -4750771, -1720671, -10834592, 7619809, 9050033, -740882, +2074469, 2306398, 3032247, -4923107, 5006858, 3119757, 3890704, -3631395, 2087891, 2921115, +4613869, 18566070, 13973139, 1933272, 14853071, -2698850, -6172405, 8281234, -11466489, -22173842, +-33356326, 2891050, 647466, 12973486, 9350144, -12307229, -6405944, -32421098, -2238215, -15044197, +3482145, -7518877, -3690988, -6153615, -2463164, -2429341, -11348914, -4976257, -13217225, 10610717, +-2695092, 9096741, 23251342, -12198781, 6653978, -1802813, -5836861, 6113886, -12518756, -21093122, +10127533, 5092758, 10073309, 6445672, -44467408, -20049982, 5867462, -14671608, -1306207, -12518219, +18536006, 22504018, -1150514, 24864102, 3438658, 11358041, -3321084, -703838, -13895830, 8884140, +17840758, 3993783, 29742112, 820876, 4050691, -8631274, -13146358, 17752174, 27911382, 9877351, +5382131, 2873333, 10528039, 1031329, 1976222, -26048976, -19236622, -1869385, 1353452, 3586835, +19634980, 21278878, -3936338, 1508607, -7301445, 4524748, -13588740, 464930, -14376866, -12032888, +6241661, -236223, 1549410, -7949985, 5151277, 6452115, 4235375, 6532109, 7552163, 773631, +-4320737, 3440269, -5892695, -1318018, -3641059, -8494908, -2486249, -4647692, -3844533, 7259032, +3938485, -2433099, -5666673, -8414915, -5586679, 5864778, -5666136, -450435, 459562, 4046933, +-8039642, -6318971, 2860448, 10097468, 6381248, 2675228, 1074, -5907728, -715112, -3554086, +-6944425, 11997991, -17316234, -8686571, -32442572, -40658308, -29970282, -13834627, 9296457, -366683, +-7033546, -14920716, 130460, 26661010, 13204877, -23513872, -3754875, -4942971, -16446504, -3054259, +1319629, 11163157, 8395587, -17570174, 12648142, -9971840, 5424544, -9296994, 2879776, -13486197, +-4906464, 6524056, -24082418, -4725538, -9021579, 7836705, -5924371, -22442814, 26373246, 25239912, +435939, -10341744, 14407468, -34336652, -10635413, 10096394, -11431055, -7374996, -795643, -11165841, +2281165, -2949569, -22863722, 9750113, -2839510, -7153805, -7766912, -6161131, -1352378, -6383395, +-9648107, 18945100, -8984535, -9099962, 9139690, -339839, 31330712, -6351183, -19292994, 10981158, +-10037875, -8692477, -15036144, 10385231, 19351512, -37701224, 3027952, 31647466, -5088463, -2063195, +-12483859, 21544630, -1456531, -11858942, -1492501, -11139535, -8793946, 15581604, -9345849, -887448, +-5156645, -6649146, -10934450, 4558034, 3747896, 5638755, -1244467, -8967355, -6019397, 225486, +1622424, -13607530, -3807489, -8789114, 13507672, -4592394, 1023813, 1814087, 1726577, 1327682, +-10868415, 7277285, 430570, -4275640, 9867687, 1417339, 12892418, -2375117, 14886357, 3336653, +6044093, 7159174, -9538585, -6431714, 4746476, -7997766, -6104223, 2242510, 93416, -5652177, +-12916040, 6238440, -1804423, -25639344, 51239496, 36588288, -730144, -9760313, 8099235, -30726732, +471373, 38268160, -6787122, -13293461, 580894, 43364136, -6257231, 9520869, -9274445, -19610820, +-15913928, -4014721, -7304666, 7984881, 11024644, 594853, -16382616, -22856742, -21086678, -3405372, +-4691178, -11348377, 10544682, 8579197, -9264244, -11225971, -12312597, 6867116, 2316598, 8442832, +21591874, -147640, -18580566, 12549358, 4875862, 4224101, 1238561, -368293, -9001178, 16015933, +8130910, -6446209, -7744363, -5108864, -21111374, 5773510, 15322833, 4650913, -14813342, 17202418, +12542915, 7098507, 1828582, -9082782, 4646081, -30010010, 4590783, -1899986, 26644904, -9645423, +-13340705, 5636608, -7012071, -601832, -19431506, -3545496, -5291400, 25923886, -16995722, -31537944, +-20646444, -40970228, 7909183, -8381629, -2840047, -21896818, -14069776, -36223756, -16156056, -12707734, +-2010045, 8806830, -11822434, -2107755, -2358474, -1907502, -3374234, 7686381, -13728326, 5823439, +-5497558, -10629507, 1466195, -3119220, 9543417, 4951024, 20938, -5373541, 12363063, 11632382, +6882685, -4614943, -6448357, -6283537, -5919539, 13079249, 21321292, 2439542, 19570556, 21658984, +7036230, 297963, -19663434, -2172180, 3403225, 2758443, -2057826, -5433671, -16702054, -465467, +10810970, 1684164, -12614319, -3231426, -9555765, 48660904, 1969779, 8034273, -8090108, -16030965, +-21452824, -7159711, 6118181, 14218489, 11858405, -10372883, -15032, -21548924, -7814693, 7655243, +-18065170, -9762461, -6817724, 26239028, 13769128, 14421963, 13722957, -15284715, 2852395, 5481989, +6263136, -1516124, 17790828, -3951907, 7864085, 13713831, 5327907, 3777961, 11683385, 15924665, +-9354439, -18816252, 12604655, -2080912, 112206, -19883552, -18414136, 4203699, -9185861, -7230578, +16275779, -16760036, 21508122, 13807783, -9472550, 11254962, -12523588, -12718472, -15295989, 22119082, +-15482820, 6941204, 6818798, -25438018, 2462090, 2896956, -19993610, -34592740, -30835718, 22454090, +-23164906, -476741, -20824148, -4874251, -14875619, -1311576, 9707163, 5850819, -15140297, 15686294, +18337900, 38159172, 10060961, -25773562, 9125195, -15890842, 8629126, -22679574, 12198244, -9754944, +1770063, -4716948, 9326521, -2872260, -9118216, -21773336, -21553756, 2329483, 2164664, 13618268, +-9681930, -1007707, 21450678, 5980205, 14895483, 4424353, -3790846, -1700807, -4999879, -14370424, +5213554, -17321066, -10110353, 3648038, 14384382, -18898930, 10580652, 1910187, 13606456, -4641786, +7654706, 13602698, 15112379, 15069966, -6800007, 7329899, 11865921, 12677670, 2571612, 7553237, +4052839, -5842230, 23527294, 10828149, 11904576, -10129143, -11198053, 2925410, 3961571, 4523138, +-9756018, 804233, -21365852, -421981, 3660923, 4101694, -18845780, -19755776, -31079458, 21531208, +2255395, 7348689, -5089536, 11368778, -8499203, -8471823, 6454262, 16367583, 3869766, 10730976, +33520072, -4942434, -20231444, -43077448, -6127308, -16704738, -8184597, -10334765, -19985020, -14163728, +-29850022, -3565897, -490700, 10339597, 30896920, -25853018, -9953050, -4343286, 10089415, 10846403, +30597348, 4058207, -35047472, -8149701, 7127498, 27261768, 7128572, -42506756, -17058000, 38252052, +3429532, 38156488, -22588306, 1119913, 2924336, 23047868, -2231773, 20960514, 31685048, 4373351, +26866094, 18779744, 4485557, 37196564, 31801548, 10219875, 49638012, 38070052, 23858544, -40424232, +-2712809, 15657303, 9070971, -603443, -29313152, -35058208, -18170932, -50125488, -8003672, -37313064, +-14287746, -9699647, -53630184, -50922208, -35444756, 17313014, 433792, -11880416, -745177, -4000762, +-1197222, -10027138, -5354751, 12302934, 4844723, 2008434, -1807108, 1829119, -2553358, 7561827, +-1416802, -13515725, 23111220, 3599183, 5475010, -7057168, 1008244, -974421, 12054899, -789200, +6978785, -4350265, -12829067, 4931696, 9715216, 25542708, 22720376, 1351841, -350577, 16246251, +8046621, 19003082, 15811385, -5252745, 18252538, 10122164, 3591667, 11383274, 7355132, -6713571, +-3091303, -14862197, 8882529, -13284334, -5952825, -23219130, -14104673, 6804839, -27217208, 29079612, +-12339978, 18874770, 9918153, -25286620, 4086125, 14969572, -9364102, -26396870, 17564268, -7487739, +15074261, -9163313, 4124242, 5539434, -15606837, -2347200, -6678138, -798864, -25778930, -21007222, +25777320, 708133, 10633802, -20519744, 21134460, 18116708, -13638669, 11376295, -19957102, -4819490, +-11034308, 14279693, 36479840, -1089848, 44188772, -11549704, -1778117, 1654099, 4800163, -3436511, +-24437290, 42608224, 28365038, -3781182, 23868744, 18020072, 24761560, -9702331, -281320, -44136156, +20046760, 20189568, -5420249, -7874823, 27633282, 14069239, 14690936, 33666640, 5948530, -17884244, +-20851530, 6005975, -6383932, -25534654, 21052320, -29518774, 1473711, 6088653, -20496658, -32748052, +-21800180, -8623757, 2517388, 25753698, 17722646, 7965017, -49431316, -14326937, 30090540, -2749316, +-10616622, 8452496, -26709328, -17146584, 22805202, -488016, 503048, -9940165, 319438, 13380971, +-4097399, -10529649, 7984881, -3894462, -18966576, -10786810, 2046015, -1824287, -1010928, -88047, +-8235063, -380641, -12982612, -18071074, 2538326, -2046015, -28912646, -3677566, -17451526, -10576894, +-3077881, 3979824, 5458904, 15518791, -14551886, -10437307, 3368328, 15100568, -16124918, -17855252, +24656870, -4270808, -1233193, -5134634, -9127, -10733660, 4516158, 11017665, 6458020, 9523553, +860604, 3273839, 399432, 947577, 3810173, 7858180, -6274947, -2044941, 3435437, 5571647, +3225521, -37112276, 21213380, 32320166, -384400, 37285684, 11595338, -32851132, -19841676, -2818036, +-11106249, -20078436, 21206938, 24283208, -2128693, 16827682, 23235774, -18405546, 16458852, 27332636, +-1440962, -37476276, 14862197, -1295470, -7152195, 10041097, 28357522, -9213242, -13928042, 6670621, +-12093017, -16374563, -891206, 24489366, 21336860, -35319664, 11397769, 14807437, -23333484, -15272904, +28689308, -7950522, -41137196, -5483600, 35034048, -11545946, -59541668, 62517008, -17594334, -7412040, +-30665530, 40338332, 13449153, -14125074, 29724932, -17490180, -12700218, -7716983, 75688600, 25034290, +-31323196, -28082106, 29192356, -6836514, 42378444, 650688, 31873490, -43638480, 35034584, 59826212, +5925981, -6561637, -10297184, -10570451, -23658290, 56450364, 38283728, -33935072, 9762461, -35661112, +-5823976, 3745212, 7679402, 4909685, 10760504, 907312, -38716444, 18162342, 2643552, -4119948, +-577673, 17854716, -7509214, 3905736, -5429913, 9232569, -3430068, 2342368, -5968931, 11650636, +730681, -2406256, 6923488, 9354976, -21080236, 2536178, 13703093, 5076652, -15119895, 8176007, +24430310, -23716810, -36514200, 7192997, 4823785, 14368276, 14370424, -1965484, -32960116, -11262478, +9342628, 4575751, 9602473, -5029407, 1648194, -1351841, -10834055, 9663676, -8422968, -4042101, +27074400, 61814244, 11985643, -23951958, -5672578, -5903970, 10870025, 9266929, -19291920, -27580132, +7364259, -23348516, 4649839, -14553497, -16672526, -3676492, 2834679, 7853885, -18589156, -7565585, +-7369627, -23199802, 19412178, -7338489, 1249836, -3494493, -15443092, 6062883, 4338454, 472983, +-3343632, 105764, -576063, -9197136, -19655380, 8329552, -9766219, 8447664, 5972689, -19708532, +-15915001, -1882806, -2306398, -2316598, -4243428, 15924128, -11100343, 1555315, -20881058, 17719424, +-20461224, -10900090, 10125922, 199179, -16408923, 12928925, -22053046, 1586990, 6590628, -673773, +2368675, 10458782, 4966056, -22780506, 11438035, 1517197, -13735305, 19366008, 7618735, -21627844, +-2406256, -17265232, -2312840, 6895570, 5701569, -22021372, 27869506, -14862197, -8169028, 15446313, +10257993, 2449205, 10320806, -958851, 14464376, -6558415, 2913062, -1893007, 6966974, 5398774, +-4234301, -5131949, 5523328, -7063074, 674847, 1118302, 857383, -4185983, 620623, -3911105, +-6370510, -3507378, -6927246, -445066, 5070746, 8888435, 3259343, 985158, 4667019, 5794448, +-8247948, 12504797, 3217468, -471910, -8373039, -4784057, 3852586, 9878962, -2032593, -274878, +-4989142, 1568737, 1327145, -4170413, -5679558, -5013838, -13074417, -4795868, -5172215, -37270652, +-46196668, -17137994, 140181296, 111932216, 74486544, 135393472, -53650048, -128351336, -40929428, -207361552, +-80572512, 5742372, -48380660, 94933272, 130046776, 21129628, 82752208, 141669504, 3310346, 38977364, +-9000104, -166731712, -137624176, -104264088, -103234904, -51078972, 79307648, 42402064, 61435748, 173954768, +74080672, 10727755, 104480984, 48369920, -59404768, 20262046, -49780820, -168939312, -40350144, -88296472, +-173680960, -28976534, 4323422, -42566884, 118004760, 135805248, 53891104, 159705136, 161977168, 30131344, +62635120, 28004260, -101885752, -114612280, -106918912, -192938528, -170141376, -64991980, -78841640, 16670379, +103666016, 141468176, 117253680, 180717728, 134419056, 71949832, 10296110, -22557168, -103901704, -126967824, +-93415000, -111559088, -92699352, -4059281, -4912906, 21184926, 100746512, 48422536, 61683248, 96221224, +-1659468, -29931090, -15545097, -60267516, -34130496, -20172388, -21897354, 24756728, 51219096, 19784230, +28519656, 32111322, -22996328, -8253854, -9575093, -61426084, 8858370, 25792352, -66283692, -704912, +-5792301, -67152352, 25383794, 11486353, -75803488, 48258252, 72078680, 17015050, 144827904, 90020368, +-1432909, 77054936, 14229227, -97466232, -80732504, -126968360, -180053088, -135258720, -87785912, -47177532, +61988728, 133791456, 156934352, 195139152, 191397168, 135486352, 30331060, -13999446, -96536904, -176648784, +-171616160, -152574960, -127942240, -27273042, 14398878, 22842784, 89078696, 94531160, 65950296, 67800888, +52951580, 23376434, 32805498, 23974508, -4731980, -10854456, -26884884, -55110872, -59734944, -59287192, +-60063508, -45511620, -9881109, 2686502, 19469624, 40834940, 49560164, 52799108, 52614960, 38297148, +12673912, 86436, -14816563, -26673358, -30714922, -23895050, -24931212, -19400368, -6634114, -4094715, +-6136435, 509491, 1262720, 1978369, 15060840, 16094853, 7620346, 10130217, 8276939, 4808753, +10649371, 8918500, 1738925, 609349, -7515119, -13951128, -12724377, -12803834, -13896904, -10638097, +-6460705, -1726040, 4377646, 10545218, 12138651, 12225088, 11315628, 7940321, 3300146, 998043, +-3935801, -7623567, -6795712, -5242008, -4534949, -571231, 1367947, 2940442, 2141041, 1300301, +-1304060, -2422899, -4431870, -4017405, -2769180, -553514, 440234, 2940979, 4458176, 6529961, +6132140, 4676683, 2588792, 1676111, -1213328, -2881386, -4314832, -4791036, -5034239, -3559454, +-2879239, -1054951, 143345, 1454383, 1560147, 2246268, 1554778, 1308891, 200253, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -5080947, -15756088, 6017786, 3842385, 1228898, -3318936, 29528, 3036005, 5667210, 95563, 539555, -350040, -2090575, 571768, 1917166, -369904, 1873143, 2923262, 3861713, 1644973, 1580548, -2058363, 1801739, -3539053, 3601330, 6796249, -3220152, 1944547, 1058710, 1910187, 344671, -4031364, -2618320, -914291, -2356327, 2333778, 6717329, -1115081, 3258807, -73551, -1520955, --5522254, 2071248, -2853469, 2552284, 1310502, 2851858, -301721, -1715303, 917512, -1181116, -3865471, 498216, -3033321, 3908420, -839666, 3051574, 2367601, -120259, 2273648, 4407174, --1224603, -1539209, -1235340, 2196339, -1786706, -2369748, 2755222, 38118, 1853815, -2927020, -4347044, 263604, -1206886, -500364, -466004, 1733556, -1609002, -2590939, 1550483, 2335925, -2216740, -2051921, -3065533, 1249299, -94489, -357019, -1173063, -1114544, 1555852, -390842, --213138, -942745, -1118839, 237297, -801011, 365072, 251256, 1156420, 806917, -324807, -423591, 665720, -675384, -270046, 56908, -296890, -514322, 415001, 1119376, 651761, -839666, 35433, -64961, 305480, -689879, 16643, 266825, 12268037, 9552007, 4851166, -664646, -1774895, 5521181, -3218541, -3528316, -770410, -6137509, 3718905, 212601, -2499671, -1410360, 3575024, 6055367, -2794950, 3478924, 7940858, -2290828, 83215, 1780264, 4139812, --1067836, 4507568, 3140695, 4559645, 1013612, 3487514, -3553549, 6068252, -751082, 5855651, -2863133, -619012, 697395, -942745, -161598, -2085744, -1022202, -2582349, -1945620, 2053531, --572304, -5627481, -1293322, 617402, -183073, -3132642, -3280281, -1634772, -1432909, 4434017, --1793149, -4835060, -6504191, -7118372, -2485712, -3127273, -281320, 1113470, 3420405, -4652524, --2144263, 558346, -497679, -2078764, 493921, -4898947, -489089, -5776194, 3066607, -3140695, --1561221, 4022774, -609885, 2763812, 768799, 1012002, 3081639, 782758, -2528125, -1139240, -221728, -2433636, 1271847, 2490544, 1179505, -1906429, 1408749, 2083059, 378494, 1131187, --638340, -1118839, -813359, -1118839, 771484, -112206, 705448, -934692, -725313, 801011, -1125818, 6493454, -14061723, -3764002, -7129646, -1315334, -15569, 7743826, -3774740, -12590160, --4449049, -316754, 4784057, 1499481, -4685273, -10931766, -2826625, 3000035, -1239098, 6161668, -228707, 2700461, -623307, -4852240, -5295158, 3183645, 3869229, 455803, 1246077, -192737, -2359548, 551366, -6511708, 345745, 9134859, 1231045, -2288144, -845035, -2445447, 559956, --2112050, -3976603, 6110128, -1905892, -2566243, 5558762, -2924336, -4937602, 209917, 31139, -144418, -7121593, 5771363, -2208687, -154619, 5337034, 4838818, -7636452, -1953673, 1474784, -1835562, -678605, 4162897, 1148904, 2057826, 2894808, 413927, 2312303, 3483219, 759136, -537, 3263638, -8728447, -1933272, 198105, 4432406, 2439542, -1077500, -903554, 3221762, -2982318, -3478387, -520228, -1243393, 81604, 1902671, 2406256, 478352, 2979097, -311385, --2181844, -1026497, 213675, 215285, 256624, -818728, 2063195, -439160, 721555, -328565, --985158, 607201, -62277, -426276, -815507, 162672, -770410, -132070, -1355599, -1029182, -233539, -212064, -1071058, -2044941, -785979, 432718, 1677185, -27995670, -10999948, -5665062, --7897908, 2476049, -2705293, -2696703, -292058, 3513820, -3163780, -3840238, -5513665, 1097364, -5032091, 1095754, -3766150, -4748087, 1455457, 4146254, 3897146, -5394479, -7880728, 582505, --7364259, 3934190, -4832, 2741263, -163746, 2644626, -2870649, -1239098, 7794829, -9390409, -4359929, 2174327, 1095217, -3338800, 2119030, 4605816, 1278290, -5725192, 1199907, -3636227, -2841658, -7809861, -248034, -7075422, 5486821, -587874, -1352378, -2015950, 3043521, -11865921, -5517959, -3428995, -7126962, 2860448, 5826660, 6521908, 3901441, 1386201, -410706, 768799, --539018, 4207458, -2350421, 1187559, 3371013, 8157217, 1358820, 156766, -5805185, 3733937, --2856153, 664109, 223875, 4342212, -3794067, 224949, 4052839, -357019, -4672925, -6522982, -5454072, 452045, 1074816, 2718178, -495532, 1322313, 1228361, -39728, 1040456, -454730, -230318, 1449015, 1410360, 1428614, -2297271, 933082, -1707250, -768799, -1427003, 1403381, --1627793, -15898358, 7781407, 12417824, 2408940, 983011, 6897181, 2332167, 2107218, 3775813, -514859, 3950833, 3966939, -3202972, -592169, 539555, -3905736, -2417530, -54761, 1919850, --2305861, 12911745, 6854768, -1883343, 918586, 4100083, 5157719, 5893232, -2471754, 4150012, -4828080, 272194, 1404991, 1393180, 2747169, 1994476, 1209033, 2728378, 2600603, -5586679, --4323422, -8600672, 925029, -3047279, -4305168, 4423817, -1263794, 2784750, -10661719, 11733314, --857920, -5580773, -1042066, 9300752, 6725382, -1483911, 234613, 4503273, -2148558, 1935957, --3436511, -7323993, 855772, 683974, -5892159, -2329483, -5807870, 1035087, 2137283, 1311039, --2827699, -5127654, -7820599, -9310415, -6701760, -2609193, 528281, -2265059, 899259, 3091840, -2736968, -3870303, -423054, -4220879, 1532767, -1471563, 1204202, -56371, -1731946, 1233193, -1401770, -1242856, -594316, -1617592, 2173790, -2587181, 555661, 828929, 759672, -261993, --609349, 552977, 1152662, 1159104, 942208, 728534, 970663, 321586, 1853815, -427886, -2054605, -1285269, 645856, -381715, -534723, -1479616, -1149978, -984084, -1345399, 529892, --1080721, -143345, 978179, 328565, 29336774, 7753490, 2197413, -1105417, 17694192, 2056753, -8421357, 1717450, 5611375, 9189619, 3276523, -5120675, 5461051, 6315213, 1029718, -471373, -1382443, 11572789, 835908, -3964792, -7007239, -2073396, -178241, -8048232, 1385664, 2384781, -4653597, 1966021, 3296924, 8869644, -2730526, -1409286, 5490042, -850404, -2362232, -456877, --7890392, 5134634, 3403762, 186831, 5149129, -2545842, -6901476, -15010911, -5451924, 5553930, -6179921, 201327, 4353486, -4233764, -4555350, 12228846, -7018514, 5547487, -6172405, 1311576, --9022116, -9519795, 10401874, -3940096, -3660923, 14283451, 1134945, -1591285, -6643241, 5244692, -8306467, 415538, -4378183, -8392903, -1254131, 6124087, -1889249, 2085207, -3646427, 3023120, --1344325, 988379, 6581501, -7010461, 2268817, -1974074, 508417, 823560, -734976, 7538205, -2429878, 1121523, -2160369, 91268, -1694902, 3184718, -1458678, 2528662, 2599529, -2628520, -92879, -409096, -1636383, 3590056, 680752, 1686848, 213138, -1248225, 804233, 29528, -146029, 1037235, 1666447, 603980, 2161442, 667867, -76773, 1181116, 876173, -796716, -336618, -337155, 540092, 1867774, 2146410, 345208, -102542, 15027554, 4868346, 12473122, --7672959, 2595234, 6829535, -9307731, -3307125, -3562139, 899796, -4642323, -2985002, 7445863, --2305861, -1255204, -595390, 9288404, -3422552, -4122632, 9713069, 1710471, -6993281, 3045132, --1589138, 1692754, 3629247, -5486284, -1364726, -4090956, -7636989, 1047435, 124017, 1564979, --7514046, -7631083, 2937221, -547071, 2857227, -188442, 4186519, 1374926, -257698, -4830228, --4860829, 1452773, 4719632, 2445984, -1458678, 14168023, 3274913, 2524367, 6324876, 2484102, -4689031, 4953708, 3104188, 2061584, 2366527, -1920924, -1166084, 1187022, -6017786, 1695438, --9663676, 2742337, -6415608, 5097053, -3632469, 2852932, -1297617, -4540318, 1512365, -1112933, -4959077, -4248797, 13358959, 11423539, 5163088, -9546639, 2984466, 4416300, -4179540, 1905355, -1144072, 6698002, 6200322, 2742337, -192200, -777926, -1394791, -3702799, 5777268, -322659, --752693, 134755, -1723356, 752693, 1896765, -1484985, 2988760, -1038308, -2545305, -2498060, --137976, 1903744, 1689533, -362925, -668941, -1947231, -934155, 1207423, -2521146, 2882460, -2818572, -1700270, 473520, -2183454, -797253, 506806, 894964, -1635846, 2995203, -18505940, --35602596, -1523640, -7136088, 6169184, -1838246, -9866077, -960462, -7992934, -8810589, -7559143, -11635603, 6031745, -7787313, -4486630, 8849780, 5114769, 7895224, -5459977, 5099737, -4846871, --4892505, -1524713, -2149094, -15081778, 4093641, 8576513, 3681324, -8977555, -2081449, 1561758, -2268817, -8014409, -1806571, -11492259, 2501819, -5464809, -537408, -4025458, 2163053, 12234214, --1353989, -2312840, 6113349, 8932458, -5458367, 2410014, 3353833, -7599945, 4014184, 3736622, --8919573, 1357210, 5708549, -1398549, -9393093, -5935645, -6074158, 8450348, 3250217, 8273181, --4964446, -9657771, 2236067, 4748087, -2088428, -6928856, 4527970, 6674379, 6327561, -7940321, --4147865, -1690070, 12700218, -2761127, 7561290, 2185065, -9020505, -7363185, -1446330, 4948339, --8552354, -559420, -1633698, 4618701, -1075352, 10482941, 1268089, -2473364, -3202972, -2732136, --3092377, -2031520, -1085553, 905701, -82141, -1302986, -3921305, -439697, -3815005, -1711545, -1486059, -1382980, 553514, -1161789, -2901251, 1643899, -520228, 4441533, -941672, -3740917, --2641942, 1365263, -753230, 85899, -1088774, -2435783, 737124, 2451890, -2316061, -789200, -3381213, 1516124, -2196876, 103079, 2654827, -18009872, -220117, 709743, 10302016, 2750390, --4389994, 6419366, -3185792, 2925410, -10065256, -2696703, -6448357, -3262028, -12672301, -4529043, --7644505, 17415018, 9697499, 10695542, -12431246, -10272488, -5203890, 6073084, -747861, 69793, -171799, 3730179, -1018444, 5207648, -7305740, -5910949, -296353, -1531156, -8968965, -8640400, --7250442, -4921496, -3990562, -3317325, -11311870, 5317170, 13483513, -2755759, 6232535, 8982387, --6594386, 7801808, 4647155, 2013266, 12304008, -389231, 10280004, 4081830, 1192390, -9594957, -3778498, 5048734, -2724620, 14567992, 11310796, 2438468, -4402342, -6951942, 4017942, -6830072, -2723546, 66572, 8371428, 185757, -12773770, 1118302, -5102421, -1809255, -9596568, 11290395, -5640366, 4224101, 2529199, 12578349, -3666828, -12758200, -2134599, 8358007, 123480, -6471979, --1818382, 1133335, -2984466, 1786706, 3825205, 166967, 29528, -628676, 1180579, -10201, -4630512, 1646583, 1316408, -908386, 1737314, 2698850, 4197794, -3395709, 2284386, 2684892, --119722, 984621, 4230006, 2594697, 1030255, -2417530, 3582003, -872952, -2216740, -2273112, --250719, -6235219, 3985193, 2279017, 651761, -2841121, 3503620, 3808026, 6295349, 4199405, -999117, 1320703, 239981, 5511517, -16430397, 7373385, 5509370, 6992744, -7643968, -13730474, -4014184, 4044786, 738734, -11586748, 11074573, 3101503, -5829881, -10210748, 4633196, -4549981, -17699560, 20491288, 3086471, -3348464, -7617662, 11611444, -13229573, -4811974, 16441135, 4017942, --3136937, -8921184, -8118025, -4675072, 339839, -10896332, 2493229, 11494943, -1420560, 4284767, --8416525, -7785702, -2572149, -6445672, 16834124, -6213207, 7587597, 6148783, 6861211, 1746978, -3396246, -11689827, -11623792, -11241003, -2446521, 8351564, 19402514, -7845295, -13932337, -3277597, --6393596, 3536369, 3052111, 10732050, -6534256, -180926, -8674223, -1703491, 15549929, -2021856, --8391292, 11051488, 3685082, 1755568, 5874442, -12474196, 1950452, -4247186, 1254131, 5659157, -13678934, 3779571, -15785615, 5758478, 1437740, -2485176, -6549289, 282394, -1636383, -890132, --374736, 2212982, 3701725, 4367445, 1505923, 280247, -2505040, 811749, -741419, 3135863, --5324149, 1999307, 2143726, -126165, 525060, 893890, -4017405, -115427, -2648921, 4429185, -4167729, 1022202, 4994510, -1929514, 734439, 3775813, -745177, 2995740, 784905, 2776160, -981400, -6242735, -332860, -2221572, -305480, 867047, 418222, -2184528, 260382, -2573759, -50466, -1236414, 26800060, -11648488, -9126806, -2790655, 5648956, -15674483, 6277632, -4230006, -7917236, -7034083, -3205656, 9725953, 7211787, 2749316, -4891968, -1770600, 13312251, 13096966, --2718178, 11436961, -3316789, 16814796, -7857643, -4126927, 3019899, 17616346, 12866648, 4261682, --9437654, -657667, -19559818, -2952253, 3060164, 9002788, 10488847, 18567680, 4867809, -334471, --894427, -7120519, -12197707, -870805, -10579041, 7658464, 2403571, 11840151, 6590091, -4036196, -11734388, -13959717, 6318434, -3107409, 1015760, -2421288, 14936823, 8758512, 4280472, 2671470, --27096412, -4303021, 16081431, 8126078, 1005559, -492848, 824634, 12974022, 5509906, -20484310, --6674379, -7895224, 1931662, 454730, -20351702, 811212, -19021874, -12607340, -1636383, -8164733, --8849243, 11918534, 15044734, -1595044, -7280507, -779537, 4638565, -1816771, 3962644, 6180995, --469225, 6865505, 10040023, -3165391, -5543729, 965831, -2343979, 3073049, 2008971, -1532230, --1359894, 181462, 190589, 2881923, -262530, -3387656, 747861, 3469260, 1315871, 3092913, --2582349, 4661114, 52613, -1618129, 1185948, -2828236, 1224603, -5742372, -3668976, -4471598, -2417530, 312996, -4261145, -769336, 3777424, 2536715, 3290482, -2028298, 1848447, 142271, --638876, -5456219, -2777233, -5786395, 9901510, 18722300, -4597763, -7885560, 1248225, 7125351, -4355634, -11758010, -567473, -9562745, -362925, -12948253, -1257889, -11156714, 650688, 11163694, -1026497, 24877524, -10392210, -5224828, -8818105, 10045929, 16823924, -13548474, -4353486, -20913270, -4019553, -346282, 5785858, 4940286, -11497627, -7057705, 9186398, -3567507, -2453500, -11451457, -22864796, -3200288, -24242406, 6689949, -6307697, -7391639, 8871255, 6671695, -6930467, -7907572, --2247879, -14221710, -8351564, 4549981, 3253975, 4754529, -4188130, -10312216, -11704323, -11972221, -9876277, -17519172, 375273, 4076461, -5268315, 343597, -15032, -2469069, -13710609, -2662343, --5516886, 8681740, 11334956, -2189360, 17568026, -1099512, -86436, -5460514, -1024350, 25025700, -2526515, -11451993, -4442607, 9666898, 7368554, -14058502, 372052, 1879585, -9372156, 7773891, -1939715, 8712341, 1452236, 1224603, 1442035, 568009, 3937411, 5190468, 557272, 2535641, -8633421, 534187, -2969433, 1355062, 4185983, -3386582, -850404, 346282, -3937411, 3568581, -3505230, 4143033, 920197, -4812511, 1146219, -1753957, 841277, -1141388, -794569, 243203, --2549600, 3542811, -1858110, -2745021, -3053185, 7326678, 136365, -8332774, 6011344, 4464619, -2074469, -738198, 4610648, 3229279, -9005473, -2236067, 513249, 196495, -2720325, -12203076, -30816928, -7924752, -2703145, 2740726, 13140452, 9443559, -20007032, -8159364, -19006304, 4175782, -1096827, -5876589, -20918638, 874563, -9762461, 4354023, 4614943, 10572599, 543313, 7699266, -36214628, 7880728, 9045738, -5674189, -2003065, 15822660, -1371168, 1256815, 4202626, 1047435, --2310693, -8249022, 14599668, -15464567, 6459094, -22996328, -6990596, -10750840, -14191109, -12190191, --7516, -25124484, -8540542, 3470871, 14415521, 8302172, -24682640, 14032195, 9343164, 10232760, --15663746, 11555073, -7334194, -17962626, -6093485, -17870822, 8773544, 21420612, 5444945, -2025614, --13927505, 11340861, -14833206, 22372484, -4084514, -2381559, -13394929, -14687178, 2257005, 17480516, -5846524, -11981348, -4765803, 2953864, -2369211, -4777078, 11562052, 5935108, -5200669, 14808510, --1063541, -20938502, 26436598, 14031658, 10978473, 5002563, -3389266, -1253594, -2034204, 7897371, -1947231, 1199370, 17468706, 6803228, 480499, 876710, 2633352, 9086540, -7063074, 5148055, -680215, 1758789, 1842541, 5877126, 3036542, 421444, 9942849, 7521025, 848793, -3344706, --3262565, -1213328, 8185671, 4060892, 4689031, 4373351, 5521718, -6529424, 6818261, -1680943, --1539746, 6189048, 9815074, -1321239, -2438468, 12348, 9361418, 10587631, 4263829, 6551973, -5017059, 16853452, 3207804, -10853919, 4951024, -3165391, 5101885, 18496276, -26025892, -11846594, --20913270, 11899744, -4165045, 2049773, -6859600, 15101642, -14805826, -14999636, -6761889, -3495567, --10641855, -18558554, -8890582, 3486977, 12259447, -17072496, 11337640, -6417755, 1423782, 22146462, -17016124, -264677, 9005473, 4301410, -3444027, -2651069, -29967598, 4194036, -2967823, 2990371, -5935645, -2329483, 903017, 30394410, -27169964, 2601677, 32971928, 4329327, 9169218, -12856448, --3434363, 17235166, 30277908, 1573569, 26862336, -10392747, 24310052, -8462696, 18017924, 18233210, --4409858, 35487704, -5806796, -1445257, -10433012, -15956877, -16877610, -7726646, -10094247, -24592982, --11416560, -5167383, 9211094, 9087077, 1248762, -12593381, -2022930, -3503083, 15950435, 4996658, --8176007, 13664975, 3150359, -1598265, -1824824, -9803800, -1430224, -3842922, 4229469, -9918153, --4696010, -6884296, -6857452, 12740484, 4968741, -4086662, 3904125, -3114925, 2501819, -7486665, -11410654, 659814, 3260417, -166967, -7554848, 7129109, -849330, 2710124, 8123394, 5726265, -3503620, 784368, -11809013, 5836861, -4486630, -381178, 10287520, -50466, 3849365, 2628520, -4940823, 7059316, -2425583, -5349382, -3623879, -4236985, 2175401, 6383395, 10563472, 6305012, --12258910, -1326608, -13317620, -11544335, -38907572, -27769648, -19495394, -2006287, 26577258, -17432198, --2100239, -13427142, -19217832, -16048145, -19634980, -20636780, -8037495, -24346022, -26336202, -23048406, -6620692, -15933792, -8185671, -19847580, 18974628, 30826054, 2794413, -3630321, -10770704, 2464238, --1808718, -884226, -2362769, 9663140, 2171106, 21000242, -18248242, 1538672, -15504832, 31956168, -7981123, -18856518, 14884746, -13533979, 12117176, -18147310, 10726681, 1480153, -10686416, 9639517, --16981226, -5787469, 5566815, 17435420, 7792145, 31001610, -6826314, -20109036, 2028835, -5789616, -2515240, -13348758, -11351599, -21454972, 2860985, -22804666, -4411469, -3626563, -19771346, 13246216, -17026324, -9882720, -908386, -29382946, 33864208, 40806484, 6714108, -16195248, 5749351, 35903780, --16712255, -7729331, -19083614, -11281268, -20963198, 8617852, -840740, -11984032, 9403294, -12002823, -5146445, -7491497, -3236795, 4830228, 2747169, -149787, -7737384, -1636383, 7125888, 3992172, --13019656, 10378252, -9013526, 4756140, 6224482, -4208531, -7579007, 4127464, -6092411, 5098126, -3903589, -8255464, 3201361, -1156957, 3364570, -4934381, -13116830, 3591130, 2527588, -5508296, -3648575, -4937065, 9685151, -181999, 4080756, 1059246, 12531641, 1605781, -16320876, 9287867, -6350646, 2791729, 10566156, -31547608, 57684632, 21738976, -4657355, -17424682, -4771709, -18500034, -19904490, 49933288, 1164473, -33216204, -15098421, 17983564, 6790344, -6648610, 23910082, -4653597, -3080565, 13617194, -1345399, -13793824, -4386772, 11212549, -14314052, -13139916, -5220533, 4646081, -816581, -2530810, -5945309, 10572062, 1212255, 15664819, 12505871, -16201154, 8063801, 19265612, -10912975, -14970645, 5898064, 3184182, 13137231, 312996, 4664335, 3490735, 5497558, 27182848, -25877178, 15939161, 35028144, -17201880, 18126372, -20719996, 13363791, -238908, 12228309, 15143518, -5035313, 3935264, 18549964, 8548059, -4741107, 11676405, 230854, 15664283, -16446504, -9495636, -1616518, 37764572, -25877178, 2526515, -32580548, -3883724, 3986267, 12916577, -15751256, -3138547, --16234976, 4265977, 20455318, -12407624, -29091424, -6226629, -2674691, -7937637, 7323993, 5114769, --8074539, 2949032, -6871948, -6912213, 6795712, -1030792, -3723737, -13211319, 7419556, -541703, --8141648, -6689949, 6501507, 17853642, 1981591, -5089000, -2114735, 6521908, 16267189, 3223910, -1656247, 13370770, -118112, 3663070, -966368, -2590939, -330712, 4873178, 7867307, 4590783, --1850057, -2792803, 7054484, 4853313, -9735617, 9586904, 2898029, 18588618, -4293357, 4756140, -11495480, -7606924, -4356708, 6340446, -10189810, 48321604, 3855807, 3575560, -10726144, -6692633, -7858717, 7428683, 4271882, 18661632, 7619272, -7804493, 9683541, 19889456, -985695, 21792664, --2318746, 10586021, -22377316, 40164924, -6207839, -4712116, 6494528, -30413738, -8073465, -14660334, -21159694, 11734388, 11855183, -14246407, 4887673, 5070209, -19200652, 5178120, 15877957, 13684840, -4420058, -4767414, 1614371, -9203578, 30191472, 4508642, 13451838, 11130945, 16114180, -27303644, --2538863, -8327405, 4688494, -10236518, -12303471, 22347252, -21862994, 16324097, -14034343, 17181480, --4341675, -18387292, -2170032, -27543626, 16475495, 15464030, 18524730, -56768732, 15829639, 9965398, --17869212, -11894375, -16658568, 28858422, -42154032, 24721294, 58041116, 825171, -28491202, -11511586, -16450262, 34058552, 8943196, -12063489, -25757992, -42685532, -3981972, -593242, 16245177, -13037373, --6299644, -10088878, 28438590, 1478543, -1439888, -8716636, 5440113, 1257889, -636192, 723702, --932008, 5011690, 17883706, 22164716, 11302743, -3834332, -2463164, 8517994, 1631551, -6067178, -2024003, -9482214, -6084895, -11458973, -16591996, -33999496, -13911399, 4611185, 956167, 18276696, --14085882, -10099079, 23441932, 8382703, -6973417, -10557030, 7138236, -3053185, -9940702, 23247048, -2062121, -1782411, -8240432, 32212, -10275709, -8312909, -12672838, -3721589, -5532992, -4511863, --13456669, 8755828, -28032178, 4583804, -17058536, 25371446, 1421097, 7271917, -14486925, 11508902, --4307316, -9556302, 4334696, -9851044, -6436546, -8290361, -22517976, -12333535, 15898895, 13945222, -10035728, 11937325, -27172110, -7343857, 4887136, -7489349, 15306727, 11500312, 538482, 9878425, -26244398, -7604240, -27805082, 52455508, -23207856, -28736552, 31771484, -15229954, -9673877, 7575249, -16058346, -19020800, -6589554, 2360622, -13255343, 68165960, -1098438, -10707353, -4793721, 982474, -16359530, -32825898, -25765508, -13796509, -13800804, -775778, -29123100, 316754, -3049427, 10885595, -42423004, 43710956, -17296370, 33866892, -33372432, -28931436, 17218524, 27475980, -9769440, 7859790, -2985002, 18938122, 22575958, 384400, 1058173, 30650498, -27540404, -53417584, -6437619, -21082384, -11508902, 25661892, -2951716, -16650514, 34051036, 10567230, 6503654, -8990440, -28768764, -15559593, -2618856, -11951820, 15822123, -1148367, -10619307, -1150514, -11958263, -11536282, 15709380, -4893042, -6087580, -11552925, 16757352, -1207960, -1454920, 11307575, 16050830, -1536525, -3855270, -11021960, -1039382, -9446781, -9261023, -6584722, -3278671, -16692927, -413391, -7468948, -3292093, -16758962, -4534412, 19821810, 7062000, -11769821, -25214142, -1642825, -2609730, 13557601, -33829848, -6686727, -7484518, -6657200, 15214922, -96637, 9102109, -449898, -2965138, 2155537, -19232864, 20821464, -571231, 12622909, -13023951, -20717848, 19287088, -20509542, 6567542, -4924717, 18148922, -161598, -4220342, -11006391, 3708168, -7842611, -26098368, -21046950, 9123584, -1840394, -432718, 4121021, -19905026, -8997420, -5764920, -16691854, 7358890, 5896453, -1806571, -3408594, -44005700, 1889249, -12652437, -15943455, 11220065, -24626268, -4406100, 1513976, 15525233, 19285476, 2528662, -9338333, -6337224, 34828964, 30638150, 30225832, -1214939, -2848637, 6624450, 3573413, -13782550, 8955544, -38451232, -27369142, -8767102, -7966091, 193810, 1407139, 5079873, -20354386, -30873298, -11675332, --1760937, 62358632, 31797790, 21154862, -2845953, -5487895, -15831786, 27111444, 4004520, 17348446, --6355478, -8439074, -12533788, -11152956, -46061376, -20445118, -24282672, 19120658, -1742683, -9004936, --1406602, -18938658, -8810589, 20045150, 30217242, -4715337, 26651346, 14332306, 11196980, 1610076, -12658342, 15926812, 13457206, -3393561, -790811, 198642, 18190260, -14372571, -18457086, -8964670, -10002979, -1734093, -12966506, -8482560, -12987444, 7693897, -2895345, 16504486, 32969780, 6177237, -20356534, 26382910, 12913893, 16370268, 8311299, 5201206, 7355669, -12071006, 17447230, -14308147, --9535364, 3839701, 1554241, -10200547, 5323612, 9424769, 17519172, 7148973, -19928648, 11025718, -8506183, 2189897, 9369471, -5370857, -10468983, 5842766, -447213, -7681012, -4370666, -7175280, -2833605, -42541652, 23841364, 21033528, -1260573, 34512208, 15362024, -23399518, -23269596, 10135049, --9624485, -20871394, 1244467, 2141041, 9270150, -5152887, 12132209, -2985002, 11482058, 14855218, --13772350, -55166172, 29548302, -8286603, -17407502, 12632573, 19485192, 745714, -37196564, -4806606, --1602023, -38114612, -23925116, 20163260, -5907728, -15453292, -13218299, 8694088, -37247032, -26308822, -50103476, -4216048, -29207388, 11471321, 27187142, 11754252, -41332080, 59040232, 23776938, -36294620, -20138564, 26725434, 4191351, -24561308, 25498684, 28616830, 17301738, -22632330, 21385180, 40059696, -2098092, 40467720, 49927384, -26686780, -16003585, -18563922, 47175384, 30146376, -20565378, 11589432, --12454868, -29985314, 25818122, 58959700, 8451959, -17636746, -14842870, 35451196, -3356517, -39533028, --28399398, 7279970, -1516124, 32876900, -5893769, 25415468, -49270792, -7466264, 1929514, 8538395, --10286447, 10536092, -499827, 1100585, 5612986, 1489817, -12895639, 3999152, -6152004, 8038568, -3088082, -17824114, 15648176, 5209796, -14952392, -10555956, 2821794, -12837657, 2515777, 11941083, -12997645, 1955821, -12248710, -3869229, 4006668, -16661789, 9778030, 12520367, 4024921, 1139240, -12400107, 4648229, -5583995, 6156836, -4498978, 1140314, -8567923, 5508833, 19872814, -14003741, -34641060, 55766392, 22407918, -23067196, -8576513, -19346680, 11796665, -9395778, 15216532, 10124312, --25665650, 13046500, -26156350, -8754217, 119722, -9569187, 1374390, 13626321, 10548977, 768799, --20885890, 4702453, 16596291, -6309844, 2377801, -7517267, -24423868, 24612846, -14800994, 17044040, --25157770, -14758044, -3655017, -20560008, -6241125, 20896090, -20512764, 27546310, 1646583, 22461606, -8719320, -11193222, -30280594, 24707336, 15169824, 10281615, 6180995, 25465934, -19046570, -9614284, --11098732, 7944079, 9384504, -2521683, -23972896, -1104880, -3477313, -24055038, -9723269, 3765076, -6303938, 18924162, -2463701, -16917876, 22300008, -4378183, -4118874, 27033062, 12663174, -22257058, -6979859, -13660143, 8398272, -7186017, 10370199, -19237696, 10502806, -6706055, 21007758, 3590593, -7916162, -7267085, -296890, -15634218, 5986111, 945430, 443455, -476205, 4200478, -6349573, --6099391, -832687, 2252174, -1828046, 3809636, -8008504, -1807108, 5987722, -1760400, -383863, --1575716, 60130, 64961, -12603045, 2060511, 9919764, -111669, -1571958, -3016141, -1343788, --9613211, 549756, -2655901, -1277216, -5167383, -7793218, -2073396, 7387881, -4701916, -2438468, -3151969, 1455994, 5375689, -5868536, -2591476, -1009854, -4951561, -6837588, -7843147, -41640244, --48217988, -26410290, 144568592, 126372432, 77091440, 167812432, -35464080, -126732672, -44047036, -238599936, --124497680, -2845953, -61275760, 84818088, 156533312, 21539798, 92134568, 178530512, 30404074, 62055836, -6347425, -184122560, -153127936, -135909952, -148932288, -90863792, 74494600, 31044560, 74587472, 192991664, -116892904, 29837138, 143829872, 65157340, -87529288, 47414292, -63781340, -168611824, -20396262, -104369312, --190898416, -86628416, -19494320, -100617128, 112244136, 120065272, 57353920, 191414880, 216989808, 81883552, -107474576, 100755104, -112354200, -73753176, -143782080, -225494912, -206753280, -133095128, -132979168, -38582228, -86915640, 111749680, 150107504, 210751904, 189911648, 110514880, 81228568, 14274861, -87531968, -128021160, --93284008, -121904592, -149878784, -51133732, -56393996, -27842662, 94016296, 64648384, 69548944, 145502752, -37513320, -6682432, 24363202, -40537512, -62716188, -35311072, -63382980, -19347754, 41139880, 15328201, -22800370, 51437064, -11841762, 10591389, 28456306, -47748224, -4473209, 59612536, -56296820, 4752918, -9776419, -112960328, -5456756, -2314987, -134481328, 10644003, 47728360, -17399450, 139083920, 126039040, -23375896, 134887200, 66851704, -5939940, 22679038, -36436356, -145301424, -151742272, -187413584, -213618784, --107399952, -17459578, 43456480, 134022304, 223099392, 255558064, 203649088, 150502640, 69067368, -28129352, --84687632, -186703840, -233564624, -172125104, -137888848, -131442640, 8584566, 64535640, 79239464, 129522792, -115795000, 76182520, 75110392, 53983444, 17331266, 21529598, -229781, -40977748, -46860776, -59445568, --76106824, -68073088, -49179524, -36851356, -13717052, 18241262, 27545236, 44781476, 54664196, 47046536, -34440804, 26370562, 11695196, -2129230, -12050604, -17695266, -23966992, -19036368, -13921063, -11141145, --8855686, -2153926, -3183108, -2690260, -518617, -2390686, -5903433, -65498, -1461363, 1200980, -9239548, 14740328, 18321794, 26564910, 19847044, 9956271, -288300, -9264781, -16722455, -18027052, --24420110, -24440512, -19173808, -8459475, -1445793, 9253507, 15159624, 20631950, 19844360, 18417356, -9459129, 2334852, -5022965, -8725763, -12387223, -9847823, -8704288, -3854733, -242129, 4481799, -4603668, 6265284, 3293166, 1909650, -2919504, -4812511, -7317014, -4618701, -3829500, 725313, -2287070, 5556077, 5341329, 6820408, 3973919, 3745748, 464393, -156766, -2880313, -2028298, --3720516, -2219961, -3064996, -989990, -1648194, 496606, -511638, 932545, -616865, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +15756088, 6017786, 3842385, 1228898, -3318936, 29528, 3036005, 5667210, 95563, 539555, +350040, -2090575, 571768, 1917166, -369904, 1873143, 2923262, 3861713, 1644973, 1580548, +2058363, 1801739, -3539053, 3601330, 6796249, -3220152, 1944547, 1058710, 1910187, 344671, +4031364, -2618320, -914291, -2356327, 2333778, 6717329, -1115081, 3258807, -73551, -1520955, +-5522254, 2071248, -2853469, 2552284, 1310502, 2851858, -301721, -1715303, 917512, -1181116, +3865471, 498216, -3033321, 3908420, -839666, 3051574, 2367601, -120259, 2273648, 4407174, +-1224603, -1539209, -1235340, 2196339, -1786706, -2369748, 2755222, 38118, 1853815, -2927020, +4347044, 263604, -1206886, -500364, -466004, 1733556, -1609002, -2590939, 1550483, 2335925, +2216740, -2051921, -3065533, 1249299, -94489, -357019, -1173063, -1114544, 1555852, -390842, +-213138, -942745, -1118839, 237297, -801011, 365072, 251256, 1156420, 806917, -324807, +423591, 665720, -675384, -270046, 56908, -296890, -514322, 415001, 1119376, 651761, +839666, 35433, -64961, 305480, -689879, 16643, 266825, 12268037, 9552007, 4851166, +664646, -1774895, 5521181, -3218541, -3528316, -770410, -6137509, 3718905, 212601, -2499671, +1410360, 3575024, 6055367, -2794950, 3478924, 7940858, -2290828, 83215, 1780264, 4139812, +-1067836, 4507568, 3140695, 4559645, 1013612, 3487514, -3553549, 6068252, -751082, 5855651, +2863133, -619012, 697395, -942745, -161598, -2085744, -1022202, -2582349, -1945620, 2053531, +-572304, -5627481, -1293322, 617402, -183073, -3132642, -3280281, -1634772, -1432909, 4434017, +-1793149, -4835060, -6504191, -7118372, -2485712, -3127273, -281320, 1113470, 3420405, -4652524, +-2144263, 558346, -497679, -2078764, 493921, -4898947, -489089, -5776194, 3066607, -3140695, +-1561221, 4022774, -609885, 2763812, 768799, 1012002, 3081639, 782758, -2528125, -1139240, +221728, -2433636, 1271847, 2490544, 1179505, -1906429, 1408749, 2083059, 378494, 1131187, +-638340, -1118839, -813359, -1118839, 771484, -112206, 705448, -934692, -725313, 801011, +1125818, 6493454, -14061723, -3764002, -7129646, -1315334, -15569, 7743826, -3774740, -12590160, +-4449049, -316754, 4784057, 1499481, -4685273, -10931766, -2826625, 3000035, -1239098, 6161668, +228707, 2700461, -623307, -4852240, -5295158, 3183645, 3869229, 455803, 1246077, -192737, +2359548, 551366, -6511708, 345745, 9134859, 1231045, -2288144, -845035, -2445447, 559956, +-2112050, -3976603, 6110128, -1905892, -2566243, 5558762, -2924336, -4937602, 209917, 31139, +144418, -7121593, 5771363, -2208687, -154619, 5337034, 4838818, -7636452, -1953673, 1474784, +1835562, -678605, 4162897, 1148904, 2057826, 2894808, 413927, 2312303, 3483219, 759136, +537, 3263638, -8728447, -1933272, 198105, 4432406, 2439542, -1077500, -903554, 3221762, +2982318, -3478387, -520228, -1243393, 81604, 1902671, 2406256, 478352, 2979097, -311385, +-2181844, -1026497, 213675, 215285, 256624, -818728, 2063195, -439160, 721555, -328565, +-985158, 607201, -62277, -426276, -815507, 162672, -770410, -132070, -1355599, -1029182, +233539, -212064, -1071058, -2044941, -785979, 432718, 1677185, -27995670, -10999948, -5665062, +-7897908, 2476049, -2705293, -2696703, -292058, 3513820, -3163780, -3840238, -5513665, 1097364, +5032091, 1095754, -3766150, -4748087, 1455457, 4146254, 3897146, -5394479, -7880728, 582505, +-7364259, 3934190, -4832, 2741263, -163746, 2644626, -2870649, -1239098, 7794829, -9390409, +4359929, 2174327, 1095217, -3338800, 2119030, 4605816, 1278290, -5725192, 1199907, -3636227, +2841658, -7809861, -248034, -7075422, 5486821, -587874, -1352378, -2015950, 3043521, -11865921, +5517959, -3428995, -7126962, 2860448, 5826660, 6521908, 3901441, 1386201, -410706, 768799, +-539018, 4207458, -2350421, 1187559, 3371013, 8157217, 1358820, 156766, -5805185, 3733937, +-2856153, 664109, 223875, 4342212, -3794067, 224949, 4052839, -357019, -4672925, -6522982, +5454072, 452045, 1074816, 2718178, -495532, 1322313, 1228361, -39728, 1040456, -454730, +230318, 1449015, 1410360, 1428614, -2297271, 933082, -1707250, -768799, -1427003, 1403381, +-1627793, -15898358, 7781407, 12417824, 2408940, 983011, 6897181, 2332167, 2107218, 3775813, +514859, 3950833, 3966939, -3202972, -592169, 539555, -3905736, -2417530, -54761, 1919850, +-2305861, 12911745, 6854768, -1883343, 918586, 4100083, 5157719, 5893232, -2471754, 4150012, +4828080, 272194, 1404991, 1393180, 2747169, 1994476, 1209033, 2728378, 2600603, -5586679, +-4323422, -8600672, 925029, -3047279, -4305168, 4423817, -1263794, 2784750, -10661719, 11733314, +-857920, -5580773, -1042066, 9300752, 6725382, -1483911, 234613, 4503273, -2148558, 1935957, +-3436511, -7323993, 855772, 683974, -5892159, -2329483, -5807870, 1035087, 2137283, 1311039, +-2827699, -5127654, -7820599, -9310415, -6701760, -2609193, 528281, -2265059, 899259, 3091840, +2736968, -3870303, -423054, -4220879, 1532767, -1471563, 1204202, -56371, -1731946, 1233193, +1401770, -1242856, -594316, -1617592, 2173790, -2587181, 555661, 828929, 759672, -261993, +-609349, 552977, 1152662, 1159104, 942208, 728534, 970663, 321586, 1853815, -427886, +2054605, -1285269, 645856, -381715, -534723, -1479616, -1149978, -984084, -1345399, 529892, +-1080721, -143345, 978179, 328565, 29336774, 7753490, 2197413, -1105417, 17694192, 2056753, +8421357, 1717450, 5611375, 9189619, 3276523, -5120675, 5461051, 6315213, 1029718, -471373, +1382443, 11572789, 835908, -3964792, -7007239, -2073396, -178241, -8048232, 1385664, 2384781, +4653597, 1966021, 3296924, 8869644, -2730526, -1409286, 5490042, -850404, -2362232, -456877, +-7890392, 5134634, 3403762, 186831, 5149129, -2545842, -6901476, -15010911, -5451924, 5553930, +6179921, 201327, 4353486, -4233764, -4555350, 12228846, -7018514, 5547487, -6172405, 1311576, +-9022116, -9519795, 10401874, -3940096, -3660923, 14283451, 1134945, -1591285, -6643241, 5244692, +8306467, 415538, -4378183, -8392903, -1254131, 6124087, -1889249, 2085207, -3646427, 3023120, +-1344325, 988379, 6581501, -7010461, 2268817, -1974074, 508417, 823560, -734976, 7538205, +2429878, 1121523, -2160369, 91268, -1694902, 3184718, -1458678, 2528662, 2599529, -2628520, +92879, -409096, -1636383, 3590056, 680752, 1686848, 213138, -1248225, 804233, 29528, +146029, 1037235, 1666447, 603980, 2161442, 667867, -76773, 1181116, 876173, -796716, +336618, -337155, 540092, 1867774, 2146410, 345208, -102542, 15027554, 4868346, 12473122, +-7672959, 2595234, 6829535, -9307731, -3307125, -3562139, 899796, -4642323, -2985002, 7445863, +-2305861, -1255204, -595390, 9288404, -3422552, -4122632, 9713069, 1710471, -6993281, 3045132, +-1589138, 1692754, 3629247, -5486284, -1364726, -4090956, -7636989, 1047435, 124017, 1564979, +-7514046, -7631083, 2937221, -547071, 2857227, -188442, 4186519, 1374926, -257698, -4830228, +-4860829, 1452773, 4719632, 2445984, -1458678, 14168023, 3274913, 2524367, 6324876, 2484102, +4689031, 4953708, 3104188, 2061584, 2366527, -1920924, -1166084, 1187022, -6017786, 1695438, +-9663676, 2742337, -6415608, 5097053, -3632469, 2852932, -1297617, -4540318, 1512365, -1112933, +4959077, -4248797, 13358959, 11423539, 5163088, -9546639, 2984466, 4416300, -4179540, 1905355, +1144072, 6698002, 6200322, 2742337, -192200, -777926, -1394791, -3702799, 5777268, -322659, +-752693, 134755, -1723356, 752693, 1896765, -1484985, 2988760, -1038308, -2545305, -2498060, +-137976, 1903744, 1689533, -362925, -668941, -1947231, -934155, 1207423, -2521146, 2882460, +2818572, -1700270, 473520, -2183454, -797253, 506806, 894964, -1635846, 2995203, -18505940, +-35602596, -1523640, -7136088, 6169184, -1838246, -9866077, -960462, -7992934, -8810589, -7559143, +11635603, 6031745, -7787313, -4486630, 8849780, 5114769, 7895224, -5459977, 5099737, -4846871, +-4892505, -1524713, -2149094, -15081778, 4093641, 8576513, 3681324, -8977555, -2081449, 1561758, +2268817, -8014409, -1806571, -11492259, 2501819, -5464809, -537408, -4025458, 2163053, 12234214, +-1353989, -2312840, 6113349, 8932458, -5458367, 2410014, 3353833, -7599945, 4014184, 3736622, +-8919573, 1357210, 5708549, -1398549, -9393093, -5935645, -6074158, 8450348, 3250217, 8273181, +-4964446, -9657771, 2236067, 4748087, -2088428, -6928856, 4527970, 6674379, 6327561, -7940321, +-4147865, -1690070, 12700218, -2761127, 7561290, 2185065, -9020505, -7363185, -1446330, 4948339, +-8552354, -559420, -1633698, 4618701, -1075352, 10482941, 1268089, -2473364, -3202972, -2732136, +-3092377, -2031520, -1085553, 905701, -82141, -1302986, -3921305, -439697, -3815005, -1711545, +1486059, -1382980, 553514, -1161789, -2901251, 1643899, -520228, 4441533, -941672, -3740917, +-2641942, 1365263, -753230, 85899, -1088774, -2435783, 737124, 2451890, -2316061, -789200, +3381213, 1516124, -2196876, 103079, 2654827, -18009872, -220117, 709743, 10302016, 2750390, +-4389994, 6419366, -3185792, 2925410, -10065256, -2696703, -6448357, -3262028, -12672301, -4529043, +-7644505, 17415018, 9697499, 10695542, -12431246, -10272488, -5203890, 6073084, -747861, 69793, +171799, 3730179, -1018444, 5207648, -7305740, -5910949, -296353, -1531156, -8968965, -8640400, +-7250442, -4921496, -3990562, -3317325, -11311870, 5317170, 13483513, -2755759, 6232535, 8982387, +-6594386, 7801808, 4647155, 2013266, 12304008, -389231, 10280004, 4081830, 1192390, -9594957, +3778498, 5048734, -2724620, 14567992, 11310796, 2438468, -4402342, -6951942, 4017942, -6830072, +2723546, 66572, 8371428, 185757, -12773770, 1118302, -5102421, -1809255, -9596568, 11290395, +5640366, 4224101, 2529199, 12578349, -3666828, -12758200, -2134599, 8358007, 123480, -6471979, +-1818382, 1133335, -2984466, 1786706, 3825205, 166967, 29528, -628676, 1180579, -10201, +4630512, 1646583, 1316408, -908386, 1737314, 2698850, 4197794, -3395709, 2284386, 2684892, +-119722, 984621, 4230006, 2594697, 1030255, -2417530, 3582003, -872952, -2216740, -2273112, +-250719, -6235219, 3985193, 2279017, 651761, -2841121, 3503620, 3808026, 6295349, 4199405, +999117, 1320703, 239981, 5511517, -16430397, 7373385, 5509370, 6992744, -7643968, -13730474, +4014184, 4044786, 738734, -11586748, 11074573, 3101503, -5829881, -10210748, 4633196, -4549981, +17699560, 20491288, 3086471, -3348464, -7617662, 11611444, -13229573, -4811974, 16441135, 4017942, +-3136937, -8921184, -8118025, -4675072, 339839, -10896332, 2493229, 11494943, -1420560, 4284767, +-8416525, -7785702, -2572149, -6445672, 16834124, -6213207, 7587597, 6148783, 6861211, 1746978, +3396246, -11689827, -11623792, -11241003, -2446521, 8351564, 19402514, -7845295, -13932337, -3277597, +-6393596, 3536369, 3052111, 10732050, -6534256, -180926, -8674223, -1703491, 15549929, -2021856, +-8391292, 11051488, 3685082, 1755568, 5874442, -12474196, 1950452, -4247186, 1254131, 5659157, +13678934, 3779571, -15785615, 5758478, 1437740, -2485176, -6549289, 282394, -1636383, -890132, +-374736, 2212982, 3701725, 4367445, 1505923, 280247, -2505040, 811749, -741419, 3135863, +-5324149, 1999307, 2143726, -126165, 525060, 893890, -4017405, -115427, -2648921, 4429185, +4167729, 1022202, 4994510, -1929514, 734439, 3775813, -745177, 2995740, 784905, 2776160, +981400, -6242735, -332860, -2221572, -305480, 867047, 418222, -2184528, 260382, -2573759, +50466, -1236414, 26800060, -11648488, -9126806, -2790655, 5648956, -15674483, 6277632, -4230006, +7917236, -7034083, -3205656, 9725953, 7211787, 2749316, -4891968, -1770600, 13312251, 13096966, +-2718178, 11436961, -3316789, 16814796, -7857643, -4126927, 3019899, 17616346, 12866648, 4261682, +-9437654, -657667, -19559818, -2952253, 3060164, 9002788, 10488847, 18567680, 4867809, -334471, +-894427, -7120519, -12197707, -870805, -10579041, 7658464, 2403571, 11840151, 6590091, -4036196, +11734388, -13959717, 6318434, -3107409, 1015760, -2421288, 14936823, 8758512, 4280472, 2671470, +-27096412, -4303021, 16081431, 8126078, 1005559, -492848, 824634, 12974022, 5509906, -20484310, +-6674379, -7895224, 1931662, 454730, -20351702, 811212, -19021874, -12607340, -1636383, -8164733, +-8849243, 11918534, 15044734, -1595044, -7280507, -779537, 4638565, -1816771, 3962644, 6180995, +-469225, 6865505, 10040023, -3165391, -5543729, 965831, -2343979, 3073049, 2008971, -1532230, +-1359894, 181462, 190589, 2881923, -262530, -3387656, 747861, 3469260, 1315871, 3092913, +-2582349, 4661114, 52613, -1618129, 1185948, -2828236, 1224603, -5742372, -3668976, -4471598, +2417530, 312996, -4261145, -769336, 3777424, 2536715, 3290482, -2028298, 1848447, 142271, +-638876, -5456219, -2777233, -5786395, 9901510, 18722300, -4597763, -7885560, 1248225, 7125351, +4355634, -11758010, -567473, -9562745, -362925, -12948253, -1257889, -11156714, 650688, 11163694, +1026497, 24877524, -10392210, -5224828, -8818105, 10045929, 16823924, -13548474, -4353486, -20913270, +4019553, -346282, 5785858, 4940286, -11497627, -7057705, 9186398, -3567507, -2453500, -11451457, +22864796, -3200288, -24242406, 6689949, -6307697, -7391639, 8871255, 6671695, -6930467, -7907572, +-2247879, -14221710, -8351564, 4549981, 3253975, 4754529, -4188130, -10312216, -11704323, -11972221, +9876277, -17519172, 375273, 4076461, -5268315, 343597, -15032, -2469069, -13710609, -2662343, +-5516886, 8681740, 11334956, -2189360, 17568026, -1099512, -86436, -5460514, -1024350, 25025700, +2526515, -11451993, -4442607, 9666898, 7368554, -14058502, 372052, 1879585, -9372156, 7773891, +1939715, 8712341, 1452236, 1224603, 1442035, 568009, 3937411, 5190468, 557272, 2535641, +8633421, 534187, -2969433, 1355062, 4185983, -3386582, -850404, 346282, -3937411, 3568581, +3505230, 4143033, 920197, -4812511, 1146219, -1753957, 841277, -1141388, -794569, 243203, +-2549600, 3542811, -1858110, -2745021, -3053185, 7326678, 136365, -8332774, 6011344, 4464619, +2074469, -738198, 4610648, 3229279, -9005473, -2236067, 513249, 196495, -2720325, -12203076, +30816928, -7924752, -2703145, 2740726, 13140452, 9443559, -20007032, -8159364, -19006304, 4175782, +1096827, -5876589, -20918638, 874563, -9762461, 4354023, 4614943, 10572599, 543313, 7699266, +36214628, 7880728, 9045738, -5674189, -2003065, 15822660, -1371168, 1256815, 4202626, 1047435, +-2310693, -8249022, 14599668, -15464567, 6459094, -22996328, -6990596, -10750840, -14191109, -12190191, +-7516, -25124484, -8540542, 3470871, 14415521, 8302172, -24682640, 14032195, 9343164, 10232760, +-15663746, 11555073, -7334194, -17962626, -6093485, -17870822, 8773544, 21420612, 5444945, -2025614, +-13927505, 11340861, -14833206, 22372484, -4084514, -2381559, -13394929, -14687178, 2257005, 17480516, +5846524, -11981348, -4765803, 2953864, -2369211, -4777078, 11562052, 5935108, -5200669, 14808510, +-1063541, -20938502, 26436598, 14031658, 10978473, 5002563, -3389266, -1253594, -2034204, 7897371, +1947231, 1199370, 17468706, 6803228, 480499, 876710, 2633352, 9086540, -7063074, 5148055, +680215, 1758789, 1842541, 5877126, 3036542, 421444, 9942849, 7521025, 848793, -3344706, +-3262565, -1213328, 8185671, 4060892, 4689031, 4373351, 5521718, -6529424, 6818261, -1680943, +-1539746, 6189048, 9815074, -1321239, -2438468, 12348, 9361418, 10587631, 4263829, 6551973, +5017059, 16853452, 3207804, -10853919, 4951024, -3165391, 5101885, 18496276, -26025892, -11846594, +-20913270, 11899744, -4165045, 2049773, -6859600, 15101642, -14805826, -14999636, -6761889, -3495567, +-10641855, -18558554, -8890582, 3486977, 12259447, -17072496, 11337640, -6417755, 1423782, 22146462, +17016124, -264677, 9005473, 4301410, -3444027, -2651069, -29967598, 4194036, -2967823, 2990371, +5935645, -2329483, 903017, 30394410, -27169964, 2601677, 32971928, 4329327, 9169218, -12856448, +-3434363, 17235166, 30277908, 1573569, 26862336, -10392747, 24310052, -8462696, 18017924, 18233210, +-4409858, 35487704, -5806796, -1445257, -10433012, -15956877, -16877610, -7726646, -10094247, -24592982, +-11416560, -5167383, 9211094, 9087077, 1248762, -12593381, -2022930, -3503083, 15950435, 4996658, +-8176007, 13664975, 3150359, -1598265, -1824824, -9803800, -1430224, -3842922, 4229469, -9918153, +-4696010, -6884296, -6857452, 12740484, 4968741, -4086662, 3904125, -3114925, 2501819, -7486665, +11410654, 659814, 3260417, -166967, -7554848, 7129109, -849330, 2710124, 8123394, 5726265, +3503620, 784368, -11809013, 5836861, -4486630, -381178, 10287520, -50466, 3849365, 2628520, +4940823, 7059316, -2425583, -5349382, -3623879, -4236985, 2175401, 6383395, 10563472, 6305012, +-12258910, -1326608, -13317620, -11544335, -38907572, -27769648, -19495394, -2006287, 26577258, -17432198, +-2100239, -13427142, -19217832, -16048145, -19634980, -20636780, -8037495, -24346022, -26336202, -23048406, +6620692, -15933792, -8185671, -19847580, 18974628, 30826054, 2794413, -3630321, -10770704, 2464238, +-1808718, -884226, -2362769, 9663140, 2171106, 21000242, -18248242, 1538672, -15504832, 31956168, +7981123, -18856518, 14884746, -13533979, 12117176, -18147310, 10726681, 1480153, -10686416, 9639517, +-16981226, -5787469, 5566815, 17435420, 7792145, 31001610, -6826314, -20109036, 2028835, -5789616, +2515240, -13348758, -11351599, -21454972, 2860985, -22804666, -4411469, -3626563, -19771346, 13246216, +17026324, -9882720, -908386, -29382946, 33864208, 40806484, 6714108, -16195248, 5749351, 35903780, +-16712255, -7729331, -19083614, -11281268, -20963198, 8617852, -840740, -11984032, 9403294, -12002823, +5146445, -7491497, -3236795, 4830228, 2747169, -149787, -7737384, -1636383, 7125888, 3992172, +-13019656, 10378252, -9013526, 4756140, 6224482, -4208531, -7579007, 4127464, -6092411, 5098126, +3903589, -8255464, 3201361, -1156957, 3364570, -4934381, -13116830, 3591130, 2527588, -5508296, +3648575, -4937065, 9685151, -181999, 4080756, 1059246, 12531641, 1605781, -16320876, 9287867, +6350646, 2791729, 10566156, -31547608, 57684632, 21738976, -4657355, -17424682, -4771709, -18500034, +19904490, 49933288, 1164473, -33216204, -15098421, 17983564, 6790344, -6648610, 23910082, -4653597, +3080565, 13617194, -1345399, -13793824, -4386772, 11212549, -14314052, -13139916, -5220533, 4646081, +816581, -2530810, -5945309, 10572062, 1212255, 15664819, 12505871, -16201154, 8063801, 19265612, +10912975, -14970645, 5898064, 3184182, 13137231, 312996, 4664335, 3490735, 5497558, 27182848, +25877178, 15939161, 35028144, -17201880, 18126372, -20719996, 13363791, -238908, 12228309, 15143518, +5035313, 3935264, 18549964, 8548059, -4741107, 11676405, 230854, 15664283, -16446504, -9495636, +1616518, 37764572, -25877178, 2526515, -32580548, -3883724, 3986267, 12916577, -15751256, -3138547, +-16234976, 4265977, 20455318, -12407624, -29091424, -6226629, -2674691, -7937637, 7323993, 5114769, +-8074539, 2949032, -6871948, -6912213, 6795712, -1030792, -3723737, -13211319, 7419556, -541703, +-8141648, -6689949, 6501507, 17853642, 1981591, -5089000, -2114735, 6521908, 16267189, 3223910, +1656247, 13370770, -118112, 3663070, -966368, -2590939, -330712, 4873178, 7867307, 4590783, +-1850057, -2792803, 7054484, 4853313, -9735617, 9586904, 2898029, 18588618, -4293357, 4756140, +11495480, -7606924, -4356708, 6340446, -10189810, 48321604, 3855807, 3575560, -10726144, -6692633, +7858717, 7428683, 4271882, 18661632, 7619272, -7804493, 9683541, 19889456, -985695, 21792664, +-2318746, 10586021, -22377316, 40164924, -6207839, -4712116, 6494528, -30413738, -8073465, -14660334, +21159694, 11734388, 11855183, -14246407, 4887673, 5070209, -19200652, 5178120, 15877957, 13684840, +4420058, -4767414, 1614371, -9203578, 30191472, 4508642, 13451838, 11130945, 16114180, -27303644, +-2538863, -8327405, 4688494, -10236518, -12303471, 22347252, -21862994, 16324097, -14034343, 17181480, +-4341675, -18387292, -2170032, -27543626, 16475495, 15464030, 18524730, -56768732, 15829639, 9965398, +-17869212, -11894375, -16658568, 28858422, -42154032, 24721294, 58041116, 825171, -28491202, -11511586, +16450262, 34058552, 8943196, -12063489, -25757992, -42685532, -3981972, -593242, 16245177, -13037373, +-6299644, -10088878, 28438590, 1478543, -1439888, -8716636, 5440113, 1257889, -636192, 723702, +-932008, 5011690, 17883706, 22164716, 11302743, -3834332, -2463164, 8517994, 1631551, -6067178, +2024003, -9482214, -6084895, -11458973, -16591996, -33999496, -13911399, 4611185, 956167, 18276696, +-14085882, -10099079, 23441932, 8382703, -6973417, -10557030, 7138236, -3053185, -9940702, 23247048, +2062121, -1782411, -8240432, 32212, -10275709, -8312909, -12672838, -3721589, -5532992, -4511863, +-13456669, 8755828, -28032178, 4583804, -17058536, 25371446, 1421097, 7271917, -14486925, 11508902, +-4307316, -9556302, 4334696, -9851044, -6436546, -8290361, -22517976, -12333535, 15898895, 13945222, +10035728, 11937325, -27172110, -7343857, 4887136, -7489349, 15306727, 11500312, 538482, 9878425, +26244398, -7604240, -27805082, 52455508, -23207856, -28736552, 31771484, -15229954, -9673877, 7575249, +16058346, -19020800, -6589554, 2360622, -13255343, 68165960, -1098438, -10707353, -4793721, 982474, +16359530, -32825898, -25765508, -13796509, -13800804, -775778, -29123100, 316754, -3049427, 10885595, +42423004, 43710956, -17296370, 33866892, -33372432, -28931436, 17218524, 27475980, -9769440, 7859790, +2985002, 18938122, 22575958, 384400, 1058173, 30650498, -27540404, -53417584, -6437619, -21082384, +11508902, 25661892, -2951716, -16650514, 34051036, 10567230, 6503654, -8990440, -28768764, -15559593, +2618856, -11951820, 15822123, -1148367, -10619307, -1150514, -11958263, -11536282, 15709380, -4893042, +6087580, -11552925, 16757352, -1207960, -1454920, 11307575, 16050830, -1536525, -3855270, -11021960, +1039382, -9446781, -9261023, -6584722, -3278671, -16692927, -413391, -7468948, -3292093, -16758962, +4534412, 19821810, 7062000, -11769821, -25214142, -1642825, -2609730, 13557601, -33829848, -6686727, +7484518, -6657200, 15214922, -96637, 9102109, -449898, -2965138, 2155537, -19232864, 20821464, +571231, 12622909, -13023951, -20717848, 19287088, -20509542, 6567542, -4924717, 18148922, -161598, +4220342, -11006391, 3708168, -7842611, -26098368, -21046950, 9123584, -1840394, -432718, 4121021, +19905026, -8997420, -5764920, -16691854, 7358890, 5896453, -1806571, -3408594, -44005700, 1889249, +12652437, -15943455, 11220065, -24626268, -4406100, 1513976, 15525233, 19285476, 2528662, -9338333, +6337224, 34828964, 30638150, 30225832, -1214939, -2848637, 6624450, 3573413, -13782550, 8955544, +38451232, -27369142, -8767102, -7966091, 193810, 1407139, 5079873, -20354386, -30873298, -11675332, +-1760937, 62358632, 31797790, 21154862, -2845953, -5487895, -15831786, 27111444, 4004520, 17348446, +-6355478, -8439074, -12533788, -11152956, -46061376, -20445118, -24282672, 19120658, -1742683, -9004936, +-1406602, -18938658, -8810589, 20045150, 30217242, -4715337, 26651346, 14332306, 11196980, 1610076, +12658342, 15926812, 13457206, -3393561, -790811, 198642, 18190260, -14372571, -18457086, -8964670, +10002979, -1734093, -12966506, -8482560, -12987444, 7693897, -2895345, 16504486, 32969780, 6177237, +20356534, 26382910, 12913893, 16370268, 8311299, 5201206, 7355669, -12071006, 17447230, -14308147, +-9535364, 3839701, 1554241, -10200547, 5323612, 9424769, 17519172, 7148973, -19928648, 11025718, +8506183, 2189897, 9369471, -5370857, -10468983, 5842766, -447213, -7681012, -4370666, -7175280, +2833605, -42541652, 23841364, 21033528, -1260573, 34512208, 15362024, -23399518, -23269596, 10135049, +-9624485, -20871394, 1244467, 2141041, 9270150, -5152887, 12132209, -2985002, 11482058, 14855218, +-13772350, -55166172, 29548302, -8286603, -17407502, 12632573, 19485192, 745714, -37196564, -4806606, +-1602023, -38114612, -23925116, 20163260, -5907728, -15453292, -13218299, 8694088, -37247032, -26308822, +50103476, -4216048, -29207388, 11471321, 27187142, 11754252, -41332080, 59040232, 23776938, -36294620, +20138564, 26725434, 4191351, -24561308, 25498684, 28616830, 17301738, -22632330, 21385180, 40059696, +2098092, 40467720, 49927384, -26686780, -16003585, -18563922, 47175384, 30146376, -20565378, 11589432, +-12454868, -29985314, 25818122, 58959700, 8451959, -17636746, -14842870, 35451196, -3356517, -39533028, +-28399398, 7279970, -1516124, 32876900, -5893769, 25415468, -49270792, -7466264, 1929514, 8538395, +-10286447, 10536092, -499827, 1100585, 5612986, 1489817, -12895639, 3999152, -6152004, 8038568, +3088082, -17824114, 15648176, 5209796, -14952392, -10555956, 2821794, -12837657, 2515777, 11941083, +12997645, 1955821, -12248710, -3869229, 4006668, -16661789, 9778030, 12520367, 4024921, 1139240, +12400107, 4648229, -5583995, 6156836, -4498978, 1140314, -8567923, 5508833, 19872814, -14003741, +34641060, 55766392, 22407918, -23067196, -8576513, -19346680, 11796665, -9395778, 15216532, 10124312, +-25665650, 13046500, -26156350, -8754217, 119722, -9569187, 1374390, 13626321, 10548977, 768799, +-20885890, 4702453, 16596291, -6309844, 2377801, -7517267, -24423868, 24612846, -14800994, 17044040, +-25157770, -14758044, -3655017, -20560008, -6241125, 20896090, -20512764, 27546310, 1646583, 22461606, +8719320, -11193222, -30280594, 24707336, 15169824, 10281615, 6180995, 25465934, -19046570, -9614284, +-11098732, 7944079, 9384504, -2521683, -23972896, -1104880, -3477313, -24055038, -9723269, 3765076, +6303938, 18924162, -2463701, -16917876, 22300008, -4378183, -4118874, 27033062, 12663174, -22257058, +6979859, -13660143, 8398272, -7186017, 10370199, -19237696, 10502806, -6706055, 21007758, 3590593, +7916162, -7267085, -296890, -15634218, 5986111, 945430, 443455, -476205, 4200478, -6349573, +-6099391, -832687, 2252174, -1828046, 3809636, -8008504, -1807108, 5987722, -1760400, -383863, +-1575716, 60130, 64961, -12603045, 2060511, 9919764, -111669, -1571958, -3016141, -1343788, +-9613211, 549756, -2655901, -1277216, -5167383, -7793218, -2073396, 7387881, -4701916, -2438468, +3151969, 1455994, 5375689, -5868536, -2591476, -1009854, -4951561, -6837588, -7843147, -41640244, +-48217988, -26410290, 144568592, 126372432, 77091440, 167812432, -35464080, -126732672, -44047036, -238599936, +-124497680, -2845953, -61275760, 84818088, 156533312, 21539798, 92134568, 178530512, 30404074, 62055836, +6347425, -184122560, -153127936, -135909952, -148932288, -90863792, 74494600, 31044560, 74587472, 192991664, +116892904, 29837138, 143829872, 65157340, -87529288, 47414292, -63781340, -168611824, -20396262, -104369312, +-190898416, -86628416, -19494320, -100617128, 112244136, 120065272, 57353920, 191414880, 216989808, 81883552, +107474576, 100755104, -112354200, -73753176, -143782080, -225494912, -206753280, -133095128, -132979168, -38582228, +86915640, 111749680, 150107504, 210751904, 189911648, 110514880, 81228568, 14274861, -87531968, -128021160, +-93284008, -121904592, -149878784, -51133732, -56393996, -27842662, 94016296, 64648384, 69548944, 145502752, +37513320, -6682432, 24363202, -40537512, -62716188, -35311072, -63382980, -19347754, 41139880, 15328201, +22800370, 51437064, -11841762, 10591389, 28456306, -47748224, -4473209, 59612536, -56296820, 4752918, +9776419, -112960328, -5456756, -2314987, -134481328, 10644003, 47728360, -17399450, 139083920, 126039040, +23375896, 134887200, 66851704, -5939940, 22679038, -36436356, -145301424, -151742272, -187413584, -213618784, +-107399952, -17459578, 43456480, 134022304, 223099392, 255558064, 203649088, 150502640, 69067368, -28129352, +-84687632, -186703840, -233564624, -172125104, -137888848, -131442640, 8584566, 64535640, 79239464, 129522792, +115795000, 76182520, 75110392, 53983444, 17331266, 21529598, -229781, -40977748, -46860776, -59445568, +-76106824, -68073088, -49179524, -36851356, -13717052, 18241262, 27545236, 44781476, 54664196, 47046536, +34440804, 26370562, 11695196, -2129230, -12050604, -17695266, -23966992, -19036368, -13921063, -11141145, +-8855686, -2153926, -3183108, -2690260, -518617, -2390686, -5903433, -65498, -1461363, 1200980, +9239548, 14740328, 18321794, 26564910, 19847044, 9956271, -288300, -9264781, -16722455, -18027052, +-24420110, -24440512, -19173808, -8459475, -1445793, 9253507, 15159624, 20631950, 19844360, 18417356, +9459129, 2334852, -5022965, -8725763, -12387223, -9847823, -8704288, -3854733, -242129, 4481799, +4603668, 6265284, 3293166, 1909650, -2919504, -4812511, -7317014, -4618701, -3829500, 725313, +2287070, 5556077, 5341329, 6820408, 3973919, 3745748, 464393, -156766, -2880313, -2028298, +-3720516, -2219961, -3064996, -989990, -1648194, 496606, -511638, 932545, -616865, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -517007, -6449967, -663036, 1957431, -1178432, 8610873, -3382287, -837519, -304943, 1064615, -1521492, -3942780, -681826, -2662880, -471910, 5392332, 400506, -2732673, 2529736, 1861868, 3552475, -1452236, -2704756, -1791001, 6029597, 836982, -1543504, -1194538, -1228898, 1183264, 1283658, --779537, -7676717, -1924145, 370441, 5297842, 1894618, -659278, -22012, -3059627, 4220342, --4312684, -5733245, 740882, 55298, -1944010, -1320703, -1603633, 820339, 520765, 505732, --2008971, 5005785, 151398, 6709276, -1082332, -3196530, 1469416, -356482, 957241, 1557463, -3388729, 2306398, -868657, -1842541, -1571421, 4352950, -4433480, 172872, 123480, -778463, --3802657, 3352759, -1918240, 442919, 2909840, -2050310, -2748779, -2285460, 2950643, -272194, --920734, -820339, 96100, -553514, -1199370, 1465658, 1500554, 1096290, 682900, 375273, -2051384, 331249, -44023, 431644, -202400, 73014, -475668, -255014, -246961, 1386201, -333397, -933619, 1164473, -2544768, 2225330, 1342177, -2998424, -1645509, -230854, 284005, --153008, -437550, -1514513, 2723009, 529892, -1163399, -1582696, -73014, 5628555, -777926, --2630668, 3608310, -1389422, -3378529, -330712, 2889976, 2165737, -1844689, 523986, -2308008, -1368484, 1332514, -1089848, 2888903, -765578, -5179194, 986232, 2704756, 2535105, 367220, --360240, -3750043, -1243930, -481036, -1622961, 3413425, 4800700, 2238215, -6481643, 2219424, -7692824, 3186866, -343061, -33823, 3561602, -1727651, 1188632, -3213173, -2888366, 2985002, -3387656, 1636383, 934155, 612570, 711354, 1604170, 339839, -282931, -1116155, 825707, --2236604, -406948, -940598, -4626754, -2282775, 996969, 1771137, 1450625, 3189550, 2505577, -2656974, 3787088, -2355253, -1488743, -651224, 1221381, 1423245, 2246805, -431107, -717260, --374736, 1383516, -940061, 1255741, 352724, -482647, -366683, 435402, -180389, 777926, -354872, 150861, -261993, 445603, 423054, -131533, 652298, 184684, 200790, -458488, -157840, -104153, 64961, 824634, 142271, 371515, 344134, 147640, 4491462, -351114, -1873680, -2907693, -4248260, -2714419, 2361695, -1985349, -1955821, -2150705, -2795487, 2684355, -414464, 1958505, -853088, 547608, -5783711, -3776887, -2626373, 3685619, 737124, 787590, -2062658, -2100776, -1022739, -507343, 695785, -4449049, -828929, -3016141, -3218541, 141734, --2837900, 1875290, 1828582, 7634841, -1892470, 3859565, -2581812, 1567126, -1766842, 354335, -6733972, 1029182, 2925947, -3230889, 2062121, -2911988, -1345935, -493384, 4281009, -2157147, --1084479, -3848291, -2005750, -4535486, -591095, 4185446, 1023813, 262530, 744640, 3832185, --3821447, -6773164, 1565516, 2061047, -4378719, -377420, 596464, -1142998, 1777580, 5197448, -1104880, -1391033, 126702, -1927904, 353798, 261993, -1495186, -508954, -472983, -2182380, --495532, -1271310, 454193, -519691, -832687, 1679332, -326418, -1771137, 736050, -1279363, -56371, -1379221, -1918777, 1058173, -346282, -198642, 612570, 757525, 249108, 1720134, --846109, -209380, 298500, -701690, -274341, -262530, -887985, -526134, 1463510, 428960, -2085207, 194884, 933619, -890132, 2430952, -6821482, 1104880, -2362232, -5087389, -3615289, -2018098, -973347, -267362, 5046050, 1630477, -661425, 404801, 4297115, -2037425, 3182571, --1459752, 977642, -4539244, -757525, 3022583, -989990, 3762928, 4293894, 1369558, 2719788, -5543192, -1266479, -7883413, 1823214, -3525631, 282394, -9648107, 300111, 3055332, -1890859, -3558381, 546535, -3500398, 1284195, -7263327, -4590247, -1794760, -1740536, -6032819, 3078955, -3296924, 232465, 3066070, 274341, 810138, -1910187, 2777233, 2174864, -1152662, 6658810, --1276142, 5506685, 4657355, -235686, -791885, 47245, 1472100, 2268817, 683974, 2535105, -804233, 882616, 7300371, 2829847, -3230352, -1439888, -73551, -1734630, 1058173, -1246614, -7363722, 1265405, 3444027, -2625299, 2971581, -3221, -1486596, 664646, -2422362, -1529545, --440234, -1689533, -1086627, -1012539, 877247, -1584306, -406411, -1108102, -615254, -526134, -2001992, -839666, 1029718, -265751, -1758252, -262530, 1039919, 454730, 159988, 689879, --1074279, 918586, 557809, 547608, 973347, -552977, 209380, -1668595, -149250, 1319092, -1135482, 302795, 190589, 183073, 922881, -13136157, 91805, -79994, 3408057, 5705864, -2067490, -2936147, -4734128, -804770, 6273874, -1221381, -1135482, -4651450, -56371, -1958505, -4659503, 5439039, -9351754, 6097243, 3971234, -3603478, -710817, -4969277, 83215, -1525787, -169651, 3193845, 6307160, -2385318, 1499481, -1674500, -2085744, 2283849, 4369593, 2872260, --2656974, -4488778, 3157875, 2115808, -1547262, -847182, 599685, -5774584, 2142115, 1698660, --2239826, -3872987, 1540283, -2951716, 5160403, 2208687, -8902393, 4053912, -3779034, -9905268, --2802466, -774168, 2039573, -4083440, -127775, 2141578, -4298189, -4329327, -4424353, -1407676, -1184874, 9331353, 1534914, 1746441, -1953673, -4930086, 6444599, -1970316, -7429757, 336081, --7498476, 537408, -668404, -2790118, -8218957, 2492692, 178241, -1854352, 2091649, 4992900, -2372970, -986769, -790811, -56908, 2809446, 411243, 739271, 1510218, 2738579, -263604, --1183264, -1631014, -1585917, 609349, -60666, -1335198, -1260573, 1181653, 1239635, 2303176, -561030, -85362, -63351, 842350, -339839, -71404, -302258, 1444720, -98784, 756988, --146566, 1984275, 8191040, 2139968, 1808181, 3518115, 5169530, -1184874, 12572443, -1875290, -9006010, -10630044, 3679176, 6128919, -2203318, 809064, -2944200, -337155, 4865661, 8762807, --2463164, -4432406, -1257889, 4054986, 905164, 8910983, 4269735, -1020592, 1318018, -118648, --4162897, 781147, -906775, -1351841, 3946001, 5094368, -8094403, 9328132, -7113540, -3937411, -1622961, -2945274, 4752918, 69256, -2686502, 6573985, 9316858, -6972880, -1220845, -729071, -2905009, -6605123, -10765336, -5088463, -3272228, 3122441, -7457137, -4376035, -843424, 7700340, -4905390, -5459441, 3892314, 1998234, -2914672, -4497368, -674847, -2789045, -3140158, 266288, --2079301, 5742372, -4358855, -971736, 4940823, -3951370, 5338108, 6287296, 895501, -714575, -589484, -7897908, -6927246, -1797444, 4401268, 129386, -3016678, 2828773, 6473590, -4353486, --1966021, 1693828, -546535, -3111704, 18790, 765041, -2922725, 98784, -779000, 1265405, -428960, 2268280, 360777, 1767379, -1126355, -545998, 124017, 149787, -82678, 1575179, -740882, 1847910, 1864016, 117038, 585189, -339839, 1219234, 1884954, -958851, 4788352, -3872987, 5229660, -5054103, -6660958, -3618510, 4541391, 192200, 18772766, -1446867, -456877, --4552129, -8478802, -12486544, -2750390, 4082903, 6600291, -4150549, -7981123, 998580, 71404, -7962333, -2677912, -3318936, 9877351, -5424007, 642635, -7660074, 4879620, -1571958, 37581, --1738925, -11602854, -7326141, 615254, 6390375, 4303021, 475668, -12023224, 7934415, -4860293, --5008469, -5189394, -6924561, -1079111, 6484327, -5331128, -5919539, 4030827, -1970316, 2313377, -11978127, -5256503, 206695, 593779, 5055177, -3565897, -3315715, -1666984, 7590818, -1728724, --4089346, -716186, 5905580, 7740605, -7743289, -8747775, -3030636, -1300301, -2985539, 1853278, --6196564, -2175401, -5852430, -11557220, -4623533, -2675228, 1476395, -10629507, -3007014, 159451, -7454990, 220117, -6600291, -128849, -338229, -2005750, -3682398, 159988, 1482301, -695785, -1080184, 1053878, -1510755, 2158758, -962073, -2158758, 2276870, 2871723, -1315334, -2758980, --156229, -543850, 411780, 2298881, 788127, 39728, 1549946, -878321, -1459215, -1111860, --1594507, 2281702, -6159520, 5224828, 6305549, -4629438, -5682242, -4741107, 2550674, -449361, -9153649, 16037945, -9019431, 623844, -407485, -1086627, 1457605, 4660577, -13178570, 11833709, --9296994, -4555887, 11848204, -2722473, -5715528, 3964255, 4356708, 292058, -698469, -9144522, -5690295, -1282585, 1953673, -6044630, 7532299, -669478, -12685186, -13481365, 4478577, -2454037, --7012071, 3448322, -615791, 20946018, 3473018, -3803194, -6267431, -12313671, -4414153, 2419140, --3041911, 9658308, -2079301, -14345728, -1431298, 9903658, -4357245, 1318555, 8496519, 5789616, --4886062, -881542, 6871411, 9259949, -4255239, 1829119, 1276142, -4430796, 1958505, -2028298, --661962, 1400696, -2193118, -2577517, -8946954, -9713069, -8275328, 8233989, 4540318, 5372467, -2216203, 86973, 3229816, -7080254, -3973382, -9918690, 4889821, -1232119, -1420560, -1998234, --1530082, -5047661, -3059627, 1064078, -2110977, 330176, 333397, 381715, 1901597, 278636, -2291365, -230854, 1675574, -2284386, 1272384, -3438658, 239444, -1618666, 2835215, 168041, --1885491, -512712, 856846, -1461363, -1740536, -4020090, -4126927, -2221572, 4079145, 308701, -1400696, 2636036, 767725, 3193845, 1175747, -2578054, -10765336, 4109747, -11618960, 490163, -4169876, -1830730, -8706972, -4035659, -1811403, 7796977, 6117107, -4580046, -4827007, 8310762, -3405372, -4753455, -5216238, -3995930, -594316, 8035347, -1404991, 762357, -493921, -62277, -10226854, 5128191, 6838662, -447750, -543313, 3579318, -5353677, -8910983, 7268696, 11795054, --7993471, 10144176, -3002719, -992137, -4569309, 5242545, 285615, -5630166, 3414499, 9592809, -7448547, 3485903, -7213398, -2914672, -14570677, 2445447, 7543573, -4643934, -1197222, -5727339, -1477469, -3398393, 5615133, -3562139, 1854889, 6763500, 3814468, 12717398, 6612639, 4318590, -8091719, -6783901, 12158516, 3797288, 7383586, -2408940, -8419747, -12926241, -2482491, -2148021, --3401614, -3015604, 4803384, -8879845, 13447543, -2285996, -10909754, 6229313, 10048076, 4201015, -1281511, 2126546, 3762391, 1302986, -2246268, 2609730, -2058363, -10737, 4214974, 8053, --170725, 4648229, 652298, 2557653, -395137, -2150168, 697395, 475668, -1854352, 1464047, -1889786, 522912, -1321239, 1133871, 383863, 3600793, 790811, -635655, 2268817, -3054796, -901943, 716723, -3343632, -4875862, -1362042, -1898912, -1249836, -2410014, -1701344, -1006096, --408022, -4194573, 5928666, -12702366, 9327058, 3338800, -2005750, 13963476, 10668162, -17534740, --11868605, 11210402, 19021874, -1669132, 2756832, -1527935, -2465848, -1808181, -845572, 4932770, -2822331, 11640435, 2791729, 11145977, 3071975, 4914517, -1542967, -6125160, 2636573, 980863, --5129802, 8568997, 833761, 3511136, 1940788, -1622424, -7868380, 1149441, -8919573, -2869038, --10315975, -6749004, -4185446, 8784282, 1213865, 4400731, 10566693, -4435091, -901943, 1390496, -3787624, 1296006, 246961, -2820183, 7826504, 17426292, 8301098, -13590887, -9808095, -10014790, -11924440, -1646583, -11051488, 6618545, -6193880, -507343, -1806571, -597000, -847719, 552440, -10464688, 17468168, 6546067, 15072651, 9560060, 5013838, 1950989, 3939559, -4779762, 16041166, -5146445, -8121247, -11116449, 5115843, 3683471, -2849174, 7965017, 15193984, 3483219, -5579163, -9366250, -663036, -6838662, 1641214, 5268851, 1071058, -875100, 818191, 2912525, 5281199, -2282238, 2470143, 615791, 3532611, -1353989, -410169, -1899449, -316754, 6962679, -3426847, -2609730, -835371, 1702418, 421444, -1787780, 1287953, 2509335, 3271691, -1369021, 1498944, --2728378, 192737, 1454383, -4723927, 2190970, -1402307, -6971269, 1814087, 17370996, 3103114, -6213207, -5700496, 4579509, -8656507, -14811732, 159451, 8139500, 2203318, 6561100, 8839580, -10069551, 398895, -10712185, -9406515, -14235669, -22440668, -259309, -2876554, 9962177, 7113540, --8227547, -4853850, 5890548, 11435350, -14443438, -9599789, -2682744, -8182987, -5320928, -3188476, -4619238, 8827768, 517544, -5699959, -6635188, 8919573, -7187628, -3285650, -114354, 12637941, --801548, 836445, -20078436, -1743220, 5022965, 10146323, 13567802, 2680060, -12905840, 5908802, -348429, 5878200, 8568997, 1199370, 4345970, 9517111, 17111150, -11558294, -4399657, -1231582, -5289789, 17886392, 7699803, 5815923, 10231149, -3728569, -5924908, -11121818, -13645111, -8377871, --473520, 8549669, 20232518, -12832289, -9197136, -1541356, 19835232, -11329050, -6386080, -10147934, --1776506, -9123584, 2878702, 1435593, 4748087, 10251013, 1976222, 6471442, -4335770, -4596152, --5570573, 187905, -2799782, -6824166, -5857262, -3140158, -1527935, -1633698, 6698002, -5279052, --1498944, -2160906, 4787815, 924492, 3488587, -2537789, -2279017, 4496294, 1588601, 977642, --3997541, 5870147, -3117610, -456877, -2182917, 1663763, -2268280, 343061, 4035659, 4595078, -785442, 8810589, 5194763, 12465606, -14782741, -10794327, -1532230, 21734146, 8974334, 398358, -11963095, -7532836, 17886928, -4335233, -15487115, -3190624, -15393163, 12434467, 7636989, 4772783, -5009543, 115964, -4875325, 5922760, 9176198, 4392141, -3076807, 7951595, 10963978, 9554155, --1133335, -8648990, 14818174, 3274913, -829466, -2672544, 1840930, -9820980, 9630390, -2016487, --2592013, -12469901, -6616397, -7781944, 17249126, 5914707, 232465, 2049236, 8933532, 12545599, -6556805, -16738024, 15066745, -2002529, 8727374, 3472481, 13235479, -3265786, -17259862, 5182415, --767725, 6910603, -3051574, -7315403, 6445136, -3005403, 4374424, 21512954, -2636573, -10275709, -56371, 2604898, -10562398, 17278654, -7804493, -10843182, 15471546, -9276592, 7884486, 777389, --11226508, -8242579, -11232950, 3264175, 9381282, -5873905, 5426155, 10139344, -5810017, 7070053, --2419140, 12043088, -4401268, 3396246, 3988951, -3668976, 14496, 197032, -5625334, -1008244, -5065377, -8128763, -1554241, 5476620, 2910377, -110595, -4842576, 2107755, -1337882, 1651415, --5070746, -5158793, -2778307, 739808, 1188632, -6156836, -3718368, 5180805, 660888, 2092723, --6019934, 2423972, 461709, -3007014, 1122597, 534723, 1867237, -3486440, 168041, -1864553, --403190, -5010616, -2018098, -712428, 3131568, -1147293, -3257733, -2005750, -714038, 689342, -547608, -1221918, -41339, -6713571, 5143760, -14874009, -2648384, 7292855, 2028835, -14554034, -3954054, -5403069, 10606959, 2054068, 5551782, -23993298, 7436736, -14496, 9376987, 14725295, -1043677, -2370285, 1505923, -8106751, 15644955, -15094126, 5008469, 8813273, 6573985, 8080981, --3652870, -7507603, -7951595, -15602542, 6248641, 1857573, 9069360, 15639587, -5829881, 13347148, -7757785, -13760538, -7332583, -657130, 1695975, 258772, 122943, 6376416, 12089796, 10510859, -4878546, -28257664, 7122667, 7809325, 8475581, -18776524, 11332808, -9860708, 9866614, 694711, -5328444, -2949569, 7462506, -2681133, 23885386, 10893111, -10334765, 863825, -29477972, 4529580, --8521752, -9461813, 8586713, 5537287, -14695767, -30041148, 18942954, 11061688, -27533424, 10409927, --6043019, 10187126, -2091649, 2116345, 4586488, -137976, -18471044, -7418483, -2473364, 5509906, -61203, -5153424, 8106751, -10424422, -3706020, 9977746, -660351, -1319629, 3856881, 1753420, -4326106, 1453846, -5331665, 1902671, -8094403, 4776541, -3403762, 2558190, 2462090, -2615635, --1018981, -1898912, -2712809, 1136019, -4534412, -1156420, -3799972, -3393561, -6433861, 3052648, --1735167, -2161979, -3586835, 1393180, 3603478, 1832340, 2077690, 279173, 1258425, 2157147, -107911, 2373506, 2576444, 6027450, -3139084, 9024800, -3244311, -6220187, 11126113, -8541616, -300111, 1421634, 28242632, -4010426, 20457466, 4787815, 15460809, 772020, 4577362, 4755603, -27245662, 26883810, -13761612, -12972949, 15693274, -19806242, 243739, 5115843, -19326280, 10948409, -1807108, -1748589, -3318936, -6146635, 2597918, 1924682, 3908957, -12199855, 343061, -3114388, --15555298, 7882876, 11256036, -17834314, -12893492, -6633577, 9773198, 9069360, 9106404, -1129040, --3323768, 8127689, 28389734, 14990510, -5277441, -3838090, -3571265, 18818936, -14922327, 6845104, -4292283, -23856396, -9548249, -1234803, 3495030, -20243792, 14099841, 8838506, 4304094, 3656628, -9866077, -19176492, -2026151, -15933255, 979789, 9627706, 16748225, 9978283, -10136660, -5698885, --544387, 394600, -11684459, 26616450, -1841467, 3409130, -6025839, 9030706, -1749662, 5219996, --2135136, 3189013, 2811056, 5677410, -387621, -47245, -1888712, 1237488, -117575, -1649804, -8195335, -2497524, -5526013, -475668, -350577, 3901978, -5633387, 1219234, -4617627, -7860864, -5077725, -1566053, -4968741, 300111, 208843, 789737, -4332549, 6047314, 1917703, 7456600, --9050033, -768262, 4714801, -2480344, -7284265, -254477, 8522826, 3590056, -4947266, 5064304, --2439542, 12828530, 20110110, -1480690, 1387811, -12489228, 1126892, -632971, -8781598, -14897094, --2759517, -6944962, -11014981, -8200703, 12633646, -10726144, 9184788, -3294777, -2457795, 17489106, --12087112, -6877854, 2767033, 7002408, 1112933, -23343684, -14214194, 2571612, -3671123, 3684008, --3179887, -7388418, 14898168, 3086471, -1208496, -6178311, -33374044, 19994684, -5982890, -454193, --2780991, 1189169, 9652402, -5659693, -9061307, -15699179, -1409286, 6802155, -9574556, -12458090, -5160403, 19548006, -3273839, 18173618, 13506598, -13458817, 24646670, 16164109, -16157130, -25142738, --7148436, -11008538, 1399086, -8028368, -1890859, 11910481, -20893406, 10172093, -3350075, -11861089, --13092134, -13220446, -15858630, 3226057, 9604621, -8638253, 13701483, -1865090, -7913477, -16500727, -319975, -1928977, 6397354, 19497004, -7030862, -14929306, -5128728, 343597, 5086852, 13316009, -3575560, -1748589, -10935524, -170725, 459562, 4898947, 2122788, -60130, 3752191, 5404680, --4068945, 6769406, -3905199, 3053722, 8005282, 7089918, 482110, -11305965, -4566624, 1625108, -2811593, -7885023, 12706661, -7760469, 5830418, 6764574, -5156645, 601295, 1431298, -3047279, --10697690, 2203318, 4858682, 775778, 9057549, 6215355, -6099391, -5926518, -1561758, -21211770, -38613904, 54385024, -5261872, 6642704, 3474629, 13187160, 26347476, -25144350, 288300, 4379793, -485868, -9054865, 1347546, -11191074, 13221520, 32408212, -6848326, 717796, 1838246, 9833328, -890669, 3825742, 12447352, -24930674, -1867237, 24507620, 25149182, -29377040, -6245420, 4254165, -4134443, 8776229, 22136262, 6254546, 44656924, 7459822, 13779329, 6605660, -7019051, -9240085, --536334, -31314070, -45086420, -15237470, -14632954, -46942920, 7352447, -1090385, -26234198, -12774306, --43947180, -4779225, -6050535, 29981556, -29350196, 18337900, -20055350, -1605781, -13189308, -10380399, -11783780, 26948772, -20744692, -7753490, -1881196, -6109054, -2201171, 11387569, 21583822, 23077934, --16444893, 46385648, 31091268, 4086662, -17579302, -38101728, -8653285, -14157823, -10411538, 2556579, -12247636, -7963406, 4567698, 14432164, 2334315, -4522601, 14619532, 9781251, 5012764, 6461779, -15348066, 15531139, 119722, 1316408, 6207302, 5855651, -2528662, -4559645, -2652679, 2887292, --382252, -1894081, 966905, -3022046, 2138357, 10157061, -436476, 3626026, 12323872, -3157338, --4420058, -4649302, -525597, -6774237, -1380295, 5917391, -3207267, -1795296, 1178969, 119185, -1049046, -891206, 4846871, -3200825, -3400540, 8069707, 5644661, -6136972, -326954, -3239479, --1338956, -19384262, 35533340, 59230820, -13942001, -2991982, 10507637, 26533234, 8917426, -15357192, -9636296, -13113609, 3410204, 8415988, -3176128, -17702244, 5338645, 18909130, -4704600, -26976690, -21142514, -6163278, 17257716, -6347425, -4265977, -6624450, -10926934, -397821, 19166292, 10748156, -3170223, 15540265, -7364795, -6105296, 5905043, -8241506, 10725607, 6294275, 16408386, 28161026, -24640228, -17710834, -33050310, -12032351, -2084133, 25891674, -9910637, 4631049, 10417443, -10222559, --15241228, -24334210, -25034828, 19740206, 21006148, -16763257, -60244432, 5005785, -4258997, -8231305, -4657892, -5981816, -24184960, -11258720, -5691369, -16769163, -7210713, 25654914, 9681930, 14795089, --5822902, -8369281, -5473399, 14266808, 2363306, 2684355, 12221329, 35568236, -3138011, -5213554, --17995376, -16977468, -24837796, -2663417, 13990319, 9579388, -10166724, 7421167, -4723391, -5892695, --10394358, -9415642, 8512088, -7292855, 8300025, 3918621, 4660040, -5314485, -7797513, 8704825, -5333276, -2200634, 6519224, -9131100, 3757560, -1258962, 5349919, -3035468, -5290326, -2970507, --2670933, 6102612, 2946348, -314606, -6498823, -1546188, 12715251, -9218074, -341987, -8957154, -10885595, -5970005, -2587181, -8283918, 1058173, -3577171, 1051730, 9261023, 9250823, 1882269, -6442, -3643743, -7090454, -7795366, -988379, -12766790, -1695975, -10555419, 5692443, -14934675, --24370182, -5350993, -4024384, 4525822, -8276939, 18822158, -11135240, -38323992, -20713554, 13285408, --18001282, 21321292, 19088446, -8385387, -2826089, 2788508, -11620034, 90194, 6303402, -1632625, -3464965, 27009976, 22555558, -5953899, -35655744, -27057220, 2094870, 18977850, -14283451, -6123550, --16797080, -21575232, 2071785, -6052146, -25267292, -27555436, -40414568, 16338056, 5664525, 943819, -23439784, 31389768, -1148904, -23371602, -17701170, -18894634, -10625749, -6659347, 7212861, 12182138, --10741713, -17199734, -20960514, 11203422, 9904731, -20641612, -19621558, -7879118, -3349538, -12037720, -7556458, 50834160, 30593588, 59361280, 19929186, -31523986, 37056440, -1610613, -18835580, 1832877, --17727478, -38924752, -16008954, 8913668, 18655190, -4403952, 17193828, 9849971, 37875704, 41193032, -34015068, 11216307, -9435506, -6018323, -5499169, 7136625, 9680856, -14381161, -5208722, 2305861, -30904974, -4361003, 2753611, -3428458, 11237782, 11137924, 13264470, -752693, 349503, 129386, -2954401, -1300838, 1953136, -11329050, -3507378, -3947612, -10436234, -10982231, -4940823, 3840775, -13117367, -8535174, 2053531, 4458713, 14892799, 19931332, 13809394, 12696997, 14358076, 3031710, --5276368, -11153493, -15815143, -19906100, -15502148, -9334038, -18699750, -19221052, -7318088, -3510599, -1841467, 8356396, 35492536, -20204064, 2423435, 10290205, -4346507, -26334056, 26638998, 25226490, --14461155, -20158430, 2857227, 34974992, -18282602, 9899900, 22591528, 6784438, -8348343, -16852914, --10901701, 7693360, -2556579, 5844914, -9716290, 6465000, -21656298, 31768800, -2971044, 7077033, --1395328, -40217536, 12617540, -11184095, 20809116, 12399571, 22226456, -8704288, -38603168, 27733140, -12622909, -13224741, -23991688, 19866908, 10787884, 21132312, 21505438, -18723910, 8696772, 22307524, --32681480, 29990682, 14898705, -1010928, 9666898, -17061220, 37749004, -4299799, 24880746, 11065446, -43815644, -3120831, -7553237, 6099928, 17890686, 11747809, 12486544, 44095892, 2703682, 10738492, -25913686, -17113834, 17818208, 2042794, -29250874, 10880226, -9783399, 33158222, -24348170, -29445222, --30478162, 26079578, 43011948, -13744432, 11033234, -50634980, 4936528, 2389076, -1818919, -23738284, -4074313, 9978820, -7708930, -6558952, -6246493, 15980500, 7626788, -10152229, -10790568, -6335614, --2461016, -3208878, 4711043, -17479980, -10341744, 9230958, 3941169, 3262565, 674310, 7951058, --1247688, -956704, -10130754, 13709536, 17252346, -7354595, -26554710, -18046916, -78920, 9127, -5232344, 1330903, -8292508, -13127031, -7080254, 4931160, 7823820, 21364778, 7351374, 1110249, -481036, -15941845, -3146064, 16558710, 9915469, 3756486, -17255032, -10561325, -1842004, 2396592, -3142306, -2857227, -3169149, -3046743, -1017370, -64887292, 3540127, -7940858, 2005750, 50253264, -41349260, 59509456, 31411780, -15817291, -12132746, -24645596, -32875828, 11576011, 2872260, 8637716, -10438918, -9566503, 14949707, 25380572, 4654671, -6784975, -8606578, -17961554, -11959336, -10851772, -4950487, 8092256, -25818122, -15255724, -3569655, 17326434, -7825968, 11164231, 13845364, -36658620, --36141076, 6867653, 10464688, 8060043, -27282170, -12526272, -24504400, -11843909, -11222750, 23639500, --31056372, -43218108, -16258599, 8590471, 7347079, -33331094, -26781806, -21029770, -15944529, 18034030, -25396678, 1160178, -8630200, -10538776, -5892159, -5612986, -11478300, -36998996, 12175695, 27821724, -25271050, 7880191, 34517580, 46693272, -4066797, -5992016, 35743792, -8644695, -21752936, -49155900, --16746614, 6709276, -26980984, -18053896, 12642236, -4408784, 17529372, 30673046, -18663780, -28956670, --9588514, -12419972, -7188702, -7852274, -7793755, 3271691, 4451734, 3593814, 6244346, -10396505, -9086540, -14364518, -1719061, 8947491, 11985643, -12834436, -17912162, 10271951, -4075387, 672699, --12499429, 14795625, -8651138, -3105798, -3437585, 13695577, -11574400, 14857366, -6580427, -6920266, -9833864, 2600603, 7835631, -6186901, 705448, 2921115, 16018081, -1863479, 3813931, 2448668, -42769820, 14813879, 3596498, 15415174, -17520782, 1008244, -8879845, -13342316, 8027294, 2972117, --10880226, -18460306, -10392747, -17144436, -13696651, 5446019, -10536629, -5333276, 8138426, -5406827, -1950452, -6001143, 21330418, -16691854, 17512192, 6194417, 2095944, -16146393, -6771553, 12683038, -5322538, -399969, 10357851, -1920924, -4105452, -6672232, -5405217, -4505421, 2047626, -187368, -2279017, -18889804, 10004053, -7958038, -7237020, 6451578, 4621385, 2357937, -3422552, 13086228, -11469173, -16542067, 14839112, -2157147, 10103911, 19757924, -4051228, 10649908, 10351408, -9970767, --6922414, -13256953, 1291175, 2168959, -20989506, 8614094, 3314104, 16335371, -6360310, -37526204, -23579908, 1327682, 791348, 387621, -16413218, -5316633, -4243428, -5683853, -23972896, 13621489, -7009387, 14697915, -10621454, 6414534, -11927661, -11082626, 614717, 9292699, 7692824, 147103, --1272384, -3479997, 943819, -5626407, -1027571, 15858630, -6376416, 3068754, 1843078, 4429185, --9685151, 10519986, -282931, -2129230, 2601140, -1165010, 2543695, 3451006, -8799314, -1337882, -266288, -1784559, -1524713, 4756140, -5583458, 6991133, 10435160, 3777961, -6332393, -443455, --1237488, -6128382, 7640210, -2215666, 4224101, -21919366, -62270584, -92581776, 19445464, 72807752, -3032784, 199248368, 183653872, 126211376, 217002144, 166987792, 22740778, 3670050, -22470732, -159005056, --162226288, -123272000, -212496192, -198096784, -56603372, -66004520, -66791036, 16040092, 40320616, -33024004, --10969346, 63917704, 40711460, -2005750, 47518444, 33067490, 2600066, 39894876, 94101120, 62035972, -21686900, 96520800, 71417792, 5821828, 82902536, 112423992, 27103392, 12426951, 114599928, 31636730, --44354128, 57919244, 88340496, -44715980, 20807506, 123517888, 11934640, 20704964, 148954304, 117231672, -10130754, 93106304, 123263952, -42315628, -25018184, 35402340, -100315400, -167685728, -113138568, -184944512, --275041664, -252482880, -282558368, -359865632, -379836704, -335857312, -355050464, -334266560, -250948496, -200242656, --104154568, -25547002, 59547036, 206740400, 240424752, 261096432, 404728192, 395810752, 265839680, 342253600, -267487872, 106807248, 117899000, 166618432, 81725176, 53551800, 124588408, 89133992, 34897, 43069932, -96990560, 24721294, 7309498, 72571528, 17215302, -74132208, 24845848, 59620052, -16561931, 53494356, -141102560, 56387552, 32256278, 124423056, 68181536, -23490250, 15188615, -31150860, -147449456, -180670480, --179578496, -226562752, -256128768, -211626464, -203476224, -232034000, -209368912, -172856864, -199311712, -182270352, --122523608, -97215512, -93071408, -37611028, 23305030, 27693412, 84810568, 142653040, 149935168, 148343344, -167416752, 154850752, 111055504, 94422168, 84240952, 58566176, 48063368, 58958628, 52546240, 35993972, -37462316, 40967544, 34855808, 34154116, 43625592, 38706784, 27765352, 22590992, 20430622, 4173635, --489626, -4534949, -23651848, -31689342, -29700772, -24758876, -20713554, -12610561, -6129992, -4858682, --1035087, 8396661, 15714212, 20591146, 20397874, 15481746, 10465225, 3863860, 504659, 2094870, --646929, -7282117, -7663833, -11727408, -21264384, -23551454, -22730040, -30462056, -33054606, -29459180, --33467996, -40246528, -38121592, -39270496, -43537008, -39448736, -32984276, -34570192, -31143882, -21017960, --16655346, -15013058, -4287451, 1824824, 3566434, 10093710, 18613852, 20052666, 20989506, 25605522, -24881820, 22650046, 25964688, 28469728, 28781112, 29753922, 31833224, 28978144, 27445914, 27710592, -27968828, 23694798, 20343112, 14875082, 7696045, 2243584, -348429, -2251100, -4105452, -5951751, --6847252, -7295002, -6856379, -6018860, -4859756, -5222144, -4800700, -4476430, -4283693, -4244502, --3267396, -2863670, -1982127, -1400159, -297427, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +6449967, -663036, 1957431, -1178432, 8610873, -3382287, -837519, -304943, 1064615, -1521492, +3942780, -681826, -2662880, -471910, 5392332, 400506, -2732673, 2529736, 1861868, 3552475, +1452236, -2704756, -1791001, 6029597, 836982, -1543504, -1194538, -1228898, 1183264, 1283658, +-779537, -7676717, -1924145, 370441, 5297842, 1894618, -659278, -22012, -3059627, 4220342, +-4312684, -5733245, 740882, 55298, -1944010, -1320703, -1603633, 820339, 520765, 505732, +-2008971, 5005785, 151398, 6709276, -1082332, -3196530, 1469416, -356482, 957241, 1557463, +3388729, 2306398, -868657, -1842541, -1571421, 4352950, -4433480, 172872, 123480, -778463, +-3802657, 3352759, -1918240, 442919, 2909840, -2050310, -2748779, -2285460, 2950643, -272194, +-920734, -820339, 96100, -553514, -1199370, 1465658, 1500554, 1096290, 682900, 375273, +2051384, 331249, -44023, 431644, -202400, 73014, -475668, -255014, -246961, 1386201, +333397, -933619, 1164473, -2544768, 2225330, 1342177, -2998424, -1645509, -230854, 284005, +-153008, -437550, -1514513, 2723009, 529892, -1163399, -1582696, -73014, 5628555, -777926, +-2630668, 3608310, -1389422, -3378529, -330712, 2889976, 2165737, -1844689, 523986, -2308008, +1368484, 1332514, -1089848, 2888903, -765578, -5179194, 986232, 2704756, 2535105, 367220, +-360240, -3750043, -1243930, -481036, -1622961, 3413425, 4800700, 2238215, -6481643, 2219424, +7692824, 3186866, -343061, -33823, 3561602, -1727651, 1188632, -3213173, -2888366, 2985002, +3387656, 1636383, 934155, 612570, 711354, 1604170, 339839, -282931, -1116155, 825707, +-2236604, -406948, -940598, -4626754, -2282775, 996969, 1771137, 1450625, 3189550, 2505577, +2656974, 3787088, -2355253, -1488743, -651224, 1221381, 1423245, 2246805, -431107, -717260, +-374736, 1383516, -940061, 1255741, 352724, -482647, -366683, 435402, -180389, 777926, +354872, 150861, -261993, 445603, 423054, -131533, 652298, 184684, 200790, -458488, +157840, -104153, 64961, 824634, 142271, 371515, 344134, 147640, 4491462, -351114, +1873680, -2907693, -4248260, -2714419, 2361695, -1985349, -1955821, -2150705, -2795487, 2684355, +414464, 1958505, -853088, 547608, -5783711, -3776887, -2626373, 3685619, 737124, 787590, +2062658, -2100776, -1022739, -507343, 695785, -4449049, -828929, -3016141, -3218541, 141734, +-2837900, 1875290, 1828582, 7634841, -1892470, 3859565, -2581812, 1567126, -1766842, 354335, +6733972, 1029182, 2925947, -3230889, 2062121, -2911988, -1345935, -493384, 4281009, -2157147, +-1084479, -3848291, -2005750, -4535486, -591095, 4185446, 1023813, 262530, 744640, 3832185, +-3821447, -6773164, 1565516, 2061047, -4378719, -377420, 596464, -1142998, 1777580, 5197448, +1104880, -1391033, 126702, -1927904, 353798, 261993, -1495186, -508954, -472983, -2182380, +-495532, -1271310, 454193, -519691, -832687, 1679332, -326418, -1771137, 736050, -1279363, +56371, -1379221, -1918777, 1058173, -346282, -198642, 612570, 757525, 249108, 1720134, +-846109, -209380, 298500, -701690, -274341, -262530, -887985, -526134, 1463510, 428960, +2085207, 194884, 933619, -890132, 2430952, -6821482, 1104880, -2362232, -5087389, -3615289, +2018098, -973347, -267362, 5046050, 1630477, -661425, 404801, 4297115, -2037425, 3182571, +-1459752, 977642, -4539244, -757525, 3022583, -989990, 3762928, 4293894, 1369558, 2719788, +5543192, -1266479, -7883413, 1823214, -3525631, 282394, -9648107, 300111, 3055332, -1890859, +3558381, 546535, -3500398, 1284195, -7263327, -4590247, -1794760, -1740536, -6032819, 3078955, +3296924, 232465, 3066070, 274341, 810138, -1910187, 2777233, 2174864, -1152662, 6658810, +-1276142, 5506685, 4657355, -235686, -791885, 47245, 1472100, 2268817, 683974, 2535105, +804233, 882616, 7300371, 2829847, -3230352, -1439888, -73551, -1734630, 1058173, -1246614, +7363722, 1265405, 3444027, -2625299, 2971581, -3221, -1486596, 664646, -2422362, -1529545, +-440234, -1689533, -1086627, -1012539, 877247, -1584306, -406411, -1108102, -615254, -526134, +2001992, -839666, 1029718, -265751, -1758252, -262530, 1039919, 454730, 159988, 689879, +-1074279, 918586, 557809, 547608, 973347, -552977, 209380, -1668595, -149250, 1319092, +1135482, 302795, 190589, 183073, 922881, -13136157, 91805, -79994, 3408057, 5705864, +2067490, -2936147, -4734128, -804770, 6273874, -1221381, -1135482, -4651450, -56371, -1958505, +4659503, 5439039, -9351754, 6097243, 3971234, -3603478, -710817, -4969277, 83215, -1525787, +169651, 3193845, 6307160, -2385318, 1499481, -1674500, -2085744, 2283849, 4369593, 2872260, +-2656974, -4488778, 3157875, 2115808, -1547262, -847182, 599685, -5774584, 2142115, 1698660, +-2239826, -3872987, 1540283, -2951716, 5160403, 2208687, -8902393, 4053912, -3779034, -9905268, +-2802466, -774168, 2039573, -4083440, -127775, 2141578, -4298189, -4329327, -4424353, -1407676, +1184874, 9331353, 1534914, 1746441, -1953673, -4930086, 6444599, -1970316, -7429757, 336081, +-7498476, 537408, -668404, -2790118, -8218957, 2492692, 178241, -1854352, 2091649, 4992900, +2372970, -986769, -790811, -56908, 2809446, 411243, 739271, 1510218, 2738579, -263604, +-1183264, -1631014, -1585917, 609349, -60666, -1335198, -1260573, 1181653, 1239635, 2303176, +561030, -85362, -63351, 842350, -339839, -71404, -302258, 1444720, -98784, 756988, +-146566, 1984275, 8191040, 2139968, 1808181, 3518115, 5169530, -1184874, 12572443, -1875290, +9006010, -10630044, 3679176, 6128919, -2203318, 809064, -2944200, -337155, 4865661, 8762807, +-2463164, -4432406, -1257889, 4054986, 905164, 8910983, 4269735, -1020592, 1318018, -118648, +-4162897, 781147, -906775, -1351841, 3946001, 5094368, -8094403, 9328132, -7113540, -3937411, +1622961, -2945274, 4752918, 69256, -2686502, 6573985, 9316858, -6972880, -1220845, -729071, +2905009, -6605123, -10765336, -5088463, -3272228, 3122441, -7457137, -4376035, -843424, 7700340, +4905390, -5459441, 3892314, 1998234, -2914672, -4497368, -674847, -2789045, -3140158, 266288, +-2079301, 5742372, -4358855, -971736, 4940823, -3951370, 5338108, 6287296, 895501, -714575, +589484, -7897908, -6927246, -1797444, 4401268, 129386, -3016678, 2828773, 6473590, -4353486, +-1966021, 1693828, -546535, -3111704, 18790, 765041, -2922725, 98784, -779000, 1265405, +428960, 2268280, 360777, 1767379, -1126355, -545998, 124017, 149787, -82678, 1575179, +740882, 1847910, 1864016, 117038, 585189, -339839, 1219234, 1884954, -958851, 4788352, +3872987, 5229660, -5054103, -6660958, -3618510, 4541391, 192200, 18772766, -1446867, -456877, +-4552129, -8478802, -12486544, -2750390, 4082903, 6600291, -4150549, -7981123, 998580, 71404, +7962333, -2677912, -3318936, 9877351, -5424007, 642635, -7660074, 4879620, -1571958, 37581, +-1738925, -11602854, -7326141, 615254, 6390375, 4303021, 475668, -12023224, 7934415, -4860293, +-5008469, -5189394, -6924561, -1079111, 6484327, -5331128, -5919539, 4030827, -1970316, 2313377, +11978127, -5256503, 206695, 593779, 5055177, -3565897, -3315715, -1666984, 7590818, -1728724, +-4089346, -716186, 5905580, 7740605, -7743289, -8747775, -3030636, -1300301, -2985539, 1853278, +-6196564, -2175401, -5852430, -11557220, -4623533, -2675228, 1476395, -10629507, -3007014, 159451, +7454990, 220117, -6600291, -128849, -338229, -2005750, -3682398, 159988, 1482301, -695785, +1080184, 1053878, -1510755, 2158758, -962073, -2158758, 2276870, 2871723, -1315334, -2758980, +-156229, -543850, 411780, 2298881, 788127, 39728, 1549946, -878321, -1459215, -1111860, +-1594507, 2281702, -6159520, 5224828, 6305549, -4629438, -5682242, -4741107, 2550674, -449361, +9153649, 16037945, -9019431, 623844, -407485, -1086627, 1457605, 4660577, -13178570, 11833709, +-9296994, -4555887, 11848204, -2722473, -5715528, 3964255, 4356708, 292058, -698469, -9144522, +5690295, -1282585, 1953673, -6044630, 7532299, -669478, -12685186, -13481365, 4478577, -2454037, +-7012071, 3448322, -615791, 20946018, 3473018, -3803194, -6267431, -12313671, -4414153, 2419140, +-3041911, 9658308, -2079301, -14345728, -1431298, 9903658, -4357245, 1318555, 8496519, 5789616, +-4886062, -881542, 6871411, 9259949, -4255239, 1829119, 1276142, -4430796, 1958505, -2028298, +-661962, 1400696, -2193118, -2577517, -8946954, -9713069, -8275328, 8233989, 4540318, 5372467, +2216203, 86973, 3229816, -7080254, -3973382, -9918690, 4889821, -1232119, -1420560, -1998234, +-1530082, -5047661, -3059627, 1064078, -2110977, 330176, 333397, 381715, 1901597, 278636, +2291365, -230854, 1675574, -2284386, 1272384, -3438658, 239444, -1618666, 2835215, 168041, +-1885491, -512712, 856846, -1461363, -1740536, -4020090, -4126927, -2221572, 4079145, 308701, +1400696, 2636036, 767725, 3193845, 1175747, -2578054, -10765336, 4109747, -11618960, 490163, +4169876, -1830730, -8706972, -4035659, -1811403, 7796977, 6117107, -4580046, -4827007, 8310762, +3405372, -4753455, -5216238, -3995930, -594316, 8035347, -1404991, 762357, -493921, -62277, +10226854, 5128191, 6838662, -447750, -543313, 3579318, -5353677, -8910983, 7268696, 11795054, +-7993471, 10144176, -3002719, -992137, -4569309, 5242545, 285615, -5630166, 3414499, 9592809, +7448547, 3485903, -7213398, -2914672, -14570677, 2445447, 7543573, -4643934, -1197222, -5727339, +1477469, -3398393, 5615133, -3562139, 1854889, 6763500, 3814468, 12717398, 6612639, 4318590, +8091719, -6783901, 12158516, 3797288, 7383586, -2408940, -8419747, -12926241, -2482491, -2148021, +-3401614, -3015604, 4803384, -8879845, 13447543, -2285996, -10909754, 6229313, 10048076, 4201015, +1281511, 2126546, 3762391, 1302986, -2246268, 2609730, -2058363, -10737, 4214974, 8053, +-170725, 4648229, 652298, 2557653, -395137, -2150168, 697395, 475668, -1854352, 1464047, +1889786, 522912, -1321239, 1133871, 383863, 3600793, 790811, -635655, 2268817, -3054796, +901943, 716723, -3343632, -4875862, -1362042, -1898912, -1249836, -2410014, -1701344, -1006096, +-408022, -4194573, 5928666, -12702366, 9327058, 3338800, -2005750, 13963476, 10668162, -17534740, +-11868605, 11210402, 19021874, -1669132, 2756832, -1527935, -2465848, -1808181, -845572, 4932770, +2822331, 11640435, 2791729, 11145977, 3071975, 4914517, -1542967, -6125160, 2636573, 980863, +-5129802, 8568997, 833761, 3511136, 1940788, -1622424, -7868380, 1149441, -8919573, -2869038, +-10315975, -6749004, -4185446, 8784282, 1213865, 4400731, 10566693, -4435091, -901943, 1390496, +3787624, 1296006, 246961, -2820183, 7826504, 17426292, 8301098, -13590887, -9808095, -10014790, +11924440, -1646583, -11051488, 6618545, -6193880, -507343, -1806571, -597000, -847719, 552440, +10464688, 17468168, 6546067, 15072651, 9560060, 5013838, 1950989, 3939559, -4779762, 16041166, +5146445, -8121247, -11116449, 5115843, 3683471, -2849174, 7965017, 15193984, 3483219, -5579163, +9366250, -663036, -6838662, 1641214, 5268851, 1071058, -875100, 818191, 2912525, 5281199, +2282238, 2470143, 615791, 3532611, -1353989, -410169, -1899449, -316754, 6962679, -3426847, +2609730, -835371, 1702418, 421444, -1787780, 1287953, 2509335, 3271691, -1369021, 1498944, +-2728378, 192737, 1454383, -4723927, 2190970, -1402307, -6971269, 1814087, 17370996, 3103114, +6213207, -5700496, 4579509, -8656507, -14811732, 159451, 8139500, 2203318, 6561100, 8839580, +10069551, 398895, -10712185, -9406515, -14235669, -22440668, -259309, -2876554, 9962177, 7113540, +-8227547, -4853850, 5890548, 11435350, -14443438, -9599789, -2682744, -8182987, -5320928, -3188476, +4619238, 8827768, 517544, -5699959, -6635188, 8919573, -7187628, -3285650, -114354, 12637941, +-801548, 836445, -20078436, -1743220, 5022965, 10146323, 13567802, 2680060, -12905840, 5908802, +348429, 5878200, 8568997, 1199370, 4345970, 9517111, 17111150, -11558294, -4399657, -1231582, +5289789, 17886392, 7699803, 5815923, 10231149, -3728569, -5924908, -11121818, -13645111, -8377871, +-473520, 8549669, 20232518, -12832289, -9197136, -1541356, 19835232, -11329050, -6386080, -10147934, +-1776506, -9123584, 2878702, 1435593, 4748087, 10251013, 1976222, 6471442, -4335770, -4596152, +-5570573, 187905, -2799782, -6824166, -5857262, -3140158, -1527935, -1633698, 6698002, -5279052, +-1498944, -2160906, 4787815, 924492, 3488587, -2537789, -2279017, 4496294, 1588601, 977642, +-3997541, 5870147, -3117610, -456877, -2182917, 1663763, -2268280, 343061, 4035659, 4595078, +785442, 8810589, 5194763, 12465606, -14782741, -10794327, -1532230, 21734146, 8974334, 398358, +11963095, -7532836, 17886928, -4335233, -15487115, -3190624, -15393163, 12434467, 7636989, 4772783, +5009543, 115964, -4875325, 5922760, 9176198, 4392141, -3076807, 7951595, 10963978, 9554155, +-1133335, -8648990, 14818174, 3274913, -829466, -2672544, 1840930, -9820980, 9630390, -2016487, +-2592013, -12469901, -6616397, -7781944, 17249126, 5914707, 232465, 2049236, 8933532, 12545599, +6556805, -16738024, 15066745, -2002529, 8727374, 3472481, 13235479, -3265786, -17259862, 5182415, +-767725, 6910603, -3051574, -7315403, 6445136, -3005403, 4374424, 21512954, -2636573, -10275709, +56371, 2604898, -10562398, 17278654, -7804493, -10843182, 15471546, -9276592, 7884486, 777389, +-11226508, -8242579, -11232950, 3264175, 9381282, -5873905, 5426155, 10139344, -5810017, 7070053, +-2419140, 12043088, -4401268, 3396246, 3988951, -3668976, 14496, 197032, -5625334, -1008244, +5065377, -8128763, -1554241, 5476620, 2910377, -110595, -4842576, 2107755, -1337882, 1651415, +-5070746, -5158793, -2778307, 739808, 1188632, -6156836, -3718368, 5180805, 660888, 2092723, +-6019934, 2423972, 461709, -3007014, 1122597, 534723, 1867237, -3486440, 168041, -1864553, +-403190, -5010616, -2018098, -712428, 3131568, -1147293, -3257733, -2005750, -714038, 689342, +547608, -1221918, -41339, -6713571, 5143760, -14874009, -2648384, 7292855, 2028835, -14554034, +3954054, -5403069, 10606959, 2054068, 5551782, -23993298, 7436736, -14496, 9376987, 14725295, +1043677, -2370285, 1505923, -8106751, 15644955, -15094126, 5008469, 8813273, 6573985, 8080981, +-3652870, -7507603, -7951595, -15602542, 6248641, 1857573, 9069360, 15639587, -5829881, 13347148, +7757785, -13760538, -7332583, -657130, 1695975, 258772, 122943, 6376416, 12089796, 10510859, +4878546, -28257664, 7122667, 7809325, 8475581, -18776524, 11332808, -9860708, 9866614, 694711, +5328444, -2949569, 7462506, -2681133, 23885386, 10893111, -10334765, 863825, -29477972, 4529580, +-8521752, -9461813, 8586713, 5537287, -14695767, -30041148, 18942954, 11061688, -27533424, 10409927, +-6043019, 10187126, -2091649, 2116345, 4586488, -137976, -18471044, -7418483, -2473364, 5509906, +61203, -5153424, 8106751, -10424422, -3706020, 9977746, -660351, -1319629, 3856881, 1753420, +4326106, 1453846, -5331665, 1902671, -8094403, 4776541, -3403762, 2558190, 2462090, -2615635, +-1018981, -1898912, -2712809, 1136019, -4534412, -1156420, -3799972, -3393561, -6433861, 3052648, +-1735167, -2161979, -3586835, 1393180, 3603478, 1832340, 2077690, 279173, 1258425, 2157147, +107911, 2373506, 2576444, 6027450, -3139084, 9024800, -3244311, -6220187, 11126113, -8541616, +300111, 1421634, 28242632, -4010426, 20457466, 4787815, 15460809, 772020, 4577362, 4755603, +27245662, 26883810, -13761612, -12972949, 15693274, -19806242, 243739, 5115843, -19326280, 10948409, +1807108, -1748589, -3318936, -6146635, 2597918, 1924682, 3908957, -12199855, 343061, -3114388, +-15555298, 7882876, 11256036, -17834314, -12893492, -6633577, 9773198, 9069360, 9106404, -1129040, +-3323768, 8127689, 28389734, 14990510, -5277441, -3838090, -3571265, 18818936, -14922327, 6845104, +4292283, -23856396, -9548249, -1234803, 3495030, -20243792, 14099841, 8838506, 4304094, 3656628, +9866077, -19176492, -2026151, -15933255, 979789, 9627706, 16748225, 9978283, -10136660, -5698885, +-544387, 394600, -11684459, 26616450, -1841467, 3409130, -6025839, 9030706, -1749662, 5219996, +-2135136, 3189013, 2811056, 5677410, -387621, -47245, -1888712, 1237488, -117575, -1649804, +8195335, -2497524, -5526013, -475668, -350577, 3901978, -5633387, 1219234, -4617627, -7860864, +5077725, -1566053, -4968741, 300111, 208843, 789737, -4332549, 6047314, 1917703, 7456600, +-9050033, -768262, 4714801, -2480344, -7284265, -254477, 8522826, 3590056, -4947266, 5064304, +-2439542, 12828530, 20110110, -1480690, 1387811, -12489228, 1126892, -632971, -8781598, -14897094, +-2759517, -6944962, -11014981, -8200703, 12633646, -10726144, 9184788, -3294777, -2457795, 17489106, +-12087112, -6877854, 2767033, 7002408, 1112933, -23343684, -14214194, 2571612, -3671123, 3684008, +-3179887, -7388418, 14898168, 3086471, -1208496, -6178311, -33374044, 19994684, -5982890, -454193, +-2780991, 1189169, 9652402, -5659693, -9061307, -15699179, -1409286, 6802155, -9574556, -12458090, +5160403, 19548006, -3273839, 18173618, 13506598, -13458817, 24646670, 16164109, -16157130, -25142738, +-7148436, -11008538, 1399086, -8028368, -1890859, 11910481, -20893406, 10172093, -3350075, -11861089, +-13092134, -13220446, -15858630, 3226057, 9604621, -8638253, 13701483, -1865090, -7913477, -16500727, +319975, -1928977, 6397354, 19497004, -7030862, -14929306, -5128728, 343597, 5086852, 13316009, +3575560, -1748589, -10935524, -170725, 459562, 4898947, 2122788, -60130, 3752191, 5404680, +-4068945, 6769406, -3905199, 3053722, 8005282, 7089918, 482110, -11305965, -4566624, 1625108, +2811593, -7885023, 12706661, -7760469, 5830418, 6764574, -5156645, 601295, 1431298, -3047279, +-10697690, 2203318, 4858682, 775778, 9057549, 6215355, -6099391, -5926518, -1561758, -21211770, +38613904, 54385024, -5261872, 6642704, 3474629, 13187160, 26347476, -25144350, 288300, 4379793, +485868, -9054865, 1347546, -11191074, 13221520, 32408212, -6848326, 717796, 1838246, 9833328, +890669, 3825742, 12447352, -24930674, -1867237, 24507620, 25149182, -29377040, -6245420, 4254165, +4134443, 8776229, 22136262, 6254546, 44656924, 7459822, 13779329, 6605660, -7019051, -9240085, +-536334, -31314070, -45086420, -15237470, -14632954, -46942920, 7352447, -1090385, -26234198, -12774306, +-43947180, -4779225, -6050535, 29981556, -29350196, 18337900, -20055350, -1605781, -13189308, -10380399, +11783780, 26948772, -20744692, -7753490, -1881196, -6109054, -2201171, 11387569, 21583822, 23077934, +-16444893, 46385648, 31091268, 4086662, -17579302, -38101728, -8653285, -14157823, -10411538, 2556579, +12247636, -7963406, 4567698, 14432164, 2334315, -4522601, 14619532, 9781251, 5012764, 6461779, +15348066, 15531139, 119722, 1316408, 6207302, 5855651, -2528662, -4559645, -2652679, 2887292, +-382252, -1894081, 966905, -3022046, 2138357, 10157061, -436476, 3626026, 12323872, -3157338, +-4420058, -4649302, -525597, -6774237, -1380295, 5917391, -3207267, -1795296, 1178969, 119185, +1049046, -891206, 4846871, -3200825, -3400540, 8069707, 5644661, -6136972, -326954, -3239479, +-1338956, -19384262, 35533340, 59230820, -13942001, -2991982, 10507637, 26533234, 8917426, -15357192, +9636296, -13113609, 3410204, 8415988, -3176128, -17702244, 5338645, 18909130, -4704600, -26976690, +21142514, -6163278, 17257716, -6347425, -4265977, -6624450, -10926934, -397821, 19166292, 10748156, +3170223, 15540265, -7364795, -6105296, 5905043, -8241506, 10725607, 6294275, 16408386, 28161026, +24640228, -17710834, -33050310, -12032351, -2084133, 25891674, -9910637, 4631049, 10417443, -10222559, +-15241228, -24334210, -25034828, 19740206, 21006148, -16763257, -60244432, 5005785, -4258997, -8231305, +4657892, -5981816, -24184960, -11258720, -5691369, -16769163, -7210713, 25654914, 9681930, 14795089, +-5822902, -8369281, -5473399, 14266808, 2363306, 2684355, 12221329, 35568236, -3138011, -5213554, +-17995376, -16977468, -24837796, -2663417, 13990319, 9579388, -10166724, 7421167, -4723391, -5892695, +-10394358, -9415642, 8512088, -7292855, 8300025, 3918621, 4660040, -5314485, -7797513, 8704825, +5333276, -2200634, 6519224, -9131100, 3757560, -1258962, 5349919, -3035468, -5290326, -2970507, +-2670933, 6102612, 2946348, -314606, -6498823, -1546188, 12715251, -9218074, -341987, -8957154, +10885595, -5970005, -2587181, -8283918, 1058173, -3577171, 1051730, 9261023, 9250823, 1882269, +6442, -3643743, -7090454, -7795366, -988379, -12766790, -1695975, -10555419, 5692443, -14934675, +-24370182, -5350993, -4024384, 4525822, -8276939, 18822158, -11135240, -38323992, -20713554, 13285408, +-18001282, 21321292, 19088446, -8385387, -2826089, 2788508, -11620034, 90194, 6303402, -1632625, +3464965, 27009976, 22555558, -5953899, -35655744, -27057220, 2094870, 18977850, -14283451, -6123550, +-16797080, -21575232, 2071785, -6052146, -25267292, -27555436, -40414568, 16338056, 5664525, 943819, +23439784, 31389768, -1148904, -23371602, -17701170, -18894634, -10625749, -6659347, 7212861, 12182138, +-10741713, -17199734, -20960514, 11203422, 9904731, -20641612, -19621558, -7879118, -3349538, -12037720, +7556458, 50834160, 30593588, 59361280, 19929186, -31523986, 37056440, -1610613, -18835580, 1832877, +-17727478, -38924752, -16008954, 8913668, 18655190, -4403952, 17193828, 9849971, 37875704, 41193032, +34015068, 11216307, -9435506, -6018323, -5499169, 7136625, 9680856, -14381161, -5208722, 2305861, +30904974, -4361003, 2753611, -3428458, 11237782, 11137924, 13264470, -752693, 349503, 129386, +2954401, -1300838, 1953136, -11329050, -3507378, -3947612, -10436234, -10982231, -4940823, 3840775, +13117367, -8535174, 2053531, 4458713, 14892799, 19931332, 13809394, 12696997, 14358076, 3031710, +-5276368, -11153493, -15815143, -19906100, -15502148, -9334038, -18699750, -19221052, -7318088, -3510599, +1841467, 8356396, 35492536, -20204064, 2423435, 10290205, -4346507, -26334056, 26638998, 25226490, +-14461155, -20158430, 2857227, 34974992, -18282602, 9899900, 22591528, 6784438, -8348343, -16852914, +-10901701, 7693360, -2556579, 5844914, -9716290, 6465000, -21656298, 31768800, -2971044, 7077033, +-1395328, -40217536, 12617540, -11184095, 20809116, 12399571, 22226456, -8704288, -38603168, 27733140, +12622909, -13224741, -23991688, 19866908, 10787884, 21132312, 21505438, -18723910, 8696772, 22307524, +-32681480, 29990682, 14898705, -1010928, 9666898, -17061220, 37749004, -4299799, 24880746, 11065446, +43815644, -3120831, -7553237, 6099928, 17890686, 11747809, 12486544, 44095892, 2703682, 10738492, +25913686, -17113834, 17818208, 2042794, -29250874, 10880226, -9783399, 33158222, -24348170, -29445222, +-30478162, 26079578, 43011948, -13744432, 11033234, -50634980, 4936528, 2389076, -1818919, -23738284, +4074313, 9978820, -7708930, -6558952, -6246493, 15980500, 7626788, -10152229, -10790568, -6335614, +-2461016, -3208878, 4711043, -17479980, -10341744, 9230958, 3941169, 3262565, 674310, 7951058, +-1247688, -956704, -10130754, 13709536, 17252346, -7354595, -26554710, -18046916, -78920, 9127, +5232344, 1330903, -8292508, -13127031, -7080254, 4931160, 7823820, 21364778, 7351374, 1110249, +481036, -15941845, -3146064, 16558710, 9915469, 3756486, -17255032, -10561325, -1842004, 2396592, +3142306, -2857227, -3169149, -3046743, -1017370, -64887292, 3540127, -7940858, 2005750, 50253264, +41349260, 59509456, 31411780, -15817291, -12132746, -24645596, -32875828, 11576011, 2872260, 8637716, +10438918, -9566503, 14949707, 25380572, 4654671, -6784975, -8606578, -17961554, -11959336, -10851772, +4950487, 8092256, -25818122, -15255724, -3569655, 17326434, -7825968, 11164231, 13845364, -36658620, +-36141076, 6867653, 10464688, 8060043, -27282170, -12526272, -24504400, -11843909, -11222750, 23639500, +-31056372, -43218108, -16258599, 8590471, 7347079, -33331094, -26781806, -21029770, -15944529, 18034030, +25396678, 1160178, -8630200, -10538776, -5892159, -5612986, -11478300, -36998996, 12175695, 27821724, +25271050, 7880191, 34517580, 46693272, -4066797, -5992016, 35743792, -8644695, -21752936, -49155900, +-16746614, 6709276, -26980984, -18053896, 12642236, -4408784, 17529372, 30673046, -18663780, -28956670, +-9588514, -12419972, -7188702, -7852274, -7793755, 3271691, 4451734, 3593814, 6244346, -10396505, +9086540, -14364518, -1719061, 8947491, 11985643, -12834436, -17912162, 10271951, -4075387, 672699, +-12499429, 14795625, -8651138, -3105798, -3437585, 13695577, -11574400, 14857366, -6580427, -6920266, +9833864, 2600603, 7835631, -6186901, 705448, 2921115, 16018081, -1863479, 3813931, 2448668, +42769820, 14813879, 3596498, 15415174, -17520782, 1008244, -8879845, -13342316, 8027294, 2972117, +-10880226, -18460306, -10392747, -17144436, -13696651, 5446019, -10536629, -5333276, 8138426, -5406827, +1950452, -6001143, 21330418, -16691854, 17512192, 6194417, 2095944, -16146393, -6771553, 12683038, +5322538, -399969, 10357851, -1920924, -4105452, -6672232, -5405217, -4505421, 2047626, -187368, +2279017, -18889804, 10004053, -7958038, -7237020, 6451578, 4621385, 2357937, -3422552, 13086228, +11469173, -16542067, 14839112, -2157147, 10103911, 19757924, -4051228, 10649908, 10351408, -9970767, +-6922414, -13256953, 1291175, 2168959, -20989506, 8614094, 3314104, 16335371, -6360310, -37526204, +23579908, 1327682, 791348, 387621, -16413218, -5316633, -4243428, -5683853, -23972896, 13621489, +7009387, 14697915, -10621454, 6414534, -11927661, -11082626, 614717, 9292699, 7692824, 147103, +-1272384, -3479997, 943819, -5626407, -1027571, 15858630, -6376416, 3068754, 1843078, 4429185, +-9685151, 10519986, -282931, -2129230, 2601140, -1165010, 2543695, 3451006, -8799314, -1337882, +266288, -1784559, -1524713, 4756140, -5583458, 6991133, 10435160, 3777961, -6332393, -443455, +-1237488, -6128382, 7640210, -2215666, 4224101, -21919366, -62270584, -92581776, 19445464, 72807752, +3032784, 199248368, 183653872, 126211376, 217002144, 166987792, 22740778, 3670050, -22470732, -159005056, +-162226288, -123272000, -212496192, -198096784, -56603372, -66004520, -66791036, 16040092, 40320616, -33024004, +-10969346, 63917704, 40711460, -2005750, 47518444, 33067490, 2600066, 39894876, 94101120, 62035972, +21686900, 96520800, 71417792, 5821828, 82902536, 112423992, 27103392, 12426951, 114599928, 31636730, +-44354128, 57919244, 88340496, -44715980, 20807506, 123517888, 11934640, 20704964, 148954304, 117231672, +10130754, 93106304, 123263952, -42315628, -25018184, 35402340, -100315400, -167685728, -113138568, -184944512, +-275041664, -252482880, -282558368, -359865632, -379836704, -335857312, -355050464, -334266560, -250948496, -200242656, +-104154568, -25547002, 59547036, 206740400, 240424752, 261096432, 404728192, 395810752, 265839680, 342253600, +267487872, 106807248, 117899000, 166618432, 81725176, 53551800, 124588408, 89133992, 34897, 43069932, +96990560, 24721294, 7309498, 72571528, 17215302, -74132208, 24845848, 59620052, -16561931, 53494356, +141102560, 56387552, 32256278, 124423056, 68181536, -23490250, 15188615, -31150860, -147449456, -180670480, +-179578496, -226562752, -256128768, -211626464, -203476224, -232034000, -209368912, -172856864, -199311712, -182270352, +-122523608, -97215512, -93071408, -37611028, 23305030, 27693412, 84810568, 142653040, 149935168, 148343344, +167416752, 154850752, 111055504, 94422168, 84240952, 58566176, 48063368, 58958628, 52546240, 35993972, +37462316, 40967544, 34855808, 34154116, 43625592, 38706784, 27765352, 22590992, 20430622, 4173635, +-489626, -4534949, -23651848, -31689342, -29700772, -24758876, -20713554, -12610561, -6129992, -4858682, +-1035087, 8396661, 15714212, 20591146, 20397874, 15481746, 10465225, 3863860, 504659, 2094870, +-646929, -7282117, -7663833, -11727408, -21264384, -23551454, -22730040, -30462056, -33054606, -29459180, +-33467996, -40246528, -38121592, -39270496, -43537008, -39448736, -32984276, -34570192, -31143882, -21017960, +-16655346, -15013058, -4287451, 1824824, 3566434, 10093710, 18613852, 20052666, 20989506, 25605522, +24881820, 22650046, 25964688, 28469728, 28781112, 29753922, 31833224, 28978144, 27445914, 27710592, +27968828, 23694798, 20343112, 14875082, 7696045, 2243584, -348429, -2251100, -4105452, -5951751, +-6847252, -7295002, -6856379, -6018860, -4859756, -5222144, -4800700, -4476430, -4283693, -4244502, +-3267396, -2863670, -1982127, -1400159, -297427, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 3746822, -5185636, -3051574, 214212, 162135, -3712999, 4958003, -1981054, -1947768, 1418950, -5130339, --2297808, 5481989, 1245541, -2247342, 3900367, 1198833, 832687, -814433, 1899986, -43487, --6572374, -324807, -2441689, -307090, -148176, -6301254, 92342, -4056060, 214212, 621160, -2801393, 3343095, 1101122, 818728, 609349, 2885144, -1596117, 975494, 177167, 438624, -597537, -888521, 2583423, 3859028, -7456600, 3441880, -1957431, -4498442, -2874944, 5695127, -2855080, -1950452, 3234647, 923955, -2059437, 1992328, 32212, -24159, 287763, 368293, --788127, 20938, 410169, -352724, 2443300, -1551020, -3453691, -3357591, -34360, 1096290, --225486, 134218, 1864016, -766115, 3282429, -3511136, -1055488, 2655364, 2879776, -2019172, -3247532, 1119913, -862752, -2231773, -1039382, -970126, -896038, -902480, -453656, -155693, --499290, -950798, 259846, 627065, -1331977, -376347, -443455, 646929, -1162862, -294742, -139586, 2728378, 236760, -2245731, 1416266, -1228361, -1732482, 394063, -3686156, -486405, --2755759, 934155, 1767916, 1629403, 1357210, -2946348, -179315, -2450279, 2598992, -5007395, --2791729, 2456185, -5415417, -663036, -338229, 1337346, 1212791, 2621541, 5661304, 2551211, --686658, -71941, -2003602, -1628330, -9951976, -9232032, -601295, 6734509, -1675037, 5366562, -485868, 1491964, -1677722, -7774965, 3998078, 1159641, -2313914, 1838246, -4083440, -896038, -2321967, 956704, 7238631, -5028870, 4392678, -2341831, -5695664, -2713883, -1552094, -1633698, -2018635, 1633161, -4594005, -2119566, -2617246, -1047972, 4434017, 4662724, 5090073, -3805341, -634581, -2414845, -310311, -2043868, -2515240, -3126199, -3427921, 1814624, 535260, -604517, --1248225, 374736, 1923609, -2041183, -1728724, -959388, 2202245, -846109, -426276, -1044214, --1123671, -359704, 476205, -110595, -193810, 285078, 475668, -227096, -222801, 1328219, --1125818, -790811, 530428, -770947, 1078037, -773631, -772020, -240518, -154082, 594853, --375810, -435939, 390842, -2684, -1130650, 266825, 238371, -933082, 3661460, -3466576, --4581657, -3891240, 70867, -1512365, -1299765, -3069828, 631897, -3434363, -294205, -1388348, -5291937, -3389803, -3803731, -8351564, -10936060, -2594160, -4897337, -4424890, -1106491, 2298344, --2805688, -6495601, 4015795, -9439801, 2811593, -1550483, -1741072, 6174016, 4287988, 2310693, -813359, -1014149, -1010391, -2263448, 959388, 4203699, -3380676, 3988414, 3615289, 1102196, -511638, 1685238, 2764885, -6123550, -2699924, 5921686, -4582193, 427349, -114354, 3639448, --471373, -1326071, 661425, 6143414, 3360275, 2166811, 1952063, 3443490, -5400385, 4205310, --4409321, 3897146, 2526515, -1097364, -782221, -1787780, -2421825, -3876208, -206695, -1178432, --3132105, -3414499, -1953136, -1967095, -354872, -186831, -952946, 4678293, -1915555, -820339, --3149822, 3257733, 16643, -662499, 682900, -1301375, -2267743, 98247, 1282585, -104153, --217433, -1424319, 428960, -438087, -1320703, 135291, 301721, 779000, -159988, 528281, -412317, 1136556, 386547, -1137630, 61740, 663036, -160524, -991601, -638876, 1575179, -804233, -774168, -344671, -277562, 2230699, -5818607, -93416, -2754685, -5258651, -2512556, --943282, -3744138, -1206349, -3458523, -1289027, 2637647, 3655017, -6039261, -3367254, 1912334, --1153199, -6595459, 4392678, 7744900, 1672890, -1888712, -3606162, 810138, 3803194, 6999186, --3548717, -1547799, -4484483, -3679713, 3934190, 3857418, -5451924, 3167539, -1719061, -3557307, -5579163, -71941, 3058017, -7654169, 555661, -4929549, 1134408, -6111202, -3768297, -1049046, --1381906, 12560632, 4036733, 3211025, 2493229, -9460202, 5284421, 3592740, -2047089, -300111, -4125316, -646929, 4356708, 4945655, 5011153, -2958159, 391916, -1681480, 2678986, -2437394, --2480881, 1581085, -2329483, 1042603, 1584306, 15032, 2959233, 1091995, -5550172, -746787, --688805, 1677722, -6295349, -2105608, -1582696, 4378183, -1336809, -817118, -3395172, -980863, -241055, -399969, -1572495, -33823, -1015760, 1070521, 424128, -72478, 200790, 341450, --802085, -2434710, 1260036, 439697, -1338419, 565325, -726386, 192737, 302795, 753230, --177167, -373125, -578747, 447213, -961536, 824634, -1096827, -151934, -81604, 636192, --725850, -382252, -1059246, -715649, -977642, -7853885, -4316442, 3153580, -3380676, 9120900, -4070019, 8927626, -99858, -4430796, -4638028, -6342593, 9614284, -2393371, 4410395, 4844723, -1045288, 3396246, 3157875, 2997350, 1243930, -6375879, -331786, -2495376, -919123, 4285841, --366146, -440771, 3048890, 1855426, 3155727, -2804077, -9953587, -6008123, -3757560, 7290707, --6617471, -2066416, 4519916, -565325, 855772, -5628018, 9678172, 467078, -3746822, 7568269, --4671851, 11756936, 6121402, -2729989, 1381369, -3430605, -2289755, -10951630, 3870303, -5024575, --760209, -491237, -2374043, 4599910, -1811939, -4820027, -4625143, 1011465, -4225711, -4730370, -2669322, 344134, 3366181, -1889786, -9934259, 3364033, 4323959, 5486284, -5344550, -6088653, -786516, 9781788, 1588064, -5164162, -2332704, -934155, 2702071, 421444, 2876554, -2970507, --1100585, -641561, -3566434, -2990908, 4376572, -802085, 1714229, -453119, -1251983, -2859911, --273804, 37581, 1082332, -592706, 1005022, -794569, -2276333, -981937, -323196, -124017, --420907, 1634235, 84289, 1774895, -636192, -203474, -301185, -2081985, -21475, 970663, -1024350, 628139, 7793218, -7162932, 3532074, 9347996, -6763500, 1925219, -3839164, -7182259, -10679973, 4118337, 9920301, 9311489, 1272384, -7259569, -4581120, 3911642, -555125, 1687385, --8031052, 928250, -14210436, -5844377, -11099806, 6896107, -6336688, -129386, 1959579, -1726040, --2924336, 3443490, 3287261, 9875204, -1428614, -2070711, -7552163, -6295885, 6181532, 1443646, -2091112, 11794517, -3599183, 183073, 6164352, -2691334, 2819109, 2247342, 6170795, 5708549, --3937948, -503585, -7994008, 8364449, -5476084, -7058779, -6944425, 4469451, -2608119, -3668439, -8079907, -2423972, 8378408, -5077725, -3994857, -967441, 5472325, 7270843, -588947, -7618735, -2748779, -4828617, 10020696, 2200634, 5869610, -7982197, -3617436, 2285460, -2117419, 4996121, -681289, -2638721, 2881386, 6586333, 9084930, 7158637, 70330, -1529545, -144955, 1643899, -107911, -1458141, 1038308, -1207423, -255014, 2727841, 106300, -1152662, 2755222, -763967, --1513976, 857920, 945967, 79994, -1780801, 776852, -1234803, 384936, -2411087, -2805151, -707059, 1248762, -113280, 2422362, -853625, 1174674, 4718022, -12399571, 4350265, 3636227, -2503966, -9381819, 7175817, 11732240, -11435887, 4339528, -7015829, 4594542, 665720, 4125853, --3360275, -287763, 2754685, -7842611, -3831648, -3396246, 6229313, 6469832, -2087354, 3025268, --1542430, 4775467, 6175626, 2363843, 1899986, -6237903, -2282775, -7783555, -8545374, -6035503, -628676, -2901251, -350040, -3615826, -8506720, -2923262, 1796370, 754304, -467078, 12933220, --10432476, 3845606, -5168457, -1532230, -3200288, -3321084, 5561446, -3305514, 476741, -3999152, --2600066, -4853850, 6666326, -6096169, 5479842, -1429687, 5475010, -508954, 878858, -577673, -5295158, 3010772, -91805, 11223823, 507343, -5644661, 3021510, -5078262, -6158446, -7509214, -7353521, 2567317, 6558415, 6611566, 7828115, 4553739, -870268, -1401233, -1337346, 7461432, --1031866, 8368207, 1852742, -365609, -1211718, 2866891, 4333622, 1109712, 1821603, 583042, --498753, 830002, -1337882, 2248952, 172336, 1928977, -503048, 1831267, -126165, -2927557, -1522029, 2013803, 69256, 1639067, -444529, 93952, -1620813, 1417339, -332323, 695248, -3179350, 3192771, -13077639, -939524, 1593433, -2913599, -10316511, 11792906, -846645, 523986, -9853729, -2688113, -10320806, 3703336, 6620692, 12789876, -899796, 5460514, 1015760, -11077794, --3364033, -5712307, 5610838, 3340948, 2895345, -4082367, -839666, -370441, 949188, -3676492, -5227512, 1574106, -4567698, 6663105, 856309, -7232725, -6230924, 1823214, 7870528, 7232725, --10009421, 19568944, -1027034, 479963, 5293011, -658741, -2612951, -57445, 12450573, -6140193, -6131603, -1387811, 8605504, 2732673, 7710003, -2823941, -6150393, 4435091, 6589554, -3161633, --7462506, -7933342, -7145752, -3079492, -1472637, 7536594, 147640, 6571300, -805306, -1977833, -6350646, -5422396, -10789495, -2712272, -6896644, -6316823, -11989401, 9082782, 7766912, 3359738, --18576270, 4524748, 3893925, -1224603, -557272, -6306623, 8857296, 4711043, 3503620, 2341831, -8137890, -532576, -586263, 780073, -84289, 2073396, 925565, 220654, 2500745, -1317481, --330176, -1731946, 566936, 837519, 2762201, -1729798, -287226, -559420, 2136209, -782221, -807991, 1456531, 1719061, -1265942, 4094715, 197569, -96637, -1287417, 1620276, -2335389, -933082, 322123, -622233, 1110249, 2019172, -169114, -3582540, -1018981, -475668, -7545184, --358093, 430034, 5530844, -7934952, 535260, -1342177, -3111704, -16325708, -1822140, 7502234, -6043019, 7690676, 1042603, -8839043, 23117662, 9528922, 15764141, 1494112, -6710887, -2869575, --2088428, -9892383, -483721, -3965329, 5028333, -109522, 635655, -3262028, -4043712, -8386461, -2907693, 678068, 532576, 4122095, -226023, 1672890, -697932, -7304666, -5442261, 4202626, -149250, 10306311, -13073344, 10427644, 6600828, -4792647, -9420474, -15036681, 3272228, 11629161, --5900748, 11252277, -774705, -641561, 2734821, -3476239, -13110925, 1454383, 6370510, 2655901, --5630166, -1637456, -3489661, 2792803, 6529424, -469225, 1751273, -1003949, 6288906, -2899640, --1997697, 4080756, -3544422, 9586367, -2487860, -5058398, 3722663, -8935679, -4382478, -60130, -3588982, -3949223, 1741609, -1523103, 2042794, -69793, 2406256, 1864553, -684510, 1059783, --4072703, 2126009, -472983, -5769215, -1864553, -1732482, -3300146, -136902, 1072131, -2771328, --1799054, -260382, -3486977, 120259, 996432, -915365, -3699578, 199716, 20938, -2994129, -1251983, 1975148, -2250563, -287763, 750009, 90194, 1169842, 3200288, 2842732, -3000572, --2234457, 3721052, 2508798, -17737142, 12673912, 11525545, 13497472, -4332012, -12140799, 4262755, -4802847, -18053896, -16489990, 15939161, 1683090, -7770670, 5968394, -11281268, -12897787, 1835025, -33378338, 15531139, 6144488, -9084393, 86436, -3241090, 198642, -3816079, -1925219, -4239670, -1137093, 9514426, 1819992, 11730629, -4719096, -3898220, 2078764, 8192650, -1639604, -1194001, --17558364, -755914, -9921911, -539018, 13482976, 9658308, -3660923, 9438728, 18736794, -8975408, -5355824, 15568183, -11525545, 16454557, -1453846, 6758131, -3987877, 676457, -2309619, 2268280, -3733937, 16318728, -6347425, -2081985, 4162360, -7635378, 4716411, 2502355, -4472135, -7442105, -16004659, -1089311, -8929237, -2946348, 9888625, -4222490, 6681896, -69256, 392990, -10642392, --11654931, -5586142, -9956271, -8938364, -9757629, -614180, -2400887, 4675609, -706522, 824634, --981937, 5888937, 3663070, 399432, -7426536, 245887, -1475321, -5473399, -1662152, -2831457, -2755759, 1064078, -3831111, -1273995, -2964064, -2268280, -373662, 2014877, 1885491, 2059974, -3471407, -2235531, 340913, 2216203, -1674500, -2181844, 2516314, -3744675, -1577327, -1178432, -1541356, 668941, 2546379, 421444, 151398, 2150168, -1123671, -2604361, 21620328, 3959960, -2995740, -11220065, -6612102, 633508, 2428804, 4454418, 4962298, -21456582, 900333, 1418413, -15470472, 2545305, 3881577, -1420560, 14066018, -23051090, 636192, 11890617, -13839458, 3496640, -2623151, 11198053, 2115272, 1238024, -3861176, 408559, -11895986, 4052302, -3030100, 2141578, -3135326, -1977833, -9044664, 3326452, -7157026, -12268574, 6869800, -6919729, 4490389, -11535208, --7381438, -1185948, -3674345, 2801393, -5004174, 12724914, -232465, 12133819, -12859669, -10764799, --3551401, 208843, -300648, -3725347, 10800769, 8920647, 22622666, -3619584, 14437533, -8486855, --1548873, 4402879, -17330730, 19696184, -619549, 12270185, -577136, -17157320, -10448582, 7248831, --23084912, 11987254, 3207804, 17489106, 21927418, 2879239, -16427713, -12339978, -5192616, 12556337, --1634772, -3029026, 588411, -4591320, 559956, -3360275, -5058398, -1706713, -8072928, -388695, -243203, -3693135, -3439195, -4509179, -3333968, -1549946, 1876901, 3825205, 1297617, -643708, -3369939, -2411087, -1468879, 803696, 1716913, 2221572, -2373506, 2812667, -3053185, -1387274, --4395362, -7454990, 4454418, 771484, -4371740, -4283693, -966905, -5930813, 651761, 27380, --2119030, 4322348, 11087458, 16983912, 5907191, -7101192, 16158741, -17376900, -1824824, -5381057, -2119030, 13770739, -12542378, 31110596, 4100620, 7651484, -9223442, -12652974, 4306242, 25770, -26439282, -3884261, -9225053, -15228343, -10260140, 7289097, 4677757, 4221416, -1973001, -15002321, --23047868, 1620813, -13923747, 18327162, 2332704, 14860587, -9325448, 6147709, -6061810, 7642358, -21536040, -3707631, -2373506, -3386582, 5556077, 7064148, 3605625, 1457068, 2137820, 9252970, -8340290, -4995047, -7521562, -6814503, -7536057, 24578488, 9654013, -14644765, 11068131, -3446711, --11977590, -8666170, 4248260, 8893267, -17032230, -22228066, 2339147, -10018011, 28858960, 14894410, --5111548, -3465502, 6003291, 12901008, 3204583, -2394444, -4000225, -20190642, -1089311, -5083094, --21881248, 8042863, 13521631, -2410551, 6688338, 3599720, 13785234, -7865159, -2235531, 4812511, --2356863, -6502044, -7299297, -398358, -4486094, -10810433, -2379949, -5099200, 4414690, -2276333, --6059662, 3837017, 1409823, 359167, -3843996, 3818763, 892279, -6889128, 2086817, 2406792, --3339874, -9483825, -4789963, -1939178, -1242856, -367220, -3736622, -719407, -2843268, 1019518, -832687, -2080912, 154619, -411243, -3038689, -6002754, -1036698, 945430, 3041911, 1398012, --4617090, -116501, 3068217, 1240709, 1174674, -4787815, 1394791, -2016487, -2319282, -2550137, --2859375, 251256, -55835, -3093450, 1384590, -8476655, -13437879, 7614440, -4278861, 11682848, -5711233, -13160854, -5178120, -6776385, 3051038, -17642652, 12058658, 16238734, -6437082, 10042707, --2226941, -4765266, 8289287, -12424804, 7863012, 13151727, 3967476, 22850300, 11494406, -9891310, -10153840, 3966402, 8958765, 180389, 12706124, 10573136, 16924318, 6049462, -6228240, -8019241, --10018548, -1197759, 26097832, 336618, 11202885, -16464220, 34006476, -10217190, -26148298, -12707734, -21575232, 1474248, -2684355, -3128884, -1279900, 15657303, -11373610, 8980777, -2088428, 19771346, -30798674, 15503758, 14994805, -11052561, 17635672, 10286984, 10589242, 11597485, 17635672, -3813931, --30023432, -19641422, -21735218, 5513665, 8123931, 6087580, -4828080, 10054518, 27039504, 1681480, -2360085, 6329171, -1217623, -23666344, -24966644, -8829379, 5301601, 2502355, -790811, -14627048, -3959423, 528281, 1478006, 7397008, -1385127, 4636954, 1940252, 9176198, -2066416, 6068789, --4657892, 941672, 1272384, 10681584, 5277978, 10663330, 1513976, 5346161, -1647657, 1047435, -4939213, -3173444, -6762426, 1457068, -3912715, -8118025, -5974837, -1900523, -1426466, 10406706, -2507187, -191126, -2918967, 1490891, 351650, -3973382, -4029216, -3324842, 2690797, 6597607, --558883, 469225, 1149441, 2877628, 2430415, 7043747, -6949794, 4421132, 11141145, 13085692, -4728222, 6146635, 10188199, -8028905, 23695334, 9350144, 4577899, -6760816, -18182208, -7331509, -9912785, -985695, -25766582, 34693672, -12187507, -6795712, 10684805, 527744, -3468186, 2516851, --6741488, -8141648, -1785096, -18872624, 4660040, -20280836, 551903, -16077136, -18116708, -3628711, --3863860, -3968013, -13258027, 5815386, 14165876, 3806415, 10842645, -18821620, 18547816, 33830920, -3484292, -13578539, 21114596, -17328582, -27481348, 45726368, -4711043, 3251827, -3205119, -20438138, -15749645, -18526878, 7997766, 27944130, -585189, 38378216, -29971356, 28914256, 8394514, -18976776, --9980967, 3634079, -18278308, -9081171, 20293184, -19921132, 13201656, -13391171, 7308424, 21250962, --46662136, -20532092, 21430814, -39996884, 14099841, 12427488, 22846004, 20262046, 9067750, -1604707, -13387950, 20101520, -21850646, 21810918, -457414, 7565585, -1202054, 6865505, 1711008, -4111358, -1445793, -6292127, -2136209, 1671816, -1190243, -10929618, 6841883, -1893544, 8929237, 5431523, --7838316, 6182606, 7434052, 5507222, 2182380, 3959960, 2274722, 5034776, -15319075, 8608725, --2081985, -4086662, 10732050, -8617315, -7163469, 3722663, -9099425, -7247758, -2958696, -6587943, --8923868, 4964982, -13497472, -40039832, -10497974, 13196824, 30895310, -9804337, 15568720, 483184, -7320772, 16088947, 10321343, 27824408, -7243999, 1226750, 7569343, -24559696, -15884937, -7292855, --8019241, 5701032, 359167, 2124398, -12884365, -2084133, -17038136, -13768055, 6578816, 34343096, -19677392, -8983461, -11041824, 16386374, 19529216, -11632919, 5109938, 15109158, -6031745, 32848446, -11105175, 4854387, -25376278, 15653008, 3149285, 12341052, -2659659, 3209951, -4239670, -5422396, --39979168, 10613938, 27544162, 13670344, 3632469, -741956, 13859323, -22422414, -41531796, 3115462, -54919748, 13261785, 43555800, 41386304, 487479, 3639448, -26365194, -23529442, -2576981, -20180978, -27474368, -59989956, 11278047, -22457310, -47996796, 10678362, 22375706, 47951164, 4236449, 2422899, --30601642, 10004053, 14366666, -21322902, -2055142, 1537598, 22332756, -5977521, -14347875, 33927020, -7116761, -12090870, -493921, -19597936, 2532420, -18548354, -3804804, -613643, -9132711, 2850248, --7387344, -7761006, -4310000, -56908, -3758097, 6303402, 17521856, -966905, 157840, 6577206, --15949898, -9585830, -1956358, 4843113, 4988605, -13821742, -7878044, 11032160, 6448357, 3863323, -2617783, 11652783, -472983, 237297, 1166084, -7805566, 1394254, 11148124, -5698348, -10584947, -29414620, 51126216, 1430761, 13908715, 9332964, -26996554, -7531762, 26765162, 8563091, 11755325, --6633577, 7721815, 4678293, -9600326, 526670, 13849122, 14870787, 17920752, -7851737, -2299418, --39681204, -37410776, 5252208, -23163832, 903017, 19931332, 4949950, 2294586, -6807523, -4549444, -12947179, 31241056, -22654342, -13158706, -2868501, -22214644, -1510218, -21414706, -6526740, -22729504, -20102058, -27524298, -2131915, 4844186, 13391171, 47869556, 64063732, 16468515, -16716550, -34219616, --2910377, -23438174, -9060770, -36391256, 5532455, 34897684, 25919054, 20903606, 2629057, 4990752, -35961760, 34726420, 25693568, -2193655, 16256451, 5866389, 8086350, -41384696, 12557411, 4469987, --9416179, 24793772, 33907692, -4800163, -466541, -16702591, -70427264, -1468879, 20969640, -10352482, -48935248, 34578780, -16013249, 3120831, -17864380, 12036646, 3482682, -6654515, -10644003, -5023501, --884763, 7471096, 9554692, 14329085, 525060, -8816494, -18687402, 974421, -8748312, 7059316, --8246337, -11592117, -2728378, -3100430, 8647380, 3441343, -3093450, 4354023, 2605435, 3427921, -979253, -6650220, -10245644, -5395016, 4071629, 8572755, -601832, 6964827, 69256, -10550587, --10671920, 2879776, -13091597, -7606387, 202400, -5970005, -1443646, 3587372, 5621576, -5092758, --8760660, -12652437, 32117228, 22590454, -15025943, 15244450, 23911694, 2504503, -29519310, -35640176, -33332704, 11114838, 7868380, 25924960, 785979, -11516955, 28208272, 7225209, -21029770, -10929081, --7486128, 9304510, 807454, -12862890, 5138392, -14211510, -1191317, -6484327, -6621229, 18943490, -35785668, -12233141, 7607998, 16633335, -8094403, -7274601, 7111392, 20128902, 6719477, -15654619, --19427748, -23786602, 12955769, 13240847, 32530082, -15392626, -14235669, 11237245, 19491636, 29994440, --589484, -55823836, -11662447, 17884780, 18196166, 7984344, -10609643, -496069, -22009024, 3272765, --9349607, 23094576, 33498060, -10114111, 1023276, -19523310, -20777442, -8207146, -42379516, -8659191, --21392158, 18858128, -17054242, 19567334, 24675124, -49461380, -3797825, -20964272, 21492554, -8768713, -7800198, -15425912, 2852395, -13148506, 14926622, 16174310, 28385976, 26998702, 13769128, 25975426, -12452721, 1490891, 14148159, 8799851, -3501472, 11533598, -12483859, 6151467, -6185827, 5318780, --15823196, 9564892, 494458, 7563975, -11529840, -6850473, 8185671, -3180960, -3569655, 13915157, --10558640, -2588255, 11770358, 5531918, -7141994, -2463164, 5083094, 25732222, 14332306, 11184095, -15690589, 971200, 17025788, 5508296, 5563594, 8580808, 523986, 13808320, 4371203, -23925116, --10611790, -6439230, -7676181, 2974265, -4665945, -11514270, -16417512, -26583700, -6292127, -14698452, --27400280, -40860708, 19863150, 21465710, 12312061, -27240830, -37575060, -28481002, -16492674, 6924561, --1455457, -36183488, -21942988, -24739012, 35083440, 11179263, 15161235, -10923712, -20310364, 44937168, -10852309, 14141180, -8778913, 2830384, 13014288, -8976482, 10300942, -3122441, 21136608, 30328912, -1123134, -24166170, -19736986, 24055574, 16172162, 21090974, 5854578, 5412196, -10975252, -4568235, -3275986, 14780056, 31408558, -110595, -59106804, -54470924, 619549, -13196287, 35198332, 36126044, --40185324, -26892938, -16986058, 49964428, 44231720, -23902030, 6945499, -31348430, -30488900, 18635864, --14097693, 335544, -4790499, -21713744, 15485505, 16173773, 12632573, 50592032, -37096708, -9808095, --3540664, 13073344, 3995393, 20893942, -73938936, -42777876, 15350750, 23302346, 22782654, 6626061, --24464670, -24789478, 352724, 14857902, 42601780, 10497437, -14273787, 4490925, -27698244, 17256642, -14865419, 973347, 23839752, 51328616, 12240120, -37507948, -19775104, -2581812, 4267050, 24816858, -21452824, 10262287, -11377905, -4554276, -7853348, -8832063, 22231824, -2578054, 1998770, -8836895, -21556978, -9989557, -4210142, -537945, 18700288, 8238821, 6620155, -3956739, -23638426, -8438537, -7610682, 18815714, 3192235, -26186416, -36371392, -30287036, -787590, 4379793, 5537824, 3620658, --9974525, -7541963, 49510772, -32897302, 30923228, 30684320, 19726248, -71683008, -28685550, 23968602, --19394998, 13857175, -5036386, -29787746, 19139448, 5711233, 5763309, -13179107, -47350940, -4519380, --1360968, 158914, -6684580, -34581468, 25924422, -21377126, 44214004, -4678293, -3768297, 21474836, -16094853, -21116744, -1865626, -15989626, 23669564, 37119256, 28360742, -31344672, 7117835, -20981988, -18996104, -18227304, -7379291, 3080565, -1497870, 20167018, -18444738, -43514460, 11287174, -15575699, -16344498, 16945256, -54945516, -9359271, -10395968, 1992328, 61061552, -16452946, -44256416, -11805254, -38851200, 18584324, -23915988, -7902203, 24144158, -118648, 29783988, -44649408, -23460186, 26838714, --27901718, -68066640, -19958176, -9295920, 77772192, -21206938, -39999568, 21325050, -46161236, 122080688, -11686606, -113466056, -30079266, -20056424, 80652504, 43567612, -50491636, -26745836, -525060, 59485296, -47591460, -7427609, -37176700, 14595909, -12483859, 53643068, -5054103, -26989038, -22176526, 35128536, --27991912, 18186502, -53733800, -278636, -1911261, -3176128, -3008088, 11288248, -29672318, 28848222, -2558727, 21147346, 1020592, -34072512, -25972740, 19340238, 23105850, 35985920, 13623099, -3720516, --23346906, 3089692, 6033356, -6259378, 1724966, 23567560, 3862249, -1169842, -26721140, 5125507, -19306414, 7009924, 981400, -7924215, -19158238, -21267068, -9867150, 6493454, -6277632, 9400610, --8863202, -5409512, 3647501, 707596, 284542, -65521872, 18358838, -1025960, 22378390, 54216984, -17355962, 7482907, -30563524, -12655121, -30544196, -36544804, -12259447, 7208029, 20888036, 27675696, --3111167, 16105054, 19474456, -16950626, -34417184, 18247168, 6538014, -27941984, -9515500, 26582626, --9051107, -2954938, 24295556, 13644037, 10793790, 3403225, 13806709, -13208098, -31971736, -13880261, -9095130, -13077102, -7565585, 11726334, 773094, -22493280, 23454816, 5086852, -20861730, 2692945, --5044439, 20216948, 11230266, -8128226, 9474161, -12425877, -28029494, 3778498, 6806987, -2521683, -54224, 5953899, -12251931, 3897146, -10492605, 6320045, 19977504, -2090575, 8725226, 9274445, --7742216, 532039, -19090056, 6562173, 11240466, -34631932, 20113868, -21585432, 6805913, 1042066, --113280, 9592273, 3855807, 22668300, 4116189, 6439767, -3283503, 11619497, -12179454, -7966091, -2789581, 1983738, -10659572, 3879966, -964757, -3050501, -6163278, 2242510, -1227287, 12294344, --3153043, 1509681, 8754754, -6106907, 6078453, -3743064, 2123325, -6109054, -5386963, -6100464, --1632088, -2715493, 4616553, 3357054, -14369887, -3872987, -4209605, 10048613, -5939403, 3791919, -1701344, -15935402, 5304822, 10435697, 665720, -3839701, 1714766, -4642323, -2385318, 3501472, -53103512, -1974611, -1726577, -14778446, -14455249, 10877005, -608812, 9408126, 195958, -5235565, --6985228, 3544422, -9790915, 9900973, -9221832, 14448807, -11715597, 8394514, -9916543, -2271501, --1590749, -9306657, -7061463, 2027761, -4169340, -2984466, -68719, -7018514, 920197, -1449552, -2214593, -1705639, 4051228, -14010183, 12690018, -4846334, -4168266, 9546102, -7732552, 437013, --9656697, -8529268, 6137509, 5335960, -6791954, -4465692, 2716567, -525060, -11814381, 2930778, -2057826, -101469, 7729331, -2968896, -3349001, -3278671, -8078297, -2291365, 8430484, -9092983, -2292439, -4463545, -1131187, 469225, -2760053, 1873143, 22549, 5797132, -8618389, -856309, -5515812, -11206643, 6429566, -5114233, 40802, 4946729, -2493766, -5177046, 2250026, -1021665, --1488743, -502511, -3650185, -220654, 3703873, -378494, -1806034, 519691, -3174518, 2024540, -1530619, 781147, -2576981, -900333, 3193845, -4296578, 4086662, -2047089, 1744831, 4454418, --5604933, 1169305, 311922, -7153268, 1208496, -2390149, 2815351, -1156420, 142271, 4071629, --2866354, 643708, -4576825, 600222, 573378, -1300838, -1165547, -721018, -1704565, 134218, --904628, -3221, 3033858, -4752382, 1906966, -25081536, -41907068, 15437723, 134908688, 33542620, -74461312, -3099893, -72216656, -23687282, -71062920, -61036316, -21361020, -14854681, -4823249, 40169756, -54351200, 71464496, 90659784, 38878044, -23036594, -42120744, -88750128, -84697832, -34316788, -28434830, --18692234, 36309652, 49912352, 29553670, 46285252, 55148452, 18859738, 14976551, 10475962, -28886876, --13069049, -20744156, -44627932, -24908662, -33125472, -49488224, -26693758, 5906117, 5406827, 27330488, -66918812, 45488000, 38154880, 36848672, 11532524, 2540473, -3667902, -19423990, -27302034, -34915936, --49502720, -44076564, -24404542, -7891466, -16632798, 13653164, 25862146, 21672942, 37857452, 41861972, -27134530, 24269786, 24041616, -3911105, -11590506, -6076305, -34097208, -28540058, -7118909, -28249074, --29894046, -19194746, -26875220, -13300977, 7854422, 17096118, 31374200, 49896244, 31187906, 28610388, -31982474, 11615202, -3650722, -5971615, -16962436, -28450938, -29235306, -28164784, -30578020, -21518324, --19514720, -16485695, -6593312, 7524783, 19127100, 29263760, 44532368, 46589120, 45706504, 38570952, -12400644, -10231149, -20601884, -33546378, -44077100, -50093816, -49730352, -39632884, -22121766, -5448703, -13857175, 40861780, 45739792, 45540612, 47982300, 39427264, 20939576, 6495601, -11060615, -32013076, --44484052, -39504036, -36698884, -29142426, -13357348, 1131187, 11069741, 21948894, 25113748, 24494736, -19714974, 8796093, 4284230, 1563905, -3399467, -4204236, -3983045, -5583458, -6677064, -5368172, --7371775, -5134097, -3984119, -2903398, -3385508, -1179505, -172872, 2091112, 2563559, 4687957, -5692979, 6900939, 5105106, 5247377, 3579855, 2268817, -804233, -1753957, -3803194, -4087198, --5884105, -5468030, -5403606, -3854196, -3432753, -1069984, 374199, 2193655, 3015067, 5350456, -5149666, 5622112, 4379793, 3543885, 1340567, 1013612, -961536, -1573032, -4227322, -5602785, --6182606, -4447439, -3918621, -1227824, 38655, 1388885, 1663226, 3213709, 3008625, 4273493, -3606699, 3796214, 2310156, 1578937, -874563, -1637456, -3441880, -3321620, -3776350, -2857227, --3117073, -1535988, -957778, 1004486, 1697586, 3135863, 2666638, 3160559, 1772211, 1504849, --61203, -348966, -1237488, -654983, -1475321, -850404, -1444183, -568009, -930397, 16106, --350577, 532576, 37044, 731218, 77846, 665720, -14496, 563178, -163209, 400506, --289910, 349503, -307090, 331786, -312996, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +5185636, -3051574, 214212, 162135, -3712999, 4958003, -1981054, -1947768, 1418950, -5130339, +-2297808, 5481989, 1245541, -2247342, 3900367, 1198833, 832687, -814433, 1899986, -43487, +-6572374, -324807, -2441689, -307090, -148176, -6301254, 92342, -4056060, 214212, 621160, +2801393, 3343095, 1101122, 818728, 609349, 2885144, -1596117, 975494, 177167, 438624, +597537, -888521, 2583423, 3859028, -7456600, 3441880, -1957431, -4498442, -2874944, 5695127, +2855080, -1950452, 3234647, 923955, -2059437, 1992328, 32212, -24159, 287763, 368293, +-788127, 20938, 410169, -352724, 2443300, -1551020, -3453691, -3357591, -34360, 1096290, +-225486, 134218, 1864016, -766115, 3282429, -3511136, -1055488, 2655364, 2879776, -2019172, +3247532, 1119913, -862752, -2231773, -1039382, -970126, -896038, -902480, -453656, -155693, +-499290, -950798, 259846, 627065, -1331977, -376347, -443455, 646929, -1162862, -294742, +139586, 2728378, 236760, -2245731, 1416266, -1228361, -1732482, 394063, -3686156, -486405, +-2755759, 934155, 1767916, 1629403, 1357210, -2946348, -179315, -2450279, 2598992, -5007395, +-2791729, 2456185, -5415417, -663036, -338229, 1337346, 1212791, 2621541, 5661304, 2551211, +-686658, -71941, -2003602, -1628330, -9951976, -9232032, -601295, 6734509, -1675037, 5366562, +485868, 1491964, -1677722, -7774965, 3998078, 1159641, -2313914, 1838246, -4083440, -896038, +2321967, 956704, 7238631, -5028870, 4392678, -2341831, -5695664, -2713883, -1552094, -1633698, +2018635, 1633161, -4594005, -2119566, -2617246, -1047972, 4434017, 4662724, 5090073, -3805341, +634581, -2414845, -310311, -2043868, -2515240, -3126199, -3427921, 1814624, 535260, -604517, +-1248225, 374736, 1923609, -2041183, -1728724, -959388, 2202245, -846109, -426276, -1044214, +-1123671, -359704, 476205, -110595, -193810, 285078, 475668, -227096, -222801, 1328219, +-1125818, -790811, 530428, -770947, 1078037, -773631, -772020, -240518, -154082, 594853, +-375810, -435939, 390842, -2684, -1130650, 266825, 238371, -933082, 3661460, -3466576, +-4581657, -3891240, 70867, -1512365, -1299765, -3069828, 631897, -3434363, -294205, -1388348, +5291937, -3389803, -3803731, -8351564, -10936060, -2594160, -4897337, -4424890, -1106491, 2298344, +-2805688, -6495601, 4015795, -9439801, 2811593, -1550483, -1741072, 6174016, 4287988, 2310693, +813359, -1014149, -1010391, -2263448, 959388, 4203699, -3380676, 3988414, 3615289, 1102196, +511638, 1685238, 2764885, -6123550, -2699924, 5921686, -4582193, 427349, -114354, 3639448, +-471373, -1326071, 661425, 6143414, 3360275, 2166811, 1952063, 3443490, -5400385, 4205310, +-4409321, 3897146, 2526515, -1097364, -782221, -1787780, -2421825, -3876208, -206695, -1178432, +-3132105, -3414499, -1953136, -1967095, -354872, -186831, -952946, 4678293, -1915555, -820339, +-3149822, 3257733, 16643, -662499, 682900, -1301375, -2267743, 98247, 1282585, -104153, +-217433, -1424319, 428960, -438087, -1320703, 135291, 301721, 779000, -159988, 528281, +412317, 1136556, 386547, -1137630, 61740, 663036, -160524, -991601, -638876, 1575179, +804233, -774168, -344671, -277562, 2230699, -5818607, -93416, -2754685, -5258651, -2512556, +-943282, -3744138, -1206349, -3458523, -1289027, 2637647, 3655017, -6039261, -3367254, 1912334, +-1153199, -6595459, 4392678, 7744900, 1672890, -1888712, -3606162, 810138, 3803194, 6999186, +-3548717, -1547799, -4484483, -3679713, 3934190, 3857418, -5451924, 3167539, -1719061, -3557307, +5579163, -71941, 3058017, -7654169, 555661, -4929549, 1134408, -6111202, -3768297, -1049046, +-1381906, 12560632, 4036733, 3211025, 2493229, -9460202, 5284421, 3592740, -2047089, -300111, +4125316, -646929, 4356708, 4945655, 5011153, -2958159, 391916, -1681480, 2678986, -2437394, +-2480881, 1581085, -2329483, 1042603, 1584306, 15032, 2959233, 1091995, -5550172, -746787, +-688805, 1677722, -6295349, -2105608, -1582696, 4378183, -1336809, -817118, -3395172, -980863, +241055, -399969, -1572495, -33823, -1015760, 1070521, 424128, -72478, 200790, 341450, +-802085, -2434710, 1260036, 439697, -1338419, 565325, -726386, 192737, 302795, 753230, +-177167, -373125, -578747, 447213, -961536, 824634, -1096827, -151934, -81604, 636192, +-725850, -382252, -1059246, -715649, -977642, -7853885, -4316442, 3153580, -3380676, 9120900, +4070019, 8927626, -99858, -4430796, -4638028, -6342593, 9614284, -2393371, 4410395, 4844723, +1045288, 3396246, 3157875, 2997350, 1243930, -6375879, -331786, -2495376, -919123, 4285841, +-366146, -440771, 3048890, 1855426, 3155727, -2804077, -9953587, -6008123, -3757560, 7290707, +-6617471, -2066416, 4519916, -565325, 855772, -5628018, 9678172, 467078, -3746822, 7568269, +-4671851, 11756936, 6121402, -2729989, 1381369, -3430605, -2289755, -10951630, 3870303, -5024575, +-760209, -491237, -2374043, 4599910, -1811939, -4820027, -4625143, 1011465, -4225711, -4730370, +2669322, 344134, 3366181, -1889786, -9934259, 3364033, 4323959, 5486284, -5344550, -6088653, +786516, 9781788, 1588064, -5164162, -2332704, -934155, 2702071, 421444, 2876554, -2970507, +-1100585, -641561, -3566434, -2990908, 4376572, -802085, 1714229, -453119, -1251983, -2859911, +-273804, 37581, 1082332, -592706, 1005022, -794569, -2276333, -981937, -323196, -124017, +-420907, 1634235, 84289, 1774895, -636192, -203474, -301185, -2081985, -21475, 970663, +1024350, 628139, 7793218, -7162932, 3532074, 9347996, -6763500, 1925219, -3839164, -7182259, +10679973, 4118337, 9920301, 9311489, 1272384, -7259569, -4581120, 3911642, -555125, 1687385, +-8031052, 928250, -14210436, -5844377, -11099806, 6896107, -6336688, -129386, 1959579, -1726040, +-2924336, 3443490, 3287261, 9875204, -1428614, -2070711, -7552163, -6295885, 6181532, 1443646, +2091112, 11794517, -3599183, 183073, 6164352, -2691334, 2819109, 2247342, 6170795, 5708549, +-3937948, -503585, -7994008, 8364449, -5476084, -7058779, -6944425, 4469451, -2608119, -3668439, +8079907, -2423972, 8378408, -5077725, -3994857, -967441, 5472325, 7270843, -588947, -7618735, +2748779, -4828617, 10020696, 2200634, 5869610, -7982197, -3617436, 2285460, -2117419, 4996121, +681289, -2638721, 2881386, 6586333, 9084930, 7158637, 70330, -1529545, -144955, 1643899, +107911, -1458141, 1038308, -1207423, -255014, 2727841, 106300, -1152662, 2755222, -763967, +-1513976, 857920, 945967, 79994, -1780801, 776852, -1234803, 384936, -2411087, -2805151, +707059, 1248762, -113280, 2422362, -853625, 1174674, 4718022, -12399571, 4350265, 3636227, +2503966, -9381819, 7175817, 11732240, -11435887, 4339528, -7015829, 4594542, 665720, 4125853, +-3360275, -287763, 2754685, -7842611, -3831648, -3396246, 6229313, 6469832, -2087354, 3025268, +-1542430, 4775467, 6175626, 2363843, 1899986, -6237903, -2282775, -7783555, -8545374, -6035503, +628676, -2901251, -350040, -3615826, -8506720, -2923262, 1796370, 754304, -467078, 12933220, +-10432476, 3845606, -5168457, -1532230, -3200288, -3321084, 5561446, -3305514, 476741, -3999152, +-2600066, -4853850, 6666326, -6096169, 5479842, -1429687, 5475010, -508954, 878858, -577673, +5295158, 3010772, -91805, 11223823, 507343, -5644661, 3021510, -5078262, -6158446, -7509214, +7353521, 2567317, 6558415, 6611566, 7828115, 4553739, -870268, -1401233, -1337346, 7461432, +-1031866, 8368207, 1852742, -365609, -1211718, 2866891, 4333622, 1109712, 1821603, 583042, +-498753, 830002, -1337882, 2248952, 172336, 1928977, -503048, 1831267, -126165, -2927557, +1522029, 2013803, 69256, 1639067, -444529, 93952, -1620813, 1417339, -332323, 695248, +3179350, 3192771, -13077639, -939524, 1593433, -2913599, -10316511, 11792906, -846645, 523986, +9853729, -2688113, -10320806, 3703336, 6620692, 12789876, -899796, 5460514, 1015760, -11077794, +-3364033, -5712307, 5610838, 3340948, 2895345, -4082367, -839666, -370441, 949188, -3676492, +5227512, 1574106, -4567698, 6663105, 856309, -7232725, -6230924, 1823214, 7870528, 7232725, +-10009421, 19568944, -1027034, 479963, 5293011, -658741, -2612951, -57445, 12450573, -6140193, +6131603, -1387811, 8605504, 2732673, 7710003, -2823941, -6150393, 4435091, 6589554, -3161633, +-7462506, -7933342, -7145752, -3079492, -1472637, 7536594, 147640, 6571300, -805306, -1977833, +6350646, -5422396, -10789495, -2712272, -6896644, -6316823, -11989401, 9082782, 7766912, 3359738, +-18576270, 4524748, 3893925, -1224603, -557272, -6306623, 8857296, 4711043, 3503620, 2341831, +8137890, -532576, -586263, 780073, -84289, 2073396, 925565, 220654, 2500745, -1317481, +-330176, -1731946, 566936, 837519, 2762201, -1729798, -287226, -559420, 2136209, -782221, +807991, 1456531, 1719061, -1265942, 4094715, 197569, -96637, -1287417, 1620276, -2335389, +933082, 322123, -622233, 1110249, 2019172, -169114, -3582540, -1018981, -475668, -7545184, +-358093, 430034, 5530844, -7934952, 535260, -1342177, -3111704, -16325708, -1822140, 7502234, +6043019, 7690676, 1042603, -8839043, 23117662, 9528922, 15764141, 1494112, -6710887, -2869575, +-2088428, -9892383, -483721, -3965329, 5028333, -109522, 635655, -3262028, -4043712, -8386461, +2907693, 678068, 532576, 4122095, -226023, 1672890, -697932, -7304666, -5442261, 4202626, +149250, 10306311, -13073344, 10427644, 6600828, -4792647, -9420474, -15036681, 3272228, 11629161, +-5900748, 11252277, -774705, -641561, 2734821, -3476239, -13110925, 1454383, 6370510, 2655901, +-5630166, -1637456, -3489661, 2792803, 6529424, -469225, 1751273, -1003949, 6288906, -2899640, +-1997697, 4080756, -3544422, 9586367, -2487860, -5058398, 3722663, -8935679, -4382478, -60130, +3588982, -3949223, 1741609, -1523103, 2042794, -69793, 2406256, 1864553, -684510, 1059783, +-4072703, 2126009, -472983, -5769215, -1864553, -1732482, -3300146, -136902, 1072131, -2771328, +-1799054, -260382, -3486977, 120259, 996432, -915365, -3699578, 199716, 20938, -2994129, +1251983, 1975148, -2250563, -287763, 750009, 90194, 1169842, 3200288, 2842732, -3000572, +-2234457, 3721052, 2508798, -17737142, 12673912, 11525545, 13497472, -4332012, -12140799, 4262755, +4802847, -18053896, -16489990, 15939161, 1683090, -7770670, 5968394, -11281268, -12897787, 1835025, +33378338, 15531139, 6144488, -9084393, 86436, -3241090, 198642, -3816079, -1925219, -4239670, +1137093, 9514426, 1819992, 11730629, -4719096, -3898220, 2078764, 8192650, -1639604, -1194001, +-17558364, -755914, -9921911, -539018, 13482976, 9658308, -3660923, 9438728, 18736794, -8975408, +5355824, 15568183, -11525545, 16454557, -1453846, 6758131, -3987877, 676457, -2309619, 2268280, +3733937, 16318728, -6347425, -2081985, 4162360, -7635378, 4716411, 2502355, -4472135, -7442105, +16004659, -1089311, -8929237, -2946348, 9888625, -4222490, 6681896, -69256, 392990, -10642392, +-11654931, -5586142, -9956271, -8938364, -9757629, -614180, -2400887, 4675609, -706522, 824634, +-981937, 5888937, 3663070, 399432, -7426536, 245887, -1475321, -5473399, -1662152, -2831457, +2755759, 1064078, -3831111, -1273995, -2964064, -2268280, -373662, 2014877, 1885491, 2059974, +3471407, -2235531, 340913, 2216203, -1674500, -2181844, 2516314, -3744675, -1577327, -1178432, +1541356, 668941, 2546379, 421444, 151398, 2150168, -1123671, -2604361, 21620328, 3959960, +2995740, -11220065, -6612102, 633508, 2428804, 4454418, 4962298, -21456582, 900333, 1418413, +15470472, 2545305, 3881577, -1420560, 14066018, -23051090, 636192, 11890617, -13839458, 3496640, +2623151, 11198053, 2115272, 1238024, -3861176, 408559, -11895986, 4052302, -3030100, 2141578, +3135326, -1977833, -9044664, 3326452, -7157026, -12268574, 6869800, -6919729, 4490389, -11535208, +-7381438, -1185948, -3674345, 2801393, -5004174, 12724914, -232465, 12133819, -12859669, -10764799, +-3551401, 208843, -300648, -3725347, 10800769, 8920647, 22622666, -3619584, 14437533, -8486855, +-1548873, 4402879, -17330730, 19696184, -619549, 12270185, -577136, -17157320, -10448582, 7248831, +-23084912, 11987254, 3207804, 17489106, 21927418, 2879239, -16427713, -12339978, -5192616, 12556337, +-1634772, -3029026, 588411, -4591320, 559956, -3360275, -5058398, -1706713, -8072928, -388695, +243203, -3693135, -3439195, -4509179, -3333968, -1549946, 1876901, 3825205, 1297617, -643708, +3369939, -2411087, -1468879, 803696, 1716913, 2221572, -2373506, 2812667, -3053185, -1387274, +-4395362, -7454990, 4454418, 771484, -4371740, -4283693, -966905, -5930813, 651761, 27380, +-2119030, 4322348, 11087458, 16983912, 5907191, -7101192, 16158741, -17376900, -1824824, -5381057, +2119030, 13770739, -12542378, 31110596, 4100620, 7651484, -9223442, -12652974, 4306242, 25770, +26439282, -3884261, -9225053, -15228343, -10260140, 7289097, 4677757, 4221416, -1973001, -15002321, +-23047868, 1620813, -13923747, 18327162, 2332704, 14860587, -9325448, 6147709, -6061810, 7642358, +21536040, -3707631, -2373506, -3386582, 5556077, 7064148, 3605625, 1457068, 2137820, 9252970, +8340290, -4995047, -7521562, -6814503, -7536057, 24578488, 9654013, -14644765, 11068131, -3446711, +-11977590, -8666170, 4248260, 8893267, -17032230, -22228066, 2339147, -10018011, 28858960, 14894410, +-5111548, -3465502, 6003291, 12901008, 3204583, -2394444, -4000225, -20190642, -1089311, -5083094, +-21881248, 8042863, 13521631, -2410551, 6688338, 3599720, 13785234, -7865159, -2235531, 4812511, +-2356863, -6502044, -7299297, -398358, -4486094, -10810433, -2379949, -5099200, 4414690, -2276333, +-6059662, 3837017, 1409823, 359167, -3843996, 3818763, 892279, -6889128, 2086817, 2406792, +-3339874, -9483825, -4789963, -1939178, -1242856, -367220, -3736622, -719407, -2843268, 1019518, +832687, -2080912, 154619, -411243, -3038689, -6002754, -1036698, 945430, 3041911, 1398012, +-4617090, -116501, 3068217, 1240709, 1174674, -4787815, 1394791, -2016487, -2319282, -2550137, +-2859375, 251256, -55835, -3093450, 1384590, -8476655, -13437879, 7614440, -4278861, 11682848, +5711233, -13160854, -5178120, -6776385, 3051038, -17642652, 12058658, 16238734, -6437082, 10042707, +-2226941, -4765266, 8289287, -12424804, 7863012, 13151727, 3967476, 22850300, 11494406, -9891310, +10153840, 3966402, 8958765, 180389, 12706124, 10573136, 16924318, 6049462, -6228240, -8019241, +-10018548, -1197759, 26097832, 336618, 11202885, -16464220, 34006476, -10217190, -26148298, -12707734, +21575232, 1474248, -2684355, -3128884, -1279900, 15657303, -11373610, 8980777, -2088428, 19771346, +30798674, 15503758, 14994805, -11052561, 17635672, 10286984, 10589242, 11597485, 17635672, -3813931, +-30023432, -19641422, -21735218, 5513665, 8123931, 6087580, -4828080, 10054518, 27039504, 1681480, +2360085, 6329171, -1217623, -23666344, -24966644, -8829379, 5301601, 2502355, -790811, -14627048, +3959423, 528281, 1478006, 7397008, -1385127, 4636954, 1940252, 9176198, -2066416, 6068789, +-4657892, 941672, 1272384, 10681584, 5277978, 10663330, 1513976, 5346161, -1647657, 1047435, +4939213, -3173444, -6762426, 1457068, -3912715, -8118025, -5974837, -1900523, -1426466, 10406706, +2507187, -191126, -2918967, 1490891, 351650, -3973382, -4029216, -3324842, 2690797, 6597607, +-558883, 469225, 1149441, 2877628, 2430415, 7043747, -6949794, 4421132, 11141145, 13085692, +4728222, 6146635, 10188199, -8028905, 23695334, 9350144, 4577899, -6760816, -18182208, -7331509, +9912785, -985695, -25766582, 34693672, -12187507, -6795712, 10684805, 527744, -3468186, 2516851, +-6741488, -8141648, -1785096, -18872624, 4660040, -20280836, 551903, -16077136, -18116708, -3628711, +-3863860, -3968013, -13258027, 5815386, 14165876, 3806415, 10842645, -18821620, 18547816, 33830920, +3484292, -13578539, 21114596, -17328582, -27481348, 45726368, -4711043, 3251827, -3205119, -20438138, +15749645, -18526878, 7997766, 27944130, -585189, 38378216, -29971356, 28914256, 8394514, -18976776, +-9980967, 3634079, -18278308, -9081171, 20293184, -19921132, 13201656, -13391171, 7308424, 21250962, +-46662136, -20532092, 21430814, -39996884, 14099841, 12427488, 22846004, 20262046, 9067750, -1604707, +13387950, 20101520, -21850646, 21810918, -457414, 7565585, -1202054, 6865505, 1711008, -4111358, +1445793, -6292127, -2136209, 1671816, -1190243, -10929618, 6841883, -1893544, 8929237, 5431523, +-7838316, 6182606, 7434052, 5507222, 2182380, 3959960, 2274722, 5034776, -15319075, 8608725, +-2081985, -4086662, 10732050, -8617315, -7163469, 3722663, -9099425, -7247758, -2958696, -6587943, +-8923868, 4964982, -13497472, -40039832, -10497974, 13196824, 30895310, -9804337, 15568720, 483184, +7320772, 16088947, 10321343, 27824408, -7243999, 1226750, 7569343, -24559696, -15884937, -7292855, +-8019241, 5701032, 359167, 2124398, -12884365, -2084133, -17038136, -13768055, 6578816, 34343096, +19677392, -8983461, -11041824, 16386374, 19529216, -11632919, 5109938, 15109158, -6031745, 32848446, +11105175, 4854387, -25376278, 15653008, 3149285, 12341052, -2659659, 3209951, -4239670, -5422396, +-39979168, 10613938, 27544162, 13670344, 3632469, -741956, 13859323, -22422414, -41531796, 3115462, +54919748, 13261785, 43555800, 41386304, 487479, 3639448, -26365194, -23529442, -2576981, -20180978, +27474368, -59989956, 11278047, -22457310, -47996796, 10678362, 22375706, 47951164, 4236449, 2422899, +-30601642, 10004053, 14366666, -21322902, -2055142, 1537598, 22332756, -5977521, -14347875, 33927020, +7116761, -12090870, -493921, -19597936, 2532420, -18548354, -3804804, -613643, -9132711, 2850248, +-7387344, -7761006, -4310000, -56908, -3758097, 6303402, 17521856, -966905, 157840, 6577206, +-15949898, -9585830, -1956358, 4843113, 4988605, -13821742, -7878044, 11032160, 6448357, 3863323, +2617783, 11652783, -472983, 237297, 1166084, -7805566, 1394254, 11148124, -5698348, -10584947, +29414620, 51126216, 1430761, 13908715, 9332964, -26996554, -7531762, 26765162, 8563091, 11755325, +-6633577, 7721815, 4678293, -9600326, 526670, 13849122, 14870787, 17920752, -7851737, -2299418, +-39681204, -37410776, 5252208, -23163832, 903017, 19931332, 4949950, 2294586, -6807523, -4549444, +12947179, 31241056, -22654342, -13158706, -2868501, -22214644, -1510218, -21414706, -6526740, -22729504, +20102058, -27524298, -2131915, 4844186, 13391171, 47869556, 64063732, 16468515, -16716550, -34219616, +-2910377, -23438174, -9060770, -36391256, 5532455, 34897684, 25919054, 20903606, 2629057, 4990752, +35961760, 34726420, 25693568, -2193655, 16256451, 5866389, 8086350, -41384696, 12557411, 4469987, +-9416179, 24793772, 33907692, -4800163, -466541, -16702591, -70427264, -1468879, 20969640, -10352482, +48935248, 34578780, -16013249, 3120831, -17864380, 12036646, 3482682, -6654515, -10644003, -5023501, +-884763, 7471096, 9554692, 14329085, 525060, -8816494, -18687402, 974421, -8748312, 7059316, +-8246337, -11592117, -2728378, -3100430, 8647380, 3441343, -3093450, 4354023, 2605435, 3427921, +979253, -6650220, -10245644, -5395016, 4071629, 8572755, -601832, 6964827, 69256, -10550587, +-10671920, 2879776, -13091597, -7606387, 202400, -5970005, -1443646, 3587372, 5621576, -5092758, +-8760660, -12652437, 32117228, 22590454, -15025943, 15244450, 23911694, 2504503, -29519310, -35640176, +33332704, 11114838, 7868380, 25924960, 785979, -11516955, 28208272, 7225209, -21029770, -10929081, +-7486128, 9304510, 807454, -12862890, 5138392, -14211510, -1191317, -6484327, -6621229, 18943490, +35785668, -12233141, 7607998, 16633335, -8094403, -7274601, 7111392, 20128902, 6719477, -15654619, +-19427748, -23786602, 12955769, 13240847, 32530082, -15392626, -14235669, 11237245, 19491636, 29994440, +-589484, -55823836, -11662447, 17884780, 18196166, 7984344, -10609643, -496069, -22009024, 3272765, +-9349607, 23094576, 33498060, -10114111, 1023276, -19523310, -20777442, -8207146, -42379516, -8659191, +-21392158, 18858128, -17054242, 19567334, 24675124, -49461380, -3797825, -20964272, 21492554, -8768713, +7800198, -15425912, 2852395, -13148506, 14926622, 16174310, 28385976, 26998702, 13769128, 25975426, +12452721, 1490891, 14148159, 8799851, -3501472, 11533598, -12483859, 6151467, -6185827, 5318780, +-15823196, 9564892, 494458, 7563975, -11529840, -6850473, 8185671, -3180960, -3569655, 13915157, +-10558640, -2588255, 11770358, 5531918, -7141994, -2463164, 5083094, 25732222, 14332306, 11184095, +15690589, 971200, 17025788, 5508296, 5563594, 8580808, 523986, 13808320, 4371203, -23925116, +-10611790, -6439230, -7676181, 2974265, -4665945, -11514270, -16417512, -26583700, -6292127, -14698452, +-27400280, -40860708, 19863150, 21465710, 12312061, -27240830, -37575060, -28481002, -16492674, 6924561, +-1455457, -36183488, -21942988, -24739012, 35083440, 11179263, 15161235, -10923712, -20310364, 44937168, +10852309, 14141180, -8778913, 2830384, 13014288, -8976482, 10300942, -3122441, 21136608, 30328912, +1123134, -24166170, -19736986, 24055574, 16172162, 21090974, 5854578, 5412196, -10975252, -4568235, +3275986, 14780056, 31408558, -110595, -59106804, -54470924, 619549, -13196287, 35198332, 36126044, +-40185324, -26892938, -16986058, 49964428, 44231720, -23902030, 6945499, -31348430, -30488900, 18635864, +-14097693, 335544, -4790499, -21713744, 15485505, 16173773, 12632573, 50592032, -37096708, -9808095, +-3540664, 13073344, 3995393, 20893942, -73938936, -42777876, 15350750, 23302346, 22782654, 6626061, +-24464670, -24789478, 352724, 14857902, 42601780, 10497437, -14273787, 4490925, -27698244, 17256642, +14865419, 973347, 23839752, 51328616, 12240120, -37507948, -19775104, -2581812, 4267050, 24816858, +21452824, 10262287, -11377905, -4554276, -7853348, -8832063, 22231824, -2578054, 1998770, -8836895, +21556978, -9989557, -4210142, -537945, 18700288, 8238821, 6620155, -3956739, -23638426, -8438537, +7610682, 18815714, 3192235, -26186416, -36371392, -30287036, -787590, 4379793, 5537824, 3620658, +-9974525, -7541963, 49510772, -32897302, 30923228, 30684320, 19726248, -71683008, -28685550, 23968602, +-19394998, 13857175, -5036386, -29787746, 19139448, 5711233, 5763309, -13179107, -47350940, -4519380, +-1360968, 158914, -6684580, -34581468, 25924422, -21377126, 44214004, -4678293, -3768297, 21474836, +16094853, -21116744, -1865626, -15989626, 23669564, 37119256, 28360742, -31344672, 7117835, -20981988, +18996104, -18227304, -7379291, 3080565, -1497870, 20167018, -18444738, -43514460, 11287174, -15575699, +16344498, 16945256, -54945516, -9359271, -10395968, 1992328, 61061552, -16452946, -44256416, -11805254, +38851200, 18584324, -23915988, -7902203, 24144158, -118648, 29783988, -44649408, -23460186, 26838714, +-27901718, -68066640, -19958176, -9295920, 77772192, -21206938, -39999568, 21325050, -46161236, 122080688, +11686606, -113466056, -30079266, -20056424, 80652504, 43567612, -50491636, -26745836, -525060, 59485296, +47591460, -7427609, -37176700, 14595909, -12483859, 53643068, -5054103, -26989038, -22176526, 35128536, +-27991912, 18186502, -53733800, -278636, -1911261, -3176128, -3008088, 11288248, -29672318, 28848222, +2558727, 21147346, 1020592, -34072512, -25972740, 19340238, 23105850, 35985920, 13623099, -3720516, +-23346906, 3089692, 6033356, -6259378, 1724966, 23567560, 3862249, -1169842, -26721140, 5125507, +19306414, 7009924, 981400, -7924215, -19158238, -21267068, -9867150, 6493454, -6277632, 9400610, +-8863202, -5409512, 3647501, 707596, 284542, -65521872, 18358838, -1025960, 22378390, 54216984, +17355962, 7482907, -30563524, -12655121, -30544196, -36544804, -12259447, 7208029, 20888036, 27675696, +-3111167, 16105054, 19474456, -16950626, -34417184, 18247168, 6538014, -27941984, -9515500, 26582626, +-9051107, -2954938, 24295556, 13644037, 10793790, 3403225, 13806709, -13208098, -31971736, -13880261, +9095130, -13077102, -7565585, 11726334, 773094, -22493280, 23454816, 5086852, -20861730, 2692945, +-5044439, 20216948, 11230266, -8128226, 9474161, -12425877, -28029494, 3778498, 6806987, -2521683, +54224, 5953899, -12251931, 3897146, -10492605, 6320045, 19977504, -2090575, 8725226, 9274445, +-7742216, 532039, -19090056, 6562173, 11240466, -34631932, 20113868, -21585432, 6805913, 1042066, +-113280, 9592273, 3855807, 22668300, 4116189, 6439767, -3283503, 11619497, -12179454, -7966091, +2789581, 1983738, -10659572, 3879966, -964757, -3050501, -6163278, 2242510, -1227287, 12294344, +-3153043, 1509681, 8754754, -6106907, 6078453, -3743064, 2123325, -6109054, -5386963, -6100464, +-1632088, -2715493, 4616553, 3357054, -14369887, -3872987, -4209605, 10048613, -5939403, 3791919, +1701344, -15935402, 5304822, 10435697, 665720, -3839701, 1714766, -4642323, -2385318, 3501472, +53103512, -1974611, -1726577, -14778446, -14455249, 10877005, -608812, 9408126, 195958, -5235565, +-6985228, 3544422, -9790915, 9900973, -9221832, 14448807, -11715597, 8394514, -9916543, -2271501, +-1590749, -9306657, -7061463, 2027761, -4169340, -2984466, -68719, -7018514, 920197, -1449552, +2214593, -1705639, 4051228, -14010183, 12690018, -4846334, -4168266, 9546102, -7732552, 437013, +-9656697, -8529268, 6137509, 5335960, -6791954, -4465692, 2716567, -525060, -11814381, 2930778, +2057826, -101469, 7729331, -2968896, -3349001, -3278671, -8078297, -2291365, 8430484, -9092983, +2292439, -4463545, -1131187, 469225, -2760053, 1873143, 22549, 5797132, -8618389, -856309, +5515812, -11206643, 6429566, -5114233, 40802, 4946729, -2493766, -5177046, 2250026, -1021665, +-1488743, -502511, -3650185, -220654, 3703873, -378494, -1806034, 519691, -3174518, 2024540, +1530619, 781147, -2576981, -900333, 3193845, -4296578, 4086662, -2047089, 1744831, 4454418, +-5604933, 1169305, 311922, -7153268, 1208496, -2390149, 2815351, -1156420, 142271, 4071629, +-2866354, 643708, -4576825, 600222, 573378, -1300838, -1165547, -721018, -1704565, 134218, +-904628, -3221, 3033858, -4752382, 1906966, -25081536, -41907068, 15437723, 134908688, 33542620, +74461312, -3099893, -72216656, -23687282, -71062920, -61036316, -21361020, -14854681, -4823249, 40169756, +54351200, 71464496, 90659784, 38878044, -23036594, -42120744, -88750128, -84697832, -34316788, -28434830, +-18692234, 36309652, 49912352, 29553670, 46285252, 55148452, 18859738, 14976551, 10475962, -28886876, +-13069049, -20744156, -44627932, -24908662, -33125472, -49488224, -26693758, 5906117, 5406827, 27330488, +66918812, 45488000, 38154880, 36848672, 11532524, 2540473, -3667902, -19423990, -27302034, -34915936, +-49502720, -44076564, -24404542, -7891466, -16632798, 13653164, 25862146, 21672942, 37857452, 41861972, +27134530, 24269786, 24041616, -3911105, -11590506, -6076305, -34097208, -28540058, -7118909, -28249074, +-29894046, -19194746, -26875220, -13300977, 7854422, 17096118, 31374200, 49896244, 31187906, 28610388, +31982474, 11615202, -3650722, -5971615, -16962436, -28450938, -29235306, -28164784, -30578020, -21518324, +-19514720, -16485695, -6593312, 7524783, 19127100, 29263760, 44532368, 46589120, 45706504, 38570952, +12400644, -10231149, -20601884, -33546378, -44077100, -50093816, -49730352, -39632884, -22121766, -5448703, +13857175, 40861780, 45739792, 45540612, 47982300, 39427264, 20939576, 6495601, -11060615, -32013076, +-44484052, -39504036, -36698884, -29142426, -13357348, 1131187, 11069741, 21948894, 25113748, 24494736, +19714974, 8796093, 4284230, 1563905, -3399467, -4204236, -3983045, -5583458, -6677064, -5368172, +-7371775, -5134097, -3984119, -2903398, -3385508, -1179505, -172872, 2091112, 2563559, 4687957, +5692979, 6900939, 5105106, 5247377, 3579855, 2268817, -804233, -1753957, -3803194, -4087198, +-5884105, -5468030, -5403606, -3854196, -3432753, -1069984, 374199, 2193655, 3015067, 5350456, +5149666, 5622112, 4379793, 3543885, 1340567, 1013612, -961536, -1573032, -4227322, -5602785, +-6182606, -4447439, -3918621, -1227824, 38655, 1388885, 1663226, 3213709, 3008625, 4273493, +3606699, 3796214, 2310156, 1578937, -874563, -1637456, -3441880, -3321620, -3776350, -2857227, +-3117073, -1535988, -957778, 1004486, 1697586, 3135863, 2666638, 3160559, 1772211, 1504849, +-61203, -348966, -1237488, -654983, -1475321, -850404, -1444183, -568009, -930397, 16106, +-350577, 532576, 37044, 731218, 77846, 665720, -14496, 563178, -163209, 400506, +-289910, 349503, -307090, 331786, -312996, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 3051038, -3178813, -2868501, -430034, 4394826, 1531693, -2373506, 547071, -2615098, -2204392, -1890859, --3933116, -1454383, 2503966, -261993, 1416266, -739808, -1068373, -1173600, -419833, 3295851, --2057826, 144418, -85899, 82141, 2733210, -153008, 1901060, 5783711, 4626754, 4521527, -2442763, 976568, -674847, -5471789, 2285460, -2082522, 3533684, 1166084, -1770063, 1568200, --2348810, -4751308, -1379221, -1875827, -4373351, 125091, -479963, -698469, -2014340, 218506, -4698158, 1990181, 3213709, -112743, 2001455, -1874753, -65498, 2359011, -1936493, 1559073, --2416456, -2704756, 333934, 5390184, 3658239, 2029909, -996432, 847719, 650151, 251792, --919123, -2158221, -3137474, -2386391, 137439, -2052458, -929324, -2204929, 774168, 262530, -1172526, -695785, 976031, 1224066, 1124208, 74088, 729608, -556735, -469225, -81604, --1268626, 1340567, 1218160, -199716, 1521492, 364535, 357019, -723165, -351114, -906238, -343597, 405874, 48318, -331249, 566936, -388695, -1173600, -416075, -764504, -116501, -306016, 238908, -1232656, 164819, 887448, 1994476, 1034550, -3459596, 8165807, -180926, -499827, -868657, -4301947, 3180960, -2240362, -2157147, -5013301, -3872987, -1619203, 3114388, -4491462, -909996, 2660732, -1034013, 4873178, 5044976, -10065793, 1843615, 57982, -988379, -3419868, 5361730, -1643362, -782221, 120259, -329639, -2547989, 2108829, -2568391, -2038499, --195421, 2688650, -1505923, -5665599, -2504503, -3850438, 466541, 345208, -5014911, -594853, --2179159, 1046898, -132607, -756451, 1254667, -1673427, 1725503, -2692945, 2665027, 3876745, -5967320, 2474438, -2577517, 2136209, 2517388, -929324, -6709813, 445066, 3529390, -2698850, -2046552, -3897146, -18790, -2484102, -6813429, -2076617, -3549791, 1741072, 2570538, -2299955, -1118839, -1076426, 3258270, 261993, 1921998, 2713883, -1120987, 1125818, 581431, 1151588, -2362769, -535797, 823023, 2920578, 1691143, 401579, 1775432, 320512, 790274, -112743, -537, -1572495, 884226, 1008244, 1362578, 910533, 340376, 433792, 86973, 511101, --162135, -434329, -76773, 1080184, 950262, 286152, 857383, 200253, 985695, 811749, -6718403, 1789391, -9036611, 3184718, 4697621, 1662689, -746787, 2328946, -5661841, 767189, -2570001, -1315871, 2487323, -426812, 3022046, 681289, -3806415, 2381559, 3562675, 3439732, --966905, 1624571, 1946157, 1283122, -10230075, 1407139, -4327180, -1329829, -1407139, 2365453, -1159641, -8420283, -2972117, -1912871, -1543504, 3377455, -3073586, -5900748, 1497870, 2689187, -1745904, -5869610, -2694555, 1841467, -5459441, -474057, -6037651, 866510, 3040300, -3148748, --895501, 3459059, 4493073, -10377178, -710280, -2899640, 3191698, 1261110, 572841, 873489, --2857227, 2615635, 2338610, -8059506, 6234682, -847182, 1579474, -4119948, -1655710, -3486440, --372052, 887985, -3157875, -4482872, 4027606, -1453846, 1696512, -234076, -745177, 1138703, -1409823, -1640141, -4069482, 2292976, 2150168, 523986, 1032940, -135828, 377420, 685047, -33286, 683974, 546535, -95026, 1656247, 226023, 1285269, 1449015, 150324, 2043331, -12885, 403190, 619012, 920197, 804233, 1022739, -1457068, 701690, -622770, 318364, -748935, 507343, 1272921, -399969, -289373, 914291, 1717987, -4269735, -4184909, -3311420, --2248416, 6873559, -2459406, 1014686, -5600101, 5934034, 302258, -3870303, -1131187, 3476239, --7144141, 2486249, -2170032, 1682017, 1052267, -3138547, -2379412, -8301098, -2345589, -9359807, -1138703, 2224256, -1099512, -1191853, -948651, 1522029, -3784403, -6643241, -3215857, -2383707, --1124208, 2570001, -1635846, 4108673, 1698660, 3171833, -4258997, -138513, -289910, -3395172, -887448, 2850785, -354872, -1643362, -4175782, -3687766, 2469069, 3913789, -204548, 7653095, -5909338, -5309117, -1457605, 115427, -5789079, -6430103, 9792525, -58519, 191663, 3199214, --6352794, -1960116, -4143033, 9853192, 2556043, 611496, -7841000, -6058588, 751082, -2434173, -4960687, -2478196, -132607, 1489280, -3123515, 1214402, 2964601, -4457639, -25233, -7173133, -719944, 2853469, -2179159, 1176821, 801011, 3685082, -586263, 688805, -779000, -22012, -1473174, 1705639, 1411971, -981937, 402116, 47782, 594853, 170188, 581968, -941672, -2228551, 143881, 588947, 472983, 656593, 666257, 595390, -485331, -664109, -389768, -439160, 1673427, 1750736, 455267, 758062, -1364726, -610422, -11350525, 5664525, 3270081, -5777268, -3077881, 3151969, 3374234, 5939403, 1459215, -11402064, 2885681, 459562, 4566087, -8223252, 481036, 3555159, 3187940, -6838125, 2440615, 602906, 992137, -1877975, -896574, -4199405, 2850785, 146029, -4114579, -75699, -1935957, -2181307, 6864969, 3123515, -231928, --935766, -8177618, -7084549, -8031589, 2129230, 2241973, -8404177, 651761, 546535, -8249022, -501974, 1341104, -1130650, 9606768, -1196685, -4632659, -1199907, 5543729, -472446, -8443906, -9224516, 4850629, -5898064, 4561256, 878858, 928250, -169114, 583042, -2299418, -4205847, --4057134, 7454453, -505196, -2090575, -357019, 5381594, -4935455, -8625368, 299574, 2050310, -1619203, -7529078, -3947075, 2998424, -693637, 4321811, 1610076, -1275605, -1278827, -1086090, --611496, 224412, 6746320, 4012573, 2435783, 2239289, 2604898, 4011500, -1882806, -547071, --2132988, -566936, 746251, 277562, -1180042, -1817308, 1984812, 388695, 895501, 54761, --1212255, 522912, 1051193, -2312303, -404264, 2014340, 420370, 206695, -876710, -170188, --566936, -946503, 265751, 1073205, 787590, -603443, 804233, 170188, 3456375, 13121125, -3940096, 10517301, -11575474, 416075, -5703717, 155156, 3873524, 4409858, -5938329, 2572686, --3431142, -3087545, -4122095, -6769406, -968515, -15902116, -131533, 5206574, -680215, -1114544, -1764158, -8360691, 2949569, -7975218, -2487860, 8141111, 1675037, 2785823, 212064, 2369748, -6991133, 6271726, 12167642, 6273337, -9171366, -804770, 10252624, -1472637, -7474317, -1178969, -965831, -3463354, 6874095, 5042292, -5876589, -1762547, 6592775, 6959458, -2477659, -4491462, -11112691, -4615479, -14944876, -10151692, 3311957, -15090904, -285078, -4547834, 88584, -1439888, --4191888, 5593658, 1626182, -1516124, -4904853, 4260071, -2932926, 7934952, 5465883, -2225330, --5276904, 1090922, 2100239, 697395, 312459, 1840930, -1088774, -5912560, -1686848, 8121783, --933082, -3368865, -870805, -1763084, -4209605, -4148402, -2262374, -2018098, 496606, -85899, -4103841, -405338, -1464047, 525597, 1474784, -1031866, 865436, -1457068, 2792803, -139050, -1719061, 205085, -2665564, -322123, -280247, -2862596, -748398, -1762547, 1290101, 31675, --423591, 913217, 443455, -334471, 511101, -3197603, 692564, 872415, -12783970, 6045704, --1086627, 3218541, 4296578, 6913287, 1601486, -6115497, 8329552, -3102040, 3732327, -3722126, -3117073, -578210, -15025943, -3136937, -2534031, -1788317, 1076426, -3634079, -2444373, 2000381, -3351685, 1126892, 8185134, 3742527, -7825968, -593242, 61203, -4445291, 9410273, -5614059, --5370857, 9848897, 10430328, -1302986, -77846, -6476811, 2375117, 1394791, -3329137, 1713692, -6475737, 3962644, 7778723, -1935420, -6032819, 3768297, 945430, 1847373, -7199439, -3762928, --4213363, 1695438, 4185446, 1505923, 1149978, 7421704, 8949638, 1318018, -4194573, 5058935, -4193499, -6293201, 915902, 1076426, -679679, 719944, -105227, 5305359, -543850, -4169340, -2156074, 6997576, 3154117, 4101694, 8725763, -5941014, 1094680, -2033130, 8281234, 4705674, -8866423, -4269735, -1095217, 1450088, -3104725, 440234, 903017, -1022202, 41339, 2026151, -2396055, -907849, 1323924, 895501, 3097208, 2680597, -331249, -251792, -1346472, 367757, --1357210, 707059, -2413772, 2397129, -10201, -964757, -6979, -231928, 126702, -889595, --1874753, 2666638, -308701, 417686, -2983392, -2500745, -637803, 2558190, -248034, -308164, -279173, -331786, 5341866, -11116986, -6671695, 4438849, -2615635, -10383620, 5277978, -5427765, --4759898, 6718403, -2044404, -2208687, -1673964, 1741609, 4956929, 2590402, 2662343, 2759517, --4146791, -2462090, -872415, 6053757, 3102040, -10612327, 3373160, 3324305, -4465156, 10006200, -9160092, 4946192, 345208, -3618510, -2362232, 549219, -3126736, -3724811, -6164352, 906775, --7037304, 5113696, 1950989, 75162, 1102733, 2704756, 2319819, 5473399, 8512088, -3216931, --13509283, -2340757, -9203041, 3181497, 1264868, -12210055, 4427038, -5118528, 15341623, 5107253, --9675488, -318901, 9758703, 5104032, -8012262, -4755603, 10209674, 5879274, -7100118, 8739185, --7286949, -9590125, 1480153, -14526653, 8769249, 9452149, -2171106, -8739185, -1575179, 3452617, -1774358, 1479079, 876710, 6778532, -9511742, 3073586, 10584410, 191126, 361314, -9314710, -4638028, 2619930, -8616778, -2135136, -4352413, -2046015, 335544, 2708514, 2152316, 319975, --2596845, 278636, -2782602, 1166084, 1649268, -338766, -1349157, -912144, 1691680, 554588, --550293, -1437203, -2779381, -299574, -2713883, 5420786, -5071820, 3221, -543850, 2090039, -1390496, -2899640, 882079, -885300, 4588099, -558346, 1291175, 156229, -2651069, 1100585, -548682, -312459, 2965138, -46708, -8703751, -6455873, 224412, -10485626, 49929, -24634858, --7730405, -2842195, -13434121, -4722854, -2796561, -5909875, -4538707, 3202435, -6462852, -12321724, -3302293, 7720204, -12553116, -3483755, 3901441, 6308233, 10875394, 6921877, 6417218, 7007239, -2561948, 12423193, -7366406, -3166465, 2659122, -6149857, 2368675, 3521873, 6534793, 856309, -10667088, 2236604, 2653216, 7347079, -3213709, -6293738, 144955, -9650255, -6141267, -11138461, --433255, -506269, -14616847, 5290326, -6603512, 3006477, -13802951, 1665374, -10437307, 15635828, -820876, -13917305, 16749836, 20484846, 5784784, -6849936, -5048734, 5326297, -1746978, -661962, -6085432, -9762461, 6407018, -10081899, 5383742, -4009889, -5652714, 2423972, 5407901, -2901787, --273804, 6320581, 1688996, -3093987, 3584150, -1540820, -5741835, 776852, 5434744, -1019518, --2096481, 2163590, 1606855, 4416837, 917512, 170188, 1932735, -1454920, 3104188, 796180, -2578054, 900333, 2056216, 1654099, 1684701, 1347546, -1843078, 2142115, -2492692, -2324651, -268972, 1415729, 495532, 723165, 1561221, 1033477, 157840, -791885, -1864016, 52613, --1961726, 5373541, -2612951, 4846871, 7318088, 988379, 6759742, -3856881, 10522133, -8200703, --7488276, -19982872, -4348118, -10400800, -24208584, 6011881, -13929653, -8585103, -11217918, 3017752, --21803402, 5768678, 1850057, -4283693, -424665, -6374269, -2161979, 5160403, -7394323, -5398237, -345208, 3913252, -6462852, -591095, 7533373, -12087649, -2724083, 6918119, -6611029, -493384, -113280, -1984812, 10194642, -8957691, 6074158, -4122632, 8300561, 8618926, -8810052, -11916924, -11118597, -1282585, 2459943, 2807835, 1043140, -2625836, 6281927, -3464965, -13635447, 3484292, -2834142, -11940009, -1277753, -4328790, 7171522, 8587787, 4340602, 1377074, -3366181, -8507256, -8664560, 5244155, 7754564, -614717, -12093554, -2923262, -1785096, -5383205, -2946885, -1498944, -3553012, 5325760, -4643397, -4067334, -12016245, -5807870, 2374580, 4896800, 1391569, -1101659, -5572183, 5130339, 3163780, 6317897, -1917703, 4939213, 2321967, 3355980, 626528, -28991, --3278134, -2610803, -562104, 1547262, -743029, -2895882, -3498251, -179315, -535797, 685584, --2363306, 512712, -2827699, 848793, 4860293, 1037772, -2706903, -2880313, 6172942, 3440806, --706522, -412317, -7693897, -916439, -38655, -6595459, 220654, -2695092, -1979443, 1527398, -2095407, 463320, -697395, -6038724, 29615410, 17015586, 1191853, -9438191, -22330072, -2783676, -10462540, -4956393, -8989367, -16837882, -926639, -3677029, 596464, -5812702, 5436892, -149250, -14666240, 5738077, -6103686, -490163, -2602750, 1051730, -3009698, 2970507, 9096741, -10698764, -2073932, -6470368, 4243965, -4626217, -7742753, -15220290, -1210107, 8618926, 2924336, -1954210, -3216931, -1183800, 8293045, 13034689, -4553739, -3044058, -15154255, -16506096, 4562329, 2380486, --6940667, -6074158, -13645111, -9448928, 5426691, -1831267, 39728, 636192, -1043140, 6183143, -3585761, -11304354, 485331, -10307385, -877247, -5587753, -3168075, 10825465, 22452478, 36903968, -1407676, 11832098, -11137924, -14263050, -19945292, -1109175, -53150, 3990025, 4245575, -2786897, --25216290, 10417980, -4273493, -3539590, 1603633, -6672232, 777926, -3653407, -10262824, 74088, --4097399, 41876, 1043677, 338766, 7317551, 1005022, 850940, -447213, 321586, -360240, -3154654, 6827388, 2056216, -297963, 1493038, 6185827, 192737, 25233, 2371359, -2119566, -798864, -5756867, 1976222, 2934000, -5335960, 5433134, 357556, 426276, -1560147, -6016713, --1893544, 2624225, 57982, -653909, -1457605, 3609920, -996969, 228170, 10808285, 18023830, --8914741, 36507, 3462281, -14695231, 135291, -9486509, -9197136, 13849122, -4075924, -3473018, --7442642, 15904801, 13973139, -1074, 22957674, 2586107, 7169374, 5055714, -6401649, -7495255, --11951283, -6291054, 2798171, 113817, 10287520, 803159, -1123671, -1872069, 7269232, -10506564, --25680684, -9001715, 7572564, 2376191, -2111513, -7649874, 454730, -12353937, -1858110, -11254962, --780073, -1408749, -7933342, 7603166, 3774203, 14441291, -11929809, 22370338, 6003291, -4351339, --7919383, -4064650, 3521873, 12905303, -3973919, 7384123, -11404749, 9215389, -10357314, -11651709, -11487964, -16665010, 10920491, 9178882, 17725866, -18050136, 13715441, -1711008, 12227235, 4778151, --18975702, -3317862, -4462471, 5291937, -10071698, 29869350, -1475858, -10542534, 4230006, 13805636, -9369471, 6467684, 7121056, -940598, 3388729, -1219771, -3966402, -2517388, 1044751, -130460, --3935801, 1129576, -1162326, -6056441, -1268089, -2311766, 2538863, 3197066, 1730335, -834297, -5886790, -955630, 3253438, 1307818, 4161823, 1570884, -2119030, -2622615, 703838, -311385, -2864743, -1163936, 263604, 2444373, -1491427, 4185446, -1990717, -2306398, 1154273, -1728724, -4354023, 1584306, -1295470, 2629594, 1289027, -12488691, -16746077, -34305516, -10530723, -20143396, -5616207, -916976, -6861211, -9975062, -9495099, -8581882, -9299678, -9110163, 957778, -7426536, --1336272, -16145319, -24774982, 30357902, -9457518, 16451335, -3142306, 4249870, 5243082, 8870181, -5850819, -1545651, -495532, -13103408, -2961917, -3115462, -8811125, -13741211, 5371394, -1547799, -19433116, -13450227, 360240, 26882200, -6475200, -22330072, -7201050, 890132, -10118943, 15731391, -7232188, -8632884, 6385006, 8454106, -5203353, -168041, 4252555, 10519986, -386547, -10351945, --10189273, 12590697, 9004399, -6607271, -14337138, 9160092, 10599442, -9447854, -12899397, 9052717, --16360067, 31329102, 6745246, -2551211, 1284732, 7669738, 1736777, -5506148, 515933, 2260227, -11257109, -7370701, 2261300, -22246320, -20037096, -2230699, 1206886, -2176475, -9719511, 7095286, -16565689, -449898, 4254702, -1541356, 3550327, 5020280, 5985574, -6384469, 7194607, -3301219, --1894618, 4775467, 8855686, -2590939, -8856759, 2550137, -802085, 1502702, -790274, -4735202, --1304060, -4893579, -3029026, -6044630, 6270653, 6426345, -3816079, 20938, 7713762, 2470680, --3233037, 1643362, 9660992, 6370510, 6976101, 7038378, 6217502, 2337536, 8863739, 4701916, -3714610, 3322157, 8345659, -12987444, 115964, 4706748, 3766686, -8523899, 20491826, 14322642, -29458644, 16161962, 11044508, 4205847, -25549686, -2153926, 3628711, -15164993, -3892314, 29000692, -2373506, -16864190, -16451872, 15015206, -22719840, -5960341, 1170916, 6107444, 2800856, -4380330, -7607461, -10343355, 167504, -2099165, -6317360, -1438814, -4332549, -14941117, 8076149, -12945568, -7803956, 6775311, 9056475, 1612760, 6081674, -5400385, 24382530, 3256122, -25416006, -22535694, -2311766, 10143102, 19881940, -6450504, -15153181, -6802155, -1778653, 2245194, 11799349, 2542084, --8819178, 26603028, -32285270, -5381594, 6456947, -22613002, -11438572, -5912560, 3653407, -36658084, --17074106, 26350162, -9648107, 7741142, -8221641, -29574072, -10889890, 14349486, -4042638, 5641977, -9423158, 18833968, -8588861, 2158221, -5252745, 11837467, 5676873, 5159330, 1107028, -355945, -668941, 10344429, 5612449, 6174553, -1217086, -98247, 4159139, -6717866, -5904507, 2878702, -12222403, 5711770, 4988068, -11396696, 7198365, 21809308, 290447, -56371, -7903814, 6049462, -1370632, -4839892, -6330782, 1111860, 6828461, 7727720, 5857262, -6476811, 4929549, -4262755, -5544266, -8390219, -4317516, -1496259, -4104915, -5358509, -1265942, -13783087, -12893492, 2469069, --502511, -1920924, 5220533, 132070, -821413, 433255, 5661304, 4986994, 2007897, 75699, -2788508, 3191161, 2444373, 3829500, -973884, 5212480, 14566918, -6051072, -47710644, -11932493, -2303713, 13532905, 12593381, 12041478, 11480984, 21609592, 38002408, -21669184, 15709380, -5261872, --1058173, -5339181, -31868120, -23235236, -4849018, -1108638, 6392522, 12671227, 15789910, -4759898, --910533, -7992398, -307090, -1156420, -537408, 17009144, 8541616, 5905580, 12441447, 15526844, --26999776, 13551159, -15850040, -19277424, -6187974, 13038447, 3266323, -12895639, 3997541, 1979443, -9104257, -529355, -26252450, -18153754, -21837762, -20970178, 2407866, 18074832, -3705483, 64472828, --42294692, -31180926, 18894098, -5240397, -13260712, -3919695, -3920232, 1118839, -39659728, 4562866, --3306588, 5821828, 29571386, -1663226, 10053445, 12036646, 13864154, 49753976, -18761490, 62801012, -16886738, -1234803, 7747048, 4044786, -26075820, -22229676, -874563, -5091684, 2736431, 10117332, -7196218, -3951370, -22427782, -17613660, 6781217, -11719355, 7488276, 9185324, 18992346, 19379966, -16850768, 3867618, 5584531, 243739, -1300301, 13266080, -2552821, -608812, 3643743, -17947058, --4831838, 8319352, -446677, -1338419, 11335492, 4990752, -17626008, 12403329, -10046465, -12869333, --7917772, -3598646, 2907156, 6154688, 5425618, -6587943, 8032663, 4151086, 5018670, 2973728, -6743636, -2352568, 3913789, -10511932, -2739116, -5480379, 1969243, 4513474, -28000502, 10099616, -45172856, 1161252, 47141024, 24688546, -2729989, -18278844, 53160956, 7851737, -8812736, 6759205, --11965242, -3655554, -1700807, -3348464, 6812355, 14722074, 10428181, 1879048, 6923488, -10719165, --10182294, 3156264, -3024194, 17383880, 19030464, 11989938, -4742181, 1153199, -22871774, -14462765, --4148939, -15807627, -24745990, -14829448, 11971684, -14457397, -43736188, -20288888, 13524315, -17718888, --12378633, 639413, -3097745, 20656646, 30472792, 39903468, -20987358, 11375758, -169114, 1357747, --8445516, -26316338, -52490944, -34585760, 18408766, -35037808, -18270254, 9665824, 17991618, -12910672, -20276004, 57814556, 12311524, 11298448, -43454332, -58369144, -12494597, -18074832, -31030602, -8766028, --25887378, 18770618, 10792179, 52479132, 21772262, -5883569, -10368588, -17986786, 12591770, 23968602, -47620448, 33354716, -22574884, -47667156, -23141820, -15051176, -28086938, -5051956, 24408836, 11824045, -30136712, 1534914, 21509196, 8723615, -6634114, -8674760, -9980430, 6053757, 13269301, 3520263, -17181480, 21361020, 13033078, 15326054, 7222525, 23067732, 20309290, 1151051, -107374, 10311680, -22897544, -1873143, -5716602, -3031710, 19591494, 6282464, 1254131, -5352603, 12386686, 9632001, --2608656, 8072928, 9889699, 5139465, -1728724, 2525441, 7191923, 1284732, -374736, -10878615, -23513336, 48384416, -26116622, 36764384, 28444494, -4330401, -8177618, -15928423, 4215511, 32801202, -23302882, 38398620, -17343614, -7206955, -8571144, -2063195, -11056320, 10242423, -13400298, 28217936, -11028402, -45676440, -20688858, 627065, 6027450, 20052128, -10358924, -17156246, 4263829, 5625871, --8284455, -8377871, 4247186, -12860743, -20928302, -8890045, 42348376, 18106508, 6392522, -21783538, --8045548, -18464602, 9939628, 21154862, 6106370, 1550483, 11435887, -7206955, 26648124, 15829639, -665720, 9314173, -1993402, 54861764, 10322417, -23171348, 7916699, 9585830, 4458176, 12511777, --275952, -22127672, 25370908, 5922760, 3517041, 10451266, 3791383, 62277, -17366164, 18954764, -20463908, 11205033, 60641716, 43933220, -24701430, -47524888, -34357592, -3201361, 3105798, -4798552, --41525356, -20019380, -15404974, -16606491, -17653390, 15101105, 10739029, -4205847, 1461900, -3585761, --23737748, 6581501, -5236102, -1209570, -24308978, -22334904, -5082557, 9515500, 10043781, 1394254, -10772852, 5082020, 13863081, 2173254, 1912334, -25370908, -16154446, 10798622, 1868311, -7039989, -12224014, 5626407, 1287417, -12236899, 10722386, 16186121, 10321343, 11730093, 13780939, -3338800, -15381352, 32955820, 24932822, 5809480, 2500745, -4306242, -6874632, -17066590, -22584012, 5521718, --8447127, -537945, 1131187, -1773822, -6098854, -3007014, -8282308, -56507812, -6669548, 13226352, -16296180, -13495324, 20214800, 5330592, -7386270, -21660594, 5182952, -5886253, -30549028, -10743861, --10503879, 1432909, -42267312, -34360276, -5185100, 20155744, -2303176, -7384123, -25360708, -391916, -22701586, 138513, -14851997, -9791989, -2783139, -9623411, 6040872, 6439767, -21384106, -25368224, -4351339, -1767379, 5807333, 39404716, -24117316, -3478387, -1009854, -40218612, -11303280, -29669634, --3961571, -3323231, 28372018, 30452392, 38933880, 10108206, 7054484, -15454903, -33043868, 481573, -14206678, -12525198, 47704200, 109369728, 106433584, 14601815, -67194760, -63053880, -23835994, -39957692, -130440840, 79513264, 51035484, 64786896, -485868, -35603668, -91963304, -60108604, -22393960, -5757941, -37867652, 74628816, 67759552, -8768713, -54933168, -34412888, -49687404, -40308268, 7617662, 53860500, -80249320, 30114700, -3718368, 3715147, -29950418, -36881420, -35334696, 11844983, 6228777, 8681740, -32613298, 16402480, -2624225, -21176336, -17140678, -12378633, -27453430, -6238440, 13059385, -11085847, -1387274, -4451734, 20159502, 14089640, -25433186, -16814796, -52072720, -43009264, -37019932, 23604066, -43419436, 15726023, 11795054, -16002511, -26593364, -83255792, -60437708, -37234144, 7901129, 22505628, -15557445, 2966212, -29560112, -25854630, -47259672, -80293880, -30499100, 8877161, 24329916, 40490804, -19937776, -402116, -21438330, -8649527, -13824963, 580357, 30331060, -29701310, 34021508, 5187247, -4750771, -53274776, -15759846, 44768056, -29563334, 11606075, 1184337, -11398306, 15284715, 4235375, -25607668, 37629820, -21502216, -31319438, 9114994, -19464792, 25403658, -32678258, -15462956, -21034602, -3543885, -6428493, -17157320, 7310035, 38056096, -29918206, -30762166, -24652038, -6182606, -7956964, -50694036, 1975148, -202400, -49718004, -11264089, 3499862, 42815456, 16955458, -6055367, -71229888, --48875656, 46486040, 53251152, 49058192, -21610128, -118124488, -21605296, 51280836, 45289892, 5395016, --12019466, 6108517, -45676440, -29492466, 17540110, -15276125, 16041703, -10050760, 3574487, 48091824, --35149476, -20815560, 42736536, 30862562, 63643900, 24783572, -80986976, 24381992, 91071024, 17687212, -46989088, 9865003, -23313082, -2295123, 58636504, 37513856, 77306728, -100787312, 15403363, -2249489, --9389335, 37713572, 2371896, -53191560, 6266358, -3894999, -8895951, 5958731, 1482301, -33224794, -29317984, -14723148, 950262, -301185, -5753109, -342524, 5890011, -10501732, -9714679, -18964428, --23472534, 23034984, 537945, 7329362, 22932442, -25945360, 13296682, -2748242, -42030012, -1692754, -15444166, 45407468, -10680510, -67647344, -5948530, 29444148, 10231686, 25780004, -19894288, -20286204, --22069152, 9056475, -2352568, 14934675, -23378580, 10574209, 8338679, 5568962, -26137024, 841814, -7994545, 17801566, -5888937, 2112587, -14991583, 4180077, -8034273, 14867029, -864899, 11423002, --2007360, 3389266, -16766479, 521302, 81068, 17936320, -8945343, 5769215, -18122078, 978179, --449898, 14801531, -3222836, 5930276, -58283780, 6589017, 10420664, 5558762, 57459684, 9682467, --4315369, -36682240, -6273874, -3606699, -8597451, -363462, -6944962, 14704357, 6860137, -10812580, --1854352, 22820234, 70330, -1282048, 2423972, -5710696, -9794136, 12806519, 11321534, 8595303, --14266271, 7502234, 21348134, 8374113, -1225139, 13772350, -2505577, -16336982, 4322348, 4144107, --13159780, -14302241, 14252312, 13879724, -13697188, 8782671, 8478802, -117038, -4988068, 106300, -10836739, -594316, -12098923, 6302865, 7384123, -22471806, 5750425, 16626892, 5439576, -14607721, -2279017, 10322954, -18931142, 5151277, 8875013, 3754338, -4922570, -18043694, 21252036, -22992570, --2029372, 22145388, 361851, -3806952, 490163, -20792474, 9210020, -295279, 11885248, 22024592, --9959492, -1571958, -12721156, 16848620, -3526168, -1868311, 17262548, -22526566, -9910637, 12528956, -10212895, 4495757, -18326626, 6351720, -4027069, -1135482, 8790187, 6698002, 1259499, -4649302, --2346126, 868657, 4974109, -15981573, 11658152, 2397666, -2223183, 4536559, -2097018, 10142565, --15050639, -2706366, 311385, 907849, 1502702, 6988986, 4612795, -25538950, 13518946, -2706366, --2971044, -1038845, 5202816, 7016366, -6333466, -2530273, 11894912, -10147397, -1304596, -7755101, -5657009, 53880900, 4692789, -6545530, -18042084, -11944841, 6274411, -8003672, 6908455, -10691784, --891743, 8551817, -4868346, 4028143, 3886946, -14914811, 4077535, -4877472, -3299072, -12293807, -3421478, -3477313, -7812546, -3613141, 5890548, -5367636, -5375152, 7592429, -8492761, 4267587, -7157563, -14960982, 14680735, -3738769, -17662516, 9329743, 9219684, -8215736, 2782065, 5312875, --7506529, -6671695, -30602, 977105, 4715874, -2437394, -985695, -7422241, 6707665, -5820755, --1960653, 8497593, -10381473, 2943663, -1960116, 537, -4941897, -6669011, -2804077, 11552925, --8022999, -3050501, 1767916, 2426657, 226560, -7057705, 5236102, -3185792, -6171868, -214212, --11223823, 16199006, -7291781, 3245922, 3467649, -3388729, 5512591, -9710921, -8002598, 9837623, --4982699, -6755447, 6498286, -497679, 1719598, -4524748, 1048509, -1047435, 2896956, -3624953, --2923262, 3686693, -2313377, -2662343, -837519, 2300492, -1682017, -285078, -1394254, 560493, -2109903, -3238405, -3337190, 9229885, -2887829, -3404835, 2763812, -1144072, 2557116, -7543037, -348966, -1321776, -383863, -2059974, 8568460, 32212, -7832947, 2430952, 689879, -416075, --95026, 3307662, -2353642, -2296197, -1138703, -2080912, -1166084, 871878, -2570538, -149250, -550830, -426276, -26924614, -43533252, 19808390, 150964880, 22950158, 75496400, -17844516, -76489072, --28005334, -74539160, -49331456, -15467251, -8367133, 3696356, 44215076, 53475564, 73899208, 73679624, -23216446, -28929290, -47203840, -86189256, -66285304, -34646964, -13700946, -8682813, 26505316, 44884556, -34419868, 47284904, 45532560, 16986058, 14657650, 5738077, -33583960, -12269648, -28896540, -49605800, --30228516, -28915868, -43283068, -9030706, 20010252, 15474767, 43853764, 57821536, 29873646, 38567732, -28762322, -3905736, -1402844, -2551211, -31161062, -38048040, -34211024, -51158968, -43852688, -15299747, --2707977, 6361921, 35465692, 32928978, 31448824, 39946416, 29573534, 10370735, 18640158, 10455024, --11716134, -5360656, -21543020, -44891000, -27226872, -25402048, -35612796, -16935592, -11501386, -19787452, -16739098, 32068910, 36714456, 58931784, 55248312, 23538568, 13623099, -607201, -20195474, -23659902, --24696598, -35616552, -32888712, -29924648, -27705760, -17071422, -6964827, 114890, 13319230, 31664646, -39142184, 36679020, 43939664, 30680026, 14680735, 6418292, -5219459, -22428856, -25631828, -35418984, --46540804, -46643344, -37297496, -30897994, -4825933, 18759344, 41471668, 55892020, 60211684, 46755552, -30258044, 13627931, -3714610, -23162758, -34282964, -46044196, -45962056, -32665910, -21626770, -6379637, -8260833, 16751446, 21894670, 27651536, 23643258, 14987825, 12470974, 4644471, -334471, -4184372, --5699422, -7177427, -7224672, -10187662, -8482024, -6447283, -5515812, -5310727, -3599183, -3301756, --688269, 1966558, 5734318, 7007776, 9283572, 9989557, 10385768, 6591164, 3959960, 852014, --1174137, -5822902, -8022462, -10578504, -10247255, -8760660, -5264020, -3508452, -652835, 1043140, -5143760, 7254200, 9100499, 7361574, 7191386, 4971962, 3288334, 725313, -238371, -3233037, --4668093, -6922951, -7361574, -7902203, -5450314, -3702262, -180926, 1221918, 3981972, 5010616, -6284074, 4776541, 5083094, 3544422, 2928631, 493384, -738198, -2879239, -3099893, -4439386, --3847754, -4268661, -3074660, -2729989, -552440, 130997, 2287607, 2762201, 4207458, 3472481, -3717831, 1727651, 1124745, -486405, -272730, -1509144, -1328219, -2576444, -2024540, -2629594, --1525250, -1627256, 6442, 179852, 1654636, 1283658, 1989107, 1042603, 1538135, 414464, -799938, -340376, 139586, -752156, -92342, -883690, -73014, -737124, 133144, -539018, -293668, -394063, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +3178813, -2868501, -430034, 4394826, 1531693, -2373506, 547071, -2615098, -2204392, -1890859, +-3933116, -1454383, 2503966, -261993, 1416266, -739808, -1068373, -1173600, -419833, 3295851, +-2057826, 144418, -85899, 82141, 2733210, -153008, 1901060, 5783711, 4626754, 4521527, +2442763, 976568, -674847, -5471789, 2285460, -2082522, 3533684, 1166084, -1770063, 1568200, +-2348810, -4751308, -1379221, -1875827, -4373351, 125091, -479963, -698469, -2014340, 218506, +4698158, 1990181, 3213709, -112743, 2001455, -1874753, -65498, 2359011, -1936493, 1559073, +-2416456, -2704756, 333934, 5390184, 3658239, 2029909, -996432, 847719, 650151, 251792, +-919123, -2158221, -3137474, -2386391, 137439, -2052458, -929324, -2204929, 774168, 262530, +1172526, -695785, 976031, 1224066, 1124208, 74088, 729608, -556735, -469225, -81604, +-1268626, 1340567, 1218160, -199716, 1521492, 364535, 357019, -723165, -351114, -906238, +343597, 405874, 48318, -331249, 566936, -388695, -1173600, -416075, -764504, -116501, +306016, 238908, -1232656, 164819, 887448, 1994476, 1034550, -3459596, 8165807, -180926, +499827, -868657, -4301947, 3180960, -2240362, -2157147, -5013301, -3872987, -1619203, 3114388, +4491462, -909996, 2660732, -1034013, 4873178, 5044976, -10065793, 1843615, 57982, -988379, +3419868, 5361730, -1643362, -782221, 120259, -329639, -2547989, 2108829, -2568391, -2038499, +-195421, 2688650, -1505923, -5665599, -2504503, -3850438, 466541, 345208, -5014911, -594853, +-2179159, 1046898, -132607, -756451, 1254667, -1673427, 1725503, -2692945, 2665027, 3876745, +5967320, 2474438, -2577517, 2136209, 2517388, -929324, -6709813, 445066, 3529390, -2698850, +2046552, -3897146, -18790, -2484102, -6813429, -2076617, -3549791, 1741072, 2570538, -2299955, +1118839, -1076426, 3258270, 261993, 1921998, 2713883, -1120987, 1125818, 581431, 1151588, +2362769, -535797, 823023, 2920578, 1691143, 401579, 1775432, 320512, 790274, -112743, +537, -1572495, 884226, 1008244, 1362578, 910533, 340376, 433792, 86973, 511101, +-162135, -434329, -76773, 1080184, 950262, 286152, 857383, 200253, 985695, 811749, +6718403, 1789391, -9036611, 3184718, 4697621, 1662689, -746787, 2328946, -5661841, 767189, +2570001, -1315871, 2487323, -426812, 3022046, 681289, -3806415, 2381559, 3562675, 3439732, +-966905, 1624571, 1946157, 1283122, -10230075, 1407139, -4327180, -1329829, -1407139, 2365453, +1159641, -8420283, -2972117, -1912871, -1543504, 3377455, -3073586, -5900748, 1497870, 2689187, +1745904, -5869610, -2694555, 1841467, -5459441, -474057, -6037651, 866510, 3040300, -3148748, +-895501, 3459059, 4493073, -10377178, -710280, -2899640, 3191698, 1261110, 572841, 873489, +-2857227, 2615635, 2338610, -8059506, 6234682, -847182, 1579474, -4119948, -1655710, -3486440, +-372052, 887985, -3157875, -4482872, 4027606, -1453846, 1696512, -234076, -745177, 1138703, +1409823, -1640141, -4069482, 2292976, 2150168, 523986, 1032940, -135828, 377420, 685047, +33286, 683974, 546535, -95026, 1656247, 226023, 1285269, 1449015, 150324, 2043331, +12885, 403190, 619012, 920197, 804233, 1022739, -1457068, 701690, -622770, 318364, +748935, 507343, 1272921, -399969, -289373, 914291, 1717987, -4269735, -4184909, -3311420, +-2248416, 6873559, -2459406, 1014686, -5600101, 5934034, 302258, -3870303, -1131187, 3476239, +-7144141, 2486249, -2170032, 1682017, 1052267, -3138547, -2379412, -8301098, -2345589, -9359807, +1138703, 2224256, -1099512, -1191853, -948651, 1522029, -3784403, -6643241, -3215857, -2383707, +-1124208, 2570001, -1635846, 4108673, 1698660, 3171833, -4258997, -138513, -289910, -3395172, +887448, 2850785, -354872, -1643362, -4175782, -3687766, 2469069, 3913789, -204548, 7653095, +5909338, -5309117, -1457605, 115427, -5789079, -6430103, 9792525, -58519, 191663, 3199214, +-6352794, -1960116, -4143033, 9853192, 2556043, 611496, -7841000, -6058588, 751082, -2434173, +4960687, -2478196, -132607, 1489280, -3123515, 1214402, 2964601, -4457639, -25233, -7173133, +719944, 2853469, -2179159, 1176821, 801011, 3685082, -586263, 688805, -779000, -22012, +1473174, 1705639, 1411971, -981937, 402116, 47782, 594853, 170188, 581968, -941672, +2228551, 143881, 588947, 472983, 656593, 666257, 595390, -485331, -664109, -389768, +439160, 1673427, 1750736, 455267, 758062, -1364726, -610422, -11350525, 5664525, 3270081, +5777268, -3077881, 3151969, 3374234, 5939403, 1459215, -11402064, 2885681, 459562, 4566087, +8223252, 481036, 3555159, 3187940, -6838125, 2440615, 602906, 992137, -1877975, -896574, +4199405, 2850785, 146029, -4114579, -75699, -1935957, -2181307, 6864969, 3123515, -231928, +-935766, -8177618, -7084549, -8031589, 2129230, 2241973, -8404177, 651761, 546535, -8249022, +501974, 1341104, -1130650, 9606768, -1196685, -4632659, -1199907, 5543729, -472446, -8443906, +9224516, 4850629, -5898064, 4561256, 878858, 928250, -169114, 583042, -2299418, -4205847, +-4057134, 7454453, -505196, -2090575, -357019, 5381594, -4935455, -8625368, 299574, 2050310, +1619203, -7529078, -3947075, 2998424, -693637, 4321811, 1610076, -1275605, -1278827, -1086090, +-611496, 224412, 6746320, 4012573, 2435783, 2239289, 2604898, 4011500, -1882806, -547071, +-2132988, -566936, 746251, 277562, -1180042, -1817308, 1984812, 388695, 895501, 54761, +-1212255, 522912, 1051193, -2312303, -404264, 2014340, 420370, 206695, -876710, -170188, +-566936, -946503, 265751, 1073205, 787590, -603443, 804233, 170188, 3456375, 13121125, +3940096, 10517301, -11575474, 416075, -5703717, 155156, 3873524, 4409858, -5938329, 2572686, +-3431142, -3087545, -4122095, -6769406, -968515, -15902116, -131533, 5206574, -680215, -1114544, +1764158, -8360691, 2949569, -7975218, -2487860, 8141111, 1675037, 2785823, 212064, 2369748, +6991133, 6271726, 12167642, 6273337, -9171366, -804770, 10252624, -1472637, -7474317, -1178969, +965831, -3463354, 6874095, 5042292, -5876589, -1762547, 6592775, 6959458, -2477659, -4491462, +11112691, -4615479, -14944876, -10151692, 3311957, -15090904, -285078, -4547834, 88584, -1439888, +-4191888, 5593658, 1626182, -1516124, -4904853, 4260071, -2932926, 7934952, 5465883, -2225330, +-5276904, 1090922, 2100239, 697395, 312459, 1840930, -1088774, -5912560, -1686848, 8121783, +-933082, -3368865, -870805, -1763084, -4209605, -4148402, -2262374, -2018098, 496606, -85899, +4103841, -405338, -1464047, 525597, 1474784, -1031866, 865436, -1457068, 2792803, -139050, +1719061, 205085, -2665564, -322123, -280247, -2862596, -748398, -1762547, 1290101, 31675, +-423591, 913217, 443455, -334471, 511101, -3197603, 692564, 872415, -12783970, 6045704, +-1086627, 3218541, 4296578, 6913287, 1601486, -6115497, 8329552, -3102040, 3732327, -3722126, +3117073, -578210, -15025943, -3136937, -2534031, -1788317, 1076426, -3634079, -2444373, 2000381, +3351685, 1126892, 8185134, 3742527, -7825968, -593242, 61203, -4445291, 9410273, -5614059, +-5370857, 9848897, 10430328, -1302986, -77846, -6476811, 2375117, 1394791, -3329137, 1713692, +6475737, 3962644, 7778723, -1935420, -6032819, 3768297, 945430, 1847373, -7199439, -3762928, +-4213363, 1695438, 4185446, 1505923, 1149978, 7421704, 8949638, 1318018, -4194573, 5058935, +4193499, -6293201, 915902, 1076426, -679679, 719944, -105227, 5305359, -543850, -4169340, +2156074, 6997576, 3154117, 4101694, 8725763, -5941014, 1094680, -2033130, 8281234, 4705674, +8866423, -4269735, -1095217, 1450088, -3104725, 440234, 903017, -1022202, 41339, 2026151, +2396055, -907849, 1323924, 895501, 3097208, 2680597, -331249, -251792, -1346472, 367757, +-1357210, 707059, -2413772, 2397129, -10201, -964757, -6979, -231928, 126702, -889595, +-1874753, 2666638, -308701, 417686, -2983392, -2500745, -637803, 2558190, -248034, -308164, +279173, -331786, 5341866, -11116986, -6671695, 4438849, -2615635, -10383620, 5277978, -5427765, +-4759898, 6718403, -2044404, -2208687, -1673964, 1741609, 4956929, 2590402, 2662343, 2759517, +-4146791, -2462090, -872415, 6053757, 3102040, -10612327, 3373160, 3324305, -4465156, 10006200, +9160092, 4946192, 345208, -3618510, -2362232, 549219, -3126736, -3724811, -6164352, 906775, +-7037304, 5113696, 1950989, 75162, 1102733, 2704756, 2319819, 5473399, 8512088, -3216931, +-13509283, -2340757, -9203041, 3181497, 1264868, -12210055, 4427038, -5118528, 15341623, 5107253, +-9675488, -318901, 9758703, 5104032, -8012262, -4755603, 10209674, 5879274, -7100118, 8739185, +-7286949, -9590125, 1480153, -14526653, 8769249, 9452149, -2171106, -8739185, -1575179, 3452617, +1774358, 1479079, 876710, 6778532, -9511742, 3073586, 10584410, 191126, 361314, -9314710, +4638028, 2619930, -8616778, -2135136, -4352413, -2046015, 335544, 2708514, 2152316, 319975, +-2596845, 278636, -2782602, 1166084, 1649268, -338766, -1349157, -912144, 1691680, 554588, +-550293, -1437203, -2779381, -299574, -2713883, 5420786, -5071820, 3221, -543850, 2090039, +1390496, -2899640, 882079, -885300, 4588099, -558346, 1291175, 156229, -2651069, 1100585, +548682, -312459, 2965138, -46708, -8703751, -6455873, 224412, -10485626, 49929, -24634858, +-7730405, -2842195, -13434121, -4722854, -2796561, -5909875, -4538707, 3202435, -6462852, -12321724, +3302293, 7720204, -12553116, -3483755, 3901441, 6308233, 10875394, 6921877, 6417218, 7007239, +2561948, 12423193, -7366406, -3166465, 2659122, -6149857, 2368675, 3521873, 6534793, 856309, +10667088, 2236604, 2653216, 7347079, -3213709, -6293738, 144955, -9650255, -6141267, -11138461, +-433255, -506269, -14616847, 5290326, -6603512, 3006477, -13802951, 1665374, -10437307, 15635828, +820876, -13917305, 16749836, 20484846, 5784784, -6849936, -5048734, 5326297, -1746978, -661962, +6085432, -9762461, 6407018, -10081899, 5383742, -4009889, -5652714, 2423972, 5407901, -2901787, +-273804, 6320581, 1688996, -3093987, 3584150, -1540820, -5741835, 776852, 5434744, -1019518, +-2096481, 2163590, 1606855, 4416837, 917512, 170188, 1932735, -1454920, 3104188, 796180, +2578054, 900333, 2056216, 1654099, 1684701, 1347546, -1843078, 2142115, -2492692, -2324651, +268972, 1415729, 495532, 723165, 1561221, 1033477, 157840, -791885, -1864016, 52613, +-1961726, 5373541, -2612951, 4846871, 7318088, 988379, 6759742, -3856881, 10522133, -8200703, +-7488276, -19982872, -4348118, -10400800, -24208584, 6011881, -13929653, -8585103, -11217918, 3017752, +-21803402, 5768678, 1850057, -4283693, -424665, -6374269, -2161979, 5160403, -7394323, -5398237, +345208, 3913252, -6462852, -591095, 7533373, -12087649, -2724083, 6918119, -6611029, -493384, +113280, -1984812, 10194642, -8957691, 6074158, -4122632, 8300561, 8618926, -8810052, -11916924, +11118597, -1282585, 2459943, 2807835, 1043140, -2625836, 6281927, -3464965, -13635447, 3484292, +2834142, -11940009, -1277753, -4328790, 7171522, 8587787, 4340602, 1377074, -3366181, -8507256, +8664560, 5244155, 7754564, -614717, -12093554, -2923262, -1785096, -5383205, -2946885, -1498944, +3553012, 5325760, -4643397, -4067334, -12016245, -5807870, 2374580, 4896800, 1391569, -1101659, +5572183, 5130339, 3163780, 6317897, -1917703, 4939213, 2321967, 3355980, 626528, -28991, +-3278134, -2610803, -562104, 1547262, -743029, -2895882, -3498251, -179315, -535797, 685584, +-2363306, 512712, -2827699, 848793, 4860293, 1037772, -2706903, -2880313, 6172942, 3440806, +-706522, -412317, -7693897, -916439, -38655, -6595459, 220654, -2695092, -1979443, 1527398, +2095407, 463320, -697395, -6038724, 29615410, 17015586, 1191853, -9438191, -22330072, -2783676, +10462540, -4956393, -8989367, -16837882, -926639, -3677029, 596464, -5812702, 5436892, -149250, +14666240, 5738077, -6103686, -490163, -2602750, 1051730, -3009698, 2970507, 9096741, -10698764, +2073932, -6470368, 4243965, -4626217, -7742753, -15220290, -1210107, 8618926, 2924336, -1954210, +3216931, -1183800, 8293045, 13034689, -4553739, -3044058, -15154255, -16506096, 4562329, 2380486, +-6940667, -6074158, -13645111, -9448928, 5426691, -1831267, 39728, 636192, -1043140, 6183143, +3585761, -11304354, 485331, -10307385, -877247, -5587753, -3168075, 10825465, 22452478, 36903968, +1407676, 11832098, -11137924, -14263050, -19945292, -1109175, -53150, 3990025, 4245575, -2786897, +-25216290, 10417980, -4273493, -3539590, 1603633, -6672232, 777926, -3653407, -10262824, 74088, +-4097399, 41876, 1043677, 338766, 7317551, 1005022, 850940, -447213, 321586, -360240, +3154654, 6827388, 2056216, -297963, 1493038, 6185827, 192737, 25233, 2371359, -2119566, +798864, -5756867, 1976222, 2934000, -5335960, 5433134, 357556, 426276, -1560147, -6016713, +-1893544, 2624225, 57982, -653909, -1457605, 3609920, -996969, 228170, 10808285, 18023830, +-8914741, 36507, 3462281, -14695231, 135291, -9486509, -9197136, 13849122, -4075924, -3473018, +-7442642, 15904801, 13973139, -1074, 22957674, 2586107, 7169374, 5055714, -6401649, -7495255, +-11951283, -6291054, 2798171, 113817, 10287520, 803159, -1123671, -1872069, 7269232, -10506564, +-25680684, -9001715, 7572564, 2376191, -2111513, -7649874, 454730, -12353937, -1858110, -11254962, +-780073, -1408749, -7933342, 7603166, 3774203, 14441291, -11929809, 22370338, 6003291, -4351339, +-7919383, -4064650, 3521873, 12905303, -3973919, 7384123, -11404749, 9215389, -10357314, -11651709, +11487964, -16665010, 10920491, 9178882, 17725866, -18050136, 13715441, -1711008, 12227235, 4778151, +-18975702, -3317862, -4462471, 5291937, -10071698, 29869350, -1475858, -10542534, 4230006, 13805636, +9369471, 6467684, 7121056, -940598, 3388729, -1219771, -3966402, -2517388, 1044751, -130460, +-3935801, 1129576, -1162326, -6056441, -1268089, -2311766, 2538863, 3197066, 1730335, -834297, +5886790, -955630, 3253438, 1307818, 4161823, 1570884, -2119030, -2622615, 703838, -311385, +2864743, -1163936, 263604, 2444373, -1491427, 4185446, -1990717, -2306398, 1154273, -1728724, +4354023, 1584306, -1295470, 2629594, 1289027, -12488691, -16746077, -34305516, -10530723, -20143396, +5616207, -916976, -6861211, -9975062, -9495099, -8581882, -9299678, -9110163, 957778, -7426536, +-1336272, -16145319, -24774982, 30357902, -9457518, 16451335, -3142306, 4249870, 5243082, 8870181, +5850819, -1545651, -495532, -13103408, -2961917, -3115462, -8811125, -13741211, 5371394, -1547799, +19433116, -13450227, 360240, 26882200, -6475200, -22330072, -7201050, 890132, -10118943, 15731391, +7232188, -8632884, 6385006, 8454106, -5203353, -168041, 4252555, 10519986, -386547, -10351945, +-10189273, 12590697, 9004399, -6607271, -14337138, 9160092, 10599442, -9447854, -12899397, 9052717, +-16360067, 31329102, 6745246, -2551211, 1284732, 7669738, 1736777, -5506148, 515933, 2260227, +11257109, -7370701, 2261300, -22246320, -20037096, -2230699, 1206886, -2176475, -9719511, 7095286, +16565689, -449898, 4254702, -1541356, 3550327, 5020280, 5985574, -6384469, 7194607, -3301219, +-1894618, 4775467, 8855686, -2590939, -8856759, 2550137, -802085, 1502702, -790274, -4735202, +-1304060, -4893579, -3029026, -6044630, 6270653, 6426345, -3816079, 20938, 7713762, 2470680, +-3233037, 1643362, 9660992, 6370510, 6976101, 7038378, 6217502, 2337536, 8863739, 4701916, +3714610, 3322157, 8345659, -12987444, 115964, 4706748, 3766686, -8523899, 20491826, 14322642, +29458644, 16161962, 11044508, 4205847, -25549686, -2153926, 3628711, -15164993, -3892314, 29000692, +2373506, -16864190, -16451872, 15015206, -22719840, -5960341, 1170916, 6107444, 2800856, -4380330, +7607461, -10343355, 167504, -2099165, -6317360, -1438814, -4332549, -14941117, 8076149, -12945568, +7803956, 6775311, 9056475, 1612760, 6081674, -5400385, 24382530, 3256122, -25416006, -22535694, +2311766, 10143102, 19881940, -6450504, -15153181, -6802155, -1778653, 2245194, 11799349, 2542084, +-8819178, 26603028, -32285270, -5381594, 6456947, -22613002, -11438572, -5912560, 3653407, -36658084, +-17074106, 26350162, -9648107, 7741142, -8221641, -29574072, -10889890, 14349486, -4042638, 5641977, +9423158, 18833968, -8588861, 2158221, -5252745, 11837467, 5676873, 5159330, 1107028, -355945, +668941, 10344429, 5612449, 6174553, -1217086, -98247, 4159139, -6717866, -5904507, 2878702, +12222403, 5711770, 4988068, -11396696, 7198365, 21809308, 290447, -56371, -7903814, 6049462, +1370632, -4839892, -6330782, 1111860, 6828461, 7727720, 5857262, -6476811, 4929549, -4262755, +5544266, -8390219, -4317516, -1496259, -4104915, -5358509, -1265942, -13783087, -12893492, 2469069, +-502511, -1920924, 5220533, 132070, -821413, 433255, 5661304, 4986994, 2007897, 75699, +2788508, 3191161, 2444373, 3829500, -973884, 5212480, 14566918, -6051072, -47710644, -11932493, +2303713, 13532905, 12593381, 12041478, 11480984, 21609592, 38002408, -21669184, 15709380, -5261872, +-1058173, -5339181, -31868120, -23235236, -4849018, -1108638, 6392522, 12671227, 15789910, -4759898, +-910533, -7992398, -307090, -1156420, -537408, 17009144, 8541616, 5905580, 12441447, 15526844, +-26999776, 13551159, -15850040, -19277424, -6187974, 13038447, 3266323, -12895639, 3997541, 1979443, +9104257, -529355, -26252450, -18153754, -21837762, -20970178, 2407866, 18074832, -3705483, 64472828, +-42294692, -31180926, 18894098, -5240397, -13260712, -3919695, -3920232, 1118839, -39659728, 4562866, +-3306588, 5821828, 29571386, -1663226, 10053445, 12036646, 13864154, 49753976, -18761490, 62801012, +16886738, -1234803, 7747048, 4044786, -26075820, -22229676, -874563, -5091684, 2736431, 10117332, +7196218, -3951370, -22427782, -17613660, 6781217, -11719355, 7488276, 9185324, 18992346, 19379966, +16850768, 3867618, 5584531, 243739, -1300301, 13266080, -2552821, -608812, 3643743, -17947058, +-4831838, 8319352, -446677, -1338419, 11335492, 4990752, -17626008, 12403329, -10046465, -12869333, +-7917772, -3598646, 2907156, 6154688, 5425618, -6587943, 8032663, 4151086, 5018670, 2973728, +6743636, -2352568, 3913789, -10511932, -2739116, -5480379, 1969243, 4513474, -28000502, 10099616, +45172856, 1161252, 47141024, 24688546, -2729989, -18278844, 53160956, 7851737, -8812736, 6759205, +-11965242, -3655554, -1700807, -3348464, 6812355, 14722074, 10428181, 1879048, 6923488, -10719165, +-10182294, 3156264, -3024194, 17383880, 19030464, 11989938, -4742181, 1153199, -22871774, -14462765, +-4148939, -15807627, -24745990, -14829448, 11971684, -14457397, -43736188, -20288888, 13524315, -17718888, +-12378633, 639413, -3097745, 20656646, 30472792, 39903468, -20987358, 11375758, -169114, 1357747, +-8445516, -26316338, -52490944, -34585760, 18408766, -35037808, -18270254, 9665824, 17991618, -12910672, +20276004, 57814556, 12311524, 11298448, -43454332, -58369144, -12494597, -18074832, -31030602, -8766028, +-25887378, 18770618, 10792179, 52479132, 21772262, -5883569, -10368588, -17986786, 12591770, 23968602, +47620448, 33354716, -22574884, -47667156, -23141820, -15051176, -28086938, -5051956, 24408836, 11824045, +30136712, 1534914, 21509196, 8723615, -6634114, -8674760, -9980430, 6053757, 13269301, 3520263, +17181480, 21361020, 13033078, 15326054, 7222525, 23067732, 20309290, 1151051, -107374, 10311680, +22897544, -1873143, -5716602, -3031710, 19591494, 6282464, 1254131, -5352603, 12386686, 9632001, +-2608656, 8072928, 9889699, 5139465, -1728724, 2525441, 7191923, 1284732, -374736, -10878615, +23513336, 48384416, -26116622, 36764384, 28444494, -4330401, -8177618, -15928423, 4215511, 32801202, +23302882, 38398620, -17343614, -7206955, -8571144, -2063195, -11056320, 10242423, -13400298, 28217936, +11028402, -45676440, -20688858, 627065, 6027450, 20052128, -10358924, -17156246, 4263829, 5625871, +-8284455, -8377871, 4247186, -12860743, -20928302, -8890045, 42348376, 18106508, 6392522, -21783538, +-8045548, -18464602, 9939628, 21154862, 6106370, 1550483, 11435887, -7206955, 26648124, 15829639, +665720, 9314173, -1993402, 54861764, 10322417, -23171348, 7916699, 9585830, 4458176, 12511777, +-275952, -22127672, 25370908, 5922760, 3517041, 10451266, 3791383, 62277, -17366164, 18954764, +20463908, 11205033, 60641716, 43933220, -24701430, -47524888, -34357592, -3201361, 3105798, -4798552, +-41525356, -20019380, -15404974, -16606491, -17653390, 15101105, 10739029, -4205847, 1461900, -3585761, +-23737748, 6581501, -5236102, -1209570, -24308978, -22334904, -5082557, 9515500, 10043781, 1394254, +10772852, 5082020, 13863081, 2173254, 1912334, -25370908, -16154446, 10798622, 1868311, -7039989, +12224014, 5626407, 1287417, -12236899, 10722386, 16186121, 10321343, 11730093, 13780939, -3338800, +15381352, 32955820, 24932822, 5809480, 2500745, -4306242, -6874632, -17066590, -22584012, 5521718, +-8447127, -537945, 1131187, -1773822, -6098854, -3007014, -8282308, -56507812, -6669548, 13226352, +16296180, -13495324, 20214800, 5330592, -7386270, -21660594, 5182952, -5886253, -30549028, -10743861, +-10503879, 1432909, -42267312, -34360276, -5185100, 20155744, -2303176, -7384123, -25360708, -391916, +22701586, 138513, -14851997, -9791989, -2783139, -9623411, 6040872, 6439767, -21384106, -25368224, +4351339, -1767379, 5807333, 39404716, -24117316, -3478387, -1009854, -40218612, -11303280, -29669634, +-3961571, -3323231, 28372018, 30452392, 38933880, 10108206, 7054484, -15454903, -33043868, 481573, +14206678, -12525198, 47704200, 109369728, 106433584, 14601815, -67194760, -63053880, -23835994, -39957692, +130440840, 79513264, 51035484, 64786896, -485868, -35603668, -91963304, -60108604, -22393960, -5757941, +37867652, 74628816, 67759552, -8768713, -54933168, -34412888, -49687404, -40308268, 7617662, 53860500, +80249320, 30114700, -3718368, 3715147, -29950418, -36881420, -35334696, 11844983, 6228777, 8681740, +32613298, 16402480, -2624225, -21176336, -17140678, -12378633, -27453430, -6238440, 13059385, -11085847, +1387274, -4451734, 20159502, 14089640, -25433186, -16814796, -52072720, -43009264, -37019932, 23604066, +43419436, 15726023, 11795054, -16002511, -26593364, -83255792, -60437708, -37234144, 7901129, 22505628, +15557445, 2966212, -29560112, -25854630, -47259672, -80293880, -30499100, 8877161, 24329916, 40490804, +19937776, -402116, -21438330, -8649527, -13824963, 580357, 30331060, -29701310, 34021508, 5187247, +4750771, -53274776, -15759846, 44768056, -29563334, 11606075, 1184337, -11398306, 15284715, 4235375, +25607668, 37629820, -21502216, -31319438, 9114994, -19464792, 25403658, -32678258, -15462956, -21034602, +3543885, -6428493, -17157320, 7310035, 38056096, -29918206, -30762166, -24652038, -6182606, -7956964, +50694036, 1975148, -202400, -49718004, -11264089, 3499862, 42815456, 16955458, -6055367, -71229888, +-48875656, 46486040, 53251152, 49058192, -21610128, -118124488, -21605296, 51280836, 45289892, 5395016, +-12019466, 6108517, -45676440, -29492466, 17540110, -15276125, 16041703, -10050760, 3574487, 48091824, +-35149476, -20815560, 42736536, 30862562, 63643900, 24783572, -80986976, 24381992, 91071024, 17687212, +46989088, 9865003, -23313082, -2295123, 58636504, 37513856, 77306728, -100787312, 15403363, -2249489, +-9389335, 37713572, 2371896, -53191560, 6266358, -3894999, -8895951, 5958731, 1482301, -33224794, +29317984, -14723148, 950262, -301185, -5753109, -342524, 5890011, -10501732, -9714679, -18964428, +-23472534, 23034984, 537945, 7329362, 22932442, -25945360, 13296682, -2748242, -42030012, -1692754, +15444166, 45407468, -10680510, -67647344, -5948530, 29444148, 10231686, 25780004, -19894288, -20286204, +-22069152, 9056475, -2352568, 14934675, -23378580, 10574209, 8338679, 5568962, -26137024, 841814, +7994545, 17801566, -5888937, 2112587, -14991583, 4180077, -8034273, 14867029, -864899, 11423002, +-2007360, 3389266, -16766479, 521302, 81068, 17936320, -8945343, 5769215, -18122078, 978179, +-449898, 14801531, -3222836, 5930276, -58283780, 6589017, 10420664, 5558762, 57459684, 9682467, +-4315369, -36682240, -6273874, -3606699, -8597451, -363462, -6944962, 14704357, 6860137, -10812580, +-1854352, 22820234, 70330, -1282048, 2423972, -5710696, -9794136, 12806519, 11321534, 8595303, +-14266271, 7502234, 21348134, 8374113, -1225139, 13772350, -2505577, -16336982, 4322348, 4144107, +-13159780, -14302241, 14252312, 13879724, -13697188, 8782671, 8478802, -117038, -4988068, 106300, +10836739, -594316, -12098923, 6302865, 7384123, -22471806, 5750425, 16626892, 5439576, -14607721, +2279017, 10322954, -18931142, 5151277, 8875013, 3754338, -4922570, -18043694, 21252036, -22992570, +-2029372, 22145388, 361851, -3806952, 490163, -20792474, 9210020, -295279, 11885248, 22024592, +-9959492, -1571958, -12721156, 16848620, -3526168, -1868311, 17262548, -22526566, -9910637, 12528956, +10212895, 4495757, -18326626, 6351720, -4027069, -1135482, 8790187, 6698002, 1259499, -4649302, +-2346126, 868657, 4974109, -15981573, 11658152, 2397666, -2223183, 4536559, -2097018, 10142565, +-15050639, -2706366, 311385, 907849, 1502702, 6988986, 4612795, -25538950, 13518946, -2706366, +-2971044, -1038845, 5202816, 7016366, -6333466, -2530273, 11894912, -10147397, -1304596, -7755101, +5657009, 53880900, 4692789, -6545530, -18042084, -11944841, 6274411, -8003672, 6908455, -10691784, +-891743, 8551817, -4868346, 4028143, 3886946, -14914811, 4077535, -4877472, -3299072, -12293807, +3421478, -3477313, -7812546, -3613141, 5890548, -5367636, -5375152, 7592429, -8492761, 4267587, +7157563, -14960982, 14680735, -3738769, -17662516, 9329743, 9219684, -8215736, 2782065, 5312875, +-7506529, -6671695, -30602, 977105, 4715874, -2437394, -985695, -7422241, 6707665, -5820755, +-1960653, 8497593, -10381473, 2943663, -1960116, 537, -4941897, -6669011, -2804077, 11552925, +-8022999, -3050501, 1767916, 2426657, 226560, -7057705, 5236102, -3185792, -6171868, -214212, +-11223823, 16199006, -7291781, 3245922, 3467649, -3388729, 5512591, -9710921, -8002598, 9837623, +-4982699, -6755447, 6498286, -497679, 1719598, -4524748, 1048509, -1047435, 2896956, -3624953, +-2923262, 3686693, -2313377, -2662343, -837519, 2300492, -1682017, -285078, -1394254, 560493, +2109903, -3238405, -3337190, 9229885, -2887829, -3404835, 2763812, -1144072, 2557116, -7543037, +348966, -1321776, -383863, -2059974, 8568460, 32212, -7832947, 2430952, 689879, -416075, +-95026, 3307662, -2353642, -2296197, -1138703, -2080912, -1166084, 871878, -2570538, -149250, +550830, -426276, -26924614, -43533252, 19808390, 150964880, 22950158, 75496400, -17844516, -76489072, +-28005334, -74539160, -49331456, -15467251, -8367133, 3696356, 44215076, 53475564, 73899208, 73679624, +23216446, -28929290, -47203840, -86189256, -66285304, -34646964, -13700946, -8682813, 26505316, 44884556, +34419868, 47284904, 45532560, 16986058, 14657650, 5738077, -33583960, -12269648, -28896540, -49605800, +-30228516, -28915868, -43283068, -9030706, 20010252, 15474767, 43853764, 57821536, 29873646, 38567732, +28762322, -3905736, -1402844, -2551211, -31161062, -38048040, -34211024, -51158968, -43852688, -15299747, +-2707977, 6361921, 35465692, 32928978, 31448824, 39946416, 29573534, 10370735, 18640158, 10455024, +-11716134, -5360656, -21543020, -44891000, -27226872, -25402048, -35612796, -16935592, -11501386, -19787452, +16739098, 32068910, 36714456, 58931784, 55248312, 23538568, 13623099, -607201, -20195474, -23659902, +-24696598, -35616552, -32888712, -29924648, -27705760, -17071422, -6964827, 114890, 13319230, 31664646, +39142184, 36679020, 43939664, 30680026, 14680735, 6418292, -5219459, -22428856, -25631828, -35418984, +-46540804, -46643344, -37297496, -30897994, -4825933, 18759344, 41471668, 55892020, 60211684, 46755552, +30258044, 13627931, -3714610, -23162758, -34282964, -46044196, -45962056, -32665910, -21626770, -6379637, +8260833, 16751446, 21894670, 27651536, 23643258, 14987825, 12470974, 4644471, -334471, -4184372, +-5699422, -7177427, -7224672, -10187662, -8482024, -6447283, -5515812, -5310727, -3599183, -3301756, +-688269, 1966558, 5734318, 7007776, 9283572, 9989557, 10385768, 6591164, 3959960, 852014, +-1174137, -5822902, -8022462, -10578504, -10247255, -8760660, -5264020, -3508452, -652835, 1043140, +5143760, 7254200, 9100499, 7361574, 7191386, 4971962, 3288334, 725313, -238371, -3233037, +-4668093, -6922951, -7361574, -7902203, -5450314, -3702262, -180926, 1221918, 3981972, 5010616, +6284074, 4776541, 5083094, 3544422, 2928631, 493384, -738198, -2879239, -3099893, -4439386, +-3847754, -4268661, -3074660, -2729989, -552440, 130997, 2287607, 2762201, 4207458, 3472481, +3717831, 1727651, 1124745, -486405, -272730, -1509144, -1328219, -2576444, -2024540, -2629594, +-1525250, -1627256, 6442, 179852, 1654636, 1283658, 1989107, 1042603, 1538135, 414464, +799938, -340376, 139586, -752156, -92342, -883690, -73014, -737124, 133144, -539018, +293668, -394063, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -1142998, -6171331, -3469260, 1033477, -5156645, 1442572, 577136, 7864085, -4713727, 13959, -2481954, -3939559, 4020090, -2570001, -493921, -2209761, -1271310, -2583423, -3217468, 2364916, 768262, --2105608, 4383014, 3991635, 6824703, -208306, 2579665, 1351841, -122943, -6180458, 1596654, -2563022, -2446521, 1535988, -1806571, -2101850, -3398393, 1750199, 4350265, 441845, 5077188, --2086280, -445066, 5122286, 2673080, 405338, -75699, 4864051, 7308961, -5454072, 1206886, --1890323, -857383, -8485245, -3022046, 3415573, -2646774, 2363306, 1082332, -1255741, -2071248, -1188632, -719407, 2631741, 1417876, 1219771, 1337346, -4412542, 150324, -2128156, 2690260, -4475893, 3131568, -652835, 4845797, 18254, 2045478, -658741, -1098438, 245350, 2420751, -2796024, -937377, -1933809, -3979824, -527207, -1766842, -1890859, -1076426, -1611687, -1161789, --1895691, -1006096, -63888, -47245, 25770, 1539746, -1099512, 794032, -409096, -783832, -23622, 690953, 242666, 544924, -19864, -550293, -10737, 704375, 221191, -1103807, --857383, -69793, -11811, 407485, 394600, 30065, 875100, -1112397, 3733400, -4562866, --4649839, 118112, -6283537, 1104344, -1937030, 3022583, -1639604, -5091684, 632434, 4873178, --694174, 110059, 6927782, 8572755, -3665218, -4021163, -1065689, -6477348, 2801929, 526134, -1660005, -2316598, 3486440, -4531728, -754304, 3002182, -2456185, -977642, 529892, 5502390, -418222, 3964792, -5244155, 5151814, -507880, 693637, 3434900, -2971581, 2876018, -1381906, --1286343, 2364916, 3260417, -602369, 1890859, -7096360, 4315906, 4069482, -7397008, -6625524, --1793149, -5505075, -1464584, 2015950, 1416266, 1922535, 176094, -1875290, 4651450, -1597728, -230318, -1895154, 1143535, -2839510, 3967476, 897111, -2942590, -1740536, -1127429, -1802276, --1478543, 3894462, 5244692, -307090, -993211, 141197, 1722819, -1138166, 3684008, 1995549, --1415729, -338229, -860067, 1512902, -1452773, -103079, -335544, 179315, 638876, -149787, --380105, 921807, -694174, -312996, 270046, 594853, 118112, -1374390, -840203, 193274, --798864, -785979, 936303, -520765, -1538672, -1094680, -1224066, -403727, 273804, 1484985, -11079942, 2135673, -4117263, 5160940, 641024, -3474629, 10121627, -6782290, -9753871, -5690295, --5917928, -1968706, 2871723, 3575560, -3376918, 5137855, -6428493, -3478387, -784905, 2150705, -1593970, -1932198, -2529736, 5748277, 1096290, -365072, -3214783, 4299263, -3129958, -696322, --10737, -334471, -452045, 1692217, 886374, -852551, 3565897, -1652489, 2174327, -122407, --5820755, -2252174, -2324651, 6222334, -3430068, -4139275, -7556458, -8798241, -1611687, 484794, --3523484, 6738804, 909459, 3636764, -2702608, 5839545, 2480344, -3325379, 9361418, -4199405, --4522601, 764504, 5871757, 8637716, 6096169, 2057826, -2985002, -6722161, 2705293, -38655, -6678674, 2726231, -1893544, -184684, 3412889, 2778307, 63351, -588947, 294205, -1282585, --2793339, -215822, 899796, 747324, 2444373, -33823, 1489280, -461709, 1180042, -241592, -240518, -194884, -1623498, 210990, -279173, -2049773, 1714229, -330176, 1059246, -512712, --1109712, 217970, 225486, -19864, -716186, 844498, 339302, -491774, -143881, -1555852, -237834, -847719, 846109, -236223, 1782948, -30065, -872415, -711354, -10559177, 1709934, --3875134, 2504503, 643708, 7614440, -9768903, -5473936, -7183333, 3889630, 3120831, 4655208, --5137855, 1822677, -1559073, 719944, -7973607, -6687801, -5006858, -4840428, 7962333, -3151432, --1005559, -70330, 2686502, -1200443, -8465917, 3627637, -3391414, -1024887, 3859565, 3005403, -4436701, 366146, 2355790, -5825587, -2477123, 5372467, 8757438, 5238250, -416612, -6635725, -4754529, -2084133, -5833103, 8093866, 2347737, 2838437, -4961224, -2791729, 2720325, -1729261, --2774549, 4312147, -3359738, 1556389, 184147, -5498632, -1210644, -3608846, 5842230, 3075734, --838056, 1089848, -2721399, 3564823, 559956, -9664, 1010391, -6593849, -3504157, 3864934, -1800128, -998043, -882079, -4660040, 7775502, 9742060, 5309654, -4328254, 3937948, 777926, -3358665, -1374390, 2758443, -2023467, 1779727, 3623342, 1883343, 1789928, 1263794, 168577, --1203665, -295816, 3439732, 281857, 213138, -1196148, -264141, 827855, 2062658, -155693, -2426657, 505732, 47245, 15032, 1967095, 2543695, -1080184, -358630, -289373, 488016, -1727114, 9664, 455267, 241592, 402653, -762894, 2910377, -15850577, 5289789, 799938, -3943854, 4263292, -3092913, -11213086, 8637716, 3662533, 8498667, -1570347, 4504884, -96637, --3060164, -219043, -7924215, 9683004, 2210298, 907849, -4992900, -2877628, -3383361, 2883534, --4454418, 7410429, 320512, 2541547, 4130148, 2270964, -483184, 2381559, 2282775, -1751273, -1919850, -8271570, 2137820, 3744675, 3841848, 7393250, 2564632, -4970351, 2471217, -2515777, -5030481, 955630, 3656628, 5620502, 912681, -1258425, 4409858, -3067144, -4818954, -1801202, -3070902, 7794292, -1868848, 466541, 124554, 908386, 1519882, 3248606, 1096827, -2085207, --385473, -2803540, 1997160, 619012, -4974109, -4394289, 1722819, 2719788, 2740726, 4879620, --7587597, -4106526, -5536750, 6455873, -2882997, -4064650, 2083059, -3750580, -5415417, -1987496, -129386, 5737003, -2063732, 1828046, -2321967, -1389959, -358630, 1717987, 741419, -1088774, --900333, 1064615, 2844879, 927713, 1629940, -841814, -569620, 1899986, -102005, 85899, -705985, -1405528, 2537252, -850404, -204011, -1250909, -3294240, -560493, -746251, -296890, --62814, -1285269, 102542, 2870649, -757525, -341987, -585189, -1144609, 3825742, 16178068, -8454643, 7730405, 11063836, 3117610, 1950989, -6735583, -309238, -12669080, -2383707, 4941360, -3439732, 2349347, 2863133, 3593277, -2840584, -1782411, 7223062, 6675453, 5567352, -345745, -704375, -9025337, -7978976, -2904472, 5675263, 1948305, -1287417, 3214246, -5397164, 584652, --2829310, 6424734, 4889284, 11221139, -1198296, 4284230, 3408057, -1710471, -5935645, 10561325, --6187974, -1301375, 4650376, 308701, 2602213, 7635915, -2509335, 2898566, -7402913, -15537044, --8759586, -5101885, -2195265, 804233, -722091, -3947075, -8493835, -1669669, -6127308, 1931125, --239444, 823560, -9567577, -4230543, 6036040, 2199023, -470836, -10415833, -9599252, 5731097, -913217, 3519726, -7062000, -5474473, 269509, -2755222, -6040872, -4141959, 3229816, -1210107, -1430761, 517007, 4064113, 3133179, 1324997, -2043868, 1021129, -302258, -2634963, -2418604, -2291902, -950262, 602369, -1537061, -2548526, -350040, -303869, 2243047, -349503, -2035815, -462783, 886911, 2288144, 544924, 469225, -940061, 2891050, -1065152, 3306051, -1808718, -2423972, -2165737, 282394, 1401770, 8590, -89121, 439697, -533650, -865436, -8164196, -6182606, -3642669, -280247, -21214454, -4984847, -7856032, -5162551, 840740, 7015829, -1414118, -9270150, 4879083, -529355, -9134859, -3757023, 13543106, 2284923, -8138963, -5917928, -2700998, -6374805, -4977867, 91268, 4354023, 6933151, 7787313, -8545911, 5740224, 793495, 1609539, -2458332, 3143379, 2765422, 7807177, 227633, 2355253, -6848326, 9572945, -4809827, -2281165, -1622424, -7986492, 9861782, -1582159, -19248970, -6389301, -15454366, 922881, -218506, -4694936, -20974472, -3690451, -10377178, -3544959, -2549063, 9613211, -1316944, 4574140, 5652714, -3956739, -7197829, 9908490, -5044976, 3758633, -8827232, 4283156, -3165391, -2517388, 10196789, -3755412, --976031, -4555887, 270046, 151398, 3889093, 5735929, 6101001, -1648731, -1731946, 219043, -7901666, 3726958, 4107063, 136902, -6455336, 2571612, -3135863, -3532074, -1931125, -84826, --182536, 399969, 1432909, 1487669, -381178, 4275640, 693637, 1859184, 745177, 832150, --1203665, 1121523, 432181, -1285806, -1883343, -1236414, -3237332, -2543695, 2224793, 1781875, --2741800, 734976, -153008, 759672, 3088082, 648540, -1214402, 329639, 991601, 63351, --2506650, 1103807, 9598715, -13419088, 2649995, 2782602, -4299263, 1836635, 10096931, 10895258, -3987340, 3913252, 5137318, -8383240, -1510755, -8954470, -238908, 5756867, 3578245, -1870458, --7157026, -2282775, 4742718, -9290551, 257698, -649614, 4233764, 8877161, 775778, -4765803, --3706020, 9494562, -6163278, -2934000, 5389110, -3389266, -11283953, -4056060, 2477659, 1902134, --4559108, 1053341, 5762773, 4033511, 5553393, -660351, 4165582, 8061117, -3637301, 4015258, -3380676, -5514738, 11872363, -11498701, 6765111, 3013457, -16069083, 15287936, -9987410, 2166811, --1861332, 12196633, -5276904, -8659728, -1939715, 67109, 2113124, 9364639, -8071318, -403190, -464930, 535797, -1540283, 2761664, -6589554, -966368, -4732517, -8645769, -9673340, 5134634, -4060892, 3965866, -23085, 6032282, -2908767, -7017440, 1700270, -12411919, -10452340, -1969779, -2905009, -133681, -2036888, -1629403, 1358283, -6812892, -2390149, -1461363, -1230508, 3113851, --455803, 483184, 128312, -2266669, 986232, -2544768, 58519, 1149441, -2845953, -624381, -2166811, -1839857, -120259, -1307281, -238908, 797790, -54224, -3775813, -723702, -107911, --323196, -702764, -2415382, -3892851, -1060320, -305480, -673236, 3038689, 2160906, 352187, --856846, -10872173, 8650601, -24715390, 13598940, -9931575, -6567005, -12163884, 1469416, -1599875, -2229088, 8413841, -7089918, -2930778, 6943889, 6081137, -1949378, 2267206, -3211025, -11413339, --988379, 2671470, -5688684, 8916352, 1601486, -1220845, -5327907, -5469641, 1293859, 13826573, -635655, -2126546, 3874061, -12252468, -2051384, 4257387, -8160438, 11592654, 7495792, -581431, --3572876, -4097399, -4507032, -8198019, -9912785, 8194261, 639413, 14680198, 1366337, -926639, --6651294, 1078037, -2596845, 3177202, -191126, -9504763, -7297687, -9681930, -16037408, -2388539, -14165339, -13684303, -818728, -14321568, 2276333, 3841312, 3308736, 9963787, -1098975, -14716705, -10468983, -1160178, -7038378, -6025839, -12577812, -4457639, -9561134, 5103495, -14688788, -2595771, -5791764, -256624, 1132261, 6888591, 3594888, 8302709, 47245, -4711579, -1792075, -3272765, --143345, 2977486, -848793, 406948, 440771, 199716, -2441689, -3716757, 2269353, -2643552, -1104880, 317828, -500901, 986769, 386010, 338766, 5083631, 788663, -290984, 839129, -1612223, 999117, -2548526, -509491, -5371931, 1898376, 2786360, 4092567, 1516124, 1334124, --83752, -2836289, 1635309, -232465, 10553808, -3863860, 9383430, -9159018, -4854924, 6412923, -2057289, -12361990, 801011, 16071768, -18518288, 1088237, 8651138, 20808042, -8899172, -5300527, --2281165, 16109885, 15822660, -16734803, -787590, -12859132, -6155225, 8360154, 8415452, 11012833, -6256157, -2199560, 7745974, -9598178, -5173288, -976031, -1479079, -13889387, 1222992, -334471, -18347564, -2856690, 9039296, 2163590, 5355824, 12267500, -7445863, -3340948, -18134962, 12461848, --15984258, -2868501, 3661997, -2191507, -9236327, -2351495, 2612414, -6600291, 1789391, -1110786, --1408212, -20414516, -14442364, 965831, -10474888, -14350559, 2626909, -13273060, 4199941, 8557722, --7779797, 14731201, 3090766, 9433359, 10165651, 2556043, -7565048, -9012989, -11155641, 5664525, --11575474, 6890738, 8344048, 11461657, 2022393, -8281771, -5289789, 156766, 1101659, -15374372, --391379, -9985799, -1700807, -2884608, 601832, -7337952, 936303, -1747515, -122943, -4801237, --3454228, 1035087, 7614440, 711354, -751082, 938987, -1109712, -2929168, -2804614, -3164317, --1369021, -3739306, 3914326, 2770254, -297963, -3120294, 4653060, 6894497, -1588601, -1338419, --1688996, -841277, -268435, 1597728, -2696703, 2654827, 2551748, 1638530, -2571075, -523449, -1421634, 1896765, 4790499, -9854802, 25435334, 10605348, 4418448, 13080860, -4990215, 2753074, --13493177, -17392470, 10977400, 22362820, 6674379, -103616, -22079354, 26670136, 3875134, 3285113, -3846143, 989990, 4842039, 1523640, -3800509, -163209, 6755447, -4133369, 8483634, 1626719, --6642704, -9243843, -2503429, 8447127, -2292976, 2757906, -3798899, -3388729, 163746, 23929948, -3892851, 3462281, 3253975, 2020245, 14363444, -5343476, 4148402, -9266929, 17108466, 23803246, -6226092, -1371168, -8450885, 24872156, 11711302, 366146, -9603010, 3637301, -5752572, -892816, --11020886, -4149475, -7347616, -10126996, 16391206, -4912369, 12084964, 2530273, -9387725, -140123, --20113332, 19137838, -1367947, -9156333, -7132330, -11668889, -14361834, -7865159, 22288196, -6941741, -8039105, 10117869, -8985072, -8563091, -16054588, 2423972, 10846403, 3721589, 10370199, -2385854, --2035815, 469225, 2954401, -4415227, 1247151, -7997229, 2608119, -366146, 9091909, 6416145, --4909148, 502511, -266288, 5414880, -1836099, -7189239, 1596117, -213138, -587874, 2688650, -490700, -1114007, -3616899, -4021700, -787590, -944893, 4262755, -141197, 4272956, -5860483, -1403917, 4468377, -8371428, -6052683, 2172717, -4483409, -1199907, -2640331, 6253473, 7545184, --5621576, -5942624, 23659902, 23226646, 28656558, 17270064, 5679021, -7276212, -7584376, 4305168, -8315057, 10205916, -15249818, -435402, -1828046, 7659001, 6023692, -10558103, -13050795, -34897, --4952098, 12446278, 14615774, 10737, 7742753, 2570001, 3088618, 16909286, -10327249, -13656385, -10773389, -17889076, 1537061, -5500780, 9873593, 5062693, 171799, 11579232, 10602127, -9628780, -12013560, -6442, -5155035, 2865280, 13051869, -5028870, 5577552, 9706626, 4372814, -20851530, --12079596, 2078227, 1092532, -14169097, -9707700, 4736812, 6742025, 5762773, -19346680, -13482439, --13467407, -1043677, 8370355, 12247099, -30727806, -22550188, 3745212, 4745402, 17730162, 6281927, -6494528, 12944495, -1403381, -3288334, -4702453, 31741956, 10950556, -4976257, -16609712, 15190762, -9891310, -4930086, -4523138, 2369748, -4582730, 8128763, -2941516, -1704565, 4751845, -1150514, --1919850, -2469069, 4989679, 13032541, 71941, 957241, 434865, 5686537, 7239704, -1817845, --4592394, 1997160, -449898, 1495722, 826781, 1147293, -6191732, -3331821, 4342749, 477278, --2537252, 2166811, 6051609, 4769025, -8188892, -1797444, -5456219, -5187784, 3837553, -6200322, -2409477, -3326989, 6020471, 4733591, -7230041, -10070625, -19499688, -18974628, -15600932, 6022081, --2011655, 8806294, -17200808, -2833068, 801011, -6634114, -8050380, 13983877, -5358509, 2833068, --214748, 974958, -14025216, -5157719, -11993696, 1597728, 1580548, 3118683, 33149094, -12911209, -9153649, 13959181, -7085623, -6680285, -10033044, -2023467, 15483357, -15796890, 10816338, -1031866, --2636036, 1457068, 1584843, 8494908, 951335, -16757889, 12819404, -10436771, -24060406, -19468014, --9758703, 32571958, 27630062, -15014132, -4325569, -20613696, -17211008, -6788733, 20116554, 530428, -13874355, 7261179, -9466108, 10586021, -7207492, -21453898, -1821066, -13005161, -2655901, -6964827, -42362872, 396748, -35072704, 27543626, -11114838, -7808251, 27814746, 28284508, 89657, -12369506, -5511517, 6926709, -38087232, -16372415, 1005559, -5586142, 19932944, 8454106, -28896004, -4308926, --2325188, 13111998, 8325794, 5717675, 5171678, -5999533, 1022202, 2314987, 12079596, -1478543, -1653026, 2393371, 2054605, 7128035, 3357591, 184684, -8268886, 10473815, -960462, -23085, -470299, 40802, -4478041, -6929393, -4787278, 977105, -1741609, 3072512, -496069, -3050501, -3297998, 7743289, -10283762, -3299609, -3158412, -1433982, 2892661, -160524, -2965675, -5742372, --2204392, -1452236, 5313949, -16953846, -10395431, 5033165, 4089883, 9079024, 28953986, 4885526, --646929, 6662031, 1599339, -12095702, -7283191, 6373195, 1575716, 23472534, 5655398, -1563905, -8615168, 12556337, 12913356, 13707388, 833761, -9782862, -2600603, -22221088, -2920041, -25078314, -14017163, -15302968, -5800354, -30065, 20307680, -11829414, 11336566, -8340827, 6901476, -10434623, -12989055, 19398220, 1409286, -4235375, -10418517, -15247671, 8547522, 9587978, 24815248, -3467649, -1316944, 10784126, 39697844, -9365713, 6013491, -6534256, -21996138, 15372762, -3088618, 10894185, --1298691, 2605972, -13226889, 36556076, -54951424, 40371620, -63061932, 27084600, -32500554, 9986873, --25471840, 9061307, 16990354, -4182761, 12638478, -6610492, 46104328, -28071906, 30629560, -47521664, -23957328, -18728204, 23049478, -15605227, -16677358, -8342974, -4188130, 11450920, -3138011, -2215130, -1201517, 539555, -5873905, 8086350, -8883603, 8552354, -6410776, 2488934, -10225243, -5936182, --7546795, 1162326, -6937983, 8425115, 9234717, -8929774, -111132, 3276523, 8474507, -1495186, -3054259, 6696928, -6464463, 11214696, -3163244, 14901389, -9004399, 17890686, -12919262, 4414153, --1048509, 9856413, 8407935, -1874216, 4925791, -14250701, 15940234, -11229729, 3876745, -11414412, -8055748, -15137612, 5097053, -1559610, -5443334, 5290326, -10698764, 1620276, -5255430, 5214627, --5200132, 2987687, 1881733, 1400159, -4005594, 13980655, 11272142, 44399224, -30859340, 12913356, -8177081, -26672820, -691490, -5250061, -7529615, -13709536, -686658, 1566053, 17726404, 6584185, -9299678, 13278428, 10803453, 395674, 14787036, -17003776, -2401961, 20476794, 2328409, -28113246, --6416145, -36786932, -6831146, 6411313, -6772090, -8578660, -1557463, 32875290, 8354785, 2515240, -4058744, 8227547, -2437931, -18864034, -5733782, -2096481, 3544422, -4351876, -8770323, 23805930, -12858058, -4925254, -1092532, -5119601, -21489868, -17675938, -12872554, -10734734, 24067922, 5785858, -8907225, -14484240, -14026289, 4521527, 9818295, 9019431, -4033511, -2849174, -16294569, -10792179, -14294188, 643171, -39494372, 13903346, 21599390, 6900939, -17194364, -10597832, -8551817, 2831994, --12372727, 6123550, -29065654, -38890392, 16123844, 14026826, -7746511, -14299557, 10936597, -6403796, -2850248, 3376381, -5705327, 6222334, -3526168, -3660386, -2085207, 9346386, -6630893, -1967095, --7256884, -106300, 630286, 6248104, 6493991, -731755, 3833795, -4599373, 7583839, -5276368, -6197101, -14310831, -6497749, -1977296, 4147328, -4681515, -9319005, -7162932, 3423626, 7368017, --264141, 9521406, 2688113, 3764002, 596464, 6199249, -3499325, 5925445, -1421634, -11787538, --9059160, -3474092, 5374078, -6626598, 3905736, -9889699, -4350265, 4523138, -36686000, 32114008, -39024608, -3651259, 28363964, 1160178, 4306779, 12372190, -25116968, 9124121, 18529026, 18318036, -7648800, 5673652, -18174154, 13267154, 7766375, -11005854, 5817533, -2190433, 21590800, 5960341, -5489505, 12780212, -5174899, -14738717, 4211216, 27551678, -9921374, -5370857, 24841018, -9154723, --11187853, -9078487, 8520141, 32004486, 44471700, -2781528, -28937342, 43663176, 14986752, -28777354, -32518808, 12461311, -8133595, -8367133, -12271258, -20282984, -1207423, 10633265, -17444546, -11398306, --36788004, -5001490, 21328270, -44511432, -24158654, 7015829, 7119982, 8767639, 26941792, 23878408, --39602820, 314069, 1461363, -28002114, 7761543, 13306346, -14415521, -10263898, -12180527, 8097624, -31026306, 9711995, 16109349, -21268678, 10776073, -24081882, 2050310, -16202227, -65805340, 50267760, -12868259, -18373334, 33983392, -11766600, -15567109, 9132711, 6899328, 8732742, 13252658, 5356361, --13429826, -4274566, 12999255, -459025, 4964982, 2074469, -2203855, 3173444, -5925445, 4309463, -12139188, 4369056, -7261179, -5362804, 3662533, -3305514, -6595459, 2449742, 7547332, 4382478, --22805740, -6920266, -16813186, -8733279, 9695352, -7511898, -9427990, 8864276, 5689221, -9863392, -12400644, -9257265, -4100083, 4430796, -7299834, 8149164, -3718368, -13539884, 11138461, -20889110, -24067386, 79678088, -25418154, 678068, 6154688, 35963908, 31936304, -10464688, -13820668, -20120848, -889058, 15223512, -473520, -10294500, -10533944, 14367739, -7813083, -19350976, -17248052, -3506304, -29326574, 20529944, -23252416, 1553168, 464393, -10165651, 11587285, 4263292, -8269423, -2751464, --6494528, -3129421, 37431712, -13926968, -24785720, -17383344, -14067092, 33063196, 961536, -7667054, -30494804, 20930986, 8367670, 15497316, 29988536, -18204756, 4665945, 29135448, 17082158, 22260816, --25229174, -7118372, -893353, 10669773, 10094784, -23917600, 2335925, -31425202, -47231220, -2478733, --12455942, 21973590, 24472724, -6387153, -1884417, 4977330, -17137456, -45779520, 30880278, -22172232, -4822175, -8522289, -15431281, -8960912, -17903034, -36279052, 21499532, 19110994, 23211078, 4499515, --28795608, -50658064, -14993194, -13990856, -6142877, 16058346, -10311143, -2500208, 3119757, 2188286, --8004746, -3649112, -6418292, 825171, -2826089, 5401458, -3120294, -3890704, 5941551, 7694971, -6120866, -12218108, 4078608, 746787, -1045825, 198105, -26884348, 1358820, 3790846, 4020626, --17691508, 11616276, -2482491, -14724759, -12031277, 7243463, 9572408, -1713692, 5712307, -9050570, --6345814, -6146098, 790274, 11084237, 2858838, 10591926, -189515, 4948876, -15590194, -2356863, --3685619, -2876554, 12297565, 5901285, -366683, 3959960, 1898376, -12279848, -3957276, -38960724, --22618908, -18070002, -46261628, 53382684, -1402844, 28199682, -6578816, 1569811, -32300838, -17389248, --16756278, 3883724, 24978992, -982474, -26388816, -19425600, -37643776, -41528040, 35574676, 13363791, --32647120, -9906342, 15824270, 29950418, 3980898, -36793376, -22665616, 7452305, 10146860, 9342628, -21383032, -22814330, -22003654, -3183645, -7936026, 3209951, 6229313, -44248900, -8384313, -30813170, --20039244, -41150620, -15862388, 56761216, 9558450, 1953673, 13680545, 14198088, 4230543, 42223824, -33093260, -10842645, 11107322, 56994216, -15093589, -13108777, -13780403, -42169064, -1840930, -23012972, --52796960, -54985780, -29125784, -28303834, 12672301, -21154324, 1651952, 11355894, -37687264, -13561896, -21475, 11274, 9456444, 24678346, 16076063, 29724394, 39798240, 29210072, -3796214, -20953534, --30878130, -2424509, 12465069, 3925600, -4537096, -190052, 8467528, 7217156, 18623516, -1921461, -2779381, 539018, -6507949, 6371047, 747324, -2822867, 15880105, 7185481, 3428995, -14875082, -9932112, -5191542, 7435126, -14093935, -39982924, -1625645, 15472620, -2723009, -21327196, -13293461, --15667504, -11388643, 4815732, 7201050, 7665443, 2429341, -1627793, 6204617, 15347529, 26271242, -24325084, 30815316, 25914758, -2175401, 17366700, 40119828, 2638721, -17110612, -25095494, -24720758, --34323768, -27347130, -13429289, -14477261, -2214056, -4151086, 35050692, -22859964, 6781754, -26508002, --9223442, -28928216, 3548717, 35430260, -1003412, 21950504, -43813500, 38483444, 12647605, -7721815, -30185030, 4391604, 13613973, -12030203, -14565308, -153008, 9088688, 7252053, -30684320, 28070296, --33983928, 4240207, 9207336, -11357504, 19650012, -20883204, -12166569, -2225867, -7740605, -10534481, --2604361, 4581657, -15851114, -18294414, -6223408, -3144453, -4787278, 11227045, 5783174, 4608500, --22572738, 5985574, 26818312, 35990752, -26812944, -13313325, 30254824, 41834056, -25651156, -15637439, -17308182, 7427609, -20447802, 16733193, -47601660, -9290551, 18930068, 37804840, 4577899, -23433878, --21544630, 5739687, 44940392, 3947075, 6432251, 1352915, 14666776, -2913062, 33291366, -385473, --37615860, 23480586, -24679956, -7477538, 9919227, -14251238, 3007551, -30353070, -11696270, 28069222, -12543452, -12641699, -18416282, -9903121, 1937567, -14672682, -4831838, -3284576, -9383967, -5558762, --4756140, -19047106, 11582453, -7168838, -8863739, -27567248, -7379828, 20133196, -14442901, -7812009, --7750806, -15792058, 29765198, 12311524, 696322, -1096290, -17263084, -25268366, 1138703, 22395570, -17996986, 6083821, -19404662, -11176042, -8938364, 10859288, 1519345, -16952772, -4663261, 967978, -6137509, -15095736, -10578504, -8957691, 22959822, 11909407, 1003949, -14666776, -13122199, 13036299, -27690728, -404801, -12677133, -17481590, -6432788, 7741679, 68183, -4097399, 447750, -3543348, --3233574, 2617783, 8378945, 125091, -1859184, 48855, -76773, -2177549, 519154, 75162, -191663, -3031710, 1941862, 419833, -57321708, -15415711, 9221832, -18843096, 55827596, 41513008, -26599270, 14685030, 37533184, 27132920, 8519605, 18585398, -45026828, -59628104, -8739722, 894964, --15833934, 8340827, -3267933, -15341623, -20066088, -15717970, 30667678, 27357332, -22049826, -2464774, --3418794, -5121212, -8097087, -10966662, -16786342, -22630182, -4780836, 40842992, -13355738, -22192096, --11145440, 38356204, -18158048, -17158932, 58474368, 21268678, 9524090, -13990856, -32719598, -22251152, --33735896, 9353365, 27151710, 74674448, -65690452, -27365920, 37956772, 53410604, 8895414, -2776696, -67768680, 33017024, -21860846, 22087944, -8207146, 647466, -47544216, -23404350, -16848082, -76951320, --33165200, -12060805, 41294500, -22103512, -13389561, 31493384, -2421825, -3690988, 7082401, 22299470, --21486110, 15897821, 23305566, 1000727, -4853850, -43220256, 19803020, 16124381, -50836308, -3177202, -5117991, 3758097, -4643934, -21925272, 5622649, 4302484, 5957657, -3048353, -6825240, 16648367, -3101503, -2864743, 10788421, 5122822, 29329258, -3553012, 9390409, 2387465, -23907398, -20018306, -14072997, -10914586, 8422431, 11599096, 6535867, 7361574, -141734, 20131586, -6596533, -4389457, --8074002, 6151467, 14944339, -22482006, -8893267, 11575474, 4802847, -12507482, -23797876, -5470715, -6116571, 49370112, 18023294, -4037269, 12719546, -2421288, -4625680, -18086644, 8655970, 7608535, --14391899, -6896107, -52210160, -2034741, 21417392, -4948339, -21804476, 9610526, -4941897, 23556286, -4633733, -11270531, -235686, 25215216, -14352170, 4140349, 9021579, -7541963, -272730, -13486197, -27685896, -1561758, 4079145, 550293, 13356811, -5961952, -5266704, -8560407, 5499169, 10536092, --4612795, 12497818, -5404680, 7746511, -13052942, -10131828, 15756088, 20378546, -26212186, 1345399, --1611, 2577517, 8214125, -16341277, 25228638, -22499724, 20300162, 2976949, -35357244, -1793686, -27542552, -35822176, 17129940, 294205, 4621385, -8493298, -5410048, 7408819, -10453950, 36969468, --27264452, 4219806, -7330973, -3155190, 9063455, 667331, -4488241, -691490, 11119133, -190589, --12795244, 3760781, 6471979, -21231634, 16630113, 7678328, 771484, 15512348, -5628555, -4576825, -7214472, 3526168, 4573604, 2784750, -4242354, 8842264, 3722126, 824097, -9366787, -1360431, -4566087, 8492224, -14210973, 7625178, 8845485, -12359842, 5952288, 2040646, 2134599, 6827925, --3738232, 1685775, -2343979, -18001282, -276489, -4190278, 7953743, -4912369, 3036005, 2219961, --752156, 2655364, 4609037, -2786897, 4832, 1056025, -130460, 1557999, 5534602, -5399311, -5185100, -3871376, -26125212, -74351792, -105827456, 35454956, 94358288, 20614770, 261303120, 214914256, -145441008, 245756960, 128209072, -8976482, -30627948, -97371744, -224212320, -185459376, -180080992, -250747712, --185156576, -54676008, -40101572, -6868190, 87144888, 40252432, -10856067, 54944444, 91399592, 44422308, -42788076, 82849384, 49507552, 37850472, 75315472, 117999928, 49192944, 69087232, 111020608, 18638010, -7406134, 97752920, 57919244, -38123204, 47185584, 60537564, -63869384, -19506130, 70173864, -14703284, --42353748, 90369336, 47950088, -56962540, 48535276, 64142652, -86594056, -81399832, -34810708, -209069888, --276921248, -174123344, -244870048, -326615072, -227492608, -233121168, -300910240, -238358880, -165195712, -179405616, --107215808, 9454834, 66267588, 144245936, 236810000, 294972992, 363720928, 403843968, 441564512, 467922176, -420399456, 330134816, 305214336, 195104256, 58661736, 45617384, -31954020, -151459344, -118860000, -51153060, --112661824, -116146120, -25021942, -82155744, -156194000, -94966024, -68860672, -140171088, -119204136, -42999600, --106066368, -126192584, -10868952, -7496329, -57249228, 21065740, 12053826, -91968672, -68215352, -40386652, --130109056, -179216096, -146507248, -200056896, -247487824, -184275568, -148000272, -140817488, -62255552, 26839788, -72679976, 108129024, 150285744, 169405856, 152055264, 198335680, 255121600, 264124912, 246830160, 251007552, -242315616, 195974528, 221865120, 199703088, 84766008, 8872866, -51882668, -112039592, -118010672, -98192080, --115197464, -113159504, -98137856, -97368520, -103357312, -86001888, -77017352, -74287904, -70239896, -55718612, --52980032, -55573120, -45278084, -32722282, -30918932, -25280178, -14262513, -8874476, -7583839, 3173981, -4186519, 2573759, 5940477, 11767137, 10277320, 12956843, 15501611, 13358959, 8629663, 5589900, -3449396, 3947612, 2647847, 3586298, 2702071, -984084, -5224828, -3391951, -157303, 5545340, -13037910, 21184390, 21923124, 24856586, 30047054, 32565516, 34510600, 40690520, 38627864, 32845762, -29588030, 28043988, 19981798, 17135846, 15855409, 9361418, 2532957, 3197603, -2459406, -9362492, --13837311, -20078972, -30206504, -33157684, -34616900, -36128728, -37577204, -34288872, -32960652, -30710626, --26059714, -19342386, -16582332, -11716134, -8262444, -7092065, -5049271, -410706, 1660542, 5151277, -6913287, 9184788, 9975598, 11004780, 11106785, 11664057, 9825275, 9531069, 8243116, 7568806, -5897527, 5883569, 4462471, 4192425, 2918430, 2924873, 1637993, 1674500, 719407, 1017907, -98247, 421981, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +6171331, -3469260, 1033477, -5156645, 1442572, 577136, 7864085, -4713727, 13959, -2481954, +3939559, 4020090, -2570001, -493921, -2209761, -1271310, -2583423, -3217468, 2364916, 768262, +-2105608, 4383014, 3991635, 6824703, -208306, 2579665, 1351841, -122943, -6180458, 1596654, +2563022, -2446521, 1535988, -1806571, -2101850, -3398393, 1750199, 4350265, 441845, 5077188, +-2086280, -445066, 5122286, 2673080, 405338, -75699, 4864051, 7308961, -5454072, 1206886, +-1890323, -857383, -8485245, -3022046, 3415573, -2646774, 2363306, 1082332, -1255741, -2071248, +1188632, -719407, 2631741, 1417876, 1219771, 1337346, -4412542, 150324, -2128156, 2690260, +4475893, 3131568, -652835, 4845797, 18254, 2045478, -658741, -1098438, 245350, 2420751, +2796024, -937377, -1933809, -3979824, -527207, -1766842, -1890859, -1076426, -1611687, -1161789, +-1895691, -1006096, -63888, -47245, 25770, 1539746, -1099512, 794032, -409096, -783832, +23622, 690953, 242666, 544924, -19864, -550293, -10737, 704375, 221191, -1103807, +-857383, -69793, -11811, 407485, 394600, 30065, 875100, -1112397, 3733400, -4562866, +-4649839, 118112, -6283537, 1104344, -1937030, 3022583, -1639604, -5091684, 632434, 4873178, +-694174, 110059, 6927782, 8572755, -3665218, -4021163, -1065689, -6477348, 2801929, 526134, +1660005, -2316598, 3486440, -4531728, -754304, 3002182, -2456185, -977642, 529892, 5502390, +418222, 3964792, -5244155, 5151814, -507880, 693637, 3434900, -2971581, 2876018, -1381906, +-1286343, 2364916, 3260417, -602369, 1890859, -7096360, 4315906, 4069482, -7397008, -6625524, +-1793149, -5505075, -1464584, 2015950, 1416266, 1922535, 176094, -1875290, 4651450, -1597728, +230318, -1895154, 1143535, -2839510, 3967476, 897111, -2942590, -1740536, -1127429, -1802276, +-1478543, 3894462, 5244692, -307090, -993211, 141197, 1722819, -1138166, 3684008, 1995549, +-1415729, -338229, -860067, 1512902, -1452773, -103079, -335544, 179315, 638876, -149787, +-380105, 921807, -694174, -312996, 270046, 594853, 118112, -1374390, -840203, 193274, +-798864, -785979, 936303, -520765, -1538672, -1094680, -1224066, -403727, 273804, 1484985, +11079942, 2135673, -4117263, 5160940, 641024, -3474629, 10121627, -6782290, -9753871, -5690295, +-5917928, -1968706, 2871723, 3575560, -3376918, 5137855, -6428493, -3478387, -784905, 2150705, +1593970, -1932198, -2529736, 5748277, 1096290, -365072, -3214783, 4299263, -3129958, -696322, +-10737, -334471, -452045, 1692217, 886374, -852551, 3565897, -1652489, 2174327, -122407, +-5820755, -2252174, -2324651, 6222334, -3430068, -4139275, -7556458, -8798241, -1611687, 484794, +-3523484, 6738804, 909459, 3636764, -2702608, 5839545, 2480344, -3325379, 9361418, -4199405, +-4522601, 764504, 5871757, 8637716, 6096169, 2057826, -2985002, -6722161, 2705293, -38655, +6678674, 2726231, -1893544, -184684, 3412889, 2778307, 63351, -588947, 294205, -1282585, +-2793339, -215822, 899796, 747324, 2444373, -33823, 1489280, -461709, 1180042, -241592, +240518, -194884, -1623498, 210990, -279173, -2049773, 1714229, -330176, 1059246, -512712, +-1109712, 217970, 225486, -19864, -716186, 844498, 339302, -491774, -143881, -1555852, +237834, -847719, 846109, -236223, 1782948, -30065, -872415, -711354, -10559177, 1709934, +-3875134, 2504503, 643708, 7614440, -9768903, -5473936, -7183333, 3889630, 3120831, 4655208, +-5137855, 1822677, -1559073, 719944, -7973607, -6687801, -5006858, -4840428, 7962333, -3151432, +-1005559, -70330, 2686502, -1200443, -8465917, 3627637, -3391414, -1024887, 3859565, 3005403, +4436701, 366146, 2355790, -5825587, -2477123, 5372467, 8757438, 5238250, -416612, -6635725, +4754529, -2084133, -5833103, 8093866, 2347737, 2838437, -4961224, -2791729, 2720325, -1729261, +-2774549, 4312147, -3359738, 1556389, 184147, -5498632, -1210644, -3608846, 5842230, 3075734, +-838056, 1089848, -2721399, 3564823, 559956, -9664, 1010391, -6593849, -3504157, 3864934, +1800128, -998043, -882079, -4660040, 7775502, 9742060, 5309654, -4328254, 3937948, 777926, +3358665, -1374390, 2758443, -2023467, 1779727, 3623342, 1883343, 1789928, 1263794, 168577, +-1203665, -295816, 3439732, 281857, 213138, -1196148, -264141, 827855, 2062658, -155693, +2426657, 505732, 47245, 15032, 1967095, 2543695, -1080184, -358630, -289373, 488016, +1727114, 9664, 455267, 241592, 402653, -762894, 2910377, -15850577, 5289789, 799938, +3943854, 4263292, -3092913, -11213086, 8637716, 3662533, 8498667, -1570347, 4504884, -96637, +-3060164, -219043, -7924215, 9683004, 2210298, 907849, -4992900, -2877628, -3383361, 2883534, +-4454418, 7410429, 320512, 2541547, 4130148, 2270964, -483184, 2381559, 2282775, -1751273, +1919850, -8271570, 2137820, 3744675, 3841848, 7393250, 2564632, -4970351, 2471217, -2515777, +5030481, 955630, 3656628, 5620502, 912681, -1258425, 4409858, -3067144, -4818954, -1801202, +3070902, 7794292, -1868848, 466541, 124554, 908386, 1519882, 3248606, 1096827, -2085207, +-385473, -2803540, 1997160, 619012, -4974109, -4394289, 1722819, 2719788, 2740726, 4879620, +-7587597, -4106526, -5536750, 6455873, -2882997, -4064650, 2083059, -3750580, -5415417, -1987496, +129386, 5737003, -2063732, 1828046, -2321967, -1389959, -358630, 1717987, 741419, -1088774, +-900333, 1064615, 2844879, 927713, 1629940, -841814, -569620, 1899986, -102005, 85899, +705985, -1405528, 2537252, -850404, -204011, -1250909, -3294240, -560493, -746251, -296890, +-62814, -1285269, 102542, 2870649, -757525, -341987, -585189, -1144609, 3825742, 16178068, +8454643, 7730405, 11063836, 3117610, 1950989, -6735583, -309238, -12669080, -2383707, 4941360, +3439732, 2349347, 2863133, 3593277, -2840584, -1782411, 7223062, 6675453, 5567352, -345745, +704375, -9025337, -7978976, -2904472, 5675263, 1948305, -1287417, 3214246, -5397164, 584652, +-2829310, 6424734, 4889284, 11221139, -1198296, 4284230, 3408057, -1710471, -5935645, 10561325, +-6187974, -1301375, 4650376, 308701, 2602213, 7635915, -2509335, 2898566, -7402913, -15537044, +-8759586, -5101885, -2195265, 804233, -722091, -3947075, -8493835, -1669669, -6127308, 1931125, +-239444, 823560, -9567577, -4230543, 6036040, 2199023, -470836, -10415833, -9599252, 5731097, +913217, 3519726, -7062000, -5474473, 269509, -2755222, -6040872, -4141959, 3229816, -1210107, +1430761, 517007, 4064113, 3133179, 1324997, -2043868, 1021129, -302258, -2634963, -2418604, +2291902, -950262, 602369, -1537061, -2548526, -350040, -303869, 2243047, -349503, -2035815, +462783, 886911, 2288144, 544924, 469225, -940061, 2891050, -1065152, 3306051, -1808718, +2423972, -2165737, 282394, 1401770, 8590, -89121, 439697, -533650, -865436, -8164196, +6182606, -3642669, -280247, -21214454, -4984847, -7856032, -5162551, 840740, 7015829, -1414118, +9270150, 4879083, -529355, -9134859, -3757023, 13543106, 2284923, -8138963, -5917928, -2700998, +6374805, -4977867, 91268, 4354023, 6933151, 7787313, -8545911, 5740224, 793495, 1609539, +2458332, 3143379, 2765422, 7807177, 227633, 2355253, -6848326, 9572945, -4809827, -2281165, +1622424, -7986492, 9861782, -1582159, -19248970, -6389301, -15454366, 922881, -218506, -4694936, +20974472, -3690451, -10377178, -3544959, -2549063, 9613211, -1316944, 4574140, 5652714, -3956739, +7197829, 9908490, -5044976, 3758633, -8827232, 4283156, -3165391, -2517388, 10196789, -3755412, +-976031, -4555887, 270046, 151398, 3889093, 5735929, 6101001, -1648731, -1731946, 219043, +7901666, 3726958, 4107063, 136902, -6455336, 2571612, -3135863, -3532074, -1931125, -84826, +-182536, 399969, 1432909, 1487669, -381178, 4275640, 693637, 1859184, 745177, 832150, +-1203665, 1121523, 432181, -1285806, -1883343, -1236414, -3237332, -2543695, 2224793, 1781875, +-2741800, 734976, -153008, 759672, 3088082, 648540, -1214402, 329639, 991601, 63351, +-2506650, 1103807, 9598715, -13419088, 2649995, 2782602, -4299263, 1836635, 10096931, 10895258, +3987340, 3913252, 5137318, -8383240, -1510755, -8954470, -238908, 5756867, 3578245, -1870458, +-7157026, -2282775, 4742718, -9290551, 257698, -649614, 4233764, 8877161, 775778, -4765803, +-3706020, 9494562, -6163278, -2934000, 5389110, -3389266, -11283953, -4056060, 2477659, 1902134, +-4559108, 1053341, 5762773, 4033511, 5553393, -660351, 4165582, 8061117, -3637301, 4015258, +3380676, -5514738, 11872363, -11498701, 6765111, 3013457, -16069083, 15287936, -9987410, 2166811, +-1861332, 12196633, -5276904, -8659728, -1939715, 67109, 2113124, 9364639, -8071318, -403190, +464930, 535797, -1540283, 2761664, -6589554, -966368, -4732517, -8645769, -9673340, 5134634, +4060892, 3965866, -23085, 6032282, -2908767, -7017440, 1700270, -12411919, -10452340, -1969779, +2905009, -133681, -2036888, -1629403, 1358283, -6812892, -2390149, -1461363, -1230508, 3113851, +-455803, 483184, 128312, -2266669, 986232, -2544768, 58519, 1149441, -2845953, -624381, +2166811, -1839857, -120259, -1307281, -238908, 797790, -54224, -3775813, -723702, -107911, +-323196, -702764, -2415382, -3892851, -1060320, -305480, -673236, 3038689, 2160906, 352187, +-856846, -10872173, 8650601, -24715390, 13598940, -9931575, -6567005, -12163884, 1469416, -1599875, +2229088, 8413841, -7089918, -2930778, 6943889, 6081137, -1949378, 2267206, -3211025, -11413339, +-988379, 2671470, -5688684, 8916352, 1601486, -1220845, -5327907, -5469641, 1293859, 13826573, +635655, -2126546, 3874061, -12252468, -2051384, 4257387, -8160438, 11592654, 7495792, -581431, +-3572876, -4097399, -4507032, -8198019, -9912785, 8194261, 639413, 14680198, 1366337, -926639, +-6651294, 1078037, -2596845, 3177202, -191126, -9504763, -7297687, -9681930, -16037408, -2388539, +14165339, -13684303, -818728, -14321568, 2276333, 3841312, 3308736, 9963787, -1098975, -14716705, +10468983, -1160178, -7038378, -6025839, -12577812, -4457639, -9561134, 5103495, -14688788, -2595771, +5791764, -256624, 1132261, 6888591, 3594888, 8302709, 47245, -4711579, -1792075, -3272765, +-143345, 2977486, -848793, 406948, 440771, 199716, -2441689, -3716757, 2269353, -2643552, +1104880, 317828, -500901, 986769, 386010, 338766, 5083631, 788663, -290984, 839129, +1612223, 999117, -2548526, -509491, -5371931, 1898376, 2786360, 4092567, 1516124, 1334124, +-83752, -2836289, 1635309, -232465, 10553808, -3863860, 9383430, -9159018, -4854924, 6412923, +2057289, -12361990, 801011, 16071768, -18518288, 1088237, 8651138, 20808042, -8899172, -5300527, +-2281165, 16109885, 15822660, -16734803, -787590, -12859132, -6155225, 8360154, 8415452, 11012833, +6256157, -2199560, 7745974, -9598178, -5173288, -976031, -1479079, -13889387, 1222992, -334471, +18347564, -2856690, 9039296, 2163590, 5355824, 12267500, -7445863, -3340948, -18134962, 12461848, +-15984258, -2868501, 3661997, -2191507, -9236327, -2351495, 2612414, -6600291, 1789391, -1110786, +-1408212, -20414516, -14442364, 965831, -10474888, -14350559, 2626909, -13273060, 4199941, 8557722, +-7779797, 14731201, 3090766, 9433359, 10165651, 2556043, -7565048, -9012989, -11155641, 5664525, +-11575474, 6890738, 8344048, 11461657, 2022393, -8281771, -5289789, 156766, 1101659, -15374372, +-391379, -9985799, -1700807, -2884608, 601832, -7337952, 936303, -1747515, -122943, -4801237, +-3454228, 1035087, 7614440, 711354, -751082, 938987, -1109712, -2929168, -2804614, -3164317, +-1369021, -3739306, 3914326, 2770254, -297963, -3120294, 4653060, 6894497, -1588601, -1338419, +-1688996, -841277, -268435, 1597728, -2696703, 2654827, 2551748, 1638530, -2571075, -523449, +1421634, 1896765, 4790499, -9854802, 25435334, 10605348, 4418448, 13080860, -4990215, 2753074, +-13493177, -17392470, 10977400, 22362820, 6674379, -103616, -22079354, 26670136, 3875134, 3285113, +3846143, 989990, 4842039, 1523640, -3800509, -163209, 6755447, -4133369, 8483634, 1626719, +-6642704, -9243843, -2503429, 8447127, -2292976, 2757906, -3798899, -3388729, 163746, 23929948, +3892851, 3462281, 3253975, 2020245, 14363444, -5343476, 4148402, -9266929, 17108466, 23803246, +6226092, -1371168, -8450885, 24872156, 11711302, 366146, -9603010, 3637301, -5752572, -892816, +-11020886, -4149475, -7347616, -10126996, 16391206, -4912369, 12084964, 2530273, -9387725, -140123, +-20113332, 19137838, -1367947, -9156333, -7132330, -11668889, -14361834, -7865159, 22288196, -6941741, +8039105, 10117869, -8985072, -8563091, -16054588, 2423972, 10846403, 3721589, 10370199, -2385854, +-2035815, 469225, 2954401, -4415227, 1247151, -7997229, 2608119, -366146, 9091909, 6416145, +-4909148, 502511, -266288, 5414880, -1836099, -7189239, 1596117, -213138, -587874, 2688650, +490700, -1114007, -3616899, -4021700, -787590, -944893, 4262755, -141197, 4272956, -5860483, +1403917, 4468377, -8371428, -6052683, 2172717, -4483409, -1199907, -2640331, 6253473, 7545184, +-5621576, -5942624, 23659902, 23226646, 28656558, 17270064, 5679021, -7276212, -7584376, 4305168, +8315057, 10205916, -15249818, -435402, -1828046, 7659001, 6023692, -10558103, -13050795, -34897, +-4952098, 12446278, 14615774, 10737, 7742753, 2570001, 3088618, 16909286, -10327249, -13656385, +10773389, -17889076, 1537061, -5500780, 9873593, 5062693, 171799, 11579232, 10602127, -9628780, +12013560, -6442, -5155035, 2865280, 13051869, -5028870, 5577552, 9706626, 4372814, -20851530, +-12079596, 2078227, 1092532, -14169097, -9707700, 4736812, 6742025, 5762773, -19346680, -13482439, +-13467407, -1043677, 8370355, 12247099, -30727806, -22550188, 3745212, 4745402, 17730162, 6281927, +6494528, 12944495, -1403381, -3288334, -4702453, 31741956, 10950556, -4976257, -16609712, 15190762, +9891310, -4930086, -4523138, 2369748, -4582730, 8128763, -2941516, -1704565, 4751845, -1150514, +-1919850, -2469069, 4989679, 13032541, 71941, 957241, 434865, 5686537, 7239704, -1817845, +-4592394, 1997160, -449898, 1495722, 826781, 1147293, -6191732, -3331821, 4342749, 477278, +-2537252, 2166811, 6051609, 4769025, -8188892, -1797444, -5456219, -5187784, 3837553, -6200322, +2409477, -3326989, 6020471, 4733591, -7230041, -10070625, -19499688, -18974628, -15600932, 6022081, +-2011655, 8806294, -17200808, -2833068, 801011, -6634114, -8050380, 13983877, -5358509, 2833068, +-214748, 974958, -14025216, -5157719, -11993696, 1597728, 1580548, 3118683, 33149094, -12911209, +9153649, 13959181, -7085623, -6680285, -10033044, -2023467, 15483357, -15796890, 10816338, -1031866, +-2636036, 1457068, 1584843, 8494908, 951335, -16757889, 12819404, -10436771, -24060406, -19468014, +-9758703, 32571958, 27630062, -15014132, -4325569, -20613696, -17211008, -6788733, 20116554, 530428, +13874355, 7261179, -9466108, 10586021, -7207492, -21453898, -1821066, -13005161, -2655901, -6964827, +42362872, 396748, -35072704, 27543626, -11114838, -7808251, 27814746, 28284508, 89657, -12369506, +5511517, 6926709, -38087232, -16372415, 1005559, -5586142, 19932944, 8454106, -28896004, -4308926, +-2325188, 13111998, 8325794, 5717675, 5171678, -5999533, 1022202, 2314987, 12079596, -1478543, +1653026, 2393371, 2054605, 7128035, 3357591, 184684, -8268886, 10473815, -960462, -23085, +470299, 40802, -4478041, -6929393, -4787278, 977105, -1741609, 3072512, -496069, -3050501, +3297998, 7743289, -10283762, -3299609, -3158412, -1433982, 2892661, -160524, -2965675, -5742372, +-2204392, -1452236, 5313949, -16953846, -10395431, 5033165, 4089883, 9079024, 28953986, 4885526, +-646929, 6662031, 1599339, -12095702, -7283191, 6373195, 1575716, 23472534, 5655398, -1563905, +8615168, 12556337, 12913356, 13707388, 833761, -9782862, -2600603, -22221088, -2920041, -25078314, +14017163, -15302968, -5800354, -30065, 20307680, -11829414, 11336566, -8340827, 6901476, -10434623, +12989055, 19398220, 1409286, -4235375, -10418517, -15247671, 8547522, 9587978, 24815248, -3467649, +1316944, 10784126, 39697844, -9365713, 6013491, -6534256, -21996138, 15372762, -3088618, 10894185, +-1298691, 2605972, -13226889, 36556076, -54951424, 40371620, -63061932, 27084600, -32500554, 9986873, +-25471840, 9061307, 16990354, -4182761, 12638478, -6610492, 46104328, -28071906, 30629560, -47521664, +23957328, -18728204, 23049478, -15605227, -16677358, -8342974, -4188130, 11450920, -3138011, -2215130, +1201517, 539555, -5873905, 8086350, -8883603, 8552354, -6410776, 2488934, -10225243, -5936182, +-7546795, 1162326, -6937983, 8425115, 9234717, -8929774, -111132, 3276523, 8474507, -1495186, +3054259, 6696928, -6464463, 11214696, -3163244, 14901389, -9004399, 17890686, -12919262, 4414153, +-1048509, 9856413, 8407935, -1874216, 4925791, -14250701, 15940234, -11229729, 3876745, -11414412, +8055748, -15137612, 5097053, -1559610, -5443334, 5290326, -10698764, 1620276, -5255430, 5214627, +-5200132, 2987687, 1881733, 1400159, -4005594, 13980655, 11272142, 44399224, -30859340, 12913356, +8177081, -26672820, -691490, -5250061, -7529615, -13709536, -686658, 1566053, 17726404, 6584185, +9299678, 13278428, 10803453, 395674, 14787036, -17003776, -2401961, 20476794, 2328409, -28113246, +-6416145, -36786932, -6831146, 6411313, -6772090, -8578660, -1557463, 32875290, 8354785, 2515240, +4058744, 8227547, -2437931, -18864034, -5733782, -2096481, 3544422, -4351876, -8770323, 23805930, +12858058, -4925254, -1092532, -5119601, -21489868, -17675938, -12872554, -10734734, 24067922, 5785858, +8907225, -14484240, -14026289, 4521527, 9818295, 9019431, -4033511, -2849174, -16294569, -10792179, +14294188, 643171, -39494372, 13903346, 21599390, 6900939, -17194364, -10597832, -8551817, 2831994, +-12372727, 6123550, -29065654, -38890392, 16123844, 14026826, -7746511, -14299557, 10936597, -6403796, +2850248, 3376381, -5705327, 6222334, -3526168, -3660386, -2085207, 9346386, -6630893, -1967095, +-7256884, -106300, 630286, 6248104, 6493991, -731755, 3833795, -4599373, 7583839, -5276368, +6197101, -14310831, -6497749, -1977296, 4147328, -4681515, -9319005, -7162932, 3423626, 7368017, +-264141, 9521406, 2688113, 3764002, 596464, 6199249, -3499325, 5925445, -1421634, -11787538, +-9059160, -3474092, 5374078, -6626598, 3905736, -9889699, -4350265, 4523138, -36686000, 32114008, +39024608, -3651259, 28363964, 1160178, 4306779, 12372190, -25116968, 9124121, 18529026, 18318036, +7648800, 5673652, -18174154, 13267154, 7766375, -11005854, 5817533, -2190433, 21590800, 5960341, +5489505, 12780212, -5174899, -14738717, 4211216, 27551678, -9921374, -5370857, 24841018, -9154723, +-11187853, -9078487, 8520141, 32004486, 44471700, -2781528, -28937342, 43663176, 14986752, -28777354, +32518808, 12461311, -8133595, -8367133, -12271258, -20282984, -1207423, 10633265, -17444546, -11398306, +-36788004, -5001490, 21328270, -44511432, -24158654, 7015829, 7119982, 8767639, 26941792, 23878408, +-39602820, 314069, 1461363, -28002114, 7761543, 13306346, -14415521, -10263898, -12180527, 8097624, +31026306, 9711995, 16109349, -21268678, 10776073, -24081882, 2050310, -16202227, -65805340, 50267760, +12868259, -18373334, 33983392, -11766600, -15567109, 9132711, 6899328, 8732742, 13252658, 5356361, +-13429826, -4274566, 12999255, -459025, 4964982, 2074469, -2203855, 3173444, -5925445, 4309463, +12139188, 4369056, -7261179, -5362804, 3662533, -3305514, -6595459, 2449742, 7547332, 4382478, +-22805740, -6920266, -16813186, -8733279, 9695352, -7511898, -9427990, 8864276, 5689221, -9863392, +12400644, -9257265, -4100083, 4430796, -7299834, 8149164, -3718368, -13539884, 11138461, -20889110, +24067386, 79678088, -25418154, 678068, 6154688, 35963908, 31936304, -10464688, -13820668, -20120848, +889058, 15223512, -473520, -10294500, -10533944, 14367739, -7813083, -19350976, -17248052, -3506304, +29326574, 20529944, -23252416, 1553168, 464393, -10165651, 11587285, 4263292, -8269423, -2751464, +-6494528, -3129421, 37431712, -13926968, -24785720, -17383344, -14067092, 33063196, 961536, -7667054, +30494804, 20930986, 8367670, 15497316, 29988536, -18204756, 4665945, 29135448, 17082158, 22260816, +-25229174, -7118372, -893353, 10669773, 10094784, -23917600, 2335925, -31425202, -47231220, -2478733, +-12455942, 21973590, 24472724, -6387153, -1884417, 4977330, -17137456, -45779520, 30880278, -22172232, +4822175, -8522289, -15431281, -8960912, -17903034, -36279052, 21499532, 19110994, 23211078, 4499515, +-28795608, -50658064, -14993194, -13990856, -6142877, 16058346, -10311143, -2500208, 3119757, 2188286, +-8004746, -3649112, -6418292, 825171, -2826089, 5401458, -3120294, -3890704, 5941551, 7694971, +6120866, -12218108, 4078608, 746787, -1045825, 198105, -26884348, 1358820, 3790846, 4020626, +-17691508, 11616276, -2482491, -14724759, -12031277, 7243463, 9572408, -1713692, 5712307, -9050570, +-6345814, -6146098, 790274, 11084237, 2858838, 10591926, -189515, 4948876, -15590194, -2356863, +-3685619, -2876554, 12297565, 5901285, -366683, 3959960, 1898376, -12279848, -3957276, -38960724, +-22618908, -18070002, -46261628, 53382684, -1402844, 28199682, -6578816, 1569811, -32300838, -17389248, +-16756278, 3883724, 24978992, -982474, -26388816, -19425600, -37643776, -41528040, 35574676, 13363791, +-32647120, -9906342, 15824270, 29950418, 3980898, -36793376, -22665616, 7452305, 10146860, 9342628, +21383032, -22814330, -22003654, -3183645, -7936026, 3209951, 6229313, -44248900, -8384313, -30813170, +-20039244, -41150620, -15862388, 56761216, 9558450, 1953673, 13680545, 14198088, 4230543, 42223824, +33093260, -10842645, 11107322, 56994216, -15093589, -13108777, -13780403, -42169064, -1840930, -23012972, +-52796960, -54985780, -29125784, -28303834, 12672301, -21154324, 1651952, 11355894, -37687264, -13561896, +21475, 11274, 9456444, 24678346, 16076063, 29724394, 39798240, 29210072, -3796214, -20953534, +-30878130, -2424509, 12465069, 3925600, -4537096, -190052, 8467528, 7217156, 18623516, -1921461, +2779381, 539018, -6507949, 6371047, 747324, -2822867, 15880105, 7185481, 3428995, -14875082, +9932112, -5191542, 7435126, -14093935, -39982924, -1625645, 15472620, -2723009, -21327196, -13293461, +-15667504, -11388643, 4815732, 7201050, 7665443, 2429341, -1627793, 6204617, 15347529, 26271242, +24325084, 30815316, 25914758, -2175401, 17366700, 40119828, 2638721, -17110612, -25095494, -24720758, +-34323768, -27347130, -13429289, -14477261, -2214056, -4151086, 35050692, -22859964, 6781754, -26508002, +-9223442, -28928216, 3548717, 35430260, -1003412, 21950504, -43813500, 38483444, 12647605, -7721815, +30185030, 4391604, 13613973, -12030203, -14565308, -153008, 9088688, 7252053, -30684320, 28070296, +-33983928, 4240207, 9207336, -11357504, 19650012, -20883204, -12166569, -2225867, -7740605, -10534481, +-2604361, 4581657, -15851114, -18294414, -6223408, -3144453, -4787278, 11227045, 5783174, 4608500, +-22572738, 5985574, 26818312, 35990752, -26812944, -13313325, 30254824, 41834056, -25651156, -15637439, +17308182, 7427609, -20447802, 16733193, -47601660, -9290551, 18930068, 37804840, 4577899, -23433878, +-21544630, 5739687, 44940392, 3947075, 6432251, 1352915, 14666776, -2913062, 33291366, -385473, +-37615860, 23480586, -24679956, -7477538, 9919227, -14251238, 3007551, -30353070, -11696270, 28069222, +12543452, -12641699, -18416282, -9903121, 1937567, -14672682, -4831838, -3284576, -9383967, -5558762, +-4756140, -19047106, 11582453, -7168838, -8863739, -27567248, -7379828, 20133196, -14442901, -7812009, +-7750806, -15792058, 29765198, 12311524, 696322, -1096290, -17263084, -25268366, 1138703, 22395570, +17996986, 6083821, -19404662, -11176042, -8938364, 10859288, 1519345, -16952772, -4663261, 967978, +6137509, -15095736, -10578504, -8957691, 22959822, 11909407, 1003949, -14666776, -13122199, 13036299, +27690728, -404801, -12677133, -17481590, -6432788, 7741679, 68183, -4097399, 447750, -3543348, +-3233574, 2617783, 8378945, 125091, -1859184, 48855, -76773, -2177549, 519154, 75162, +191663, -3031710, 1941862, 419833, -57321708, -15415711, 9221832, -18843096, 55827596, 41513008, +26599270, 14685030, 37533184, 27132920, 8519605, 18585398, -45026828, -59628104, -8739722, 894964, +-15833934, 8340827, -3267933, -15341623, -20066088, -15717970, 30667678, 27357332, -22049826, -2464774, +-3418794, -5121212, -8097087, -10966662, -16786342, -22630182, -4780836, 40842992, -13355738, -22192096, +-11145440, 38356204, -18158048, -17158932, 58474368, 21268678, 9524090, -13990856, -32719598, -22251152, +-33735896, 9353365, 27151710, 74674448, -65690452, -27365920, 37956772, 53410604, 8895414, -2776696, +67768680, 33017024, -21860846, 22087944, -8207146, 647466, -47544216, -23404350, -16848082, -76951320, +-33165200, -12060805, 41294500, -22103512, -13389561, 31493384, -2421825, -3690988, 7082401, 22299470, +-21486110, 15897821, 23305566, 1000727, -4853850, -43220256, 19803020, 16124381, -50836308, -3177202, +5117991, 3758097, -4643934, -21925272, 5622649, 4302484, 5957657, -3048353, -6825240, 16648367, +3101503, -2864743, 10788421, 5122822, 29329258, -3553012, 9390409, 2387465, -23907398, -20018306, +14072997, -10914586, 8422431, 11599096, 6535867, 7361574, -141734, 20131586, -6596533, -4389457, +-8074002, 6151467, 14944339, -22482006, -8893267, 11575474, 4802847, -12507482, -23797876, -5470715, +6116571, 49370112, 18023294, -4037269, 12719546, -2421288, -4625680, -18086644, 8655970, 7608535, +-14391899, -6896107, -52210160, -2034741, 21417392, -4948339, -21804476, 9610526, -4941897, 23556286, +4633733, -11270531, -235686, 25215216, -14352170, 4140349, 9021579, -7541963, -272730, -13486197, +27685896, -1561758, 4079145, 550293, 13356811, -5961952, -5266704, -8560407, 5499169, 10536092, +-4612795, 12497818, -5404680, 7746511, -13052942, -10131828, 15756088, 20378546, -26212186, 1345399, +-1611, 2577517, 8214125, -16341277, 25228638, -22499724, 20300162, 2976949, -35357244, -1793686, +27542552, -35822176, 17129940, 294205, 4621385, -8493298, -5410048, 7408819, -10453950, 36969468, +-27264452, 4219806, -7330973, -3155190, 9063455, 667331, -4488241, -691490, 11119133, -190589, +-12795244, 3760781, 6471979, -21231634, 16630113, 7678328, 771484, 15512348, -5628555, -4576825, +7214472, 3526168, 4573604, 2784750, -4242354, 8842264, 3722126, 824097, -9366787, -1360431, +4566087, 8492224, -14210973, 7625178, 8845485, -12359842, 5952288, 2040646, 2134599, 6827925, +-3738232, 1685775, -2343979, -18001282, -276489, -4190278, 7953743, -4912369, 3036005, 2219961, +-752156, 2655364, 4609037, -2786897, 4832, 1056025, -130460, 1557999, 5534602, -5399311, +5185100, -3871376, -26125212, -74351792, -105827456, 35454956, 94358288, 20614770, 261303120, 214914256, +145441008, 245756960, 128209072, -8976482, -30627948, -97371744, -224212320, -185459376, -180080992, -250747712, +-185156576, -54676008, -40101572, -6868190, 87144888, 40252432, -10856067, 54944444, 91399592, 44422308, +42788076, 82849384, 49507552, 37850472, 75315472, 117999928, 49192944, 69087232, 111020608, 18638010, +7406134, 97752920, 57919244, -38123204, 47185584, 60537564, -63869384, -19506130, 70173864, -14703284, +-42353748, 90369336, 47950088, -56962540, 48535276, 64142652, -86594056, -81399832, -34810708, -209069888, +-276921248, -174123344, -244870048, -326615072, -227492608, -233121168, -300910240, -238358880, -165195712, -179405616, +-107215808, 9454834, 66267588, 144245936, 236810000, 294972992, 363720928, 403843968, 441564512, 467922176, +420399456, 330134816, 305214336, 195104256, 58661736, 45617384, -31954020, -151459344, -118860000, -51153060, +-112661824, -116146120, -25021942, -82155744, -156194000, -94966024, -68860672, -140171088, -119204136, -42999600, +-106066368, -126192584, -10868952, -7496329, -57249228, 21065740, 12053826, -91968672, -68215352, -40386652, +-130109056, -179216096, -146507248, -200056896, -247487824, -184275568, -148000272, -140817488, -62255552, 26839788, +72679976, 108129024, 150285744, 169405856, 152055264, 198335680, 255121600, 264124912, 246830160, 251007552, +242315616, 195974528, 221865120, 199703088, 84766008, 8872866, -51882668, -112039592, -118010672, -98192080, +-115197464, -113159504, -98137856, -97368520, -103357312, -86001888, -77017352, -74287904, -70239896, -55718612, +-52980032, -55573120, -45278084, -32722282, -30918932, -25280178, -14262513, -8874476, -7583839, 3173981, +4186519, 2573759, 5940477, 11767137, 10277320, 12956843, 15501611, 13358959, 8629663, 5589900, +3449396, 3947612, 2647847, 3586298, 2702071, -984084, -5224828, -3391951, -157303, 5545340, +13037910, 21184390, 21923124, 24856586, 30047054, 32565516, 34510600, 40690520, 38627864, 32845762, +29588030, 28043988, 19981798, 17135846, 15855409, 9361418, 2532957, 3197603, -2459406, -9362492, +-13837311, -20078972, -30206504, -33157684, -34616900, -36128728, -37577204, -34288872, -32960652, -30710626, +-26059714, -19342386, -16582332, -11716134, -8262444, -7092065, -5049271, -410706, 1660542, 5151277, +6913287, 9184788, 9975598, 11004780, 11106785, 11664057, 9825275, 9531069, 8243116, 7568806, +5897527, 5883569, 4462471, 4192425, 2918430, 2924873, 1637993, 1674500, 719407, 1017907, +98247, 421981, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 4089346, -9670656, 198642, 363462, -4604205, -3747896, 2832531, 1675037, 285078, 3923453, -5948530, --2070711, 9721658, 619549, 1917166, -2590939, -3243774, 4515085, 3839701, -1640141, 3779034, -116501, 638876, -3739843, 1357747, -3409667, -2600603, -3349538, 1151051, 89657, -1051193, --416075, 1158031, 2838437, -1352378, -5312875, 115964, -3800509, -4776541, -1304060, 2189897, --783295, 1956895, 1182727, 1795833, -801548, -651224, -948114, -752693, 1577327, -31675, -3289945, -424128, 4084514, 711354, 889595, 3953518, 1355599, 1030792, 5037997, -2042257, -1635846, -1742146, -3639448, 3323768, -1236951, 33823, 1173063, -578747, -3030100, -896038, -2102923, -1367410, -121333, -2873870, 1353989, 217433, -1979980, 257698, -3131568, 487479, --3005940, -242666, -86973, -374199, 1665374, 848793, 403190, 964757, -369367, 1751273, -1207960, -119722, 338766, 407485, -109522, 84289, 527207, -703301, 350577, -904628, -745177, 106837, -192737, -18790, 607738, 190052, -652835, 230854, -79994, -328565, --962610, -12741020, -6609418, -2979634, -2759517, -16106, 37581, 943282, 185757, -717796, --5212480, -2369748, -5341329, -8377334, -6990060, 3947612, 4878009, 4926328, -1933809, -584652, --547071, -1101122, 1822677, 758599, -1772748, -3795141, 2743947, 2335389, 3426310, 895501, --1138703, -2076080, 980863, 1634235, -376883, 3473555, -1675574, -93416, 3386045, -2576444, --4082367, 331249, 5680631, 1307281, 1269163, 798864, 65498, 732292, -859530, 1014686, --4458713, 737124, 4663798, -1056025, 87510, 469225, -1566053, -878321, -623844, -746251, --1221918, 2852395, -2645700, 2799782, 2398202, 5228586, -339302, 2944737, 6684043, -1216013, --5344013, -6003828, -264677, -772557, 350040, -5092221, 1507534, -3570192, -2640868, 1243393, -3754875, -1517197, -2816425, -3387119, -636192, -355409, 967978, 320512, 2172180, 1287417, --88047, 1102196, 343061, 2135673, 1631014, 1028108, 492311, 484794, -337155, 1438814, -102005, 449361, -138513, 55835, -1031329, 26307, -169651, 8912594, 6919729, 3031173, -3518115, -2247879, 1559610, 6182606, 2946348, 6653978, -2619393, 2720325, 3726958, -126702, -4793184, -2442763, 2978560, 615791, -3145527, -723165, -632434, -129386, -926102, 426276, --1601486, 551366, -1184337, 6093485, -1433445, -267362, -62277, -2654827, -7711614, 4427038, --1865090, 1750199, -3090766, -2814277, -3302830, -2092723, 1946157, 5850283, 4516158, 1988033, --375273, -1175210, 1788854, 4224637, -969589, -1297080, 5101885, -2212982, 2418604, -2497524, --2059437, -1161252, 1869385, 2108829, -3665218, -2420214, 51540, 3939559, 4964446, 2790655, -3859028, -467078, 3611531, 1510218, 3795677, -2092186, 1493038, 8865349, 4049081, 3804804, --951872, -2399276, -6045704, 3554622, 1449552, -2400350, -2534568, -740882, 1779727, -1746441, --891206, -1563905, 4832, 1334124, -585189, -2392297, 663572, 928787, 1366337, 1540283, -148713, 2149631, 969052, 940061, 588947, -599685, 1409823, 215285, -56908, -630286, --1133871, -1105417, 236760, 932545, 299574, 136365, 210453, 10737, 1260573, -1712618, --479963, 626528, -769873, 801548, 2697240, 10166724, 1447941, 3688303, 7362648, 137976, --4211753, -1808181, -1266479, 286689, -2655901, -7231651, 2896419, 237834, 151398, 3014530, --4800163, -2222646, 7542500, -1858647, -2858838, -4481799, 144955, -4236985, -715112, -1421634, --1281511, 529355, 6088116, -210453, -1925756, 1774358, -4861903, 6489696, -843424, -1479616, -8118562, -4704063, 371515, -5556077, -2547989, 451508, 241592, 2107218, 2549600, -4963372, -1453310, 2047089, 1665911, 449898, 2312840, 1668058, 3385508, -3154654, -1692217, 6390375, --2692408, 2423972, 588947, 1814087, 1634235, -577673, -2199560, -369367, 4508642, -2732673, --325881, -1469416, 1023813, 4010963, -2301566, -5086852, -9780714, 570157, -431107, -879931, -9127, -3791919, -2658048, -5482526, -2173790, 2663417, -122943, 1639604, -679679, 3342022, -2314451, -79457, 1725503, -185757, -244813, 1125281, -2151242, -1182190, -1753420, -64961, --2087354, 1168768, -111669, 527207, -799401, -715649, -124554, -796180, 433255, 713501, --1939178, 846645, 729608, 386010, -1851668, 898185, 601832, 1648731, 1763621, -228707, --666257, -1012539, 858457, -544924, -376883, 268972, -295816, -1200443, -4437775, -10857677, -5470178, -3547106, -6245956, 315680, -11696270, 2549063, 3526168, -1253057, 8476655, -3228742, --10295037, 2490007, 3851512, -3540664, -7296076, 12425877, -820876, -714038, 3107946, -2715493, --1631014, 1291711, -6113349, 3583077, -688805, 1777043, -1316408, 5822365, -1512902, 3274376, -2809982, -5704791, -2857227, -3205656, 5906654, -2942053, -1828582, 4546760, -1628866, -3344706, -2573222, 8320963, -4268124, 4066260, -4408784, 5478231, -3064459, 2897492, 496069, -2913062, --8551817, 4773320, 6061273, -549756, -2011655, 3540664, 4229469, 4187593, -5907728, -643171, --5219996, -450435, 1751273, -3576097, 1320703, 4072166, -4373888, -66572, 759672, -4094178, --3076270, 3888019, -2831994, 3080029, -1869921, -5265630, 1000727, -5104032, 1254131, -1911797, -1714766, -5623723, 5132486, -4230006, 448824, -3929895, -222801, -209380, 978716, -382252, --120796, -1202591, 1278290, -3794067, 1245004, -3100430, -2627446, 112743, 2204392, 1137093, -322659, 761283, 41339, 1418413, 2829310, -2423435, 2332704, -1549410, -442919, 1601486, -1125281, -1705102, -132607, -4410932, 5568425, -6135361, -6083285, -10435697, 4391067, 11014444, -1675037, -1986959, -956704, -1866163, 9593883, -5768678, -5251672, -1251983, -5790153, -1790465, --6291054, -2727304, -4418985, -8743480, -2459406, -1939715, -316217, -974421, 2254858, 5191542, -1848983, 2562485, -8031589, 977105, -142808, -2529199, 2769717, 1466195, -2353105, -1051730, --5724118, -6349573, -940061, 7001334, -2073396, -3628711, -789737, -2360622, -4948339, 64425, --5167383, 10513543, 8865886, 2279017, -2733210, -2486249, 909996, 1565516, 1799054, 1714766, --662499, 3899830, -3740917, 1713155, -3294777, 79457, -61740, 2179159, 1515050, 4920959, --2166811, -3059091, -2796024, -11462731, 329639, 2360085, -1184337, 4123706, 1764158, -3466039, -964757, -6029061, -2263985, 473520, 4566087, 1934883, 6258841, 1239098, -790274, 10737, -2295123, -2632278, -368830, 574452, -1120987, 1582696, -2298881, 1158031, -1762547, -1433445, --325344, -1956358, -1935420, -2388002, -1290101, -717796, 1720671, 1443109, -1799054, -2528125, --811749, -1940788, 1272921, -2161979, 993211, -1270237, -406948, 2097018, 91805, 1749125, -1155346, -1144609, -1114544, -10872173, 1846836, 10875931, 10450729, -11224897, -10047539, 2519535, --7974681, -4393752, 1258962, -671089, -3202972, 8227547, 3784940, -11851425, -862752, 593242, --20938, 7398618, 2877628, -5563594, 7988103, 2838974, 1123671, -4342212, -4428112, 3274376, --2812667, -8062191, -1370632, -1143535, -3476776, -4854387, -6340446, 6726993, 557809, 905701, --4369056, 6442, 4922570, -3924526, -7998303, -8288213, 8665633, 1826972, 8184597, -1394791, -2398739, 5869610, 12230456, 3820910, -1452236, -6307697, -2591476, -3195993, 1919850, 555125, --4767414, -2068564, 7140920, 4889821, 9676024, 4393215, -6570226, -6458020, 8017630, 4123169, --4106526, -54761, 8256001, 536871, -389768, -6460705, 7094749, 5161477, -1181653, 9676024, --1395328, -2921115, -10153303, -1452236, 577136, 5340255, -6987912, -538482, 3212636, -1825361, --5010080, -4864588, -578210, -576599, -864899, -6055367, -5200669, -3223373, 1964411, -213675, --2359011, -914291, -264677, 425202, 558346, 785442, -442919, 1906966, -1587527, -516470, -112206, -1283658, -3874061, 164283, 2350421, -812286, -3412889, 200790, -773094, 1141924, -268972, -536334, -244813, 1046898, -468688, 2019172, 1161789, -163209, -1855426, 1334124, --1447941, 1348620, 1791538, -4408247, 1742683, -1649268, -892279, 5393942, -8991514, 5403069, --5897527, 1061394, 4706748, -63888, -2401424, 1758789, -6177237, 242129, -4814122, -13953812, --4277788, 5894843, 3806415, 2141578, -3406446, 2836826, 1260036, 14880988, 2541010, -5057861, -5521718, 1074279, 1159104, 9884867, -2877628, -2808909, 3418257, -7006166, 8370355, 7730405, --215285, 4361540, -1666984, -4301947, -594853, -5400385, 411243, -5289252, 2013803, -104690, -1477469, 576063, -9067213, -1889786, -1207423, 469225, -4592394, 1936493, 1957431, -1767379, -11857868, -5233418, -10628433, 6281390, 10362145, 2327872, 2642479, -4632659, 8883066, -3084324, -1452773, 3975529, 1122060, -4086662, 4211216, 1806571, 461172, -66572, -8210367, -2921652, -3953518, 7207492, -2860448, -5401995, -7476465, -2461016, 2447058, 1328756, 3661460, -9199820, -1672890, 6126771, 760746, -396748, 2311766, -1952063, -1092532, -296353, -549219, 3194382, --962610, 987843, -1015760, -711891, -759672, -2383707, -1372242, 1068910, -1695975, 2185065, --408022, -443992, -1132261, -1359894, -7008313, 611496, 3662533, -230854, 1240709, -713501, -2247879, 731218, -1418950, -1649804, 1232119, 30340186, -8278013, 134755, -3016678, -1991791, --6721624, -200790, -17757006, 9200357, -6351183, -498753, 10353019, 5041218, -6790344, -7387344, --2699924, -6324340, 5713380, -14777372, 2766496, 6051072, 8474507, 1607392, 2558727, 289373, -1419487, -1998234, -4583804, -13511967, -1943473, 1653562, 6236830, -4903242, 6015639, 2274185, --2406256, -920734, 4668630, -4931696, -4566087, -2711198, -3479461, -583042, -11873437, -5634460, --2801929, -394063, 9482751, 2050847, 9048959, 3040300, -370978, -5719823, 731218, 498216, -1414118, 3054796, 12668543, 1413581, -11779485, 2989297, -4594005, -392990, -4417374, -5054103, --2297271, 4773320, 3172370, -21000242, -7815767, -6292664, 4008278, -964757, -4453881, -2948495, -11860552, -4918275, 9123047, -8619999, -6390375, -9328669, -5011690, -9912248, -1499481, 13092671, -3119757, -1651415, 1613834, 5528697, -73014, 6830072, -3841848, 2593087, 3895535, 4613332, -1887638, -890132, -9086003, -3449396, -4647692, 2684, 2996814, 2488934, -1806571, -722091, -3889630, 1536525, -2971581, -1327682, -2071785, -995896, 208306, 1922535, -1559610, -1629403, -4940286, 4071629, 1347546, -641024, 1817308, 3322157, 294742, -3058554, -250182, -3118683, -830539, -2805151, 1671816, 5027259, -1581085, -4653597, -5139465, 3844533, -9520332, 592169, --22202296, 5401995, -7279970, 2170032, -7567196, -16367583, -2536715, -3808562, 11603391, 4926865, -4168266, -391916, 15403900, -11589432, 2815351, 4378719, 11897059, -13727789, -7847979, -2721936, -1117228, -923955, -3913789, -1280437, 4099010, -7397008, 1493575, 4364761, -863825, 588411, --5982890, -6840273, -4247723, 18428094, 149250, -4492536, 7153268, -4438849, -9295920, -7610682, --5047661, -1343788, 3250217, 671089, 616865, 10225780, 9337259, -1701881, 3313031, 2245194, --11849815, -8131984, -537408, -960462, -3121368, -8082592, 9885941, 11955578, -9841381, 6447820, -6041945, -1935957, -9409200, -15160698, -14708652, -11339787, -6699612, -13087839, 1158567, -10719165, -6381248, 5751498, 919123, 105227, -18296560, 1170379, 302795, 1320166, -9398462, 3117610, -10336913, 1369021, 2591476, -8299488, -5168457, -1044751, -8761196, 1999307, 5378373, -2605435, --3285113, -4037806, 3337727, 5492190, -9728101, -5332739, -532039, 6418829, 2336462, -2853469, -2208150, -378494, -164819, 2863670, -1923072, 3700651, -4357781, -1555852, 3067681, 2684892, --1136019, 7205345, 393526, -4592931, -3935801, -699006, -3256659, -2925947, 310848, 1994476, --1431835, -1533303, -9078487, -7632157, -5282273, -5974837, -1884954, -13559212, 589484, 14780593, --5228049, 7776039, -3131568, 14734422, 12481175, 5137318, -15354508, -3969624, 20463372, -5334887, -15163382, 2335389, -14585172, -7426536, 17134236, 320512, -11568494, 220117, -9868224, -1405528, -3452617, 1356673, -1999844, -17161616, -15228880, 4142496, 10964515, -9826348, -893890, 4233764, --767189, 1626719, 18234284, 3310346, 2627983, 1529008, 6005975, -8140574, -5763846, -4203699, --19286014, -6585796, -7258495, -5036386, 5048734, 3345780, -1250909, -1966558, -7649337, -11589432, -15032386, -3293703, -13269838, -6249178, 2660195, 10044855, -8029442, -2550674, -8519605, -1640141, --10173167, -1998770, -2190970, -20428476, 1840930, -6910603, 14091788, -3682398, -11502996, -21665426, --14283987, -2739652, 1768990, 7551626, -5617817, -5155035, -11804181, 10750303, 18205830, 1895691, --2181307, 6172405, -4780836, 6829535, -5158793, -2514167, 2331094, 5216775, 3769371, -6395743, -209380, 1301912, -94489, -481036, -1608465, 1697586, 6465537, -2738042, -5694053, -272730, --1278290, 2940979, -46171, 6268505, 439697, 2277407, 228170, -3882114, 1019518, -1569811, -6766721, 367220, -4292283, -842350, -1029718, 4492536, 466541, -4979478, -739808, 3453154, --1586990, 817118, 7108708, -24982214, -12676059, -8630200, -13579076, -7350837, -5524939, -14191646, -14915885, -4357781, 22486302, -11377905, -16869020, -3350611, -11305965, 19247360, -6586333, -10237055, --4655745, 5119601, 9874667, 8371965, -1977833, -2322504, -4363687, 2071785, 15976205, -479963, -1581085, -5180268, -1946157, -8390219, -2659659, 3641059, 2806224, -6945499, 397284, -10251013, -2113124, -3100967, -2982855, 4110821, 2008971, -4801774, -1832877, 8661338, 3346317, -7269769, --9425306, 15800648, -682900, -25295210, 13204877, -2851322, -10652593, 5035313, -1485522, 1108102, --2388002, 8731132, 3466039, 850404, 24320790, 23890756, -8378945, 2565706, -17926656, -3872450, --3390340, 7596724, -2685965, 1195075, 7460358, -5492190, 13920526, -5901285, 1592896, -18807124, -7862475, -4929549, -13059922, 6548752, -2966212, 26368414, 6362457, 4989679, 9845676, 1047435, --9147207, -780610, -3728032, -2313377, 2723546, -3316252, 5458367, 3254512, -3958349, 6686727, -3895535, -4461398, -1077500, 358630, 763430, -1856500, 1522566, 2317135, -549219, -2023467, -548145, 2055679, 1332514, 1546188, -4155918, 4268661, -8412230, 7514582, -4903779, -2967286, --479426, 3897683, 5729487, 1464047, -6357626, 19864, -2503966, -1593970, 1656247, -6252936, --11169062, 3275450, 30045980, -22536230, -7105487, -14271639, -9365176, 11325829, -12837120, 27477590, --3127273, 8386998, 1628866, 6669548, -16990890, 3126736, 4595615, -1269700, -2462627, -1505923, -5163625, -10506564, -6257231, -1491427, -2859375, -12983686, -11415486, -3093987, -5215164, 15683073, --3965866, -7434589, -5251135, 5392869, -7932805, -3409130, -13818520, 6531035, -5201743, 5756330, --4808753, 7319698, -3606699, -24046448, -12123082, 3554622, -1746441, -1468342, -7371238, -14318884, --692027, 6313602, 4375498, -3252901, 4855998, 7371775, 22940494, -9778567, 10940892, -25661892, -1755568, 3773129, -2910377, -7369090, 5346161, 968515, 1331440, 5768141, 18272402, 12305618, -9434969, -4855998, -5704254, 8977019, -10779831, 2695092, 9322227, -6492917, 22830436, -342524, -7191386, -6180458, 13234405, -12441983, -12108587, 408559, 4746476, -5615670, -1217086, 14176613, -287763, 12909061, 4873178, -1983201, -1880122, -7348689, -432718, -377420, 3801583, -464930, --5752572, 1041530, 2825552, 7328288, -10509785, 1858110, -5250598, 2272038, 6267968, -2070174, -5906, -5556077, 2011655, 2100239, -3434900, -12836047, -7870528, -5059472, 2677375, -6770479, --3674882, -4531728, -3895535, 2612951, 5157719, -112743, 4314295, 1613834, 2391760, 785979, --9096741, 7920994, -6659347, 12236899, 35274568, 25327422, -6951942, -15535434, -10862509, 21734146, --25802552, 1564979, -6694781, -6085432, 10261214, -18573050, 2294050, -9408663, -446677, -12867185, --10283762, 1710471, 471373, 712428, -12822625, 20286204, 3857954, -8807904, 3428995, -2472291, -1548873, 30151744, 9250286, -8184597, -7582228, 1635846, 9077413, 2688650, -22629646, -5337571, --15713675, -4995047, -7475928, 7747048, -4403415, -1952063, -374736, -595927, -11214160, -12582644, -8081518, -4658429, 2019708, -425202, 10924249, -8886824, -6711424, 3011309, 4426501, -11822434, -13151727, -8218957, -19769734, -18041010, -6750078, -5057861, -8139500, -3912178, -28010702, 9971303, --13421773, -4012573, -11247446, 15561740, 4749697, 7532836, -258235, -2196339, -13683766, -3894999, -17871896, -14762876, 21709450, 16938814, 5636608, -3791919, 500901, -2937758, 2897492, -9543954, --8068096, -4680441, 1076426, -1165010, 1130113, 4265440, -7317551, -1590212, 6831683, 7562364, --3179350, 4762582, -4202089, -6176163, -3070902, -1831267, 4425964, 1417876, 1494112, -6107981, --4382478, 2313914, -2598992, 2161979, 2332704, 4600447, 8518531, 3650185, 4658966, -5772436, --3684008, -1885491, 2313377, -2736968, 911070, -2523293, 963683, 9074192, 3937411, 2563022, --1992865, 5759551, 1501628, -2201708, -35114040, -4214437, 23206246, -28475096, -11485279, -570694, --8849780, 10491531, -6037114, 32450626, -3329674, -6900939, -5426691, -1300301, 9401147, -6294275, --6300717, 26508538, -19383188, -2218888, 6091874, -4139812, 16460999, 9441412, -1189169, -1936493, -6971269, 9512816, 10176388, 8504035, 17431124, 5701032, 7488276, 4681515, -5685463, 29353954, -3661997, 5593121, 7371775, 4487167, 21081310, -1369558, 5197448, 7408282, 6091338, 3584150, -13910862, -8100309, -6648610, 13990856, -2549063, -13846438, -3593814, -24312200, -8317741, -4554813, -23147190, -21770652, -2834142, 1093069, -752156, -1118302, 13651017, 37536940, -6526203, 4835060, -4276714, 5817533, 17840758, -19186156, -19849728, -17893370, 31844498, 2508261, -11976516, 29390998, --11148124, 25645250, -13721347, 9936944, 1081795, -33741264, -4923643, -8315594, 9715753, -540092, --2916283, 382789, 6110128, -743566, -10275172, 5708549, 158914, -4627828, -88047, -8850854, -12140262, -1132261, 4364761, -5583995, -5192079, -4970888, -6878390, -469225, 207232, 11756399, --512712, 1467268, -4622996, 1480153, -10961830, 3685619, -10564546, -1764158, -2275796, -9249212, -5017596, -7279433, -7509214, 1858110, -10478110, 3431142, 8396661, 8038568, -3938485, -3479461, -2031520, 3391414, 7302518, 9520869, 545461, 20874614, 1749125, -20756504, -61588756, 12452184, --14897631, -23613730, 26482768, -15803869, -8343511, -23251880, 5937793, -4486630, -22993108, -7257421, --13706851, 6557342, -12703440, 785979, 4769025, 10454487, 5104569, 17587892, 2617783, 51003, --1932735, -14482630, -11378979, -10260677, 8322036, 13194676, 5930813, 4806606, -497142, 5207648, -10085657, 23977192, -11390253, -6085969, 4052302, -10630044, 11330124, 2671470, -10536629, 24401320, -8721468, -20201378, 7933342, -19425600, 2201708, 3931506, 10205379, -5388037, -6744710, 30976914, -11843909, -13054553, 7920457, 16475495, -12751221, -26660472, 14793478, -1970316, -420907, 2394444, -6425271, 41853384, -3986267, 5401995, 7873749, 59056, 9469329, 5789616, -22213034, 4886062, --11866458, -10087268, -6294275, 5234492, -35806604, -4151086, 11046119, 1962263, 17650704, -12850005, -12475269, -8326331, -3831111, -4602595, 5535139, 2667175, -4465692, 229781, -99858, -6131603, -4958003, -7791608, 8310225, 1320166, 5761699, 5177583, -3699041, -2774012, 1383516, -2030446, -1132798, 2143726, -3594888, -1073742, -4118337, -2633889, -2733747, -6966437, 44560, 1188632, -4075387, -2117419, 3921842, 9906879, -5184563, 1778117, -5202279, 2754148, 2993055, -7999914, --6979, 2811593, -7828652, -3664144, 6634651, 244276, 1242856, 1668595, 158377, 183610, --19000398, -21881784, 46933792, 10034654, -3016141, -5646809, 10602127, 42410656, 19473918, 5087389, --1202054, 14232985, 35439384, 8833137, 12241194, 11068668, 25282862, -16245714, 16391743, 7303592, --48431660, 14398341, -6809134, 14414984, -15045270, 11447698, 7623030, 15109158, -62814, 6442451, -2420751, -13697724, 6922414, 13702019, -11376831, 6921877, -11041287, -6613176, 34827888, 3626563, -30849140, -21818434, 9664213, -1038845, -4319664, -602906, -2586107, 4871567, 11370926, 7917772, --761283, 17679696, -27928024, -26318486, 19268834, -14932528, -3768297, -3412352, -18014704, 9247601, --4663798, 5271536, 2928094, 29902636, 14586246, 15817291, 6019934, 4336843, -26961120, -6109591, -13458817, -125091, 476205, 106837, -8551280, -23431730, 4655208, 2316061, -17493938, 2634426, --8324721, -6828461, 7562901, 5133560, 26894012, -3681861, 6962679, 6540699, -4978941, -6750615, --579284, -6405944, -2355790, 15911780, 6760279, 3015067, 970126, -124017, 563178, -28991, --747861, -10517838, -3074123, 6710350, -1671279, 840740, -3763465, -5213554, -1997697, 1926830, -12991202, -8322573, -8021389, 7719667, 3904662, -9363566, 6975027, 4283156, -6559489, 8755291, -938450, -4898410, -2149631, -3322157, -1367947, -1410897, 4486630, 2374580, 2370285, 5102958, -7320772, 5495948, -1112933, 3987340, 12480101, -42824584, 36589900, -15580531, 7480223, 23197656, --33683280, -1162862, -2409477, 8018167, 13283260, 14513768, 26002268, 4047470, -15828028, 8788040, -27671938, -38747048, -22075596, 25621628, 1915555, -431644, 1817845, 1988033, -93952, -885837, -13828721, 7893613, -17876190, 965831, -4579509, 31957778, 20080582, -6773164, 2581812, 3674345, -4644471, -399432, 12338904, 991064, 9636833, 32650878, 5194763, 3287798, -4294968, 8264591, --30544196, -13678934, -12442520, -1551020, 3988951, -27696634, 11502996, -24593520, 8915278, 25208774, --4912369, -22953916, -11615202, 9313637, -3852586, -46733540, 13348758, -32648194, -6500970, -4153770, -1655173, -13145284, 3887482, 16331076, -12919798, -31003222, -45891188, 36230196, 11610907, -5759551, -10925860, -11046119, 11644193, 20083268, -20358144, 36045512, 5540508, -3873524, 17335024, 9491341, --5237713, 9302899, 1266479, 10051297, -9194451, -5210332, 3315178, 7276749, 13128104, 3740380, -11901891, -7446400, 7029251, 11762305, 11038066, -1701881, 10113037, -10131291, 4679904, 1021665, -5014911, 19622094, -12401181, 7849590, 1736241, -657667, 15941308, 4263292, 20585242, -2517925, -10525891, 2715493, 8460012, 2341831, -3376381, 6087043, -9557376, 9016210, -3076270, 7500087, --1019518, 2132451, -81604, 1650878, 613643, 7875897, -987306, -1721208, -265214, 3483219, -405874, -643171, 1158031, 1830193, 1909113, 1568200, -148176, 1577864, -307627, 1513976, -1713155, 1671279, -1826435, 695248, 1162326, -867047, -756988, 52357260, -56314000, 23052700, -27836756, -34473020, -11329050, -18347564, -10924249, 51939576, -23744726, 36981816, -17730698, -4483409, --9882183, 12399034, 3861713, -44104484, -9131100, -11382737, 18454400, 1389959, 7284802, 15874736, --22543746, -3647501, -14715632, 8180302, 17289928, 11665131, -28959890, -4509179, 4706748, 4145717, --2695629, -12846247, -6423124, -24957518, -5611375, -3149285, 22341884, -20323248, 49937584, 11581379, --15893526, 22829362, -217970, 29534342, 14907295, 28037546, 5764920, 25633438, 19598472, 25075092, -25057912, 4280472, 24202140, -32051730, -6662031, 7088307, -22412750, -3416647, 12320651, -24831354, --37869800, 15036681, 22753126, 1011465, 4388383, -25493852, -8047158, -21299280, -1965484, 24805584, -905164, 46148348, 19698868, -11417634, 47347184, 25839060, -15440944, -5379447, -11370389, -15247671, --10941966, 12025908, -8081518, -23726474, 2738042, 16829830, -561030, -7726646, -7464117, -4884452, --9226127, -14384382, 1323924, -3286187, -3135863, -11111080, -2265595, -3895535, 3651796, 7985418, --3686156, 1599339, -4486630, -8716099, 4368519, -2346126, -8055748, -16503949, 6324340, -22748294, --4516158, -15796890, -10960220, -12873091, -4693863, -2099702, -6051072, -9062381, -5835787, -10342281, --3338263, -1315334, -2234994, -7013682, 8944269, -8454106, 3434900, -1864553, -15435039, -4323959, --15734613, 2036888, -1555852, -1671816, 1411971, -73543800, 67153424, -16085726, -20800526, -20407000, -46883864, -35847408, -4414153, -11083163, 788663, 23398444, -26119844, -3615826, 12037183, -9357660, --2412161, -489089, -14249628, 20794084, 2527052, -36979668, -7754564, -9844065, 3499862, -40424232, -954020, 3498251, -6505802, -845035, 12016245, 23040352, -8740258, -7307350, 6467147, -17411260, --49223008, 3180423, 41392748, -21653614, -29800630, 940598, 33644088, -16299401, -8362838, -43101072, --5514738, -348429, 31159988, 12653511, 5086852, -32804960, -16801912, 23665270, -28571196, 9330816, -50616188, 26717918, 39531416, -19672560, 23563264, 13015362, -41653668, -16960288, -21807160, -6848326, -26466126, -2371896, 28519656, 20993800, -41390064, 46308876, -27696634, -1300301, 3626563, -22995254, -48095044, -4354560, -9716290, 36486284, -29459718, -6478958, -42536284, -16093779, 21137144, -7420630, -19232326, 18213882, -3362423, -8862665, 4463545, -11922829, -11235098, -4690641, -7970923, -6701223, --6242198, 1914482, -8042327, 586263, -10445897, -12644921, -9004936, 7282654, -4849555, -2244121, -7046431, 209917, -959388, -13704167, -18338436, -13786308, -24252606, 17426830, 8860518, 14917495, -6928319, -15014132, -12912282, -8573292, -852551, 19267224, -3175055, -1352915, 3842922, -4519916, --2261300, -2984466, -6601902, 13044353, -7898982, 17081084, 956704, 43047920, 30766462, 4390531, --8134668, -22554484, 13266080, -1886564, -1873680, -1549410, -609349, -28991, -8442832, 10747619, --78383, -38651484, 9812390, 3330210, -13181792, 386547, 16792248, -5735392, 1262720, -27982248, -20435992, -10035191, -2855080, -2930242, 11698954, -15219217, -407485, 3314104, 610422, 3070902, --7009924, 20514912, -10660646, 36254356, -22226456, -23980950, 22645216, -25332254, 1484448, 18680960, --17248588, -7887708, 10183904, 11587822, 15664819, -55601572, 17836462, -642635, -12523588, 35070020, --17486422, 2044941, 353261, -29991756, 38467336, -1939715, -1496259, -20243792, -3456375, 31472984, --7188702, -1300301, 1433445, 8995809, 5429376, -39115340, 19412178, 34647500, -18079128, 13817984, --27025544, 45458472, 2230699, -42633992, 754841, 23616952, -2216203, -26524644, -5766531, 61977452, --9489193, -25675314, 4478577, 27284854, -6906308, -8661875, -3046743, -1315871, 1784559, 1136019, --6783901, 17980344, -2756295, -4345970, 1186485, 6077916, 15321222, -4619238, -7228430, 8250632, -2052458, -14105746, -4951024, 7426536, 1888712, -5945846, -2981781, 11986717, -10817412, -2300492, -2044404, 1648731, -10209137, -4276714, 13582297, -814433, -9501005, -4175782, 9885404, -2945274, --7098507, -6241661, 8653822, 312996, -24137180, -80315888, -121575488, 8157217, 105322800, 1617055, -275393824, 249498944, 149507808, 288050560, 189140704, -31216896, 11079405, -36935108, -226605696, -128738960, --99614784, -221445296, -181962736, -53674744, -106732088, -122728152, -9800578, 7394323, -51723756, 11486890, -47224240, -59903520, -50765440, 80549968, 16712255, -19353660, 56404196, 75478680, 185757, 77430744, -131104416, 47055124, 36187784, 133553080, 90469192, 11099806, 98249528, 144686176, 63817844, 74103752, -165003520, 62769872, 22846004, 157509872, 155164288, 48111688, 186821408, 265388720, 99241664, 109132432, -185290800, 56713432, -59399936, 10937134, -61011084, -222400928, -211984016, -226544496, -364027456, -393633760, --420839136, -497922528, -520774976, -508773760, -495030944, -435869376, -390986976, -319718432, -210956976, -150524640, --51541220, 144380688, 234030624, 231056896, 427587616, 455805536, 355032736, 432375968, 453050336, 243413520, -254064496, 311265408, 151546848, 122590176, 202374032, 146934592, 69485592, 95880848, 128271344, 54910620, -45063872, 128782448, 68520296, -10893111, 71021576, 55562920, -39104068, 6358699, 51419884, -32484448, --13596793, 95555504, 38420092, 4472135, 92121144, 60800632, -7881802, 5903970, -38792680, -133077952, --181334592, -200714016, -263445776, -282010240, -281600064, -305200928, -307943776, -322619680, -323467936, -295656416, --293510560, -246217056, -189722672, -150026960, -61830888, 56574920, 119971320, 199026096, 248752160, 263293840, -251236256, 229293264, 195175664, 158732320, 138620608, 121420872, 100011536, 90243704, 87873960, 80201000, -75511968, 78748760, 73841224, 62264676, 53991496, 43466144, 27806692, 17667884, 430034, -20055886, --35674000, -48369384, -49075908, -46751256, -43804372, -32229972, -24158118, -18305150, -10721849, -646393, -6825777, 15379741, 18723374, 21505438, 18105434, 13107703, 10822781, 8510478, 3307662, 555661, --1480690, -5490579, -12683038, -13191992, -16574279, -24925306, -23792508, -21573084, -32232118, -35022772, --34983584, -43440908, -46119360, -41661720, -47543676, -50061064, -44430364, -41337448, -40223980, -34121904, --28613608, -26669600, -21786758, -13529147, -10304700, -6244346, 1504312, 9378061, 13028246, 21094196, -30012694, 34809636, 38812008, 46237472, 49088792, 48464412, 49065708, 48834852, 43484932, 38159712, -34451008, 28992102, 20841328, 16304233, 11589432, 6009733, 1833414, -226023, -3367254, -5420786, --6754373, -7386807, -8560407, -8055748, -7638063, -6938520, -6677064, -5528160, -5246840, -4026532, --3346317, -2114198, -1563368, -288837, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +9670656, 198642, 363462, -4604205, -3747896, 2832531, 1675037, 285078, 3923453, -5948530, +-2070711, 9721658, 619549, 1917166, -2590939, -3243774, 4515085, 3839701, -1640141, 3779034, +116501, 638876, -3739843, 1357747, -3409667, -2600603, -3349538, 1151051, 89657, -1051193, +-416075, 1158031, 2838437, -1352378, -5312875, 115964, -3800509, -4776541, -1304060, 2189897, +-783295, 1956895, 1182727, 1795833, -801548, -651224, -948114, -752693, 1577327, -31675, +3289945, -424128, 4084514, 711354, 889595, 3953518, 1355599, 1030792, 5037997, -2042257, +1635846, -1742146, -3639448, 3323768, -1236951, 33823, 1173063, -578747, -3030100, -896038, +2102923, -1367410, -121333, -2873870, 1353989, 217433, -1979980, 257698, -3131568, 487479, +-3005940, -242666, -86973, -374199, 1665374, 848793, 403190, 964757, -369367, 1751273, +1207960, -119722, 338766, 407485, -109522, 84289, 527207, -703301, 350577, -904628, +745177, 106837, -192737, -18790, 607738, 190052, -652835, 230854, -79994, -328565, +-962610, -12741020, -6609418, -2979634, -2759517, -16106, 37581, 943282, 185757, -717796, +-5212480, -2369748, -5341329, -8377334, -6990060, 3947612, 4878009, 4926328, -1933809, -584652, +-547071, -1101122, 1822677, 758599, -1772748, -3795141, 2743947, 2335389, 3426310, 895501, +-1138703, -2076080, 980863, 1634235, -376883, 3473555, -1675574, -93416, 3386045, -2576444, +-4082367, 331249, 5680631, 1307281, 1269163, 798864, 65498, 732292, -859530, 1014686, +-4458713, 737124, 4663798, -1056025, 87510, 469225, -1566053, -878321, -623844, -746251, +-1221918, 2852395, -2645700, 2799782, 2398202, 5228586, -339302, 2944737, 6684043, -1216013, +-5344013, -6003828, -264677, -772557, 350040, -5092221, 1507534, -3570192, -2640868, 1243393, +3754875, -1517197, -2816425, -3387119, -636192, -355409, 967978, 320512, 2172180, 1287417, +-88047, 1102196, 343061, 2135673, 1631014, 1028108, 492311, 484794, -337155, 1438814, +102005, 449361, -138513, 55835, -1031329, 26307, -169651, 8912594, 6919729, 3031173, +3518115, -2247879, 1559610, 6182606, 2946348, 6653978, -2619393, 2720325, 3726958, -126702, +4793184, -2442763, 2978560, 615791, -3145527, -723165, -632434, -129386, -926102, 426276, +-1601486, 551366, -1184337, 6093485, -1433445, -267362, -62277, -2654827, -7711614, 4427038, +-1865090, 1750199, -3090766, -2814277, -3302830, -2092723, 1946157, 5850283, 4516158, 1988033, +-375273, -1175210, 1788854, 4224637, -969589, -1297080, 5101885, -2212982, 2418604, -2497524, +-2059437, -1161252, 1869385, 2108829, -3665218, -2420214, 51540, 3939559, 4964446, 2790655, +3859028, -467078, 3611531, 1510218, 3795677, -2092186, 1493038, 8865349, 4049081, 3804804, +-951872, -2399276, -6045704, 3554622, 1449552, -2400350, -2534568, -740882, 1779727, -1746441, +-891206, -1563905, 4832, 1334124, -585189, -2392297, 663572, 928787, 1366337, 1540283, +148713, 2149631, 969052, 940061, 588947, -599685, 1409823, 215285, -56908, -630286, +-1133871, -1105417, 236760, 932545, 299574, 136365, 210453, 10737, 1260573, -1712618, +-479963, 626528, -769873, 801548, 2697240, 10166724, 1447941, 3688303, 7362648, 137976, +-4211753, -1808181, -1266479, 286689, -2655901, -7231651, 2896419, 237834, 151398, 3014530, +-4800163, -2222646, 7542500, -1858647, -2858838, -4481799, 144955, -4236985, -715112, -1421634, +-1281511, 529355, 6088116, -210453, -1925756, 1774358, -4861903, 6489696, -843424, -1479616, +8118562, -4704063, 371515, -5556077, -2547989, 451508, 241592, 2107218, 2549600, -4963372, +1453310, 2047089, 1665911, 449898, 2312840, 1668058, 3385508, -3154654, -1692217, 6390375, +-2692408, 2423972, 588947, 1814087, 1634235, -577673, -2199560, -369367, 4508642, -2732673, +-325881, -1469416, 1023813, 4010963, -2301566, -5086852, -9780714, 570157, -431107, -879931, +9127, -3791919, -2658048, -5482526, -2173790, 2663417, -122943, 1639604, -679679, 3342022, +2314451, -79457, 1725503, -185757, -244813, 1125281, -2151242, -1182190, -1753420, -64961, +-2087354, 1168768, -111669, 527207, -799401, -715649, -124554, -796180, 433255, 713501, +-1939178, 846645, 729608, 386010, -1851668, 898185, 601832, 1648731, 1763621, -228707, +-666257, -1012539, 858457, -544924, -376883, 268972, -295816, -1200443, -4437775, -10857677, +5470178, -3547106, -6245956, 315680, -11696270, 2549063, 3526168, -1253057, 8476655, -3228742, +-10295037, 2490007, 3851512, -3540664, -7296076, 12425877, -820876, -714038, 3107946, -2715493, +-1631014, 1291711, -6113349, 3583077, -688805, 1777043, -1316408, 5822365, -1512902, 3274376, +2809982, -5704791, -2857227, -3205656, 5906654, -2942053, -1828582, 4546760, -1628866, -3344706, +2573222, 8320963, -4268124, 4066260, -4408784, 5478231, -3064459, 2897492, 496069, -2913062, +-8551817, 4773320, 6061273, -549756, -2011655, 3540664, 4229469, 4187593, -5907728, -643171, +-5219996, -450435, 1751273, -3576097, 1320703, 4072166, -4373888, -66572, 759672, -4094178, +-3076270, 3888019, -2831994, 3080029, -1869921, -5265630, 1000727, -5104032, 1254131, -1911797, +1714766, -5623723, 5132486, -4230006, 448824, -3929895, -222801, -209380, 978716, -382252, +-120796, -1202591, 1278290, -3794067, 1245004, -3100430, -2627446, 112743, 2204392, 1137093, +322659, 761283, 41339, 1418413, 2829310, -2423435, 2332704, -1549410, -442919, 1601486, +1125281, -1705102, -132607, -4410932, 5568425, -6135361, -6083285, -10435697, 4391067, 11014444, +1675037, -1986959, -956704, -1866163, 9593883, -5768678, -5251672, -1251983, -5790153, -1790465, +-6291054, -2727304, -4418985, -8743480, -2459406, -1939715, -316217, -974421, 2254858, 5191542, +1848983, 2562485, -8031589, 977105, -142808, -2529199, 2769717, 1466195, -2353105, -1051730, +-5724118, -6349573, -940061, 7001334, -2073396, -3628711, -789737, -2360622, -4948339, 64425, +-5167383, 10513543, 8865886, 2279017, -2733210, -2486249, 909996, 1565516, 1799054, 1714766, +-662499, 3899830, -3740917, 1713155, -3294777, 79457, -61740, 2179159, 1515050, 4920959, +-2166811, -3059091, -2796024, -11462731, 329639, 2360085, -1184337, 4123706, 1764158, -3466039, +964757, -6029061, -2263985, 473520, 4566087, 1934883, 6258841, 1239098, -790274, 10737, +2295123, -2632278, -368830, 574452, -1120987, 1582696, -2298881, 1158031, -1762547, -1433445, +-325344, -1956358, -1935420, -2388002, -1290101, -717796, 1720671, 1443109, -1799054, -2528125, +-811749, -1940788, 1272921, -2161979, 993211, -1270237, -406948, 2097018, 91805, 1749125, +1155346, -1144609, -1114544, -10872173, 1846836, 10875931, 10450729, -11224897, -10047539, 2519535, +-7974681, -4393752, 1258962, -671089, -3202972, 8227547, 3784940, -11851425, -862752, 593242, +-20938, 7398618, 2877628, -5563594, 7988103, 2838974, 1123671, -4342212, -4428112, 3274376, +-2812667, -8062191, -1370632, -1143535, -3476776, -4854387, -6340446, 6726993, 557809, 905701, +-4369056, 6442, 4922570, -3924526, -7998303, -8288213, 8665633, 1826972, 8184597, -1394791, +2398739, 5869610, 12230456, 3820910, -1452236, -6307697, -2591476, -3195993, 1919850, 555125, +-4767414, -2068564, 7140920, 4889821, 9676024, 4393215, -6570226, -6458020, 8017630, 4123169, +-4106526, -54761, 8256001, 536871, -389768, -6460705, 7094749, 5161477, -1181653, 9676024, +-1395328, -2921115, -10153303, -1452236, 577136, 5340255, -6987912, -538482, 3212636, -1825361, +-5010080, -4864588, -578210, -576599, -864899, -6055367, -5200669, -3223373, 1964411, -213675, +-2359011, -914291, -264677, 425202, 558346, 785442, -442919, 1906966, -1587527, -516470, +112206, -1283658, -3874061, 164283, 2350421, -812286, -3412889, 200790, -773094, 1141924, +268972, -536334, -244813, 1046898, -468688, 2019172, 1161789, -163209, -1855426, 1334124, +-1447941, 1348620, 1791538, -4408247, 1742683, -1649268, -892279, 5393942, -8991514, 5403069, +-5897527, 1061394, 4706748, -63888, -2401424, 1758789, -6177237, 242129, -4814122, -13953812, +-4277788, 5894843, 3806415, 2141578, -3406446, 2836826, 1260036, 14880988, 2541010, -5057861, +5521718, 1074279, 1159104, 9884867, -2877628, -2808909, 3418257, -7006166, 8370355, 7730405, +-215285, 4361540, -1666984, -4301947, -594853, -5400385, 411243, -5289252, 2013803, -104690, +1477469, 576063, -9067213, -1889786, -1207423, 469225, -4592394, 1936493, 1957431, -1767379, +11857868, -5233418, -10628433, 6281390, 10362145, 2327872, 2642479, -4632659, 8883066, -3084324, +1452773, 3975529, 1122060, -4086662, 4211216, 1806571, 461172, -66572, -8210367, -2921652, +3953518, 7207492, -2860448, -5401995, -7476465, -2461016, 2447058, 1328756, 3661460, -9199820, +1672890, 6126771, 760746, -396748, 2311766, -1952063, -1092532, -296353, -549219, 3194382, +-962610, 987843, -1015760, -711891, -759672, -2383707, -1372242, 1068910, -1695975, 2185065, +-408022, -443992, -1132261, -1359894, -7008313, 611496, 3662533, -230854, 1240709, -713501, +2247879, 731218, -1418950, -1649804, 1232119, 30340186, -8278013, 134755, -3016678, -1991791, +-6721624, -200790, -17757006, 9200357, -6351183, -498753, 10353019, 5041218, -6790344, -7387344, +-2699924, -6324340, 5713380, -14777372, 2766496, 6051072, 8474507, 1607392, 2558727, 289373, +1419487, -1998234, -4583804, -13511967, -1943473, 1653562, 6236830, -4903242, 6015639, 2274185, +-2406256, -920734, 4668630, -4931696, -4566087, -2711198, -3479461, -583042, -11873437, -5634460, +-2801929, -394063, 9482751, 2050847, 9048959, 3040300, -370978, -5719823, 731218, 498216, +1414118, 3054796, 12668543, 1413581, -11779485, 2989297, -4594005, -392990, -4417374, -5054103, +-2297271, 4773320, 3172370, -21000242, -7815767, -6292664, 4008278, -964757, -4453881, -2948495, +11860552, -4918275, 9123047, -8619999, -6390375, -9328669, -5011690, -9912248, -1499481, 13092671, +3119757, -1651415, 1613834, 5528697, -73014, 6830072, -3841848, 2593087, 3895535, 4613332, +1887638, -890132, -9086003, -3449396, -4647692, 2684, 2996814, 2488934, -1806571, -722091, +3889630, 1536525, -2971581, -1327682, -2071785, -995896, 208306, 1922535, -1559610, -1629403, +4940286, 4071629, 1347546, -641024, 1817308, 3322157, 294742, -3058554, -250182, -3118683, +830539, -2805151, 1671816, 5027259, -1581085, -4653597, -5139465, 3844533, -9520332, 592169, +-22202296, 5401995, -7279970, 2170032, -7567196, -16367583, -2536715, -3808562, 11603391, 4926865, +4168266, -391916, 15403900, -11589432, 2815351, 4378719, 11897059, -13727789, -7847979, -2721936, +1117228, -923955, -3913789, -1280437, 4099010, -7397008, 1493575, 4364761, -863825, 588411, +-5982890, -6840273, -4247723, 18428094, 149250, -4492536, 7153268, -4438849, -9295920, -7610682, +-5047661, -1343788, 3250217, 671089, 616865, 10225780, 9337259, -1701881, 3313031, 2245194, +-11849815, -8131984, -537408, -960462, -3121368, -8082592, 9885941, 11955578, -9841381, 6447820, +6041945, -1935957, -9409200, -15160698, -14708652, -11339787, -6699612, -13087839, 1158567, -10719165, +6381248, 5751498, 919123, 105227, -18296560, 1170379, 302795, 1320166, -9398462, 3117610, +10336913, 1369021, 2591476, -8299488, -5168457, -1044751, -8761196, 1999307, 5378373, -2605435, +-3285113, -4037806, 3337727, 5492190, -9728101, -5332739, -532039, 6418829, 2336462, -2853469, +2208150, -378494, -164819, 2863670, -1923072, 3700651, -4357781, -1555852, 3067681, 2684892, +-1136019, 7205345, 393526, -4592931, -3935801, -699006, -3256659, -2925947, 310848, 1994476, +-1431835, -1533303, -9078487, -7632157, -5282273, -5974837, -1884954, -13559212, 589484, 14780593, +-5228049, 7776039, -3131568, 14734422, 12481175, 5137318, -15354508, -3969624, 20463372, -5334887, +15163382, 2335389, -14585172, -7426536, 17134236, 320512, -11568494, 220117, -9868224, -1405528, +3452617, 1356673, -1999844, -17161616, -15228880, 4142496, 10964515, -9826348, -893890, 4233764, +-767189, 1626719, 18234284, 3310346, 2627983, 1529008, 6005975, -8140574, -5763846, -4203699, +-19286014, -6585796, -7258495, -5036386, 5048734, 3345780, -1250909, -1966558, -7649337, -11589432, +15032386, -3293703, -13269838, -6249178, 2660195, 10044855, -8029442, -2550674, -8519605, -1640141, +-10173167, -1998770, -2190970, -20428476, 1840930, -6910603, 14091788, -3682398, -11502996, -21665426, +-14283987, -2739652, 1768990, 7551626, -5617817, -5155035, -11804181, 10750303, 18205830, 1895691, +-2181307, 6172405, -4780836, 6829535, -5158793, -2514167, 2331094, 5216775, 3769371, -6395743, +209380, 1301912, -94489, -481036, -1608465, 1697586, 6465537, -2738042, -5694053, -272730, +-1278290, 2940979, -46171, 6268505, 439697, 2277407, 228170, -3882114, 1019518, -1569811, +6766721, 367220, -4292283, -842350, -1029718, 4492536, 466541, -4979478, -739808, 3453154, +-1586990, 817118, 7108708, -24982214, -12676059, -8630200, -13579076, -7350837, -5524939, -14191646, +14915885, -4357781, 22486302, -11377905, -16869020, -3350611, -11305965, 19247360, -6586333, -10237055, +-4655745, 5119601, 9874667, 8371965, -1977833, -2322504, -4363687, 2071785, 15976205, -479963, +1581085, -5180268, -1946157, -8390219, -2659659, 3641059, 2806224, -6945499, 397284, -10251013, +2113124, -3100967, -2982855, 4110821, 2008971, -4801774, -1832877, 8661338, 3346317, -7269769, +-9425306, 15800648, -682900, -25295210, 13204877, -2851322, -10652593, 5035313, -1485522, 1108102, +-2388002, 8731132, 3466039, 850404, 24320790, 23890756, -8378945, 2565706, -17926656, -3872450, +-3390340, 7596724, -2685965, 1195075, 7460358, -5492190, 13920526, -5901285, 1592896, -18807124, +7862475, -4929549, -13059922, 6548752, -2966212, 26368414, 6362457, 4989679, 9845676, 1047435, +-9147207, -780610, -3728032, -2313377, 2723546, -3316252, 5458367, 3254512, -3958349, 6686727, +3895535, -4461398, -1077500, 358630, 763430, -1856500, 1522566, 2317135, -549219, -2023467, +548145, 2055679, 1332514, 1546188, -4155918, 4268661, -8412230, 7514582, -4903779, -2967286, +-479426, 3897683, 5729487, 1464047, -6357626, 19864, -2503966, -1593970, 1656247, -6252936, +-11169062, 3275450, 30045980, -22536230, -7105487, -14271639, -9365176, 11325829, -12837120, 27477590, +-3127273, 8386998, 1628866, 6669548, -16990890, 3126736, 4595615, -1269700, -2462627, -1505923, +5163625, -10506564, -6257231, -1491427, -2859375, -12983686, -11415486, -3093987, -5215164, 15683073, +-3965866, -7434589, -5251135, 5392869, -7932805, -3409130, -13818520, 6531035, -5201743, 5756330, +-4808753, 7319698, -3606699, -24046448, -12123082, 3554622, -1746441, -1468342, -7371238, -14318884, +-692027, 6313602, 4375498, -3252901, 4855998, 7371775, 22940494, -9778567, 10940892, -25661892, +1755568, 3773129, -2910377, -7369090, 5346161, 968515, 1331440, 5768141, 18272402, 12305618, +9434969, -4855998, -5704254, 8977019, -10779831, 2695092, 9322227, -6492917, 22830436, -342524, +7191386, -6180458, 13234405, -12441983, -12108587, 408559, 4746476, -5615670, -1217086, 14176613, +287763, 12909061, 4873178, -1983201, -1880122, -7348689, -432718, -377420, 3801583, -464930, +-5752572, 1041530, 2825552, 7328288, -10509785, 1858110, -5250598, 2272038, 6267968, -2070174, +5906, -5556077, 2011655, 2100239, -3434900, -12836047, -7870528, -5059472, 2677375, -6770479, +-3674882, -4531728, -3895535, 2612951, 5157719, -112743, 4314295, 1613834, 2391760, 785979, +-9096741, 7920994, -6659347, 12236899, 35274568, 25327422, -6951942, -15535434, -10862509, 21734146, +-25802552, 1564979, -6694781, -6085432, 10261214, -18573050, 2294050, -9408663, -446677, -12867185, +-10283762, 1710471, 471373, 712428, -12822625, 20286204, 3857954, -8807904, 3428995, -2472291, +1548873, 30151744, 9250286, -8184597, -7582228, 1635846, 9077413, 2688650, -22629646, -5337571, +-15713675, -4995047, -7475928, 7747048, -4403415, -1952063, -374736, -595927, -11214160, -12582644, +8081518, -4658429, 2019708, -425202, 10924249, -8886824, -6711424, 3011309, 4426501, -11822434, +13151727, -8218957, -19769734, -18041010, -6750078, -5057861, -8139500, -3912178, -28010702, 9971303, +-13421773, -4012573, -11247446, 15561740, 4749697, 7532836, -258235, -2196339, -13683766, -3894999, +17871896, -14762876, 21709450, 16938814, 5636608, -3791919, 500901, -2937758, 2897492, -9543954, +-8068096, -4680441, 1076426, -1165010, 1130113, 4265440, -7317551, -1590212, 6831683, 7562364, +-3179350, 4762582, -4202089, -6176163, -3070902, -1831267, 4425964, 1417876, 1494112, -6107981, +-4382478, 2313914, -2598992, 2161979, 2332704, 4600447, 8518531, 3650185, 4658966, -5772436, +-3684008, -1885491, 2313377, -2736968, 911070, -2523293, 963683, 9074192, 3937411, 2563022, +-1992865, 5759551, 1501628, -2201708, -35114040, -4214437, 23206246, -28475096, -11485279, -570694, +-8849780, 10491531, -6037114, 32450626, -3329674, -6900939, -5426691, -1300301, 9401147, -6294275, +-6300717, 26508538, -19383188, -2218888, 6091874, -4139812, 16460999, 9441412, -1189169, -1936493, +6971269, 9512816, 10176388, 8504035, 17431124, 5701032, 7488276, 4681515, -5685463, 29353954, +3661997, 5593121, 7371775, 4487167, 21081310, -1369558, 5197448, 7408282, 6091338, 3584150, +13910862, -8100309, -6648610, 13990856, -2549063, -13846438, -3593814, -24312200, -8317741, -4554813, +23147190, -21770652, -2834142, 1093069, -752156, -1118302, 13651017, 37536940, -6526203, 4835060, +4276714, 5817533, 17840758, -19186156, -19849728, -17893370, 31844498, 2508261, -11976516, 29390998, +-11148124, 25645250, -13721347, 9936944, 1081795, -33741264, -4923643, -8315594, 9715753, -540092, +-2916283, 382789, 6110128, -743566, -10275172, 5708549, 158914, -4627828, -88047, -8850854, +12140262, -1132261, 4364761, -5583995, -5192079, -4970888, -6878390, -469225, 207232, 11756399, +-512712, 1467268, -4622996, 1480153, -10961830, 3685619, -10564546, -1764158, -2275796, -9249212, +5017596, -7279433, -7509214, 1858110, -10478110, 3431142, 8396661, 8038568, -3938485, -3479461, +2031520, 3391414, 7302518, 9520869, 545461, 20874614, 1749125, -20756504, -61588756, 12452184, +-14897631, -23613730, 26482768, -15803869, -8343511, -23251880, 5937793, -4486630, -22993108, -7257421, +-13706851, 6557342, -12703440, 785979, 4769025, 10454487, 5104569, 17587892, 2617783, 51003, +-1932735, -14482630, -11378979, -10260677, 8322036, 13194676, 5930813, 4806606, -497142, 5207648, +10085657, 23977192, -11390253, -6085969, 4052302, -10630044, 11330124, 2671470, -10536629, 24401320, +8721468, -20201378, 7933342, -19425600, 2201708, 3931506, 10205379, -5388037, -6744710, 30976914, +11843909, -13054553, 7920457, 16475495, -12751221, -26660472, 14793478, -1970316, -420907, 2394444, +6425271, 41853384, -3986267, 5401995, 7873749, 59056, 9469329, 5789616, -22213034, 4886062, +-11866458, -10087268, -6294275, 5234492, -35806604, -4151086, 11046119, 1962263, 17650704, -12850005, +12475269, -8326331, -3831111, -4602595, 5535139, 2667175, -4465692, 229781, -99858, -6131603, +4958003, -7791608, 8310225, 1320166, 5761699, 5177583, -3699041, -2774012, 1383516, -2030446, +1132798, 2143726, -3594888, -1073742, -4118337, -2633889, -2733747, -6966437, 44560, 1188632, +4075387, -2117419, 3921842, 9906879, -5184563, 1778117, -5202279, 2754148, 2993055, -7999914, +-6979, 2811593, -7828652, -3664144, 6634651, 244276, 1242856, 1668595, 158377, 183610, +-19000398, -21881784, 46933792, 10034654, -3016141, -5646809, 10602127, 42410656, 19473918, 5087389, +-1202054, 14232985, 35439384, 8833137, 12241194, 11068668, 25282862, -16245714, 16391743, 7303592, +-48431660, 14398341, -6809134, 14414984, -15045270, 11447698, 7623030, 15109158, -62814, 6442451, +2420751, -13697724, 6922414, 13702019, -11376831, 6921877, -11041287, -6613176, 34827888, 3626563, +30849140, -21818434, 9664213, -1038845, -4319664, -602906, -2586107, 4871567, 11370926, 7917772, +-761283, 17679696, -27928024, -26318486, 19268834, -14932528, -3768297, -3412352, -18014704, 9247601, +-4663798, 5271536, 2928094, 29902636, 14586246, 15817291, 6019934, 4336843, -26961120, -6109591, +13458817, -125091, 476205, 106837, -8551280, -23431730, 4655208, 2316061, -17493938, 2634426, +-8324721, -6828461, 7562901, 5133560, 26894012, -3681861, 6962679, 6540699, -4978941, -6750615, +-579284, -6405944, -2355790, 15911780, 6760279, 3015067, 970126, -124017, 563178, -28991, +-747861, -10517838, -3074123, 6710350, -1671279, 840740, -3763465, -5213554, -1997697, 1926830, +12991202, -8322573, -8021389, 7719667, 3904662, -9363566, 6975027, 4283156, -6559489, 8755291, +938450, -4898410, -2149631, -3322157, -1367947, -1410897, 4486630, 2374580, 2370285, 5102958, +7320772, 5495948, -1112933, 3987340, 12480101, -42824584, 36589900, -15580531, 7480223, 23197656, +-33683280, -1162862, -2409477, 8018167, 13283260, 14513768, 26002268, 4047470, -15828028, 8788040, +27671938, -38747048, -22075596, 25621628, 1915555, -431644, 1817845, 1988033, -93952, -885837, +13828721, 7893613, -17876190, 965831, -4579509, 31957778, 20080582, -6773164, 2581812, 3674345, +4644471, -399432, 12338904, 991064, 9636833, 32650878, 5194763, 3287798, -4294968, 8264591, +-30544196, -13678934, -12442520, -1551020, 3988951, -27696634, 11502996, -24593520, 8915278, 25208774, +-4912369, -22953916, -11615202, 9313637, -3852586, -46733540, 13348758, -32648194, -6500970, -4153770, +1655173, -13145284, 3887482, 16331076, -12919798, -31003222, -45891188, 36230196, 11610907, -5759551, +10925860, -11046119, 11644193, 20083268, -20358144, 36045512, 5540508, -3873524, 17335024, 9491341, +-5237713, 9302899, 1266479, 10051297, -9194451, -5210332, 3315178, 7276749, 13128104, 3740380, +11901891, -7446400, 7029251, 11762305, 11038066, -1701881, 10113037, -10131291, 4679904, 1021665, +5014911, 19622094, -12401181, 7849590, 1736241, -657667, 15941308, 4263292, 20585242, -2517925, +10525891, 2715493, 8460012, 2341831, -3376381, 6087043, -9557376, 9016210, -3076270, 7500087, +-1019518, 2132451, -81604, 1650878, 613643, 7875897, -987306, -1721208, -265214, 3483219, +405874, -643171, 1158031, 1830193, 1909113, 1568200, -148176, 1577864, -307627, 1513976, +1713155, 1671279, -1826435, 695248, 1162326, -867047, -756988, 52357260, -56314000, 23052700, +27836756, -34473020, -11329050, -18347564, -10924249, 51939576, -23744726, 36981816, -17730698, -4483409, +-9882183, 12399034, 3861713, -44104484, -9131100, -11382737, 18454400, 1389959, 7284802, 15874736, +-22543746, -3647501, -14715632, 8180302, 17289928, 11665131, -28959890, -4509179, 4706748, 4145717, +-2695629, -12846247, -6423124, -24957518, -5611375, -3149285, 22341884, -20323248, 49937584, 11581379, +-15893526, 22829362, -217970, 29534342, 14907295, 28037546, 5764920, 25633438, 19598472, 25075092, +25057912, 4280472, 24202140, -32051730, -6662031, 7088307, -22412750, -3416647, 12320651, -24831354, +-37869800, 15036681, 22753126, 1011465, 4388383, -25493852, -8047158, -21299280, -1965484, 24805584, +905164, 46148348, 19698868, -11417634, 47347184, 25839060, -15440944, -5379447, -11370389, -15247671, +-10941966, 12025908, -8081518, -23726474, 2738042, 16829830, -561030, -7726646, -7464117, -4884452, +-9226127, -14384382, 1323924, -3286187, -3135863, -11111080, -2265595, -3895535, 3651796, 7985418, +-3686156, 1599339, -4486630, -8716099, 4368519, -2346126, -8055748, -16503949, 6324340, -22748294, +-4516158, -15796890, -10960220, -12873091, -4693863, -2099702, -6051072, -9062381, -5835787, -10342281, +-3338263, -1315334, -2234994, -7013682, 8944269, -8454106, 3434900, -1864553, -15435039, -4323959, +-15734613, 2036888, -1555852, -1671816, 1411971, -73543800, 67153424, -16085726, -20800526, -20407000, +46883864, -35847408, -4414153, -11083163, 788663, 23398444, -26119844, -3615826, 12037183, -9357660, +-2412161, -489089, -14249628, 20794084, 2527052, -36979668, -7754564, -9844065, 3499862, -40424232, +954020, 3498251, -6505802, -845035, 12016245, 23040352, -8740258, -7307350, 6467147, -17411260, +-49223008, 3180423, 41392748, -21653614, -29800630, 940598, 33644088, -16299401, -8362838, -43101072, +-5514738, -348429, 31159988, 12653511, 5086852, -32804960, -16801912, 23665270, -28571196, 9330816, +50616188, 26717918, 39531416, -19672560, 23563264, 13015362, -41653668, -16960288, -21807160, -6848326, +26466126, -2371896, 28519656, 20993800, -41390064, 46308876, -27696634, -1300301, 3626563, -22995254, +48095044, -4354560, -9716290, 36486284, -29459718, -6478958, -42536284, -16093779, 21137144, -7420630, +19232326, 18213882, -3362423, -8862665, 4463545, -11922829, -11235098, -4690641, -7970923, -6701223, +-6242198, 1914482, -8042327, 586263, -10445897, -12644921, -9004936, 7282654, -4849555, -2244121, +7046431, 209917, -959388, -13704167, -18338436, -13786308, -24252606, 17426830, 8860518, 14917495, +6928319, -15014132, -12912282, -8573292, -852551, 19267224, -3175055, -1352915, 3842922, -4519916, +-2261300, -2984466, -6601902, 13044353, -7898982, 17081084, 956704, 43047920, 30766462, 4390531, +-8134668, -22554484, 13266080, -1886564, -1873680, -1549410, -609349, -28991, -8442832, 10747619, +-78383, -38651484, 9812390, 3330210, -13181792, 386547, 16792248, -5735392, 1262720, -27982248, +20435992, -10035191, -2855080, -2930242, 11698954, -15219217, -407485, 3314104, 610422, 3070902, +-7009924, 20514912, -10660646, 36254356, -22226456, -23980950, 22645216, -25332254, 1484448, 18680960, +-17248588, -7887708, 10183904, 11587822, 15664819, -55601572, 17836462, -642635, -12523588, 35070020, +-17486422, 2044941, 353261, -29991756, 38467336, -1939715, -1496259, -20243792, -3456375, 31472984, +-7188702, -1300301, 1433445, 8995809, 5429376, -39115340, 19412178, 34647500, -18079128, 13817984, +-27025544, 45458472, 2230699, -42633992, 754841, 23616952, -2216203, -26524644, -5766531, 61977452, +-9489193, -25675314, 4478577, 27284854, -6906308, -8661875, -3046743, -1315871, 1784559, 1136019, +-6783901, 17980344, -2756295, -4345970, 1186485, 6077916, 15321222, -4619238, -7228430, 8250632, +2052458, -14105746, -4951024, 7426536, 1888712, -5945846, -2981781, 11986717, -10817412, -2300492, +2044404, 1648731, -10209137, -4276714, 13582297, -814433, -9501005, -4175782, 9885404, -2945274, +-7098507, -6241661, 8653822, 312996, -24137180, -80315888, -121575488, 8157217, 105322800, 1617055, +275393824, 249498944, 149507808, 288050560, 189140704, -31216896, 11079405, -36935108, -226605696, -128738960, +-99614784, -221445296, -181962736, -53674744, -106732088, -122728152, -9800578, 7394323, -51723756, 11486890, +47224240, -59903520, -50765440, 80549968, 16712255, -19353660, 56404196, 75478680, 185757, 77430744, +131104416, 47055124, 36187784, 133553080, 90469192, 11099806, 98249528, 144686176, 63817844, 74103752, +165003520, 62769872, 22846004, 157509872, 155164288, 48111688, 186821408, 265388720, 99241664, 109132432, +185290800, 56713432, -59399936, 10937134, -61011084, -222400928, -211984016, -226544496, -364027456, -393633760, +-420839136, -497922528, -520774976, -508773760, -495030944, -435869376, -390986976, -319718432, -210956976, -150524640, +-51541220, 144380688, 234030624, 231056896, 427587616, 455805536, 355032736, 432375968, 453050336, 243413520, +254064496, 311265408, 151546848, 122590176, 202374032, 146934592, 69485592, 95880848, 128271344, 54910620, +45063872, 128782448, 68520296, -10893111, 71021576, 55562920, -39104068, 6358699, 51419884, -32484448, +-13596793, 95555504, 38420092, 4472135, 92121144, 60800632, -7881802, 5903970, -38792680, -133077952, +-181334592, -200714016, -263445776, -282010240, -281600064, -305200928, -307943776, -322619680, -323467936, -295656416, +-293510560, -246217056, -189722672, -150026960, -61830888, 56574920, 119971320, 199026096, 248752160, 263293840, +251236256, 229293264, 195175664, 158732320, 138620608, 121420872, 100011536, 90243704, 87873960, 80201000, +75511968, 78748760, 73841224, 62264676, 53991496, 43466144, 27806692, 17667884, 430034, -20055886, +-35674000, -48369384, -49075908, -46751256, -43804372, -32229972, -24158118, -18305150, -10721849, -646393, +6825777, 15379741, 18723374, 21505438, 18105434, 13107703, 10822781, 8510478, 3307662, 555661, +-1480690, -5490579, -12683038, -13191992, -16574279, -24925306, -23792508, -21573084, -32232118, -35022772, +-34983584, -43440908, -46119360, -41661720, -47543676, -50061064, -44430364, -41337448, -40223980, -34121904, +-28613608, -26669600, -21786758, -13529147, -10304700, -6244346, 1504312, 9378061, 13028246, 21094196, +30012694, 34809636, 38812008, 46237472, 49088792, 48464412, 49065708, 48834852, 43484932, 38159712, +34451008, 28992102, 20841328, 16304233, 11589432, 6009733, 1833414, -226023, -3367254, -5420786, +-6754373, -7386807, -8560407, -8055748, -7638063, -6938520, -6677064, -5528160, -5246840, -4026532, +-3346317, -2114198, -1563368, -288837, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 2902861, -9578851, 2103460, 1420560, -2200634, -753230, -4744865, -165356, -1236414, 3570729, 3101503, --3121904, -2304787, -1870995, -1840930, -2211908, 215822, 2851322, -2265595, -2362769, -7897371, --5752572, -4285841, -158914, 394063, 5810017, -3208341, 2901251, 1740536, 1511829, 318901, --4267050, 1076963, -9144522, 1093606, 328028, 406948, -586263, -5692443, -2538326, -4910222, -345745, 289373, -2908230, -7609609, 5260798, -390842, -4392141, -45097, 3007014, 620623, --1482838, 1054951, -2479270, -1112397, -2336462, 1815161, -2489471, 3554622, 2942590, -594853, --5002563, 243739, 749472, -469762, -1799591, 1260036, 951872, -1171989, 2784750, 2956548, -2107218, 178778, 68183, 934155, -2689187, 363998, 4281546, 477815, 864899, 766652, -3179887, 1184874, 1039919, 2787434, -632434, 2192044, -802085, 1427003, 1072131, -397284, -659814, 801011, -186294, 1017907, 1640678, 365609, 98247, 1107565, 1551557, 1177895, --112743, 442382, 554051, 572304, 238371, 86436, -46708, -377957, -1104880, 759136, -156229, -10119480, -11412265, -783295, -4526359, 3502546, -5604396, 1426466, 2556579, -3780108, -3087008, 11418707, 616328, -1024350, 6222334, 870268, 6248104, 120259, 2839510, -4461398, --5966247, -298500, 2233383, -4110821, -1352378, -397284, -1188095, 1153736, -1236951, -2161442, -2043331, -1007707, -887985, 4497368, 6362457, -1970316, -3453154, 1291175, 5088463, 1959042, -6527814, 293668, -940598, -149250, 5822902, 394063, -4199405, -2277407, 4568235, 3345243, -3549791, 988379, -2295123, -4704600, 915902, 2238752, 2740726, -1001264, -2490007, 5119601, -3412889, -832150, -2871186, 185757, -2002529, 5334350, 1618666, 989453, 1687922, 607738, -1093606, 3281355, 569083, 3295851, -644245, 5245766, 634581, -5168457, -2054068, -1794223, -2568927, 3208878, -517544, 863825, -3626026, -1309428, -3376918, -1017907, -2201708, -1868311, --794569, 1105954, 48855, 36507, 143345, 1454383, 231391, 335007, -179315, -1549946, --438624, 85362, -150861, 631360, 240518, 271120, -588947, 5945846, 4226248, 6262599, -6587406, -1604170, 3318399, -1437203, -3678103, -379031, 9742596, 4217121, 2203855, 3421478, --4009352, 6887517, 3005940, 4604205, -1328756, -7714298, 3269007, -12018392, 2472828, -3093450, -2450816, 1857037, -183610, -4158065, 1037772, 2660195, -1561221, 2492692, 6120329, -467615, --4994510, -6899328, 1116692, 3037616, -6276558, 3483755, -5895917, -3907883, 4358855, -2538326, --4976257, -2479807, -3497177, 5516886, 7664906, 4283156, -2694018, 1611, 4115653, 2399276, --298500, -3145527, -1432372, -2764348, 2947421, 9390946, -28454, -5141613, -3988414, 2154463, -813896, -1946157, -5531918, -134218, -4731980, -1908039, 799401, -850404, 3839701, 677531, -4809290, 5510980, -4814122, -1820529, 319438, -3825205, -4506495, -759136, 69793, -2818036, -2719251, -2563559, -267362, 2078227, 472983, 120796, 2132988, -2592550, -836445, 576063, -1013075, -1190243, 881005, 424128, 988916, -172872, 30065, 930397, -1257889, 1644973, --1260036, 790274, 307627, -402116, -52076, 715649, -486942, -902480, -1427540, 896038, --1034013, 377420, 1465121, -223875, -848793, 13383655, -3600793, 1312649, 1903207, -8813810, --7523709, 205622, 8737037, 6680285, 10562935, 3496640, -2987150, -4535486, 775778, -2597918, -2080375, 1022739, 3568044, 6578280, 2089502, 4854387, -137439, 2884608, -2913062, -6099391, --3205119, -4664335, 64425, -1290101, 1428077, -7432441, -3717294, -979253, 2758980, -3664144, -7722351, -8679055, 1869921, -5457830, -4438849, 2549600, 2221572, 7468412, -821413, 1903744, --2120103, 5238250, 5519570, 1555852, -1181116, -5581310, -769873, 1958505, -4288525, 4332012, --4721243, 2054605, 7830799, 6580427, 107374, -2499134, 1235877, 7845832, -965294, 1950452, -1227824, 6417218, 76773, -1676648, -3954591, 2816425, -5965173, 2207076, 12452184, 3088618, -5871757, 612033, -8212515, 3007014, 1545115, -3214246, 3374771, -1009317, -877784, -4070019, -1734093, 4072703, 1822677, 812286, -1855426, -4003447, 954557, -767725, -608275, 297963, --182536, -725850, 1324461, -1338419, -1229434, -1147293, 1855963, 773094, 1466731, -772020, -1355599, 115964, -1284732, 1449015, 795106, -1120987, -2196339, -768262, 1859184, 158914, --452045, 964757, 862215, 2034741, -62277, -733366, 1304060, -973884, -4821101, -8396661, -4263829, -6002217, -6075768, 1210107, -2915209, -19677392, 1959042, 2979634, 18020610, 5768141, -1388348, -8206072, 7544110, 3195456, -3201361, 3875134, -622770, 6481106, -3882114, -2068027, --1268089, -1779190, -2646774, -1217086, 4697084, 4014184, 7077033, 2466922, 3502546, -111132, --4508105, -4979478, 6707665, -3678640, 1537598, -636192, -4633733, 6707665, -1065689, -2957085, -1235877, 4874788, -3205119, 7420630, -9386114, -7850127, -9519795, 2288681, -5335960, -8232379, --1826435, 7634305, -3187940, 2269353, 4609037, -3327526, -4264366, 318901, 767725, 2534568, -529892, -2421288, -214748, 9849434, 4251481, -4056597, -12372727, -9962714, 3694209, 11724187, -9943923, -7737384, 258772, -5057861, 2288144, 1924145, -8364449, -699006, 1731946, 955630, --2224793, 474594, 566936, 227633, 2920041, 2586644, -1620813, -2081985, 1464047, -1025960, -718870, -2966212, 1269700, 852551, -4628364, -1081795, 1071594, 687195, 450435, 897648, --225486, 318364, 411243, 443992, -1648731, -261993, 667331, -567473, -2015950, -1062468, -345745, 304943, 2330557, -3466576, 5776194, -9733470, -1663226, -12071006, -3544959, 1839857, -4235912, -10996727, -2737505, 7610145, -898185, -11003169, 5743445, -3488050, -6303938, 3513820, -5818070, 1364726, 1235340, 2052994, 7598871, -3540664, -3124052, 2037962, -3731253, -1855963, -126165, -366146, 279173, 6135361, 3143379, -642635, -503048, 3614215, 1518808, 4425964, --348966, 4989679, 5240934, 2146410, -5655935, 892816, -765041, -3972845, 5508833, -3030100, -2327872, -3682398, -1346472, -13456669, 1273995, 11066520, 1007170, 11761231, -2118493, -2542621, --11989401, 14198088, 6688338, 8127689, 1356136, 6679748, -34360, 38118, 5541582, -3124052, -2032593, 70867, -13442174, 3189013, -3119757, 3660386, -1986422, 3314641, 12563853, 3875671, -3346317, -49392, -7553237, 5809480, -3036542, 1250909, 2913599, 3870303, -4134443, -995896, --1680406, -2153926, 2497524, -1311039, -1037772, -1663763, 344671, 575526, 242129, -3381213, -1459752, 730144, -729071, 1134945, 546535, 1008244, 789200, 1793149, 75162, 486405, --151934, -670552, 2159832, -258235, 3019899, 598074, 1296543, -769336, 1693828, 689342, -1391569, 1453846, 1224603, -15435039, -619012, 11789148, -2667712, 7020661, -7563975, -5039071, --13532905, 7769596, 3871376, 9003862, 4052839, -4288525, 7395397, -1798518, 7071664, -4629438, --4480725, 641561, -1713155, 6315213, 1196148, 5340255, 5755793, -3419331, -3105261, -1981054, -3753802, -703301, -2600603, 887448, -5389110, 2818572, 1762010, -2690260, 3799436, 6951942, --2854543, -3027952, -935766, -5099200, -2626373, 7975218, 965294, -4801774, 9484362, -10462540, -1563368, 5732708, -2521683, -3389266, -882079, 4586488, -8152385, 4113505, -3371549, -6830609, --5282810, -4096862, 49929, -1895154, -4505421, 1977833, 11807402, 6647536, -1714766, -4017405, --11611444, 1292248, 6309307, -3683471, -12821014, 410706, -2084670, 707596, 1521492, 5908265, --424128, -2905009, -1210644, -4584341, -2823404, -2135136, 3428995, -2823941, 3177739, -6724845, -498753, -3055332, -2144799, 4189204, -2036888, -1890859, -2439542, 901943, -4401805, -1676111, --1060857, -113817, 866510, -3023120, 810675, -2388002, 1289564, 1666984, 3507378, 722091, -1232119, 1930051, 1381369, -970663, 524523, 274878, 2600066, 1586990, -322659, 1641214, --181999, 190589, -1138166, 214748, -38118, -1828582, 511638, -1247688, -1038845, 183610, -1365800, -346819, 5165772, -2273112, 1310502, 7646653, 491237, 8957691, 9700184, 21662204, -14763950, 9060770, -2308545, -11471321, -4009352, 10513006, 4537096, -11081016, 8260296, -1933272, --5508833, -6781754, 1001264, 18725520, -12703976, 13540958, 5272609, -2920041, 4434554, -3663607, -9677635, -3724274, 5104569, 1015223, -6740415, -4715874, -6568079, 245887, 5527086, -1607392, --3710852, 3564823, 444529, -1126355, -12685186, 3826279, -7114614, -5378910, 3476776, 8341364, --6185290, -8891119, 296890, 7528541, 602906, -5073967, -1906966, -3025268, 3417720, 2494839, --2933463, -4798016, -7210713, 4435628, 11515881, 7055558, 3624416, -6706592, 3451006, 7288560, --8214662, -10714870, 1853278, -8850317, -4245575, -17337172, 205622, -11911018, -6215355, 3184182, --1512365, -1160178, 5248987, 879931, -9723806, -6750078, 4359392, -1361505, 512712, -3039226, -269509, 2815351, -439160, 1859184, 1874753, 368830, 162672, 1373316, 1615445, 1061394, -112743, 313533, -993748, 2541010, 53150, 2335925, -435402, -1595044, 751082, 2171106, --2768107, -4075387, -2077690, -613107, -1279900, 4576825, 1722282, -1477469, 2036351, -1196148, -299037, -3741454, -341987, 237834, -1707250, 23685670, 542777, -9291625, 10457172, -11442867, -13233868, 1055488, -8047158, -13813689, -3336653, 6750078, -10963441, 9714679, -1550483, 6254546, -7477001, -6438156, -2669322, -3884798, -5112622, -2011655, -4778151, 771484, -5840619, 6046777, -3830037, 5070746, 10333691, 5295158, -1549946, 12305081, 6277095, 2249489, -6630893, -7249368, -3687230, -5557688, 1256815, 3865471, -8252243, 7017977, 18773302, 1398012, 13345537, 6291054, -6445672, 9504763, 534187, 5019743, 5317170, -12202002, -8274792, 8352638, 534723, 7880191, -1382443, 8273718, -1373316, 2948495, 2037962, -17468706, -1180579, 4433480, 11624866, 2558727, -10189810, 994285, -2448668, 3308199, 4548907, -9829033, -16581258, -8777839, 2232309, 4023311, -508954, 12091944, 4234301, -19079318, 4795868, -2811593, 51540, 5424007, -7689065, -312459, --4168803, 3450469, 4865124, 245887, 1005022, 3506304, 85362, -86973, -1711008, -1879585, -583042, 304406, 55298, 2916283, 2088428, 692027, 1719061, 1097364, 10737, -2973728, -2257005, 1850057, -1221918, -314069, -479963, 84289, 1625108, 1355599, 4430796, -3847217, --1158031, 1633161, -1008780, 2308008, -1966021, 3897683, -1025960, -1265942, 474057, 2206003, -1521492, -616328, -346282, -1624571, -381178, -11573326, -903554, -10314364, -4720706, 4226785, --5085242, 2222109, 3584150, -6212670, -15153718, 4818417, -15012521, -17440252, 3861176, -8609262, -7755637, 10865730, -2709588, 12690555, -3001109, 12537010, 17264158, -38655, 1100049, -17409114, --3194382, 1825361, 3054259, -2082522, -11345156, 743029, -9594957, 1180042, -2526515, 2582349, --3634079, -6466610, 1538672, -1197759, -3451543, 4014184, 488553, -2702608, 12491912, 4551055, -9398999, -5945846, 1800128, -5023501, 3631932, -1169842, 4963909, -1699196, -3598646, -4823249, --10897943, -6543920, 17795124, 7105487, 11829951, -13662828, 2944737, 9984188, -8483634, 7516, -6650220, -3630858, 6672769, 868120, -11790759, -3160559, -18194018, -2336999, 7452842, 3732327, -12349105, 1309428, 8230231, 8610873, 3099356, -627602, 15975131, 1262184, 493384, -2811056, --1492501, 8331700, 5008469, 7964480, -881005, -1744294, -1986422, 5792837, 1269163, -1313723, -1661079, 3946538, -896038, -2462627, -4610648, 77846, -3667902, -1742146, -3121904, 2593624, --326418, -5552856, -964757, 321049, 444529, -352724, -2545842, 3635153, -2979634, 864362, -1437203, -4213363, -740345, -2845416, 585726, 3213173, -2917894, -2487323, -1809792, -1889249, -1862942, 961536, -11258183, -10040560, -10662793, -15539729, 10599442, 6869800, 942208, -10457172, -9447317, -86436, -13205951, -10795937, -3776887, -2690260, -8460012, -3330747, -5021354, -4249334, --3136400, -12207371, 6099928, 7151658, -646929, -1135482, -2240362, -4509716, -14512694, -15815680, -471910, 6867116, -4189204, -9739912, -5484673, 7419556, 5442798, 362925, -3059627, -4183298, --4251481, 9383430, -4786741, 6597070, -4529043, 198105, -15779710, -3432216, -1252520, 11909407, -3263102, -2783139, -8876624, -6160594, -12419972, 20036560, -9220758, 19029390, 2415382, -8192113, -12540768, 12364674, 21346524, -20936892, 8661875, 3491809, 2814277, -4151086, -6029061, 9266929, -4782983, -1585917, -9839233, 10932302, -5749351, 11752641, 9687836, 9197672, -8332237, 18147848, --13405667, 7466801, 11683385, -6728603, 1451699, 341987, 10150081, -2695629, 4505421, -5294621, -10847477, -339302, 1895691, -6227703, 4947803, -338766, 5104569, -1479079, 6883759, 3375844, -2166274, -4065724, 1295470, -3403762, 190052, -2897492, -3921305, -782758, -3463891, -2301029, --375810, -1752884, -3451006, 2367601, 2862596, 4225711, 977642, -3941169, 367220, -2659659, -2666101, 1121523, -1941862, 525060, 1862942, 1126355, -4444218, 875100, 4452808, 1753957, --704375, 1287417, 17064978, -28491740, -30508226, -19234474, -3156264, -13420699, 8271034, -11043972, -1192927, 5446019, -758062, 20083268, 14567455, 5100274, -5833103, -4519380, 14152991, -2388539, -2252174, -5798743, -12499965, 9127, 5163625, 3345780, -6835978, 6068789, 948114, -841277, -12011950, 16411607, 1260036, -10524280, -4442607, -20170240, -7726646, -5226439, -5966247, 893353, -3612604, -7341173, -2843268, -10261214, 11132555, 13238700, 11134703, 12361990, 9819369, 16181826, -2077690, 5548561, 3937948, -2946885, 6336151, 9644886, -9587978, -33474976, -7696045, 11115375, --17245368, 8838506, 11033234, 3952444, -5177046, 838592, -4068408, -13440026, -3559991, 8749922, --10650982, -9094593, 3330747, -7382512, 21891986, 22167936, -8106751, 14277008, 3871376, -2090575, --9600863, 6830072, -12986370, -10816875, 12011950, 9004399, 6410776, -833224, -1042603, -15942382, --11361799, -2095407, -3520263, -2964601, -2276870, -4710506, -3797288, -4390531, -2090039, 586800, -3880503, 2983392, 5107253, -414464, -2257542, -2383707, -1508070, 7204271, 6808060, 3464428, --494458, -450972, -1410360, -2684892, -4057134, -1840930, 890132, -1231045, 3044595, -1535451, -1231582, 1395864, 1372779, 2758443, -3061238, -50466, 794569, 2339684, -3712462, 6647536, --2599529, -1671816, 27492622, -23165442, -261456, 3730179, -21843130, -6661495, -9127879, 3151969, --6556805, 18938658, 2616172, -396748, 23998666, -1508070, -20987358, -17104170, -10229001, 8011188, --1093606, -20644298, 5383742, 5551245, 10897406, -12342662, 6315750, 10215043, 9143985, 7097434, --2380486, 12239583, 13500693, 4377109, -29717952, 21661130, -10588168, 8259759, -2067490, -3235721, -5819681, -13353053, -7451232, 13887777, -6314139, -1961726, 12777528, -14317810, 12848932, -5059472, -11936251, -15756088, 20946556, -9400073, 32355600, -4348118, 2113661, 8180302, -7057705, -5418101, --3843996, 2514167, -1578401, -16354162, -20331302, -5745593, 11915850, -6219650, -7344931, -20890720, -9643275, 2047626, -28347858, -503048, 438624, 4109210, 14672145, -10008348, 4621922, -12829067, --11101417, -16988206, -16816944, -3070902, -9818295, 12133283, -1986959, 11851425, -5769752, 6721624, --915365, -7703024, -10578504, -1289027, 1304060, 5124433, -2490544, 2219961, 1079111, 4183835, --390305, -5702106, -785442, -8593693, -363462, 1322850, 1921461, 422517, -3204046, -4196720, -4723927, 2116345, -1381369, 5281199, -6682432, -8995809, -136365, 7890392, 212064, 2251100, -3168612, 5383742, 350040, 6031745, -4925791, 1909113, 1239635, 4899484, 8400956, -5251672, -1376000, -1264868, 1395864, 10546292, 31698470, 15849503, -9683541, 21887154, 7175280, -13930726, -5357972, 14156212, -2204392, -4776541, -19500762, -5247377, 12000139, 7888781, 5701032, 3573950, --3531000, -7780334, -18408766, 9829033, -6287296, 4918275, -14139032, -7603166, -369904, -2132988, -18066780, 5494337, 2864743, 13891535, 6629819, -20904680, -2467996, 7707856, -3946538, 482110, -17849348, 5928129, 20725364, -12029667, -7638063, -3356517, -7762080, 8188892, -8090645, 15674483, -15533286, -6792491, -15222975, 25509422, -13125420, -5240397, -3076807, 7633768, 3854196, -14150307, --4262755, 9139690, -6779606, 11579232, -5480379, 16384763, -8512625, 3739306, 24946780, -451508, -17566416, 30518964, 3826279, 15011984, -7758322, -36599564, -24865714, -4707821, -1595044, 20876226, --706522, 7014219, 1742146, -5131949, -17008608, -37775312, 28594282, 2025077, 817118, 9409200, -4431333, -9178345, 21126408, 1105954, 4434554, -217433, 1390496, -18609556, -6965363, -12253542, --7459285, -558346, -6973417, -6902013, 4292283, -1467805, -4815732, 13691282, -2586644, -13841069, --9968619, 3527242, 638340, -3986804, 21087752, 6419903, -7118372, -8133058, 2145873, -1862942, --4431870, 726386, 1891933, -4723927, 4961224, -127775, 7187091, 9433896, 1781875, -854699, --2899103, 6332930, 6044630, 5534066, -41399188, -9911711, 43236900, -16597364, -18539764, 38176352, --24495810, 21512954, 28750512, 11362336, 3950833, -21836688, 8356396, -38305204, -18872624, 8381629, -19913078, 2252174, 4592394, 14516989, 38744364, 26191248, 8184597, 1445257, -46171, 4310537, -3198677, -15036681, 318364, 9587978, 12119324, 51707648, 29142964, 19925428, 37335612, 15256261, --5352066, 11217381, -710280, 35773320, 12942347, -2923799, -5972689, 14946486, -2310693, 17162152, --53348324, 2300492, 18355080, -1105954, 22217328, -8319352, 5860483, 11838540, -49676664, -19197430, --3910031, -15910169, -20592758, -24256364, 22673132, -14842870, 4503810, -4549444, 22749368, -37323804, --10271951, -5272073, 11681237, -188442, -3471944, 27494770, 47937740, -257161, 14882599, -9108552, -3990025, 33539936, -35756140, -21246666, -29940754, -37740416, -3366181, -1549946, -14934675, -16040092, --15208479, -14434311, -18618146, -26958972, -11832635, -17515950, -10783589, 4607963, 23531052, 7468412, -3456912, 3454764, -2481417, 5158793, 2151779, -16926466, -15290084, -4490389, -21489332, -8621073, --9582609, -7486665, -8595840, 9582609, -7970923, 419833, 1224066, 4015795, 11500312, 17702244, --462783, -4741644, 12732967, -6841883, 7999914, 2922188, 1503239, -3772055, 2043868, 1358283, --7991861, -10423886, -11302206, -1845762, 3518652, 22456774, 19781546, -18626200, -65901440, -11943767, -27025544, 6101001, -7342784, -5346161, 2058363, -9251896, -12082817, 14387604, 10853382, 29822106, -10917270, 17867064, -6748468, 39727912, 7219303, 25129316, -3543348, 36633388, -13947906, 23811836, --23324894, 51540, 2605435, 16966732, -6720550, -12929462, -30861488, 17047262, 2288144, 3373160, --14910516, -27855548, -1678795, 3065533, -3394635, 8341900, 17858474, 2547453, 12773770, 45420888, --19161460, 4421132, -14998026, 23386634, 20437066, -23011362, 21606370, 24493662, -17592722, 6108517, -5817533, 16925392, 8453033, 34544960, 10948945, -12461848, 2098629, 44689136, 14227616, -51430084, -15146739, 9023726, -44113072, -12426951, -14119705, -31334470, 2265059, 19080930, 21109764, -12680891, -37950332, -9931038, -16460462, -8660802, 20073604, -74634720, -9079561, 907849, 60073172, 7781944, -50936700, 24283208, 35751844, -1189169, 12276090, -7035157, 30295626, 30535070, 27582280, -6867116, --18365280, -7707856, 30262876, -3757560, -19765440, -8792335, 35851164, 4796942, -22301080, -7832947, -32340566, 9039296, 13467407, -647466, 12216498, -9456981, -639950, -918049, 5290326, -1085553, -5718212, -4721243, -10500121, -12655658, -15195594, -2238752, -11096048, -245887, -1985886, -4575751, -10722386, -12473122, -5009006, -12375411, -4499515, -22502408, -16582869, 22199076, 392453, -25942140, --41120552, 33393908, 71165464, 5036923, -39891656, 61815316, -14074071, -642098, 8582955, 35170952, --20275466, 1753420, 69709464, -34401076, 16453483, 23812372, 22406308, -30739618, -3317862, 5815386, --15381352, 2910377, 7097971, -12340515, 12220793, -21107080, -6248641, -8293045, -1803886, -12566001, --11417097, -3878892, 6546604, -23041426, -21971442, 33021320, 5761162, -20249698, -5561446, 19750944, -47105592, -3853660, -23242216, 24943560, 36084168, -10266582, -2877091, 1214939, 12947716, 372588, --148176, 16765405, -40242768, 27758910, -23294292, 570694, -32942936, 18662706, -2748242, -48656612, -23967528, -3216394, -19121194, 33299418, 3694746, 32930052, -27806156, -10298795, -11346767, -25268366, --39832600, -52162376, 44318156, 18476412, 32573568, 30495878, 18504330, 7576323, -19053012, 28893856, --14416595, -11757473, 38534984, 13219909, -7489886, -3189013, 11608223, -27169426, 6875706, -10562398, -17979806, -6695317, -11938398, 17637284, 2748242, -20117626, 1447404, -9378598, -5883569, 4612258, --4652524, 4029753, -1313723, -14404783, -7629473, 6657200, -5089536, -8972187, 8992588, 14765561, -14010720, -11120744, -4873714, 16932372, -28404230, 8768176, 10139344, -11783243, -28227062, 14407468, -1566053, -12336220, 8572755, -13225278, -22016002, 6048388, 19385872, -15893526, -7186554, 7242926, -16896938, -4373351, -2320893, 15206332, 876710, -11671037, 38693896, -15724949, 11434277, 9001715, --40221832, 36177048, 12600897, -10282152, 30994094, 2641942, 2045478, 15216532, -13498545, 39639864, --31800474, -16958678, 14743549, 13689671, 6724845, -29496224, -18004502, -32872070, 18194018, 4436701, -16621523, 90194, 17854716, 7270306, 5978058, 783295, 15226196, -6800007, 8385387, -14986752, -11295227, -13846438, -115964, -18300318, -13048648, 840740, -16335908, 7727183, 38970924, 9385040, --29192356, 15307800, 11734924, 20734492, 597537, 34431680, -29511794, 4589173, 13727252, -28418724, --6627672, 57563300, 32387274, -76017160, -32284732, 40545028, -11028939, -36032628, 14260365, -3628711, --27831388, 20498806, 34629248, -46843060, 9302362, 41726144, -28204514, -25269976, 34089692, 4632122, --28010702, 5045513, 22169010, -24442122, -3383897, 26925686, -3926674, -11914776, -19222664, 24637544, --6477348, 13762686, 3207267, 13977971, -9527311, 9066139, 24820616, 9841381, -18259516, 1544041, --13059922, -8806294, -18394808, -1621887, -4896800, -1262720, -12358768, 12693239, 10912975, -4279935, -28369332, -7138773, -30123826, 36319856, -4287988, -6863895, 6705518, 12742094, 1720134, -3335042, -30640296, 16865262, -21497386, 1852205, 8727910, -15584289, -12885976, 22179212, -11398843, -41981156, -40494024, 5190468, -40929428, -1176284, 21581674, -15360414, -34417184, 19892678, 26538602, -42432128, -6263673, 31998580, -18727668, -3255585, 35013112, -2565706, -14283987, 8231842, 14798310, -19153944, --5233955, 20548198, -4677757, -17899814, 15079630, 9008694, -10432476, 33817500, -72796472, -4968741, --13060459, -80502184, -14667850, -24700894, 7685844, 14063870, 23643794, -10467909, -31723166, -11716134, --45676440, 6263136, 16009491, 9582072, 6958921, -36368172, 22161494, 3729105, -44180180, 32247152, --47493212, -19149112, -17987324, 12985297, 33897492, 39797168, -3528853, -8759586, -76707040, 32981054, -77098424, 28368796, 1487669, -42359652, -62595928, -25436944, -5561446, 32692754, -39325796, -23165442, --40396316, -12628278, 71970232, 78084120, -13906030, -35798016, -31295280, -16356846, -8570070, 39391828, --19005768, 11877195, 7833484, 26243324, -7537668, -17477296, -45886356, -19628000, 68978248, 29819422, -45777372, -42215232, -23855322, -19492172, 46774880, 1078574, -77120432, -73900280, 41049148, 71474696, -119288424, 21051782, -102062384, 17125108, -27262304, 34685084, 32915018, -124450976, -40134320, 24441586, -65226596, 16067473, -63809792, -14101451, -6751152, 36954436, 31049930, 8503498, -51196548, -7856032, -10740639, 22727894, 10869488, -13160317, 1779727, -28023588, -3954591, -405874, 26778584, -18537078, -35845796, -23067732, 9954124, 21086678, -9059160, 17496086, 15058692, 28490128, 1087164, -13766981, --16768089, 2600603, 1016834, 4839355, 2607045, -927176, -2278480, -10285373, -11227581, -2157684, -17609366, -4625680, 135291, -3760244, 5647882, 1342714, 9659381, -9139154, -12228846, -23537494, --12025372, -1400696, 12847858, -12597139, -1161252, -36853504, 31479426, -32895154, -6950868, 1021665, -8443369, -6367826, 7588134, 12518219, -20935818, -18314814, -253940, 4582193, 13682155, -15464567, -2295123, 11450383, -8908299, 7060390, -4559108, 35471600, -371515, -5610838, 20650202, 11009075, -18364744, -9450002, 11774116, -3936875, -358093, 14800994, 10821170, 2268817, 4618164, 20038706, --18780818, -5946382, 2155537, 27117350, -308701, -6396280, 25569014, -6703370, -10929081, -11244224, -21206402, -5235029, 9333501, 5405217, 3334505, -7634305, 3912178, 7988103, 3027415, 23578296, -11938935, 6542309, -10189810, -1767916, 9200357, -17196512, 6240588, 6260452, 17658758, 39192, --1967095, 9727564, 2305324, -19921668, 22314502, 6593312, -5070746, 18246632, -12407087, -1739999, --9233643, -8360691, 18253074, 13094282, -1154809, 6463389, -10741176, 2347200, -14518063, -1569274, --13290239, 2811593, 8731132, 2972654, 1697049, -3074123, -1770063, 2384244, -7919920, 2157684, --3394098, 3623879, -5201743, -2025614, -4812511, -6386080, 3069291, -1248225, -361851, -2461553, -8647917, 3158949, -10851235, -11541651, -7722351, 2232846, 3599183, 8143258, 4963909, -10646150, --1520418, -4108673, 9661529, -2571075, 10415296, 4147865, -8475581, -95026, 4639102, -5007395, -6655589, -4053376, 7519414, -5425081, -1663763, 2269353, -4206921, 57456460, 4631586, -21241834, --17581448, 2838437, 12993350, -812286, 11859478, -4535486, -3181497, -15960635, -3510599, -11186779, -17732846, -11127723, -913217, -7038915, -3316252, -4145180, 1932198, -11827803, 1797981, -5120138, --8320963, 2399276, -1335735, 625455, -2262374, 4109747, 1989644, -9907953, -6350109, -53687, --6702297, -5867462, 4876936, -1648194, -10095858, 617402, -5622112, 4243428, -14907295, 7385733, --6489696, -11359652, 3417720, -5240934, -5877663, 1465658, -116501, 636729, -2497524, 2431488, --4575214, 4966593, -3147137, 460635, 8280697, -6069863, 2763812, -1656784, -903554, 2185065, --6889128, 6163815, -7242389, 6152004, -1534377, -387084, -4648229, 5807333, -6962142, 368830, -2419140, -9203041, 9059697, -5640903, 3825742, -4295504, 3652333, -3332895, -4061965, 6662568, --4277788, -932545, 6605660, -4387846, -102005, 453119, 1009854, -4844723, 335007, -524523, --2117419, -1431835, 1094143, -1591822, -2604361, -1372242, 2847027, -2751464, 2120103, -855235, --355409, -956167, -2017024, 1741072, -1381369, -1654636, 1933809, -2192044, 1516660, 619549, --1312649, 195958, -383863, 434329, -4072703, 3728569, -4188667, 593242, -672162, -2284386, -489089, -1316408, 2746632, -7047505, -27831924, -44482976, 47165184, 164634688, 31381716, 49520972, --101457328, -140728368, -58997280, -73630768, 56807920, 132200168, 75782016, 51109572, 4956929, -72663864, --64581276, -64316600, -26499948, 36672580, 31037044, 33432026, 29799556, -886911, -4992900, -7531225, --10527502, -15168214, -2208687, 20304458, -1937567, -11630235, -4743255, -16850230, -9677098, -2850785, --4358318, 32511828, 29995514, 17922362, 18992346, 1075352, -23549306, -23776938, -43928388, -29080686, -3883187, 3661997, 8807367, 25928180, 36674724, 22175990, 18408766, -764504, -20969640, -28922310, --25163140, -20928302, 2884071, 7567196, 13360570, 9390409, 6072547, 1416802, -7711614, 3047816, -617402, 3242164, 18176838, -1648194, 7987566, 8383240, -13717589, -25666188, -26598196, -23826332, -6236830, 19640348, 14091251, 21483426, 18787260, -6287296, 4645007, 11732777, -7635378, -7014219, --16572668, -21185464, -8349417, -4975183, -2307471, 9026411, 4100083, 4889284, 14212047, 13642427, -13989245, 8070781, 3497714, -7027104, -8839580, -21785684, -24016920, -16933982, -12532715, 5419712, -15528991, 19682224, 26285736, 18868866, 11944841, 196495, -8269960, -12884902, -27352500, -28896004, --10289131, 5180805, 13753022, 11052025, 9550397, 11061151, 7910256, -528281, -2126009, 1175210, -233002, -4793721, -4367982, -14606647, -9654550, -404801, 5229660, 7198902, 5647882, -2178622, --299574, 5305359, 4131759, 314606, 2860985, 2558727, -1737851, -6886443, -6230387, -5964099, --1406602, -1578937, -137976, 1261110, 6087580, 6774237, 6088116, 2902861, 1948841, -2887292, --5279052, -6484327, -3827890, -2286533, -19864, 338229, 2238215, 1950989, 3643206, 2470143, -1488206, -625992, -281857, -881005, -558883, -2234994, -2036351, -1742146, 1205812, 1414118, -1750736, -423591, -638340, -1029718, 936840, 202400, 922344, 183073, 1057099, -472983, --454193, -1007707, 549219, -186294, 288837, -1067836, -392990, -907849, 355945, 93416, -1283122, 228170, 585189, -88584, 916976, -12885, 129923, -1384053, -779000, -1236414, -123480, -155156, 932545, 87510, 847719, 146029, 672699, -518617, 111669, -633508, -279710, -474594, 361851, -360240, 394063, -543313, 209917, -392453, 561030, -222265, -479426, -379031, 417686, -370978, 435939, -354335, 414464, -418222, 367220, -443455, -350040, -446140, 369904, -405874, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +9578851, 2103460, 1420560, -2200634, -753230, -4744865, -165356, -1236414, 3570729, 3101503, +-3121904, -2304787, -1870995, -1840930, -2211908, 215822, 2851322, -2265595, -2362769, -7897371, +-5752572, -4285841, -158914, 394063, 5810017, -3208341, 2901251, 1740536, 1511829, 318901, +-4267050, 1076963, -9144522, 1093606, 328028, 406948, -586263, -5692443, -2538326, -4910222, +345745, 289373, -2908230, -7609609, 5260798, -390842, -4392141, -45097, 3007014, 620623, +-1482838, 1054951, -2479270, -1112397, -2336462, 1815161, -2489471, 3554622, 2942590, -594853, +-5002563, 243739, 749472, -469762, -1799591, 1260036, 951872, -1171989, 2784750, 2956548, +2107218, 178778, 68183, 934155, -2689187, 363998, 4281546, 477815, 864899, 766652, +3179887, 1184874, 1039919, 2787434, -632434, 2192044, -802085, 1427003, 1072131, -397284, +659814, 801011, -186294, 1017907, 1640678, 365609, 98247, 1107565, 1551557, 1177895, +-112743, 442382, 554051, 572304, 238371, 86436, -46708, -377957, -1104880, 759136, +156229, -10119480, -11412265, -783295, -4526359, 3502546, -5604396, 1426466, 2556579, -3780108, +3087008, 11418707, 616328, -1024350, 6222334, 870268, 6248104, 120259, 2839510, -4461398, +-5966247, -298500, 2233383, -4110821, -1352378, -397284, -1188095, 1153736, -1236951, -2161442, +2043331, -1007707, -887985, 4497368, 6362457, -1970316, -3453154, 1291175, 5088463, 1959042, +6527814, 293668, -940598, -149250, 5822902, 394063, -4199405, -2277407, 4568235, 3345243, +3549791, 988379, -2295123, -4704600, 915902, 2238752, 2740726, -1001264, -2490007, 5119601, +3412889, -832150, -2871186, 185757, -2002529, 5334350, 1618666, 989453, 1687922, 607738, +1093606, 3281355, 569083, 3295851, -644245, 5245766, 634581, -5168457, -2054068, -1794223, +2568927, 3208878, -517544, 863825, -3626026, -1309428, -3376918, -1017907, -2201708, -1868311, +-794569, 1105954, 48855, 36507, 143345, 1454383, 231391, 335007, -179315, -1549946, +-438624, 85362, -150861, 631360, 240518, 271120, -588947, 5945846, 4226248, 6262599, +6587406, -1604170, 3318399, -1437203, -3678103, -379031, 9742596, 4217121, 2203855, 3421478, +-4009352, 6887517, 3005940, 4604205, -1328756, -7714298, 3269007, -12018392, 2472828, -3093450, +2450816, 1857037, -183610, -4158065, 1037772, 2660195, -1561221, 2492692, 6120329, -467615, +-4994510, -6899328, 1116692, 3037616, -6276558, 3483755, -5895917, -3907883, 4358855, -2538326, +-4976257, -2479807, -3497177, 5516886, 7664906, 4283156, -2694018, 1611, 4115653, 2399276, +-298500, -3145527, -1432372, -2764348, 2947421, 9390946, -28454, -5141613, -3988414, 2154463, +813896, -1946157, -5531918, -134218, -4731980, -1908039, 799401, -850404, 3839701, 677531, +4809290, 5510980, -4814122, -1820529, 319438, -3825205, -4506495, -759136, 69793, -2818036, +2719251, -2563559, -267362, 2078227, 472983, 120796, 2132988, -2592550, -836445, 576063, +1013075, -1190243, 881005, 424128, 988916, -172872, 30065, 930397, -1257889, 1644973, +-1260036, 790274, 307627, -402116, -52076, 715649, -486942, -902480, -1427540, 896038, +-1034013, 377420, 1465121, -223875, -848793, 13383655, -3600793, 1312649, 1903207, -8813810, +-7523709, 205622, 8737037, 6680285, 10562935, 3496640, -2987150, -4535486, 775778, -2597918, +2080375, 1022739, 3568044, 6578280, 2089502, 4854387, -137439, 2884608, -2913062, -6099391, +-3205119, -4664335, 64425, -1290101, 1428077, -7432441, -3717294, -979253, 2758980, -3664144, +7722351, -8679055, 1869921, -5457830, -4438849, 2549600, 2221572, 7468412, -821413, 1903744, +-2120103, 5238250, 5519570, 1555852, -1181116, -5581310, -769873, 1958505, -4288525, 4332012, +-4721243, 2054605, 7830799, 6580427, 107374, -2499134, 1235877, 7845832, -965294, 1950452, +1227824, 6417218, 76773, -1676648, -3954591, 2816425, -5965173, 2207076, 12452184, 3088618, +5871757, 612033, -8212515, 3007014, 1545115, -3214246, 3374771, -1009317, -877784, -4070019, +1734093, 4072703, 1822677, 812286, -1855426, -4003447, 954557, -767725, -608275, 297963, +-182536, -725850, 1324461, -1338419, -1229434, -1147293, 1855963, 773094, 1466731, -772020, +1355599, 115964, -1284732, 1449015, 795106, -1120987, -2196339, -768262, 1859184, 158914, +-452045, 964757, 862215, 2034741, -62277, -733366, 1304060, -973884, -4821101, -8396661, +4263829, -6002217, -6075768, 1210107, -2915209, -19677392, 1959042, 2979634, 18020610, 5768141, +1388348, -8206072, 7544110, 3195456, -3201361, 3875134, -622770, 6481106, -3882114, -2068027, +-1268089, -1779190, -2646774, -1217086, 4697084, 4014184, 7077033, 2466922, 3502546, -111132, +-4508105, -4979478, 6707665, -3678640, 1537598, -636192, -4633733, 6707665, -1065689, -2957085, +1235877, 4874788, -3205119, 7420630, -9386114, -7850127, -9519795, 2288681, -5335960, -8232379, +-1826435, 7634305, -3187940, 2269353, 4609037, -3327526, -4264366, 318901, 767725, 2534568, +529892, -2421288, -214748, 9849434, 4251481, -4056597, -12372727, -9962714, 3694209, 11724187, +9943923, -7737384, 258772, -5057861, 2288144, 1924145, -8364449, -699006, 1731946, 955630, +-2224793, 474594, 566936, 227633, 2920041, 2586644, -1620813, -2081985, 1464047, -1025960, +718870, -2966212, 1269700, 852551, -4628364, -1081795, 1071594, 687195, 450435, 897648, +-225486, 318364, 411243, 443992, -1648731, -261993, 667331, -567473, -2015950, -1062468, +345745, 304943, 2330557, -3466576, 5776194, -9733470, -1663226, -12071006, -3544959, 1839857, +4235912, -10996727, -2737505, 7610145, -898185, -11003169, 5743445, -3488050, -6303938, 3513820, +5818070, 1364726, 1235340, 2052994, 7598871, -3540664, -3124052, 2037962, -3731253, -1855963, +126165, -366146, 279173, 6135361, 3143379, -642635, -503048, 3614215, 1518808, 4425964, +-348966, 4989679, 5240934, 2146410, -5655935, 892816, -765041, -3972845, 5508833, -3030100, +2327872, -3682398, -1346472, -13456669, 1273995, 11066520, 1007170, 11761231, -2118493, -2542621, +-11989401, 14198088, 6688338, 8127689, 1356136, 6679748, -34360, 38118, 5541582, -3124052, +2032593, 70867, -13442174, 3189013, -3119757, 3660386, -1986422, 3314641, 12563853, 3875671, +3346317, -49392, -7553237, 5809480, -3036542, 1250909, 2913599, 3870303, -4134443, -995896, +-1680406, -2153926, 2497524, -1311039, -1037772, -1663763, 344671, 575526, 242129, -3381213, +1459752, 730144, -729071, 1134945, 546535, 1008244, 789200, 1793149, 75162, 486405, +-151934, -670552, 2159832, -258235, 3019899, 598074, 1296543, -769336, 1693828, 689342, +1391569, 1453846, 1224603, -15435039, -619012, 11789148, -2667712, 7020661, -7563975, -5039071, +-13532905, 7769596, 3871376, 9003862, 4052839, -4288525, 7395397, -1798518, 7071664, -4629438, +-4480725, 641561, -1713155, 6315213, 1196148, 5340255, 5755793, -3419331, -3105261, -1981054, +3753802, -703301, -2600603, 887448, -5389110, 2818572, 1762010, -2690260, 3799436, 6951942, +-2854543, -3027952, -935766, -5099200, -2626373, 7975218, 965294, -4801774, 9484362, -10462540, +1563368, 5732708, -2521683, -3389266, -882079, 4586488, -8152385, 4113505, -3371549, -6830609, +-5282810, -4096862, 49929, -1895154, -4505421, 1977833, 11807402, 6647536, -1714766, -4017405, +-11611444, 1292248, 6309307, -3683471, -12821014, 410706, -2084670, 707596, 1521492, 5908265, +-424128, -2905009, -1210644, -4584341, -2823404, -2135136, 3428995, -2823941, 3177739, -6724845, +498753, -3055332, -2144799, 4189204, -2036888, -1890859, -2439542, 901943, -4401805, -1676111, +-1060857, -113817, 866510, -3023120, 810675, -2388002, 1289564, 1666984, 3507378, 722091, +1232119, 1930051, 1381369, -970663, 524523, 274878, 2600066, 1586990, -322659, 1641214, +-181999, 190589, -1138166, 214748, -38118, -1828582, 511638, -1247688, -1038845, 183610, +1365800, -346819, 5165772, -2273112, 1310502, 7646653, 491237, 8957691, 9700184, 21662204, +14763950, 9060770, -2308545, -11471321, -4009352, 10513006, 4537096, -11081016, 8260296, -1933272, +-5508833, -6781754, 1001264, 18725520, -12703976, 13540958, 5272609, -2920041, 4434554, -3663607, +9677635, -3724274, 5104569, 1015223, -6740415, -4715874, -6568079, 245887, 5527086, -1607392, +-3710852, 3564823, 444529, -1126355, -12685186, 3826279, -7114614, -5378910, 3476776, 8341364, +-6185290, -8891119, 296890, 7528541, 602906, -5073967, -1906966, -3025268, 3417720, 2494839, +-2933463, -4798016, -7210713, 4435628, 11515881, 7055558, 3624416, -6706592, 3451006, 7288560, +-8214662, -10714870, 1853278, -8850317, -4245575, -17337172, 205622, -11911018, -6215355, 3184182, +-1512365, -1160178, 5248987, 879931, -9723806, -6750078, 4359392, -1361505, 512712, -3039226, +269509, 2815351, -439160, 1859184, 1874753, 368830, 162672, 1373316, 1615445, 1061394, +112743, 313533, -993748, 2541010, 53150, 2335925, -435402, -1595044, 751082, 2171106, +-2768107, -4075387, -2077690, -613107, -1279900, 4576825, 1722282, -1477469, 2036351, -1196148, +299037, -3741454, -341987, 237834, -1707250, 23685670, 542777, -9291625, 10457172, -11442867, +13233868, 1055488, -8047158, -13813689, -3336653, 6750078, -10963441, 9714679, -1550483, 6254546, +7477001, -6438156, -2669322, -3884798, -5112622, -2011655, -4778151, 771484, -5840619, 6046777, +3830037, 5070746, 10333691, 5295158, -1549946, 12305081, 6277095, 2249489, -6630893, -7249368, +3687230, -5557688, 1256815, 3865471, -8252243, 7017977, 18773302, 1398012, 13345537, 6291054, +6445672, 9504763, 534187, 5019743, 5317170, -12202002, -8274792, 8352638, 534723, 7880191, +1382443, 8273718, -1373316, 2948495, 2037962, -17468706, -1180579, 4433480, 11624866, 2558727, +10189810, 994285, -2448668, 3308199, 4548907, -9829033, -16581258, -8777839, 2232309, 4023311, +508954, 12091944, 4234301, -19079318, 4795868, -2811593, 51540, 5424007, -7689065, -312459, +-4168803, 3450469, 4865124, 245887, 1005022, 3506304, 85362, -86973, -1711008, -1879585, +583042, 304406, 55298, 2916283, 2088428, 692027, 1719061, 1097364, 10737, -2973728, +2257005, 1850057, -1221918, -314069, -479963, 84289, 1625108, 1355599, 4430796, -3847217, +-1158031, 1633161, -1008780, 2308008, -1966021, 3897683, -1025960, -1265942, 474057, 2206003, +1521492, -616328, -346282, -1624571, -381178, -11573326, -903554, -10314364, -4720706, 4226785, +-5085242, 2222109, 3584150, -6212670, -15153718, 4818417, -15012521, -17440252, 3861176, -8609262, +7755637, 10865730, -2709588, 12690555, -3001109, 12537010, 17264158, -38655, 1100049, -17409114, +-3194382, 1825361, 3054259, -2082522, -11345156, 743029, -9594957, 1180042, -2526515, 2582349, +-3634079, -6466610, 1538672, -1197759, -3451543, 4014184, 488553, -2702608, 12491912, 4551055, +9398999, -5945846, 1800128, -5023501, 3631932, -1169842, 4963909, -1699196, -3598646, -4823249, +-10897943, -6543920, 17795124, 7105487, 11829951, -13662828, 2944737, 9984188, -8483634, 7516, +6650220, -3630858, 6672769, 868120, -11790759, -3160559, -18194018, -2336999, 7452842, 3732327, +12349105, 1309428, 8230231, 8610873, 3099356, -627602, 15975131, 1262184, 493384, -2811056, +-1492501, 8331700, 5008469, 7964480, -881005, -1744294, -1986422, 5792837, 1269163, -1313723, +1661079, 3946538, -896038, -2462627, -4610648, 77846, -3667902, -1742146, -3121904, 2593624, +-326418, -5552856, -964757, 321049, 444529, -352724, -2545842, 3635153, -2979634, 864362, +1437203, -4213363, -740345, -2845416, 585726, 3213173, -2917894, -2487323, -1809792, -1889249, +1862942, 961536, -11258183, -10040560, -10662793, -15539729, 10599442, 6869800, 942208, -10457172, +9447317, -86436, -13205951, -10795937, -3776887, -2690260, -8460012, -3330747, -5021354, -4249334, +-3136400, -12207371, 6099928, 7151658, -646929, -1135482, -2240362, -4509716, -14512694, -15815680, +471910, 6867116, -4189204, -9739912, -5484673, 7419556, 5442798, 362925, -3059627, -4183298, +-4251481, 9383430, -4786741, 6597070, -4529043, 198105, -15779710, -3432216, -1252520, 11909407, +3263102, -2783139, -8876624, -6160594, -12419972, 20036560, -9220758, 19029390, 2415382, -8192113, +12540768, 12364674, 21346524, -20936892, 8661875, 3491809, 2814277, -4151086, -6029061, 9266929, +4782983, -1585917, -9839233, 10932302, -5749351, 11752641, 9687836, 9197672, -8332237, 18147848, +-13405667, 7466801, 11683385, -6728603, 1451699, 341987, 10150081, -2695629, 4505421, -5294621, +10847477, -339302, 1895691, -6227703, 4947803, -338766, 5104569, -1479079, 6883759, 3375844, +2166274, -4065724, 1295470, -3403762, 190052, -2897492, -3921305, -782758, -3463891, -2301029, +-375810, -1752884, -3451006, 2367601, 2862596, 4225711, 977642, -3941169, 367220, -2659659, +2666101, 1121523, -1941862, 525060, 1862942, 1126355, -4444218, 875100, 4452808, 1753957, +-704375, 1287417, 17064978, -28491740, -30508226, -19234474, -3156264, -13420699, 8271034, -11043972, +1192927, 5446019, -758062, 20083268, 14567455, 5100274, -5833103, -4519380, 14152991, -2388539, +2252174, -5798743, -12499965, 9127, 5163625, 3345780, -6835978, 6068789, 948114, -841277, +12011950, 16411607, 1260036, -10524280, -4442607, -20170240, -7726646, -5226439, -5966247, 893353, +3612604, -7341173, -2843268, -10261214, 11132555, 13238700, 11134703, 12361990, 9819369, 16181826, +2077690, 5548561, 3937948, -2946885, 6336151, 9644886, -9587978, -33474976, -7696045, 11115375, +-17245368, 8838506, 11033234, 3952444, -5177046, 838592, -4068408, -13440026, -3559991, 8749922, +-10650982, -9094593, 3330747, -7382512, 21891986, 22167936, -8106751, 14277008, 3871376, -2090575, +-9600863, 6830072, -12986370, -10816875, 12011950, 9004399, 6410776, -833224, -1042603, -15942382, +-11361799, -2095407, -3520263, -2964601, -2276870, -4710506, -3797288, -4390531, -2090039, 586800, +3880503, 2983392, 5107253, -414464, -2257542, -2383707, -1508070, 7204271, 6808060, 3464428, +-494458, -450972, -1410360, -2684892, -4057134, -1840930, 890132, -1231045, 3044595, -1535451, +1231582, 1395864, 1372779, 2758443, -3061238, -50466, 794569, 2339684, -3712462, 6647536, +-2599529, -1671816, 27492622, -23165442, -261456, 3730179, -21843130, -6661495, -9127879, 3151969, +-6556805, 18938658, 2616172, -396748, 23998666, -1508070, -20987358, -17104170, -10229001, 8011188, +-1093606, -20644298, 5383742, 5551245, 10897406, -12342662, 6315750, 10215043, 9143985, 7097434, +-2380486, 12239583, 13500693, 4377109, -29717952, 21661130, -10588168, 8259759, -2067490, -3235721, +5819681, -13353053, -7451232, 13887777, -6314139, -1961726, 12777528, -14317810, 12848932, -5059472, +11936251, -15756088, 20946556, -9400073, 32355600, -4348118, 2113661, 8180302, -7057705, -5418101, +-3843996, 2514167, -1578401, -16354162, -20331302, -5745593, 11915850, -6219650, -7344931, -20890720, +9643275, 2047626, -28347858, -503048, 438624, 4109210, 14672145, -10008348, 4621922, -12829067, +-11101417, -16988206, -16816944, -3070902, -9818295, 12133283, -1986959, 11851425, -5769752, 6721624, +-915365, -7703024, -10578504, -1289027, 1304060, 5124433, -2490544, 2219961, 1079111, 4183835, +-390305, -5702106, -785442, -8593693, -363462, 1322850, 1921461, 422517, -3204046, -4196720, +4723927, 2116345, -1381369, 5281199, -6682432, -8995809, -136365, 7890392, 212064, 2251100, +3168612, 5383742, 350040, 6031745, -4925791, 1909113, 1239635, 4899484, 8400956, -5251672, +1376000, -1264868, 1395864, 10546292, 31698470, 15849503, -9683541, 21887154, 7175280, -13930726, +5357972, 14156212, -2204392, -4776541, -19500762, -5247377, 12000139, 7888781, 5701032, 3573950, +-3531000, -7780334, -18408766, 9829033, -6287296, 4918275, -14139032, -7603166, -369904, -2132988, +18066780, 5494337, 2864743, 13891535, 6629819, -20904680, -2467996, 7707856, -3946538, 482110, +17849348, 5928129, 20725364, -12029667, -7638063, -3356517, -7762080, 8188892, -8090645, 15674483, +15533286, -6792491, -15222975, 25509422, -13125420, -5240397, -3076807, 7633768, 3854196, -14150307, +-4262755, 9139690, -6779606, 11579232, -5480379, 16384763, -8512625, 3739306, 24946780, -451508, +17566416, 30518964, 3826279, 15011984, -7758322, -36599564, -24865714, -4707821, -1595044, 20876226, +-706522, 7014219, 1742146, -5131949, -17008608, -37775312, 28594282, 2025077, 817118, 9409200, +4431333, -9178345, 21126408, 1105954, 4434554, -217433, 1390496, -18609556, -6965363, -12253542, +-7459285, -558346, -6973417, -6902013, 4292283, -1467805, -4815732, 13691282, -2586644, -13841069, +-9968619, 3527242, 638340, -3986804, 21087752, 6419903, -7118372, -8133058, 2145873, -1862942, +-4431870, 726386, 1891933, -4723927, 4961224, -127775, 7187091, 9433896, 1781875, -854699, +-2899103, 6332930, 6044630, 5534066, -41399188, -9911711, 43236900, -16597364, -18539764, 38176352, +-24495810, 21512954, 28750512, 11362336, 3950833, -21836688, 8356396, -38305204, -18872624, 8381629, +19913078, 2252174, 4592394, 14516989, 38744364, 26191248, 8184597, 1445257, -46171, 4310537, +3198677, -15036681, 318364, 9587978, 12119324, 51707648, 29142964, 19925428, 37335612, 15256261, +-5352066, 11217381, -710280, 35773320, 12942347, -2923799, -5972689, 14946486, -2310693, 17162152, +-53348324, 2300492, 18355080, -1105954, 22217328, -8319352, 5860483, 11838540, -49676664, -19197430, +-3910031, -15910169, -20592758, -24256364, 22673132, -14842870, 4503810, -4549444, 22749368, -37323804, +-10271951, -5272073, 11681237, -188442, -3471944, 27494770, 47937740, -257161, 14882599, -9108552, +3990025, 33539936, -35756140, -21246666, -29940754, -37740416, -3366181, -1549946, -14934675, -16040092, +-15208479, -14434311, -18618146, -26958972, -11832635, -17515950, -10783589, 4607963, 23531052, 7468412, +3456912, 3454764, -2481417, 5158793, 2151779, -16926466, -15290084, -4490389, -21489332, -8621073, +-9582609, -7486665, -8595840, 9582609, -7970923, 419833, 1224066, 4015795, 11500312, 17702244, +-462783, -4741644, 12732967, -6841883, 7999914, 2922188, 1503239, -3772055, 2043868, 1358283, +-7991861, -10423886, -11302206, -1845762, 3518652, 22456774, 19781546, -18626200, -65901440, -11943767, +27025544, 6101001, -7342784, -5346161, 2058363, -9251896, -12082817, 14387604, 10853382, 29822106, +10917270, 17867064, -6748468, 39727912, 7219303, 25129316, -3543348, 36633388, -13947906, 23811836, +-23324894, 51540, 2605435, 16966732, -6720550, -12929462, -30861488, 17047262, 2288144, 3373160, +-14910516, -27855548, -1678795, 3065533, -3394635, 8341900, 17858474, 2547453, 12773770, 45420888, +-19161460, 4421132, -14998026, 23386634, 20437066, -23011362, 21606370, 24493662, -17592722, 6108517, +5817533, 16925392, 8453033, 34544960, 10948945, -12461848, 2098629, 44689136, 14227616, -51430084, +15146739, 9023726, -44113072, -12426951, -14119705, -31334470, 2265059, 19080930, 21109764, -12680891, +37950332, -9931038, -16460462, -8660802, 20073604, -74634720, -9079561, 907849, 60073172, 7781944, +50936700, 24283208, 35751844, -1189169, 12276090, -7035157, 30295626, 30535070, 27582280, -6867116, +-18365280, -7707856, 30262876, -3757560, -19765440, -8792335, 35851164, 4796942, -22301080, -7832947, +32340566, 9039296, 13467407, -647466, 12216498, -9456981, -639950, -918049, 5290326, -1085553, +5718212, -4721243, -10500121, -12655658, -15195594, -2238752, -11096048, -245887, -1985886, -4575751, +10722386, -12473122, -5009006, -12375411, -4499515, -22502408, -16582869, 22199076, 392453, -25942140, +-41120552, 33393908, 71165464, 5036923, -39891656, 61815316, -14074071, -642098, 8582955, 35170952, +-20275466, 1753420, 69709464, -34401076, 16453483, 23812372, 22406308, -30739618, -3317862, 5815386, +-15381352, 2910377, 7097971, -12340515, 12220793, -21107080, -6248641, -8293045, -1803886, -12566001, +-11417097, -3878892, 6546604, -23041426, -21971442, 33021320, 5761162, -20249698, -5561446, 19750944, +47105592, -3853660, -23242216, 24943560, 36084168, -10266582, -2877091, 1214939, 12947716, 372588, +-148176, 16765405, -40242768, 27758910, -23294292, 570694, -32942936, 18662706, -2748242, -48656612, +23967528, -3216394, -19121194, 33299418, 3694746, 32930052, -27806156, -10298795, -11346767, -25268366, +-39832600, -52162376, 44318156, 18476412, 32573568, 30495878, 18504330, 7576323, -19053012, 28893856, +-14416595, -11757473, 38534984, 13219909, -7489886, -3189013, 11608223, -27169426, 6875706, -10562398, +17979806, -6695317, -11938398, 17637284, 2748242, -20117626, 1447404, -9378598, -5883569, 4612258, +-4652524, 4029753, -1313723, -14404783, -7629473, 6657200, -5089536, -8972187, 8992588, 14765561, +14010720, -11120744, -4873714, 16932372, -28404230, 8768176, 10139344, -11783243, -28227062, 14407468, +1566053, -12336220, 8572755, -13225278, -22016002, 6048388, 19385872, -15893526, -7186554, 7242926, +16896938, -4373351, -2320893, 15206332, 876710, -11671037, 38693896, -15724949, 11434277, 9001715, +-40221832, 36177048, 12600897, -10282152, 30994094, 2641942, 2045478, 15216532, -13498545, 39639864, +-31800474, -16958678, 14743549, 13689671, 6724845, -29496224, -18004502, -32872070, 18194018, 4436701, +16621523, 90194, 17854716, 7270306, 5978058, 783295, 15226196, -6800007, 8385387, -14986752, +11295227, -13846438, -115964, -18300318, -13048648, 840740, -16335908, 7727183, 38970924, 9385040, +-29192356, 15307800, 11734924, 20734492, 597537, 34431680, -29511794, 4589173, 13727252, -28418724, +-6627672, 57563300, 32387274, -76017160, -32284732, 40545028, -11028939, -36032628, 14260365, -3628711, +-27831388, 20498806, 34629248, -46843060, 9302362, 41726144, -28204514, -25269976, 34089692, 4632122, +-28010702, 5045513, 22169010, -24442122, -3383897, 26925686, -3926674, -11914776, -19222664, 24637544, +-6477348, 13762686, 3207267, 13977971, -9527311, 9066139, 24820616, 9841381, -18259516, 1544041, +-13059922, -8806294, -18394808, -1621887, -4896800, -1262720, -12358768, 12693239, 10912975, -4279935, +28369332, -7138773, -30123826, 36319856, -4287988, -6863895, 6705518, 12742094, 1720134, -3335042, +30640296, 16865262, -21497386, 1852205, 8727910, -15584289, -12885976, 22179212, -11398843, -41981156, +40494024, 5190468, -40929428, -1176284, 21581674, -15360414, -34417184, 19892678, 26538602, -42432128, +6263673, 31998580, -18727668, -3255585, 35013112, -2565706, -14283987, 8231842, 14798310, -19153944, +-5233955, 20548198, -4677757, -17899814, 15079630, 9008694, -10432476, 33817500, -72796472, -4968741, +-13060459, -80502184, -14667850, -24700894, 7685844, 14063870, 23643794, -10467909, -31723166, -11716134, +-45676440, 6263136, 16009491, 9582072, 6958921, -36368172, 22161494, 3729105, -44180180, 32247152, +-47493212, -19149112, -17987324, 12985297, 33897492, 39797168, -3528853, -8759586, -76707040, 32981054, +77098424, 28368796, 1487669, -42359652, -62595928, -25436944, -5561446, 32692754, -39325796, -23165442, +-40396316, -12628278, 71970232, 78084120, -13906030, -35798016, -31295280, -16356846, -8570070, 39391828, +-19005768, 11877195, 7833484, 26243324, -7537668, -17477296, -45886356, -19628000, 68978248, 29819422, +45777372, -42215232, -23855322, -19492172, 46774880, 1078574, -77120432, -73900280, 41049148, 71474696, +119288424, 21051782, -102062384, 17125108, -27262304, 34685084, 32915018, -124450976, -40134320, 24441586, +65226596, 16067473, -63809792, -14101451, -6751152, 36954436, 31049930, 8503498, -51196548, -7856032, +10740639, 22727894, 10869488, -13160317, 1779727, -28023588, -3954591, -405874, 26778584, -18537078, +35845796, -23067732, 9954124, 21086678, -9059160, 17496086, 15058692, 28490128, 1087164, -13766981, +-16768089, 2600603, 1016834, 4839355, 2607045, -927176, -2278480, -10285373, -11227581, -2157684, +17609366, -4625680, 135291, -3760244, 5647882, 1342714, 9659381, -9139154, -12228846, -23537494, +-12025372, -1400696, 12847858, -12597139, -1161252, -36853504, 31479426, -32895154, -6950868, 1021665, +8443369, -6367826, 7588134, 12518219, -20935818, -18314814, -253940, 4582193, 13682155, -15464567, +2295123, 11450383, -8908299, 7060390, -4559108, 35471600, -371515, -5610838, 20650202, 11009075, +18364744, -9450002, 11774116, -3936875, -358093, 14800994, 10821170, 2268817, 4618164, 20038706, +-18780818, -5946382, 2155537, 27117350, -308701, -6396280, 25569014, -6703370, -10929081, -11244224, +21206402, -5235029, 9333501, 5405217, 3334505, -7634305, 3912178, 7988103, 3027415, 23578296, +11938935, 6542309, -10189810, -1767916, 9200357, -17196512, 6240588, 6260452, 17658758, 39192, +-1967095, 9727564, 2305324, -19921668, 22314502, 6593312, -5070746, 18246632, -12407087, -1739999, +-9233643, -8360691, 18253074, 13094282, -1154809, 6463389, -10741176, 2347200, -14518063, -1569274, +-13290239, 2811593, 8731132, 2972654, 1697049, -3074123, -1770063, 2384244, -7919920, 2157684, +-3394098, 3623879, -5201743, -2025614, -4812511, -6386080, 3069291, -1248225, -361851, -2461553, +8647917, 3158949, -10851235, -11541651, -7722351, 2232846, 3599183, 8143258, 4963909, -10646150, +-1520418, -4108673, 9661529, -2571075, 10415296, 4147865, -8475581, -95026, 4639102, -5007395, +6655589, -4053376, 7519414, -5425081, -1663763, 2269353, -4206921, 57456460, 4631586, -21241834, +-17581448, 2838437, 12993350, -812286, 11859478, -4535486, -3181497, -15960635, -3510599, -11186779, +17732846, -11127723, -913217, -7038915, -3316252, -4145180, 1932198, -11827803, 1797981, -5120138, +-8320963, 2399276, -1335735, 625455, -2262374, 4109747, 1989644, -9907953, -6350109, -53687, +-6702297, -5867462, 4876936, -1648194, -10095858, 617402, -5622112, 4243428, -14907295, 7385733, +-6489696, -11359652, 3417720, -5240934, -5877663, 1465658, -116501, 636729, -2497524, 2431488, +-4575214, 4966593, -3147137, 460635, 8280697, -6069863, 2763812, -1656784, -903554, 2185065, +-6889128, 6163815, -7242389, 6152004, -1534377, -387084, -4648229, 5807333, -6962142, 368830, +2419140, -9203041, 9059697, -5640903, 3825742, -4295504, 3652333, -3332895, -4061965, 6662568, +-4277788, -932545, 6605660, -4387846, -102005, 453119, 1009854, -4844723, 335007, -524523, +-2117419, -1431835, 1094143, -1591822, -2604361, -1372242, 2847027, -2751464, 2120103, -855235, +-355409, -956167, -2017024, 1741072, -1381369, -1654636, 1933809, -2192044, 1516660, 619549, +-1312649, 195958, -383863, 434329, -4072703, 3728569, -4188667, 593242, -672162, -2284386, +489089, -1316408, 2746632, -7047505, -27831924, -44482976, 47165184, 164634688, 31381716, 49520972, +-101457328, -140728368, -58997280, -73630768, 56807920, 132200168, 75782016, 51109572, 4956929, -72663864, +-64581276, -64316600, -26499948, 36672580, 31037044, 33432026, 29799556, -886911, -4992900, -7531225, +-10527502, -15168214, -2208687, 20304458, -1937567, -11630235, -4743255, -16850230, -9677098, -2850785, +-4358318, 32511828, 29995514, 17922362, 18992346, 1075352, -23549306, -23776938, -43928388, -29080686, +3883187, 3661997, 8807367, 25928180, 36674724, 22175990, 18408766, -764504, -20969640, -28922310, +-25163140, -20928302, 2884071, 7567196, 13360570, 9390409, 6072547, 1416802, -7711614, 3047816, +617402, 3242164, 18176838, -1648194, 7987566, 8383240, -13717589, -25666188, -26598196, -23826332, +6236830, 19640348, 14091251, 21483426, 18787260, -6287296, 4645007, 11732777, -7635378, -7014219, +-16572668, -21185464, -8349417, -4975183, -2307471, 9026411, 4100083, 4889284, 14212047, 13642427, +13989245, 8070781, 3497714, -7027104, -8839580, -21785684, -24016920, -16933982, -12532715, 5419712, +15528991, 19682224, 26285736, 18868866, 11944841, 196495, -8269960, -12884902, -27352500, -28896004, +-10289131, 5180805, 13753022, 11052025, 9550397, 11061151, 7910256, -528281, -2126009, 1175210, +233002, -4793721, -4367982, -14606647, -9654550, -404801, 5229660, 7198902, 5647882, -2178622, +-299574, 5305359, 4131759, 314606, 2860985, 2558727, -1737851, -6886443, -6230387, -5964099, +-1406602, -1578937, -137976, 1261110, 6087580, 6774237, 6088116, 2902861, 1948841, -2887292, +-5279052, -6484327, -3827890, -2286533, -19864, 338229, 2238215, 1950989, 3643206, 2470143, +1488206, -625992, -281857, -881005, -558883, -2234994, -2036351, -1742146, 1205812, 1414118, +1750736, -423591, -638340, -1029718, 936840, 202400, 922344, 183073, 1057099, -472983, +-454193, -1007707, 549219, -186294, 288837, -1067836, -392990, -907849, 355945, 93416, +1283122, 228170, 585189, -88584, 916976, -12885, 129923, -1384053, -779000, -1236414, +123480, -155156, 932545, 87510, 847719, 146029, 672699, -518617, 111669, -633508, +279710, -474594, 361851, -360240, 394063, -543313, 209917, -392453, 561030, -222265, +479426, -379031, 417686, -370978, 435939, -354335, 414464, -418222, 367220, -443455, +350040, -446140, 369904, -405874, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 2206540, -6285148, 561030, 4196183, -944356, -649077, -2254858, 4476430, 2872796, -2681670, -3471407, -2238752, -867583, -5404680, -6200322, 1443646, 332323, -2133525, -2099702, -4221953, 2697240, --4960687, 1282585, -518617, 1138166, 372588, 1077500, -2247342, -301185, 841277, 1437740, --539018, 1755031, 1231582, -2165201, 1614908, -1301912, -4234838, 5987722, -1179505, 293132, -1387811, -726923, 3257196, 4228396, -936303, 1600412, 3128347, 287226, -3390877, -2547989, -807991, 2022393, -1052804, 1115618, 3846680, -3395172, -3113851, 3246995, 579821, -1257352, --2115808, -68719, 701690, 2469069, -3951370, 1947768, 962073, -3033321, -3339874, 2842195, --1833414, -4026532, -1765232, -358630, 6077916, 7081864, -644245, 1193464, -913754, 1107028, --1198833, 1897302, 1105954, -1143535, -425739, -1215476, 570157, -1627793, 1522566, 1410360, -282394, -1909650, 196495, -69256, 809064, -477278, 1273995, -655519, 200253, 106837, -778463, -157840, 249108, 260382, 805306, -17180, -7763154, -3356517, -5355824, 3508988, --2597918, -3639448, -2464238, -3263638, -648540, 1201517, 5872831, 1012002, -3138547, 4955319, -192737, 5108327, -4912369, 7912404, 3672197, 8583492, -1541893, -2925947, -591632, -4728222, --403190, -340376, -1713155, 1602023, 157303, -3755412, -911607, -17180, 1160178, 3721589, -857920, -5613523, -4674535, -1776506, 3149285, 205622, 152471, -2847563, 4668630, -131533, -339302, -2018635, 592706, -1221381, 2448668, -798864, 7784092, 61740, -1028645, 2946885, --1970853, -3508452, -1454383, 2633889, 4695473, 775242, 2873870, 703838, 481036, -2478196, --2421288, -3966939, -182536, -4112431, 1014686, 3340948, 3564823, 2505040, -1278290, -1825361, -3199214, -2280628, -957241, 1997697, -1838246, -326418, -959925, 2068027, 3679176, 1898376, -1073205, -936840, -422517, 661425, -376347, 2465848, 410706, -1208496, -723165, -556198, --175557, 343597, 297963, 37581, -392453, 1142998, 717796, 54761, 433792, -893890, --578210, -713501, -842350, -296353, -943282, -915902, -208843, 1173600, 5421323, 5880347, -3093987, 18254, 4782446, -2571612, -4079682, 3986267, 4121558, 5254356, 7703561, 762357, --4914517, 2887829, -4686346, -271120, 1564442, 1170916, 8582955, 729608, -6913287, -264141, -1233193, 2962454, -499290, -2286533, -7609609, -1431835, 6459631, 2298881, 4249334, 5042829, -4137127, 1221918, -717260, 4491462, -5649493, -102005, -3839701, 10385768, -554588, 360777, -4596152, -3752728, -595927, 1685775, -572304, 6225018, -943282, 1931662, 5894306, -1071594, -1853815, 562641, -277025, 15569, -765578, -1627793, 2553895, 3490735, -817118, 3475166, -1250372, 6804302, 7702487, -335544, 2068027, 1346472, -3872450, 3886409, -938450, -3164854, -1369558, 3829500, 1074816, -905701, 6830609, -894427, 1866163, 2120103, 1025423, -3387119, --184147, -631897, 566936, -1752884, -359704, 281857, 742493, 805306, 1273458, -366683, -632971, -1622961, -1132798, -2030446, 1624571, 606664, -292058, 714038, -267899, -1652489, -1109712, 242666, 810675, -452582, -580894, 379568, 2050847, -2025614, 1176821, 8617852, -8350490, -3259880, -4856535, -4156455, -2934537, 2204929, -9232032, -843424, 1220308, -4342749, --8185671, 7949448, -1760937, -1932198, 1209033, 3695819, 3185792, -3971771, -1660005, -104153, --497679, 1959579, 2720862, -1468342, 3359738, -2497524, 5182415, -562641, 153008, -2616709, -2709051, 1089311, -858457, -2605972, 1209570, -1450088, -2401424, -1896228, 408022, 1796907, --5018133, 496606, -9416179, -5338108, 3306051, -1337882, 1058710, 2161442, 6101538, -1912334, --3162707, -143881, 136902, 2663954, 2434710, -2812667, -1326608, 6876780, 201863, 1110249, -521302, 3099893, -5733245, 263604, 2816962, 5359583, 1050656, 2343979, 7982734, -1908039, --817118, -4283693, -2684, 1393180, 2755222, 60666, -1795296, 2524904, -272730, 4532264, --18254, -113280, 486942, -5586679, -2973728, -3282429, 3086471, -490163, -972273, -4295, -353798, -177704, 1591285, -478352, -1002875, -1198833, -673236, -1716913, -1202591, 1350230, -18790, -450435, -951872, 435939, 284542, 139050, -845035, 1476932, 559956, 935229, --279173, -75699, -1082332, -1103270, 673773, -526134, 933082, 1314797, -51003, -5516349, --8425115, 3569655, -2695092, 92879, -4296578, 3330747, -9736691, -8129300, -9176734, -3184718, --1876364, -6530498, 3390340, 8790724, -6428493, 1304596, 10487773, -2467459, -2743947, -4844723, -938450, -88584, 4701379, 1445793, 3406983, 2261300, -3287798, -6665789, -3047279, 3884798, --2142652, -4100083, 1118302, 1609002, 1397475, 779000, 9148280, -4332012, 5026186, -2417530, -2573222, -2694018, 7629473, -5664525, 3173981, -521302, -4373888, 4110821, -1559610, -1540820, -4591320, 2328946, -284542, -2042794, 4183298, 1952063, -4096325, -5091147, 3547106, 5504538, -3235721, 67109, -2319819, 220654, 3652870, -1592896, 4393752, -1072668, -8633421, 212064, --3733400, 12377022, 4447976, -7144141, -3883724, -1461900, -3101503, 3143916, 3215857, 2292976, --1420560, 2662343, 2301566, 705985, -418222, -3721589, 828929, 1190243, -938450, 774168, -1378685, -556735, -47782, 736050, -125091, -1154273, -799938, 18254, 1063541, -1059783, -1013075, 995896, -1259499, -1817308, -2092186, 537, 1420560, -670015, 1275068, -1017907, -22549, 812286, -512175, -2043868, 427886, 3212099, -7188165, -8878234, 7659538, -1634235, --7150584, 603980, -1799591, 7390565, 3732327, -1872069, 1433445, -356482, -1041530, -1304060, -8646306, 1699733, 526670, -5838471, -2611340, -1348083, 3077344, 3795677, 11623255, 315680, -451508, -326954, 858993, -5051956, 302795, 2128156, -6242198, -4431333, -4015795, -488553, -8520141, -6839199, 1246614, 3885872, 1748052, -3181497, 3593814, -8542690, 7088307, -1486596, -78920, 3837553, -4257387, -5049808, -7798587, 1700807, -2498597, 7493108, 2673080, 214748, -1501628, 2301029, 5934034, -2558190, -1208496, 6143951, -1176284, -3457449, -47782, 6148246, -6281390, 5684389, 3142842, -3737159, 3712999, 5144834, -5961415, 7763154, -4646618, -4394289, -7094749, 761820, 10200547, -105764, -5595806, 2520609, -2446521, 6725382, 3282966, 1867774, -536871, 2318746, -1097901, 4233764, 1553168, 1693291, 1357747, 2486249, -111669, -191663, -2015950, -57445, 1504312, -742493, 2423972, 4790499, -2692945, -1263794, 929860, 610959, -395137, 1226750, -151934, 394600, 1071594, 2352568, 260919, 4409858, 1138703, 521839, --1886028, 508417, 1546725, -1969779, 522912, 870805, -26307, 569620, -39728, -15794742, --10497437, 2861522, 5035313, 10889890, -6662031, 5867462, 1025960, 6175626, -370978, -2809446, --3782256, 3830574, 11167989, 995896, -1044214, -10666551, -9022116, 101469, -6648610, -3832722, -321586, 1391569, -6813966, -1980517, 1576253, 4003983, 2052994, -4329864, -75699, 5076115, -4041564, 887985, -4204236, 799938, -2596845, 1254131, 1350767, 2343442, -3252901, 4032974, -9715753, -964757, -792421, 1926293, -5515275, 2601140, 7811472, -7736310, -9220221, -4711579, -694174, -11832098, 231391, 362388, 1591822, 137439, -236760, -5608154, -3096672, -3636227, --561567, 8085276, 11846057, 355409, 721555, 5827197, -2497524, -980326, 2633352, 13413183, -1630477, 4829691, 9345849, 1731409, -6169721, 2544231, 2748779, -2809446, 2830384, 2428804, --693100, -2908230, 1308891, 861678, -696858, -4976794, 2130841, 4571993, 1644973, 3330747, -1793686, 4017942, -935229, -1511292, 3634079, 3069291, -1019518, -210990, -1172526, 2639258, -2804077, -2324114, 2784213, 757525, 284542, 705448, 1480153, 2128156, 209917, 1856500, --1336809, -693637, -79994, -353798, 694174, -1267552, 117038, -397284, 476205, -1705102, --1554241, 8089034, 5182952, -7596187, -259309, 16112570, 14360223, 2966212, 8689256, 10610717, -2762201, -204011, 7072738, -3214783, 150861, -6401649, 5268315, -483184, 332323, 2291902, -2840047, 8747775, -7342784, -6817724, 6800007, 1324997, 3145527, -5333813, 1027034, -1901060, -3533684, -3758, 4930086, 4716411, -4785131, 3985193, 3446711, -5643587, 14409078, 2450279, -2860985, -11180874, -3500398, -951872, 9362492, 8606041, -817654, -9606231, 6300717, -8360691, --2516851, 7214472, -149787, -5946919, 7162932, 8868034, -2212982, 2950643, -3532074, -12573517, -133144, 7964480, -3629784, -4340602, 5338645, -6062883, -9056475, 2205466, 6241125, 11203422, -5965173, -8500814, 3594888, -9976135, -11625940, 10722923, 5131949, 3884798, -7200513, -7900593, --1116692, 8067023, 2774012, 11551315, 5215164, 2867965, -12279311, 1931125, -3373697, 404801, --2815888, 2503429, 842887, 3043521, 5282810, 2655364, 533650, 2232309, -1984275, -1085553, --2022393, -100932, -1887638, -656593, 847182, 3818226, 756451, -1697586, -619549, 1167694, -252866, -425739, -3889630, 138513, -1948305, 672162, -2739652, -3191698, 2155537, 2368675, -3970161, -3899830, 139586, 1925219, 16725140, 10822244, -7333120, -1937567, -336081, 2988760, -2306398, -1009854, -6622840, 1638530, -4561256, 7028714, 153545, 2736431, -2348810, -994285, --6914361, -3601867, 14358613, 4810900, -8866960, 4204236, -8665097, -6031745, -13515188, 5881958, -150861, 244276, 3109556, -339302, -6172405, 10167261, 5720360, -2207613, -10293426, 10254771, --7093139, 2725157, -346819, 3375308, 1935420, 6522982, 7411503, -1728188, 4064650, 11900281, -1436667, -3708168, -3489124, -2084670, 1755031, 7947837, -2271501, 3240016, 530965, -7249905, -183610, -1773822, 3447785, -10913512, -281320, -18203682, -11143293, -10151692, -2673080, -10032507, -6651294, -2499671, -8417062, -2226404, -1039382, -6724308, -3031710, -230318, 567473, -4031364, --8845485, -8741869, 359167, -1893544, 2022930, 4912369, -898185, 2459943, 1104880, -34897, --264141, -4760971, -326418, -93952, -3950296, -310848, 3479997, 6935836, -1327145, -3311957, -2467459, -4289062, 3498251, -3580392, -1471026, 694174, -2745558, -3217468, -159451, -2007897, -360240, -747324, -3383361, 1597728, -277025, 4046396, 2575907, -2850248, 2291902, -1591285, -2118493, -1305670, 1388348, 1424855, 945430, 85899, 1459752, -1883880, -1174674, -2093797, --4394289, 563178, 1367947, -436476, 749472, -3314641, -11494406, -14307073, -6784975, -9501541, -24708410, -11928198, 5608691, -11260331, -3236258, 1256815, -1818919, -16809428, -339302, -7953206, -614180, 19937776, -6343130, 8404714, 10954314, 4019553, 4464619, 12018929, 3575560, -4584878, -3416647, 4755066, 5063767, 2210298, -2463701, 13979582, 551903, -1047972, -2309082, 3842385, --1166084, -4770635, 4729833, -1720671, 3399467, -13401909, 585726, -2531883, 12214887, -4737886, -3957812, 18351322, -1567663, 456877, -4436701, -7480223, -408559, -1164473, -7704635, 9785546, --2066416, 7121056, 773631, 6730214, -3835943, -641024, 14636175, 7226283, -11322608, -5862094, -3117610, 3591667, 1762010, 3193845, -3291556, 4214437, 5382131, 12217571, -15567646, 1018444, --6645925, 3259880, -264141, 1865090, 5756867, 8420283, -5550709, 5973763, -4014721, -2653216, --2236067, -1994476, 4713727, -10522670, -2071785, -4810900, 6096169, 5006322, 2109903, 2621541, --3544422, 4152697, 1873680, 3015067, -407485, 2410551, -3143916, -1678259, -3944928, -240518, --640487, -3456375, -56908, -273267, -952409, 47245, 4202089, 2676838, -2324114, -3701725, -1976222, 1537061, 4820027, -3626026, 286152, -1245004, 2160906, 2559264, -1269163, -1939715, --3917010, -8115878, -7351911, -7850127, 8508867, -16513076, -4915590, -10331007, 5126044, 17203492, --9376987, 547071, 454730, -3320010, 6585259, -5483063, 2627446, -1673427, -7100118, 15350750, -729608, -4951024, 185757, -2197413, -6808597, 5385352, -5225365, 5057861, -9729712, -4462471, -6499360, 4844186, -16233366, -2863670, -13830332, 4155381, -2352032, -13217762, 16125992, -4476430, --361851, -12224551, -13503914, 830539, -12181064, -1537061, -10531797, -8900783, 10536092, 1219234, --13686450, 4524748, -12256763, 10929081, 3877282, -5223217, 360240, 3548180, 11371463, -8792335, --12570296, 12708808, -8900246, -4991289, 6572911, 9605694, -17793512, -8673686, 10018011, 7544110, -3844533, -882616, 1181116, -12691091, 4306242, 4291746, 6956237, -2199560, -13548474, -9728638, -4696010, -11586211, -10256382, 4330401, -750546, 198105, 4167729, 9858024, -66035, -376347, -9064528, 884763, -1572495, 1600412, -1332514, -1828582, 1883880, -2374580, -1786170, -4587562, --4509179, -3124052, 720481, -2596845, -54761, 1893544, 1394254, -233539, -151934, 2021856, --2413235, -3642669, 1003412, -102542, 3400004, -3358128, -1065689, -3810710, 4337917, 4700842, -907312, -223875, -3000572, -1166621, -4177930, 354335, 549219, -2279017, 599148, 926639, -884763, -1012002, 8381629, -12964359, -21272436, -17088064, 7670812, -20440286, -1042603, 15564961, --1425929, 1154809, 11089069, -7355669, -6351720, 24713242, -9822590, 5811091, 9338870, -1705102, --22418656, -1824287, 2309619, -5588290, -3149822, -5170067, 20822002, 235149, 187368, -993211, --15083388, 2785823, -8705362, -4316979, 887448, 2546916, 4407174, 12152073, 2644089, -3092913, -23800024, 2540473, -5945309, -21777632, -3229816, 16025597, -3518652, -9978820, -13466870, -11793443, --10140418, -6324876, 16917340, 6621766, 929860, 9453223, 14127221, 7927973, -3132105, -2462627, -14604499, -2869038, -4536559, 4277788, 11158325, 1617592, -11555073, 2667712, -1204738, -17187386, --1342714, 13712220, -6824166, -7893076, -1967632, 18427020, -14693620, -2921115, -8216810, 8425115, -4838818, 3911642, 5847598, -2399276, -3197603, 6248104, 4936528, 3455838, -1044751, 781684, -3877282, -10805064, -2037962, 1428614, -5638755, 154619, 5876589, -588947, 1054415, -2316598, --711354, 3249680, 4140349, 6278169, 3485366, -1043677, 2193118, -3579318, -4608500, 1315871, --932008, -3713536, 4101694, 2205466, 3093987, 668941, 1480153, 3220152, 1744831, -927713, --2336999, -604517, 1268089, 6979, 1285806, 268972, 1603097, 992137, 2768107, 354335, --2732673, 5949604, 4836670, -4594005, -1590749, -2208150, -1572495, 2280091, -2792803, 1640141, -17357574, 1746441, -15511274, -575526, 4643934, -564788, -7078643, 6723235, -5242008, 13795435, --10634876, 9475235, 20720532, -5624797, -5542656, -4903779, -4335233, 18494666, -13743358, -15100031, --11530913, 4177393, -6030134, -9732396, -4495757, 6623377, -9337259, 5117991, 1185948, 7231651, -10748156, 1292785, -1416802, -2107218, 10588705, -2778307, 3712462, -13071196, -162672, -4684199, -10315438, -13893145, 11318849, -4832375, -7191386, 11397769, 19779398, -11203422, 5585068, -2517925, -3960497, -29841970, -23681912, -14385993, 1996086, -9150965, 3852586, 907312, -11141145, -8806294, -882616, 23673322, 5515275, -14865419, -22204980, -11744051, -8254927, 14475114, -10176925, -14485314, -3355980, 3084860, -13422847, -917512, -317828, -6691559, -1618666, -433792, -658204, 6437619, -1503239, -7747048, -6905234, -3824132, -9910637, -5426155, 1519345, 10947872, 1745367, 1978369, --3307662, -9149891, -1515050, 7326678, -467078, -4307852, 6704981, -10425496, -5195837, 1458141, -1516660, -267362, 1023276, 630823, -3618510, -7333120, -2732136, 5420249, -3344169, -2676302, --3030636, -6559489, -7286412, 2570538, -2711735, -1666447, -6881075, 1557999, 4265977, 5238250, --386010, -3321084, -3914326, 3743064, 1171452, 3374234, 29998736, 19393924, -4978404, 1845762, -19464254, -7742216, 812286, 8180839, 21060910, 12154757, -3492882, -4767414, -7078643, 1778117, --3831111, 225486, 680215, 21925272, 36575404, -2225330, 25277494, 15781857, 3401077, 3855807, --17759690, -17847736, -1870458, 4628364, -1130650, 4282083, -6534256, -13375602, -22293564, -2001455, --14290430, -12284143, -7938710, -12710956, -8931384, -560493, 20996484, -722628, -15666967, -1388885, -4656819, 15418933, -4704063, -3979287, -9292162, 6973417, -28214178, -25538412, -12110734, -12760348, --13472776, -8309688, 9200357, -11505681, -15740518, -13406204, -23620172, 12161737, 6685117, -21161304, -10994579, 21325050, 42012296, 23067732, -105764, 7623567, -23929948, -9870372, 13124346, 10946798, --6014565, -16305306, 2277943, 3413425, 14972256, -1887638, -15053860, -2660195, 24415816, 15498389, -17722108, 13975824, 24627880, 23050016, 7074348, 6278706, -5228049, -9661529, -2535105, -820876, --8119099, -1611, -9408126, -7107634, 11274289, 4969814, -2856153, -9608379, -3511136, -1111860, -15032, -10693395, 10877005, 186831, -8813273, 5433671, -5366562, -4596152, -1201517, 3411815, -14946486, 7294465, 17849884, 144418, -3305514, 2090039, 6922951, 4571993, -2093797, 9405442, -633508, -2929168, 1566589, 7805030, -3616363, -3175055, 3064459, -563178, 2764348, -30735322, --3057480, 49740016, -3751117, 1918240, 12272869, -17998060, 10052908, 35306780, 32371168, -32686312, --31549756, 107911, -34215320, -12798466, -155156, 4055523, 12341052, 18851686, 16429324, 29336774, -6803765, 11626476, 11545946, -4818417, -2176475, 3303904, 3767223, 8753680, -15757161, 35243964, -14985141, 16522739, -3136937, 35793184, 4348655, 21628918, 8837432, 6858526, -8468602, -5319854, -18119930, 7128035, 8391829, -19031536, -10312216, -15867757, -9401147, -11502459, -108448, -23062364, --25253870, -1330903, -9754944, -47398724, -35431868, -31897648, 9099425, 34802656, 44843216, -24641838, -30909270, 48266304, 8181913, 4218195, -3088618, 33266670, 2507187, 30113626, 12869333, 14187351, --19976966, -65906272, -52331492, -11652783, -1785096, 1568737, 2322504, 24588688, 23085450, 20265804, --12514998, 1778117, -6531035, -33894808, 3447248, 2880313, 17131014, 2822331, 25192668, 22925998, -5647345, 19965692, -8369818, 13576928, -11884175, -13212930, -4929549, 5486284, 21898964, -4756140, --6155762, 3398393, -10821707, -5132486, 11091216, -2979097, 7667591, -13623636, 18796388, 5859409, -200253, -1125818, 14459544, -3385508, 1017370, 2527588, -282394, 9990094, -7092602, -3459059, --96100, 9608916, -14055280, 2044404, 5017059, -6694244, 1053341, 2728378, 1746978, -3176128, -23669564, -4863514, -43943420, -3386582, 68867120, 13110925, -13361106, 18311056, -6111202, 12073690, --5927055, -7070053, -23191750, -8140574, -2858838, -3377455, -11296301, 16825534, -15173046, -15465103, --1459215, 2981244, 14150307, 6965900, 3632469, 6632503, -6280316, 569620, 21314312, -10627897, --26176216, -4728759, 1917703, -8279087, 17686676, -8986145, -6420976, 15639050, 3929358, 11918534, --27025544, -29609504, 9659381, -5355288, -10554882, -12426414, -16206522, -32648194, -233002, -2455648, -10729365, -20742544, -44506060, 33549064, 8797167, 31562640, 3156801, -9590125, -9671729, 8549669, --16941498, 26248692, 4833449, 31415538, 21311090, 46426448, -4844723, -43704512, -34622268, -19069118, -25105694, 25976500, -19705846, 20718386, 39908300, -23250268, -3954591, 43672300, 6419903, 33647312, --5236639, -16536698, -45283452, -17054778, 4764193, 29130616, 24717000, -14354854, 12256226, 12244415, -23420994, 8611409, -23991688, -27582816, -11370926, 19772956, 40770512, -623844, -4052839, 21801254, -10923712, 2357937, -3908957, -8592082, -11483132, -8560944, 6638409, 4707821, 12643310, -5055177, --1900523, 1643899, 7483981, 10555956, -13420699, 629750, 14327474, -1273995, -4705674, -15947750, -11449846, 367220, -7451232, -4628364, 16007343, -387621, -10980621, -5261335, 8462696, 643708, --36536748, 37886980, 51390356, 8968429, 2338610, 11438572, -7833484, 22450330, 12558484, 23466090, --4729833, -24713778, 55013164, 357019, -20640540, 2588792, 37217504, 17076254, 7330973, -23504208, -2598455, -12553116, -9162776, 3752728, -17474074, 1551557, 4773320, 21211232, -29949344, -5028333, --3532611, 17935784, -6719477, -10997264, -10477573, -48318, 11458436, -23240604, 1784022, 6251325, --47659640, 6687801, -12851616, -33543158, 22218940, -24758876, -43531104, 57724896, -352724, 3457449, --4446902, -15897285, 34862788, -24463596, -2209761, 5309117, -15766288, -1162862, 44038448, 22854594, --38643968, -41789496, 41472204, -19595252, 24211804, 39855684, -35520992, -61179660, -42343544, 70968968, --4089346, -55370180, 50883016, -36863168, -70312912, -955093, 60852172, -2467996, -72969880, -885837, --24482924, 831076, 90236192, -13587666, -66230544, 9798431, 35434016, 923418, 41419592, 2581812, -942745, -12884902, 1806571, 9634149, 33467458, -6779069, -8865349, 33203856, -4282620, 8074002, -23255638, -3753802, -33530272, 22181896, 16064251, 25949656, -7843147, -377420, 9292162, -7180649, --24636470, -10686416, 10372346, 1017370, -4728222, 32904818, -828929, -36074504, 8642548, 29953102, -17371532, -12370043, 1791001, -14208289, -7912941, 36298380, 30371324, -7572028, -34454764, -10790568, -14383845, 11898133, 9604621, -6208375, -23099408, -865973, -24871082, 37891276, -7846369, 11621108, -23794656, 17420388, 17964774, 44548476, 18911278, -10712722, 6730751, 11111617, 14197551, -15897285, -42395084, 40499932, 5330592, 14137422, -10142565, 150861, -43841952, 20200842, -23276038, 15704548, --2044941, -15827491, 23347980, -9208410, -17883170, 9648644, -25143276, 16718697, 455803, -4531191, -6628745, 10526965, 15209553, 16031502, 14818711, 45392436, -4669167, 5140002, 14055817, 30660160, --3213173, 8316668, -99858, 24036248, 28048284, -8975945, 6601365, -1019518, -4801774, -51383916, -3950833, 22255446, -12520367, -12380243, 11268920, -21254182, -32172526, 3117610, 18009334, 38408280, --49146236, 19025632, -2651606, -1094680, 83752, 19444390, 40939628, 1018444, -30094298, 10233833, -33207076, -17757006, -26481158, 2855080, 14508400, -13823352, 26284662, -4821638, 20182052, 2085744, --20331838, 25210384, 19912542, 3731790, 15692200, -8564702, 9768903, -4499515, 5128191, 8486855, -23964306, -4755066, -29228864, -3400004, 33697240, 2973191, -4365835, 30380452, 6200859, 233002, -7157563, 21205864, 30906584, -19491636, 7578470, 4633196, -1529008, 15614354, -4478041, -22141094, -7366943, 21922050, -9244380, 6040872, 7282117, -6551436, 8335995, -13902272, 10187662, 9636296, --12530030, -26551488, 11501922, 15827491, -7144141, -9378598, 14322105, -610959, -8735427, -9632001, -10185515, 5950141, 23521926, -44414256, -34582004, -641024, -53369264, -18355080, -19752554, 41069016, --1199907, -15250892, 18901078, -9744207, 10467909, 2632815, -20392504, 24274082, -55030880, -5287642, -3317325, -13827647, 10116259, 2377801, -10763725, -2041720, 1585380, 13771276, 799401, -16222091, --53414896, -39026756, -29697014, -14851997, 33047626, -6811282, 1202591, -53562000, 3960497, -3840238, --7286412, 1564979, -51726976, 27548994, -25139518, 12603582, -10321880, 35059820, -19270444, -34222300, --16450798, -436476, 25467546, 46392628, 48831632, -60488172, -44716516, -30959734, 20734492, 49416284, -59925532, -10624675, -15136002, -52979496, -19665044, 46845208, 28648506, -738734, -67109, -1298154, --44707924, 29676614, -9048422, 28633474, 69687992, -78142632, 94392640, 26504244, -51270100, 14124000, --102700720, -100463040, 73913704, 31380104, 7200513, 21873732, -38075420, -18445810, 68868728, -2833068, -46279884, -4763119, -37398964, -12380243, 40865004, -13849122, -1014686, 13079786, -3406983, -24108726, -13191455, -19618874, 8849780, 25898652, -27290222, 25501906, 8519605, -3684545, 9618042, -1813550, --6237903, 4041027, -9553081, 4601521, -19424526, 16872242, 17725866, 3393024, 474594, -6197101, -9024800, 3087545, 3531000, 8588861, 17034378, -21556440, -7330436, -20034412, -15219217, 1281511, -631897, 16689706, -22185116, -17183090, -21386790, -13724568, -5844914, 31291522, -44745508, 37023156, --22278532, 22789634, 11832098, 14405320, 8254391, -28432684, 31008054, -4572530, -11275900, -10168335, --12492449, 9597104, -6632503, 13629005, 7927436, -1733556, -3411278, -23803246, 13706851, 5689758, --6276021, 5348845, 12427488, -3548717, 6987375, -12085501, 14164265, -5304285, 1686848, 5847598, -5937793, -6349036, 21917218, -839129, -20886962, -1357747, 9420474, 4735739, -16012712, 7727720, -18328236, -3461744, -9120363, -8753143, -1360431, 5095442, -2385854, 21705690, -14743012, -5581847, --5332202, -10895795, -1071594, -3321620, 7806103, 5759015, -9117679, -1347009, 8194798, -8766565, --4658966, -2614025, 13269301, -8290898, 5607080, 9021579, -20939040, -8368207, 6513855, -21678848, -32749662, 8805757, 10322954, 15190762, -9772124, -241592, -2992519, -14925548, 2856690, 4949413, -11866995, -2363306, -5197448, 7343321, -7735236, -3102040, 7059316, 101469, -1912334, 6106907, -1715839, -3867081, -317291, -4272419, 9460202, -9062381, 14428943, 669478, 3069828, -6054830, --682900, -2189897, -4691715, -2375654, 3332895, 1776506, 4061965, -64961, -3561602, -2281165, --11410117, 11416560, -9184788, 5181341, -2273112, 6673843, -3842922, -10511932, 588947, 5484673, --8744017, 12977781, -10396505, 5687611, -4029216, 51434916, 6777459, -17522930, -13492640, -10230075, --926102, -1729261, 1183800, -1476395, -1939715, -29199336, 682900, -5874979, -6678674, 3620121, --11392401, -5267241, 5346161, -8052527, 2310693, 8959302, -12179454, 7621420, -4485020, -6564321, --999654, -6565932, 3067144, -6100464, -3174518, -7174206, -1351304, -186294, -133144, -4341675, --4395362, 1260573, 2353105, -5175973, 6924024, -8570070, -724239, -3467649, -1053878, -1675037, --6710350, 9154186, 5692443, -9343164, 11295764, -1225139, 2429878, -5170604, 10838350, -10885058, -837519, 849867, 2882997, -1864016, -2774012, 7991861, -5328981, 1122597, 452582, -1720134, -2604898, -3588982, -463856, 4430259, -2243047, -2135673, 5130876, -2066953, -2207076, -4820564, -2488934, 2246805, -10494753, 12514461, -7086159, 2771328, 886911, 95026, -4055523, 1662689, -5197984, -3920768, -1930588, 2695629, -3855270, -328028, 3187940, -1387811, 1278290, 609349, --2856153, 416612, 383863, 2494839, -4648765, 297427, -515396, -1925219, 1956895, -2382096, -1129576, -1576790, -4070555, 2189897, -3528853, -2128156, 1315871, -2310693, 822486, 1955284, -229781, -3185255, 3277597, -731218, -2018635, 2614561, -25311852, -40808096, 45587856, 153940752, -15510738, 35470524, -83812528, -127807488, -32293322, -66685808, 51938504, 107368816, 56363928, 35893580, --8152922, -41436772, -41041632, -30617212, -28708636, 10369125, 18151606, 10737955, 19548006, 2770254, -1436667, 7938174, 2092723, 8989903, 6896107, -5080410, -19727322, -14324790, -17403208, -23146116, --12449500, 13309567, 16827144, 31665720, 44355200, 16292422, 6305012, -14610942, -35401268, -33961916, --23968064, -16374026, 3258270, 13308493, 18749142, 20313584, 16850230, 11624329, 1200980, -1168768, --11339251, -7574175, -5077188, -5436355, -2315524, -6166500, -1953673, -7343857, -7470022, 2888366, --719944, 9913321, 15884937, 9688372, 23689428, 21388400, -10335302, -20747376, -21086678, -31029528, --8912594, -7337415, -1806571, 19376208, 16993574, -2848100, 14761266, 18743238, 6174016, 13148506, --1291175, -14810658, -10987063, -25549686, -16323023, -5927055, -1723356, -1733556, 4519380, 12313134, -19130322, 24458228, 20431696, 7028714, -11336566, -18204218, -17701170, -19444928, -8920110, -4823249, --2145336, 4500052, 9558450, 7844758, 13418015, 7553774, 8776229, 8237748, -40802, -6533182, --8851391, -10786810, -10867341, -9427453, -5194226, -5129265, 2955474, 5675263, 11014981, 16288663, -15468862, 6079526, 993211, -8732205, -10902238, -12576201, -12862353, -3593277, -667867, -2312840, -2954938, 10053982, 12829604, 6526740, 1337346, -562104, 106300, -2474975, -3004867, -4756677, --3081639, -3589519, -2698850, -1492501, 6979, 150861, 2847563, 5741298, 5909338, 3084860, -1373316, -1497870, -2365990, -3412889, -2589329, -2882460, -1435593, -1340030, -52076, 670552, -2371896, 2166811, 2591476, 874026, 609349, -394063, -562641, -1258962, -447213, -590558, -93416, -536871, -700617, -1874216, -93952, 217433, 1098438, 847182, 1804960, 550293, -418222, -1115081, -427349, 282931, 1009317, -414464, -926639, -1939715, -679679, -47245, -1105417, 333934, 458488, -354335, 437550, 180926, 964757, 359167, 608275, -461172, --30602, -949188, -596464, -1083942, -207769, -437013, 479426, 171262, 1191317, 792958, -948114, -140660, 126165, -692027, -127775, -828392, -420370, -726923, 266288, -111669, -583042, 45634, 489089, -213675, 448824, -116501, 422517, -300111, 140123, -502511, -136365, -368830, 285078, -274878, 301185, -293132, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +6285148, 561030, 4196183, -944356, -649077, -2254858, 4476430, 2872796, -2681670, -3471407, +2238752, -867583, -5404680, -6200322, 1443646, 332323, -2133525, -2099702, -4221953, 2697240, +-4960687, 1282585, -518617, 1138166, 372588, 1077500, -2247342, -301185, 841277, 1437740, +-539018, 1755031, 1231582, -2165201, 1614908, -1301912, -4234838, 5987722, -1179505, 293132, +1387811, -726923, 3257196, 4228396, -936303, 1600412, 3128347, 287226, -3390877, -2547989, +807991, 2022393, -1052804, 1115618, 3846680, -3395172, -3113851, 3246995, 579821, -1257352, +-2115808, -68719, 701690, 2469069, -3951370, 1947768, 962073, -3033321, -3339874, 2842195, +-1833414, -4026532, -1765232, -358630, 6077916, 7081864, -644245, 1193464, -913754, 1107028, +-1198833, 1897302, 1105954, -1143535, -425739, -1215476, 570157, -1627793, 1522566, 1410360, +282394, -1909650, 196495, -69256, 809064, -477278, 1273995, -655519, 200253, 106837, +778463, -157840, 249108, 260382, 805306, -17180, -7763154, -3356517, -5355824, 3508988, +-2597918, -3639448, -2464238, -3263638, -648540, 1201517, 5872831, 1012002, -3138547, 4955319, +192737, 5108327, -4912369, 7912404, 3672197, 8583492, -1541893, -2925947, -591632, -4728222, +-403190, -340376, -1713155, 1602023, 157303, -3755412, -911607, -17180, 1160178, 3721589, +857920, -5613523, -4674535, -1776506, 3149285, 205622, 152471, -2847563, 4668630, -131533, +339302, -2018635, 592706, -1221381, 2448668, -798864, 7784092, 61740, -1028645, 2946885, +-1970853, -3508452, -1454383, 2633889, 4695473, 775242, 2873870, 703838, 481036, -2478196, +-2421288, -3966939, -182536, -4112431, 1014686, 3340948, 3564823, 2505040, -1278290, -1825361, +3199214, -2280628, -957241, 1997697, -1838246, -326418, -959925, 2068027, 3679176, 1898376, +1073205, -936840, -422517, 661425, -376347, 2465848, 410706, -1208496, -723165, -556198, +-175557, 343597, 297963, 37581, -392453, 1142998, 717796, 54761, 433792, -893890, +-578210, -713501, -842350, -296353, -943282, -915902, -208843, 1173600, 5421323, 5880347, +3093987, 18254, 4782446, -2571612, -4079682, 3986267, 4121558, 5254356, 7703561, 762357, +-4914517, 2887829, -4686346, -271120, 1564442, 1170916, 8582955, 729608, -6913287, -264141, +1233193, 2962454, -499290, -2286533, -7609609, -1431835, 6459631, 2298881, 4249334, 5042829, +4137127, 1221918, -717260, 4491462, -5649493, -102005, -3839701, 10385768, -554588, 360777, +4596152, -3752728, -595927, 1685775, -572304, 6225018, -943282, 1931662, 5894306, -1071594, +1853815, 562641, -277025, 15569, -765578, -1627793, 2553895, 3490735, -817118, 3475166, +1250372, 6804302, 7702487, -335544, 2068027, 1346472, -3872450, 3886409, -938450, -3164854, +1369558, 3829500, 1074816, -905701, 6830609, -894427, 1866163, 2120103, 1025423, -3387119, +-184147, -631897, 566936, -1752884, -359704, 281857, 742493, 805306, 1273458, -366683, +632971, -1622961, -1132798, -2030446, 1624571, 606664, -292058, 714038, -267899, -1652489, +1109712, 242666, 810675, -452582, -580894, 379568, 2050847, -2025614, 1176821, 8617852, +8350490, -3259880, -4856535, -4156455, -2934537, 2204929, -9232032, -843424, 1220308, -4342749, +-8185671, 7949448, -1760937, -1932198, 1209033, 3695819, 3185792, -3971771, -1660005, -104153, +-497679, 1959579, 2720862, -1468342, 3359738, -2497524, 5182415, -562641, 153008, -2616709, +2709051, 1089311, -858457, -2605972, 1209570, -1450088, -2401424, -1896228, 408022, 1796907, +-5018133, 496606, -9416179, -5338108, 3306051, -1337882, 1058710, 2161442, 6101538, -1912334, +-3162707, -143881, 136902, 2663954, 2434710, -2812667, -1326608, 6876780, 201863, 1110249, +521302, 3099893, -5733245, 263604, 2816962, 5359583, 1050656, 2343979, 7982734, -1908039, +-817118, -4283693, -2684, 1393180, 2755222, 60666, -1795296, 2524904, -272730, 4532264, +-18254, -113280, 486942, -5586679, -2973728, -3282429, 3086471, -490163, -972273, -4295, +353798, -177704, 1591285, -478352, -1002875, -1198833, -673236, -1716913, -1202591, 1350230, +18790, -450435, -951872, 435939, 284542, 139050, -845035, 1476932, 559956, 935229, +-279173, -75699, -1082332, -1103270, 673773, -526134, 933082, 1314797, -51003, -5516349, +-8425115, 3569655, -2695092, 92879, -4296578, 3330747, -9736691, -8129300, -9176734, -3184718, +-1876364, -6530498, 3390340, 8790724, -6428493, 1304596, 10487773, -2467459, -2743947, -4844723, +938450, -88584, 4701379, 1445793, 3406983, 2261300, -3287798, -6665789, -3047279, 3884798, +-2142652, -4100083, 1118302, 1609002, 1397475, 779000, 9148280, -4332012, 5026186, -2417530, +2573222, -2694018, 7629473, -5664525, 3173981, -521302, -4373888, 4110821, -1559610, -1540820, +4591320, 2328946, -284542, -2042794, 4183298, 1952063, -4096325, -5091147, 3547106, 5504538, +3235721, 67109, -2319819, 220654, 3652870, -1592896, 4393752, -1072668, -8633421, 212064, +-3733400, 12377022, 4447976, -7144141, -3883724, -1461900, -3101503, 3143916, 3215857, 2292976, +-1420560, 2662343, 2301566, 705985, -418222, -3721589, 828929, 1190243, -938450, 774168, +1378685, -556735, -47782, 736050, -125091, -1154273, -799938, 18254, 1063541, -1059783, +1013075, 995896, -1259499, -1817308, -2092186, 537, 1420560, -670015, 1275068, -1017907, +22549, 812286, -512175, -2043868, 427886, 3212099, -7188165, -8878234, 7659538, -1634235, +-7150584, 603980, -1799591, 7390565, 3732327, -1872069, 1433445, -356482, -1041530, -1304060, +8646306, 1699733, 526670, -5838471, -2611340, -1348083, 3077344, 3795677, 11623255, 315680, +451508, -326954, 858993, -5051956, 302795, 2128156, -6242198, -4431333, -4015795, -488553, +8520141, -6839199, 1246614, 3885872, 1748052, -3181497, 3593814, -8542690, 7088307, -1486596, +78920, 3837553, -4257387, -5049808, -7798587, 1700807, -2498597, 7493108, 2673080, 214748, +1501628, 2301029, 5934034, -2558190, -1208496, 6143951, -1176284, -3457449, -47782, 6148246, +6281390, 5684389, 3142842, -3737159, 3712999, 5144834, -5961415, 7763154, -4646618, -4394289, +7094749, 761820, 10200547, -105764, -5595806, 2520609, -2446521, 6725382, 3282966, 1867774, +536871, 2318746, -1097901, 4233764, 1553168, 1693291, 1357747, 2486249, -111669, -191663, +2015950, -57445, 1504312, -742493, 2423972, 4790499, -2692945, -1263794, 929860, 610959, +395137, 1226750, -151934, 394600, 1071594, 2352568, 260919, 4409858, 1138703, 521839, +-1886028, 508417, 1546725, -1969779, 522912, 870805, -26307, 569620, -39728, -15794742, +-10497437, 2861522, 5035313, 10889890, -6662031, 5867462, 1025960, 6175626, -370978, -2809446, +-3782256, 3830574, 11167989, 995896, -1044214, -10666551, -9022116, 101469, -6648610, -3832722, +321586, 1391569, -6813966, -1980517, 1576253, 4003983, 2052994, -4329864, -75699, 5076115, +4041564, 887985, -4204236, 799938, -2596845, 1254131, 1350767, 2343442, -3252901, 4032974, +9715753, -964757, -792421, 1926293, -5515275, 2601140, 7811472, -7736310, -9220221, -4711579, +694174, -11832098, 231391, 362388, 1591822, 137439, -236760, -5608154, -3096672, -3636227, +-561567, 8085276, 11846057, 355409, 721555, 5827197, -2497524, -980326, 2633352, 13413183, +1630477, 4829691, 9345849, 1731409, -6169721, 2544231, 2748779, -2809446, 2830384, 2428804, +-693100, -2908230, 1308891, 861678, -696858, -4976794, 2130841, 4571993, 1644973, 3330747, +1793686, 4017942, -935229, -1511292, 3634079, 3069291, -1019518, -210990, -1172526, 2639258, +2804077, -2324114, 2784213, 757525, 284542, 705448, 1480153, 2128156, 209917, 1856500, +-1336809, -693637, -79994, -353798, 694174, -1267552, 117038, -397284, 476205, -1705102, +-1554241, 8089034, 5182952, -7596187, -259309, 16112570, 14360223, 2966212, 8689256, 10610717, +2762201, -204011, 7072738, -3214783, 150861, -6401649, 5268315, -483184, 332323, 2291902, +2840047, 8747775, -7342784, -6817724, 6800007, 1324997, 3145527, -5333813, 1027034, -1901060, +3533684, -3758, 4930086, 4716411, -4785131, 3985193, 3446711, -5643587, 14409078, 2450279, +2860985, -11180874, -3500398, -951872, 9362492, 8606041, -817654, -9606231, 6300717, -8360691, +-2516851, 7214472, -149787, -5946919, 7162932, 8868034, -2212982, 2950643, -3532074, -12573517, +133144, 7964480, -3629784, -4340602, 5338645, -6062883, -9056475, 2205466, 6241125, 11203422, +5965173, -8500814, 3594888, -9976135, -11625940, 10722923, 5131949, 3884798, -7200513, -7900593, +-1116692, 8067023, 2774012, 11551315, 5215164, 2867965, -12279311, 1931125, -3373697, 404801, +-2815888, 2503429, 842887, 3043521, 5282810, 2655364, 533650, 2232309, -1984275, -1085553, +-2022393, -100932, -1887638, -656593, 847182, 3818226, 756451, -1697586, -619549, 1167694, +252866, -425739, -3889630, 138513, -1948305, 672162, -2739652, -3191698, 2155537, 2368675, +3970161, -3899830, 139586, 1925219, 16725140, 10822244, -7333120, -1937567, -336081, 2988760, +2306398, -1009854, -6622840, 1638530, -4561256, 7028714, 153545, 2736431, -2348810, -994285, +-6914361, -3601867, 14358613, 4810900, -8866960, 4204236, -8665097, -6031745, -13515188, 5881958, +150861, 244276, 3109556, -339302, -6172405, 10167261, 5720360, -2207613, -10293426, 10254771, +-7093139, 2725157, -346819, 3375308, 1935420, 6522982, 7411503, -1728188, 4064650, 11900281, +1436667, -3708168, -3489124, -2084670, 1755031, 7947837, -2271501, 3240016, 530965, -7249905, +183610, -1773822, 3447785, -10913512, -281320, -18203682, -11143293, -10151692, -2673080, -10032507, +6651294, -2499671, -8417062, -2226404, -1039382, -6724308, -3031710, -230318, 567473, -4031364, +-8845485, -8741869, 359167, -1893544, 2022930, 4912369, -898185, 2459943, 1104880, -34897, +-264141, -4760971, -326418, -93952, -3950296, -310848, 3479997, 6935836, -1327145, -3311957, +2467459, -4289062, 3498251, -3580392, -1471026, 694174, -2745558, -3217468, -159451, -2007897, +360240, -747324, -3383361, 1597728, -277025, 4046396, 2575907, -2850248, 2291902, -1591285, +2118493, -1305670, 1388348, 1424855, 945430, 85899, 1459752, -1883880, -1174674, -2093797, +-4394289, 563178, 1367947, -436476, 749472, -3314641, -11494406, -14307073, -6784975, -9501541, +24708410, -11928198, 5608691, -11260331, -3236258, 1256815, -1818919, -16809428, -339302, -7953206, +614180, 19937776, -6343130, 8404714, 10954314, 4019553, 4464619, 12018929, 3575560, -4584878, +3416647, 4755066, 5063767, 2210298, -2463701, 13979582, 551903, -1047972, -2309082, 3842385, +-1166084, -4770635, 4729833, -1720671, 3399467, -13401909, 585726, -2531883, 12214887, -4737886, +3957812, 18351322, -1567663, 456877, -4436701, -7480223, -408559, -1164473, -7704635, 9785546, +-2066416, 7121056, 773631, 6730214, -3835943, -641024, 14636175, 7226283, -11322608, -5862094, +3117610, 3591667, 1762010, 3193845, -3291556, 4214437, 5382131, 12217571, -15567646, 1018444, +-6645925, 3259880, -264141, 1865090, 5756867, 8420283, -5550709, 5973763, -4014721, -2653216, +-2236067, -1994476, 4713727, -10522670, -2071785, -4810900, 6096169, 5006322, 2109903, 2621541, +-3544422, 4152697, 1873680, 3015067, -407485, 2410551, -3143916, -1678259, -3944928, -240518, +-640487, -3456375, -56908, -273267, -952409, 47245, 4202089, 2676838, -2324114, -3701725, +1976222, 1537061, 4820027, -3626026, 286152, -1245004, 2160906, 2559264, -1269163, -1939715, +-3917010, -8115878, -7351911, -7850127, 8508867, -16513076, -4915590, -10331007, 5126044, 17203492, +-9376987, 547071, 454730, -3320010, 6585259, -5483063, 2627446, -1673427, -7100118, 15350750, +729608, -4951024, 185757, -2197413, -6808597, 5385352, -5225365, 5057861, -9729712, -4462471, +6499360, 4844186, -16233366, -2863670, -13830332, 4155381, -2352032, -13217762, 16125992, -4476430, +-361851, -12224551, -13503914, 830539, -12181064, -1537061, -10531797, -8900783, 10536092, 1219234, +-13686450, 4524748, -12256763, 10929081, 3877282, -5223217, 360240, 3548180, 11371463, -8792335, +-12570296, 12708808, -8900246, -4991289, 6572911, 9605694, -17793512, -8673686, 10018011, 7544110, +3844533, -882616, 1181116, -12691091, 4306242, 4291746, 6956237, -2199560, -13548474, -9728638, +4696010, -11586211, -10256382, 4330401, -750546, 198105, 4167729, 9858024, -66035, -376347, +9064528, 884763, -1572495, 1600412, -1332514, -1828582, 1883880, -2374580, -1786170, -4587562, +-4509179, -3124052, 720481, -2596845, -54761, 1893544, 1394254, -233539, -151934, 2021856, +-2413235, -3642669, 1003412, -102542, 3400004, -3358128, -1065689, -3810710, 4337917, 4700842, +907312, -223875, -3000572, -1166621, -4177930, 354335, 549219, -2279017, 599148, 926639, +884763, -1012002, 8381629, -12964359, -21272436, -17088064, 7670812, -20440286, -1042603, 15564961, +-1425929, 1154809, 11089069, -7355669, -6351720, 24713242, -9822590, 5811091, 9338870, -1705102, +-22418656, -1824287, 2309619, -5588290, -3149822, -5170067, 20822002, 235149, 187368, -993211, +-15083388, 2785823, -8705362, -4316979, 887448, 2546916, 4407174, 12152073, 2644089, -3092913, +23800024, 2540473, -5945309, -21777632, -3229816, 16025597, -3518652, -9978820, -13466870, -11793443, +-10140418, -6324876, 16917340, 6621766, 929860, 9453223, 14127221, 7927973, -3132105, -2462627, +14604499, -2869038, -4536559, 4277788, 11158325, 1617592, -11555073, 2667712, -1204738, -17187386, +-1342714, 13712220, -6824166, -7893076, -1967632, 18427020, -14693620, -2921115, -8216810, 8425115, +4838818, 3911642, 5847598, -2399276, -3197603, 6248104, 4936528, 3455838, -1044751, 781684, +3877282, -10805064, -2037962, 1428614, -5638755, 154619, 5876589, -588947, 1054415, -2316598, +-711354, 3249680, 4140349, 6278169, 3485366, -1043677, 2193118, -3579318, -4608500, 1315871, +-932008, -3713536, 4101694, 2205466, 3093987, 668941, 1480153, 3220152, 1744831, -927713, +-2336999, -604517, 1268089, 6979, 1285806, 268972, 1603097, 992137, 2768107, 354335, +-2732673, 5949604, 4836670, -4594005, -1590749, -2208150, -1572495, 2280091, -2792803, 1640141, +17357574, 1746441, -15511274, -575526, 4643934, -564788, -7078643, 6723235, -5242008, 13795435, +-10634876, 9475235, 20720532, -5624797, -5542656, -4903779, -4335233, 18494666, -13743358, -15100031, +-11530913, 4177393, -6030134, -9732396, -4495757, 6623377, -9337259, 5117991, 1185948, 7231651, +10748156, 1292785, -1416802, -2107218, 10588705, -2778307, 3712462, -13071196, -162672, -4684199, +10315438, -13893145, 11318849, -4832375, -7191386, 11397769, 19779398, -11203422, 5585068, -2517925, +3960497, -29841970, -23681912, -14385993, 1996086, -9150965, 3852586, 907312, -11141145, -8806294, +882616, 23673322, 5515275, -14865419, -22204980, -11744051, -8254927, 14475114, -10176925, -14485314, +3355980, 3084860, -13422847, -917512, -317828, -6691559, -1618666, -433792, -658204, 6437619, +1503239, -7747048, -6905234, -3824132, -9910637, -5426155, 1519345, 10947872, 1745367, 1978369, +-3307662, -9149891, -1515050, 7326678, -467078, -4307852, 6704981, -10425496, -5195837, 1458141, +1516660, -267362, 1023276, 630823, -3618510, -7333120, -2732136, 5420249, -3344169, -2676302, +-3030636, -6559489, -7286412, 2570538, -2711735, -1666447, -6881075, 1557999, 4265977, 5238250, +-386010, -3321084, -3914326, 3743064, 1171452, 3374234, 29998736, 19393924, -4978404, 1845762, +19464254, -7742216, 812286, 8180839, 21060910, 12154757, -3492882, -4767414, -7078643, 1778117, +-3831111, 225486, 680215, 21925272, 36575404, -2225330, 25277494, 15781857, 3401077, 3855807, +-17759690, -17847736, -1870458, 4628364, -1130650, 4282083, -6534256, -13375602, -22293564, -2001455, +-14290430, -12284143, -7938710, -12710956, -8931384, -560493, 20996484, -722628, -15666967, -1388885, +4656819, 15418933, -4704063, -3979287, -9292162, 6973417, -28214178, -25538412, -12110734, -12760348, +-13472776, -8309688, 9200357, -11505681, -15740518, -13406204, -23620172, 12161737, 6685117, -21161304, +10994579, 21325050, 42012296, 23067732, -105764, 7623567, -23929948, -9870372, 13124346, 10946798, +-6014565, -16305306, 2277943, 3413425, 14972256, -1887638, -15053860, -2660195, 24415816, 15498389, +17722108, 13975824, 24627880, 23050016, 7074348, 6278706, -5228049, -9661529, -2535105, -820876, +-8119099, -1611, -9408126, -7107634, 11274289, 4969814, -2856153, -9608379, -3511136, -1111860, +15032, -10693395, 10877005, 186831, -8813273, 5433671, -5366562, -4596152, -1201517, 3411815, +14946486, 7294465, 17849884, 144418, -3305514, 2090039, 6922951, 4571993, -2093797, 9405442, +633508, -2929168, 1566589, 7805030, -3616363, -3175055, 3064459, -563178, 2764348, -30735322, +-3057480, 49740016, -3751117, 1918240, 12272869, -17998060, 10052908, 35306780, 32371168, -32686312, +-31549756, 107911, -34215320, -12798466, -155156, 4055523, 12341052, 18851686, 16429324, 29336774, +6803765, 11626476, 11545946, -4818417, -2176475, 3303904, 3767223, 8753680, -15757161, 35243964, +14985141, 16522739, -3136937, 35793184, 4348655, 21628918, 8837432, 6858526, -8468602, -5319854, +18119930, 7128035, 8391829, -19031536, -10312216, -15867757, -9401147, -11502459, -108448, -23062364, +-25253870, -1330903, -9754944, -47398724, -35431868, -31897648, 9099425, 34802656, 44843216, -24641838, +30909270, 48266304, 8181913, 4218195, -3088618, 33266670, 2507187, 30113626, 12869333, 14187351, +-19976966, -65906272, -52331492, -11652783, -1785096, 1568737, 2322504, 24588688, 23085450, 20265804, +-12514998, 1778117, -6531035, -33894808, 3447248, 2880313, 17131014, 2822331, 25192668, 22925998, +5647345, 19965692, -8369818, 13576928, -11884175, -13212930, -4929549, 5486284, 21898964, -4756140, +-6155762, 3398393, -10821707, -5132486, 11091216, -2979097, 7667591, -13623636, 18796388, 5859409, +200253, -1125818, 14459544, -3385508, 1017370, 2527588, -282394, 9990094, -7092602, -3459059, +-96100, 9608916, -14055280, 2044404, 5017059, -6694244, 1053341, 2728378, 1746978, -3176128, +23669564, -4863514, -43943420, -3386582, 68867120, 13110925, -13361106, 18311056, -6111202, 12073690, +-5927055, -7070053, -23191750, -8140574, -2858838, -3377455, -11296301, 16825534, -15173046, -15465103, +-1459215, 2981244, 14150307, 6965900, 3632469, 6632503, -6280316, 569620, 21314312, -10627897, +-26176216, -4728759, 1917703, -8279087, 17686676, -8986145, -6420976, 15639050, 3929358, 11918534, +-27025544, -29609504, 9659381, -5355288, -10554882, -12426414, -16206522, -32648194, -233002, -2455648, +10729365, -20742544, -44506060, 33549064, 8797167, 31562640, 3156801, -9590125, -9671729, 8549669, +-16941498, 26248692, 4833449, 31415538, 21311090, 46426448, -4844723, -43704512, -34622268, -19069118, +25105694, 25976500, -19705846, 20718386, 39908300, -23250268, -3954591, 43672300, 6419903, 33647312, +-5236639, -16536698, -45283452, -17054778, 4764193, 29130616, 24717000, -14354854, 12256226, 12244415, +23420994, 8611409, -23991688, -27582816, -11370926, 19772956, 40770512, -623844, -4052839, 21801254, +10923712, 2357937, -3908957, -8592082, -11483132, -8560944, 6638409, 4707821, 12643310, -5055177, +-1900523, 1643899, 7483981, 10555956, -13420699, 629750, 14327474, -1273995, -4705674, -15947750, +11449846, 367220, -7451232, -4628364, 16007343, -387621, -10980621, -5261335, 8462696, 643708, +-36536748, 37886980, 51390356, 8968429, 2338610, 11438572, -7833484, 22450330, 12558484, 23466090, +-4729833, -24713778, 55013164, 357019, -20640540, 2588792, 37217504, 17076254, 7330973, -23504208, +2598455, -12553116, -9162776, 3752728, -17474074, 1551557, 4773320, 21211232, -29949344, -5028333, +-3532611, 17935784, -6719477, -10997264, -10477573, -48318, 11458436, -23240604, 1784022, 6251325, +-47659640, 6687801, -12851616, -33543158, 22218940, -24758876, -43531104, 57724896, -352724, 3457449, +-4446902, -15897285, 34862788, -24463596, -2209761, 5309117, -15766288, -1162862, 44038448, 22854594, +-38643968, -41789496, 41472204, -19595252, 24211804, 39855684, -35520992, -61179660, -42343544, 70968968, +-4089346, -55370180, 50883016, -36863168, -70312912, -955093, 60852172, -2467996, -72969880, -885837, +-24482924, 831076, 90236192, -13587666, -66230544, 9798431, 35434016, 923418, 41419592, 2581812, +942745, -12884902, 1806571, 9634149, 33467458, -6779069, -8865349, 33203856, -4282620, 8074002, +23255638, -3753802, -33530272, 22181896, 16064251, 25949656, -7843147, -377420, 9292162, -7180649, +-24636470, -10686416, 10372346, 1017370, -4728222, 32904818, -828929, -36074504, 8642548, 29953102, +17371532, -12370043, 1791001, -14208289, -7912941, 36298380, 30371324, -7572028, -34454764, -10790568, +14383845, 11898133, 9604621, -6208375, -23099408, -865973, -24871082, 37891276, -7846369, 11621108, +23794656, 17420388, 17964774, 44548476, 18911278, -10712722, 6730751, 11111617, 14197551, -15897285, +42395084, 40499932, 5330592, 14137422, -10142565, 150861, -43841952, 20200842, -23276038, 15704548, +-2044941, -15827491, 23347980, -9208410, -17883170, 9648644, -25143276, 16718697, 455803, -4531191, +6628745, 10526965, 15209553, 16031502, 14818711, 45392436, -4669167, 5140002, 14055817, 30660160, +-3213173, 8316668, -99858, 24036248, 28048284, -8975945, 6601365, -1019518, -4801774, -51383916, +3950833, 22255446, -12520367, -12380243, 11268920, -21254182, -32172526, 3117610, 18009334, 38408280, +-49146236, 19025632, -2651606, -1094680, 83752, 19444390, 40939628, 1018444, -30094298, 10233833, +33207076, -17757006, -26481158, 2855080, 14508400, -13823352, 26284662, -4821638, 20182052, 2085744, +-20331838, 25210384, 19912542, 3731790, 15692200, -8564702, 9768903, -4499515, 5128191, 8486855, +23964306, -4755066, -29228864, -3400004, 33697240, 2973191, -4365835, 30380452, 6200859, 233002, +7157563, 21205864, 30906584, -19491636, 7578470, 4633196, -1529008, 15614354, -4478041, -22141094, +7366943, 21922050, -9244380, 6040872, 7282117, -6551436, 8335995, -13902272, 10187662, 9636296, +-12530030, -26551488, 11501922, 15827491, -7144141, -9378598, 14322105, -610959, -8735427, -9632001, +10185515, 5950141, 23521926, -44414256, -34582004, -641024, -53369264, -18355080, -19752554, 41069016, +-1199907, -15250892, 18901078, -9744207, 10467909, 2632815, -20392504, 24274082, -55030880, -5287642, +3317325, -13827647, 10116259, 2377801, -10763725, -2041720, 1585380, 13771276, 799401, -16222091, +-53414896, -39026756, -29697014, -14851997, 33047626, -6811282, 1202591, -53562000, 3960497, -3840238, +-7286412, 1564979, -51726976, 27548994, -25139518, 12603582, -10321880, 35059820, -19270444, -34222300, +-16450798, -436476, 25467546, 46392628, 48831632, -60488172, -44716516, -30959734, 20734492, 49416284, +59925532, -10624675, -15136002, -52979496, -19665044, 46845208, 28648506, -738734, -67109, -1298154, +-44707924, 29676614, -9048422, 28633474, 69687992, -78142632, 94392640, 26504244, -51270100, 14124000, +-102700720, -100463040, 73913704, 31380104, 7200513, 21873732, -38075420, -18445810, 68868728, -2833068, +46279884, -4763119, -37398964, -12380243, 40865004, -13849122, -1014686, 13079786, -3406983, -24108726, +13191455, -19618874, 8849780, 25898652, -27290222, 25501906, 8519605, -3684545, 9618042, -1813550, +-6237903, 4041027, -9553081, 4601521, -19424526, 16872242, 17725866, 3393024, 474594, -6197101, +9024800, 3087545, 3531000, 8588861, 17034378, -21556440, -7330436, -20034412, -15219217, 1281511, +631897, 16689706, -22185116, -17183090, -21386790, -13724568, -5844914, 31291522, -44745508, 37023156, +-22278532, 22789634, 11832098, 14405320, 8254391, -28432684, 31008054, -4572530, -11275900, -10168335, +-12492449, 9597104, -6632503, 13629005, 7927436, -1733556, -3411278, -23803246, 13706851, 5689758, +-6276021, 5348845, 12427488, -3548717, 6987375, -12085501, 14164265, -5304285, 1686848, 5847598, +5937793, -6349036, 21917218, -839129, -20886962, -1357747, 9420474, 4735739, -16012712, 7727720, +18328236, -3461744, -9120363, -8753143, -1360431, 5095442, -2385854, 21705690, -14743012, -5581847, +-5332202, -10895795, -1071594, -3321620, 7806103, 5759015, -9117679, -1347009, 8194798, -8766565, +-4658966, -2614025, 13269301, -8290898, 5607080, 9021579, -20939040, -8368207, 6513855, -21678848, +32749662, 8805757, 10322954, 15190762, -9772124, -241592, -2992519, -14925548, 2856690, 4949413, +11866995, -2363306, -5197448, 7343321, -7735236, -3102040, 7059316, 101469, -1912334, 6106907, +1715839, -3867081, -317291, -4272419, 9460202, -9062381, 14428943, 669478, 3069828, -6054830, +-682900, -2189897, -4691715, -2375654, 3332895, 1776506, 4061965, -64961, -3561602, -2281165, +-11410117, 11416560, -9184788, 5181341, -2273112, 6673843, -3842922, -10511932, 588947, 5484673, +-8744017, 12977781, -10396505, 5687611, -4029216, 51434916, 6777459, -17522930, -13492640, -10230075, +-926102, -1729261, 1183800, -1476395, -1939715, -29199336, 682900, -5874979, -6678674, 3620121, +-11392401, -5267241, 5346161, -8052527, 2310693, 8959302, -12179454, 7621420, -4485020, -6564321, +-999654, -6565932, 3067144, -6100464, -3174518, -7174206, -1351304, -186294, -133144, -4341675, +-4395362, 1260573, 2353105, -5175973, 6924024, -8570070, -724239, -3467649, -1053878, -1675037, +-6710350, 9154186, 5692443, -9343164, 11295764, -1225139, 2429878, -5170604, 10838350, -10885058, +837519, 849867, 2882997, -1864016, -2774012, 7991861, -5328981, 1122597, 452582, -1720134, +2604898, -3588982, -463856, 4430259, -2243047, -2135673, 5130876, -2066953, -2207076, -4820564, +2488934, 2246805, -10494753, 12514461, -7086159, 2771328, 886911, 95026, -4055523, 1662689, +5197984, -3920768, -1930588, 2695629, -3855270, -328028, 3187940, -1387811, 1278290, 609349, +-2856153, 416612, 383863, 2494839, -4648765, 297427, -515396, -1925219, 1956895, -2382096, +1129576, -1576790, -4070555, 2189897, -3528853, -2128156, 1315871, -2310693, 822486, 1955284, +229781, -3185255, 3277597, -731218, -2018635, 2614561, -25311852, -40808096, 45587856, 153940752, +15510738, 35470524, -83812528, -127807488, -32293322, -66685808, 51938504, 107368816, 56363928, 35893580, +-8152922, -41436772, -41041632, -30617212, -28708636, 10369125, 18151606, 10737955, 19548006, 2770254, +1436667, 7938174, 2092723, 8989903, 6896107, -5080410, -19727322, -14324790, -17403208, -23146116, +-12449500, 13309567, 16827144, 31665720, 44355200, 16292422, 6305012, -14610942, -35401268, -33961916, +-23968064, -16374026, 3258270, 13308493, 18749142, 20313584, 16850230, 11624329, 1200980, -1168768, +-11339251, -7574175, -5077188, -5436355, -2315524, -6166500, -1953673, -7343857, -7470022, 2888366, +-719944, 9913321, 15884937, 9688372, 23689428, 21388400, -10335302, -20747376, -21086678, -31029528, +-8912594, -7337415, -1806571, 19376208, 16993574, -2848100, 14761266, 18743238, 6174016, 13148506, +-1291175, -14810658, -10987063, -25549686, -16323023, -5927055, -1723356, -1733556, 4519380, 12313134, +19130322, 24458228, 20431696, 7028714, -11336566, -18204218, -17701170, -19444928, -8920110, -4823249, +-2145336, 4500052, 9558450, 7844758, 13418015, 7553774, 8776229, 8237748, -40802, -6533182, +-8851391, -10786810, -10867341, -9427453, -5194226, -5129265, 2955474, 5675263, 11014981, 16288663, +15468862, 6079526, 993211, -8732205, -10902238, -12576201, -12862353, -3593277, -667867, -2312840, +2954938, 10053982, 12829604, 6526740, 1337346, -562104, 106300, -2474975, -3004867, -4756677, +-3081639, -3589519, -2698850, -1492501, 6979, 150861, 2847563, 5741298, 5909338, 3084860, +1373316, -1497870, -2365990, -3412889, -2589329, -2882460, -1435593, -1340030, -52076, 670552, +2371896, 2166811, 2591476, 874026, 609349, -394063, -562641, -1258962, -447213, -590558, +93416, -536871, -700617, -1874216, -93952, 217433, 1098438, 847182, 1804960, 550293, +418222, -1115081, -427349, 282931, 1009317, -414464, -926639, -1939715, -679679, -47245, +1105417, 333934, 458488, -354335, 437550, 180926, 964757, 359167, 608275, -461172, +-30602, -949188, -596464, -1083942, -207769, -437013, 479426, 171262, 1191317, 792958, +948114, -140660, 126165, -692027, -127775, -828392, -420370, -726923, 266288, -111669, +583042, 45634, 489089, -213675, 448824, -116501, 422517, -300111, 140123, -502511, +136365, -368830, 285078, -274878, 301185, -293132, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 3990025, -6490770, 1706176, 5731097, 100395, -5911486, -4074850, -4305705, -668404, -2956548, 6933151, --5183489, -1315871, -2353642, -827318, -4157528, 3999152, -2451353, -1918240, 3362960, 5578089, -6310381, 973884, -451508, 1314797, 335544, 892816, -2854543, -3071439, 1504312, -2784750, --2790118, -3737695, -3931506, 1202054, -2603287, 3482682, -4339528, -587874, 1917166, 1824824, -1607928, -6729677, -1206886, -3731253, -647466, -1563905, -4104378, -80531, 4904853, 1496259, -2384244, 2259153, 2653216, 342524, 3328063, 2096481, 3714610, -2094870, 2480881, -1213328, -1715303, 202400, -3420942, 4012036, 4534949, -2421825, -3036005, 1343788, 4168266, 1000191, -1117228, -1387274, -268435, 2265059, 1416266, 370978, -819265, 282931, 1911797, 2327872, --275952, -3615289, -2211371, -1214402, -1537061, 846645, -340913, -324270, 1726040, -1263257, --419833, -2147, 308164, -854699, -241592, 133144, -1367947, -153008, 1691143, -245350, -896574, -1216550, 709743, 362925, -78920, -798327, -10161893, -2645700, -4594542, 3375308, --9528385, 2101850, -4211753, -2196339, 1327145, 205085, 1040993, 1437740, 1049583, 4141422, --1857573, 446677, -440234, -5005785, 3677029, 6197101, -5055714, -4709969, 3565360, 936840, -4406637, 1417876, 5928129, -813359, 1980517, -3139084, -985695, 6082748, 459025, -3947075, --4911295, -5264556, 196495, 4382478, 2191507, -16643, 4946192, 3976066, 128312, -4054449, -6332393, 1635846, 4876936, 4998268, -900869, 3189013, 3725884, -443455, 2189897, 2584497, --2502892, 522375, -796180, 2456721, -5617817, -3566434, 1774358, -3448322, -1363652, 4803384, --1969779, 2644089, -1153736, -7510287, 1238561, -25233, 3922379, -6183679, -3362423, 2811593, -677531, -584116, 1567126, -2908767, 817654, 755914, -925565, -1829656, 2501819, 2314451, -1561758, 300111, -985695, 623307, -738734, -1104344, 801548, 727997, -1544041, 1101122, --878321, -630823, 1326071, -966905, -2045478, -19327, -784905, -235149, -987843, -1036161, -385473, -67646, 576063, 5369, 564788, -1471563, 393526, -421444, 6355478, 6758668, -2939368, 5005248, 3867618, 6769406, 7664906, -2835752, -848256, 2611877, -7703561, -233002, --2554432, -1440962, 3494493, -4446902, -544924, 5708012, 1028645, 3667902, -1823751, -1291711, --1935420, -7197292, -1204738, 517007, 3798899, -1135482, 6553583, 2616709, -1155883, 2654827, -1342714, 3405372, -2462627, -482647, 7656316, -999654, 7232725, 3431142, -3201898, 789200, -6367289, 3353296, -4231617, 5850283, -1616518, 421981, 283468, -1146756, 1098438, 675384, --5283347, 3387119, 2436320, -425739, 172336, -1146219, -4773856, 33823, 2655364, -515933, --578747, -3173981, -7010997, -2375117, 2585570, 5898601, -8934069, -4726612, 1650878, -3863860, -2268280, -152471, -57445, -5338645, -4088272, -2356863, -3500398, -1692754, 182536, 630823, --1264331, 2049773, 1595044, 357556, 1469416, -1603633, -617402, 68183, -2415919, -498753, -225486, -3022046, 1267552, 763430, -596464, 115964, 624918, 1491964, 153545, 233002, -14496, -1458141, -198642, -423591, 1078037, 779537, 1479079, -1030255, -242129, 9422085, -10018011, -2003065, -4195110, -4587025, 9605694, -8333847, 230318, -1360968, -3882651, -5276904, -1878511, -1451162, -7183870, -8745090, 334471, -658741, -4566087, 1653026, 2426120, -3215857, --4842039, -4520453, 6388227, -6894497, -831613, -8056822, 95563, 4485020, 1530082, 767725, --4517232, -4345970, 3955128, -3052648, -4617090, 573915, -1679869, 2827162, 57445, 1142998, --4604742, -1701344, -1298691, 4422743, 3031173, 3076270, -9118216, 1444183, 2541010, 2084670, -2569464, -2597918, -1661616, 329639, 1846836, 3609920, -626528, 2386391, -2640331, 7043747, --12773770, 4490925, 361851, -6791954, -294205, 7516193, -2275796, -3518652, -6851010, -2306398, -529892, -1897839, -11274, 3085397, 3917010, 3280281, -974958, -536334, -4033511, -816581, --1037772, -2022930, 551366, -818191, -805306, 1643362, -2044941, -936303, 1957968, -974958, -1261110, -293668, -821413, -701153, -552977, -2942053, -1854352, 1291175, 1435056, -1392643, --1144072, -945430, 1073205, -688805, -436476, -1150514, 742493, 812823, -1395328, 559956, --212601, -1248762, -316754, -703838, 790811, -410169, 1185948, 1713155, -807454, -4472135, --14133664, 2576444, -6442451, 1410897, 1185411, -819265, 10035728, 554588, -6413460, 8570070, -4134980, 2943663, -1283122, 1777580, -2604361, 6721087, -1109712, 767725, 10126996, 9882183, -4234301, 4527970, 4358855, 4922033, 3291019, -9758703, -3041911, -131533, -2559264, -8304856, --907849, -1965484, -2187212, -4458713, -77846, -1305133, 7157563, -2288681, 12543452, -69793, -1066226, -2317135, -1805497, 101469, -351114, -997506, -2181844, -1462973, -6132140, 1502165, -1016834, -726386, -3164854, 4297115, 3188476, 3725884, -1292785, -2682744, 85899, 3248606, -3522410, -2815351, -8009577, -4089346, 881542, 6699075, -908922, 5478768, -4328254, -6299107, -4728759, -2196339, -5164698, 3022046, 3159485, -5797669, -4576288, -6380174, -2106682, -2189897, -3689377, -1986959, 1136556, -397821, 2466922, 1527935, 1375463, -1193464, -663036, -3313031, --1651415, -874026, -19327, 1490891, -263067, 116501, 2786897, 1095754, -113280, 44023, -1799591, -1152662, 503585, 528818, -914828, 1088774, -807991, 723165, 576063, 806917, --478352, -2049773, 2034741, 278099, -3428458, 5092758, -6049462, -6832219, 3344706, -2029372, --456877, -3634079, -1912334, 3350075, 5012227, 2456721, -993748, 651761, -442919, -1216550, --4510790, 1479079, -12396349, -3725884, -3847217, 3379603, 4453881, 279173, 2289218, -7889855, -2287607, 1126355, 2279554, -7119445, 13459354, -674847, 2631741, 1671816, -6126234, 919660, --8853001, 5719286, -1758252, -7616588, 1686848, 508417, -3619584, 343061, 992674, 5893769, -10896332, 4578435, -2003065, 3409130, 4576288, -10049687, -3499862, -4639102, 2949569, 2221035, --1488206, 1518271, 3649112, 2151779, 4651987, 8306467, 368830, -3177739, -684510, -419833, -6749004, -4790499, 201327, 2970507, 9041980, -30065, -5720360, -5818607, -332323, -7132330, --781684, 2614025, 11038066, 9285719, -909996, -5030481, 4181688, 230854, 1348083, 944893, --195421, 1302986, -200253, -1440962, 1364189, 1490354, -1355062, 2115272, 2204392, 1902134, --391379, -1675037, 1441498, 1684701, -109522, 447750, -1181116, 139586, -120259, 2477123, -1103807, 1517197, 1401770, 320512, 996432, -89657, 1171989, 2206003, 650151, 859530, -1803349, 2143189, -891743, -637803, 706522, 580894, 1851668, 2529736, -1135482, -12997108, --3577708, -4811974, 5539434, 189515, -2709051, -16712791, -2237678, -2246268, 6891275, 16533477, --4799089, 11101417, 1875827, -9798431, -10031433, 1721208, 2502355, -5704254, 6226629, -4514011, -5009006, -6244346, 2971044, 2126546, -5959267, -5000953, -3843459, 1944547, 6428493, -8462696, -268435, -8898098, -542777, -3400004, 2115272, 6452652, 631897, -2830384, -2530810, 6984154, --73014, 10660109, 3230352, -4059818, -3932043, -3126199, 1475321, 6675453, -194884, 11084774, --19854024, -14634027, -11872363, -2769180, -10136123, 617402, -3853123, 3546569, 8930311, 1575179, -3659312, 5725729, 9454834, 4851703, 1392106, -6608344, -16452409, -17314624, 9201967, 580357, -11698417, -8428873, -6100464, 5106179, -12198781, 190052, -4402342, -509491, -7893613, 255014, -2538326, 7013145, 1204738, 1087701, -2328946, 2490544, -591095, 783832, 1898912, 3140158, -4044249, -1179505, -1807644, 2937221, 1441498, -1206886, -2251637, 390842, -442382, -330176, --1001264, 395674, -49929, -1249299, -483721, 1160715, 2144799, 1715303, 1446330, 725313, --5109938, -2840584, -2007897, -1863479, 2611877, -497142, -920734, -57445, 680215, 117038, --177704, 7740605, 3535832, -6360847, -64961, 14834817, 12774843, -1282048, -10847477, -18590230, --2005213, -6600291, 6711424, -5651640, -5350456, -21040508, -8878771, -18858664, 7016366, -730144, --4469987, 4876399, -559956, -4832, 1453310, -6135898, 626528, -7031399, -1133335, 4078072, -3218004, -7171522, 2632278, 7074348, 11805254, -1895154, -1547799, -4020090, 756451, 5957657, -8724152, -1364189, 1365263, -1986959, -1408212, 10161356, 7573638, 175020, 7808788, 2109366, --9377524, 1658931, -867047, 12114492, 4870493, 1413044, 5993090, 7813620, 2270964, -7119445, --11885785, -2894808, 2579128, 6288369, 3361349, 267362, 2588255, 9360344, 2172180, 2952790, -4452808, 2418067, -6024229, -7036230, -5916855, -6953552, -6162205, 10415833, 1562294, 8010651, --7092602, -6468221, -1143535, 6669548, -4192962, 3484292, 2156074, 938987, -3553012, -2450279, --3278671, -2441152, -3747896, 1367947, 1296543, -1196685, 2570538, -1808718, 1243393, -824634, -336081, 985695, -3316789, -2258616, -3329674, -2356327, -4070555, -1350767, -3367254, -1804960, --1930051, -2772938, -118648, 2822331, 1027571, 1076426, -1023813, -464930, -327491, -887985, -2377265, -1280437, -587337, -896574, 26119306, 5835787, -8172786, 4774393, -4795868, -15447387, --3231963, -15152108, -8438000, 7981123, 10435160, 4156455, 2094333, 982474, 1880659, 10065793, --7138773, 14202920, -9173513, -9192841, 11220065, 5095979, -18210662, 8044474, 4613869, 5857262, -11961484, 6003291, 8897562, -512712, 4825396, -2754685, 7603166, 2089502, 1633698, 5167920, --10234907, -5446019, -3128884, 6655589, 2873333, 2445984, 5242008, 1611150, 1877975, -9168681, -122407, 10114111, -1767379, 1329292, 1300838, 1387811, 12024835, 4715337, 16165720, 3820374, --2256469, 15429670, -13147432, -1614908, -2041720, -5163088, -1156957, 3315178, 15244450, 1562294, --3175055, -5800890, 3193845, -6105296, -2602213, -3892314, -8265128, -1231045, 2282775, 13103945, --1022739, -12454331, -3418794, -7435662, -3722663, 9181029, 7383586, 8606041, -6708739, 1506460, --7471096, -1036161, -2493766, -4438849, -2480344, -6125160, -3565360, -1066763, -2600066, -8072391, --3169686, -2244657, -1602560, -1749662, -2807298, 462783, -1319092, -6332930, -272730, -2996814, --1798518, -439160, -21475, 1237488, -157840, 2989834, 2884071, 592169, 555661, -1964411, --1759863, -383326, -2136209, 3054259, 1801202, 2872796, 2668785, 1225139, 3721589, 2535641, -962073, 1806034, -468151, -1418950, 2639794, 3818763, -9434969, -14543833, -5251672, -14319958, -10283225, -12218108, -8992588, -7195681, 6499896, 16383690, -16624208, -5901822, -18735722, 5366025, -2614561, 1756642, -5382668, 1461363, 21092584, -11039677, -1853278, 7984881, 5455146, 4175245, -7419556, 4938139, -6939594, -11729019, -2191507, -6498823, -8850317, -10829760, 172336, -2531883, -2664490, 13932337, 8824547, -7836705, -4231080, -884226, -4045322, 3403762, 26508002, -9008157, -18490908, 5782100, 3106872, -1223529, -2998961, 3115462, -10155450, 4846334, 14391899, 595390, -2297808, 11504607, 7474317, 4442607, -9714679, 8107825, -5793911, -8670465, -23414552, -7385733, -15209553, -8666707, 3941169, -16496969, 11790759, -6222871, -6495065, 10284299, -16430934, -12164958, -18611168, -13283260, -12493523, 7450695, -8571144, 1716376, 28454, 5313412, -13477071, 4226248, -352187, 13427678, -10004589, 3326452, -1421097, -7613367, 9962714, 2010045, -8293582, -6021544, --5714454, 870268, -22012, -4181688, 111669, 5193689, -435939, 3679713, 4144644, 3285113, --7467338, 4147328, 3804267, 5992016, -151398, 440234, -5429913, -2171106, -2672007, -2817499, -1255741, -628139, 3475702, -4940823, -3114388, 1861332, -4777614, -4030827, -5089536, 1750199, --10600516, -7868380, -1085553, 12059731, -5711233, 21181704, 19697256, 3893388, 6306086, -11421392, -1414655, -9242770, 14790794, -2938831, 4358855, -7041599, -4569845, 2542621, 1998234, -6757594, -11340861, -3178813, 2409477, 4258997, -7421704, 2842732, -9470403, 74088, 5398237, 6492917, -159451, 8574365, 10782515, -768262, -20170778, -3356517, -5961415, 14489072, -12181601, -15103789, --10793790, -7184944, 2116882, -8534100, -6726993, -4267587, -1224603, 2714956, -29563334, 18738942, -14583561, 21358336, -6747394, 3484292, 14295799, -13574781, -12614319, 2573222, 9352828, 6200859, --1575179, 2952253, -7441568, -8826158, -11335492, -3258807, 39383240, 3247532, -21767968, -3816079, --11906723, 7592966, 5925445, -13429826, 2943663, -4057670, 1166084, -6577206, 8469676, 8678518, --1224603, -4256313, -5105643, -17032230, 5224291, 2868501, -627065, 7185481, -3353296, 1242319, -2816425, -8015483, 3187403, 4973572, 11303280, 6088116, 779537, -9538585, 151934, 8934606, -601295, 122407, 6681359, 262530, 2343442, 6626598, 5601711, -876173, 3112241, 5633387, -5183489, -2292439, 2327872, 6742025, 8204998, 6122476, -71404, -4111894, -861141, 331786, -5184026, 132607, -1341104, 491237, 1977296, -3027415, 1990717, 3304441, -2975876, 2172717, --7428683, -783295, -5305895, -11642583, -21354040, 1371705, -17777944, 8165270, 3303904, -15001247, -8617315, 9094056, 13593571, 3432216, 5596343, -15559056, 60666, -3419331, 14488535, 6176163, -984084, 12808666, 15075872, -2172717, -6692096, 1279363, 18503256, -12221866, -9010305, 8945343, -5457830, -12429635, -2323041, -11534135, 21103322, -18130668, 5258114, 10624675, -6347962, 9729175, -3985193, -5485210, -5058398, -5874442, -8133058, 11192685, 15976741, 2694018, -11700028, 811749, --12958453, -5494874, 8935679, -2084133, -6293201, -5287105, 2505040, -18097382, 816044, -2304787, --9898826, 13324599, -13300440, -1376537, -2863670, -10505490, 10898480, -1309428, 6409165, -5577015, --801548, -1076426, -6191196, 4477504, -5689221, -1578937, -5600638, 15455977, 7078643, -19412178, --3933653, -31675920, 18219252, -541703, -13848585, 12112345, 1567126, 1372242, 4811974, -273804, -7422777, 8332774, 2183991, -2794950, 5052492, 8992051, -5246840, -3856881, 4032438, 862752, -2513630, 2282775, 4988068, 5953899, -4058744, 2858301, 2210298, -5637682, -4519380, 3583077, -1015223, -1058173, -3264712, -3637837, -5431523, 4996658, 5862094, 423054, -3580929, -12309913, -403190, 513249, 3981435, -8111583, 980863, 5418101, -3126736, 6350646, 3273302, -1027034, -2068027, 3183645, 478352, 783295, 2234994, 4030827, -3915937, -839666, -2222109, 1087701, -18823768, 913754, -14681272, -6030134, 8354249, 14049912, 14648523, 727997, -3695819, 21070572, -8878771, 23396834, 2614561, 2158758, -11394011, -4412005, -6846715, 6379637, 3136937, 12738336, --14607721, 1159641, -8788040, 7884486, -12696460, 4921496, 13575855, -1895691, -653372, -7034083, -1717987, -7081864, -25035902, 3583613, -4056060, 1901060, -11322608, -2259153, 9432285, 18895172, --2193655, -6626598, 10644003, 5294084, 2403571, 13058311, 4234301, -6712497, -3544959, 8489003, --1400159, 7762080, -9319542, -7913477, 2549063, -7427072, -14797773, -6557342, -16819092, -3534221, -5330592, -12851079, -2120103, -14785425, -6789270, 55835, 5630166, -17652852, 7543573, 1484985, --10850161, 13437879, -4983773, 3678103, 23278722, 26803818, 1459752, 9529996, 19229642, 23461796, -22870700, -2119566, -15675557, -23475754, -8850317, -15510738, 14537927, -3028489, -7242389, 3944928, --645856, 1772211, -545461, -6849399, 7250442, 2278480, 2550137, 699543, 9892920, -5534602, --380105, -2971044, 6777459, -6394133, -3060701, -545461, 9758703, -2467996, 5784247, 8424578, --7875897, -1481227, -3489661, -8456791, -3757560, -1829119, 3431142, 438624, 11464878, 3329674, -7665443, -616328, -7856032, 2252710, 1815161, 78920, 31988916, 36668820, 1926293, 11732777, -11247982, -1569811, -26395796, -725850, -1065152, -10040560, 7435662, 6869264, -14376866, 7789997, -10045392, 1620813, -3839164, 5419712, -3685082, 18634790, -3226057, -8802535, 100932, 4182761, --1781875, -1300838, -359167, -29861296, 8575439, -757525, -20603494, -8617852, 3533148, -2024003, --14051522, 4778151, -16579648, -1594507, 1597191, -26665842, -4782983, 11293617, -8558259, 1128503, -16724066, 10156524, 12785044, 3873524, -7252589, -12527883, 12722230, -6709813, 7111392, -11916387, --6192806, 8334921, 14289893, 1965484, 17124034, -11641509, 14809047, -12705587, -15169288, -10952703, -14758044, 15341086, -14346801, 7256347, -39549132, -3762928, 11573863, 3517041, -6240588, -15906411, -7210713, -22419192, 3549791, -11641509, 10511396, -17358110, -11009612, 17063368, 346282, 8489003, -1916629, 7373922, -3920768, 2939368, -1996086, -13065291, -2374580, -6194954, 3965866, -4343823, -2245731, 320512, 2099165, 839129, -2881923, -4115116, 501437, -8358543, 2865280, 2108829, -4639102, -5436355, 4607426, 4112968, 2810519, 3503083, 2698313, -5837398, 551903, 2496450, --4185446, 7262790, -717260, -3147674, -4327717, -287226, 630823, 3315178, -2767033, 3124589, --2673080, 7617662, 3432216, -6923488, -1762547, -1938104, -3163244, -3093450, -6977711, -29153702, -2304787, 35713728, -24088860, -2441689, -1934883, 1745367, -9429064, 4420595, -15134928, -15830713, --5002563, -4440996, 3955665, -4103305, 8330626, -11907260, 554588, 22916334, -18748070, -16852378, --3883187, 20033874, 2985539, -25446070, 10928007, -9542344, -10654203, 2353105, 34917548, -19713364, --10741713, 24583320, 18485002, 1435056, -10075993, 520228, -3649649, -8017094, 7235410, 6304475, --4059281, -20208894, 25839060, 11906186, 5012764, -27453968, -4028679, 8323110, 9594420, -3552475, -14502494, -2473901, 5029407, -6415608, -16295106, 10558103, -11586211, 6881612, 3795141, -14565308, -27358942, 4029753, 19742354, 19494320, 3649112, -29719026, -5528697, 124554, -11598022, -6111739, -1262184, -1099512, 12984223, 23979876, -6831683, -2517388, -10508174, -4913980, 10171019, -6925635, -5969468, 17790292, -15549929, 17682380, -3365107, 5205501, -6644852, -3792993, -5558225, 615791, -3466039, 3782256, -2851858, -57445, 4202089, 2164664, 9558450, 4271345, -4634807, 250719, -981937, 8449811, -4648765, 2350958, 4088809, 1190243, -224949, 152471, -11112691, 5363341, --4027606, 5248987, 7137162, 797253, -1044751, 3433290, -281320, 2594697, 1013612, -1313723, --4068408, -4358855, 8433705, 1288490, -1896228, 2207613, -5153961, -1118839, 8573292, 11231339, -1503775, -10260140, -51596516, 3425773, -13478144, 1816234, 25801480, 2504503, -5000416, 4741644, -978716, -17479444, -18920404, -16994112, -16362752, 21306260, -4276714, 25422986, 2238752, -23954106, --857920, 2677375, 20534776, 4077535, -3335579, -4054986, 5855651, -12887586, -4962835, 22755274, --4647692, -29487098, -22557706, 13498545, -2944200, -6109054, 6771016, -2092723, -15218143, 4608500, -8918500, 20486994, -4135517, -16965658, 220654, -21404506, 8232379, 24275692, -3893925, -29750164, -9361418, -322659, 1664300, 7193534, -9387188, 18337900, 1365263, -12344810, 9601936, -6677601, --4146254, 26193394, -13420699, -4490389, -4412005, 16506633, 6619082, -28947542, 14681809, -23325968, --5578626, -12582107, 2998961, -7670812, -7087233, -2402497, 13288629, -4315906, -8207146, 15744813, --9188546, 16161962, -96637, -8531416, -5148592, 4023311, 4436165, 3205656, -9722732, -3211025, -2376191, -541703, -6364068, 143881, 5983427, 9225053, 3833795, 4745939, 743566, 9067213, --5142687, 2944737, 7161321, -2724620, 891206, 2922725, -1801202, 1429150, 2831994, -8886824, -7497403, 3195456, -8946417, -7330973, 512175, -10519449, 908922, -7754027, 10028749, -18149994, --45097, -3845070, 1905892, -4728222, 5658620, -3029563, 2634426, 2026151, -3741454, 816581, --25115896, 5081483, 41649372, 27008902, 12453795, -20714628, 15521475, 19465866, 28983514, 13884019, -3473018, 936840, 18173618, 31188978, -7010997, -3907347, 17761300, -35121560, 12788802, 31145492, --6438693, -10927471, 8149164, 24154896, 19575924, -13173202, -22348326, -1427003, 11289322, -3906273, -2740726, 244813, 26276074, -15107547, 16840566, 25274272, -10142028, -3192771, 17945984, -2810519, -62878320, -26487064, 11333345, 42899208, -24764782, 7991324, 2890513, -35014184, -1073742, 6380174, --15377057, 33986612, 2586107, -4821638, 2656974, -14329085, 46782396, 12765180, -37497748, 36042292, --15126338, 1202054, 11097122, 13296682, 24004036, 11564736, -6496138, -23584740, -31542776, -11984569, --12652974, -2316061, -9691594, 19672560, -12074227, -21056614, 2321967, 5617281, 4238596, 7452305, --11850889, -11694659, -7019587, -7794292, -24879134, -10676215, -8485782, -17345226, -8276939, 5967320, --7326678, -16283832, -796180, 6072547, 10788421, -2739116, 5061082, 11581379, -704912, -8196945, --524523, -5055714, 6526740, 9182640, -13203803, 11374147, -6856916, -75699, 1708323, -6339372, -12143483, 4469451, -17137456, 10294500, 1563905, -6318971, 12598750, -14621142, 5732708, -2942053, -6140730, -3686693, -4031901, 2135136, -2385318, -1728188, 4412542, -2876018, -9834938, 4268124, --943282, 2702608, -460098, 7910793, -4518843, 10077067, -48168060, 27967216, 1482838, 16822314, -28275918, -46601468, 10806675, 23665270, 5608691, 17605070, -17666812, 19401978, 5917928, -18395882, -467078, -11671037, -33773476, 18435610, 10778220, 30854508, -16989816, -22963042, -7763691, 7080254, --4540854, -38720740, -18820546, 11635603, -2689187, 5558762, -16074452, -5242545, 12994960, -11060615, --5242545, -16644609, -3673808, 5789616, -18044768, 1722282, -39620000, -32942400, 10291279, -34258268, -3132642, -35831300, -24816322, -17385490, 16927540, 33075006, 41113576, -9882183, 18356690, 22017076, -10904385, 9443022, -15743203, 45414448, 46631532, -31768262, 31827856, -25029996, 16086263, 32539746, -31214748, 37734508, 45349484, 31899258, -35837744, -25702694, -128849, 747861, 13743358, -8714489, --6777996, -21700322, -11811697, -32119912, 7164006, 26717380, -10709501, 6449967, 28170154, 13082470, --19063750, 21415244, -1190780, 7494718, -1971927, -3923453, 6353331, -6892349, 9669582, 7940321, --7016903, -8759049, 8362302, -6001143, 423054, 157303, -545998, 2252710, 945430, -11621645, -10861435, -4984310, 5259725, 6076842, -4152697, 6554120, -8106214, -6119792, 5581310, -6688338, --8378408, -3837553, 3502009, -3409667, 2222109, -7765838, 386010, 2756295, 7190849, 10536092, --2408403, 5907191, -6914361, -61740, -1199907, 3149822, 2548526, -696858, -5332739, -7654706, --1719061, 1583232, 59855736, -43806520, -22310744, 23627688, -14063334, 22574348, -17590038, -19587198, -6614787, -46321224, -2102387, 31189516, -7525857, 16045998, -26584774, -6502581, -10495826, 1090385, -33244658, 10089415, 7392713, -5893769, 18253612, 5912023, 45426796, 11216844, 26527328, 1934346, --20720532, -19558744, 26444114, -12800613, 12239046, -202400, -34088620, 24647744, -30368104, 59077276, --43972948, 26917634, 24068996, -25196962, -21205328, -15617575, 21824340, -1597191, 22840100, -217433, -3007014, -40284644, -21654688, 9465034, -19802484, 6644852, -12060805, 11933567, 6769942, 31076772, --18380850, -6260989, -7815230, -15108621, 42066520, 7867307, 4000225, -39049844, -12632036, 21144660, -12473122, 13503914, 36450852, 23395224, 32240708, 37250788, -1030792, 16556025, -15396384, 49520972, -3776350, -8047695, 18066244, -4109210, 37982544, 803696, -7573101, -7714298, 4608500, 26786100, --20157892, 13900662, -6368363, -2062658, 7983808, 5432060, 10452877, -6387153, 6832756, 12582644, --3192235, -4600984, 8508330, -1236951, -1241246, -811749, 2348273, 1517734, 4140349, -8909373, -11946988, -6848326, -3785477, -1771674, 7341173, -10095858, 1123671, -7181186, 10008348, 18115636, --5921150, -4817880, -2296197, 12491912, 6161668, 13043816, -940061, -7330973, 5992016, 6351183, --1744294, 6295349, 4891968, -17339856, 2822867, 20202452, -2569464, -9381819, -90555624, 63006096, --39123392, -27054536, 505732, 13085692, 16056735, 3117073, -14629732, 49086108, 24639154, 7021735, --24630026, 16230145, -987306, 18423800, -23528368, -15963320, 12351252, 36740760, -42074572, 1902134, -13424994, 4642323, -10477573, -6014565, -5443871, 1867237, -2296197, 9648107, 45913736, 3151432, --20999706, 31172872, -7412040, -29780766, -38834556, 36990944, 11855720, -4938139, 13523778, 8684961, -30436822, -41394896, -4600984, -20970714, -6207302, 23929948, -17724256, 9426379, -20410758, 9913858, -63308892, 4968741, -36581312, -40655088, -2747169, 19594178, 18846316, -16209743, 3712462, 31061740, --13225278, -59706488, 33872260, -20497732, -34300684, 15078020, 56489020, -39085276, 28323698, 39699992, -13361643, -34152508, -28898688, -17497696, 13977434, 12493523, -12140799, 35634808, 17035988, -2115272, --1323387, 2245731, -29962766, -11215233, -21301428, 10913512, 9265318, 7158637, 9358734, 7378217, -21533356, -10831908, -5659693, 4283693, -243203, -16786342, 14246943, -556735, 8806830, -4138201, -6551436, -10788958, -3663070, -6480032, 9940702, 2019708, 1780264, 355409, 5850283, 16098611, --6680285, -30559766, 2173790, -15065672, -3292093, 9192841, -13297219, -8385387, 17052094, -16238734, --3970697, 159988, 8000987, -17396766, 886911, 51881056, 17078400, 3438658, -3800509, 8222715, -14602352, -4653597, 6814503, -7860864, -69793, -6213744, 24371792, -27349814, -3067144, 16341814, --37976636, 12285754, -9263171, 2855080, -4440460, -10639708, 6797323, -2946348, -15461345, 41605884, --31753230, -8949101, 29557428, -18953154, -2886755, -5988795, 6513318, 29217052, 2288144, -28536836, -39106216, -21139292, 13945222, 24340116, 10870562, -9120900, 2176475, -21499532, 5268851, -13032005, --10209674, 52329344, -12145631, -20900922, 6842957, -9778030, 12456479, -8168491, 13675713, 33658048, --18502720, 11120207, 25760676, -30289720, 13885092, 16430397, 7556458, 20572894, -23463944, -6224482, -36018668, -24877524, -5452461, 10242423, -10050223, 34304976, -34092912, 5763309, 12319577, -15799574, -11983496, 13089450, -32468342, 11528229, 27710056, -336618, -8313446, -1344325, 17828946, -3718368, --30491046, 24762634, 11771968, -13440563, 5092221, -7423314, 11009075, -4327717, -13645648, 16037945, -900333, -3533148, -11864847, 11134166, 2124935, -15852724, 5657546, 10567767, -2188823, -5210869, -2317135, 9766756, -1450088, -10211822, 10406169, 6777996, 1270237, -548682, 8699456, 1642288, -3050501, -12132746, 15373299, -8501888, 16394964, -10829760, -29272350, -79017200, -124175024, 11244761, -118921200, 9714142, 269223584, 277875808, 138346272, 290901344, 194031056, -40325984, -4212289, -64085208, --233616688, -205110992, -126789584, -238713216, -186827312, -54391464, -117102824, -98085240, 34651260, 58589796, --28486370, 15241765, 52328808, -40500468, -23728620, 73723648, 65488052, 7392176, 73199128, 124958856, -41676752, 90340344, 171029360, 82029040, 43244416, 153177856, 128028680, 16895328, 91884384, 179509776, -35380328, 42089604, 144956224, 62307092, -15951509, 102373232, 96621728, -9345312, 85252416, 110114912, --2163590, -81248432, -38059316, -190421136, -314287456, -279601824, -298102944, -455097952, -408842784, -382656896, --465287232, -452123680, -371037920, -334665984, -301154528, -174696720, -67630704, 58051316, 124479424, 239014400, -356793664, 389540640, 434030592, 566548608, 559120448, 439674720, 481080352, 425180288, 175382848, 191153968, -162276752, -8012799, -27868970, 46160160, -7788923, -74445744, 8225936, 47942036, -48818208, -20209968, -42142756, -24434606, -94445256, -32204202, -26680336, -136161200, -96990024, -27353572, -107255536, -121290952, --10044318, -44222056, -122783992, -60032904, -56684980, -172022560, -163262448, -148197840, -265502000, -286903808, --239680656, -255543568, -275618784, -198210064, -169496048, -147489184, -107604504, -59253368, -28294170, -9793062, -19046570, 90465432, 124541168, 193751344, 317908640, 359896800, 398432832, 465948128, 455149504, 400463840, -340593056, 237868176, 100573640, 22897008, -27807228, -80320184, -93940064, -92386896, -93635656, -95720864, --89842128, -81698328, -87977576, -89980640, -85673320, -91633128, -100242392, -95832528, -92408368, -90067072, --79397304, -60669096, -45656040, -30153354, -9175661, 6481106, 13610214, 18625662, 19735912, 16254841, -14357002, 10757819, 2500208, -4358855, -10530186, -18099530, -20423644, -20269024, -22377854, -21937620, --18388902, -17877264, -15977278, -10517838, -10438918, -11436961, -6577743, -4523138, -6694244, -2720862, --1421634, -3080565, 4247723, 11662984, 14088030, 21960704, 30303142, 34162708, 39686036, 45851996, -46901580, 46369540, 48393008, 48171280, 45485852, 42730092, 38726648, 32052268, 25676926, 21016886, -14746233, 8097624, 1962800, -5575405, -14497125, -21969294, -29196650, -34973920, -40098352, -43163348, --43328168, -41832980, -37799472, -30536680, -23768886, -17652316, -12147241, -7795903, -6109054, -4038880, --2404108, -1554778, -1009317, 251792, 747861, 1286880, 1642288, 2337536, 2318746, 2529199, -2358474, 2331630, 1730335, 1425392, 785442, 409096, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +6490770, 1706176, 5731097, 100395, -5911486, -4074850, -4305705, -668404, -2956548, 6933151, +-5183489, -1315871, -2353642, -827318, -4157528, 3999152, -2451353, -1918240, 3362960, 5578089, +6310381, 973884, -451508, 1314797, 335544, 892816, -2854543, -3071439, 1504312, -2784750, +-2790118, -3737695, -3931506, 1202054, -2603287, 3482682, -4339528, -587874, 1917166, 1824824, +1607928, -6729677, -1206886, -3731253, -647466, -1563905, -4104378, -80531, 4904853, 1496259, +2384244, 2259153, 2653216, 342524, 3328063, 2096481, 3714610, -2094870, 2480881, -1213328, +1715303, 202400, -3420942, 4012036, 4534949, -2421825, -3036005, 1343788, 4168266, 1000191, +1117228, -1387274, -268435, 2265059, 1416266, 370978, -819265, 282931, 1911797, 2327872, +-275952, -3615289, -2211371, -1214402, -1537061, 846645, -340913, -324270, 1726040, -1263257, +-419833, -2147, 308164, -854699, -241592, 133144, -1367947, -153008, 1691143, -245350, +896574, -1216550, 709743, 362925, -78920, -798327, -10161893, -2645700, -4594542, 3375308, +-9528385, 2101850, -4211753, -2196339, 1327145, 205085, 1040993, 1437740, 1049583, 4141422, +-1857573, 446677, -440234, -5005785, 3677029, 6197101, -5055714, -4709969, 3565360, 936840, +4406637, 1417876, 5928129, -813359, 1980517, -3139084, -985695, 6082748, 459025, -3947075, +-4911295, -5264556, 196495, 4382478, 2191507, -16643, 4946192, 3976066, 128312, -4054449, +6332393, 1635846, 4876936, 4998268, -900869, 3189013, 3725884, -443455, 2189897, 2584497, +-2502892, 522375, -796180, 2456721, -5617817, -3566434, 1774358, -3448322, -1363652, 4803384, +-1969779, 2644089, -1153736, -7510287, 1238561, -25233, 3922379, -6183679, -3362423, 2811593, +677531, -584116, 1567126, -2908767, 817654, 755914, -925565, -1829656, 2501819, 2314451, +1561758, 300111, -985695, 623307, -738734, -1104344, 801548, 727997, -1544041, 1101122, +-878321, -630823, 1326071, -966905, -2045478, -19327, -784905, -235149, -987843, -1036161, +385473, -67646, 576063, 5369, 564788, -1471563, 393526, -421444, 6355478, 6758668, +2939368, 5005248, 3867618, 6769406, 7664906, -2835752, -848256, 2611877, -7703561, -233002, +-2554432, -1440962, 3494493, -4446902, -544924, 5708012, 1028645, 3667902, -1823751, -1291711, +-1935420, -7197292, -1204738, 517007, 3798899, -1135482, 6553583, 2616709, -1155883, 2654827, +1342714, 3405372, -2462627, -482647, 7656316, -999654, 7232725, 3431142, -3201898, 789200, +6367289, 3353296, -4231617, 5850283, -1616518, 421981, 283468, -1146756, 1098438, 675384, +-5283347, 3387119, 2436320, -425739, 172336, -1146219, -4773856, 33823, 2655364, -515933, +-578747, -3173981, -7010997, -2375117, 2585570, 5898601, -8934069, -4726612, 1650878, -3863860, +2268280, -152471, -57445, -5338645, -4088272, -2356863, -3500398, -1692754, 182536, 630823, +-1264331, 2049773, 1595044, 357556, 1469416, -1603633, -617402, 68183, -2415919, -498753, +225486, -3022046, 1267552, 763430, -596464, 115964, 624918, 1491964, 153545, 233002, +14496, -1458141, -198642, -423591, 1078037, 779537, 1479079, -1030255, -242129, 9422085, +10018011, -2003065, -4195110, -4587025, 9605694, -8333847, 230318, -1360968, -3882651, -5276904, +1878511, -1451162, -7183870, -8745090, 334471, -658741, -4566087, 1653026, 2426120, -3215857, +-4842039, -4520453, 6388227, -6894497, -831613, -8056822, 95563, 4485020, 1530082, 767725, +-4517232, -4345970, 3955128, -3052648, -4617090, 573915, -1679869, 2827162, 57445, 1142998, +-4604742, -1701344, -1298691, 4422743, 3031173, 3076270, -9118216, 1444183, 2541010, 2084670, +2569464, -2597918, -1661616, 329639, 1846836, 3609920, -626528, 2386391, -2640331, 7043747, +-12773770, 4490925, 361851, -6791954, -294205, 7516193, -2275796, -3518652, -6851010, -2306398, +529892, -1897839, -11274, 3085397, 3917010, 3280281, -974958, -536334, -4033511, -816581, +-1037772, -2022930, 551366, -818191, -805306, 1643362, -2044941, -936303, 1957968, -974958, +1261110, -293668, -821413, -701153, -552977, -2942053, -1854352, 1291175, 1435056, -1392643, +-1144072, -945430, 1073205, -688805, -436476, -1150514, 742493, 812823, -1395328, 559956, +-212601, -1248762, -316754, -703838, 790811, -410169, 1185948, 1713155, -807454, -4472135, +-14133664, 2576444, -6442451, 1410897, 1185411, -819265, 10035728, 554588, -6413460, 8570070, +4134980, 2943663, -1283122, 1777580, -2604361, 6721087, -1109712, 767725, 10126996, 9882183, +4234301, 4527970, 4358855, 4922033, 3291019, -9758703, -3041911, -131533, -2559264, -8304856, +-907849, -1965484, -2187212, -4458713, -77846, -1305133, 7157563, -2288681, 12543452, -69793, +1066226, -2317135, -1805497, 101469, -351114, -997506, -2181844, -1462973, -6132140, 1502165, +1016834, -726386, -3164854, 4297115, 3188476, 3725884, -1292785, -2682744, 85899, 3248606, +3522410, -2815351, -8009577, -4089346, 881542, 6699075, -908922, 5478768, -4328254, -6299107, +4728759, -2196339, -5164698, 3022046, 3159485, -5797669, -4576288, -6380174, -2106682, -2189897, +3689377, -1986959, 1136556, -397821, 2466922, 1527935, 1375463, -1193464, -663036, -3313031, +-1651415, -874026, -19327, 1490891, -263067, 116501, 2786897, 1095754, -113280, 44023, +1799591, -1152662, 503585, 528818, -914828, 1088774, -807991, 723165, 576063, 806917, +-478352, -2049773, 2034741, 278099, -3428458, 5092758, -6049462, -6832219, 3344706, -2029372, +-456877, -3634079, -1912334, 3350075, 5012227, 2456721, -993748, 651761, -442919, -1216550, +-4510790, 1479079, -12396349, -3725884, -3847217, 3379603, 4453881, 279173, 2289218, -7889855, +2287607, 1126355, 2279554, -7119445, 13459354, -674847, 2631741, 1671816, -6126234, 919660, +-8853001, 5719286, -1758252, -7616588, 1686848, 508417, -3619584, 343061, 992674, 5893769, +10896332, 4578435, -2003065, 3409130, 4576288, -10049687, -3499862, -4639102, 2949569, 2221035, +-1488206, 1518271, 3649112, 2151779, 4651987, 8306467, 368830, -3177739, -684510, -419833, +6749004, -4790499, 201327, 2970507, 9041980, -30065, -5720360, -5818607, -332323, -7132330, +-781684, 2614025, 11038066, 9285719, -909996, -5030481, 4181688, 230854, 1348083, 944893, +-195421, 1302986, -200253, -1440962, 1364189, 1490354, -1355062, 2115272, 2204392, 1902134, +-391379, -1675037, 1441498, 1684701, -109522, 447750, -1181116, 139586, -120259, 2477123, +1103807, 1517197, 1401770, 320512, 996432, -89657, 1171989, 2206003, 650151, 859530, +1803349, 2143189, -891743, -637803, 706522, 580894, 1851668, 2529736, -1135482, -12997108, +-3577708, -4811974, 5539434, 189515, -2709051, -16712791, -2237678, -2246268, 6891275, 16533477, +-4799089, 11101417, 1875827, -9798431, -10031433, 1721208, 2502355, -5704254, 6226629, -4514011, +5009006, -6244346, 2971044, 2126546, -5959267, -5000953, -3843459, 1944547, 6428493, -8462696, +268435, -8898098, -542777, -3400004, 2115272, 6452652, 631897, -2830384, -2530810, 6984154, +-73014, 10660109, 3230352, -4059818, -3932043, -3126199, 1475321, 6675453, -194884, 11084774, +-19854024, -14634027, -11872363, -2769180, -10136123, 617402, -3853123, 3546569, 8930311, 1575179, +3659312, 5725729, 9454834, 4851703, 1392106, -6608344, -16452409, -17314624, 9201967, 580357, +11698417, -8428873, -6100464, 5106179, -12198781, 190052, -4402342, -509491, -7893613, 255014, +2538326, 7013145, 1204738, 1087701, -2328946, 2490544, -591095, 783832, 1898912, 3140158, +4044249, -1179505, -1807644, 2937221, 1441498, -1206886, -2251637, 390842, -442382, -330176, +-1001264, 395674, -49929, -1249299, -483721, 1160715, 2144799, 1715303, 1446330, 725313, +-5109938, -2840584, -2007897, -1863479, 2611877, -497142, -920734, -57445, 680215, 117038, +-177704, 7740605, 3535832, -6360847, -64961, 14834817, 12774843, -1282048, -10847477, -18590230, +-2005213, -6600291, 6711424, -5651640, -5350456, -21040508, -8878771, -18858664, 7016366, -730144, +-4469987, 4876399, -559956, -4832, 1453310, -6135898, 626528, -7031399, -1133335, 4078072, +3218004, -7171522, 2632278, 7074348, 11805254, -1895154, -1547799, -4020090, 756451, 5957657, +8724152, -1364189, 1365263, -1986959, -1408212, 10161356, 7573638, 175020, 7808788, 2109366, +-9377524, 1658931, -867047, 12114492, 4870493, 1413044, 5993090, 7813620, 2270964, -7119445, +-11885785, -2894808, 2579128, 6288369, 3361349, 267362, 2588255, 9360344, 2172180, 2952790, +4452808, 2418067, -6024229, -7036230, -5916855, -6953552, -6162205, 10415833, 1562294, 8010651, +-7092602, -6468221, -1143535, 6669548, -4192962, 3484292, 2156074, 938987, -3553012, -2450279, +-3278671, -2441152, -3747896, 1367947, 1296543, -1196685, 2570538, -1808718, 1243393, -824634, +336081, 985695, -3316789, -2258616, -3329674, -2356327, -4070555, -1350767, -3367254, -1804960, +-1930051, -2772938, -118648, 2822331, 1027571, 1076426, -1023813, -464930, -327491, -887985, +2377265, -1280437, -587337, -896574, 26119306, 5835787, -8172786, 4774393, -4795868, -15447387, +-3231963, -15152108, -8438000, 7981123, 10435160, 4156455, 2094333, 982474, 1880659, 10065793, +-7138773, 14202920, -9173513, -9192841, 11220065, 5095979, -18210662, 8044474, 4613869, 5857262, +11961484, 6003291, 8897562, -512712, 4825396, -2754685, 7603166, 2089502, 1633698, 5167920, +-10234907, -5446019, -3128884, 6655589, 2873333, 2445984, 5242008, 1611150, 1877975, -9168681, +122407, 10114111, -1767379, 1329292, 1300838, 1387811, 12024835, 4715337, 16165720, 3820374, +-2256469, 15429670, -13147432, -1614908, -2041720, -5163088, -1156957, 3315178, 15244450, 1562294, +-3175055, -5800890, 3193845, -6105296, -2602213, -3892314, -8265128, -1231045, 2282775, 13103945, +-1022739, -12454331, -3418794, -7435662, -3722663, 9181029, 7383586, 8606041, -6708739, 1506460, +-7471096, -1036161, -2493766, -4438849, -2480344, -6125160, -3565360, -1066763, -2600066, -8072391, +-3169686, -2244657, -1602560, -1749662, -2807298, 462783, -1319092, -6332930, -272730, -2996814, +-1798518, -439160, -21475, 1237488, -157840, 2989834, 2884071, 592169, 555661, -1964411, +-1759863, -383326, -2136209, 3054259, 1801202, 2872796, 2668785, 1225139, 3721589, 2535641, +962073, 1806034, -468151, -1418950, 2639794, 3818763, -9434969, -14543833, -5251672, -14319958, +10283225, -12218108, -8992588, -7195681, 6499896, 16383690, -16624208, -5901822, -18735722, 5366025, +2614561, 1756642, -5382668, 1461363, 21092584, -11039677, -1853278, 7984881, 5455146, 4175245, +7419556, 4938139, -6939594, -11729019, -2191507, -6498823, -8850317, -10829760, 172336, -2531883, +2664490, 13932337, 8824547, -7836705, -4231080, -884226, -4045322, 3403762, 26508002, -9008157, +18490908, 5782100, 3106872, -1223529, -2998961, 3115462, -10155450, 4846334, 14391899, 595390, +2297808, 11504607, 7474317, 4442607, -9714679, 8107825, -5793911, -8670465, -23414552, -7385733, +15209553, -8666707, 3941169, -16496969, 11790759, -6222871, -6495065, 10284299, -16430934, -12164958, +18611168, -13283260, -12493523, 7450695, -8571144, 1716376, 28454, 5313412, -13477071, 4226248, +352187, 13427678, -10004589, 3326452, -1421097, -7613367, 9962714, 2010045, -8293582, -6021544, +-5714454, 870268, -22012, -4181688, 111669, 5193689, -435939, 3679713, 4144644, 3285113, +-7467338, 4147328, 3804267, 5992016, -151398, 440234, -5429913, -2171106, -2672007, -2817499, +1255741, -628139, 3475702, -4940823, -3114388, 1861332, -4777614, -4030827, -5089536, 1750199, +-10600516, -7868380, -1085553, 12059731, -5711233, 21181704, 19697256, 3893388, 6306086, -11421392, +1414655, -9242770, 14790794, -2938831, 4358855, -7041599, -4569845, 2542621, 1998234, -6757594, +11340861, -3178813, 2409477, 4258997, -7421704, 2842732, -9470403, 74088, 5398237, 6492917, +159451, 8574365, 10782515, -768262, -20170778, -3356517, -5961415, 14489072, -12181601, -15103789, +-10793790, -7184944, 2116882, -8534100, -6726993, -4267587, -1224603, 2714956, -29563334, 18738942, +14583561, 21358336, -6747394, 3484292, 14295799, -13574781, -12614319, 2573222, 9352828, 6200859, +-1575179, 2952253, -7441568, -8826158, -11335492, -3258807, 39383240, 3247532, -21767968, -3816079, +-11906723, 7592966, 5925445, -13429826, 2943663, -4057670, 1166084, -6577206, 8469676, 8678518, +-1224603, -4256313, -5105643, -17032230, 5224291, 2868501, -627065, 7185481, -3353296, 1242319, +2816425, -8015483, 3187403, 4973572, 11303280, 6088116, 779537, -9538585, 151934, 8934606, +601295, 122407, 6681359, 262530, 2343442, 6626598, 5601711, -876173, 3112241, 5633387, +5183489, -2292439, 2327872, 6742025, 8204998, 6122476, -71404, -4111894, -861141, 331786, +5184026, 132607, -1341104, 491237, 1977296, -3027415, 1990717, 3304441, -2975876, 2172717, +-7428683, -783295, -5305895, -11642583, -21354040, 1371705, -17777944, 8165270, 3303904, -15001247, +8617315, 9094056, 13593571, 3432216, 5596343, -15559056, 60666, -3419331, 14488535, 6176163, +984084, 12808666, 15075872, -2172717, -6692096, 1279363, 18503256, -12221866, -9010305, 8945343, +5457830, -12429635, -2323041, -11534135, 21103322, -18130668, 5258114, 10624675, -6347962, 9729175, +3985193, -5485210, -5058398, -5874442, -8133058, 11192685, 15976741, 2694018, -11700028, 811749, +-12958453, -5494874, 8935679, -2084133, -6293201, -5287105, 2505040, -18097382, 816044, -2304787, +-9898826, 13324599, -13300440, -1376537, -2863670, -10505490, 10898480, -1309428, 6409165, -5577015, +-801548, -1076426, -6191196, 4477504, -5689221, -1578937, -5600638, 15455977, 7078643, -19412178, +-3933653, -31675920, 18219252, -541703, -13848585, 12112345, 1567126, 1372242, 4811974, -273804, +7422777, 8332774, 2183991, -2794950, 5052492, 8992051, -5246840, -3856881, 4032438, 862752, +2513630, 2282775, 4988068, 5953899, -4058744, 2858301, 2210298, -5637682, -4519380, 3583077, +1015223, -1058173, -3264712, -3637837, -5431523, 4996658, 5862094, 423054, -3580929, -12309913, +403190, 513249, 3981435, -8111583, 980863, 5418101, -3126736, 6350646, 3273302, -1027034, +2068027, 3183645, 478352, 783295, 2234994, 4030827, -3915937, -839666, -2222109, 1087701, +18823768, 913754, -14681272, -6030134, 8354249, 14049912, 14648523, 727997, -3695819, 21070572, +8878771, 23396834, 2614561, 2158758, -11394011, -4412005, -6846715, 6379637, 3136937, 12738336, +-14607721, 1159641, -8788040, 7884486, -12696460, 4921496, 13575855, -1895691, -653372, -7034083, +1717987, -7081864, -25035902, 3583613, -4056060, 1901060, -11322608, -2259153, 9432285, 18895172, +-2193655, -6626598, 10644003, 5294084, 2403571, 13058311, 4234301, -6712497, -3544959, 8489003, +-1400159, 7762080, -9319542, -7913477, 2549063, -7427072, -14797773, -6557342, -16819092, -3534221, +5330592, -12851079, -2120103, -14785425, -6789270, 55835, 5630166, -17652852, 7543573, 1484985, +-10850161, 13437879, -4983773, 3678103, 23278722, 26803818, 1459752, 9529996, 19229642, 23461796, +22870700, -2119566, -15675557, -23475754, -8850317, -15510738, 14537927, -3028489, -7242389, 3944928, +-645856, 1772211, -545461, -6849399, 7250442, 2278480, 2550137, 699543, 9892920, -5534602, +-380105, -2971044, 6777459, -6394133, -3060701, -545461, 9758703, -2467996, 5784247, 8424578, +-7875897, -1481227, -3489661, -8456791, -3757560, -1829119, 3431142, 438624, 11464878, 3329674, +7665443, -616328, -7856032, 2252710, 1815161, 78920, 31988916, 36668820, 1926293, 11732777, +11247982, -1569811, -26395796, -725850, -1065152, -10040560, 7435662, 6869264, -14376866, 7789997, +10045392, 1620813, -3839164, 5419712, -3685082, 18634790, -3226057, -8802535, 100932, 4182761, +-1781875, -1300838, -359167, -29861296, 8575439, -757525, -20603494, -8617852, 3533148, -2024003, +-14051522, 4778151, -16579648, -1594507, 1597191, -26665842, -4782983, 11293617, -8558259, 1128503, +16724066, 10156524, 12785044, 3873524, -7252589, -12527883, 12722230, -6709813, 7111392, -11916387, +-6192806, 8334921, 14289893, 1965484, 17124034, -11641509, 14809047, -12705587, -15169288, -10952703, +14758044, 15341086, -14346801, 7256347, -39549132, -3762928, 11573863, 3517041, -6240588, -15906411, +7210713, -22419192, 3549791, -11641509, 10511396, -17358110, -11009612, 17063368, 346282, 8489003, +1916629, 7373922, -3920768, 2939368, -1996086, -13065291, -2374580, -6194954, 3965866, -4343823, +2245731, 320512, 2099165, 839129, -2881923, -4115116, 501437, -8358543, 2865280, 2108829, +4639102, -5436355, 4607426, 4112968, 2810519, 3503083, 2698313, -5837398, 551903, 2496450, +-4185446, 7262790, -717260, -3147674, -4327717, -287226, 630823, 3315178, -2767033, 3124589, +-2673080, 7617662, 3432216, -6923488, -1762547, -1938104, -3163244, -3093450, -6977711, -29153702, +2304787, 35713728, -24088860, -2441689, -1934883, 1745367, -9429064, 4420595, -15134928, -15830713, +-5002563, -4440996, 3955665, -4103305, 8330626, -11907260, 554588, 22916334, -18748070, -16852378, +-3883187, 20033874, 2985539, -25446070, 10928007, -9542344, -10654203, 2353105, 34917548, -19713364, +-10741713, 24583320, 18485002, 1435056, -10075993, 520228, -3649649, -8017094, 7235410, 6304475, +-4059281, -20208894, 25839060, 11906186, 5012764, -27453968, -4028679, 8323110, 9594420, -3552475, +14502494, -2473901, 5029407, -6415608, -16295106, 10558103, -11586211, 6881612, 3795141, -14565308, +27358942, 4029753, 19742354, 19494320, 3649112, -29719026, -5528697, 124554, -11598022, -6111739, +1262184, -1099512, 12984223, 23979876, -6831683, -2517388, -10508174, -4913980, 10171019, -6925635, +5969468, 17790292, -15549929, 17682380, -3365107, 5205501, -6644852, -3792993, -5558225, 615791, +3466039, 3782256, -2851858, -57445, 4202089, 2164664, 9558450, 4271345, -4634807, 250719, +981937, 8449811, -4648765, 2350958, 4088809, 1190243, -224949, 152471, -11112691, 5363341, +-4027606, 5248987, 7137162, 797253, -1044751, 3433290, -281320, 2594697, 1013612, -1313723, +-4068408, -4358855, 8433705, 1288490, -1896228, 2207613, -5153961, -1118839, 8573292, 11231339, +1503775, -10260140, -51596516, 3425773, -13478144, 1816234, 25801480, 2504503, -5000416, 4741644, +978716, -17479444, -18920404, -16994112, -16362752, 21306260, -4276714, 25422986, 2238752, -23954106, +-857920, 2677375, 20534776, 4077535, -3335579, -4054986, 5855651, -12887586, -4962835, 22755274, +-4647692, -29487098, -22557706, 13498545, -2944200, -6109054, 6771016, -2092723, -15218143, 4608500, +8918500, 20486994, -4135517, -16965658, 220654, -21404506, 8232379, 24275692, -3893925, -29750164, +9361418, -322659, 1664300, 7193534, -9387188, 18337900, 1365263, -12344810, 9601936, -6677601, +-4146254, 26193394, -13420699, -4490389, -4412005, 16506633, 6619082, -28947542, 14681809, -23325968, +-5578626, -12582107, 2998961, -7670812, -7087233, -2402497, 13288629, -4315906, -8207146, 15744813, +-9188546, 16161962, -96637, -8531416, -5148592, 4023311, 4436165, 3205656, -9722732, -3211025, +2376191, -541703, -6364068, 143881, 5983427, 9225053, 3833795, 4745939, 743566, 9067213, +-5142687, 2944737, 7161321, -2724620, 891206, 2922725, -1801202, 1429150, 2831994, -8886824, +7497403, 3195456, -8946417, -7330973, 512175, -10519449, 908922, -7754027, 10028749, -18149994, +-45097, -3845070, 1905892, -4728222, 5658620, -3029563, 2634426, 2026151, -3741454, 816581, +-25115896, 5081483, 41649372, 27008902, 12453795, -20714628, 15521475, 19465866, 28983514, 13884019, +3473018, 936840, 18173618, 31188978, -7010997, -3907347, 17761300, -35121560, 12788802, 31145492, +-6438693, -10927471, 8149164, 24154896, 19575924, -13173202, -22348326, -1427003, 11289322, -3906273, +2740726, 244813, 26276074, -15107547, 16840566, 25274272, -10142028, -3192771, 17945984, -2810519, +62878320, -26487064, 11333345, 42899208, -24764782, 7991324, 2890513, -35014184, -1073742, 6380174, +-15377057, 33986612, 2586107, -4821638, 2656974, -14329085, 46782396, 12765180, -37497748, 36042292, +-15126338, 1202054, 11097122, 13296682, 24004036, 11564736, -6496138, -23584740, -31542776, -11984569, +-12652974, -2316061, -9691594, 19672560, -12074227, -21056614, 2321967, 5617281, 4238596, 7452305, +-11850889, -11694659, -7019587, -7794292, -24879134, -10676215, -8485782, -17345226, -8276939, 5967320, +-7326678, -16283832, -796180, 6072547, 10788421, -2739116, 5061082, 11581379, -704912, -8196945, +-524523, -5055714, 6526740, 9182640, -13203803, 11374147, -6856916, -75699, 1708323, -6339372, +12143483, 4469451, -17137456, 10294500, 1563905, -6318971, 12598750, -14621142, 5732708, -2942053, +6140730, -3686693, -4031901, 2135136, -2385318, -1728188, 4412542, -2876018, -9834938, 4268124, +-943282, 2702608, -460098, 7910793, -4518843, 10077067, -48168060, 27967216, 1482838, 16822314, +28275918, -46601468, 10806675, 23665270, 5608691, 17605070, -17666812, 19401978, 5917928, -18395882, +467078, -11671037, -33773476, 18435610, 10778220, 30854508, -16989816, -22963042, -7763691, 7080254, +-4540854, -38720740, -18820546, 11635603, -2689187, 5558762, -16074452, -5242545, 12994960, -11060615, +-5242545, -16644609, -3673808, 5789616, -18044768, 1722282, -39620000, -32942400, 10291279, -34258268, +3132642, -35831300, -24816322, -17385490, 16927540, 33075006, 41113576, -9882183, 18356690, 22017076, +10904385, 9443022, -15743203, 45414448, 46631532, -31768262, 31827856, -25029996, 16086263, 32539746, +31214748, 37734508, 45349484, 31899258, -35837744, -25702694, -128849, 747861, 13743358, -8714489, +-6777996, -21700322, -11811697, -32119912, 7164006, 26717380, -10709501, 6449967, 28170154, 13082470, +-19063750, 21415244, -1190780, 7494718, -1971927, -3923453, 6353331, -6892349, 9669582, 7940321, +-7016903, -8759049, 8362302, -6001143, 423054, 157303, -545998, 2252710, 945430, -11621645, +10861435, -4984310, 5259725, 6076842, -4152697, 6554120, -8106214, -6119792, 5581310, -6688338, +-8378408, -3837553, 3502009, -3409667, 2222109, -7765838, 386010, 2756295, 7190849, 10536092, +-2408403, 5907191, -6914361, -61740, -1199907, 3149822, 2548526, -696858, -5332739, -7654706, +-1719061, 1583232, 59855736, -43806520, -22310744, 23627688, -14063334, 22574348, -17590038, -19587198, +6614787, -46321224, -2102387, 31189516, -7525857, 16045998, -26584774, -6502581, -10495826, 1090385, +33244658, 10089415, 7392713, -5893769, 18253612, 5912023, 45426796, 11216844, 26527328, 1934346, +-20720532, -19558744, 26444114, -12800613, 12239046, -202400, -34088620, 24647744, -30368104, 59077276, +-43972948, 26917634, 24068996, -25196962, -21205328, -15617575, 21824340, -1597191, 22840100, -217433, +3007014, -40284644, -21654688, 9465034, -19802484, 6644852, -12060805, 11933567, 6769942, 31076772, +-18380850, -6260989, -7815230, -15108621, 42066520, 7867307, 4000225, -39049844, -12632036, 21144660, +12473122, 13503914, 36450852, 23395224, 32240708, 37250788, -1030792, 16556025, -15396384, 49520972, +3776350, -8047695, 18066244, -4109210, 37982544, 803696, -7573101, -7714298, 4608500, 26786100, +-20157892, 13900662, -6368363, -2062658, 7983808, 5432060, 10452877, -6387153, 6832756, 12582644, +-3192235, -4600984, 8508330, -1236951, -1241246, -811749, 2348273, 1517734, 4140349, -8909373, +11946988, -6848326, -3785477, -1771674, 7341173, -10095858, 1123671, -7181186, 10008348, 18115636, +-5921150, -4817880, -2296197, 12491912, 6161668, 13043816, -940061, -7330973, 5992016, 6351183, +-1744294, 6295349, 4891968, -17339856, 2822867, 20202452, -2569464, -9381819, -90555624, 63006096, +-39123392, -27054536, 505732, 13085692, 16056735, 3117073, -14629732, 49086108, 24639154, 7021735, +-24630026, 16230145, -987306, 18423800, -23528368, -15963320, 12351252, 36740760, -42074572, 1902134, +13424994, 4642323, -10477573, -6014565, -5443871, 1867237, -2296197, 9648107, 45913736, 3151432, +-20999706, 31172872, -7412040, -29780766, -38834556, 36990944, 11855720, -4938139, 13523778, 8684961, +30436822, -41394896, -4600984, -20970714, -6207302, 23929948, -17724256, 9426379, -20410758, 9913858, +63308892, 4968741, -36581312, -40655088, -2747169, 19594178, 18846316, -16209743, 3712462, 31061740, +-13225278, -59706488, 33872260, -20497732, -34300684, 15078020, 56489020, -39085276, 28323698, 39699992, +13361643, -34152508, -28898688, -17497696, 13977434, 12493523, -12140799, 35634808, 17035988, -2115272, +-1323387, 2245731, -29962766, -11215233, -21301428, 10913512, 9265318, 7158637, 9358734, 7378217, +21533356, -10831908, -5659693, 4283693, -243203, -16786342, 14246943, -556735, 8806830, -4138201, +6551436, -10788958, -3663070, -6480032, 9940702, 2019708, 1780264, 355409, 5850283, 16098611, +-6680285, -30559766, 2173790, -15065672, -3292093, 9192841, -13297219, -8385387, 17052094, -16238734, +-3970697, 159988, 8000987, -17396766, 886911, 51881056, 17078400, 3438658, -3800509, 8222715, +14602352, -4653597, 6814503, -7860864, -69793, -6213744, 24371792, -27349814, -3067144, 16341814, +-37976636, 12285754, -9263171, 2855080, -4440460, -10639708, 6797323, -2946348, -15461345, 41605884, +-31753230, -8949101, 29557428, -18953154, -2886755, -5988795, 6513318, 29217052, 2288144, -28536836, +39106216, -21139292, 13945222, 24340116, 10870562, -9120900, 2176475, -21499532, 5268851, -13032005, +-10209674, 52329344, -12145631, -20900922, 6842957, -9778030, 12456479, -8168491, 13675713, 33658048, +-18502720, 11120207, 25760676, -30289720, 13885092, 16430397, 7556458, 20572894, -23463944, -6224482, +36018668, -24877524, -5452461, 10242423, -10050223, 34304976, -34092912, 5763309, 12319577, -15799574, +11983496, 13089450, -32468342, 11528229, 27710056, -336618, -8313446, -1344325, 17828946, -3718368, +-30491046, 24762634, 11771968, -13440563, 5092221, -7423314, 11009075, -4327717, -13645648, 16037945, +900333, -3533148, -11864847, 11134166, 2124935, -15852724, 5657546, 10567767, -2188823, -5210869, +2317135, 9766756, -1450088, -10211822, 10406169, 6777996, 1270237, -548682, 8699456, 1642288, +3050501, -12132746, 15373299, -8501888, 16394964, -10829760, -29272350, -79017200, -124175024, 11244761, +118921200, 9714142, 269223584, 277875808, 138346272, 290901344, 194031056, -40325984, -4212289, -64085208, +-233616688, -205110992, -126789584, -238713216, -186827312, -54391464, -117102824, -98085240, 34651260, 58589796, +-28486370, 15241765, 52328808, -40500468, -23728620, 73723648, 65488052, 7392176, 73199128, 124958856, +41676752, 90340344, 171029360, 82029040, 43244416, 153177856, 128028680, 16895328, 91884384, 179509776, +35380328, 42089604, 144956224, 62307092, -15951509, 102373232, 96621728, -9345312, 85252416, 110114912, +-2163590, -81248432, -38059316, -190421136, -314287456, -279601824, -298102944, -455097952, -408842784, -382656896, +-465287232, -452123680, -371037920, -334665984, -301154528, -174696720, -67630704, 58051316, 124479424, 239014400, +356793664, 389540640, 434030592, 566548608, 559120448, 439674720, 481080352, 425180288, 175382848, 191153968, +162276752, -8012799, -27868970, 46160160, -7788923, -74445744, 8225936, 47942036, -48818208, -20209968, +42142756, -24434606, -94445256, -32204202, -26680336, -136161200, -96990024, -27353572, -107255536, -121290952, +-10044318, -44222056, -122783992, -60032904, -56684980, -172022560, -163262448, -148197840, -265502000, -286903808, +-239680656, -255543568, -275618784, -198210064, -169496048, -147489184, -107604504, -59253368, -28294170, -9793062, +19046570, 90465432, 124541168, 193751344, 317908640, 359896800, 398432832, 465948128, 455149504, 400463840, +340593056, 237868176, 100573640, 22897008, -27807228, -80320184, -93940064, -92386896, -93635656, -95720864, +-89842128, -81698328, -87977576, -89980640, -85673320, -91633128, -100242392, -95832528, -92408368, -90067072, +-79397304, -60669096, -45656040, -30153354, -9175661, 6481106, 13610214, 18625662, 19735912, 16254841, +14357002, 10757819, 2500208, -4358855, -10530186, -18099530, -20423644, -20269024, -22377854, -21937620, +-18388902, -17877264, -15977278, -10517838, -10438918, -11436961, -6577743, -4523138, -6694244, -2720862, +-1421634, -3080565, 4247723, 11662984, 14088030, 21960704, 30303142, 34162708, 39686036, 45851996, +46901580, 46369540, 48393008, 48171280, 45485852, 42730092, 38726648, 32052268, 25676926, 21016886, +14746233, 8097624, 1962800, -5575405, -14497125, -21969294, -29196650, -34973920, -40098352, -43163348, +-43328168, -41832980, -37799472, -30536680, -23768886, -17652316, -12147241, -7795903, -6109054, -4038880, +-2404108, -1554778, -1009317, 251792, 747861, 1286880, 1642288, 2337536, 2318746, 2529199, +2358474, 2331630, 1730335, 1425392, 785442, 409096, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 1612223, -6466610, -3228742, 1795296, -682900, 381178, 286689, -2597382, -2976949, 1945083, -557809, --2367601, -3052648, -1862405, 2657511, -272194, 3572339, 760746, -4572530, -4698694, -3358128, -1378685, 1145146, 2444373, -382252, 2796561, -2152316, -389768, -4944581, -752693, -937377, -1021665, 1834488, 1864016, 3619584, -1807644, -2455111, 1972464, 1091995, -2371896, -2442226, -116501, 1673427, 813896, 4020626, -1534914, -1300301, 4581120, 1379758, 8586176, 3628711, --2408940, -103079, -5284421, 78383, -6023692, -418222, -2253784, 4140885, 438624, 2212982, -3047279, 1628330, 2921652, 1922535, 413391, -5075578, -563714, -2554969, 3482145, 5063230, --3569655, -2561948, -1536525, -2081985, -2694555, -4355634, -986232, 1275605, -2556579, -2135136, --902480, -3585761, 410706, -740882, -2407329, 743566, 125628, -39192, -1187022, 186831, -221191, 1298691, -370978, 828929, -442382, 592169, -175020, -826781, 215822, 1013612, -172872, -960462, -963146, -126165, 1770600, 383326, -346282, 257698, -524523, -600759, --10133975, -10829223, -862752, -3104188, 414464, -2347737, -640487, 6029597, -1079647, 3242700, --1491427, -2894808, -4006131, 737661, -830002, -4779762, 5510980, 1658394, 376883, 2940979, -2801929, 4547834, 3200288, -299574, -3384434, 3160022, 733903, -4558034, -2016487, -2054605, --1367947, 4078072, -1398012, -6951405, -2356863, -793495, 1450625, -2159832, -4525822, 149250, --442919, 5257577, 777389, -40802, 1918777, -119185, 7090991, -1222455, 651761, -1566589, --2814814, 3758, 3045132, 1377611, 830539, 2878702, -2641405, -4399657, -3148211, -633508, -578747, -1027034, 125628, -3302830, -731218, 1730335, -1053878, 3444564, 1797981, -195421, -639413, -3231426, -2750927, 5344550, 1214939, 2275796, 1551557, -952409, -313533, -4063039, -287226, -2322504, 998043, -794032, 1035087, 1098975, 3144990, -330176, -1097364, 181999, -674847, 417149, 114890, 106837, -945430, -750546, 383863, -347892, -813896, 1271847, --643708, 649614, 974958, -927176, -271120, 727997, -274878, 1309965, -789737, 645856, --628139, -468688, -1643899, 1539746, 6983080, -362925, 3574487, 2136746, 4774930, 5900748, --1351841, 507343, 3607773, 3600793, 2382096, 6752226, 1357210, -2172180, 287763, 5913633, -2068564, 2807835, 5101885, 6892349, 4528506, -1527935, -4701916, 3339874, 2258616, -2689723, --4538707, 276489, -2647847, 1240172, 1745367, -1627793, -2259690, 2313914, 1813013, 4084514, --2702608, -5495948, -2762201, -2361695, -3673271, -1248225, -4196720, 2551748, -5748277, 2505577, -506269, 1362042, -2545305, 5532992, 4214974, -3860639, 4854387, 1848447, -694711, 1623498, --3482145, -1088774, 3330210, 1207423, 1410897, 898722, 3975529, 1633698, 4910222, -2362769, --264677, -281857, 1926830, 2863670, -1093606, 1918240, -2528125, 1334661, 1751273, 1582159, -5395016, 239981, 4036733, 4522601, 2556043, -4036196, -740882, -590021, -1022739, 411780, -2316061, -892279, 119185, -118112, 309775, 877247, -614180, 1023813, 1618129, -1037772, --529355, 1547262, 108985, 75699, -16643, -784368, 432718, -346282, 184684, 1220308, -1947768, 152471, -189515, 1023813, 796716, 374736, 506806, 441845, 533650, 10201, --187368, 920734, 1097364, -859530, 615254, -251792, 892279, 1095754, 162135, 274341, -1155346, 66035, 23085, -146566, 545461, 19514184, 16643, 17294760, 1235877, 11005317, --2477123, -1729261, 2830384, -7968238, 8720931, -4900558, 5803575, 4524211, -3387119, 2726767, --380105, 466004, -1640678, 2602213, 3361886, 4479114, 7020124, 1880122, 2144799, -147103, -8281234, -9541807, 95563, -610959, 2181844, 4232691, -5227512, 2073396, 2158221, 1306207, -3229816, 1945620, -4066260, 1991791, 7397545, -1293859, 2167348, -1155346, -1311576, -245887, --5551245, 8457327, -268972, 921807, 6101538, -769873, 342524, 7846369, -11497091, 3219078, --352187, 3497177, 9052717, 2839510, 2083059, 3279745, -1135482, -2478733, -1878511, 2335389, -700617, 5021354, -1924145, 4140349, 1753957, -1303523, 695248, -3167539, -2243047, 505196, --1088774, -4405563, -2983929, -4510790, 2574833, 4112968, -1227287, 1311039, -1086627, -2982855, --264141, 1734630, 1552631, -5404143, -360240, 562641, -972810, 360240, -1257352, 161061, --1341640, -2580739, -183610, -1693291, -1533840, -2127620, -37044, -2080912, -790811, -2018635, --1700807, -24159, -877247, -1056562, -249108, 317291, 867583, -1066226, -112743, 385473, --7794292, -9462887, -3825742, -1376537, -3612604, 7668127, 3205119, -6025839, 6728603, -896038, --4990215, 1529545, 2904472, -2698313, -4563403, -4014721, -8633958, -4281009, 3663607, -5389647, --8765491, 2514167, 3485366, 756988, -3251827, 6591164, 765578, 6098317, -420370, -1335735, -3411278, 5781026, -8182450, -3824132, 2180233, -1771137, 1957431, -5270999, -425202, 1490354, -1893007, -4490925, -8305930, -2275259, 2378875, -1346472, -1076426, 555661, 2641405, -765041, -1452773, -2733747, 4766340, -6243272, -4737886, -1593433, -4641249, -1329829, -1274532, 1891396, --3410741, 2610266, 5182952, -397821, 1198833, 1457605, 2475512, 5140539, -1956358, -922881, --985695, -2056753, 5275294, -2099702, -9240622, -5834713, -3913789, 8914205, 137976, 5137318, -2317672, 824097, 1359894, -558883, -209917, 4320200, -1428077, -917512, 1372779, -692564, -679142, -1855963, -1165010, 1032403, -263067, 1130650, -279173, 690416, 1597728, 1203665, -1494649, 65498, 1041530, -175020, 1533840, 1738388, 2735357, 1767379, 2172717, 571768, -1452773, 1302449, 904091, 1353452, 1804960, -754841, 148713, -292058, -755914, 803696, -1073205, -2150705, -8431558, -19400368, -1874753, 1404991, 147640, -6252936, -2855080, -7105487, --1908039, -8392366, -9736691, -7508140, -1817308, -4958003, -10966662, -6773701, 2191507, 3419868, --3078955, 6604049, 3561602, -2383170, 8019778, 1774358, 598611, 1341104, -11142219, -368293, -1771674, 4206384, -3553549, -3047279, 6521908, 12868796, -9678172, 3487514, -2902324, -464930, --8541079, -716186, -176094, -4288525, -5556614, -3950833, -4740570, -2455648, 2685965, 9446781, --4487704, 3555696, 6280853, 5784247, -2034741, 671089, -2153389, -1813013, -8779450, -4285304, -4830765, -3119220, 974421, -2978560, 2386391, 1328756, -1056025, -319438, -4152697, -3335579, -661425, -1200980, 1682554, -10275709, -10978473, -1167157, -1694902, -4670240, -130997, 3449933, --5453535, -4116189, -4667556, -7915625, 5485747, -578210, -1296543, 2142652, -421444, 1920387, -3578245, 1272384, 1937030, 1162862, 2596308, -823560, 370441, 426276, 501437, 883153, --825707, -689342, 32212, 819802, 928787, -687732, 738734, -993748, -1983201, 990527, -608812, -758599, 2304787, 1076963, 35970, 912681, -1600949, -1619203, -547071, -872952, --794569, -2159295, -448824, -1709397, -12221329, -2243047, -14688251, -3126736, -10445360, -1095217, -1808181, 2760053, 11057393, -6847789, 2369211, 3156264, -6205691, -2606508, 8870718, 1089848, --2763275, 1265405, -7548405, 6862821, -9634685, -3004867, 4104378, 2770254, -1121523, 1756105, --2009508, 3245385, -4187593, -7004555, 354335, 3585761, 2694018, -5575942, 1450625, 6547678, --6729677, -8230231, 6533182, -5571110, 4219269, -3973382, 2295660, -38118, -6066642, -7591892, --4888210, 2233920, -441308, 3014530, -4166655, -3805341, -9990631, 5268315, -7198902, -3101503, -3704946, 8876624, -1268089, -1687385, -13036836, -10038949, -3521873, -3496640, 4719096, -1247688, --7693360, -1085016, 265214, -4078608, -1167694, -8904004, 5883032, 2464238, 7453916, 9392020, -4750234, 504122, 3902515, 8390755, -821949, -1782411, -699543, -2405182, -8351564, 580357, -473520, 1892470, 4269198, -1668595, 839666, 117038, -3366181, -1629403, 2872260, 3011846, -2602213, -1985886, 691490, 1258425, 910533, 1131187, 1070521, 515396, 2154463, 2391223, -1414118, -343061, 922344, -271120, 773094, 1757715, 450972, 778463, -91268, -449361, --643708, 83752, -1557463, -545998, 1469953, 7139310, 3801583, 20806970, 10125385, 13468481, --4136054, -548145, -181999, -20591146, 1123134, 8853001, -4029216, -1614908, 752156, 12947716, --2150168, 7495255, -1490891, 7179038, 4000762, 8870718, 12538083, 1594507, 8389145, -2593087, -7268696, -987306, 13418552, 7102802, -170188, 7597261, 6196027, -2258079, 5919002, 3522410, -5119601, -4006131, -3150359, -10806675, -601295, 7655243, 1534914, 972273, -2451890, -4042101, --3162170, -3563212, 18873696, -12097312, 4861366, 5715528, 3307125, 1627793, -7153268, -9600326, --2388539, -1427540, -376883, -16634945, -8184060, -8548596, 478889, -387621, 5018133, -540092, -4466766, 5904507, 10728828, 1964411, -2671470, 3592740, -6634651, 1843078, -4846334, 1801739, -4198331, 2340757, 6864432, -4575751, -5134634, 24427090, 3420942, 4440460, 3167002, 8296803, --5788542, -3024731, 5295158, -597000, -64961, 969052, 1795296, 4795331, -2297808, -356482, -981937, 2764348, 708133, -2516314, 4715337, 180389, -1015760, 114354, -457414, -2474438, --2245731, -1081258, -2506114, 1074, -933619, 1135482, 3402688, -300648, -245350, -3650185, --689342, 1814087, -323196, 224949, 418222, 2885144, -1410897, -426276, 1009317, 1090922, --3107946, -2690260, 32094144, 3280281, 4908074, 3449396, -1850594, -13100724, 8880382, 9079024, --5037460, 3891240, 4285841, -7915625, -958315, 7453379, 4494147, -13829258, 3604015, -3852049, --6885370, -266825, 4136591, 985695, -15569, -355945, 6023692, -1945083, 3444027, -10785737, -4394826, -1192390, 4314832, 2324114, -1842004, 7524783, -10285910, -4567161, -10159208, 8839043, -4328254, 14477261, 7303055, -135828, 3225521, -11904039, -9127, 3360275, 3856344, 3507378, -874026, 1991791, -3044595, 3275986, 10545218, 14001057, 6175626, -6506339, -3462818, -1540283, --2714419, 5155572, 7190312, -5030481, 4278325, 7784092, 2478196, -10951093, -21386790, -10675678, -4358318, 9298604, -3992172, 2732136, -765041, -2054068, -32212, 9709310, 1835562, -8158291, -13287555, 5920613, -15329812, 640487, -1817845, -5012764, -1695975, -2403034, 12885, 5260261, -2260764, -4207458, -2183454, 3089155, 5741835, -2609193, 4369593, 1066763, -3559991, -980863, -579284, 86973, -661962, 253940, -1766842, -1347009, 1275068, 308164, -1573032, -1744831, -102542, -1139777, -2616709, 1578937, -914828, -1413581, 738734, 2682207, -2935610, -4679367, --41339, -718870, -6808060, -1216013, 1686312, -42413, -4116726, -526670, -1529008, 1280437, -954557, 2109366, 1677722, -678605, -748398, -1305133, -3361886, -19872814, 6162741, 9026948, --10209674, 6508486, 11719892, -28165858, 6300717, 927176, 6397354, -10670309, 16034187, -22277996, -78920, -1837709, -1531156, -2517925, -6138582, -8581882, -1095754, 7632157, 1077500, -38118, --3932580, 5297306, -600759, -2973728, 4454418, 9483288, -6191196, 6770479, -1012002, 4013110, -2402497, 6346351, 10379862, -2584497, 2926483, -13345537, -6297496, -2947958, -4697084, -12174622, -1548873, -4584341, -7499013, 11223286, -10475962, -3815005, -4800700, -6039261, 8094403, -9120363, -5243618, -3336116, 8310225, -4468914, 9075266, -11853036, -3041374, 1285806, 10934987, -18999862, --6821482, 492848, 255014, -3541738, 7737921, -9944460, -18856518, 3954591, -16528645, 8318278, --5753109, -131533, -17293686, -7043747, 19133006, 10509785, -13996762, -12076911, -9851581, 412317, -5949604, -2658048, -6152004, 12115566, 4599910, -2338610, -2473901, -4793184, -761283, 4647155, --4314832, 5009543, -420907, -3764539, 841277, -2918430, 2080912, 4205847, -2432562, 1768453, -3382287, 2101850, -215822, 4917201, -4672388, 4633196, -1196148, 4055523, -5463736, -3085934, -994285, 202937, 5982353, 1796907, 3655554, -2134599, -3193308, 1764158, -6287832, -790811, --1208496, 2523830, -1194538, -1457605, -1956895, -14485851, -6203007, 18226768, 779000, -15046881, -14167486, -6634114, 950798, -15688442, 2420751, 6213207, -13826573, -3382824, -12355547, -90194, -795643, -4169876, -3425237, 12069932, 1865090, -8178155, 2058900, -17520246, 10537702, 16695075, --5390721, 6972880, 11851425, -882616, -2410014, 1459752, 1447941, 6941204, 1194001, 1607928, -3652333, -9789304, -694711, -11253351, -11493869, -4713190, 4847408, 6839199, -348429, -13537737, -2682207, 3561065, 6678674, 14492830, -14835891, 21745420, -18009334, 806380, -3616363, -3111704, --8700530, -16712255, -22548578, -8738648, -2567317, 5761699, -1695438, 950798, 3337727, -149787, -15909633, 7533910, -16286516, -2528125, -314606, 10421738, -11250130, 769873, -22692460, 4273493, -17762374, -15841450, -6208375, 2266669, -154082, 4459250, 24883430, 394063, -3261491, 1316944, -12678207, -8572218, 3409130, 4652524, -1860258, -894427, -148713, -308164, 5653251, -1816771, --1276142, -4851166, 8223789, -1750199, 2433099, 854699, 1461900, 2079301, 5983427, -4123706, --1051730, 6355478, -4574140, -6436009, 5350456, 291521, 2618320, 3631395, 2040646, 6576132, --5076115, 3080029, 3626563, -2229088, 9264244, 3213173, 5669894, 2112587, -5568425, -1998234, --940598, -932008, -985158, 2724083, -9254044, -18939732, 22632868, 9592809, -11002632, 14606647, -14726906, 20782274, -7618735, -7235946, 15269146, -2277943, -2940979, 5260798, 6829535, 2662880, -3304977, -20753282, -2127083, 32749, 249108, 1117765, -2265059, 8763344, 17120276, 1705102, -1246077, -308164, 898185, 15681462, 4254702, -1118302, -3341485, 4009352, 3560528, -2469606, -1891396, -8961986, -1778653, 13647259, -13452911, -6584185, -11587822, 15253576, -13880261, 7009924, --5625334, 4493610, -2938831, 3627100, -11128797, 2582349, 17052630, -11143293, 989990, -29573534, --1211181, -10438381, 906775, -27597850, -1114544, -1341640, -8410083, -5913633, 22652194, -24172612, -4146791, -6518150, -8915278, 6532109, -8074002, -18873160, -13142600, 1861332, 1112397, 3930432, --9248138, -12694313, 7363722, 643708, 1534377, 8509404, -13991393, 10610180, -10144176, -4781909, --4291746, 2551748, 487479, 3057480, -1701344, -3561602, 1003949, -2007360, 3096135, 6626598, -3960497, 2466385, 1985886, 1826435, 1869921, -665183, 7286412, 1400696, -1249836, 5388574, -5613523, 2098629, -2925947, -261456, -4323959, 7183870, 2655901, 5787469, -2688113, 5939940, -5373004, 7762080, 3913252, -2129767, -3907883, 6535330, 1437740, 5661841, 1393180, 1566053, -1596117, 1727114, 19176492, 6420976, -2261837, 3851512, -9249212, -10238128, -7961796, 18200998, --16253767, -20737712, 10049150, -19313394, 7305740, 498753, 5428839, -8768176, -1830730, -10621991, --4179540, -8256538, 4082903, 9239548, 6762426, -15651398, 18126910, 1924682, 6471442, 1386201, -8835285, -2106145, 8492761, 1779190, -3495030, 5032628, 2128693, 6750615, 5021891, -11955041, -4889821, -3693135, 3488587, -2650532, -4170950, -3888556, -8022462, 7374459, 8369818, 8284992, --1424855, 15384573, 18891950, 7205345, 2621004, 8208220, 19568408, 9285719, 21328270, 13302587, -15937013, -17258252, -16917876, 3168612, -3315715, -4904316, 1476932, -8857833, 7240241, 4992363, -3475166, 15797427, -3653407, -10755135, -8609262, -8042863, 2002529, -4014184, -34492344, -15400142, --13354127, -5242545, -6882148, -3986804, -5140539, -10183367, 467078, -6267968, -5556614, 1931125, --5579163, -2152316, -8633421, 142808, 543850, -1753420, -12350715, 4756677, 44023, 216896, --9278740, 2448668, 3393024, 3227668, 1086090, 10476499, -6958921, -3059627, 2270964, 805843, --743566, 4089346, -4925791, -4606353, -868120, 7310571, -759136, 5209796, 6406481, -1764695, --8003135, -7583839, -856846, 7631083, 625992, -6155762, 813359, -1673964, -3918621, -3335579, --1256815, 40265, -6014565, -5513665, 5204427, 15183246, 10672994, -33934000, -24689082, -7968775, --109522, 10900627, -4420058, -1003949, -26631482, 3589519, -13852343, 9830643, -1751273, 13093745, --11207717, -3046743, -13339095, 2143189, 11223823, -5486284, 3402688, -7949985, 756988, -18326088, --4856535, -1074279, 1467268, 13240847, 17647484, 410706, -15903727, -11494406, -5040144, 1453846, --4098473, 4918275, -18311594, -5920076, -2394981, -4981089, -10235444, -2619930, -4651987, 12378633, -18357228, 12118250, 4613869, 7333657, 7757248, -8971113, 30573724, 18295486, -23917600, -20952462, -22481470, -17770964, -10063645, 3282966, 2566780, -17251810, 16640314, 915365, -51509544, 13649943, -32451700, -22568442, 22378928, 29700236, -9886478, -3249143, 16003048, -18796924, -12301860, 6069863, --10111964, -11811160, 13569412, -22769232, -6847789, 2757369, 547608, 1137093, -2158221, 8141648, --5904507, 3396246, 1234266, -6156836, 11984032, 5968394, -383863, -7784628, 9243843, -5949067, -7133404, -6322729, 8675834, 751619, 1798518, 8638253, -6810208, -7794292, 2305324, -7202124, --4345433, -483721, 752156, -4845260, -8462159, 3860102, -19864224, -162672, 9142912, -7486665, -5382668, -2401424, 2700998, -8473434, 193810, 4405026, -3901441, 2834142, 17825724, -8088497, --7478075, 17395154, -12688944, -2272038, 14743549, -10485089, -6685117, 11100343, 6804839, 7299834, --1808181, -10803990, -8680666, 10267119, -8159364, -710817, 3040300, -15282567, 9983651, 8198556, --6197638, -4968741, -11953968, 377420, -7385197, 10405095, -16781510, 1343251, 6473053, -826781, --7960185, -17348446, -3879966, -7502771, -1649804, -13399761, 18434536, -17868674, 3198677, -6438693, -4683125, -25332254, 26272852, 5082020, 2690260, -10383083, 6049999, 4378183, 1226213, 2496987, --4595615, -19945828, -3388192, -8563091, -12773233, -17110612, -6123550, -4213900, -17022030, -6418829, --694711, 11978127, 5564667, -15358266, -13437879, 8502962, -3441880, -19525458, -8371965, 5000416, -16325171, 16270947, 16496433, 26306138, -4894115, -17540110, -16801912, -889595, 11615739, 20544440, -9290551, 4570919, -20612084, 11888469, 4500052, 20061256, 13943074, 9209484, 6957847, 222801, -1921998, 11909944, -2613488, 1046361, 2234994, 3609920, 4186519, 3997004, 5819144, 14272176, -4589710, 1264868, 5007395, -97711, 4686346, 1540820, 1015760, 8963060, -10391673, -7275138, --2606508, 4189741, -5160403, 3728569, -2138894, 11230803, 614717, 2087891, -5522791, -6864432, -834297, 6660958, -5820755, -414464, 7640747, -5847598, -128312, 3757560, -10388989, 13245142, -7205345, -2027761, 3352222, -200253, 113280, -2824478, 7601555, -1976222, 12601971, 32409824, --28541668, -1304060, -11122355, -15807627, -8764955, 14567455, -7818451, -9408126, 8109435, 18887656, -12588012, -15023796, 9783936, -15744813, 11602854, 136902, -1341640, -7874823, -11009612, -9669045, -2294050, 1594507, -17639430, 10924249, 2238752, -2123325, -6486475, -8138426, 13123273, -17972290, --491237, 18505404, 22681722, -20543366, -1018981, -4489852, -12663711, -17294760, 18671296, 3668976, -11975979, -4112968, 1723356, -2101313, 11912629, -5043902, 912681, -14912663, 20921322, 16695075, --24896852, -31287226, -6256694, -153008, -9868761, 510027, -7274601, 1832340, -15371151, 16030965, --19838454, -18110266, -6327561, 2379949, 14082661, -7762080, 20298016, 1596654, -6958921, -7384660, --5063767, -13160317, 12434467, 8617852, -3131568, 7207492, 6255620, -10415833, -9708774, -8906688, -15737297, 3596498, -10970957, 961536, 4549981, 4789426, -16456167, 8103530, 6783364, 2764885, --32749, -5024575, 2347737, -5461051, -14651207, 2726231, -1845762, -3018288, -1617055, 1126355, --4373888, -5974837, -208306, -2375654, 7476465, -4263829, -1966558, 3943854, -1897839, -7283728, -5902359, -7261716, -2200634, -12410308, 6522982, 977642, -1672890, 1837172, -5377836, 10452340, --644245, 1531156, 12181064, 8410620, -3339874, -4253092, 5868536, 2983929, -4150549, 2053531, --3813394, -3813931, -732829, 2443837, -2261300, -834834, -44958108, 66379256, -45756436, -11115912, -11451993, 36049272, 28450938, -10239202, -12060805, 2322504, 1173600, 18792092, 6289443, -23874650, -6811282, -4838818, -9018358, 2792803, 9458592, 264677, -18697066, -15662672, 8015483, 7335268, -10771241, -5773510, 13448079, 3631932, 15855946, -1318018, -6065031, 12471511, -1953673, -12558484, -1763084, 15391015, -1136019, -16779364, 8019778, 20331838, -18895708, 7624641, -20262046, 8182450, --25473988, -15961172, 27009438, 26002806, 11554536, 33753076, -6911676, 40223980, 14325863, 15724412, -20919712, -35763120, 29955250, 10746545, 11822971, 14401025, 2868501, -17287780, 2381023, 33985540, -37830608, -121870, -43876848, 21655762, 687195, 9400610, -1989107, 1352378, -9938017, -32384590, -6119255, -5119601, 6885370, -5783174, 15715285, -18076444, -20195474, -13566728, 2386391, -5680631, --9346386, 10848014, 3687230, -13827110, -15415174, -11531450, -9262634, -1301375, -2798171, 8070244, --659278, -11830487, 9128416, 2150168, -3413962, 780073, 4293357, -5786932, -3382287, 6241661, --11010686, -4276177, -7645579, 6447283, 7425462, -8680129, 2312840, -23663122, 165893, 1394791, -1021129, -4448513, -4752382, -10563472, -8354785, 5684389, 3288871, 5458367, 8143795, -7747048, -463856, 3445638, 1960653, -7590281, -107374, 2158221, -412854, -6195491, -1049583, -1458141, -43478492, -1488206, -51951924, -26083336, -30622580, -11529840, 176094, 17238924, -44283260, -9762998, -6870337, -20462834, -23801636, -21463026, -23757074, -3673808, 26074210, 13571023, -10429254, 12708271, -5089000, -11830487, 13431973, -14979772, -3404299, 6457484, 8876624, -29897268, 15049565, -14632417, -8562017, -5762236, -24175834, 6852084, 7461432, 3877819, 3933116, -9878425, -34291556, 1533303, -7043747, 7605850, 314069, 4415764, -14250165, -27917, -1240709, 31250718, -4815195, -51019916, --23142894, -5416491, -42530376, 9819906, -13013751, -10705743, -20513838, -9030169, -30625264, -29848948, --36822364, -3520263, 38703560, 5462662, -24538222, 11430519, 314069, -2577517, -13812615, -19236084, -8110509, 16089484, 12120398, 6737193, -7363185, -31237298, -22405234, -31448288, 4626217, 3589519, --1122597, 11360188, -16655346, -19997904, -2852932, -7352447, -20572356, 4575214, 11827803, 1717450, -4325032, 19841676, -3564823, -4037806, -3383897, 1353452, -7092065, -3886946, 8834211, 13552769, -14770929, 9987410, -4080219, 700617, 2314987, -6136972, 13686450, -5573794, 19969988, -6993281, -9386114, -9498857, -2633352, 20282446, 6743099, 2796561, -70330, -7915625, 8012262, 1753957, --9828496, 4480188, -8399882, -10835666, 3183108, 3261491, -6653441, -6504191, 6966974, 386547, -9776956, 2112050, 6685654, -3590056, 2992519, 2758980, 1052267, 28945396, -3593814, 23230404, -29528438, -24960202, -31704912, -33000382, 8519068, 11777337, -45669460, -26124138, 713501, 1443646, -13498008, -52762600, 5452461, 12355547, 36477156, -42252276, 4806606, 7064148, -5497558, 23477902, --13675176, 41055056, -2478196, 3707094, 12119324, 15998216, -15714748, -32990180, 19033148, 23435490, -5139465, 29625074, 5483063, -3685619, -11307575, -24930674, 38428684, -17249126, 36402532, 14542222, --2981244, 10904922, -15778099, 19877646, 19324668, -13632763, 14297409, 7490423, -38726108, 28065464, -28230284, -3553012, -19893214, 3759707, -1240172, 1294933, -7213398, 52978960, -1282048, -30678952, --17511118, 6046777, -44637596, -58034136, 7648263, 72688024, 15753403, -5093831, -46707232, -11740293, --8016020, 49543520, -34178812, -21665962, -81878720, -11784317, -15246597, -19189914, -15614890, 29994978, -31680752, -31862214, -12701292, 10537165, 4115116, -5814312, 12823162, -5594732, -10388452, -10019622, -11004780, 4529580, 3359201, -4054449, 10780905, -11458436, -4211216, 9788230, 4202089, -652835, --760209, -8557722, 3829500, -5683316, 20831128, -5798206, -11809013, -9440875, -18402862, -6157910, -13642964, 15742666, 42696808, 16344498, -5192616, -32828046, -45671072, -21268678, 370978, 18526342, -14706505, -12135430, -18372796, -9210557, -7712688, 11208791, 19205484, 4272956, 787053, -2496987, --7282654, -5946382, -5589900, -1055488, -2608656, -2786897, 2295660, -4957466, 1655710, 656056, -1206886, -3776350, -786516, -2832531, -2594697, -3693135, 2165737, -2356863, 3976066, -72847480, -21467320, 34605624, -46181100, -4420595, 26592290, -11473468, -20524574, 18532784, -19784230, -11276437, -2001455, -15416785, 25052008, -8472897, -10763188, -4467840, 13462038, 44313860, -6455336, -20653960, --22404696, 8089034, 21743808, 12562779, -19740744, -3332895, 24686936, 511101, -17842368, 5937793, --15870441, 40999220, -18116172, -44704168, 15876883, -7628399, 21758304, -29985314, -28885802, 29368450, --1887101, -38337416, -19827716, -36632312, 47774532, 22690312, 13242458, -49919868, 9345849, 20463372, --34442416, 1966558, -24604258, -19112068, 20002200, -16998944, 22881438, -14051522, -29857538, -6919729, --7027640, -4553739, 10925860, 3582540, -18469970, 58872728, -6772090, 26100516, 27261768, 16291348, --7556995, 6190122, -12910135, 33123324, 8623757, -8361228, 4417374, 14079440, 23446764, -5710159, --49555868, -3381750, 16030965, -4955319, 26846230, -11165304, 9546639, -3992172, 1118302, 10909754, -3062312, 6657736, 13898514, 8023536, 16066399, -3716221, 5502390, 8317204, 1503239, -16024523, -19671488, -7948374, 529355, 3026341, -9214852, 5005248, 1402844, -2511482, 13804025, -5997385, -1394791, 19404126, 205622, 10832981, -9054328, -6047314, 10851772, -2401424, -6793028, -10078141, -932008, 1428614, 2826625, -3336653, 2882460, 6082748, -1782411, 4168803, 5487895, -2671470, -6606197, 1219771, -6497212, 4431870, 2718178, 1354525, -351114, 52712672, 10596221, 22933514, --2121177, 5672041, 8130373, -18933826, 8221641, 18505404, -15569, -21816286, -11954505, -16144782, --6878390, -21869436, -21465710, 2815888, -17151416, 25031606, 7857643, -5648419, -18215494, -8495982, --6127308, 13546864, -4337917, -20687784, -17398912, 4495220, 4272956, 12074764, 4329327, -4466229, -5344013, -18032958, -55507084, 2434173, 66901632, -1849520, -48987324, -7813620, 31736050, 9007083, -5010616, -793495, -21393768, -26300770, -15995532, 6115497, -1823751, -24325084, 8820252, -49027052, --8988830, 45591616, 13193603, 58618252, -7893613, -23008140, -7167227, -5069135, 15479599, 3490198, --629750, -31842888, -16249472, -15190762, -2345052, 37121940, -5171141, -8990440, 12001212, 15074261, -2214593, -19654308, -30964030, -2165201, 12284680, -1312113, -15462419, -3859565, 8418136, -6426345, --5932424, -10030359, 18400176, 19659676, -10042170, -5128728, -9241696, 8013872, 11392401, -5333813, -1494112, -2028298, -1792075, -3641596, -14894947, 1641214, 8225399, -8904541, 2024003, -2132988, -485868, -7977365, -2867965, -3354370, -5417565, -6056978, -6404870, -1766842, 26103738, -13047574, --23085, -5141613, 1265942, 14535780, -9999221, -1386201, -2991445, 4575214, -860067, 4159139, --7723425, -23335632, -77349680, -119533232, 28228672, 106943072, 33788508, 261635984, 246497840, 109606488, -254168112, 107329088, -46032924, -778463, -76384920, -209089744, -114103856, -109488384, -214237264, -156017904, --89550608, -134979552, -90709176, 19754166, -7822746, -43185360, 51223928, 47837344, -150324, 51286740, -139244992, 58450748, 26275000, 133257264, 119276072, 40073120, 142080736, 173792096, -214212, 102969696, -175247008, 66381404, 70100848, 178624464, 106760536, -14097156, 139450064, 97872640, -37932616, 54760832, -110939544, -49594524, -87913152, -19827180, -185880272, -312124928, -302142912, -335987232, -537495296, -465254464, --383784864, -497411424, -426440864, -274030720, -324816576, -248250720, -68639480, -22129282, 105247640, 195800576, -322770016, 432374880, 471657728, 550104256, 597494912, 558134784, 528687936, 560846464, 426725408, 338336576, -401393696, 218952608, 35086124, 50626928, -80950472, -296396224, -248829472, -184104848, -265709760, -271743104, --169476192, -192939056, -243306672, -178327584, -162139840, -228902960, -205345072, -133903120, -170331424, -182976352, --59811716, -57549340, -107942192, -11280195, 41246720, -30848066, 5945846, 40933724, -58194660, -75332656, --71488656, -156803888, -173153216, -121218472, -91039888, -66340064, 22643068, 106434656, 144649136, 204889264, -262537392, 274130592, 290806336, 321578176, 305036096, 277293280, 288833856, 261546864, 194545920, 133432824, -35226248, -51449412, -132254928, -192621232, -215822640, -227415840, -202896944, -155451504, -136138656, -114747032, --93809064, -80983216, -71295384, -53454628, -41395968, -38137700, -37186900, -25935160, -19567872, -15622407, --5378910, 8182450, 20080582, 35090956, 36464808, 37493992, 43423192, 42872364, 35161288, 37822556, -31475130, 16682190, 1272384, -12828530, -27831924, -33510408, -40012452, -43001748, -40049496, -37157372, --36057324, -25798258, -20160040, -12216498, 435939, 10737418, 15800111, 24293408, 29350196, 33176474, -37527812, 39187820, 40920836, 42649024, 42935716, 42518564, 39662412, 39084204, 36958192, 34553548, -31209380, 29785598, 24390582, 18534394, 11311870, 5504538, -2037425, -8892193, -15265924, -22412750, --31423054, -37441916, -43879532, -47260748, -50237696, -51478940, -51516524, -49303004, -47184512, -42711304, --38785164, -32626182, -25567940, -15730855, -8205535, 2355253, 10057740, 17258252, 23497766, 29421600, -30994632, 33355252, 32648730, 30091078, 25649008, 22355304, 16324097, 11494406, 7216619, 4673462, -1080721, 195421, -782221, -639950, -1612760, -823023, -1232119, -561567, -988916, 27917, --376347, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +6466610, -3228742, 1795296, -682900, 381178, 286689, -2597382, -2976949, 1945083, -557809, +-2367601, -3052648, -1862405, 2657511, -272194, 3572339, 760746, -4572530, -4698694, -3358128, +1378685, 1145146, 2444373, -382252, 2796561, -2152316, -389768, -4944581, -752693, -937377, +1021665, 1834488, 1864016, 3619584, -1807644, -2455111, 1972464, 1091995, -2371896, -2442226, +116501, 1673427, 813896, 4020626, -1534914, -1300301, 4581120, 1379758, 8586176, 3628711, +-2408940, -103079, -5284421, 78383, -6023692, -418222, -2253784, 4140885, 438624, 2212982, +3047279, 1628330, 2921652, 1922535, 413391, -5075578, -563714, -2554969, 3482145, 5063230, +-3569655, -2561948, -1536525, -2081985, -2694555, -4355634, -986232, 1275605, -2556579, -2135136, +-902480, -3585761, 410706, -740882, -2407329, 743566, 125628, -39192, -1187022, 186831, +221191, 1298691, -370978, 828929, -442382, 592169, -175020, -826781, 215822, 1013612, +172872, -960462, -963146, -126165, 1770600, 383326, -346282, 257698, -524523, -600759, +-10133975, -10829223, -862752, -3104188, 414464, -2347737, -640487, 6029597, -1079647, 3242700, +-1491427, -2894808, -4006131, 737661, -830002, -4779762, 5510980, 1658394, 376883, 2940979, +2801929, 4547834, 3200288, -299574, -3384434, 3160022, 733903, -4558034, -2016487, -2054605, +-1367947, 4078072, -1398012, -6951405, -2356863, -793495, 1450625, -2159832, -4525822, 149250, +-442919, 5257577, 777389, -40802, 1918777, -119185, 7090991, -1222455, 651761, -1566589, +-2814814, 3758, 3045132, 1377611, 830539, 2878702, -2641405, -4399657, -3148211, -633508, +578747, -1027034, 125628, -3302830, -731218, 1730335, -1053878, 3444564, 1797981, -195421, +639413, -3231426, -2750927, 5344550, 1214939, 2275796, 1551557, -952409, -313533, -4063039, +287226, -2322504, 998043, -794032, 1035087, 1098975, 3144990, -330176, -1097364, 181999, +674847, 417149, 114890, 106837, -945430, -750546, 383863, -347892, -813896, 1271847, +-643708, 649614, 974958, -927176, -271120, 727997, -274878, 1309965, -789737, 645856, +-628139, -468688, -1643899, 1539746, 6983080, -362925, 3574487, 2136746, 4774930, 5900748, +-1351841, 507343, 3607773, 3600793, 2382096, 6752226, 1357210, -2172180, 287763, 5913633, +2068564, 2807835, 5101885, 6892349, 4528506, -1527935, -4701916, 3339874, 2258616, -2689723, +-4538707, 276489, -2647847, 1240172, 1745367, -1627793, -2259690, 2313914, 1813013, 4084514, +-2702608, -5495948, -2762201, -2361695, -3673271, -1248225, -4196720, 2551748, -5748277, 2505577, +506269, 1362042, -2545305, 5532992, 4214974, -3860639, 4854387, 1848447, -694711, 1623498, +-3482145, -1088774, 3330210, 1207423, 1410897, 898722, 3975529, 1633698, 4910222, -2362769, +-264677, -281857, 1926830, 2863670, -1093606, 1918240, -2528125, 1334661, 1751273, 1582159, +5395016, 239981, 4036733, 4522601, 2556043, -4036196, -740882, -590021, -1022739, 411780, +2316061, -892279, 119185, -118112, 309775, 877247, -614180, 1023813, 1618129, -1037772, +-529355, 1547262, 108985, 75699, -16643, -784368, 432718, -346282, 184684, 1220308, +1947768, 152471, -189515, 1023813, 796716, 374736, 506806, 441845, 533650, 10201, +-187368, 920734, 1097364, -859530, 615254, -251792, 892279, 1095754, 162135, 274341, +1155346, 66035, 23085, -146566, 545461, 19514184, 16643, 17294760, 1235877, 11005317, +-2477123, -1729261, 2830384, -7968238, 8720931, -4900558, 5803575, 4524211, -3387119, 2726767, +-380105, 466004, -1640678, 2602213, 3361886, 4479114, 7020124, 1880122, 2144799, -147103, +8281234, -9541807, 95563, -610959, 2181844, 4232691, -5227512, 2073396, 2158221, 1306207, +3229816, 1945620, -4066260, 1991791, 7397545, -1293859, 2167348, -1155346, -1311576, -245887, +-5551245, 8457327, -268972, 921807, 6101538, -769873, 342524, 7846369, -11497091, 3219078, +-352187, 3497177, 9052717, 2839510, 2083059, 3279745, -1135482, -2478733, -1878511, 2335389, +700617, 5021354, -1924145, 4140349, 1753957, -1303523, 695248, -3167539, -2243047, 505196, +-1088774, -4405563, -2983929, -4510790, 2574833, 4112968, -1227287, 1311039, -1086627, -2982855, +-264141, 1734630, 1552631, -5404143, -360240, 562641, -972810, 360240, -1257352, 161061, +-1341640, -2580739, -183610, -1693291, -1533840, -2127620, -37044, -2080912, -790811, -2018635, +-1700807, -24159, -877247, -1056562, -249108, 317291, 867583, -1066226, -112743, 385473, +-7794292, -9462887, -3825742, -1376537, -3612604, 7668127, 3205119, -6025839, 6728603, -896038, +-4990215, 1529545, 2904472, -2698313, -4563403, -4014721, -8633958, -4281009, 3663607, -5389647, +-8765491, 2514167, 3485366, 756988, -3251827, 6591164, 765578, 6098317, -420370, -1335735, +3411278, 5781026, -8182450, -3824132, 2180233, -1771137, 1957431, -5270999, -425202, 1490354, +1893007, -4490925, -8305930, -2275259, 2378875, -1346472, -1076426, 555661, 2641405, -765041, +1452773, -2733747, 4766340, -6243272, -4737886, -1593433, -4641249, -1329829, -1274532, 1891396, +-3410741, 2610266, 5182952, -397821, 1198833, 1457605, 2475512, 5140539, -1956358, -922881, +-985695, -2056753, 5275294, -2099702, -9240622, -5834713, -3913789, 8914205, 137976, 5137318, +2317672, 824097, 1359894, -558883, -209917, 4320200, -1428077, -917512, 1372779, -692564, +679142, -1855963, -1165010, 1032403, -263067, 1130650, -279173, 690416, 1597728, 1203665, +1494649, 65498, 1041530, -175020, 1533840, 1738388, 2735357, 1767379, 2172717, 571768, +1452773, 1302449, 904091, 1353452, 1804960, -754841, 148713, -292058, -755914, 803696, +1073205, -2150705, -8431558, -19400368, -1874753, 1404991, 147640, -6252936, -2855080, -7105487, +-1908039, -8392366, -9736691, -7508140, -1817308, -4958003, -10966662, -6773701, 2191507, 3419868, +-3078955, 6604049, 3561602, -2383170, 8019778, 1774358, 598611, 1341104, -11142219, -368293, +1771674, 4206384, -3553549, -3047279, 6521908, 12868796, -9678172, 3487514, -2902324, -464930, +-8541079, -716186, -176094, -4288525, -5556614, -3950833, -4740570, -2455648, 2685965, 9446781, +-4487704, 3555696, 6280853, 5784247, -2034741, 671089, -2153389, -1813013, -8779450, -4285304, +4830765, -3119220, 974421, -2978560, 2386391, 1328756, -1056025, -319438, -4152697, -3335579, +661425, -1200980, 1682554, -10275709, -10978473, -1167157, -1694902, -4670240, -130997, 3449933, +-5453535, -4116189, -4667556, -7915625, 5485747, -578210, -1296543, 2142652, -421444, 1920387, +3578245, 1272384, 1937030, 1162862, 2596308, -823560, 370441, 426276, 501437, 883153, +-825707, -689342, 32212, 819802, 928787, -687732, 738734, -993748, -1983201, 990527, +608812, -758599, 2304787, 1076963, 35970, 912681, -1600949, -1619203, -547071, -872952, +-794569, -2159295, -448824, -1709397, -12221329, -2243047, -14688251, -3126736, -10445360, -1095217, +1808181, 2760053, 11057393, -6847789, 2369211, 3156264, -6205691, -2606508, 8870718, 1089848, +-2763275, 1265405, -7548405, 6862821, -9634685, -3004867, 4104378, 2770254, -1121523, 1756105, +-2009508, 3245385, -4187593, -7004555, 354335, 3585761, 2694018, -5575942, 1450625, 6547678, +-6729677, -8230231, 6533182, -5571110, 4219269, -3973382, 2295660, -38118, -6066642, -7591892, +-4888210, 2233920, -441308, 3014530, -4166655, -3805341, -9990631, 5268315, -7198902, -3101503, +3704946, 8876624, -1268089, -1687385, -13036836, -10038949, -3521873, -3496640, 4719096, -1247688, +-7693360, -1085016, 265214, -4078608, -1167694, -8904004, 5883032, 2464238, 7453916, 9392020, +4750234, 504122, 3902515, 8390755, -821949, -1782411, -699543, -2405182, -8351564, 580357, +473520, 1892470, 4269198, -1668595, 839666, 117038, -3366181, -1629403, 2872260, 3011846, +2602213, -1985886, 691490, 1258425, 910533, 1131187, 1070521, 515396, 2154463, 2391223, +1414118, -343061, 922344, -271120, 773094, 1757715, 450972, 778463, -91268, -449361, +-643708, 83752, -1557463, -545998, 1469953, 7139310, 3801583, 20806970, 10125385, 13468481, +-4136054, -548145, -181999, -20591146, 1123134, 8853001, -4029216, -1614908, 752156, 12947716, +-2150168, 7495255, -1490891, 7179038, 4000762, 8870718, 12538083, 1594507, 8389145, -2593087, +7268696, -987306, 13418552, 7102802, -170188, 7597261, 6196027, -2258079, 5919002, 3522410, +5119601, -4006131, -3150359, -10806675, -601295, 7655243, 1534914, 972273, -2451890, -4042101, +-3162170, -3563212, 18873696, -12097312, 4861366, 5715528, 3307125, 1627793, -7153268, -9600326, +-2388539, -1427540, -376883, -16634945, -8184060, -8548596, 478889, -387621, 5018133, -540092, +4466766, 5904507, 10728828, 1964411, -2671470, 3592740, -6634651, 1843078, -4846334, 1801739, +4198331, 2340757, 6864432, -4575751, -5134634, 24427090, 3420942, 4440460, 3167002, 8296803, +-5788542, -3024731, 5295158, -597000, -64961, 969052, 1795296, 4795331, -2297808, -356482, +981937, 2764348, 708133, -2516314, 4715337, 180389, -1015760, 114354, -457414, -2474438, +-2245731, -1081258, -2506114, 1074, -933619, 1135482, 3402688, -300648, -245350, -3650185, +-689342, 1814087, -323196, 224949, 418222, 2885144, -1410897, -426276, 1009317, 1090922, +-3107946, -2690260, 32094144, 3280281, 4908074, 3449396, -1850594, -13100724, 8880382, 9079024, +-5037460, 3891240, 4285841, -7915625, -958315, 7453379, 4494147, -13829258, 3604015, -3852049, +-6885370, -266825, 4136591, 985695, -15569, -355945, 6023692, -1945083, 3444027, -10785737, +4394826, -1192390, 4314832, 2324114, -1842004, 7524783, -10285910, -4567161, -10159208, 8839043, +4328254, 14477261, 7303055, -135828, 3225521, -11904039, -9127, 3360275, 3856344, 3507378, +874026, 1991791, -3044595, 3275986, 10545218, 14001057, 6175626, -6506339, -3462818, -1540283, +-2714419, 5155572, 7190312, -5030481, 4278325, 7784092, 2478196, -10951093, -21386790, -10675678, +4358318, 9298604, -3992172, 2732136, -765041, -2054068, -32212, 9709310, 1835562, -8158291, +13287555, 5920613, -15329812, 640487, -1817845, -5012764, -1695975, -2403034, 12885, 5260261, +2260764, -4207458, -2183454, 3089155, 5741835, -2609193, 4369593, 1066763, -3559991, -980863, +579284, 86973, -661962, 253940, -1766842, -1347009, 1275068, 308164, -1573032, -1744831, +102542, -1139777, -2616709, 1578937, -914828, -1413581, 738734, 2682207, -2935610, -4679367, +-41339, -718870, -6808060, -1216013, 1686312, -42413, -4116726, -526670, -1529008, 1280437, +954557, 2109366, 1677722, -678605, -748398, -1305133, -3361886, -19872814, 6162741, 9026948, +-10209674, 6508486, 11719892, -28165858, 6300717, 927176, 6397354, -10670309, 16034187, -22277996, +78920, -1837709, -1531156, -2517925, -6138582, -8581882, -1095754, 7632157, 1077500, -38118, +-3932580, 5297306, -600759, -2973728, 4454418, 9483288, -6191196, 6770479, -1012002, 4013110, +2402497, 6346351, 10379862, -2584497, 2926483, -13345537, -6297496, -2947958, -4697084, -12174622, +1548873, -4584341, -7499013, 11223286, -10475962, -3815005, -4800700, -6039261, 8094403, -9120363, +5243618, -3336116, 8310225, -4468914, 9075266, -11853036, -3041374, 1285806, 10934987, -18999862, +-6821482, 492848, 255014, -3541738, 7737921, -9944460, -18856518, 3954591, -16528645, 8318278, +-5753109, -131533, -17293686, -7043747, 19133006, 10509785, -13996762, -12076911, -9851581, 412317, +5949604, -2658048, -6152004, 12115566, 4599910, -2338610, -2473901, -4793184, -761283, 4647155, +-4314832, 5009543, -420907, -3764539, 841277, -2918430, 2080912, 4205847, -2432562, 1768453, +3382287, 2101850, -215822, 4917201, -4672388, 4633196, -1196148, 4055523, -5463736, -3085934, +994285, 202937, 5982353, 1796907, 3655554, -2134599, -3193308, 1764158, -6287832, -790811, +-1208496, 2523830, -1194538, -1457605, -1956895, -14485851, -6203007, 18226768, 779000, -15046881, +14167486, -6634114, 950798, -15688442, 2420751, 6213207, -13826573, -3382824, -12355547, -90194, +795643, -4169876, -3425237, 12069932, 1865090, -8178155, 2058900, -17520246, 10537702, 16695075, +-5390721, 6972880, 11851425, -882616, -2410014, 1459752, 1447941, 6941204, 1194001, 1607928, +3652333, -9789304, -694711, -11253351, -11493869, -4713190, 4847408, 6839199, -348429, -13537737, +2682207, 3561065, 6678674, 14492830, -14835891, 21745420, -18009334, 806380, -3616363, -3111704, +-8700530, -16712255, -22548578, -8738648, -2567317, 5761699, -1695438, 950798, 3337727, -149787, +15909633, 7533910, -16286516, -2528125, -314606, 10421738, -11250130, 769873, -22692460, 4273493, +17762374, -15841450, -6208375, 2266669, -154082, 4459250, 24883430, 394063, -3261491, 1316944, +12678207, -8572218, 3409130, 4652524, -1860258, -894427, -148713, -308164, 5653251, -1816771, +-1276142, -4851166, 8223789, -1750199, 2433099, 854699, 1461900, 2079301, 5983427, -4123706, +-1051730, 6355478, -4574140, -6436009, 5350456, 291521, 2618320, 3631395, 2040646, 6576132, +-5076115, 3080029, 3626563, -2229088, 9264244, 3213173, 5669894, 2112587, -5568425, -1998234, +-940598, -932008, -985158, 2724083, -9254044, -18939732, 22632868, 9592809, -11002632, 14606647, +14726906, 20782274, -7618735, -7235946, 15269146, -2277943, -2940979, 5260798, 6829535, 2662880, +3304977, -20753282, -2127083, 32749, 249108, 1117765, -2265059, 8763344, 17120276, 1705102, +1246077, -308164, 898185, 15681462, 4254702, -1118302, -3341485, 4009352, 3560528, -2469606, +1891396, -8961986, -1778653, 13647259, -13452911, -6584185, -11587822, 15253576, -13880261, 7009924, +-5625334, 4493610, -2938831, 3627100, -11128797, 2582349, 17052630, -11143293, 989990, -29573534, +-1211181, -10438381, 906775, -27597850, -1114544, -1341640, -8410083, -5913633, 22652194, -24172612, +4146791, -6518150, -8915278, 6532109, -8074002, -18873160, -13142600, 1861332, 1112397, 3930432, +-9248138, -12694313, 7363722, 643708, 1534377, 8509404, -13991393, 10610180, -10144176, -4781909, +-4291746, 2551748, 487479, 3057480, -1701344, -3561602, 1003949, -2007360, 3096135, 6626598, +3960497, 2466385, 1985886, 1826435, 1869921, -665183, 7286412, 1400696, -1249836, 5388574, +5613523, 2098629, -2925947, -261456, -4323959, 7183870, 2655901, 5787469, -2688113, 5939940, +5373004, 7762080, 3913252, -2129767, -3907883, 6535330, 1437740, 5661841, 1393180, 1566053, +1596117, 1727114, 19176492, 6420976, -2261837, 3851512, -9249212, -10238128, -7961796, 18200998, +-16253767, -20737712, 10049150, -19313394, 7305740, 498753, 5428839, -8768176, -1830730, -10621991, +-4179540, -8256538, 4082903, 9239548, 6762426, -15651398, 18126910, 1924682, 6471442, 1386201, +8835285, -2106145, 8492761, 1779190, -3495030, 5032628, 2128693, 6750615, 5021891, -11955041, +4889821, -3693135, 3488587, -2650532, -4170950, -3888556, -8022462, 7374459, 8369818, 8284992, +-1424855, 15384573, 18891950, 7205345, 2621004, 8208220, 19568408, 9285719, 21328270, 13302587, +15937013, -17258252, -16917876, 3168612, -3315715, -4904316, 1476932, -8857833, 7240241, 4992363, +3475166, 15797427, -3653407, -10755135, -8609262, -8042863, 2002529, -4014184, -34492344, -15400142, +-13354127, -5242545, -6882148, -3986804, -5140539, -10183367, 467078, -6267968, -5556614, 1931125, +-5579163, -2152316, -8633421, 142808, 543850, -1753420, -12350715, 4756677, 44023, 216896, +-9278740, 2448668, 3393024, 3227668, 1086090, 10476499, -6958921, -3059627, 2270964, 805843, +-743566, 4089346, -4925791, -4606353, -868120, 7310571, -759136, 5209796, 6406481, -1764695, +-8003135, -7583839, -856846, 7631083, 625992, -6155762, 813359, -1673964, -3918621, -3335579, +-1256815, 40265, -6014565, -5513665, 5204427, 15183246, 10672994, -33934000, -24689082, -7968775, +-109522, 10900627, -4420058, -1003949, -26631482, 3589519, -13852343, 9830643, -1751273, 13093745, +-11207717, -3046743, -13339095, 2143189, 11223823, -5486284, 3402688, -7949985, 756988, -18326088, +-4856535, -1074279, 1467268, 13240847, 17647484, 410706, -15903727, -11494406, -5040144, 1453846, +-4098473, 4918275, -18311594, -5920076, -2394981, -4981089, -10235444, -2619930, -4651987, 12378633, +18357228, 12118250, 4613869, 7333657, 7757248, -8971113, 30573724, 18295486, -23917600, -20952462, +22481470, -17770964, -10063645, 3282966, 2566780, -17251810, 16640314, 915365, -51509544, 13649943, +32451700, -22568442, 22378928, 29700236, -9886478, -3249143, 16003048, -18796924, -12301860, 6069863, +-10111964, -11811160, 13569412, -22769232, -6847789, 2757369, 547608, 1137093, -2158221, 8141648, +-5904507, 3396246, 1234266, -6156836, 11984032, 5968394, -383863, -7784628, 9243843, -5949067, +7133404, -6322729, 8675834, 751619, 1798518, 8638253, -6810208, -7794292, 2305324, -7202124, +-4345433, -483721, 752156, -4845260, -8462159, 3860102, -19864224, -162672, 9142912, -7486665, +5382668, -2401424, 2700998, -8473434, 193810, 4405026, -3901441, 2834142, 17825724, -8088497, +-7478075, 17395154, -12688944, -2272038, 14743549, -10485089, -6685117, 11100343, 6804839, 7299834, +-1808181, -10803990, -8680666, 10267119, -8159364, -710817, 3040300, -15282567, 9983651, 8198556, +-6197638, -4968741, -11953968, 377420, -7385197, 10405095, -16781510, 1343251, 6473053, -826781, +-7960185, -17348446, -3879966, -7502771, -1649804, -13399761, 18434536, -17868674, 3198677, -6438693, +4683125, -25332254, 26272852, 5082020, 2690260, -10383083, 6049999, 4378183, 1226213, 2496987, +-4595615, -19945828, -3388192, -8563091, -12773233, -17110612, -6123550, -4213900, -17022030, -6418829, +-694711, 11978127, 5564667, -15358266, -13437879, 8502962, -3441880, -19525458, -8371965, 5000416, +16325171, 16270947, 16496433, 26306138, -4894115, -17540110, -16801912, -889595, 11615739, 20544440, +9290551, 4570919, -20612084, 11888469, 4500052, 20061256, 13943074, 9209484, 6957847, 222801, +1921998, 11909944, -2613488, 1046361, 2234994, 3609920, 4186519, 3997004, 5819144, 14272176, +4589710, 1264868, 5007395, -97711, 4686346, 1540820, 1015760, 8963060, -10391673, -7275138, +-2606508, 4189741, -5160403, 3728569, -2138894, 11230803, 614717, 2087891, -5522791, -6864432, +834297, 6660958, -5820755, -414464, 7640747, -5847598, -128312, 3757560, -10388989, 13245142, +7205345, -2027761, 3352222, -200253, 113280, -2824478, 7601555, -1976222, 12601971, 32409824, +-28541668, -1304060, -11122355, -15807627, -8764955, 14567455, -7818451, -9408126, 8109435, 18887656, +12588012, -15023796, 9783936, -15744813, 11602854, 136902, -1341640, -7874823, -11009612, -9669045, +2294050, 1594507, -17639430, 10924249, 2238752, -2123325, -6486475, -8138426, 13123273, -17972290, +-491237, 18505404, 22681722, -20543366, -1018981, -4489852, -12663711, -17294760, 18671296, 3668976, +11975979, -4112968, 1723356, -2101313, 11912629, -5043902, 912681, -14912663, 20921322, 16695075, +-24896852, -31287226, -6256694, -153008, -9868761, 510027, -7274601, 1832340, -15371151, 16030965, +-19838454, -18110266, -6327561, 2379949, 14082661, -7762080, 20298016, 1596654, -6958921, -7384660, +-5063767, -13160317, 12434467, 8617852, -3131568, 7207492, 6255620, -10415833, -9708774, -8906688, +15737297, 3596498, -10970957, 961536, 4549981, 4789426, -16456167, 8103530, 6783364, 2764885, +-32749, -5024575, 2347737, -5461051, -14651207, 2726231, -1845762, -3018288, -1617055, 1126355, +-4373888, -5974837, -208306, -2375654, 7476465, -4263829, -1966558, 3943854, -1897839, -7283728, +5902359, -7261716, -2200634, -12410308, 6522982, 977642, -1672890, 1837172, -5377836, 10452340, +-644245, 1531156, 12181064, 8410620, -3339874, -4253092, 5868536, 2983929, -4150549, 2053531, +-3813394, -3813931, -732829, 2443837, -2261300, -834834, -44958108, 66379256, -45756436, -11115912, +11451993, 36049272, 28450938, -10239202, -12060805, 2322504, 1173600, 18792092, 6289443, -23874650, +6811282, -4838818, -9018358, 2792803, 9458592, 264677, -18697066, -15662672, 8015483, 7335268, +10771241, -5773510, 13448079, 3631932, 15855946, -1318018, -6065031, 12471511, -1953673, -12558484, +1763084, 15391015, -1136019, -16779364, 8019778, 20331838, -18895708, 7624641, -20262046, 8182450, +-25473988, -15961172, 27009438, 26002806, 11554536, 33753076, -6911676, 40223980, 14325863, 15724412, +20919712, -35763120, 29955250, 10746545, 11822971, 14401025, 2868501, -17287780, 2381023, 33985540, +37830608, -121870, -43876848, 21655762, 687195, 9400610, -1989107, 1352378, -9938017, -32384590, +6119255, -5119601, 6885370, -5783174, 15715285, -18076444, -20195474, -13566728, 2386391, -5680631, +-9346386, 10848014, 3687230, -13827110, -15415174, -11531450, -9262634, -1301375, -2798171, 8070244, +-659278, -11830487, 9128416, 2150168, -3413962, 780073, 4293357, -5786932, -3382287, 6241661, +-11010686, -4276177, -7645579, 6447283, 7425462, -8680129, 2312840, -23663122, 165893, 1394791, +1021129, -4448513, -4752382, -10563472, -8354785, 5684389, 3288871, 5458367, 8143795, -7747048, +463856, 3445638, 1960653, -7590281, -107374, 2158221, -412854, -6195491, -1049583, -1458141, +43478492, -1488206, -51951924, -26083336, -30622580, -11529840, 176094, 17238924, -44283260, -9762998, +6870337, -20462834, -23801636, -21463026, -23757074, -3673808, 26074210, 13571023, -10429254, 12708271, +5089000, -11830487, 13431973, -14979772, -3404299, 6457484, 8876624, -29897268, 15049565, -14632417, +8562017, -5762236, -24175834, 6852084, 7461432, 3877819, 3933116, -9878425, -34291556, 1533303, +7043747, 7605850, 314069, 4415764, -14250165, -27917, -1240709, 31250718, -4815195, -51019916, +-23142894, -5416491, -42530376, 9819906, -13013751, -10705743, -20513838, -9030169, -30625264, -29848948, +-36822364, -3520263, 38703560, 5462662, -24538222, 11430519, 314069, -2577517, -13812615, -19236084, +8110509, 16089484, 12120398, 6737193, -7363185, -31237298, -22405234, -31448288, 4626217, 3589519, +-1122597, 11360188, -16655346, -19997904, -2852932, -7352447, -20572356, 4575214, 11827803, 1717450, +4325032, 19841676, -3564823, -4037806, -3383897, 1353452, -7092065, -3886946, 8834211, 13552769, +14770929, 9987410, -4080219, 700617, 2314987, -6136972, 13686450, -5573794, 19969988, -6993281, +9386114, -9498857, -2633352, 20282446, 6743099, 2796561, -70330, -7915625, 8012262, 1753957, +-9828496, 4480188, -8399882, -10835666, 3183108, 3261491, -6653441, -6504191, 6966974, 386547, +9776956, 2112050, 6685654, -3590056, 2992519, 2758980, 1052267, 28945396, -3593814, 23230404, +29528438, -24960202, -31704912, -33000382, 8519068, 11777337, -45669460, -26124138, 713501, 1443646, +13498008, -52762600, 5452461, 12355547, 36477156, -42252276, 4806606, 7064148, -5497558, 23477902, +-13675176, 41055056, -2478196, 3707094, 12119324, 15998216, -15714748, -32990180, 19033148, 23435490, +5139465, 29625074, 5483063, -3685619, -11307575, -24930674, 38428684, -17249126, 36402532, 14542222, +-2981244, 10904922, -15778099, 19877646, 19324668, -13632763, 14297409, 7490423, -38726108, 28065464, +28230284, -3553012, -19893214, 3759707, -1240172, 1294933, -7213398, 52978960, -1282048, -30678952, +-17511118, 6046777, -44637596, -58034136, 7648263, 72688024, 15753403, -5093831, -46707232, -11740293, +-8016020, 49543520, -34178812, -21665962, -81878720, -11784317, -15246597, -19189914, -15614890, 29994978, +31680752, -31862214, -12701292, 10537165, 4115116, -5814312, 12823162, -5594732, -10388452, -10019622, +11004780, 4529580, 3359201, -4054449, 10780905, -11458436, -4211216, 9788230, 4202089, -652835, +-760209, -8557722, 3829500, -5683316, 20831128, -5798206, -11809013, -9440875, -18402862, -6157910, +13642964, 15742666, 42696808, 16344498, -5192616, -32828046, -45671072, -21268678, 370978, 18526342, +14706505, -12135430, -18372796, -9210557, -7712688, 11208791, 19205484, 4272956, 787053, -2496987, +-7282654, -5946382, -5589900, -1055488, -2608656, -2786897, 2295660, -4957466, 1655710, 656056, +1206886, -3776350, -786516, -2832531, -2594697, -3693135, 2165737, -2356863, 3976066, -72847480, +21467320, 34605624, -46181100, -4420595, 26592290, -11473468, -20524574, 18532784, -19784230, -11276437, +2001455, -15416785, 25052008, -8472897, -10763188, -4467840, 13462038, 44313860, -6455336, -20653960, +-22404696, 8089034, 21743808, 12562779, -19740744, -3332895, 24686936, 511101, -17842368, 5937793, +-15870441, 40999220, -18116172, -44704168, 15876883, -7628399, 21758304, -29985314, -28885802, 29368450, +-1887101, -38337416, -19827716, -36632312, 47774532, 22690312, 13242458, -49919868, 9345849, 20463372, +-34442416, 1966558, -24604258, -19112068, 20002200, -16998944, 22881438, -14051522, -29857538, -6919729, +-7027640, -4553739, 10925860, 3582540, -18469970, 58872728, -6772090, 26100516, 27261768, 16291348, +-7556995, 6190122, -12910135, 33123324, 8623757, -8361228, 4417374, 14079440, 23446764, -5710159, +-49555868, -3381750, 16030965, -4955319, 26846230, -11165304, 9546639, -3992172, 1118302, 10909754, +3062312, 6657736, 13898514, 8023536, 16066399, -3716221, 5502390, 8317204, 1503239, -16024523, +19671488, -7948374, 529355, 3026341, -9214852, 5005248, 1402844, -2511482, 13804025, -5997385, +1394791, 19404126, 205622, 10832981, -9054328, -6047314, 10851772, -2401424, -6793028, -10078141, +932008, 1428614, 2826625, -3336653, 2882460, 6082748, -1782411, 4168803, 5487895, -2671470, +6606197, 1219771, -6497212, 4431870, 2718178, 1354525, -351114, 52712672, 10596221, 22933514, +-2121177, 5672041, 8130373, -18933826, 8221641, 18505404, -15569, -21816286, -11954505, -16144782, +-6878390, -21869436, -21465710, 2815888, -17151416, 25031606, 7857643, -5648419, -18215494, -8495982, +-6127308, 13546864, -4337917, -20687784, -17398912, 4495220, 4272956, 12074764, 4329327, -4466229, +5344013, -18032958, -55507084, 2434173, 66901632, -1849520, -48987324, -7813620, 31736050, 9007083, +5010616, -793495, -21393768, -26300770, -15995532, 6115497, -1823751, -24325084, 8820252, -49027052, +-8988830, 45591616, 13193603, 58618252, -7893613, -23008140, -7167227, -5069135, 15479599, 3490198, +-629750, -31842888, -16249472, -15190762, -2345052, 37121940, -5171141, -8990440, 12001212, 15074261, +2214593, -19654308, -30964030, -2165201, 12284680, -1312113, -15462419, -3859565, 8418136, -6426345, +-5932424, -10030359, 18400176, 19659676, -10042170, -5128728, -9241696, 8013872, 11392401, -5333813, +1494112, -2028298, -1792075, -3641596, -14894947, 1641214, 8225399, -8904541, 2024003, -2132988, +485868, -7977365, -2867965, -3354370, -5417565, -6056978, -6404870, -1766842, 26103738, -13047574, +-23085, -5141613, 1265942, 14535780, -9999221, -1386201, -2991445, 4575214, -860067, 4159139, +-7723425, -23335632, -77349680, -119533232, 28228672, 106943072, 33788508, 261635984, 246497840, 109606488, +254168112, 107329088, -46032924, -778463, -76384920, -209089744, -114103856, -109488384, -214237264, -156017904, +-89550608, -134979552, -90709176, 19754166, -7822746, -43185360, 51223928, 47837344, -150324, 51286740, +139244992, 58450748, 26275000, 133257264, 119276072, 40073120, 142080736, 173792096, -214212, 102969696, +175247008, 66381404, 70100848, 178624464, 106760536, -14097156, 139450064, 97872640, -37932616, 54760832, +110939544, -49594524, -87913152, -19827180, -185880272, -312124928, -302142912, -335987232, -537495296, -465254464, +-383784864, -497411424, -426440864, -274030720, -324816576, -248250720, -68639480, -22129282, 105247640, 195800576, +322770016, 432374880, 471657728, 550104256, 597494912, 558134784, 528687936, 560846464, 426725408, 338336576, +401393696, 218952608, 35086124, 50626928, -80950472, -296396224, -248829472, -184104848, -265709760, -271743104, +-169476192, -192939056, -243306672, -178327584, -162139840, -228902960, -205345072, -133903120, -170331424, -182976352, +-59811716, -57549340, -107942192, -11280195, 41246720, -30848066, 5945846, 40933724, -58194660, -75332656, +-71488656, -156803888, -173153216, -121218472, -91039888, -66340064, 22643068, 106434656, 144649136, 204889264, +262537392, 274130592, 290806336, 321578176, 305036096, 277293280, 288833856, 261546864, 194545920, 133432824, +35226248, -51449412, -132254928, -192621232, -215822640, -227415840, -202896944, -155451504, -136138656, -114747032, +-93809064, -80983216, -71295384, -53454628, -41395968, -38137700, -37186900, -25935160, -19567872, -15622407, +-5378910, 8182450, 20080582, 35090956, 36464808, 37493992, 43423192, 42872364, 35161288, 37822556, +31475130, 16682190, 1272384, -12828530, -27831924, -33510408, -40012452, -43001748, -40049496, -37157372, +-36057324, -25798258, -20160040, -12216498, 435939, 10737418, 15800111, 24293408, 29350196, 33176474, +37527812, 39187820, 40920836, 42649024, 42935716, 42518564, 39662412, 39084204, 36958192, 34553548, +31209380, 29785598, 24390582, 18534394, 11311870, 5504538, -2037425, -8892193, -15265924, -22412750, +-31423054, -37441916, -43879532, -47260748, -50237696, -51478940, -51516524, -49303004, -47184512, -42711304, +-38785164, -32626182, -25567940, -15730855, -8205535, 2355253, 10057740, 17258252, 23497766, 29421600, +30994632, 33355252, 32648730, 30091078, 25649008, 22355304, 16324097, 11494406, 7216619, 4673462, +1080721, 195421, -782221, -639950, -1612760, -823023, -1232119, -561567, -988916, 27917, +-376347, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -512175, -11112691, -5488432, 399969, -3257733, -293668, 4756677, 2197413, 3000035, -2619393, 3706557, --3826816, 4156455, 2018098, 5000953, 2055679, -899796, -5635534, 6063420, 4114042, 1569811, -672162, 602369, -2414845, -2681133, 3077881, 1950989, 1999307, 3032247, -3072512, -190589, -2771328, 3365107, -467078, -2437394, -4746476, 59056, 847719, -2807835, 1034013, 799938, --4280472, -2256469, -354872, 2199560, 17180, -2029909, 3936338, 780073, -1371705, -2896956, --682900, 387621, -5576478, 2600066, 3448322, -1890859, 4424353, 3683471, -604517, 3053185, -1756642, 5931887, 1831804, 1139777, -940598, 2256469, -4765266, 646393, 2252174, -2314451, -2582349, 3174518, 3428458, 2186138, 4512937, -938987, -2771328, -1395328, -1182727, 634581, --1066226, -3488050, 1653026, -1628330, -1869921, -2103460, 798327, 30602, -1097901, -820876, -1389959, 137439, -174483, -344671, -150861, 694174, 930934, -119722, -65498, -766115, -214748, -1404454, 129386, 994822, 1266479, -875100, -971200, 254477, 824634, -809064, --10548977, -7434589, -1020592, -4799089, -4045322, 1973538, -5994164, -5844377, 1704565, -2666101, --2330020, 2384781, -1870995, -4150549, -418222, -345208, -1133335, -1917166, -1082332, -4755603, --265214, -3439195, -2434710, -163746, 4249870, -972273, 6128382, -3205656, 3693135, 4176319, --4701379, 1614371, -1171452, 882079, -3321620, 1624571, 2190433, 3213709, -1643899, -4003447, --1357747, -2210835, 1293859, 1506997, -4790499, -639413, -3282966, -2689723, 925565, -3976603, --6293738, -1216013, 6220724, 1339493, 2189897, 306553, 1444720, 817118, 2301029, 2420751, -6972880, 491237, -3073049, -4020626, -840740, -1930051, -497679, -8100309, 1688996, -602369, -2592013, -1107028, 730681, -1953673, -931471, 7873212, 1598265, 7217156, -2445984, -1347546, -565862, 2034204, 714575, 2430415, -2398739, 2641405, -2798708, -1767379, 1450088, 1016297, --96100, 102005, 67646, -632971, 206158, -1096290, -91805, -392453, -169114, 446140, -554588, -616865, -1017370, -657667, 71941, 17717, 178241, 317291, -421444, -489089, --430034, 89121, -163746, 568546, 8607114, 9916006, 7635915, 5663452, 8026757, 3251827, -3489661, -734439, 2281702, 8442295, 903554, 2573222, -3136400, -2095407, 6474127, -4345433, --7916162, 2392834, -6613713, 5706401, 1348083, 6847789, -2180233, -434329, -1687922, 2247342, -2745021, -100932, -6738267, -1394791, 5775658, -3848291, 2604898, 1522566, -1300301, -1666447, -6417755, 4832375, 11194295, 4473746, 930934, 2674154, -944893, 673236, 3526705, 2094870, -9541270, -4093104, -2721399, 656593, 2457795, -1510218, 4422743, -4150549, 860067, -281320, --3179887, 979789, 958315, -4320200, -5832029, -3619584, 4618701, 2227478, 19864, -386010, -3485903, 252329, 1155883, 6033356, 2982855, -1453310, -962610, 5361730, -4660577, 604517, --4201552, -1903744, -5430450, 1466195, -1130650, -3233037, -2109366, 3136400, 1942399, 549219, -1850594, -3030100, -506806, -272194, 2335925, 53150, 166430, 417149, 697395, 1703491, -1927904, 1505923, 117575, 797790, 1744831, 83215, -1586990, 1453310, -805306, -329102, -357019, -282931, 1282048, 1150514, 584116, -18254, -445603, -477815, 550830, 718333, -267899, 1104344, -2266669, -1465121, 1135482, -96637, -893353, -126165, 1211718, 95026, --835908, -1069447, 714038, -1055488, 90194, 18685256, -325881, 9153112, -1654099, -1434519, -9827959, -9615358, -3322157, -750009, 4859756, 3370476, -2049773, 1872606, 918049, -8706436, -2212982, 4661114, 4148402, -9757092, -3420942, 1104344, -6987375, -1921461, 547608, 319438, -964757, -1072131, 4471598, -3148748, 3558917, 7322383, 7323993, -2119566, -4179540, -744640, -8249559, -466541, -428960, 66572, 824097, -4272956, 745714, 3471407, 533650, 828392, -3331821, -2191507, 2247879, 1304060, -891743, 5797669, 583579, 4611185, 923955, -1535451, -2024003, 3085397, 2669322, -126165, -4513474, -4114042, -5437966, -2420751, -177704, 13959, --623307, 4064650, 3501472, -2628520, -5332739, 180926, 2791192, 3350075, -3256659, -599685, -3173444, -273267, -422517, 4209068, 1981054, 2000381, -1551020, -1340030, -235686, 1821066, -2712809, 71941, 2057289, 746251, 183610, 405338, 693637, 2522220, 1899986, 2837900, --1419487, 1344325, 204548, 367757, -398358, 306016, 432181, 136365, 379568, -451508, -1363115, 1336809, -1219234, 337692, 765578, 844498, -392990, 2627446, 1023813, -379031, --4952098, -14006962, -3583613, -4789963, 946503, 2252174, -2333778, -2864206, -26261040, 453119, -8477729, -6213207, -9817221, 7290707, -11116449, -1765232, -4966593, -5937793, -3627100, -3760781, -403727, 4385162, -814433, 2406792, -2844342, 3284576, -2585034, -4072166, 1749662, -1581085, --6296422, -8119636, 3828963, 294742, 3778498, 1072668, 8467528, 1109712, 2926483, -4164508, --7078106, -2138357, -3524021, 6963216, -3313031, 92879, 1810866, -3593814, 9841918, 6444062, -116501, -7950522, -9996000, -3476239, 3291556, -9087614, -253403, -4468377, -8590471, 702764, --13435731, -3058017, -1458141, -5078799, 8981313, -649614, -1453310, -239981, 5611912, 7112466, -2130304, -7306276, -2369748, -1918777, 3848291, 1727651, 2192581, -4145180, -5206037, 3960497, -2721399, 926639, 1322313, -345208, 2273648, 552440, 3446175, 899259, 770410, -386010, --146029, 466004, 2204929, 3114925, 1923609, -874563, 1233193, -4099010, 2027225, 2296197, --717260, -425739, 689879, -994822, -298500, -311922, -1280974, -1386201, -754841, -471910, -706522, 1502165, -297427, -1938641, -60666, -2700998, 840740, 3492882, 1488206, 2026151, -1447941, 5503464, -14974403, -22257594, 2765959, -5159330, 4986994, -6305012, -10969346, 172336, -10168872, 1966558, 6255620, 4857071, 3886946, 2358474, -3506841, 2607045, 6772090, -10645613, --4890894, -3612604, -2317672, 3755949, -822486, 1222455, 7027104, 5974837, -2422362, -6052146, -1445793, -3436511, -2486249, -5870147, -3949759, -8883603, 2168422, -3387656, -12885, 7689065, --1498407, 1388348, 2122251, -5696737, 4761508, 4539781, 6560563, -5804112, 10323491, -1774358, --7444789, -6444062, -8149701, 7549479, -2829310, -8824547, 2711198, -1443646, -6088116, 6447283, -8854612, -3135863, -7285339, 5352603, 1787780, 4175245, -579821, 11732777, 7011534, -7000797, --3368328, -3354906, -2634426, 3853660, 5470715, 6924561, 42950, 834297, 2749316, -2881923, -2617783, -861678, 4590247, 6352257, -8691940, -3998078, -4356708, -2841121, -4452808, -439697, --3142306, 1384053, -146029, -370441, -345745, 1083942, -2125472, 5383742, -658204, 2246805, -848793, 1053341, -1045825, 132070, 169651, 244276, -1826972, 309775, -1183264, -1992328, --2868501, -926102, -158377, -550293, 120796, 273267, -574452, -456877, -1074279, -1071594, -1726040, -65498, 584116, -1258425, -20787104, 60666, -3834869, 1449015, -108985, 7893076, -5662378, 8173860, -1381906, 11122355, -5200132, 7590281, 9126269, 1777043, 9097278, 2063195, -2318209, -2483565, -998580, -3765076, 7202660, -360240, -886374, 10321880, 6122476, 188442, -2699924, -776852, -399432, 6749004, -3859028, -6485401, -60130, -814970, 3326452, -18514530, -11142756, 12175695, 4715874, 2451353, 270583, -5815386, -12461848, 8304856, -5049808, -5539971, --3826279, 7467338, -5228586, 4648765, 4566087, -4301410, -2962991, -10611790, 4894652, -6863895, -4097936, 802085, 3666828, 6628745, 10365904, 4576288, -4837744, -11331734, -2054605, 7118372, -11431055, 8723615, -1772748, -2158758, -7405598, -12138651, -1330903, 8597451, 3751654, 2793876, --2750927, 11373610, -413391, 3905736, 1060857, -2058900, 1036698, -5625334, -2824478, -2785823, -1888175, -1323387, -4129074, -2301029, -2859375, -2945811, 1205812, -4242354, -1838783, 964757, -732829, 3501472, 159988, 605054, 561567, -789200, 2739116, -740882, 3118683, 1262184, --913754, -2277943, -139586, 3155727, 2138357, -248571, -2958696, -643708, 2594697, 2470143, -322659, -397284, -364535, -1648731, -1334661, 2077690, 7845295, 27154394, 14717242, -1217086, -2554432, 2506650, 5954972, 10805064, -1500554, 2214593, 18107582, 1966021, -788127, 11042361, -7626788, -7416872, 4505958, 1220845, 7298760, 5143760, -12563853, 9704479, -5807333, -695785, -1096290, 7630010, 1363115, 2168959, 5721970, 6679748, -6214281, 6859600, 20031728, -3384434, -9133248, 9489730, -4948339, 7476465, 1968169, -4662724, -5180805, 3707094, -4626754, -12288975, --1578401, -428423, 1312113, -15770583, -3855807, 5051419, -10041634, -6628209, -16560320, 5644124, -7670812, -11191611, -4012573, -5317170, 12048457, 447213, -6837051, -4655208, -7617662, 4002910, -10089952, -6987375, 3911642, -2879776, 4884452, 11525545, 4811974, 9114457, 9140764, 11511586, -1774358, -6204081, -6315213, 4712653, 7230578, 1201517, 4870493, -4926865, 2072859, -460098, --1542967, -5178657, 771484, -2206003, 344671, 4512400, 1878511, 1999844, 1509144, 4968204, --2939905, 341987, -765041, 1598802, -524523, 336081, 2091112, 715112, -1651415, 2744484, --521839, -3515968, 2338073, -2460480, -2070174, -2556579, -5496485, 3172370, -1226213, 2712272, --248571, -344671, 788127, 4300873, 2822331, 3857954, 1760937, 132070, 1557463, 4421669, --1673427, 4008278, 27974196, 7341710, 1273995, -1705639, -3891240, 74625, 5348845, -3476776, --6295885, -9623411, 854699, 6706055, -8338679, 4073240, 5709086, -2483565, 18923090, 6548752, --4543002, -3301756, -1279900, 6655589, -2649995, -6358699, -6766184, 4227859, -14924474, 440771, --4122095, -5589363, 4938676, 976568, -5398237, -3495567, -5184563, 7423314, -2362769, -12006044, --1334661, 188442, 999654, -6998649, -9616969, 834834, -1712618, -1403917, 3406983, -2144263, -9210557, 1799591, 5533529, -5897527, 13359496, 3771518, -6529424, 8699456, 16872242, -4894115, --4037806, 8518531, 8021925, 3230352, 4913980, -10428717, -2677912, -11268384, 3374234, 10428181, -4829691, -13196287, -2592550, 4090956, -12896176, -20410758, -1690607, 604517, 5849746, 18413062, -1544041, -2165737, -5704254, -4433480, 2959233, 4624069, 3995393, -344134, 2143189, 121333, --4022237, 2472828, 3244311, -5258114, -4918812, 5552319, -1826972, 3241627, 2552284, 1607928, --1366337, 1152125, -96637, 1889249, 513249, 2899103, 116501, 2556579, 1858110, 536334, --2370822, 5379447, 1755568, 4908611, -1016834, -1700270, 1829656, -3361886, -546535, 2316598, --3105798, 765041, 1813550, 1065152, 1188095, 2617246, -1038845, -4866735, -62277, -539555, --5127654, 723702, -2156074, -637266, 2048163, 1656247, 1856500, -21657372, 10212358, 28646358, --11752104, 20084878, -4503273, -4406637, -6259378, -10474888, 7765838, 227096, 5313412, 5146982, --18817326, 178241, 8804683, -7718056, -4014721, -11950747, 21041044, -13184476, 10392747, 9706626, --12488691, -5233418, -4346507, 8736500, -9990094, -4165045, 10204305, -1858647, -2711735, -5047124, -12439299, 2103997, -1997160, -5196911, 340913, -9543417, 10254234, -1306744, 4722317, 25450902, -17154636, -14803142, -10396505, 3915937, -1318018, 10587631, -5866389, -8725226, -3057480, -16134582, --6180458, -2008971, -12304008, -7144141, 27313308, 6404870, 102542, -1453310, -296890, 7923141, -9624485, -2145336, 9505836, 645319, -5216775, 908922, -14566918, -1218697, -13499082, -7413651, -8136279, 11793980, -17901960, 7137162, -4589173, -5812165, 8671002, -1402307, -8243653, -603443, --3234110, -6591701, 3305514, 2259153, -4511327, -11248519, -5359583, -1250909, -885837, 8645232, -2597918, 2059437, -4792110, -54761, -1981054, 4573067, 5254893, -2950106, 2237141, 3839164, -4318053, 3270081, 4910758, -2085744, 326418, -3522410, 251256, -4081293, -2121714, 1374390, --1114544, -3320010, -778463, 1556926, -5294621, -2727304, -2886218, -1714766, -2042794, -2527588, --333934, 2835752, 189515, -369904, 3373160, -23025320, 4034585, 21110838, -5476084, -5546951, -4694400, -6721087, -5275294, 5864778, -700080, -1323387, -163209, -14542222, 24553792, -26131654, --2412698, -725850, 8997956, 5230197, 406411, -10001905, -7010997, 2980171, 19187766, -1684164, --8339753, -5890548, -13475997, -1055488, -7882876, -6467684, -2713346, 4119411, -374736, 504122, --9104794, 1714229, 2681670, 5738077, 4958540, 5778342, -12387223, -75162, -2470680, 8058433, -2146410, 16485695, 3663070, -3978750, 1539209, -9169218, 1611, 7126962, 9435506, -14394046, --10995116, -1166621, 14952392, -23412940, 6184753, 26756036, 14850386, -7312182, 2555506, -14570677, -6165426, 13159780, -22660248, 4966056, -11004243, -3244848, -30746060, 44560, -12911745, 11902428, -901406, -14430553, 9594420, -1024887, -18396956, -2572149, -11606075, 7514582, -6432251, -9753871, -13214004, -2641942, 2407329, -4479651, -5616744, -1658931, 5694590, 4097399, -3073586, -896574, -320512, -3351685, 2126009, 3092377, 4730370, -4794257, 1939715, 2392834, -5487358, 254477, -2542084, -4093641, 476741, -2683281, 6263673, 3212099, 7603703, -3651259, -2709588, 2422362, --7058242, -852551, -1956895, -1214402, -274341, 1429687, -3914326, 170188, -433792, 1317481, -1483911, 167504, -3946001, -2408403, -6229850, -17361868, 27473296, 8081518, 14374182, -16176994, --18252000, -3233574, 4815732, -4937065, -2457258, 9371619, 2517388, 3019899, 8137353, -20071992, --2226404, 431644, 5132486, -13905493, 1840930, 2563022, -9796820, -5233418, -13491566, -9965935, --75699, 4507032, -10916196, 993211, -4947803, -9525701, 3770981, 153008, 7750269, -21265994, --22388054, 4819490, -1920924, 8578123, 18781356, 2255932, -11812771, 16940424, -8363912, -15625091, --12147778, -5047124, 1350767, -16602733, -6466074, 16595217, 22348862, 9554692, 6264747, 4784057, --2572686, 14355391, 8057359, -16504486, -9055939, 202937, 1672353, 15700790, 10034117, 2607045, --2383707, -1823751, -7635915, 10457708, 8138963, 18105972, 4134443, 5348308, 2208687, 32430224, -3687230, 12626130, -13356811, 1254131, 12313671, -29195578, 2426657, 3974992, 8279087, -2938831, -4415764, -3728569, -965294, 5127117, -2403571, 15628849, -6205691, 9178882, -2368138, -5410585, --2924336, -5859946, 199716, 2532957, 3078418, -1138166, -2969970, 6576669, -1911261, 4435628, --2275259, -2377801, -4694936, 4967130, 5341866, 1232656, 537945, -3872987, -6830609, 3296924, --569620, 310311, 8181913, -2208150, 7171522, -1016297, 4202626, 2915209, 5529771, 1326071, --5063230, -883153, 18686328, 1072131, 23179938, -991064, -10548440, -11817603, -21633750, 3754338, --9109089, -834297, 1884954, 7561290, 11385421, 18956376, 19914152, -3316252, 17728552, -1557999, --1522566, 6455336, 14939507, 6254010, 4190278, -23995446, -12182138, -19558744, 9799505, 19105088, -3768297, -8602283, 13519483, 19164144, -2617246, 2769717, -4535486, 16073378, 13797582, 11460046, --6920266, -12551505, -1952600, -3438121, -27386858, 4535486, 3752191, 2197950, -6961068, -3879429, --30544196, -11054172, -27723478, -5097053, -20761872, -11005854, 20029044, 5071283, 21100638, 1160715, --17272748, -8644159, -17973902, -34580392, 4851166, -21459804, -6190122, 20022600, 8455180, 7738994, -1672890, -4075387, -1479616, 3764539, -14783814, 11644730, -25222732, -26214870, -1441498, -2421288, --3246995, -19304804, -4342749, 25081536, -1378148, 1397475, -6736656, -22023518, 11116449, -14856829, --5778342, -14788109, -9058623, -6985228, -4675072, -5413807, -3258270, 216359, 2595771, -13834627, --5907191, 2528125, 2455111, 7556995, 3587908, -4669167, -5780489, 4904316, -9269613, -1504312, -2867965, -7197292, 2250563, 2066953, 5163625, -4941897, -1690070, -2675765, -376883, 3349538, --2030983, -384400, -2725157, 5379984, 7540889, -2560338, -1216013, 1965484, 2532420, 4671851, -6682432, 1163399, -1137630, -1671816, -1585917, 10853919, 21787832, 19012746, 20429548, -11764989, --20550344, 15808164, -9356049, 16337519, 4874251, -26181046, 6579890, 4905390, -29532732, 15887084, --13463649, -13712757, 8042863, 9001715, 1403381, 10681047, 800475, 554588, -6928319, -3974992, -6475737, -4076998, -10125922, 701690, -19022948, 6896107, -24181202, -14676440, 898185, 9617506, --3301219, -9973988, 3750043, 7591355, 5630702, 468688, 19473918, -44736916, -10165114, -12233677, --14868640, 19446002, -15658914, -2114735, -36107792, -10073846, -4290673, 1910187, 24074902, -5781026, -3042984, -14510547, 12208981, -18060874, -11719892, 9431748, -41926396, 6132677, 22403624, 29135984, -22225918, 14107357, 32724430, 18108656, -396748, -8062728, -8408472, -12625593, -28227598, -3025268, -2631204, -39877696, -15800111, -12030740, -9016210, 12814035, 33429878, 39101920, 25865904, -13070122, -10666014, -8411157, -1840394, 8886287, 6003291, -3365107, 2103997, 2954401, -787590, 1389422, --6152541, 3560528, 10958072, -5114233, 1453846, -9627706, 2367601, -4485020, -670552, -428423, -8459475, 15068356, -5400922, 991064, 3640522, 6167573, -9102646, -14009646, 250182, 10999948, -3164317, -8915815, 8382703, 4475356, -9134859, 6444062, 4060355, -3450469, -2819646, -915365, --1726577, 1709934, 3388192, -3137474, 6109054, -38489888, 119185, 6360310, 27023398, -8819178, -12537010, 11294690, 6050535, 6155225, -41941968, 33122250, 18154826, 41051836, 15176267, -1802276, --15173046, -9707163, -9463960, -14892262, 10719701, 7801808, -15010374, -17186848, 9186398, 12321724, -21563958, 6011881, -13220983, -19906100, 4329864, 3374771, 1488743, 2393371, 38221452, 12902082, -7401840, 12553116, 13907641, 15519864, 481036, -24169392, 17143898, 53159884, -5303748, -14799920, --32219234, -6948184, 42991548, 5017059, 17869748, 5946382, -59122908, 12233677, 10774462, 1255204, -6229850, -4134980, 1050120, 12103218, -31758598, -13227426, 27217208, 10059887, 3858491, -24003498, -17314086, 6386080, -21495238, -23477364, -15617575, 21536576, 44900124, 41663332, 46028628, 46547780, -2018635, -20691542, -16874390, -40647032, -13166222, 12895639, -32833952, -257698, -26718992, 404801, -36338108, 14137422, 15082851, 18002356, 11399380, -10976863, -3469797, -13545790, 19855096, -11832098, --10287520, 3606699, -2072859, -7010461, -12786655, -3714073, 13606993, 12682502, -5668820, 19578072, --681289, 568546, -8614631, 2954938, 10309532, -2468533, -7428683, -7364259, 5270999, -4037806, -11252277, 7027640, 9163313, 13087302, -12999792, 3465502, 1414655, 6052146, -2487860, -5583995, -11969000, 2898029, 9824201, -5054640, 3769371, -7704635, -2285996, -11889006, 19034758, 38774428, --78578576, -27715960, 6136435, -45901388, -42101952, -18212808, -25567404, 2929168, -18826990, 49820548, --5297842, -17626008, -7151121, -38094748, -10564546, -30731564, -12809740, 5417565, -39675296, -6604049, -30729418, -25687126, -7409356, 8917963, -152471, 12885439, 2690260, 110059, 11461657, 4320737, --19713900, -3622805, 17548162, -8797704, -24554864, -7990787, -29777008, -14581951, -52161304, 5174899, --35532800, 17249126, 6345814, -12934831, -46012520, 4361003, -4903242, 56802552, 22531936, 1154809, -30766998, 13450764, 284005, 25130390, -29513942, -13921600, 2204929, 22240952, -24447490, -14734422, -82184736, -7753490, 42569032, -33089502, -81068, -23611582, 17865454, -8319352, 27870042, 43858596, -1162326, -30967788, 26590142, -32999308, -15007689, 11155104, -34294240, -22908282, -10935524, 24923696, -47547972, -56572772, 47668768, 9543954, 13936632, 5266704, 6692096, 5080410, -7039989, 8616778, -24693378, -12486544, 4334696, -2426120, 3226057, -26801132, -4811974, -8214662, 8082592, 8262980, -26381300, -16485158, -9550934, -12854300, 18306224, -23401666, 5632313, 8602283, 7942469, 8674223, --38513508, -9199283, 13893682, -6659347, -16456704, -2194728, 4549981, 939524, 16330539, 8227547, -12965433, -13020730, -11560978, 13093745, 3874061, 8783208, -8665633, 8834748, 6081137, 1622961, -3328600, -3706020, -3988414, 108985, -19028852, -18533858, -29606284, 61269856, -35167728, 22497576, -20187420, -31967442, 17576080, 9595494, 6972343, -5711233, 24314346, 12493523, -30752502, 21843130, -25536802, 4926328, 4403952, 15374909, -310311, -30677340, 39950176, -22765474, 9117679, -16930224, --3799436, 5006322, -7358353, 32476396, 7411503, -4291746, -7694434, -1695975, 6483253, -33049774, -10604274, -17128330, -11450920, -7923141, 56908, -16206522, -7576859, 3955128, 34461744, 386010, --7046431, -21846352, 9290551, 6060736, 1177358, 26659398, -6311455, -2746095, 31857920, 9997610, -2024540, -30537218, -15814070, 19770272, 11226508, -28596966, 1111860, -65038688, -32032402, 58401356, --13461501, 31618476, 41566692, 11822971, 7261179, 18781356, -7751879, -22788022, 12516608, 3920768, --1237488, 26405458, 17375290, -18835042, -45175004, -9322227, 18788872, 5988795, -818728, 14825153, --16876000, 25588342, -12188043, 9641665, 12212203, 5321465, 17816062, 13382581, 21541408, 2523293, --5161477, 7796440, 20921860, -5264556, 18379238, 10925860, -11249056, 3764002, 9982041, 6578280, -4379256, 13055627, 11265699, 4880157, 22042310, -6688875, 2983929, -2959233, -851477, -5328444, -19699942, 15977815, 13294534, -5825050, 3061238, 22707492, -5202816, 16690780, 15553150, 199179, -26611618, -23225036, 4100620, 35631048, 5399848, 10209137, -6466610, 25121800, 5789616, 9629854, -34842384, -10768557, -58167280, 9878425, -6992207, 20031728, 6152004, -19738596, 10251013, 12007118, --22466974, -24697136, -16506096, -41233832, -41475964, 28566364, -6589554, -42634528, -13049184, 4384625, -14139569, 13525389, -26096222, -28303298, 2813204, 39438536, -18822158, 15240691, -26489748, 9456981, --29887604, 19518478, 20595978, -14630269, -30758946, -21143588, -3400540, 12128451, -13183939, -8664560, --10970957, -39120172, -33819648, 17804786, -28387586, -5753646, 10162966, -23408646, -37869800, 14540612, -19926500, -2467459, -45597520, 20491826, 17945448, 57795764, 303869, 15243376, 11334956, -24551106, -9476845, -7554848, -49842560, -7525320, 30524870, 7379291, -25200184, -62459560, 39560944, 50662896, --14993731, 41015328, 47590920, 2610803, 2175401, 37760280, -24330990, 2069101, 62978716, -46225660, -27008364, -39557184, -10908143, -3017215, 27118960, -8971113, 3940096, 15458124, -479426, -34931504, -38763692, -6755984, -4560719, 6256694, 16173236, -26141856, 11563126, 7144678, -4020626, 8419747, -9391483, -24145770, -3365644, 6116571, 12834436, 27194122, -2320893, -23051626, 11873974, 27946816, --21949430, 27295590, -12792560, -2335389, -9533754, 30771830, -21023328, 7738458, 18751290, -12465606, -4590247, 3962644, -17594870, 4473746, 7329899, -2618320, -13440026, 9334038, 10749229, -5385889, -21580064, -32021128, 7811472, 10424422, 146029, 2864206, 4154844, 22796612, -5309654, 12883828, --26446262, -82738784, 22180822, -9375377, 61703112, -21123722, -13872207, -24698210, -71238472, 32631550, --41631120, -24023900, 987843, 61740, 54465016, -39031052, -27709518, 36183488, 21171504, 18918258, --7095823, 18072686, -12996571, -17952426, -16931834, 42378444, 34855808, 55059332, -17807472, -20495584, -652298, -3558381, 19858856, -33033130, 6766721, -34731252, 18250390, 34170760, 11373610, -28059022, -18804978, -24739012, 55433532, 28432684, 7538742, 7536057, -8982387, -43734580, 24354612, -59338732, -12021077, 11054172, 28614146, 23010824, -51654496, 15452755, -32688996, -19184008, 13560285, -5110474, -18724984, 12228846, -47286516, 19128174, 42640972, 56893820, -16945256, 16780974, -23678692, 39906688, --57200912, -3051038, -10785200, 17864380, 36893232, 53561464, -43386148, 10619307, -57908508, 36845988, -75211320, -19312858, -52052320, -4246649, -39381092, 49588620, 12124693, -25489558, -7672959, 2763812, --8999567, 35358320, 12858058, -20198158, 18585398, -28549722, 1328219, 26478474, -6089727, -32901596, -35751308, -52405044, 14595373, -8072928, 20325932, -1514513, 12410845, -12249784, -7008850, 5093831, -4015258, 5311264, 24193014, -25580826, -21875342, 929324, 5123359, -6117644, -27030376, -19605452, -38100120, 10151692, -17823040, -20142322, -44806708, 52586504, 40779640, -16448651, -14816027, -31188442, -523986, 39176544, 6932614, -16959216, -6606197, -9154186, 5728950, 3877819, 1476395, -5181878, --2567317, 7073275, -1131187, -4376572, -3366718, 4583804, 1416802, 9460202, -4684736, -66025460, -47392816, -6887517, -975494, 14627048, 13820131, 17579302, 5956583, 8176007, -22106734, 20938502, -6767258, -24191404, 16583942, -10105521, 426812, 20453708, 13108240, -34077880, 19489488, -16546898, -28512678, -20983062, 7806640, -11110544, 13691819, -10626823, 6720550, -15436112, 32673964, -3612068, -1657321, 8701067, 11476153, -16936666, -2579128, 6507413, 11420855, 8931921, -10427107, 3265786, -1250372, -33170570, -1910724, 7632157, 12701292, 4417374, 8422431, -29917668, 5424544, -2461016, -3723737, 5942624, -4986457, 5577552, 5646809, 1985349, -6263136, -7348152, -1462973, 32981054, --11077258, 5951214, 13331042, -7831336, 12725451, -14331769, 12294344, 5203353, -8289287, -14418742, -9376987, -9160092, 7528004, -13051869, -9797357, -5640903, 16310675, -4791036, 2298881, 2305324, --312996, 2892124, -11470784, 8485782, -7109782, 19600084, -18173080, 8049306, -10507101, 9322227, --8426189, 7282117, 1060857, 12947179, -11110007, 5584531, -5270462, -175020, 3288334, 7257421, --7727183, 1115081, -8400419, 12192338, -10120554, -3979824, 7504919, 1777043, -4483409, -2537252, -8376260, 3994857, -17219598, 9157407, 1796907, -870268, -1003949, 2674691, -1345399, 934155, --478889, 1340030, 1538135, 3704946, -4183298, 11914239, -15506443, 4250407, -2011655, 2531883, --2132988, 3706557, -1333587, -2991445, -562104, 1373316, -3438121, 51835424, -3731790, -16790100, --25591026, -11638825, -14362371, 18807124, 10884521, -13673565, 1147830, 1612760, 6152541, 845572, -13032541, 4497905, 10267656, -3514357, -358093, -3074123, 4820564, 11123965, -10310606, -60130, --5095442, 369367, 13571023, -7682623, 1337882, -3467112, 5358509, 2766496, -7418483, -2747169, -7999377, -2440615, 13031468, 9266392, -13553306, 4364761, 2902861, 7136625, 3036542, -12816719, -8711804, -2386928, 8474507, 6774237, -15289010, 4220342, 75699, 3467649, -1677722, -6708739, -10954851, -2663954, 4991826, 282931, -3244311, 5078799, -6483790, -891743, 9147207, -6233608, --7470022, 15209553, -9762461, 14191646, -1432909, -11445014, 23520852, -21525840, 18786724, -6614250, --11185705, 11904576, -10987063, 3304441, 3875134, -10765336, 9146670, -1909113, -643171, 5844914, --7455527, 9865003, -3128347, -716723, 2479807, -1636383, 3511673, -1604170, 616865, 2909304, --2704756, 4627291, -471910, -2565706, 5703180, -8694624, 4712116, -3840238, -1726040, 5498632, -526670, -1593433, 2901251, -2024540, 2882997, 1483911, -3974455, 2766496, 629213, -865973, --610422, 2506650, 609885, 4582730, -3483755, 1345399, 668404, -2498597, 5105643, -1392643, --704375, -25298432, -43661564, 55049668, 157315520, 24978456, 15157476, -114990768, -142377088, -45506788, --28068686, 96324304, 146695680, 75618808, 21789980, -49328772, -106307416, -96799976, -81243600, 6495601, -121512680, 101782136, 58229556, 19874424, -52140368, -67434208, -53709640, -51753284, -18371186, 24640764, -33679524, 69919920, 49918796, 12196097, -17032230, -9906342, -56323128, -27259620, -28508382, -38434052, -22825066, 43255152, 24890410, 62943284, 16614007, -14875619, -24247238, -41751376, -33130304, -5116917, --10304700, 12896176, 25936234, 23242216, 16481937, 11341398, -5804112, -22898082, -16314970, -19034222, -6067178, 22327924, 7266548, 5529234, -9746891, -19909858, -3813394, 10201, -367757, 16230681, -14410152, 16268799, 6324876, -5528160, -17451526, -25116968, -25837450, -16699907, 17784922, 26491896, -32720134, 22734872, -5778342, -12766253, -13680545, -26926224, -11989938, 9904731, 5115306, 4945118, -7796977, 3835943, 2946348, -4123169, -5485210, 4315906, 9302362, -140123, -880468, -6396817, --8946417, -4558034, -5461588, -3112241, 6880001, -1168231, 14466524, 18000744, 10307922, -6157373, --10259066, -11367705, -14500883, -10495289, -14350559, 7701950, 19622632, 18016314, 10569915, 11274826, -4184909, -10974178, -21633750, -22013854, -11273215, -2219424, 6925098, 15789374, 23040888, 19011136, -3513820, -12138651, -20381230, -14836965, -4997732, 207769, 5508833, 3605625, 8662949, 11211475, -3253438, -4759361, -6631967, -3634616, -2797098, -2614025, -810138, 856846, 5131412, 3191161, -310311, -6979, -373662, -967978, -2421825, -2735894, 886374, 2241436, 1613297, -320512, --107374, -259846, -778463, -897111, 475131, 438087, 727460, 233002, 355945, -464930, --589484, -1054415, -642098, 246424, 1287953, 281320, 518080, 476741, 131533, -660351, -18254, -678605, -1860795, -1241782, 1226750, 1447941, 1504849, 761283, 38118, -990527, --404264, -636729, -335007, -603443, 261993, 47245, 219580, 94489, 739271, 363998, -710817, 58519, -84289, -674847, -530428, -1053878, -476205, -245350, 821413, 700617, -1255204, 605054, 204548, -974421, -830539, -923955, -242666, -271657, 722628, 524523, -583579, -68719, 97174, -347892, 54761, -282394, 124017, -255551, 161598, -164819, -217970, -199179, 176094, -146566, 273267, -143345, 193274, -186831, 167504, -221728, -181999, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +11112691, -5488432, 399969, -3257733, -293668, 4756677, 2197413, 3000035, -2619393, 3706557, +-3826816, 4156455, 2018098, 5000953, 2055679, -899796, -5635534, 6063420, 4114042, 1569811, +672162, 602369, -2414845, -2681133, 3077881, 1950989, 1999307, 3032247, -3072512, -190589, +2771328, 3365107, -467078, -2437394, -4746476, 59056, 847719, -2807835, 1034013, 799938, +-4280472, -2256469, -354872, 2199560, 17180, -2029909, 3936338, 780073, -1371705, -2896956, +-682900, 387621, -5576478, 2600066, 3448322, -1890859, 4424353, 3683471, -604517, 3053185, +1756642, 5931887, 1831804, 1139777, -940598, 2256469, -4765266, 646393, 2252174, -2314451, +2582349, 3174518, 3428458, 2186138, 4512937, -938987, -2771328, -1395328, -1182727, 634581, +-1066226, -3488050, 1653026, -1628330, -1869921, -2103460, 798327, 30602, -1097901, -820876, +1389959, 137439, -174483, -344671, -150861, 694174, 930934, -119722, -65498, -766115, +214748, -1404454, 129386, 994822, 1266479, -875100, -971200, 254477, 824634, -809064, +-10548977, -7434589, -1020592, -4799089, -4045322, 1973538, -5994164, -5844377, 1704565, -2666101, +-2330020, 2384781, -1870995, -4150549, -418222, -345208, -1133335, -1917166, -1082332, -4755603, +-265214, -3439195, -2434710, -163746, 4249870, -972273, 6128382, -3205656, 3693135, 4176319, +-4701379, 1614371, -1171452, 882079, -3321620, 1624571, 2190433, 3213709, -1643899, -4003447, +-1357747, -2210835, 1293859, 1506997, -4790499, -639413, -3282966, -2689723, 925565, -3976603, +-6293738, -1216013, 6220724, 1339493, 2189897, 306553, 1444720, 817118, 2301029, 2420751, +6972880, 491237, -3073049, -4020626, -840740, -1930051, -497679, -8100309, 1688996, -602369, +2592013, -1107028, 730681, -1953673, -931471, 7873212, 1598265, 7217156, -2445984, -1347546, +565862, 2034204, 714575, 2430415, -2398739, 2641405, -2798708, -1767379, 1450088, 1016297, +-96100, 102005, 67646, -632971, 206158, -1096290, -91805, -392453, -169114, 446140, +554588, -616865, -1017370, -657667, 71941, 17717, 178241, 317291, -421444, -489089, +-430034, 89121, -163746, 568546, 8607114, 9916006, 7635915, 5663452, 8026757, 3251827, +3489661, -734439, 2281702, 8442295, 903554, 2573222, -3136400, -2095407, 6474127, -4345433, +-7916162, 2392834, -6613713, 5706401, 1348083, 6847789, -2180233, -434329, -1687922, 2247342, +2745021, -100932, -6738267, -1394791, 5775658, -3848291, 2604898, 1522566, -1300301, -1666447, +6417755, 4832375, 11194295, 4473746, 930934, 2674154, -944893, 673236, 3526705, 2094870, +9541270, -4093104, -2721399, 656593, 2457795, -1510218, 4422743, -4150549, 860067, -281320, +-3179887, 979789, 958315, -4320200, -5832029, -3619584, 4618701, 2227478, 19864, -386010, +3485903, 252329, 1155883, 6033356, 2982855, -1453310, -962610, 5361730, -4660577, 604517, +-4201552, -1903744, -5430450, 1466195, -1130650, -3233037, -2109366, 3136400, 1942399, 549219, +1850594, -3030100, -506806, -272194, 2335925, 53150, 166430, 417149, 697395, 1703491, +1927904, 1505923, 117575, 797790, 1744831, 83215, -1586990, 1453310, -805306, -329102, +357019, -282931, 1282048, 1150514, 584116, -18254, -445603, -477815, 550830, 718333, +267899, 1104344, -2266669, -1465121, 1135482, -96637, -893353, -126165, 1211718, 95026, +-835908, -1069447, 714038, -1055488, 90194, 18685256, -325881, 9153112, -1654099, -1434519, +9827959, -9615358, -3322157, -750009, 4859756, 3370476, -2049773, 1872606, 918049, -8706436, +2212982, 4661114, 4148402, -9757092, -3420942, 1104344, -6987375, -1921461, 547608, 319438, +964757, -1072131, 4471598, -3148748, 3558917, 7322383, 7323993, -2119566, -4179540, -744640, +8249559, -466541, -428960, 66572, 824097, -4272956, 745714, 3471407, 533650, 828392, +3331821, -2191507, 2247879, 1304060, -891743, 5797669, 583579, 4611185, 923955, -1535451, +2024003, 3085397, 2669322, -126165, -4513474, -4114042, -5437966, -2420751, -177704, 13959, +-623307, 4064650, 3501472, -2628520, -5332739, 180926, 2791192, 3350075, -3256659, -599685, +3173444, -273267, -422517, 4209068, 1981054, 2000381, -1551020, -1340030, -235686, 1821066, +2712809, 71941, 2057289, 746251, 183610, 405338, 693637, 2522220, 1899986, 2837900, +-1419487, 1344325, 204548, 367757, -398358, 306016, 432181, 136365, 379568, -451508, +1363115, 1336809, -1219234, 337692, 765578, 844498, -392990, 2627446, 1023813, -379031, +-4952098, -14006962, -3583613, -4789963, 946503, 2252174, -2333778, -2864206, -26261040, 453119, +8477729, -6213207, -9817221, 7290707, -11116449, -1765232, -4966593, -5937793, -3627100, -3760781, +403727, 4385162, -814433, 2406792, -2844342, 3284576, -2585034, -4072166, 1749662, -1581085, +-6296422, -8119636, 3828963, 294742, 3778498, 1072668, 8467528, 1109712, 2926483, -4164508, +-7078106, -2138357, -3524021, 6963216, -3313031, 92879, 1810866, -3593814, 9841918, 6444062, +116501, -7950522, -9996000, -3476239, 3291556, -9087614, -253403, -4468377, -8590471, 702764, +-13435731, -3058017, -1458141, -5078799, 8981313, -649614, -1453310, -239981, 5611912, 7112466, +2130304, -7306276, -2369748, -1918777, 3848291, 1727651, 2192581, -4145180, -5206037, 3960497, +2721399, 926639, 1322313, -345208, 2273648, 552440, 3446175, 899259, 770410, -386010, +-146029, 466004, 2204929, 3114925, 1923609, -874563, 1233193, -4099010, 2027225, 2296197, +-717260, -425739, 689879, -994822, -298500, -311922, -1280974, -1386201, -754841, -471910, +706522, 1502165, -297427, -1938641, -60666, -2700998, 840740, 3492882, 1488206, 2026151, +1447941, 5503464, -14974403, -22257594, 2765959, -5159330, 4986994, -6305012, -10969346, 172336, +10168872, 1966558, 6255620, 4857071, 3886946, 2358474, -3506841, 2607045, 6772090, -10645613, +-4890894, -3612604, -2317672, 3755949, -822486, 1222455, 7027104, 5974837, -2422362, -6052146, +1445793, -3436511, -2486249, -5870147, -3949759, -8883603, 2168422, -3387656, -12885, 7689065, +-1498407, 1388348, 2122251, -5696737, 4761508, 4539781, 6560563, -5804112, 10323491, -1774358, +-7444789, -6444062, -8149701, 7549479, -2829310, -8824547, 2711198, -1443646, -6088116, 6447283, +8854612, -3135863, -7285339, 5352603, 1787780, 4175245, -579821, 11732777, 7011534, -7000797, +-3368328, -3354906, -2634426, 3853660, 5470715, 6924561, 42950, 834297, 2749316, -2881923, +2617783, -861678, 4590247, 6352257, -8691940, -3998078, -4356708, -2841121, -4452808, -439697, +-3142306, 1384053, -146029, -370441, -345745, 1083942, -2125472, 5383742, -658204, 2246805, +848793, 1053341, -1045825, 132070, 169651, 244276, -1826972, 309775, -1183264, -1992328, +-2868501, -926102, -158377, -550293, 120796, 273267, -574452, -456877, -1074279, -1071594, +1726040, -65498, 584116, -1258425, -20787104, 60666, -3834869, 1449015, -108985, 7893076, +5662378, 8173860, -1381906, 11122355, -5200132, 7590281, 9126269, 1777043, 9097278, 2063195, +2318209, -2483565, -998580, -3765076, 7202660, -360240, -886374, 10321880, 6122476, 188442, +2699924, -776852, -399432, 6749004, -3859028, -6485401, -60130, -814970, 3326452, -18514530, +11142756, 12175695, 4715874, 2451353, 270583, -5815386, -12461848, 8304856, -5049808, -5539971, +-3826279, 7467338, -5228586, 4648765, 4566087, -4301410, -2962991, -10611790, 4894652, -6863895, +4097936, 802085, 3666828, 6628745, 10365904, 4576288, -4837744, -11331734, -2054605, 7118372, +11431055, 8723615, -1772748, -2158758, -7405598, -12138651, -1330903, 8597451, 3751654, 2793876, +-2750927, 11373610, -413391, 3905736, 1060857, -2058900, 1036698, -5625334, -2824478, -2785823, +1888175, -1323387, -4129074, -2301029, -2859375, -2945811, 1205812, -4242354, -1838783, 964757, +732829, 3501472, 159988, 605054, 561567, -789200, 2739116, -740882, 3118683, 1262184, +-913754, -2277943, -139586, 3155727, 2138357, -248571, -2958696, -643708, 2594697, 2470143, +322659, -397284, -364535, -1648731, -1334661, 2077690, 7845295, 27154394, 14717242, -1217086, +2554432, 2506650, 5954972, 10805064, -1500554, 2214593, 18107582, 1966021, -788127, 11042361, +7626788, -7416872, 4505958, 1220845, 7298760, 5143760, -12563853, 9704479, -5807333, -695785, +1096290, 7630010, 1363115, 2168959, 5721970, 6679748, -6214281, 6859600, 20031728, -3384434, +9133248, 9489730, -4948339, 7476465, 1968169, -4662724, -5180805, 3707094, -4626754, -12288975, +-1578401, -428423, 1312113, -15770583, -3855807, 5051419, -10041634, -6628209, -16560320, 5644124, +7670812, -11191611, -4012573, -5317170, 12048457, 447213, -6837051, -4655208, -7617662, 4002910, +10089952, -6987375, 3911642, -2879776, 4884452, 11525545, 4811974, 9114457, 9140764, 11511586, +1774358, -6204081, -6315213, 4712653, 7230578, 1201517, 4870493, -4926865, 2072859, -460098, +-1542967, -5178657, 771484, -2206003, 344671, 4512400, 1878511, 1999844, 1509144, 4968204, +-2939905, 341987, -765041, 1598802, -524523, 336081, 2091112, 715112, -1651415, 2744484, +-521839, -3515968, 2338073, -2460480, -2070174, -2556579, -5496485, 3172370, -1226213, 2712272, +-248571, -344671, 788127, 4300873, 2822331, 3857954, 1760937, 132070, 1557463, 4421669, +-1673427, 4008278, 27974196, 7341710, 1273995, -1705639, -3891240, 74625, 5348845, -3476776, +-6295885, -9623411, 854699, 6706055, -8338679, 4073240, 5709086, -2483565, 18923090, 6548752, +-4543002, -3301756, -1279900, 6655589, -2649995, -6358699, -6766184, 4227859, -14924474, 440771, +-4122095, -5589363, 4938676, 976568, -5398237, -3495567, -5184563, 7423314, -2362769, -12006044, +-1334661, 188442, 999654, -6998649, -9616969, 834834, -1712618, -1403917, 3406983, -2144263, +9210557, 1799591, 5533529, -5897527, 13359496, 3771518, -6529424, 8699456, 16872242, -4894115, +-4037806, 8518531, 8021925, 3230352, 4913980, -10428717, -2677912, -11268384, 3374234, 10428181, +4829691, -13196287, -2592550, 4090956, -12896176, -20410758, -1690607, 604517, 5849746, 18413062, +1544041, -2165737, -5704254, -4433480, 2959233, 4624069, 3995393, -344134, 2143189, 121333, +-4022237, 2472828, 3244311, -5258114, -4918812, 5552319, -1826972, 3241627, 2552284, 1607928, +-1366337, 1152125, -96637, 1889249, 513249, 2899103, 116501, 2556579, 1858110, 536334, +-2370822, 5379447, 1755568, 4908611, -1016834, -1700270, 1829656, -3361886, -546535, 2316598, +-3105798, 765041, 1813550, 1065152, 1188095, 2617246, -1038845, -4866735, -62277, -539555, +-5127654, 723702, -2156074, -637266, 2048163, 1656247, 1856500, -21657372, 10212358, 28646358, +-11752104, 20084878, -4503273, -4406637, -6259378, -10474888, 7765838, 227096, 5313412, 5146982, +-18817326, 178241, 8804683, -7718056, -4014721, -11950747, 21041044, -13184476, 10392747, 9706626, +-12488691, -5233418, -4346507, 8736500, -9990094, -4165045, 10204305, -1858647, -2711735, -5047124, +12439299, 2103997, -1997160, -5196911, 340913, -9543417, 10254234, -1306744, 4722317, 25450902, +17154636, -14803142, -10396505, 3915937, -1318018, 10587631, -5866389, -8725226, -3057480, -16134582, +-6180458, -2008971, -12304008, -7144141, 27313308, 6404870, 102542, -1453310, -296890, 7923141, +9624485, -2145336, 9505836, 645319, -5216775, 908922, -14566918, -1218697, -13499082, -7413651, +8136279, 11793980, -17901960, 7137162, -4589173, -5812165, 8671002, -1402307, -8243653, -603443, +-3234110, -6591701, 3305514, 2259153, -4511327, -11248519, -5359583, -1250909, -885837, 8645232, +2597918, 2059437, -4792110, -54761, -1981054, 4573067, 5254893, -2950106, 2237141, 3839164, +4318053, 3270081, 4910758, -2085744, 326418, -3522410, 251256, -4081293, -2121714, 1374390, +-1114544, -3320010, -778463, 1556926, -5294621, -2727304, -2886218, -1714766, -2042794, -2527588, +-333934, 2835752, 189515, -369904, 3373160, -23025320, 4034585, 21110838, -5476084, -5546951, +4694400, -6721087, -5275294, 5864778, -700080, -1323387, -163209, -14542222, 24553792, -26131654, +-2412698, -725850, 8997956, 5230197, 406411, -10001905, -7010997, 2980171, 19187766, -1684164, +-8339753, -5890548, -13475997, -1055488, -7882876, -6467684, -2713346, 4119411, -374736, 504122, +-9104794, 1714229, 2681670, 5738077, 4958540, 5778342, -12387223, -75162, -2470680, 8058433, +2146410, 16485695, 3663070, -3978750, 1539209, -9169218, 1611, 7126962, 9435506, -14394046, +-10995116, -1166621, 14952392, -23412940, 6184753, 26756036, 14850386, -7312182, 2555506, -14570677, +6165426, 13159780, -22660248, 4966056, -11004243, -3244848, -30746060, 44560, -12911745, 11902428, +901406, -14430553, 9594420, -1024887, -18396956, -2572149, -11606075, 7514582, -6432251, -9753871, +13214004, -2641942, 2407329, -4479651, -5616744, -1658931, 5694590, 4097399, -3073586, -896574, +320512, -3351685, 2126009, 3092377, 4730370, -4794257, 1939715, 2392834, -5487358, 254477, +2542084, -4093641, 476741, -2683281, 6263673, 3212099, 7603703, -3651259, -2709588, 2422362, +-7058242, -852551, -1956895, -1214402, -274341, 1429687, -3914326, 170188, -433792, 1317481, +1483911, 167504, -3946001, -2408403, -6229850, -17361868, 27473296, 8081518, 14374182, -16176994, +-18252000, -3233574, 4815732, -4937065, -2457258, 9371619, 2517388, 3019899, 8137353, -20071992, +-2226404, 431644, 5132486, -13905493, 1840930, 2563022, -9796820, -5233418, -13491566, -9965935, +-75699, 4507032, -10916196, 993211, -4947803, -9525701, 3770981, 153008, 7750269, -21265994, +-22388054, 4819490, -1920924, 8578123, 18781356, 2255932, -11812771, 16940424, -8363912, -15625091, +-12147778, -5047124, 1350767, -16602733, -6466074, 16595217, 22348862, 9554692, 6264747, 4784057, +-2572686, 14355391, 8057359, -16504486, -9055939, 202937, 1672353, 15700790, 10034117, 2607045, +-2383707, -1823751, -7635915, 10457708, 8138963, 18105972, 4134443, 5348308, 2208687, 32430224, +3687230, 12626130, -13356811, 1254131, 12313671, -29195578, 2426657, 3974992, 8279087, -2938831, +4415764, -3728569, -965294, 5127117, -2403571, 15628849, -6205691, 9178882, -2368138, -5410585, +-2924336, -5859946, 199716, 2532957, 3078418, -1138166, -2969970, 6576669, -1911261, 4435628, +-2275259, -2377801, -4694936, 4967130, 5341866, 1232656, 537945, -3872987, -6830609, 3296924, +-569620, 310311, 8181913, -2208150, 7171522, -1016297, 4202626, 2915209, 5529771, 1326071, +-5063230, -883153, 18686328, 1072131, 23179938, -991064, -10548440, -11817603, -21633750, 3754338, +-9109089, -834297, 1884954, 7561290, 11385421, 18956376, 19914152, -3316252, 17728552, -1557999, +-1522566, 6455336, 14939507, 6254010, 4190278, -23995446, -12182138, -19558744, 9799505, 19105088, +3768297, -8602283, 13519483, 19164144, -2617246, 2769717, -4535486, 16073378, 13797582, 11460046, +-6920266, -12551505, -1952600, -3438121, -27386858, 4535486, 3752191, 2197950, -6961068, -3879429, +-30544196, -11054172, -27723478, -5097053, -20761872, -11005854, 20029044, 5071283, 21100638, 1160715, +-17272748, -8644159, -17973902, -34580392, 4851166, -21459804, -6190122, 20022600, 8455180, 7738994, +1672890, -4075387, -1479616, 3764539, -14783814, 11644730, -25222732, -26214870, -1441498, -2421288, +-3246995, -19304804, -4342749, 25081536, -1378148, 1397475, -6736656, -22023518, 11116449, -14856829, +-5778342, -14788109, -9058623, -6985228, -4675072, -5413807, -3258270, 216359, 2595771, -13834627, +-5907191, 2528125, 2455111, 7556995, 3587908, -4669167, -5780489, 4904316, -9269613, -1504312, +2867965, -7197292, 2250563, 2066953, 5163625, -4941897, -1690070, -2675765, -376883, 3349538, +-2030983, -384400, -2725157, 5379984, 7540889, -2560338, -1216013, 1965484, 2532420, 4671851, +6682432, 1163399, -1137630, -1671816, -1585917, 10853919, 21787832, 19012746, 20429548, -11764989, +-20550344, 15808164, -9356049, 16337519, 4874251, -26181046, 6579890, 4905390, -29532732, 15887084, +-13463649, -13712757, 8042863, 9001715, 1403381, 10681047, 800475, 554588, -6928319, -3974992, +6475737, -4076998, -10125922, 701690, -19022948, 6896107, -24181202, -14676440, 898185, 9617506, +-3301219, -9973988, 3750043, 7591355, 5630702, 468688, 19473918, -44736916, -10165114, -12233677, +-14868640, 19446002, -15658914, -2114735, -36107792, -10073846, -4290673, 1910187, 24074902, -5781026, +3042984, -14510547, 12208981, -18060874, -11719892, 9431748, -41926396, 6132677, 22403624, 29135984, +22225918, 14107357, 32724430, 18108656, -396748, -8062728, -8408472, -12625593, -28227598, -3025268, +2631204, -39877696, -15800111, -12030740, -9016210, 12814035, 33429878, 39101920, 25865904, -13070122, +10666014, -8411157, -1840394, 8886287, 6003291, -3365107, 2103997, 2954401, -787590, 1389422, +-6152541, 3560528, 10958072, -5114233, 1453846, -9627706, 2367601, -4485020, -670552, -428423, +8459475, 15068356, -5400922, 991064, 3640522, 6167573, -9102646, -14009646, 250182, 10999948, +3164317, -8915815, 8382703, 4475356, -9134859, 6444062, 4060355, -3450469, -2819646, -915365, +-1726577, 1709934, 3388192, -3137474, 6109054, -38489888, 119185, 6360310, 27023398, -8819178, +12537010, 11294690, 6050535, 6155225, -41941968, 33122250, 18154826, 41051836, 15176267, -1802276, +-15173046, -9707163, -9463960, -14892262, 10719701, 7801808, -15010374, -17186848, 9186398, 12321724, +21563958, 6011881, -13220983, -19906100, 4329864, 3374771, 1488743, 2393371, 38221452, 12902082, +7401840, 12553116, 13907641, 15519864, 481036, -24169392, 17143898, 53159884, -5303748, -14799920, +-32219234, -6948184, 42991548, 5017059, 17869748, 5946382, -59122908, 12233677, 10774462, 1255204, +6229850, -4134980, 1050120, 12103218, -31758598, -13227426, 27217208, 10059887, 3858491, -24003498, +17314086, 6386080, -21495238, -23477364, -15617575, 21536576, 44900124, 41663332, 46028628, 46547780, +2018635, -20691542, -16874390, -40647032, -13166222, 12895639, -32833952, -257698, -26718992, 404801, +36338108, 14137422, 15082851, 18002356, 11399380, -10976863, -3469797, -13545790, 19855096, -11832098, +-10287520, 3606699, -2072859, -7010461, -12786655, -3714073, 13606993, 12682502, -5668820, 19578072, +-681289, 568546, -8614631, 2954938, 10309532, -2468533, -7428683, -7364259, 5270999, -4037806, +11252277, 7027640, 9163313, 13087302, -12999792, 3465502, 1414655, 6052146, -2487860, -5583995, +11969000, 2898029, 9824201, -5054640, 3769371, -7704635, -2285996, -11889006, 19034758, 38774428, +-78578576, -27715960, 6136435, -45901388, -42101952, -18212808, -25567404, 2929168, -18826990, 49820548, +-5297842, -17626008, -7151121, -38094748, -10564546, -30731564, -12809740, 5417565, -39675296, -6604049, +30729418, -25687126, -7409356, 8917963, -152471, 12885439, 2690260, 110059, 11461657, 4320737, +-19713900, -3622805, 17548162, -8797704, -24554864, -7990787, -29777008, -14581951, -52161304, 5174899, +-35532800, 17249126, 6345814, -12934831, -46012520, 4361003, -4903242, 56802552, 22531936, 1154809, +30766998, 13450764, 284005, 25130390, -29513942, -13921600, 2204929, 22240952, -24447490, -14734422, +82184736, -7753490, 42569032, -33089502, -81068, -23611582, 17865454, -8319352, 27870042, 43858596, +1162326, -30967788, 26590142, -32999308, -15007689, 11155104, -34294240, -22908282, -10935524, 24923696, +47547972, -56572772, 47668768, 9543954, 13936632, 5266704, 6692096, 5080410, -7039989, 8616778, +24693378, -12486544, 4334696, -2426120, 3226057, -26801132, -4811974, -8214662, 8082592, 8262980, +26381300, -16485158, -9550934, -12854300, 18306224, -23401666, 5632313, 8602283, 7942469, 8674223, +-38513508, -9199283, 13893682, -6659347, -16456704, -2194728, 4549981, 939524, 16330539, 8227547, +12965433, -13020730, -11560978, 13093745, 3874061, 8783208, -8665633, 8834748, 6081137, 1622961, +3328600, -3706020, -3988414, 108985, -19028852, -18533858, -29606284, 61269856, -35167728, 22497576, +20187420, -31967442, 17576080, 9595494, 6972343, -5711233, 24314346, 12493523, -30752502, 21843130, +25536802, 4926328, 4403952, 15374909, -310311, -30677340, 39950176, -22765474, 9117679, -16930224, +-3799436, 5006322, -7358353, 32476396, 7411503, -4291746, -7694434, -1695975, 6483253, -33049774, +10604274, -17128330, -11450920, -7923141, 56908, -16206522, -7576859, 3955128, 34461744, 386010, +-7046431, -21846352, 9290551, 6060736, 1177358, 26659398, -6311455, -2746095, 31857920, 9997610, +2024540, -30537218, -15814070, 19770272, 11226508, -28596966, 1111860, -65038688, -32032402, 58401356, +-13461501, 31618476, 41566692, 11822971, 7261179, 18781356, -7751879, -22788022, 12516608, 3920768, +-1237488, 26405458, 17375290, -18835042, -45175004, -9322227, 18788872, 5988795, -818728, 14825153, +-16876000, 25588342, -12188043, 9641665, 12212203, 5321465, 17816062, 13382581, 21541408, 2523293, +-5161477, 7796440, 20921860, -5264556, 18379238, 10925860, -11249056, 3764002, 9982041, 6578280, +4379256, 13055627, 11265699, 4880157, 22042310, -6688875, 2983929, -2959233, -851477, -5328444, +19699942, 15977815, 13294534, -5825050, 3061238, 22707492, -5202816, 16690780, 15553150, 199179, +26611618, -23225036, 4100620, 35631048, 5399848, 10209137, -6466610, 25121800, 5789616, 9629854, +34842384, -10768557, -58167280, 9878425, -6992207, 20031728, 6152004, -19738596, 10251013, 12007118, +-22466974, -24697136, -16506096, -41233832, -41475964, 28566364, -6589554, -42634528, -13049184, 4384625, +14139569, 13525389, -26096222, -28303298, 2813204, 39438536, -18822158, 15240691, -26489748, 9456981, +-29887604, 19518478, 20595978, -14630269, -30758946, -21143588, -3400540, 12128451, -13183939, -8664560, +-10970957, -39120172, -33819648, 17804786, -28387586, -5753646, 10162966, -23408646, -37869800, 14540612, +19926500, -2467459, -45597520, 20491826, 17945448, 57795764, 303869, 15243376, 11334956, -24551106, +9476845, -7554848, -49842560, -7525320, 30524870, 7379291, -25200184, -62459560, 39560944, 50662896, +-14993731, 41015328, 47590920, 2610803, 2175401, 37760280, -24330990, 2069101, 62978716, -46225660, +27008364, -39557184, -10908143, -3017215, 27118960, -8971113, 3940096, 15458124, -479426, -34931504, +38763692, -6755984, -4560719, 6256694, 16173236, -26141856, 11563126, 7144678, -4020626, 8419747, +9391483, -24145770, -3365644, 6116571, 12834436, 27194122, -2320893, -23051626, 11873974, 27946816, +-21949430, 27295590, -12792560, -2335389, -9533754, 30771830, -21023328, 7738458, 18751290, -12465606, +4590247, 3962644, -17594870, 4473746, 7329899, -2618320, -13440026, 9334038, 10749229, -5385889, +21580064, -32021128, 7811472, 10424422, 146029, 2864206, 4154844, 22796612, -5309654, 12883828, +-26446262, -82738784, 22180822, -9375377, 61703112, -21123722, -13872207, -24698210, -71238472, 32631550, +-41631120, -24023900, 987843, 61740, 54465016, -39031052, -27709518, 36183488, 21171504, 18918258, +-7095823, 18072686, -12996571, -17952426, -16931834, 42378444, 34855808, 55059332, -17807472, -20495584, +652298, -3558381, 19858856, -33033130, 6766721, -34731252, 18250390, 34170760, 11373610, -28059022, +18804978, -24739012, 55433532, 28432684, 7538742, 7536057, -8982387, -43734580, 24354612, -59338732, +12021077, 11054172, 28614146, 23010824, -51654496, 15452755, -32688996, -19184008, 13560285, -5110474, +18724984, 12228846, -47286516, 19128174, 42640972, 56893820, -16945256, 16780974, -23678692, 39906688, +-57200912, -3051038, -10785200, 17864380, 36893232, 53561464, -43386148, 10619307, -57908508, 36845988, +75211320, -19312858, -52052320, -4246649, -39381092, 49588620, 12124693, -25489558, -7672959, 2763812, +-8999567, 35358320, 12858058, -20198158, 18585398, -28549722, 1328219, 26478474, -6089727, -32901596, +35751308, -52405044, 14595373, -8072928, 20325932, -1514513, 12410845, -12249784, -7008850, 5093831, +4015258, 5311264, 24193014, -25580826, -21875342, 929324, 5123359, -6117644, -27030376, -19605452, +38100120, 10151692, -17823040, -20142322, -44806708, 52586504, 40779640, -16448651, -14816027, -31188442, +523986, 39176544, 6932614, -16959216, -6606197, -9154186, 5728950, 3877819, 1476395, -5181878, +-2567317, 7073275, -1131187, -4376572, -3366718, 4583804, 1416802, 9460202, -4684736, -66025460, +47392816, -6887517, -975494, 14627048, 13820131, 17579302, 5956583, 8176007, -22106734, 20938502, +6767258, -24191404, 16583942, -10105521, 426812, 20453708, 13108240, -34077880, 19489488, -16546898, +28512678, -20983062, 7806640, -11110544, 13691819, -10626823, 6720550, -15436112, 32673964, -3612068, +1657321, 8701067, 11476153, -16936666, -2579128, 6507413, 11420855, 8931921, -10427107, 3265786, +1250372, -33170570, -1910724, 7632157, 12701292, 4417374, 8422431, -29917668, 5424544, -2461016, +3723737, 5942624, -4986457, 5577552, 5646809, 1985349, -6263136, -7348152, -1462973, 32981054, +-11077258, 5951214, 13331042, -7831336, 12725451, -14331769, 12294344, 5203353, -8289287, -14418742, +9376987, -9160092, 7528004, -13051869, -9797357, -5640903, 16310675, -4791036, 2298881, 2305324, +-312996, 2892124, -11470784, 8485782, -7109782, 19600084, -18173080, 8049306, -10507101, 9322227, +-8426189, 7282117, 1060857, 12947179, -11110007, 5584531, -5270462, -175020, 3288334, 7257421, +-7727183, 1115081, -8400419, 12192338, -10120554, -3979824, 7504919, 1777043, -4483409, -2537252, +8376260, 3994857, -17219598, 9157407, 1796907, -870268, -1003949, 2674691, -1345399, 934155, +-478889, 1340030, 1538135, 3704946, -4183298, 11914239, -15506443, 4250407, -2011655, 2531883, +-2132988, 3706557, -1333587, -2991445, -562104, 1373316, -3438121, 51835424, -3731790, -16790100, +-25591026, -11638825, -14362371, 18807124, 10884521, -13673565, 1147830, 1612760, 6152541, 845572, +13032541, 4497905, 10267656, -3514357, -358093, -3074123, 4820564, 11123965, -10310606, -60130, +-5095442, 369367, 13571023, -7682623, 1337882, -3467112, 5358509, 2766496, -7418483, -2747169, +7999377, -2440615, 13031468, 9266392, -13553306, 4364761, 2902861, 7136625, 3036542, -12816719, +8711804, -2386928, 8474507, 6774237, -15289010, 4220342, 75699, 3467649, -1677722, -6708739, +10954851, -2663954, 4991826, 282931, -3244311, 5078799, -6483790, -891743, 9147207, -6233608, +-7470022, 15209553, -9762461, 14191646, -1432909, -11445014, 23520852, -21525840, 18786724, -6614250, +-11185705, 11904576, -10987063, 3304441, 3875134, -10765336, 9146670, -1909113, -643171, 5844914, +-7455527, 9865003, -3128347, -716723, 2479807, -1636383, 3511673, -1604170, 616865, 2909304, +-2704756, 4627291, -471910, -2565706, 5703180, -8694624, 4712116, -3840238, -1726040, 5498632, +526670, -1593433, 2901251, -2024540, 2882997, 1483911, -3974455, 2766496, 629213, -865973, +-610422, 2506650, 609885, 4582730, -3483755, 1345399, 668404, -2498597, 5105643, -1392643, +-704375, -25298432, -43661564, 55049668, 157315520, 24978456, 15157476, -114990768, -142377088, -45506788, +-28068686, 96324304, 146695680, 75618808, 21789980, -49328772, -106307416, -96799976, -81243600, 6495601, +121512680, 101782136, 58229556, 19874424, -52140368, -67434208, -53709640, -51753284, -18371186, 24640764, +33679524, 69919920, 49918796, 12196097, -17032230, -9906342, -56323128, -27259620, -28508382, -38434052, +22825066, 43255152, 24890410, 62943284, 16614007, -14875619, -24247238, -41751376, -33130304, -5116917, +-10304700, 12896176, 25936234, 23242216, 16481937, 11341398, -5804112, -22898082, -16314970, -19034222, +6067178, 22327924, 7266548, 5529234, -9746891, -19909858, -3813394, 10201, -367757, 16230681, +14410152, 16268799, 6324876, -5528160, -17451526, -25116968, -25837450, -16699907, 17784922, 26491896, +32720134, 22734872, -5778342, -12766253, -13680545, -26926224, -11989938, 9904731, 5115306, 4945118, +7796977, 3835943, 2946348, -4123169, -5485210, 4315906, 9302362, -140123, -880468, -6396817, +-8946417, -4558034, -5461588, -3112241, 6880001, -1168231, 14466524, 18000744, 10307922, -6157373, +-10259066, -11367705, -14500883, -10495289, -14350559, 7701950, 19622632, 18016314, 10569915, 11274826, +4184909, -10974178, -21633750, -22013854, -11273215, -2219424, 6925098, 15789374, 23040888, 19011136, +3513820, -12138651, -20381230, -14836965, -4997732, 207769, 5508833, 3605625, 8662949, 11211475, +3253438, -4759361, -6631967, -3634616, -2797098, -2614025, -810138, 856846, 5131412, 3191161, +310311, -6979, -373662, -967978, -2421825, -2735894, 886374, 2241436, 1613297, -320512, +-107374, -259846, -778463, -897111, 475131, 438087, 727460, 233002, 355945, -464930, +-589484, -1054415, -642098, 246424, 1287953, 281320, 518080, 476741, 131533, -660351, +18254, -678605, -1860795, -1241782, 1226750, 1447941, 1504849, 761283, 38118, -990527, +-404264, -636729, -335007, -603443, 261993, 47245, 219580, 94489, 739271, 363998, +710817, 58519, -84289, -674847, -530428, -1053878, -476205, -245350, 821413, 700617, +1255204, 605054, 204548, -974421, -830539, -923955, -242666, -271657, 722628, 524523, +583579, -68719, 97174, -347892, 54761, -282394, 124017, -255551, 161598, -164819, +217970, -199179, 176094, -146566, 273267, -143345, 193274, -186831, 167504, -221728, +181999, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -2850785, -10916733, 1292248, 2952253, 1063004, 1553168, -2618320, -6614787, -1257889, 3488587, 1264868, --3275450, -440771, 2668249, -670015, -3941706, 1207960, -4541928, -2793339, -142271, 1270237, --1291711, -1003949, 2814277, -3893388, -93416, 519691, 1894618, 1524713, 1442572, 4807679, -2161979, -5923297, -1514513, -2679523, 755377, -129923, -446677, -3719979, -4877472, 6490770, --2980707, 1606318, 1886564, 1646583, -6131066, -3461744, -1602023, 703301, -475131, -164819, --557272, 1061931, 2346663, -3180423, -537, 1748589, 2009508, 2418604, 887985, 74088, -2321967, 851477, -995359, -264141, 3765076, -2756295, -2939905, -1559610, -1173600, 3241090, -1906429, 797253, -1188095, 3125663, -1368484, 1636383, -3645354, -314069, 292595, 795106, -769873, -2916283, 810675, 2124935, 1063541, 390305, -252866, 2770791, 1315871, -237834, -1766305, 1079647, 470299, -361851, 603443, 510564, 397821, -481036, 683974, 228707, --530965, -395674, 966905, 250719, -71404, 54224, 59593, 202400, -860067, 676457, --223338, 541166, -668941, -6176700, -3781182, 2685965, -6119792, -8559333, 1632088, 776315, -1020592, 1293859, 1169842, -7354058, -1248225, 2182380, -4728222, 4960151, 4745939, 4143570, --1703491, 412317, 1069447, 3180960, 674847, -73014, 576063, -2105071, 1941862, -739271, --823023, -972810, 6028524, -3590593, 2057289, -2255395, -2014340, -2022393, 1566053, 3352222, --3590056, -1736777, -1966558, 2461016, 2241973, 3722663, 2462627, 522375, 3188476, -2727304, -1897302, 767725, 796716, 6804839, 1554241, 3377992, -5611375, -1475321, 2244657, -2756832, -2589329, -1177358, -2097018, 750009, 4016331, 2767033, 1824824, -971200, 781147, 3054259, --3719442, 4861366, -711891, 3987340, -1663763, 3293166, 3852586, 3310346, -1890859, -4859219, --7256884, -4845797, 415538, -2533494, 4702989, 807991, 689879, 1291175, -3452080, -1034013, --1583769, 1725503, -976031, -637266, 2038499, -2544231, -962073, 1028645, -1479079, 132607, --1644973, -1253594, -1064078, -271657, 933082, 284005, 117575, -1731409, 10483478, 7463043, -6187438, 5075041, 5805185, 2392834, -417686, -171262, -2105071, -683437, 7623030, -3357054, --3378529, 5189394, 3920232, 4986457, -3486440, 1475858, -1298691, 1088237, 2273648, 3092913, -490163, -2345052, -1675574, -3003793, -1026497, -1876901, -5354214, -705985, 4558034, -3581466, --587874, 1620813, -2748242, -2567317, 2587181, -1440962, -3571265, -1983738, 2070711, -3129421, --3933116, -1862405, -1153736, 1275068, -2739116, -5777805, 424665, -1002875, -782221, 1595044, --4675609, -2347200, 103079, -2020782, 2603287, -719407, 1132261, -8485245, -2538863, 4708358, --1864016, -4699231, 1396401, 762357, 1320166, -1787243, -6669548, -3093987, 7530152, 450972, -2782602, 1529545, -1069984, 2230699, 3142842, 1255741, -1547262, -3659312, 1074, 834834, --2717104, 1170916, -3525095, -424128, -2246268, -1163936, -2976949, -630286, -1700270, -2226941, --1667521, 266825, -741419, 321049, -814433, 233539, -1504312, 1012002, 576599, -477278, --278636, 1334661, -36507, -568009, -1341640, -751619, -612570, -166430, 120796, -32212, --1549410, 14756971, 9152038, 8559333, 212601, 813896, 747861, -3572339, -7780334, -3004330, -5980205, -4515621, 2741263, 7962870, 707059, -2573759, -939524, -1657321, -786516, 3201361, -4663261, 131533, 1418413, 1846299, 3061775, 150324, -4150012, 1269700, -6725919, -2072859, --796716, -1914482, -1171989, 820339, -1563368, -3586835, -2716030, -1305670, 353798, -1551020, --4056597, 4873178, -1777580, 337692, -1213865, -3226057, 4075387, 11166915, 2749853, -3904662, -6665253, 1499481, -1988570, 2002529, -1097364, -4318590, 64961, -1816234, 1714229, -3741454, --6417755, 245887, 1116155, -7844758, 2383170, 1613834, 4420058, 2480344, 5827734, -1966558, --3865471, -2299418, -1175210, 2813741, -991064, -5042292, 3475702, -2460480, -4543539, 3126199, --4538707, -2508798, 1487669, -1657857, 1626719, -1093606, -1849520, 1518808, 3926674, -898722, --1872069, -695248, 38655, 1363115, 2773475, 787053, -754841, -1016297, -957778, -329639, -690953, -1973538, -649614, -578747, 3038153, 1526324, 2163053, -351650, 209917, 1644973, -1147293, 797790, -46708, 283468, -299574, 854162, -511101, -406411, -7558069, -12109660, --3636764, -6091338, 8691940, -2035278, -996432, 3166465, -7908646, -5680631, 4840428, -3928285, --3527779, -266825, -268972, 780073, 3206193, -1395328, 1488206, -2148021, -1491427, -219580, --1314260, -3563749, -261993, -823560, 3697430, 3617436, 3288334, -4400194, 2057289, 1388348, -6096706, -3125126, -178241, -2151242, -4581120, 6512244, -6206765, -3148748, -2390149, 1475321, -5513128, -5142687, 5701032, -693637, 3092377, 4634270, 806917, 3553012, -6694781, 1402844, --2500208, 266288, -7094749, 51540, -2420751, -6470368, -4870493, 300111, 4750234, 163746, --3399467, 5281736, -1808181, 3020973, -388158, -6716792, 9313637, -5879274, -1115618, -3382824, -2351495, 3678103, 2526515, 3386045, 7544647, 5644661, -928250, 1107565, 3578245, 2143726, --2645163, 3723200, 3002182, -656056, 1718524, -3839701, -5136244, -649077, -1637456, 2803540, --3001645, -729071, -2885144, -773094, -1312649, -535260, 894964, 974958, 616328, -233002, --709743, 1637456, 906775, -1908576, 1322313, -24159, -4452808, -510027, -1591285, 2444910, --666257, -416075, 948651, -605590, 904091, 1888712, -120796, 1182190, 1400696, -389768, -528818, 2706366, 467615, 3145527, -8428336, -12265353, 1467805, 920734, 787590, 7741142, --2435783, -8636642, 1008244, 894427, -2148558, -590558, -7402913, -1582159, 1040456, 1016297, -8506720, -1569811, 7634305, -1919314, -1837709, 529892, -7366943, 3089155, -2711198, 4451197, --1154273, -2022930, -2670933, -1457605, 371515, -5688148, 9766219, -6797323, -10759430, 3146064, -603980, -7732015, -2150705, -14745160, 357019, -5318244, 32749, -5765994, -4489315, 689342, -623844, 2417530, -4527433, 3591667, -5122286, -10217190, 1308354, 2691871, -2960843, 3204583, --1630477, -5719823, -4838818, -6932077, -3135326, -838056, 1220845, -2153926, 6432788, -93416, --1874753, 435939, 484794, 1202054, 1087164, 627065, -5972152, -5797132, 1305133, 3905736, -2478733, 546535, -1239635, 4878009, 2849711, -2452426, -1620276, -5719823, -2212982, 2371896, -1275068, -3177202, 1326608, -978179, -806917, -1559610, -1672890, -741419, -2238215, -1899986, -1053341, 329639, 1487132, 2269353, 279710, 1972464, 193810, -1529008, 2085207, 1111860, --316754, 151398, -1056025, -1285269, 53687, -41876, -1194538, -88047, -306553, -207769, -70867, -428423, 1384590, -2243584, -250719, -777926, 188979, 566936, 1416802, -105764, --18823768, -4697621, 721018, -4778688, -3532611, -5983427, 1520418, 2124398, 4248260, -3215320, --4041027, -4523675, 2234457, 5068062, -2552284, -2152316, -1321776, -767189, 2362769, -10472741, --2625299, 5932424, 1893007, -3061775, 1083406, 5254356, -554588, -1330903, 1795296, -323196, -12826383, -5529771, 3106335, 1041530, -5461051, 1788854, 1167694, -6159520, 4309463, -8754754, --896038, 7756711, 1658931, -221191, -1677722, -5984500, -5217849, 1385127, 3286187, -2251100, -1575716, 6425808, 3134789, -2664490, 3910031, -5698348, -13460428, -1772748, -5940477, 3732327, --3824132, 9526237, 4717485, -437013, -1615982, -12349642, 3842385, 4721243, -3841848, 7547868, --5917928, 2303176, -9881109, 4560182, 3393561, -11192148, -7176891, -2296197, 2710661, 3716757, -8102456, -1133335, -447750, 5293547, 1173600, 26307, -2416993, 1210644, 1173063, 1588601, -1682554, 431107, -271120, -1021129, -1212791, -3022583, -2562485, 2005750, 1371705, 1030255, -2441152, -1016834, 1151051, 1264331, -688805, 2139431, -340913, -27917, -565862, -2438468, --585726, 2786360, 574989, 2065879, -826244, 751619, -1154809, 3311957, 262530, 2775086, -1177358, -1381369, 673773, 4627291, 8022999, 18249852, 19654308, 3840238, 5960341, -23622, -2896956, 98784, 2167348, -5307506, 2537252, -3327526, 4443681, 4030290, 10181757, 1481764, --1920924, 6241661, 4669703, 7523172, 494995, 4656819, 2867965, -2405719, 2486786, 11236171, -1923609, -4939750, -2502355, 8302172, 5300527, 3964792, 7907035, -6036577, 2467459, 9212168, --9096741, -11087995, 3785477, 5864778, 9762461, -4219806, -7039452, 5776731, 2255932, -919123, -3764539, -1503775, -730681, -97711, 13846438, -4994510, 2929705, -3344169, -1967632, -1651952, -7298760, -981937, 16099148, 7610145, -7492034, 8876087, 2106682, 4122095, 2081985, 1906429, -2341831, -2945274, 5549635, -12634720, -3157875, 5747740, -12666395, 4376572, -10199474, 2418604, -11636677, 2815351, 106837, 3132642, 1277753, -3097208, 962073, -3289408, 569083, 2630131, --7524783, 4416300, -1206886, -1842541, 718870, 2391223, -1823214, -3078955, 1242856, 2782602, --1263794, -2600603, -2353105, -1501091, 1283658, -1832877, -1431835, 1742146, 2640331, 1142461, --1059246, 1590749, -918049, -3963718, -1571421, -46171, -1793149, 1153199, 1058710, 1685238, -2946885, 3993246, -1638530, 5625871, -1717987, -3249680, -867583, 2013803, 680752, -3300146, --1905355, -2389076, 30449708, 5063230, 4958003, -9058086, 13241384, -4532801, -370978, -3629784, -924492, -8679592, -445066, 3811247, 1151051, -7107634, 8804146, -2269890, -4271345, 1051193, -2893734, -9092446, -12312061, 4999342, -4970888, -7576859, 1647120, -226023, -3602404, 6331856, --6373195, 1981054, 6534793, -1307818, 9433896, 2727841, -11515881, -12422656, -5040681, 610422, -2421288, -9854266, 3690451, 3338800, 2033667, 2932389, 4463545, -10234907, -4823249, 2736968, --11017665, -4234838, -73551, -11789685, -6025839, -4149475, 2546916, -6125697, -12426414, -6162741, --6548752, 14446123, 7260106, -1371168, 2197413, -4095788, 11824045, 13777718, 1765232, 9176198, -7017977, 2517925, 1880122, -5575405, -973884, -4945655, 6976638, -9099962, 502511, -2327872, --13488882, -4329864, -1771137, 7248831, -6572374, 3542811, 3402151, 1209033, 919660, 3037079, --3067144, 2385318, -1767379, 2668249, -517007, 4035659, 1444720, 171799, -2007360, -1014686, --5138929, 2673080, -531502, 4350265, -4153234, -204548, -238908, 2512556, -263067, 2222646, -1242856, 1117765, 1505923, 482647, -2709051, 3180423, 4522601, -2394444, -2884071, -3840775, --1287417, -444529, -1086090, 160524, -755377, -20623896, 13919989, 22358526, -16778826, -9985799, -4594005, 4010426, -3416110, 7342784, 1981591, -6255620, -7655779, -163209, -2474438, -5462125, -2769717, -2517388, 333934, 6171331, -8342974, 1737851, 1089311, -4954782, 680752, -7861401, -1503239, 11498164, 5843840, -1173600, -3733400, -965831, -6607807, -7022272, 3408057, 5799817, --1874216, -3249680, -2332704, 3456375, 5764383, 2756832, 10593000, -5754183, 4334159, -2790655, -1003949, 6600828, -2431488, -2134599, -12702903, -1976759, -9848360, 4888747, 3314641, 12563853, --10854993, -4024384, -10509785, -17253958, -2947421, 7134478, -11944841, 2588792, -1377074, -8723079, --10288594, -12942347, 17243220, 598611, 10212895, 7500087, 8664023, -4012573, -11584601, -8776766, --10848014, 3701188, 8369281, -8134131, 3730716, 8941048, -6178311, 962073, 7221451, 8322036, -1932735, -3082713, 3511673, -1582696, 1831267, -9029095, -912144, 3351148, -3131568, 1060320, -459025, 294742, 1902134, 3280281, -3643206, -1361505, 1949378, 2906082, 736050, 1357210, -2825015, -739808, 3058554, -2783139, 2055679, 3095598, 3457449, 278636, -1480153, 2673080, --2406792, 565862, -649077, -2070174, -1097364, -2048163, -660888, 758062, -2511482, -6682969, -2154463, 3420405, -16327855, 11842835, -1662152, -5870684, 9785009, 3703336, -9924596, -13749264, --5585605, 205085, 73014, 831076, -5178120, 15977815, 6336151, 4930623, 3427921, 5120675, --5043902, 1337346, 2910914, 2448131, 13975287, 1611150, -21422760, 2733210, 8568460, -7781407, --12159589, -2406792, -6721087, -3710315, 732292, 15081778, 8706436, -1417876, -611496, -4420595, --13388487, -4345433, -11110544, 7820599, 10300405, 216359, -6162741, -2065342, -2719251, 4923643, -6443525, 7215008, -16821240, 3250217, 268972, 1517734, 11183558, -6650220, 4394826, -6068789, --4723391, 1257352, 7199976, 13573170, -2469606, -8716636, 2506650, -15724412, 12253005, 6820408, --1895154, -6486475, 3060701, -3621731, -8124468, -6455873, -7402913, -3357054, -1836099, 483184, -6306086, -5092221, 17968532, 766652, -3154117, 1049583, 5096516, 239444, -586800, 5932961, -3709778, 3048890, -159451, -2907156, -2624225, -715112, -803696, -2695629, -7841000, 3898220, -3336653, -2856690, 625992, -4180614, -3496640, -1484448, -1220308, -170725, 6142877, -1420560, --2477659, -1139777, -808528, 3947612, 6871948, -2472828, 3658775, -1200980, -5007932, 5180268, --5392869, -4106526, -3093987, -4151086, 401043, 2988224, 1121523, 3059091, -425202, -1333051, --776315, -3413962, 1472100, -2027761, -4248797, 2659122, -1977296, -2020782, -1938641, -261993, --1565516, -128849, -1367410, -1098438, -215285, -514322, -7397545, -1302449, 7330973, -13463112, --4345970, 9386114, -11687143, -751082, -1532230, -1096827, -13545790, 13460964, 5247913, -8683887, --1976759, -3491809, -3744138, -19554450, -3214783, -8714489, -22944790, 5219996, 3070365, -9842991, --8891119, -11672110, -14166413, 12123082, 6194954, 12741020, 18254, 26292180, 797790, 13925895, -18188112, -1753957, 5267241, 19573776, -13337484, 6315213, -8206609, 13590350, -4568235, 26086020, -11243688, -7594576, -12504797, 2406256, 5524939, 11113765, 2448668, -8890582, -2575370, 8903467, -18651970, -7573101, 12364137, -4264903, 7373385, -14545980, 5459441, -7727183, 5467494, 1373853, -1524177, -2314987, 11351599, 16869020, -30378840, 9480603, 5783711, 4846334, -5913633, 4338454, --21928492, 2230699, -76236, -2948495, -8664023, -6729677, -7558606, -1667521, 14852534, -8424041, --5648956, -12013024, -17180, 11407433, -5987185, -5759015, 8051990, 85899, 5714991, 1770063, --1995549, 545998, 2248952, -5532992, 2516851, 1591285, -5587216, -3874597, -2986076, 1888712, -2957085, 3948686, 9881109, -704912, 7358890, 4261145, 2054605, -4791573, -2126009, -7437273, --4053376, -908922, -3146064, -3322157, 3827890, 2921652, 4670240, 7064148, 715649, -1107028, --1387811, -3863323, 2044941, -797790, -521302, 2615635, -3500935, 14851997, 15925202, -3527242, -16555488, -915365, -3370476, 1233729, 9338333, -3539590, -4131222, -1994476, -11651709, 1854889, --3291019, 18392660, 12219719, -8868571, -9255655, -17595944, -6350109, 12658879, 22997402, -10504416, -7150047, 1466731, 3084324, 12422119, 9006546, -18025978, 3633006, -6480032, -3583077, -7477001, --3982509, -7887171, -17242146, 2963528, 11639361, 4368519, 27174258, -6658810, -3673808, 18765786, --6802155, -1118839, -4138738, 4921496, -20621748, -13344463, 7252053, 15406048, 22613540, 26847304, --19717122, -10330470, -975494, 8936216, -825171, 30472256, 8562017, 4497905, -23633058, 1577864, -235686, 11391864, 15015206, -11209328, -3631932, 4607963, -4795331, -66572, 17051558, 6063420, --16732656, 4317516, 8922795, -8130373, 26483306, -9201431, -14063334, -19896436, 14724222, -3237332, --16581258, -13258027, -2957085, -677531, -6558415, 333397, -7145752, 1343251, -9973988, 644245, -4971962, -3520263, 3929895, 711891, -6004901, 624918, -28454, -1218160, 715649, -4174708, -5055714, 2147, -2477123, 5658083, 5860483, 217433, -1528472, 2508798, -5388037, -2308008, --4314295, -862215, 4576825, -3580929, 2044404, 4412005, -8135742, -2961917, -1618129, 1330366, --1476395, 3519189, 8025684, -2261300, -4674535, -2327336, 5212480, 1451699, 563178, 4115116, --2304787, -1703491, -1415729, -2309082, -1845762, 3610457, 31375272, 14790257, -8170639, -2705293, --28840706, 2190970, 7700877, 1955284, 43151536, -5511517, -3215320, -18996104, -16313896, 6650757, --13333726, -8236674, -8931384, -6102612, 10744934, -7062537, -12263742, -10678362, 992137, 10733660, --13878650, 3060164, 6315213, 1321239, 15575162, -1880659, 1241782, -15883326, -22229140, -9240622, -10210748, -12354473, 2991445, -10388452, -38830264, -20998632, 11651173, 745177, -22251152, 3342558, -31005368, -1523103, -804770, -12199855, 6780680, -13455059, -23950886, 505196, 3630858, -9393093, -4586488, 8909373, -2232846, -7936026, 6445136, 8273718, 15538118, -9061307, 11669963, 14870787, -6291590, 25944286, 2900714, -16320876, 18977312, 1028645, 3153580, -3584687, -3855807, 11620034, --11652246, -1791001, 28880434, 22553948, -14070850, 14390288, -4229469, 26707180, 11266236, -9431211, --21472688, -1060857, -7880728, -9432822, 5998459, -8513162, -302258, -2277407, -7541426, -12681965, --2510409, 10489384, -11485816, -71941, -7157563, 954557, 4414153, -4760971, -13437879, -2494302, --6398965, 8006893, 4859756, -3397856, -8925479, -3815005, -9601399, 5592048, -4759898, 2972117, -3654480, 5320391, 4271345, -7547332, -5341329, -8462159, 2360622, 5192616, 593779, 10480257, -11164767, 5973763, 4466229, -3062312, 5901822, -854162, -3010772, -22802518, -23571318, -28825674, -39631812, -22069690, 5479305, -1500554, -12195560, 19677930, -23171348, 9870372, 42135776, 25455734, -6284611, -34190088, -1591822, -22652194, -11033234, -20706574, -1622424, 5532455, -3357054, 15793668, --7399155, 2403034, 8268886, 22185654, 3453691, 2836826, 27507654, -18149994, -2200097, 11727945, --4903779, -14129369, -8879308, 13440563, -11592654, 5493263, 23609436, -6721087, -41589780, -2806761, -10850161, -51756504, 31440772, 23732378, -19185082, 31712428, 22014392, 14023605, 33504504, 483184, -17393544, 1736241, 2374043, 11715060, -20699058, 20798380, 28924458, 21755084, -22306450, -4654134, -31758598, -15447924, 25262460, 22605486, 53716084, 31967978, 2214056, 3485903, -6514392, 6489696, -9675488, -31117574, -43856984, -15606837, 4237522, 1458678, -5967320, 34433828, 16717623, 6336688, --14826764, 13546327, -10387915, -13856638, -6582038, 15497316, 18669150, 3348464, -2875481, -3687766, -962073, -21617644, -4660577, -5703717, 7362111, 3825742, -10703595, -8637179, -89657, 16756815, --4277788, -6667937, 888521, -6896644, -16691854, 8433705, -3246459, -6843494, -9594957, -75699, -6150393, 988379, -30000884, -1854889, 15482283, -2403034, 1077500, 2388002, 4835597, 12662637, -10656351, 336618, 355945, -5012227, -1077500, 2487860, 24160802, 29552060, -58117888, -53505628, -23430658, -15476915, -16644609, -7133941, -20145544, 7080791, -32732482, 41408316, 15786689, -17435956, --199179, -17054778, -12557948, -13767518, -15444702, -10241886, -39502960, -35770100, -6467147, -8207146, -2456185, 3282429, 7089918, -2605972, 5254893, 6548752, 17853106, 19462644, -7177964, -9969693, --11379516, -9906879, -22253300, 33341832, -11597485, 8076686, 25026238, 23387708, -8693014, -10118406, --18484466, -12341589, -15137075, 25626460, 2954401, 3113315, -31567472, -11327439, 46167676, -4505958, -42999600, -8687645, -15800648, -10151155, -17888538, -18593450, -3173444, 170188, -25279640, 2112587, -12430172, -1060320, 9823127, -58910844, -23557358, -16505022, 31515396, -7486665, 5393942, 10674067, -49342196, 13923747, -4272956, -5000416, 42529304, 25540024, 6493454, 8259222, -1903207, 33581276, --13727252, -19119046, 10615012, 15803332, 28287192, 26098906, -15002321, 17728552, 13508209, 14300094, -4520990, -10140955, -19847044, -17034914, 10933376, 14817637, 8171176, 5375152, 17715666, -1641214, --4524748, -913754, -1153736, 9164386, 5751498, 11939472, 21006686, 14718853, 23989002, 6506876, --20981452, 6881612, 6005975, 18639084, -27917, 14643691, 6514392, 14097693, 653909, -26616450, --3124052, -5712844, -1455994, -11895449, -6794639, -30775588, 63933808, -20638928, -12850542, 37904160, --24039468, -36267240, 33628520, -48824652, -14139569, 11512660, 8366060, -34060700, -13379360, 29234232, -167504, -5767068, -19037980, 22939958, -22787486, 1498944, 18041546, -6041409, 16563005, 103079, --8217346, 5538361, 3914863, -9912248, 15745887, -8702677, -3544422, 4683662, -338766, 950798, --2990371, 4649839, 9981504, 16145319, 23265838, 11385421, -9649718, -2728378, -14803679, 13610214, --4942434, -21399674, 4985920, 33823, -12189654, -29242284, 20522428, 1494112, -13531831, 32920924, -1872606, -10280541, -5975910, 48783848, -45727980, -49279916, 29979946, 46747496, -86427624, 333397, --32003948, -29131690, -12872554, 31343598, -24303610, 41507100, -5904507, -1136556, 55906516, -15904801, --43300788, 53631792, 63303524, -61614528, 68728064, -23294292, 1692754, 56680148, -19014358, -21891986, -15587510, 15118285, -7297687, -3032247, 10560251, 1932198, 1364726, -13699872, 18711562, -74088, --1193464, 166967, 2543695, 8244190, 5149129, -7024419, -7405598, 7644505, 18689550, -16358994, --14894947, -4253092, 19583440, -926102, 10502806, -3080029, 4434017, -181462, 4545686, -2495913, --3318936, -23337778, -9562745, 5485747, -8196945, -2626909, -8048769, -12774306, 19644644, 11850352, --33735356, 13194140, 17779554, -3806415, 76773, -12319577, 17642116, 37699612, -17431662, -24453396, --6270116, 5694590, 39033736, 28547038, -9734543, -3416647, 12443057, 31134754, -10113574, -2096481, -19674708, -25067576, -20893942, 16629576, -10914049, -8752606, -10018011, -1259499, -16749299, 1053878, -12137041, -7517804, 9465034, -8374650, -4671314, -5388574, -23300734, 3236258, -9197136, 14240501, -31432182, 1427540, 15870441, 12545063, 1594507, 5587216, 10124312, 32648194, -22874996, 15638513, -14412837, -17128866, 11708081, 10720238, 3934727, -15227807, -29488708, -30523796, 10420128, 10590852, --10982768, -50831476, 41575284, -14107894, -21700860, -13056701, 41829760, -19717658, 45705432, -253940, -15668578, -42838540, 40727564, -18694382, 18316424, -5702643, -57773216, -18615462, 11973832, -36244156, -37511708, 3722663, -52907556, -60317448, -30389042, 41502804, 10838887, -37536404, 45989972, -49138184, --1865090, 88028040, 13760538, 4771172, 9336722, 6446209, -22603876, 23884850, 2365990, 12086575, --14967424, 22951768, -12219719, -12456479, -9632001, -1540820, -24696, 6787122, -1705102, -3648038, -5187247, -8319889, -16075526, 14976551, -4960151, -2848637, -19174344, 8834748, 5086852, 8375186, -3050501, 9701257, -6658810, 2114735, 28169080, -3420942, 1023276, 14326400, -14851460, -3508452, -1570347, -1782411, 11458436, -11259257, 12785581, -4406637, -30219390, 1795296, -7277822, 13682155, -10668699, 9286256, -10496363, 12161737, -19442244, -36686536, -17180, -38984344, 10567230, -3352222, --7178501, 13211319, 21432960, -13737453, 2917894, 23875186, -18803904, 32335198, -4489315, -35330936, -30212410, -14518600, -6703370, 27182848, -34892852, 9247601, 383326, 12687333, -5658083, -12640089, --53157736, 12234751, -22067542, -53097608, 64071784, -43198780, -18251464, -8515310, -14861124, -32594506, -18104360, 44438952, -27692876, 12518219, -40069360, -22473416, -22935126, 20107964, 3368865, 58271968, --10261751, -4810900, -17618492, -50180788, -194884, 24453934, -18818936, 20527260, 24390046, -20775294, -1814087, -17717814, -74457552, -38903276, -23104240, -77945064, 49556408, 65650184, 30598958, -66100084, --53413288, -118582976, 16860430, 140959216, 64918432, 24890410, -37352256, -130084896, -29840896, 30083562, -88599272, 89115200, -60890288, -51290500, -24110872, 11587285, 5825587, 96792992, 1307281, -11864847, -7558069, -9669582, -23977192, 33994128, 5781563, -7390028, 18513994, -15539729, -26720066, 18599356, -15831786, -45024144, 29896194, -6838662, -10256919, -24058796, 25040734, -24317568, 28708098, -14458471, -29386704, -35260072, 13656922, -9981504, 70867, 25193204, 41103372, 11565810, -15835008, -11174968, --3003256, 22719304, -4092567, 32751810, -26232586, -20557860, 9051107, 32434520, 3394098, 19652696, --26386668, -7839926, -8767639, 20141250, -1759326, 2996814, -6166500, -56150792, 40827960, -8283918, --8521215, 667331, 18577344, 9664, -3149822, 13157632, 4984847, 4160213, 21857088, -13964012, -195958, 10838887, -3546032, -2360622, 13912473, -12922483, -2705293, 3486440, 21672404, -14422500, --9652402, 11608760, -210990, 6374269, -20767778, 27378806, -6250251, 9024800, -5700496, 3245922, -15451682, 6321655, -3192235, 12666932, -4593468, 12807056, -9992778, -1094143, 13901199, -3440806, --5284958, -27668716, 3122441, 20823612, 2560338, 9592273, -13499619, -4709432, -7945690, -9012452, --3223910, 14980309, -5240934, 9007620, -11709155, -14710800, -5837935, 3113315, 28308130, -11037529, -13059922, 531502, 3124589, -13979045, 7813083, 14210973, 1124745, -13522705, 10558103, -9111773, -7191923, -5676873, -3545496, -5442798, 2240899, 9882720, -4783520, -2911451, 5056250, -907312, --7387881, -1952600, 7947837, 6153078, -6357089, 845035, 7296076, -6442, -3867618, 827318, --6394670, 4765266, -59593, 2295123, -2704219, 1029182, 4786204, -2495376, 5546951, 704375, -5094905, 3319473, -7257421, -8031589, -2245731, 13263933, -8242579, 9130027, 7917772, -5782100, --13598403, 10324565, -8588861, 11703249, -723165, -2263985, -4529580, 1722282, 2397129, -1000727, --1192390, 746251, 1615445, -5630166, 53195316, 10498511, -28427314, -20284594, -31403190, -10028212, -6105833, 16653736, -5167920, -6804302, -5766531, -5656472, -5250598, 7585449, -3828427, -1117765, --1634772, -5584531, -1275068, 8344048, 1248225, -2475512, -8342974, 9584220, -12445741, 7296613, --4416837, -12305081, 95563, 5544803, 6328635, 4876399, -7201587, 1572495, -2281702, -4007205, -14805289, -13187697, -2360622, -573378, -870268, 1347009, -2162516, -7759396, 6538014, -12275017, -11709691, -1743757, -8163122, 2799782, -4194573, 10354629, -6039261, -3701725, 11246909, -10075993, -3529926, -4836133, -1070521, 8575439, -6107444, -2464238, 7742753, -5312338, 2062658, 773631, --6225018, 15206332, -13263396, -1152662, 5895380, -3398930, 9764608, -4428648, -2110977, 2530810, -3248069, -1063004, 2194192, -874563, -4274030, 3854196, 34897, 366146, 2159295, -288300, -3076807, -3075197, 932008, 600222, 723702, -387084, -1853815, 2474975, -316217, -664109, --1756105, 2187749, 3620658, -1221918, -1791001, 1108638, 2133525, -2644626, 2224256, -1996623, --1672890, 5722507, -834834, 2107755, 3062312, -3971234, 9790378, -3207804, -467615, -498753, --5581847, 5814312, -3591130, -5836861, 5229660, -25178172, -37771016, 49514532, 154568896, 13208098, -13481902, -105378096, -133237400, -27790050, -28198070, 78477104, 133639520, 68540696, 13228499, -48365628, --94039384, -66421668, -47443820, -2485176, 65125664, 95101312, 51438140, 11759084, -33318208, -59299004, --33160906, -31955630, -29876866, 18885508, 38789996, 38180648, 38517268, 9234717, -16648367, -6863895, --25319906, -39709120, -4362076, -11852499, -7974144, 35823248, 20744692, 29925184, 18197240, -13589813, --32622960, -7880728, -21189758, -3293166, 14886894, 4536559, 8062191, 16183437, -8170102, -11503533, --2603824, -6763500, 6578280, 10446434, 609885, 12898861, 7703561, -13562970, -12993887, -20784958, --17721572, 780073, 21479132, 32480690, 15695958, 4101694, -7505456, -21755084, -3684545, -24528558, --14996415, 11540577, 9108015, 27460948, 9303436, -6994891, 8144332, -14243722, -24656870, 4345970, -6318971, 8282308, 7711614, -1548336, -3033321, -2365453, -10218264, -7874823, 5445482, 8382703, -8489540, 8555038, -2311229, -8268349, -5420249, -3173981, 280784, -170188, -9290014, 2398739, -11843909, 6359773, 7396471, -2178085, -11785390, -6881075, -6928319, 2743947, 8384313, 5492190, -5209259, 2232846, -1621350, -8979703, -11766600, -5408975, 804770, 7337415, 11763915, 7169911, -7284802, 4563403, -7343857, -13770202, -17611514, -11453067, 5042829, 9943386, 12964359, 17875118, -5523865, -5325760, -8915815, -7279970, -5322002, -5087926, -5100274, -1471026, 4103305, 7919383, -7060390, 5502927, 3918621, 926102, -4853313, -8600135, -8225399, -4184909, -49929, 3730179, -5093831, 4672925, 2487860, 1524713, 624381, -717260, -3099893, -3832185, -3122978, -1045288, -1347546, 2326799, 1929514, 481036, -499290, 372052, 323196, 528281, 221191, -743566, --1465658, -465467, 770947, 235149, -1199370, -609885, 351114, 301185, -155156, 956167, -2083059, 1921998, -816581, -2188286, -1661079, -549756, -84826, -14496, -187905, 651761, -1414655, 1401233, 214212, -270046, -246424, -579821, -1079647, -862752, -547071, 243203, -555661, 992674, 790274, 294205, -211527, -266825, -624918, -544924, -489089, 25233, -382789, 657130, 253940, 87510, -261993, -265214, -382252, -9127, 214212, 388695, -97711, 89121, -155693, -163746, -266825, 10201, -2684, 128312, 16106, 113817, --43487, 49929, -78920, 36507, -69256, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +10916733, 1292248, 2952253, 1063004, 1553168, -2618320, -6614787, -1257889, 3488587, 1264868, +-3275450, -440771, 2668249, -670015, -3941706, 1207960, -4541928, -2793339, -142271, 1270237, +-1291711, -1003949, 2814277, -3893388, -93416, 519691, 1894618, 1524713, 1442572, 4807679, +2161979, -5923297, -1514513, -2679523, 755377, -129923, -446677, -3719979, -4877472, 6490770, +-2980707, 1606318, 1886564, 1646583, -6131066, -3461744, -1602023, 703301, -475131, -164819, +-557272, 1061931, 2346663, -3180423, -537, 1748589, 2009508, 2418604, 887985, 74088, +2321967, 851477, -995359, -264141, 3765076, -2756295, -2939905, -1559610, -1173600, 3241090, +1906429, 797253, -1188095, 3125663, -1368484, 1636383, -3645354, -314069, 292595, 795106, +769873, -2916283, 810675, 2124935, 1063541, 390305, -252866, 2770791, 1315871, -237834, +1766305, 1079647, 470299, -361851, 603443, 510564, 397821, -481036, 683974, 228707, +-530965, -395674, 966905, 250719, -71404, 54224, 59593, 202400, -860067, 676457, +-223338, 541166, -668941, -6176700, -3781182, 2685965, -6119792, -8559333, 1632088, 776315, +1020592, 1293859, 1169842, -7354058, -1248225, 2182380, -4728222, 4960151, 4745939, 4143570, +-1703491, 412317, 1069447, 3180960, 674847, -73014, 576063, -2105071, 1941862, -739271, +-823023, -972810, 6028524, -3590593, 2057289, -2255395, -2014340, -2022393, 1566053, 3352222, +-3590056, -1736777, -1966558, 2461016, 2241973, 3722663, 2462627, 522375, 3188476, -2727304, +1897302, 767725, 796716, 6804839, 1554241, 3377992, -5611375, -1475321, 2244657, -2756832, +2589329, -1177358, -2097018, 750009, 4016331, 2767033, 1824824, -971200, 781147, 3054259, +-3719442, 4861366, -711891, 3987340, -1663763, 3293166, 3852586, 3310346, -1890859, -4859219, +-7256884, -4845797, 415538, -2533494, 4702989, 807991, 689879, 1291175, -3452080, -1034013, +-1583769, 1725503, -976031, -637266, 2038499, -2544231, -962073, 1028645, -1479079, 132607, +-1644973, -1253594, -1064078, -271657, 933082, 284005, 117575, -1731409, 10483478, 7463043, +6187438, 5075041, 5805185, 2392834, -417686, -171262, -2105071, -683437, 7623030, -3357054, +-3378529, 5189394, 3920232, 4986457, -3486440, 1475858, -1298691, 1088237, 2273648, 3092913, +490163, -2345052, -1675574, -3003793, -1026497, -1876901, -5354214, -705985, 4558034, -3581466, +-587874, 1620813, -2748242, -2567317, 2587181, -1440962, -3571265, -1983738, 2070711, -3129421, +-3933116, -1862405, -1153736, 1275068, -2739116, -5777805, 424665, -1002875, -782221, 1595044, +-4675609, -2347200, 103079, -2020782, 2603287, -719407, 1132261, -8485245, -2538863, 4708358, +-1864016, -4699231, 1396401, 762357, 1320166, -1787243, -6669548, -3093987, 7530152, 450972, +2782602, 1529545, -1069984, 2230699, 3142842, 1255741, -1547262, -3659312, 1074, 834834, +-2717104, 1170916, -3525095, -424128, -2246268, -1163936, -2976949, -630286, -1700270, -2226941, +-1667521, 266825, -741419, 321049, -814433, 233539, -1504312, 1012002, 576599, -477278, +-278636, 1334661, -36507, -568009, -1341640, -751619, -612570, -166430, 120796, -32212, +-1549410, 14756971, 9152038, 8559333, 212601, 813896, 747861, -3572339, -7780334, -3004330, +5980205, -4515621, 2741263, 7962870, 707059, -2573759, -939524, -1657321, -786516, 3201361, +4663261, 131533, 1418413, 1846299, 3061775, 150324, -4150012, 1269700, -6725919, -2072859, +-796716, -1914482, -1171989, 820339, -1563368, -3586835, -2716030, -1305670, 353798, -1551020, +-4056597, 4873178, -1777580, 337692, -1213865, -3226057, 4075387, 11166915, 2749853, -3904662, +6665253, 1499481, -1988570, 2002529, -1097364, -4318590, 64961, -1816234, 1714229, -3741454, +-6417755, 245887, 1116155, -7844758, 2383170, 1613834, 4420058, 2480344, 5827734, -1966558, +-3865471, -2299418, -1175210, 2813741, -991064, -5042292, 3475702, -2460480, -4543539, 3126199, +-4538707, -2508798, 1487669, -1657857, 1626719, -1093606, -1849520, 1518808, 3926674, -898722, +-1872069, -695248, 38655, 1363115, 2773475, 787053, -754841, -1016297, -957778, -329639, +690953, -1973538, -649614, -578747, 3038153, 1526324, 2163053, -351650, 209917, 1644973, +1147293, 797790, -46708, 283468, -299574, 854162, -511101, -406411, -7558069, -12109660, +-3636764, -6091338, 8691940, -2035278, -996432, 3166465, -7908646, -5680631, 4840428, -3928285, +-3527779, -266825, -268972, 780073, 3206193, -1395328, 1488206, -2148021, -1491427, -219580, +-1314260, -3563749, -261993, -823560, 3697430, 3617436, 3288334, -4400194, 2057289, 1388348, +6096706, -3125126, -178241, -2151242, -4581120, 6512244, -6206765, -3148748, -2390149, 1475321, +5513128, -5142687, 5701032, -693637, 3092377, 4634270, 806917, 3553012, -6694781, 1402844, +-2500208, 266288, -7094749, 51540, -2420751, -6470368, -4870493, 300111, 4750234, 163746, +-3399467, 5281736, -1808181, 3020973, -388158, -6716792, 9313637, -5879274, -1115618, -3382824, +2351495, 3678103, 2526515, 3386045, 7544647, 5644661, -928250, 1107565, 3578245, 2143726, +-2645163, 3723200, 3002182, -656056, 1718524, -3839701, -5136244, -649077, -1637456, 2803540, +-3001645, -729071, -2885144, -773094, -1312649, -535260, 894964, 974958, 616328, -233002, +-709743, 1637456, 906775, -1908576, 1322313, -24159, -4452808, -510027, -1591285, 2444910, +-666257, -416075, 948651, -605590, 904091, 1888712, -120796, 1182190, 1400696, -389768, +528818, 2706366, 467615, 3145527, -8428336, -12265353, 1467805, 920734, 787590, 7741142, +-2435783, -8636642, 1008244, 894427, -2148558, -590558, -7402913, -1582159, 1040456, 1016297, +8506720, -1569811, 7634305, -1919314, -1837709, 529892, -7366943, 3089155, -2711198, 4451197, +-1154273, -2022930, -2670933, -1457605, 371515, -5688148, 9766219, -6797323, -10759430, 3146064, +603980, -7732015, -2150705, -14745160, 357019, -5318244, 32749, -5765994, -4489315, 689342, +623844, 2417530, -4527433, 3591667, -5122286, -10217190, 1308354, 2691871, -2960843, 3204583, +-1630477, -5719823, -4838818, -6932077, -3135326, -838056, 1220845, -2153926, 6432788, -93416, +-1874753, 435939, 484794, 1202054, 1087164, 627065, -5972152, -5797132, 1305133, 3905736, +2478733, 546535, -1239635, 4878009, 2849711, -2452426, -1620276, -5719823, -2212982, 2371896, +1275068, -3177202, 1326608, -978179, -806917, -1559610, -1672890, -741419, -2238215, -1899986, +1053341, 329639, 1487132, 2269353, 279710, 1972464, 193810, -1529008, 2085207, 1111860, +-316754, 151398, -1056025, -1285269, 53687, -41876, -1194538, -88047, -306553, -207769, +70867, -428423, 1384590, -2243584, -250719, -777926, 188979, 566936, 1416802, -105764, +-18823768, -4697621, 721018, -4778688, -3532611, -5983427, 1520418, 2124398, 4248260, -3215320, +-4041027, -4523675, 2234457, 5068062, -2552284, -2152316, -1321776, -767189, 2362769, -10472741, +-2625299, 5932424, 1893007, -3061775, 1083406, 5254356, -554588, -1330903, 1795296, -323196, +12826383, -5529771, 3106335, 1041530, -5461051, 1788854, 1167694, -6159520, 4309463, -8754754, +-896038, 7756711, 1658931, -221191, -1677722, -5984500, -5217849, 1385127, 3286187, -2251100, +1575716, 6425808, 3134789, -2664490, 3910031, -5698348, -13460428, -1772748, -5940477, 3732327, +-3824132, 9526237, 4717485, -437013, -1615982, -12349642, 3842385, 4721243, -3841848, 7547868, +-5917928, 2303176, -9881109, 4560182, 3393561, -11192148, -7176891, -2296197, 2710661, 3716757, +8102456, -1133335, -447750, 5293547, 1173600, 26307, -2416993, 1210644, 1173063, 1588601, +1682554, 431107, -271120, -1021129, -1212791, -3022583, -2562485, 2005750, 1371705, 1030255, +2441152, -1016834, 1151051, 1264331, -688805, 2139431, -340913, -27917, -565862, -2438468, +-585726, 2786360, 574989, 2065879, -826244, 751619, -1154809, 3311957, 262530, 2775086, +1177358, -1381369, 673773, 4627291, 8022999, 18249852, 19654308, 3840238, 5960341, -23622, +2896956, 98784, 2167348, -5307506, 2537252, -3327526, 4443681, 4030290, 10181757, 1481764, +-1920924, 6241661, 4669703, 7523172, 494995, 4656819, 2867965, -2405719, 2486786, 11236171, +1923609, -4939750, -2502355, 8302172, 5300527, 3964792, 7907035, -6036577, 2467459, 9212168, +-9096741, -11087995, 3785477, 5864778, 9762461, -4219806, -7039452, 5776731, 2255932, -919123, +3764539, -1503775, -730681, -97711, 13846438, -4994510, 2929705, -3344169, -1967632, -1651952, +7298760, -981937, 16099148, 7610145, -7492034, 8876087, 2106682, 4122095, 2081985, 1906429, +2341831, -2945274, 5549635, -12634720, -3157875, 5747740, -12666395, 4376572, -10199474, 2418604, +11636677, 2815351, 106837, 3132642, 1277753, -3097208, 962073, -3289408, 569083, 2630131, +-7524783, 4416300, -1206886, -1842541, 718870, 2391223, -1823214, -3078955, 1242856, 2782602, +-1263794, -2600603, -2353105, -1501091, 1283658, -1832877, -1431835, 1742146, 2640331, 1142461, +-1059246, 1590749, -918049, -3963718, -1571421, -46171, -1793149, 1153199, 1058710, 1685238, +2946885, 3993246, -1638530, 5625871, -1717987, -3249680, -867583, 2013803, 680752, -3300146, +-1905355, -2389076, 30449708, 5063230, 4958003, -9058086, 13241384, -4532801, -370978, -3629784, +924492, -8679592, -445066, 3811247, 1151051, -7107634, 8804146, -2269890, -4271345, 1051193, +2893734, -9092446, -12312061, 4999342, -4970888, -7576859, 1647120, -226023, -3602404, 6331856, +-6373195, 1981054, 6534793, -1307818, 9433896, 2727841, -11515881, -12422656, -5040681, 610422, +2421288, -9854266, 3690451, 3338800, 2033667, 2932389, 4463545, -10234907, -4823249, 2736968, +-11017665, -4234838, -73551, -11789685, -6025839, -4149475, 2546916, -6125697, -12426414, -6162741, +-6548752, 14446123, 7260106, -1371168, 2197413, -4095788, 11824045, 13777718, 1765232, 9176198, +7017977, 2517925, 1880122, -5575405, -973884, -4945655, 6976638, -9099962, 502511, -2327872, +-13488882, -4329864, -1771137, 7248831, -6572374, 3542811, 3402151, 1209033, 919660, 3037079, +-3067144, 2385318, -1767379, 2668249, -517007, 4035659, 1444720, 171799, -2007360, -1014686, +-5138929, 2673080, -531502, 4350265, -4153234, -204548, -238908, 2512556, -263067, 2222646, +1242856, 1117765, 1505923, 482647, -2709051, 3180423, 4522601, -2394444, -2884071, -3840775, +-1287417, -444529, -1086090, 160524, -755377, -20623896, 13919989, 22358526, -16778826, -9985799, +4594005, 4010426, -3416110, 7342784, 1981591, -6255620, -7655779, -163209, -2474438, -5462125, +2769717, -2517388, 333934, 6171331, -8342974, 1737851, 1089311, -4954782, 680752, -7861401, +1503239, 11498164, 5843840, -1173600, -3733400, -965831, -6607807, -7022272, 3408057, 5799817, +-1874216, -3249680, -2332704, 3456375, 5764383, 2756832, 10593000, -5754183, 4334159, -2790655, +1003949, 6600828, -2431488, -2134599, -12702903, -1976759, -9848360, 4888747, 3314641, 12563853, +-10854993, -4024384, -10509785, -17253958, -2947421, 7134478, -11944841, 2588792, -1377074, -8723079, +-10288594, -12942347, 17243220, 598611, 10212895, 7500087, 8664023, -4012573, -11584601, -8776766, +-10848014, 3701188, 8369281, -8134131, 3730716, 8941048, -6178311, 962073, 7221451, 8322036, +1932735, -3082713, 3511673, -1582696, 1831267, -9029095, -912144, 3351148, -3131568, 1060320, +459025, 294742, 1902134, 3280281, -3643206, -1361505, 1949378, 2906082, 736050, 1357210, +2825015, -739808, 3058554, -2783139, 2055679, 3095598, 3457449, 278636, -1480153, 2673080, +-2406792, 565862, -649077, -2070174, -1097364, -2048163, -660888, 758062, -2511482, -6682969, +2154463, 3420405, -16327855, 11842835, -1662152, -5870684, 9785009, 3703336, -9924596, -13749264, +-5585605, 205085, 73014, 831076, -5178120, 15977815, 6336151, 4930623, 3427921, 5120675, +-5043902, 1337346, 2910914, 2448131, 13975287, 1611150, -21422760, 2733210, 8568460, -7781407, +-12159589, -2406792, -6721087, -3710315, 732292, 15081778, 8706436, -1417876, -611496, -4420595, +-13388487, -4345433, -11110544, 7820599, 10300405, 216359, -6162741, -2065342, -2719251, 4923643, +6443525, 7215008, -16821240, 3250217, 268972, 1517734, 11183558, -6650220, 4394826, -6068789, +-4723391, 1257352, 7199976, 13573170, -2469606, -8716636, 2506650, -15724412, 12253005, 6820408, +-1895154, -6486475, 3060701, -3621731, -8124468, -6455873, -7402913, -3357054, -1836099, 483184, +6306086, -5092221, 17968532, 766652, -3154117, 1049583, 5096516, 239444, -586800, 5932961, +3709778, 3048890, -159451, -2907156, -2624225, -715112, -803696, -2695629, -7841000, 3898220, +3336653, -2856690, 625992, -4180614, -3496640, -1484448, -1220308, -170725, 6142877, -1420560, +-2477659, -1139777, -808528, 3947612, 6871948, -2472828, 3658775, -1200980, -5007932, 5180268, +-5392869, -4106526, -3093987, -4151086, 401043, 2988224, 1121523, 3059091, -425202, -1333051, +-776315, -3413962, 1472100, -2027761, -4248797, 2659122, -1977296, -2020782, -1938641, -261993, +-1565516, -128849, -1367410, -1098438, -215285, -514322, -7397545, -1302449, 7330973, -13463112, +-4345970, 9386114, -11687143, -751082, -1532230, -1096827, -13545790, 13460964, 5247913, -8683887, +-1976759, -3491809, -3744138, -19554450, -3214783, -8714489, -22944790, 5219996, 3070365, -9842991, +-8891119, -11672110, -14166413, 12123082, 6194954, 12741020, 18254, 26292180, 797790, 13925895, +18188112, -1753957, 5267241, 19573776, -13337484, 6315213, -8206609, 13590350, -4568235, 26086020, +11243688, -7594576, -12504797, 2406256, 5524939, 11113765, 2448668, -8890582, -2575370, 8903467, +18651970, -7573101, 12364137, -4264903, 7373385, -14545980, 5459441, -7727183, 5467494, 1373853, +1524177, -2314987, 11351599, 16869020, -30378840, 9480603, 5783711, 4846334, -5913633, 4338454, +-21928492, 2230699, -76236, -2948495, -8664023, -6729677, -7558606, -1667521, 14852534, -8424041, +-5648956, -12013024, -17180, 11407433, -5987185, -5759015, 8051990, 85899, 5714991, 1770063, +-1995549, 545998, 2248952, -5532992, 2516851, 1591285, -5587216, -3874597, -2986076, 1888712, +2957085, 3948686, 9881109, -704912, 7358890, 4261145, 2054605, -4791573, -2126009, -7437273, +-4053376, -908922, -3146064, -3322157, 3827890, 2921652, 4670240, 7064148, 715649, -1107028, +-1387811, -3863323, 2044941, -797790, -521302, 2615635, -3500935, 14851997, 15925202, -3527242, +16555488, -915365, -3370476, 1233729, 9338333, -3539590, -4131222, -1994476, -11651709, 1854889, +-3291019, 18392660, 12219719, -8868571, -9255655, -17595944, -6350109, 12658879, 22997402, -10504416, +7150047, 1466731, 3084324, 12422119, 9006546, -18025978, 3633006, -6480032, -3583077, -7477001, +-3982509, -7887171, -17242146, 2963528, 11639361, 4368519, 27174258, -6658810, -3673808, 18765786, +-6802155, -1118839, -4138738, 4921496, -20621748, -13344463, 7252053, 15406048, 22613540, 26847304, +-19717122, -10330470, -975494, 8936216, -825171, 30472256, 8562017, 4497905, -23633058, 1577864, +235686, 11391864, 15015206, -11209328, -3631932, 4607963, -4795331, -66572, 17051558, 6063420, +-16732656, 4317516, 8922795, -8130373, 26483306, -9201431, -14063334, -19896436, 14724222, -3237332, +-16581258, -13258027, -2957085, -677531, -6558415, 333397, -7145752, 1343251, -9973988, 644245, +4971962, -3520263, 3929895, 711891, -6004901, 624918, -28454, -1218160, 715649, -4174708, +5055714, 2147, -2477123, 5658083, 5860483, 217433, -1528472, 2508798, -5388037, -2308008, +-4314295, -862215, 4576825, -3580929, 2044404, 4412005, -8135742, -2961917, -1618129, 1330366, +-1476395, 3519189, 8025684, -2261300, -4674535, -2327336, 5212480, 1451699, 563178, 4115116, +-2304787, -1703491, -1415729, -2309082, -1845762, 3610457, 31375272, 14790257, -8170639, -2705293, +-28840706, 2190970, 7700877, 1955284, 43151536, -5511517, -3215320, -18996104, -16313896, 6650757, +-13333726, -8236674, -8931384, -6102612, 10744934, -7062537, -12263742, -10678362, 992137, 10733660, +-13878650, 3060164, 6315213, 1321239, 15575162, -1880659, 1241782, -15883326, -22229140, -9240622, +10210748, -12354473, 2991445, -10388452, -38830264, -20998632, 11651173, 745177, -22251152, 3342558, +31005368, -1523103, -804770, -12199855, 6780680, -13455059, -23950886, 505196, 3630858, -9393093, +4586488, 8909373, -2232846, -7936026, 6445136, 8273718, 15538118, -9061307, 11669963, 14870787, +6291590, 25944286, 2900714, -16320876, 18977312, 1028645, 3153580, -3584687, -3855807, 11620034, +-11652246, -1791001, 28880434, 22553948, -14070850, 14390288, -4229469, 26707180, 11266236, -9431211, +-21472688, -1060857, -7880728, -9432822, 5998459, -8513162, -302258, -2277407, -7541426, -12681965, +-2510409, 10489384, -11485816, -71941, -7157563, 954557, 4414153, -4760971, -13437879, -2494302, +-6398965, 8006893, 4859756, -3397856, -8925479, -3815005, -9601399, 5592048, -4759898, 2972117, +3654480, 5320391, 4271345, -7547332, -5341329, -8462159, 2360622, 5192616, 593779, 10480257, +11164767, 5973763, 4466229, -3062312, 5901822, -854162, -3010772, -22802518, -23571318, -28825674, +39631812, -22069690, 5479305, -1500554, -12195560, 19677930, -23171348, 9870372, 42135776, 25455734, +6284611, -34190088, -1591822, -22652194, -11033234, -20706574, -1622424, 5532455, -3357054, 15793668, +-7399155, 2403034, 8268886, 22185654, 3453691, 2836826, 27507654, -18149994, -2200097, 11727945, +-4903779, -14129369, -8879308, 13440563, -11592654, 5493263, 23609436, -6721087, -41589780, -2806761, +10850161, -51756504, 31440772, 23732378, -19185082, 31712428, 22014392, 14023605, 33504504, 483184, +17393544, 1736241, 2374043, 11715060, -20699058, 20798380, 28924458, 21755084, -22306450, -4654134, +31758598, -15447924, 25262460, 22605486, 53716084, 31967978, 2214056, 3485903, -6514392, 6489696, +9675488, -31117574, -43856984, -15606837, 4237522, 1458678, -5967320, 34433828, 16717623, 6336688, +-14826764, 13546327, -10387915, -13856638, -6582038, 15497316, 18669150, 3348464, -2875481, -3687766, +962073, -21617644, -4660577, -5703717, 7362111, 3825742, -10703595, -8637179, -89657, 16756815, +-4277788, -6667937, 888521, -6896644, -16691854, 8433705, -3246459, -6843494, -9594957, -75699, +6150393, 988379, -30000884, -1854889, 15482283, -2403034, 1077500, 2388002, 4835597, 12662637, +10656351, 336618, 355945, -5012227, -1077500, 2487860, 24160802, 29552060, -58117888, -53505628, +23430658, -15476915, -16644609, -7133941, -20145544, 7080791, -32732482, 41408316, 15786689, -17435956, +-199179, -17054778, -12557948, -13767518, -15444702, -10241886, -39502960, -35770100, -6467147, -8207146, +2456185, 3282429, 7089918, -2605972, 5254893, 6548752, 17853106, 19462644, -7177964, -9969693, +-11379516, -9906879, -22253300, 33341832, -11597485, 8076686, 25026238, 23387708, -8693014, -10118406, +-18484466, -12341589, -15137075, 25626460, 2954401, 3113315, -31567472, -11327439, 46167676, -4505958, +42999600, -8687645, -15800648, -10151155, -17888538, -18593450, -3173444, 170188, -25279640, 2112587, +12430172, -1060320, 9823127, -58910844, -23557358, -16505022, 31515396, -7486665, 5393942, 10674067, +49342196, 13923747, -4272956, -5000416, 42529304, 25540024, 6493454, 8259222, -1903207, 33581276, +-13727252, -19119046, 10615012, 15803332, 28287192, 26098906, -15002321, 17728552, 13508209, 14300094, +4520990, -10140955, -19847044, -17034914, 10933376, 14817637, 8171176, 5375152, 17715666, -1641214, +-4524748, -913754, -1153736, 9164386, 5751498, 11939472, 21006686, 14718853, 23989002, 6506876, +-20981452, 6881612, 6005975, 18639084, -27917, 14643691, 6514392, 14097693, 653909, -26616450, +-3124052, -5712844, -1455994, -11895449, -6794639, -30775588, 63933808, -20638928, -12850542, 37904160, +-24039468, -36267240, 33628520, -48824652, -14139569, 11512660, 8366060, -34060700, -13379360, 29234232, +167504, -5767068, -19037980, 22939958, -22787486, 1498944, 18041546, -6041409, 16563005, 103079, +-8217346, 5538361, 3914863, -9912248, 15745887, -8702677, -3544422, 4683662, -338766, 950798, +-2990371, 4649839, 9981504, 16145319, 23265838, 11385421, -9649718, -2728378, -14803679, 13610214, +-4942434, -21399674, 4985920, 33823, -12189654, -29242284, 20522428, 1494112, -13531831, 32920924, +1872606, -10280541, -5975910, 48783848, -45727980, -49279916, 29979946, 46747496, -86427624, 333397, +-32003948, -29131690, -12872554, 31343598, -24303610, 41507100, -5904507, -1136556, 55906516, -15904801, +-43300788, 53631792, 63303524, -61614528, 68728064, -23294292, 1692754, 56680148, -19014358, -21891986, +15587510, 15118285, -7297687, -3032247, 10560251, 1932198, 1364726, -13699872, 18711562, -74088, +-1193464, 166967, 2543695, 8244190, 5149129, -7024419, -7405598, 7644505, 18689550, -16358994, +-14894947, -4253092, 19583440, -926102, 10502806, -3080029, 4434017, -181462, 4545686, -2495913, +-3318936, -23337778, -9562745, 5485747, -8196945, -2626909, -8048769, -12774306, 19644644, 11850352, +-33735356, 13194140, 17779554, -3806415, 76773, -12319577, 17642116, 37699612, -17431662, -24453396, +-6270116, 5694590, 39033736, 28547038, -9734543, -3416647, 12443057, 31134754, -10113574, -2096481, +19674708, -25067576, -20893942, 16629576, -10914049, -8752606, -10018011, -1259499, -16749299, 1053878, +12137041, -7517804, 9465034, -8374650, -4671314, -5388574, -23300734, 3236258, -9197136, 14240501, +31432182, 1427540, 15870441, 12545063, 1594507, 5587216, 10124312, 32648194, -22874996, 15638513, +14412837, -17128866, 11708081, 10720238, 3934727, -15227807, -29488708, -30523796, 10420128, 10590852, +-10982768, -50831476, 41575284, -14107894, -21700860, -13056701, 41829760, -19717658, 45705432, -253940, +15668578, -42838540, 40727564, -18694382, 18316424, -5702643, -57773216, -18615462, 11973832, -36244156, +37511708, 3722663, -52907556, -60317448, -30389042, 41502804, 10838887, -37536404, 45989972, -49138184, +-1865090, 88028040, 13760538, 4771172, 9336722, 6446209, -22603876, 23884850, 2365990, 12086575, +-14967424, 22951768, -12219719, -12456479, -9632001, -1540820, -24696, 6787122, -1705102, -3648038, +5187247, -8319889, -16075526, 14976551, -4960151, -2848637, -19174344, 8834748, 5086852, 8375186, +3050501, 9701257, -6658810, 2114735, 28169080, -3420942, 1023276, 14326400, -14851460, -3508452, +1570347, -1782411, 11458436, -11259257, 12785581, -4406637, -30219390, 1795296, -7277822, 13682155, +10668699, 9286256, -10496363, 12161737, -19442244, -36686536, -17180, -38984344, 10567230, -3352222, +-7178501, 13211319, 21432960, -13737453, 2917894, 23875186, -18803904, 32335198, -4489315, -35330936, +30212410, -14518600, -6703370, 27182848, -34892852, 9247601, 383326, 12687333, -5658083, -12640089, +-53157736, 12234751, -22067542, -53097608, 64071784, -43198780, -18251464, -8515310, -14861124, -32594506, +18104360, 44438952, -27692876, 12518219, -40069360, -22473416, -22935126, 20107964, 3368865, 58271968, +-10261751, -4810900, -17618492, -50180788, -194884, 24453934, -18818936, 20527260, 24390046, -20775294, +1814087, -17717814, -74457552, -38903276, -23104240, -77945064, 49556408, 65650184, 30598958, -66100084, +-53413288, -118582976, 16860430, 140959216, 64918432, 24890410, -37352256, -130084896, -29840896, 30083562, +88599272, 89115200, -60890288, -51290500, -24110872, 11587285, 5825587, 96792992, 1307281, -11864847, +7558069, -9669582, -23977192, 33994128, 5781563, -7390028, 18513994, -15539729, -26720066, 18599356, +15831786, -45024144, 29896194, -6838662, -10256919, -24058796, 25040734, -24317568, 28708098, -14458471, +29386704, -35260072, 13656922, -9981504, 70867, 25193204, 41103372, 11565810, -15835008, -11174968, +-3003256, 22719304, -4092567, 32751810, -26232586, -20557860, 9051107, 32434520, 3394098, 19652696, +-26386668, -7839926, -8767639, 20141250, -1759326, 2996814, -6166500, -56150792, 40827960, -8283918, +-8521215, 667331, 18577344, 9664, -3149822, 13157632, 4984847, 4160213, 21857088, -13964012, +195958, 10838887, -3546032, -2360622, 13912473, -12922483, -2705293, 3486440, 21672404, -14422500, +-9652402, 11608760, -210990, 6374269, -20767778, 27378806, -6250251, 9024800, -5700496, 3245922, +15451682, 6321655, -3192235, 12666932, -4593468, 12807056, -9992778, -1094143, 13901199, -3440806, +-5284958, -27668716, 3122441, 20823612, 2560338, 9592273, -13499619, -4709432, -7945690, -9012452, +-3223910, 14980309, -5240934, 9007620, -11709155, -14710800, -5837935, 3113315, 28308130, -11037529, +13059922, 531502, 3124589, -13979045, 7813083, 14210973, 1124745, -13522705, 10558103, -9111773, +7191923, -5676873, -3545496, -5442798, 2240899, 9882720, -4783520, -2911451, 5056250, -907312, +-7387881, -1952600, 7947837, 6153078, -6357089, 845035, 7296076, -6442, -3867618, 827318, +-6394670, 4765266, -59593, 2295123, -2704219, 1029182, 4786204, -2495376, 5546951, 704375, +5094905, 3319473, -7257421, -8031589, -2245731, 13263933, -8242579, 9130027, 7917772, -5782100, +-13598403, 10324565, -8588861, 11703249, -723165, -2263985, -4529580, 1722282, 2397129, -1000727, +-1192390, 746251, 1615445, -5630166, 53195316, 10498511, -28427314, -20284594, -31403190, -10028212, +6105833, 16653736, -5167920, -6804302, -5766531, -5656472, -5250598, 7585449, -3828427, -1117765, +-1634772, -5584531, -1275068, 8344048, 1248225, -2475512, -8342974, 9584220, -12445741, 7296613, +-4416837, -12305081, 95563, 5544803, 6328635, 4876399, -7201587, 1572495, -2281702, -4007205, +14805289, -13187697, -2360622, -573378, -870268, 1347009, -2162516, -7759396, 6538014, -12275017, +11709691, -1743757, -8163122, 2799782, -4194573, 10354629, -6039261, -3701725, 11246909, -10075993, +3529926, -4836133, -1070521, 8575439, -6107444, -2464238, 7742753, -5312338, 2062658, 773631, +-6225018, 15206332, -13263396, -1152662, 5895380, -3398930, 9764608, -4428648, -2110977, 2530810, +3248069, -1063004, 2194192, -874563, -4274030, 3854196, 34897, 366146, 2159295, -288300, +3076807, -3075197, 932008, 600222, 723702, -387084, -1853815, 2474975, -316217, -664109, +-1756105, 2187749, 3620658, -1221918, -1791001, 1108638, 2133525, -2644626, 2224256, -1996623, +-1672890, 5722507, -834834, 2107755, 3062312, -3971234, 9790378, -3207804, -467615, -498753, +-5581847, 5814312, -3591130, -5836861, 5229660, -25178172, -37771016, 49514532, 154568896, 13208098, +13481902, -105378096, -133237400, -27790050, -28198070, 78477104, 133639520, 68540696, 13228499, -48365628, +-94039384, -66421668, -47443820, -2485176, 65125664, 95101312, 51438140, 11759084, -33318208, -59299004, +-33160906, -31955630, -29876866, 18885508, 38789996, 38180648, 38517268, 9234717, -16648367, -6863895, +-25319906, -39709120, -4362076, -11852499, -7974144, 35823248, 20744692, 29925184, 18197240, -13589813, +-32622960, -7880728, -21189758, -3293166, 14886894, 4536559, 8062191, 16183437, -8170102, -11503533, +-2603824, -6763500, 6578280, 10446434, 609885, 12898861, 7703561, -13562970, -12993887, -20784958, +-17721572, 780073, 21479132, 32480690, 15695958, 4101694, -7505456, -21755084, -3684545, -24528558, +-14996415, 11540577, 9108015, 27460948, 9303436, -6994891, 8144332, -14243722, -24656870, 4345970, +6318971, 8282308, 7711614, -1548336, -3033321, -2365453, -10218264, -7874823, 5445482, 8382703, +8489540, 8555038, -2311229, -8268349, -5420249, -3173981, 280784, -170188, -9290014, 2398739, +11843909, 6359773, 7396471, -2178085, -11785390, -6881075, -6928319, 2743947, 8384313, 5492190, +5209259, 2232846, -1621350, -8979703, -11766600, -5408975, 804770, 7337415, 11763915, 7169911, +7284802, 4563403, -7343857, -13770202, -17611514, -11453067, 5042829, 9943386, 12964359, 17875118, +5523865, -5325760, -8915815, -7279970, -5322002, -5087926, -5100274, -1471026, 4103305, 7919383, +7060390, 5502927, 3918621, 926102, -4853313, -8600135, -8225399, -4184909, -49929, 3730179, +5093831, 4672925, 2487860, 1524713, 624381, -717260, -3099893, -3832185, -3122978, -1045288, +1347546, 2326799, 1929514, 481036, -499290, 372052, 323196, 528281, 221191, -743566, +-1465658, -465467, 770947, 235149, -1199370, -609885, 351114, 301185, -155156, 956167, +2083059, 1921998, -816581, -2188286, -1661079, -549756, -84826, -14496, -187905, 651761, +1414655, 1401233, 214212, -270046, -246424, -579821, -1079647, -862752, -547071, 243203, +555661, 992674, 790274, 294205, -211527, -266825, -624918, -544924, -489089, 25233, +382789, 657130, 253940, 87510, -261993, -265214, -382252, -9127, 214212, 388695, +97711, 89121, -155693, -163746, -266825, 10201, -2684, 128312, 16106, 113817, +-43487, 49929, -78920, 36507, -69256, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 1235877, -3443490, 2669859, -881005, 2043868, 987843, 5901822, -1023276, -165893, 752693, 4316979, --847719, -4520453, -2091112, -4339528, 1061931, -1549946, -355409, -554588, 1052267, 410706, -885300, 2502355, 4618164, -2057289, -1129576, 914291, -2172180, -307090, 3602941, -1961190, -4452271, 452045, -1592359, 2947958, -4029753, -1038845, -2806761, 3937948, -114890, -1461363, --1069984, 42950, 3667365, 143881, 4413616, 1690607, -3623879, 2932926, -1583232, -2711735, --2211371, 3015604, -627602, 9616969, 1022739, 2415919, 1752347, -4485557, 68183, -663572, -1175210, -2547989, -1719061, 5011153, 4108673, 369904, 1709397, -460635, 2558190, -4137127, -424665, 3104725, 1960653, 315143, -316217, 2212445, -3505230, -1618666, 3739306, -2457258, -798864, 1817845, 2213519, 677531, -2801393, -1871532, 1482838, 325344, 1470489, -446677, -426276, -1402307, -74088, -699543, -408022, 797253, 1542430, 645856, -888521, -348429, --599685, 360777, 945430, -557809, 699006, 507880, 983548, -140123, 1178432, -477815, -298500, 719407, 924492, -7346005, -6619082, -4129074, -3748970, -3259880, 1252520, 4624069, -9445170, 1802813, 2439005, -27917, -6735583, -2829847, -2500208, -6063420, 9423695, 2494302, -3744138, 2576981, -2081985, 949188, 9021042, 3590056, -2121714, -184684, -2188286, 178241, --4174708, 2499671, -1317481, -1882269, 356482, 4781373, 505732, 1660005, 3002719, 4143033, --7447474, 83752, 1890323, 4320200, 6657736, -3717831, -752693, -1808181, 5552856, 2995203, -3580392, -606127, 1659468, 11094437, -7017977, 1393717, 652835, -4704600, 1997160, -6567542, --883153, 1668595, -1420024, -9895605, 2769717, 669478, -2673617, -2752537, -459025, -1500554, -3335042, -3148748, -1391033, 959388, -107374, -3063922, -150861, 2484639, -4141959, 352724, --1133335, -1006633, -1292785, -744103, 625992, -2427730, -1823751, 343061, -1450625, -1924145, --1970316, -688269, -1311576, 2384781, -2123861, -613643, 331249, 1190243, -148713, 66035, --747324, 129923, -1278290, 937377, -859530, -852014, -255014, -1868848, 9994389, 833224, -3610994, -456340, -2632815, 171799, 7033546, 3537443, 4552129, 7188165, -3155727, 31139, -7058242, 2202781, 3121904, 357556, 901406, 4072166, -3686693, -1138703, 5257577, -3594888, -2077154, 2930778, -2188823, 2143726, 7036230, -3358128, 2621004, 515933, 308164, 50466, --1422708, -4816269, -1445257, -4041027, -387621, 1636383, 3386582, 3506841, -605054, -6029597, --517007, 8713952, -3213709, 1731409, -1541356, -9240622, 5405217, 1317481, 4020090, -701690, -4573604, 4399121, -7808788, 3097208, 259846, 2905546, -560493, -5521718, -243203, -802085, --991601, -1062468, 3521873, -41876, 700617, 7087770, 1393180, 5631239, 197032, 527744, -1097364, -3121368, -4870493, 3325915, -3682935, 2180770, 1385127, -208306, 2342368, -2483028, --1391569, 1549946, 93416, -4730907, 1533303, 544924, 623844, -966368, 2058900, 183610, --804770, 2268280, -507880, -206695, -1885491, 668941, -935229, 318901, 25770, -288837, -466541, -729071, 1242319, 276489, -472983, 349503, -279173, 127775, -45634, -762357, --61203, 16333761, 9126269, 13981729, 4495757, -5750425, 2934537, -2556043, 366683, 1388885, --11916387, -3135326, -3297461, 3106872, 4651450, -1889249, -294742, 1608465, 357556, 8549669, --956167, -8884677, 2890513, -5119064, 3950296, 4566087, 3595425, 5313949, -1280974, -1777580, -2126009, -1533303, -2086280, 1565516, -1395864, 3212636, 4522064, -1905892, -6879464, 2267206, --6689949, -4250944, -846645, -13848585, 132070, -2290291, 5449777, 5260798, 2512019, 8579197, -8570607, 3860102, 1909650, -556198, 419296, 549756, -3884261, 8023536, -1057099, 2836289, --2517925, -2961917, -1087701, -4472672, 4017942, -2027225, -1673427, 7879118, -6488622, -1915019, -1664837, -2899103, -889058, -156229, 2749316, 3313567, 2183991, 5644124, -1801202, -1421634, --786516, -3403225, 1869385, 3664144, 4922570, 9664, -715112, -936840, 88047, 1163936, -1063004, -1360968, 1661079, 92342, 1209033, 1114544, -162672, -266825, 2143189, -484794, -1103807, 991064, 1021129, 998580, -556735, 920197, 3602404, -129386, 227096, 556198, -2676838, 612033, -532576, -1722819, 1433445, 1159641, -570157, 617938, -6043556, -14448270, --4947266, -1644973, 2185602, -1925219, 4480188, -1099512, 7138773, -6440304, 3846680, -1700270, -13003550, 5251135, -2677912, -5647345, 3106872, -7975218, -4066260, 2889976, -2638721, -4808216, -9028558, 3583613, -393526, -4238059, -5446556, 3651259, 3019899, 2696166, -129923, -1503239, --3323768, 5124433, -6729140, -3047816, -208306, 4751308, 3830574, -459025, 5470178, 569083, --2400887, 986232, -2391223, -2705830, -2911988, 3675418, -2663417, -188979, 5099200, 7358890, -7737921, 3032784, 2810519, -586800, 4428648, -1824287, 6323266, -1164473, 4070555, 2974802, --2453500, 240518, -2697776, 2946885, 2746632, 983548, -852551, -5299990, 3801046, -5760088, --572304, -6225018, 2378338, -520765, -471910, 1108638, -5108327, 181462, 1484985, 8433705, -2881386, 1374926, 2141578, 3260954, 1590212, 1670205, -2399813, 1858647, 1577327, -3524021, --161061, 146566, 875636, 1450088, -1582696, 1067836, -976568, 205622, -74625, 2114735, -362388, 241592, 396748, 695785, -307090, 1919850, -922344, 707059, 897648, 1852742, -1035624, 2581275, -1737851, 949725, -297963, 2981244, 1298691, 1053341, -239444, -435402, -385473, -598611, -472983, -1997697, -6672232, -13990856, -11310260, 716186, -9664750, -4745402, --13684303, -7269769, -8343511, 3330747, -4461398, -5910949, -2035815, 340376, -3524558, -13267154, -3561065, -2333241, 1329829, -5995775, 5990943, 2238752, 132607, -5331128, -2384781, 6816650, -4634270, 321049, -1012539, -4540854, 2844879, 1495722, 2946885, -5439576, -505196, -4414153, --3976603, -4316979, 455803, 8829916, -7177427, 177704, -6836514, 724239, 3194382, 4019553, --7207492, 7283191, 8822400, -2880849, -2085207, -1512902, -336081, 2827162, 3569118, 906775, -2433636, -4269735, -820339, -1568737, 7598334, -2347737, 8408472, -187905, -2558190, 6722161, --680752, -3977140, 1451162, 7282117, 8374650, -598611, -2593624, -4521527, 2900177, -6044093, --579284, 4094178, -3087545, 1860795, -190589, -8053, -2475512, 84826, -1912871, -3009162, --282394, 2601140, 1387811, 2592013, -1117228, -797253, -2019708, 833761, -1625108, 2699387, -1388348, 3759170, 385473, -834834, -297427, -624381, -1284195, 1743220, -1130650, -634581, -737124, 610959, -1796907, -600759, 531502, 97174, -972273, -1735167, -68183, -1596117, --1088237, -643171, 2191507, -112206, 789200, 690416, 139586, -1234266, -334471, -105764, --10721312, -10856604, -12337294, 3559991, -9973988, -4287988, 9772124, 4621922, -10835129, -832150, -200253, 4704600, 7238631, 12108587, -3210488, -4486630, -11909944, -14829985, -8613557, -3063386, -6096169, -6075768, 2979097, -8588324, 8910983, -6470905, 7172596, -3388192, 1078574, 1747515, --1340567, -6385006, 10037875, -8696772, -354335, -4687957, 1296006, -5444945, 1305670, -21628918, -423054, 9918153, -12741020, 2826625, 8824547, 3044595, -6604586, -840740, 10605885, -13084618, -20938, 5218922, 5162551, 4900021, -1813550, -1976222, -8339753, -4264903, 3500398, 5634997, -9183177, 11033771, -16334834, 6139119, -4892505, 1103807, -11502996, -4796405, 9568650, 2225867, -1358283, -6445672, 56371, 6039798, 4515621, 2639794, -5675263, -3798899, 6003291, -1682554, --2479270, -1390496, -4169340, 3489124, -653909, -3432216, -1235877, -1246614, 897648, -2257542, --2252710, 686121, 849330, 810138, -1271310, -2009508, 1656247, -1324461, -4322885, -492848, --1269700, 2527588, -1995012, 25233, 230854, 942745, -2704219, -1643362, -967441, 175557, -2905546, -453656, -676994, 1665374, 42413, 1634235, -819802, -2057289, -725850, -3406446, -745177, -148713, -2285996, 1273995, 12867185, 21449066, 11940546, 13977971, 2133525, 4956929, -18820546, -599685, 565862, 12869333, -6294812, 19864, 3706557, 6409702, 10627897, -8659191, --12328704, 6785512, 3776887, -7172059, 1537061, 4385162, -2745021, 2514703, -6637335, -1513439, --7752953, 2372433, 8450885, 2614561, 7402376, 5710159, 6024229, -14676977, 769336, 17055852, --2030446, -317828, 15907485, -2109366, -562641, 2343979, -2096481, -479963, 8805220, 13817984, --13587666, -2228014, 2711735, -4184372, 6414534, -2173254, 630823, 994285, -2962991, 12162811, --1560147, -4449049, 4562329, -4613332, -7597261, 2605972, 8296266, 3121904, -923418, 1666447, -7937637, 4132832, 7110855, 2130841, 883153, -96100, -6978785, -1459215, -5468567, -1265942, --2298344, -12444131, -5385352, 785979, 8011725, -3310346, 3094524, -2146947, -6577206, 2900177, -707596, -2106682, 1025423, -4019553, 192737, 978179, 2447058, 3479997, -847182, 2236067, --3029026, -4487167, -5363341, -584652, 4823785, -892279, -399432, 1598802, 243203, 515396, -2582349, -1282048, -508954, -1442035, 3719442, 68183, -590021, 421444, -985158, -2018635, --2441152, 972810, 2086817, 2632815, 1416266, 1031866, -519154, -191126, -15569, -886374, --3751117, 1180579, 36203888, 5024575, -781147, -216896, -17388712, -5083631, 1665374, -4055523, -7653632, 3369402, 12412455, -1588601, 537, -2689723, -5274757, 8327942, 1545115, 3177739, -4657355, 6513318, -6165963, -6199249, -7174743, -4992363, -4124779, -1815161, -9849971, -1949378, -15817291, 7448010, -3053722, -1099512, -1904281, 1293322, 5573257, -2778307, 22609782, -3972845, --664109, -10319196, 4060355, 9845139, -1751273, -7607461, -1035087, 3764002, 7531225, 3231426, -10607495, 15883326, 5129802, -389231, 9401147, 7679402, 2825552, 5921150, -19924890, 4552666, -455267, -17630304, 6382859, -472446, -7645042, 4889821, -8105140, -7878044, 9240622, 7264937, --4220342, -15616501, -7119445, 3664144, -9022116, -1894618, 3821447, 15198816, -2566243, 3011846, --8052527, -16857746, -9104794, -8120173, -3738769, 7935489, 998580, -5651103, -1788317, -3555696, --3489124, 5041218, 4162897, 1560147, 3537443, 4236985, -3750580, -2764348, -2816962, 491237, --3081102, -4501126, -4394289, 1765232, -1569811, -727460, 485331, 1488206, -3757023, 1965484, --908922, -536871, -1738388, -689342, -2415919, 5624260, -3669513, -1337346, 881005, -3782256, --3680250, -2803540, 79994, 2804614, 2273648, -19421842, 12317966, -2452426, -12167642, -718870, -11476689, -13088913, -2496987, -10595684, 7091528, 2006824, -3602941, -4638028, -1376000, 6685117, -5494874, 2746632, 7395934, 6089190, 854162, 7399692, 8949101, 3399467, 5046050, -9121437, --4151086, -6415071, 5717675, 6973417, 2771865, 2011655, -4022237, -3307662, -2387465, -2506650, --7362111, 6717866, 1792075, 243739, -7893076, -2623688, 13060459, -9463424, -9681930, -15358266, -5492190, -11568494, 16695075, 18886044, 13347685, 7497939, 931471, 14721000, -7693360, 11528229, --1333587, -8560944, 809601, 488553, -17757542, -8182987, 6926172, 833224, -2850248, 2517925, -15243376, 10102837, -17112760, -4570382, -73551, -651761, 5173288, 7172596, -166430, -14067629, -5764383, -8244190, -25554518, -7681549, -5055177, 7796440, 13178033, 4197794, 830002, 474057, -575526, 970663, 9441412, -154082, 1561758, 1005022, 4863514, -8374650, -246424, 2331094, -6298570, 7173669, 2798171, 4185983, 6710350, 8410620, 11276437, 4050691, 5683316, 5235565, -474057, -682900, -1806034, -1543504, 260919, 2084670, -6272800, -1777043, 3985193, 5900212, --441308, 1532767, -618475, 2380486, 256087, 3725347, -412317, 3566434, -2563022, 4615479, -314606, 4350265, -16077136, 1586454, 1808718, 10050223, 2187212, 25704842, 4113505, -10632192, --3416110, -8954470, 16273094, -20867098, -1844152, 14398341, -31477278, -12445205, -10609643, -11025181, --20871394, 1961726, -3643206, -8972724, -1122597, 9870372, 1262720, 1299228, -6142877, 2439005, --2065879, 2425046, 32212, 1553168, 8077223, -1966021, -479426, 16383153, -10581726, -2141578, -2851858, 14112189, -7392713, 20153060, -6082748, -8146479, -17237852, -22458384, -6532646, -16716013, -8172786, -5072357, -12530030, 1714766, 2047626, 9248138, 7840463, 3272228, -1568737, 28533078, -15808164, -1795296, 2802466, 9776956, 7323456, 4753992, -3843996, -546535, -5100274, -6639483, --6133750, 4313221, 22267794, -15540802, -3791383, -8842801, 16051903, -4206384, 4986457, -2268280, -7546258, -17597018, -13160854, -4526896, 7505992, 2398739, 6483253, -3870839, 4005594, 6060736, -5312875, 2543695, -1035624, -7482907, 4748623, 1802276, -6363531, -4438849, 4008278, -4156992, --3163780, -92342, 4313758, -3952981, 5194226, -3198140, 7413651, -4072166, 841277, 2632278, -1359357, -3515431, -6748468, 5295695, -2019708, -1462436, -517007, -644245, -2127620, 5034776, -6212670, 4372814, 3804804, -668941, 2196876, 7192460, -3832185, 2889976, 1242319, -88584, -1573032, -378494, 389231, -2488397, 3307662, 1048509, 3155727, -929324, 1383516, -538482, --2585570, 1888712, 479426, 2225330, 3221762, -478889, -12877386, -12272869, 6895033, -5475010, --23144506, 11484206, -6934225, 9179419, -6692633, 11541114, 7781407, 9601399, 15262703, 2518462, -12907450, 5242545, 3302830, 8826695, 2993592, 2442226, 587337, -338766, -8269960, 7357816, --16749299, 7335804, 1705639, -4763119, -9044664, -213138, 6419903, -7439420, -3156264, -11135776, --4361540, -13713831, 830539, 7577933, -176094, -1762010, -8753680, -15145665, -11049340, 11869679, -3920232, -4923107, -8747238, -2117956, -732829, -14809047, 12518219, 11441256, -14637785, -14175003, --23289460, -3524021, -27858768, 7512435, 10803990, 5717139, -1766305, -3537979, -2905009, 11434277, -11515881, 13335337, -8706436, -6886443, 8880382, -3834332, -4184909, -16304233, 7218230, 13343390, -15238007, -3585761, 8333847, -4684199, 2484639, 8361765, 4281546, -5873368, 2736968, -10062572, --6158446, -4168803, 1471026, 4262755, 3621731, -3981972, -3686156, -1479079, -4542465, -882616, --6248641, -7739531, -4095251, -3221762, -2404645, -1025423, -2283849, -3073586, 646929, -135828, -4460861, -1548873, 5705327, -1505923, 4547297, 314069, -2621004, 1173063, 11563126, 3594351, -5877663, -2670933, -4725538, 956704, 4179540, -4050691, 8366060, 8453569, 2374580, 3968550, -1713155, -9673340, -5144834, -4734128, -690953, -260919, -4231080, 22275312, 25614112, -10101763, --637803, 6977175, -20840256, -3810710, 25755308, 940598, -28213640, 3124052, 8565239, -642098, -9687836, 23136988, -9571335, 20912196, 11220602, 17849348, 4894652, -13631152, -14652818, 11674795, --13312251, -20713016, -6139656, -24616068, 5295695, -1648731, 8615704, 7522635, 5242008, 2783139, --1133335, 693637, 12369506, 6107444, -24297166, -2831457, 7929584, 15515032, 8486855, 19219978, -17177184, 13572097, -6598681, -2335925, 3413425, 34992172, -14848239, 2543158, 7228430, 13707925, --5858873, -19491098, -4289599, -4939213, -11931419, -21561810, -23725936, 6415608, -13410499, -9995463, -5851356, 18465138, 22567368, 381178, -1535451, -330712, 17265232, -11940546, -6331856, 20673826, --22869090, 2442763, -18130130, -12046310, 1050656, 23972896, -4189741, -16524350, 21150566, -22033720, -590558, -26586384, -2647847, -3416110, 7488276, 14650133, -11236171, -6298570, -8047695, 1884954, -203474, -8312373, 4313221, -2535105, -2676302, -3611531, -3194919, -9834938, 1814624, -4799089, -3063922, 2503429, -1101122, -2272575, 5504001, -122407, -322659, -11595338, 1296543, -1109712, --812823, 10560788, 631897, 2882460, -4920422, 1587527, -3044058, -6376416, 2254858, -12848932, -3747896, -4530654, 9011915, -7712688, -1544578, 1598265, -1590749, -2137283, -4501126, 6902013, --5230734, 7526930, -3307662, -4931696, 4837207, 4159139, 12458626, -14579803, -31368830, -7891466, --10696616, -10864657, -6188511, 1070521, -10509785, -9616969, 3405909, 6665253, -6467684, 16398722, --1463510, 10847477, -5332202, -1089311, 10052908, -14280229, -8327405, -5142687, 14816563, -3917547, --15547782, -6433861, 2740189, -8141648, 6935299, -11092290, -10380936, 15131170, 4854387, -12783970, -7820062, -1935420, -9401683, -1394791, -15804406, -14321032, 3069291, 23721104, 10063108, 7073811, --19065896, 14464376, -1406602, 10970420, -6447820, -13959717, 6862821, -25356414, 21086142, -34167000, --21056078, 7325067, 18843632, 954557, 22501870, -10202158, 6113886, -15902116, 21120502, 6206765, -15778099, 6638946, 3919695, -5389110, -4914517, -10676215, -3278671, -1114544, -17683454, -11229192, -1839857, -27727236, 1796370, 30048664, 9373766, 10488310, 3202435, -14388140, -10181220, -3353833, --3093987, -1515050, -5141076, -7828115, 6334003, 3459059, 5767068, 8092792, -8483634, 5121749, --3078418, -5262409, -3325379, 7134478, -2372433, -8948027, -12482786, -651224, -7430294, -4170950, --7626788, -2752000, -4929549, -3668439, 12173011, -7116224, 2941516, 3120294, -9396315, 10357314, -300111, 5950141, 8818105, -4612795, 4454955, 1324997, -201863, 2051921, 7399155, -4801774, --3911642, 6021544, 743029, 2619930, -1847910, -2542084, 391379, 5025112, -23607824, -22515292, -2454574, 8915815, -10996727, -50611356, -10268193, -515396, 6838662, -17290464, 1729261, -9755481, --1723356, -13827647, -14894410, 13201656, -14477798, -18337362, -2800856, -12912819, -13659607, 4533338, --19959250, -6950331, 12453795, 27674622, 22818088, -1336809, -13508746, 4568772, 20564304, -1198296, -13762149, -4136591, 17268990, 9306120, -17220672, 27553288, -20944408, -11456825, 18977850, -20890720, -6481643, -5001490, -15271830, 1569274, 23788750, -5144297, -13577465, 8551280, 11803644, -593242, -5034776, -34106872, 8427800, 1154273, 17331266, 8006893, -14591615, 14484240, -7655243, -1546188, --13504451, 7050189, 20086488, -4347581, -3670050, -20589536, -28496034, 16093242, -1826435, 12914967, --15469935, 11700565, 9813463, -20726438, 1432909, 17954038, 10660109, -9819906, -16199006, 14633490, -2681133, -13052406, 12384538, 1735167, 5660767, 1172526, 5277441, 673236, 13806709, -82678, -4917201, -1190243, 811749, 11763915, -3631932, 22549, 2985539, -3434900, 2443300, 796180, -8560407, -712428, -9009231, -1427003, 1421097, -5797132, -1396938, 297427, -3454764, 12165495, --2701535, -7456063, 1029718, 7621420, 3965329, -739808, 4755603, 314606, -4955856, -979789, -13329431, 8607651, -8630737, -6831146, 2116882, -3081102, 19081466, 18939196, -51244328, 19255950, -26126286, -6725919, 18205292, -285615, 9482751, -4271882, -10459856, -6924024, 11019275, 2472291, --14733885, -9739375, -1273995, -7061463, -3700114, -1699196, 31858994, 6279779, 7130183, -19755776, -13772886, -14098230, 303869, 2353642, -21374978, 9920301, -7864085, 1010928, -8597451, -15632070, -518617, 10195179, 29527364, 10474888, 3154654, 18094698, 7802882, -2308545, 3087545, 347355, -5234492, 2870649, 20059644, 8624294, 6130529, 3180423, -2464238, -6319508, -19557670, -16616155, -2388002, -2474975, -12030203, 1605781, 14838575, -22605486, 21822192, 5480379, -7905961, -1022739, --5720897, -1923072, 13256953, 5632850, 4384625, -15403363, -3010772, -21008832, -6346351, 5691906, -7733089, 7484518, -8946954, -7386807, 16284369, -2036351, -26138634, 3641059, -382252, -416612, --15394773, 4947266, 11682848, -1732482, 16773458, 11110007, -5511517, -444529, -7136088, 8869644, --681826, 2829847, 1464584, -3931506, -3072512, -836445, -3187940, 3509525, -7089381, -849867, -521302, 3738769, -3606699, -4459250, -5033702, 129386, -1154809, 2709051, 1745367, -306553, --3107409, 3316789, 2726231, 353261, 3901978, 530965, 2819646, 2353105, 3709778, -1166084, --13058311, -667331, -3650185, 2625836, -6031208, -45653892, 70745624, -69940856, -31597538, -15992311, --4745402, 40897216, 12052215, 45788108, 11468100, -9368934, 36118528, 15610596, -12178380, 16915728, -15350750, 8564702, 14367739, 13897440, -12337294, -19988240, -14190572, 2317135, -13043279, 6921877, -4157528, 8973797, -1343251, 6208375, 2146410, 22505628, 5389110, 2136746, 6979859, -5220533, --256087, 7961796, -14047764, -20037096, -13577465, -11643656, 2061584, 5983427, -14078903, -2268817, --8442832, -34745748, 17590038, -6247567, 8939974, -18253074, -6139119, -16901234, -23147190, 8822937, -6239514, 22652732, -890669, 19967840, -8344048, 16738561, 2055679, 23868208, -16770774, 14795625, -17790292, 9859634, 10362682, 942208, -7130183, 27952720, 18757732, -1769527, 33735896, 8138963, -4047470, 14484777, 21790516, 353798, 10082973, 12611098, 5838471, 5564130, -2392297, 1204738, --19532438, -4927401, -2524904, 3229816, 4254702, 3995393, 13202193, 5888937, 6798397, -5006858, --578210, 5252745, 685047, 549219, -4529043, 5495948, 4704600, 2711198, -3497177, 6958921, --885837, 1349157, -5142150, -4784594, -1816234, 679142, 770410, -3078418, -10645076, 2653216, -2517388, -2779918, -367757, -2619393, 994822, -3801583, 2846490, -3650185, 351114, 9862856, --2565706, -9434433, 6433324, 4698694, 3994320, -2128693, -1080721, 43309376, 3600793, -25885768, --38356744, -20151986, -16094316, 5238250, 31480500, -420370, -13535589, 28391344, 2166274, -22780506, -20400020, 22397180, -4265977, -347355, -2349347, -20177756, 22306450, 1324997, 12578885, -7087770, --18209588, -31436476, 5526549, 4010963, 4653060, -4414690, 9673340, -10447508, -353798, -20162724, --25376814, 8835285, -3424700, 8000987, -3881577, -9336185, -23021024, -35350804, 17858474, -19770808, -7835094, 16962436, -1465121, -9137006, -17631914, -12549894, 40396316, 9190156, -2151242, 5223754, --5677947, -16520055, -5708012, 23512262, -23130010, -38470560, -13733695, -12280922, -54114976, -42126648, --22967338, -23483270, 5427765, -368293, -19071802, -36010080, -14560476, -17097192, -12549358, -9964324, --7607461, -21618718, -20960514, 16103980, -18665390, 980326, 2367064, -22671522, -4351339, -16602733, --20982526, -5194226, -3777424, 9334038, 3575560, 12615393, -13579613, 3157338, 7103339, -285078, --18128520, -10235981, -12322798, -1395328, 5294084, -6260989, -9081708, 15062450, 8636105, 10760504, --18563922, 2801393, -9297530, -1285269, 250719, 1516124, -2685965, 17959942, 908386, -3513820, -1770063, 6087043, 8668318, 7261179, -1763084, 10489384, -8355322, -4488241, -3930432, -14491220, --988916, -4673462, -18782966, -15582141, 2022930, 389768, -921807, -5043366, -4634270, -1770063, --3324305, 29300266, -3157875, 27896886, 42199664, -8069170, -45041324, -44302052, -9141838, 20718922, -3200288, -34840236, 27388470, -6248104, -22297860, 27443230, -51920248, -11312944, 544387, -9582072, --7738458, 63009856, -26286810, 59029492, -2683281, 12168716, -4144107, -23760296, 38261716, 9781788, -39771396, -27390618, -26458610, 8331700, -42825656, -13196287, -6693707, -30231738, 62512712, -5711233, --64409476, -1264331, -28599650, 8142185, 16119012, 25637196, 21243446, -25793962, -15779710, -39980776, --11444477, -18655190, 17207786, 10994579, -1973001, 11457899, -7770133, -28421410, -11364483, -33121714, -33890512, -25658672, -17403744, 30039538, 7325604, 50947440, 24971476, 4268124, 27173184, -36393944, --13348221, -37563784, -36154496, -5783711, -5127654, -45771468, 47159276, -8439611, -36323076, -54466628, -3711389, -10923712, 39942660, -2675228, 2217277, 5214091, -6982006, 7425999, 9101573, 18568754, --12364137, -12708808, -7919920, 472446, -2146410, -2704219, -11678553, 13111461, 8293045, 15663209, --3564286, -8572218, -7154879, -2839510, 3081102, 21028160, 22519050, -3685619, 1358820, 12140799, --3267933, -28072444, -13502303, 1743220, 3974992, -2202245, -17769890, 6277095, -2013266, -4233227, --20375324, 8057359, 7038915, 24445344, 4098473, 6066642, -1103270, 10104447, 1856500, -5737003, --10763725, -775242, 1302449, 7991861, 3744675, -4575214, 782221, -84434760, 43488692, 10273562, --18504330, -13590350, 26776974, 15047418, -16578037, -4284767, -40075804, -16505559, 16706886, -34283504, -1088774, 6333466, -10759967, -22826678, -15916075, 31071404, 12182675, -6082211, -44712220, 15182173, -27733140, 16270410, -34684008, -22826678, -110595, 37582576, 3081639, -8965207, 5643587, 1306207, -18884972, -49845780, -43468292, 53557168, 8024073, 22453552, -51133196, 11160473, -2567854, 37359772, --33709588, -6316823, -51270100, 17907330, 36462660, 8688182, -22941030, 14676977, 53043384, -23835994, --25733296, -19894826, 7286412, 2287607, 46485504, -13911936, 3287798, -25169046, 7975755, -27608050, --1212791, 17812840, -34864932, 33095944, 9721658, -23953570, -37696928, -22649510, -2201171, 33381022, --60625072, -13094282, 54263692, 7233262, -24935506, -11534672, -17682380, 51445656, -6015639, -53846540, --6578280, 9127, -13604846, 21997748, -4088272, -7529615, 16347719, -1480153, -11375221, -14105209, --1801739, -12437688, 3461744, 9165460, 11780558, -10826002, -8304320, 11217381, -7674570, 10621991, --5957120, -10802916, 14484777, -8129300, 13009456, 18369038, 849330, -26625040, -2152852, -15873662, -6263673, 9824201, 6074695, -18613314, -159988, -14060112, 12781286, -3962644, -8410620, -5381057, -2484102, 4488241, -10306848, 4556424, 55711096, 28860032, 12746926, 13153874, 13305809, -8687108, --8934606, -18665928, 2246268, 6271189, 4806069, -928250, -32294932, 15577310, 6179921, -22185116, --19105626, -9525701, -11227581, 8484171, -8422968, -9334038, 2624762, -640487, -17211008, 22029424, --15842524, -4948876, -16457778, -14679661, 10521059, -6187438, -2276870, 5625871, 6822556, -1672890, --21863532, 5291400, 33774012, 7344394, -53298932, -3263102, -11668352, -16432545, 11075647, 12087649, -27400818, 13341779, -34810172, 37702296, -9444633, -25994752, 78216184, -15711527, -6830072, -25767120, --62407484, 28594282, 31506806, 10505490, 11813844, -53179212, 15348603, -4099546, -13036836, -9315247, -1996623, -5002563, 8195335, 10195179, 2061047, -7841537, -15383499, 16208133, 20143396, 28309204, --14120779, -2812667, 5855114, -4108136, 14658723, -36499704, 3384434, 6511708, -17286706, 2876554, --14431090, 5635534, 94489, 4525285, -2527588, 1044751, 1236414, -705985, -667331, -4838818, --3968550, 9786620, -5580773, -347355, 7037841, 1619740, 140660, 11949673, -10036802, 7320772, -8381629, -528281, -1913408, -10110353, 7987566, -18905910, -5505611, 12326019, 3360275, -5169530, --12990129, 3852049, -3179350, 15328201, 1974074, -32019518, -75758392, -128835600, 10741713, 130523520, -12851616, 277747488, 281244672, 101683352, 282243776, 163164736, -47176456, -4716411, -25176024, -213886688, --176745424, -124573376, -221391600, -212068848, -60050624, -133543952, -115755272, 26121454, 37507412, -28927678, -41635412, 60364692, 316754, 4109747, 120961848, 80277768, 31115964, 89006216, 167162816, 78376712, -92341800, 206156816, 82069312, 37010808, 178858000, 171901232, 8021389, 109941496, 195097280, 333934, -49908056, 115344032, -4023311, -94321776, 47221016, -19685446, -180954496, -169230832, -154954896, -302198208, --446173024, -310969600, -434073568, -579060928, -408065920, -331177952, -447165152, -285944416, -137048656, -132619464, --24606942, 133470400, 269739520, 304795584, 408446016, 555062272, 545955328, 515991456, 581759744, 580354240, -474490816, 381565984, 409119808, 271596000, 97252552, 129553928, 32440424, -238121584, -152527168, -161809664, --331832928, -280684160, -201229424, -236272064, -272879680, -170083920, -148028736, -206746304, -169966352, -88458072, --141257184, -186792960, -111631032, -79064440, -147512256, -83426520, 20434918, -46120968, -52147884, 59876676, --1134945, -74912816, -8647917, -47011100, -169132048, -117944632, -88434448, -157402496, -69536056, 39788040, -76739792, 140245184, 233785808, 270999552, 285020480, 318847648, 340082496, 334289120, 308949344, 286983808, -244514640, 193994544, 120013200, 89642944, 12015171, -75082472, -131315944, -211596928, -303880736, -296107936, --251233040, -228165312, -197125584, -135089072, -112981800, -101404712, -72184440, -47499652, -41632728, -17080548, --9271761, -6615860, 2203318, 19368156, 32132260, 40164924, 47959752, 54702852, 53946400, 52291764, -45088568, 44095892, 31992674, 25121264, 12984760, 7540889, -5583458, -14230837, -19115288, -18086644, --23982024, -23631984, -23475754, -23972360, -27299886, -19643032, -20133196, -12510703, 391379, 16029892, -23229868, 37631428, 44074956, 48703320, 51840792, 59017144, 55560232, 53575424, 51616380, 45845556, -30826054, 26853210, 21355652, 13776108, 4422206, 4271345, -6287296, -12198781, -18655728, -24482388, --35243428, -37953552, -45371496, -50705312, -55515672, -54788212, -59144920, -57855356, -54980952, -47741784, --41799160, -28247464, -18182744, -5893769, 2178085, 14578730, 20051054, 26979910, 29865592, 33560876, -31608812, 33571612, 29987462, 30001420, 25057376, 23674396, 18112950, 15127949, 8839580, 7357279, -2134599, 1916629, -1234803, -295279, -3041374, -1414118, -3238405, -1148904, -2823404, -493921, --2150168, -537, -1699733, 513249, -1098975, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +3443490, 2669859, -881005, 2043868, 987843, 5901822, -1023276, -165893, 752693, 4316979, +-847719, -4520453, -2091112, -4339528, 1061931, -1549946, -355409, -554588, 1052267, 410706, +885300, 2502355, 4618164, -2057289, -1129576, 914291, -2172180, -307090, 3602941, -1961190, +4452271, 452045, -1592359, 2947958, -4029753, -1038845, -2806761, 3937948, -114890, -1461363, +-1069984, 42950, 3667365, 143881, 4413616, 1690607, -3623879, 2932926, -1583232, -2711735, +-2211371, 3015604, -627602, 9616969, 1022739, 2415919, 1752347, -4485557, 68183, -663572, +1175210, -2547989, -1719061, 5011153, 4108673, 369904, 1709397, -460635, 2558190, -4137127, +424665, 3104725, 1960653, 315143, -316217, 2212445, -3505230, -1618666, 3739306, -2457258, +798864, 1817845, 2213519, 677531, -2801393, -1871532, 1482838, 325344, 1470489, -446677, +426276, -1402307, -74088, -699543, -408022, 797253, 1542430, 645856, -888521, -348429, +-599685, 360777, 945430, -557809, 699006, 507880, 983548, -140123, 1178432, -477815, +298500, 719407, 924492, -7346005, -6619082, -4129074, -3748970, -3259880, 1252520, 4624069, +9445170, 1802813, 2439005, -27917, -6735583, -2829847, -2500208, -6063420, 9423695, 2494302, +3744138, 2576981, -2081985, 949188, 9021042, 3590056, -2121714, -184684, -2188286, 178241, +-4174708, 2499671, -1317481, -1882269, 356482, 4781373, 505732, 1660005, 3002719, 4143033, +-7447474, 83752, 1890323, 4320200, 6657736, -3717831, -752693, -1808181, 5552856, 2995203, +3580392, -606127, 1659468, 11094437, -7017977, 1393717, 652835, -4704600, 1997160, -6567542, +-883153, 1668595, -1420024, -9895605, 2769717, 669478, -2673617, -2752537, -459025, -1500554, +3335042, -3148748, -1391033, 959388, -107374, -3063922, -150861, 2484639, -4141959, 352724, +-1133335, -1006633, -1292785, -744103, 625992, -2427730, -1823751, 343061, -1450625, -1924145, +-1970316, -688269, -1311576, 2384781, -2123861, -613643, 331249, 1190243, -148713, 66035, +-747324, 129923, -1278290, 937377, -859530, -852014, -255014, -1868848, 9994389, 833224, +3610994, -456340, -2632815, 171799, 7033546, 3537443, 4552129, 7188165, -3155727, 31139, +7058242, 2202781, 3121904, 357556, 901406, 4072166, -3686693, -1138703, 5257577, -3594888, +2077154, 2930778, -2188823, 2143726, 7036230, -3358128, 2621004, 515933, 308164, 50466, +-1422708, -4816269, -1445257, -4041027, -387621, 1636383, 3386582, 3506841, -605054, -6029597, +-517007, 8713952, -3213709, 1731409, -1541356, -9240622, 5405217, 1317481, 4020090, -701690, +4573604, 4399121, -7808788, 3097208, 259846, 2905546, -560493, -5521718, -243203, -802085, +-991601, -1062468, 3521873, -41876, 700617, 7087770, 1393180, 5631239, 197032, 527744, +1097364, -3121368, -4870493, 3325915, -3682935, 2180770, 1385127, -208306, 2342368, -2483028, +-1391569, 1549946, 93416, -4730907, 1533303, 544924, 623844, -966368, 2058900, 183610, +-804770, 2268280, -507880, -206695, -1885491, 668941, -935229, 318901, 25770, -288837, +466541, -729071, 1242319, 276489, -472983, 349503, -279173, 127775, -45634, -762357, +-61203, 16333761, 9126269, 13981729, 4495757, -5750425, 2934537, -2556043, 366683, 1388885, +-11916387, -3135326, -3297461, 3106872, 4651450, -1889249, -294742, 1608465, 357556, 8549669, +-956167, -8884677, 2890513, -5119064, 3950296, 4566087, 3595425, 5313949, -1280974, -1777580, +2126009, -1533303, -2086280, 1565516, -1395864, 3212636, 4522064, -1905892, -6879464, 2267206, +-6689949, -4250944, -846645, -13848585, 132070, -2290291, 5449777, 5260798, 2512019, 8579197, +8570607, 3860102, 1909650, -556198, 419296, 549756, -3884261, 8023536, -1057099, 2836289, +-2517925, -2961917, -1087701, -4472672, 4017942, -2027225, -1673427, 7879118, -6488622, -1915019, +1664837, -2899103, -889058, -156229, 2749316, 3313567, 2183991, 5644124, -1801202, -1421634, +-786516, -3403225, 1869385, 3664144, 4922570, 9664, -715112, -936840, 88047, 1163936, +1063004, -1360968, 1661079, 92342, 1209033, 1114544, -162672, -266825, 2143189, -484794, +1103807, 991064, 1021129, 998580, -556735, 920197, 3602404, -129386, 227096, 556198, +2676838, 612033, -532576, -1722819, 1433445, 1159641, -570157, 617938, -6043556, -14448270, +-4947266, -1644973, 2185602, -1925219, 4480188, -1099512, 7138773, -6440304, 3846680, -1700270, +13003550, 5251135, -2677912, -5647345, 3106872, -7975218, -4066260, 2889976, -2638721, -4808216, +9028558, 3583613, -393526, -4238059, -5446556, 3651259, 3019899, 2696166, -129923, -1503239, +-3323768, 5124433, -6729140, -3047816, -208306, 4751308, 3830574, -459025, 5470178, 569083, +-2400887, 986232, -2391223, -2705830, -2911988, 3675418, -2663417, -188979, 5099200, 7358890, +7737921, 3032784, 2810519, -586800, 4428648, -1824287, 6323266, -1164473, 4070555, 2974802, +-2453500, 240518, -2697776, 2946885, 2746632, 983548, -852551, -5299990, 3801046, -5760088, +-572304, -6225018, 2378338, -520765, -471910, 1108638, -5108327, 181462, 1484985, 8433705, +2881386, 1374926, 2141578, 3260954, 1590212, 1670205, -2399813, 1858647, 1577327, -3524021, +-161061, 146566, 875636, 1450088, -1582696, 1067836, -976568, 205622, -74625, 2114735, +362388, 241592, 396748, 695785, -307090, 1919850, -922344, 707059, 897648, 1852742, +1035624, 2581275, -1737851, 949725, -297963, 2981244, 1298691, 1053341, -239444, -435402, +385473, -598611, -472983, -1997697, -6672232, -13990856, -11310260, 716186, -9664750, -4745402, +-13684303, -7269769, -8343511, 3330747, -4461398, -5910949, -2035815, 340376, -3524558, -13267154, +3561065, -2333241, 1329829, -5995775, 5990943, 2238752, 132607, -5331128, -2384781, 6816650, +4634270, 321049, -1012539, -4540854, 2844879, 1495722, 2946885, -5439576, -505196, -4414153, +-3976603, -4316979, 455803, 8829916, -7177427, 177704, -6836514, 724239, 3194382, 4019553, +-7207492, 7283191, 8822400, -2880849, -2085207, -1512902, -336081, 2827162, 3569118, 906775, +2433636, -4269735, -820339, -1568737, 7598334, -2347737, 8408472, -187905, -2558190, 6722161, +-680752, -3977140, 1451162, 7282117, 8374650, -598611, -2593624, -4521527, 2900177, -6044093, +-579284, 4094178, -3087545, 1860795, -190589, -8053, -2475512, 84826, -1912871, -3009162, +-282394, 2601140, 1387811, 2592013, -1117228, -797253, -2019708, 833761, -1625108, 2699387, +1388348, 3759170, 385473, -834834, -297427, -624381, -1284195, 1743220, -1130650, -634581, +737124, 610959, -1796907, -600759, 531502, 97174, -972273, -1735167, -68183, -1596117, +-1088237, -643171, 2191507, -112206, 789200, 690416, 139586, -1234266, -334471, -105764, +-10721312, -10856604, -12337294, 3559991, -9973988, -4287988, 9772124, 4621922, -10835129, -832150, +200253, 4704600, 7238631, 12108587, -3210488, -4486630, -11909944, -14829985, -8613557, -3063386, +6096169, -6075768, 2979097, -8588324, 8910983, -6470905, 7172596, -3388192, 1078574, 1747515, +-1340567, -6385006, 10037875, -8696772, -354335, -4687957, 1296006, -5444945, 1305670, -21628918, +423054, 9918153, -12741020, 2826625, 8824547, 3044595, -6604586, -840740, 10605885, -13084618, +20938, 5218922, 5162551, 4900021, -1813550, -1976222, -8339753, -4264903, 3500398, 5634997, +9183177, 11033771, -16334834, 6139119, -4892505, 1103807, -11502996, -4796405, 9568650, 2225867, +1358283, -6445672, 56371, 6039798, 4515621, 2639794, -5675263, -3798899, 6003291, -1682554, +-2479270, -1390496, -4169340, 3489124, -653909, -3432216, -1235877, -1246614, 897648, -2257542, +-2252710, 686121, 849330, 810138, -1271310, -2009508, 1656247, -1324461, -4322885, -492848, +-1269700, 2527588, -1995012, 25233, 230854, 942745, -2704219, -1643362, -967441, 175557, +2905546, -453656, -676994, 1665374, 42413, 1634235, -819802, -2057289, -725850, -3406446, +745177, -148713, -2285996, 1273995, 12867185, 21449066, 11940546, 13977971, 2133525, 4956929, +18820546, -599685, 565862, 12869333, -6294812, 19864, 3706557, 6409702, 10627897, -8659191, +-12328704, 6785512, 3776887, -7172059, 1537061, 4385162, -2745021, 2514703, -6637335, -1513439, +-7752953, 2372433, 8450885, 2614561, 7402376, 5710159, 6024229, -14676977, 769336, 17055852, +-2030446, -317828, 15907485, -2109366, -562641, 2343979, -2096481, -479963, 8805220, 13817984, +-13587666, -2228014, 2711735, -4184372, 6414534, -2173254, 630823, 994285, -2962991, 12162811, +-1560147, -4449049, 4562329, -4613332, -7597261, 2605972, 8296266, 3121904, -923418, 1666447, +7937637, 4132832, 7110855, 2130841, 883153, -96100, -6978785, -1459215, -5468567, -1265942, +-2298344, -12444131, -5385352, 785979, 8011725, -3310346, 3094524, -2146947, -6577206, 2900177, +707596, -2106682, 1025423, -4019553, 192737, 978179, 2447058, 3479997, -847182, 2236067, +-3029026, -4487167, -5363341, -584652, 4823785, -892279, -399432, 1598802, 243203, 515396, +2582349, -1282048, -508954, -1442035, 3719442, 68183, -590021, 421444, -985158, -2018635, +-2441152, 972810, 2086817, 2632815, 1416266, 1031866, -519154, -191126, -15569, -886374, +-3751117, 1180579, 36203888, 5024575, -781147, -216896, -17388712, -5083631, 1665374, -4055523, +7653632, 3369402, 12412455, -1588601, 537, -2689723, -5274757, 8327942, 1545115, 3177739, +4657355, 6513318, -6165963, -6199249, -7174743, -4992363, -4124779, -1815161, -9849971, -1949378, +15817291, 7448010, -3053722, -1099512, -1904281, 1293322, 5573257, -2778307, 22609782, -3972845, +-664109, -10319196, 4060355, 9845139, -1751273, -7607461, -1035087, 3764002, 7531225, 3231426, +10607495, 15883326, 5129802, -389231, 9401147, 7679402, 2825552, 5921150, -19924890, 4552666, +455267, -17630304, 6382859, -472446, -7645042, 4889821, -8105140, -7878044, 9240622, 7264937, +-4220342, -15616501, -7119445, 3664144, -9022116, -1894618, 3821447, 15198816, -2566243, 3011846, +-8052527, -16857746, -9104794, -8120173, -3738769, 7935489, 998580, -5651103, -1788317, -3555696, +-3489124, 5041218, 4162897, 1560147, 3537443, 4236985, -3750580, -2764348, -2816962, 491237, +-3081102, -4501126, -4394289, 1765232, -1569811, -727460, 485331, 1488206, -3757023, 1965484, +-908922, -536871, -1738388, -689342, -2415919, 5624260, -3669513, -1337346, 881005, -3782256, +-3680250, -2803540, 79994, 2804614, 2273648, -19421842, 12317966, -2452426, -12167642, -718870, +11476689, -13088913, -2496987, -10595684, 7091528, 2006824, -3602941, -4638028, -1376000, 6685117, +5494874, 2746632, 7395934, 6089190, 854162, 7399692, 8949101, 3399467, 5046050, -9121437, +-4151086, -6415071, 5717675, 6973417, 2771865, 2011655, -4022237, -3307662, -2387465, -2506650, +-7362111, 6717866, 1792075, 243739, -7893076, -2623688, 13060459, -9463424, -9681930, -15358266, +5492190, -11568494, 16695075, 18886044, 13347685, 7497939, 931471, 14721000, -7693360, 11528229, +-1333587, -8560944, 809601, 488553, -17757542, -8182987, 6926172, 833224, -2850248, 2517925, +15243376, 10102837, -17112760, -4570382, -73551, -651761, 5173288, 7172596, -166430, -14067629, +5764383, -8244190, -25554518, -7681549, -5055177, 7796440, 13178033, 4197794, 830002, 474057, +575526, 970663, 9441412, -154082, 1561758, 1005022, 4863514, -8374650, -246424, 2331094, +6298570, 7173669, 2798171, 4185983, 6710350, 8410620, 11276437, 4050691, 5683316, 5235565, +474057, -682900, -1806034, -1543504, 260919, 2084670, -6272800, -1777043, 3985193, 5900212, +-441308, 1532767, -618475, 2380486, 256087, 3725347, -412317, 3566434, -2563022, 4615479, +314606, 4350265, -16077136, 1586454, 1808718, 10050223, 2187212, 25704842, 4113505, -10632192, +-3416110, -8954470, 16273094, -20867098, -1844152, 14398341, -31477278, -12445205, -10609643, -11025181, +-20871394, 1961726, -3643206, -8972724, -1122597, 9870372, 1262720, 1299228, -6142877, 2439005, +-2065879, 2425046, 32212, 1553168, 8077223, -1966021, -479426, 16383153, -10581726, -2141578, +2851858, 14112189, -7392713, 20153060, -6082748, -8146479, -17237852, -22458384, -6532646, -16716013, +8172786, -5072357, -12530030, 1714766, 2047626, 9248138, 7840463, 3272228, -1568737, 28533078, +15808164, -1795296, 2802466, 9776956, 7323456, 4753992, -3843996, -546535, -5100274, -6639483, +-6133750, 4313221, 22267794, -15540802, -3791383, -8842801, 16051903, -4206384, 4986457, -2268280, +7546258, -17597018, -13160854, -4526896, 7505992, 2398739, 6483253, -3870839, 4005594, 6060736, +5312875, 2543695, -1035624, -7482907, 4748623, 1802276, -6363531, -4438849, 4008278, -4156992, +-3163780, -92342, 4313758, -3952981, 5194226, -3198140, 7413651, -4072166, 841277, 2632278, +1359357, -3515431, -6748468, 5295695, -2019708, -1462436, -517007, -644245, -2127620, 5034776, +6212670, 4372814, 3804804, -668941, 2196876, 7192460, -3832185, 2889976, 1242319, -88584, +1573032, -378494, 389231, -2488397, 3307662, 1048509, 3155727, -929324, 1383516, -538482, +-2585570, 1888712, 479426, 2225330, 3221762, -478889, -12877386, -12272869, 6895033, -5475010, +-23144506, 11484206, -6934225, 9179419, -6692633, 11541114, 7781407, 9601399, 15262703, 2518462, +12907450, 5242545, 3302830, 8826695, 2993592, 2442226, 587337, -338766, -8269960, 7357816, +-16749299, 7335804, 1705639, -4763119, -9044664, -213138, 6419903, -7439420, -3156264, -11135776, +-4361540, -13713831, 830539, 7577933, -176094, -1762010, -8753680, -15145665, -11049340, 11869679, +3920232, -4923107, -8747238, -2117956, -732829, -14809047, 12518219, 11441256, -14637785, -14175003, +-23289460, -3524021, -27858768, 7512435, 10803990, 5717139, -1766305, -3537979, -2905009, 11434277, +11515881, 13335337, -8706436, -6886443, 8880382, -3834332, -4184909, -16304233, 7218230, 13343390, +15238007, -3585761, 8333847, -4684199, 2484639, 8361765, 4281546, -5873368, 2736968, -10062572, +-6158446, -4168803, 1471026, 4262755, 3621731, -3981972, -3686156, -1479079, -4542465, -882616, +-6248641, -7739531, -4095251, -3221762, -2404645, -1025423, -2283849, -3073586, 646929, -135828, +4460861, -1548873, 5705327, -1505923, 4547297, 314069, -2621004, 1173063, 11563126, 3594351, +5877663, -2670933, -4725538, 956704, 4179540, -4050691, 8366060, 8453569, 2374580, 3968550, +1713155, -9673340, -5144834, -4734128, -690953, -260919, -4231080, 22275312, 25614112, -10101763, +-637803, 6977175, -20840256, -3810710, 25755308, 940598, -28213640, 3124052, 8565239, -642098, +9687836, 23136988, -9571335, 20912196, 11220602, 17849348, 4894652, -13631152, -14652818, 11674795, +-13312251, -20713016, -6139656, -24616068, 5295695, -1648731, 8615704, 7522635, 5242008, 2783139, +-1133335, 693637, 12369506, 6107444, -24297166, -2831457, 7929584, 15515032, 8486855, 19219978, +17177184, 13572097, -6598681, -2335925, 3413425, 34992172, -14848239, 2543158, 7228430, 13707925, +-5858873, -19491098, -4289599, -4939213, -11931419, -21561810, -23725936, 6415608, -13410499, -9995463, +5851356, 18465138, 22567368, 381178, -1535451, -330712, 17265232, -11940546, -6331856, 20673826, +-22869090, 2442763, -18130130, -12046310, 1050656, 23972896, -4189741, -16524350, 21150566, -22033720, +590558, -26586384, -2647847, -3416110, 7488276, 14650133, -11236171, -6298570, -8047695, 1884954, +203474, -8312373, 4313221, -2535105, -2676302, -3611531, -3194919, -9834938, 1814624, -4799089, +3063922, 2503429, -1101122, -2272575, 5504001, -122407, -322659, -11595338, 1296543, -1109712, +-812823, 10560788, 631897, 2882460, -4920422, 1587527, -3044058, -6376416, 2254858, -12848932, +3747896, -4530654, 9011915, -7712688, -1544578, 1598265, -1590749, -2137283, -4501126, 6902013, +-5230734, 7526930, -3307662, -4931696, 4837207, 4159139, 12458626, -14579803, -31368830, -7891466, +-10696616, -10864657, -6188511, 1070521, -10509785, -9616969, 3405909, 6665253, -6467684, 16398722, +-1463510, 10847477, -5332202, -1089311, 10052908, -14280229, -8327405, -5142687, 14816563, -3917547, +-15547782, -6433861, 2740189, -8141648, 6935299, -11092290, -10380936, 15131170, 4854387, -12783970, +7820062, -1935420, -9401683, -1394791, -15804406, -14321032, 3069291, 23721104, 10063108, 7073811, +-19065896, 14464376, -1406602, 10970420, -6447820, -13959717, 6862821, -25356414, 21086142, -34167000, +-21056078, 7325067, 18843632, 954557, 22501870, -10202158, 6113886, -15902116, 21120502, 6206765, +15778099, 6638946, 3919695, -5389110, -4914517, -10676215, -3278671, -1114544, -17683454, -11229192, +1839857, -27727236, 1796370, 30048664, 9373766, 10488310, 3202435, -14388140, -10181220, -3353833, +-3093987, -1515050, -5141076, -7828115, 6334003, 3459059, 5767068, 8092792, -8483634, 5121749, +-3078418, -5262409, -3325379, 7134478, -2372433, -8948027, -12482786, -651224, -7430294, -4170950, +-7626788, -2752000, -4929549, -3668439, 12173011, -7116224, 2941516, 3120294, -9396315, 10357314, +300111, 5950141, 8818105, -4612795, 4454955, 1324997, -201863, 2051921, 7399155, -4801774, +-3911642, 6021544, 743029, 2619930, -1847910, -2542084, 391379, 5025112, -23607824, -22515292, +2454574, 8915815, -10996727, -50611356, -10268193, -515396, 6838662, -17290464, 1729261, -9755481, +-1723356, -13827647, -14894410, 13201656, -14477798, -18337362, -2800856, -12912819, -13659607, 4533338, +-19959250, -6950331, 12453795, 27674622, 22818088, -1336809, -13508746, 4568772, 20564304, -1198296, +13762149, -4136591, 17268990, 9306120, -17220672, 27553288, -20944408, -11456825, 18977850, -20890720, +6481643, -5001490, -15271830, 1569274, 23788750, -5144297, -13577465, 8551280, 11803644, -593242, +5034776, -34106872, 8427800, 1154273, 17331266, 8006893, -14591615, 14484240, -7655243, -1546188, +-13504451, 7050189, 20086488, -4347581, -3670050, -20589536, -28496034, 16093242, -1826435, 12914967, +-15469935, 11700565, 9813463, -20726438, 1432909, 17954038, 10660109, -9819906, -16199006, 14633490, +2681133, -13052406, 12384538, 1735167, 5660767, 1172526, 5277441, 673236, 13806709, -82678, +4917201, -1190243, 811749, 11763915, -3631932, 22549, 2985539, -3434900, 2443300, 796180, +8560407, -712428, -9009231, -1427003, 1421097, -5797132, -1396938, 297427, -3454764, 12165495, +-2701535, -7456063, 1029718, 7621420, 3965329, -739808, 4755603, 314606, -4955856, -979789, +13329431, 8607651, -8630737, -6831146, 2116882, -3081102, 19081466, 18939196, -51244328, 19255950, +26126286, -6725919, 18205292, -285615, 9482751, -4271882, -10459856, -6924024, 11019275, 2472291, +-14733885, -9739375, -1273995, -7061463, -3700114, -1699196, 31858994, 6279779, 7130183, -19755776, +13772886, -14098230, 303869, 2353642, -21374978, 9920301, -7864085, 1010928, -8597451, -15632070, +518617, 10195179, 29527364, 10474888, 3154654, 18094698, 7802882, -2308545, 3087545, 347355, +5234492, 2870649, 20059644, 8624294, 6130529, 3180423, -2464238, -6319508, -19557670, -16616155, +2388002, -2474975, -12030203, 1605781, 14838575, -22605486, 21822192, 5480379, -7905961, -1022739, +-5720897, -1923072, 13256953, 5632850, 4384625, -15403363, -3010772, -21008832, -6346351, 5691906, +7733089, 7484518, -8946954, -7386807, 16284369, -2036351, -26138634, 3641059, -382252, -416612, +-15394773, 4947266, 11682848, -1732482, 16773458, 11110007, -5511517, -444529, -7136088, 8869644, +-681826, 2829847, 1464584, -3931506, -3072512, -836445, -3187940, 3509525, -7089381, -849867, +521302, 3738769, -3606699, -4459250, -5033702, 129386, -1154809, 2709051, 1745367, -306553, +-3107409, 3316789, 2726231, 353261, 3901978, 530965, 2819646, 2353105, 3709778, -1166084, +-13058311, -667331, -3650185, 2625836, -6031208, -45653892, 70745624, -69940856, -31597538, -15992311, +-4745402, 40897216, 12052215, 45788108, 11468100, -9368934, 36118528, 15610596, -12178380, 16915728, +15350750, 8564702, 14367739, 13897440, -12337294, -19988240, -14190572, 2317135, -13043279, 6921877, +4157528, 8973797, -1343251, 6208375, 2146410, 22505628, 5389110, 2136746, 6979859, -5220533, +-256087, 7961796, -14047764, -20037096, -13577465, -11643656, 2061584, 5983427, -14078903, -2268817, +-8442832, -34745748, 17590038, -6247567, 8939974, -18253074, -6139119, -16901234, -23147190, 8822937, +6239514, 22652732, -890669, 19967840, -8344048, 16738561, 2055679, 23868208, -16770774, 14795625, +17790292, 9859634, 10362682, 942208, -7130183, 27952720, 18757732, -1769527, 33735896, 8138963, +4047470, 14484777, 21790516, 353798, 10082973, 12611098, 5838471, 5564130, -2392297, 1204738, +-19532438, -4927401, -2524904, 3229816, 4254702, 3995393, 13202193, 5888937, 6798397, -5006858, +-578210, 5252745, 685047, 549219, -4529043, 5495948, 4704600, 2711198, -3497177, 6958921, +-885837, 1349157, -5142150, -4784594, -1816234, 679142, 770410, -3078418, -10645076, 2653216, +2517388, -2779918, -367757, -2619393, 994822, -3801583, 2846490, -3650185, 351114, 9862856, +-2565706, -9434433, 6433324, 4698694, 3994320, -2128693, -1080721, 43309376, 3600793, -25885768, +-38356744, -20151986, -16094316, 5238250, 31480500, -420370, -13535589, 28391344, 2166274, -22780506, +20400020, 22397180, -4265977, -347355, -2349347, -20177756, 22306450, 1324997, 12578885, -7087770, +-18209588, -31436476, 5526549, 4010963, 4653060, -4414690, 9673340, -10447508, -353798, -20162724, +-25376814, 8835285, -3424700, 8000987, -3881577, -9336185, -23021024, -35350804, 17858474, -19770808, +7835094, 16962436, -1465121, -9137006, -17631914, -12549894, 40396316, 9190156, -2151242, 5223754, +-5677947, -16520055, -5708012, 23512262, -23130010, -38470560, -13733695, -12280922, -54114976, -42126648, +-22967338, -23483270, 5427765, -368293, -19071802, -36010080, -14560476, -17097192, -12549358, -9964324, +-7607461, -21618718, -20960514, 16103980, -18665390, 980326, 2367064, -22671522, -4351339, -16602733, +-20982526, -5194226, -3777424, 9334038, 3575560, 12615393, -13579613, 3157338, 7103339, -285078, +-18128520, -10235981, -12322798, -1395328, 5294084, -6260989, -9081708, 15062450, 8636105, 10760504, +-18563922, 2801393, -9297530, -1285269, 250719, 1516124, -2685965, 17959942, 908386, -3513820, +1770063, 6087043, 8668318, 7261179, -1763084, 10489384, -8355322, -4488241, -3930432, -14491220, +-988916, -4673462, -18782966, -15582141, 2022930, 389768, -921807, -5043366, -4634270, -1770063, +-3324305, 29300266, -3157875, 27896886, 42199664, -8069170, -45041324, -44302052, -9141838, 20718922, +3200288, -34840236, 27388470, -6248104, -22297860, 27443230, -51920248, -11312944, 544387, -9582072, +-7738458, 63009856, -26286810, 59029492, -2683281, 12168716, -4144107, -23760296, 38261716, 9781788, +39771396, -27390618, -26458610, 8331700, -42825656, -13196287, -6693707, -30231738, 62512712, -5711233, +-64409476, -1264331, -28599650, 8142185, 16119012, 25637196, 21243446, -25793962, -15779710, -39980776, +-11444477, -18655190, 17207786, 10994579, -1973001, 11457899, -7770133, -28421410, -11364483, -33121714, +33890512, -25658672, -17403744, 30039538, 7325604, 50947440, 24971476, 4268124, 27173184, -36393944, +-13348221, -37563784, -36154496, -5783711, -5127654, -45771468, 47159276, -8439611, -36323076, -54466628, +3711389, -10923712, 39942660, -2675228, 2217277, 5214091, -6982006, 7425999, 9101573, 18568754, +-12364137, -12708808, -7919920, 472446, -2146410, -2704219, -11678553, 13111461, 8293045, 15663209, +-3564286, -8572218, -7154879, -2839510, 3081102, 21028160, 22519050, -3685619, 1358820, 12140799, +-3267933, -28072444, -13502303, 1743220, 3974992, -2202245, -17769890, 6277095, -2013266, -4233227, +-20375324, 8057359, 7038915, 24445344, 4098473, 6066642, -1103270, 10104447, 1856500, -5737003, +-10763725, -775242, 1302449, 7991861, 3744675, -4575214, 782221, -84434760, 43488692, 10273562, +-18504330, -13590350, 26776974, 15047418, -16578037, -4284767, -40075804, -16505559, 16706886, -34283504, +1088774, 6333466, -10759967, -22826678, -15916075, 31071404, 12182675, -6082211, -44712220, 15182173, +27733140, 16270410, -34684008, -22826678, -110595, 37582576, 3081639, -8965207, 5643587, 1306207, +18884972, -49845780, -43468292, 53557168, 8024073, 22453552, -51133196, 11160473, -2567854, 37359772, +-33709588, -6316823, -51270100, 17907330, 36462660, 8688182, -22941030, 14676977, 53043384, -23835994, +-25733296, -19894826, 7286412, 2287607, 46485504, -13911936, 3287798, -25169046, 7975755, -27608050, +-1212791, 17812840, -34864932, 33095944, 9721658, -23953570, -37696928, -22649510, -2201171, 33381022, +-60625072, -13094282, 54263692, 7233262, -24935506, -11534672, -17682380, 51445656, -6015639, -53846540, +-6578280, 9127, -13604846, 21997748, -4088272, -7529615, 16347719, -1480153, -11375221, -14105209, +-1801739, -12437688, 3461744, 9165460, 11780558, -10826002, -8304320, 11217381, -7674570, 10621991, +-5957120, -10802916, 14484777, -8129300, 13009456, 18369038, 849330, -26625040, -2152852, -15873662, +6263673, 9824201, 6074695, -18613314, -159988, -14060112, 12781286, -3962644, -8410620, -5381057, +2484102, 4488241, -10306848, 4556424, 55711096, 28860032, 12746926, 13153874, 13305809, -8687108, +-8934606, -18665928, 2246268, 6271189, 4806069, -928250, -32294932, 15577310, 6179921, -22185116, +-19105626, -9525701, -11227581, 8484171, -8422968, -9334038, 2624762, -640487, -17211008, 22029424, +-15842524, -4948876, -16457778, -14679661, 10521059, -6187438, -2276870, 5625871, 6822556, -1672890, +-21863532, 5291400, 33774012, 7344394, -53298932, -3263102, -11668352, -16432545, 11075647, 12087649, +27400818, 13341779, -34810172, 37702296, -9444633, -25994752, 78216184, -15711527, -6830072, -25767120, +-62407484, 28594282, 31506806, 10505490, 11813844, -53179212, 15348603, -4099546, -13036836, -9315247, +1996623, -5002563, 8195335, 10195179, 2061047, -7841537, -15383499, 16208133, 20143396, 28309204, +-14120779, -2812667, 5855114, -4108136, 14658723, -36499704, 3384434, 6511708, -17286706, 2876554, +-14431090, 5635534, 94489, 4525285, -2527588, 1044751, 1236414, -705985, -667331, -4838818, +-3968550, 9786620, -5580773, -347355, 7037841, 1619740, 140660, 11949673, -10036802, 7320772, +8381629, -528281, -1913408, -10110353, 7987566, -18905910, -5505611, 12326019, 3360275, -5169530, +-12990129, 3852049, -3179350, 15328201, 1974074, -32019518, -75758392, -128835600, 10741713, 130523520, +12851616, 277747488, 281244672, 101683352, 282243776, 163164736, -47176456, -4716411, -25176024, -213886688, +-176745424, -124573376, -221391600, -212068848, -60050624, -133543952, -115755272, 26121454, 37507412, -28927678, +41635412, 60364692, 316754, 4109747, 120961848, 80277768, 31115964, 89006216, 167162816, 78376712, +92341800, 206156816, 82069312, 37010808, 178858000, 171901232, 8021389, 109941496, 195097280, 333934, +49908056, 115344032, -4023311, -94321776, 47221016, -19685446, -180954496, -169230832, -154954896, -302198208, +-446173024, -310969600, -434073568, -579060928, -408065920, -331177952, -447165152, -285944416, -137048656, -132619464, +-24606942, 133470400, 269739520, 304795584, 408446016, 555062272, 545955328, 515991456, 581759744, 580354240, +474490816, 381565984, 409119808, 271596000, 97252552, 129553928, 32440424, -238121584, -152527168, -161809664, +-331832928, -280684160, -201229424, -236272064, -272879680, -170083920, -148028736, -206746304, -169966352, -88458072, +-141257184, -186792960, -111631032, -79064440, -147512256, -83426520, 20434918, -46120968, -52147884, 59876676, +-1134945, -74912816, -8647917, -47011100, -169132048, -117944632, -88434448, -157402496, -69536056, 39788040, +76739792, 140245184, 233785808, 270999552, 285020480, 318847648, 340082496, 334289120, 308949344, 286983808, +244514640, 193994544, 120013200, 89642944, 12015171, -75082472, -131315944, -211596928, -303880736, -296107936, +-251233040, -228165312, -197125584, -135089072, -112981800, -101404712, -72184440, -47499652, -41632728, -17080548, +-9271761, -6615860, 2203318, 19368156, 32132260, 40164924, 47959752, 54702852, 53946400, 52291764, +45088568, 44095892, 31992674, 25121264, 12984760, 7540889, -5583458, -14230837, -19115288, -18086644, +-23982024, -23631984, -23475754, -23972360, -27299886, -19643032, -20133196, -12510703, 391379, 16029892, +23229868, 37631428, 44074956, 48703320, 51840792, 59017144, 55560232, 53575424, 51616380, 45845556, +30826054, 26853210, 21355652, 13776108, 4422206, 4271345, -6287296, -12198781, -18655728, -24482388, +-35243428, -37953552, -45371496, -50705312, -55515672, -54788212, -59144920, -57855356, -54980952, -47741784, +-41799160, -28247464, -18182744, -5893769, 2178085, 14578730, 20051054, 26979910, 29865592, 33560876, +31608812, 33571612, 29987462, 30001420, 25057376, 23674396, 18112950, 15127949, 8839580, 7357279, +2134599, 1916629, -1234803, -295279, -3041374, -1414118, -3238405, -1148904, -2823404, -493921, +-2150168, -537, -1699733, 513249, -1098975, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 10289668, --462246, -504122, 3228205, -1289027, 3693135, -1934883, -4823785, 1726577, 4772246, 752693, --782221, 6429566, 181462, 307627, -2214056, -1171452, 9918690, 1428614, -6790344, -4952098, -6986301, -595390, 7246684, 555661, -1416266, -640487, 5465883, 1133335, 11511049, 5128191, -3146601, -576063, 2533494, 5267241, -1314260, -3846143, -4918812, -891206, 4378183, 3836480, -5851893, 1698660, -3316789, -3374234, -1451699, 2502892, -815507, 1398012, -696858, -5187247, --4066260, 1648731, 3795677, 2399276, -1918777, -2112587, -170725, 5754183, 2879239, -578747, --1300838, 2693481, 1762547, 1182727, -2933463, 1510755, 2714419, -303332, 4158065, 4980552, --8637179, 3212636, 1739999, 5672041, 1677185, 495532, 2547453, -1091995, -4035659, -1444183, --2438468, -759136, -516470, 2494839, -140660, -1909650, 13422, 337155, 1444720, -1222992, -222265, -197569, 507343, 796180, 508954, 1013612, 84289, 645319, -1299765, 2907156, -4461398, 9722732, -7909183, 1799054, -1756642, 134218, -10155987, 1039919, 6067178, -8987756, --1894081, 6041945, 15949361, 2311229, -135291, 1157494, -10033044, -301721, 7349226, 6568079, -152471, -187905, 580357, 3456375, 5726802, 6083821, 6527814, -2909304, 1389959, -380641, -2500745, 726386, 1602560, -10136123, -2810519, 1600949, 802085, -5598490, -207769, 3847754, --4494684, 3543885, 3228205, 6026913, 2787434, -2283312, 2972654, 6732898, -3790309, -6052683, -2007897, 1421097, 1156957, 3197603, -2718178, -4893042, -7340636, 5918465, -1116155, -1370632, --2407329, 2603287, -119185, 3841312, 7543573, 1542967, 486405, -397284, -1856500, -5896990, -9156870, 2269890, -1125281, 4756140, -775242, -5436892, -4816269, -1056025, 1778117, -7933879, -625455, -4701379, -918049, 2428804, -166967, 1278827, -1450088, -2593087, -580894, 1315334, -1769527, 1335735, -305480, -795106, -76773, 1298691, -714038, -1321776, -1017907, 252866, --529892, -4781909, -4100083, -5185636, -7303055, 4075387, -68719, -3529926, -1368484, -1817845, -1615982, -2937758, -5007395, 1116155, -3247532, 8567923, 11451993, 9008694, -6229313, -269509, --388695, 2388002, -3447248, 7060926, 4469987, -1042066, 3456912, 5347771, 458488, 1273458, -1899449, 5194763, -476741, 1913408, 6275484, 606664, -48855, -2761664, 4521527, -6825777, -2767570, -982474, -1374390, 4497368, -4353486, -583579, 176094, -5937793, 2476049, -1222455, -2757369, -222265, -2531883, 1762547, 1900523, -343061, 5268851, -406411, 6074695, -122943, --4003447, -1823214, 252866, -2779918, 5419175, 2784750, 4654671, 5223754, -2277407, -5236102, --3380139, -39192, -945967, -1142461, 4303557, 5372467, -788663, -2995203, 1900523, 1441498, --2051921, -2860448, 989453, -4093641, 1008780, -112206, -108448, -1121523, -3825205, 834297, --1495186, 124017, 1738388, -35433, -1945620, 950262, -2675228, -83215, 190052, -652835, -243203, 481573, -1455994, -9127, 195958, -1780264, 386010, -559956, -91805, -952946, --9664, 451508, 1542967, -15125264, -3554086, -4716411, -8164196, 2778307, 2152316, -981400, -3813394, -533113, 3220689, 4525285, -1978906, -5291400, -6649146, -2546379, -6190659, 482110, -701153, -2706903, 3538516, -3040300, 1905892, -1390496, -3522947, -9411884, -3644280, 836445, -1498407, 2471217, -3479461, 2496987, 3802657, 1251446, 8604967, 2135673, -198642, 6646999, --4676146, 3839701, 654446, -2234994, -3158412, 4287988, 600222, 1356673, -10109816, -1866700, --3324305, 10184441, 4389457, 3670587, 4158065, 4677757, 3725347, 5187247, -2716030, -1107565, -3204583, 5096516, -657130, 5952288, -3172907, 1306744, -1261110, 5043366, 7573638, -11778948, -3118683, -2909304, 406948, -5553393, -2828236, 936303, -1657321, -2381023, -4686346, -2119566, -2253247, -106837, 5077725, -523449, 1977833, 4381404, 6983617, -251792, 1869385, -805306, -3269007, 527744, 1608465, -2148558, -724239, 239981, 1513976, -954020, -1540820, 86436, -123480, -1210107, 221728, 716723, 66035, 2037425, -853625, -936303, 268435, 1777580, --676457, 51540, -602906, 1064078, 1666447, -214748, 1596117, 1715303, -372052, -719407, --263067, 5914707, 3607236, 2151779, -1136556, 496606, 625992, 7631083, -6069326, 7654169, --1032940, 4174708, 7817378, -4897874, 6051609, -3789772, 3095598, 1192390, 9190156, 4077535, --5151277, -8440684, 1900523, -6328635, 5183489, -1298154, 6761353, -5057861, -848256, -4051228, -2313377, 1504849, 1913408, -511101, -750009, -7375533, -3262028, 6054294, -4860293, -988379, -3908957, 178241, -3813394, 1223529, 307627, -858993, -3311957, 6613176, 2078227, -9447317, --4292283, -7630010, -1369021, -6749541, -11649025, -2661269, 5030481, 14289356, 3090766, 1163399, -6703370, -197032, -5316633, -4633733, 3725347, 1446867, 2501819, 4107599, -10161893, -2510945, --9350681, -2068564, 2570538, -3713536, -8647380, 846645, 3684545, -1866700, -3241090, -1542430, -1455457, -1305670, -402116, 1858647, -1222455, -1301375, -1777580, -1292248, -3984119, 1383516, --1069984, 1787243, -710280, 1034013, 2447058, 321586, -715649, -261456, -2146410, -1423782, --3374234, -3056943, 417686, 333397, -44560, 1156420, 1904818, 1332514, -44560, 1210107, -1004486, -942208, 718870, 761283, -1782411, -753230, 16357920, 4006668, 11818139, -5493263, --867583, -3882651, -1009854, 12744242, -10887742, 3712462, 1132261, 16661252, 8731132, 11086384, -1915555, -2647311, 5096516, -3530463, -13835163, 2700461, 686658, 1698123, 10733660, 1115618, --6458557, -475668, 188979, 3519726, 3652333, -241055, -1514513, 4504347, -5273146, -1343251, --2718178, -1245541, 1239635, 280247, 9442486, 1455457, 7393250, 8716099, 2292439, 7696582, --662499, 2600603, 4531728, -4919348, -7562901, 1014686, 7419556, -11933030, 3476776, -9139690, --8710194, -5206037, -2486249, -8033737, -7953206, -8239895, -4362613, -1995012, 5482526, 208843, -6587943, 1085553, -5607617, 8505646, -8868034, -3254512, -3729642, -3530463, -4748087, -6051072, -8652748, 6879464, -3926137, 3413962, 2654827, 6987375, -73014, 5065914, -2556043, 6349573, -3073586, -3639448, 115427, -3282429, 3901441, -3754875, 325881, 3157875, 137439, 2431488, --771484, 446140, 1547799, -486942, -1777043, 1624571, -547071, 335007, -3326989, -2616709, --2673617, -1953673, -433792, -1064078, -2326799, -40265, 375273, -988379, 171262, -14496, --1392106, 348429, -8904004, -8906688, -5283347, -5457293, -2950643, -2230699, -10675678, -8531953, --7262253, -1078037, -650151, -1309428, 7362648, 775242, 3788161, 5702106, 6606197, 1075889, -12940200, 16269336, -365072, 4734665, 3634616, -1939715, 7072201, 3882651, -14623827, -455267, --5079873, 877247, 11254425, 4523138, -11700565, -3068217, 5160940, 5184026, 681289, 14971719, --6222334, 6055904, 6063420, 6686727, 3860639, 7783555, -13182328, 4848481, -5165772, 7842611, -256624, 3396246, -9906342, 7278896, 5215164, -1243393, 5048197, -821949, 1382980, -66035, --5185100, 1369558, -3328600, 3253438, -4098473, 5084168, 1552631, 12687333, 9426916, -2954401, -3343632, -10409390, 9050570, -2827162, 5535676, 9843528, 9607305, 477278, 9813463, 6828461, -4620848, 5020817, 9013526, 918049, 1916092, -7373385, -1321776, -2103997, 1658394, -5314485, -759136, -3868692, 1170916, -3854196, 1145146, -1407676, -2462090, -2269353, 1558536, 180389, --1262184, -901406, -3183645, -1005022, 513249, -903554, -2308545, 347892, 2306398, -5385352, --3381750, -2967823, 2133525, -3299072, 1990181, 32749, 1123671, -2731599, -4085051, -900869, -747324, 8596377, -7664906, -1971927, 6791954, -3610457, 11656541, -3705483, -8295193, 15561740, -21082920, 4718559, -8373039, 5857262, -4433480, 8698919, 5009543, -1868311, -8879308, -5760625, --15072651, 3959423, 6370510, -13240310, -1619203, 7732015, 1970853, -621160, 274341, -1603633, --7223062, 1767916, 8865349, 386010, 1883880, 3245385, 12574054, -8289824, -268972, 9188546, --8421357, 12334072, 606127, 17325362, -14431090, -12952548, 7107097, 664646, -1758789, 3743601, --1220845, 4842039, 2928631, 9647570, 9139690, -7551090, 1358820, -4925254, -3015604, 5785858, --742493, -2935610, -1307281, 302258, 8583492, -16413754, 12506408, -3896072, -5622112, 9328132, --7529078, 7485591, -10121627, -5640366, -1896228, -7467338, -2615635, -5262409, -8419747, -5622112, -1813013, -1878511, -2039573, -86436, -3932580, -1213328, -602369, 5243618, -288837, 793495, -2076080, -2155537, -877247, -1818382, 1243393, 2587181, 676994, -1007707, 6098317, 76773, -4519380, -4887136, -3205656, -2883534, -2127083, 2379949, 1115081, 213675, 3538516, -2602213, -2696703, 1124208, 2506650, 1481764, 335544, -3075197, -10413685, -8028905, -3461207, -7532836, --11357504, -2441689, 4192962, 13958107, 2319282, -8495982, -15612743, -3311957, 4900558, -2782602, -16855600, 5245766, -5903970, -11934104, -14817637, -28192702, -2255932, -3149822, 10827076, 7934952, --5723044, 688805, -4418448, -2479270, 10164040, -310311, 581431, -1276679, 11525545, 1901597, --3402151, -613643, -381178, 3063922, -10405095, -3335042, -4065724, 16488916, 3899294, -17431124, -4529043, -9067213, -5034776, 2517388, -16137803, 4992363, 11710228, 10302553, 8113193, 1926830, -3303904, -566399, 1763621, -10247792, 3752728, -16019691, -3020973, 9108015, 3390340, 9331890, -9292162, 7602629, -5186710, -11834782, -10268730, -8018704, 2637110, 3150896, 5504538, 5385889, -1222992, 3586298, 11579769, 16111496, -3830037, 5717675, -3975529, -4382478, 4982162, -7125888, --2464774, 255014, -4452808, 4167729, -3863860, -3435437, -1833951, 975494, -986769, 2254858, -78383, 3279208, -746251, -2043868, -892279, -2001455, -5068062, 1333051, 2778844, -279173, -1838783, -525597, 2502355, 4671851, 4544613, 3477850, -3577171, -1862942, 3503620, -1087164, --1352915, 296353, -548145, 3456912, -753230, -229781, -503048, 8207146, 14605573, 16855062, -12236362, 20843476, -9737228, 14806900, -12678743, -9988483, 11016054, 14021994, 16616155, -17139604, --69793, 4293357, -12651363, 5987185, -5545340, -9002788, 10274099, -13346074, 14492830, -13717589, -13579076, -9849434, -3593277, -914828, -17889076, -2501282, 19790136, -5065377, -14089640, 3010235, -9206262, -10307385, 5134097, 21356188, 11521250, 4318053, 9484898, -11308112, 7580081, -6794639, --19430968, -5909338, -5058398, 1440425, 8858370, 10901701, -4798016, -8536248, 7802882, 53150, -5979668, 3713536, -3139621, 1064078, -7710540, 1178432, 2493766, -103079, 2572149, 17577690, --2146410, 1739999, 5058935, 1050120, 2194192, -8938364, -9750113, 6799470, -11612518, -15819975, --16563005, 12911209, 8393977, 2489471, -860604, -1917166, 6203007, -973347, -4616553, 5919002, -16297253, 10992432, -4255776, -2759517, 5078799, 2914672, -1095754, -2572149, 1884417, 2296734, --635118, 670552, 8873939, 2117419, 1312113, 3463891, -2820183, 650151, 2861522, 5890011, --512712, 428960, -5696737, 1872069, -2937758, -2178622, 6067715, 4833986, 372588, 3791383, --3202435, -1564979, 1867237, 45634, -1668058, -3302830, -3515431, 2303176, 1096290, -1542967, -2126009, -13518410, -21475374, 7644505, 27878096, 13653164, -5236639, -21563420, -7502771, 1376000, -2998424, -4190814, 10574209, 7141994, -7849053, -4055523, -1066763, -14272176, 19808390, -9035001, -7044283, -1660542, -4693326, -17391396, 5676336, 3604015, -2188823, 2093797, 7765301, -2849174, -19364934, -4351339, -2981244, 16159814, -1829119, -11621108, -10405095, -20068234, 2733210, -4467303, --6254546, -4388920, -14737107, -6179921, -13802951, 1451699, -12152073, 10939282, -6878927, -247497, -3383897, 1337882, 6305549, -5848672, -14913200, 6455873, -1739462, 3678640, -3353833, -1529545, -417149, 14313515, 21435644, 5802501, -6760279, 7388418, 7767449, 8496519, -3528316, -7203197, -10921028, 5152350, 14602352, 3373160, 3885335, 386547, 4377109, 13138842, 17960480, 8818642, -3017752, 6726993, 2825552, -3786551, -12334072, -7840463, 1384053, 5939403, 924492, -339302, --4629438, -1739999, 2511482, 1686312, -9751723, -1876364, 2182917, -437550, -4863514, -4083440, --5434744, 998580, -970126, 3666828, 6884296, 4028679, 213675, -2326262, 4207994, 5046587, -328028, 1664837, -6808060, -282931, -2312303, -7001334, 1458678, 1234803, -6232535, -676994, --1464584, 2310693, -2423972, 5819144, 27917, -1424319, 7854959, 41753524, 924492, -11023034, -34548716, 17670032, 15231565, 30259656, 29904246, 8709120, 9466645, 7661148, 32508070, 1792612, --11556683, 14183593, 2944737, -12614856, -14381161, 12640089, 12089259, 23517094, -2351495, 1800665, -258235, 3306051, -13966697, 15752329, 10835129, 4902169, -10861972, 16664473, -5080410, -787590, --22064858, -4716948, -1723356, -1312113, -11666742, 7685307, -10856604, -6095096, -6386080, 3220689, --7541963, -10056129, -14111652, 14921790, -10757282, 15863999, 6914361, 13041668, 3935801, -13117367, --737661, -21135534, -9901510, -11489574, 4352950, -14659260, -8122857, -2610803, 3221, 15342160, -1472100, -2330557, -24581172, 9752260, 8143795, -519691, -378494, -12320114, 9326521, 1086627, --10792179, 29006062, 6332393, -3721052, -534723, -11620034, 1745367, 14553497, -4031901, -1157494, --16294032, -9491878, 5640366, -2215666, -7852811, 9431748, 5537287, -9549860, 8320963, -3286187, -2488397, -3177739, 8134668, 1832340, -1537061, 261456, 1797981, -11518565, -103616, -4239670, -3190624, 3983045, 5410048, -4717485, 3879966, 3123515, 2232846, 4262218, 4749697, -341987, -3599720, -5538361, 9506910, -4400194, 8000987, -5699422, 3394098, -12678743, -23252416, 7141457, -7002408, -7194070, 15134391, -16734803, 18177912, -13114146, -7638600, 5851356, 4205847, 46917148, -18330920, 7028177, -29279328, -779000, -6950868, -15518254, -4510790, -5672041, -5138929, -1737314, --24349780, -468688, -9214852, 301721, 11850352, -12915504, 15378130, -5042292, -17027398, -15187541, -12182138, 9347996, -3811247, -8385387, 15538118, -8386461, -7925289, 12217034, -354335, 3759707, --12592307, -424128, -7406134, 15669651, -2368675, 22478248, -8414378, 3378529, 6766184, -642098, -852014, 6857989, -14500883, -2323577, 18462454, 1498944, 5061619, -171262, -14987825, 6403260, --10465762, 5325223, 16137803, 20950314, 22836342, 24054502, -5201206, 8442832, -205085, 12908524, -29139742, -32017370, 24879672, -14802068, 6677064, 20012400, -12641162, 1289027, 6269579, 5457830, --1509144, 13929116, -5412733, -4404489, 5874979, -3340411, 13402982, -1990181, 5070209, -10815801, --1774895, -323196, -8730058, -3665218, -11008538, 114890, 3160022, 1068373, 12184822, -4028679, -804770, 1316408, 5168457, 1275605, 5213017, -7233799, 5423470, 1671816, -326954, 3877819, -5316096, -6082748, 5522254, -11696270, -10357314, 7212861, -3487514, -8297877, -1215476, 3395172, --5355288, 9415642, -11256036, -24722368, -4832375, 5019743, 322123, 5819144, -18398030, -2472828, --3786014, -26129508, -20268488, 10424959, 10835129, 5050345, 7463043, -13359496, -6593312, -9458592, -28570122, 6903623, 763430, 21461952, 12298639, 10814728, 9666361, 8469676, -15126875, 10907606, -4371740, -4587025, 8497593, -7557532, -7555921, 14997489, -6529424, 9476308, 19683298, 757525, -3738232, -278099, 1238024, -4218195, -11613592, -14539001, -23801098, 9817758, -20168092, 7640747, -7787313, 10214506, 23085, 706522, -2864206, -15391015, -7396471, 7963406, -5416491, 8216810, -19689204, -5964636, 15050639, 7023882, 1629403, -752156, -5432060, -14230300, -652298, -19266150, --6779606, 20881058, -11143293, 3414499, -34302832, 16380468, -6392522, 5362804, -26480084, -23386096, -2174864, 6436546, 12046310, -27154394, -2936684, 478352, 18549964, 15372225, 17164836, -5348845, -317828, 2756832, 8953933, 2289755, 4903242, 14374719, 8031052, -5272609, 5114769, 1541893, -970663, -151934, -3069828, -11585137, 4079145, -5524939, 1709397, 4821101, -197032, 1216013, --206158, 4839355, -2946348, 19360102, 5162014, -576063, 10650982, 6664716, 841277, 3398393, --377420, -8373039, 11195369, -3492345, 1460289, 13643500, 7417409, -3997541, -2684, -5157182, -8799851, 6343130, 7504919, 6675453, 20433844, -48400524, -11907797, -28752122, 9699647, -25822954, --8657580, -29264834, 7824894, -15265924, -11705933, -2510409, -24850680, -9047885, -26626112, -13458280, --30828738, 6635188, -28522878, -11290932, -14820858, -8318278, -7836168, -6676527, -27227946, -15583215, --20715164, -10644540, -5985037, 11740830, -1705102, 8759586, -16946868, -2775086, 975494, -19541028, -3773666, -1385664, 1654099, 5096516, -19764366, -1134408, 7289097, -2462090, 8216810, 16393353, -29733522, -24717536, 1518808, 33031520, 160524, 16204912, -11584064, 20462298, 3743601, -4909148, --27478664, -16199543, 22818624, 14068165, 22282290, 797253, -15542950, 5659693, 8051990, 15916612, --29880624, 196495, 5661304, -16512539, -5496485, -7148436, -10002979, -23964844, 37035504, -6822019, --11898133, -7617662, 7679402, 8875550, -20929912, -19472844, -771484, 6180995, 971736, 48318, --4081830, -7085623, -89657, 18644990, 11563126, -136365, -15367393, -10649908, 1727114, -5942624, -4072166, 4912906, 2512556, -1633161, -7926899, 3229279, 3930432, -2205466, 5950141, -3473018, --13646185, -6495065, -779000, 3951907, -1013612, -4401805, -19968376, -7995619, -4572530, 1497870, -2506114, -8642548, -15467788, 6047314, 9290551, -8218420, 372052, -7226820, 7824357, -2532420, --13719199, 20590074, -34749508, -365609, -6883759, 15025943, -7646116, -21415780, 18715856, -37593848, --32413582, -26754426, 15353434, -7954280, 871878, -14585172, -13802414, -16129750, 9084393, 7867307, -26230976, 12353400, 5324149, 24424942, -6468758, 8869644, -8777839, 7652558, 4440996, 14565308, -23536958, 12304544, -4861366, -14352170, -8548059, -2908767, 13234942, -4325569, 3716221, 530965, --6033892, 12520903, -756451, 10286984, 7646116, -19981262, 16547972, 30373472, 4763656, 25415468, -24601572, 11182484, 8172249, 102005, 13019120, -8036958, -29461328, -9558450, 21953188, 264141, --10806138, 11337103, 31161062, -7051800, 2426657, -22462678, 22228066, 19946902, -1400159, 6461242, --10116259, 51125144, -31996432, -27755690, -26209502, 2295660, 981937, -7656316, 22814866, -31894428, --496069, -20355998, 7864085, 9140764, -1386201, 22272626, 5167920, -1787243, -11958263, -52076, -5657546, 16263967, -11023034, -14159433, 6007049, -8392366, -2177549, 2087891, 3938485, 1436130, -154082, -949725, -13351443, 1398012, 3282966, 9342091, -7873749, -4373351, 5264556, 2581275, -3683471, 455803, -8699456, -858457, -9883793, -7444789, 10085120, 5217312, 5710696, 4057134, --269509, 2084133, -2641405, 6208375, 906238, -2583423, -514859, -8602283, -3212099, -5665599, -3605625, 56146496, -12625056, 31411244, 53327388, -17985712, 25399362, 11656004, -34111704, 31150860, -4365298, -14500346, 22434762, 9965935, 21057688, 82678, -18367964, 17329120, 5544266, 350040, -5047661, -4907000, -19415936, -11125039, -9469329, -16264504, -12593381, -2874944, 12362526, -11120744, --7166153, -16020228, 3109020, 1644436, 2267206, 22584012, -13710072, 5632313, -12745315, -6760816, -12476880, -9992241, -23264764, -29204168, 33566244, 15311558, -8761733, 23624468, -21853868, -18596134, --11800960, -1647120, 3084860, 398358, -20370494, -14485851, -16006806, -34186864, -21858162, -18311594, -6294812, 11781095, -1302449, 20218022, 3444564, -20365124, -18120468, 27194660, -23479512, 3471944, -23272818, -2894271, -41038412, 28625420, -15358266, 4714801, 1478006, 23708756, -6008123, -8886287, --1547799, -13346611, 6708739, -23123568, 7558606, -29774860, -19503446, 11691975, -13033078, -3546032, --1990181, -17641578, 5471789, -10264435, 8157217, -2611877, -670552, 1002338, 10723996, -7900056, --6704981, 2035815, -11565810, -4872641, 1366337, -7247758, -8202851, -5325760, -3684545, -8471823, --5118528, 12148315, -10158671, 4735739, 6947647, -1694365, 7453379, -10319196, 812286, -7234336, -14847165, 2913062, 5126581, -10562398, 12998719, 9233106, 9871445, 4376572, 971736, 3330747, -7089381, -7229504, 462783, -6010270, -27130772, 16314970, -7689065, 27520540, 18867254, -43670692, --5509370, 4770098, -26657788, -4217121, -4362076, 32467268, 23342074, 21734682, 26920318, -872952, --18862960, -14475114, -15014132, 844498, -41787348, 5149129, 35786204, -32488744, -58886148, 6129992, --22035330, 43576200, -289910, 1557999, 29127394, -13215614, 5984500, -1218160, -7913477, 25426744, --7298760, 12927315, 42526620, -31168040, -17861158, -28397250, 14199699, 2493229, 28470802, -16203301, -11216844, 1640678, 25930866, 15396384, -12681965, -8321499, 9810242, -4573604, -1155883, -18204218, --18068928, 9596031, -4034048, -5216775, -10275172, 23589572, -8908299, -9327595, 39385388, 42210940, -27274652, -35679904, -3176128, -11144903, 13903346, 52536040, -6633040, -39860516, -2617246, -16363289, -23542326, 10631118, -26780194, 14205067, 10404021, 13858786, -25838524, -9215389, 1923072, 22985592, -1417339, -3588445, 3760781, -7751879, 1811403, 22969486, 11118597, -9435506, -11438572, -2512019, -7219303, 9240085, 12096239, -11334419, -4328254, -20850456, -4380867, 13345537, -13136694, -1977833, --8109435, -7439420, -12338367, -2498597, 8424041, -1793686, -881005, 2195802, 5374615, -5466957, --15742666, -16254841, 9879499, 7677791, 13798656, -6793565, 10131291, 29702920, 1570347, -17627620, --2833605, 1699733, -1573032, -10991895, -4508642, 3362960, 8637716, -1745904, -25593710, 3745212, --20978768, 19320910, 11311333, -20750598, 35316980, 53223772, 1644973, -2583960, -18114562, -18559090, -3244311, 2984466, -8855686, 48147120, -4208531, 35892504, 28975996, -36424008, -1000191, -12262132, --38730404, 9731859, 9159018, 21166136, 36531380, -1169842, -10241350, 11902965, 13345537, 28579786, -12150462, 2569464, 23732916, 24759412, 8697846, -5761162, 21783000, 9586904, 26146688, 5515812, -7659001, 16210280, 27688580, -4635344, -21644488, -25259240, -8056285, -8807367, 43465068, 23686744, -66998804, -3149822, -33499672, 29620778, -9991168, -11569031, -9909563, -22759568, 3549254, 12744242, --296890, -12756053, 47674136, -9496710, 56225952, -15357192, 30354682, 2626373, -9249749, -30579630, --43438764, 40928892, -3741990, -6990596, -12320651, 38045356, 209917, -39908836, 73418168, 23024246, -8203925, -8383240, -30487288, 15413564, 1064078, 15518791, -14041859, 11082089, 5806259, -6869800, --10308995, 1935957, -12509092, -5940477, -14241038, 1744831, -2298881, -136902, 5051419, 12015171, --11915313, 4743255, -5690295, -295279, 16317118, 10782515, -5494874, -20033874, -389768, -1115618, -2930778, 18445810, -11654931, -6956774, 4871567, 11612518, -16460462, 1205812, 11288248, -162135, --1020592, -17368848, 9325448, -455267, 8520678, -18144626, 2344515, 7844221, 6395743, 9140227, --17220672, 14839112, -18262738, 11761768, 49823232, -29701846, -18738942, 3798362, 9163313, -5839545, -35314296, 27115202, 27821724, 9104794, 13835700, 23009214, 14544370, -8632884, -13648332, -31413928, --4858682, 16925930, 6054830, 3489124, -11434814, -29721174, -8429947, -4351339, 30272540, 205622, --3413425, 22612466, -3444564, 6106370, 5048734, -51025284, 13212930, 13524852, -8701067, -21929566, -4309463, -28862180, -14412837, -44098576, 13450227, -36851356, -72482408, 8237748, -820876, 50969452, --1585380, 17184164, 42418708, -7118909, -10780905, 18575734, -202937, -37058588, -12712029, 4650913, -6308233, 27004070, 11489574, 24026584, 21150030, -15280957, -11125039, 10128607, 31042950, -13049184, --6311992, -28541668, -19413252, 7337415, -38112468, 10910828, -42829412, 7982734, -11178189, 30330522, --13170517, 21446382, -45916960, -9570261, 6446746, -27599996, 7078643, 4678293, 4886062, -20859582, -11006391, -20427938, 5921686, -1724429, -8484171, -3874597, -1890859, 6306086, -6922414, -3397319, --5527623, 13016972, -8446590, 7541426, -19325206, 10089415, -1000727, -1717987, 2914672, 18697066, -6675990, 7908646, -22431540, 2794950, -9130564, -27991376, 11301670, -9058086, -6976638, -10421201, -10487236, -5143224, 5110474, 5720897, -2592013, 1108638, -6732361, 1850057, 5794985, -1439888, -964220, -845035, -10672994, 39035884, 41475964, 97137664, 11383811, -54258320, -40846748, -29954712, --34712464, 68021544, 90636160, 30826590, -8702141, -28438052, 960462, -34431144, 37940132, 35999880, -10612864, 5289252, -22541598, -3168612, 41758892, 9838159, 16755204, 14244259, 43823700, 36998996, --14261976, -32519344, -43154756, -28964722, -4356708, 12117713, 39400420, 23753316, -8260833, 21475374, --29958470, -10083509, -67331128, -10523744, 66218196, 51307680, -10334228, 134342816, 42083700, 4050154, --73618424, -12426951, -6335614, -17147120, 18778134, 10555956, 15909096, 28294170, -60071560, -64566780, --32520418, -43515536, -6243809, 14910516, 54322208, -32366874, 19867444, 84825064, 42330124, 14881525, -23735600, 17421998, -51163796, -84526568, 43301860, -20802138, 18643916, 45486924, 50162532, 4575214, --30338038, -39827232, -32590748, 35201552, 20269562, 6260989, 34992708, -34722664, -6054830, -5431523, --15431817, -17894444, -1533303, -360240, 11359115, 3684008, -4997195, 258235, -430570, 743566, -3006477, 6647536, 10118943, -9945534, -13794361, -47216188, -25915832, -23255638, 27986006, 16722455, -10014790, -38626252, -37971804, -61038464, -16681653, 24223078, 30775588, 40193376, 15720654, 11870753, -4691178, 4038343, -1125818, 9148817, -2125472, 28835874, 20327544, 4234838, 251256, 362388, --4901632, 95026, -3437585, -20665772, -88855360, -21197812, 49562312, 94849520, 83600464, 200366672, -104897600, 71143448, 62631896, 28474022, -11193222, -101255464, -127066608, -189608304, -145167216, -148958592, --56646860, 721555, 57047368, 106081400, 87547536, 90435904, 62362388, 85089744, 66643396, 94214400, -44893684, 35119412, 16821240, -24260660, -37267432, -57130580, -34507916, -124069256, -52380348, -117431920, --84691384, -134404016, -79864920, -125110784, -44407816, -62033824, -20174536, 9552544, 63513440, 166483664, -158586832, 222144304, 150401168, 102548784, 133221296, 181897776, 160131952, 134443216, 93853088, 11283953, --90948616, -90345176, -111925240, -213090512, -235185424, -256234528, -255807712, -280960640, -242934624, -204712096, --180480976, -117586008, 13536663, 133675488, 232635824, 307434304, 383318304, 426441920, 297354016, 283510240, -184050080, 111439368, 105385616, -6365142, -34787624, -163440688, -313117088, -337312768, -273761760, -211687120, --124660352, -100955352, -102715752, -56740812, -88209504, -35779760, -9798431, 67680096, 128664872, 105603584, -137536656, 147721104, 157682752, 139170368, 185894240, 138049920, 113196544, 58380416, 12022150, -31498216, --144003808, -127659312, -170960640, -226791984, -205370304, -235537088, -241945712, -70679056, 7909719, 122815664, -150490288, 160145376, 186028992, 194166352, 164831712, 143226960, 109942032, 83212304, 30141544, -21665426, --64131916, -115826144, -169924480, -159350272, -142110272, -106482976, -50061600, -22230750, -10474351, -6448357, -15658914, 32527934, 39698384, 42518564, 35276712, 28041304, 30631170, 24751360, 18669686, 33991980, -38386808, 29316374, 14464376, 7485591, 12199318, 15668041, 6249178, 3095061, 6237903, 836445, --11827266, -35400196, -42541116, -28210956, -21598854, -24828670, -23589572, -14520748, -20495584, -23381266, --20064476, -8260833, 1870995, 10173167, 14108431, 18976776, 21678310, 20010790, 17019882, 19320374, -19576998, 17012902, 11996381, 8338142, 2926483, -1067299, -2303176, -3824132, -7774428, -4822175, --2280628, -4078072, -5760625, -3799436, -747861, 3356517, 2638721, -446677, -3553012, -2975339, --5353677, -9904195, -12313671, -11530913, -10953240, -9507984, -10278394, -8945343, -3889093, 282394, -1404991, 7608535, 16209207, 19364396, 16056198, 14565308, 14669461, 12628278, 7373385, 3803731, -2605435, -46171, -4412005, -6541235, -7711614, -7814156, -7621420, -7081328, -5683853, -4032438, --3651259, -3367254, -2847027, -1453846, -804770, -248571, -53150, 542240, 504122, 650688, -344134, 396211, 47245, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-462246, -504122, 3228205, -1289027, 3693135, -1934883, -4823785, 1726577, 4772246, 752693, +-782221, 6429566, 181462, 307627, -2214056, -1171452, 9918690, 1428614, -6790344, -4952098, +6986301, -595390, 7246684, 555661, -1416266, -640487, 5465883, 1133335, 11511049, 5128191, +3146601, -576063, 2533494, 5267241, -1314260, -3846143, -4918812, -891206, 4378183, 3836480, +5851893, 1698660, -3316789, -3374234, -1451699, 2502892, -815507, 1398012, -696858, -5187247, +-4066260, 1648731, 3795677, 2399276, -1918777, -2112587, -170725, 5754183, 2879239, -578747, +-1300838, 2693481, 1762547, 1182727, -2933463, 1510755, 2714419, -303332, 4158065, 4980552, +-8637179, 3212636, 1739999, 5672041, 1677185, 495532, 2547453, -1091995, -4035659, -1444183, +-2438468, -759136, -516470, 2494839, -140660, -1909650, 13422, 337155, 1444720, -1222992, +222265, -197569, 507343, 796180, 508954, 1013612, 84289, 645319, -1299765, 2907156, +4461398, 9722732, -7909183, 1799054, -1756642, 134218, -10155987, 1039919, 6067178, -8987756, +-1894081, 6041945, 15949361, 2311229, -135291, 1157494, -10033044, -301721, 7349226, 6568079, +152471, -187905, 580357, 3456375, 5726802, 6083821, 6527814, -2909304, 1389959, -380641, +2500745, 726386, 1602560, -10136123, -2810519, 1600949, 802085, -5598490, -207769, 3847754, +-4494684, 3543885, 3228205, 6026913, 2787434, -2283312, 2972654, 6732898, -3790309, -6052683, +2007897, 1421097, 1156957, 3197603, -2718178, -4893042, -7340636, 5918465, -1116155, -1370632, +-2407329, 2603287, -119185, 3841312, 7543573, 1542967, 486405, -397284, -1856500, -5896990, +9156870, 2269890, -1125281, 4756140, -775242, -5436892, -4816269, -1056025, 1778117, -7933879, +625455, -4701379, -918049, 2428804, -166967, 1278827, -1450088, -2593087, -580894, 1315334, +1769527, 1335735, -305480, -795106, -76773, 1298691, -714038, -1321776, -1017907, 252866, +-529892, -4781909, -4100083, -5185636, -7303055, 4075387, -68719, -3529926, -1368484, -1817845, +1615982, -2937758, -5007395, 1116155, -3247532, 8567923, 11451993, 9008694, -6229313, -269509, +-388695, 2388002, -3447248, 7060926, 4469987, -1042066, 3456912, 5347771, 458488, 1273458, +1899449, 5194763, -476741, 1913408, 6275484, 606664, -48855, -2761664, 4521527, -6825777, +2767570, -982474, -1374390, 4497368, -4353486, -583579, 176094, -5937793, 2476049, -1222455, +2757369, -222265, -2531883, 1762547, 1900523, -343061, 5268851, -406411, 6074695, -122943, +-4003447, -1823214, 252866, -2779918, 5419175, 2784750, 4654671, 5223754, -2277407, -5236102, +-3380139, -39192, -945967, -1142461, 4303557, 5372467, -788663, -2995203, 1900523, 1441498, +-2051921, -2860448, 989453, -4093641, 1008780, -112206, -108448, -1121523, -3825205, 834297, +-1495186, 124017, 1738388, -35433, -1945620, 950262, -2675228, -83215, 190052, -652835, +243203, 481573, -1455994, -9127, 195958, -1780264, 386010, -559956, -91805, -952946, +-9664, 451508, 1542967, -15125264, -3554086, -4716411, -8164196, 2778307, 2152316, -981400, +3813394, -533113, 3220689, 4525285, -1978906, -5291400, -6649146, -2546379, -6190659, 482110, +701153, -2706903, 3538516, -3040300, 1905892, -1390496, -3522947, -9411884, -3644280, 836445, +1498407, 2471217, -3479461, 2496987, 3802657, 1251446, 8604967, 2135673, -198642, 6646999, +-4676146, 3839701, 654446, -2234994, -3158412, 4287988, 600222, 1356673, -10109816, -1866700, +-3324305, 10184441, 4389457, 3670587, 4158065, 4677757, 3725347, 5187247, -2716030, -1107565, +3204583, 5096516, -657130, 5952288, -3172907, 1306744, -1261110, 5043366, 7573638, -11778948, +3118683, -2909304, 406948, -5553393, -2828236, 936303, -1657321, -2381023, -4686346, -2119566, +2253247, -106837, 5077725, -523449, 1977833, 4381404, 6983617, -251792, 1869385, -805306, +3269007, 527744, 1608465, -2148558, -724239, 239981, 1513976, -954020, -1540820, 86436, +123480, -1210107, 221728, 716723, 66035, 2037425, -853625, -936303, 268435, 1777580, +-676457, 51540, -602906, 1064078, 1666447, -214748, 1596117, 1715303, -372052, -719407, +-263067, 5914707, 3607236, 2151779, -1136556, 496606, 625992, 7631083, -6069326, 7654169, +-1032940, 4174708, 7817378, -4897874, 6051609, -3789772, 3095598, 1192390, 9190156, 4077535, +-5151277, -8440684, 1900523, -6328635, 5183489, -1298154, 6761353, -5057861, -848256, -4051228, +2313377, 1504849, 1913408, -511101, -750009, -7375533, -3262028, 6054294, -4860293, -988379, +3908957, 178241, -3813394, 1223529, 307627, -858993, -3311957, 6613176, 2078227, -9447317, +-4292283, -7630010, -1369021, -6749541, -11649025, -2661269, 5030481, 14289356, 3090766, 1163399, +6703370, -197032, -5316633, -4633733, 3725347, 1446867, 2501819, 4107599, -10161893, -2510945, +-9350681, -2068564, 2570538, -3713536, -8647380, 846645, 3684545, -1866700, -3241090, -1542430, +1455457, -1305670, -402116, 1858647, -1222455, -1301375, -1777580, -1292248, -3984119, 1383516, +-1069984, 1787243, -710280, 1034013, 2447058, 321586, -715649, -261456, -2146410, -1423782, +-3374234, -3056943, 417686, 333397, -44560, 1156420, 1904818, 1332514, -44560, 1210107, +1004486, -942208, 718870, 761283, -1782411, -753230, 16357920, 4006668, 11818139, -5493263, +-867583, -3882651, -1009854, 12744242, -10887742, 3712462, 1132261, 16661252, 8731132, 11086384, +1915555, -2647311, 5096516, -3530463, -13835163, 2700461, 686658, 1698123, 10733660, 1115618, +-6458557, -475668, 188979, 3519726, 3652333, -241055, -1514513, 4504347, -5273146, -1343251, +-2718178, -1245541, 1239635, 280247, 9442486, 1455457, 7393250, 8716099, 2292439, 7696582, +-662499, 2600603, 4531728, -4919348, -7562901, 1014686, 7419556, -11933030, 3476776, -9139690, +-8710194, -5206037, -2486249, -8033737, -7953206, -8239895, -4362613, -1995012, 5482526, 208843, +6587943, 1085553, -5607617, 8505646, -8868034, -3254512, -3729642, -3530463, -4748087, -6051072, +8652748, 6879464, -3926137, 3413962, 2654827, 6987375, -73014, 5065914, -2556043, 6349573, +3073586, -3639448, 115427, -3282429, 3901441, -3754875, 325881, 3157875, 137439, 2431488, +-771484, 446140, 1547799, -486942, -1777043, 1624571, -547071, 335007, -3326989, -2616709, +-2673617, -1953673, -433792, -1064078, -2326799, -40265, 375273, -988379, 171262, -14496, +-1392106, 348429, -8904004, -8906688, -5283347, -5457293, -2950643, -2230699, -10675678, -8531953, +-7262253, -1078037, -650151, -1309428, 7362648, 775242, 3788161, 5702106, 6606197, 1075889, +12940200, 16269336, -365072, 4734665, 3634616, -1939715, 7072201, 3882651, -14623827, -455267, +-5079873, 877247, 11254425, 4523138, -11700565, -3068217, 5160940, 5184026, 681289, 14971719, +-6222334, 6055904, 6063420, 6686727, 3860639, 7783555, -13182328, 4848481, -5165772, 7842611, +256624, 3396246, -9906342, 7278896, 5215164, -1243393, 5048197, -821949, 1382980, -66035, +-5185100, 1369558, -3328600, 3253438, -4098473, 5084168, 1552631, 12687333, 9426916, -2954401, +3343632, -10409390, 9050570, -2827162, 5535676, 9843528, 9607305, 477278, 9813463, 6828461, +4620848, 5020817, 9013526, 918049, 1916092, -7373385, -1321776, -2103997, 1658394, -5314485, +759136, -3868692, 1170916, -3854196, 1145146, -1407676, -2462090, -2269353, 1558536, 180389, +-1262184, -901406, -3183645, -1005022, 513249, -903554, -2308545, 347892, 2306398, -5385352, +-3381750, -2967823, 2133525, -3299072, 1990181, 32749, 1123671, -2731599, -4085051, -900869, +747324, 8596377, -7664906, -1971927, 6791954, -3610457, 11656541, -3705483, -8295193, 15561740, +21082920, 4718559, -8373039, 5857262, -4433480, 8698919, 5009543, -1868311, -8879308, -5760625, +-15072651, 3959423, 6370510, -13240310, -1619203, 7732015, 1970853, -621160, 274341, -1603633, +-7223062, 1767916, 8865349, 386010, 1883880, 3245385, 12574054, -8289824, -268972, 9188546, +-8421357, 12334072, 606127, 17325362, -14431090, -12952548, 7107097, 664646, -1758789, 3743601, +-1220845, 4842039, 2928631, 9647570, 9139690, -7551090, 1358820, -4925254, -3015604, 5785858, +-742493, -2935610, -1307281, 302258, 8583492, -16413754, 12506408, -3896072, -5622112, 9328132, +-7529078, 7485591, -10121627, -5640366, -1896228, -7467338, -2615635, -5262409, -8419747, -5622112, +1813013, -1878511, -2039573, -86436, -3932580, -1213328, -602369, 5243618, -288837, 793495, +2076080, -2155537, -877247, -1818382, 1243393, 2587181, 676994, -1007707, 6098317, 76773, +4519380, -4887136, -3205656, -2883534, -2127083, 2379949, 1115081, 213675, 3538516, -2602213, +2696703, 1124208, 2506650, 1481764, 335544, -3075197, -10413685, -8028905, -3461207, -7532836, +-11357504, -2441689, 4192962, 13958107, 2319282, -8495982, -15612743, -3311957, 4900558, -2782602, +16855600, 5245766, -5903970, -11934104, -14817637, -28192702, -2255932, -3149822, 10827076, 7934952, +-5723044, 688805, -4418448, -2479270, 10164040, -310311, 581431, -1276679, 11525545, 1901597, +-3402151, -613643, -381178, 3063922, -10405095, -3335042, -4065724, 16488916, 3899294, -17431124, +4529043, -9067213, -5034776, 2517388, -16137803, 4992363, 11710228, 10302553, 8113193, 1926830, +3303904, -566399, 1763621, -10247792, 3752728, -16019691, -3020973, 9108015, 3390340, 9331890, +9292162, 7602629, -5186710, -11834782, -10268730, -8018704, 2637110, 3150896, 5504538, 5385889, +1222992, 3586298, 11579769, 16111496, -3830037, 5717675, -3975529, -4382478, 4982162, -7125888, +-2464774, 255014, -4452808, 4167729, -3863860, -3435437, -1833951, 975494, -986769, 2254858, +78383, 3279208, -746251, -2043868, -892279, -2001455, -5068062, 1333051, 2778844, -279173, +1838783, -525597, 2502355, 4671851, 4544613, 3477850, -3577171, -1862942, 3503620, -1087164, +-1352915, 296353, -548145, 3456912, -753230, -229781, -503048, 8207146, 14605573, 16855062, +12236362, 20843476, -9737228, 14806900, -12678743, -9988483, 11016054, 14021994, 16616155, -17139604, +-69793, 4293357, -12651363, 5987185, -5545340, -9002788, 10274099, -13346074, 14492830, -13717589, +13579076, -9849434, -3593277, -914828, -17889076, -2501282, 19790136, -5065377, -14089640, 3010235, +9206262, -10307385, 5134097, 21356188, 11521250, 4318053, 9484898, -11308112, 7580081, -6794639, +-19430968, -5909338, -5058398, 1440425, 8858370, 10901701, -4798016, -8536248, 7802882, 53150, +5979668, 3713536, -3139621, 1064078, -7710540, 1178432, 2493766, -103079, 2572149, 17577690, +-2146410, 1739999, 5058935, 1050120, 2194192, -8938364, -9750113, 6799470, -11612518, -15819975, +-16563005, 12911209, 8393977, 2489471, -860604, -1917166, 6203007, -973347, -4616553, 5919002, +16297253, 10992432, -4255776, -2759517, 5078799, 2914672, -1095754, -2572149, 1884417, 2296734, +-635118, 670552, 8873939, 2117419, 1312113, 3463891, -2820183, 650151, 2861522, 5890011, +-512712, 428960, -5696737, 1872069, -2937758, -2178622, 6067715, 4833986, 372588, 3791383, +-3202435, -1564979, 1867237, 45634, -1668058, -3302830, -3515431, 2303176, 1096290, -1542967, +2126009, -13518410, -21475374, 7644505, 27878096, 13653164, -5236639, -21563420, -7502771, 1376000, +2998424, -4190814, 10574209, 7141994, -7849053, -4055523, -1066763, -14272176, 19808390, -9035001, +7044283, -1660542, -4693326, -17391396, 5676336, 3604015, -2188823, 2093797, 7765301, -2849174, +19364934, -4351339, -2981244, 16159814, -1829119, -11621108, -10405095, -20068234, 2733210, -4467303, +-6254546, -4388920, -14737107, -6179921, -13802951, 1451699, -12152073, 10939282, -6878927, -247497, +3383897, 1337882, 6305549, -5848672, -14913200, 6455873, -1739462, 3678640, -3353833, -1529545, +417149, 14313515, 21435644, 5802501, -6760279, 7388418, 7767449, 8496519, -3528316, -7203197, +10921028, 5152350, 14602352, 3373160, 3885335, 386547, 4377109, 13138842, 17960480, 8818642, +3017752, 6726993, 2825552, -3786551, -12334072, -7840463, 1384053, 5939403, 924492, -339302, +-4629438, -1739999, 2511482, 1686312, -9751723, -1876364, 2182917, -437550, -4863514, -4083440, +-5434744, 998580, -970126, 3666828, 6884296, 4028679, 213675, -2326262, 4207994, 5046587, +328028, 1664837, -6808060, -282931, -2312303, -7001334, 1458678, 1234803, -6232535, -676994, +-1464584, 2310693, -2423972, 5819144, 27917, -1424319, 7854959, 41753524, 924492, -11023034, +34548716, 17670032, 15231565, 30259656, 29904246, 8709120, 9466645, 7661148, 32508070, 1792612, +-11556683, 14183593, 2944737, -12614856, -14381161, 12640089, 12089259, 23517094, -2351495, 1800665, +258235, 3306051, -13966697, 15752329, 10835129, 4902169, -10861972, 16664473, -5080410, -787590, +-22064858, -4716948, -1723356, -1312113, -11666742, 7685307, -10856604, -6095096, -6386080, 3220689, +-7541963, -10056129, -14111652, 14921790, -10757282, 15863999, 6914361, 13041668, 3935801, -13117367, +-737661, -21135534, -9901510, -11489574, 4352950, -14659260, -8122857, -2610803, 3221, 15342160, +1472100, -2330557, -24581172, 9752260, 8143795, -519691, -378494, -12320114, 9326521, 1086627, +-10792179, 29006062, 6332393, -3721052, -534723, -11620034, 1745367, 14553497, -4031901, -1157494, +-16294032, -9491878, 5640366, -2215666, -7852811, 9431748, 5537287, -9549860, 8320963, -3286187, +2488397, -3177739, 8134668, 1832340, -1537061, 261456, 1797981, -11518565, -103616, -4239670, +3190624, 3983045, 5410048, -4717485, 3879966, 3123515, 2232846, 4262218, 4749697, -341987, +3599720, -5538361, 9506910, -4400194, 8000987, -5699422, 3394098, -12678743, -23252416, 7141457, +7002408, -7194070, 15134391, -16734803, 18177912, -13114146, -7638600, 5851356, 4205847, 46917148, +18330920, 7028177, -29279328, -779000, -6950868, -15518254, -4510790, -5672041, -5138929, -1737314, +-24349780, -468688, -9214852, 301721, 11850352, -12915504, 15378130, -5042292, -17027398, -15187541, +12182138, 9347996, -3811247, -8385387, 15538118, -8386461, -7925289, 12217034, -354335, 3759707, +-12592307, -424128, -7406134, 15669651, -2368675, 22478248, -8414378, 3378529, 6766184, -642098, +852014, 6857989, -14500883, -2323577, 18462454, 1498944, 5061619, -171262, -14987825, 6403260, +-10465762, 5325223, 16137803, 20950314, 22836342, 24054502, -5201206, 8442832, -205085, 12908524, +29139742, -32017370, 24879672, -14802068, 6677064, 20012400, -12641162, 1289027, 6269579, 5457830, +-1509144, 13929116, -5412733, -4404489, 5874979, -3340411, 13402982, -1990181, 5070209, -10815801, +-1774895, -323196, -8730058, -3665218, -11008538, 114890, 3160022, 1068373, 12184822, -4028679, +804770, 1316408, 5168457, 1275605, 5213017, -7233799, 5423470, 1671816, -326954, 3877819, +5316096, -6082748, 5522254, -11696270, -10357314, 7212861, -3487514, -8297877, -1215476, 3395172, +-5355288, 9415642, -11256036, -24722368, -4832375, 5019743, 322123, 5819144, -18398030, -2472828, +-3786014, -26129508, -20268488, 10424959, 10835129, 5050345, 7463043, -13359496, -6593312, -9458592, +28570122, 6903623, 763430, 21461952, 12298639, 10814728, 9666361, 8469676, -15126875, 10907606, +4371740, -4587025, 8497593, -7557532, -7555921, 14997489, -6529424, 9476308, 19683298, 757525, +3738232, -278099, 1238024, -4218195, -11613592, -14539001, -23801098, 9817758, -20168092, 7640747, +7787313, 10214506, 23085, 706522, -2864206, -15391015, -7396471, 7963406, -5416491, 8216810, +19689204, -5964636, 15050639, 7023882, 1629403, -752156, -5432060, -14230300, -652298, -19266150, +-6779606, 20881058, -11143293, 3414499, -34302832, 16380468, -6392522, 5362804, -26480084, -23386096, +2174864, 6436546, 12046310, -27154394, -2936684, 478352, 18549964, 15372225, 17164836, -5348845, +317828, 2756832, 8953933, 2289755, 4903242, 14374719, 8031052, -5272609, 5114769, 1541893, +970663, -151934, -3069828, -11585137, 4079145, -5524939, 1709397, 4821101, -197032, 1216013, +-206158, 4839355, -2946348, 19360102, 5162014, -576063, 10650982, 6664716, 841277, 3398393, +-377420, -8373039, 11195369, -3492345, 1460289, 13643500, 7417409, -3997541, -2684, -5157182, +8799851, 6343130, 7504919, 6675453, 20433844, -48400524, -11907797, -28752122, 9699647, -25822954, +-8657580, -29264834, 7824894, -15265924, -11705933, -2510409, -24850680, -9047885, -26626112, -13458280, +-30828738, 6635188, -28522878, -11290932, -14820858, -8318278, -7836168, -6676527, -27227946, -15583215, +-20715164, -10644540, -5985037, 11740830, -1705102, 8759586, -16946868, -2775086, 975494, -19541028, +3773666, -1385664, 1654099, 5096516, -19764366, -1134408, 7289097, -2462090, 8216810, 16393353, +29733522, -24717536, 1518808, 33031520, 160524, 16204912, -11584064, 20462298, 3743601, -4909148, +-27478664, -16199543, 22818624, 14068165, 22282290, 797253, -15542950, 5659693, 8051990, 15916612, +-29880624, 196495, 5661304, -16512539, -5496485, -7148436, -10002979, -23964844, 37035504, -6822019, +-11898133, -7617662, 7679402, 8875550, -20929912, -19472844, -771484, 6180995, 971736, 48318, +-4081830, -7085623, -89657, 18644990, 11563126, -136365, -15367393, -10649908, 1727114, -5942624, +4072166, 4912906, 2512556, -1633161, -7926899, 3229279, 3930432, -2205466, 5950141, -3473018, +-13646185, -6495065, -779000, 3951907, -1013612, -4401805, -19968376, -7995619, -4572530, 1497870, +2506114, -8642548, -15467788, 6047314, 9290551, -8218420, 372052, -7226820, 7824357, -2532420, +-13719199, 20590074, -34749508, -365609, -6883759, 15025943, -7646116, -21415780, 18715856, -37593848, +-32413582, -26754426, 15353434, -7954280, 871878, -14585172, -13802414, -16129750, 9084393, 7867307, +26230976, 12353400, 5324149, 24424942, -6468758, 8869644, -8777839, 7652558, 4440996, 14565308, +23536958, 12304544, -4861366, -14352170, -8548059, -2908767, 13234942, -4325569, 3716221, 530965, +-6033892, 12520903, -756451, 10286984, 7646116, -19981262, 16547972, 30373472, 4763656, 25415468, +24601572, 11182484, 8172249, 102005, 13019120, -8036958, -29461328, -9558450, 21953188, 264141, +-10806138, 11337103, 31161062, -7051800, 2426657, -22462678, 22228066, 19946902, -1400159, 6461242, +-10116259, 51125144, -31996432, -27755690, -26209502, 2295660, 981937, -7656316, 22814866, -31894428, +-496069, -20355998, 7864085, 9140764, -1386201, 22272626, 5167920, -1787243, -11958263, -52076, +5657546, 16263967, -11023034, -14159433, 6007049, -8392366, -2177549, 2087891, 3938485, 1436130, +154082, -949725, -13351443, 1398012, 3282966, 9342091, -7873749, -4373351, 5264556, 2581275, +3683471, 455803, -8699456, -858457, -9883793, -7444789, 10085120, 5217312, 5710696, 4057134, +-269509, 2084133, -2641405, 6208375, 906238, -2583423, -514859, -8602283, -3212099, -5665599, +3605625, 56146496, -12625056, 31411244, 53327388, -17985712, 25399362, 11656004, -34111704, 31150860, +4365298, -14500346, 22434762, 9965935, 21057688, 82678, -18367964, 17329120, 5544266, 350040, +5047661, -4907000, -19415936, -11125039, -9469329, -16264504, -12593381, -2874944, 12362526, -11120744, +-7166153, -16020228, 3109020, 1644436, 2267206, 22584012, -13710072, 5632313, -12745315, -6760816, +12476880, -9992241, -23264764, -29204168, 33566244, 15311558, -8761733, 23624468, -21853868, -18596134, +-11800960, -1647120, 3084860, 398358, -20370494, -14485851, -16006806, -34186864, -21858162, -18311594, +6294812, 11781095, -1302449, 20218022, 3444564, -20365124, -18120468, 27194660, -23479512, 3471944, +23272818, -2894271, -41038412, 28625420, -15358266, 4714801, 1478006, 23708756, -6008123, -8886287, +-1547799, -13346611, 6708739, -23123568, 7558606, -29774860, -19503446, 11691975, -13033078, -3546032, +-1990181, -17641578, 5471789, -10264435, 8157217, -2611877, -670552, 1002338, 10723996, -7900056, +-6704981, 2035815, -11565810, -4872641, 1366337, -7247758, -8202851, -5325760, -3684545, -8471823, +-5118528, 12148315, -10158671, 4735739, 6947647, -1694365, 7453379, -10319196, 812286, -7234336, +14847165, 2913062, 5126581, -10562398, 12998719, 9233106, 9871445, 4376572, 971736, 3330747, +7089381, -7229504, 462783, -6010270, -27130772, 16314970, -7689065, 27520540, 18867254, -43670692, +-5509370, 4770098, -26657788, -4217121, -4362076, 32467268, 23342074, 21734682, 26920318, -872952, +-18862960, -14475114, -15014132, 844498, -41787348, 5149129, 35786204, -32488744, -58886148, 6129992, +-22035330, 43576200, -289910, 1557999, 29127394, -13215614, 5984500, -1218160, -7913477, 25426744, +-7298760, 12927315, 42526620, -31168040, -17861158, -28397250, 14199699, 2493229, 28470802, -16203301, +11216844, 1640678, 25930866, 15396384, -12681965, -8321499, 9810242, -4573604, -1155883, -18204218, +-18068928, 9596031, -4034048, -5216775, -10275172, 23589572, -8908299, -9327595, 39385388, 42210940, +27274652, -35679904, -3176128, -11144903, 13903346, 52536040, -6633040, -39860516, -2617246, -16363289, +23542326, 10631118, -26780194, 14205067, 10404021, 13858786, -25838524, -9215389, 1923072, 22985592, +1417339, -3588445, 3760781, -7751879, 1811403, 22969486, 11118597, -9435506, -11438572, -2512019, +7219303, 9240085, 12096239, -11334419, -4328254, -20850456, -4380867, 13345537, -13136694, -1977833, +-8109435, -7439420, -12338367, -2498597, 8424041, -1793686, -881005, 2195802, 5374615, -5466957, +-15742666, -16254841, 9879499, 7677791, 13798656, -6793565, 10131291, 29702920, 1570347, -17627620, +-2833605, 1699733, -1573032, -10991895, -4508642, 3362960, 8637716, -1745904, -25593710, 3745212, +-20978768, 19320910, 11311333, -20750598, 35316980, 53223772, 1644973, -2583960, -18114562, -18559090, +3244311, 2984466, -8855686, 48147120, -4208531, 35892504, 28975996, -36424008, -1000191, -12262132, +-38730404, 9731859, 9159018, 21166136, 36531380, -1169842, -10241350, 11902965, 13345537, 28579786, +12150462, 2569464, 23732916, 24759412, 8697846, -5761162, 21783000, 9586904, 26146688, 5515812, +7659001, 16210280, 27688580, -4635344, -21644488, -25259240, -8056285, -8807367, 43465068, 23686744, +66998804, -3149822, -33499672, 29620778, -9991168, -11569031, -9909563, -22759568, 3549254, 12744242, +-296890, -12756053, 47674136, -9496710, 56225952, -15357192, 30354682, 2626373, -9249749, -30579630, +-43438764, 40928892, -3741990, -6990596, -12320651, 38045356, 209917, -39908836, 73418168, 23024246, +8203925, -8383240, -30487288, 15413564, 1064078, 15518791, -14041859, 11082089, 5806259, -6869800, +-10308995, 1935957, -12509092, -5940477, -14241038, 1744831, -2298881, -136902, 5051419, 12015171, +-11915313, 4743255, -5690295, -295279, 16317118, 10782515, -5494874, -20033874, -389768, -1115618, +2930778, 18445810, -11654931, -6956774, 4871567, 11612518, -16460462, 1205812, 11288248, -162135, +-1020592, -17368848, 9325448, -455267, 8520678, -18144626, 2344515, 7844221, 6395743, 9140227, +-17220672, 14839112, -18262738, 11761768, 49823232, -29701846, -18738942, 3798362, 9163313, -5839545, +35314296, 27115202, 27821724, 9104794, 13835700, 23009214, 14544370, -8632884, -13648332, -31413928, +-4858682, 16925930, 6054830, 3489124, -11434814, -29721174, -8429947, -4351339, 30272540, 205622, +-3413425, 22612466, -3444564, 6106370, 5048734, -51025284, 13212930, 13524852, -8701067, -21929566, +4309463, -28862180, -14412837, -44098576, 13450227, -36851356, -72482408, 8237748, -820876, 50969452, +-1585380, 17184164, 42418708, -7118909, -10780905, 18575734, -202937, -37058588, -12712029, 4650913, +6308233, 27004070, 11489574, 24026584, 21150030, -15280957, -11125039, 10128607, 31042950, -13049184, +-6311992, -28541668, -19413252, 7337415, -38112468, 10910828, -42829412, 7982734, -11178189, 30330522, +-13170517, 21446382, -45916960, -9570261, 6446746, -27599996, 7078643, 4678293, 4886062, -20859582, +11006391, -20427938, 5921686, -1724429, -8484171, -3874597, -1890859, 6306086, -6922414, -3397319, +-5527623, 13016972, -8446590, 7541426, -19325206, 10089415, -1000727, -1717987, 2914672, 18697066, +6675990, 7908646, -22431540, 2794950, -9130564, -27991376, 11301670, -9058086, -6976638, -10421201, +10487236, -5143224, 5110474, 5720897, -2592013, 1108638, -6732361, 1850057, 5794985, -1439888, +964220, -845035, -10672994, 39035884, 41475964, 97137664, 11383811, -54258320, -40846748, -29954712, +-34712464, 68021544, 90636160, 30826590, -8702141, -28438052, 960462, -34431144, 37940132, 35999880, +10612864, 5289252, -22541598, -3168612, 41758892, 9838159, 16755204, 14244259, 43823700, 36998996, +-14261976, -32519344, -43154756, -28964722, -4356708, 12117713, 39400420, 23753316, -8260833, 21475374, +-29958470, -10083509, -67331128, -10523744, 66218196, 51307680, -10334228, 134342816, 42083700, 4050154, +-73618424, -12426951, -6335614, -17147120, 18778134, 10555956, 15909096, 28294170, -60071560, -64566780, +-32520418, -43515536, -6243809, 14910516, 54322208, -32366874, 19867444, 84825064, 42330124, 14881525, +23735600, 17421998, -51163796, -84526568, 43301860, -20802138, 18643916, 45486924, 50162532, 4575214, +-30338038, -39827232, -32590748, 35201552, 20269562, 6260989, 34992708, -34722664, -6054830, -5431523, +-15431817, -17894444, -1533303, -360240, 11359115, 3684008, -4997195, 258235, -430570, 743566, +3006477, 6647536, 10118943, -9945534, -13794361, -47216188, -25915832, -23255638, 27986006, 16722455, +10014790, -38626252, -37971804, -61038464, -16681653, 24223078, 30775588, 40193376, 15720654, 11870753, +4691178, 4038343, -1125818, 9148817, -2125472, 28835874, 20327544, 4234838, 251256, 362388, +-4901632, 95026, -3437585, -20665772, -88855360, -21197812, 49562312, 94849520, 83600464, 200366672, +104897600, 71143448, 62631896, 28474022, -11193222, -101255464, -127066608, -189608304, -145167216, -148958592, +-56646860, 721555, 57047368, 106081400, 87547536, 90435904, 62362388, 85089744, 66643396, 94214400, +44893684, 35119412, 16821240, -24260660, -37267432, -57130580, -34507916, -124069256, -52380348, -117431920, +-84691384, -134404016, -79864920, -125110784, -44407816, -62033824, -20174536, 9552544, 63513440, 166483664, +158586832, 222144304, 150401168, 102548784, 133221296, 181897776, 160131952, 134443216, 93853088, 11283953, +-90948616, -90345176, -111925240, -213090512, -235185424, -256234528, -255807712, -280960640, -242934624, -204712096, +-180480976, -117586008, 13536663, 133675488, 232635824, 307434304, 383318304, 426441920, 297354016, 283510240, +184050080, 111439368, 105385616, -6365142, -34787624, -163440688, -313117088, -337312768, -273761760, -211687120, +-124660352, -100955352, -102715752, -56740812, -88209504, -35779760, -9798431, 67680096, 128664872, 105603584, +137536656, 147721104, 157682752, 139170368, 185894240, 138049920, 113196544, 58380416, 12022150, -31498216, +-144003808, -127659312, -170960640, -226791984, -205370304, -235537088, -241945712, -70679056, 7909719, 122815664, +150490288, 160145376, 186028992, 194166352, 164831712, 143226960, 109942032, 83212304, 30141544, -21665426, +-64131916, -115826144, -169924480, -159350272, -142110272, -106482976, -50061600, -22230750, -10474351, -6448357, +15658914, 32527934, 39698384, 42518564, 35276712, 28041304, 30631170, 24751360, 18669686, 33991980, +38386808, 29316374, 14464376, 7485591, 12199318, 15668041, 6249178, 3095061, 6237903, 836445, +-11827266, -35400196, -42541116, -28210956, -21598854, -24828670, -23589572, -14520748, -20495584, -23381266, +-20064476, -8260833, 1870995, 10173167, 14108431, 18976776, 21678310, 20010790, 17019882, 19320374, +19576998, 17012902, 11996381, 8338142, 2926483, -1067299, -2303176, -3824132, -7774428, -4822175, +-2280628, -4078072, -5760625, -3799436, -747861, 3356517, 2638721, -446677, -3553012, -2975339, +-5353677, -9904195, -12313671, -11530913, -10953240, -9507984, -10278394, -8945343, -3889093, 282394, +1404991, 7608535, 16209207, 19364396, 16056198, 14565308, 14669461, 12628278, 7373385, 3803731, +2605435, -46171, -4412005, -6541235, -7711614, -7814156, -7621420, -7081328, -5683853, -4032438, +-3651259, -3367254, -2847027, -1453846, -804770, -248571, -53150, 542240, 504122, 650688, +344134, 396211, 47245, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 12934294, -573915, 2186138, 1808181, -5255966, -2726231, 7173133, 12464532, 2024003, 6643241, -2678986, -1261647, -326954, 5629092, -4437238, -10154376, 4129074, 4765803, -5904507, 6880001, 3404299, -6278169, 2005213, 1502702, -2713883, -863288, 351650, 4191888, 402653, -6275484, 303332, --493384, 1388348, -859530, 1149441, 1527398, 3778498, 2739652, 925565, 1192927, 403190, -1860258, -1905355, -3115999, -6935836, 1369021, 1565516, 587874, 5372467, -1866163, 4183298, -1171989, -1620813, -3264712, -2094870, 7504919, 1637456, 4201552, 732292, 1675037, -1398549, -286152, 538482, 2180770, -607738, -2754148, -1468879, -5766531, 683974, 1167157, 5000416, --1558536, 3832185, -624918, 2523293, 80531, 2277407, 1773285, 1084479, -890669, 2613488, -3586835, 2520072, 2357400, -37581, 542240, 622770, -1917166, 867047, 484258, 1768453, -932545, 754841, 962073, 1278290, -650151, 790811, -484794, -24159, -203474, 4871567, -4546760, 2192044, 1811939, 2607045, 2979097, 4603668, -2053531, 4774930, -27917, 5095979, --1180042, 9010841, 2954938, 3030100, -6167573, -775242, -1460826, -7841537, 4248260, 3725347, --2581275, -10297184, -4804458, -1481764, 4975720, 7031399, 4306242, -2704756, 1404991, -4372814, -132070, 461172, -3701188, -1727651, -9464497, 849330, -1257352, -3854733, 328565, 615791, --1352378, -223338, 8902393, -2085207, 7236483, 1498407, -5735929, 493921, 468688, 4188667, --1928440, 1241782, 893890, 389768, 5521181, 2018635, 5670431, 4304094, -3033321, 5318244, -2471754, 3903052, 278636, 1324461, -1425392, -2421825, -4818417, -5759015, 5992553, -5986648, --4757750, -4939750, 2726231, 2610266, 1034013, 1172526, 3477313, -2223183, 2596845, -1661079, --2509335, 3958349, -3661460, 673773, 1736777, -2943663, 646929, 507343, -552440, -402653, --348429, 2109366, -752156, 829466, -987843, 1635846, -520765, 945430, -1167694, -1118302, --1125818, -8057359, -7562364, 1656784, 112206, -1597191, 4471598, -560493, -824097, 4712653, --5193153, 1040456, -4539244, -2883534, -1665374, 78920, 7605850, 8715562, -4078608, 3431142, --6301791, -571768, -2495376, 8465917, -2542084, -452582, 836445, -11860015, -2115808, -5845451, --1983738, -1433982, 4377109, 5903970, 2358474, 7971460, -1069984, -3598646, -3725884, 4611721, -11876121, 8360154, -4706748, -5421323, 5913096, -5334887, 964220, 1922535, 9718974, -3579855, --4872641, 1082332, -3044058, 1886028, 2434173, 6229850, -6861747, -4398584, 3933116, 7521025, --747861, -3470871, -4480725, -10601053, 3971234, -6979, 3106872, 507343, 219043, -1658931, -1890859, -2700998, 1624035, 2301566, 2254858, -3760244, 2709051, -683974, -2704219, 259846, --5633924, 3498788, 466004, 446677, -2276333, -757525, -1936493, -3884261, -3013993, 2068564, -130460, 837519, -788663, 272730, -284005, -1112933, -942208, -1626182, 104153, -934692, --762357, -231928, 299037, -292058, 465467, -305480, 1885491, 748935, -1203128, 1320703, -732292, -1536525, 1013612, -19744502, -6420439, -1104880, 3418794, 2192044, 4958003, -9465034, --2754685, -492848, -9687836, -7031399, 2507724, 5828808, 3519189, 6439230, -773094, 3669513, -8722005, 7577933, 7242926, 4074313, -2712272, -2272038, -4394826, -2040110, -4415764, 9179419, -4356708, -1488206, -4043175, -2567317, -4129611, -6162741, -6520297, -8328479, 5034776, 3500398, --9115531, 2094333, -431644, 6262063, 1012539, 3048890, 4145717, -8731669, -1309428, -385473, -1185411, 4481262, 6940667, -2831457, -965294, -2093260, -5421860, 1612223, 1122597, -639413, --1457068, 5172215, 316754, -2956011, -949188, 2420214, 3377455, -1412507, -120796, 815507, --4714264, 3460670, -337692, -7187091, 848793, -8759049, 1410897, 6410239, -2130841, -318364, --9743670, -4827007, -7232725, -4463008, -575526, -806917, 4537096, 824097, 5322002, -3230889, -1810329, 2821794, 984084, 2776696, 352187, -1951526, 1120450, -898185, 932545, 37581, -399969, -402116, -1320703, -538482, 1214402, -1334124, 908922, 2199560, 1163399, 540092, -74625, 37044, -457951, -906238, -1433982, 1043140, 1444720, -882079, 952946, -928787, --671089, 10902238, 3976603, 1923609, -2797098, 8056285, 2988224, 4594542, 12513924, 13753022, -424128, -2123861, -4941360, -7330436, 2627446, 5490042, -2892661, -462246, 671089, -1209033, --4461934, 5211406, -5111011, 2452963, -14558865, -1998234, -3622268, -3423626, -7247221, -1402844, --1029182, 197032, -3767223, -5143760, -4227322, 657667, -2837363, -5464272, 3209951, 4850629, -280784, -4469451, -5218922, 1958505, -4045322, 4576288, -5735392, 3704946, 1198296, 9664, --8127152, -7340636, 1604170, -5298379, 8607114, 1635309, 7202660, -3718368, 7248831, 1510755, -4622459, 1687922, 4371740, -4066797, -6046777, -48855, 9349607, -855235, -6513318, -3315178, -3999688, -2581275, -3781719, 1029182, -10313290, 6942278, 8143258, -449361, -7202660, -8847633, --415538, 7562364, 5272073, -4182761, 5607617, 661962, -986769, -1059783, -746251, -421444, -1430761, -2455111, -2331630, 251792, 701153, -1832340, 529355, -829466, -427886, 2046015, --964757, -378494, 154619, -3089155, 1494649, 467615, 115964, 777389, 821413, -86436, -91268, -568009, -787590, -425202, -542777, -820339, 15410343, 3307125, 8416525, -3224447, -6278706, 4887673, 9838159, -7234873, -5367099, -1551557, 470836, 7208566, -3428458, 10874320, --902480, 6240051, 5167383, -2865817, 2065879, 6321118, 5616744, 1602560, 1479079, 5771363, --11744588, 2042257, 8905078, 7176891, -6395207, 7997229, -9383967, 5777268, -8289287, -3994320, --2255395, 8665097, -1849520, 9066676, 1874216, 2060511, 330176, -165356, 3421478, 5377836, -11520176, 1964411, 9926206, -4804458, 7224672, 9800042, -419833, -1598265, -3602404, 3872987, --13925358, -1010928, 1245004, -5035313, -8310762, -324270, -637266, -970663, 3500935, -8300025, -4151623, 3858491, 5246840, -13165685, 4464619, 3337190, -7980049, -785442, 4220342, 9930501, --12520367, -1397475, 837519, -11584601, -1146219, 1863479, -3367791, 7847442, -1835562, 811749, -2056753, -1207423, -496069, -383863, 1267015, -2892124, 347892, -1431298, 827855, 420907, --1831267, -44560, 2029909, -800475, -528818, 199179, -2579665, -795106, 384936, -804233, --1228361, -207232, 377957, -1225139, -675384, 1882806, 2240899, -2854006, -171799, 642635, --68183, -341987, -13764296, -16957068, -13506062, -12271795, -380105, 8580271, -17816062, 12673912, -8256001, -20086488, 12663174, 5322002, 4354560, 1956358, 1975685, 4508105, -3117610, -3301219, --6556805, -223875, 7726646, 6476811, 3823595, -11445551, 7837242, -8187819, 256624, -7202660, -8990977, -4771172, -3670587, 2804077, -13394929, 1317481, -4414690, -4038343, -1398012, 938450, -13242995, -6251862, -1988033, -5049808, 10080288, -6131603, -3258270, 3073586, 3055869, 2811056, -3590056, -4190814, 4880694, 1213865, -10980621, 15122580, 6060199, 2425046, 1614908, -98784, --7021198, 8645769, 7298223, 3012920, 9753334, 1013075, 4312684, 9746355, 5009543, 2079301, --6699075, 8026757, -3500398, 15354508, -1644436, 386547, -4165582, -16153909, 2137283, -3934190, --1890859, 8256001, -676994, -8773008, -4959077, 7093139, 5978595, 906775, 6922951, 1796370, --5046587, 2384244, -466004, -1718524, -1388885, 539018, 4103841, -1952600, 522912, 703301, -2315524, 850404, -1839857, 2964064, 451508, 774705, -161598, 751619, 384400, -1188632, -1723356, -1200980, 1421097, 1081258, -857920, 3343095, -445066, 809601, -1132261, -781684, -9854802, 6717329, -1141924, -6180458, 16196859, 25755308, -3401077, -3573413, 12453795, 3032784, -4108673, 3307662, -18547280, 2047089, -11992622, 9599789, 13684303, -3585761, -6606734, 2241973, -8668855, -5195300, 10471130, -4101694, 20207284, -5900748, 3912715, -983011, 5486821, 14401562, --5430450, 1426466, -1266479, 4172561, -5333276, -2567317, 8198019, 17667348, 1480690, 12937515, --4780836, 1793686, -2425583, 4321811, 9454834, 14103062, 10991358, 10449119, 10857140, 6877317, --1975685, 1688996, -1487669, 288300, 2161979, -7033009, -2024003, 11369852, -9966472, 3992172, --4378719, -2609730, -5177046, -20533164, 2305861, 11165841, 7061463, -2513093, -9739375, -23666880, --3808026, 9665287, -1984275, 3830037, -7374996, 5537824, -6800007, 6284611, 13443248, -5867999, --7252589, -13373991, 4056060, 1686848, 2213519, -10565620, 778463, 98247, -3195456, 645319, -5014911, 256624, 3452617, 1562294, 2241973, 2760590, -454193, 4321274, 1039382, 475668, --872415, -1349157, -1163399, 4123706, 1393717, -97711, 2757906, 1483911, 1996086, -335007, -2286533, 2809446, 3762391, -1517734, 419833, -1475858, -17674328, -14102525, 1854889, 8262980, --7931731, -5248450, 1060857, -4314832, -26476326, -22897544, 9995463, 9153649, 1722819, 1321239, --9674414, 15176804, 18510772, 11363947, -9496173, 8866960, 12164958, -1919850, -15354508, -6972880, -21303574, -6349036, 2168422, 1263794, 11984569, -9617506, -17047262, 3677029, 7885560, -4232691, -5058935, 11036992, -5335960, -4283693, -468151, -23893440, -6875706, 8176544, -4498978, -15977278, -2921115, -456340, -4983236, 3135863, -1473174, -15151034, -12782360, -22661858, -17952964, 3474629, -7960185, 705448, -5353140, -7587060, 216896, -5199058, 4857608, -10906533, 399969, -3885872, --3109020, -3717831, -953483, 4212289, -4913443, -21743808, 3287798, -3160559, 5389647, 5916318, -436476, 4100083, 5058398, 1563905, -1214402, 2610803, -3059627, 1185948, -6742562, -3617973, --3011309, -3753802, 1565516, 5948530, -3106335, 912144, -7669738, 856309, -747324, -5730023, -2511482, -1844152, 1461900, 2306398, 1360968, 1013075, 4869419, 1030255, 650688, 1588601, -31139, 635655, 688805, -1414118, -3651796, -758062, -3698504, 1724966, -2810519, 4134443, -58519, 5936719, 2762201, -3623879, -2361695, -1989644, -209380, 8647380, 27790050, 24688008, -19298898, -2054605, 18871012, 6125160, 26335128, 11160473, -521302, 32126892, -6662568, -1663226, --20424180, -5373004, -390305, -14397804, 8660802, 12914967, -4159139, -151398, -11577084, -19879256, --11714523, -15146202, -4393752, -9133248, -2849711, -1403381, 9162239, 2357400, -1857573, -8159364, --2791729, -5428839, 2956548, 266288, -8086887, 4351876, 5451924, 2193118, -6237367, -8194798, -2804614, 7693360, -1038308, -217970, -14545444, 26248156, 4444755, -4905390, -660888, 2398739, -11259794, 9593883, -9791452, 5633387, -3794604, 1275605, -1605244, -2398739, -14905684, -13265543, --17859548, 2804614, -692564, -3690988, 11307038, -3483755, 31814970, -3032784, -1654099, -7723962, --3435437, 4221416, 5522791, 3941169, -206158, 13771813, 9859634, -1914482, -6549289, 1920387, --3879429, 95026, 1349157, -4285841, -1388885, 234613, -1413044, 2269353, -5346161, 3345780, -6113886, -1724429, 3240016, -1737851, -1423782, -2310156, 1064615, 3485366, -1356136, 4634270, -920734, 1726040, 6284074, 2816962, -755377, 6666863, 3013993, 4668630, 5958194, 4682588, -574452, 131533, 4432406, -3858491, 208306, 2808909, 1530619, 3195456, 2891587, 1675574, -3689377, -16760036, -24307904, -13240847, 17748416, 14292577, -12521440, -12585328, 19045496, 11782169, --12375411, -16461536, -2948495, 2974265, 1612223, 2495376, -9925669, 10280541, -7466801, 19990388, --3332358, -13820131, 2996814, 5217312, -377420, 1657857, -6408091, -8936753, -766652, 8211441, --5211943, 6287296, -10026064, -25928180, -21421150, 13535053, -16747151, 13349295, 3580392, 1684701, --5784784, 7901129, 2208687, -1923072, -4059281, 3776350, 7660074, -7023346, 21783000, -5425081, -7141457, -6510634, 1660542, -1725503, -8932458, 21446382, -16953846, 23318452, -1123671, -11377905, --17804250, 9100499, 2854006, 3052111, 744640, 9566503, 6029597, 8684424, -18319646, -5319854, -198642, 395137, 4268661, -13517873, -6905771, -4365298, -2623688, -16959216, -3773666, -5610301, --19521164, -923418, -11190537, 2908767, -5398774, 1559610, 2205466, 8527121, 4709969, -3122441, --813359, -6978248, 3627100, -408559, 3112241, -8208756, 183610, -3242700, 1737314, -7561290, -1233729, 1818919, 113280, -1625108, 2407329, -4414153, 3158412, -6928856, 2416456, -4947266, -2182917, 1398012, 3169149, -2535105, 8533026, 3528316, -132607, -5237176, -4638565, -769336, -5611912, -1145146, -3138011, -2676838, 3763465, 337692, 3548180, 41249940, 13763760, -9197672, -21196200, 19740206, -10204305, -13003013, 31870804, -2852932, 7012608, -18897856, 46393700, 1622424, --12985297, 6737193, 2325188, 22528178, 395674, 28450938, -20438138, 443455, -22325240, 1727114, -15707769, 736050, -13675176, 19397682, 10373957, 5717675, 4678293, -6769942, -6527277, 1772748, --9674414, 12704513, -11310796, -15086073, 13337484, 5057324, -17498234, 9516574, 1162326, -12722230, --7130183, -4247723, 6703370, -1497333, -7661685, 9356049, -11310796, -4484483, -3875134, 15656230, --10269804, 7568806, 12026982, 5568962, -7103876, -14620069, 9277129, -12501576, 16916802, -21299280, -28106266, -8314520, -3947075, -3991098, 12799539, -920197, 4647155, 7652558, 4610111, 10875394, --10609643, -20207822, 1421634, 17179332, -11458436, -5424544, -11976516, -7185481, 3163244, -1182190, --3442416, 7434052, 5352066, 3932043, -1883343, 11332271, 6941741, -5255966, -2766496, 2239289, -610422, 9598178, 6086506, -772020, -3115462, -2425583, 10480257, 978716, -5362267, 6642704, -1996086, 287226, 5541045, 2522220, -967441, -5633387, 1585380, 6898255, -5100274, -1258962, -7854422, -490163, -1611150, -1956358, 4640712, 916976, 141734, -2064806, -24671902, -3053185, -22560926, -6585796, -14068702, 6243272, -6604586, -1202591, 10230075, -24492052, -14393509, 9487046, -12611635, 17207786, -1213328, -3230352, 6932614, -1641751, -24222004, -16572668, 28501940, -2144263, --24960202, -14474577, -10041097, -8237211, 2325188, 8404714, 461172, -4146791, -12452184, -19035296, -2573759, 2559264, -659814, 15608985, -10627897, -29871498, 12133283, 8821326, -34909496, 20877836, --5639829, -17607218, -14521284, -1285806, 19881940, 4779762, -6573985, -7170448, 5684389, 10473815, --14696841, 11286637, 1822140, 8322573, -6359236, -15267535, 13578539, 73551, 15226733, -47229608, -6015102, 7329899, -6983617, 13166222, 15261629, 44960792, 1279900, -29634200, -13671955, -7716983, --28827820, -28271086, 1474784, -16039555, 212601, -10645613, 10593000, -10833518, -10681047, 18997178, -4657892, -602369, -1041530, 11167989, -2350421, -1069447, 6444062, 5335960, -4093104, 3661460, --10141492, -2186675, 2822867, -1867237, -2949569, -4836133, -5203890, -2616172, -6416681, 2622078, --8154533, 1816771, -1418413, 7693360, -1810329, -3936875, -3401077, -4543539, -4930623, -1263257, --3451006, -5930276, -4437238, 4437775, -5939940, -2997350, -10612864, 3328063, 4243428, 11002632, -2454574, -1345935, 660351, -20680804, 3349538, 12650826, 11389716, -18362596, 32622960, 22632868, --10400263, 13508209, -26326538, -5923297, -8793409, 41566692, 26720066, -9985262, -15843061, -19507742, --4275640, 1032940, 7692824, 27860916, 5985574, 4675609, 6085969, 700617, -9168145, 1052267, --1700807, 12800076, 17416092, 21952652, 14380087, 9269076, -2120103, -4140349, 3548180, 19894826, -3208878, 3473018, -20248624, -10388452, 34331284, 13843753, 10361072, 184147, 20594906, 10899553, -43336756, -2495376, 44681620, 3097745, -13777718, 14370424, -11984032, -9086003, -1505923, -8310762, -568546, 8208756, 17928804, 3029563, -3719442, -19625854, 6392522, 1540283, 12984223, -15410880, -4180077, -6849936, 2406256, -19582904, 10001368, -17241072, -1984812, -23440320, -32027572, -5439576, --4914517, 26377004, 7236483, -903554, 5068062, 8172249, 10424959, 1665374, -278636, 346282, --18502182, 5819144, 387084, 17272748, -6922951, -930397, -4514548, 12250320, 2586644, 11182484, --1074, -13173738, 6518150, -762357, 4470524, -10035191, -4362076, 2305861, 2891050, -7482907, -857383, 6699075, 4372814, -6594923, -7079717, 12664248, -12680354, 5261335, -3801583, -10557030, -3479997, 2306398, 3511136, 4263292, -4626217, -699543, 6295349, 399969, 4438849, -1905355, --4718559, -5093295, -10979547, -16604880, 5011153, -19061602, -107911, 23138062, 7170985, 19724638, --22937272, -10519986, 11118060, 2317135, 32620814, -16612397, 19469086, -7394323, -9995463, -24376086, --9569187, -13107703, 16246788, 3814468, -21824340, 27200564, -14175003, -13107703, 2529736, 10581726, --8069707, 18797462, -9249749, -13112535, -6866042, 6217502, -2428804, -3630858, 1905355, 18722300, --12853763, 34298000, -13474386, -491774, 31673774, -6441377, 5451387, -43455404, 1773285, 7700340, --9956271, 19084150, -34985728, -42661372, 15999827, -7628399, 23384486, -17659832, -16785270, 1819992, --5645198, 36131948, -4594542, -1742683, 7878044, -33727304, 1720134, -34084860, -13818520, 1865090, -7919383, -42536820, -19153944, -5310190, -2285460, 13634911, -18425946, 21625698, -9147207, 2334852, --28111634, -1522029, -24867860, 9197136, 5099200, 18223546, 23134304, -8824010, 15086073, 1955821, --5261335, 7715909, 4651987, -7648263, -7873749, -13599477, -740882, -8143258, -8640400, 2775623, --2238215, 11484743, -15862925, -2852395, -10073846, 3732864, 5415417, -5558225, -995359, -8444443, --8562017, 9169755, 15006079, 17052094, 3256122, 963683, -4904316, 3112241, 2563559, -6654515, --10638634, 3390340, -5740761, -7749195, 11341398, 7944616, 6500970, -10801306, -12592844, -26562226, -21714818, -19069654, -5097590, 16913044, 39598524, -11381126, 32511828, 11286100, 8617852, -15130096, -35989680, 5456219, 16963510, 1428077, -20605642, 7492034, -20691004, -21036750, 13389561, -20954608, --4160750, -4987531, 21472688, 1710471, -6761353, 6750615, 9742060, -4452271, -19598472, -4769561, -15675020, 37051608, 8898635, -21009906, 2642479, -4102231, 9243843, 11193222, 19171660, -8405251, -770947, 12113955, 3147674, -715112, 25182466, 22364432, 27059904, 9144522, 22789634, 3001109, -13799730, -10640245, -1562294, 2913599, -20567524, 1509144, 35651448, -4554276, -7430831, 7372848, --222801, 9439801, -20742544, 27787902, -17175574, -7864622, -4486630, 1368484, 3573413, 3525631, --30314952, 38556996, -8085276, -12410308, -4291209, 32735704, -3452080, 6774237, -25654376, -18098456, -805843, 13597330, 12820477, 20919712, -33416994, -10594074, 32529546, -11628087, 3834332, 27565100, -6847252, 6000606, -1526861, 913217, -10271951, -855235, 2905009, 7844758, -4501663, 6526203, --11894912, -6866579, 925029, -3466576, -1829656, -28330678, -21661668, 1765232, 14504105, -13389024, --22605486, -9374303, -18524194, 5238250, 1066763, -7218230, 18238042, -5212480, 7588671, 8214125, --9570798, -6940131, -1412507, 2187212, -503585, 13572097, 14496, 842887, -6361921, -1498407, --10139344, 63247152, -3848828, 12773770, -676457, -6373195, 1629403, -29083372, -12619151, -8870718, -11188927, 8201240, 14116484, 1730335, -15532749, 16188805, -13223667, 18645526, 13478144, -14939507, --16280610, 1990181, 22513682, -23211078, 9554155, 10793790, -13502303, 5982890, -1926293, 8184060, --1245541, -33891052, 18817862, 11742977, -28823526, 34548180, -18518826, -4357245, -11556683, 27886686, --5761162, -23665806, -287226, 383863, 22775674, 23434952, 1302449, -18036716, 25997438, -4223027, -4378719, -33288144, 25962540, 10703059, 1320166, -19098646, -14740865, -2028298, 8855149, -15352897, --27721330, -11683385, 21410948, 13440026, -3485903, 35202624, 1819992, -5720360, -25675314, 31061740, --29156386, -9321153, 31431644, 10023917, 3819837, -11933567, 4632659, 31272730, 6644852, 13711146, -19501300, -51172924, -11514807, -8502425, -4545149, -21223580, -4072703, -2515777, 30773978, 8425652, -1785633, 15803869, 21894132, 15559056, -11328513, 5930813, 12969727, -2631204, 4815732, 5737540, -6771553, 4595615, 21747566, 11956115, 1044214, -6422050, -10278394, -19116900, 2453500, 26844, -4831838, 6283001, 2649458, 33239826, -4897874, 12027519, 6865505, -9039832, -26721140, -4260608, --10110353, -16423418, -18060338, 3066070, -3271691, -21378736, -277562, 8162049, -2461553, -2078764, -7122667, -5255966, -16708497, -7258495, -25813290, 1306207, -28842316, 26996554, 40889164, 19717658, -23030152, -35667020, -32758252, -24847996, 1882806, 45280228, -8855686, 17118666, 28572270, 15135465, --16669305, 1404991, 20693690, -27013196, -23529442, -19256486, 21698712, 15965467, -29385092, -40220220, -54492936, 34398392, -39927628, 18195092, -5232344, 16697759, 1098975, -11498701, -27946278, 25313464, --1329292, -19853486, -30957588, 8129836, 6411850, -7283728, 127238, -2436857, -15632607, -6207302, --8565239, 14416595, -27242978, 29641716, -20732880, 1430761, 45373644, -44108240, -11445014, 42304356, -2344515, 10151692, -6955163, -12810277, 12443057, -4559108, -19233938, 2714956, -42931956, 71854264, --7779260, -78614008, 29118268, 78124384, 45175004, -95924872, -28742458, 18473728, 6195491, -14388677, --22950158, 12259447, 28631862, -35952096, -10768020, -62918048, -11674795, 22043382, 7175280, -19077170, --32399086, 12652437, 26910654, -381715, -9338870, -14947560, 21213918, 13286481, 8141111, -1667521, --7463580, 2802466, 11475079, 9731859, -3076807, -25144886, -16608639, 26491896, 10432476, -13421773, --10063645, 19034758, 5450851, -2507724, -39269424, -17477832, -20031728, 21667574, 5014375, 4818954, --4890357, 642635, 20051054, -4175245, -4649839, -18222472, 2694018, -5851893, 28325310, 6269042, --7507603, 3606162, 28581396, -3812320, -12253542, 2431488, 222265, -1478006, -20315196, 4955856, -19278498, 46232640, -19572702, 15311558, -24610700, -63960116, 34389804, -15836081, -35511864, -24021752, --36293548, 17613660, 11678016, -48030620, 30767536, -16503949, -1515050, -226023, -25130928, 19524384, -18801756, 17199196, -1873680, 22388054, 11233487, -12990665, 946503, -27229556, -10261214, -24116242, --17338246, -836982, 39537320, -32873680, -7350300, -6800007, -30032022, 17827336, -33840048, 17770964, -14852534, -22439056, 17743046, -36293548, 10299868, -31507880, 20454782, -11576547, -17073032, -17108466, --26200374, -6642704, 12865038, 23010824, -26584774, 17986250, 9662066, 27944130, 33709588, 20024212, --28392956, -12731357, -53213036, -13040594, -15592879, 17987324, -62064424, -11382200, -36991480, -2840584, -36721972, 34324304, 22138408, 8258149, 49518288, 54789824, 48275432, -16302085, -21966074, 18768470, -47255916, 88065080, 6159520, 20883742, 10519986, -4351339, 16039018, -15468325, 9387725, -3768834, --403190, -9848897, 16280074, 19371914, -6811818, -15400142, -12107513, 14754286, 6209449, 16685411, --9133248, 6672769, -3412352, -6916508, -4840428, 16569447, 31927714, 15664819, -16816408, 8791798, --5922760, 11815992, 4976794, 6002754, 15530602, -9796820, -21299280, 2069101, 16080358, 13052942, -4207458, -2850248, -7449084, -28726888, 28350006, 8272644, -6891275, -29887604, -7232725, -20448340, -10166724, 11840688, -10009958, 7344931, 57498876, -33996812, 21504902, 26100516, -12069395, 2357400, -10023380, -3221226, 27901182, 1413581, 20207284, -25830470, -3631395, 22431004, 3719442, -35041564, -22697828, -14003204, -11379516, -13389024, -3452080, -13058311, 13309030, 18547280, 9067213, -3252901, --9716290, 16091632, -5216775, -25739740, 21104932, -43448428, -10904922, -8956617, -9504226, 24773372, -27171574, 48645336, -14224932, 20805896, -722091, 9374303, 31952946, -2334852, 3467112, -21279416, --66959612, 33179160, 6455873, -32360432, -22107270, 3273839, 17592722, -3084324, -18916110, 9854802, --19395536, 25617870, 14366129, -11153493, -23273890, 46437724, 5191005, 2483028, -4170413, 6459094, -3369402, 2051921, -15517180, -32963874, 9219147, -4796942, -11645267, -30369714, -7380365, -857383, -27224188, 11233487, -34064460, 19973208, 3660386, -1243393, -3678640, 11173357, 14354318, -2756295, --6268505, -2354716, -5923297, 5333813, 8586176, -295279, 4980552, 9583146, -3376381, 13803488, -5964099, 4306779, 7342784, -3762928, 17313014, 3005940, -3495567, 11324755, -13412646, 4482872, -7949448, -3088082, -5646272, 15600395, 22446572, -19815368, -3535832, -6886980, -6675453, 8121783, -7074348, -12377022, 7111392, 5739150, 5145908, 6007049, -11075647, 8224326, -679142, 4932233, --13851806, -3422552, 2910914, 64133524, 32263258, 64531884, -59616832, 5420786, 30535070, -11669426, -34820372, 68070400, 36894844, 2450279, -18564996, -18545668, 3211025, 29662654, 31154082, 7432978, --383326, -46496244, -9947144, 46417324, 14956687, -12585865, 25172266, -21395916, -30631170, -8048769, --2333778, 35947804, 46275588, 42129872, 15546708, -15948287, -25254408, -45995880, -46323908, 40350144, -16492674, 3557844, 61577484, 4022237, -19267760, -25056302, -26050588, 12788265, 26124676, 21314312, -40279276, 3150896, 28892782, -1648731, -5571647, 15064061, 26725434, 20050518, 16865800, -15164993, --6168647, -11906723, -27760522, -21719650, -40309880, -13123809, 10392210, -6306623, 28760174, 35225712, --898722, 586800, -14647449, -25308094, 4941897, 34042448, -2279017, 18953690, 7869991, -2203855, --10919417, -4619238, 2756832, 12045236, 8862665, -8784282, -19252190, -23138600, -22279070, -8259222, -8575439, -2042257, -14127758, -6815040, -9906879, -7850127, 4185983, -985158, 12613245, 18771154, -3821984, -22304838, -11926587, -13270375, -3405909, 15436649, 3330747, 3969087, -18773838, -17231946, --20237886, -9991168, 17029546, 12057047, 14653892, 8276939, -7595113, -8762807, 6024766, 5970542, --1891933, 4114579, -7946227, -5912023, 4182761, 3383361, 5924371, -3460670, -7898982, -3286724, --6131603, -900869, 11530913, -33986076, -66058208, 26021060, 107920720, 109580184, 92893704, 67180808, --41432476, -47412144, -51079508, -68108520, -104039144, -83944600, -72773392, 33749852, 78339128, 58133992, -125942400, 97210144, 50799264, -18786186, -33848636, -84683336, -65983044, -65478924, -13300440, -40149356, --32476396, 9636296, 17781702, 35581120, 35854388, 49021684, 48766132, 62751620, 36711232, 16045461, --9070434, -10677826, -27572080, -41895796, -50438484, -61814244, -40372692, -75906032, -50458348, -37990060, -38028176, 71904728, 77682536, 53626960, 36652716, 57239568, 43916576, 54932632, 43290048, 15088220, --20346334, -96369936, -68038728, -69489888, -107670000, -67655936, -58430344, -56837988, 20706038, 57052736, -90764472, 74615928, 106691280, 95626912, 93638880, 66646080, -36340792, -33020782, -74828528, -99111200, --109069624, -89577448, -42900816, -12264816, -22553948, 29467770, 78161424, 54994372, 37258304, 62573380, -52706764, 18752364, -12335146, -12559558, -4006668, -15394237, -41972568, -26475252, -29975650, -16293495, --13418015, -31374200, -11548093, 10727755, -10448582, 34622804, 45832668, 50224272, 53252224, 3255048, -15931107, 15470472, -4490925, -72931232, -58095876, -45493904, -40524628, -32009854, -30252676, 33497524, -50167364, 54412940, 52183316, 42931956, 29529510, 26482768, -347355, -7900593, -42089604, -56925496, --50884088, -42523396, -27047556, -17671642, 2111513, 25613574, 52068964, 38919920, 24835112, 17923436, -4974109, -355409, 85362, -10384694, -13491566, -11211475, -13181792, 3173444, -4919348, -18185966, -2458869, 8731669, -3183108, -4514548, -3712999, 2094870, 3476776, -4705674, 1084479, 11889543, -7484518, 3519189, 7367480, 7103876, 1269700, -1352378, -2207613, -4722317, -6667400, -4943508, --3567507, -4542465, -3773129, -1718524, -672162, 1036698, 2218888, 2260227, 2063195, 3573950, -2892661, 3187940, 1329829, -1216550, -1475321, -122407, -1378148, -2658048, -1705102, 1177895, -2739652, 3427921, 2703682, 2628520, 653909, -1366873, -2885681, -4315369, -5814312, -5432060, --4786204, -2977486, -1274532, 1124745, 4128001, 7341710, 8199093, 8187819, 6595459, 4103841, -905701, -2011118, -5883032, -7658464, -8315057, -7165616, -5158793, -2477123, 567473, 3425773, -4170950, 4918812, 4330401, 3130494, 1515587, 643708, -164819, -436476, -811749, -824634, --1003949, -541166, -633508, -495532, -646393, -278099, -359704, -59056, -209380, 69256, --157840, 78920, -113280, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +573915, 2186138, 1808181, -5255966, -2726231, 7173133, 12464532, 2024003, 6643241, -2678986, +1261647, -326954, 5629092, -4437238, -10154376, 4129074, 4765803, -5904507, 6880001, 3404299, +6278169, 2005213, 1502702, -2713883, -863288, 351650, 4191888, 402653, -6275484, 303332, +-493384, 1388348, -859530, 1149441, 1527398, 3778498, 2739652, 925565, 1192927, 403190, +1860258, -1905355, -3115999, -6935836, 1369021, 1565516, 587874, 5372467, -1866163, 4183298, +1171989, -1620813, -3264712, -2094870, 7504919, 1637456, 4201552, 732292, 1675037, -1398549, +286152, 538482, 2180770, -607738, -2754148, -1468879, -5766531, 683974, 1167157, 5000416, +-1558536, 3832185, -624918, 2523293, 80531, 2277407, 1773285, 1084479, -890669, 2613488, +3586835, 2520072, 2357400, -37581, 542240, 622770, -1917166, 867047, 484258, 1768453, +932545, 754841, 962073, 1278290, -650151, 790811, -484794, -24159, -203474, 4871567, +4546760, 2192044, 1811939, 2607045, 2979097, 4603668, -2053531, 4774930, -27917, 5095979, +-1180042, 9010841, 2954938, 3030100, -6167573, -775242, -1460826, -7841537, 4248260, 3725347, +-2581275, -10297184, -4804458, -1481764, 4975720, 7031399, 4306242, -2704756, 1404991, -4372814, +132070, 461172, -3701188, -1727651, -9464497, 849330, -1257352, -3854733, 328565, 615791, +-1352378, -223338, 8902393, -2085207, 7236483, 1498407, -5735929, 493921, 468688, 4188667, +-1928440, 1241782, 893890, 389768, 5521181, 2018635, 5670431, 4304094, -3033321, 5318244, +2471754, 3903052, 278636, 1324461, -1425392, -2421825, -4818417, -5759015, 5992553, -5986648, +-4757750, -4939750, 2726231, 2610266, 1034013, 1172526, 3477313, -2223183, 2596845, -1661079, +-2509335, 3958349, -3661460, 673773, 1736777, -2943663, 646929, 507343, -552440, -402653, +-348429, 2109366, -752156, 829466, -987843, 1635846, -520765, 945430, -1167694, -1118302, +-1125818, -8057359, -7562364, 1656784, 112206, -1597191, 4471598, -560493, -824097, 4712653, +-5193153, 1040456, -4539244, -2883534, -1665374, 78920, 7605850, 8715562, -4078608, 3431142, +-6301791, -571768, -2495376, 8465917, -2542084, -452582, 836445, -11860015, -2115808, -5845451, +-1983738, -1433982, 4377109, 5903970, 2358474, 7971460, -1069984, -3598646, -3725884, 4611721, +11876121, 8360154, -4706748, -5421323, 5913096, -5334887, 964220, 1922535, 9718974, -3579855, +-4872641, 1082332, -3044058, 1886028, 2434173, 6229850, -6861747, -4398584, 3933116, 7521025, +-747861, -3470871, -4480725, -10601053, 3971234, -6979, 3106872, 507343, 219043, -1658931, +1890859, -2700998, 1624035, 2301566, 2254858, -3760244, 2709051, -683974, -2704219, 259846, +-5633924, 3498788, 466004, 446677, -2276333, -757525, -1936493, -3884261, -3013993, 2068564, +130460, 837519, -788663, 272730, -284005, -1112933, -942208, -1626182, 104153, -934692, +-762357, -231928, 299037, -292058, 465467, -305480, 1885491, 748935, -1203128, 1320703, +732292, -1536525, 1013612, -19744502, -6420439, -1104880, 3418794, 2192044, 4958003, -9465034, +-2754685, -492848, -9687836, -7031399, 2507724, 5828808, 3519189, 6439230, -773094, 3669513, +8722005, 7577933, 7242926, 4074313, -2712272, -2272038, -4394826, -2040110, -4415764, 9179419, +4356708, -1488206, -4043175, -2567317, -4129611, -6162741, -6520297, -8328479, 5034776, 3500398, +-9115531, 2094333, -431644, 6262063, 1012539, 3048890, 4145717, -8731669, -1309428, -385473, +1185411, 4481262, 6940667, -2831457, -965294, -2093260, -5421860, 1612223, 1122597, -639413, +-1457068, 5172215, 316754, -2956011, -949188, 2420214, 3377455, -1412507, -120796, 815507, +-4714264, 3460670, -337692, -7187091, 848793, -8759049, 1410897, 6410239, -2130841, -318364, +-9743670, -4827007, -7232725, -4463008, -575526, -806917, 4537096, 824097, 5322002, -3230889, +1810329, 2821794, 984084, 2776696, 352187, -1951526, 1120450, -898185, 932545, 37581, +399969, -402116, -1320703, -538482, 1214402, -1334124, 908922, 2199560, 1163399, 540092, +74625, 37044, -457951, -906238, -1433982, 1043140, 1444720, -882079, 952946, -928787, +-671089, 10902238, 3976603, 1923609, -2797098, 8056285, 2988224, 4594542, 12513924, 13753022, +424128, -2123861, -4941360, -7330436, 2627446, 5490042, -2892661, -462246, 671089, -1209033, +-4461934, 5211406, -5111011, 2452963, -14558865, -1998234, -3622268, -3423626, -7247221, -1402844, +-1029182, 197032, -3767223, -5143760, -4227322, 657667, -2837363, -5464272, 3209951, 4850629, +280784, -4469451, -5218922, 1958505, -4045322, 4576288, -5735392, 3704946, 1198296, 9664, +-8127152, -7340636, 1604170, -5298379, 8607114, 1635309, 7202660, -3718368, 7248831, 1510755, +4622459, 1687922, 4371740, -4066797, -6046777, -48855, 9349607, -855235, -6513318, -3315178, +3999688, -2581275, -3781719, 1029182, -10313290, 6942278, 8143258, -449361, -7202660, -8847633, +-415538, 7562364, 5272073, -4182761, 5607617, 661962, -986769, -1059783, -746251, -421444, +1430761, -2455111, -2331630, 251792, 701153, -1832340, 529355, -829466, -427886, 2046015, +-964757, -378494, 154619, -3089155, 1494649, 467615, 115964, 777389, 821413, -86436, +91268, -568009, -787590, -425202, -542777, -820339, 15410343, 3307125, 8416525, -3224447, +6278706, 4887673, 9838159, -7234873, -5367099, -1551557, 470836, 7208566, -3428458, 10874320, +-902480, 6240051, 5167383, -2865817, 2065879, 6321118, 5616744, 1602560, 1479079, 5771363, +-11744588, 2042257, 8905078, 7176891, -6395207, 7997229, -9383967, 5777268, -8289287, -3994320, +-2255395, 8665097, -1849520, 9066676, 1874216, 2060511, 330176, -165356, 3421478, 5377836, +11520176, 1964411, 9926206, -4804458, 7224672, 9800042, -419833, -1598265, -3602404, 3872987, +-13925358, -1010928, 1245004, -5035313, -8310762, -324270, -637266, -970663, 3500935, -8300025, +4151623, 3858491, 5246840, -13165685, 4464619, 3337190, -7980049, -785442, 4220342, 9930501, +-12520367, -1397475, 837519, -11584601, -1146219, 1863479, -3367791, 7847442, -1835562, 811749, +2056753, -1207423, -496069, -383863, 1267015, -2892124, 347892, -1431298, 827855, 420907, +-1831267, -44560, 2029909, -800475, -528818, 199179, -2579665, -795106, 384936, -804233, +-1228361, -207232, 377957, -1225139, -675384, 1882806, 2240899, -2854006, -171799, 642635, +-68183, -341987, -13764296, -16957068, -13506062, -12271795, -380105, 8580271, -17816062, 12673912, +8256001, -20086488, 12663174, 5322002, 4354560, 1956358, 1975685, 4508105, -3117610, -3301219, +-6556805, -223875, 7726646, 6476811, 3823595, -11445551, 7837242, -8187819, 256624, -7202660, +8990977, -4771172, -3670587, 2804077, -13394929, 1317481, -4414690, -4038343, -1398012, 938450, +13242995, -6251862, -1988033, -5049808, 10080288, -6131603, -3258270, 3073586, 3055869, 2811056, +3590056, -4190814, 4880694, 1213865, -10980621, 15122580, 6060199, 2425046, 1614908, -98784, +-7021198, 8645769, 7298223, 3012920, 9753334, 1013075, 4312684, 9746355, 5009543, 2079301, +-6699075, 8026757, -3500398, 15354508, -1644436, 386547, -4165582, -16153909, 2137283, -3934190, +-1890859, 8256001, -676994, -8773008, -4959077, 7093139, 5978595, 906775, 6922951, 1796370, +-5046587, 2384244, -466004, -1718524, -1388885, 539018, 4103841, -1952600, 522912, 703301, +2315524, 850404, -1839857, 2964064, 451508, 774705, -161598, 751619, 384400, -1188632, +1723356, -1200980, 1421097, 1081258, -857920, 3343095, -445066, 809601, -1132261, -781684, +9854802, 6717329, -1141924, -6180458, 16196859, 25755308, -3401077, -3573413, 12453795, 3032784, +4108673, 3307662, -18547280, 2047089, -11992622, 9599789, 13684303, -3585761, -6606734, 2241973, +8668855, -5195300, 10471130, -4101694, 20207284, -5900748, 3912715, -983011, 5486821, 14401562, +-5430450, 1426466, -1266479, 4172561, -5333276, -2567317, 8198019, 17667348, 1480690, 12937515, +-4780836, 1793686, -2425583, 4321811, 9454834, 14103062, 10991358, 10449119, 10857140, 6877317, +-1975685, 1688996, -1487669, 288300, 2161979, -7033009, -2024003, 11369852, -9966472, 3992172, +-4378719, -2609730, -5177046, -20533164, 2305861, 11165841, 7061463, -2513093, -9739375, -23666880, +-3808026, 9665287, -1984275, 3830037, -7374996, 5537824, -6800007, 6284611, 13443248, -5867999, +-7252589, -13373991, 4056060, 1686848, 2213519, -10565620, 778463, 98247, -3195456, 645319, +5014911, 256624, 3452617, 1562294, 2241973, 2760590, -454193, 4321274, 1039382, 475668, +-872415, -1349157, -1163399, 4123706, 1393717, -97711, 2757906, 1483911, 1996086, -335007, +2286533, 2809446, 3762391, -1517734, 419833, -1475858, -17674328, -14102525, 1854889, 8262980, +-7931731, -5248450, 1060857, -4314832, -26476326, -22897544, 9995463, 9153649, 1722819, 1321239, +-9674414, 15176804, 18510772, 11363947, -9496173, 8866960, 12164958, -1919850, -15354508, -6972880, +21303574, -6349036, 2168422, 1263794, 11984569, -9617506, -17047262, 3677029, 7885560, -4232691, +5058935, 11036992, -5335960, -4283693, -468151, -23893440, -6875706, 8176544, -4498978, -15977278, +2921115, -456340, -4983236, 3135863, -1473174, -15151034, -12782360, -22661858, -17952964, 3474629, +7960185, 705448, -5353140, -7587060, 216896, -5199058, 4857608, -10906533, 399969, -3885872, +-3109020, -3717831, -953483, 4212289, -4913443, -21743808, 3287798, -3160559, 5389647, 5916318, +436476, 4100083, 5058398, 1563905, -1214402, 2610803, -3059627, 1185948, -6742562, -3617973, +-3011309, -3753802, 1565516, 5948530, -3106335, 912144, -7669738, 856309, -747324, -5730023, +2511482, -1844152, 1461900, 2306398, 1360968, 1013075, 4869419, 1030255, 650688, 1588601, +31139, 635655, 688805, -1414118, -3651796, -758062, -3698504, 1724966, -2810519, 4134443, +58519, 5936719, 2762201, -3623879, -2361695, -1989644, -209380, 8647380, 27790050, 24688008, +19298898, -2054605, 18871012, 6125160, 26335128, 11160473, -521302, 32126892, -6662568, -1663226, +-20424180, -5373004, -390305, -14397804, 8660802, 12914967, -4159139, -151398, -11577084, -19879256, +-11714523, -15146202, -4393752, -9133248, -2849711, -1403381, 9162239, 2357400, -1857573, -8159364, +-2791729, -5428839, 2956548, 266288, -8086887, 4351876, 5451924, 2193118, -6237367, -8194798, +2804614, 7693360, -1038308, -217970, -14545444, 26248156, 4444755, -4905390, -660888, 2398739, +11259794, 9593883, -9791452, 5633387, -3794604, 1275605, -1605244, -2398739, -14905684, -13265543, +-17859548, 2804614, -692564, -3690988, 11307038, -3483755, 31814970, -3032784, -1654099, -7723962, +-3435437, 4221416, 5522791, 3941169, -206158, 13771813, 9859634, -1914482, -6549289, 1920387, +-3879429, 95026, 1349157, -4285841, -1388885, 234613, -1413044, 2269353, -5346161, 3345780, +6113886, -1724429, 3240016, -1737851, -1423782, -2310156, 1064615, 3485366, -1356136, 4634270, +920734, 1726040, 6284074, 2816962, -755377, 6666863, 3013993, 4668630, 5958194, 4682588, +574452, 131533, 4432406, -3858491, 208306, 2808909, 1530619, 3195456, 2891587, 1675574, +3689377, -16760036, -24307904, -13240847, 17748416, 14292577, -12521440, -12585328, 19045496, 11782169, +-12375411, -16461536, -2948495, 2974265, 1612223, 2495376, -9925669, 10280541, -7466801, 19990388, +-3332358, -13820131, 2996814, 5217312, -377420, 1657857, -6408091, -8936753, -766652, 8211441, +-5211943, 6287296, -10026064, -25928180, -21421150, 13535053, -16747151, 13349295, 3580392, 1684701, +-5784784, 7901129, 2208687, -1923072, -4059281, 3776350, 7660074, -7023346, 21783000, -5425081, +7141457, -6510634, 1660542, -1725503, -8932458, 21446382, -16953846, 23318452, -1123671, -11377905, +-17804250, 9100499, 2854006, 3052111, 744640, 9566503, 6029597, 8684424, -18319646, -5319854, +198642, 395137, 4268661, -13517873, -6905771, -4365298, -2623688, -16959216, -3773666, -5610301, +-19521164, -923418, -11190537, 2908767, -5398774, 1559610, 2205466, 8527121, 4709969, -3122441, +-813359, -6978248, 3627100, -408559, 3112241, -8208756, 183610, -3242700, 1737314, -7561290, +1233729, 1818919, 113280, -1625108, 2407329, -4414153, 3158412, -6928856, 2416456, -4947266, +2182917, 1398012, 3169149, -2535105, 8533026, 3528316, -132607, -5237176, -4638565, -769336, +5611912, -1145146, -3138011, -2676838, 3763465, 337692, 3548180, 41249940, 13763760, -9197672, +21196200, 19740206, -10204305, -13003013, 31870804, -2852932, 7012608, -18897856, 46393700, 1622424, +-12985297, 6737193, 2325188, 22528178, 395674, 28450938, -20438138, 443455, -22325240, 1727114, +15707769, 736050, -13675176, 19397682, 10373957, 5717675, 4678293, -6769942, -6527277, 1772748, +-9674414, 12704513, -11310796, -15086073, 13337484, 5057324, -17498234, 9516574, 1162326, -12722230, +-7130183, -4247723, 6703370, -1497333, -7661685, 9356049, -11310796, -4484483, -3875134, 15656230, +-10269804, 7568806, 12026982, 5568962, -7103876, -14620069, 9277129, -12501576, 16916802, -21299280, +28106266, -8314520, -3947075, -3991098, 12799539, -920197, 4647155, 7652558, 4610111, 10875394, +-10609643, -20207822, 1421634, 17179332, -11458436, -5424544, -11976516, -7185481, 3163244, -1182190, +-3442416, 7434052, 5352066, 3932043, -1883343, 11332271, 6941741, -5255966, -2766496, 2239289, +610422, 9598178, 6086506, -772020, -3115462, -2425583, 10480257, 978716, -5362267, 6642704, +1996086, 287226, 5541045, 2522220, -967441, -5633387, 1585380, 6898255, -5100274, -1258962, +7854422, -490163, -1611150, -1956358, 4640712, 916976, 141734, -2064806, -24671902, -3053185, +22560926, -6585796, -14068702, 6243272, -6604586, -1202591, 10230075, -24492052, -14393509, 9487046, +12611635, 17207786, -1213328, -3230352, 6932614, -1641751, -24222004, -16572668, 28501940, -2144263, +-24960202, -14474577, -10041097, -8237211, 2325188, 8404714, 461172, -4146791, -12452184, -19035296, +2573759, 2559264, -659814, 15608985, -10627897, -29871498, 12133283, 8821326, -34909496, 20877836, +-5639829, -17607218, -14521284, -1285806, 19881940, 4779762, -6573985, -7170448, 5684389, 10473815, +-14696841, 11286637, 1822140, 8322573, -6359236, -15267535, 13578539, 73551, 15226733, -47229608, +6015102, 7329899, -6983617, 13166222, 15261629, 44960792, 1279900, -29634200, -13671955, -7716983, +-28827820, -28271086, 1474784, -16039555, 212601, -10645613, 10593000, -10833518, -10681047, 18997178, +4657892, -602369, -1041530, 11167989, -2350421, -1069447, 6444062, 5335960, -4093104, 3661460, +-10141492, -2186675, 2822867, -1867237, -2949569, -4836133, -5203890, -2616172, -6416681, 2622078, +-8154533, 1816771, -1418413, 7693360, -1810329, -3936875, -3401077, -4543539, -4930623, -1263257, +-3451006, -5930276, -4437238, 4437775, -5939940, -2997350, -10612864, 3328063, 4243428, 11002632, +2454574, -1345935, 660351, -20680804, 3349538, 12650826, 11389716, -18362596, 32622960, 22632868, +-10400263, 13508209, -26326538, -5923297, -8793409, 41566692, 26720066, -9985262, -15843061, -19507742, +-4275640, 1032940, 7692824, 27860916, 5985574, 4675609, 6085969, 700617, -9168145, 1052267, +-1700807, 12800076, 17416092, 21952652, 14380087, 9269076, -2120103, -4140349, 3548180, 19894826, +3208878, 3473018, -20248624, -10388452, 34331284, 13843753, 10361072, 184147, 20594906, 10899553, +43336756, -2495376, 44681620, 3097745, -13777718, 14370424, -11984032, -9086003, -1505923, -8310762, +568546, 8208756, 17928804, 3029563, -3719442, -19625854, 6392522, 1540283, 12984223, -15410880, +4180077, -6849936, 2406256, -19582904, 10001368, -17241072, -1984812, -23440320, -32027572, -5439576, +-4914517, 26377004, 7236483, -903554, 5068062, 8172249, 10424959, 1665374, -278636, 346282, +-18502182, 5819144, 387084, 17272748, -6922951, -930397, -4514548, 12250320, 2586644, 11182484, +-1074, -13173738, 6518150, -762357, 4470524, -10035191, -4362076, 2305861, 2891050, -7482907, +857383, 6699075, 4372814, -6594923, -7079717, 12664248, -12680354, 5261335, -3801583, -10557030, +3479997, 2306398, 3511136, 4263292, -4626217, -699543, 6295349, 399969, 4438849, -1905355, +-4718559, -5093295, -10979547, -16604880, 5011153, -19061602, -107911, 23138062, 7170985, 19724638, +-22937272, -10519986, 11118060, 2317135, 32620814, -16612397, 19469086, -7394323, -9995463, -24376086, +-9569187, -13107703, 16246788, 3814468, -21824340, 27200564, -14175003, -13107703, 2529736, 10581726, +-8069707, 18797462, -9249749, -13112535, -6866042, 6217502, -2428804, -3630858, 1905355, 18722300, +-12853763, 34298000, -13474386, -491774, 31673774, -6441377, 5451387, -43455404, 1773285, 7700340, +-9956271, 19084150, -34985728, -42661372, 15999827, -7628399, 23384486, -17659832, -16785270, 1819992, +-5645198, 36131948, -4594542, -1742683, 7878044, -33727304, 1720134, -34084860, -13818520, 1865090, +7919383, -42536820, -19153944, -5310190, -2285460, 13634911, -18425946, 21625698, -9147207, 2334852, +-28111634, -1522029, -24867860, 9197136, 5099200, 18223546, 23134304, -8824010, 15086073, 1955821, +-5261335, 7715909, 4651987, -7648263, -7873749, -13599477, -740882, -8143258, -8640400, 2775623, +-2238215, 11484743, -15862925, -2852395, -10073846, 3732864, 5415417, -5558225, -995359, -8444443, +-8562017, 9169755, 15006079, 17052094, 3256122, 963683, -4904316, 3112241, 2563559, -6654515, +-10638634, 3390340, -5740761, -7749195, 11341398, 7944616, 6500970, -10801306, -12592844, -26562226, +21714818, -19069654, -5097590, 16913044, 39598524, -11381126, 32511828, 11286100, 8617852, -15130096, +35989680, 5456219, 16963510, 1428077, -20605642, 7492034, -20691004, -21036750, 13389561, -20954608, +-4160750, -4987531, 21472688, 1710471, -6761353, 6750615, 9742060, -4452271, -19598472, -4769561, +15675020, 37051608, 8898635, -21009906, 2642479, -4102231, 9243843, 11193222, 19171660, -8405251, +770947, 12113955, 3147674, -715112, 25182466, 22364432, 27059904, 9144522, 22789634, 3001109, +13799730, -10640245, -1562294, 2913599, -20567524, 1509144, 35651448, -4554276, -7430831, 7372848, +-222801, 9439801, -20742544, 27787902, -17175574, -7864622, -4486630, 1368484, 3573413, 3525631, +-30314952, 38556996, -8085276, -12410308, -4291209, 32735704, -3452080, 6774237, -25654376, -18098456, +805843, 13597330, 12820477, 20919712, -33416994, -10594074, 32529546, -11628087, 3834332, 27565100, +6847252, 6000606, -1526861, 913217, -10271951, -855235, 2905009, 7844758, -4501663, 6526203, +-11894912, -6866579, 925029, -3466576, -1829656, -28330678, -21661668, 1765232, 14504105, -13389024, +-22605486, -9374303, -18524194, 5238250, 1066763, -7218230, 18238042, -5212480, 7588671, 8214125, +-9570798, -6940131, -1412507, 2187212, -503585, 13572097, 14496, 842887, -6361921, -1498407, +-10139344, 63247152, -3848828, 12773770, -676457, -6373195, 1629403, -29083372, -12619151, -8870718, +11188927, 8201240, 14116484, 1730335, -15532749, 16188805, -13223667, 18645526, 13478144, -14939507, +-16280610, 1990181, 22513682, -23211078, 9554155, 10793790, -13502303, 5982890, -1926293, 8184060, +-1245541, -33891052, 18817862, 11742977, -28823526, 34548180, -18518826, -4357245, -11556683, 27886686, +-5761162, -23665806, -287226, 383863, 22775674, 23434952, 1302449, -18036716, 25997438, -4223027, +4378719, -33288144, 25962540, 10703059, 1320166, -19098646, -14740865, -2028298, 8855149, -15352897, +-27721330, -11683385, 21410948, 13440026, -3485903, 35202624, 1819992, -5720360, -25675314, 31061740, +-29156386, -9321153, 31431644, 10023917, 3819837, -11933567, 4632659, 31272730, 6644852, 13711146, +19501300, -51172924, -11514807, -8502425, -4545149, -21223580, -4072703, -2515777, 30773978, 8425652, +1785633, 15803869, 21894132, 15559056, -11328513, 5930813, 12969727, -2631204, 4815732, 5737540, +6771553, 4595615, 21747566, 11956115, 1044214, -6422050, -10278394, -19116900, 2453500, 26844, +4831838, 6283001, 2649458, 33239826, -4897874, 12027519, 6865505, -9039832, -26721140, -4260608, +-10110353, -16423418, -18060338, 3066070, -3271691, -21378736, -277562, 8162049, -2461553, -2078764, +7122667, -5255966, -16708497, -7258495, -25813290, 1306207, -28842316, 26996554, 40889164, 19717658, +23030152, -35667020, -32758252, -24847996, 1882806, 45280228, -8855686, 17118666, 28572270, 15135465, +-16669305, 1404991, 20693690, -27013196, -23529442, -19256486, 21698712, 15965467, -29385092, -40220220, +54492936, 34398392, -39927628, 18195092, -5232344, 16697759, 1098975, -11498701, -27946278, 25313464, +-1329292, -19853486, -30957588, 8129836, 6411850, -7283728, 127238, -2436857, -15632607, -6207302, +-8565239, 14416595, -27242978, 29641716, -20732880, 1430761, 45373644, -44108240, -11445014, 42304356, +2344515, 10151692, -6955163, -12810277, 12443057, -4559108, -19233938, 2714956, -42931956, 71854264, +-7779260, -78614008, 29118268, 78124384, 45175004, -95924872, -28742458, 18473728, 6195491, -14388677, +-22950158, 12259447, 28631862, -35952096, -10768020, -62918048, -11674795, 22043382, 7175280, -19077170, +-32399086, 12652437, 26910654, -381715, -9338870, -14947560, 21213918, 13286481, 8141111, -1667521, +-7463580, 2802466, 11475079, 9731859, -3076807, -25144886, -16608639, 26491896, 10432476, -13421773, +-10063645, 19034758, 5450851, -2507724, -39269424, -17477832, -20031728, 21667574, 5014375, 4818954, +-4890357, 642635, 20051054, -4175245, -4649839, -18222472, 2694018, -5851893, 28325310, 6269042, +-7507603, 3606162, 28581396, -3812320, -12253542, 2431488, 222265, -1478006, -20315196, 4955856, +19278498, 46232640, -19572702, 15311558, -24610700, -63960116, 34389804, -15836081, -35511864, -24021752, +-36293548, 17613660, 11678016, -48030620, 30767536, -16503949, -1515050, -226023, -25130928, 19524384, +18801756, 17199196, -1873680, 22388054, 11233487, -12990665, 946503, -27229556, -10261214, -24116242, +-17338246, -836982, 39537320, -32873680, -7350300, -6800007, -30032022, 17827336, -33840048, 17770964, +14852534, -22439056, 17743046, -36293548, 10299868, -31507880, 20454782, -11576547, -17073032, -17108466, +-26200374, -6642704, 12865038, 23010824, -26584774, 17986250, 9662066, 27944130, 33709588, 20024212, +-28392956, -12731357, -53213036, -13040594, -15592879, 17987324, -62064424, -11382200, -36991480, -2840584, +36721972, 34324304, 22138408, 8258149, 49518288, 54789824, 48275432, -16302085, -21966074, 18768470, +47255916, 88065080, 6159520, 20883742, 10519986, -4351339, 16039018, -15468325, 9387725, -3768834, +-403190, -9848897, 16280074, 19371914, -6811818, -15400142, -12107513, 14754286, 6209449, 16685411, +-9133248, 6672769, -3412352, -6916508, -4840428, 16569447, 31927714, 15664819, -16816408, 8791798, +-5922760, 11815992, 4976794, 6002754, 15530602, -9796820, -21299280, 2069101, 16080358, 13052942, +4207458, -2850248, -7449084, -28726888, 28350006, 8272644, -6891275, -29887604, -7232725, -20448340, +10166724, 11840688, -10009958, 7344931, 57498876, -33996812, 21504902, 26100516, -12069395, 2357400, +10023380, -3221226, 27901182, 1413581, 20207284, -25830470, -3631395, 22431004, 3719442, -35041564, +22697828, -14003204, -11379516, -13389024, -3452080, -13058311, 13309030, 18547280, 9067213, -3252901, +-9716290, 16091632, -5216775, -25739740, 21104932, -43448428, -10904922, -8956617, -9504226, 24773372, +27171574, 48645336, -14224932, 20805896, -722091, 9374303, 31952946, -2334852, 3467112, -21279416, +-66959612, 33179160, 6455873, -32360432, -22107270, 3273839, 17592722, -3084324, -18916110, 9854802, +-19395536, 25617870, 14366129, -11153493, -23273890, 46437724, 5191005, 2483028, -4170413, 6459094, +3369402, 2051921, -15517180, -32963874, 9219147, -4796942, -11645267, -30369714, -7380365, -857383, +27224188, 11233487, -34064460, 19973208, 3660386, -1243393, -3678640, 11173357, 14354318, -2756295, +-6268505, -2354716, -5923297, 5333813, 8586176, -295279, 4980552, 9583146, -3376381, 13803488, +5964099, 4306779, 7342784, -3762928, 17313014, 3005940, -3495567, 11324755, -13412646, 4482872, +7949448, -3088082, -5646272, 15600395, 22446572, -19815368, -3535832, -6886980, -6675453, 8121783, +7074348, -12377022, 7111392, 5739150, 5145908, 6007049, -11075647, 8224326, -679142, 4932233, +-13851806, -3422552, 2910914, 64133524, 32263258, 64531884, -59616832, 5420786, 30535070, -11669426, +34820372, 68070400, 36894844, 2450279, -18564996, -18545668, 3211025, 29662654, 31154082, 7432978, +-383326, -46496244, -9947144, 46417324, 14956687, -12585865, 25172266, -21395916, -30631170, -8048769, +-2333778, 35947804, 46275588, 42129872, 15546708, -15948287, -25254408, -45995880, -46323908, 40350144, +16492674, 3557844, 61577484, 4022237, -19267760, -25056302, -26050588, 12788265, 26124676, 21314312, +40279276, 3150896, 28892782, -1648731, -5571647, 15064061, 26725434, 20050518, 16865800, -15164993, +-6168647, -11906723, -27760522, -21719650, -40309880, -13123809, 10392210, -6306623, 28760174, 35225712, +-898722, 586800, -14647449, -25308094, 4941897, 34042448, -2279017, 18953690, 7869991, -2203855, +-10919417, -4619238, 2756832, 12045236, 8862665, -8784282, -19252190, -23138600, -22279070, -8259222, +8575439, -2042257, -14127758, -6815040, -9906879, -7850127, 4185983, -985158, 12613245, 18771154, +3821984, -22304838, -11926587, -13270375, -3405909, 15436649, 3330747, 3969087, -18773838, -17231946, +-20237886, -9991168, 17029546, 12057047, 14653892, 8276939, -7595113, -8762807, 6024766, 5970542, +-1891933, 4114579, -7946227, -5912023, 4182761, 3383361, 5924371, -3460670, -7898982, -3286724, +-6131603, -900869, 11530913, -33986076, -66058208, 26021060, 107920720, 109580184, 92893704, 67180808, +-41432476, -47412144, -51079508, -68108520, -104039144, -83944600, -72773392, 33749852, 78339128, 58133992, +125942400, 97210144, 50799264, -18786186, -33848636, -84683336, -65983044, -65478924, -13300440, -40149356, +-32476396, 9636296, 17781702, 35581120, 35854388, 49021684, 48766132, 62751620, 36711232, 16045461, +-9070434, -10677826, -27572080, -41895796, -50438484, -61814244, -40372692, -75906032, -50458348, -37990060, +38028176, 71904728, 77682536, 53626960, 36652716, 57239568, 43916576, 54932632, 43290048, 15088220, +-20346334, -96369936, -68038728, -69489888, -107670000, -67655936, -58430344, -56837988, 20706038, 57052736, +90764472, 74615928, 106691280, 95626912, 93638880, 66646080, -36340792, -33020782, -74828528, -99111200, +-109069624, -89577448, -42900816, -12264816, -22553948, 29467770, 78161424, 54994372, 37258304, 62573380, +52706764, 18752364, -12335146, -12559558, -4006668, -15394237, -41972568, -26475252, -29975650, -16293495, +-13418015, -31374200, -11548093, 10727755, -10448582, 34622804, 45832668, 50224272, 53252224, 3255048, +15931107, 15470472, -4490925, -72931232, -58095876, -45493904, -40524628, -32009854, -30252676, 33497524, +50167364, 54412940, 52183316, 42931956, 29529510, 26482768, -347355, -7900593, -42089604, -56925496, +-50884088, -42523396, -27047556, -17671642, 2111513, 25613574, 52068964, 38919920, 24835112, 17923436, +4974109, -355409, 85362, -10384694, -13491566, -11211475, -13181792, 3173444, -4919348, -18185966, +2458869, 8731669, -3183108, -4514548, -3712999, 2094870, 3476776, -4705674, 1084479, 11889543, +7484518, 3519189, 7367480, 7103876, 1269700, -1352378, -2207613, -4722317, -6667400, -4943508, +-3567507, -4542465, -3773129, -1718524, -672162, 1036698, 2218888, 2260227, 2063195, 3573950, +2892661, 3187940, 1329829, -1216550, -1475321, -122407, -1378148, -2658048, -1705102, 1177895, +2739652, 3427921, 2703682, 2628520, 653909, -1366873, -2885681, -4315369, -5814312, -5432060, +-4786204, -2977486, -1274532, 1124745, 4128001, 7341710, 8199093, 8187819, 6595459, 4103841, +905701, -2011118, -5883032, -7658464, -8315057, -7165616, -5158793, -2477123, 567473, 3425773, +4170950, 4918812, 4330401, 3130494, 1515587, 643708, -164819, -436476, -811749, -824634, +-1003949, -541166, -633508, -495532, -646393, -278099, -359704, -59056, -209380, 69256, +-157840, 78920, -113280, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -3398393, -3420942, 2815888, 6496675, -8848706, 1939178, 5733245, 10643466, -1203665, 6017786, -310848, -5468030, 1248762, 8361228, -228707, -2647847, 5538361, 8014409, 7487739, 4502737, 1158567, --3027415, -2483028, 794032, 3792456, -1911797, 1731946, 519691, 4320200, -2074469, -179315, -1135482, -5282810, -2995203, -1592896, -5414880, 1250909, -1499481, -100932, -701690, -4596689, -3576097, 5362267, -1081258, 382252, 536871, -917512, 5785321, -7026030, 16106, 2834679, -810138, 870268, -1639604, -5826660, -1441498, 2197413, 2691334, 2904472, -491237, 53150, -71404, 1123134, -949188, 6001680, 200790, -578747, -3934190, 489626, -2809446, -2235531, -2416456, 2554969, 6265821, 175557, 6161131, 652298, 693100, 368830, -3212636, 156766, --1124745, -1691143, 690953, 1919850, -1211181, 750546, -1254131, 1516124, -1598802, -545998, --807991, 860067, -492311, 801011, -700080, 951872, 1771137, 829466, -824634, -268435, --411243, -464393, 525597, 332860, -396211, 6951942, 11244761, 1516660, 5592048, -2024003, -3316789, 4354560, -1348083, -3474092, 5890548, 10189273, -2007897, 1139777, 3926137, -4864588, -3022583, 4355634, -8910983, 2512556, 857383, -1992865, -10737, -9257802, 365609, 2605435, --4417374, 824634, 144418, 5945309, 4228932, -2219961, -645319, -555125, -6321118, -4233764, -682363, 2557653, 559420, 2840584, -4180077, 637803, 2070711, 438624, -3870839, -2817499, --866510, 1351304, 3111167, 3237332, 2142652, 3777961, 3679176, -4134980, -1278827, 175020, -5234492, -791348, 3752728, -2468533, -2573222, -786516, -4725001, -2168959, 955093, 2757369, --4034048, 3944391, -1124745, -1169842, -796716, -1589138, -2045478, 819802, 3053185, 1147830, -5102958, -7088307, -5729487, -1254667, 2109366, -70867, -1176284, 1088774, 149250, 1319629, -2148558, 3618510, 54761, -209380, 846645, -332323, -61740, 560493, -1669669, -868657, --3443490, 1372242, 6522982, 9238475, 5347235, -2310693, 3956202, -2407329, -1631014, -7881802, --6287832, 2857764, 6038187, 5924371, 6156299, 1388348, 328565, 3831648, -5092221, 5134634, -4142496, 398895, 3558381, 9164923, 6220187, 1761474, -6576132, 209917, 2207613, 1437740, -1083406, -7182259, 1723356, 1345935, 4819490, 5341329, -1672353, 3438658, -2591476, -2854006, -3874061, 2220498, -6894497, -6501507, -2858301, -3642669, -2728915, -2888366, -7964480, -7183333, --652298, 2626909, -45634, -734976, -5366025, 741419, 6370510, -1761474, -2011655, 2426657, --11811, 4635344, 2317135, 2382633, -2971044, -3639985, 6841883, 3159485, -2736431, 4536559, --598074, 3543885, -2968896, 584652, 5051956, -1886028, -1634235, 3673271, 448824, 1482838, -2170569, -2479270, 2835215, -1146756, 2323577, 2371359, 1810329, -1576253, 593779, -767189, --1366873, -1717987, 101469, 245350, 1145146, 1016297, 268972, -52613, 899796, 317291, -627602, -12730283, -7526394, -2330557, 2397666, -5235565, 1583769, -1417876, 3650722, -870268, --7157563, -5657009, 4920959, 4063576, 10197863, 9043054, -1388348, 6549289, -9838159, -1575716, -7617662, 2323577, 1754494, -983011, -3224447, -1472637, 1040456, -852014, -313533, 3888556, --4830765, 1099512, 1735167, -90194, 3025268, -3284039, -2726767, 1775432, -2123861, 2745021, --5395553, 920197, -3246459, -1244467, -3613678, -2667175, -4103305, -6038187, 3707094, -10737, -6329171, -5900748, -5088463, -12348, 1203665, -667331, -1229434, 449361, 3809636, 1859721, -812823, -2578054, -2525978, -1396938, -4745402, 784368, -1235340, 586800, -230854, -5066988, --435402, -372052, -5406290, 181462, -1024887, 660351, -916439, -5979668, 537408, 2735357, --1199370, 4006131, 1095217, -2090575, 1670742, 4202626, 1369558, 754304, 941672, -848256, -517007, 3296924, -255014, -481573, 1201517, 1376537, 519691, 1117765, 234076, 491237, --2178622, 280784, -170188, -1030255, -780073, -747861, -1107028, 210990, -907312, 4509716, --6888591, 2850785, -7693897, -1252520, 339302, -5571110, 5283347, 4139275, -11403138, -1067299, -1875290, -966905, -5008469, -6582038, 1340030, -3270618, -5581847, -2649995, 3253975, 3003256, -8028368, 10574209, -945430, 9459129, -5780489, 3774740, 4050691, -744103, 3990025, -2216740, -57445, -521839, -1959579, -912681, -2189897, 7897908, -465467, -5729487, -1416802, 4001299, -2405182, 3218004, 599148, -2629057, 5681705, 11716671, 702227, 1264868, 659278, -772020, -1819456, -687195, 6622303, -4985384, 6334003, 4499515, -4057134, 2165737, 4119411, 2929705, --4857608, -5143760, -10375567, -1596117, -996969, 1413044, 3985730, -874563, 2589329, -780610, --2769180, -2641405, 5331665, -1118302, 5657009, -8266202, -3318399, 2028835, -5323075, 1485522, -5692443, 649077, -54761, 528281, 1204202, 893890, -3228205, -918586, -535260, 580894, --581431, 1160178, 1454383, 869194, -940061, -2045478, 2359011, 1029718, 914828, 736587, -682363, 290447, 55298, -924492, 983011, 585726, 382789, 293132, 1034550, 817118, -1241246, -1319092, -878858, -1568200, -1573569, -293132, 1246614, -861141, -591095, 814970, -274878, 638340, -265751, 230854, 2898566, 1447941, 42950, 4161823, 11630771, 13954886, --3699041, -200790, 2812667, -1971927, 8861591, 8868571, -5606543, 8697846, 6642167, 2720862, -3813394, 3620658, 1692754, -625455, 532576, 1279900, -4821638, -5660230, 1430224, -1490354, --158914, 1132798, -5202279, 5296232, 10282689, -189515, -6302865, 10271951, 1151051, 447213, -3899830, -1642825, -3118683, 1613297, -3889630, 1661079, 10275709, 4575751, -150861, 3842385, -5553393, 14752139, -2461553, 6447283, -1325534, -6208375, 4104915, 523449, -2180770, 3018825, -8890582, 2444910, 1526324, 14496, 3522947, 13079249, 5735929, 1763621, 1250909, 3551938, --3789235, 6764574, -1764695, -12652437, 1503239, -1224603, 7657927, 9232569, 3877282, -3734474, --3580929, -3163780, -506806, 2975876, 216359, 2063732, 1256815, 2156611, 5746130, 2656437, --4640176, -1844152, 593242, 1752347, 252866, 35970, 131533, -2371359, 2627983, 780073, -501974, 440771, 502511, 397821, 1960116, -662499, 1420024, -1304060, -464930, -2145873, -428423, -730144, -158914, 287226, 929324, -15742666, -1642825, -6752226, -7714298, -2199023, --5472325, 139050, 4903779, -7465727, 7703024, -16360067, 2406256, -4937602, -8550206, -11741904, -12208981, 5911486, 871342, -10423886, -6637872, 3700651, -13270375, -9481140, 3255048, 2692945, -13648332, -1906966, 1209570, 9904731, -5901822, 9724343, 3463354, 3467112, -1851131, -6099928, --624381, 8067559, -4365298, 542777, 10394358, -3928285, -2978560, -5157719, -6068789, -5465883, --3912715, -8504572, -957778, 2338610, -2796024, 1665374, -2672544, -4439386, 5862094, -7619272, -4583267, -6504728, -7922604, 208843, 6619619, 246961, -1923072, 2422362, -5270462, -2868501, --7406671, -13482976, -6231461, 1701344, -3981435, 14994268, 6088653, -10795937, -5297842, -1770063, --3778498, 4677220, 10340671, 6564321, -4943508, 4560182, -5871221, 3349001, 572841, 4567698, --5196911, -1453846, 501437, -2520072, -4430259, -3955128, 729071, -464930, -1005559, 2121714, -932008, 139586, -1446330, 1174674, -260919, -1379758, -3220689, -306016, -1642288, 49392, -1474784, -1308354, -3587908, -660351, -1509144, -6090264, -842887, -1889249, 16748762, 11166915, -11409581, -3229816, -16617765, -1168231, -8597451, 2251637, 3473555, 8986145, -4330401, 4016331, --6939594, 1287953, -6142877, -15156940, -8428873, 5982353, -5763309, -11984569, -11578158, -10462003, --16729434, 2188823, -5980205, -12463458, -11518565, 2118493, 15743203, -2000918, -2844879, -5198521, --9845676, 2121177, -4030827, 1184337, -12236899, 894964, -12738873, 1877438, -1207423, 6869800, -5040144, 5738613, 2700461, -352187, 4476430, -2958159, 8985072, 2700998, 4457639, 2905546, --3182034, 3386045, 9055939, -1086090, 4978941, -1192927, 14347875, 1990181, 5279052, 828392, --8325794, -6116034, 108448, -2770791, 1700807, -1992328, 4638028, 4408784, 5420249, -2457795, -3016678, -11031623, 5756867, 16409996, -8032126, -1540820, 4159139, -9270687, -813359, 5983963, --3854196, -469762, -2119030, 5218386, -5408438, -1136556, 1253057, -2815351, 1253594, -904628, -1990181, -2598455, -2868501, 3119757, -1520418, -2866891, 1942936, -1066763, -97711, -4097399, -3054259, 1184337, -857383, -590558, 1672890, 756988, 1618129, 1399086, 160524, -1699196, --3334505, -825707, 1726577, -8201777, -23663660, -3953518, -8244727, -12499965, 6735583, -23829552, --3066607, -8499740, -4590783, 6834367, -7558069, 10027138, 8694624, 1343788, 7841000, 653372, -4151623, -6243809, -10933376, -12094628, -6731288, -11089069, 8621610, 11237782, -475131, -5989869, -3265786, 3205656, -4147328, 781684, -18813030, -10001905, 8757438, -4848481, 258235, 8536784, --812823, 5260261, 4547834, -2503429, 5202816, -115964, -10032507, 11113228, -7853348, 481036, -614717, -6221260, 4102231, 6600291, -3930969, 7548405, 852551, -654983, -6959458, 8533563, --52076, -7027640, -2310693, -14015552, -5856188, -8031052, -1012002, 9526774, 2765422, -980326, -155693, -9097278, 2026688, 6874632, -9112310, 452582, 13942538, -5813238, 1364189, 984084, --9919764, -6038724, 6340446, 5239860, -16138876, 3175055, 12061342, -136902, 1435593, -6442, -2903935, -1000191, 7611756, -1824824, -321049, 893890, 1458141, -3537443, 871342, 2599529, -822486, 4441533, 1658394, -183073, -1668058, -3653407, -1035624, 1605244, -2213519, 1511829, --2269890, -156766, 3131031, 1591822, -2216740, -3093450, 150861, 6442, 6669011, -2789581, -540629, 3555696, 1471026, 3506841, 42270532, 9308268, -5456756, -8546985, -751619, -2759517, -7545184, -1750199, 6386080, 11881490, -4765803, 517544, -7860327, -5507759, 2601677, -1393180, -6204081, -11916387, -6880538, 5495948, 11905112, 7737921, -320512, 2719251, -2859911, -7213935, -5193153, 9175661, 9759776, 11635603, -9673340, -2393371, -5533529, -12140262, -1486059, 532039, --2604898, 5442798, 7339562, -112206, 3638374, -2258079, -12770012, -7063611, -17090748, -17469780, --5042829, 5722507, -2514167, -7792682, 14586246, 5408975, -569620, -13754096, -601832, -4305168, --9744744, 23085, -4448513, -6426345, -13504451, -1833414, -4977867, -14968498, 13422, 11276437, --7627862, -3724811, 4216048, -6495065, 2558190, -6436546, 9277666, -3064459, -8941048, -13997835, --22817014, 4413616, 3869229, 17353278, 7033546, 5950141, -74625, 5206037, -4097936, 5523328, --510027, 1890859, 2801393, 6569153, 3054796, 183610, -1211718, -415001, 2643552, 1563905, -6922414, 5345624, 3636227, 1100049, -1403917, -3736622, 2000381, 4407174, 404801, 207769, --838592, -3312494, -554588, -556735, -1548336, -1227824, -2494839, 2006824, 3055332, -2934000, --2909840, -235686, -379031, 1527935, 9427453, -33365454, -19110994, 17790292, -4665408, 1208496, --9241696, 7803419, -3224447, -12825846, 6146635, 17991082, 2250026, -15598784, 4376572, -3334505, --3630321, 10396505, 10655814, -1359894, -2216740, 22643604, 5003637, -3156801, -13900125, 6228777, --19918448, -16273631, -15113990, 6212134, -2882460, -1522566, 12933220, 5266704, -13190918, -10903311, -2840584, 12902619, 4361540, -1358820, 707596, 8639327, -6185827, -13798119, 18128520, -5223754, -1868848, 7436199, 1118839, 2626373, 18648212, 438624, 11876121, 652835, -12512850, 1928440, -2663954, -2472291, 2378338, 8613557, -6328098, -1796907, 2167348, -24592982, 6554120, 5179731, --144955, 6058588, 4620848, -9042517, 4347581, 34076808, 14593762, 8518531, 2463164, 8377871, --26096758, -12237436, 13212930, 664109, -114890, -9877351, 8834211, 10823318, 8955544, 1632088, -1886028, -3440806, 155156, -6065568, -2243047, 5048197, -1091459, -2983929, 2564096, 348966, -2462090, -3470871, -1517197, 1366873, -641561, 2627446, -4312147, -1343788, 3104188, -3302293, -2514703, 1060857, 341987, 251792, 50466, -2644089, 1421097, 2744484, -1277216, -1144072, --2980707, 1475858, -162672, -22269942, 15607374, 16975858, 5301601, 9422621, -6357089, 27016954, --3290482, 10385768, 6886443, -12272869, -5214091, -5595269, 15497316, -9163850, -3017215, 9968082, -8153996, -9006010, -2600066, -26275000, 4814659, -2803540, -7872675, 2408403, 593779, 2071785, -2306934, 9060234, 244813, 9912248, 1044751, 4893042, -2650532, -8386461, -9190693, 17177722, --6198175, -12235288, -10520522, -4596689, -5843303, 7518341, 4469451, 5816460, 7421704, 2377801, --9472550, 5473399, -15370614, -4876399, -13447006, 9280351, -16205448, -11429445, -3538516, -5304285, -4677757, 10929081, -8722542, 10323491, 16686485, 8458401, 16069620, -6684043, 21614422, 2099165, -18292266, 10555419, 2164664, -9711995, -24832428, -16577500, -13699872, -7596187, -7736847, -2309082, --11633993, 8783208, 14315126, -5444408, -11207717, -9987946, -8126078, -14916958, 9334038, 6961605, --4128537, -3759707, -5972152, 886911, -3442953, 8216810, -114354, 2193118, -4456029, -3590593, --6226629, -1005022, -7431904, -6887517, 7040525, -389231, 738198, 295816, 2492692, -2747169, --411243, -4186519, 3758, 142808, -329102, 2333241, 93416, -3405372, -2455648, -2411087, -565862, -3668439, -4264366, -5088463, 1265405, -1293322, 12483859, 6360847, -7101729, 21014202, -2376191, -20516522, 25617332, 1713692, -10912438, 9037148, -21041582, -4032438, -13397614, -4188667, --2374580, -4117263, -9578851, 2675765, -18182208, -7039452, -6558952, -24539832, 2975876, -17800492, --12650289, -19969988, 4000225, -15071577, -4551055, -5003100, 157840, 7577396, -6126234, 10671920, -547071, 14164802, -3308736, 12317429, 15537044, -18673444, -285615, 4984310, 11404212, 424665, -13713294, 4572530, 13222057, -301185, -10114648, -6380174, -979253, 8535174, -1978369, -3965329, --867047, 15825881, 10001905, -3800509, -13075491, 4348118, 7170448, 5070746, 14050449, -18864570, --13938243, -4016331, 1318555, -5340255, 142271, -5446019, -11782169, 32991792, -16325708, -18979998, -14126684, 8095477, 12271795, 3719979, 4506495, 2491081, 7171522, -6838125, 18967650, -3373160, -4646618, -3725347, 2532420, 1079647, -1047435, 12036646, 1508070, 995359, -11934104, 5334887, -1777580, -1819456, -9720048, -1066226, -2015413, 182536, -3099356, 8638790, 2010045, 2356863, --7025493, 4712653, -3341485, 891743, 4198331, -261993, -2080375, -2344515, -6250251, 3540127, -6382322, -3134789, -709207, -2354716, 947577, -3727495, -8409009, -2648384, -284005, -5867999, -5970542, -629213, -811749, 1903744, -5651640, -6518150, -1808718, 2513093, -4290673, -5714454, -16763257, 12151536, 19800336, -6670084, -4769025, -27159762, 31510028, 14279156, -41722388, -22502944, -13506598, 18501108, 18832894, -12148852, -9664213, 22543746, 5476084, 5081483, 15811385, 12579422, --23029614, 6965900, 9843528, -1853815, 11010686, 1975685, -2877628, 2137820, -7437810, 38487200, -10201084, 4903779, -971736, -4902169, -2507724, -22029424, 4286378, 6308233, -5071820, -7310035, --35372276, -17069810, 7503845, 6051072, -11556146, -11513734, -1527935, -17012902, 7059853, 6133214, --2381559, 6916508, 14053670, 566936, -656056, -4614406, -7402376, -2579128, 1322850, -26271242, --3412889, 6000606, 15999290, -28423556, 6346888, 9998147, -2163053, -13457206, -11960947, 21215528, -21169894, -3230889, -13121662, -25151328, 5322538, 9884867, 5305895, 270583, -27210766, 11355894, -24870008, -8549132, 2854006, 7648800, -10160819, -16438987, -8565775, 2335389, -5008469, -1444720, --7635915, -6768869, -5567888, -2529736, -2169495, 3164317, -559420, -650688, -6962142, 2731599, --3254512, 1349694, 83215, 2107755, 4269198, 4787815, -7788923, 2984466, -6015639, -10322417, --5319854, 1303523, -1009854, 4286914, -969589, 2737505, 6017786, 145492, -265214, -5426691, --2931852, 7794829, 4041564, -3481608, -2027225, -927713, -5054640, 12414066, -9137543, 3364570, --7613367, -6766184, 1189169, 8399345, 16850768, -31044024, -40450000, -28159416, -36188856, 31392990, --20959440, 12615930, -3539590, -25469156, 4552129, -6942815, -9450002, -33057290, -30247844, -22629108, --8625368, 1134945, -17508972, -5113696, 4611721, 14172855, 1112933, -8891656, 18254, -9506373, -13622563, -17210470, 23696946, 20388210, -4915053, -6556268, -28156194, -16458315, -17136920, 2004139, -3747896, -4640176, 22950694, 6492380, 18595060, 3614752, -2237678, -8514236, 16720308, 11515881, -5215701, -16899086, 8968965, -28535762, -3229279, -3088082, -18954228, -3177202, 179852, 21705690, -14370424, 346819, 10011569, -469225, -21527986, 10865730, 2972117, 17834852, -10205916, -20729660, -12252468, -37194952, -8589398, 13062606, -5650567, -5987722, 9013526, -2498597, -7402913, 6795712, --3182571, -23901494, -21035140, -3548180, 9710921, 15762530, 22198538, 22247930, -9567040, -7679402, -4294968, 8009577, 7198365, 2963528, -10032507, 8636642, 55298, -1935420, 1013075, 5321465, -8941585, -2735894, 1409823, 8475044, -2108829, -260382, -8769786, 4228932, -2014340, -688269, -6992744, -1484448, -3322157, 3111167, -9969156, -3723200, 9846749, 2775623, 3090766, -3619047, --2485176, -1561758, -7996156, -1117228, -4531728, 5864241, -17204566, 203474, 12631499, -40703404, --3524021, -26000658, 1832340, -19209778, 17517560, -13785234, -1189169, 3167539, 6699612, 20590610, -7236483, -9647570, 22739168, 6786049, -38009924, 6104759, -22702124, -1828046, 4632659, -3396246, -19152870, -5784784, 3697967, 4602058, 1930588, -12448426, 19441706, -11272142, -784368, -22593676, -253403, 3641059, -3273839, -8048769, -10014253, -11872363, 29344290, 1012539, 15329275, -26034482, -3199751, -469762, 9166534, 15309411, -17522392, 31481036, 45806364, -2214593, 4672388, -16026134, -7564511, 10467372, -8517457, 2142652, 8848706, 17545478, -302795, 920197, -5206574, -15489263, --22818088, 11648488, -17045652, -7430294, -11072426, 4903242, 15819438, 13838921, -2493229, 5133023, --31068720, 20604032, -3591130, 4407174, -8937827, 20134270, -27858232, 33455110, 24676198, 27859842, --11034845, -760746, -27302570, -15035607, -9994389, 8971650, 7914014, -22905598, -16486232, 551903, --5570573, -16731045, 179315, -11604465, -13449690, -5199058, -1826435, 976568, -8819715, 1542430, -3267396, 13753022, 12589086, -1992865, 11878806, -5810017, -14357002, -8124468, -2916283, -7404524, --919660, -5515275, 8442832, 2443837, 32020592, 4162360, -10769630, -3805341, 3039226, -16668768, --10202695, 3929358, 845572, -4335233, 1836635, -8053, -17992154, -1918240, 12324946, -8970576, -12924630, 51155208, 14185740, 37294276, 11464341, -38196756, 15151034, 11038603, -13156559, 2942053, -24559696, 1422708, 23493472, 21415244, -25062208, 13935021, -25072408, -16407849, -2670396, 50070728, -14973330, -22153442, 20886962, 13966160, -27711666, -11782169, -2194192, 28156194, 3794604, -25177636, --14652818, -493384, -7297687, 15766288, 21990232, -7763691, 19303730, -12335683, -17420388, -286152, -40104256, 4065187, -23523536, 13509283, -1403917, -2002529, 11001559, -26036092, -23075786, -21307870, -15529528, -13847511, 4799089, 7052337, 23855858, 12267500, 24533926, 2960843, -1381369, 20574504, -36887328, 22422414, -37096168, 1081258, 3271691, -5913096, 6793565, 10526428, -28715614, -3962107, -5325760, 5244155, -34142844, -31752156, -18285286, -19165754, 33302102, 12753369, 1260573, 15148887, --27712740, 11641509, 7295539, 5337034, -2720325, -5950677, 22920092, 14276471, -9581535, 4292283, --7297687, 15477452, -4663798, 1386738, 2891587, 2569464, 11005854, -1467805, -18637474, -450435, -3151969, 5135171, 9150428, -2238752, 557272, 7385733, -14510547, -8108899, -1607392, -25556130, --4255239, 7493108, -2201171, 3125126, 14525579, -1794223, -10613938, 2530273, 3304977, 9945534, -11198053, -10752451, -7124277, -411780, -9701257, -5804649, -18331458, -21149492, 5673652, 674847, --9971303, -7773891, -10172093, -19220516, 14369887, -38513508, 27851252, 31336082, 8556112, 34117608, --34939024, -16935056, -9517111, -49957448, 28131498, 2942590, 17387102, 23087596, 22385370, 1855426, --775778, 22958748, -3680250, -26988500, -28215250, 17171816, -31868120, 31176094, -8965744, 6941741, -30701500, 27875412, -14009110, 42377904, -24532854, 2880313, -25504590, 4264366, -8743480, 16779900, -5611912, -17908404, 16167868, 24788404, 36149664, -20759188, 7710003, 22376780, -30547418, 1575179, --12290586, -43963824, -19010598, 11956652, -24260122, 8811662, -20366734, -310311, 29706142, -13919452, -12578885, 34432752, 24447490, 9356049, 45526116, -70727912, -13370233, 23879482, -2734821, 14003741, --21963390, -38120520, 46563888, -456877, -23451058, 10265509, 29473140, 73338712, 27699854, -55071680, --30172682, 19071266, 20464446, 9103720, -38606924, -3127273, 8488466, -11691438, 26100516, 9581535, -16670379, 20072530, 14891725, -9882183, 11506217, -30419106, 4442607, 16662326, -1948305, -16008954, -9535364, -9664750, 16298327, 18267570, -7673496, -14698452, -4012573, 33495376, -5920076, -3607773, --12990665, 15308337, -12899397, -7675107, 9621800, -5904507, 31309774, -2090039, -7729868, 31768262, --2794413, 7653095, 19289772, -1160178, -1628866, 2155537, 2879776, -14490146, 6743636, 1127966, --21453898, 14914811, -6645925, 28001040, -15062987, 8657043, 2605435, 37443524, -32885490, -2972117, --15693810, -19490562, 30054034, -11652783, 39454108, -3876208, -30338576, 47305844, 68390376, -9703405, --21748640, -32952600, 7925289, 36361192, 7224135, -7580618, -22552874, 5454609, 5443871, -4931160, -5699959, -3141232, -11020886, -11259794, 10573673, 15021111, -1029718, 20274394, -19321448, 41473816, -31286152, 18085570, -1373853, 2585570, 6027450, -21751324, -19012210, -21072720, -11003706, -5662915, -13404056, 11796665, 22602266, -10672994, -2510945, -9431748, 25703232, 50020800, -11589969, -31872952, --20458002, -1110786, -43212204, 33949568, -58757300, 17219060, 25186762, 25882546, -25489020, 6221260, -26230976, -59463284, -28002650, 12492449, -6091874, -29669098, -26176752, -3168075, -13600014, 44654776, -19284940, -15992848, -14715095, -24372866, 68266360, 14901926, 35793720, -2259153, 10647224, 13156559, -15526844, -21938692, -2566243, 28562070, 19757924, 11973832, -9037148, -11788611, 303869, 9146133, -13334800, 9183714, -17234630, 2857764, 502511, 4905390, 12968117, 13045963, -18042084, 8929774, --10986526, -13511430, 1802276, 14756971, 6191196, -8267275, 2333778, -852014, -2262374, -7000797, -27529130, -7645042, 452582, -15857019, 4201552, -5615670, 18300856, 6193880, -3434900, -9167608, -10593537, 8862665, -12081206, 1285269, -19918984, -7588671, 5256503, 8810589, 11940546, 315680, -12495134, -2455648, 2433636, 6405407, -25191594, 7248294, 39902392, 820339, -12960064, 32602560, -24004572, -7215545, -20787642, -32471026, 6532109, 62753768, 14273250, 31999654, -2442226, 2465311, --2155537, -7779260, 396211, 2542621, 15684147, 4701379, -11870216, 10159208, -10342281, -12150462, --12968117, -5906, 13051332, 2413772, 10509785, 10537165, 9159555, -9202504, -15287936, 4646081, --10481868, -27456116, -7672422, 5847061, -9105331, 31404800, -32369022, 26338350, -8094403, -97174, -39766028, -6475200, -736050, 51197620, -7569343, -21237540, 4118337, -18234284, -3746822, -17227114, -57671212, -16491064, 14154065, -14044543, -5862094, -8121783, 9836549, -14688788, -34846680, 15266998, --3730716, -39242580, 20704964, -10459856, 22005264, 48744656, -24249386, -756451, -2226941, -7469485, --26117696, -4821101, 24470576, 9499394, 15125264, -22426708, 6881612, 3762928, -21201570, -6024229, -5068062, 10886668, 14068702, 980326, 2914672, 8851928, -1873143, -10829223, 15824270, -6269042, --4439386, 14023068, 2185065, -4020626, 21348672, -1519882, -1333051, 72478, 7146289, -6425808, -10901701, -8304856, -3856881, -6574521, 5793911, -251792, -520765, 2990908, 10037339, -11698417, -2774012, -1618129, 7270306, 2044404, -1997160, 11974369, -7075959, 6451041, -1828582, 3531537, -1071594, 8979166, -1068910, -13750338, -186294, 65972308, 33182918, 69208568, -38788924, -9780177, -22610318, -21328808, 16328392, 71198208, 16683264, 10512469, -18850074, -17389786, 20213726, -10492605, -28637232, -4458176, -6665253, -8075613, -40876276, 10092636, 48962628, -25632364, 29582660, 26149908, --16674137, -4718559, 20343112, -32304060, 16201154, -2017024, 24526410, 8621073, -20441896, -6269579, --41064720, -20732880, 19182398, 14774687, 31829466, 50044960, 5268315, 1103807, -43105904, -25997438, --25753698, -20858508, 11243151, -17246442, -5058398, -3707631, 12868796, -32565516, -5339181, 17369922, -8768176, 27461484, -3653944, -12649752, 26960584, -4544076, 16520055, -20430622, -12556874, -2865817, --6952479, 13585518, 19620484, 28103582, 7830263, 2644626, -19170050, -5034776, -9840307, 23600308, -254477, 35189740, 6053220, 26598732, -25512642, -8776766, -177704, -252866, 18997714, -2646774, --9438191, -4760971, 4672925, 1695975, 4948339, 9164386, 7864085, -4440460, -5669357, 748398, --3345780, 7794829, 7926362, 2245731, -6602439, 682900, -8660265, -3241090, -1881733, 15369004, -5386963, -1552094, 3923453, -9613747, -11806865, -7598334, 3777961, 8626442, -7018514, -284542, -157303, 6542846, 3442416, -518080, 6568616, 1445793, -293668, -6021544, 3139621, 2318209, --2585034, 1101122, 2016487, -8922258, -17722646, -67881960, 2110977, 108304040, 98347768, 91809760, -39410620, -39497056, -53908284, -54155780, -47757888, -88673360, -62717796, -61828200, 47894256, 72704672, -59939488, 94730336, 79441328, 16435766, -3339337, -34368328, -65949760, -39905080, -69315944, -38170984, --22984518, 34897, -8981850, 17134772, 30221538, 50466404, 32288490, 53041772, 40955196, 42075112, -3617436, -35254164, -15589658, 882616, -37835976, -50724636, -65216932, -64749316, -45383308, -6761889, -32287416, 12309376, 46832860, 32585916, 53370336, 46923056, 51760260, 59367724, 32424856, -4908611, --9334038, -39297340, -31593242, -105557408, -83882320, -67791224, -52431352, 5820755, -22719304, 1173600, -72179608, 88445728, 121742992, 76478336, 46470472, 31098248, 7633768, -46848968, -42348376, -65186868, --83562880, -71349608, -65961032, -31414464, 5057861, 33250564, 55479704, 54183696, 46675020, 28934658, -31419834, 13048648, 8674760, -1823214, -25482578, -22770842, -20219096, -23164906, -11874511, -25852482, --17977660, 5998996, 2468533, -15163382, 8352101, 20716774, 12235288, 23682450, 37696392, 38603168, -17457432, -24376624, -10121627, -3684545, -48795124, -52086144, -44863616, -19155554, 14295262, 21858700, -18776524, 30779346, 35443144, 43070468, 29066728, 17439178, -6361384, -29384556, -29272886, -33239826, --44056700, -31784906, -17182016, 14857366, 24358908, 15302432, 9760313, 27823872, 19276350, 11260331, -2960306, -4459787, -8688182, 659814, -10488847, -13080860, -4423817, 4080756, -7173669, -5834176, -1503239, 5574868, 1040456, -3068754, -3556233, 4147328, 283468, -2434710, -4254165, 1362042, -6297496, 7384660, 1348083, 6340983, 6000070, 3050501, -1664837, -1547262, -5073967, -4910758, --7512435, -4217658, -4878546, -1313186, 649077, 1353452, -466004, 2975876, 3819300, 5734855, --1509144, -677531, 1962800, 2957622, -2404645, -217433, -770947, 363998, 1316944, 4271345, --274878, 1339493, 771484, 955093, -2640868, -3868155, -6614250, -4076461, -5286568, -3925063, --4258460, 1277216, 3405372, 6363531, 6594923, 10074920, 7926362, 7090454, 2738579, 459025, --4954245, -6372121, -9303436, -8071854, -8845485, -5111548, -3101503, 838592, 1890323, 6354941, -5394479, 6966437, 5550709, 5234492, 962610, 907312, -1959042, -1920387, -4365298, -2586644, --3185255, -829466, -1946157, 120259, -849867, 1138166, -242666, 1372242, -259846, 1190243, --397284, 1078574, -589484, 840740, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +3420942, 2815888, 6496675, -8848706, 1939178, 5733245, 10643466, -1203665, 6017786, -310848, +5468030, 1248762, 8361228, -228707, -2647847, 5538361, 8014409, 7487739, 4502737, 1158567, +-3027415, -2483028, 794032, 3792456, -1911797, 1731946, 519691, 4320200, -2074469, -179315, +1135482, -5282810, -2995203, -1592896, -5414880, 1250909, -1499481, -100932, -701690, -4596689, +3576097, 5362267, -1081258, 382252, 536871, -917512, 5785321, -7026030, 16106, 2834679, +810138, 870268, -1639604, -5826660, -1441498, 2197413, 2691334, 2904472, -491237, 53150, +71404, 1123134, -949188, 6001680, 200790, -578747, -3934190, 489626, -2809446, -2235531, +2416456, 2554969, 6265821, 175557, 6161131, 652298, 693100, 368830, -3212636, 156766, +-1124745, -1691143, 690953, 1919850, -1211181, 750546, -1254131, 1516124, -1598802, -545998, +-807991, 860067, -492311, 801011, -700080, 951872, 1771137, 829466, -824634, -268435, +-411243, -464393, 525597, 332860, -396211, 6951942, 11244761, 1516660, 5592048, -2024003, +3316789, 4354560, -1348083, -3474092, 5890548, 10189273, -2007897, 1139777, 3926137, -4864588, +3022583, 4355634, -8910983, 2512556, 857383, -1992865, -10737, -9257802, 365609, 2605435, +-4417374, 824634, 144418, 5945309, 4228932, -2219961, -645319, -555125, -6321118, -4233764, +682363, 2557653, 559420, 2840584, -4180077, 637803, 2070711, 438624, -3870839, -2817499, +-866510, 1351304, 3111167, 3237332, 2142652, 3777961, 3679176, -4134980, -1278827, 175020, +5234492, -791348, 3752728, -2468533, -2573222, -786516, -4725001, -2168959, 955093, 2757369, +-4034048, 3944391, -1124745, -1169842, -796716, -1589138, -2045478, 819802, 3053185, 1147830, +5102958, -7088307, -5729487, -1254667, 2109366, -70867, -1176284, 1088774, 149250, 1319629, +2148558, 3618510, 54761, -209380, 846645, -332323, -61740, 560493, -1669669, -868657, +-3443490, 1372242, 6522982, 9238475, 5347235, -2310693, 3956202, -2407329, -1631014, -7881802, +-6287832, 2857764, 6038187, 5924371, 6156299, 1388348, 328565, 3831648, -5092221, 5134634, +4142496, 398895, 3558381, 9164923, 6220187, 1761474, -6576132, 209917, 2207613, 1437740, +1083406, -7182259, 1723356, 1345935, 4819490, 5341329, -1672353, 3438658, -2591476, -2854006, +3874061, 2220498, -6894497, -6501507, -2858301, -3642669, -2728915, -2888366, -7964480, -7183333, +-652298, 2626909, -45634, -734976, -5366025, 741419, 6370510, -1761474, -2011655, 2426657, +-11811, 4635344, 2317135, 2382633, -2971044, -3639985, 6841883, 3159485, -2736431, 4536559, +-598074, 3543885, -2968896, 584652, 5051956, -1886028, -1634235, 3673271, 448824, 1482838, +2170569, -2479270, 2835215, -1146756, 2323577, 2371359, 1810329, -1576253, 593779, -767189, +-1366873, -1717987, 101469, 245350, 1145146, 1016297, 268972, -52613, 899796, 317291, +627602, -12730283, -7526394, -2330557, 2397666, -5235565, 1583769, -1417876, 3650722, -870268, +-7157563, -5657009, 4920959, 4063576, 10197863, 9043054, -1388348, 6549289, -9838159, -1575716, +7617662, 2323577, 1754494, -983011, -3224447, -1472637, 1040456, -852014, -313533, 3888556, +-4830765, 1099512, 1735167, -90194, 3025268, -3284039, -2726767, 1775432, -2123861, 2745021, +-5395553, 920197, -3246459, -1244467, -3613678, -2667175, -4103305, -6038187, 3707094, -10737, +6329171, -5900748, -5088463, -12348, 1203665, -667331, -1229434, 449361, 3809636, 1859721, +812823, -2578054, -2525978, -1396938, -4745402, 784368, -1235340, 586800, -230854, -5066988, +-435402, -372052, -5406290, 181462, -1024887, 660351, -916439, -5979668, 537408, 2735357, +-1199370, 4006131, 1095217, -2090575, 1670742, 4202626, 1369558, 754304, 941672, -848256, +517007, 3296924, -255014, -481573, 1201517, 1376537, 519691, 1117765, 234076, 491237, +-2178622, 280784, -170188, -1030255, -780073, -747861, -1107028, 210990, -907312, 4509716, +-6888591, 2850785, -7693897, -1252520, 339302, -5571110, 5283347, 4139275, -11403138, -1067299, +1875290, -966905, -5008469, -6582038, 1340030, -3270618, -5581847, -2649995, 3253975, 3003256, +8028368, 10574209, -945430, 9459129, -5780489, 3774740, 4050691, -744103, 3990025, -2216740, +57445, -521839, -1959579, -912681, -2189897, 7897908, -465467, -5729487, -1416802, 4001299, +2405182, 3218004, 599148, -2629057, 5681705, 11716671, 702227, 1264868, 659278, -772020, +1819456, -687195, 6622303, -4985384, 6334003, 4499515, -4057134, 2165737, 4119411, 2929705, +-4857608, -5143760, -10375567, -1596117, -996969, 1413044, 3985730, -874563, 2589329, -780610, +-2769180, -2641405, 5331665, -1118302, 5657009, -8266202, -3318399, 2028835, -5323075, 1485522, +5692443, 649077, -54761, 528281, 1204202, 893890, -3228205, -918586, -535260, 580894, +-581431, 1160178, 1454383, 869194, -940061, -2045478, 2359011, 1029718, 914828, 736587, +682363, 290447, 55298, -924492, 983011, 585726, 382789, 293132, 1034550, 817118, +1241246, -1319092, -878858, -1568200, -1573569, -293132, 1246614, -861141, -591095, 814970, +274878, 638340, -265751, 230854, 2898566, 1447941, 42950, 4161823, 11630771, 13954886, +-3699041, -200790, 2812667, -1971927, 8861591, 8868571, -5606543, 8697846, 6642167, 2720862, +3813394, 3620658, 1692754, -625455, 532576, 1279900, -4821638, -5660230, 1430224, -1490354, +-158914, 1132798, -5202279, 5296232, 10282689, -189515, -6302865, 10271951, 1151051, 447213, +3899830, -1642825, -3118683, 1613297, -3889630, 1661079, 10275709, 4575751, -150861, 3842385, +5553393, 14752139, -2461553, 6447283, -1325534, -6208375, 4104915, 523449, -2180770, 3018825, +8890582, 2444910, 1526324, 14496, 3522947, 13079249, 5735929, 1763621, 1250909, 3551938, +-3789235, 6764574, -1764695, -12652437, 1503239, -1224603, 7657927, 9232569, 3877282, -3734474, +-3580929, -3163780, -506806, 2975876, 216359, 2063732, 1256815, 2156611, 5746130, 2656437, +-4640176, -1844152, 593242, 1752347, 252866, 35970, 131533, -2371359, 2627983, 780073, +501974, 440771, 502511, 397821, 1960116, -662499, 1420024, -1304060, -464930, -2145873, +428423, -730144, -158914, 287226, 929324, -15742666, -1642825, -6752226, -7714298, -2199023, +-5472325, 139050, 4903779, -7465727, 7703024, -16360067, 2406256, -4937602, -8550206, -11741904, +12208981, 5911486, 871342, -10423886, -6637872, 3700651, -13270375, -9481140, 3255048, 2692945, +13648332, -1906966, 1209570, 9904731, -5901822, 9724343, 3463354, 3467112, -1851131, -6099928, +-624381, 8067559, -4365298, 542777, 10394358, -3928285, -2978560, -5157719, -6068789, -5465883, +-3912715, -8504572, -957778, 2338610, -2796024, 1665374, -2672544, -4439386, 5862094, -7619272, +4583267, -6504728, -7922604, 208843, 6619619, 246961, -1923072, 2422362, -5270462, -2868501, +-7406671, -13482976, -6231461, 1701344, -3981435, 14994268, 6088653, -10795937, -5297842, -1770063, +-3778498, 4677220, 10340671, 6564321, -4943508, 4560182, -5871221, 3349001, 572841, 4567698, +-5196911, -1453846, 501437, -2520072, -4430259, -3955128, 729071, -464930, -1005559, 2121714, +932008, 139586, -1446330, 1174674, -260919, -1379758, -3220689, -306016, -1642288, 49392, +1474784, -1308354, -3587908, -660351, -1509144, -6090264, -842887, -1889249, 16748762, 11166915, +11409581, -3229816, -16617765, -1168231, -8597451, 2251637, 3473555, 8986145, -4330401, 4016331, +-6939594, 1287953, -6142877, -15156940, -8428873, 5982353, -5763309, -11984569, -11578158, -10462003, +-16729434, 2188823, -5980205, -12463458, -11518565, 2118493, 15743203, -2000918, -2844879, -5198521, +-9845676, 2121177, -4030827, 1184337, -12236899, 894964, -12738873, 1877438, -1207423, 6869800, +5040144, 5738613, 2700461, -352187, 4476430, -2958159, 8985072, 2700998, 4457639, 2905546, +-3182034, 3386045, 9055939, -1086090, 4978941, -1192927, 14347875, 1990181, 5279052, 828392, +-8325794, -6116034, 108448, -2770791, 1700807, -1992328, 4638028, 4408784, 5420249, -2457795, +3016678, -11031623, 5756867, 16409996, -8032126, -1540820, 4159139, -9270687, -813359, 5983963, +-3854196, -469762, -2119030, 5218386, -5408438, -1136556, 1253057, -2815351, 1253594, -904628, +1990181, -2598455, -2868501, 3119757, -1520418, -2866891, 1942936, -1066763, -97711, -4097399, +3054259, 1184337, -857383, -590558, 1672890, 756988, 1618129, 1399086, 160524, -1699196, +-3334505, -825707, 1726577, -8201777, -23663660, -3953518, -8244727, -12499965, 6735583, -23829552, +-3066607, -8499740, -4590783, 6834367, -7558069, 10027138, 8694624, 1343788, 7841000, 653372, +4151623, -6243809, -10933376, -12094628, -6731288, -11089069, 8621610, 11237782, -475131, -5989869, +3265786, 3205656, -4147328, 781684, -18813030, -10001905, 8757438, -4848481, 258235, 8536784, +-812823, 5260261, 4547834, -2503429, 5202816, -115964, -10032507, 11113228, -7853348, 481036, +614717, -6221260, 4102231, 6600291, -3930969, 7548405, 852551, -654983, -6959458, 8533563, +-52076, -7027640, -2310693, -14015552, -5856188, -8031052, -1012002, 9526774, 2765422, -980326, +155693, -9097278, 2026688, 6874632, -9112310, 452582, 13942538, -5813238, 1364189, 984084, +-9919764, -6038724, 6340446, 5239860, -16138876, 3175055, 12061342, -136902, 1435593, -6442, +2903935, -1000191, 7611756, -1824824, -321049, 893890, 1458141, -3537443, 871342, 2599529, +822486, 4441533, 1658394, -183073, -1668058, -3653407, -1035624, 1605244, -2213519, 1511829, +-2269890, -156766, 3131031, 1591822, -2216740, -3093450, 150861, 6442, 6669011, -2789581, +540629, 3555696, 1471026, 3506841, 42270532, 9308268, -5456756, -8546985, -751619, -2759517, +7545184, -1750199, 6386080, 11881490, -4765803, 517544, -7860327, -5507759, 2601677, -1393180, +6204081, -11916387, -6880538, 5495948, 11905112, 7737921, -320512, 2719251, -2859911, -7213935, +5193153, 9175661, 9759776, 11635603, -9673340, -2393371, -5533529, -12140262, -1486059, 532039, +-2604898, 5442798, 7339562, -112206, 3638374, -2258079, -12770012, -7063611, -17090748, -17469780, +-5042829, 5722507, -2514167, -7792682, 14586246, 5408975, -569620, -13754096, -601832, -4305168, +-9744744, 23085, -4448513, -6426345, -13504451, -1833414, -4977867, -14968498, 13422, 11276437, +-7627862, -3724811, 4216048, -6495065, 2558190, -6436546, 9277666, -3064459, -8941048, -13997835, +-22817014, 4413616, 3869229, 17353278, 7033546, 5950141, -74625, 5206037, -4097936, 5523328, +-510027, 1890859, 2801393, 6569153, 3054796, 183610, -1211718, -415001, 2643552, 1563905, +6922414, 5345624, 3636227, 1100049, -1403917, -3736622, 2000381, 4407174, 404801, 207769, +-838592, -3312494, -554588, -556735, -1548336, -1227824, -2494839, 2006824, 3055332, -2934000, +-2909840, -235686, -379031, 1527935, 9427453, -33365454, -19110994, 17790292, -4665408, 1208496, +-9241696, 7803419, -3224447, -12825846, 6146635, 17991082, 2250026, -15598784, 4376572, -3334505, +-3630321, 10396505, 10655814, -1359894, -2216740, 22643604, 5003637, -3156801, -13900125, 6228777, +-19918448, -16273631, -15113990, 6212134, -2882460, -1522566, 12933220, 5266704, -13190918, -10903311, +2840584, 12902619, 4361540, -1358820, 707596, 8639327, -6185827, -13798119, 18128520, -5223754, +1868848, 7436199, 1118839, 2626373, 18648212, 438624, 11876121, 652835, -12512850, 1928440, +2663954, -2472291, 2378338, 8613557, -6328098, -1796907, 2167348, -24592982, 6554120, 5179731, +-144955, 6058588, 4620848, -9042517, 4347581, 34076808, 14593762, 8518531, 2463164, 8377871, +-26096758, -12237436, 13212930, 664109, -114890, -9877351, 8834211, 10823318, 8955544, 1632088, +1886028, -3440806, 155156, -6065568, -2243047, 5048197, -1091459, -2983929, 2564096, 348966, +2462090, -3470871, -1517197, 1366873, -641561, 2627446, -4312147, -1343788, 3104188, -3302293, +2514703, 1060857, 341987, 251792, 50466, -2644089, 1421097, 2744484, -1277216, -1144072, +-2980707, 1475858, -162672, -22269942, 15607374, 16975858, 5301601, 9422621, -6357089, 27016954, +-3290482, 10385768, 6886443, -12272869, -5214091, -5595269, 15497316, -9163850, -3017215, 9968082, +8153996, -9006010, -2600066, -26275000, 4814659, -2803540, -7872675, 2408403, 593779, 2071785, +2306934, 9060234, 244813, 9912248, 1044751, 4893042, -2650532, -8386461, -9190693, 17177722, +-6198175, -12235288, -10520522, -4596689, -5843303, 7518341, 4469451, 5816460, 7421704, 2377801, +-9472550, 5473399, -15370614, -4876399, -13447006, 9280351, -16205448, -11429445, -3538516, -5304285, +4677757, 10929081, -8722542, 10323491, 16686485, 8458401, 16069620, -6684043, 21614422, 2099165, +18292266, 10555419, 2164664, -9711995, -24832428, -16577500, -13699872, -7596187, -7736847, -2309082, +-11633993, 8783208, 14315126, -5444408, -11207717, -9987946, -8126078, -14916958, 9334038, 6961605, +-4128537, -3759707, -5972152, 886911, -3442953, 8216810, -114354, 2193118, -4456029, -3590593, +-6226629, -1005022, -7431904, -6887517, 7040525, -389231, 738198, 295816, 2492692, -2747169, +-411243, -4186519, 3758, 142808, -329102, 2333241, 93416, -3405372, -2455648, -2411087, +565862, -3668439, -4264366, -5088463, 1265405, -1293322, 12483859, 6360847, -7101729, 21014202, +2376191, -20516522, 25617332, 1713692, -10912438, 9037148, -21041582, -4032438, -13397614, -4188667, +-2374580, -4117263, -9578851, 2675765, -18182208, -7039452, -6558952, -24539832, 2975876, -17800492, +-12650289, -19969988, 4000225, -15071577, -4551055, -5003100, 157840, 7577396, -6126234, 10671920, +547071, 14164802, -3308736, 12317429, 15537044, -18673444, -285615, 4984310, 11404212, 424665, +13713294, 4572530, 13222057, -301185, -10114648, -6380174, -979253, 8535174, -1978369, -3965329, +-867047, 15825881, 10001905, -3800509, -13075491, 4348118, 7170448, 5070746, 14050449, -18864570, +-13938243, -4016331, 1318555, -5340255, 142271, -5446019, -11782169, 32991792, -16325708, -18979998, +14126684, 8095477, 12271795, 3719979, 4506495, 2491081, 7171522, -6838125, 18967650, -3373160, +4646618, -3725347, 2532420, 1079647, -1047435, 12036646, 1508070, 995359, -11934104, 5334887, +1777580, -1819456, -9720048, -1066226, -2015413, 182536, -3099356, 8638790, 2010045, 2356863, +-7025493, 4712653, -3341485, 891743, 4198331, -261993, -2080375, -2344515, -6250251, 3540127, +6382322, -3134789, -709207, -2354716, 947577, -3727495, -8409009, -2648384, -284005, -5867999, +5970542, -629213, -811749, 1903744, -5651640, -6518150, -1808718, 2513093, -4290673, -5714454, +16763257, 12151536, 19800336, -6670084, -4769025, -27159762, 31510028, 14279156, -41722388, -22502944, +13506598, 18501108, 18832894, -12148852, -9664213, 22543746, 5476084, 5081483, 15811385, 12579422, +-23029614, 6965900, 9843528, -1853815, 11010686, 1975685, -2877628, 2137820, -7437810, 38487200, +10201084, 4903779, -971736, -4902169, -2507724, -22029424, 4286378, 6308233, -5071820, -7310035, +-35372276, -17069810, 7503845, 6051072, -11556146, -11513734, -1527935, -17012902, 7059853, 6133214, +-2381559, 6916508, 14053670, 566936, -656056, -4614406, -7402376, -2579128, 1322850, -26271242, +-3412889, 6000606, 15999290, -28423556, 6346888, 9998147, -2163053, -13457206, -11960947, 21215528, +21169894, -3230889, -13121662, -25151328, 5322538, 9884867, 5305895, 270583, -27210766, 11355894, +24870008, -8549132, 2854006, 7648800, -10160819, -16438987, -8565775, 2335389, -5008469, -1444720, +-7635915, -6768869, -5567888, -2529736, -2169495, 3164317, -559420, -650688, -6962142, 2731599, +-3254512, 1349694, 83215, 2107755, 4269198, 4787815, -7788923, 2984466, -6015639, -10322417, +-5319854, 1303523, -1009854, 4286914, -969589, 2737505, 6017786, 145492, -265214, -5426691, +-2931852, 7794829, 4041564, -3481608, -2027225, -927713, -5054640, 12414066, -9137543, 3364570, +-7613367, -6766184, 1189169, 8399345, 16850768, -31044024, -40450000, -28159416, -36188856, 31392990, +-20959440, 12615930, -3539590, -25469156, 4552129, -6942815, -9450002, -33057290, -30247844, -22629108, +-8625368, 1134945, -17508972, -5113696, 4611721, 14172855, 1112933, -8891656, 18254, -9506373, +13622563, -17210470, 23696946, 20388210, -4915053, -6556268, -28156194, -16458315, -17136920, 2004139, +3747896, -4640176, 22950694, 6492380, 18595060, 3614752, -2237678, -8514236, 16720308, 11515881, +5215701, -16899086, 8968965, -28535762, -3229279, -3088082, -18954228, -3177202, 179852, 21705690, +14370424, 346819, 10011569, -469225, -21527986, 10865730, 2972117, 17834852, -10205916, -20729660, +12252468, -37194952, -8589398, 13062606, -5650567, -5987722, 9013526, -2498597, -7402913, 6795712, +-3182571, -23901494, -21035140, -3548180, 9710921, 15762530, 22198538, 22247930, -9567040, -7679402, +4294968, 8009577, 7198365, 2963528, -10032507, 8636642, 55298, -1935420, 1013075, 5321465, +8941585, -2735894, 1409823, 8475044, -2108829, -260382, -8769786, 4228932, -2014340, -688269, +6992744, -1484448, -3322157, 3111167, -9969156, -3723200, 9846749, 2775623, 3090766, -3619047, +-2485176, -1561758, -7996156, -1117228, -4531728, 5864241, -17204566, 203474, 12631499, -40703404, +-3524021, -26000658, 1832340, -19209778, 17517560, -13785234, -1189169, 3167539, 6699612, 20590610, +7236483, -9647570, 22739168, 6786049, -38009924, 6104759, -22702124, -1828046, 4632659, -3396246, +19152870, -5784784, 3697967, 4602058, 1930588, -12448426, 19441706, -11272142, -784368, -22593676, +253403, 3641059, -3273839, -8048769, -10014253, -11872363, 29344290, 1012539, 15329275, -26034482, +3199751, -469762, 9166534, 15309411, -17522392, 31481036, 45806364, -2214593, 4672388, -16026134, +7564511, 10467372, -8517457, 2142652, 8848706, 17545478, -302795, 920197, -5206574, -15489263, +-22818088, 11648488, -17045652, -7430294, -11072426, 4903242, 15819438, 13838921, -2493229, 5133023, +-31068720, 20604032, -3591130, 4407174, -8937827, 20134270, -27858232, 33455110, 24676198, 27859842, +-11034845, -760746, -27302570, -15035607, -9994389, 8971650, 7914014, -22905598, -16486232, 551903, +-5570573, -16731045, 179315, -11604465, -13449690, -5199058, -1826435, 976568, -8819715, 1542430, +3267396, 13753022, 12589086, -1992865, 11878806, -5810017, -14357002, -8124468, -2916283, -7404524, +-919660, -5515275, 8442832, 2443837, 32020592, 4162360, -10769630, -3805341, 3039226, -16668768, +-10202695, 3929358, 845572, -4335233, 1836635, -8053, -17992154, -1918240, 12324946, -8970576, +12924630, 51155208, 14185740, 37294276, 11464341, -38196756, 15151034, 11038603, -13156559, 2942053, +24559696, 1422708, 23493472, 21415244, -25062208, 13935021, -25072408, -16407849, -2670396, 50070728, +14973330, -22153442, 20886962, 13966160, -27711666, -11782169, -2194192, 28156194, 3794604, -25177636, +-14652818, -493384, -7297687, 15766288, 21990232, -7763691, 19303730, -12335683, -17420388, -286152, +40104256, 4065187, -23523536, 13509283, -1403917, -2002529, 11001559, -26036092, -23075786, -21307870, +15529528, -13847511, 4799089, 7052337, 23855858, 12267500, 24533926, 2960843, -1381369, 20574504, +36887328, 22422414, -37096168, 1081258, 3271691, -5913096, 6793565, 10526428, -28715614, -3962107, +5325760, 5244155, -34142844, -31752156, -18285286, -19165754, 33302102, 12753369, 1260573, 15148887, +-27712740, 11641509, 7295539, 5337034, -2720325, -5950677, 22920092, 14276471, -9581535, 4292283, +-7297687, 15477452, -4663798, 1386738, 2891587, 2569464, 11005854, -1467805, -18637474, -450435, +3151969, 5135171, 9150428, -2238752, 557272, 7385733, -14510547, -8108899, -1607392, -25556130, +-4255239, 7493108, -2201171, 3125126, 14525579, -1794223, -10613938, 2530273, 3304977, 9945534, +11198053, -10752451, -7124277, -411780, -9701257, -5804649, -18331458, -21149492, 5673652, 674847, +-9971303, -7773891, -10172093, -19220516, 14369887, -38513508, 27851252, 31336082, 8556112, 34117608, +-34939024, -16935056, -9517111, -49957448, 28131498, 2942590, 17387102, 23087596, 22385370, 1855426, +-775778, 22958748, -3680250, -26988500, -28215250, 17171816, -31868120, 31176094, -8965744, 6941741, +30701500, 27875412, -14009110, 42377904, -24532854, 2880313, -25504590, 4264366, -8743480, 16779900, +5611912, -17908404, 16167868, 24788404, 36149664, -20759188, 7710003, 22376780, -30547418, 1575179, +-12290586, -43963824, -19010598, 11956652, -24260122, 8811662, -20366734, -310311, 29706142, -13919452, +12578885, 34432752, 24447490, 9356049, 45526116, -70727912, -13370233, 23879482, -2734821, 14003741, +-21963390, -38120520, 46563888, -456877, -23451058, 10265509, 29473140, 73338712, 27699854, -55071680, +-30172682, 19071266, 20464446, 9103720, -38606924, -3127273, 8488466, -11691438, 26100516, 9581535, +16670379, 20072530, 14891725, -9882183, 11506217, -30419106, 4442607, 16662326, -1948305, -16008954, +9535364, -9664750, 16298327, 18267570, -7673496, -14698452, -4012573, 33495376, -5920076, -3607773, +-12990665, 15308337, -12899397, -7675107, 9621800, -5904507, 31309774, -2090039, -7729868, 31768262, +-2794413, 7653095, 19289772, -1160178, -1628866, 2155537, 2879776, -14490146, 6743636, 1127966, +-21453898, 14914811, -6645925, 28001040, -15062987, 8657043, 2605435, 37443524, -32885490, -2972117, +-15693810, -19490562, 30054034, -11652783, 39454108, -3876208, -30338576, 47305844, 68390376, -9703405, +-21748640, -32952600, 7925289, 36361192, 7224135, -7580618, -22552874, 5454609, 5443871, -4931160, +5699959, -3141232, -11020886, -11259794, 10573673, 15021111, -1029718, 20274394, -19321448, 41473816, +31286152, 18085570, -1373853, 2585570, 6027450, -21751324, -19012210, -21072720, -11003706, -5662915, +13404056, 11796665, 22602266, -10672994, -2510945, -9431748, 25703232, 50020800, -11589969, -31872952, +-20458002, -1110786, -43212204, 33949568, -58757300, 17219060, 25186762, 25882546, -25489020, 6221260, +26230976, -59463284, -28002650, 12492449, -6091874, -29669098, -26176752, -3168075, -13600014, 44654776, +19284940, -15992848, -14715095, -24372866, 68266360, 14901926, 35793720, -2259153, 10647224, 13156559, +15526844, -21938692, -2566243, 28562070, 19757924, 11973832, -9037148, -11788611, 303869, 9146133, +13334800, 9183714, -17234630, 2857764, 502511, 4905390, 12968117, 13045963, -18042084, 8929774, +-10986526, -13511430, 1802276, 14756971, 6191196, -8267275, 2333778, -852014, -2262374, -7000797, +27529130, -7645042, 452582, -15857019, 4201552, -5615670, 18300856, 6193880, -3434900, -9167608, +10593537, 8862665, -12081206, 1285269, -19918984, -7588671, 5256503, 8810589, 11940546, 315680, +12495134, -2455648, 2433636, 6405407, -25191594, 7248294, 39902392, 820339, -12960064, 32602560, +24004572, -7215545, -20787642, -32471026, 6532109, 62753768, 14273250, 31999654, -2442226, 2465311, +-2155537, -7779260, 396211, 2542621, 15684147, 4701379, -11870216, 10159208, -10342281, -12150462, +-12968117, -5906, 13051332, 2413772, 10509785, 10537165, 9159555, -9202504, -15287936, 4646081, +-10481868, -27456116, -7672422, 5847061, -9105331, 31404800, -32369022, 26338350, -8094403, -97174, +39766028, -6475200, -736050, 51197620, -7569343, -21237540, 4118337, -18234284, -3746822, -17227114, +57671212, -16491064, 14154065, -14044543, -5862094, -8121783, 9836549, -14688788, -34846680, 15266998, +-3730716, -39242580, 20704964, -10459856, 22005264, 48744656, -24249386, -756451, -2226941, -7469485, +-26117696, -4821101, 24470576, 9499394, 15125264, -22426708, 6881612, 3762928, -21201570, -6024229, +5068062, 10886668, 14068702, 980326, 2914672, 8851928, -1873143, -10829223, 15824270, -6269042, +-4439386, 14023068, 2185065, -4020626, 21348672, -1519882, -1333051, 72478, 7146289, -6425808, +10901701, -8304856, -3856881, -6574521, 5793911, -251792, -520765, 2990908, 10037339, -11698417, +2774012, -1618129, 7270306, 2044404, -1997160, 11974369, -7075959, 6451041, -1828582, 3531537, +1071594, 8979166, -1068910, -13750338, -186294, 65972308, 33182918, 69208568, -38788924, -9780177, +22610318, -21328808, 16328392, 71198208, 16683264, 10512469, -18850074, -17389786, 20213726, -10492605, +28637232, -4458176, -6665253, -8075613, -40876276, 10092636, 48962628, -25632364, 29582660, 26149908, +-16674137, -4718559, 20343112, -32304060, 16201154, -2017024, 24526410, 8621073, -20441896, -6269579, +-41064720, -20732880, 19182398, 14774687, 31829466, 50044960, 5268315, 1103807, -43105904, -25997438, +-25753698, -20858508, 11243151, -17246442, -5058398, -3707631, 12868796, -32565516, -5339181, 17369922, +8768176, 27461484, -3653944, -12649752, 26960584, -4544076, 16520055, -20430622, -12556874, -2865817, +-6952479, 13585518, 19620484, 28103582, 7830263, 2644626, -19170050, -5034776, -9840307, 23600308, +254477, 35189740, 6053220, 26598732, -25512642, -8776766, -177704, -252866, 18997714, -2646774, +-9438191, -4760971, 4672925, 1695975, 4948339, 9164386, 7864085, -4440460, -5669357, 748398, +-3345780, 7794829, 7926362, 2245731, -6602439, 682900, -8660265, -3241090, -1881733, 15369004, +5386963, -1552094, 3923453, -9613747, -11806865, -7598334, 3777961, 8626442, -7018514, -284542, +157303, 6542846, 3442416, -518080, 6568616, 1445793, -293668, -6021544, 3139621, 2318209, +-2585034, 1101122, 2016487, -8922258, -17722646, -67881960, 2110977, 108304040, 98347768, 91809760, +39410620, -39497056, -53908284, -54155780, -47757888, -88673360, -62717796, -61828200, 47894256, 72704672, +59939488, 94730336, 79441328, 16435766, -3339337, -34368328, -65949760, -39905080, -69315944, -38170984, +-22984518, 34897, -8981850, 17134772, 30221538, 50466404, 32288490, 53041772, 40955196, 42075112, +3617436, -35254164, -15589658, 882616, -37835976, -50724636, -65216932, -64749316, -45383308, -6761889, +32287416, 12309376, 46832860, 32585916, 53370336, 46923056, 51760260, 59367724, 32424856, -4908611, +-9334038, -39297340, -31593242, -105557408, -83882320, -67791224, -52431352, 5820755, -22719304, 1173600, +72179608, 88445728, 121742992, 76478336, 46470472, 31098248, 7633768, -46848968, -42348376, -65186868, +-83562880, -71349608, -65961032, -31414464, 5057861, 33250564, 55479704, 54183696, 46675020, 28934658, +31419834, 13048648, 8674760, -1823214, -25482578, -22770842, -20219096, -23164906, -11874511, -25852482, +-17977660, 5998996, 2468533, -15163382, 8352101, 20716774, 12235288, 23682450, 37696392, 38603168, +17457432, -24376624, -10121627, -3684545, -48795124, -52086144, -44863616, -19155554, 14295262, 21858700, +18776524, 30779346, 35443144, 43070468, 29066728, 17439178, -6361384, -29384556, -29272886, -33239826, +-44056700, -31784906, -17182016, 14857366, 24358908, 15302432, 9760313, 27823872, 19276350, 11260331, +2960306, -4459787, -8688182, 659814, -10488847, -13080860, -4423817, 4080756, -7173669, -5834176, +1503239, 5574868, 1040456, -3068754, -3556233, 4147328, 283468, -2434710, -4254165, 1362042, +6297496, 7384660, 1348083, 6340983, 6000070, 3050501, -1664837, -1547262, -5073967, -4910758, +-7512435, -4217658, -4878546, -1313186, 649077, 1353452, -466004, 2975876, 3819300, 5734855, +-1509144, -677531, 1962800, 2957622, -2404645, -217433, -770947, 363998, 1316944, 4271345, +-274878, 1339493, 771484, 955093, -2640868, -3868155, -6614250, -4076461, -5286568, -3925063, +-4258460, 1277216, 3405372, 6363531, 6594923, 10074920, 7926362, 7090454, 2738579, 459025, +-4954245, -6372121, -9303436, -8071854, -8845485, -5111548, -3101503, 838592, 1890323, 6354941, +5394479, 6966437, 5550709, 5234492, 962610, 907312, -1959042, -1920387, -4365298, -2586644, +-3185255, -829466, -1946157, 120259, -849867, 1138166, -242666, 1372242, -259846, 1190243, +-397284, 1078574, -589484, 840740, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 1065689, --1229434, 4410932, 5027796, 2650532, -1900523, -7579544, -6891275, 2477123, 4005594, -1500017, -7452305, -1469953, 4458713, -5304822, -4618164, 1994476, 215285, -1401770, 1992865, 4778688, --2063195, 634581, -2719251, -308164, 287763, 1938641, 1867237, 2437931, 441308, 1438277, -5528160, -2154463, -2540473, -2809446, -4947803, 1399623, -1015223, 9075266, 1802813, -718870, -749472, 5493263, -477815, -1237488, -1376537, -3273839, -561567, 4216584, -620086, 1729798, -4330401, -1381369, -275415, -6943889, -4028679, -6335077, -1199370, -1862942, 964757, 311922, -942745, 2216203, -1476932, 1054415, 104690, 525060, 995359, -2332167, 2210835, -776852, --2585034, -364535, -2607045, -836982, 282394, -4150012, 1126892, 155156, 3210488, 301721, --19327, -1923609, 461172, 3132642, 1583769, -819265, 388695, 672699, 806917, 2382633, -325881, 119722, -545998, -394063, 280247, 64961, -209917, 1563368, 906775, 916439, -711891, 467078, 243203, 451508, 893890, 5130876, 12100533, 4779762, 2863133, 3364033, --7110855, -833761, 3068754, -961536, 1200443, -6485938, 6378564, 8642011, 1490354, 3861713, --1819456, -5059472, -7841000, -8583492, -5708012, 6807523, -6423661, -4079682, -5436355, 1745904, -4521527, 856846, 613107, 2530273, -256087, 1599875, 5572183, -779537, 4632659, -4409321, -4226785, 2944200, 2687576, -2321430, -7206419, -1530619, 4126390, 2447058, -2014340, -237834, -1427540, -301185, -3477313, -725313, 2948495, -1007707, 326954, -1713692, -381178, 218506, -985158, 5093831, 2128156, -2603824, 439697, 425739, -1728724, 933082, -2517388, -289910, -4128001, 1348620, 4631586, -3303904, -2840584, -1693828, -732829, 2363306, 5250598, -3023657, --3799972, 4525822, -425202, -81604, 156229, 1565516, 1116692, 3804804, -1069984, 1777043, --2317135, -2163053, 170188, 1033477, -160524, 83752, 872415, 957241, 740882, -1972464, -2214056, -467615, 3553012, 1503239, -3976066, -3757560, -4261145, -670552, -3477313, -7337415, --6982006, 7212861, -151934, 1518808, -47782, 4393752, -6493454, 9657771, 8582955, 444529, -463856, 13422, 261456, -953483, 3365107, 2613488, 219043, -5496485, 2389076, -1705102, -2649995, -765578, 5864241, -1364189, -3402151, -1544041, -912681, 2171106, -30065, 3622268, --5808407, 3136400, 1021129, -3227131, 9158481, -1453310, -1303523, -191663, -136365, -2412161, --772557, 4885526, 4005594, -8577050, -4039417, 4361540, 1262720, -2050847, 7470022, 273804, -1679869, 7348689, 3041374, 5769752, 1636919, -2214593, -2989297, -5771363, -5586142, 813896, -2983392, 7151658, 279173, -2914672, -3642132, 1245541, -60130, -1996623, 2327336, -805306, --1828582, 1674500, 3882114, 1257352, -1937030, 1944010, 2025077, 2532420, 1630477, 129923, -248034, -2399813, -498753, -31675, 1236951, 1038845, 1980517, 1910724, 1592359, 603980, --149787, -9793599, -3407520, -4766877, 4450660, -3257196, 2892661, -3521336, -1449552, 8297877, -4063039, -5514738, 2518998, 7914551, 1166084, -2779918, -5555004, -6684043, -4574140, -6720550, -4465156, 1010391, 2460480, -1293859, -3033858, -3211562, -5910412, 303332, -176631, 1401233, --1435593, -5385889, 95026, 5743445, -1265942, 61740, -2856153, -5735929, -8472897, -734976, -6120866, 2216740, 652298, -2880849, 791885, -4606890, -1497333, -3467112, 450972, 777389, --5229660, 5910949, -3320010, 7522099, 2858838, 710280, -3408594, -1800128, 1946694, -436476, -1843078, 4036196, 834297, 1597728, -4459787, 2636036, -2234457, 6914898, 8584566, 3926674, -5774584, 2676838, -863825, -6016713, -3866544, 491237, 4446365, 4460861, -3555696, 463856, -4227322, -5510980, 5455146, 344134, -2771328, 1787780, -1152125, -267899, -3083250, 604517, -899259, 530965, -2469069, 654983, -1738388, -2340220, -794032, 161061, 1053341, -1528472, -399432, -665183, -2142115, 227633, 1808718, 744103, -1525787, 999117, -1141388, 3279745, --7905424, 1040456, -8454106, -35433, 1292248, 787053, 3808562, 382252, 601295, 14948634, --1878511, -6604586, -7125351, 7506529, 5026186, -5668283, 1364726, -6322192, -2713346, 206695, -7144678, -8870718, 2578591, -352187, 1406602, -683437, 9070971, -4702453, 2552284, -1428614, --2411624, 1371168, -444529, 2712272, -2787434, -2589329, -7691213, 1194001, -2561411, -1664837, -598074, -2732136, 2254858, -4345970, -2590402, -7638063, -241592, -6783364, -2869575, -8065949, -5970542, 1200443, -2481954, 5244692, -6114423, -46171, -11639361, -641561, 4006668, -333397, -3433290, 7381975, -2610266, -1058173, 9244380, 3889630, 3561065, 5635534, -2938831, -8574365, --920734, -5141076, 3725884, 8506183, -1547799, 2482491, 4524211, 3799972, -466541, -734976, -1043140, 144955, -1589138, 2277943, 2045478, -3568044, 1168768, 2980171, -1518808, -1100049, --5284958, -1241246, -2230699, -746787, -2313914, 446677, -570157, 396211, -249108, 342524, -1349694, -1569811, 539555, -654446, -1595580, -229244, -280784, -497142, 106837, 887985, -1484985, -1488743, 506269, -1262720, 210453, -161061, -1666447, -673236, -1275068, -252866, --2020245, 475668, 98784, -1154273, 4301410, 4698694, 1806034, -2951716, 2145336, 1178432, -9172440, -1453310, -1875827, -12335146, -3389266, 9158481, 9084930, 5728413, 4643397, 13066364, -889058, -15743739, -3942780, -2675765, -3720516, 8297877, -1247688, -3102577, 9824201, 1461900, --3940633, -1455457, 3969624, -3520263, -1287953, 1129576, -1166621, -5522254, -2398202, -316217, --5199595, -2478196, -2137283, 3626563, -2398202, 7041599, 6983080, 613107, 6646462, 4548907, --2883534, -1066763, -2168422, -10247792, 1229434, 2049773, -9611600, -1446330, -2663954, 3418794, -8944269, 1296543, -8898635, 1268626, -3376918, -6105296, 4990215, -1466195, -6347425, 2870649, -2566243, 7066295, -478352, -926102, 5330592, 6153078, 6906308, -7039452, 5032628, -933619, --1095754, 1801202, 7450158, -365609, -1870458, 2294050, 1215476, -6271189, -728534, 8537858, -1985886, -577673, -978716, -3893388, 2857227, -1443646, -1661079, 271120, -155693, 1964948, --31675, -2674691, -1808181, 3557307, -343061, 1399086, -1509681, 1720134, -1228361, -997506, --1213328, 898185, 2007897, -935766, 6285685, -16067473, 6701760, -1772748, -3632469, -3316789, -2780991, -1543504, -9484362, -10152229, 1268089, 15788837, 4387846, -11516418, 2627983, 9363566, --6713571, 1202591, -1669669, 5578626, -1074, 5148055, 13863081, 10057203, 6323803, -246424, --1104880, -6402186, -6808597, 2715493, -17874044, -2841658, 8532489, 942208, -864362, -8587250, --3016678, -372052, -346282, -4175245, -8827232, 9935870, -3391414, -2183991, -1557999, -8222178, --9198209, -293668, -4464619, 639950, 4447439, 3367791, 3771518, -7337415, -1858110, -3604551, --2245194, 11800960, -1196148, -5386426, 428423, 15134928, -8024073, 2546379, 11189464, 350577, --2507187, -5610838, 3441343, 648003, 8074539, -4309463, 6841346, 5516886, 10561861, 5094368, -7924752, 842887, -5099737, 1117765, -157303, -2962454, 4811974, 6784438, -5561983, 3709778, -2083059, -5037997, 720481, 1809255, 1474248, 1852205, -2828236, 1655710, -3104725, -936303, --815507, 241055, 652298, 1381369, 1791001, -336618, 2654290, -170725, -1095217, 921807, -1788317, -560493, 1110786, -2677375, 1137630, -853625, 1772748, -1963874, 9264244, 13196287, -8126615, 1307818, -2802466, -4997195, -10958072, -3225521, 7289633, -14999636, -6102075, 13581760, --18846854, -3460670, 10586021, 13210246, -1332514, -13356275, 1872069, -5139465, 17830556, 7846905, --12203613, -7920457, -1856500, -7595650, -15366319, -7751342, -6805913, -5622112, -12440910, 6218039, -2234994, 7645042, -4723391, -2354179, -10942503, -1177358, -9492415, 935766, -6303402, 1344862, -3346317, -14745160, -4803921, -5648956, -3879966, 3107946, 3154654, -4747550, 14498199, -997506, --3768297, -2775623, 1416266, -3459596, -1178432, 5327370, 4607426, 5970542, 7962870, 7479149, -613643, 4883915, -2396055, 11234561, 12099997, -6139656, -3145527, 7353521, -197569, -18391050, -858457, -9371082, 5696737, 5732708, 10378788, -7927436, 4425964, -11098732, -1059246, 6241661, --2681133, 9785009, -2553358, -1264331, 1990717, 581968, 1394791, -716723, 592169, 4124242, --3092913, -857920, 4038343, -684510, 3173444, -4777078, -4085051, 2709051, -647466, 805306, -449361, -625992, 736587, -2882997, -726386, -553514, -1216013, -1969243, -652298, 1433982, -1808181, -151934, -1903744, -10231149, -12224014, -6091338, -11806328, -17017734, 12065100, 1119376, -6784438, -9433896, -9672803, -13507672, -9018358, 4085588, -9892920, -9016210, 12271795, -3115999, -652298, 2887292, 7045894, -5477157, -4028143, 1952063, -3208878, 1846836, -537945, -6077916, --11439645, -18094160, 6043556, -13011603, -11796128, 570157, -3047279, -886374, -6601902, 2970507, -3523484, -14755360, -235149, -3279745, -5668820, -8224863, 4735739, 945430, 14783277, 1704565, --8156680, -559420, 1455457, 6015102, 2628520, 12985834, -1027034, -14223858, 6162205, -3051574, -6498823, -8520678, 1944010, 4770635, -24975772, -11949136, 8960912, -808528, -2592550, 3813394, --1175747, 15796890, -455803, 9992241, 8816494, -12868796, -14790794, 833761, -16395501, -411780, --707596, 303332, 2507187, 10312216, -252329, -6524056, 6040872, 7754564, -7150584, 1248762, -2454574, 7802882, -3709778, 250719, -3761855, 2624762, -94489, 1636383, 2725157, 4197257, -4392678, -148713, -3976603, 165356, 3162707, 936303, 766115, -3762928, 539555, -3767760, --417149, 2019708, -467615, 3677029, 2877091, -167504, 920197, 2978560, -2630131, 5260261, -35433, -2314451, 2512556, 8653285, 35062504, -8604430, -23681376, -2064269, -10405095, 25585120, -1889249, 14346265, 7643968, -4416837, -11390790, -5035849, -12405476, -3137474, 17100950, -19131394, -714575, -15605227, 4143570, 1323924, 7532299, 1788317, -7602629, -12648679, -14874009, -2721936, --14596446, -11325829, 1742683, 3389266, 10656351, -10060961, -21122650, -4388383, -7414724, 2531346, --9999221, -6662568, 2901251, -5250061, -8486319, -564251, 780073, -4269735, 20333986, -4194573, --3497177, 5171141, 5207111, -6074695, -2724620, 15142981, 12556337, 8334921, 15824807, 12505871, --126165, 5235029, 8919573, -6752763, -6501507, 1859721, 6378564, 10619844, 4192962, 21554830, -2197950, 14450954, -4268124, -8354249, -5552319, 30588758, 5260261, -3978214, -3869766, -10995116, --10696616, -7583302, -7559143, -8807367, 3323231, 7037841, -7686918, 2394444, 7408282, 3762391, --7119445, 1383516, 7553774, -1964948, 4084514, -3899830, -1301912, 1708323, -1533840, -901943, --2550674, -4982699, -999654, -4519380, 2142652, 3710852, 1677185, -3780645, 4722854, 3176128, --2993592, -3315715, -5317707, -1561221, -1655173, 1277753, -1366873, 2300492, 1491964, 377420, --763967, 18790, -4316979, 1615982, 6535867, -30669824, -11547020, 15553150, -3797825, -15606301, --14873472, -4849555, 16595217, 9032316, -13569949, 7575249, -18018998, -7213398, -2290291, -11621645, --16205448, 13635447, 7274601, -14178761, -5195300, 30988190, 7009924, -13498008, -18942954, 524523, -9948755, 1925756, 1564979, -21304112, -810675, -2214593, -15637439, -8788040, -6422050, -12148315, --6054830, 3824132, 284005, -12834436, -13269301, 1908576, 8004746, 26307, 10794327, 18671834, --13174275, 11664594, 8393977, 3876745, 2261837, 14136348, 4101694, 8810589, 5494874, 7964480, --2840047, -1427540, 15611669, 25038586, 3856881, -5524939, 2786897, -3323768, -9649718, 16021839, --7974681, -13059385, -21296596, -6987912, -24774982, 12494060, -10268193, -3989488, -1706713, -3285650, --9091909, -1228361, 9470940, -10917270, -1275068, 5390184, -3500398, -10640781, 5165235, 1132261, -2737505, -482110, -1597191, -3650722, -736050, -1775969, 5519570, 1777043, 1297080, 1190243, -1586990, 321586, 2647847, 2255932, 4843650, -6994891, -1180042, 840740, 4463545, -1738925, -3660386, -4120484, 1166084, 1308891, -1290638, -2171643, 3845070, -1665374, -686121, 2661806, -388695, 481036, -6238977, -13614509, 11578158, 6879464, -2004676, 7671349, 5765994, 16375637, -12691091, -26703422, -8808441, 29626684, -23325968, -6931541, -14113263, 21106544, 9455907, 9715216, -4149475, 3076807, 8507793, 22396106, 10719165, -9889162, -143881, 726386, -576063, 8858370, -10027675, 1199370, 5957120, 5630702, -5088463, 6933688, 4228396, 13840532, -6593312, -13328894, --11381663, -8920647, 2698313, -1166621, 5349919, 6000606, 6100464, 12193949, -5285494, 2571612, --5327370, -9512816, -3787624, 1010391, -10897406, 14008036, 17016660, -18418968, 6345278, -12757663, -10489384, -2081985, 4118874, -1394791, -10129680, -2479270, 11798275, -9169755, -2754148, 2082522, --18737868, -7181722, 4010963, -14540612, -939524, 23284092, 11646878, -1560684, -5255966, 18582712, -4950487, 13386339, -4133369, -5991480, 19466402, -6571837, 6127845, 2593624, 2829310, -3980898, --2850248, -3556233, -2394444, -6511171, -3954591, -4531728, 729608, 4215511, -1468342, -9145596, --2867965, -1242856, 1114007, -257161, -2203855, 65498, 2665564, 4504347, -3493419, -78383, --9804337, 1706713, -1151588, -1831804, 6750615, -79457, -560493, -3893925, 4162897, 1165547, -6125160, -2015413, -268435, -3999152, -357019, -5777268, 18556406, -1540283, -4289062, -15425912, -691490, 1438277, -4113505, -353798, -7119445, 2682744, -22095460, 20171314, -4054986, -7164006, --13973676, -15825344, -1606318, 19247896, -3464428, 5326297, -11873437, -6886980, -3291019, -11596949, --13953275, 12779675, -7867307, -6442451, 11370926, 11018739, -15549392, 5430450, 5934571, 13498545, -11191074, -4070555, -9822053, -6220187, -15111842, 16682190, 11016591, 5543192, 11943767, -12309913, -8485245, -1778117, 7784092, 8580271, -8012799, -623844, 27199492, 22767084, -17143362, 6905234, -14151917, -10811506, 3416647, -25346750, 7663296, -13703630, 11411728, -7939784, -8702677, -6175626, -30351998, 1758252, -8749922, 2714419, 10259066, 1369558, 6135361, -16285979, -1778653, 27231704, --811212, -10644540, -16549583, 552440, -12226161, 7727183, 7933342, 9548249, -16898548, -17699560, --4643397, 3033321, 5930813, 1901060, 190052, 485868, 6568079, -4300873, -1643899, -1293322, --2755759, 3244311, 2807835, -5368172, -3629247, -8276402, 5209796, -2995203, 2341831, 3716221, -5482526, 4334696, 1960653, 8444979, 652835, -1880659, 4133906, -6150393, 3601867, 2486786, -1831267, 5621576, 6070400, 1180579, -691490, 3585224, 534187, -453119, -6415608, -8501888, --1486596, -573915, -923418, -16651588, -701690, -1897839, -2915209, 5122822, -24552180, -11016054, --13860396, 11731703, -6007586, 17339320, 10186052, 22010634, -11014444, -664646, -17293148, 14754823, -26230440, -7995619, -21180632, 2296734, -4476430, 32670206, -8171712, -12479564, 12180527, 7058242, -4997195, 12460774, 3982509, -40511204, -23622, -2486249, 15748571, 28881508, -27212912, 1323924, -7947837, -12719009, -2792266, -36702108, -8528194, 19106162, -30575872, -17942226, -9494562, -11639898, -11969537, -7104950, -10994579, 16553878, 4796942, 6207302, 16638166, 2118493, -5932961, 12219182, -17467632, -16867948, -12925167, 26492432, 17877802, 6361921, 8179229, 6475200, -11949673, -16755741, --169651, 510027, -3651259, 5654325, -10460930, 7610682, -14430016, 6085432, 33195802, -15226196, --12967043, 18633178, 5140539, -5946382, 11458973, 16417512, 11837467, 14545980, 6915434, -6933688, -5734855, -17269526, 9256728, 4294968, 4828080, -8605504, -2803003, 2183991, -969052, -1461900, --2815351, 6093485, 11155641, -4086662, -11046656, 7249368, 12923557, 7152731, 4999879, -15130096, -9228811, 1343251, 4931160, -2138894, -5432060, -891743, 7758859, 1066763, -1596654, -6323266, --686658, -3537979, -2060511, -2727304, 3374234, 7821136, -4628364, 658204, 4568235, -1477469, --962073, -3706557, 600222, -2358474, -3188476, 7044820, 2369211, 9690520, 8708046, 14256607, --33018634, -60918744, -28118614, -4267050, 20696910, 1467268, 22822920, 21118892, -6441377, 3411815, --5231807, -11605002, -19112604, -11110007, -13819057, -8026757, 21653614, -28272160, -4986457, -23574538, --29272886, -5156645, -29547228, -23753854, 2809982, -6257231, -3497177, 5298916, 25751550, 1737314, --18868866, 996432, -2363306, -5724118, -24480776, -1682017, 28919088, 2595771, -623307, 11669963, -22428320, 15084999, 3808026, -9296994, 7723962, -7832947, -20827370, -38044284, 35921496, -4693863, -29893510, -2663954, 236760, -10939282, -17532594, 31532576, -18174690, -14779519, -1699196, -23241678, --21870510, 17864916, 13035226, 6767258, -2495913, 9006010, -16212965, 6044630, -13200045, -18538690, --20232518, -15815680, -6652905, 15307263, 767725, 5361730, -9488120, 5272073, -12349642, 8603356, -6624987, 6056441, -4187593, -743029, 7571491, -2371359, -9705015, -7384660, -9614284, -1067836, --7167227, -1865626, -2690797, -2790118, 2494839, 853625, -3988951, 1316944, 4639639, -1588601, --3406983, -7634305, -341987, -5347235, -979789, -1132798, -3776887, 8240969, -8338142, -7863548, --3859028, 4210142, -7425462, -7512972, 714038, -6344741, -359167, -1427003, 3033858, -1148367, -803159, -5211943, 1625108, -10408853, -5389110, -1904281, -21522082, 4497368, -5136781, -15904264, --23083838, -656056, -22068078, -26506390, -4021700, -12342662, -28266254, -40101036, 4875862, -15446313, -7691213, -3300146, 15244986, 32977296, 2051921, 3011309, -16601122, -18600430, 15460272, 7985955, --11936788, -394600, 10193568, -23071490, -17059074, -1686848, 29009282, -25132538, 643171, 119722, -13515188, -21543020, 22259742, 11051488, 6517613, -1055488, -8857296, -24937654, 33286, -6340983, -9118216, -13763223, -32176822, 26239028, -19287088, -9217000, -1107565, 25657598, -19649476, 8668855, --16102369, 9615895, -5684389, -24579560, 11740293, -31179852, -6543383, -9325448, 10927471, 24599962, --14330158, 8769786, 25667798, -20928838, 3562139, 5608691, 6172942, 6978248, -36967856, -11674258, --6114423, 12818330, 2977486, -619012, 6944962, -7095286, 14979235, -3271691, 3519726, -14858976, -12509092, 2601140, -22774064, -11028939, 10901164, 12912282, -1803349, -4021163, -8859981, 12053289, -1684164, -386547, -23740968, 3288871, -11390790, -18636400, -5397700, -4240207, -2275259, -11222213, --13629005, 4296041, -3121368, -7344931, 3946001, -2000381, -1955821, 166967, -3668976, 664646, -7350837, -14533096, 1367410, 1967095, -4624606, 9358734, 9263708, 9949292, 4187056, 5735392, --6778532, 2104534, 240518, 2359011, -3162707, -556735, -342524, 3736085, -2858301, -6923488, -5850819, 43455404, 4551055, 18290656, 50070728, -23477902, -13014288, -19696184, -7191386, 22890566, -1617592, 28220082, 7726110, -1172526, -10484552, 21282100, -13258564, 4718559, -8829379, 8688182, --14055817, 16169478, -7859254, -3984656, -9242233, 12386686, 8697846, -14011257, -3203509, 13045426, -4083440, -9066139, 971200, -11609833, -37448356, 16082505, -19637664, -29064044, 17920752, 7700877, -19374060, -2024003, -18717468, -7246147, -4958003, 10984379, 15048492, 16424492, 27850716, 27174794, --12089259, 3546569, -28939490, 57445, -21055004, -37981468, -3649112, -31013958, 10045392, -24821152, --16115791, -16525960, -22986664, 2027225, -5404143, 1681480, -6801081, -3173444, -1953673, -40176196, -6433324, 5796059, 9163850, 18886044, -3561602, -32007170, 18435610, -20830592, 11936251, 11430519, -25977572, -14354318, -12825309, -8812736, -4967130, -18714246, 7460895, 3962644, 2411624, -4705674, -6606197, -9494025, 9429601, -1830730, 2033130, 2472291, -11282342, -356482, 4560719, 10970420, --2854006, -7082401, 5057324, 7505992, 9774272, -6336688, 190589, 5106179, -530428, -1342714, --3458523, -7468948, 5192616, -437550, 3367254, -4305705, -420370, 6284611, -4226785, -7042136, --3730179, 760746, -2731062, -12145631, 19203336, -5141613, -3779571, 1353452, 3797288, -3485903, -3655554, 4274030, -1717987, -651224, -2441152, -4014184, 31324808, 58100708, -31830540, -26038240, --45010184, -92026120, -22582402, -9822590, 20653424, 12198781, -7822746, -17932562, 25207700, 30448634, -2767570, -1702955, 280784, -24450712, -14184129, -17410724, -13098040, -25858924, -255551, -6710887, --3007551, 17340394, -23983098, 19042274, 18174154, -5896990, 9391483, -1311576, -42754788, -30771294, --16962436, -15861314, -7122667, 3114925, 16564615, 5078799, 8926553, 41076532, 37650756, 8235063, --27896886, -14820322, -1180042, -14654965, -26461294, -66420596, -55541444, -25296284, -5934571, 2424509, -14494978, -46180564, -26417806, 23475218, 27612882, 32822676, -30198452, -36992016, 11951283, -22696754, -54415624, -27768038, -3131568, -16481937, -8740795, 7176354, 16088411, -8373576, -21521008, 19628000, -19360638, -4744865, 22175990, 19367082, -43130600, 38206956, -25023016, -250719, -7388418, -26145614, --7269769, 12667469, 9685151, -2483565, 4992900, -16110959, 310848, 7499013, 10604274, 16411070, --12694313, 2139968, -3679713, -7283191, -17961016, -2627446, -17311940, 14759118, -2893734, -18760954, -2820720, -21433498, -1509681, 2063195, -4983773, -9550934, 498216, 1192390, 2068027, 6345278, --1435056, -833761, 12090333, 3466576, -12500502, -14688788, 3692598, -9939091, -20141250, -7421704, --18968724, 5592048, 5738613, 14154065, 1994476, -15187541, -10915123, 10807211, 54783380, -18240726, -17663590, -747861, -24378772, 3789772, -49221400, -11060615, 10596758, 998580, -28638842, 16996796, -50210852, 35243428, -15504832, -31388158, -13352516, 3573950, 52774412, 7138773, 1369021, 247497, -24429774, 25121264, 6604049, 19219978, 15599858, 29528438, -8341364, 3420405, 18895708, -17129940, --26094074, 14755360, 43347496, 9438191, 21050172, 2071785, 12959527, -57863948, 10810433, -2200634, -13179107, 56854628, 23017266, 7744900, -5532992, 25518012, -5701032, -11866458, 9112310, 15884937, -33548526, -10704669, 20904680, 3854196, 5900212, 13222594, 17056388, -456340, -21985938, -13666586, -5332739, 42908332, 29506426, 22866406, 24852828, 20736638, -5744519, -52968220, -37918120, -72688024, --826244, 22259204, 42084772, 6594386, -30348238, 10165651, -18696530, 6142877, 14688251, 4446902, --8629126, -4843650, 390305, -4034048, 11979201, -7976828, -20906290, 472446, 7306276, 9478456, --13415330, -6146635, -25172804, 6373195, 11365020, -9717364, -8482024, 6424198, -4679904, -6233608, --5188321, -19730542, -3920232, 20461224, 13121125, 18527416, -9611063, -20868172, -15142981, 13616657, -11084237, -4887136, -538482, -1239635, 4204236, -5855114, 12674448, -13930190, -7453379, 991601, -2765422, 8052527, -16781510, 3571265, -12186970, 33643552, -9374303, 7330436, -10465225, 3866008, -338766, 3142306, -1240709, -7994008, -20573968, -9014063, 45056356, -2102387, -20656646, 4842576, --3775813, -17294222, -13547937, 2222109, 23850490, 63986960, 29004988, 56686052, 29939144, 25029996, -24244016, -17215840, -14037564, -16482474, 7260642, 46409804, 15155329, -39294656, 16957604, -42225436, -21122650, -26881664, -5524402, -23631984, -24974698, -1486059, 3359201, -650688, -31275414, 40626096, --8180302, 15091441, -39584028, 10354092, -9102646, -12511240, 20723218, -17141752, 41315436, 4576288, --16103980, 1843615, -12096775, -17145510, 11726871, -28178744, -5851893, 34803192, -7518341, 14090177, --1753957, -25677462, 28002650, -15269682, -57723824, 6955700, 4488241, -479426, 6522445, -8223252, --11128260, -3478387, 26345330, -49971408, 29541858, -11961484, -6768869, 32489816, -19981262, 9390409, -12232067, 47279536, 16702054, 20775294, -3205656, 28167470, -22513682, 22299470, 3869766, -8919036, -6207839, 1140314, 1115081, -12478491, -2997887, 1980517, -5033165, -9389335, 19504520, 119185, --1180579, -5896453, 6647536, -7776039, 17426292, 9807021, 9476845, 1932735, 146566, -1834488, -14641544, -11738146, -14543296, 5493800, 7805030, -900869, 13192529, -5742908, -2325188, 462246, --4125316, -14577119, -14105746, -1546188, 5123359, -7338489, 2808372, 4418448, 5466420, -4065724, --6442, 9257265, -4025458, -13540421, -24250996, 39779452, 36911484, 128837208, 51993264, -70030512, --32937030, -34240552, -53868552, 37693168, 115778360, 46476376, 22010096, -28870234, -7926362, -1789928, --1294933, 55736328, 38149512, 24421720, 83715352, -99963216, 6622840, 52552684, -12574591, 10972031, -54986856, 9834938, -15528991, 29815662, -55083492, -110566952, -10413685, 11131481, -42799884, -4621385, -59557776, 10274636, 3689914, 22839026, -46672336, -95190432, -87005296, -39399884, 29081760, 57043608, -125942936, 31885300, -15817828, -15492484, -33801928, -74854840, -22569516, 55337968, 55642912, 58409944, -56922276, 35897872, 29797946, 8899709, 13211856, -47943648, -29352880, 7558606, 13852880, 25149182, -30700426, 75093744, 19917374, 43878996, -28251222, -27827630, -50319300, -10608569, -38385732, -8828842, -78288128, 100456064, 2567317, -3612604, -61887256, -71380208, -40036612, -16617765, 40329744, 21715892, --3935801, 15300284, -5082557, -9789304, -18341658, -17297444, -1921461, 5022428, 4160750, 22493280, --1113470, 42950, -10758356, 907849, -13500156, -4167192, 559956, -20095616, -8768713, 999117, --5093295, -882079, 12641699, 11317239, 25805238, -10518375, -3981435, -24958054, -20084878, -15082315, -26768384, 17208860, 8853001, 9331890, -7428146, -22049288, -17620640, 1497870, -12192875, 22908818, -33711200, -528281, -7171522, -22667226, -7802345, -92177512, -56281788, 32668058, 86888800, 100357280, -210000816, 127497176, 87159920, 76317808, 60034516, -10698227, -90412816, -99729144, -192505264, -205443312, --194047696, -124608816, -42981884, 42912092, 75094816, 124100936, 122654600, 85487032, 85157928, 108008760, -104366632, 92957048, 59581932, 40830108, 36735928, -3994857, -5866389, -120255864, -85031224, -107628120, --129500240, -54943368, -126447056, -102744744, -186508960, -163917968, -115524960, -77787224, -11062225, 96962648, -118286080, 98985576, 106548472, 97919352, 182476512, 236658064, 212241712, 209745264, 185847536, 178668496, -133554696, 132726304, 29045254, -90016608, -186213136, -178899888, -266694928, -223225024, -324016096, -386887968, --343030432, -326582880, -195870912, -137057776, 25600690, 64553360, 153186448, 226628240, 350367328, 302690496, -437952448, 377502944, 271227712, 265872976, 121760712, 8508867, -23691576, -95106144, -164907952, -198085504, --235736256, -205097040, -184948272, -179319712, -144844016, -150151520, -122494616, -108622408, -32347546, -23364086, -30482994, 69508680, 80850072, 104324216, 149424592, 179727744, 192560032, 200594304, 148203760, 121882048, -119082264, 43663176, 29694868, -67014376, -159148400, -213157072, -217159984, -244045408, -154161408, -176853328, --117088864, -85226112, -22772454, 42069204, 84035328, 126450816, 132184600, 197736000, 204031344, 195104800, -166320992, 148402928, 59906204, 14995878, -36223756, -84079888, -159335776, -188798176, -155959920, -106448616, --93170192, -65768296, -59151900, -31368830, -2874944, 8151848, 6787659, 28993176, 33787432, 51832204, -45134736, 41385768, 39642548, 44386340, 32503238, 30578020, 35675072, 37160592, 22272090, 14761803, -2409477, 1009317, 6252399, -2629057, -19440632, -14954002, -20917028, -26305600, -34731788, -30588220, --25763898, -16822850, -20348482, -15826418, -13462575, -3526168, -7865159, -5773510, -2894271, 6385543, -1772748, 6390375, 10907606, 17753784, 13412646, 17358110, 14151380, 19922206, 16814796, 13439490, -4458176, 6264210, 2451353, 2217277, -5274757, -3982509, -5122822, -1787780, -6752763, -3617436, --6681359, -4328790, -5618354, 1537598, -1545115, -2152852, -6394133, -3369402, -5775121, -3454764, --9378598, -6380174, -5711770, -981400, -3026341, 1549410, 632434, 4584341, 2607045, 7270306, -5428839, 7226283, 3569655, 5640366, 2413772, 5518496, 2407866, 4931696, 1526861, 3433290, --510027, 1289027, -2632278, -290984, -3603478, -694174, -3555696, -360240, -2972117, 301721, --2369748, 894427, -1761474, 1389959, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-1229434, 4410932, 5027796, 2650532, -1900523, -7579544, -6891275, 2477123, 4005594, -1500017, +7452305, -1469953, 4458713, -5304822, -4618164, 1994476, 215285, -1401770, 1992865, 4778688, +-2063195, 634581, -2719251, -308164, 287763, 1938641, 1867237, 2437931, 441308, 1438277, +5528160, -2154463, -2540473, -2809446, -4947803, 1399623, -1015223, 9075266, 1802813, -718870, +749472, 5493263, -477815, -1237488, -1376537, -3273839, -561567, 4216584, -620086, 1729798, +4330401, -1381369, -275415, -6943889, -4028679, -6335077, -1199370, -1862942, 964757, 311922, +942745, 2216203, -1476932, 1054415, 104690, 525060, 995359, -2332167, 2210835, -776852, +-2585034, -364535, -2607045, -836982, 282394, -4150012, 1126892, 155156, 3210488, 301721, +-19327, -1923609, 461172, 3132642, 1583769, -819265, 388695, 672699, 806917, 2382633, +325881, 119722, -545998, -394063, 280247, 64961, -209917, 1563368, 906775, 916439, +711891, 467078, 243203, 451508, 893890, 5130876, 12100533, 4779762, 2863133, 3364033, +-7110855, -833761, 3068754, -961536, 1200443, -6485938, 6378564, 8642011, 1490354, 3861713, +-1819456, -5059472, -7841000, -8583492, -5708012, 6807523, -6423661, -4079682, -5436355, 1745904, +4521527, 856846, 613107, 2530273, -256087, 1599875, 5572183, -779537, 4632659, -4409321, +4226785, 2944200, 2687576, -2321430, -7206419, -1530619, 4126390, 2447058, -2014340, -237834, +1427540, -301185, -3477313, -725313, 2948495, -1007707, 326954, -1713692, -381178, 218506, +985158, 5093831, 2128156, -2603824, 439697, 425739, -1728724, 933082, -2517388, -289910, +4128001, 1348620, 4631586, -3303904, -2840584, -1693828, -732829, 2363306, 5250598, -3023657, +-3799972, 4525822, -425202, -81604, 156229, 1565516, 1116692, 3804804, -1069984, 1777043, +-2317135, -2163053, 170188, 1033477, -160524, 83752, 872415, 957241, 740882, -1972464, +2214056, -467615, 3553012, 1503239, -3976066, -3757560, -4261145, -670552, -3477313, -7337415, +-6982006, 7212861, -151934, 1518808, -47782, 4393752, -6493454, 9657771, 8582955, 444529, +463856, 13422, 261456, -953483, 3365107, 2613488, 219043, -5496485, 2389076, -1705102, +2649995, -765578, 5864241, -1364189, -3402151, -1544041, -912681, 2171106, -30065, 3622268, +-5808407, 3136400, 1021129, -3227131, 9158481, -1453310, -1303523, -191663, -136365, -2412161, +-772557, 4885526, 4005594, -8577050, -4039417, 4361540, 1262720, -2050847, 7470022, 273804, +1679869, 7348689, 3041374, 5769752, 1636919, -2214593, -2989297, -5771363, -5586142, 813896, +2983392, 7151658, 279173, -2914672, -3642132, 1245541, -60130, -1996623, 2327336, -805306, +-1828582, 1674500, 3882114, 1257352, -1937030, 1944010, 2025077, 2532420, 1630477, 129923, +248034, -2399813, -498753, -31675, 1236951, 1038845, 1980517, 1910724, 1592359, 603980, +-149787, -9793599, -3407520, -4766877, 4450660, -3257196, 2892661, -3521336, -1449552, 8297877, +4063039, -5514738, 2518998, 7914551, 1166084, -2779918, -5555004, -6684043, -4574140, -6720550, +4465156, 1010391, 2460480, -1293859, -3033858, -3211562, -5910412, 303332, -176631, 1401233, +-1435593, -5385889, 95026, 5743445, -1265942, 61740, -2856153, -5735929, -8472897, -734976, +6120866, 2216740, 652298, -2880849, 791885, -4606890, -1497333, -3467112, 450972, 777389, +-5229660, 5910949, -3320010, 7522099, 2858838, 710280, -3408594, -1800128, 1946694, -436476, +1843078, 4036196, 834297, 1597728, -4459787, 2636036, -2234457, 6914898, 8584566, 3926674, +5774584, 2676838, -863825, -6016713, -3866544, 491237, 4446365, 4460861, -3555696, 463856, +4227322, -5510980, 5455146, 344134, -2771328, 1787780, -1152125, -267899, -3083250, 604517, +899259, 530965, -2469069, 654983, -1738388, -2340220, -794032, 161061, 1053341, -1528472, +399432, -665183, -2142115, 227633, 1808718, 744103, -1525787, 999117, -1141388, 3279745, +-7905424, 1040456, -8454106, -35433, 1292248, 787053, 3808562, 382252, 601295, 14948634, +-1878511, -6604586, -7125351, 7506529, 5026186, -5668283, 1364726, -6322192, -2713346, 206695, +7144678, -8870718, 2578591, -352187, 1406602, -683437, 9070971, -4702453, 2552284, -1428614, +-2411624, 1371168, -444529, 2712272, -2787434, -2589329, -7691213, 1194001, -2561411, -1664837, +598074, -2732136, 2254858, -4345970, -2590402, -7638063, -241592, -6783364, -2869575, -8065949, +5970542, 1200443, -2481954, 5244692, -6114423, -46171, -11639361, -641561, 4006668, -333397, +3433290, 7381975, -2610266, -1058173, 9244380, 3889630, 3561065, 5635534, -2938831, -8574365, +-920734, -5141076, 3725884, 8506183, -1547799, 2482491, 4524211, 3799972, -466541, -734976, +1043140, 144955, -1589138, 2277943, 2045478, -3568044, 1168768, 2980171, -1518808, -1100049, +-5284958, -1241246, -2230699, -746787, -2313914, 446677, -570157, 396211, -249108, 342524, +1349694, -1569811, 539555, -654446, -1595580, -229244, -280784, -497142, 106837, 887985, +1484985, -1488743, 506269, -1262720, 210453, -161061, -1666447, -673236, -1275068, -252866, +-2020245, 475668, 98784, -1154273, 4301410, 4698694, 1806034, -2951716, 2145336, 1178432, +9172440, -1453310, -1875827, -12335146, -3389266, 9158481, 9084930, 5728413, 4643397, 13066364, +889058, -15743739, -3942780, -2675765, -3720516, 8297877, -1247688, -3102577, 9824201, 1461900, +-3940633, -1455457, 3969624, -3520263, -1287953, 1129576, -1166621, -5522254, -2398202, -316217, +-5199595, -2478196, -2137283, 3626563, -2398202, 7041599, 6983080, 613107, 6646462, 4548907, +-2883534, -1066763, -2168422, -10247792, 1229434, 2049773, -9611600, -1446330, -2663954, 3418794, +8944269, 1296543, -8898635, 1268626, -3376918, -6105296, 4990215, -1466195, -6347425, 2870649, +2566243, 7066295, -478352, -926102, 5330592, 6153078, 6906308, -7039452, 5032628, -933619, +-1095754, 1801202, 7450158, -365609, -1870458, 2294050, 1215476, -6271189, -728534, 8537858, +1985886, -577673, -978716, -3893388, 2857227, -1443646, -1661079, 271120, -155693, 1964948, +-31675, -2674691, -1808181, 3557307, -343061, 1399086, -1509681, 1720134, -1228361, -997506, +-1213328, 898185, 2007897, -935766, 6285685, -16067473, 6701760, -1772748, -3632469, -3316789, +2780991, -1543504, -9484362, -10152229, 1268089, 15788837, 4387846, -11516418, 2627983, 9363566, +-6713571, 1202591, -1669669, 5578626, -1074, 5148055, 13863081, 10057203, 6323803, -246424, +-1104880, -6402186, -6808597, 2715493, -17874044, -2841658, 8532489, 942208, -864362, -8587250, +-3016678, -372052, -346282, -4175245, -8827232, 9935870, -3391414, -2183991, -1557999, -8222178, +-9198209, -293668, -4464619, 639950, 4447439, 3367791, 3771518, -7337415, -1858110, -3604551, +-2245194, 11800960, -1196148, -5386426, 428423, 15134928, -8024073, 2546379, 11189464, 350577, +-2507187, -5610838, 3441343, 648003, 8074539, -4309463, 6841346, 5516886, 10561861, 5094368, +7924752, 842887, -5099737, 1117765, -157303, -2962454, 4811974, 6784438, -5561983, 3709778, +2083059, -5037997, 720481, 1809255, 1474248, 1852205, -2828236, 1655710, -3104725, -936303, +-815507, 241055, 652298, 1381369, 1791001, -336618, 2654290, -170725, -1095217, 921807, +1788317, -560493, 1110786, -2677375, 1137630, -853625, 1772748, -1963874, 9264244, 13196287, +8126615, 1307818, -2802466, -4997195, -10958072, -3225521, 7289633, -14999636, -6102075, 13581760, +-18846854, -3460670, 10586021, 13210246, -1332514, -13356275, 1872069, -5139465, 17830556, 7846905, +-12203613, -7920457, -1856500, -7595650, -15366319, -7751342, -6805913, -5622112, -12440910, 6218039, +2234994, 7645042, -4723391, -2354179, -10942503, -1177358, -9492415, 935766, -6303402, 1344862, +3346317, -14745160, -4803921, -5648956, -3879966, 3107946, 3154654, -4747550, 14498199, -997506, +-3768297, -2775623, 1416266, -3459596, -1178432, 5327370, 4607426, 5970542, 7962870, 7479149, +613643, 4883915, -2396055, 11234561, 12099997, -6139656, -3145527, 7353521, -197569, -18391050, +858457, -9371082, 5696737, 5732708, 10378788, -7927436, 4425964, -11098732, -1059246, 6241661, +-2681133, 9785009, -2553358, -1264331, 1990717, 581968, 1394791, -716723, 592169, 4124242, +-3092913, -857920, 4038343, -684510, 3173444, -4777078, -4085051, 2709051, -647466, 805306, +449361, -625992, 736587, -2882997, -726386, -553514, -1216013, -1969243, -652298, 1433982, +1808181, -151934, -1903744, -10231149, -12224014, -6091338, -11806328, -17017734, 12065100, 1119376, +6784438, -9433896, -9672803, -13507672, -9018358, 4085588, -9892920, -9016210, 12271795, -3115999, +652298, 2887292, 7045894, -5477157, -4028143, 1952063, -3208878, 1846836, -537945, -6077916, +-11439645, -18094160, 6043556, -13011603, -11796128, 570157, -3047279, -886374, -6601902, 2970507, +3523484, -14755360, -235149, -3279745, -5668820, -8224863, 4735739, 945430, 14783277, 1704565, +-8156680, -559420, 1455457, 6015102, 2628520, 12985834, -1027034, -14223858, 6162205, -3051574, +6498823, -8520678, 1944010, 4770635, -24975772, -11949136, 8960912, -808528, -2592550, 3813394, +-1175747, 15796890, -455803, 9992241, 8816494, -12868796, -14790794, 833761, -16395501, -411780, +-707596, 303332, 2507187, 10312216, -252329, -6524056, 6040872, 7754564, -7150584, 1248762, +2454574, 7802882, -3709778, 250719, -3761855, 2624762, -94489, 1636383, 2725157, 4197257, +4392678, -148713, -3976603, 165356, 3162707, 936303, 766115, -3762928, 539555, -3767760, +-417149, 2019708, -467615, 3677029, 2877091, -167504, 920197, 2978560, -2630131, 5260261, +35433, -2314451, 2512556, 8653285, 35062504, -8604430, -23681376, -2064269, -10405095, 25585120, +1889249, 14346265, 7643968, -4416837, -11390790, -5035849, -12405476, -3137474, 17100950, -19131394, +714575, -15605227, 4143570, 1323924, 7532299, 1788317, -7602629, -12648679, -14874009, -2721936, +-14596446, -11325829, 1742683, 3389266, 10656351, -10060961, -21122650, -4388383, -7414724, 2531346, +-9999221, -6662568, 2901251, -5250061, -8486319, -564251, 780073, -4269735, 20333986, -4194573, +-3497177, 5171141, 5207111, -6074695, -2724620, 15142981, 12556337, 8334921, 15824807, 12505871, +-126165, 5235029, 8919573, -6752763, -6501507, 1859721, 6378564, 10619844, 4192962, 21554830, +2197950, 14450954, -4268124, -8354249, -5552319, 30588758, 5260261, -3978214, -3869766, -10995116, +-10696616, -7583302, -7559143, -8807367, 3323231, 7037841, -7686918, 2394444, 7408282, 3762391, +-7119445, 1383516, 7553774, -1964948, 4084514, -3899830, -1301912, 1708323, -1533840, -901943, +-2550674, -4982699, -999654, -4519380, 2142652, 3710852, 1677185, -3780645, 4722854, 3176128, +-2993592, -3315715, -5317707, -1561221, -1655173, 1277753, -1366873, 2300492, 1491964, 377420, +-763967, 18790, -4316979, 1615982, 6535867, -30669824, -11547020, 15553150, -3797825, -15606301, +-14873472, -4849555, 16595217, 9032316, -13569949, 7575249, -18018998, -7213398, -2290291, -11621645, +-16205448, 13635447, 7274601, -14178761, -5195300, 30988190, 7009924, -13498008, -18942954, 524523, +9948755, 1925756, 1564979, -21304112, -810675, -2214593, -15637439, -8788040, -6422050, -12148315, +-6054830, 3824132, 284005, -12834436, -13269301, 1908576, 8004746, 26307, 10794327, 18671834, +-13174275, 11664594, 8393977, 3876745, 2261837, 14136348, 4101694, 8810589, 5494874, 7964480, +-2840047, -1427540, 15611669, 25038586, 3856881, -5524939, 2786897, -3323768, -9649718, 16021839, +-7974681, -13059385, -21296596, -6987912, -24774982, 12494060, -10268193, -3989488, -1706713, -3285650, +-9091909, -1228361, 9470940, -10917270, -1275068, 5390184, -3500398, -10640781, 5165235, 1132261, +2737505, -482110, -1597191, -3650722, -736050, -1775969, 5519570, 1777043, 1297080, 1190243, +1586990, 321586, 2647847, 2255932, 4843650, -6994891, -1180042, 840740, 4463545, -1738925, +3660386, -4120484, 1166084, 1308891, -1290638, -2171643, 3845070, -1665374, -686121, 2661806, +388695, 481036, -6238977, -13614509, 11578158, 6879464, -2004676, 7671349, 5765994, 16375637, +12691091, -26703422, -8808441, 29626684, -23325968, -6931541, -14113263, 21106544, 9455907, 9715216, +4149475, 3076807, 8507793, 22396106, 10719165, -9889162, -143881, 726386, -576063, 8858370, +10027675, 1199370, 5957120, 5630702, -5088463, 6933688, 4228396, 13840532, -6593312, -13328894, +-11381663, -8920647, 2698313, -1166621, 5349919, 6000606, 6100464, 12193949, -5285494, 2571612, +-5327370, -9512816, -3787624, 1010391, -10897406, 14008036, 17016660, -18418968, 6345278, -12757663, +10489384, -2081985, 4118874, -1394791, -10129680, -2479270, 11798275, -9169755, -2754148, 2082522, +-18737868, -7181722, 4010963, -14540612, -939524, 23284092, 11646878, -1560684, -5255966, 18582712, +4950487, 13386339, -4133369, -5991480, 19466402, -6571837, 6127845, 2593624, 2829310, -3980898, +-2850248, -3556233, -2394444, -6511171, -3954591, -4531728, 729608, 4215511, -1468342, -9145596, +-2867965, -1242856, 1114007, -257161, -2203855, 65498, 2665564, 4504347, -3493419, -78383, +-9804337, 1706713, -1151588, -1831804, 6750615, -79457, -560493, -3893925, 4162897, 1165547, +6125160, -2015413, -268435, -3999152, -357019, -5777268, 18556406, -1540283, -4289062, -15425912, +691490, 1438277, -4113505, -353798, -7119445, 2682744, -22095460, 20171314, -4054986, -7164006, +-13973676, -15825344, -1606318, 19247896, -3464428, 5326297, -11873437, -6886980, -3291019, -11596949, +-13953275, 12779675, -7867307, -6442451, 11370926, 11018739, -15549392, 5430450, 5934571, 13498545, +11191074, -4070555, -9822053, -6220187, -15111842, 16682190, 11016591, 5543192, 11943767, -12309913, +8485245, -1778117, 7784092, 8580271, -8012799, -623844, 27199492, 22767084, -17143362, 6905234, +14151917, -10811506, 3416647, -25346750, 7663296, -13703630, 11411728, -7939784, -8702677, -6175626, +30351998, 1758252, -8749922, 2714419, 10259066, 1369558, 6135361, -16285979, -1778653, 27231704, +-811212, -10644540, -16549583, 552440, -12226161, 7727183, 7933342, 9548249, -16898548, -17699560, +-4643397, 3033321, 5930813, 1901060, 190052, 485868, 6568079, -4300873, -1643899, -1293322, +-2755759, 3244311, 2807835, -5368172, -3629247, -8276402, 5209796, -2995203, 2341831, 3716221, +5482526, 4334696, 1960653, 8444979, 652835, -1880659, 4133906, -6150393, 3601867, 2486786, +1831267, 5621576, 6070400, 1180579, -691490, 3585224, 534187, -453119, -6415608, -8501888, +-1486596, -573915, -923418, -16651588, -701690, -1897839, -2915209, 5122822, -24552180, -11016054, +-13860396, 11731703, -6007586, 17339320, 10186052, 22010634, -11014444, -664646, -17293148, 14754823, +26230440, -7995619, -21180632, 2296734, -4476430, 32670206, -8171712, -12479564, 12180527, 7058242, +4997195, 12460774, 3982509, -40511204, -23622, -2486249, 15748571, 28881508, -27212912, 1323924, +7947837, -12719009, -2792266, -36702108, -8528194, 19106162, -30575872, -17942226, -9494562, -11639898, +11969537, -7104950, -10994579, 16553878, 4796942, 6207302, 16638166, 2118493, -5932961, 12219182, +17467632, -16867948, -12925167, 26492432, 17877802, 6361921, 8179229, 6475200, -11949673, -16755741, +-169651, 510027, -3651259, 5654325, -10460930, 7610682, -14430016, 6085432, 33195802, -15226196, +-12967043, 18633178, 5140539, -5946382, 11458973, 16417512, 11837467, 14545980, 6915434, -6933688, +5734855, -17269526, 9256728, 4294968, 4828080, -8605504, -2803003, 2183991, -969052, -1461900, +-2815351, 6093485, 11155641, -4086662, -11046656, 7249368, 12923557, 7152731, 4999879, -15130096, +9228811, 1343251, 4931160, -2138894, -5432060, -891743, 7758859, 1066763, -1596654, -6323266, +-686658, -3537979, -2060511, -2727304, 3374234, 7821136, -4628364, 658204, 4568235, -1477469, +-962073, -3706557, 600222, -2358474, -3188476, 7044820, 2369211, 9690520, 8708046, 14256607, +-33018634, -60918744, -28118614, -4267050, 20696910, 1467268, 22822920, 21118892, -6441377, 3411815, +-5231807, -11605002, -19112604, -11110007, -13819057, -8026757, 21653614, -28272160, -4986457, -23574538, +-29272886, -5156645, -29547228, -23753854, 2809982, -6257231, -3497177, 5298916, 25751550, 1737314, +-18868866, 996432, -2363306, -5724118, -24480776, -1682017, 28919088, 2595771, -623307, 11669963, +22428320, 15084999, 3808026, -9296994, 7723962, -7832947, -20827370, -38044284, 35921496, -4693863, +29893510, -2663954, 236760, -10939282, -17532594, 31532576, -18174690, -14779519, -1699196, -23241678, +-21870510, 17864916, 13035226, 6767258, -2495913, 9006010, -16212965, 6044630, -13200045, -18538690, +-20232518, -15815680, -6652905, 15307263, 767725, 5361730, -9488120, 5272073, -12349642, 8603356, +6624987, 6056441, -4187593, -743029, 7571491, -2371359, -9705015, -7384660, -9614284, -1067836, +-7167227, -1865626, -2690797, -2790118, 2494839, 853625, -3988951, 1316944, 4639639, -1588601, +-3406983, -7634305, -341987, -5347235, -979789, -1132798, -3776887, 8240969, -8338142, -7863548, +-3859028, 4210142, -7425462, -7512972, 714038, -6344741, -359167, -1427003, 3033858, -1148367, +803159, -5211943, 1625108, -10408853, -5389110, -1904281, -21522082, 4497368, -5136781, -15904264, +-23083838, -656056, -22068078, -26506390, -4021700, -12342662, -28266254, -40101036, 4875862, -15446313, +7691213, -3300146, 15244986, 32977296, 2051921, 3011309, -16601122, -18600430, 15460272, 7985955, +-11936788, -394600, 10193568, -23071490, -17059074, -1686848, 29009282, -25132538, 643171, 119722, +13515188, -21543020, 22259742, 11051488, 6517613, -1055488, -8857296, -24937654, 33286, -6340983, +9118216, -13763223, -32176822, 26239028, -19287088, -9217000, -1107565, 25657598, -19649476, 8668855, +-16102369, 9615895, -5684389, -24579560, 11740293, -31179852, -6543383, -9325448, 10927471, 24599962, +-14330158, 8769786, 25667798, -20928838, 3562139, 5608691, 6172942, 6978248, -36967856, -11674258, +-6114423, 12818330, 2977486, -619012, 6944962, -7095286, 14979235, -3271691, 3519726, -14858976, +12509092, 2601140, -22774064, -11028939, 10901164, 12912282, -1803349, -4021163, -8859981, 12053289, +1684164, -386547, -23740968, 3288871, -11390790, -18636400, -5397700, -4240207, -2275259, -11222213, +-13629005, 4296041, -3121368, -7344931, 3946001, -2000381, -1955821, 166967, -3668976, 664646, +7350837, -14533096, 1367410, 1967095, -4624606, 9358734, 9263708, 9949292, 4187056, 5735392, +-6778532, 2104534, 240518, 2359011, -3162707, -556735, -342524, 3736085, -2858301, -6923488, +5850819, 43455404, 4551055, 18290656, 50070728, -23477902, -13014288, -19696184, -7191386, 22890566, +1617592, 28220082, 7726110, -1172526, -10484552, 21282100, -13258564, 4718559, -8829379, 8688182, +-14055817, 16169478, -7859254, -3984656, -9242233, 12386686, 8697846, -14011257, -3203509, 13045426, +4083440, -9066139, 971200, -11609833, -37448356, 16082505, -19637664, -29064044, 17920752, 7700877, +19374060, -2024003, -18717468, -7246147, -4958003, 10984379, 15048492, 16424492, 27850716, 27174794, +-12089259, 3546569, -28939490, 57445, -21055004, -37981468, -3649112, -31013958, 10045392, -24821152, +-16115791, -16525960, -22986664, 2027225, -5404143, 1681480, -6801081, -3173444, -1953673, -40176196, +6433324, 5796059, 9163850, 18886044, -3561602, -32007170, 18435610, -20830592, 11936251, 11430519, +25977572, -14354318, -12825309, -8812736, -4967130, -18714246, 7460895, 3962644, 2411624, -4705674, +6606197, -9494025, 9429601, -1830730, 2033130, 2472291, -11282342, -356482, 4560719, 10970420, +-2854006, -7082401, 5057324, 7505992, 9774272, -6336688, 190589, 5106179, -530428, -1342714, +-3458523, -7468948, 5192616, -437550, 3367254, -4305705, -420370, 6284611, -4226785, -7042136, +-3730179, 760746, -2731062, -12145631, 19203336, -5141613, -3779571, 1353452, 3797288, -3485903, +3655554, 4274030, -1717987, -651224, -2441152, -4014184, 31324808, 58100708, -31830540, -26038240, +-45010184, -92026120, -22582402, -9822590, 20653424, 12198781, -7822746, -17932562, 25207700, 30448634, +2767570, -1702955, 280784, -24450712, -14184129, -17410724, -13098040, -25858924, -255551, -6710887, +-3007551, 17340394, -23983098, 19042274, 18174154, -5896990, 9391483, -1311576, -42754788, -30771294, +-16962436, -15861314, -7122667, 3114925, 16564615, 5078799, 8926553, 41076532, 37650756, 8235063, +-27896886, -14820322, -1180042, -14654965, -26461294, -66420596, -55541444, -25296284, -5934571, 2424509, +14494978, -46180564, -26417806, 23475218, 27612882, 32822676, -30198452, -36992016, 11951283, -22696754, +54415624, -27768038, -3131568, -16481937, -8740795, 7176354, 16088411, -8373576, -21521008, 19628000, +19360638, -4744865, 22175990, 19367082, -43130600, 38206956, -25023016, -250719, -7388418, -26145614, +-7269769, 12667469, 9685151, -2483565, 4992900, -16110959, 310848, 7499013, 10604274, 16411070, +-12694313, 2139968, -3679713, -7283191, -17961016, -2627446, -17311940, 14759118, -2893734, -18760954, +2820720, -21433498, -1509681, 2063195, -4983773, -9550934, 498216, 1192390, 2068027, 6345278, +-1435056, -833761, 12090333, 3466576, -12500502, -14688788, 3692598, -9939091, -20141250, -7421704, +-18968724, 5592048, 5738613, 14154065, 1994476, -15187541, -10915123, 10807211, 54783380, -18240726, +17663590, -747861, -24378772, 3789772, -49221400, -11060615, 10596758, 998580, -28638842, 16996796, +50210852, 35243428, -15504832, -31388158, -13352516, 3573950, 52774412, 7138773, 1369021, 247497, +24429774, 25121264, 6604049, 19219978, 15599858, 29528438, -8341364, 3420405, 18895708, -17129940, +-26094074, 14755360, 43347496, 9438191, 21050172, 2071785, 12959527, -57863948, 10810433, -2200634, +13179107, 56854628, 23017266, 7744900, -5532992, 25518012, -5701032, -11866458, 9112310, 15884937, +33548526, -10704669, 20904680, 3854196, 5900212, 13222594, 17056388, -456340, -21985938, -13666586, +5332739, 42908332, 29506426, 22866406, 24852828, 20736638, -5744519, -52968220, -37918120, -72688024, +-826244, 22259204, 42084772, 6594386, -30348238, 10165651, -18696530, 6142877, 14688251, 4446902, +-8629126, -4843650, 390305, -4034048, 11979201, -7976828, -20906290, 472446, 7306276, 9478456, +-13415330, -6146635, -25172804, 6373195, 11365020, -9717364, -8482024, 6424198, -4679904, -6233608, +-5188321, -19730542, -3920232, 20461224, 13121125, 18527416, -9611063, -20868172, -15142981, 13616657, +11084237, -4887136, -538482, -1239635, 4204236, -5855114, 12674448, -13930190, -7453379, 991601, +2765422, 8052527, -16781510, 3571265, -12186970, 33643552, -9374303, 7330436, -10465225, 3866008, +338766, 3142306, -1240709, -7994008, -20573968, -9014063, 45056356, -2102387, -20656646, 4842576, +-3775813, -17294222, -13547937, 2222109, 23850490, 63986960, 29004988, 56686052, 29939144, 25029996, +24244016, -17215840, -14037564, -16482474, 7260642, 46409804, 15155329, -39294656, 16957604, -42225436, +21122650, -26881664, -5524402, -23631984, -24974698, -1486059, 3359201, -650688, -31275414, 40626096, +-8180302, 15091441, -39584028, 10354092, -9102646, -12511240, 20723218, -17141752, 41315436, 4576288, +-16103980, 1843615, -12096775, -17145510, 11726871, -28178744, -5851893, 34803192, -7518341, 14090177, +-1753957, -25677462, 28002650, -15269682, -57723824, 6955700, 4488241, -479426, 6522445, -8223252, +-11128260, -3478387, 26345330, -49971408, 29541858, -11961484, -6768869, 32489816, -19981262, 9390409, +12232067, 47279536, 16702054, 20775294, -3205656, 28167470, -22513682, 22299470, 3869766, -8919036, +6207839, 1140314, 1115081, -12478491, -2997887, 1980517, -5033165, -9389335, 19504520, 119185, +-1180579, -5896453, 6647536, -7776039, 17426292, 9807021, 9476845, 1932735, 146566, -1834488, +14641544, -11738146, -14543296, 5493800, 7805030, -900869, 13192529, -5742908, -2325188, 462246, +-4125316, -14577119, -14105746, -1546188, 5123359, -7338489, 2808372, 4418448, 5466420, -4065724, +-6442, 9257265, -4025458, -13540421, -24250996, 39779452, 36911484, 128837208, 51993264, -70030512, +-32937030, -34240552, -53868552, 37693168, 115778360, 46476376, 22010096, -28870234, -7926362, -1789928, +-1294933, 55736328, 38149512, 24421720, 83715352, -99963216, 6622840, 52552684, -12574591, 10972031, +54986856, 9834938, -15528991, 29815662, -55083492, -110566952, -10413685, 11131481, -42799884, -4621385, +59557776, 10274636, 3689914, 22839026, -46672336, -95190432, -87005296, -39399884, 29081760, 57043608, +125942936, 31885300, -15817828, -15492484, -33801928, -74854840, -22569516, 55337968, 55642912, 58409944, +56922276, 35897872, 29797946, 8899709, 13211856, -47943648, -29352880, 7558606, 13852880, 25149182, +30700426, 75093744, 19917374, 43878996, -28251222, -27827630, -50319300, -10608569, -38385732, -8828842, +78288128, 100456064, 2567317, -3612604, -61887256, -71380208, -40036612, -16617765, 40329744, 21715892, +-3935801, 15300284, -5082557, -9789304, -18341658, -17297444, -1921461, 5022428, 4160750, 22493280, +-1113470, 42950, -10758356, 907849, -13500156, -4167192, 559956, -20095616, -8768713, 999117, +-5093295, -882079, 12641699, 11317239, 25805238, -10518375, -3981435, -24958054, -20084878, -15082315, +26768384, 17208860, 8853001, 9331890, -7428146, -22049288, -17620640, 1497870, -12192875, 22908818, +33711200, -528281, -7171522, -22667226, -7802345, -92177512, -56281788, 32668058, 86888800, 100357280, +210000816, 127497176, 87159920, 76317808, 60034516, -10698227, -90412816, -99729144, -192505264, -205443312, +-194047696, -124608816, -42981884, 42912092, 75094816, 124100936, 122654600, 85487032, 85157928, 108008760, +104366632, 92957048, 59581932, 40830108, 36735928, -3994857, -5866389, -120255864, -85031224, -107628120, +-129500240, -54943368, -126447056, -102744744, -186508960, -163917968, -115524960, -77787224, -11062225, 96962648, +118286080, 98985576, 106548472, 97919352, 182476512, 236658064, 212241712, 209745264, 185847536, 178668496, +133554696, 132726304, 29045254, -90016608, -186213136, -178899888, -266694928, -223225024, -324016096, -386887968, +-343030432, -326582880, -195870912, -137057776, 25600690, 64553360, 153186448, 226628240, 350367328, 302690496, +437952448, 377502944, 271227712, 265872976, 121760712, 8508867, -23691576, -95106144, -164907952, -198085504, +-235736256, -205097040, -184948272, -179319712, -144844016, -150151520, -122494616, -108622408, -32347546, -23364086, +30482994, 69508680, 80850072, 104324216, 149424592, 179727744, 192560032, 200594304, 148203760, 121882048, +119082264, 43663176, 29694868, -67014376, -159148400, -213157072, -217159984, -244045408, -154161408, -176853328, +-117088864, -85226112, -22772454, 42069204, 84035328, 126450816, 132184600, 197736000, 204031344, 195104800, +166320992, 148402928, 59906204, 14995878, -36223756, -84079888, -159335776, -188798176, -155959920, -106448616, +-93170192, -65768296, -59151900, -31368830, -2874944, 8151848, 6787659, 28993176, 33787432, 51832204, +45134736, 41385768, 39642548, 44386340, 32503238, 30578020, 35675072, 37160592, 22272090, 14761803, +2409477, 1009317, 6252399, -2629057, -19440632, -14954002, -20917028, -26305600, -34731788, -30588220, +-25763898, -16822850, -20348482, -15826418, -13462575, -3526168, -7865159, -5773510, -2894271, 6385543, +1772748, 6390375, 10907606, 17753784, 13412646, 17358110, 14151380, 19922206, 16814796, 13439490, +4458176, 6264210, 2451353, 2217277, -5274757, -3982509, -5122822, -1787780, -6752763, -3617436, +-6681359, -4328790, -5618354, 1537598, -1545115, -2152852, -6394133, -3369402, -5775121, -3454764, +-9378598, -6380174, -5711770, -981400, -3026341, 1549410, 632434, 4584341, 2607045, 7270306, +5428839, 7226283, 3569655, 5640366, 2413772, 5518496, 2407866, 4931696, 1526861, 3433290, +-510027, 1289027, -2632278, -290984, -3603478, -694174, -3555696, -360240, -2972117, 301721, +-2369748, 894427, -1761474, 1389959, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -5146982, --13877039, -1143535, -2240899, -1867774, 176631, -2287070, 833761, 1379758, 5645735, -1895691, --259846, -5215701, 353261, 5281736, 332860, 3821984, -1156957, 1613834, -2233920, -3289945, -75162, 3631395, -501437, -4517232, -224949, 4400194, 1392106, -1868311, -1605244, -195958, --642635, -1015760, 12885, -733903, -1549946, -185220, 860067, 620086, -241592, -3446175, -5090073, 6995965, 183073, 817118, -2867428, -1603097, 512175, -3650185, -4093641, 2421288, --3333968, 2391760, 3058554, 3087008, 1115618, -470836, 793495, 641561, 2289218, -5029944, -390842, -654983, -3700651, -4955856, 102005, 2463701, -1927904, -271120, -617938, -359167, -3445101, 1718524, 424128, 1353989, -1181653, -4085588, 1539209, 645856, 3444027, -4202089, --3216931, 2346663, -1917703, -889595, -3163244, 688805, -1877438, -1721208, -2147, -1385127, --1531156, 387621, -849867, -398358, -1738388, 1021665, -257698, 74088, -499827, 828392, --210453, 250182, -351650, -294205, -30602, -581431, -79994, -12768401, -2916283, 4861903, --682363, -3982509, 1676648, -9486509, -3616363, -1436130, -1690070, -4940823, -5133560, 2710124, -4281009, 3600256, -4800700, -7156490, 811749, -4219269, -7556458, 1662152, -471910, 2072322, -8513699, -2869575, -888521, -5440650, 7357816, 498216, 3675955, 2462627, 6042482, 2998424, -1875290, -6056978, -669478, -5574868, -1508070, 170188, -2301566, 1779190, 1573032, -2674154, --5098663, 3184182, 5338108, 1428077, -2524367, -4016331, -2434710, 1192927, -4427038, -5697274, --1585380, 2713346, -1537061, 1301912, 3554622, 2163053, -2608119, 5056787, 479963, 4296578, --3636764, -3151432, -1760937, -2222109, 3073586, -1786706, 207769, 5106179, 1869385, 59056, --4871030, 1264331, -1924682, 3561065, 5306432, -979789, 469225, -2478196, 2033667, 4573067, --1611687, 2823941, 1350767, 545998, 2428804, 883153, 157303, 1839320, 765041, -221191, -54224, 775778, 816044, -927176, 687732, 576599, 1024887, -665183, -2612951, 3293703, -4502737, 1845762, -2834142, 1992328, -1334124, 1387811, 8481487, 5259188, -7174743, 4891968, --3949223, -1919850, -1040456, 171262, 3607236, 165356, 9927280, 2899103, -3810173, -2471754, --2471217, 7024419, 1647120, 6767795, 2212445, 4568772, 7028714, 8093329, 3069828, -871878, --799401, 1254667, -6449967, -5967857, 1927367, -4519380, 2601140, 1288490, -1535988, -629213, -1904818, 6768332, -2190970, -2238215, -3444564, 8636642, -1147830, -10663330, -5328981, -4197257, --3880503, 4475893, 4270808, 3792456, 5617281, 2538326, 3529390, -101469, -314606, -102005, -5653251, 1887638, 3327526, -7396471, 513785, 404264, 430570, 554588, 3272228, 2336462, -969589, -3547643, -3566970, 2158221, 1773822, -995359, -190589, -2840047, -3663607, -2951180, -2094870, 3654480, 476205, 282394, 1289027, -959925, -88584, -740882, 692027, 714575, -418759, -411243, 1121523, 1804423, -205085, 257698, 430034, -184684, 506269, -618475, -1307818, 103079, -187905, -714575, 1164473, -2063732, 1276142, 456340, 976568, -56908, --1222455, 352724, -561567, 18983756, 4050154, 3003793, -2382096, -1180579, 1745904, 1446867, -4946192, 6780143, -389231, 9922448, 3824132, -3331284, -3318936, -124554, 4603131, -430570, --2642479, 5307506, 644245, 14250165, 3615289, 2916820, 498216, -1245541, 581968, 2256469, -2655901, -523986, -55298, 7698192, 976031, 8462159, -4282620, -3896609, 2669322, 12646531, -3546032, 3141769, -1171452, -5306969, -2215130, 1806571, 287763, -12885, 374199, -7580618, -459562, -3274376, 2995203, 2535641, -3121904, 1877975, 2612951, 1920387, -3699041, -3605088, -798864, 1418950, -73551, -4666482, 1163399, -1752884, 2976949, -336618, 511101, 2046015, --820339, 1176284, -1787780, 625455, 10915659, 1347546, 3813394, 231928, -3114388, 1907502, -572304, 3507378, -6203544, -4165045, 2007897, -798864, 1172526, -1496259, 2245731, 2051384, -161598, -2613488, -1109712, -3591130, -741419, -753230, 2284386, -1606318, -535797, 494995, --410706, -793495, -972273, 781684, -1027571, -1147293, -99321, 136902, 579821, -2406256, --1054951, 719944, 277025, -2629057, -745714, -95026, -3578782, -1388348, -459562, 2841121, --4218732, -656056, 4169876, -2075543, -6615860, 25770, 10764799, -682363, 8441221, 4420058, -11699491, 1484448, 1048509, 4341675, -3350075, -6941204, -9258876, 2237678, -4733591, 10901701, -6159520, 7721815, -1472100, -3119220, 928787, 1785096, 3555159, 10209674, 1191853, 4293357, --4656819, 3298535, -3308736, 1453310, -1791538, 3406446, 5791227, 851477, 5533529, 2101850, -2763812, -1539746, -1352378, 7486128, -1743220, -1790465, 5580773, -3278671, -323196, 864899, --2454037, -3178276, 2469606, -3654480, -716186, -4683662, -10138270, -1070521, -1542967, -199179, --10561861, -3967476, -3223910, -2670396, 3971234, 10470593, -2649458, 3408594, 5444408, -1453846, -1027571, 985695, 622770, -3725884, 4144644, -4743255, 1263257, 3520800, 9759239, 3113315, -2896956, 951872, -118112, 3007551, -3513820, 35970, 2024540, 1019518, 186831, -3882114, -2370822, 2944200, 2909304, -481036, 2171643, 1239635, 627602, 2029372, 1155346, 302258, -1132798, -204548, 885837, 624381, 751619, 1203128, 1447404, 1748052, 1193464, 1196148, -1292785, -677531, 1174137, -13617194, 1096827, 7455527, 3787624, -7599945, -669478, 449361, -1724429, 2905546, -530965, -5897527, -5820755, 976568, 9625559, 4703526, 5673115, 9859097, --6702834, 7057705, 12816182, -1107028, 2822331, -7240778, 2427730, 2716030, -6362994, -3308199, --1438277, 3041374, -6426345, -8304856, 1523103, 981937, -7259569, 629213, 2190970, -1412507, -15219217, -822486, -10908680, -695785, 3674345, 8651675, 3107946, 3897683, -7016366, 1952600, -2128693, -6168647, -470836, -1030255, 10555956, 6521908, -1825361, -3627637, -8286603, 3562139, -3238405, -4843113, -225486, 1983201, 3161633, 3316252, -4245575, -108448, -969589, 9971303, --8428873, 1035624, -2235531, 8978092, -697395, -2190970, -3815005, 1126892, -3945464, -9136469, -203474, 6948720, 2030446, 4355097, 1037772, -3293703, -1355599, -1663226, 5871757, 2347200, --1652489, -224412, 5330592, 4013647, -1559073, 571768, 805306, 1153199, -143881, 2147484, -1453310, 1310502, 99321, -759136, -380641, 420907, -806380, 249108, -1109175, -363462, -847182, -2802466, -692027, 5303748, 4654671, 1755031, -3578782, 1050120, 2174327, 16126528, -10557566, 8049843, 11200201, 4626754, -1087164, 1655173, 4069482, -11362336, 5730023, 200790, -6165426, -4571456, -2455648, -7329362, 1954747, 12961674, -12802224, -8031589, -13605383, 6825777, --3218541, 426276, -6280853, 783295, -2442226, -6144488, 2180770, 2989297, -9738301, -1327682, -1561221, -2134062, 4879620, -13907641, -6901476, 14171781, 1240709, -280247, -1593433, 468151, --7406134, -7695508, 257161, -11183021, -2772402, 1082869, 2783139, -4835060, -1309428, 13790603, --1102733, 4808753, 10081362, -9639517, -3548717, 2200634, 2220498, 1792612, -3160559, -6911140, -7635915, -926639, -7539278, 5313949, -1540283, 1197222, 1821603, -4013647, -2617783, -1739999, --3214783, -4349728, -5377299, -5019206, -6544457, -1986959, -2901787, -703838, -1048509, -159988, -602906, -2681133, -2294050, 1405528, 1524713, 2801393, -392453, -1264868, -3955128, -1146756, --4537633, -2842732, -814970, 746787, -548682, 484794, -1326071, -738734, 2965138, 1137093, -1983201, -2262911, 328028, 419296, 598611, -4483409, 85362, 1197759, -235149, 2225867, --610959, -790274, 237834, 623307, -26830660, -14705968, 11905112, -4511327, -5820218, 7429757, -6207302, -11276437, -15547245, -4813585, -5646272, -5671505, -1181116, -10480257, -7777112, 3995393, -282394, -14142790, -15851114, -8695161, -4440460, -684510, 7919383, -471373, -6002217, 4526896, --13216688, 500364, -743029, 660888, 4439923, 2612414, -9664750, -7073275, 5592048, 2100776, -21144660, 5313949, -7212324, 1052804, 565325, 302795, 5491116, 1156957, 2221572, -2107218, --4799626, 1463510, -12355547, -2212445, -5454609, -6400038, 1291711, -9665824, 11225434, -1393717, -4624069, 8181376, 2291365, 4366908, -644782, -5203353, -336618, -614717, -6660421, 8578660, --3638911, 15217606, -606664, -287763, 600222, -3876208, -8312373, 2615635, -6543383, -2554969, -8779450, -11410654, -11370389, 7610682, 7092602, 6220187, -9646497, 6947110, 2782602, 4073240, --377957, 1814087, 1789928, 5413807, 2204929, 1371168, 3896072, -475131, -323733, -3206193, --2610266, -468688, 2633352, -3447248, 409096, -347892, -2127620, -1213865, 832687, -4452271, --2816425, -3307125, -650688, 1510218, -79994, 3397856, -1174137, 3551938, 252866, 1356136, -506269, 2763812, -2149094, -1646583, 3073586, -1362042, 380641, 291521, 5387500, 19833622, --11080479, 9474161, 3858491, 7077033, -2828773, -10711112, 1522566, -2757369, -10084046, 20471962, --1450625, -5596343, -20121384, 12437688, 3423626, -144955, -7522635, -8617315, 224949, 20798380, -7706245, -721018, -2049773, -8801999, -7242926, 6069326, 2642479, -6862284, -4897337, 7321309, -1803886, -205085, 6211060, 9659918, 1502165, 12723304, 14319958, 8791261, -3304441, 3257196, -1168768, 2465848, 7472170, -10510859, 11166915, -665720, -5677410, -8499203, 52076, 7439420, -5136244, -10047002, 2227478, 8135205, 1235340, -7244536, -15862388, -14318347, 3808026, 6495601, -1077500, -5480915, -740345, 11643119, -5282810, -8580808, -16747151, 1890859, 3260954, -12378633, -4705137, 12619151, -5675263, 9844065, 3389803, -11450920, -8568460, 1024887, 11903502, -1107565, -12505334, -2040646, -4362076, 2758980, 6385006, 1826972, -2114735, -3221762, 2159832, 5777268, -4601521, 908922, 7438884, 1509681, 5343476, 1459215, 7299834, 1236414, 4516695, 64961, -3614215, 2075543, -1773285, -5179731, 481573, -6078990, -846109, -2402497, 999654, -668404, --214748, -5376762, -493384, 2734284, -2675228, 511101, -629213, 545461, -340376, -3840238, -636192, -689342, 23946590, 15640660, 3629784, -4846334, -2500745, -3403762, -16343424, -6692633, --155693, 10410464, -7480760, -4278325, -3467112, 119185, 17334488, -13489955, -3537979, -804233, -8172249, -2868501, -9857487, -16668768, 6008123, -11536282, -5185100, -7219840, -7678328, 2373506, --12939126, -6381785, 11610370, 17220134, 867047, -10880763, -9568113, 15876347, -1702418, -8698383, -16721918, 453656, 1107565, 638876, -18061948, 7321846, -6635725, 6535330, 6191196, -12401718, --1251983, -12578885, 4959077, -12200391, -1969779, 5022965, 7000797, -4117800, 4295504, -14791867, -10242960, -1208496, 7022809, 5744519, 4307316, -3333432, -2975339, 14618995, -10043781, 7228967, --2379949, -12564927, -7427609, -898722, 13314935, -7617662, 6305012, 1709397, -3941706, 104690, --14574435, 18524730, 11559904, -2261300, -4922570, 9045201, 4088809, -2747169, -4628364, 965294, --3035468, 4629975, -830539, 2403571, 7866233, 2708514, 6262599, -74088, 2326262, 841814, --976031, 97711, -403727, 5216238, 2250026, 7263327, 1401233, -4173098, 5519570, -2205466, -24159, 3947612, -3680787, -1341104, -1854889, -1712081, 3497714, 1955284, 1909650, 2859911, --152471, -891206, 7030325, -2370822, -2157147, 9166534, 1962263, -6359236, -14010720, -950798, --18262200, 2998424, 1817845, 8843338, -7188165, -1934346, 4957466, 3804804, 5435818, -12651900, -17819820, 12341052, 2480881, 9079561, -3996467, -17948132, 4371740, -7657390, -8150238, 8204462, -20625506, 3408057, -5465346, -7585986, -16228534, -134755, 938987, 25054692, -9752260, -563714, -931471, -934155, -15020038, -17314086, 13749801, 368830, 7889855, -2370822, -19246286, -11349451, -1726577, -3412352, -3932580, -5708549, 12886513, -2845953, 8432631, -9069360, 17880486, -21069498, -10525891, 10683731, 6643778, 5575405, 5416491, 16384763, 8675297, -1357747, 3704409, -25770, -16519518, 24408836, -2659122, 1808718, -7045894, 10125922, 16667157, -11434277, 3638911, -28576564, -18751290, 19038516, 12976707, 17702244, -7965017, -14394046, -851477, -2211908, -4039954, -3131031, --8376260, -6078990, -2989297, -885300, -4610111, 2733210, 5393405, 1901060, -7861938, 1479616, --4292820, -4816269, -2797098, 3233574, 3262028, -1518808, -1831267, -811212, -1225676, 766115, --7603703, 2492155, 1292248, 4942434, 1291711, -421444, -60130, 1022202, 4569845, 1444720, --3857418, 3136937, 168041, 396211, -20685100, -3058554, -26454852, -13572097, 10397042, -10828686, --23527830, 2183991, -12691091, 583579, 447750, -15084999, -14345191, 6483253, 13839458, 4177930, --16109349, 7702487, -18118856, -6351183, -6679748, 5668820, -7449084, -3393024, 8697846, 1487132, --5966784, -12894029, 13646722, 13237626, 17199196, 2246805, -1919850, 608812, 5508833, -1300838, -7051800, -7762080, 9273371, -3651796, 10683731, 8571681, 6448894, -3105261, 441845, -16626892, -5657546, -4185983, 12505334, 2275796, -29072634, 4466229, 14328011, 19275276, -11088532, -15146202, -18127984, 8230768, 12745315, -22705882, 11225971, 28426242, 29940754, 1906429, 710817, 17038672, --11792906, -15712601, 10065256, -17396228, 6531572, -8101382, -6847252, -3841848, -37473588, -21638046, --18250926, 13464722, 5107790, 3786551, -13312788, -5413270, -10057740, -1902671, -5403606, 14716705, -3496640, -5851356, -13074954, -2909840, 8465381, -1350230, -3616899, 2601677, 8861591, -3154117, --5237176, -2509335, -1943473, -601295, 6892349, 6925635, 6016176, -6077379, 7885560, -399969, -2253784, 9015673, -4050691, -4065187, 7859790, 14110041, -3299609, -4605816, -2246805, 1698660, --2543695, -9718974, 1569811, 7099581, 1915019, -9786620, -9374303, 4422206, 3178813, -522912, --599685, -1709934, -6970732, -4772783, -15569256, -29901562, 22863184, 2387465, 7682086, -3882651, -16193637, 419296, -13795972, 10670309, 4355634, -4900558, -8324184, -6543383, 2065879, 3888019, -14343043, -8175470, 11257646, 3569118, 20447802, -29343754, -7864085, -4662724, 3783866, 11959336, -17380658, 3930969, -14103062, 9513353, 13675176, 11491185, -3212099, 3999152, 834297, -4833986, --1967095, 816044, 4428648, 1574642, 10110890, 1648731, -12745315, 11892764, -13215077, -16895328, -2626373, 12181601, -5931887, -4399121, 4436701, 5934034, 10518912, -6028524, 4987531, 23732916, --9479530, -25266218, -32697050, -16547972, -22155052, 10038412, 19226422, 12272332, 4698158, 11541651, -6796249, 12758200, -10947872, 14424111, 7504382, 5835250, 15056008, 19541564, -6095096, -4400194, -5342940, -1317481, 17608830, 6789807, -2697240, 2937221, -21496312, -15065135, 2970507, -884763, -3812320, 1410360, 4507032, -4057670, 11316165, -6026376, -6924561, -6722161, -11314018, -4146254, --2247879, 3666828, 3004330, -1739462, -9722195, -614717, 3200288, 1031866, -3912178, 2247879, -119185, 3699578, -4079145, 1615445, 765041, 4470524, -2180233, 6908455, -4329864, -5024038, -1457068, -904091, -3652870, 1092532, 4793184, 349503, -761820, 29894046, 2917357, 4668093, --6183679, 10839424, -34195456, -15135465, -23363548, -24169392, 9609452, -21096342, 20732344, 23538568, -1058710, 5076115, -3605088, 4277251, -22357990, 9160628, 24790552, -14150843, -28792388, 3769371, --10814728, -9235253, -28085864, 4821101, 10343355, -159451, -3793530, 8988293, -16010564, -2724620, -10447508, -5807870, -14189498, 1660542, -7074348, 14624364, -9713069, -5465346, 13769128, 11866995, -25411174, 3295314, 6145562, -2407866, 6832756, 8972187, 15701864, -4599373, -503585, -9831180, -20709258, -26169772, 28037546, 915365, -11164767, 13047574, -10180683, -7589207, 25784836, -37305012, -6076305, -7944616, 7285339, -14533096, 6955700, 14665703, -7644505, -1464584, -3928821, -6266358, --3308199, 27327266, -31120796, -10734734, 52306260, -19803020, -23095650, 22532472, 13540421, 15000173, --13182865, 925029, -13105556, -7450158, -2068027, -15075335, 3260417, 1896765, -3913789, 5261872, -4799089, -6903086, -12742094, -3401077, -1091995, 4869419, -11250667, -8016020, 273804, -1260573, -2809446, 6867653, 16632261, -7719130, -404801, -1968706, -1768990, 4642860, 1853278, -10058813, --7504919, 7806103, -6481106, 2850248, 2025614, -6193880, 2268817, -1547799, -10162429, -8475581, -4940823, 3095061, -1563905, -361314, 6300180, -14996415, -22873922, 2122251, -8605504, -7895224, --12830141, -16316581, 20547124, 8688182, 1404991, 9488656, 24317032, 14203994, -1554241, 4838818, -16383153, 20671140, -18332532, 8511551, 17495012, 7470022, 6478958, 23891292, 11668889, 4910222, --622770, 10700374, -1097901, 12122008, 10201621, 5432060, -11122355, 21128554, -17331804, -2269890, -26671746, 26175678, -6142340, -23369990, 8877161, -440771, 22899692, 39134132, 8876087, -6090801, -2887829, -22585086, -2543695, -6027450, -4722854, 371515, 20129438, -8667244, 8923868, 24005110, -4205847, -22353158, 14856829, -1213865, 9493488, 22554484, 31983010, -9062381, -8333311, -2804614, --25125558, -37031208, 1129040, -16878684, -2601677, -20446728, -1972464, 590021, 2897492, 15063524, --302795, -10596758, -17390322, 12736726, -5278515, 10890963, 529892, 20338818, 7691750, 7472170, -204548, -6396280, 11586748, -8793946, -9994926, -3102577, -7481833, -2998424, 715649, 762357, --2601677, 3093450, 4629975, 330176, -1022202, 5898064, -4968741, -7274601, 4561256, 5193689, -1182727, -6290517, -7386807, -4421132, 6201933, 8127689, 1209033, -1177895, 9175124, 2450816, -4451197, 3726958, 6601365, 1801202, -1050120, -4788889, 2736968, 5133023, -10448582, 8371428, -24996710, -46860776, 25793426, -19752018, -46162308, -13705778, -11622182, -1668595, -10639708, 5572183, --12761422, -28644748, -17273822, -8591008, -2604898, 3242164, -11775727, 11475616, 22421340, 791885, --1409823, 6103686, 1374390, -4226785, -8329016, -4739497, 6057515, 6618545, -2001455, 6288906, -27528592, 7530689, -8069707, -27379342, -4383551, 19246286, -23528904, -11113228, -8979166, 220654, --1823214, 14762876, -4924180, 1708860, 20378010, 7216082, 22607098, -3261491, -10729365, -4986457, --5851893, -5951751, 10877005, 1101659, 7336878, 13715441, -24322936, 3476776, -6479495, -15197742, --11453067, 23614804, 17019344, 767189, -11643119, 4697084, 9944460, 940061, 6857989, -16396038, --40341016, -18757732, -14819785, 14642617, 1416802, -1960653, -6882685, 2783139, -4625680, -12832825, --13283797, -6987912, 16207059, 12203076, -18283676, -22841710, -8980240, 1479079, 13701483, 5479842, --4502737, -6208375, -4780836, 3107946, -10190347, 1396938, -6995965, 471373, 10300942, 11003706, -2832531, -5861557, 3470871, 7897908, -382252, -1833414, 5811628, -8275328, 11241540, 10078141, -3838627, -303869, -598611, -1261110, 9398462, -3854733, -5163088, -5862094, -8310762, -8139500, -2443300, -3079492, 3325379, -2421288, 1588064, 5893232, -3096135, -5920613, -8577050, -2461553, -3763465, -6118181, 13143674, -18101676, 21843666, -1401770, -35512936, 7548405, -17321066, -3134253, --2928631, -3788698, -22760106, 7406134, 780610, 18095234, -38646652, 979789, 18466212, 2627983, --9475772, -19005768, -1906429, 11451457, 16109349, -13369696, -5297306, 9255655, 18461380, 17567490, --17047262, -3064459, -27383100, 12896176, 13273596, 8797704, -8105140, -1794760, -7761006, -2557653, --9416179, 2900714, 19243600, -6993281, -8179229, -6458557, -11591580, 22619446, 18757732, -1593433, -26589606, -950798, 9161165, -23596014, 19144280, 8971650, -27295590, -8424041, 30273076, 12993887, -7862475, 6222334, -14933601, -11160473, -15983184, 26912266, -14287209, 20834350, 20842940, -23986318, -55497956, -11787001, 34226596, 1716913, -8371428, -14806900, 25577604, 10255845, -20764020, -12193949, --44030396, 17569638, -6509023, 20170240, -27324582, 30086782, -23494008, 8978092, -9454834, -6732361, -19127636, 1968169, 1259499, 11084237, 7097434, -4934918, 12328704, -1493575, 3190087, -8934069, -1148904, -1165010, -6327024, -8999030, -302795, -10004589, 4181151, 4368519, -2997887, 8719320, --3775276, -5207648, -7956964, 5129265, 394063, -1216550, -15091978, 6514929, -3557844, -17388712, --6218039, 4944044, -5624260, -9036074, 5303748, -4943508, 4244502, -9221295, 3582540, -9409200, --2360622, -1510755, 4296578, -2321430, 156229, -3167002, -3990025, 12985834, 23484344, 1470489, --18865106, 8924405, -36849208, -10324565, -33428268, -47303696, 2077154, -18418968, 6514929, -3854733, --6869264, -18218714, -11788075, 10128607, 28740310, -23895050, -4552129, -40904732, -35100084, 9472014, -14777372, -22609782, -22796612, 1130113, 5683853, -38008312, 2531346, 479963, 20110110, -17234630, -1275605, 15913928, -10040560, -19930258, -21405044, -10918344, -19467476, -16711181, -20343112, 28943248, --36629092, -23355496, 34160560, -1379758, 10030359, -28439126, -4363687, -8321499, 1293859, 47091632, --6164352, -1225676, 5236102, 21910238, 1074279, -21280490, -8743480, -15423764, 5663988, 56417616, -11592117, -20272246, 43300248, 30594126, -26865020, 31565862, 52837760, 168577, -19825032, 35291748, --5606543, 37146100, 34299072, 2559801, -1175747, -10321343, 24124832, 18878528, 11482595, -20241644, --6066642, -13156559, 30407832, -4035122, -19925964, -10238128, -20032802, -9119289, 20990042, 2077690, --10176388, -3892851, -12585865, -2442226, 18830748, -9027484, 5069672, -2047089, -16832514, 18647138, -2863670, 7363185, 9735617, -12355010, 4348118, 17134772, -2504503, 501437, -8702677, -214212, -2020782, -5875516, -4639102, 3111704, 13490492, -8422431, 5716602, -11186779, -4633196, 513249, --3036542, 12521440, -4224101, 416075, 1862942, 4501663, 1076426, -6158983, -765041, -3537979, -26796300, -67444944, -40074192, -43944496, -14557255, -29390462, 36430448, 13323525, 29928942, -4732517, --56892212, -9068287, 9577240, 39005284, -1331977, 8790724, 36429376, -13873818, -25883084, 2313914, --1478006, 45304924, 29987998, -15294915, -20471962, 48132624, 3668439, 23882166, 11953431, 44857176, -39344584, 29730838, 3421478, -25992068, -13691282, -19972672, 38042672, -18632106, -25650618, -14587856, -1574106, -1578401, 16920560, -16952772, 6195491, -77420008, 8806294, 11380053, 12811351, -32731408, --29650306, 8594230, 27237072, -33798172, 13069049, -19497004, -14576582, -22927610, -1875827, 22982906, --15723875, 25302726, -6503654, 9496710, -47841640, -31508416, -1127429, 24770688, 17877264, -35578436, --37526204, -18174154, 3579318, 39118024, 16450262, -4585952, -27969900, -33065880, -10971494, 5969468, -28192166, -3275986, 9337259, 18080202, -7246147, 6001680, -18722836, 10755135, 6607807, -12404402, --9664750, 163746, 14413910, -14781667, -633508, 22169010, 3526705, 2467459, -99858, -7492571, --15796890, 3082713, -17546552, 19498078, 17382806, 12362526, 1410897, -2607045, -20580410, 11901891, --4324495, 22823994, -5997385, -27972048, -16841640, -4389994, 25966298, 6321118, -5907728, -3760781, --21430814, -11297375, -8847633, -2396055, 11494406, 10273025, -21691732, -12921409, -13466333, -13953812, --5084705, 2784213, -2289218, -8521752, -13506062, -14590004, 1213865, -1995549, -7152731, 12634720, -86019072, 9521406, -47151760, -103507104, -10263898, 62524524, 14716169, 27675158, -3683471, 38301444, --7168301, 17229798, -9568113, 21999360, 29198798, 16716013, -15426986, -33726768, 39638252, 46649788, --11205570, -44850732, -28569048, 5425618, 25645250, 9469866, 8639864, 2340220, 5912023, 3690451, -5848672, -8310762, -53594748, 325344, 31754840, 25697326, -11230803, 3153043, 19218904, 44557064, -26146150, 22149146, -26749056, -17500382, -5272073, -4190814, -40153112, 28413894, 15686294, 29487634, -58237608, -29826938, -20313584, -2168959, -17196512, -13642427, -26633630, 46336792, -28581396, -29423210, --31601296, -10215043, 57713088, 15481210, 22011708, -744640, -5680631, -13040594, 35605816, 29879550, --15819438, -33681672, 11070815, -3999688, 13358959, -31568010, -13201119, -18178986, -24992414, 15239618, -23444078, 4949413, 234613, -12477417, 6503118, -4628901, 21750788, 2201171, -8360691, -4049081, -6809671, 14777372, 15181099, -8827768, 9188009, 5501316, 4461398, -383863, -17499844, -1875827, --14310831, -5134634, 180926, 2597918, 4024921, 5187247, 5062693, 14981920, 21153250, 19714974, --2328946, -4551055, 1945083, -9306657, 11443403, -13191455, -2119566, 11074573, -1151051, -2486786, --22238804, 11025718, -22178674, 7364795, -5333813, 3550864, -2349347, 2570538, -1466195, -13424457, -7122667, 6719477, -1548873, 4524211, -1181116, 3849365, -2185065, -3568581, -1045288, -1199907, -387621, -792421, 440234, 380105, -4894115, -2135673, -1187559, 2762738, 629750, -1434519, --2834142, -2985002, -149787, 681826, -1438277, 53150, -1887101, -578210, -2106145, -24770150, -1938104, 66831840, 50955492, 8282845, 3606162, -35897336, -69956968, -60684668, -30140470, 50235548, -54354420, 57013008, 31121870, -8089034, -36495948, -33167884, -22290880, 14517526, 21804476, 39082592, -3182571, -29329794, -25402048, -5237713, -25453586, -11440719, 5067525, 40457520, 56983480, 37417220, -17310866, 16508244, -36407364, -4042638, -72764800, -80631032, -51093468, -24177444, -22660248, 38006164, -58741732, 65831648, 58848032, 51592220, 20809654, 3673271, -25298432, -6621229, -40463960, -70664024, --6369974, 6812892, 6381248, 23736136, 13510357, 24078124, -79897128, -43162272, -28910498, -45767708, --20062866, 34269544, -20870856, 23153632, 2603824, -20726976, 16339666, -17280800, 18434000, 22385370, --17477832, -33833604, -70900784, -67900208, -51468740, 25156160, 8156143, -9502615, 12512313, 3926674, --397284, -32276680, -23509040, -60274496, -20738250, -22057342, -3107946, 44515188, 46649252, 7189776, -23750096, -14395120, -33512556, -58617176, -39511552, -36106716, -1994476, 18281528, 9568650, 14955613, -15053324, -10565083, 8825621, -9943923, 9176734, 2786897, -1125818, -1843078, 7432978, 7566659, -14878840, -3244848, -4487167, 15001784, 12927852, 2964601, -5480379, 11759620, -119309360, -60833916, --31849866, 40246528, 9195525, 153073168, 156662160, 118302728, 152738160, 160276368, 145409344, 104582456, -94716912, 105336760, 41785736, -6118718, -65190088, -100480760, -139128480, -134955392, -201452224, -122057064, --79568568, -63006632, -89864136, -47113644, -13028783, -67160944, -52323976, -55054500, -12548284, -33013266, --11874511, -44739064, -22854058, 26861800, 27622546, 8393977, -8352638, 29263222, 23536420, -67754184, -14044543, 46009300, 100413648, 73819752, 95597920, 39356932, 37953552, 159487168, 86237040, 163203392, -54554676, 153072640, 105552040, 133657768, 180063280, 170729248, 138299024, 155481568, 172550304, 187961728, -160385888, 185284352, 126290832, 187939712, 150763552, 133922984, 142627808, 78012176, 159681520, 77401216, -46859704, -58645096, 3831111, -86686936, -97592928, -149089584, -176182784, -270648448, -264419120, -249642288, --233574816, -220045136, -186074096, -226881648, -279401056, -275435712, -228578704, -241840480, -227540928, -228216304, --194886832, -212116624, -203505744, -151722944, -167687328, -128749696, -120354648, -110850960, -70779984, -91317448, --20917564, -33929168, 15564961, 21195664, 66430796, 98413808, 103022840, 119105888, 105656192, 159401264, -180569552, 179025504, 206770464, 216062624, 213958096, 163228080, 145611200, 127885872, 118441776, 115426712, -118368224, 111352392, 84659712, 54601920, 61908732, 47909824, 37137508, 24814710, -19449222, -25184078, --26603564, -32422708, -39746700, -44625784, -31571768, -34623340, -27844810, -28302224, -24712704, -17761300, --21416318, -17484812, -17161616, -20827370, -19353122, -21348134, -17069274, -14030584, -18937584, -21628918, --9842454, -4809827, -6780680, -6110128, -1192390, -1637993, -3699041, -3831648, 1607392, 7614977, -8061654, 8319889, 8273718, 7771744, 11042361, 11637751, 11705933, 8059506, 5695127, 4402342, -7358890, 7926899, 4695473, 1319629, 1571421, -1038308, 3386582, 2667712, 2806761, 2032593, -2815351, 2374043, 2372433, 5411659, 10991358, 7640210, 8026757, 7113003, 8857296, 8302172, -6351183, 3989488, 3930432, 1739462, 1496796, -2151779, -4176319, -7874286, -7199439, -11671574, --14554034, -15828565, -16342887, -18933826, -18862422, -19845434, -19585588, -19192598, -20475720, -20874078, --19996830, -18028662, -15984258, -14809584, -10718628, -9844065, -8116415, -7822209, -3862249, -2450816, --21475, 1051193, 2760053, 3244311, 5326833, 5631239, 6084358, 4725001, 4923643, 3707094, -3661460, 2369211, 2406792, 1288490, 1366337, 364535, 533113, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-13877039, -1143535, -2240899, -1867774, 176631, -2287070, 833761, 1379758, 5645735, -1895691, +-259846, -5215701, 353261, 5281736, 332860, 3821984, -1156957, 1613834, -2233920, -3289945, +75162, 3631395, -501437, -4517232, -224949, 4400194, 1392106, -1868311, -1605244, -195958, +-642635, -1015760, 12885, -733903, -1549946, -185220, 860067, 620086, -241592, -3446175, +5090073, 6995965, 183073, 817118, -2867428, -1603097, 512175, -3650185, -4093641, 2421288, +-3333968, 2391760, 3058554, 3087008, 1115618, -470836, 793495, 641561, 2289218, -5029944, +390842, -654983, -3700651, -4955856, 102005, 2463701, -1927904, -271120, -617938, -359167, +3445101, 1718524, 424128, 1353989, -1181653, -4085588, 1539209, 645856, 3444027, -4202089, +-3216931, 2346663, -1917703, -889595, -3163244, 688805, -1877438, -1721208, -2147, -1385127, +-1531156, 387621, -849867, -398358, -1738388, 1021665, -257698, 74088, -499827, 828392, +-210453, 250182, -351650, -294205, -30602, -581431, -79994, -12768401, -2916283, 4861903, +-682363, -3982509, 1676648, -9486509, -3616363, -1436130, -1690070, -4940823, -5133560, 2710124, +4281009, 3600256, -4800700, -7156490, 811749, -4219269, -7556458, 1662152, -471910, 2072322, +8513699, -2869575, -888521, -5440650, 7357816, 498216, 3675955, 2462627, 6042482, 2998424, +1875290, -6056978, -669478, -5574868, -1508070, 170188, -2301566, 1779190, 1573032, -2674154, +-5098663, 3184182, 5338108, 1428077, -2524367, -4016331, -2434710, 1192927, -4427038, -5697274, +-1585380, 2713346, -1537061, 1301912, 3554622, 2163053, -2608119, 5056787, 479963, 4296578, +-3636764, -3151432, -1760937, -2222109, 3073586, -1786706, 207769, 5106179, 1869385, 59056, +-4871030, 1264331, -1924682, 3561065, 5306432, -979789, 469225, -2478196, 2033667, 4573067, +-1611687, 2823941, 1350767, 545998, 2428804, 883153, 157303, 1839320, 765041, -221191, +54224, 775778, 816044, -927176, 687732, 576599, 1024887, -665183, -2612951, 3293703, +4502737, 1845762, -2834142, 1992328, -1334124, 1387811, 8481487, 5259188, -7174743, 4891968, +-3949223, -1919850, -1040456, 171262, 3607236, 165356, 9927280, 2899103, -3810173, -2471754, +-2471217, 7024419, 1647120, 6767795, 2212445, 4568772, 7028714, 8093329, 3069828, -871878, +-799401, 1254667, -6449967, -5967857, 1927367, -4519380, 2601140, 1288490, -1535988, -629213, +1904818, 6768332, -2190970, -2238215, -3444564, 8636642, -1147830, -10663330, -5328981, -4197257, +-3880503, 4475893, 4270808, 3792456, 5617281, 2538326, 3529390, -101469, -314606, -102005, +5653251, 1887638, 3327526, -7396471, 513785, 404264, 430570, 554588, 3272228, 2336462, +969589, -3547643, -3566970, 2158221, 1773822, -995359, -190589, -2840047, -3663607, -2951180, +2094870, 3654480, 476205, 282394, 1289027, -959925, -88584, -740882, 692027, 714575, +418759, -411243, 1121523, 1804423, -205085, 257698, 430034, -184684, 506269, -618475, +1307818, 103079, -187905, -714575, 1164473, -2063732, 1276142, 456340, 976568, -56908, +-1222455, 352724, -561567, 18983756, 4050154, 3003793, -2382096, -1180579, 1745904, 1446867, +4946192, 6780143, -389231, 9922448, 3824132, -3331284, -3318936, -124554, 4603131, -430570, +-2642479, 5307506, 644245, 14250165, 3615289, 2916820, 498216, -1245541, 581968, 2256469, +2655901, -523986, -55298, 7698192, 976031, 8462159, -4282620, -3896609, 2669322, 12646531, +3546032, 3141769, -1171452, -5306969, -2215130, 1806571, 287763, -12885, 374199, -7580618, +459562, -3274376, 2995203, 2535641, -3121904, 1877975, 2612951, 1920387, -3699041, -3605088, +798864, 1418950, -73551, -4666482, 1163399, -1752884, 2976949, -336618, 511101, 2046015, +-820339, 1176284, -1787780, 625455, 10915659, 1347546, 3813394, 231928, -3114388, 1907502, +572304, 3507378, -6203544, -4165045, 2007897, -798864, 1172526, -1496259, 2245731, 2051384, +161598, -2613488, -1109712, -3591130, -741419, -753230, 2284386, -1606318, -535797, 494995, +-410706, -793495, -972273, 781684, -1027571, -1147293, -99321, 136902, 579821, -2406256, +-1054951, 719944, 277025, -2629057, -745714, -95026, -3578782, -1388348, -459562, 2841121, +-4218732, -656056, 4169876, -2075543, -6615860, 25770, 10764799, -682363, 8441221, 4420058, +11699491, 1484448, 1048509, 4341675, -3350075, -6941204, -9258876, 2237678, -4733591, 10901701, +6159520, 7721815, -1472100, -3119220, 928787, 1785096, 3555159, 10209674, 1191853, 4293357, +-4656819, 3298535, -3308736, 1453310, -1791538, 3406446, 5791227, 851477, 5533529, 2101850, +2763812, -1539746, -1352378, 7486128, -1743220, -1790465, 5580773, -3278671, -323196, 864899, +-2454037, -3178276, 2469606, -3654480, -716186, -4683662, -10138270, -1070521, -1542967, -199179, +-10561861, -3967476, -3223910, -2670396, 3971234, 10470593, -2649458, 3408594, 5444408, -1453846, +1027571, 985695, 622770, -3725884, 4144644, -4743255, 1263257, 3520800, 9759239, 3113315, +2896956, 951872, -118112, 3007551, -3513820, 35970, 2024540, 1019518, 186831, -3882114, +2370822, 2944200, 2909304, -481036, 2171643, 1239635, 627602, 2029372, 1155346, 302258, +1132798, -204548, 885837, 624381, 751619, 1203128, 1447404, 1748052, 1193464, 1196148, +1292785, -677531, 1174137, -13617194, 1096827, 7455527, 3787624, -7599945, -669478, 449361, +1724429, 2905546, -530965, -5897527, -5820755, 976568, 9625559, 4703526, 5673115, 9859097, +-6702834, 7057705, 12816182, -1107028, 2822331, -7240778, 2427730, 2716030, -6362994, -3308199, +-1438277, 3041374, -6426345, -8304856, 1523103, 981937, -7259569, 629213, 2190970, -1412507, +15219217, -822486, -10908680, -695785, 3674345, 8651675, 3107946, 3897683, -7016366, 1952600, +2128693, -6168647, -470836, -1030255, 10555956, 6521908, -1825361, -3627637, -8286603, 3562139, +3238405, -4843113, -225486, 1983201, 3161633, 3316252, -4245575, -108448, -969589, 9971303, +-8428873, 1035624, -2235531, 8978092, -697395, -2190970, -3815005, 1126892, -3945464, -9136469, +203474, 6948720, 2030446, 4355097, 1037772, -3293703, -1355599, -1663226, 5871757, 2347200, +-1652489, -224412, 5330592, 4013647, -1559073, 571768, 805306, 1153199, -143881, 2147484, +1453310, 1310502, 99321, -759136, -380641, 420907, -806380, 249108, -1109175, -363462, +847182, -2802466, -692027, 5303748, 4654671, 1755031, -3578782, 1050120, 2174327, 16126528, +10557566, 8049843, 11200201, 4626754, -1087164, 1655173, 4069482, -11362336, 5730023, 200790, +6165426, -4571456, -2455648, -7329362, 1954747, 12961674, -12802224, -8031589, -13605383, 6825777, +-3218541, 426276, -6280853, 783295, -2442226, -6144488, 2180770, 2989297, -9738301, -1327682, +1561221, -2134062, 4879620, -13907641, -6901476, 14171781, 1240709, -280247, -1593433, 468151, +-7406134, -7695508, 257161, -11183021, -2772402, 1082869, 2783139, -4835060, -1309428, 13790603, +-1102733, 4808753, 10081362, -9639517, -3548717, 2200634, 2220498, 1792612, -3160559, -6911140, +7635915, -926639, -7539278, 5313949, -1540283, 1197222, 1821603, -4013647, -2617783, -1739999, +-3214783, -4349728, -5377299, -5019206, -6544457, -1986959, -2901787, -703838, -1048509, -159988, +602906, -2681133, -2294050, 1405528, 1524713, 2801393, -392453, -1264868, -3955128, -1146756, +-4537633, -2842732, -814970, 746787, -548682, 484794, -1326071, -738734, 2965138, 1137093, +1983201, -2262911, 328028, 419296, 598611, -4483409, 85362, 1197759, -235149, 2225867, +-610959, -790274, 237834, 623307, -26830660, -14705968, 11905112, -4511327, -5820218, 7429757, +6207302, -11276437, -15547245, -4813585, -5646272, -5671505, -1181116, -10480257, -7777112, 3995393, +282394, -14142790, -15851114, -8695161, -4440460, -684510, 7919383, -471373, -6002217, 4526896, +-13216688, 500364, -743029, 660888, 4439923, 2612414, -9664750, -7073275, 5592048, 2100776, +21144660, 5313949, -7212324, 1052804, 565325, 302795, 5491116, 1156957, 2221572, -2107218, +-4799626, 1463510, -12355547, -2212445, -5454609, -6400038, 1291711, -9665824, 11225434, -1393717, +4624069, 8181376, 2291365, 4366908, -644782, -5203353, -336618, -614717, -6660421, 8578660, +-3638911, 15217606, -606664, -287763, 600222, -3876208, -8312373, 2615635, -6543383, -2554969, +8779450, -11410654, -11370389, 7610682, 7092602, 6220187, -9646497, 6947110, 2782602, 4073240, +-377957, 1814087, 1789928, 5413807, 2204929, 1371168, 3896072, -475131, -323733, -3206193, +-2610266, -468688, 2633352, -3447248, 409096, -347892, -2127620, -1213865, 832687, -4452271, +-2816425, -3307125, -650688, 1510218, -79994, 3397856, -1174137, 3551938, 252866, 1356136, +506269, 2763812, -2149094, -1646583, 3073586, -1362042, 380641, 291521, 5387500, 19833622, +-11080479, 9474161, 3858491, 7077033, -2828773, -10711112, 1522566, -2757369, -10084046, 20471962, +-1450625, -5596343, -20121384, 12437688, 3423626, -144955, -7522635, -8617315, 224949, 20798380, +7706245, -721018, -2049773, -8801999, -7242926, 6069326, 2642479, -6862284, -4897337, 7321309, +1803886, -205085, 6211060, 9659918, 1502165, 12723304, 14319958, 8791261, -3304441, 3257196, +1168768, 2465848, 7472170, -10510859, 11166915, -665720, -5677410, -8499203, 52076, 7439420, +5136244, -10047002, 2227478, 8135205, 1235340, -7244536, -15862388, -14318347, 3808026, 6495601, +1077500, -5480915, -740345, 11643119, -5282810, -8580808, -16747151, 1890859, 3260954, -12378633, +4705137, 12619151, -5675263, 9844065, 3389803, -11450920, -8568460, 1024887, 11903502, -1107565, +12505334, -2040646, -4362076, 2758980, 6385006, 1826972, -2114735, -3221762, 2159832, 5777268, +4601521, 908922, 7438884, 1509681, 5343476, 1459215, 7299834, 1236414, 4516695, 64961, +3614215, 2075543, -1773285, -5179731, 481573, -6078990, -846109, -2402497, 999654, -668404, +-214748, -5376762, -493384, 2734284, -2675228, 511101, -629213, 545461, -340376, -3840238, +636192, -689342, 23946590, 15640660, 3629784, -4846334, -2500745, -3403762, -16343424, -6692633, +-155693, 10410464, -7480760, -4278325, -3467112, 119185, 17334488, -13489955, -3537979, -804233, +8172249, -2868501, -9857487, -16668768, 6008123, -11536282, -5185100, -7219840, -7678328, 2373506, +-12939126, -6381785, 11610370, 17220134, 867047, -10880763, -9568113, 15876347, -1702418, -8698383, +16721918, 453656, 1107565, 638876, -18061948, 7321846, -6635725, 6535330, 6191196, -12401718, +-1251983, -12578885, 4959077, -12200391, -1969779, 5022965, 7000797, -4117800, 4295504, -14791867, +10242960, -1208496, 7022809, 5744519, 4307316, -3333432, -2975339, 14618995, -10043781, 7228967, +-2379949, -12564927, -7427609, -898722, 13314935, -7617662, 6305012, 1709397, -3941706, 104690, +-14574435, 18524730, 11559904, -2261300, -4922570, 9045201, 4088809, -2747169, -4628364, 965294, +-3035468, 4629975, -830539, 2403571, 7866233, 2708514, 6262599, -74088, 2326262, 841814, +-976031, 97711, -403727, 5216238, 2250026, 7263327, 1401233, -4173098, 5519570, -2205466, +24159, 3947612, -3680787, -1341104, -1854889, -1712081, 3497714, 1955284, 1909650, 2859911, +-152471, -891206, 7030325, -2370822, -2157147, 9166534, 1962263, -6359236, -14010720, -950798, +-18262200, 2998424, 1817845, 8843338, -7188165, -1934346, 4957466, 3804804, 5435818, -12651900, +17819820, 12341052, 2480881, 9079561, -3996467, -17948132, 4371740, -7657390, -8150238, 8204462, +20625506, 3408057, -5465346, -7585986, -16228534, -134755, 938987, 25054692, -9752260, -563714, +931471, -934155, -15020038, -17314086, 13749801, 368830, 7889855, -2370822, -19246286, -11349451, +1726577, -3412352, -3932580, -5708549, 12886513, -2845953, 8432631, -9069360, 17880486, -21069498, +10525891, 10683731, 6643778, 5575405, 5416491, 16384763, 8675297, -1357747, 3704409, -25770, +16519518, 24408836, -2659122, 1808718, -7045894, 10125922, 16667157, -11434277, 3638911, -28576564, +18751290, 19038516, 12976707, 17702244, -7965017, -14394046, -851477, -2211908, -4039954, -3131031, +-8376260, -6078990, -2989297, -885300, -4610111, 2733210, 5393405, 1901060, -7861938, 1479616, +-4292820, -4816269, -2797098, 3233574, 3262028, -1518808, -1831267, -811212, -1225676, 766115, +-7603703, 2492155, 1292248, 4942434, 1291711, -421444, -60130, 1022202, 4569845, 1444720, +-3857418, 3136937, 168041, 396211, -20685100, -3058554, -26454852, -13572097, 10397042, -10828686, +-23527830, 2183991, -12691091, 583579, 447750, -15084999, -14345191, 6483253, 13839458, 4177930, +-16109349, 7702487, -18118856, -6351183, -6679748, 5668820, -7449084, -3393024, 8697846, 1487132, +-5966784, -12894029, 13646722, 13237626, 17199196, 2246805, -1919850, 608812, 5508833, -1300838, +7051800, -7762080, 9273371, -3651796, 10683731, 8571681, 6448894, -3105261, 441845, -16626892, +5657546, -4185983, 12505334, 2275796, -29072634, 4466229, 14328011, 19275276, -11088532, -15146202, +18127984, 8230768, 12745315, -22705882, 11225971, 28426242, 29940754, 1906429, 710817, 17038672, +-11792906, -15712601, 10065256, -17396228, 6531572, -8101382, -6847252, -3841848, -37473588, -21638046, +-18250926, 13464722, 5107790, 3786551, -13312788, -5413270, -10057740, -1902671, -5403606, 14716705, +3496640, -5851356, -13074954, -2909840, 8465381, -1350230, -3616899, 2601677, 8861591, -3154117, +-5237176, -2509335, -1943473, -601295, 6892349, 6925635, 6016176, -6077379, 7885560, -399969, +2253784, 9015673, -4050691, -4065187, 7859790, 14110041, -3299609, -4605816, -2246805, 1698660, +-2543695, -9718974, 1569811, 7099581, 1915019, -9786620, -9374303, 4422206, 3178813, -522912, +-599685, -1709934, -6970732, -4772783, -15569256, -29901562, 22863184, 2387465, 7682086, -3882651, +16193637, 419296, -13795972, 10670309, 4355634, -4900558, -8324184, -6543383, 2065879, 3888019, +14343043, -8175470, 11257646, 3569118, 20447802, -29343754, -7864085, -4662724, 3783866, 11959336, +17380658, 3930969, -14103062, 9513353, 13675176, 11491185, -3212099, 3999152, 834297, -4833986, +-1967095, 816044, 4428648, 1574642, 10110890, 1648731, -12745315, 11892764, -13215077, -16895328, +2626373, 12181601, -5931887, -4399121, 4436701, 5934034, 10518912, -6028524, 4987531, 23732916, +-9479530, -25266218, -32697050, -16547972, -22155052, 10038412, 19226422, 12272332, 4698158, 11541651, +6796249, 12758200, -10947872, 14424111, 7504382, 5835250, 15056008, 19541564, -6095096, -4400194, +5342940, -1317481, 17608830, 6789807, -2697240, 2937221, -21496312, -15065135, 2970507, -884763, +3812320, 1410360, 4507032, -4057670, 11316165, -6026376, -6924561, -6722161, -11314018, -4146254, +-2247879, 3666828, 3004330, -1739462, -9722195, -614717, 3200288, 1031866, -3912178, 2247879, +119185, 3699578, -4079145, 1615445, 765041, 4470524, -2180233, 6908455, -4329864, -5024038, +1457068, -904091, -3652870, 1092532, 4793184, 349503, -761820, 29894046, 2917357, 4668093, +-6183679, 10839424, -34195456, -15135465, -23363548, -24169392, 9609452, -21096342, 20732344, 23538568, +1058710, 5076115, -3605088, 4277251, -22357990, 9160628, 24790552, -14150843, -28792388, 3769371, +-10814728, -9235253, -28085864, 4821101, 10343355, -159451, -3793530, 8988293, -16010564, -2724620, +10447508, -5807870, -14189498, 1660542, -7074348, 14624364, -9713069, -5465346, 13769128, 11866995, +25411174, 3295314, 6145562, -2407866, 6832756, 8972187, 15701864, -4599373, -503585, -9831180, +20709258, -26169772, 28037546, 915365, -11164767, 13047574, -10180683, -7589207, 25784836, -37305012, +6076305, -7944616, 7285339, -14533096, 6955700, 14665703, -7644505, -1464584, -3928821, -6266358, +-3308199, 27327266, -31120796, -10734734, 52306260, -19803020, -23095650, 22532472, 13540421, 15000173, +-13182865, 925029, -13105556, -7450158, -2068027, -15075335, 3260417, 1896765, -3913789, 5261872, +4799089, -6903086, -12742094, -3401077, -1091995, 4869419, -11250667, -8016020, 273804, -1260573, +2809446, 6867653, 16632261, -7719130, -404801, -1968706, -1768990, 4642860, 1853278, -10058813, +-7504919, 7806103, -6481106, 2850248, 2025614, -6193880, 2268817, -1547799, -10162429, -8475581, +4940823, 3095061, -1563905, -361314, 6300180, -14996415, -22873922, 2122251, -8605504, -7895224, +-12830141, -16316581, 20547124, 8688182, 1404991, 9488656, 24317032, 14203994, -1554241, 4838818, +16383153, 20671140, -18332532, 8511551, 17495012, 7470022, 6478958, 23891292, 11668889, 4910222, +-622770, 10700374, -1097901, 12122008, 10201621, 5432060, -11122355, 21128554, -17331804, -2269890, +26671746, 26175678, -6142340, -23369990, 8877161, -440771, 22899692, 39134132, 8876087, -6090801, +2887829, -22585086, -2543695, -6027450, -4722854, 371515, 20129438, -8667244, 8923868, 24005110, +4205847, -22353158, 14856829, -1213865, 9493488, 22554484, 31983010, -9062381, -8333311, -2804614, +-25125558, -37031208, 1129040, -16878684, -2601677, -20446728, -1972464, 590021, 2897492, 15063524, +-302795, -10596758, -17390322, 12736726, -5278515, 10890963, 529892, 20338818, 7691750, 7472170, +204548, -6396280, 11586748, -8793946, -9994926, -3102577, -7481833, -2998424, 715649, 762357, +-2601677, 3093450, 4629975, 330176, -1022202, 5898064, -4968741, -7274601, 4561256, 5193689, +1182727, -6290517, -7386807, -4421132, 6201933, 8127689, 1209033, -1177895, 9175124, 2450816, +4451197, 3726958, 6601365, 1801202, -1050120, -4788889, 2736968, 5133023, -10448582, 8371428, +24996710, -46860776, 25793426, -19752018, -46162308, -13705778, -11622182, -1668595, -10639708, 5572183, +-12761422, -28644748, -17273822, -8591008, -2604898, 3242164, -11775727, 11475616, 22421340, 791885, +-1409823, 6103686, 1374390, -4226785, -8329016, -4739497, 6057515, 6618545, -2001455, 6288906, +27528592, 7530689, -8069707, -27379342, -4383551, 19246286, -23528904, -11113228, -8979166, 220654, +-1823214, 14762876, -4924180, 1708860, 20378010, 7216082, 22607098, -3261491, -10729365, -4986457, +-5851893, -5951751, 10877005, 1101659, 7336878, 13715441, -24322936, 3476776, -6479495, -15197742, +-11453067, 23614804, 17019344, 767189, -11643119, 4697084, 9944460, 940061, 6857989, -16396038, +-40341016, -18757732, -14819785, 14642617, 1416802, -1960653, -6882685, 2783139, -4625680, -12832825, +-13283797, -6987912, 16207059, 12203076, -18283676, -22841710, -8980240, 1479079, 13701483, 5479842, +-4502737, -6208375, -4780836, 3107946, -10190347, 1396938, -6995965, 471373, 10300942, 11003706, +2832531, -5861557, 3470871, 7897908, -382252, -1833414, 5811628, -8275328, 11241540, 10078141, +3838627, -303869, -598611, -1261110, 9398462, -3854733, -5163088, -5862094, -8310762, -8139500, +2443300, -3079492, 3325379, -2421288, 1588064, 5893232, -3096135, -5920613, -8577050, -2461553, +3763465, -6118181, 13143674, -18101676, 21843666, -1401770, -35512936, 7548405, -17321066, -3134253, +-2928631, -3788698, -22760106, 7406134, 780610, 18095234, -38646652, 979789, 18466212, 2627983, +-9475772, -19005768, -1906429, 11451457, 16109349, -13369696, -5297306, 9255655, 18461380, 17567490, +-17047262, -3064459, -27383100, 12896176, 13273596, 8797704, -8105140, -1794760, -7761006, -2557653, +-9416179, 2900714, 19243600, -6993281, -8179229, -6458557, -11591580, 22619446, 18757732, -1593433, +26589606, -950798, 9161165, -23596014, 19144280, 8971650, -27295590, -8424041, 30273076, 12993887, +7862475, 6222334, -14933601, -11160473, -15983184, 26912266, -14287209, 20834350, 20842940, -23986318, +55497956, -11787001, 34226596, 1716913, -8371428, -14806900, 25577604, 10255845, -20764020, -12193949, +-44030396, 17569638, -6509023, 20170240, -27324582, 30086782, -23494008, 8978092, -9454834, -6732361, +19127636, 1968169, 1259499, 11084237, 7097434, -4934918, 12328704, -1493575, 3190087, -8934069, +1148904, -1165010, -6327024, -8999030, -302795, -10004589, 4181151, 4368519, -2997887, 8719320, +-3775276, -5207648, -7956964, 5129265, 394063, -1216550, -15091978, 6514929, -3557844, -17388712, +-6218039, 4944044, -5624260, -9036074, 5303748, -4943508, 4244502, -9221295, 3582540, -9409200, +-2360622, -1510755, 4296578, -2321430, 156229, -3167002, -3990025, 12985834, 23484344, 1470489, +-18865106, 8924405, -36849208, -10324565, -33428268, -47303696, 2077154, -18418968, 6514929, -3854733, +-6869264, -18218714, -11788075, 10128607, 28740310, -23895050, -4552129, -40904732, -35100084, 9472014, +14777372, -22609782, -22796612, 1130113, 5683853, -38008312, 2531346, 479963, 20110110, -17234630, +1275605, 15913928, -10040560, -19930258, -21405044, -10918344, -19467476, -16711181, -20343112, 28943248, +-36629092, -23355496, 34160560, -1379758, 10030359, -28439126, -4363687, -8321499, 1293859, 47091632, +-6164352, -1225676, 5236102, 21910238, 1074279, -21280490, -8743480, -15423764, 5663988, 56417616, +11592117, -20272246, 43300248, 30594126, -26865020, 31565862, 52837760, 168577, -19825032, 35291748, +-5606543, 37146100, 34299072, 2559801, -1175747, -10321343, 24124832, 18878528, 11482595, -20241644, +-6066642, -13156559, 30407832, -4035122, -19925964, -10238128, -20032802, -9119289, 20990042, 2077690, +-10176388, -3892851, -12585865, -2442226, 18830748, -9027484, 5069672, -2047089, -16832514, 18647138, +2863670, 7363185, 9735617, -12355010, 4348118, 17134772, -2504503, 501437, -8702677, -214212, +2020782, -5875516, -4639102, 3111704, 13490492, -8422431, 5716602, -11186779, -4633196, 513249, +-3036542, 12521440, -4224101, 416075, 1862942, 4501663, 1076426, -6158983, -765041, -3537979, +26796300, -67444944, -40074192, -43944496, -14557255, -29390462, 36430448, 13323525, 29928942, -4732517, +-56892212, -9068287, 9577240, 39005284, -1331977, 8790724, 36429376, -13873818, -25883084, 2313914, +-1478006, 45304924, 29987998, -15294915, -20471962, 48132624, 3668439, 23882166, 11953431, 44857176, +39344584, 29730838, 3421478, -25992068, -13691282, -19972672, 38042672, -18632106, -25650618, -14587856, +1574106, -1578401, 16920560, -16952772, 6195491, -77420008, 8806294, 11380053, 12811351, -32731408, +-29650306, 8594230, 27237072, -33798172, 13069049, -19497004, -14576582, -22927610, -1875827, 22982906, +-15723875, 25302726, -6503654, 9496710, -47841640, -31508416, -1127429, 24770688, 17877264, -35578436, +-37526204, -18174154, 3579318, 39118024, 16450262, -4585952, -27969900, -33065880, -10971494, 5969468, +28192166, -3275986, 9337259, 18080202, -7246147, 6001680, -18722836, 10755135, 6607807, -12404402, +-9664750, 163746, 14413910, -14781667, -633508, 22169010, 3526705, 2467459, -99858, -7492571, +-15796890, 3082713, -17546552, 19498078, 17382806, 12362526, 1410897, -2607045, -20580410, 11901891, +-4324495, 22823994, -5997385, -27972048, -16841640, -4389994, 25966298, 6321118, -5907728, -3760781, +-21430814, -11297375, -8847633, -2396055, 11494406, 10273025, -21691732, -12921409, -13466333, -13953812, +-5084705, 2784213, -2289218, -8521752, -13506062, -14590004, 1213865, -1995549, -7152731, 12634720, +86019072, 9521406, -47151760, -103507104, -10263898, 62524524, 14716169, 27675158, -3683471, 38301444, +-7168301, 17229798, -9568113, 21999360, 29198798, 16716013, -15426986, -33726768, 39638252, 46649788, +-11205570, -44850732, -28569048, 5425618, 25645250, 9469866, 8639864, 2340220, 5912023, 3690451, +5848672, -8310762, -53594748, 325344, 31754840, 25697326, -11230803, 3153043, 19218904, 44557064, +26146150, 22149146, -26749056, -17500382, -5272073, -4190814, -40153112, 28413894, 15686294, 29487634, +58237608, -29826938, -20313584, -2168959, -17196512, -13642427, -26633630, 46336792, -28581396, -29423210, +-31601296, -10215043, 57713088, 15481210, 22011708, -744640, -5680631, -13040594, 35605816, 29879550, +-15819438, -33681672, 11070815, -3999688, 13358959, -31568010, -13201119, -18178986, -24992414, 15239618, +23444078, 4949413, 234613, -12477417, 6503118, -4628901, 21750788, 2201171, -8360691, -4049081, +6809671, 14777372, 15181099, -8827768, 9188009, 5501316, 4461398, -383863, -17499844, -1875827, +-14310831, -5134634, 180926, 2597918, 4024921, 5187247, 5062693, 14981920, 21153250, 19714974, +-2328946, -4551055, 1945083, -9306657, 11443403, -13191455, -2119566, 11074573, -1151051, -2486786, +-22238804, 11025718, -22178674, 7364795, -5333813, 3550864, -2349347, 2570538, -1466195, -13424457, +7122667, 6719477, -1548873, 4524211, -1181116, 3849365, -2185065, -3568581, -1045288, -1199907, +387621, -792421, 440234, 380105, -4894115, -2135673, -1187559, 2762738, 629750, -1434519, +-2834142, -2985002, -149787, 681826, -1438277, 53150, -1887101, -578210, -2106145, -24770150, +1938104, 66831840, 50955492, 8282845, 3606162, -35897336, -69956968, -60684668, -30140470, 50235548, +54354420, 57013008, 31121870, -8089034, -36495948, -33167884, -22290880, 14517526, 21804476, 39082592, +3182571, -29329794, -25402048, -5237713, -25453586, -11440719, 5067525, 40457520, 56983480, 37417220, +17310866, 16508244, -36407364, -4042638, -72764800, -80631032, -51093468, -24177444, -22660248, 38006164, +58741732, 65831648, 58848032, 51592220, 20809654, 3673271, -25298432, -6621229, -40463960, -70664024, +-6369974, 6812892, 6381248, 23736136, 13510357, 24078124, -79897128, -43162272, -28910498, -45767708, +-20062866, 34269544, -20870856, 23153632, 2603824, -20726976, 16339666, -17280800, 18434000, 22385370, +-17477832, -33833604, -70900784, -67900208, -51468740, 25156160, 8156143, -9502615, 12512313, 3926674, +-397284, -32276680, -23509040, -60274496, -20738250, -22057342, -3107946, 44515188, 46649252, 7189776, +23750096, -14395120, -33512556, -58617176, -39511552, -36106716, -1994476, 18281528, 9568650, 14955613, +15053324, -10565083, 8825621, -9943923, 9176734, 2786897, -1125818, -1843078, 7432978, 7566659, +14878840, -3244848, -4487167, 15001784, 12927852, 2964601, -5480379, 11759620, -119309360, -60833916, +-31849866, 40246528, 9195525, 153073168, 156662160, 118302728, 152738160, 160276368, 145409344, 104582456, +94716912, 105336760, 41785736, -6118718, -65190088, -100480760, -139128480, -134955392, -201452224, -122057064, +-79568568, -63006632, -89864136, -47113644, -13028783, -67160944, -52323976, -55054500, -12548284, -33013266, +-11874511, -44739064, -22854058, 26861800, 27622546, 8393977, -8352638, 29263222, 23536420, -67754184, +14044543, 46009300, 100413648, 73819752, 95597920, 39356932, 37953552, 159487168, 86237040, 163203392, +54554676, 153072640, 105552040, 133657768, 180063280, 170729248, 138299024, 155481568, 172550304, 187961728, +160385888, 185284352, 126290832, 187939712, 150763552, 133922984, 142627808, 78012176, 159681520, 77401216, +46859704, -58645096, 3831111, -86686936, -97592928, -149089584, -176182784, -270648448, -264419120, -249642288, +-233574816, -220045136, -186074096, -226881648, -279401056, -275435712, -228578704, -241840480, -227540928, -228216304, +-194886832, -212116624, -203505744, -151722944, -167687328, -128749696, -120354648, -110850960, -70779984, -91317448, +-20917564, -33929168, 15564961, 21195664, 66430796, 98413808, 103022840, 119105888, 105656192, 159401264, +180569552, 179025504, 206770464, 216062624, 213958096, 163228080, 145611200, 127885872, 118441776, 115426712, +118368224, 111352392, 84659712, 54601920, 61908732, 47909824, 37137508, 24814710, -19449222, -25184078, +-26603564, -32422708, -39746700, -44625784, -31571768, -34623340, -27844810, -28302224, -24712704, -17761300, +-21416318, -17484812, -17161616, -20827370, -19353122, -21348134, -17069274, -14030584, -18937584, -21628918, +-9842454, -4809827, -6780680, -6110128, -1192390, -1637993, -3699041, -3831648, 1607392, 7614977, +8061654, 8319889, 8273718, 7771744, 11042361, 11637751, 11705933, 8059506, 5695127, 4402342, +7358890, 7926899, 4695473, 1319629, 1571421, -1038308, 3386582, 2667712, 2806761, 2032593, +2815351, 2374043, 2372433, 5411659, 10991358, 7640210, 8026757, 7113003, 8857296, 8302172, +6351183, 3989488, 3930432, 1739462, 1496796, -2151779, -4176319, -7874286, -7199439, -11671574, +-14554034, -15828565, -16342887, -18933826, -18862422, -19845434, -19585588, -19192598, -20475720, -20874078, +-19996830, -18028662, -15984258, -14809584, -10718628, -9844065, -8116415, -7822209, -3862249, -2450816, +-21475, 1051193, 2760053, 3244311, 5326833, 5631239, 6084358, 4725001, 4923643, 3707094, +3661460, 2369211, 2406792, 1288490, 1366337, 364535, 533113, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { -7670275, --15194521, -2656437, 201327, -3478924, -7151121, -2356863, 5238787, -8405788, -4646081, -2781528, --1647657, 2672544, -1202054, 2975339, 1359357, 2605972, -291521, 3225521, -2813741, 526670, --1235340, 611496, 8109435, -1724429, -500901, -4019016, 5012227, 3113851, 2411087, 6257231, --3199751, -1816234, 2138357, 5602785, -1512365, -372052, -4522601, -4952098, -3314104, 3539053, --4398584, -3769371, -476741, 5040144, -6818798, -1448478, -5697274, -2761664, -1630477, 785979, --513249, -4081830, 5235565, 895501, 4711579, -1902671, -1194538, -5867999, -127238, -2056753, --2213519, 3385508, 1901597, -1049046, 1821066, 3746285, -1065689, 1611150, -2680597, -1545115, --648003, -2525978, 2246268, 784368, 1710471, -4008815, 2880313, 1660542, 6496675, 3866008, --1063004, -4125316, -336081, 901943, 514322, 1286343, -190052, -1395864, 57445, -947577, -9127, -1147293, 411780, -1116155, -73014, 1254131, 424128, 648540, -798864, -559956, -594853, 862215, 392453, -125628, 65498, -16106, 539555, -12516608, -4474282, 3587372, --3293703, -1498944, -1384053, 1686848, -621697, -3308199, 5222680, 4647155, 1571421, -593779, -2429878, -6427956, -922881, -6352257, -3178276, 4671851, -762894, 827318, -622233, -734439, -125091, 9783936, 8982924, 3997541, 4804995, 5666136, -1074279, -658741, -1932735, 4999342, --466541, -1904281, 1428614, -2920578, 2023467, 3597572, -1818382, 4056597, 4611721, 8948027, --3477850, -4227322, 3858491, -2317135, 154082, 1882806, -5177583, 309775, -2695629, -3055869, -6924561, 4050154, 4992900, -2840584, -3712999, 2625836, -4326643, 3056943, 13338558, 749472, -944893, 2987687, 1331977, 1224603, 7607998, -4056060, -994285, 1387811, 1022739, -3775813, --2736968, -3854196, -1793149, -1410897, 3519189, -596464, 3535295, 3582003, -3559454, -3852049, --953483, 2426657, 3412889, -4038343, -744640, -1202591, -2732136, -341450, -2585034, 681289, --132070, 1400696, -759672, 535797, -975494, -262530, -738734, 613643, -3633542, 3935801, -6391985, -3081102, 3173444, 10011032, 3366718, 2273648, -7006166, 5792301, 1538672, -9052717, -3838090, -2557653, -5412733, 2160906, -745714, 2081449, 5254356, -5534066, -5782100, -2599529, -7880191, 197569, 3914863, 8128763, -12116640, -9802189, 1598265, 5951214, -4374961, 363998, -8100845, 2065342, -1037235, -2455648, 9692667, 1164473, -2349347, 1335198, -8777303, 978716, --4836670, 4456566, 792421, 4734665, -2384781, -1210644, 2158758, 125091, 634581, 256087, -4571456, 3654480, -4994510, 2847563, 4047470, -6887517, 828929, -3113315, 1300301, -1592896, --5299453, 68719, 4589173, 3961034, 8844948, -5489505, 6851010, -4540854, -899259, 4039954, --4417374, -6616397, -2374580, 295816, -405874, -353261, -701690, 1291711, 2827162, -3855270, --38118, 1813013, -341450, 1554778, -3134789, -1821066, -1236414, -2327872, 690416, -515933, --1800665, 979253, 1039919, -1532230, -2311229, -137439, -529355, 2381023, -108448, -405874, -449898, 500364, -406411, -732292, 1622424, 521302, -1277216, -665720, -975494, 130997, -1660542, 148713, -566399, 20186346, 9036611, 12232067, -998043, -3371549, -4415764, -4409858, -2397129, -3701725, 5620502, -627602, 7715372, 477815, 4079145, 5081483, 3913789, 3367254, -4439386, -14977625, -4436701, -1397475, -3163780, -2761664, -4722317, -10664941, 477278, 7328288, --4505958, 4405026, -3618510, -5315559, -4023848, 621160, -3395709, -1246614, -3481608, -227633, -8822400, 485331, 3966402, 5592048, 7254200, -3392487, 1700270, -1606855, -5596343, 6373732, --3555159, -242666, -5538361, 4067871, -51540, 110059, -1526861, -2561411, 1879585, 5698348, --2379412, 3219078, 3034395, 2567854, 9770514, -9807558, -4150549, 258235, -5407901, -6992744, --2778307, -8562554, 1291175, 10084046, -6938520, -3291556, -7924215, 533113, -2492155, -3771518, --9290014, 5484137, 7137162, 2844342, 4989142, -2508798, 806917, -1853278, 2072322, 110059, -4938676, -1254667, 2128693, -77846, -1257352, 1741072, 1185948, 2284923, 1902671, -300111, -460635, 1261110, 506806, 989453, -76236, -919660, -1775432, 911607, 471373, -1195612, -885300, 995896, -294742, 448824, 1179505, -331786, -1052804, -370978, -319438, 6200322, -9011378, -5025112, 4716411, -4115116, -1906966, -1676648, -11041287, 7993471, -2298344, -1253594, -12850542, 7889855, 8604430, -3552475, 374736, 1454383, -1925756, 2775086, -6482717, -247497, --4422743, 5151814, -5036923, -3575560, -491237, 814970, -6230387, 1130650, 705448, 8161512, -98247, -11336566, 6525666, 5999533, 8697309, -1455457, 2216740, -6307160, -4659503, -2047089, --4523138, 1707786, 1225676, -1782948, -650151, 4626754, 7370701, -10129143, -2137820, -90194, --4086662, -4377109, 6669548, -5430450, 2537252, -5332739, -6916508, -5261335, -3401614, 2310693, -1006096, 12332462, -2071785, -3425237, 3734474, -3823595, -1060857, -3405372, 3493419, -3159485, -4493073, -2326262, -2023467, 2972654, 7492571, 1977833, -6975564, -55298, -3422552, -7203734, -2046015, 4930086, -1640678, 1063541, 1783485, 147103, -734976, 2487323, 82678, -2983392, -51540, -1141924, -507880, -1603097, 2392297, -665720, -1909650, -2185602, 319438, 2076080, --950798, -258235, -2884071, 161061, 551366, 870805, -499827, -2579665, -1256278, 2048699, --855772, -2778307, 1103270, -15467788, 14878840, 7931194, -8822400, -8968965, 3695819, 11745662, --137976, 3418794, 13755170, 4562866, 4162897, -2358474, 7183333, 6496675, 7563975, -13623636, --8313446, -8281771, 6535867, 5572183, 7184407, 300111, -8264054, 3366718, -1231582, 3708168, --11893301, 4562329, 7246147, -5635534, 3147137, 5797669, 1660005, -220117, 1275605, -1919314, -10456635, 7044820, 5604396, 162672, 3646964, 8006893, -7169911, -3915400, 373662, 10601590, -6831683, 4142496, -8004746, 248034, 5469641, 6310918, -2222646, 1923072, 6226092, 7643431, -2442226, 7063611, 2835752, -844498, -6552510, -91268, -10921565, -4527970, -5234492, 865973, -3613678, -6382322, -2557653, -11612518, 5036386, -3260954, -77846, 6084358, 8948564, 10755672, -1345935, -1174674, -6701760, -2054605, 3426847, 3640522, -7113003, 2182380, -3201361, 2556043, -475668, -2454574, 43487, 1218160, -2258616, 956704, -600222, -2746095, -1389422, -1749125, -1690607, 2015413, -370441, -1617592, 1108102, -1255741, -872952, -2150168, -301185, -505732, --2452426, 1886564, 1528472, 1941325, 13162464, 4014721, -2131915, -6011344, -15408732, -7595650, -9595494, -3405372, -14154065, -3878356, -2160369, 2106682, 7983271, 11971148, -601295, 3476776, --2652679, 5932961, -6613176, -7221451, -7593502, -13749264, 7417946, 4101157, -11323144, 288837, --8239895, -3248606, 7483444, 4113505, 6127845, -1754494, -1474248, -2024003, 13109314, 10060961, -10835129, -4937602, -9061844, 7194607, -1126892, -3308736, 9351754, 1588064, 9202504, -348429, -5191542, -6450504, -228707, 4514548, -19392852, -3000035, 1043140, -14332306, 3806952, -3696893, -13424457, 8434779, -8059506, 586263, 12265353, -1319092, 6299107, -4143033, 8461622, -3945464, -1750736, -3285113, 303869, 5797132, -7823820, 8492224, 4482335, 4852776, 1495722, 11305965, --4365298, -13059922, 2348273, 8959839, -4170413, -8133058, -5733245, -4181688, 9424769, 144955, --3900904, 332323, 322659, -1869385, -1690607, 529892, 1892470, -1098438, -1125281, -734976, -2097018, -1100585, -3409130, 926102, -3784403, 3495567, 2406792, -100932, -300111, 892279, --1032403, 1517734, 250719, 1034013, 306016, 428423, 4221953, 1384053, -2065879, 1109175, -583579, 1890859, -512712, 421981, -31396748, -6652368, 16855062, -13612899, -4920959, 14300094, -5397700, -4552666, 1518808, -11865384, 10577431, -1357747, -19100794, 1349694, -1002338, 7201587, -7084549, -3816615, -14967424, -6434398, -5718749, 293668, -7986492, -4410395, -10183367, -2952253, -11080479, -9137543, -4585952, -3532611, -5937256, -6287296, -8505646, 5764383, 1161789, 7175817, -1243393, -5357972, -8247411, -8160975, -1694365, 5367636, 7959648, -2861522, -7297687, 7595650, -3152506, -11483669, -12773233, -26038240, -2327872, -8352101, -5054640, 3803731, 3918084, 2327872, -11641509, -1270774, -5612449, -758599, -6047314, 13258027, 7037841, -2648384, 7074885, -7552700, -3689914, 3001645, -7368017, -3281892, -6614250, 4628901, 3252364, -12158516, 7922604, 12158516, --855235, -659278, -12433930, -4894652, 5393942, -3921842, 3541738, 12045236, -4119948, 2586644, -1161789, 859530, -3904662, 629213, -692564, -5150203, -3120831, -549756, 1726577, 204011, -1341640, -5373541, 551903, -2922188, 1262720, -3154117, -3037616, -1898376, -263604, 567473, --2345589, 595927, 1207960, -419296, 450435, 2143726, 1176284, -4304631, -2854543, -1422708, -352187, 1453846, -765578, 1473711, 228170, 1232119, -1049046, 213138, 5405217, 21036750, --9923522, 8122857, -5292474, 157840, 11756936, -3237869, -5503464, -2606508, -1294933, 2312840, -7938710, 27663884, -1690070, 1870995, 7439420, 1993939, -47782, -12623983, -13536663, 2276870, -1655173, -8175470, -4456566, -1714229, 7437810, -3149285, 1308354, 49929, 3154654, -3211025, -15862388, 9128416, -7652558, 9044664, 7821136, -9467719, 1533840, 4360466, 3049964, -2464774, --3445101, 13583908, -11846057, 5181878, 14609868, -4911832, 1683627, 9700721, -1186485, 8467528, -4377109, 362388, 4373888, 7299834, 9568650, 6347425, 643708, -121333, -6843494, -7177427, -135291, 1059246, -23440858, 15452755, -3717831, -6968048, -8237748, -16844324, -19439022, -12293807, -2203855, 9794136, -3636764, 1422171, -1695975, 9735080, -3680250, -7442105, 4233227, 2524367, --3337727, 1411971, 6340983, -6016713, 1116692, -7716446, -2799782, -3328600, 1778117, -682900, -3963181, 2787434, 737661, -905701, 1955821, 3041911, -192737, -5521718, 3107946, -39192, -4800163, 4946192, 2222109, -2121177, 4145180, 1172526, -791885, 90731, 134218, -3614215, -4164508, -156229, -2947958, 4356708, 8116415, -1393717, -1866700, 4461398, -1774895, -2709588, --1207423, 3881577, 28335510, 28196460, -676457, -23565412, 4705674, 4680978, -2565706, 6024229, -3650185, 1933809, -141734, -4079145, 23013508, 4122095, -3552475, -25600690, -14202383, 5917928, --1454920, -8966281, -15158550, 2039036, 2721936, 3831648, -3681324, -16854526, -17751636, 19291382, -18477486, 5635534, 16980154, -14491757, 2091112, 7460895, -2903398, -9218074, -16290811, -8206609, -3036005, -778463, -7574175, 7848516, 282394, 7616051, 6374269, 350577, -17524540, -10341744, --8171712, -1502165, 1949915, 2258616, -2870112, -5073430, 1349157, 2775623, -15657303, -4053376, -2715493, 3475166, -7036767, -19828790, -4478577, -5041755, 14719390, -643708, 6697465, -6681359, --4878009, -8919573, -9747965, -5865315, 1728188, -818191, 12378096, -7355132, 2257542, 14072460, --854162, 6990060, 6466074, 13668197, 3186329, -4073240, -6908992, -6270653, -2291902, 8230768, -1417339, 8297340, 4587025, -738734, -93952, 328028, 809601, -3819300, -4555350, -69793, --1031866, -534187, 1488743, -992674, 1193464, -5527623, -1139777, 3257733, -70867, 2028298, --9192304, -1131724, -252329, -1907502, 2027225, 1363652, 1315871, 1533303, 2246805, 2283312, -2588792, -907849, -4195646, 5014375, -3198140, 12199855, -6236830, 2063195, -4680978, 866510, -3302293, -7814693, -5155572, -13885092, -15183783, -10108742, -3852049, -788663, 452582, -8533563, --7752416, -15912854, 7679939, -15949361, -20336670, 13084618, -12164958, -15666967, 14569603, 2656974, --3205119, 15456514, 9045738, -12188580, 11242077, -30922690, -2018098, -8024610, -3223910, -14595373, -25427818, 11769284, -7362648, 3614752, 8058970, -5420249, 8890045, 19864, 456340, -7362111, -8634495, 9757629, 13412109, -21026550, -662499, -264677, 6255083, -9601936, -3553549, -9773198, --9419937, 16492674, 5436355, -12577812, 6478958, -7832410, -8106751, -13501230, -24237038, 6211597, -16116865, 952409, 16233903, 21822728, -1247151, -9138617, -20761336, 1479079, -2609193, 1184874, --5138929, 4153234, -9092983, 19512036, 10944114, 17046726, 3542811, -2276333, -5177046, 6863895, -8173860, 3499862, -1428077, -2624225, 824097, 9088688, -1578937, 3711926, -5783174, 2348810, --9592273, 766115, 1242856, -4421132, 9145059, 5082020, -2287607, -6164352, -5182415, -1912871, --434865, 2732136, -6076305, 1390496, 1145146, -645319, -4184372, 1402307, -9133785, -2063732, --2130841, -2771328, 1633698, -379568, -17723182, 2486786, -39373576, -26235808, -19029926, 10357851, -19335942, -27634894, 6311992, 19812684, 12028056, -151398, 7075959, 18687940, -8653822, -979789, --5534602, 677531, -12188043, 8703751, 48855, 1144072, 3038689, 25006910, -1389422, -10844792, --10819559, 6060199, 18184892, -7266548, -18679350, 5636608, 18455474, 10980621, -2638184, 9155797, -5965710, 8826158, 1801739, 7496866, 12476343, -1442572, -21388938, 1197222, 6424198, -19789598, --14675903, 19619410, 15158550, -14914274, -9990631, 4892505, -1140851, 9691594, 23567022, -4961761, --4719632, 4639639, -1358283, 8907225, 4250944, -8505109, -6919729, -3126199, 6808060, 6440841, --6440841, -17040282, -3164317, -25710212, 24321326, 4259534, -4622459, 2463701, 9999221, -388695, --11494943, 4356171, -5074504, -7231115, 5621039, -1408212, -11376295, -18350248, -6174016, -7400229, -15133317, -2296734, 4903242, 3044595, 1732482, -1297080, -1461900, 2522757, -4234301, 807454, -5395016, -525060, -3026878, -1513439, -12738873, -3748970, -471373, -2222646, -9309342, -8095477, --3590593, -1739462, -956704, -2550137, -615791, 302795, 6783901, 2594697, -1264868, -2656974, -960999, -2331630, -2217814, 4638028, -2383170, -5206574, -1694365, -3883724, 364535, -4811437, -23622, 3444564, 921271, -4720169, -1640141, -15107547, -701153, 2681133, -18628346, -4822712, -13935021, 18241262, 12828530, 33986612, 20427402, 30806726, 11444477, 8173860, -15906411, 17327508, --5830418, -1861868, -12736726, -8383240, 16649978, -5371394, 37788196, 17678622, 10897943, -1929514, -8733279, -5852967, -17651778, -8826158, -10955388, 8068633, -10327786, -129923, -11048803, 6577206, -15385110, 13993540, -905701, 20190642, 16782584, 902480, -5826660, -7548942, -13740674, -4606890, -31669478, 12401181, 36456756, -11614665, 209380, -1104344, 8523363, 29377576, 10050760, 839666, -18832894, 21684216, 22789634, -1917703, -13407277, -4796405, -3671660, -3731790, 15129022, 10448045, -14362908, 22004728, -13575855, 33206540, -22143778, -41496900, -6385543, -12832825, 8551280, 20269024, -9903658, -11081016, -1082869, -12044699, -9063455, -5873368, 227096, 16809966, 2881923, -4529580, -2682744, 1427540, 5068062, 5491116, 3704946, 6700149, 1857573, 4286914, 1587527, 4738423, -385473, -13220983, -5085778, 59593, -12422119, 1584843, -12970801, -6666863, -7829189, -7126962, --6083821, -4322348, -1633161, 981400, 3877819, 14001593, 1995012, -8483097, 4121558, 1054951, -12586402, -2112587, 5510443, 147640, 297963, -6426882, 1716913, 19982872, 31828392, -15721191, --12902619, 11791296, -9932112, -1508607, -4858682, 4558034, 13676786, 15358803, 21943524, -24266566, -27139362, -9729175, 1983201, -12513387, 10930692, 21055004, 7953206, 4052302, 845035, 25595320, -5626944, -660351, -9030169, -3700114, -26756572, -3353833, -13357348, -31251256, 2003602, -1722282, -12142409, -32559074, -7115150, 7839389, 11390253, 27404576, -8217883, 8091719, 14138495, 2398202, --4537633, 7854959, -7992934, -1713155, -41634876, 3736085, -18165028, -20330764, -23561654, 9363029, --37369972, 12216498, -14449881, -18254148, -25650082, 22672058, 23783382, 24173150, 4414153, 4530117, -22290880, -31423054, -3368865, -9609989, 12516072, -37360308, -13175349, -3762391, 11743514, 9636833, -7443179, 15243913, -14278082, 5648419, -17180406, -4881231, -10402948, -3861713, -3706020, 573378, --16291885, 7432441, 9817758, -1625645, 454193, -7749732, -2711735, 7823820, -10595684, -97174, -4836133, -12696460, 5629092, -11365557, -88047, 7305203, 1486059, -9296994, -6402186, 3755949, --5452998, 5956583, 3884798, 6854231, -1072668, -8128226, 15528991, -7351374, -3966939, -10051834, -6829535, -3342558, 816581, -9316321, 1085553, -11344619, -1989107, 8534637, -2820720, -4742718, --12187507, 1519345, 1455457, -1466731, -15936476, -29631516, -566399, -10595147, 35036732, 7285339, -24768002, -8164733, 33820720, -21329344, -39936752, 8947491, 6708202, 4489852, -19885162, -22652194, --17756468, 6554657, -17887466, 7763691, -9522479, 26505316, -8741869, -4092030, 19090056, 514322, --47813724, -19918448, -728534, 31368830, -3701725, -9953587, -27460410, 4661650, -6849936, -23642722, --27991376, -3327526, 5005785, -9696962, -10729365, -28007482, 18166102, -7021198, 6452652, -13993540, -492311, 8182987, 4929549, 24539296, 119185, -8579734, -32165546, -11397233, 15342160, -22030498, --11322608, 8018167, 17475686, 13650480, 34979824, 26708792, 348966, 20243792, 20699058, 7003481, -658741, 12104292, -10582263, 52926344, -24559696, -58015880, 15224585, -49399104, -2086817, -38689604, --450435, 47105052, 5727339, -22594750, 7291244, 7923678, -14892799, -12177843, -16829830, 3508452, --5234492, 15027017, -12158516, 10011569, -20225000, 5496485, -895501, -3374771, -4776541, 13610751, -25993142, 8109972, 10418517, 18034030, 5283347, -18200460, 5028333, -6805913, 11860552, -3859565, --5898601, -783295, -1492501, -4955319, -15187004, -9877351, -6884296, -907312, 1846836, -1165547, --9745281, -21423296, -13638669, 3136400, -4061429, -448287, -8468602, 2806761, 15115064, 5932961, -21872120, -33318746, -22703198, -13570486, -12137041, 13856101, 20679730, -12028593, 1075352, 19071266, --38273528, 3131031, 8569533, -28302224, 14503568, -9206799, 12757127, 5248450, 14418205, 1923609, --18878528, 19538880, -24505472, -4941897, 46498928, -18888192, 16828218, -10822781, 18953154, 17899814, --6470905, -20214264, 21494164, 57082800, -31427886, 8403640, -41603736, 21203180, 12233677, -22041772, -24448028, 2646774, -49890340, 7435662, 2109366, 22945326, -6397354, -3196530, -26367878, -25032680, --13334800, 62192200, -9773198, 31712964, -27917288, 20956220, 9798431, -5417028, -21536576, -3673808, -17139604, 35065188, -12927315, -11431055, -4002910, 7071664, 29976724, -7450695, -7477001, -22258668, -6597070, -33634424, -15385110, 24383604, 28949154, 3506841, -2731062, -15676094, -26328686, -75346072, -46840912, 18115636, 26777510, 2854543, -24873766, 27224188, -15516643, 11619497, 15809238, 15855409, -36103496, -516470, 8218957, 10228465, -4353486, -15769509, -5558762, 26753888, 16138340, -14745160, --3520263, -9978820, -2859911, 12578885, 3427384, -17285096, -11519102, 16848082, 3651259, -5114769, -8421357, -14593225, -9222905, -2905009, 7068443, 11944304, 7431367, 2420751, 9090298, -7330436, --10072772, 1932198, -1159104, -13086228, 1424319, -13501230, -685584, -8189966, -2150168, 2305861, --7177427, -12912282, 4239133, -31490700, 21914534, 22075058, -43397424, 4384088, -22937272, 3014530, --47735340, 47912508, 41202160, -4039417, -21922050, -7297687, -8946417, 23368918, -23998130, 30079804, --39932996, -22775674, 11060615, 14282914, 2975339, 13801341, 37550900, 11118060, 17198122, 4872641, -17886392, 13120051, -8713415, 4009889, 15123654, -830002, -1510755, 30421790, 13346611, 39854612, --3819837, 22821846, -128312, -28724742, 29442538, -15071040, -3504693, 9378598, -27645094, -18328772, -10496900, 43349640, 23381266, 15810311, -55707872, -12692702, -39105140, -143881, 62143880, 41208064, -46982112, 3918621, -45871324, 14442364, 46248208, 9957882, -11747272, 41509248, 4330401, 27821188, --71246528, -58780924, 42280732, -2847563, -19261854, -44978508, -9963787, -16752520, 19219978, 18137110, -21059836, 21960704, -9077950, 7001334, 39189428, 36526548, 37853156, 3377455, 54439248, 27445914, --9752797, -21362094, 256087, -10403485, 3167539, 27975806, -4442070, 1460826, 20124606, 22513144, -2080912, 362925, 8564165, 24921010, 8625905, 11828877, 16726750, 6256157, 13004087, -351114, --7415798, -2930242, -2863670, 1322850, 17300666, -6340983, 3014530, -13906030, 20949240, 10486700, -9130027, 61740, 10547366, 324270, 35930084, 9573482, 36888400, -9663676, 32260036, 15156403, -4719096, 14405857, 13845901, 16122770, -4279398, -2550137, 22033720, 7139847, 18525268, -41124848, -24249922, 32445256, 2443837, 11089069, -29350196, 22928682, -13357348, 10997801, 1052804, 112206, -19386946, -5982890, 12626667, -4043175, -23532662, 6302328, -1617592, 26338886, 23008140, 32748588, -10931229, -25036438, -20655034, 21264920, 23898272, 11063299, 2137820, 7566122, -6476811, -20521890, -3544422, -7591892, 29123100, 20326470, 17796734, 23057532, 23702314, -32618666, 36005248, 35342212, -25969520, -17528836, -15527381, -22675280, 31397822, 18321794, 51510080, -31284542, -30878668, -23931020, --45346264, -11834782, 49250928, 7839389, 38713760, -41129680, -43861280, 9617506, 28093382, -38461968, -6190659, -30630634, 12384001, -35358856, -2617246, 16824998, 17969606, -32151052, 12888660, -24455544, --48531520, -1603097, 57926224, 29894582, 23602456, -16118475, -41059352, 62746788, 50983408, 14263050, --56140592, -2200634, -12989592, 40186936, 20795694, 24910810, -29034516, 22036940, -12863964, 14433774, --19996830, 7186017, -22392886, 32828582, -6168110, 5391258, -38852812, 11338177, 5248987, -1832340, --8432095, 7943542, 4479651, 4075924, -23880556, 10182294, 25111600, 1530619, 15272367, 12559021, -10781979, 1605244, 5319317, 471373, 1784022, 1038308, -7266548, -937377, 8268349, -194884, -16056198, 13109314, -6513318, -1448478, 7728257, 3000572, 12580496, -22695144, 15319075, 1519882, --92879, -79750024, -15636902, -2177012, 1543504, 27562952, -73362872, -8558259, 34040836, -54659364, -12866111, -12533251, 64100240, 33501818, -38308960, 9473087, 43291660, 4255239, -16501264, 13994614, -10777684, 5531381, -310311, -4344897, 3787624, 6914898, 15143518, 43945032, 35716412, 38424388, -26741540, 48410188, 24024436, 49504328, 20820928, 43912284, 1017370, 27255862, 24948928, 27014270, -21085606, -2024003, 8473434, -33770256, -19749334, 64188824, 1191317, -25689274, -6806450, 20138028, -34220152, 69094216, -8957154, -38048580, -18766860, -28047210, 39756900, 45035952, 50838456, 15668578, --1447404, 34148748, -57629336, 52824340, 20401632, -27834072, -129923, -90240488, 2531346, -59635620, --82346872, -20569672, -48237852, -21075404, 94121520, 85565416, 80816792, -63240708, -6090801, -7168301, -63634772, 99160056, -21683680, -27908698, 55310588, 56473988, 48929340, -5698885, -7415261, -27361626, --34130496, 5109938, -12289512, 15294379, 24261734, 20833276, 14802605, 1506460, 9739912, 26627186, -4964982, 248034, -7089918, 1605244, 2236067, 7321309, 5886790, 5523328, 27881318, -2291902, --15923054, 16924318, 20379082, 4780836, 32296006, 7654706, 15844671, 34979288, 47050828, 34227668, -25371982, 10218264, 5117454, 13727252, 32372780, 14201846, 33170570, 24432996, 16136729, 22995254, -8818105, 31176630, 27511414, 22228066, 34080564, 19495930, 6674916, 9526774, -22592064, 57437136, -68490768, -56627532, -53075596, 18249852, 59802052, 2095407, -28900298, 795643, 15794742, 18722836, --50549616, 19173808, -7266548, 26969710, -28028956, -12595528, -32743220, 34541200, -5234492, -14388140, --30662308, 22635014, 12383464, -4582730, -26017838, 12505334, 10625749, 6627672, -23072564, -2603824, --1759863, 26592290, -20202990, -4121558, -29255706, -6876243, 9245991, 23440858, -30429306, -10701985, -31060130, 27838904, -9010841, -18521510, -804770, -9106404, 25811680, -14449881, -9059160, 13534516, -8914741, 16911434, -15268609, 5327907, -20777978, 23900956, 26659936, 13748190, 3526705, -20674362, -23585812, -16462073, 36915244, -26767846, 29508036, -46688980, 31302796, 4876936, -3532611, -32564442, --10738492, 11734924, -9315784, 4132832, -9051107, 10355703, -4980552, 11502996, -11217381, -13360033, --9934259, 11021960, -96100, -252866, -3362423, -6890738, 4056597, 12807592, -6988449, -425739, --188442, 2705830, -1565516, 3224447, -3045669, 9681930, -724239, 12236899, -11044508, 3077881, --5670968, 12411382, -13108240, 12282533, -13518410, 8698383, 2527052, 15285789, -4452271, 14583561, --13324599, -8260296, -3228742, 22899156, -11700565, 18038862, -7256884, 3830037, 983011, 13263396, --6516539, 7536057, 780073, 1729798, -2309619, 5686000, -2847027, -5694053, 13309030, -7097434, -749472, -5251135, 3009162, -4782446, 5880884, -8202314, 10023380, -7387344, 8101382, -10732050, -9461813, -14097156, 13513578, -7526930, 8747238, -9209484, 9279277, -9168681, 9538049, -8071854, -8538932, -11131481, 9348533, -9041980, 9575630, -10489921, 11053635, -10041097, -1828582, -12332999, -55098524, 58624692, -34492344, -20437066, 11632382, 55987584, 34792456, 20863878, 20076288, -8913668, --23419382, -7088307, 13166759, -199716, -5508296, 16707423, 302258, 11777874, 1455994, -6255620, --20979304, -5564667, -1214402, 1558536, -816581, -17047262, 19055696, 3187940, -7649337, -418759, --572841, 281320, 12308303, 22591528, 9645960, 2297808, -8112657, -11670500, -3013993, 7352447, -15152645, 20397336, -11356430, -11215233, 2561411, 20621212, 9311489, 4614406, -9288941, -18676666, -15967078, -3267396, 468151, 1105954, 5157182, 4949950, -2247879, -657667, -12171400, 1897302, -10770704, -5080947, 6443525, -3576634, -8667244, 5545877, -1629403, 3013993, -643171, 9378061, -6361921, -13908715, 4132832, 697395, -25266218, -33571076, 984084, 2000918, 7677791, 20496120, -2263448, -8974334, -8798777, 8096550, 8822400, 13393856, 9126269, 610422, 3905736, -1391033, --10123775, -4174171, 1567126, -13880261, -13303124, 8626979, 9133785, -169114, 10270341, -14482093, --2617246, -631360, 744103, -4438849, 2323577, 7903277, 10914586, 5368172, 9194451, -5747740, --11377905, 6742562, 1085553, -2739116, 7810398, 4391067, -5354751, -19363324, -72814728, 30981746, -112008992, 103488848, 88138632, 35310000, -83840448, -52303576, -75383656, -84247928, -75528072, -21863532, -16202764, 63683628, 66120484, 79417168, 52431888, 53088480, 1212791, -55625732, -53327388, -65519728, --51432232, -28475096, -2025614, -18309982, 19849728, 24687472, 39764956, 43875240, 44372380, 26589068, -2144799, 11865384, -9889699, 6399502, -30531848, -22035330, -28242632, -45919104, -36596344, -27888834, --19845970, -32626720, 4450660, 55927452, 63005560, 35310000, 65884260, 16436840, 38409356, 19883552, -11217918, -16508244, -35313220, -48192756, -67894840, -51918100, -77440408, -31957242, -34529928, 22273164, -22141630, 64768644, 74465608, 66464620, 59034864, 57873072, 36075576, 4503810, -20329690, -61770756, --38885024, -80710488, -68968048, -95735360, -15601469, -8522826, 23514410, 30368104, 54506356, 64295660, -53657564, 48058000, 35497904, 21053930, 2867428, -17790828, -25806310, -34571804, -53561464, -37509024, --46648176, -32327146, -16708497, -4747013, 10441602, 10313827, 50965692, 47128676, 46549928, 36436356, -26584774, 3225521, 16485158, -18457622, -30777736, -23852100, -66495220, -77350752, -15051713, -5177046, --3471407, 37786048, 30787400, 41234372, 28753732, 37683508, 11363410, 9766756, -3040300, -15916612, --20639466, -26479010, -29490320, -18043158, -3933653, -22881976, -12215961, 18338974, 25977036, 17541720, -22480932, 15463493, 11075110, 2938831, -2190433, -7938710, -11372537, -8688719, -14183593, -7342784, --2923799, -5259725, -7289097, 1619203, 5247913, 1210644, 8076149, 10526428, 7740068, 5596343, -4801237, 2540473, -843424, -4862977, -4938139, -6886980, -5145371, -5315559, -3452080, -2793876, -455803, 1325534, 2407329, 2004676, 3343632, 3434363, 2711735, 2054605, 2003602, 1465121, -1769527, 362388, -2085207, -3311957, -1641751, -2939905, -3384971, -2922725, -1828582, -803159, -1318018, 2040110, 2360622, 1582696, 3055869, 1952063, 1197759, 665720, 360240, -1198833, --1299765, -1545651, -597537, -1179505, -1069984, -1098975, -169651, -463856, 324807, 254477, -1044214, 762357, 1269163, 671089, 807454, -110059, -280247, -572304, 315143, -583042, --417149, -1090922, -371515, -380641, 491237, 285078, 807991, 301185, 447750, -395137, -53687, -317828, -108448, -675384, 62277, -245887, 280247, -6979, 428960, -128312, -376883, -137439, 236223, -261993, 207769, -248034, 214748, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +-15194521, -2656437, 201327, -3478924, -7151121, -2356863, 5238787, -8405788, -4646081, -2781528, +-1647657, 2672544, -1202054, 2975339, 1359357, 2605972, -291521, 3225521, -2813741, 526670, +-1235340, 611496, 8109435, -1724429, -500901, -4019016, 5012227, 3113851, 2411087, 6257231, +-3199751, -1816234, 2138357, 5602785, -1512365, -372052, -4522601, -4952098, -3314104, 3539053, +-4398584, -3769371, -476741, 5040144, -6818798, -1448478, -5697274, -2761664, -1630477, 785979, +-513249, -4081830, 5235565, 895501, 4711579, -1902671, -1194538, -5867999, -127238, -2056753, +-2213519, 3385508, 1901597, -1049046, 1821066, 3746285, -1065689, 1611150, -2680597, -1545115, +-648003, -2525978, 2246268, 784368, 1710471, -4008815, 2880313, 1660542, 6496675, 3866008, +-1063004, -4125316, -336081, 901943, 514322, 1286343, -190052, -1395864, 57445, -947577, +9127, -1147293, 411780, -1116155, -73014, 1254131, 424128, 648540, -798864, -559956, +594853, 862215, 392453, -125628, 65498, -16106, 539555, -12516608, -4474282, 3587372, +-3293703, -1498944, -1384053, 1686848, -621697, -3308199, 5222680, 4647155, 1571421, -593779, +2429878, -6427956, -922881, -6352257, -3178276, 4671851, -762894, 827318, -622233, -734439, +125091, 9783936, 8982924, 3997541, 4804995, 5666136, -1074279, -658741, -1932735, 4999342, +-466541, -1904281, 1428614, -2920578, 2023467, 3597572, -1818382, 4056597, 4611721, 8948027, +-3477850, -4227322, 3858491, -2317135, 154082, 1882806, -5177583, 309775, -2695629, -3055869, +6924561, 4050154, 4992900, -2840584, -3712999, 2625836, -4326643, 3056943, 13338558, 749472, +944893, 2987687, 1331977, 1224603, 7607998, -4056060, -994285, 1387811, 1022739, -3775813, +-2736968, -3854196, -1793149, -1410897, 3519189, -596464, 3535295, 3582003, -3559454, -3852049, +-953483, 2426657, 3412889, -4038343, -744640, -1202591, -2732136, -341450, -2585034, 681289, +-132070, 1400696, -759672, 535797, -975494, -262530, -738734, 613643, -3633542, 3935801, +6391985, -3081102, 3173444, 10011032, 3366718, 2273648, -7006166, 5792301, 1538672, -9052717, +3838090, -2557653, -5412733, 2160906, -745714, 2081449, 5254356, -5534066, -5782100, -2599529, +7880191, 197569, 3914863, 8128763, -12116640, -9802189, 1598265, 5951214, -4374961, 363998, +8100845, 2065342, -1037235, -2455648, 9692667, 1164473, -2349347, 1335198, -8777303, 978716, +-4836670, 4456566, 792421, 4734665, -2384781, -1210644, 2158758, 125091, 634581, 256087, +4571456, 3654480, -4994510, 2847563, 4047470, -6887517, 828929, -3113315, 1300301, -1592896, +-5299453, 68719, 4589173, 3961034, 8844948, -5489505, 6851010, -4540854, -899259, 4039954, +-4417374, -6616397, -2374580, 295816, -405874, -353261, -701690, 1291711, 2827162, -3855270, +-38118, 1813013, -341450, 1554778, -3134789, -1821066, -1236414, -2327872, 690416, -515933, +-1800665, 979253, 1039919, -1532230, -2311229, -137439, -529355, 2381023, -108448, -405874, +449898, 500364, -406411, -732292, 1622424, 521302, -1277216, -665720, -975494, 130997, +1660542, 148713, -566399, 20186346, 9036611, 12232067, -998043, -3371549, -4415764, -4409858, +2397129, -3701725, 5620502, -627602, 7715372, 477815, 4079145, 5081483, 3913789, 3367254, +4439386, -14977625, -4436701, -1397475, -3163780, -2761664, -4722317, -10664941, 477278, 7328288, +-4505958, 4405026, -3618510, -5315559, -4023848, 621160, -3395709, -1246614, -3481608, -227633, +8822400, 485331, 3966402, 5592048, 7254200, -3392487, 1700270, -1606855, -5596343, 6373732, +-3555159, -242666, -5538361, 4067871, -51540, 110059, -1526861, -2561411, 1879585, 5698348, +-2379412, 3219078, 3034395, 2567854, 9770514, -9807558, -4150549, 258235, -5407901, -6992744, +-2778307, -8562554, 1291175, 10084046, -6938520, -3291556, -7924215, 533113, -2492155, -3771518, +-9290014, 5484137, 7137162, 2844342, 4989142, -2508798, 806917, -1853278, 2072322, 110059, +4938676, -1254667, 2128693, -77846, -1257352, 1741072, 1185948, 2284923, 1902671, -300111, +460635, 1261110, 506806, 989453, -76236, -919660, -1775432, 911607, 471373, -1195612, +885300, 995896, -294742, 448824, 1179505, -331786, -1052804, -370978, -319438, 6200322, +9011378, -5025112, 4716411, -4115116, -1906966, -1676648, -11041287, 7993471, -2298344, -1253594, +12850542, 7889855, 8604430, -3552475, 374736, 1454383, -1925756, 2775086, -6482717, -247497, +-4422743, 5151814, -5036923, -3575560, -491237, 814970, -6230387, 1130650, 705448, 8161512, +98247, -11336566, 6525666, 5999533, 8697309, -1455457, 2216740, -6307160, -4659503, -2047089, +-4523138, 1707786, 1225676, -1782948, -650151, 4626754, 7370701, -10129143, -2137820, -90194, +-4086662, -4377109, 6669548, -5430450, 2537252, -5332739, -6916508, -5261335, -3401614, 2310693, +1006096, 12332462, -2071785, -3425237, 3734474, -3823595, -1060857, -3405372, 3493419, -3159485, +4493073, -2326262, -2023467, 2972654, 7492571, 1977833, -6975564, -55298, -3422552, -7203734, +2046015, 4930086, -1640678, 1063541, 1783485, 147103, -734976, 2487323, 82678, -2983392, +51540, -1141924, -507880, -1603097, 2392297, -665720, -1909650, -2185602, 319438, 2076080, +-950798, -258235, -2884071, 161061, 551366, 870805, -499827, -2579665, -1256278, 2048699, +-855772, -2778307, 1103270, -15467788, 14878840, 7931194, -8822400, -8968965, 3695819, 11745662, +-137976, 3418794, 13755170, 4562866, 4162897, -2358474, 7183333, 6496675, 7563975, -13623636, +-8313446, -8281771, 6535867, 5572183, 7184407, 300111, -8264054, 3366718, -1231582, 3708168, +-11893301, 4562329, 7246147, -5635534, 3147137, 5797669, 1660005, -220117, 1275605, -1919314, +10456635, 7044820, 5604396, 162672, 3646964, 8006893, -7169911, -3915400, 373662, 10601590, +6831683, 4142496, -8004746, 248034, 5469641, 6310918, -2222646, 1923072, 6226092, 7643431, +2442226, 7063611, 2835752, -844498, -6552510, -91268, -10921565, -4527970, -5234492, 865973, +3613678, -6382322, -2557653, -11612518, 5036386, -3260954, -77846, 6084358, 8948564, 10755672, +1345935, -1174674, -6701760, -2054605, 3426847, 3640522, -7113003, 2182380, -3201361, 2556043, +475668, -2454574, 43487, 1218160, -2258616, 956704, -600222, -2746095, -1389422, -1749125, +1690607, 2015413, -370441, -1617592, 1108102, -1255741, -872952, -2150168, -301185, -505732, +-2452426, 1886564, 1528472, 1941325, 13162464, 4014721, -2131915, -6011344, -15408732, -7595650, +9595494, -3405372, -14154065, -3878356, -2160369, 2106682, 7983271, 11971148, -601295, 3476776, +-2652679, 5932961, -6613176, -7221451, -7593502, -13749264, 7417946, 4101157, -11323144, 288837, +-8239895, -3248606, 7483444, 4113505, 6127845, -1754494, -1474248, -2024003, 13109314, 10060961, +10835129, -4937602, -9061844, 7194607, -1126892, -3308736, 9351754, 1588064, 9202504, -348429, +5191542, -6450504, -228707, 4514548, -19392852, -3000035, 1043140, -14332306, 3806952, -3696893, +13424457, 8434779, -8059506, 586263, 12265353, -1319092, 6299107, -4143033, 8461622, -3945464, +1750736, -3285113, 303869, 5797132, -7823820, 8492224, 4482335, 4852776, 1495722, 11305965, +-4365298, -13059922, 2348273, 8959839, -4170413, -8133058, -5733245, -4181688, 9424769, 144955, +-3900904, 332323, 322659, -1869385, -1690607, 529892, 1892470, -1098438, -1125281, -734976, +2097018, -1100585, -3409130, 926102, -3784403, 3495567, 2406792, -100932, -300111, 892279, +-1032403, 1517734, 250719, 1034013, 306016, 428423, 4221953, 1384053, -2065879, 1109175, +583579, 1890859, -512712, 421981, -31396748, -6652368, 16855062, -13612899, -4920959, 14300094, +5397700, -4552666, 1518808, -11865384, 10577431, -1357747, -19100794, 1349694, -1002338, 7201587, +7084549, -3816615, -14967424, -6434398, -5718749, 293668, -7986492, -4410395, -10183367, -2952253, +11080479, -9137543, -4585952, -3532611, -5937256, -6287296, -8505646, 5764383, 1161789, 7175817, +1243393, -5357972, -8247411, -8160975, -1694365, 5367636, 7959648, -2861522, -7297687, 7595650, +3152506, -11483669, -12773233, -26038240, -2327872, -8352101, -5054640, 3803731, 3918084, 2327872, +11641509, -1270774, -5612449, -758599, -6047314, 13258027, 7037841, -2648384, 7074885, -7552700, +3689914, 3001645, -7368017, -3281892, -6614250, 4628901, 3252364, -12158516, 7922604, 12158516, +-855235, -659278, -12433930, -4894652, 5393942, -3921842, 3541738, 12045236, -4119948, 2586644, +1161789, 859530, -3904662, 629213, -692564, -5150203, -3120831, -549756, 1726577, 204011, +1341640, -5373541, 551903, -2922188, 1262720, -3154117, -3037616, -1898376, -263604, 567473, +-2345589, 595927, 1207960, -419296, 450435, 2143726, 1176284, -4304631, -2854543, -1422708, +352187, 1453846, -765578, 1473711, 228170, 1232119, -1049046, 213138, 5405217, 21036750, +-9923522, 8122857, -5292474, 157840, 11756936, -3237869, -5503464, -2606508, -1294933, 2312840, +7938710, 27663884, -1690070, 1870995, 7439420, 1993939, -47782, -12623983, -13536663, 2276870, +1655173, -8175470, -4456566, -1714229, 7437810, -3149285, 1308354, 49929, 3154654, -3211025, +15862388, 9128416, -7652558, 9044664, 7821136, -9467719, 1533840, 4360466, 3049964, -2464774, +-3445101, 13583908, -11846057, 5181878, 14609868, -4911832, 1683627, 9700721, -1186485, 8467528, +4377109, 362388, 4373888, 7299834, 9568650, 6347425, 643708, -121333, -6843494, -7177427, +135291, 1059246, -23440858, 15452755, -3717831, -6968048, -8237748, -16844324, -19439022, -12293807, +2203855, 9794136, -3636764, 1422171, -1695975, 9735080, -3680250, -7442105, 4233227, 2524367, +-3337727, 1411971, 6340983, -6016713, 1116692, -7716446, -2799782, -3328600, 1778117, -682900, +3963181, 2787434, 737661, -905701, 1955821, 3041911, -192737, -5521718, 3107946, -39192, +4800163, 4946192, 2222109, -2121177, 4145180, 1172526, -791885, 90731, 134218, -3614215, +4164508, -156229, -2947958, 4356708, 8116415, -1393717, -1866700, 4461398, -1774895, -2709588, +-1207423, 3881577, 28335510, 28196460, -676457, -23565412, 4705674, 4680978, -2565706, 6024229, +3650185, 1933809, -141734, -4079145, 23013508, 4122095, -3552475, -25600690, -14202383, 5917928, +-1454920, -8966281, -15158550, 2039036, 2721936, 3831648, -3681324, -16854526, -17751636, 19291382, +18477486, 5635534, 16980154, -14491757, 2091112, 7460895, -2903398, -9218074, -16290811, -8206609, +3036005, -778463, -7574175, 7848516, 282394, 7616051, 6374269, 350577, -17524540, -10341744, +-8171712, -1502165, 1949915, 2258616, -2870112, -5073430, 1349157, 2775623, -15657303, -4053376, +2715493, 3475166, -7036767, -19828790, -4478577, -5041755, 14719390, -643708, 6697465, -6681359, +-4878009, -8919573, -9747965, -5865315, 1728188, -818191, 12378096, -7355132, 2257542, 14072460, +-854162, 6990060, 6466074, 13668197, 3186329, -4073240, -6908992, -6270653, -2291902, 8230768, +1417339, 8297340, 4587025, -738734, -93952, 328028, 809601, -3819300, -4555350, -69793, +-1031866, -534187, 1488743, -992674, 1193464, -5527623, -1139777, 3257733, -70867, 2028298, +-9192304, -1131724, -252329, -1907502, 2027225, 1363652, 1315871, 1533303, 2246805, 2283312, +2588792, -907849, -4195646, 5014375, -3198140, 12199855, -6236830, 2063195, -4680978, 866510, +3302293, -7814693, -5155572, -13885092, -15183783, -10108742, -3852049, -788663, 452582, -8533563, +-7752416, -15912854, 7679939, -15949361, -20336670, 13084618, -12164958, -15666967, 14569603, 2656974, +-3205119, 15456514, 9045738, -12188580, 11242077, -30922690, -2018098, -8024610, -3223910, -14595373, +25427818, 11769284, -7362648, 3614752, 8058970, -5420249, 8890045, 19864, 456340, -7362111, +8634495, 9757629, 13412109, -21026550, -662499, -264677, 6255083, -9601936, -3553549, -9773198, +-9419937, 16492674, 5436355, -12577812, 6478958, -7832410, -8106751, -13501230, -24237038, 6211597, +16116865, 952409, 16233903, 21822728, -1247151, -9138617, -20761336, 1479079, -2609193, 1184874, +-5138929, 4153234, -9092983, 19512036, 10944114, 17046726, 3542811, -2276333, -5177046, 6863895, +8173860, 3499862, -1428077, -2624225, 824097, 9088688, -1578937, 3711926, -5783174, 2348810, +-9592273, 766115, 1242856, -4421132, 9145059, 5082020, -2287607, -6164352, -5182415, -1912871, +-434865, 2732136, -6076305, 1390496, 1145146, -645319, -4184372, 1402307, -9133785, -2063732, +-2130841, -2771328, 1633698, -379568, -17723182, 2486786, -39373576, -26235808, -19029926, 10357851, +19335942, -27634894, 6311992, 19812684, 12028056, -151398, 7075959, 18687940, -8653822, -979789, +-5534602, 677531, -12188043, 8703751, 48855, 1144072, 3038689, 25006910, -1389422, -10844792, +-10819559, 6060199, 18184892, -7266548, -18679350, 5636608, 18455474, 10980621, -2638184, 9155797, +5965710, 8826158, 1801739, 7496866, 12476343, -1442572, -21388938, 1197222, 6424198, -19789598, +-14675903, 19619410, 15158550, -14914274, -9990631, 4892505, -1140851, 9691594, 23567022, -4961761, +-4719632, 4639639, -1358283, 8907225, 4250944, -8505109, -6919729, -3126199, 6808060, 6440841, +-6440841, -17040282, -3164317, -25710212, 24321326, 4259534, -4622459, 2463701, 9999221, -388695, +-11494943, 4356171, -5074504, -7231115, 5621039, -1408212, -11376295, -18350248, -6174016, -7400229, +15133317, -2296734, 4903242, 3044595, 1732482, -1297080, -1461900, 2522757, -4234301, 807454, +5395016, -525060, -3026878, -1513439, -12738873, -3748970, -471373, -2222646, -9309342, -8095477, +-3590593, -1739462, -956704, -2550137, -615791, 302795, 6783901, 2594697, -1264868, -2656974, +960999, -2331630, -2217814, 4638028, -2383170, -5206574, -1694365, -3883724, 364535, -4811437, +23622, 3444564, 921271, -4720169, -1640141, -15107547, -701153, 2681133, -18628346, -4822712, +13935021, 18241262, 12828530, 33986612, 20427402, 30806726, 11444477, 8173860, -15906411, 17327508, +-5830418, -1861868, -12736726, -8383240, 16649978, -5371394, 37788196, 17678622, 10897943, -1929514, +8733279, -5852967, -17651778, -8826158, -10955388, 8068633, -10327786, -129923, -11048803, 6577206, +15385110, 13993540, -905701, 20190642, 16782584, 902480, -5826660, -7548942, -13740674, -4606890, +31669478, 12401181, 36456756, -11614665, 209380, -1104344, 8523363, 29377576, 10050760, 839666, +18832894, 21684216, 22789634, -1917703, -13407277, -4796405, -3671660, -3731790, 15129022, 10448045, +14362908, 22004728, -13575855, 33206540, -22143778, -41496900, -6385543, -12832825, 8551280, 20269024, +9903658, -11081016, -1082869, -12044699, -9063455, -5873368, 227096, 16809966, 2881923, -4529580, +2682744, 1427540, 5068062, 5491116, 3704946, 6700149, 1857573, 4286914, 1587527, 4738423, +385473, -13220983, -5085778, 59593, -12422119, 1584843, -12970801, -6666863, -7829189, -7126962, +-6083821, -4322348, -1633161, 981400, 3877819, 14001593, 1995012, -8483097, 4121558, 1054951, +12586402, -2112587, 5510443, 147640, 297963, -6426882, 1716913, 19982872, 31828392, -15721191, +-12902619, 11791296, -9932112, -1508607, -4858682, 4558034, 13676786, 15358803, 21943524, -24266566, +27139362, -9729175, 1983201, -12513387, 10930692, 21055004, 7953206, 4052302, 845035, 25595320, +5626944, -660351, -9030169, -3700114, -26756572, -3353833, -13357348, -31251256, 2003602, -1722282, +12142409, -32559074, -7115150, 7839389, 11390253, 27404576, -8217883, 8091719, 14138495, 2398202, +-4537633, 7854959, -7992934, -1713155, -41634876, 3736085, -18165028, -20330764, -23561654, 9363029, +-37369972, 12216498, -14449881, -18254148, -25650082, 22672058, 23783382, 24173150, 4414153, 4530117, +22290880, -31423054, -3368865, -9609989, 12516072, -37360308, -13175349, -3762391, 11743514, 9636833, +7443179, 15243913, -14278082, 5648419, -17180406, -4881231, -10402948, -3861713, -3706020, 573378, +-16291885, 7432441, 9817758, -1625645, 454193, -7749732, -2711735, 7823820, -10595684, -97174, +4836133, -12696460, 5629092, -11365557, -88047, 7305203, 1486059, -9296994, -6402186, 3755949, +-5452998, 5956583, 3884798, 6854231, -1072668, -8128226, 15528991, -7351374, -3966939, -10051834, +6829535, -3342558, 816581, -9316321, 1085553, -11344619, -1989107, 8534637, -2820720, -4742718, +-12187507, 1519345, 1455457, -1466731, -15936476, -29631516, -566399, -10595147, 35036732, 7285339, +24768002, -8164733, 33820720, -21329344, -39936752, 8947491, 6708202, 4489852, -19885162, -22652194, +-17756468, 6554657, -17887466, 7763691, -9522479, 26505316, -8741869, -4092030, 19090056, 514322, +-47813724, -19918448, -728534, 31368830, -3701725, -9953587, -27460410, 4661650, -6849936, -23642722, +-27991376, -3327526, 5005785, -9696962, -10729365, -28007482, 18166102, -7021198, 6452652, -13993540, +492311, 8182987, 4929549, 24539296, 119185, -8579734, -32165546, -11397233, 15342160, -22030498, +-11322608, 8018167, 17475686, 13650480, 34979824, 26708792, 348966, 20243792, 20699058, 7003481, +658741, 12104292, -10582263, 52926344, -24559696, -58015880, 15224585, -49399104, -2086817, -38689604, +-450435, 47105052, 5727339, -22594750, 7291244, 7923678, -14892799, -12177843, -16829830, 3508452, +-5234492, 15027017, -12158516, 10011569, -20225000, 5496485, -895501, -3374771, -4776541, 13610751, +25993142, 8109972, 10418517, 18034030, 5283347, -18200460, 5028333, -6805913, 11860552, -3859565, +-5898601, -783295, -1492501, -4955319, -15187004, -9877351, -6884296, -907312, 1846836, -1165547, +-9745281, -21423296, -13638669, 3136400, -4061429, -448287, -8468602, 2806761, 15115064, 5932961, +21872120, -33318746, -22703198, -13570486, -12137041, 13856101, 20679730, -12028593, 1075352, 19071266, +-38273528, 3131031, 8569533, -28302224, 14503568, -9206799, 12757127, 5248450, 14418205, 1923609, +-18878528, 19538880, -24505472, -4941897, 46498928, -18888192, 16828218, -10822781, 18953154, 17899814, +-6470905, -20214264, 21494164, 57082800, -31427886, 8403640, -41603736, 21203180, 12233677, -22041772, +24448028, 2646774, -49890340, 7435662, 2109366, 22945326, -6397354, -3196530, -26367878, -25032680, +-13334800, 62192200, -9773198, 31712964, -27917288, 20956220, 9798431, -5417028, -21536576, -3673808, +17139604, 35065188, -12927315, -11431055, -4002910, 7071664, 29976724, -7450695, -7477001, -22258668, +6597070, -33634424, -15385110, 24383604, 28949154, 3506841, -2731062, -15676094, -26328686, -75346072, +46840912, 18115636, 26777510, 2854543, -24873766, 27224188, -15516643, 11619497, 15809238, 15855409, +36103496, -516470, 8218957, 10228465, -4353486, -15769509, -5558762, 26753888, 16138340, -14745160, +-3520263, -9978820, -2859911, 12578885, 3427384, -17285096, -11519102, 16848082, 3651259, -5114769, +8421357, -14593225, -9222905, -2905009, 7068443, 11944304, 7431367, 2420751, 9090298, -7330436, +-10072772, 1932198, -1159104, -13086228, 1424319, -13501230, -685584, -8189966, -2150168, 2305861, +-7177427, -12912282, 4239133, -31490700, 21914534, 22075058, -43397424, 4384088, -22937272, 3014530, +-47735340, 47912508, 41202160, -4039417, -21922050, -7297687, -8946417, 23368918, -23998130, 30079804, +-39932996, -22775674, 11060615, 14282914, 2975339, 13801341, 37550900, 11118060, 17198122, 4872641, +17886392, 13120051, -8713415, 4009889, 15123654, -830002, -1510755, 30421790, 13346611, 39854612, +-3819837, 22821846, -128312, -28724742, 29442538, -15071040, -3504693, 9378598, -27645094, -18328772, +10496900, 43349640, 23381266, 15810311, -55707872, -12692702, -39105140, -143881, 62143880, 41208064, +46982112, 3918621, -45871324, 14442364, 46248208, 9957882, -11747272, 41509248, 4330401, 27821188, +-71246528, -58780924, 42280732, -2847563, -19261854, -44978508, -9963787, -16752520, 19219978, 18137110, +21059836, 21960704, -9077950, 7001334, 39189428, 36526548, 37853156, 3377455, 54439248, 27445914, +-9752797, -21362094, 256087, -10403485, 3167539, 27975806, -4442070, 1460826, 20124606, 22513144, +2080912, 362925, 8564165, 24921010, 8625905, 11828877, 16726750, 6256157, 13004087, -351114, +-7415798, -2930242, -2863670, 1322850, 17300666, -6340983, 3014530, -13906030, 20949240, 10486700, +9130027, 61740, 10547366, 324270, 35930084, 9573482, 36888400, -9663676, 32260036, 15156403, +4719096, 14405857, 13845901, 16122770, -4279398, -2550137, 22033720, 7139847, 18525268, -41124848, +24249922, 32445256, 2443837, 11089069, -29350196, 22928682, -13357348, 10997801, 1052804, 112206, +19386946, -5982890, 12626667, -4043175, -23532662, 6302328, -1617592, 26338886, 23008140, 32748588, +10931229, -25036438, -20655034, 21264920, 23898272, 11063299, 2137820, 7566122, -6476811, -20521890, +3544422, -7591892, 29123100, 20326470, 17796734, 23057532, 23702314, -32618666, 36005248, 35342212, +25969520, -17528836, -15527381, -22675280, 31397822, 18321794, 51510080, -31284542, -30878668, -23931020, +-45346264, -11834782, 49250928, 7839389, 38713760, -41129680, -43861280, 9617506, 28093382, -38461968, +6190659, -30630634, 12384001, -35358856, -2617246, 16824998, 17969606, -32151052, 12888660, -24455544, +-48531520, -1603097, 57926224, 29894582, 23602456, -16118475, -41059352, 62746788, 50983408, 14263050, +-56140592, -2200634, -12989592, 40186936, 20795694, 24910810, -29034516, 22036940, -12863964, 14433774, +-19996830, 7186017, -22392886, 32828582, -6168110, 5391258, -38852812, 11338177, 5248987, -1832340, +-8432095, 7943542, 4479651, 4075924, -23880556, 10182294, 25111600, 1530619, 15272367, 12559021, +10781979, 1605244, 5319317, 471373, 1784022, 1038308, -7266548, -937377, 8268349, -194884, +16056198, 13109314, -6513318, -1448478, 7728257, 3000572, 12580496, -22695144, 15319075, 1519882, +-92879, -79750024, -15636902, -2177012, 1543504, 27562952, -73362872, -8558259, 34040836, -54659364, +12866111, -12533251, 64100240, 33501818, -38308960, 9473087, 43291660, 4255239, -16501264, 13994614, +10777684, 5531381, -310311, -4344897, 3787624, 6914898, 15143518, 43945032, 35716412, 38424388, +26741540, 48410188, 24024436, 49504328, 20820928, 43912284, 1017370, 27255862, 24948928, 27014270, +21085606, -2024003, 8473434, -33770256, -19749334, 64188824, 1191317, -25689274, -6806450, 20138028, +34220152, 69094216, -8957154, -38048580, -18766860, -28047210, 39756900, 45035952, 50838456, 15668578, +-1447404, 34148748, -57629336, 52824340, 20401632, -27834072, -129923, -90240488, 2531346, -59635620, +-82346872, -20569672, -48237852, -21075404, 94121520, 85565416, 80816792, -63240708, -6090801, -7168301, +63634772, 99160056, -21683680, -27908698, 55310588, 56473988, 48929340, -5698885, -7415261, -27361626, +-34130496, 5109938, -12289512, 15294379, 24261734, 20833276, 14802605, 1506460, 9739912, 26627186, +4964982, 248034, -7089918, 1605244, 2236067, 7321309, 5886790, 5523328, 27881318, -2291902, +-15923054, 16924318, 20379082, 4780836, 32296006, 7654706, 15844671, 34979288, 47050828, 34227668, +25371982, 10218264, 5117454, 13727252, 32372780, 14201846, 33170570, 24432996, 16136729, 22995254, +8818105, 31176630, 27511414, 22228066, 34080564, 19495930, 6674916, 9526774, -22592064, 57437136, +68490768, -56627532, -53075596, 18249852, 59802052, 2095407, -28900298, 795643, 15794742, 18722836, +-50549616, 19173808, -7266548, 26969710, -28028956, -12595528, -32743220, 34541200, -5234492, -14388140, +-30662308, 22635014, 12383464, -4582730, -26017838, 12505334, 10625749, 6627672, -23072564, -2603824, +-1759863, 26592290, -20202990, -4121558, -29255706, -6876243, 9245991, 23440858, -30429306, -10701985, +31060130, 27838904, -9010841, -18521510, -804770, -9106404, 25811680, -14449881, -9059160, 13534516, +8914741, 16911434, -15268609, 5327907, -20777978, 23900956, 26659936, 13748190, 3526705, -20674362, +23585812, -16462073, 36915244, -26767846, 29508036, -46688980, 31302796, 4876936, -3532611, -32564442, +-10738492, 11734924, -9315784, 4132832, -9051107, 10355703, -4980552, 11502996, -11217381, -13360033, +-9934259, 11021960, -96100, -252866, -3362423, -6890738, 4056597, 12807592, -6988449, -425739, +-188442, 2705830, -1565516, 3224447, -3045669, 9681930, -724239, 12236899, -11044508, 3077881, +-5670968, 12411382, -13108240, 12282533, -13518410, 8698383, 2527052, 15285789, -4452271, 14583561, +-13324599, -8260296, -3228742, 22899156, -11700565, 18038862, -7256884, 3830037, 983011, 13263396, +-6516539, 7536057, 780073, 1729798, -2309619, 5686000, -2847027, -5694053, 13309030, -7097434, +749472, -5251135, 3009162, -4782446, 5880884, -8202314, 10023380, -7387344, 8101382, -10732050, +9461813, -14097156, 13513578, -7526930, 8747238, -9209484, 9279277, -9168681, 9538049, -8071854, +8538932, -11131481, 9348533, -9041980, 9575630, -10489921, 11053635, -10041097, -1828582, -12332999, +55098524, 58624692, -34492344, -20437066, 11632382, 55987584, 34792456, 20863878, 20076288, -8913668, +-23419382, -7088307, 13166759, -199716, -5508296, 16707423, 302258, 11777874, 1455994, -6255620, +-20979304, -5564667, -1214402, 1558536, -816581, -17047262, 19055696, 3187940, -7649337, -418759, +-572841, 281320, 12308303, 22591528, 9645960, 2297808, -8112657, -11670500, -3013993, 7352447, +15152645, 20397336, -11356430, -11215233, 2561411, 20621212, 9311489, 4614406, -9288941, -18676666, +15967078, -3267396, 468151, 1105954, 5157182, 4949950, -2247879, -657667, -12171400, 1897302, +10770704, -5080947, 6443525, -3576634, -8667244, 5545877, -1629403, 3013993, -643171, 9378061, +6361921, -13908715, 4132832, 697395, -25266218, -33571076, 984084, 2000918, 7677791, 20496120, +2263448, -8974334, -8798777, 8096550, 8822400, 13393856, 9126269, 610422, 3905736, -1391033, +-10123775, -4174171, 1567126, -13880261, -13303124, 8626979, 9133785, -169114, 10270341, -14482093, +-2617246, -631360, 744103, -4438849, 2323577, 7903277, 10914586, 5368172, 9194451, -5747740, +-11377905, 6742562, 1085553, -2739116, 7810398, 4391067, -5354751, -19363324, -72814728, 30981746, +112008992, 103488848, 88138632, 35310000, -83840448, -52303576, -75383656, -84247928, -75528072, -21863532, +16202764, 63683628, 66120484, 79417168, 52431888, 53088480, 1212791, -55625732, -53327388, -65519728, +-51432232, -28475096, -2025614, -18309982, 19849728, 24687472, 39764956, 43875240, 44372380, 26589068, +2144799, 11865384, -9889699, 6399502, -30531848, -22035330, -28242632, -45919104, -36596344, -27888834, +-19845970, -32626720, 4450660, 55927452, 63005560, 35310000, 65884260, 16436840, 38409356, 19883552, +11217918, -16508244, -35313220, -48192756, -67894840, -51918100, -77440408, -31957242, -34529928, 22273164, +22141630, 64768644, 74465608, 66464620, 59034864, 57873072, 36075576, 4503810, -20329690, -61770756, +-38885024, -80710488, -68968048, -95735360, -15601469, -8522826, 23514410, 30368104, 54506356, 64295660, +53657564, 48058000, 35497904, 21053930, 2867428, -17790828, -25806310, -34571804, -53561464, -37509024, +-46648176, -32327146, -16708497, -4747013, 10441602, 10313827, 50965692, 47128676, 46549928, 36436356, +26584774, 3225521, 16485158, -18457622, -30777736, -23852100, -66495220, -77350752, -15051713, -5177046, +-3471407, 37786048, 30787400, 41234372, 28753732, 37683508, 11363410, 9766756, -3040300, -15916612, +-20639466, -26479010, -29490320, -18043158, -3933653, -22881976, -12215961, 18338974, 25977036, 17541720, +22480932, 15463493, 11075110, 2938831, -2190433, -7938710, -11372537, -8688719, -14183593, -7342784, +-2923799, -5259725, -7289097, 1619203, 5247913, 1210644, 8076149, 10526428, 7740068, 5596343, +4801237, 2540473, -843424, -4862977, -4938139, -6886980, -5145371, -5315559, -3452080, -2793876, +455803, 1325534, 2407329, 2004676, 3343632, 3434363, 2711735, 2054605, 2003602, 1465121, +1769527, 362388, -2085207, -3311957, -1641751, -2939905, -3384971, -2922725, -1828582, -803159, +1318018, 2040110, 2360622, 1582696, 3055869, 1952063, 1197759, 665720, 360240, -1198833, +-1299765, -1545651, -597537, -1179505, -1069984, -1098975, -169651, -463856, 324807, 254477, +1044214, 762357, 1269163, 671089, 807454, -110059, -280247, -572304, 315143, -583042, +-417149, -1090922, -371515, -380641, 491237, 285078, 807991, 301185, 447750, -395137, +53687, -317828, -108448, -675384, 62277, -245887, 280247, -6979, 428960, -128312, +376883, -137439, 236223, -261993, 207769, -248034, 214748, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { -5177583, --5267778, -4377109, 1221381, -2516851, -390842, -728534, 2542084, 10096394, -2692408, 1004486, --9618579, -5273683, 2947421, -4591320, -3559991, -1364189, -4056597, -1090922, 8399882, -3616363, --5360656, 9051107, 7267085, -2574296, -1671816, 8283918, 2371359, 3204046, 1612760, 392453, --2112587, -3510599, 3299609, -2618856, 2468533, 878858, 957778, -1175210, -2841121, -2251100, -2036888, -2589329, -4057134, -1848447, -1807644, -5195300, 5874442, 9046812, -5201206, 2943126, -261993, -2048163, 1447941, -238908, 86436, -3048890, 5616207, -3339337, -4095251, 4649302, -1435593, -258772, -512175, 2547989, 174483, -88047, -1596654, -822486, 4937065, -7208029, -2460480, 1307818, -1737851, -1735167, -2499671, -3676492, 40265, 3516505, 3621194, 1035624, --56908, 801548, -1993402, 2612414, -984621, 1530619, -1107028, -737124, -528818, -672162, --511101, 1196148, -45097, 483721, 746251, 428423, 1272921, 1574106, -513785, -384400, --700617, -510027, -1000191, -317291, -663036, -572841, -1017370, -424128, -103079, 618475, --387084, -15932181, -2506114, -5825587, -1422171, 1280974, -4331475, -9711995, 7125888, -2388002, -1667521, 4758824, -1502165, -488553, -581431, 2190970, -1671816, 8011725, -319438, 6180458, -9076340, -10878078, 2293513, 7558606, 534187, 1507534, 5245766, 9670119, 1396938, -2172180, -4881231, -1291175, -2505577, 2183991, 1735704, 2160906, -2707440, 9856950, -4531728, 2491618, -3691525, -38655, -465467, -4800700, 798864, -5563057, 4695473, -5682242, -4352413, 3160022, --5287642, 3647501, -3686693, 1538135, -2972654, 2032593, 4305168, 8406325, 2594160, 962073, -4103305, 74625, -7239168, 976031, 2055679, 2775086, -1808718, 394600, -983011, 1394254, -4063576, 2456721, 5545340, 1924145, 751082, -3352759, -1706176, 3275986, 2553895, -3208341, -3882114, 1909113, 4243965, -1302449, -1002875, -1305670, 207769, -799401, -3382287, -603980, -570694, 587874, 2202781, 266288, -641561, -812823, 936840, 491774, -1649268, -223338, --114890, 40265, 677531, 209380, -760746, -79457, -719944, -5772973, 4298189, 2821794, -869731, 5475547, -290447, 3076807, 7434052, 4623533, 9749039, 1902671, -1435056, -9962177, -1577327, -6100464, -2039036, 789737, 2258079, -3811784, 7516, 9620727, -4901095, -234613, --4893579, 2355790, 58519, 1887638, 3930432, 4646618, -2898029, 3492882, 3593814, 6969658, -277562, -6786049, 674310, 7387344, -710817, -432181, -1003949, 4977867, -5749351, 514859, -3794067, 4982699, 5946382, -2202245, -3872450, -465467, 8541616, 830002, 3093987, -6902550, --3089155, 1719598, 1445257, -1150514, 4532801, -274341, -924492, 2574833, -4349728, 316754, --671626, 3020973, 4590783, -6700686, -1499481, 2225330, 4525822, -2843805, -2757369, 1915019, -5361193, -427349, 3606699, 2597918, 3697967, 1596654, 4124242, 6247030, 253403, 1786706, --1700270, 2574833, 1815697, -1130113, -2780455, -473520, -1966558, 703838, -1796907, 840740, --811749, 491774, -1454920, 93952, -130460, 364535, -868120, 1439351, -1302449, -513785, --573915, -646929, 185757, 837519, 821949, 505732, -380105, -230854, -598074, 1927367, -357556, 17353816, 8363375, 6865505, -6477885, -1096827, -9024263, -6380174, 9610526, 914828, --6108517, -2785286, 2039573, -5708549, -542240, 9847823, 3900904, -360777, 3127810, 14421963, --9589588, 2341831, -1810866, -4603131, 8250632, 4247723, 4274566, -3170760, 3689914, 4794794, --1472100, 3094524, -980326, -4050154, 844498, 1589138, -720481, 4918275, 1195075, -1708323, -5381057, -2410014, -2542621, -3069291, 1509144, 2117419, 389768, 3920232, 517544, 12221329, -799401, 45634, -2826625, -2486786, 2920578, -9003325, 377957, 5486821, 4320200, -4835060, -7174743, 176631, 3212636, 5784784, -1619203, 4491462, 3448859, -1519345, -5159330, -3888019, -3248606, 8200167, 2332167, -3483755, -1731946, -1949378, 5614596, -4690641, -258772, 4682588, -5374615, 800475, 687732, -1423245, -2231236, 156766, -508954, -1823751, -375810, -797253, --920734, -1386738, -714575, 1967095, 1308891, -317828, 2484102, 793495, 1012539, -254477, -857920, -368830, -198642, -33286, 303332, 373125, 709743, 1410897, 360777, 224412, --390305, 4216584, 1078037, 11373610, 2795487, 6800544, -326954, 1548873, 1879048, 1935957, --1890859, 6959458, -2922188, 7526930, -3679713, -2832531, 1952063, -4875862, -1416266, -1490891, -2105071, 3172370, -1976222, -7161321, 3295314, -8671002, -3517578, -1414118, -187905, -1297617, -1727651, 7907035, 4446902, 608275, -8120710, -7747584, 297427, 5362804, -2759517, 909996, --966905, -3386582, -5197448, 628676, 3582003, 7643431, 6855842, -782221, 2232846, -9378061, -3281892, 6389838, 7196755, -783832, 6568616, 1496796, 9541807, 5716602, 1867774, 4399121, --377957, -2374043, -1632088, -854162, 6014028, -2174327, -3312494, -4041027, 6006512, -1324461, --10386305, 2194192, 4012573, 5971079, 7630547, 13066901, -5374078, -4320737, 7716446, 8220031, -6436546, 2862059, -1290101, -1347009, -4999342, -5534602, -1530619, -1913945, 1745367, -97174, --1600412, -95026, -3085934, 812823, -373125, 1613834, 246424, -2254321, -150861, 398358, --353798, -73014, 1180042, 2268280, 2182917, 1897839, 513785, 590558, -3155727, 302258, -2281702, -1296006, 1275068, 430570, -855772, -602906, -357019, 2370822, 1700270, 503585, --158377, 1378148, 146566, 985158, 523986, -573915, 744103, -276489, -292595, -14833206, -7100118, 10510859, 1185411, 8783745, 1007707, -7482907, -899259, -3382824, -2066416, 8125005, --10481331, -2669859, 3434363, 4254702, 9157944, -1634235, 3866008, -14416058, -7607461, 3948149, -8482560, -5488432, -4253092, -5898064, -7525320, 4056060, -1075352, 280784, 2575907, 1542967, -2695092, 11552388, -7037841, 11216844, -779537, 2459406, 2272575, 2601140, -3491809, 4037806, --7960185, -1273995, -4413616, -613643, -5956583, 7223598, 1069984, 19636590, 452582, -1036161, --5086852, 1068910, -4287451, 10362682, -6436009, 1555315, -11533598, 8733816, 7676181, -9200894, -5582384, 6050535, 2266132, -4889821, -5353677, 8763344, 2046552, -12167642, 5770289, -5666673, --3351148, 3009698, -3250753, 1318018, 2344515, 3546032, -6602439, -15471009, 2126546, 3730179, --637803, -3159485, 6034966, -2458869, -2160369, -2692408, 3964255, -4863514, -2155537, -2673080, --2284386, 1487669, -2084133, 2902861, 242666, -4300336, 3161633, 646929, -2458332, 73014, -2836826, 1183264, 1074, -188979, -960462, -2179159, 60130, 875100, 163746, -28454, -1229971, -2492692, 158377, 725850, -3147674, -2078764, -2679523, 6600291, 1284195, -133144, --5574331, -9376987, 3321620, -5033702, -2024003, 9067750, -12355010, -5153961, -9103720, -933619, -7809325, -732292, -6441377, -8948564, -10038949, 3903052, 10617696, -3053722, 6632503, 9976135, --2768643, -2317672, 3907347, 5540508, 11851425, -1734093, 6659347, 950262, 14090177, 10349261, -2829310, -3338263, 1415192, -7834557, 13677323, 3160022, -6048388, -6723772, 7881265, 6643241, -4786204, 3393024, 2330020, 7060390, -3077881, 3099356, -4704063, 648540, 366146, -7146289, --9526237, -3404299, -6735046, 4284767, -4119948, -3079492, -10392210, -6560563, 1966021, -3580929, --1266479, 4946729, 10365904, 13063680, 6788196, 5382668, -4856535, -10712722, 158914, -7511898, --17278116, 105227, -1242319, 6388227, 4310000, -4270808, -9642738, -5274757, 4616016, -281320, --1104880, -4032438, 2092186, 2138894, 1700807, -1080184, -5509906, 1096827, 681826, 475131, --1276679, -734439, -780610, 620623, -2720862, -2821794, -332860, 269509, -2272038, 127775, --490700, 1990717, 2706366, -3045669, -155156, 2084133, -413391, -1324461, 453656, 235149, -2934000, -1006096, 1867774, 1426466, -1336272, -1206349, -20002736, -6047851, 983011, 9792525, --7092602, 4828080, 2989834, -318364, 14486388, -1875827, 13624710, -8016020, 3914326, 4424890, -47782, -12484396, -5317170, -4618701, -14388140, 4935991, -3677029, 3093450, -1021665, 5237176, --151398, -5516349, 2842195, -9117679, 6638409, 4023848, 15497853, -606664, 333397, 14337138, --12760348, 11141145, 13448079, -8448738, 8608188, -3605088, -4252555, -7086159, 1653026, 1686848, -9516037, 6255083, -2643016, -3987340, -8369818, 4534949, 4970888, -9397925, -4395899, 8843338, --15620796, 1463510, -12104292, 6760816, 496606, -220117, 3447248, -4046933, 1206349, 14251775, --6042482, 3118146, 6763500, 4374424, 589484, -7514046, 3145527, 2780455, -4548371, -12179990, --47782, -2786360, -9831180, 7309498, -2813204, 2689187, -573378, 1382980, 2882997, 2982855, --5583458, 1357210, -732829, 1228361, -628676, 3633542, 1620276, -907312, -870805, -5266167, --412317, -3604015, 422517, 585189, 3601867, -5572720, 1855426, 2990371, -2322504, -3468186, -1021129, -517544, -2261300, 1653026, -664109, -2177549, 542777, -750546, -2725157, -719407, --1848447, -3367791, 1344862, -1047435, 71404, -1858647, -627602, -1901597, 646929, 3554086, --723165, -2209224, -8232916, 23741506, -8893267, 4671851, 3296924, 8520141, 2551211, 5199595, -11705933, -9050570, -5711770, -674310, 16324097, -6263673, -7095823, -8075613, 3955665, 2818036, -8885214, -18680960, 71404, 469762, -1380295, 9711995, -2445984, 7505456, 13681618, -9950902, --4605816, 4000225, -7630010, -9388799, 6252399, -8717173, 12856985, -2144263, -13460964, -1695975, --7777112, 4310000, 10464688, -135828, 5237176, -586800, 1942936, 12669617, 273267, 9207873, -3496104, -6778532, 7016903, 6169184, 726386, 5192616, 17965312, -2933463, -8251706, 4363150, --10413148, 871342, 17153026, 5930813, 2604361, -3227668, -5070209, -3265786, -6235219, 10477573, --6965900, -1760937, -4389994, 11879880, -21849572, 7493108, 7531225, 13135621, 2975876, 1056025, -11392938, -3198677, -5109401, -6463389, 36507, -5367099, -670552, -4610111, 3652333, 406948, --4288525, -4328254, -3801046, 1454383, 4377646, 3668976, 650151, 318364, -2048699, -4694400, --1712618, -1174137, 1829119, 2051921, -923418, -1121523, 803159, -2799245, -136902, -2716030, --1522566, -3591667, -5032091, -1321776, 1548873, 5493800, 749472, -1473711, -1584843, 2177549, --654446, 5265093, 2234994, 945967, 604517, 2026151, 34920768, 10443750, -6388227, -8471286, --7170985, 25326348, -21838834, 1746978, 8518531, 1272921, -11854647, -2668249, 5907728, -1262184, -1347546, 10503879, -10900090, -9127342, 4445291, 13686450, 8399345, 3532074, -6670621, -6486475, --6280316, -7276749, 6737193, 2683818, 9670119, 7781944, 4394289, -10323491, -4949413, -10998874, --2228014, -7223062, -16641925, -3110630, 7363185, 1627256, -7749732, -7782481, 141197, 3988951, -10330470, 1292785, 5209259, 1475321, 20010790, -17446694, 11333345, 2102923, -17834852, -3245922, --5421860, -4434554, 2663954, -7820062, 4627291, 3372623, 7888245, -9746355, 3365644, 15490336, -7204271, 24637006, -5596880, -665720, -6144488, -3158949, 593242, -548682, -23488640, 10375567, --1066226, -1431835, 6267431, 6221260, -6722698, -10036802, -10997801, -4123169, 7655243, 3229816, --2637647, -6516539, 5591511, -10206453, 5209796, -1739462, -4684736, -5807870, -6316823, -2327336, --2174327, 897648, -2699924, -1844689, 1179505, -1953136, -1848447, 980863, -5191542, -2413772, --467078, -1829656, -3023657, -1401233, -5276368, 623307, 3742527, 5097053, 5986648, -4549981, --5558225, -3970161, -5039608, 65498, -139586, -3136400, -3560528, 1191317, -589484, 3264712, --1190243, -382789, 2495376, 2498597, -2259690, -11547556, 2700998, 6511708, -383863, -7034620, --5125507, -15379741, -18593450, 3986804, -8313446, -3738769, 2586644, 4832, -2058900, -8075076, --4213363, 84289, 6358699, 7074348, -10260677, -5649493, 6266358, -8915815, -4578972, -14708116, -14291504, -1701344, 12866111, 1311039, 4758824, 13967234, 10314901, -5943161, 3036005, 7193534, --7467875, -2814277, 6729677, -2348273, -16627966, -2884608, -11677479, 17182016, -1889786, -4318590, --9805410, -13979582, 4991289, 3201361, 3257196, 7192460, 79457, -2383707, 7236483, 2071785, --1477469, 2779381, -4167192, 11435887, -2726767, 7293928, 20891258, 4885526, 3869229, 5122822, -7669201, -18031346, -14832670, 5840619, -16180752, 11383811, -2333778, 13013214, 3324305, 25161530, -9740986, 1924682, -7295002, -2985539, -12869333, -632971, 3958886, 2738579, 2687576, 4644471, -11344619, -4493610, -9261023, -2966749, -2593624, 3826279, 10302016, 3899294, -2510409, 3227668, -3012383, -279710, -2399813, -5755256, 395674, 935766, -2937221, -3716221, -758062, -6110128, -4476430, 2805688, -2987150, -701153, -6316823, -2829310, 2947421, 5819144, -2757906, -2291365, --85362, -4802847, 5432597, 33286, 3929895, -4970888, 53150, -5156645, 3249680, 5780489, --6316287, -1620276, -29613262, -20998632, 7899519, -8448738, -17052094, -26277146, -466004, 1948841, --4893042, -4306779, 25107842, 6413460, -17843978, 3647501, -10813654, -9373766, -8742406, -16215112, --2464238, 1372242, -21970906, -21101174, -7772280, 3368328, 2274185, 12619151, 10976863, 6592775, --5122822, -299574, 5139465, -11457899, -6115497, -3963181, 3992709, -10761577, -6292664, 7224672, -4657892, -361314, -1399623, -2062658, 6329708, -15445239, -8516383, -7631620, 10457708, -11977590, -8362838, 13615046, 18983218, -1291175, 5654325, -4480725, -8660802, -11761768, -2883534, 11526618, -4629438, -21017960, 1215476, 21698174, -14134201, 682900, -2782602, 1143535, 5465346, 11068131, --1989644, 3514894, 13608604, 9145596, 6173479, -10169409, -11924977, 8959302, -8534637, -16757889, --15780247, 17573396, 7019587, 9721122, 4504884, -2734284, -3035468, 8410620, 6287296, 1619203, -8426189, -3171297, -10208064, -5408438, -6997576, 3018288, 11069741, 5271536, 1677185, 6398965, -3902515, 5976984, -732292, -2949032, 4035659, -1233193, -3685619, -3393561, 3233037, -9667971, -2570001, 5833640, -3015067, 7198365, 5295158, -290447, -329102, 6805913, 1279363, -1413044, --3797288, -4042638, 1636919, 3667365, 1278290, 2988760, -3757023, -2913599, 1850594, -2455648, -2002529, -1439888, -17039210, 9243843, -13720810, -25462176, 4897874, -15615964, -8501351, 29322278, -2387465, 21872658, 20364050, -4347581, 21429202, 28795072, 21094196, -26385058, -3095061, -12437152, --11881490, -7827578, 912681, -11061688, 23125714, 6439230, 12870943, -10958072, 12340515, 8884140, -3460133, -13863618, -10142565, 21339546, -3544959, -20484310, -964757, -23658828, -2956548, 6213744, --7961796, 238371, -18649284, 8485245, 17712446, 9097278, -2120103, -9620190, -3064996, -2612414, --2811056, -9018894, -22991496, 15580531, 9341554, 8027831, 10359461, -13549548, 21114596, 2368138, --5795522, -4832375, -16032039, -7485055, 11132555, 6394670, 18135500, -2116345, -19786914, -35738424, --1634235, -449898, 602369, -13001403, -17439714, -3601330, 12317429, -6433324, -6773164, 4530117, --1124745, 17874580, -3084324, -16224776, -5264556, 16641925, 1560147, 3033858, -15866683, -5969468, --2592550, 6610492, 9252970, -4474819, 3548180, 526670, 7063611, 4142496, -148713, 2785286, -9302899, 2008971, 371515, -3048353, 1522566, 5679558, 341450, 2829847, 10588705, 1360431, --2903398, -7550553, -259309, 5286031, -4591320, 2649995, -1745904, -1690607, -2855617, -4566624, --2793339, -21475, 6946573, 4860829, -6131066, -12479564, -3045132, 4549444, 2302103, 1596117, -1280974, 38182796, 23584740, -3087545, -22368726, 4945655, 10692858, 6640557, 15768436, 24429774, --10956462, 2287070, -21876416, 6405944, 1468879, -8071318, 38551088, 15023259, 33220498, 14137959, -8337069, -28924994, 137439, 16588774, 2656437, -15263777, 6260989, -23487566, -9598715, 1921461, -6849399, -6835978, -4940286, 5437966, 3884261, 1999844, 20734492, 13362180, 3144453, -8148627, -14179298, -9149891, -7093139, -13584982, -4939213, 18362058, -28893318, -161598, 12496207, -13979045, --4809290, 5713380, 4494147, 26656178, -1848983, -24696, -12643847, 26066694, -11821361, 3528316, -2376191, 18131742, -4499515, -6180458, 16668231, -28419262, 7142531, 3016678, -12228846, 23205172, --29008210, -3372623, -9924059, -18986440, -9974525, -1445793, 7820599, 18283676, 29378650, 14762876, -19295678, 30176978, -12519830, 5774584, 7176354, -12524125, 16947940, 601832, -23257784, 12275017, -5998996, -8131984, 447750, 17945448, 13021804, 4199405, 10200010, 3392487, 3090766, 9964324, --2091649, 4379793, 8321499, -1866163, 1554778, -1342177, -841277, 6366216, 861141, 895501, --5707475, -2944200, -4062502, -7332046, 1296543, -3943317, -12462921, 4884989, 6914898, -2270964, --482110, 3483219, -4543002, 84289, 12436615, -1709397, -3937948, -7864622, -36939404, 10394358, -1699196, 44554916, 9885941, 8546448, -1463510, 21830246, 5585605, -32303522, -5247913, 34968548, --10567230, -7134478, 2663417, -2222109, 513249, -6154688, 35931696, 41371272, -22442814, 10167261, -10797548, 6184216, 11402601, -17978196, -25356414, 19430432, 4984310, -13710072, -24267638, -7050189, --8458938, 22039088, 17569638, 10177462, -20614770, 11273752, -9130564, 7227356, 865973, 9523016, -20293720, 4860829, -46538120, -14047227, 8109972, -18400714, 5246303, 19683836, 6198712, 34203508, --11681237, -51166484, -1583769, -20354386, 17425220, 15547245, -6003828, -10834592, 15415174, -24550570, --4822175, -13241921, 11186779, 16076063, 13241384, 14933601, -11552925, -20815560, -62539556, -29644938, --36595804, 5737540, -24962886, -11841762, -5472325, -26910654, 13942001, -48469244, 14593762, -34856344, --25778930, 24870008, 28849832, -9028021, -1726577, 15907485, 20166482, -28467580, 63351, 4644471, --4658966, 4999879, 14722611, -1979980, 6178848, -1325534, 5380521, -12619151, -7204808, -5781026, --8902393, -1849520, 11373073, 4933307, 10164040, 346282, -12086038, -10448045, 1140314, 6230387, --3045669, 6615324, 6288906, 16775605, 947577, 5712307, 1113470, 3925600, -8159364, -2372433, -2337536, -6135361, -455803, -2873870, -67646, 3013457, 16813724, -1741609, -11258183, -11708081, -319438, -1149441, -17904644, -11280732, 8134131, -12583180, -75699, -624918, -47482476, -7521562, -32510754, -38400228, 4379256, 13750338, 1069984, 9520332, -2159295, -30485678, -1823214, 15982110, -6212134, 24017458, 17257178, -26181584, -27191438, -4089883, -11347304, -4337380, -45268420, 16842178, -18985366, 31831076, 15389405, 28950764, -11913702, 3684545, 30866320, -9839233, 33533494, 8800925, -18104898, 5546414, -7563975, 15896211, -19105626, 675921, 42209864, -32439888, 3759707, -42098732, --18037252, -30344480, -19651086, -5527623, 3009698, -10138270, -31061740, -6006512, -52124796, 59558312, -21804476, 121870, -7268159, -14678588, 4153770, -26532160, 5705864, -39642548, 1749125, 1813550, -9668508, 25086904, 37267968, 1080184, -60203092, -28225988, 27047556, -13473849, -11314554, -14934675, --7229504, 30005178, 7168838, -17048872, 13564044, -28403156, 5848672, -5462662, -11632382, -28650654, --15235323, 17990544, -7648800, -6985228, 10683194, -10676752, -2338073, 17942762, -20051592, -14297409, --5145371, -4404489, 23597624, 10528575, 7157026, 13373454, 6288906, -2190433, 11479911, -197569, -8724152, 10962904, 18101140, -6559489, 975494, -1820529, 13671955, 19163608, 8221641, -4469451, --202400, -5660767, -12648679, 24525338, -5934034, 12729746, -5959267, 4058207, -6385543, -5319854, -7525857, 13320304, 660351, -4360466, -2358474, 11683922, -24481850, 17531520, 26642220, 10716480, --13151190, -15962246, 7283728, -20801064, 33268280, 28914794, 42342472, -30051350, -38480760, -8866423, --1555315, -18501108, 24613920, 31313532, -23390928, 530965, -41170484, -11344619, -19864224, -35945120, -10864657, 30759482, 17579302, -23163296, -9903658, 3372623, 19634442, 3626026, -2157147, 8215199, --2979097, -9703942, -33434710, -21638046, 7762617, -2490544, -18500572, 19910932, 16525960, 11530913, --34207268, -30011620, 28239946, 18021146, 20819854, -21270288, -56540024, -9999221, 22846542, 23904178, --6396280, 57054344, -7695508, 57346940, -86078120, -105357160, -44179644, -63266480, 77846, 25384868, -12419972, 69508144, -8512625, -4004520, 12177843, -13285408, -55110872, -47995724, -54646480, 43627740, -34652868, -12877923, -4333085, -89792200, 24465744, -717260, -40975060, 17175574, 25131464, 40329208, -30596810, 14896557, -3474629, -26395258, 99858, 1737851, -8214662, -11138461, 31139050, 20025822, -11683922, 32851668, -25730076, 6351720, -7732015, -15135465, 19598472, -2835752, -36245764, 107374, -10445897, -12392054, 16086800, -6429029, 3738232, -7526394, 38631084, 31090732, 35724464, -30472256, --7784628, 38113540, 27158152, -26531624, -17396766, -26736172, -16752520, 22339198, 24228984, -8544301, --3398930, 42409580, 914291, 4160213, -6412386, 7767985, 6387690, -1183264, -21705154, -5304285, --5213017, 6811282, 12234214, -41001368, 35798552, 27214524, 11224360, 33700996, -19766514, 12422119, --55763172, -26965952, 14719390, 20619602, 9507447, 7216619, 6988449, 14461692, -6733435, 63525252, -5775658, 39574904, 11410654, -19037442, 48440252, -6540162, 19056234, 1053878, 17398376, -1776506, --984621, 10684268, 24340116, 7137162, 17798882, 1311576, -3595425, 38268160, 4412005, -7979513, -724239, -2928631, -19160922, -5422396, 10830297, 7189239, -43027520, -10443750, 5521181, 10061498, -45146548, 36820216, -44486736, -24466282, 3766686, -9767293, 49715856, 4944581, 45864884, -32123134, -23138600, 4753455, 2640331, 21369072, 47143708, 30637612, 6386617, 41704132, 16456167, -19463718, --41819560, 36884104, -33324114, 22349936, -43920336, 303332, -69720208, 72599440, -17799956, 2604361, --48775260, 44112000, -16940962, 14033269, -35745940, 42616276, -22017612, -19889456, -14391362, -26627724, -8465917, -14875082, 12838194, -13782013, 23453206, -25996364, 23501524, -27372900, 15315853, -32067300, -25900800, -11008001, 28732258, -9859634, 15154255, -12033961, 9853729, -13741211, 711891, -15024869, -17536352, 7195681, 5123896, -5921686, 1896228, -11967389, 9542880, -12294881, 22080964, -17964238, --21314848, -9589051, 8958228, -25463788, 20010252, -6191732, 11107859, -7144141, 6437619, -11637214, -5773510, -5937256, 6866579, 8506720, -1548873, -70432096, -16990890, -5887327, 7875897, 5825050, --43038256, -25747792, 39869644, -15700253, 15041512, -17843978, 4381404, 49015776, 80228376, 5113159, --2284923, 39621612, 17999134, 16183437, 49905372, 724776, 30443266, 35861368, 35366372, -14004278, -15625091, 30966714, 44198972, 35341140, 54230404, 29953638, 69093672, 72351408, 53135724, 57632556, -40112312, -4633196, 19969988, 9976135, -14370424, -15120969, 12035035, 33556580, 8358007, 1290101, -461709, 16463147, 51023136, 38911868, 85249736, 16821240, -43246024, 17306034, 1530082, 17711372, --21876416, 33414846, -60647624, -79304960, 22815940, 79352208, 35310000, 15714212, -97885528, 403727, -38199440, 59411744, 80742704, -34151968, 5693516, -138068704, -90195920, 36730560, 52434572, -76937360, --64770792, -40973452, 76203992, 50211924, -89407800, -116577760, -22760106, 47378856, -54930484, 26477400, --7719667, -20205674, -29280940, 4129074, 12811351, 19589882, -2648921, -48232484, -40833328, 5142150, --12108587, 20242718, 3650185, -4990215, -17424682, -12110734, 8543227, -1036161, -39133056, -20125680, --29372744, -15625091, 6459631, -15387257, -10361609, -35792108, -46693272, -65610456, -64578056, -55283208, --45997488, -51809116, -50516868, -39297340, -53311820, -57550416, -47942572, -55251532, -34628712, -9359807, --30546882, -46035072, -29348586, 1824824, -15487115, -8813273, -9610526, 24503326, 27148488, 1336809, -13028246, 13716515, 9131100, 8070781, 1649268, 6434935, 6009196, 5952825, 4459250, 6941741, -2534031, 5660767, 2572686, 2167885, -310311, 1459752, -12943421, -2404645, -25675314, 65765612, -74876312, -84359064, -34395172, 31914292, -22994718, 15774341, -30278982, 27632208, -25573310, 6174553, -391379, -12712029, 6827925, 1298154, -7561290, -6074695, -20365124, -5682779, 4956393, 2397129, --20762408, 19978578, -19014894, -6851547, -16440061, 1775432, -15721191, 32702418, -382252, 8525510, --8529805, 8489540, -9090298, 9176198, 20387136, 27124330, -7111929, 8966818, 10376641, 23766202, --14687714, 15200426, -13070659, 28575492, -7339562, -16670379, 9633075, -7504919, -8452496, 2955474, --2267206, 12031814, -6322729, -16831440, -15697032, 2097018, 3382287, -29058138, 9007083, -4886599, --2561948, 4472672, -7775502, -5375152, 3226594, -5093295, 4267050, -15950972, 18381386, -51746304, -27348204, -22405234, 34631396, -23582054, 31047782, -1002338, 17023640, 9042517, 13912473, 5577015, -2631741, 5229660, -727997, -22255446, -4138738, 304943, -8348343, -4792110, -4181688, -3042448, -1611150, -8953396, -260919, 2325725, -358630, -14208826, 14861124, -3189550, 8157754, -15114527, -7394860, -9665824, 6400038, -11170136, 12424267, -15986405, 22042310, -4964446, 3543885, -23101018, -15986405, -2017561, 11810623, -22043920, 5985037, -9810242, 3955128, -5355824, 2721399, -14941654, -7624104, -3933653, -7808788, -295279, 18016314, -20656646, 2084670, -8868571, 10980084, -14946486, -13836774, -12307766, 4398047, -9276056, 10880763, -5180268, 6365679, -5686537, 7032472, -9357660, -5451924, -5226975, -601295, -2597918, 4673998, -3182571, 2500208, 151398, 3530463, -4391604, -1714766, 573378, -2002529, 2812130, -2643552, 1512365, -3767223, 3187403, -4074850, 2299418, --3038153, 2733210, -2217814, 2360622, -2996814, 3821447, -3767760, 3324305, -3528316, 4008278, --3062312, 4036196, -4028143, 4740570, -4981625, 4315906, -5147519, 4202089, -4096862, 4968204, --5756867, 5255966, -4980015, 4649839, -6388227, 5134634, -6193343, 5432597, -4622459, 4992900, --4686883, 4253092, -4955319, 4454955, -5487895, 3221762, -13464722, 63453848, 38643432, -21047488, --23996520, -2203855, 79073032, 32902134, 11183558, 21771190, -19033684, -24256364, 6852084, 15247134, -4117263, 1310502, -8288213, -6629819, 7553237, 7500624, 18508088, 8108899, -9783936, -4439923, --4771172, -10057740, 20938, 1697586, 5030481, 6171331, 326418, -2711198, 7475391, -21252036, --7914551, 9374840, 13662291, 16711718, -9291088, -5538361, -9884867, 17099876, 12009802, -3289408, -5598490, -19855634, -16995722, 15784542, 12459700, 3847217, -29873646, -15471009, 1392643, 4974646, -19925964, 14105209, -2056753, 5789079, 7186554, -9406515, 8749385, 9294846, -2585570, -5741298, -5703717, -10060424, 1113470, -1725503, -6878390, -10770167, 15116674, 3054259, 3487514, 20583094, -25215752, 8870181, 20442970, 18976240, -2811056, -5111011, -5517423, -3642132, 8096550, 12958990, --4835060, 4006668, -11427297, -4197257, -380105, 2794413, -6142877, -7531762, 8024610, 15016816, -6677064, 4199405, 6475200, -7150047, 791348, 7180112, 1603633, -2179159, 2007360, -669478, --8511551, 17827872, 6003291, -14135274, -13202193, 5481452, -2439005, 14089640, 7638063, -1700270, -5460514, 1895691, -2664490, -543850, -3811247, 4213363, 6663642, 1112933, -1439888, -5438503, -5007395, -972810, -4417911, -43487, -22725208, -62944356, 21849572, 115550192, 90984584, 86991880, -27906550, -80997176, -48477296, -71810240, -71901512, -65655556, -22823994, 35314296, 45668388, 71666896, -64316060, 38640748, 6570763, 6266358, -31016106, -49197776, -70275328, -27097486, -19026706, 6283537, --3895535, 35668628, 24186034, 10222559, 47805132, 26771068, 20501490, -4198331, 17996986, -32443646, --24368570, -20238960, -23535884, -31121334, -18668612, -12433930, -31561030, -21907018, 8463770, 46511812, -44990320, 51003812, 40143448, 58319752, 10157598, 14919106, -38726648, -28741384, -24566676, -58217208, --57895084, -52022256, -24525338, -30494804, 7199439, 22542672, 32538672, 65272228, 64191508, 61373472, -55128588, 48183092, 10341744, -28356448, -46116136, -82468200, -70792336, -51678120, -70365520, -32692218, --14664092, 3085397, 69113000, 54127324, 79495016, 78480864, 57379688, 16035797, -15830176, -23491324, --27196270, -24291798, -46761992, -57884884, -40415104, -27639726, -24408300, 3055332, 16263431, 25849798, -22287122, 46531140, 50889456, 38444788, 30588758, 5098663, -10771778, -21965536, -35923644, -30869540, --21909702, -34474628, -46715284, -4944044, 2673080, -7691213, 40192840, 53087944, 33940980, 29841432, -2181844, 8434242, -5580237, -9351218, -23276576, -27288074, -17978196, -20396800, 2832531, -8140574, -2553895, 403727, 18234284, 9860171, 9364102, 17135308, 17386028, 35433, -4702989, -12428025, --12525198, -3532074, -2925947, -5995775, -6067178, 1192390, 1365263, -1463510, 2862596, 3314641, -2930778, 927713, 11160473, 4163971, -426812, 1773822, -621160, -4090420, -4307852, -4912369, --5885179, -5176510, -1663226, -890669, 318364, 4896263, 6327561, 4913980, 4652524, 2456185, -427349, 69256, -807991, -4698158, -2812130, -33823, -3035468, -4320200, -2272038, -503048, -1955284, 1388348, 41876, 1182190, 3136400, 2243584, 1388885, 3139621, 1510218, -199716, --1432909, -2407329, -1995549, -2024540, -1692754, -1196685, -916976, -79457, 227096, -11274, -542240, 1161252, 1073742, 1734093, 2356327, 1202054, 314069, 637803, -437013, -1038845, --1635846, -1818919, -1676111, -1313186, -657130, 46708, 64961, 932545, 1189706, 718333, -846109, 1579474, 1020055, 208843, -450435, -348966, -376883, -853625, -1220308, -637803, --333397, -4832, 125091, 314606, 209380, 341450, 147640, 158914, -8053, 117038, --33823, 57982, -71404, 66035, }, +-5267778, -4377109, 1221381, -2516851, -390842, -728534, 2542084, 10096394, -2692408, 1004486, +-9618579, -5273683, 2947421, -4591320, -3559991, -1364189, -4056597, -1090922, 8399882, -3616363, +-5360656, 9051107, 7267085, -2574296, -1671816, 8283918, 2371359, 3204046, 1612760, 392453, +-2112587, -3510599, 3299609, -2618856, 2468533, 878858, 957778, -1175210, -2841121, -2251100, +2036888, -2589329, -4057134, -1848447, -1807644, -5195300, 5874442, 9046812, -5201206, 2943126, +261993, -2048163, 1447941, -238908, 86436, -3048890, 5616207, -3339337, -4095251, 4649302, +1435593, -258772, -512175, 2547989, 174483, -88047, -1596654, -822486, 4937065, -7208029, +2460480, 1307818, -1737851, -1735167, -2499671, -3676492, 40265, 3516505, 3621194, 1035624, +-56908, 801548, -1993402, 2612414, -984621, 1530619, -1107028, -737124, -528818, -672162, +-511101, 1196148, -45097, 483721, 746251, 428423, 1272921, 1574106, -513785, -384400, +-700617, -510027, -1000191, -317291, -663036, -572841, -1017370, -424128, -103079, 618475, +-387084, -15932181, -2506114, -5825587, -1422171, 1280974, -4331475, -9711995, 7125888, -2388002, +1667521, 4758824, -1502165, -488553, -581431, 2190970, -1671816, 8011725, -319438, 6180458, +9076340, -10878078, 2293513, 7558606, 534187, 1507534, 5245766, 9670119, 1396938, -2172180, +4881231, -1291175, -2505577, 2183991, 1735704, 2160906, -2707440, 9856950, -4531728, 2491618, +3691525, -38655, -465467, -4800700, 798864, -5563057, 4695473, -5682242, -4352413, 3160022, +-5287642, 3647501, -3686693, 1538135, -2972654, 2032593, 4305168, 8406325, 2594160, 962073, +4103305, 74625, -7239168, 976031, 2055679, 2775086, -1808718, 394600, -983011, 1394254, +4063576, 2456721, 5545340, 1924145, 751082, -3352759, -1706176, 3275986, 2553895, -3208341, +3882114, 1909113, 4243965, -1302449, -1002875, -1305670, 207769, -799401, -3382287, -603980, +570694, 587874, 2202781, 266288, -641561, -812823, 936840, 491774, -1649268, -223338, +-114890, 40265, 677531, 209380, -760746, -79457, -719944, -5772973, 4298189, 2821794, +869731, 5475547, -290447, 3076807, 7434052, 4623533, 9749039, 1902671, -1435056, -9962177, +1577327, -6100464, -2039036, 789737, 2258079, -3811784, 7516, 9620727, -4901095, -234613, +-4893579, 2355790, 58519, 1887638, 3930432, 4646618, -2898029, 3492882, 3593814, 6969658, +277562, -6786049, 674310, 7387344, -710817, -432181, -1003949, 4977867, -5749351, 514859, +3794067, 4982699, 5946382, -2202245, -3872450, -465467, 8541616, 830002, 3093987, -6902550, +-3089155, 1719598, 1445257, -1150514, 4532801, -274341, -924492, 2574833, -4349728, 316754, +-671626, 3020973, 4590783, -6700686, -1499481, 2225330, 4525822, -2843805, -2757369, 1915019, +5361193, -427349, 3606699, 2597918, 3697967, 1596654, 4124242, 6247030, 253403, 1786706, +-1700270, 2574833, 1815697, -1130113, -2780455, -473520, -1966558, 703838, -1796907, 840740, +-811749, 491774, -1454920, 93952, -130460, 364535, -868120, 1439351, -1302449, -513785, +-573915, -646929, 185757, 837519, 821949, 505732, -380105, -230854, -598074, 1927367, +357556, 17353816, 8363375, 6865505, -6477885, -1096827, -9024263, -6380174, 9610526, 914828, +-6108517, -2785286, 2039573, -5708549, -542240, 9847823, 3900904, -360777, 3127810, 14421963, +-9589588, 2341831, -1810866, -4603131, 8250632, 4247723, 4274566, -3170760, 3689914, 4794794, +-1472100, 3094524, -980326, -4050154, 844498, 1589138, -720481, 4918275, 1195075, -1708323, +5381057, -2410014, -2542621, -3069291, 1509144, 2117419, 389768, 3920232, 517544, 12221329, +799401, 45634, -2826625, -2486786, 2920578, -9003325, 377957, 5486821, 4320200, -4835060, +7174743, 176631, 3212636, 5784784, -1619203, 4491462, 3448859, -1519345, -5159330, -3888019, +3248606, 8200167, 2332167, -3483755, -1731946, -1949378, 5614596, -4690641, -258772, 4682588, +5374615, 800475, 687732, -1423245, -2231236, 156766, -508954, -1823751, -375810, -797253, +-920734, -1386738, -714575, 1967095, 1308891, -317828, 2484102, 793495, 1012539, -254477, +857920, -368830, -198642, -33286, 303332, 373125, 709743, 1410897, 360777, 224412, +-390305, 4216584, 1078037, 11373610, 2795487, 6800544, -326954, 1548873, 1879048, 1935957, +-1890859, 6959458, -2922188, 7526930, -3679713, -2832531, 1952063, -4875862, -1416266, -1490891, +2105071, 3172370, -1976222, -7161321, 3295314, -8671002, -3517578, -1414118, -187905, -1297617, +1727651, 7907035, 4446902, 608275, -8120710, -7747584, 297427, 5362804, -2759517, 909996, +-966905, -3386582, -5197448, 628676, 3582003, 7643431, 6855842, -782221, 2232846, -9378061, +3281892, 6389838, 7196755, -783832, 6568616, 1496796, 9541807, 5716602, 1867774, 4399121, +-377957, -2374043, -1632088, -854162, 6014028, -2174327, -3312494, -4041027, 6006512, -1324461, +-10386305, 2194192, 4012573, 5971079, 7630547, 13066901, -5374078, -4320737, 7716446, 8220031, +6436546, 2862059, -1290101, -1347009, -4999342, -5534602, -1530619, -1913945, 1745367, -97174, +-1600412, -95026, -3085934, 812823, -373125, 1613834, 246424, -2254321, -150861, 398358, +-353798, -73014, 1180042, 2268280, 2182917, 1897839, 513785, 590558, -3155727, 302258, +2281702, -1296006, 1275068, 430570, -855772, -602906, -357019, 2370822, 1700270, 503585, +-158377, 1378148, 146566, 985158, 523986, -573915, 744103, -276489, -292595, -14833206, +7100118, 10510859, 1185411, 8783745, 1007707, -7482907, -899259, -3382824, -2066416, 8125005, +-10481331, -2669859, 3434363, 4254702, 9157944, -1634235, 3866008, -14416058, -7607461, 3948149, +8482560, -5488432, -4253092, -5898064, -7525320, 4056060, -1075352, 280784, 2575907, 1542967, +2695092, 11552388, -7037841, 11216844, -779537, 2459406, 2272575, 2601140, -3491809, 4037806, +-7960185, -1273995, -4413616, -613643, -5956583, 7223598, 1069984, 19636590, 452582, -1036161, +-5086852, 1068910, -4287451, 10362682, -6436009, 1555315, -11533598, 8733816, 7676181, -9200894, +5582384, 6050535, 2266132, -4889821, -5353677, 8763344, 2046552, -12167642, 5770289, -5666673, +-3351148, 3009698, -3250753, 1318018, 2344515, 3546032, -6602439, -15471009, 2126546, 3730179, +-637803, -3159485, 6034966, -2458869, -2160369, -2692408, 3964255, -4863514, -2155537, -2673080, +-2284386, 1487669, -2084133, 2902861, 242666, -4300336, 3161633, 646929, -2458332, 73014, +2836826, 1183264, 1074, -188979, -960462, -2179159, 60130, 875100, 163746, -28454, +1229971, -2492692, 158377, 725850, -3147674, -2078764, -2679523, 6600291, 1284195, -133144, +-5574331, -9376987, 3321620, -5033702, -2024003, 9067750, -12355010, -5153961, -9103720, -933619, +7809325, -732292, -6441377, -8948564, -10038949, 3903052, 10617696, -3053722, 6632503, 9976135, +-2768643, -2317672, 3907347, 5540508, 11851425, -1734093, 6659347, 950262, 14090177, 10349261, +2829310, -3338263, 1415192, -7834557, 13677323, 3160022, -6048388, -6723772, 7881265, 6643241, +4786204, 3393024, 2330020, 7060390, -3077881, 3099356, -4704063, 648540, 366146, -7146289, +-9526237, -3404299, -6735046, 4284767, -4119948, -3079492, -10392210, -6560563, 1966021, -3580929, +-1266479, 4946729, 10365904, 13063680, 6788196, 5382668, -4856535, -10712722, 158914, -7511898, +-17278116, 105227, -1242319, 6388227, 4310000, -4270808, -9642738, -5274757, 4616016, -281320, +-1104880, -4032438, 2092186, 2138894, 1700807, -1080184, -5509906, 1096827, 681826, 475131, +-1276679, -734439, -780610, 620623, -2720862, -2821794, -332860, 269509, -2272038, 127775, +-490700, 1990717, 2706366, -3045669, -155156, 2084133, -413391, -1324461, 453656, 235149, +2934000, -1006096, 1867774, 1426466, -1336272, -1206349, -20002736, -6047851, 983011, 9792525, +-7092602, 4828080, 2989834, -318364, 14486388, -1875827, 13624710, -8016020, 3914326, 4424890, +47782, -12484396, -5317170, -4618701, -14388140, 4935991, -3677029, 3093450, -1021665, 5237176, +-151398, -5516349, 2842195, -9117679, 6638409, 4023848, 15497853, -606664, 333397, 14337138, +-12760348, 11141145, 13448079, -8448738, 8608188, -3605088, -4252555, -7086159, 1653026, 1686848, +9516037, 6255083, -2643016, -3987340, -8369818, 4534949, 4970888, -9397925, -4395899, 8843338, +-15620796, 1463510, -12104292, 6760816, 496606, -220117, 3447248, -4046933, 1206349, 14251775, +-6042482, 3118146, 6763500, 4374424, 589484, -7514046, 3145527, 2780455, -4548371, -12179990, +-47782, -2786360, -9831180, 7309498, -2813204, 2689187, -573378, 1382980, 2882997, 2982855, +-5583458, 1357210, -732829, 1228361, -628676, 3633542, 1620276, -907312, -870805, -5266167, +-412317, -3604015, 422517, 585189, 3601867, -5572720, 1855426, 2990371, -2322504, -3468186, +1021129, -517544, -2261300, 1653026, -664109, -2177549, 542777, -750546, -2725157, -719407, +-1848447, -3367791, 1344862, -1047435, 71404, -1858647, -627602, -1901597, 646929, 3554086, +-723165, -2209224, -8232916, 23741506, -8893267, 4671851, 3296924, 8520141, 2551211, 5199595, +11705933, -9050570, -5711770, -674310, 16324097, -6263673, -7095823, -8075613, 3955665, 2818036, +8885214, -18680960, 71404, 469762, -1380295, 9711995, -2445984, 7505456, 13681618, -9950902, +-4605816, 4000225, -7630010, -9388799, 6252399, -8717173, 12856985, -2144263, -13460964, -1695975, +-7777112, 4310000, 10464688, -135828, 5237176, -586800, 1942936, 12669617, 273267, 9207873, +3496104, -6778532, 7016903, 6169184, 726386, 5192616, 17965312, -2933463, -8251706, 4363150, +-10413148, 871342, 17153026, 5930813, 2604361, -3227668, -5070209, -3265786, -6235219, 10477573, +-6965900, -1760937, -4389994, 11879880, -21849572, 7493108, 7531225, 13135621, 2975876, 1056025, +11392938, -3198677, -5109401, -6463389, 36507, -5367099, -670552, -4610111, 3652333, 406948, +-4288525, -4328254, -3801046, 1454383, 4377646, 3668976, 650151, 318364, -2048699, -4694400, +-1712618, -1174137, 1829119, 2051921, -923418, -1121523, 803159, -2799245, -136902, -2716030, +-1522566, -3591667, -5032091, -1321776, 1548873, 5493800, 749472, -1473711, -1584843, 2177549, +-654446, 5265093, 2234994, 945967, 604517, 2026151, 34920768, 10443750, -6388227, -8471286, +-7170985, 25326348, -21838834, 1746978, 8518531, 1272921, -11854647, -2668249, 5907728, -1262184, +1347546, 10503879, -10900090, -9127342, 4445291, 13686450, 8399345, 3532074, -6670621, -6486475, +-6280316, -7276749, 6737193, 2683818, 9670119, 7781944, 4394289, -10323491, -4949413, -10998874, +-2228014, -7223062, -16641925, -3110630, 7363185, 1627256, -7749732, -7782481, 141197, 3988951, +10330470, 1292785, 5209259, 1475321, 20010790, -17446694, 11333345, 2102923, -17834852, -3245922, +-5421860, -4434554, 2663954, -7820062, 4627291, 3372623, 7888245, -9746355, 3365644, 15490336, +7204271, 24637006, -5596880, -665720, -6144488, -3158949, 593242, -548682, -23488640, 10375567, +-1066226, -1431835, 6267431, 6221260, -6722698, -10036802, -10997801, -4123169, 7655243, 3229816, +-2637647, -6516539, 5591511, -10206453, 5209796, -1739462, -4684736, -5807870, -6316823, -2327336, +-2174327, 897648, -2699924, -1844689, 1179505, -1953136, -1848447, 980863, -5191542, -2413772, +-467078, -1829656, -3023657, -1401233, -5276368, 623307, 3742527, 5097053, 5986648, -4549981, +-5558225, -3970161, -5039608, 65498, -139586, -3136400, -3560528, 1191317, -589484, 3264712, +-1190243, -382789, 2495376, 2498597, -2259690, -11547556, 2700998, 6511708, -383863, -7034620, +-5125507, -15379741, -18593450, 3986804, -8313446, -3738769, 2586644, 4832, -2058900, -8075076, +-4213363, 84289, 6358699, 7074348, -10260677, -5649493, 6266358, -8915815, -4578972, -14708116, +14291504, -1701344, 12866111, 1311039, 4758824, 13967234, 10314901, -5943161, 3036005, 7193534, +-7467875, -2814277, 6729677, -2348273, -16627966, -2884608, -11677479, 17182016, -1889786, -4318590, +-9805410, -13979582, 4991289, 3201361, 3257196, 7192460, 79457, -2383707, 7236483, 2071785, +-1477469, 2779381, -4167192, 11435887, -2726767, 7293928, 20891258, 4885526, 3869229, 5122822, +7669201, -18031346, -14832670, 5840619, -16180752, 11383811, -2333778, 13013214, 3324305, 25161530, +9740986, 1924682, -7295002, -2985539, -12869333, -632971, 3958886, 2738579, 2687576, 4644471, +11344619, -4493610, -9261023, -2966749, -2593624, 3826279, 10302016, 3899294, -2510409, 3227668, +3012383, -279710, -2399813, -5755256, 395674, 935766, -2937221, -3716221, -758062, -6110128, +4476430, 2805688, -2987150, -701153, -6316823, -2829310, 2947421, 5819144, -2757906, -2291365, +-85362, -4802847, 5432597, 33286, 3929895, -4970888, 53150, -5156645, 3249680, 5780489, +-6316287, -1620276, -29613262, -20998632, 7899519, -8448738, -17052094, -26277146, -466004, 1948841, +-4893042, -4306779, 25107842, 6413460, -17843978, 3647501, -10813654, -9373766, -8742406, -16215112, +-2464238, 1372242, -21970906, -21101174, -7772280, 3368328, 2274185, 12619151, 10976863, 6592775, +-5122822, -299574, 5139465, -11457899, -6115497, -3963181, 3992709, -10761577, -6292664, 7224672, +4657892, -361314, -1399623, -2062658, 6329708, -15445239, -8516383, -7631620, 10457708, -11977590, +8362838, 13615046, 18983218, -1291175, 5654325, -4480725, -8660802, -11761768, -2883534, 11526618, +4629438, -21017960, 1215476, 21698174, -14134201, 682900, -2782602, 1143535, 5465346, 11068131, +-1989644, 3514894, 13608604, 9145596, 6173479, -10169409, -11924977, 8959302, -8534637, -16757889, +-15780247, 17573396, 7019587, 9721122, 4504884, -2734284, -3035468, 8410620, 6287296, 1619203, +8426189, -3171297, -10208064, -5408438, -6997576, 3018288, 11069741, 5271536, 1677185, 6398965, +3902515, 5976984, -732292, -2949032, 4035659, -1233193, -3685619, -3393561, 3233037, -9667971, +2570001, 5833640, -3015067, 7198365, 5295158, -290447, -329102, 6805913, 1279363, -1413044, +-3797288, -4042638, 1636919, 3667365, 1278290, 2988760, -3757023, -2913599, 1850594, -2455648, +2002529, -1439888, -17039210, 9243843, -13720810, -25462176, 4897874, -15615964, -8501351, 29322278, +2387465, 21872658, 20364050, -4347581, 21429202, 28795072, 21094196, -26385058, -3095061, -12437152, +-11881490, -7827578, 912681, -11061688, 23125714, 6439230, 12870943, -10958072, 12340515, 8884140, +3460133, -13863618, -10142565, 21339546, -3544959, -20484310, -964757, -23658828, -2956548, 6213744, +-7961796, 238371, -18649284, 8485245, 17712446, 9097278, -2120103, -9620190, -3064996, -2612414, +-2811056, -9018894, -22991496, 15580531, 9341554, 8027831, 10359461, -13549548, 21114596, 2368138, +-5795522, -4832375, -16032039, -7485055, 11132555, 6394670, 18135500, -2116345, -19786914, -35738424, +-1634235, -449898, 602369, -13001403, -17439714, -3601330, 12317429, -6433324, -6773164, 4530117, +-1124745, 17874580, -3084324, -16224776, -5264556, 16641925, 1560147, 3033858, -15866683, -5969468, +-2592550, 6610492, 9252970, -4474819, 3548180, 526670, 7063611, 4142496, -148713, 2785286, +9302899, 2008971, 371515, -3048353, 1522566, 5679558, 341450, 2829847, 10588705, 1360431, +-2903398, -7550553, -259309, 5286031, -4591320, 2649995, -1745904, -1690607, -2855617, -4566624, +-2793339, -21475, 6946573, 4860829, -6131066, -12479564, -3045132, 4549444, 2302103, 1596117, +1280974, 38182796, 23584740, -3087545, -22368726, 4945655, 10692858, 6640557, 15768436, 24429774, +-10956462, 2287070, -21876416, 6405944, 1468879, -8071318, 38551088, 15023259, 33220498, 14137959, +8337069, -28924994, 137439, 16588774, 2656437, -15263777, 6260989, -23487566, -9598715, 1921461, +6849399, -6835978, -4940286, 5437966, 3884261, 1999844, 20734492, 13362180, 3144453, -8148627, +14179298, -9149891, -7093139, -13584982, -4939213, 18362058, -28893318, -161598, 12496207, -13979045, +-4809290, 5713380, 4494147, 26656178, -1848983, -24696, -12643847, 26066694, -11821361, 3528316, +2376191, 18131742, -4499515, -6180458, 16668231, -28419262, 7142531, 3016678, -12228846, 23205172, +-29008210, -3372623, -9924059, -18986440, -9974525, -1445793, 7820599, 18283676, 29378650, 14762876, +19295678, 30176978, -12519830, 5774584, 7176354, -12524125, 16947940, 601832, -23257784, 12275017, +5998996, -8131984, 447750, 17945448, 13021804, 4199405, 10200010, 3392487, 3090766, 9964324, +-2091649, 4379793, 8321499, -1866163, 1554778, -1342177, -841277, 6366216, 861141, 895501, +-5707475, -2944200, -4062502, -7332046, 1296543, -3943317, -12462921, 4884989, 6914898, -2270964, +-482110, 3483219, -4543002, 84289, 12436615, -1709397, -3937948, -7864622, -36939404, 10394358, +1699196, 44554916, 9885941, 8546448, -1463510, 21830246, 5585605, -32303522, -5247913, 34968548, +-10567230, -7134478, 2663417, -2222109, 513249, -6154688, 35931696, 41371272, -22442814, 10167261, +10797548, 6184216, 11402601, -17978196, -25356414, 19430432, 4984310, -13710072, -24267638, -7050189, +-8458938, 22039088, 17569638, 10177462, -20614770, 11273752, -9130564, 7227356, 865973, 9523016, +20293720, 4860829, -46538120, -14047227, 8109972, -18400714, 5246303, 19683836, 6198712, 34203508, +-11681237, -51166484, -1583769, -20354386, 17425220, 15547245, -6003828, -10834592, 15415174, -24550570, +-4822175, -13241921, 11186779, 16076063, 13241384, 14933601, -11552925, -20815560, -62539556, -29644938, +-36595804, 5737540, -24962886, -11841762, -5472325, -26910654, 13942001, -48469244, 14593762, -34856344, +-25778930, 24870008, 28849832, -9028021, -1726577, 15907485, 20166482, -28467580, 63351, 4644471, +-4658966, 4999879, 14722611, -1979980, 6178848, -1325534, 5380521, -12619151, -7204808, -5781026, +-8902393, -1849520, 11373073, 4933307, 10164040, 346282, -12086038, -10448045, 1140314, 6230387, +-3045669, 6615324, 6288906, 16775605, 947577, 5712307, 1113470, 3925600, -8159364, -2372433, +2337536, -6135361, -455803, -2873870, -67646, 3013457, 16813724, -1741609, -11258183, -11708081, +319438, -1149441, -17904644, -11280732, 8134131, -12583180, -75699, -624918, -47482476, -7521562, +32510754, -38400228, 4379256, 13750338, 1069984, 9520332, -2159295, -30485678, -1823214, 15982110, +6212134, 24017458, 17257178, -26181584, -27191438, -4089883, -11347304, -4337380, -45268420, 16842178, +18985366, 31831076, 15389405, 28950764, -11913702, 3684545, 30866320, -9839233, 33533494, 8800925, +18104898, 5546414, -7563975, 15896211, -19105626, 675921, 42209864, -32439888, 3759707, -42098732, +-18037252, -30344480, -19651086, -5527623, 3009698, -10138270, -31061740, -6006512, -52124796, 59558312, +21804476, 121870, -7268159, -14678588, 4153770, -26532160, 5705864, -39642548, 1749125, 1813550, +9668508, 25086904, 37267968, 1080184, -60203092, -28225988, 27047556, -13473849, -11314554, -14934675, +-7229504, 30005178, 7168838, -17048872, 13564044, -28403156, 5848672, -5462662, -11632382, -28650654, +-15235323, 17990544, -7648800, -6985228, 10683194, -10676752, -2338073, 17942762, -20051592, -14297409, +-5145371, -4404489, 23597624, 10528575, 7157026, 13373454, 6288906, -2190433, 11479911, -197569, +8724152, 10962904, 18101140, -6559489, 975494, -1820529, 13671955, 19163608, 8221641, -4469451, +-202400, -5660767, -12648679, 24525338, -5934034, 12729746, -5959267, 4058207, -6385543, -5319854, +7525857, 13320304, 660351, -4360466, -2358474, 11683922, -24481850, 17531520, 26642220, 10716480, +-13151190, -15962246, 7283728, -20801064, 33268280, 28914794, 42342472, -30051350, -38480760, -8866423, +-1555315, -18501108, 24613920, 31313532, -23390928, 530965, -41170484, -11344619, -19864224, -35945120, +10864657, 30759482, 17579302, -23163296, -9903658, 3372623, 19634442, 3626026, -2157147, 8215199, +-2979097, -9703942, -33434710, -21638046, 7762617, -2490544, -18500572, 19910932, 16525960, 11530913, +-34207268, -30011620, 28239946, 18021146, 20819854, -21270288, -56540024, -9999221, 22846542, 23904178, +-6396280, 57054344, -7695508, 57346940, -86078120, -105357160, -44179644, -63266480, 77846, 25384868, +12419972, 69508144, -8512625, -4004520, 12177843, -13285408, -55110872, -47995724, -54646480, 43627740, +34652868, -12877923, -4333085, -89792200, 24465744, -717260, -40975060, 17175574, 25131464, 40329208, +30596810, 14896557, -3474629, -26395258, 99858, 1737851, -8214662, -11138461, 31139050, 20025822, +11683922, 32851668, -25730076, 6351720, -7732015, -15135465, 19598472, -2835752, -36245764, 107374, +10445897, -12392054, 16086800, -6429029, 3738232, -7526394, 38631084, 31090732, 35724464, -30472256, +-7784628, 38113540, 27158152, -26531624, -17396766, -26736172, -16752520, 22339198, 24228984, -8544301, +-3398930, 42409580, 914291, 4160213, -6412386, 7767985, 6387690, -1183264, -21705154, -5304285, +-5213017, 6811282, 12234214, -41001368, 35798552, 27214524, 11224360, 33700996, -19766514, 12422119, +-55763172, -26965952, 14719390, 20619602, 9507447, 7216619, 6988449, 14461692, -6733435, 63525252, +5775658, 39574904, 11410654, -19037442, 48440252, -6540162, 19056234, 1053878, 17398376, -1776506, +-984621, 10684268, 24340116, 7137162, 17798882, 1311576, -3595425, 38268160, 4412005, -7979513, +724239, -2928631, -19160922, -5422396, 10830297, 7189239, -43027520, -10443750, 5521181, 10061498, +45146548, 36820216, -44486736, -24466282, 3766686, -9767293, 49715856, 4944581, 45864884, -32123134, +23138600, 4753455, 2640331, 21369072, 47143708, 30637612, 6386617, 41704132, 16456167, -19463718, +-41819560, 36884104, -33324114, 22349936, -43920336, 303332, -69720208, 72599440, -17799956, 2604361, +-48775260, 44112000, -16940962, 14033269, -35745940, 42616276, -22017612, -19889456, -14391362, -26627724, +8465917, -14875082, 12838194, -13782013, 23453206, -25996364, 23501524, -27372900, 15315853, -32067300, +25900800, -11008001, 28732258, -9859634, 15154255, -12033961, 9853729, -13741211, 711891, -15024869, +17536352, 7195681, 5123896, -5921686, 1896228, -11967389, 9542880, -12294881, 22080964, -17964238, +-21314848, -9589051, 8958228, -25463788, 20010252, -6191732, 11107859, -7144141, 6437619, -11637214, +5773510, -5937256, 6866579, 8506720, -1548873, -70432096, -16990890, -5887327, 7875897, 5825050, +-43038256, -25747792, 39869644, -15700253, 15041512, -17843978, 4381404, 49015776, 80228376, 5113159, +-2284923, 39621612, 17999134, 16183437, 49905372, 724776, 30443266, 35861368, 35366372, -14004278, +15625091, 30966714, 44198972, 35341140, 54230404, 29953638, 69093672, 72351408, 53135724, 57632556, +40112312, -4633196, 19969988, 9976135, -14370424, -15120969, 12035035, 33556580, 8358007, 1290101, +461709, 16463147, 51023136, 38911868, 85249736, 16821240, -43246024, 17306034, 1530082, 17711372, +-21876416, 33414846, -60647624, -79304960, 22815940, 79352208, 35310000, 15714212, -97885528, 403727, +38199440, 59411744, 80742704, -34151968, 5693516, -138068704, -90195920, 36730560, 52434572, -76937360, +-64770792, -40973452, 76203992, 50211924, -89407800, -116577760, -22760106, 47378856, -54930484, 26477400, +-7719667, -20205674, -29280940, 4129074, 12811351, 19589882, -2648921, -48232484, -40833328, 5142150, +-12108587, 20242718, 3650185, -4990215, -17424682, -12110734, 8543227, -1036161, -39133056, -20125680, +-29372744, -15625091, 6459631, -15387257, -10361609, -35792108, -46693272, -65610456, -64578056, -55283208, +-45997488, -51809116, -50516868, -39297340, -53311820, -57550416, -47942572, -55251532, -34628712, -9359807, +-30546882, -46035072, -29348586, 1824824, -15487115, -8813273, -9610526, 24503326, 27148488, 1336809, +13028246, 13716515, 9131100, 8070781, 1649268, 6434935, 6009196, 5952825, 4459250, 6941741, +2534031, 5660767, 2572686, 2167885, -310311, 1459752, -12943421, -2404645, -25675314, 65765612, +74876312, -84359064, -34395172, 31914292, -22994718, 15774341, -30278982, 27632208, -25573310, 6174553, +391379, -12712029, 6827925, 1298154, -7561290, -6074695, -20365124, -5682779, 4956393, 2397129, +-20762408, 19978578, -19014894, -6851547, -16440061, 1775432, -15721191, 32702418, -382252, 8525510, +-8529805, 8489540, -9090298, 9176198, 20387136, 27124330, -7111929, 8966818, 10376641, 23766202, +-14687714, 15200426, -13070659, 28575492, -7339562, -16670379, 9633075, -7504919, -8452496, 2955474, +-2267206, 12031814, -6322729, -16831440, -15697032, 2097018, 3382287, -29058138, 9007083, -4886599, +-2561948, 4472672, -7775502, -5375152, 3226594, -5093295, 4267050, -15950972, 18381386, -51746304, +27348204, -22405234, 34631396, -23582054, 31047782, -1002338, 17023640, 9042517, 13912473, 5577015, +2631741, 5229660, -727997, -22255446, -4138738, 304943, -8348343, -4792110, -4181688, -3042448, +1611150, -8953396, -260919, 2325725, -358630, -14208826, 14861124, -3189550, 8157754, -15114527, +7394860, -9665824, 6400038, -11170136, 12424267, -15986405, 22042310, -4964446, 3543885, -23101018, +15986405, -2017561, 11810623, -22043920, 5985037, -9810242, 3955128, -5355824, 2721399, -14941654, +7624104, -3933653, -7808788, -295279, 18016314, -20656646, 2084670, -8868571, 10980084, -14946486, +13836774, -12307766, 4398047, -9276056, 10880763, -5180268, 6365679, -5686537, 7032472, -9357660, +5451924, -5226975, -601295, -2597918, 4673998, -3182571, 2500208, 151398, 3530463, -4391604, +1714766, 573378, -2002529, 2812130, -2643552, 1512365, -3767223, 3187403, -4074850, 2299418, +-3038153, 2733210, -2217814, 2360622, -2996814, 3821447, -3767760, 3324305, -3528316, 4008278, +-3062312, 4036196, -4028143, 4740570, -4981625, 4315906, -5147519, 4202089, -4096862, 4968204, +-5756867, 5255966, -4980015, 4649839, -6388227, 5134634, -6193343, 5432597, -4622459, 4992900, +-4686883, 4253092, -4955319, 4454955, -5487895, 3221762, -13464722, 63453848, 38643432, -21047488, +-23996520, -2203855, 79073032, 32902134, 11183558, 21771190, -19033684, -24256364, 6852084, 15247134, +4117263, 1310502, -8288213, -6629819, 7553237, 7500624, 18508088, 8108899, -9783936, -4439923, +-4771172, -10057740, 20938, 1697586, 5030481, 6171331, 326418, -2711198, 7475391, -21252036, +-7914551, 9374840, 13662291, 16711718, -9291088, -5538361, -9884867, 17099876, 12009802, -3289408, +5598490, -19855634, -16995722, 15784542, 12459700, 3847217, -29873646, -15471009, 1392643, 4974646, +19925964, 14105209, -2056753, 5789079, 7186554, -9406515, 8749385, 9294846, -2585570, -5741298, +5703717, -10060424, 1113470, -1725503, -6878390, -10770167, 15116674, 3054259, 3487514, 20583094, +25215752, 8870181, 20442970, 18976240, -2811056, -5111011, -5517423, -3642132, 8096550, 12958990, +-4835060, 4006668, -11427297, -4197257, -380105, 2794413, -6142877, -7531762, 8024610, 15016816, +6677064, 4199405, 6475200, -7150047, 791348, 7180112, 1603633, -2179159, 2007360, -669478, +-8511551, 17827872, 6003291, -14135274, -13202193, 5481452, -2439005, 14089640, 7638063, -1700270, +5460514, 1895691, -2664490, -543850, -3811247, 4213363, 6663642, 1112933, -1439888, -5438503, +5007395, -972810, -4417911, -43487, -22725208, -62944356, 21849572, 115550192, 90984584, 86991880, +27906550, -80997176, -48477296, -71810240, -71901512, -65655556, -22823994, 35314296, 45668388, 71666896, +64316060, 38640748, 6570763, 6266358, -31016106, -49197776, -70275328, -27097486, -19026706, 6283537, +-3895535, 35668628, 24186034, 10222559, 47805132, 26771068, 20501490, -4198331, 17996986, -32443646, +-24368570, -20238960, -23535884, -31121334, -18668612, -12433930, -31561030, -21907018, 8463770, 46511812, +44990320, 51003812, 40143448, 58319752, 10157598, 14919106, -38726648, -28741384, -24566676, -58217208, +-57895084, -52022256, -24525338, -30494804, 7199439, 22542672, 32538672, 65272228, 64191508, 61373472, +55128588, 48183092, 10341744, -28356448, -46116136, -82468200, -70792336, -51678120, -70365520, -32692218, +-14664092, 3085397, 69113000, 54127324, 79495016, 78480864, 57379688, 16035797, -15830176, -23491324, +-27196270, -24291798, -46761992, -57884884, -40415104, -27639726, -24408300, 3055332, 16263431, 25849798, +22287122, 46531140, 50889456, 38444788, 30588758, 5098663, -10771778, -21965536, -35923644, -30869540, +-21909702, -34474628, -46715284, -4944044, 2673080, -7691213, 40192840, 53087944, 33940980, 29841432, +2181844, 8434242, -5580237, -9351218, -23276576, -27288074, -17978196, -20396800, 2832531, -8140574, +2553895, 403727, 18234284, 9860171, 9364102, 17135308, 17386028, 35433, -4702989, -12428025, +-12525198, -3532074, -2925947, -5995775, -6067178, 1192390, 1365263, -1463510, 2862596, 3314641, +2930778, 927713, 11160473, 4163971, -426812, 1773822, -621160, -4090420, -4307852, -4912369, +-5885179, -5176510, -1663226, -890669, 318364, 4896263, 6327561, 4913980, 4652524, 2456185, +427349, 69256, -807991, -4698158, -2812130, -33823, -3035468, -4320200, -2272038, -503048, +1955284, 1388348, 41876, 1182190, 3136400, 2243584, 1388885, 3139621, 1510218, -199716, +-1432909, -2407329, -1995549, -2024540, -1692754, -1196685, -916976, -79457, 227096, -11274, +542240, 1161252, 1073742, 1734093, 2356327, 1202054, 314069, 637803, -437013, -1038845, +-1635846, -1818919, -1676111, -1313186, -657130, 46708, 64961, 932545, 1189706, 718333, +846109, 1579474, 1020055, 208843, -450435, -348966, -376883, -853625, -1220308, -637803, +-333397, -4832, 125091, 314606, 209380, 341450, 147640, 158914, -8053, 117038, +-33823, 57982, -71404, 66035, }, { -3223910, --4303557, -6033356, 1952600, -2881386, -6213744, -3766150, 2638184, -7556458, -4388383, -9270150, -3137474, 4329864, 5217849, 3046206, -3418794, 7251516, -5004174, 1568200, 19864, -894964, --5280663, -2509335, -5794985, 351114, -2537252, 3302293, 1971927, -2573759, -992674, -488553, --5328981, -87510, -1284195, 2440615, -220654, 4833449, -1802276, 6081674, -2705293, 205622, -830539, -4217658, 2893734, -1204738, -1796370, 620623, -1303523, 2406256, -9237401, 4348655, -5360119, 894427, 2991982, 1796907, -4159139, -439160, -4502737, 6066105, -1702418, -3636227, -3477313, -5398237, 118112, 2195265, -6342056, 810675, -1575716, -2306934, 2027761, 525060, -458488, -2887829, -1989107, -9951439, -1324997, 2210298, -1696512, 528281, 1162862, 5369783, -4478577, 306016, 1443109, 679679, -908386, -706522, -1383516, -676994, -466004, -986232, --955093, -6442, 941672, 680215, 627065, -1513976, -28991, -18790, -457951, -75162, -350040, -189515, 35433, -714038, -609885, -634045, -46708, -592706, 915365, 1206349, -1236414, -14256070, -8574902, 1585917, -4634807, 883153, -4781909, -8189966, -5459441, 9297530, -5405217, -1440962, 6291054, 1481764, 1541356, 1765768, -3058554, -832150, 5111548, -4123169, -2317135, 3732327, -4002373, -6320045, 2887292, -5166846, 566936, 2957622, 7577396, -1712618, --3666292, -3203509, 1173063, 4123169, -5614059, -49392, 4602058, 1813013, 476205, -308164, --441308, 5986111, -238371, 5483600, 3596498, -1397475, 3583077, -1269163, -337692, -565325, --10028749, 3462281, 5651103, -3282429, -1879585, 1374390, 1529008, 1602023, 871878, -551366, --1222455, 331786, -2533494, 6851547, -3089692, 790274, 3710852, 2969433, -2467459, 2700461, -841277, 1756105, 3747359, 3312494, -4991826, 5143760, 5692979, -1945620, 79994, -369367, -3711389, -4573067, -2392834, 994285, 634581, 166967, 228170, -979253, -1553168, 911070, --744640, -398895, 246424, 1300838, -989990, -235686, 9127, -1797444, 590558, -1068373, --1120987, -867583, 648540, 90194, -536871, -1076426, 232465, -5650567, 7225746, 4728759, -11179263, -1854352, 1204738, 3424163, -5425081, -1125281, 2172180, -2241973, -7369627, -436476, -804233, 4953708, -5950141, -14557255, -11745662, -7238631, 2811593, 6925098, -6956774, 3922379, --3405372, 5351530, 4168803, 3628174, 6424734, 3575024, -5015448, -4638565, 883153, 3432216, --252866, 295816, 8982924, -67109, 1573569, 4469987, 4726075, 785442, 145492, 11095511, --765578, -4162897, -1242319, 2523293, 3246459, -2148021, 5974300, 1173063, 3212636, -4264366, --3769908, -1453846, -2488397, 1447941, -1971390, 6497749, -7483981, -6688338, 8116415, -847182, --327491, -9418863, 2939905, -4566624, 5095979, -3917547, -10423886, -476741, 5380521, -4465692, -6951405, -4172024, 3207267, 6485938, -1823214, 2714956, 6536940, -424128, -4807679, 406411, -3198677, 1480690, -2321967, 4498442, 308701, 2373506, 902480, 648540, 1711545, 311385, --668941, -44560, 245887, 690416, -1804960, -919660, -936840, 1729798, 217970, 1763084, -1840930, -1699733, 428423, 449898, -972810, -726386, -340913, 335007, -881542, 367220, --921807, 17395154, 4096325, 4641249, 1990181, -3970161, 8346732, -3944928, -2364916, 10625212, --800475, 8546448, -902480, -9758703, 3453154, -3305514, 10772852, 5680094, -752693, -9637907, --6747394, 8920110, 10567767, -12328704, 6180995, 4954782, 3715684, -798327, 1196685, 1037772, --937914, 12225624, -556735, -2085744, -3370476, -4090956, -5231270, -1717450, -280247, -7033546, --2509335, 1844152, -4907537, 279173, 280247, 7317551, -2744484, 235149, 3398930, 294742, -6987375, 3161096, 7264937, 3599183, 2210835, -7679939, 805843, -5689221, -5326833, 1279363, -7408819, -284005, 6362457, -2662880, -4815195, -1112397, 302795, 1878511, 4367445, -2015413, --42950, -2385854, 2438468, 1676111, -6271189, 1224603, 1297080, 836982, -1768453, 6562710, --700617, -1277216, 697932, 3081639, 1346472, -2150168, -701690, -869194, -1582159, 1291711, --1890323, 3097208, -1872069, -365072, 370441, -1459752, -425739, 1722282, -2031520, -460098, --2186675, 849867, 905164, 1757179, -2388002, 475131, -981400, 1206886, -819802, -2849174, --923418, 4906464, 3438121, 3945464, 11186242, 5852967, -4854924, -4340602, -12040404, -782221, --267899, -6425271, 2442226, 9662066, 1170916, -7612830, 7068980, 6717329, -700617, 2685428, -6808060, 1613297, -6186364, -955093, 14424648, 7095823, 1491427, -9516574, -3406983, 8680666, -2986076, -1297080, 4887673, 4370129, 4576288, -37044, 8952859, -81604, -1149441, 2255932, --4449049, -5828808, -295816, 985695, 3327526, 1827509, -5447629, 5530308, 9706626, 4982162, --268435, 7208566, -8210904, 4680978, -4893042, 5143224, -1373316, -5908802, -302795, -7697119, --12600360, -4600447, -5009006, -616328, -56371, -6598144, 1276142, -2029372, 3823058, 2522220, -4528506, -725850, 1820529, -6353867, 1097364, 1002875, 8847096, -3422552, -282394, -3076270, -1865626, 7956427, 4087198, -4626217, -7397545, 2333778, -2961380, -1017907, 3843996, -548145, -1289027, 900869, -4407174, 206158, -3364033, 951335, -3195993, -2153389, -1167694, -137976, --434329, 576599, -2049236, -216896, -693637, -1634772, -1381906, 486405, -363998, -849867, -212601, 752693, 2442763, -872415, 1426466, -1064615, -2472291, 1822677, -2704756, 2588255, --251256, -1746978, -302258, 858993, 1893544, -1408749, -192737, 403190, -485331, -11795591, --7793755, 16679505, -3645890, -3663607, 984621, -587874, 17891224, -5231270, -9644349, 233002, --9513889, 2370822, 7598871, 8159901, 2587181, -16603270, 13653164, -10744398, 5714454, -7346005, --5574331, -4113505, 6820945, 7323993, -10976863, 867047, 4805532, -3411815, 2208150, 3221762, --3962644, 505196, -9038759, -6082748, -13955422, 8266202, -1944547, 14074071, -6549289, 3052648, -9409200, -2351495, -2783139, -4164508, 10782515, 7863548, -13219372, 3770981, -7472706, -2515240, --2896956, -7432441, 4472135, 2363843, 11659226, 8196408, -14624364, -2401961, -6276558, 8546985, -2984466, 732829, -8529268, 1276142, -889595, 7182259, -1191853, 896574, -9811853, -227096, -6980933, -6433324, 1087164, -2032056, -1909113, -5200132, 1053341, -687195, 12368969, 5448166, -5660767, -2266132, -1374390, -2150705, -3361349, -1809255, 2763812, -3786014, -1198296, -3713536, -2811056, 2353642, -2013803, -1138166, 2613488, -3496104, 1736777, 529355, -935229, -1112397, -940598, -99321, -314069, -672162, 2284386, -3372086, 450972, 302258, 1710471, 1845762, -1850594, -1711545, 507880, -1207960, 2470680, 678068, 586800, 1806571, 4070019, -4483946, -307090, -9453223, -1181653, -10908680, 1707786, -2732673, 6262599, -440771, 5313949, -7471633, --14066555, 2986076, 9467719, 1237488, -1139240, 7384123, 4971425, -11502996, -181462, -4335233, -14567992, -644782, 1699733, 1147830, 153545, -452045, -5221070, 11547020, -976031, -16356846, --3067144, 9921374, -6383395, 1660542, -255014, 1332514, -2042794, 1586990, -3003793, 3919158, --6269579, 5919539, 8298414, -6491306, -1650878, -3838627, -11387032, 4571993, -8082055, 7051263, --7102802, -12284143, -3352222, 7319161, -2275259, -4380330, 4893042, 6769942, 3873524, 7419019, -12678207, 10218264, -649614, 2000918, 1736777, -6783364, 1305133, -7093139, -7736310, 4242891, --5899138, 1939178, -340376, 4472672, 4537633, -5861020, 6840273, -1851131, -2790655, -1241246, -4813585, -863825, -4424353, -3004867, -6270116, 7201050, -3592203, -922344, 1249299, -276489, --2648921, -2244121, 494995, 973347, 326954, -1233193, 1670742, 1242856, -1399086, 153008, -1080721, 677531, -846645, 4295, -1141388, 476205, -1919850, -1755031, 1109175, 580357, -2404645, 2643552, 239444, 1827509, 39192, -102005, -16072304, -13477607, 7867843, 14402636, -24696, -852551, 2774012, -6925635, -3330210, -16646219, -8836895, -4716411, -132070, -12108050, -17340394, 3441880, 9659381, -11038603, -13150116, -9907416, -3839701, 2636036, -14932528, -6694244, -6938520, -2965675, -18168786, -6167573, 2462090, 191663, 11288785, 3792456, -3534758, -8623221, -10737418, -6228240, -619012, 8085276, 2399813, -8806830, -4514548, -685584, -14711874, 3704946, -11451457, -4984310, -6310918, 1667521, -7442642, -2753074, 1487669, -4750234, -3621731, 3877282, --5545877, -11743514, 5813775, -6698002, -8747238, -12033961, -6004901, 1196148, -4793721, 1996623, -14811195, 8356396, -1787780, 14105209, 14343043, -6206765, 2009508, 3977677, -7406671, -4820027, --15704548, 1619203, -5017059, -12713640, -107911, 6693707, 11851962, 7281044, 3495567, 1320703, --10662793, -1339493, -2413772, 2800856, -4016868, -467615, 277025, -153008, 2601140, 499290, --939524, 2295660, -920734, -3367791, 2741800, -2257542, -2991982, 460098, 1142461, 1014149, -272194, 3281892, -301185, 2100776, 1263794, 251256, 696858, -18790, -2517388, 575526, --3473555, 814970, -5568962, -1394791, -212064, -3694209, -4356708, -575526, -4306779, -807991, --891206, -4952634, -10247255, 26097296, -1032403, 16005196, -8054138, -22831510, 6519224, 1985886, --907312, -10693395, -1053878, -7036767, 18090940, 13273596, 11837467, 8679592, -14194330, -63888, -1943473, 12617540, -21546240, -2424509, -5279052, -6275484, 3228205, -7077033, 2758980, 4816269, -3560528, 3852586, 4986457, -1480153, -2125472, -10457708, -2500745, -1583232, 10281615, 15569, --9422621, -2199023, 11188927, -1288490, 6507949, 8383776, -6072010, -3576097, -13879187, -8050916, -27151710, 7166690, 12081206, 6507413, 1570884, 1034013, -17212618, 10212895, 1610613, 3006477, -8784282, 9594957, 14918569, -17163226, -7094212, -9519795, -1205275, 2393908, -2269353, -4802311, --2819646, -14392972, -18103288, -11745662, -16966194, -2191507, -11089069, -18985366, -8029442, 6184216, -10406169, -3946538, -16245714, -565862, -2452963, 3859565, -4466229, 1057099, 9339943, 441845, --684510, -568009, 1190243, 1655173, -2757906, -2469606, -6527277, -7306813, 3900904, -1996623, -3491272, 3168612, -1188632, 2161979, 2880313, 5272609, 3735011, -2274722, 1159641, 6716255, -1294933, -6766184, -5601174, -3048353, -1410897, 523449, -2379949, 3894462, 4286378, -1016834, -6466610, 865436, -1796907, -1372242, 1507534, -3733400, 35032436, 7936026, -5062156, -7266548, -1120987, -11239929, -21977884, 16181826, 68719, 10417443, -7873212, 7539278, 17986786, -1770600, -2006824, -4520990, 15656230, 13191992, 5115306, -21204790, 1535988, 3132642, 13112535, 19092740, --5631776, -3893388, -2522220, 5128191, 6815040, 5677410, -9648107, 4422743, -11121281, 8522826, -11363410, -5417565, -11247982, 7116224, -12239583, -11187316, -467078, 3265249, 15953119, 1938104, --2182917, 13601625, -2517925, 12219182, 22558778, 11318313, 260382, -14310294, -1359357, -8237748, --6683506, 14423574, 5634997, -14512158, -165893, -11091216, -2811056, 19117974, 8791798, 2798708, -8185134, 11520176, 5971079, -15391552, 7945153, 12866648, 4412005, -10514080, 4346507, 1235340, -2209224, -8224326, 12712566, -3484292, -3047816, 15292231, 16200617, 2401961, 4615479, 17620104, -1042603, 8706436, -6167036, -173946, 10149545, 5890011, -4483409, 5250061, 9162776, -2463701, -83215, 11684995, 2420214, 4984310, -3443490, -5815386, -1758789, 3275986, 1707786, 2704756, -2771328, -1888175, -1810866, -1495186, 913754, 3519726, 4242354, -2815351, -838592, 7295539, -1082869, 9774272, -1736241, 2680597, -1305670, 1275068, 4409858, 2709051, 375810, -39192, --4108673, -2869038, -2067490, -4385699, 5634997, 5064840, -8513162, -440771, -10876468, -25597468, -8840653, -10202695, 2830384, 896574, 17935784, -12366821, -10931766, -4601521, -5004174, -6615860, -13245679, -11752104, -16581258, 4945118, -30982820, 897648, -5842230, -13113609, 16653736, -1079111, --994822, 7000260, -6614787, 5258114, -1686848, -18512382, -20208358, -213675, 4251481, 11825656, -5704254, -1360431, -2144263, -11646878, -5526549, 11669963, -18285824, 25195352, 14955076, 3356517, -18622978, -12455405, -5349919, -11404212, -11668889, -5050345, 8492224, 23791972, 191663, -12311524, --2092186, 1147293, -1352915, -1287417, -7586523, 6405407, 5871757, 16034187, -321049, 18131204, -9324911, 4971962, -482110, 3856344, -27131846, 14277545, -3478924, -15875273, 11286637, -28991, -14865956, 6596533, -25149182, 19472844, 15180562, -13158169, 21120502, 8126615, 15769509, 6250788, --2234994, -896574, -702227, -2975876, -5571110, -1712081, 2299418, -5550709, -8457864, 61740, --5531918, -9906342, -5947456, -7423314, 4655745, -4568772, 5734855, 1530082, 5851893, 2773475, --690416, -3169149, 973347, 548145, -488016, 808528, -1784559, -4118874, 1940252, -389231, -2376728, 2599529, 69793, 2195265, 993748, 3795141, 3236795, -5971615, -3610457, -5356361, --9992778, -7022272, -48070348, -3587372, 28226526, -5126044, 673773, 24903294, -5932424, 382789, -2855617, 6708202, -7636452, 6691559, -2743947, -8194261, 7817378, 9510131, -28175522, 3388192, --25096568, -597000, -13092134, -13999446, -3273302, -4156992, -13858786, 6921340, 2071248, 8710194, -11593727, -16922172, 21184926, 1543504, -20194400, 1708860, -14001593, -6912750, -15046881, -13462575, --6030134, 14230300, -12401181, 6808597, 14149233, -8545911, -15495705, -14061186, -20884278, -22264574, --13302051, -6306086, 1542430, -3329137, 5951751, 4270271, -13429289, -927176, 14682346, 8586713, --22192096, 8672076, -1875290, -6089190, -20580410, 13789529, -7517804, 19017042, 23802708, 660351, -22626962, -12537546, 13033615, -9863929, 14029511, 18163416, 1355599, -23848342, -956704, -32556926, -10330470, 7078643, 12716861, 6161131, -12992276, -11081016, -432718, -7426536, 7144678, -8036958, --499290, -486405, -8235063, -6259915, 5278515, -3127810, -9289477, -852551, 2598992, 6765647, -3400004, 14664092, -1746441, 1242319, -4589173, 10286447, -1680943, -2223719, 8792335, -493384, -1121523, 2149094, 11928735, -1952600, -5177046, 1262720, 8165270, 7936026, -8224863, -775778, -5312338, -9257265, 4938139, -1494112, 6391448, 392453, -8115341, -4387846, 3613141, 4138201, -4905390, 3743064, -22801444, 18434536, -43478492, -2560338, -4169876, -3614752, 4002910, -24934432, -1716376, -4902169, -2164664, 11402601, 4448513, 13265543, -10270341, 9393093, -4920959, -22145388, --8965744, -16249472, -10151155, 10748693, -19391240, 2558190, -7205345, -14634027, -2651069, 14361834, --19276886, -18478560, 7544110, 11154030, -656056, -8722005, 10343892, 11003169, 13392782, 11608223, -4763119, 15877957, 18735722, -10039486, 2781528, -8847096, 23514946, -1865626, -16324097, 19685446, -8584566, 4766340, -9360881, -12345883, 2864743, 7525857, 7488813, -613643, -10283762, 7841537, --11970074, 391379, -11812771, 36424544, 5582384, -10408316, 29843580, -3608846, 9107478, -7693360, -14973330, 22360136, -13892072, 21363168, 22586696, 29582660, 22646826, 2167885, 16810502, -13151727, --2639258, 3219615, -7350300, 13088376, 552440, -792958, -1335735, -3750580, 6320045, 3255048, -17863842, -5822902, 6579353, -3892314, 79457, 3417183, 5244155, -7499013, 2748779, 7536594, --3287261, -8422968, -1676648, -13539348, 4667556, 4275103, 3650722, -3537979, 2217277, 7173133, -3991635, -1680406, 6815576, 3118683, -4488778, -2228551, -1458141, 11232950, 14530948, 7793218, -3338263, 2663954, 4958540, 8696235, -5807870, -2282775, 3892314, -863825, 780610, 4040491, --3461744, 44935560, 11553462, -7482907, -6664716, 10554882, 2873333, 4584878, -1170379, -17749490, -14952392, -40715216, 4407174, 9126806, -1868848, -7318625, -15724949, -7046968, 1821603, 12267500, -18485540, -10820633, -23837068, -19084150, -2779381, 854699, -14069776, 28985124, -13498545, -8667244, -11863237, -3910031, 2098629, -2443300, 24705188, 4273493, -24856586, 9971840, 3103651, 17313014, --6171868, 1999307, -10302553, 8669928, 3741990, 21787296, -5313949, 9907416, 10233296, -12949863, --14463839, 1163399, 13109851, -25349970, -30175366, -8737574, -12411919, -1495186, -4403415, 3129958, -6805913, -5980742, 1005022, -34675956, -29591250, 23640574, 24950538, -30020210, -23194970, -28889024, --15211164, -11889006, 15017353, -15716359, -27998892, 943819, 1187559, -16995186, -3665218, 24488830, --3693672, 1474248, 7818451, -130997, 1376537, -956704, -8644159, -10586021, -593242, -2922188, -6995965, -1014686, -690953, -7634841, 3869766, -11874511, -297963, 3775276, 3963181, 5874979, -6514929, 1321776, 3685082, -2559264, 606127, -5996848, 2209761, 720481, -6900939, 7169911, -7055021, -10987063, 679142, 8196408, 6681359, 12611098, -2597918, -14446659, 4041564, 4846871, --7176891, 4709969, -7989176, -3673271, -1235877, -2441689, -6781754, 2551748, -24827596, -3143916, --5927055, 7402913, -11701638, -3310346, -38659000, 34237332, 22174380, -3817152, 47195248, -4711043, --25704306, -2464774, 10687489, -16042777, -20939040, -4506495, -14253386, -754304, 4127464, -21711060, -31878858, 986232, 3543348, -20032264, -5625334, 2083059, -5575405, 5026186, 7364259, 26037166, -4809827, -1397475, 21229486, 17342542, -6029061, 10205379, -13183939, 3701188, 11942693, 11416560, -29656750, -29233158, 18080738, 54069880, 543313, 8834748, 18670222, 2067490, 3837017, 8696235, -6896107, -18133888, -21398600, -7883413, 17497696, 5124970, -22238266, -12177843, -816044, -10801843, -20088098, 1789928, 15555298, -34207804, -20995410, 9927817, 23613194, 14321032, 9620727, 32458678, -19160386, -13678934, 22565758, -16895864, -3249143, -2454574, 12771085, -2679523, -13777181, 12104292, -5472325, 1135482, -15822660, 11071889, -48855, 193810, -6950868, 9330816, -7429757, -6176700, --5647882, 4440460, -5899675, -11748883, 4145180, 811749, 128849, -6397354, -1028108, -8006893, --6630893, -6403796, -3813931, -2473364, -2782065, -2436857, 1360431, 228170, -14920180, 10183904, -4248797, -4785668, -10969883, -15966004, -141197, -8691403, -5610301, 5783174, -3952444, 9912785, -5201743, -3469797, 2001455, 9279277, -3878892, -1513976, -4154844, 7831336, 2143726, 3276523, --7584376, 16019691, -45107896, 959388, -308164, -1445793, -5730023, 21066278, 1656784, -12120935, --22626424, 22896470, -20347408, 531502, 14673219, 11829414, -16007343, -4274030, -25764436, -106837, -7328288, 8987219, 10375030, 2750390, -16799764, -20876762, 17131550, 8881992, 8504572, 3380139, -8651675, 2625299, 12597139, -22512608, -38186556, 10590316, -5818607, -8102456, 21208012, -3710315, --11403675, 18824304, 17671642, 14749991, -1427003, -9571335, -16472810, -4219806, -21766358, 51015620, --4421132, 18382996, 3868692, -16916802, 13830868, -6459094, -16309601, 15950435, 12570832, -28033788, -19486804, -2972117, 27059368, -27431420, -20794084, 27704150, -1210107, -22395034, 22818624, -8382703, -39030516, -16583942, -13514651, -23592792, 14919106, 2793876, -19287088, 7683697, -25045564, -18210124, -1571421, 16216723, -14395657, -8743480, -28436978, -25687126, 30107720, -3458523, 13086228, 21195126, -28566364, 164283, -2956011, -2193655, 7504919, 11523934, 2092186, 5304822, 17577154, 7756174, -9666898, 5797669, 4377646, -3417183, -1676648, 10882910, 8223789, 14253923, -6764574, 9409736, -9860708, -15477452, 3929895, 3947075, -8483634, -4279935, -47782, 3954054, -6894497, 11230803, -596464, -2532420, -3209414, 9543954, 343061, 3016141, 852014, 2719788, 2139968, -8626979, --4333085, -6433324, 782221, -75162, 4756677, 6197638, -5541045, -12905840, 33430952, -7626252, -22633404, -35421132, -6245420, -822486, -42293080, -9296994, 6096169, 20762946, -10429791, -9920838, -893353, -3270081, 29644938, -2834679, -14949171, 31459024, -3935264, -1634235, 5907191, -12582107, -27166206, 1787243, -5582384, 13019120, 11131481, -14853608, -5120138, -6898255, 21146272, -42341936, --756451, -8220568, -14972256, 7237557, -15222975, 24634858, -6494528, -30515742, -3196530, 46335180, --28142774, 20296942, -31372588, -9035001, 31181462, 22795002, -16859894, 7905961, -20555714, -26996554, -5722507, -11879880, 11742977, 3386582, -1907502, 4578435, -39545376, -15469398, -20169704, -28904594, -13403519, -10982231, -8064875, -16034724, -28101972, -23629300, 18482854, -3709778, 57686780, 10104447, -5310190, 20593294, 36273148, 4734665, -26200912, 31826782, 24077050, -20378546, 5369783, -5178657, --20304458, -16004659, -13727789, -1593970, -12533788, 4679367, 8475044, 2937221, -9771051, 16919486, -2618320, 7793755, -2345052, -3001645, 8006893, 4873714, -8149701, -7355132, -7048042, 7729868, -3680250, 9347996, 9939091, 327491, -5374078, 7504382, -4343286, 16165720, 7662222, -19564650, --3879966, -14453639, 1710471, -4792110, -6980933, 20237350, -1121523, -6424734, 5171678, 6274947, --7439420, -1611687, -10222022, 4406637, 7323456, -1548873, -3256659, 1018444, -6892886, -1950452, --1102196, 9410810, 22501334, -13341242, -16915728, 19013284, -30223684, -3605625, -6158983, 1739462, -21436718, -14017163, 23783382, 10110353, 5483063, 7039452, -38565048, 26234198, 5011153, -27226872, -10755672, -28876138, 5035313, 38679400, -4684736, -22938884, -24263880, 10386842, 17708688, 14176613, -7698729, -25550760, -17351668, -7927973, -4602058, 33048700, -20787642, -12575664, 49386220, -27374510, --1949915, 19502910, 259309, 20547124, -2829310, -16590922, -10934987, -30141006, 15573015, 21423296, --31957778, 48063368, 16201690, -36254892, -32861868, -31532576, -37575596, -30562450, 1793149, 15093589, -3190624, -25464862, -9406515, 16997334, -219043, -15952582, 17799418, -34273304, 2433636, -7890392, --31425738, -29571386, 5387500, -11766600, 22635014, -41004052, -5240934, -14523969, -29744260, 2052994, -48631376, 12399034, -21100638, 10391673, -26040386, 10690174, -10394895, 932545, 1757715, 13690208, --1148904, 4684199, 17551920, 183073, -9212168, -4390531, 14150307, 9782325, 6708202, 3382824, --26776974, -2756832, 2415919, 15202574, 7969849, -14057428, 114354, 1617055, 24091008, 1329829, -8010114, -7320772, -4261682, 3504157, 8152385, -964757, -6569690, -13294534, 2391223, -5031554, --8749922, 4543539, -5957120, -6561100, 9649718, -7358353, -10130217, -14671071, -12486544, -2388539, -4336307, 64425, -10765872, 9419937, 23890756, -59210420, -53983980, -47558172, -30081950, 11886322, --12504797, 60175176, 16362215, -6925098, -13562970, -8123931, 17485886, -39906152, 46476376, 60589640, -24577950, -4182761, 48570176, -15826418, 29474214, 54989540, -9870909, 2537789, 10646687, 73330128, --18495202, -5206037, 44123272, 16099685, 14326937, -12671764, -44817448, 2530810, -35489852, 16438987, --44033080, -52374980, -450972, -3576097, -35990752, -2539400, -17435420, -37691024, -29479582, -48998596, --2179696, 48686140, -15633681, -10130754, -45400488, -25074556, -16669305, -16319265, 15475841, -11871826, -82228760, -20180978, -1085553, -30746598, 62051540, 50191524, -36003636, 40662604, -14478872, -61022896, --10763725, -6590628, 12670690, -14817637, -13695040, -8398272, -24458766, 6229313, 30184494, -36581312, --5134634, 9476308, 6200322, -42374148, 26922466, 18172006, 62221192, -27435714, 17004312, 25428354, --1662689, 6375879, -916976, 8240432, -7030862, 19377282, 8438000, 15550466, 13837311, 435402, -14245870, 3770981, -5527623, 14439680, -1061394, 1847373, 1493038, 9872519, 7635915, -11862163, --8917963, -14872935, 21447456, -15336254, 3029563, 12566537, 5393942, 23354422, 20456930, 35152160, -24322936, 19665044, 1184337, 12704513, -19060528, 16595217, 12690018, -4949413, -18347564, -34833796, --13553843, 9183714, -19253802, -7859790, -14055817, -34166464, -29232084, -14479945, -21832392, -13649943, --18838264, -24445344, -25312926, -8628052, -7490960, -12050068, -18683108, -10973105, -16718160, -12257837, --13703093, -4560182, -6568079, -5917928, -7117298, -6387690, -9249212, -5163088, -18581640, 24885040, -104487968, 12195560, -65514896, -16246251, -23169202, 5046587, 32613298, 58655296, 16750909, -49192408, --950262, 34086472, 7393250, 770410, -1538672, 8917426, -4715337, -5952825, 40475236, 25402584, -22601728, -34395172, -22351010, 23452668, 9043591, 13856638, -11962558, 4336307, 45090716, 1083406, -38227892, 20122996, 20841866, 37402724, 5388574, -19834696, 4562866, -22719304, 5668283, 15835544, -3987877, 61139396, -20449414, -39417600, -38038916, 47212964, 21731460, 25138444, 17139604, -27072252, --34014532, -20715702, -1228898, 10255845, -7492034, 16633335, 31222802, -2196876, 22617298, 20567524, --31781684, -6337761, 8942659, -14926622, -13506598, -15674483, -52385180, -8929237, 22512608, 1894081, -45533632, 30320858, -22259742, 16029892, 126165, -15309948, -12950937, -25431038, -56633440, -30291330, -2166811, 862215, -12652974, -3546569, -6025839, 17902498, 18719614, 9584220, -3585761, 1175210, -14147085, -7321309, 8814884, -25704842, -12268574, -3599183, 13469017, -3806415, 5202816, 8636105, -8616778, 851477, 24211268, -19921668, -17880486, -18152680, 12519830, -11922292, -18668076, -18607408, -12677133, -6471979, -13660680, -7467875, 9476308, 1968706, 13974213, -24324010, -15863462, -3335042, --1761474, 4123706, 10830297, -5874442, -9630390, 15307800, -8556112, -10720238, -8988293, 14691473, --4293357, -9008694, 4414153, -1850594, -8582955, -799938, -11389180, -8104067, -5164698, -1768990, --3637301, 1419487, -2934000, 82678, -1082869, 716723, -5811091, -360240, -2148558, -273804, --3255048, -62277, -5091684, 467078, -3877819, 336081, -3296924, 321049, -1396401, 1210107, --2267206, 519691, -3026341, 12348, -3240553, -866510, -4192425, -593779, -3076270, -783832, --2767033, -638876, -1737314, -743029, -2878165, -489089, -1251983, -237834, -1704028, -77309, --2339684, -280247, -1575716, -784368, -981937, -636192, -1603633, -455803, -1211181, -1102196, --729071, -566936, -1012002, -377957, -969589, -6983617, -24307368, 1739999, 83454976, 20071456, -35704064, -18327162, -74075840, -39244188, -54263152, -19776176, 38222524, 84169544, 39097088, 8358007, --39521752, -39344584, 27919972, 41310068, 22078816, 50411640, -1153736, -34830036, -48302276, -25130390, --6586333, 37171332, 5720897, 21021180, 20746302, 2230699, 52177948, 34770444, -2919504, -5996311, --46127948, -12581033, 22012, -118648, 28041842, 47164648, 30562450, 22080964, 46337328, 25082072, --45988364, -38885560, -10770704, -30711164, 32465658, 20270636, 47538844, 35147864, 42174968, 11095511, -8332774, -34846680, -34272764, -34237332, 12771622, 15831249, 985695, -5566278, 74403328, 17506286, --3958349, -7986492, 51298016, -54562728, 12359842, -102933184, -21677774, 24439974, -34529388, 32212254, -19940996, -530428, 74345344, 33686504, -40446244, -83734144, -38656852, -38500088, -19218368, -14960982, --9553081, 35112968, 24101208, 47731044, 7010997, -36942624, -23586886, -38713224, -33911452, -35896800, -16564615, 2230699, 16401943, 19753092, -8633958, 18191334, 11360188, -14462229, -384400, -15909096, --3592740, -33177548, -32810328, -13776108, -13563507, -459025, -30644592, 15933255, -1050120, 4861366, -10190884, -22334366, -42841224, -40967008, -862752, 7711614, 10430865, 25202868, 7841537, -14225469, --23509578, 7208566, -8080444, -13438953, 6310381, -119384520, -72192496, -40111236, 35506496, 9510131, -162694432, 172609360, 105664784, 191458368, 157327872, 165532864, 115457312, 139977280, 114410416, 1617592, --53896472, -77961712, -74036112, -156113472, -186343600, -195622336, -135817600, -107627048, -41735808, 6955700, --54739360, 33214592, -69104952, -25645250, -4344360, -22010096, 16900160, -64315524, 88144544, 14474040, -80391048, 50872276, 30320858, 20380156, 44668196, 28321552, 45799920, 103909752, 99657200, 78623672, -97401808, 122196648, 112113680, 104817600, 193642352, 67280664, 136372720, 176667568, 122163904, 160429920, -85856936, 114169896, 90058488, 107139032, 116895592, 42634528, 75835160, 56688736, 71004936, 67791224, -19077170, -13871134, -73614664, -27907624, -98354216, -86814176, -145681536, -165876464, -166155104, -351912992, --297200992, -319987424, -316638400, -370377568, -373796384, -231253920, -268156288, -200403168, -236552848, -180594240, --170225664, -148993488, -148671904, -86150064, -37489696, -54989004, -54770496, -45528264, 8941585, 70666704, -37590628, 147844592, 128107600, 187028640, 193133936, 177332752, 222504544, 205272592, 238769584, 185783648, -228462736, 241082416, 270541600, 235679344, 141533136, 140538848, 141366160, 142544592, 132476656, 92199528, -87331184, 35435628, 25957172, -3813394, 4635344, 16865262, -48468168, -72948944, -77669112, -49035104, --42195368, -81222128, -92899072, -109922712, -78565688, -101880920, -92745520, -79727480, -83905408, -87261928, --85525144, -23619636, -19656992, -11857331, -18693846, 9898826, -1969779, -3438658, -17435420, -7825431, -7204271, 10196252, 4879083, 14689325, 12035572, 18049600, 1626719, 1876364, -1473711, 8926016, --681826, 2204929, 1800128, 5888400, 1277753, 1185411, -7686918, -220654, -1375463, 1868848, --4836133, -788663, 202937, 2099165, -3825742, -6979, -2946348, -535260, -6324340, -3790846, --4212289, -840740, -6054830, -4639102, -9749039, -3193845, -3563749, 140660, -4489315, -5297842, --10674067, -9229348, -12710419, -7653632, -10162429, -9287330, -13991930, -10663330, -11245835, -6436009, --8775155, -5345087, -7621957, -3775813, -4050691, 1909113, 3398393, 8987756, 7508677, 11869142, -11892228, 18670222, 19341848, 20696374, 19800336, 22946400, 20059108, 21065204, 17728552, 17413944, -12492986, 11454678, 5028870, 4989142, -250182, -1066763, -5357435, -3964792, -6171868, -4177930, --6397354, -3896609, -5478231, -2580202, -4044786, -1175210, -2981781, -365072, -2284923, 224949, --1702418, 750546, -1279363, 1044751, }, +-4303557, -6033356, 1952600, -2881386, -6213744, -3766150, 2638184, -7556458, -4388383, -9270150, +3137474, 4329864, 5217849, 3046206, -3418794, 7251516, -5004174, 1568200, 19864, -894964, +-5280663, -2509335, -5794985, 351114, -2537252, 3302293, 1971927, -2573759, -992674, -488553, +-5328981, -87510, -1284195, 2440615, -220654, 4833449, -1802276, 6081674, -2705293, 205622, +830539, -4217658, 2893734, -1204738, -1796370, 620623, -1303523, 2406256, -9237401, 4348655, +5360119, 894427, 2991982, 1796907, -4159139, -439160, -4502737, 6066105, -1702418, -3636227, +3477313, -5398237, 118112, 2195265, -6342056, 810675, -1575716, -2306934, 2027761, 525060, +458488, -2887829, -1989107, -9951439, -1324997, 2210298, -1696512, 528281, 1162862, 5369783, +4478577, 306016, 1443109, 679679, -908386, -706522, -1383516, -676994, -466004, -986232, +-955093, -6442, 941672, 680215, 627065, -1513976, -28991, -18790, -457951, -75162, +350040, -189515, 35433, -714038, -609885, -634045, -46708, -592706, 915365, 1206349, +1236414, -14256070, -8574902, 1585917, -4634807, 883153, -4781909, -8189966, -5459441, 9297530, +5405217, -1440962, 6291054, 1481764, 1541356, 1765768, -3058554, -832150, 5111548, -4123169, +2317135, 3732327, -4002373, -6320045, 2887292, -5166846, 566936, 2957622, 7577396, -1712618, +-3666292, -3203509, 1173063, 4123169, -5614059, -49392, 4602058, 1813013, 476205, -308164, +-441308, 5986111, -238371, 5483600, 3596498, -1397475, 3583077, -1269163, -337692, -565325, +-10028749, 3462281, 5651103, -3282429, -1879585, 1374390, 1529008, 1602023, 871878, -551366, +-1222455, 331786, -2533494, 6851547, -3089692, 790274, 3710852, 2969433, -2467459, 2700461, +841277, 1756105, 3747359, 3312494, -4991826, 5143760, 5692979, -1945620, 79994, -369367, +3711389, -4573067, -2392834, 994285, 634581, 166967, 228170, -979253, -1553168, 911070, +-744640, -398895, 246424, 1300838, -989990, -235686, 9127, -1797444, 590558, -1068373, +-1120987, -867583, 648540, 90194, -536871, -1076426, 232465, -5650567, 7225746, 4728759, +11179263, -1854352, 1204738, 3424163, -5425081, -1125281, 2172180, -2241973, -7369627, -436476, +804233, 4953708, -5950141, -14557255, -11745662, -7238631, 2811593, 6925098, -6956774, 3922379, +-3405372, 5351530, 4168803, 3628174, 6424734, 3575024, -5015448, -4638565, 883153, 3432216, +-252866, 295816, 8982924, -67109, 1573569, 4469987, 4726075, 785442, 145492, 11095511, +-765578, -4162897, -1242319, 2523293, 3246459, -2148021, 5974300, 1173063, 3212636, -4264366, +-3769908, -1453846, -2488397, 1447941, -1971390, 6497749, -7483981, -6688338, 8116415, -847182, +-327491, -9418863, 2939905, -4566624, 5095979, -3917547, -10423886, -476741, 5380521, -4465692, +6951405, -4172024, 3207267, 6485938, -1823214, 2714956, 6536940, -424128, -4807679, 406411, +3198677, 1480690, -2321967, 4498442, 308701, 2373506, 902480, 648540, 1711545, 311385, +-668941, -44560, 245887, 690416, -1804960, -919660, -936840, 1729798, 217970, 1763084, +1840930, -1699733, 428423, 449898, -972810, -726386, -340913, 335007, -881542, 367220, +-921807, 17395154, 4096325, 4641249, 1990181, -3970161, 8346732, -3944928, -2364916, 10625212, +-800475, 8546448, -902480, -9758703, 3453154, -3305514, 10772852, 5680094, -752693, -9637907, +-6747394, 8920110, 10567767, -12328704, 6180995, 4954782, 3715684, -798327, 1196685, 1037772, +-937914, 12225624, -556735, -2085744, -3370476, -4090956, -5231270, -1717450, -280247, -7033546, +-2509335, 1844152, -4907537, 279173, 280247, 7317551, -2744484, 235149, 3398930, 294742, +6987375, 3161096, 7264937, 3599183, 2210835, -7679939, 805843, -5689221, -5326833, 1279363, +7408819, -284005, 6362457, -2662880, -4815195, -1112397, 302795, 1878511, 4367445, -2015413, +-42950, -2385854, 2438468, 1676111, -6271189, 1224603, 1297080, 836982, -1768453, 6562710, +-700617, -1277216, 697932, 3081639, 1346472, -2150168, -701690, -869194, -1582159, 1291711, +-1890323, 3097208, -1872069, -365072, 370441, -1459752, -425739, 1722282, -2031520, -460098, +-2186675, 849867, 905164, 1757179, -2388002, 475131, -981400, 1206886, -819802, -2849174, +-923418, 4906464, 3438121, 3945464, 11186242, 5852967, -4854924, -4340602, -12040404, -782221, +-267899, -6425271, 2442226, 9662066, 1170916, -7612830, 7068980, 6717329, -700617, 2685428, +6808060, 1613297, -6186364, -955093, 14424648, 7095823, 1491427, -9516574, -3406983, 8680666, +2986076, -1297080, 4887673, 4370129, 4576288, -37044, 8952859, -81604, -1149441, 2255932, +-4449049, -5828808, -295816, 985695, 3327526, 1827509, -5447629, 5530308, 9706626, 4982162, +-268435, 7208566, -8210904, 4680978, -4893042, 5143224, -1373316, -5908802, -302795, -7697119, +-12600360, -4600447, -5009006, -616328, -56371, -6598144, 1276142, -2029372, 3823058, 2522220, +4528506, -725850, 1820529, -6353867, 1097364, 1002875, 8847096, -3422552, -282394, -3076270, +1865626, 7956427, 4087198, -4626217, -7397545, 2333778, -2961380, -1017907, 3843996, -548145, +1289027, 900869, -4407174, 206158, -3364033, 951335, -3195993, -2153389, -1167694, -137976, +-434329, 576599, -2049236, -216896, -693637, -1634772, -1381906, 486405, -363998, -849867, +212601, 752693, 2442763, -872415, 1426466, -1064615, -2472291, 1822677, -2704756, 2588255, +-251256, -1746978, -302258, 858993, 1893544, -1408749, -192737, 403190, -485331, -11795591, +-7793755, 16679505, -3645890, -3663607, 984621, -587874, 17891224, -5231270, -9644349, 233002, +-9513889, 2370822, 7598871, 8159901, 2587181, -16603270, 13653164, -10744398, 5714454, -7346005, +-5574331, -4113505, 6820945, 7323993, -10976863, 867047, 4805532, -3411815, 2208150, 3221762, +-3962644, 505196, -9038759, -6082748, -13955422, 8266202, -1944547, 14074071, -6549289, 3052648, +9409200, -2351495, -2783139, -4164508, 10782515, 7863548, -13219372, 3770981, -7472706, -2515240, +-2896956, -7432441, 4472135, 2363843, 11659226, 8196408, -14624364, -2401961, -6276558, 8546985, +2984466, 732829, -8529268, 1276142, -889595, 7182259, -1191853, 896574, -9811853, -227096, +6980933, -6433324, 1087164, -2032056, -1909113, -5200132, 1053341, -687195, 12368969, 5448166, +5660767, -2266132, -1374390, -2150705, -3361349, -1809255, 2763812, -3786014, -1198296, -3713536, +2811056, 2353642, -2013803, -1138166, 2613488, -3496104, 1736777, 529355, -935229, -1112397, +940598, -99321, -314069, -672162, 2284386, -3372086, 450972, 302258, 1710471, 1845762, +1850594, -1711545, 507880, -1207960, 2470680, 678068, 586800, 1806571, 4070019, -4483946, +307090, -9453223, -1181653, -10908680, 1707786, -2732673, 6262599, -440771, 5313949, -7471633, +-14066555, 2986076, 9467719, 1237488, -1139240, 7384123, 4971425, -11502996, -181462, -4335233, +14567992, -644782, 1699733, 1147830, 153545, -452045, -5221070, 11547020, -976031, -16356846, +-3067144, 9921374, -6383395, 1660542, -255014, 1332514, -2042794, 1586990, -3003793, 3919158, +-6269579, 5919539, 8298414, -6491306, -1650878, -3838627, -11387032, 4571993, -8082055, 7051263, +-7102802, -12284143, -3352222, 7319161, -2275259, -4380330, 4893042, 6769942, 3873524, 7419019, +12678207, 10218264, -649614, 2000918, 1736777, -6783364, 1305133, -7093139, -7736310, 4242891, +-5899138, 1939178, -340376, 4472672, 4537633, -5861020, 6840273, -1851131, -2790655, -1241246, +4813585, -863825, -4424353, -3004867, -6270116, 7201050, -3592203, -922344, 1249299, -276489, +-2648921, -2244121, 494995, 973347, 326954, -1233193, 1670742, 1242856, -1399086, 153008, +1080721, 677531, -846645, 4295, -1141388, 476205, -1919850, -1755031, 1109175, 580357, +2404645, 2643552, 239444, 1827509, 39192, -102005, -16072304, -13477607, 7867843, 14402636, +24696, -852551, 2774012, -6925635, -3330210, -16646219, -8836895, -4716411, -132070, -12108050, +17340394, 3441880, 9659381, -11038603, -13150116, -9907416, -3839701, 2636036, -14932528, -6694244, +6938520, -2965675, -18168786, -6167573, 2462090, 191663, 11288785, 3792456, -3534758, -8623221, +10737418, -6228240, -619012, 8085276, 2399813, -8806830, -4514548, -685584, -14711874, 3704946, +11451457, -4984310, -6310918, 1667521, -7442642, -2753074, 1487669, -4750234, -3621731, 3877282, +-5545877, -11743514, 5813775, -6698002, -8747238, -12033961, -6004901, 1196148, -4793721, 1996623, +14811195, 8356396, -1787780, 14105209, 14343043, -6206765, 2009508, 3977677, -7406671, -4820027, +-15704548, 1619203, -5017059, -12713640, -107911, 6693707, 11851962, 7281044, 3495567, 1320703, +-10662793, -1339493, -2413772, 2800856, -4016868, -467615, 277025, -153008, 2601140, 499290, +-939524, 2295660, -920734, -3367791, 2741800, -2257542, -2991982, 460098, 1142461, 1014149, +272194, 3281892, -301185, 2100776, 1263794, 251256, 696858, -18790, -2517388, 575526, +-3473555, 814970, -5568962, -1394791, -212064, -3694209, -4356708, -575526, -4306779, -807991, +-891206, -4952634, -10247255, 26097296, -1032403, 16005196, -8054138, -22831510, 6519224, 1985886, +-907312, -10693395, -1053878, -7036767, 18090940, 13273596, 11837467, 8679592, -14194330, -63888, +1943473, 12617540, -21546240, -2424509, -5279052, -6275484, 3228205, -7077033, 2758980, 4816269, +3560528, 3852586, 4986457, -1480153, -2125472, -10457708, -2500745, -1583232, 10281615, 15569, +-9422621, -2199023, 11188927, -1288490, 6507949, 8383776, -6072010, -3576097, -13879187, -8050916, +27151710, 7166690, 12081206, 6507413, 1570884, 1034013, -17212618, 10212895, 1610613, 3006477, +8784282, 9594957, 14918569, -17163226, -7094212, -9519795, -1205275, 2393908, -2269353, -4802311, +-2819646, -14392972, -18103288, -11745662, -16966194, -2191507, -11089069, -18985366, -8029442, 6184216, +10406169, -3946538, -16245714, -565862, -2452963, 3859565, -4466229, 1057099, 9339943, 441845, +-684510, -568009, 1190243, 1655173, -2757906, -2469606, -6527277, -7306813, 3900904, -1996623, +3491272, 3168612, -1188632, 2161979, 2880313, 5272609, 3735011, -2274722, 1159641, 6716255, +1294933, -6766184, -5601174, -3048353, -1410897, 523449, -2379949, 3894462, 4286378, -1016834, +6466610, 865436, -1796907, -1372242, 1507534, -3733400, 35032436, 7936026, -5062156, -7266548, +1120987, -11239929, -21977884, 16181826, 68719, 10417443, -7873212, 7539278, 17986786, -1770600, +2006824, -4520990, 15656230, 13191992, 5115306, -21204790, 1535988, 3132642, 13112535, 19092740, +-5631776, -3893388, -2522220, 5128191, 6815040, 5677410, -9648107, 4422743, -11121281, 8522826, +11363410, -5417565, -11247982, 7116224, -12239583, -11187316, -467078, 3265249, 15953119, 1938104, +-2182917, 13601625, -2517925, 12219182, 22558778, 11318313, 260382, -14310294, -1359357, -8237748, +-6683506, 14423574, 5634997, -14512158, -165893, -11091216, -2811056, 19117974, 8791798, 2798708, +8185134, 11520176, 5971079, -15391552, 7945153, 12866648, 4412005, -10514080, 4346507, 1235340, +2209224, -8224326, 12712566, -3484292, -3047816, 15292231, 16200617, 2401961, 4615479, 17620104, +1042603, 8706436, -6167036, -173946, 10149545, 5890011, -4483409, 5250061, 9162776, -2463701, +83215, 11684995, 2420214, 4984310, -3443490, -5815386, -1758789, 3275986, 1707786, 2704756, +2771328, -1888175, -1810866, -1495186, 913754, 3519726, 4242354, -2815351, -838592, 7295539, +1082869, 9774272, -1736241, 2680597, -1305670, 1275068, 4409858, 2709051, 375810, -39192, +-4108673, -2869038, -2067490, -4385699, 5634997, 5064840, -8513162, -440771, -10876468, -25597468, +8840653, -10202695, 2830384, 896574, 17935784, -12366821, -10931766, -4601521, -5004174, -6615860, +13245679, -11752104, -16581258, 4945118, -30982820, 897648, -5842230, -13113609, 16653736, -1079111, +-994822, 7000260, -6614787, 5258114, -1686848, -18512382, -20208358, -213675, 4251481, 11825656, +5704254, -1360431, -2144263, -11646878, -5526549, 11669963, -18285824, 25195352, 14955076, 3356517, +18622978, -12455405, -5349919, -11404212, -11668889, -5050345, 8492224, 23791972, 191663, -12311524, +-2092186, 1147293, -1352915, -1287417, -7586523, 6405407, 5871757, 16034187, -321049, 18131204, +9324911, 4971962, -482110, 3856344, -27131846, 14277545, -3478924, -15875273, 11286637, -28991, +14865956, 6596533, -25149182, 19472844, 15180562, -13158169, 21120502, 8126615, 15769509, 6250788, +-2234994, -896574, -702227, -2975876, -5571110, -1712081, 2299418, -5550709, -8457864, 61740, +-5531918, -9906342, -5947456, -7423314, 4655745, -4568772, 5734855, 1530082, 5851893, 2773475, +-690416, -3169149, 973347, 548145, -488016, 808528, -1784559, -4118874, 1940252, -389231, +2376728, 2599529, 69793, 2195265, 993748, 3795141, 3236795, -5971615, -3610457, -5356361, +-9992778, -7022272, -48070348, -3587372, 28226526, -5126044, 673773, 24903294, -5932424, 382789, +2855617, 6708202, -7636452, 6691559, -2743947, -8194261, 7817378, 9510131, -28175522, 3388192, +-25096568, -597000, -13092134, -13999446, -3273302, -4156992, -13858786, 6921340, 2071248, 8710194, +11593727, -16922172, 21184926, 1543504, -20194400, 1708860, -14001593, -6912750, -15046881, -13462575, +-6030134, 14230300, -12401181, 6808597, 14149233, -8545911, -15495705, -14061186, -20884278, -22264574, +-13302051, -6306086, 1542430, -3329137, 5951751, 4270271, -13429289, -927176, 14682346, 8586713, +-22192096, 8672076, -1875290, -6089190, -20580410, 13789529, -7517804, 19017042, 23802708, 660351, +22626962, -12537546, 13033615, -9863929, 14029511, 18163416, 1355599, -23848342, -956704, -32556926, +10330470, 7078643, 12716861, 6161131, -12992276, -11081016, -432718, -7426536, 7144678, -8036958, +-499290, -486405, -8235063, -6259915, 5278515, -3127810, -9289477, -852551, 2598992, 6765647, +3400004, 14664092, -1746441, 1242319, -4589173, 10286447, -1680943, -2223719, 8792335, -493384, +1121523, 2149094, 11928735, -1952600, -5177046, 1262720, 8165270, 7936026, -8224863, -775778, +5312338, -9257265, 4938139, -1494112, 6391448, 392453, -8115341, -4387846, 3613141, 4138201, +4905390, 3743064, -22801444, 18434536, -43478492, -2560338, -4169876, -3614752, 4002910, -24934432, +1716376, -4902169, -2164664, 11402601, 4448513, 13265543, -10270341, 9393093, -4920959, -22145388, +-8965744, -16249472, -10151155, 10748693, -19391240, 2558190, -7205345, -14634027, -2651069, 14361834, +-19276886, -18478560, 7544110, 11154030, -656056, -8722005, 10343892, 11003169, 13392782, 11608223, +4763119, 15877957, 18735722, -10039486, 2781528, -8847096, 23514946, -1865626, -16324097, 19685446, +8584566, 4766340, -9360881, -12345883, 2864743, 7525857, 7488813, -613643, -10283762, 7841537, +-11970074, 391379, -11812771, 36424544, 5582384, -10408316, 29843580, -3608846, 9107478, -7693360, +14973330, 22360136, -13892072, 21363168, 22586696, 29582660, 22646826, 2167885, 16810502, -13151727, +-2639258, 3219615, -7350300, 13088376, 552440, -792958, -1335735, -3750580, 6320045, 3255048, +17863842, -5822902, 6579353, -3892314, 79457, 3417183, 5244155, -7499013, 2748779, 7536594, +-3287261, -8422968, -1676648, -13539348, 4667556, 4275103, 3650722, -3537979, 2217277, 7173133, +3991635, -1680406, 6815576, 3118683, -4488778, -2228551, -1458141, 11232950, 14530948, 7793218, +3338263, 2663954, 4958540, 8696235, -5807870, -2282775, 3892314, -863825, 780610, 4040491, +-3461744, 44935560, 11553462, -7482907, -6664716, 10554882, 2873333, 4584878, -1170379, -17749490, +14952392, -40715216, 4407174, 9126806, -1868848, -7318625, -15724949, -7046968, 1821603, 12267500, +18485540, -10820633, -23837068, -19084150, -2779381, 854699, -14069776, 28985124, -13498545, -8667244, +11863237, -3910031, 2098629, -2443300, 24705188, 4273493, -24856586, 9971840, 3103651, 17313014, +-6171868, 1999307, -10302553, 8669928, 3741990, 21787296, -5313949, 9907416, 10233296, -12949863, +-14463839, 1163399, 13109851, -25349970, -30175366, -8737574, -12411919, -1495186, -4403415, 3129958, +6805913, -5980742, 1005022, -34675956, -29591250, 23640574, 24950538, -30020210, -23194970, -28889024, +-15211164, -11889006, 15017353, -15716359, -27998892, 943819, 1187559, -16995186, -3665218, 24488830, +-3693672, 1474248, 7818451, -130997, 1376537, -956704, -8644159, -10586021, -593242, -2922188, +6995965, -1014686, -690953, -7634841, 3869766, -11874511, -297963, 3775276, 3963181, 5874979, +6514929, 1321776, 3685082, -2559264, 606127, -5996848, 2209761, 720481, -6900939, 7169911, +7055021, -10987063, 679142, 8196408, 6681359, 12611098, -2597918, -14446659, 4041564, 4846871, +-7176891, 4709969, -7989176, -3673271, -1235877, -2441689, -6781754, 2551748, -24827596, -3143916, +-5927055, 7402913, -11701638, -3310346, -38659000, 34237332, 22174380, -3817152, 47195248, -4711043, +-25704306, -2464774, 10687489, -16042777, -20939040, -4506495, -14253386, -754304, 4127464, -21711060, +31878858, 986232, 3543348, -20032264, -5625334, 2083059, -5575405, 5026186, 7364259, 26037166, +4809827, -1397475, 21229486, 17342542, -6029061, 10205379, -13183939, 3701188, 11942693, 11416560, +29656750, -29233158, 18080738, 54069880, 543313, 8834748, 18670222, 2067490, 3837017, 8696235, +6896107, -18133888, -21398600, -7883413, 17497696, 5124970, -22238266, -12177843, -816044, -10801843, +20088098, 1789928, 15555298, -34207804, -20995410, 9927817, 23613194, 14321032, 9620727, 32458678, +19160386, -13678934, 22565758, -16895864, -3249143, -2454574, 12771085, -2679523, -13777181, 12104292, +5472325, 1135482, -15822660, 11071889, -48855, 193810, -6950868, 9330816, -7429757, -6176700, +-5647882, 4440460, -5899675, -11748883, 4145180, 811749, 128849, -6397354, -1028108, -8006893, +-6630893, -6403796, -3813931, -2473364, -2782065, -2436857, 1360431, 228170, -14920180, 10183904, +4248797, -4785668, -10969883, -15966004, -141197, -8691403, -5610301, 5783174, -3952444, 9912785, +5201743, -3469797, 2001455, 9279277, -3878892, -1513976, -4154844, 7831336, 2143726, 3276523, +-7584376, 16019691, -45107896, 959388, -308164, -1445793, -5730023, 21066278, 1656784, -12120935, +-22626424, 22896470, -20347408, 531502, 14673219, 11829414, -16007343, -4274030, -25764436, -106837, +7328288, 8987219, 10375030, 2750390, -16799764, -20876762, 17131550, 8881992, 8504572, 3380139, +8651675, 2625299, 12597139, -22512608, -38186556, 10590316, -5818607, -8102456, 21208012, -3710315, +-11403675, 18824304, 17671642, 14749991, -1427003, -9571335, -16472810, -4219806, -21766358, 51015620, +-4421132, 18382996, 3868692, -16916802, 13830868, -6459094, -16309601, 15950435, 12570832, -28033788, +19486804, -2972117, 27059368, -27431420, -20794084, 27704150, -1210107, -22395034, 22818624, -8382703, +39030516, -16583942, -13514651, -23592792, 14919106, 2793876, -19287088, 7683697, -25045564, -18210124, +1571421, 16216723, -14395657, -8743480, -28436978, -25687126, 30107720, -3458523, 13086228, 21195126, +28566364, 164283, -2956011, -2193655, 7504919, 11523934, 2092186, 5304822, 17577154, 7756174, +9666898, 5797669, 4377646, -3417183, -1676648, 10882910, 8223789, 14253923, -6764574, 9409736, +9860708, -15477452, 3929895, 3947075, -8483634, -4279935, -47782, 3954054, -6894497, 11230803, +596464, -2532420, -3209414, 9543954, 343061, 3016141, 852014, 2719788, 2139968, -8626979, +-4333085, -6433324, 782221, -75162, 4756677, 6197638, -5541045, -12905840, 33430952, -7626252, +22633404, -35421132, -6245420, -822486, -42293080, -9296994, 6096169, 20762946, -10429791, -9920838, +893353, -3270081, 29644938, -2834679, -14949171, 31459024, -3935264, -1634235, 5907191, -12582107, +27166206, 1787243, -5582384, 13019120, 11131481, -14853608, -5120138, -6898255, 21146272, -42341936, +-756451, -8220568, -14972256, 7237557, -15222975, 24634858, -6494528, -30515742, -3196530, 46335180, +-28142774, 20296942, -31372588, -9035001, 31181462, 22795002, -16859894, 7905961, -20555714, -26996554, +5722507, -11879880, 11742977, 3386582, -1907502, 4578435, -39545376, -15469398, -20169704, -28904594, +13403519, -10982231, -8064875, -16034724, -28101972, -23629300, 18482854, -3709778, 57686780, 10104447, +5310190, 20593294, 36273148, 4734665, -26200912, 31826782, 24077050, -20378546, 5369783, -5178657, +-20304458, -16004659, -13727789, -1593970, -12533788, 4679367, 8475044, 2937221, -9771051, 16919486, +2618320, 7793755, -2345052, -3001645, 8006893, 4873714, -8149701, -7355132, -7048042, 7729868, +3680250, 9347996, 9939091, 327491, -5374078, 7504382, -4343286, 16165720, 7662222, -19564650, +-3879966, -14453639, 1710471, -4792110, -6980933, 20237350, -1121523, -6424734, 5171678, 6274947, +-7439420, -1611687, -10222022, 4406637, 7323456, -1548873, -3256659, 1018444, -6892886, -1950452, +-1102196, 9410810, 22501334, -13341242, -16915728, 19013284, -30223684, -3605625, -6158983, 1739462, +21436718, -14017163, 23783382, 10110353, 5483063, 7039452, -38565048, 26234198, 5011153, -27226872, +10755672, -28876138, 5035313, 38679400, -4684736, -22938884, -24263880, 10386842, 17708688, 14176613, +7698729, -25550760, -17351668, -7927973, -4602058, 33048700, -20787642, -12575664, 49386220, -27374510, +-1949915, 19502910, 259309, 20547124, -2829310, -16590922, -10934987, -30141006, 15573015, 21423296, +-31957778, 48063368, 16201690, -36254892, -32861868, -31532576, -37575596, -30562450, 1793149, 15093589, +3190624, -25464862, -9406515, 16997334, -219043, -15952582, 17799418, -34273304, 2433636, -7890392, +-31425738, -29571386, 5387500, -11766600, 22635014, -41004052, -5240934, -14523969, -29744260, 2052994, +48631376, 12399034, -21100638, 10391673, -26040386, 10690174, -10394895, 932545, 1757715, 13690208, +-1148904, 4684199, 17551920, 183073, -9212168, -4390531, 14150307, 9782325, 6708202, 3382824, +-26776974, -2756832, 2415919, 15202574, 7969849, -14057428, 114354, 1617055, 24091008, 1329829, +8010114, -7320772, -4261682, 3504157, 8152385, -964757, -6569690, -13294534, 2391223, -5031554, +-8749922, 4543539, -5957120, -6561100, 9649718, -7358353, -10130217, -14671071, -12486544, -2388539, +4336307, 64425, -10765872, 9419937, 23890756, -59210420, -53983980, -47558172, -30081950, 11886322, +-12504797, 60175176, 16362215, -6925098, -13562970, -8123931, 17485886, -39906152, 46476376, 60589640, +24577950, -4182761, 48570176, -15826418, 29474214, 54989540, -9870909, 2537789, 10646687, 73330128, +-18495202, -5206037, 44123272, 16099685, 14326937, -12671764, -44817448, 2530810, -35489852, 16438987, +-44033080, -52374980, -450972, -3576097, -35990752, -2539400, -17435420, -37691024, -29479582, -48998596, +-2179696, 48686140, -15633681, -10130754, -45400488, -25074556, -16669305, -16319265, 15475841, -11871826, +82228760, -20180978, -1085553, -30746598, 62051540, 50191524, -36003636, 40662604, -14478872, -61022896, +-10763725, -6590628, 12670690, -14817637, -13695040, -8398272, -24458766, 6229313, 30184494, -36581312, +-5134634, 9476308, 6200322, -42374148, 26922466, 18172006, 62221192, -27435714, 17004312, 25428354, +-1662689, 6375879, -916976, 8240432, -7030862, 19377282, 8438000, 15550466, 13837311, 435402, +14245870, 3770981, -5527623, 14439680, -1061394, 1847373, 1493038, 9872519, 7635915, -11862163, +-8917963, -14872935, 21447456, -15336254, 3029563, 12566537, 5393942, 23354422, 20456930, 35152160, +24322936, 19665044, 1184337, 12704513, -19060528, 16595217, 12690018, -4949413, -18347564, -34833796, +-13553843, 9183714, -19253802, -7859790, -14055817, -34166464, -29232084, -14479945, -21832392, -13649943, +-18838264, -24445344, -25312926, -8628052, -7490960, -12050068, -18683108, -10973105, -16718160, -12257837, +-13703093, -4560182, -6568079, -5917928, -7117298, -6387690, -9249212, -5163088, -18581640, 24885040, +104487968, 12195560, -65514896, -16246251, -23169202, 5046587, 32613298, 58655296, 16750909, -49192408, +-950262, 34086472, 7393250, 770410, -1538672, 8917426, -4715337, -5952825, 40475236, 25402584, +22601728, -34395172, -22351010, 23452668, 9043591, 13856638, -11962558, 4336307, 45090716, 1083406, +38227892, 20122996, 20841866, 37402724, 5388574, -19834696, 4562866, -22719304, 5668283, 15835544, +3987877, 61139396, -20449414, -39417600, -38038916, 47212964, 21731460, 25138444, 17139604, -27072252, +-34014532, -20715702, -1228898, 10255845, -7492034, 16633335, 31222802, -2196876, 22617298, 20567524, +-31781684, -6337761, 8942659, -14926622, -13506598, -15674483, -52385180, -8929237, 22512608, 1894081, +45533632, 30320858, -22259742, 16029892, 126165, -15309948, -12950937, -25431038, -56633440, -30291330, +2166811, 862215, -12652974, -3546569, -6025839, 17902498, 18719614, 9584220, -3585761, 1175210, +14147085, -7321309, 8814884, -25704842, -12268574, -3599183, 13469017, -3806415, 5202816, 8636105, +8616778, 851477, 24211268, -19921668, -17880486, -18152680, 12519830, -11922292, -18668076, -18607408, +12677133, -6471979, -13660680, -7467875, 9476308, 1968706, 13974213, -24324010, -15863462, -3335042, +-1761474, 4123706, 10830297, -5874442, -9630390, 15307800, -8556112, -10720238, -8988293, 14691473, +-4293357, -9008694, 4414153, -1850594, -8582955, -799938, -11389180, -8104067, -5164698, -1768990, +-3637301, 1419487, -2934000, 82678, -1082869, 716723, -5811091, -360240, -2148558, -273804, +-3255048, -62277, -5091684, 467078, -3877819, 336081, -3296924, 321049, -1396401, 1210107, +-2267206, 519691, -3026341, 12348, -3240553, -866510, -4192425, -593779, -3076270, -783832, +-2767033, -638876, -1737314, -743029, -2878165, -489089, -1251983, -237834, -1704028, -77309, +-2339684, -280247, -1575716, -784368, -981937, -636192, -1603633, -455803, -1211181, -1102196, +-729071, -566936, -1012002, -377957, -969589, -6983617, -24307368, 1739999, 83454976, 20071456, +35704064, -18327162, -74075840, -39244188, -54263152, -19776176, 38222524, 84169544, 39097088, 8358007, +-39521752, -39344584, 27919972, 41310068, 22078816, 50411640, -1153736, -34830036, -48302276, -25130390, +-6586333, 37171332, 5720897, 21021180, 20746302, 2230699, 52177948, 34770444, -2919504, -5996311, +-46127948, -12581033, 22012, -118648, 28041842, 47164648, 30562450, 22080964, 46337328, 25082072, +-45988364, -38885560, -10770704, -30711164, 32465658, 20270636, 47538844, 35147864, 42174968, 11095511, +8332774, -34846680, -34272764, -34237332, 12771622, 15831249, 985695, -5566278, 74403328, 17506286, +-3958349, -7986492, 51298016, -54562728, 12359842, -102933184, -21677774, 24439974, -34529388, 32212254, +19940996, -530428, 74345344, 33686504, -40446244, -83734144, -38656852, -38500088, -19218368, -14960982, +-9553081, 35112968, 24101208, 47731044, 7010997, -36942624, -23586886, -38713224, -33911452, -35896800, +16564615, 2230699, 16401943, 19753092, -8633958, 18191334, 11360188, -14462229, -384400, -15909096, +-3592740, -33177548, -32810328, -13776108, -13563507, -459025, -30644592, 15933255, -1050120, 4861366, +10190884, -22334366, -42841224, -40967008, -862752, 7711614, 10430865, 25202868, 7841537, -14225469, +-23509578, 7208566, -8080444, -13438953, 6310381, -119384520, -72192496, -40111236, 35506496, 9510131, +162694432, 172609360, 105664784, 191458368, 157327872, 165532864, 115457312, 139977280, 114410416, 1617592, +-53896472, -77961712, -74036112, -156113472, -186343600, -195622336, -135817600, -107627048, -41735808, 6955700, +-54739360, 33214592, -69104952, -25645250, -4344360, -22010096, 16900160, -64315524, 88144544, 14474040, +80391048, 50872276, 30320858, 20380156, 44668196, 28321552, 45799920, 103909752, 99657200, 78623672, +97401808, 122196648, 112113680, 104817600, 193642352, 67280664, 136372720, 176667568, 122163904, 160429920, +85856936, 114169896, 90058488, 107139032, 116895592, 42634528, 75835160, 56688736, 71004936, 67791224, +19077170, -13871134, -73614664, -27907624, -98354216, -86814176, -145681536, -165876464, -166155104, -351912992, +-297200992, -319987424, -316638400, -370377568, -373796384, -231253920, -268156288, -200403168, -236552848, -180594240, +-170225664, -148993488, -148671904, -86150064, -37489696, -54989004, -54770496, -45528264, 8941585, 70666704, +37590628, 147844592, 128107600, 187028640, 193133936, 177332752, 222504544, 205272592, 238769584, 185783648, +228462736, 241082416, 270541600, 235679344, 141533136, 140538848, 141366160, 142544592, 132476656, 92199528, +87331184, 35435628, 25957172, -3813394, 4635344, 16865262, -48468168, -72948944, -77669112, -49035104, +-42195368, -81222128, -92899072, -109922712, -78565688, -101880920, -92745520, -79727480, -83905408, -87261928, +-85525144, -23619636, -19656992, -11857331, -18693846, 9898826, -1969779, -3438658, -17435420, -7825431, +7204271, 10196252, 4879083, 14689325, 12035572, 18049600, 1626719, 1876364, -1473711, 8926016, +-681826, 2204929, 1800128, 5888400, 1277753, 1185411, -7686918, -220654, -1375463, 1868848, +-4836133, -788663, 202937, 2099165, -3825742, -6979, -2946348, -535260, -6324340, -3790846, +-4212289, -840740, -6054830, -4639102, -9749039, -3193845, -3563749, 140660, -4489315, -5297842, +-10674067, -9229348, -12710419, -7653632, -10162429, -9287330, -13991930, -10663330, -11245835, -6436009, +-8775155, -5345087, -7621957, -3775813, -4050691, 1909113, 3398393, 8987756, 7508677, 11869142, +11892228, 18670222, 19341848, 20696374, 19800336, 22946400, 20059108, 21065204, 17728552, 17413944, +12492986, 11454678, 5028870, 4989142, -250182, -1066763, -5357435, -3964792, -6171868, -4177930, +-6397354, -3896609, -5478231, -2580202, -4044786, -1175210, -2981781, -365072, -2284923, 224949, +-1702418, 750546, -1279363, 1044751, }, }, { { 5495411, -107911, -2041183, -466004, -4917201, -3379603, 2188286, 194347, -3094524, 3853660, 2585570, --834834, 237297, -522375, 3105261, -4303021, 1620276, 3226594, 2850248, -6192269, -4335770, --3074660, 4167192, 1010928, 1365263, -1721745, 4445291, 1671816, -1093606, 122407, -1256278, -876173, 1671279, -980326, -1267552, -3723200, 3978750, 6618008, 791885, 4206384, -768799, -853625, 1518808, 1834488, -5004174, 361851, -5228049, -1193464, -731755, 1658394, -2631741, --76773, 1158567, 537408, -3043521, 130997, 357556, 2510945, -3236258, -4063576, -537945, -5541045, 8881455, 30602, 1464047, 629213, -1889786, -5317170, -1345935, 3732864, -1690607, -3718368, 1446867, 3787088, -193274, 1483374, 1347546, -3165928, -4292820, -434865, 1638530, -2491618, 1211181, 1125818, 753230, 853088, -1462436, -2328946, -1588064, -1257352, -600759, -68719, -871342, -96637, 802622, 1296006, 1137630, -151398, 94489, 781147, -1611, --903554, 2574296, -5616207, -1210644, -5328981, 3103651, 289910, -2379412, 11197517, -4343823, --8112657, 666794, 3681861, -628676, -6117644, -1675574, -2688113, -941135, -2928094, -893890, -4121558, -240518, -2774012, 4839355, 652298, 4702453, -1288490, -1090385, 1737851, 172872, -2032593, -819802, 4337917, 7223062, -2026688, -4769561, -3583077, 3010235, -58519, -10990821, --1098975, -4348118, -1687922, 5458904, -3823595, -2814814, 3679713, -2384781, -581968, 5011153, -1662152, -3856344, 1703491, -2762201, -6570763, 2139968, 2512019, -4897874, -2914135, -1376537, --2129230, 10201, 2076617, 3438658, 5075578, 5783711, -1413581, 643171, -2306398, 2527588, -1527398, -1214402, 2352568, 3737159, -3558917, -1733556, 548682, 129923, 1372779, 4285841, --577136, -1072131, 3788161, 622770, -2700461, -1603097, -244276, -1570347, 1130113, -615791, --1510755, 663036, -1708323, -1250909, 787053, -1612760, -1174137, 111669, 1071594, -2010045, -199716, -440234, -761283, -935229, -131533, -1553168, -497679, -1483911, -9034464, -4620848, -2804077, 3991098, 1585380, 4332012, -3701188, 4535486, 5610838, -1589675, 6207839, -862752, -4578435, -2184528, 162135, -1960653, 5849746, 2257005, -213675, 5188858, -2749853, -2218888, -3833258, -9060770, -1551557, 479426, -1902134, -8075613, -4900558, 3329674, -3134789, -2115808, -139586, 6292664, -1490891, -4427575, -324270, 1610076, 3590593, -554588, -5693516, -3698504, --1027034, -2942053, 976031, -4989679, 2498060, -4694936, -6858526, 209917, 2440078, 2789581, --2175938, -1591822, -4491462, 5835787, 3407520, 806917, 87510, -171262, -1956895, -1072131, -2005750, 2488397, 8849243, -1000727, 2250026, 572841, -234613, -4324495, -3251827, 5972689, --2540473, 583042, 1515050, 860604, -907849, 4514548, 271120, 161061, -4871567, 4735739, -2690797, -1835562, -1058173, -534187, -1391569, 652298, 3451543, -48855, 1391569, 1032940, --445603, 791885, 1800665, -185220, 37581, 542777, 858457, 707596, 1044751, 1827509, -720481, -1340030, 1442035, 652835, -949188, -771484, -122407, 211527, 27380, 2218888, -2672544, 2435247, 5738613, -3802657, -5739150, -4591320, 2859911, 6393059, -1224066, 4899484, --4384625, -5273683, 4329864, -2189897, 409096, 1639604, 5433671, 2040646, 8653822, -3784403, --4684736, 2035815, -2617783, -2420751, 4881231, -7691213, -4794794, 772557, -1538672, 3505230, --2665027, 964220, 6132140, -5761699, 4246649, -3479461, 2731062, -3260954, -983011, -530965, -6352257, 1199907, 169114, -4699768, 170725, -5592585, 2033667, 1369021, -3793530, -100395, --1607928, 9660455, 1238024, 606664, -8458938, -4935455, -7145752, 5513665, -3674882, -415001, -2845416, 12321187, 8640937, -3501472, -7662222, -3181497, -6663642, 6949257, -1410897, -1948841, --3125126, -2048163, -648003, -3209414, -2187749, -554588, -2662343, 1832340, -1887638, 2578054, --9677635, 629213, -875100, -3058017, -1506997, -3246459, -731755, -5063230, 323733, -2114198, --258235, 3032247, -1058710, -1104344, -2244121, -2419677, -765578, 658204, -230854, -231928, --954557, -396211, -1112933, -190589, 144955, 569620, -820876, -875100, -1246614, -1067299, --980863, -1584843, 540629, -534187, -130997, -1610613, -4788889, 3417720, -4958540, -9024800, -9200894, 4059281, -9511742, 9506373, -1469416, -631360, -13395466, 7943542, 5410585, -10960220, -3306051, -1868311, 4190814, 882616, 4818417, 2978023, 1277216, -5135707, 536334, 1793686, --6633040, -2924336, -7839389, -1425392, -4850629, -2699387, 957778, -6257231, -2219961, -9187472, -3506841, 836982, 844498, 732829, -3864934, -8007430, -2422362, 2724083, -1231045, -755914, -8368207, -12399571, 5236102, 6230387, -860067, 327491, -2346663, -1044214, -3945464, -6161131, --4103841, -4869419, -3161096, 2990908, 1741072, 2654827, 4207994, -1062468, -2172180, 5866389, -11385958, 7929584, -126702, -9725417, 2696166, -1552631, 1461900, 10155987, -26307, 10231149, -9233643, -1334124, -3045669, -2544768, 755914, 815507, 3461744, 10373957, 2818572, 342524, --1043140, -6550362, 798864, 1924145, -2166274, -393526, 355945, -158914, 1227287, 834834, -760209, -887448, 1284732, 1084479, 1148367, 1212791, -3492345, -637266, -2506114, 927713, --1956895, 754304, -551366, -979789, -2099702, 323733, 532576, -3148211, -975494, 644245, -88047, 14436996, 3812320, -2676302, -608275, 4376035, -1431835, 13982266, -1399086, -2257005, -17933100, 17180, 9114994, -3447785, 343597, -872415, 1563905, -2376728, 1334124, -374199, --414464, -9773735, -830539, -2401424, -1636919, -4128537, 6291054, 2801929, 3782256, -5524939, --506269, -8675834, -3339337, 1516124, -602906, -5312338, -1511829, 2771328, 6569153, 3821447, --1956895, -8074002, -183610, 2174327, -1244467, 4129611, 2904472, 5632313, 7995082, -2666101, -44023, -8616778, -10259603, 9675488, 5344550, -452045, -338766, -423054, -3680787, -4240744, -15032, 7725036, 4618164, 1320703, 9643812, -7418483, 2243047, -6103149, -4534412, 4006668, -4316442, 3373697, 14477798, -620623, -6401112, 1027571, -6272800, 2783676, 1775432, 5150203, --2738579, -19864, 746251, -4933844, -764504, 3276523, -406411, 772020, -1999844, -1175210, --216359, 2235531, -1137093, 1373316, -2126546, 103616, -2778307, 815507, -1428614, -1093606, -560493, 1347009, -1680943, 1819456, 1333587, 2244121, 245350, 1286880, -499827, 743566, -529355, 752693, -791885, -127238, -734976, -228707, 526670, 1106491, -959388, 383863, --206158, -7991324, -10699300, 4145717, -9999221, -10737, 11158862, -11675869, 4281546, 5221607, --3115999, -14408005, 202937, 8406862, -9300752, 5778342, -639413, -4141422, -12064563, -352724, --8701067, 1530082, -4412005, -6803228, -8464307, 3471944, -1190243, -508954, 8069707, -4888747, -6809671, -5175436, -2054068, 10402948, 3582003, -5569499, 4288525, 2502892, -4807142, 2529199, -2632278, -1860258, -2046552, 405338, -2311229, -2757906, 1717987, 1895691, 14186277, -13356811, -2170569, 840740, -4771172, 9585293, 5473399, -3303904, -10335302, 910533, -1035624, -3134253, --6518150, -7660074, 9346386, 6042482, 786516, -943819, 4985384, 2513093, -2246805, 3967476, -2871186, -2599529, 9944460, -3698504, 6088653, -4077535, 3036005, 3112241, 2252710, -311922, --5512054, 5269925, -4287988, -4489852, -3059091, 1527398, 5369, 643708, -5226439, 2836826, -2218888, -3330210, 358093, -142271, -1641214, 300648, -1081795, 2522757, -714038, 376347, -2138894, -974421, -1592896, 1396938, -1818382, 1472100, -310848, -32212, -2094870, -958851, --51540, -2321967, 2299955, 1279363, 536334, 1500554, -467615, 1018444, -555125, 4712116, --10787884, 7912941, -4505421, -1996623, -6185290, -4464082, 3792993, -3561602, 3105261, 12097312, -4160213, 6646462, -15420006, -10217190, -5484137, -3694209, 1687385, -72478, 2680060, -12957379, -6951942, 2888366, 1749662, 12359305, 226560, -7007239, 11621645, 4565014, -5159867, 2369748, --6636262, 6097780, 2893734, 8127152, -6947647, -4947266, 2078764, -7044820, 8904541, -8147553, --121870, 7895224, 7293928, -15038828, -403727, 734439, 1771674, 2485712, 16451335, 3792456, -1050656, -5028870, -4129611, -8882529, -4785131, 12144020, 319438, -14499273, 245350, 3355980, --8207683, -9062918, 1103807, -5878737, 2438468, 13310641, 6560026, 5601711, -5432597, -14223858, -1175747, -2434173, 6558415, -1278827, -11883101, -1448478, 3139084, 3282966, 3248069, -1004486, -10118943, 1905892, -6383932, 8323647, -581431, 4982162, -132607, -1240709, -4296041, 6152004, -4265977, 2407329, -3107946, -1225676, -789737, -2073396, 1205812, -10201, -2633889, 1334124, -849330, -1498944, -1948841, -824634, -1461900, -214748, 1912334, -1908039, 1007170, 2357937, -2861522, -718870, 1247151, -1493038, -19019188, -5684926, 5398237, 14697378, 2113661, 7620346, -26131118, 4335233, 4471598, -4043175, -12504260, 7092065, -6055904, 6535330, -1559610, 17273284, -12606266, -6667937, -14129369, -11250130, 8548059, -7494181, 10475425, 4595615, 3422552, -3616899, --1364726, 12430172, -2439542, 10969346, 10996190, 5672578, 7717520, -8543227, 8355859, 4494684, --4459250, 12147241, -5342940, 11035918, 843424, 1245004, -16186658, 9760313, 905164, -3048890, -8014946, -11294153, -4468914, 6762963, 5541582, -10406169, 1687385, -6657736, -3814468, 10301479, -1395328, 3107409, -1079111, -11870216, 7976291, 7560753, 527207, 5977521, 2692945, -5259725, --5513128, -448824, 6338298, -10749229, -379568, 688269, 475131, -103616, 4713727, 6179384, -12702366, 7123204, 428423, -17840220, -5858336, -6680285, -590558, 1319092, -5004711, -10576357, --3324842, -4766340, 2794950, 408559, -3008088, 1129040, -3085397, 4915590, -1763621, -2107218, --2911451, 53150, 1423782, -6361384, 3992709, -4093104, 1660005, -1054951, -2346126, 108448, --3917010, 1262720, -3534221, -2579665, -505732, -2046015, -1882269, 2178622, 3757023, 2246805, -3616899, 4704600, -981400, 693100, 23588498, 6888054, 3148748, -8753680, -21223580, 15345381, -4800163, -14102525, 4212826, -1545651, 3620658, 2961917, -10174778, -21792664, -17040820, 5723044, -13343927, -2678986, 14007499, -6528887, 10926934, 13305809, 18072686, -4028143, 13351980, -11904576, -4514548, -6516539, 1597191, 7155953, -324270, -3905736, 3236795, 8992588, -6468758, -12084427, --12194486, 25435334, 21475, -1332514, -11530913, 11758547, 3814468, -23592792, -13659607, 5208185, --3348464, -4238059, 9146670, 3034931, 22722524, 12494060, -855772, -13312251, -13036836, -7456600, --5393405, -15098421, 13818520, -10357851, 10919954, 9342091, -9567577, -12352326, -11909944, -17390322, -4138738, -396211, -6288369, -7933342, -12760885, -4657892, -12573517, 2511482, 1427003, -4374961, -1614371, 10111964, -26234734, -10285910, -21429202, 10635950, 7405061, -9299678, -3191161, 4238596, --4131222, -282394, 4946192, -4114042, -8656507, -1112933, -2580202, -2859375, -230318, -1282585, --3758097, -34360, 623844, 4378719, -6435472, 1482301, 3317325, -584116, -2753611, -4234301, --1326071, -820876, 740345, -1602560, -504659, -2663417, 1038308, -1203128, -4192425, 6931541, -565862, 1928977, -5702106, -12931610, -24124294, -5688148, -6049999, 1089848, -5376226, 802622, -2871723, -2874407, 10783589, -13760538, -3790309, -13066364, -313533, -6619619, 15174119, 16382079, -13597866, -18752900, 13469554, -6910603, 10313827, -4046396, 7707319, -6359773, -7577933, 2649995, --9884330, 6383395, 8280697, -1178432, 5117991, -9565429, -822486, 15688442, -12259984, 423591, --3379603, -5351530, -9805410, -738198, 16056198, 20500952, -12660490, 6087580, -1254667, -12693776, --12435541, -13922136, -5913096, 26017302, 16189879, -5028333, 8797704, -5685463, 7677791, -14441828, -8815420, -551903, -7418483, 19798726, 10675141, 3957276, 6923488, 5596343, 19061602, 2373506, --15407121, 6347425, 12492449, 9371619, -27194660, 16782584, -11298448, -10500658, -4731444, 1651415, --10405095, 11871290, 26903676, -4653060, 4225174, 13480829, 2742874, -2255932, 3666828, 1348620, -8170639, 6911140, 4631586, 12671764, 6969122, -3546032, 9102646, 5363341, -3346853, -7720741, -4832375, -1058173, 5196911, -2195802, 1894081, 3865471, 1998770, -1068373, -459025, 1777043, -6441914, 1348620, -899259, 1375463, 5073430, -1942399, 756451, 7773891, 3489661, -1961190, -4733591, 1420560, 1648731, 3273839, 453119, 2729989, -669478, -4778151, -3911642, 3959960, --1808181, 17306034, 10850161, 46470472, 12667469, -7461969, 2721399, 8075613, -48855, 15688442, -11208791, 10965052, -13970992, -22629646, 22713398, -12680354, 1953673, 8255464, 24952686, 10419054, --15466714, 14078903, -14007499, -2535641, -19174344, -24578488, -2998961, 7037841, 6502581, 5328444, -6142877, -1650878, -17292076, -5996311, 5290326, 6095096, -9247601, 19292994, 11836393, -11042361, -6096706, 9773198, 3510062, 909459, -10679973, -967978, -7544647, -4005594, 891206, 12139188, -29185376, -7632694, 2491081, 4672388, 10773389, -10165114, 37051072, -2870649, 3429532, 3461207, --17072496, -16216186, -26913876, -11004780, 14467597, -4771172, 7192460, 6286759, 25452514, 4458713, -4432943, 1719598, 20026896, 10117332, -8602819, 18898392, -17026860, 3078955, 16918950, 22396106, -20109574, 8369818, -11704860, -18459770, -8286603, -5638755, -13910862, -7275138, -7977365, -1782948, --11700028, 3313567, -4120484, -1498944, -10213969, -785979, -6419903, 10359461, 890669, 2582886, --9094593, -1319629, -12436078, 1267552, 5129802, 20938, 8869644, 6096169, -104690, 4143570, --1987496, -5122286, -3375308, -2062121, -10654740, 1408212, 1999307, 2951716, 3042448, -4768488, -7346005, 8512625, 3463354, -5800890, -4294431, -1630477, 1730335, 4919885, 2341831, -3720516, --2225867, -1619203, -4672388, -19415936, 11006927, 4938139, 13464722, -3782793, -29229936, 2122788, --19565186, -17711372, 5322538, 3946001, 8315057, -5349919, 6010270, -1287417, -9947144, 15759846, --2489471, -5566278, -6328635, -11508365, -9556839, 5553930, -12073690, 2687039, -7709467, -5626944, --3305514, 15423764, -3045669, 16571594, 10576894, -4728222, 5621576, 5528697, 11996381, -8589935, --11303817, 1381906, 7056632, 8878771, 15814070, -17790828, -16957068, 6927246, 5621576, 19176492, --9638443, -1743220, 9670119, -296890, 2692408, -3966402, 12745315, 15679852, 7334731, -2415919, -10042170, 33275796, -7475391, -10211285, 12461311, -1778653, 19618336, 4322348, 9127879, 10668699, --3647501, 7336878, 22692460, -6635188, -27390080, 18792630, 5552319, -9448391, 2553358, -42103564, -27706298, -734976, 17141214, -11404749, 8897025, 795643, -16704202, -16312286, -2282775, 2581812, --12386149, -433792, 1764695, -2763275, -4211753, -3074660, -13561359, -2755759, -8203925, -419833, --4366908, -1762010, -4988068, 7524783, -6164889, -5138929, -8840116, -4760435, -10070625, -2405719, -2019172, -6091874, -827855, -5107253, -5128191, -5935645, -549756, -5030481, -3516505, 954020, --1656784, 3651259, -3316252, -6972343, -7171522, -625992, 927176, -5033165, -1167694, -2654290, -1832340, -9995463, -167504, -18402862, -288300, 27136678, 14202383, -36327372, 6052146, -7053410, -3559454, 5229660, -1290638, -19032610, 3011309, -3470334, 16431471, 30404610, -4703526, 9363566, -20869782, -1545651, -5329518, -5884642, 8498130, 30348776, -235149, -2790655, 25870736, -11013370, -7253126, -583042, -45634, -7299834, 9956808, -29092498, 1252520, 8345659, 21139830, 21434034, --17829482, 107374, 20319490, -1870995, 37515464, -14155675, -17862768, 1830730, 27346594, 4097936, --20378010, -10390600, 6496675, -747324, 12103218, -30865246, 4042638, 685047, -5961952, -22575958, --19070728, 4487167, -5552856, -2020782, 1438814, -23477364, -23579370, 4414153, 4097399, -24848534, --7839389, -16387985, 14425185, -38896296, -14118094, 11868068, -22855668, 12028593, -5919539, -10006200, -13013751, -4599373, 19376744, 17370458, 4409858, 10509248, -4742181, 1566589, -13139916, 13863618, --10115722, 7955353, -13786308, 9710384, 1048509, 3920232, -885300, -673236, -7783018, 8906688, --10310606, 1088774, 1547262, 4672388, -11352135, 5304822, -4399121, -4041564, 4009889, -3257733, --5160403, 7078643, 3633006, 7613904, 4024384, -1660542, -3640522, -4810900, -750546, 766115, --5245766, 1152125, -3746822, 1150514, -10897943, -6675990, -4285841, 4918812, 6934762, -4519380, -1789391, -2505577, 3160559, -9727027, 20573968, -383863, 11556683, -21467858, -1189169, -20342576, -21296058, 8873939, 27741194, 18892488, -9322763, 3307662, 21989158, 10715407, 11377905, 6666863, --17981418, -5634460, 9396852, 1068910, 11028939, -23795192, -17005386, 10198400, 35422744, 4391067, --11232950, 21764746, 6669011, 13457206, 4016331, 2320356, -19434728, -20542828, 703838, -57982, --34301756, 2407866, -6777996, -2180233, 11299522, -13920526, 8620536, 26811334, 3189550, -44771276, --31572842, -5610301, -9494562, -11445014, -9664, 7661148, 7349226, -11297375, 12611098, 11235098, -10879152, -7288023, 9404368, -5435818, -11236708, -3162170, 10459856, -33546916, -7260642, -15388331, --16967806, -7313793, 4954782, -9237938, -617938, 36017596, 21028696, -14464913, 409096, -41876, --6005438, -6955700, 3483219, 23998666, 9217000, 3243774, -7311108, -5969468, -12419972, -15096273, --15326591, -4044249, 2266669, 4367982, -5199058, 3848828, -1038308, -4039954, -1092532, -4662187, --13440026, -3899830, 127238, -3952981, -11596412, 1007707, -4043175, 12416750, -6281927, 3874597, --1072131, 4828617, 176094, -10953777, 1129040, 12022687, 2151779, 10759967, -2873333, 5254893, --3376381, 3144453, -547608, -8280160, -3216931, -1353452, -1164473, -2065342, 166430, -2879776, --5530844, 7329362, 14439143, -20045686, -4927938, -8599061, 5401458, 41366976, 6672232, -20623896, -5510980, 18170396, -3838090, 16964584, 21929030, -11455215, 5255966, 10836739, 7614440, 302795, --3125126, -6941204, 3344169, 12761958, 6761889, 11905649, -18043694, -28125594, -2889976, 12276090, -11071352, 8760123, -3099893, -25963614, 8381092, 5526013, 38683160, 40399536, 9720585, -30392262, -21921514, -11693585, -30794916, -7407745, -36459976, -28024124, -12218108, -13602698, -28261958, 4742718, --11352135, -32633162, -29618632, 8381629, 19334332, -3375844, -24997246, 7250442, 775778, 7820062, -15829639, 15174119, -19333796, 24824374, 17243220, 1986959, 6961605, 17213156, -863288, 45338212, --32424856, -15722802, -1046361, -37243272, 30444876, 2019708, 38256884, 11600707, 8586176, -2132988, -7605850, 15998753, 666257, -15281494, -215822, -8250632, 6088116, 5635534, 10951630, -4784594, --13937169, -292595, 12986907, 5937256, -8262980, -4340065, 6834367, -9497783, -30065, 2684, -11921755, 4462471, -6483253, -3022046, -7369090, -12139725, -10334765, -768799, 2272038, -6115497, --4340065, 1197222, -5960341, 9167071, 4571993, -301185, 5630702, 18711562, -7185481, -3781182, -2135136, 4894115, -10192494, 10899553, -3731253, -515933, 1889249, 8034810, 14186814, -20491288, -5557688, -40672804, -10709501, -2757906, -9705552, 44122736, 14224932, -12043625, -27643484, -14392435, --11241540, -17920752, -12728672, 6526740, -40468256, -9023726, 30103962, -3798899, -3128347, -31360778, -29888678, 14436459, 892816, -12060805, 12864501, 6002754, -6861747, 13269838, -20795694, -5848135, --10515691, 5753646, -4691715, -13516799, 15250892, -11571716, 6485401, 155156, -20205136, -12995497, --2975339, -25837450, -24881282, -33880312, -8464307, 15122580, -11074036, -6444062, 19588808, -23934242, --19233938, 20662014, 33823, -1508607, 19072340, -20401, -15948287, -9574556, 6567542, 13349295, --20666308, -6856379, 25587804, 10669773, 24696062, 12394202, -4821638, 12597676, -792421, -33493228, -10617696, -25415468, 18386218, 2868501, 6863895, -10881300, -28512678, 5724655, -4093641, -25228638, --9796820, 10858214, -12455405, 200253, 4112968, 7814693, -7925826, 111669, 1395328, -2476049, -5386963, -4066797, 3097745, 9883793, -1704028, 3164317, 2868501, -6966437, 2273648, 4559645, -2975876, -5295695, 6910603, 4315906, -309775, -7283191, -13983877, 2559801, -11026792, 8746164, --11262478, 7143605, 9554155, 75162, 725850, -100395, 5509370, 453656, -4694400, 10645076, -9001715, -4752382, -2973728, -7070590, -11407433, 30144228, 10711648, 974421, 3835406, -8054138, -12144020, 18516678, 47413216, 41146860, 3704409, -18328236, 8542153, 23794118, 6974490, 18389976, -13502303, 8826158, -13885092, -18148922, -21498996, -1662689, 8161512, 15075872, 30838938, 16095927, -19821274, 11294690, 18385144, 9054865, 17713518, -11911018, 3437048, 33042258, -774168, 25381110, -6888591, 20493974, -32663226, -5498632, -9547175, -9827959, 7759396, 12596602, 23854786, 38235948, -32284196, -11578158, 5824513, -42827804, 10470593, 9644349, 37688876, -30054034, 23874650, -7937100, --20837570, 15866683, 5057324, 13210246, 23644868, -7845295, -30046518, 15417322, -19281718, -26768384, --12533251, 35369592, -30769682, -44008920, -22013854, -7454990, 23206782, -2609730, -15661061, -30440044, --22737020, 14259828, -1973001, -769873, 19680078, -21543020, 6191196, 21700322, 8622684, 14456323, -21307870, -14584635, -7154879, -12361453, 16316044, 3385508, 8441221, 5694590, -14522358, 17914846, -4564477, 2647847, -7074348, -26749594, -25254408, 2291902, -11979201, -5240397, -11359652, -10186052, --4289599, 4429722, -77846, -11433203, 14357539, 11719892, -1539209, -12953084, 2152316, 7386807, --9004399, -4375498, -5142687, -163209, 6240588, -3125126, -6206228, -5359046, 4406100, 3345780, -7027640, 8392903, -4490925, -4138738, -5113159, 4835060, 5505075, 29584808, -9236327, -32948842, -2442226, -13827647, -46790448, -23850490, 61696668, 8499740, -27649388, -30626338, 3588445, 443992, -12867722, 15882789, -21369610, -14388140, -34181496, 7907035, -12294344, -8330626, 52649856, 11188390, --7088844, -54248120, -3325379, -28999082, 28845000, 35342212, 3893925, 27485106, -32273458, -12832289, --20319490, -4901632, 53787488, 66693324, 10855530, -17866528, -23638964, -48237316, 862215, 6192806, -58472760, 32479080, -8304856, -95820184, -49402324, 8217883, -8977019, 84109416, 28424094, -40401148, --16572131, -72105520, -22581864, 2527052, 47390668, 48642116, 54863376, 2599529, 13190918, -5742372, -4972499, 67192080, -24533390, 49362596, -11685532, -50662360, -14900852, -53701588, -16979080, 70370352, -32269164, 50258096, -16358457, 39424580, -43807592, -6991670, 10788421, 21040508, 42091216, -14053133, --593242, 2689723, -3637301, 6514929, 11474542, -11890617, 2155000, -12501576, -22394496, 10297184, -18822158, 10381473, -2042794, -13566728, -30056718, -29867202, -15431817, 10235981, 28376312, 15880642, -22043382, -29340532, -38216620, -29665876, 3748970, 33943128, 37967512, 28981902, -16822314, -73403672, --46834472, 1574106, 37455872, 80064096, 31412854, 6726993, -35927940, -47772920, -16187732, -15082315, -42362872, 46466176, 17796196, -2554969, -39662948, -29931090, 9698573, 14046154, 34599184, 16772921, --17053704, -12094091, -20512226, -9796820, 10481868, 9293235, 10623065, 13127568, -2254858, -3598109, --42487428, 47144784, 269509, -12513924, -73339248, -19971062, -19661286, -33349348, 71384504, 592706, -32094144, -48824116, 27220428, 22523346, -21687974, 14086956, -4000225, 12579422, 202400, 36268316, -13074954, -35479116, 21553756, 17468168, 97174, 24453934, -17964774, -9466645, 31077310, 21508122, -20771536, 10146860, 18102750, -53372484, 46705084, -26839250, -16788490, 10069551, -37121404, 54458036, --15295989, 5390721, 39611408, 1308891, -5779416, 21369072, 22116398, 38574712, -9210020, -35883380, --36318244, 4037269, -12976170, 16910896, -21880174, -10757819, -14743012, 10932302, -68434400, 1122597, -51189568, 14113799, 20971788, -1906429, -5390184, 13448616, -17903034, -20720532, 13011603, 7121056, --22123376, -24813636, 94836096, -10197863, -30539364, 8637179, 44571560, -1192927, -34711388, 14432164, --6331856, -13180181, 28774670, 36295696, -26300770, -43349640, 10040560, 10508174, -9786620, -25898652, -1522029, 13157632, -3762928, -4151623, -1488743, -4407710, 7197292, 7808788, -8682276, 1057099, -4130685, 2026151, -5126581, 2079838, -60130, -11933030, 8897562, 3791383, 16993574, 8407935, --6118181, 6941741, -3069828, 9975062, -461709, -2457258, 13908715, -3274376, 9607305, -2618320, --10499048, -806380, 12545599, -3322694, 14246407, -13123273, 17824114, 4277251, -12386686, 5464272, -525597, 6625524, -1879585, -4919885, -1030792, 4426501, 14099841, -37022620, 13423383, 57549876, -91532192, -40630928, 30093762, -60501056, -17351132, -36971080, -4600447, 55722904, 59861108, 46959024, --1064078, -38007240, -22386444, 20273856, 1983738, 10044318, 31521302, -820876, 15926812, -39790724, --9617506, -23108534, -27382564, 15068893, 13227426, 649614, 28363964, -23864986, -340376, 6082211, --32840930, -1106491, 2867428, -21263846, -7422777, 7741679, -13540958, 31256088, -9718974, 47435768, -36550708, -23597088, -6010270, -32738388, -36688148, -48518100, 16070694, 22200686, 65293168, 49236968, -23664732, 31264140, 6627672, -35715876, -22926536, -20033874, -23622320, -5217849, 14230300, -1359894, --16012712, 4299799, -16151761, 10545218, 24781424, 4678293, -24456080, 19639812, -11356967, -12800613, --24453396, 13030931, 11879343, 5731097, 3816079, 57070452, 44334800, 35697084, 6805913, -8227547, --47555488, -10058277, -4279935, 47588776, 28008018, 12466143, 15153718, 41248328, -5760088, -16288127, --21423296, -18504330, -7946763, -4043712, 4575751, 638340, 1132798, 21506512, -1636919, -12595528, --6962679, -4205847, 1318018, 10748156, 19925428, 8536248, -1528472, 12000675, -18836652, 7929047, -19031000, 7627862, 36648420, -14412837, 1154809, 6361921, -13984950, 4158065, -22783728, -946503, -9247065, 579284, 10623065, 5844914, -1671816, -282931, -3534758, -369904, 5712844, -6225018, --99629816, -56693568, -33673616, 57530012, 26042534, 152055264, 141695808, 147659904, 148116240, 159964448, -111466752, 59090160, 84242560, 51567524, -26058104, -46632072, -73427832, -140927536, -128137128, -131635912, --96489128, -96582544, -72662792, -59163176, -32428076, 3716221, -56710748, -28170690, -12350178, -8388608, --31039728, 8251169, 37126236, 42950748, 15083925, 50655380, 63181116, 16254841, 11815992, 13049184, -62054760, 65847756, 81843824, 92858800, 80160192, 92209728, 138712416, 56902948, 108121504, 148969872, -94772208, 113148768, 87891136, 44741212, 52166136, 58911920, 51282448, 71094056, 68924560, 43574052, -7606924, 21791054, 40251896, -2325725, 3892314, -19532974, -23656142, -69901664, -32472100, -121322088, --153617552, -122124712, -140250544, -189429536, -184022176, -108413024, -205451904, -185438432, -170323904, -191462656, --162617120, -123230128, -155881536, -113927768, -32573032, -75659608, -94646048, -36992552, -38039452, -30433602, --34628172, -14936286, 8209830, 19231790, 36326296, 48377436, 54410256, 62463856, 63529008, 91105384, -54784992, 107318888, 119145080, 57133264, 110571784, 106077640, 66247724, 81231792, 117017456, 80155904, -132209296, 100470560, 125277752, 88282512, 79267920, 83147344, 76735496, 60887604, 68874632, 60604672, -46972984, 35913980, 34154116, 28337120, 11151346, -9550934, -8391829, -5737003, -43425340, -69110856, --67138928, -68184752, -74896176, -68870336, -77496776, -55952688, -58488328, -47590920, -36050880, -28045600, --32283122, -31396748, -24658480, -17442936, -19481434, -24896852, -13947906, -7675107, -15295452, -22257594, --13764833, -10359461, -13959181, -16862578, -8163122, -1174137, 4849555, -214212, 3379603, 10998338, -11212549, -1090922, 3333968, 7406671, 4938139, -1600949, 1415192, 4003447, 3063922, -3249143, -187905, 2680060, 4547297, 2450279, 4648229, 915902, 2747705, 5120138, 9188009, 2951716, -1758252, 781147, 3065533, 819802, 2236604, -123480, 1125818, -2683818, -4330938, -7386807, --2957622, -4794257, -3964792, -6763500, -1947231, -3599183, -2213519, -2121177, 2818036, 865973, -2314987, -579821, 4716411, 4029216, 7420093, 3398930, 8617315, 9112847, 11089606, 6109054, -10105521, 9527848, 9742596, 5087389, 7626788, 5652177, 8081518, 3922379, 4998805, 2237141, -4919348, 603443, 2341831, -515396, 1217086, -2415382, -983548, -3289408, -992674, -3783329, --1522566, -3686156, -732292, -2981781, -195958, -2371896, 531502, -1712618, 1080184, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +107911, -2041183, -466004, -4917201, -3379603, 2188286, 194347, -3094524, 3853660, 2585570, +-834834, 237297, -522375, 3105261, -4303021, 1620276, 3226594, 2850248, -6192269, -4335770, +-3074660, 4167192, 1010928, 1365263, -1721745, 4445291, 1671816, -1093606, 122407, -1256278, +876173, 1671279, -980326, -1267552, -3723200, 3978750, 6618008, 791885, 4206384, -768799, +853625, 1518808, 1834488, -5004174, 361851, -5228049, -1193464, -731755, 1658394, -2631741, +-76773, 1158567, 537408, -3043521, 130997, 357556, 2510945, -3236258, -4063576, -537945, +5541045, 8881455, 30602, 1464047, 629213, -1889786, -5317170, -1345935, 3732864, -1690607, +3718368, 1446867, 3787088, -193274, 1483374, 1347546, -3165928, -4292820, -434865, 1638530, +2491618, 1211181, 1125818, 753230, 853088, -1462436, -2328946, -1588064, -1257352, -600759, +68719, -871342, -96637, 802622, 1296006, 1137630, -151398, 94489, 781147, -1611, +-903554, 2574296, -5616207, -1210644, -5328981, 3103651, 289910, -2379412, 11197517, -4343823, +-8112657, 666794, 3681861, -628676, -6117644, -1675574, -2688113, -941135, -2928094, -893890, +4121558, -240518, -2774012, 4839355, 652298, 4702453, -1288490, -1090385, 1737851, 172872, +2032593, -819802, 4337917, 7223062, -2026688, -4769561, -3583077, 3010235, -58519, -10990821, +-1098975, -4348118, -1687922, 5458904, -3823595, -2814814, 3679713, -2384781, -581968, 5011153, +1662152, -3856344, 1703491, -2762201, -6570763, 2139968, 2512019, -4897874, -2914135, -1376537, +-2129230, 10201, 2076617, 3438658, 5075578, 5783711, -1413581, 643171, -2306398, 2527588, +1527398, -1214402, 2352568, 3737159, -3558917, -1733556, 548682, 129923, 1372779, 4285841, +-577136, -1072131, 3788161, 622770, -2700461, -1603097, -244276, -1570347, 1130113, -615791, +-1510755, 663036, -1708323, -1250909, 787053, -1612760, -1174137, 111669, 1071594, -2010045, +199716, -440234, -761283, -935229, -131533, -1553168, -497679, -1483911, -9034464, -4620848, +2804077, 3991098, 1585380, 4332012, -3701188, 4535486, 5610838, -1589675, 6207839, -862752, +4578435, -2184528, 162135, -1960653, 5849746, 2257005, -213675, 5188858, -2749853, -2218888, +3833258, -9060770, -1551557, 479426, -1902134, -8075613, -4900558, 3329674, -3134789, -2115808, +139586, 6292664, -1490891, -4427575, -324270, 1610076, 3590593, -554588, -5693516, -3698504, +-1027034, -2942053, 976031, -4989679, 2498060, -4694936, -6858526, 209917, 2440078, 2789581, +-2175938, -1591822, -4491462, 5835787, 3407520, 806917, 87510, -171262, -1956895, -1072131, +2005750, 2488397, 8849243, -1000727, 2250026, 572841, -234613, -4324495, -3251827, 5972689, +-2540473, 583042, 1515050, 860604, -907849, 4514548, 271120, 161061, -4871567, 4735739, +2690797, -1835562, -1058173, -534187, -1391569, 652298, 3451543, -48855, 1391569, 1032940, +-445603, 791885, 1800665, -185220, 37581, 542777, 858457, 707596, 1044751, 1827509, +720481, -1340030, 1442035, 652835, -949188, -771484, -122407, 211527, 27380, 2218888, +2672544, 2435247, 5738613, -3802657, -5739150, -4591320, 2859911, 6393059, -1224066, 4899484, +-4384625, -5273683, 4329864, -2189897, 409096, 1639604, 5433671, 2040646, 8653822, -3784403, +-4684736, 2035815, -2617783, -2420751, 4881231, -7691213, -4794794, 772557, -1538672, 3505230, +-2665027, 964220, 6132140, -5761699, 4246649, -3479461, 2731062, -3260954, -983011, -530965, +6352257, 1199907, 169114, -4699768, 170725, -5592585, 2033667, 1369021, -3793530, -100395, +-1607928, 9660455, 1238024, 606664, -8458938, -4935455, -7145752, 5513665, -3674882, -415001, +2845416, 12321187, 8640937, -3501472, -7662222, -3181497, -6663642, 6949257, -1410897, -1948841, +-3125126, -2048163, -648003, -3209414, -2187749, -554588, -2662343, 1832340, -1887638, 2578054, +-9677635, 629213, -875100, -3058017, -1506997, -3246459, -731755, -5063230, 323733, -2114198, +-258235, 3032247, -1058710, -1104344, -2244121, -2419677, -765578, 658204, -230854, -231928, +-954557, -396211, -1112933, -190589, 144955, 569620, -820876, -875100, -1246614, -1067299, +-980863, -1584843, 540629, -534187, -130997, -1610613, -4788889, 3417720, -4958540, -9024800, +9200894, 4059281, -9511742, 9506373, -1469416, -631360, -13395466, 7943542, 5410585, -10960220, +3306051, -1868311, 4190814, 882616, 4818417, 2978023, 1277216, -5135707, 536334, 1793686, +-6633040, -2924336, -7839389, -1425392, -4850629, -2699387, 957778, -6257231, -2219961, -9187472, +3506841, 836982, 844498, 732829, -3864934, -8007430, -2422362, 2724083, -1231045, -755914, +8368207, -12399571, 5236102, 6230387, -860067, 327491, -2346663, -1044214, -3945464, -6161131, +-4103841, -4869419, -3161096, 2990908, 1741072, 2654827, 4207994, -1062468, -2172180, 5866389, +11385958, 7929584, -126702, -9725417, 2696166, -1552631, 1461900, 10155987, -26307, 10231149, +9233643, -1334124, -3045669, -2544768, 755914, 815507, 3461744, 10373957, 2818572, 342524, +-1043140, -6550362, 798864, 1924145, -2166274, -393526, 355945, -158914, 1227287, 834834, +760209, -887448, 1284732, 1084479, 1148367, 1212791, -3492345, -637266, -2506114, 927713, +-1956895, 754304, -551366, -979789, -2099702, 323733, 532576, -3148211, -975494, 644245, +88047, 14436996, 3812320, -2676302, -608275, 4376035, -1431835, 13982266, -1399086, -2257005, +17933100, 17180, 9114994, -3447785, 343597, -872415, 1563905, -2376728, 1334124, -374199, +-414464, -9773735, -830539, -2401424, -1636919, -4128537, 6291054, 2801929, 3782256, -5524939, +-506269, -8675834, -3339337, 1516124, -602906, -5312338, -1511829, 2771328, 6569153, 3821447, +-1956895, -8074002, -183610, 2174327, -1244467, 4129611, 2904472, 5632313, 7995082, -2666101, +44023, -8616778, -10259603, 9675488, 5344550, -452045, -338766, -423054, -3680787, -4240744, +15032, 7725036, 4618164, 1320703, 9643812, -7418483, 2243047, -6103149, -4534412, 4006668, +4316442, 3373697, 14477798, -620623, -6401112, 1027571, -6272800, 2783676, 1775432, 5150203, +-2738579, -19864, 746251, -4933844, -764504, 3276523, -406411, 772020, -1999844, -1175210, +-216359, 2235531, -1137093, 1373316, -2126546, 103616, -2778307, 815507, -1428614, -1093606, +560493, 1347009, -1680943, 1819456, 1333587, 2244121, 245350, 1286880, -499827, 743566, +529355, 752693, -791885, -127238, -734976, -228707, 526670, 1106491, -959388, 383863, +-206158, -7991324, -10699300, 4145717, -9999221, -10737, 11158862, -11675869, 4281546, 5221607, +-3115999, -14408005, 202937, 8406862, -9300752, 5778342, -639413, -4141422, -12064563, -352724, +-8701067, 1530082, -4412005, -6803228, -8464307, 3471944, -1190243, -508954, 8069707, -4888747, +6809671, -5175436, -2054068, 10402948, 3582003, -5569499, 4288525, 2502892, -4807142, 2529199, +2632278, -1860258, -2046552, 405338, -2311229, -2757906, 1717987, 1895691, 14186277, -13356811, +2170569, 840740, -4771172, 9585293, 5473399, -3303904, -10335302, 910533, -1035624, -3134253, +-6518150, -7660074, 9346386, 6042482, 786516, -943819, 4985384, 2513093, -2246805, 3967476, +2871186, -2599529, 9944460, -3698504, 6088653, -4077535, 3036005, 3112241, 2252710, -311922, +-5512054, 5269925, -4287988, -4489852, -3059091, 1527398, 5369, 643708, -5226439, 2836826, +2218888, -3330210, 358093, -142271, -1641214, 300648, -1081795, 2522757, -714038, 376347, +2138894, -974421, -1592896, 1396938, -1818382, 1472100, -310848, -32212, -2094870, -958851, +-51540, -2321967, 2299955, 1279363, 536334, 1500554, -467615, 1018444, -555125, 4712116, +-10787884, 7912941, -4505421, -1996623, -6185290, -4464082, 3792993, -3561602, 3105261, 12097312, +4160213, 6646462, -15420006, -10217190, -5484137, -3694209, 1687385, -72478, 2680060, -12957379, +6951942, 2888366, 1749662, 12359305, 226560, -7007239, 11621645, 4565014, -5159867, 2369748, +-6636262, 6097780, 2893734, 8127152, -6947647, -4947266, 2078764, -7044820, 8904541, -8147553, +-121870, 7895224, 7293928, -15038828, -403727, 734439, 1771674, 2485712, 16451335, 3792456, +1050656, -5028870, -4129611, -8882529, -4785131, 12144020, 319438, -14499273, 245350, 3355980, +-8207683, -9062918, 1103807, -5878737, 2438468, 13310641, 6560026, 5601711, -5432597, -14223858, +1175747, -2434173, 6558415, -1278827, -11883101, -1448478, 3139084, 3282966, 3248069, -1004486, +10118943, 1905892, -6383932, 8323647, -581431, 4982162, -132607, -1240709, -4296041, 6152004, +4265977, 2407329, -3107946, -1225676, -789737, -2073396, 1205812, -10201, -2633889, 1334124, +849330, -1498944, -1948841, -824634, -1461900, -214748, 1912334, -1908039, 1007170, 2357937, +2861522, -718870, 1247151, -1493038, -19019188, -5684926, 5398237, 14697378, 2113661, 7620346, +26131118, 4335233, 4471598, -4043175, -12504260, 7092065, -6055904, 6535330, -1559610, 17273284, +12606266, -6667937, -14129369, -11250130, 8548059, -7494181, 10475425, 4595615, 3422552, -3616899, +-1364726, 12430172, -2439542, 10969346, 10996190, 5672578, 7717520, -8543227, 8355859, 4494684, +-4459250, 12147241, -5342940, 11035918, 843424, 1245004, -16186658, 9760313, 905164, -3048890, +8014946, -11294153, -4468914, 6762963, 5541582, -10406169, 1687385, -6657736, -3814468, 10301479, +1395328, 3107409, -1079111, -11870216, 7976291, 7560753, 527207, 5977521, 2692945, -5259725, +-5513128, -448824, 6338298, -10749229, -379568, 688269, 475131, -103616, 4713727, 6179384, +12702366, 7123204, 428423, -17840220, -5858336, -6680285, -590558, 1319092, -5004711, -10576357, +-3324842, -4766340, 2794950, 408559, -3008088, 1129040, -3085397, 4915590, -1763621, -2107218, +-2911451, 53150, 1423782, -6361384, 3992709, -4093104, 1660005, -1054951, -2346126, 108448, +-3917010, 1262720, -3534221, -2579665, -505732, -2046015, -1882269, 2178622, 3757023, 2246805, +3616899, 4704600, -981400, 693100, 23588498, 6888054, 3148748, -8753680, -21223580, 15345381, +4800163, -14102525, 4212826, -1545651, 3620658, 2961917, -10174778, -21792664, -17040820, 5723044, +13343927, -2678986, 14007499, -6528887, 10926934, 13305809, 18072686, -4028143, 13351980, -11904576, +4514548, -6516539, 1597191, 7155953, -324270, -3905736, 3236795, 8992588, -6468758, -12084427, +-12194486, 25435334, 21475, -1332514, -11530913, 11758547, 3814468, -23592792, -13659607, 5208185, +-3348464, -4238059, 9146670, 3034931, 22722524, 12494060, -855772, -13312251, -13036836, -7456600, +-5393405, -15098421, 13818520, -10357851, 10919954, 9342091, -9567577, -12352326, -11909944, -17390322, +4138738, -396211, -6288369, -7933342, -12760885, -4657892, -12573517, 2511482, 1427003, -4374961, +1614371, 10111964, -26234734, -10285910, -21429202, 10635950, 7405061, -9299678, -3191161, 4238596, +-4131222, -282394, 4946192, -4114042, -8656507, -1112933, -2580202, -2859375, -230318, -1282585, +-3758097, -34360, 623844, 4378719, -6435472, 1482301, 3317325, -584116, -2753611, -4234301, +-1326071, -820876, 740345, -1602560, -504659, -2663417, 1038308, -1203128, -4192425, 6931541, +565862, 1928977, -5702106, -12931610, -24124294, -5688148, -6049999, 1089848, -5376226, 802622, +2871723, -2874407, 10783589, -13760538, -3790309, -13066364, -313533, -6619619, 15174119, 16382079, +13597866, -18752900, 13469554, -6910603, 10313827, -4046396, 7707319, -6359773, -7577933, 2649995, +-9884330, 6383395, 8280697, -1178432, 5117991, -9565429, -822486, 15688442, -12259984, 423591, +-3379603, -5351530, -9805410, -738198, 16056198, 20500952, -12660490, 6087580, -1254667, -12693776, +-12435541, -13922136, -5913096, 26017302, 16189879, -5028333, 8797704, -5685463, 7677791, -14441828, +8815420, -551903, -7418483, 19798726, 10675141, 3957276, 6923488, 5596343, 19061602, 2373506, +-15407121, 6347425, 12492449, 9371619, -27194660, 16782584, -11298448, -10500658, -4731444, 1651415, +-10405095, 11871290, 26903676, -4653060, 4225174, 13480829, 2742874, -2255932, 3666828, 1348620, +8170639, 6911140, 4631586, 12671764, 6969122, -3546032, 9102646, 5363341, -3346853, -7720741, +4832375, -1058173, 5196911, -2195802, 1894081, 3865471, 1998770, -1068373, -459025, 1777043, +6441914, 1348620, -899259, 1375463, 5073430, -1942399, 756451, 7773891, 3489661, -1961190, +4733591, 1420560, 1648731, 3273839, 453119, 2729989, -669478, -4778151, -3911642, 3959960, +-1808181, 17306034, 10850161, 46470472, 12667469, -7461969, 2721399, 8075613, -48855, 15688442, +11208791, 10965052, -13970992, -22629646, 22713398, -12680354, 1953673, 8255464, 24952686, 10419054, +-15466714, 14078903, -14007499, -2535641, -19174344, -24578488, -2998961, 7037841, 6502581, 5328444, +6142877, -1650878, -17292076, -5996311, 5290326, 6095096, -9247601, 19292994, 11836393, -11042361, +6096706, 9773198, 3510062, 909459, -10679973, -967978, -7544647, -4005594, 891206, 12139188, +29185376, -7632694, 2491081, 4672388, 10773389, -10165114, 37051072, -2870649, 3429532, 3461207, +-17072496, -16216186, -26913876, -11004780, 14467597, -4771172, 7192460, 6286759, 25452514, 4458713, +4432943, 1719598, 20026896, 10117332, -8602819, 18898392, -17026860, 3078955, 16918950, 22396106, +20109574, 8369818, -11704860, -18459770, -8286603, -5638755, -13910862, -7275138, -7977365, -1782948, +-11700028, 3313567, -4120484, -1498944, -10213969, -785979, -6419903, 10359461, 890669, 2582886, +-9094593, -1319629, -12436078, 1267552, 5129802, 20938, 8869644, 6096169, -104690, 4143570, +-1987496, -5122286, -3375308, -2062121, -10654740, 1408212, 1999307, 2951716, 3042448, -4768488, +7346005, 8512625, 3463354, -5800890, -4294431, -1630477, 1730335, 4919885, 2341831, -3720516, +-2225867, -1619203, -4672388, -19415936, 11006927, 4938139, 13464722, -3782793, -29229936, 2122788, +-19565186, -17711372, 5322538, 3946001, 8315057, -5349919, 6010270, -1287417, -9947144, 15759846, +-2489471, -5566278, -6328635, -11508365, -9556839, 5553930, -12073690, 2687039, -7709467, -5626944, +-3305514, 15423764, -3045669, 16571594, 10576894, -4728222, 5621576, 5528697, 11996381, -8589935, +-11303817, 1381906, 7056632, 8878771, 15814070, -17790828, -16957068, 6927246, 5621576, 19176492, +-9638443, -1743220, 9670119, -296890, 2692408, -3966402, 12745315, 15679852, 7334731, -2415919, +10042170, 33275796, -7475391, -10211285, 12461311, -1778653, 19618336, 4322348, 9127879, 10668699, +-3647501, 7336878, 22692460, -6635188, -27390080, 18792630, 5552319, -9448391, 2553358, -42103564, +27706298, -734976, 17141214, -11404749, 8897025, 795643, -16704202, -16312286, -2282775, 2581812, +-12386149, -433792, 1764695, -2763275, -4211753, -3074660, -13561359, -2755759, -8203925, -419833, +-4366908, -1762010, -4988068, 7524783, -6164889, -5138929, -8840116, -4760435, -10070625, -2405719, +2019172, -6091874, -827855, -5107253, -5128191, -5935645, -549756, -5030481, -3516505, 954020, +-1656784, 3651259, -3316252, -6972343, -7171522, -625992, 927176, -5033165, -1167694, -2654290, +1832340, -9995463, -167504, -18402862, -288300, 27136678, 14202383, -36327372, 6052146, -7053410, +3559454, 5229660, -1290638, -19032610, 3011309, -3470334, 16431471, 30404610, -4703526, 9363566, +20869782, -1545651, -5329518, -5884642, 8498130, 30348776, -235149, -2790655, 25870736, -11013370, +7253126, -583042, -45634, -7299834, 9956808, -29092498, 1252520, 8345659, 21139830, 21434034, +-17829482, 107374, 20319490, -1870995, 37515464, -14155675, -17862768, 1830730, 27346594, 4097936, +-20378010, -10390600, 6496675, -747324, 12103218, -30865246, 4042638, 685047, -5961952, -22575958, +-19070728, 4487167, -5552856, -2020782, 1438814, -23477364, -23579370, 4414153, 4097399, -24848534, +-7839389, -16387985, 14425185, -38896296, -14118094, 11868068, -22855668, 12028593, -5919539, -10006200, +13013751, -4599373, 19376744, 17370458, 4409858, 10509248, -4742181, 1566589, -13139916, 13863618, +-10115722, 7955353, -13786308, 9710384, 1048509, 3920232, -885300, -673236, -7783018, 8906688, +-10310606, 1088774, 1547262, 4672388, -11352135, 5304822, -4399121, -4041564, 4009889, -3257733, +-5160403, 7078643, 3633006, 7613904, 4024384, -1660542, -3640522, -4810900, -750546, 766115, +-5245766, 1152125, -3746822, 1150514, -10897943, -6675990, -4285841, 4918812, 6934762, -4519380, +1789391, -2505577, 3160559, -9727027, 20573968, -383863, 11556683, -21467858, -1189169, -20342576, +21296058, 8873939, 27741194, 18892488, -9322763, 3307662, 21989158, 10715407, 11377905, 6666863, +-17981418, -5634460, 9396852, 1068910, 11028939, -23795192, -17005386, 10198400, 35422744, 4391067, +-11232950, 21764746, 6669011, 13457206, 4016331, 2320356, -19434728, -20542828, 703838, -57982, +-34301756, 2407866, -6777996, -2180233, 11299522, -13920526, 8620536, 26811334, 3189550, -44771276, +-31572842, -5610301, -9494562, -11445014, -9664, 7661148, 7349226, -11297375, 12611098, 11235098, +10879152, -7288023, 9404368, -5435818, -11236708, -3162170, 10459856, -33546916, -7260642, -15388331, +-16967806, -7313793, 4954782, -9237938, -617938, 36017596, 21028696, -14464913, 409096, -41876, +-6005438, -6955700, 3483219, 23998666, 9217000, 3243774, -7311108, -5969468, -12419972, -15096273, +-15326591, -4044249, 2266669, 4367982, -5199058, 3848828, -1038308, -4039954, -1092532, -4662187, +-13440026, -3899830, 127238, -3952981, -11596412, 1007707, -4043175, 12416750, -6281927, 3874597, +-1072131, 4828617, 176094, -10953777, 1129040, 12022687, 2151779, 10759967, -2873333, 5254893, +-3376381, 3144453, -547608, -8280160, -3216931, -1353452, -1164473, -2065342, 166430, -2879776, +-5530844, 7329362, 14439143, -20045686, -4927938, -8599061, 5401458, 41366976, 6672232, -20623896, +5510980, 18170396, -3838090, 16964584, 21929030, -11455215, 5255966, 10836739, 7614440, 302795, +-3125126, -6941204, 3344169, 12761958, 6761889, 11905649, -18043694, -28125594, -2889976, 12276090, +11071352, 8760123, -3099893, -25963614, 8381092, 5526013, 38683160, 40399536, 9720585, -30392262, +21921514, -11693585, -30794916, -7407745, -36459976, -28024124, -12218108, -13602698, -28261958, 4742718, +-11352135, -32633162, -29618632, 8381629, 19334332, -3375844, -24997246, 7250442, 775778, 7820062, +15829639, 15174119, -19333796, 24824374, 17243220, 1986959, 6961605, 17213156, -863288, 45338212, +-32424856, -15722802, -1046361, -37243272, 30444876, 2019708, 38256884, 11600707, 8586176, -2132988, +7605850, 15998753, 666257, -15281494, -215822, -8250632, 6088116, 5635534, 10951630, -4784594, +-13937169, -292595, 12986907, 5937256, -8262980, -4340065, 6834367, -9497783, -30065, 2684, +11921755, 4462471, -6483253, -3022046, -7369090, -12139725, -10334765, -768799, 2272038, -6115497, +-4340065, 1197222, -5960341, 9167071, 4571993, -301185, 5630702, 18711562, -7185481, -3781182, +2135136, 4894115, -10192494, 10899553, -3731253, -515933, 1889249, 8034810, 14186814, -20491288, +5557688, -40672804, -10709501, -2757906, -9705552, 44122736, 14224932, -12043625, -27643484, -14392435, +-11241540, -17920752, -12728672, 6526740, -40468256, -9023726, 30103962, -3798899, -3128347, -31360778, +29888678, 14436459, 892816, -12060805, 12864501, 6002754, -6861747, 13269838, -20795694, -5848135, +-10515691, 5753646, -4691715, -13516799, 15250892, -11571716, 6485401, 155156, -20205136, -12995497, +-2975339, -25837450, -24881282, -33880312, -8464307, 15122580, -11074036, -6444062, 19588808, -23934242, +-19233938, 20662014, 33823, -1508607, 19072340, -20401, -15948287, -9574556, 6567542, 13349295, +-20666308, -6856379, 25587804, 10669773, 24696062, 12394202, -4821638, 12597676, -792421, -33493228, +10617696, -25415468, 18386218, 2868501, 6863895, -10881300, -28512678, 5724655, -4093641, -25228638, +-9796820, 10858214, -12455405, 200253, 4112968, 7814693, -7925826, 111669, 1395328, -2476049, +5386963, -4066797, 3097745, 9883793, -1704028, 3164317, 2868501, -6966437, 2273648, 4559645, +2975876, -5295695, 6910603, 4315906, -309775, -7283191, -13983877, 2559801, -11026792, 8746164, +-11262478, 7143605, 9554155, 75162, 725850, -100395, 5509370, 453656, -4694400, 10645076, +9001715, -4752382, -2973728, -7070590, -11407433, 30144228, 10711648, 974421, 3835406, -8054138, +12144020, 18516678, 47413216, 41146860, 3704409, -18328236, 8542153, 23794118, 6974490, 18389976, +13502303, 8826158, -13885092, -18148922, -21498996, -1662689, 8161512, 15075872, 30838938, 16095927, +19821274, 11294690, 18385144, 9054865, 17713518, -11911018, 3437048, 33042258, -774168, 25381110, +6888591, 20493974, -32663226, -5498632, -9547175, -9827959, 7759396, 12596602, 23854786, 38235948, +32284196, -11578158, 5824513, -42827804, 10470593, 9644349, 37688876, -30054034, 23874650, -7937100, +-20837570, 15866683, 5057324, 13210246, 23644868, -7845295, -30046518, 15417322, -19281718, -26768384, +-12533251, 35369592, -30769682, -44008920, -22013854, -7454990, 23206782, -2609730, -15661061, -30440044, +-22737020, 14259828, -1973001, -769873, 19680078, -21543020, 6191196, 21700322, 8622684, 14456323, +21307870, -14584635, -7154879, -12361453, 16316044, 3385508, 8441221, 5694590, -14522358, 17914846, +4564477, 2647847, -7074348, -26749594, -25254408, 2291902, -11979201, -5240397, -11359652, -10186052, +-4289599, 4429722, -77846, -11433203, 14357539, 11719892, -1539209, -12953084, 2152316, 7386807, +-9004399, -4375498, -5142687, -163209, 6240588, -3125126, -6206228, -5359046, 4406100, 3345780, +7027640, 8392903, -4490925, -4138738, -5113159, 4835060, 5505075, 29584808, -9236327, -32948842, +2442226, -13827647, -46790448, -23850490, 61696668, 8499740, -27649388, -30626338, 3588445, 443992, +12867722, 15882789, -21369610, -14388140, -34181496, 7907035, -12294344, -8330626, 52649856, 11188390, +-7088844, -54248120, -3325379, -28999082, 28845000, 35342212, 3893925, 27485106, -32273458, -12832289, +-20319490, -4901632, 53787488, 66693324, 10855530, -17866528, -23638964, -48237316, 862215, 6192806, +58472760, 32479080, -8304856, -95820184, -49402324, 8217883, -8977019, 84109416, 28424094, -40401148, +-16572131, -72105520, -22581864, 2527052, 47390668, 48642116, 54863376, 2599529, 13190918, -5742372, +4972499, 67192080, -24533390, 49362596, -11685532, -50662360, -14900852, -53701588, -16979080, 70370352, +32269164, 50258096, -16358457, 39424580, -43807592, -6991670, 10788421, 21040508, 42091216, -14053133, +-593242, 2689723, -3637301, 6514929, 11474542, -11890617, 2155000, -12501576, -22394496, 10297184, +18822158, 10381473, -2042794, -13566728, -30056718, -29867202, -15431817, 10235981, 28376312, 15880642, +22043382, -29340532, -38216620, -29665876, 3748970, 33943128, 37967512, 28981902, -16822314, -73403672, +-46834472, 1574106, 37455872, 80064096, 31412854, 6726993, -35927940, -47772920, -16187732, -15082315, +42362872, 46466176, 17796196, -2554969, -39662948, -29931090, 9698573, 14046154, 34599184, 16772921, +-17053704, -12094091, -20512226, -9796820, 10481868, 9293235, 10623065, 13127568, -2254858, -3598109, +-42487428, 47144784, 269509, -12513924, -73339248, -19971062, -19661286, -33349348, 71384504, 592706, +32094144, -48824116, 27220428, 22523346, -21687974, 14086956, -4000225, 12579422, 202400, 36268316, +13074954, -35479116, 21553756, 17468168, 97174, 24453934, -17964774, -9466645, 31077310, 21508122, +20771536, 10146860, 18102750, -53372484, 46705084, -26839250, -16788490, 10069551, -37121404, 54458036, +-15295989, 5390721, 39611408, 1308891, -5779416, 21369072, 22116398, 38574712, -9210020, -35883380, +-36318244, 4037269, -12976170, 16910896, -21880174, -10757819, -14743012, 10932302, -68434400, 1122597, +51189568, 14113799, 20971788, -1906429, -5390184, 13448616, -17903034, -20720532, 13011603, 7121056, +-22123376, -24813636, 94836096, -10197863, -30539364, 8637179, 44571560, -1192927, -34711388, 14432164, +-6331856, -13180181, 28774670, 36295696, -26300770, -43349640, 10040560, 10508174, -9786620, -25898652, +1522029, 13157632, -3762928, -4151623, -1488743, -4407710, 7197292, 7808788, -8682276, 1057099, +4130685, 2026151, -5126581, 2079838, -60130, -11933030, 8897562, 3791383, 16993574, 8407935, +-6118181, 6941741, -3069828, 9975062, -461709, -2457258, 13908715, -3274376, 9607305, -2618320, +-10499048, -806380, 12545599, -3322694, 14246407, -13123273, 17824114, 4277251, -12386686, 5464272, +525597, 6625524, -1879585, -4919885, -1030792, 4426501, 14099841, -37022620, 13423383, 57549876, +91532192, -40630928, 30093762, -60501056, -17351132, -36971080, -4600447, 55722904, 59861108, 46959024, +-1064078, -38007240, -22386444, 20273856, 1983738, 10044318, 31521302, -820876, 15926812, -39790724, +-9617506, -23108534, -27382564, 15068893, 13227426, 649614, 28363964, -23864986, -340376, 6082211, +-32840930, -1106491, 2867428, -21263846, -7422777, 7741679, -13540958, 31256088, -9718974, 47435768, +36550708, -23597088, -6010270, -32738388, -36688148, -48518100, 16070694, 22200686, 65293168, 49236968, +23664732, 31264140, 6627672, -35715876, -22926536, -20033874, -23622320, -5217849, 14230300, -1359894, +-16012712, 4299799, -16151761, 10545218, 24781424, 4678293, -24456080, 19639812, -11356967, -12800613, +-24453396, 13030931, 11879343, 5731097, 3816079, 57070452, 44334800, 35697084, 6805913, -8227547, +-47555488, -10058277, -4279935, 47588776, 28008018, 12466143, 15153718, 41248328, -5760088, -16288127, +-21423296, -18504330, -7946763, -4043712, 4575751, 638340, 1132798, 21506512, -1636919, -12595528, +-6962679, -4205847, 1318018, 10748156, 19925428, 8536248, -1528472, 12000675, -18836652, 7929047, +19031000, 7627862, 36648420, -14412837, 1154809, 6361921, -13984950, 4158065, -22783728, -946503, +9247065, 579284, 10623065, 5844914, -1671816, -282931, -3534758, -369904, 5712844, -6225018, +-99629816, -56693568, -33673616, 57530012, 26042534, 152055264, 141695808, 147659904, 148116240, 159964448, +111466752, 59090160, 84242560, 51567524, -26058104, -46632072, -73427832, -140927536, -128137128, -131635912, +-96489128, -96582544, -72662792, -59163176, -32428076, 3716221, -56710748, -28170690, -12350178, -8388608, +-31039728, 8251169, 37126236, 42950748, 15083925, 50655380, 63181116, 16254841, 11815992, 13049184, +62054760, 65847756, 81843824, 92858800, 80160192, 92209728, 138712416, 56902948, 108121504, 148969872, +94772208, 113148768, 87891136, 44741212, 52166136, 58911920, 51282448, 71094056, 68924560, 43574052, +7606924, 21791054, 40251896, -2325725, 3892314, -19532974, -23656142, -69901664, -32472100, -121322088, +-153617552, -122124712, -140250544, -189429536, -184022176, -108413024, -205451904, -185438432, -170323904, -191462656, +-162617120, -123230128, -155881536, -113927768, -32573032, -75659608, -94646048, -36992552, -38039452, -30433602, +-34628172, -14936286, 8209830, 19231790, 36326296, 48377436, 54410256, 62463856, 63529008, 91105384, +54784992, 107318888, 119145080, 57133264, 110571784, 106077640, 66247724, 81231792, 117017456, 80155904, +132209296, 100470560, 125277752, 88282512, 79267920, 83147344, 76735496, 60887604, 68874632, 60604672, +46972984, 35913980, 34154116, 28337120, 11151346, -9550934, -8391829, -5737003, -43425340, -69110856, +-67138928, -68184752, -74896176, -68870336, -77496776, -55952688, -58488328, -47590920, -36050880, -28045600, +-32283122, -31396748, -24658480, -17442936, -19481434, -24896852, -13947906, -7675107, -15295452, -22257594, +-13764833, -10359461, -13959181, -16862578, -8163122, -1174137, 4849555, -214212, 3379603, 10998338, +11212549, -1090922, 3333968, 7406671, 4938139, -1600949, 1415192, 4003447, 3063922, -3249143, +187905, 2680060, 4547297, 2450279, 4648229, 915902, 2747705, 5120138, 9188009, 2951716, +1758252, 781147, 3065533, 819802, 2236604, -123480, 1125818, -2683818, -4330938, -7386807, +-2957622, -4794257, -3964792, -6763500, -1947231, -3599183, -2213519, -2121177, 2818036, 865973, +2314987, -579821, 4716411, 4029216, 7420093, 3398930, 8617315, 9112847, 11089606, 6109054, +10105521, 9527848, 9742596, 5087389, 7626788, 5652177, 8081518, 3922379, 4998805, 2237141, +4919348, 603443, 2341831, -515396, 1217086, -2415382, -983548, -3289408, -992674, -3783329, +-1522566, -3686156, -732292, -2981781, -195958, -2371896, 531502, -1712618, 1080184, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 10821707, -521302, -665720, -413927, -800475, -5559299, -5552856, 5318244, 1334661, -3243237, -4842039, --2394444, -3647501, -6410239, 8199093, 948114, 3001645, 4025995, 11791296, -338229, 1925756, --2865280, -992674, -2211908, -7601019, 1672353, -2288681, 720481, 5372467, -2135673, -469225, -1123671, 617402, -1298154, 303869, -7103876, 1522566, -202937, -2481417, 2179159, 1071058, --4791573, 7568269, 231928, 1137093, 6958384, -2655901, -3049964, -6833830, -3522410, 4817880, -268972, 5132486, -2515240, -5578089, 2423435, -5194763, -2379412, -10081899, 4141959, 3608310, -2134599, 3112778, 6931541, 1864553, -3082176, 3815005, 5753109, -3721589, 2835752, 38655, --1245541, -1901597, -1582159, 3954591, -812823, 4382478, -2209224, 1795296, -1372242, 1629940, -3126736, -1649268, 1125281, -1120450, 2523293, 2126546, 1722819, -817118, 583042, 127238, --1439351, 767189, 2466922, 498753, 824097, -1411434, 958315, -743566, 560493, -1068910, -229244, 1486059, -4308926, 1196148, -2683281, -5359046, -571231, -6338298, -7784092, -4845797, --3750043, -8494372, 303332, -3037616, -1758252, 2675228, 9059697, 881005, -2200634, -994822, -1424855, -128312, 3741990, 6509023, -583042, 7303055, -871342, -422517, -904091, 4183298, --5494874, 903554, 627602, -1286880, -345208, -3206193, -5458904, 7509751, -2568927, -498753, --1360431, 3345780, -3577171, -2995203, 1268626, 1163936, 5178120, -3513283, 4260071, -2447058, --4322348, -278636, -1801202, 1226213, 2310693, -32212, 3007551, 1504849, 2186138, -2811593, --3401077, -5532992, -4135517, 588411, 6659884, 907849, 5405753, 1473711, -2814277, 3797288, -1752884, -3965329, 7052873, 1246077, -6675990, 1803349, 3001645, 666794, 1989644, 1801202, --4731444, 1790465, 1639067, 1234266, -282931, 3544422, 1157494, -816044, -1148904, 48855, -1380295, 34360, 1878511, 15569, 85362, 1163936, -456340, -958851, -670015, 265214, --923955, -906238, 1212791, -36507, 1165547, 1103807, -282931, -20401, -7878581, -7091528, -1539746, 744640, 5942624, -4615479, 6111739, -3147137, -1331440, -9605694, -591095, 558883, --3256122, -649077, 5135171, 4744865, 7263327, -1855963, -1093069, 4433480, 2135136, 3970697, --9824201, 9646497, -2091649, -234076, 1551020, -1292248, -71941, -976568, -669478, 5938866, --174483, 7828652, -1364726, -3360812, -6602439, 658204, -2991445, -2733747, 4560719, 3411815, -4767414, 41876, 585726, -7150047, -5076652, -196495, 6395207, 2092186, -832150, 2019708, --2676838, 6694244, -374199, -6013491, -7485055, -2795487, 8367133, 6203007, 6459094, 2879776, -233002, -7136625, -3143916, -1116155, -4111894, 4196183, -747861, -2088428, 3685619, -10110890, -2980171, -1403381, 2363843, -890669, -2865817, 4427575, 1713155, -4847945, -5037997, 2449742, --1313723, 2874407, 804233, -2251637, 1548873, 1792612, -85899, 629750, 2147, 119185, --841277, -111669, -1387274, -81604, -1208496, 1886564, 1086090, -1602560, 758599, -482110, -528281, 435402, 694174, -1217623, -972273, 258772, 738734, -2157684, -1165547, 1946157, --2203318, -4399121, -665183, -3418794, 1593433, 5398774, 2188823, 141734, -2167885, -12720083, --8297340, -323733, 3722663, 4387309, 310848, 846645, -1732482, 4350265, 2005213, 3476239, --5466420, 5188321, 3063922, -6002217, 2288681, 5412733, -242129, 1717987, 947577, 4904316, --3789772, 2892661, -442919, -713501, -4675609, 244276, 5129265, -3277597, -2280628, -4479651, -6011344, -624918, 1220845, -4708895, -13237626, -3920768, 2018098, 1184874, 4979478, -3580929, --2120103, -2058900, -822486, -4316442, 200790, -3900367, 8784282, 3026878, 7178501, -7239704, --1349157, -3025805, 6732898, -2066953, -1157494, -5583458, 3513820, -151934, -3635153, 5636071, -1831267, 656593, 6580964, 1357210, -5629629, -832687, 766652, -1585917, -1848983, 8053, --4767414, 9580461, 4041027, 1364726, 6071473, 2568391, 2448668, 4371203, -1179505, 3694746, --2053531, 611496, 468151, 193810, -1028108, 644245, 373662, -381715, -564788, -650151, -548682, -518617, 130997, 3162707, 423591, -118648, 36507, -66572, -339302, 2506650, -746787, 1619740, 202400, -1641751, -310848, 3579855, -2858301, 2288681, 173409, -1411434, -5974837, 4620311, -499827, -8154533, -10976863, -8409546, 3098282, 52613, -4758287, -1184874, -523986, -1027034, 12284143, 2176475, -8924405, -2314451, -2685428, 500364, -4212289, 7018514, --5228049, -6767258, 6354404, -2624225, 1730872, 1750736, -2935073, -7973070, 1053341, -4220342, --3797288, -3872450, -505196, 6315213, -877247, -1353989, 9228811, 1760400, 1404991, -11857331, --1339493, 6425271, 7436736, -4050154, 2013803, 1086627, -11769821, -1505386, -724776, -1129040, -2961380, 204011, -6600828, 932008, -5277441, 5133023, -1794760, 6587406, 1301375, -7400229, -3315178, 14103062, -5444945, 198642, -10450729, 2609193, 8799314, -15686294, 2255932, -1044214, --1358820, 3995930, -2536715, -4037806, 7405598, 7151121, -6104223, -663572, 4642860, -1982127, -1105417, 2262911, 1384590, 528818, -1770063, 4025995, -88047, 2660732, 126165, 3607773, -2419140, 2307471, -166430, 844498, 3946001, 508417, -784905, 1464584, 1245541, 552977, -3286724, -1721745, 1063541, 609349, -697932, 325881, 1206349, 909459, 426812, -219580, -175020, 10685879, 1173600, 4871030, 7336341, -9069897, -2962454, -6885907, 3404299, 4227322, -7983808, 15858093, 2343442, -11829951, -1248225, -2859911, -1369558, -5027259, -105764, -424128, -5815923, 4884989, 1599339, -265214, 118112, -1684164, -1489280, 6967511, -2335925, -746787, -4970351, -472446, 2882997, -339302, 6360847, -4771709, -9895605, 12343199, -826244, 3063922, --9266392, 850940, -2892124, 13682155, 2024003, 6293201, -1380832, 5602785, 3547643, -12038256, --2025614, -6677064, -5997922, 1011465, 8517994, 1270774, -1824824, 13562433, -1509144, -7362111, --5860483, -3757560, 6473590, 20400558, -129386, 5806259, 1363652, -6236293, -1498407, 315680, -5912023, 9390409, 763967, 7590818, 6506339, -11884711, 323196, -1947231, -383863, 6278169, --2779918, 1793686, 2790118, -710817, -6282464, -4088809, -9142912, 2397129, 3549791, -228170, -1330903, 1566589, 1038845, 123480, -2879776, 833224, 1276142, 79457, 1178969, -1230508, -2359548, 35970, 1159104, -420907, -489089, -917512, 254477, -374199, 374736, 2254321, -3160559, 2913062, 354335, 956167, 1920387, 1358283, 17717, 1379758, 352187, -32749, -2383170, -3445638, -15752866, 3684545, -1730872, 5498632, 3274376, 14665166, 2765422, -2606508, -3321620, 11252814, 12138651, 5217312, 8500814, 8998493, -7036230, -5203890, -11300596, -11898133, -1148367, 5322538, -10348187, -7109245, -724239, -11645267, -9933186, 5077188, 1410360, -5105643, --3659849, -7600482, 6236830, 4807679, 10368051, 20169704, -2405182, -5566815, -2323577, -9764608, --301185, -7584376, -8705362, 10387378, 985158, 1525250, -13389561, 13743358, 2520072, -8382166, --2918430, 7124814, 279710, 1626182, -424128, 1245541, 3795677, -6400038, 7434052, 270583, --5552319, -1395864, -9375377, 1526861, -9621800, -8265128, 7027104, 7558069, -7696045, -11815455, -2829847, -5650567, -1064078, -3084324, 3799972, -3321084, 5079336, 1780801, 6191732, -1364189, -4570382, 2549600, -10901701, -3655554, 2415919, 1488743, -23085, -5203353, -3199214, -1499481, -3315715, -1963337, -1992865, 235149, 2610266, 2278480, -344134, -76236, -3288334, -1574642, -365072, -649077, -534187, 2587718, 48318, -102005, -2480344, 2241436, 464930, -750546, --666257, -1445793, -519154, -1609002, 2057289, -497679, 820876, -595927, 4031364, -6037114, --6407018, 7756174, -2333778, -1954747, 4625143, -6652905, -6808597, 7816304, 10678899, 63351, --566936, 3469260, -9043054, 15438797, -9475772, 1005022, 7518877, -3664681, 7018514, 8266739, -2836826, -8944269, 9570261, -1547262, 3637837, -7043747, -1227287, -13276281, 4585952, -7942469, -3072512, -13662291, 8000987, -10024454, -6847252, 5521181, 7896298, 2500745, 922344, 190589, --8451959, -8028368, -4992363, 20445654, 11341935, -3373697, -19026706, -2825552, 5402532, 10964515, --6242735, 769336, -13145284, -4663261, -1600412, 3295851, 1958505, -3089692, -214748, 5651640, --6502044, -489626, -7416335, 3917547, 4878546, 14093935, 6053220, -7037304, 2945274, -3974455, --10734734, -1483911, 6222334, 758062, 17712446, -10257993, -4939213, 2612414, -9221295, 4586488, -1480153, -1863479, 8996346, 2103997, 3973382, -53150, 326418, -1525250, 4446365, 6503654, -1597191, -2032593, 4856535, -2656437, 1522566, -4696010, -1532230, -133144, -6023692, -228707, --2348273, -1192927, -2345052, -4031364, -1814624, 1213865, 1512365, 922881, -1279363, -321049, -2647847, -4529043, 445603, 248571, -13652627, -1912334, 2703145, 8094403, 3820910, 10543071, -1827509, -12417824, 7882876, -10491531, -11398306, 402653, -1103270, 8704825, 10638634, 9942312, -14297946, 3604551, -14897631, 16325708, 8807904, -6465537, 12423193, -1519345, 1459752, -10858214, --3852586, -3061238, -4917201, 10569378, -17648020, -3877282, -8320963, -7756174, 1398549, 8582418, --4067871, -10048076, -10819559, -13918915, -14227079, -7097971, -2459943, 6222871, -11176042, -14321032, --8572755, -3527242, -7124814, -4625143, 12528956, -6958384, 1141924, 6781754, -11443940, -6665789, --7723962, 12492986, -5318780, 8176544, 17703856, -1611150, 3946538, 1846836, -5469104, -7013682, --4904853, 8494908, -1279900, 9710384, 547608, 7359964, 1659468, -12067784, 15064061, -6393596, --1952600, -12825846, 7915625, 17095044, 2842732, -2206003, 4482335, 2085744, -10893111, -4951561, -619549, -2450279, -1191853, -4562866, -4605279, -635655, 788663, 799401, 7872138, -792421, -983548, -3789235, 2980707, 445066, 5914707, 2697240, 2660732, 1243393, -728534, -2432562, --2168422, -3425773, -786516, -2550137, 1766305, 1032403, -71941, -1740536, -1587527, -1243930, --552977, 738198, -645319, 3370476, 25282324, 15727096, 11671574, -8471823, -17974438, -5019206, -11152956, -17281874, -9213779, 197569, 13600014, 9520332, 7955890, -10071161, 7626788, -2812130, -7624104, -2101850, 19604378, 11537356, -833761, -18051210, -1716376, 13438416, 11680700, 340913, -23737210, 10537702, -4615479, -151398, 1759863, -2935073, -6463389, -9235790, -1300301, -25673168, -7362648, -8902393, 1342714, -1044751, 6796249, 9351754, 368830, 2381023, -11264089, 7970386, --4011500, 16755204, 515396, 2265059, -41052372, -1920924, 11115375, 5521181, 11814381, -4159676, --11403138, 6253473, 2363843, -9599789, 9120363, 1668595, -8927090, -22549, 515933, 3002182, --3199751, -15233175, -14976014, -779537, -5305895, 4903779, 5452461, 2078764, 5794985, -18621368, --6200322, 787053, 4221953, 4291746, -7221988, 5631776, 1481764, -2809982, 2080375, 5061619, --3347927, 532039, -993211, 1991254, -3407520, -5706401, -1737851, 6405407, -4844723, 523986, --3586835, 2457258, -1406602, 2153389, 3925600, -639413, -3640522, 2904472, -505196, -4599373, --2681133, 1398549, 2175938, 53150, -1647120, 686658, -222801, 2528662, -1147830, 5081483, --1665374, -538482, 3202435, -17410186, -27923730, 4475893, 9709847, 10018548, 267899, 23198728, --16496433, 5413270, 3208878, -4748087, -14641544, -6215892, -8315594, 9817221, -4298726, -9072582, --14903537, -1417876, -5492190, -2891050, -11235634, 5965710, -681826, -5310190, 6089190, 7681549, -9162239, -11905112, 21698174, 1277216, -3093987, -13353590, -12492986, -2585570, -1622424, -13026636, --13515188, -10430328, 8749385, -6059125, 14495515, 4594005, 24174224, 8247411, 9187472, -3142842, -12969191, -2296734, 3132105, 18312666, -5581310, 6616397, -22059488, -28147068, 6137509, -1372242, --17830556, 1068910, 447750, -24299852, 6832219, -7189776, -4794257, -9517648, 9156870, -8895951, -506806, -1022202, 4414153, -20938, -13276281, 7747048, -1914482, 3058017, -16746077, -23159538, --20579336, 1099512, -4881231, -23448910, -4928475, 22442278, 11849278, 5172215, 4286914, -10436234, -343061, -2428804, 1005022, -3464965, -2770254, -163209, -256087, 854162, -33286, -7298223, --1746978, 1873143, -1363652, 3456912, 5733782, 4765266, -52613, -845572, -2493766, 7578470, -4387309, 4975720, 4177930, 3035468, -565862, -2937758, -2609730, 5907191, -4598836, 3510599, -4999342, 1920924, 2466385, 374199, 1478006, -4044249, 366683, -1187559, -3440806, 1631014, -2306934, 4565550, 16954920, 22275848, -664109, 5987722, 13997298, 11592654, -1199370, -28173912, -19332184, -1810866, 5254893, -5661304, 9911174, -591632, -12235825, 3556770, 22236120, 3523484, --14595373, 12987444, 9197672, 6150930, -10970420, 11971148, 8785892, 1185411, 14148696, -5487358, -3799972, 22925998, 16614007, 833761, 5272073, 11353746, -21469468, -4157528, -1348083, -3177739, --18802830, 5016522, 5722507, 1285806, -14569066, -20401, -24960740, 1550483, -17824114, -3313567, -9241159, -7399155, -10769630, -8466454, 5352603, 4600447, -9926206, 4194036, -3548717, 12570296, --6358699, -6993281, 6484864, 11772505, -1047972, 5276904, 4517769, -27034672, -559956, -1746441, --13843753, 1713692, 17850958, 5691369, -4905390, -1914482, 13074417, 9396852, 5768141, -3383361, -20702816, 499827, -17004312, 2594160, 20728050, 10997801, 10588705, 6499896, 1256278, -4773856, --5698348, 4041027, 3495030, 5224828, 7887708, -1585917, 6266358, 4062502, 767725, -705448, --462246, 3091303, -2614025, -716186, -2584497, 301721, -1119913, 3394098, -6025302, 1449552, -2318209, 1059783, 4950487, -8005819, -3296924, 1830730, 1828046, -425739, 5081483, -1362042, --1382443, -1896228, 796716, 3571265, 3929358, -4221953, 946503, 2631741, -4025995, -2244657, --2097555, -1680943, 11267847, -25412784, 11030550, -26303990, -30310658, -20287814, 1703491, -17374754, -16908212, -5622112, -20253992, -1145683, -4853850, 2354716, 4245039, -5269925, -2272575, 13167833, --3675955, 4739497, -7036230, -7853885, 22064320, -7763691, -2105071, -1117765, 5322002, 12891344, --26838176, -2314987, 14957224, 13597330, 13573707, 1262720, -4555887, 27522150, 9873056, 8339216, -11309186, 4485020, -3575024, -297427, 16866336, 4836670, -11286637, 5668820, 30741228, -16541530, -21358336, 7189776, -31695248, 7252589, 21902186, -2848637, 10053982, -632434, -23936926, 11768747, -30623116, 1195612, 20941186, -12979391, 18567680, 14542759, -127238, -3244311, 17070348, 8331163, --21617108, 21448530, -5076115, -5542656, 13688061, -6985765, -7550016, -10335302, 3779034, 607738, -4010963, -1459215, -4103305, 15966541, -14405320, 2000381, -2711198, -5366025, -11715597, -11988327, -7076496, -1423782, -7095823, -10762651, -8243116, -15100031, -10008348, -1138166, -6833830, -4848481, --750009, -8110509, 3482682, -7212324, -6543920, -2431488, 1986959, 1834488, -3148748, -1017370, --10428717, 3679713, -10957535, 7992398, -2598992, -1316408, -4652524, -3291556, -278636, 12253005, -6714645, -1935957, 3329674, 8233453, 5071283, -5475547, -2049773, 2844342, -4154307, 6588480, -1864553, -3426847, 2698313, -10006737, -17003238, 41217192, 20802138, -48654464, -19670950, 4861366, --7747584, 13703093, 16727287, 17382806, 20470352, -12683038, 38538740, -6033356, 1239098, -12800613, -14693620, 18941342, -13575318, -16071768, -3049427, -9373229, 1975148, 7388418, 1458678, -10220948, --3482145, 15481746, -979789, 7685844, 2200097, 18685256, 28699508, 10503879, -13386876, -32298690, --2406256, -5714991, 3886409, -7690676, 10846403, 17468706, 1888712, -6860137, -14345191, 34725884, -30898532, -4344360, 15234786, -8615168, -10900627, -34005940, 18927920, -16019691, -3338800, -1293322, --10251550, 5622112, 21002390, 2881386, -8849780, 9543954, -3939022, -14208826, 21470542, 4012573, --29061360, 37322192, -25188372, -13939853, 14836965, 14637785, 12803298, -78920, -31059056, -2990908, -3047279, -2115272, -10007811, 5778879, -5092758, 1925219, 4187593, -13310641, 15331423, 10177999, -5334887, 1722282, -5874979, -4869419, -10201, 5006322, 757525, 3791919, -2165737, -10383620, -3342558, -15080704, -4393215, 4395362, -4076998, 7776575, -6558952, -1320166, -5529771, 6131066, -851477, 7610145, 9497246, 6018860, 555661, -7289633, 5350993, 8251706, -1408212, -1319092, --8892193, -4369056, 10944114, -3964255, 7484518, -948651, -3720516, 3452617, 3864397, -547608, --5759015, 10679973, -5542119, -13366475, 1504312, 19072340, 5675263, -25914758, -20758650, -4989679, -32416266, 3370476, -15547245, -41812580, -11614128, -1916092, 9936407, 28748364, 22050362, -3095598, -284542, 18905372, 15411416, 697932, 4233227, -56419764, -35550520, -17348446, -27857158, 2401424, --15535434, 24936044, -5705327, -1978906, -114354, -10073846, -11469710, 18061412, 11275900, 6377490, --2550674, -8635569, -7707319, 8984535, -20205674, -7597797, 3579855, -7032472, -9838696, 8404177, --29209536, -40903120, 9725953, 12746926, 15868294, -23896662, -12690018, 13191992, 5020817, -39875552, --34997540, 2100239, -16936666, -17548162, 6518687, -32220308, 16338056, -12480101, 13427142, 12856985, --7986492, -18171470, -41929620, -14725832, -12597676, 23509578, -20344186, -13294534, 7175280, 24033564, -14024142, 108448, -8191040, -2719788, 7197292, -7240241, 24312736, -15090904, -11811160, -5731097, --2115272, 6662031, -17913772, 10526965, 8084739, -7525320, -12544526, 2896956, -729071, 12192338, --15666967, -20451024, -5185100, 3216394, -11305428, -1717987, -13670881, 577136, 3333432, -6163278, -9536438, -2580202, -6759742, 2953864, -4569309, 2776160, -3892314, -14204531, -623844, 1041530, -13558138, 10634876, -6523519, 53687, -727997, -8008504, -10253161, 4986994, -2601677, -3724811, -3103114, 16624745, 22834730, -3651259, -30718142, 13916768, -4612795, -12814035, -26491896, 7903814, -11315628, -39276404, 14817637, 13955959, 35404488, 3199751, -8900246, 2187749, -43376484, -12600897, --5299990, 551903, 7895761, -14835354, 26524644, 10618770, 32790464, -6622303, 28829968, 18517752, -11355357, 26294864, 13257490, 17335562, 22290880, 933082, -29382408, -27690192, 5531381, 31586800, -22746146, -42223288, -1335735, -7208566, -6058052, -4498442, -29348048, 7403987, -20952998, 18644990, --14072997, 42170672, -11275900, -60719028, -6614787, -20990578, 11882027, 8899709, 17089138, 39237748, -8604430, -5457293, 21349208, -12835510, 43761960, 7278896, 29204704, 13702556, 2465311, -11276437, --10308995, 72018552, 198642, -49946712, -10253698, 39663488, -24038396, 5073430, -11231339, 17323750, -36287104, 20947092, -42446624, -2883534, -41799696, 5604933, -6017249, -24749212, -3201898, -6818261, --11198053, -237834, -21582748, -23523000, 7750269, 8637179, -1496259, -26312580, 18530100, -23338852, --36207112, -15461345, 8559333, -9084930, -16354699, -20769388, 3390877, 8495982, -19064822, -14460081, -6505265, -8469139, -15483894, 12094091, 9384504, -1104880, -2333778, 487479, -3904662, -6382322, --7037841, 2171643, -14389214, 7929047, -5467494, 2865280, -18192944, 19422378, 9040906, -41660644, --15025406, -47251620, 7572564, 40818296, -29967598, -28954522, 27698244, 12372727, -46229956, -44668196, -14611479, 1893544, 6923488, 14606110, -1412507, -13726179, -6322192, 27808302, -19804094, 34442416, -6113886, -8623221, 7885023, 19706384, 357019, -6489696, -36916856, -16843252, 4572530, -20467666, -17692580, 25334402, 2287070, 3812857, -26293252, 31405338, -10765872, -14702747, 26409218, -10444287, -476205, -19098108, -1472100, -13564044, -45504640, 15302968, -4725001, 33676300, 44203268, -1103807, --7399692, -28215788, -8357470, -8189429, 42079944, -40075268, -27549530, -66123168, 1950452, -27648852, -7948374, 22312356, -11874511, -3895535, 45197016, 28418188, 20832738, 3057480, 2452426, 33520072, --36456220, -2080375, 10870025, -4831302, 20738786, 9280351, 86831888, 13186623, -23216982, -1809255, --15786689, -43084964, -16494822, 1098975, 7624104, -8694624, -8449274, -8556112, -30056182, -876710, --2126546, -16656957, 4687957, 10354092, -25720412, 1211181, -17332340, 6434935, -839129, -6650220, --3144990, 1010391, 15741592, 8468065, 1052804, 16522739, -10102300, -2717641, -4618701, 15515032, -11083163, 7110319, 16836272, 7151658, -11406896, -6167573, -1574642, 7642895, -14447196, -4340602, -826781, -17224966, 18562312, -5073967, 2954401, 40034464, -29463476, 10241886, -10197326, -14207215, --14024142, 60440928, -8245264, 29679834, -24107114, 41226316, -14467060, 611496, 22020834, 23795192, -56642028, 2697776, 9082245, 8321499, -24367496, 29311004, 8851928, -17289928, 28347858, -12002823, -35755604, 27462020, -8793409, 23878944, 820876, 22282828, 4196183, 37831684, -23467702, 18833432, --38643432, -9677098, 12528420, 40991168, -2152852, 3228742, 17333952, -230318, -14224395, -49555868, --30961346, 8349417, -21636972, -1050656, 15206332, -43218108, 25942676, -2017024, 30919470, -15059229, --29786672, -5259188, 80583248, 18252000, -74228312, 12829067, 18278308, 4425964, 79734992, -5027259, --59636696, 61138860, -21225192, -4155381, 66600448, -7428146, 43605192, 6898255, -40498320, 1466731, -68055904, -56271052, 28806346, -34587372, -39347268, 28446642, 16645146, -35699232, -13634911, -22287122, --12612708, -13157095, 5728950, -21995602, -5151277, 8342437, -22958748, -16289737, 10843182, -26426934, --7087233, 8874476, 2869575, -6365679, 18816788, -8835821, -7406671, -9836549, -18511310, 8218420, --12237972, -13571560, -3942243, 1875827, 25272124, -310848, 6526203, -22009024, 1326608, 27231166, --6080063, -3763465, -3121904, 870268, 979789, 18826990, -11206107, -12412992, -6934225, -19026706, --22984518, 5276368, -11991549, -9779104, 12961138, 3848291, 8131984, -3820910, -58302032, -5498632, -10304700, -23152022, -5318780, -63218160, 40555764, 59536836, -25441238, 7604777, -44894756, -135379520, --24564528, 5269925, 69392712, 56319368, -54955180, -50978040, -49257368, -42382736, -28075128, 34586296, --4995584, 77374376, 54227184, -16764868, -63642824, -163069712, -103739032, 6325413, 181086016, 135910480, -26263188, -71600864, -175885888, -182378800, -12018392, 104603928, 164545568, 178100480, 19654844, -58943596, --72132904, -98258648, -86379848, 4852240, 61733176, 111725520, 78820704, 61002496, -79630304, -100080792, --115169552, -141153568, 16868484, 166899744, 166695200, 32629940, -58611272, -158563744, -205415408, -70887360, -17037598, 75745504, 189576640, 68350648, 631360, -105001752, -83983256, -36880348, 43899936, 72644000, -130430104, 32771138, 68586872, -6544457, -85787680, -72896336, 5005785, 82432768, 92081952, -42650100, --78362752, -98303752, -23482196, 14754823, 23898808, 13685913, -47706888, -43186968, -16593069, 29883308, -772557, -683437, 7695508, 23654532, 20822002, 14307610, -7809325, -60369524, -38610684, 3206730, -31199716, 55274080, 28061706, -17208860, -36811628, -50813760, -30370250, -21180094, -25311852, 55392732, -59875064, 63684700, 54601384, -26386132, -103004056, -89175336, -46748572, 38631620, 131573640, 125579472, -7672422, -81559280, -124838056, -114272440, -6840273, 61240864, 59483688, 27192512, 26386132, 29528, --33195266, -41850700, -50584516, -9192304, 48083232, 56997436, 41795400, 3748970, -38836704, -36971080, --16478179, 29433410, 21726628, -50476604, 53150, 26752278, -21569862, 29518774, -1673964, -4786204, --2572149, 6376953, 21554294, -8125542, 25490094, 18197776, 10101226, 12293270, 8449274, -1706713, --15333033, 24830816, -788127, 15366856, -9293235, 13746580, -4989679, -1336809, 8522289, -11455215, --13110388, 2426657, -5883032, 20226074, 19002010, -17238924, 8465917, -10035191, 11803644, 831613, -7612293, 3630858, 10008348, -12098386, 8391829, -14008036, -6725382, -1437203, -2035815, 12376485, --22644678, -3803194, -9566503, -19219978, -2127620, -7189239, 4371740, 19479288, -6033892, -25567940, -3853123, 16851842, 31343060, -777389, 2445447, -16469052, -13325136, 15377057, 1002338, -4974109, -111132, 26499948, 11122892, 8795019, 13647795, 24476482, -27343910, 11422466, -4932770, -39674224, --5012764, 31838056, -6094022, 28401544, -1547799, 17888002, -20703890, 13269838, -14176076, -3462818, -27037356, -7192460, 2229625, 1242319, -405874, 10664941, -324807, -3416110, -2604361, -74088, --2208687, 5688148, 7566659, 12141336, 1027034, -9107478, -4684736, -11973832, 4501663, -12435541, -6833830, 6106907, -4317516, 8060580, 2086280, -12907987, -37581, 697395, 4089883, -22665616, -7916162, 5912023, 1790465, 91805, -6710350, 8387535, -12076374, 12667469, -1179505, -695785, -2963528, -4962298, 9835475, -10552198, 2920578, -5477694, 6081137, -19013284, 47965120, 81512576, -7423314, -53997404, 18413598, -4435091, 66858684, 30808338, 65733400, -6538551, -30572114, -8833137, -14940044, 27050778, 21933324, -12487617, 2577517, 11267847, 8936216, 25543782, -17642652, 3993246, --23955180, -4334696, 843424, 5908265, 13242458, 2425046, -9917079, 19487340, -1316408, -17914846, -24466282, -4457639, -8039105, 5997922, -3028489, 18283676, 30275762, 376347, 8311836, -10353556, --5693516, 16856672, 13014288, 13903346, 3386582, -9373766, -18132278, -19531364, -20288888, 16362752, -18923626, 17654464, 27404576, 28407450, 13015362, 1199370, -24495810, 15067819, -2088965, -23088670, -28744068, -2372970, 19117974, 9395778, -27579596, 7504382, -7751879, 5735392, 19703700, 3275986, --22933514, -17028472, -13259101, -24988656, 15696495, -1793686, 26620208, -539555, 4895726, 250719, --13364864, -9296994, 5596343, -21458730, 7079717, -475668, -3439195, 7389491, -11097122, 6922414, -5346161, -1197222, -9279277, 12840878, -2605972, 11367168, -18888192, -14666240, -7808788, -7823283, -9973988, -4125853, -1699196, -2716567, -9074729, -5544803, -5288179, -194884, 18903224, 2217814, --3863860, -496069, -9805947, 7501161, -5111011, -1227287, -3250753, 8437463, 36507, 959925, --1038845, -6425808, -3441880, 9241159, -2515777, 6572911, -1159104, 3429532, -5109938, -28552942, --65011308, 4744328, 89210768, 118767656, 101303248, 70457328, -3311420, 4706748, -52125332, -61282740, --103879688, -77898360, -83468928, -26594438, 6691022, 27429272, 45172320, 113286208, 93643168, 63633700, -20170778, -9615358, -41155988, -30057792, -42777876, -53644680, -30360050, -30530776, -38336880, -17348446, --25334402, 5649493, 17346836, 15196668, 47790636, 44765908, 39090644, 26130044, 29532196, 19139448, -35432408, 8970039, 30615064, 1728188, -8398272, -53625352, -23795192, -64705828, -75954888, -84239344, --66636956, -49464600, -17974438, 13127031, 48308180, 52161840, 40531608, 84412216, 67822904, 73169064, -67132488, 63282584, 24959128, 41055592, -16630650, -40123048, -42747808, -99572912, -100165080, -96122440, --102972912, -84306448, -29242822, -13888314, 22510460, 57677652, 62144956, 76663016, 91600912, 82349552, -63603096, 58426588, 42465416, 16350940, -1871532, -34019364, -50906636, -50676856, -58525908, -48484812, --55070072, -56734908, -48487496, -37178848, -19087372, 2595771, 24607478, 48290464, 44605920, 44634912, -51929376, 58048092, 44393856, 45098768, 19713364, -20613158, -15583752, -36516348, -47173236, -38810400, --32452772, -22283900, -28722594, -20259898, 2254321, 6353331, 9755481, 25691420, 22063246, 14522358, -3287798, 9918690, 9507447, 3262028, 12091407, -7295539, -8662949, -6455336, 4447439, -1017370, -48855, -303332, -1787243, -8840653, -6584722, -2343979, 8702141, 304943, 3943317, 1676648, --4942434, -5567888, -3158949, -3806415, 1180579, 121333, 1454383, 1299228, 2029909, -1902134, -2105608, -1127966, 479426, 1888712, 5562520, 2669322, 6485938, 1168231, -132070, -1556389, --1404454, -4114579, -375810, -2189360, -1153199, -3153580, -266825, -1472100, 671089, -2884071, --455803, -5906, 2117419, -1343788, -422517, -2056753, 1153736, 119185, 2778307, 2760053, -3805878, 1225139, 2491081, -123480, 122943, -1189706, 1217623, -846109, 855235, -763967, -435402, -2466922, -1672353, -4452808, -2128693, -2601677, -443455, -1707786, 783832, -439697, -1525250, 427349, 3149822, 1668595, 3381750, 1658931, 3090766, 1318555, 2245731, -209380, -202937, -2684355, -1382980, -3191161, -1843615, -3696893, -1268626, -2251100, 301721, -311385, -1885491, 256624, 2110440, 423054, 1921461, 91805, 1635309, -373662, 1122060, -771484, -727997, -1044751, 649614, -1047972, 668404, -1016297, 721555, -921271, 821949, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +521302, -665720, -413927, -800475, -5559299, -5552856, 5318244, 1334661, -3243237, -4842039, +-2394444, -3647501, -6410239, 8199093, 948114, 3001645, 4025995, 11791296, -338229, 1925756, +-2865280, -992674, -2211908, -7601019, 1672353, -2288681, 720481, 5372467, -2135673, -469225, +1123671, 617402, -1298154, 303869, -7103876, 1522566, -202937, -2481417, 2179159, 1071058, +-4791573, 7568269, 231928, 1137093, 6958384, -2655901, -3049964, -6833830, -3522410, 4817880, +268972, 5132486, -2515240, -5578089, 2423435, -5194763, -2379412, -10081899, 4141959, 3608310, +2134599, 3112778, 6931541, 1864553, -3082176, 3815005, 5753109, -3721589, 2835752, 38655, +-1245541, -1901597, -1582159, 3954591, -812823, 4382478, -2209224, 1795296, -1372242, 1629940, +3126736, -1649268, 1125281, -1120450, 2523293, 2126546, 1722819, -817118, 583042, 127238, +-1439351, 767189, 2466922, 498753, 824097, -1411434, 958315, -743566, 560493, -1068910, +229244, 1486059, -4308926, 1196148, -2683281, -5359046, -571231, -6338298, -7784092, -4845797, +-3750043, -8494372, 303332, -3037616, -1758252, 2675228, 9059697, 881005, -2200634, -994822, +1424855, -128312, 3741990, 6509023, -583042, 7303055, -871342, -422517, -904091, 4183298, +-5494874, 903554, 627602, -1286880, -345208, -3206193, -5458904, 7509751, -2568927, -498753, +-1360431, 3345780, -3577171, -2995203, 1268626, 1163936, 5178120, -3513283, 4260071, -2447058, +-4322348, -278636, -1801202, 1226213, 2310693, -32212, 3007551, 1504849, 2186138, -2811593, +-3401077, -5532992, -4135517, 588411, 6659884, 907849, 5405753, 1473711, -2814277, 3797288, +1752884, -3965329, 7052873, 1246077, -6675990, 1803349, 3001645, 666794, 1989644, 1801202, +-4731444, 1790465, 1639067, 1234266, -282931, 3544422, 1157494, -816044, -1148904, 48855, +1380295, 34360, 1878511, 15569, 85362, 1163936, -456340, -958851, -670015, 265214, +-923955, -906238, 1212791, -36507, 1165547, 1103807, -282931, -20401, -7878581, -7091528, +1539746, 744640, 5942624, -4615479, 6111739, -3147137, -1331440, -9605694, -591095, 558883, +-3256122, -649077, 5135171, 4744865, 7263327, -1855963, -1093069, 4433480, 2135136, 3970697, +-9824201, 9646497, -2091649, -234076, 1551020, -1292248, -71941, -976568, -669478, 5938866, +-174483, 7828652, -1364726, -3360812, -6602439, 658204, -2991445, -2733747, 4560719, 3411815, +4767414, 41876, 585726, -7150047, -5076652, -196495, 6395207, 2092186, -832150, 2019708, +-2676838, 6694244, -374199, -6013491, -7485055, -2795487, 8367133, 6203007, 6459094, 2879776, +233002, -7136625, -3143916, -1116155, -4111894, 4196183, -747861, -2088428, 3685619, -10110890, +2980171, -1403381, 2363843, -890669, -2865817, 4427575, 1713155, -4847945, -5037997, 2449742, +-1313723, 2874407, 804233, -2251637, 1548873, 1792612, -85899, 629750, 2147, 119185, +-841277, -111669, -1387274, -81604, -1208496, 1886564, 1086090, -1602560, 758599, -482110, +528281, 435402, 694174, -1217623, -972273, 258772, 738734, -2157684, -1165547, 1946157, +-2203318, -4399121, -665183, -3418794, 1593433, 5398774, 2188823, 141734, -2167885, -12720083, +-8297340, -323733, 3722663, 4387309, 310848, 846645, -1732482, 4350265, 2005213, 3476239, +-5466420, 5188321, 3063922, -6002217, 2288681, 5412733, -242129, 1717987, 947577, 4904316, +-3789772, 2892661, -442919, -713501, -4675609, 244276, 5129265, -3277597, -2280628, -4479651, +6011344, -624918, 1220845, -4708895, -13237626, -3920768, 2018098, 1184874, 4979478, -3580929, +-2120103, -2058900, -822486, -4316442, 200790, -3900367, 8784282, 3026878, 7178501, -7239704, +-1349157, -3025805, 6732898, -2066953, -1157494, -5583458, 3513820, -151934, -3635153, 5636071, +1831267, 656593, 6580964, 1357210, -5629629, -832687, 766652, -1585917, -1848983, 8053, +-4767414, 9580461, 4041027, 1364726, 6071473, 2568391, 2448668, 4371203, -1179505, 3694746, +-2053531, 611496, 468151, 193810, -1028108, 644245, 373662, -381715, -564788, -650151, +548682, -518617, 130997, 3162707, 423591, -118648, 36507, -66572, -339302, 2506650, +746787, 1619740, 202400, -1641751, -310848, 3579855, -2858301, 2288681, 173409, -1411434, +5974837, 4620311, -499827, -8154533, -10976863, -8409546, 3098282, 52613, -4758287, -1184874, +523986, -1027034, 12284143, 2176475, -8924405, -2314451, -2685428, 500364, -4212289, 7018514, +-5228049, -6767258, 6354404, -2624225, 1730872, 1750736, -2935073, -7973070, 1053341, -4220342, +-3797288, -3872450, -505196, 6315213, -877247, -1353989, 9228811, 1760400, 1404991, -11857331, +-1339493, 6425271, 7436736, -4050154, 2013803, 1086627, -11769821, -1505386, -724776, -1129040, +2961380, 204011, -6600828, 932008, -5277441, 5133023, -1794760, 6587406, 1301375, -7400229, +3315178, 14103062, -5444945, 198642, -10450729, 2609193, 8799314, -15686294, 2255932, -1044214, +-1358820, 3995930, -2536715, -4037806, 7405598, 7151121, -6104223, -663572, 4642860, -1982127, +1105417, 2262911, 1384590, 528818, -1770063, 4025995, -88047, 2660732, 126165, 3607773, +2419140, 2307471, -166430, 844498, 3946001, 508417, -784905, 1464584, 1245541, 552977, +3286724, -1721745, 1063541, 609349, -697932, 325881, 1206349, 909459, 426812, -219580, +175020, 10685879, 1173600, 4871030, 7336341, -9069897, -2962454, -6885907, 3404299, 4227322, +7983808, 15858093, 2343442, -11829951, -1248225, -2859911, -1369558, -5027259, -105764, -424128, +5815923, 4884989, 1599339, -265214, 118112, -1684164, -1489280, 6967511, -2335925, -746787, +4970351, -472446, 2882997, -339302, 6360847, -4771709, -9895605, 12343199, -826244, 3063922, +-9266392, 850940, -2892124, 13682155, 2024003, 6293201, -1380832, 5602785, 3547643, -12038256, +-2025614, -6677064, -5997922, 1011465, 8517994, 1270774, -1824824, 13562433, -1509144, -7362111, +-5860483, -3757560, 6473590, 20400558, -129386, 5806259, 1363652, -6236293, -1498407, 315680, +5912023, 9390409, 763967, 7590818, 6506339, -11884711, 323196, -1947231, -383863, 6278169, +-2779918, 1793686, 2790118, -710817, -6282464, -4088809, -9142912, 2397129, 3549791, -228170, +1330903, 1566589, 1038845, 123480, -2879776, 833224, 1276142, 79457, 1178969, -1230508, +2359548, 35970, 1159104, -420907, -489089, -917512, 254477, -374199, 374736, 2254321, +3160559, 2913062, 354335, 956167, 1920387, 1358283, 17717, 1379758, 352187, -32749, +2383170, -3445638, -15752866, 3684545, -1730872, 5498632, 3274376, 14665166, 2765422, -2606508, +3321620, 11252814, 12138651, 5217312, 8500814, 8998493, -7036230, -5203890, -11300596, -11898133, +1148367, 5322538, -10348187, -7109245, -724239, -11645267, -9933186, 5077188, 1410360, -5105643, +-3659849, -7600482, 6236830, 4807679, 10368051, 20169704, -2405182, -5566815, -2323577, -9764608, +-301185, -7584376, -8705362, 10387378, 985158, 1525250, -13389561, 13743358, 2520072, -8382166, +-2918430, 7124814, 279710, 1626182, -424128, 1245541, 3795677, -6400038, 7434052, 270583, +-5552319, -1395864, -9375377, 1526861, -9621800, -8265128, 7027104, 7558069, -7696045, -11815455, +2829847, -5650567, -1064078, -3084324, 3799972, -3321084, 5079336, 1780801, 6191732, -1364189, +4570382, 2549600, -10901701, -3655554, 2415919, 1488743, -23085, -5203353, -3199214, -1499481, +3315715, -1963337, -1992865, 235149, 2610266, 2278480, -344134, -76236, -3288334, -1574642, +365072, -649077, -534187, 2587718, 48318, -102005, -2480344, 2241436, 464930, -750546, +-666257, -1445793, -519154, -1609002, 2057289, -497679, 820876, -595927, 4031364, -6037114, +-6407018, 7756174, -2333778, -1954747, 4625143, -6652905, -6808597, 7816304, 10678899, 63351, +-566936, 3469260, -9043054, 15438797, -9475772, 1005022, 7518877, -3664681, 7018514, 8266739, +2836826, -8944269, 9570261, -1547262, 3637837, -7043747, -1227287, -13276281, 4585952, -7942469, +3072512, -13662291, 8000987, -10024454, -6847252, 5521181, 7896298, 2500745, 922344, 190589, +-8451959, -8028368, -4992363, 20445654, 11341935, -3373697, -19026706, -2825552, 5402532, 10964515, +-6242735, 769336, -13145284, -4663261, -1600412, 3295851, 1958505, -3089692, -214748, 5651640, +-6502044, -489626, -7416335, 3917547, 4878546, 14093935, 6053220, -7037304, 2945274, -3974455, +-10734734, -1483911, 6222334, 758062, 17712446, -10257993, -4939213, 2612414, -9221295, 4586488, +1480153, -1863479, 8996346, 2103997, 3973382, -53150, 326418, -1525250, 4446365, 6503654, +1597191, -2032593, 4856535, -2656437, 1522566, -4696010, -1532230, -133144, -6023692, -228707, +-2348273, -1192927, -2345052, -4031364, -1814624, 1213865, 1512365, 922881, -1279363, -321049, +2647847, -4529043, 445603, 248571, -13652627, -1912334, 2703145, 8094403, 3820910, 10543071, +1827509, -12417824, 7882876, -10491531, -11398306, 402653, -1103270, 8704825, 10638634, 9942312, +14297946, 3604551, -14897631, 16325708, 8807904, -6465537, 12423193, -1519345, 1459752, -10858214, +-3852586, -3061238, -4917201, 10569378, -17648020, -3877282, -8320963, -7756174, 1398549, 8582418, +-4067871, -10048076, -10819559, -13918915, -14227079, -7097971, -2459943, 6222871, -11176042, -14321032, +-8572755, -3527242, -7124814, -4625143, 12528956, -6958384, 1141924, 6781754, -11443940, -6665789, +-7723962, 12492986, -5318780, 8176544, 17703856, -1611150, 3946538, 1846836, -5469104, -7013682, +-4904853, 8494908, -1279900, 9710384, 547608, 7359964, 1659468, -12067784, 15064061, -6393596, +-1952600, -12825846, 7915625, 17095044, 2842732, -2206003, 4482335, 2085744, -10893111, -4951561, +619549, -2450279, -1191853, -4562866, -4605279, -635655, 788663, 799401, 7872138, -792421, +983548, -3789235, 2980707, 445066, 5914707, 2697240, 2660732, 1243393, -728534, -2432562, +-2168422, -3425773, -786516, -2550137, 1766305, 1032403, -71941, -1740536, -1587527, -1243930, +-552977, 738198, -645319, 3370476, 25282324, 15727096, 11671574, -8471823, -17974438, -5019206, +11152956, -17281874, -9213779, 197569, 13600014, 9520332, 7955890, -10071161, 7626788, -2812130, +7624104, -2101850, 19604378, 11537356, -833761, -18051210, -1716376, 13438416, 11680700, 340913, +23737210, 10537702, -4615479, -151398, 1759863, -2935073, -6463389, -9235790, -1300301, -25673168, +7362648, -8902393, 1342714, -1044751, 6796249, 9351754, 368830, 2381023, -11264089, 7970386, +-4011500, 16755204, 515396, 2265059, -41052372, -1920924, 11115375, 5521181, 11814381, -4159676, +-11403138, 6253473, 2363843, -9599789, 9120363, 1668595, -8927090, -22549, 515933, 3002182, +-3199751, -15233175, -14976014, -779537, -5305895, 4903779, 5452461, 2078764, 5794985, -18621368, +-6200322, 787053, 4221953, 4291746, -7221988, 5631776, 1481764, -2809982, 2080375, 5061619, +-3347927, 532039, -993211, 1991254, -3407520, -5706401, -1737851, 6405407, -4844723, 523986, +-3586835, 2457258, -1406602, 2153389, 3925600, -639413, -3640522, 2904472, -505196, -4599373, +-2681133, 1398549, 2175938, 53150, -1647120, 686658, -222801, 2528662, -1147830, 5081483, +-1665374, -538482, 3202435, -17410186, -27923730, 4475893, 9709847, 10018548, 267899, 23198728, +-16496433, 5413270, 3208878, -4748087, -14641544, -6215892, -8315594, 9817221, -4298726, -9072582, +-14903537, -1417876, -5492190, -2891050, -11235634, 5965710, -681826, -5310190, 6089190, 7681549, +9162239, -11905112, 21698174, 1277216, -3093987, -13353590, -12492986, -2585570, -1622424, -13026636, +-13515188, -10430328, 8749385, -6059125, 14495515, 4594005, 24174224, 8247411, 9187472, -3142842, +12969191, -2296734, 3132105, 18312666, -5581310, 6616397, -22059488, -28147068, 6137509, -1372242, +-17830556, 1068910, 447750, -24299852, 6832219, -7189776, -4794257, -9517648, 9156870, -8895951, +506806, -1022202, 4414153, -20938, -13276281, 7747048, -1914482, 3058017, -16746077, -23159538, +-20579336, 1099512, -4881231, -23448910, -4928475, 22442278, 11849278, 5172215, 4286914, -10436234, +343061, -2428804, 1005022, -3464965, -2770254, -163209, -256087, 854162, -33286, -7298223, +-1746978, 1873143, -1363652, 3456912, 5733782, 4765266, -52613, -845572, -2493766, 7578470, +4387309, 4975720, 4177930, 3035468, -565862, -2937758, -2609730, 5907191, -4598836, 3510599, +4999342, 1920924, 2466385, 374199, 1478006, -4044249, 366683, -1187559, -3440806, 1631014, +2306934, 4565550, 16954920, 22275848, -664109, 5987722, 13997298, 11592654, -1199370, -28173912, +19332184, -1810866, 5254893, -5661304, 9911174, -591632, -12235825, 3556770, 22236120, 3523484, +-14595373, 12987444, 9197672, 6150930, -10970420, 11971148, 8785892, 1185411, 14148696, -5487358, +3799972, 22925998, 16614007, 833761, 5272073, 11353746, -21469468, -4157528, -1348083, -3177739, +-18802830, 5016522, 5722507, 1285806, -14569066, -20401, -24960740, 1550483, -17824114, -3313567, +9241159, -7399155, -10769630, -8466454, 5352603, 4600447, -9926206, 4194036, -3548717, 12570296, +-6358699, -6993281, 6484864, 11772505, -1047972, 5276904, 4517769, -27034672, -559956, -1746441, +-13843753, 1713692, 17850958, 5691369, -4905390, -1914482, 13074417, 9396852, 5768141, -3383361, +20702816, 499827, -17004312, 2594160, 20728050, 10997801, 10588705, 6499896, 1256278, -4773856, +-5698348, 4041027, 3495030, 5224828, 7887708, -1585917, 6266358, 4062502, 767725, -705448, +-462246, 3091303, -2614025, -716186, -2584497, 301721, -1119913, 3394098, -6025302, 1449552, +2318209, 1059783, 4950487, -8005819, -3296924, 1830730, 1828046, -425739, 5081483, -1362042, +-1382443, -1896228, 796716, 3571265, 3929358, -4221953, 946503, 2631741, -4025995, -2244657, +-2097555, -1680943, 11267847, -25412784, 11030550, -26303990, -30310658, -20287814, 1703491, -17374754, +16908212, -5622112, -20253992, -1145683, -4853850, 2354716, 4245039, -5269925, -2272575, 13167833, +-3675955, 4739497, -7036230, -7853885, 22064320, -7763691, -2105071, -1117765, 5322002, 12891344, +-26838176, -2314987, 14957224, 13597330, 13573707, 1262720, -4555887, 27522150, 9873056, 8339216, +11309186, 4485020, -3575024, -297427, 16866336, 4836670, -11286637, 5668820, 30741228, -16541530, +21358336, 7189776, -31695248, 7252589, 21902186, -2848637, 10053982, -632434, -23936926, 11768747, +30623116, 1195612, 20941186, -12979391, 18567680, 14542759, -127238, -3244311, 17070348, 8331163, +-21617108, 21448530, -5076115, -5542656, 13688061, -6985765, -7550016, -10335302, 3779034, 607738, +4010963, -1459215, -4103305, 15966541, -14405320, 2000381, -2711198, -5366025, -11715597, -11988327, +7076496, -1423782, -7095823, -10762651, -8243116, -15100031, -10008348, -1138166, -6833830, -4848481, +-750009, -8110509, 3482682, -7212324, -6543920, -2431488, 1986959, 1834488, -3148748, -1017370, +-10428717, 3679713, -10957535, 7992398, -2598992, -1316408, -4652524, -3291556, -278636, 12253005, +6714645, -1935957, 3329674, 8233453, 5071283, -5475547, -2049773, 2844342, -4154307, 6588480, +1864553, -3426847, 2698313, -10006737, -17003238, 41217192, 20802138, -48654464, -19670950, 4861366, +-7747584, 13703093, 16727287, 17382806, 20470352, -12683038, 38538740, -6033356, 1239098, -12800613, +14693620, 18941342, -13575318, -16071768, -3049427, -9373229, 1975148, 7388418, 1458678, -10220948, +-3482145, 15481746, -979789, 7685844, 2200097, 18685256, 28699508, 10503879, -13386876, -32298690, +-2406256, -5714991, 3886409, -7690676, 10846403, 17468706, 1888712, -6860137, -14345191, 34725884, +30898532, -4344360, 15234786, -8615168, -10900627, -34005940, 18927920, -16019691, -3338800, -1293322, +-10251550, 5622112, 21002390, 2881386, -8849780, 9543954, -3939022, -14208826, 21470542, 4012573, +-29061360, 37322192, -25188372, -13939853, 14836965, 14637785, 12803298, -78920, -31059056, -2990908, +3047279, -2115272, -10007811, 5778879, -5092758, 1925219, 4187593, -13310641, 15331423, 10177999, +5334887, 1722282, -5874979, -4869419, -10201, 5006322, 757525, 3791919, -2165737, -10383620, +3342558, -15080704, -4393215, 4395362, -4076998, 7776575, -6558952, -1320166, -5529771, 6131066, +851477, 7610145, 9497246, 6018860, 555661, -7289633, 5350993, 8251706, -1408212, -1319092, +-8892193, -4369056, 10944114, -3964255, 7484518, -948651, -3720516, 3452617, 3864397, -547608, +-5759015, 10679973, -5542119, -13366475, 1504312, 19072340, 5675263, -25914758, -20758650, -4989679, +32416266, 3370476, -15547245, -41812580, -11614128, -1916092, 9936407, 28748364, 22050362, -3095598, +284542, 18905372, 15411416, 697932, 4233227, -56419764, -35550520, -17348446, -27857158, 2401424, +-15535434, 24936044, -5705327, -1978906, -114354, -10073846, -11469710, 18061412, 11275900, 6377490, +-2550674, -8635569, -7707319, 8984535, -20205674, -7597797, 3579855, -7032472, -9838696, 8404177, +-29209536, -40903120, 9725953, 12746926, 15868294, -23896662, -12690018, 13191992, 5020817, -39875552, +-34997540, 2100239, -16936666, -17548162, 6518687, -32220308, 16338056, -12480101, 13427142, 12856985, +-7986492, -18171470, -41929620, -14725832, -12597676, 23509578, -20344186, -13294534, 7175280, 24033564, +14024142, 108448, -8191040, -2719788, 7197292, -7240241, 24312736, -15090904, -11811160, -5731097, +-2115272, 6662031, -17913772, 10526965, 8084739, -7525320, -12544526, 2896956, -729071, 12192338, +-15666967, -20451024, -5185100, 3216394, -11305428, -1717987, -13670881, 577136, 3333432, -6163278, +9536438, -2580202, -6759742, 2953864, -4569309, 2776160, -3892314, -14204531, -623844, 1041530, +13558138, 10634876, -6523519, 53687, -727997, -8008504, -10253161, 4986994, -2601677, -3724811, +3103114, 16624745, 22834730, -3651259, -30718142, 13916768, -4612795, -12814035, -26491896, 7903814, +11315628, -39276404, 14817637, 13955959, 35404488, 3199751, -8900246, 2187749, -43376484, -12600897, +-5299990, 551903, 7895761, -14835354, 26524644, 10618770, 32790464, -6622303, 28829968, 18517752, +11355357, 26294864, 13257490, 17335562, 22290880, 933082, -29382408, -27690192, 5531381, 31586800, +22746146, -42223288, -1335735, -7208566, -6058052, -4498442, -29348048, 7403987, -20952998, 18644990, +-14072997, 42170672, -11275900, -60719028, -6614787, -20990578, 11882027, 8899709, 17089138, 39237748, +8604430, -5457293, 21349208, -12835510, 43761960, 7278896, 29204704, 13702556, 2465311, -11276437, +-10308995, 72018552, 198642, -49946712, -10253698, 39663488, -24038396, 5073430, -11231339, 17323750, +36287104, 20947092, -42446624, -2883534, -41799696, 5604933, -6017249, -24749212, -3201898, -6818261, +-11198053, -237834, -21582748, -23523000, 7750269, 8637179, -1496259, -26312580, 18530100, -23338852, +-36207112, -15461345, 8559333, -9084930, -16354699, -20769388, 3390877, 8495982, -19064822, -14460081, +6505265, -8469139, -15483894, 12094091, 9384504, -1104880, -2333778, 487479, -3904662, -6382322, +-7037841, 2171643, -14389214, 7929047, -5467494, 2865280, -18192944, 19422378, 9040906, -41660644, +-15025406, -47251620, 7572564, 40818296, -29967598, -28954522, 27698244, 12372727, -46229956, -44668196, +14611479, 1893544, 6923488, 14606110, -1412507, -13726179, -6322192, 27808302, -19804094, 34442416, +6113886, -8623221, 7885023, 19706384, 357019, -6489696, -36916856, -16843252, 4572530, -20467666, +17692580, 25334402, 2287070, 3812857, -26293252, 31405338, -10765872, -14702747, 26409218, -10444287, +476205, -19098108, -1472100, -13564044, -45504640, 15302968, -4725001, 33676300, 44203268, -1103807, +-7399692, -28215788, -8357470, -8189429, 42079944, -40075268, -27549530, -66123168, 1950452, -27648852, +7948374, 22312356, -11874511, -3895535, 45197016, 28418188, 20832738, 3057480, 2452426, 33520072, +-36456220, -2080375, 10870025, -4831302, 20738786, 9280351, 86831888, 13186623, -23216982, -1809255, +-15786689, -43084964, -16494822, 1098975, 7624104, -8694624, -8449274, -8556112, -30056182, -876710, +-2126546, -16656957, 4687957, 10354092, -25720412, 1211181, -17332340, 6434935, -839129, -6650220, +-3144990, 1010391, 15741592, 8468065, 1052804, 16522739, -10102300, -2717641, -4618701, 15515032, +11083163, 7110319, 16836272, 7151658, -11406896, -6167573, -1574642, 7642895, -14447196, -4340602, +826781, -17224966, 18562312, -5073967, 2954401, 40034464, -29463476, 10241886, -10197326, -14207215, +-14024142, 60440928, -8245264, 29679834, -24107114, 41226316, -14467060, 611496, 22020834, 23795192, +56642028, 2697776, 9082245, 8321499, -24367496, 29311004, 8851928, -17289928, 28347858, -12002823, +35755604, 27462020, -8793409, 23878944, 820876, 22282828, 4196183, 37831684, -23467702, 18833432, +-38643432, -9677098, 12528420, 40991168, -2152852, 3228742, 17333952, -230318, -14224395, -49555868, +-30961346, 8349417, -21636972, -1050656, 15206332, -43218108, 25942676, -2017024, 30919470, -15059229, +-29786672, -5259188, 80583248, 18252000, -74228312, 12829067, 18278308, 4425964, 79734992, -5027259, +-59636696, 61138860, -21225192, -4155381, 66600448, -7428146, 43605192, 6898255, -40498320, 1466731, +68055904, -56271052, 28806346, -34587372, -39347268, 28446642, 16645146, -35699232, -13634911, -22287122, +-12612708, -13157095, 5728950, -21995602, -5151277, 8342437, -22958748, -16289737, 10843182, -26426934, +-7087233, 8874476, 2869575, -6365679, 18816788, -8835821, -7406671, -9836549, -18511310, 8218420, +-12237972, -13571560, -3942243, 1875827, 25272124, -310848, 6526203, -22009024, 1326608, 27231166, +-6080063, -3763465, -3121904, 870268, 979789, 18826990, -11206107, -12412992, -6934225, -19026706, +-22984518, 5276368, -11991549, -9779104, 12961138, 3848291, 8131984, -3820910, -58302032, -5498632, +10304700, -23152022, -5318780, -63218160, 40555764, 59536836, -25441238, 7604777, -44894756, -135379520, +-24564528, 5269925, 69392712, 56319368, -54955180, -50978040, -49257368, -42382736, -28075128, 34586296, +-4995584, 77374376, 54227184, -16764868, -63642824, -163069712, -103739032, 6325413, 181086016, 135910480, +26263188, -71600864, -175885888, -182378800, -12018392, 104603928, 164545568, 178100480, 19654844, -58943596, +-72132904, -98258648, -86379848, 4852240, 61733176, 111725520, 78820704, 61002496, -79630304, -100080792, +-115169552, -141153568, 16868484, 166899744, 166695200, 32629940, -58611272, -158563744, -205415408, -70887360, +17037598, 75745504, 189576640, 68350648, 631360, -105001752, -83983256, -36880348, 43899936, 72644000, +130430104, 32771138, 68586872, -6544457, -85787680, -72896336, 5005785, 82432768, 92081952, -42650100, +-78362752, -98303752, -23482196, 14754823, 23898808, 13685913, -47706888, -43186968, -16593069, 29883308, +772557, -683437, 7695508, 23654532, 20822002, 14307610, -7809325, -60369524, -38610684, 3206730, +31199716, 55274080, 28061706, -17208860, -36811628, -50813760, -30370250, -21180094, -25311852, 55392732, +59875064, 63684700, 54601384, -26386132, -103004056, -89175336, -46748572, 38631620, 131573640, 125579472, +7672422, -81559280, -124838056, -114272440, -6840273, 61240864, 59483688, 27192512, 26386132, 29528, +-33195266, -41850700, -50584516, -9192304, 48083232, 56997436, 41795400, 3748970, -38836704, -36971080, +-16478179, 29433410, 21726628, -50476604, 53150, 26752278, -21569862, 29518774, -1673964, -4786204, +-2572149, 6376953, 21554294, -8125542, 25490094, 18197776, 10101226, 12293270, 8449274, -1706713, +-15333033, 24830816, -788127, 15366856, -9293235, 13746580, -4989679, -1336809, 8522289, -11455215, +-13110388, 2426657, -5883032, 20226074, 19002010, -17238924, 8465917, -10035191, 11803644, 831613, +7612293, 3630858, 10008348, -12098386, 8391829, -14008036, -6725382, -1437203, -2035815, 12376485, +-22644678, -3803194, -9566503, -19219978, -2127620, -7189239, 4371740, 19479288, -6033892, -25567940, +3853123, 16851842, 31343060, -777389, 2445447, -16469052, -13325136, 15377057, 1002338, -4974109, +111132, 26499948, 11122892, 8795019, 13647795, 24476482, -27343910, 11422466, -4932770, -39674224, +-5012764, 31838056, -6094022, 28401544, -1547799, 17888002, -20703890, 13269838, -14176076, -3462818, +27037356, -7192460, 2229625, 1242319, -405874, 10664941, -324807, -3416110, -2604361, -74088, +-2208687, 5688148, 7566659, 12141336, 1027034, -9107478, -4684736, -11973832, 4501663, -12435541, +6833830, 6106907, -4317516, 8060580, 2086280, -12907987, -37581, 697395, 4089883, -22665616, +7916162, 5912023, 1790465, 91805, -6710350, 8387535, -12076374, 12667469, -1179505, -695785, +2963528, -4962298, 9835475, -10552198, 2920578, -5477694, 6081137, -19013284, 47965120, 81512576, +7423314, -53997404, 18413598, -4435091, 66858684, 30808338, 65733400, -6538551, -30572114, -8833137, +14940044, 27050778, 21933324, -12487617, 2577517, 11267847, 8936216, 25543782, -17642652, 3993246, +-23955180, -4334696, 843424, 5908265, 13242458, 2425046, -9917079, 19487340, -1316408, -17914846, +24466282, -4457639, -8039105, 5997922, -3028489, 18283676, 30275762, 376347, 8311836, -10353556, +-5693516, 16856672, 13014288, 13903346, 3386582, -9373766, -18132278, -19531364, -20288888, 16362752, +18923626, 17654464, 27404576, 28407450, 13015362, 1199370, -24495810, 15067819, -2088965, -23088670, +28744068, -2372970, 19117974, 9395778, -27579596, 7504382, -7751879, 5735392, 19703700, 3275986, +-22933514, -17028472, -13259101, -24988656, 15696495, -1793686, 26620208, -539555, 4895726, 250719, +-13364864, -9296994, 5596343, -21458730, 7079717, -475668, -3439195, 7389491, -11097122, 6922414, +5346161, -1197222, -9279277, 12840878, -2605972, 11367168, -18888192, -14666240, -7808788, -7823283, +9973988, -4125853, -1699196, -2716567, -9074729, -5544803, -5288179, -194884, 18903224, 2217814, +-3863860, -496069, -9805947, 7501161, -5111011, -1227287, -3250753, 8437463, 36507, 959925, +-1038845, -6425808, -3441880, 9241159, -2515777, 6572911, -1159104, 3429532, -5109938, -28552942, +-65011308, 4744328, 89210768, 118767656, 101303248, 70457328, -3311420, 4706748, -52125332, -61282740, +-103879688, -77898360, -83468928, -26594438, 6691022, 27429272, 45172320, 113286208, 93643168, 63633700, +20170778, -9615358, -41155988, -30057792, -42777876, -53644680, -30360050, -30530776, -38336880, -17348446, +-25334402, 5649493, 17346836, 15196668, 47790636, 44765908, 39090644, 26130044, 29532196, 19139448, +35432408, 8970039, 30615064, 1728188, -8398272, -53625352, -23795192, -64705828, -75954888, -84239344, +-66636956, -49464600, -17974438, 13127031, 48308180, 52161840, 40531608, 84412216, 67822904, 73169064, +67132488, 63282584, 24959128, 41055592, -16630650, -40123048, -42747808, -99572912, -100165080, -96122440, +-102972912, -84306448, -29242822, -13888314, 22510460, 57677652, 62144956, 76663016, 91600912, 82349552, +63603096, 58426588, 42465416, 16350940, -1871532, -34019364, -50906636, -50676856, -58525908, -48484812, +-55070072, -56734908, -48487496, -37178848, -19087372, 2595771, 24607478, 48290464, 44605920, 44634912, +51929376, 58048092, 44393856, 45098768, 19713364, -20613158, -15583752, -36516348, -47173236, -38810400, +-32452772, -22283900, -28722594, -20259898, 2254321, 6353331, 9755481, 25691420, 22063246, 14522358, +3287798, 9918690, 9507447, 3262028, 12091407, -7295539, -8662949, -6455336, 4447439, -1017370, +48855, -303332, -1787243, -8840653, -6584722, -2343979, 8702141, 304943, 3943317, 1676648, +-4942434, -5567888, -3158949, -3806415, 1180579, 121333, 1454383, 1299228, 2029909, -1902134, +2105608, -1127966, 479426, 1888712, 5562520, 2669322, 6485938, 1168231, -132070, -1556389, +-1404454, -4114579, -375810, -2189360, -1153199, -3153580, -266825, -1472100, 671089, -2884071, +-455803, -5906, 2117419, -1343788, -422517, -2056753, 1153736, 119185, 2778307, 2760053, +3805878, 1225139, 2491081, -123480, 122943, -1189706, 1217623, -846109, 855235, -763967, +435402, -2466922, -1672353, -4452808, -2128693, -2601677, -443455, -1707786, 783832, -439697, +1525250, 427349, 3149822, 1668595, 3381750, 1658931, 3090766, 1318555, 2245731, -209380, +202937, -2684355, -1382980, -3191161, -1843615, -3696893, -1268626, -2251100, 301721, -311385, +1885491, 256624, 2110440, 423054, 1921461, 91805, 1635309, -373662, 1122060, -771484, +727997, -1044751, 649614, -1047972, 668404, -1016297, 721555, -921271, 821949, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, { { 10429791, -5484137, -584652, 3586835, 943819, 788127, -11341935, -4990752, -5599564, 4393752, -573915, --3737159, 4066260, 4121021, 308701, 3954591, -1634235, -178241, -200253, -2508261, -1250372, --5510980, 2859375, -8127689, 3409667, -4260608, 3475166, 6384469, 2966749, -1268626, -1785633, -4705674, -734439, 175020, 4526896, -4861903, -109522, -1675574, -2743410, 543313, -644782, -949188, 4638028, 7546795, -2384244, 89121, 6336151, 431107, 1687385, -2371359, -3506841, --568546, 1087701, -6007586, -1537598, 3063922, 431107, 1074279, 1875290, -906238, -1836635, --1813013, -2063732, 2253247, 1912871, -1151051, -3389803, -4250407, 2098092, -15569, -3461207, -3623342, -780073, -297963, 583042, 983548, -1716376, 2144799, -2319819, -846645, 2897492, --2042794, 1167157, -3419868, -2552284, -1295470, -813359, -272730, 474057, -1414655, -1679869, --229244, -949188, 320512, -341450, -367757, -446140, 298500, 116501, -417149, -678068, --479963, -243203, -126702, -360777, -303869, -516470, 423054, -763967, -545461, 627602, --3748433, -1012539, 16106, -3524021, -3592740, -2132988, 8575976, -6018323, -2493229, -4197794, --7683697, 2879776, 1302986, 313533, 6572911, 6249715, 6236293, 2033130, -1180579, 981937, -4698694, -1999307, 2020245, 2394981, -5567888, 7927973, 1524177, 2476586, 5840619, -2234994, --5848672, 409633, 3955128, -2779381, -1277753, -3710852, 3937411, -85899, -411780, -6460705, --289910, -771484, 3978750, 2052994, -3560528, 7101192, 2606508, 1490354, 2473901, -1139777, -3964792, -1531693, 188979, -4928475, -5914170, 4751845, 3701725, 6576669, 634045, 1786170, --5086852, -7847442, -3866544, -2343442, -2296734, -3616899, -3134789, 1637993, -915365, 2402497, --2956548, -1114544, 1292785, 1484448, -891206, 4019553, 1212791, -2988760, 6039798, -2353105, -1856500, 7640747, 1624571, 1062468, -2364916, 122943, -2596308, -3084860, -500364, 1771674, --34897, 242666, 95563, -824097, -267899, 93416, -760209, 1804960, 1148367, -651761, --162135, 68719, 472983, 270583, -1183800, -624381, -281320, 149250, 535260, -535797, --848793, 752156, -432718, 580894, -298500, -456340, -585726, -7383586, -6905234, 4051765, -908386, 5669357, -8756365, -1221918, -3488587, 951335, 10400263, 5954436, -9117142, 3456912, -852551, -3785477, -4235912, -5152887, -8396124, 309775, 993748, -3098819, 1478006, -1781875, -309238, 2538326, 1942399, 5414343, -4740034, 8519068, -5200669, 4950487, 3908957, -3179887, -2282775, 419833, 3525095, -1408749, 1836635, 3251827, 1072131, 511101, -1312113, 2535105, -747324, -1124208, 6043019, -7909719, 533113, -4789426, 9520332, 3371013, -8332774, 3239479, -10886131, -10238665, -4896800, 1238561, -854162, -3880503, 3235721, -1357210, 7243463, -6101001, --622233, -2015950, -437550, -367220, 6997576, -6504191, -2178085, -703301, -6739341, 3626026, -2784213, 7252053, 2931852, 6174553, 5543192, 916976, -2267743, 1749125, -219043, -773631, --1697049, -158914, -2587718, -1025423, -604517, -3588982, 2254321, 188979, -2530273, -426276, --2057289, 185757, -116501, 1377074, -513249, -815507, 140123, -1159104, -71941, 1185948, -405874, -268435, -843961, 3273839, -5071820, 622770, -3181497, 3349538, 1219771, -5153961, -14828911, -9452686, 2974265, 16015933, -11334956, 5248450, -301721, 5213017, -1399623, -9735080, --2131915, 7970923, 7167764, 1946157, -80531, 4013647, 1974074, 103079, 3340411, 3326989, --2803003, 4249334, -1211718, 6723235, -5476620, -8471286, 1775432, -7403450, 2514167, 83752, --2127620, -2408940, -3383897, -5060545, 942745, 1704565, 148176, 1211181, 1424855, -3148211, --6489159, 5011153, 1101659, 766115, -353261, 7391102, 1462436, 3053185, 7842074, -4914517, -1867774, 241055, 2334315, 5442798, 4279935, -7271380, -6349573, -1705102, -3649649, -910533, -206695, -3181497, 1593433, -5838471, 228170, -5622649, 2681133, 2619930, -3261491, -4301947, -410169, 2216740, 368830, -4961761, 624918, -2884071, 2029372, 1633698, 714575, -1014686, --1431835, 863825, -209917, -629750, -102005, -1362578, -1127429, -3449933, -901406, 2931852, -1255741, -987843, -682900, 2008434, -811749, 520228, -1024887, -82678, -321586, -9127, --1297617, -928787, -551903, -472983, -529892, -633508, 5369, -464393, -862752, -761283, -301185, 1420024, 461709, 4479651, -1802813, 4037806, -601832, 1913408, -2237678, 91805, --1402307, 1207960, -573378, -9445170, 7217693, 4306779, 11777337, -7800198, 4937602, -9603547, --1421634, 5535139, 6401112, -6801081, 2081985, -7847442, 759136, -9166534, 3129421, -6918119, --8140574, -7659538, 3935801, -6228240, 452582, -7269769, 1110249, 833224, -874026, -5377836, -3438658, 4334696, 2895345, 1908039, -5337571, 2800856, -5607080, -2041183, 3747896, -92879, --614180, -1770600, -34360, 3469260, -4087198, -8456254, -1553704, 2327336, -1553168, -6325413, --5993627, -8980240, 2285460, -2741800, -8020852, 5656472, -5073430, -5374078, 10109279, -3800509, --1770063, 596464, -1609539, -3452080, 988916, -5660767, -2509872, -4797479, -3424163, -1721208, -3142842, 7291781, 568546, 4294431, 564251, 3148211, 2527588, 5846524, -257161, -359167, -810138, 2019708, -1050120, 35433, -409633, 4211753, 10201, 1917166, 503585, 627602, --576063, 763430, -2540473, 2745021, 251792, -171799, -2043868, -796716, -2825015, 1194538, --1355599, 788127, -224949, 2765959, -1282048, 357556, -2434173, -2334852, -16106, -1151051, -907849, 1675037, 561030, 723702, -1136019, 242129, 7623567, -10997264, 1950989, 9698573, --3616899, 10619307, 2913599, 712965, -3098282, -7337415, -4887673, 12639552, -6790344, -6979, --2362769, 1037235, 7554848, 6863358, -4147328, 9891847, 9801115, -4569845, -2439005, 6042482, --5069135, -4360466, -330712, -6729677, -164819, -1938641, 867047, 11868605, 4020626, 707596, --5414343, -15622944, -1916092, 8894340, 2163590, -5805722, 4512937, 7247758, 6265284, 7655243, --12398497, 2590402, 609885, -6070400, 3345780, -5452461, 3956739, -3036542, 4907000, 11093364, -14556181, 9271761, 4234301, -5936182, -1645509, -7101729, -7547868, -1493038, 8549669, 2200097, -159988, 2112050, -8317741, 2275796, 1068373, 33823, -4191351, 2372433, 4602058, -4714264, --9063455, 20842940, 2717104, -3593277, 1320166, 2352568, 9487583, -1777580, 2644626, 3345780, -4736275, -3132105, -1548336, -3389266, 1726577, -840740, 1900523, 1856500, -1164473, -1787780, -3576634, 610959, 993211, -525060, 2190970, -3498251, -2531346, -1604170, -574989, 4205310, -1567126, 2865817, 2144799, 2283849, 231391, 634581, -818191, -2388539, 2585570, 772557, -1146219, -1607392, -521302, 49392, 1170379, 3338800, 915902, -5555004, -1760400, -3350611, --1491427, 2804077, -3757023, 16493748, -1769527, 4750771, 11575474, 1678259, -1907502, -7537668, -4155381, -4008815, -5342940, -15381352, -7096360, 3252364, -982474, -2874407, -11359652, 4038343, -6018323, -8696235, -4766340, -2248416, -9388799, 3796751, 498753, -4767951, -4169876, -1568737, --12634720, -4335233, 6025302, 10479720, -8015483, -9711995, -3011309, -470836, -8137353, -6453725, -2335925, 4468377, -8901857, 17599702, -76236, 7212324, -4145180, 6780143, -4692252, 2105071, --12586939, -2529199, 4908074, -12340515, 3248069, -2725694, -6492917, -14030048, -475131, 7907572, --47245, -14809047, -2410014, 2778307, 5825587, 10986526, -4180077, 4951561, 12589086, 4320200, -1396938, -5741298, -1262720, -3562675, 595390, -4260608, 826781, -8098698, -1242319, 6292664, -1621350, 1258962, -3710852, -6277095, 3345780, -1128503, 3456375, -1308891, 308701, -787590, --1992328, -1650878, 2183991, 942208, -639950, -810675, -93952, -2435783, 977642, -2491618, --3308199, -1960116, 929860, 158914, -164283, -2362232, 1680406, -294742, -1404454, -3349001, --1236414, 204548, 256624, 1349157, 3371013, 1115081, 636192, 1773822, -699543, -257698, --1118302, 2757906, 4655745, -1405528, -5005785, 6060736, 898185, -8923331, -14388677, -11488501, --14887430, 12830678, -7856032, -1763621, 4023311, -13815836, -5934571, -9574556, -4467840, -2978023, -6163815, -12094628, -6667400, 4009889, 4690105, 7162932, -258772, 350040, -2330557, 88584, --3021510, 1859184, -9839233, -5102958, -8672076, 6020471, 2782602, 4686346, 5783174, -11674795, --1004486, -1167694, 10559714, -3926674, 3216394, 5936719, -2355253, 6348499, -4254165, 7065758, -9614821, -3725347, -837519, 8484171, -7336341, 11694122, -5134097, -18355616, 2700461, 9647570, --3819300, 1191853, -489626, 7421167, 9016747, -9233643, -4238059, 2267206, 6152004, -10878615, --8504035, -6571837, 13108777, -229244, -15422154, -3221762, -6524592, 5293547, 500364, 4017405, --5910412, 9503689, 210453, 1770600, 2525441, -8631811, -3158949, 730144, -1285806, -2115272, --2730526, 2518462, -2611877, -2275796, 1644436, 2856690, 1225676, -5043902, -664109, -1966021, --1700270, 2196876, 1680406, 4372814, -799401, -2042794, 1436667, -4737886, -779537, 31675, --3351148, 498216, 81604, -1122597, 381178, -5401458, -1213865, -590558, 396211, 763967, -2072859, -227096, 2353642, 1527935, 1102733, 236223, -556198, -8592619, -3428458, 5845988, -2214593, 8391829, 2928094, 4091493, -16499654, -6508486, 6497749, -4382478, -3075734, -5534066, -1741072, 8596914, 2309619, 2034741, -11031623, -3765613, -1970853, 4093104, 9785546, -11833172, -5627481, -9646497, -2505040, -8873402, 1196148, 1220308, -391379, 3696893, -8213588, -2388002, --7691750, -3191161, 205085, -358093, -9672266, 5585068, 6320581, -2325188, 7489349, 14597520, -1567663, 11061151, 14250165, 1125818, 533650, 3432216, -2904472, 4713727, 1039382, -3086471, --4698694, 17826262, -1771137, 10427644, 4684736, -5226975, -6009733, -4217121, 5062156, -4039954, -6554657, 15715285, 8039105, -2051384, 343061, -13118978, -8972187, -7987566, 12438762, 19418084, --8412230, -33823, -7774965, -1255204, 11947525, -3702799, -622233, -18646064, -2401424, -3356517, --1882269, 7146826, 605054, 1528472, 2265059, -3695283, 3081102, 1644436, 2758443, -2178622, -3951907, -1786706, -317828, -4670240, -1010391, 4189741, -1408749, -52613, -695248, 4030827, --892816, -2793339, 1788854, 1836635, 1123134, 1465658, 1575716, -1470489, 518617, 2881386, -4956393, 4281546, 2837363, 1563905, 420370, 464393, -2896419, -173409, 2034741, -1750199, -2137820, -575526, 826244, 2738579, -1008244, 4908074, -399969, 11367168, 30846456, 13701483, --4393215, -897111, -5939940, 14479408, -14499810, -7958575, -22075058, -69793, 10625749, 13618268, -2246805, -5150203, -13301514, -9423158, 9504226, -1780801, 15197205, 140660, -5105643, 7438347, -2473364, 54224, -3990025, 10218801, -2032593, 8853538, -305480, -4536559, 18740552, -4333622, -7502771, 18774912, 6369974, -595390, -9248675, -1522029, -14960445, -17144972, 3610994, 11293080, --2827162, 1747515, -19083614, -7002944, 10799695, 6131066, -5064840, 3815542, -5773510, -2530810, --8788577, -14309220, 716723, -3229816, -10399190, -16543677, -14593225, -4507032, -13416941, 6295349, --6093485, 2297271, 1560684, 92342, 164283, -1953136, -3125126, 8781061, 16913044, -11309723, -1932735, -4639639, 6019934, -6226092, -403727, -4440996, -2244657, 15899432, 11263552, 2770254, --1914482, 357556, -6568079, 2419677, 6250788, -1016834, -5698348, -2972117, 5395016, -6506876, -471373, 3063922, 2543695, -2155537, -2281702, 2604361, 2878702, -2105071, 3455838, 2284923, -2843805, -111132, 3800509, -210990, 2354716, 1433982, 1330903, 1115081, -1001801, 4839892, --4683125, -463856, 861141, -1155346, -1286880, -1929514, 1932198, 397821, -4051765, -1260573, -2435783, -2605435, -12668006, -14573361, 3869766, 5441187, 17471390, -14773077, 4806606, 4401268, --24303072, -1231045, 304406, -20509542, -10986526, -7313256, 5346698, -1723356, 1375463, -5849746, -8745627, 13442174, 7277822, -2007897, -20576114, -9109626, -11115375, 4127464, 1427540, -9171366, --547071, 7062537, -5873368, 12259984, -10954314, -404801, -6315750, -20791936, 3701725, -8891656, --9777493, 7644505, 11613592, -12910135, 5140002, 15084462, -4776541, 6572374, 5371394, -3619584, -2239289, -16888348, 25640954, 9960029, 6208375, 24256364, -29501056, -2288144, -3927211, 3086471, -12293807, 12520367, 5015985, 5939940, 15736760, -1544578, -10384157, -18420040, 7296076, -7004018, -874026, 4907000, -3482682, 7445326, 20116554, -12355010, 9477919, -6020471, -5517423, 15008226, -1334124, 4640176, 14807973, 12002286, -5113696, -6169184, -12667469, -3306051, 260382, 6646999, -7231651, -41339, 1869385, 954020, -53150, 1346472, 1824287, 486942, 4179540, -2040110, -806380, 2803003, 1799054, 779537, -1568200, 3792456, 2723009, 532576, -1970853, -3127810, --7065758, 4302484, -66572, -710817, 2434710, -3547106, -189515, 2386928, 3579318, 4990752, -3073586, 1341640, 1631014, -96100, 1772748, 3711389, 15887621, 18747532, 4647692, 11571179, --7553774, 5458367, 5258651, -30715996, 8653822, 9973451, 2057826, -9781251, -271657, -18961206, -22273164, 13451838, -7062537, -7506529, -11145977, -5795522, 16099148, -16349867, -9417253, -2456185, --2782065, -3531000, 2298881, -10834592, -11099806, -6518687, -8563091, -2314451, -11123428, -1541356, --7483981, -24311662, -15561203, -6015102, -3913789, 3378529, 4003447, -151934, 657667, 7021735, -3330747, 3586298, 17046726, 3554622, 5723581, 10650982, 22913650, 19616190, 980326, -7790534, --15127949, 13700409, -3431142, 37055904, 7429757, 16598438, -1870995, 2090039, -14790257, -613643, -12808129, 7407745, 9694815, -11165841, -7420093, -14341970, -27216134, 15646566, -24026584, -2960843, -31547072, 2073932, 12607340, 5999533, 9257265, 245887, -17124572, 16552804, -344134, -15029164, --13472239, 450435, 5162014, 11116449, 2932926, -13188771, 629213, -2657511, 2604361, -5225902, --4372277, 2273648, 2054605, -4128537, 335544, -1373316, -438624, -5425618, -2030983, -1774895, -2429341, -1495186, -3347927, 4234301, -2714956, -1126355, -7663296, -8126078, -44023, 115427, --3387656, -2188823, 2572686, 1895154, -3440806, -5471789, -397284, -5686537, 3292093, -21721260, -6244346, 8502962, -14958297, -11145977, -9127, 9306120, 21220360, -862752, -16783658, -16463147, --1117765, -9214315, 2560874, 3277060, -18712098, -15701327, -30420180, -8681740, -8995272, -20312510, --14165876, 97174, -9798968, -5769752, -5653788, -1446867, -20553030, -10664941, -12731357, -5949604, -6010807, -17041894, 1039919, 14615774, 16866336, -3782256, 4428648, 10029822, -17193828, 9809168, --7592966, 15298137, -7550016, 1611150, -8117488, -1474248, 29644938, -5908802, 10994579, -21618182, --3881040, 224949, -21004538, 19602230, 471910, -6849936, 13625784, -5448703, 3302830, 27704150, --11167452, -14787572, 10077067, -2619930, -31124018, 12787191, -41171556, -21701396, 16128676, 13059385, -2349347, 8922795, -231391, 34897, -31130996, -16329466, -7547868, 3077881, -17817134, 4574140, -2150168, 7493644, -11734388, 943819, 8563628, 6985228, 4802311, 850940, 3901978, -9783399, --6716255, -6517613, -2183991, -1132798, -1180579, 8367133, -4451734, 4516695, 7802882, -3720516, -2209761, -6173479, -5194226, -40802, 1792612, -5519570, 2243584, -6984691, 6065031, -2288681, --1569811, 541166, 5412733, -1532767, 1988033, -4825933, 4276714, 3728569, 10249939, 2750927, -8368207, -8276939, -3154117, -9897215, -3158949, -5264556, -5113696, 41482404, 22677964, 60666, --21366926, 10994579, -22279070, -18077518, 3271691, 18443126, 36382132, -5699422, 18385682, -6551973, -13047037, 22093848, 12323872, 14132053, 7548405, -4103305, -18072148, -18656264, -5668283, -17629230, --5207648, -3214246, -3986804, 14146012, -2416456, -36244692, 2118493, 8778913, 8370355, 21726092, --2248416, -43259448, 24609088, -19343996, 6330782, -4211216, 14558865, 21238614, -23608898, -1626182, --11798812, -20553030, 14894410, -10208600, -25348896, 9974525, 14800994, 24392194, 6450504, -3771518, -2663954, 19975892, -16051903, 31518080, -9898826, -8747238, -2831994, 19217832, -19959250, 1867774, -2440615, -55533392, -8235063, 17231408, -7994008, 2915746, 7722351, 4066797, -2719251, 4555887, -19065360, 22797150, -18014704, 6537477, -13193066, -2215130, 22539988, -442382, -2333241, 871878, --1510218, -11639361, 3230889, 823023, -6804302, -17255568, 248034, -4089883, 5304822, -7944616, --7450695, -9352291, 7984344, 1887101, 4903779, 3973919, 353261, 2947958, -3809099, -7871065, -12140262, -1163399, -5845988, -129923, -4205310, -2594160, -4858145, 681289, 1524713, -650151, -3391414, 8891656, -297427, -2080912, -3568044, 872952, -4444218, -2470680, 5090610, -3787624, --3171833, -4649839, -11631308, -6454799, 1672890, 7646116, -6053757, -1717450, 23853712, 15663746, --44080860, -25212532, 30347702, 34966404, -18757196, -6487548, -49618148, -27577448, 7249368, -2357937, -6698539, -26526792, -16470663, -18214420, 26911728, 39755292, -1854889, 10653666, -6407018, -3600793, --425202, 9044664, 17354352, 4092567, -6072547, -3418257, -3978214, -23925116, -13428752, -24323474, --3144990, 7368017, -10104984, 14820858, -10990284, -4261145, 23250806, -11355357, 13096966, 8933532, --4183298, -22448720, -16097001, -13433584, 4087735, 41620916, 7411503, 22321482, 26517128, 20581484, -15390478, 13594645, -22971096, 423054, -3711389, 30770220, 14740328, 17941152, 32318018, -15972983, --21647172, 7831873, 27341762, -46374372, -779537, 3550864, 21561810, -37531572, -56298432, -10163503, -15846819, 3804267, 6442988, 17528298, 1184337, -12639015, -18442590, 472983, 2596845, 3515968, -17118130, 25147034, 12020540, 1730872, 147103, -423591, 2144799, 2393908, -6325413, 9178882, -1225676, -8687108, -14958297, 1704565, -6338835, 3066070, 1705102, -1516124, 1021129, -6386617, -6539088, -3506841, 4414690, -6859600, -4254165, -12106976, -11698417, 383863, 6278706, -5459977, -12494060, 151398, 3781719, -3928285, 13354127, 919660, 6172405, -6758131, -3491272, -2290828, --2301029, -8439611, -1422171, 8752070, -15288473, 11725798, -427349, -11541651, -19924890, 7368554, --9633075, -19796042, 14252849, 26984206, 8452496, -10507637, 16241419, 27141508, 10201621, 5527086, -2035815, -3119220, 12928925, -22842784, 1450088, -32816772, 17590576, -26501022, -2130841, 14142254, -7942469, -15149423, 3266860, -17518098, 35849556, 4562329, 11680700, 18578418, 39534636, -16361678, -12887049, -18951006, 6890738, 14127221, 31789200, 7422777, -6386080, 32448478, 4452808, -2345589, --18653042, 1176284, 20432770, -6961068, 19639274, -24173686, 37205692, 38470560, -46277200, -1274532, --2879776, 10053982, -7852811, -6146098, 19965156, -16887274, -49384608, 517544, 43971340, -34746824, -17435956, -8096550, -4373351, -21204254, 48527760, -3224984, 8046085, 4364761, -32613298, 42152420, -3314641, 37473588, -74335144, 6977175, -6987375, -22530324, -6021008, 12941810, -17315698, 11514270, --15611132, -10516764, -20548198, 25786984, -9974525, 1633161, -21919366, 803696, -16113644, -5638755, -7443179, -11253888, 5146445, 528281, -14889041, 13247290, -6134287, 1746441, -6403796, 11997454, --9217537, 1726577, 783295, -3584150, 16059420, -9516037, -11373073, -6743099, -12743168, -17840220, --8945343, 1491427, 1003949, -12914967, -7311645, -8752606, -12396886, -9950902, 4131759, 2630668, --509491, -5440650, 31035434, 4013110, -24242406, 2714419, -49017924, -10862509, 2187212, -9186935, --39129836, -4051228, -25780004, -6087043, 23127326, 5675263, 30405148, 12975096, 11307575, 7434052, --10738492, 24843164, -12757663, -15569, 11355357, 5580773, -15348066, 12444131, 4735202, 29352344, -11724187, -5018133, 17350594, -13795435, 23521388, 8368744, -26383448, -26696980, 13654775, 17667884, -7016366, 3032247, -12938052, -17025250, 5019206, -16751983, -25820806, -7677254, -4559645, -23342610, --8980777, 8964670, -16325171, -26351772, 7249905, 9989557, 699543, -3096135, -1772211, -4354023, -9297530, 45299020, 8985072, -1330366, -1933809, -15814070, -25979720, -11293617, 36958192, 40064528, -20255066, 3926674, 36040680, 17561584, -8402030, -50293532, -38647728, -31525596, -60428580, -34974456, -8332774, 49060336, -21872658, 16675211, -24430848, 8048232, -2165737, 16931834, -8034273, -2724620, --21808234, -12306692, -5435818, -19184546, 24483462, -3733937, -12989055, -5988258, 2405182, -13852343, -9880572, 7482370, 15820512, 3772055, 4395899, -15566035, -18403934, -2018098, -13612362, -8422968, --15844671, -22606024, 1122060, -5831492, 1358283, 1742683, 17347910, 17498234, -6528351, -3355980, --7745437, 16908750, 11103564, 7414188, 2589329, -3317325, 9593346, -13188771, -5311264, -2057289, --15226733, -29378650, 15488189, -433792, -9466645, -9113384, -5435818, -4094178, 11003706, 21037824, --9100499, 27067958, -30996778, 25014964, -3333432, 33350958, -21721798, 19294066, -31953482, 27738510, --25861608, -10781442, 38331508, 8935679, 30749282, 44257492, 4351876, -3528853, -18639622, -1444720, -27875412, 7098507, -10144176, -31065498, 2460480, 6164889, 14492830, 8997420, 12029667, 7650948, --18342732, -28918014, -12481175, 28027882, 10529649, 89391152, -28600188, -23873038, 28938952, 45893872, -9418863, -776852, 11861089, 3043521, 14522895, -13482976, 5109401, 21457120, 23491324, 15828565, -69159176, -8803072, -9168681, -4504884, 35582192, 21401822, -18354006, 18754512, -601295, 6120866, --15148350, 31771484, -31893354, 2214056, 48780092, -36066452, 104969000, -48281876, 50132468, 46167676, --45522360, -41430328, 46604692, 2018635, -27187142, -11419781, 25668336, -71017824, 10963441, -8351027, --45880452, 29927332, -35953172, 2842195, 2537789, -14421963, -35481800, 9599789, -2854006, -1580548, -6700149, -7295002, -11773579, 6346351, 14733885, -5623186, 2159295, 11536282, -10908143, 16052440, -12273406, -25566330, 3573950, -14359149, 6423661, -1012002, 1982664, -13081397, 5338645, 3427384, --171262, -6560563, 19665582, 4465156, -826244, 18877456, -13451838, -12186970, 1913945, 8150774, -1932198, 9081708, 4581657, -26317948, -13750875, 6788733, -15577310, 22651658, -10292889, -12859132, --617402, -8904541, 17933636, 22846004, -53821844, -23084912, 33314450, -69844224, -42980276, -29282014, -48949204, 103781976, 28929826, -81630688, -18192408, -83393232, -43268576, 67782104, 40773200, 63720136, -35303020, -48390324, -76418744, -58506044, -13807783, 34470872, 39504036, 23543936, 13463649, -20357608, --83552680, -100847440, -21598316, 77022720, 137754096, 93148176, -17364016, -64644628, -92390656, -68816112, --55351392, -73014, 22413286, 74995496, 80412528, -43557412, -26968100, -100986496, -93543848, -33860448, -9463960, 97219272, 143976432, 63656248, -42221676, -150803824, -111461920, -82071456, 39791260, 85651848, -53759032, 33743412, 29028610, -90038080, -16301012, -51408076, 19268834, -7254737, 53455700, 83532816, -66653596, -78270408, -157379952, -118611424, 13363254, 91975648, -2058900, 127596496, 5535139, -33045478, --38216084, -28374164, 584116, 92143688, 79881560, 14474040, -31492310, -11494943, -5621039, 48283484, -53680112, 6255620, 2550137, -8498667, -1190243, -10434086, -12810277, -8768713, -4514548, 18378166, -29136522, 23500988, -34645892, -39706972, -15007689, -16558710, -15432891, 35864052, 29676614, 37722160, -11368242, -16427713, -28223304, -55225764, -34846144, 22928146, 48846664, 73462192, 50680076, 4028143, --113313584, -100014216, -33769716, 40834940, 64117420, 85204096, 64638720, -5220533, -64335388, -95354176, --91603064, -16945794, 100217696, 103283760, 52864068, -25128244, -68827384, -48386564, -32146220, 2691334, -20949240, 27271968, 24539296, 14758044, 1286880, -15699716, -19223200, -20015084, -15890842, -18526878, -36842768, 11479911, -29845190, -28161026, 86973, -45373108, -5610838, 6722161, 5189931, -3945464, -1133335, -15258945, -1903207, -1793149, 7828652, -5265093, 20913806, -5552856, -4026532, -5840619, --6567542, 13037373, 3730716, -6289980, 20255602, 1281511, -36009004, -17981418, 9919227, 17621714, --5997385, 2146947, 24676734, -608812, 3368865, -20185810, -9015136, 6214281, -4386772, -4486630, --2678449, 16324634, 5912560, -6393596, -19314468, -7693897, -1131187, -17617956, 1688459, -20121922, --13463112, -9365713, -17878338, 28032178, -5048197, -12687870, 11862700, -197032, -27551678, -1614908, -27531278, 22321482, -12785044, 17282412, 2914135, 16488379, -18399104, -27151172, 10419054, 11964168, -10557030, 9130027, -10238665, 10078141, -20236812, 13707925, -27609124, -24322936, 17980344, -14235132, -12277164, 16813724, 1243930, -13016972, 4205847, 4747013, -1074279, -1076426, -420370, 10948409, --9172976, 7105487, -9586367, 12833899, -11221139, -6147709, 4759361, -3906810, -377420, 5061082, -1258425, 3375308, 9937481, -7920994, -4655208, 5654325, 3450469, 11294690, -9146133, 3121904, --1063541, -7101192, -7062537, 2881923, 1870995, -7027640, -10358924, 2974265, 194347, -1983201, -6706592, -9990094, 11587822, 3415036, -9897215, -11140608, 9350144, -15643345, 10761041, -1795833, -7481296, -843961, 2627983, 13962939, -22236656, 44463648, 67676872, -8779450, -25109990, -21449604, -62396212, 28306518, 60387240, 32675038, 45634, -27979028, -6304475, 15506979, 28346784, 13669807, --13183939, -3150359, 13529147, 20078972, 2442763, 4577899, -14013941, 2643552, -6781217, 9203578, -10187662, 26538602, 22749904, -12006044, 1951526, -13487271, 3513820, 12163347, 18000208, 1431298, --8600672, 64961, -15520401, 13031468, -3595425, 5433671, 12055973, 349503, 16066936, -7824894, --4432406, -3670050, -16567299, -9819906, -25258166, -4681515, -28798292, 2064269, -9917079, 23782308, -3506304, 7071664, -22268332, 9501005, 148176, -9807558, 16305843, -8708046, -4591320, 4147328, -10781442, -1205812, -5921150, 36781028, 11931956, 8577587, 13774497, -9839233, -491774, -3218541, -19178640, 26750130, 25608742, -15184320, -16706886, -2183454, -6644315, 6796786, 17262010, 18029198, -794569, 10148471, -1202054, -2644089, 5872831, 11533598, -1087701, 9084393, -7521025, 1724966, -135828, 3234110, -2579665, 10162429, 5850819, -964220, -2811593, 3146601, 1784022, 11043435, -619549, -6371047, -7025493, -3937411, 3087545, 3826816, 7016903, -8411157, 1189169, -2231236, -5639292, -4074850, 7955890, -2586107, 2973191, -4367982, -3711926, 2628520, -6932077, 142808, -7682623, 2030983, -3160559, 824097, -373125, -25181930, -55021752, -7299297, 72427104, 111955304, -93776312, 74310448, -5114769, 8835285, -54608900, -61691836, -100874824, -57897232, -63571960, -19874424, -7873749, 43988520, 31128312, 95633888, 83060376, 27586038, 5703180, -14711874, -32563368, -51214264, --18898930, -52499532, -14119705, -25489020, -16658031, -12164958, 2673080, 1013612, 17744120, 25927644, -39144868, 42632384, 50954956, 44176960, -5402532, 4395899, -641561, 8386998, -25370372, 10321343, --27109834, -67441184, -33259152, -50453516, -85051624, -24799678, -7480223, -34320008, 11566347, 26228292, -59229208, 70016016, 103106056, 65271692, 53030500, 52897892, 32757178, -10123238, 5277441, -51964272, --44936096, -75303664, -89720256, -103415296, -75458816, -57983132, -6136972, -2714956, 8129300, 30345554, -51123532, 92331600, 91140280, 90912112, 72744936, 31324270, 46906412, 7464653, -23668492, -35436700, --84074520, -76296336, -67724120, -58253180, -46796888, -28164784, -17231408, -5771363, 4124779, 28372018, -33469606, 44299368, 36536748, 52494164, 47364900, 31140124, 35687420, 24128590, -6616397, -19338090, --22496502, -53373020, -46432356, -41659036, -31359166, -16965120, -719407, -1985349, 13578539, 21104396, -16284369, 19581830, 12377022, 3981972, -493384, 5719823, 1248225, -6490233, 6966437, 8556112, -516470, 4623533, -1365800, -1854352, 707596, 3210488, -208306, -7208566, -9728638, -9415642, --11026255, -7376607, -2294050, -2502892, 3114388, 1289564, 856309, 3709241, 4181688, 3405909, -4519916, 7180112, 6049462, 3466039, 4128537, 1422171, -1560684, -492311, -1960653, -2914135, --1450625, -2626909, -2525441, -3056406, -3860639, -4205847, -4065187, -2284923, 1074, 207769, -2246268, 2316598, 1701881, 1283658, 2190433, 2204392, 3651259, 2461016, 3070902, 1580011, --697932, -1678795, -667867, -2088965, -296890, -114354, -942208, -558883, -700080, -2057289, --1542967, -1327145, -543850, -661962, -85362, -142271, 152471, -636192, -678068, -1054951, -811212, 1258425, 3054259, 3034395, 3484829, 2530273, 1742146, 650688, 0, -952946, --1112933, -2601140, -2313377, -2705830, -2338610, -2667175, -1591822, -1093606, 1611, 78383, -1122597, 906775, 2121714, 2124935, 2464774, 1824287, 2156074, 1105954, 827318, -354872, --548145, -1396401, -1118302, -1494112, -841277, -1156957, -347355, -623844, 66035, -290984, -325881, -119185, 389231, -160524, 290984, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +5484137, -584652, 3586835, 943819, 788127, -11341935, -4990752, -5599564, 4393752, -573915, +-3737159, 4066260, 4121021, 308701, 3954591, -1634235, -178241, -200253, -2508261, -1250372, +-5510980, 2859375, -8127689, 3409667, -4260608, 3475166, 6384469, 2966749, -1268626, -1785633, +4705674, -734439, 175020, 4526896, -4861903, -109522, -1675574, -2743410, 543313, -644782, +949188, 4638028, 7546795, -2384244, 89121, 6336151, 431107, 1687385, -2371359, -3506841, +-568546, 1087701, -6007586, -1537598, 3063922, 431107, 1074279, 1875290, -906238, -1836635, +-1813013, -2063732, 2253247, 1912871, -1151051, -3389803, -4250407, 2098092, -15569, -3461207, +3623342, -780073, -297963, 583042, 983548, -1716376, 2144799, -2319819, -846645, 2897492, +-2042794, 1167157, -3419868, -2552284, -1295470, -813359, -272730, 474057, -1414655, -1679869, +-229244, -949188, 320512, -341450, -367757, -446140, 298500, 116501, -417149, -678068, +-479963, -243203, -126702, -360777, -303869, -516470, 423054, -763967, -545461, 627602, +-3748433, -1012539, 16106, -3524021, -3592740, -2132988, 8575976, -6018323, -2493229, -4197794, +-7683697, 2879776, 1302986, 313533, 6572911, 6249715, 6236293, 2033130, -1180579, 981937, +4698694, -1999307, 2020245, 2394981, -5567888, 7927973, 1524177, 2476586, 5840619, -2234994, +-5848672, 409633, 3955128, -2779381, -1277753, -3710852, 3937411, -85899, -411780, -6460705, +-289910, -771484, 3978750, 2052994, -3560528, 7101192, 2606508, 1490354, 2473901, -1139777, +3964792, -1531693, 188979, -4928475, -5914170, 4751845, 3701725, 6576669, 634045, 1786170, +-5086852, -7847442, -3866544, -2343442, -2296734, -3616899, -3134789, 1637993, -915365, 2402497, +-2956548, -1114544, 1292785, 1484448, -891206, 4019553, 1212791, -2988760, 6039798, -2353105, +1856500, 7640747, 1624571, 1062468, -2364916, 122943, -2596308, -3084860, -500364, 1771674, +-34897, 242666, 95563, -824097, -267899, 93416, -760209, 1804960, 1148367, -651761, +-162135, 68719, 472983, 270583, -1183800, -624381, -281320, 149250, 535260, -535797, +-848793, 752156, -432718, 580894, -298500, -456340, -585726, -7383586, -6905234, 4051765, +908386, 5669357, -8756365, -1221918, -3488587, 951335, 10400263, 5954436, -9117142, 3456912, +852551, -3785477, -4235912, -5152887, -8396124, 309775, 993748, -3098819, 1478006, -1781875, +309238, 2538326, 1942399, 5414343, -4740034, 8519068, -5200669, 4950487, 3908957, -3179887, +2282775, 419833, 3525095, -1408749, 1836635, 3251827, 1072131, 511101, -1312113, 2535105, +747324, -1124208, 6043019, -7909719, 533113, -4789426, 9520332, 3371013, -8332774, 3239479, +10886131, -10238665, -4896800, 1238561, -854162, -3880503, 3235721, -1357210, 7243463, -6101001, +-622233, -2015950, -437550, -367220, 6997576, -6504191, -2178085, -703301, -6739341, 3626026, +2784213, 7252053, 2931852, 6174553, 5543192, 916976, -2267743, 1749125, -219043, -773631, +-1697049, -158914, -2587718, -1025423, -604517, -3588982, 2254321, 188979, -2530273, -426276, +-2057289, 185757, -116501, 1377074, -513249, -815507, 140123, -1159104, -71941, 1185948, +405874, -268435, -843961, 3273839, -5071820, 622770, -3181497, 3349538, 1219771, -5153961, +14828911, -9452686, 2974265, 16015933, -11334956, 5248450, -301721, 5213017, -1399623, -9735080, +-2131915, 7970923, 7167764, 1946157, -80531, 4013647, 1974074, 103079, 3340411, 3326989, +-2803003, 4249334, -1211718, 6723235, -5476620, -8471286, 1775432, -7403450, 2514167, 83752, +-2127620, -2408940, -3383897, -5060545, 942745, 1704565, 148176, 1211181, 1424855, -3148211, +-6489159, 5011153, 1101659, 766115, -353261, 7391102, 1462436, 3053185, 7842074, -4914517, +1867774, 241055, 2334315, 5442798, 4279935, -7271380, -6349573, -1705102, -3649649, -910533, +206695, -3181497, 1593433, -5838471, 228170, -5622649, 2681133, 2619930, -3261491, -4301947, +410169, 2216740, 368830, -4961761, 624918, -2884071, 2029372, 1633698, 714575, -1014686, +-1431835, 863825, -209917, -629750, -102005, -1362578, -1127429, -3449933, -901406, 2931852, +1255741, -987843, -682900, 2008434, -811749, 520228, -1024887, -82678, -321586, -9127, +-1297617, -928787, -551903, -472983, -529892, -633508, 5369, -464393, -862752, -761283, +301185, 1420024, 461709, 4479651, -1802813, 4037806, -601832, 1913408, -2237678, 91805, +-1402307, 1207960, -573378, -9445170, 7217693, 4306779, 11777337, -7800198, 4937602, -9603547, +-1421634, 5535139, 6401112, -6801081, 2081985, -7847442, 759136, -9166534, 3129421, -6918119, +-8140574, -7659538, 3935801, -6228240, 452582, -7269769, 1110249, 833224, -874026, -5377836, +3438658, 4334696, 2895345, 1908039, -5337571, 2800856, -5607080, -2041183, 3747896, -92879, +-614180, -1770600, -34360, 3469260, -4087198, -8456254, -1553704, 2327336, -1553168, -6325413, +-5993627, -8980240, 2285460, -2741800, -8020852, 5656472, -5073430, -5374078, 10109279, -3800509, +-1770063, 596464, -1609539, -3452080, 988916, -5660767, -2509872, -4797479, -3424163, -1721208, +3142842, 7291781, 568546, 4294431, 564251, 3148211, 2527588, 5846524, -257161, -359167, +810138, 2019708, -1050120, 35433, -409633, 4211753, 10201, 1917166, 503585, 627602, +-576063, 763430, -2540473, 2745021, 251792, -171799, -2043868, -796716, -2825015, 1194538, +-1355599, 788127, -224949, 2765959, -1282048, 357556, -2434173, -2334852, -16106, -1151051, +907849, 1675037, 561030, 723702, -1136019, 242129, 7623567, -10997264, 1950989, 9698573, +-3616899, 10619307, 2913599, 712965, -3098282, -7337415, -4887673, 12639552, -6790344, -6979, +-2362769, 1037235, 7554848, 6863358, -4147328, 9891847, 9801115, -4569845, -2439005, 6042482, +-5069135, -4360466, -330712, -6729677, -164819, -1938641, 867047, 11868605, 4020626, 707596, +-5414343, -15622944, -1916092, 8894340, 2163590, -5805722, 4512937, 7247758, 6265284, 7655243, +-12398497, 2590402, 609885, -6070400, 3345780, -5452461, 3956739, -3036542, 4907000, 11093364, +14556181, 9271761, 4234301, -5936182, -1645509, -7101729, -7547868, -1493038, 8549669, 2200097, +159988, 2112050, -8317741, 2275796, 1068373, 33823, -4191351, 2372433, 4602058, -4714264, +-9063455, 20842940, 2717104, -3593277, 1320166, 2352568, 9487583, -1777580, 2644626, 3345780, +4736275, -3132105, -1548336, -3389266, 1726577, -840740, 1900523, 1856500, -1164473, -1787780, +3576634, 610959, 993211, -525060, 2190970, -3498251, -2531346, -1604170, -574989, 4205310, +1567126, 2865817, 2144799, 2283849, 231391, 634581, -818191, -2388539, 2585570, 772557, +1146219, -1607392, -521302, 49392, 1170379, 3338800, 915902, -5555004, -1760400, -3350611, +-1491427, 2804077, -3757023, 16493748, -1769527, 4750771, 11575474, 1678259, -1907502, -7537668, +4155381, -4008815, -5342940, -15381352, -7096360, 3252364, -982474, -2874407, -11359652, 4038343, +6018323, -8696235, -4766340, -2248416, -9388799, 3796751, 498753, -4767951, -4169876, -1568737, +-12634720, -4335233, 6025302, 10479720, -8015483, -9711995, -3011309, -470836, -8137353, -6453725, +2335925, 4468377, -8901857, 17599702, -76236, 7212324, -4145180, 6780143, -4692252, 2105071, +-12586939, -2529199, 4908074, -12340515, 3248069, -2725694, -6492917, -14030048, -475131, 7907572, +-47245, -14809047, -2410014, 2778307, 5825587, 10986526, -4180077, 4951561, 12589086, 4320200, +1396938, -5741298, -1262720, -3562675, 595390, -4260608, 826781, -8098698, -1242319, 6292664, +1621350, 1258962, -3710852, -6277095, 3345780, -1128503, 3456375, -1308891, 308701, -787590, +-1992328, -1650878, 2183991, 942208, -639950, -810675, -93952, -2435783, 977642, -2491618, +-3308199, -1960116, 929860, 158914, -164283, -2362232, 1680406, -294742, -1404454, -3349001, +-1236414, 204548, 256624, 1349157, 3371013, 1115081, 636192, 1773822, -699543, -257698, +-1118302, 2757906, 4655745, -1405528, -5005785, 6060736, 898185, -8923331, -14388677, -11488501, +-14887430, 12830678, -7856032, -1763621, 4023311, -13815836, -5934571, -9574556, -4467840, -2978023, +6163815, -12094628, -6667400, 4009889, 4690105, 7162932, -258772, 350040, -2330557, 88584, +-3021510, 1859184, -9839233, -5102958, -8672076, 6020471, 2782602, 4686346, 5783174, -11674795, +-1004486, -1167694, 10559714, -3926674, 3216394, 5936719, -2355253, 6348499, -4254165, 7065758, +9614821, -3725347, -837519, 8484171, -7336341, 11694122, -5134097, -18355616, 2700461, 9647570, +-3819300, 1191853, -489626, 7421167, 9016747, -9233643, -4238059, 2267206, 6152004, -10878615, +-8504035, -6571837, 13108777, -229244, -15422154, -3221762, -6524592, 5293547, 500364, 4017405, +-5910412, 9503689, 210453, 1770600, 2525441, -8631811, -3158949, 730144, -1285806, -2115272, +-2730526, 2518462, -2611877, -2275796, 1644436, 2856690, 1225676, -5043902, -664109, -1966021, +-1700270, 2196876, 1680406, 4372814, -799401, -2042794, 1436667, -4737886, -779537, 31675, +-3351148, 498216, 81604, -1122597, 381178, -5401458, -1213865, -590558, 396211, 763967, +2072859, -227096, 2353642, 1527935, 1102733, 236223, -556198, -8592619, -3428458, 5845988, +2214593, 8391829, 2928094, 4091493, -16499654, -6508486, 6497749, -4382478, -3075734, -5534066, +1741072, 8596914, 2309619, 2034741, -11031623, -3765613, -1970853, 4093104, 9785546, -11833172, +5627481, -9646497, -2505040, -8873402, 1196148, 1220308, -391379, 3696893, -8213588, -2388002, +-7691750, -3191161, 205085, -358093, -9672266, 5585068, 6320581, -2325188, 7489349, 14597520, +1567663, 11061151, 14250165, 1125818, 533650, 3432216, -2904472, 4713727, 1039382, -3086471, +-4698694, 17826262, -1771137, 10427644, 4684736, -5226975, -6009733, -4217121, 5062156, -4039954, +6554657, 15715285, 8039105, -2051384, 343061, -13118978, -8972187, -7987566, 12438762, 19418084, +-8412230, -33823, -7774965, -1255204, 11947525, -3702799, -622233, -18646064, -2401424, -3356517, +-1882269, 7146826, 605054, 1528472, 2265059, -3695283, 3081102, 1644436, 2758443, -2178622, +3951907, -1786706, -317828, -4670240, -1010391, 4189741, -1408749, -52613, -695248, 4030827, +-892816, -2793339, 1788854, 1836635, 1123134, 1465658, 1575716, -1470489, 518617, 2881386, +4956393, 4281546, 2837363, 1563905, 420370, 464393, -2896419, -173409, 2034741, -1750199, +2137820, -575526, 826244, 2738579, -1008244, 4908074, -399969, 11367168, 30846456, 13701483, +-4393215, -897111, -5939940, 14479408, -14499810, -7958575, -22075058, -69793, 10625749, 13618268, +2246805, -5150203, -13301514, -9423158, 9504226, -1780801, 15197205, 140660, -5105643, 7438347, +2473364, 54224, -3990025, 10218801, -2032593, 8853538, -305480, -4536559, 18740552, -4333622, +7502771, 18774912, 6369974, -595390, -9248675, -1522029, -14960445, -17144972, 3610994, 11293080, +-2827162, 1747515, -19083614, -7002944, 10799695, 6131066, -5064840, 3815542, -5773510, -2530810, +-8788577, -14309220, 716723, -3229816, -10399190, -16543677, -14593225, -4507032, -13416941, 6295349, +-6093485, 2297271, 1560684, 92342, 164283, -1953136, -3125126, 8781061, 16913044, -11309723, +1932735, -4639639, 6019934, -6226092, -403727, -4440996, -2244657, 15899432, 11263552, 2770254, +-1914482, 357556, -6568079, 2419677, 6250788, -1016834, -5698348, -2972117, 5395016, -6506876, +471373, 3063922, 2543695, -2155537, -2281702, 2604361, 2878702, -2105071, 3455838, 2284923, +2843805, -111132, 3800509, -210990, 2354716, 1433982, 1330903, 1115081, -1001801, 4839892, +-4683125, -463856, 861141, -1155346, -1286880, -1929514, 1932198, 397821, -4051765, -1260573, +2435783, -2605435, -12668006, -14573361, 3869766, 5441187, 17471390, -14773077, 4806606, 4401268, +-24303072, -1231045, 304406, -20509542, -10986526, -7313256, 5346698, -1723356, 1375463, -5849746, +8745627, 13442174, 7277822, -2007897, -20576114, -9109626, -11115375, 4127464, 1427540, -9171366, +-547071, 7062537, -5873368, 12259984, -10954314, -404801, -6315750, -20791936, 3701725, -8891656, +-9777493, 7644505, 11613592, -12910135, 5140002, 15084462, -4776541, 6572374, 5371394, -3619584, +2239289, -16888348, 25640954, 9960029, 6208375, 24256364, -29501056, -2288144, -3927211, 3086471, +12293807, 12520367, 5015985, 5939940, 15736760, -1544578, -10384157, -18420040, 7296076, -7004018, +874026, 4907000, -3482682, 7445326, 20116554, -12355010, 9477919, -6020471, -5517423, 15008226, +1334124, 4640176, 14807973, 12002286, -5113696, -6169184, -12667469, -3306051, 260382, 6646999, +7231651, -41339, 1869385, 954020, -53150, 1346472, 1824287, 486942, 4179540, -2040110, +806380, 2803003, 1799054, 779537, -1568200, 3792456, 2723009, 532576, -1970853, -3127810, +-7065758, 4302484, -66572, -710817, 2434710, -3547106, -189515, 2386928, 3579318, 4990752, +3073586, 1341640, 1631014, -96100, 1772748, 3711389, 15887621, 18747532, 4647692, 11571179, +-7553774, 5458367, 5258651, -30715996, 8653822, 9973451, 2057826, -9781251, -271657, -18961206, +22273164, 13451838, -7062537, -7506529, -11145977, -5795522, 16099148, -16349867, -9417253, -2456185, +-2782065, -3531000, 2298881, -10834592, -11099806, -6518687, -8563091, -2314451, -11123428, -1541356, +-7483981, -24311662, -15561203, -6015102, -3913789, 3378529, 4003447, -151934, 657667, 7021735, +3330747, 3586298, 17046726, 3554622, 5723581, 10650982, 22913650, 19616190, 980326, -7790534, +-15127949, 13700409, -3431142, 37055904, 7429757, 16598438, -1870995, 2090039, -14790257, -613643, +12808129, 7407745, 9694815, -11165841, -7420093, -14341970, -27216134, 15646566, -24026584, -2960843, +31547072, 2073932, 12607340, 5999533, 9257265, 245887, -17124572, 16552804, -344134, -15029164, +-13472239, 450435, 5162014, 11116449, 2932926, -13188771, 629213, -2657511, 2604361, -5225902, +-4372277, 2273648, 2054605, -4128537, 335544, -1373316, -438624, -5425618, -2030983, -1774895, +2429341, -1495186, -3347927, 4234301, -2714956, -1126355, -7663296, -8126078, -44023, 115427, +-3387656, -2188823, 2572686, 1895154, -3440806, -5471789, -397284, -5686537, 3292093, -21721260, +6244346, 8502962, -14958297, -11145977, -9127, 9306120, 21220360, -862752, -16783658, -16463147, +-1117765, -9214315, 2560874, 3277060, -18712098, -15701327, -30420180, -8681740, -8995272, -20312510, +-14165876, 97174, -9798968, -5769752, -5653788, -1446867, -20553030, -10664941, -12731357, -5949604, +6010807, -17041894, 1039919, 14615774, 16866336, -3782256, 4428648, 10029822, -17193828, 9809168, +-7592966, 15298137, -7550016, 1611150, -8117488, -1474248, 29644938, -5908802, 10994579, -21618182, +-3881040, 224949, -21004538, 19602230, 471910, -6849936, 13625784, -5448703, 3302830, 27704150, +-11167452, -14787572, 10077067, -2619930, -31124018, 12787191, -41171556, -21701396, 16128676, 13059385, +2349347, 8922795, -231391, 34897, -31130996, -16329466, -7547868, 3077881, -17817134, 4574140, +2150168, 7493644, -11734388, 943819, 8563628, 6985228, 4802311, 850940, 3901978, -9783399, +-6716255, -6517613, -2183991, -1132798, -1180579, 8367133, -4451734, 4516695, 7802882, -3720516, +2209761, -6173479, -5194226, -40802, 1792612, -5519570, 2243584, -6984691, 6065031, -2288681, +-1569811, 541166, 5412733, -1532767, 1988033, -4825933, 4276714, 3728569, 10249939, 2750927, +8368207, -8276939, -3154117, -9897215, -3158949, -5264556, -5113696, 41482404, 22677964, 60666, +-21366926, 10994579, -22279070, -18077518, 3271691, 18443126, 36382132, -5699422, 18385682, -6551973, +13047037, 22093848, 12323872, 14132053, 7548405, -4103305, -18072148, -18656264, -5668283, -17629230, +-5207648, -3214246, -3986804, 14146012, -2416456, -36244692, 2118493, 8778913, 8370355, 21726092, +-2248416, -43259448, 24609088, -19343996, 6330782, -4211216, 14558865, 21238614, -23608898, -1626182, +-11798812, -20553030, 14894410, -10208600, -25348896, 9974525, 14800994, 24392194, 6450504, -3771518, +2663954, 19975892, -16051903, 31518080, -9898826, -8747238, -2831994, 19217832, -19959250, 1867774, +2440615, -55533392, -8235063, 17231408, -7994008, 2915746, 7722351, 4066797, -2719251, 4555887, +19065360, 22797150, -18014704, 6537477, -13193066, -2215130, 22539988, -442382, -2333241, 871878, +-1510218, -11639361, 3230889, 823023, -6804302, -17255568, 248034, -4089883, 5304822, -7944616, +-7450695, -9352291, 7984344, 1887101, 4903779, 3973919, 353261, 2947958, -3809099, -7871065, +12140262, -1163399, -5845988, -129923, -4205310, -2594160, -4858145, 681289, 1524713, -650151, +3391414, 8891656, -297427, -2080912, -3568044, 872952, -4444218, -2470680, 5090610, -3787624, +-3171833, -4649839, -11631308, -6454799, 1672890, 7646116, -6053757, -1717450, 23853712, 15663746, +-44080860, -25212532, 30347702, 34966404, -18757196, -6487548, -49618148, -27577448, 7249368, -2357937, +6698539, -26526792, -16470663, -18214420, 26911728, 39755292, -1854889, 10653666, -6407018, -3600793, +-425202, 9044664, 17354352, 4092567, -6072547, -3418257, -3978214, -23925116, -13428752, -24323474, +-3144990, 7368017, -10104984, 14820858, -10990284, -4261145, 23250806, -11355357, 13096966, 8933532, +-4183298, -22448720, -16097001, -13433584, 4087735, 41620916, 7411503, 22321482, 26517128, 20581484, +15390478, 13594645, -22971096, 423054, -3711389, 30770220, 14740328, 17941152, 32318018, -15972983, +-21647172, 7831873, 27341762, -46374372, -779537, 3550864, 21561810, -37531572, -56298432, -10163503, +15846819, 3804267, 6442988, 17528298, 1184337, -12639015, -18442590, 472983, 2596845, 3515968, +17118130, 25147034, 12020540, 1730872, 147103, -423591, 2144799, 2393908, -6325413, 9178882, +1225676, -8687108, -14958297, 1704565, -6338835, 3066070, 1705102, -1516124, 1021129, -6386617, +6539088, -3506841, 4414690, -6859600, -4254165, -12106976, -11698417, 383863, 6278706, -5459977, +12494060, 151398, 3781719, -3928285, 13354127, 919660, 6172405, -6758131, -3491272, -2290828, +-2301029, -8439611, -1422171, 8752070, -15288473, 11725798, -427349, -11541651, -19924890, 7368554, +-9633075, -19796042, 14252849, 26984206, 8452496, -10507637, 16241419, 27141508, 10201621, 5527086, +2035815, -3119220, 12928925, -22842784, 1450088, -32816772, 17590576, -26501022, -2130841, 14142254, +7942469, -15149423, 3266860, -17518098, 35849556, 4562329, 11680700, 18578418, 39534636, -16361678, +12887049, -18951006, 6890738, 14127221, 31789200, 7422777, -6386080, 32448478, 4452808, -2345589, +-18653042, 1176284, 20432770, -6961068, 19639274, -24173686, 37205692, 38470560, -46277200, -1274532, +-2879776, 10053982, -7852811, -6146098, 19965156, -16887274, -49384608, 517544, 43971340, -34746824, +17435956, -8096550, -4373351, -21204254, 48527760, -3224984, 8046085, 4364761, -32613298, 42152420, +3314641, 37473588, -74335144, 6977175, -6987375, -22530324, -6021008, 12941810, -17315698, 11514270, +-15611132, -10516764, -20548198, 25786984, -9974525, 1633161, -21919366, 803696, -16113644, -5638755, +7443179, -11253888, 5146445, 528281, -14889041, 13247290, -6134287, 1746441, -6403796, 11997454, +-9217537, 1726577, 783295, -3584150, 16059420, -9516037, -11373073, -6743099, -12743168, -17840220, +-8945343, 1491427, 1003949, -12914967, -7311645, -8752606, -12396886, -9950902, 4131759, 2630668, +-509491, -5440650, 31035434, 4013110, -24242406, 2714419, -49017924, -10862509, 2187212, -9186935, +-39129836, -4051228, -25780004, -6087043, 23127326, 5675263, 30405148, 12975096, 11307575, 7434052, +-10738492, 24843164, -12757663, -15569, 11355357, 5580773, -15348066, 12444131, 4735202, 29352344, +11724187, -5018133, 17350594, -13795435, 23521388, 8368744, -26383448, -26696980, 13654775, 17667884, +7016366, 3032247, -12938052, -17025250, 5019206, -16751983, -25820806, -7677254, -4559645, -23342610, +-8980777, 8964670, -16325171, -26351772, 7249905, 9989557, 699543, -3096135, -1772211, -4354023, +9297530, 45299020, 8985072, -1330366, -1933809, -15814070, -25979720, -11293617, 36958192, 40064528, +20255066, 3926674, 36040680, 17561584, -8402030, -50293532, -38647728, -31525596, -60428580, -34974456, +8332774, 49060336, -21872658, 16675211, -24430848, 8048232, -2165737, 16931834, -8034273, -2724620, +-21808234, -12306692, -5435818, -19184546, 24483462, -3733937, -12989055, -5988258, 2405182, -13852343, +9880572, 7482370, 15820512, 3772055, 4395899, -15566035, -18403934, -2018098, -13612362, -8422968, +-15844671, -22606024, 1122060, -5831492, 1358283, 1742683, 17347910, 17498234, -6528351, -3355980, +-7745437, 16908750, 11103564, 7414188, 2589329, -3317325, 9593346, -13188771, -5311264, -2057289, +-15226733, -29378650, 15488189, -433792, -9466645, -9113384, -5435818, -4094178, 11003706, 21037824, +-9100499, 27067958, -30996778, 25014964, -3333432, 33350958, -21721798, 19294066, -31953482, 27738510, +-25861608, -10781442, 38331508, 8935679, 30749282, 44257492, 4351876, -3528853, -18639622, -1444720, +27875412, 7098507, -10144176, -31065498, 2460480, 6164889, 14492830, 8997420, 12029667, 7650948, +-18342732, -28918014, -12481175, 28027882, 10529649, 89391152, -28600188, -23873038, 28938952, 45893872, +9418863, -776852, 11861089, 3043521, 14522895, -13482976, 5109401, 21457120, 23491324, 15828565, +69159176, -8803072, -9168681, -4504884, 35582192, 21401822, -18354006, 18754512, -601295, 6120866, +-15148350, 31771484, -31893354, 2214056, 48780092, -36066452, 104969000, -48281876, 50132468, 46167676, +-45522360, -41430328, 46604692, 2018635, -27187142, -11419781, 25668336, -71017824, 10963441, -8351027, +-45880452, 29927332, -35953172, 2842195, 2537789, -14421963, -35481800, 9599789, -2854006, -1580548, +6700149, -7295002, -11773579, 6346351, 14733885, -5623186, 2159295, 11536282, -10908143, 16052440, +12273406, -25566330, 3573950, -14359149, 6423661, -1012002, 1982664, -13081397, 5338645, 3427384, +-171262, -6560563, 19665582, 4465156, -826244, 18877456, -13451838, -12186970, 1913945, 8150774, +1932198, 9081708, 4581657, -26317948, -13750875, 6788733, -15577310, 22651658, -10292889, -12859132, +-617402, -8904541, 17933636, 22846004, -53821844, -23084912, 33314450, -69844224, -42980276, -29282014, +48949204, 103781976, 28929826, -81630688, -18192408, -83393232, -43268576, 67782104, 40773200, 63720136, +35303020, -48390324, -76418744, -58506044, -13807783, 34470872, 39504036, 23543936, 13463649, -20357608, +-83552680, -100847440, -21598316, 77022720, 137754096, 93148176, -17364016, -64644628, -92390656, -68816112, +-55351392, -73014, 22413286, 74995496, 80412528, -43557412, -26968100, -100986496, -93543848, -33860448, +9463960, 97219272, 143976432, 63656248, -42221676, -150803824, -111461920, -82071456, 39791260, 85651848, +53759032, 33743412, 29028610, -90038080, -16301012, -51408076, 19268834, -7254737, 53455700, 83532816, +66653596, -78270408, -157379952, -118611424, 13363254, 91975648, -2058900, 127596496, 5535139, -33045478, +-38216084, -28374164, 584116, 92143688, 79881560, 14474040, -31492310, -11494943, -5621039, 48283484, +53680112, 6255620, 2550137, -8498667, -1190243, -10434086, -12810277, -8768713, -4514548, 18378166, +29136522, 23500988, -34645892, -39706972, -15007689, -16558710, -15432891, 35864052, 29676614, 37722160, +11368242, -16427713, -28223304, -55225764, -34846144, 22928146, 48846664, 73462192, 50680076, 4028143, +-113313584, -100014216, -33769716, 40834940, 64117420, 85204096, 64638720, -5220533, -64335388, -95354176, +-91603064, -16945794, 100217696, 103283760, 52864068, -25128244, -68827384, -48386564, -32146220, 2691334, +20949240, 27271968, 24539296, 14758044, 1286880, -15699716, -19223200, -20015084, -15890842, -18526878, +36842768, 11479911, -29845190, -28161026, 86973, -45373108, -5610838, 6722161, 5189931, -3945464, +1133335, -15258945, -1903207, -1793149, 7828652, -5265093, 20913806, -5552856, -4026532, -5840619, +-6567542, 13037373, 3730716, -6289980, 20255602, 1281511, -36009004, -17981418, 9919227, 17621714, +-5997385, 2146947, 24676734, -608812, 3368865, -20185810, -9015136, 6214281, -4386772, -4486630, +-2678449, 16324634, 5912560, -6393596, -19314468, -7693897, -1131187, -17617956, 1688459, -20121922, +-13463112, -9365713, -17878338, 28032178, -5048197, -12687870, 11862700, -197032, -27551678, -1614908, +27531278, 22321482, -12785044, 17282412, 2914135, 16488379, -18399104, -27151172, 10419054, 11964168, +10557030, 9130027, -10238665, 10078141, -20236812, 13707925, -27609124, -24322936, 17980344, -14235132, +12277164, 16813724, 1243930, -13016972, 4205847, 4747013, -1074279, -1076426, -420370, 10948409, +-9172976, 7105487, -9586367, 12833899, -11221139, -6147709, 4759361, -3906810, -377420, 5061082, +1258425, 3375308, 9937481, -7920994, -4655208, 5654325, 3450469, 11294690, -9146133, 3121904, +-1063541, -7101192, -7062537, 2881923, 1870995, -7027640, -10358924, 2974265, 194347, -1983201, +6706592, -9990094, 11587822, 3415036, -9897215, -11140608, 9350144, -15643345, 10761041, -1795833, +7481296, -843961, 2627983, 13962939, -22236656, 44463648, 67676872, -8779450, -25109990, -21449604, +62396212, 28306518, 60387240, 32675038, 45634, -27979028, -6304475, 15506979, 28346784, 13669807, +-13183939, -3150359, 13529147, 20078972, 2442763, 4577899, -14013941, 2643552, -6781217, 9203578, +10187662, 26538602, 22749904, -12006044, 1951526, -13487271, 3513820, 12163347, 18000208, 1431298, +-8600672, 64961, -15520401, 13031468, -3595425, 5433671, 12055973, 349503, 16066936, -7824894, +-4432406, -3670050, -16567299, -9819906, -25258166, -4681515, -28798292, 2064269, -9917079, 23782308, +3506304, 7071664, -22268332, 9501005, 148176, -9807558, 16305843, -8708046, -4591320, 4147328, +10781442, -1205812, -5921150, 36781028, 11931956, 8577587, 13774497, -9839233, -491774, -3218541, +19178640, 26750130, 25608742, -15184320, -16706886, -2183454, -6644315, 6796786, 17262010, 18029198, +794569, 10148471, -1202054, -2644089, 5872831, 11533598, -1087701, 9084393, -7521025, 1724966, +135828, 3234110, -2579665, 10162429, 5850819, -964220, -2811593, 3146601, 1784022, 11043435, +619549, -6371047, -7025493, -3937411, 3087545, 3826816, 7016903, -8411157, 1189169, -2231236, +5639292, -4074850, 7955890, -2586107, 2973191, -4367982, -3711926, 2628520, -6932077, 142808, +7682623, 2030983, -3160559, 824097, -373125, -25181930, -55021752, -7299297, 72427104, 111955304, +93776312, 74310448, -5114769, 8835285, -54608900, -61691836, -100874824, -57897232, -63571960, -19874424, +7873749, 43988520, 31128312, 95633888, 83060376, 27586038, 5703180, -14711874, -32563368, -51214264, +-18898930, -52499532, -14119705, -25489020, -16658031, -12164958, 2673080, 1013612, 17744120, 25927644, +39144868, 42632384, 50954956, 44176960, -5402532, 4395899, -641561, 8386998, -25370372, 10321343, +-27109834, -67441184, -33259152, -50453516, -85051624, -24799678, -7480223, -34320008, 11566347, 26228292, +59229208, 70016016, 103106056, 65271692, 53030500, 52897892, 32757178, -10123238, 5277441, -51964272, +-44936096, -75303664, -89720256, -103415296, -75458816, -57983132, -6136972, -2714956, 8129300, 30345554, +51123532, 92331600, 91140280, 90912112, 72744936, 31324270, 46906412, 7464653, -23668492, -35436700, +-84074520, -76296336, -67724120, -58253180, -46796888, -28164784, -17231408, -5771363, 4124779, 28372018, +33469606, 44299368, 36536748, 52494164, 47364900, 31140124, 35687420, 24128590, -6616397, -19338090, +-22496502, -53373020, -46432356, -41659036, -31359166, -16965120, -719407, -1985349, 13578539, 21104396, +16284369, 19581830, 12377022, 3981972, -493384, 5719823, 1248225, -6490233, 6966437, 8556112, +516470, 4623533, -1365800, -1854352, 707596, 3210488, -208306, -7208566, -9728638, -9415642, +-11026255, -7376607, -2294050, -2502892, 3114388, 1289564, 856309, 3709241, 4181688, 3405909, +4519916, 7180112, 6049462, 3466039, 4128537, 1422171, -1560684, -492311, -1960653, -2914135, +-1450625, -2626909, -2525441, -3056406, -3860639, -4205847, -4065187, -2284923, 1074, 207769, +2246268, 2316598, 1701881, 1283658, 2190433, 2204392, 3651259, 2461016, 3070902, 1580011, +-697932, -1678795, -667867, -2088965, -296890, -114354, -942208, -558883, -700080, -2057289, +-1542967, -1327145, -543850, -661962, -85362, -142271, 152471, -636192, -678068, -1054951, +811212, 1258425, 3054259, 3034395, 3484829, 2530273, 1742146, 650688, 0, -952946, +-1112933, -2601140, -2313377, -2705830, -2338610, -2667175, -1591822, -1093606, 1611, 78383, +1122597, 906775, 2121714, 2124935, 2464774, 1824287, 2156074, 1105954, 827318, -354872, +-548145, -1396401, -1118302, -1494112, -841277, -1156957, -347355, -623844, 66035, -290984, +325881, -119185, 389231, -160524, 290984, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, { 7448547, -2763275, -3663607, -679142, 2626909, -504122, 2792266, -6819871, -4780299, -1229971, -5654862, -2344515, -1221918, -674847, -3804804, -1764158, 3631932, 3534221, -1354525, -1135482, -2328409, --5517959, 6151467, 3585761, 205622, 598074, -286152, 134218, 4963909, -2534568, 950798, --7904888, -6397891, -1655710, 632971, -5520644, -969589, 1906966, 519691, 57982, -2702608, --2156074, 5190468, -2421288, -2145336, -762357, -677531, 2226941, -1140851, -3406983, -71404, -2916283, -4160750, 144418, -4459787, 279710, -3253438, 4967667, -237297, -5310727, -720481, --548145, 675921, -7566659, -863825, 591632, -4988068, 2282775, 155156, -5836324, 2686502, -3534221, -3049964, -3587372, -6330782, 3307125, 1974074, 5885179, 2965138, -911607, 1195075, --852551, 1838783, 1850594, 4127464, 1009317, -1735167, -92879, 522375, -162672, 2376728, -576599, -760746, -1162326, 1178432, 879931, 1792075, 847182, 722628, 1021665, 993211, -366683, 631897, -135291, -258772, 349503, 290447, 421444, -204548, 501974, -668404, --18254, -5511517, 2505040, -6866042, -1879585, -986232, -3431679, 3262028, 7671349, -3158949, --998580, 329639, -3144453, 2167348, -458488, -2604898, -4352413, -2355253, 6918119, 6630893, -3761855, 7707856, 4571993, 2430415, 7304129, -4562866, 1618129, 3083787, -131533, 1222992, --2153926, 1363652, -10076530, 181462, -576599, 3608846, -2275259, -1316944, -695785, 2755759, --3186329, -550830, 914828, 1929514, 1919314, -572841, -3419868, 612033, 1203665, 2434173, -1869385, 2836289, -3216394, -1949915, -586263, -5750961, -673236, 1479079, 4912906, 5444945, --750009, 2985002, 2253247, -448824, 2037425, 2387465, 3544959, -1461363, -47245, -2697240, -459025, -2330020, 1575179, -3430605, -3202972, 1880122, -20938, -6373195, -594316, -4784057, --1287953, -717260, -802085, -6337761, 605590, 2176475, -1858110, -1841467, 1085553, 748935, -455267, -1293322, -3383897, -222265, -1482838, 1236951, 46171, 41339, -379031, -1448478, --1553168, -1807644, 124554, -811749, 762357, -1153199, 435402, 212064, -1004486, -75162, --1118839, -457951, 64961, -48855, -995359, -296353, -169114, -6964290, -6482717, 2384244, --724239, 5379447, 5493263, 409633, 172336, 10443213, -2793876, -286689, 8846559, 328028, --5050345, -7491497, 5451387, -2216203, 74625, -4651450, 1473174, -3331284, 3716757, 16336982, --5934571, -4840428, -5861557, -6417218, 1209033, -5237713, -12855911, -352724, 1335198, 4832, --5085778, -1104880, 4232691, -5292474, -3064459, 7626788, 2562485, -1970853, -1780264, 4904316, --2399813, 3505767, 3266860, -7003481, -4587562, -4154307, 4613869, -3559991, -2061584, -1942399, --2279554, -381715, -4663261, 24696, -1375463, 1151051, -605054, -10241350, 4791036, -5730560, -4559645, 833761, -8360154, 1699196, 5665599, 1726040, 9403831, -3963718, 558883, 1089311, -2234994, 3346317, -3646427, 1396938, 1279363, -5441187, 7502234, 536334, -1013612, 3167002, --1027034, 1420560, -1319092, -2838974, -154082, -1826435, 2493229, -632971, 508954, 2913599, -1050656, 1112933, -602369, 1589138, 325881, -420370, 1089848, 2123325, -1484985, 145492, --1568737, 1017370, -479963, 3149285, -4392678, 2094870, 2154463, -2287607, 1014686, -1100585, --9439801, 2950643, 8773544, 7397545, 8225399, 1506460, -1826435, -7041599, -3764539, -3279208, --2719788, 7396471, 10153840, 789737, -732292, 7324530, -11829951, 285615, -984621, -158914, --3875671, -3914326, 4267587, 5356361, 144418, -1129040, 2093260, -5686000, -4367445, 4438849, --4810900, 9201431, 8273181, 1430761, 5085242, 4358318, 850940, -3708168, 1275605, -164819, --6491306, 6311992, -581431, 2970507, 5079873, -6036577, -2381559, -7180649, -1655710, 1682554, -6745246, -6918656, -2785286, 5102421, -1093069, -4417374, 7401303, -6158446, -13022341, 2216203, --7346542, -3245385, 3511673, -3117610, 600222, 798864, -3198677, 5571647, -5106179, -5740761, --6952479, -745177, -3031710, 477815, 1811939, -4213900, 1090922, 1233729, 283468, -1999307, -1090922, 922881, 2866891, 453119, -962073, -1969779, -1309965, -865973, -550293, -686658, --1264868, 390842, 532039, 854162, 230318, -372588, -1019518, -379568, 1407139, -1456531, --1569274, -442919, -76236, -122407, 1067836, 1317481, 1187022, -749472, 394600, 275415, -447750, 257161, -446677, 2813741, -1386738, 153008, -11738682, 2488397, 11090679, 875100, -1744831, 3347390, 10387378, 1404991, -9972377, 11057930, 4874788, 3981972, 6750615, 5832029, -53687, -2091649, 6365679, 4844186, 1668058, -4596152, 5535139, 2583423, 8191577, 9532143, -3636227, -2378338, 219043, -92879, 3981972, 12103218, 7204271, -6754373, 11734924, 445603, --1449015, 1525787, -8660265, 9592273, -1287953, 146566, -1156957, 2425046, -1308891, 4938139, --6991133, 9796820, 8367670, -344134, -1578401, -5495948, -10427644, -3605088, 4115116, -2457795, --3924526, 5488432, 6461779, -4426501, -3932043, -13391171, -4656282, -1690607, -676457, -14982993, -7581691, 795643, -8928700, -7357279, 2422362, -3513820, 875100, -2254858, 444529, -3979287, --904091, -3556233, 2496450, 4941360, -1451699, 3746285, 408022, -1632088, 4425427, 1503239, -178778, 3627637, -474594, -1738925, -2367601, -2673080, -2779381, -2653753, -3242700, -2394444, -108448, -1352378, -3050501, -1546725, 242666, -708133, -1174674, 570157, 1150514, 512712, --1432372, -2025614, -2488397, 183073, -2366527, 2040646, -1334124, -1404991, -1320703, -39728, --966905, 122943, 493384, 936840, -1159104, 1153736, 5376762, -6827925, -192200, 202400, -120259, 11372000, 6045167, 29528, 13877576, 6600828, 12514998, 3142842, 4144107, 13624710, --5475547, -8879308, -5827197, 12744242, 2955474, -7006166, 9496710, -2520609, -5756867, 8720931, -20296942, -5160940, 893890, 3374234, 3774740, -5205501, 542777, 11355357, 1075889, 13937169, --3143379, 14956687, 10377715, 3659849, 8679055, 5679021, -5418101, 3791383, -1488206, -1226750, -1289564, 1102733, -1090385, 4010963, 2586107, 9687836, 6339909, -7934415, 2673080, 3700114, --6049999, 437550, -14099304, -18023294, 7122667, -4558034, -11957189, -2460480, -6495065, 7874823, -1587527, -3602404, -9056475, 7068443, -6587943, 4338454, -7377680, 1134408, -3044058, 11036992, -1922535, -4219269, 4101157, -9294309, 8397198, 1447404, -8169565, 424665, -956167, -2254321, --1090922, 1198833, 2253247, -2291365, 3797288, -823023, -1671279, -1737851, -1514513, -3422552, --411780, -1191853, -3489661, -1204202, 1074816, -2048699, 2013803, 362925, -1330366, 599148, --2369748, -389231, -1697049, -170725, -208843, 126165, 961536, 1359894, 1355062, 84289, -615254, -61740, 587874, -1096827, 811212, -770947, 543850, -8061654, 1202054, 181462, -2239289, -4967130, 5602785, 5897527, -515396, -4156992, -13776644, -12056510, -9041443, 4148939, -1377611, 2089502, -11271605, 7102266, 5235565, 8869107, -9644886, 9150965, 7266011, -5742372, --4526359, -2964064, 9578851, 6391448, -4022237, 809601, 14425185, 7117298, 3821984, 8156680, -5823976, 2101313, -4599910, 944893, 789737, -2139968, -5122286, 12569759, 6060199, -11942693, -8118562, 7818451, 8041790, 6075231, 1802813, -7492034, 355945, -1108102, 11202885, 1344862, -5080947, 9927280, -1669669, -11100880, 2571075, 5784247, 11317239, -15037217, -8276939, 3962107, -290447, 1251446, -8699993, -2307471, -8432631, -1315334, 4205310, -2943126, -4551592, -5820218, -2549063, -1537061, -2710661, -7168301, 393526, -9555228, -40802, -1040993, -4643934, -5440113, -6189048, -2209761, -1375463, -3138011, -5675800, 1928977, 2933463, 1811939, 2324651, 1462973, --3077881, -1873143, -846109, -919660, -2886218, -5790690, -2382096, -274878, -1792612, -300648, --2905009, 130997, -1518271, -1291175, -2078227, -2610803, -1174137, 2340757, -1665374, -999654, -496606, 864362, 777926, -1344862, 2005213, 2683818, 2972117, -928250, -52076, -200790, -466541, 351114, 5240934, 730144, -9293772, 9460739, 6007586, -2776160, 3697967, 5713380, --6300180, -2077690, 24055038, -752156, 9354976, 6609955, -20159502, -10661719, -1177358, -814970, --280247, 11454678, 2519535, -5531381, 11761231, 7281580, -1524177, -1912334, 3722126, -1896765, --4219806, -8940511, -10671920, 5901822, -2377265, -4984310, -566936, -16531866, -3125126, 1112397, -9086540, -10918881, -3211562, 1433445, 687195, 2401961, 767725, 11688753, -13651017, -4515621, -2979097, -430034, -8075076, -1683627, 10543071, 9114994, 7828115, -2163053, -13594645, -6176163, -4857071, -1538135, 9052717, -527744, -222265, -6752763, -4231617, 7945153, -9761387, 6652905, -5156645, -7007776, -3520800, -1632625, 1081795, -7547868, 3630858, 2606508, -3744138, -1162326, --10330470, 3721589, 7923678, 11373610, 962073, 3049427, 5359583, 1660005, -9028558, 6163278, --2190970, 1009317, -6979, -2899103, -3134789, -1675574, 4152697, 735513, 3464965, -393526, -541166, -5012764, -1737314, -2312303, 3745212, -395137, -1660005, 2601677, -1956895, 2034741, --1257889, 321586, -4168266, 953483, -998043, -875636, -2686502, 933082, -455267, -2353105, --4309463, -977105, 388695, -1741609, 1694902, -470836, -2839510, -18292802, -1086627, 2455111, -12315819, 1483911, -460098, 7374459, -5337571, 16050830, -16035797, -1592359, -3405372, 2640868, --747324, -1367410, 4166655, -3081102, -5429913, -3707631, -3195993, -9707163, -1493038, 6796249, --1542967, -4350265, 10237055, -223338, 12306155, -12074227, -6849399, 15125801, -1517734, -995359, -933082, -9637907, -1083406, -12015708, 3525631, -14409615, -334471, 10577968, -3452080, 7182259, -9576703, 5470178, 7545184, -9776419, 9685688, 989990, -25243134, -4332549, 3701188, -2150705, --2787971, -10921028, 8566312, -9322763, -1793686, -10562398, -9804873, -15299210, 13585518, 3758, -15830176, -7968238, 11935714, 15705622, -10364830, 12778601, -15823196, -13269838, -14323179, -5086315, --10089415, 3141232, 4779225, -656593, -1853815, -184147, -11329587, 785442, 137976, 6447283, -2601677, 2461016, 4670240, 2530273, -2458332, -205622, -4610648, -2859911, 128312, 1778653, -86436, 2023467, -1512902, 2182380, -691490, 1101659, -7028177, 315143, 2685428, 1928977, -3911105, -2337536, -3102577, -4239133, -98784, -469225, -3292629, -3702262, 368293, -701153, -597537, -100395, -1053878, 1743757, 5592585, -1497333, -1318018, -838056, -1539209, 4902169, -188979, 474057, -1755031, 2855080, -3279745, -766115, 2157147, 11860015, 20163798, 2813204, --5279589, -10926397, 6819335, 18451716, 245350, 5242545, 1026497, 7324530, 5167383, 5606543, -10160282, -12228309, -896574, -4582730, 15972983, 11742441, -510564, 18250390, 9746355, 1582159, --17153562, -8596377, -13063680, -6127308, 1401233, 4898410, -4642860, 651224, 18687940, -3531537, -83215, 912144, 19200652, -11731703, -4641786, -4798552, -1810329, -11477226, 13247827, 850940, -8908299, -13758928, 1938641, -1523640, -8107825, -3278671, -15081778, 4726612, 355945, 3165391, --1792075, -943282, -17518098, -6000606, 6940667, 11157788, -3173444, 2905009, 23451596, -1537598, -1426466, 4276714, 10611254, -9925133, 2345589, 11831561, -6953552, 8597451, 2600066, 8961986, --11858942, -6084358, 1694902, 2721399, 6121939, 6834367, 6630356, -4505958, 1976759, 4030827, -8007430, 12341589, 5804649, -5881958, -2653753, -4632122, 2075543, 2595234, 5465883, 4879083, -3040300, 5156108, -5485747, -1133335, -5595806, 4877472, -6422050, 6580427, 4831838, -4953708, -3007551, -614717, -2925947, 721555, 1086627, -1788854, 1596117, 8178155, -160524, -25233, --4942434, 2570001, -127775, -171262, -4476430, 4682588, -3792456, 1459752, 2121177, 3712999, --311922, -1777043, -10919417, -16663936, 4631049, -1799054, -16804596, 4591857, 1696512, 15220827, -13477071, -12516072, -14992120, 3337190, -11447162, -6053220, 474057, 22676890, 323733, -2918430, --20296404, -10198400, -1756105, -15174119, -23003844, 15742129, -5932961, -7304129, -1324997, 17072496, --5357972, 1828046, -3434363, -3482682, -9947681, -5352066, 1667521, -24077586, -15457050, -4493610, --8773008, -8191577, -2813204, -9483825, 8164733, 3683471, 2614561, -5808944, 4128001, -34745212, -32245540, 18866180, -3274913, -4466229, 18137110, 1025960, -10863583, -15526844, -1976222, -5495411, --6445672, -9373229, -9509594, 11792370, 11063836, -5096516, 24317032, -13610751, -11124502, -10112500, -48318, 7861938, -28508920, 8334384, -9024800, 14803142, -16161962, 6991133, -1480153, -5564130, -11133629, -21086678, 19710142, 1020055, -279710, -4550518, 565325, -396748, -9980967, 1846836, --2775086, 5091147, 6618545, -6206228, 3015604, 4120484, 9293235, 214212, -3063386, -644245, --857920, -3829500, 2700998, -1576790, -2262911, 2249489, -3731790, -1310502, 867583, 2543695, -3157875, -7583839, -5739150, -5078799, 797790, 2901251, -49392, 1860258, 1684164, 4833986, -2548526, -4201015, 3696893, 585726, -4687957, 16515223, 1363652, 38507604, 12546136, -780610, -1656784, -14899778, -19300510, 24050744, -7122130, 2726767, 31932008, -8319889, -1539746, -6830609, -24902220, 4789426, -10290742, 14699526, -5342403, 21835076, 11465415, 5440113, 3238405, -2418067, --8354785, -2724620, -2263448, -23407034, -5876052, -3769908, 12954695, -7248294, 2447595, 4308389, --16765405, -24981678, -885837, 21575768, -1434519, 19168440, -3313031, -26779658, -10365367, 1225139, -6077916, 4852776, -21780316, 192200, -6229850, 15832323, -16160351, 20013474, 29590714, 19193136, --6012954, 3588982, 11943230, -4243428, 23188528, 26836030, 23661512, 7744900, 25944824, -868657, --10438381, 3369939, -13551159, -17103096, 9355513, -7328288, 21205864, 10973105, 5632850, -7256884, --26086020, -23637352, 16618839, -10450729, -21105470, 14125611, 28168544, 16954384, -9016747, 13470628, -8266739, -2894808, -6641630, 8011725, -9997073, -3004867, -1060857, -6860674, 927176, -1449552, -5810017, 3551938, -1331440, -9137543, 5135171, 4707821, 3228205, -1938104, 313533, -8530879, -707059, -34360, 2241973, 2071248, 237297, 5170067, -1768990, 7134478, 8000987, 2131378, -6500433, 660888, -5117454, -12102681, 2770791, 369904, 2636036, -2009508, -8722005, -19463182, -11388643, 14221710, -220654, 6945499, 4683662, 6868190, 5716065, 2596308, -1562294, 3331821, --4099546, 7358353, -13241384, -36883032, -14809047, 20147154, 1131724, -6060736, -12374875, -124554, -16938814, 21629992, 4570919, -13372381, -2405182, 17284560, -21060372, 1935957, -2685965, 15454366, -17641042, -14278619, 26798986, 5139465, 981937, 37893960, 91805, -11990475, 13194676, -6422587, -1788317, -8195335, 2706366, 25145960, 2789045, 32053878, 13438416, -28158342, -30854508, -6810208, -7847979, 17067126, -23968064, -8529805, -3598646, 28829432, 26342646, -22807886, -1045288, -13966160, -8573828, -4902169, 30120068, 266288, -6847252, 19755238, -4239670, -23658290, -12068321, -3997004, -24226836, -21809844, 12903692, 37806988, 17759690, 25321516, -7043210, 10196789, -7101729, -15932181, --15389942, 7793755, -11017128, -903017, -4120484, 6747931, -437013, 15234249, -3731253, -7287486, --2796561, -3285650, 3508988, -2646237, 5645735, -10780368, 7512435, -7203197, -3503620, 1968706, --3097745, -3512210, 4609037, -4863514, -2096481, -1603097, -4177393, -13232794, -7684770, -1494649, --1882269, -4078072, -5463199, -1438277, 3498788, -2510409, 1896765, -2251637, -515396, 2698850, --10387915, 850404, -1817845, -7805566, -711354, -18296024, 13734769, 19252190, 16775069, -28921772, --13222594, 17627620, 54956792, 2926483, 12225088, -16229071, 5294084, -1166084, -2200097, -15263777, -4859219, -5614596, 26549878, 20393578, -27031450, -12512850, 29294362, 14315663, 10747619, 2697240, -15982647, 17856864, 6147709, 10526965, 10385768, -13593035, 2281702, -13319230, -5473399, 3194382, --2214056, 1832340, -10843719, -10388989, 8083666, -2425583, 11023034, 8069707, -24990804, 18557480, -4103841, 14872935, -16765942, 9449465, 15694347, -12265890, -19195282, -20006494, -21294984, -21984864, --17595408, 6102075, 32301912, 8148090, 10175851, 14840186, 1381369, -589484, -12156368, 21115670, --26844082, -54802708, 18988588, -12737799, 2689187, -46530600, 11738682, 14436996, 2837900, 8991514, -8102456, -7078106, -11510512, -18561774, 6127845, 3871913, -13677323, 10031970, -5010616, -23859080, --12609487, -446140, -3928821, 2331630, 1904818, 6857989, 3580392, 1110786, -155156, 5413270, --3120831, -7718593, -13125420, -8216810, -8376797, -3171297, -4491462, 4806069, 7892003, 5524402, --10402948, -1035087, -4207458, -81068, 6459631, 1723893, -9163313, -17668422, -1205812, 586263, -1751810, -6393059, -2347200, -6677064, -1030255, -8679055, -8679592, 5656472, -8475044, 3464965, -1769527, -4685273, -1493038, 5407901, -4751308, 1971927, -6474663, 13002477, 9284646, 12419435, --17715130, -9142912, -2535641, 11353209, -23627152, 39261368, 18585934, -3175055, 21344914, 12883291, -20337208, -10700374, -13785234, -13316546, 24642374, 8792872, 4400731, 22295712, -19567334, -63136020, --4270271, 4231617, 7449621, -35537096, 27484570, 20043002, -38237020, -29375966, 874563, 15736223, -1268089, 8939974, 20167018, -5364951, 12495670, -18439368, -21182778, -16834662, -22003118, -34149284, -9443559, 3534758, -22996866, 30260192, 11693048, -7401303, -7286949, -17873506, -13453448, -31140124, --16982838, 11059004, 27550604, -10537702, 2697240, 11347304, -24575266, 17661442, 23864448, 3507378, --6209449, 20434918, 5528697, 2276333, -14740865, -17183628, -1331977, 30554398, -9481140, -28264642, --570157, -36009544, -37541772, -39069172, -18787798, -20638928, -13223667, 16728898, -2430415, 15029701, --3190087, -5043902, -14192183, -3862249, -4232691, 8032663, -6276558, -9101036, -1855963, -3622805, -1255741, -13244069, 2421288, -6156836, -5337034, 6864432, -6372121, -2203318, 2211908, -4792110, -10185515, -6612102, 1471026, 16514686, 1978369, 9592273, -3776887, -5973763, 16802986, 2387465, --8988293, 181462, 117575, 1158031, 2342905, -4944581, 10485089, 471910, -839666, -5267241, -945967, -5352603, -13828721, -23897734, -12525735, -12841415, 15557982, 30622044, 11304354, -13973139, --29535416, 31671088, 17047262, -15290620, -8242579, -8165270, 1771674, 7444789, -9768366, 16449725, -15301895, 843424, -10301479, -9769440, -9197672, -1196148, 5939403, -4646081, -10183904, -24215026, -7435662, 21247740, -12238509, 18780282, 548145, 12593918, -10577968, 14003741, 40680856, -15294915, -17732310, 35327716, 6100464, -6235219, -9863392, 10210211, 717260, 18000744, -13861470, 48479444, --15076946, -32647658, 7425999, -14913200, 38343320, 12521440, -12080669, 2132988, -23244364, -31863288, -38920992, 4375498, -10580652, 38442104, -20045686, 4928475, -11366094, 22232362, -28586228, -32078574, --22923852, 6984691, 13639742, 25458418, 10810433, 26907434, 42249056, -5344550, 8400419, -5730560, -5223754, -1494112, 1571958, -31292594, 1020592, -43162272, -14507863, -8640937, 7459822, -1623498, -9256728, -3585224, -13032005, -13699872, -3272228, -9127879, -10097468, -17343078, -196495, -1998234, -12824235, 5345087, -10769094, 9429601, 4300336, 7735236, 10292889, -13937706, 3605088, -5931350, --2834142, 13499082, -4828617, 6597070, 9035537, -5808407, -15154255, -7869991, 5196374, -24809878, --7920457, 270583, -3732864, -5837398, 10815265, -11895986, -13093208, 8672613, 14623827, -7157563, -12163347, -8581882, 29442000, -4103305, 549219, 35958540, 3554086, -19211926, -22982906, -19735912, -36271000, -24326158, 14186814, 17411798, -12105902, 3740917, -20474110, -4370666, 15991774, -14409615, -11446625, -4728759, -25649008, -55358372, -5322538, 50044424, 20551956, 5224828, -10226854, -14917495, --3065533, -19614042, 6053220, -27694486, 32926294, 2529736, 3695819, 2790655, -11538967, -33433636, --13127031, 26941792, -22280680, -5585068, -15516643, 12053826, -11209328, 37245420, -6325413, 7706782, --13893145, -34710316, 7368554, -26499412, -6307697, -2311229, -48979808, -41021232, -39126616, 12895102, --7493644, -20995410, -14003204, -13431436, -12735115, -18744848, -12994960, -3253975, -44029320, 12200391, -4529043, 16100222, -10045392, 37945500, -4340065, 7311108, -13544716, -5242545, 20080046, -40531068, -16818556, 26535382, -27645630, -17661442, 1240172, 4274030, -7619272, -13125957, -21760988, -1341640, -56371, -12893492, 10495826, -9522479, -17446694, -9432285, -7764227, 10721312, -773094, 314606, --871342, 7985418, -21413634, -6051072, -3024194, -4130148, -1967095, 289373, -25601226, 722091, --8659728, -6692633, -2708514, -11315091, 2514167, -3280281, 1680943, 363998, -2772402, -2893197, --6861211, -1136556, -5755793, -1311576, 2867965, -5804649, -9832791, 154082, -2878165, -2187749, --6424198, -10318122, -7615514, -2766496, -2006287, -2012192, 2872260, -7604777, -8224326, 14804215, -9437654, 17977660, -6583648, -38278360, 11260331, 253403, 63377612, 64263448, 8114267, 347892, -15514496, 7342247, 16552804, 27575300, 10691784, 28645822, 44019656, -11158862, 6051072, -36174900, --4772783, 4434017, -4323959, -10948409, -21452288, -18571438, 10462003, 9822590, -47390132, 33793340, -9519258, 47798156, -2608119, -9751723, 16030965, -3561602, 50898048, 12650826, -2271501, 9503152, -10325638, -13787382, -30569430, -24434068, -11826192, 37549288, 819802, 41297720, 5417028, 40374840, --11390790, -56031068, -20577188, -16404091, 29214904, 3326989, -26819386, -39495444, -27150098, -5660230, -34249144, -29720100, -25419764, -17128330, 30594662, -15101642, -8531953, -39299488, -38641284, 12119324, -6865505, 52269752, 13762686, -5701032, -13906030, 16295106, 17297444, 55832428, 1286343, -18272402, --23978266, -1690070, -2236604, 1153199, 8961986, 7939247, -12789339, -3062312, 4468377, 11558294, --12283606, -10273562, 15960635, 23066658, 10992969, 6994891, 9224516, -9863392, -3951907, -6241125, --1076426, -1394791, 5279589, -13959, 30418570, 6270116, -1124208, -9309878, -15715822, 15111306, -24690156, -8938901, 539555, 913217, 3193845, 14015015, 6236830, 10410464, 10758893, 2692408, -8382166, 2712809, -455803, 2733210, -7423314, -2524904, 1866163, -4496294, -3022583, -9777493, --592706, 3172907, 652298, 38765836, 14474040, -18606872, 36184564, -2112587, -71667968, -21626234, -44863080, 50203336, -35452272, -35156456, -36086852, 20122458, 30429844, 61389040, 18308908, 8004746, --35204772, -3464965, -2414845, 13860396, 30408368, 22342956, 1530619, -37017788, -72307384, -19043884, --36729488, 54232016, 57090316, 100179576, -30302604, -96304440, -21304648, -33084134, 74538624, 25465398, -75594648, 19552302, -25718802, -73406896, -49974092, 2645700, 8777839, 82247016, 33056216, -2905546, --68097784, -118192672, -31272730, 2462090, 54187992, 124231928, 26691612, 37400576, -80514528, -122829088, -4883378, 28087476, 97311608, 57354456, 40635224, -22797150, -79533664, -64821792, -1080721, 18117246, --2157684, 49200460, -41206452, -38277284, -9920838, -87373056, 13148506, 4024921, 23313620, -17697950, --35748088, -19146428, -15400679, -40087616, 8671539, 11477763, -13265006, -2204929, -37957312, 5137318, -10348187, 12124693, 16938814, 5350993, -19686520, 6503654, -6568079, -3538516, 2312303, 30187178, -4733591, -1196685, -8268349, -23377506, -5034776, -9484362, 8440684, -4443681, 9414031, 6197101, --21691196, -48267380, -24155432, -35530116, 28311888, 28770912, 33978560, 19527606, -45287208, -40633076, --62951336, -15344308, 50108848, 55755116, 54089744, 2407329, -60765196, -45383308, -35624068, -1015760, -89338544, 62050468, 24930674, -48483740, -56547540, -42315628, 20157892, 21059298, 30641370, 16030429, --10039486, -14208289, -26972932, -11766063, 7537131, 919660, 9026411, 12805445, -850404, -41779832, -55261732, -1971927, 8709120, -23714662, -51065012, 30115774, -51425792, 54552528, 8752606, 4167192, -12364137, -34033856, 33675764, 2467996, 23613730, -32660006, 11939472, -482110, 40290016, -16528108, -10401337, 25672630, -29399052, -18092012, 3547106, -28169080, 45138496, -10720775, -17722108, 39288752, -46625092, -13033078, -33426120, -9114457, -29390462, -6249178, 19144280, -3598109, -36754184, 3764002, -20713016, -13843216, 23285702, -19480898, 9357660, 23633594, -9153649, 15350213, -41941428, -43483324, -44156020, 23612120, 67825584, -3421478, -16489453, 56419764, -32000190, -29631516, 20568598, 18635864, -32911260, -30005178, -13482439, 8082592, -5708549, 31717796, -25306484, -80679352, 21356724, 44205416, -1126355, -37685652, 7553237, 22228066, -8419747, -10266582, -29354490, -10204305, -24137716, 24275692, -6577743, -17970144, -4182761, 29109140, -20503638, -8017094, -18478024, -2760053, 14920716, -21414706, -11700565, 30462592, 12421582, -943282, -8283918, -2242510, -10915659, -14943802, 23978802, -10280541, -11199664, -3777961, -11398843, -581431, 3114925, 1736241, 9110699, 9845676, -17307644, -5926518, -9489730, 6988986, 18353468, -2823404, -14778982, 5615133, -17303350, 8101919, -15703474, -9630390, -926639, -3977677, -10305774, 24698746, -10332618, 4725001, 11633456, 1921998, 9277666, 16259672, -380105, -3404835, 1519345, -1395328, -21291764, -13073344, 81109384, 22217328, 22563074, -68700152, --17145510, -53813256, -45434848, 41050224, 43206296, 85499376, 39537860, -11342472, -16416976, -9836012, -27096948, 18900004, 709743, 41661184, 8240969, -16405701, -19488414, -15670725, 29998200, 212064, -26255672, 12386686, 15908559, 4141959, -6413997, 3250753, -31139, 4132296, -6657200, -1516124, -8697309, 7409893, 56121264, 45271104, 36972688, -3020436, 10206453, -22597434, -3637301, -13975824, --25566866, -26586384, 8226473, 14827838, 21414706, 26299158, 21645562, -13254806, -34232500, 52493092, --37219112, -16130287, -9441949, 18165564, 2454037, 25819196, 26780732, 23592792, -31354872, -11041287, -4372814, -12125766, -50639276, 34169148, -11824582, -8904004, 19246286, 39620000, 44754632, 32840930, -31970126, 27801860, -29335700, 4065187, -7481833, -8901320, 16814260, 13552769, 17908404, 8916889, --8151848, -14424111, -21202642, -22728430, -46074800, -18186502, 6791417, -2408403, 28066000, 173946, --12834436, -4061965, -18377092, 7182796, 2092723, -1138703, -297963, 12144557, 26262114, -3016678, -1238561, 14717779, 972810, 380641, -5362267, -1512365, -6358699, -5819144, 1467268, -12334609, -5464272, 7378754, -9357660, -13450764, 3637301, 2947958, -5108327, 13586055, 17816598, -2259690, -2538863, -5659157, -18329310, -7471633, 3639448, 3265249, -104901352, -52183316, -72059888, 52071108, -11438035, 148937120, 153804928, 153387776, 175138032, 172605616, 123903368, 77227272, 96633544, 42856256, -8967892, -81463184, -71035000, -178050560, -155815504, -139755552, -82431696, -103877544, -79259864, -6384469, --25336548, -10095321, -12509629, 766652, -203474, 4855461, 20315196, 21950504, 20830592, 61567284, -63050120, 66960688, 47747688, 133797360, 34961032, 56332256, 93586800, 104457896, 38800196, 105128992, -126355256, 99761888, 86526408, 88099976, 9723269, 52818436, 106365400, 105218648, 67760088, 88332448, -77139760, -867583, -28472948, -19908784, -52489868, -64666640, -8272107, -72696080, -111094160, -86439976, --103465760, -152930896, -69998840, -103335304, -114671872, -162318096, -132064336, -149668880, -171130832, -113867096, --193507600, -228822432, -229763040, -124867584, -155431104, -195800576, -38412040, -87065968, -40840308, -21749714, -64385316, 28841242, 94410896, 50309636, 89199488, 85028008, 55901684, 44205952, 69210176, 128147864, -130287296, 130842424, 133536440, 138847168, 168559216, 150701808, 125078576, 153855936, 173469968, 138782208, -104387032, 124616328, 104819752, 67877128, 85562192, 58022324, 28947006, 12674985, 26656178, 8070244, --10463077, -7090991, -13562433, -32936494, -50367080, -50033684, -54591180, -46575164, -58360552, -92010008, --82702280, -95079304, -107303312, -125062472, -124727464, -103203768, -103657960, -84851376, -53694072, -60605208, --41089416, -28736552, 3779571, 113280, 869194, 5590437, 19352586, 22138946, 7961796, 17643188, -27967754, 22295712, 10387378, 11760157, 21060910, 12521440, 5887327, 8785356, 12328704, 11211475, -7853348, 9605694, 15520401, 14835354, 7014756, 2393371, 5186173, 9203578, 5516349, 3758, -3732327, 6972343, 5464809, 2654290, 4760435, 5076652, 3954054, 3482682, 1747515, 1334661, -3897146, 3122978, 3411278, 1404454, -2167348, -2742874, 1567126, 3263102, -705448, -2262911, -617402, 2147, 659278, 1937030, 1363115, 2318746, 4214437, 3942243, 6271189, 8435853, -9817758, 7620883, 7777649, 8529805, 7134478, 5009006, 5712844, 6808060, 5264556, 2521683, -3285113, 1961190, 1528472, -106300, -2600066, -2378338, -3318399, -6832219, -9496173, -9353902, --8200703, -10675141, -10042170, -9166534, -8208756, -7983271, -6602439, -5299990, -3601330, -3008625, --1858110, -1100049, -278636, 94489, 845572, 851477, 1544578, 1047972, 1236951, 774168, -1088237, 488016, 637803, 130997, 282931, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, }, +2763275, -3663607, -679142, 2626909, -504122, 2792266, -6819871, -4780299, -1229971, -5654862, +2344515, -1221918, -674847, -3804804, -1764158, 3631932, 3534221, -1354525, -1135482, -2328409, +-5517959, 6151467, 3585761, 205622, 598074, -286152, 134218, 4963909, -2534568, 950798, +-7904888, -6397891, -1655710, 632971, -5520644, -969589, 1906966, 519691, 57982, -2702608, +-2156074, 5190468, -2421288, -2145336, -762357, -677531, 2226941, -1140851, -3406983, -71404, +2916283, -4160750, 144418, -4459787, 279710, -3253438, 4967667, -237297, -5310727, -720481, +-548145, 675921, -7566659, -863825, 591632, -4988068, 2282775, 155156, -5836324, 2686502, +3534221, -3049964, -3587372, -6330782, 3307125, 1974074, 5885179, 2965138, -911607, 1195075, +-852551, 1838783, 1850594, 4127464, 1009317, -1735167, -92879, 522375, -162672, 2376728, +576599, -760746, -1162326, 1178432, 879931, 1792075, 847182, 722628, 1021665, 993211, +366683, 631897, -135291, -258772, 349503, 290447, 421444, -204548, 501974, -668404, +-18254, -5511517, 2505040, -6866042, -1879585, -986232, -3431679, 3262028, 7671349, -3158949, +-998580, 329639, -3144453, 2167348, -458488, -2604898, -4352413, -2355253, 6918119, 6630893, +3761855, 7707856, 4571993, 2430415, 7304129, -4562866, 1618129, 3083787, -131533, 1222992, +-2153926, 1363652, -10076530, 181462, -576599, 3608846, -2275259, -1316944, -695785, 2755759, +-3186329, -550830, 914828, 1929514, 1919314, -572841, -3419868, 612033, 1203665, 2434173, +1869385, 2836289, -3216394, -1949915, -586263, -5750961, -673236, 1479079, 4912906, 5444945, +-750009, 2985002, 2253247, -448824, 2037425, 2387465, 3544959, -1461363, -47245, -2697240, +459025, -2330020, 1575179, -3430605, -3202972, 1880122, -20938, -6373195, -594316, -4784057, +-1287953, -717260, -802085, -6337761, 605590, 2176475, -1858110, -1841467, 1085553, 748935, +455267, -1293322, -3383897, -222265, -1482838, 1236951, 46171, 41339, -379031, -1448478, +-1553168, -1807644, 124554, -811749, 762357, -1153199, 435402, 212064, -1004486, -75162, +-1118839, -457951, 64961, -48855, -995359, -296353, -169114, -6964290, -6482717, 2384244, +-724239, 5379447, 5493263, 409633, 172336, 10443213, -2793876, -286689, 8846559, 328028, +-5050345, -7491497, 5451387, -2216203, 74625, -4651450, 1473174, -3331284, 3716757, 16336982, +-5934571, -4840428, -5861557, -6417218, 1209033, -5237713, -12855911, -352724, 1335198, 4832, +-5085778, -1104880, 4232691, -5292474, -3064459, 7626788, 2562485, -1970853, -1780264, 4904316, +-2399813, 3505767, 3266860, -7003481, -4587562, -4154307, 4613869, -3559991, -2061584, -1942399, +-2279554, -381715, -4663261, 24696, -1375463, 1151051, -605054, -10241350, 4791036, -5730560, +4559645, 833761, -8360154, 1699196, 5665599, 1726040, 9403831, -3963718, 558883, 1089311, +2234994, 3346317, -3646427, 1396938, 1279363, -5441187, 7502234, 536334, -1013612, 3167002, +-1027034, 1420560, -1319092, -2838974, -154082, -1826435, 2493229, -632971, 508954, 2913599, +1050656, 1112933, -602369, 1589138, 325881, -420370, 1089848, 2123325, -1484985, 145492, +-1568737, 1017370, -479963, 3149285, -4392678, 2094870, 2154463, -2287607, 1014686, -1100585, +-9439801, 2950643, 8773544, 7397545, 8225399, 1506460, -1826435, -7041599, -3764539, -3279208, +-2719788, 7396471, 10153840, 789737, -732292, 7324530, -11829951, 285615, -984621, -158914, +-3875671, -3914326, 4267587, 5356361, 144418, -1129040, 2093260, -5686000, -4367445, 4438849, +-4810900, 9201431, 8273181, 1430761, 5085242, 4358318, 850940, -3708168, 1275605, -164819, +-6491306, 6311992, -581431, 2970507, 5079873, -6036577, -2381559, -7180649, -1655710, 1682554, +6745246, -6918656, -2785286, 5102421, -1093069, -4417374, 7401303, -6158446, -13022341, 2216203, +-7346542, -3245385, 3511673, -3117610, 600222, 798864, -3198677, 5571647, -5106179, -5740761, +-6952479, -745177, -3031710, 477815, 1811939, -4213900, 1090922, 1233729, 283468, -1999307, +1090922, 922881, 2866891, 453119, -962073, -1969779, -1309965, -865973, -550293, -686658, +-1264868, 390842, 532039, 854162, 230318, -372588, -1019518, -379568, 1407139, -1456531, +-1569274, -442919, -76236, -122407, 1067836, 1317481, 1187022, -749472, 394600, 275415, +447750, 257161, -446677, 2813741, -1386738, 153008, -11738682, 2488397, 11090679, 875100, +1744831, 3347390, 10387378, 1404991, -9972377, 11057930, 4874788, 3981972, 6750615, 5832029, +53687, -2091649, 6365679, 4844186, 1668058, -4596152, 5535139, 2583423, 8191577, 9532143, +3636227, -2378338, 219043, -92879, 3981972, 12103218, 7204271, -6754373, 11734924, 445603, +-1449015, 1525787, -8660265, 9592273, -1287953, 146566, -1156957, 2425046, -1308891, 4938139, +-6991133, 9796820, 8367670, -344134, -1578401, -5495948, -10427644, -3605088, 4115116, -2457795, +-3924526, 5488432, 6461779, -4426501, -3932043, -13391171, -4656282, -1690607, -676457, -14982993, +7581691, 795643, -8928700, -7357279, 2422362, -3513820, 875100, -2254858, 444529, -3979287, +-904091, -3556233, 2496450, 4941360, -1451699, 3746285, 408022, -1632088, 4425427, 1503239, +178778, 3627637, -474594, -1738925, -2367601, -2673080, -2779381, -2653753, -3242700, -2394444, +108448, -1352378, -3050501, -1546725, 242666, -708133, -1174674, 570157, 1150514, 512712, +-1432372, -2025614, -2488397, 183073, -2366527, 2040646, -1334124, -1404991, -1320703, -39728, +-966905, 122943, 493384, 936840, -1159104, 1153736, 5376762, -6827925, -192200, 202400, +120259, 11372000, 6045167, 29528, 13877576, 6600828, 12514998, 3142842, 4144107, 13624710, +-5475547, -8879308, -5827197, 12744242, 2955474, -7006166, 9496710, -2520609, -5756867, 8720931, +20296942, -5160940, 893890, 3374234, 3774740, -5205501, 542777, 11355357, 1075889, 13937169, +-3143379, 14956687, 10377715, 3659849, 8679055, 5679021, -5418101, 3791383, -1488206, -1226750, +1289564, 1102733, -1090385, 4010963, 2586107, 9687836, 6339909, -7934415, 2673080, 3700114, +-6049999, 437550, -14099304, -18023294, 7122667, -4558034, -11957189, -2460480, -6495065, 7874823, +1587527, -3602404, -9056475, 7068443, -6587943, 4338454, -7377680, 1134408, -3044058, 11036992, +1922535, -4219269, 4101157, -9294309, 8397198, 1447404, -8169565, 424665, -956167, -2254321, +-1090922, 1198833, 2253247, -2291365, 3797288, -823023, -1671279, -1737851, -1514513, -3422552, +-411780, -1191853, -3489661, -1204202, 1074816, -2048699, 2013803, 362925, -1330366, 599148, +-2369748, -389231, -1697049, -170725, -208843, 126165, 961536, 1359894, 1355062, 84289, +615254, -61740, 587874, -1096827, 811212, -770947, 543850, -8061654, 1202054, 181462, +2239289, -4967130, 5602785, 5897527, -515396, -4156992, -13776644, -12056510, -9041443, 4148939, +1377611, 2089502, -11271605, 7102266, 5235565, 8869107, -9644886, 9150965, 7266011, -5742372, +-4526359, -2964064, 9578851, 6391448, -4022237, 809601, 14425185, 7117298, 3821984, 8156680, +5823976, 2101313, -4599910, 944893, 789737, -2139968, -5122286, 12569759, 6060199, -11942693, +8118562, 7818451, 8041790, 6075231, 1802813, -7492034, 355945, -1108102, 11202885, 1344862, +5080947, 9927280, -1669669, -11100880, 2571075, 5784247, 11317239, -15037217, -8276939, 3962107, +290447, 1251446, -8699993, -2307471, -8432631, -1315334, 4205310, -2943126, -4551592, -5820218, +2549063, -1537061, -2710661, -7168301, 393526, -9555228, -40802, -1040993, -4643934, -5440113, +6189048, -2209761, -1375463, -3138011, -5675800, 1928977, 2933463, 1811939, 2324651, 1462973, +-3077881, -1873143, -846109, -919660, -2886218, -5790690, -2382096, -274878, -1792612, -300648, +-2905009, 130997, -1518271, -1291175, -2078227, -2610803, -1174137, 2340757, -1665374, -999654, +496606, 864362, 777926, -1344862, 2005213, 2683818, 2972117, -928250, -52076, -200790, +466541, 351114, 5240934, 730144, -9293772, 9460739, 6007586, -2776160, 3697967, 5713380, +-6300180, -2077690, 24055038, -752156, 9354976, 6609955, -20159502, -10661719, -1177358, -814970, +-280247, 11454678, 2519535, -5531381, 11761231, 7281580, -1524177, -1912334, 3722126, -1896765, +-4219806, -8940511, -10671920, 5901822, -2377265, -4984310, -566936, -16531866, -3125126, 1112397, +9086540, -10918881, -3211562, 1433445, 687195, 2401961, 767725, 11688753, -13651017, -4515621, +2979097, -430034, -8075076, -1683627, 10543071, 9114994, 7828115, -2163053, -13594645, -6176163, +4857071, -1538135, 9052717, -527744, -222265, -6752763, -4231617, 7945153, -9761387, 6652905, +5156645, -7007776, -3520800, -1632625, 1081795, -7547868, 3630858, 2606508, -3744138, -1162326, +-10330470, 3721589, 7923678, 11373610, 962073, 3049427, 5359583, 1660005, -9028558, 6163278, +-2190970, 1009317, -6979, -2899103, -3134789, -1675574, 4152697, 735513, 3464965, -393526, +541166, -5012764, -1737314, -2312303, 3745212, -395137, -1660005, 2601677, -1956895, 2034741, +-1257889, 321586, -4168266, 953483, -998043, -875636, -2686502, 933082, -455267, -2353105, +-4309463, -977105, 388695, -1741609, 1694902, -470836, -2839510, -18292802, -1086627, 2455111, +12315819, 1483911, -460098, 7374459, -5337571, 16050830, -16035797, -1592359, -3405372, 2640868, +-747324, -1367410, 4166655, -3081102, -5429913, -3707631, -3195993, -9707163, -1493038, 6796249, +-1542967, -4350265, 10237055, -223338, 12306155, -12074227, -6849399, 15125801, -1517734, -995359, +933082, -9637907, -1083406, -12015708, 3525631, -14409615, -334471, 10577968, -3452080, 7182259, +9576703, 5470178, 7545184, -9776419, 9685688, 989990, -25243134, -4332549, 3701188, -2150705, +-2787971, -10921028, 8566312, -9322763, -1793686, -10562398, -9804873, -15299210, 13585518, 3758, +15830176, -7968238, 11935714, 15705622, -10364830, 12778601, -15823196, -13269838, -14323179, -5086315, +-10089415, 3141232, 4779225, -656593, -1853815, -184147, -11329587, 785442, 137976, 6447283, +2601677, 2461016, 4670240, 2530273, -2458332, -205622, -4610648, -2859911, 128312, 1778653, +86436, 2023467, -1512902, 2182380, -691490, 1101659, -7028177, 315143, 2685428, 1928977, +3911105, -2337536, -3102577, -4239133, -98784, -469225, -3292629, -3702262, 368293, -701153, +597537, -100395, -1053878, 1743757, 5592585, -1497333, -1318018, -838056, -1539209, 4902169, +188979, 474057, -1755031, 2855080, -3279745, -766115, 2157147, 11860015, 20163798, 2813204, +-5279589, -10926397, 6819335, 18451716, 245350, 5242545, 1026497, 7324530, 5167383, 5606543, +10160282, -12228309, -896574, -4582730, 15972983, 11742441, -510564, 18250390, 9746355, 1582159, +-17153562, -8596377, -13063680, -6127308, 1401233, 4898410, -4642860, 651224, 18687940, -3531537, +83215, 912144, 19200652, -11731703, -4641786, -4798552, -1810329, -11477226, 13247827, 850940, +8908299, -13758928, 1938641, -1523640, -8107825, -3278671, -15081778, 4726612, 355945, 3165391, +-1792075, -943282, -17518098, -6000606, 6940667, 11157788, -3173444, 2905009, 23451596, -1537598, +1426466, 4276714, 10611254, -9925133, 2345589, 11831561, -6953552, 8597451, 2600066, 8961986, +-11858942, -6084358, 1694902, 2721399, 6121939, 6834367, 6630356, -4505958, 1976759, 4030827, +8007430, 12341589, 5804649, -5881958, -2653753, -4632122, 2075543, 2595234, 5465883, 4879083, +3040300, 5156108, -5485747, -1133335, -5595806, 4877472, -6422050, 6580427, 4831838, -4953708, +3007551, -614717, -2925947, 721555, 1086627, -1788854, 1596117, 8178155, -160524, -25233, +-4942434, 2570001, -127775, -171262, -4476430, 4682588, -3792456, 1459752, 2121177, 3712999, +-311922, -1777043, -10919417, -16663936, 4631049, -1799054, -16804596, 4591857, 1696512, 15220827, +13477071, -12516072, -14992120, 3337190, -11447162, -6053220, 474057, 22676890, 323733, -2918430, +-20296404, -10198400, -1756105, -15174119, -23003844, 15742129, -5932961, -7304129, -1324997, 17072496, +-5357972, 1828046, -3434363, -3482682, -9947681, -5352066, 1667521, -24077586, -15457050, -4493610, +-8773008, -8191577, -2813204, -9483825, 8164733, 3683471, 2614561, -5808944, 4128001, -34745212, +32245540, 18866180, -3274913, -4466229, 18137110, 1025960, -10863583, -15526844, -1976222, -5495411, +-6445672, -9373229, -9509594, 11792370, 11063836, -5096516, 24317032, -13610751, -11124502, -10112500, +48318, 7861938, -28508920, 8334384, -9024800, 14803142, -16161962, 6991133, -1480153, -5564130, +11133629, -21086678, 19710142, 1020055, -279710, -4550518, 565325, -396748, -9980967, 1846836, +-2775086, 5091147, 6618545, -6206228, 3015604, 4120484, 9293235, 214212, -3063386, -644245, +-857920, -3829500, 2700998, -1576790, -2262911, 2249489, -3731790, -1310502, 867583, 2543695, +3157875, -7583839, -5739150, -5078799, 797790, 2901251, -49392, 1860258, 1684164, 4833986, +2548526, -4201015, 3696893, 585726, -4687957, 16515223, 1363652, 38507604, 12546136, -780610, +1656784, -14899778, -19300510, 24050744, -7122130, 2726767, 31932008, -8319889, -1539746, -6830609, +24902220, 4789426, -10290742, 14699526, -5342403, 21835076, 11465415, 5440113, 3238405, -2418067, +-8354785, -2724620, -2263448, -23407034, -5876052, -3769908, 12954695, -7248294, 2447595, 4308389, +-16765405, -24981678, -885837, 21575768, -1434519, 19168440, -3313031, -26779658, -10365367, 1225139, +6077916, 4852776, -21780316, 192200, -6229850, 15832323, -16160351, 20013474, 29590714, 19193136, +-6012954, 3588982, 11943230, -4243428, 23188528, 26836030, 23661512, 7744900, 25944824, -868657, +-10438381, 3369939, -13551159, -17103096, 9355513, -7328288, 21205864, 10973105, 5632850, -7256884, +-26086020, -23637352, 16618839, -10450729, -21105470, 14125611, 28168544, 16954384, -9016747, 13470628, +8266739, -2894808, -6641630, 8011725, -9997073, -3004867, -1060857, -6860674, 927176, -1449552, +5810017, 3551938, -1331440, -9137543, 5135171, 4707821, 3228205, -1938104, 313533, -8530879, +707059, -34360, 2241973, 2071248, 237297, 5170067, -1768990, 7134478, 8000987, 2131378, +6500433, 660888, -5117454, -12102681, 2770791, 369904, 2636036, -2009508, -8722005, -19463182, +11388643, 14221710, -220654, 6945499, 4683662, 6868190, 5716065, 2596308, -1562294, 3331821, +-4099546, 7358353, -13241384, -36883032, -14809047, 20147154, 1131724, -6060736, -12374875, -124554, +16938814, 21629992, 4570919, -13372381, -2405182, 17284560, -21060372, 1935957, -2685965, 15454366, +17641042, -14278619, 26798986, 5139465, 981937, 37893960, 91805, -11990475, 13194676, -6422587, +1788317, -8195335, 2706366, 25145960, 2789045, 32053878, 13438416, -28158342, -30854508, -6810208, +7847979, 17067126, -23968064, -8529805, -3598646, 28829432, 26342646, -22807886, -1045288, -13966160, +8573828, -4902169, 30120068, 266288, -6847252, 19755238, -4239670, -23658290, -12068321, -3997004, +24226836, -21809844, 12903692, 37806988, 17759690, 25321516, -7043210, 10196789, -7101729, -15932181, +-15389942, 7793755, -11017128, -903017, -4120484, 6747931, -437013, 15234249, -3731253, -7287486, +-2796561, -3285650, 3508988, -2646237, 5645735, -10780368, 7512435, -7203197, -3503620, 1968706, +-3097745, -3512210, 4609037, -4863514, -2096481, -1603097, -4177393, -13232794, -7684770, -1494649, +-1882269, -4078072, -5463199, -1438277, 3498788, -2510409, 1896765, -2251637, -515396, 2698850, +-10387915, 850404, -1817845, -7805566, -711354, -18296024, 13734769, 19252190, 16775069, -28921772, +-13222594, 17627620, 54956792, 2926483, 12225088, -16229071, 5294084, -1166084, -2200097, -15263777, +4859219, -5614596, 26549878, 20393578, -27031450, -12512850, 29294362, 14315663, 10747619, 2697240, +15982647, 17856864, 6147709, 10526965, 10385768, -13593035, 2281702, -13319230, -5473399, 3194382, +-2214056, 1832340, -10843719, -10388989, 8083666, -2425583, 11023034, 8069707, -24990804, 18557480, +4103841, 14872935, -16765942, 9449465, 15694347, -12265890, -19195282, -20006494, -21294984, -21984864, +-17595408, 6102075, 32301912, 8148090, 10175851, 14840186, 1381369, -589484, -12156368, 21115670, +-26844082, -54802708, 18988588, -12737799, 2689187, -46530600, 11738682, 14436996, 2837900, 8991514, +8102456, -7078106, -11510512, -18561774, 6127845, 3871913, -13677323, 10031970, -5010616, -23859080, +-12609487, -446140, -3928821, 2331630, 1904818, 6857989, 3580392, 1110786, -155156, 5413270, +-3120831, -7718593, -13125420, -8216810, -8376797, -3171297, -4491462, 4806069, 7892003, 5524402, +-10402948, -1035087, -4207458, -81068, 6459631, 1723893, -9163313, -17668422, -1205812, 586263, +1751810, -6393059, -2347200, -6677064, -1030255, -8679055, -8679592, 5656472, -8475044, 3464965, +1769527, -4685273, -1493038, 5407901, -4751308, 1971927, -6474663, 13002477, 9284646, 12419435, +-17715130, -9142912, -2535641, 11353209, -23627152, 39261368, 18585934, -3175055, 21344914, 12883291, +20337208, -10700374, -13785234, -13316546, 24642374, 8792872, 4400731, 22295712, -19567334, -63136020, +-4270271, 4231617, 7449621, -35537096, 27484570, 20043002, -38237020, -29375966, 874563, 15736223, +1268089, 8939974, 20167018, -5364951, 12495670, -18439368, -21182778, -16834662, -22003118, -34149284, +9443559, 3534758, -22996866, 30260192, 11693048, -7401303, -7286949, -17873506, -13453448, -31140124, +-16982838, 11059004, 27550604, -10537702, 2697240, 11347304, -24575266, 17661442, 23864448, 3507378, +-6209449, 20434918, 5528697, 2276333, -14740865, -17183628, -1331977, 30554398, -9481140, -28264642, +-570157, -36009544, -37541772, -39069172, -18787798, -20638928, -13223667, 16728898, -2430415, 15029701, +-3190087, -5043902, -14192183, -3862249, -4232691, 8032663, -6276558, -9101036, -1855963, -3622805, +1255741, -13244069, 2421288, -6156836, -5337034, 6864432, -6372121, -2203318, 2211908, -4792110, +10185515, -6612102, 1471026, 16514686, 1978369, 9592273, -3776887, -5973763, 16802986, 2387465, +-8988293, 181462, 117575, 1158031, 2342905, -4944581, 10485089, 471910, -839666, -5267241, +945967, -5352603, -13828721, -23897734, -12525735, -12841415, 15557982, 30622044, 11304354, -13973139, +-29535416, 31671088, 17047262, -15290620, -8242579, -8165270, 1771674, 7444789, -9768366, 16449725, +15301895, 843424, -10301479, -9769440, -9197672, -1196148, 5939403, -4646081, -10183904, -24215026, +7435662, 21247740, -12238509, 18780282, 548145, 12593918, -10577968, 14003741, 40680856, -15294915, +17732310, 35327716, 6100464, -6235219, -9863392, 10210211, 717260, 18000744, -13861470, 48479444, +-15076946, -32647658, 7425999, -14913200, 38343320, 12521440, -12080669, 2132988, -23244364, -31863288, +38920992, 4375498, -10580652, 38442104, -20045686, 4928475, -11366094, 22232362, -28586228, -32078574, +-22923852, 6984691, 13639742, 25458418, 10810433, 26907434, 42249056, -5344550, 8400419, -5730560, +5223754, -1494112, 1571958, -31292594, 1020592, -43162272, -14507863, -8640937, 7459822, -1623498, +9256728, -3585224, -13032005, -13699872, -3272228, -9127879, -10097468, -17343078, -196495, -1998234, +12824235, 5345087, -10769094, 9429601, 4300336, 7735236, 10292889, -13937706, 3605088, -5931350, +-2834142, 13499082, -4828617, 6597070, 9035537, -5808407, -15154255, -7869991, 5196374, -24809878, +-7920457, 270583, -3732864, -5837398, 10815265, -11895986, -13093208, 8672613, 14623827, -7157563, +12163347, -8581882, 29442000, -4103305, 549219, 35958540, 3554086, -19211926, -22982906, -19735912, +36271000, -24326158, 14186814, 17411798, -12105902, 3740917, -20474110, -4370666, 15991774, -14409615, +11446625, -4728759, -25649008, -55358372, -5322538, 50044424, 20551956, 5224828, -10226854, -14917495, +-3065533, -19614042, 6053220, -27694486, 32926294, 2529736, 3695819, 2790655, -11538967, -33433636, +-13127031, 26941792, -22280680, -5585068, -15516643, 12053826, -11209328, 37245420, -6325413, 7706782, +-13893145, -34710316, 7368554, -26499412, -6307697, -2311229, -48979808, -41021232, -39126616, 12895102, +-7493644, -20995410, -14003204, -13431436, -12735115, -18744848, -12994960, -3253975, -44029320, 12200391, +4529043, 16100222, -10045392, 37945500, -4340065, 7311108, -13544716, -5242545, 20080046, -40531068, +16818556, 26535382, -27645630, -17661442, 1240172, 4274030, -7619272, -13125957, -21760988, -1341640, +56371, -12893492, 10495826, -9522479, -17446694, -9432285, -7764227, 10721312, -773094, 314606, +-871342, 7985418, -21413634, -6051072, -3024194, -4130148, -1967095, 289373, -25601226, 722091, +-8659728, -6692633, -2708514, -11315091, 2514167, -3280281, 1680943, 363998, -2772402, -2893197, +-6861211, -1136556, -5755793, -1311576, 2867965, -5804649, -9832791, 154082, -2878165, -2187749, +-6424198, -10318122, -7615514, -2766496, -2006287, -2012192, 2872260, -7604777, -8224326, 14804215, +9437654, 17977660, -6583648, -38278360, 11260331, 253403, 63377612, 64263448, 8114267, 347892, +15514496, 7342247, 16552804, 27575300, 10691784, 28645822, 44019656, -11158862, 6051072, -36174900, +-4772783, 4434017, -4323959, -10948409, -21452288, -18571438, 10462003, 9822590, -47390132, 33793340, +9519258, 47798156, -2608119, -9751723, 16030965, -3561602, 50898048, 12650826, -2271501, 9503152, +10325638, -13787382, -30569430, -24434068, -11826192, 37549288, 819802, 41297720, 5417028, 40374840, +-11390790, -56031068, -20577188, -16404091, 29214904, 3326989, -26819386, -39495444, -27150098, -5660230, +34249144, -29720100, -25419764, -17128330, 30594662, -15101642, -8531953, -39299488, -38641284, 12119324, +6865505, 52269752, 13762686, -5701032, -13906030, 16295106, 17297444, 55832428, 1286343, -18272402, +-23978266, -1690070, -2236604, 1153199, 8961986, 7939247, -12789339, -3062312, 4468377, 11558294, +-12283606, -10273562, 15960635, 23066658, 10992969, 6994891, 9224516, -9863392, -3951907, -6241125, +-1076426, -1394791, 5279589, -13959, 30418570, 6270116, -1124208, -9309878, -15715822, 15111306, +24690156, -8938901, 539555, 913217, 3193845, 14015015, 6236830, 10410464, 10758893, 2692408, +8382166, 2712809, -455803, 2733210, -7423314, -2524904, 1866163, -4496294, -3022583, -9777493, +-592706, 3172907, 652298, 38765836, 14474040, -18606872, 36184564, -2112587, -71667968, -21626234, +44863080, 50203336, -35452272, -35156456, -36086852, 20122458, 30429844, 61389040, 18308908, 8004746, +-35204772, -3464965, -2414845, 13860396, 30408368, 22342956, 1530619, -37017788, -72307384, -19043884, +-36729488, 54232016, 57090316, 100179576, -30302604, -96304440, -21304648, -33084134, 74538624, 25465398, +75594648, 19552302, -25718802, -73406896, -49974092, 2645700, 8777839, 82247016, 33056216, -2905546, +-68097784, -118192672, -31272730, 2462090, 54187992, 124231928, 26691612, 37400576, -80514528, -122829088, +4883378, 28087476, 97311608, 57354456, 40635224, -22797150, -79533664, -64821792, -1080721, 18117246, +-2157684, 49200460, -41206452, -38277284, -9920838, -87373056, 13148506, 4024921, 23313620, -17697950, +-35748088, -19146428, -15400679, -40087616, 8671539, 11477763, -13265006, -2204929, -37957312, 5137318, +10348187, 12124693, 16938814, 5350993, -19686520, 6503654, -6568079, -3538516, 2312303, 30187178, +4733591, -1196685, -8268349, -23377506, -5034776, -9484362, 8440684, -4443681, 9414031, 6197101, +-21691196, -48267380, -24155432, -35530116, 28311888, 28770912, 33978560, 19527606, -45287208, -40633076, +-62951336, -15344308, 50108848, 55755116, 54089744, 2407329, -60765196, -45383308, -35624068, -1015760, +89338544, 62050468, 24930674, -48483740, -56547540, -42315628, 20157892, 21059298, 30641370, 16030429, +-10039486, -14208289, -26972932, -11766063, 7537131, 919660, 9026411, 12805445, -850404, -41779832, +55261732, -1971927, 8709120, -23714662, -51065012, 30115774, -51425792, 54552528, 8752606, 4167192, +12364137, -34033856, 33675764, 2467996, 23613730, -32660006, 11939472, -482110, 40290016, -16528108, +10401337, 25672630, -29399052, -18092012, 3547106, -28169080, 45138496, -10720775, -17722108, 39288752, +46625092, -13033078, -33426120, -9114457, -29390462, -6249178, 19144280, -3598109, -36754184, 3764002, +20713016, -13843216, 23285702, -19480898, 9357660, 23633594, -9153649, 15350213, -41941428, -43483324, +44156020, 23612120, 67825584, -3421478, -16489453, 56419764, -32000190, -29631516, 20568598, 18635864, +32911260, -30005178, -13482439, 8082592, -5708549, 31717796, -25306484, -80679352, 21356724, 44205416, +1126355, -37685652, 7553237, 22228066, -8419747, -10266582, -29354490, -10204305, -24137716, 24275692, +6577743, -17970144, -4182761, 29109140, -20503638, -8017094, -18478024, -2760053, 14920716, -21414706, +11700565, 30462592, 12421582, -943282, -8283918, -2242510, -10915659, -14943802, 23978802, -10280541, +11199664, -3777961, -11398843, -581431, 3114925, 1736241, 9110699, 9845676, -17307644, -5926518, +9489730, 6988986, 18353468, -2823404, -14778982, 5615133, -17303350, 8101919, -15703474, -9630390, +926639, -3977677, -10305774, 24698746, -10332618, 4725001, 11633456, 1921998, 9277666, 16259672, +380105, -3404835, 1519345, -1395328, -21291764, -13073344, 81109384, 22217328, 22563074, -68700152, +-17145510, -53813256, -45434848, 41050224, 43206296, 85499376, 39537860, -11342472, -16416976, -9836012, +27096948, 18900004, 709743, 41661184, 8240969, -16405701, -19488414, -15670725, 29998200, 212064, +26255672, 12386686, 15908559, 4141959, -6413997, 3250753, -31139, 4132296, -6657200, -1516124, +8697309, 7409893, 56121264, 45271104, 36972688, -3020436, 10206453, -22597434, -3637301, -13975824, +-25566866, -26586384, 8226473, 14827838, 21414706, 26299158, 21645562, -13254806, -34232500, 52493092, +-37219112, -16130287, -9441949, 18165564, 2454037, 25819196, 26780732, 23592792, -31354872, -11041287, +4372814, -12125766, -50639276, 34169148, -11824582, -8904004, 19246286, 39620000, 44754632, 32840930, +31970126, 27801860, -29335700, 4065187, -7481833, -8901320, 16814260, 13552769, 17908404, 8916889, +-8151848, -14424111, -21202642, -22728430, -46074800, -18186502, 6791417, -2408403, 28066000, 173946, +-12834436, -4061965, -18377092, 7182796, 2092723, -1138703, -297963, 12144557, 26262114, -3016678, +1238561, 14717779, 972810, 380641, -5362267, -1512365, -6358699, -5819144, 1467268, -12334609, +5464272, 7378754, -9357660, -13450764, 3637301, 2947958, -5108327, 13586055, 17816598, -2259690, +2538863, -5659157, -18329310, -7471633, 3639448, 3265249, -104901352, -52183316, -72059888, 52071108, +11438035, 148937120, 153804928, 153387776, 175138032, 172605616, 123903368, 77227272, 96633544, 42856256, +8967892, -81463184, -71035000, -178050560, -155815504, -139755552, -82431696, -103877544, -79259864, -6384469, +-25336548, -10095321, -12509629, 766652, -203474, 4855461, 20315196, 21950504, 20830592, 61567284, +63050120, 66960688, 47747688, 133797360, 34961032, 56332256, 93586800, 104457896, 38800196, 105128992, +126355256, 99761888, 86526408, 88099976, 9723269, 52818436, 106365400, 105218648, 67760088, 88332448, +77139760, -867583, -28472948, -19908784, -52489868, -64666640, -8272107, -72696080, -111094160, -86439976, +-103465760, -152930896, -69998840, -103335304, -114671872, -162318096, -132064336, -149668880, -171130832, -113867096, +-193507600, -228822432, -229763040, -124867584, -155431104, -195800576, -38412040, -87065968, -40840308, -21749714, +64385316, 28841242, 94410896, 50309636, 89199488, 85028008, 55901684, 44205952, 69210176, 128147864, +130287296, 130842424, 133536440, 138847168, 168559216, 150701808, 125078576, 153855936, 173469968, 138782208, +104387032, 124616328, 104819752, 67877128, 85562192, 58022324, 28947006, 12674985, 26656178, 8070244, +-10463077, -7090991, -13562433, -32936494, -50367080, -50033684, -54591180, -46575164, -58360552, -92010008, +-82702280, -95079304, -107303312, -125062472, -124727464, -103203768, -103657960, -84851376, -53694072, -60605208, +-41089416, -28736552, 3779571, 113280, 869194, 5590437, 19352586, 22138946, 7961796, 17643188, +27967754, 22295712, 10387378, 11760157, 21060910, 12521440, 5887327, 8785356, 12328704, 11211475, +7853348, 9605694, 15520401, 14835354, 7014756, 2393371, 5186173, 9203578, 5516349, 3758, +3732327, 6972343, 5464809, 2654290, 4760435, 5076652, 3954054, 3482682, 1747515, 1334661, +3897146, 3122978, 3411278, 1404454, -2167348, -2742874, 1567126, 3263102, -705448, -2262911, +617402, 2147, 659278, 1937030, 1363115, 2318746, 4214437, 3942243, 6271189, 8435853, +9817758, 7620883, 7777649, 8529805, 7134478, 5009006, 5712844, 6808060, 5264556, 2521683, +3285113, 1961190, 1528472, -106300, -2600066, -2378338, -3318399, -6832219, -9496173, -9353902, +-8200703, -10675141, -10042170, -9166534, -8208756, -7983271, -6602439, -5299990, -3601330, -3008625, +-1858110, -1100049, -278636, 94489, 845572, 851477, 1544578, 1047972, 1236951, 774168, +1088237, 488016, 637803, 130997, 282931, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, }, }, }; const Word32 CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819] ={ { { -4883915, -5020817, -1855426, 3221, 4694936, -2680060, 1831804, -344671, 656593, -3192235, -6675990, --1378685, 2623688, -1717450, 1596117, 2311229, 1965484, -1469953, 1113470, -4134443, -757525, -1030792, 1708860, -143345, -93952, 510027, 1019518, -3462818, -2873333, 1208496, 2392297, --1198833, 2504503, 4777614, -6426345, 910533, -3075197, -2086280, 1433982, -801548, 3948149, --1226750, 3555696, 1866163, 581431, -256624, 1900523, 111669, -388695, -2005750, 5763309, --4003447, -1213865, 2024540, 2238215, -102005, -1949378, 1106491, -2156074, 2234457, 430034, -812823, -45634, -766115, -711891, 2985539, -7693360, 1804423, -989990, -4466229, -756451, -3760781, 1820529, 2334852, -3367791, 2707977, -1172526, 1702418, 1038308, 1324461, -1422171, -561030, 2026151, -1344325, -3005940, 1225139, -2790118, 537945, 2049236, -3221, -1008244, --1167157, 550293, 1094680, -452582, 1315334, 62277, 941135, 812286, -370978, -190052, -355409, -433792, -268435, -336081, 361851, -601832, 295816, -882079, -225486, -826781, --125091, -259309, -945430, -201327, -8958228, 6958921, -3354370, 1549946, 1292248, 210453, --1925219, -155693, -5038534, -6266894, 1705639, -1201517, 1949378, 1977296, 5639292, -4614406, -667331, 3847754, 3712999, -3741990, -4006131, -2110977, -3479997, 332323, -1169842, -2688650, --2089502, 30602, -6345278, -6032819, -1285806, 1224603, -556735, 522912, -732829, 1397475, --3337190, 3865471, -1363115, 2210298, -484794, 1568200, -3045669, 1053878, 2099165, 2564096, -1092532, 510027, 901406, -1065689, -2527052, 5142687, 3861713, 1645509, -1926293, 6372121, -4289062, -1784559, 4031901, -302258, -3171833, -756451, -1152125, -2801393, 1825898, 2136209, -1006096, -2145336, 4475893, -2945274, 2617246, 3815005, -740345, 412854, -5600101, -2454037, --6026376, 904628, 2848100, -2859911, -875100, 1147293, -2734284, -736050, 1313723, -131533, -938450, -594853, -1461900, -3931506, -1951526, -683437, -965831, -296353, -97174, 276489, --503585, -636192, -1466731, -630286, 28454, 351114, 299037, -766652, -149787, 13422, -198105, -143881, 205085, -44560, 385473, -31139, -728534, -1153736, -1250909, -82141, --748398, 257698, 7541963, 3467649, -2860448, 1309965, 1009854, 12002286, -3503083, 3456912, -5868536, -1104344, 5343476, 2189897, 3646964, -4718559, -1724966, -5533529, -2537252, 3766150, --74088, -2622078, 668404, -3874597, -270046, -2530273, 3594351, -1541893, -454730, -1387274, -1927367, 850404, 77846, -438624, 1589138, -5836324, -4474819, 2029909, 572841, -552977, --2932389, 6985765, 2037425, -884226, 2339147, 2773475, 40802, 1378148, 690953, -3434363, -3158949, -4090956, -3066070, 3687766, -4341138, 3785477, 1729261, -3300146, 5718212, 3075197, -2219424, -1545115, 5185636, 1204202, -667331, -1495186, 1605244, 601832, -863288, -6077916, --843424, -1190243, 1892470, -3574487, 4851166, -1684164, 3981972, -4136591, 175020, -442919, -4950487, -2304250, -1577864, 883153, 1864553, -72478, 1000727, -763430, -4488778, -519154, --284542, -247497, -581968, -99858, 56908, -630823, -834834, -942745, -1028645, 69793, --381715, 10737, 652835, -768799, 518080, 592169, 1373853, -1619740, 1089311, 474594, -853088, -107911, 1273458, 460098, -569620, -989453, -256087, -474594, 12512850, -10373957, --9105868, -2929168, 9582072, -1330366, -5182952, 6563247, -4362613, 3104725, -233539, -7130183, --4847945, 6025839, -3892851, 2989297, -4062502, 3984656, -1764695, -1094680, -446677, -3926137, -2085207, 2891050, -3947075, 979253, -2002529, 826244, 1816234, -566399, 2601140, 795106, -2130304, 3370476, -4299263, -3156801, 3905199, 213675, 3035468, 2963528, -2721936, -4056597, --1606855, 720481, 5374615, -5771899, 2407329, -6446746, -7858180, -1835025, -4485020, -734439, --5316633, -10131828, -5356898, 4733591, 4424890, 2879239, -3358665, 9741523, -2967286, 1661616, --5349919, -5047661, 1360431, 22012, -468688, -6376416, -2065879, -343597, -1269163, -1219771, --3421478, -2749316, 736050, -862215, -1864553, 239981, -3314104, 622233, 1928977, 3347927, -1880122, -2780991, 2977486, -1910724, -157840, 3333432, 1430224, 513785, -1056562, 1729261, -1977833, 1553704, 366146, -825171, 318901, 2381023, 1239635, 1545115, 676457, -852551, -1287417, 272730, -115427, 388695, -640487, 255014, 374736, -667867, 1321239, 1954210, -2295660, -116501, -143345, 361314, -1432909, 2144263, -112206, 1350767, 16019691, -5257577, -7490960, -1999307, 10068477, -1953673, -1570347, 1705639, 2020245, -1699733, -11601244, 1149441, --1138166, -3073586, -199716, -542777, 4097399, -1309965, 9833864, -1289027, 1086627, -691490, -5550709, -1080184, 1896228, -4594005, -206158, -3149285, -3336653, -925029, -990527, 61203, -3542811, -6309307, -1916092, 2170032, -777389, 4400731, 955630, -1087164, -2958696, -2864743, --3141232, -5768678, 2124398, 2475512, 2105608, -10070625, -1545115, 7147363, 3937948, -1595044, --382252, -3103651, -6997039, -7327751, 7264937, -2243584, -4992363, -2729989, 3915400, 3193845, -294742, 3577708, 1403917, 3460133, -1766842, -7186017, -2524904, -3228205, -3744675, 5319317, -3438658, -573915, 5836324, 8848170, -2171643, 3757560, -3481608, -423591, -7516, 3859565, --362925, 974958, 814970, 1205275, 2991982, -3026341, 2333778, -1568737, 185220, -1924682, -274341, 1027571, 2117956, 1584843, -96100, 572304, 86436, -230318, 1072668, -2856690, --448824, -2279554, 483721, -405874, -409096, -996432, -642635, -1188095, 1236951, 605054, --24026584, 13134547, 4753455, -1153199, -1114007, 18254, -3699041, -6726993, -1498407, 3219078, -10103374, 6775848, -9300752, -1811403, -5552856, 3720516, -518080, -12541305, -3735548, 7629473, -4691178, 2582349, 6456947, 3900904, -711891, -860604, 1874216, -4795868, -2858301, 1059246, -5626944, -2425583, -4818417, -6941741, -3524021, 3415573, 11130945, 744103, -2002529, 2338073, --2347737, -8317741, 573915, -5880347, -4646618, -5488968, 3359201, -362925, -7812546, 1421634, -2901251, 3009162, -8448738, -4693863, -3172907, -2117956, -958315, -3138547, -1545115, -4048544, --8201777, -984621, -6971806, -8352638, -5197984, -1504312, 1392106, -4985384, -7352447, 2122788, -5823439, -340913, -1120450, -730144, 4224101, -6415608, 4725538, 7498476, 7277822, 5735392, -9803263, 90731, -4101157, 2618856, 397284, -1075352, -960462, -22012, -2290828, 3224984, -123480, 213138, -2046015, -581968, 1027571, 1197759, -1210107, -1094680, 578747, 3330747, --482110, 1248762, 1088774, 2844342, -2375117, 120796, -93416, -2618320, 347355, 334471, -2151242, 215822, 408022, 1862942, 1148904, -3254512, 1165547, -1180042, -9922448, 3738232, --4909685, -850940, 1291711, 2923262, -413391, 5124433, 122943, -1037235, -13916768, 6445136, --2589329, -2960843, 4988605, -8069170, -11092290, 4519916, -3889630, -5204427, -1646046, 10005663, -6291590, -3669513, -2165201, 4651450, -1391569, -506269, 1343251, 4539244, 8338679, 5304822, -6746320, -1043677, -296890, 156229, -4453344, 1127966, -1879048, 11352135, -8690329, -5041755, --4598836, -4310000, 2728915, 1531156, 4065724, -686121, -5741298, -7692824, -2225867, -9575630, --13329431, -2683281, 357019, 10341208, 2048163, -8219494, -2111513, 7749195, -3294240, 2587718, -2332167, 4342749, -6172405, -9262634, -4096325, -4721780, 14924474, 1653562, -4791036, 3234647, -2486786, -1116155, 1877438, 3400004, -418222, 6610492, -8776766, -7873212, 2545842, -3645354, -7955353, -3696356, -208306, 4263829, -1315871, 3775276, -233002, -209917, -264141, -1309428, --140660, 3394635, 1265942, 3297461, 1860795, 1636383, 117038, -1233729, -542777, 1369558, --435402, 401579, -679142, 2361695, -1971927, 1366873, -1766842, 2381559, -2292439, 200253, --221191, -265214, 1709397, 2243584, -2398202, 1659468, 922881, -823023, 3521336, 8611946, -2764885, -642098, 5971079, -1056562, -7290170, -1306744, -586800, 7305740, -4025995, -918049, --2149631, 1229971, -2179159, 505196, 2434173, 3480534, 5008469, 3292629, 1632625, 12765180, -5079336, 4233227, -474594, -9969693, 726386, -8295730, 2617783, -5608154, 1453846, 75162, -3295851, 15685221, 4508642, -2378338, 5690295, -4371203, 4858145, -2694555, 8220031, -4405026, -22012, -6081674, 3793530, 6252936, -7208029, 14746770, -3545496, 1132261, -2199023, -3896609, -1640141, -4352950, -12537546, 2198487, -3097745, -631360, -7719130, 1917703, -2691334, -12898324, --5809480, -3548180, -11401528, 6584185, 16591996, 20103132, -19014894, -14494441, -8010114, 890669, -4824859, -5807870, 2803003, -6600828, 1832340, 9329206, 14334453, -9736691, 16042777, 5207111, -1947768, 2818036, 2962991, -3445638, 5560372, 5146445, 6186364, 4789963, 2051384, 7211250, -115964, 2333778, -46171, 85899, 3940633, -1031329, -4570919, -1154809, 3135863, 2470680, -1051730, 73014, -205085, -288300, 3162170, 2566243, 1176821, -2626373, 791885, 886911, -144418, 3393561, 1525250, 2153926, 84826, 2572686, 1517734, 2601140, 3533684, 3700651, -332323, 259846, -1692754, 4072166, 3631395, -282394, -976568, 526670, 2649995, 7444252, --13361106, 19958714, 639413, 11780558, 4411469, -3830574, -3963718, 10931229, -6081137, 6988449, -8567923, -852014, -5637145, 556735, 8855686, 5084168, 4663798, 4076461, -540629, 1611687, -3131031, 11162083, 7937100, -5623723, -4756677, -671089, -2296734, -993211, -5506685, -3611531, -5729487, 9865003, 2701535, 14769856, -3824132, 16129750, 961536, 7707856, 17770964, 12628278, -4221416, 3794604, 8164733, -1522566, -6844031, 164283, 7700340, -4093641, -7885560, 506806, --1046898, 16228534, 13122736, 39728, 18365280, -1412507, 9987410, 5341329, 7951595, -812823, --6006512, 8325794, -1391033, 9705552, 6761353, 20298016, -10993506, -1743220, -22450868, 5017596, --10910828, -1329829, 10700374, -4095251, 4546760, -1679332, 12470438, -3027952, -8256001, -453656, --2637647, 3845606, -287763, 6109591, 7209103, 2028298, -1564442, 5692979, -948651, 2570001, -296353, -3461744, 2777233, 2752000, 5104569, 2701535, 5689221, 2613488, 176631, 399432, --1395328, 251792, 5589900, -1710471, -3716757, 2488397, 1074, 973347, 4636954, 1176821, -1358820, 2002529, 3186329, -729608, -230318, 2110977, 3825742, 5852967, 5512054, 179852, -2778844, 238371, 72478, 2661806, 3980898, -13140989, -9638443, 4751308, -7782481, 4469987, --4685810, 1292248, 12120398, -2069101, -11393474, 3074123, -4769561, 11628624, -12171400, -8542690, -4996121, 5582921, 8538395, 265751, -810138, 5449240, -3305514, -8389145, 5220533, -3482682, --6616934, 1937567, 6560563, -4841502, 12299713, 4897337, -400506, 1538672, 6049999, 2550674, --20883742, 8474507, -2095944, -2296197, -3562139, 11046119, 117575, 11763915, 548682, 943282, -1360968, -3232500, -1216550, 5657009, -6645388, 1485522, 19090056, 1566589, 14057965, 973884, --2777770, -1647657, -9351754, -19687594, -14178761, 6353331, 9062381, -3998615, 15061377, 6277095, --10608569, -6359236, 13807783, 9615358, 9190156, 2653753, -4108136, -15032, -638876, -8572218, --2484102, -5075578, -22901840, -10053445, -405874, 15308874, 3576097, -3735548, 1796907, 13113072, --3153043, 507880, 225486, 3194382, -4209068, -2262911, -3102040, -2049236, -991601, 3010235, -10201, -756988, -31139, 2310693, 2175938, 3706020, -2578054, -4513474, 1742683, -4769025, --2330557, 370441, 1856500, 322659, -598074, 4562329, -2016487, -1639067, -5306969, 1879585, --4771172, 3716757, 1967095, 2386928, -3992709, 144955, -489626, 1821066, -2191507, 1362578, --1927367, 2382633, -4430796, -85362, -5232344, 6077379, 12774306, 5026186, 4454955, 14627585, -12272869, 10285910, 653909, 3990562, 1033477, -2075543, -2547453, 2613488, -889595, -8352101, -2136746, 8702677, 152471, -2178085, 2862596, -20781200, 7251516, -8123931, 5469641, 7383586, -6680285, -7645579, 4507032, -558883, 75162, 12711493, 9359271, 377420, 5130339, 3867081, --1437203, -6860137, 1987496, 6335614, 374199, 9128953, 2915209, 8281771, 16082505, 1080721, -6646462, 7031399, 8745627, -102005, -5172751, 13928042, -5028870, 11293617, -12738336, -10436234, -15249818, -496069, 5218386, 9091909, 13342316, 17169668, 7398618, 2586644, -7988103, 3981972, --1421634, -14858439, 13102871, 8256538, -12103755, -468688, 1044214, -15234786, 5485747, 12593918, -7559143, 164819, 5014375, 3643206, -6943889, 13760001, 1573569, -2372433, 7230578, 13614509, -5519570, -261993, -4381404, -3381750, -1320166, 2557653, 4044786, 5790690, 2080375, 1232656, -2005213, 6721624, 6038187, 7442105, 191126, -475131, 3127273, 6414534, 306016, 854162, --944356, 3118683, 789737, -418759, -2028298, 1751810, -4132296, -7594576, -73014, 4720706, -173409, 3425237, -3471944, 2700461, 458488, 3028489, 715649, -1831267, 2080375, -1138703, --875100, -202400, -4480725, 3686156, -1465658, 1705102, 2939368, 443455, -390305, -1902134, --2798171, -34899292, -21716428, 7033546, 7378754, 14271103, 23651312, -6576669, -3740380, -7604240, --7021198, -8963597, -9562745, 708670, 3796214, 2928631, 14922864, 579821, 14645838, -818191, -5028333, 6708202, 5199058, 10832444, 7767985, 464393, 9603010, -211527, -1146756, -5632313, -6499360, -972810, -14323179, -12484933, 7773891, -1898376, 17081084, 10089952, 10987600, 3952981, --21478058, 5063767, 13521094, -2191507, 3943854, -3414499, 2696703, 16843788, -572304, 14092325, -23728620, 1198296, -8924942, -392990, 275415, -15025406, 20154670, 9441412, -2640331, -1300838, -14616847, 6714645, -17634062, -14554570, 5712844, -6431714, 8493298, 5922760, 2724620, -7178501, --12503724, -793495, 3235721, 2165737, 13641890, -18446884, 2728915, -1458141, -15397458, -7592966, --15482820, 13353590, -4546760, 18541374, -14689325, 1135482, -7027640, 10424422, 4723391, -4866198, --807991, 9575630, 702764, 2808372, -5602248, -3297461, -4720706, 8440684, 4425964, -314069, -2418604, 2325188, -7883413, 245350, -2143189, 2499671, 1777043, -2037425, -8049843, -3164317, --5914170, 6877317, -5242008, 839129, -1321239, 6790880, -1386201, -1596117, -2413772, -4801774, --136902, -3315178, 2966749, 7493108, 6988986, -867047, -7049115, 8727910, 24712704, -29417842, --8232379, -14340896, -606127, 4663261, 775778, 19722490, -20357072, 9623948, -2783139, 3931506, --2468533, 10831371, -5976984, -10076530, -847719, -2935073, 7650411, -635118, 5170604, 11476689, --2393908, -8596914, -1156957, 12906914, -7598871, 3080029, 2895882, 515933, -1178969, 12819941, --491774, -3301756, -21413096, 6890738, -5304822, -13514651, -11771432, -3119757, -13048648, -7678328, --11332808, 5377299, -13372918, 13339095, -12275553, 8272644, -6348499, 16171089, -15671262, -9090835, --2371359, 9373229, 3843459, 86436, -6458557, -12823699, 1289564, 5022428, 18304614, 9613211, -3983045, -10469520, 6217502, -9286256, -10499048, 9155260, -10193568, 4857608, 11854647, 9913858, --2659659, -3776350, -8584566, 14294725, 1377611, 13681618, 22080426, -4315906, -11617887, -5170067, --3883187, -7953206, 3475166, -13206488, 5733245, 4320200, 3946001, 10460930, -7413651, 396748, --1371705, 2659659, 9477919, 286689, 7446937, -2702071, -208843, 948651, -4269198, -1506460, -4458176, 2382633, -6091338, -7903277, -3795677, 3500398, 3096135, -3467649, 11265699, 3318936, --8302709, 4172024, 6000606, 15074261, 12199318, 6871948, 2494302, 1460826, -6370510, -4948876, --255014, -5014911, 903554, -2907156, -9287867, 5100274, -3109556, -1285806, 1039382, 5026186, -63888, 16460999, 22759568, -23894514, 17719424, 12373801, 694711, 8930311, 30218316, -8390755, --8577050, 2938295, 8965207, 12586939, 4222490, -11680164, 13407814, -4813048, 26715234, -624918, --4290136, 8687108, 7098507, 6997576, -180389, 25057912, -20648592, 5140002, -270046, 6933688, --8550206, -17202954, 8704825, 6853157, 7121056, -5973763, -4489852, 20956756, 7943542, 26316876, -2510945, -9634685, -930397, 5905580, -2169495, 27314918, -3314641, 14905147, -2527588, 24515136, -9027484, 6665253, -5814849, -1302986, 13573707, 323196, 14527190, 10947335, 12852153, -16838420, -2834679, 12151536, 14649597, 10917270, 8441758, 19621558, 24119462, -18235894, -2069101, 36538896, --8642548, -9810779, 23732378, 31891206, 731218, -253940, -17090748, -14106283, -797253, 16046535, --2202781, -2949569, 862752, -1160715, -4297652, -12206297, -4341138, -867583, -7120519, 558883, -7572564, -4086662, 9646497, -9546639, 8522289, -1887638, 7442642, -7140383, 389231, 5468567, -3318399, 9308805, -1488206, -4811974, -2005213, 2819646, 8600672, 2570001, -2868501, 11738682, --3483219, 6221797, 6328098, -995359, -1148904, -2571612, 17195438, -6154152, 2346663, 4416837, -6496138, -3016678, -10890426, -6342593, -1765232, 12945031, 6398965, -900333, 932545, 4647692, --665183, 221728, 4719632, 2481954, 1327145, 178241, 10069551, 22585086, -1319092, 7094212, --19186156, 18393734, -9706089, -5943161, -16801376, -10853919, 34561600, 550293, -24283208, -10771241, --702227, 170188, -3193308, 26774826, 12479027, -2201708, -11146514, -980326, 7018514, -3224447, -35554812, 7645042, 15622407, 5478768, -8031052, -20048370, 4708895, -137976, 3122978, -15507516, --1691143, -10439455, 11948599, 173409, 1917703, 12553653, -11326903, -8152922, 2395518, 659814, -3631395, -17114370, -13612899, -29402272, -15524696, 1395328, -16947404, 2390686, -12327093, -7195681, -21825950, 7030325, -10766409, 6706592, 2377265, 52613, 20975010, -3468186, 25428354, 9925133, --11125576, -31033286, 5303211, 5128191, 17132088, -9174587, -22552336, -7820599, 6342056, 1282585, --5506148, -15955267, -5347771, -22610856, -26134340, 8290361, -1626182, 26781806, -8697309, -16022912, --14285061, -1110249, 18605798, -821949, 6719477, 12265353, 9027484, -3927211, 5909875, 8456791, -2528662, 8666707, 8067023, -5660230, -1091459, 12065100, -2594697, 1880122, 11014444, -1905355, -6426345, -8080981, 2986076, 6720013, -4074850, 4119411, 3427921, -7516193, 10040023, -9490804, -4696547, 5456219, 7895761, -1755031, -5954972, 11300059, -1781338, 8437463, -12088185, -5420249, --8974871, -6964827, 739808, -5674726, 4110284, 937377, 1496796, -11443403, 16091095, -18048526, --1185411, 27169964, -5976984, 7971460, 2727304, 3513820, -25668872, 21132850, -2232309, -20551418, --12105902, 10641318, -3185792, 5283884, -259309, -8568460, -6459094, 3600256, -6471442, -1558536, --500364, -29734596, -7899519, -19963544, 4251481, 6988449, -328028, -8832600, 3368865, -4267050, -11479911, -26321170, 1605781, 4496831, 14861124, -11506217, 13834090, -11335492, 8745090, 2302103, -10726681, -17214766, 5086852, -8570607, -18376554, 11758010, -14902463, -29705068, 4189204, -2861522, -23192824, -11357504, 3104188, 10648298, 15331960, 17457432, 1725503, -6098854, -11210402, 263604, -8193187, 11465415, -23249194, 25777856, -365609, -17555142, -13221520, -23329188, 9298067, 5549098, -9087077, 3996467, 24479702, -8849780, 26619670, -14634564, 6106370, -6007049, -12611098, -37428492, -20900922, 3930969, -10065256, -25444996, -1640141, 4592931, -2337536, 9164923, -7002408, -8258685, --1486596, 3835406, -7284265, -7140920, -4663798, -1433445, 3754338, -2331630, -2432562, -10177462, -7284802, 102542, -5675263, 4463008, -4167192, 7613367, -2578054, 3734474, 4964982, 9432285, --3486440, 8548059, 785979, 328028, -9576703, -7540889, 2113661, 3369402, 1113470, 328565, --2010582, -6325950, -3604551, -3098819, -6907381, -3270081, 11535208, -6061810, -6873559, 3454764, --14854681, -22018686, -138513, 12067247, -4871567, -23842438, -3847754, -34819836, 16785270, -38475928, -22879290, -26614302, -23251880, 6564321, 19836844, 14824080, -13280039, 13906030, 24968256, 4409858, -3664144, 5852967, 2179159, -14795089, 17881560, -30185030, -18815714, 1658394, -1953673, -1968169, --4096862, -7544110, 3933653, 27717034, 7082401, 3828963, 2505040, -13081397, 16015933, -2937758, --28015534, -4321274, 499827, 579821, -19200652, -13512504, 14592151, -4804995, 25112136, 4663798, --88047, -20532628, -11356967, 7554848, 3148748, -5601174, 21496848, -17104170, -10498511, -747324, --1374926, 20393042, 1547262, 23858006, -104690, -19485730, 4742181, -16609175, 12550968, -2319819, -17142826, 32658932, -50352048, 17135308, 6841883, 9223442, 18906982, 4742181, -23154706, -5317707, --2203318, -4135517, 11664057, -23562190, 2127083, -6141267, -3470334, -16217260, -8849780, -24552718, -2633352, -1500554, 2427194, 6828998, -10090489, -1749662, 11844446, -7297687, 2240899, -4033511, --12226161, 5701032, 7224135, -8427800, -995896, -13353590, -889058, -19348290, 6883222, 4850629, --2522757, 2164664, -5001490, 903554, 3853123, -3023120, -3724274, 11190000, 13465259, -2950106, -4401805, 2289755, 13823889, 6296959, -17620104, 2435783, 9962714, -5602248, 10067940, 3397319, -4584878, 41149008, 35566624, -10129680, -13700409, -778463, -26986890, 15818365, -1500017, 5988258, -2146947, -13632226, 41059352, -17591650, -72296112, -10558103, 14485851, -48673252, -8296803, 15269146, --41205380, 5750961, 26911192, -18939196, 26848378, -25706454, 23074712, 28584618, -18190260, 7800198, --2578054, 640487, -7674033, -11281268, -2028298, 17598628, -11275363, -18844706, -10246718, -15173046, --1550483, -11907260, -1890323, 6313065, -2778307, 17184702, -15093052, -18602578, 14894947, -19679004, --29152090, -37446748, -12989055, -881542, 7348152, 20881594, -8654896, 9364102, 9844065, -6863895, --3164317, 34400004, -22675280, -872415, 23606750, 7303592, 18577344, -4622459, 6816113, 26118232, -13494787, -1417339, -3116536, -16095390, 6670084, 26270168, -24356760, 18581640, -24102282, 7056095, -34249144, 7879655, -19127636, 19434728, 3159485, -12266963, -9504763, 23517094, 7814693, 10143639, --1343788, 1779190, 6525129, 7713762, -627065, -2356863, 10078141, 8724689, 1913408, -11625403, -12870406, 1580548, -4338991, 3144990, 4460324, -8466991, -2171106, 6524592, 1334124, 10869488, --13353590, 20192788, 15722265, -2785286, -12734578, -5207648, 13533442, 15388331, 24901146, -774705, -4845797, 4055523, 13676786, -20728050, -10995653, 20774756, 13057774, 1396938, -3307662, 1772748, -5789616, -10859288, -8471286, -7310571, 1555315, 6612102, -3320547, -11778411, -8421357, 36103496, -24460376, -34862248, -7054484, 31077846, -9496710, -19296214, -13625247, -19363324, -11431055, 31371514, -19133542, -2573222, 14236206, -3474629, 17359720, -10981158, -6096169, 34852584, -14549202, 6257768, --10124312, -3824132, -420907, 9492415, 28372018, 10887205, -19268834, -5701032, -909996, -2973191, -15961172, 2077690, 28572270, -8489003, 4920422, -3012383, 8327405, -24034100, 14386530, -22176526, -14955076, -1238561, 21959094, -5801427, 16280074, -7585449, 5116917, 9278203, -9500468, 9613747, -22173306, 27631672, -14689325, 28312962, 11923903, 33602212, -9684614, 6268505, -1271847, -4233764, --6473590, -2415919, -11169599, -55309516, -34782792, -10792716, -718333, 7738458, 3869229, 12659953, -20774756, -30488900, -1735704, -12378096, 45967960, -3324842, -14035953, -4107599, -40397388, -33872260, -50808388, 20566450, 11327976, -7955353, 15888158, 1203665, -37002216, 7437273, 2459406, -14179835, --14472966, 2202245, 153545, 3809636, -7792145, -4061429, -18166102, -15450071, 6427956, 7923678, -6944962, 5264020, -9486509, -13976360, -8507256, -18046378, 11247982, 3711926, -31913218, -3924526, --9318468, -2360085, 15477988, -14826227, -20692078, -4700842, 13204340, 4324495, -14405857, 8346732, -18289044, -34418796, -9330280, 12002286, -747324, -2803003, -6667937, -1588601, 5825587, 10022843, -2266132, 27487254, -39482560, 37381784, -10768557, -11015517, 9705015, 17462800, -30896384, -6095096, -653909, 6307697, 1778117, -773094, 15662672, -9324374, 2103997, 8286603, 9161165, 13083544, -10841034, 3697430, -16910360, -3318936, 23247584, -22371948, -19119584, 24091008, 8291971, 17052094, -26320634, 40758164, -9118752, -25750476, 34491272, -13784698, -5705864, 35949952, 11362873, -13051869, --37304476, -24588688, -3658239, -13710072, 17693654, 35431868, 18204218, -12021077, 36385888, 12312597, --13048648, 10115722, 40593348, 11825656, 7946763, -8435853, -32342714, -43443596, -34517580, -2388002, -26346404, 8136816, 16683800, 62194884, 30693984, -37044092, -24928528, 16589311, -51339892, -23514946, -44462576, 15970299, -57053272, -47575352, -22022444, -36393944, -34215320, -20412906, 31209916, -8729521, --6415071, 81292992, 13749801, -23234162, -6369974, -25113210, 43233140, -8964670, 9471477, 3110630, -718333, -23493472, -9036074, -1724966, -11869679, 2975339, 9343701, 21249350, 2838437, -14224932, --534187, 58519, -9386114, 4499515, 6207302, 7289633, -18640158, 4945118, -17265232, 3156264, -9169218, -880468, 13902272, -3211562, -843961, 14151380, -2814814, 7979513, 15589658, -5128191, -4677757, 10882373, 11724724, 9761924, 1964948, 2570001, 8160438, -8408472, -3275986, 5769215, --55371256, 38477000, 16551730, 12497281, 15498389, -5877663, 19000936, 15626702, 22262962, -4143570, -30507690, -19067508, 23152022, -8346732, -17648558, -5545340, -28981902, 3083250, -10618233, 10327249, --7328825, -11172284, 27877558, -31922882, 20670604, -1029718, -13910325, -5521181, 12360379, 14014478, -10096931, 26419954, 21264384, -15201500, -3172370, -13593035, 11854647, -12040404, 9245991, 12760348, -5818070, 7187628, 4724464, -7452305, 29097330, -2665564, 8648454, 2964601, 13404593, 7496329, --34799972, 2312303, -20823076, 5364951, 15349139, -2792803, -14752139, -13450764, 32409286, -34213172, --27737436, 50939384, -21643414, 13254269, 5033702, 16399796, -7708930, 8608725, -35449588, 2481954, -34360812, -18366354, -13947369, 29709900, -2068027, -24530706, -18252000, 10989748, -9692131, -5657546, -18340048, -13497472, 4521527, 22977538, -25880400, 1763621, 15048492, -8313446, -5207111, -6677601, -9227737, 2637647, 3674882, -3320547, 5200132, 4046933, -5163088, 468151, 823023, 13749264, -6794102, -12740484, 15579994, 4005594, -8090645, 4662187, 4677757, -1333051, -4793184, 11332271, --108448, 3882651, 1275605, 14634564, -6891275, -5373004, 8680129, -12954695, 16275779, -1130113, --9451612, -1422708, -1169305, 2087891, -374199, -6201933, -1145683, 8682813, 16917340, -33296198, --133538584, -144016688, -5728950, -82831128, 72360536, 262967968, 114325584, 158387664, 200176080, -76316736, --54129472, -21854404, -180769808, -126582888, -41391672, -198159056, -86655800, -18097918, -81309640, 18751828, -185025040, 168054560, 181899376, 235933824, 141960480, -13314935, 52640728, -53497576, -210872688, -114791592, --85074176, -175296400, -120353040, 6186364, -135085856, -44795436, 29203630, -134963440, -69459824, 100114080, -38526932, 108614888, 271280864, 220455296, 178168672, 320967744, 232829104, -4465156, 33058364, -60588028, --288547168, -275825472, -284534592, -442900256, -300178496, -185716528, -181822064, 1661079, 143129248, 161299648, -226247600, 342817856, 317198912, 267728400, 264304240, 151151712, 52784076, 7910256, -16838956, -120864136, --207668112, -254826848, -272832960, -368158144, -306171040, -236220512, -115888416, 122686816, 363162560, 338246400, -370649248, 259796128, 31206158, -35900556, -111983760, -153708288, -104126648, -51354924, -51825224, -23244364, --24068996, -37835440, -284005, 4848481, 26501022, 84107808, 76287744, 56124484, 77304040, -7900056, --50851876, -7302518, -59614684, -51641076, 31113816, 33757908, 7384123, 7334194, -90561000, -230745504, --218571424, -186180928, -140436848, 67604392, 209500448, 256379488, 323928032, 290386496, 178890752, 124091808, -43705588, -52121040, -108837152, -129674728, -168087296, -206096688, -232428064, -271307168, -241328304, -83675088, -58921584, 139241232, 180591568, 196377712, 147273360, 102186936, 51091856, -2022393, -6049462, 24994026, -39906688, 43802224, 47631724, 39638792, 3680787, -32318556, -70068096, -125386736, -120377192, -96618512, --78635480, -38289096, 3576097, 27172110, 24034636, 15705085, 9292162, 7614440, }, +5020817, -1855426, 3221, 4694936, -2680060, 1831804, -344671, 656593, -3192235, -6675990, +-1378685, 2623688, -1717450, 1596117, 2311229, 1965484, -1469953, 1113470, -4134443, -757525, +1030792, 1708860, -143345, -93952, 510027, 1019518, -3462818, -2873333, 1208496, 2392297, +-1198833, 2504503, 4777614, -6426345, 910533, -3075197, -2086280, 1433982, -801548, 3948149, +-1226750, 3555696, 1866163, 581431, -256624, 1900523, 111669, -388695, -2005750, 5763309, +-4003447, -1213865, 2024540, 2238215, -102005, -1949378, 1106491, -2156074, 2234457, 430034, +812823, -45634, -766115, -711891, 2985539, -7693360, 1804423, -989990, -4466229, -756451, +3760781, 1820529, 2334852, -3367791, 2707977, -1172526, 1702418, 1038308, 1324461, -1422171, +561030, 2026151, -1344325, -3005940, 1225139, -2790118, 537945, 2049236, -3221, -1008244, +-1167157, 550293, 1094680, -452582, 1315334, 62277, 941135, 812286, -370978, -190052, +355409, -433792, -268435, -336081, 361851, -601832, 295816, -882079, -225486, -826781, +-125091, -259309, -945430, -201327, -8958228, 6958921, -3354370, 1549946, 1292248, 210453, +-1925219, -155693, -5038534, -6266894, 1705639, -1201517, 1949378, 1977296, 5639292, -4614406, +667331, 3847754, 3712999, -3741990, -4006131, -2110977, -3479997, 332323, -1169842, -2688650, +-2089502, 30602, -6345278, -6032819, -1285806, 1224603, -556735, 522912, -732829, 1397475, +-3337190, 3865471, -1363115, 2210298, -484794, 1568200, -3045669, 1053878, 2099165, 2564096, +1092532, 510027, 901406, -1065689, -2527052, 5142687, 3861713, 1645509, -1926293, 6372121, +4289062, -1784559, 4031901, -302258, -3171833, -756451, -1152125, -2801393, 1825898, 2136209, +1006096, -2145336, 4475893, -2945274, 2617246, 3815005, -740345, 412854, -5600101, -2454037, +-6026376, 904628, 2848100, -2859911, -875100, 1147293, -2734284, -736050, 1313723, -131533, +938450, -594853, -1461900, -3931506, -1951526, -683437, -965831, -296353, -97174, 276489, +-503585, -636192, -1466731, -630286, 28454, 351114, 299037, -766652, -149787, 13422, +198105, -143881, 205085, -44560, 385473, -31139, -728534, -1153736, -1250909, -82141, +-748398, 257698, 7541963, 3467649, -2860448, 1309965, 1009854, 12002286, -3503083, 3456912, +5868536, -1104344, 5343476, 2189897, 3646964, -4718559, -1724966, -5533529, -2537252, 3766150, +-74088, -2622078, 668404, -3874597, -270046, -2530273, 3594351, -1541893, -454730, -1387274, +1927367, 850404, 77846, -438624, 1589138, -5836324, -4474819, 2029909, 572841, -552977, +-2932389, 6985765, 2037425, -884226, 2339147, 2773475, 40802, 1378148, 690953, -3434363, +3158949, -4090956, -3066070, 3687766, -4341138, 3785477, 1729261, -3300146, 5718212, 3075197, +2219424, -1545115, 5185636, 1204202, -667331, -1495186, 1605244, 601832, -863288, -6077916, +-843424, -1190243, 1892470, -3574487, 4851166, -1684164, 3981972, -4136591, 175020, -442919, +4950487, -2304250, -1577864, 883153, 1864553, -72478, 1000727, -763430, -4488778, -519154, +-284542, -247497, -581968, -99858, 56908, -630823, -834834, -942745, -1028645, 69793, +-381715, 10737, 652835, -768799, 518080, 592169, 1373853, -1619740, 1089311, 474594, +853088, -107911, 1273458, 460098, -569620, -989453, -256087, -474594, 12512850, -10373957, +-9105868, -2929168, 9582072, -1330366, -5182952, 6563247, -4362613, 3104725, -233539, -7130183, +-4847945, 6025839, -3892851, 2989297, -4062502, 3984656, -1764695, -1094680, -446677, -3926137, +2085207, 2891050, -3947075, 979253, -2002529, 826244, 1816234, -566399, 2601140, 795106, +2130304, 3370476, -4299263, -3156801, 3905199, 213675, 3035468, 2963528, -2721936, -4056597, +-1606855, 720481, 5374615, -5771899, 2407329, -6446746, -7858180, -1835025, -4485020, -734439, +-5316633, -10131828, -5356898, 4733591, 4424890, 2879239, -3358665, 9741523, -2967286, 1661616, +-5349919, -5047661, 1360431, 22012, -468688, -6376416, -2065879, -343597, -1269163, -1219771, +-3421478, -2749316, 736050, -862215, -1864553, 239981, -3314104, 622233, 1928977, 3347927, +1880122, -2780991, 2977486, -1910724, -157840, 3333432, 1430224, 513785, -1056562, 1729261, +1977833, 1553704, 366146, -825171, 318901, 2381023, 1239635, 1545115, 676457, -852551, +1287417, 272730, -115427, 388695, -640487, 255014, 374736, -667867, 1321239, 1954210, +2295660, -116501, -143345, 361314, -1432909, 2144263, -112206, 1350767, 16019691, -5257577, +7490960, -1999307, 10068477, -1953673, -1570347, 1705639, 2020245, -1699733, -11601244, 1149441, +-1138166, -3073586, -199716, -542777, 4097399, -1309965, 9833864, -1289027, 1086627, -691490, +5550709, -1080184, 1896228, -4594005, -206158, -3149285, -3336653, -925029, -990527, 61203, +3542811, -6309307, -1916092, 2170032, -777389, 4400731, 955630, -1087164, -2958696, -2864743, +-3141232, -5768678, 2124398, 2475512, 2105608, -10070625, -1545115, 7147363, 3937948, -1595044, +-382252, -3103651, -6997039, -7327751, 7264937, -2243584, -4992363, -2729989, 3915400, 3193845, +294742, 3577708, 1403917, 3460133, -1766842, -7186017, -2524904, -3228205, -3744675, 5319317, +3438658, -573915, 5836324, 8848170, -2171643, 3757560, -3481608, -423591, -7516, 3859565, +-362925, 974958, 814970, 1205275, 2991982, -3026341, 2333778, -1568737, 185220, -1924682, +274341, 1027571, 2117956, 1584843, -96100, 572304, 86436, -230318, 1072668, -2856690, +-448824, -2279554, 483721, -405874, -409096, -996432, -642635, -1188095, 1236951, 605054, +-24026584, 13134547, 4753455, -1153199, -1114007, 18254, -3699041, -6726993, -1498407, 3219078, +10103374, 6775848, -9300752, -1811403, -5552856, 3720516, -518080, -12541305, -3735548, 7629473, +4691178, 2582349, 6456947, 3900904, -711891, -860604, 1874216, -4795868, -2858301, 1059246, +5626944, -2425583, -4818417, -6941741, -3524021, 3415573, 11130945, 744103, -2002529, 2338073, +-2347737, -8317741, 573915, -5880347, -4646618, -5488968, 3359201, -362925, -7812546, 1421634, +2901251, 3009162, -8448738, -4693863, -3172907, -2117956, -958315, -3138547, -1545115, -4048544, +-8201777, -984621, -6971806, -8352638, -5197984, -1504312, 1392106, -4985384, -7352447, 2122788, +5823439, -340913, -1120450, -730144, 4224101, -6415608, 4725538, 7498476, 7277822, 5735392, +9803263, 90731, -4101157, 2618856, 397284, -1075352, -960462, -22012, -2290828, 3224984, +123480, 213138, -2046015, -581968, 1027571, 1197759, -1210107, -1094680, 578747, 3330747, +-482110, 1248762, 1088774, 2844342, -2375117, 120796, -93416, -2618320, 347355, 334471, +2151242, 215822, 408022, 1862942, 1148904, -3254512, 1165547, -1180042, -9922448, 3738232, +-4909685, -850940, 1291711, 2923262, -413391, 5124433, 122943, -1037235, -13916768, 6445136, +-2589329, -2960843, 4988605, -8069170, -11092290, 4519916, -3889630, -5204427, -1646046, 10005663, +6291590, -3669513, -2165201, 4651450, -1391569, -506269, 1343251, 4539244, 8338679, 5304822, +6746320, -1043677, -296890, 156229, -4453344, 1127966, -1879048, 11352135, -8690329, -5041755, +-4598836, -4310000, 2728915, 1531156, 4065724, -686121, -5741298, -7692824, -2225867, -9575630, +-13329431, -2683281, 357019, 10341208, 2048163, -8219494, -2111513, 7749195, -3294240, 2587718, +2332167, 4342749, -6172405, -9262634, -4096325, -4721780, 14924474, 1653562, -4791036, 3234647, +2486786, -1116155, 1877438, 3400004, -418222, 6610492, -8776766, -7873212, 2545842, -3645354, +7955353, -3696356, -208306, 4263829, -1315871, 3775276, -233002, -209917, -264141, -1309428, +-140660, 3394635, 1265942, 3297461, 1860795, 1636383, 117038, -1233729, -542777, 1369558, +-435402, 401579, -679142, 2361695, -1971927, 1366873, -1766842, 2381559, -2292439, 200253, +-221191, -265214, 1709397, 2243584, -2398202, 1659468, 922881, -823023, 3521336, 8611946, +2764885, -642098, 5971079, -1056562, -7290170, -1306744, -586800, 7305740, -4025995, -918049, +-2149631, 1229971, -2179159, 505196, 2434173, 3480534, 5008469, 3292629, 1632625, 12765180, +5079336, 4233227, -474594, -9969693, 726386, -8295730, 2617783, -5608154, 1453846, 75162, +3295851, 15685221, 4508642, -2378338, 5690295, -4371203, 4858145, -2694555, 8220031, -4405026, +22012, -6081674, 3793530, 6252936, -7208029, 14746770, -3545496, 1132261, -2199023, -3896609, +1640141, -4352950, -12537546, 2198487, -3097745, -631360, -7719130, 1917703, -2691334, -12898324, +-5809480, -3548180, -11401528, 6584185, 16591996, 20103132, -19014894, -14494441, -8010114, 890669, +4824859, -5807870, 2803003, -6600828, 1832340, 9329206, 14334453, -9736691, 16042777, 5207111, +1947768, 2818036, 2962991, -3445638, 5560372, 5146445, 6186364, 4789963, 2051384, 7211250, +115964, 2333778, -46171, 85899, 3940633, -1031329, -4570919, -1154809, 3135863, 2470680, +1051730, 73014, -205085, -288300, 3162170, 2566243, 1176821, -2626373, 791885, 886911, +144418, 3393561, 1525250, 2153926, 84826, 2572686, 1517734, 2601140, 3533684, 3700651, +332323, 259846, -1692754, 4072166, 3631395, -282394, -976568, 526670, 2649995, 7444252, +-13361106, 19958714, 639413, 11780558, 4411469, -3830574, -3963718, 10931229, -6081137, 6988449, +8567923, -852014, -5637145, 556735, 8855686, 5084168, 4663798, 4076461, -540629, 1611687, +3131031, 11162083, 7937100, -5623723, -4756677, -671089, -2296734, -993211, -5506685, -3611531, +5729487, 9865003, 2701535, 14769856, -3824132, 16129750, 961536, 7707856, 17770964, 12628278, +4221416, 3794604, 8164733, -1522566, -6844031, 164283, 7700340, -4093641, -7885560, 506806, +-1046898, 16228534, 13122736, 39728, 18365280, -1412507, 9987410, 5341329, 7951595, -812823, +-6006512, 8325794, -1391033, 9705552, 6761353, 20298016, -10993506, -1743220, -22450868, 5017596, +-10910828, -1329829, 10700374, -4095251, 4546760, -1679332, 12470438, -3027952, -8256001, -453656, +-2637647, 3845606, -287763, 6109591, 7209103, 2028298, -1564442, 5692979, -948651, 2570001, +296353, -3461744, 2777233, 2752000, 5104569, 2701535, 5689221, 2613488, 176631, 399432, +-1395328, 251792, 5589900, -1710471, -3716757, 2488397, 1074, 973347, 4636954, 1176821, +1358820, 2002529, 3186329, -729608, -230318, 2110977, 3825742, 5852967, 5512054, 179852, +2778844, 238371, 72478, 2661806, 3980898, -13140989, -9638443, 4751308, -7782481, 4469987, +-4685810, 1292248, 12120398, -2069101, -11393474, 3074123, -4769561, 11628624, -12171400, -8542690, +4996121, 5582921, 8538395, 265751, -810138, 5449240, -3305514, -8389145, 5220533, -3482682, +-6616934, 1937567, 6560563, -4841502, 12299713, 4897337, -400506, 1538672, 6049999, 2550674, +-20883742, 8474507, -2095944, -2296197, -3562139, 11046119, 117575, 11763915, 548682, 943282, +1360968, -3232500, -1216550, 5657009, -6645388, 1485522, 19090056, 1566589, 14057965, 973884, +-2777770, -1647657, -9351754, -19687594, -14178761, 6353331, 9062381, -3998615, 15061377, 6277095, +-10608569, -6359236, 13807783, 9615358, 9190156, 2653753, -4108136, -15032, -638876, -8572218, +-2484102, -5075578, -22901840, -10053445, -405874, 15308874, 3576097, -3735548, 1796907, 13113072, +-3153043, 507880, 225486, 3194382, -4209068, -2262911, -3102040, -2049236, -991601, 3010235, +10201, -756988, -31139, 2310693, 2175938, 3706020, -2578054, -4513474, 1742683, -4769025, +-2330557, 370441, 1856500, 322659, -598074, 4562329, -2016487, -1639067, -5306969, 1879585, +-4771172, 3716757, 1967095, 2386928, -3992709, 144955, -489626, 1821066, -2191507, 1362578, +-1927367, 2382633, -4430796, -85362, -5232344, 6077379, 12774306, 5026186, 4454955, 14627585, +12272869, 10285910, 653909, 3990562, 1033477, -2075543, -2547453, 2613488, -889595, -8352101, +2136746, 8702677, 152471, -2178085, 2862596, -20781200, 7251516, -8123931, 5469641, 7383586, +6680285, -7645579, 4507032, -558883, 75162, 12711493, 9359271, 377420, 5130339, 3867081, +-1437203, -6860137, 1987496, 6335614, 374199, 9128953, 2915209, 8281771, 16082505, 1080721, +6646462, 7031399, 8745627, -102005, -5172751, 13928042, -5028870, 11293617, -12738336, -10436234, +15249818, -496069, 5218386, 9091909, 13342316, 17169668, 7398618, 2586644, -7988103, 3981972, +-1421634, -14858439, 13102871, 8256538, -12103755, -468688, 1044214, -15234786, 5485747, 12593918, +7559143, 164819, 5014375, 3643206, -6943889, 13760001, 1573569, -2372433, 7230578, 13614509, +5519570, -261993, -4381404, -3381750, -1320166, 2557653, 4044786, 5790690, 2080375, 1232656, +2005213, 6721624, 6038187, 7442105, 191126, -475131, 3127273, 6414534, 306016, 854162, +-944356, 3118683, 789737, -418759, -2028298, 1751810, -4132296, -7594576, -73014, 4720706, +173409, 3425237, -3471944, 2700461, 458488, 3028489, 715649, -1831267, 2080375, -1138703, +-875100, -202400, -4480725, 3686156, -1465658, 1705102, 2939368, 443455, -390305, -1902134, +-2798171, -34899292, -21716428, 7033546, 7378754, 14271103, 23651312, -6576669, -3740380, -7604240, +-7021198, -8963597, -9562745, 708670, 3796214, 2928631, 14922864, 579821, 14645838, -818191, +5028333, 6708202, 5199058, 10832444, 7767985, 464393, 9603010, -211527, -1146756, -5632313, +6499360, -972810, -14323179, -12484933, 7773891, -1898376, 17081084, 10089952, 10987600, 3952981, +-21478058, 5063767, 13521094, -2191507, 3943854, -3414499, 2696703, 16843788, -572304, 14092325, +23728620, 1198296, -8924942, -392990, 275415, -15025406, 20154670, 9441412, -2640331, -1300838, +14616847, 6714645, -17634062, -14554570, 5712844, -6431714, 8493298, 5922760, 2724620, -7178501, +-12503724, -793495, 3235721, 2165737, 13641890, -18446884, 2728915, -1458141, -15397458, -7592966, +-15482820, 13353590, -4546760, 18541374, -14689325, 1135482, -7027640, 10424422, 4723391, -4866198, +-807991, 9575630, 702764, 2808372, -5602248, -3297461, -4720706, 8440684, 4425964, -314069, +2418604, 2325188, -7883413, 245350, -2143189, 2499671, 1777043, -2037425, -8049843, -3164317, +-5914170, 6877317, -5242008, 839129, -1321239, 6790880, -1386201, -1596117, -2413772, -4801774, +-136902, -3315178, 2966749, 7493108, 6988986, -867047, -7049115, 8727910, 24712704, -29417842, +-8232379, -14340896, -606127, 4663261, 775778, 19722490, -20357072, 9623948, -2783139, 3931506, +-2468533, 10831371, -5976984, -10076530, -847719, -2935073, 7650411, -635118, 5170604, 11476689, +-2393908, -8596914, -1156957, 12906914, -7598871, 3080029, 2895882, 515933, -1178969, 12819941, +-491774, -3301756, -21413096, 6890738, -5304822, -13514651, -11771432, -3119757, -13048648, -7678328, +-11332808, 5377299, -13372918, 13339095, -12275553, 8272644, -6348499, 16171089, -15671262, -9090835, +-2371359, 9373229, 3843459, 86436, -6458557, -12823699, 1289564, 5022428, 18304614, 9613211, +3983045, -10469520, 6217502, -9286256, -10499048, 9155260, -10193568, 4857608, 11854647, 9913858, +-2659659, -3776350, -8584566, 14294725, 1377611, 13681618, 22080426, -4315906, -11617887, -5170067, +-3883187, -7953206, 3475166, -13206488, 5733245, 4320200, 3946001, 10460930, -7413651, 396748, +-1371705, 2659659, 9477919, 286689, 7446937, -2702071, -208843, 948651, -4269198, -1506460, +4458176, 2382633, -6091338, -7903277, -3795677, 3500398, 3096135, -3467649, 11265699, 3318936, +-8302709, 4172024, 6000606, 15074261, 12199318, 6871948, 2494302, 1460826, -6370510, -4948876, +-255014, -5014911, 903554, -2907156, -9287867, 5100274, -3109556, -1285806, 1039382, 5026186, +63888, 16460999, 22759568, -23894514, 17719424, 12373801, 694711, 8930311, 30218316, -8390755, +-8577050, 2938295, 8965207, 12586939, 4222490, -11680164, 13407814, -4813048, 26715234, -624918, +-4290136, 8687108, 7098507, 6997576, -180389, 25057912, -20648592, 5140002, -270046, 6933688, +-8550206, -17202954, 8704825, 6853157, 7121056, -5973763, -4489852, 20956756, 7943542, 26316876, +2510945, -9634685, -930397, 5905580, -2169495, 27314918, -3314641, 14905147, -2527588, 24515136, +9027484, 6665253, -5814849, -1302986, 13573707, 323196, 14527190, 10947335, 12852153, -16838420, +2834679, 12151536, 14649597, 10917270, 8441758, 19621558, 24119462, -18235894, -2069101, 36538896, +-8642548, -9810779, 23732378, 31891206, 731218, -253940, -17090748, -14106283, -797253, 16046535, +-2202781, -2949569, 862752, -1160715, -4297652, -12206297, -4341138, -867583, -7120519, 558883, +7572564, -4086662, 9646497, -9546639, 8522289, -1887638, 7442642, -7140383, 389231, 5468567, +3318399, 9308805, -1488206, -4811974, -2005213, 2819646, 8600672, 2570001, -2868501, 11738682, +-3483219, 6221797, 6328098, -995359, -1148904, -2571612, 17195438, -6154152, 2346663, 4416837, +6496138, -3016678, -10890426, -6342593, -1765232, 12945031, 6398965, -900333, 932545, 4647692, +-665183, 221728, 4719632, 2481954, 1327145, 178241, 10069551, 22585086, -1319092, 7094212, +-19186156, 18393734, -9706089, -5943161, -16801376, -10853919, 34561600, 550293, -24283208, -10771241, +-702227, 170188, -3193308, 26774826, 12479027, -2201708, -11146514, -980326, 7018514, -3224447, +35554812, 7645042, 15622407, 5478768, -8031052, -20048370, 4708895, -137976, 3122978, -15507516, +-1691143, -10439455, 11948599, 173409, 1917703, 12553653, -11326903, -8152922, 2395518, 659814, +3631395, -17114370, -13612899, -29402272, -15524696, 1395328, -16947404, 2390686, -12327093, -7195681, +21825950, 7030325, -10766409, 6706592, 2377265, 52613, 20975010, -3468186, 25428354, 9925133, +-11125576, -31033286, 5303211, 5128191, 17132088, -9174587, -22552336, -7820599, 6342056, 1282585, +-5506148, -15955267, -5347771, -22610856, -26134340, 8290361, -1626182, 26781806, -8697309, -16022912, +-14285061, -1110249, 18605798, -821949, 6719477, 12265353, 9027484, -3927211, 5909875, 8456791, +2528662, 8666707, 8067023, -5660230, -1091459, 12065100, -2594697, 1880122, 11014444, -1905355, +6426345, -8080981, 2986076, 6720013, -4074850, 4119411, 3427921, -7516193, 10040023, -9490804, +4696547, 5456219, 7895761, -1755031, -5954972, 11300059, -1781338, 8437463, -12088185, -5420249, +-8974871, -6964827, 739808, -5674726, 4110284, 937377, 1496796, -11443403, 16091095, -18048526, +-1185411, 27169964, -5976984, 7971460, 2727304, 3513820, -25668872, 21132850, -2232309, -20551418, +-12105902, 10641318, -3185792, 5283884, -259309, -8568460, -6459094, 3600256, -6471442, -1558536, +-500364, -29734596, -7899519, -19963544, 4251481, 6988449, -328028, -8832600, 3368865, -4267050, +11479911, -26321170, 1605781, 4496831, 14861124, -11506217, 13834090, -11335492, 8745090, 2302103, +10726681, -17214766, 5086852, -8570607, -18376554, 11758010, -14902463, -29705068, 4189204, -2861522, +23192824, -11357504, 3104188, 10648298, 15331960, 17457432, 1725503, -6098854, -11210402, 263604, +8193187, 11465415, -23249194, 25777856, -365609, -17555142, -13221520, -23329188, 9298067, 5549098, +9087077, 3996467, 24479702, -8849780, 26619670, -14634564, 6106370, -6007049, -12611098, -37428492, +20900922, 3930969, -10065256, -25444996, -1640141, 4592931, -2337536, 9164923, -7002408, -8258685, +-1486596, 3835406, -7284265, -7140920, -4663798, -1433445, 3754338, -2331630, -2432562, -10177462, +7284802, 102542, -5675263, 4463008, -4167192, 7613367, -2578054, 3734474, 4964982, 9432285, +-3486440, 8548059, 785979, 328028, -9576703, -7540889, 2113661, 3369402, 1113470, 328565, +-2010582, -6325950, -3604551, -3098819, -6907381, -3270081, 11535208, -6061810, -6873559, 3454764, +-14854681, -22018686, -138513, 12067247, -4871567, -23842438, -3847754, -34819836, 16785270, -38475928, +22879290, -26614302, -23251880, 6564321, 19836844, 14824080, -13280039, 13906030, 24968256, 4409858, +3664144, 5852967, 2179159, -14795089, 17881560, -30185030, -18815714, 1658394, -1953673, -1968169, +-4096862, -7544110, 3933653, 27717034, 7082401, 3828963, 2505040, -13081397, 16015933, -2937758, +-28015534, -4321274, 499827, 579821, -19200652, -13512504, 14592151, -4804995, 25112136, 4663798, +-88047, -20532628, -11356967, 7554848, 3148748, -5601174, 21496848, -17104170, -10498511, -747324, +-1374926, 20393042, 1547262, 23858006, -104690, -19485730, 4742181, -16609175, 12550968, -2319819, +17142826, 32658932, -50352048, 17135308, 6841883, 9223442, 18906982, 4742181, -23154706, -5317707, +-2203318, -4135517, 11664057, -23562190, 2127083, -6141267, -3470334, -16217260, -8849780, -24552718, +2633352, -1500554, 2427194, 6828998, -10090489, -1749662, 11844446, -7297687, 2240899, -4033511, +-12226161, 5701032, 7224135, -8427800, -995896, -13353590, -889058, -19348290, 6883222, 4850629, +-2522757, 2164664, -5001490, 903554, 3853123, -3023120, -3724274, 11190000, 13465259, -2950106, +4401805, 2289755, 13823889, 6296959, -17620104, 2435783, 9962714, -5602248, 10067940, 3397319, +4584878, 41149008, 35566624, -10129680, -13700409, -778463, -26986890, 15818365, -1500017, 5988258, +2146947, -13632226, 41059352, -17591650, -72296112, -10558103, 14485851, -48673252, -8296803, 15269146, +-41205380, 5750961, 26911192, -18939196, 26848378, -25706454, 23074712, 28584618, -18190260, 7800198, +-2578054, 640487, -7674033, -11281268, -2028298, 17598628, -11275363, -18844706, -10246718, -15173046, +-1550483, -11907260, -1890323, 6313065, -2778307, 17184702, -15093052, -18602578, 14894947, -19679004, +-29152090, -37446748, -12989055, -881542, 7348152, 20881594, -8654896, 9364102, 9844065, -6863895, +-3164317, 34400004, -22675280, -872415, 23606750, 7303592, 18577344, -4622459, 6816113, 26118232, +13494787, -1417339, -3116536, -16095390, 6670084, 26270168, -24356760, 18581640, -24102282, 7056095, +34249144, 7879655, -19127636, 19434728, 3159485, -12266963, -9504763, 23517094, 7814693, 10143639, +-1343788, 1779190, 6525129, 7713762, -627065, -2356863, 10078141, 8724689, 1913408, -11625403, +12870406, 1580548, -4338991, 3144990, 4460324, -8466991, -2171106, 6524592, 1334124, 10869488, +-13353590, 20192788, 15722265, -2785286, -12734578, -5207648, 13533442, 15388331, 24901146, -774705, +4845797, 4055523, 13676786, -20728050, -10995653, 20774756, 13057774, 1396938, -3307662, 1772748, +5789616, -10859288, -8471286, -7310571, 1555315, 6612102, -3320547, -11778411, -8421357, 36103496, +24460376, -34862248, -7054484, 31077846, -9496710, -19296214, -13625247, -19363324, -11431055, 31371514, +19133542, -2573222, 14236206, -3474629, 17359720, -10981158, -6096169, 34852584, -14549202, 6257768, +-10124312, -3824132, -420907, 9492415, 28372018, 10887205, -19268834, -5701032, -909996, -2973191, +15961172, 2077690, 28572270, -8489003, 4920422, -3012383, 8327405, -24034100, 14386530, -22176526, +14955076, -1238561, 21959094, -5801427, 16280074, -7585449, 5116917, 9278203, -9500468, 9613747, +22173306, 27631672, -14689325, 28312962, 11923903, 33602212, -9684614, 6268505, -1271847, -4233764, +-6473590, -2415919, -11169599, -55309516, -34782792, -10792716, -718333, 7738458, 3869229, 12659953, +20774756, -30488900, -1735704, -12378096, 45967960, -3324842, -14035953, -4107599, -40397388, -33872260, +50808388, 20566450, 11327976, -7955353, 15888158, 1203665, -37002216, 7437273, 2459406, -14179835, +-14472966, 2202245, 153545, 3809636, -7792145, -4061429, -18166102, -15450071, 6427956, 7923678, +6944962, 5264020, -9486509, -13976360, -8507256, -18046378, 11247982, 3711926, -31913218, -3924526, +-9318468, -2360085, 15477988, -14826227, -20692078, -4700842, 13204340, 4324495, -14405857, 8346732, +18289044, -34418796, -9330280, 12002286, -747324, -2803003, -6667937, -1588601, 5825587, 10022843, +2266132, 27487254, -39482560, 37381784, -10768557, -11015517, 9705015, 17462800, -30896384, -6095096, +653909, 6307697, 1778117, -773094, 15662672, -9324374, 2103997, 8286603, 9161165, 13083544, +10841034, 3697430, -16910360, -3318936, 23247584, -22371948, -19119584, 24091008, 8291971, 17052094, +26320634, 40758164, -9118752, -25750476, 34491272, -13784698, -5705864, 35949952, 11362873, -13051869, +-37304476, -24588688, -3658239, -13710072, 17693654, 35431868, 18204218, -12021077, 36385888, 12312597, +-13048648, 10115722, 40593348, 11825656, 7946763, -8435853, -32342714, -43443596, -34517580, -2388002, +26346404, 8136816, 16683800, 62194884, 30693984, -37044092, -24928528, 16589311, -51339892, -23514946, +44462576, 15970299, -57053272, -47575352, -22022444, -36393944, -34215320, -20412906, 31209916, -8729521, +-6415071, 81292992, 13749801, -23234162, -6369974, -25113210, 43233140, -8964670, 9471477, 3110630, +718333, -23493472, -9036074, -1724966, -11869679, 2975339, 9343701, 21249350, 2838437, -14224932, +-534187, 58519, -9386114, 4499515, 6207302, 7289633, -18640158, 4945118, -17265232, 3156264, +9169218, -880468, 13902272, -3211562, -843961, 14151380, -2814814, 7979513, 15589658, -5128191, +4677757, 10882373, 11724724, 9761924, 1964948, 2570001, 8160438, -8408472, -3275986, 5769215, +-55371256, 38477000, 16551730, 12497281, 15498389, -5877663, 19000936, 15626702, 22262962, -4143570, +30507690, -19067508, 23152022, -8346732, -17648558, -5545340, -28981902, 3083250, -10618233, 10327249, +-7328825, -11172284, 27877558, -31922882, 20670604, -1029718, -13910325, -5521181, 12360379, 14014478, +10096931, 26419954, 21264384, -15201500, -3172370, -13593035, 11854647, -12040404, 9245991, 12760348, +5818070, 7187628, 4724464, -7452305, 29097330, -2665564, 8648454, 2964601, 13404593, 7496329, +-34799972, 2312303, -20823076, 5364951, 15349139, -2792803, -14752139, -13450764, 32409286, -34213172, +-27737436, 50939384, -21643414, 13254269, 5033702, 16399796, -7708930, 8608725, -35449588, 2481954, +34360812, -18366354, -13947369, 29709900, -2068027, -24530706, -18252000, 10989748, -9692131, -5657546, +18340048, -13497472, 4521527, 22977538, -25880400, 1763621, 15048492, -8313446, -5207111, -6677601, +9227737, 2637647, 3674882, -3320547, 5200132, 4046933, -5163088, 468151, 823023, 13749264, +6794102, -12740484, 15579994, 4005594, -8090645, 4662187, 4677757, -1333051, -4793184, 11332271, +-108448, 3882651, 1275605, 14634564, -6891275, -5373004, 8680129, -12954695, 16275779, -1130113, +-9451612, -1422708, -1169305, 2087891, -374199, -6201933, -1145683, 8682813, 16917340, -33296198, +-133538584, -144016688, -5728950, -82831128, 72360536, 262967968, 114325584, 158387664, 200176080, -76316736, +-54129472, -21854404, -180769808, -126582888, -41391672, -198159056, -86655800, -18097918, -81309640, 18751828, +185025040, 168054560, 181899376, 235933824, 141960480, -13314935, 52640728, -53497576, -210872688, -114791592, +-85074176, -175296400, -120353040, 6186364, -135085856, -44795436, 29203630, -134963440, -69459824, 100114080, +38526932, 108614888, 271280864, 220455296, 178168672, 320967744, 232829104, -4465156, 33058364, -60588028, +-288547168, -275825472, -284534592, -442900256, -300178496, -185716528, -181822064, 1661079, 143129248, 161299648, +226247600, 342817856, 317198912, 267728400, 264304240, 151151712, 52784076, 7910256, -16838956, -120864136, +-207668112, -254826848, -272832960, -368158144, -306171040, -236220512, -115888416, 122686816, 363162560, 338246400, +370649248, 259796128, 31206158, -35900556, -111983760, -153708288, -104126648, -51354924, -51825224, -23244364, +-24068996, -37835440, -284005, 4848481, 26501022, 84107808, 76287744, 56124484, 77304040, -7900056, +-50851876, -7302518, -59614684, -51641076, 31113816, 33757908, 7384123, 7334194, -90561000, -230745504, +-218571424, -186180928, -140436848, 67604392, 209500448, 256379488, 323928032, 290386496, 178890752, 124091808, +43705588, -52121040, -108837152, -129674728, -168087296, -206096688, -232428064, -271307168, -241328304, -83675088, +58921584, 139241232, 180591568, 196377712, 147273360, 102186936, 51091856, -2022393, -6049462, 24994026, +39906688, 43802224, 47631724, 39638792, 3680787, -32318556, -70068096, -125386736, -120377192, -96618512, +-78635480, -38289096, 3576097, 27172110, 24034636, 15705085, 9292162, 7614440, }, { -7769596, -3768297, -8835821, 1731946, 642635, 554051, -6028524, -2137283, 1660005, -1321776, 1964948, -3140158, 1896228, -82141, 2475512, -6815576, 165356, -265751, -166967, 3743601, 5696737, --5975374, -1340030, -3624953, -1181116, 2125472, 3909494, 631897, 970126, -1473711, -1946157, --1586990, -1208496, -2721399, 1487132, -2743410, -1851131, 3117610, -2664490, 2237678, 369904, --6746857, -2286533, -3719442, -891743, 2863133, -1995012, -592169, -1962263, -2030983, -1419487, -2798708, 4258460, 782758, 2367601, 1879585, -2263448, -4291746, 2301029, 1893544, -938987, --3693135, -3081102, 2777770, 561567, 2077154, 988916, -5676336, -1875290, -2114198, 3129421, -1264868, -5708549, 1500017, -3026878, -938450, -298500, -2070174, 1626182, -1889249, 435402, -2175938, 2246268, 1379758, 1548336, 1013075, -183073, 1081795, 1331440, 125628, -1109712, -1523640, 314069, 12348, -451508, -1023813, 489626, 960999, 171799, 788663, -305480, --521839, -13422, -801548, 840203, -148176, 993748, -192200, 191663, -96637, 923418, -485868, -49392, -389231, 584652, -10961830, 7269769, -5234492, 734976, -690416, -1993939, -5572720, -4885526, -3244311, 4832, 5890548, -2174327, -326954, -623307, 4875325, -2925947, --7783018, -1723893, -3996467, -5440113, 217433, -425202, 915902, 3160022, 5205501, 3245922, -517544, 7947300, 3106335, 278099, 5677947, 5947993, -461172, -3190624, 242129, 2632815, -2113661, -36507, -1129040, -4599373, -4048007, -1986959, 4558571, 1890323, 7839389, 4438849, --334471, 2628520, 3202435, 1075889, -4849018, 5274757, -2074469, 2762738, -195421, 1676648, --5784247, -915902, -1829656, 2061047, -1756105, -2179159, 6066105, -408022, -4529580, 1807108, --3443490, 2836289, -1935957, 4546760, 3925063, 4361540, 1480153, -4180614, 2321430, -624918, -2288681, -1802813, 664109, 5970542, -2281702, 2906082, 3935264, -576599, 254477, -166967, --698469, -1571958, 1005022, -81604, 1505386, -19327, 1219234, 89657, 114354, 872415, -1466195, 618475, 1408212, 1565516, -279173, -1118839, 2032593, 235686, -41339, 171799, -1245541, -315143, -1091995, 602906, -251256, 336081, 59056, 1227287, 410706, 675384, -414464, 2190970, 2462627, 124017, -2135673, 2296734, 897111, 693637, 1088237, -8685498, -2812667, -5537287, 917512, 1785633, 1883343, -2545305, 4609037, 723165, -1708323, -804233, -5379984, 3852586, -2343979, -3023657, -2473364, 2070174, 3817152, -2321430, -2524904, 732292, --9842454, -39728, -4201015, -1675574, -4179003, -5495948, -674310, 4967667, 1373316, -4483946, --1185411, 4248797, 1291711, -2760590, 4831302, -2124398, -6736656, -2029372, 3783866, -1694365, -4477504, 8532489, 6921340, 933619, -93952, 2393908, -1048509, -5074504, 54761, 1877438, --3615289, 3022583, -7171522, -1099512, 447750, -3073049, -2340757, 3096672, 6256157, -4928475, --5114769, 3151432, 3202435, 5858873, 1900523, -3468186, 4706211, 4029216, -1349157, 4495220, --5004711, 5040144, 1233729, 3405372, 698469, -2728915, -1541356, -522375, 1120987, 71941, --2459406, 813896, 29528, -1476932, -1178969, 296890, -361314, 1068910, 68183, 1806571, --1332514, -1014149, -64425, 198105, 1601486, -849330, -1591285, 685047, 62814, -377420, -1090385, -287763, 662499, -761820, 667867, 925029, 130460, 1524713, 14785425, -5742372, --2528125, -945430, 10660109, -1059783, 8062191, -5859946, 7104950, -7029251, -6167036, 1484985, -3365644, -4149475, -1018444, 2121714, -541703, 2766496, -4278861, 4942434, 1788317, -5296232, --199716, 2128156, 1661079, 949725, 10028749, 7994545, 6254546, 2147, 4060355, 383326, -1172526, 3005940, -9251896, -1411971, 5640903, 3672734, 4378719, -100395, -1637993, 2046015, --362925, 11312944, -1710471, 1910724, 1137093, 556735, -3343632, 6786049, -769336, 7055558, --3883187, -4070019, 2923799, -2710124, -9411347, -4332549, 1897839, -890132, -6731288, 1883343, -22012, 8766028, 769873, 764504, -2676302, 3194382, 3237332, -714038, -508954, 7700877, -5659693, 5623723, -3708704, -5277978, -4609037, -9019431, 753230, -6384469, -2155000, 407485, --3481071, -3970697, -2212982, -444529, -1354525, 2128693, 3963181, -736587, -456340, -1774358, -919660, -1283658, -1486059, 638876, 1087701, 22012, 1400696, -811212, 52076, -783295, --528281, -425202, 816044, -482647, -487479, -285615, -1280974, -1453846, 91268, -155693, --1763084, 1505923, 1504849, 1834488, -33286, -1271310, -746251, 1443109, 10844792, -8636642, --242666, -9032316, -5943698, -3533684, 7788387, 4560182, -10908680, -14902463, -5753646, 5224828, -3707094, -2254858, 5070209, 24696, -1293859, 554588, -7849590, 2330557, -1057636, 628139, -2444910, 504659, -55298, 3261491, 2857227, -5222144, -5209796, 5892159, -1901597, -2934537, -3596498, -10200547, 2398739, 2101313, -9404368, 3389266, 9678709, 5856188, 6635188, 1343788, -3649649, 9193377, 1703491, 1734630, -10597295, 5561446, 7943542, 6499896, 1227287, 6603512, --7558069, 7398618, -2252174, -7429220, -11444477, -131533, -7289097, -5877663, -2537789, -6979322, --17383344, 735513, 879395, -599148, 2676838, 8522826, 3186866, 3427921, 2252710, -6218576, -883153, 2884608, 2464774, 2186138, 2500745, -6381248, -1913408, -8039105, -3644817, -592169, -1848447, -2948495, 2827162, 556735, 481573, -2023467, -344671, -1080721, -2684, -1166621, -1056025, 335007, 796180, -307627, -1483911, -1236951, -1223529, 1220308, 776852, -14496, --580357, -1121523, -1217086, -1182727, -3629247, 533113, 493384, -2753074, -1443646, -1007170, --23475754, 11538967, 1474784, -9131637, 2201708, -1020055, -2704219, -1879585, -5178120, 2754148, --2661806, 524523, 3367254, 3096672, 10151692, -4131222, -9726490, 5262409, -12329777, -5334350, -1997160, 1669132, 1392106, 3963718, 4930623, 4231080, -101469, 5607617, 355409, -2268280, -7474854, 4608500, -2291365, 4421132, -7753490, 14598594, 542777, 2688650, -1381906, -12594992, --2184528, -4709969, -4409321, 1913945, 10460393, 259846, 431107, -1387274, -2895882, -6817187, -2138357, -1156957, 3741990, -8582418, 2876554, 4511863, 1997697, -6369974, -2252710, 1627256, -812823, 5086852, 1003412, 17746268, -5081483, -7623567, -8621073, -2649458, 178241, 6308233, --8586713, -1155883, -3682398, 3879966, -12534862, -588411, -3397856, -5290863, 1559610, -1566053, -3415573, -489089, 6278169, 3933116, -19864, 1292248, 484258, 748398, 7281580, 833761, -5207111, 1846836, -1316944, 92342, 186294, 1463510, -958851, 732292, -279710, 2164127, -408022, -1689533, -2396055, 1897302, -922881, -2895882, -1257889, -1541893, -663036, -913217, --53150, 3491272, 60130, 954020, 426812, 1387811, -1396938, -817654, -3034931, 10569378, --3438121, -2558727, 2251100, 3096672, -8580271, -8658117, -7921531, -7448547, -12162811, 7612293, --7131793, 2110977, 2912525, 10990284, -1858110, -2656974, 8600672, 1963874, 1773285, -10177999, --6680285, 4946729, 2128156, 3924526, 5925445, -10721849, 80531, 4518843, 10155450, -147103, -924492, -1579474, -32749, -7013682, -1359894, -2212445, -13003550, -1087164, 3921305, -7487202, -3144453, -8141648, -88047, -5648956, -1193464, -1797444, 688805, 10402948, -3091840, 86436, -5313949, -3049427, 3093450, -8730595, -15508590, -8456791, -4734665, -2247879, 1598265, 10256919, --4901095, 2705830, 2461553, -7484518, 2456721, -5779952, -2063732, 3711926, 10413148, -1674500, --615791, 3274913, -293132, -9899900, -9362492, -3976603, 9230422, -1192927, -13987635, 908922, --9211094, -4137664, -1960653, -1047972, 3032247, -3604551, -1128503, 3384971, -1043677, 3987877, -3461207, 2464238, -1716913, 3901441, -3620658, -2761127, -2585034, 512712, -480499, -856846, --908922, -779537, -1299765, 699006, -393526, 2474438, -1850057, -1228361, 1008780, -1645509, --985158, -4126390, -4944581, -535260, 309775, 2289218, 244813, 1337882, 34897, 10321880, -10834592, -3311957, 1009317, 11365557, -11555073, -10279467, 8696235, -2077690, 1189706, 7898982, --1559073, -2153926, 7886097, -14601815, 6223408, -652298, 2472291, 7117298, 7332046, -8172249, -1548873, -11230803, 3455301, -3374234, -1206349, -7812009, -404264, -11201275, 1082332, -9707163, -6801081, -3398930, 1283122, 12138114, 5619965, 5441187, -9686762, 1795833, 11238319, -2646774, --15984795, 8590471, -1957431, 1579474, -3150896, -7394323, 10549513, 3811784, 8594766, 2166811, -1239098, -7077569, -9217000, 3337727, 4304094, 4641786, 6120329, 14163192, -476741, -10944650, --7145215, 8535711, -1233729, -9403294, -2485712, -556735, -2576444, -11904576, 183073, 1655173, -2974265, -4297652, 6870874, -326954, 755377, 9806484, 4998268, 10210211, -10023380, -4163971, -1846299, -5480915, 4560719, 2829310, 2792803, -392990, -1276142, -813896, -156229, -3920768, -5044976, -1822140, 3093450, -790274, 3603478, -1411434, -1789928, 250719, 2070174, -1750736, --69256, -414464, -1990717, -971736, 912681, -2157684, -683974, -4613869, -3627637, 1996623, -3206193, 1702955, 1460826, -449361, -380641, -2137283, -349503, 2431488, -3102040, -401579, -1431835, -584652, 2509335, 2475512, -1736777, -657667, 2243584, 1602023, -1167694, 8219494, --10004589, 11718281, -2637647, 12395276, -10122701, 9174587, 1010391, -969589, 15439871, -8065949, -925029, -7829189, -2331094, 23530516, 11358041, 4996121, 3407520, 6692096, -3757023, -31675, --19889994, 3694746, -827318, -8603893, 9543417, 7155416, -293668, 1698123, -11491185, 10129143, --5363878, 10756746, 7054484, 5742908, -8242579, -1452773, -6929393, 10328323, 2384781, -3764002, -18315888, 8749385, -2058900, 958851, -15162308, 2572686, 710817, 12045236, -5405217, -15432354, --2647311, -4272956, -2991445, -21810380, -10858751, -23230404, -11823508, -8305393, 2742874, -5844377, -10975252, 1362578, -12530030, 7561290, -8380018, 11854647, -10562398, -8578660, 6190122, 10559177, -10416906, 30065, -9747965, -7792682, 4783520, -6391985, 250719, -3230352, 3941706, -4388383, --6434935, 11361799, 5281199, 1549946, -1799054, 4280472, 2432562, 5269388, -485331, 3568044, -1274532, 5917928, 125628, -280784, 343061, -2918967, 112206, 1511829, 734976, 647466, -166430, 4557497, 2098629, -3601330, 406948, 2072322, -1130113, -1376000, -863288, 273804, -877784, 2294586, -569083, 1564442, 2673080, -555125, -2699924, -238371, -2944737, -1296006, --2719251, -1755031, 2368138, 162135, -1519882, -14412300, -17111686, -11342472, -1632088, -220117, --2219961, 4067334, 6190659, 4298189, -2684, 2304787, -5430986, 3563749, -11024107, -15368467, -482647, 11781632, 2063195, -4150549, 9428527, 5578626, 9125732, 15359877, 1994476, -4745939, --9789841, -7841537, 4488778, -8987756, -6230924, 2309082, -7111392, -15677704, -8593156, -870805, --1819992, 3660386, -3526168, 8676908, 2521146, 3288334, 12015708, -1931125, 1424855, 2779918, --9591199, 11307038, 1862405, -10468983, -17119740, 4350265, 1538672, -12446278, 13166222, 8542690, --11532524, 3898220, 11067057, 6221260, 2966749, 9185861, -4206921, -3714073, 694711, -5097053, --8150238, 13941464, -12437152, -1393180, 5201206, 1188095, 21675626, -18824842, 5738613, -2412161, --91805, 6055367, 241055, 1292248, -5064840, 2862596, -11167989, -23679228, -1338956, -294742, --12175159, -7743826, -1702955, 4468377, 3894999, 1661616, 992137, -3950833, -130997, -5531918, --2795487, -1079647, -3218541, -4988605, 1694365, -956704, 835908, -2558727, -1881196, 1166084, --4076998, -8646306, -3037079, 571231, -2363306, -8338679, -4670240, 3441880, 2344515, 1625645, --1676111, -3212636, -4017942, -753230, -2033130, -4740034, -3946001, -5586679, -2941516, -3774203, --3800509, -125091, -955093, 1496259, -1509681, -1062468, 3049427, -4175782, -11172284, 9836549, --20196546, -14342506, 10631118, -497679, -18396956, 9430138, -10768557, 20817706, 4153234, -27399744, --3498788, 2491618, -6935836, 2062658, 4760435, 9727027, 8310762, -15913391, -715649, 1491964, --3319473, -14581951, -2275259, -3022046, -5031018, -4443681, -232465, 1086090, 12392591, 13608604, --4239133, 7333657, 6303938, 6193343, 13531294, 181462, 3621731, -15604153, -5390721, 5514201, --3111704, 7551626, 18582712, 2755759, -16310138, -36280124, -106837, -11173357, 10282152, -6842957, --3721589, -7112466, -19632296, 8555575, 26186416, 1558536, 6844568, -20537460, 4231617, -2304250, --9286793, 2390149, 10027138, 5259188, 8085813, -8820252, 12981539, 7665443, -15186467, -22479858, --1461363, -17082696, -16047608, -10166724, -11839077, 1587527, 21087752, 8159364, 750546, -2768107, -13568339, -6864432, -10149008, -1560684, 2090575, -1528472, 2477659, 2175401, 97711, 2204929, -5176510, 1988033, -589484, 467078, -2041720, -1919314, 5430986, -1564979, 5342403, 222265, --3069828, 755377, -1629940, -2167885, 6462315, -1461900, 3482145, -7869454, -1051730, 3993783, --70867, 1706713, 6599754, -4860293, 6027450, -483721, 639413, 1991254, -2075543, 4774930, -636192, 417686, 776315, 374199, 2075543, 6124624, -2536715, 2253784, 2300492, 2484102, -2593087, -39564164, -24974698, 17972828, 14476187, 23538032, -62277, 9288404, 2317672, 7446937, --277562, 4811437, -10397579, -12466679, -7733089, -11158325, -7195144, -7941932, 9589051, 22630182, -4959077, -27557048, -6531035, 4860829, -7303592, 6765111, -15746424, -1249299, -511101, 944893, -7708393, 5855651, 1101122, -1870995, -3502009, 6448357, 12498355, -9972377, -15495168, 10350871, -4934381, 13568339, 6200859, 19711752, -13598403, -4749697, 12584791, 18796388, 16323023, 9683541, -4605279, -3995393, 1249299, -2334852, 84289, 6534256, -24508694, 13211319, -1921998, 3601867, --1611150, 18650896, -5673115, -246424, -4075387, 11839077, 10033580, -20890184, 15015206, -17765596, --894427, -8994198, -8946417, 8157217, 1489280, -27710056, -2455111, -2157684, -5116380, -3198677, --650151, -3510062, 14413373, 1449552, 13786845, -4327717, 16302085, 7723962, -8420820, 3620121, --2104534, 969589, 1056562, 1570884, 2195802, 874563, -3163244, -5186710, 8105677, 3630321, -6651831, 1892470, -3963718, 7694971, 294205, 438087, 5769752, -16141561, -7505992, -7152731, -2266132, -180926, -10996727, 514322, 1838783, -469225, -2072322, 10737, 3769371, -3979287, --170725, 4419522, 2174327, 5378373, -4673462, -2244121, 1318555, 5832566, 21975200, -24447490, --562104, -13895830, -39199092, -4634270, -14467597, -30939870, 6183679, -199179, -6012418, 1946157, -16628503, -1074816, -17575544, 6033356, 710817, -5646809, -4227322, -3132105, 890132, 19164680, --4299263, -702764, 8702677, 6433324, -2756832, 9281961, 8493298, -4088809, -4021700, -7694434, -10666014, -2544231, -18357764, 2808909, -1212255, 6314676, 24064702, -16054051, -25756382, -16240882, --7518341, 3569118, 8600672, 4574677, 18321794, 9160628, -12899934, -7444789, -17597554, 15252503, -9388799, 1705639, 3247532, -10091563, 1075889, -10677289, 18474802, 18126910, 1306207, -8428336, --4679367, 1801202, 16822314, 33556044, 20659866, -3161633, -7475928, 478352, 10696079, 4651450, -9875204, 13607530, -13442174, -610422, -25943750, -17482128, -16661252, -11159936, 7009387, 15963320, -10980621, 1757179, -3147674, -1470489, -14425185, -18149458, -4556424, -9629854, -9073655, 2114735, --1809255, -2294586, 135828, 614180, 4191351, -4597763, 9330280, -9407589, 4032974, -11981348, --3980898, 12885, 2274722, -323733, 2164664, 4638028, -3206730, 578747, 11092290, 13513578, -16280074, 8943733, 10223096, 4641249, 1999307, 801011, 357019, 658204, -2765422, -8714489, --8507793, -1376537, 6752763, 44023, 1114007, -3532074, -2458332, 1083942, 8258685, 5206037, -9843528, 6957310, 8390219, -19150722, -2259690, -9921911, 14396730, -15912854, 3073049, 1387274, -28167470, -17437030, -5116917, -17934172, -3887482, -17714592, -14890652, -10747619, 5542119, -19054086, --13828184, -20718922, -5299990, -3126199, -6349036, -9368397, -23092428, 6023692, -16326244, 6584185, --17128866, 21088826, 3238405, 9446781, -4083977, -19912006, 10650982, 6164352, -6710350, 10648298, -14899242, -8067559, -21455510, -11492796, 28732794, -12289512, -947577, 734439, -4886599, 6313602, -18619220, 3300682, 7914014, -6003291, 13318157, 183610, 10489384, 3197066, 3555159, -326954, -1067836, 22790708, 6899865, 54564340, -33313914, 21263846, 29894582, -7899519, 674310, 15425375, --11184632, -3272765, 25029996, 9921374, -4181151, 13292387, -5694590, -24241332, -17942226, 6090264, -969052, -32388886, -9021042, -3306051, -16829830, 8652212, 5037997, -10930155, -8961986, -6597607, -943819, 2989297, 6853694, -5677410, 803696, 4013110, -1795833, -7191923, 1984275, 1521492, -2267743, 6747394, 1198296, -4091493, 545461, 7817378, 6918656, 3377992, -7744363, -155156, -14251238, -4052302, -3006477, 7923678, -7740068, -13383655, -3818226, 751082, -1741609, -6859600, --2112587, -395137, -7584912, -1552631, 814970, -2083059, -7870528, -12959527, 4940823, 13986561, -5057324, -260919, 511638, -2582349, -8253854, -6565395, 30640296, 34205120, 775778, 24771224, -24680492, -1058710, 11282879, -24239184, -7288560, 22007950, 2385854, 21731460, 30325154, 25001004, --4642323, 16411607, -24810416, -38918308, -16445430, -14384382, 9780714, 347892, 10443750, 11212012, -23963770, 18564996, 6718940, -18418968, -1927367, 18963354, 6364605, -8905615, 12378633, 26039850, --2548526, 9234180, -20676510, 10329396, -16246251, -4245039, -10183367, -21556978, 13732084, 1761474, -6881612, 26360362, -13763760, -15630997, 9783936, 27299886, -20903068, -13987098, 9155260, -6629282, -38579008, 28526100, -26533234, -9926206, -20899848, 1364726, 23678154, -10600516, -15836618, -7169374, -1790465, 5826660, -19025632, 4847945, 39319888, 3023120, -25690884, -39580808, 32455994, -38178500, --31853624, -18658412, -16116865, -27580132, 7765838, 7218230, 44971528, 11319923, 19958176, -9706089, -21672942, -2465848, -8800388, 8194261, 1301375, -1929514, 22218940, 2911451, 11522860, 14055280, -7858717, 16823386, -4439923, 4620311, -3310346, -1260036, -3289945, -13971529, -10085657, -11527155, -13693966, 4846871, 12230456, 14824616, -2945811, 8906152, 19452980, 6949794, -5874979, 9924596, -11800960, 3991635, -2383170, -13848585, -12151536, 12444131, 5567352, 8282845, 16671452, 36328980, -15936476, 9172440, 6987912, 10281615, -5104569, -1211718, 18622978, -11780558, 6689949, -6545530, -6323803, 3681861, -35524748, -20596516, -26735634, 6997576, 14719927, 5149666, 22632868, 20334522, -28725816, 8880382, 31373662, 13983340, 20218022, -10047539, -4019553, -10093710, -24332600, -17466558, --37592776, -22316114, -7303592, -21922050, 4730907, -905701, -665720, 8909910, 7274064, 3358128, -18061412, -4606353, -15148887, 21691196, 1911797, -28789166, -12495134, -3142306, -34647500, -26254598, --25585120, 2330557, 12226698, 3315715, -13361106, -1698660, 14352170, 8873939, 34299072, 6393059, --46342160, -15434502, -8088497, 7367480, 7131257, -5333276, -12358232, 17124034, -25706990, -4764730, --20628192, 15557445, -40454296, -25016038, -33006824, -26453778, 1180042, -14918032, -11600170, -26539140, -13269838, 47679504, -1312649, 30821222, -17182016, 7559680, -22717692, -92342, 33883532, 8096014, --16132434, 1800665, 12994960, -22937272, -35606888, -19127100, 9007620, -27635968, 11797201, -407485, --845035, 17737142, 9182103, -4734128, 20506322, 20498806, 16376173, -5407364, -5738613, -3591130, --320512, 14288282, 10195715, 7216619, 290984, 14901389, 8186745, 2298881, 1885491, 11040750, --4669703, -3772055, 7614440, -11471321, 10302553, -9963250, -9879499, -11725798, 20486994, 12801150, -19040664, 6997576, 7141457, 1697586, 1282585, 9338870, -14387604, -23070954, 1759863, 6452115, -5718212, -9440875, 26409218, 10785737, 26641682, -43562780, 18854370, 32673426, -3211562, 37637336, --19997904, -57510684, -29775398, -438087, -5767068, 6305549, -20622286, 19825032, 28047748, -25324200, -22271016, -13892609, -16986058, -40174588, -16421271, -23105314, -15263777, -18489834, 18066780, 2658048, --35997732, -46090368, 34748432, 7826504, 12432857, -10810433, 2750927, -12505334, 292595, 10537165, -16012712, 14506252, 38909720, 1208496, -27992450, 37738804, -4041027, -9855876, -17584670, 15904801, --31122944, -20912196, 17591112, -16203838, -24253144, -30419642, -26665304, -5723581, 3512210, 2842732, --8266202, 32724966, 27839442, -2724620, -15946677, -27426050, -31490164, 7728794, 6582038, -6216429, --3121368, 44939316, 2982855, -13147969, 19377282, 9306657, -29688962, 23557896, 42742976, -46947212, -75754632, 20233590, 21832392, 8289824, 21986474, -6037651, -46864536, 32044750, 2670933, -5830955, -33251636, -39536248, 6856916, 6934762, -289910, -3830574, 1594507, -3095598, -10995653, 5823439, -11614665, -9743133, -1326071, -14407468, -16596827, 21415244, -4829154, -10522133, 4825396, -5741835, --13234405, -23835994, -5574331, -8109972, 20753282, -20001662, -2128156, 24549496, -5315559, 19615652, --7131793, -17177184, 8803609, -3474092, -8289824, 10149008, 2262911, 27040040, -3764539, -435402, -17815524, 54350664, 23877870, 1275605, -18184354, 25967910, -421981, 1887638, -12452721, 23699630, --27472758, 20076288, 19294066, 20333448, 9842454, -7428146, 26949846, 33803540, -6877854, 13980119, --20928302, 34012920, 14521821, 11404212, -21656836, -47345572, 9460739, -14481556, -10803453, -19183472, --24204288, 14685030, 6595459, -11724187, 2736968, 1193464, -12772696, -57854820, -3583613, -12239046, --5909338, -832150, 40845676, 27924266, -13576928, 10577968, -26856968, 3062312, 20158430, -30668214, --28472948, -23376970, 36980204, -26500486, 7719667, 29717416, -39957156, -37104224, 34254512, 27263916, -28760712, 38416872, 14229227, -49066780, 11112154, 14552960, -4305168, 80217640, -8257612, -12183212, --36203888, -31303332, 16201154, -28853590, 18861886, 6577206, 21329882, 43945032, -28145458, -19209242, -53524956, -32567664, -35935456, 23518704, -46293840, 33704756, -35191352, 8033200, 12156905, -25511568, -10624675, -29619706, 20656108, 37780680, -1503239, 6550899, 7804493, 1393180, -11503533, -10896869, --2432025, 10937671, -4833986, 7371775, -7625178, -23453742, 10090489, 2047089, 15979426, 7868380, -13960791, -4776004, -4592931, -23270670, 16360067, -3175592, -21163452, 4918812, 43736724, 12039867, --11103564, 12798466, 23580982, -11707007, 2630131, 17987324, -8999030, 17931488, 6172942, -5702106, --28037546, 4708895, -10675678, -749472, 35101156, -16086263, 1921998, -9327595, 12139188, 40338332, -3468723, -34213172, 49101676, 12007655, -3158949, 35035660, 17417166, 28366648, 10663867, -41888816, --9134322, -15585899, 19874962, 49069464, -30921618, 8035884, -14788109, 21930104, 25152402, -32890322, -27672474, -26388280, -23760296, 12282533, 22798224, 1114007, 7641284, 17825188, -26629334, 23760296, -1967632, 28965260, -4993973, -7451769, 9513889, 42819212, -19031000, 34626028, -16555488, 7108708, -9140227, 34602940, -1896228, -2077154, 11982422, 52074868, 3553549, -40421548, -3163244, -48696876, -29477972, 266825, 80233744, 17309256, -23278186, -6947110, 17847736, -17564806, 28271622, 52427592, -35931160, 941672, 15352897, 22796612, -2434710, -24173686, -3199214, -5383205, -83471616, 52279416, -39040716, 36025648, 8806294, -36079336, -10699837, 27444304, 14287209, 23917062, 12958453, -79946520, --28492276, 49295488, 13651017, 15994458, 42474544, -29885456, -857920, -4115653, 24106040, 6161668, --2258616, -6444062, 19018652, -4878009, -21745420, 10911364, -10438918, -12457553, 11438572, 16696148, --12197707, -3793530, -352724, 13175349, -16713865, 13683766, -14755897, 7043210, -25575994, -26228828, -26139170, 3414499, 2390149, -2988760, -18873696, -5816997, 17535814, 1890859, 6019934, 29053306, --4404489, -22042846, -2029372, -12529493, 10005663, 10868952, -10400263, -8912057, 11556683, 24045374, -30529702, 31479426, -19498614, 32030792, -29353418, 4917738, 15315317, -15103789, 2131915, 5996311, --8042327, -15772194, -29687350, 45157288, -10150081, -8937827, -15096810, -2568391, -6244883, 14651207, --30408368, -8804683, -19035296, 6485938, -19133542, 18309982, -138513, 9414031, -21095268, -38458748, -1802813, -28123982, -29343216, 13242995, -22509924, -19087908, 37120328, -13785234, -21714818, 2735894, --22326850, 10429791, 14016626, -4130685, -18234820, -5365488, 10626823, 9309878, -8291435, -829466, -32737314, -5878200, -20204600, -25706990, -3690988, -11294153, -38632156, 36206576, 12538620, -44404592, -27318676, -2017561, -18596672, 85270136, 48050484, 39239360, 20856362, 11945915, -20247012, 3114388, -9390946, 10011569, 3826816, 37313604, 8377334, -11123965, -18391050, -75511432, 15407121, 9876277, --363998, -14769319, -28420872, -5659157, -18306224, -16436840, -1172526, 23791434, -16327855, 41187124, -6055367, -8264054, -2876554, -3548180, 3295851, 17305496, -6718940, 4309463, 12189654, 4160213, -2359011, 9447854, -15360951, 7440494, 2792803, 24079734, -8360154, -6066105, -6613176, -6134287, --19122268, -10473278, 7015292, -20956220, 15627239, -4278861, -9947681, 14317273, 9169755, 12032888, --4470524, -1950989, 1648731, 2246805, -13169980, 6876243, 998580, -685584, -1134408, 8560407, --39060044, 65988416, 8433168, 21641266, 11814918, -16337519, 12295954, 18600430, 4662724, -1872069, --15910169, -2775623, 4536559, -7435662, -5624260, 2785286, 7447474, 19210852, -13249437, 8091182, -826781, 15335181, -5362267, 3053185, 5095442, -17577154, 14358613, 2334315, 3595961, 5153424, -5341329, -11133092, 11944841, -9594957, 2494302, 11401528, -6140193, 11178189, -4758824, 14085345, -10976863, 6362457, -17383880, 13064217, 9975598, 7956964, 21811454, -20890184, -1762547, -173409, --4378719, 6414534, -10733660, -17304960, 11954505, 13456133, 6811818, -1640141, 2928094, -1846836, -7066295, -6060199, 2915209, -12848932, 11790222, -19958714, 18937584, 10534481, -6250251, -267362, -7912941, 569620, 7102802, 151934, 881542, -660888, -6688338, 9688372, 13208098, -11564199, --2570001, 2429341, 7371238, -5250061, -5422396, 1537061, 2490007, -1310502, 1410897, -4248797, -1704028, 5405217, -4107599, 1156420, 3278134, -4355097, 3833258, 4734665, -332323, -1521492, --2150705, 923418, 9903658, -3688303, 1373316, -9097278, 647466, 10098542, -7042673, 7517267, --3369402, 571768, 16824460, -2931852, 434865, -353261, -5054640, 8658117, 3650185, 3718368, -3651796, -2735894, 2340757, 9482214, -2659122, 6455873, -4103841, -719944, 12753905, -52625160, --122606824, -19586662, 71805944, 65180424, 160488976, 83813600, -43142408, -13246753, -88809720, -150803824, --10371809, -68522984, -9509594, 109915728, 46970836, 84924392, 130380712, -15144592, -19054086, -66186520, --112542104, -89491552, -5730023, -33614024, -12705050, 93552440, 29700236, 60861296, 110603464, 18134962, --413391, 11467563, -67214088, -101802000, 17530982, -105197168, -68800008, 23377506, -10547366, 17128330, -135453600, 15562277, 51946020, 110599168, -22000434, 3456375, 24684788, -106575856, -88871464, -31478352, --121298464, -46964392, 15484431, 22470732, 83584360, 117725056, 83919368, 59248536, 51615844, -19576460, --71051104, -58331560, -87848184, -92284888, -39557184, -23360328, 630286, 77509664, 92438432, 28973312, -72234904, 21104932, -22857816, 15239081, -50332184, -69939248, -13689135, -32464584, -21749714, 39495444, --1460289, 27559194, 49070540, -13415867, -1079647, 52076, -24839944, -7596187, -1713692, -18570902, -20781200, 7590818, -4843113, 34013992, 10826539, -4804458, 32625646, -11399380, -34973380, 758062, --53425100, -37321656, 11537356, -35474820, 7592429, 41255844, 30258044, 56211996, 61210800, 22373022, -21633750, -2493229, -50493248, -70471824, -72613400, -75746584, -48209936, -3548180, 24310588, 52456048, -90927144, 97675608, 80999328, 63506996, -3823058, -59535228, -85520312, -109204376, -111530640, -59366112, --17980880, 46760384, 98652176, 89492624, 53832584, 40014600, 11560441, -8215199, -13448079, -39270496, --45605036, -34097744, -28732258, -20415590, -4365298, 4234838, 16190416, 24474872, 24661166, 23924578, -20991116, 9780714, -1379758, -7547332, -7346005, -5318780, -2968896, -2348810, }, +3768297, -8835821, 1731946, 642635, 554051, -6028524, -2137283, 1660005, -1321776, 1964948, +3140158, 1896228, -82141, 2475512, -6815576, 165356, -265751, -166967, 3743601, 5696737, +-5975374, -1340030, -3624953, -1181116, 2125472, 3909494, 631897, 970126, -1473711, -1946157, +-1586990, -1208496, -2721399, 1487132, -2743410, -1851131, 3117610, -2664490, 2237678, 369904, +-6746857, -2286533, -3719442, -891743, 2863133, -1995012, -592169, -1962263, -2030983, -1419487, +2798708, 4258460, 782758, 2367601, 1879585, -2263448, -4291746, 2301029, 1893544, -938987, +-3693135, -3081102, 2777770, 561567, 2077154, 988916, -5676336, -1875290, -2114198, 3129421, +1264868, -5708549, 1500017, -3026878, -938450, -298500, -2070174, 1626182, -1889249, 435402, +2175938, 2246268, 1379758, 1548336, 1013075, -183073, 1081795, 1331440, 125628, -1109712, +1523640, 314069, 12348, -451508, -1023813, 489626, 960999, 171799, 788663, -305480, +-521839, -13422, -801548, 840203, -148176, 993748, -192200, 191663, -96637, 923418, +485868, -49392, -389231, 584652, -10961830, 7269769, -5234492, 734976, -690416, -1993939, +5572720, -4885526, -3244311, 4832, 5890548, -2174327, -326954, -623307, 4875325, -2925947, +-7783018, -1723893, -3996467, -5440113, 217433, -425202, 915902, 3160022, 5205501, 3245922, +517544, 7947300, 3106335, 278099, 5677947, 5947993, -461172, -3190624, 242129, 2632815, +2113661, -36507, -1129040, -4599373, -4048007, -1986959, 4558571, 1890323, 7839389, 4438849, +-334471, 2628520, 3202435, 1075889, -4849018, 5274757, -2074469, 2762738, -195421, 1676648, +-5784247, -915902, -1829656, 2061047, -1756105, -2179159, 6066105, -408022, -4529580, 1807108, +-3443490, 2836289, -1935957, 4546760, 3925063, 4361540, 1480153, -4180614, 2321430, -624918, +2288681, -1802813, 664109, 5970542, -2281702, 2906082, 3935264, -576599, 254477, -166967, +-698469, -1571958, 1005022, -81604, 1505386, -19327, 1219234, 89657, 114354, 872415, +1466195, 618475, 1408212, 1565516, -279173, -1118839, 2032593, 235686, -41339, 171799, +1245541, -315143, -1091995, 602906, -251256, 336081, 59056, 1227287, 410706, 675384, +414464, 2190970, 2462627, 124017, -2135673, 2296734, 897111, 693637, 1088237, -8685498, +2812667, -5537287, 917512, 1785633, 1883343, -2545305, 4609037, 723165, -1708323, -804233, +5379984, 3852586, -2343979, -3023657, -2473364, 2070174, 3817152, -2321430, -2524904, 732292, +-9842454, -39728, -4201015, -1675574, -4179003, -5495948, -674310, 4967667, 1373316, -4483946, +-1185411, 4248797, 1291711, -2760590, 4831302, -2124398, -6736656, -2029372, 3783866, -1694365, +4477504, 8532489, 6921340, 933619, -93952, 2393908, -1048509, -5074504, 54761, 1877438, +-3615289, 3022583, -7171522, -1099512, 447750, -3073049, -2340757, 3096672, 6256157, -4928475, +-5114769, 3151432, 3202435, 5858873, 1900523, -3468186, 4706211, 4029216, -1349157, 4495220, +-5004711, 5040144, 1233729, 3405372, 698469, -2728915, -1541356, -522375, 1120987, 71941, +-2459406, 813896, 29528, -1476932, -1178969, 296890, -361314, 1068910, 68183, 1806571, +-1332514, -1014149, -64425, 198105, 1601486, -849330, -1591285, 685047, 62814, -377420, +1090385, -287763, 662499, -761820, 667867, 925029, 130460, 1524713, 14785425, -5742372, +-2528125, -945430, 10660109, -1059783, 8062191, -5859946, 7104950, -7029251, -6167036, 1484985, +3365644, -4149475, -1018444, 2121714, -541703, 2766496, -4278861, 4942434, 1788317, -5296232, +-199716, 2128156, 1661079, 949725, 10028749, 7994545, 6254546, 2147, 4060355, 383326, +1172526, 3005940, -9251896, -1411971, 5640903, 3672734, 4378719, -100395, -1637993, 2046015, +-362925, 11312944, -1710471, 1910724, 1137093, 556735, -3343632, 6786049, -769336, 7055558, +-3883187, -4070019, 2923799, -2710124, -9411347, -4332549, 1897839, -890132, -6731288, 1883343, +22012, 8766028, 769873, 764504, -2676302, 3194382, 3237332, -714038, -508954, 7700877, +5659693, 5623723, -3708704, -5277978, -4609037, -9019431, 753230, -6384469, -2155000, 407485, +-3481071, -3970697, -2212982, -444529, -1354525, 2128693, 3963181, -736587, -456340, -1774358, +919660, -1283658, -1486059, 638876, 1087701, 22012, 1400696, -811212, 52076, -783295, +-528281, -425202, 816044, -482647, -487479, -285615, -1280974, -1453846, 91268, -155693, +-1763084, 1505923, 1504849, 1834488, -33286, -1271310, -746251, 1443109, 10844792, -8636642, +-242666, -9032316, -5943698, -3533684, 7788387, 4560182, -10908680, -14902463, -5753646, 5224828, +3707094, -2254858, 5070209, 24696, -1293859, 554588, -7849590, 2330557, -1057636, 628139, +2444910, 504659, -55298, 3261491, 2857227, -5222144, -5209796, 5892159, -1901597, -2934537, +3596498, -10200547, 2398739, 2101313, -9404368, 3389266, 9678709, 5856188, 6635188, 1343788, +3649649, 9193377, 1703491, 1734630, -10597295, 5561446, 7943542, 6499896, 1227287, 6603512, +-7558069, 7398618, -2252174, -7429220, -11444477, -131533, -7289097, -5877663, -2537789, -6979322, +-17383344, 735513, 879395, -599148, 2676838, 8522826, 3186866, 3427921, 2252710, -6218576, +883153, 2884608, 2464774, 2186138, 2500745, -6381248, -1913408, -8039105, -3644817, -592169, +1848447, -2948495, 2827162, 556735, 481573, -2023467, -344671, -1080721, -2684, -1166621, +1056025, 335007, 796180, -307627, -1483911, -1236951, -1223529, 1220308, 776852, -14496, +-580357, -1121523, -1217086, -1182727, -3629247, 533113, 493384, -2753074, -1443646, -1007170, +-23475754, 11538967, 1474784, -9131637, 2201708, -1020055, -2704219, -1879585, -5178120, 2754148, +-2661806, 524523, 3367254, 3096672, 10151692, -4131222, -9726490, 5262409, -12329777, -5334350, +1997160, 1669132, 1392106, 3963718, 4930623, 4231080, -101469, 5607617, 355409, -2268280, +7474854, 4608500, -2291365, 4421132, -7753490, 14598594, 542777, 2688650, -1381906, -12594992, +-2184528, -4709969, -4409321, 1913945, 10460393, 259846, 431107, -1387274, -2895882, -6817187, +2138357, -1156957, 3741990, -8582418, 2876554, 4511863, 1997697, -6369974, -2252710, 1627256, +812823, 5086852, 1003412, 17746268, -5081483, -7623567, -8621073, -2649458, 178241, 6308233, +-8586713, -1155883, -3682398, 3879966, -12534862, -588411, -3397856, -5290863, 1559610, -1566053, +3415573, -489089, 6278169, 3933116, -19864, 1292248, 484258, 748398, 7281580, 833761, +5207111, 1846836, -1316944, 92342, 186294, 1463510, -958851, 732292, -279710, 2164127, +408022, -1689533, -2396055, 1897302, -922881, -2895882, -1257889, -1541893, -663036, -913217, +-53150, 3491272, 60130, 954020, 426812, 1387811, -1396938, -817654, -3034931, 10569378, +-3438121, -2558727, 2251100, 3096672, -8580271, -8658117, -7921531, -7448547, -12162811, 7612293, +-7131793, 2110977, 2912525, 10990284, -1858110, -2656974, 8600672, 1963874, 1773285, -10177999, +-6680285, 4946729, 2128156, 3924526, 5925445, -10721849, 80531, 4518843, 10155450, -147103, +924492, -1579474, -32749, -7013682, -1359894, -2212445, -13003550, -1087164, 3921305, -7487202, +3144453, -8141648, -88047, -5648956, -1193464, -1797444, 688805, 10402948, -3091840, 86436, +5313949, -3049427, 3093450, -8730595, -15508590, -8456791, -4734665, -2247879, 1598265, 10256919, +-4901095, 2705830, 2461553, -7484518, 2456721, -5779952, -2063732, 3711926, 10413148, -1674500, +-615791, 3274913, -293132, -9899900, -9362492, -3976603, 9230422, -1192927, -13987635, 908922, +-9211094, -4137664, -1960653, -1047972, 3032247, -3604551, -1128503, 3384971, -1043677, 3987877, +3461207, 2464238, -1716913, 3901441, -3620658, -2761127, -2585034, 512712, -480499, -856846, +-908922, -779537, -1299765, 699006, -393526, 2474438, -1850057, -1228361, 1008780, -1645509, +-985158, -4126390, -4944581, -535260, 309775, 2289218, 244813, 1337882, 34897, 10321880, +10834592, -3311957, 1009317, 11365557, -11555073, -10279467, 8696235, -2077690, 1189706, 7898982, +-1559073, -2153926, 7886097, -14601815, 6223408, -652298, 2472291, 7117298, 7332046, -8172249, +1548873, -11230803, 3455301, -3374234, -1206349, -7812009, -404264, -11201275, 1082332, -9707163, +6801081, -3398930, 1283122, 12138114, 5619965, 5441187, -9686762, 1795833, 11238319, -2646774, +-15984795, 8590471, -1957431, 1579474, -3150896, -7394323, 10549513, 3811784, 8594766, 2166811, +1239098, -7077569, -9217000, 3337727, 4304094, 4641786, 6120329, 14163192, -476741, -10944650, +-7145215, 8535711, -1233729, -9403294, -2485712, -556735, -2576444, -11904576, 183073, 1655173, +2974265, -4297652, 6870874, -326954, 755377, 9806484, 4998268, 10210211, -10023380, -4163971, +1846299, -5480915, 4560719, 2829310, 2792803, -392990, -1276142, -813896, -156229, -3920768, +5044976, -1822140, 3093450, -790274, 3603478, -1411434, -1789928, 250719, 2070174, -1750736, +-69256, -414464, -1990717, -971736, 912681, -2157684, -683974, -4613869, -3627637, 1996623, +3206193, 1702955, 1460826, -449361, -380641, -2137283, -349503, 2431488, -3102040, -401579, +1431835, -584652, 2509335, 2475512, -1736777, -657667, 2243584, 1602023, -1167694, 8219494, +-10004589, 11718281, -2637647, 12395276, -10122701, 9174587, 1010391, -969589, 15439871, -8065949, +925029, -7829189, -2331094, 23530516, 11358041, 4996121, 3407520, 6692096, -3757023, -31675, +-19889994, 3694746, -827318, -8603893, 9543417, 7155416, -293668, 1698123, -11491185, 10129143, +-5363878, 10756746, 7054484, 5742908, -8242579, -1452773, -6929393, 10328323, 2384781, -3764002, +18315888, 8749385, -2058900, 958851, -15162308, 2572686, 710817, 12045236, -5405217, -15432354, +-2647311, -4272956, -2991445, -21810380, -10858751, -23230404, -11823508, -8305393, 2742874, -5844377, +10975252, 1362578, -12530030, 7561290, -8380018, 11854647, -10562398, -8578660, 6190122, 10559177, +10416906, 30065, -9747965, -7792682, 4783520, -6391985, 250719, -3230352, 3941706, -4388383, +-6434935, 11361799, 5281199, 1549946, -1799054, 4280472, 2432562, 5269388, -485331, 3568044, +1274532, 5917928, 125628, -280784, 343061, -2918967, 112206, 1511829, 734976, 647466, +166430, 4557497, 2098629, -3601330, 406948, 2072322, -1130113, -1376000, -863288, 273804, +877784, 2294586, -569083, 1564442, 2673080, -555125, -2699924, -238371, -2944737, -1296006, +-2719251, -1755031, 2368138, 162135, -1519882, -14412300, -17111686, -11342472, -1632088, -220117, +-2219961, 4067334, 6190659, 4298189, -2684, 2304787, -5430986, 3563749, -11024107, -15368467, +482647, 11781632, 2063195, -4150549, 9428527, 5578626, 9125732, 15359877, 1994476, -4745939, +-9789841, -7841537, 4488778, -8987756, -6230924, 2309082, -7111392, -15677704, -8593156, -870805, +-1819992, 3660386, -3526168, 8676908, 2521146, 3288334, 12015708, -1931125, 1424855, 2779918, +-9591199, 11307038, 1862405, -10468983, -17119740, 4350265, 1538672, -12446278, 13166222, 8542690, +-11532524, 3898220, 11067057, 6221260, 2966749, 9185861, -4206921, -3714073, 694711, -5097053, +-8150238, 13941464, -12437152, -1393180, 5201206, 1188095, 21675626, -18824842, 5738613, -2412161, +-91805, 6055367, 241055, 1292248, -5064840, 2862596, -11167989, -23679228, -1338956, -294742, +-12175159, -7743826, -1702955, 4468377, 3894999, 1661616, 992137, -3950833, -130997, -5531918, +-2795487, -1079647, -3218541, -4988605, 1694365, -956704, 835908, -2558727, -1881196, 1166084, +-4076998, -8646306, -3037079, 571231, -2363306, -8338679, -4670240, 3441880, 2344515, 1625645, +-1676111, -3212636, -4017942, -753230, -2033130, -4740034, -3946001, -5586679, -2941516, -3774203, +-3800509, -125091, -955093, 1496259, -1509681, -1062468, 3049427, -4175782, -11172284, 9836549, +-20196546, -14342506, 10631118, -497679, -18396956, 9430138, -10768557, 20817706, 4153234, -27399744, +-3498788, 2491618, -6935836, 2062658, 4760435, 9727027, 8310762, -15913391, -715649, 1491964, +-3319473, -14581951, -2275259, -3022046, -5031018, -4443681, -232465, 1086090, 12392591, 13608604, +-4239133, 7333657, 6303938, 6193343, 13531294, 181462, 3621731, -15604153, -5390721, 5514201, +-3111704, 7551626, 18582712, 2755759, -16310138, -36280124, -106837, -11173357, 10282152, -6842957, +-3721589, -7112466, -19632296, 8555575, 26186416, 1558536, 6844568, -20537460, 4231617, -2304250, +-9286793, 2390149, 10027138, 5259188, 8085813, -8820252, 12981539, 7665443, -15186467, -22479858, +-1461363, -17082696, -16047608, -10166724, -11839077, 1587527, 21087752, 8159364, 750546, -2768107, +13568339, -6864432, -10149008, -1560684, 2090575, -1528472, 2477659, 2175401, 97711, 2204929, +5176510, 1988033, -589484, 467078, -2041720, -1919314, 5430986, -1564979, 5342403, 222265, +-3069828, 755377, -1629940, -2167885, 6462315, -1461900, 3482145, -7869454, -1051730, 3993783, +-70867, 1706713, 6599754, -4860293, 6027450, -483721, 639413, 1991254, -2075543, 4774930, +636192, 417686, 776315, 374199, 2075543, 6124624, -2536715, 2253784, 2300492, 2484102, +2593087, -39564164, -24974698, 17972828, 14476187, 23538032, -62277, 9288404, 2317672, 7446937, +-277562, 4811437, -10397579, -12466679, -7733089, -11158325, -7195144, -7941932, 9589051, 22630182, +4959077, -27557048, -6531035, 4860829, -7303592, 6765111, -15746424, -1249299, -511101, 944893, +7708393, 5855651, 1101122, -1870995, -3502009, 6448357, 12498355, -9972377, -15495168, 10350871, +4934381, 13568339, 6200859, 19711752, -13598403, -4749697, 12584791, 18796388, 16323023, 9683541, +4605279, -3995393, 1249299, -2334852, 84289, 6534256, -24508694, 13211319, -1921998, 3601867, +-1611150, 18650896, -5673115, -246424, -4075387, 11839077, 10033580, -20890184, 15015206, -17765596, +-894427, -8994198, -8946417, 8157217, 1489280, -27710056, -2455111, -2157684, -5116380, -3198677, +-650151, -3510062, 14413373, 1449552, 13786845, -4327717, 16302085, 7723962, -8420820, 3620121, +-2104534, 969589, 1056562, 1570884, 2195802, 874563, -3163244, -5186710, 8105677, 3630321, +6651831, 1892470, -3963718, 7694971, 294205, 438087, 5769752, -16141561, -7505992, -7152731, +2266132, -180926, -10996727, 514322, 1838783, -469225, -2072322, 10737, 3769371, -3979287, +-170725, 4419522, 2174327, 5378373, -4673462, -2244121, 1318555, 5832566, 21975200, -24447490, +-562104, -13895830, -39199092, -4634270, -14467597, -30939870, 6183679, -199179, -6012418, 1946157, +16628503, -1074816, -17575544, 6033356, 710817, -5646809, -4227322, -3132105, 890132, 19164680, +-4299263, -702764, 8702677, 6433324, -2756832, 9281961, 8493298, -4088809, -4021700, -7694434, +10666014, -2544231, -18357764, 2808909, -1212255, 6314676, 24064702, -16054051, -25756382, -16240882, +-7518341, 3569118, 8600672, 4574677, 18321794, 9160628, -12899934, -7444789, -17597554, 15252503, +9388799, 1705639, 3247532, -10091563, 1075889, -10677289, 18474802, 18126910, 1306207, -8428336, +-4679367, 1801202, 16822314, 33556044, 20659866, -3161633, -7475928, 478352, 10696079, 4651450, +9875204, 13607530, -13442174, -610422, -25943750, -17482128, -16661252, -11159936, 7009387, 15963320, +10980621, 1757179, -3147674, -1470489, -14425185, -18149458, -4556424, -9629854, -9073655, 2114735, +-1809255, -2294586, 135828, 614180, 4191351, -4597763, 9330280, -9407589, 4032974, -11981348, +-3980898, 12885, 2274722, -323733, 2164664, 4638028, -3206730, 578747, 11092290, 13513578, +16280074, 8943733, 10223096, 4641249, 1999307, 801011, 357019, 658204, -2765422, -8714489, +-8507793, -1376537, 6752763, 44023, 1114007, -3532074, -2458332, 1083942, 8258685, 5206037, +9843528, 6957310, 8390219, -19150722, -2259690, -9921911, 14396730, -15912854, 3073049, 1387274, +28167470, -17437030, -5116917, -17934172, -3887482, -17714592, -14890652, -10747619, 5542119, -19054086, +-13828184, -20718922, -5299990, -3126199, -6349036, -9368397, -23092428, 6023692, -16326244, 6584185, +-17128866, 21088826, 3238405, 9446781, -4083977, -19912006, 10650982, 6164352, -6710350, 10648298, +14899242, -8067559, -21455510, -11492796, 28732794, -12289512, -947577, 734439, -4886599, 6313602, +18619220, 3300682, 7914014, -6003291, 13318157, 183610, 10489384, 3197066, 3555159, -326954, +1067836, 22790708, 6899865, 54564340, -33313914, 21263846, 29894582, -7899519, 674310, 15425375, +-11184632, -3272765, 25029996, 9921374, -4181151, 13292387, -5694590, -24241332, -17942226, 6090264, +969052, -32388886, -9021042, -3306051, -16829830, 8652212, 5037997, -10930155, -8961986, -6597607, +943819, 2989297, 6853694, -5677410, 803696, 4013110, -1795833, -7191923, 1984275, 1521492, +2267743, 6747394, 1198296, -4091493, 545461, 7817378, 6918656, 3377992, -7744363, -155156, +14251238, -4052302, -3006477, 7923678, -7740068, -13383655, -3818226, 751082, -1741609, -6859600, +-2112587, -395137, -7584912, -1552631, 814970, -2083059, -7870528, -12959527, 4940823, 13986561, +5057324, -260919, 511638, -2582349, -8253854, -6565395, 30640296, 34205120, 775778, 24771224, +24680492, -1058710, 11282879, -24239184, -7288560, 22007950, 2385854, 21731460, 30325154, 25001004, +-4642323, 16411607, -24810416, -38918308, -16445430, -14384382, 9780714, 347892, 10443750, 11212012, +23963770, 18564996, 6718940, -18418968, -1927367, 18963354, 6364605, -8905615, 12378633, 26039850, +-2548526, 9234180, -20676510, 10329396, -16246251, -4245039, -10183367, -21556978, 13732084, 1761474, +6881612, 26360362, -13763760, -15630997, 9783936, 27299886, -20903068, -13987098, 9155260, -6629282, +38579008, 28526100, -26533234, -9926206, -20899848, 1364726, 23678154, -10600516, -15836618, -7169374, +1790465, 5826660, -19025632, 4847945, 39319888, 3023120, -25690884, -39580808, 32455994, -38178500, +-31853624, -18658412, -16116865, -27580132, 7765838, 7218230, 44971528, 11319923, 19958176, -9706089, +21672942, -2465848, -8800388, 8194261, 1301375, -1929514, 22218940, 2911451, 11522860, 14055280, +7858717, 16823386, -4439923, 4620311, -3310346, -1260036, -3289945, -13971529, -10085657, -11527155, +13693966, 4846871, 12230456, 14824616, -2945811, 8906152, 19452980, 6949794, -5874979, 9924596, +11800960, 3991635, -2383170, -13848585, -12151536, 12444131, 5567352, 8282845, 16671452, 36328980, +15936476, 9172440, 6987912, 10281615, -5104569, -1211718, 18622978, -11780558, 6689949, -6545530, +6323803, 3681861, -35524748, -20596516, -26735634, 6997576, 14719927, 5149666, 22632868, 20334522, +28725816, 8880382, 31373662, 13983340, 20218022, -10047539, -4019553, -10093710, -24332600, -17466558, +-37592776, -22316114, -7303592, -21922050, 4730907, -905701, -665720, 8909910, 7274064, 3358128, +18061412, -4606353, -15148887, 21691196, 1911797, -28789166, -12495134, -3142306, -34647500, -26254598, +-25585120, 2330557, 12226698, 3315715, -13361106, -1698660, 14352170, 8873939, 34299072, 6393059, +-46342160, -15434502, -8088497, 7367480, 7131257, -5333276, -12358232, 17124034, -25706990, -4764730, +-20628192, 15557445, -40454296, -25016038, -33006824, -26453778, 1180042, -14918032, -11600170, -26539140, +13269838, 47679504, -1312649, 30821222, -17182016, 7559680, -22717692, -92342, 33883532, 8096014, +-16132434, 1800665, 12994960, -22937272, -35606888, -19127100, 9007620, -27635968, 11797201, -407485, +-845035, 17737142, 9182103, -4734128, 20506322, 20498806, 16376173, -5407364, -5738613, -3591130, +-320512, 14288282, 10195715, 7216619, 290984, 14901389, 8186745, 2298881, 1885491, 11040750, +-4669703, -3772055, 7614440, -11471321, 10302553, -9963250, -9879499, -11725798, 20486994, 12801150, +19040664, 6997576, 7141457, 1697586, 1282585, 9338870, -14387604, -23070954, 1759863, 6452115, +5718212, -9440875, 26409218, 10785737, 26641682, -43562780, 18854370, 32673426, -3211562, 37637336, +-19997904, -57510684, -29775398, -438087, -5767068, 6305549, -20622286, 19825032, 28047748, -25324200, +22271016, -13892609, -16986058, -40174588, -16421271, -23105314, -15263777, -18489834, 18066780, 2658048, +-35997732, -46090368, 34748432, 7826504, 12432857, -10810433, 2750927, -12505334, 292595, 10537165, +16012712, 14506252, 38909720, 1208496, -27992450, 37738804, -4041027, -9855876, -17584670, 15904801, +-31122944, -20912196, 17591112, -16203838, -24253144, -30419642, -26665304, -5723581, 3512210, 2842732, +-8266202, 32724966, 27839442, -2724620, -15946677, -27426050, -31490164, 7728794, 6582038, -6216429, +-3121368, 44939316, 2982855, -13147969, 19377282, 9306657, -29688962, 23557896, 42742976, -46947212, +75754632, 20233590, 21832392, 8289824, 21986474, -6037651, -46864536, 32044750, 2670933, -5830955, +33251636, -39536248, 6856916, 6934762, -289910, -3830574, 1594507, -3095598, -10995653, 5823439, +11614665, -9743133, -1326071, -14407468, -16596827, 21415244, -4829154, -10522133, 4825396, -5741835, +-13234405, -23835994, -5574331, -8109972, 20753282, -20001662, -2128156, 24549496, -5315559, 19615652, +-7131793, -17177184, 8803609, -3474092, -8289824, 10149008, 2262911, 27040040, -3764539, -435402, +17815524, 54350664, 23877870, 1275605, -18184354, 25967910, -421981, 1887638, -12452721, 23699630, +-27472758, 20076288, 19294066, 20333448, 9842454, -7428146, 26949846, 33803540, -6877854, 13980119, +-20928302, 34012920, 14521821, 11404212, -21656836, -47345572, 9460739, -14481556, -10803453, -19183472, +-24204288, 14685030, 6595459, -11724187, 2736968, 1193464, -12772696, -57854820, -3583613, -12239046, +-5909338, -832150, 40845676, 27924266, -13576928, 10577968, -26856968, 3062312, 20158430, -30668214, +-28472948, -23376970, 36980204, -26500486, 7719667, 29717416, -39957156, -37104224, 34254512, 27263916, +28760712, 38416872, 14229227, -49066780, 11112154, 14552960, -4305168, 80217640, -8257612, -12183212, +-36203888, -31303332, 16201154, -28853590, 18861886, 6577206, 21329882, 43945032, -28145458, -19209242, +53524956, -32567664, -35935456, 23518704, -46293840, 33704756, -35191352, 8033200, 12156905, -25511568, +10624675, -29619706, 20656108, 37780680, -1503239, 6550899, 7804493, 1393180, -11503533, -10896869, +-2432025, 10937671, -4833986, 7371775, -7625178, -23453742, 10090489, 2047089, 15979426, 7868380, +13960791, -4776004, -4592931, -23270670, 16360067, -3175592, -21163452, 4918812, 43736724, 12039867, +-11103564, 12798466, 23580982, -11707007, 2630131, 17987324, -8999030, 17931488, 6172942, -5702106, +-28037546, 4708895, -10675678, -749472, 35101156, -16086263, 1921998, -9327595, 12139188, 40338332, +3468723, -34213172, 49101676, 12007655, -3158949, 35035660, 17417166, 28366648, 10663867, -41888816, +-9134322, -15585899, 19874962, 49069464, -30921618, 8035884, -14788109, 21930104, 25152402, -32890322, +27672474, -26388280, -23760296, 12282533, 22798224, 1114007, 7641284, 17825188, -26629334, 23760296, +1967632, 28965260, -4993973, -7451769, 9513889, 42819212, -19031000, 34626028, -16555488, 7108708, +9140227, 34602940, -1896228, -2077154, 11982422, 52074868, 3553549, -40421548, -3163244, -48696876, +29477972, 266825, 80233744, 17309256, -23278186, -6947110, 17847736, -17564806, 28271622, 52427592, +35931160, 941672, 15352897, 22796612, -2434710, -24173686, -3199214, -5383205, -83471616, 52279416, +39040716, 36025648, 8806294, -36079336, -10699837, 27444304, 14287209, 23917062, 12958453, -79946520, +-28492276, 49295488, 13651017, 15994458, 42474544, -29885456, -857920, -4115653, 24106040, 6161668, +-2258616, -6444062, 19018652, -4878009, -21745420, 10911364, -10438918, -12457553, 11438572, 16696148, +-12197707, -3793530, -352724, 13175349, -16713865, 13683766, -14755897, 7043210, -25575994, -26228828, +26139170, 3414499, 2390149, -2988760, -18873696, -5816997, 17535814, 1890859, 6019934, 29053306, +-4404489, -22042846, -2029372, -12529493, 10005663, 10868952, -10400263, -8912057, 11556683, 24045374, +30529702, 31479426, -19498614, 32030792, -29353418, 4917738, 15315317, -15103789, 2131915, 5996311, +-8042327, -15772194, -29687350, 45157288, -10150081, -8937827, -15096810, -2568391, -6244883, 14651207, +-30408368, -8804683, -19035296, 6485938, -19133542, 18309982, -138513, 9414031, -21095268, -38458748, +1802813, -28123982, -29343216, 13242995, -22509924, -19087908, 37120328, -13785234, -21714818, 2735894, +-22326850, 10429791, 14016626, -4130685, -18234820, -5365488, 10626823, 9309878, -8291435, -829466, +32737314, -5878200, -20204600, -25706990, -3690988, -11294153, -38632156, 36206576, 12538620, -44404592, +27318676, -2017561, -18596672, 85270136, 48050484, 39239360, 20856362, 11945915, -20247012, 3114388, +9390946, 10011569, 3826816, 37313604, 8377334, -11123965, -18391050, -75511432, 15407121, 9876277, +-363998, -14769319, -28420872, -5659157, -18306224, -16436840, -1172526, 23791434, -16327855, 41187124, +6055367, -8264054, -2876554, -3548180, 3295851, 17305496, -6718940, 4309463, 12189654, 4160213, +2359011, 9447854, -15360951, 7440494, 2792803, 24079734, -8360154, -6066105, -6613176, -6134287, +-19122268, -10473278, 7015292, -20956220, 15627239, -4278861, -9947681, 14317273, 9169755, 12032888, +-4470524, -1950989, 1648731, 2246805, -13169980, 6876243, 998580, -685584, -1134408, 8560407, +-39060044, 65988416, 8433168, 21641266, 11814918, -16337519, 12295954, 18600430, 4662724, -1872069, +-15910169, -2775623, 4536559, -7435662, -5624260, 2785286, 7447474, 19210852, -13249437, 8091182, +826781, 15335181, -5362267, 3053185, 5095442, -17577154, 14358613, 2334315, 3595961, 5153424, +5341329, -11133092, 11944841, -9594957, 2494302, 11401528, -6140193, 11178189, -4758824, 14085345, +10976863, 6362457, -17383880, 13064217, 9975598, 7956964, 21811454, -20890184, -1762547, -173409, +-4378719, 6414534, -10733660, -17304960, 11954505, 13456133, 6811818, -1640141, 2928094, -1846836, +7066295, -6060199, 2915209, -12848932, 11790222, -19958714, 18937584, 10534481, -6250251, -267362, +7912941, 569620, 7102802, 151934, 881542, -660888, -6688338, 9688372, 13208098, -11564199, +-2570001, 2429341, 7371238, -5250061, -5422396, 1537061, 2490007, -1310502, 1410897, -4248797, +1704028, 5405217, -4107599, 1156420, 3278134, -4355097, 3833258, 4734665, -332323, -1521492, +-2150705, 923418, 9903658, -3688303, 1373316, -9097278, 647466, 10098542, -7042673, 7517267, +-3369402, 571768, 16824460, -2931852, 434865, -353261, -5054640, 8658117, 3650185, 3718368, +3651796, -2735894, 2340757, 9482214, -2659122, 6455873, -4103841, -719944, 12753905, -52625160, +-122606824, -19586662, 71805944, 65180424, 160488976, 83813600, -43142408, -13246753, -88809720, -150803824, +-10371809, -68522984, -9509594, 109915728, 46970836, 84924392, 130380712, -15144592, -19054086, -66186520, +-112542104, -89491552, -5730023, -33614024, -12705050, 93552440, 29700236, 60861296, 110603464, 18134962, +-413391, 11467563, -67214088, -101802000, 17530982, -105197168, -68800008, 23377506, -10547366, 17128330, +135453600, 15562277, 51946020, 110599168, -22000434, 3456375, 24684788, -106575856, -88871464, -31478352, +-121298464, -46964392, 15484431, 22470732, 83584360, 117725056, 83919368, 59248536, 51615844, -19576460, +-71051104, -58331560, -87848184, -92284888, -39557184, -23360328, 630286, 77509664, 92438432, 28973312, +72234904, 21104932, -22857816, 15239081, -50332184, -69939248, -13689135, -32464584, -21749714, 39495444, +-1460289, 27559194, 49070540, -13415867, -1079647, 52076, -24839944, -7596187, -1713692, -18570902, +20781200, 7590818, -4843113, 34013992, 10826539, -4804458, 32625646, -11399380, -34973380, 758062, +-53425100, -37321656, 11537356, -35474820, 7592429, 41255844, 30258044, 56211996, 61210800, 22373022, +21633750, -2493229, -50493248, -70471824, -72613400, -75746584, -48209936, -3548180, 24310588, 52456048, +90927144, 97675608, 80999328, 63506996, -3823058, -59535228, -85520312, -109204376, -111530640, -59366112, +-17980880, 46760384, 98652176, 89492624, 53832584, 40014600, 11560441, -8215199, -13448079, -39270496, +-45605036, -34097744, -28732258, -20415590, -4365298, 4234838, 16190416, 24474872, 24661166, 23924578, +20991116, 9780714, -1379758, -7547332, -7346005, -5318780, -2968896, -2348810, }, }, { { -4409321, -4645544, 1169842, -2513093, -1113470, -5609228, -1494112, 4714264, -2479270, -1804423, 1459215, --723702, -166967, 308164, -1490891, -1195075, 5713917, 2785823, -683974, 290984, -838056, --1690607, 796180, 2050847, 3149285, -788663, 1211181, 1461900, -5037997, -1535451, 1074, --989453, 3107946, 294742, -1051730, 2800319, -2114735, 955093, 4337380, -2386928, 285615, -592169, 3295314, -1253057, 4540854, -6410776, -2333778, 2807298, -1263794, -5432060, 399432, -1105417, 1821603, 1874216, -580357, -2334315, 209917, -2117419, -1439351, 644245, 2703145, -2491081, -3621194, 3202435, -3963718, 3555696, 209380, 3118146, -1204738, -2568927, -1134408, -2098092, -397821, -522912, -623844, 2902861, -3117073, 1610613, 768262, 783832, 995359, -2321967, 745177, -1489817, -1682017, -930397, 1265405, -272730, -1234266, 238371, -1490891, --330176, -102005, -1525787, -607738, -860067, 202937, 821413, -1028108, -740882, 427886, --211527, -1471563, -15569, 804233, -573915, -73014, 300111, -135828, 576599, 420907, -41876, -1111860, -373662, 41876, -505732, 30602, -124554, -779000, 436476, -1320703, --15288473, 5019743, -5557151, -2214056, -4549981, -4671851, 2656437, -1557999, -3944928, -2119566, -5366562, 7975755, -4361540, -1623498, -387084, -5743982, -5397164, 404801, -545461, 3509525, -1182727, 2614025, -2302103, -1441498, -2982855, 840740, 5148055, 2234994, 1001264, -3318936, -2517388, 761283, 1540820, -2166274, 192200, 760746, 1156957, -2943663, -2152852, 805843, --4063576, -4154307, 1782948, 3151432, -3542274, -1782411, -1365263, 255014, 3141769, 2532957, -1096290, 477815, 8125005, 3190624, -2565706, 3163780, 2253784, -2257542, 3838627, -1430224, --962610, -21475, -1673427, 3411278, -1920387, 896038, 2056216, 1647657, -3036005, 1196148, -566936, 614717, -1061931, -1505386, -632434, 4765266, 317291, -1412507, -1021665, 1124745, --4287988, 830539, 2553358, -165893, 1653026, -944356, -1545115, 1036161, 944356, -399969, -1606855, 827855, -458488, 1140314, 1194001, 1996623, 259846, 6979, -141197, -600759, --849330, -85899, -152471, -531502, 587874, -188979, 1990181, 11633456, 4636417, -812286, -525060, 2665027, 1391569, -788663, -5030481, 161061, 4458713, -4577899, -513785, -8590471, -2252174, 3496640, 230854, -2047626, 6276558, 4413079, -4049081, 1954210, 235149, -3549791, -5600638, 3087545, -367757, 2261300, 5336497, -1656784, -1105954, 355409, 28991, 126165, -1279363, 6554657, 1317481, 977105, -10602664, -562104, 479963, 1264868, -4799626, 1108638, --3871913, -2971581, -4095251, -2675765, 21475, 1229434, -2503429, 2498060, -6092948, -3499862, --374736, -82678, 1950452, -2442226, -571231, -2211908, 1319629, 3296388, -1997697, 352187, --1729798, -316217, 5110474, 4003447, -1618129, 3751654, -1801739, -3202435, -4001299, -302258, --374199, -2698850, 2434173, -430570, 692564, -301185, -891206, 180926, -577136, -2188286, --141197, -3485903, 391379, -1717987, -1123134, -2928631, 3393024, -1043140, 1155346, 2317672, -917512, -1183264, -275952, -1328219, -98784, 583042, -1306744, 1346472, -111669, 146029, -192737, -481036, 790811, 458488, 248034, 99321, 1918240, 921271, -619549, -1308891, --1193464, 1159104, 1560684, -5906, 397284, 18367428, -7986492, 1513976, -667331, -3384434, -2921652, 5151277, -3338263, 5537824, -299574, 5906654, 1641214, 2087354, -2539400, 3349538, -1298691, 3430068, -7220377, 3874061, -4267050, 1340567, -3583077, 4536559, -1232119, 4569845, --2678449, 1684164, -1753420, -392990, -195958, -457414, 1801202, 9492951, 426276, 2789581, --2619930, -4395899, 192737, 88584, 193274, 1447941, -3041374, 6228240, -387621, 5221607, -371515, -2253247, -2845953, -7824894, 3854733, 2553895, -3651796, 411780, 3146601, 1670742, --9108552, 5449240, -297427, 3875134, -5466420, -5893232, -2851322, -5740224, -1043140, 6642704, -1392643, -2540473, 408559, 3759170, -1250909, -3010772, -1553168, -3376918, 2433636, -5121749, --889058, -3928821, -1488206, -14496, 4423817, 2076617, 499827, 1380295, 5551245, 2913062, -695248, 2028298, -1545651, -612033, 389768, 106300, 905164, 467078, -933082, 546535, -1974611, -130997, 444529, 733366, -920197, -1272921, 1249299, -1523640, 1841467, 1079647, -1708860, 45634, -617938, 1039919, 1693291, 441845, -665183, 550830, 4801237, -11261404, -2295123, -3550864, -10289668, -7931194, 4216048, 4702453, 6188511, -3063386, -1592359, 4260608, -2035815, 6367289, 2073396, -710280, 651224, 4064113, 7918309, -2027225, 2308008, -96637, -6416145, 1476395, -392453, -1286343, -4896263, -7444252, 80531, -1069984, 2237678, -420907, -1752884, 1305133, 454193, 478352, 1482301, -2541010, 285078, 3541201, 5538361, -2709051, -658204, -2387465, -3182034, 4576825, -3511673, -8744017, -3438658, -2238752, 4202089, 352187, -4636417, 4240207, -2246268, 188442, -3628711, -503585, -1557999, 5430986, -6838125, -196495, -2304787, -7240241, -8150774, 127238, 2518998, 5163625, -3598646, -8621073, 4501663, -7954280, -9303436, 5259188, 1531693, 3968013, -93416, -3828427, 11826192, -1073742, 5724118, -216359, -8272644, 5689758, 3024731, -840203, -1612223, -2772402, -1021665, 1253594, 300648, 2289218, --2338073, 1428077, -1241782, -843424, -877784, -952409, 1123671, -591095, -19327, -1748052, --79457, 1087164, 1996086, -1999844, -2450279, 351650, 1086090, -10201, 1305670, -725850, -154619, -953483, -308701, 683437, 1234266, 1519345, 906775, -1183800, -24921548, 5126044, -1252520, -12519830, -15799037, -2546916, -12199318, 9904195, 2830384, -7357279, 451508, -3427921, -1094143, -5025649, 634581, -294205, 49929, 6979859, -2505577, -1636383, -2922725, -2578054, --6598681, -4424890, 6602976, -2736968, 4172024, -3688303, 1800128, 104690, 3768297, -3850975, -2851858, -3868155, 1675574, -1483911, -2420214, 2386391, -6170258, 2362232, -3146064, -1132261, --4487704, 10817412, 5142150, 9484362, -4054449, 3998078, 3211562, -1887101, 1679869, -4496294, -4759361, 10401874, 8217346, -5731097, -1542967, 2436320, -4155918, -2787434, -7270306, -13591961, --4617627, 6969658, 2500208, -3353833, 1372779, 715649, -3709778, -6455336, -6522445, 4634807, -534723, -9989020, 1058173, 966905, -493384, -744640, 3311420, 7247221, -740882, -4832, -1012002, -3758, -1906429, -6601902, 2185602, 2230162, 1358283, 3090229, 1868311, -2822331, -728534, -1775432, 368830, -1500554, -606664, -1660542, 42950, 379031, -199716, -1200443, --1170916, -349503, 515396, -33823, 2428804, 873489, 2267206, 2458332, 2656974, -3177202, --3230352, -1205812, 2440615, -823560, 896574, -945967, 1348620, 1418950, 913754, -1545115, --874026, -9754408, -4061429, -2529736, 7379291, -1940252, 1758789, -7597261, -7928510, 406411, -2311229, -4633196, -2652142, -4345970, 9042517, 2008434, -3016141, -6573448, -6491843, -6340446, --1756642, 3076270, 9083319, 2965138, 5138929, -4049081, 9672803, 5541045, 1792075, 134755, -9948218, -5777805, 961536, 3173981, 6740415, -10850698, -5519033, 4777078, 1932198, -1470489, -11361799, -4924717, 3231426, 6874632, 2150705, 1185948, 5022428, 2068564, 2513093, 2584497, -1111860, 2973191, -139050, 4362613, -973884, 10638634, -7676181, 8763344, 6959995, -5994701, -6892886, 1312649, 5863167, 5947456, -12927315, -297427, -490700, -3855270, 2100776, -3472481, -3620121, -1423782, 8289287, -852014, 1324997, 3436511, 2348273, 3328600, -5243082, -1717450, --5359046, -4936528, -2837363, 8073465, 1221918, -2500745, 2392297, 2266669, 1043677, -1296006, -857383, -899259, 3182034, 1257889, 1023813, -1469416, 993748, -2950106, -258772, 3564286, -1843078, -505196, 1182190, 1305133, -963146, 1541356, 1009854, 3462281, 1887101, -1824287, --735513, -1054951, 1051730, -2953327, 895501, 13029320, -3384434, -1966558, -3135863, 9292699, -4901632, 1034550, 3574487, -6207302, 13874355, 4626217, -1044214, 5265093, 6726456, -11243688, --709743, 2717104, 1368484, 28991, 9601399, -4549444, -5753109, 13191455, 2035278, -889595, --1258962, 6913824, 574989, -955093, -1241246, -3149285, 3475166, -1937030, 4619238, 3257196, --8234526, -7808251, 1034013, 15560667, -134755, 3208878, -9523553, 4766877, 6424198, -3921842, -4776004, 5903433, -9656160, -5887327, -1168768, -12396349, -6548752, -7384123, 2233920, -2507187, --2706903, -1328756, 8796093, -11954505, 5348845, 2641405, -3839164, 7355669, -4634807, 737661, --10020696, -177167, 6140730, 5504538, 11514270, -13514651, -3316252, -15008763, -3177739, -275952, --3528853, 1714766, -686121, 13708999, 10671920, 6038187, -6761353, 372588, 2673080, 6691022, -8258149, -168041, 84826, -1150514, 222801, 4684199, -178241, -388695, -140123, 97174, -283468, 579284, 1943473, -1916629, -557809, 1960653, 374736, 1811403, -14496, 206158, --1524177, 2480344, 1576790, 34360, 2376728, -1179505, -99321, 2172180, 632434, -374736, --2646237, -185757, 658204, 386010, -911607, 2777233, 4720169, -861678, -78383, -2116345, -1595580, 8907225, -9888625, 377957, -6040335, 17067664, -7141457, -4081293, 14803679, 11172284, -2113661, -20521890, -4962298, 9516037, 821949, -937377, -2874407, -1569811, -1548336, 1488206, -3243237, 2957085, 2821794, 18278844, -3745748, -2595234, 73551, 2429341, -5374078, 3252364, -1995549, -632434, -5919539, -3711926, 6645388, 7096360, 13408351, 3458523, -5428839, 3418257, --107374, 3463354, 314069, 7449621, -6103686, -9160628, -9421011, 6255620, -2637647, 1341104, -2538863, -3349001, -561030, 15881715, 5478231, -13320841, 9572945, 3077344, 16108275, -8301098, --7793755, 4681515, 8704288, 6006512, 3395709, -1435056, 573378, 4167729, -5156645, -1460289, -241592, 6851010, -4867809, 13722957, -424128, -147640, -7004555, -7936026, 15715822, 4691178, --12769475, -2965138, 10854993, 7518341, 1562294, 2747705, -6465000, 2085207, 1813550, 2142115, -1268626, 2373506, -2931852, -3614752, 563714, -74088, -2936147, -962073, 2880849, 2789045, --3949759, 1102733, 79457, 1794760, 2499134, -634581, -619549, -956167, 1717987, 4848481, --3391951, 2687576, -132070, 153008, -1947231, -440771, -1423782, -993748, 2403571, -762894, --1241246, -3090766, -6979, -1735704, -12320114, -10470057, -4148402, 3668976, 3762928, 18720152, -18159658, -2238752, 1349157, 700080, 9664, -315143, -3912178, -12379169, -9547175, -4967130, -4209605, -3526705, -10814728, -3127810, 1889249, -893890, -16509317, -4911832, 3481608, -1773822, -1404991, 1032403, 4772783, 7109782, 1017907, -5318244, 5163625, 5442261, 3740380, -309238, -7019051, -14445049, 4655208, -12807592, 15695421, -11336566, 4173098, -12021077, -2139431, -13419088, --7209640, -8393440, -9156870, 6087043, -8073465, -1606318, 2616172, -178241, -4384088, -3112778, --1553168, -13117367, 257698, 780610, 6298570, -20432770, 307627, -599148, 9323300, 11348377, --7929047, -4829691, 253940, 8705899, -17016124, 10723996, -7752416, -5071283, 639950, -16445967, --1033477, -1387274, -2752000, -2990371, -2237678, 16369731, 6507949, 3317325, -4131222, -3748970, --4315369, 458488, 3831648, -6635725, -383326, -1199370, -1977296, 826781, 4645544, -1859721, --3323231, 3023657, 1671279, -112743, 3193845, 1799591, 2639258, -1781338, -2430415, 4093104, --3209951, 1025960, -4141959, -784905, -53150, -828392, -1716913, -3489124, -4039417, -4063576, -739808, -244813, -1120450, -2932389, -2995740, -1144072, -1698123, 893353, 3857418, 2967286, --9756018, -25290914, -10154913, -4878009, 4305168, 6730751, -8361228, -3208878, -10496363, -9257802, -4746476, -8142721, 8211978, 3306588, 5869073, -1073742, -8286603, 14220100, 5574868, 7928510, --10334765, 4254165, 1752884, -14981383, 9093520, 5432597, 426276, -10228465, -4028679, 4915053, -5181878, -333934, 1701344, 7132867, -7209640, -5323612, 8375723, -17062294, -16874390, -22086870, --5083094, 6968585, -19452444, -16210280, -9926206, 217970, 6789270, 2109903, 1799591, 228707, --5747203, -7807714, -18391586, 9513889, 2547989, 21988622, -5454609, 474057, -13852880, -16465831, -1903744, 10459856, 550293, -10428717, 6633040, 2654827, 14882062, 1372779, 1710471, -7397545, --1571421, 6280853, -14966887, -27712202, -7888245, -6999186, 1296006, 7153268, -13416404, -6795175, -4117263, -4720169, -1270774, 4220342, -2755759, -2315524, 5480915, 1306744, -716186, 2710661, -4207994, 4842039, 733366, -3390877, -8990440, -885300, -5571110, 1374926, 755377, 1047972, -3419331, -3216394, 3085934, 4457639, 2801929, 2498060, 2310156, -6565395, -6189048, -2311229, --5366025, 521839, 1228361, 1680406, 5859946, -1473711, 3635153, 2345052, -2811593, -1360968, --3985193, -5073430, -1625645, -6672232, -2418067, -1515050, -23607824, -18145700, -8351027, 12451110, --1092532, 21324512, 4210679, -1857573, -11978664, 4250944, 21978958, -23024246, -20717848, -6860137, --3445101, -14448807, 13673565, 3985193, 7410429, 8827768, -14452028, -1746978, 5805722, -9137006, -17059074, 217970, 3844533, -4999879, 4219806, -11307575, -6416681, -3915400, 6427419, 3000035, -10383083, -17040282, 1540283, -182536, -12641699, 13769128, -8243116, -20274930, 4020626, 7223598, -1497333, -6103686, -1439888, -8487929, 1420560, 6817187, 2962454, -13893682, 5448166, -3227131, --15312632, -9154186, -18818936, 335007, -2894808, -589484, 2491081, 11478837, 14426795, 11866995, --6069863, -10531797, 3502009, -2757369, -1702955, -8171176, 15021111, 12255689, -2594697, 22865332, --14593225, 7544647, 14559402, 15479599, 493384, 9793599, -6345278, -2660732, -12785044, -5575942, -7775502, -2754685, -9934259, 6110665, -5651640, 6424198, -2837363, -6984691, 3670050, -1504312, --3811784, -3133179, 2728915, -3481608, 2398739, 4475356, -4751308, 6122476, -649077, -3578245, -2467996, 591095, 537945, -3008088, 3809099, -5754183, 2049773, 1928440, 385473, -3904662, --234613, -2392834, 3003793, 5013301, 11426760, 5523865, 9168681, -644245, 102542, 4431870, --5545877, 1352378, -7587597, -3360275, 8602819, -20468204, 2574296, 220654, -12945568, 1864016, --28779502, -24899000, -5970005, -240518, 1058710, -649077, -10239739, -382252, -2937221, 9176198, -1783485, -605054, 1715303, -21757230, 7501698, 4028143, 12051678, 4978404, 5214627, 14142254, -7047505, 2022930, 35442072, 7554311, 13630079, 18781892, 870268, 13236552, 3315178, -7400229, -8605504, 577136, 4138738, -7250442, 529892, -4717485, 2998424, -4704063, 9964324, 1163399, --6212670, -7793218, 1059783, -21077016, 12220793, 8208756, -1079647, -1948305, 4799089, -5636608, --4647155, -6948184, -8339216, 6906845, -6653978, 11442867, 13366475, 13054553, 13932874, -3287798, --21129628, 284005, 8909910, 21248814, -4948876, -841814, 10086731, 14820858, 21915608, -2902861, -9651328, -6549825, -3766686, -17678086, -13743358, -6070400, -6241125, -5099200, 3670587, 693100, --7561290, 8483634, 5391795, 6648610, 12048457, 4747550, 4511327, -1518271, 6979, -1866163, --3458523, 17717, 2167348, -77309, 6353867, 4992363, 3101503, -457414, -5226439, 205085, --3757023, -4254165, 2644626, 3120831, 956704, -6612102, -1475858, -9569724, -2315524, 2967286, -4669167, -3154654, 3877819, -5535676, -6302865, -3316789, -3809099, 3354370, 1797444, -5680094, --3825742, 17408040, 22578644, -16698833, -17476758, -23106924, 20958366, -2110977, -8340827, 7339026, -7110319, 19632296, 16386374, 1173600, 17959406, 25475598, 7348689, -12779138, 12293807, -11814918, --6535867, -2331094, -8200167, -9891847, 5374615, -4915053, -4810364, -11962021, 27759984, 3612068, --14500883, 162672, -1804423, 12523588, 13251585, 5326297, -8400956, 13350906, -3379603, 8310762, --25031606, 1504849, 10693395, -10643466, 3833795, -11580306, -9382356, 26239566, 11033771, 8046621, --1606318, -22891638, -5392332, 6873022, 5191542, 3928285, -5254356, 18560164, -12691628, 10400800, --5845988, 6947110, 7661685, 14747844, 19885162, -22638236, -373662, 11939472, 5927592, 16702054, -16224776, -22571126, 287763, -6101538, -11577084, -539018, -12117176, 5281199, 9679246, -4399121, -17352742, -3653407, -10008884, -12219719, 10887742, 12443057, 12406550, -3147137, 2347200, -505732, --17455284, -16906066, -15823733, 10136660, 5220533, 3372623, 8206609, -335007, -4249334, 12269648, -1877975, 117038, 7613367, 11893301, 7297150, 1078574, 1498944, -3271691, 7326141, 3740380, -15179488, -1214402, 2025077, 10711112, 8744017, 3124589, -1278290, 6919193, -3758, -1201517, -12032351, -9279277, 717260, 7493108, 789737, -1994476, -3350611, -1609539, 187368, 8083666, -1697049, 770947, 8898635, 6541772, -5385889, 17271674, 34621196, 1280437, -16852378, 4491999, --11338714, 6994891, -9881109, -10639171, 31417686, -24217174, 39500816, 24108188, -6055904, 7795903, -18992882, 2576444, -30118458, 11553462, -24422794, 5568962, 1984812, -12176769, 343061, -1834488, -17151416, -8866960, -1030255, -870805, -5427765, 36383740, -2255395, -5704791, 4565550, 12115566, --12614856, -26539140, 20637318, -3535295, -1726040, 23473070, -14061723, -4067871, -16712791, 4220342, --11715060, 13159780, 12217034, 24988120, -7341173, 6825240, 16729434, -24120536, 2823404, -15451682, --24152748, -30967788, -16271484, -33467458, -37478420, -5460514, 2330557, -17825188, -19016504, 11491185, --1408212, -10855530, -20485920, 14487998, -10975252, 3592740, 18447958, -35144108, -10135586, -6659884, -15433428, 41492604, -19805704, 964220, -12586939, -18776524, 8938901, -22422950, 17820894, 30852898, --8907762, -14796699, -15436112, -4153770, -3707631, 31139, 10078141, 7153805, -8207146, 7967165, --1039382, 6205691, 373662, -7829726, -2144263, 8833674, -15115601, 6818261, -7908646, 1794760, --6430103, -2777770, -9076877, 1774895, -8716636, -13908178, -6501507, 2911988, -10047002, -335007, -3107946, 14602352, -8551280, -5355824, 4982162, 5821292, -10687489, -7051800, 3161096, -3263102, --5638219, 10072772, 1942936, -8488466, 7402376, 1711545, -12443057, 2116345, -10230075, 11168526, --5106179, -16229071, -23997056, -18205292, 20045686, -16488379, 8060043, 19100794, 8115341, 12255689, --22893786, 32797444, 20583094, 17875654, -13278965, 23500988, -2655901, 15534360, 10145250, 3435974, -8400419, 11400454, 6870874, -3855807, -5943161, -5255966, 2277407, -15830713, -18749142, 10481331, -4533338, 6080600, -15446850, 4171487, 4561792, 11482058, 17013440, 25756918, -14670535, 3894462, -36531380, 7901666, 3804804, 3541201, -7686381, 2689723, 36361728, 10588705, 23499914, 6740415, --25441776, -10535018, -18571976, 52997748, 21376052, -20480552, -12992276, -18265422, 2921652, -11984569, --28969018, 6617471, -21987012, 32454384, -2462627, -26859114, 35174708, 28676960, 3896609, -7791608, -4636417, -16345572, 21575768, 38924752, -10626286, 18463528, 43301324, -6846715, -7307350, -4952634, -26264798, -1920924, -14866492, -13732084, -14215268, -229781, -1976222, -12167642, 708670, -5098663, -13084081, 3335042, -13120588, -8084739, -14914274, -1580548, 1694365, -2371359, -10554882, -11412265, --8446053, 7168301, 11713450, 1893544, -12896713, -1815697, 15597174, 133681, 14251238, 7698192, --8584566, -725313, -13125420, 12506408, 5173288, -16387985, -31295816, 2844342, -2441152, -9350144, -9678709, -74088, -5866926, -4391067, 2665564, 842350, -1742146, -25120190, 9963787, -3449396, -24899000, -52100100, -35747012, 20605106, 9856950, 7452842, 17495550, -17781164, -23175106, -12764643, --19088446, 10777147, -20480552, 5966247, 13591424, 22327388, 737661, 18710488, 10897406, 3070365, --5974837, -19588272, -13820668, 11402601, -23949274, 12181601, 2814277, 20388746, 15560130, -7638063, --29806536, -19386408, -1803886, -1498944, -7883413, 20390894, -36029944, -2803540, 1257889, -37740416, --730144, -4657892, -3010772, 4027069, 22091164, -21537114, -59304372, 22126598, 24169928, 14394046, -46261628, -38096360, -4885526, 25685516, 19663434, -23917062, -11101954, -6608881, 36442796, 7157026, -34786552, -50331112, 7348152, -60038276, -35940824, -34813396, 41266044, 13054016, -26603564, 24202678, -2842195, -23365158, 23756538, -34943852, -36643588, 5457293, -38056096, 11274826, -65016140, 9907416, -20539070, -27724550, 30476014, -13836774, -7323993, 20340966, -7008313, -5623723, -14485851, -1089311, -4820564, 11204496, -1313186, 10409927, 20540144, -15468325, -1657857, -12307766, 7335268, -8053601, --2095407, 4436701, 2563559, 2707977, -2661806, 21087752, -6965363, 1665374, 9089761, -18697604, --16359530, -18158048, -8380555, -30549566, -13948980, -11202885, 26337276, 5151277, 23450522, 10020696, -4792110, 10575283, 7481296, 901943, 8927090, 1828582, 18282602, 44980120, 16646219, -16108275, --10515154, 6208912, -11420318, -13401372, -1590212, 20929376, -3628711, 3911642, -22243636, -4602058, -30741766, -22428856, 17009682, 40137544, 20080582, -1706713, -7650411, -13201656, -25658672, -18879066, -22130356, -12606266, 20767778, 14955076, 7136625, 974421, 8117488, -6406481, -32631014, -11331734, -23374822, 18503792, 19432042, -20663088, 35665408, -9185861, 13882945, -26358752, 24157580, 41525356, --8331163, -14808510, -1504312, 1509144, -9205726, 9059697, 18199388, -34099356, 22405234, 21680458, --5277978, 25134686, 13372918, 10831371, -15917686, 3268470, 22546430, -47553340, -42282880, -17661980, -11257646, -21911850, -64287608, 26923540, 17700098, -8383240, -10868952, 449361, -3725884, -22079890, --59044528, -3620121, 42016056, 10139881, -7412577, -5069672, 9118752, 34315180, 27427124, -40395780, --16588774, 26859652, -5641977, -10878615, -46061376, -2754148, 25361782, 8339753, -7041599, 15528991, --5738077, 1577864, -17310866, -2925947, 10633265, 15792595, -8952859, -3342558, 3330747, 9096741, --5617281, 5567888, 821413, -11356967, 6841883, 19211388, 3389803, 5674726, 3676492, 8623757, --9016210, -16028818, 1625108, 17147656, -14049912, 6099391, -4698694, 1453846, -13625784, -26483306, --14281840, 9738301, 32196148, -3372623, 15247134, -21363704, -9276056, -14473503, 8964670, 6155225, -10207527, -7346005, -10937671, -865973, 2374580, -1056562, 21913996, 29035052, 683974, -32659468, -43335148, -12127914, -30188788, 27120034, -4312147, -16409459, 20970714, 5637682, -4343823, 17692580, --24173150, 22996866, -8167417, 804770, -7002408, -5981279, -33714420, 13398150, -12846247, 5349919, --13493177, -1084479, -10049687, 9696426, -5872294, 36509368, 6484327, 23895050, -9247065, 5997922, -15123117, -6376416, 10463614, -2038499, 18258442, -887448, -6086506, 28834800, -25703768, 14389214, -19723564, -11528766, 22318798, -13615583, -520228, 11489574, -8684424, 26217554, 23488102, 4900558, -39064340, -24031416, -55079196, -9253507, -34044060, -22524420, 80519360, -2028835, 24725052, -3736622, --33938296, -854699, 33845416, 47907140, 29145648, 48257180, -25920664, -7744363, -11599633, -27524834, -18291192, -7715909, -16973710, -1758789, -33401424, -61081416, 15404437, 21524766, -18058726, 12191802, --3780645, -18212272, 19477140, 14341433, -7100118, 20055886, -7344931, -17882634, 9213779, -8873939, -23786066, 2247342, 1794223, 13437342, 4495757, -15131170, -6334003, 7803419, -4971962, 14804752, --20622822, 13326747, -21625160, -5501853, 5406290, -15348066, 9810779, 627065, -23043574, -3725884, -1493575, -6180995, -53150, -4298726, -16909824, 6935299, 5073967, -2681670, 16981764, 26045218, --14192183, -20293184, -1303523, -9671729, 28159416, 28940026, -17054778, -10782515, 24560234, -25841208, -31070868, -18720152, 4296041, -38118, 3242700, -23838142, -3670587, -21558588, -17835926, 87510, --7019051, -16256988, -6475200, 11965779, -13882408, 11029476, -6547678, 33411624, -15441481, 10000294, -2047089, -8271034, -26783952, -9804337, 20442434, 3719442, -6659347, 26798448, -19782620, -19965692, --2704219, 25591562, -23225036, -3220689, 4582730, 6966974, -25869124, 7823820, 9013526, -9226127, --27052926, 517544, -21003464, 8938901, 4800700, 8096014, -41362684, -17656610, 23620710, 63696512, --28806882, -3949223, 5145908, -10713259, -17961554, -320512, 53201760, 12291123, -5404680, -4638028, --14042932, -3230352, -10750303, 20668994, 1098438, -13131863, -14128832, 781147, 9556839, -21166136, -16577500, 4951024, 18071074, 765578, 22979686, 9694815, -15984258, 21609054, 20599200, 50972672, -16237124, 4003983, 5281199, -18542984, 6252936, 16714939, 17256104, 6007049, -1155883, 723165, --2025614, 6489696, 7221988, -1617055, 9317395, -2314987, -894964, 17666274, 7531762, 3102577, --5203890, 5290326, 13378286, 14099304, 16167868, 5932961, 5977521, -8937827, -1074, -433792, -3018825, 9197136, -304406, -7115687, 8336532, -7459822, 6950331, -232465, 8189966, 1319092, --6585259, -1743757, 623844, 1967095, 4119411, -856846, 2975876, 2301566, -20401, -40421012, -53762252, 7452305, 12267500, 12923557, -12372190, -14274324, 552440, -5484137, 7679402, 17725330, --24817932, 8253854, -5202816, 6487011, 6089190, 4234301, 14206141, 11108396, -10557566, 9988483, -8705362, -8578123, -14800457, 4558034, -5224291, -12291123, 7417409, 6074158, -997506, -8030515, -272730, -5849746, -2806761, 585726, 3246459, 5670968, -11054709, -1635309, 8937827, -3955128, -8027294, 1539209, 5805722, 11681774, 3502546, -11908334, 1298691, 11145440, -6270116, -576063, -5450314, -18940268, -1097364, -4680441, -17606144, 24427090, -6156836, -1018444, 14551886, 2486786, --10842108, 4301947, -10358924, -2104534, 8123931, -9767293, -3470334, 18054432, -19114216, 2046015, -1788854, 6558952, -8456791, 5804649, -2858838, 5408975, -7243463, 333934, -1698660, 18183818, --8230768, -827855, 4816269, -9199283, -810675, 12584254, -2582886, 8108362, -5464809, -5229123, -1019518, 4869419, -4716948, 9277666, 19327, -2048699, -1934883, -2949569, -2835215, 7909719, --6660958, 7741679, 4337917, -10218801, 2552284, -1052804, -770410, 5992553, -8392366, -3432753, -1348083, -5681705, 6002754, -5844377, -743029, 9589588, 1843078, -1820529, 4497368, -4849555, --3719979, -2364380, 4795331, 7993471, -2345052, -2331094, 1008244, 12678207, -53141092, -108196128, --13875966, 68014032, 52310556, 150069376, 72237056, -34910032, -30489972, -71061848, -124499288, -15686831, --48227116, -14926085, 88015152, 56127708, 59914792, 114534432, -3943854, -25276956, -43110736, -113146616, --62423056, -20043002, -20966956, 3214246, 51605104, 39977020, 42436960, 79962088, 46821584, -29311004, -42665668, -44688596, -104346232, 13426605, -70007432, -97436168, 38101728, -8307004, -17994302, 119955752, -39348344, 31936840, 103408856, -11025718, -20253456, 31518618, -69177424, -85980416, -23068806, -73613056, --65775812, 14023068, 14348412, 29837138, 90232968, 79915384, 48446696, 57337812, 11153493, -45105208, --48569636, -60146724, -82680264, -38579544, -20929376, -28058484, 25088514, 79808544, 52138220, 51483236, -42349988, -29742648, -248034, 8473970, -68223408, -28097140, -17042430, -19937238, 31403190, 16087874, --3851512, 25670482, -5867999, -5274757, 4455492, -18371186, -13819594, 9151502, -11340861, 18617610, -23424214, -8651675, 12737262, 23848342, -13800804, 15639050, 7873749, -46439872, 8305393, -15043660, --50401440, 828392, -28751048, -25751550, 36792836, 39786428, 38449620, 71159552, 22749904, 22677964, -24196236, -31077310, -62017180, -69293392, -88681408, -66090956, -19865834, 11611444, 53906136, 89234928, -98915248, 77219216, 56332256, 11134703, -52264384, -78809432, -96182032, -89429272, -46296528, -2950106, -25303262, 64063732, 59192164, 32273994, 32499480, 12581033, -866510, -256087, -9987946, -19697256, --16267189, -20473036, -24694988, -18291728, -13554380, -3812320, 6594923, 16110422, 19504520, 20598664, -16960288, 9419400, 2436857, -2137820, -2969970, -1813550, -957778, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +4645544, 1169842, -2513093, -1113470, -5609228, -1494112, 4714264, -2479270, -1804423, 1459215, +-723702, -166967, 308164, -1490891, -1195075, 5713917, 2785823, -683974, 290984, -838056, +-1690607, 796180, 2050847, 3149285, -788663, 1211181, 1461900, -5037997, -1535451, 1074, +-989453, 3107946, 294742, -1051730, 2800319, -2114735, 955093, 4337380, -2386928, 285615, +592169, 3295314, -1253057, 4540854, -6410776, -2333778, 2807298, -1263794, -5432060, 399432, +1105417, 1821603, 1874216, -580357, -2334315, 209917, -2117419, -1439351, 644245, 2703145, +2491081, -3621194, 3202435, -3963718, 3555696, 209380, 3118146, -1204738, -2568927, -1134408, +2098092, -397821, -522912, -623844, 2902861, -3117073, 1610613, 768262, 783832, 995359, +2321967, 745177, -1489817, -1682017, -930397, 1265405, -272730, -1234266, 238371, -1490891, +-330176, -102005, -1525787, -607738, -860067, 202937, 821413, -1028108, -740882, 427886, +-211527, -1471563, -15569, 804233, -573915, -73014, 300111, -135828, 576599, 420907, +41876, -1111860, -373662, 41876, -505732, 30602, -124554, -779000, 436476, -1320703, +-15288473, 5019743, -5557151, -2214056, -4549981, -4671851, 2656437, -1557999, -3944928, -2119566, +5366562, 7975755, -4361540, -1623498, -387084, -5743982, -5397164, 404801, -545461, 3509525, +1182727, 2614025, -2302103, -1441498, -2982855, 840740, 5148055, 2234994, 1001264, -3318936, +2517388, 761283, 1540820, -2166274, 192200, 760746, 1156957, -2943663, -2152852, 805843, +-4063576, -4154307, 1782948, 3151432, -3542274, -1782411, -1365263, 255014, 3141769, 2532957, +1096290, 477815, 8125005, 3190624, -2565706, 3163780, 2253784, -2257542, 3838627, -1430224, +-962610, -21475, -1673427, 3411278, -1920387, 896038, 2056216, 1647657, -3036005, 1196148, +566936, 614717, -1061931, -1505386, -632434, 4765266, 317291, -1412507, -1021665, 1124745, +-4287988, 830539, 2553358, -165893, 1653026, -944356, -1545115, 1036161, 944356, -399969, +1606855, 827855, -458488, 1140314, 1194001, 1996623, 259846, 6979, -141197, -600759, +-849330, -85899, -152471, -531502, 587874, -188979, 1990181, 11633456, 4636417, -812286, +525060, 2665027, 1391569, -788663, -5030481, 161061, 4458713, -4577899, -513785, -8590471, +2252174, 3496640, 230854, -2047626, 6276558, 4413079, -4049081, 1954210, 235149, -3549791, +5600638, 3087545, -367757, 2261300, 5336497, -1656784, -1105954, 355409, 28991, 126165, +1279363, 6554657, 1317481, 977105, -10602664, -562104, 479963, 1264868, -4799626, 1108638, +-3871913, -2971581, -4095251, -2675765, 21475, 1229434, -2503429, 2498060, -6092948, -3499862, +-374736, -82678, 1950452, -2442226, -571231, -2211908, 1319629, 3296388, -1997697, 352187, +-1729798, -316217, 5110474, 4003447, -1618129, 3751654, -1801739, -3202435, -4001299, -302258, +-374199, -2698850, 2434173, -430570, 692564, -301185, -891206, 180926, -577136, -2188286, +-141197, -3485903, 391379, -1717987, -1123134, -2928631, 3393024, -1043140, 1155346, 2317672, +917512, -1183264, -275952, -1328219, -98784, 583042, -1306744, 1346472, -111669, 146029, +192737, -481036, 790811, 458488, 248034, 99321, 1918240, 921271, -619549, -1308891, +-1193464, 1159104, 1560684, -5906, 397284, 18367428, -7986492, 1513976, -667331, -3384434, +2921652, 5151277, -3338263, 5537824, -299574, 5906654, 1641214, 2087354, -2539400, 3349538, +1298691, 3430068, -7220377, 3874061, -4267050, 1340567, -3583077, 4536559, -1232119, 4569845, +-2678449, 1684164, -1753420, -392990, -195958, -457414, 1801202, 9492951, 426276, 2789581, +-2619930, -4395899, 192737, 88584, 193274, 1447941, -3041374, 6228240, -387621, 5221607, +371515, -2253247, -2845953, -7824894, 3854733, 2553895, -3651796, 411780, 3146601, 1670742, +-9108552, 5449240, -297427, 3875134, -5466420, -5893232, -2851322, -5740224, -1043140, 6642704, +1392643, -2540473, 408559, 3759170, -1250909, -3010772, -1553168, -3376918, 2433636, -5121749, +-889058, -3928821, -1488206, -14496, 4423817, 2076617, 499827, 1380295, 5551245, 2913062, +695248, 2028298, -1545651, -612033, 389768, 106300, 905164, 467078, -933082, 546535, +1974611, -130997, 444529, 733366, -920197, -1272921, 1249299, -1523640, 1841467, 1079647, +1708860, 45634, -617938, 1039919, 1693291, 441845, -665183, 550830, 4801237, -11261404, +2295123, -3550864, -10289668, -7931194, 4216048, 4702453, 6188511, -3063386, -1592359, 4260608, +2035815, 6367289, 2073396, -710280, 651224, 4064113, 7918309, -2027225, 2308008, -96637, +6416145, 1476395, -392453, -1286343, -4896263, -7444252, 80531, -1069984, 2237678, -420907, +1752884, 1305133, 454193, 478352, 1482301, -2541010, 285078, 3541201, 5538361, -2709051, +658204, -2387465, -3182034, 4576825, -3511673, -8744017, -3438658, -2238752, 4202089, 352187, +4636417, 4240207, -2246268, 188442, -3628711, -503585, -1557999, 5430986, -6838125, -196495, +2304787, -7240241, -8150774, 127238, 2518998, 5163625, -3598646, -8621073, 4501663, -7954280, +9303436, 5259188, 1531693, 3968013, -93416, -3828427, 11826192, -1073742, 5724118, -216359, +8272644, 5689758, 3024731, -840203, -1612223, -2772402, -1021665, 1253594, 300648, 2289218, +-2338073, 1428077, -1241782, -843424, -877784, -952409, 1123671, -591095, -19327, -1748052, +-79457, 1087164, 1996086, -1999844, -2450279, 351650, 1086090, -10201, 1305670, -725850, +154619, -953483, -308701, 683437, 1234266, 1519345, 906775, -1183800, -24921548, 5126044, +1252520, -12519830, -15799037, -2546916, -12199318, 9904195, 2830384, -7357279, 451508, -3427921, +1094143, -5025649, 634581, -294205, 49929, 6979859, -2505577, -1636383, -2922725, -2578054, +-6598681, -4424890, 6602976, -2736968, 4172024, -3688303, 1800128, 104690, 3768297, -3850975, +2851858, -3868155, 1675574, -1483911, -2420214, 2386391, -6170258, 2362232, -3146064, -1132261, +-4487704, 10817412, 5142150, 9484362, -4054449, 3998078, 3211562, -1887101, 1679869, -4496294, +4759361, 10401874, 8217346, -5731097, -1542967, 2436320, -4155918, -2787434, -7270306, -13591961, +-4617627, 6969658, 2500208, -3353833, 1372779, 715649, -3709778, -6455336, -6522445, 4634807, +534723, -9989020, 1058173, 966905, -493384, -744640, 3311420, 7247221, -740882, -4832, +1012002, -3758, -1906429, -6601902, 2185602, 2230162, 1358283, 3090229, 1868311, -2822331, +728534, -1775432, 368830, -1500554, -606664, -1660542, 42950, 379031, -199716, -1200443, +-1170916, -349503, 515396, -33823, 2428804, 873489, 2267206, 2458332, 2656974, -3177202, +-3230352, -1205812, 2440615, -823560, 896574, -945967, 1348620, 1418950, 913754, -1545115, +-874026, -9754408, -4061429, -2529736, 7379291, -1940252, 1758789, -7597261, -7928510, 406411, +2311229, -4633196, -2652142, -4345970, 9042517, 2008434, -3016141, -6573448, -6491843, -6340446, +-1756642, 3076270, 9083319, 2965138, 5138929, -4049081, 9672803, 5541045, 1792075, 134755, +9948218, -5777805, 961536, 3173981, 6740415, -10850698, -5519033, 4777078, 1932198, -1470489, +11361799, -4924717, 3231426, 6874632, 2150705, 1185948, 5022428, 2068564, 2513093, 2584497, +1111860, 2973191, -139050, 4362613, -973884, 10638634, -7676181, 8763344, 6959995, -5994701, +6892886, 1312649, 5863167, 5947456, -12927315, -297427, -490700, -3855270, 2100776, -3472481, +3620121, -1423782, 8289287, -852014, 1324997, 3436511, 2348273, 3328600, -5243082, -1717450, +-5359046, -4936528, -2837363, 8073465, 1221918, -2500745, 2392297, 2266669, 1043677, -1296006, +857383, -899259, 3182034, 1257889, 1023813, -1469416, 993748, -2950106, -258772, 3564286, +1843078, -505196, 1182190, 1305133, -963146, 1541356, 1009854, 3462281, 1887101, -1824287, +-735513, -1054951, 1051730, -2953327, 895501, 13029320, -3384434, -1966558, -3135863, 9292699, +4901632, 1034550, 3574487, -6207302, 13874355, 4626217, -1044214, 5265093, 6726456, -11243688, +-709743, 2717104, 1368484, 28991, 9601399, -4549444, -5753109, 13191455, 2035278, -889595, +-1258962, 6913824, 574989, -955093, -1241246, -3149285, 3475166, -1937030, 4619238, 3257196, +-8234526, -7808251, 1034013, 15560667, -134755, 3208878, -9523553, 4766877, 6424198, -3921842, +4776004, 5903433, -9656160, -5887327, -1168768, -12396349, -6548752, -7384123, 2233920, -2507187, +-2706903, -1328756, 8796093, -11954505, 5348845, 2641405, -3839164, 7355669, -4634807, 737661, +-10020696, -177167, 6140730, 5504538, 11514270, -13514651, -3316252, -15008763, -3177739, -275952, +-3528853, 1714766, -686121, 13708999, 10671920, 6038187, -6761353, 372588, 2673080, 6691022, +8258149, -168041, 84826, -1150514, 222801, 4684199, -178241, -388695, -140123, 97174, +283468, 579284, 1943473, -1916629, -557809, 1960653, 374736, 1811403, -14496, 206158, +-1524177, 2480344, 1576790, 34360, 2376728, -1179505, -99321, 2172180, 632434, -374736, +-2646237, -185757, 658204, 386010, -911607, 2777233, 4720169, -861678, -78383, -2116345, +1595580, 8907225, -9888625, 377957, -6040335, 17067664, -7141457, -4081293, 14803679, 11172284, +2113661, -20521890, -4962298, 9516037, 821949, -937377, -2874407, -1569811, -1548336, 1488206, +3243237, 2957085, 2821794, 18278844, -3745748, -2595234, 73551, 2429341, -5374078, 3252364, +1995549, -632434, -5919539, -3711926, 6645388, 7096360, 13408351, 3458523, -5428839, 3418257, +-107374, 3463354, 314069, 7449621, -6103686, -9160628, -9421011, 6255620, -2637647, 1341104, +2538863, -3349001, -561030, 15881715, 5478231, -13320841, 9572945, 3077344, 16108275, -8301098, +-7793755, 4681515, 8704288, 6006512, 3395709, -1435056, 573378, 4167729, -5156645, -1460289, +241592, 6851010, -4867809, 13722957, -424128, -147640, -7004555, -7936026, 15715822, 4691178, +-12769475, -2965138, 10854993, 7518341, 1562294, 2747705, -6465000, 2085207, 1813550, 2142115, +1268626, 2373506, -2931852, -3614752, 563714, -74088, -2936147, -962073, 2880849, 2789045, +-3949759, 1102733, 79457, 1794760, 2499134, -634581, -619549, -956167, 1717987, 4848481, +-3391951, 2687576, -132070, 153008, -1947231, -440771, -1423782, -993748, 2403571, -762894, +-1241246, -3090766, -6979, -1735704, -12320114, -10470057, -4148402, 3668976, 3762928, 18720152, +18159658, -2238752, 1349157, 700080, 9664, -315143, -3912178, -12379169, -9547175, -4967130, +4209605, -3526705, -10814728, -3127810, 1889249, -893890, -16509317, -4911832, 3481608, -1773822, +1404991, 1032403, 4772783, 7109782, 1017907, -5318244, 5163625, 5442261, 3740380, -309238, +7019051, -14445049, 4655208, -12807592, 15695421, -11336566, 4173098, -12021077, -2139431, -13419088, +-7209640, -8393440, -9156870, 6087043, -8073465, -1606318, 2616172, -178241, -4384088, -3112778, +-1553168, -13117367, 257698, 780610, 6298570, -20432770, 307627, -599148, 9323300, 11348377, +-7929047, -4829691, 253940, 8705899, -17016124, 10723996, -7752416, -5071283, 639950, -16445967, +-1033477, -1387274, -2752000, -2990371, -2237678, 16369731, 6507949, 3317325, -4131222, -3748970, +-4315369, 458488, 3831648, -6635725, -383326, -1199370, -1977296, 826781, 4645544, -1859721, +-3323231, 3023657, 1671279, -112743, 3193845, 1799591, 2639258, -1781338, -2430415, 4093104, +-3209951, 1025960, -4141959, -784905, -53150, -828392, -1716913, -3489124, -4039417, -4063576, +739808, -244813, -1120450, -2932389, -2995740, -1144072, -1698123, 893353, 3857418, 2967286, +-9756018, -25290914, -10154913, -4878009, 4305168, 6730751, -8361228, -3208878, -10496363, -9257802, +4746476, -8142721, 8211978, 3306588, 5869073, -1073742, -8286603, 14220100, 5574868, 7928510, +-10334765, 4254165, 1752884, -14981383, 9093520, 5432597, 426276, -10228465, -4028679, 4915053, +5181878, -333934, 1701344, 7132867, -7209640, -5323612, 8375723, -17062294, -16874390, -22086870, +-5083094, 6968585, -19452444, -16210280, -9926206, 217970, 6789270, 2109903, 1799591, 228707, +-5747203, -7807714, -18391586, 9513889, 2547989, 21988622, -5454609, 474057, -13852880, -16465831, +1903744, 10459856, 550293, -10428717, 6633040, 2654827, 14882062, 1372779, 1710471, -7397545, +-1571421, 6280853, -14966887, -27712202, -7888245, -6999186, 1296006, 7153268, -13416404, -6795175, +4117263, -4720169, -1270774, 4220342, -2755759, -2315524, 5480915, 1306744, -716186, 2710661, +4207994, 4842039, 733366, -3390877, -8990440, -885300, -5571110, 1374926, 755377, 1047972, +3419331, -3216394, 3085934, 4457639, 2801929, 2498060, 2310156, -6565395, -6189048, -2311229, +-5366025, 521839, 1228361, 1680406, 5859946, -1473711, 3635153, 2345052, -2811593, -1360968, +-3985193, -5073430, -1625645, -6672232, -2418067, -1515050, -23607824, -18145700, -8351027, 12451110, +-1092532, 21324512, 4210679, -1857573, -11978664, 4250944, 21978958, -23024246, -20717848, -6860137, +-3445101, -14448807, 13673565, 3985193, 7410429, 8827768, -14452028, -1746978, 5805722, -9137006, +17059074, 217970, 3844533, -4999879, 4219806, -11307575, -6416681, -3915400, 6427419, 3000035, +10383083, -17040282, 1540283, -182536, -12641699, 13769128, -8243116, -20274930, 4020626, 7223598, +1497333, -6103686, -1439888, -8487929, 1420560, 6817187, 2962454, -13893682, 5448166, -3227131, +-15312632, -9154186, -18818936, 335007, -2894808, -589484, 2491081, 11478837, 14426795, 11866995, +-6069863, -10531797, 3502009, -2757369, -1702955, -8171176, 15021111, 12255689, -2594697, 22865332, +-14593225, 7544647, 14559402, 15479599, 493384, 9793599, -6345278, -2660732, -12785044, -5575942, +7775502, -2754685, -9934259, 6110665, -5651640, 6424198, -2837363, -6984691, 3670050, -1504312, +-3811784, -3133179, 2728915, -3481608, 2398739, 4475356, -4751308, 6122476, -649077, -3578245, +2467996, 591095, 537945, -3008088, 3809099, -5754183, 2049773, 1928440, 385473, -3904662, +-234613, -2392834, 3003793, 5013301, 11426760, 5523865, 9168681, -644245, 102542, 4431870, +-5545877, 1352378, -7587597, -3360275, 8602819, -20468204, 2574296, 220654, -12945568, 1864016, +-28779502, -24899000, -5970005, -240518, 1058710, -649077, -10239739, -382252, -2937221, 9176198, +1783485, -605054, 1715303, -21757230, 7501698, 4028143, 12051678, 4978404, 5214627, 14142254, +7047505, 2022930, 35442072, 7554311, 13630079, 18781892, 870268, 13236552, 3315178, -7400229, +8605504, 577136, 4138738, -7250442, 529892, -4717485, 2998424, -4704063, 9964324, 1163399, +-6212670, -7793218, 1059783, -21077016, 12220793, 8208756, -1079647, -1948305, 4799089, -5636608, +-4647155, -6948184, -8339216, 6906845, -6653978, 11442867, 13366475, 13054553, 13932874, -3287798, +-21129628, 284005, 8909910, 21248814, -4948876, -841814, 10086731, 14820858, 21915608, -2902861, +9651328, -6549825, -3766686, -17678086, -13743358, -6070400, -6241125, -5099200, 3670587, 693100, +-7561290, 8483634, 5391795, 6648610, 12048457, 4747550, 4511327, -1518271, 6979, -1866163, +-3458523, 17717, 2167348, -77309, 6353867, 4992363, 3101503, -457414, -5226439, 205085, +-3757023, -4254165, 2644626, 3120831, 956704, -6612102, -1475858, -9569724, -2315524, 2967286, +4669167, -3154654, 3877819, -5535676, -6302865, -3316789, -3809099, 3354370, 1797444, -5680094, +-3825742, 17408040, 22578644, -16698833, -17476758, -23106924, 20958366, -2110977, -8340827, 7339026, +7110319, 19632296, 16386374, 1173600, 17959406, 25475598, 7348689, -12779138, 12293807, -11814918, +-6535867, -2331094, -8200167, -9891847, 5374615, -4915053, -4810364, -11962021, 27759984, 3612068, +-14500883, 162672, -1804423, 12523588, 13251585, 5326297, -8400956, 13350906, -3379603, 8310762, +-25031606, 1504849, 10693395, -10643466, 3833795, -11580306, -9382356, 26239566, 11033771, 8046621, +-1606318, -22891638, -5392332, 6873022, 5191542, 3928285, -5254356, 18560164, -12691628, 10400800, +-5845988, 6947110, 7661685, 14747844, 19885162, -22638236, -373662, 11939472, 5927592, 16702054, +16224776, -22571126, 287763, -6101538, -11577084, -539018, -12117176, 5281199, 9679246, -4399121, +17352742, -3653407, -10008884, -12219719, 10887742, 12443057, 12406550, -3147137, 2347200, -505732, +-17455284, -16906066, -15823733, 10136660, 5220533, 3372623, 8206609, -335007, -4249334, 12269648, +1877975, 117038, 7613367, 11893301, 7297150, 1078574, 1498944, -3271691, 7326141, 3740380, +15179488, -1214402, 2025077, 10711112, 8744017, 3124589, -1278290, 6919193, -3758, -1201517, +12032351, -9279277, 717260, 7493108, 789737, -1994476, -3350611, -1609539, 187368, 8083666, +1697049, 770947, 8898635, 6541772, -5385889, 17271674, 34621196, 1280437, -16852378, 4491999, +-11338714, 6994891, -9881109, -10639171, 31417686, -24217174, 39500816, 24108188, -6055904, 7795903, +18992882, 2576444, -30118458, 11553462, -24422794, 5568962, 1984812, -12176769, 343061, -1834488, +17151416, -8866960, -1030255, -870805, -5427765, 36383740, -2255395, -5704791, 4565550, 12115566, +-12614856, -26539140, 20637318, -3535295, -1726040, 23473070, -14061723, -4067871, -16712791, 4220342, +-11715060, 13159780, 12217034, 24988120, -7341173, 6825240, 16729434, -24120536, 2823404, -15451682, +-24152748, -30967788, -16271484, -33467458, -37478420, -5460514, 2330557, -17825188, -19016504, 11491185, +-1408212, -10855530, -20485920, 14487998, -10975252, 3592740, 18447958, -35144108, -10135586, -6659884, +15433428, 41492604, -19805704, 964220, -12586939, -18776524, 8938901, -22422950, 17820894, 30852898, +-8907762, -14796699, -15436112, -4153770, -3707631, 31139, 10078141, 7153805, -8207146, 7967165, +-1039382, 6205691, 373662, -7829726, -2144263, 8833674, -15115601, 6818261, -7908646, 1794760, +-6430103, -2777770, -9076877, 1774895, -8716636, -13908178, -6501507, 2911988, -10047002, -335007, +3107946, 14602352, -8551280, -5355824, 4982162, 5821292, -10687489, -7051800, 3161096, -3263102, +-5638219, 10072772, 1942936, -8488466, 7402376, 1711545, -12443057, 2116345, -10230075, 11168526, +-5106179, -16229071, -23997056, -18205292, 20045686, -16488379, 8060043, 19100794, 8115341, 12255689, +-22893786, 32797444, 20583094, 17875654, -13278965, 23500988, -2655901, 15534360, 10145250, 3435974, +8400419, 11400454, 6870874, -3855807, -5943161, -5255966, 2277407, -15830713, -18749142, 10481331, +4533338, 6080600, -15446850, 4171487, 4561792, 11482058, 17013440, 25756918, -14670535, 3894462, +36531380, 7901666, 3804804, 3541201, -7686381, 2689723, 36361728, 10588705, 23499914, 6740415, +-25441776, -10535018, -18571976, 52997748, 21376052, -20480552, -12992276, -18265422, 2921652, -11984569, +-28969018, 6617471, -21987012, 32454384, -2462627, -26859114, 35174708, 28676960, 3896609, -7791608, +4636417, -16345572, 21575768, 38924752, -10626286, 18463528, 43301324, -6846715, -7307350, -4952634, +26264798, -1920924, -14866492, -13732084, -14215268, -229781, -1976222, -12167642, 708670, -5098663, +13084081, 3335042, -13120588, -8084739, -14914274, -1580548, 1694365, -2371359, -10554882, -11412265, +-8446053, 7168301, 11713450, 1893544, -12896713, -1815697, 15597174, 133681, 14251238, 7698192, +-8584566, -725313, -13125420, 12506408, 5173288, -16387985, -31295816, 2844342, -2441152, -9350144, +9678709, -74088, -5866926, -4391067, 2665564, 842350, -1742146, -25120190, 9963787, -3449396, +24899000, -52100100, -35747012, 20605106, 9856950, 7452842, 17495550, -17781164, -23175106, -12764643, +-19088446, 10777147, -20480552, 5966247, 13591424, 22327388, 737661, 18710488, 10897406, 3070365, +-5974837, -19588272, -13820668, 11402601, -23949274, 12181601, 2814277, 20388746, 15560130, -7638063, +-29806536, -19386408, -1803886, -1498944, -7883413, 20390894, -36029944, -2803540, 1257889, -37740416, +-730144, -4657892, -3010772, 4027069, 22091164, -21537114, -59304372, 22126598, 24169928, 14394046, +46261628, -38096360, -4885526, 25685516, 19663434, -23917062, -11101954, -6608881, 36442796, 7157026, +34786552, -50331112, 7348152, -60038276, -35940824, -34813396, 41266044, 13054016, -26603564, 24202678, +2842195, -23365158, 23756538, -34943852, -36643588, 5457293, -38056096, 11274826, -65016140, 9907416, +20539070, -27724550, 30476014, -13836774, -7323993, 20340966, -7008313, -5623723, -14485851, -1089311, +4820564, 11204496, -1313186, 10409927, 20540144, -15468325, -1657857, -12307766, 7335268, -8053601, +-2095407, 4436701, 2563559, 2707977, -2661806, 21087752, -6965363, 1665374, 9089761, -18697604, +-16359530, -18158048, -8380555, -30549566, -13948980, -11202885, 26337276, 5151277, 23450522, 10020696, +4792110, 10575283, 7481296, 901943, 8927090, 1828582, 18282602, 44980120, 16646219, -16108275, +-10515154, 6208912, -11420318, -13401372, -1590212, 20929376, -3628711, 3911642, -22243636, -4602058, +30741766, -22428856, 17009682, 40137544, 20080582, -1706713, -7650411, -13201656, -25658672, -18879066, +22130356, -12606266, 20767778, 14955076, 7136625, 974421, 8117488, -6406481, -32631014, -11331734, +23374822, 18503792, 19432042, -20663088, 35665408, -9185861, 13882945, -26358752, 24157580, 41525356, +-8331163, -14808510, -1504312, 1509144, -9205726, 9059697, 18199388, -34099356, 22405234, 21680458, +-5277978, 25134686, 13372918, 10831371, -15917686, 3268470, 22546430, -47553340, -42282880, -17661980, +11257646, -21911850, -64287608, 26923540, 17700098, -8383240, -10868952, 449361, -3725884, -22079890, +-59044528, -3620121, 42016056, 10139881, -7412577, -5069672, 9118752, 34315180, 27427124, -40395780, +-16588774, 26859652, -5641977, -10878615, -46061376, -2754148, 25361782, 8339753, -7041599, 15528991, +-5738077, 1577864, -17310866, -2925947, 10633265, 15792595, -8952859, -3342558, 3330747, 9096741, +-5617281, 5567888, 821413, -11356967, 6841883, 19211388, 3389803, 5674726, 3676492, 8623757, +-9016210, -16028818, 1625108, 17147656, -14049912, 6099391, -4698694, 1453846, -13625784, -26483306, +-14281840, 9738301, 32196148, -3372623, 15247134, -21363704, -9276056, -14473503, 8964670, 6155225, +10207527, -7346005, -10937671, -865973, 2374580, -1056562, 21913996, 29035052, 683974, -32659468, +43335148, -12127914, -30188788, 27120034, -4312147, -16409459, 20970714, 5637682, -4343823, 17692580, +-24173150, 22996866, -8167417, 804770, -7002408, -5981279, -33714420, 13398150, -12846247, 5349919, +-13493177, -1084479, -10049687, 9696426, -5872294, 36509368, 6484327, 23895050, -9247065, 5997922, +15123117, -6376416, 10463614, -2038499, 18258442, -887448, -6086506, 28834800, -25703768, 14389214, +19723564, -11528766, 22318798, -13615583, -520228, 11489574, -8684424, 26217554, 23488102, 4900558, +39064340, -24031416, -55079196, -9253507, -34044060, -22524420, 80519360, -2028835, 24725052, -3736622, +-33938296, -854699, 33845416, 47907140, 29145648, 48257180, -25920664, -7744363, -11599633, -27524834, +18291192, -7715909, -16973710, -1758789, -33401424, -61081416, 15404437, 21524766, -18058726, 12191802, +-3780645, -18212272, 19477140, 14341433, -7100118, 20055886, -7344931, -17882634, 9213779, -8873939, +23786066, 2247342, 1794223, 13437342, 4495757, -15131170, -6334003, 7803419, -4971962, 14804752, +-20622822, 13326747, -21625160, -5501853, 5406290, -15348066, 9810779, 627065, -23043574, -3725884, +1493575, -6180995, -53150, -4298726, -16909824, 6935299, 5073967, -2681670, 16981764, 26045218, +-14192183, -20293184, -1303523, -9671729, 28159416, 28940026, -17054778, -10782515, 24560234, -25841208, +31070868, -18720152, 4296041, -38118, 3242700, -23838142, -3670587, -21558588, -17835926, 87510, +-7019051, -16256988, -6475200, 11965779, -13882408, 11029476, -6547678, 33411624, -15441481, 10000294, +2047089, -8271034, -26783952, -9804337, 20442434, 3719442, -6659347, 26798448, -19782620, -19965692, +-2704219, 25591562, -23225036, -3220689, 4582730, 6966974, -25869124, 7823820, 9013526, -9226127, +-27052926, 517544, -21003464, 8938901, 4800700, 8096014, -41362684, -17656610, 23620710, 63696512, +-28806882, -3949223, 5145908, -10713259, -17961554, -320512, 53201760, 12291123, -5404680, -4638028, +-14042932, -3230352, -10750303, 20668994, 1098438, -13131863, -14128832, 781147, 9556839, -21166136, +16577500, 4951024, 18071074, 765578, 22979686, 9694815, -15984258, 21609054, 20599200, 50972672, +16237124, 4003983, 5281199, -18542984, 6252936, 16714939, 17256104, 6007049, -1155883, 723165, +-2025614, 6489696, 7221988, -1617055, 9317395, -2314987, -894964, 17666274, 7531762, 3102577, +-5203890, 5290326, 13378286, 14099304, 16167868, 5932961, 5977521, -8937827, -1074, -433792, +3018825, 9197136, -304406, -7115687, 8336532, -7459822, 6950331, -232465, 8189966, 1319092, +-6585259, -1743757, 623844, 1967095, 4119411, -856846, 2975876, 2301566, -20401, -40421012, +53762252, 7452305, 12267500, 12923557, -12372190, -14274324, 552440, -5484137, 7679402, 17725330, +-24817932, 8253854, -5202816, 6487011, 6089190, 4234301, 14206141, 11108396, -10557566, 9988483, +8705362, -8578123, -14800457, 4558034, -5224291, -12291123, 7417409, 6074158, -997506, -8030515, +272730, -5849746, -2806761, 585726, 3246459, 5670968, -11054709, -1635309, 8937827, -3955128, +8027294, 1539209, 5805722, 11681774, 3502546, -11908334, 1298691, 11145440, -6270116, -576063, +5450314, -18940268, -1097364, -4680441, -17606144, 24427090, -6156836, -1018444, 14551886, 2486786, +-10842108, 4301947, -10358924, -2104534, 8123931, -9767293, -3470334, 18054432, -19114216, 2046015, +1788854, 6558952, -8456791, 5804649, -2858838, 5408975, -7243463, 333934, -1698660, 18183818, +-8230768, -827855, 4816269, -9199283, -810675, 12584254, -2582886, 8108362, -5464809, -5229123, +1019518, 4869419, -4716948, 9277666, 19327, -2048699, -1934883, -2949569, -2835215, 7909719, +-6660958, 7741679, 4337917, -10218801, 2552284, -1052804, -770410, 5992553, -8392366, -3432753, +1348083, -5681705, 6002754, -5844377, -743029, 9589588, 1843078, -1820529, 4497368, -4849555, +-3719979, -2364380, 4795331, 7993471, -2345052, -2331094, 1008244, 12678207, -53141092, -108196128, +-13875966, 68014032, 52310556, 150069376, 72237056, -34910032, -30489972, -71061848, -124499288, -15686831, +-48227116, -14926085, 88015152, 56127708, 59914792, 114534432, -3943854, -25276956, -43110736, -113146616, +-62423056, -20043002, -20966956, 3214246, 51605104, 39977020, 42436960, 79962088, 46821584, -29311004, +42665668, -44688596, -104346232, 13426605, -70007432, -97436168, 38101728, -8307004, -17994302, 119955752, +39348344, 31936840, 103408856, -11025718, -20253456, 31518618, -69177424, -85980416, -23068806, -73613056, +-65775812, 14023068, 14348412, 29837138, 90232968, 79915384, 48446696, 57337812, 11153493, -45105208, +-48569636, -60146724, -82680264, -38579544, -20929376, -28058484, 25088514, 79808544, 52138220, 51483236, +42349988, -29742648, -248034, 8473970, -68223408, -28097140, -17042430, -19937238, 31403190, 16087874, +-3851512, 25670482, -5867999, -5274757, 4455492, -18371186, -13819594, 9151502, -11340861, 18617610, +23424214, -8651675, 12737262, 23848342, -13800804, 15639050, 7873749, -46439872, 8305393, -15043660, +-50401440, 828392, -28751048, -25751550, 36792836, 39786428, 38449620, 71159552, 22749904, 22677964, +24196236, -31077310, -62017180, -69293392, -88681408, -66090956, -19865834, 11611444, 53906136, 89234928, +98915248, 77219216, 56332256, 11134703, -52264384, -78809432, -96182032, -89429272, -46296528, -2950106, +25303262, 64063732, 59192164, 32273994, 32499480, 12581033, -866510, -256087, -9987946, -19697256, +-16267189, -20473036, -24694988, -18291728, -13554380, -3812320, 6594923, 16110422, 19504520, 20598664, +16960288, 9419400, 2436857, -2137820, -2969970, -1813550, -957778, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -1056562, -2688113, 4654134, -3479997, -3011309, -4655208, 4212826, 2098629, 365072, 6233072, -625992, --79994, -1909113, -1544578, 1350767, -1669669, -3251827, 1826435, 525060, 5205501, 7114077, --1854889, -4189741, -5160403, -327491, -2951716, -2844879, -1952063, -398895, -4110821, 3954591, --1473711, -1555315, -2720325, -2006824, 756451, 4443681, -465467, -1285806, 1341640, -4370666, -3274913, -2727304, -9797894, 4855998, 3226594, 5394479, 5596343, 1063541, 2945811, -2925410, -828929, 4240207, 328565, -53150, -1023276, -565862, 2274722, -2071248, -1494649, 104153, -2162516, -1798518, -2238215, -3278671, 4190814, 1662689, 515933, -1023813, -4196720, -147103, -3134253, 1945620, -599685, -796716, 3139621, -383863, -231391, -1370632, -1294396, -1919850, --2271501, 139586, 477815, 1076426, -2337536, -927713, 1298154, -1620813, 1401770, 376883, -627602, -607738, -39192, 302258, 683437, 169651, -272730, 426276, -298500, -801011, --259846, -1324461, 877247, 448824, -378494, 16106, -598611, 785442, 811749, 259309, -80531, 302795, 287763, -825171, 29528, -163209, -200790, -324807, -111132, 457951, --14710800, 7640210, -745714, 195421, 2642479, 3732864, -5495411, -718333, -1006096, 3100430, -1164473, -3371013, 10423349, -1142461, -671626, 4625680, 3791919, 1225139, 2623688, 8505646, --4245575, 245887, -2176475, 832150, -2649458, 191663, 242129, 937914, -4759361, 386547, --1161789, -1801739, -227633, 2956011, -1665374, 2747169, 4002910, -6968585, 911607, -2844879, --793495, -4298189, 2109366, -2558727, -461172, -1453310, -4372814, 1642288, -2942590, 1963874, -1064615, -2170032, -3190624, 82678, 2913062, 2193118, 5315022, 2450279, -2335389, -6577206, --467078, 1138703, 8244190, -2582886, -1283658, -109522, -1639604, -4329327, -2084133, -4031364, --569083, 3312494, -781684, 3947075, 2525441, 2031520, 2850248, 501437, -5202279, -1226213, --3358665, -2134062, -5774584, -212064, -1666984, 757525, 1528472, 663572, -885300, -1187022, -166967, 1501091, -1326071, -373125, 5369, -485331, -151934, -547608, 578210, -1992865, --709743, -484258, 26844, -209917, -398895, -11811, -2814277, 10711112, 5579163, -1750199, --4333622, 6123550, -7182796, -1211181, 3971771, -2976949, -2149094, -3104188, 7067906, -2515240, -2173254, 572841, 2146947, 9653476, -9735080, 2869575, 4853850, -3264175, -9010841, -4716948, --629750, 536871, -1290638, -1654636, 3755949, 5453535, -466004, -3913789, 279710, -4952098, -1453846, -3121368, 1726040, 5825050, 2134599, -5913633, -166430, 329639, 8756365, 1609539, -4379256, -1291711, 1938104, 1506460, -10604811, 141734, 5015985, 2297271, 5611375, -5001490, --3059091, -4980015, 1341640, 3149285, -1014149, 1054951, 273804, -2512019, 943819, -1893007, -1688996, 1568737, -361851, 2569464, 536334, -409633, 1149441, 6279242, 1162326, 3266323, -4109747, 2245731, 103616, -120796, -5907191, -35433, 6307697, 2203318, 2801929, -142808, --427886, 3939559, -2952790, 306016, -262530, 1991791, 1080184, -2684, -2559801, 404801, --1287953, -401579, 448287, -845572, -594316, 603443, -62277, 2021856, 870805, 1846836, -911070, 551903, 1027034, -771484, -999654, 103616, 134755, 2313377, 1446867, 328565, -826244, 2198487, -352724, 206158, 709743, 22122840, -5714991, -2069101, -3358665, 4523138, -3019362, 7525857, 2987150, -1115081, 3606699, -164283, 4034585, 1556389, 5608154, 111132, -4706748, 6117644, -6795712, 1210107, 1756105, 1124208, 1069984, 1508070, -4039954, -20938, --4651987, -683974, -168041, -7893613, -5355288, 1961190, -33286, -289910, 3139084, 3062849, --1602560, -6809134, 2039573, 6111202, 4036733, 5698348, -1536525, 3072512, 5672578, -9459665, -2998961, 4136591, -4662724, 5825050, -4064650, -872952, 581968, 1132798, -3138547, 2745021, --823560, -1084479, -3265249, -2691334, 3279745, 3269007, 1488743, 3218004, 5042829, 2740189, -7008850, -1494649, -7875897, 7607461, 1252520, 3722663, 1592359, -1321239, 1999307, 1432909, -340376, 5213554, -1592359, 5143760, -7402376, -1726040, 969589, 2276870, 513785, -4074850, --1859721, 651224, 243739, -451508, 260919, 1542430, -1976759, -1158031, -1110249, -1471563, -860604, -462783, -535797, -1204738, -843424, 2223183, -523449, -770947, -14496, -819802, --637266, 1113470, -436476, 1190780, -241055, 68719, 969052, -304406, 9791452, -11266236, -7469485, 1568200, 7649337, 1762547, -4330938, 1403917, 5890548, -7066295, -1506460, 795643, --7967165, -1584843, -6126771, -3753802, -4467840, -4897874, 2060511, -7608535, -4731980, -6064494, --1557999, 5834713, 2094333, -7293392, -2851322, -7627325, -1898376, 1650878, 10919417, -8818105, -3595425, -2252174, -3245922, -6574521, 289373, 1109175, 6992207, 3674882, 863288, -5961952, --10353556, -161598, 3008625, 8106751, 2808372, 2594160, -6023692, 2179159, 5063230, 384936, -767725, -3220152, -3208341, -1082332, 2935610, 522912, -2087891, 55835, -6624987, -950262, --5587753, 3500935, -1194538, 3500398, -5475547, -4617627, -7529078, -874026, -4852776, -2080912, -1893007, -7284802, -3171833, 837519, 3984119, -8749922, 5075578, -4118874, -4446902, -4650913, --3913789, 2626909, -2639794, 1216550, 1480153, -2321967, 303332, 1819456, 1383516, 92879, --2107218, -311922, -1029182, -2348273, -444529, 1735704, 999654, -1162326, 1557999, -1361505, --1065152, -258772, 510564, -1749125, 90731, -213675, 1155883, 932008, 1927367, -1577864, -433792, -357019, -703838, 610422, -1848983, -638340, 894427, 497142, -27346056, 4402879, -3117073, -7897908, -1760937, -38655, 270583, -1517197, -2626373, -2026688, -8128763, 6248104, --3939022, 856309, -6770479, -2413772, 9789304, 8864276, -5629092, -3405909, 281320, -166967, --4620311, -5397164, -3820374, 629213, 418222, 150861, -556735, 2270964, -6672769, 2070174, -228170, -11784853, -1414118, -3537443, 5381594, 7847442, 1228361, -1400696, 376347, -6915434, --8638790, 4614406, 8547522, 9498857, -2566243, 1716913, 5553393, 5709622, -2966212, 5265630, -8614094, -381178, 7252053, 6124624, -7221988, 2344515, 420907, 7748658, -4760971, -5100274, -4481799, 5867462, -1807644, 504122, -8508867, 5969468, -4757750, 6302328, -10582263, 1125818, -2524367, 5028870, 352724, -4457103, -9024800, -5564667, 7605314, -7530689, -344134, 825171, -4108136, -2296197, -1593970, 3171833, -6027450, -5284958, 2167885, 1412507, -428423, 4292820, --1990717, 999117, 1127966, 1129576, 1648194, 325881, -1668595, 1022202, 2243584, -952409, -325881, -478889, -1105954, 880468, -2777233, -424128, -2995203, -606127, -550293, -1013612, --1526861, 596464, -873489, -71404, -2321967, 907312, -403190, 784905, 976031, 327491, -417686, -10597832, 3753802, -9365713, 11846594, 11392938, 347355, -15438260, 6389838, 873489, --2881386, 10650445, 43487, -9199820, -980326, 11578695, -14528264, 457951, -3636227, -11465952, --3190624, 207769, -2259153, -5872831, 3379066, -4865124, 3952981, -4144107, -7769596, 4140349, --583042, 5949067, -11567958, 4719632, 9099425, -3659849, 746251, 9149891, 13378286, -3558917, --2734821, -11275900, 657130, -9302362, -761820, -6475737, 319438, 907312, 5403606, 2590939, -4938139, -3565360, 906238, 3062312, -588947, 12349642, -8199630, -4048544, 16245714, 16319802, --3223373, -1029182, -10244034, -5235029, 519154, -2841658, -6780680, 9858024, 3037079, -2567317, -14462229, 2804077, -6942278, -191126, -13284334, -6661495, -7531762, -6453725, -1766305, -10369662, --7486665, 4274030, 3949223, -761820, 2329483, -3076807, 3471407, -2310693, -3395172, 587337, --4887136, -2232309, 6273337, 502511, 3125663, -1676648, 641024, 481573, 1471026, 1360968, --275415, -124554, -3106872, -35433, 661962, 502511, -876173, -880468, 2095944, 624918, --449898, 74625, -535797, 70867, 1161252, 13157632, -3456375, -113280, 9073655, -2124398, -5379984, -2894271, -11429445, -707059, 54224, -2320356, -6754373, -7546258, 3991098, -5970542, -10660646, -3228205, -7659538, 6606197, 13370233, -3276523, 3780108, -3548717, 7744363, 204011, --16151761, 5802501, 9042517, 931471, -2651606, -9385040, 7944079, 5319317, 5132486, 1069984, -3252901, 10604811, -7415798, 1353452, 2115272, -5848135, -11340324, 10880763, 6080063, 20221242, --983011, 8939438, -2921652, -6309844, 1123134, -958851, -242129, -1772748, -6533182, 14529874, -379568, 1165547, 2095944, -1989107, 11970611, 1548873, 10029286, 4203699, 1722282, 10711112, --4996121, -11934104, -2323577, 2246805, 1586990, -4915590, 5887864, -3508988, -16710644, 1551020, -3364570, -9216463, 4347581, -924492, 1843078, 58519, -3768297, -4168266, 15569, 1622424, -5144297, -424665, 1465658, -1935957, -1433982, 2347737, 1546725, -252866, 1592896, -1666984, --165356, 155693, -2267206, -3268470, 2090039, -3642669, -926639, -1567126, -3192771, -855235, --404264, -1155346, 1426466, -509491, -1331440, -360777, 6180458, 2455648, 2371359, -1202591, -901943, -1886028, -2483028, -780610, -843424, 1112397, -1637456, 3022046, -3843459, -1174674, -845572, 10630581, -17624936, 2893734, 7894687, 11751567, -12343736, -1778653, 8368744, 5832566, -7141994, 1261647, 15074798, 2794950, 6250788, -1874216, 892279, 6220187, 3411278, 7180649, -569620, -9969156, -14545444, 7714298, 3733937, -2769180, 1711008, 4338454, -13609141, 127238, --8587787, 4017942, -467078, 8920110, -2858838, 3984119, -2059974, 2310156, 1221381, -379568, -5023501, 6703907, 2403571, 3881577, -10661719, 4411469, -1877438, -18596134, -12352326, 3164854, --13576928, -937377, 11224897, -8191577, 22296248, 8056285, -4488241, 12095702, 569620, -3965866, --8995272, -8916352, -12377559, -1928977, 7239168, -8862128, -1097901, 8028368, 3670587, 4531728, -16338592, 2011655, 10683194, 75699, 2099165, -17541184, 4859756, 1314260, -15958488, -15116137, -8721468, -5769752, 1017370, 4583267, -2600603, -4115653, 925029, -920197, -1090385, 915902, --2852932, 2561948, -2050847, 566399, -5036923, 2731599, 849330, 1108102, -270046, 6214818, --5036923, 429497, -1409286, -1259499, 1260036, 1268089, 1741609, 2989297, 4999342, 3083250, --3208878, 775778, -402116, 4547297, -1495186, 2932926, -4657892, -3545496, -2682744, -2262911, --305480, -256087, 2318746, 2703682, -9143449, -222801, 5831492, -25770, 4108136, -9366787, -7373385, -522375, 2181307, 6878390, -12665859, -8686571, 2358474, -115427, 7026030, 14450417, --1288490, 3647501, 15506443, -5683853, -10430328, -543850, 11372537, -2395518, -12998182, 1105954, -4863514, -2505040, -4035122, -900333, 16811038, -3133716, 14477261, 10960220, 13212930, 784905, -1122060, 7750806, 2629057, -2611877, 2760053, -10365367, 7905961, 13245142, 8323110, 1191317, -7405598, -5725729, 5697811, -5568962, 8310762, -7394323, 188442, -536334, -535797, 23513872, --3466576, -1253594, -1999844, 3317325, 6510097, 12408161, 14143327, -7648800, 3420405, 14093935, --7830799, -9716290, 5919002, -4198331, 6100464, 26851062, -12622909, 1870458, 2543695, -6920266, -3056943, 8804146, 6167036, 784368, -5455146, -13141526, 6286759, -5699422, 7266548, -4903779, -1047435, -6478422, -1404454, -10874320, 962073, -3414499, -3838090, -1305133, 1352378, 2815351, -5446019, 2348273, -3084860, -724239, 5549098, -3209414, -2843268, 442382, 411243, -4925791, --46171, -2460480, -1217623, -888521, -877247, 1960116, 1210644, 3963718, -2491081, -2464774, -313533, -2962454, 1421097, 6195491, -3068217, -3240553, -6109054, 3176128, -1539209, -1550483, --9080098, -14316737, -11020886, -14898168, -5738077, 1674500, 11930882, 8838506, 3202972, 12563853, -3779034, 7675107, 7065758, -3406446, 10897406, 11810086, 8341900, -15939161, -8931921, -9230958, -3479461, -6365679, 445066, 4540854, -4629975, -11246909, 7279970, -5331665, 2586107, 2421825, -11479911, -11964168, 18611168, -18376018, 19012746, -38655, 9540733, -9219684, 3360275, -20540682, --11437498, -9992241, 9061307, 4175782, 13135621, -1301375, -42413, -6660421, -16465831, 10758893, --8989367, -4669703, 7841537, 18687940, 18083960, 8484171, -1198296, -12226161, 7204271, -18779208, --1452773, -10660646, 6062883, 20278688, -19444390, 7102802, 9044127, -12089796, -1185948, -2056753, -6798933, -8012799, -11536282, 2307471, -4656819, -16959752, 8630200, -1669669, -15921981, 11844446, -15672873, -5154498, 545461, 2219961, -6719477, 10176925, 4733591, -2869575, -2507724, -6665253, --3788698, 8165807, 4696547, 4663261, -328028, -7344394, -2188286, -2487323, -8140037, -1730872, -2485176, -482110, -2361158, -733366, -5791227, 773094, -1946157, 3974455, 2241436, 836982, --6711960, 5582384, 557809, -2907156, -1663763, -1098975, -293668, 3316252, -2443300, -1025960, -2580202, 6863895, 3493419, 2035815, -4095251, 5478768, -13685913, -15979963, -4518306, 10286984, --12236899, 8079907, -16807280, -3009698, -6467147, -5929203, -13325136, -1198833, -4975183, -8014409, -6407018, -8928700, 9601399, 2019708, 7500087, -11795591, -22046068, -1841467, 4548907, -9241159, --6757594, 3596498, 2878702, -10807211, -5120675, 15351287, 7462506, -2033667, 8409009, 22050362, -790274, 2787971, 2267206, -1685238, -354872, 3242164, 2962454, -16962436, -6155762, -20724828, --6539088, -19328964, -9098351, 1041530, 22581864, 10524817, -11161546, -13130252, 8425652, 17815524, -11280732, -7988103, 13675176, -5215164, -1020592, -23945516, -7108708, -3097208, -2944200, -16382079, --26220238, 8395587, -53687, -19202798, 4896263, 30008400, 3921842, 3384971, -18957448, -1721208, --268972, 4187056, -21287468, 19648402, 3112241, 5418101, 10878078, 4186519, 11799886, -916976, -5542656, -4643397, -9215389, -7693360, 4060355, -6201933, -1955821, -8281771, 2776696, 6736120, -129923, 5670968, 639413, -2302639, -99321, -4769025, 3301219, 3388729, 609349, 603980, --3236258, -1342177, 1807644, 4924180, 3591667, -4370666, -1546188, -1815697, -9956271, -13830332, --10165651, -3353833, -1278290, 1581622, -2376191, -3935264, -4238059, -30065, -2841121, -3706020, --6187438, -3384971, 9970230, -6197638, 12112345, -18402324, -3794604, 4327717, -8880919, 21087216, --17499308, -18014166, -14659260, 20390894, 9080098, -11905649, -10740103, -7184944, -2285996, -6481106, --6667400, 947040, 7574712, 20140712, -2297271, 8545374, 7434589, 7220377, -13550085, -16900160, --12159589, 14057428, -2511482, 17093970, 5635534, -1969243, -23534274, -19209778, -2042257, 1483911, --13674639, -8591545, -6455873, -6611029, -30848066, -6769942, -7578470, -11176579, -5491653, -7339562, --14186814, 9852655, 19157702, 10596221, 479963, 11261941, 14377940, -5225365, 4526896, 3586835, -1382980, -682900, -3715684, 10036265, 4038880, 16887274, -3982509, 1591285, 6017249, 33337536, --427349, 17681306, 22445500, -2045478, -19624780, 1602560, 19494856, 2782065, -16712791, -15042586, --19152332, 12392591, -15647640, -4326643, 22369264, -9716290, -15014132, 4544613, -4123169, 345745, -6105296, -9488656, -4226785, 1774895, -2814814, -4355634, -852014, 1623498, 11181410, -1142998, --5807333, -5094905, -48318, -4399121, -3528853, -3234647, -5634460, -2772402, 2127083, -2789045, --533650, -7765301, 1975148, -831076, 1552631, 7560753, 4800700, -4624069, 2097018, 1562294, --6753836, -10406169, 3855807, 4013110, 594853, -10635950, -11374684, -1906966, -7945153, -2702608, --1161789, 18866180, 13743358, -31657668, 10040023, 12627741, -5550709, 9171366, 30079804, 2473364, -6694781, -10508174, 6971269, -11105175, -7096897, -5916855, 2208687, 7740605, 10821170, -1551557, -4460324, -3273839, -1843615, -5806796, 7963943, 28395102, -9274982, -9153112, 10180146, 7181186, -1025423, -20649130, 13384729, -16462073, 9444633, 11853036, 1315871, 3013457, -3411815, 19537270, -14782741, 177704, 9942849, -7810935, 12538083, 2107218, 14158897, 20694226, -465467, 5255966, --2705293, -7616051, -533650, 9026948, 10160282, -19750944, -12014097, 4643934, 21459804, -10391137, -14241038, 9557913, 2760053, -23012972, 2787971, 3599183, -27473296, 16202227, -15381888, -18263812, --34772056, 8478265, 21081846, -9536438, -19407884, 4038880, 23365696, 14928769, 2593087, -3032247, -318901, 8262980, -7160784, 11020349, 17943836, 17127256, -1275068, 7269232, 17752710, -2780991, --247497, -1952063, 15284178, -2243584, 3750580, -7145752, 3877819, -4394826, 582505, 220117, --1209570, -3460133, 3340411, 9014599, 3028489, 2565169, -8148090, 2074469, -8412230, 2554432, -13226889, -4817343, 195958, 1746978, -6289443, -8185671, -9432285, -2138357, 5970005, -2768643, -1595044, -5701032, -590558, 217970, -17452600, -4476967, -748935, 3670050, 4442070, -3623879, -6182069, 3277597, 3299072, -5174362, -5073967, 7744363, 21812528, 15812459, -5468030, -42627552, -5005248, 21329344, 10177999, 4632659, -18700288, -118112, -12913356, 2996277, -1252520, 3528853, -6410239, 8930848, 3804804, -23178864, 13412646, -3231963, 4054986, 17591112, 6767258, 3282966, --6313065, 21821118, -784905, 21688512, -26375932, -7762080, 8392366, -15374372, -13292387, 917512, --3488587, -12037720, 1386201, 19160386, -663036, 1258425, -10104447, -20975010, -13389561, -6004901, -8653822, -2325188, 1988033, -10326712, -11247446, -5518496, 16634408, -11489574, 9562745, 6432251, -5363341, 1836099, -17293148, -24619826, -2046552, 16436840, -20478940, 9844602, -17639968, 10992432, --18555332, -961536, -18296024, 25848186, -23666880, -14134201, 6053220, 4223027, 11803644, 9840844, --6173479, -3288334, -6212134, 3186329, -311385, 15397458, -19212462, -7615514, -24672440, 12697534, --8806294, 933619, -1088237, 6689412, -5508833, 2487860, -10133438, -15351287, 9785009, -7950522, -188442, 2496987, 13016972, 5188858, -9455371, 1972464, -3242700, -12131672, -2299418, 2797634, -3751117, -10974178, -5399848, 12028593, -1290638, -10206990, -4520990, 14121316, -16687559, -5689758, -3335579, -3911642, 5865852, -1295470, -7369627, -9892920, -3211562, -4460861, -3119757, -3287798, -2638184, -819802, 6113349, -6569153, 3364570, 1135482, -3017752, 6594923, -36378372, -5168457, -10863046, 2648384, -8687645, -12991202, 1175747, -12349642, -1176821, -19063212, 17809082, -7144141, -11134703, -24783036, -14085882, -524523, 30325154, -24861956, -2195802, -19463718, -15515569, -4742718, -18979998, -4438312, 8398272, 8885214, -10147934, -21589726, 30345554, 13215614, -17446158, 3352222, -2178622, 8368207, -16980690, 15156403, -1403381, -31805306, 3299609, 6344204, 8134668, -26355530, --6371584, 3303367, 23134842, 4398584, 12859132, -33993592, -20724290, 10407780, -69793, 22159884, --6013491, -3758097, 1626182, 11258720, 10252624, 3929358, -43276092, 12160126, -5105106, 9876814, -22950694, -7293928, -2125472, -26323854, 8461086, 11891154, -13917305, -8225936, 23748484, 37620156, -9760850, 6126771, -10739029, -4422206, -20636780, 1563905, 166430, -25378962, 9164386, -767189, --7518877, -1938641, 11849815, -9721122, -6642704, -1133871, -2812667, -915365, 10448582, -4548907, -114354, 6073621, 2319819, 8355859, 6935836, 5354214, 3671660, 10004589, 11602854, -15658377, -4875862, -9771587, 7643968, 1169305, -10022843, -6715718, -3968550, -3273839, -6615324, 6027450, --3429532, -6415608, 10661719, -1688459, -3534758, 6160594, 10980084, -19327, -4109747, 3085934, -10233296, 11273215, 6952479, -3655017, 1762547, 2119030, 9188546, -31213674, -20424180, -7045357, --343061, -17786534, 14090177, -36881420, 1772211, -22646826, 11720966, -8405251, -25178172, -2239826, --6802155, -8875550, -28677496, -20924006, 5958194, 22577032, -15197205, 27873264, -23796266, -15640660, -5060545, -2340220, 12625056, -7919920, -8329552, -11551315, -3266323, -39170100, -11313481, 1110786, --1750736, -6548752, -15462956, 12270185, -13690745, 20885890, -6535867, -2630668, -14884746, -13676250, --25993678, -11311333, 9515500, 3926137, -1625108, 1689533, -9387188, -7055558, -12085501, -10101763, -5221070, 7688529, 3551401, -22537840, 25694104, 3474092, -11264089, 20601348, 14654428, 24556476, --4766877, 14318884, -33779916, -18231600, -31927176, 32350768, -10566693, -22610856, -21855478, -46147276, --19426674, 31893890, -2236604, -16213502, 11531987, -31499290, -21196738, 7876433, -2007897, -26288958, --25813290, -333397, -14909442, 3916473, 5316096, -19558744, 18866180, -11652246, -17250736, 1460289, --10305237, 27181238, -10671920, 12202539, 1760400, 16516297, -8613020, -4859219, 1396938, -7561827, --476205, -15881715, -12210055, -3082713, 6405944, 295816, 10790568, 4414690, 7949985, -7145215, --255551, -13823889, -3599720, -5000953, 3911105, 13151727, 5859946, 5265093, 6057515, 5430450, -1235340, -18007724, -5565204, -12440910, -3319473, 2055142, 8244190, 40263708, 51555176, -4908074, --22920092, -5462125, -8672613, -23157390, 9953587, 634581, -16785270, 49277232, 17088064, -11684459, --34186328, -3070365, 8228084, 8983998, 9998684, 23568634, -6796249, -11664594, 11061688, -42776800, --28592672, -11180337, -3081639, 4580046, -22851374, -20871394, 21984326, 17484274, -13466333, -25897042, -16415365, 471910, 28968480, -23604604, -5431523, -8058970, -1481764, -18664318, -27800250, 23328652, --17243756, -10902774, -21247740, -4769561, 14017700, 13160854, -8571144, 1834488, 2461553, 17592186, -26968100, 19840602, -34570192, -16634408, -20509542, -5158793, 11793443, 4286914, -23629300, -34002184, -28805272, 1795296, -28222230, -46882252, 23632520, -6136435, 12721156, 11707007, 12440373, 1614371, -9188546, -18459232, -6962142, 12591233, 2321430, -8672613, 5252208, -2250563, -24813636, 12470974, --31507880, -2124398, -1506460, -5559299, -11286100, -4476967, 13920526, -1023276, -3118683, 7038378, --10139344, 30637076, -2360622, 2660195, -2210835, 207232, 7734163, -578210, 7458748, -15783468, -3479461, -2984466, -10853382, 1006633, 5325223, 10115185, -5067525, 2736968, -26071526, -8690329, --1334124, -13841069, 11768747, -1708860, -3048890, -7514582, -10666551, -16053514, -22197464, 6603512, --2113661, 16189342, 19531900, 12187507, -13080860, -18549964, -23172960, -8922258, 21556440, 17293686, -3147137, 7977902, -7337415, -13643500, -10080825, -9829033, 4538707, 18041546, 22355842, -27849642, --23379118, 66219268, -5401458, -6535330, -10005126, -20970714, -2343442, 23861764, 38356744, -17742510, --10756746, -3944391, -17552458, -4395362, -9929964, 15231028, -15874199, 17442400, 8257612, -6038724, --22116398, -1651415, -9160628, 33042258, -18257906, -475668, -34360, -3325915, 14870787, -9557376, --1344862, 6853694, -4627291, -32322314, 16375637, -14758044, -17167522, -3948149, -18306224, -10590852, --33176474, 31623844, 1345935, -21095268, -38860328, 22546430, -22970022, -22334366, 188442, -17398912, -7727183, 14295799, 43957380, -12547210, 17139066, -3726421, -21434034, -18124762, -5413807, 66292820, --58612344, -4294431, 60764660, -55730960, -21268678, 31367756, -4765266, -25191594, 58751932, -29165512, --12250320, 27020714, 6563784, 11523397, -17599702, 19508278, 27315456, 12854300, -7172059, -1822677, -27582280, -4057134, 15712064, -391916, 10915659, -15895137, -2232846, 7300908, 4295504, 3047816, -564788, 1117765, 11364483, -5310190, 2800856, 4268661, 3719442, -24931748, -10451266, 7978439, --21306260, 6350109, 11849815, -8927626, -9616432, -7269769, 4838281, -10219875, 11865384, 10245644, --1557999, 5937793, -7735773, -15018427, -14874009, 29116120, 5005248, 18166102, 3488587, 3597035, -11260331, -9917616, -2607045, 18474802, -11244761, -25173878, 18605262, -2523293, 31513248, -39693552, -36044976, -5900212, -22044456, 19480362, 6985228, -3360812, 4257387, 2834679, -4086662, 7241852, --7487739, -9768366, -4326643, -13615583, -11306501, -25762824, -9727027, 22567906, 21289616, -32083942, -11024644, 17365090, 14585709, -5334887, -31675920, -2668249, -15569793, -37125160, 23773180, 60029148, --34112240, -3503083, 42722040, -11854647, -14936286, 34733936, 25851408, 12862353, -13703630, -27597850, -9503689, -11115912, -17353816, 62770412, 46261092, -37522444, -27560806, 34001644, -61391724, -21465710, --17221746, -10416906, 43313672, 28862180, 19074486, 20905216, -72164040, -25045564, 69226280, 40189084, -8418673, -18195092, 24009940, -24074902, -48948668, -32573568, 24240258, -17727478, -3613678, 28079960, -51845088, -5995775, -28815472, 3952981, 20653960, -34957276, -12774843, 36864240, 33224794, 33254858, -23200876, -6360847, -20667382, -10165114, 28285580, 8320963, 12061879, -5159867, 3435974, 12984760, -1414118, -4852776, -5669894, -7778186, 6535330, 4747013, 27165132, 7765838, -5003100, -10473278, -2966212, 1576790, -3627100, -9164923, 2994129, 21023328, -21756156, -6376953, 20318416, -4325569, --173946, 13515725, -4728222, 10064719, 4509179, 11780558, -21967148, -2954938, 5071283, 25691420, -6538551, 12456479, 11014981, 6131603, -4483946, 8659728, 12453795, -13324599, 7133404, -61268784, -26558468, 331786, -6247567, 31439160, -5307506, -23684598, 11960410, 10896869, 30750892, 17430052, --16571058, 918586, 4789426, 21067888, 4922033, -24199456, -889058, -1364189, 4986994, -22511534, --24526410, 35629440, -12783433, -37220188, 19207094, 33071248, -18544596, -6313065, 2224793, 22673670, --26982596, -35496832, 9802726, 29997662, -6442451, -12776454, -7353521, -7303592, 13107703, 5564667, -7857106, 75590352, 4239133, -9657771, 1095754, 2375117, 40890236, 1291711, -14443975, 9196062, --31845036, -18746458, 8345659, 158377, 35156456, 27849642, -17955648, -5283347, -16969952, 803696, -12655658, 3185792, 3980361, 12577812, -8958765, -37168648, 9540196, 25074020, -11777337, 22126060, --34324304, 16188269, 10459856, -30169460, 5247913, 587874, -13069585, 1369558, -5540508, 14986215, -14719390, -25281788, -15495168, 33709588, -25648470, 12390981, -2319819, -9901510, 7491497, -1014149, --15051176, 8614631, 5321465, 6164352, -378494, -2580739, 1774358, 4665945, -5672578, -5484137, -4685273, 3281355, -3089155, -281857, 7565048, 12550431, -7326678, -5079873, 1714229, -2248952, -4508642, -3113851, -1571958, 2907156, -32212, 7543573, -2264522, 3724811, -9645423, 5940477, --6689949, 6280853, 11167989, -974421, 338229, 1542967, -12567074, 21321292, -39366596, -129994704, --153868272, -13640816, -106646720, 42198052, 260760880, 140367040, 211834224, 223225552, -24021752, -64063196, -19283330, -162230576, -198335680, -61143692, -218355600, -175270096, 44725640, -126021856, -34170224, 251806416, -91316376, 178082768, 307539520, 183100896, 82037096, 62457952, 22011708, -136706128, -170201504, -56047176, --232546704, -232748032, 30930206, -174011136, -142734656, 86126976, -146353152, -150543440, 114015272, 46413028, --20571820, 268790336, 251757568, 160793376, 341240512, 321543808, 110016128, 128091496, 99921880, -161630896, --161975568, -204945632, -405914144, -479237824, -344579328, -343098624, -252981632, 8850317, 23626616, 167358240, -289322944, 356492480, 324891712, 376936000, 323047040, 190562336, 128242888, 42798812, -63411972, -142835040, --203224432, -174645712, -253262944, -283750784, -235234288, -275115200, -206328624, 32909114, 66457640, 160562528, -321951296, 256349952, 197674256, 149405808, 59020368, -48597020, -39573292, -80473192, -100683696, -76896024, --87436408, -84533544, -35874252, -34111704, 2164664, 52511344, 37479496, 73653856, 88517128, 15577310, -64287072, 61702572, -16800302, 20645370, 14656039, -46595564, 2299955, 15355045, -53863184, -58930708, --82276544, -169632960, -189603472, -147516016, -140883520, -46046344, 69653632, 125216016, 203660912, 307008032, -331532288, 307394016, 215565488, 65954056, -69013144, -148154896, -221248256, -273264064, -268667392, -209836000, --143895904, -68214816, -20581484, 9103720, 25472914, 63021664, 103716480, 106873280, 99418832, 101996344, -72934984, 65732328, 57207892, 23780160, 6444599, 15372225, 13837848, 9188546, 6893960, -11006391, --32198296, -46876348, -53939956, -44794360, -26738856, -17313550, -15388868, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +2688113, 4654134, -3479997, -3011309, -4655208, 4212826, 2098629, 365072, 6233072, -625992, +-79994, -1909113, -1544578, 1350767, -1669669, -3251827, 1826435, 525060, 5205501, 7114077, +-1854889, -4189741, -5160403, -327491, -2951716, -2844879, -1952063, -398895, -4110821, 3954591, +-1473711, -1555315, -2720325, -2006824, 756451, 4443681, -465467, -1285806, 1341640, -4370666, +3274913, -2727304, -9797894, 4855998, 3226594, 5394479, 5596343, 1063541, 2945811, -2925410, +828929, 4240207, 328565, -53150, -1023276, -565862, 2274722, -2071248, -1494649, 104153, +2162516, -1798518, -2238215, -3278671, 4190814, 1662689, 515933, -1023813, -4196720, -147103, +3134253, 1945620, -599685, -796716, 3139621, -383863, -231391, -1370632, -1294396, -1919850, +-2271501, 139586, 477815, 1076426, -2337536, -927713, 1298154, -1620813, 1401770, 376883, +627602, -607738, -39192, 302258, 683437, 169651, -272730, 426276, -298500, -801011, +-259846, -1324461, 877247, 448824, -378494, 16106, -598611, 785442, 811749, 259309, +80531, 302795, 287763, -825171, 29528, -163209, -200790, -324807, -111132, 457951, +-14710800, 7640210, -745714, 195421, 2642479, 3732864, -5495411, -718333, -1006096, 3100430, +1164473, -3371013, 10423349, -1142461, -671626, 4625680, 3791919, 1225139, 2623688, 8505646, +-4245575, 245887, -2176475, 832150, -2649458, 191663, 242129, 937914, -4759361, 386547, +-1161789, -1801739, -227633, 2956011, -1665374, 2747169, 4002910, -6968585, 911607, -2844879, +-793495, -4298189, 2109366, -2558727, -461172, -1453310, -4372814, 1642288, -2942590, 1963874, +1064615, -2170032, -3190624, 82678, 2913062, 2193118, 5315022, 2450279, -2335389, -6577206, +-467078, 1138703, 8244190, -2582886, -1283658, -109522, -1639604, -4329327, -2084133, -4031364, +-569083, 3312494, -781684, 3947075, 2525441, 2031520, 2850248, 501437, -5202279, -1226213, +-3358665, -2134062, -5774584, -212064, -1666984, 757525, 1528472, 663572, -885300, -1187022, +166967, 1501091, -1326071, -373125, 5369, -485331, -151934, -547608, 578210, -1992865, +-709743, -484258, 26844, -209917, -398895, -11811, -2814277, 10711112, 5579163, -1750199, +-4333622, 6123550, -7182796, -1211181, 3971771, -2976949, -2149094, -3104188, 7067906, -2515240, +2173254, 572841, 2146947, 9653476, -9735080, 2869575, 4853850, -3264175, -9010841, -4716948, +-629750, 536871, -1290638, -1654636, 3755949, 5453535, -466004, -3913789, 279710, -4952098, +1453846, -3121368, 1726040, 5825050, 2134599, -5913633, -166430, 329639, 8756365, 1609539, +4379256, -1291711, 1938104, 1506460, -10604811, 141734, 5015985, 2297271, 5611375, -5001490, +-3059091, -4980015, 1341640, 3149285, -1014149, 1054951, 273804, -2512019, 943819, -1893007, +1688996, 1568737, -361851, 2569464, 536334, -409633, 1149441, 6279242, 1162326, 3266323, +4109747, 2245731, 103616, -120796, -5907191, -35433, 6307697, 2203318, 2801929, -142808, +-427886, 3939559, -2952790, 306016, -262530, 1991791, 1080184, -2684, -2559801, 404801, +-1287953, -401579, 448287, -845572, -594316, 603443, -62277, 2021856, 870805, 1846836, +911070, 551903, 1027034, -771484, -999654, 103616, 134755, 2313377, 1446867, 328565, +826244, 2198487, -352724, 206158, 709743, 22122840, -5714991, -2069101, -3358665, 4523138, +3019362, 7525857, 2987150, -1115081, 3606699, -164283, 4034585, 1556389, 5608154, 111132, +4706748, 6117644, -6795712, 1210107, 1756105, 1124208, 1069984, 1508070, -4039954, -20938, +-4651987, -683974, -168041, -7893613, -5355288, 1961190, -33286, -289910, 3139084, 3062849, +-1602560, -6809134, 2039573, 6111202, 4036733, 5698348, -1536525, 3072512, 5672578, -9459665, +2998961, 4136591, -4662724, 5825050, -4064650, -872952, 581968, 1132798, -3138547, 2745021, +-823560, -1084479, -3265249, -2691334, 3279745, 3269007, 1488743, 3218004, 5042829, 2740189, +7008850, -1494649, -7875897, 7607461, 1252520, 3722663, 1592359, -1321239, 1999307, 1432909, +340376, 5213554, -1592359, 5143760, -7402376, -1726040, 969589, 2276870, 513785, -4074850, +-1859721, 651224, 243739, -451508, 260919, 1542430, -1976759, -1158031, -1110249, -1471563, +860604, -462783, -535797, -1204738, -843424, 2223183, -523449, -770947, -14496, -819802, +-637266, 1113470, -436476, 1190780, -241055, 68719, 969052, -304406, 9791452, -11266236, +7469485, 1568200, 7649337, 1762547, -4330938, 1403917, 5890548, -7066295, -1506460, 795643, +-7967165, -1584843, -6126771, -3753802, -4467840, -4897874, 2060511, -7608535, -4731980, -6064494, +-1557999, 5834713, 2094333, -7293392, -2851322, -7627325, -1898376, 1650878, 10919417, -8818105, +3595425, -2252174, -3245922, -6574521, 289373, 1109175, 6992207, 3674882, 863288, -5961952, +-10353556, -161598, 3008625, 8106751, 2808372, 2594160, -6023692, 2179159, 5063230, 384936, +767725, -3220152, -3208341, -1082332, 2935610, 522912, -2087891, 55835, -6624987, -950262, +-5587753, 3500935, -1194538, 3500398, -5475547, -4617627, -7529078, -874026, -4852776, -2080912, +1893007, -7284802, -3171833, 837519, 3984119, -8749922, 5075578, -4118874, -4446902, -4650913, +-3913789, 2626909, -2639794, 1216550, 1480153, -2321967, 303332, 1819456, 1383516, 92879, +-2107218, -311922, -1029182, -2348273, -444529, 1735704, 999654, -1162326, 1557999, -1361505, +-1065152, -258772, 510564, -1749125, 90731, -213675, 1155883, 932008, 1927367, -1577864, +433792, -357019, -703838, 610422, -1848983, -638340, 894427, 497142, -27346056, 4402879, +3117073, -7897908, -1760937, -38655, 270583, -1517197, -2626373, -2026688, -8128763, 6248104, +-3939022, 856309, -6770479, -2413772, 9789304, 8864276, -5629092, -3405909, 281320, -166967, +-4620311, -5397164, -3820374, 629213, 418222, 150861, -556735, 2270964, -6672769, 2070174, +228170, -11784853, -1414118, -3537443, 5381594, 7847442, 1228361, -1400696, 376347, -6915434, +-8638790, 4614406, 8547522, 9498857, -2566243, 1716913, 5553393, 5709622, -2966212, 5265630, +8614094, -381178, 7252053, 6124624, -7221988, 2344515, 420907, 7748658, -4760971, -5100274, +4481799, 5867462, -1807644, 504122, -8508867, 5969468, -4757750, 6302328, -10582263, 1125818, +2524367, 5028870, 352724, -4457103, -9024800, -5564667, 7605314, -7530689, -344134, 825171, +4108136, -2296197, -1593970, 3171833, -6027450, -5284958, 2167885, 1412507, -428423, 4292820, +-1990717, 999117, 1127966, 1129576, 1648194, 325881, -1668595, 1022202, 2243584, -952409, +325881, -478889, -1105954, 880468, -2777233, -424128, -2995203, -606127, -550293, -1013612, +-1526861, 596464, -873489, -71404, -2321967, 907312, -403190, 784905, 976031, 327491, +417686, -10597832, 3753802, -9365713, 11846594, 11392938, 347355, -15438260, 6389838, 873489, +-2881386, 10650445, 43487, -9199820, -980326, 11578695, -14528264, 457951, -3636227, -11465952, +-3190624, 207769, -2259153, -5872831, 3379066, -4865124, 3952981, -4144107, -7769596, 4140349, +-583042, 5949067, -11567958, 4719632, 9099425, -3659849, 746251, 9149891, 13378286, -3558917, +-2734821, -11275900, 657130, -9302362, -761820, -6475737, 319438, 907312, 5403606, 2590939, +4938139, -3565360, 906238, 3062312, -588947, 12349642, -8199630, -4048544, 16245714, 16319802, +-3223373, -1029182, -10244034, -5235029, 519154, -2841658, -6780680, 9858024, 3037079, -2567317, +14462229, 2804077, -6942278, -191126, -13284334, -6661495, -7531762, -6453725, -1766305, -10369662, +-7486665, 4274030, 3949223, -761820, 2329483, -3076807, 3471407, -2310693, -3395172, 587337, +-4887136, -2232309, 6273337, 502511, 3125663, -1676648, 641024, 481573, 1471026, 1360968, +-275415, -124554, -3106872, -35433, 661962, 502511, -876173, -880468, 2095944, 624918, +-449898, 74625, -535797, 70867, 1161252, 13157632, -3456375, -113280, 9073655, -2124398, +5379984, -2894271, -11429445, -707059, 54224, -2320356, -6754373, -7546258, 3991098, -5970542, +10660646, -3228205, -7659538, 6606197, 13370233, -3276523, 3780108, -3548717, 7744363, 204011, +-16151761, 5802501, 9042517, 931471, -2651606, -9385040, 7944079, 5319317, 5132486, 1069984, +3252901, 10604811, -7415798, 1353452, 2115272, -5848135, -11340324, 10880763, 6080063, 20221242, +-983011, 8939438, -2921652, -6309844, 1123134, -958851, -242129, -1772748, -6533182, 14529874, +379568, 1165547, 2095944, -1989107, 11970611, 1548873, 10029286, 4203699, 1722282, 10711112, +-4996121, -11934104, -2323577, 2246805, 1586990, -4915590, 5887864, -3508988, -16710644, 1551020, +3364570, -9216463, 4347581, -924492, 1843078, 58519, -3768297, -4168266, 15569, 1622424, +5144297, -424665, 1465658, -1935957, -1433982, 2347737, 1546725, -252866, 1592896, -1666984, +-165356, 155693, -2267206, -3268470, 2090039, -3642669, -926639, -1567126, -3192771, -855235, +-404264, -1155346, 1426466, -509491, -1331440, -360777, 6180458, 2455648, 2371359, -1202591, +901943, -1886028, -2483028, -780610, -843424, 1112397, -1637456, 3022046, -3843459, -1174674, +845572, 10630581, -17624936, 2893734, 7894687, 11751567, -12343736, -1778653, 8368744, 5832566, +7141994, 1261647, 15074798, 2794950, 6250788, -1874216, 892279, 6220187, 3411278, 7180649, +569620, -9969156, -14545444, 7714298, 3733937, -2769180, 1711008, 4338454, -13609141, 127238, +-8587787, 4017942, -467078, 8920110, -2858838, 3984119, -2059974, 2310156, 1221381, -379568, +5023501, 6703907, 2403571, 3881577, -10661719, 4411469, -1877438, -18596134, -12352326, 3164854, +-13576928, -937377, 11224897, -8191577, 22296248, 8056285, -4488241, 12095702, 569620, -3965866, +-8995272, -8916352, -12377559, -1928977, 7239168, -8862128, -1097901, 8028368, 3670587, 4531728, +16338592, 2011655, 10683194, 75699, 2099165, -17541184, 4859756, 1314260, -15958488, -15116137, +8721468, -5769752, 1017370, 4583267, -2600603, -4115653, 925029, -920197, -1090385, 915902, +-2852932, 2561948, -2050847, 566399, -5036923, 2731599, 849330, 1108102, -270046, 6214818, +-5036923, 429497, -1409286, -1259499, 1260036, 1268089, 1741609, 2989297, 4999342, 3083250, +-3208878, 775778, -402116, 4547297, -1495186, 2932926, -4657892, -3545496, -2682744, -2262911, +-305480, -256087, 2318746, 2703682, -9143449, -222801, 5831492, -25770, 4108136, -9366787, +7373385, -522375, 2181307, 6878390, -12665859, -8686571, 2358474, -115427, 7026030, 14450417, +-1288490, 3647501, 15506443, -5683853, -10430328, -543850, 11372537, -2395518, -12998182, 1105954, +4863514, -2505040, -4035122, -900333, 16811038, -3133716, 14477261, 10960220, 13212930, 784905, +1122060, 7750806, 2629057, -2611877, 2760053, -10365367, 7905961, 13245142, 8323110, 1191317, +7405598, -5725729, 5697811, -5568962, 8310762, -7394323, 188442, -536334, -535797, 23513872, +-3466576, -1253594, -1999844, 3317325, 6510097, 12408161, 14143327, -7648800, 3420405, 14093935, +-7830799, -9716290, 5919002, -4198331, 6100464, 26851062, -12622909, 1870458, 2543695, -6920266, +3056943, 8804146, 6167036, 784368, -5455146, -13141526, 6286759, -5699422, 7266548, -4903779, +1047435, -6478422, -1404454, -10874320, 962073, -3414499, -3838090, -1305133, 1352378, 2815351, +5446019, 2348273, -3084860, -724239, 5549098, -3209414, -2843268, 442382, 411243, -4925791, +-46171, -2460480, -1217623, -888521, -877247, 1960116, 1210644, 3963718, -2491081, -2464774, +313533, -2962454, 1421097, 6195491, -3068217, -3240553, -6109054, 3176128, -1539209, -1550483, +-9080098, -14316737, -11020886, -14898168, -5738077, 1674500, 11930882, 8838506, 3202972, 12563853, +3779034, 7675107, 7065758, -3406446, 10897406, 11810086, 8341900, -15939161, -8931921, -9230958, +3479461, -6365679, 445066, 4540854, -4629975, -11246909, 7279970, -5331665, 2586107, 2421825, +11479911, -11964168, 18611168, -18376018, 19012746, -38655, 9540733, -9219684, 3360275, -20540682, +-11437498, -9992241, 9061307, 4175782, 13135621, -1301375, -42413, -6660421, -16465831, 10758893, +-8989367, -4669703, 7841537, 18687940, 18083960, 8484171, -1198296, -12226161, 7204271, -18779208, +-1452773, -10660646, 6062883, 20278688, -19444390, 7102802, 9044127, -12089796, -1185948, -2056753, +6798933, -8012799, -11536282, 2307471, -4656819, -16959752, 8630200, -1669669, -15921981, 11844446, +15672873, -5154498, 545461, 2219961, -6719477, 10176925, 4733591, -2869575, -2507724, -6665253, +-3788698, 8165807, 4696547, 4663261, -328028, -7344394, -2188286, -2487323, -8140037, -1730872, +2485176, -482110, -2361158, -733366, -5791227, 773094, -1946157, 3974455, 2241436, 836982, +-6711960, 5582384, 557809, -2907156, -1663763, -1098975, -293668, 3316252, -2443300, -1025960, +2580202, 6863895, 3493419, 2035815, -4095251, 5478768, -13685913, -15979963, -4518306, 10286984, +-12236899, 8079907, -16807280, -3009698, -6467147, -5929203, -13325136, -1198833, -4975183, -8014409, +6407018, -8928700, 9601399, 2019708, 7500087, -11795591, -22046068, -1841467, 4548907, -9241159, +-6757594, 3596498, 2878702, -10807211, -5120675, 15351287, 7462506, -2033667, 8409009, 22050362, +790274, 2787971, 2267206, -1685238, -354872, 3242164, 2962454, -16962436, -6155762, -20724828, +-6539088, -19328964, -9098351, 1041530, 22581864, 10524817, -11161546, -13130252, 8425652, 17815524, +11280732, -7988103, 13675176, -5215164, -1020592, -23945516, -7108708, -3097208, -2944200, -16382079, +-26220238, 8395587, -53687, -19202798, 4896263, 30008400, 3921842, 3384971, -18957448, -1721208, +-268972, 4187056, -21287468, 19648402, 3112241, 5418101, 10878078, 4186519, 11799886, -916976, +5542656, -4643397, -9215389, -7693360, 4060355, -6201933, -1955821, -8281771, 2776696, 6736120, +129923, 5670968, 639413, -2302639, -99321, -4769025, 3301219, 3388729, 609349, 603980, +-3236258, -1342177, 1807644, 4924180, 3591667, -4370666, -1546188, -1815697, -9956271, -13830332, +-10165651, -3353833, -1278290, 1581622, -2376191, -3935264, -4238059, -30065, -2841121, -3706020, +-6187438, -3384971, 9970230, -6197638, 12112345, -18402324, -3794604, 4327717, -8880919, 21087216, +-17499308, -18014166, -14659260, 20390894, 9080098, -11905649, -10740103, -7184944, -2285996, -6481106, +-6667400, 947040, 7574712, 20140712, -2297271, 8545374, 7434589, 7220377, -13550085, -16900160, +-12159589, 14057428, -2511482, 17093970, 5635534, -1969243, -23534274, -19209778, -2042257, 1483911, +-13674639, -8591545, -6455873, -6611029, -30848066, -6769942, -7578470, -11176579, -5491653, -7339562, +-14186814, 9852655, 19157702, 10596221, 479963, 11261941, 14377940, -5225365, 4526896, 3586835, +1382980, -682900, -3715684, 10036265, 4038880, 16887274, -3982509, 1591285, 6017249, 33337536, +-427349, 17681306, 22445500, -2045478, -19624780, 1602560, 19494856, 2782065, -16712791, -15042586, +-19152332, 12392591, -15647640, -4326643, 22369264, -9716290, -15014132, 4544613, -4123169, 345745, +6105296, -9488656, -4226785, 1774895, -2814814, -4355634, -852014, 1623498, 11181410, -1142998, +-5807333, -5094905, -48318, -4399121, -3528853, -3234647, -5634460, -2772402, 2127083, -2789045, +-533650, -7765301, 1975148, -831076, 1552631, 7560753, 4800700, -4624069, 2097018, 1562294, +-6753836, -10406169, 3855807, 4013110, 594853, -10635950, -11374684, -1906966, -7945153, -2702608, +-1161789, 18866180, 13743358, -31657668, 10040023, 12627741, -5550709, 9171366, 30079804, 2473364, +6694781, -10508174, 6971269, -11105175, -7096897, -5916855, 2208687, 7740605, 10821170, -1551557, +4460324, -3273839, -1843615, -5806796, 7963943, 28395102, -9274982, -9153112, 10180146, 7181186, +1025423, -20649130, 13384729, -16462073, 9444633, 11853036, 1315871, 3013457, -3411815, 19537270, +14782741, 177704, 9942849, -7810935, 12538083, 2107218, 14158897, 20694226, -465467, 5255966, +-2705293, -7616051, -533650, 9026948, 10160282, -19750944, -12014097, 4643934, 21459804, -10391137, +14241038, 9557913, 2760053, -23012972, 2787971, 3599183, -27473296, 16202227, -15381888, -18263812, +-34772056, 8478265, 21081846, -9536438, -19407884, 4038880, 23365696, 14928769, 2593087, -3032247, +318901, 8262980, -7160784, 11020349, 17943836, 17127256, -1275068, 7269232, 17752710, -2780991, +-247497, -1952063, 15284178, -2243584, 3750580, -7145752, 3877819, -4394826, 582505, 220117, +-1209570, -3460133, 3340411, 9014599, 3028489, 2565169, -8148090, 2074469, -8412230, 2554432, +13226889, -4817343, 195958, 1746978, -6289443, -8185671, -9432285, -2138357, 5970005, -2768643, +1595044, -5701032, -590558, 217970, -17452600, -4476967, -748935, 3670050, 4442070, -3623879, +6182069, 3277597, 3299072, -5174362, -5073967, 7744363, 21812528, 15812459, -5468030, -42627552, +5005248, 21329344, 10177999, 4632659, -18700288, -118112, -12913356, 2996277, -1252520, 3528853, +6410239, 8930848, 3804804, -23178864, 13412646, -3231963, 4054986, 17591112, 6767258, 3282966, +-6313065, 21821118, -784905, 21688512, -26375932, -7762080, 8392366, -15374372, -13292387, 917512, +-3488587, -12037720, 1386201, 19160386, -663036, 1258425, -10104447, -20975010, -13389561, -6004901, +8653822, -2325188, 1988033, -10326712, -11247446, -5518496, 16634408, -11489574, 9562745, 6432251, +5363341, 1836099, -17293148, -24619826, -2046552, 16436840, -20478940, 9844602, -17639968, 10992432, +-18555332, -961536, -18296024, 25848186, -23666880, -14134201, 6053220, 4223027, 11803644, 9840844, +-6173479, -3288334, -6212134, 3186329, -311385, 15397458, -19212462, -7615514, -24672440, 12697534, +-8806294, 933619, -1088237, 6689412, -5508833, 2487860, -10133438, -15351287, 9785009, -7950522, +188442, 2496987, 13016972, 5188858, -9455371, 1972464, -3242700, -12131672, -2299418, 2797634, +3751117, -10974178, -5399848, 12028593, -1290638, -10206990, -4520990, 14121316, -16687559, -5689758, +3335579, -3911642, 5865852, -1295470, -7369627, -9892920, -3211562, -4460861, -3119757, -3287798, +2638184, -819802, 6113349, -6569153, 3364570, 1135482, -3017752, 6594923, -36378372, -5168457, +10863046, 2648384, -8687645, -12991202, 1175747, -12349642, -1176821, -19063212, 17809082, -7144141, +11134703, -24783036, -14085882, -524523, 30325154, -24861956, -2195802, -19463718, -15515569, -4742718, +18979998, -4438312, 8398272, 8885214, -10147934, -21589726, 30345554, 13215614, -17446158, 3352222, +2178622, 8368207, -16980690, 15156403, -1403381, -31805306, 3299609, 6344204, 8134668, -26355530, +-6371584, 3303367, 23134842, 4398584, 12859132, -33993592, -20724290, 10407780, -69793, 22159884, +-6013491, -3758097, 1626182, 11258720, 10252624, 3929358, -43276092, 12160126, -5105106, 9876814, +22950694, -7293928, -2125472, -26323854, 8461086, 11891154, -13917305, -8225936, 23748484, 37620156, +9760850, 6126771, -10739029, -4422206, -20636780, 1563905, 166430, -25378962, 9164386, -767189, +-7518877, -1938641, 11849815, -9721122, -6642704, -1133871, -2812667, -915365, 10448582, -4548907, +114354, 6073621, 2319819, 8355859, 6935836, 5354214, 3671660, 10004589, 11602854, -15658377, +4875862, -9771587, 7643968, 1169305, -10022843, -6715718, -3968550, -3273839, -6615324, 6027450, +-3429532, -6415608, 10661719, -1688459, -3534758, 6160594, 10980084, -19327, -4109747, 3085934, +10233296, 11273215, 6952479, -3655017, 1762547, 2119030, 9188546, -31213674, -20424180, -7045357, +-343061, -17786534, 14090177, -36881420, 1772211, -22646826, 11720966, -8405251, -25178172, -2239826, +-6802155, -8875550, -28677496, -20924006, 5958194, 22577032, -15197205, 27873264, -23796266, -15640660, +5060545, -2340220, 12625056, -7919920, -8329552, -11551315, -3266323, -39170100, -11313481, 1110786, +-1750736, -6548752, -15462956, 12270185, -13690745, 20885890, -6535867, -2630668, -14884746, -13676250, +-25993678, -11311333, 9515500, 3926137, -1625108, 1689533, -9387188, -7055558, -12085501, -10101763, +5221070, 7688529, 3551401, -22537840, 25694104, 3474092, -11264089, 20601348, 14654428, 24556476, +-4766877, 14318884, -33779916, -18231600, -31927176, 32350768, -10566693, -22610856, -21855478, -46147276, +-19426674, 31893890, -2236604, -16213502, 11531987, -31499290, -21196738, 7876433, -2007897, -26288958, +-25813290, -333397, -14909442, 3916473, 5316096, -19558744, 18866180, -11652246, -17250736, 1460289, +-10305237, 27181238, -10671920, 12202539, 1760400, 16516297, -8613020, -4859219, 1396938, -7561827, +-476205, -15881715, -12210055, -3082713, 6405944, 295816, 10790568, 4414690, 7949985, -7145215, +-255551, -13823889, -3599720, -5000953, 3911105, 13151727, 5859946, 5265093, 6057515, 5430450, +1235340, -18007724, -5565204, -12440910, -3319473, 2055142, 8244190, 40263708, 51555176, -4908074, +-22920092, -5462125, -8672613, -23157390, 9953587, 634581, -16785270, 49277232, 17088064, -11684459, +-34186328, -3070365, 8228084, 8983998, 9998684, 23568634, -6796249, -11664594, 11061688, -42776800, +-28592672, -11180337, -3081639, 4580046, -22851374, -20871394, 21984326, 17484274, -13466333, -25897042, +16415365, 471910, 28968480, -23604604, -5431523, -8058970, -1481764, -18664318, -27800250, 23328652, +-17243756, -10902774, -21247740, -4769561, 14017700, 13160854, -8571144, 1834488, 2461553, 17592186, +26968100, 19840602, -34570192, -16634408, -20509542, -5158793, 11793443, 4286914, -23629300, -34002184, +28805272, 1795296, -28222230, -46882252, 23632520, -6136435, 12721156, 11707007, 12440373, 1614371, +9188546, -18459232, -6962142, 12591233, 2321430, -8672613, 5252208, -2250563, -24813636, 12470974, +-31507880, -2124398, -1506460, -5559299, -11286100, -4476967, 13920526, -1023276, -3118683, 7038378, +-10139344, 30637076, -2360622, 2660195, -2210835, 207232, 7734163, -578210, 7458748, -15783468, +3479461, -2984466, -10853382, 1006633, 5325223, 10115185, -5067525, 2736968, -26071526, -8690329, +-1334124, -13841069, 11768747, -1708860, -3048890, -7514582, -10666551, -16053514, -22197464, 6603512, +-2113661, 16189342, 19531900, 12187507, -13080860, -18549964, -23172960, -8922258, 21556440, 17293686, +3147137, 7977902, -7337415, -13643500, -10080825, -9829033, 4538707, 18041546, 22355842, -27849642, +-23379118, 66219268, -5401458, -6535330, -10005126, -20970714, -2343442, 23861764, 38356744, -17742510, +-10756746, -3944391, -17552458, -4395362, -9929964, 15231028, -15874199, 17442400, 8257612, -6038724, +-22116398, -1651415, -9160628, 33042258, -18257906, -475668, -34360, -3325915, 14870787, -9557376, +-1344862, 6853694, -4627291, -32322314, 16375637, -14758044, -17167522, -3948149, -18306224, -10590852, +-33176474, 31623844, 1345935, -21095268, -38860328, 22546430, -22970022, -22334366, 188442, -17398912, +7727183, 14295799, 43957380, -12547210, 17139066, -3726421, -21434034, -18124762, -5413807, 66292820, +-58612344, -4294431, 60764660, -55730960, -21268678, 31367756, -4765266, -25191594, 58751932, -29165512, +-12250320, 27020714, 6563784, 11523397, -17599702, 19508278, 27315456, 12854300, -7172059, -1822677, +27582280, -4057134, 15712064, -391916, 10915659, -15895137, -2232846, 7300908, 4295504, 3047816, +564788, 1117765, 11364483, -5310190, 2800856, 4268661, 3719442, -24931748, -10451266, 7978439, +-21306260, 6350109, 11849815, -8927626, -9616432, -7269769, 4838281, -10219875, 11865384, 10245644, +-1557999, 5937793, -7735773, -15018427, -14874009, 29116120, 5005248, 18166102, 3488587, 3597035, +11260331, -9917616, -2607045, 18474802, -11244761, -25173878, 18605262, -2523293, 31513248, -39693552, +36044976, -5900212, -22044456, 19480362, 6985228, -3360812, 4257387, 2834679, -4086662, 7241852, +-7487739, -9768366, -4326643, -13615583, -11306501, -25762824, -9727027, 22567906, 21289616, -32083942, +11024644, 17365090, 14585709, -5334887, -31675920, -2668249, -15569793, -37125160, 23773180, 60029148, +-34112240, -3503083, 42722040, -11854647, -14936286, 34733936, 25851408, 12862353, -13703630, -27597850, +9503689, -11115912, -17353816, 62770412, 46261092, -37522444, -27560806, 34001644, -61391724, -21465710, +-17221746, -10416906, 43313672, 28862180, 19074486, 20905216, -72164040, -25045564, 69226280, 40189084, +8418673, -18195092, 24009940, -24074902, -48948668, -32573568, 24240258, -17727478, -3613678, 28079960, +51845088, -5995775, -28815472, 3952981, 20653960, -34957276, -12774843, 36864240, 33224794, 33254858, +23200876, -6360847, -20667382, -10165114, 28285580, 8320963, 12061879, -5159867, 3435974, 12984760, +1414118, -4852776, -5669894, -7778186, 6535330, 4747013, 27165132, 7765838, -5003100, -10473278, +2966212, 1576790, -3627100, -9164923, 2994129, 21023328, -21756156, -6376953, 20318416, -4325569, +-173946, 13515725, -4728222, 10064719, 4509179, 11780558, -21967148, -2954938, 5071283, 25691420, +6538551, 12456479, 11014981, 6131603, -4483946, 8659728, 12453795, -13324599, 7133404, -61268784, +26558468, 331786, -6247567, 31439160, -5307506, -23684598, 11960410, 10896869, 30750892, 17430052, +-16571058, 918586, 4789426, 21067888, 4922033, -24199456, -889058, -1364189, 4986994, -22511534, +-24526410, 35629440, -12783433, -37220188, 19207094, 33071248, -18544596, -6313065, 2224793, 22673670, +-26982596, -35496832, 9802726, 29997662, -6442451, -12776454, -7353521, -7303592, 13107703, 5564667, +7857106, 75590352, 4239133, -9657771, 1095754, 2375117, 40890236, 1291711, -14443975, 9196062, +-31845036, -18746458, 8345659, 158377, 35156456, 27849642, -17955648, -5283347, -16969952, 803696, +12655658, 3185792, 3980361, 12577812, -8958765, -37168648, 9540196, 25074020, -11777337, 22126060, +-34324304, 16188269, 10459856, -30169460, 5247913, 587874, -13069585, 1369558, -5540508, 14986215, +14719390, -25281788, -15495168, 33709588, -25648470, 12390981, -2319819, -9901510, 7491497, -1014149, +-15051176, 8614631, 5321465, 6164352, -378494, -2580739, 1774358, 4665945, -5672578, -5484137, +4685273, 3281355, -3089155, -281857, 7565048, 12550431, -7326678, -5079873, 1714229, -2248952, +4508642, -3113851, -1571958, 2907156, -32212, 7543573, -2264522, 3724811, -9645423, 5940477, +-6689949, 6280853, 11167989, -974421, 338229, 1542967, -12567074, 21321292, -39366596, -129994704, +-153868272, -13640816, -106646720, 42198052, 260760880, 140367040, 211834224, 223225552, -24021752, -64063196, +19283330, -162230576, -198335680, -61143692, -218355600, -175270096, 44725640, -126021856, -34170224, 251806416, +91316376, 178082768, 307539520, 183100896, 82037096, 62457952, 22011708, -136706128, -170201504, -56047176, +-232546704, -232748032, 30930206, -174011136, -142734656, 86126976, -146353152, -150543440, 114015272, 46413028, +-20571820, 268790336, 251757568, 160793376, 341240512, 321543808, 110016128, 128091496, 99921880, -161630896, +-161975568, -204945632, -405914144, -479237824, -344579328, -343098624, -252981632, 8850317, 23626616, 167358240, +289322944, 356492480, 324891712, 376936000, 323047040, 190562336, 128242888, 42798812, -63411972, -142835040, +-203224432, -174645712, -253262944, -283750784, -235234288, -275115200, -206328624, 32909114, 66457640, 160562528, +321951296, 256349952, 197674256, 149405808, 59020368, -48597020, -39573292, -80473192, -100683696, -76896024, +-87436408, -84533544, -35874252, -34111704, 2164664, 52511344, 37479496, 73653856, 88517128, 15577310, +64287072, 61702572, -16800302, 20645370, 14656039, -46595564, 2299955, 15355045, -53863184, -58930708, +-82276544, -169632960, -189603472, -147516016, -140883520, -46046344, 69653632, 125216016, 203660912, 307008032, +331532288, 307394016, 215565488, 65954056, -69013144, -148154896, -221248256, -273264064, -268667392, -209836000, +-143895904, -68214816, -20581484, 9103720, 25472914, 63021664, 103716480, 106873280, 99418832, 101996344, +72934984, 65732328, 57207892, 23780160, 6444599, 15372225, 13837848, 9188546, 6893960, -11006391, +-32198296, -46876348, -53939956, -44794360, -26738856, -17313550, -15388868, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -8929774, --10633265, 5459977, 321586, 8239895, 2979634, 3637301, 2328409, 3346317, -105764, -109522, --1868311, -5405217, -3132642, 1436667, -283468, -997506, -657130, 2874407, 2221035, 32212, -2575370, -2423435, -6164352, 1959042, -1449552, 689879, -3154117, 2460480, -2587181, -1283122, --1036698, 4407710, -1062468, -48855, -1864016, -506269, -5000953, 1677185, -868657, 2688113, --2393371, 317828, -1146219, -3995393, 1238024, -398358, -1110786, 1777580, 3253438, -681289, --2045478, -5842766, 499827, -3474092, 1578937, 56908, -2284386, -91805, -1000727, -817118, --4249334, 2725694, -3772055, 2064269, -1506460, -2495376, -2160369, -4489315, 2437394, 229244, -1195612, 2700461, -2916283, -4603668, 2913062, -4411469, 105764, -2939905, 901406, -2275796, -1966021, -1151051, 1020592, -1963337, 317828, -911070, 1141388, -941135, -1074279, -1002875, --987843, -1761474, 216359, 433255, -346819, -1387811, 920734, -1047972, 106837, -700617, --1241246, -442919, -470299, -193810, -306016, -176094, -1032940, -536334, 109522, -594316, --359167, -318364, -15739981, -189515, -2106145, 4116189, 59593, 1572495, -1318018, 2038499, -382789, 1780801, -1835562, 10130754, -2223719, -1445793, -4373351, 1442572, -5276904, -1706176, -379568, -2574296, -49392, 3707094, 2119566, 1398549, 2495376, 3600793, -4415764, -1697049, --97174, 2283312, -4166118, 4035659, -3488050, -1769527, 3235184, -630286, 740345, -2596308, -2988760, 3122441, 3357591, -5184563, -1584843, 5572183, -80531, -856309, -1257889, 6076305, -3966402, 4697621, 81068, -1116155, -1411971, -348966, -129386, 677531, 1820529, -5902359, --532576, -2756832, -3479997, -470299, 1003412, -3069828, 817654, -2349884, -853625, -959388, --68719, 2022930, 1891396, -1082332, -693100, -1350767, -4772783, -1148367, -2956011, 61740, --3900367, 1041530, 72478, 3930432, -1352915, 522912, -3412889, 278099, 493921, -1617592, --1628330, 1655710, 70867, 423591, -142271, 1153736, -289910, 465467, -178241, -296890, -1450625, 629750, 621697, 193810, -132607, 5335960, 6320581, -4410395, 558346, -3763465, -5790153, 1056025, -2406256, -3407520, -3016141, -638876, 725850, 1527935, 7705708, -4598836, --740345, -1832877, 3012920, -8627516, -1020055, 5484137, -163746, 4606353, 2029909, 3692598, -3841848, 1665374, -766652, -4057134, 1322313, -1143535, 500364, 6415071, 1606855, 5502390, --2910914, -1518808, 406948, -7429220, 854699, 5531381, -1643362, 505732, -4651450, 3490735, --92342, 1544041, -5502390, 3218541, -3700651, -2066953, -3864934, -4534949, 2592550, 874026, --1480153, -2326799, -2204929, -1621887, -1109175, 2550137, -2551748, -4606353, -7093676, 6540162, -5013838, 261456, -7096360, 2142115, -3409667, 2780455, -2308008, 498216, -4352413, -2742337, --5665599, -2565169, -802085, 5513128, 3278671, -6169721, 2662343, 129923, -544924, 2688650, --374199, 2134062, 4376572, 223875, 916439, 2902324, 593779, 576063, 2867965, -510027, --82678, 216359, 368830, 607201, 709207, -644245, 828929, -603443, 207232, 141197, -733366, 168577, 1815697, 1588064, 111132, -88584, 1782411, 910533, -1343251, 255014, -642098, 26761942, -9898826, 12004970, -9486509, 844498, 2871723, 2838437, -7826504, -2640868, --2609193, -13126494, -42413, 721555, -4711043, -741419, -27917, 9429064, 1767916, -6534793, -4819490, 5253819, 1196685, 9557913, -7059853, -2570538, -3759170, 2036888, 7666517, -530428, -511101, 2864743, -1336272, 3435974, 1570884, 8748312, -1287417, 3442953, -5686537, 5238250, --3972308, 5845451, -74625, -6067178, -884763, 8818105, -359167, 5973226, 3602941, 5745593, -540092, -4508642, -3655017, 115964, -2708514, 4720169, 3147137, -4629975, 672699, -3613141, -6234682, -1666984, 5008469, 5963025, 1072668, 6146098, -250182, -2949569, -977105, -3764539, -206158, 8069707, -5014375, -5148055, -1920924, 2305324, -3503083, -2171106, 1593970, 3886946, --1570884, 1440425, -7770670, 1941862, 542777, -538482, 2770254, 193274, 772557, 1876901, --200790, -991064, 878321, -1779190, 601295, -730144, 263604, 359704, -239444, -607738, --1522566, -105227, -1204738, -757525, -485868, -2671470, -22262426, 2440615, -6553583, -4685810, --7187628, -8713952, 3440806, 7796977, -1172526, 3033321, 1236951, 4005057, 909996, 295279, -2418604, -4770098, 11064373, -573915, -6438156, 7261716, -2217814, 3083250, -7257421, -4516158, --5142150, 2228014, 1352915, 5681705, 173409, -3529926, 594853, -3151969, -3464428, -3844533, --1335735, -5352603, -2712272, 4985920, -4642860, -330176, -3632469, -5681705, -2531346, 708670, -1818919, 3601867, -2860985, -2626373, 3562139, 617938, 1340030, 941135, 2204392, 3337727, --5437966, -1826972, -554051, -7627325, 2017024, -544924, 4459250, -4476967, -3415573, -4185983, -716186, 4714801, 3653944, 8324721, 5590974, -5166846, 2089502, -2349884, 3941169, 2454037, --5576478, 4000762, 1076426, -6200322, 792958, -1145146, 526134, -1179505, -4228396, 753230, --3034931, -3207804, 1163936, -1775432, 729071, 2244121, -1523640, -2049773, -2110440, -3174518, --590558, 2403034, -648003, 2499671, 16643, 1678795, 1155883, 859530, -1131724, -472446, -429497, -1129576, -1231045, 256624, -1188095, -489626, 318901, -2247879, 1240172, -1168231, --387621, 219043, -79994, 140123, 714038, -1024350, 635118, 1447404, -28349468, 7783555, --8455180, -7044820, -5066988, 955630, -1474248, 16699370, 1645509, 3995393, -1860258, 63888, --6859063, 6812355, 1991254, -993748, 1370632, 8893267, -4453344, -1541356, 2055679, 613107, -4467840, -3890704, -1745904, 4902705, 1804423, 4515621, 543313, -4804995, -3140158, 2697776, --464930, -1638530, -2994129, -1739999, -195421, 8419210, 2131378, -1537061, 179315, 609885, --2555506, 6059662, 4651987, -1462973, -6378564, 1580548, -3376381, 5761699, 4491462, -4523138, -1759863, -5852430, -5195837, -4593468, -5733782, -2007360, 1267552, -3476776, 286689, -3838627, --3227131, 6626061, 4234838, -5672578, -7614977, 821413, 6488085, -5043366, -3714073, 5443334, -4313758, 6212670, -4031364, -218506, 1767379, 2535105, 7026030, 1853815, -919660, -317291, --5120138, -818728, -93416, -4445291, 320512, -1347546, -2006287, 31675, -594853, 2110977, --521302, -903554, 1028108, -717796, -1831804, -1265405, 383326, 1686848, -839666, -720481, -51540, -501437, 3289945, 523986, 4265977, -3092377, 768262, 145492, -1782948, -119722, --151398, -2366527, 576063, -520228, -2535105, -2434173, -1233193, -2333778, -1722282, 503585, --1126892, -14919643, -1469953, 2524367, 7270306, -1403381, -3795677, 1713692, 10678362, -13425531, -3123515, -2714956, -2487323, -6036040, 3642669, -10755135, -7004018, 3716221, -5624260, 3420405, -15347529, -2699387, 6205691, -7199439, 7413114, -1909113, 2213519, -6454799, 3024731, 1854889, --3465502, 1542967, -697395, -3310346, -220117, 4233227, 6606734, -5152350, -8247948, -6516539, --6054294, 805306, 4843650, 12851616, -146566, 8662412, 9023726, -8373039, 6455336, -12324946, --4515621, 805843, -5493263, -5094905, 3424163, -11933567, -2364380, 8345659, -3591130, -3103651, -1096827, -3627637, 3399467, -3598646, 5833103, 7565048, -2091112, 2369748, 310848, -7605850, -653909, -4912906, -3409130, -6002754, 3427384, 2652679, -5796595, 498753, 4313758, 4041564, -5111011, 5300527, -809601, -4982699, 4151623, 2203855, 2485176, 1387811, 3001645, -310848, --101469, 470836, 1233193, 1486596, -2055679, -600759, -1658931, -1069984, 2408940, 2102923, -2325725, -4195110, 862215, -496606, -1744831, -2010045, 2178622, -1314797, -2311766, 618475, -545461, -727997, 5141076, 1740536, -1010391, -1104344, -2390149, -627065, 2101313, 3236795, -804233, 42950, 3222299, 35440460, -1652489, -13935021, -1694902, -555125, 1399086, 4517232, -1876901, -1561758, -1393717, -6986301, -3278134, 4010963, 8704825, -7023346, -4396436, 5834176, -529892, -2014877, 2374043, -500901, -8139500, -8287140, 11429445, -994285, -659814, -1833414, -5902359, -386010, 680752, 3784403, -6161131, 6674379, 2814277, 1145683, 2589329, 6672232, --15812996, -7038378, -3795141, 14705431, 1957431, 1167694, -4438312, -4893042, 4449049, -586263, -5147519, -1734093, -10080288, 1163399, 1309428, -1461900, 5001490, 2290291, 1393717, 8189429, -19844896, -1488206, -1602023, 7609072, 2357937, -2258079, 5243618, 15467788, -1658931, 3024731, -5640903, 4558571, 4072166, 4170413, 4641249, 3606162, -4000762, 6222871, 11043435, -2455648, -4275640, 142808, -1316944, -7512972, 4802311, 1876901, -554588, 2384781, 2697776, 712965, -368293, -2474975, -2882460, -1074279, -5804112, -2520609, -3913789, 5184026, 2558727, 2025077, --766652, -679679, 359704, -3284039, 66035, 1328756, -4600447, 4174708, -1973538, 817118, --1369021, 314069, 1603097, 1949378, -3576097, -3499862, -2937758, 498216, -566399, -902480, --224412, 2613488, -614717, 359167, -1442572, -3096135, -1692754, 7154342, 7966091, -10118406, --2925947, -8588324, 8529805, 15964930, -7626252, -1782948, -8750996, -3801046, -10591926, 7570417, --6460168, -2625299, -670552, 82678, -4205847, -5189394, 9540196, -8637179, -3177202, 994822, -6516003, 6945499, -9946071, -2923799, 3849901, -8564702, 4887673, -6794102, -2749853, 2509335, -221728, -3716221, -1013075, 2051921, 11155104, 1379758, 2537252, 4832, -9494562, 10401874, --5077188, -7797513, 6266894, -5558762, -6263673, 8198019, -3681324, 1049046, -1785633, 1101122, -10802916, -1844689, 2444910, -9423158, -710280, 10966125, 2483565, 10864120, 9335111, -3065533, --2349884, -12644384, 1974611, -2129230, 8413841, 10263898, -5869073, 2551748, -18533858, -5084705, -6187974, -6423124, 9659918, 638876, 2116345, -3416647, -681289, -4464082, 827318, -3080565, -6834904, 6671158, -263067, 2264522, -61740, 3764002, 1672890, 2722473, 5784784, -1743220, --6416145, 2950643, 1515050, 4078072, -1020592, 4327180, -841277, -1526861, 1142461, -2632278, --1687922, 424128, -4490925, 1248225, -1529545, 4004520, 1792612, -318901, -803159, -2678986, --3971771, -346819, 602369, 1610076, -1421097, 875636, -3729105, -78383, 287763, -2028835, -2601677, 227633, 122943, 1050656, -1174674, 167504, 90194, 6406481, -8133595, 2793339, --7605314, -823560, -10275172, 16896938, -4964982, 1155346, -5325223, -15400142, 8890045, 3117610, --11489574, 7125888, -5171141, -3806952, 4030827, 15993921, -7970386, 15451145, -293668, -10849087, -467078, 3615289, -9540196, 10550050, -5519570, 7814156, 16983374, 1666447, -7914551, -2211908, --890669, 3897683, -6728067, -3675418, -894964, 8371965, -2970507, -3352759, -11092827, -369904, --13117367, -2413772, 14901926, -3331821, 8494372, 812286, 2281165, -19498614, 289373, -12473122, -10077604, 17488570, 5417028, 4402342, 1110786, 2630131, -10167798, 3604551, 5473936, -4529580, --1242319, -4013647, -2534568, 7891466, 210453, 9569724, 29316910, 10710038, 2957085, -10044318, --9313637, -6044630, 5790690, -9944997, -828929, -892816, 2076080, 5650030, -5425618, -1014686, -5484673, 5995238, 1270774, 1036161, 4107599, 5164698, 4340065, -32749, -911070, -950262, -496606, -2111513, -2611877, 2348810, -1298691, 3642132, -4393215, -1388885, 3115462, 2625299, --217433, 2373506, -2237678, 1090922, 1663226, 2204929, -2460480, -2451353, 3523484, 2498597, -2000381, -882079, -1699733, 857383, -4892505, -1283658, 844498, -2619930, 1256278, -1814624, --1232119, 573378, 455803, -404801, -925565, -3669513, 30596274, -16569447, -454193, -8233989, --15529528, -20725902, 5737003, -6649146, 6075231, -19618874, 3841312, 6982543, 6282464, -8249559, --18012556, -14191109, -11917461, 131533, -6941204, -13160854, -9062381, -4624069, -10751914, -7514582, -1753420, 13515725, -403190, 1891933, -539018, -11967926, 7281580, -1132261, 2088428, -2710661, --7957501, 6660958, -9908490, -13807783, 12240657, -13472776, 2567317, -181999, -18891414, -11294153, -7256884, -400506, 8943733, -6073084, -20066624, -147640, 588411, 7382512, 7850127, 18589156, --10924249, -38511360, -13559749, -13182865, 8486319, -25117506, -8593693, -4250407, -23079006, -7725036, --519154, -4445828, -4436701, 4937602, -6322192, -620623, -5939940, 5321465, -13631689, 4793721, -10715407, -13739600, -7004555, 6657200, 5158256, 4468377, -14125611, 3251290, 33286, -2051921, -7289097, -1942936, 5971079, 5318244, -1342714, 1602560, 1044214, -1763621, -4789426, 7569343, --2639258, -5452461, 35970, -289910, 3961571, 1374390, -116501, 1198296, -4164508, -4201552, -334471, 1367947, 2324114, 4301410, -639413, 1923072, -561567, 1691143, -4825396, -2120640, --3385508, -3080029, -619549, -722091, 1604170, -5411122, -2542084, -4071092, -2951180, -5666136, --6978785, -6180995, -775778, -637266, 625455, -3834869, -4932770, -17763448, 6977711, 8732205, --2961917, -3444564, -8876624, -9779641, 22493280, 8185671, -21070572, 7260106, -11498701, -1108638, --10451803, -21618718, 6303938, -11269994, -4755066, 886374, 590558, -5505075, -18318572, -11333345, -8922795, -11203959, -352724, -9908490, -15253576, -5915781, 16844862, 2717104, 2962991, -14713484, --4982162, -3000572, -1964411, 6003291, 7358353, 9564355, 11767137, -5741835, 6612102, 2356327, --6868727, 4220879, -11512123, -9955197, -8681203, 3762928, -10022306, 523449, -15046881, -13111461, --6824703, 15603079, 12102144, 11871826, 12993887, -11944304, 16292422, 607738, 7481833, 22531398, --4662187, -4060355, 3613141, -10734734, 4414153, -4993973, -14013941, 1915555, 11365557, -13394929, --9669045, -1547262, 12214887, -10144176, 1119913, 3898220, 7320772, 1974074, -3110093, -6863358, -1817308, 5364414, -2936684, 810138, -3683471, 1309965, -3507378, 1534377, 149250, 2097555, --1384053, 1506997, 2398739, 6514392, -897648, 47245, 423591, 3144453, -4804458, -1758252, --5283347, -1241782, -1272384, -5718212, 1004486, 5602785, -603980, -6835978, -1327682, -401043, --6277632, -6670084, -10239202, -3929895, 3730179, 898722, 2593087, -1251983, -1966021, -3340948, --684510, -8582955, -1775432, 5633387, 8299488, -110595, 2378875, -4704063, -8392366, -19698868, -22737020, -17595408, 23542864, 13214004, 9028558, 5108864, 9311489, 10094784, 9351754, 25285546, --8720394, 1862405, -1582696, -4264903, -662499, 3206193, -2237678, 4928475, -1530619, 7960185, -6716792, -1342714, -4258997, -25041270, -8840653, -18145164, -733366, 9676561, 9798968, 3151969, -5046587, 7308961, 6094022, 7084549, 18100602, 26894012, 18112950, 3692061, -3299609, -5123896, --7589744, 9445170, 9676024, 10775536, -7857643, -6230387, -9773198, -1583232, 13191992, 175557, -15785615, -9454297, 8511551, 5099737, 14180908, -29350196, -20928302, -8580808, -11691975, -12046846, -3750580, -4898410, 18624588, 5524402, -20500416, -1670742, 33503430, -11224897, 10536629, -5018670, -13845901, -6367826, -4043175, 512175, -5537287, -7429757, -404264, 5625871, 8390219, 5769752, --2034741, 6502581, -1593970, 3010772, -8369281, -5783711, 5585068, 3466576, -8413841, -3727495, --3492882, -1150514, 2262911, -2257542, -4053912, 1921461, 518080, 1387274, -534723, -2433099, -3934727, 1219771, -2013803, 5001490, -564788, 1451699, -797790, 5895380, -4895726, 5243082, -2455648, -4997195, 3417183, 133681, 1015760, -5217312, -14954539, 5606543, 270046, 1036698, --1591285, 5690295, -1256815, -2759517, 1979980, 4421669, 3867618, -2306934, 4762045, -14501420, --7264937, 11994770, 5235565, 8841727, 23098334, 1956358, 15432354, 22551262, 15668578, -10241350, --22967338, -799938, -10548440, 24729884, 7120519, 19312858, -2771865, -10401337, -3828963, -11348377, -4457639, -8742406, 1042066, -9735617, 5039071, -7125351, -2989834, -15614354, -15440407, -1575716, --22115860, 12060268, 8332774, -6663642, 11311870, -5439576, 4393215, 12548821, -13986561, -18375480, -3248069, -4059818, 30746598, 13008382, -33765960, -9174587, -9594420, -17477832, -18447958, -37769944, -6632503, -13578539, -3553012, 5335423, 1355599, 7690676, -1513439, -4536023, -28594818, 3322157, --13009993, 3433290, 16738561, 3447785, 11218455, -17107928, -22619446, 4485020, 13996225, 9349070, -5247377, 8876624, 14552960, 18135500, 18727668, -16751983, -10042170, -12095702, -8595840, -14107357, -19761144, 11491722, 11138998, 2950643, 8517457, 7201050, -702227, 10230612, -15933255, -5709086, --1904818, 1202054, -3449396, -11403675, 644782, -2396055, 1471026, 3556770, 11551851, 528818, -5408438, 5301601, 871342, 5633387, 198105, -3601330, 714575, -8786429, -3510599, 4505958, -6673843, 1925756, 1234266, -10724533, -1011465, 246424, -5079336, -3661997, 1592896, 3267396, --9709847, -10903848, -4886599, 3514357, 3153043, 5356361, 1345935, -3579318, 2447058, -11290932, --9878425, 40805948, 26949310, 37439768, 2421825, -7427609, -25447682, -7508140, 4246649, 5900748, --6075231, -19662898, -7117835, 32349694, 13364864, -4477504, 9895068, -732829, -11901891, -3474092, --7772280, 22056804, -1712618, 1292785, 9502615, 623844, 10784663, -114354, 15273441, -14075145, -17600776, 3566970, -8230231, -4967130, -9114994, 15907485, -22069152, -23805930, 15027554, 24893630, -1140314, 17183628, 23605140, -26615376, 8826695, 5435818, -1494112, -245350, 3917010, -9992778, -18520972, -11265699, -8989367, 7492571, 905701, -2017561, -4357781, -5553930, 2633889, -17584670, --5309654, 14149770, -17388712, -4002910, -11762842, 431107, 35041564, -11033771, 2202781, 9379672, -118112, -8091182, -21978422, 21406118, 9931575, -44164076, 10878615, 11098195, 8150774, -9915469, --4679367, 22537840, 941672, 1644973, 5709622, -15705622, 523449, 9962714, -4158065, 5747740, --1337882, -5121212, -13165685, 1969779, -1810329, 12096775, -1223529, -543313, -8807904, 9574556, --3333968, -3371013, -13909788, -6973417, 4742718, -8924405, 619549, -4420058, 5401995, -5246303, --11228655, 5563594, -12090870, -3329674, -5571110, 505732, 588947, -4548371, 11777874, -1537061, -15926276, 9740449, -1773822, 1616518, 10123775, -7209103, 1672890, 1138703, 9696426, -9029095, --5483063, -17971216, -43437152, 39140036, 23439248, 12586939, 8933532, 19466402, -43833900, 18366354, -20631412, 8979703, -27964532, 15967078, 28809030, 13485124, 31739808, 11734924, 807991, -994285, --716723, -5107253, 13605920, 22611930, 21567178, 7695508, -6272263, -10858214, 2927557, -9864466, --11567421, 12702366, 8837432, 2616709, -11593190, -11302206, -2263985, -9795747, 5392869, 25938918, --4296578, -8070781, 8946954, 4893579, 7887171, 9209484, -1693291, -4954782, 20920786, 13891535, -7023882, 9339943, -1391033, -20293184, 5032628, 13885092, 2043331, -15050639, 20709258, 5548561, -28700582, 1272384, 25827786, 2946885, -8104067, -2509335, 6401649, 36588828, -4323959, 13283260, -9236327, 17393544, 9275519, 280784, -834297, 11412802, 52032456, 2617246, 21036212, -17355962, --12837657, 6765647, 8407398, 10275709, 4416837, 1839320, -25173340, -9883793, -26409218, 1632088, --4317516, -8637716, -7196755, -2796024, -10992432, 1580011, -907849, -11671037, 8719857, -13624173, --6437619, -12289512, -8252780, -669478, 1622961, -9808632, -11299522, 2917357, 7592429, 8709657, --1497870, -3153580, -14615237, -19303194, 2185602, 2495913, -8614631, 17792976, 17346836, 25424596, -9116068, -5470178, 3691525, 7915625, 9812390, 11592117, 1923609, -11916924, 3248069, 15453829, -8096014, 858457, 6368900, -28547038, 31158378, -542777, 27574764, 610959, 1822677, -25162602, --7761543, -11365557, 19126026, 4797479, 8457327, 4983236, -19299972, 1821603, 1515050, -17007534, --24244554, -24839406, 8362302, -9295920, 22528178, 1198296, -7162932, -5953899, 4855461, -8834211, -1452773, 6500970, -9483825, 5216238, 7604777, 2476049, 2180770, 16935056, 28682866, -5737003, --213138, 14281840, 11813308, 17127256, -12780212, -5147519, 5221607, -17288318, 1699733, 1356673, --22756348, 29233158, -1410897, 14685030, 12826920, 8835285, -17299592, 1501628, 14847702, -12193412, -26400090, 7099044, -9598715, 21656836, 16478179, 11323681, -36659692, -7622493, 7351911, -12678743, -2021319, -20617454, -5077725, -31171262, -8827232, -4893579, -8517457, -34529928, -3398930, -9538585, -51717848, -7591892, 10579578, -5460514, 8326331, -4491462, -8369281, 5428839, -7004018, -1246614, --3732327, 13723494, 5062156, 5945846, -22231824, -20113332, -14824080, -6365142, 4041564, -28210956, --4420058, -2416993, 2203855, 10109279, 7881802, -999654, 10998874, -9981504, 345208, 430034, --16027744, -22473416, 4537096, -6688875, -20559472, -5840082, -9601936, 1249836, -21977884, -2688113, --9501541, 12903692, 386010, -9609989, -3266323, 3907347, 5352603, -2280628, 10182831, -10269804, --6077916, 12779138, 12555800, 16088411, 14131516, 10531260, -7634841, 6588480, 17639968, 17034378, -7501698, -20534238, -23833848, 10620380, -3263102, 7690139, -4369056, 20272782, -15080704, -3087545, --5187247, 17689360, -13242458, 30986578, 38071128, 38845832, 2415919, -7154342, 6327024, -4997732, -9521942, -1609002, -187905, -11323681, -31118648, -10326175, -29801168, 17150878, 16124381, -18331994, --13730474, -18377092, -8584566, -2609730, 40699112, 529892, -20718386, -22239878, -1314797, 28491202, -13619878, -56948044, -11599096, -10022306, 7530152, 21482890, -24724516, -7783555, -14710263, 6535867, --33749852, 16864190, -5601711, -699543, 9409200, 1459215, -16510928, 33415920, -3308199, 15938087, -35736276, 73256576, 43923020, -992137, 24690694, 37403260, 48037060, 52111912, 14923401, 31957242, -9154723, 501974, 19604378, -15304042, 32139778, 13857712, -13915157, -47759500, -34778496, 4645007, --13567802, -9709847, -8788040, -5194226, -5828271, -19601156, -12853227, 852014, -2993592, -958851, --6147172, -1620813, -10211285, 12888123, -21213918, -8570607, 6233608, 4062502, 1989644, -5348308, --6581501, -3607236, 4366371, -3235184, 11048803, -12724914, -16093242, -16034187, -9908490, 12513387, -13919989, -5005248, -2330020, 5226975, -2559801, 23146116, 5062693, 2219961, 18473192, 11731166, -10605348, 26275000, 17219060, 19826642, 6203007, 9672803, 21604760, 8531953, 8972724, -7183333, --16262894, 18925236, -23647016, 39813272, -4610111, -7207492, 814433, 31722628, -21053392, -3650722, --843424, 510027, 11560441, -8108899, 16636556, 5829881, -3037616, 3925600, 1977833, 13088913, --39737576, -12475806, -1142998, 4292283, -3863860, -28936806, 23883776, -1243930, 3328063, 8697309, --18860812, -8556649, -43856984, 11707544, -10227391, 8485782, 32136556, -8734890, 6786049, -4072166, -15351287, -26169236, -35035660, 30798674, -2835215, 2699924, 5255966, 30976914, 22580254, 26891864, --419296, -35868884, 21356724, 10062572, -8449811, -12656195, 20412906, -3677566, 25798794, 42672112, -33166274, 5694590, 2921115, 31493384, -6172942, 9707163, 25901874, -17566954, 29943976, 18361522, -10693932, -21097954, -10419591, -28169616, -794569, 9733470, 42039676, 17747342, -38981124, -3551938, -25259776, -3651796, 12312597, 16950088, -27635430, -6794102, 13543106, 3301219, 7585986, -12040941, -9012452, 15269146, 2014340, 261993, 22326314, 4292820, -4770635, -5750425, 7434052, -1932735, -12012487, 1923609, 9099425, 10341744, -1531156, -10660646, 21976810, -3124589, -6702834, -1387274, --14870251, -14958834, -9811316, -10354629, 7159711, 13016435, -13034152, -11169599, 2629057, 19543712, --28168006, -6823630, 10910291, -3330747, 91805, -3827353, -3027415, -20253456, -265214, -5392332, -5631239, 1568737, 3388729, 237297, 1771137, -1603097, -55188184, 12604118, -9155260, -2200097, -43050604, 18478024, -13526463, -10499048, -180926, -27904940, -34149284, 2841658, 284542, -19253802, -20372104, 2421288, -19709068, 12400644, 37046240, -5018133, -21350282, 13350369, -12571906, -13759465, -6916508, 30032558, -9794136, 4344360, 8257612, -9346386, -22395570, -14767171, 29726542, 10386305, --29286308, 24990268, 9844602, -20153598, -10478646, 41195716, -13406740, -31755378, -16255914, 54774792, --54134840, -25187298, 32160178, -14632954, -17389786, -51697984, 40287332, -33138358, 11861626, 1618666, --6164889, -58376660, -17190606, 49777596, 31490700, -39532488, -10757282, -17182016, -8036958, 7973607, -10878078, 12873628, -68801080, 37543920, 28923920, 30187178, 521839, 15744276, -33634424, -30070676, -58980100, 24053964, 6586333, 23601920, -31656056, 6258304, -13969918, 15029701, -8500814, 41216116, --16789028, -14506789, 5805185, 4857608, -15569256, 9281424, 4619774, 3384434, -2873333, 1956895, -3405372, 3226594, -3793530, -2379412, 8741869, 354872, -4509179, 17947594, 5418101, -16232292, -1858647, 15370614, 4134443, -15451145, 20613696, 36699420, -18025440, -21283710, -5640903, -4922570, -12594992, 26840862, 8272107, -25148108, -8231842, -3797288, 3815005, 7435126, -4112968, 10880226, --7885560, -1122060, 6552510, -45426796, 7956964, 56883084, 17827336, 6168110, 1622961, 4337380, -24431384, 33423436, -7563975, 6298033, 8691940, -5677410, 20184198, -10543608, -2785823, -7964480, -15520401, 11540577, -6253473, 10615012, -15095199, -12290586, 15496779, -9866077, 17022566, -11251204, --4963909, -274878, 9330816, -524523, 6957310, 2849174, 17333414, -12307766, -2416993, 357019, --6818798, 16734803, 14526653, -11904576, -4189204, -7297150, 3888556, -15374372, 8375186, 4808753, -7691750, -6114423, -4625680, 19040664, -22769770, -3899294, 9681393, -6144488, -4099010, 9982041, --27996208, 6818798, -10101226, 1723893, -9890773, 24300924, -7845832, -10430328, 10008348, -5462662, --15849503, 30892626, -803696, 3206193, -6845104, -11833172, -13950591, 15608985, -17434882, -8382703, -17839146, -24237038, -10531260, 3180423, -2231236, 3029563, -335007, 3514894, 10860899, -3837017, -4285304, -4902705, 11394548, 6267968, -435939, 1013612, 6960532, -6022081, 5071283, 870805, -5573257, -2446521, 8637179, -4325569, 2357400, -7423851, -6406481, -10160819, 1953136, 651761, -3464965, -4952098, 11472395, -3719979, -1915555, 9851044, 8688719, 4683662, -3969624, -6525129, -5945846, 7866770, 4947803, 3426847, -56908, 7114614, 7710003, 3437048, 6556268, 905164, --5001490, 14734959, -42477764, -119853744, -98487360, 51880520, 14797236, 118887376, 212517136, 31457414, -66920960, 24263344, -169716704, -53757960, -115171696, -139164992, 3789772, 22075596, -58116276, 83915072, -109881368, 61611844, 175317344, 101045552, -22690312, -41772852, -81528680, -158582544, -125250376, -37015100, --111701896, -15683073, 96156800, 15943455, 22291418, 145415776, 74132208, 45796700, 151633280, 23246510, --42012296, 59192704, -79595944, -157556576, -65996468, -132951248, -166342480, -2565169, -34831648, -43888660, -110586280, 121865936, 77517720, 183938416, 148405616, 69927976, 63248224, 36550708, -123118992, -113288888, --143406816, -189333440, -151813136, -64151244, -44088912, 3741454, 108652472, 132120176, 138337136, 132578664, -122876328, 26090852, 2172717, -21033528, -93864360, -102871448, -59475096, -107861128, -45431628, 9248138, --23607824, 53902376, 97165584, 29590178, 40993852, 18125298, -26652956, -16721381, -40745280, -53049288, --6448894, 14721537, 325344, 43472584, 40182104, 4415764, 38681012, -145492, -49143552, 43142948, -12961674, -43791488, 30595200, -32478542, -65641596, 29792040, -46732464, -115732192, 1753420, -51037096, --33719788, 114390552, 51774220, 54308252, 163842272, 108506440, 60254632, 71389872, -17882634, -103752992, --131733088, -178965920, -197857872, -125675040, -80234824, -13973676, 75252656, 167494592, 185031488, 171438992, -178644336, 95409480, 4387846, -45678588, -117630568, -150588000, -97391608, -108795280, -86541984, -17474074, -3308199, 11541114, 42762840, 36324148, 31913218, 56554520, 56602300, 47831440, 56633440, 39530880, -14287746, -2864743, -21993454, -52027088, -54877872, -40637908, -32021666, -13900125, -4604742, -3220689, --3836480, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-10633265, 5459977, 321586, 8239895, 2979634, 3637301, 2328409, 3346317, -105764, -109522, +-1868311, -5405217, -3132642, 1436667, -283468, -997506, -657130, 2874407, 2221035, 32212, +2575370, -2423435, -6164352, 1959042, -1449552, 689879, -3154117, 2460480, -2587181, -1283122, +-1036698, 4407710, -1062468, -48855, -1864016, -506269, -5000953, 1677185, -868657, 2688113, +-2393371, 317828, -1146219, -3995393, 1238024, -398358, -1110786, 1777580, 3253438, -681289, +-2045478, -5842766, 499827, -3474092, 1578937, 56908, -2284386, -91805, -1000727, -817118, +-4249334, 2725694, -3772055, 2064269, -1506460, -2495376, -2160369, -4489315, 2437394, 229244, +1195612, 2700461, -2916283, -4603668, 2913062, -4411469, 105764, -2939905, 901406, -2275796, +1966021, -1151051, 1020592, -1963337, 317828, -911070, 1141388, -941135, -1074279, -1002875, +-987843, -1761474, 216359, 433255, -346819, -1387811, 920734, -1047972, 106837, -700617, +-1241246, -442919, -470299, -193810, -306016, -176094, -1032940, -536334, 109522, -594316, +-359167, -318364, -15739981, -189515, -2106145, 4116189, 59593, 1572495, -1318018, 2038499, +382789, 1780801, -1835562, 10130754, -2223719, -1445793, -4373351, 1442572, -5276904, -1706176, +379568, -2574296, -49392, 3707094, 2119566, 1398549, 2495376, 3600793, -4415764, -1697049, +-97174, 2283312, -4166118, 4035659, -3488050, -1769527, 3235184, -630286, 740345, -2596308, +2988760, 3122441, 3357591, -5184563, -1584843, 5572183, -80531, -856309, -1257889, 6076305, +3966402, 4697621, 81068, -1116155, -1411971, -348966, -129386, 677531, 1820529, -5902359, +-532576, -2756832, -3479997, -470299, 1003412, -3069828, 817654, -2349884, -853625, -959388, +-68719, 2022930, 1891396, -1082332, -693100, -1350767, -4772783, -1148367, -2956011, 61740, +-3900367, 1041530, 72478, 3930432, -1352915, 522912, -3412889, 278099, 493921, -1617592, +-1628330, 1655710, 70867, 423591, -142271, 1153736, -289910, 465467, -178241, -296890, +1450625, 629750, 621697, 193810, -132607, 5335960, 6320581, -4410395, 558346, -3763465, +5790153, 1056025, -2406256, -3407520, -3016141, -638876, 725850, 1527935, 7705708, -4598836, +-740345, -1832877, 3012920, -8627516, -1020055, 5484137, -163746, 4606353, 2029909, 3692598, +3841848, 1665374, -766652, -4057134, 1322313, -1143535, 500364, 6415071, 1606855, 5502390, +-2910914, -1518808, 406948, -7429220, 854699, 5531381, -1643362, 505732, -4651450, 3490735, +-92342, 1544041, -5502390, 3218541, -3700651, -2066953, -3864934, -4534949, 2592550, 874026, +-1480153, -2326799, -2204929, -1621887, -1109175, 2550137, -2551748, -4606353, -7093676, 6540162, +5013838, 261456, -7096360, 2142115, -3409667, 2780455, -2308008, 498216, -4352413, -2742337, +-5665599, -2565169, -802085, 5513128, 3278671, -6169721, 2662343, 129923, -544924, 2688650, +-374199, 2134062, 4376572, 223875, 916439, 2902324, 593779, 576063, 2867965, -510027, +-82678, 216359, 368830, 607201, 709207, -644245, 828929, -603443, 207232, 141197, +733366, 168577, 1815697, 1588064, 111132, -88584, 1782411, 910533, -1343251, 255014, +642098, 26761942, -9898826, 12004970, -9486509, 844498, 2871723, 2838437, -7826504, -2640868, +-2609193, -13126494, -42413, 721555, -4711043, -741419, -27917, 9429064, 1767916, -6534793, +4819490, 5253819, 1196685, 9557913, -7059853, -2570538, -3759170, 2036888, 7666517, -530428, +511101, 2864743, -1336272, 3435974, 1570884, 8748312, -1287417, 3442953, -5686537, 5238250, +-3972308, 5845451, -74625, -6067178, -884763, 8818105, -359167, 5973226, 3602941, 5745593, +540092, -4508642, -3655017, 115964, -2708514, 4720169, 3147137, -4629975, 672699, -3613141, +6234682, -1666984, 5008469, 5963025, 1072668, 6146098, -250182, -2949569, -977105, -3764539, +206158, 8069707, -5014375, -5148055, -1920924, 2305324, -3503083, -2171106, 1593970, 3886946, +-1570884, 1440425, -7770670, 1941862, 542777, -538482, 2770254, 193274, 772557, 1876901, +-200790, -991064, 878321, -1779190, 601295, -730144, 263604, 359704, -239444, -607738, +-1522566, -105227, -1204738, -757525, -485868, -2671470, -22262426, 2440615, -6553583, -4685810, +-7187628, -8713952, 3440806, 7796977, -1172526, 3033321, 1236951, 4005057, 909996, 295279, +2418604, -4770098, 11064373, -573915, -6438156, 7261716, -2217814, 3083250, -7257421, -4516158, +-5142150, 2228014, 1352915, 5681705, 173409, -3529926, 594853, -3151969, -3464428, -3844533, +-1335735, -5352603, -2712272, 4985920, -4642860, -330176, -3632469, -5681705, -2531346, 708670, +1818919, 3601867, -2860985, -2626373, 3562139, 617938, 1340030, 941135, 2204392, 3337727, +-5437966, -1826972, -554051, -7627325, 2017024, -544924, 4459250, -4476967, -3415573, -4185983, +716186, 4714801, 3653944, 8324721, 5590974, -5166846, 2089502, -2349884, 3941169, 2454037, +-5576478, 4000762, 1076426, -6200322, 792958, -1145146, 526134, -1179505, -4228396, 753230, +-3034931, -3207804, 1163936, -1775432, 729071, 2244121, -1523640, -2049773, -2110440, -3174518, +-590558, 2403034, -648003, 2499671, 16643, 1678795, 1155883, 859530, -1131724, -472446, +429497, -1129576, -1231045, 256624, -1188095, -489626, 318901, -2247879, 1240172, -1168231, +-387621, 219043, -79994, 140123, 714038, -1024350, 635118, 1447404, -28349468, 7783555, +-8455180, -7044820, -5066988, 955630, -1474248, 16699370, 1645509, 3995393, -1860258, 63888, +-6859063, 6812355, 1991254, -993748, 1370632, 8893267, -4453344, -1541356, 2055679, 613107, +4467840, -3890704, -1745904, 4902705, 1804423, 4515621, 543313, -4804995, -3140158, 2697776, +-464930, -1638530, -2994129, -1739999, -195421, 8419210, 2131378, -1537061, 179315, 609885, +-2555506, 6059662, 4651987, -1462973, -6378564, 1580548, -3376381, 5761699, 4491462, -4523138, +1759863, -5852430, -5195837, -4593468, -5733782, -2007360, 1267552, -3476776, 286689, -3838627, +-3227131, 6626061, 4234838, -5672578, -7614977, 821413, 6488085, -5043366, -3714073, 5443334, +4313758, 6212670, -4031364, -218506, 1767379, 2535105, 7026030, 1853815, -919660, -317291, +-5120138, -818728, -93416, -4445291, 320512, -1347546, -2006287, 31675, -594853, 2110977, +-521302, -903554, 1028108, -717796, -1831804, -1265405, 383326, 1686848, -839666, -720481, +51540, -501437, 3289945, 523986, 4265977, -3092377, 768262, 145492, -1782948, -119722, +-151398, -2366527, 576063, -520228, -2535105, -2434173, -1233193, -2333778, -1722282, 503585, +-1126892, -14919643, -1469953, 2524367, 7270306, -1403381, -3795677, 1713692, 10678362, -13425531, +3123515, -2714956, -2487323, -6036040, 3642669, -10755135, -7004018, 3716221, -5624260, 3420405, +15347529, -2699387, 6205691, -7199439, 7413114, -1909113, 2213519, -6454799, 3024731, 1854889, +-3465502, 1542967, -697395, -3310346, -220117, 4233227, 6606734, -5152350, -8247948, -6516539, +-6054294, 805306, 4843650, 12851616, -146566, 8662412, 9023726, -8373039, 6455336, -12324946, +-4515621, 805843, -5493263, -5094905, 3424163, -11933567, -2364380, 8345659, -3591130, -3103651, +1096827, -3627637, 3399467, -3598646, 5833103, 7565048, -2091112, 2369748, 310848, -7605850, +653909, -4912906, -3409130, -6002754, 3427384, 2652679, -5796595, 498753, 4313758, 4041564, +5111011, 5300527, -809601, -4982699, 4151623, 2203855, 2485176, 1387811, 3001645, -310848, +-101469, 470836, 1233193, 1486596, -2055679, -600759, -1658931, -1069984, 2408940, 2102923, +2325725, -4195110, 862215, -496606, -1744831, -2010045, 2178622, -1314797, -2311766, 618475, +545461, -727997, 5141076, 1740536, -1010391, -1104344, -2390149, -627065, 2101313, 3236795, +804233, 42950, 3222299, 35440460, -1652489, -13935021, -1694902, -555125, 1399086, 4517232, +1876901, -1561758, -1393717, -6986301, -3278134, 4010963, 8704825, -7023346, -4396436, 5834176, +529892, -2014877, 2374043, -500901, -8139500, -8287140, 11429445, -994285, -659814, -1833414, +5902359, -386010, 680752, 3784403, -6161131, 6674379, 2814277, 1145683, 2589329, 6672232, +-15812996, -7038378, -3795141, 14705431, 1957431, 1167694, -4438312, -4893042, 4449049, -586263, +5147519, -1734093, -10080288, 1163399, 1309428, -1461900, 5001490, 2290291, 1393717, 8189429, +19844896, -1488206, -1602023, 7609072, 2357937, -2258079, 5243618, 15467788, -1658931, 3024731, +5640903, 4558571, 4072166, 4170413, 4641249, 3606162, -4000762, 6222871, 11043435, -2455648, +4275640, 142808, -1316944, -7512972, 4802311, 1876901, -554588, 2384781, 2697776, 712965, +368293, -2474975, -2882460, -1074279, -5804112, -2520609, -3913789, 5184026, 2558727, 2025077, +-766652, -679679, 359704, -3284039, 66035, 1328756, -4600447, 4174708, -1973538, 817118, +-1369021, 314069, 1603097, 1949378, -3576097, -3499862, -2937758, 498216, -566399, -902480, +-224412, 2613488, -614717, 359167, -1442572, -3096135, -1692754, 7154342, 7966091, -10118406, +-2925947, -8588324, 8529805, 15964930, -7626252, -1782948, -8750996, -3801046, -10591926, 7570417, +-6460168, -2625299, -670552, 82678, -4205847, -5189394, 9540196, -8637179, -3177202, 994822, +6516003, 6945499, -9946071, -2923799, 3849901, -8564702, 4887673, -6794102, -2749853, 2509335, +221728, -3716221, -1013075, 2051921, 11155104, 1379758, 2537252, 4832, -9494562, 10401874, +-5077188, -7797513, 6266894, -5558762, -6263673, 8198019, -3681324, 1049046, -1785633, 1101122, +10802916, -1844689, 2444910, -9423158, -710280, 10966125, 2483565, 10864120, 9335111, -3065533, +-2349884, -12644384, 1974611, -2129230, 8413841, 10263898, -5869073, 2551748, -18533858, -5084705, +6187974, -6423124, 9659918, 638876, 2116345, -3416647, -681289, -4464082, 827318, -3080565, +6834904, 6671158, -263067, 2264522, -61740, 3764002, 1672890, 2722473, 5784784, -1743220, +-6416145, 2950643, 1515050, 4078072, -1020592, 4327180, -841277, -1526861, 1142461, -2632278, +-1687922, 424128, -4490925, 1248225, -1529545, 4004520, 1792612, -318901, -803159, -2678986, +-3971771, -346819, 602369, 1610076, -1421097, 875636, -3729105, -78383, 287763, -2028835, +2601677, 227633, 122943, 1050656, -1174674, 167504, 90194, 6406481, -8133595, 2793339, +-7605314, -823560, -10275172, 16896938, -4964982, 1155346, -5325223, -15400142, 8890045, 3117610, +-11489574, 7125888, -5171141, -3806952, 4030827, 15993921, -7970386, 15451145, -293668, -10849087, +467078, 3615289, -9540196, 10550050, -5519570, 7814156, 16983374, 1666447, -7914551, -2211908, +-890669, 3897683, -6728067, -3675418, -894964, 8371965, -2970507, -3352759, -11092827, -369904, +-13117367, -2413772, 14901926, -3331821, 8494372, 812286, 2281165, -19498614, 289373, -12473122, +10077604, 17488570, 5417028, 4402342, 1110786, 2630131, -10167798, 3604551, 5473936, -4529580, +-1242319, -4013647, -2534568, 7891466, 210453, 9569724, 29316910, 10710038, 2957085, -10044318, +-9313637, -6044630, 5790690, -9944997, -828929, -892816, 2076080, 5650030, -5425618, -1014686, +5484673, 5995238, 1270774, 1036161, 4107599, 5164698, 4340065, -32749, -911070, -950262, +496606, -2111513, -2611877, 2348810, -1298691, 3642132, -4393215, -1388885, 3115462, 2625299, +-217433, 2373506, -2237678, 1090922, 1663226, 2204929, -2460480, -2451353, 3523484, 2498597, +2000381, -882079, -1699733, 857383, -4892505, -1283658, 844498, -2619930, 1256278, -1814624, +-1232119, 573378, 455803, -404801, -925565, -3669513, 30596274, -16569447, -454193, -8233989, +-15529528, -20725902, 5737003, -6649146, 6075231, -19618874, 3841312, 6982543, 6282464, -8249559, +-18012556, -14191109, -11917461, 131533, -6941204, -13160854, -9062381, -4624069, -10751914, -7514582, +1753420, 13515725, -403190, 1891933, -539018, -11967926, 7281580, -1132261, 2088428, -2710661, +-7957501, 6660958, -9908490, -13807783, 12240657, -13472776, 2567317, -181999, -18891414, -11294153, +7256884, -400506, 8943733, -6073084, -20066624, -147640, 588411, 7382512, 7850127, 18589156, +-10924249, -38511360, -13559749, -13182865, 8486319, -25117506, -8593693, -4250407, -23079006, -7725036, +-519154, -4445828, -4436701, 4937602, -6322192, -620623, -5939940, 5321465, -13631689, 4793721, +10715407, -13739600, -7004555, 6657200, 5158256, 4468377, -14125611, 3251290, 33286, -2051921, +7289097, -1942936, 5971079, 5318244, -1342714, 1602560, 1044214, -1763621, -4789426, 7569343, +-2639258, -5452461, 35970, -289910, 3961571, 1374390, -116501, 1198296, -4164508, -4201552, +334471, 1367947, 2324114, 4301410, -639413, 1923072, -561567, 1691143, -4825396, -2120640, +-3385508, -3080029, -619549, -722091, 1604170, -5411122, -2542084, -4071092, -2951180, -5666136, +-6978785, -6180995, -775778, -637266, 625455, -3834869, -4932770, -17763448, 6977711, 8732205, +-2961917, -3444564, -8876624, -9779641, 22493280, 8185671, -21070572, 7260106, -11498701, -1108638, +-10451803, -21618718, 6303938, -11269994, -4755066, 886374, 590558, -5505075, -18318572, -11333345, +8922795, -11203959, -352724, -9908490, -15253576, -5915781, 16844862, 2717104, 2962991, -14713484, +-4982162, -3000572, -1964411, 6003291, 7358353, 9564355, 11767137, -5741835, 6612102, 2356327, +-6868727, 4220879, -11512123, -9955197, -8681203, 3762928, -10022306, 523449, -15046881, -13111461, +-6824703, 15603079, 12102144, 11871826, 12993887, -11944304, 16292422, 607738, 7481833, 22531398, +-4662187, -4060355, 3613141, -10734734, 4414153, -4993973, -14013941, 1915555, 11365557, -13394929, +-9669045, -1547262, 12214887, -10144176, 1119913, 3898220, 7320772, 1974074, -3110093, -6863358, +1817308, 5364414, -2936684, 810138, -3683471, 1309965, -3507378, 1534377, 149250, 2097555, +-1384053, 1506997, 2398739, 6514392, -897648, 47245, 423591, 3144453, -4804458, -1758252, +-5283347, -1241782, -1272384, -5718212, 1004486, 5602785, -603980, -6835978, -1327682, -401043, +-6277632, -6670084, -10239202, -3929895, 3730179, 898722, 2593087, -1251983, -1966021, -3340948, +-684510, -8582955, -1775432, 5633387, 8299488, -110595, 2378875, -4704063, -8392366, -19698868, +22737020, -17595408, 23542864, 13214004, 9028558, 5108864, 9311489, 10094784, 9351754, 25285546, +-8720394, 1862405, -1582696, -4264903, -662499, 3206193, -2237678, 4928475, -1530619, 7960185, +6716792, -1342714, -4258997, -25041270, -8840653, -18145164, -733366, 9676561, 9798968, 3151969, +5046587, 7308961, 6094022, 7084549, 18100602, 26894012, 18112950, 3692061, -3299609, -5123896, +-7589744, 9445170, 9676024, 10775536, -7857643, -6230387, -9773198, -1583232, 13191992, 175557, +15785615, -9454297, 8511551, 5099737, 14180908, -29350196, -20928302, -8580808, -11691975, -12046846, +3750580, -4898410, 18624588, 5524402, -20500416, -1670742, 33503430, -11224897, 10536629, -5018670, +13845901, -6367826, -4043175, 512175, -5537287, -7429757, -404264, 5625871, 8390219, 5769752, +-2034741, 6502581, -1593970, 3010772, -8369281, -5783711, 5585068, 3466576, -8413841, -3727495, +-3492882, -1150514, 2262911, -2257542, -4053912, 1921461, 518080, 1387274, -534723, -2433099, +3934727, 1219771, -2013803, 5001490, -564788, 1451699, -797790, 5895380, -4895726, 5243082, +2455648, -4997195, 3417183, 133681, 1015760, -5217312, -14954539, 5606543, 270046, 1036698, +-1591285, 5690295, -1256815, -2759517, 1979980, 4421669, 3867618, -2306934, 4762045, -14501420, +-7264937, 11994770, 5235565, 8841727, 23098334, 1956358, 15432354, 22551262, 15668578, -10241350, +-22967338, -799938, -10548440, 24729884, 7120519, 19312858, -2771865, -10401337, -3828963, -11348377, +4457639, -8742406, 1042066, -9735617, 5039071, -7125351, -2989834, -15614354, -15440407, -1575716, +-22115860, 12060268, 8332774, -6663642, 11311870, -5439576, 4393215, 12548821, -13986561, -18375480, +3248069, -4059818, 30746598, 13008382, -33765960, -9174587, -9594420, -17477832, -18447958, -37769944, +6632503, -13578539, -3553012, 5335423, 1355599, 7690676, -1513439, -4536023, -28594818, 3322157, +-13009993, 3433290, 16738561, 3447785, 11218455, -17107928, -22619446, 4485020, 13996225, 9349070, +5247377, 8876624, 14552960, 18135500, 18727668, -16751983, -10042170, -12095702, -8595840, -14107357, +19761144, 11491722, 11138998, 2950643, 8517457, 7201050, -702227, 10230612, -15933255, -5709086, +-1904818, 1202054, -3449396, -11403675, 644782, -2396055, 1471026, 3556770, 11551851, 528818, +5408438, 5301601, 871342, 5633387, 198105, -3601330, 714575, -8786429, -3510599, 4505958, +6673843, 1925756, 1234266, -10724533, -1011465, 246424, -5079336, -3661997, 1592896, 3267396, +-9709847, -10903848, -4886599, 3514357, 3153043, 5356361, 1345935, -3579318, 2447058, -11290932, +-9878425, 40805948, 26949310, 37439768, 2421825, -7427609, -25447682, -7508140, 4246649, 5900748, +-6075231, -19662898, -7117835, 32349694, 13364864, -4477504, 9895068, -732829, -11901891, -3474092, +-7772280, 22056804, -1712618, 1292785, 9502615, 623844, 10784663, -114354, 15273441, -14075145, +17600776, 3566970, -8230231, -4967130, -9114994, 15907485, -22069152, -23805930, 15027554, 24893630, +1140314, 17183628, 23605140, -26615376, 8826695, 5435818, -1494112, -245350, 3917010, -9992778, +18520972, -11265699, -8989367, 7492571, 905701, -2017561, -4357781, -5553930, 2633889, -17584670, +-5309654, 14149770, -17388712, -4002910, -11762842, 431107, 35041564, -11033771, 2202781, 9379672, +118112, -8091182, -21978422, 21406118, 9931575, -44164076, 10878615, 11098195, 8150774, -9915469, +-4679367, 22537840, 941672, 1644973, 5709622, -15705622, 523449, 9962714, -4158065, 5747740, +-1337882, -5121212, -13165685, 1969779, -1810329, 12096775, -1223529, -543313, -8807904, 9574556, +-3333968, -3371013, -13909788, -6973417, 4742718, -8924405, 619549, -4420058, 5401995, -5246303, +-11228655, 5563594, -12090870, -3329674, -5571110, 505732, 588947, -4548371, 11777874, -1537061, +15926276, 9740449, -1773822, 1616518, 10123775, -7209103, 1672890, 1138703, 9696426, -9029095, +-5483063, -17971216, -43437152, 39140036, 23439248, 12586939, 8933532, 19466402, -43833900, 18366354, +20631412, 8979703, -27964532, 15967078, 28809030, 13485124, 31739808, 11734924, 807991, -994285, +-716723, -5107253, 13605920, 22611930, 21567178, 7695508, -6272263, -10858214, 2927557, -9864466, +-11567421, 12702366, 8837432, 2616709, -11593190, -11302206, -2263985, -9795747, 5392869, 25938918, +-4296578, -8070781, 8946954, 4893579, 7887171, 9209484, -1693291, -4954782, 20920786, 13891535, +7023882, 9339943, -1391033, -20293184, 5032628, 13885092, 2043331, -15050639, 20709258, 5548561, +28700582, 1272384, 25827786, 2946885, -8104067, -2509335, 6401649, 36588828, -4323959, 13283260, +9236327, 17393544, 9275519, 280784, -834297, 11412802, 52032456, 2617246, 21036212, -17355962, +-12837657, 6765647, 8407398, 10275709, 4416837, 1839320, -25173340, -9883793, -26409218, 1632088, +-4317516, -8637716, -7196755, -2796024, -10992432, 1580011, -907849, -11671037, 8719857, -13624173, +-6437619, -12289512, -8252780, -669478, 1622961, -9808632, -11299522, 2917357, 7592429, 8709657, +-1497870, -3153580, -14615237, -19303194, 2185602, 2495913, -8614631, 17792976, 17346836, 25424596, +9116068, -5470178, 3691525, 7915625, 9812390, 11592117, 1923609, -11916924, 3248069, 15453829, +8096014, 858457, 6368900, -28547038, 31158378, -542777, 27574764, 610959, 1822677, -25162602, +-7761543, -11365557, 19126026, 4797479, 8457327, 4983236, -19299972, 1821603, 1515050, -17007534, +-24244554, -24839406, 8362302, -9295920, 22528178, 1198296, -7162932, -5953899, 4855461, -8834211, +1452773, 6500970, -9483825, 5216238, 7604777, 2476049, 2180770, 16935056, 28682866, -5737003, +-213138, 14281840, 11813308, 17127256, -12780212, -5147519, 5221607, -17288318, 1699733, 1356673, +-22756348, 29233158, -1410897, 14685030, 12826920, 8835285, -17299592, 1501628, 14847702, -12193412, +26400090, 7099044, -9598715, 21656836, 16478179, 11323681, -36659692, -7622493, 7351911, -12678743, +2021319, -20617454, -5077725, -31171262, -8827232, -4893579, -8517457, -34529928, -3398930, -9538585, +51717848, -7591892, 10579578, -5460514, 8326331, -4491462, -8369281, 5428839, -7004018, -1246614, +-3732327, 13723494, 5062156, 5945846, -22231824, -20113332, -14824080, -6365142, 4041564, -28210956, +-4420058, -2416993, 2203855, 10109279, 7881802, -999654, 10998874, -9981504, 345208, 430034, +-16027744, -22473416, 4537096, -6688875, -20559472, -5840082, -9601936, 1249836, -21977884, -2688113, +-9501541, 12903692, 386010, -9609989, -3266323, 3907347, 5352603, -2280628, 10182831, -10269804, +-6077916, 12779138, 12555800, 16088411, 14131516, 10531260, -7634841, 6588480, 17639968, 17034378, +7501698, -20534238, -23833848, 10620380, -3263102, 7690139, -4369056, 20272782, -15080704, -3087545, +-5187247, 17689360, -13242458, 30986578, 38071128, 38845832, 2415919, -7154342, 6327024, -4997732, +9521942, -1609002, -187905, -11323681, -31118648, -10326175, -29801168, 17150878, 16124381, -18331994, +-13730474, -18377092, -8584566, -2609730, 40699112, 529892, -20718386, -22239878, -1314797, 28491202, +13619878, -56948044, -11599096, -10022306, 7530152, 21482890, -24724516, -7783555, -14710263, 6535867, +-33749852, 16864190, -5601711, -699543, 9409200, 1459215, -16510928, 33415920, -3308199, 15938087, +35736276, 73256576, 43923020, -992137, 24690694, 37403260, 48037060, 52111912, 14923401, 31957242, +9154723, 501974, 19604378, -15304042, 32139778, 13857712, -13915157, -47759500, -34778496, 4645007, +-13567802, -9709847, -8788040, -5194226, -5828271, -19601156, -12853227, 852014, -2993592, -958851, +-6147172, -1620813, -10211285, 12888123, -21213918, -8570607, 6233608, 4062502, 1989644, -5348308, +-6581501, -3607236, 4366371, -3235184, 11048803, -12724914, -16093242, -16034187, -9908490, 12513387, +13919989, -5005248, -2330020, 5226975, -2559801, 23146116, 5062693, 2219961, 18473192, 11731166, +10605348, 26275000, 17219060, 19826642, 6203007, 9672803, 21604760, 8531953, 8972724, -7183333, +-16262894, 18925236, -23647016, 39813272, -4610111, -7207492, 814433, 31722628, -21053392, -3650722, +-843424, 510027, 11560441, -8108899, 16636556, 5829881, -3037616, 3925600, 1977833, 13088913, +-39737576, -12475806, -1142998, 4292283, -3863860, -28936806, 23883776, -1243930, 3328063, 8697309, +-18860812, -8556649, -43856984, 11707544, -10227391, 8485782, 32136556, -8734890, 6786049, -4072166, +15351287, -26169236, -35035660, 30798674, -2835215, 2699924, 5255966, 30976914, 22580254, 26891864, +-419296, -35868884, 21356724, 10062572, -8449811, -12656195, 20412906, -3677566, 25798794, 42672112, +33166274, 5694590, 2921115, 31493384, -6172942, 9707163, 25901874, -17566954, 29943976, 18361522, +10693932, -21097954, -10419591, -28169616, -794569, 9733470, 42039676, 17747342, -38981124, -3551938, +25259776, -3651796, 12312597, 16950088, -27635430, -6794102, 13543106, 3301219, 7585986, -12040941, +9012452, 15269146, 2014340, 261993, 22326314, 4292820, -4770635, -5750425, 7434052, -1932735, +12012487, 1923609, 9099425, 10341744, -1531156, -10660646, 21976810, -3124589, -6702834, -1387274, +-14870251, -14958834, -9811316, -10354629, 7159711, 13016435, -13034152, -11169599, 2629057, 19543712, +-28168006, -6823630, 10910291, -3330747, 91805, -3827353, -3027415, -20253456, -265214, -5392332, +5631239, 1568737, 3388729, 237297, 1771137, -1603097, -55188184, 12604118, -9155260, -2200097, +43050604, 18478024, -13526463, -10499048, -180926, -27904940, -34149284, 2841658, 284542, -19253802, +20372104, 2421288, -19709068, 12400644, 37046240, -5018133, -21350282, 13350369, -12571906, -13759465, +6916508, 30032558, -9794136, 4344360, 8257612, -9346386, -22395570, -14767171, 29726542, 10386305, +-29286308, 24990268, 9844602, -20153598, -10478646, 41195716, -13406740, -31755378, -16255914, 54774792, +-54134840, -25187298, 32160178, -14632954, -17389786, -51697984, 40287332, -33138358, 11861626, 1618666, +-6164889, -58376660, -17190606, 49777596, 31490700, -39532488, -10757282, -17182016, -8036958, 7973607, +10878078, 12873628, -68801080, 37543920, 28923920, 30187178, 521839, 15744276, -33634424, -30070676, +58980100, 24053964, 6586333, 23601920, -31656056, 6258304, -13969918, 15029701, -8500814, 41216116, +-16789028, -14506789, 5805185, 4857608, -15569256, 9281424, 4619774, 3384434, -2873333, 1956895, +3405372, 3226594, -3793530, -2379412, 8741869, 354872, -4509179, 17947594, 5418101, -16232292, +1858647, 15370614, 4134443, -15451145, 20613696, 36699420, -18025440, -21283710, -5640903, -4922570, +12594992, 26840862, 8272107, -25148108, -8231842, -3797288, 3815005, 7435126, -4112968, 10880226, +-7885560, -1122060, 6552510, -45426796, 7956964, 56883084, 17827336, 6168110, 1622961, 4337380, +24431384, 33423436, -7563975, 6298033, 8691940, -5677410, 20184198, -10543608, -2785823, -7964480, +15520401, 11540577, -6253473, 10615012, -15095199, -12290586, 15496779, -9866077, 17022566, -11251204, +-4963909, -274878, 9330816, -524523, 6957310, 2849174, 17333414, -12307766, -2416993, 357019, +-6818798, 16734803, 14526653, -11904576, -4189204, -7297150, 3888556, -15374372, 8375186, 4808753, +7691750, -6114423, -4625680, 19040664, -22769770, -3899294, 9681393, -6144488, -4099010, 9982041, +-27996208, 6818798, -10101226, 1723893, -9890773, 24300924, -7845832, -10430328, 10008348, -5462662, +-15849503, 30892626, -803696, 3206193, -6845104, -11833172, -13950591, 15608985, -17434882, -8382703, +17839146, -24237038, -10531260, 3180423, -2231236, 3029563, -335007, 3514894, 10860899, -3837017, +4285304, -4902705, 11394548, 6267968, -435939, 1013612, 6960532, -6022081, 5071283, 870805, +5573257, -2446521, 8637179, -4325569, 2357400, -7423851, -6406481, -10160819, 1953136, 651761, +3464965, -4952098, 11472395, -3719979, -1915555, 9851044, 8688719, 4683662, -3969624, -6525129, +5945846, 7866770, 4947803, 3426847, -56908, 7114614, 7710003, 3437048, 6556268, 905164, +-5001490, 14734959, -42477764, -119853744, -98487360, 51880520, 14797236, 118887376, 212517136, 31457414, +66920960, 24263344, -169716704, -53757960, -115171696, -139164992, 3789772, 22075596, -58116276, 83915072, +109881368, 61611844, 175317344, 101045552, -22690312, -41772852, -81528680, -158582544, -125250376, -37015100, +-111701896, -15683073, 96156800, 15943455, 22291418, 145415776, 74132208, 45796700, 151633280, 23246510, +-42012296, 59192704, -79595944, -157556576, -65996468, -132951248, -166342480, -2565169, -34831648, -43888660, +110586280, 121865936, 77517720, 183938416, 148405616, 69927976, 63248224, 36550708, -123118992, -113288888, +-143406816, -189333440, -151813136, -64151244, -44088912, 3741454, 108652472, 132120176, 138337136, 132578664, +122876328, 26090852, 2172717, -21033528, -93864360, -102871448, -59475096, -107861128, -45431628, 9248138, +-23607824, 53902376, 97165584, 29590178, 40993852, 18125298, -26652956, -16721381, -40745280, -53049288, +-6448894, 14721537, 325344, 43472584, 40182104, 4415764, 38681012, -145492, -49143552, 43142948, +12961674, -43791488, 30595200, -32478542, -65641596, 29792040, -46732464, -115732192, 1753420, -51037096, +-33719788, 114390552, 51774220, 54308252, 163842272, 108506440, 60254632, 71389872, -17882634, -103752992, +-131733088, -178965920, -197857872, -125675040, -80234824, -13973676, 75252656, 167494592, 185031488, 171438992, +178644336, 95409480, 4387846, -45678588, -117630568, -150588000, -97391608, -108795280, -86541984, -17474074, +3308199, 11541114, 42762840, 36324148, 31913218, 56554520, 56602300, 47831440, 56633440, 39530880, +14287746, -2864743, -21993454, -52027088, -54877872, -40637908, -32021666, -13900125, -4604742, -3220689, +-3836480, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -10573136, --12868796, 6489159, -2356327, 5675263, -2819109, -2884071, -5756867, 1356136, 1220308, -258235, -93416, -646393, -4403415, -512712, -2517925, -2896956, -2744484, -106837, 330712, -221191, --495532, 2181844, -606127, -6664179, 4145180, 2057826, -2269353, 663036, -64425, 68183, -935766, 4279398, -2386928, 249645, -7549479, 3759170, 743029, 1695438, 2609730, 4236449, --2370822, -1807108, -857383, -3801046, 304406, -576063, 3281892, -1769527, -224949, -1842541, --2105608, 3991635, -3012383, -1461363, 375273, -2739116, 2282775, -107374, -1284195, 2466385, -4533875, 279173, -176094, -642098, 3876208, -3857954, 33823, -607738, 2028298, -954020, --1765232, 4211216, -74625, 884226, -1171452, 869194, 2267206, -1823214, -2542621, 122943, -2213519, 3712462, -1674500, -1139777, 914828, 195421, 568009, -1711545, -550293, 1011465, --230318, 709207, -1349157, -425739, -832687, -1169305, -842887, -788127, 591095, 98784, --590558, 587874, 407485, -539555, -166967, -137439, -731755, -1319629, -369904, -5369, -270583, 706522, -15343771, 2608119, 1813013, 5377836, -2108292, 1629403, 6252936, -2422362, -1708860, -3794604, -5567352, 2036351, -3790309, -4326643, -4340065, 1305670, 1655173, -7405598, -4352413, 2884071, -1260036, -2712809, 1731946, -675921, -1686848, 534187, 2454037, 1813013, -3920232, 754304, -1194001, 4033511, -2030446, 8799851, 1981591, 5420786, 2090039, 4755603, -2118493, 3276523, 1774895, 389231, 182536, 6658273, 1129576, -1072131, 440771, 3514357, -2605435, 380105, -297963, -1372242, 742493, 8123394, 2331094, 3752728, -3926137, -2024003, --4140885, -2622078, -4019553, 3015604, 1906966, -2573222, -1829656, 1805497, -1915019, 2015413, --900869, -614717, -2779918, -4693863, 2019172, -7620883, -1075352, -1632625, -1926293, 406411, --1777043, 348966, 2869038, 1380832, -1952600, 345745, -1548336, -3325379, -535797, 1581622, --161598, -2570538, 932545, 459562, 973884, 1742683, 70330, 234613, -1203128, -741956, --176094, -32749, 632971, -1398549, -1182727, 8637179, 11900818, -3645354, 3200825, -5910949, --311922, 353798, 15205795, -1554241, -4014721, -6551973, 156766, 4363687, 6997039, -1575716, --9173513, -2639258, -3494493, -2505577, 3124052, -672699, 5844914, 651761, -3297461, -7422241, -2232846, -695248, 1731409, -894964, 845035, 3638374, 1341104, -9339406, 1131724, 6009196, -2962454, 739271, 1445793, -1500554, 4170950, -5522254, -531502, 4555887, -3134789, 537, -7409356, -3418794, -341987, -2508798, 4561256, -4789426, -3546032, 2216203, -4958540, -2449205, -6470905, 3798899, -5767068, -2130304, -858993, -1433982, -2624225, 2073932, -2251100, 2378875, --62277, 353798, 1051193, 4877472, -545998, 6724308, 3484829, -5164698, -2370822, -2521146, -4049081, 1203128, -262530, -2075543, 5418638, 2083059, -90731, -117575, -1342177, -1241782, -1615982, 622770, 1791538, 4219269, 1544578, -228170, 287763, 340376, 1380832, -280784, -533650, 2017561, 451508, 2496987, 96100, 884226, 1291175, 1530619, 562641, 969589, -1124208, 914291, 1449552, -438624, 456877, 984084, 1484448, -125628, -1102733, -1314797, -339302, 28390270, -10488847, 5761699, -8010114, -831076, 283468, -581968, -4245575, 2327336, -3267933, 796180, -3088082, -6575595, -245350, 4020626, 2856690, -2890513, -4950487, -397284, -4435628, 8100309, -4367982, -586263, -3297461, -7087233, 794569, -3565360, 2152852, -2639794, -5515812, -9678709, 6536940, -428960, -5761162, 1403381, 2428267, -683437, -3049964, 188442, -7573638, -286689, 1249299, -1072131, 2900714, 1333587, -1785096, -2845953, -6221797, 4033511, --1299765, -1835025, 2397666, 38655, -10459856, 8036421, -11258183, -6504191, -7971996, 1714766, --930934, 4775467, -2607582, 2537252, -4796942, 2303176, -1251446, -1970316, -5292474, 3237332, -3735011, 6368900, -1544578, -618475, 1734630, -1946694, -1137630, 1218697, 3693672, -4888747, -2420751, 3494493, 3903589, -6193343, -5043902, 2107218, -3149822, 1600949, -43487, -382789, -553514, 765041, -252866, 1446330, -1789928, 862215, -548145, 3601330, 227096, 871342, -826244, 216359, -1410897, -139050, 367757, -411780, -22416508, 2263448, 216896, -1921461, --3474629, 3899830, -3058554, 2588792, -824634, -57982, 3600793, 4695473, -2919504, 3454228, --1032403, -1932735, -6302865, -325881, -8508867, -6249715, 7452305, 2649458, -2913062, -1074279, --896038, 5169530, 2717641, -2683281, 4709432, 3129958, 1835562, 1620276, 1994476, 3586298, -3081639, 3044058, 8336532, 7504382, 3230352, 819265, -5209259, 5767068, -7730941, 1511829, --2165201, 6248641, -4735739, -6153078, 10539313, -2471217, -5669357, -5055177, 7841000, 4810900, -274341, 4027069, 5688148, 2603824, 9207873, -561567, -1468879, 5220533, 3185792, 295279, -193810, -4809827, 2864206, 2980171, 7430294, 3017752, 4621385, -2873333, -3838627, -8139500, --1881196, -4408247, -3509525, -3714610, 4090956, -159451, 301721, -2393908, -2768107, -778463, --2437394, 737124, -1647657, -2707977, 1088774, -279710, 84289, -2535641, -384936, 89121, --3191698, -450435, -774168, 196495, -1444720, -1664837, -1040993, -627602, 37581, -545998, -483721, -759136, 867583, 197032, 764504, 1725503, -420907, 1822677, 356482, 1191317, --864899, 358630, -1612223, -609885, -290447, -1933809, -615791, -960462, -29869350, 7989713, --6392522, -9442486, -9336722, 5761162, -6935299, 5086315, -8706972, 4763119, 4065187, 2491081, --9164923, 6244346, -131533, 3772055, -7596724, 4198868, 8942122, 6830609, 227096, -3231963, -1240172, -1957431, -9684078, -1978906, -4664872, 2189897, -6098854, 5197984, 5098663, -2044404, --245887, 7160784, -1595580, 4851166, -3942243, -6283001, 3241627, -130460, 3354906, 8813810, -5356361, -352187, -15425912, -7408282, -2160369, 2115808, -2391223, 8461622, -13404593, 4214437, -1795296, -157303, 4174171, -1756642, 6478958, -14052596, -6570226, 5413807, -14122389, -2636573, -6558952, 2334315, -3136937, -9427990, 3470871, 6047314, 4431870, -1702418, -9890236, -874026, -52613, -1142998, -549219, -4855461, 2167885, -7753490, 4731444, 645319, -4608500, 883690, --5538897, 395137, -6620692, -1870995, 2290828, 2408940, 192737, -659278, -2296197, -1739999, -439160, -3901978, 3100430, 214748, -1898376, -12885, -3369402, -2665027, 724776, -1402307, -1793149, -1788317, -1005022, -1181116, -1290638, -2290828, -403190, -1290101, -523986, 607201, --549219, -1047972, 811212, -438624, -894964, -921807, -2027225, -1434519, 247497, 1033477, --324270, -14036490, 1513976, 2340220, 10994579, -10384157, 12004970, 3404835, -971200, -2818572, --1298691, 1116692, -8783745, -1677722, 2808372, -2880313, -5159330, -1387811, 8297340, -8573292, --1874753, 8601209, 29528, -3400004, 3020973, -4172024, 6313602, 2790118, -92879, 3173444, --3684545, -5768141, -427349, 454193, 4717485, -10121627, -5481452, -4458176, -3148748, -2987150, --3090229, 1537598, 477278, 861678, -7584376, -7747048, -6189048, 245350, -9739375, -5344013, -5794448, -3911105, 1259499, 645856, -210453, 2455648, 3423089, 3317325, 3877819, 5763309, --1045288, 6234145, -430034, 3169686, -552440, -3947075, -271657, -6386080, 3932580, -7479149, -6980933, -8348880, -167504, -8611409, 780073, -8651138, -8404714, 4002910, 11471858, 3522410, --7470559, 5345624, -46171, -3232500, -2006824, -3387656, 4532264, 4000762, 5583458, 1070521, -4341675, -3652333, -450435, 4363150, 454193, 1391569, 795643, -2029372, 2525441, -167504, -905164, 3882651, 1061931, -879395, -2337536, -975494, 1515050, 1633161, 1183800, 519154, --1837709, 217970, -440771, -3913789, 3817689, 534187, 1353989, 270583, -1015760, -1800665, -1297617, -1835025, -992137, 39034272, 471373, -11252814, 1777580, -6109054, 15565498, -2545842, -4383014, 1139240, 759136, -13675176, -7004018, 7583302, 6670084, -10776073, -1887101, -328565, -9596031, 4714801, 3655554, 9401683, 1486059, 614717, 8169028, -2857227, -12424804, 1836099, -9512279, 5624797, -3593277, 186294, 6635188, 4038343, 1818919, -358093, -6968585, 3389803, --7580081, 750546, -14276471, 3739843, 4405026, -1161252, -6566468, 9062381, 4774930, -1884954, -7058779, 3246459, -5939403, 10880763, 1180579, -3865471, 2534568, 11157251, 1745367, -294205, --9306657, -5439039, 1313723, 3779034, 12730820, -4200478, -5034239, 1097901, 6953015, -4491999, --5507222, -501974, 9256728, 6615324, -2295660, -7104950, -362388, 8072391, -3205119, 16769700, -3665755, 2502355, -8575976, 7283191, 451508, -1859184, -4352413, 426276, -2425583, 445603, -10386842, 4727686, 3792993, 1978906, 1214939, 170188, -658741, 959388, 2103460, 3741990, -595927, 673773, 1393717, -2841658, 79457, 1232119, -621697, 3258807, -2291902, -64425, --1112933, 1283658, 5529234, 1887101, -1702955, -408022, 1332514, 471373, 1859721, -351650, --2356863, 2203318, 1990181, -1854889, -483721, 4867809, 1681480, 8798777, 4672388, -13883482, --1445793, -7026030, 13937706, -5244692, 6491306, 1231582, 8724152, 3431679, 1285269, -732292, -3538516, -4003447, -5934571, -16429324, -12155294, 3998615, 10798622, 14486925, -5346161, -7103339, --6242735, 3218004, -3425237, -758599, -594316, 1934346, 2201708, 9664750, -5166846, 889595, -2379949, 4709432, -4689031, -3497714, -7733626, -5259188, -5392869, -9221832, -23351200, -293668, --3131568, -10055592, 2249489, -1154809, -12665322, 4231617, -10740103, 2731599, -1305670, -902480, -5447629, 7035157, -202937, -10494216, 3084324, -6595459, -7252053, 10059350, 9106941, 10132902, --3310346, 1624035, 1351841, -5202279, 808528, -2510409, 15909096, -2647847, -1631551, -1596654, --107911, -9730785, -12016245, 2838974, -870805, -913754, 2725694, 17285632, -2128156, -8128226, --3409667, 9065065, -1312113, -2967823, -2601677, -205085, -7357279, 1763621, -1400696, 1358820, --3707631, 144418, -4667019, -416075, -278636, 1875827, -1945620, -984084, -2841658, 3847754, -268972, -2860985, 657667, 1258962, -3011846, 753767, 1225676, 4707821, -954020, 1069447, -3381750, 2044404, -1697586, 1979443, -3564286, -5905580, 753767, 530965, -2182380, -5508833, --1081258, -1383516, 4900558, 1766305, 3304977, -595390, 4115653, 4501126, -15300284, 5615133, -1836099, 16104517, -10882910, -6174016, -3633542, 8587787, -8251169, -7925826, 7107634, 4779225, --8346732, -8412767, -8243116, -18403934, 12037183, 11305965, 11983496, -5194763, 3769371, 11900281, --17304960, 4295, 11312407, 10495826, 4742181, -45634, -5559299, 1138166, -2692408, -14964740, -1867237, 4079145, 2166811, 9898289, -8765491, 926102, -16358457, -2087354, 3200825, -8987219, -3442953, 2742874, 7277822, 8916889, 12396349, -2553895, -4904853, -15009300, -10731513, 4614406, -22005264, -6848326, -943819, -10166188, -5407364, -8067023, 4719632, 4871030, -1721745, 711891, --16152298, -2135673, 10886131, -8720394, -7580081, 6467147, -2938831, 9467182, 2314987, -6966974, -1093606, -10522133, -3060164, -2782065, 20258286, -2034741, -5971079, 4440460, 4110284, -1785096, --3482682, -1038845, -2806224, -3773666, -3544422, -2688650, 1392643, 1575179, 3238405, -845572, --84289, -1956358, 1948305, 513249, -5239860, 1393717, -80531, -563178, 1847910, -115427, --2877628, -2811593, -6762426, 2244657, -2152852, 1988570, 2534568, -3161633, 1410360, 921271, --709743, 2555506, -25233, 7296076, 987843, -1318555, 138513, -2114198, -417149, 1276142, -170725, -629213, 557809, -2843268, 2245194, -9569724, 21889838, -10900090, -5649493, -513249, --802622, -15664819, 927176, -11553462, 8222178, -21650930, -3221762, -6967511, 7290170, -7490423, --7546258, -18325552, 12228309, -7570954, 4980552, -5936182, 3603478, 9663140, -7139310, -12031814, --4098473, 8137353, 16927002, 5408438, 7043747, 788663, -17198660, -9222369, -9306120, -4799626, -2919504, 15473157, 6616397, 8990977, 8404177, -2424509, -3690988, -5271536, -14388677, 727997, --10063645, 15447924, -7161321, 10624675, 2211908, -5634997, 3504693, -3767760, -4927401, -8490077, -12658342, 3286724, 21437256, 4661114, -23225572, -5822365, 7349763, 5973763, 3314104, -1358820, -1980517, 24178518, 12045236, -4146791, 2534568, -6575595, 17485348, -724239, -762894, 6782827, --15541339, -6728067, -5334887, -16596291, -19673634, 3835406, 6915434, -1886028, -9737228, -2580739, --3156264, -7638600, 34360, -1602560, -6090264, 5916318, 9074729, -2068027, -1440962, -1440425, --3692598, 2570001, 519154, -1102733, -1949915, -1655173, -1184874, 2958696, -1872606, -4377646, --1161789, -272730, 1272384, 796716, -2750927, 6409702, -2243047, 3866544, -885300, 3216931, -1609539, -1116692, -4531191, -4299799, 1325534, -1222992, -6789270, -2521146, -1771137, 2373506, -483184, -574452, 1722282, 2976412, 891743, -1902671, -2887292, -13333726, 8060580, 17949742, --1707786, -722628, -362925, 16687022, 5202816, 4039954, 2891050, 2019172, 2876554, -6501507, -1266479, -20558398, 3001109, -9879499, 8652212, 21131776, -2699387, 1588601, -16593069, 22274774, -10814191, 9495099, -2732673, -12164958, 1504312, -4114579, 11307575, 8142185, -10071698, 595390, -5978595, 4261682, -7791608, -6886443, 32583232, -7493644, -5650030, 6920803, -8265128, -5986648, -10375030, 10200010, 422517, 3961571, 3707094, -12541305, -6249715, -477815, 4311074, 11092290, -2743410, 2666101, -14219026, -1283122, 4213363, -19366008, 4271882, -5341866, -1951526, -3520800, -5724118, -5716065, -10538239, -11210938, -17837000, 2319819, -7226283, -3419868, 11433740, -3808562, -3711926, -20064476, -35433, 18608482, 4337380, -9295920, -5571647, 11331197, 5772973, -12283606, -6930467, -8876087, -6897718, -2875481, -1734093, 4275103, -1200443, 796716, -1917166, -2394444, -1486059, 2313377, -3148748, 2741800, 8179229, 1337882, -1127429, 3572339, 5164698, -2134062, -3510599, -2238215, -3189550, 959925, 2330557, 6867653, 1783485, -599685, 2463701, -971200, -3498788, -1917703, 3214783, -2393371, 1059783, 2905546, 813896, -4640712, -2694018, 8698919, --3674345, -6840273, 3391414, 1870995, 2524904, -1753957, 11043972, 3293166, -10327786, -10369125, -24533926, -14740328, 3798362, -9434969, 28929826, 6121402, 5319854, -9293235, -10993506, 1022202, -8238284, -8913668, -14198088, -8448738, -20629264, -8055211, -12127914, -52613, -27713814, 1908039, -14954539, 9201967, 12215961, -8581882, 3157875, 13276818, -1580011, 9620190, 3549254, 15009300, --7581154, 12513924, 9934259, 7105487, 16256451, -9148817, 9668508, -5008469, -5832029, -3866544, -3564823, -31614718, -10141492, -19657528, 22695680, -14343580, -16210280, -3476776, 12790949, 344134, --5818070, 17867600, -6429029, -5681168, -13015362, -31967442, 1513976, 2961380, 13282186, -13407277, -2684, -8176007, -10816338, 17086454, -3487514, 8558796, -18622442, -18096308, -11322608, 14246407, --1504312, -9024263, -9614284, -380105, -15800648, -10759967, 1495722, -6607807, -11793980, 17344688, --23834922, -22669912, 5893232, 105227, 9980967, 1160715, -1131724, -7302518, -6497212, 1078574, --11289858, -4518306, 9549323, 1293322, 1605781, -5541045, 5638755, 2131378, -6183143, 2906082, --4593468, -904091, -4709432, 4096862, -6253473, -1525250, 4197794, 8283918, 886374, 377957, --9015673, -2674691, -650688, 1350767, -1361505, 7691750, -354872, -2873333, 4854387, -5640903, --5265630, 3280281, 6949794, -1901597, -4986994, -6662568, 5343476, 4397510, 8628052, -11963631, --165893, 15846819, 2007360, -4900021, 8134131, -13025025, 25678536, 16091095, -242129, -11865921, --13416941, 5478231, -3447785, -1287953, -795643, 23420994, -11631845, 353798, -8121247, 8569533, --14696304, -13468481, -26441430, 6026913, -10802380, -14892799, -1902134, -25133612, -12404402, 6994891, -5247377, -3514894, 12949863, 1140314, 15716896, -7056632, -21885542, -3387119, -16059420, -3118683, --4890357, -20968568, 2637647, 16950626, -48029008, 5999533, 24696, 11818676, -2473901, -14989436, --28538448, 11272142, -3585761, 10531260, 6252936, -3531537, 16506633, -20711942, 28855200, -7323456, -16056735, 33717104, 13423920, 23974508, 9358197, 6249178, -3372086, 12495670, -4760435, -13191992, --17796196, -11485279, -687195, 9912248, -1723356, -7783018, -11080479, -9882720, 13284334, -6007049, --4912369, 11946988, 2094333, 8988293, -1023276, -1352378, -3733400, 2084670, 4452271, -6172405, --1082332, -15044197, -10927471, 7342784, -3742527, -411780, -2273648, -314606, -5812702, -9011378, -6429029, -5433134, 8379481, -8665633, -4058744, -981937, -6140730, -3067144, 4180077, 1751273, -10178536, -2594697, -6204081, 3859028, -12330314, 192200, 1414655, -1913945, 718333, -1372242, -5951214, 8683350, 1400159, -313533, -4274566, -7268159, -3601330, 418759, 14148696, 7131257, --7256347, 40425304, 32943472, 29687350, -6747931, 89121, -25183004, 18844170, 23369990, 7960722, -22574884, 9023726, 7681549, 7935489, -3976066, 3136400, 6253473, -5738613, -24264418, -14722611, --888521, -16112033, -18786724, -44126492, 9707163, 7644505, 11514807, -8436390, -3011309, -5857799, -318901, -13788993, -389231, -10502806, 12226698, 10188199, -6299644, -8542153, -23272280, 39223252, --12239046, 7758859, -13422, 2542621, 6259915, -16189342, 19552302, -9841918, 6684043, 4401805, --14609331, -15036681, -2787971, -1297080, 9082245, 41401876, -3457986, 6175626, 1371705, 12503187, -8882529, 9321153, -7311645, -2157147, 3578245, -19975356, 4065187, -17090212, -27332098, 9549860, -867583, 2193118, -20010790, -48067128, 20797306, 21751324, 14969572, -27247272, 25967910, 27624156, -10208064, 8036958, 243203, -7917236, -18166638, 13631152, -12801687, 863288, 223875, -7174743, -5485210, -13009456, -1366337, -2512019, 6452652, -3577171, -6013491, -8065412, 12421045, -6769942, --2967286, 3286187, -11174968, 6257231, 5073967, -3815542, -3918084, 1137093, -10382547, 9650792, --3491272, -2536178, -878321, 872415, 7063074, -5512591, -13127031, 3968013, -7323456, -2201171, --7505456, -6575058, 1012002, -5302674, -2474975, -4933844, 16830904, -7394860, -13702556, 2233920, --4927401, -23708756, -47311212, 39245800, 6303938, 6959995, -15766288, -11353209, -50333260, 13904957, -35982700, 11028939, -31880468, -15953656, 5170604, -12414066, -7881802, 14744086, -16598438, 9262097, -8264054, 6834904, -18476950, 6594923, 5713380, -8673686, -17292076, -10012643, -6659347, -4479114, --16495359, -14228153, -7827578, -17009144, 13406740, -6352794, -21950504, -7583839, 13460428, -2789045, --15221901, -8382166, -7770133, -57445, -12066174, -7279970, -19992536, -18996640, 8085813, -6760279, -24937116, 16389058, 1601486, 14881525, -21805012, 14095546, -20697984, 17390860, -2982855, 8895951, --9233106, 30904438, -7708930, 17307108, -4431333, 25421374, 10234907, 6186364, -26240102, 28460600, -22778360, 9921911, 10583336, -20463372, -3908957, 8378945, 13981729, -3624416, 3374234, -22602802, -14503568, 24800752, -547071, -17748416, -1036698, -11734388, -10053982, 4862977, -59056, -4896263, -5729487, -12948790, -3048890, 507880, 3688303, -8923868, -12266427, 4731444, -5976447, -11565273, --20772610, -1511292, 6445672, -1713692, -10462003, -12592307, -3875134, 8048769, -8677445, 3354370, -4646618, 1338419, 3415573, -1038845, -5583458, -4676146, -1569274, 5834713, 1941862, -2205466, --7798587, 10728828, -6905771, -5983963, -5041755, 2202781, 12422119, -8340827, 12232067, 10393821, --4118337, 3838090, 6514392, -32829656, 28046674, -3228205, 13476534, -18068928, -5818070, -4432943, --4152160, -4145180, 16408923, 574989, -13533979, 11053098, 1952063, 8010651, 13916231, 14088566, -799938, -11951283, 49597744, -13458280, 38157564, 437013, 2347737, -21415780, -9365176, 3745748, -18513456, 9297530, -5922223, 15288473, 3160022, -20649130, 3567507, 3258807, 21537650, -574989, -12929999, -15590194, 96100, 14748918, 7313793, 12386149, 32314260, 26058640, -3930432, 13642427, --1918240, 25606058, -20231980, 17206176, 6979322, -624918, 15304579, -7708393, 39567924, -6499896, -19172198, -14031658, -12659953, 979789, 42146516, 14024679, -38912940, 34936336, -581431, 12472048, --29299730, 10350871, 3517041, -58573152, 24864102, 45370960, 17424682, -18463528, -11716134, 9481140, -44580688, 25617332, 34020436, -11945915, -16279537, -14637785, 7300371, 9583146, -1336809, -16569447, --7346542, 21420076, 3971771, 5182415, -7035694, 10060961, -2248952, 4790499, -4289062, -5302137, --6531035, 13103408, 21578990, 21049098, 4925254, 11370926, 19857782, 13379360, 14078366, 19195820, -10931766, 18353468, 13959717, 5349382, -26927298, -4909685, -12424267, 8023536, 16176994, -17756468, --6150393, 21809844, 12064026, 2841121, -4665945, 18527416, -13861470, 3689377, 19085760, 15127412, -8558259, 10288594, 11790759, 9917616, 11691975, 7698729, -8935143, -4364761, -15902653, 20333986, -3195456, 13576928, -10773925, 27122718, -9361955, 12703976, 4294968, 5734318, 4068408, 2486249, --28151900, -16248935, 287226, 2678449, 19429358, 16071231, -22943178, 2469069, -12589623, -11423002, -5798743, 1530619, -7787313, 9643275, 37418828, -24625732, -1858110, 57242252, -34665216, 4187593, -20517058, -10379325, -8296266, 11927124, 18963892, -20448876, 10239739, -37165424, -3885872, 55640228, -2567854, 15817291, -5739687, 30438970, 30665530, -8360154, -375273, -14353244, 3677566, -10598369, --26933204, -17365090, -32163400, -23809152, 36144296, 14508400, 10817412, 47889960, -33740728, -20047834, -6291054, 17951352, -13131326, 8735427, -14075682, 26503706, 16112570, 9170292, 19696184, 69403448, --16193100, -5451387, -19128174, -22376780, -1153736, 29152090, -22575958, -3010772, 21099026, 22258132, -26743150, 15352361, -17524540, 4524211, -9533754, -2194728, 15757698, 4918812, -946503, 11460046, --20647518, 1332514, 774168, 5618354, -4311074, -5493800, 13222057, -4812511, -2735894, 14055817, -18618684, 14423574, 6840809, 6060736, 12450573, 3466576, 1393180, 8200703, 1307818, -4860293, -4126390, -231928, -787053, -23785528, 6232535, 15133854, 25426744, -5943698, -6563784, -8369818, -13197361, 14173929, -31609886, 3661997, -13788993, -2244121, 2310693, 1867237, 5508833, -8137890, --16961362, 13558675, -4235375, 31180926, -28660854, 7038378, -2245194, -9283572, -8478802, -4261682, -9414031, 5774584, 6332393, -1646046, 17335562, 2938831, -23131620, -18190260, -2689187, -10736344, --13391171, 2892124, 14296336, -2149094, -3496104, -21130702, 10151155, -3473018, 21310018, -7414724, --41590852, 4975720, -12479564, -6320581, -148713, -33645164, -17870286, -28907278, 303869, -2164664, --8311299, -38237020, -15750182, -3393024, 19733764, 22016002, 1543504, 1641751, 10516764, 2405182, --26469346, 22968948, 31077310, -13619341, 4491999, -13641353, 5408975, -124554, 23609972, -26794690, --19691352, -61269320, -21992916, 15446313, 24427090, 17573396, 15673409, -15080704, -5281199, 12244415, -11454678, 26616986, 12328704, 11393474, 20183662, 5213554, -22837414, -24104430, -33050848, 13733158, --21235928, 1897302, -18662706, -28230820, -43188044, 6155225, -12736189, -13331042, 3501472, 4132832, --1953673, -6085969, 559420, 14229764, 9470940, 3728569, -5804112, 10333154, 22708566, -4967667, --12955232, -10207527, 10952703, -5874979, -5542119, -20426864, -20270098, -15154792, -34383896, -1716913, --284005, -13442711, 5645198, 9379135, 6319508, 17144972, 4292283, 20211042, 912144, 5727339, -21648782, -10515154, -1013612, 3539053, -597537, -15057082, -987843, -2687039, 26148298, -1423245, --11465952, 8616778, 2874944, 8086887, 16579648, 5830955, -49035104, 20628728, -14633490, 1868311, -34892316, 29226716, -11558294, -4854924, 17967996, -11154030, -11784317, -9771051, 2408403, -3332895, --1327682, 4211216, -3858491, 17234630, 40954660, -17258252, -32133334, 32104344, -24906516, -6670084, -192737, 40056476, 3042448, -12059731, 11718281, 11201812, -41925860, -12257837, 6834367, -1577864, --19958176, -1449552, 7779797, -61438972, -28543816, 30506078, -30431990, -33718176, -20955146, 24925842, --32408750, -50516868, 50806780, -14940044, -31976032, -1803886, 19771346, -19446538, -34319472, -800475, -15450071, -1715303, -44120052, 10403485, -766652, -19646792, 46141372, 43639016, -3425773, -17670032, --34454764, 53194244, 7274064, 9467719, 18226768, -12975633, -51650204, 23306640, 39278012, 31627602, --19633370, 11483669, 42862164, 25068650, -29845190, -6446746, -23435490, 10602664, 6339372, 27172648, -26594974, -31977106, -1213865, -3224447, 4716411, -12338904, 12792560, -8028368, 7369627, 6904160, -5368172, -8884677, 6940131, -13353053, 22276922, -11157788, -5796059, 14421963, 12328704, -12707198, -1983738, -5810017, -15137075, -7821673, 5987185, 12129525, 7199976, -11927661, 6781754, -7562901, --18801220, 1214939, 3301219, -2701535, -1584306, 13077639, 765041, 1741072, 5968394, -1384590, -3198677, -19746650, 15066745, -50758460, 5582921, 47869020, 26055956, 6707129, -625992, -8649527, -12422119, -16860968, 39728448, -3016678, 10570988, 14702747, -13710072, 555125, -1760400, -15123654, --96637, 5771363, 22261352, -51540, -13881334, 6908992, 17900350, -2938295, 28395102, -22056804, -4565014, 6446746, 7370701, 24697136, -13562433, 2212982, -989453, -32135482, 4508642, -10477036, --17647484, 7567733, -6760279, 25336012, 18147848, -13216688, -28933584, 13758928, 2710124, 5831492, -16034187, 35152160, -6075768, 7328288, -14350559, 20200842, 14317273, 15118285, -16834662, 23132156, --8027831, -10011569, -20298552, -1743757, -8085813, 29940754, -22377316, 1680406, 7279970, -6740415, --13702019, 41787348, -1930588, 9979357, -3935801, 5108864, -3574487, 11780558, -1562294, -4995584, --3462281, -4384088, 13840532, 9786620, 13022341, 7401840, 4107063, -8892193, 9605694, 870268, -5303211, 4722854, 11704323, -1550483, 365609, 2008434, 3714073, 4006668, 8707509, -7131257, -5474473, 4938676, 4259534, 3738769, 2937221, 8693551, 3264712, -11121818, 6773701, 7933342, -8121783, 3686693, 8727910, 2549600, -594853, 5101348, 2811056, 6453189, -558346, -5464272, -1341104, 8888435, -4483409, 3778498, 410706, 9669045, 8522289, 3463891, 5975374, 9006010, -4098473, 16758962, -44322452, -124505736, -118375744, 51528872, 5108327, 113922400, 241282672, 52872120, -97284768, 51912732, -178860160, -80035640, -120267672, -176675088, -11775190, 20932596, -83414168, 74243880, -126297808, 77334648, 217448832, 133450536, 1306207, -20072530, -76833208, -191960880, -155448832, -66990216, --147242752, -43445204, 84325776, 25062208, 21416318, 199131328, 76914272, 48517024, 184385632, 8739185, --9211631, 84969488, -42204496, -151926944, -73450920, -151816352, -221653600, -24566676, -100628936, -82245400, -71108552, 137661216, 63807108, 243256752, 193936032, 112380504, 147317920, 49868864, -72028216, -111203144, --148099056, -237423648, -190202096, -127729640, -108671264, -33877092, 82819320, 125566056, 140120624, 188135680, -158572336, 74216496, 27159226, 40767828, -63394256, -97437240, -69020664, -145565568, -109362216, -18890340, --65227668, 25909928, 106700944, 38029788, 54522464, 77349680, 8389145, 4588636, -18709952, -72961296, --38030860, 562641, -28956132, 22456774, 31050466, -12600897, 39333848, 33607584, -52625696, 40310416, -47283296, -33292438, 76962592, 11638825, -75373992, 52791592, -41255844, -147731312, -24206972, -89821728, --108755016, 67185096, 8735963, 17026324, 142314816, 90204512, 100758856, 161437088, 119086024, 39277476, -17263084, -112615656, -204296560, -203641040, -203811232, -193120528, -117455008, 5947456, 111295488, 162829184, -223603520, 207243984, 196269264, 154291872, 26627724, -71069896, -77388328, -163993664, -202383696, -122074784, --108815144, -60921964, 11917461, 29442000, 36089536, 69954816, 62122944, 57802744, 82423640, 67642512, -43942348, 37842420, 10064719, -22348862, -38424924, -44301512, -45687716, -26032334, -13195750, -9221832, --8396661, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-12868796, 6489159, -2356327, 5675263, -2819109, -2884071, -5756867, 1356136, 1220308, -258235, +93416, -646393, -4403415, -512712, -2517925, -2896956, -2744484, -106837, 330712, -221191, +-495532, 2181844, -606127, -6664179, 4145180, 2057826, -2269353, 663036, -64425, 68183, +935766, 4279398, -2386928, 249645, -7549479, 3759170, 743029, 1695438, 2609730, 4236449, +-2370822, -1807108, -857383, -3801046, 304406, -576063, 3281892, -1769527, -224949, -1842541, +-2105608, 3991635, -3012383, -1461363, 375273, -2739116, 2282775, -107374, -1284195, 2466385, +4533875, 279173, -176094, -642098, 3876208, -3857954, 33823, -607738, 2028298, -954020, +-1765232, 4211216, -74625, 884226, -1171452, 869194, 2267206, -1823214, -2542621, 122943, +2213519, 3712462, -1674500, -1139777, 914828, 195421, 568009, -1711545, -550293, 1011465, +-230318, 709207, -1349157, -425739, -832687, -1169305, -842887, -788127, 591095, 98784, +-590558, 587874, 407485, -539555, -166967, -137439, -731755, -1319629, -369904, -5369, +270583, 706522, -15343771, 2608119, 1813013, 5377836, -2108292, 1629403, 6252936, -2422362, +1708860, -3794604, -5567352, 2036351, -3790309, -4326643, -4340065, 1305670, 1655173, -7405598, +4352413, 2884071, -1260036, -2712809, 1731946, -675921, -1686848, 534187, 2454037, 1813013, +3920232, 754304, -1194001, 4033511, -2030446, 8799851, 1981591, 5420786, 2090039, 4755603, +2118493, 3276523, 1774895, 389231, 182536, 6658273, 1129576, -1072131, 440771, 3514357, +2605435, 380105, -297963, -1372242, 742493, 8123394, 2331094, 3752728, -3926137, -2024003, +-4140885, -2622078, -4019553, 3015604, 1906966, -2573222, -1829656, 1805497, -1915019, 2015413, +-900869, -614717, -2779918, -4693863, 2019172, -7620883, -1075352, -1632625, -1926293, 406411, +-1777043, 348966, 2869038, 1380832, -1952600, 345745, -1548336, -3325379, -535797, 1581622, +-161598, -2570538, 932545, 459562, 973884, 1742683, 70330, 234613, -1203128, -741956, +-176094, -32749, 632971, -1398549, -1182727, 8637179, 11900818, -3645354, 3200825, -5910949, +-311922, 353798, 15205795, -1554241, -4014721, -6551973, 156766, 4363687, 6997039, -1575716, +-9173513, -2639258, -3494493, -2505577, 3124052, -672699, 5844914, 651761, -3297461, -7422241, +2232846, -695248, 1731409, -894964, 845035, 3638374, 1341104, -9339406, 1131724, 6009196, +2962454, 739271, 1445793, -1500554, 4170950, -5522254, -531502, 4555887, -3134789, 537, +7409356, -3418794, -341987, -2508798, 4561256, -4789426, -3546032, 2216203, -4958540, -2449205, +6470905, 3798899, -5767068, -2130304, -858993, -1433982, -2624225, 2073932, -2251100, 2378875, +-62277, 353798, 1051193, 4877472, -545998, 6724308, 3484829, -5164698, -2370822, -2521146, +4049081, 1203128, -262530, -2075543, 5418638, 2083059, -90731, -117575, -1342177, -1241782, +1615982, 622770, 1791538, 4219269, 1544578, -228170, 287763, 340376, 1380832, -280784, +533650, 2017561, 451508, 2496987, 96100, 884226, 1291175, 1530619, 562641, 969589, +1124208, 914291, 1449552, -438624, 456877, 984084, 1484448, -125628, -1102733, -1314797, +339302, 28390270, -10488847, 5761699, -8010114, -831076, 283468, -581968, -4245575, 2327336, +3267933, 796180, -3088082, -6575595, -245350, 4020626, 2856690, -2890513, -4950487, -397284, +4435628, 8100309, -4367982, -586263, -3297461, -7087233, 794569, -3565360, 2152852, -2639794, +5515812, -9678709, 6536940, -428960, -5761162, 1403381, 2428267, -683437, -3049964, 188442, +7573638, -286689, 1249299, -1072131, 2900714, 1333587, -1785096, -2845953, -6221797, 4033511, +-1299765, -1835025, 2397666, 38655, -10459856, 8036421, -11258183, -6504191, -7971996, 1714766, +-930934, 4775467, -2607582, 2537252, -4796942, 2303176, -1251446, -1970316, -5292474, 3237332, +3735011, 6368900, -1544578, -618475, 1734630, -1946694, -1137630, 1218697, 3693672, -4888747, +2420751, 3494493, 3903589, -6193343, -5043902, 2107218, -3149822, 1600949, -43487, -382789, +553514, 765041, -252866, 1446330, -1789928, 862215, -548145, 3601330, 227096, 871342, +826244, 216359, -1410897, -139050, 367757, -411780, -22416508, 2263448, 216896, -1921461, +-3474629, 3899830, -3058554, 2588792, -824634, -57982, 3600793, 4695473, -2919504, 3454228, +-1032403, -1932735, -6302865, -325881, -8508867, -6249715, 7452305, 2649458, -2913062, -1074279, +-896038, 5169530, 2717641, -2683281, 4709432, 3129958, 1835562, 1620276, 1994476, 3586298, +3081639, 3044058, 8336532, 7504382, 3230352, 819265, -5209259, 5767068, -7730941, 1511829, +-2165201, 6248641, -4735739, -6153078, 10539313, -2471217, -5669357, -5055177, 7841000, 4810900, +274341, 4027069, 5688148, 2603824, 9207873, -561567, -1468879, 5220533, 3185792, 295279, +193810, -4809827, 2864206, 2980171, 7430294, 3017752, 4621385, -2873333, -3838627, -8139500, +-1881196, -4408247, -3509525, -3714610, 4090956, -159451, 301721, -2393908, -2768107, -778463, +-2437394, 737124, -1647657, -2707977, 1088774, -279710, 84289, -2535641, -384936, 89121, +-3191698, -450435, -774168, 196495, -1444720, -1664837, -1040993, -627602, 37581, -545998, +483721, -759136, 867583, 197032, 764504, 1725503, -420907, 1822677, 356482, 1191317, +-864899, 358630, -1612223, -609885, -290447, -1933809, -615791, -960462, -29869350, 7989713, +-6392522, -9442486, -9336722, 5761162, -6935299, 5086315, -8706972, 4763119, 4065187, 2491081, +-9164923, 6244346, -131533, 3772055, -7596724, 4198868, 8942122, 6830609, 227096, -3231963, +1240172, -1957431, -9684078, -1978906, -4664872, 2189897, -6098854, 5197984, 5098663, -2044404, +-245887, 7160784, -1595580, 4851166, -3942243, -6283001, 3241627, -130460, 3354906, 8813810, +5356361, -352187, -15425912, -7408282, -2160369, 2115808, -2391223, 8461622, -13404593, 4214437, +1795296, -157303, 4174171, -1756642, 6478958, -14052596, -6570226, 5413807, -14122389, -2636573, +6558952, 2334315, -3136937, -9427990, 3470871, 6047314, 4431870, -1702418, -9890236, -874026, +52613, -1142998, -549219, -4855461, 2167885, -7753490, 4731444, 645319, -4608500, 883690, +-5538897, 395137, -6620692, -1870995, 2290828, 2408940, 192737, -659278, -2296197, -1739999, +439160, -3901978, 3100430, 214748, -1898376, -12885, -3369402, -2665027, 724776, -1402307, +1793149, -1788317, -1005022, -1181116, -1290638, -2290828, -403190, -1290101, -523986, 607201, +-549219, -1047972, 811212, -438624, -894964, -921807, -2027225, -1434519, 247497, 1033477, +-324270, -14036490, 1513976, 2340220, 10994579, -10384157, 12004970, 3404835, -971200, -2818572, +-1298691, 1116692, -8783745, -1677722, 2808372, -2880313, -5159330, -1387811, 8297340, -8573292, +-1874753, 8601209, 29528, -3400004, 3020973, -4172024, 6313602, 2790118, -92879, 3173444, +-3684545, -5768141, -427349, 454193, 4717485, -10121627, -5481452, -4458176, -3148748, -2987150, +-3090229, 1537598, 477278, 861678, -7584376, -7747048, -6189048, 245350, -9739375, -5344013, +5794448, -3911105, 1259499, 645856, -210453, 2455648, 3423089, 3317325, 3877819, 5763309, +-1045288, 6234145, -430034, 3169686, -552440, -3947075, -271657, -6386080, 3932580, -7479149, +6980933, -8348880, -167504, -8611409, 780073, -8651138, -8404714, 4002910, 11471858, 3522410, +-7470559, 5345624, -46171, -3232500, -2006824, -3387656, 4532264, 4000762, 5583458, 1070521, +4341675, -3652333, -450435, 4363150, 454193, 1391569, 795643, -2029372, 2525441, -167504, +905164, 3882651, 1061931, -879395, -2337536, -975494, 1515050, 1633161, 1183800, 519154, +-1837709, 217970, -440771, -3913789, 3817689, 534187, 1353989, 270583, -1015760, -1800665, +1297617, -1835025, -992137, 39034272, 471373, -11252814, 1777580, -6109054, 15565498, -2545842, +4383014, 1139240, 759136, -13675176, -7004018, 7583302, 6670084, -10776073, -1887101, -328565, +9596031, 4714801, 3655554, 9401683, 1486059, 614717, 8169028, -2857227, -12424804, 1836099, +9512279, 5624797, -3593277, 186294, 6635188, 4038343, 1818919, -358093, -6968585, 3389803, +-7580081, 750546, -14276471, 3739843, 4405026, -1161252, -6566468, 9062381, 4774930, -1884954, +7058779, 3246459, -5939403, 10880763, 1180579, -3865471, 2534568, 11157251, 1745367, -294205, +-9306657, -5439039, 1313723, 3779034, 12730820, -4200478, -5034239, 1097901, 6953015, -4491999, +-5507222, -501974, 9256728, 6615324, -2295660, -7104950, -362388, 8072391, -3205119, 16769700, +3665755, 2502355, -8575976, 7283191, 451508, -1859184, -4352413, 426276, -2425583, 445603, +10386842, 4727686, 3792993, 1978906, 1214939, 170188, -658741, 959388, 2103460, 3741990, +595927, 673773, 1393717, -2841658, 79457, 1232119, -621697, 3258807, -2291902, -64425, +-1112933, 1283658, 5529234, 1887101, -1702955, -408022, 1332514, 471373, 1859721, -351650, +-2356863, 2203318, 1990181, -1854889, -483721, 4867809, 1681480, 8798777, 4672388, -13883482, +-1445793, -7026030, 13937706, -5244692, 6491306, 1231582, 8724152, 3431679, 1285269, -732292, +3538516, -4003447, -5934571, -16429324, -12155294, 3998615, 10798622, 14486925, -5346161, -7103339, +-6242735, 3218004, -3425237, -758599, -594316, 1934346, 2201708, 9664750, -5166846, 889595, +2379949, 4709432, -4689031, -3497714, -7733626, -5259188, -5392869, -9221832, -23351200, -293668, +-3131568, -10055592, 2249489, -1154809, -12665322, 4231617, -10740103, 2731599, -1305670, -902480, +5447629, 7035157, -202937, -10494216, 3084324, -6595459, -7252053, 10059350, 9106941, 10132902, +-3310346, 1624035, 1351841, -5202279, 808528, -2510409, 15909096, -2647847, -1631551, -1596654, +-107911, -9730785, -12016245, 2838974, -870805, -913754, 2725694, 17285632, -2128156, -8128226, +-3409667, 9065065, -1312113, -2967823, -2601677, -205085, -7357279, 1763621, -1400696, 1358820, +-3707631, 144418, -4667019, -416075, -278636, 1875827, -1945620, -984084, -2841658, 3847754, +268972, -2860985, 657667, 1258962, -3011846, 753767, 1225676, 4707821, -954020, 1069447, +3381750, 2044404, -1697586, 1979443, -3564286, -5905580, 753767, 530965, -2182380, -5508833, +-1081258, -1383516, 4900558, 1766305, 3304977, -595390, 4115653, 4501126, -15300284, 5615133, +1836099, 16104517, -10882910, -6174016, -3633542, 8587787, -8251169, -7925826, 7107634, 4779225, +-8346732, -8412767, -8243116, -18403934, 12037183, 11305965, 11983496, -5194763, 3769371, 11900281, +-17304960, 4295, 11312407, 10495826, 4742181, -45634, -5559299, 1138166, -2692408, -14964740, +1867237, 4079145, 2166811, 9898289, -8765491, 926102, -16358457, -2087354, 3200825, -8987219, +3442953, 2742874, 7277822, 8916889, 12396349, -2553895, -4904853, -15009300, -10731513, 4614406, +22005264, -6848326, -943819, -10166188, -5407364, -8067023, 4719632, 4871030, -1721745, 711891, +-16152298, -2135673, 10886131, -8720394, -7580081, 6467147, -2938831, 9467182, 2314987, -6966974, +1093606, -10522133, -3060164, -2782065, 20258286, -2034741, -5971079, 4440460, 4110284, -1785096, +-3482682, -1038845, -2806224, -3773666, -3544422, -2688650, 1392643, 1575179, 3238405, -845572, +-84289, -1956358, 1948305, 513249, -5239860, 1393717, -80531, -563178, 1847910, -115427, +-2877628, -2811593, -6762426, 2244657, -2152852, 1988570, 2534568, -3161633, 1410360, 921271, +-709743, 2555506, -25233, 7296076, 987843, -1318555, 138513, -2114198, -417149, 1276142, +170725, -629213, 557809, -2843268, 2245194, -9569724, 21889838, -10900090, -5649493, -513249, +-802622, -15664819, 927176, -11553462, 8222178, -21650930, -3221762, -6967511, 7290170, -7490423, +-7546258, -18325552, 12228309, -7570954, 4980552, -5936182, 3603478, 9663140, -7139310, -12031814, +-4098473, 8137353, 16927002, 5408438, 7043747, 788663, -17198660, -9222369, -9306120, -4799626, +2919504, 15473157, 6616397, 8990977, 8404177, -2424509, -3690988, -5271536, -14388677, 727997, +-10063645, 15447924, -7161321, 10624675, 2211908, -5634997, 3504693, -3767760, -4927401, -8490077, +12658342, 3286724, 21437256, 4661114, -23225572, -5822365, 7349763, 5973763, 3314104, -1358820, +1980517, 24178518, 12045236, -4146791, 2534568, -6575595, 17485348, -724239, -762894, 6782827, +-15541339, -6728067, -5334887, -16596291, -19673634, 3835406, 6915434, -1886028, -9737228, -2580739, +-3156264, -7638600, 34360, -1602560, -6090264, 5916318, 9074729, -2068027, -1440962, -1440425, +-3692598, 2570001, 519154, -1102733, -1949915, -1655173, -1184874, 2958696, -1872606, -4377646, +-1161789, -272730, 1272384, 796716, -2750927, 6409702, -2243047, 3866544, -885300, 3216931, +1609539, -1116692, -4531191, -4299799, 1325534, -1222992, -6789270, -2521146, -1771137, 2373506, +483184, -574452, 1722282, 2976412, 891743, -1902671, -2887292, -13333726, 8060580, 17949742, +-1707786, -722628, -362925, 16687022, 5202816, 4039954, 2891050, 2019172, 2876554, -6501507, +1266479, -20558398, 3001109, -9879499, 8652212, 21131776, -2699387, 1588601, -16593069, 22274774, +10814191, 9495099, -2732673, -12164958, 1504312, -4114579, 11307575, 8142185, -10071698, 595390, +5978595, 4261682, -7791608, -6886443, 32583232, -7493644, -5650030, 6920803, -8265128, -5986648, +10375030, 10200010, 422517, 3961571, 3707094, -12541305, -6249715, -477815, 4311074, 11092290, +2743410, 2666101, -14219026, -1283122, 4213363, -19366008, 4271882, -5341866, -1951526, -3520800, +5724118, -5716065, -10538239, -11210938, -17837000, 2319819, -7226283, -3419868, 11433740, -3808562, +3711926, -20064476, -35433, 18608482, 4337380, -9295920, -5571647, 11331197, 5772973, -12283606, +6930467, -8876087, -6897718, -2875481, -1734093, 4275103, -1200443, 796716, -1917166, -2394444, +1486059, 2313377, -3148748, 2741800, 8179229, 1337882, -1127429, 3572339, 5164698, -2134062, +3510599, -2238215, -3189550, 959925, 2330557, 6867653, 1783485, -599685, 2463701, -971200, +3498788, -1917703, 3214783, -2393371, 1059783, 2905546, 813896, -4640712, -2694018, 8698919, +-3674345, -6840273, 3391414, 1870995, 2524904, -1753957, 11043972, 3293166, -10327786, -10369125, +24533926, -14740328, 3798362, -9434969, 28929826, 6121402, 5319854, -9293235, -10993506, 1022202, +8238284, -8913668, -14198088, -8448738, -20629264, -8055211, -12127914, -52613, -27713814, 1908039, +14954539, 9201967, 12215961, -8581882, 3157875, 13276818, -1580011, 9620190, 3549254, 15009300, +-7581154, 12513924, 9934259, 7105487, 16256451, -9148817, 9668508, -5008469, -5832029, -3866544, +3564823, -31614718, -10141492, -19657528, 22695680, -14343580, -16210280, -3476776, 12790949, 344134, +-5818070, 17867600, -6429029, -5681168, -13015362, -31967442, 1513976, 2961380, 13282186, -13407277, +2684, -8176007, -10816338, 17086454, -3487514, 8558796, -18622442, -18096308, -11322608, 14246407, +-1504312, -9024263, -9614284, -380105, -15800648, -10759967, 1495722, -6607807, -11793980, 17344688, +-23834922, -22669912, 5893232, 105227, 9980967, 1160715, -1131724, -7302518, -6497212, 1078574, +-11289858, -4518306, 9549323, 1293322, 1605781, -5541045, 5638755, 2131378, -6183143, 2906082, +-4593468, -904091, -4709432, 4096862, -6253473, -1525250, 4197794, 8283918, 886374, 377957, +-9015673, -2674691, -650688, 1350767, -1361505, 7691750, -354872, -2873333, 4854387, -5640903, +-5265630, 3280281, 6949794, -1901597, -4986994, -6662568, 5343476, 4397510, 8628052, -11963631, +-165893, 15846819, 2007360, -4900021, 8134131, -13025025, 25678536, 16091095, -242129, -11865921, +-13416941, 5478231, -3447785, -1287953, -795643, 23420994, -11631845, 353798, -8121247, 8569533, +-14696304, -13468481, -26441430, 6026913, -10802380, -14892799, -1902134, -25133612, -12404402, 6994891, +5247377, -3514894, 12949863, 1140314, 15716896, -7056632, -21885542, -3387119, -16059420, -3118683, +-4890357, -20968568, 2637647, 16950626, -48029008, 5999533, 24696, 11818676, -2473901, -14989436, +-28538448, 11272142, -3585761, 10531260, 6252936, -3531537, 16506633, -20711942, 28855200, -7323456, +16056735, 33717104, 13423920, 23974508, 9358197, 6249178, -3372086, 12495670, -4760435, -13191992, +-17796196, -11485279, -687195, 9912248, -1723356, -7783018, -11080479, -9882720, 13284334, -6007049, +-4912369, 11946988, 2094333, 8988293, -1023276, -1352378, -3733400, 2084670, 4452271, -6172405, +-1082332, -15044197, -10927471, 7342784, -3742527, -411780, -2273648, -314606, -5812702, -9011378, +6429029, -5433134, 8379481, -8665633, -4058744, -981937, -6140730, -3067144, 4180077, 1751273, +10178536, -2594697, -6204081, 3859028, -12330314, 192200, 1414655, -1913945, 718333, -1372242, +5951214, 8683350, 1400159, -313533, -4274566, -7268159, -3601330, 418759, 14148696, 7131257, +-7256347, 40425304, 32943472, 29687350, -6747931, 89121, -25183004, 18844170, 23369990, 7960722, +22574884, 9023726, 7681549, 7935489, -3976066, 3136400, 6253473, -5738613, -24264418, -14722611, +-888521, -16112033, -18786724, -44126492, 9707163, 7644505, 11514807, -8436390, -3011309, -5857799, +318901, -13788993, -389231, -10502806, 12226698, 10188199, -6299644, -8542153, -23272280, 39223252, +-12239046, 7758859, -13422, 2542621, 6259915, -16189342, 19552302, -9841918, 6684043, 4401805, +-14609331, -15036681, -2787971, -1297080, 9082245, 41401876, -3457986, 6175626, 1371705, 12503187, +8882529, 9321153, -7311645, -2157147, 3578245, -19975356, 4065187, -17090212, -27332098, 9549860, +867583, 2193118, -20010790, -48067128, 20797306, 21751324, 14969572, -27247272, 25967910, 27624156, +10208064, 8036958, 243203, -7917236, -18166638, 13631152, -12801687, 863288, 223875, -7174743, +5485210, -13009456, -1366337, -2512019, 6452652, -3577171, -6013491, -8065412, 12421045, -6769942, +-2967286, 3286187, -11174968, 6257231, 5073967, -3815542, -3918084, 1137093, -10382547, 9650792, +-3491272, -2536178, -878321, 872415, 7063074, -5512591, -13127031, 3968013, -7323456, -2201171, +-7505456, -6575058, 1012002, -5302674, -2474975, -4933844, 16830904, -7394860, -13702556, 2233920, +-4927401, -23708756, -47311212, 39245800, 6303938, 6959995, -15766288, -11353209, -50333260, 13904957, +35982700, 11028939, -31880468, -15953656, 5170604, -12414066, -7881802, 14744086, -16598438, 9262097, +8264054, 6834904, -18476950, 6594923, 5713380, -8673686, -17292076, -10012643, -6659347, -4479114, +-16495359, -14228153, -7827578, -17009144, 13406740, -6352794, -21950504, -7583839, 13460428, -2789045, +-15221901, -8382166, -7770133, -57445, -12066174, -7279970, -19992536, -18996640, 8085813, -6760279, +24937116, 16389058, 1601486, 14881525, -21805012, 14095546, -20697984, 17390860, -2982855, 8895951, +-9233106, 30904438, -7708930, 17307108, -4431333, 25421374, 10234907, 6186364, -26240102, 28460600, +22778360, 9921911, 10583336, -20463372, -3908957, 8378945, 13981729, -3624416, 3374234, -22602802, +14503568, 24800752, -547071, -17748416, -1036698, -11734388, -10053982, 4862977, -59056, -4896263, +5729487, -12948790, -3048890, 507880, 3688303, -8923868, -12266427, 4731444, -5976447, -11565273, +-20772610, -1511292, 6445672, -1713692, -10462003, -12592307, -3875134, 8048769, -8677445, 3354370, +4646618, 1338419, 3415573, -1038845, -5583458, -4676146, -1569274, 5834713, 1941862, -2205466, +-7798587, 10728828, -6905771, -5983963, -5041755, 2202781, 12422119, -8340827, 12232067, 10393821, +-4118337, 3838090, 6514392, -32829656, 28046674, -3228205, 13476534, -18068928, -5818070, -4432943, +-4152160, -4145180, 16408923, 574989, -13533979, 11053098, 1952063, 8010651, 13916231, 14088566, +799938, -11951283, 49597744, -13458280, 38157564, 437013, 2347737, -21415780, -9365176, 3745748, +18513456, 9297530, -5922223, 15288473, 3160022, -20649130, 3567507, 3258807, 21537650, -574989, +12929999, -15590194, 96100, 14748918, 7313793, 12386149, 32314260, 26058640, -3930432, 13642427, +-1918240, 25606058, -20231980, 17206176, 6979322, -624918, 15304579, -7708393, 39567924, -6499896, +19172198, -14031658, -12659953, 979789, 42146516, 14024679, -38912940, 34936336, -581431, 12472048, +-29299730, 10350871, 3517041, -58573152, 24864102, 45370960, 17424682, -18463528, -11716134, 9481140, +44580688, 25617332, 34020436, -11945915, -16279537, -14637785, 7300371, 9583146, -1336809, -16569447, +-7346542, 21420076, 3971771, 5182415, -7035694, 10060961, -2248952, 4790499, -4289062, -5302137, +-6531035, 13103408, 21578990, 21049098, 4925254, 11370926, 19857782, 13379360, 14078366, 19195820, +10931766, 18353468, 13959717, 5349382, -26927298, -4909685, -12424267, 8023536, 16176994, -17756468, +-6150393, 21809844, 12064026, 2841121, -4665945, 18527416, -13861470, 3689377, 19085760, 15127412, +8558259, 10288594, 11790759, 9917616, 11691975, 7698729, -8935143, -4364761, -15902653, 20333986, +3195456, 13576928, -10773925, 27122718, -9361955, 12703976, 4294968, 5734318, 4068408, 2486249, +-28151900, -16248935, 287226, 2678449, 19429358, 16071231, -22943178, 2469069, -12589623, -11423002, +5798743, 1530619, -7787313, 9643275, 37418828, -24625732, -1858110, 57242252, -34665216, 4187593, +20517058, -10379325, -8296266, 11927124, 18963892, -20448876, 10239739, -37165424, -3885872, 55640228, +2567854, 15817291, -5739687, 30438970, 30665530, -8360154, -375273, -14353244, 3677566, -10598369, +-26933204, -17365090, -32163400, -23809152, 36144296, 14508400, 10817412, 47889960, -33740728, -20047834, +6291054, 17951352, -13131326, 8735427, -14075682, 26503706, 16112570, 9170292, 19696184, 69403448, +-16193100, -5451387, -19128174, -22376780, -1153736, 29152090, -22575958, -3010772, 21099026, 22258132, +26743150, 15352361, -17524540, 4524211, -9533754, -2194728, 15757698, 4918812, -946503, 11460046, +-20647518, 1332514, 774168, 5618354, -4311074, -5493800, 13222057, -4812511, -2735894, 14055817, +18618684, 14423574, 6840809, 6060736, 12450573, 3466576, 1393180, 8200703, 1307818, -4860293, +4126390, -231928, -787053, -23785528, 6232535, 15133854, 25426744, -5943698, -6563784, -8369818, +13197361, 14173929, -31609886, 3661997, -13788993, -2244121, 2310693, 1867237, 5508833, -8137890, +-16961362, 13558675, -4235375, 31180926, -28660854, 7038378, -2245194, -9283572, -8478802, -4261682, +9414031, 5774584, 6332393, -1646046, 17335562, 2938831, -23131620, -18190260, -2689187, -10736344, +-13391171, 2892124, 14296336, -2149094, -3496104, -21130702, 10151155, -3473018, 21310018, -7414724, +-41590852, 4975720, -12479564, -6320581, -148713, -33645164, -17870286, -28907278, 303869, -2164664, +-8311299, -38237020, -15750182, -3393024, 19733764, 22016002, 1543504, 1641751, 10516764, 2405182, +-26469346, 22968948, 31077310, -13619341, 4491999, -13641353, 5408975, -124554, 23609972, -26794690, +-19691352, -61269320, -21992916, 15446313, 24427090, 17573396, 15673409, -15080704, -5281199, 12244415, +11454678, 26616986, 12328704, 11393474, 20183662, 5213554, -22837414, -24104430, -33050848, 13733158, +-21235928, 1897302, -18662706, -28230820, -43188044, 6155225, -12736189, -13331042, 3501472, 4132832, +-1953673, -6085969, 559420, 14229764, 9470940, 3728569, -5804112, 10333154, 22708566, -4967667, +-12955232, -10207527, 10952703, -5874979, -5542119, -20426864, -20270098, -15154792, -34383896, -1716913, +-284005, -13442711, 5645198, 9379135, 6319508, 17144972, 4292283, 20211042, 912144, 5727339, +21648782, -10515154, -1013612, 3539053, -597537, -15057082, -987843, -2687039, 26148298, -1423245, +-11465952, 8616778, 2874944, 8086887, 16579648, 5830955, -49035104, 20628728, -14633490, 1868311, +34892316, 29226716, -11558294, -4854924, 17967996, -11154030, -11784317, -9771051, 2408403, -3332895, +-1327682, 4211216, -3858491, 17234630, 40954660, -17258252, -32133334, 32104344, -24906516, -6670084, +192737, 40056476, 3042448, -12059731, 11718281, 11201812, -41925860, -12257837, 6834367, -1577864, +-19958176, -1449552, 7779797, -61438972, -28543816, 30506078, -30431990, -33718176, -20955146, 24925842, +-32408750, -50516868, 50806780, -14940044, -31976032, -1803886, 19771346, -19446538, -34319472, -800475, +15450071, -1715303, -44120052, 10403485, -766652, -19646792, 46141372, 43639016, -3425773, -17670032, +-34454764, 53194244, 7274064, 9467719, 18226768, -12975633, -51650204, 23306640, 39278012, 31627602, +-19633370, 11483669, 42862164, 25068650, -29845190, -6446746, -23435490, 10602664, 6339372, 27172648, +26594974, -31977106, -1213865, -3224447, 4716411, -12338904, 12792560, -8028368, 7369627, 6904160, +5368172, -8884677, 6940131, -13353053, 22276922, -11157788, -5796059, 14421963, 12328704, -12707198, +1983738, -5810017, -15137075, -7821673, 5987185, 12129525, 7199976, -11927661, 6781754, -7562901, +-18801220, 1214939, 3301219, -2701535, -1584306, 13077639, 765041, 1741072, 5968394, -1384590, +3198677, -19746650, 15066745, -50758460, 5582921, 47869020, 26055956, 6707129, -625992, -8649527, +12422119, -16860968, 39728448, -3016678, 10570988, 14702747, -13710072, 555125, -1760400, -15123654, +-96637, 5771363, 22261352, -51540, -13881334, 6908992, 17900350, -2938295, 28395102, -22056804, +4565014, 6446746, 7370701, 24697136, -13562433, 2212982, -989453, -32135482, 4508642, -10477036, +-17647484, 7567733, -6760279, 25336012, 18147848, -13216688, -28933584, 13758928, 2710124, 5831492, +16034187, 35152160, -6075768, 7328288, -14350559, 20200842, 14317273, 15118285, -16834662, 23132156, +-8027831, -10011569, -20298552, -1743757, -8085813, 29940754, -22377316, 1680406, 7279970, -6740415, +-13702019, 41787348, -1930588, 9979357, -3935801, 5108864, -3574487, 11780558, -1562294, -4995584, +-3462281, -4384088, 13840532, 9786620, 13022341, 7401840, 4107063, -8892193, 9605694, 870268, +5303211, 4722854, 11704323, -1550483, 365609, 2008434, 3714073, 4006668, 8707509, -7131257, +5474473, 4938676, 4259534, 3738769, 2937221, 8693551, 3264712, -11121818, 6773701, 7933342, +8121783, 3686693, 8727910, 2549600, -594853, 5101348, 2811056, 6453189, -558346, -5464272, +1341104, 8888435, -4483409, 3778498, 410706, 9669045, 8522289, 3463891, 5975374, 9006010, +4098473, 16758962, -44322452, -124505736, -118375744, 51528872, 5108327, 113922400, 241282672, 52872120, +97284768, 51912732, -178860160, -80035640, -120267672, -176675088, -11775190, 20932596, -83414168, 74243880, +126297808, 77334648, 217448832, 133450536, 1306207, -20072530, -76833208, -191960880, -155448832, -66990216, +-147242752, -43445204, 84325776, 25062208, 21416318, 199131328, 76914272, 48517024, 184385632, 8739185, +-9211631, 84969488, -42204496, -151926944, -73450920, -151816352, -221653600, -24566676, -100628936, -82245400, +71108552, 137661216, 63807108, 243256752, 193936032, 112380504, 147317920, 49868864, -72028216, -111203144, +-148099056, -237423648, -190202096, -127729640, -108671264, -33877092, 82819320, 125566056, 140120624, 188135680, +158572336, 74216496, 27159226, 40767828, -63394256, -97437240, -69020664, -145565568, -109362216, -18890340, +-65227668, 25909928, 106700944, 38029788, 54522464, 77349680, 8389145, 4588636, -18709952, -72961296, +-38030860, 562641, -28956132, 22456774, 31050466, -12600897, 39333848, 33607584, -52625696, 40310416, +47283296, -33292438, 76962592, 11638825, -75373992, 52791592, -41255844, -147731312, -24206972, -89821728, +-108755016, 67185096, 8735963, 17026324, 142314816, 90204512, 100758856, 161437088, 119086024, 39277476, +17263084, -112615656, -204296560, -203641040, -203811232, -193120528, -117455008, 5947456, 111295488, 162829184, +223603520, 207243984, 196269264, 154291872, 26627724, -71069896, -77388328, -163993664, -202383696, -122074784, +-108815144, -60921964, 11917461, 29442000, 36089536, 69954816, 62122944, 57802744, 82423640, 67642512, +43942348, 37842420, 10064719, -22348862, -38424924, -44301512, -45687716, -26032334, -13195750, -9221832, +-8396661, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -5057861, --1954210, 1161789, -951872, -2919504, -227096, 6715182, -3470871, 771484, -1473711, -89121, --2590402, 4829691, -2529199, -2690797, -3041911, 5757941, -3448322, -911070, -1639067, 1611150, -2646237, 3365107, -4782446, -23085, 4543002, 2006824, 762357, -263067, -588411, 2049236, -4631586, 1111323, -5990406, -3089692, -3231963, 5203353, -552977, 3968013, -2519535, 1833951, -5197984, -2552284, -3948686, 1386738, -1489280, -272730, -3535295, -1429150, -2646774, 989990, --4786741, -1582159, -1239098, -161061, 6432788, -2114198, -988916, -238371, -1709934, -676457, --628139, 3898220, 2002529, 2388002, -3374771, 2455648, 2567854, -2292439, 1051193, 1527398, --1745904, -2350421, 2725157, -4117263, 2887292, 1751273, 751082, -3815542, -1338956, 1417876, --354872, -794569, -1045825, -91268, -2062658, -2376728, -382789, -392453, 267899, -893890, -3221, 1407139, -70330, 523986, 183610, 278099, -2147, -275415, -1045825, -619549, -687732, -365609, 18254, -140660, -3170223, 3351148, 390842, -1446867, -2164127, -591095, --1102196, 3758, -2681670, -2057826, 1512365, -424128, -1034550, -4678830, -705985, 4351876, --2940979, -733903, 3270618, -1890859, -3519189, -2678449, 2226941, 19327, -352187, -674847, --3376381, 1133335, -1509681, -790274, 3794604, -2093797, -5169530, -1537061, 273804, 1546188, -1342177, 443455, -3931506, -904091, -4786741, -4336843, -1182727, 4545149, -801011, -8981313, --419296, 3026341, 2611340, -1853278, 1751273, 1933272, 164283, 2673080, -4855461, -3423626, --471910, 1406065, 204011, 1002875, -539018, 1268089, 1130650, 1870995, -300648, 1154273, -1077500, -901406, 1836635, -457951, -4738423, -3864397, -2525978, -1992328, -2139968, 646929, --1095754, 3658239, 3001109, -557272, -1480153, -1268626, -698469, 1100585, 1704028, 220117, --1031329, 186831, 219580, -997506, 1276679, 9664, -321586, -498216, -131533, -741419, -497679, -144955, 76236, -858457, 491237, -540092, -16643, 8053, 333397, -141734, --432181, -164283, -831613, -313533, 60130, -396748, 47245, -672162, 4108673, 2295123, -6155225, 405338, -1218697, -764504, 4352413, -1194001, 2331094, -3998078, -432181, -113280, -2280628, 1585917, 3901978, 2746095, -2021319, -3946538, -3228205, 2192044, -1382980, 2997350, -1877438, 392990, -207769, 2490544, 1745904, -1825898, 2044941, -4248797, -605054, -3939022, --3381750, -4738960, 1363115, 2688650, -518617, 3743601, -2935610, 3467649, -7058779, 2698313, -1180579, 5198521, 1506997, 1862405, 2789581, -133681, -1815697, 1937567, 4524748, 1538672, -2181307, -741419, -100395, -6452652, -449361, 1018444, 1219771, -952946, 3417183, 6453189, --2181844, -4655745, 3074660, 678605, -3315178, -59593, -1548873, -3323768, 386010, 4641786, -1140851, 1684701, 760746, -501974, 1744294, 1086090, -114890, 1523640, 72478, -427349, --367220, -882616, 876710, -1293859, -185220, 2154463, -493921, -54224, 799938, -512712, -1446330, -2060511, -951872, 28991, -847719, -900333, 192200, -506806, 679679, 1578937, --622770, 891206, 211527, 91805, -5906, 219043, -1804423, -459025, -430570, 347892, -1433445, 863288, 2265059, 3387119, 3258270, -3156264, 4973036, -1770063, -3306051, -4885526, -1132261, -6461242, -405338, 670552, 1785633, -4121558, 2661269, -67109, 591632, 1724429, -1058710, 1459215, -5562520, -374199, -1260036, -3629247, 2119566, 1066763, 832150, 3112241, -10954314, -808528, 562104, 1561221, 2706366, 1071058, -8993662, 1867237, -1494649, -1033477, -4924717, 143881, 2450279, 3551938, -4437238, -2477123, -1280437, -4305705, -9229885, 434865, --3479461, -557272, -804770, -191126, -2139968, -4518306, 1282585, -4323422, -1372242, 973347, --4818417, 4987531, 1722282, 1417339, -2024003, -370441, -788127, 991064, -1552631, 2560338, --3951907, 1312649, 6011344, 4977867, -1738925, 2531346, -2365990, 1072668, -4480725, -148713, -2790655, 3216931, 2880849, -497142, 5362267, 489089, 2681670, 2392297, -91268, 1114544, -587337, 199716, -903017, 537945, 838592, -323733, 98784, -605590, -1468342, -230854, -1012002, -789200, 2166811, -599148, -1117228, -958315, 764504, -541166, 952409, -181999, --902480, 541166, -244813, 1115618, 687732, 654983, 456877, -1937030, -448287, 263067, -839666, 29528, 171262, -519154, 7312719, -9306120, 379568, -5735929, 2913599, 4210142, -5136244, -813896, -4907537, 110059, 5059472, 1067299, 955630, -3830574, -526134, -6696391, -8864812, -486405, -6852084, 7387881, 1838783, 2179159, -497679, -2685428, -888521, -3541738, --3494493, 2720862, 3866544, -805843, 3647501, -3033858, -1902134, -14496, 5096516, 4825933, --1373853, -2742337, 3964255, 2525978, 357556, 3356517, 786516, -3973382, 4150549, 2586644, --328565, -1389422, 1134408, -4281546, 11356430, -601832, -422517, 8461086, -786516, -5196911, --2828236, -624381, 2049236, -5400385, 3671123, 1101659, 111669, -4903779, -4138201, -8657580, --779537, 4022237, 1991791, 4880694, -2726767, -1930051, 10227391, -2855617, 1697049, -1432909, --4259534, 318364, 1858647, -4438849, -7871602, 318901, -4859756, -4896263, -2404645, 2543158, -213138, -746251, -3019362, -1036698, 329639, -1131187, -850940, 796716, 2783139, 387084, -689342, -1987496, -1025960, -212601, -33823, -2800856, -2062658, -1780801, -119722, 670015, -258772, -916976, 53687, -184684, -296890, -1472100, -551903, -218506, -574452, -773631, --9816685, -150324, -4153234, -4692252, 1365800, -5627481, 113280, 3776887, 2036351, 7960185, --13394929, 8528731, -1467268, 3704409, -2603824, -1956895, -7062000, 6203544, 5465346, 1341104, --6283537, -388695, -3655017, -476205, 6445136, 4475356, 947040, 6142340, -137439, 272730, -557809, -261456, -4379793, 9205726, -977642, 40802, 10699300, -6981470, 2520609, -3353833, --749472, 3351685, -1518271, -5516886, 10296647, 8020852, -340913, 2573222, 4287451, 11131481, --1497333, -2059974, -6113886, 1017907, 2075006, -6462852, -6892886, -6065568, 7172596, 121870, --3008088, 4916127, 3482682, 22012, -1759326, 1573032, -3940633, -1036698, -4283693, -993748, -3971234, -7878581, 1822140, -1683627, -5463736, 3291556, 5196911, 2198487, 5413270, 4687420, --4023311, -6423661, -3216394, 2788508, -2543158, -4942971, 3170760, 5349382, -3920768, 646393, -1132798, 581968, -3661997, 2110440, -1636383, -1303523, -2353105, -1240709, -1843615, -195421, --213138, 695248, 1122060, -936840, -807991, -367757, -1464047, -858457, -399432, -588947, -1150514, 1443109, 367757, 2128156, -1977833, 1437203, -1716376, -781147, 1472637, 7350300, -7799124, 1292785, -6720550, -924492, -6382859, 2662343, 16794396, 4145717, 11637751, 4276177, -149250, -10854456, -2664490, 1788854, 10512469, -4647155, -2311766, -4047470, 1011465, 8449274, --6180458, 4137127, 7315403, 1626182, 2695092, -4783520, 9039296, -1934883, 11771432, -110059, --3593277, -11041824, 1358283, 41339, 13175349, -3973919, -1068373, 8352638, 67109, 1106491, --2709588, -8634495, 931471, 4973572, -6194954, -4889284, 1297617, -10355166, 5689221, 5748814, --1740536, -673236, 2927557, 5863167, -490700, -3608310, -130997, 8609799, -1093606, -1323924, --3250217, 11146514, 11292543, 763430, -2041183, 1758789, -476205, 2942053, 5222144, -431644, -7540352, -2935610, -4180614, -6099928, 2067490, -500901, -9272834, -6693170, -3847217, 7294465, --2130304, -3417183, -937377, 1074, -3143379, -4754529, -1665911, -1395328, -2834679, 462783, --1777043, -1564979, 1499481, -3022046, -3111167, 976568, 2498597, -1507534, -2003602, -1520418, --2613488, -1257352, 815507, -907312, 449898, 1374926, -459025, -778463, -2305324, 1421097, -200253, -7406134, 7508677, 5712844, 442382, -4913443, -5517423, -2401424, -10961293, 12730820, -9576703, -2052458, 3549791, 1148904, -2091649, 9652939, -774168, -4489315, 14289893, -15483894, -3999688, 6670084, -53150, -6332930, 6810745, 1051730, 9847823, -3811247, -1058173, 2623688, -3934727, 663572, -1345935, 14325327, 6180995, -6551973, -9891310, 6879464, -9895605, -2874944, --11392938, -1479616, 17057462, 6975027, 8246337, 56371, -9049496, -1510218, -4421669, -1970316, -12757127, -1991791, -14058502, -1139240, 2759517, -8948564, -1483911, 5763846, 4539244, -6016713, --3140695, 6156299, 8153996, -2374043, 8494372, 147103, 2136209, 3174518, 720481, 3332895, -5095979, 4926865, 4799089, -2529199, -10199474, -11272679, 2810519, -2268817, 8057896, -1447404, -9563282, 3231426, 4449049, -5098126, -4545149, 3403762, -176094, 693100, 893353, 419833, --4571993, -2100239, -707596, -3803194, -111669, -3267933, 587874, -1847910, 1409286, -464930, -2441152, -5369, 1336272, 426276, -1227287, -1074279, -1470489, 3018825, 347892, -898185, -960999, 1559073, 1307281, 291521, -2236604, -6256157, -3543885, 22012, -3025268, -76773, -6189048, -877784, 5767604, -11780022, 4110821, 3243237, 1635846, -7742753, -6492380, -8242042, -6278169, 3228205, -5915244, -5901822, 7913477, 2518998, -725850, -4980552, -8179765, -3384971, -3204046, -5264556, 529355, -9800042, -2809982, 1051193, 3237869, 6263673, -1116692, 3965329, -5439039, -5730560, -13600014, 9205189, 331249, -2238752, 8752606, -1464047, 255014, -6062347, -7679402, -5070209, -6412923, -2569464, 6277632, 9574556, 8030515, 2423435, 1538672, -17186848, -7662759, -1145146, 3164854, -6010807, -1216550, -6714108, -2394981, -1730872, -8876624, -4532801, --3697430, -4917201, 8995272, -3040300, 11729556, -1526324, -766652, 7309498, 8365523, 14154602, -9684078, -310311, -4726075, -655519, -78383, -6956774, 1629403, -4532264, -7605850, 14470282, --9360344, -9951976, -1524177, 5368172, 709743, 1646046, 633508, 6059662, -175020, 1628330, -2102923, -2427194, 286689, 3710315, -2165737, 1501091, 2645163, 2163053, 4648765, 1008780, -20401, 2543158, 410706, -918049, 1697049, 2635499, 1015223, -37044, 780610, 398895, -5405217, 412317, 4394289, 2921115, 633508, 4625143, 5073430, 490163, -171262, 669478, -683437, 603980, -461172, -624918, 1271847, -3187403, -4567698, -18160732, 4028143, -12496207, --7475928, 11832635, 9206262, -20737176, -19010598, 646929, 8124468, -4820564, 5017059, -6843494, --761283, -12038793, -3139084, -10868415, -772020, -2974265, 354335, 4176856, 3429532, 6767795, --834297, -5772436, 5021354, -6884296, -2754148, 2207613, 440771, 3506841, 7187628, -1162862, -910533, 1650341, -2910914, -765041, -10518912, -12465606, -12062416, 9127, -12134893, 4064113, -1598265, -4800163, -5645198, -2432562, -2020782, -1047972, -7227356, -11418171, -651224, 18113488, -9980430, -2562485, -10831908, -11188390, 12498355, -11750494, -3883724, -2099702, -7847979, -5957657, --7999914, -9361418, -13019656, -17609902, -2543158, -2850785, -2518462, 5881421, 5564667, 1445257, -4873714, -4011500, -4903779, 16252156, 6868727, -4362613, -12016782, 3699041, -7121056, -8446590, --55298, 13623099, -2739652, -144418, 9360881, -1090385, -6288906, 231928, 2206540, -228707, --2594160, -2508798, -102542, 2268280, 1092532, 1500554, 913217, 4625143, -1404991, 2466385, --6772090, 3071439, 1597728, -1255741, 1395864, -1462436, 2444910, -1267552, -1996623, -1179505, -2217814, 1897302, 223875, 2556043, -3856881, 3778498, -1939715, -2362769, 1159104, -14951855, -1668058, 7480223, 8129300, 7534983, 3158949, 14899778, -5942088, -10921565, -2890513, 1871532, --2248952, 4708895, 9898289, 20030116, 12580496, 7314866, 9305047, -7798587, -14871324, -5138392, --11153493, 12539157, 2799782, -2717104, -9059160, 14235132, 12224551, -4612258, -969052, -127238, --7470022, -6247030, -11207180, 3242164, 3776350, 6275484, -10601053, 893890, 2938831, -4865661, --10303627, 230854, 5882495, 7792145, 1260573, -20108500, -7230578, -9959492, 4031364, 11869142, --80531, -11318849, 2605435, -10929081, 5939403, -2713883, 887448, -7776039, 16085726, 12681965, --4077535, -3818763, -9404368, -710280, 12842489, 2890513, 15800111, 15229954, 12681965, 7425462, -2539400, -10295573, -5774047, -13674102, 15622407, 15706695, -1336272, -12084964, 7665443, 18259516, --293668, 2276333, -4489852, -477278, -12087112, 1869921, -9545028, 6465000, 2229625, 9113384, -9055402, 4910758, 704912, 779000, 5581310, 2032593, -1367947, -3736085, -1263257, -5683853, -940061, 4367445, -3771518, -2122788, -4308926, 3077881, -1005559, 6600291, -6327024, 1674500, --256624, 6286222, -3091840, 2073932, 3784403, 684510, -244813, 223338, 1080184, -2901251, --1199370, 3767223, -9881109, -2465311, 7269769, 12656732, -13233868, -16072841, -13888314, 15312632, --6336688, 10242423, -150861, 185757, 24614994, -2947958, 1810866, -10873247, -16985522, 4265977, --2536178, 4609574, 2984466, -1331440, -9720048, 2783139, 3627637, 1738925, -9177808, 6111739, -4417911, 17992692, -8283382, 1268626, 9810779, 10077604, 387621, 10176388, -2561411, 446140, -9054865, 7693360, 2049773, -3912715, -14452028, -10918881, 8479339, -197569, -3308199, -2831994, -2151242, 19448148, -1196685, -6742025, 9885404, -4728222, 9343701, 2282775, 28003724, -5464809, --899796, -48318, 4164508, 9580998, -1864553, -3244311, 6230387, -13125420, 10721312, 19720880, -5841693, -4119948, 11001559, -4179003, -578210, 22306450, -12873628, 4948876, 8761196, -3729642, -18572512, 4463008, 3991098, -7117298, -10688563, 1916629, 4862977, -11460583, 11678016, 1074, -2957085, 77846, 3409130, 10781979, -2443300, 10879152, 5160403, 3595425, 6062347, 5416491, --3155190, 6866579, 6383395, -5576478, 2117419, 4732517, 8702141, 2075543, 2510945, 4358318, -5097053, 7748121, 794032, 278099, -459562, 5310190, 4493073, -4856535, -73551, 3518652, -4951024, 3900904, -2900714, 7386270, -199179, 2573222, 911070, 6104223, 3109020, 2858301, -2923262, 4232154, 2381023, 2822331, 4878009, -13969918, -3978750, 9625559, -4614406, -7272990, --6487011, -6656126, 1244467, 9680856, -1183264, -21363168, 59593, -16221555, 6373732, 7042136, -182536, 3354906, -7106561, -866510, 8696772, -20455318, 5266704, -4422743, 11496554, 7982734, -5199058, 957241, -8125005, -18453326, -933619, -16119012, 10057740, 204011, -4836670, 17115444, -8893267, -6724845, -5342403, -3473018, -2547453, -4683662, -9129490, 1737851, 2685965, 24731496, --780073, -17540646, 39192, 12128451, 937377, -8986145, 5776731, -13600551, 9192841, -5693516, -6106907, -7879655, 3730716, -13909788, 36914708, 1488206, 25516938, -2371359, -6942278, 6709276, --8179229, -7978976, 14234595, 13902809, -12058658, -31984622, 30575872, -10618770, -8339753, -3915937, --4256313, 4139812, -2779918, 2461016, 13188234, 3246459, -10620380, -8515846, -6427419, 4022774, --6720013, -892279, 6142340, -16566226, -1415729, 1132798, -2593624, -4815732, 1883880, -3394635, -9088688, -3534221, 4050154, -4003447, -2945274, 272194, -4213363, 2496450, 2162516, -1698660, -2288681, -3834332, 1901060, -981937, -294742, -1700807, 52076, -6914898, -5093831, -947577, --2838437, -5654325, -7548942, -4204773, -1843078, -2978023, -642635, -5015448, -5906, -4451734, --1295470, -5811628, 3140158, -3215320, -1800128, -15748571, -5591511, -4791573, -13540421, -23845658, --5885179, 374199, -12664785, 6190122, -5419175, 10596221, -9138080, -3827890, -13020193, 31026306, -26249230, -5898601, 5853504, 18022756, -18961206, 19216758, -7998840, -8022462, 6928319, 2528662, -3284576, -2838437, -4181151, 531502, 6222334, 5366562, -8431558, 9648107, -9086003, -15124190, -10965052, 9642202, -12590160, -15648176, -18080738, -2659122, -2997887, 5049271, -11809013, -14803142, --7558606, 24748138, 8662412, 8412767, -10608569, 9539659, 13028246, -10181757, 24322936, 4503810, --8705362, -11419781, 6509560, -9594420, -20802674, 5051419, -237834, 450972, 11370389, 10573136, --9142375, 1720134, -26659936, -3330747, -10514617, 22044994, 1316944, 3091840, -12859132, 10416369, --22648436, -2774549, 8860518, 2532420, -2462627, -2607582, 2745558, -1069447, 2554969, -3411278, -636729, 1855426, 5388574, 1313723, 1717987, -1255204, 3199214, -3347390, 1029182, 10029286, --1975685, 427886, -3216394, 4454955, 2086817, -561030, 5265630, -5564667, -5258651, 5688684, --4796942, -1806571, -4394289, 2394981, -6427419, -2927557, -2092723, 5136781, 5181341, -8295730, -1305670, 4202626, -2839510, -9352291, -4500052, 6880001, -4510253, -11534135, 14614163, 15399068, -13935558, 9400073, -119722, 12763569, 11574400, 1935420, -2191507, 5143224, 34360, -13014288, --1548873, 4940823, -10174778, 14532022, -15152108, 12133819, 13215077, -3802120, -2980707, 5601711, -17633526, 13209709, -15935939, -3479461, -4264366, -1271847, 3984119, -7435126, -7784092, 17297980, -434865, 24841554, -16222091, -15387794, 12508555, -8287677, 4512937, -9751186, 8352101, 9528922, -6292664, -3893925, -14251775, 1410360, 4746476, -11857331, -21774410, -753230, 1992865, -12857521, -23539642, -2686502, -6660421, 31261994, 29456496, 2939368, -4080756, -1099512, -6271726, 7087233, --15428059, 14471892, 1928440, -8399882, 17501454, 2804077, 3560528, -4990752, -9478993, -23481660, -5171141, -7999377, -3854196, 10828686, 4408247, -5156645, -15328201, -4246112, -17457432, 7464117, -15738371, -2223719, -11855183, -8305393, -11821897, 130460, 6400575, 7639673, -1597728, -8389145, --4348118, -4578972, 1121523, -2544231, -4005057, 3371013, -616865, -2481417, 4152697, -9483288, -2723546, 2445447, 14666240, 1323924, -3237869, -7504919, 6473590, -7840463, -1015223, 5478768, --10401874, 9699110, 2083596, -421981, 1996086, 6557342, -3303904, -10290742, 250182, -3061775, --1294933, 9882183, 9427990, -25803626, -59762860, 20028506, 18977312, -6685117, 4234838, -14391899, -25785910, 16489453, -14622216, 4163434, 3506841, 367757, -6580964, -4744865, -30822296, 13034152, -15215459, -3518652, -9664, -1730872, 10239739, -7730941, 19542102, 5789079, -23227720, -13166759, -29498910, 19362250, -19222664, -4525822, -6831683, -11775727, 1840930, -4705674, 4210142, 38318624, -10451266, 40148816, 22943178, 25872882, 23590108, 46243912, -3026878, -4296578, 11071352, -3271691, --38784628, 31447750, -13616657, 18032420, -25632902, -20395726, -38289632, 7603703, -3514894, -12861816, -9358197, -18006650, 82141, -25722560, -25673704, 7203197, 15018964, -20876762, -5521181, -14475650, --20080046, -22569516, -16195785, 12339978, -9774809, -28177670, 40484900, 25356414, 40819368, -5328981, --8765491, -8124468, -14380624, -23145042, -1461900, -5089000, -17493402, -5848135, 5172751, -12408161, --11167989, 1291175, -1813550, -5530844, -4517232, 10066866, 10748693, 337155, 2729989, 7628399, -9584220, 1945083, -777389, -1472100, 4522064, -1915555, 1151588, -1762010, -6700686, -181999, -6379100, -6610492, 8704288, 10959683, 4660577, 357019, 1821603, 1156957, -7277285, 601832, -4195646, -3760781, 89121, -1719061, 1232119, -2607582, 1009854, 4076998, -5561983, -4766877, -8859444, 3598646, -1075352, 1345399, -21578990, -56873956, 24888798, 29694330, -13180181, -5640903, --1299228, 33602212, 1261647, 7327214, 7237020, -7679939, 6828998, 15749108, -2934000, -14794015, -3919695, 28606092, -14877767, -9246528, 6416681, -3790309, 21468394, -5149666, 9781788, -10789495, --12984760, -12978317, 14137959, -4022774, 12571906, 14615237, -3541201, 2079838, 277025, -11616813, -4098473, -10521596, 12819941, 31114354, 51002736, -456340, -1261110, -21341692, 11815455, 16802986, --312459, 18849000, 26894548, 11404212, 15374372, -23256712, -13879187, 19634980, 50960324, -9131637, --29615946, 7763691, -9718974, -370978, 13953812, 424665, -13405667, -6336688, -6827925, -34368328, --14245333, 388695, 5917928, 12206297, -1794223, -13118441, -7459822, 3417720, -5194763, -13176960, -13930726, 33380486, 14562623, 18052822, 2022393, -4379793, -26831198, -5820755, 7864085, 6131066, --5862631, 15481746, -4145717, 8730058, -18724446, 1247688, -6333466, -5294084, 369904, 5399848, -5334350, -5188321, -10101226, 10105521, -3714073, 8327942, 922881, -1921461, 863288, 1899449, -7759932, 393526, -1013075, -3775276, -4147865, 6658810, 2349347, 6147172, -12680891, 9097278, -5368172, 2575370, -4475356, -1569811, 9536975, -989990, 557809, -7070053, 863288, -10919954, --2145873, 3332358, 9558987, 4781909, 8466991, 18117782, 6019934, 9492951, 3718905, 27307402, --8613557, -3438658, -10735271, 6322729, -6666326, 5990406, 30998390, 6101001, -32836098, -8039105, --9575093, -28123982, 17859548, 8398272, -3245385, 3932580, 1760400, -12656195, -104690, -941672, --12513387, -3808026, 27067420, 39711804, 18777598, -13925895, -21905944, 10280541, 18191334, 1959579, -14558865, -10197326, -6988986, 14854144, 4743792, 125091, -33348810, -43604656, -1378148, -25542170, --14744623, 9004399, 36444408, 7791608, 1844152, -10657961, -12557948, -18357228, -16007880, 2875481, -11025181, -4013110, -18040474, -29242284, 11620034, 638876, -16163573, -27275190, -18329310, -30013768, --53864260, -32679870, -4807142, -6600828, 64882460, -8076149, -2377801, 37193880, 4435628, 1946157, -22524420, -13571023, -32723892, -38276748, -5855114, -18423262, -20141786, -21658446, -23440858, 4418448, -21305722, 33545842, 20117626, 3954054, 2269353, -8860518, 17488570, 3395709, -5198521, -21948894, -4572530, 15627239, -676457, -268972, -7713225, 4157528, 8884140, 14259291, 4189204, 5935108, -5663988, 7018514, 9102646, 9143985, -2515777, 6899865, 1584843, -5224828, -11250130, -13820668, -1517734, 3018825, -13414793, -6869800, -12890807, 4036733, 6877317, 10133438, 15362561, 25422986, -19261318, 19330038, 11818676, 7399692, -4495757, 1835562, 294205, -12201465, -18206366, -14083198, --15509664, 20462834, -29096256, 7315940, 4592394, -12686797, -40793064, 27710056, 8210367, -2649458, --41304164, 10956462, 6382859, -21827560, 3622268, 19091130, 11729019, 5536750, -18709414, -3841848, --6996502, 3260417, -7057168, 1695975, -14495515, -20857434, 22819162, -15809775, 34688304, -21449604, --19412178, -13175349, -24398098, 2105071, -489089, 36419712, -27035208, -28531468, 14669461, 9345849, --23606750, -31411244, -3500398, -17719962, 20306606, 4283156, -25990994, 16811576, -4457103, -39972188, -26191248, -17857400, 17087528, -29755534, -7293928, -879931, -12515535, -5175436, 3396782, 37440304, --10146323, -3566434, -10804527, 10650982, -17774186, 13823352, 29275034, -1861868, 29435558, 23077396, --3545496, 47161424, -2793339, 5396090, -1415729, 13266080, 47581260, -3980361, -13193066, -50958176, -39396660, 13995688, 33633352, 11388643, -26460756, 11701638, 7539278, 4781909, -23493472, 13347148, -2734284, 3803731, -12634720, -3750580, 16063178, 13697724, 598611, -1728188, -1651415, -1918240, -3927211, 10019085, -20633022, -6160057, -2863670, 3223373, -4224101, 4512400, 4440460, 6436009, --4822175, -11032160, 17023102, 26587996, 9330816, -13742822, -11746736, -5121212, -4006668, 7151658, -3626026, -2732136, -16838420, -12123619, -13642964, -1398012, 13073880, 5686000, 11023034, 4154844, --18362596, -3348464, 8028368, 27936078, -53846540, 2061047, -60601452, -20307680, -10295037, 18443664, -55959664, 47562468, 17518098, 28080496, -18249316, -15375983, 2704756, -4129074, 12950400, 4103305, --12656732, 18771154, 27638652, 22970558, 17165910, 14514305, -482110, 2584497, -9417253, 26157424, -12200391, -5015985, -16148003, 5389110, 10719165, -2863133, 34221224, 35754528, -20707112, -15307263, -739271, 27773406, 17296370, 4440996, 3377992, -6651294, -12559558, 6907381, 42684996, -17316234, --21182778, -23030152, 22282290, 9101573, -12850542, -19922742, -31947040, -37795176, 4096862, 8259759, -6766721, -8352638, -2848637, -10414759, 7398081, -30153354, -49567680, -22340810, -3513820, -8443906, --19400368, 24748138, 41329396, -9341554, 21285322, 45680736, 29744260, 10560788, -31604516, 5064840, -5589363, -27925340, -15505369, -4491999, -22292490, 24205362, 34453692, -2124935, -8063264, -4322885, --10173167, -5676873, -14208826, -13893682, -5191005, -6933151, 4864051, -3163244, -3937411, 6733972, --21072720, -2614561, 1605781, 21209622, -21907554, -3624953, -5087926, 3958349, -13998372, -4958003, -4107063, -7678865, -12955232, -2196339, -1116692, -12664785, 14664629, -20379082, -2426120, -7581154, -4361003, -2252174, -6117107, -11948599, 238371, 5842766, -4376035, -34298000, 27553288, -3564286, -23664196, 14334453, 487479, 15677704, -6963216, -1822140, 13486197, 16552267, 2495913, 32212, --609349, -15170898, -9886478, 3990562, -21139830, 516470, -7989176, 462246, -17935784, 2996814, -927713, -16306917, 13506062, 5725192, 9118216, -20465520, -5583458, 3802657, -1142461, 1431298, -11638825, 2545842, 3205656, -2389613, -4602058, -3242164, -1752347, 7516730, -3499325, -13079786, -10481331, -17969070, -5709086, -6191196, 2069637, -8815420, -10480257, 13611288, -1822140, -13730474, -8286066, -19133006, 15214385, 4722854, 636729, 15720654, 17450988, 2401424, 4911295, -13200045, -16923244, -8356933, -11725261, -1035624, 2427730, 32126356, -14540612, -23777476, 20256140, -7770133, -20238960, -3469260, 1242856, -8915815, 12220793, -20662550, -17213692, -6801618, 7993471, 4808753, --1345399, 9869835, -12370580, -12439836, -8346732, 2918967, 3494493, 718870, -632434, -3771518, -2030983, -17149804, 3371013, 3484292, -4234301, -1596654, 5066451, -2757369, -7427072, 8856223, --4528506, 1090922, -481573, -2248952, 5876589, 2586644, -6321118, -712428, -1584843, -5556614, --1306207, -2055142, -11521250, 3488050, 6862284, 5578626, -5291400, 5211406, -8437463, -2588792, -96100, -5378373, 16521665, -7661148, -89492088, -170450608, -60821568, -133515504, -152109488, 36950676, --5376226, 50716048, 196624672, 213190896, 150468816, 214711328, 176432432, 58385248, 61624728, 45514304, --118897040, -122442536, -68225552, -118865368, -128453344, -43220256, -38052336, -108335720, -81677392, -13497472, --48501992, -59281288, -14930380, -45439680, -80135496, -45774152, 14602889, -32337346, -39768712, 46630460, --8257075, -44718124, 40188008, 74639552, -17628156, 18429168, 115857280, 15693810, -37532644, 76766632, -67045512, -67080408, 37950332, 84633408, -26781268, 8968965, 146903984, 111984296, 56291452, 206418272, -229885984, 117372328, 211695184, 273406336, 171520048, 161774240, 224769600, 144372112, 91763584, 101602824, -52755084, -62214748, -120024472, -162727728, -277481184, -337613408, -382675680, -432752864, -426673856, -462485824, --413162976, -306823872, -306766432, -241950544, -21989158, -12880607, 5908802, 172845584, 136513920, 45199164, -90481000, 134757824, 49706732, 59921236, 136903696, 99535328, 20047834, 81960864, 115858888, 49562312, -62275416, 142525264, 53216792, -23032298, 65582004, 45725832, -31964758, 61845380, 137756784, 64633352, -101482024, 219956016, 182951648, 173267568, 258502272, 238642880, 164461808, 142896784, 128157528, 47743392, --2170032, 6535867, -27303644, -86391120, -85927264, -98708552, -168664432, -188726768, -180856784, -202928608, --243339424, -213241376, -206064480, -219896416, -170239616, -115214648, -90120224, -56909392, 1956358, 22580790, -18983218, 31466004, 34665756, 17690434, 16227997, 31777390, 27537720, 18664318, 22523346, 26280904, -19871740, 25792352, 39473972, 43389908, 41404560, 47466368, 46247136, 32323924, 26185878, 17865454, -13853417, 13482976, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-1954210, 1161789, -951872, -2919504, -227096, 6715182, -3470871, 771484, -1473711, -89121, +-2590402, 4829691, -2529199, -2690797, -3041911, 5757941, -3448322, -911070, -1639067, 1611150, +2646237, 3365107, -4782446, -23085, 4543002, 2006824, 762357, -263067, -588411, 2049236, +4631586, 1111323, -5990406, -3089692, -3231963, 5203353, -552977, 3968013, -2519535, 1833951, +5197984, -2552284, -3948686, 1386738, -1489280, -272730, -3535295, -1429150, -2646774, 989990, +-4786741, -1582159, -1239098, -161061, 6432788, -2114198, -988916, -238371, -1709934, -676457, +-628139, 3898220, 2002529, 2388002, -3374771, 2455648, 2567854, -2292439, 1051193, 1527398, +-1745904, -2350421, 2725157, -4117263, 2887292, 1751273, 751082, -3815542, -1338956, 1417876, +-354872, -794569, -1045825, -91268, -2062658, -2376728, -382789, -392453, 267899, -893890, +3221, 1407139, -70330, 523986, 183610, 278099, -2147, -275415, -1045825, -619549, +687732, -365609, 18254, -140660, -3170223, 3351148, 390842, -1446867, -2164127, -591095, +-1102196, 3758, -2681670, -2057826, 1512365, -424128, -1034550, -4678830, -705985, 4351876, +-2940979, -733903, 3270618, -1890859, -3519189, -2678449, 2226941, 19327, -352187, -674847, +-3376381, 1133335, -1509681, -790274, 3794604, -2093797, -5169530, -1537061, 273804, 1546188, +1342177, 443455, -3931506, -904091, -4786741, -4336843, -1182727, 4545149, -801011, -8981313, +-419296, 3026341, 2611340, -1853278, 1751273, 1933272, 164283, 2673080, -4855461, -3423626, +-471910, 1406065, 204011, 1002875, -539018, 1268089, 1130650, 1870995, -300648, 1154273, +1077500, -901406, 1836635, -457951, -4738423, -3864397, -2525978, -1992328, -2139968, 646929, +-1095754, 3658239, 3001109, -557272, -1480153, -1268626, -698469, 1100585, 1704028, 220117, +-1031329, 186831, 219580, -997506, 1276679, 9664, -321586, -498216, -131533, -741419, +497679, -144955, 76236, -858457, 491237, -540092, -16643, 8053, 333397, -141734, +-432181, -164283, -831613, -313533, 60130, -396748, 47245, -672162, 4108673, 2295123, +6155225, 405338, -1218697, -764504, 4352413, -1194001, 2331094, -3998078, -432181, -113280, +2280628, 1585917, 3901978, 2746095, -2021319, -3946538, -3228205, 2192044, -1382980, 2997350, +1877438, 392990, -207769, 2490544, 1745904, -1825898, 2044941, -4248797, -605054, -3939022, +-3381750, -4738960, 1363115, 2688650, -518617, 3743601, -2935610, 3467649, -7058779, 2698313, +1180579, 5198521, 1506997, 1862405, 2789581, -133681, -1815697, 1937567, 4524748, 1538672, +2181307, -741419, -100395, -6452652, -449361, 1018444, 1219771, -952946, 3417183, 6453189, +-2181844, -4655745, 3074660, 678605, -3315178, -59593, -1548873, -3323768, 386010, 4641786, +1140851, 1684701, 760746, -501974, 1744294, 1086090, -114890, 1523640, 72478, -427349, +-367220, -882616, 876710, -1293859, -185220, 2154463, -493921, -54224, 799938, -512712, +1446330, -2060511, -951872, 28991, -847719, -900333, 192200, -506806, 679679, 1578937, +-622770, 891206, 211527, 91805, -5906, 219043, -1804423, -459025, -430570, 347892, +1433445, 863288, 2265059, 3387119, 3258270, -3156264, 4973036, -1770063, -3306051, -4885526, +1132261, -6461242, -405338, 670552, 1785633, -4121558, 2661269, -67109, 591632, 1724429, +1058710, 1459215, -5562520, -374199, -1260036, -3629247, 2119566, 1066763, 832150, 3112241, +10954314, -808528, 562104, 1561221, 2706366, 1071058, -8993662, 1867237, -1494649, -1033477, +4924717, 143881, 2450279, 3551938, -4437238, -2477123, -1280437, -4305705, -9229885, 434865, +-3479461, -557272, -804770, -191126, -2139968, -4518306, 1282585, -4323422, -1372242, 973347, +-4818417, 4987531, 1722282, 1417339, -2024003, -370441, -788127, 991064, -1552631, 2560338, +-3951907, 1312649, 6011344, 4977867, -1738925, 2531346, -2365990, 1072668, -4480725, -148713, +2790655, 3216931, 2880849, -497142, 5362267, 489089, 2681670, 2392297, -91268, 1114544, +587337, 199716, -903017, 537945, 838592, -323733, 98784, -605590, -1468342, -230854, +1012002, -789200, 2166811, -599148, -1117228, -958315, 764504, -541166, 952409, -181999, +-902480, 541166, -244813, 1115618, 687732, 654983, 456877, -1937030, -448287, 263067, +839666, 29528, 171262, -519154, 7312719, -9306120, 379568, -5735929, 2913599, 4210142, +5136244, -813896, -4907537, 110059, 5059472, 1067299, 955630, -3830574, -526134, -6696391, +8864812, -486405, -6852084, 7387881, 1838783, 2179159, -497679, -2685428, -888521, -3541738, +-3494493, 2720862, 3866544, -805843, 3647501, -3033858, -1902134, -14496, 5096516, 4825933, +-1373853, -2742337, 3964255, 2525978, 357556, 3356517, 786516, -3973382, 4150549, 2586644, +-328565, -1389422, 1134408, -4281546, 11356430, -601832, -422517, 8461086, -786516, -5196911, +-2828236, -624381, 2049236, -5400385, 3671123, 1101659, 111669, -4903779, -4138201, -8657580, +-779537, 4022237, 1991791, 4880694, -2726767, -1930051, 10227391, -2855617, 1697049, -1432909, +-4259534, 318364, 1858647, -4438849, -7871602, 318901, -4859756, -4896263, -2404645, 2543158, +213138, -746251, -3019362, -1036698, 329639, -1131187, -850940, 796716, 2783139, 387084, +689342, -1987496, -1025960, -212601, -33823, -2800856, -2062658, -1780801, -119722, 670015, +258772, -916976, 53687, -184684, -296890, -1472100, -551903, -218506, -574452, -773631, +-9816685, -150324, -4153234, -4692252, 1365800, -5627481, 113280, 3776887, 2036351, 7960185, +-13394929, 8528731, -1467268, 3704409, -2603824, -1956895, -7062000, 6203544, 5465346, 1341104, +-6283537, -388695, -3655017, -476205, 6445136, 4475356, 947040, 6142340, -137439, 272730, +557809, -261456, -4379793, 9205726, -977642, 40802, 10699300, -6981470, 2520609, -3353833, +-749472, 3351685, -1518271, -5516886, 10296647, 8020852, -340913, 2573222, 4287451, 11131481, +-1497333, -2059974, -6113886, 1017907, 2075006, -6462852, -6892886, -6065568, 7172596, 121870, +-3008088, 4916127, 3482682, 22012, -1759326, 1573032, -3940633, -1036698, -4283693, -993748, +3971234, -7878581, 1822140, -1683627, -5463736, 3291556, 5196911, 2198487, 5413270, 4687420, +-4023311, -6423661, -3216394, 2788508, -2543158, -4942971, 3170760, 5349382, -3920768, 646393, +1132798, 581968, -3661997, 2110440, -1636383, -1303523, -2353105, -1240709, -1843615, -195421, +-213138, 695248, 1122060, -936840, -807991, -367757, -1464047, -858457, -399432, -588947, +1150514, 1443109, 367757, 2128156, -1977833, 1437203, -1716376, -781147, 1472637, 7350300, +7799124, 1292785, -6720550, -924492, -6382859, 2662343, 16794396, 4145717, 11637751, 4276177, +149250, -10854456, -2664490, 1788854, 10512469, -4647155, -2311766, -4047470, 1011465, 8449274, +-6180458, 4137127, 7315403, 1626182, 2695092, -4783520, 9039296, -1934883, 11771432, -110059, +-3593277, -11041824, 1358283, 41339, 13175349, -3973919, -1068373, 8352638, 67109, 1106491, +-2709588, -8634495, 931471, 4973572, -6194954, -4889284, 1297617, -10355166, 5689221, 5748814, +-1740536, -673236, 2927557, 5863167, -490700, -3608310, -130997, 8609799, -1093606, -1323924, +-3250217, 11146514, 11292543, 763430, -2041183, 1758789, -476205, 2942053, 5222144, -431644, +7540352, -2935610, -4180614, -6099928, 2067490, -500901, -9272834, -6693170, -3847217, 7294465, +-2130304, -3417183, -937377, 1074, -3143379, -4754529, -1665911, -1395328, -2834679, 462783, +-1777043, -1564979, 1499481, -3022046, -3111167, 976568, 2498597, -1507534, -2003602, -1520418, +-2613488, -1257352, 815507, -907312, 449898, 1374926, -459025, -778463, -2305324, 1421097, +200253, -7406134, 7508677, 5712844, 442382, -4913443, -5517423, -2401424, -10961293, 12730820, +9576703, -2052458, 3549791, 1148904, -2091649, 9652939, -774168, -4489315, 14289893, -15483894, +3999688, 6670084, -53150, -6332930, 6810745, 1051730, 9847823, -3811247, -1058173, 2623688, +3934727, 663572, -1345935, 14325327, 6180995, -6551973, -9891310, 6879464, -9895605, -2874944, +-11392938, -1479616, 17057462, 6975027, 8246337, 56371, -9049496, -1510218, -4421669, -1970316, +12757127, -1991791, -14058502, -1139240, 2759517, -8948564, -1483911, 5763846, 4539244, -6016713, +-3140695, 6156299, 8153996, -2374043, 8494372, 147103, 2136209, 3174518, 720481, 3332895, +5095979, 4926865, 4799089, -2529199, -10199474, -11272679, 2810519, -2268817, 8057896, -1447404, +9563282, 3231426, 4449049, -5098126, -4545149, 3403762, -176094, 693100, 893353, 419833, +-4571993, -2100239, -707596, -3803194, -111669, -3267933, 587874, -1847910, 1409286, -464930, +2441152, -5369, 1336272, 426276, -1227287, -1074279, -1470489, 3018825, 347892, -898185, +960999, 1559073, 1307281, 291521, -2236604, -6256157, -3543885, 22012, -3025268, -76773, +6189048, -877784, 5767604, -11780022, 4110821, 3243237, 1635846, -7742753, -6492380, -8242042, +6278169, 3228205, -5915244, -5901822, 7913477, 2518998, -725850, -4980552, -8179765, -3384971, +3204046, -5264556, 529355, -9800042, -2809982, 1051193, 3237869, 6263673, -1116692, 3965329, +5439039, -5730560, -13600014, 9205189, 331249, -2238752, 8752606, -1464047, 255014, -6062347, +7679402, -5070209, -6412923, -2569464, 6277632, 9574556, 8030515, 2423435, 1538672, -17186848, +7662759, -1145146, 3164854, -6010807, -1216550, -6714108, -2394981, -1730872, -8876624, -4532801, +-3697430, -4917201, 8995272, -3040300, 11729556, -1526324, -766652, 7309498, 8365523, 14154602, +9684078, -310311, -4726075, -655519, -78383, -6956774, 1629403, -4532264, -7605850, 14470282, +-9360344, -9951976, -1524177, 5368172, 709743, 1646046, 633508, 6059662, -175020, 1628330, +2102923, -2427194, 286689, 3710315, -2165737, 1501091, 2645163, 2163053, 4648765, 1008780, +20401, 2543158, 410706, -918049, 1697049, 2635499, 1015223, -37044, 780610, 398895, +5405217, 412317, 4394289, 2921115, 633508, 4625143, 5073430, 490163, -171262, 669478, +683437, 603980, -461172, -624918, 1271847, -3187403, -4567698, -18160732, 4028143, -12496207, +-7475928, 11832635, 9206262, -20737176, -19010598, 646929, 8124468, -4820564, 5017059, -6843494, +-761283, -12038793, -3139084, -10868415, -772020, -2974265, 354335, 4176856, 3429532, 6767795, +-834297, -5772436, 5021354, -6884296, -2754148, 2207613, 440771, 3506841, 7187628, -1162862, +910533, 1650341, -2910914, -765041, -10518912, -12465606, -12062416, 9127, -12134893, 4064113, +1598265, -4800163, -5645198, -2432562, -2020782, -1047972, -7227356, -11418171, -651224, 18113488, +9980430, -2562485, -10831908, -11188390, 12498355, -11750494, -3883724, -2099702, -7847979, -5957657, +-7999914, -9361418, -13019656, -17609902, -2543158, -2850785, -2518462, 5881421, 5564667, 1445257, +4873714, -4011500, -4903779, 16252156, 6868727, -4362613, -12016782, 3699041, -7121056, -8446590, +-55298, 13623099, -2739652, -144418, 9360881, -1090385, -6288906, 231928, 2206540, -228707, +-2594160, -2508798, -102542, 2268280, 1092532, 1500554, 913217, 4625143, -1404991, 2466385, +-6772090, 3071439, 1597728, -1255741, 1395864, -1462436, 2444910, -1267552, -1996623, -1179505, +2217814, 1897302, 223875, 2556043, -3856881, 3778498, -1939715, -2362769, 1159104, -14951855, +1668058, 7480223, 8129300, 7534983, 3158949, 14899778, -5942088, -10921565, -2890513, 1871532, +-2248952, 4708895, 9898289, 20030116, 12580496, 7314866, 9305047, -7798587, -14871324, -5138392, +-11153493, 12539157, 2799782, -2717104, -9059160, 14235132, 12224551, -4612258, -969052, -127238, +-7470022, -6247030, -11207180, 3242164, 3776350, 6275484, -10601053, 893890, 2938831, -4865661, +-10303627, 230854, 5882495, 7792145, 1260573, -20108500, -7230578, -9959492, 4031364, 11869142, +-80531, -11318849, 2605435, -10929081, 5939403, -2713883, 887448, -7776039, 16085726, 12681965, +-4077535, -3818763, -9404368, -710280, 12842489, 2890513, 15800111, 15229954, 12681965, 7425462, +2539400, -10295573, -5774047, -13674102, 15622407, 15706695, -1336272, -12084964, 7665443, 18259516, +-293668, 2276333, -4489852, -477278, -12087112, 1869921, -9545028, 6465000, 2229625, 9113384, +9055402, 4910758, 704912, 779000, 5581310, 2032593, -1367947, -3736085, -1263257, -5683853, +940061, 4367445, -3771518, -2122788, -4308926, 3077881, -1005559, 6600291, -6327024, 1674500, +-256624, 6286222, -3091840, 2073932, 3784403, 684510, -244813, 223338, 1080184, -2901251, +-1199370, 3767223, -9881109, -2465311, 7269769, 12656732, -13233868, -16072841, -13888314, 15312632, +-6336688, 10242423, -150861, 185757, 24614994, -2947958, 1810866, -10873247, -16985522, 4265977, +-2536178, 4609574, 2984466, -1331440, -9720048, 2783139, 3627637, 1738925, -9177808, 6111739, +4417911, 17992692, -8283382, 1268626, 9810779, 10077604, 387621, 10176388, -2561411, 446140, +9054865, 7693360, 2049773, -3912715, -14452028, -10918881, 8479339, -197569, -3308199, -2831994, +2151242, 19448148, -1196685, -6742025, 9885404, -4728222, 9343701, 2282775, 28003724, -5464809, +-899796, -48318, 4164508, 9580998, -1864553, -3244311, 6230387, -13125420, 10721312, 19720880, +5841693, -4119948, 11001559, -4179003, -578210, 22306450, -12873628, 4948876, 8761196, -3729642, +18572512, 4463008, 3991098, -7117298, -10688563, 1916629, 4862977, -11460583, 11678016, 1074, +2957085, 77846, 3409130, 10781979, -2443300, 10879152, 5160403, 3595425, 6062347, 5416491, +-3155190, 6866579, 6383395, -5576478, 2117419, 4732517, 8702141, 2075543, 2510945, 4358318, +5097053, 7748121, 794032, 278099, -459562, 5310190, 4493073, -4856535, -73551, 3518652, +4951024, 3900904, -2900714, 7386270, -199179, 2573222, 911070, 6104223, 3109020, 2858301, +2923262, 4232154, 2381023, 2822331, 4878009, -13969918, -3978750, 9625559, -4614406, -7272990, +-6487011, -6656126, 1244467, 9680856, -1183264, -21363168, 59593, -16221555, 6373732, 7042136, +182536, 3354906, -7106561, -866510, 8696772, -20455318, 5266704, -4422743, 11496554, 7982734, +5199058, 957241, -8125005, -18453326, -933619, -16119012, 10057740, 204011, -4836670, 17115444, +8893267, -6724845, -5342403, -3473018, -2547453, -4683662, -9129490, 1737851, 2685965, 24731496, +-780073, -17540646, 39192, 12128451, 937377, -8986145, 5776731, -13600551, 9192841, -5693516, +6106907, -7879655, 3730716, -13909788, 36914708, 1488206, 25516938, -2371359, -6942278, 6709276, +-8179229, -7978976, 14234595, 13902809, -12058658, -31984622, 30575872, -10618770, -8339753, -3915937, +-4256313, 4139812, -2779918, 2461016, 13188234, 3246459, -10620380, -8515846, -6427419, 4022774, +-6720013, -892279, 6142340, -16566226, -1415729, 1132798, -2593624, -4815732, 1883880, -3394635, +9088688, -3534221, 4050154, -4003447, -2945274, 272194, -4213363, 2496450, 2162516, -1698660, +2288681, -3834332, 1901060, -981937, -294742, -1700807, 52076, -6914898, -5093831, -947577, +-2838437, -5654325, -7548942, -4204773, -1843078, -2978023, -642635, -5015448, -5906, -4451734, +-1295470, -5811628, 3140158, -3215320, -1800128, -15748571, -5591511, -4791573, -13540421, -23845658, +-5885179, 374199, -12664785, 6190122, -5419175, 10596221, -9138080, -3827890, -13020193, 31026306, +26249230, -5898601, 5853504, 18022756, -18961206, 19216758, -7998840, -8022462, 6928319, 2528662, +3284576, -2838437, -4181151, 531502, 6222334, 5366562, -8431558, 9648107, -9086003, -15124190, +10965052, 9642202, -12590160, -15648176, -18080738, -2659122, -2997887, 5049271, -11809013, -14803142, +-7558606, 24748138, 8662412, 8412767, -10608569, 9539659, 13028246, -10181757, 24322936, 4503810, +-8705362, -11419781, 6509560, -9594420, -20802674, 5051419, -237834, 450972, 11370389, 10573136, +-9142375, 1720134, -26659936, -3330747, -10514617, 22044994, 1316944, 3091840, -12859132, 10416369, +-22648436, -2774549, 8860518, 2532420, -2462627, -2607582, 2745558, -1069447, 2554969, -3411278, +636729, 1855426, 5388574, 1313723, 1717987, -1255204, 3199214, -3347390, 1029182, 10029286, +-1975685, 427886, -3216394, 4454955, 2086817, -561030, 5265630, -5564667, -5258651, 5688684, +-4796942, -1806571, -4394289, 2394981, -6427419, -2927557, -2092723, 5136781, 5181341, -8295730, +1305670, 4202626, -2839510, -9352291, -4500052, 6880001, -4510253, -11534135, 14614163, 15399068, +13935558, 9400073, -119722, 12763569, 11574400, 1935420, -2191507, 5143224, 34360, -13014288, +-1548873, 4940823, -10174778, 14532022, -15152108, 12133819, 13215077, -3802120, -2980707, 5601711, +17633526, 13209709, -15935939, -3479461, -4264366, -1271847, 3984119, -7435126, -7784092, 17297980, +434865, 24841554, -16222091, -15387794, 12508555, -8287677, 4512937, -9751186, 8352101, 9528922, +6292664, -3893925, -14251775, 1410360, 4746476, -11857331, -21774410, -753230, 1992865, -12857521, +23539642, -2686502, -6660421, 31261994, 29456496, 2939368, -4080756, -1099512, -6271726, 7087233, +-15428059, 14471892, 1928440, -8399882, 17501454, 2804077, 3560528, -4990752, -9478993, -23481660, +5171141, -7999377, -3854196, 10828686, 4408247, -5156645, -15328201, -4246112, -17457432, 7464117, +15738371, -2223719, -11855183, -8305393, -11821897, 130460, 6400575, 7639673, -1597728, -8389145, +-4348118, -4578972, 1121523, -2544231, -4005057, 3371013, -616865, -2481417, 4152697, -9483288, +2723546, 2445447, 14666240, 1323924, -3237869, -7504919, 6473590, -7840463, -1015223, 5478768, +-10401874, 9699110, 2083596, -421981, 1996086, 6557342, -3303904, -10290742, 250182, -3061775, +-1294933, 9882183, 9427990, -25803626, -59762860, 20028506, 18977312, -6685117, 4234838, -14391899, +25785910, 16489453, -14622216, 4163434, 3506841, 367757, -6580964, -4744865, -30822296, 13034152, +15215459, -3518652, -9664, -1730872, 10239739, -7730941, 19542102, 5789079, -23227720, -13166759, +29498910, 19362250, -19222664, -4525822, -6831683, -11775727, 1840930, -4705674, 4210142, 38318624, +10451266, 40148816, 22943178, 25872882, 23590108, 46243912, -3026878, -4296578, 11071352, -3271691, +-38784628, 31447750, -13616657, 18032420, -25632902, -20395726, -38289632, 7603703, -3514894, -12861816, +9358197, -18006650, 82141, -25722560, -25673704, 7203197, 15018964, -20876762, -5521181, -14475650, +-20080046, -22569516, -16195785, 12339978, -9774809, -28177670, 40484900, 25356414, 40819368, -5328981, +-8765491, -8124468, -14380624, -23145042, -1461900, -5089000, -17493402, -5848135, 5172751, -12408161, +-11167989, 1291175, -1813550, -5530844, -4517232, 10066866, 10748693, 337155, 2729989, 7628399, +9584220, 1945083, -777389, -1472100, 4522064, -1915555, 1151588, -1762010, -6700686, -181999, +6379100, -6610492, 8704288, 10959683, 4660577, 357019, 1821603, 1156957, -7277285, 601832, +4195646, -3760781, 89121, -1719061, 1232119, -2607582, 1009854, 4076998, -5561983, -4766877, +8859444, 3598646, -1075352, 1345399, -21578990, -56873956, 24888798, 29694330, -13180181, -5640903, +-1299228, 33602212, 1261647, 7327214, 7237020, -7679939, 6828998, 15749108, -2934000, -14794015, +3919695, 28606092, -14877767, -9246528, 6416681, -3790309, 21468394, -5149666, 9781788, -10789495, +-12984760, -12978317, 14137959, -4022774, 12571906, 14615237, -3541201, 2079838, 277025, -11616813, +4098473, -10521596, 12819941, 31114354, 51002736, -456340, -1261110, -21341692, 11815455, 16802986, +-312459, 18849000, 26894548, 11404212, 15374372, -23256712, -13879187, 19634980, 50960324, -9131637, +-29615946, 7763691, -9718974, -370978, 13953812, 424665, -13405667, -6336688, -6827925, -34368328, +-14245333, 388695, 5917928, 12206297, -1794223, -13118441, -7459822, 3417720, -5194763, -13176960, +13930726, 33380486, 14562623, 18052822, 2022393, -4379793, -26831198, -5820755, 7864085, 6131066, +-5862631, 15481746, -4145717, 8730058, -18724446, 1247688, -6333466, -5294084, 369904, 5399848, +5334350, -5188321, -10101226, 10105521, -3714073, 8327942, 922881, -1921461, 863288, 1899449, +7759932, 393526, -1013075, -3775276, -4147865, 6658810, 2349347, 6147172, -12680891, 9097278, +5368172, 2575370, -4475356, -1569811, 9536975, -989990, 557809, -7070053, 863288, -10919954, +-2145873, 3332358, 9558987, 4781909, 8466991, 18117782, 6019934, 9492951, 3718905, 27307402, +-8613557, -3438658, -10735271, 6322729, -6666326, 5990406, 30998390, 6101001, -32836098, -8039105, +-9575093, -28123982, 17859548, 8398272, -3245385, 3932580, 1760400, -12656195, -104690, -941672, +-12513387, -3808026, 27067420, 39711804, 18777598, -13925895, -21905944, 10280541, 18191334, 1959579, +14558865, -10197326, -6988986, 14854144, 4743792, 125091, -33348810, -43604656, -1378148, -25542170, +-14744623, 9004399, 36444408, 7791608, 1844152, -10657961, -12557948, -18357228, -16007880, 2875481, +11025181, -4013110, -18040474, -29242284, 11620034, 638876, -16163573, -27275190, -18329310, -30013768, +-53864260, -32679870, -4807142, -6600828, 64882460, -8076149, -2377801, 37193880, 4435628, 1946157, +22524420, -13571023, -32723892, -38276748, -5855114, -18423262, -20141786, -21658446, -23440858, 4418448, +21305722, 33545842, 20117626, 3954054, 2269353, -8860518, 17488570, 3395709, -5198521, -21948894, +4572530, 15627239, -676457, -268972, -7713225, 4157528, 8884140, 14259291, 4189204, 5935108, +5663988, 7018514, 9102646, 9143985, -2515777, 6899865, 1584843, -5224828, -11250130, -13820668, +1517734, 3018825, -13414793, -6869800, -12890807, 4036733, 6877317, 10133438, 15362561, 25422986, +19261318, 19330038, 11818676, 7399692, -4495757, 1835562, 294205, -12201465, -18206366, -14083198, +-15509664, 20462834, -29096256, 7315940, 4592394, -12686797, -40793064, 27710056, 8210367, -2649458, +-41304164, 10956462, 6382859, -21827560, 3622268, 19091130, 11729019, 5536750, -18709414, -3841848, +-6996502, 3260417, -7057168, 1695975, -14495515, -20857434, 22819162, -15809775, 34688304, -21449604, +-19412178, -13175349, -24398098, 2105071, -489089, 36419712, -27035208, -28531468, 14669461, 9345849, +-23606750, -31411244, -3500398, -17719962, 20306606, 4283156, -25990994, 16811576, -4457103, -39972188, +26191248, -17857400, 17087528, -29755534, -7293928, -879931, -12515535, -5175436, 3396782, 37440304, +-10146323, -3566434, -10804527, 10650982, -17774186, 13823352, 29275034, -1861868, 29435558, 23077396, +-3545496, 47161424, -2793339, 5396090, -1415729, 13266080, 47581260, -3980361, -13193066, -50958176, +39396660, 13995688, 33633352, 11388643, -26460756, 11701638, 7539278, 4781909, -23493472, 13347148, +2734284, 3803731, -12634720, -3750580, 16063178, 13697724, 598611, -1728188, -1651415, -1918240, +3927211, 10019085, -20633022, -6160057, -2863670, 3223373, -4224101, 4512400, 4440460, 6436009, +-4822175, -11032160, 17023102, 26587996, 9330816, -13742822, -11746736, -5121212, -4006668, 7151658, +3626026, -2732136, -16838420, -12123619, -13642964, -1398012, 13073880, 5686000, 11023034, 4154844, +-18362596, -3348464, 8028368, 27936078, -53846540, 2061047, -60601452, -20307680, -10295037, 18443664, +55959664, 47562468, 17518098, 28080496, -18249316, -15375983, 2704756, -4129074, 12950400, 4103305, +-12656732, 18771154, 27638652, 22970558, 17165910, 14514305, -482110, 2584497, -9417253, 26157424, +12200391, -5015985, -16148003, 5389110, 10719165, -2863133, 34221224, 35754528, -20707112, -15307263, +739271, 27773406, 17296370, 4440996, 3377992, -6651294, -12559558, 6907381, 42684996, -17316234, +-21182778, -23030152, 22282290, 9101573, -12850542, -19922742, -31947040, -37795176, 4096862, 8259759, +6766721, -8352638, -2848637, -10414759, 7398081, -30153354, -49567680, -22340810, -3513820, -8443906, +-19400368, 24748138, 41329396, -9341554, 21285322, 45680736, 29744260, 10560788, -31604516, 5064840, +5589363, -27925340, -15505369, -4491999, -22292490, 24205362, 34453692, -2124935, -8063264, -4322885, +-10173167, -5676873, -14208826, -13893682, -5191005, -6933151, 4864051, -3163244, -3937411, 6733972, +-21072720, -2614561, 1605781, 21209622, -21907554, -3624953, -5087926, 3958349, -13998372, -4958003, +4107063, -7678865, -12955232, -2196339, -1116692, -12664785, 14664629, -20379082, -2426120, -7581154, +4361003, -2252174, -6117107, -11948599, 238371, 5842766, -4376035, -34298000, 27553288, -3564286, +23664196, 14334453, 487479, 15677704, -6963216, -1822140, 13486197, 16552267, 2495913, 32212, +-609349, -15170898, -9886478, 3990562, -21139830, 516470, -7989176, 462246, -17935784, 2996814, +927713, -16306917, 13506062, 5725192, 9118216, -20465520, -5583458, 3802657, -1142461, 1431298, +11638825, 2545842, 3205656, -2389613, -4602058, -3242164, -1752347, 7516730, -3499325, -13079786, +10481331, -17969070, -5709086, -6191196, 2069637, -8815420, -10480257, 13611288, -1822140, -13730474, +8286066, -19133006, 15214385, 4722854, 636729, 15720654, 17450988, 2401424, 4911295, -13200045, +16923244, -8356933, -11725261, -1035624, 2427730, 32126356, -14540612, -23777476, 20256140, -7770133, +20238960, -3469260, 1242856, -8915815, 12220793, -20662550, -17213692, -6801618, 7993471, 4808753, +-1345399, 9869835, -12370580, -12439836, -8346732, 2918967, 3494493, 718870, -632434, -3771518, +2030983, -17149804, 3371013, 3484292, -4234301, -1596654, 5066451, -2757369, -7427072, 8856223, +-4528506, 1090922, -481573, -2248952, 5876589, 2586644, -6321118, -712428, -1584843, -5556614, +-1306207, -2055142, -11521250, 3488050, 6862284, 5578626, -5291400, 5211406, -8437463, -2588792, +96100, -5378373, 16521665, -7661148, -89492088, -170450608, -60821568, -133515504, -152109488, 36950676, +-5376226, 50716048, 196624672, 213190896, 150468816, 214711328, 176432432, 58385248, 61624728, 45514304, +-118897040, -122442536, -68225552, -118865368, -128453344, -43220256, -38052336, -108335720, -81677392, -13497472, +-48501992, -59281288, -14930380, -45439680, -80135496, -45774152, 14602889, -32337346, -39768712, 46630460, +-8257075, -44718124, 40188008, 74639552, -17628156, 18429168, 115857280, 15693810, -37532644, 76766632, +67045512, -67080408, 37950332, 84633408, -26781268, 8968965, 146903984, 111984296, 56291452, 206418272, +229885984, 117372328, 211695184, 273406336, 171520048, 161774240, 224769600, 144372112, 91763584, 101602824, +52755084, -62214748, -120024472, -162727728, -277481184, -337613408, -382675680, -432752864, -426673856, -462485824, +-413162976, -306823872, -306766432, -241950544, -21989158, -12880607, 5908802, 172845584, 136513920, 45199164, +90481000, 134757824, 49706732, 59921236, 136903696, 99535328, 20047834, 81960864, 115858888, 49562312, +62275416, 142525264, 53216792, -23032298, 65582004, 45725832, -31964758, 61845380, 137756784, 64633352, +101482024, 219956016, 182951648, 173267568, 258502272, 238642880, 164461808, 142896784, 128157528, 47743392, +-2170032, 6535867, -27303644, -86391120, -85927264, -98708552, -168664432, -188726768, -180856784, -202928608, +-243339424, -213241376, -206064480, -219896416, -170239616, -115214648, -90120224, -56909392, 1956358, 22580790, +18983218, 31466004, 34665756, 17690434, 16227997, 31777390, 27537720, 18664318, 22523346, 26280904, +19871740, 25792352, 39473972, 43389908, 41404560, 47466368, 46247136, 32323924, 26185878, 17865454, +13853417, 13482976, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -4371203, -3634616, 3891240, -1843078, 3905199, -2352032, -512175, 5196911, -2124398, 2473901, 1511292, --5755256, -2593624, 4327717, -1679869, -821413, 2725157, 1804960, 1943473, 523449, 6663105, -1141388, -1705639, 1496796, -2295123, 4129611, -1181116, -2263985, -979253, -5386963, -1818919, --3966939, 1309965, -64425, 1466195, -1587527, 2268817, 1071594, -238908, 695248, 371515, -525597, 738198, -2847563, 7128572, 1053878, -2585570, 5277978, -1260036, -4549444, -4983236, -4872641, -960999, -385473, 3230889, 366146, -830539, 2522757, -262530, 1463510, 428960, -1859184, -958315, 2024003, -902480, 2404108, 3494493, 1900523, -2053531, -2113124, -1033477, -942208, -2194728, 1558536, -1073742, 1933272, 2520609, -3112778, -1751810, 2724620, 817654, --854162, 4202089, 2436320, 2010045, -203474, 1114007, -78920, 568546, -478889, 646929, -253940, 312459, -947040, 1563368, 515396, 120259, -263604, 641024, 1021665, -523449, -1099512, -31675, 4567161, 899796, 1040993, 3833795, 49392, 2767570, 1318555, -309775, -296890, -2989297, 1402307, 243739, 4697084, 1665374, 1542967, 215285, 1391569, 5153961, --4856535, 2755759, 731755, -3204046, -1431835, -1983738, -644782, -1840394, 1309965, 5951214, -3748970, 4446365, 3534758, 6067178, 4423280, -5492727, -9968082, -1256815, 476205, -2426120, -5265630, -215822, 7882876, -3669513, -3678640, 3402151, 195958, 289910, 3127810, -5743982, -1488206, -4110821, 5461051, 3218004, -8053, 8286066, 381178, -784368, -1012539, -1446867, --2040646, 3927211, 2108829, -2009508, -646393, -5757404, -2519535, -754841, 6058052, 4131759, -755914, 3047279, 130997, 3244848, 23622, 1345935, -3442416, -2228551, 861678, 456340, --161061, -1748589, 1644436, 1914482, -463856, -1797444, -306553, 1928977, -280247, 1029182, --897648, -530965, -702764, 616865, -612033, 113280, -20401, 976031, -782758, 942208, -1481764, -686658, 369904, 120796, -5369, 1752347, -537408, 445066, -628676, 696322, -539018, 297963, -179315, 1536525, -50466, 74625, 679679, 3628174, 8248485, 2421288, -365072, 258235, 2326799, 2168959, 495532, 1303523, 1871532, -125628, -170188, 2359548, -9336185, 3122441, 7285875, -4126390, -3361886, -1366337, -4367445, -5120675, -2038499, 3788698, --6309307, -883690, -734976, -9935870, 2007360, -10037339, -3325915, -1337346, 2396592, 32212, -2106145, -1959579, -85362, -6774774, 2505577, -2246268, -3768834, 715112, 1921998, -315143, -514859, 2898566, 5156108, -8650601, 2385854, 587874, -2537252, -2755222, -539018, 1195612, --1137630, -5203890, -1204738, 1417339, 2733747, -356482, 6478422, 571768, 308164, 2641942, --4115653, 6117644, 1970853, 3636227, 1641751, 3042984, -619012, -579821, 1827509, 1063541, --834297, -1845762, -1480153, -3051574, -67646, -4096325, 290984, 2388002, -195958, -1744294, --3193845, 2852395, -1692754, 1156957, 450972, -506806, -3038153, 254477, -274341, 748935, --921807, -887448, 272730, -987306, -1665374, -905164, -689879, -168577, -1093606, -192200, --617402, 1434519, -256624, -780610, -249645, 762894, -297963, -1304060, -1380832, 1481227, -34897, 126702, -869731, 4925791, 5382668, -165893, 5937793, 379031, -766115, 734439, -504122, -1092532, -48855, -4132296, -2352032, 3703873, 4359392, -5083094, -1203128, 2124398, --3381750, -9731859, 2436857, 3611531, 4247186, -2228014, -2568391, -3463354, 5326833, 6067715, -1053341, 2400887, -4742181, -3840775, 4516158, 1712618, -3550327, 6264210, -6252936, 1053341, -615254, 5875516, 2171643, -1286343, 973884, -2020782, 3235721, -7638063, -2248952, -11009612, --4793184, 5592048, -448287, 8568997, -1147830, -7132867, 4542465, 1007707, -2901787, -326954, -366146, -2879776, 1917166, 5138392, 5793911, 172336, 2779381, -251256, 6589554, -3330747, -2860448, -602906, -96100, 228707, 2292976, -657130, 8239358, 842350, 763967, -1253057, -4862440, 1677722, -1614908, -3439732, 94489, 3332358, 1163936, 994285, -2128156, -87510, -684510, -305480, -551903, -564788, -1127429, 922344, 95563, 419833, 719944, 1764158, --660351, -1765768, 1999844, -501974, 217970, 69256, -214748, -201863, 805843, 750546, -979253, -313533, 914828, 9664, 537408, 922881, -185757, 146566, 778463, 1185948, -648003, 761283, 249645, 125091, 6022081, -8165270, -1122597, -5531918, -5745056, 2068027, -1122597, 11906723, 628139, 4388920, -9922985, -2364916, 2201708, -5148055, 3419331, 1007170, -850404, 2915209, 3368865, 7818988, 3485903, -1220308, 2480881, -3874597, 1145146, 3165928, --205085, 670552, 3472481, 4493073, 10809359, 2131378, -1596117, -7369090, -301185, 5632313, --8735963, 991064, -632434, 2774012, -4373888, -5141613, 9363029, -5948530, 1940788, -347892, --5845988, 13545790, 3500935, 7117835, 3831111, 7781407, -1410897, -2881386, 4953708, -4517232, -3811784, -3591130, 2081449, 5379984, 2966212, -2354716, -391379, 2770791, -4709432, -3455838, -292058, -515933, 8014946, -4350802, -7466801, -1074279, 4170950, 6785512, -4161823, -7029788, --1541893, 9896678, 1314797, 42950, -3505230, 533650, -192200, 3094524, 3138547, -143881, -1508070, 1730335, -4788352, -1049583, 1666984, -177167, 2816962, 1176821, 294205, -1973538, --201327, -215822, 1088774, -263067, 2938831, -505196, -291521, -1387811, 335544, -1770600, -95026, -134755, 741956, 1774358, 70330, 1497333, -81068, -1652489, -332860, 238908, --3153043, 3588445, -12938052, 7332046, 2153926, -2893734, 3933116, -10572599, -8825621, 1145683, --4358855, 10009421, 8888435, 9452686, -6310918, 3676492, 137976, 9423158, 664109, 6663105, -2665564, -2815888, -8483097, -7685307, 2449742, -10241350, -157840, -2416993, -4981625, -6839199, --4023848, 62814, 8236674, 33286, 3208341, -11716134, -6551436, -1242856, -7353521, 514322, -7348152, -7953206, 3278671, -95026, -2727841, -737661, -1713692, 8100309, 4337917, 4038343, --1953136, -2463701, 11142756, -3371013, -3053185, -9193377, 6703370, -13052406, 1774358, -4291209, -2025077, 4639639, -3159485, -6965363, -4323959, 477278, 9446781, -4754529, -1064615, -6140730, --4966593, 3063386, 3267396, 7479686, -8757975, -69793, -4649839, -3050501, 1809792, -3451543, --6887517, -3917010, -632971, 6286759, 6373195, 2217814, 313533, 934692, 2889439, 250719, -420907, 1328756, -1845762, 187905, 2615098, -790274, 275952, 3237869, -834297, -119185, -478889, 2357937, -56371, 370441, 815507, 404801, 1935420, -2330557, -2628520, -169114, --987843, 31139, 1394791, -624918, 2633352, 1682017, -12078522, 3218004, 1097901, 2004139, --16623671, 14829448, 291521, -343061, -306553, -5409512, 1732482, 174483, 5303211, -4671314, -5947993, 1684164, -3724274, -6413460, -8009577, 3994320, 699543, -711354, 539018, -4634270, -4974109, 3700651, 9185861, 5442798, 3627637, 5050345, -1206886, -5100274, -3810710, 278636, --2680060, 3949759, -4495757, -6822556, -7456063, 406411, -10196789, 4620848, 5326833, -6126771, -6209986, -7393250, 3690451, -10891500, 1457068, -2033130, 788663, -2926483, -168041, -10138270, --1695975, -3518652, -6410776, -1762547, -5009006, 1546188, -4514548, -2645700, -6477885, 2813741, --6194417, -503585, 9922985, -1742146, 293668, 3171833, -2209224, -10132902, -11502996, -1970853, --8042863, 343597, -2194728, 7444789, 546535, 2766496, -7576859, 612570, -1709397, -1435056, -5475547, 1298691, -652835, -3042448, 1488206, 2065342, 769873, 2826089, -120796, 1549410, --864899, -361851, 427886, 440234, 1030792, -341987, 3182571, -970126, -2715493, 1048509, --37581, 752156, 1050656, 609349, -395137, -1465658, 809064, -2523293, 949188, 4756140, -3252901, -10346039, -366683, 1800128, -9637370, -10960757, 5935108, -10760504, 2042794, 7117835, --5239323, -12360379, -5319317, 261456, 8099235, -3331284, 14315663, -1016834, -1167157, -8311299, --5921150, -1005022, 2863670, 781684, -2998424, -2516314, -707059, -3117610, -6186901, 5037460, --5134097, -3150359, 5345087, 1567126, -8719320, -9263171, -8537858, 7318088, -7944616, -8559870, -13877576, -8767639, 6097243, -1248225, 3708704, -12589623, 5695127, 692027, -2098629, -647466, --2510945, 4029753, 2914135, 11804718, -3048353, -2278480, 5550172, 11406896, 3077344, 2273648, --5486821, -3610457, -9501005, -2037425, -312996, -134755, 6759205, -2186675, 3578782, 11942157, --1919314, -476205, -1474784, -272730, -12256763, -13955422, 629213, 9147743, 33823, -18512920, -4748623, -6505802, 3022046, -11576011, -7264401, -1839320, 250719, -4268124, 1773285, 4222490, --606664, -615254, -493384, -2020782, 1811939, -2298344, 1802813, 234076, 525060, -2013266, --1443109, -2792803, 1184874, 147640, -952409, -2682207, -685584, -843961, -1792075, -2000381, -1083406, -2267206, -957241, 1829656, 457414, -1129576, -273267, -4295, -2931315, 237297, -5150203, -812823, 6092948, -881005, -2511482, -3659312, 5179731, 3205656, -2806224, 2368138, -5273683, -2702071, -17706540, -7693360, -3430068, -1944547, 7989176, -13894219, -10161356, 8572218, -5361730, 21530134, 6125697, 4981625, 5978058, 2748779, -3787088, 450435, -3990562, 6869264, -377420, 6932077, 281320, -182536, -9366250, 4907537, -6328635, 4982162, -907312, 5222680, -2143726, 7005629, -10843182, 1282048, -7496329, 9114994, 639950, -9145596, 12171937, 8937290, -5828271, -5483063, -18320720, 5295695, -1908039, -2290291, 9113384, -879395, 4269735, 8710194, --1828582, -11070278, 7516, 4948339, 3329137, -2983392, -1127429, -8121783, 3119757, 1091995, -1823214, -1235877, 1258962, 6955700, -4233764, 3161096, -1033477, -289373, 12684112, -3403762, -5890548, 4117263, -3844533, -4451197, 1686848, 914291, -1994476, 1022739, -2079838, 1986422, --1843615, 4743792, 559956, 4531191, 1005559, -163209, 5887864, 1995012, -1576790, 1566053, --1219234, -1851131, 967978, 2235531, -2044404, 1401233, -988379, -2301029, 35970, 2221035, --913754, -2561411, 907849, -1238024, -3712999, 1591822, 156229, -2050847, -1016297, -732292, --2034741, -270046, 3005403, 4006131, -3721589, 4614943, -5037997, -20020454, 4126927, 4909148, -20354386, -4231080, -3228742, 9645960, 12663174, -20552492, -11702175, 11277510, -5801427, 408559, -4655208, -13080323, -28676960, -11245298, 16370268, 13011603, 11030550, -3306051, 6205691, -3321620, -5720360, -5954436, 2047089, -14460081, 3601867, -5083094, 7480760, 7251516, 306553, -6810208, -6818261, 4294431, 11733851, -1177895, -7192460, -3578245, -18341120, -9376450, 4570382, -1200980, --12265353, 8395587, 11526618, -16221555, 15776489, -1472100, -1668058, 9911174, 2094870, 9371619, --1166621, 3368865, -3493956, -1873680, 4792647, 18801756, -6728067, 11979201, -941672, 1141388, -4561792, 10433012, -9560060, 1139240, 15319611, 4570919, -6929930, 4084514, 6089727, 1425392, -12054363, 8679592, 15137075, -1349157, 4388383, -124017, 590558, -8370355, -5753646, -6653978, --3164854, -4832, -1335198, -2688650, -2321967, 4509179, 6585259, 2994129, -3292093, 5252745, --1461900, -835371, -3080029, -2524367, 3379066, 1101659, -1132798, 214212, -3423089, -2960843, --3367254, 80531, -1850057, 3060701, 1948841, -1294933, 1424855, 3582003, -2117956, 1647657, -2161442, -1910724, -1656784, -2035278, -261456, -583579, 2297271, -756988, -860067, -12996571, --3260417, 13558138, 8637716, 10240813, -6526740, -3253975, -989990, -1348620, 14515379, 1940788, --14792941, -6550899, -4476967, 9608379, 1928440, 2127083, 8163122, 17803176, -26140782, 17455284, --3388729, -3025805, -6711960, 5246840, 5408438, 10290205, 1648731, 9810779, -949725, -2523293, -3078955, -1552631, 5031018, 9028021, 1115618, -597537, 11825656, -8676371, -1574642, 2950106, --974421, 10453950, -12199855, 1194538, -10433549, 1782948, -11065983, -1490354, 388695, 6172942, -15095736, -8702141, -4795868, -9023726, -489089, -13225815, -8606041, -8669391, 5944235, 10949482, -175557, 21616034, -13619878, 19325206, -13534516, -3094524, 5972689, 4456029, 19110456, 11075647, --14257681, 7545184, -5962489, -19673634, -470299, -12443057, 15807090, 24058260, 15282031, -2899640, --8473970, -3051038, 13435195, -1917166, 7010461, 891743, 3115462, 4817880, 1515050, 1966558, -1595580, -5772973, 4076461, 151398, 1723893, -2178622, -1923072, -5474473, -3105261, -1832340, -3416110, -1620276, 2288681, 2969970, -1096290, -627065, 72478, 3372623, 2081985, 1303523, -6123550, -7516, 6396817, -5611912, -2528662, 4209605, 3957276, -2297808, 1341104, -1912871, --4183835, 580894, -13309567, -8424041, 8590, 16798154, -2922188, 7582765, 15613280, -12713640, -5855114, -20494510, 12792023, -12474733, -5994164, 20367808, 7052873, 21938156, -9041980, 404801, --9600863, 6528351, 28025198, 7403450, 9638443, -13790603, -2487860, 955093, 10907606, 9717900, -18002892, -14214731, -4833449, -15490873, -13169980, 1258962, 1285806, 9598178, -8930848, 6802155, --21202642, 13684303, 10371272, 5104032, -3442416, -2262911, 1571958, 6635725, 2284923, 2064269, -67646, 14821932, 12642773, 5661841, 1291175, -10740639, -10675678, 30303142, 1283122, 4025995, -16907138, 7687992, -4571456, -3256659, 10814728, 21903260, -15504295, -6245420, -17493938, -16127602, -21316996, 9750113, 382252, -3868155, 7176354, 16374026, 10430328, 16887274, 4799089, -7120519, -12189654, -8302172, -21845814, 6803765, 948651, 666794, 213138, 9518184, 16088411, -2947958, -8589935, 9678709, 8686571, 1310502, 2048699, 8522826, 259309, -2243047, -1646583, -3148748, -8181376, -4364224, -1187559, 2320356, 4680441, 957778, -599148, 8877161, 1937030, -1517734, -6600828, 8506720, 3919695, -3120294, 104690, -1232656, 2661806, 381715, 163209, 77846, --1758252, 3164317, 1233193, 1031866, 2914672, 3964792, -518617, -3668439, -1414655, -199179, -4963372, 2016487, 831076, -663572, 6529961, -13982803, -10441602, -4072166, -13013214, 14706505, --1637993, -3707631, -12394202, -2028298, -11540577, -28572806, 4978941, -3482145, -9020505, 6512781, --15170898, -874026, -8291435, -22888954, -5255966, -9899900, -10870025, 18385682, -4913443, -6563784, --3343632, -365609, -4664872, -6417218, -1056025, 4897337, 15495168, 11754252, -467078, -838056, --26061862, 1658394, 3525095, 10742787, -6045167, -5338645, 39462160, -6713034, -19351512, -18688476, -16339129, -10894721, 4682588, -22159884, 5485747, -6158446, -11950210, -10205379, -25346750, 4148402, -7210177, 18074296, 5237176, -9652939, 14118631, 1767379, 13275744, 14914274, 42643656, 11548630, -2903935, -16510391, -18672908, -4905390, 1919850, -2274722, -16909824, 7668127, 19468550, 4619774, -13826573, 21637508, 19221052, -8080444, -15518254, -10445897, 1285269, 3536369, -1969243, -16275242, -3083250, -13211856, 3996467, -5796059, 788663, -7237020, 4748623, -1096827, 2988224, 527744, --3229816, -7389491, -1818382, -52613, 4312147, 6242198, 4726075, 7176891, 310311, 6164352, -10422812, 397821, 1896765, 6068252, 1945083, -5177046, -3146064, -8920647, -2786360, 5612986, -2978560, 835371, -1306207, 3623342, 1832877, -1748589, -4350802, -7757248, 931471, 1428077, --1240709, -2414309, -710817, -2615098, -5699959, -17220134, -7433515, -2644089, 5349382, -6278169, -10288057, -5299990, -7029251, 19945292, 10391137, 22677428, 324807, -6554657, -8902930, 24042154, --20590074, -7671349, 28067074, -16885664, 5644661, 5859946, 7314330, 1672890, 15794205, -4888747, -14219563, -5352066, 3146064, 3412352, -7243999, 10554345, -15908559, -11086921, -10305774, -4737886, --14133664, -26120380, -4709432, -7807714, 4209605, -6717329, -34685620, 9676561, 21874268, -1240709, --4589173, 34171296, -42253352, -9137006, 23656142, -5765994, 18371722, -13435195, -8290898, 6374805, --40318468, 13081397, -13689135, 20211580, 14899242, -21449066, 42439644, 6273337, 2312840, -2151779, -16764868, -30639222, 12620225, -1421097, -4798552, 8238821, -19746650, 28074054, 25535728, -47036336, -6835978, -9343701, -44096968, -7581691, -19645180, 10895795, 2864206, 7682623, -17756468, 27748174, --2636036, -7414188, 12885976, -503585, 9178345, -1908576, 14445049, 376883, 7243999, 2261300, --547608, -1495186, 8114267, -5777805, -6440304, 179315, -7579544, 11516955, -2420751, -5914170, -704912, 5320928, 2625836, 5487895, 2202245, 13361106, 3245385, -7200513, 13902272, -7448547, -7948911, 11937325, -3227668, 2720862, 8436390, -5696737, 8297340, 1344325, 25973814, -11578695, --33418066, -33528126, 2697776, 4203163, -14720464, 8803072, -18636400, 6036577, -8427263, 17314624, -22166326, 766115, 21447456, 19520090, -10785200, -228170, -13807783, -3429532, -3209951, 7567196, --1316944, -2088428, -2278480, -22378928, -33872260, -13586055, 17746804, 13736916, -14506789, -16690780, -9824738, 9958955, -22010634, 11182484, -14627048, -2679523, 17119740, 23756000, 222265, -13988172, -9128953, 1868311, 14828375, 2623151, 12384001, 12787728, -3531000, -48535276, 5571110, 1343251, -19731616, -7089918, 20123532, 19950660, -13228499, -65786016, -8760660, 2772938, -7839389, 39688720, -41633804, 29070486, 41371808, -10602127, 19496468, -16209743, 27679990, 19429358, -32442572, 41181220, --42405824, -36101884, -34027952, 10934987, 25752624, 21461414, 7258495, -26554710, 24693914, 3524021, --8740795, -11313481, 1547799, 23327578, -17875118, -7089381, 35584340, 6664179, 16327855, 3218541, -1825361, 8850854, -13305809, 7334731, -5377836, 386010, 3739306, -3309272, -6845641, -4463008, --5978595, -13358959, 3125126, 12620761, -2385318, 12903692, 10004053, -8060043, -6373195, -5942088, -8006893, 5084705, -16334834, -9399536, 963683, 936303, -2344515, 2316598, 10889353, -128312, -8680666, 1026497, -6244346, -25970056, -49162344, 10479183, 18284212, -2536178, 25090662, 9680319, --30969936, -7728794, 6725919, 7763691, 8673686, -6169184, 14525043, 1340567, -9157944, -4141422, -5248987, 20611012, 26866094, 20327006, 32196686, -30735322, -8444443, -7895224, -31434328, -7458211, -5548561, 1714766, 3631932, -12469364, -14107894, 16148003, 36172216, -16960288, 18731426, -12077448, -4962298, -11132018, -1802276, -28004260, -10111427, -1509681, -38807712, -22670448, -37977176, -32076426, -21443698, 50331648, 40214852, 1264868, -2398202, 221728, -8910983, -17191680, -60797948, -20279224, --8615704, 5055714, 2731599, -21413634, -14899778, 7984344, 26934814, 16076063, 8767102, 17614734, -30195230, 11856257, -29972966, 23111220, -17701708, -9256728, 17963700, 40227736, 8767639, 51556252, --12151536, -53436372, -6068252, -17193290, -32693828, 49573048, 14161581, 16183974, 18254, -4321811, -14434848, 11903502, 800475, -1920387, -8477192, -1648194, -2438468, 13610751, 16445430, 19600620, --2107218, -633508, -676457, -620623, 12899934, -5400922, -4179003, -7423314, -5786395, 7359964, --1383516, -139050, 2270964, 4730370, 7625715, 9400610, -1194001, -5427765, -9564892, 4937602, -1917166, 4664872, 12182675, 10699300, -5262946, 2784750, 5545877, -9273908, -2783676, -2037425, --8924405, -4029216, -295279, 8314520, -21051246, -34443492, 21228950, -3394098, -20825222, 9968619, -22514218, 19487340, -40233644, -34765612, 8604967, -16185047, 4049617, 19583978, -10747619, -7940858, -32411434, 8750459, -4591857, -10395968, -9287867, 12124156, -7377143, -1499481, -1028645, -13288092, --5183489, -22068078, -29364154, 10390063, 15913928, -18568218, 13444858, 9178345, -6468758, -12904766, -1897302, 23080080, 13251585, 4098473, -23249194, -25987236, -12708808, 6931004, 28933048, -21816286, --11594801, -9957882, 17245368, 46675556, 12291123, -45788108, -10241886, -5449240, 23396834, 460635, -12079059, -6039798, -10927471, -10197863, -25971130, 24059334, 25480430, 10232760, 26944478, -8530879, -17397838, -8167417, -19589346, -21659520, -23164906, 4013647, -43299176, 45251240, -2212445, -17275970, --25068114, -20513300, -1463510, -13454522, -4125853, -23851028, -14770393, -42330124, -11839614, -27910308, -10189273, -9950902, 8152922, 9416179, 10082436, -7044820, 23285166, -5363341, 16848620, 569620, -4001299, -1376000, 7291244, -3666292, -9431211, 1867237, 2619393, 8646843, -14044543, -4937065, -3549791, -13838385, -17717, 5006322, -17286170, -7592429, 4056597, -2440615, -13255343, -20445654, --12312061, 7405598, -3937948, 9320616, 2201171, 321586, 13785234, 921271, 11850889, 4572530, -7366943, 27734214, 16589311, -7842074, 4184372, 35009352, 26261578, 10012106, 5141613, 16452946, -14889041, -23845658, -34368328, 11627550, 26725434, 38292316, 139586, -8624294, -24023362, -14114873, -16023449, -504659, -20526722, -41261212, -41300944, 8644695, -12485470, 23076322, -47576964, -15721191, -9130564, 6799470, 8931921, -15060840, 6787122, -1307818, -9030169, -1800128, -22395034, 20528334, -25242596, 18821620, -30118458, -16060493, -838056, 10152766, 14966350, 16133508, 12831215, -3410204, --2259690, -4080219, 21340618, 59531468, 37484328, -31016106, -30618284, -19399830, -39408472, 46275052, -24566140, -14349486, -40878424, -39055212, 44288628, 27315992, 5827734, 34170760, -35618700, -3926674, -2079301, -9144522, 3340411, -13224741, -36035312, 8922258, -27573690, 36710696, 34586296, -13249437, --6293201, 401579, 3857418, 39071316, 39851928, -63382444, -35478040, -20365662, 7868917, 17812304, -17112760, -24553792, -26456998, -31108448, -3969624, 32270236, 600759, 6429566, -7481296, -34405908, -7811472, -14419816, -18131742, 7876970, 60157460, 20395726, -11409581, -15426449, -14570140, -11904039, -15700790, 18845780, 21637508, -3890704, 13912473, -21301964, 5020280, 7808251, 9575093, -7646116, -4008278, 17859010, -4770635, -5012227, -3134789, 17635136, 11276974, 27436252, 6740415, -9696962, --7526930, 10198400, 33694556, 27627914, 5574868, -20249698, -25163676, -7978439, -6192269, 5990406, --12450573, 23312546, -38139848, 33227478, 48988932, 53179748, -59977608, 11013907, -1905892, -5150740, -25354802, -10827613, -17847736, 17576616, 8912057, 36453000, -3770445, -28857886, 813896, -13165685, -21475374, -33155536, -11808476, -15576773, -22164178, 30285962, -22216256, -3135326, 20776368, 12119324, --7429757, -11567421, -31115428, 4030290, 40795748, 24919400, -1846836, 12182138, -9314173, 33419140, --22603876, 15454366, -12523051, 20775294, 34367792, -7624104, -22499186, 11092290, -30647276, 50616188, -5815386, -26798448, -9310415, -41831908, 5216238, 60031832, -11052025, -35242356, -24785182, 36828272, -10845329, -19252190, -1123671, 9537512, 20488604, 50604380, -41384156, 18434000, 41275708, -6209986, --49125836, -47346108, -27926952, 83122112, -60949344, 20666846, -64188824, -30693984, 133539120, 12936978, --58486180, -55940340, -64764884, 81541568, 10302553, -15316390, -64906084, -15452755, 20020990, 66015796, --23839752, 7272454, -28724204, 9900973, 39816496, 24526410, -36048736, 17019882, 6336151, 15636365, -13537737, -36253284, 993211, -8506183, -14024679, 7344394, -13616657, -26673894, 10009421, -7761006, -34596500, 5345087, -32389958, -36488968, -11977590, 1187022, 27808302, 21333102, 4618164, -16916802, -6901476, -510027, -13963476, 1184874, 17540110, 15965467, 3513820, -26780732, 6355478, 10784126, -16722455, 15469935, 10601590, 21766358, -56346748, 9863392, -50626928, 22338662, 23922430, 47257524, -20907364, 10828686, 12352326, -14744086, -36152352, -25150254, -23746874, 10122164, 5872294, -6171331, -21592948, 33324114, -14936286, -20955682, 23133230, 4101694, -30861488, -7109782, 13946296, -25458956, --4518306, 5604396, 12928925, 6887517, 18294414, 31389232, 5520107, -20044076, -2341294, 6033356, --15936476, -7128572, 14653892, -11171747, -20171850, 27997282, -6790344, -6956774, -11180874, -11028402, -18126910, 4610111, 4117263, 24160802, -11590506, -18694918, -1119376, 1782948, -7958038, 6166500, --1352378, -6668474, -1240172, -23570244, 5215701, 4597763, -4045322, 12677670, 8531953, 4421669, -5635534, -24342800, 28765006, -10801843, -10464151, 8811125, -26387742, 8564165, -19772956, 2283312, --15652471, 5057861, 6838662, 10653130, 907312, 9448391, 14223858, -5520644, -3267933, 7903814, --532039, -5030481, 4299799, 997506, -3338800, -5061082, -4638028, -3042984, 10249939, -9859097, -9939628, 678605, 2653753, 4991289, 2920578, 7274601, -463320, -205085, -4511327, -988916, --6196564, 12381317, 846109, -5559835, -9126806, -2966749, 4734128, -8860518, 11675332, -5706401, --14987825, 846109, 6252399, -865973, -513249, 1530619, -7132330, -26132728, 42376296, -2136746, -24011014, -21688512, 2743410, -3882114, 7617662, 6896107, 12890271, -6502044, 9497783, -5819681, -5253282, -888521, 4164508, 10264972, -1221381, 15888695, -6320045, 12018929, 668404, -449898, --4437775, 7717520, -6062347, 6977711, -4037269, 542777, -3343632, 3848291, -2724083, 9064528, --2775623, -6248641, 14468134, -9921911, 7580081, 6137509, 2253247, 7058779, -8815957, -6080063, -6656663, 6260452, -3862249, -765578, 7095286, -566936, -9816685, 4400194, -4974646, 5133560, -6888591, 3301219, 2376728, 2290828, -10572062, 5250598, 3013457, -3131031, 3904662, -4920959, -2444373, -2413235, -457951, -1265942, 3723737, 7204808, -9863929, 8894877, -1723356, -3412352, -5094368, -6809671, 3283503, 4922033, -1176284, -2423972, 3405909, -1277216, 2007360, -853625, --3503083, -470836, 3799972, -930934, 1478006, -705448, -2567854, 1745367, 1540283, 2741800, --3731790, 3080029, -247497, -1473174, 3557307, -3889630, 6204617, 3230352, -2316061, 6398428, --480499, -2420214, 255014, -2416993, 3782256, -4059281, 4336843, 1832340, 2333778, 1174674, --2493766, 2177549, 974421, 579284, 392453, 261456, -1018444, 1227824, -2612414, 3262565, -1263794, -2889976, 10449655, -35759360, -111293344, -16433619, 53932980, 27856084, 131200512, 24330990, -28149752, 17680232, -35443144, -49896244, -35565552, -63940252, -54955716, -31216896, -12846784, 36457292, -99621768, 78989816, 68032816, 38626788, -30762704, -50018116, -36817532, -68898792, -65253976, -20082194, --9229885, -15310485, 25184614, 39412768, 26053808, 48085916, 37156836, 11291469, 34170224, 6876243, --5182415, 3049427, -20742544, -54444616, -46282032, -39361764, -55173688, -23181012, 15995532, 10948409, -35175244, 39821328, 34808564, 35711044, 36487896, 23073102, 22573274, 2368675, -20426328, -38086696, --26024818, -35860828, -47352552, -23387170, -21779780, -17766670, 6587406, 17812304, 17051558, 33292976, -41648296, 20088636, 29329258, 25014964, -7077569, 2807835, 11193759, -13973676, -12661027, -22353694, --40098888, -40257804, -31987842, -33121178, -6584185, 13799193, 9174050, 26213796, 39355860, 31019328, -28635620, 29444686, 19611894, 6410239, 1766305, -9224516, -17289928, -18564460, -27628988, -34916472, --37164352, -31993212, -28748364, -16441135, 3605625, 18033494, 41303088, 54681912, 47960828, 39767104, -33712808, 19489488, 3999688, -16940962, -34868692, -47509316, -49798000, -54880556, -40511744, -16920024, --4352413, 11444477, 32559074, 42089604, 45386532, 46777024, 39070244, 16564078, -1279900, -12120935, --26682484, -34649112, -32581086, -28914256, -20886962, -8549132, 995359, 11500849, 14865419, 11462194, -12537010, 10005663, 6784975, 5341866, 5468567, 1833414, 1801202, -470836, -2814277, -3337190, --2980707, -4291746, -5121749, -5400922, -4730907, -3991635, -2706366, -787590, 926102, 956167, -603980, 410169, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +3634616, 3891240, -1843078, 3905199, -2352032, -512175, 5196911, -2124398, 2473901, 1511292, +-5755256, -2593624, 4327717, -1679869, -821413, 2725157, 1804960, 1943473, 523449, 6663105, +1141388, -1705639, 1496796, -2295123, 4129611, -1181116, -2263985, -979253, -5386963, -1818919, +-3966939, 1309965, -64425, 1466195, -1587527, 2268817, 1071594, -238908, 695248, 371515, +525597, 738198, -2847563, 7128572, 1053878, -2585570, 5277978, -1260036, -4549444, -4983236, +4872641, -960999, -385473, 3230889, 366146, -830539, 2522757, -262530, 1463510, 428960, +1859184, -958315, 2024003, -902480, 2404108, 3494493, 1900523, -2053531, -2113124, -1033477, +942208, -2194728, 1558536, -1073742, 1933272, 2520609, -3112778, -1751810, 2724620, 817654, +-854162, 4202089, 2436320, 2010045, -203474, 1114007, -78920, 568546, -478889, 646929, +253940, 312459, -947040, 1563368, 515396, 120259, -263604, 641024, 1021665, -523449, +1099512, -31675, 4567161, 899796, 1040993, 3833795, 49392, 2767570, 1318555, -309775, +296890, -2989297, 1402307, 243739, 4697084, 1665374, 1542967, 215285, 1391569, 5153961, +-4856535, 2755759, 731755, -3204046, -1431835, -1983738, -644782, -1840394, 1309965, 5951214, +3748970, 4446365, 3534758, 6067178, 4423280, -5492727, -9968082, -1256815, 476205, -2426120, +5265630, -215822, 7882876, -3669513, -3678640, 3402151, 195958, 289910, 3127810, -5743982, +1488206, -4110821, 5461051, 3218004, -8053, 8286066, 381178, -784368, -1012539, -1446867, +-2040646, 3927211, 2108829, -2009508, -646393, -5757404, -2519535, -754841, 6058052, 4131759, +755914, 3047279, 130997, 3244848, 23622, 1345935, -3442416, -2228551, 861678, 456340, +-161061, -1748589, 1644436, 1914482, -463856, -1797444, -306553, 1928977, -280247, 1029182, +-897648, -530965, -702764, 616865, -612033, 113280, -20401, 976031, -782758, 942208, +1481764, -686658, 369904, 120796, -5369, 1752347, -537408, 445066, -628676, 696322, +539018, 297963, -179315, 1536525, -50466, 74625, 679679, 3628174, 8248485, 2421288, +365072, 258235, 2326799, 2168959, 495532, 1303523, 1871532, -125628, -170188, 2359548, +9336185, 3122441, 7285875, -4126390, -3361886, -1366337, -4367445, -5120675, -2038499, 3788698, +-6309307, -883690, -734976, -9935870, 2007360, -10037339, -3325915, -1337346, 2396592, 32212, +2106145, -1959579, -85362, -6774774, 2505577, -2246268, -3768834, 715112, 1921998, -315143, +514859, 2898566, 5156108, -8650601, 2385854, 587874, -2537252, -2755222, -539018, 1195612, +-1137630, -5203890, -1204738, 1417339, 2733747, -356482, 6478422, 571768, 308164, 2641942, +-4115653, 6117644, 1970853, 3636227, 1641751, 3042984, -619012, -579821, 1827509, 1063541, +-834297, -1845762, -1480153, -3051574, -67646, -4096325, 290984, 2388002, -195958, -1744294, +-3193845, 2852395, -1692754, 1156957, 450972, -506806, -3038153, 254477, -274341, 748935, +-921807, -887448, 272730, -987306, -1665374, -905164, -689879, -168577, -1093606, -192200, +-617402, 1434519, -256624, -780610, -249645, 762894, -297963, -1304060, -1380832, 1481227, +34897, 126702, -869731, 4925791, 5382668, -165893, 5937793, 379031, -766115, 734439, +504122, -1092532, -48855, -4132296, -2352032, 3703873, 4359392, -5083094, -1203128, 2124398, +-3381750, -9731859, 2436857, 3611531, 4247186, -2228014, -2568391, -3463354, 5326833, 6067715, +1053341, 2400887, -4742181, -3840775, 4516158, 1712618, -3550327, 6264210, -6252936, 1053341, +615254, 5875516, 2171643, -1286343, 973884, -2020782, 3235721, -7638063, -2248952, -11009612, +-4793184, 5592048, -448287, 8568997, -1147830, -7132867, 4542465, 1007707, -2901787, -326954, +366146, -2879776, 1917166, 5138392, 5793911, 172336, 2779381, -251256, 6589554, -3330747, +2860448, -602906, -96100, 228707, 2292976, -657130, 8239358, 842350, 763967, -1253057, +4862440, 1677722, -1614908, -3439732, 94489, 3332358, 1163936, 994285, -2128156, -87510, +684510, -305480, -551903, -564788, -1127429, 922344, 95563, 419833, 719944, 1764158, +-660351, -1765768, 1999844, -501974, 217970, 69256, -214748, -201863, 805843, 750546, +979253, -313533, 914828, 9664, 537408, 922881, -185757, 146566, 778463, 1185948, +648003, 761283, 249645, 125091, 6022081, -8165270, -1122597, -5531918, -5745056, 2068027, +1122597, 11906723, 628139, 4388920, -9922985, -2364916, 2201708, -5148055, 3419331, 1007170, +850404, 2915209, 3368865, 7818988, 3485903, -1220308, 2480881, -3874597, 1145146, 3165928, +-205085, 670552, 3472481, 4493073, 10809359, 2131378, -1596117, -7369090, -301185, 5632313, +-8735963, 991064, -632434, 2774012, -4373888, -5141613, 9363029, -5948530, 1940788, -347892, +-5845988, 13545790, 3500935, 7117835, 3831111, 7781407, -1410897, -2881386, 4953708, -4517232, +3811784, -3591130, 2081449, 5379984, 2966212, -2354716, -391379, 2770791, -4709432, -3455838, +292058, -515933, 8014946, -4350802, -7466801, -1074279, 4170950, 6785512, -4161823, -7029788, +-1541893, 9896678, 1314797, 42950, -3505230, 533650, -192200, 3094524, 3138547, -143881, +1508070, 1730335, -4788352, -1049583, 1666984, -177167, 2816962, 1176821, 294205, -1973538, +-201327, -215822, 1088774, -263067, 2938831, -505196, -291521, -1387811, 335544, -1770600, +95026, -134755, 741956, 1774358, 70330, 1497333, -81068, -1652489, -332860, 238908, +-3153043, 3588445, -12938052, 7332046, 2153926, -2893734, 3933116, -10572599, -8825621, 1145683, +-4358855, 10009421, 8888435, 9452686, -6310918, 3676492, 137976, 9423158, 664109, 6663105, +2665564, -2815888, -8483097, -7685307, 2449742, -10241350, -157840, -2416993, -4981625, -6839199, +-4023848, 62814, 8236674, 33286, 3208341, -11716134, -6551436, -1242856, -7353521, 514322, +7348152, -7953206, 3278671, -95026, -2727841, -737661, -1713692, 8100309, 4337917, 4038343, +-1953136, -2463701, 11142756, -3371013, -3053185, -9193377, 6703370, -13052406, 1774358, -4291209, +2025077, 4639639, -3159485, -6965363, -4323959, 477278, 9446781, -4754529, -1064615, -6140730, +-4966593, 3063386, 3267396, 7479686, -8757975, -69793, -4649839, -3050501, 1809792, -3451543, +-6887517, -3917010, -632971, 6286759, 6373195, 2217814, 313533, 934692, 2889439, 250719, +420907, 1328756, -1845762, 187905, 2615098, -790274, 275952, 3237869, -834297, -119185, +478889, 2357937, -56371, 370441, 815507, 404801, 1935420, -2330557, -2628520, -169114, +-987843, 31139, 1394791, -624918, 2633352, 1682017, -12078522, 3218004, 1097901, 2004139, +-16623671, 14829448, 291521, -343061, -306553, -5409512, 1732482, 174483, 5303211, -4671314, +5947993, 1684164, -3724274, -6413460, -8009577, 3994320, 699543, -711354, 539018, -4634270, +4974109, 3700651, 9185861, 5442798, 3627637, 5050345, -1206886, -5100274, -3810710, 278636, +-2680060, 3949759, -4495757, -6822556, -7456063, 406411, -10196789, 4620848, 5326833, -6126771, +6209986, -7393250, 3690451, -10891500, 1457068, -2033130, 788663, -2926483, -168041, -10138270, +-1695975, -3518652, -6410776, -1762547, -5009006, 1546188, -4514548, -2645700, -6477885, 2813741, +-6194417, -503585, 9922985, -1742146, 293668, 3171833, -2209224, -10132902, -11502996, -1970853, +-8042863, 343597, -2194728, 7444789, 546535, 2766496, -7576859, 612570, -1709397, -1435056, +5475547, 1298691, -652835, -3042448, 1488206, 2065342, 769873, 2826089, -120796, 1549410, +-864899, -361851, 427886, 440234, 1030792, -341987, 3182571, -970126, -2715493, 1048509, +-37581, 752156, 1050656, 609349, -395137, -1465658, 809064, -2523293, 949188, 4756140, +3252901, -10346039, -366683, 1800128, -9637370, -10960757, 5935108, -10760504, 2042794, 7117835, +-5239323, -12360379, -5319317, 261456, 8099235, -3331284, 14315663, -1016834, -1167157, -8311299, +-5921150, -1005022, 2863670, 781684, -2998424, -2516314, -707059, -3117610, -6186901, 5037460, +-5134097, -3150359, 5345087, 1567126, -8719320, -9263171, -8537858, 7318088, -7944616, -8559870, +13877576, -8767639, 6097243, -1248225, 3708704, -12589623, 5695127, 692027, -2098629, -647466, +-2510945, 4029753, 2914135, 11804718, -3048353, -2278480, 5550172, 11406896, 3077344, 2273648, +-5486821, -3610457, -9501005, -2037425, -312996, -134755, 6759205, -2186675, 3578782, 11942157, +-1919314, -476205, -1474784, -272730, -12256763, -13955422, 629213, 9147743, 33823, -18512920, +4748623, -6505802, 3022046, -11576011, -7264401, -1839320, 250719, -4268124, 1773285, 4222490, +-606664, -615254, -493384, -2020782, 1811939, -2298344, 1802813, 234076, 525060, -2013266, +-1443109, -2792803, 1184874, 147640, -952409, -2682207, -685584, -843961, -1792075, -2000381, +1083406, -2267206, -957241, 1829656, 457414, -1129576, -273267, -4295, -2931315, 237297, +5150203, -812823, 6092948, -881005, -2511482, -3659312, 5179731, 3205656, -2806224, 2368138, +5273683, -2702071, -17706540, -7693360, -3430068, -1944547, 7989176, -13894219, -10161356, 8572218, +5361730, 21530134, 6125697, 4981625, 5978058, 2748779, -3787088, 450435, -3990562, 6869264, +377420, 6932077, 281320, -182536, -9366250, 4907537, -6328635, 4982162, -907312, 5222680, +2143726, 7005629, -10843182, 1282048, -7496329, 9114994, 639950, -9145596, 12171937, 8937290, +5828271, -5483063, -18320720, 5295695, -1908039, -2290291, 9113384, -879395, 4269735, 8710194, +-1828582, -11070278, 7516, 4948339, 3329137, -2983392, -1127429, -8121783, 3119757, 1091995, +1823214, -1235877, 1258962, 6955700, -4233764, 3161096, -1033477, -289373, 12684112, -3403762, +5890548, 4117263, -3844533, -4451197, 1686848, 914291, -1994476, 1022739, -2079838, 1986422, +-1843615, 4743792, 559956, 4531191, 1005559, -163209, 5887864, 1995012, -1576790, 1566053, +-1219234, -1851131, 967978, 2235531, -2044404, 1401233, -988379, -2301029, 35970, 2221035, +-913754, -2561411, 907849, -1238024, -3712999, 1591822, 156229, -2050847, -1016297, -732292, +-2034741, -270046, 3005403, 4006131, -3721589, 4614943, -5037997, -20020454, 4126927, 4909148, +20354386, -4231080, -3228742, 9645960, 12663174, -20552492, -11702175, 11277510, -5801427, 408559, +4655208, -13080323, -28676960, -11245298, 16370268, 13011603, 11030550, -3306051, 6205691, -3321620, +5720360, -5954436, 2047089, -14460081, 3601867, -5083094, 7480760, 7251516, 306553, -6810208, +6818261, 4294431, 11733851, -1177895, -7192460, -3578245, -18341120, -9376450, 4570382, -1200980, +-12265353, 8395587, 11526618, -16221555, 15776489, -1472100, -1668058, 9911174, 2094870, 9371619, +-1166621, 3368865, -3493956, -1873680, 4792647, 18801756, -6728067, 11979201, -941672, 1141388, +4561792, 10433012, -9560060, 1139240, 15319611, 4570919, -6929930, 4084514, 6089727, 1425392, +12054363, 8679592, 15137075, -1349157, 4388383, -124017, 590558, -8370355, -5753646, -6653978, +-3164854, -4832, -1335198, -2688650, -2321967, 4509179, 6585259, 2994129, -3292093, 5252745, +-1461900, -835371, -3080029, -2524367, 3379066, 1101659, -1132798, 214212, -3423089, -2960843, +-3367254, 80531, -1850057, 3060701, 1948841, -1294933, 1424855, 3582003, -2117956, 1647657, +2161442, -1910724, -1656784, -2035278, -261456, -583579, 2297271, -756988, -860067, -12996571, +-3260417, 13558138, 8637716, 10240813, -6526740, -3253975, -989990, -1348620, 14515379, 1940788, +-14792941, -6550899, -4476967, 9608379, 1928440, 2127083, 8163122, 17803176, -26140782, 17455284, +-3388729, -3025805, -6711960, 5246840, 5408438, 10290205, 1648731, 9810779, -949725, -2523293, +3078955, -1552631, 5031018, 9028021, 1115618, -597537, 11825656, -8676371, -1574642, 2950106, +-974421, 10453950, -12199855, 1194538, -10433549, 1782948, -11065983, -1490354, 388695, 6172942, +15095736, -8702141, -4795868, -9023726, -489089, -13225815, -8606041, -8669391, 5944235, 10949482, +175557, 21616034, -13619878, 19325206, -13534516, -3094524, 5972689, 4456029, 19110456, 11075647, +-14257681, 7545184, -5962489, -19673634, -470299, -12443057, 15807090, 24058260, 15282031, -2899640, +-8473970, -3051038, 13435195, -1917166, 7010461, 891743, 3115462, 4817880, 1515050, 1966558, +1595580, -5772973, 4076461, 151398, 1723893, -2178622, -1923072, -5474473, -3105261, -1832340, +3416110, -1620276, 2288681, 2969970, -1096290, -627065, 72478, 3372623, 2081985, 1303523, +6123550, -7516, 6396817, -5611912, -2528662, 4209605, 3957276, -2297808, 1341104, -1912871, +-4183835, 580894, -13309567, -8424041, 8590, 16798154, -2922188, 7582765, 15613280, -12713640, +5855114, -20494510, 12792023, -12474733, -5994164, 20367808, 7052873, 21938156, -9041980, 404801, +-9600863, 6528351, 28025198, 7403450, 9638443, -13790603, -2487860, 955093, 10907606, 9717900, +18002892, -14214731, -4833449, -15490873, -13169980, 1258962, 1285806, 9598178, -8930848, 6802155, +-21202642, 13684303, 10371272, 5104032, -3442416, -2262911, 1571958, 6635725, 2284923, 2064269, +67646, 14821932, 12642773, 5661841, 1291175, -10740639, -10675678, 30303142, 1283122, 4025995, +16907138, 7687992, -4571456, -3256659, 10814728, 21903260, -15504295, -6245420, -17493938, -16127602, +21316996, 9750113, 382252, -3868155, 7176354, 16374026, 10430328, 16887274, 4799089, -7120519, +12189654, -8302172, -21845814, 6803765, 948651, 666794, 213138, 9518184, 16088411, -2947958, +8589935, 9678709, 8686571, 1310502, 2048699, 8522826, 259309, -2243047, -1646583, -3148748, +8181376, -4364224, -1187559, 2320356, 4680441, 957778, -599148, 8877161, 1937030, -1517734, +6600828, 8506720, 3919695, -3120294, 104690, -1232656, 2661806, 381715, 163209, 77846, +-1758252, 3164317, 1233193, 1031866, 2914672, 3964792, -518617, -3668439, -1414655, -199179, +4963372, 2016487, 831076, -663572, 6529961, -13982803, -10441602, -4072166, -13013214, 14706505, +-1637993, -3707631, -12394202, -2028298, -11540577, -28572806, 4978941, -3482145, -9020505, 6512781, +-15170898, -874026, -8291435, -22888954, -5255966, -9899900, -10870025, 18385682, -4913443, -6563784, +-3343632, -365609, -4664872, -6417218, -1056025, 4897337, 15495168, 11754252, -467078, -838056, +-26061862, 1658394, 3525095, 10742787, -6045167, -5338645, 39462160, -6713034, -19351512, -18688476, +16339129, -10894721, 4682588, -22159884, 5485747, -6158446, -11950210, -10205379, -25346750, 4148402, +7210177, 18074296, 5237176, -9652939, 14118631, 1767379, 13275744, 14914274, 42643656, 11548630, +2903935, -16510391, -18672908, -4905390, 1919850, -2274722, -16909824, 7668127, 19468550, 4619774, +13826573, 21637508, 19221052, -8080444, -15518254, -10445897, 1285269, 3536369, -1969243, -16275242, +3083250, -13211856, 3996467, -5796059, 788663, -7237020, 4748623, -1096827, 2988224, 527744, +-3229816, -7389491, -1818382, -52613, 4312147, 6242198, 4726075, 7176891, 310311, 6164352, +10422812, 397821, 1896765, 6068252, 1945083, -5177046, -3146064, -8920647, -2786360, 5612986, +2978560, 835371, -1306207, 3623342, 1832877, -1748589, -4350802, -7757248, 931471, 1428077, +-1240709, -2414309, -710817, -2615098, -5699959, -17220134, -7433515, -2644089, 5349382, -6278169, +10288057, -5299990, -7029251, 19945292, 10391137, 22677428, 324807, -6554657, -8902930, 24042154, +-20590074, -7671349, 28067074, -16885664, 5644661, 5859946, 7314330, 1672890, 15794205, -4888747, +14219563, -5352066, 3146064, 3412352, -7243999, 10554345, -15908559, -11086921, -10305774, -4737886, +-14133664, -26120380, -4709432, -7807714, 4209605, -6717329, -34685620, 9676561, 21874268, -1240709, +-4589173, 34171296, -42253352, -9137006, 23656142, -5765994, 18371722, -13435195, -8290898, 6374805, +-40318468, 13081397, -13689135, 20211580, 14899242, -21449066, 42439644, 6273337, 2312840, -2151779, +16764868, -30639222, 12620225, -1421097, -4798552, 8238821, -19746650, 28074054, 25535728, -47036336, +6835978, -9343701, -44096968, -7581691, -19645180, 10895795, 2864206, 7682623, -17756468, 27748174, +-2636036, -7414188, 12885976, -503585, 9178345, -1908576, 14445049, 376883, 7243999, 2261300, +-547608, -1495186, 8114267, -5777805, -6440304, 179315, -7579544, 11516955, -2420751, -5914170, +704912, 5320928, 2625836, 5487895, 2202245, 13361106, 3245385, -7200513, 13902272, -7448547, +7948911, 11937325, -3227668, 2720862, 8436390, -5696737, 8297340, 1344325, 25973814, -11578695, +-33418066, -33528126, 2697776, 4203163, -14720464, 8803072, -18636400, 6036577, -8427263, 17314624, +22166326, 766115, 21447456, 19520090, -10785200, -228170, -13807783, -3429532, -3209951, 7567196, +-1316944, -2088428, -2278480, -22378928, -33872260, -13586055, 17746804, 13736916, -14506789, -16690780, +9824738, 9958955, -22010634, 11182484, -14627048, -2679523, 17119740, 23756000, 222265, -13988172, +9128953, 1868311, 14828375, 2623151, 12384001, 12787728, -3531000, -48535276, 5571110, 1343251, +19731616, -7089918, 20123532, 19950660, -13228499, -65786016, -8760660, 2772938, -7839389, 39688720, +41633804, 29070486, 41371808, -10602127, 19496468, -16209743, 27679990, 19429358, -32442572, 41181220, +-42405824, -36101884, -34027952, 10934987, 25752624, 21461414, 7258495, -26554710, 24693914, 3524021, +-8740795, -11313481, 1547799, 23327578, -17875118, -7089381, 35584340, 6664179, 16327855, 3218541, +1825361, 8850854, -13305809, 7334731, -5377836, 386010, 3739306, -3309272, -6845641, -4463008, +-5978595, -13358959, 3125126, 12620761, -2385318, 12903692, 10004053, -8060043, -6373195, -5942088, +8006893, 5084705, -16334834, -9399536, 963683, 936303, -2344515, 2316598, 10889353, -128312, +8680666, 1026497, -6244346, -25970056, -49162344, 10479183, 18284212, -2536178, 25090662, 9680319, +-30969936, -7728794, 6725919, 7763691, 8673686, -6169184, 14525043, 1340567, -9157944, -4141422, +5248987, 20611012, 26866094, 20327006, 32196686, -30735322, -8444443, -7895224, -31434328, -7458211, +5548561, 1714766, 3631932, -12469364, -14107894, 16148003, 36172216, -16960288, 18731426, -12077448, +4962298, -11132018, -1802276, -28004260, -10111427, -1509681, -38807712, -22670448, -37977176, -32076426, +21443698, 50331648, 40214852, 1264868, -2398202, 221728, -8910983, -17191680, -60797948, -20279224, +-8615704, 5055714, 2731599, -21413634, -14899778, 7984344, 26934814, 16076063, 8767102, 17614734, +30195230, 11856257, -29972966, 23111220, -17701708, -9256728, 17963700, 40227736, 8767639, 51556252, +-12151536, -53436372, -6068252, -17193290, -32693828, 49573048, 14161581, 16183974, 18254, -4321811, +14434848, 11903502, 800475, -1920387, -8477192, -1648194, -2438468, 13610751, 16445430, 19600620, +-2107218, -633508, -676457, -620623, 12899934, -5400922, -4179003, -7423314, -5786395, 7359964, +-1383516, -139050, 2270964, 4730370, 7625715, 9400610, -1194001, -5427765, -9564892, 4937602, +1917166, 4664872, 12182675, 10699300, -5262946, 2784750, 5545877, -9273908, -2783676, -2037425, +-8924405, -4029216, -295279, 8314520, -21051246, -34443492, 21228950, -3394098, -20825222, 9968619, +22514218, 19487340, -40233644, -34765612, 8604967, -16185047, 4049617, 19583978, -10747619, -7940858, +32411434, 8750459, -4591857, -10395968, -9287867, 12124156, -7377143, -1499481, -1028645, -13288092, +-5183489, -22068078, -29364154, 10390063, 15913928, -18568218, 13444858, 9178345, -6468758, -12904766, +1897302, 23080080, 13251585, 4098473, -23249194, -25987236, -12708808, 6931004, 28933048, -21816286, +-11594801, -9957882, 17245368, 46675556, 12291123, -45788108, -10241886, -5449240, 23396834, 460635, +12079059, -6039798, -10927471, -10197863, -25971130, 24059334, 25480430, 10232760, 26944478, -8530879, +17397838, -8167417, -19589346, -21659520, -23164906, 4013647, -43299176, 45251240, -2212445, -17275970, +-25068114, -20513300, -1463510, -13454522, -4125853, -23851028, -14770393, -42330124, -11839614, -27910308, +10189273, -9950902, 8152922, 9416179, 10082436, -7044820, 23285166, -5363341, 16848620, 569620, +4001299, -1376000, 7291244, -3666292, -9431211, 1867237, 2619393, 8646843, -14044543, -4937065, +3549791, -13838385, -17717, 5006322, -17286170, -7592429, 4056597, -2440615, -13255343, -20445654, +-12312061, 7405598, -3937948, 9320616, 2201171, 321586, 13785234, 921271, 11850889, 4572530, +7366943, 27734214, 16589311, -7842074, 4184372, 35009352, 26261578, 10012106, 5141613, 16452946, +14889041, -23845658, -34368328, 11627550, 26725434, 38292316, 139586, -8624294, -24023362, -14114873, +16023449, -504659, -20526722, -41261212, -41300944, 8644695, -12485470, 23076322, -47576964, -15721191, +9130564, 6799470, 8931921, -15060840, 6787122, -1307818, -9030169, -1800128, -22395034, 20528334, +25242596, 18821620, -30118458, -16060493, -838056, 10152766, 14966350, 16133508, 12831215, -3410204, +-2259690, -4080219, 21340618, 59531468, 37484328, -31016106, -30618284, -19399830, -39408472, 46275052, +24566140, -14349486, -40878424, -39055212, 44288628, 27315992, 5827734, 34170760, -35618700, -3926674, +2079301, -9144522, 3340411, -13224741, -36035312, 8922258, -27573690, 36710696, 34586296, -13249437, +-6293201, 401579, 3857418, 39071316, 39851928, -63382444, -35478040, -20365662, 7868917, 17812304, +17112760, -24553792, -26456998, -31108448, -3969624, 32270236, 600759, 6429566, -7481296, -34405908, +7811472, -14419816, -18131742, 7876970, 60157460, 20395726, -11409581, -15426449, -14570140, -11904039, +15700790, 18845780, 21637508, -3890704, 13912473, -21301964, 5020280, 7808251, 9575093, -7646116, +4008278, 17859010, -4770635, -5012227, -3134789, 17635136, 11276974, 27436252, 6740415, -9696962, +-7526930, 10198400, 33694556, 27627914, 5574868, -20249698, -25163676, -7978439, -6192269, 5990406, +-12450573, 23312546, -38139848, 33227478, 48988932, 53179748, -59977608, 11013907, -1905892, -5150740, +25354802, -10827613, -17847736, 17576616, 8912057, 36453000, -3770445, -28857886, 813896, -13165685, +21475374, -33155536, -11808476, -15576773, -22164178, 30285962, -22216256, -3135326, 20776368, 12119324, +-7429757, -11567421, -31115428, 4030290, 40795748, 24919400, -1846836, 12182138, -9314173, 33419140, +-22603876, 15454366, -12523051, 20775294, 34367792, -7624104, -22499186, 11092290, -30647276, 50616188, +5815386, -26798448, -9310415, -41831908, 5216238, 60031832, -11052025, -35242356, -24785182, 36828272, +10845329, -19252190, -1123671, 9537512, 20488604, 50604380, -41384156, 18434000, 41275708, -6209986, +-49125836, -47346108, -27926952, 83122112, -60949344, 20666846, -64188824, -30693984, 133539120, 12936978, +-58486180, -55940340, -64764884, 81541568, 10302553, -15316390, -64906084, -15452755, 20020990, 66015796, +-23839752, 7272454, -28724204, 9900973, 39816496, 24526410, -36048736, 17019882, 6336151, 15636365, +13537737, -36253284, 993211, -8506183, -14024679, 7344394, -13616657, -26673894, 10009421, -7761006, +34596500, 5345087, -32389958, -36488968, -11977590, 1187022, 27808302, 21333102, 4618164, -16916802, +6901476, -510027, -13963476, 1184874, 17540110, 15965467, 3513820, -26780732, 6355478, 10784126, +16722455, 15469935, 10601590, 21766358, -56346748, 9863392, -50626928, 22338662, 23922430, 47257524, +20907364, 10828686, 12352326, -14744086, -36152352, -25150254, -23746874, 10122164, 5872294, -6171331, +21592948, 33324114, -14936286, -20955682, 23133230, 4101694, -30861488, -7109782, 13946296, -25458956, +-4518306, 5604396, 12928925, 6887517, 18294414, 31389232, 5520107, -20044076, -2341294, 6033356, +-15936476, -7128572, 14653892, -11171747, -20171850, 27997282, -6790344, -6956774, -11180874, -11028402, +18126910, 4610111, 4117263, 24160802, -11590506, -18694918, -1119376, 1782948, -7958038, 6166500, +-1352378, -6668474, -1240172, -23570244, 5215701, 4597763, -4045322, 12677670, 8531953, 4421669, +5635534, -24342800, 28765006, -10801843, -10464151, 8811125, -26387742, 8564165, -19772956, 2283312, +-15652471, 5057861, 6838662, 10653130, 907312, 9448391, 14223858, -5520644, -3267933, 7903814, +-532039, -5030481, 4299799, 997506, -3338800, -5061082, -4638028, -3042984, 10249939, -9859097, +9939628, 678605, 2653753, 4991289, 2920578, 7274601, -463320, -205085, -4511327, -988916, +-6196564, 12381317, 846109, -5559835, -9126806, -2966749, 4734128, -8860518, 11675332, -5706401, +-14987825, 846109, 6252399, -865973, -513249, 1530619, -7132330, -26132728, 42376296, -2136746, +24011014, -21688512, 2743410, -3882114, 7617662, 6896107, 12890271, -6502044, 9497783, -5819681, +5253282, -888521, 4164508, 10264972, -1221381, 15888695, -6320045, 12018929, 668404, -449898, +-4437775, 7717520, -6062347, 6977711, -4037269, 542777, -3343632, 3848291, -2724083, 9064528, +-2775623, -6248641, 14468134, -9921911, 7580081, 6137509, 2253247, 7058779, -8815957, -6080063, +6656663, 6260452, -3862249, -765578, 7095286, -566936, -9816685, 4400194, -4974646, 5133560, +6888591, 3301219, 2376728, 2290828, -10572062, 5250598, 3013457, -3131031, 3904662, -4920959, +2444373, -2413235, -457951, -1265942, 3723737, 7204808, -9863929, 8894877, -1723356, -3412352, +5094368, -6809671, 3283503, 4922033, -1176284, -2423972, 3405909, -1277216, 2007360, -853625, +-3503083, -470836, 3799972, -930934, 1478006, -705448, -2567854, 1745367, 1540283, 2741800, +-3731790, 3080029, -247497, -1473174, 3557307, -3889630, 6204617, 3230352, -2316061, 6398428, +-480499, -2420214, 255014, -2416993, 3782256, -4059281, 4336843, 1832340, 2333778, 1174674, +-2493766, 2177549, 974421, 579284, 392453, 261456, -1018444, 1227824, -2612414, 3262565, +1263794, -2889976, 10449655, -35759360, -111293344, -16433619, 53932980, 27856084, 131200512, 24330990, +28149752, 17680232, -35443144, -49896244, -35565552, -63940252, -54955716, -31216896, -12846784, 36457292, +99621768, 78989816, 68032816, 38626788, -30762704, -50018116, -36817532, -68898792, -65253976, -20082194, +-9229885, -15310485, 25184614, 39412768, 26053808, 48085916, 37156836, 11291469, 34170224, 6876243, +-5182415, 3049427, -20742544, -54444616, -46282032, -39361764, -55173688, -23181012, 15995532, 10948409, +35175244, 39821328, 34808564, 35711044, 36487896, 23073102, 22573274, 2368675, -20426328, -38086696, +-26024818, -35860828, -47352552, -23387170, -21779780, -17766670, 6587406, 17812304, 17051558, 33292976, +41648296, 20088636, 29329258, 25014964, -7077569, 2807835, 11193759, -13973676, -12661027, -22353694, +-40098888, -40257804, -31987842, -33121178, -6584185, 13799193, 9174050, 26213796, 39355860, 31019328, +28635620, 29444686, 19611894, 6410239, 1766305, -9224516, -17289928, -18564460, -27628988, -34916472, +-37164352, -31993212, -28748364, -16441135, 3605625, 18033494, 41303088, 54681912, 47960828, 39767104, +33712808, 19489488, 3999688, -16940962, -34868692, -47509316, -49798000, -54880556, -40511744, -16920024, +-4352413, 11444477, 32559074, 42089604, 45386532, 46777024, 39070244, 16564078, -1279900, -12120935, +-26682484, -34649112, -32581086, -28914256, -20886962, -8549132, 995359, 11500849, 14865419, 11462194, +12537010, 10005663, 6784975, 5341866, 5468567, 1833414, 1801202, -470836, -2814277, -3337190, +-2980707, -4291746, -5121749, -5400922, -4730907, -3991635, -2706366, -787590, 926102, 956167, +603980, 410169, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -3556770, -2687039, 1690070, -3508988, -618475, 4480188, 1328756, 1105954, 2470143, -584652, 675384, --1165547, -4686346, -1841467, -233539, -1034013, 1345935, -1450625, -455803, -3969087, -6442, -684510, -2804077, -609885, -3539590, -1258962, -1129576, -4282620, -1969243, 1363115, 1862942, -4799626, 2837900, 6131603, -670552, -1000191, 892816, -2115808, 5325223, 313533, 2511482, -4226248, 733903, -1712618, 1721208, -2259690, -3012920, -756451, -1308891, -1665374, -5558225, --1797981, 14496, 862752, 1642825, 459562, 2807298, -3152506, 2474975, -25233, 604517, -1755568, -2205466, -4909685, -2129230, 2083059, 3048890, 2319819, 179315, 2365453, 1780264, -3218541, 1602560, 1387274, -2146947, 161598, -363462, -432181, -1831804, -2245194, -987843, --522375, -223875, -1731409, -4832, 244276, 654983, 157840, 1221918, -674310, 544387, --1083942, -1656247, 808528, -260919, -41876, 1112933, 793495, 971736, 70330, 70867, --946503, 537945, 176094, 308164, -139050, 1513439, -329639, 55835, -661425, -566936, --743566, 624918, -501974, -1437203, -2571075, 2444910, -3954054, -2429878, 6368900, -1031329, -5630702, -2879776, 548145, 2785286, 1240172, 186831, -3778498, -5360656, -5592048, 602906, -145492, -1582696, 760746, -4950487, 9863392, 1115618, -5483600, 1460289, -2871723, -3128884, -2944200, 4182225, -60130, 941672, 1999307, -302258, 23622, 3283503, -1797444, -802085, -199179, 5979132, -115964, -699006, -2257005, -3532074, 1844689, -871342, -3623342, -1637993, --4362613, 585726, -3956739, 89657, -2995740, -990527, -2634426, -5487895, -2247342, -344671, -5184026, 762357, -1496259, 2825015, 4747013, 716186, -6458557, 2976412, -14496, 1207960, -2125472, -1502165, 4098473, -2042794, -3653944, -3812320, -6749541, 631360, -2302639, -2396592, --3039763, -3187403, -181999, -3476776, 1103807, -543313, -1972464, -731755, -2228551, 47245, --96100, -2557116, -1061394, 1036698, -370441, 165356, 575526, 239981, 439697, 324807, --693637, -2289755, -411243, -859530, 646393, -293132, 271120, -438624, 19864, -35433, --495532, -1437740, -1180042, -195421, -520228, -554588, -462783, -1077500, -397821, -4952098, -8290361, -2076080, -7517804, 582505, 2578591, 245887, 2377265, 1941325, -5949067, 2137283, --1376537, -231391, 255014, -1079111, 4563403, -1394791, -2941516, -247497, 3650185, 2300492, -1364726, 2149631, 8829916, 2338610, -3009698, 3993246, -3677029, 1234803, -2964064, 8299488, -1307281, -2686502, -1609539, -2693481, -922881, 5509370, -4374961, -3690451, -1113470, 4564477, -2625299, -4203163, 1204738, 958851, -2452426, 129923, -9014063, 3011846, -2067490, -1716913, --5711233, 8682276, 496069, -4518843, -3546569, -4435091, 348966, -954557, 491237, -24159, --5199058, 6873022, -3876208, -3557844, 2724620, 736587, 2705830, -1927367, -401579, -4227859, -387084, 924492, -5369246, -4008278, 396748, -3741990, 1353989, -3346853, -944893, -943819, -2392834, -4322885, -4491999, -918586, -712428, -1072668, -289373, -1937030, -491237, -1409823, --1162862, -913754, -1401233, -1694365, -153545, -2275259, 603980, -1509681, -5906, 144955, --547608, -856846, -118112, -603443, 1174137, -178778, -992137, -58519, -1753420, -343597, --1075352, 86436, 235686, -1202591, 7194607, 223338, 1556389, -5951214, 1830193, 3419331, -2495913, -249108, -2984466, 7737384, 1344862, -1541356, 3710852, 3032247, -3616899, 4741107, --3187403, 7818451, 1108638, 6978248, -761283, 1231582, -2736431, -7900056, 855235, 162135, -271120, -1365263, 1626182, 4172024, -1046898, -4057134, -2685965, -5770826, -1596117, -2841658, --3052648, 532039, 1989107, 3134789, -3710852, 2589865, -2483565, -3085934, -416612, 2649995, -496606, 657667, -5770826, -5567352, -1055488, -1650878, -4219269, 9196062, 4268661, -580894, -1773285, 3696356, -9276592, -4692789, 6222871, -3468186, 5836861, 1324997, -1214939, -6225018, --4594005, 7403987, 3923453, 7000797, -7351374, -509491, -5098126, -406411, 1814087, -2717641, -867047, 545461, -4576288, 4112968, 461709, 623307, -745177, -8152385, 886911, -1962263, --2564632, -2551211, -492311, 1418413, -1312113, 632434, -2866354, -607201, -1312113, 1833414, --351650, -220654, -928787, 66035, -970663, 626528, -1617055, -775778, 537408, -461172, --98784, -102005, -10201, 753767, 472446, -134755, -1133335, -1181116, -1228898, 1062468, -487479, 1548873, 816581, 628139, -12179454, 582505, -1620813, 3218004, -7396471, 2282238, --2537789, 12184822, -3315178, -6409165, -2389613, -5386426, 1592896, 4484483, -1517734, 8498667, -809064, -2588792, 1995549, 981400, 2161442, -3095598, -603980, 3125126, 4955319, 1927904, --1073205, 2350958, -4558571, -1460826, 6248641, 4458176, 7349226, 5206037, -197032, -3835943, --7988103, 5403606, -938987, -5832029, 2923262, -1584306, -8939438, 172872, -7465727, -645319, -6607271, -1193464, -5045513, -2347737, 6306623, -5589900, -9127879, 9131100, -1807108, -2291365, -2078764, 1109175, 1013075, 2152852, 2138894, 1166621, -6747394, -2590939, 5078799, -752156, --2054605, 1503775, 8771934, -4541928, -4988068, -2296197, 3547106, 1787780, -8051990, -3598109, --2819646, -3531000, 2545305, -524523, -679679, -3016141, -2426120, -6361384, -3708168, 1472100, -132607, 954557, -330712, 3690988, 3794067, 629213, 1337346, -1990717, 369367, 139586, -1505386, -2439542, -1171452, 253940, -19327, 1074279, -122407, -1402844, 1314797, 475668, --2731599, -560493, 692564, 436476, 376883, -705985, 276489, -1331977, -1352378, -1142461, -596464, -605054, -729608, -229781, -10652056, -254477, 2814277, 10200010, 10543071, -3435437, -5237176, -6829535, 2210298, 4465156, 6763500, -2010582, 10158135, -1947231, 8612483, -4753992, -7212324, -3671660, -12063489, -2768107, 2981244, -4189741, 4622459, -2641942, -2916820, 1266479, --13219909, -4303557, -297427, -2332167, -818728, -6416681, -2228014, -2315524, 2073396, 13411035, -7728257, -7864085, 4252555, 10715407, 2643016, -3816615, 2656974, -2881923, -3227668, 7700877, -5364414, -5428839, -747861, 5477157, 11515881, -3758097, 6254546, 17087528, 7349226, -7938710, -3169149, 1947768, -9565429, 1385664, -7907572, 3480534, -8614631, -2069101, 338229, 4021700, --5627481, -1595580, -2797634, -5142687, 6575595, 5619428, -324807, -3781719, 1006633, 963683, -920734, 1549410, 4884989, 921271, -6522445, -153545, 7902740, 213138, 1768453, 1560684, -2391223, -2501282, -1156420, -3999152, -1692754, -3682398, -307627, 2144799, -478352, -2097018, -1157494, -446677, 455267, -1147830, -774168, 1447404, -110595, 3498788, 863288, -774168, -1861868, -64961, -826781, -1349157, -1792612, 765041, -946503, -501437, 924492, -107911, -1654099, 80531, -2153389, 4686346, -2295123, -10729902, 2501819, -8615704, 1415729, -2841121, -11188927, -5648956, 1597191, 2958159, 1129040, 4073777, -1620276, 12243878, 979789, -7907035, --1453310, -5825587, -915365, -1882806, -5450851, -6852621, -1742146, -4406637, -2069101, 7839389, -2930242, -6593849, 2602213, -7878581, -1474248, 5762773, -10755135, -9497246, 5437429, 5102958, -2659122, -308701, -6522982, 2607582, -3205656, -6169184, -2835215, 346819, 1978906, 10246181, --4014184, -1147830, 563714, 4782446, 2535641, -3536906, -4554276, -8198556, -2482491, -1811403, --4492536, -5257577, 3376918, 6845104, -10737, -4365835, 7595113, 1461363, -3715147, 935766, --1085016, -978716, -2585034, -1471563, 4939750, -3905199, -5837398, -3375308, 3091840, -4529580, -8028368, 3588982, -1298154, -3281892, -3700114, 2278480, 4997732, 10190884, -2918430, 5217312, -200253, -16106, 585189, 1639067, -1848983, 49929, 1287417, 2147484, -1315871, 1503775, --1125281, 4941360, 1915555, 3716757, 75699, 2527052, -102542, 2244121, -412317, -199716, -2644626, 993211, 351650, 1388885, 341987, 2586644, -1878511, 610422, 1800665, 2378338, -2082522, -782758, -2585570, -35433, 1687922, 365609, 339302, 2138357, 5562520, 10612864, --7915625, -276489, 7226820, -3457986, -5187784, 6646462, -10486700, -639950, 1937567, -1363115, --3912715, -4614943, -2221572, 1816234, -564788, 5021891, 2527588, -1676648, -3997541, -2914135, -8260833, 325881, -10103911, 4712653, -6392522, -6260989, 3836480, 7279433, 7415261, 5633387, --181999, 3808562, 2586107, 3595961, -3314641, -163209, -2989297, -7269232, 3054796, -1873680, --401579, -1599875, 704375, -1197759, 8031052, 14952392, 2458869, -2587181, -47245, -10672457, -10358387, -7275138, -4728222, -7000797, -8587787, 14535780, 791348, -8070244, -2928631, 10031970, -5166309, -7593502, -5683316, 11498701, 925029, 1193464, 14856292, -7090454, 4078608, -5323075, --14750528, 6937983, 7097434, 1194001, -8517457, -1186485, -1852742, 1771674, -3698504, 5408975, -3321620, -11651173, 4947266, 5598490, 7117835, 1243393, -6240051, 10440529, 1764158, -912681, --807454, -3481608, -3684545, -1305670, 652298, 3164317, -15569, 273804, -344134, -2786360, -1170379, 1281511, 546535, -1267552, -783832, 2126546, 741956, 2419677, -1579474, 586800, --3668439, 435939, 3435437, -4602058, 625992, -3600256, 4201552, -1733556, -115427, -2797098, --36507, 2465848, -312459, 3354370, -11811, 5010616, 6408091, 11894375, 10891500, -453656, -9284109, 4161287, 9468255, 9145596, -15250892, 5500243, -4944581, -6609418, -4822712, -1458678, --9729712, -2055142, 2362769, -8326331, -17064442, 3879966, -1212255, -15381352, -11286637, -10082973, --5633924, 528281, -2896419, 3629247, -2037962, 6088116, 11902965, -6839736, 4042638, -2700461, --5466957, -3990562, 718333, -1187559, -501437, 8856223, -375273, 8928163, 11584601, 3445638, -4983236, 7656853, -1013075, 1536525, -11454678, 10684268, -9343701, -3302293, -2982855, 932545, --2588792, -8923868, -7858180, -17226040, 15586973, -17596482, -17049946, 2866891, 16346646, 5788006, --2120640, -4128001, 7514046, -8268349, 9400610, -2761664, 1189706, 955630, -6251325, 6541235, --7384123, -6040335, -715649, 2347737, -7054484, -1125818, 3775813, -581968, -1942399, 5024038, --3346853, -6350109, -1470489, 3171297, -4209068, -2476049, -2886755, -664646, 1891933, -1384053, -556198, -1076426, -2317672, 629213, -1497870, 1439351, -1564979, 2095944, -660888, 3934190, --590558, 1504849, 2138357, -1402844, -2703682, -311385, -681826, -186831, -853625, 1811939, -68183, 2352032, -2161442, 810675, -4604742, 173409, 167504, -1711545, 1357747, 7137699, -9298604, 9294846, 10117869, 23848342, 10714870, 13631689, -6730214, 22075058, -12597676, 610422, -4872104, -96100, -8295730, 2760590, -2287607, -18811420, 7138236, -4734665, 2028835, -1757715, --6226092, 17180, 5604933, -7592966, -3935801, -1178969, 4434554, -11471858, 7282654, 2752000, --10510859, -815507, 4300336, -9526237, 3582003, -11425687, 5287642, -973347, -3688303, -436476, --7458211, 9613211, 11361799, -10813654, -6173479, 4917201, -3843459, 3029026, 2749853, 736587, -375810, 13106630, -3292093, -8745627, 8122320, -324807, -6880001, -5779416, -10871099, 2107755, -2980707, 5450851, 5237176, -5020280, -8443369, 4741107, 2377265, 16380468, 1737314, -2020782, -425202, 1103270, -4820027, -2152316, -6045704, 6715182, 3887482, 4376572, -1273458, -10456635, --9529996, -3118683, -837519, -3750580, -6601365, 1869385, -2885144, 4328790, 769873, -691490, -2696703, 2793876, 4444755, 4164508, 3358665, -18790, -989990, 1191317, 2989834, 2311229, --1322850, -1252520, -832150, 768262, -2147, -816044, 59056, -5144297, 639413, 3371549, -2586107, -4007205, -2881386, 5760625, 3087008, 5712844, 2261837, -4164508, 3969624, -1013075, --3147674, 620623, -4495220, -2467996, -1140851, 1729798, -897111, -12882218, -14477261, 24143622, -16834124, 21583284, 1373316, -13860396, 4876936, 11261404, 8016020, -3540664, -8771934, -2585570, --3228205, -4260071, -7553237, -3034395, -6345278, 16093242, 2567317, 2652142, 115964, 932008, -1703491, -5958194, 10649371, 6010270, -642098, 3868155, -1524713, 10961293, 2014877, -978179, --17951890, -1334661, 1120450, 1702955, -3367791, 2237678, -8507256, 14559402, 11792370, 11381126, -9932649, -7822746, -10828686, 8296803, 2552284, 4053376, -718870, -12605192, -9119289, 721018, --7110855, 77309, -5973226, -2602750, 7551626, 2398739, -5401458, 1925219, -13934485, 420370, --23619636, -12006044, -22316114, 19258096, 17357036, 18526342, 22454626, 10871099, -3721589, -9968619, --3027952, -557272, 3219078, 17787070, -5881958, -13524852, 10307922, -8609799, 4486630, -1976222, --1950452, 4167192, -4013647, -7318088, -2074469, -9009231, -1916092, -8101382, -1866700, 1129040, --720481, -981937, -2206003, -2830920, -5597953, -90731, 2927557, 452045, -2823404, 978179, -4877472, -664646, 3258270, 1784022, 1925219, 1365800, -6471979, 5653788, -2507724, -2058900, -3789772, 1302986, 4190814, 421981, -5390184, -1007170, 106837, 929324, -3303367, -8567386, --11528229, 10162429, 13186623, -6478958, 12243341, 1725503, -5201206, 4923107, -17749490, -5508296, -5004174, -5656472, -10885595, -20515448, 10077067, -8816494, 2371359, 13287018, 3187940, 15493021, -11851962, 6737193, 2542621, -9151502, -2687039, -4791573, 836982, 8628052, 4496831, 1780264, -7365869, 21065204, -1101122, -17918066, -7868917, 2894271, 4300336, -1027034, 443455, 1695438, --7643968, 469762, -16865262, 3792456, -17643188, -6433861, -13662291, 6725919, -6816113, -11210402, -17104708, 4796942, 1393717, -7699266, -10262824, 2561948, 4066260, 1506997, 5573257, -8746701, -19229642, -23350126, 6073621, -9732933, -14173929, -7940858, 12238509, 3688303, -13287555, 9386651, --10581726, 25936234, -2418067, -2847027, -12617003, 1510218, -16831440, -9029632, 22453552, -9038759, --10197863, -6658810, 6713571, 843961, 9517111, 4744328, 4975183, 6937446, 3769908, -636192, -716186, 3309272, 1417339, -1833951, 5574868, -1750736, -1942936, -4201015, -3773666, -1694902, -2057289, -3307125, 243739, 1618129, -1365263, 1411434, 260919, 5502390, 2882997, -6442, --1122597, 10201, -400506, 3288334, -2923262, 2983392, -825171, 1321239, 4609037, -1458678, -241055, -635118, -2319819, 5646272, -795106, 24395414, 25103546, 23678154, 5052492, -6350109, --3961034, -15255187, 12387223, 363998, 7268696, -4565014, 2336462, -5578626, -4291746, -8821326, -4765803, -9185324, 15083388, -39366060, -11461657, 281857, -11911018, 8460549, -12242804, 2517925, --4730370, 12380243, 2203855, 11917461, 864899, -2813741, -190052, 4362076, -13790066, -9909026, --10726681, -1519345, 13424994, -26479010, 9189083, 23025856, 2832531, -16943110, -665720, -14270566, --13677323, 9470940, -1790465, -11658689, 6481643, 967441, -4344360, -6588480, 3770445, 9570798, -5816997, -13542032, -9884330, 7742216, 11674258, -9535364, -12596602, 6206228, 13079786, -15908559, --549756, -14203457, -19489488, 23181012, -3859028, 3578245, -4350265, 14366129, -3389803, 3514357, --7724499, 12495670, 6933688, 11496554, 13293461, -13252658, -14626511, -5961952, -2803540, -8784819, --22006876, 2422362, 1196685, -14496, -1621887, -3575024, -2961380, 6320045, -556735, -2731062, -5837935, -6440304, -3426310, 2389076, 11464341, -3482145, -3540664, 559956, -1450088, 3960497, --1388348, -639950, -2019172, -3223910, -8053601, -11557220, 2043868, -819265, -8804683, -4403952, -2316598, -3068754, -9975062, -5553393, -670552, -1737314, 795643, 2834142, 1189706, -22549, -8176544, 2822331, 12869870, -4784057, -638340, -19092204, -9030169, -4583804, -16227460, -23199266, --4536559, -7920457, 21370146, 6243272, 31897112, 5556077, -9482751, 3995393, 5851356, -26526254, -1256815, 22816476, 14405857, -15559056, 1852742, 11281268, -21351356, -3632469, -10810970, 8723079, --8513162, 5667746, 1188095, -4410932, 901406, -291521, -7031935, 6956237, -14585172, -5836861, --6404333, -18239116, -4029216, -2607045, 37044, 1061394, -5159867, -5904507, 32584306, 9645960, --13008919, -23475218, -8685498, 2126009, 23475754, -5986111, -3351685, -13501230, -3804267, -9570798, -19194208, -16061030, 17091822, 21772800, -22520124, 14450417, 5270999, -9682467, -8689793, 5143760, -10013179, -48785996, -6726456, -336081, -6969122, 12539694, -6876780, -36532992, -14439680, -10830297, --16726213, -16244103, 2480344, 2866354, -9637370, -8514773, -15471009, 1292785, -5970005, 1023276, --6939057, -7942469, -9073118, 1735167, -2148021, 5011153, -7917236, 3401614, -1329292, -7969849, --16450798, -4297115, -1360431, 4910758, -2685428, -21621402, 3940096, 10060424, 3696893, -762357, --7930657, 7313256, -1522566, -2743410, -13354127, -2485176, -4919885, 10391137, -2108292, 1432372, --423591, 2017024, 6282464, -5224291, -98784, 71941, -2872796, 292595, 2397129, -15560667, --13654775, -5296769, -11154567, -7700877, -3499325, -7027640, -9034464, -7031935, 5352066, 32123134, --1119913, -37751152, -21204790, -23408646, -4525285, -13000329, -710280, -19219978, 31157840, 18515068, --3532611, 24538758, 545998, 26471494, 6186364, -15426986, -21099026, -13265006, -17065516, -7617662, -3921305, 11386495, -3945464, 3683471, -14149770, 2320893, -20324858, -1875827, -1380295, 6853694, --7786776, 32161252, 3915937, -881542, 21122650, -8337606, -15414101, -8926016, 12837120, -1029182, --8876624, 3566434, -395674, 27384174, 6480569, 71404, -10924786, -16546898, -42080480, 2705830, --33498598, 16821776, 56625924, -40679784, -9025874, 9242233, -7340636, -7141457, -11739756, 9556839, --12050068, -39325256, -10815265, -39206072, -8571681, -1099512, -24974698, -3428995, -35786740, 15426986, --3932580, -22388054, 54812372, 4360466, 22117470, 18953154, 30056718, -18616536, -1655173, -11185169, --4486094, -7534447, 14050986, 9290551, 12575127, -26718992, -5824513, -14481556, -19297288, -15677704, --10132365, -1990181, 10043781, 8810589, 5558225, 7805030, -2600066, 2619930, 14545444, -2631204, -14380624, 4531728, -13373454, -3374771, 4126390, -5417028, -2684892, 17635136, -217970, -5127654, -19055160, -8870181, -1880659, -15904264, -4441533, -11031623, 7926899, -8378945, -4366371, -3049964, -2689723, -3588445, 7080254, 419833, 7330436, 2449205, -3537979, -11910481, -66410932, -7089381, --17114370, -18710488, 23934778, 18955302, -23399518, -18524730, 45294188, -5330055, 14565308, 2172717, --2570538, -5417565, -5140002, -14942191, -360240, 5083631, 7947837, 5333276, 16060493, -12939663, --511638, -12612708, -7621420, 4879620, 22865870, 14672145, 20164872, 18118856, -4312147, 6459094, -10750840, -125091, -18916110, -3554622, 25688736, -4784057, -37227164, -16451335, 3832722, -31503586, --13793287, -32278826, -22318260, -20224464, 29457570, 20172924, -6698002, 20193862, 7569343, 28543816, -19013284, 9091372, -50719268, -11396159, 2003602, -44475460, -32711008, -12585865, -8902393, -52065740, -10915123, 28599114, 38225208, 46017352, -15809775, -30194156, -623844, -30459908, -22863184, -42250132, --47153908, -33210834, -28191092, 30926448, 1043677, 6120329, -28675886, -29847338, -26982596, -2784750, -40368936, 51525648, 1024350, -19082540, -14929306, -20962124, -54604604, -24365350, -24543054, -6814503, --2485176, -12449500, 13772886, -214748, -4675609, -19488414, -25662966, -13349295, -14687178, -22424024, --5434744, -5849209, -2686502, -6162205, -10710038, 13276818, 7777649, -1597728, -12817793, 8689793, -14143327, 915365, -13147969, -6806987, 9725417, 2616709, -3368328, -12268037, 9708774, -2625299, --4518306, 1005022, 7403450, 1875827, -2885681, 1075352, 5609764, -20352776, -49432388, 19510426, -2560338, -33547452, 31678068, 15848966, 9878962, -7148973, -29992294, -7355132, 1070521, 29628832, -39228620, 2556043, 10734734, 2811056, 1394791, -1545651, 5451924, -16037408, 55151676, 13523241, --17789218, -17634062, -7835094, 2762738, 27027692, -12662100, -3932043, 363998, 13742822, -12689481, -7301445, 1299228, -2905546, -45017164, -14105209, 14970109, 23652384, 8779450, -4955319, -12666932, --29874182, -2829847, 5001490, -6669011, 616865, -7354058, -19237158, 19949586, -4408784, 7458211, --20587388, -3824669, 52938692, 4495220, -5797132, 6709813, 6962142, 5531918, 26678190, -9199820, --11988864, 20426864, -2201171, 12358232, 7395934, 17898740, -6644315, -19044958, 9982578, -8450885, -1600412, 75348224, 71971304, 32968706, -6376416, -3030636, 9131637, 34534220, 15687368, -9385040, --1093606, -3765076, -19072340, -19581292, 11159936, 6317360, 2912525, 17655536, -2232309, -8687645, -10075993, 5020280, 14858976, -20798380, -17561584, -21130702, 3282429, -9041980, 1249836, -3571265, -7950522, 9693741, 18424336, 11534135, -19523310, -13536126, 7034620, -11132555, -6842420, 2406256, -6372121, -7164006, -19221590, -1213865, 673773, -707596, 8540542, 3247532, -15521475, 5783174, -25109452, 29877940, 21509734, 25671556, 17628694, 23279796, -5996848, -279710, 19184546, 35546760, -3842385, -39765492, -11254962, 7474317, 4684199, -10378788, 28115392, 13403519, 10279467, -10774999, -33080912, -3172907, -229244, -10309532, 17142288, 10944114, -27227946, -39323108, -11753178, 5272609, -1142998, -8441221, -36163624, -4648765, 11470247, 1698123, -12879533, -6000606, -11623255, -14635638, -7180112, 8855149, -23588498, -26361972, -9850507, -32429150, 7409356, 26308822, -25171192, 25247428, --13514651, -15692200, -28135794, -38758320, -43490300, -41189272, -21778706, -1152662, 14029511, 5881421, -13953812, -22269942, -48412336, -19755776, -46589120, -80714248, -31536334, 62977644, 108591272, 63234804, --28167470, -22775138, -98852968, -88778048, 59692528, 9513353, 78796544, 81817520, 84949624, 27913530, --35690640, -43817256, -48958868, -55614456, -9242233, 53196392, 90516976, 28276990, 8204462, -5284421, --47152300, -68229848, -46654620, 7681012, 62023624, 28530930, 39663488, 32351304, 10831371, -25151328, --28183038, 76773, -16291348, 4083977, 29532196, 31857920, 22724136, 3753802, 10795400, -567473, --22492744, 3369402, 6934762, -4381404, 1958505, -7064685, 43321188, 25021942, 26823682, 16122770, --17276506, -40717364, -57894548, 7343857, 17742510, 36765456, 36290864, 47937204, 21980568, -37462316, --47266652, -56312928, -11730093, -1255204, 27839978, 16005196, 7303055, 14925548, -29713658, -82689392, --56781080, -51486996, -13798119, 5148592, 16405701, -6380174, -13462038, -20138564, -3547643, 7641284, --24974162, 34968012, 16813186, 31047782, -68272800, 15462956, 9242233, -21020644, 15320685, -15734613, --7738458, -4717485, -9744744, 29375428, 54209468, -15779710, 10913512, -7589744, 13008382, 27511414, --8403640, -5077725, -14974940, 7865159, -9488656, -29951492, 21858700, 36791228, -4814659, -19370302, --17641578, -38903812, -10642392, 29348586, 20048370, 10162966, -42696808, -24917252, -18577344, 37725920, -32913946, 28679108, -83398600, -55686400, -6668474, 41145248, 88236344, 217433, -105890272, -39073464, -3652870, 35600984, -2801393, 19471234, 14957760, -46450608, -20144470, -12966506, -27625230, 1757179, --51984672, 7983271, 20800526, -63189708, -40169756, -19840064, -7889855, 69535520, -229244, -107248016, -10482941, 14867029, 16550656, 41944112, 19885162, -45964204, 2530273, -2000918, 91822104, 64355788, --53449256, 48680232, -28365574, 19200652, 50849192, 17905182, -27469000, 25116432, -10803990, 6223945, -17849348, -2186138, -18469970, 34320008, -21939766, 25058450, -11541114, 13318694, -3798362, 27520540, --9373766, 21539260, -37780680, -6969658, -31139, -5408438, 12714714, 23336704, -23822036, 48530984, --18694918, -17289928, -32896766, 23989002, 51968568, 9697499, -67282272, 4991289, -14711874, 32456530, -16773995, 14338211, -26677116, -2422899, -16753594, 15855946, -6449431, -11470247, -3345780, 21658446, --4701379, -14345191, -16090558, 11970074, 2684892, 11347840, -6748468, -409096, -12130061, -1708860, --1904281, 5333276, 2784750, 12815646, 23630374, -56464860, 8009577, -41460392, 7550016, 35193500, -31114890, 10187662, -20179904, 4037269, -11993696, -2969970, -14880988, -10995653, 7636452, 2054605, --21660594, -2496987, 11260867, -2410014, 1265942, 4076998, -13819594, -13685913, -364535, 9049496, -1196148, -22024592, 1830730, 11289322, 3541201, 2621004, 23030152, -2543158, -6148246, 8253317, -8814347, -15585899, -17283486, 12806519, 2473364, -13272523, 8902930, 3853123, 4310537, -9286793, -3733400, 10436234, 1253594, -13066901, 17713518, -2157684, -19870666, 593779, 15538655, 4840965, --13005698, 11823508, 3914326, -18129056, 7446937, 927713, 18500034, -16777216, 1505386, 12744242, --29372744, 932545, 12676059, -492848, 8784819, -4888210, -18804440, 2491618, -19897510, 18670222, -9640054, 5260261, -7395397, -7800735, 15425912, -13301514, 13765370, 15117748, -21626770, -7023882, -925565, 16740172, 261993, -9711458, 6202470, -11761231, -704375, 1699196, 9887015, 672699, -1626719, -6079526, 10291279, -3447785, -12005507, 10916733, -4847408, 4706211, -2718178, 7870528, -9948755, -11426224, 2001455, -6193880, 2695092, -6293738, 22121766, -6256157, -12404402, 9975062, --5584531, -1883343, -6307697, 6519761, 6028524, -8950712, 5013301, 8705362, -4500589, 574989, --12336757, -27938226, 45817100, 6478422, 20728586, -17812840, 7931731, -3845070, 5557151, 5027259, --7623567, 3100967, 8421357, -4804458, 18295486, 853088, 635118, 6243809, 6014028, -644245, --4607963, 7834021, -1161252, -5345624, -1055488, 7873749, -8402030, 1853278, 3882114, -10711648, -13502840, -2623688, -6415608, 20695300, -8434779, -12096775, 9548249, 5305895, -5632850, 9018894, -7233262, -2418067, -2835752, -1531156, 2761664, 5226975, 3086471, 48855, -3491809, 10716480, --11249056, 10281078, 1667521, -1150514, 2918967, 3325379, 3382824, 559956, -10003516, 2930242, -8763344, -6080063, 46708, 113280, 6693707, -557809, -2495376, 10107132, -5003637, 5480915, --10282152, -3718368, 10110890, -9429064, 9723806, -2383707, 6428493, 7873749, -8722005, -2865817, -10964515, -8968429, -404264, 1269163, 3368328, 941135, -1166621, 532576, 886374, 5158256, --4218732, 1240172, 3275450, -188442, -2149631, 694174, 1951526, -298500, 716723, -1761474, -2334315, 3272228, -5411659, -733903, 9549860, -4451734, 2774549, -559420, 5470715, 1672353, --2923262, 747861, -525060, -3015067, -2127620, 11326366, -1839857, -2422899, 1664837, 1390496, --809064, 2521146, 4670240, 291521, 1260036, 573378, -921807, 835908, 1413044, -1984812, -1545115, 8590, 10660109, -37832220, -120885072, -6185827, 65093452, 29196114, 138708112, 11800423, -29266444, 1187559, -40491876, -50996296, -34554084, -62139048, -43487616, -27359478, 954020, 47391208, -93382256, 68718400, 59799368, 19458886, -32556388, -47795468, -42979736, -50644644, -56171192, -22781580, --10801843, -4932770, 27354110, 36331128, 27379880, 50802484, 32779728, 12150462, 34064996, 773094, --14861124, -9822053, -30663382, -62810676, -38213396, -36779416, -37527276, 1941325, 17414482, 12051141, -46097348, 37824704, 26032334, 37204080, 39528732, 11202348, 11815455, -4227859, -34138548, -47387448, --36257576, -47494284, -33822868, -11800423, -8411693, 2922188, 25799332, 20236276, 18209588, 36506148, -30118458, 22183506, 37643776, 10334228, -7799661, -1559610, -15196131, -32760936, -19117974, -41445360, --52455508, -30878668, -26141856, -11322071, 30341260, 41053444, 38206420, 44167296, 36264020, 20668456, -19840064, 9667435, -4351876, -11218991, -21153788, -31132070, -31261994, -35234300, -37091876, -31636730, --10875931, -3725347, 12364137, 31836446, 35336844, 35067872, 40862320, 32592896, 24300924, 20308216, -6562710, -15809238, -28300076, -45917496, -58760520, -54905788, -43640624, -21888764, 5446556, 29463476, -40306656, 46540804, 48375292, 41862508, 29458644, 15112916, -9759776, -23766738, -31585726, -36478232, --32076426, -24023900, -16726750, -6840273, 7540352, 10192494, 13710609, 15955267, 14025216, 11304354, -8856759, 6091874, 5172215, 2390149, -1968706, -3034395, -3290482, -4902169, -5582921, -6993281, --8396124, -9071508, -7470022, -5532455, -3078418, 76236, 4412542, 5966247, 4590783, 2843805, -1946694, 1621350, 0, 0, 0, 0, 0, 0, }, +2687039, 1690070, -3508988, -618475, 4480188, 1328756, 1105954, 2470143, -584652, 675384, +-1165547, -4686346, -1841467, -233539, -1034013, 1345935, -1450625, -455803, -3969087, -6442, +684510, -2804077, -609885, -3539590, -1258962, -1129576, -4282620, -1969243, 1363115, 1862942, +4799626, 2837900, 6131603, -670552, -1000191, 892816, -2115808, 5325223, 313533, 2511482, +4226248, 733903, -1712618, 1721208, -2259690, -3012920, -756451, -1308891, -1665374, -5558225, +-1797981, 14496, 862752, 1642825, 459562, 2807298, -3152506, 2474975, -25233, 604517, +1755568, -2205466, -4909685, -2129230, 2083059, 3048890, 2319819, 179315, 2365453, 1780264, +3218541, 1602560, 1387274, -2146947, 161598, -363462, -432181, -1831804, -2245194, -987843, +-522375, -223875, -1731409, -4832, 244276, 654983, 157840, 1221918, -674310, 544387, +-1083942, -1656247, 808528, -260919, -41876, 1112933, 793495, 971736, 70330, 70867, +-946503, 537945, 176094, 308164, -139050, 1513439, -329639, 55835, -661425, -566936, +-743566, 624918, -501974, -1437203, -2571075, 2444910, -3954054, -2429878, 6368900, -1031329, +5630702, -2879776, 548145, 2785286, 1240172, 186831, -3778498, -5360656, -5592048, 602906, +145492, -1582696, 760746, -4950487, 9863392, 1115618, -5483600, 1460289, -2871723, -3128884, +2944200, 4182225, -60130, 941672, 1999307, -302258, 23622, 3283503, -1797444, -802085, +199179, 5979132, -115964, -699006, -2257005, -3532074, 1844689, -871342, -3623342, -1637993, +-4362613, 585726, -3956739, 89657, -2995740, -990527, -2634426, -5487895, -2247342, -344671, +5184026, 762357, -1496259, 2825015, 4747013, 716186, -6458557, 2976412, -14496, 1207960, +2125472, -1502165, 4098473, -2042794, -3653944, -3812320, -6749541, 631360, -2302639, -2396592, +-3039763, -3187403, -181999, -3476776, 1103807, -543313, -1972464, -731755, -2228551, 47245, +-96100, -2557116, -1061394, 1036698, -370441, 165356, 575526, 239981, 439697, 324807, +-693637, -2289755, -411243, -859530, 646393, -293132, 271120, -438624, 19864, -35433, +-495532, -1437740, -1180042, -195421, -520228, -554588, -462783, -1077500, -397821, -4952098, +8290361, -2076080, -7517804, 582505, 2578591, 245887, 2377265, 1941325, -5949067, 2137283, +-1376537, -231391, 255014, -1079111, 4563403, -1394791, -2941516, -247497, 3650185, 2300492, +1364726, 2149631, 8829916, 2338610, -3009698, 3993246, -3677029, 1234803, -2964064, 8299488, +1307281, -2686502, -1609539, -2693481, -922881, 5509370, -4374961, -3690451, -1113470, 4564477, +2625299, -4203163, 1204738, 958851, -2452426, 129923, -9014063, 3011846, -2067490, -1716913, +-5711233, 8682276, 496069, -4518843, -3546569, -4435091, 348966, -954557, 491237, -24159, +-5199058, 6873022, -3876208, -3557844, 2724620, 736587, 2705830, -1927367, -401579, -4227859, +387084, 924492, -5369246, -4008278, 396748, -3741990, 1353989, -3346853, -944893, -943819, +2392834, -4322885, -4491999, -918586, -712428, -1072668, -289373, -1937030, -491237, -1409823, +-1162862, -913754, -1401233, -1694365, -153545, -2275259, 603980, -1509681, -5906, 144955, +-547608, -856846, -118112, -603443, 1174137, -178778, -992137, -58519, -1753420, -343597, +-1075352, 86436, 235686, -1202591, 7194607, 223338, 1556389, -5951214, 1830193, 3419331, +2495913, -249108, -2984466, 7737384, 1344862, -1541356, 3710852, 3032247, -3616899, 4741107, +-3187403, 7818451, 1108638, 6978248, -761283, 1231582, -2736431, -7900056, 855235, 162135, +271120, -1365263, 1626182, 4172024, -1046898, -4057134, -2685965, -5770826, -1596117, -2841658, +-3052648, 532039, 1989107, 3134789, -3710852, 2589865, -2483565, -3085934, -416612, 2649995, +496606, 657667, -5770826, -5567352, -1055488, -1650878, -4219269, 9196062, 4268661, -580894, +1773285, 3696356, -9276592, -4692789, 6222871, -3468186, 5836861, 1324997, -1214939, -6225018, +-4594005, 7403987, 3923453, 7000797, -7351374, -509491, -5098126, -406411, 1814087, -2717641, +867047, 545461, -4576288, 4112968, 461709, 623307, -745177, -8152385, 886911, -1962263, +-2564632, -2551211, -492311, 1418413, -1312113, 632434, -2866354, -607201, -1312113, 1833414, +-351650, -220654, -928787, 66035, -970663, 626528, -1617055, -775778, 537408, -461172, +-98784, -102005, -10201, 753767, 472446, -134755, -1133335, -1181116, -1228898, 1062468, +487479, 1548873, 816581, 628139, -12179454, 582505, -1620813, 3218004, -7396471, 2282238, +-2537789, 12184822, -3315178, -6409165, -2389613, -5386426, 1592896, 4484483, -1517734, 8498667, +809064, -2588792, 1995549, 981400, 2161442, -3095598, -603980, 3125126, 4955319, 1927904, +-1073205, 2350958, -4558571, -1460826, 6248641, 4458176, 7349226, 5206037, -197032, -3835943, +-7988103, 5403606, -938987, -5832029, 2923262, -1584306, -8939438, 172872, -7465727, -645319, +6607271, -1193464, -5045513, -2347737, 6306623, -5589900, -9127879, 9131100, -1807108, -2291365, +2078764, 1109175, 1013075, 2152852, 2138894, 1166621, -6747394, -2590939, 5078799, -752156, +-2054605, 1503775, 8771934, -4541928, -4988068, -2296197, 3547106, 1787780, -8051990, -3598109, +-2819646, -3531000, 2545305, -524523, -679679, -3016141, -2426120, -6361384, -3708168, 1472100, +132607, 954557, -330712, 3690988, 3794067, 629213, 1337346, -1990717, 369367, 139586, +1505386, -2439542, -1171452, 253940, -19327, 1074279, -122407, -1402844, 1314797, 475668, +-2731599, -560493, 692564, 436476, 376883, -705985, 276489, -1331977, -1352378, -1142461, +596464, -605054, -729608, -229781, -10652056, -254477, 2814277, 10200010, 10543071, -3435437, +5237176, -6829535, 2210298, 4465156, 6763500, -2010582, 10158135, -1947231, 8612483, -4753992, +7212324, -3671660, -12063489, -2768107, 2981244, -4189741, 4622459, -2641942, -2916820, 1266479, +-13219909, -4303557, -297427, -2332167, -818728, -6416681, -2228014, -2315524, 2073396, 13411035, +7728257, -7864085, 4252555, 10715407, 2643016, -3816615, 2656974, -2881923, -3227668, 7700877, +5364414, -5428839, -747861, 5477157, 11515881, -3758097, 6254546, 17087528, 7349226, -7938710, +3169149, 1947768, -9565429, 1385664, -7907572, 3480534, -8614631, -2069101, 338229, 4021700, +-5627481, -1595580, -2797634, -5142687, 6575595, 5619428, -324807, -3781719, 1006633, 963683, +920734, 1549410, 4884989, 921271, -6522445, -153545, 7902740, 213138, 1768453, 1560684, +2391223, -2501282, -1156420, -3999152, -1692754, -3682398, -307627, 2144799, -478352, -2097018, +1157494, -446677, 455267, -1147830, -774168, 1447404, -110595, 3498788, 863288, -774168, +1861868, -64961, -826781, -1349157, -1792612, 765041, -946503, -501437, 924492, -107911, +1654099, 80531, -2153389, 4686346, -2295123, -10729902, 2501819, -8615704, 1415729, -2841121, +11188927, -5648956, 1597191, 2958159, 1129040, 4073777, -1620276, 12243878, 979789, -7907035, +-1453310, -5825587, -915365, -1882806, -5450851, -6852621, -1742146, -4406637, -2069101, 7839389, +2930242, -6593849, 2602213, -7878581, -1474248, 5762773, -10755135, -9497246, 5437429, 5102958, +2659122, -308701, -6522982, 2607582, -3205656, -6169184, -2835215, 346819, 1978906, 10246181, +-4014184, -1147830, 563714, 4782446, 2535641, -3536906, -4554276, -8198556, -2482491, -1811403, +-4492536, -5257577, 3376918, 6845104, -10737, -4365835, 7595113, 1461363, -3715147, 935766, +-1085016, -978716, -2585034, -1471563, 4939750, -3905199, -5837398, -3375308, 3091840, -4529580, +8028368, 3588982, -1298154, -3281892, -3700114, 2278480, 4997732, 10190884, -2918430, 5217312, +200253, -16106, 585189, 1639067, -1848983, 49929, 1287417, 2147484, -1315871, 1503775, +-1125281, 4941360, 1915555, 3716757, 75699, 2527052, -102542, 2244121, -412317, -199716, +2644626, 993211, 351650, 1388885, 341987, 2586644, -1878511, 610422, 1800665, 2378338, +2082522, -782758, -2585570, -35433, 1687922, 365609, 339302, 2138357, 5562520, 10612864, +-7915625, -276489, 7226820, -3457986, -5187784, 6646462, -10486700, -639950, 1937567, -1363115, +-3912715, -4614943, -2221572, 1816234, -564788, 5021891, 2527588, -1676648, -3997541, -2914135, +8260833, 325881, -10103911, 4712653, -6392522, -6260989, 3836480, 7279433, 7415261, 5633387, +-181999, 3808562, 2586107, 3595961, -3314641, -163209, -2989297, -7269232, 3054796, -1873680, +-401579, -1599875, 704375, -1197759, 8031052, 14952392, 2458869, -2587181, -47245, -10672457, +10358387, -7275138, -4728222, -7000797, -8587787, 14535780, 791348, -8070244, -2928631, 10031970, +5166309, -7593502, -5683316, 11498701, 925029, 1193464, 14856292, -7090454, 4078608, -5323075, +-14750528, 6937983, 7097434, 1194001, -8517457, -1186485, -1852742, 1771674, -3698504, 5408975, +3321620, -11651173, 4947266, 5598490, 7117835, 1243393, -6240051, 10440529, 1764158, -912681, +-807454, -3481608, -3684545, -1305670, 652298, 3164317, -15569, 273804, -344134, -2786360, +1170379, 1281511, 546535, -1267552, -783832, 2126546, 741956, 2419677, -1579474, 586800, +-3668439, 435939, 3435437, -4602058, 625992, -3600256, 4201552, -1733556, -115427, -2797098, +-36507, 2465848, -312459, 3354370, -11811, 5010616, 6408091, 11894375, 10891500, -453656, +9284109, 4161287, 9468255, 9145596, -15250892, 5500243, -4944581, -6609418, -4822712, -1458678, +-9729712, -2055142, 2362769, -8326331, -17064442, 3879966, -1212255, -15381352, -11286637, -10082973, +-5633924, 528281, -2896419, 3629247, -2037962, 6088116, 11902965, -6839736, 4042638, -2700461, +-5466957, -3990562, 718333, -1187559, -501437, 8856223, -375273, 8928163, 11584601, 3445638, +4983236, 7656853, -1013075, 1536525, -11454678, 10684268, -9343701, -3302293, -2982855, 932545, +-2588792, -8923868, -7858180, -17226040, 15586973, -17596482, -17049946, 2866891, 16346646, 5788006, +-2120640, -4128001, 7514046, -8268349, 9400610, -2761664, 1189706, 955630, -6251325, 6541235, +-7384123, -6040335, -715649, 2347737, -7054484, -1125818, 3775813, -581968, -1942399, 5024038, +-3346853, -6350109, -1470489, 3171297, -4209068, -2476049, -2886755, -664646, 1891933, -1384053, +556198, -1076426, -2317672, 629213, -1497870, 1439351, -1564979, 2095944, -660888, 3934190, +-590558, 1504849, 2138357, -1402844, -2703682, -311385, -681826, -186831, -853625, 1811939, +68183, 2352032, -2161442, 810675, -4604742, 173409, 167504, -1711545, 1357747, 7137699, +9298604, 9294846, 10117869, 23848342, 10714870, 13631689, -6730214, 22075058, -12597676, 610422, +4872104, -96100, -8295730, 2760590, -2287607, -18811420, 7138236, -4734665, 2028835, -1757715, +-6226092, 17180, 5604933, -7592966, -3935801, -1178969, 4434554, -11471858, 7282654, 2752000, +-10510859, -815507, 4300336, -9526237, 3582003, -11425687, 5287642, -973347, -3688303, -436476, +-7458211, 9613211, 11361799, -10813654, -6173479, 4917201, -3843459, 3029026, 2749853, 736587, +375810, 13106630, -3292093, -8745627, 8122320, -324807, -6880001, -5779416, -10871099, 2107755, +2980707, 5450851, 5237176, -5020280, -8443369, 4741107, 2377265, 16380468, 1737314, -2020782, +425202, 1103270, -4820027, -2152316, -6045704, 6715182, 3887482, 4376572, -1273458, -10456635, +-9529996, -3118683, -837519, -3750580, -6601365, 1869385, -2885144, 4328790, 769873, -691490, +2696703, 2793876, 4444755, 4164508, 3358665, -18790, -989990, 1191317, 2989834, 2311229, +-1322850, -1252520, -832150, 768262, -2147, -816044, 59056, -5144297, 639413, 3371549, +2586107, -4007205, -2881386, 5760625, 3087008, 5712844, 2261837, -4164508, 3969624, -1013075, +-3147674, 620623, -4495220, -2467996, -1140851, 1729798, -897111, -12882218, -14477261, 24143622, +16834124, 21583284, 1373316, -13860396, 4876936, 11261404, 8016020, -3540664, -8771934, -2585570, +-3228205, -4260071, -7553237, -3034395, -6345278, 16093242, 2567317, 2652142, 115964, 932008, +1703491, -5958194, 10649371, 6010270, -642098, 3868155, -1524713, 10961293, 2014877, -978179, +-17951890, -1334661, 1120450, 1702955, -3367791, 2237678, -8507256, 14559402, 11792370, 11381126, +9932649, -7822746, -10828686, 8296803, 2552284, 4053376, -718870, -12605192, -9119289, 721018, +-7110855, 77309, -5973226, -2602750, 7551626, 2398739, -5401458, 1925219, -13934485, 420370, +-23619636, -12006044, -22316114, 19258096, 17357036, 18526342, 22454626, 10871099, -3721589, -9968619, +-3027952, -557272, 3219078, 17787070, -5881958, -13524852, 10307922, -8609799, 4486630, -1976222, +-1950452, 4167192, -4013647, -7318088, -2074469, -9009231, -1916092, -8101382, -1866700, 1129040, +-720481, -981937, -2206003, -2830920, -5597953, -90731, 2927557, 452045, -2823404, 978179, +4877472, -664646, 3258270, 1784022, 1925219, 1365800, -6471979, 5653788, -2507724, -2058900, +3789772, 1302986, 4190814, 421981, -5390184, -1007170, 106837, 929324, -3303367, -8567386, +-11528229, 10162429, 13186623, -6478958, 12243341, 1725503, -5201206, 4923107, -17749490, -5508296, +5004174, -5656472, -10885595, -20515448, 10077067, -8816494, 2371359, 13287018, 3187940, 15493021, +11851962, 6737193, 2542621, -9151502, -2687039, -4791573, 836982, 8628052, 4496831, 1780264, +7365869, 21065204, -1101122, -17918066, -7868917, 2894271, 4300336, -1027034, 443455, 1695438, +-7643968, 469762, -16865262, 3792456, -17643188, -6433861, -13662291, 6725919, -6816113, -11210402, +17104708, 4796942, 1393717, -7699266, -10262824, 2561948, 4066260, 1506997, 5573257, -8746701, +19229642, -23350126, 6073621, -9732933, -14173929, -7940858, 12238509, 3688303, -13287555, 9386651, +-10581726, 25936234, -2418067, -2847027, -12617003, 1510218, -16831440, -9029632, 22453552, -9038759, +-10197863, -6658810, 6713571, 843961, 9517111, 4744328, 4975183, 6937446, 3769908, -636192, +716186, 3309272, 1417339, -1833951, 5574868, -1750736, -1942936, -4201015, -3773666, -1694902, +2057289, -3307125, 243739, 1618129, -1365263, 1411434, 260919, 5502390, 2882997, -6442, +-1122597, 10201, -400506, 3288334, -2923262, 2983392, -825171, 1321239, 4609037, -1458678, +241055, -635118, -2319819, 5646272, -795106, 24395414, 25103546, 23678154, 5052492, -6350109, +-3961034, -15255187, 12387223, 363998, 7268696, -4565014, 2336462, -5578626, -4291746, -8821326, +4765803, -9185324, 15083388, -39366060, -11461657, 281857, -11911018, 8460549, -12242804, 2517925, +-4730370, 12380243, 2203855, 11917461, 864899, -2813741, -190052, 4362076, -13790066, -9909026, +-10726681, -1519345, 13424994, -26479010, 9189083, 23025856, 2832531, -16943110, -665720, -14270566, +-13677323, 9470940, -1790465, -11658689, 6481643, 967441, -4344360, -6588480, 3770445, 9570798, +5816997, -13542032, -9884330, 7742216, 11674258, -9535364, -12596602, 6206228, 13079786, -15908559, +-549756, -14203457, -19489488, 23181012, -3859028, 3578245, -4350265, 14366129, -3389803, 3514357, +-7724499, 12495670, 6933688, 11496554, 13293461, -13252658, -14626511, -5961952, -2803540, -8784819, +-22006876, 2422362, 1196685, -14496, -1621887, -3575024, -2961380, 6320045, -556735, -2731062, +5837935, -6440304, -3426310, 2389076, 11464341, -3482145, -3540664, 559956, -1450088, 3960497, +-1388348, -639950, -2019172, -3223910, -8053601, -11557220, 2043868, -819265, -8804683, -4403952, +2316598, -3068754, -9975062, -5553393, -670552, -1737314, 795643, 2834142, 1189706, -22549, +8176544, 2822331, 12869870, -4784057, -638340, -19092204, -9030169, -4583804, -16227460, -23199266, +-4536559, -7920457, 21370146, 6243272, 31897112, 5556077, -9482751, 3995393, 5851356, -26526254, +1256815, 22816476, 14405857, -15559056, 1852742, 11281268, -21351356, -3632469, -10810970, 8723079, +-8513162, 5667746, 1188095, -4410932, 901406, -291521, -7031935, 6956237, -14585172, -5836861, +-6404333, -18239116, -4029216, -2607045, 37044, 1061394, -5159867, -5904507, 32584306, 9645960, +-13008919, -23475218, -8685498, 2126009, 23475754, -5986111, -3351685, -13501230, -3804267, -9570798, +19194208, -16061030, 17091822, 21772800, -22520124, 14450417, 5270999, -9682467, -8689793, 5143760, +10013179, -48785996, -6726456, -336081, -6969122, 12539694, -6876780, -36532992, -14439680, -10830297, +-16726213, -16244103, 2480344, 2866354, -9637370, -8514773, -15471009, 1292785, -5970005, 1023276, +-6939057, -7942469, -9073118, 1735167, -2148021, 5011153, -7917236, 3401614, -1329292, -7969849, +-16450798, -4297115, -1360431, 4910758, -2685428, -21621402, 3940096, 10060424, 3696893, -762357, +-7930657, 7313256, -1522566, -2743410, -13354127, -2485176, -4919885, 10391137, -2108292, 1432372, +-423591, 2017024, 6282464, -5224291, -98784, 71941, -2872796, 292595, 2397129, -15560667, +-13654775, -5296769, -11154567, -7700877, -3499325, -7027640, -9034464, -7031935, 5352066, 32123134, +-1119913, -37751152, -21204790, -23408646, -4525285, -13000329, -710280, -19219978, 31157840, 18515068, +-3532611, 24538758, 545998, 26471494, 6186364, -15426986, -21099026, -13265006, -17065516, -7617662, +3921305, 11386495, -3945464, 3683471, -14149770, 2320893, -20324858, -1875827, -1380295, 6853694, +-7786776, 32161252, 3915937, -881542, 21122650, -8337606, -15414101, -8926016, 12837120, -1029182, +-8876624, 3566434, -395674, 27384174, 6480569, 71404, -10924786, -16546898, -42080480, 2705830, +-33498598, 16821776, 56625924, -40679784, -9025874, 9242233, -7340636, -7141457, -11739756, 9556839, +-12050068, -39325256, -10815265, -39206072, -8571681, -1099512, -24974698, -3428995, -35786740, 15426986, +-3932580, -22388054, 54812372, 4360466, 22117470, 18953154, 30056718, -18616536, -1655173, -11185169, +-4486094, -7534447, 14050986, 9290551, 12575127, -26718992, -5824513, -14481556, -19297288, -15677704, +-10132365, -1990181, 10043781, 8810589, 5558225, 7805030, -2600066, 2619930, 14545444, -2631204, +14380624, 4531728, -13373454, -3374771, 4126390, -5417028, -2684892, 17635136, -217970, -5127654, +19055160, -8870181, -1880659, -15904264, -4441533, -11031623, 7926899, -8378945, -4366371, -3049964, +2689723, -3588445, 7080254, 419833, 7330436, 2449205, -3537979, -11910481, -66410932, -7089381, +-17114370, -18710488, 23934778, 18955302, -23399518, -18524730, 45294188, -5330055, 14565308, 2172717, +-2570538, -5417565, -5140002, -14942191, -360240, 5083631, 7947837, 5333276, 16060493, -12939663, +-511638, -12612708, -7621420, 4879620, 22865870, 14672145, 20164872, 18118856, -4312147, 6459094, +10750840, -125091, -18916110, -3554622, 25688736, -4784057, -37227164, -16451335, 3832722, -31503586, +-13793287, -32278826, -22318260, -20224464, 29457570, 20172924, -6698002, 20193862, 7569343, 28543816, +19013284, 9091372, -50719268, -11396159, 2003602, -44475460, -32711008, -12585865, -8902393, -52065740, +10915123, 28599114, 38225208, 46017352, -15809775, -30194156, -623844, -30459908, -22863184, -42250132, +-47153908, -33210834, -28191092, 30926448, 1043677, 6120329, -28675886, -29847338, -26982596, -2784750, +40368936, 51525648, 1024350, -19082540, -14929306, -20962124, -54604604, -24365350, -24543054, -6814503, +-2485176, -12449500, 13772886, -214748, -4675609, -19488414, -25662966, -13349295, -14687178, -22424024, +-5434744, -5849209, -2686502, -6162205, -10710038, 13276818, 7777649, -1597728, -12817793, 8689793, +14143327, 915365, -13147969, -6806987, 9725417, 2616709, -3368328, -12268037, 9708774, -2625299, +-4518306, 1005022, 7403450, 1875827, -2885681, 1075352, 5609764, -20352776, -49432388, 19510426, +2560338, -33547452, 31678068, 15848966, 9878962, -7148973, -29992294, -7355132, 1070521, 29628832, +39228620, 2556043, 10734734, 2811056, 1394791, -1545651, 5451924, -16037408, 55151676, 13523241, +-17789218, -17634062, -7835094, 2762738, 27027692, -12662100, -3932043, 363998, 13742822, -12689481, +7301445, 1299228, -2905546, -45017164, -14105209, 14970109, 23652384, 8779450, -4955319, -12666932, +-29874182, -2829847, 5001490, -6669011, 616865, -7354058, -19237158, 19949586, -4408784, 7458211, +-20587388, -3824669, 52938692, 4495220, -5797132, 6709813, 6962142, 5531918, 26678190, -9199820, +-11988864, 20426864, -2201171, 12358232, 7395934, 17898740, -6644315, -19044958, 9982578, -8450885, +1600412, 75348224, 71971304, 32968706, -6376416, -3030636, 9131637, 34534220, 15687368, -9385040, +-1093606, -3765076, -19072340, -19581292, 11159936, 6317360, 2912525, 17655536, -2232309, -8687645, +10075993, 5020280, 14858976, -20798380, -17561584, -21130702, 3282429, -9041980, 1249836, -3571265, +7950522, 9693741, 18424336, 11534135, -19523310, -13536126, 7034620, -11132555, -6842420, 2406256, +6372121, -7164006, -19221590, -1213865, 673773, -707596, 8540542, 3247532, -15521475, 5783174, +25109452, 29877940, 21509734, 25671556, 17628694, 23279796, -5996848, -279710, 19184546, 35546760, +3842385, -39765492, -11254962, 7474317, 4684199, -10378788, 28115392, 13403519, 10279467, -10774999, +33080912, -3172907, -229244, -10309532, 17142288, 10944114, -27227946, -39323108, -11753178, 5272609, +1142998, -8441221, -36163624, -4648765, 11470247, 1698123, -12879533, -6000606, -11623255, -14635638, +7180112, 8855149, -23588498, -26361972, -9850507, -32429150, 7409356, 26308822, -25171192, 25247428, +-13514651, -15692200, -28135794, -38758320, -43490300, -41189272, -21778706, -1152662, 14029511, 5881421, +13953812, -22269942, -48412336, -19755776, -46589120, -80714248, -31536334, 62977644, 108591272, 63234804, +-28167470, -22775138, -98852968, -88778048, 59692528, 9513353, 78796544, 81817520, 84949624, 27913530, +-35690640, -43817256, -48958868, -55614456, -9242233, 53196392, 90516976, 28276990, 8204462, -5284421, +-47152300, -68229848, -46654620, 7681012, 62023624, 28530930, 39663488, 32351304, 10831371, -25151328, +-28183038, 76773, -16291348, 4083977, 29532196, 31857920, 22724136, 3753802, 10795400, -567473, +-22492744, 3369402, 6934762, -4381404, 1958505, -7064685, 43321188, 25021942, 26823682, 16122770, +-17276506, -40717364, -57894548, 7343857, 17742510, 36765456, 36290864, 47937204, 21980568, -37462316, +-47266652, -56312928, -11730093, -1255204, 27839978, 16005196, 7303055, 14925548, -29713658, -82689392, +-56781080, -51486996, -13798119, 5148592, 16405701, -6380174, -13462038, -20138564, -3547643, 7641284, +-24974162, 34968012, 16813186, 31047782, -68272800, 15462956, 9242233, -21020644, 15320685, -15734613, +-7738458, -4717485, -9744744, 29375428, 54209468, -15779710, 10913512, -7589744, 13008382, 27511414, +-8403640, -5077725, -14974940, 7865159, -9488656, -29951492, 21858700, 36791228, -4814659, -19370302, +-17641578, -38903812, -10642392, 29348586, 20048370, 10162966, -42696808, -24917252, -18577344, 37725920, +32913946, 28679108, -83398600, -55686400, -6668474, 41145248, 88236344, 217433, -105890272, -39073464, +3652870, 35600984, -2801393, 19471234, 14957760, -46450608, -20144470, -12966506, -27625230, 1757179, +-51984672, 7983271, 20800526, -63189708, -40169756, -19840064, -7889855, 69535520, -229244, -107248016, +10482941, 14867029, 16550656, 41944112, 19885162, -45964204, 2530273, -2000918, 91822104, 64355788, +-53449256, 48680232, -28365574, 19200652, 50849192, 17905182, -27469000, 25116432, -10803990, 6223945, +17849348, -2186138, -18469970, 34320008, -21939766, 25058450, -11541114, 13318694, -3798362, 27520540, +-9373766, 21539260, -37780680, -6969658, -31139, -5408438, 12714714, 23336704, -23822036, 48530984, +-18694918, -17289928, -32896766, 23989002, 51968568, 9697499, -67282272, 4991289, -14711874, 32456530, +16773995, 14338211, -26677116, -2422899, -16753594, 15855946, -6449431, -11470247, -3345780, 21658446, +-4701379, -14345191, -16090558, 11970074, 2684892, 11347840, -6748468, -409096, -12130061, -1708860, +-1904281, 5333276, 2784750, 12815646, 23630374, -56464860, 8009577, -41460392, 7550016, 35193500, +31114890, 10187662, -20179904, 4037269, -11993696, -2969970, -14880988, -10995653, 7636452, 2054605, +-21660594, -2496987, 11260867, -2410014, 1265942, 4076998, -13819594, -13685913, -364535, 9049496, +1196148, -22024592, 1830730, 11289322, 3541201, 2621004, 23030152, -2543158, -6148246, 8253317, +8814347, -15585899, -17283486, 12806519, 2473364, -13272523, 8902930, 3853123, 4310537, -9286793, +3733400, 10436234, 1253594, -13066901, 17713518, -2157684, -19870666, 593779, 15538655, 4840965, +-13005698, 11823508, 3914326, -18129056, 7446937, 927713, 18500034, -16777216, 1505386, 12744242, +-29372744, 932545, 12676059, -492848, 8784819, -4888210, -18804440, 2491618, -19897510, 18670222, +9640054, 5260261, -7395397, -7800735, 15425912, -13301514, 13765370, 15117748, -21626770, -7023882, +925565, 16740172, 261993, -9711458, 6202470, -11761231, -704375, 1699196, 9887015, 672699, +1626719, -6079526, 10291279, -3447785, -12005507, 10916733, -4847408, 4706211, -2718178, 7870528, +9948755, -11426224, 2001455, -6193880, 2695092, -6293738, 22121766, -6256157, -12404402, 9975062, +-5584531, -1883343, -6307697, 6519761, 6028524, -8950712, 5013301, 8705362, -4500589, 574989, +-12336757, -27938226, 45817100, 6478422, 20728586, -17812840, 7931731, -3845070, 5557151, 5027259, +-7623567, 3100967, 8421357, -4804458, 18295486, 853088, 635118, 6243809, 6014028, -644245, +-4607963, 7834021, -1161252, -5345624, -1055488, 7873749, -8402030, 1853278, 3882114, -10711648, +13502840, -2623688, -6415608, 20695300, -8434779, -12096775, 9548249, 5305895, -5632850, 9018894, +7233262, -2418067, -2835752, -1531156, 2761664, 5226975, 3086471, 48855, -3491809, 10716480, +-11249056, 10281078, 1667521, -1150514, 2918967, 3325379, 3382824, 559956, -10003516, 2930242, +8763344, -6080063, 46708, 113280, 6693707, -557809, -2495376, 10107132, -5003637, 5480915, +-10282152, -3718368, 10110890, -9429064, 9723806, -2383707, 6428493, 7873749, -8722005, -2865817, +10964515, -8968429, -404264, 1269163, 3368328, 941135, -1166621, 532576, 886374, 5158256, +-4218732, 1240172, 3275450, -188442, -2149631, 694174, 1951526, -298500, 716723, -1761474, +2334315, 3272228, -5411659, -733903, 9549860, -4451734, 2774549, -559420, 5470715, 1672353, +-2923262, 747861, -525060, -3015067, -2127620, 11326366, -1839857, -2422899, 1664837, 1390496, +-809064, 2521146, 4670240, 291521, 1260036, 573378, -921807, 835908, 1413044, -1984812, +1545115, 8590, 10660109, -37832220, -120885072, -6185827, 65093452, 29196114, 138708112, 11800423, +29266444, 1187559, -40491876, -50996296, -34554084, -62139048, -43487616, -27359478, 954020, 47391208, +93382256, 68718400, 59799368, 19458886, -32556388, -47795468, -42979736, -50644644, -56171192, -22781580, +-10801843, -4932770, 27354110, 36331128, 27379880, 50802484, 32779728, 12150462, 34064996, 773094, +-14861124, -9822053, -30663382, -62810676, -38213396, -36779416, -37527276, 1941325, 17414482, 12051141, +46097348, 37824704, 26032334, 37204080, 39528732, 11202348, 11815455, -4227859, -34138548, -47387448, +-36257576, -47494284, -33822868, -11800423, -8411693, 2922188, 25799332, 20236276, 18209588, 36506148, +30118458, 22183506, 37643776, 10334228, -7799661, -1559610, -15196131, -32760936, -19117974, -41445360, +-52455508, -30878668, -26141856, -11322071, 30341260, 41053444, 38206420, 44167296, 36264020, 20668456, +19840064, 9667435, -4351876, -11218991, -21153788, -31132070, -31261994, -35234300, -37091876, -31636730, +-10875931, -3725347, 12364137, 31836446, 35336844, 35067872, 40862320, 32592896, 24300924, 20308216, +6562710, -15809238, -28300076, -45917496, -58760520, -54905788, -43640624, -21888764, 5446556, 29463476, +40306656, 46540804, 48375292, 41862508, 29458644, 15112916, -9759776, -23766738, -31585726, -36478232, +-32076426, -24023900, -16726750, -6840273, 7540352, 10192494, 13710609, 15955267, 14025216, 11304354, +8856759, 6091874, 5172215, 2390149, -1968706, -3034395, -3290482, -4902169, -5582921, -6993281, +-8396124, -9071508, -7470022, -5532455, -3078418, 76236, 4412542, 5966247, 4590783, 2843805, +1946694, 1621350, 0, 0, 0, 0, 0, 0, }, { -2763275, -666257, 3242164, -281320, 294205, -4798016, -2411087, 713501, 6369974, -4101157, 1333587, --6607271, 6790880, 452045, 2491618, -775242, 1080184, -1268626, -2324651, -5742372, 2439005, --5757404, -2687039, -3244848, 3278134, 2608119, 1260036, 2718178, 5120675, 343061, -4633196, -3062312, 507343, -208306, 2511482, -911607, -1673964, -6774237, 1111323, -1932198, 1495186, -2863133, -3670587, -1452773, 3364033, 1066763, 410169, -3441880, 8726300, 5266704, 866510, -4231617, 3478924, 3378529, -7950522, 514859, -758599, -2090575, 1968706, 1340567, -1262184, --1467805, -411780, -2362769, 2367064, -878321, 4651987, -149250, -1167157, -2177012, -4037806, --718333, 3140695, -111669, 732829, 3699578, 1022202, 4275640, -66035, 670015, -419296, -4595615, 4076461, 4124779, 911607, 22012, 1843078, -64425, 583579, 113817, 227096, --314069, -1248762, -1048509, -214748, -1204738, 606127, 652298, -504659, 1368484, -507343, --360777, -253403, 579284, 175557, 1227824, 126165, 46708, 119722, 1584306, 787590, --88047, -394063, 102542, -194884, 410706, 1633161, 378494, 2076080, 7222525, -3497177, -2413772, -1988570, -3126736, -1280437, -2164664, 3947075, -3255048, -6040872, -1541893, 1596117, --5036386, -3040300, 5691369, 9834938, -1655710, 3762391, -3369939, -3543885, -156229, 1042066, --431644, -95563, 3649112, -6227166, 2034741, -453119, -1305670, -5247377, 457951, 129923, -2960843, 893890, -4111894, 5431523, -4316442, 5068599, -569083, 926639, 2057289, -586263, --2532957, 3966402, 971200, 5296769, 803696, -4651987, 8452496, 6731825, -2345589, -678605, --1631014, -5864778, -3180423, -956167, -1015223, 2385318, -3238405, 273267, 2313377, 24159, --93952, -360240, -561030, -3193308, 5106179, 181462, -117575, -1594507, -576599, -4671851, --4178466, 1400159, 3404299, -408559, -893890, 18790, -44560, -2379412, 4570919, 651761, -1505386, -1165010, 1239098, 812286, -201863, -54224, -213675, 93416, 1072668, -571231, -674310, 767725, -156229, -150861, 553514, 1260573, 1078574, -746251, 287763, 415001, --622233, -301721, 1701881, -201327, -103079, -1306744, -1259499, -2028835, -788127, -7576323, -9218074, -2070711, -1138166, 6571300, -2637647, 3364033, 14666240, -1817308, 389768, -5681705, --4595615, -7065221, 4016331, -2949569, 1937030, 3811247, -4466229, -3826279, -2815888, 262530, -1401233, -5506685, -2186675, 2328409, 1995549, -2217277, -936303, 3276523, -3487514, 481573, --1757179, -676457, -2442763, 1987496, -2245194, 851477, 1905355, -955630, 6138045, 205622, --887448, -4627828, 497142, 6560026, 865973, 2178085, -6101538, -8698383, -3189013, -7490960, --6615860, -227633, -2882460, -312996, -8015483, 6759742, -7424388, 1029182, 5007395, -4620311, --7755101, -5536750, -1666447, 5064304, 4495220, 6796249, -4079682, -3594888, -2882997, -2483028, -4909148, 1222455, -2095944, -1150514, 2312840, 2632278, 769873, 1185411, 1673964, -424665, --2895345, -513785, -1931662, 664646, 202937, 577136, 525060, 102005, 1154809, 112743, -1353989, 91805, -1092532, 1379221, -1689533, -1118839, 293132, -477278, 1388885, -911070, --691490, -327491, 151398, -602369, -1027571, 872952, -349503, 634045, -872952, -841277, --1026497, -1185411, -757525, -1081795, 8020852, 832687, -3226057, 453656, -2670396, -595927, -5613523, 9414031, -3219615, -3296924, -8543764, 1079111, 2145336, 4858682, -3221762, 5238787, -831076, 8069170, -6476811, 1034013, -12230993, -1351841, 1462973, -2995203, -2749853, -1086627, -4510253, -3699041, -6427956, 1817308, -9431748, -2064806, -4529043, 2072322, -1001264, 3182571, -423591, -7202124, -7764764, 202937, 4143033, 7681012, -1522029, -3140695, 6448357, -7115687, --3857418, 3416647, 3070365, 5078262, -4850629, 168041, 1978369, -3078418, -1022739, 2992519, --4399657, 5731634, -2487323, -1083406, -6118181, -5112085, 2476586, -28991, 131533, -883153, --3746822, 3542274, -2348273, 4408247, -57982, -5872831, -6123550, 2229088, -3069291, 1078574, --8722542, -8369281, -1309965, 7840463, 79457, -1640678, 416075, 1112933, 865436, -381178, -1282048, -4119411, 793495, 669478, 1272921, 1556389, 1782948, 900869, -2265595, 144418, -2059974, 911607, 581431, -1168768, -1366873, 301721, 34360, -496069, 1942399, -63888, --92342, -1346472, 2417530, 1931662, -73014, 144418, -1123671, 656593, 788127, 301721, -155693, 753230, -1006096, 4831302, -13042742, 3058554, -5651640, 4830765, 5515275, -6151467, --11433203, 1637456, -1505923, 7286949, -4337380, 10540387, -4403952, 6984154, -8581345, -3161096, -3617436, 5200132, 1471563, -9127, -5256503, -665720, -4131222, -5164162, 2900714, -4403415, -1755031, 1045288, 2157684, -2491081, 4913980, -890132, 4232154, -921807, -8041253, -1316408, --2558190, 843961, 8070781, 536871, -672162, -389231, -3242700, 2815351, -3055869, 4281546, -4619774, 1701344, 1789391, 8142185, -1988033, -1433982, -6468758, 4654134, 4097399, 891206, -1070521, 886911, 360240, 2408403, 4962835, 3337190, 1905892, 1836099, -1237488, 6481106, -2219961, -1292248, -4931160, 2552821, -1449015, 9448391, 5364414, 1227824, -4316979, -1579474, -7194070, -2745021, 963683, 4198868, -2288144, -2845953, -5668820, 765578, 2107755, -407485, -2765422, -2185602, -809064, -1693828, 2036351, -128849, -604517, -2686502, 685047, 745177, -1670205, 1979443, -622770, 365609, 2168422, -119185, 2200097, -105764, 688805, 3235721, -695248, 3324842, -213138, -670552, -169114, -240518, 147103, 278636, -2436320, 964220, -2019708, 253403, 837519, -549756, -16821240, -9130027, 3398393, -3272228, 6788196, 6773164, -10213432, 4235375, 4140349, 2531346, -12257837, -2731062, -1684164, 1115618, -1217086, 3833795, -2724083, -4702453, -3756486, 3166465, 5985574, 7552700, 6508486, 8577050, -4684736, -4669703, --6215892, 6616934, -3811784, 5469641, -1375463, -269509, -5822902, -3477850, -3329674, 4969814, -6111202, 1092532, 6108517, 8753680, -3471407, 2224256, 10257456, -5144297, 3329137, 3492882, -383863, 7726646, 9881646, 7529615, 17139604, 3198677, -2436857, -3160022, -2942590, -171799, -3012383, 5211943, -954020, -1665374, -1820529, -4580046, 1921998, 2496450, 4434017, -10687489, --1478006, 2720325, 7089381, 4964446, -9151502, -6757594, 1715303, 1723356, 7394860, -6509560, -398358, -645319, 769873, -9268003, -2527052, -3183108, -2269890, -3800509, -1620813, 306553, -3544422, 6979, 180926, 1403917, 1683627, -3530463, -582505, 279710, -8590, 1281511, --1248225, -2301566, -1597728, -1753420, 2496450, -2410551, -1197222, -2776696, 670552, -582505, -1762547, -2539936, 1040456, -848793, 1020055, 973884, 145492, 2232846, -2141041, 1109712, -1179505, 387621, 2540473, 4088809, 8159901, -1026497, 1688459, 6979859, 10236518, 5775658, --11240466, 63351, -11960947, -8476118, -5121749, -970126, -7307887, 8784282, 3267933, 5210332, --14884746, -1043677, 9783936, 4987531, -4347044, -6243272, -3799436, 3830574, -11379516, -639413, --7301982, 11253351, -1448478, -3256659, 1227824, -374736, -1893544, 2007897, -2935073, 5239860, -3740380, 7519414, -522912, 408022, 11600170, -3634616, 7776039, -1232656, -1326608, 20401632, -2462090, -2160369, -4567161, -15737834, 1697049, -16130287, -2682744, 17033304, -4764193, -3283503, --11783780, -3443490, 457951, -6331319, 3454764, -595390, -8625368, 9227200, 3332358, 3018825, -2572686, -6388764, 7071664, -10965588, 3218541, 4240744, 504659, -1434519, -4405026, -3473555, --4487167, -1432909, 3692598, 4715874, -1140851, -3821447, -2229625, 5254356, 2193655, 10038949, --129386, 775778, 4126390, -396211, -1797981, -1368484, -1217086, -1086090, -1603097, 1196685, --1836635, -53150, 2094333, 769336, 2135136, 2030983, 1668595, 199716, 3077881, 2206540, -1359894, 948114, 972273, -3141232, -2625836, 2312303, 385473, -1930051, 406411, -2197413, -701690, 2551211, 985695, -408559, 993211, 2190970, 551366, -1740536, 1008244, 6735046, --13292387, 5866389, -4629438, -6674379, -6358699, 5180805, 6593312, 3884261, 11364483, 8410083, -1774358, 3487514, -8742406, 1887638, 4071629, 8836895, 1784559, -4097936, 3286187, 4179540, --7827041, 1253057, -8031052, 6435472, 5870147, 7533373, -7137162, 4515621, 8056822, -3503620, -2146947, 10669236, -233539, -6445672, -5119601, 2456185, -1658931, -6551973, -2646237, 226023, -1641214, 3713536, -4494684, 7479149, 4574677, -1584843, 8994198, -996432, 3466039, 11775190, --12316356, 22997402, -10448582, 3251290, 6992207, -2284923, -1188632, 3003256, 15595026, -740882, --2058363, -357019, -3593814, 7639673, 8539469, -2600066, 3703336, 3110630, 2843268, 5280126, -6743099, 655519, 7284802, 1658394, -6094559, -9408126, 2361158, 1044751, 4451197, 1970853, -14440217, -1340567, 8103530, 6572911, -4361540, -8070244, -872415, 1035624, 2208687, -2112050, -3779571, 1846836, -3437585, -855772, -3278671, -1129040, 2181307, -972273, 3179350, -674847, -1194538, 901943, -1352378, 1748052, 1961726, -2747169, 2001455, 1385127, 682900, 784905, --15569, 661425, 3518652, 1177358, -1133871, 727997, 1028108, 1806571, 2199023, -543313, --2291902, -580894, -1992328, -1451699, 2622615, 7561290, 9972377, 6111202, -10686952, 20352240, --6459094, 3816079, -15010374, 5896453, -13277891, 10197863, 1024887, -2906082, -7526930, 9634149, -1263257, 6123013, 6355478, 3212636, -11181947, 5634997, -6779606, -1305670, 5003100, 5401995, -1246614, -2146410, -11198590, 1483374, 10268730, 1074816, 6640557, 7374459, -11688217, 6347425, --5951751, -5938329, 8591545, 9454297, 4939213, 5281736, 1472100, 5057324, -12039330, -5454609, --3853123, 253940, 12790413, 6051072, 5061619, -1042603, 5618354, -385473, 14092325, 5104032, -5340255, 2052994, -795643, -20969104, 7728257, 4824322, -1936493, -1589138, -15584289, 29528, --5958731, 3606162, 13566191, -2399813, -7766912, 15697569, -708670, 8807904, -5272073, -77309, --9867687, -1049046, 195421, -17236778, -5078799, -3092913, -7681549, -3713536, -1502702, 926639, -8578123, 478352, -190052, -1813550, -4402342, -874026, 810675, -1792612, 629750, 38655, -2318209, -4186519, -1554241, -717260, -3665755, 16106, -2364916, -1700270, -1176821, -3179887, --1501628, 3299072, -1132798, 418222, -916976, 3582540, -128849, 1502165, -2420214, -5773510, --1638530, -470299, 2447595, 766652, 3467649, -469225, -1030255, 2655901, -3527242, 4278861, --75162, 13392782, -11476153, 1711008, 4892505, 6077379, -19942606, 13291313, 3738232, -14168560, --9048959, 7782481, 17833242, -6235219, -3202435, -12263205, 25516938, 9931575, 1619203, 4277788, --13349295, -8632884, -530428, 1144072, 13250511, 2899103, 10222559, 11488501, -468688, 742493, -8010651, -2071785, -8480950, -8108362, -2040646, 11373073, -6097780, 14379014, -6626061, 21100638, -9399536, 17024176, -4574140, 2779381, 13666586, -10587631, 6385006, 6183679, 5811628, -6051609, -7289097, 1786706, 2341831, 6227703, 12993887, 10931766, -11041824, -2561948, 5721970, -10767483, --6834904, -2825015, -22069152, 5936719, -10899553, -6822556, 2149631, -2714956, 7579544, 14103062, -9041980, 5714454, -7588134, -1775969, -448287, -14926085, 2745021, 1289027, 18487686, 3994320, -4166118, -3987340, 14283987, -112743, -401043, 57445, -4638028, -2110440, 603443, -840203, --5029944, 474594, -1292785, 919123, -6002754, -6504728, -2139431, 5197984, -863825, 2026151, -1963874, 1607392, -431107, -1376537, -1803349, -3608846, -6029061, 2068027, 308164, -1476932, --7125351, 5239860, 3563212, 2024003, -600222, 437550, -2436857, 1778653, -1294396, -2351495, -818728, 3025805, 1821603, -1893007, -477815, -777926, 2218888, -15928960, -23499376, 12692702, --9574019, 10402411, 3399467, 5025649, 6163278, -15799574, -28711856, 2520072, 4148939, 16152298, --15950435, -17512192, 15091978, -6055367, 6866579, -3328063, 3597035, 2361695, 3984119, -7998303, -3853660, -1184337, -2486249, 9933722, 3733937, -1474248, -12939663, -1810329, -357556, -2430415, --602906, -7056095, -17161616, -7684234, 12628814, -5422396, 6238440, -9792525, 7237557, 3661997, --105227, -4962298, -21281562, 11718281, 11461657, 14638322, -10251550, -4422743, 20014010, 17593260, -8193724, 3726958, 11329050, 4082903, 10185515, -5520644, 8854075, -16923782, -1028645, 4621922, --4342212, 19968376, 827855, 10879689, -6489696, -10862509, 23222888, -479426, 9251360, -3158412, -382789, -27349278, -2237678, 5699959, -10458782, 12739947, 9799505, 2295660, -5513128, -20868172, --376883, -4331475, 5242545, 6194954, 1124208, -2644626, 4957466, 97174, 2474975, -1441498, --6201396, -2423435, -5653251, 9914395, 3165928, -339302, -122943, 1118302, 9368934, -1748052, --2131378, 1285269, -633508, -35433, 4260071, 2113661, 3842922, -2842195, -246961, -4459787, -942208, -103616, 4029216, 3739306, -4228932, 6822019, 7239704, -5749888, 555125, -11770358, --15421617, -4474282, -3608846, -26411364, -24774982, -6487548, 125091, 18656264, 15177341, 15021111, --5802501, -2408940, -3753802, 16037945, 6893960, -6722161, -1185411, -5350993, 11601244, 9006010, --6688338, -9368934, -8598525, -17568026, 7344931, 495532, 503585, 3841312, -2622078, 6670084, -24719148, -14061723, 7457137, 1480690, -9519258, -5448703, -11303817, 4294431, -5020280, -5675800, -12803298, 1578401, -4261682, 12927852, -1750199, -5697811, 4504347, 9434433, -5181878, 10138807, -18205292, 17558364, -11988327, -158914, 4393215, 9898289, -15183246, -3157338, -4186519, 18938122, -8076686, -2032593, -11503533, -12767864, -11349451, 17105780, 14168560, -27074936, -22586160, -17127256, --12058658, 4096862, -10874320, 6621229, 1817308, 2698313, -21776022, -6972880, 19712290, 15205795, --6585796, -13970455, 13622563, 7144141, -1622424, 239444, -1720671, -3301756, 7750806, -6924024, -1709934, 1203128, -271120, -4998268, -9131637, 1782948, 7454990, -713501, 837519, -3180423, -7082938, 7747048, 781684, -1007170, 2627983, -258772, 3148211, 3389266, 4891968, -6515466, --603980, 2414309, 25770, -4034048, 1116155, 8216810, 7655243, -2882997, 5874442, -8923868, -2274185, -2862596, -2449742, -3557844, -5556077, 21782464, 17156784, 10626823, 1605244, -14322105, --7465727, -2260764, 5814849, 9010305, -12679280, 3227668, 731755, -10842645, -5156645, 8631811, --6464463, 6847789, 2918967, 8063264, -10124849, -103616, -22543210, 3307125, -28498718, 11636677, -11508365, -11114838, 13000866, 15502684, 400506, 4363687, -18396956, 10746545, 1020055, -7684234, -9881646, -2420214, 81604, -251792, 1156957, 19087908, -2226404, -108448, 23449984, -316217, --10924249, -31144418, -25611426, 28308130, 17609366, 6912750, 7075422, -11961484, -24010478, -11843909, -3717831, -9279277, 18644454, -1088237, 2412161, 20110110, -4221953, -6360310, -4618701, -12809740, --21686364, -17245904, 48760228, -23808614, -10820633, 13923210, -24817394, -17904644, 17633526, 24753508, -8100845, -4611185, 29148870, 14029511, -23601920, -8251169, -13218836, -12903155, 26491358, 1829119, --17791366, -12327630, -13867913, 3783329, -2930778, 8007967, -286689, -4184909, -6552510, 498216, -7266548, -4059818, 3309272, -3958886, 3573413, 3231426, 10152766, -4095251, -1586990, 8684424, -606664, 4386236, 4482872, 6165426, 1080721, -3779034, -2158758, -1052267, -1570347, 3733400, --1292248, -4225174, 8157754, 8420283, -4813048, 2059974, -5466957, 1823751, 1899449, 5146445, --1443646, -645856, -2757906, 2590939, 6003828, -20007032, -14753750, -10281078, -18305150, -1606318, -17434882, -1212791, 3623879, 8606578, 5728413, -14725832, -7104413, -12161200, -6489159, 15705622, --4736275, -1660542, -2099702, 9541807, 9515500, 28307056, 4549981, 20849918, -1168231, 7067906, --11283416, -8485782, 7502234, -14370424, -15982647, 573378, 5097590, -8179765, 6628745, -9584756, -2986613, -25296820, 14194867, 7964480, 11618423, 1488743, -10258529, -21187610, -7527467, -1846836, -17552994, -13289166, -7847442, 4937065, 40082784, -11020349, 40746892, -24922622, 9904731, -9161165, -17905718, -7038378, 30925376, -29000692, 44269300, -4138201, 9139690, 19185082, -32753420, 29286308, --34988416, 23686744, -57039312, 30988726, -29301878, 26045756, -38240780, 33697240, 1174674, 21857088, -9482751, -17809618, 15566572, -12741557, 38717520, -17578228, 6405407, -23039278, 6287296, -1506997, -4275640, -8216273, 10771778, -10562398, 7640747, -3719442, 2484639, 3291556, 3449933, 4515621, --2601140, -6064494, -4918275, -5810554, -13393319, 7785702, 2014877, -9194451, -4265440, -2759517, -6001680, -10240813, 9788230, -7838852, 1969243, -4192962, 4771172, 1609539, -73014, 14848776, --13120051, 8042863, -12677133, 19139984, -3623342, 18697604, -7347079, 5847598, 8455180, 2835752, -2922725, -10201, 8956617, -13347685, 14645302, -10181757, 9639517, -17569100, -15916612, 18538690, -31975494, -26477936, 40533216, -2346663, 2684, -1552094, 7046431, -12053826, -8850317, -18061948, --4028679, 582505, 52613, -92342, 15943455, 2728378, 17478906, 17095044, -10858214, 6289980, -36441724, 11898670, 7820062, 5460514, -31575526, 1605244, -5101348, -3965866, -28954522, -6136435, -16675211, 4694936, 5561446, 8364986, 21123186, 5493263, -6483790, -2175401, -1791001, 7898982, --14330158, -8852464, 21814676, 13502303, 10174778, 16820702, 12470974, -7350300, -3643743, -25143812, --11002632, 10197863, 8096550, 18946712, -13636521, -6833830, -4759361, 13919452, 8200167, 12491912, -5207111, -9940702, -9161165, 31337156, -9552544, -30508764, 7089381, 22016002, 15154255, -434865, --2590939, 2688113, 5098126, 3080565, 28066000, -33782604, -28766080, 3310883, 11432666, -14565308, --7441568, 2412698, -11375221, 5369783, -5528697, -1487669, 3073049, -2240899, -7617662, 233002, -6447283, -4161287, 133681, -11229192, -1881196, -9889699, 7304129, -3189013, 6707665, -4070019, -4224637, 1651952, 5680094, 8674760, -8782134, -4057670, -2556043, 6817187, -4207458, -8101382, --14593762, -139586, -5767604, -2287607, 2341294, 1372779, 530428, 2783676, 4930086, -1051193, -14944876, 1721745, -1060320, -11585137, 2120103, -2229625, -506269, -12412992, -64105608, 17726940, --7802882, -4062502, 15737834, -10860899, 16887274, -2265595, -27775016, -5060009, 2710661, 9760313, -12417824, 2893734, -19680078, 19492710, -7634841, -1767916, -12090870, -5437429, 10459319, -2084670, -9331353, 15717433, -3627637, -20288352, 4512937, 22272090, -20723754, 7631083, 17297980, -3141769, --13703630, -25588342, -17255568, 18054432, 46277200, -14244259, -18444738, 52128556, -3394098, -7504382, -37528352, 21844204, 18653580, 15064598, 6195491, -11029476, 19072876, 17752710, 12245489, 5662915, --34482144, 21545704, 19084688, -36420248, -21047488, -13086765, -10184978, -10035191, 39758512, 19840602, --22707492, 21239688, -8395587, -21251498, 9271224, 10807748, -9371619, -9009768, -33319820, 3744675, -5710696, 24379844, 11698417, 3013993, 20405390, -16207059, 42193760, -44841068, -52284784, 36916316, --22556094, -1407676, 25914758, -16327855, -11215770, -3238942, -3067681, 3209951, 15905338, 7791071, --12995497, -810138, 6202470, -1569274, 8842801, -364535, 4894652, 937914, -6892886, 3689377, -14112189, 9692667, -603980, 1867774, 9439264, -1537061, -1112397, 2369211, 21845278, 11184095, --3499862, 4749697, -19359566, -874026, 5115843, -8946417, -12002823, 11300059, -5188321, -365072, -11649025, -10142565, 4480725, -1760937, -2895882, 14420353, -8177081, -17141752, -69851200, 21368000, -39265128, -24485072, -5171141, -19061064, 40400072, 27138288, 17003776, -3321620, -14254996, 2816425, -16225850, 7505992, -7140920, -1642825, 22230214, -1563905, -8324721, -30012694, -14283987, 25142738, -14571750, -16016470, 12650826, -11625403, -3757023, 7473243, 7000797, -7043747, 4482872, -26327612, -7402376, 35355632, -4613332, -7012071, -34953516, -21048024, 16792786, -27590334, -15044197, 6181532, -6878390, -8609262, 22723062, 21443698, -22309670, 8176544, 12256226, 35617628, 32615982, -5289789, -10592463, -988379, 37305548, 16147466, 15060303, 35340064, -15949898, -23286776, -11984569, -29778618, -24892020, 11673721, 12099997, 6369437, 42322072, -28226526, -6680822, 17996450, -10143102, 19984482, --1093069, 2222646, 9240085, -24669756, -37329172, 4553202, 7043210, 40787692, 31016644, 614180, --30314952, -4913980, -33100240, -333397, -1166084, -9406515, -8572755, 4329864, -2974265, -2632815, --8487929, -5589900, -7553774, -4585415, 1016834, -8990977, -8192113, -1503775, 8106214, 4041027, --10847477, 9579388, -5559299, 17918066, -5789616, -16251083, -6025302, 7833484, -5117454, -12374875, -13809394, -3180960, -12846784, -19867982, 2915209, -3351148, 2188823, 4161287, -7691750, -6660958, --17360258, -4023848, -4680441, 1010928, 3064996, 6142877, 5380521, -13336947, 16343424, 27683212, -24183350, 24907590, 32028644, -18237504, 25256018, -48977124, -21324512, 18702436, 4546223, 35976256, -16503412, 30696668, -13174275, 4161287, -26414048, 18129056, 29879014, 27166206, 2862059, 19284404, --47017544, -30601106, 29408178, 8628589, -29252486, -15081241, 3733937, 43348032, 13494250, -17501992, --22070226, 4499515, -6343130, 26694832, 28860032, -2746632, -4528506, 5793911, -8009577, 34492884, -10027138, -8075613, 7069516, -16291885, -9581535, -77009840, -26069378, 13822279, -11924977, -11460046, --243203, -13831405, -13793287, 35409320, 23775328, -17722646, 32356136, 66867272, 13865228, 47648904, -6707665, 9740449, 35032976, 23125714, -18670222, -21254182, -37401112, -23260470, -2337536, -36958732, -13852880, -4392141, -35721244, -25646324, -25522306, -32169306, -19433116, -12891881, -17013976, 5131412, -30718142, 37405408, 19821810, -3827890, -27103392, -3419868, 1203665, 2373506, -13127568, -2322504, --8817568, 7345468, 10667625, 1212255, 7854422, -202937, -5140002, 8971113, -9483288, 1256815, -8650601, 18329846, 2675765, -136365, 12502113, 5253819, 33258616, -8265128, -26756572, -1363652, -18346490, 3263102, -7152195, -8188355, -21713744, -20688320, -11546483, -8228621, -3626026, -12419435, --17765596, -19087908, -10272488, -1538672, 2831994, 25296820, 18508088, -6786049, 29644938, 52326660, -36423472, 25478820, 16143708, 9997073, -12641162, -8347269, -12603582, -11652246, -454730, 30668214, --3143379, 26079578, -16570521, 7086159, -57247084, 16365973, -8539469, 29709362, -7157563, -34163244, -34726420, -12790413, 5475547, 19851338, 14891188, 31813360, -4636954, 5012227, -5827734, 36245228, --7468412, 7046431, 25294136, -28723668, 24944634, -7030862, 15335181, 24223616, -6269042, 5610301, -4214437, 2704756, -7546795, 10929081, 10580115, -3991098, -13907641, -2357937, -16244640, -5133023, --2924873, 13711683, -6701223, -25924960, -17022566, 27828166, 28106266, -26103200, -21849036, 33274722, -39064340, -14756971, -3612604, 28225988, 1371705, 14643691, 20604568, -46760920, -13652627, -2940979, -45802068, 4430259, -2987150, -44548476, 9148280, 17850420, 11791833, 1844152, 12314745, 4883915, -6482180, 57365732, -1491427, 3244311, 33894808, -19903952, 22612466, 4423280, 17130478, 11237245, --25642028, -8309151, 31096100, 20644298, 12085501, -7077033, 11054709, 5614596, 272194, 4327717, -8137353, -3517578, 13724568, -8609262, -2080375, 14093935, 8494372, 3036542, -28768764, 2837363, -14666776, -10694469, 5427228, -25597468, -16052977, 18351322, 9134322, 15126875, 13331578, -10070625, --27949500, -7671886, 10033580, 24849608, 15327665, -3455838, -5076652, -8442832, 20642686, -178241, --3692598, -8076149, 11134166, 4722317, -4016331, -20374788, -12597676, 13196824, 13409425, 9430138, --13715978, -19694572, 10409390, 26356604, 12678207, 1924682, -12663711, -3056943, 6609418, -233002, -1020592, 1533303, -2685428, -6043019, 33007898, -55984360, -3893925, -47370804, -43910672, 10998874, -9220758, 8008504, 1068910, 41718628, 23753854, 53720376, 58784144, -6492917, -28964722, 6124624, --7894687, -5392869, 12703440, 5680094, -4759898, -27089970, -29659970, 32080722, 14780593, -3657702, -4864051, 5214091, 2891050, 5909875, -3093450, -7681549, -43845172, 964757, 25052544, -7360500, --33822868, -11060078, 27615566, -51386064, -17772038, 32517734, 19568408, 38833484, -1229971, 2857227, --35903780, -36107792, -45645300, 38366944, 54154704, -71448928, -35755604, -3696356, 36169532, -28311888, --4764730, 65614216, 26520886, 16689169, 43242268, 31769336, 47480864, -17139066, 47202764, -7144678, --37321656, -54567024, -12985834, 21007222, -43465068, -8395587, 9133785, -9052180, -15432354, 9322763, -8165270, -29679298, 21986474, 10950556, 32035624, -7660611, -31799400, 39497592, 7748121, -35803384, --19327, -8242042, 14741402, -15782394, -16545288, -8250632, -1906429, -394600, -12608950, -14848776, -11387569, -15493558, -380105, -15306190, 8240969, 14817100, 2057826, 22086332, 14801531, -21946210, --8492761, 165356, -20148766, 3490198, -3634616, 8065412, -5513128, 7134478, 18928994, 229244, -3428995, -13289703, 20374788, 13327820, -14900852, -4103305, 14443975, 14047764, -2336999, -21055004, --3056943, -41513008, 31920734, -2742337, 9736691, 12335146, 11941083, 359704, -14016089, 22631256, -5645735, 21843666, -4744865, -46437724, -4253628, 13365938, -15296526, -17021492, -10440529, -15691663, -18865644, -4890357, -16535624, -970126, 17548162, -23671712, 16520055, -8233989, 8772471, -23318988, --5839545, 9408126, -2033667, -2177549, 2841658, 13042742, -2347737, -2143189, -16304770, 8085813, --4497368, 2594160, 5005785, 1690607, 12036109, -17679696, -13516799, 18478560, 15923591, -22193706, -10550050, -17938468, 20645908, -17331804, 7772280, 5322002, -14687714, 32478006, 3133716, -36166308, -16637630, 4363150, -27986006, 15675557, -10289668, 16696685, -24266028, 12429098, -25702694, 11777874, -18249316, -16552267, 9466108, -17586280, 593242, 587337, 1659468, -11557757, 206158, 8794482, --511101, -15874736, 11957189, -9947681, -21378736, 9200357, -9501005, 4650913, 9930501, -7560216, --4584341, 1788317, -1418413, 6457484, -3404835, -2357937, 5746666, 7325604, 2445984, -7366406, --4413079, 7074885, 4219806, -16670379, 15205258, -2183454, -5710696, 2123861, -1209033, 3600256, -8149164, -2015413, 15447924, -4563940, -6740415, -7536057, -3041911, 1488743, -7327751, 1949915, --2499134, -2978023, 1851131, 2501819, -3056406, -69256, -874563, -3232500, 3147137, 2126546, --3587372, 9670119, 20732344, -9463960, -110973368, -200787040, -66302484, -155467616, -153792576, 83845280, -17956184, 116351736, 262075680, 236206560, 193795904, 236546928, 145019040, 32918776, 46062988, -32902134, --174462112, -172430592, -128863512, -167526272, -114657912, -23223426, -77175192, -106736376, -45950780, -12767864, --55155432, -25900264, -431107, -27255862, -49018460, 11100343, 43574052, -13881871, 60214904, 89604296, -2846490, 17825188, 120952720, 60271812, 1391033, 113373176, 92836792, -20972862, 44311176, 105891344, --1346472, 9254044, 149197504, 80427024, 33837364, 180249584, 198587472, 97966056, 188301568, 233979616, -61855584, 31953482, 95691872, -37376952, -112261320, -65275448, -146273168, -260020544, -259424080, -294641184, --392551424, -395449440, -379395936, -388260736, -347292128, -297739488, -238337936, -156064624, -79091824, 38930120, -172355424, 227028752, 276987808, 374867968, 329790144, 294760928, 329285472, 243121456, 113817704, 133605696, -150991728, 55975236, 73049880, 151125936, 74445208, 14232985, 65090768, 58520540, -32891396, 121333, -40793064, -59744604, -76190576, 17442936, -15067282, -24873766, 84329536, 72316512, 7628399, 65733936, -95432024, 16763257, -7106561, 5338108, -97590248, -176729312, -184493536, -235586480, -296375840, -281000928, --251261488, -229061888, -204137648, -150024288, -142177376, -155504656, -103988136, -34077880, 9470403, 38356204, -102005472, 122057064, 138254464, 247564064, 288730240, 266666464, 246146720, 195955200, 124162672, 106183936, -90483688, 55253144, 39558796, 36326832, 14534169, -3498788, -4943508, -10708964, -21847424, -27338004, --22399328, -31034896, -42196980, -40799504, -39538932, -44727252, -42505680, -32320166, -25908316, -19180250, --15596100, -14795625, 0, 0, 0, 0, 0, 0, }, +666257, 3242164, -281320, 294205, -4798016, -2411087, 713501, 6369974, -4101157, 1333587, +-6607271, 6790880, 452045, 2491618, -775242, 1080184, -1268626, -2324651, -5742372, 2439005, +-5757404, -2687039, -3244848, 3278134, 2608119, 1260036, 2718178, 5120675, 343061, -4633196, +3062312, 507343, -208306, 2511482, -911607, -1673964, -6774237, 1111323, -1932198, 1495186, +2863133, -3670587, -1452773, 3364033, 1066763, 410169, -3441880, 8726300, 5266704, 866510, +4231617, 3478924, 3378529, -7950522, 514859, -758599, -2090575, 1968706, 1340567, -1262184, +-1467805, -411780, -2362769, 2367064, -878321, 4651987, -149250, -1167157, -2177012, -4037806, +-718333, 3140695, -111669, 732829, 3699578, 1022202, 4275640, -66035, 670015, -419296, +4595615, 4076461, 4124779, 911607, 22012, 1843078, -64425, 583579, 113817, 227096, +-314069, -1248762, -1048509, -214748, -1204738, 606127, 652298, -504659, 1368484, -507343, +-360777, -253403, 579284, 175557, 1227824, 126165, 46708, 119722, 1584306, 787590, +-88047, -394063, 102542, -194884, 410706, 1633161, 378494, 2076080, 7222525, -3497177, +2413772, -1988570, -3126736, -1280437, -2164664, 3947075, -3255048, -6040872, -1541893, 1596117, +-5036386, -3040300, 5691369, 9834938, -1655710, 3762391, -3369939, -3543885, -156229, 1042066, +-431644, -95563, 3649112, -6227166, 2034741, -453119, -1305670, -5247377, 457951, 129923, +2960843, 893890, -4111894, 5431523, -4316442, 5068599, -569083, 926639, 2057289, -586263, +-2532957, 3966402, 971200, 5296769, 803696, -4651987, 8452496, 6731825, -2345589, -678605, +-1631014, -5864778, -3180423, -956167, -1015223, 2385318, -3238405, 273267, 2313377, 24159, +-93952, -360240, -561030, -3193308, 5106179, 181462, -117575, -1594507, -576599, -4671851, +-4178466, 1400159, 3404299, -408559, -893890, 18790, -44560, -2379412, 4570919, 651761, +1505386, -1165010, 1239098, 812286, -201863, -54224, -213675, 93416, 1072668, -571231, +674310, 767725, -156229, -150861, 553514, 1260573, 1078574, -746251, 287763, 415001, +-622233, -301721, 1701881, -201327, -103079, -1306744, -1259499, -2028835, -788127, -7576323, +9218074, -2070711, -1138166, 6571300, -2637647, 3364033, 14666240, -1817308, 389768, -5681705, +-4595615, -7065221, 4016331, -2949569, 1937030, 3811247, -4466229, -3826279, -2815888, 262530, +1401233, -5506685, -2186675, 2328409, 1995549, -2217277, -936303, 3276523, -3487514, 481573, +-1757179, -676457, -2442763, 1987496, -2245194, 851477, 1905355, -955630, 6138045, 205622, +-887448, -4627828, 497142, 6560026, 865973, 2178085, -6101538, -8698383, -3189013, -7490960, +-6615860, -227633, -2882460, -312996, -8015483, 6759742, -7424388, 1029182, 5007395, -4620311, +-7755101, -5536750, -1666447, 5064304, 4495220, 6796249, -4079682, -3594888, -2882997, -2483028, +4909148, 1222455, -2095944, -1150514, 2312840, 2632278, 769873, 1185411, 1673964, -424665, +-2895345, -513785, -1931662, 664646, 202937, 577136, 525060, 102005, 1154809, 112743, +1353989, 91805, -1092532, 1379221, -1689533, -1118839, 293132, -477278, 1388885, -911070, +-691490, -327491, 151398, -602369, -1027571, 872952, -349503, 634045, -872952, -841277, +-1026497, -1185411, -757525, -1081795, 8020852, 832687, -3226057, 453656, -2670396, -595927, +5613523, 9414031, -3219615, -3296924, -8543764, 1079111, 2145336, 4858682, -3221762, 5238787, +831076, 8069170, -6476811, 1034013, -12230993, -1351841, 1462973, -2995203, -2749853, -1086627, +4510253, -3699041, -6427956, 1817308, -9431748, -2064806, -4529043, 2072322, -1001264, 3182571, +423591, -7202124, -7764764, 202937, 4143033, 7681012, -1522029, -3140695, 6448357, -7115687, +-3857418, 3416647, 3070365, 5078262, -4850629, 168041, 1978369, -3078418, -1022739, 2992519, +-4399657, 5731634, -2487323, -1083406, -6118181, -5112085, 2476586, -28991, 131533, -883153, +-3746822, 3542274, -2348273, 4408247, -57982, -5872831, -6123550, 2229088, -3069291, 1078574, +-8722542, -8369281, -1309965, 7840463, 79457, -1640678, 416075, 1112933, 865436, -381178, +1282048, -4119411, 793495, 669478, 1272921, 1556389, 1782948, 900869, -2265595, 144418, +2059974, 911607, 581431, -1168768, -1366873, 301721, 34360, -496069, 1942399, -63888, +-92342, -1346472, 2417530, 1931662, -73014, 144418, -1123671, 656593, 788127, 301721, +155693, 753230, -1006096, 4831302, -13042742, 3058554, -5651640, 4830765, 5515275, -6151467, +-11433203, 1637456, -1505923, 7286949, -4337380, 10540387, -4403952, 6984154, -8581345, -3161096, +3617436, 5200132, 1471563, -9127, -5256503, -665720, -4131222, -5164162, 2900714, -4403415, +1755031, 1045288, 2157684, -2491081, 4913980, -890132, 4232154, -921807, -8041253, -1316408, +-2558190, 843961, 8070781, 536871, -672162, -389231, -3242700, 2815351, -3055869, 4281546, +4619774, 1701344, 1789391, 8142185, -1988033, -1433982, -6468758, 4654134, 4097399, 891206, +1070521, 886911, 360240, 2408403, 4962835, 3337190, 1905892, 1836099, -1237488, 6481106, +2219961, -1292248, -4931160, 2552821, -1449015, 9448391, 5364414, 1227824, -4316979, -1579474, +7194070, -2745021, 963683, 4198868, -2288144, -2845953, -5668820, 765578, 2107755, -407485, +2765422, -2185602, -809064, -1693828, 2036351, -128849, -604517, -2686502, 685047, 745177, +1670205, 1979443, -622770, 365609, 2168422, -119185, 2200097, -105764, 688805, 3235721, +695248, 3324842, -213138, -670552, -169114, -240518, 147103, 278636, -2436320, 964220, +2019708, 253403, 837519, -549756, -16821240, -9130027, 3398393, -3272228, 6788196, 6773164, +10213432, 4235375, 4140349, 2531346, -12257837, -2731062, -1684164, 1115618, -1217086, 3833795, +2724083, -4702453, -3756486, 3166465, 5985574, 7552700, 6508486, 8577050, -4684736, -4669703, +-6215892, 6616934, -3811784, 5469641, -1375463, -269509, -5822902, -3477850, -3329674, 4969814, +6111202, 1092532, 6108517, 8753680, -3471407, 2224256, 10257456, -5144297, 3329137, 3492882, +383863, 7726646, 9881646, 7529615, 17139604, 3198677, -2436857, -3160022, -2942590, -171799, +3012383, 5211943, -954020, -1665374, -1820529, -4580046, 1921998, 2496450, 4434017, -10687489, +-1478006, 2720325, 7089381, 4964446, -9151502, -6757594, 1715303, 1723356, 7394860, -6509560, +398358, -645319, 769873, -9268003, -2527052, -3183108, -2269890, -3800509, -1620813, 306553, +3544422, 6979, 180926, 1403917, 1683627, -3530463, -582505, 279710, -8590, 1281511, +-1248225, -2301566, -1597728, -1753420, 2496450, -2410551, -1197222, -2776696, 670552, -582505, +1762547, -2539936, 1040456, -848793, 1020055, 973884, 145492, 2232846, -2141041, 1109712, +1179505, 387621, 2540473, 4088809, 8159901, -1026497, 1688459, 6979859, 10236518, 5775658, +-11240466, 63351, -11960947, -8476118, -5121749, -970126, -7307887, 8784282, 3267933, 5210332, +-14884746, -1043677, 9783936, 4987531, -4347044, -6243272, -3799436, 3830574, -11379516, -639413, +-7301982, 11253351, -1448478, -3256659, 1227824, -374736, -1893544, 2007897, -2935073, 5239860, +3740380, 7519414, -522912, 408022, 11600170, -3634616, 7776039, -1232656, -1326608, 20401632, +2462090, -2160369, -4567161, -15737834, 1697049, -16130287, -2682744, 17033304, -4764193, -3283503, +-11783780, -3443490, 457951, -6331319, 3454764, -595390, -8625368, 9227200, 3332358, 3018825, +2572686, -6388764, 7071664, -10965588, 3218541, 4240744, 504659, -1434519, -4405026, -3473555, +-4487167, -1432909, 3692598, 4715874, -1140851, -3821447, -2229625, 5254356, 2193655, 10038949, +-129386, 775778, 4126390, -396211, -1797981, -1368484, -1217086, -1086090, -1603097, 1196685, +-1836635, -53150, 2094333, 769336, 2135136, 2030983, 1668595, 199716, 3077881, 2206540, +1359894, 948114, 972273, -3141232, -2625836, 2312303, 385473, -1930051, 406411, -2197413, +701690, 2551211, 985695, -408559, 993211, 2190970, 551366, -1740536, 1008244, 6735046, +-13292387, 5866389, -4629438, -6674379, -6358699, 5180805, 6593312, 3884261, 11364483, 8410083, +1774358, 3487514, -8742406, 1887638, 4071629, 8836895, 1784559, -4097936, 3286187, 4179540, +-7827041, 1253057, -8031052, 6435472, 5870147, 7533373, -7137162, 4515621, 8056822, -3503620, +2146947, 10669236, -233539, -6445672, -5119601, 2456185, -1658931, -6551973, -2646237, 226023, +1641214, 3713536, -4494684, 7479149, 4574677, -1584843, 8994198, -996432, 3466039, 11775190, +-12316356, 22997402, -10448582, 3251290, 6992207, -2284923, -1188632, 3003256, 15595026, -740882, +-2058363, -357019, -3593814, 7639673, 8539469, -2600066, 3703336, 3110630, 2843268, 5280126, +6743099, 655519, 7284802, 1658394, -6094559, -9408126, 2361158, 1044751, 4451197, 1970853, +14440217, -1340567, 8103530, 6572911, -4361540, -8070244, -872415, 1035624, 2208687, -2112050, +3779571, 1846836, -3437585, -855772, -3278671, -1129040, 2181307, -972273, 3179350, -674847, +1194538, 901943, -1352378, 1748052, 1961726, -2747169, 2001455, 1385127, 682900, 784905, +-15569, 661425, 3518652, 1177358, -1133871, 727997, 1028108, 1806571, 2199023, -543313, +-2291902, -580894, -1992328, -1451699, 2622615, 7561290, 9972377, 6111202, -10686952, 20352240, +-6459094, 3816079, -15010374, 5896453, -13277891, 10197863, 1024887, -2906082, -7526930, 9634149, +1263257, 6123013, 6355478, 3212636, -11181947, 5634997, -6779606, -1305670, 5003100, 5401995, +1246614, -2146410, -11198590, 1483374, 10268730, 1074816, 6640557, 7374459, -11688217, 6347425, +-5951751, -5938329, 8591545, 9454297, 4939213, 5281736, 1472100, 5057324, -12039330, -5454609, +-3853123, 253940, 12790413, 6051072, 5061619, -1042603, 5618354, -385473, 14092325, 5104032, +5340255, 2052994, -795643, -20969104, 7728257, 4824322, -1936493, -1589138, -15584289, 29528, +-5958731, 3606162, 13566191, -2399813, -7766912, 15697569, -708670, 8807904, -5272073, -77309, +-9867687, -1049046, 195421, -17236778, -5078799, -3092913, -7681549, -3713536, -1502702, 926639, +8578123, 478352, -190052, -1813550, -4402342, -874026, 810675, -1792612, 629750, 38655, +2318209, -4186519, -1554241, -717260, -3665755, 16106, -2364916, -1700270, -1176821, -3179887, +-1501628, 3299072, -1132798, 418222, -916976, 3582540, -128849, 1502165, -2420214, -5773510, +-1638530, -470299, 2447595, 766652, 3467649, -469225, -1030255, 2655901, -3527242, 4278861, +-75162, 13392782, -11476153, 1711008, 4892505, 6077379, -19942606, 13291313, 3738232, -14168560, +-9048959, 7782481, 17833242, -6235219, -3202435, -12263205, 25516938, 9931575, 1619203, 4277788, +-13349295, -8632884, -530428, 1144072, 13250511, 2899103, 10222559, 11488501, -468688, 742493, +8010651, -2071785, -8480950, -8108362, -2040646, 11373073, -6097780, 14379014, -6626061, 21100638, +9399536, 17024176, -4574140, 2779381, 13666586, -10587631, 6385006, 6183679, 5811628, -6051609, +7289097, 1786706, 2341831, 6227703, 12993887, 10931766, -11041824, -2561948, 5721970, -10767483, +-6834904, -2825015, -22069152, 5936719, -10899553, -6822556, 2149631, -2714956, 7579544, 14103062, +9041980, 5714454, -7588134, -1775969, -448287, -14926085, 2745021, 1289027, 18487686, 3994320, +4166118, -3987340, 14283987, -112743, -401043, 57445, -4638028, -2110440, 603443, -840203, +-5029944, 474594, -1292785, 919123, -6002754, -6504728, -2139431, 5197984, -863825, 2026151, +1963874, 1607392, -431107, -1376537, -1803349, -3608846, -6029061, 2068027, 308164, -1476932, +-7125351, 5239860, 3563212, 2024003, -600222, 437550, -2436857, 1778653, -1294396, -2351495, +818728, 3025805, 1821603, -1893007, -477815, -777926, 2218888, -15928960, -23499376, 12692702, +-9574019, 10402411, 3399467, 5025649, 6163278, -15799574, -28711856, 2520072, 4148939, 16152298, +-15950435, -17512192, 15091978, -6055367, 6866579, -3328063, 3597035, 2361695, 3984119, -7998303, +3853660, -1184337, -2486249, 9933722, 3733937, -1474248, -12939663, -1810329, -357556, -2430415, +-602906, -7056095, -17161616, -7684234, 12628814, -5422396, 6238440, -9792525, 7237557, 3661997, +-105227, -4962298, -21281562, 11718281, 11461657, 14638322, -10251550, -4422743, 20014010, 17593260, +8193724, 3726958, 11329050, 4082903, 10185515, -5520644, 8854075, -16923782, -1028645, 4621922, +-4342212, 19968376, 827855, 10879689, -6489696, -10862509, 23222888, -479426, 9251360, -3158412, +382789, -27349278, -2237678, 5699959, -10458782, 12739947, 9799505, 2295660, -5513128, -20868172, +-376883, -4331475, 5242545, 6194954, 1124208, -2644626, 4957466, 97174, 2474975, -1441498, +-6201396, -2423435, -5653251, 9914395, 3165928, -339302, -122943, 1118302, 9368934, -1748052, +-2131378, 1285269, -633508, -35433, 4260071, 2113661, 3842922, -2842195, -246961, -4459787, +942208, -103616, 4029216, 3739306, -4228932, 6822019, 7239704, -5749888, 555125, -11770358, +-15421617, -4474282, -3608846, -26411364, -24774982, -6487548, 125091, 18656264, 15177341, 15021111, +-5802501, -2408940, -3753802, 16037945, 6893960, -6722161, -1185411, -5350993, 11601244, 9006010, +-6688338, -9368934, -8598525, -17568026, 7344931, 495532, 503585, 3841312, -2622078, 6670084, +24719148, -14061723, 7457137, 1480690, -9519258, -5448703, -11303817, 4294431, -5020280, -5675800, +12803298, 1578401, -4261682, 12927852, -1750199, -5697811, 4504347, 9434433, -5181878, 10138807, +18205292, 17558364, -11988327, -158914, 4393215, 9898289, -15183246, -3157338, -4186519, 18938122, +8076686, -2032593, -11503533, -12767864, -11349451, 17105780, 14168560, -27074936, -22586160, -17127256, +-12058658, 4096862, -10874320, 6621229, 1817308, 2698313, -21776022, -6972880, 19712290, 15205795, +-6585796, -13970455, 13622563, 7144141, -1622424, 239444, -1720671, -3301756, 7750806, -6924024, +1709934, 1203128, -271120, -4998268, -9131637, 1782948, 7454990, -713501, 837519, -3180423, +7082938, 7747048, 781684, -1007170, 2627983, -258772, 3148211, 3389266, 4891968, -6515466, +-603980, 2414309, 25770, -4034048, 1116155, 8216810, 7655243, -2882997, 5874442, -8923868, +2274185, -2862596, -2449742, -3557844, -5556077, 21782464, 17156784, 10626823, 1605244, -14322105, +-7465727, -2260764, 5814849, 9010305, -12679280, 3227668, 731755, -10842645, -5156645, 8631811, +-6464463, 6847789, 2918967, 8063264, -10124849, -103616, -22543210, 3307125, -28498718, 11636677, +11508365, -11114838, 13000866, 15502684, 400506, 4363687, -18396956, 10746545, 1020055, -7684234, +9881646, -2420214, 81604, -251792, 1156957, 19087908, -2226404, -108448, 23449984, -316217, +-10924249, -31144418, -25611426, 28308130, 17609366, 6912750, 7075422, -11961484, -24010478, -11843909, +3717831, -9279277, 18644454, -1088237, 2412161, 20110110, -4221953, -6360310, -4618701, -12809740, +-21686364, -17245904, 48760228, -23808614, -10820633, 13923210, -24817394, -17904644, 17633526, 24753508, +8100845, -4611185, 29148870, 14029511, -23601920, -8251169, -13218836, -12903155, 26491358, 1829119, +-17791366, -12327630, -13867913, 3783329, -2930778, 8007967, -286689, -4184909, -6552510, 498216, +7266548, -4059818, 3309272, -3958886, 3573413, 3231426, 10152766, -4095251, -1586990, 8684424, +606664, 4386236, 4482872, 6165426, 1080721, -3779034, -2158758, -1052267, -1570347, 3733400, +-1292248, -4225174, 8157754, 8420283, -4813048, 2059974, -5466957, 1823751, 1899449, 5146445, +-1443646, -645856, -2757906, 2590939, 6003828, -20007032, -14753750, -10281078, -18305150, -1606318, +17434882, -1212791, 3623879, 8606578, 5728413, -14725832, -7104413, -12161200, -6489159, 15705622, +-4736275, -1660542, -2099702, 9541807, 9515500, 28307056, 4549981, 20849918, -1168231, 7067906, +-11283416, -8485782, 7502234, -14370424, -15982647, 573378, 5097590, -8179765, 6628745, -9584756, +2986613, -25296820, 14194867, 7964480, 11618423, 1488743, -10258529, -21187610, -7527467, -1846836, +17552994, -13289166, -7847442, 4937065, 40082784, -11020349, 40746892, -24922622, 9904731, -9161165, +17905718, -7038378, 30925376, -29000692, 44269300, -4138201, 9139690, 19185082, -32753420, 29286308, +-34988416, 23686744, -57039312, 30988726, -29301878, 26045756, -38240780, 33697240, 1174674, 21857088, +9482751, -17809618, 15566572, -12741557, 38717520, -17578228, 6405407, -23039278, 6287296, -1506997, +4275640, -8216273, 10771778, -10562398, 7640747, -3719442, 2484639, 3291556, 3449933, 4515621, +-2601140, -6064494, -4918275, -5810554, -13393319, 7785702, 2014877, -9194451, -4265440, -2759517, +6001680, -10240813, 9788230, -7838852, 1969243, -4192962, 4771172, 1609539, -73014, 14848776, +-13120051, 8042863, -12677133, 19139984, -3623342, 18697604, -7347079, 5847598, 8455180, 2835752, +2922725, -10201, 8956617, -13347685, 14645302, -10181757, 9639517, -17569100, -15916612, 18538690, +31975494, -26477936, 40533216, -2346663, 2684, -1552094, 7046431, -12053826, -8850317, -18061948, +-4028679, 582505, 52613, -92342, 15943455, 2728378, 17478906, 17095044, -10858214, 6289980, +36441724, 11898670, 7820062, 5460514, -31575526, 1605244, -5101348, -3965866, -28954522, -6136435, +16675211, 4694936, 5561446, 8364986, 21123186, 5493263, -6483790, -2175401, -1791001, 7898982, +-14330158, -8852464, 21814676, 13502303, 10174778, 16820702, 12470974, -7350300, -3643743, -25143812, +-11002632, 10197863, 8096550, 18946712, -13636521, -6833830, -4759361, 13919452, 8200167, 12491912, +5207111, -9940702, -9161165, 31337156, -9552544, -30508764, 7089381, 22016002, 15154255, -434865, +-2590939, 2688113, 5098126, 3080565, 28066000, -33782604, -28766080, 3310883, 11432666, -14565308, +-7441568, 2412698, -11375221, 5369783, -5528697, -1487669, 3073049, -2240899, -7617662, 233002, +6447283, -4161287, 133681, -11229192, -1881196, -9889699, 7304129, -3189013, 6707665, -4070019, +4224637, 1651952, 5680094, 8674760, -8782134, -4057670, -2556043, 6817187, -4207458, -8101382, +-14593762, -139586, -5767604, -2287607, 2341294, 1372779, 530428, 2783676, 4930086, -1051193, +14944876, 1721745, -1060320, -11585137, 2120103, -2229625, -506269, -12412992, -64105608, 17726940, +-7802882, -4062502, 15737834, -10860899, 16887274, -2265595, -27775016, -5060009, 2710661, 9760313, +12417824, 2893734, -19680078, 19492710, -7634841, -1767916, -12090870, -5437429, 10459319, -2084670, +9331353, 15717433, -3627637, -20288352, 4512937, 22272090, -20723754, 7631083, 17297980, -3141769, +-13703630, -25588342, -17255568, 18054432, 46277200, -14244259, -18444738, 52128556, -3394098, -7504382, +37528352, 21844204, 18653580, 15064598, 6195491, -11029476, 19072876, 17752710, 12245489, 5662915, +-34482144, 21545704, 19084688, -36420248, -21047488, -13086765, -10184978, -10035191, 39758512, 19840602, +-22707492, 21239688, -8395587, -21251498, 9271224, 10807748, -9371619, -9009768, -33319820, 3744675, +5710696, 24379844, 11698417, 3013993, 20405390, -16207059, 42193760, -44841068, -52284784, 36916316, +-22556094, -1407676, 25914758, -16327855, -11215770, -3238942, -3067681, 3209951, 15905338, 7791071, +-12995497, -810138, 6202470, -1569274, 8842801, -364535, 4894652, 937914, -6892886, 3689377, +14112189, 9692667, -603980, 1867774, 9439264, -1537061, -1112397, 2369211, 21845278, 11184095, +-3499862, 4749697, -19359566, -874026, 5115843, -8946417, -12002823, 11300059, -5188321, -365072, +11649025, -10142565, 4480725, -1760937, -2895882, 14420353, -8177081, -17141752, -69851200, 21368000, +39265128, -24485072, -5171141, -19061064, 40400072, 27138288, 17003776, -3321620, -14254996, 2816425, +16225850, 7505992, -7140920, -1642825, 22230214, -1563905, -8324721, -30012694, -14283987, 25142738, +14571750, -16016470, 12650826, -11625403, -3757023, 7473243, 7000797, -7043747, 4482872, -26327612, +7402376, 35355632, -4613332, -7012071, -34953516, -21048024, 16792786, -27590334, -15044197, 6181532, +6878390, -8609262, 22723062, 21443698, -22309670, 8176544, 12256226, 35617628, 32615982, -5289789, +10592463, -988379, 37305548, 16147466, 15060303, 35340064, -15949898, -23286776, -11984569, -29778618, +24892020, 11673721, 12099997, 6369437, 42322072, -28226526, -6680822, 17996450, -10143102, 19984482, +-1093069, 2222646, 9240085, -24669756, -37329172, 4553202, 7043210, 40787692, 31016644, 614180, +-30314952, -4913980, -33100240, -333397, -1166084, -9406515, -8572755, 4329864, -2974265, -2632815, +-8487929, -5589900, -7553774, -4585415, 1016834, -8990977, -8192113, -1503775, 8106214, 4041027, +-10847477, 9579388, -5559299, 17918066, -5789616, -16251083, -6025302, 7833484, -5117454, -12374875, +13809394, -3180960, -12846784, -19867982, 2915209, -3351148, 2188823, 4161287, -7691750, -6660958, +-17360258, -4023848, -4680441, 1010928, 3064996, 6142877, 5380521, -13336947, 16343424, 27683212, +24183350, 24907590, 32028644, -18237504, 25256018, -48977124, -21324512, 18702436, 4546223, 35976256, +16503412, 30696668, -13174275, 4161287, -26414048, 18129056, 29879014, 27166206, 2862059, 19284404, +-47017544, -30601106, 29408178, 8628589, -29252486, -15081241, 3733937, 43348032, 13494250, -17501992, +-22070226, 4499515, -6343130, 26694832, 28860032, -2746632, -4528506, 5793911, -8009577, 34492884, +10027138, -8075613, 7069516, -16291885, -9581535, -77009840, -26069378, 13822279, -11924977, -11460046, +-243203, -13831405, -13793287, 35409320, 23775328, -17722646, 32356136, 66867272, 13865228, 47648904, +6707665, 9740449, 35032976, 23125714, -18670222, -21254182, -37401112, -23260470, -2337536, -36958732, +13852880, -4392141, -35721244, -25646324, -25522306, -32169306, -19433116, -12891881, -17013976, 5131412, +30718142, 37405408, 19821810, -3827890, -27103392, -3419868, 1203665, 2373506, -13127568, -2322504, +-8817568, 7345468, 10667625, 1212255, 7854422, -202937, -5140002, 8971113, -9483288, 1256815, +8650601, 18329846, 2675765, -136365, 12502113, 5253819, 33258616, -8265128, -26756572, -1363652, +18346490, 3263102, -7152195, -8188355, -21713744, -20688320, -11546483, -8228621, -3626026, -12419435, +-17765596, -19087908, -10272488, -1538672, 2831994, 25296820, 18508088, -6786049, 29644938, 52326660, +36423472, 25478820, 16143708, 9997073, -12641162, -8347269, -12603582, -11652246, -454730, 30668214, +-3143379, 26079578, -16570521, 7086159, -57247084, 16365973, -8539469, 29709362, -7157563, -34163244, +34726420, -12790413, 5475547, 19851338, 14891188, 31813360, -4636954, 5012227, -5827734, 36245228, +-7468412, 7046431, 25294136, -28723668, 24944634, -7030862, 15335181, 24223616, -6269042, 5610301, +4214437, 2704756, -7546795, 10929081, 10580115, -3991098, -13907641, -2357937, -16244640, -5133023, +-2924873, 13711683, -6701223, -25924960, -17022566, 27828166, 28106266, -26103200, -21849036, 33274722, +39064340, -14756971, -3612604, 28225988, 1371705, 14643691, 20604568, -46760920, -13652627, -2940979, +45802068, 4430259, -2987150, -44548476, 9148280, 17850420, 11791833, 1844152, 12314745, 4883915, +6482180, 57365732, -1491427, 3244311, 33894808, -19903952, 22612466, 4423280, 17130478, 11237245, +-25642028, -8309151, 31096100, 20644298, 12085501, -7077033, 11054709, 5614596, 272194, 4327717, +8137353, -3517578, 13724568, -8609262, -2080375, 14093935, 8494372, 3036542, -28768764, 2837363, +14666776, -10694469, 5427228, -25597468, -16052977, 18351322, 9134322, 15126875, 13331578, -10070625, +-27949500, -7671886, 10033580, 24849608, 15327665, -3455838, -5076652, -8442832, 20642686, -178241, +-3692598, -8076149, 11134166, 4722317, -4016331, -20374788, -12597676, 13196824, 13409425, 9430138, +-13715978, -19694572, 10409390, 26356604, 12678207, 1924682, -12663711, -3056943, 6609418, -233002, +1020592, 1533303, -2685428, -6043019, 33007898, -55984360, -3893925, -47370804, -43910672, 10998874, +9220758, 8008504, 1068910, 41718628, 23753854, 53720376, 58784144, -6492917, -28964722, 6124624, +-7894687, -5392869, 12703440, 5680094, -4759898, -27089970, -29659970, 32080722, 14780593, -3657702, +4864051, 5214091, 2891050, 5909875, -3093450, -7681549, -43845172, 964757, 25052544, -7360500, +-33822868, -11060078, 27615566, -51386064, -17772038, 32517734, 19568408, 38833484, -1229971, 2857227, +-35903780, -36107792, -45645300, 38366944, 54154704, -71448928, -35755604, -3696356, 36169532, -28311888, +-4764730, 65614216, 26520886, 16689169, 43242268, 31769336, 47480864, -17139066, 47202764, -7144678, +-37321656, -54567024, -12985834, 21007222, -43465068, -8395587, 9133785, -9052180, -15432354, 9322763, +8165270, -29679298, 21986474, 10950556, 32035624, -7660611, -31799400, 39497592, 7748121, -35803384, +-19327, -8242042, 14741402, -15782394, -16545288, -8250632, -1906429, -394600, -12608950, -14848776, +11387569, -15493558, -380105, -15306190, 8240969, 14817100, 2057826, 22086332, 14801531, -21946210, +-8492761, 165356, -20148766, 3490198, -3634616, 8065412, -5513128, 7134478, 18928994, 229244, +3428995, -13289703, 20374788, 13327820, -14900852, -4103305, 14443975, 14047764, -2336999, -21055004, +-3056943, -41513008, 31920734, -2742337, 9736691, 12335146, 11941083, 359704, -14016089, 22631256, +5645735, 21843666, -4744865, -46437724, -4253628, 13365938, -15296526, -17021492, -10440529, -15691663, +18865644, -4890357, -16535624, -970126, 17548162, -23671712, 16520055, -8233989, 8772471, -23318988, +-5839545, 9408126, -2033667, -2177549, 2841658, 13042742, -2347737, -2143189, -16304770, 8085813, +-4497368, 2594160, 5005785, 1690607, 12036109, -17679696, -13516799, 18478560, 15923591, -22193706, +10550050, -17938468, 20645908, -17331804, 7772280, 5322002, -14687714, 32478006, 3133716, -36166308, +16637630, 4363150, -27986006, 15675557, -10289668, 16696685, -24266028, 12429098, -25702694, 11777874, +18249316, -16552267, 9466108, -17586280, 593242, 587337, 1659468, -11557757, 206158, 8794482, +-511101, -15874736, 11957189, -9947681, -21378736, 9200357, -9501005, 4650913, 9930501, -7560216, +-4584341, 1788317, -1418413, 6457484, -3404835, -2357937, 5746666, 7325604, 2445984, -7366406, +-4413079, 7074885, 4219806, -16670379, 15205258, -2183454, -5710696, 2123861, -1209033, 3600256, +8149164, -2015413, 15447924, -4563940, -6740415, -7536057, -3041911, 1488743, -7327751, 1949915, +-2499134, -2978023, 1851131, 2501819, -3056406, -69256, -874563, -3232500, 3147137, 2126546, +-3587372, 9670119, 20732344, -9463960, -110973368, -200787040, -66302484, -155467616, -153792576, 83845280, +17956184, 116351736, 262075680, 236206560, 193795904, 236546928, 145019040, 32918776, 46062988, -32902134, +-174462112, -172430592, -128863512, -167526272, -114657912, -23223426, -77175192, -106736376, -45950780, -12767864, +-55155432, -25900264, -431107, -27255862, -49018460, 11100343, 43574052, -13881871, 60214904, 89604296, +2846490, 17825188, 120952720, 60271812, 1391033, 113373176, 92836792, -20972862, 44311176, 105891344, +-1346472, 9254044, 149197504, 80427024, 33837364, 180249584, 198587472, 97966056, 188301568, 233979616, +61855584, 31953482, 95691872, -37376952, -112261320, -65275448, -146273168, -260020544, -259424080, -294641184, +-392551424, -395449440, -379395936, -388260736, -347292128, -297739488, -238337936, -156064624, -79091824, 38930120, +172355424, 227028752, 276987808, 374867968, 329790144, 294760928, 329285472, 243121456, 113817704, 133605696, +150991728, 55975236, 73049880, 151125936, 74445208, 14232985, 65090768, 58520540, -32891396, 121333, +40793064, -59744604, -76190576, 17442936, -15067282, -24873766, 84329536, 72316512, 7628399, 65733936, +95432024, 16763257, -7106561, 5338108, -97590248, -176729312, -184493536, -235586480, -296375840, -281000928, +-251261488, -229061888, -204137648, -150024288, -142177376, -155504656, -103988136, -34077880, 9470403, 38356204, +102005472, 122057064, 138254464, 247564064, 288730240, 266666464, 246146720, 195955200, 124162672, 106183936, +90483688, 55253144, 39558796, 36326832, 14534169, -3498788, -4943508, -10708964, -21847424, -27338004, +-22399328, -31034896, -42196980, -40799504, -39538932, -44727252, -42505680, -32320166, -25908316, -19180250, +-15596100, -14795625, 0, 0, 0, 0, 0, 0, }, }, { { -8479339, -937377, 5580773, 1907502, 3636764, -5305359, -2907156, 239444, -940061, 1421097, 4420058, --10628970, -74625, 3493419, 2098629, 3220152, -3077344, -4296041, 4645544, -78920, 1294933, -2895345, 3843996, 1417339, 802085, 3456912, -510564, -1107565, -2987687, 1609002, -840740, --486942, -1551020, 1986422, 5056787, 20401, -1050656, 2378875, -3234647, -4840965, -2675228, --981937, -3139084, 281857, -725850, 2031520, -1958505, 563714, -3927748, -379031, -3229816, --155156, -1479079, -1276679, 1644436, -1864553, -189515, 2657511, -1397475, 3169686, 3842385, -278636, 5193689, -2656974, -177167, 2482491, -898185, 1675037, 2360622, 1275068, -2731599, -1074816, 1250372, 878321, 166430, -2284923, 3031173, -818191, 1448478, -499290, -627602, -190589, -3153580, -260919, -2450279, -1142998, -107374, -427886, -83752, -244813, -1316944, -1567126, 183610, 438624, 110059, 875100, -534187, 1105417, -81068, 470299, -180926, --482110, 623844, 60130, -184684, -13959, 880468, 188442, -153545, 542777, 285615, --113817, 14093398, -3992172, 1350230, -3084860, -259846, -1294933, 1615445, 1084479, 4826470, -1474784, 836982, 1861332, -1179505, -9757629, -9336185, -2927020, 1236951, 2842732, -2376191, -518617, -3041911, -1095217, 142271, 1639067, -4147865, -4518843, -1342714, -301721, 2419140, -784905, -1023276, -3266860, 562104, -1806034, 79457, 2261300, -3311420, 1569811, 2918967, --2304787, -6068789, -1596654, 2188823, -376347, 1774895, -311385, 1534377, -297427, 1687385, -315680, -5666136, 1096827, 2298344, -908922, 1553168, 250182, -341450, -1135482, 42413, --3344706, -311385, -929324, -4218732, -723702, -147103, 3718368, -3708168, 6126234, 7128035, -5606543, -2452426, -1155883, -1313186, 2710124, -1050120, -1556926, 1688996, -4060892, -3693135, -434329, 3245922, -117038, -1666984, -3633542, -2151242, -2773475, -1469953, -2560338, 936303, --1539746, -422517, -1614908, -854699, 73551, 834297, 57445, 858993, -602906, 51540, -677531, 348966, 531502, 539555, 310311, -684510, 679142, -13308493, -86436, -2052458, -918049, -459562, -6890202, -1318018, -1455457, 2153389, 3347390, -4612795, 3682935, -1174674, -2536715, 2549063, -1388885, 5540508, 334471, 245887, -965831, 962610, -1379758, 1022739, --1549946, 206695, -3624416, 389231, 3986804, 537, 1676648, 4204236, -4138201, -4355634, -1813550, -1977833, 3358128, -3401077, -1031866, -7111929, -5489505, -4752382, 2069101, 613643, -2522757, -2583423, -1846299, -536334, 4457639, -4937602, 2033130, 862215, 360777, 2505040, --1730335, -2261300, -2979097, 1816771, 958851, -4367445, -4822712, -5598490, -170725, -1201517, -1816771, -252866, -1065689, 526134, 745177, 2507187, -6701223, 830539, 3802657, 5657009, -5798206, 4800700, -854162, -3535832, 5195837, 1592359, 1001264, -2595771, 1494649, 1078574, -149250, -640487, -1548873, -223338, 1770600, -1371705, -2284923, -926102, -989453, 388158, --200790, -549219, 1541893, 129386, 1971390, -178241, 559956, 1332514, 1234803, 977642, -693100, -783295, -886911, -276489, 774168, -144955, 755914, -530428, 1330366, 1135482, --1180042, 80531, 81068, -1899449, 1431298, -7771207, 4826470, -4118337, 5751498, 7489349, -4669167, -79457, 2223719, 512712, 6133750, -3341485, -3356517, 1761474, -931471, 2516314, -4721243, -6738804, 2146947, 6058588, 2857764, -433255, -47245, 738198, -2811593, -40265, --2656437, -3704409, -965831, 5740761, -2150705, 2669322, -1986422, -3500398, 6871948, -5985037, -4614406, 5047661, 1000191, 3201361, -4434554, -1211181, -1755031, -1398012, 3204583, 971200, --4769561, 779537, -460098, 907312, -1028108, 1721208, 1651415, 5724655, -5986648, 2885681, -2278480, -602369, 2263448, 633508, 3522410, 3295851, 2089502, -1934346, 2806761, 4954782, --124554, 2903935, -2097018, 5873905, 6062883, 6654515, -1912871, -4661114, 1504849, -650151, -2374043, 1712618, -25770, -353798, -6667400, -1745367, -1546725, -528818, -1367410, -2002529, -2289755, 876173, 723165, 2682744, -159451, 2712809, 1714229, 877247, -380105, 465467, --594316, -1140851, 803696, 200790, 1315871, -398358, 316754, -90731, -886911, 1475858, --55835, -1272921, 518617, 1195075, 140123, -1656784, 412317, -768262, 2273112, 1661079, -1657321, -190589, 512712, 1293322, 133681, 663572, 10902238, -999117, -3404299, 10370735, --4095251, 4660577, -2492155, -9903121, 1768453, -2844342, 315143, 11884175, -4597763, -5615133, -457414, 6252936, -10044318, -3717294, 7537668, -2637647, 2435783, 3576634, -2688650, 3257196, --2101850, -3464965, 700080, -964220, -1222455, -1271310, 4198868, -3348464, 8177618, 2058363, -174483, -4670777, -1393717, 5021891, -5742372, 1243393, 1985349, -873489, -8006893, 5498095, -1452236, 1370632, 705448, -1078037, 4125853, -2426120, 5642514, 3242164, -2201708, -9726490, -4334159, 2645163, -249108, -2733210, 2348810, 6327024, 6387690, -668941, 3775276, -5718212, -4170413, -985158, -1993939, 2522757, 4937602, -3439195, 4887136, 913217, -2081449, -1692754, -3983582, -3307662, 9474161, -4843650, 3913789, -3241090, 839129, -2891587, 3781182, -3364033, -154619, 2203318, -673236, 455267, -2947421, -957778, -420370, 57982, 782221, -1231582, -1628330, -120796, -1167157, 1721745, -3383897, -3349538, -1959579, 103616, -354872, -632434, -74088, -2267743, 2810519, 231391, -212064, 2035815, -1656247, -279173, 2211908, 1013612, -756988, 3615289, 3241090, 10240813, 1357210, -2577517, -13080323, 4052302, 7431367, 4449586, -2910377, -1096290, 3785477, 14248554, -1723893, 6589554, 651761, 3690988, 1410360, 271120, -2863133, -1180579, -6076305, -1689533, -4515085, -1165547, -6371584, 2313377, 195421, 7483444, -1473174, -3463354, 2478733, -1047435, -1817308, 4801237, 1729261, 3591667, 2100239, -2055679, --8324721, 528818, 4859756, -317291, -1586454, 2189360, -4392141, -1859721, -7752416, -9605694, -5000416, 5564667, 4350802, -1345399, -1562831, 87510, -144418, 2854543, -470836, 3125126, -2806761, -76236, 2892661, -2655901, 795643, -1393180, 1726577, 2107218, 9061307, 43487, -7420093, -2757906, -7579544, -670015, -999654, -2870649, 6090801, -462246, 2536715, 587337, --4293894, -5176510, -1801202, -1074279, 619012, 5375689, 1797444, 600759, 2304250, 3615826, --1470489, 2736431, -273804, 2334852, 1491964, 617402, 3241627, -306016, 1915019, 1107565, -1014149, -541703, -794032, -1821066, -795643, 1919850, 2940442, -669478, 303869, -1579474, --182536, 161598, -1560684, 1200443, -2982855, 169651, -96637, 44023, 4712116, -11611981, --382252, 11824045, 16256451, -6757594, 1824287, 2578591, -5650030, -3298535, 636729, -4715337, --4912906, 11376831, 1588064, -7554311, -1207423, -4932770, -2811056, 7396471, -2332167, -3288871, -6713571, 4142496, 6782827, -2892124, 1392106, 6615860, 286689, -3987877, 1808718, -586263, -820339, -8399345, -5725192, 2496987, -604517, 1985886, -7733089, 3615826, 2816425, 1795296, --13626857, -7984344, -3462281, -1714229, 1924682, -5966784, -3995930, 1322313, 10423349, 6864969, -3682935, -1861868, -1160715, -3959423, 2998424, -1155883, -7738458, -5911486, -731755, -130460, -10915659, 6047314, -5436355, -6060199, 7539278, 1502702, -4581657, 38118, 6761889, 2566780, -177167, -8837432, 9701794, -3428458, 6458557, 8500814, 8923331, 789737, -3331821, -2688113, -4569845, 5269388, -4639639, 3705483, 4967667, 3532611, -1557999, -1184337, 674847, 3038153, -2451890, -2637647, -4126390, -3847217, 1865626, -1844152, -1253057, -2668249, -571768, -1911261, -947040, -1576253, 1136019, 937914, -354872, 8053, 2147484, -1593433, -3306051, -583042, -2949569, -1799591, -1663763, -1702418, -1270237, -207232, -115964, -2010045, -112743, -1461363, --768262, 563714, 1949378, -1309965, -114890, -420370, -948651, 1841467, 2233920, -3149285, -4818954, -6154688, 7031935, -644245, -1900523, 3739306, -7095286, 2423972, 3869229, 777389, -2704756, 3349538, -1916092, 7834021, -3682398, -13369159, -7949448, -1758789, 528818, -2832531, --5706401, -6247030, -4234301, 13132399, -3638911, -1036161, 1902134, -2729452, 1574642, 10773389, --5175973, 5113696, -3352222, -6925635, 6213207, 4482335, 2871186, 9655623, 226023, 4547834, --412317, 1153199, -367757, -3171297, 2138357, -733903, 7005092, 1399086, -4807679, -1238561, --1378685, -329102, -7843147, 3159485, -7732015, 1884954, 10433012, -6793028, -13013751, 3026878, -1818919, 5977521, -2627446, -117575, 6110665, -3757023, 3002182, 4499515, 1276679, -2728378, -6034429, 1304060, 7744900, 1647120, -4783520, -4541391, 5039071, 8453569, 2987687, -70867, --6929930, -1396401, -2216203, 5019743, 1287953, -9482751, 1514513, 2529736, 717260, 972810, -3711389, -1656247, 1579474, -2577517, 1648194, 1497870, 1214939, 1959042, 874563, 1301912, -1202591, -2177549, 742493, -650688, -318364, 2170569, 930934, 1219771, 2454037, -714575, --7588134, 763967, -479426, 590558, -660351, -437013, 2158758, 1431298, -1194001, -1406602, --10411538, 23913842, -5627481, 10725070, 976568, 4457103, 3213709, -97711, -13458817, 11387032, --16770237, 5379984, 3977140, 15047418, -7108171, 6760816, -10684268, 6915971, -3483755, -11501386, --5534066, 2662880, 2895882, 4151086, 2090039, 5986648, 3902515, 9094056, -2873870, -7516193, --6782827, 2588255, -126165, -3731790, 6065568, 2629594, -1299765, 3606162, 7517804, -735513, -1909650, -1168768, 3692061, 2163053, -9735617, -4252018, -12741020, -2960306, -2206540, -332323, -6040335, 5383205, 754841, -3543348, -122943, -1948305, -3067681, 1655173, 17801028, 1566589, --446140, 5636608, -484258, 6463926, -2848637, 42950, -4297115, 17872432, 4166118, -7406134, --8485782, -5674189, 642635, -419833, -11515344, 602369, 2302639, 749472, 12439836, -3279208, -1776506, -7785165, -2604361, -21095268, -3707094, 1062468, 739271, -8123394, 2050847, -3921305, -2574296, 1197222, -3897683, -499290, 2699387, 4250407, 7883413, 2069101, -2965138, -2748242, --6470905, -2510945, 527744, 1044214, -3753802, -1430761, 3394098, 1208496, -1031329, -904628, --2803003, -2569464, -1312649, 708670, -5406290, -3790309, 919123, 2112587, -56908, -1393180, -1242319, 4349728, 650688, 332860, -449898, -1931662, 49929, -6254010, 12577812, 1133335, -10479720, 6379637, 10278394, 3477850, -10297721, 10199474, -6571300, 17609366, -11297375, -3309809, --15646029, -3268470, -1612223, 7027104, -7249368, 10289131, 8314520, -4929549, 636192, 11756936, -16540456, -5210332, 469762, -2113124, 5221070, 117038, -1874753, 2428267, 4572530, -7822209, -5979132, 1161789, 6847252, 2626909, 1090385, -13386876, -2115272, 15602006, -1810329, 5240934, -11989938, 3473555, -874563, -4139812, -5446556, -3267396, 598611, -5093295, -3018288, 9049496, -8397198, 2641405, 13910862, 9228274, -2849711, -1363115, 1950452, 3230352, -4182761, -11031087, -14464376, 6359236, -2905009, 13202193, 13844290, 15380815, 6718403, 2327872, -5521181, 396211, --7747048, -6250788, -3929895, -15413027, 6242735, -1953136, 13200582, -3119757, -10282152, -1948841, -1040456, -1537598, -13733158, 2196876, 3725347, 6266358, 6691022, -4667556, 2185065, -3192771, --8915815, 1746978, 3515968, -705985, -2605435, -6783364, 7137699, 3984119, -6280316, -7201587, --3977140, 4090956, -689342, -2070174, 1959579, -3223910, 2029372, -856309, 1266479, 3061775, --4535486, -2175938, 2088428, -1021665, 120259, 9139154, 3046743, 558346, -586800, 2123861, --3020436, -1801202, -261993, 2939368, 13697188, 780073, 2478196, -2090575, 1103807, -1789391, --20830054, 2383170, -233539, -3766150, -1584306, -10248866, 11695733, 12003897, 13415867, -21851182, -7011534, 4489852, 511101, 21503290, 8801462, -10730439, -1285806, 21231098, 2471754, 3771518, -4299263, -6264747, 3511136, 4362613, 13158169, 6680285, -10131828, -16618302, 6240588, 3919695, --8407935, -1589138, 766652, -10220948, 1120987, 12446278, 5264020, 6971269, 10077604, 16381005, -1505386, 14427332, 2806761, -5744519, -881542, -8555575, -4521527, 3567507, 4839892, 3732864, -7207492, -10283225, -4696547, 18394808, -1415729, -3962644, -10339060, 8720394, 7851200, 2732136, -3245922, -149787, 5014375, -8008504, 13080323, -6628745, -7905961, -6396817, -4458176, 17811766, -4735202, 3705483, -19459960, -10666014, -16013786, 1154809, -1785096, -1583769, -15201500, -21009906, --693100, 9430674, -5279052, 2682207, -1477469, -1446330, 5172215, -7322919, -3237869, -3343632, -6260989, 1049046, -4796942, -82678, -872952, -127238, -2343979, -4412542, 970126, 7015292, --3549254, -2316061, -4636417, -2057826, -3291556, -1556389, 2934000, -1044214, 4716948, -1612223, --1200443, -2794950, -2216203, 7378217, -918586, -504659, -3654480, -568546, 4200478, 1188095, --5541045, 1206886, 237834, 1553704, 19372450, 22798760, -5905580, 6365142, -1720134, -6738267, -1270237, -15365246, -9509058, -730144, -3132105, 30593588, -13841606, 3867618, -19523848, -2917357, -11838540, -5051956, -10887742, -11429982, -4206384, 4633196, 6009733, -818728, -1020592, -12840342, -2970507, 8892193, 4475356, 5429913, 1593433, 1944547, -7505456, -2500208, 4962298, 1779727, --54224, 508954, -9044664, 3955128, -9516574, -1592359, -291521, 2699924, -10562398, -1139240, -5114233, 7494181, -12029667, -6343667, 21240760, -8235063, -16823924, 14045617, -13697188, -4361003, --6085432, -2508261, -10526965, -7327751, -2248416, -10616622, -15118822, 24245090, 13361643, 10773389, -7363722, -9498857, -3738232, -6426345, 6781217, -11497627, 8056822, -6163815, 3436511, 8084202, -5261335, 1592359, -15570867, 15152108, -18591840, -4924717, -18026514, -7358890, 11785390, -748935, -6664179, 13542569, 4274030, -1442572, 2598455, -4813585, 212064, -1510218, -5197448, 6082748, --2192044, -2907693, 6971269, 3664144, -1920924, 418759, 265214, 1057099, -3226594, 3000572, -903554, 1589138, -3850975, 2526515, -1821603, 6601902, -3046743, 4647692, -1490354, -2388002, -6997039, -4787278, -2121177, -4289599, 2779381, 6922951, 3153043, -2056753, 3233037, -2882997, -3303904, 4798016, -5348308, -12776454, -1011465, 32073742, -14435922, 13919452, -28753732, 7852811, --18295486, -3464965, 10129680, -951872, 6475200, 10616622, 8456254, -12565464, 9286793, 1883343, -6849399, -2734821, 9524627, 8838506, -2014877, 1822140, 5700496, 6455336, -9281424, -3206193, --13508746, -1704565, 11787538, 279173, -5700496, 1182190, 4315369, 790274, -4963372, -9625022, -2367601, -6521371, 6126234, -6163815, 22774600, -2184528, -12499429, -14062260, 3085934, -7741142, -7117835, -15767362, -12382391, -16018617, 3600256, -13537200, -3293166, -19408958, 13763223, 2788508, -9235790, 5690832, -20959440, 1546188, -1942936, -7879655, -11747272, -3253438, -10014790, -12598213, --6992744, 5746666, 8184060, 11955041, -7008850, 1613297, 5129265, -17613660, 7975755, -12091407, --1173600, 9824738, 4132832, 3924526, 1759863, 20255602, -11728482, -4356708, -4514011, 5252745, --17429514, 1293322, -1491427, -257161, 11179263, 6452115, 5486284, 1921998, -4312147, 591632, --2182380, 8093329, -3245922, -1158031, -4702989, 9184788, 3635690, -3368328, 2461553, -8340290, -5575405, 2772938, 4366908, 600222, -1734630, 5089536, 9376987, 3099356, -4693326, -6412923, --2660195, 2267206, -6498286, -1597191, -9834938, -7243999, -3929895, -148713, -5452998, 3766686, --4318053, 9404368, -7629473, -312996, -139050, -26712550, -7680476, 30117384, 26656714, 15009300, --12801150, 13238700, 19954954, -13094282, 17636746, -14099304, 16289737, 3894999, -1017907, 5415954, --279710, 8607651, -12746926, -3572339, -5713917, 6574521, -12083354, -10844792, 17154100, -1574106, --3495567, 1687385, -16448651, -293668, 26630408, 14561013, 3085934, -177167, 5724655, 25210384, -10790568, 460635, 4298726, -6877854, -2923799, -5908802, 10859825, -5519570, 7272990, 1440962, -12958453, -15203110, -262530, -837519, 451508, -4226248, 7255811, 11668352, -2674154, -3212099, -11746736, 1427003, 1503775, 26579406, 4220342, 448824, -12087649, 5449240, -8978629, 12359305, --14139032, -12479027, 1973538, -12290049, -13191992, -20120312, 5461588, -6651294, 10474888, -3329674, -5928666, -29427506, 6058588, -9886478, -17870822, 9432285, 12403866, 6579890, 3863860, 2352032, -5223217, 8003135, -3787088, -4461934, -5403069, -237297, -5930276, 3847217, 813359, -8412230, --5865852, 5013838, 2940979, 511101, 8750996, -2923799, -886911, -6817724, -1449015, 180389, -3638374, 2424509, -5817533, -3433290, -1595044, -6898791, -1311576, -6467684, 2677912, 1940788, -7871065, 5507222, -541166, -3025268, 10737, 208843, -2229088, -326954, -8196408, -1299765, -3370476, 3808026, 1047972, -1218160, 7915088, 1486059, 22325776, -34360812, 14414447, 15025943, --24427626, -2493229, -20931524, -6908455, -18792092, -8500277, 21489868, -7360500, -1577327, -15117211, --2937221, 3468186, -22408992, -876710, 14305462, -27666568, 1008780, -18891950, -10204842, 374736, -2028835, -12513387, -10057740, -10486163, -3031710, -9016210, -591095, 4795868, -2731062, 7013145, --13507135, -8608725, 18015240, -8439611, 9749576, -10733123, 10143639, 9291088, 1571958, 2476049, -9446244, 443992, 13466870, 17059074, -3233037, 2523293, 25334402, 1502702, 13009993, -918586, --10107132, -19989852, 3338800, 13879187, -22072910, 288837, -12987981, -6815040, -28618440, 12357158, -18850074, -4933844, 9071508, -4632122, 20500416, 22713398, -1848983, -22491134, -21877490, 31169114, --24300388, 9093520, 3573950, 3239479, 23294292, -9928891, 37965900, -632971, -8644159, -9900436, --6882685, 6078453, -2411087, -2896419, -260919, 9816685, -2468533, -6167573, 8194798, -2960306, -4117800, -7550016, -4589710, 7189239, 522375, 10741713, -3574487, 4576825, -7932268, -2249489, --10843719, 2245194, 4372814, 5371931, 1007707, 5519033, 492311, -1677185, 5824513, -9146670, -6026376, -7756174, -2806761, 4727149, -9578851, -2398202, -5512591, -16001438, -4328254, 1065689, -5749888, -7808251, -4114579, -6864432, -2280091, 1694365, 6299107, 37312528, 42050952, -2485712, --31717260, 31323734, -34675420, 4884452, 14702747, 3642132, -3712999, -16000901, 18013630, -8068096, --6457484, -16294569, -9477919, -5083094, -20337744, -11193222, -9090835, -5090073, -3343095, 14119168, --207769, 12203076, 89657, -5280663, -17814450, -19519552, -4929549, -716723, -263067, -2967823, --7297150, -8435853, 9336722, 22472880, -12214350, 7737384, -7626788, -7864622, 8929237, -8712341, --14105746, 31550830, -3485903, 2896419, 1547799, -17637284, -3878356, -3703873, 8937827, -22783728, --10088878, 24089398, 3874061, -10249939, 13094282, 24482388, -13930190, -17253958, 8959839, -14627585, -236760, -27371290, 8833674, 23261006, -2381559, 12128451, 7086159, 4061429, 26692148, 8369281, --118112, 15381888, -2233383, -2143726, 9421011, 10084046, -38708928, 3528316, -16833588, 13677860, --629213, 514859, 9630927, -2925410, -3694746, -5104569, 5189394, 1964411, -3782256, 5158256, --5534602, 549219, -2935073, -7483981, 3441880, -3753802, 8373576, 4589173, -127775, 25770, -2308545, -2232846, 4964446, 2416456, 1562294, 2011118, -1388348, 1821066, -3331821, -6501507, --3545496, -1697586, 909996, -8453569, 6887517, 4603668, 360240, 2496450, -5651103, 7899519, -983548, -4712653, 2892661, 3402151, -10095321, -2105608, 1034013, -824097, 164283, 1833951, -1286343, -51167020, -35837208, 14963666, -15180025, -14304389, -43524124, -12553653, 9295920, 3608846, --8563091, -24197308, -299037, 12287365, -884763, 1682554, 12729209, 22596896, -19572702, 51424716, --13217762, -17052630, -5182415, -2871186, 246961, -20328080, 478889, -3563749, 10873783, -6852621, -15384036, -6345814, -13066364, 5382131, 6350646, -11662984, 12764106, -39139500, 324270, -3115462, -15641734, 18913426, -13676786, 17638894, -6753299, 5057324, -8413841, -2807835, -5170604, 14117021, --1877438, 18581102, 29010356, -25224342, -7048578, 13628468, -17000018, 10309532, -19313394, -10647224, --9612674, -11304354, -19717122, -10103911, 9193377, 7514582, 15129022, 19638202, 14263586, -23775866, -2971581, 4405563, 5657546, 4808753, 15197205, -7438347, -16086263, 9207336, -4192962, -12568685, -2443837, -21533892, -8922795, -18758806, 1702418, 11055783, -6848862, 10625749, 5686000, -642635, --4093641, -317828, -16738561, -6277095, 5515275, 2779918, 3625489, 1151588, 1848983, 1487669, -5165772, 1401233, -11257646, -1582696, 1655710, -1144609, 2864206, -5158256, -4743255, -10989748, -2778844, 9690520, -11067594, -7770133, 5616744, -2814277, -11296301, 7384660, -5532992, -4531728, -6666863, -536871, -2168422, -3473018, -5060009, -6700149, -7123740, -1864016, -6076305, -3629247, --3169686, 4789426, -417686, 7146289, -10640781, -34854732, 26303454, -44617196, 31354336, -4498978, --19958714, -17031156, -19010062, -12875238, -10023917, 953483, 22985054, -1867237, -19275814, 20467130, -29008746, -44532368, -11896523, 3098819, -3690451, -6953552, -2237141, -6185827, -7921531, -12952011, -16510928, -5801964, -12371116, -21195664, -21068426, 20738786, 5392332, -3808026, -2306934, 8053, --4658429, -5661304, 4558034, -18649284, 10139881, 21198348, 15819438, 9865003, 20236276, 23552526, --13566191, 5007932, -19520090, 21068962, -12089796, -3485366, -145492, -30772904, 9953050, 25303800, -4279935, -10429254, -8496519, 33086280, -13367012, -14317810, 9251896, -33792264, -3987877, -16774532, -682900, -33043330, 13756780, 5714454, 13480829, -53601728, -45995880, 7486128, -16103980, -10798085, --6702297, -35908612, 11828877, -21240760, -23189602, 17428978, -15624017, -9220221, 7394323, -3787088, --7060926, -1319629, -1997697, 7485055, -17749490, -8377871, -17128330, 13422, -7558606, 3406983, --2505040, -13517336, -5593121, 4734665, -938987, 955093, 3543885, -14799384, 1822677, -18745922, -8562017, 2822867, -13659607, 4312684, -16235513, -3502546, -5988258, 1199907, 8498130, -6395743, -8795019, -4743255, 15023796, -6919729, 9412421, -5304285, -1753957, -493384, -1913945, 3059091, --1639604, -11811, -1317481, -3433290, -51003, 5417028, -1598802, -2336999, -1972464, 1732482, --2006824, -2037425, -1535451, -967978, 375810, -964757, -751619, -862752, -1945620, -807454, -933082, -42413, 3280281, 39715024, -54683524, 56120728, 16663399, -1654099, 4861366, -40119288, -8587787, 19184546, -6839199, 47834124, -13303661, 20818780, -16494822, 52669184, -1612223, -6844031, --19772418, -7119445, 7944079, -5071820, 21562884, 16727287, -5280126, 1628866, -20329154, 8076686, -21366388, 21538188, -22936736, 9931038, -4294431, 22979686, -5872294, 15006079, -13456669, -10604274, --30691836, 2272575, -19334870, -28843390, 41489920, -18101140, -3326989, -7693360, -9575630, 5721434, -3720516, 14705968, -6568079, 22509924, 2418067, 40734008, 15912317, 45071388, 38515120, -3691525, -25861072, 19622632, -6400575, 23061290, 31538482, -13302587, -30837328, 17842368, 11838004, 25603374, -13432510, -2429878, 24159, -33253784, -2823941, -9753871, -11756936, 44394392, -4734665, -440234, -55413132, 36870148, 20185810, 24641838, 13016435, 1612223, 6663642, 31982474, 763430, -8349417, -9858024, 26874148, 13016435, 15327128, 7960185, 18598282, -594853, 5364951, 7328825, 13024488, -4853313, 3314641, 2747169, 1483374, 10950019, 15821586, 7155953, 20906828, 1950452, 12904229, -13246753, 23567560, 92342, 16132971, 14777909, 3060164, 12545063, 672162, 3165391, -3989488, -5475547, 6553047, 3746285, 3393561, 1370632, -2818036, 1196148, 5516886, -2384244, 2996277, -11260867, -2362232, 17067664, -38375532, 73679088, -9994926, -8200167, -4698158, 53602804, -32916092, -26883810, -36037996, 34144992, 6917045, -6666863, 879931, 19994684, -8586713, 18639622, -8656507, --177704, 37667400, 11534672, -9630390, -164819, 9415105, 7364259, -36509908, 9710921, -13285944, --3358128, -19226958, 18564996, 17721572, 2698850, 8419210, 31372588, -10398653, -50119048, 12005507, -32687386, -12658879, -32999308, 8791261, 23365158, 7998303, -99858, -39355860, -19039590, -23272280, -21762062, 8961986, 22413286, -47374028, 2867965, -8662412, -52623548, -13493177, 7519951, 23863376, -32824288, -17457968, 61477624, 12139725, 838592, -12582644, -25145422, -17078938, 11374147, -28434830, -57898308, -18456548, 2108829, 34593276, -22965728, 21188684, -22450868, -12490302, 47940424, -24234352, -31312996, 29386704, 10256382, 13510357, -42163692, -4777078, -2570538, -14386530, 19293530, 18006114, -6803228, 5667210, 18742700, -4291746, 7047505, -2029909, 5281736, -7948911, 6338835, -1124208, -5269925, 4757750, 783295, -13935558, -2941516, 2284386, -5636608, -1347009, 9628780, 5987722, -16208133, -7249368, 2957085, -27074400, -23654532, -2947958, -2015413, 16746077, 11667279, -7383049, --6383395, -21480742, -718333, 7984344, -4198331, 413391, 4560719, -6441377, 4235375, -15681999, -214748, -4942434, -7036767, 11146514, -43320652, 24714852, 15812459, 24719684, -9877351, -7035694, -10007811, 59593, 2843805, 912681, 4881767, 1155346, -6820945, 31977642, -7473780, -22071836, -9319005, -594853, -19432580, 6747394, 4478577, 13187697, -8972187, -14712947, 15789910, -12723304, --1750199, -3801583, 12956306, -22390202, 7619809, -13896904, 11320997, -19726248, 6985228, -6626598, -3370476, 43184284, -29735132, 5614059, 9480603, -26796300, 9688909, 12326019, -19873350, -4152160, --7632157, 35913444, 2992519, -41576356, 24846922, -33611876, 6072547, 17374216, -16162499, 19876034, --24112484, -19866372, 27282170, -4663261, 11569568, -40963252, 7625178, 8835285, -2219961, -6332393, --388695, 16602196, 577673, -54469312, 32937030, -3445638, 12617540, -14319958, -16703665, 51912732, --1438277, -33228014, 2820720, 16754667, 3774203, -50507204, 1737314, 46821048, -8635569, -21681532, -5067525, 22641994, -3090229, 61740, -4053912, -2356863, 3173444, -8210904, -4859219, 15370077, --6752763, -435402, -9125195, 9010305, 13653701, -2476586, -2140504, 14525043, 4683125, -10004053, --2458332, 6251862, 4112431, -8499740, 4467840, 9991168, -8431021, 2136209, 2420751, 6434935, --15626165, 977642, 9657771, 3666828, -10916733, 600222, 7575249, 1255204, -8127152, -5432060, -20485920, -7113540, -107075680, -227823856, -90900832, -171527568, -208907216, 73983496, -857383, 75884016, -288629856, 252064112, 143390704, 276215776, 154007856, 17377438, 95428808, 58706836, -104518568, -73883104, --21790516, -115852984, -140099680, -46664284, -70968968, -110911088, -27918898, -5094368, -141215296, -97320736, --14810121, -85860152, -111140872, -32447942, -54588496, -120822264, -23268522, 12206297, -67799816, -51719996, -50965692, -18460844, -72706280, 15149960, 47976396, -35919348, 29376502, 105641160, -15632607, -28304908, -104542192, 55764780, -26240640, 173695456, 236126032, 146938880, 248988384, 372514848, 286524800, 272667072, -398497792, 345453344, 254232000, 311948832, 283574688, 180363936, 159536016, 85826328, -29753386, -124581968, --222852432, -316567552, -376702976, -472311104, -504623776, -532122816, -602827648, -602401344, -455308416, -465896032, --424299808, -191122816, -147904720, -143854560, 63703492, 121643136, 2567317, 126785824, 175977696, 60209536, -83857088, 165034656, 123339112, 71798968, 116486496, 144235744, 61284888, 89785216, 179014240, 106449688, -70076152, 164971312, 123714384, 49942416, 107213656, 122490856, 15721191, 63251448, 147455360, 84536768, -101431024, 207883392, 195565424, 206089712, 266861344, 268735552, 215572992, 203900896, 174033680, 106267152, -76625440, 40767828, -6388764, -41973104, -113781200, -155447744, -210108720, -279958848, -311737856, -352222752, --410007232, -390456000, -350705024, -309728896, -226481680, -148488832, -78776144, -29069950, 12165495, 25860534, -31632972, 40833328, 43250320, 36562520, 39009040, 43104828, 41725072, 46758772, 60379188, 67723584, -72143104, 80195096, 81867984, 80804440, 77153720, 57716844, 36150740, 23155780, 19529216, 19545322, -0, 0, 0, 0, 0, 0, 0, 0, }, +937377, 5580773, 1907502, 3636764, -5305359, -2907156, 239444, -940061, 1421097, 4420058, +-10628970, -74625, 3493419, 2098629, 3220152, -3077344, -4296041, 4645544, -78920, 1294933, +2895345, 3843996, 1417339, 802085, 3456912, -510564, -1107565, -2987687, 1609002, -840740, +-486942, -1551020, 1986422, 5056787, 20401, -1050656, 2378875, -3234647, -4840965, -2675228, +-981937, -3139084, 281857, -725850, 2031520, -1958505, 563714, -3927748, -379031, -3229816, +-155156, -1479079, -1276679, 1644436, -1864553, -189515, 2657511, -1397475, 3169686, 3842385, +278636, 5193689, -2656974, -177167, 2482491, -898185, 1675037, 2360622, 1275068, -2731599, +1074816, 1250372, 878321, 166430, -2284923, 3031173, -818191, 1448478, -499290, -627602, +190589, -3153580, -260919, -2450279, -1142998, -107374, -427886, -83752, -244813, -1316944, +1567126, 183610, 438624, 110059, 875100, -534187, 1105417, -81068, 470299, -180926, +-482110, 623844, 60130, -184684, -13959, 880468, 188442, -153545, 542777, 285615, +-113817, 14093398, -3992172, 1350230, -3084860, -259846, -1294933, 1615445, 1084479, 4826470, +1474784, 836982, 1861332, -1179505, -9757629, -9336185, -2927020, 1236951, 2842732, -2376191, +518617, -3041911, -1095217, 142271, 1639067, -4147865, -4518843, -1342714, -301721, 2419140, +784905, -1023276, -3266860, 562104, -1806034, 79457, 2261300, -3311420, 1569811, 2918967, +-2304787, -6068789, -1596654, 2188823, -376347, 1774895, -311385, 1534377, -297427, 1687385, +315680, -5666136, 1096827, 2298344, -908922, 1553168, 250182, -341450, -1135482, 42413, +-3344706, -311385, -929324, -4218732, -723702, -147103, 3718368, -3708168, 6126234, 7128035, +5606543, -2452426, -1155883, -1313186, 2710124, -1050120, -1556926, 1688996, -4060892, -3693135, +434329, 3245922, -117038, -1666984, -3633542, -2151242, -2773475, -1469953, -2560338, 936303, +-1539746, -422517, -1614908, -854699, 73551, 834297, 57445, 858993, -602906, 51540, +677531, 348966, 531502, 539555, 310311, -684510, 679142, -13308493, -86436, -2052458, +918049, -459562, -6890202, -1318018, -1455457, 2153389, 3347390, -4612795, 3682935, -1174674, +2536715, 2549063, -1388885, 5540508, 334471, 245887, -965831, 962610, -1379758, 1022739, +-1549946, 206695, -3624416, 389231, 3986804, 537, 1676648, 4204236, -4138201, -4355634, +1813550, -1977833, 3358128, -3401077, -1031866, -7111929, -5489505, -4752382, 2069101, 613643, +2522757, -2583423, -1846299, -536334, 4457639, -4937602, 2033130, 862215, 360777, 2505040, +-1730335, -2261300, -2979097, 1816771, 958851, -4367445, -4822712, -5598490, -170725, -1201517, +1816771, -252866, -1065689, 526134, 745177, 2507187, -6701223, 830539, 3802657, 5657009, +5798206, 4800700, -854162, -3535832, 5195837, 1592359, 1001264, -2595771, 1494649, 1078574, +149250, -640487, -1548873, -223338, 1770600, -1371705, -2284923, -926102, -989453, 388158, +-200790, -549219, 1541893, 129386, 1971390, -178241, 559956, 1332514, 1234803, 977642, +693100, -783295, -886911, -276489, 774168, -144955, 755914, -530428, 1330366, 1135482, +-1180042, 80531, 81068, -1899449, 1431298, -7771207, 4826470, -4118337, 5751498, 7489349, +4669167, -79457, 2223719, 512712, 6133750, -3341485, -3356517, 1761474, -931471, 2516314, +4721243, -6738804, 2146947, 6058588, 2857764, -433255, -47245, 738198, -2811593, -40265, +-2656437, -3704409, -965831, 5740761, -2150705, 2669322, -1986422, -3500398, 6871948, -5985037, +4614406, 5047661, 1000191, 3201361, -4434554, -1211181, -1755031, -1398012, 3204583, 971200, +-4769561, 779537, -460098, 907312, -1028108, 1721208, 1651415, 5724655, -5986648, 2885681, +2278480, -602369, 2263448, 633508, 3522410, 3295851, 2089502, -1934346, 2806761, 4954782, +-124554, 2903935, -2097018, 5873905, 6062883, 6654515, -1912871, -4661114, 1504849, -650151, +2374043, 1712618, -25770, -353798, -6667400, -1745367, -1546725, -528818, -1367410, -2002529, +2289755, 876173, 723165, 2682744, -159451, 2712809, 1714229, 877247, -380105, 465467, +-594316, -1140851, 803696, 200790, 1315871, -398358, 316754, -90731, -886911, 1475858, +-55835, -1272921, 518617, 1195075, 140123, -1656784, 412317, -768262, 2273112, 1661079, +1657321, -190589, 512712, 1293322, 133681, 663572, 10902238, -999117, -3404299, 10370735, +-4095251, 4660577, -2492155, -9903121, 1768453, -2844342, 315143, 11884175, -4597763, -5615133, +457414, 6252936, -10044318, -3717294, 7537668, -2637647, 2435783, 3576634, -2688650, 3257196, +-2101850, -3464965, 700080, -964220, -1222455, -1271310, 4198868, -3348464, 8177618, 2058363, +174483, -4670777, -1393717, 5021891, -5742372, 1243393, 1985349, -873489, -8006893, 5498095, +1452236, 1370632, 705448, -1078037, 4125853, -2426120, 5642514, 3242164, -2201708, -9726490, +4334159, 2645163, -249108, -2733210, 2348810, 6327024, 6387690, -668941, 3775276, -5718212, +4170413, -985158, -1993939, 2522757, 4937602, -3439195, 4887136, 913217, -2081449, -1692754, +3983582, -3307662, 9474161, -4843650, 3913789, -3241090, 839129, -2891587, 3781182, -3364033, +154619, 2203318, -673236, 455267, -2947421, -957778, -420370, 57982, 782221, -1231582, +1628330, -120796, -1167157, 1721745, -3383897, -3349538, -1959579, 103616, -354872, -632434, +74088, -2267743, 2810519, 231391, -212064, 2035815, -1656247, -279173, 2211908, 1013612, +756988, 3615289, 3241090, 10240813, 1357210, -2577517, -13080323, 4052302, 7431367, 4449586, +2910377, -1096290, 3785477, 14248554, -1723893, 6589554, 651761, 3690988, 1410360, 271120, +2863133, -1180579, -6076305, -1689533, -4515085, -1165547, -6371584, 2313377, 195421, 7483444, +1473174, -3463354, 2478733, -1047435, -1817308, 4801237, 1729261, 3591667, 2100239, -2055679, +-8324721, 528818, 4859756, -317291, -1586454, 2189360, -4392141, -1859721, -7752416, -9605694, +5000416, 5564667, 4350802, -1345399, -1562831, 87510, -144418, 2854543, -470836, 3125126, +2806761, -76236, 2892661, -2655901, 795643, -1393180, 1726577, 2107218, 9061307, 43487, +7420093, -2757906, -7579544, -670015, -999654, -2870649, 6090801, -462246, 2536715, 587337, +-4293894, -5176510, -1801202, -1074279, 619012, 5375689, 1797444, 600759, 2304250, 3615826, +-1470489, 2736431, -273804, 2334852, 1491964, 617402, 3241627, -306016, 1915019, 1107565, +1014149, -541703, -794032, -1821066, -795643, 1919850, 2940442, -669478, 303869, -1579474, +-182536, 161598, -1560684, 1200443, -2982855, 169651, -96637, 44023, 4712116, -11611981, +-382252, 11824045, 16256451, -6757594, 1824287, 2578591, -5650030, -3298535, 636729, -4715337, +-4912906, 11376831, 1588064, -7554311, -1207423, -4932770, -2811056, 7396471, -2332167, -3288871, +6713571, 4142496, 6782827, -2892124, 1392106, 6615860, 286689, -3987877, 1808718, -586263, +820339, -8399345, -5725192, 2496987, -604517, 1985886, -7733089, 3615826, 2816425, 1795296, +-13626857, -7984344, -3462281, -1714229, 1924682, -5966784, -3995930, 1322313, 10423349, 6864969, +3682935, -1861868, -1160715, -3959423, 2998424, -1155883, -7738458, -5911486, -731755, -130460, +10915659, 6047314, -5436355, -6060199, 7539278, 1502702, -4581657, 38118, 6761889, 2566780, +177167, -8837432, 9701794, -3428458, 6458557, 8500814, 8923331, 789737, -3331821, -2688113, +4569845, 5269388, -4639639, 3705483, 4967667, 3532611, -1557999, -1184337, 674847, 3038153, +2451890, -2637647, -4126390, -3847217, 1865626, -1844152, -1253057, -2668249, -571768, -1911261, +947040, -1576253, 1136019, 937914, -354872, 8053, 2147484, -1593433, -3306051, -583042, +2949569, -1799591, -1663763, -1702418, -1270237, -207232, -115964, -2010045, -112743, -1461363, +-768262, 563714, 1949378, -1309965, -114890, -420370, -948651, 1841467, 2233920, -3149285, +4818954, -6154688, 7031935, -644245, -1900523, 3739306, -7095286, 2423972, 3869229, 777389, +2704756, 3349538, -1916092, 7834021, -3682398, -13369159, -7949448, -1758789, 528818, -2832531, +-5706401, -6247030, -4234301, 13132399, -3638911, -1036161, 1902134, -2729452, 1574642, 10773389, +-5175973, 5113696, -3352222, -6925635, 6213207, 4482335, 2871186, 9655623, 226023, 4547834, +-412317, 1153199, -367757, -3171297, 2138357, -733903, 7005092, 1399086, -4807679, -1238561, +-1378685, -329102, -7843147, 3159485, -7732015, 1884954, 10433012, -6793028, -13013751, 3026878, +1818919, 5977521, -2627446, -117575, 6110665, -3757023, 3002182, 4499515, 1276679, -2728378, +6034429, 1304060, 7744900, 1647120, -4783520, -4541391, 5039071, 8453569, 2987687, -70867, +-6929930, -1396401, -2216203, 5019743, 1287953, -9482751, 1514513, 2529736, 717260, 972810, +3711389, -1656247, 1579474, -2577517, 1648194, 1497870, 1214939, 1959042, 874563, 1301912, +1202591, -2177549, 742493, -650688, -318364, 2170569, 930934, 1219771, 2454037, -714575, +-7588134, 763967, -479426, 590558, -660351, -437013, 2158758, 1431298, -1194001, -1406602, +-10411538, 23913842, -5627481, 10725070, 976568, 4457103, 3213709, -97711, -13458817, 11387032, +-16770237, 5379984, 3977140, 15047418, -7108171, 6760816, -10684268, 6915971, -3483755, -11501386, +-5534066, 2662880, 2895882, 4151086, 2090039, 5986648, 3902515, 9094056, -2873870, -7516193, +-6782827, 2588255, -126165, -3731790, 6065568, 2629594, -1299765, 3606162, 7517804, -735513, +1909650, -1168768, 3692061, 2163053, -9735617, -4252018, -12741020, -2960306, -2206540, -332323, +6040335, 5383205, 754841, -3543348, -122943, -1948305, -3067681, 1655173, 17801028, 1566589, +-446140, 5636608, -484258, 6463926, -2848637, 42950, -4297115, 17872432, 4166118, -7406134, +-8485782, -5674189, 642635, -419833, -11515344, 602369, 2302639, 749472, 12439836, -3279208, +1776506, -7785165, -2604361, -21095268, -3707094, 1062468, 739271, -8123394, 2050847, -3921305, +2574296, 1197222, -3897683, -499290, 2699387, 4250407, 7883413, 2069101, -2965138, -2748242, +-6470905, -2510945, 527744, 1044214, -3753802, -1430761, 3394098, 1208496, -1031329, -904628, +-2803003, -2569464, -1312649, 708670, -5406290, -3790309, 919123, 2112587, -56908, -1393180, +1242319, 4349728, 650688, 332860, -449898, -1931662, 49929, -6254010, 12577812, 1133335, +10479720, 6379637, 10278394, 3477850, -10297721, 10199474, -6571300, 17609366, -11297375, -3309809, +-15646029, -3268470, -1612223, 7027104, -7249368, 10289131, 8314520, -4929549, 636192, 11756936, +16540456, -5210332, 469762, -2113124, 5221070, 117038, -1874753, 2428267, 4572530, -7822209, +5979132, 1161789, 6847252, 2626909, 1090385, -13386876, -2115272, 15602006, -1810329, 5240934, +11989938, 3473555, -874563, -4139812, -5446556, -3267396, 598611, -5093295, -3018288, 9049496, +8397198, 2641405, 13910862, 9228274, -2849711, -1363115, 1950452, 3230352, -4182761, -11031087, +14464376, 6359236, -2905009, 13202193, 13844290, 15380815, 6718403, 2327872, -5521181, 396211, +-7747048, -6250788, -3929895, -15413027, 6242735, -1953136, 13200582, -3119757, -10282152, -1948841, +1040456, -1537598, -13733158, 2196876, 3725347, 6266358, 6691022, -4667556, 2185065, -3192771, +-8915815, 1746978, 3515968, -705985, -2605435, -6783364, 7137699, 3984119, -6280316, -7201587, +-3977140, 4090956, -689342, -2070174, 1959579, -3223910, 2029372, -856309, 1266479, 3061775, +-4535486, -2175938, 2088428, -1021665, 120259, 9139154, 3046743, 558346, -586800, 2123861, +-3020436, -1801202, -261993, 2939368, 13697188, 780073, 2478196, -2090575, 1103807, -1789391, +-20830054, 2383170, -233539, -3766150, -1584306, -10248866, 11695733, 12003897, 13415867, -21851182, +7011534, 4489852, 511101, 21503290, 8801462, -10730439, -1285806, 21231098, 2471754, 3771518, +4299263, -6264747, 3511136, 4362613, 13158169, 6680285, -10131828, -16618302, 6240588, 3919695, +-8407935, -1589138, 766652, -10220948, 1120987, 12446278, 5264020, 6971269, 10077604, 16381005, +1505386, 14427332, 2806761, -5744519, -881542, -8555575, -4521527, 3567507, 4839892, 3732864, +7207492, -10283225, -4696547, 18394808, -1415729, -3962644, -10339060, 8720394, 7851200, 2732136, +3245922, -149787, 5014375, -8008504, 13080323, -6628745, -7905961, -6396817, -4458176, 17811766, +4735202, 3705483, -19459960, -10666014, -16013786, 1154809, -1785096, -1583769, -15201500, -21009906, +-693100, 9430674, -5279052, 2682207, -1477469, -1446330, 5172215, -7322919, -3237869, -3343632, +6260989, 1049046, -4796942, -82678, -872952, -127238, -2343979, -4412542, 970126, 7015292, +-3549254, -2316061, -4636417, -2057826, -3291556, -1556389, 2934000, -1044214, 4716948, -1612223, +-1200443, -2794950, -2216203, 7378217, -918586, -504659, -3654480, -568546, 4200478, 1188095, +-5541045, 1206886, 237834, 1553704, 19372450, 22798760, -5905580, 6365142, -1720134, -6738267, +1270237, -15365246, -9509058, -730144, -3132105, 30593588, -13841606, 3867618, -19523848, -2917357, +11838540, -5051956, -10887742, -11429982, -4206384, 4633196, 6009733, -818728, -1020592, -12840342, +2970507, 8892193, 4475356, 5429913, 1593433, 1944547, -7505456, -2500208, 4962298, 1779727, +-54224, 508954, -9044664, 3955128, -9516574, -1592359, -291521, 2699924, -10562398, -1139240, +5114233, 7494181, -12029667, -6343667, 21240760, -8235063, -16823924, 14045617, -13697188, -4361003, +-6085432, -2508261, -10526965, -7327751, -2248416, -10616622, -15118822, 24245090, 13361643, 10773389, +7363722, -9498857, -3738232, -6426345, 6781217, -11497627, 8056822, -6163815, 3436511, 8084202, +5261335, 1592359, -15570867, 15152108, -18591840, -4924717, -18026514, -7358890, 11785390, -748935, +6664179, 13542569, 4274030, -1442572, 2598455, -4813585, 212064, -1510218, -5197448, 6082748, +-2192044, -2907693, 6971269, 3664144, -1920924, 418759, 265214, 1057099, -3226594, 3000572, +903554, 1589138, -3850975, 2526515, -1821603, 6601902, -3046743, 4647692, -1490354, -2388002, +6997039, -4787278, -2121177, -4289599, 2779381, 6922951, 3153043, -2056753, 3233037, -2882997, +3303904, 4798016, -5348308, -12776454, -1011465, 32073742, -14435922, 13919452, -28753732, 7852811, +-18295486, -3464965, 10129680, -951872, 6475200, 10616622, 8456254, -12565464, 9286793, 1883343, +6849399, -2734821, 9524627, 8838506, -2014877, 1822140, 5700496, 6455336, -9281424, -3206193, +-13508746, -1704565, 11787538, 279173, -5700496, 1182190, 4315369, 790274, -4963372, -9625022, +2367601, -6521371, 6126234, -6163815, 22774600, -2184528, -12499429, -14062260, 3085934, -7741142, +7117835, -15767362, -12382391, -16018617, 3600256, -13537200, -3293166, -19408958, 13763223, 2788508, +9235790, 5690832, -20959440, 1546188, -1942936, -7879655, -11747272, -3253438, -10014790, -12598213, +-6992744, 5746666, 8184060, 11955041, -7008850, 1613297, 5129265, -17613660, 7975755, -12091407, +-1173600, 9824738, 4132832, 3924526, 1759863, 20255602, -11728482, -4356708, -4514011, 5252745, +-17429514, 1293322, -1491427, -257161, 11179263, 6452115, 5486284, 1921998, -4312147, 591632, +-2182380, 8093329, -3245922, -1158031, -4702989, 9184788, 3635690, -3368328, 2461553, -8340290, +5575405, 2772938, 4366908, 600222, -1734630, 5089536, 9376987, 3099356, -4693326, -6412923, +-2660195, 2267206, -6498286, -1597191, -9834938, -7243999, -3929895, -148713, -5452998, 3766686, +-4318053, 9404368, -7629473, -312996, -139050, -26712550, -7680476, 30117384, 26656714, 15009300, +-12801150, 13238700, 19954954, -13094282, 17636746, -14099304, 16289737, 3894999, -1017907, 5415954, +-279710, 8607651, -12746926, -3572339, -5713917, 6574521, -12083354, -10844792, 17154100, -1574106, +-3495567, 1687385, -16448651, -293668, 26630408, 14561013, 3085934, -177167, 5724655, 25210384, +10790568, 460635, 4298726, -6877854, -2923799, -5908802, 10859825, -5519570, 7272990, 1440962, +12958453, -15203110, -262530, -837519, 451508, -4226248, 7255811, 11668352, -2674154, -3212099, +11746736, 1427003, 1503775, 26579406, 4220342, 448824, -12087649, 5449240, -8978629, 12359305, +-14139032, -12479027, 1973538, -12290049, -13191992, -20120312, 5461588, -6651294, 10474888, -3329674, +5928666, -29427506, 6058588, -9886478, -17870822, 9432285, 12403866, 6579890, 3863860, 2352032, +5223217, 8003135, -3787088, -4461934, -5403069, -237297, -5930276, 3847217, 813359, -8412230, +-5865852, 5013838, 2940979, 511101, 8750996, -2923799, -886911, -6817724, -1449015, 180389, +3638374, 2424509, -5817533, -3433290, -1595044, -6898791, -1311576, -6467684, 2677912, 1940788, +7871065, 5507222, -541166, -3025268, 10737, 208843, -2229088, -326954, -8196408, -1299765, +3370476, 3808026, 1047972, -1218160, 7915088, 1486059, 22325776, -34360812, 14414447, 15025943, +-24427626, -2493229, -20931524, -6908455, -18792092, -8500277, 21489868, -7360500, -1577327, -15117211, +-2937221, 3468186, -22408992, -876710, 14305462, -27666568, 1008780, -18891950, -10204842, 374736, +2028835, -12513387, -10057740, -10486163, -3031710, -9016210, -591095, 4795868, -2731062, 7013145, +-13507135, -8608725, 18015240, -8439611, 9749576, -10733123, 10143639, 9291088, 1571958, 2476049, +9446244, 443992, 13466870, 17059074, -3233037, 2523293, 25334402, 1502702, 13009993, -918586, +-10107132, -19989852, 3338800, 13879187, -22072910, 288837, -12987981, -6815040, -28618440, 12357158, +18850074, -4933844, 9071508, -4632122, 20500416, 22713398, -1848983, -22491134, -21877490, 31169114, +-24300388, 9093520, 3573950, 3239479, 23294292, -9928891, 37965900, -632971, -8644159, -9900436, +-6882685, 6078453, -2411087, -2896419, -260919, 9816685, -2468533, -6167573, 8194798, -2960306, +4117800, -7550016, -4589710, 7189239, 522375, 10741713, -3574487, 4576825, -7932268, -2249489, +-10843719, 2245194, 4372814, 5371931, 1007707, 5519033, 492311, -1677185, 5824513, -9146670, +6026376, -7756174, -2806761, 4727149, -9578851, -2398202, -5512591, -16001438, -4328254, 1065689, +5749888, -7808251, -4114579, -6864432, -2280091, 1694365, 6299107, 37312528, 42050952, -2485712, +-31717260, 31323734, -34675420, 4884452, 14702747, 3642132, -3712999, -16000901, 18013630, -8068096, +-6457484, -16294569, -9477919, -5083094, -20337744, -11193222, -9090835, -5090073, -3343095, 14119168, +-207769, 12203076, 89657, -5280663, -17814450, -19519552, -4929549, -716723, -263067, -2967823, +-7297150, -8435853, 9336722, 22472880, -12214350, 7737384, -7626788, -7864622, 8929237, -8712341, +-14105746, 31550830, -3485903, 2896419, 1547799, -17637284, -3878356, -3703873, 8937827, -22783728, +-10088878, 24089398, 3874061, -10249939, 13094282, 24482388, -13930190, -17253958, 8959839, -14627585, +236760, -27371290, 8833674, 23261006, -2381559, 12128451, 7086159, 4061429, 26692148, 8369281, +-118112, 15381888, -2233383, -2143726, 9421011, 10084046, -38708928, 3528316, -16833588, 13677860, +-629213, 514859, 9630927, -2925410, -3694746, -5104569, 5189394, 1964411, -3782256, 5158256, +-5534602, 549219, -2935073, -7483981, 3441880, -3753802, 8373576, 4589173, -127775, 25770, +2308545, -2232846, 4964446, 2416456, 1562294, 2011118, -1388348, 1821066, -3331821, -6501507, +-3545496, -1697586, 909996, -8453569, 6887517, 4603668, 360240, 2496450, -5651103, 7899519, +983548, -4712653, 2892661, 3402151, -10095321, -2105608, 1034013, -824097, 164283, 1833951, +1286343, -51167020, -35837208, 14963666, -15180025, -14304389, -43524124, -12553653, 9295920, 3608846, +-8563091, -24197308, -299037, 12287365, -884763, 1682554, 12729209, 22596896, -19572702, 51424716, +-13217762, -17052630, -5182415, -2871186, 246961, -20328080, 478889, -3563749, 10873783, -6852621, +15384036, -6345814, -13066364, 5382131, 6350646, -11662984, 12764106, -39139500, 324270, -3115462, +15641734, 18913426, -13676786, 17638894, -6753299, 5057324, -8413841, -2807835, -5170604, 14117021, +-1877438, 18581102, 29010356, -25224342, -7048578, 13628468, -17000018, 10309532, -19313394, -10647224, +-9612674, -11304354, -19717122, -10103911, 9193377, 7514582, 15129022, 19638202, 14263586, -23775866, +2971581, 4405563, 5657546, 4808753, 15197205, -7438347, -16086263, 9207336, -4192962, -12568685, +2443837, -21533892, -8922795, -18758806, 1702418, 11055783, -6848862, 10625749, 5686000, -642635, +-4093641, -317828, -16738561, -6277095, 5515275, 2779918, 3625489, 1151588, 1848983, 1487669, +5165772, 1401233, -11257646, -1582696, 1655710, -1144609, 2864206, -5158256, -4743255, -10989748, +2778844, 9690520, -11067594, -7770133, 5616744, -2814277, -11296301, 7384660, -5532992, -4531728, +6666863, -536871, -2168422, -3473018, -5060009, -6700149, -7123740, -1864016, -6076305, -3629247, +-3169686, 4789426, -417686, 7146289, -10640781, -34854732, 26303454, -44617196, 31354336, -4498978, +-19958714, -17031156, -19010062, -12875238, -10023917, 953483, 22985054, -1867237, -19275814, 20467130, +29008746, -44532368, -11896523, 3098819, -3690451, -6953552, -2237141, -6185827, -7921531, -12952011, +16510928, -5801964, -12371116, -21195664, -21068426, 20738786, 5392332, -3808026, -2306934, 8053, +-4658429, -5661304, 4558034, -18649284, 10139881, 21198348, 15819438, 9865003, 20236276, 23552526, +-13566191, 5007932, -19520090, 21068962, -12089796, -3485366, -145492, -30772904, 9953050, 25303800, +4279935, -10429254, -8496519, 33086280, -13367012, -14317810, 9251896, -33792264, -3987877, -16774532, +682900, -33043330, 13756780, 5714454, 13480829, -53601728, -45995880, 7486128, -16103980, -10798085, +-6702297, -35908612, 11828877, -21240760, -23189602, 17428978, -15624017, -9220221, 7394323, -3787088, +-7060926, -1319629, -1997697, 7485055, -17749490, -8377871, -17128330, 13422, -7558606, 3406983, +-2505040, -13517336, -5593121, 4734665, -938987, 955093, 3543885, -14799384, 1822677, -18745922, +8562017, 2822867, -13659607, 4312684, -16235513, -3502546, -5988258, 1199907, 8498130, -6395743, +8795019, -4743255, 15023796, -6919729, 9412421, -5304285, -1753957, -493384, -1913945, 3059091, +-1639604, -11811, -1317481, -3433290, -51003, 5417028, -1598802, -2336999, -1972464, 1732482, +-2006824, -2037425, -1535451, -967978, 375810, -964757, -751619, -862752, -1945620, -807454, +933082, -42413, 3280281, 39715024, -54683524, 56120728, 16663399, -1654099, 4861366, -40119288, +8587787, 19184546, -6839199, 47834124, -13303661, 20818780, -16494822, 52669184, -1612223, -6844031, +-19772418, -7119445, 7944079, -5071820, 21562884, 16727287, -5280126, 1628866, -20329154, 8076686, +21366388, 21538188, -22936736, 9931038, -4294431, 22979686, -5872294, 15006079, -13456669, -10604274, +-30691836, 2272575, -19334870, -28843390, 41489920, -18101140, -3326989, -7693360, -9575630, 5721434, +3720516, 14705968, -6568079, 22509924, 2418067, 40734008, 15912317, 45071388, 38515120, -3691525, +25861072, 19622632, -6400575, 23061290, 31538482, -13302587, -30837328, 17842368, 11838004, 25603374, +13432510, -2429878, 24159, -33253784, -2823941, -9753871, -11756936, 44394392, -4734665, -440234, +55413132, 36870148, 20185810, 24641838, 13016435, 1612223, 6663642, 31982474, 763430, -8349417, +9858024, 26874148, 13016435, 15327128, 7960185, 18598282, -594853, 5364951, 7328825, 13024488, +4853313, 3314641, 2747169, 1483374, 10950019, 15821586, 7155953, 20906828, 1950452, 12904229, +13246753, 23567560, 92342, 16132971, 14777909, 3060164, 12545063, 672162, 3165391, -3989488, +5475547, 6553047, 3746285, 3393561, 1370632, -2818036, 1196148, 5516886, -2384244, 2996277, +11260867, -2362232, 17067664, -38375532, 73679088, -9994926, -8200167, -4698158, 53602804, -32916092, +26883810, -36037996, 34144992, 6917045, -6666863, 879931, 19994684, -8586713, 18639622, -8656507, +-177704, 37667400, 11534672, -9630390, -164819, 9415105, 7364259, -36509908, 9710921, -13285944, +-3358128, -19226958, 18564996, 17721572, 2698850, 8419210, 31372588, -10398653, -50119048, 12005507, +32687386, -12658879, -32999308, 8791261, 23365158, 7998303, -99858, -39355860, -19039590, -23272280, +21762062, 8961986, 22413286, -47374028, 2867965, -8662412, -52623548, -13493177, 7519951, 23863376, +32824288, -17457968, 61477624, 12139725, 838592, -12582644, -25145422, -17078938, 11374147, -28434830, +57898308, -18456548, 2108829, 34593276, -22965728, 21188684, -22450868, -12490302, 47940424, -24234352, +31312996, 29386704, 10256382, 13510357, -42163692, -4777078, -2570538, -14386530, 19293530, 18006114, +6803228, 5667210, 18742700, -4291746, 7047505, -2029909, 5281736, -7948911, 6338835, -1124208, +5269925, 4757750, 783295, -13935558, -2941516, 2284386, -5636608, -1347009, 9628780, 5987722, +16208133, -7249368, 2957085, -27074400, -23654532, -2947958, -2015413, 16746077, 11667279, -7383049, +-6383395, -21480742, -718333, 7984344, -4198331, 413391, 4560719, -6441377, 4235375, -15681999, +214748, -4942434, -7036767, 11146514, -43320652, 24714852, 15812459, 24719684, -9877351, -7035694, +10007811, 59593, 2843805, 912681, 4881767, 1155346, -6820945, 31977642, -7473780, -22071836, +9319005, -594853, -19432580, 6747394, 4478577, 13187697, -8972187, -14712947, 15789910, -12723304, +-1750199, -3801583, 12956306, -22390202, 7619809, -13896904, 11320997, -19726248, 6985228, -6626598, +3370476, 43184284, -29735132, 5614059, 9480603, -26796300, 9688909, 12326019, -19873350, -4152160, +-7632157, 35913444, 2992519, -41576356, 24846922, -33611876, 6072547, 17374216, -16162499, 19876034, +-24112484, -19866372, 27282170, -4663261, 11569568, -40963252, 7625178, 8835285, -2219961, -6332393, +-388695, 16602196, 577673, -54469312, 32937030, -3445638, 12617540, -14319958, -16703665, 51912732, +-1438277, -33228014, 2820720, 16754667, 3774203, -50507204, 1737314, 46821048, -8635569, -21681532, +5067525, 22641994, -3090229, 61740, -4053912, -2356863, 3173444, -8210904, -4859219, 15370077, +-6752763, -435402, -9125195, 9010305, 13653701, -2476586, -2140504, 14525043, 4683125, -10004053, +-2458332, 6251862, 4112431, -8499740, 4467840, 9991168, -8431021, 2136209, 2420751, 6434935, +-15626165, 977642, 9657771, 3666828, -10916733, 600222, 7575249, 1255204, -8127152, -5432060, +20485920, -7113540, -107075680, -227823856, -90900832, -171527568, -208907216, 73983496, -857383, 75884016, +288629856, 252064112, 143390704, 276215776, 154007856, 17377438, 95428808, 58706836, -104518568, -73883104, +-21790516, -115852984, -140099680, -46664284, -70968968, -110911088, -27918898, -5094368, -141215296, -97320736, +-14810121, -85860152, -111140872, -32447942, -54588496, -120822264, -23268522, 12206297, -67799816, -51719996, +50965692, -18460844, -72706280, 15149960, 47976396, -35919348, 29376502, 105641160, -15632607, -28304908, +104542192, 55764780, -26240640, 173695456, 236126032, 146938880, 248988384, 372514848, 286524800, 272667072, +398497792, 345453344, 254232000, 311948832, 283574688, 180363936, 159536016, 85826328, -29753386, -124581968, +-222852432, -316567552, -376702976, -472311104, -504623776, -532122816, -602827648, -602401344, -455308416, -465896032, +-424299808, -191122816, -147904720, -143854560, 63703492, 121643136, 2567317, 126785824, 175977696, 60209536, +83857088, 165034656, 123339112, 71798968, 116486496, 144235744, 61284888, 89785216, 179014240, 106449688, +70076152, 164971312, 123714384, 49942416, 107213656, 122490856, 15721191, 63251448, 147455360, 84536768, +101431024, 207883392, 195565424, 206089712, 266861344, 268735552, 215572992, 203900896, 174033680, 106267152, +76625440, 40767828, -6388764, -41973104, -113781200, -155447744, -210108720, -279958848, -311737856, -352222752, +-410007232, -390456000, -350705024, -309728896, -226481680, -148488832, -78776144, -29069950, 12165495, 25860534, +31632972, 40833328, 43250320, 36562520, 39009040, 43104828, 41725072, 46758772, 60379188, 67723584, +72143104, 80195096, 81867984, 80804440, 77153720, 57716844, 36150740, 23155780, 19529216, 19545322, +0, 0, 0, 0, 0, 0, 0, 0, }, { -7162395, -207232, 5693516, 3911105, 3934727, 2473901, 1562294, -2245194, 85362, -2554969, 6091338, -3726958, 1462436, 880468, 879395, -77309, -1927367, 2989834, 4190814, 4025995, 2467459, --3070365, -4425427, -4846871, -4598836, -487479, 2400887, -4738960, 3950833, -957241, 6906308, --1156420, 4387846, 52613, -5728413, 1633698, -737661, 4628364, 319975, -547071, -2337536, --3929358, 353261, 2209224, -5029944, -6883222, 4803921, -3989488, -3671123, -3470871, 2707440, --2739116, 1151588, -1227824, -339302, -4056060, -1223529, -2761127, -4027606, 1321239, 3125126, --1165547, -4430796, -869194, -904628, -2227478, -3830574, -299574, -3115999, -3672734, -664109, -250182, 862752, -1246614, 538482, -682900, -5179194, -1145683, 637266, -1433445, -1329829, --1626719, 1655710, -1985886, 1705102, -143345, 294205, 653372, -1268089, 1243930, 10201, --694174, 307627, -341450, -1076963, 174483, 805306, -555125, -471373, -52076, 1301912, -587337, 182536, 200253, 701690, 475131, 815507, 230854, 1049583, -876173, -386547, --396748, 13487808, -4713727, -3085934, -4202089, -2887292, 314606, -9025874, 1523640, -4478041, --8836358, -1888175, 7573638, -5447093, 1476932, -643171, 2541010, 3825742, 4093104, 6615324, --1416802, -3790846, 1687385, 1597728, -3038689, -439160, -2053531, -1336272, 813359, -3473018, --2171106, -505196, -4372277, -5131949, 2622078, 3967476, -2353105, -5897527, -1034013, -1382980, -834834, 4764730, 315143, -1974074, -317291, 6379100, 795106, -3903589, -3764002, 1651415, -1207960, 5091684, 2891050, -333934, -4861366, 272194, -286152, 4179003, -4474282, -1502702, -2457795, 4857071, -1369558, 431644, -3679176, -2065879, 2254858, 140123, 475131, 1319092, --1430761, 1768990, 523986, 2164127, 1330903, 836982, 8444443, 2587181, -346282, -1138166, --2489471, 3621731, 2246805, 3914326, 2787434, 982474, 1037772, -817118, 775242, -1581085, --1688996, -1296006, 443455, -597537, -413391, -255551, 1362578, 226023, 1780801, 168577, --564251, -222265, -170725, -245887, 580357, 418759, 719944, -9894531, -2320356, -4665945, -4539781, 1154273, 117038, 3230889, -1905892, -7646653, -4027069, 5094368, -268435, 5247913, --380105, -2957085, 5817533, 2190970, 12741020, -2386928, 5537824, 816044, -5986648, 1520418, --5083094, 3309272, 1180042, 1308354, -5432597, 2734821, -936840, -1913408, 2246268, 8677445, -3234647, -38655, -6942278, 6041945, -1258425, 38118, 4279935, -6315213, -1170379, 4374961, --2574833, -2246268, -7128572, -7787313, -580894, 4735202, 2793876, -3117073, -74088, 3088618, -3867618, 1546725, -779537, -1490891, -6830072, 3229816, 8524973, 3882651, -2443300, -1189706, -2706366, 4072703, -308164, -1257352, 1024887, -5621039, -1032403, -3936338, -1833414, -354872, --2413235, 6497749, 5666136, -1679332, 2848100, 2109903, -1072668, -3823595, 912144, -2957622, --1114544, 884763, -3817152, -807991, 390305, -1102733, 1095754, 1645509, -2439542, -870268, --155156, 172872, -1912871, 513785, -882079, 1452236, -1695975, 1604170, -1158031, 390842, -267362, -825171, 649614, 290984, -614717, 565862, 632434, 652298, -1257889, -588947, -31139, -1785096, 239444, 1063541, -350577, -7442105, 8316131, -7164543, 7594576, -69793, --6052683, -14278082, -5621576, -4096862, 2142115, 7487739, 5862631, -1800128, -1143535, -1737851, --4092030, -1176821, -4598836, 1582159, 1699733, 2840584, 4713190, 2795487, 9011915, 32749, -1825898, -3167002, -734439, -2142652, 3317325, 1007170, -4180077, -6052683, 258772, -4343286, -555661, 4125853, -6845641, 4840428, -11525008, -3164854, -8545374, 1477469, -513785, 160524, --3340411, -4506495, 1614371, 4107599, 2946348, 1101122, -6861211, 2119566, -4733054, -1786706, --1345935, -9349070, -3639985, 2832531, 3645890, -295816, -6433861, 1139777, 2474975, -1219771, --1258425, 804770, 5647882, 2049773, -1234266, -1772211, 1020055, -13327284, 992137, 3420405, -3210488, 9447854, 1335198, -5244692, 5946919, -2035815, 922881, 2114735, 1992865, -1327145, --4367445, 284005, 2617783, 2503966, 4034585, -1219234, -1279363, 734976, -731755, -470836, -668404, -1104880, 406948, 952409, -519691, -2115808, -1619740, -49929, 281857, 598074, --1001801, 2069637, -1034550, -555125, 1341640, 1565516, -420370, -2348273, -1226750, 980863, --1184337, -617402, -709743, 543313, 1879585, -313533, 9509594, -2461016, 99321, 6261526, --3285650, -3071975, 9380745, -7211250, -17013440, -11178189, -6600291, 10164040, 4304094, 1377074, --9869835, 10371809, -4525822, 2882460, -2731062, 4052302, 4973572, -447750, 91268, -128312, --1728724, -5417028, -4377646, -1357747, 528818, 4689568, 2640868, 7345468, 3487514, -3257196, --1756642, 6534256, -4768488, 8025684, -6487011, 1698123, 3502009, 2250026, -5268315, 7070590, --731218, 7599945, 10024991, 1506997, -4059281, -3934190, 4214974, -4875325, -10264972, -2671470, -2107755, -6597070, 3704946, 3003793, -2219424, -4114579, -1781875, -1593970, 1927367, -821413, --5799280, -2224256, 9901510, 7962870, 4261145, -11876658, -11678016, -6387153, 11121818, 5630702, --920197, 1529008, -5551782, 7029251, -361851, -5512591, -1951526, 705985, -586800, -2775086, --446677, -2202781, -1198296, 2065879, 3034931, -1826435, -76236, 252866, 473520, 420370, --3103651, 3495567, -288300, -3516505, -2111513, -506269, -1131187, 39728, -297963, -457951, --408022, 814970, 132070, -1631551, -146029, 600759, -433792, -2523293, -1743220, -2355790, --857920, 1651415, 4787278, 7050189, -394600, 2717641, -11097122, -3745748, 1811939, 3795141, --13762686, -1524177, 5918465, -4145717, -8956617, 5577015, -10417443, -7639136, -4134443, 909996, --3787088, -2570538, -346282, 7737921, -6583111, 1716376, -2093797, -2734284, -5543729, -1529545, --8089034, -2408403, -250719, 1540820, -5660230, -1194001, -3576097, 511638, -1831804, -2507187, -1469416, 6366216, 1604170, -3319473, 3150359, -4862977, -1222992, 1862405, -1866163, 3171833, --1051730, -359167, -22427246, 1487132, -7784628, 3792993, 3224984, 4950487, -12351789, -12584254, -1681480, 439160, 2922188, 82141, 6689412, -2720325, 3628174, 4514548, -2168959, 10530186, --3312494, -6857452, -1479079, -5676336, -214748, -11230266, 148176, 5554467, 2585034, 8381629, --2340757, -2295123, 3684008, -4433480, 1031866, 2727304, 5393405, -2900177, 3086471, -4400194, -853088, 172872, 564788, -2170032, -1050656, -1618129, 1708860, -2012729, -3215320, -67646, --1527398, -2000381, -736050, -1567663, -701153, -986769, 896574, -1568200, 889595, -3164317, --355945, -1894618, -821949, 252329, 193810, -449898, -1531156, 137976, 8677981, -17501992, -4685810, 746251, 4857608, 7044820, 1275605, -6789270, -14910516, 1061931, -6029061, 11323144, --4612795, 2335925, 821413, 2418604, 8541616, -3774203, -263604, -3964255, -2234994, 2231236, --2157147, 8015483, 5969468, 1712081, -1701881, 110059, 5365488, -552977, 2589865, -124017, --4424353, 3910031, -1137630, -3313567, 4738960, 8027831, 22012, 3138547, 562104, -5327907, --3322694, 9747965, -4708895, 4662187, 7100655, -9422085, 6720550, 3593277, 3411815, -4183835, -6891812, 1983738, -1191317, 8813810, 325881, -110059, -4131222, -2355790, -4295, -3861176, --9429601, -2486249, 9630927, 7258495, 7923678, -890669, -8356396, 3461744, 10103374, -1893007, --7154879, -373125, -5055177, -1305133, -839129, 7859790, -753767, 4031364, -1035087, 357556, --5545877, 1457605, -954557, 2166274, 2155000, -3829500, 2594697, -6055904, 595390, 2167885, -158914, -1570347, -104153, 1189706, -4190278, -783832, -3943317, 1217086, -2493229, -1580011, --2415919, -4056060, -2668249, -1047972, 585189, -1250372, -98784, 1269163, 428423, -1069984, --751619, -1224066, 2319819, 66572, 838056, 1492501, 934155, 1046361, -542240, 1969243, --300648, 34897, 824634, -788663, -1089311, 507880, 2088965, -8311299, -2452963, -13399224, --3919158, -7773354, -9165460, -8690866, -3080029, 11686069, 12716861, 17521856, 3916473, -6689949, --4117800, 14502494, -57445, -3387119, 11110007, -1168768, 481573, -17368848, 7849053, 4362076, --11590506, 16049756, -2240899, 7206419, -1953673, 3764002, 7132867, 8053, 12613245, 4830228, -3576097, -1469416, -4479651, 1202591, 7639673, -2059437, 2265595, 3572339, 10119480, -482647, --3069828, 6518150, -7672959, -4826470, 3461744, 11166378, -4960151, -5999533, -1896765, 9200357, -77846, 1293322, -3446711, -1582159, 3297998, 4848481, 423591, -3981972, -12743705, 1502165, -3746285, 12117713, 3517578, -986769, 9307194, 16634408, -3434363, 5822365, 3921842, 6886980, --1348083, -5860483, 3423626, -13806709, -3758633, -2100776, -4482335, -2798708, 7177964, 2471217, --8939438, -5280126, 248571, -2925947, -325881, -6844568, -214748, -2350958, -1728724, -948651, -680215, -1912871, -482110, -937377, 1457605, -544924, 1336809, -1876901, -62277, 280784, -615791, 2765422, 77309, -1072131, 2582886, 3776887, -309238, -2329483, -1472100, -3278134, --2866354, 3921842, -673773, 1053341, 1433982, 1385127, 1294396, -3019362, 1466195, -1100585, --15169824, 21242908, -10710038, 4822712, -786516, -7327214, 16192027, 3812857, 2009508, -17114908, -4442070, -6826314, -7789997, 1901597, -7603703, 8658654, 5240397, -1455457, 1735704, -4193499, --1894081, -6219650, -3999152, -7470022, -11535208, -2842195, -8071318, -2166811, 4391604, -3262028, --4344897, 9134859, 5740761, 9168145, -7516730, -847719, -1510218, -8257612, 81604, -4390531, --20556788, 1800128, 371515, -3178813, 7132867, -744640, 7868917, 6666863, 2460480, 12368432, -11004243, -10865730, -2978560, 91268, -401579, 3868155, 1479616, 10516227, -2245731, 16796544, --22549, -9904731, -8038568, 1286343, 3031173, 3436511, 12208981, 3207804, 3056406, 11477226, -15282567, 625992, -9376450, -8879845, -840740, -2979097, -2166274, 19745038, 1415729, -8967892, -6415071, -7851737, 7506529, 1239635, -1558536, -2347737, -6032282, 1679332, 1996623, -893890, -1765232, 3330747, 1853815, 2269890, -886911, -839129, 217970, -1103807, -930934, 2238215, -884226, 1588064, 1996623, 3539590, 200253, -1662152, 3294240, 1873680, 635655, 753230, --682900, 500364, -125628, 3525631, 5501316, -2970507, 2624762, -651224, 2287607, 297427, -487479, 4692789, -244813, 454730, 402653, 3855270, 2558727, 2820720, 12743168, 976568, -8587787, -9400610, 4203163, 752156, -699543, 5671505, 13474386, -3719442, -1226750, 12406013, --16411607, -9148280, -7169374, -18799072, 3689377, -5964099, -2652679, 2253784, -12833362, 14053670, -10596758, 14928233, 6693707, -9300215, 871878, 592169, 11164767, -2070174, -369367, -439697, --6947647, 552440, -4090956, 6241661, -7371775, -2788508, -2495376, -3186866, -8633421, 4050691, --12656195, -1934346, -906238, 7937637, 4685810, 1054415, 119722, -2218351, 907849, 117575, -6574521, 1523103, 1894081, -1056562, -19809462, -9205726, 2277407, 8201240, 9817221, -15507516, -10357851, 3077881, -6124087, 1490891, 3339337, -3675955, 15003395, 139586, 2863670, -3542811, --20944408, -7179038, -9547175, -2481954, 369367, -5806796, 2996814, 4456566, -4312147, -897648, -13444858, 380105, 6844031, -8253317, 1030255, -134218, 7733089, 6842420, 4918275, -1863479, -1589138, 5618354, 3402151, -247497, 5912560, 5749351, 6278706, 817654, 2389076, 2157147, -1014686, -814433, -813359, 5433134, 1016834, -2865280, 478889, -416612, 2984466, -2084670, -944356, 2834679, -2212982, 4406100, 1519882, -601832, 362925, -3803194, 2794950, 2825015, --459562, -843424, -2335925, -3149822, 19393388, 3082176, 7833484, -11696270, -10590852, 6075231, -10060961, 1169305, -3572876, 18610630, 5848672, 62277, -5168457, 4041027, -1454383, -2073396, --704912, -3215857, 857920, -6209986, -14781667, 4852776, 1506997, 4488778, 1454920, 8195335, -2487860, -8850854, -17993228, 455267, 1333587, -1458141, -15748034, -7692287, -2380486, 4395362, --3448859, 1750199, -13777718, 658741, -3089155, 76773, 1365263, 3809636, -1499481, -12962748, --11928198, -7434052, 4988068, 3688303, -3191161, -2699924, -20783346, -11761768, -437550, -20261508, -18621368, -19130858, -5272073, -12390981, 19972134, 6400038, -14104673, 7072201, -1656247, 7547332, --12022150, -3984656, 500364, 8121783, -11415486, -4566087, -3896609, -11593727, 797790, 7683697, --1476395, -2137820, 13833016, -21971442, 17267380, -2879239, 3626563, -9914932, 6924024, -1123134, -5510443, -5036386, 253940, 4379793, 4745402, -1386201, -2435247, 14496, 459562, 564788, --1646583, 5401458, 5651103, 3999152, 1013075, 4054449, -420370, 4986994, -1877975, 907312, --252866, -1892470, -1963337, 335544, -4163434, -5000953, -1488743, -319438, 5015448, -314069, --868657, -1392106, -3529390, 2447595, -1163399, -1830730, -1298154, 2598992, -597000, -5667746, --805843, 2004676, 428960, -546535, 17034378, 37327024, -5081483, -11712913, -10979547, -9698036, --13892072, 2230699, -23611582, -263604, -18268106, -8475581, 5550709, 11370389, 6492917, -8254391, --1188095, 10812580, -809601, 12488154, -7541963, -7612293, -6725919, 5856188, -4454418, -5791227, -1946694, -6931004, -7061463, 8443369, 20024748, 7515119, 8527121, 3738232, -11894912, -2872796, --9664750, -9143985, -1506997, -1715303, -7609072, -12152073, -24329380, -2342905, -8874476, 3066607, --4547297, 9012452, 8364449, 4705137, 8757975, 6126771, -996969, 16912508, 24182814, 5714991, --28456842, 5697274, -5150203, -16711718, 2253784, 8041790, 3975529, 636729, 7740605, -556198, --13589277, 736587, 6353867, -13651017, -7181186, -12797392, -23609972, 18440978, 2506114, -1471026, -12883291, 10005126, 666794, 651224, 12734041, -17480516, -7617125, 1854889, 9381282, 7866233, -12075301, 8638253, -7212324, -4252555, -1630477, -2856153, -1078037, -1835562, -3519726, -4655208, --7107097, -7221988, -5133023, -2821794, -796716, 3411815, -1954210, -1545115, -8133058, -5644124, -810675, 4152697, 2903398, 1650341, 1685238, 1110786, -1165010, -4245575, -2037425, -2689723, --2322504, 695785, -4483409, 815507, -3202435, 3273839, -402653, -1279900, -3067144, 2686502, --2821794, -1002338, 5608154, -2435783, -193274, 27567248, -20399484, 23830090, -1989107, -2851322, --12119861, -4471598, -12040404, -10229001, 12733504, -11309723, 6586869, 28579250, 10631655, -4221416, --12883828, -10810970, 12754442, -10404558, -17621178, -7248831, 1819992, 1699196, -20118700, 1444183, --6094559, 10516764, -6346888, -277025, 2347737, 30056182, -7249905, -9575630, 14586783, -11578695, -17520246, -10215043, 12833362, 2170569, -9242770, -8451422, 16287590, -20993264, 16025060, -9037685, -1658394, -5011153, 8762807, -7248294, -3694209, -267362, -6455873, 30654256, -8791798, 20923470, -8128226, 9604084, -130997, 7926362, 13429289, 15042586, -4109210, -14565845, 93416, 12421582, -5014375, -2205466, -18321794, 24522116, -5118528, -16217260, -4482872, -9945534, 7683160, 10586021, -442919, 17746268, -4784057, 9100499, -20155208, -3568044, -21507048, -6706592, -7860864, -494995, -1207423, -4156455, 7696045, 2515240, -5795522, -9914395, -7339026, -2141041, -907312, -4976257, --1055488, -1770063, 6090264, -1813013, 271120, -2318209, -9306120, -2831994, -3733400, 1129040, --1540283, -5248987, -8127689, 3208878, -5490579, 2524367, 3624953, -5713917, -13939853, -3352222, --2175938, -3741990, -4968204, 548682, -2317672, 1478543, 1646583, -6361921, -811749, -6405407, -5928666, 3607236, -3337190, 1573569, -5572720, -31242128, -13332115, 19185618, -3777961, -7838852, -22299470, 2151242, -11562052, 8469676, 12147778, 10307922, 1626182, -19210314, -7924215, 2958696, -2861522, 10073846, 6674379, 11361262, -9798968, -7732015, 3832722, -2641942, 9320616, -18054432, --3033321, -19530290, -6295885, 3570192, -2667712, -2425583, 20953534, 4391067, -15479599, -2319819, -1272921, -15811922, -2120640, 812823, 9550934, 24098524, -8513699, 8081518, -13405130, 2061047, --7878044, -10133438, 9829570, 21082384, -16656957, 1651415, 18766322, -8426726, -1712618, -6997576, -12287365, 2999498, -15226196, -148176, -5311264, -4908611, -1504312, -7450158, 11368778, -26912266, -5719286, 2296734, -11324755, 15135465, 23161148, 16384226, 44111460, 13414257, -11305428, -15626702, --12943421, -7033009, 16195785, -5803038, 22487376, 2100776, 27381490, -32503238, -20867636, 9838159, --5345087, -3331821, 13132399, -8829379, -1010391, 14001057, 6223408, 10394895, 15298137, 11985643, --2594160, 4912906, -9362492, 367220, -367220, -6538551, -7194070, 4818954, -9911174, -816581, -14967424, 1394254, -8952322, -11651173, 2159832, -14646912, -5415417, 15817291, 8191577, -2557116, --3631932, 3066070, -2943663, -4957466, 1045288, -3613141, -5632313, -941135, -7728794, 5476620, -4715874, 5245229, -2888903, -2035278, 3319473, 8095477, 22090090, -51231980, -1883343, 29466160, --38884488, -1613297, 7842074, -40169756, 18219252, 5086315, 32485522, -3061238, 11582453, 9701794, --35333624, -29218662, -11286100, -2676302, -17608292, -21674016, -11400991, 20359218, 14309220, 12403329, -1458141, 2448668, 6530498, 1425929, -25616796, -9472550, -32928978, -10394358, 18646064, 5678484, -12644384, 41776612, 10967736, 15897285, -508417, 8501888, 36786396, 27730456, 7829189, 18255222, -16740172, 36735392, 30179662, -39654896, 25089588, -2047089, 24016384, 24480776, 10266046, 44070660, -38915624, -21180094, 19331110, -83752, 18428630, -31871342, 3267933, 3664144, 1340567, -7055558, -20463908, 22206592, -21174726, -7009387, -12380780, 7943005, -17531520, -21731998, 20762946, 35389992, -13044889, 36823440, -10416906, 49961208, 48845588, 13833553, 25677462, -7239168, -12659953, 11671037, -11426224, 5687074, 3996467, 3203509, 6689412, -6721087, -12444668, -8782671, -23481124, -24529632, --9870909, 11751567, -199716, 10388989, 1903207, 6412923, 15140833, 18652506, -5863167, 8675297, --786516, -7402376, -6222334, -5198521, -15447924, -6929930, 340913, -13219372, -4675609, -11875585, --6608881, 2841658, 16988206, -7746511, 6160057, 5003637, -2789581, 9570261, 5517423, 7363185, -259846, 12637404, 8012799, 5642514, -4915053, -7272990, -16315507, 23956254, 43021612, -5750961, --58559196, -18611168, 6049999, -4451197, -9660992, -12735115, 260382, -33398202, -20054812, -27698780, --4439386, -7976291, 9341554, -19712826, -5664525, 5539971, 9365176, -43487, 10409927, 20462834, -4230543, 29444148, -18798534, 7259569, 1209033, 28114856, 7346005, -5239323, -28073516, 18911814, --4817880, 25691958, -21352430, -16713865, -16174310, -8367670, -25881472, -3291019, -4469451, -24093692, -13434658, 28043452, -13418552, 4414153, -36031016, 34956740, -10923712, -18547280, 15826954, 14166950, --20602422, 2138357, -12837657, 4885526, -9400610, 43729748, -1588064, -3349538, -10675678, 76937360, -1975148, -10001905, 32821604, 26730266, -27801324, 22126060, -34067144, -18526342, -35603132, 27643484, --24499030, 13573707, 18719614, 15347529, -31569084, 40315784, -7187091, -51733416, -59533616, -22982370, --7329362, -16806744, 13873818, 14168560, 23546622, 4366908, 2046015, -17186848, 17782238, 28441810, -40920300, 11315091, -11751567, 4525822, 34810708, 6353867, -19256486, -4195646, 37141804, 9098351, --22024056, -5117454, 18305150, 11199664, 16659104, 11853573, 23487566, 815507, 12870406, 5229660, -16592532, 8535711, 26415122, 9465571, 16652662, -2605435, 5157719, 1938641, -2077154, 7767449, --2465311, 9885941, 16393890, 3244848, 9460739, 1978369, 12328704, -27420144, -6700149, 22565758, --16466905, -78799232, 5681705, 50727860, -30573188, -20366198, 40739912, -29553670, -1879048, -8352638, -39101384, -67020816, 37539624, 22318260, -18891950, 7067369, 36672040, 26227754, -12794171, 15039902, -6753836, -10147934, 17260936, -296353, 10475962, 15933792, -6736120, 3911105, -1685238, 7645579, --9682467, -7730405, -598611, 13696651, -39756364, -19601156, 19804094, -4375498, -26356066, -31055834, -5411122, 38857104, -16799764, -24661702, 19072876, 29015188, -6310381, 7376070, -5097053, 27038430, --14614163, 40490804, -5450851, 190589, 22136262, 585726, 5102958, -28562070, 45081588, -23178864, --28221156, 21527986, -29884382, -9753871, 5056250, 15034533, 41648296, -14646912, 25969520, -5157719, -13595719, -70398808, -53948548, -9772661, -21029770, 10910291, 9747428, 26921392, -4227322, -5469641, -31942208, -34833260, -775778, 22523346, 22095996, -7985418, 24618216, 3260417, -5247377, 35970, --5467494, 23744190, -13104482, -1173063, 22980222, 5452461, -5216238, 9237401, -11419244, 3124589, --875100, 579284, 9282498, 4536559, -13065827, -2794413, 4036733, -9962177, -14919106, -1074, -10896332, 19384262, -16203301, 18949396, 6398965, -18515068, 15516643, 17998598, -8973260, -20991116, -19488950, -9463424, 3577708, 10974178, -10710575, -27857158, 9162239, 7794829, -15574625, -14453102, -1063004, 10867341, -12366821, -5913633, -26510148, -12553116, 19080930, -33013802, 31912680, -28142236, --35243964, 19601694, -17153026, -11665668, 20032802, -15432891, 16694001, -12184822, 7641284, 39239896, --35549980, -2791729, -5630702, 33013266, 4253628, 2886755, -31853624, -29928406, -10794327, -8927090, --4862977, -9829570, 5616744, 1469416, -3488587, 4657892, 6875169, 3151969, 5279052, -6372658, -15288473, -10362682, 14617384, -28388124, 737124, -23050016, -29791504, -17689360, 39003672, -17200808, --17536888, -13117904, 8761196, -8105140, 17211008, 25177098, -26976690, 23634668, 4014721, -37205692, --18763638, 76042936, 39318816, -58137752, -11165304, 36469640, -18913962, -21403970, 14519137, -18539226, --40258340, 28418188, 12815109, -54660440, 22106734, 27259620, -32251984, -21399674, 32176284, -8239358, --24702504, 5280126, 15820512, -39701604, 7173133, 6657736, 11040213, -30383672, -9251896, -2930778, --9946071, -2396592, 1644436, 3015067, -18721226, 2564632, 26852136, 9072582, 1387811, 8605504, --803159, -4863514, -15264851, -4992900, -8419747, -11339251, -25912612, 6446746, -14936823, -4436165, -31048856, -28153510, -18491982, 22740242, -17071422, -6477348, -7588671, 10018548, -18469970, -6995965, -28587302, 14908368, -14484777, 15844134, 8766028, -12482786, -8005282, 38955892, -31820876, -24895242, -41561860, -673236, -33816424, 4142496, 20269562, -20263118, -42142220, 27422830, 3071975, -46788300, -7590818, 12459700, -34216392, -1202054, 22332220, -6809671, -15444166, 11470784, 9104794, -23787140, --2774549, 16692927, 48168596, 68131600, -26939108, 76244800, -5781026, -20592758, -15879568, -25523380, --1951526, 12987981, 45060112, 1762010, 14024679, -11171210, -38472708, 948651, 1626719, 25712358, -5051956, -29023242, 54573464, -23009214, 10362145, 24643448, -26888106, -21787832, -38459820, -16732119, -24092620, 29969744, 36980204, -13685913, -89778240, 20145544, 47188804, 60421600, 51977156, -617402, --25556130, -31743566, 11090679, 30891016, -19391778, -10202158, -79516488, -48686676, 43058656, 72255848, -14999100, -1835562, -17294760, -31408558, -7183870, 20136954, -27708444, 11068668, -3755949, 45710264, --1738388, 17899814, -88938576, -11212549, 1312113, 54871428, 42656004, -1043677, -26485452, -7266011, -65371548, 29542396, -76237816, -94635848, -36768140, 19127100, 147301808, 15978889, -25315074, 20336670, --39137352, 104565808, 32133872, -83118352, -51801600, -10297184, 74028592, 11154567, -30480310, -28407988, --26085484, 21082920, 39981312, 19989314, -42538428, -3484292, -14453639, 35394288, -3566970, 21435108, --7241315, -8930311, -28116466, 11134166, -8423505, -2953864, 22352084, -34612068, 20557860, -5166309, --5007932, 225486, 16305843, 34474628, 17680232, 2406792, -6498286, 7354595, 0, 14033806, -4900021, 15477988, 4139812, 3962644, -17127256, 8163659, 9511742, 6334003, 446140, 5221607, -3570729, 15323370, 7540352, -12324409, 31393526, -36105104, 1153736, -14501957, 8379481, -22341346, -21034602, 5851893, -11895449, -22530862, -11068131, -4236985, 6595459, -30760018, 7129109, -15038828, --5853504, -24071144, -11341935, 19611358, -20558934, -7216619, -2812667, 9620727, 6483253, -7951595, -11092290, -17590038, -1389959, 287226, 9493488, -11493332, 16790638, 12604118, -12751758, -14694157, --5638219, 23948200, -17172352, 7625715, 17736604, 4047470, -17273822, -6520297, 7443715, -10746008, -8058433, 892816, 3900367, -15850577, 3358128, -12865038, -561567, 12185359, 15239618, 11985106, --8814347, 11445551, 1432372, -14057428, -2107218, 102005, 16950088, -4510253, 3570192, 14887967, --3184718, -19040664, 26808112, -10732586, 15852724, 11805254, 2720862, 3928285, -11347304, -13717052, -18455474, 3046743, 16231218, 5142150, 8828842, 4754529, -546535, -599685, -14248017, 1870995, -3756486, 5285494, 5566278, -1474248, 6487011, 1414655, -918049, 2096481, 761820, 7069516, --1928977, 5588290, -6612102, -1344325, -96637, 848793, -3770445, -1748589, 12446815, 8252243, --2246805, -8635032, -10283762, -3412889, -4227322, 11848741, 1024350, -3094524, -7723962, -3527779, -934155, -5921150, 13089450, 1617592, -5527086, 2655364, -408022, -1996623, 3574487, -3467112, -11324218, -10391137, 7719667, -10091563, -29118804, 54577760, 4990215, 3022046, -21992916, 12693239, --1817845, 14356465, 10947335, 16795470, 1887101, 4312147, -9386651, 2758980, 15391552, -1460826, -8440148, -1291175, 2714419, 3441880, 6267431, -6461242, 11661910, -7869991, 1110249, -1229971, -3984656, -992674, 2380486, 8883066, 9738838, -4638028, 4322885, 1936493, -2123325, -4118874, -12956843, -3922916, 2779381, -3626563, 6799470, 5906, -6138045, 13024488, -8018167, -2745021, -3491272, -6056978, -3643743, -1847910, 590558, -2288144, 274341, -1195075, -3298535, 4460861, --8296266, 5319317, 3632469, -2806224, 5599564, -4154307, 6622840, -3323768, 1326608, 1341640, --3878892, 6520834, 78383, 960999, -1967095, 8762270, -10254234, 11077258, -7725036, 1388885, -1976222, -236760, 2119030, -1685775, 6456947, -5914707, 511638, 5553930, -6514929, 4220342, -3826816, -894427, 906238, 3817689, 1868848, -1654099, 2582886, 759672, -753230, 597000, -2280091, 341987, -2682207, 841814, 1235340, -1337346, 3295314, -615791, 2726231, -1604170, -531502, 2163053, -1255204, 427349, 1526861, -1969243, 3605088, -243739, 1832877, -358093, -3789772, -1212791, 541703, 3554622, -2933463, 4097936, -2209224, 1835562, -2274722, 4027606, -10452877, -49754512, -123906584, 19286014, 94407136, 87718264, 152150832, -38801808, -40703404, -103553272, --141403744, -29131152, 51161652, 54757076, 103089416, 56020332, 4435628, -26736708, -71944464, -51126752, --8820789, -7977365, 25654376, 23817742, 13762686, 8809515, 6924024, -3762391, -17673254, -1338956, -20434380, 189515, 4305168, -1136019, -15311558, -11693048, -26046292, -25486872, 11576547, 10716480, -23675470, 36039072, 26975078, 13216688, 4766340, -38825432, -27491012, -21227876, -21312702, -23728084, -4958003, 15198279, 26346404, 33705828, 27843736, 6113349, -3298535, -22285512, -22805202, -13502303, --6611029, 2233920, 3745748, 7596724, 653909, -7244536, 2462090, -11591043, 6062347, 9943923, -1122060, 19857244, 23931558, 7459285, -4563940, -26288422, -34711924, -13916768, -6418292, -3992709, -17632988, 13733158, -3617436, 15568183, 16818018, 9479530, 11612518, -6382859, -12527883, -9996536, --14411226, -11361799, -2145873, -10903848, -4361540, 658204, 8768176, 12484933, 17889076, 15531675, -14228690, 11385421, -5916318, -13368623, -22573274, -27722940, -16201154, -11996917, 1531156, 13312788, -19492172, 22701050, 17861158, 16547972, 10589779, -13969918, -25078314, -22542672, -11098732, -3172907, --1065152, 1757179, 9526774, 8489003, 3990025, 1979980, 7786239, 4502200, 6767795, 1959579, --10533407, -11460046, -7624104, -2997887, 3562139, 2608656, -3848291, -2097555, 3539590, 1918777, -1499481, 4835597, 7638063, 3541201, 120259, -3833258, -4506495, -3730716, -4631586, -5951214, --4598836, -458488, 3103114, 4300873, 4996121, 4050154, 1229971, 60130, 96637, 234076, -0, 0, 0, 0, 0, 0, 0, 0, }, +207232, 5693516, 3911105, 3934727, 2473901, 1562294, -2245194, 85362, -2554969, 6091338, +3726958, 1462436, 880468, 879395, -77309, -1927367, 2989834, 4190814, 4025995, 2467459, +-3070365, -4425427, -4846871, -4598836, -487479, 2400887, -4738960, 3950833, -957241, 6906308, +-1156420, 4387846, 52613, -5728413, 1633698, -737661, 4628364, 319975, -547071, -2337536, +-3929358, 353261, 2209224, -5029944, -6883222, 4803921, -3989488, -3671123, -3470871, 2707440, +-2739116, 1151588, -1227824, -339302, -4056060, -1223529, -2761127, -4027606, 1321239, 3125126, +-1165547, -4430796, -869194, -904628, -2227478, -3830574, -299574, -3115999, -3672734, -664109, +250182, 862752, -1246614, 538482, -682900, -5179194, -1145683, 637266, -1433445, -1329829, +-1626719, 1655710, -1985886, 1705102, -143345, 294205, 653372, -1268089, 1243930, 10201, +-694174, 307627, -341450, -1076963, 174483, 805306, -555125, -471373, -52076, 1301912, +587337, 182536, 200253, 701690, 475131, 815507, 230854, 1049583, -876173, -386547, +-396748, 13487808, -4713727, -3085934, -4202089, -2887292, 314606, -9025874, 1523640, -4478041, +-8836358, -1888175, 7573638, -5447093, 1476932, -643171, 2541010, 3825742, 4093104, 6615324, +-1416802, -3790846, 1687385, 1597728, -3038689, -439160, -2053531, -1336272, 813359, -3473018, +-2171106, -505196, -4372277, -5131949, 2622078, 3967476, -2353105, -5897527, -1034013, -1382980, +834834, 4764730, 315143, -1974074, -317291, 6379100, 795106, -3903589, -3764002, 1651415, +1207960, 5091684, 2891050, -333934, -4861366, 272194, -286152, 4179003, -4474282, -1502702, +2457795, 4857071, -1369558, 431644, -3679176, -2065879, 2254858, 140123, 475131, 1319092, +-1430761, 1768990, 523986, 2164127, 1330903, 836982, 8444443, 2587181, -346282, -1138166, +-2489471, 3621731, 2246805, 3914326, 2787434, 982474, 1037772, -817118, 775242, -1581085, +-1688996, -1296006, 443455, -597537, -413391, -255551, 1362578, 226023, 1780801, 168577, +-564251, -222265, -170725, -245887, 580357, 418759, 719944, -9894531, -2320356, -4665945, +4539781, 1154273, 117038, 3230889, -1905892, -7646653, -4027069, 5094368, -268435, 5247913, +-380105, -2957085, 5817533, 2190970, 12741020, -2386928, 5537824, 816044, -5986648, 1520418, +-5083094, 3309272, 1180042, 1308354, -5432597, 2734821, -936840, -1913408, 2246268, 8677445, +3234647, -38655, -6942278, 6041945, -1258425, 38118, 4279935, -6315213, -1170379, 4374961, +-2574833, -2246268, -7128572, -7787313, -580894, 4735202, 2793876, -3117073, -74088, 3088618, +3867618, 1546725, -779537, -1490891, -6830072, 3229816, 8524973, 3882651, -2443300, -1189706, +2706366, 4072703, -308164, -1257352, 1024887, -5621039, -1032403, -3936338, -1833414, -354872, +-2413235, 6497749, 5666136, -1679332, 2848100, 2109903, -1072668, -3823595, 912144, -2957622, +-1114544, 884763, -3817152, -807991, 390305, -1102733, 1095754, 1645509, -2439542, -870268, +-155156, 172872, -1912871, 513785, -882079, 1452236, -1695975, 1604170, -1158031, 390842, +267362, -825171, 649614, 290984, -614717, 565862, 632434, 652298, -1257889, -588947, +31139, -1785096, 239444, 1063541, -350577, -7442105, 8316131, -7164543, 7594576, -69793, +-6052683, -14278082, -5621576, -4096862, 2142115, 7487739, 5862631, -1800128, -1143535, -1737851, +-4092030, -1176821, -4598836, 1582159, 1699733, 2840584, 4713190, 2795487, 9011915, 32749, +1825898, -3167002, -734439, -2142652, 3317325, 1007170, -4180077, -6052683, 258772, -4343286, +555661, 4125853, -6845641, 4840428, -11525008, -3164854, -8545374, 1477469, -513785, 160524, +-3340411, -4506495, 1614371, 4107599, 2946348, 1101122, -6861211, 2119566, -4733054, -1786706, +-1345935, -9349070, -3639985, 2832531, 3645890, -295816, -6433861, 1139777, 2474975, -1219771, +-1258425, 804770, 5647882, 2049773, -1234266, -1772211, 1020055, -13327284, 992137, 3420405, +3210488, 9447854, 1335198, -5244692, 5946919, -2035815, 922881, 2114735, 1992865, -1327145, +-4367445, 284005, 2617783, 2503966, 4034585, -1219234, -1279363, 734976, -731755, -470836, +668404, -1104880, 406948, 952409, -519691, -2115808, -1619740, -49929, 281857, 598074, +-1001801, 2069637, -1034550, -555125, 1341640, 1565516, -420370, -2348273, -1226750, 980863, +-1184337, -617402, -709743, 543313, 1879585, -313533, 9509594, -2461016, 99321, 6261526, +-3285650, -3071975, 9380745, -7211250, -17013440, -11178189, -6600291, 10164040, 4304094, 1377074, +-9869835, 10371809, -4525822, 2882460, -2731062, 4052302, 4973572, -447750, 91268, -128312, +-1728724, -5417028, -4377646, -1357747, 528818, 4689568, 2640868, 7345468, 3487514, -3257196, +-1756642, 6534256, -4768488, 8025684, -6487011, 1698123, 3502009, 2250026, -5268315, 7070590, +-731218, 7599945, 10024991, 1506997, -4059281, -3934190, 4214974, -4875325, -10264972, -2671470, +2107755, -6597070, 3704946, 3003793, -2219424, -4114579, -1781875, -1593970, 1927367, -821413, +-5799280, -2224256, 9901510, 7962870, 4261145, -11876658, -11678016, -6387153, 11121818, 5630702, +-920197, 1529008, -5551782, 7029251, -361851, -5512591, -1951526, 705985, -586800, -2775086, +-446677, -2202781, -1198296, 2065879, 3034931, -1826435, -76236, 252866, 473520, 420370, +-3103651, 3495567, -288300, -3516505, -2111513, -506269, -1131187, 39728, -297963, -457951, +-408022, 814970, 132070, -1631551, -146029, 600759, -433792, -2523293, -1743220, -2355790, +-857920, 1651415, 4787278, 7050189, -394600, 2717641, -11097122, -3745748, 1811939, 3795141, +-13762686, -1524177, 5918465, -4145717, -8956617, 5577015, -10417443, -7639136, -4134443, 909996, +-3787088, -2570538, -346282, 7737921, -6583111, 1716376, -2093797, -2734284, -5543729, -1529545, +-8089034, -2408403, -250719, 1540820, -5660230, -1194001, -3576097, 511638, -1831804, -2507187, +1469416, 6366216, 1604170, -3319473, 3150359, -4862977, -1222992, 1862405, -1866163, 3171833, +-1051730, -359167, -22427246, 1487132, -7784628, 3792993, 3224984, 4950487, -12351789, -12584254, +1681480, 439160, 2922188, 82141, 6689412, -2720325, 3628174, 4514548, -2168959, 10530186, +-3312494, -6857452, -1479079, -5676336, -214748, -11230266, 148176, 5554467, 2585034, 8381629, +-2340757, -2295123, 3684008, -4433480, 1031866, 2727304, 5393405, -2900177, 3086471, -4400194, +853088, 172872, 564788, -2170032, -1050656, -1618129, 1708860, -2012729, -3215320, -67646, +-1527398, -2000381, -736050, -1567663, -701153, -986769, 896574, -1568200, 889595, -3164317, +-355945, -1894618, -821949, 252329, 193810, -449898, -1531156, 137976, 8677981, -17501992, +4685810, 746251, 4857608, 7044820, 1275605, -6789270, -14910516, 1061931, -6029061, 11323144, +-4612795, 2335925, 821413, 2418604, 8541616, -3774203, -263604, -3964255, -2234994, 2231236, +-2157147, 8015483, 5969468, 1712081, -1701881, 110059, 5365488, -552977, 2589865, -124017, +-4424353, 3910031, -1137630, -3313567, 4738960, 8027831, 22012, 3138547, 562104, -5327907, +-3322694, 9747965, -4708895, 4662187, 7100655, -9422085, 6720550, 3593277, 3411815, -4183835, +6891812, 1983738, -1191317, 8813810, 325881, -110059, -4131222, -2355790, -4295, -3861176, +-9429601, -2486249, 9630927, 7258495, 7923678, -890669, -8356396, 3461744, 10103374, -1893007, +-7154879, -373125, -5055177, -1305133, -839129, 7859790, -753767, 4031364, -1035087, 357556, +-5545877, 1457605, -954557, 2166274, 2155000, -3829500, 2594697, -6055904, 595390, 2167885, +158914, -1570347, -104153, 1189706, -4190278, -783832, -3943317, 1217086, -2493229, -1580011, +-2415919, -4056060, -2668249, -1047972, 585189, -1250372, -98784, 1269163, 428423, -1069984, +-751619, -1224066, 2319819, 66572, 838056, 1492501, 934155, 1046361, -542240, 1969243, +-300648, 34897, 824634, -788663, -1089311, 507880, 2088965, -8311299, -2452963, -13399224, +-3919158, -7773354, -9165460, -8690866, -3080029, 11686069, 12716861, 17521856, 3916473, -6689949, +-4117800, 14502494, -57445, -3387119, 11110007, -1168768, 481573, -17368848, 7849053, 4362076, +-11590506, 16049756, -2240899, 7206419, -1953673, 3764002, 7132867, 8053, 12613245, 4830228, +3576097, -1469416, -4479651, 1202591, 7639673, -2059437, 2265595, 3572339, 10119480, -482647, +-3069828, 6518150, -7672959, -4826470, 3461744, 11166378, -4960151, -5999533, -1896765, 9200357, +77846, 1293322, -3446711, -1582159, 3297998, 4848481, 423591, -3981972, -12743705, 1502165, +3746285, 12117713, 3517578, -986769, 9307194, 16634408, -3434363, 5822365, 3921842, 6886980, +-1348083, -5860483, 3423626, -13806709, -3758633, -2100776, -4482335, -2798708, 7177964, 2471217, +-8939438, -5280126, 248571, -2925947, -325881, -6844568, -214748, -2350958, -1728724, -948651, +680215, -1912871, -482110, -937377, 1457605, -544924, 1336809, -1876901, -62277, 280784, +615791, 2765422, 77309, -1072131, 2582886, 3776887, -309238, -2329483, -1472100, -3278134, +-2866354, 3921842, -673773, 1053341, 1433982, 1385127, 1294396, -3019362, 1466195, -1100585, +-15169824, 21242908, -10710038, 4822712, -786516, -7327214, 16192027, 3812857, 2009508, -17114908, +4442070, -6826314, -7789997, 1901597, -7603703, 8658654, 5240397, -1455457, 1735704, -4193499, +-1894081, -6219650, -3999152, -7470022, -11535208, -2842195, -8071318, -2166811, 4391604, -3262028, +-4344897, 9134859, 5740761, 9168145, -7516730, -847719, -1510218, -8257612, 81604, -4390531, +-20556788, 1800128, 371515, -3178813, 7132867, -744640, 7868917, 6666863, 2460480, 12368432, +11004243, -10865730, -2978560, 91268, -401579, 3868155, 1479616, 10516227, -2245731, 16796544, +-22549, -9904731, -8038568, 1286343, 3031173, 3436511, 12208981, 3207804, 3056406, 11477226, +15282567, 625992, -9376450, -8879845, -840740, -2979097, -2166274, 19745038, 1415729, -8967892, +6415071, -7851737, 7506529, 1239635, -1558536, -2347737, -6032282, 1679332, 1996623, -893890, +1765232, 3330747, 1853815, 2269890, -886911, -839129, 217970, -1103807, -930934, 2238215, +884226, 1588064, 1996623, 3539590, 200253, -1662152, 3294240, 1873680, 635655, 753230, +-682900, 500364, -125628, 3525631, 5501316, -2970507, 2624762, -651224, 2287607, 297427, +487479, 4692789, -244813, 454730, 402653, 3855270, 2558727, 2820720, 12743168, 976568, +8587787, -9400610, 4203163, 752156, -699543, 5671505, 13474386, -3719442, -1226750, 12406013, +-16411607, -9148280, -7169374, -18799072, 3689377, -5964099, -2652679, 2253784, -12833362, 14053670, +10596758, 14928233, 6693707, -9300215, 871878, 592169, 11164767, -2070174, -369367, -439697, +-6947647, 552440, -4090956, 6241661, -7371775, -2788508, -2495376, -3186866, -8633421, 4050691, +-12656195, -1934346, -906238, 7937637, 4685810, 1054415, 119722, -2218351, 907849, 117575, +6574521, 1523103, 1894081, -1056562, -19809462, -9205726, 2277407, 8201240, 9817221, -15507516, +10357851, 3077881, -6124087, 1490891, 3339337, -3675955, 15003395, 139586, 2863670, -3542811, +-20944408, -7179038, -9547175, -2481954, 369367, -5806796, 2996814, 4456566, -4312147, -897648, +13444858, 380105, 6844031, -8253317, 1030255, -134218, 7733089, 6842420, 4918275, -1863479, +1589138, 5618354, 3402151, -247497, 5912560, 5749351, 6278706, 817654, 2389076, 2157147, +1014686, -814433, -813359, 5433134, 1016834, -2865280, 478889, -416612, 2984466, -2084670, +944356, 2834679, -2212982, 4406100, 1519882, -601832, 362925, -3803194, 2794950, 2825015, +-459562, -843424, -2335925, -3149822, 19393388, 3082176, 7833484, -11696270, -10590852, 6075231, +10060961, 1169305, -3572876, 18610630, 5848672, 62277, -5168457, 4041027, -1454383, -2073396, +-704912, -3215857, 857920, -6209986, -14781667, 4852776, 1506997, 4488778, 1454920, 8195335, +2487860, -8850854, -17993228, 455267, 1333587, -1458141, -15748034, -7692287, -2380486, 4395362, +-3448859, 1750199, -13777718, 658741, -3089155, 76773, 1365263, 3809636, -1499481, -12962748, +-11928198, -7434052, 4988068, 3688303, -3191161, -2699924, -20783346, -11761768, -437550, -20261508, +18621368, -19130858, -5272073, -12390981, 19972134, 6400038, -14104673, 7072201, -1656247, 7547332, +-12022150, -3984656, 500364, 8121783, -11415486, -4566087, -3896609, -11593727, 797790, 7683697, +-1476395, -2137820, 13833016, -21971442, 17267380, -2879239, 3626563, -9914932, 6924024, -1123134, +5510443, -5036386, 253940, 4379793, 4745402, -1386201, -2435247, 14496, 459562, 564788, +-1646583, 5401458, 5651103, 3999152, 1013075, 4054449, -420370, 4986994, -1877975, 907312, +-252866, -1892470, -1963337, 335544, -4163434, -5000953, -1488743, -319438, 5015448, -314069, +-868657, -1392106, -3529390, 2447595, -1163399, -1830730, -1298154, 2598992, -597000, -5667746, +-805843, 2004676, 428960, -546535, 17034378, 37327024, -5081483, -11712913, -10979547, -9698036, +-13892072, 2230699, -23611582, -263604, -18268106, -8475581, 5550709, 11370389, 6492917, -8254391, +-1188095, 10812580, -809601, 12488154, -7541963, -7612293, -6725919, 5856188, -4454418, -5791227, +1946694, -6931004, -7061463, 8443369, 20024748, 7515119, 8527121, 3738232, -11894912, -2872796, +-9664750, -9143985, -1506997, -1715303, -7609072, -12152073, -24329380, -2342905, -8874476, 3066607, +-4547297, 9012452, 8364449, 4705137, 8757975, 6126771, -996969, 16912508, 24182814, 5714991, +-28456842, 5697274, -5150203, -16711718, 2253784, 8041790, 3975529, 636729, 7740605, -556198, +-13589277, 736587, 6353867, -13651017, -7181186, -12797392, -23609972, 18440978, 2506114, -1471026, +12883291, 10005126, 666794, 651224, 12734041, -17480516, -7617125, 1854889, 9381282, 7866233, +12075301, 8638253, -7212324, -4252555, -1630477, -2856153, -1078037, -1835562, -3519726, -4655208, +-7107097, -7221988, -5133023, -2821794, -796716, 3411815, -1954210, -1545115, -8133058, -5644124, +810675, 4152697, 2903398, 1650341, 1685238, 1110786, -1165010, -4245575, -2037425, -2689723, +-2322504, 695785, -4483409, 815507, -3202435, 3273839, -402653, -1279900, -3067144, 2686502, +-2821794, -1002338, 5608154, -2435783, -193274, 27567248, -20399484, 23830090, -1989107, -2851322, +-12119861, -4471598, -12040404, -10229001, 12733504, -11309723, 6586869, 28579250, 10631655, -4221416, +-12883828, -10810970, 12754442, -10404558, -17621178, -7248831, 1819992, 1699196, -20118700, 1444183, +-6094559, 10516764, -6346888, -277025, 2347737, 30056182, -7249905, -9575630, 14586783, -11578695, +17520246, -10215043, 12833362, 2170569, -9242770, -8451422, 16287590, -20993264, 16025060, -9037685, +1658394, -5011153, 8762807, -7248294, -3694209, -267362, -6455873, 30654256, -8791798, 20923470, +8128226, 9604084, -130997, 7926362, 13429289, 15042586, -4109210, -14565845, 93416, 12421582, +5014375, -2205466, -18321794, 24522116, -5118528, -16217260, -4482872, -9945534, 7683160, 10586021, +442919, 17746268, -4784057, 9100499, -20155208, -3568044, -21507048, -6706592, -7860864, -494995, +1207423, -4156455, 7696045, 2515240, -5795522, -9914395, -7339026, -2141041, -907312, -4976257, +-1055488, -1770063, 6090264, -1813013, 271120, -2318209, -9306120, -2831994, -3733400, 1129040, +-1540283, -5248987, -8127689, 3208878, -5490579, 2524367, 3624953, -5713917, -13939853, -3352222, +-2175938, -3741990, -4968204, 548682, -2317672, 1478543, 1646583, -6361921, -811749, -6405407, +5928666, 3607236, -3337190, 1573569, -5572720, -31242128, -13332115, 19185618, -3777961, -7838852, +22299470, 2151242, -11562052, 8469676, 12147778, 10307922, 1626182, -19210314, -7924215, 2958696, +2861522, 10073846, 6674379, 11361262, -9798968, -7732015, 3832722, -2641942, 9320616, -18054432, +-3033321, -19530290, -6295885, 3570192, -2667712, -2425583, 20953534, 4391067, -15479599, -2319819, +1272921, -15811922, -2120640, 812823, 9550934, 24098524, -8513699, 8081518, -13405130, 2061047, +-7878044, -10133438, 9829570, 21082384, -16656957, 1651415, 18766322, -8426726, -1712618, -6997576, +12287365, 2999498, -15226196, -148176, -5311264, -4908611, -1504312, -7450158, 11368778, -26912266, +5719286, 2296734, -11324755, 15135465, 23161148, 16384226, 44111460, 13414257, -11305428, -15626702, +-12943421, -7033009, 16195785, -5803038, 22487376, 2100776, 27381490, -32503238, -20867636, 9838159, +-5345087, -3331821, 13132399, -8829379, -1010391, 14001057, 6223408, 10394895, 15298137, 11985643, +-2594160, 4912906, -9362492, 367220, -367220, -6538551, -7194070, 4818954, -9911174, -816581, +14967424, 1394254, -8952322, -11651173, 2159832, -14646912, -5415417, 15817291, 8191577, -2557116, +-3631932, 3066070, -2943663, -4957466, 1045288, -3613141, -5632313, -941135, -7728794, 5476620, +4715874, 5245229, -2888903, -2035278, 3319473, 8095477, 22090090, -51231980, -1883343, 29466160, +-38884488, -1613297, 7842074, -40169756, 18219252, 5086315, 32485522, -3061238, 11582453, 9701794, +-35333624, -29218662, -11286100, -2676302, -17608292, -21674016, -11400991, 20359218, 14309220, 12403329, +1458141, 2448668, 6530498, 1425929, -25616796, -9472550, -32928978, -10394358, 18646064, 5678484, +12644384, 41776612, 10967736, 15897285, -508417, 8501888, 36786396, 27730456, 7829189, 18255222, +16740172, 36735392, 30179662, -39654896, 25089588, -2047089, 24016384, 24480776, 10266046, 44070660, +38915624, -21180094, 19331110, -83752, 18428630, -31871342, 3267933, 3664144, 1340567, -7055558, +20463908, 22206592, -21174726, -7009387, -12380780, 7943005, -17531520, -21731998, 20762946, 35389992, +13044889, 36823440, -10416906, 49961208, 48845588, 13833553, 25677462, -7239168, -12659953, 11671037, +11426224, 5687074, 3996467, 3203509, 6689412, -6721087, -12444668, -8782671, -23481124, -24529632, +-9870909, 11751567, -199716, 10388989, 1903207, 6412923, 15140833, 18652506, -5863167, 8675297, +-786516, -7402376, -6222334, -5198521, -15447924, -6929930, 340913, -13219372, -4675609, -11875585, +-6608881, 2841658, 16988206, -7746511, 6160057, 5003637, -2789581, 9570261, 5517423, 7363185, +259846, 12637404, 8012799, 5642514, -4915053, -7272990, -16315507, 23956254, 43021612, -5750961, +-58559196, -18611168, 6049999, -4451197, -9660992, -12735115, 260382, -33398202, -20054812, -27698780, +-4439386, -7976291, 9341554, -19712826, -5664525, 5539971, 9365176, -43487, 10409927, 20462834, +4230543, 29444148, -18798534, 7259569, 1209033, 28114856, 7346005, -5239323, -28073516, 18911814, +-4817880, 25691958, -21352430, -16713865, -16174310, -8367670, -25881472, -3291019, -4469451, -24093692, +13434658, 28043452, -13418552, 4414153, -36031016, 34956740, -10923712, -18547280, 15826954, 14166950, +-20602422, 2138357, -12837657, 4885526, -9400610, 43729748, -1588064, -3349538, -10675678, 76937360, +1975148, -10001905, 32821604, 26730266, -27801324, 22126060, -34067144, -18526342, -35603132, 27643484, +-24499030, 13573707, 18719614, 15347529, -31569084, 40315784, -7187091, -51733416, -59533616, -22982370, +-7329362, -16806744, 13873818, 14168560, 23546622, 4366908, 2046015, -17186848, 17782238, 28441810, +40920300, 11315091, -11751567, 4525822, 34810708, 6353867, -19256486, -4195646, 37141804, 9098351, +-22024056, -5117454, 18305150, 11199664, 16659104, 11853573, 23487566, 815507, 12870406, 5229660, +16592532, 8535711, 26415122, 9465571, 16652662, -2605435, 5157719, 1938641, -2077154, 7767449, +-2465311, 9885941, 16393890, 3244848, 9460739, 1978369, 12328704, -27420144, -6700149, 22565758, +-16466905, -78799232, 5681705, 50727860, -30573188, -20366198, 40739912, -29553670, -1879048, -8352638, +39101384, -67020816, 37539624, 22318260, -18891950, 7067369, 36672040, 26227754, -12794171, 15039902, +6753836, -10147934, 17260936, -296353, 10475962, 15933792, -6736120, 3911105, -1685238, 7645579, +-9682467, -7730405, -598611, 13696651, -39756364, -19601156, 19804094, -4375498, -26356066, -31055834, +5411122, 38857104, -16799764, -24661702, 19072876, 29015188, -6310381, 7376070, -5097053, 27038430, +-14614163, 40490804, -5450851, 190589, 22136262, 585726, 5102958, -28562070, 45081588, -23178864, +-28221156, 21527986, -29884382, -9753871, 5056250, 15034533, 41648296, -14646912, 25969520, -5157719, +13595719, -70398808, -53948548, -9772661, -21029770, 10910291, 9747428, 26921392, -4227322, -5469641, +31942208, -34833260, -775778, 22523346, 22095996, -7985418, 24618216, 3260417, -5247377, 35970, +-5467494, 23744190, -13104482, -1173063, 22980222, 5452461, -5216238, 9237401, -11419244, 3124589, +-875100, 579284, 9282498, 4536559, -13065827, -2794413, 4036733, -9962177, -14919106, -1074, +10896332, 19384262, -16203301, 18949396, 6398965, -18515068, 15516643, 17998598, -8973260, -20991116, +19488950, -9463424, 3577708, 10974178, -10710575, -27857158, 9162239, 7794829, -15574625, -14453102, +1063004, 10867341, -12366821, -5913633, -26510148, -12553116, 19080930, -33013802, 31912680, -28142236, +-35243964, 19601694, -17153026, -11665668, 20032802, -15432891, 16694001, -12184822, 7641284, 39239896, +-35549980, -2791729, -5630702, 33013266, 4253628, 2886755, -31853624, -29928406, -10794327, -8927090, +-4862977, -9829570, 5616744, 1469416, -3488587, 4657892, 6875169, 3151969, 5279052, -6372658, +15288473, -10362682, 14617384, -28388124, 737124, -23050016, -29791504, -17689360, 39003672, -17200808, +-17536888, -13117904, 8761196, -8105140, 17211008, 25177098, -26976690, 23634668, 4014721, -37205692, +-18763638, 76042936, 39318816, -58137752, -11165304, 36469640, -18913962, -21403970, 14519137, -18539226, +-40258340, 28418188, 12815109, -54660440, 22106734, 27259620, -32251984, -21399674, 32176284, -8239358, +-24702504, 5280126, 15820512, -39701604, 7173133, 6657736, 11040213, -30383672, -9251896, -2930778, +-9946071, -2396592, 1644436, 3015067, -18721226, 2564632, 26852136, 9072582, 1387811, 8605504, +-803159, -4863514, -15264851, -4992900, -8419747, -11339251, -25912612, 6446746, -14936823, -4436165, +31048856, -28153510, -18491982, 22740242, -17071422, -6477348, -7588671, 10018548, -18469970, -6995965, +28587302, 14908368, -14484777, 15844134, 8766028, -12482786, -8005282, 38955892, -31820876, -24895242, +41561860, -673236, -33816424, 4142496, 20269562, -20263118, -42142220, 27422830, 3071975, -46788300, +7590818, 12459700, -34216392, -1202054, 22332220, -6809671, -15444166, 11470784, 9104794, -23787140, +-2774549, 16692927, 48168596, 68131600, -26939108, 76244800, -5781026, -20592758, -15879568, -25523380, +-1951526, 12987981, 45060112, 1762010, 14024679, -11171210, -38472708, 948651, 1626719, 25712358, +5051956, -29023242, 54573464, -23009214, 10362145, 24643448, -26888106, -21787832, -38459820, -16732119, +24092620, 29969744, 36980204, -13685913, -89778240, 20145544, 47188804, 60421600, 51977156, -617402, +-25556130, -31743566, 11090679, 30891016, -19391778, -10202158, -79516488, -48686676, 43058656, 72255848, +14999100, -1835562, -17294760, -31408558, -7183870, 20136954, -27708444, 11068668, -3755949, 45710264, +-1738388, 17899814, -88938576, -11212549, 1312113, 54871428, 42656004, -1043677, -26485452, -7266011, +65371548, 29542396, -76237816, -94635848, -36768140, 19127100, 147301808, 15978889, -25315074, 20336670, +-39137352, 104565808, 32133872, -83118352, -51801600, -10297184, 74028592, 11154567, -30480310, -28407988, +-26085484, 21082920, 39981312, 19989314, -42538428, -3484292, -14453639, 35394288, -3566970, 21435108, +-7241315, -8930311, -28116466, 11134166, -8423505, -2953864, 22352084, -34612068, 20557860, -5166309, +-5007932, 225486, 16305843, 34474628, 17680232, 2406792, -6498286, 7354595, 0, 14033806, +4900021, 15477988, 4139812, 3962644, -17127256, 8163659, 9511742, 6334003, 446140, 5221607, +3570729, 15323370, 7540352, -12324409, 31393526, -36105104, 1153736, -14501957, 8379481, -22341346, +21034602, 5851893, -11895449, -22530862, -11068131, -4236985, 6595459, -30760018, 7129109, -15038828, +-5853504, -24071144, -11341935, 19611358, -20558934, -7216619, -2812667, 9620727, 6483253, -7951595, +11092290, -17590038, -1389959, 287226, 9493488, -11493332, 16790638, 12604118, -12751758, -14694157, +-5638219, 23948200, -17172352, 7625715, 17736604, 4047470, -17273822, -6520297, 7443715, -10746008, +8058433, 892816, 3900367, -15850577, 3358128, -12865038, -561567, 12185359, 15239618, 11985106, +-8814347, 11445551, 1432372, -14057428, -2107218, 102005, 16950088, -4510253, 3570192, 14887967, +-3184718, -19040664, 26808112, -10732586, 15852724, 11805254, 2720862, 3928285, -11347304, -13717052, +18455474, 3046743, 16231218, 5142150, 8828842, 4754529, -546535, -599685, -14248017, 1870995, +3756486, 5285494, 5566278, -1474248, 6487011, 1414655, -918049, 2096481, 761820, 7069516, +-1928977, 5588290, -6612102, -1344325, -96637, 848793, -3770445, -1748589, 12446815, 8252243, +-2246805, -8635032, -10283762, -3412889, -4227322, 11848741, 1024350, -3094524, -7723962, -3527779, +934155, -5921150, 13089450, 1617592, -5527086, 2655364, -408022, -1996623, 3574487, -3467112, +11324218, -10391137, 7719667, -10091563, -29118804, 54577760, 4990215, 3022046, -21992916, 12693239, +-1817845, 14356465, 10947335, 16795470, 1887101, 4312147, -9386651, 2758980, 15391552, -1460826, +8440148, -1291175, 2714419, 3441880, 6267431, -6461242, 11661910, -7869991, 1110249, -1229971, +3984656, -992674, 2380486, 8883066, 9738838, -4638028, 4322885, 1936493, -2123325, -4118874, +12956843, -3922916, 2779381, -3626563, 6799470, 5906, -6138045, 13024488, -8018167, -2745021, +3491272, -6056978, -3643743, -1847910, 590558, -2288144, 274341, -1195075, -3298535, 4460861, +-8296266, 5319317, 3632469, -2806224, 5599564, -4154307, 6622840, -3323768, 1326608, 1341640, +-3878892, 6520834, 78383, 960999, -1967095, 8762270, -10254234, 11077258, -7725036, 1388885, +1976222, -236760, 2119030, -1685775, 6456947, -5914707, 511638, 5553930, -6514929, 4220342, +3826816, -894427, 906238, 3817689, 1868848, -1654099, 2582886, 759672, -753230, 597000, +2280091, 341987, -2682207, 841814, 1235340, -1337346, 3295314, -615791, 2726231, -1604170, +531502, 2163053, -1255204, 427349, 1526861, -1969243, 3605088, -243739, 1832877, -358093, +3789772, -1212791, 541703, 3554622, -2933463, 4097936, -2209224, 1835562, -2274722, 4027606, +10452877, -49754512, -123906584, 19286014, 94407136, 87718264, 152150832, -38801808, -40703404, -103553272, +-141403744, -29131152, 51161652, 54757076, 103089416, 56020332, 4435628, -26736708, -71944464, -51126752, +-8820789, -7977365, 25654376, 23817742, 13762686, 8809515, 6924024, -3762391, -17673254, -1338956, +20434380, 189515, 4305168, -1136019, -15311558, -11693048, -26046292, -25486872, 11576547, 10716480, +23675470, 36039072, 26975078, 13216688, 4766340, -38825432, -27491012, -21227876, -21312702, -23728084, +4958003, 15198279, 26346404, 33705828, 27843736, 6113349, -3298535, -22285512, -22805202, -13502303, +-6611029, 2233920, 3745748, 7596724, 653909, -7244536, 2462090, -11591043, 6062347, 9943923, +1122060, 19857244, 23931558, 7459285, -4563940, -26288422, -34711924, -13916768, -6418292, -3992709, +17632988, 13733158, -3617436, 15568183, 16818018, 9479530, 11612518, -6382859, -12527883, -9996536, +-14411226, -11361799, -2145873, -10903848, -4361540, 658204, 8768176, 12484933, 17889076, 15531675, +14228690, 11385421, -5916318, -13368623, -22573274, -27722940, -16201154, -11996917, 1531156, 13312788, +19492172, 22701050, 17861158, 16547972, 10589779, -13969918, -25078314, -22542672, -11098732, -3172907, +-1065152, 1757179, 9526774, 8489003, 3990025, 1979980, 7786239, 4502200, 6767795, 1959579, +-10533407, -11460046, -7624104, -2997887, 3562139, 2608656, -3848291, -2097555, 3539590, 1918777, +1499481, 4835597, 7638063, 3541201, 120259, -3833258, -4506495, -3730716, -4631586, -5951214, +-4598836, -458488, 3103114, 4300873, 4996121, 4050154, 1229971, 60130, 96637, 234076, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -5836861, --78920, 1278290, 969589, 4165582, 547608, -510027, -2685965, 6121939, 3781182, 199716, --754304, 6081137, 2064269, -1942399, -5333276, 3403762, -1536525, 2643552, -5076115, 328028, --1214402, -3770445, -1023813, -1896765, -703301, 289910, 23622, -2748779, -1690070, -435939, --531502, -1708860, 1829656, -175020, -1831804, 3262028, -5426691, -2572149, 2587718, -3256122, -446140, -2020782, -2980707, 2026688, 1836099, -1596654, 2034204, 3926137, 2206540, -2034204, --2384781, 430570, 768799, -2398739, 2596845, 4330401, -3695283, -1177895, 2127620, 1596117, --882616, -1127966, -1806034, 2387465, 722628, -2856690, 3248069, 1585380, -2674154, -1999844, -3415573, -2576981, -3299609, -6209449, -5404680, 2943126, 3397319, 275952, 1489817, -586800, -1218697, -2297808, 3485366, -287226, 1611150, -1596117, 897111, -1453310, -1141388, 58519, -2231773, -490163, -573378, -997506, 329102, -752693, 150324, 265751, -466004, -539018, -67109, -25233, -185220, -591632, 298500, -215285, 7792682, -747861, -1573032, -3189550, -4988068, -2654290, -282931, -4051765, -4323422, -5437429, -2558190, 4265440, -4413079, -1649804, --1552631, 1479079, -1098975, -6058052, 3157875, 1518271, 11778948, -1202591, 5510980, -1098438, --290984, -533113, 608812, -2483028, 4561792, -1197759, -918586, -2752537, -504122, -984084, -7068980, 1312649, -715112, -6624450, -676994, -1273995, 1998770, -4210142, -1165547, 1139777, -950262, -1164473, -710817, -2616172, -985158, -3144453, -1415192, 6103686, -1796370, 1932735, -3407520, -824634, -3317325, -4352950, 1130650, 1021665, 1314797, 2705830, 3207267, 2641405, -1526861, -1209570, -1173063, -1399623, -6128382, -1465658, -623307, 2968359, 2530810, -1514513, --148713, 3260417, -3400004, 1340030, 97174, -849330, -1967095, -2996814, -37044, 1783485, -1803349, 1899986, -794032, 781147, -709743, 158914, 2672544, 1083942, 207232, 23085, --407485, -63351, 170725, 532039, -339302, -373125, 1159641, 594316, 1181116, 1210644, -248571, 672699, -173409, 194884, 88047, -541703, -1371705, -249645, -10328859, -2523830, --209917, -2211908, -1535988, 3609920, -7258495, -6084358, -3565897, -2379949, 1024350, 8143795, --1778117, -25233, 971736, -5852430, -1538672, -4889284, -765578, 8625368, -676994, -4210142, --2742874, 99321, 1750736, 1720134, -2433636, -10946798, -5246303, -1473711, -4233227, 379031, -186831, 4419522, -2870649, 3923990, 949188, -2035278, -5869073, -4916127, 6771553, -5616207, -3715684, 1079647, -3605088, -1357747, -3220152, -2314451, 3183645, -6031208, 3103651, 1048509, --106300, 999654, 412854, -609885, 125628, -3061238, -4193499, 290447, -1283658, -3099356, --1256815, -4787278, 5546951, 3794604, 952409, 4538707, 532576, -1942936, 5637145, -2987687, --1875827, -1926293, 4289599, -4203163, 1859721, 3011846, 163746, 1862942, 4672925, 1707250, --146029, 289910, 992674, 771484, -926102, -566399, 55298, -246424, 1498944, 724239, -1585380, 1175747, 450972, -1438277, -1683090, 1009854, -61203, -101469, 1534914, -1076426, --855772, -30065, 367757, 499827, -153008, -1731946, 1436667, 380641, -6940667, 8510478, -9656697, 2647847, 2600603, -2760053, 4507568, 2260764, -5636608, 1770600, 3641596, -6739341, --5878737, 5925981, -5149129, -743566, -3314641, 5972689, 1315334, -676994, -2182917, -38118, --3854196, 3599183, -1916092, 2182917, -915902, -23622, 3898220, 1534377, 562641, -1495186, -3820910, 2425046, 1149978, -317828, 3952444, -297427, 737661, -2472828, 4814659, 1088774, -1931125, 3521873, -9615895, -3118146, -1881196, -3437585, -3335579, 990527, 5394479, -2307471, --1415729, -2929705, -1298154, 1176284, 2384781, -6616397, -378494, 2332167, 290447, -509491, -2902324, 1893544, -6194954, -1722282, -1331440, 3864397, -4066797, 5451924, 5901285, 3095598, -1235877, -2724083, -122407, 487479, 3953518, -1037235, 496069, 489626, 618475, 5826660, -658204, 6207839, 2309619, 106300, -2942053, -1680406, 2560874, -504659, 19864, 262530, -176094, 580894, 2607045, 752693, 1032940, 114890, 998580, -2047626, -151934, 667867, -845572, -513249, -308164, 28991, 843961, -599148, -431107, 878321, 853088, 1578401, -747324, 1461900, -836445, 130460, 193274, -554588, 1389959, 10682121, -1991254, -159451, -3896609, 2520609, 1884954, 3598109, 9487046, -2655364, -877247, -9154186, 175020, -7867307, --9976672, 347892, 4242891, -12885439, 4366371, 4205310, 2304787, -3918084, -3096135, -4272419, --1622961, 239981, 267362, 4087735, 5405753, -748935, -5328981, -3239479, 4001299, -5731097, --2851322, -4845260, 1040993, -7825431, 3892851, 610422, -531502, 1249299, -253940, -1796907, -4832, 5025112, -5811628, 7028177, -5345087, -631360, 1296006, -3552475, -2898029, 2745021, -1355062, -1130650, -2718178, 5242545, 2189360, -3669513, -7334194, 841277, 1696512, 4282083, --178778, -1907502, 369904, 2263448, -1746441, 10189273, -3413425, -1669132, -7275675, -4831838, -11507291, 4660040, -2556579, -670552, -4000762, -4491999, -357556, 1588064, 306016, -2187749, -2485176, 1353452, 3444027, -379568, -2490007, 989453, 103079, -1152662, 1008244, 955093, --260382, 431644, 1362042, 431644, -322123, -1052267, 571768, 338229, -960999, 1872606, -1597728, 497679, -938450, -2444910, 176094, -211527, -91268, 1050656, -1195612, 759672, -1276142, -782758, 2943126, 6882148, -9192841, -5430986, 6428493, -4817343, -5130339, -5632313, --6733435, 4838818, -1702418, -200790, -1550483, 252329, -7492034, -1496259, 3425773, 3746822, -849867, -3956202, -5750961, -4772246, -6068789, 1228898, 7233262, 973347, 2338073, 2478733, -2410551, -4255239, 4455492, 2772938, -3189550, -2564632, -9826348, 1509144, 2187212, -7715909, --618475, 2370822, -1454920, 951872, -703301, -8278013, 7030862, -7712151, 6054830, 324807, -3046743, -8680129, -4864588, -7772817, -6137509, 1129576, -2195802, -2763275, -3464965, -26844, -3854733, -7192460, -135291, 2084670, -2335389, -8019241, -5033702, -1680943, 1496796, 3887482, -1675574, -6605660, 7031935, -2275259, -1554778, 7000260, -9204652, -3028489, -1847910, -1647120, -10981695, -4016868, -204548, -4168266, -3467112, 1991254, 1497333, -259309, 1159641, -887448, --1568737, 2044941, 10737, 829466, 861678, 2647311, -1059783, 763430, 572841, 172872, -679142, -3035468, 3921305, 3565897, -1239098, -628676, 542240, -529892, 657130, 103079, --294742, -1466195, 874026, -763430, 327491, 3469260, 2204392, 1858110, -1452236, 2471217, -972273, -1017370, 1111323, 365072, 817118, 14220100, -12597676, -6620155, -8378945, 6125160, -2331630, -4256850, 2896956, -23622, 8475044, 574452, 124017, -8094403, 5784247, 9359807, -9808632, 8169565, -4493610, -649077, 1290638, -5149129, -3519189, 1411434, 625455, -7438884, --3634079, -3106872, 3693135, -517544, -5621039, -2551748, 1894081, 4549444, 590021, -1516124, -106300, -3921842, -77309, -192737, 646929, -8507256, 5035313, 5950677, 1251446, 3096672, -3547643, -6873559, 9958955, 8996883, 1693828, -6110128, 3589519, -2120640, -9120900, -2265595, --2843805, -71404, 615254, -102005, -5487358, -4874251, -11339251, -9423158, 191126, 5835787, --5159867, 2505577, 805843, -3443490, -9223442, -837519, 5493800, -3517041, 4938139, 9672803, -2981244, -3869229, 5599564, 71941, -509491, 2714956, 4376572, -279710, -674310, 1291711, -2853469, -1434519, -6167573, 463856, -97711, 767189, 854699, 2198487, 4650913, -1530619, --723165, 3562675, 3218004, 785442, 537408, -2108829, 4488241, 611496, -213138, 2757369, -911070, 1081258, 532039, 2500745, 2204929, 2490007, 3979287, 432181, 2410014, 454193, -2674691, 1357210, 1556389, 1134945, 2538863, 2290828, -13496935, 1444720, -5030481, -18082886, --13909788, 3498788, 142808, -3102577, 3239479, 8724689, -1371168, 5236639, 4635344, 2706903, --1374926, -4690641, 3860102, -3991635, 498216, -3423626, 5455146, 9978820, -8941048, -2556043, -569083, 3642669, 980326, -2764348, -1613834, -3310883, -244276, -4103305, 5277441, 1184337, --6281927, 7034083, -7008850, -2219424, 8614631, 7607461, 6408628, -7275138, -4779762, -6514392, -7598334, 10308995, -139050, -2102923, 8170102, -11986180, 1491964, 3246995, -1146219, -10067403, -9096741, 3209414, 4630512, 8552354, 468151, -12152073, 3212636, 5027259, -3102577, -879931, -8410620, -8674760, -8152385, -7021735, 868657, 10849087, 5866389, -1534377, 12405476, -16456167, --6065568, 222801, 7946763, 3722126, -2367064, -13072270, -2029372, -5226975, 1474784, 5012764, -12782360, 2206540, -3588445, 1702955, -2157147, -818191, -4205847, 51540, -3462818, 1225676, -3498788, 2008971, 3222299, 3656091, 1167157, 813896, 45634, 680752, -1733019, -1791538, -182536, 3859565, 1461900, -425739, 696858, 1580548, 3088618, 454193, -1005022, 570157, --981400, 2514167, -4543539, -2718178, -1996623, 2912525, 2496450, -14540075, 14723148, 5992016, --345745, -1481764, 1250372, 2541010, 7982734, -1497870, 893353, -2535105, -1826972, 4510790, -2330557, 5235029, 2310693, 3029026, -9927817, -4104915, 16693464, 1705102, 4970888, 7024956, -2644626, -5637682, -10474351, 3281355, -4363150, 410706, 3701188, -5203890, -6126771, 7495792, -8791261, -4557497, -3238405, 6816113, -8344585, 3675418, -6419903, 2911451, -6213207, 9050570, -1269700, -1181116, 3189013, 15538118, 4291746, 6027987, -1743220, 804233, 2654827, 11477763, --985158, 16443282, 496069, 7819525, -276489, 14843944, 5257040, 11081016, 8406325, -1855963, --4956929, -1328219, -5663988, -6246493, 8700530, -1748052, -3394098, 1356673, 130460, -4440996, --2163590, 1360968, 3894999, 1082332, -7437810, -7368017, -3828963, -7522635, -195958, -155693, --2211371, 2087891, -148176, 3062312, -448824, -3067144, 634581, -1294396, -5670431, -3575024, -811212, 7587597, -3197066, 2810519, -856846, -79994, 3517041, -2636573, 1195612, 1724966, --1926830, -1313186, -947577, -2169495, 1069447, -2713346, -3541201, -1348620, -3837017, 4812511, --1351304, 295279, -413927, -284542, 508954, -1591285, 710280, 1219771, 624918, 1963337, -2602750, 463856, 1939715, -1447404, -4151623, 831076, -1150514, 1743220, -1698660, 17060146, --4481262, -151934, -21030308, -751082, 11235634, -5887864, 9762461, -13380971, 1938641, 1337882, --391379, -17743584, -804233, -29561724, 1389422, -3267933, -12383464, -2168422, 1653026, -6496138, -1118839, 7459822, 1142461, -6777996, 1249836, -2108292, 6547141, -7288560, 416075, 9462350, -2128156, 768799, -1421634, 7246684, -4683662, 744640, -37044, 5556614, 1069984, -9993315, --5320391, -7055021, 8239358, -18703508, 9035001, 7414724, 6380174, 3546032, 1385664, -8200167, -5820755, -12134356, -2875481, -2568927, -2518462, -559956, 761283, 3864934, -9320616, -3684008, -15708843, 6559489, -5734318, -6687264, 1705639, -2794413, 4787278, -3222299, -971736, -5113696, -14246407, 7229504, -4891968, 863825, -7257958, 1654099, -5479305, -1923072, 5657546, 5248450, --1646046, 10368051, -4085051, 5127654, -6812355, 7228967, 1061394, -4256313, -5735929, -8571681, -2166274, -972810, 3892314, -1127966, -2522757, 1531693, 1596654, 2547453, 2085207, 4729833, --180389, 1495186, -3679713, 2936147, -2641405, -1369021, -1981054, -432181, -4684199, -847182, -1833414, 4191351, -4025458, -1988570, -2908230, 2860985, 2239826, -1905892, -362925, -3176665, -2412698, 10828149, 10940892, 6352257, 5672578, -5318244, 6309844, 10517838, -7812009, -278636, --20275466, 11618423, 7928510, -2887829, 4697621, -1303523, 1621350, 7234336, -4539781, 11315628, --10202158, 985695, 12741020, 5581847, 784368, 9835475, -3477850, 4519916, 2593087, 5270999, -8705899, -5141076, -1042066, 16058883, 8028368, -348429, 2217277, -10875394, 14776835, -12437152, --783295, 12942347, 4016868, 13933948, -8742406, 2237678, -565325, -3405372, 1869385, -13452911, --9439264, 12687333, -6317360, -2713346, -4290136, -14306536, 10162429, -3369939, -2370822, -6336688, -6251325, 14544907, -11464341, -2330020, 9803263, -10764799, -4698694, 8763881, 12220793, -20199232, --5390184, -1729798, 8619999, -302258, 10066866, -2441689, -7378754, 493921, 5357435, 13049721, -6577206, -8764418, -459025, 6422587, -13007845, -7958575, -2492692, -6657200, -6775311, -792421, -6168647, -5833103, 1441498, 6437082, 1784022, 1158031, 4494684, -1107565, 2892124, 2801393, -2736968, 1581622, -518080, -3910568, -1340567, -1083406, -3575024, -1606318, 547608, 467078, --542240, 566936, 3929895, -3238405, -1060320, -2403034, 1877975, 1858110, -783295, -2680597, --5962489, 3010772, 2255395, 3878892, 1045288, 955093, -435402, -3686693, 1475858, -1475321, --1708860, -1065152, 10573136, 22405770, 4331475, -13243532, -4720169, 4399657, -29387776, 928787, -179852, -4599910, -1442035, 13577465, -22179748, 4880157, 10369125, -8155069, 9189619, 17144436, -4250407, -15838229, 4288525, -3986267, -287226, -15524696, -4690105, 14166950, -1591285, 12990665, --3418794, -4548371, 2125472, -10986526, -6179384, -7907572, -5867999, -4319127, 10597295, -11704323, -1903207, 20461224, 13810467, 4618164, -20795694, 3461744, 13644037, 5715528, 811212, -7410966, --9030169, -22194780, -15337328, 3177739, -7590281, -7582765, -438087, 9492415, 6717866, -6667400, -290984, 13503377, -5196374, -2276333, 612570, 17751100, 674310, -883153, 9023189, 2835752, --20193326, 5674189, 5848672, -88047, -16723529, 7068980, 9795210, -7338489, -5243618, -13699872, -3650185, -5019743, 5190468, 2623688, -3230889, -5796595, 3784403, 1755031, 5843840, -2888903, -9114994, 3245922, -6257231, 776315, -326418, -8564702, 159451, 723702, -31675, -146566, --4530654, -3887482, -1826435, -75699, 5713380, 1931662, 2986613, 4665408, -2117419, -2706903, -2194728, -4431333, -4010426, -124554, -225486, 1440425, -1328219, 1060320, 2810519, 3045669, -370441, -1722282, -429497, -178241, -506806, 92342, -745714, 418759, -103079, 3958349, --2238215, -2728378, 7094749, 5151277, -685047, 2047089, -6592775, 23167054, 1289564, -4651450, --300648, 10251550, -4913980, 2841121, -2469606, 2438468, 8795556, -15975668, 16921098, 19163070, -5410048, 8125005, -6461779, 10879689, 25228638, 847182, -2859911, -4611721, 10756746, -3769371, --6069863, -2092186, 3834332, -12516072, 5616207, -11018739, 12679280, 2915746, 12768401, -7951058, -11641509, 3500398, 15228343, 2561948, 3233574, -5393405, 9497246, 2418067, -2966212, 13698798, --5282810, -9677098, 19346680, 15451682, 5728413, 14608258, 21166136, 25655988, -7924752, -7976828, --8996883, 3253975, -11720966, 13927505, -1676111, -1213865, -19648402, 4627828, 22382686, 22808424, --838056, -2925947, -15573551, 301185, 14873472, -7516193, -9207873, 8447127, 1362042, -8031052, -2916283, -1255204, -4893579, -1056562, -4190278, -111132, 8650601, 6460168, -1705102, 1600412, --2033667, -8533563, -11155641, -2025614, 5630166, 2324114, 7948374, -1527398, -7398081, -1971927, -8240432, -3784403, 4709969, 7611756, -7543573, -1953136, -692027, 1998234, -362925, 5106716, -3737695, 1891933, -7519414, 1988570, 4189204, 1330903, 1749125, 2808372, -6667937, -3062312, -49929, -268972, -3517578, -8639327, -2782065, 847182, 4560719, 1075889, -3529926, -4080219, --30380452, -21248276, 11064909, 4254165, -15961709, 1571421, 6951405, -14556718, -9190693, -6317360, -17196512, 7673496, 5445482, -5561446, -4297652, -4434017, -10838350, -14420890, -25361246, 13104482, -11200738, -5427765, 28470264, 13655312, 27333708, 18753974, 1676648, -8835821, 7188165, 3313567, -12391518, 14271639, 15752866, -2326262, -2859375, 6697465, -7231115, -1704565, -6382859, -11882027, --19531364, -5716065, 19734838, -4951561, -7987566, -11256036, 7804493, 11955578, 7905961, 750009, -11596949, 22721988, -13654775, -6229313, -10529112, -7616051, -22009560, -5397164, 5464809, -10011569, --7888781, -25286620, -36046588, 3912715, -23778550, -37317896, -27064200, -11378442, 24055574, 8318815, -14646912, 11020886, -24943022, -10519449, 2062658, 12439836, -12437152, -14670535, -14246407, -4430259, -7307350, -8443369, -31070330, -19522774, -4549981, -6300180, -2323577, -4618164, 17399986, 15947214, -16453483, 16858820, 5519570, -161061, 6247030, 1753957, -628139, 4973036, -14056891, -5408975, -5964099, 8160975, -474594, -4559108, -5145908, 2041183, -7700340, -11060078, 10055592, -8242042, --4272956, 907312, -9711995, -9073118, -16498580, -6405944, -3955665, 1161789, 13593035, -3525631, --2135136, -4344897, 6880538, -3687766, 272194, 6671695, 433792, -4712653, 2960306, 6656663, --4193499, -997506, -319438, 3524558, -57669064, -9054328, 18529562, -19633906, 8053601, -7653095, --31289374, -9751186, 33492692, 42184096, -22407382, 777926, -7725573, -34428996, -27423366, -25912612, --27657442, -14790257, -18066780, -1501628, 5893232, -4825396, 7033546, 6484864, -11336029, -3115999, --15550466, 6501507, -24473798, -22049826, 5258651, 3774203, -6691559, -8104067, 19149112, -5680631, -26601954, 5854578, 24654722, -16752520, 10714870, 6936909, 29868276, 15937550, 10444287, 2809982, -4482872, -3597035, 8741869, 12264279, -9721122, -13556527, 20883742, -2959769, -26322780, -50470160, --60679296, -43781288, 7185481, -150861, -56516400, 18258442, 9532680, 14047227, -19331648, 2354179, -6553583, 2422362, 28869160, 29417304, 58891516, 19495930, -31553514, -40491340, -24925306, -22419192, --25925496, -23087060, -913754, 12466679, 16816408, -11024644, 22172232, -19246286, -26808112, -20893406, --13919989, -10515691, -20983600, 12924630, -1584843, 12353937, 9454834, 1292785, 21755084, -11647951, --5167920, -21964462, 7181186, 11441256, -1986422, -2149094, 6423661, -21110302, 595390, -7649337, -3820374, -10289131, -14547054, 8489003, -602369, -6196564, -2469606, 10012106, -8249022, 5063767, --7694971, 5796595, 5039071, -3196530, -7645042, 4450123, 4928475, -15661061, 6209986, -4181688, --4756677, -4997195, 3095598, -10262824, -4698694, 32355600, -8655433, -61085172, -17468706, 50333796, --6975027, 11251741, 7160784, 9429601, 17609366, 14468134, 5022428, -9925133, -3717294, 2547453, --10895258, -2479270, 18460844, -16486232, -9871982, -16522739, -3995930, 2919504, 2102387, 4463008, -8616778, -12539694, 11216844, 27623620, -522375, -15993921, 1443646, -10432476, -3651259, 16429324, --17260400, 2044941, 5424544, 20078972, 28915868, -18300318, -10523207, 11316165, 1524177, 3273302, -3338800, -12093554, -31200790, -5456756, -14532559, 28490666, -53893788, -35302484, -14599668, -5748814, -15549929, 3386582, -19035832, -3077881, -21929030, -23539642, -8489540, -16983374, 3105261, 14179298, -64756296, 12138114, -9644886, -41539312, -34280280, 10299868, -1070521, -38981124, 21095806, 21143050, --39814884, -603980, 10327249, 11635066, 42885248, 18994492, 8937290, -42261404, -21898428, -29112362, -26603564, -2529199, -8763881, -4582193, 8274792, 28255516, 23810224, -12397423, -25206090, -36603860, -8877161, 21926344, -7722351, -3591667, 19108846, 11135240, 16645683, 4414690, 5892695, -13971529, --4293894, -6498286, 7155953, 7739531, -2058900, -3074660, -2191507, 10375567, 11324755, -16457778, -9580998, 7557532, 13696651, -8602819, -6234145, 8894340, 2960843, -11802033, -1361505, 14417668, -2577517, -10206990, -21426518, -72515688, 10282152, 11188390, -2464774, -1225139, -5648419, -20915954, -8118562, -4654134, 36888400, -38203736, -7859254, 38875360, -1874216, -26397406, -3318936, 22903986, -27858768, 17086454, -5107790, 19917374, -15211700, 13426068, -6235219, -5266704, -13178033, 21821656, -14814416, -14405320, -6687264, -2193655, 22125524, -2207613, 2252710, -14391362, 14869714, 9612137, --16582869, 29752850, 1217086, -26988500, 23607288, -29311542, -15522549, 26451630, -56852484, -36283348, -30713312, -19721952, 22734872, -36095980, 7888245, 13060459, -19906636, 622770, -1693291, -37252936, --8749922, 38198364, 40324376, -46169288, -15420006, 13915157, -37047852, 47522740, 47589848, 6701760, --68454264, -35993436, 72507640, -38511360, -7794829, 58788976, -34710852, -70666704, -15966004, 63578400, --13849659, -46630996, -11561515, -85021024, -4006668, 68650760, -25192668, -68745784, -7102266, -19391778, --9372692, 20312510, -2566780, -919123, -25130390, -16472273, -8091182, 27391154, -35029752, 1611150, -5489505, -11040213, 1118839, 32625108, -21053930, -26421028, -3593277, 9120363, 20426864, -8269423, -10228465, 15549392, 1691143, -23861764, -12780212, 441308, -19040664, -9301825, 36140004, -13772350, --35458712, -9576166, 20524574, 8437463, -2772938, 4490925, -32072132, -18531174, 24260122, 35989140, -4288525, -26847304, -13152264, 1061394, 9466645, 17995376, -10561325, -40075268, -37822020, -1156957, --47663936, -14195941, -20425790, -19201188, -14594836, 30654256, -3648575, -10026601, -13274133, 5869610, --16906066, -39692476, 30370250, 9490804, 26204670, 8142721, 27113592, -11029476, -17147656, 5923297, --28849832, 22085258, -26147224, -5627481, 16857210, -19811074, -4370129, -12088722, -31593242, 4582193, --23901494, -17246978, -20876226, -15469935, -9646497, -21192980, 3524021, 23179402, -15964930, -5772973, -2707440, 21346524, -9963787, 7461969, -22207666, 35650376, 11047193, 15197205, 9662066, 34183644, --2158221, -40523016, 8770323, 14494978, -11345693, -295279, 21126944, -28242094, -27959700, -32752346, -28030030, 8169565, -40183176, 15445239, -26550950, -5344550, -37493992, 16374026, 26485452, 5319854, --41512468, 23082228, 19154480, -5478768, -36486284, 9636296, -22034256, -7723425, -1634772, -11326366, -17997524, -16491601, -29581588, 14456323, -6629282, 12189117, -193810, -1329829, -219043, -8252243, --9220758, 6008123, 26356604, -3453154, -37266356, -10554345, 15495705, -18664854, -7852811, 17627082, --6743099, -2831994, -14895483, 28951300, 17169132, -8888435, 13149579, -2613488, 5918465, 23422604, --4279398, -21048024, 8699993, 13241921, -10684805, 16787954, -2731062, 10241350, 1255204, -8028905, -14304389, 20447266, -11836930, -22167400, 8612483, 13123809, -10718091, -2500745, 12541305, 3995930, -35314832, 66304096, -15899969, 32900524, 6442451, -15614890, -29567092, -17223356, 38592428, -12593918, -7210177, 14994805, -3841848, 35563404, -5173288, 27916214, 29196650, -35734664, 18490908, -9333501, -926639, 13152800, 10946261, -1187022, 5873368, 10650982, 35738960, 36715528, 28367186, -20685636, --6999186, -48734456, -1401770, 11547020, 22080426, 5105643, -40273372, 17703856, -24142012, 31331786, --28195924, -19748260, 2122251, -23636278, -3977140, -13636521, 48272748, -26313118, -12808129, -50482508, --16342351, -26494042, 71402760, 43375412, -14936823, -48023640, -51418276, -30593052, 35571456, 46309948, -23569170, 6842957, -61711700, -28685550, 20418812, 17362942, 2793339, 22374096, -12719009, -40679244, -19368692, -69022808, 75196288, -7012608, -48423608, 112950120, 16315507, 39310224, 67810016, -112115824, --80661632, 22382686, -6536940, 17146046, 24677808, -70092256, -5065377, 14149770, 1537061, 58721328, -4296041, -30749818, -3080565, 31561030, -18187040, 13786308, 16355772, 639413, -12706661, 15431281, --40674952, 31144418, -7825431, -13008919, 17723720, 4670240, 1392643, 18439906, -4218195, 11036992, --2118493, 7074885, -5185100, -21460340, 13155485, 9037685, 12448963, -151934, 511101, 8400419, -4837207, 3239479, 25103010, 27685896, 1739999, 18127984, -16934520, 2539400, -11070278, 20964272, -19316078, 2918430, -5394479, -12666932, -29463476, 2429341, -29357712, 19871204, -41475964, 25678536, --17064978, 42136852, -18996640, -1957431, 24012088, 4270271, 2116882, -10860899, -9392020, 1096827, --16121697, 17779018, -2055142, 18879066, -14783814, -14595373, 4989142, 743029, -14985678, 9458055, --1867237, 8253854, -4581120, -4059818, 7918309, -7531762, -582505, 5879274, -3026878, -3597035, -29931090, -2057826, -9973988, -5358509, 14235669, -1301375, -16243566, 8639864, 17537426, 3531000, -464393, -10359998, 3723737, -8391829, 8069707, 21250424, -7495255, 9713069, -7960722, -2396055, --8723615, -4159676, 5663988, 6867116, -12362526, 7477538, 2283849, -1588601, -12357158, 2121177, -4580583, -9216463, 13415867, 11187316, -22369800, 5719823, -20525112, -23423678, 16173236, -8348880, -19521164, 10576894, 666257, 9947681, -3029026, -12093017, -2806224, 709743, 13633837, -6126771, -4236449, 5567888, -7701950, -1432909, 4794257, -2368675, -1414655, 7826504, 537, 2990908, --6371047, 2682744, -569083, -6683506, 12720619, 1093606, 10403485, -5053566, 8563091, -4256850, -696858, -6663105, 5762236, -3246459, 12606803, -3913252, 11929809, -12173548, 2802466, 780073, --2441689, 401043, 1600412, 9381819, -296890, -11077258, 7431367, -6252936, 1301375, 6683506, --6725919, 11698954, -24361592, 51601348, 9773198, 12713103, -6512244, 4763656, -1458678, 9816685, -3121368, 22022444, 1550483, -11870216, 7274601, -7727183, 3426310, 4552666, -10045929, 587874, -2472828, -10845866, 9977746, 2605435, -4434554, 13421773, -4738423, 5338645, -4048544, 2546916, -2589329, 1279363, -1639604, -3894462, -1784022, 1929514, 372052, -2168422, -6459094, 4912906, --4323959, 2481954, 4312147, -4386772, 987843, -4092567, 1235877, -6527814, -10639171, 11095511, --5880884, -2795487, 4727149, 2217277, -1838246, 1319092, 9530532, -10392210, 4571993, -3876745, -8263517, -8723615, 5049271, 2528125, -1501091, 1988033, 257161, 183610, 4071092, -5493263, -3181497, 2819646, -1455457, -479426, 7232725, -1040456, 2498597, -8267812, 11292006, -8650064, --79994, 5688148, -5018670, 3903589, 1309965, 1421634, -5249524, 4348118, 4509179, -2732136, -1818382, 2279554, -3724274, 1395864, 1914482, -752156, 3966939, 239444, -31675, -354872, -3566970, 2772402, -2171106, 3117073, -1512902, 1432909, 1602023, -317291, 4423280, -1902671, -90194, 2851322, -3392487, 340913, -291521, -2376191, 404801, 2558727, -679142, -1986959, -4407174, -2714419, 9754408, -45804752, -113715168, 24567750, 94564976, 63926832, 133378600, -43619152, --37289444, -76732808, -122642792, -12117713, 38227356, 50395000, 65765612, 33160906, 3637301, -10746545, --28434830, -40550396, -6144488, -10827613, 3993783, 9315247, -483184, 2345589, 4903242, 2182380, -16060493, 19078244, 11851425, -2179696, 2202245, -14105209, -29614336, -31549220, -15476915, -20689932, -17043504, 31428424, 33343978, 36621040, 20061256, -5910949, -14462765, -26898306, -28432684, -19742354, --11120744, -1266479, 7172059, 13817447, 14812805, 12479564, 10733123, -1829656, 2878702, -3161633, -1415192, -2371359, -1479079, -837519, -10089952, -10545755, -7662759, -15903727, 9664, -2978560, -1994476, 27105538, 35668628, 12068321, 12079059, -9762998, -19623706, -13530758, -23627152, -18938658, -6671158, -1599875, -11461657, 8829916, 9411347, 11272142, 26692148, 11147588, 11700028, 2950643, --14396194, -14135811, -11617887, -12621835, -16047072, -13647259, -8172249, 2565706, 17818208, 26927298, -25154012, 10253698, 5066451, -6506876, -12207371, -10909754, -12099997, -13897440, -6401649, -5753109, --498753, 4764730, 3593814, 10902774, 14368813, 10471667, 7074348, 2563559, -933619, -6751689, --7075422, -10926397, -12399034, -9655623, -8703214, -2121177, 9212168, 13889924, 14851997, 13303124, -5356898, 2531883, -6673843, -10450192, -5654862, -7698192, -10627360, -7919920, 1420024, 7295002, -6718403, 3897683, 4257923, 3983582, 2929168, 984621, -800475, -1020592, -2873870, -3522947, --3422015, -3826816, -4690105, -2426120, 1854352, 3567507, 3937411, 2598992, 1114007, 340376, -282394, 299574, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-78920, 1278290, 969589, 4165582, 547608, -510027, -2685965, 6121939, 3781182, 199716, +-754304, 6081137, 2064269, -1942399, -5333276, 3403762, -1536525, 2643552, -5076115, 328028, +-1214402, -3770445, -1023813, -1896765, -703301, 289910, 23622, -2748779, -1690070, -435939, +-531502, -1708860, 1829656, -175020, -1831804, 3262028, -5426691, -2572149, 2587718, -3256122, +446140, -2020782, -2980707, 2026688, 1836099, -1596654, 2034204, 3926137, 2206540, -2034204, +-2384781, 430570, 768799, -2398739, 2596845, 4330401, -3695283, -1177895, 2127620, 1596117, +-882616, -1127966, -1806034, 2387465, 722628, -2856690, 3248069, 1585380, -2674154, -1999844, +3415573, -2576981, -3299609, -6209449, -5404680, 2943126, 3397319, 275952, 1489817, -586800, +1218697, -2297808, 3485366, -287226, 1611150, -1596117, 897111, -1453310, -1141388, 58519, +2231773, -490163, -573378, -997506, 329102, -752693, 150324, 265751, -466004, -539018, +67109, -25233, -185220, -591632, 298500, -215285, 7792682, -747861, -1573032, -3189550, +4988068, -2654290, -282931, -4051765, -4323422, -5437429, -2558190, 4265440, -4413079, -1649804, +-1552631, 1479079, -1098975, -6058052, 3157875, 1518271, 11778948, -1202591, 5510980, -1098438, +-290984, -533113, 608812, -2483028, 4561792, -1197759, -918586, -2752537, -504122, -984084, +7068980, 1312649, -715112, -6624450, -676994, -1273995, 1998770, -4210142, -1165547, 1139777, +950262, -1164473, -710817, -2616172, -985158, -3144453, -1415192, 6103686, -1796370, 1932735, +3407520, -824634, -3317325, -4352950, 1130650, 1021665, 1314797, 2705830, 3207267, 2641405, +1526861, -1209570, -1173063, -1399623, -6128382, -1465658, -623307, 2968359, 2530810, -1514513, +-148713, 3260417, -3400004, 1340030, 97174, -849330, -1967095, -2996814, -37044, 1783485, +1803349, 1899986, -794032, 781147, -709743, 158914, 2672544, 1083942, 207232, 23085, +-407485, -63351, 170725, 532039, -339302, -373125, 1159641, 594316, 1181116, 1210644, +248571, 672699, -173409, 194884, 88047, -541703, -1371705, -249645, -10328859, -2523830, +-209917, -2211908, -1535988, 3609920, -7258495, -6084358, -3565897, -2379949, 1024350, 8143795, +-1778117, -25233, 971736, -5852430, -1538672, -4889284, -765578, 8625368, -676994, -4210142, +-2742874, 99321, 1750736, 1720134, -2433636, -10946798, -5246303, -1473711, -4233227, 379031, +186831, 4419522, -2870649, 3923990, 949188, -2035278, -5869073, -4916127, 6771553, -5616207, +3715684, 1079647, -3605088, -1357747, -3220152, -2314451, 3183645, -6031208, 3103651, 1048509, +-106300, 999654, 412854, -609885, 125628, -3061238, -4193499, 290447, -1283658, -3099356, +-1256815, -4787278, 5546951, 3794604, 952409, 4538707, 532576, -1942936, 5637145, -2987687, +-1875827, -1926293, 4289599, -4203163, 1859721, 3011846, 163746, 1862942, 4672925, 1707250, +-146029, 289910, 992674, 771484, -926102, -566399, 55298, -246424, 1498944, 724239, +1585380, 1175747, 450972, -1438277, -1683090, 1009854, -61203, -101469, 1534914, -1076426, +-855772, -30065, 367757, 499827, -153008, -1731946, 1436667, 380641, -6940667, 8510478, +9656697, 2647847, 2600603, -2760053, 4507568, 2260764, -5636608, 1770600, 3641596, -6739341, +-5878737, 5925981, -5149129, -743566, -3314641, 5972689, 1315334, -676994, -2182917, -38118, +-3854196, 3599183, -1916092, 2182917, -915902, -23622, 3898220, 1534377, 562641, -1495186, +3820910, 2425046, 1149978, -317828, 3952444, -297427, 737661, -2472828, 4814659, 1088774, +1931125, 3521873, -9615895, -3118146, -1881196, -3437585, -3335579, 990527, 5394479, -2307471, +-1415729, -2929705, -1298154, 1176284, 2384781, -6616397, -378494, 2332167, 290447, -509491, +2902324, 1893544, -6194954, -1722282, -1331440, 3864397, -4066797, 5451924, 5901285, 3095598, +1235877, -2724083, -122407, 487479, 3953518, -1037235, 496069, 489626, 618475, 5826660, +658204, 6207839, 2309619, 106300, -2942053, -1680406, 2560874, -504659, 19864, 262530, +176094, 580894, 2607045, 752693, 1032940, 114890, 998580, -2047626, -151934, 667867, +845572, -513249, -308164, 28991, 843961, -599148, -431107, 878321, 853088, 1578401, +747324, 1461900, -836445, 130460, 193274, -554588, 1389959, 10682121, -1991254, -159451, +3896609, 2520609, 1884954, 3598109, 9487046, -2655364, -877247, -9154186, 175020, -7867307, +-9976672, 347892, 4242891, -12885439, 4366371, 4205310, 2304787, -3918084, -3096135, -4272419, +-1622961, 239981, 267362, 4087735, 5405753, -748935, -5328981, -3239479, 4001299, -5731097, +-2851322, -4845260, 1040993, -7825431, 3892851, 610422, -531502, 1249299, -253940, -1796907, +4832, 5025112, -5811628, 7028177, -5345087, -631360, 1296006, -3552475, -2898029, 2745021, +1355062, -1130650, -2718178, 5242545, 2189360, -3669513, -7334194, 841277, 1696512, 4282083, +-178778, -1907502, 369904, 2263448, -1746441, 10189273, -3413425, -1669132, -7275675, -4831838, +11507291, 4660040, -2556579, -670552, -4000762, -4491999, -357556, 1588064, 306016, -2187749, +2485176, 1353452, 3444027, -379568, -2490007, 989453, 103079, -1152662, 1008244, 955093, +-260382, 431644, 1362042, 431644, -322123, -1052267, 571768, 338229, -960999, 1872606, +1597728, 497679, -938450, -2444910, 176094, -211527, -91268, 1050656, -1195612, 759672, +1276142, -782758, 2943126, 6882148, -9192841, -5430986, 6428493, -4817343, -5130339, -5632313, +-6733435, 4838818, -1702418, -200790, -1550483, 252329, -7492034, -1496259, 3425773, 3746822, +849867, -3956202, -5750961, -4772246, -6068789, 1228898, 7233262, 973347, 2338073, 2478733, +2410551, -4255239, 4455492, 2772938, -3189550, -2564632, -9826348, 1509144, 2187212, -7715909, +-618475, 2370822, -1454920, 951872, -703301, -8278013, 7030862, -7712151, 6054830, 324807, +3046743, -8680129, -4864588, -7772817, -6137509, 1129576, -2195802, -2763275, -3464965, -26844, +3854733, -7192460, -135291, 2084670, -2335389, -8019241, -5033702, -1680943, 1496796, 3887482, +1675574, -6605660, 7031935, -2275259, -1554778, 7000260, -9204652, -3028489, -1847910, -1647120, +10981695, -4016868, -204548, -4168266, -3467112, 1991254, 1497333, -259309, 1159641, -887448, +-1568737, 2044941, 10737, 829466, 861678, 2647311, -1059783, 763430, 572841, 172872, +679142, -3035468, 3921305, 3565897, -1239098, -628676, 542240, -529892, 657130, 103079, +-294742, -1466195, 874026, -763430, 327491, 3469260, 2204392, 1858110, -1452236, 2471217, +972273, -1017370, 1111323, 365072, 817118, 14220100, -12597676, -6620155, -8378945, 6125160, +2331630, -4256850, 2896956, -23622, 8475044, 574452, 124017, -8094403, 5784247, 9359807, +9808632, 8169565, -4493610, -649077, 1290638, -5149129, -3519189, 1411434, 625455, -7438884, +-3634079, -3106872, 3693135, -517544, -5621039, -2551748, 1894081, 4549444, 590021, -1516124, +106300, -3921842, -77309, -192737, 646929, -8507256, 5035313, 5950677, 1251446, 3096672, +3547643, -6873559, 9958955, 8996883, 1693828, -6110128, 3589519, -2120640, -9120900, -2265595, +-2843805, -71404, 615254, -102005, -5487358, -4874251, -11339251, -9423158, 191126, 5835787, +-5159867, 2505577, 805843, -3443490, -9223442, -837519, 5493800, -3517041, 4938139, 9672803, +2981244, -3869229, 5599564, 71941, -509491, 2714956, 4376572, -279710, -674310, 1291711, +2853469, -1434519, -6167573, 463856, -97711, 767189, 854699, 2198487, 4650913, -1530619, +-723165, 3562675, 3218004, 785442, 537408, -2108829, 4488241, 611496, -213138, 2757369, +911070, 1081258, 532039, 2500745, 2204929, 2490007, 3979287, 432181, 2410014, 454193, +2674691, 1357210, 1556389, 1134945, 2538863, 2290828, -13496935, 1444720, -5030481, -18082886, +-13909788, 3498788, 142808, -3102577, 3239479, 8724689, -1371168, 5236639, 4635344, 2706903, +-1374926, -4690641, 3860102, -3991635, 498216, -3423626, 5455146, 9978820, -8941048, -2556043, +569083, 3642669, 980326, -2764348, -1613834, -3310883, -244276, -4103305, 5277441, 1184337, +-6281927, 7034083, -7008850, -2219424, 8614631, 7607461, 6408628, -7275138, -4779762, -6514392, +7598334, 10308995, -139050, -2102923, 8170102, -11986180, 1491964, 3246995, -1146219, -10067403, +9096741, 3209414, 4630512, 8552354, 468151, -12152073, 3212636, 5027259, -3102577, -879931, +8410620, -8674760, -8152385, -7021735, 868657, 10849087, 5866389, -1534377, 12405476, -16456167, +-6065568, 222801, 7946763, 3722126, -2367064, -13072270, -2029372, -5226975, 1474784, 5012764, +12782360, 2206540, -3588445, 1702955, -2157147, -818191, -4205847, 51540, -3462818, 1225676, +3498788, 2008971, 3222299, 3656091, 1167157, 813896, 45634, 680752, -1733019, -1791538, +182536, 3859565, 1461900, -425739, 696858, 1580548, 3088618, 454193, -1005022, 570157, +-981400, 2514167, -4543539, -2718178, -1996623, 2912525, 2496450, -14540075, 14723148, 5992016, +-345745, -1481764, 1250372, 2541010, 7982734, -1497870, 893353, -2535105, -1826972, 4510790, +2330557, 5235029, 2310693, 3029026, -9927817, -4104915, 16693464, 1705102, 4970888, 7024956, +2644626, -5637682, -10474351, 3281355, -4363150, 410706, 3701188, -5203890, -6126771, 7495792, +8791261, -4557497, -3238405, 6816113, -8344585, 3675418, -6419903, 2911451, -6213207, 9050570, +1269700, -1181116, 3189013, 15538118, 4291746, 6027987, -1743220, 804233, 2654827, 11477763, +-985158, 16443282, 496069, 7819525, -276489, 14843944, 5257040, 11081016, 8406325, -1855963, +-4956929, -1328219, -5663988, -6246493, 8700530, -1748052, -3394098, 1356673, 130460, -4440996, +-2163590, 1360968, 3894999, 1082332, -7437810, -7368017, -3828963, -7522635, -195958, -155693, +-2211371, 2087891, -148176, 3062312, -448824, -3067144, 634581, -1294396, -5670431, -3575024, +811212, 7587597, -3197066, 2810519, -856846, -79994, 3517041, -2636573, 1195612, 1724966, +-1926830, -1313186, -947577, -2169495, 1069447, -2713346, -3541201, -1348620, -3837017, 4812511, +-1351304, 295279, -413927, -284542, 508954, -1591285, 710280, 1219771, 624918, 1963337, +2602750, 463856, 1939715, -1447404, -4151623, 831076, -1150514, 1743220, -1698660, 17060146, +-4481262, -151934, -21030308, -751082, 11235634, -5887864, 9762461, -13380971, 1938641, 1337882, +-391379, -17743584, -804233, -29561724, 1389422, -3267933, -12383464, -2168422, 1653026, -6496138, +1118839, 7459822, 1142461, -6777996, 1249836, -2108292, 6547141, -7288560, 416075, 9462350, +2128156, 768799, -1421634, 7246684, -4683662, 744640, -37044, 5556614, 1069984, -9993315, +-5320391, -7055021, 8239358, -18703508, 9035001, 7414724, 6380174, 3546032, 1385664, -8200167, +5820755, -12134356, -2875481, -2568927, -2518462, -559956, 761283, 3864934, -9320616, -3684008, +15708843, 6559489, -5734318, -6687264, 1705639, -2794413, 4787278, -3222299, -971736, -5113696, +14246407, 7229504, -4891968, 863825, -7257958, 1654099, -5479305, -1923072, 5657546, 5248450, +-1646046, 10368051, -4085051, 5127654, -6812355, 7228967, 1061394, -4256313, -5735929, -8571681, +2166274, -972810, 3892314, -1127966, -2522757, 1531693, 1596654, 2547453, 2085207, 4729833, +-180389, 1495186, -3679713, 2936147, -2641405, -1369021, -1981054, -432181, -4684199, -847182, +1833414, 4191351, -4025458, -1988570, -2908230, 2860985, 2239826, -1905892, -362925, -3176665, +2412698, 10828149, 10940892, 6352257, 5672578, -5318244, 6309844, 10517838, -7812009, -278636, +-20275466, 11618423, 7928510, -2887829, 4697621, -1303523, 1621350, 7234336, -4539781, 11315628, +-10202158, 985695, 12741020, 5581847, 784368, 9835475, -3477850, 4519916, 2593087, 5270999, +8705899, -5141076, -1042066, 16058883, 8028368, -348429, 2217277, -10875394, 14776835, -12437152, +-783295, 12942347, 4016868, 13933948, -8742406, 2237678, -565325, -3405372, 1869385, -13452911, +-9439264, 12687333, -6317360, -2713346, -4290136, -14306536, 10162429, -3369939, -2370822, -6336688, +6251325, 14544907, -11464341, -2330020, 9803263, -10764799, -4698694, 8763881, 12220793, -20199232, +-5390184, -1729798, 8619999, -302258, 10066866, -2441689, -7378754, 493921, 5357435, 13049721, +6577206, -8764418, -459025, 6422587, -13007845, -7958575, -2492692, -6657200, -6775311, -792421, +6168647, -5833103, 1441498, 6437082, 1784022, 1158031, 4494684, -1107565, 2892124, 2801393, +2736968, 1581622, -518080, -3910568, -1340567, -1083406, -3575024, -1606318, 547608, 467078, +-542240, 566936, 3929895, -3238405, -1060320, -2403034, 1877975, 1858110, -783295, -2680597, +-5962489, 3010772, 2255395, 3878892, 1045288, 955093, -435402, -3686693, 1475858, -1475321, +-1708860, -1065152, 10573136, 22405770, 4331475, -13243532, -4720169, 4399657, -29387776, 928787, +179852, -4599910, -1442035, 13577465, -22179748, 4880157, 10369125, -8155069, 9189619, 17144436, +4250407, -15838229, 4288525, -3986267, -287226, -15524696, -4690105, 14166950, -1591285, 12990665, +-3418794, -4548371, 2125472, -10986526, -6179384, -7907572, -5867999, -4319127, 10597295, -11704323, +1903207, 20461224, 13810467, 4618164, -20795694, 3461744, 13644037, 5715528, 811212, -7410966, +-9030169, -22194780, -15337328, 3177739, -7590281, -7582765, -438087, 9492415, 6717866, -6667400, +290984, 13503377, -5196374, -2276333, 612570, 17751100, 674310, -883153, 9023189, 2835752, +-20193326, 5674189, 5848672, -88047, -16723529, 7068980, 9795210, -7338489, -5243618, -13699872, +3650185, -5019743, 5190468, 2623688, -3230889, -5796595, 3784403, 1755031, 5843840, -2888903, +9114994, 3245922, -6257231, 776315, -326418, -8564702, 159451, 723702, -31675, -146566, +-4530654, -3887482, -1826435, -75699, 5713380, 1931662, 2986613, 4665408, -2117419, -2706903, +2194728, -4431333, -4010426, -124554, -225486, 1440425, -1328219, 1060320, 2810519, 3045669, +370441, -1722282, -429497, -178241, -506806, 92342, -745714, 418759, -103079, 3958349, +-2238215, -2728378, 7094749, 5151277, -685047, 2047089, -6592775, 23167054, 1289564, -4651450, +-300648, 10251550, -4913980, 2841121, -2469606, 2438468, 8795556, -15975668, 16921098, 19163070, +5410048, 8125005, -6461779, 10879689, 25228638, 847182, -2859911, -4611721, 10756746, -3769371, +-6069863, -2092186, 3834332, -12516072, 5616207, -11018739, 12679280, 2915746, 12768401, -7951058, +11641509, 3500398, 15228343, 2561948, 3233574, -5393405, 9497246, 2418067, -2966212, 13698798, +-5282810, -9677098, 19346680, 15451682, 5728413, 14608258, 21166136, 25655988, -7924752, -7976828, +-8996883, 3253975, -11720966, 13927505, -1676111, -1213865, -19648402, 4627828, 22382686, 22808424, +-838056, -2925947, -15573551, 301185, 14873472, -7516193, -9207873, 8447127, 1362042, -8031052, +2916283, -1255204, -4893579, -1056562, -4190278, -111132, 8650601, 6460168, -1705102, 1600412, +-2033667, -8533563, -11155641, -2025614, 5630166, 2324114, 7948374, -1527398, -7398081, -1971927, +8240432, -3784403, 4709969, 7611756, -7543573, -1953136, -692027, 1998234, -362925, 5106716, +3737695, 1891933, -7519414, 1988570, 4189204, 1330903, 1749125, 2808372, -6667937, -3062312, +49929, -268972, -3517578, -8639327, -2782065, 847182, 4560719, 1075889, -3529926, -4080219, +-30380452, -21248276, 11064909, 4254165, -15961709, 1571421, 6951405, -14556718, -9190693, -6317360, +17196512, 7673496, 5445482, -5561446, -4297652, -4434017, -10838350, -14420890, -25361246, 13104482, +11200738, -5427765, 28470264, 13655312, 27333708, 18753974, 1676648, -8835821, 7188165, 3313567, +12391518, 14271639, 15752866, -2326262, -2859375, 6697465, -7231115, -1704565, -6382859, -11882027, +-19531364, -5716065, 19734838, -4951561, -7987566, -11256036, 7804493, 11955578, 7905961, 750009, +11596949, 22721988, -13654775, -6229313, -10529112, -7616051, -22009560, -5397164, 5464809, -10011569, +-7888781, -25286620, -36046588, 3912715, -23778550, -37317896, -27064200, -11378442, 24055574, 8318815, +14646912, 11020886, -24943022, -10519449, 2062658, 12439836, -12437152, -14670535, -14246407, -4430259, +7307350, -8443369, -31070330, -19522774, -4549981, -6300180, -2323577, -4618164, 17399986, 15947214, +16453483, 16858820, 5519570, -161061, 6247030, 1753957, -628139, 4973036, -14056891, -5408975, +5964099, 8160975, -474594, -4559108, -5145908, 2041183, -7700340, -11060078, 10055592, -8242042, +-4272956, 907312, -9711995, -9073118, -16498580, -6405944, -3955665, 1161789, 13593035, -3525631, +-2135136, -4344897, 6880538, -3687766, 272194, 6671695, 433792, -4712653, 2960306, 6656663, +-4193499, -997506, -319438, 3524558, -57669064, -9054328, 18529562, -19633906, 8053601, -7653095, +-31289374, -9751186, 33492692, 42184096, -22407382, 777926, -7725573, -34428996, -27423366, -25912612, +-27657442, -14790257, -18066780, -1501628, 5893232, -4825396, 7033546, 6484864, -11336029, -3115999, +-15550466, 6501507, -24473798, -22049826, 5258651, 3774203, -6691559, -8104067, 19149112, -5680631, +26601954, 5854578, 24654722, -16752520, 10714870, 6936909, 29868276, 15937550, 10444287, 2809982, +4482872, -3597035, 8741869, 12264279, -9721122, -13556527, 20883742, -2959769, -26322780, -50470160, +-60679296, -43781288, 7185481, -150861, -56516400, 18258442, 9532680, 14047227, -19331648, 2354179, +6553583, 2422362, 28869160, 29417304, 58891516, 19495930, -31553514, -40491340, -24925306, -22419192, +-25925496, -23087060, -913754, 12466679, 16816408, -11024644, 22172232, -19246286, -26808112, -20893406, +-13919989, -10515691, -20983600, 12924630, -1584843, 12353937, 9454834, 1292785, 21755084, -11647951, +-5167920, -21964462, 7181186, 11441256, -1986422, -2149094, 6423661, -21110302, 595390, -7649337, +3820374, -10289131, -14547054, 8489003, -602369, -6196564, -2469606, 10012106, -8249022, 5063767, +-7694971, 5796595, 5039071, -3196530, -7645042, 4450123, 4928475, -15661061, 6209986, -4181688, +-4756677, -4997195, 3095598, -10262824, -4698694, 32355600, -8655433, -61085172, -17468706, 50333796, +-6975027, 11251741, 7160784, 9429601, 17609366, 14468134, 5022428, -9925133, -3717294, 2547453, +-10895258, -2479270, 18460844, -16486232, -9871982, -16522739, -3995930, 2919504, 2102387, 4463008, +8616778, -12539694, 11216844, 27623620, -522375, -15993921, 1443646, -10432476, -3651259, 16429324, +-17260400, 2044941, 5424544, 20078972, 28915868, -18300318, -10523207, 11316165, 1524177, 3273302, +3338800, -12093554, -31200790, -5456756, -14532559, 28490666, -53893788, -35302484, -14599668, -5748814, +15549929, 3386582, -19035832, -3077881, -21929030, -23539642, -8489540, -16983374, 3105261, 14179298, +64756296, 12138114, -9644886, -41539312, -34280280, 10299868, -1070521, -38981124, 21095806, 21143050, +-39814884, -603980, 10327249, 11635066, 42885248, 18994492, 8937290, -42261404, -21898428, -29112362, +26603564, -2529199, -8763881, -4582193, 8274792, 28255516, 23810224, -12397423, -25206090, -36603860, +8877161, 21926344, -7722351, -3591667, 19108846, 11135240, 16645683, 4414690, 5892695, -13971529, +-4293894, -6498286, 7155953, 7739531, -2058900, -3074660, -2191507, 10375567, 11324755, -16457778, +9580998, 7557532, 13696651, -8602819, -6234145, 8894340, 2960843, -11802033, -1361505, 14417668, +2577517, -10206990, -21426518, -72515688, 10282152, 11188390, -2464774, -1225139, -5648419, -20915954, +8118562, -4654134, 36888400, -38203736, -7859254, 38875360, -1874216, -26397406, -3318936, 22903986, +27858768, 17086454, -5107790, 19917374, -15211700, 13426068, -6235219, -5266704, -13178033, 21821656, +14814416, -14405320, -6687264, -2193655, 22125524, -2207613, 2252710, -14391362, 14869714, 9612137, +-16582869, 29752850, 1217086, -26988500, 23607288, -29311542, -15522549, 26451630, -56852484, -36283348, +30713312, -19721952, 22734872, -36095980, 7888245, 13060459, -19906636, 622770, -1693291, -37252936, +-8749922, 38198364, 40324376, -46169288, -15420006, 13915157, -37047852, 47522740, 47589848, 6701760, +-68454264, -35993436, 72507640, -38511360, -7794829, 58788976, -34710852, -70666704, -15966004, 63578400, +-13849659, -46630996, -11561515, -85021024, -4006668, 68650760, -25192668, -68745784, -7102266, -19391778, +-9372692, 20312510, -2566780, -919123, -25130390, -16472273, -8091182, 27391154, -35029752, 1611150, +5489505, -11040213, 1118839, 32625108, -21053930, -26421028, -3593277, 9120363, 20426864, -8269423, +10228465, 15549392, 1691143, -23861764, -12780212, 441308, -19040664, -9301825, 36140004, -13772350, +-35458712, -9576166, 20524574, 8437463, -2772938, 4490925, -32072132, -18531174, 24260122, 35989140, +4288525, -26847304, -13152264, 1061394, 9466645, 17995376, -10561325, -40075268, -37822020, -1156957, +-47663936, -14195941, -20425790, -19201188, -14594836, 30654256, -3648575, -10026601, -13274133, 5869610, +-16906066, -39692476, 30370250, 9490804, 26204670, 8142721, 27113592, -11029476, -17147656, 5923297, +-28849832, 22085258, -26147224, -5627481, 16857210, -19811074, -4370129, -12088722, -31593242, 4582193, +-23901494, -17246978, -20876226, -15469935, -9646497, -21192980, 3524021, 23179402, -15964930, -5772973, +2707440, 21346524, -9963787, 7461969, -22207666, 35650376, 11047193, 15197205, 9662066, 34183644, +-2158221, -40523016, 8770323, 14494978, -11345693, -295279, 21126944, -28242094, -27959700, -32752346, +28030030, 8169565, -40183176, 15445239, -26550950, -5344550, -37493992, 16374026, 26485452, 5319854, +-41512468, 23082228, 19154480, -5478768, -36486284, 9636296, -22034256, -7723425, -1634772, -11326366, +17997524, -16491601, -29581588, 14456323, -6629282, 12189117, -193810, -1329829, -219043, -8252243, +-9220758, 6008123, 26356604, -3453154, -37266356, -10554345, 15495705, -18664854, -7852811, 17627082, +-6743099, -2831994, -14895483, 28951300, 17169132, -8888435, 13149579, -2613488, 5918465, 23422604, +-4279398, -21048024, 8699993, 13241921, -10684805, 16787954, -2731062, 10241350, 1255204, -8028905, +14304389, 20447266, -11836930, -22167400, 8612483, 13123809, -10718091, -2500745, 12541305, 3995930, +35314832, 66304096, -15899969, 32900524, 6442451, -15614890, -29567092, -17223356, 38592428, -12593918, +7210177, 14994805, -3841848, 35563404, -5173288, 27916214, 29196650, -35734664, 18490908, -9333501, +926639, 13152800, 10946261, -1187022, 5873368, 10650982, 35738960, 36715528, 28367186, -20685636, +-6999186, -48734456, -1401770, 11547020, 22080426, 5105643, -40273372, 17703856, -24142012, 31331786, +-28195924, -19748260, 2122251, -23636278, -3977140, -13636521, 48272748, -26313118, -12808129, -50482508, +-16342351, -26494042, 71402760, 43375412, -14936823, -48023640, -51418276, -30593052, 35571456, 46309948, +23569170, 6842957, -61711700, -28685550, 20418812, 17362942, 2793339, 22374096, -12719009, -40679244, +19368692, -69022808, 75196288, -7012608, -48423608, 112950120, 16315507, 39310224, 67810016, -112115824, +-80661632, 22382686, -6536940, 17146046, 24677808, -70092256, -5065377, 14149770, 1537061, 58721328, +4296041, -30749818, -3080565, 31561030, -18187040, 13786308, 16355772, 639413, -12706661, 15431281, +-40674952, 31144418, -7825431, -13008919, 17723720, 4670240, 1392643, 18439906, -4218195, 11036992, +-2118493, 7074885, -5185100, -21460340, 13155485, 9037685, 12448963, -151934, 511101, 8400419, +4837207, 3239479, 25103010, 27685896, 1739999, 18127984, -16934520, 2539400, -11070278, 20964272, +19316078, 2918430, -5394479, -12666932, -29463476, 2429341, -29357712, 19871204, -41475964, 25678536, +-17064978, 42136852, -18996640, -1957431, 24012088, 4270271, 2116882, -10860899, -9392020, 1096827, +-16121697, 17779018, -2055142, 18879066, -14783814, -14595373, 4989142, 743029, -14985678, 9458055, +-1867237, 8253854, -4581120, -4059818, 7918309, -7531762, -582505, 5879274, -3026878, -3597035, +29931090, -2057826, -9973988, -5358509, 14235669, -1301375, -16243566, 8639864, 17537426, 3531000, +464393, -10359998, 3723737, -8391829, 8069707, 21250424, -7495255, 9713069, -7960722, -2396055, +-8723615, -4159676, 5663988, 6867116, -12362526, 7477538, 2283849, -1588601, -12357158, 2121177, +4580583, -9216463, 13415867, 11187316, -22369800, 5719823, -20525112, -23423678, 16173236, -8348880, +19521164, 10576894, 666257, 9947681, -3029026, -12093017, -2806224, 709743, 13633837, -6126771, +4236449, 5567888, -7701950, -1432909, 4794257, -2368675, -1414655, 7826504, 537, 2990908, +-6371047, 2682744, -569083, -6683506, 12720619, 1093606, 10403485, -5053566, 8563091, -4256850, +696858, -6663105, 5762236, -3246459, 12606803, -3913252, 11929809, -12173548, 2802466, 780073, +-2441689, 401043, 1600412, 9381819, -296890, -11077258, 7431367, -6252936, 1301375, 6683506, +-6725919, 11698954, -24361592, 51601348, 9773198, 12713103, -6512244, 4763656, -1458678, 9816685, +3121368, 22022444, 1550483, -11870216, 7274601, -7727183, 3426310, 4552666, -10045929, 587874, +2472828, -10845866, 9977746, 2605435, -4434554, 13421773, -4738423, 5338645, -4048544, 2546916, +2589329, 1279363, -1639604, -3894462, -1784022, 1929514, 372052, -2168422, -6459094, 4912906, +-4323959, 2481954, 4312147, -4386772, 987843, -4092567, 1235877, -6527814, -10639171, 11095511, +-5880884, -2795487, 4727149, 2217277, -1838246, 1319092, 9530532, -10392210, 4571993, -3876745, +8263517, -8723615, 5049271, 2528125, -1501091, 1988033, 257161, 183610, 4071092, -5493263, +3181497, 2819646, -1455457, -479426, 7232725, -1040456, 2498597, -8267812, 11292006, -8650064, +-79994, 5688148, -5018670, 3903589, 1309965, 1421634, -5249524, 4348118, 4509179, -2732136, +1818382, 2279554, -3724274, 1395864, 1914482, -752156, 3966939, 239444, -31675, -354872, +3566970, 2772402, -2171106, 3117073, -1512902, 1432909, 1602023, -317291, 4423280, -1902671, +90194, 2851322, -3392487, 340913, -291521, -2376191, 404801, 2558727, -679142, -1986959, +4407174, -2714419, 9754408, -45804752, -113715168, 24567750, 94564976, 63926832, 133378600, -43619152, +-37289444, -76732808, -122642792, -12117713, 38227356, 50395000, 65765612, 33160906, 3637301, -10746545, +-28434830, -40550396, -6144488, -10827613, 3993783, 9315247, -483184, 2345589, 4903242, 2182380, +16060493, 19078244, 11851425, -2179696, 2202245, -14105209, -29614336, -31549220, -15476915, -20689932, +17043504, 31428424, 33343978, 36621040, 20061256, -5910949, -14462765, -26898306, -28432684, -19742354, +-11120744, -1266479, 7172059, 13817447, 14812805, 12479564, 10733123, -1829656, 2878702, -3161633, +1415192, -2371359, -1479079, -837519, -10089952, -10545755, -7662759, -15903727, 9664, -2978560, +1994476, 27105538, 35668628, 12068321, 12079059, -9762998, -19623706, -13530758, -23627152, -18938658, +6671158, -1599875, -11461657, 8829916, 9411347, 11272142, 26692148, 11147588, 11700028, 2950643, +-14396194, -14135811, -11617887, -12621835, -16047072, -13647259, -8172249, 2565706, 17818208, 26927298, +25154012, 10253698, 5066451, -6506876, -12207371, -10909754, -12099997, -13897440, -6401649, -5753109, +-498753, 4764730, 3593814, 10902774, 14368813, 10471667, 7074348, 2563559, -933619, -6751689, +-7075422, -10926397, -12399034, -9655623, -8703214, -2121177, 9212168, 13889924, 14851997, 13303124, +5356898, 2531883, -6673843, -10450192, -5654862, -7698192, -10627360, -7919920, 1420024, 7295002, +6718403, 3897683, 4257923, 3983582, 2929168, 984621, -800475, -1020592, -2873870, -3522947, +-3422015, -3826816, -4690105, -2426120, 1854352, 3567507, 3937411, 2598992, 1114007, 340376, +282394, 299574, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -6425271, -817654, 2046015, 1981591, 10121627, 2752537, 2140504, -2994129, 390842, -5127654, 1207423, -4716948, -2387465, 228707, -991601, -2522220, -4063576, 3143916, -6799470, -3429532, -3411278, -3693135, 4044786, 2133525, 970126, 2930778, 2420214, 4838281, -1676648, 1696512, 3010235, -642635, 993748, -3521336, -1516124, -1469953, -1323924, 3272765, -6254546, 1051193, -2165201, -6562710, 159988, -1175747, -1641751, -2698313, -897111, -2816425, -8250096, -2607045, -1612760, --1327682, -1847910, 858993, -1543504, -382789, -528818, 2895882, 1295470, -367757, 1848983, --1610613, 3546032, -2315524, -3839164, 3717831, 3893925, -1675037, -3687230, 360777, 2024540, -1532230, 1759863, -1740536, 24159, 1433445, 1927367, 847182, -526670, 242129, 2394981, -4616553, 2234457, -562641, -53150, -1086090, -1153199, 970126, -1519345, 942745, 1140314, --440234, -148176, 510027, 444529, -456877, 386010, 270046, -2115272, 342524, 166967, -663572, 378494, -803159, 767189, 612033, -53150, 9155797, -1711545, -875100, 984084, -2527052, -6744710, 4202089, -8005819, -360240, -3874597, -569083, -2560338, -603980, -622233, -4025458, -3390340, 4359929, -4542465, -4963372, 2106145, 6663105, -7851200, -2180233, -3796214, -56371, -1973538, 2124398, 2819646, 1425392, 2872260, -4562866, 169114, 6407018, 2519535, -817118, -4647155, -6641630, -3994320, 1020592, -3395172, -1917703, 1301375, 4315369, -3884798, --3828963, 1555852, -2799245, 4958003, 1661079, -506269, 3495030, 3321620, -2684, 5572183, -2756295, 1747515, 1476932, 3654480, 5748814, -3781182, 1100049, 1583232, -4039954, 363462, -3284039, -1273458, 8302172, -2559801, -2201708, -1724429, 3062312, 4227859, -5382668, -2189360, -1466731, -973347, 1322850, 523986, -2358474, 1056562, 504659, -1734093, -2852932, 1179505, -801011, 2621004, 220654, 811212, 1202054, -113817, -856309, 1921998, 114890, -4832, -1653562, -893890, 801011, 2208687, -185757, -474057, 417686, -326954, 681289, -1348620, --423591, -626528, 89657, -202937, 863288, 93952, -845035, 40265, -11768747, -1913408, --2631204, -2105071, -1063004, -1448478, 6245956, 7468948, -1718524, 6092948, 2317135, -3382287, -1579474, -5121212, 890669, 1073205, -6884296, -1025960, 1056025, 1192390, 4741644, -923955, -4116726, -2776160, -5284421, -5574868, -1605781, -2825015, -4235375, 4362076, -1727114, -853625, --779000, 904628, 2364916, -6751689, 11811, 932545, -3211025, 8027831, 614180, -1990181, --1757179, 8572218, -628676, 1081795, 5060009, 142808, 3086471, 1199907, 271120, 4727149, --42950, -3320547, 4234301, 2272575, 2714419, 3845070, 1257352, -3135326, 2211371, 3154117, -3053185, 4735739, 11811, -4399121, -3528316, 5555004, 7724499, -7072201, 1402307, -1876364, --1262720, 1615445, 2938831, 2830920, -2277407, -915365, -2201708, -3650722, -3204046, -1176821, --2043868, -3138547, 695785, -861141, 1169842, 1005559, -992137, 556198, 172336, -2551211, -839129, -1727114, -3111167, 200790, -932008, -1305670, -1409286, -401579, 537945, -477278, -869731, -600759, -1065689, -1439888, -1347009, -576599, 214212, 1015223, -8646306, 9238475, -8559870, 6455336, -4484483, 5048734, 9108552, -2277943, 7121056, 2685965, 1080184, -1097364, -7850664, 3714610, -1822140, -5612449, 3273839, -2320356, -2992519, 3184718, 3764539, 1654099, --5566815, 914291, 5025649, -2436320, 1714229, -10969883, 1596654, -875636, 5304822, 1301375, --2261837, -3302830, 6784975, -5820218, 488553, -4699768, 566936, -1435056, 3798362, -782221, --1215476, -5761162, -1365800, -1011465, 7178501, 362388, -6532109, -237297, -343597, 2244121, -3442953, -2910377, 31675, -3715147, 3988951, -867047, 4817343, -2585570, 7162932, 3550864, --7863548, 8356933, -1184337, -5769215, 1002875, 7635915, 1571421, 1176821, -6153078, -401579, --2371359, -3336116, -3213173, 294742, 2932389, 3759170, 2064269, 2054605, -2388002, 1813550, --2066416, -238371, -89657, -964757, -379031, 2172180, -3410204, 934692, -312459, 300648, -1176821, 937377, -69256, 1491964, 186831, -2260764, -2423435, 1436667, 686121, -99321, --1591822, -320512, 413927, -219580, -681826, -1576790, 1017907, -28454, -956704, 1090922, --628676, -433792, -1232656, -775778, -449361, -1595044, 1145146, 9941239, -3456375, -7241852, --402116, -10848014, -38655, -9325448, -3259880, 6366216, -6660958, -7347079, 2166274, 580894, -629213, -1742146, -2425583, -5325760, 3559991, -10395968, -3215320, 1024350, 6401649, 351650, -6495601, 2291902, 14303852, 5462125, -176094, 603980, 6799470, -1657321, -2068027, -1309428, -1107028, -4544076, -2268280, -7642358, -556735, -3526168, -2120640, 9352291, 129386, 5840619, --2374043, 2365453, -614717, 3473018, -1193464, 3230889, -3244311, -4019016, -664109, 1099512, --4049617, -4057134, 334471, 2043331, 4338454, -657130, -2058363, -917512, 4116189, 7021735, -368293, -4832375, -6890202, 68719, 1867237, 689879, 9356049, -5907191, -338766, 4168266, --1571421, -4953171, 6588480, 2996277, 1153736, -3301756, -3549791, -5904507, -2321430, -660888, --3066070, -1556926, -2658585, 470836, 663036, 1437203, 169114, 403190, -3295314, -1727651, --3531537, -1253057, -1033477, -2709051, -1720134, 888521, -330176, -1164473, -322659, 837519, --2217814, 1068910, -1604707, -214748, -679679, -1235340, -440234, -63351, 973347, -1585380, --2323041, 1159641, 602369, 8894340, -6857452, -1407676, 549756, -547071, -272730, -5645735, --4354560, -622770, 3717294, 1344862, 1480153, 1559610, 3906810, -819265, 3570729, 2899640, --9287867, -3571265, -10897406, 2810519, -3853660, 5462662, -3548180, -4811974, -3546032, 2835215, --7272990, -6034429, 8396661, -4608500, 9105868, -2167348, 2720325, -3223910, -6178311, 6769406, --5245229, -5864778, -616328, -3192771, -6912750, -5305895, -8709120, 353261, 5547487, 3207267, --3405372, 9635759, 3501472, -3546032, -4512937, -6977711, 270046, -2616172, -4914517, -2462627, --2105608, -3438121, 1800128, 7711614, -503585, 505732, -5261335, 2454037, 2573759, -4544613, --3646964, 1845225, 9336722, 3737695, -2365990, -1240172, -2010582, -9652939, -7641284, -6407555, -6667937, 7133404, -1078037, -3329674, 3076270, -2124398, 2695629, -1417876, 1254131, 224949, -98247, -3127810, 2054068, -1828046, -1358283, -489089, 1832877, 1410360, -229244, -2610266, -1617592, -376347, 1176284, -881542, -624918, -2303176, -1051730, -80531, -326954, 451508, -403727, -289373, 350040, -1909113, 817654, 194347, 234613, -686658, 2334315, 1519345, --144418, -932008, 191126, -1449015, 2645163, 12802761, -2414845, -15032, -2092186, 8337069, -7903814, 2735894, -13153337, -2179159, -15977278, 9475235, 4006668, 277025, 16517370, 7822209, --1439888, -7382512, 6815040, -3149822, 1700270, 2327336, 1085553, 5426691, -4794257, 9265855, -3532611, 919660, -2786360, -4684199, 6286222, 5308580, -1004486, 3460133, -7858180, 1499481, --10497437, 4311074, 607738, 5387500, -8617315, 1816234, -2804077, 1933809, 9837623, 8348880, -409096, 2434710, -6088116, 8050916, 244276, 17102560, 18066244, -2367601, -4797479, -4888210, --3890167, -10435160, -2909304, -13636521, 845572, -1111860, -741956, -2755759, 4820027, 8111583, -12679817, 11800423, 9082782, -14870251, -10611254, -432718, 768262, 15669114, -10989748, 8435853, --566399, -3121368, -1592359, -346282, -3075197, -8622147, -5641977, -1593433, 2556043, 852014, --194884, -2321967, 1388885, -3029026, -273804, -1590749, 3341485, 3743601, -870268, -661425, -3477313, 2675765, 469225, -468151, 1292785, 266288, 545998, -630286, 1518271, -71941, --842887, -1348083, 465467, 1526324, 2240899, 4817880, 3744138, -1762547, 478352, -3346317, --609349, 1563368, -246424, -625455, 124554, 740345, -4617627, 9197136, 1984812, -6772627, --3738769, 17262548, 16975858, 19024558, -1854352, -788663, -3223910, 3213173, 9314710, 10716480, -3120831, -4581120, -9138617, -18598820, 5535676, -10995653, -2400887, -1104344, -2367601, 1277216, --539555, -3394098, -394600, -10768020, -4258997, 673773, -1980517, -12034498, -5070746, 1060857, -8781061, -2447595, 270046, -9572408, -3221762, 148176, 6376953, -3863323, 3927748, -10699300, --2971581, 2532420, 4089883, -2904472, 14431090, -2924336, -1810329, -7466801, -2458869, 5843840, -1992328, -617938, 7536057, 10456635, 12166032, -2099165, -6067178, -6853694, 112743, 1483374, -2864743, -4850092, 3933653, 5218922, 4366371, 4292820, 12163884, 8245801, 5441724, -603980, -2746095, -12048994, -2255932, 1323387, 6205154, 9847286, -1846836, -5480915, 1736777, 3424700, --2820183, 5072893, 4039417, 5480915, 850940, 2426657, -250719, -377420, -3920768, 3127273, --1220308, 2073932, 1801739, 625992, 2885144, 310848, 4639639, 3330210, 2101850, 1366337, -1309428, 70330, -593779, 435939, -1930051, -76773, -2414845, -3830574, -1546188, 868120, -682363, 1755568, -796180, 1177358, -1600412, 795643, 2054605, -17603998, 21971442, -589484, -3256122, 12027519, 244276, -4182225, 661962, -21380884, -12993350, -6096169, 3455838, -4191888, -2481954, -9986873, 6968048, -3474092, -54761, 13231184, -12840878, -8548059, 12399571, -3853660, --18070538, 1303523, -11126113, 2326262, -886911, 6801618, 2962454, 3437048, 1421634, -2170569, -8092792, -882079, 10385768, 6337224, -3634616, -6191732, -5774584, 2828773, -2815351, 2845416, -2045478, 6100464, 1822140, -11419244, 720481, 3894462, -3905736, 494995, -7837242, -1742146, -741956, 523449, 18146236, -3154117, 12907987, 15397995, -4187056, 8245264, -2486786, -447750, --8515310, 5442798, 13138842, 9153649, 2081449, 3599183, 8162586, -527207, 6773701, -2735357, --3709241, -6531572, 3610994, 16727824, 3790309, -2162516, 1376000, -11762305, -3929895, 279710, -11120207, 8077760, 3539053, 7172059, -2011118, 7043747, -27380, 4430259, 605590, -345745, --801548, 4908611, -477815, -3099356, -1859184, -1234803, -705448, -1253057, -2426120, 3540664, --2251100, -3077881, -843424, -4041027, -2726231, -3451543, -1927367, -2414309, -3038689, 1035087, -770947, 1305133, 1149441, -1840930, -901943, -3191161, -4099010, -392990, -2258616, 1335735, --1056025, 333934, 2078764, 2104534, 1518271, 3628711, -928250, -348966, 2830920, 21039434, -3062849, 5246303, -4973036, -2522220, 14292041, -9432285, -2174327, -18562848, 17392470, 9081171, -1258425, -6308770, -17513266, 1770063, -4654134, 2142652, -19637128, 7003481, 10385768, -11420855, --2720862, 1703491, 1219771, 3794604, 11274826, 13853954, 57445, -34897, 2611877, 523449, --8385924, -9614821, -6349573, -12669080, -6212670, 10783052, 5042292, -4042638, -5326297, -3544422, --22234508, 4827543, 5367636, -10427644, 17075716, 602369, 12743168, -4590783, 8275328, -2733747, --10981158, 983011, 10159208, -5600101, 5590437, 6493454, 18141404, 5004174, 5721434, 17350058, -9941239, 6562173, -23989002, 4959077, 3710315, 4645007, 525060, -9818295, 17447230, -12950937, -9968619, 10390600, -15631533, -3443490, 21480206, -19119584, 3280818, -4497368, -2026688, -6903086, -8389145, -3601867, -7087233, -6113349, 3775276, 8089034, -7530689, 9396852, -7772280, -3446175, -10763188, 3921305, -839666, -4743792, -4972499, -164283, -1945083, -8184597, -891206, -1766305, --2237141, -772557, 6489159, -577673, -5890548, 519691, 2565706, 6114960, 3898757, 4851703, --1908039, 2545842, -3489661, 141197, -1148904, 2536178, 5174362, -3817152, 2413772, 2383707, --212601, 1374926, 1117228, -11361799, -16969952, -7668127, -7270843, -22669374, 14890652, 2056216, -15918759, 602369, 2025077, -8058433, -4329864, 7584912, -898722, 7854422, -8417062, -2915209, -1168231, -3996467, -6941204, 9427990, -10226317, 11293617, -4350802, 3458523, -2790655, -8207146, --7369627, 3069291, -2848637, -408559, 5706401, 22926536, 1391033, -3295851, -8121247, 3022046, -18490908, -3770981, -3338263, -11242614, -4042638, 1254131, -10602664, -4091493, -15011448, 9175124, --18316424, -32956894, -3678103, 738734, 15315317, -16422881, 14696841, 9433896, -7904351, -15520401, --2679523, 2202245, 4206384, 251792, 9209484, -6612639, -2602750, -32518808, -4545686, 32977832, -3018825, -5884642, -4654671, -17541184, 12742094, -5832566, -5135171, -4544076, -2716030, -7753490, --11337640, 3051038, 6180458, -607738, 4663261, -9651865, -17373680, -890132, -9255118, -2861522, -104690, -9213779, 1872606, -6789807, -11714523, -8777303, -4350802, 3453154, 5065914, -1259499, --13819594, -3662533, 660351, -6962679, -3189013, -825707, -6443525, -3917547, 1467268, -528281, --5109938, -2208687, 2047089, 581431, -6727530, -2842195, -62814, 5761699, 6459094, 1541893, --2225330, -2678449, -998580, 4234838, -1181116, -686121, 139586, 1445257, -5686000, 4847945, --1338419, 3190087, 15620259, 13969381, -4265977, -5506685, -1213328, -22041772, 14780593, -13886166, --11407433, -8830453, 5662915, 2374580, 13720810, 1783485, -7256347, -8560944, -8821863, 7108171, --3295314, -4703526, 12559558, 13956496, 4873178, -9208410, 11589432, 18525804, -6873559, -3925600, -16110422, 4204236, 3354906, -10294500, 145492, 15257334, -22199076, 15494631, -3185792, 2181307, -9398462, 11232950, 74088, 5654862, -10365904, -8515310, 5959267, 21270826, 5849746, 5250061, -8195872, -10612327, 2420751, 9482214, 5617281, -1687922, 7748121, 4778688, -12529493, 10392747, --12205760, 2851858, 9235790, -9777493, 7672959, -11948599, -4600447, 2256469, 620623, 7729868, --4735739, 6635188, -4845260, 974958, 2642479, -2194728, -4741644, -9669582, 26141318, 2808909, -7969849, -11281268, -26294326, 18716930, -17817672, -7785702, 77309, -4141959, -2522220, -1554778, --7261716, 4647692, 3920232, 2008434, -6696391, 8505646, 6715718, -2846490, -2741800, 2503966, --2221035, 2353642, -2241436, 9011378, 3490198, 830539, 6567542, 6735046, -3744138, 20401, -3403225, 4670240, 2090039, 2220498, -4074850, -5591511, 4655745, 5790153, 8594766, -1197222, --7483981, -1121523, 911070, 3747359, -11607686, 4408784, -3735548, -1774358, 2952790, 2717104, --2705830, 4046396, 556735, 3201361, -1671279, 7718593, -14532559, 15519864, -5622649, -15217069, --19750944, -5477694, -1948841, 11708618, -17377974, -2741263, -1983201, 9238475, 17396766, 14425185, -9002251, 1435593, -4376572, -2606508, -1715839, 12268037, 10084583, -2286533, 1651415, -2583423, -7915088, -18875844, 11372537, 6309844, 8916352, 3084324, 2105071, 16414828, -6374269, -13821205, -140660, -4493073, 1015760, -19200114, -10611254, -1047435, 16183437, -10803990, -3379603, 2742337, --587874, 561030, 15905875, 6474127, -2395518, 1494112, 7813620, 5218386, 18520436, -5327907, -8492761, 9495099, 5082557, -2885144, 3081639, -19985020, 8650064, -3646964, 972810, -4498978, --10998874, -14750528, 3082713, -6973417, -20129438, 4965519, -17094506, -12502113, -2908767, -25742960, --15613817, 3995930, 11091216, -12791486, 2844342, 1156957, 29770566, 28315646, 26654568, -675384, -1550483, -13859323, -8383240, 11235634, -5947456, -3803194, 1890859, -3423626, 6293738, -7514582, --3751654, -142808, 2424509, -4457639, 5776731, 5891622, 316754, -2312840, 1641214, 5765994, --4499515, -5867999, -1479079, 5207111, -6787122, 11741904, 6725382, -376883, 5321465, -1691680, --4741644, -7475391, -4077535, -6607271, -3600256, 4137664, 770410, 11870753, -2648921, -3556770, --26189100, -28976534, 17293148, 15544024, 5236639, 16840566, 28176060, 8041790, -10699837, 9120900, --4243965, -7905424, 12899397, 965294, -11497091, 7114077, 9291625, 2179159, 3286187, 746251, -1455994, 25811142, -530428, 5558225, 2426120, 16033113, 965831, 25605522, -97711, -11210402, -20470352, 4221953, -9021579, -3152506, 10847477, -2201171, -170188, 8516383, -15527381, 15556372, --3259343, -22679574, -6345814, 2273112, -22698902, -2503429, -2356327, 10032507, 9671729, 17132624, --11969537, 2653216, 2734284, 3600793, 7318088, -10836202, -12251394, 6478958, -288837, 13110388, -10635413, 3331821, 27299886, -4500589, -4180077, -18602040, 27854474, 4971962, 19332722, 11880953, --31054224, 4508642, 2841121, 19099182, -10087268, 8173860, 190052, -8209830, -1012539, -6623914, -15359877, -29343216, -3558381, -2054068, 131533, 1386201, 4737349, 7251516, -91268, 13629005, --518080, -1887101, -4344897, -2763812, 890132, -4664335, 1611150, -1232119, 4108673, 2929705, --1388885, 1190243, -1580548, -8144869, -435939, 464930, 2087354, -8320426, 4490389, -1669132, -4715874, 3774740, 6659347, -6730751, 7780334, -4172024, 2514703, 5666136, 5073430, -1687385, -180926, -3007014, 4391067, -208306, 2138894, -51003, -912144, 11370389, 6339909, 212064, -5240934, 1623498, 5443334, 17149804, -36230732, 21507048, 21883932, -9345312, 5200669, 3036542, -5921686, 143345, 17424682, -12713640, -2742874, -13639742, -111669, -7715372, 1231045, 3647501, --19869592, 8923331, 21599390, -14877767, -14230300, -14558329, 28758564, -12584791, -7046431, 2649458, --9838159, -29819422, 5251672, 21599928, -29680908, -13485124, 10277857, 15902116, 4343286, -4548907, -6896107, -10570451, -4916664, -586263, 14728517, -20244866, -16045461, 11368242, 18496276, 7233262, --23052700, -7512972, 601832, -1113470, -3981435, 12006044, -3548180, 18144090, -14771466, -3277060, -10201, -16998944, 10783589, -19782082, -13529684, 6245956, -8781061, 19130858, 27786828, 16316044, --18302466, 9667971, -5347771, -5553930, -12900471, -4087198, -21055540, 16085189, 11938398, 5686537, -694174, -10042170, -5542656, 6467684, -21971442, 17726940, -4137127, -3089155, 9376987, 1599339, -8548596, -2461016, -1256278, -7585449, -2097018, 659278, 1584843, -5963025, -1990717, -2872796, --2039036, 9936944, 1150514, -219043, -4691178, 4005057, 4071629, -3603478, 2295660, 4523675, -1122597, 7653632, -2657511, -5480379, 1218160, -8901857, 4677757, 3243774, 1250372, -328565, -3634079, -805843, 5869073, 1792075, 4214974, -7053947, -1991791, 6473053, 486405, 2605435, -3467649, -6579890, 1081258, 6652368, 21021718, 35051764, -267362, -26563836, 5609228, -31694174, -5411122, 14369887, 6747931, 1892470, 19030464, 14064944, -865973, -2922725, -26201448, -14133127, -374736, -12277164, 35460324, -6492380, -8056285, -15336791, 1896765, 13320841, 9322763, -507880, -6846178, 10371272, -15748034, 5362804, 30425012, 10755135, -20900922, -14749991, 9872519, -10354092, --1422708, 7390565, -4640712, -17265232, -4128001, 2067490, 28991030, -6303402, 6432788, -7742753, --23443542, 4074850, 29412472, -7939784, -17646946, 5114233, -10810433, 7176891, -6180458, -7204808, -20212652, -5196374, -2313377, 9867687, -17431124, 6267431, 21392158, -8876087, 1835025, -12562242, -37620692, -6863358, 4482872, 12195023, -8743480, -2108829, -10050223, 5262409, -11356430, -9592273, --8959302, 14401562, -19565186, 2861522, -2900177, -5843840, 15202574, 334471, -5197448, -6464463, -791348, 5702643, 4435628, -8715562, -1589675, 388158, -2435783, -10783589, -6488085, -1964948, -2561411, 864899, 862215, 1506997, 8773008, -8866960, 9222905, 1820529, 2657511, 617938, -7310035, -4152697, 12009265, -2646774, -198105, 9209484, 12062953, -6324340, 7881265, -3952444, -2632278, -7010997, 6089190, 5122822, -10434623, -528281, -4185983, -1436130, -5228586, 3759170, --6431177, 5761699, -10212358, -58040576, -20332376, -1046898, 18554796, -9729175, -29046326, -10940355, --4250407, 14235132, 3709778, -3875134, -14361297, 15178414, 26949846, -12227772, 20374788, 5113696, --38565048, 14393509, 18112414, -6350109, -15677704, -2935610, 23778550, 25373594, -2094333, -19232326, -1351304, -2191507, -2480344, -16026670, 3971234, 7319698, -25428354, 17563196, 14932528, -17933636, -3333968, -20120312, 7138236, 49196168, -43939664, 45485316, 20586316, 2063195, 27827094, 13834090, --28437516, 17113834, -21379274, -4787278, 23390392, 1107565, 6714108, -11935177, -20818780, 63392644, --14872935, 932545, 24989730, -12046310, 4893042, 1925756, 15448460, 35720708, 33946348, 32130650, -2023467, -607738, -5143224, 1650878, -8653822, 2430952, 27269822, -7196218, -9429064, 2745558, -3793530, 15839839, 18451180, 5275831, 5192079, 13115220, 5588290, -9976672, 3288871, -5135707, --14778446, -6624987, 7806640, -11132555, -16044387, -12179454, -534723, 1496796, -9186398, 4753992, -10452340, 1647120, -3346317, -595390, -11716134, 13943611, -2018635, -3006477, 9665287, -7938710, -6580964, -5935108, -4743255, 16408386, -27380, -12129525, 15556372, -9503689, 9392020, 4416837, --6058052, 4708358, -2107218, 11340861, -5147519, 3980361, 593242, 979789, -1165010, 12070469, --6146098, -1377074, -834834, 2177549, -1711545, 5284958, 14854681, -3930432, -42831024, 19451906, --31119722, 43751760, 5154498, -38045896, 8571144, 340913, 17852032, 8432095, -9225053, 32379758, -7885560, 1651415, 21600464, -17275970, -24055574, 794569, 12562779, 43641700, -6161131, 124017, --4594005, 31457952, 3399467, -24962886, -14789720, 4743792, -2792803, 13937706, -24300924, 11678553, -3930969, 7208029, -2201708, -9464497, 5490579, 9778030, 63888, 29237990, -47144784, 4142496, --16654809, -10300942, -6120329, -34417720, -50096500, -51782272, -37710888, 4027069, 142271, -30020748, --294742, -5443871, 3186866, -18615462, -48278652, 47556024, -909996, -6982543, 9620727, -47106128, --3302293, -11699491, 8782671, 13886703, 64666100, 48285632, -5480915, -552440, -1600949, 12757127, -19496468, 11919071, 8850854, -1770063, -7900056, -45820320, 8578123, -900869, -17976048, -7974681, -29870424, -4165045, -5560909, 14350023, -1311039, 15737834, -6205691, 7930120, -982474, -3226594, -10971494, 13591424, -6292664, 1957968, 5881421, -2476049, 2706366, 758062, -293668, 9305047, --4055523, -4639102, 7516193, -8875013, 11704323, 2147, 6262599, 9938554, -5103495, 2520609, -8441221, -1987496, -5808944, -2009508, 802085, -1479616, 2182917, -11571179, -914828, -9144522, -9535901, 1538672, 6356015, 4731980, -1583769, 387621, -836982, 4537096, 5845451, 5068599, --12159589, 58932320, -56114284, 9695352, -10749229, 2247879, 23847806, -17277580, 6018323, 971200, --60714732, 1574642, -6742025, 3018825, 7107634, -27093190, -10044855, -44895832, -11506217, -2130304, -2542621, -16955458, -12707734, -19522774, -8078834, 19492710, 4322348, 39307004, 9698036, -13213467, --13834627, 24175298, -26736708, 46224584, -35982164, 10564009, -29011430, 657667, 27865748, -50394460, -47623672, 8451959, 5588826, -34587908, -6830609, -6513855, 98784, 16685411, 16692390, 20987358, --39901320, -949725, -15628849, -13567265, -15297600, -21502216, -14813879, 817654, 23015656, -24405078, -6694781, -44987100, -14969572, 11461120, 13524315, 2505577, -51147692, -27666032, -18154290, -26040924, --21515638, 1891396, -16925392, 27350352, 8302172, 13746043, -9342628, -14053133, 45830524, -15244986, -12409234, -9100499, 3682935, 34426312, 4726075, 6295349, -19098108, 19609210, 11467026, -7963943, -18255758, -13495324, 5137855, -4937065, 12410845, 2572149, -3947075, 6773701, 15773804, -5219459, -5155572, 5684389, 4837207, -1722282, 4371740, -2094870, 10888816, -3411278, 1956358, 10292352, --1929514, -3799972, 3307125, 4548907, -6802155, -1381906, -19216220, 12332999, 8491150, 249645, --10568304, -4221416, 1162326, 4252018, 15005005, -2229625, -3841312, 5360119, 4015795, -2015950, -15188615, 3049964, -18036178, 4992900, 18277234, 25606596, -47421808, 72998336, -54465016, -5488968, --32755032, 6787659, 983011, -19688130, -27981712, 33326262, 22473954, 10657961, -14156212, 14860587, -4788889, 31484258, -24435142, -16042240, 19652696, 32720134, -41135588, 16988744, -1235340, 19945828, --14679124, 6021544, -18105972, 4036196, -34132640, 11533061, 37091336, -976031, -2601140, 46056008, -8207146, -20868172, -44515188, 38516192, -20000588, 17509508, -16201690, 45994268, 20402706, -4779762, -4920959, -26227218, 3752728, 11639361, -12575664, 13029320, -55143620, 21973052, 50417548, 39510476, --21520470, -22292490, -22454090, 25666724, 2260764, -7794829, 2261300, 65102040, -31431644, -14504105, -25311316, -21328808, -58341764, 25138980, 13291850, -41567232, 23678154, 40801116, 35953172, -10646150, --15790447, -28258200, 15499463, -17329120, -11087458, 26288422, 17892834, 8331700, 23003308, 13171054, --8648454, -7926362, -29266980, 7177964, -12195023, 10512469, -10741713, 21318070, 14674830, 3524558, --3780108, 20291572, -10760504, -1225139, 2734284, 7994545, 4780836, 9557376, 8614094, 1024350, --4680441, -2530273, 7246147, 4092567, 2990371, 1325534, 11318849, 36531920, -971200, -2503966, -5523865, -12212203, 4567698, 13388487, -18544596, 8575976, 9743133, -6766721, -5137855, 8884140, -4871567, -10378788, -46938624, 25035364, -2776160, 6518687, -17227650, 15001247, 278099, 8225936, -2454574, 2724083, -9822590, 7472170, 25339234, -32410896, 27805618, -4752382, -17176648, 5740224, --11709691, 7558069, -11999065, -9783399, 8164733, -25829934, -2738042, 34463892, -49811420, 14057965, -2274722, -8283382, -15384573, -18036716, -11864310, 36178656, -29868276, -4210679, 11562052, -30175904, -7549479, 16656420, 10972031, 5749888, 5097590, -16981764, 13291850, -44397076, 481573, 39023536, --16429324, -4285841, -8888972, -10889353, -468151, -31378494, 16523276, 12759274, -26196616, 24536612, -6630893, -29553134, 12029667, -5635534, 21342766, 18895708, -27786290, 9778567, 30467424, -28732794, -15964393, -20412368, 15993384, 18914500, -29529510, 16680579, -2327872, -15368467, 22157736, 1357210, --35490388, 11026792, 15465103, 4930086, -10038412, 1910724, 26504780, -12156368, -25236690, 26823144, --1364726, 2240899, -1401233, -3124589, 16123844, -11980274, -6105833, 11826192, 4182761, -2600066, --12237972, 17923972, -6973953, -11314554, 697395, 9569724, -5816460, -4009352, -3038689, 14093398, --11050414, -5274220, 709207, 7803419, -6930467, 5694590, -557272, 14017163, -8966281, 2510945, -839666, 1700807, 24089398, -8378945, -106415864, -234564272, -92240864, -155486400, -212211120, 81916304, -29929480, 70902392, 318740256, 265725872, 175572896, 273875584, 186482656, 23269596, 47242492, 34529388, --144333984, -92707408, -63526324, -165281072, -168730480, -45921792, -46419468, -104464880, -30429844, -21673478, --126058904, -108241232, -34498788, -59095528, -119012472, -28282896, -19160386, -93015032, -9922448, 66413080, --27414776, -21930104, 97543536, 60239064, -38458748, 86545200, 142094160, 16731582, 80344880, 174187232, -85668488, 44741748, 187810336, 137587664, 102572944, 227844800, 307889568, 243753360, 282925600, 366358016, -239577040, 157158224, 205816976, 132957152, -35803384, -8074002, -89920512, -224297152, -317518880, -341648000, --457647008, -520731488, -552917952, -534852288, -513977664, -511009856, -426680320, -326364352, -306217760, -199535056, -16931834, 85929944, 111173616, 335034304, 328798016, 227063104, 334043776, 306245664, 166558832, 161895568, -213347136, 129408440, 61351996, 149486880, 152477248, 68977712, 123349848, 185794384, 123454536, 73828344, -158160016, 131148976, 26970784, 80641232, 116485952, 13713294, 22687628, 127436512, 78206520, 42454676, -135013376, 133860168, 49293340, 106783624, 92249456, -23176718, -65720516, -68127312, -157736432, -213777696, --211134144, -243776432, -268844544, -278795456, -272988672, -280032416, -311534912, -322285760, -308402816, -344053184, --294648704, -200646384, -153515552, -52246128, 88911728, 186234080, 272623584, 352035936, 357820704, 306426592, -278176992, 228533056, 172809088, 139306192, 116966992, 94453312, 73554000, 66612260, 61385820, 45123464, -37513856, 33026152, 15964930, -3494493, -15859704, -34508452, -52265992, -54976120, -43868260, -32267016, --24082956, -21229486, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +817654, 2046015, 1981591, 10121627, 2752537, 2140504, -2994129, 390842, -5127654, 1207423, +4716948, -2387465, 228707, -991601, -2522220, -4063576, 3143916, -6799470, -3429532, -3411278, +3693135, 4044786, 2133525, 970126, 2930778, 2420214, 4838281, -1676648, 1696512, 3010235, +642635, 993748, -3521336, -1516124, -1469953, -1323924, 3272765, -6254546, 1051193, -2165201, +6562710, 159988, -1175747, -1641751, -2698313, -897111, -2816425, -8250096, -2607045, -1612760, +-1327682, -1847910, 858993, -1543504, -382789, -528818, 2895882, 1295470, -367757, 1848983, +-1610613, 3546032, -2315524, -3839164, 3717831, 3893925, -1675037, -3687230, 360777, 2024540, +1532230, 1759863, -1740536, 24159, 1433445, 1927367, 847182, -526670, 242129, 2394981, +4616553, 2234457, -562641, -53150, -1086090, -1153199, 970126, -1519345, 942745, 1140314, +-440234, -148176, 510027, 444529, -456877, 386010, 270046, -2115272, 342524, 166967, +663572, 378494, -803159, 767189, 612033, -53150, 9155797, -1711545, -875100, 984084, +2527052, -6744710, 4202089, -8005819, -360240, -3874597, -569083, -2560338, -603980, -622233, +4025458, -3390340, 4359929, -4542465, -4963372, 2106145, 6663105, -7851200, -2180233, -3796214, +56371, -1973538, 2124398, 2819646, 1425392, 2872260, -4562866, 169114, 6407018, 2519535, +817118, -4647155, -6641630, -3994320, 1020592, -3395172, -1917703, 1301375, 4315369, -3884798, +-3828963, 1555852, -2799245, 4958003, 1661079, -506269, 3495030, 3321620, -2684, 5572183, +2756295, 1747515, 1476932, 3654480, 5748814, -3781182, 1100049, 1583232, -4039954, 363462, +3284039, -1273458, 8302172, -2559801, -2201708, -1724429, 3062312, 4227859, -5382668, -2189360, +1466731, -973347, 1322850, 523986, -2358474, 1056562, 504659, -1734093, -2852932, 1179505, +801011, 2621004, 220654, 811212, 1202054, -113817, -856309, 1921998, 114890, -4832, +1653562, -893890, 801011, 2208687, -185757, -474057, 417686, -326954, 681289, -1348620, +-423591, -626528, 89657, -202937, 863288, 93952, -845035, 40265, -11768747, -1913408, +-2631204, -2105071, -1063004, -1448478, 6245956, 7468948, -1718524, 6092948, 2317135, -3382287, +1579474, -5121212, 890669, 1073205, -6884296, -1025960, 1056025, 1192390, 4741644, -923955, +4116726, -2776160, -5284421, -5574868, -1605781, -2825015, -4235375, 4362076, -1727114, -853625, +-779000, 904628, 2364916, -6751689, 11811, 932545, -3211025, 8027831, 614180, -1990181, +-1757179, 8572218, -628676, 1081795, 5060009, 142808, 3086471, 1199907, 271120, 4727149, +-42950, -3320547, 4234301, 2272575, 2714419, 3845070, 1257352, -3135326, 2211371, 3154117, +3053185, 4735739, 11811, -4399121, -3528316, 5555004, 7724499, -7072201, 1402307, -1876364, +-1262720, 1615445, 2938831, 2830920, -2277407, -915365, -2201708, -3650722, -3204046, -1176821, +-2043868, -3138547, 695785, -861141, 1169842, 1005559, -992137, 556198, 172336, -2551211, +839129, -1727114, -3111167, 200790, -932008, -1305670, -1409286, -401579, 537945, -477278, +869731, -600759, -1065689, -1439888, -1347009, -576599, 214212, 1015223, -8646306, 9238475, +8559870, 6455336, -4484483, 5048734, 9108552, -2277943, 7121056, 2685965, 1080184, -1097364, +7850664, 3714610, -1822140, -5612449, 3273839, -2320356, -2992519, 3184718, 3764539, 1654099, +-5566815, 914291, 5025649, -2436320, 1714229, -10969883, 1596654, -875636, 5304822, 1301375, +-2261837, -3302830, 6784975, -5820218, 488553, -4699768, 566936, -1435056, 3798362, -782221, +-1215476, -5761162, -1365800, -1011465, 7178501, 362388, -6532109, -237297, -343597, 2244121, +3442953, -2910377, 31675, -3715147, 3988951, -867047, 4817343, -2585570, 7162932, 3550864, +-7863548, 8356933, -1184337, -5769215, 1002875, 7635915, 1571421, 1176821, -6153078, -401579, +-2371359, -3336116, -3213173, 294742, 2932389, 3759170, 2064269, 2054605, -2388002, 1813550, +-2066416, -238371, -89657, -964757, -379031, 2172180, -3410204, 934692, -312459, 300648, +1176821, 937377, -69256, 1491964, 186831, -2260764, -2423435, 1436667, 686121, -99321, +-1591822, -320512, 413927, -219580, -681826, -1576790, 1017907, -28454, -956704, 1090922, +-628676, -433792, -1232656, -775778, -449361, -1595044, 1145146, 9941239, -3456375, -7241852, +-402116, -10848014, -38655, -9325448, -3259880, 6366216, -6660958, -7347079, 2166274, 580894, +629213, -1742146, -2425583, -5325760, 3559991, -10395968, -3215320, 1024350, 6401649, 351650, +6495601, 2291902, 14303852, 5462125, -176094, 603980, 6799470, -1657321, -2068027, -1309428, +1107028, -4544076, -2268280, -7642358, -556735, -3526168, -2120640, 9352291, 129386, 5840619, +-2374043, 2365453, -614717, 3473018, -1193464, 3230889, -3244311, -4019016, -664109, 1099512, +-4049617, -4057134, 334471, 2043331, 4338454, -657130, -2058363, -917512, 4116189, 7021735, +368293, -4832375, -6890202, 68719, 1867237, 689879, 9356049, -5907191, -338766, 4168266, +-1571421, -4953171, 6588480, 2996277, 1153736, -3301756, -3549791, -5904507, -2321430, -660888, +-3066070, -1556926, -2658585, 470836, 663036, 1437203, 169114, 403190, -3295314, -1727651, +-3531537, -1253057, -1033477, -2709051, -1720134, 888521, -330176, -1164473, -322659, 837519, +-2217814, 1068910, -1604707, -214748, -679679, -1235340, -440234, -63351, 973347, -1585380, +-2323041, 1159641, 602369, 8894340, -6857452, -1407676, 549756, -547071, -272730, -5645735, +-4354560, -622770, 3717294, 1344862, 1480153, 1559610, 3906810, -819265, 3570729, 2899640, +-9287867, -3571265, -10897406, 2810519, -3853660, 5462662, -3548180, -4811974, -3546032, 2835215, +-7272990, -6034429, 8396661, -4608500, 9105868, -2167348, 2720325, -3223910, -6178311, 6769406, +-5245229, -5864778, -616328, -3192771, -6912750, -5305895, -8709120, 353261, 5547487, 3207267, +-3405372, 9635759, 3501472, -3546032, -4512937, -6977711, 270046, -2616172, -4914517, -2462627, +-2105608, -3438121, 1800128, 7711614, -503585, 505732, -5261335, 2454037, 2573759, -4544613, +-3646964, 1845225, 9336722, 3737695, -2365990, -1240172, -2010582, -9652939, -7641284, -6407555, +6667937, 7133404, -1078037, -3329674, 3076270, -2124398, 2695629, -1417876, 1254131, 224949, +98247, -3127810, 2054068, -1828046, -1358283, -489089, 1832877, 1410360, -229244, -2610266, +1617592, -376347, 1176284, -881542, -624918, -2303176, -1051730, -80531, -326954, 451508, +403727, -289373, 350040, -1909113, 817654, 194347, 234613, -686658, 2334315, 1519345, +-144418, -932008, 191126, -1449015, 2645163, 12802761, -2414845, -15032, -2092186, 8337069, +7903814, 2735894, -13153337, -2179159, -15977278, 9475235, 4006668, 277025, 16517370, 7822209, +-1439888, -7382512, 6815040, -3149822, 1700270, 2327336, 1085553, 5426691, -4794257, 9265855, +3532611, 919660, -2786360, -4684199, 6286222, 5308580, -1004486, 3460133, -7858180, 1499481, +-10497437, 4311074, 607738, 5387500, -8617315, 1816234, -2804077, 1933809, 9837623, 8348880, +409096, 2434710, -6088116, 8050916, 244276, 17102560, 18066244, -2367601, -4797479, -4888210, +-3890167, -10435160, -2909304, -13636521, 845572, -1111860, -741956, -2755759, 4820027, 8111583, +12679817, 11800423, 9082782, -14870251, -10611254, -432718, 768262, 15669114, -10989748, 8435853, +-566399, -3121368, -1592359, -346282, -3075197, -8622147, -5641977, -1593433, 2556043, 852014, +-194884, -2321967, 1388885, -3029026, -273804, -1590749, 3341485, 3743601, -870268, -661425, +3477313, 2675765, 469225, -468151, 1292785, 266288, 545998, -630286, 1518271, -71941, +-842887, -1348083, 465467, 1526324, 2240899, 4817880, 3744138, -1762547, 478352, -3346317, +-609349, 1563368, -246424, -625455, 124554, 740345, -4617627, 9197136, 1984812, -6772627, +-3738769, 17262548, 16975858, 19024558, -1854352, -788663, -3223910, 3213173, 9314710, 10716480, +3120831, -4581120, -9138617, -18598820, 5535676, -10995653, -2400887, -1104344, -2367601, 1277216, +-539555, -3394098, -394600, -10768020, -4258997, 673773, -1980517, -12034498, -5070746, 1060857, +8781061, -2447595, 270046, -9572408, -3221762, 148176, 6376953, -3863323, 3927748, -10699300, +-2971581, 2532420, 4089883, -2904472, 14431090, -2924336, -1810329, -7466801, -2458869, 5843840, +1992328, -617938, 7536057, 10456635, 12166032, -2099165, -6067178, -6853694, 112743, 1483374, +2864743, -4850092, 3933653, 5218922, 4366371, 4292820, 12163884, 8245801, 5441724, -603980, +2746095, -12048994, -2255932, 1323387, 6205154, 9847286, -1846836, -5480915, 1736777, 3424700, +-2820183, 5072893, 4039417, 5480915, 850940, 2426657, -250719, -377420, -3920768, 3127273, +-1220308, 2073932, 1801739, 625992, 2885144, 310848, 4639639, 3330210, 2101850, 1366337, +1309428, 70330, -593779, 435939, -1930051, -76773, -2414845, -3830574, -1546188, 868120, +682363, 1755568, -796180, 1177358, -1600412, 795643, 2054605, -17603998, 21971442, -589484, +3256122, 12027519, 244276, -4182225, 661962, -21380884, -12993350, -6096169, 3455838, -4191888, +2481954, -9986873, 6968048, -3474092, -54761, 13231184, -12840878, -8548059, 12399571, -3853660, +-18070538, 1303523, -11126113, 2326262, -886911, 6801618, 2962454, 3437048, 1421634, -2170569, +8092792, -882079, 10385768, 6337224, -3634616, -6191732, -5774584, 2828773, -2815351, 2845416, +2045478, 6100464, 1822140, -11419244, 720481, 3894462, -3905736, 494995, -7837242, -1742146, +741956, 523449, 18146236, -3154117, 12907987, 15397995, -4187056, 8245264, -2486786, -447750, +-8515310, 5442798, 13138842, 9153649, 2081449, 3599183, 8162586, -527207, 6773701, -2735357, +-3709241, -6531572, 3610994, 16727824, 3790309, -2162516, 1376000, -11762305, -3929895, 279710, +11120207, 8077760, 3539053, 7172059, -2011118, 7043747, -27380, 4430259, 605590, -345745, +-801548, 4908611, -477815, -3099356, -1859184, -1234803, -705448, -1253057, -2426120, 3540664, +-2251100, -3077881, -843424, -4041027, -2726231, -3451543, -1927367, -2414309, -3038689, 1035087, +770947, 1305133, 1149441, -1840930, -901943, -3191161, -4099010, -392990, -2258616, 1335735, +-1056025, 333934, 2078764, 2104534, 1518271, 3628711, -928250, -348966, 2830920, 21039434, +3062849, 5246303, -4973036, -2522220, 14292041, -9432285, -2174327, -18562848, 17392470, 9081171, +1258425, -6308770, -17513266, 1770063, -4654134, 2142652, -19637128, 7003481, 10385768, -11420855, +-2720862, 1703491, 1219771, 3794604, 11274826, 13853954, 57445, -34897, 2611877, 523449, +-8385924, -9614821, -6349573, -12669080, -6212670, 10783052, 5042292, -4042638, -5326297, -3544422, +-22234508, 4827543, 5367636, -10427644, 17075716, 602369, 12743168, -4590783, 8275328, -2733747, +-10981158, 983011, 10159208, -5600101, 5590437, 6493454, 18141404, 5004174, 5721434, 17350058, +9941239, 6562173, -23989002, 4959077, 3710315, 4645007, 525060, -9818295, 17447230, -12950937, +9968619, 10390600, -15631533, -3443490, 21480206, -19119584, 3280818, -4497368, -2026688, -6903086, +8389145, -3601867, -7087233, -6113349, 3775276, 8089034, -7530689, 9396852, -7772280, -3446175, +10763188, 3921305, -839666, -4743792, -4972499, -164283, -1945083, -8184597, -891206, -1766305, +-2237141, -772557, 6489159, -577673, -5890548, 519691, 2565706, 6114960, 3898757, 4851703, +-1908039, 2545842, -3489661, 141197, -1148904, 2536178, 5174362, -3817152, 2413772, 2383707, +-212601, 1374926, 1117228, -11361799, -16969952, -7668127, -7270843, -22669374, 14890652, 2056216, +15918759, 602369, 2025077, -8058433, -4329864, 7584912, -898722, 7854422, -8417062, -2915209, +1168231, -3996467, -6941204, 9427990, -10226317, 11293617, -4350802, 3458523, -2790655, -8207146, +-7369627, 3069291, -2848637, -408559, 5706401, 22926536, 1391033, -3295851, -8121247, 3022046, +18490908, -3770981, -3338263, -11242614, -4042638, 1254131, -10602664, -4091493, -15011448, 9175124, +-18316424, -32956894, -3678103, 738734, 15315317, -16422881, 14696841, 9433896, -7904351, -15520401, +-2679523, 2202245, 4206384, 251792, 9209484, -6612639, -2602750, -32518808, -4545686, 32977832, +3018825, -5884642, -4654671, -17541184, 12742094, -5832566, -5135171, -4544076, -2716030, -7753490, +-11337640, 3051038, 6180458, -607738, 4663261, -9651865, -17373680, -890132, -9255118, -2861522, +104690, -9213779, 1872606, -6789807, -11714523, -8777303, -4350802, 3453154, 5065914, -1259499, +-13819594, -3662533, 660351, -6962679, -3189013, -825707, -6443525, -3917547, 1467268, -528281, +-5109938, -2208687, 2047089, 581431, -6727530, -2842195, -62814, 5761699, 6459094, 1541893, +-2225330, -2678449, -998580, 4234838, -1181116, -686121, 139586, 1445257, -5686000, 4847945, +-1338419, 3190087, 15620259, 13969381, -4265977, -5506685, -1213328, -22041772, 14780593, -13886166, +-11407433, -8830453, 5662915, 2374580, 13720810, 1783485, -7256347, -8560944, -8821863, 7108171, +-3295314, -4703526, 12559558, 13956496, 4873178, -9208410, 11589432, 18525804, -6873559, -3925600, +16110422, 4204236, 3354906, -10294500, 145492, 15257334, -22199076, 15494631, -3185792, 2181307, +9398462, 11232950, 74088, 5654862, -10365904, -8515310, 5959267, 21270826, 5849746, 5250061, +8195872, -10612327, 2420751, 9482214, 5617281, -1687922, 7748121, 4778688, -12529493, 10392747, +-12205760, 2851858, 9235790, -9777493, 7672959, -11948599, -4600447, 2256469, 620623, 7729868, +-4735739, 6635188, -4845260, 974958, 2642479, -2194728, -4741644, -9669582, 26141318, 2808909, +7969849, -11281268, -26294326, 18716930, -17817672, -7785702, 77309, -4141959, -2522220, -1554778, +-7261716, 4647692, 3920232, 2008434, -6696391, 8505646, 6715718, -2846490, -2741800, 2503966, +-2221035, 2353642, -2241436, 9011378, 3490198, 830539, 6567542, 6735046, -3744138, 20401, +3403225, 4670240, 2090039, 2220498, -4074850, -5591511, 4655745, 5790153, 8594766, -1197222, +-7483981, -1121523, 911070, 3747359, -11607686, 4408784, -3735548, -1774358, 2952790, 2717104, +-2705830, 4046396, 556735, 3201361, -1671279, 7718593, -14532559, 15519864, -5622649, -15217069, +-19750944, -5477694, -1948841, 11708618, -17377974, -2741263, -1983201, 9238475, 17396766, 14425185, +9002251, 1435593, -4376572, -2606508, -1715839, 12268037, 10084583, -2286533, 1651415, -2583423, +7915088, -18875844, 11372537, 6309844, 8916352, 3084324, 2105071, 16414828, -6374269, -13821205, +140660, -4493073, 1015760, -19200114, -10611254, -1047435, 16183437, -10803990, -3379603, 2742337, +-587874, 561030, 15905875, 6474127, -2395518, 1494112, 7813620, 5218386, 18520436, -5327907, +8492761, 9495099, 5082557, -2885144, 3081639, -19985020, 8650064, -3646964, 972810, -4498978, +-10998874, -14750528, 3082713, -6973417, -20129438, 4965519, -17094506, -12502113, -2908767, -25742960, +-15613817, 3995930, 11091216, -12791486, 2844342, 1156957, 29770566, 28315646, 26654568, -675384, +1550483, -13859323, -8383240, 11235634, -5947456, -3803194, 1890859, -3423626, 6293738, -7514582, +-3751654, -142808, 2424509, -4457639, 5776731, 5891622, 316754, -2312840, 1641214, 5765994, +-4499515, -5867999, -1479079, 5207111, -6787122, 11741904, 6725382, -376883, 5321465, -1691680, +-4741644, -7475391, -4077535, -6607271, -3600256, 4137664, 770410, 11870753, -2648921, -3556770, +-26189100, -28976534, 17293148, 15544024, 5236639, 16840566, 28176060, 8041790, -10699837, 9120900, +-4243965, -7905424, 12899397, 965294, -11497091, 7114077, 9291625, 2179159, 3286187, 746251, +1455994, 25811142, -530428, 5558225, 2426120, 16033113, 965831, 25605522, -97711, -11210402, +20470352, 4221953, -9021579, -3152506, 10847477, -2201171, -170188, 8516383, -15527381, 15556372, +-3259343, -22679574, -6345814, 2273112, -22698902, -2503429, -2356327, 10032507, 9671729, 17132624, +-11969537, 2653216, 2734284, 3600793, 7318088, -10836202, -12251394, 6478958, -288837, 13110388, +10635413, 3331821, 27299886, -4500589, -4180077, -18602040, 27854474, 4971962, 19332722, 11880953, +-31054224, 4508642, 2841121, 19099182, -10087268, 8173860, 190052, -8209830, -1012539, -6623914, +15359877, -29343216, -3558381, -2054068, 131533, 1386201, 4737349, 7251516, -91268, 13629005, +-518080, -1887101, -4344897, -2763812, 890132, -4664335, 1611150, -1232119, 4108673, 2929705, +-1388885, 1190243, -1580548, -8144869, -435939, 464930, 2087354, -8320426, 4490389, -1669132, +4715874, 3774740, 6659347, -6730751, 7780334, -4172024, 2514703, 5666136, 5073430, -1687385, +180926, -3007014, 4391067, -208306, 2138894, -51003, -912144, 11370389, 6339909, 212064, +5240934, 1623498, 5443334, 17149804, -36230732, 21507048, 21883932, -9345312, 5200669, 3036542, +5921686, 143345, 17424682, -12713640, -2742874, -13639742, -111669, -7715372, 1231045, 3647501, +-19869592, 8923331, 21599390, -14877767, -14230300, -14558329, 28758564, -12584791, -7046431, 2649458, +-9838159, -29819422, 5251672, 21599928, -29680908, -13485124, 10277857, 15902116, 4343286, -4548907, +6896107, -10570451, -4916664, -586263, 14728517, -20244866, -16045461, 11368242, 18496276, 7233262, +-23052700, -7512972, 601832, -1113470, -3981435, 12006044, -3548180, 18144090, -14771466, -3277060, +10201, -16998944, 10783589, -19782082, -13529684, 6245956, -8781061, 19130858, 27786828, 16316044, +-18302466, 9667971, -5347771, -5553930, -12900471, -4087198, -21055540, 16085189, 11938398, 5686537, +694174, -10042170, -5542656, 6467684, -21971442, 17726940, -4137127, -3089155, 9376987, 1599339, +8548596, -2461016, -1256278, -7585449, -2097018, 659278, 1584843, -5963025, -1990717, -2872796, +-2039036, 9936944, 1150514, -219043, -4691178, 4005057, 4071629, -3603478, 2295660, 4523675, +1122597, 7653632, -2657511, -5480379, 1218160, -8901857, 4677757, 3243774, 1250372, -328565, +3634079, -805843, 5869073, 1792075, 4214974, -7053947, -1991791, 6473053, 486405, 2605435, +3467649, -6579890, 1081258, 6652368, 21021718, 35051764, -267362, -26563836, 5609228, -31694174, +5411122, 14369887, 6747931, 1892470, 19030464, 14064944, -865973, -2922725, -26201448, -14133127, +374736, -12277164, 35460324, -6492380, -8056285, -15336791, 1896765, 13320841, 9322763, -507880, +6846178, 10371272, -15748034, 5362804, 30425012, 10755135, -20900922, -14749991, 9872519, -10354092, +-1422708, 7390565, -4640712, -17265232, -4128001, 2067490, 28991030, -6303402, 6432788, -7742753, +-23443542, 4074850, 29412472, -7939784, -17646946, 5114233, -10810433, 7176891, -6180458, -7204808, +20212652, -5196374, -2313377, 9867687, -17431124, 6267431, 21392158, -8876087, 1835025, -12562242, +37620692, -6863358, 4482872, 12195023, -8743480, -2108829, -10050223, 5262409, -11356430, -9592273, +-8959302, 14401562, -19565186, 2861522, -2900177, -5843840, 15202574, 334471, -5197448, -6464463, +791348, 5702643, 4435628, -8715562, -1589675, 388158, -2435783, -10783589, -6488085, -1964948, +2561411, 864899, 862215, 1506997, 8773008, -8866960, 9222905, 1820529, 2657511, 617938, +7310035, -4152697, 12009265, -2646774, -198105, 9209484, 12062953, -6324340, 7881265, -3952444, +2632278, -7010997, 6089190, 5122822, -10434623, -528281, -4185983, -1436130, -5228586, 3759170, +-6431177, 5761699, -10212358, -58040576, -20332376, -1046898, 18554796, -9729175, -29046326, -10940355, +-4250407, 14235132, 3709778, -3875134, -14361297, 15178414, 26949846, -12227772, 20374788, 5113696, +-38565048, 14393509, 18112414, -6350109, -15677704, -2935610, 23778550, 25373594, -2094333, -19232326, +1351304, -2191507, -2480344, -16026670, 3971234, 7319698, -25428354, 17563196, 14932528, -17933636, +3333968, -20120312, 7138236, 49196168, -43939664, 45485316, 20586316, 2063195, 27827094, 13834090, +-28437516, 17113834, -21379274, -4787278, 23390392, 1107565, 6714108, -11935177, -20818780, 63392644, +-14872935, 932545, 24989730, -12046310, 4893042, 1925756, 15448460, 35720708, 33946348, 32130650, +2023467, -607738, -5143224, 1650878, -8653822, 2430952, 27269822, -7196218, -9429064, 2745558, +3793530, 15839839, 18451180, 5275831, 5192079, 13115220, 5588290, -9976672, 3288871, -5135707, +-14778446, -6624987, 7806640, -11132555, -16044387, -12179454, -534723, 1496796, -9186398, 4753992, +10452340, 1647120, -3346317, -595390, -11716134, 13943611, -2018635, -3006477, 9665287, -7938710, +6580964, -5935108, -4743255, 16408386, -27380, -12129525, 15556372, -9503689, 9392020, 4416837, +-6058052, 4708358, -2107218, 11340861, -5147519, 3980361, 593242, 979789, -1165010, 12070469, +-6146098, -1377074, -834834, 2177549, -1711545, 5284958, 14854681, -3930432, -42831024, 19451906, +-31119722, 43751760, 5154498, -38045896, 8571144, 340913, 17852032, 8432095, -9225053, 32379758, +7885560, 1651415, 21600464, -17275970, -24055574, 794569, 12562779, 43641700, -6161131, 124017, +-4594005, 31457952, 3399467, -24962886, -14789720, 4743792, -2792803, 13937706, -24300924, 11678553, +3930969, 7208029, -2201708, -9464497, 5490579, 9778030, 63888, 29237990, -47144784, 4142496, +-16654809, -10300942, -6120329, -34417720, -50096500, -51782272, -37710888, 4027069, 142271, -30020748, +-294742, -5443871, 3186866, -18615462, -48278652, 47556024, -909996, -6982543, 9620727, -47106128, +-3302293, -11699491, 8782671, 13886703, 64666100, 48285632, -5480915, -552440, -1600949, 12757127, +19496468, 11919071, 8850854, -1770063, -7900056, -45820320, 8578123, -900869, -17976048, -7974681, +29870424, -4165045, -5560909, 14350023, -1311039, 15737834, -6205691, 7930120, -982474, -3226594, +10971494, 13591424, -6292664, 1957968, 5881421, -2476049, 2706366, 758062, -293668, 9305047, +-4055523, -4639102, 7516193, -8875013, 11704323, 2147, 6262599, 9938554, -5103495, 2520609, +8441221, -1987496, -5808944, -2009508, 802085, -1479616, 2182917, -11571179, -914828, -9144522, +9535901, 1538672, 6356015, 4731980, -1583769, 387621, -836982, 4537096, 5845451, 5068599, +-12159589, 58932320, -56114284, 9695352, -10749229, 2247879, 23847806, -17277580, 6018323, 971200, +-60714732, 1574642, -6742025, 3018825, 7107634, -27093190, -10044855, -44895832, -11506217, -2130304, +2542621, -16955458, -12707734, -19522774, -8078834, 19492710, 4322348, 39307004, 9698036, -13213467, +-13834627, 24175298, -26736708, 46224584, -35982164, 10564009, -29011430, 657667, 27865748, -50394460, +47623672, 8451959, 5588826, -34587908, -6830609, -6513855, 98784, 16685411, 16692390, 20987358, +-39901320, -949725, -15628849, -13567265, -15297600, -21502216, -14813879, 817654, 23015656, -24405078, +6694781, -44987100, -14969572, 11461120, 13524315, 2505577, -51147692, -27666032, -18154290, -26040924, +-21515638, 1891396, -16925392, 27350352, 8302172, 13746043, -9342628, -14053133, 45830524, -15244986, +12409234, -9100499, 3682935, 34426312, 4726075, 6295349, -19098108, 19609210, 11467026, -7963943, +18255758, -13495324, 5137855, -4937065, 12410845, 2572149, -3947075, 6773701, 15773804, -5219459, +5155572, 5684389, 4837207, -1722282, 4371740, -2094870, 10888816, -3411278, 1956358, 10292352, +-1929514, -3799972, 3307125, 4548907, -6802155, -1381906, -19216220, 12332999, 8491150, 249645, +-10568304, -4221416, 1162326, 4252018, 15005005, -2229625, -3841312, 5360119, 4015795, -2015950, +15188615, 3049964, -18036178, 4992900, 18277234, 25606596, -47421808, 72998336, -54465016, -5488968, +-32755032, 6787659, 983011, -19688130, -27981712, 33326262, 22473954, 10657961, -14156212, 14860587, +4788889, 31484258, -24435142, -16042240, 19652696, 32720134, -41135588, 16988744, -1235340, 19945828, +-14679124, 6021544, -18105972, 4036196, -34132640, 11533061, 37091336, -976031, -2601140, 46056008, +8207146, -20868172, -44515188, 38516192, -20000588, 17509508, -16201690, 45994268, 20402706, -4779762, +4920959, -26227218, 3752728, 11639361, -12575664, 13029320, -55143620, 21973052, 50417548, 39510476, +-21520470, -22292490, -22454090, 25666724, 2260764, -7794829, 2261300, 65102040, -31431644, -14504105, +25311316, -21328808, -58341764, 25138980, 13291850, -41567232, 23678154, 40801116, 35953172, -10646150, +-15790447, -28258200, 15499463, -17329120, -11087458, 26288422, 17892834, 8331700, 23003308, 13171054, +-8648454, -7926362, -29266980, 7177964, -12195023, 10512469, -10741713, 21318070, 14674830, 3524558, +-3780108, 20291572, -10760504, -1225139, 2734284, 7994545, 4780836, 9557376, 8614094, 1024350, +-4680441, -2530273, 7246147, 4092567, 2990371, 1325534, 11318849, 36531920, -971200, -2503966, +5523865, -12212203, 4567698, 13388487, -18544596, 8575976, 9743133, -6766721, -5137855, 8884140, +4871567, -10378788, -46938624, 25035364, -2776160, 6518687, -17227650, 15001247, 278099, 8225936, +2454574, 2724083, -9822590, 7472170, 25339234, -32410896, 27805618, -4752382, -17176648, 5740224, +-11709691, 7558069, -11999065, -9783399, 8164733, -25829934, -2738042, 34463892, -49811420, 14057965, +2274722, -8283382, -15384573, -18036716, -11864310, 36178656, -29868276, -4210679, 11562052, -30175904, +7549479, 16656420, 10972031, 5749888, 5097590, -16981764, 13291850, -44397076, 481573, 39023536, +-16429324, -4285841, -8888972, -10889353, -468151, -31378494, 16523276, 12759274, -26196616, 24536612, +6630893, -29553134, 12029667, -5635534, 21342766, 18895708, -27786290, 9778567, 30467424, -28732794, +15964393, -20412368, 15993384, 18914500, -29529510, 16680579, -2327872, -15368467, 22157736, 1357210, +-35490388, 11026792, 15465103, 4930086, -10038412, 1910724, 26504780, -12156368, -25236690, 26823144, +-1364726, 2240899, -1401233, -3124589, 16123844, -11980274, -6105833, 11826192, 4182761, -2600066, +-12237972, 17923972, -6973953, -11314554, 697395, 9569724, -5816460, -4009352, -3038689, 14093398, +-11050414, -5274220, 709207, 7803419, -6930467, 5694590, -557272, 14017163, -8966281, 2510945, +839666, 1700807, 24089398, -8378945, -106415864, -234564272, -92240864, -155486400, -212211120, 81916304, +29929480, 70902392, 318740256, 265725872, 175572896, 273875584, 186482656, 23269596, 47242492, 34529388, +-144333984, -92707408, -63526324, -165281072, -168730480, -45921792, -46419468, -104464880, -30429844, -21673478, +-126058904, -108241232, -34498788, -59095528, -119012472, -28282896, -19160386, -93015032, -9922448, 66413080, +-27414776, -21930104, 97543536, 60239064, -38458748, 86545200, 142094160, 16731582, 80344880, 174187232, +85668488, 44741748, 187810336, 137587664, 102572944, 227844800, 307889568, 243753360, 282925600, 366358016, +239577040, 157158224, 205816976, 132957152, -35803384, -8074002, -89920512, -224297152, -317518880, -341648000, +-457647008, -520731488, -552917952, -534852288, -513977664, -511009856, -426680320, -326364352, -306217760, -199535056, +16931834, 85929944, 111173616, 335034304, 328798016, 227063104, 334043776, 306245664, 166558832, 161895568, +213347136, 129408440, 61351996, 149486880, 152477248, 68977712, 123349848, 185794384, 123454536, 73828344, +158160016, 131148976, 26970784, 80641232, 116485952, 13713294, 22687628, 127436512, 78206520, 42454676, +135013376, 133860168, 49293340, 106783624, 92249456, -23176718, -65720516, -68127312, -157736432, -213777696, +-211134144, -243776432, -268844544, -278795456, -272988672, -280032416, -311534912, -322285760, -308402816, -344053184, +-294648704, -200646384, -153515552, -52246128, 88911728, 186234080, 272623584, 352035936, 357820704, 306426592, +278176992, 228533056, 172809088, 139306192, 116966992, 94453312, 73554000, 66612260, 61385820, 45123464, +37513856, 33026152, 15964930, -3494493, -15859704, -34508452, -52265992, -54976120, -43868260, -32267016, +-24082956, -21229486, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -3984119, -2426657, 3886946, -1370095, 3454228, -561030, 3645890, 1834488, -801548, -1427540, 3693135, -312459, 736587, -4197794, -673236, -301721, -187368, 5740224, 2804077, -208843, -4306242, --3131031, -1852742, 526134, -98784, 1243930, 2638721, 804233, 973347, -4345433, -668941, --4229469, 169651, -2338610, 2769717, 2766496, -1103807, -2281702, 2895345, 620623, -1087164, --3910031, -531502, -2507724, 701690, 2392297, -3968550, -1935957, -664109, -1551557, 10126996, -2413235, 5845988, 426276, 1917166, -42950, -2927557, -2713883, -3456375, 1633161, -2851858, -2051384, 62814, 2503966, 2559264, 6219113, 1874753, -514859, -316754, -3693135, 6021008, -5542119, 966905, 1709397, 1567663, 1715303, -353798, -3091840, 918049, 1788854, -1165010, -517544, -955093, -2826089, 1341640, -2357400, -1604707, -734439, 183610, -1054951, -1148904, --1343788, -34360, -75162, -216896, 270583, -477278, 898185, -506806, -841277, -88047, -1126892, 417686, -463856, -1523640, -448824, 1395328, 92342, 624918, 552977, 13995151, --3311420, -2928094, -1137093, -2772402, 642098, -6654515, 518617, 1324461, 338229, 4521527, -517544, -934692, -3995930, 2557653, -5632850, -4856535, 1752884, -2369211, -1132798, -840203, -938450, 3795677, 5195300, 389768, -806380, 6175626, 2226404, -360240, 224949, -2524904, -77846, 6778532, 2684, -3151432, -2548526, -732829, 2299955, -3138011, -3867081, -3950833, --3231963, 3092913, -3040837, 1156420, -3694746, 1299228, 4472672, 291521, 3178276, -1352378, --2522220, -1248762, 2204929, -135291, 3412352, 4990215, 731755, -1510755, -2582349, -130997, --382252, 227633, 158377, -4401805, -464930, -2057826, -2238752, 2131378, 452045, 1367410, -1620276, -5237713, -2918967, 2168959, -979789, 3868155, 702764, 3258807, -666794, -833224, --900869, -1897839, -445066, -2090039, -840203, 57982, 3051574, -738198, -68719, -529892, -966905, -28454, 1176284, 233539, -257161, -772020, 947577, -1500017, 6979, 76773, --851477, 701153, 897648, -1267015, 424128, -626528, 545461, 528281, -3758, 897648, -96100, -469225, -9992241, -4937065, -2165737, -6834904, -2381559, -6562173, 1906966, -594853, --4095788, -4720169, -720481, -3859565, -113817, 3171297, -261993, -5861020, -2190433, 66035, --2306934, -1913408, 1668058, 5483063, 7030862, -1156957, -1906429, 3941706, 4482335, -1424855, --1068373, -918049, -3205119, 948651, 1445257, -2886755, -2171106, -687732, 2697240, 6002217, -370441, -2048699, -20401, -3056406, -1142998, -4847945, -2295660, -2162516, -7659001, -831613, --3489661, -2426120, -8406325, 5183489, -3673271, -3255585, 1466731, -541166, -628139, 1078574, --6988986, -1828582, -2521146, -571231, -4046396, -568009, -1919314, 1828046, 2393371, -2285460, --1235340, -3347390, 1155346, -514859, -705448, -6442, -5182415, -137976, -4686346, 700080, --341450, -1483374, 1350230, 5652177, 2675765, -1347009, 282931, -1003949, -2228551, 206158, -852551, -1119913, -183610, -1384053, 12348, -576599, -1733019, 676994, 634045, -1809792, --867583, 479963, -780610, 236760, -1199370, -923955, -979253, -1690070, -1847910, -148176, -438624, -936840, -1125818, -8053, -545998, -237834, -620086, -17717, -363462, -619012, --1530619, 802085, -557272, -727997, -758062, -18480170, -1451699, -9104257, 8192650, -4735739, -14740328, -9415642, 9295383, -8344048, -493921, -112206, -6430103, 5021891, 192737, -2385854, -1517734, -2085744, -834834, -6257231, -49392, -4717485, 3757560, 1327145, 4597763, -2674154, -6855305, 6179384, -5972152, 1701881, -5076652, 5432597, 59056, -3762928, 326418, -512175, --186831, 3993246, 591632, -5883032, 2445447, 4271882, -272194, 5041218, -2325725, 4115116, --6114423, -3091840, 4024384, -3497714, 1024350, 5427765, -4909685, 8008504, 3165391, -7860864, -1924682, -7571491, 2740189, 4261145, 2870112, 4103841, 5873368, 2005750, -714575, -447213, -395674, 1884417, 4223027, -1430224, 7973607, 1571958, 5465883, 2992519, 1592359, 419296, -5483600, 1016834, 1365800, -3109556, -4267587, 2210835, 2961380, 353261, 4714801, -525597, --32212, -838056, 5597416, 1724966, -1993939, 1303523, 958851, 841277, 1910724, 328565, -3484829, -508417, 1203128, 695785, 1335198, -842350, 667867, 367757, 82141, 348429, --1182190, -1028645, 443992, -1275068, -581968, -1385127, 913217, 20401, 12213276, 68719, --3323768, -1114007, -4555350, -5438503, 8919036, -1730872, -1298691, 8186208, -634045, -1579474, -3619584, 6371047, 1816771, 3165928, -163746, -6949257, -1843078, 5228586, -7924752, -7844221, --2944200, 1723356, -5589363, -3353296, 108448, -777926, 5486821, -2111513, -1207423, 5794985, -8048232, -6971806, 1819992, -1656784, 2933463, 810138, -3102577, -666794, 3343632, 5143224, --1385127, -7238094, -1637993, -630286, -1919850, -3607773, 518080, -450435, 1312649, -988916, -999654, 6782290, -5017059, 658741, -3823595, -3082176, -5252745, -1570347, -3039226, -7237557, --270046, 507343, -2832531, -544924, -2997887, 2807298, 3510599, -542777, 1036698, -2599529, --736587, 8763344, -1170916, -3617973, -11895986, -5399848, -170725, -4049617, 2727304, -1141388, -1006633, -3221, -2404645, -440771, 3443490, -2913062, 662499, -814433, 317828, 16643, --2507187, -1832877, -1067299, -1911261, -403727, -3031173, -654446, -1715303, 315143, -1194001, --415001, -1630477, -1788317, -1727651, -468151, -177167, 600222, 455803, -261993, 503585, -380641, -86436, 1673964, 1480690, -47245, 881005, -725850, -914828, 184684, 15832323, -17791902, 3386582, -6470905, 4053912, 7016366, 7037841, 3972308, 5317170, 2382633, 8703751, --878321, -1061931, -3544422, 5465883, -3197603, -7655243, -10550587, 1221381, -5056787, -4349728, -3739843, -1101659, -2801393, 8894877, -630823, 11048803, 124554, -4350802, -2975876, 3886409, -2580739, -2160369, -8731132, 12620225, 7297150, 89121, 6842957, 4097936, 4453881, -4115116, -5027796, 2580202, 1020592, -1502165, -2237678, -5536750, -7830263, 2241436, 3810710, -6087043, -2468533, 5305895, 7890392, 2113124, 7130183, 3332358, 6077379, -8876087, 2664490, 853625, -1808181, 259846, -590021, 3819300, 3457449, 3379066, 4878546, -1566053, 2381023, 1436130, -7010461, 8600672, -4306779, -5029407, 789737, -2025614, -4525822, 1951526, 4763119, -2882997, -2032593, -8517457, -6263673, 1495722, -4314832, -1996623, -1377074, -3843996, 40802, -4832, -521839, -45097, 1729798, 2065879, -105764, 1068910, 380641, 1576253, 1652489, 72478, -152471, -52076, 1804423, 950262, 1012002, 2244121, -346282, -1064615, 1684701, -420907, -28991, 2570001, 1586990, 2436320, 3294240, 563178, 1497870, 933082, 2195265, 14540075, -4598836, 6422587, -5314485, 2110977, -13156022, 712965, -9502078, 7206955, 4853850, -4001836, -6072547, 3449933, -6429029, -1593970, 9322763, -300111, 6424734, -1752347, 1302986, 7430294, --9220758, -708670, 1530082, 2717641, 636729, 2989297, 409096, 9009231, -4154307, -2587181, --2699387, 6811818, 888521, -3198140, 4160213, 11485816, -7994545, 1419487, 1572495, -697932, -4664335, -2323577, 8803072, 2947958, 2251100, -7196755, -681826, -1910724, 4101694, 3055869, -4429185, -4946192, -3190624, 4174171, -8579734, -4833449, 1994476, 9259413, 5658620, 8186745, --8894877, -2840584, -9038759, -2364380, 2800856, -788127, -8523363, 1110786, -5203890, -90194, --9329206, -11382737, -4590247, -8222178, 523986, 2881386, 1688996, -3529926, 4591320, 7264401, -2102923, 2127620, 4251481, -1341640, -6924024, -451508, -4742181, 2487860, 865973, -499290, -1369021, 623307, -5049271, -2647847, -1384053, 2535641, 444529, -1829656, -539555, -191663, --670552, 387621, -962073, -513249, 442919, 2299955, 678605, 719407, 616328, -497679, -780073, 1519345, 898185, 1989107, 702764, 1007170, 218506, 1563905, -2406792, -17141752, --15458661, -11124502, 3373697, 3416647, 12809203, -5685463, 12164421, -4996658, -20118164, -1811403, --1889786, -7799124, -13024488, -4772783, -306553, -8041253, -91805, -12359305, 878858, -13028246, -7421704, -3301219, 5399848, -2580202, -256624, -4071629, -4719632, 7998303, 1547262, -2371896, -9080098, 985695, 1437203, 3092913, 8353175, 7326678, 5583995, 103616, -9954124, -1075352, -4735202, 1404454, 6049462, -2959233, 2676838, -14614700, 4573067, 8741869, -11070815, 6448357, -2234457, 10347113, 7914551, -75699, -2785286, -315680, 7015829, 3417183, -9342628, -7631620, --12903155, -6293738, -8677981, -2028298, -10727218, -2348810, -3632469, 10806675, -5129802, 5301064, --2875481, -1669669, -3602404, -7603703, -4079682, -2499134, -2563559, 6769942, -20649130, -4473209, -9569187, 355945, 1785096, 5066988, 9689446, -6209449, 1100585, 2499134, -520228, -186294, --1496259, 2575370, 3965866, -1859721, 258235, -491237, 4437238, -1770600, -207232, 4440460, -855235, 1497870, 2026151, 2029909, -823023, 278099, -1292248, -1868311, -1078037, -3231426, -825171, 1942936, 1336809, 714038, -4147865, -92342, -621697, -300111, -1988570, 1020592, -1738925, -1094143, -280247, 2042794, 2205466, -22512608, 17440252, -4793184, 10349261, 6059662, --324807, -14860587, 11872900, 1694365, -945967, 7530689, 5365488, -6087580, -17717, 12776454, -4296041, -5647345, 9089761, -4846334, -3881577, -2637647, 2972117, 141734, -1564442, 1301375, -3942243, 3532074, 3630858, -9265855, 5851893, -7685844, 10640245, -6494528, 10590316, 3457986, -1078037, -10239202, -10406169, -3402151, -3419331, 12306155, 3531000, 9855876, 4175245, -8672076, -404264, -1921461, 4265977, 306553, 3764002, -1026497, -5813775, -3378529, 6277632, 15568720, -11245835, 1319092, 3907347, -1064615, -2109366, 8012799, 6737730, -2794413, 9883793, 13909788, -19430968, 469225, -11039140, -13320841, 4728222, 2480881, -496606, 3419331, 132607, -4230006, --432718, 11759620, -2065342, -5056250, 20908974, 5323612, -3457986, 6190122, 212064, -154619, --586800, -3239479, -396748, 6406481, 3218541, -1964411, -2976949, 4517769, 3676492, -217970, -8542153, 2527588, 1676111, 1003949, 3881577, 1551020, 3642669, 2547989, 1330366, 809064, -4570382, 2590402, 2479807, 770410, 4539244, -454193, 1837709, 2772402, 1941325, -224412, -5064304, 5821828, 1860795, -767189, 6039261, 624918, -2615635, -299574, 4451734, 418222, --221728, -718870, -635655, 423054, 1279900, 3015604, 10501732, -15330886, 12924630, 5326297, --10466835, 24552180, 3701188, -12504797, 2915746, 6856916, 667331, 4961761, 17619566, -16809966, -11004243, -6777996, 9761924, -3680250, 2094333, -15560667, 2665027, -1651415, 6283537, -5935645, -884763, 1245004, 175020, -9107478, 8799314, 978716, -943282, 4197794, -1745904, 4139812, --2173790, 12451110, 9781788, 12328167, 12204686, -1904818, 4265440, 5357972, 541703, -6335077, -8628052, -10153303, 3156801, 10227391, -6038187, 5460514, -11341935, 3710315, -996432, -2605972, --989990, 964220, 3490735, 3470871, 11927124, -7732015, -398358, 8009577, 16996260, -14975477, -3844533, -3594351, 5148055, -2659122, 24823838, -15178951, 5428839, -8403104, -4759361, 2345052, -2565706, 1504312, -21769578, -11324218, 17916456, 9978820, -2017561, -9569187, -11285027, -4308926, -3963181, -11937325, -6650757, 6105296, 3272765, -86973, -405338, -8296803, 1517734, -2293513, --3257196, 4045322, -2152316, -2433099, -1072668, -7221988, 2429341, -1732482, -2601677, -2502892, -3275450, -3376918, 4006668, -445066, -1162326, 1610076, 1338956, 5522254, -5598490, -954557, --4297115, -671626, 2518998, 2237678, 6825777, -2057826, 3690451, 1095217, -2720862, 11457899, --15131707, -3231426, 21337398, -6439230, -452582, 11418707, 2662880, 7036230, -15968152, 15269146, -971736, 1116155, -4072166, -9618579, -1344862, -1511829, -10297184, -6226629, 11368242, -3649649, -2163590, -5620502, -25071872, 8452496, 1115618, -7765838, 4760971, 9673877, -932008, 1043677, --1981591, 2411624, 6553047, 2063732, 10543608, 7206419, 1632088, 9207336, -7464653, -7360500, --10460393, 3912715, 6012418, 1724429, -16579648, 4663798, -14169097, 20467130, -4881767, 7253126, -17467632, -6925635, 11091216, 2740726, 12077448, 4838818, -5858336, -17986786, -12905840, -10078141, --1403381, -10578504, -2124398, -9252433, -6001680, 18020610, 3896609, -7735773, -6852084, 3605088, -6691559, -1607392, 2603824, -32871532, 13201119, 2197413, -10547366, -12986370, -3391414, -21725018, -2327872, 10737418, 1178969, -9359807, 5745593, 4809827, -7668127, 3790309, 2269353, -1953673, -245350, -4947803, 1280974, 1660005, 1261647, -6436009, -3506304, 2581275, -4012036, 878321, --2425046, -1590749, 1534377, 5341866, -6837051, 2335925, 5305895, -6407018, -5995775, 745177, --5502927, 1220308, -3655554, 3750043, 2050310, -6416681, 3568581, -4230006, -2714419, 4352950, -1016297, 9852118, 3062312, -60130, -622233, 731755, -2595234, 7099581, -20359218, -24948392, -14945412, -12293807, -14292577, -4144107, 9353902, 19340238, -12859132, 955630, 9172976, -2869575, --4102231, 4910758, 3176665, 14513768, 4813585, -14136348, -607201, -7217156, -556735, -8439074, --11075110, 1599875, 10936060, -902480, 4838281, -9226663, 2605972, 10790568, 8365523, 1180579, -787053, 6705518, 6381785, 4015795, 9885404, -12701292, 13737990, 9838696, 3324305, -10517301, -688269, 7926899, -8315594, 9225053, -6619619, 10461467, -2899103, 13690208, -21760988, 22907208, -5310727, 21595096, 1313186, -4701379, -1604170, 7730405, 425202, -18229452, 617402, -1396938, --18894098, 5828271, 13262859, -17954038, 14768245, -15819975, 4793721, 5945309, 3156801, -19770272, --9591199, -9766756, 1787243, 1342177, -11589432, -16950626, 3176128, -14923938, 9982041, -7269769, --3997004, 4963909, -9357123, -7248831, -9599789, -4024384, -5409512, 169114, -7706782, -5773510, --7045357, -10349797, -5117991, -2261837, -2454037, -2711735, -3129421, -2110440, -5021354, -5458367, -3383897, -6509560, -3629247, -1762010, 4779762, -2531883, 3221, -8280697, -6041945, -2786360, --315143, -1978906, -7133941, -1090922, -763430, 5539971, 3481071, -4714801, -4474282, 801548, --2469606, 4054449, -2511482, 2115808, -4485020, -11515344, 17443472, 3520263, 11479374, 11126650, -3122978, -8591545, 1893007, 29444148, -20253992, 4872104, -3565897, -11059541, 653909, 3953518, -4748087, -140660, 67646, -5801964, -8509941, -13238700, -6695854, 10001368, -8393440, -13300977, -7644505, -4766340, 2929705, -1759326, 5939940, -5661304, 12524125, -4517769, 1352378, -281857, -1321239, 11547020, 3924526, -5356361, 6152541, -4901632, 9456444, -5686000, 3877282, -13533979, --9898289, -7247221, 2362769, -6759742, -11812234, 4978941, 8751533, 2574296, -6284074, 4051228, -6180995, 7036230, 18924162, 26126822, 35485020, -3584150, 5655935, 8607651, 5015448, 4834523, -5703180, -7204271, 14081050, -1925756, 18382996, 22752590, 16642461, 6823630, 9368397, 3219078, -31733902, 9219684, -5810554, -4929549, -4511327, -1711008, -2042794, 1804423, -2533494, -5802501, -5307506, -9256191, 2792803, -1978906, 2946885, -4515085, -3733400, -2761127, 7196218, -6830072, --6739878, -315143, 2967286, -3340948, -8652748, -2681133, 498753, -3911642, 4621385, 8978629, --4996121, -340913, 1865090, -642635, 2950106, 5332202, -2368138, -5790153, -991064, 3206730, --2938831, 8217346, 9473624, 6070400, -2690260, -6095096, -814433, 9571871, 1088774, 67646, -4170413, 1636919, -49392, -1208496, 2347737, 2708514, -6229850, -276489, 35423280, 28350006, --12381854, -5713917, -14765561, 8472897, 4130685, 17324824, -3068217, -7555385, -3412352, -11288248, -2525978, 389768, 16363825, -6175089, 6097243, -22084184, 12136504, -1777043, 8541616, -157840, -7741679, 1268626, -12544526, -6527814, -10759967, -8227547, 9066676, 21792664, 9523016, -2658048, --6769406, -357019, -1829656, 5387500, 7392176, -14038101, -265214, -4938139, -4663261, -15241765, --11703786, -24659554, 468151, -1307818, 8879845, -7445326, 15781320, -12051141, -5251672, 31473520, -31267898, -21688512, 4851166, 18037788, -10489921, -5102958, 9347996, -3569655, -13178033, 35005056, --8705899, -53404160, 17772038, -778463, -27448062, 20932596, 22484690, -8059506, 15755551, 19877108, --9401147, 600222, 12713640, -13835163, 5793911, 10903848, -19608674, -2816962, -6431714, 955630, --7141457, -8590, 2812130, -8432095, 6759205, -9761387, -4375498, 4563940, 9564892, -5609764, -610959, 1772748, -1357747, 3091303, -6866042, 10070625, -5113696, 10640245, 10530186, -403190, -625455, 6933688, -5098663, 1377074, -186294, 8717173, -6555194, 5215164, 1740536, -20973400, -4126390, -2772402, -3801046, 944893, -474057, 2039573, -11627550, 1411971, -2938831, -10566693, -1903207, 17591112, -16605417, 5296769, 9898289, -14501420, 71404, 7590818, -13328357, -6648073, -2406256, 6136972, 11695196, 5639829, -9622337, -1865090, 8625368, -10114648, 9930501, -5098663, --12921946, 11421392, 5848672, 5623723, -3320547, -3353833, -4655208, -760746, 9586904, -20193862, -9848360, -561567, 16610786, -10701985, -88584, -13273060, 5592585, -21512418, 2236067, 807454, --8626979, -6585259, 3299609, -14532559, -24986510, 14916421, -1527398, 4384088, -14835354, 8869644, --2516314, 9541807, 10242423, 5009006, -10507637, 8429947, -5113159, -2415919, -19353122, 2624762, --13816910, -15138149, -22028888, -9125195, 3359738, 5927055, -22736484, -11307038, 1070521, -8231305, --30485140, -24201604, -24881820, -5272073, -14937359, 12958453, 18304076, 4915053, -18438832, -21352966, --24884504, -2462090, -1989107, 13342853, -12096775, -20769388, -10297721, -13885092, 4507032, 99321, -4715337, 2305324, -6976638, 1306744, 4858145, -5492727, -2432025, -4679367, -3031710, -3427921, --6790880, -471373, 7968238, 113817, 2183454, 2218888, -1623498, 5972152, -4197794, 9323300, -8298951, -3525095, -7859254, -544387, -3153580, -4436701, -5028333, -4430259, 6621229, 138513, -6221260, -6885907, -7525857, -1497333, 3323231, -11847667, 1777043, 1011465, -8791261, 1711008, --7281044, -15429133, 9170292, -3806415, 925565, -2695629, 1353452, -7968238, -2287607, -15480136, -26925150, 29920890, -7077569, 20207284, -5610301, -7770133, -7721815, 19681688, -16955458, -3796214, --8009577, 31157304, 1295470, 11481521, 4204773, -2769717, 15612743, 8811125, 12808129, 4146254, --1833951, -5275294, 12264816, -1860258, -11747809, 15006616, -259309, 13165685, -14384382, 10304700, -3747359, -14606647, -11259794, 27157616, 17666274, -1474248, 9822053, 8269960, -17005924, -11059541, -5822902, 4512400, 12142409, 1695438, 2779918, 4888210, 14784888, 6235219, 3903052, -14377940, -40492952, 27303644, 3257733, -17933100, 9172976, -5888937, 5171678, -3933653, 8789114, -5716602, -1509681, 22489522, -15278809, -7214472, -20585778, 6023155, -5499169, -3408057, 19094888, 6203544, -2545305, 1872606, -7683160, -15221901, 11317776, 220654, 348966, 12259984, 12050068, -709743, --8655970, -9934796, 19719806, -1798518, -1039919, -3566970, 14846091, -939524, -10210748, 7007239, -5568962, 9490804, 4291746, 3519726, 13711146, -2525441, -4905390, 5021354, -273804, 824097, -1259499, 6533719, -3464428, 246424, -4436701, 1762010, 6604049, -2762738, 1593970, 8519605, --2872260, 2058363, 6008659, 714575, -1603097, -12395276, 8269960, -6798933, 5421323, -8174397, --1853815, 3743064, -5353677, -1806034, 12085501, 9118216, 1024887, -1545115, 11283953, 2588255, -5373541, 5356361, 2510409, -1683627, 4825396, -9709847, -21046950, 54731840, -61380452, -7084549, --32293322, 39696772, 10720775, 7017440, -15394237, 3734474, -12553653, 35561256, -6224482, -2265059, -3703873, -1745367, -13836774, 5330055, 8146479, 10765872, -23923504, -12583717, -12282533, 4938139, --7186554, -6447283, -689342, -210453, 15831249, -8113193, 869194, 11906723, -1391033, -15819438, -2086280, 12528420, -1400696, -24944634, 18751290, 2247342, 446140, -34360, -10425496, 8231305, --46062988, -32235878, -4387309, -11544335, 2213519, 3531000, -21505438, 33996812, -13345000, 46833396, --6484864, -16405164, 16172162, 2674691, 14452565, 21680458, 7019587, -22289806, -6030134, 25028922, -58273044, 1918240, -14705431, 24210194, 2259153, 28554554, 4791036, 38659536, -9808632, -1570347, --863825, 9011378, 1520418, 14835891, 27373438, 1584843, -5552319, -4880694, 8861054, -7415261, --2966212, 17704392, 13180718, 1906966, -3096672, -6739341, -7290707, -4649839, -5881958, 12735115, --7679402, -5573794, 6576132, 2211371, -2184528, 5655935, 6772090, -3704946, 5851356, 9002788, --4437775, 507880, -12604118, 16165720, 199179, 12975633, 1154809, -13751948, 378494, 1296006, -3883187, 1333051, 301185, -11851962, -10545218, -796180, -5997922, 8497593, 3492345, -4161287, --68183, 6638946, 1734093, -4101157, 736587, 4750771, 413391, -2565706, 2226404, 79898200, -24674588, 8687108, -2698313, -8769249, -11677479, 25972740, 23789824, -27792196, 16206522, 12277164, -2631741, -8507256, -14882062, -37839200, -14345191, 11885785, 3690451, -12279848, 22519050, -7551626, -8973797, 8949101, -5739687, -5489505, 23502598, 464393, -9286256, 14668387, -13185013, 28981366, --14540612, -8839580, -1845762, 11203422, 5770826, 29313152, -9332964, -17795660, -6537477, 7627325, -1750736, 15627239, 4060355, 1218697, -6702834, 12558484, 55051816, 23351738, -20852604, 17580912, --11078331, -16974248, 13357348, -788663, 3683471, -1297080, 9534291, -14851460, -22606560, -59310816, --15871515, 20892332, -8126615, -20497732, 8551817, -4939750, 8512088, -23896662, -21081846, -10002442, -8576513, 9198209, 27870580, 4734128, -2326799, -22310208, -31587336, -4124779, -14396730, 2483028, -10911364, -15137075, -15667504, -3542274, -19408958, -32042604, -10938208, -8699456, -17367774, -4217658, -9068287, -9128416, -5060545, -10458782, -2759517, -22910430, -14816563, -14687714, 20401, 1835562, -7798050, -12936441, 6732898, -17355962, 311922, -10333154, -1712081, 5018133, -5690832, 7754564, --22882512, -4741644, 7227893, 2913599, 6605123, -3148748, -6569690, 10705206, -2625299, -2594160, -7231115, -11539503, -9378061, -1970853, 1651415, -15219753, -7559680, -8444443, -5019206, -1601486, --683974, 928250, -7220914, 328565, -12486007, 17802640, -14169634, 48931488, 41087804, 19277960, --11148661, -17138530, 29390462, 25200184, -32877974, -6611566, -20114406, 28394028, -4718022, -40101572, --17421998, 14403710, 25223270, -46370616, 18743238, -32076426, 12021077, -18902152, -4806606, 22450330, --7418483, 3499325, 14400488, 29885456, -19376744, -32617592, 7450695, -2482491, 3691525, 30631170, -7827041, 22881976, -28744606, -5242545, 9405978, -25680146, 42248520, -4827007, 25376814, -3437048, --5767068, 20782810, 20844014, -11816529, 46530064, -10777147, -20024748, 22459458, 40008156, 2346126, -7384660, 2017024, 17744120, -18663244, 14271103, 60564408, 27997282, -1807108, 26599806, 32632624, --23926190, -73909408, 5797132, 44705776, 50633908, 13882945, -4658966, -21719650, 26394722, 55794848, -26225070, 13667660, -54363548, 10385768, -30690762, -19180250, -47889960, 40993852, 9156333, -14025216, --18888730, 14467597, -13571023, 7872138, 5770289, 7341173, -17548700, -3716221, -1916092, 9607842, --5833640, 8135205, 7358890, -8049843, -4922570, 11266236, 833761, 12087649, -4748087, 4538170, --7508140, 4336843, 23051090, 4345970, 4648229, -2808909, -23962160, -12268037, -14624364, 8114804, -41517840, 38778724, 35459248, -2680060, -24999394, -24051280, -10991895, 16312286, 18654116, -1305670, --7952669, -12996571, -18451180, 5049271, 11157251, 8866423, 8861591, 6523519, 723165, 33820184, --67343480, 51163260, 10522670, -30957050, 303869, 28542206, -19221052, 657130, 15801722, -20168630, -1591285, -18146236, -11525545, 18826990, -16419123, -9455907, -34367256, 14650670, 33199560, 9170292, --15074261, -25624848, -4158602, 18891950, 10243497, -21931176, -665720, 25934624, -3548180, 1549410, --9005473, -6644852, 61385820, -29752850, -7606387, -7115150, 10254771, 28280212, -30421790, -17318382, -40373768, -5072893, -2663954, -48708688, -40080636, 16428787, 27136678, 14533632, -49627272, 33636572, --967978, -7942469, 7045357, -35811436, -9876277, -4978941, -17617956, 31491238, -24943022, -14232448, --26812944, -15878494, -35336308, 10219875, -55222544, -15911243, 6431177, -27924804, 6752226, 14822469, -6678138, -869194, -9921911, -20330228, 29180008, -6835978, -2840584, -11011759, 17665738, 34904124, -5305359, -48394080, 4214974, -21862458, 3188476, 3877282, -8735963, 2775623, -14331232, -5419175, --1206349, -11449309, 214748, -3711926, 8429410, 6884833, -2601677, 3152506, 15688979, -7711077, --5598490, 15366319, -11598559, 9971840, -5604933, -6072010, 1229434, -7496866, -3239479, 9053254, --18944028, 5017059, 4538707, 6326487, 13681618, -10311143, 1715303, 9422085, 3795141, -4231617, --8875013, -2560338, -2058900, -552977, -9085466, 1956358, -1478543, -38579544, 23527830, -635655, -30430918, -6174016, 31474594, 4013110, -3926137, 14116484, 36508296, 17521856, 9422085, 7355132, -4740570, 14403173, -18246094, -1414118, -13661754, -14367739, 22489522, 14011257, 8660802, -6375879, --5543729, -2585570, 23516556, 3657165, -10285910, -16872780, -687195, -3939559, 17706540, 2747705, -14821395, 27748710, -7631620, -70057360, 4686883, 57057568, 6024766, -41737420, -5338645, 16169478, -12716324, 22456774, 20423644, -1595580, -13161927, -13489955, 17879412, -10768557, 2048699, 6305549, --72768024, -12556874, -13955959, 11631308, 57273924, -979253, 4634807, -13214541, 3923990, 11871290, -24040542, 12608950, -14164802, -7396471, -35332548, -2075006, 24324010, -10655814, -5033165, 9020505, -24703042, 20081656, -5317170, -25060060, 158377, 9245991, 2802466, -16626892, 2065342, 2099702, --1265942, -14343043, -18692772, 16306917, 13326210, -598611, -2928631, -14023068, 11178189, 4706211, -2542621, 4430796, 3560528, 6564858, 412854, -15537044, 8732205, 523449, -983011, 990527, -4152160, 2079301, -2123325, 73551, 602369, -5024038, -3036005, -21505974, 3391414, 15382962, --10743861, 5567888, -17506824, 9979357, 4551592, -2474975, -4852776, -1632088, -1733556, 2207613, --3860639, 19588808, -2420214, -115112640, -216399248, -87050400, -146506704, -168368080, 104485280, 36430988, -95991448, 288896672, 189061776, 152517504, 228663520, 114071112, 7255274, 90339272, 22410066, -91710440, --64458332, -73116984, -167773776, -136342656, -58970436, -122106456, -134511936, -55723444, -82837032, -138922864, --71840304, 10570988, -87389696, -80032960, 17497696, -17469242, -79701168, 89006752, 58093192, -67019208, -66034584, 100189776, 15087146, 57204132, 201543488, 95589328, 60335164, 237037104, 166104096, 96052648, -233728368, 313306592, 193965024, 280924672, 363995808, 260001216, 172434352, 227247264, 119601416, -116052160, --76428408, -153231552, -356656224, -357711712, -362243456, -546825600, -539878976, -542499456, -565066816, -533560576, --518955008, -408637152, -327060672, -247448096, -102014600, 29774860, 79170744, 201628848, 350529984, 296884768, -398152064, 566101376, 475904384, 444356256, 541167488, 400782176, 205583984, 222685472, 209030160, 78274168, -55764244, 112037984, 41405096, -10045929, 37473052, 13161927, -78136192, -69956424, -42159936, -139772192, --160428304, -70185672, -122082832, -168148512, -69500088, -44829260, -91661048, -1542967, 29429116, -30469034, --4674535, -22543210, -128282080, -184868816, -207100096, -258740112, -304497088, -273414944, -249868848, -232778096, --174697264, -111378704, -79285632, -14591615, 61543660, 95661272, 138835888, 228612512, 278014304, 324187360, -347507424, 329170592, 293462752, 224423312, 153472064, 85607824, 11964705, -14595373, -24757802, -40394704, --45456860, -46375448, -53682260, -57008176, -51444044, -46326592, -51407000, -55174760, -52517248, -55126444, --60093572, -57780732, -54537496, -42010684, -24932286, -15557982, -3936338, 4896263, 3944391, 1649268, -438624, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +2426657, 3886946, -1370095, 3454228, -561030, 3645890, 1834488, -801548, -1427540, 3693135, +312459, 736587, -4197794, -673236, -301721, -187368, 5740224, 2804077, -208843, -4306242, +-3131031, -1852742, 526134, -98784, 1243930, 2638721, 804233, 973347, -4345433, -668941, +-4229469, 169651, -2338610, 2769717, 2766496, -1103807, -2281702, 2895345, 620623, -1087164, +-3910031, -531502, -2507724, 701690, 2392297, -3968550, -1935957, -664109, -1551557, 10126996, +2413235, 5845988, 426276, 1917166, -42950, -2927557, -2713883, -3456375, 1633161, -2851858, +2051384, 62814, 2503966, 2559264, 6219113, 1874753, -514859, -316754, -3693135, 6021008, +5542119, 966905, 1709397, 1567663, 1715303, -353798, -3091840, 918049, 1788854, -1165010, +517544, -955093, -2826089, 1341640, -2357400, -1604707, -734439, 183610, -1054951, -1148904, +-1343788, -34360, -75162, -216896, 270583, -477278, 898185, -506806, -841277, -88047, +1126892, 417686, -463856, -1523640, -448824, 1395328, 92342, 624918, 552977, 13995151, +-3311420, -2928094, -1137093, -2772402, 642098, -6654515, 518617, 1324461, 338229, 4521527, +517544, -934692, -3995930, 2557653, -5632850, -4856535, 1752884, -2369211, -1132798, -840203, +938450, 3795677, 5195300, 389768, -806380, 6175626, 2226404, -360240, 224949, -2524904, +77846, 6778532, 2684, -3151432, -2548526, -732829, 2299955, -3138011, -3867081, -3950833, +-3231963, 3092913, -3040837, 1156420, -3694746, 1299228, 4472672, 291521, 3178276, -1352378, +-2522220, -1248762, 2204929, -135291, 3412352, 4990215, 731755, -1510755, -2582349, -130997, +-382252, 227633, 158377, -4401805, -464930, -2057826, -2238752, 2131378, 452045, 1367410, +1620276, -5237713, -2918967, 2168959, -979789, 3868155, 702764, 3258807, -666794, -833224, +-900869, -1897839, -445066, -2090039, -840203, 57982, 3051574, -738198, -68719, -529892, +966905, -28454, 1176284, 233539, -257161, -772020, 947577, -1500017, 6979, 76773, +-851477, 701153, 897648, -1267015, 424128, -626528, 545461, 528281, -3758, 897648, +96100, -469225, -9992241, -4937065, -2165737, -6834904, -2381559, -6562173, 1906966, -594853, +-4095788, -4720169, -720481, -3859565, -113817, 3171297, -261993, -5861020, -2190433, 66035, +-2306934, -1913408, 1668058, 5483063, 7030862, -1156957, -1906429, 3941706, 4482335, -1424855, +-1068373, -918049, -3205119, 948651, 1445257, -2886755, -2171106, -687732, 2697240, 6002217, +370441, -2048699, -20401, -3056406, -1142998, -4847945, -2295660, -2162516, -7659001, -831613, +-3489661, -2426120, -8406325, 5183489, -3673271, -3255585, 1466731, -541166, -628139, 1078574, +-6988986, -1828582, -2521146, -571231, -4046396, -568009, -1919314, 1828046, 2393371, -2285460, +-1235340, -3347390, 1155346, -514859, -705448, -6442, -5182415, -137976, -4686346, 700080, +-341450, -1483374, 1350230, 5652177, 2675765, -1347009, 282931, -1003949, -2228551, 206158, +852551, -1119913, -183610, -1384053, 12348, -576599, -1733019, 676994, 634045, -1809792, +-867583, 479963, -780610, 236760, -1199370, -923955, -979253, -1690070, -1847910, -148176, +438624, -936840, -1125818, -8053, -545998, -237834, -620086, -17717, -363462, -619012, +-1530619, 802085, -557272, -727997, -758062, -18480170, -1451699, -9104257, 8192650, -4735739, +14740328, -9415642, 9295383, -8344048, -493921, -112206, -6430103, 5021891, 192737, -2385854, +1517734, -2085744, -834834, -6257231, -49392, -4717485, 3757560, 1327145, 4597763, -2674154, +6855305, 6179384, -5972152, 1701881, -5076652, 5432597, 59056, -3762928, 326418, -512175, +-186831, 3993246, 591632, -5883032, 2445447, 4271882, -272194, 5041218, -2325725, 4115116, +-6114423, -3091840, 4024384, -3497714, 1024350, 5427765, -4909685, 8008504, 3165391, -7860864, +1924682, -7571491, 2740189, 4261145, 2870112, 4103841, 5873368, 2005750, -714575, -447213, +395674, 1884417, 4223027, -1430224, 7973607, 1571958, 5465883, 2992519, 1592359, 419296, +5483600, 1016834, 1365800, -3109556, -4267587, 2210835, 2961380, 353261, 4714801, -525597, +-32212, -838056, 5597416, 1724966, -1993939, 1303523, 958851, 841277, 1910724, 328565, +3484829, -508417, 1203128, 695785, 1335198, -842350, 667867, 367757, 82141, 348429, +-1182190, -1028645, 443992, -1275068, -581968, -1385127, 913217, 20401, 12213276, 68719, +-3323768, -1114007, -4555350, -5438503, 8919036, -1730872, -1298691, 8186208, -634045, -1579474, +3619584, 6371047, 1816771, 3165928, -163746, -6949257, -1843078, 5228586, -7924752, -7844221, +-2944200, 1723356, -5589363, -3353296, 108448, -777926, 5486821, -2111513, -1207423, 5794985, +8048232, -6971806, 1819992, -1656784, 2933463, 810138, -3102577, -666794, 3343632, 5143224, +-1385127, -7238094, -1637993, -630286, -1919850, -3607773, 518080, -450435, 1312649, -988916, +999654, 6782290, -5017059, 658741, -3823595, -3082176, -5252745, -1570347, -3039226, -7237557, +-270046, 507343, -2832531, -544924, -2997887, 2807298, 3510599, -542777, 1036698, -2599529, +-736587, 8763344, -1170916, -3617973, -11895986, -5399848, -170725, -4049617, 2727304, -1141388, +1006633, -3221, -2404645, -440771, 3443490, -2913062, 662499, -814433, 317828, 16643, +-2507187, -1832877, -1067299, -1911261, -403727, -3031173, -654446, -1715303, 315143, -1194001, +-415001, -1630477, -1788317, -1727651, -468151, -177167, 600222, 455803, -261993, 503585, +380641, -86436, 1673964, 1480690, -47245, 881005, -725850, -914828, 184684, 15832323, +17791902, 3386582, -6470905, 4053912, 7016366, 7037841, 3972308, 5317170, 2382633, 8703751, +-878321, -1061931, -3544422, 5465883, -3197603, -7655243, -10550587, 1221381, -5056787, -4349728, +3739843, -1101659, -2801393, 8894877, -630823, 11048803, 124554, -4350802, -2975876, 3886409, +2580739, -2160369, -8731132, 12620225, 7297150, 89121, 6842957, 4097936, 4453881, -4115116, +5027796, 2580202, 1020592, -1502165, -2237678, -5536750, -7830263, 2241436, 3810710, -6087043, +2468533, 5305895, 7890392, 2113124, 7130183, 3332358, 6077379, -8876087, 2664490, 853625, +1808181, 259846, -590021, 3819300, 3457449, 3379066, 4878546, -1566053, 2381023, 1436130, +7010461, 8600672, -4306779, -5029407, 789737, -2025614, -4525822, 1951526, 4763119, -2882997, +2032593, -8517457, -6263673, 1495722, -4314832, -1996623, -1377074, -3843996, 40802, -4832, +521839, -45097, 1729798, 2065879, -105764, 1068910, 380641, 1576253, 1652489, 72478, +152471, -52076, 1804423, 950262, 1012002, 2244121, -346282, -1064615, 1684701, -420907, +28991, 2570001, 1586990, 2436320, 3294240, 563178, 1497870, 933082, 2195265, 14540075, +4598836, 6422587, -5314485, 2110977, -13156022, 712965, -9502078, 7206955, 4853850, -4001836, +6072547, 3449933, -6429029, -1593970, 9322763, -300111, 6424734, -1752347, 1302986, 7430294, +-9220758, -708670, 1530082, 2717641, 636729, 2989297, 409096, 9009231, -4154307, -2587181, +-2699387, 6811818, 888521, -3198140, 4160213, 11485816, -7994545, 1419487, 1572495, -697932, +4664335, -2323577, 8803072, 2947958, 2251100, -7196755, -681826, -1910724, 4101694, 3055869, +4429185, -4946192, -3190624, 4174171, -8579734, -4833449, 1994476, 9259413, 5658620, 8186745, +-8894877, -2840584, -9038759, -2364380, 2800856, -788127, -8523363, 1110786, -5203890, -90194, +-9329206, -11382737, -4590247, -8222178, 523986, 2881386, 1688996, -3529926, 4591320, 7264401, +2102923, 2127620, 4251481, -1341640, -6924024, -451508, -4742181, 2487860, 865973, -499290, +1369021, 623307, -5049271, -2647847, -1384053, 2535641, 444529, -1829656, -539555, -191663, +-670552, 387621, -962073, -513249, 442919, 2299955, 678605, 719407, 616328, -497679, +780073, 1519345, 898185, 1989107, 702764, 1007170, 218506, 1563905, -2406792, -17141752, +-15458661, -11124502, 3373697, 3416647, 12809203, -5685463, 12164421, -4996658, -20118164, -1811403, +-1889786, -7799124, -13024488, -4772783, -306553, -8041253, -91805, -12359305, 878858, -13028246, +7421704, -3301219, 5399848, -2580202, -256624, -4071629, -4719632, 7998303, 1547262, -2371896, +9080098, 985695, 1437203, 3092913, 8353175, 7326678, 5583995, 103616, -9954124, -1075352, +4735202, 1404454, 6049462, -2959233, 2676838, -14614700, 4573067, 8741869, -11070815, 6448357, +2234457, 10347113, 7914551, -75699, -2785286, -315680, 7015829, 3417183, -9342628, -7631620, +-12903155, -6293738, -8677981, -2028298, -10727218, -2348810, -3632469, 10806675, -5129802, 5301064, +-2875481, -1669669, -3602404, -7603703, -4079682, -2499134, -2563559, 6769942, -20649130, -4473209, +9569187, 355945, 1785096, 5066988, 9689446, -6209449, 1100585, 2499134, -520228, -186294, +-1496259, 2575370, 3965866, -1859721, 258235, -491237, 4437238, -1770600, -207232, 4440460, +855235, 1497870, 2026151, 2029909, -823023, 278099, -1292248, -1868311, -1078037, -3231426, +825171, 1942936, 1336809, 714038, -4147865, -92342, -621697, -300111, -1988570, 1020592, +1738925, -1094143, -280247, 2042794, 2205466, -22512608, 17440252, -4793184, 10349261, 6059662, +-324807, -14860587, 11872900, 1694365, -945967, 7530689, 5365488, -6087580, -17717, 12776454, +4296041, -5647345, 9089761, -4846334, -3881577, -2637647, 2972117, 141734, -1564442, 1301375, +3942243, 3532074, 3630858, -9265855, 5851893, -7685844, 10640245, -6494528, 10590316, 3457986, +1078037, -10239202, -10406169, -3402151, -3419331, 12306155, 3531000, 9855876, 4175245, -8672076, +404264, -1921461, 4265977, 306553, 3764002, -1026497, -5813775, -3378529, 6277632, 15568720, +11245835, 1319092, 3907347, -1064615, -2109366, 8012799, 6737730, -2794413, 9883793, 13909788, +19430968, 469225, -11039140, -13320841, 4728222, 2480881, -496606, 3419331, 132607, -4230006, +-432718, 11759620, -2065342, -5056250, 20908974, 5323612, -3457986, 6190122, 212064, -154619, +-586800, -3239479, -396748, 6406481, 3218541, -1964411, -2976949, 4517769, 3676492, -217970, +8542153, 2527588, 1676111, 1003949, 3881577, 1551020, 3642669, 2547989, 1330366, 809064, +4570382, 2590402, 2479807, 770410, 4539244, -454193, 1837709, 2772402, 1941325, -224412, +5064304, 5821828, 1860795, -767189, 6039261, 624918, -2615635, -299574, 4451734, 418222, +-221728, -718870, -635655, 423054, 1279900, 3015604, 10501732, -15330886, 12924630, 5326297, +-10466835, 24552180, 3701188, -12504797, 2915746, 6856916, 667331, 4961761, 17619566, -16809966, +11004243, -6777996, 9761924, -3680250, 2094333, -15560667, 2665027, -1651415, 6283537, -5935645, +884763, 1245004, 175020, -9107478, 8799314, 978716, -943282, 4197794, -1745904, 4139812, +-2173790, 12451110, 9781788, 12328167, 12204686, -1904818, 4265440, 5357972, 541703, -6335077, +8628052, -10153303, 3156801, 10227391, -6038187, 5460514, -11341935, 3710315, -996432, -2605972, +-989990, 964220, 3490735, 3470871, 11927124, -7732015, -398358, 8009577, 16996260, -14975477, +3844533, -3594351, 5148055, -2659122, 24823838, -15178951, 5428839, -8403104, -4759361, 2345052, +2565706, 1504312, -21769578, -11324218, 17916456, 9978820, -2017561, -9569187, -11285027, -4308926, +3963181, -11937325, -6650757, 6105296, 3272765, -86973, -405338, -8296803, 1517734, -2293513, +-3257196, 4045322, -2152316, -2433099, -1072668, -7221988, 2429341, -1732482, -2601677, -2502892, +3275450, -3376918, 4006668, -445066, -1162326, 1610076, 1338956, 5522254, -5598490, -954557, +-4297115, -671626, 2518998, 2237678, 6825777, -2057826, 3690451, 1095217, -2720862, 11457899, +-15131707, -3231426, 21337398, -6439230, -452582, 11418707, 2662880, 7036230, -15968152, 15269146, +971736, 1116155, -4072166, -9618579, -1344862, -1511829, -10297184, -6226629, 11368242, -3649649, +2163590, -5620502, -25071872, 8452496, 1115618, -7765838, 4760971, 9673877, -932008, 1043677, +-1981591, 2411624, 6553047, 2063732, 10543608, 7206419, 1632088, 9207336, -7464653, -7360500, +-10460393, 3912715, 6012418, 1724429, -16579648, 4663798, -14169097, 20467130, -4881767, 7253126, +17467632, -6925635, 11091216, 2740726, 12077448, 4838818, -5858336, -17986786, -12905840, -10078141, +-1403381, -10578504, -2124398, -9252433, -6001680, 18020610, 3896609, -7735773, -6852084, 3605088, +6691559, -1607392, 2603824, -32871532, 13201119, 2197413, -10547366, -12986370, -3391414, -21725018, +2327872, 10737418, 1178969, -9359807, 5745593, 4809827, -7668127, 3790309, 2269353, -1953673, +245350, -4947803, 1280974, 1660005, 1261647, -6436009, -3506304, 2581275, -4012036, 878321, +-2425046, -1590749, 1534377, 5341866, -6837051, 2335925, 5305895, -6407018, -5995775, 745177, +-5502927, 1220308, -3655554, 3750043, 2050310, -6416681, 3568581, -4230006, -2714419, 4352950, +1016297, 9852118, 3062312, -60130, -622233, 731755, -2595234, 7099581, -20359218, -24948392, +14945412, -12293807, -14292577, -4144107, 9353902, 19340238, -12859132, 955630, 9172976, -2869575, +-4102231, 4910758, 3176665, 14513768, 4813585, -14136348, -607201, -7217156, -556735, -8439074, +-11075110, 1599875, 10936060, -902480, 4838281, -9226663, 2605972, 10790568, 8365523, 1180579, +787053, 6705518, 6381785, 4015795, 9885404, -12701292, 13737990, 9838696, 3324305, -10517301, +688269, 7926899, -8315594, 9225053, -6619619, 10461467, -2899103, 13690208, -21760988, 22907208, +5310727, 21595096, 1313186, -4701379, -1604170, 7730405, 425202, -18229452, 617402, -1396938, +-18894098, 5828271, 13262859, -17954038, 14768245, -15819975, 4793721, 5945309, 3156801, -19770272, +-9591199, -9766756, 1787243, 1342177, -11589432, -16950626, 3176128, -14923938, 9982041, -7269769, +-3997004, 4963909, -9357123, -7248831, -9599789, -4024384, -5409512, 169114, -7706782, -5773510, +-7045357, -10349797, -5117991, -2261837, -2454037, -2711735, -3129421, -2110440, -5021354, -5458367, +3383897, -6509560, -3629247, -1762010, 4779762, -2531883, 3221, -8280697, -6041945, -2786360, +-315143, -1978906, -7133941, -1090922, -763430, 5539971, 3481071, -4714801, -4474282, 801548, +-2469606, 4054449, -2511482, 2115808, -4485020, -11515344, 17443472, 3520263, 11479374, 11126650, +3122978, -8591545, 1893007, 29444148, -20253992, 4872104, -3565897, -11059541, 653909, 3953518, +4748087, -140660, 67646, -5801964, -8509941, -13238700, -6695854, 10001368, -8393440, -13300977, +7644505, -4766340, 2929705, -1759326, 5939940, -5661304, 12524125, -4517769, 1352378, -281857, +1321239, 11547020, 3924526, -5356361, 6152541, -4901632, 9456444, -5686000, 3877282, -13533979, +-9898289, -7247221, 2362769, -6759742, -11812234, 4978941, 8751533, 2574296, -6284074, 4051228, +6180995, 7036230, 18924162, 26126822, 35485020, -3584150, 5655935, 8607651, 5015448, 4834523, +5703180, -7204271, 14081050, -1925756, 18382996, 22752590, 16642461, 6823630, 9368397, 3219078, +31733902, 9219684, -5810554, -4929549, -4511327, -1711008, -2042794, 1804423, -2533494, -5802501, +5307506, -9256191, 2792803, -1978906, 2946885, -4515085, -3733400, -2761127, 7196218, -6830072, +-6739878, -315143, 2967286, -3340948, -8652748, -2681133, 498753, -3911642, 4621385, 8978629, +-4996121, -340913, 1865090, -642635, 2950106, 5332202, -2368138, -5790153, -991064, 3206730, +-2938831, 8217346, 9473624, 6070400, -2690260, -6095096, -814433, 9571871, 1088774, 67646, +4170413, 1636919, -49392, -1208496, 2347737, 2708514, -6229850, -276489, 35423280, 28350006, +-12381854, -5713917, -14765561, 8472897, 4130685, 17324824, -3068217, -7555385, -3412352, -11288248, +2525978, 389768, 16363825, -6175089, 6097243, -22084184, 12136504, -1777043, 8541616, -157840, +7741679, 1268626, -12544526, -6527814, -10759967, -8227547, 9066676, 21792664, 9523016, -2658048, +-6769406, -357019, -1829656, 5387500, 7392176, -14038101, -265214, -4938139, -4663261, -15241765, +-11703786, -24659554, 468151, -1307818, 8879845, -7445326, 15781320, -12051141, -5251672, 31473520, +31267898, -21688512, 4851166, 18037788, -10489921, -5102958, 9347996, -3569655, -13178033, 35005056, +-8705899, -53404160, 17772038, -778463, -27448062, 20932596, 22484690, -8059506, 15755551, 19877108, +-9401147, 600222, 12713640, -13835163, 5793911, 10903848, -19608674, -2816962, -6431714, 955630, +-7141457, -8590, 2812130, -8432095, 6759205, -9761387, -4375498, 4563940, 9564892, -5609764, +610959, 1772748, -1357747, 3091303, -6866042, 10070625, -5113696, 10640245, 10530186, -403190, +625455, 6933688, -5098663, 1377074, -186294, 8717173, -6555194, 5215164, 1740536, -20973400, +4126390, -2772402, -3801046, 944893, -474057, 2039573, -11627550, 1411971, -2938831, -10566693, +1903207, 17591112, -16605417, 5296769, 9898289, -14501420, 71404, 7590818, -13328357, -6648073, +2406256, 6136972, 11695196, 5639829, -9622337, -1865090, 8625368, -10114648, 9930501, -5098663, +-12921946, 11421392, 5848672, 5623723, -3320547, -3353833, -4655208, -760746, 9586904, -20193862, +9848360, -561567, 16610786, -10701985, -88584, -13273060, 5592585, -21512418, 2236067, 807454, +-8626979, -6585259, 3299609, -14532559, -24986510, 14916421, -1527398, 4384088, -14835354, 8869644, +-2516314, 9541807, 10242423, 5009006, -10507637, 8429947, -5113159, -2415919, -19353122, 2624762, +-13816910, -15138149, -22028888, -9125195, 3359738, 5927055, -22736484, -11307038, 1070521, -8231305, +-30485140, -24201604, -24881820, -5272073, -14937359, 12958453, 18304076, 4915053, -18438832, -21352966, +-24884504, -2462090, -1989107, 13342853, -12096775, -20769388, -10297721, -13885092, 4507032, 99321, +4715337, 2305324, -6976638, 1306744, 4858145, -5492727, -2432025, -4679367, -3031710, -3427921, +-6790880, -471373, 7968238, 113817, 2183454, 2218888, -1623498, 5972152, -4197794, 9323300, +8298951, -3525095, -7859254, -544387, -3153580, -4436701, -5028333, -4430259, 6621229, 138513, +6221260, -6885907, -7525857, -1497333, 3323231, -11847667, 1777043, 1011465, -8791261, 1711008, +-7281044, -15429133, 9170292, -3806415, 925565, -2695629, 1353452, -7968238, -2287607, -15480136, +26925150, 29920890, -7077569, 20207284, -5610301, -7770133, -7721815, 19681688, -16955458, -3796214, +-8009577, 31157304, 1295470, 11481521, 4204773, -2769717, 15612743, 8811125, 12808129, 4146254, +-1833951, -5275294, 12264816, -1860258, -11747809, 15006616, -259309, 13165685, -14384382, 10304700, +3747359, -14606647, -11259794, 27157616, 17666274, -1474248, 9822053, 8269960, -17005924, -11059541, +5822902, 4512400, 12142409, 1695438, 2779918, 4888210, 14784888, 6235219, 3903052, -14377940, +40492952, 27303644, 3257733, -17933100, 9172976, -5888937, 5171678, -3933653, 8789114, -5716602, +1509681, 22489522, -15278809, -7214472, -20585778, 6023155, -5499169, -3408057, 19094888, 6203544, +2545305, 1872606, -7683160, -15221901, 11317776, 220654, 348966, 12259984, 12050068, -709743, +-8655970, -9934796, 19719806, -1798518, -1039919, -3566970, 14846091, -939524, -10210748, 7007239, +5568962, 9490804, 4291746, 3519726, 13711146, -2525441, -4905390, 5021354, -273804, 824097, +1259499, 6533719, -3464428, 246424, -4436701, 1762010, 6604049, -2762738, 1593970, 8519605, +-2872260, 2058363, 6008659, 714575, -1603097, -12395276, 8269960, -6798933, 5421323, -8174397, +-1853815, 3743064, -5353677, -1806034, 12085501, 9118216, 1024887, -1545115, 11283953, 2588255, +5373541, 5356361, 2510409, -1683627, 4825396, -9709847, -21046950, 54731840, -61380452, -7084549, +-32293322, 39696772, 10720775, 7017440, -15394237, 3734474, -12553653, 35561256, -6224482, -2265059, +3703873, -1745367, -13836774, 5330055, 8146479, 10765872, -23923504, -12583717, -12282533, 4938139, +-7186554, -6447283, -689342, -210453, 15831249, -8113193, 869194, 11906723, -1391033, -15819438, +2086280, 12528420, -1400696, -24944634, 18751290, 2247342, 446140, -34360, -10425496, 8231305, +-46062988, -32235878, -4387309, -11544335, 2213519, 3531000, -21505438, 33996812, -13345000, 46833396, +-6484864, -16405164, 16172162, 2674691, 14452565, 21680458, 7019587, -22289806, -6030134, 25028922, +58273044, 1918240, -14705431, 24210194, 2259153, 28554554, 4791036, 38659536, -9808632, -1570347, +-863825, 9011378, 1520418, 14835891, 27373438, 1584843, -5552319, -4880694, 8861054, -7415261, +-2966212, 17704392, 13180718, 1906966, -3096672, -6739341, -7290707, -4649839, -5881958, 12735115, +-7679402, -5573794, 6576132, 2211371, -2184528, 5655935, 6772090, -3704946, 5851356, 9002788, +-4437775, 507880, -12604118, 16165720, 199179, 12975633, 1154809, -13751948, 378494, 1296006, +3883187, 1333051, 301185, -11851962, -10545218, -796180, -5997922, 8497593, 3492345, -4161287, +-68183, 6638946, 1734093, -4101157, 736587, 4750771, 413391, -2565706, 2226404, 79898200, +24674588, 8687108, -2698313, -8769249, -11677479, 25972740, 23789824, -27792196, 16206522, 12277164, +2631741, -8507256, -14882062, -37839200, -14345191, 11885785, 3690451, -12279848, 22519050, -7551626, +8973797, 8949101, -5739687, -5489505, 23502598, 464393, -9286256, 14668387, -13185013, 28981366, +-14540612, -8839580, -1845762, 11203422, 5770826, 29313152, -9332964, -17795660, -6537477, 7627325, +1750736, 15627239, 4060355, 1218697, -6702834, 12558484, 55051816, 23351738, -20852604, 17580912, +-11078331, -16974248, 13357348, -788663, 3683471, -1297080, 9534291, -14851460, -22606560, -59310816, +-15871515, 20892332, -8126615, -20497732, 8551817, -4939750, 8512088, -23896662, -21081846, -10002442, +8576513, 9198209, 27870580, 4734128, -2326799, -22310208, -31587336, -4124779, -14396730, 2483028, +10911364, -15137075, -15667504, -3542274, -19408958, -32042604, -10938208, -8699456, -17367774, -4217658, +9068287, -9128416, -5060545, -10458782, -2759517, -22910430, -14816563, -14687714, 20401, 1835562, +7798050, -12936441, 6732898, -17355962, 311922, -10333154, -1712081, 5018133, -5690832, 7754564, +-22882512, -4741644, 7227893, 2913599, 6605123, -3148748, -6569690, 10705206, -2625299, -2594160, +7231115, -11539503, -9378061, -1970853, 1651415, -15219753, -7559680, -8444443, -5019206, -1601486, +-683974, 928250, -7220914, 328565, -12486007, 17802640, -14169634, 48931488, 41087804, 19277960, +-11148661, -17138530, 29390462, 25200184, -32877974, -6611566, -20114406, 28394028, -4718022, -40101572, +-17421998, 14403710, 25223270, -46370616, 18743238, -32076426, 12021077, -18902152, -4806606, 22450330, +-7418483, 3499325, 14400488, 29885456, -19376744, -32617592, 7450695, -2482491, 3691525, 30631170, +7827041, 22881976, -28744606, -5242545, 9405978, -25680146, 42248520, -4827007, 25376814, -3437048, +-5767068, 20782810, 20844014, -11816529, 46530064, -10777147, -20024748, 22459458, 40008156, 2346126, +7384660, 2017024, 17744120, -18663244, 14271103, 60564408, 27997282, -1807108, 26599806, 32632624, +-23926190, -73909408, 5797132, 44705776, 50633908, 13882945, -4658966, -21719650, 26394722, 55794848, +26225070, 13667660, -54363548, 10385768, -30690762, -19180250, -47889960, 40993852, 9156333, -14025216, +-18888730, 14467597, -13571023, 7872138, 5770289, 7341173, -17548700, -3716221, -1916092, 9607842, +-5833640, 8135205, 7358890, -8049843, -4922570, 11266236, 833761, 12087649, -4748087, 4538170, +-7508140, 4336843, 23051090, 4345970, 4648229, -2808909, -23962160, -12268037, -14624364, 8114804, +41517840, 38778724, 35459248, -2680060, -24999394, -24051280, -10991895, 16312286, 18654116, -1305670, +-7952669, -12996571, -18451180, 5049271, 11157251, 8866423, 8861591, 6523519, 723165, 33820184, +-67343480, 51163260, 10522670, -30957050, 303869, 28542206, -19221052, 657130, 15801722, -20168630, +1591285, -18146236, -11525545, 18826990, -16419123, -9455907, -34367256, 14650670, 33199560, 9170292, +-15074261, -25624848, -4158602, 18891950, 10243497, -21931176, -665720, 25934624, -3548180, 1549410, +-9005473, -6644852, 61385820, -29752850, -7606387, -7115150, 10254771, 28280212, -30421790, -17318382, +40373768, -5072893, -2663954, -48708688, -40080636, 16428787, 27136678, 14533632, -49627272, 33636572, +-967978, -7942469, 7045357, -35811436, -9876277, -4978941, -17617956, 31491238, -24943022, -14232448, +-26812944, -15878494, -35336308, 10219875, -55222544, -15911243, 6431177, -27924804, 6752226, 14822469, +6678138, -869194, -9921911, -20330228, 29180008, -6835978, -2840584, -11011759, 17665738, 34904124, +5305359, -48394080, 4214974, -21862458, 3188476, 3877282, -8735963, 2775623, -14331232, -5419175, +-1206349, -11449309, 214748, -3711926, 8429410, 6884833, -2601677, 3152506, 15688979, -7711077, +-5598490, 15366319, -11598559, 9971840, -5604933, -6072010, 1229434, -7496866, -3239479, 9053254, +-18944028, 5017059, 4538707, 6326487, 13681618, -10311143, 1715303, 9422085, 3795141, -4231617, +-8875013, -2560338, -2058900, -552977, -9085466, 1956358, -1478543, -38579544, 23527830, -635655, +30430918, -6174016, 31474594, 4013110, -3926137, 14116484, 36508296, 17521856, 9422085, 7355132, +4740570, 14403173, -18246094, -1414118, -13661754, -14367739, 22489522, 14011257, 8660802, -6375879, +-5543729, -2585570, 23516556, 3657165, -10285910, -16872780, -687195, -3939559, 17706540, 2747705, +14821395, 27748710, -7631620, -70057360, 4686883, 57057568, 6024766, -41737420, -5338645, 16169478, +12716324, 22456774, 20423644, -1595580, -13161927, -13489955, 17879412, -10768557, 2048699, 6305549, +-72768024, -12556874, -13955959, 11631308, 57273924, -979253, 4634807, -13214541, 3923990, 11871290, +24040542, 12608950, -14164802, -7396471, -35332548, -2075006, 24324010, -10655814, -5033165, 9020505, +24703042, 20081656, -5317170, -25060060, 158377, 9245991, 2802466, -16626892, 2065342, 2099702, +-1265942, -14343043, -18692772, 16306917, 13326210, -598611, -2928631, -14023068, 11178189, 4706211, +2542621, 4430796, 3560528, 6564858, 412854, -15537044, 8732205, 523449, -983011, 990527, +4152160, 2079301, -2123325, 73551, 602369, -5024038, -3036005, -21505974, 3391414, 15382962, +-10743861, 5567888, -17506824, 9979357, 4551592, -2474975, -4852776, -1632088, -1733556, 2207613, +-3860639, 19588808, -2420214, -115112640, -216399248, -87050400, -146506704, -168368080, 104485280, 36430988, +95991448, 288896672, 189061776, 152517504, 228663520, 114071112, 7255274, 90339272, 22410066, -91710440, +-64458332, -73116984, -167773776, -136342656, -58970436, -122106456, -134511936, -55723444, -82837032, -138922864, +-71840304, 10570988, -87389696, -80032960, 17497696, -17469242, -79701168, 89006752, 58093192, -67019208, +66034584, 100189776, 15087146, 57204132, 201543488, 95589328, 60335164, 237037104, 166104096, 96052648, +233728368, 313306592, 193965024, 280924672, 363995808, 260001216, 172434352, 227247264, 119601416, -116052160, +-76428408, -153231552, -356656224, -357711712, -362243456, -546825600, -539878976, -542499456, -565066816, -533560576, +-518955008, -408637152, -327060672, -247448096, -102014600, 29774860, 79170744, 201628848, 350529984, 296884768, +398152064, 566101376, 475904384, 444356256, 541167488, 400782176, 205583984, 222685472, 209030160, 78274168, +55764244, 112037984, 41405096, -10045929, 37473052, 13161927, -78136192, -69956424, -42159936, -139772192, +-160428304, -70185672, -122082832, -168148512, -69500088, -44829260, -91661048, -1542967, 29429116, -30469034, +-4674535, -22543210, -128282080, -184868816, -207100096, -258740112, -304497088, -273414944, -249868848, -232778096, +-174697264, -111378704, -79285632, -14591615, 61543660, 95661272, 138835888, 228612512, 278014304, 324187360, +347507424, 329170592, 293462752, 224423312, 153472064, 85607824, 11964705, -14595373, -24757802, -40394704, +-45456860, -46375448, -53682260, -57008176, -51444044, -46326592, -51407000, -55174760, -52517248, -55126444, +-60093572, -57780732, -54537496, -42010684, -24932286, -15557982, -3936338, 4896263, 3944391, 1649268, +438624, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -6948184, --644245, 6500970, -5812165, 2239826, -9788767, 96100, -3546569, 3928821, -3310883, 889595, --2247879, -4098473, -1058173, -396748, 2964064, 3712999, -3535295, -6157373, 3216394, 1093606, -2246268, 1352378, 2540473, -3570192, -2683818, 632434, -687732, 3200825, 2302103, -2732136, --595390, 2437931, 4525822, 2784750, 25770, -3565897, 1903744, -618475, -1904818, 2495376, -1072668, -3275986, -2745558, -2226941, 1816771, -3209951, -1732482, 2681670, 1025960, -105764, --3362960, 1224603, -2893197, -7439957, 721555, -2539400, -4807142, 2193118, -1377611, -1379758, --1657321, 93416, 3640522, 2192044, 1218160, 1656784, 2744484, -5606006, 2901251, -2236067, --2164127, -1247151, 1842541, 346819, 3912178, 5706938, 2216203, 433255, 632971, -94489, -3638911, -1553704, -149250, 1778653, 111669, -1522566, -1567126, 510564, -59056, -1717450, --874026, 528281, -105764, -234613, -697932, -853625, 550830, 359167, 598611, -258772, -197569, -181462, -1602023, -618475, 704375, 1260573, -730681, -846109, 268972, 14862197, --1241246, 2734284, 3280281, -1508607, 1551557, 5928129, -4601521, -803696, 1702955, -2282238, --440234, 4358318, -1392643, -967441, -290447, 1697049, -819802, 2105608, -1457605, -1431298, --654446, -3358128, -5747203, -1071594, -1836635, -759136, 3401614, -6085432, 7507066, 59056, -140660, 271657, 1425392, -166967, -2872260, 468151, 2320356, 5672041, 291521, -26844, --852551, -1893007, 3769908, 1801202, -1365263, 2090575, -3738232, 654983, 1203665, -2819109, --9732396, -3033321, -236223, -556735, -456877, -840740, -1233729, -689342, -1845225, 2404108, -7183870, 4084514, 320512, 4832, -186294, 2527052, -1462436, -6526203, -221191, -3389803, -2150168, -3848291, 2192044, -9425843, -54761, -1325534, 3211562, 5167383, -784905, -1205275, -776315, -1074, 2770254, 1036161, 466004, 3768834, -2759517, -342524, 477815, 1363115, -8053, 1389959, 77309, 898185, 400506, -157840, 280247, -312459, -40265, 811749, -1190780, 168041, -326954, -439160, 156229, -179852, 673773, 510027, 327491, -194884, -122943, 482647, -13077102, -12610024, -4745939, -1867774, -1799591, 10737, 3189013, 761283, -2590402, -5921686, 2928631, 3689914, 3565897, 4181688, -3235184, 899259, 9839770, -6085969, --214748, -4335233, -6287832, -752156, -446677, 5451924, -2644089, 573915, -4696547, 3011309, -1880659, 2364380, -10528575, 1624035, -1925756, -3692598, -994285, -50466, -7811472, -5057324, --4362076, -350577, 6526740, 2264522, 2161979, 3136937, -2920041, 1846836, -2619930, 5581310, -8585640, -803159, -789737, 2442763, 600759, 2222109, 4824322, -2261837, 4991289, -779537, --153545, 2955474, 4042638, -1527935, -5840082, -5370320, 2075006, -732292, -1003412, -2365453, -2651069, -4471061, 1662152, 3356517, 5665599, -3291556, 5432597, 3551401, 1766842, 2718714, -655519, -916439, -3659849, 2607582, -1722282, -3413425, -4317516, 1794760, -1423245, 2607582, -457414, -1658394, -2015413, -1023813, 858457, -1060857, -380105, -1364726, -605590, -77309, -1327682, 703301, -42950, 776315, 2617246, -246961, 6979, 1534914, -826781, 436476, --576599, -441308, 752693, 1107028, 1107028, 715649, -16643, -337155, 816581, 395674, -1791538, 2153389, -1709397, -169651, 942208, -14339285, 6152541, -6439230, 11455215, -10736881, -8369818, 4249870, -4482335, -5592585, -3130494, 2157147, 1938641, -3035468, 6739878, -2472291, --6514392, -1354525, 6972343, 4772246, -7127498, 1102196, -926102, -7458211, -3114388, -4807679, --1154809, -5716602, -1549410, -2401424, -7872675, -2821794, 3939559, 5679558, -1139777, -6741488, --1396401, 4734128, -1500554, 141197, 286689, 83215, -6714645, -221191, -836982, -1716376, --351114, 1156957, -4818954, 2710124, -5157182, -133144, -71941, 85899, 3761855, 58519, --1802813, 1528472, 2597382, 6258841, 2830384, 1408212, -1854889, -3913252, -3705483, -1546188, --4043712, -2898029, 2326799, 4091493, -3059627, -5083094, -3499325, 1588601, 852014, -4768488, --1663226, 574452, -4024921, -1853278, 520228, 1206886, 1590212, -1860795, -2238215, -3049427, -83752, -387084, -1194001, 921271, -1028645, -359704, -2340757, -533113, -805843, 2013803, -973884, -843961, 968515, -139586, 288300, -1007170, 89657, -605054, -73551, -840740, --1564979, 1091995, -130460, -1487132, -943819, -158914, -1367410, -1579474, 17548162, 7016366, --1110249, 4022237, -2747705, 9860171, 4207994, 17714056, 399969, -17027934, 4449049, 10417443, --6091874, 1870995, 7204271, -5428839, 5102958, -4392141, -890669, -5428839, -5145908, -1600412, -1527935, -516470, 2444910, -2299418, 7652021, -4478577, 2222109, 1445257, 5009543, -8981313, --4621922, -3513820, -981400, -3151432, 939524, 5555540, 4022774, 8795556, -1189706, -607738, --4894652, -1598265, 5617817, -5349919, 4657892, -5003100, -2022393, 8072391, 11699491, 8353175, -1559610, -6083821, 4394826, 3226057, -3155727, 6789807, -4351876, 1366873, 1173063, -12306692, --537, -11664594, -4599373, 1896765, -2984466, -5552856, -4657355, 1005559, 8149164, 2033130, --3168075, -4052839, -3474092, 834834, 1421634, 3869229, -5966784, -5458367, 497142, -1034550, -488553, -1554241, -779000, -958315, -398895, 1842541, 600222, 855772, -661425, -1249299, --1103807, 375810, 3339874, 1084479, 2466385, 755914, -3536369, 2784213, 1387274, 517544, -683974, 1612760, -221191, 1390496, 419833, -25233, -995359, -839129, -1430761, 472983, -1684164, -290984, -594853, -858457, -5054640, -585189, -475131, 177167, -654446, 10864120, -21988622, -9557376, -7099581, -1914482, -2571612, 7671886, -7306276, -13318694, -4612795, 943282, --3257196, 3838627, 1817308, 6652905, 2791192, -2650532, 9562745, 8967355, -4123169, 659814, --6158983, -1038845, 344671, -3788161, -731755, 6693170, 9598715, 391916, 1583769, 3954054, -2528662, 1549946, 660888, -3624416, -6888054, 800475, -9910100, 363998, 2281702, -3153580, -3898757, -2505577, -5477157, -421981, 5340792, 2367064, -2387465, 16197932, -43487, 5228586, --9635759, -2144263, 6617471, -3093987, -7133404, 4203163, -8360154, -7496866, 1713155, 9189619, --7512972, -4224637, -2216740, 384400, -3399467, -3389266, 12398497, 7250979, -1117228, 692027, --5828808, -4178466, -2367064, 3726958, 4905927, 430570, 3934727, 2541010, -790274, 3648575, --3346853, 12374875, 7019051, 1364726, 403727, 1141388, -2084133, -799401, -2074469, -2196876, --57982, -79994, -1996086, 1068910, -3015604, -910533, 2366527, -846109, 2425583, 1379758, -2295660, 96637, 1588064, 1803349, 1645509, 310848, 2724620, 893890, 390305, -1962263, -210453, -726923, -13959, 135291, 991601, -130997, 905701, -1870995, -62814, 8677981, --15627775, -2124398, -11744051, -6699075, -10641318, -2727304, -1655710, -1619740, -4106526, 4720169, --14983530, 7669201, -5126581, 4552129, 1975148, 6221260, 325881, 2568927, -6054294, -2578054, -2770254, -6025302, -4383014, 7333657, 2004676, 3311957, 2931315, -769873, 1955284, 10926934, --3944928, 1037772, -4955319, 8785356, -5335960, -19565186, 6032819, 3062849, 8209293, 4435628, -11320997, -7671349, -3054259, 6833830, -2863133, -6560563, -3112241, 3551401, -9517648, 9378598, --345745, 6248104, -8036958, -3529926, -2927020, -8705362, -1784022, -6922951, -3164317, 727460, -10002442, 8055211, -921271, -12288438, -7010997, -2268817, 9716290, 8038032, 5850819, 5413270, --3455301, -14222784, -3645354, -424128, 3321620, -4497368, -1404991, 7264937, -1396938, 8588324, -102005, 5947456, 2273648, 278099, -2200634, -237297, 3236258, 856309, -1513976, 286689, --3931506, -683437, -230318, -5264020, -3150896, -3368328, -1642825, 1028108, -2116882, 841277, --2835752, -378494, -832150, -1546725, 2299418, 1104344, -488553, -3586835, -1389422, 1417876, -2342905, 30602, -3481071, -1852742, 788127, 1784022, 494995, 857383, 264141, -20565378, --24823300, -14068702, 10043781, 720481, -4713727, -5334350, -7999377, -930397, 2579128, -13886166, --1418413, 8620536, -5423470, -3878356, 9633075, 2470680, -6514929, 2364916, -6307697, 14350023, --4760435, -3519726, 4574140, -7595113, -4803921, -4489315, 2348273, -5298916, -2048163, 2334852, -1649804, -17035988, 7486665, 7306276, -4976794, 13047574, 4953171, 1174137, 12497818, 7109245, -2157147, 1687922, 13521094, -1430761, -2411087, -989990, 8274792, 4608500, -12422119, 4711043, -3777424, -160524, -6656126, -19972672, 8698919, -1377074, -4985384, -12548821, -7126962, 7604240, --1707786, -3699578, -8391292, -16251619, 1562831, -2302639, -8667244, -3677566, -15378667, -2504503, --3512747, -2950643, -726386, 5435818, 11682848, 4985920, -4000762, -8455717, 3191698, 540092, -4835060, 3037616, -1964411, 3537979, 1240172, -431644, -4623533, 376883, -7482907, -483721, --1697586, 1192927, -2932926, 3467112, 1999844, -853625, -675384, -739808, 438624, -1712618, --498216, 1986959, -863825, -764504, 3767223, -1533840, -1048509, 3055869, -2433099, 1839857, --6271189, -4052302, -2346663, -3313567, -398895, -3290482, -4433480, -3269544, -988379, -685047, -1410360, -162135, -2734821, 1545651, 515933, -21169356, 17037598, 959925, 8710194, -1549946, --704375, 1607928, 9409200, 938450, -1164473, -12781823, 4558571, -1394254, -9876277, 2595234, --6450504, -4952634, 18349710, 5227512, 5655398, -3944391, 6577743, 7946227, 7674570, -4432943, -6702297, 3491809, -7713225, 5050345, -7501161, -2574833, 4807679, 2294586, -766652, -4145180, --3905199, 12221866, -3537979, -5332202, -3417720, 2518462, 2663417, -5801427, -9827422, -688269, --10545755, -1216550, -9507447, -3561065, -2248416, 1905892, -4839892, -8206072, 10422275, -4265977, --11455215, 7372848, 12247636, -5882495, -3911105, 6238440, 4506495, 12178917, 7856569, 1279363, --106300, -12416750, 3022583, 12007118, 9622337, -8430484, 9174587, 9981504, -6626061, -18458158, --5964099, -16524350, 2799782, 9584756, 4809827, 1220308, -4970351, -6639483, -738734, 949188, -2889439, -1438814, 5436355, -2354716, -1904281, 2210298, 5755256, -8375186, -1117765, -984084, --2573759, 150861, 2317135, -380641, -261456, -1238024, -163209, -1248762, 476205, -4295, --179852, 913754, 3004867, -2494839, -1496259, 1832340, 1931125, 6437619, -613643, 2764885, -2495913, -2593087, 2256469, 1146756, -2371896, 754304, 934692, 884763, 2568927, 5657546, -1178432, -1702955, 3695283, -998580, -2058900, 472446, 4145717, -33678988, 16247324, 4655745, --1513439, 22843320, -1270237, 11601244, -10102300, -2305324, 1870995, 223875, 13089450, 8356396, --17599702, 11116986, 907849, 6707665, -15845745, -541166, 9273371, -15546171, 19626926, 5379447, --136365, -6903623, 1241782, 8551280, -13947906, 1374926, 3653944, 2561948, -8572755, -3119220, -8251706, 4711043, -807991, 1299765, -5615133, -9642738, 4094715, -16358994, -611496, 23638426, -23065584, -7278359, 2920578, -929324, 6651294, 16631187, 1461900, 7996156, 2697240, -8616778, --586263, -1584306, -24911884, -11206643, 15527381, 787053, 4833449, -5961415, -1466731, 5569499, -7551090, -610959, 19308026, 347355, 15074261, 1938104, 3229816, 2028835, -9760850, -12275553, -15264851, 3588982, -7864622, 11098732, -8974871, 885837, 9397925, 1579474, -2327872, 4413079, --3947612, -3784940, 4735739, 6472516, 519691, -8532489, -4075387, -9197672, -3246459, 2353105, -3044595, 1555852, -3522947, -1620276, -6601902, 4871030, -18254, -2631741, -1157494, 2082522, -1182190, 6025839, 5406827, 3518652, 3538516, 1235877, 4308926, -2791192, 2019172, 2333778, -2240362, -2431488, 4354023, 2315524, -569083, -721018, -1046361, -1009317, -1886564, 11305428, --24597814, 9882720, 15497853, -2145873, 4609574, 6972343, -3761855, -2383707, 9564355, -3605088, -14513768, -13816910, 7550553, 17939542, -19226958, 775242, -9143985, 11330124, 4784057, 9396315, --9728638, -7604777, -110059, 24242942, 281320, 12263205, -5440113, 737661, -1666447, -2160369, --10761041, -422517, -3017215, 4932770, -4802311, -6989523, -5861557, -453119, -2039573, 10945724, -1888712, -6066642, -5488432, -5586679, -2035815, -2667712, 17888002, 767189, 8987756, 602369, --4287988, -3927211, 14879914, 11082089, -4274030, -14025753, 7921531, 5427765, -30878130, 1777580, -17438640, 16980154, 3974992, 13498008, -18624052, 30516816, 2691334, 5824513, 6054830, 14545980, --1128503, -13079249, -3955128, -15450608, 17573396, -7785702, -5186173, 15297063, -441845, -6052146, --4645544, -11549167, 10937134, -18835580, -2740726, 1782411, -438624, 2648384, -3879429, -8104067, --5116917, 2478196, 2093797, -3848828, 1006096, -3673808, -3898757, -2933463, 3485903, 1770063, --4427575, 4114579, 875636, -5465346, 2493766, -1035624, -1872069, -4183298, -4660040, 844498, -2324114, 9687836, -4224637, 5715528, 752156, -1997697, -653372, -1206886, -2517925, 1427540, --224412, -2965675, -917512, -2077690, 839666, 1903744, 1651952, 9299678, -18372260, -14714558, -12912819, 10846940, 26673358, -9584756, -7218230, -4900558, 4923107, -11501922, -1500554, 4323959, --929860, 14277545, 9148817, -11664594, 912144, 3245385, 8192113, -13267154, 13664975, -363998, -5979668, -2462090, -6428493, -13911936, 4731444, -2521146, -5948530, 2638184, -8592619, -8357470, --1982127, 4186519, 16581795, -25024090, -15196668, -13560822, -15220827, -4415764, 17198660, -10392210, --615254, 16929688, -2647847, -7839389, -14941654, -4136591, -6519761, -30751428, -23902030, -6848862, -5223217, -3068754, 5207111, -6944962, -5046050, 14390288, 8632347, -15452219, -8051453, -17277580, --6957310, 1256815, 6707129, -3218004, 1687385, -14765024, -11842299, -10823854, -448287, 2345589, -774168, -13982803, 304943, 18455474, 7881265, 21088826, -16877074, 25807384, 2151779, -16289737, --2829847, 593242, 4409858, -2860985, 6924024, -10021232, 4540318, -8893267, 3979824, 5820755, --2027225, 13140452, -1255204, 2985002, -3728569, -4953708, -2851858, 234076, 2862596, -5231270, --1046361, 1557999, -1271847, 4959614, -1669669, -2703145, -8723615, 3650185, 411243, 4349192, -1772748, -3022046, -8215736, 2464238, -10464151, 2482491, -2820183, -565325, 965831, -2357937, -681826, 1491427, 7042136, 2674691, -3236258, -13123273, 2500208, -1446330, 30200062, 3290482, -14537391, -12603582, -8574365, -3100967, -14245333, -9039296, -13761075, -6394670, -8924942, 16392280, -4101694, 4137664, 16875464, -448287, -983548, 7635378, 15181636, 23771570, 17358648, -3564286, --6470905, -27361626, 7523172, 8587787, 3319473, -17056926, 19712290, 7881265, 11572253, -3223910, -1075352, 11228118, 24625732, 24019068, 13817984, 2921652, 25603374, 683437, -7675107, 8339753, -15514496, 12647605, 23023172, 12202539, 486942, 2800319, -13940390, 6059125, -34798360, -5932424, --3525631, 7738458, 27293980, 15407121, 3994320, 19887846, -14459007, -13041668, 2770254, -33712272, --8107288, 1428614, 6429029, 7854959, 8879308, -1990181, 14763413, 1893544, 7609072, 27391154, --16894254, -8713952, -4711043, 5255966, -3268470, -25770340, -4941360, 17648020, -1345399, 22371410, --12053826, 660351, 9164923, -2116882, 2516314, -9272298, -4643397, -7188702, -4908611, -7981123, --6674379, 1791538, 1287417, -16058883, -7577933, -9029095, -2523830, 3010235, 4761508, -7139847, --408559, 2193655, -11445551, 1725503, -4678293, -7385197, -4015258, 614717, 2639258, -5056787, --1424319, -7755637, -759136, -2057826, -2682207, -5651103, -8499203, 2138357, 2604361, -4522601, --3338800, -3314641, -2710661, 1535451, 5328444, 1575716, 1557463, -23238994, -7289097, 4283156, -17659294, 32396938, -12953621, 619549, 5397164, -5883569, 30032022, 5364414, -14718853, 26317948, --5366025, -8767102, 18854906, -17015586, -9927280, 1195075, 1700270, 2389076, 12368969, 6635188, -10048076, -3013457, 5355288, 15105937, 972810, 10313827, 1938104, 440234, 16695075, -21690122, --7845295, -7327751, 14539001, -11036992, -2826625, -6485401, 14399415, -6046777, 31968516, 23381802, --21692806, 10695542, -26075820, 3791383, 9492415, 5125507, 5699422, -33259152, -6410776, -32075890, -4311074, 2689723, 3966402, -5032628, -5771899, 15401216, -27685896, 9578314, -11959873, -52206940, --19513648, -17061220, 8648454, -7572564, 7998840, 26186952, 27928024, 15829639, 14718316, 13652627, -4010963, -20738250, 21864068, 73014, -24079734, -19166292, -30275224, -40135932, -20666308, -4031901, -32182190, 11616813, 2008434, 12344273, -9763534, -195958, 6233072, 5168457, -2534568, 4741644, -1574106, 3298535, 1399623, -9901510, 8067023, 5352603, 3990025, 1625645, -5137855, 2849174, --7665443, -2727304, -11936788, 10015864, 7596187, -1621350, 1144609, 8018167, 12745315, -5682242, --12325482, -3728569, 10137733, -2211908, -7335268, 10799158, -875636, -6232535, 7490960, 3008088, -542777, -1825361, -219043, -5290326, 3689377, -3366718, -1469953, 7741142, -41836204, -19655918, --14792404, 7250442, -32010392, 10918344, -19299436, 26495654, -31834834, -40261560, -9039296, -6145025, -30853972, 14867566, 13516799, -8420820, 3237332, -19720342, -15940234, 3218004, 6149857, -25302726, --23574002, -16639240, -2474438, 12169253, 8639327, -17881560, -22470196, -13185013, -13431436, -30304216, --17678086, 12855374, -8733279, -576599, -4520453, 9334038, 15031849, -4440996, -45212584, 18534932, -37090800, 13601625, -1213328, -45346800, -11116986, 19246286, -5980205, 49890340, -5746666, -40895068, -6313065, -7204271, 2983929, 741419, -8474507, 10505490, 13106093, -43126304, -11777874, 1971927, -14785425, -8321499, -22135188, 19027242, 1593970, -14877767, -42953432, -49795852, -25783762, -3537979, -3307662, 39205536, 55581708, 28431072, 21608518, 9204115, -32749662, 11463805, -455803, -17330730, --5174899, -53803592, -11542188, -721555, 127775, 1516660, 23035520, 8380555, 6684043, -9960029, --3336116, 19879794, -14062797, -599148, -1101122, 3552475, -10499048, -17229262, -19109920, 7994545, --9046275, -3445638, 10796474, 29528, 1547262, -14750528, 4631049, 4279398, 2261837, -12207371, --6225018, -8167954, -12665322, 1302986, -7445326, 13020730, 5023501, -9511205, 1517734, -3757560, -9023726, -12947179, -1879048, -925565, 6349573, 5539434, 2813204, 6769942, -328028, 3410741, -75163000, 69035160, -29177324, 35800700, 31707060, -8952322, -5412733, -16511465, -8961449, -19402514, --13669807, 57280904, -3167002, 33367064, 351114, 1615445, 386010, -22619982, 5331128, 4681515, --49766860, 7403987, 11965779, -26147224, -5542119, -8055211, -3645890, 7366943, -1567663, 1531156, -21801254, 8895951, -10748156, 6770479, 34797824, 604517, 15978352, -830002, 13015898, -19206020, --23344220, -12969727, -42769284, 11451993, 4660577, -18917720, -51952460, -33818036, -48581984, 35347580, --25287694, 5558762, 8613020, 8072391, 6602439, 37725384, -36378908, 270583, -20452634, 39936752, --89593552, 18418430, 6769942, 28681792, 25893820, 202937, -8404177, -13616120, -4108136, -25918518, -18930068, 52771188, -4170413, 10958072, 33103998, -23144506, 13049721, 16298864, -29430726, -20204600, --54435488, 45037564, -8904004, -39502960, 26390964, -6564321, 17175574, -1124745, 14860050, 2647311, --11817603, 18701898, 17651778, 2979634, 10029286, 17017734, 9875740, -11304891, -5087926, -11039140, --5119601, 14355928, 27113054, -1122060, -5267778, -1049046, 17319456, -27598922, 15633681, -7442105, -36727876, 7387344, -22255984, -4416837, 16149077, -8536248, -11816529, -8579197, -6948184, -8434779, -8714489, 6449431, 23337242, -19713364, 915902, -2223719, 12603045, 894427, -2003065, 7729868, -8986682, 7242389, 15014669, 1968169, 17348446, -26094610, -24743306, 30555472, -62287228, 42921220, --25697864, -17964774, -11305965, 3894999, -18046916, -14053133, 19509352, -6011344, -42606612, 14678051, --2625299, 7521562, -9605694, 37848864, -30909806, 1298691, 15705085, -10742250, 11894375, -25228102, -2067490, -21709986, -10996190, 23579908, 3024731, 9441412, -13405667, 22795002, -6566468, -10656351, -8753680, -13978508, -11617350, -7474317, -7672422, -23559506, -31524524, -8788040, 17530982, 270583, --9849434, -31499290, 1244467, -24896852, -1624035, 10022843, -24592446, -6063957, 18174690, 18409304, -13411572, -30567820, -14425185, 21076478, 6910066, -584116, 17125108, -100325064, -23159000, -11178726, --45525580, 4497905, 12582644, -2661806, 8472897, 21527450, -12338367, -21310554, 5502390, -19343996, --5797132, 20905754, 33195802, -12540231, -39917964, -24106040, 2665564, -21307870, 3412889, -16521665, --15550466, 4203163, -31958852, 420907, -19912006, -6100464, -10870562, 4535486, 8189966, -3127810, --19753092, 4447976, -1217086, -12465606, 15629386, -587874, -14513768, -4965519, -3717831, -5443334, --10015864, 5581310, -9130564, 7678328, 10644540, -4036196, 1355599, -6056441, -13706851, -19479288, -3670587, 2742337, 9266392, -22547504, 4959077, 68183, -14442901, 11462194, -5840619, 8270497, -18691698, -41000832, 8584566, 6024766, 12226161, -6600291, -3896072, 13875966, 766652, 67275296, --8640400, -18760418, 2459406, -7614977, 33282776, 6170258, -2930778, 31585726, 32061930, 10441602, -12344810, 17514340, -39743480, -22058952, 32789390, -4634807, -32640140, -16617228, -14864345, 22276922, -11922829, -12101607, -47090560, 14453639, 7283728, 6070937, 7627862, -5840082, 4683662, -35426500, -31435940, 21705690, 11545409, -17847736, -15078556, -259846, 15705085, -3649112, 16338056, 6948720, --37245420, -16746614, 5812165, -37642168, 2160906, 6933151, -32981590, -46619724, -6544994, 13770202, --27012660, -56569016, -24710020, -14989436, 36535676, -22457848, 41239204, -8752606, 1923072, 17386028, -2405182, -63376536, -4211216, 2384781, 29492466, -56438016, -77640664, 5370320, -5052492, -49746996, -27951110, 12900471, -1833414, -419833, 45722612, -65658240, 53707492, 11090679, 7221988, 21508122, --23500988, -21588654, -4036733, 9890236, -13336410, -1236414, 27620934, -23608362, -18651432, 24120536, --13711146, -7120519, 10305774, 6466610, -27231704, 13669270, -9048959, -2734821, 9780714, 9245991, --28990492, -4984310, -22505628, 12421582, 17768816, 921807, -37306624, 26282516, -6328635, -842887, -16202764, -4274566, -13470091, -2710124, 21374978, -32182190, 22014392, 946503, -2212982, 7776575, -4421669, -20224464, 9434433, -335544, 1140851, -26286810, 18130130, -17295296, 19997904, 2712809, --23610508, 1722819, 3238942, -7082401, 3506841, 31629750, 12401181, 74435544, -31120796, -32464048, --13430363, -1174137, 70697312, -9660455, 58564564, -40860172, -16019691, 24883966, -44531296, -14565308, --41896868, 7094212, 42760156, -58508192, -21420076, -4843113, 17880486, -292595, 6609955, 16465831, --4062502, -37001144, -34286188, 1946157, 24354612, 65446712, -14405320, 17915382, -18688476, 32428076, -1169305, 4000225, -8944269, -38263328, 1350767, 35741644, -6022081, -1837172, -13169443, -33340758, -44314936, 17088064, 29595010, 39773008, -1857573, 2575907, 24628954, -62885300, 21913460, -31619550, -74839272, -6791417, 7455527, 11490111, -21706228, -21744346, 7616051, -31516470, 47535088, -27454504, --34840236, -35081828, 49705120, 17098802, 28851442, -6109054, 28825136, 29395294, -29586956, -8291971, --27430346, -14247480, 51806432, 36885716, 4977330, 10307385, -78096464, 53918484, 70570608, 8378408, --5511517, -13095355, -41826004, 61079804, -3358665, 4392141, -11774116, 2042257, -26327612, 57191784, --13387413, 28021440, 4637491, -9592809, -3098282, 55106040, -30071750, 27302034, 9242770, -22974854, -3463891, -7186017, 15370077, 4656282, 22461068, -8945343, 2597918, 4491462, 25770, 22306450, -37961068, -11301133, -1617055, 4625143, 21005612, 6239514, -28642064, -19106162, 41111428, 8276402, -20342576, -39675296, -47714404, 44741748, 29852170, 14198625, -3032247, -36896992, -405874, 6597070, --55509768, 37976636, -39477192, 4795331, -18190798, 14657113, -1532230, 20884816, -3359738, -18065170, -31116502, -10926397, -4352413, 4786741, -13061532, -11351062, 35924180, -8476118, -4932233, -4206384, --1842541, 16482474, -12566001, 3882114, -9193914, 8227547, -8026220, -6121402, -19265076, 28180354, --17401596, 9343701, 4526896, 19522774, -21929566, 4905390, -8963060, 22144852, 2917357, 1755568, -17536888, 5215701, -29038274, -4303557, -4967667, 8062191, 12733504, 10621991, -26394722, 11297375, --19934554, 14095546, -11355894, 2984466, -6507949, 13913547, -5432060, 4018479, -29524142, 6962679, -14374182, -13562433, 13455059, 1812476, 4965519, 8345122, -11884175, 20394116, 8091182, -1176821, --6394133, 9893994, -6187438, 18494130, -15473157, -4659503, -14723685, 19149112, -18942954, 17389786, --15782394, 21153788, -17979806, 11075647, -17724256, 15549929, -1169305, 1582159, -5089536, 804233, --3038689, -2778844, -5405753, 9224516, 3693135, -1313723, 3105798, -2863670, -4926865, 9262634, -1505386, 3491272, -5937793, 335544, 9372692, -10754061, -2532957, 6189585, 223338, -3238942, --6816113, 16808354, -5243082, -8535711, 4475893, 1476395, -2584497, 1753957, -877247, 1597191, --2777233, 2373506, -4874251, 8220568, -6754910, 9485972, 4262755, -23131084, 46692200, 3883187, -5858873, -18696530, -13776108, -29676614, 19868518, -8341364, -6074158, -12911209, -525597, -11514270, --1451162, -1542967, 5192079, 5803575, -937377, -1407139, -8455717, 7830263, 7321846, -7023346, -3271155, -15906948, 6301791, 3054259, -2806761, -2499671, -5325760, 5021354, 1086090, -11340861, --3064996, -3352222, -9410810, 15353971, 1586990, -9869298, 1476932, -3892314, 13383655, -4691715, --6298033, 2561411, -8027831, 15613280, 424665, -8695161, 2452426, -3568044, 7629473, -9912785, --1983201, 3215320, -3613141, 6835978, -3940633, 1950452, 3095598, -8946954, 1222455, 8809515, --13553306, -929860, 4082903, -12599287, 22855132, -20971788, 10425496, 3743064, -11977590, 23611046, --16114180, 3755412, 2998961, -10045392, 7777649, -4129611, -7737384, 7502771, -9214315, 5939940, --4243428, -3158949, 6781217, -5698885, 2169495, -2335925, -84289, 1284732, -3107946, 1410897, --185220, -3060701, 6413460, -5513128, 4777078, 136902, -4509179, 4355634, -7944079, -806380, -2078227, -1347546, -1104880, 1078574, -4134443, 5012764, -2573759, -1838246, 528281, 484258, --3226594, -527207, -1867237, 1706713, 2529199, -3670050, 3161096, -3505230, -679679, 3310346, --2508798, 10911364, -50020264, -115479856, 30309048, 106904424, 90385440, 121281824, -59779504, -77469400, --116504208, -119077968, 8200167, 88793080, 98035848, 107392440, 35723928, -23358716, -85183160, -141038144, --77262704, 35891968, 55603720, 94081792, 71322224, 19494320, -12621835, -29701310, -70636104, -45766636, --43544524, -7971460, 37249716, 57088168, 30065844, 38117296, 19295678, -21452288, -3325379, -45891724, --63880124, -10918881, -14878840, 11286637, 60317984, 34758632, 29956324, 8858370, -22555020, -23236310, --20008642, -33078228, -8640937, 1484448, 14226005, 17333952, 28867012, 8239895, -985695, -14541149, --26819386, -2278480, 9695352, 9941239, 16939352, -4293357, -13453448, -6451041, -13471702, -10572599, -2904472, 7627862, 21689048, 18389976, 17576616, 1039382, -9394704, -35173096, -32698660, -13311714, -2121177, 27216670, 29190746, 12058658, 12390981, -1358283, -23500450, -14370961, -1676648, -5487358, -1284732, 2503966, 5677410, 4752918, -3021510, -7650948, 4561256, 7118372, 5833640, 6075231, --534187, -4393215, -2738579, -11911018, -4902169, -6559489, -11219528, 6678674, 16325171, 19062676, -6314139, 6896644, -3696356, -4418985, -17041894, -25295746, -9762998, 2932926, 7919920, 9874667, -20774220, 19352586, 9365176, -7623030, -16259136, -18296024, -17172352, -12654047, -869731, 15446313, -23834384, 18951006, 5470715, -8948027, -10819023, -10735271, -6268505, -4066797, -4714801, 4726612, -10892574, 8103530, 1710471, -1356673, -878858, -2743410, -3231963, -4454418, -2032593, 2703145, -2148021, 1435056, 1441498, 1399086, 956704, -1888175, -1979443, -308701, 120796, -30065, --62814, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-644245, 6500970, -5812165, 2239826, -9788767, 96100, -3546569, 3928821, -3310883, 889595, +-2247879, -4098473, -1058173, -396748, 2964064, 3712999, -3535295, -6157373, 3216394, 1093606, +2246268, 1352378, 2540473, -3570192, -2683818, 632434, -687732, 3200825, 2302103, -2732136, +-595390, 2437931, 4525822, 2784750, 25770, -3565897, 1903744, -618475, -1904818, 2495376, +1072668, -3275986, -2745558, -2226941, 1816771, -3209951, -1732482, 2681670, 1025960, -105764, +-3362960, 1224603, -2893197, -7439957, 721555, -2539400, -4807142, 2193118, -1377611, -1379758, +-1657321, 93416, 3640522, 2192044, 1218160, 1656784, 2744484, -5606006, 2901251, -2236067, +-2164127, -1247151, 1842541, 346819, 3912178, 5706938, 2216203, 433255, 632971, -94489, +3638911, -1553704, -149250, 1778653, 111669, -1522566, -1567126, 510564, -59056, -1717450, +-874026, 528281, -105764, -234613, -697932, -853625, 550830, 359167, 598611, -258772, +197569, -181462, -1602023, -618475, 704375, 1260573, -730681, -846109, 268972, 14862197, +-1241246, 2734284, 3280281, -1508607, 1551557, 5928129, -4601521, -803696, 1702955, -2282238, +-440234, 4358318, -1392643, -967441, -290447, 1697049, -819802, 2105608, -1457605, -1431298, +-654446, -3358128, -5747203, -1071594, -1836635, -759136, 3401614, -6085432, 7507066, 59056, +140660, 271657, 1425392, -166967, -2872260, 468151, 2320356, 5672041, 291521, -26844, +-852551, -1893007, 3769908, 1801202, -1365263, 2090575, -3738232, 654983, 1203665, -2819109, +-9732396, -3033321, -236223, -556735, -456877, -840740, -1233729, -689342, -1845225, 2404108, +7183870, 4084514, 320512, 4832, -186294, 2527052, -1462436, -6526203, -221191, -3389803, +2150168, -3848291, 2192044, -9425843, -54761, -1325534, 3211562, 5167383, -784905, -1205275, +776315, -1074, 2770254, 1036161, 466004, 3768834, -2759517, -342524, 477815, 1363115, +8053, 1389959, 77309, 898185, 400506, -157840, 280247, -312459, -40265, 811749, +1190780, 168041, -326954, -439160, 156229, -179852, 673773, 510027, 327491, -194884, +122943, 482647, -13077102, -12610024, -4745939, -1867774, -1799591, 10737, 3189013, 761283, +2590402, -5921686, 2928631, 3689914, 3565897, 4181688, -3235184, 899259, 9839770, -6085969, +-214748, -4335233, -6287832, -752156, -446677, 5451924, -2644089, 573915, -4696547, 3011309, +1880659, 2364380, -10528575, 1624035, -1925756, -3692598, -994285, -50466, -7811472, -5057324, +-4362076, -350577, 6526740, 2264522, 2161979, 3136937, -2920041, 1846836, -2619930, 5581310, +8585640, -803159, -789737, 2442763, 600759, 2222109, 4824322, -2261837, 4991289, -779537, +-153545, 2955474, 4042638, -1527935, -5840082, -5370320, 2075006, -732292, -1003412, -2365453, +2651069, -4471061, 1662152, 3356517, 5665599, -3291556, 5432597, 3551401, 1766842, 2718714, +655519, -916439, -3659849, 2607582, -1722282, -3413425, -4317516, 1794760, -1423245, 2607582, +457414, -1658394, -2015413, -1023813, 858457, -1060857, -380105, -1364726, -605590, -77309, +1327682, 703301, -42950, 776315, 2617246, -246961, 6979, 1534914, -826781, 436476, +-576599, -441308, 752693, 1107028, 1107028, 715649, -16643, -337155, 816581, 395674, +1791538, 2153389, -1709397, -169651, 942208, -14339285, 6152541, -6439230, 11455215, -10736881, +8369818, 4249870, -4482335, -5592585, -3130494, 2157147, 1938641, -3035468, 6739878, -2472291, +-6514392, -1354525, 6972343, 4772246, -7127498, 1102196, -926102, -7458211, -3114388, -4807679, +-1154809, -5716602, -1549410, -2401424, -7872675, -2821794, 3939559, 5679558, -1139777, -6741488, +-1396401, 4734128, -1500554, 141197, 286689, 83215, -6714645, -221191, -836982, -1716376, +-351114, 1156957, -4818954, 2710124, -5157182, -133144, -71941, 85899, 3761855, 58519, +-1802813, 1528472, 2597382, 6258841, 2830384, 1408212, -1854889, -3913252, -3705483, -1546188, +-4043712, -2898029, 2326799, 4091493, -3059627, -5083094, -3499325, 1588601, 852014, -4768488, +-1663226, 574452, -4024921, -1853278, 520228, 1206886, 1590212, -1860795, -2238215, -3049427, +83752, -387084, -1194001, 921271, -1028645, -359704, -2340757, -533113, -805843, 2013803, +973884, -843961, 968515, -139586, 288300, -1007170, 89657, -605054, -73551, -840740, +-1564979, 1091995, -130460, -1487132, -943819, -158914, -1367410, -1579474, 17548162, 7016366, +-1110249, 4022237, -2747705, 9860171, 4207994, 17714056, 399969, -17027934, 4449049, 10417443, +-6091874, 1870995, 7204271, -5428839, 5102958, -4392141, -890669, -5428839, -5145908, -1600412, +1527935, -516470, 2444910, -2299418, 7652021, -4478577, 2222109, 1445257, 5009543, -8981313, +-4621922, -3513820, -981400, -3151432, 939524, 5555540, 4022774, 8795556, -1189706, -607738, +-4894652, -1598265, 5617817, -5349919, 4657892, -5003100, -2022393, 8072391, 11699491, 8353175, +1559610, -6083821, 4394826, 3226057, -3155727, 6789807, -4351876, 1366873, 1173063, -12306692, +-537, -11664594, -4599373, 1896765, -2984466, -5552856, -4657355, 1005559, 8149164, 2033130, +-3168075, -4052839, -3474092, 834834, 1421634, 3869229, -5966784, -5458367, 497142, -1034550, +488553, -1554241, -779000, -958315, -398895, 1842541, 600222, 855772, -661425, -1249299, +-1103807, 375810, 3339874, 1084479, 2466385, 755914, -3536369, 2784213, 1387274, 517544, +683974, 1612760, -221191, 1390496, 419833, -25233, -995359, -839129, -1430761, 472983, +1684164, -290984, -594853, -858457, -5054640, -585189, -475131, 177167, -654446, 10864120, +21988622, -9557376, -7099581, -1914482, -2571612, 7671886, -7306276, -13318694, -4612795, 943282, +-3257196, 3838627, 1817308, 6652905, 2791192, -2650532, 9562745, 8967355, -4123169, 659814, +-6158983, -1038845, 344671, -3788161, -731755, 6693170, 9598715, 391916, 1583769, 3954054, +2528662, 1549946, 660888, -3624416, -6888054, 800475, -9910100, 363998, 2281702, -3153580, +3898757, -2505577, -5477157, -421981, 5340792, 2367064, -2387465, 16197932, -43487, 5228586, +-9635759, -2144263, 6617471, -3093987, -7133404, 4203163, -8360154, -7496866, 1713155, 9189619, +-7512972, -4224637, -2216740, 384400, -3399467, -3389266, 12398497, 7250979, -1117228, 692027, +-5828808, -4178466, -2367064, 3726958, 4905927, 430570, 3934727, 2541010, -790274, 3648575, +-3346853, 12374875, 7019051, 1364726, 403727, 1141388, -2084133, -799401, -2074469, -2196876, +-57982, -79994, -1996086, 1068910, -3015604, -910533, 2366527, -846109, 2425583, 1379758, +2295660, 96637, 1588064, 1803349, 1645509, 310848, 2724620, 893890, 390305, -1962263, +210453, -726923, -13959, 135291, 991601, -130997, 905701, -1870995, -62814, 8677981, +-15627775, -2124398, -11744051, -6699075, -10641318, -2727304, -1655710, -1619740, -4106526, 4720169, +-14983530, 7669201, -5126581, 4552129, 1975148, 6221260, 325881, 2568927, -6054294, -2578054, +2770254, -6025302, -4383014, 7333657, 2004676, 3311957, 2931315, -769873, 1955284, 10926934, +-3944928, 1037772, -4955319, 8785356, -5335960, -19565186, 6032819, 3062849, 8209293, 4435628, +11320997, -7671349, -3054259, 6833830, -2863133, -6560563, -3112241, 3551401, -9517648, 9378598, +-345745, 6248104, -8036958, -3529926, -2927020, -8705362, -1784022, -6922951, -3164317, 727460, +10002442, 8055211, -921271, -12288438, -7010997, -2268817, 9716290, 8038032, 5850819, 5413270, +-3455301, -14222784, -3645354, -424128, 3321620, -4497368, -1404991, 7264937, -1396938, 8588324, +102005, 5947456, 2273648, 278099, -2200634, -237297, 3236258, 856309, -1513976, 286689, +-3931506, -683437, -230318, -5264020, -3150896, -3368328, -1642825, 1028108, -2116882, 841277, +-2835752, -378494, -832150, -1546725, 2299418, 1104344, -488553, -3586835, -1389422, 1417876, +2342905, 30602, -3481071, -1852742, 788127, 1784022, 494995, 857383, 264141, -20565378, +-24823300, -14068702, 10043781, 720481, -4713727, -5334350, -7999377, -930397, 2579128, -13886166, +-1418413, 8620536, -5423470, -3878356, 9633075, 2470680, -6514929, 2364916, -6307697, 14350023, +-4760435, -3519726, 4574140, -7595113, -4803921, -4489315, 2348273, -5298916, -2048163, 2334852, +1649804, -17035988, 7486665, 7306276, -4976794, 13047574, 4953171, 1174137, 12497818, 7109245, +2157147, 1687922, 13521094, -1430761, -2411087, -989990, 8274792, 4608500, -12422119, 4711043, +3777424, -160524, -6656126, -19972672, 8698919, -1377074, -4985384, -12548821, -7126962, 7604240, +-1707786, -3699578, -8391292, -16251619, 1562831, -2302639, -8667244, -3677566, -15378667, -2504503, +-3512747, -2950643, -726386, 5435818, 11682848, 4985920, -4000762, -8455717, 3191698, 540092, +4835060, 3037616, -1964411, 3537979, 1240172, -431644, -4623533, 376883, -7482907, -483721, +-1697586, 1192927, -2932926, 3467112, 1999844, -853625, -675384, -739808, 438624, -1712618, +-498216, 1986959, -863825, -764504, 3767223, -1533840, -1048509, 3055869, -2433099, 1839857, +-6271189, -4052302, -2346663, -3313567, -398895, -3290482, -4433480, -3269544, -988379, -685047, +1410360, -162135, -2734821, 1545651, 515933, -21169356, 17037598, 959925, 8710194, -1549946, +-704375, 1607928, 9409200, 938450, -1164473, -12781823, 4558571, -1394254, -9876277, 2595234, +-6450504, -4952634, 18349710, 5227512, 5655398, -3944391, 6577743, 7946227, 7674570, -4432943, +6702297, 3491809, -7713225, 5050345, -7501161, -2574833, 4807679, 2294586, -766652, -4145180, +-3905199, 12221866, -3537979, -5332202, -3417720, 2518462, 2663417, -5801427, -9827422, -688269, +-10545755, -1216550, -9507447, -3561065, -2248416, 1905892, -4839892, -8206072, 10422275, -4265977, +-11455215, 7372848, 12247636, -5882495, -3911105, 6238440, 4506495, 12178917, 7856569, 1279363, +-106300, -12416750, 3022583, 12007118, 9622337, -8430484, 9174587, 9981504, -6626061, -18458158, +-5964099, -16524350, 2799782, 9584756, 4809827, 1220308, -4970351, -6639483, -738734, 949188, +2889439, -1438814, 5436355, -2354716, -1904281, 2210298, 5755256, -8375186, -1117765, -984084, +-2573759, 150861, 2317135, -380641, -261456, -1238024, -163209, -1248762, 476205, -4295, +-179852, 913754, 3004867, -2494839, -1496259, 1832340, 1931125, 6437619, -613643, 2764885, +2495913, -2593087, 2256469, 1146756, -2371896, 754304, 934692, 884763, 2568927, 5657546, +1178432, -1702955, 3695283, -998580, -2058900, 472446, 4145717, -33678988, 16247324, 4655745, +-1513439, 22843320, -1270237, 11601244, -10102300, -2305324, 1870995, 223875, 13089450, 8356396, +-17599702, 11116986, 907849, 6707665, -15845745, -541166, 9273371, -15546171, 19626926, 5379447, +-136365, -6903623, 1241782, 8551280, -13947906, 1374926, 3653944, 2561948, -8572755, -3119220, +8251706, 4711043, -807991, 1299765, -5615133, -9642738, 4094715, -16358994, -611496, 23638426, +23065584, -7278359, 2920578, -929324, 6651294, 16631187, 1461900, 7996156, 2697240, -8616778, +-586263, -1584306, -24911884, -11206643, 15527381, 787053, 4833449, -5961415, -1466731, 5569499, +7551090, -610959, 19308026, 347355, 15074261, 1938104, 3229816, 2028835, -9760850, -12275553, +15264851, 3588982, -7864622, 11098732, -8974871, 885837, 9397925, 1579474, -2327872, 4413079, +-3947612, -3784940, 4735739, 6472516, 519691, -8532489, -4075387, -9197672, -3246459, 2353105, +3044595, 1555852, -3522947, -1620276, -6601902, 4871030, -18254, -2631741, -1157494, 2082522, +1182190, 6025839, 5406827, 3518652, 3538516, 1235877, 4308926, -2791192, 2019172, 2333778, +2240362, -2431488, 4354023, 2315524, -569083, -721018, -1046361, -1009317, -1886564, 11305428, +-24597814, 9882720, 15497853, -2145873, 4609574, 6972343, -3761855, -2383707, 9564355, -3605088, +14513768, -13816910, 7550553, 17939542, -19226958, 775242, -9143985, 11330124, 4784057, 9396315, +-9728638, -7604777, -110059, 24242942, 281320, 12263205, -5440113, 737661, -1666447, -2160369, +-10761041, -422517, -3017215, 4932770, -4802311, -6989523, -5861557, -453119, -2039573, 10945724, +1888712, -6066642, -5488432, -5586679, -2035815, -2667712, 17888002, 767189, 8987756, 602369, +-4287988, -3927211, 14879914, 11082089, -4274030, -14025753, 7921531, 5427765, -30878130, 1777580, +17438640, 16980154, 3974992, 13498008, -18624052, 30516816, 2691334, 5824513, 6054830, 14545980, +-1128503, -13079249, -3955128, -15450608, 17573396, -7785702, -5186173, 15297063, -441845, -6052146, +-4645544, -11549167, 10937134, -18835580, -2740726, 1782411, -438624, 2648384, -3879429, -8104067, +-5116917, 2478196, 2093797, -3848828, 1006096, -3673808, -3898757, -2933463, 3485903, 1770063, +-4427575, 4114579, 875636, -5465346, 2493766, -1035624, -1872069, -4183298, -4660040, 844498, +2324114, 9687836, -4224637, 5715528, 752156, -1997697, -653372, -1206886, -2517925, 1427540, +-224412, -2965675, -917512, -2077690, 839666, 1903744, 1651952, 9299678, -18372260, -14714558, +12912819, 10846940, 26673358, -9584756, -7218230, -4900558, 4923107, -11501922, -1500554, 4323959, +-929860, 14277545, 9148817, -11664594, 912144, 3245385, 8192113, -13267154, 13664975, -363998, +5979668, -2462090, -6428493, -13911936, 4731444, -2521146, -5948530, 2638184, -8592619, -8357470, +-1982127, 4186519, 16581795, -25024090, -15196668, -13560822, -15220827, -4415764, 17198660, -10392210, +-615254, 16929688, -2647847, -7839389, -14941654, -4136591, -6519761, -30751428, -23902030, -6848862, +5223217, -3068754, 5207111, -6944962, -5046050, 14390288, 8632347, -15452219, -8051453, -17277580, +-6957310, 1256815, 6707129, -3218004, 1687385, -14765024, -11842299, -10823854, -448287, 2345589, +774168, -13982803, 304943, 18455474, 7881265, 21088826, -16877074, 25807384, 2151779, -16289737, +-2829847, 593242, 4409858, -2860985, 6924024, -10021232, 4540318, -8893267, 3979824, 5820755, +-2027225, 13140452, -1255204, 2985002, -3728569, -4953708, -2851858, 234076, 2862596, -5231270, +-1046361, 1557999, -1271847, 4959614, -1669669, -2703145, -8723615, 3650185, 411243, 4349192, +1772748, -3022046, -8215736, 2464238, -10464151, 2482491, -2820183, -565325, 965831, -2357937, +681826, 1491427, 7042136, 2674691, -3236258, -13123273, 2500208, -1446330, 30200062, 3290482, +14537391, -12603582, -8574365, -3100967, -14245333, -9039296, -13761075, -6394670, -8924942, 16392280, +4101694, 4137664, 16875464, -448287, -983548, 7635378, 15181636, 23771570, 17358648, -3564286, +-6470905, -27361626, 7523172, 8587787, 3319473, -17056926, 19712290, 7881265, 11572253, -3223910, +1075352, 11228118, 24625732, 24019068, 13817984, 2921652, 25603374, 683437, -7675107, 8339753, +15514496, 12647605, 23023172, 12202539, 486942, 2800319, -13940390, 6059125, -34798360, -5932424, +-3525631, 7738458, 27293980, 15407121, 3994320, 19887846, -14459007, -13041668, 2770254, -33712272, +-8107288, 1428614, 6429029, 7854959, 8879308, -1990181, 14763413, 1893544, 7609072, 27391154, +-16894254, -8713952, -4711043, 5255966, -3268470, -25770340, -4941360, 17648020, -1345399, 22371410, +-12053826, 660351, 9164923, -2116882, 2516314, -9272298, -4643397, -7188702, -4908611, -7981123, +-6674379, 1791538, 1287417, -16058883, -7577933, -9029095, -2523830, 3010235, 4761508, -7139847, +-408559, 2193655, -11445551, 1725503, -4678293, -7385197, -4015258, 614717, 2639258, -5056787, +-1424319, -7755637, -759136, -2057826, -2682207, -5651103, -8499203, 2138357, 2604361, -4522601, +-3338800, -3314641, -2710661, 1535451, 5328444, 1575716, 1557463, -23238994, -7289097, 4283156, +17659294, 32396938, -12953621, 619549, 5397164, -5883569, 30032022, 5364414, -14718853, 26317948, +-5366025, -8767102, 18854906, -17015586, -9927280, 1195075, 1700270, 2389076, 12368969, 6635188, +10048076, -3013457, 5355288, 15105937, 972810, 10313827, 1938104, 440234, 16695075, -21690122, +-7845295, -7327751, 14539001, -11036992, -2826625, -6485401, 14399415, -6046777, 31968516, 23381802, +-21692806, 10695542, -26075820, 3791383, 9492415, 5125507, 5699422, -33259152, -6410776, -32075890, +4311074, 2689723, 3966402, -5032628, -5771899, 15401216, -27685896, 9578314, -11959873, -52206940, +-19513648, -17061220, 8648454, -7572564, 7998840, 26186952, 27928024, 15829639, 14718316, 13652627, +4010963, -20738250, 21864068, 73014, -24079734, -19166292, -30275224, -40135932, -20666308, -4031901, +32182190, 11616813, 2008434, 12344273, -9763534, -195958, 6233072, 5168457, -2534568, 4741644, +1574106, 3298535, 1399623, -9901510, 8067023, 5352603, 3990025, 1625645, -5137855, 2849174, +-7665443, -2727304, -11936788, 10015864, 7596187, -1621350, 1144609, 8018167, 12745315, -5682242, +-12325482, -3728569, 10137733, -2211908, -7335268, 10799158, -875636, -6232535, 7490960, 3008088, +542777, -1825361, -219043, -5290326, 3689377, -3366718, -1469953, 7741142, -41836204, -19655918, +-14792404, 7250442, -32010392, 10918344, -19299436, 26495654, -31834834, -40261560, -9039296, -6145025, +30853972, 14867566, 13516799, -8420820, 3237332, -19720342, -15940234, 3218004, 6149857, -25302726, +-23574002, -16639240, -2474438, 12169253, 8639327, -17881560, -22470196, -13185013, -13431436, -30304216, +-17678086, 12855374, -8733279, -576599, -4520453, 9334038, 15031849, -4440996, -45212584, 18534932, +37090800, 13601625, -1213328, -45346800, -11116986, 19246286, -5980205, 49890340, -5746666, -40895068, +6313065, -7204271, 2983929, 741419, -8474507, 10505490, 13106093, -43126304, -11777874, 1971927, +14785425, -8321499, -22135188, 19027242, 1593970, -14877767, -42953432, -49795852, -25783762, -3537979, +3307662, 39205536, 55581708, 28431072, 21608518, 9204115, -32749662, 11463805, -455803, -17330730, +-5174899, -53803592, -11542188, -721555, 127775, 1516660, 23035520, 8380555, 6684043, -9960029, +-3336116, 19879794, -14062797, -599148, -1101122, 3552475, -10499048, -17229262, -19109920, 7994545, +-9046275, -3445638, 10796474, 29528, 1547262, -14750528, 4631049, 4279398, 2261837, -12207371, +-6225018, -8167954, -12665322, 1302986, -7445326, 13020730, 5023501, -9511205, 1517734, -3757560, +9023726, -12947179, -1879048, -925565, 6349573, 5539434, 2813204, 6769942, -328028, 3410741, +75163000, 69035160, -29177324, 35800700, 31707060, -8952322, -5412733, -16511465, -8961449, -19402514, +-13669807, 57280904, -3167002, 33367064, 351114, 1615445, 386010, -22619982, 5331128, 4681515, +-49766860, 7403987, 11965779, -26147224, -5542119, -8055211, -3645890, 7366943, -1567663, 1531156, +21801254, 8895951, -10748156, 6770479, 34797824, 604517, 15978352, -830002, 13015898, -19206020, +-23344220, -12969727, -42769284, 11451993, 4660577, -18917720, -51952460, -33818036, -48581984, 35347580, +-25287694, 5558762, 8613020, 8072391, 6602439, 37725384, -36378908, 270583, -20452634, 39936752, +-89593552, 18418430, 6769942, 28681792, 25893820, 202937, -8404177, -13616120, -4108136, -25918518, +18930068, 52771188, -4170413, 10958072, 33103998, -23144506, 13049721, 16298864, -29430726, -20204600, +-54435488, 45037564, -8904004, -39502960, 26390964, -6564321, 17175574, -1124745, 14860050, 2647311, +-11817603, 18701898, 17651778, 2979634, 10029286, 17017734, 9875740, -11304891, -5087926, -11039140, +-5119601, 14355928, 27113054, -1122060, -5267778, -1049046, 17319456, -27598922, 15633681, -7442105, +36727876, 7387344, -22255984, -4416837, 16149077, -8536248, -11816529, -8579197, -6948184, -8434779, +8714489, 6449431, 23337242, -19713364, 915902, -2223719, 12603045, 894427, -2003065, 7729868, +8986682, 7242389, 15014669, 1968169, 17348446, -26094610, -24743306, 30555472, -62287228, 42921220, +-25697864, -17964774, -11305965, 3894999, -18046916, -14053133, 19509352, -6011344, -42606612, 14678051, +-2625299, 7521562, -9605694, 37848864, -30909806, 1298691, 15705085, -10742250, 11894375, -25228102, +2067490, -21709986, -10996190, 23579908, 3024731, 9441412, -13405667, 22795002, -6566468, -10656351, +8753680, -13978508, -11617350, -7474317, -7672422, -23559506, -31524524, -8788040, 17530982, 270583, +-9849434, -31499290, 1244467, -24896852, -1624035, 10022843, -24592446, -6063957, 18174690, 18409304, +13411572, -30567820, -14425185, 21076478, 6910066, -584116, 17125108, -100325064, -23159000, -11178726, +-45525580, 4497905, 12582644, -2661806, 8472897, 21527450, -12338367, -21310554, 5502390, -19343996, +-5797132, 20905754, 33195802, -12540231, -39917964, -24106040, 2665564, -21307870, 3412889, -16521665, +-15550466, 4203163, -31958852, 420907, -19912006, -6100464, -10870562, 4535486, 8189966, -3127810, +-19753092, 4447976, -1217086, -12465606, 15629386, -587874, -14513768, -4965519, -3717831, -5443334, +-10015864, 5581310, -9130564, 7678328, 10644540, -4036196, 1355599, -6056441, -13706851, -19479288, +3670587, 2742337, 9266392, -22547504, 4959077, 68183, -14442901, 11462194, -5840619, 8270497, +18691698, -41000832, 8584566, 6024766, 12226161, -6600291, -3896072, 13875966, 766652, 67275296, +-8640400, -18760418, 2459406, -7614977, 33282776, 6170258, -2930778, 31585726, 32061930, 10441602, +12344810, 17514340, -39743480, -22058952, 32789390, -4634807, -32640140, -16617228, -14864345, 22276922, +11922829, -12101607, -47090560, 14453639, 7283728, 6070937, 7627862, -5840082, 4683662, -35426500, +31435940, 21705690, 11545409, -17847736, -15078556, -259846, 15705085, -3649112, 16338056, 6948720, +-37245420, -16746614, 5812165, -37642168, 2160906, 6933151, -32981590, -46619724, -6544994, 13770202, +-27012660, -56569016, -24710020, -14989436, 36535676, -22457848, 41239204, -8752606, 1923072, 17386028, +2405182, -63376536, -4211216, 2384781, 29492466, -56438016, -77640664, 5370320, -5052492, -49746996, +27951110, 12900471, -1833414, -419833, 45722612, -65658240, 53707492, 11090679, 7221988, 21508122, +-23500988, -21588654, -4036733, 9890236, -13336410, -1236414, 27620934, -23608362, -18651432, 24120536, +-13711146, -7120519, 10305774, 6466610, -27231704, 13669270, -9048959, -2734821, 9780714, 9245991, +-28990492, -4984310, -22505628, 12421582, 17768816, 921807, -37306624, 26282516, -6328635, -842887, +16202764, -4274566, -13470091, -2710124, 21374978, -32182190, 22014392, 946503, -2212982, 7776575, +4421669, -20224464, 9434433, -335544, 1140851, -26286810, 18130130, -17295296, 19997904, 2712809, +-23610508, 1722819, 3238942, -7082401, 3506841, 31629750, 12401181, 74435544, -31120796, -32464048, +-13430363, -1174137, 70697312, -9660455, 58564564, -40860172, -16019691, 24883966, -44531296, -14565308, +-41896868, 7094212, 42760156, -58508192, -21420076, -4843113, 17880486, -292595, 6609955, 16465831, +-4062502, -37001144, -34286188, 1946157, 24354612, 65446712, -14405320, 17915382, -18688476, 32428076, +1169305, 4000225, -8944269, -38263328, 1350767, 35741644, -6022081, -1837172, -13169443, -33340758, +44314936, 17088064, 29595010, 39773008, -1857573, 2575907, 24628954, -62885300, 21913460, -31619550, +74839272, -6791417, 7455527, 11490111, -21706228, -21744346, 7616051, -31516470, 47535088, -27454504, +-34840236, -35081828, 49705120, 17098802, 28851442, -6109054, 28825136, 29395294, -29586956, -8291971, +-27430346, -14247480, 51806432, 36885716, 4977330, 10307385, -78096464, 53918484, 70570608, 8378408, +-5511517, -13095355, -41826004, 61079804, -3358665, 4392141, -11774116, 2042257, -26327612, 57191784, +-13387413, 28021440, 4637491, -9592809, -3098282, 55106040, -30071750, 27302034, 9242770, -22974854, +3463891, -7186017, 15370077, 4656282, 22461068, -8945343, 2597918, 4491462, 25770, 22306450, +37961068, -11301133, -1617055, 4625143, 21005612, 6239514, -28642064, -19106162, 41111428, 8276402, +20342576, -39675296, -47714404, 44741748, 29852170, 14198625, -3032247, -36896992, -405874, 6597070, +-55509768, 37976636, -39477192, 4795331, -18190798, 14657113, -1532230, 20884816, -3359738, -18065170, +31116502, -10926397, -4352413, 4786741, -13061532, -11351062, 35924180, -8476118, -4932233, -4206384, +-1842541, 16482474, -12566001, 3882114, -9193914, 8227547, -8026220, -6121402, -19265076, 28180354, +-17401596, 9343701, 4526896, 19522774, -21929566, 4905390, -8963060, 22144852, 2917357, 1755568, +17536888, 5215701, -29038274, -4303557, -4967667, 8062191, 12733504, 10621991, -26394722, 11297375, +-19934554, 14095546, -11355894, 2984466, -6507949, 13913547, -5432060, 4018479, -29524142, 6962679, +14374182, -13562433, 13455059, 1812476, 4965519, 8345122, -11884175, 20394116, 8091182, -1176821, +-6394133, 9893994, -6187438, 18494130, -15473157, -4659503, -14723685, 19149112, -18942954, 17389786, +-15782394, 21153788, -17979806, 11075647, -17724256, 15549929, -1169305, 1582159, -5089536, 804233, +-3038689, -2778844, -5405753, 9224516, 3693135, -1313723, 3105798, -2863670, -4926865, 9262634, +1505386, 3491272, -5937793, 335544, 9372692, -10754061, -2532957, 6189585, 223338, -3238942, +-6816113, 16808354, -5243082, -8535711, 4475893, 1476395, -2584497, 1753957, -877247, 1597191, +-2777233, 2373506, -4874251, 8220568, -6754910, 9485972, 4262755, -23131084, 46692200, 3883187, +5858873, -18696530, -13776108, -29676614, 19868518, -8341364, -6074158, -12911209, -525597, -11514270, +-1451162, -1542967, 5192079, 5803575, -937377, -1407139, -8455717, 7830263, 7321846, -7023346, +3271155, -15906948, 6301791, 3054259, -2806761, -2499671, -5325760, 5021354, 1086090, -11340861, +-3064996, -3352222, -9410810, 15353971, 1586990, -9869298, 1476932, -3892314, 13383655, -4691715, +-6298033, 2561411, -8027831, 15613280, 424665, -8695161, 2452426, -3568044, 7629473, -9912785, +-1983201, 3215320, -3613141, 6835978, -3940633, 1950452, 3095598, -8946954, 1222455, 8809515, +-13553306, -929860, 4082903, -12599287, 22855132, -20971788, 10425496, 3743064, -11977590, 23611046, +-16114180, 3755412, 2998961, -10045392, 7777649, -4129611, -7737384, 7502771, -9214315, 5939940, +-4243428, -3158949, 6781217, -5698885, 2169495, -2335925, -84289, 1284732, -3107946, 1410897, +-185220, -3060701, 6413460, -5513128, 4777078, 136902, -4509179, 4355634, -7944079, -806380, +2078227, -1347546, -1104880, 1078574, -4134443, 5012764, -2573759, -1838246, 528281, 484258, +-3226594, -527207, -1867237, 1706713, 2529199, -3670050, 3161096, -3505230, -679679, 3310346, +-2508798, 10911364, -50020264, -115479856, 30309048, 106904424, 90385440, 121281824, -59779504, -77469400, +-116504208, -119077968, 8200167, 88793080, 98035848, 107392440, 35723928, -23358716, -85183160, -141038144, +-77262704, 35891968, 55603720, 94081792, 71322224, 19494320, -12621835, -29701310, -70636104, -45766636, +-43544524, -7971460, 37249716, 57088168, 30065844, 38117296, 19295678, -21452288, -3325379, -45891724, +-63880124, -10918881, -14878840, 11286637, 60317984, 34758632, 29956324, 8858370, -22555020, -23236310, +-20008642, -33078228, -8640937, 1484448, 14226005, 17333952, 28867012, 8239895, -985695, -14541149, +-26819386, -2278480, 9695352, 9941239, 16939352, -4293357, -13453448, -6451041, -13471702, -10572599, +2904472, 7627862, 21689048, 18389976, 17576616, 1039382, -9394704, -35173096, -32698660, -13311714, +2121177, 27216670, 29190746, 12058658, 12390981, -1358283, -23500450, -14370961, -1676648, -5487358, +1284732, 2503966, 5677410, 4752918, -3021510, -7650948, 4561256, 7118372, 5833640, 6075231, +-534187, -4393215, -2738579, -11911018, -4902169, -6559489, -11219528, 6678674, 16325171, 19062676, +6314139, 6896644, -3696356, -4418985, -17041894, -25295746, -9762998, 2932926, 7919920, 9874667, +20774220, 19352586, 9365176, -7623030, -16259136, -18296024, -17172352, -12654047, -869731, 15446313, +23834384, 18951006, 5470715, -8948027, -10819023, -10735271, -6268505, -4066797, -4714801, 4726612, +10892574, 8103530, 1710471, -1356673, -878858, -2743410, -3231963, -4454418, -2032593, 2703145, +2148021, 1435056, 1441498, 1399086, 956704, -1888175, -1979443, -308701, 120796, -30065, +-62814, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -5540508, --4885526, 6077916, -1243393, 4852776, 1415729, 7217693, -1682554, -3734474, -2572686, 4409321, -122407, -1605781, -427886, 4985920, -1328219, 904091, 1749125, -3351685, -2550674, -1093606, -919123, -3478924, 883153, 703838, -4029753, -1313186, -2411624, 336618, -1762547, 639950, -6569153, 3364033, -1924145, 307090, -3122978, 2389076, -842350, 3876745, -8061117, -891743, -1243393, -2876018, 512712, 3897683, 2977486, -3636227, -2687039, -2925410, -545998, -2320356, --1177895, -3550327, 1347009, -324807, -4099546, -2134599, -1658394, -221191, 839129, -909459, --430570, 1745367, 691490, -1948305, 1006633, 4345433, -2245194, -595390, -4696547, -1805497, --371515, 1923609, -1990181, 545998, 783295, 633508, 1505386, -3642132, -129923, -2061047, -1709397, -1326071, -3504157, -1013075, -119722, -79457, -1554241, -1643899, 1690607, -785979, --324270, 611496, 982474, 28991, -240518, 175557, 579284, 21475, -399969, 758599, -127238, -694711, -632971, 707596, -271120, 245887, -477278, 637803, -618475, -409096, --114354, -148176, 216359, 7539815, -2809982, 2458332, 6305012, -5101348, -5756330, -838056, --1433445, -59593, 3213709, 1797981, -8005819, 1263257, -4591857, -6311992, -403727, 2331630, -2512019, -2050310, -264677, -662499, 3445101, -699543, 2833068, -1308891, 331786, 635655, -863825, -3990025, 1686848, 3113315, -1451162, 3963718, -2185602, -414464, -4932770, 3524021, -885837, -1286343, -3825205, -3774203, -1720671, -1277753, 1916092, -399969, 1654636, 1654636, --3393561, 2133525, -4559108, 1650341, 2655901, 5052492, 4847945, -4158602, 2071785, -247497, --1103807, 2966749, -2248416, -2663954, -2019172, 2422899, 1197222, 3152506, -3113851, 4736812, --1529545, -217970, 1421097, 802622, 2767033, -2072859, 3942243, 4998268, 8708046, 4065187, -2769717, -5120675, -941135, -3333968, -2428804, 3186866, -416075, 3932580, 1597191, -287226, --782221, -654983, 2257005, -1686312, 1799591, 2154463, -1682017, 1044214, 777926, 251256, -1285806, -770410, -239444, -1660005, -9224516, -9926743, 1133335, -812823, 2362769, 2205466, -6558952, 2968359, 3134253, 1589675, -3205119, 1240172, 8286066, -5531918, -617938, 260382, -6652905, 4005057, 930397, 2954401, -521839, 2283849, 3069291, 6820945, 3781182, 3833258, -2061584, 1647657, 3326989, 1212255, -4744865, 2924873, 3928821, -1386738, 2858838, 3775276, --1306744, 1195612, 4710506, 1749662, -1125818, 1701881, 4807679, -233002, -44023, -933082, -1326071, 4510790, -1319629, -2521683, 1308891, -1543504, 2386391, 2837363, -3338263, 734439, --2152852, 189515, 1381369, 3799972, 3125126, -7946763, -6442, 3915400, -2015950, -3302830, -458488, 625992, 3933116, -311385, -8483634, -3697430, 2763275, -2345589, 4014721, -1096290, -34360, 1032940, 5032091, 3164854, 2141578, -2566780, 4135517, -477278, 2538326, 1257889, -512175, 880468, 872415, -47245, -646393, 569083, -343597, -2043331, -860604, -830539, --248571, -457951, 5906, -605590, -1477469, 758062, 326954, -740882, 181999, 1418950, -1038308, 501974, -186294, -219043, -136902, -58519, 1340030, -16789028, 2364380, 1744294, -7845295, -293668, 6127845, 3149285, 1568200, -9834938, 23085, -140660, -7628936, 1233729, -5719286, 1095217, -100932, -710817, -3038153, -3484292, 1568200, 2262911, -261456, 1512902, -1764695, 6870337, 795643, 3047816, 3212099, -3590056, 787053, -839666, -983548, -451508, -2536715, -383326, -1709934, -2742874, -1636383, 887448, -4874788, -3463891, 2068027, -3879966, -1280437, -6378027, -7633768, -1945083, 9463960, -2494839, -547608, 5583995, 1880122, 415538, -5979132, -842350, 677531, -754304, 1760400, 3838627, -1490891, -5966247, 3823595, -3477850, --6613713, -2638184, -1842541, -6442, 2446521, 7173669, 59593, -71941, -2796561, -266288, -4243428, -2001992, -2177012, 5115843, -4311074, -332860, 2352568, -5232881, -1013612, -1814624, --1758789, 583579, -2791192, -3948149, 254477, 2448668, -1126892, -1704565, -2225330, -2261300, --304943, 1631551, 746251, -223338, -650688, -1759863, 94489, -589484, -2137283, -3160022, --2685428, -37581, -335544, 1276679, -2086817, -100932, -295279, 1016297, -153545, 436476, -14968498, 497679, -900869, -5666673, -3257196, 7902740, -3189013, 6171868, 5311264, -6014565, --974421, 4631049, -3364570, -1618129, -1569274, -2174327, 999117, 1669132, 290447, 2897492, --1306207, 464930, 1096290, -1197759, -2824478, -2939905, -3328600, 279173, 3901978, 1709934, --3286187, 322659, 1545651, 7446937, -2190970, 6668474, -6046777, 2760590, 4807142, -3145527, --1919314, -6159520, 2929705, -40802, -4324495, 4319664, -5364414, 6053757, -316217, 8559333, -1976222, 955093, 2079301, 3579855, 1910724, -2732673, 4225711, -756451, -4480188, -7004555, --1900523, 3012920, -3510599, -2257542, 2759517, -3903052, 7728794, -7388955, -21475, 4993973, --4222490, -1649268, -7769596, -548682, -3035468, -1672890, -2323041, 6770479, 2663417, 722091, -290984, 5846524, 588947, -461709, 4670240, 3870303, 3505767, 7255811, -1525787, 743029, --2019172, 2078764, 2393908, 525597, 711354, -1177895, -33823, -1683627, -846109, 209380, -668404, 1190243, -552977, -208843, 2334315, 1121523, -851477, 4518306, -229244, -1068373, --1821603, -1157494, 1655173, -1491427, 169114, -140660, -1554241, 738734, 494458, -379568, -1148904, 1228898, -1176284, 1273995, 7224672, 12786118, -3730716, -5558225, 1470489, -2265059, -3530463, 11642046, 77846, -2669859, 3698504, 2011655, 3451006, 2098629, -6325950, 248034, --5645198, 3162170, 2739652, 1677722, 10643466, -495532, 7936563, -194884, -188979, 2428267, --60130, 8361228, 1110786, 5270999, -1934883, 7135552, -3204046, 3812857, 14110578, -2290291, --3554622, 9960566, 2098629, 6495601, -152471, -6165426, 1933272, -3549254, 4268124, -7431367, --990527, -3853123, 4207994, -613107, 872415, 7701950, -3728032, -7704098, 2168959, -646929, --358630, 6267968, 1213865, 909996, -2812130, -5060009, -5379984, -1780264, -4440996, -3338263, -4610111, -2297271, -432718, -1661616, 547071, 46171, 4115653, 2594160, -4702453, -6772090, --1583769, 241055, 1878511, -1829119, -1662689, 5609228, 3190087, 2775623, 816581, -4523675, --2097018, 2487323, 112743, -1475858, 1995549, -599685, 1219234, -1451162, 125628, -819265, --2575370, -3033858, -806917, -2680597, 723702, -372052, 273267, 1888712, -488016, -1421634, -2289755, 525060, 1462973, 887448, 149787, -814970, 1134408, -248034, -254477, -47782, --243203, 135828, -464393, 674847, 1453310, -1734630, 486405, -2051384, 328565, -971200, -17539572, -9206262, 6154688, 240518, 3033858, -4235375, -3319473, -1928977, 3813394, 4912906, -1043677, -2691334, -5099737, 2666638, 4848481, -947577, 1521492, -2593624, 5285494, 1960116, --9936407, -3261491, 3195993, -577673, -4225174, -197569, 4517232, -3315178, 1531156, -6457484, -3766686, 8172786, -3385508, 8644695, 289373, -1571421, 5752572, -245887, 439697, 5209796, --11250667, 1691680, 3404299, 4787278, 3228205, 3740380, -5052492, -3910031, -182536, 1795833, --5471789, 1808718, 5305359, 4771709, 1759863, 14564234, -4594005, -1823751, -6599218, -2822867, --4328790, -6059125, 7496866, 3132642, 7321846, -1144072, -11735461, 6830072, -4147865, 3754338, -3355443, 1640141, 2015950, -9260486, 10968273, 2398202, -5095442, -8886287, -5578626, -5566278, -770410, 4540854, -4147328, 347892, 2782602, 2385854, -4295, -1927367, 447213, -192737, -1723356, 1848447, 1975148, 1384053, 1302449, 686121, -3241090, -2897492, 131533, -1063541, -1047972, 1320703, -1511829, 2106682, -520228, 770410, 1730335, 753767, 1340567, 404264, --3447248, -235686, -55835, 1215476, 882616, 419833, -788127, -923418, 1848447, -541166, -4517232, 784368, 1947231, -21022254, -17696876, -16316044, 3640522, 3351148, 1365800, 732292, --1165010, -1270774, 436476, -2783139, -5920613, -4115653, -10364293, -4578435, -5031018, 6193880, --7966628, -3526705, -4510253, 1336809, 90194, -2067490, 2323041, -692027, -8271570, -168041, -7588671, 980326, -7378754, -6522445, 2849711, -2638184, 6368900, 4478577, -6971806, 6881075, -10861972, -9107478, -9328669, -4989142, 3426310, 8635032, -6152541, -6361921, 3266860, -3673808, -671626, -818728, -792958, -9907416, 1891933, 5997385, -3080029, 3433826, -4926865, -5858336, --5815923, -2878702, -10018548, 17157320, -3638374, -1158567, 2995740, 1866163, 3654480, 2336462, -5352603, 2443837, 4647155, 10619307, -13706851, 9590125, -3270081, -2606508, -471373, -15298137, --700617, 4680978, 424128, 602906, 4274030, 1563905, -379568, 2543158, -5172215, 5987722, --2165201, -3486440, 3250217, -2120640, -1913408, 612570, 2652679, -2047626, -3247532, 1104344, -2574833, 100932, -1103807, -2830920, -1556926, 390305, -4002910, -2674691, -1397475, 1908576, --906238, 143345, 2109366, 35970, -3987877, -908386, -3396246, -3019899, -2849174, -1758789, --3147674, 2664490, -941672, 175020, 5714454, -1140314, -1743757, -1546725, 3090229, 775242, --1065152, -20672752, 15845208, 4198331, 3453691, -3827353, 15509127, -2441152, 7306813, -22012, -6573985, -9230958, 3652870, 3621731, 1411434, -4541391, 13804562, -3743064, 4206921, 3176665, -14326937, -9667435, -630823, 3986267, -2493766, -7093676, 4278861, -6672232, 1723356, 1828046, --7838852, 3033858, 638876, 395137, 15756624, 9854802, -1323387, -6447820, -5043902, 3518652, --842887, -9450002, 2677912, -830002, 2778844, 7118372, 10478110, -7197292, 7123204, 3570729, --4730907, 3408057, 2736431, -7443715, -4034585, -4666482, 7498476, -8112657, -6898791, -18595598, --13634911, 3778498, -2568391, -2674154, -7173133, -14428406, 5525476, 1112397, -436476, 7069516, -6009733, 8502425, 5037460, 2057826, -255014, 1360968, 9597641, -7096897, 13146895, -4836670, --3740917, -12018392, 1906429, -2206003, -6138045, -1084479, 1453846, -3022583, 3491809, -1451162, -142271, -1477469, -488016, -1268626, -301185, 2173790, 3435974, 278636, 2835215, -3204583, --2289218, -1623498, 1175210, 2475512, -3278671, -1228361, -1533840, 481573, -1834488, 1473711, --340376, 1283122, 2164127, 36507, -3495030, 4930623, 4723927, 1974611, 21475, -2126546, --145492, -1107028, -526134, 5576478, -24987582, 23119272, 16607565, -6772627, -5717675, 6243272, -56908, 569083, 11033771, 7809861, 321586, -1624035, 4444218, -2563022, -1595580, 3115462, --4944044, 6213207, 4258460, -5159867, 6698002, -716723, 1807644, -483184, -11011222, -609885, -8018704, 8313983, 3263638, 3564823, 4458176, -5124970, -6487011, 2808909, 4997195, -202400, --2501819, -5652177, 2355790, -1653026, 7083475, 8341900, -926102, 9615358, -4992900, 10715407, -5807333, 12913356, 937914, 1893007, -3709241, -5264556, -992674, 9913858, 16181826, 989990, -12336220, -5305359, -11818676, 1592896, 4474819, -10327786, 10785200, -3550864, 3819300, -22764400, --9785546, -134218, -5462125, 4424890, 7544647, 15835544, 3309272, 134755, -7735773, -13731010, -3563212, 610422, -11522860, 4749160, 2513630, -8308078, -2349884, 2011655, 9135395, 228707, -2774012, 2813204, 4770098, 3925600, -7699266, 2771865, -118648, -1510218, 187368, -354872, --1218697, 3308199, 3124589, -3191161, -1305670, -17717, 2237678, -1205275, 3183645, 500364, -2325725, 2084670, -2492155, 1924682, 2332167, 5980742, 564251, 3430605, 3747896, 951335, -4396436, 1619740, 2280091, 1038308, 577136, 1618129, 5162014, -2160369, -4706748, 1190780, -6153078, -9710384, 16675211, -7154879, 2004676, 12465069, 12899934, -952409, -7412040, -3974992, --3930432, 956704, -9581535, -7600482, 8025684, 2017024, 5159867, 6288906, 7432441, -3322694, -4821638, -1821603, 5773510, 24049670, 5664525, -11592117, 11259257, 12931073, 563714, -2131915, -683437, -6395207, -8817031, -4613869, 13186086, 8857296, 7301982, 11216307, 2273648, -1930588, --5155572, -14242648, 6601365, 7514582, 4171487, -2255932, -1763621, -4912906, 1981591, 11596949, -7990787, -13285944, 8777303, -11201275, 11810623, 2522220, 4421669, 5281199, -1976222, -6330782, --1926830, 4755603, 20434380, -3252901, 10206990, -4538170, -9241159, 10851235, 9766756, 2479807, -2233920, 9840844, 3441343, 580894, -1122597, -6255083, -1930051, -9176734, 2947421, -7124277, --3568044, 14483703, -767189, 395137, 286152, 6681896, -2183991, 1995012, 4420058, 6729140, -7271380, 6066642, 2374580, 3188476, 3323768, 6096169, -944356, -4862977, 6885907, 2739652, -3795677, 4185983, 174483, -482647, 428960, -3034395, 1890323, 6535867, 731755, 842350, --1377074, -2422899, 5454072, 5873905, 1137093, 10409390, -1293859, 4494684, 7961259, 514322, -2208687, -1147293, -3051574, 826781, 1728188, 2889439, 5733245, 2508798, 4294968, 1604707, -1028645, 5980205, 8505109, -4292283, 8644159, 11042898, -12664785, 8529805, 4935991, -3061238, -789737, 5868536, -5299990, -11187853, 16806744, 3633006, 3218541, 3141232, 9976135, 2907693, --10039486, 10726144, -14397267, -16819628, 1495722, 2024003, -9287867, -3044058, -27509266, -19477676, --14668387, -4955856, -15090904, -7430831, 5724118, -13566191, 9520869, 8757438, -11049877, 14268418, -7611756, -2790655, -1435593, -7383049, 320512, -13184476, 28934658, 8461622, 4509179, -14441291, -3518115, -4458176, 19187766, -3858491, -499827, -17511118, 17137456, 1147830, 6711960, 5563057, -9994926, 5666136, -3880503, 5731097, -8534100, 8664023, -3132105, 5107253, -13661217, 30942018, -4720169, -14343043, 7785165, 9038759, 7063074, 10532870, 8986682, -13929116, 11109470, -272730, -8958765, -7045894, 2662880, -17923972, 7541426, 7819525, 2268817, -4298189, -13561359, -872415, -9283035, -12030740, -1643362, -1414655, -57982, 3690451, 2793339, -2704219, 5216238, -294205, --2557116, 4133369, 3170760, -3757023, -3039226, -7852274, -492848, -7304129, 4394289, 1239635, -733903, 5767604, 8871255, 5638219, 4173635, 2834679, -3156264, -1219234, 91268, -5695664, --4719632, -1293859, -1911797, 3106872, 7204271, 2294050, 4556961, -1016297, -89121, -22364432, -6277095, -3061238, -2173254, 13280576, -2439005, -2260764, 1292785, 11890617, -3091303, 6936372, --5800354, -6841346, -8742406, -11087458, 19270444, 10047539, 6996502, -6048925, -17637284, -21648782, -10431939, 7185481, -7675107, 5163088, -5212480, 519154, 19181860, 8377871, -5424007, 10344429, --3478924, 5369783, -6373732, 6493454, -14145475, -20809116, -8072928, -9280887, -1562831, 24359444, --19810536, 11468100, 6605123, 4981089, -4363150, 9590662, 4300336, -19033148, -24193014, -8614094, --11022497, 27420682, 19898584, -6637335, -12204150, -1016297, -12523588, -2648384, 19983410, 18487150, -10513006, -16302085, 3549791, -12734041, 20037096, 9504763, -2085744, 71404, 6767795, -11819213, -2690260, 17653390, 9622874, -15968152, 17384418, -8854612, 10404558, 27545236, 10553808, -6485938, --8118025, 23574002, 2640331, -1436667, -10667088, 4153234, -5005248, 1516660, -3106872, -556735, --652298, -11742441, 1529545, -1462973, -3298535, 5163088, -860604, -4154844, 799938, -2470143, -705985, -3066070, -4519380, 4067871, -5014911, -3245385, 2459406, 6127845, -247497, 4326643, -3629247, -817654, 42413, -5906654, 871342, 1996086, -4938139, 6703370, 3374771, -4095251, --2679523, -2860448, -1205275, -6596533, 3968550, 6245420, 357556, -4913443, -2778844, 3241627, --1351304, 3115462, 4481799, 313533, 1700807, -17768280, -6956774, 29768956, 13785771, 17157320, -4190814, -24723442, 7648263, -20057498, 13202193, 37205156, 13232257, 23345832, -10500121, 6746320, -10850161, -1112397, 2806224, -9535364, 2441689, 14636175, 782221, -3891777, -13196824, 7279433, -5466957, -13448616, 7032472, -5101348, 10312216, 14713484, 15645492, 18844170, 1906966, -14596446, -3968013, 8909373, -146566, 25653840, 2275259, -29464550, -18475876, 8398272, -7480223, -34775276, -1283658, 14839112, 5493800, 1567126, -3142842, 18335752, -14374182, -17838072, -3424700, -6379100, --17351668, -952409, 1296006, -10108206, -14936286, -9150965, 763430, 2178085, -21585968, 6466610, --8983461, 5267241, 24977382, -3395172, -8644159, 17398376, -2993592, 14487998, -13678934, 9360344, -644245, -15855409, -17683990, 31988916, 3147137, 4331475, 1551020, 46171, 32096828, 26208428, -8316668, -2398739, 12610561, -6145025, 4331475, 7508677, -1344325, 9863929, 4278861, 2885144, --14561550, 8706972, 4709432, -803159, 1374926, -4927938, 4255776, 11331734, -1822140, -3654480, --6227166, -6833830, 6859063, 8047695, 490700, 56371, -6130529, -6619619, 1246614, -9515500, -1416266, -3148211, 10063645, 3590593, 496069, -6277095, -10966125, -2479270, -5286031, -7397008, -4355634, 4482335, 8647917, 25170656, 3271691, -34470872, -15591805, 21391084, -30829812, 17522930, --29176250, 2374043, -4658429, -42198052, -5558762, 18997714, 38841536, 12372727, -5640366, 9431748, --14894410, -4993437, -33880312, -1883343, -23010824, -3313031, -5036386, -15904264, -16874390, -5603859, -9701794, -15285252, 10537165, 19398756, -19989314, 7249368, 6458557, 3433826, -21272974, -3248069, --217970, -22286586, 5814849, 28389196, -2152852, -41213968, 14599668, -24893094, -63546724, 17922362, --26278758, -32682554, 1744294, -14965814, 4539781, 11235098, -6259378, 16734803, -13984414, 14618458, --11537893, -28440736, 170725, 20351166, 19514184, -36956584, 5441187, -4420058, -27507654, -7358353, --6812355, 47873852, 23905252, 28083180, 12799003, 12213813, 29631516, 42561516, -9711995, -20164872, --22000434, 3863860, -27334246, -8411157, 14157286, 22992570, 3235184, 2088428, 19967840, -4621922, --11324755, -15411416, 12031814, 13643500, 13406740, 3129958, 15379204, 6376953, -9426916, -2094333, --9130564, 14024679, 2268280, -1639604, -15726023, 4772246, 12607876, 1384053, 241055, 12316356, --9827959, -6575595, 6819335, 695248, -4958540, -9468255, -3020973, 14492830, -697932, -32087700, --2977486, -793495, -7348689, -6256694, -8472360, -5194763, 6998649, 6258304, 3729105, 2221572, --5268851, -6656663, 55716464, 60232084, -35359392, -14008573, 26891328, -12200391, 10846940, -16780438, -5019206, -17241072, -32293860, 44000868, 6415071, 13817984, 11316165, 4120484, 5779416, 1322313, -8916352, 10933376, -31249108, -25761750, -22570590, -21308406, -15963320, -10060424, -8339216, -16753057, --9491878, -14198088, 16145319, 12277164, 6207839, -7823820, 3280281, -33063196, -16612934, 8994735, --30048664, -2777233, 14625437, 25942140, 3802120, 5028333, -11098195, -19403052, -22886806, 18387292, --2488397, 18204218, -64170568, 4009352, -7460895, 7389491, 39237748, 4820564, 6549289, 4429185, --11492796, -13215077, 361314, -2607045, -36026184, 7733089, -13212393, 32319628, 2156611, -35403416, --48195440, -29943976, -6083821, -33843804, -33143188, -20561620, 23378044, -6052146, -22824530, -30775588, -25724170, -3305514, 15222975, -17313014, 9342091, 25365004, -16840030, -24417426, -10255845, -12605729, -26527328, 5595269, -11629161, 10457172, 7784628, 23088670, 14328548, 6725919, -20495584, -20424180, --4488778, 2403571, -5360656, 3705483, 14220637, -3098282, -1189706, -10363219, -7597261, -5645198, --10787347, -2019708, 4441533, 6542846, 33530810, 2261300, -8395050, -2640331, 4496831, 10507637, --594316, 16623134, 6971269, 38341708, 5950677, -252866, 1417876, 7049115, -10610180, -16483011, -62755376, -36376224, 23831700, 44472776, -21304112, 6334540, 35544612, -44917304, 1833414, 5098663, -21923124, -50377820, 2849174, 3462818, 16632798, -21945672, 328565, 9104794, -29617558, 4484483, --2202245, -5475547, 16387985, -4837207, -4423280, 6974490, -3834332, -4976794, 16079284, -14900852, -4475893, -6098317, 4153770, -9520869, -5254893, -11627550, 230854, 2348810, 31419296, 10496900, -15304579, -3097208, 426276, 23312008, -910533, -8718247, 13108240, 9679246, -10397579, -30348776, -27960238, -30246770, 5044976, 14632954, 19199578, -29764660, 31967442, 51311976, -27921046, -51991652, -69785168, 24716464, -34323768, 16000901, -33036888, -41052372, -20412368, -7434589, -42874512, 34879968, --59804736, 18083422, 28701118, -23690502, -79981952, 75848584, -13065827, -19437948, 50596864, -50227496, -26120380, 43182676, -12802224, -11724187, 13499619, 14897094, -7964480, 5434744, 4543002, 13758928, --6613176, -4867809, 15416785, 63351, 3557307, -1519345, 3004867, 12329777, 9183177, -1559073, --10780368, 18023294, 19523310, -3565897, -16517907, -1666984, 8362838, 1881196, 12092480, 161598, -10603737, 4533338, 15483894, 11436424, 13037373, -19016504, 5084705, -265751, 951872, 178778, --11491185, -20550344, 30412664, -4776541, -27759984, 10264435, 6976101, 3023657, -4403415, -19206556, --15238544, 34819300, -23038742, -18430242, -36750424, -16944720, 21767968, 16884054, -9840307, -12259984, -11571179, 28875602, -12477954, 21772800, 26074210, -18585934, -2714419, 15911780, -4185446, -143881, --5330592, 1328756, -26742076, 7245610, -5974300, 834834, 6373195, -5437429, 5450314, -11144903, --22409528, -10647224, -38976828, 4799626, -141734, -5875516, 7162932, 3641059, -2593624, -8938901, -15588584, 24654186, -26035554, 37918656, -4339528, 5006322, 5448703, 33512020, 15352897, 24506010, --30888868, -7709467, -5838471, 43707736, -40900436, -14015552, 19913616, -1532767, -47222092, 3136400, --9784472, -8124468, 21481278, 23544474, 1604707, -17770428, 38060928, -16111496, 63508072, 785979, --29541858, -92879, -5171678, -33420214, 63807644, 12782896, -9574019, -75647256, -37828460, 21251498, --27875948, -25092810, 29556892, -110861160, 2748242, 21796422, 15988553, -9004936, 31120796, -19107236, --2517388, 110059, 16189879, -4645544, 3274376, 22053584, -1583232, -5598490, -7030325, -7972533, --390305, 2451890, -1510218, -3366718, 14232985, -20003274, -4518843, 2359011, 3299072, -11986717, --20281910, -5166846, -6248104, -2909840, -1717450, 3911105, -22491134, 1719598, 17011828, -10619844, -13004624, 9985799, -9811316, 611496, -7185481, 2839510, 4777078, -10466835, 29417842, -14281840, --13191992, -17027398, 14239427, 19317152, 11791833, 48008072, -9225053, 10887742, -4577899, -24752970, -12429098, -15771657, -8877697, 9910637, 21544092, -22691922, 24821152, 2863670, -1233729, 50586660, --10255308, -5608154, 37924560, -24225764, 33504504, 14461692, -7919920, 13366475, 14124000, 31253404, -32502702, 9447317, -26357140, 55205364, -55356224, 1873680, 50407348, -27116276, 11178189, -5975910, --6510634, -58372364, 39660800, 10490994, 17617418, 18596134, -12108587, -29055990, -21831318, -17705466, -2784213, 55472188, 394063, 43509628, -14455786, -33483566, 1859721, 12512850, -27485106, 44647796, -18178450, 21940840, 44110388, 28552942, -47160888, 17997524, -67653784, -83598856, 1767379, 70399344, -44163540, 5696737, -49787796, -177893792, -32693828, 55009404, 62872416, 89085672, -4512937, -112974816, --63712620, -58852864, 90339808, 69042672, -12451647, -45145476, -26402238, -54900956, -6994354, 70731136, --6849936, 16546362, 11826192, -11598022, -25608742, 38548944, -15628849, 21506512, 15781857, -1462436, --35782984, 49090404, -19342386, -9268539, 14230300, 12738336, -26553098, 443455, -8309688, -10023917, -3403225, -954557, 19676318, -35107064, 18625662, -42251740, -6657200, -7043747, 50258096, 1497333, -13655849, -30659088, 16056198, -11526082, 22226992, 26558468, -12816182, -30494268, 11018202, 7902740, -25736518, 7217156, -43612172, 36628016, -27421218, -4743792, -17755932, 17024176, -19945828, -848793, --2097555, -5411122, 4093104, 18756660, -19812148, 8717710, 1555315, -4587025, 276489, 13226889, --16747688, -4581657, -2454574, 27471148, -27819576, 7377680, -12191802, 18203682, -20310364, -5778342, -6964827, -3934727, 3856344, -13140452, -2323577, 11880416, -3608310, 4589173, 3770981, 2484639, -14865419, -13771813, 9328669, 10715943, 13272523, -1866163, -30778272, 3940096, 3666828, 12534325, -11463805, -2248416, 3083787, -5194763, -13982266, -2392834, 6432788, -2649995, 18716394, -15235323, --5020280, -30389578, 9091372, 3267933, -4769561, 6771016, 5950141, -455267, -15666430, 4870493, -15355045, -3005940, -2209224, 6003291, -6159520, 11424613, -7034083, 1918777, -14374182, 6789270, -2755222, -2319819, -3909494, 8311299, -3956739, -6083285, -8650064, 9041443, -327491, -4592931, --1901597, 8994198, -3528853, 3951907, -4960151, -3061238, -421444, 278099, -41339, -5017596, -599685, 103616, -4126927, 4225174, -3911105, 11749957, 1938641, 1525250, -16278463, 4555350, --256624, -6583111, 7480760, 13791677, -9964324, -2326262, -300111, -7292855, 11069204, -1895154, -1660005, -7314866, 3884798, -1623498, 1449552, -4704063, -24839406, 60313152, 16461536, 14921790, --7944079, -19275814, -18538690, 5295158, 11735998, 1869921, -656056, -41876, -8774081, -1581085, -4267587, -2313914, 1858110, -922881, -8786966, -440234, 4407710, 6904160, -6102612, 1708323, -4451197, -8776766, 14472429, -8746701, -7604240, -7581154, 2015413, 4234301, 6739341, -7294465, -9386651, -13447006, 8965207, 7967165, -5879810, -600759, -381178, -1536525, 7000260, -7474854, -2232309, -2383170, -9634685, 13732084, -7616051, -250719, -5628018, -1768453, 9619653, -12481175, -5137855, 3469260, -5399848, 4594005, -10599442, 3096672, 4489852, -7911330, 248571, 4256850, --7262253, 7353521, -10046465, 2806761, 10418517, -15159624, 4425427, -5793374, 1110249, 5954436, --4461934, -2321430, 1138166, 1294396, -838056, 4253092, -3168075, -2799782, 2149094, -2504503, -1435056, -970663, 1865090, 1670205, -2371896, 1215476, -386010, 2189897, -1940252, -584116, -1568200, 30602, -1083942, -3543348, 2317672, 2316598, -438624, -2458869, 2414309, -144418, --1001801, 2366527, -4924180, -1049046, 2935610, -3650722, 5364414, -3260954, 348966, 8699993, --2436320, 6255620, -3470871, -389231, 7056095, -4911295, 9025874, -46599860, -109318192, 30926986, -106989784, 73576544, 116342072, -64791728, -68966440, -94036696, -108853800, 2326262, 83965536, 86750288, -90569584, 17772038, -29945586, -59407988, -85263688, -72267656, 5616207, 56120728, 66568236, 59896540, -14321568, -16564615, -10351945, -46788300, -52334176, -22083112, -1438814, 20115480, 44105556, 21540872, -15989626, 22088480, -11049340, -26251914, -4311611, -41962904, -19695646, 451508, 6643778, 31963146, -37214280, 3293166, -5657546, -3507915, -27490476, -7454453, -402116, -5727339, 9493488, 18386218, --3941169, -1470489, -7239168, -11498701, 2338073, 1123671, -1272921, 20746840, 14033806, 5180268, --548145, -19588808, -28324236, -22395570, 1596654, 21053930, 18065706, 23721642, 3208878, 604517, -5378373, -29469382, -16785806, -13864691, -2538326, 22588844, 5091684, 7569880, 21066278, -12182675, --17724256, -4134980, -3042448, 6523519, 7582228, 2364380, 4224637, 1845225, -10887742, -11274826, --2765422, -16643, 8079907, 11706470, 3827353, -1668595, -2562485, -3347927, 2918430, -3301756, --13837848, -2182380, 3242164, 6392522, 13745506, 3339874, -2869575, -6624987, -11331197, -2486786, -1126355, 3678103, 6459094, 8076686, 6357089, -3274913, -9817758, -10344429, -9030706, -1043140, -4477504, 4962298, 13284871, 13642427, 6645388, -2953327, -16789028, -17755394, -8233453, -6224482, -6267968, 16568373, 12277701, 5311264, 70867, -1313723, -2155000, -5058398, -8322573, -7997766, --3400540, 1205812, 3506841, 5606006, 8131984, 7780870, 3052648, -2842195, -6265284, -6518687, --4183835, -918049, 641024, 546535, 176631, 75699, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-4885526, 6077916, -1243393, 4852776, 1415729, 7217693, -1682554, -3734474, -2572686, 4409321, +122407, -1605781, -427886, 4985920, -1328219, 904091, 1749125, -3351685, -2550674, -1093606, +919123, -3478924, 883153, 703838, -4029753, -1313186, -2411624, 336618, -1762547, 639950, +6569153, 3364033, -1924145, 307090, -3122978, 2389076, -842350, 3876745, -8061117, -891743, +1243393, -2876018, 512712, 3897683, 2977486, -3636227, -2687039, -2925410, -545998, -2320356, +-1177895, -3550327, 1347009, -324807, -4099546, -2134599, -1658394, -221191, 839129, -909459, +-430570, 1745367, 691490, -1948305, 1006633, 4345433, -2245194, -595390, -4696547, -1805497, +-371515, 1923609, -1990181, 545998, 783295, 633508, 1505386, -3642132, -129923, -2061047, +1709397, -1326071, -3504157, -1013075, -119722, -79457, -1554241, -1643899, 1690607, -785979, +-324270, 611496, 982474, 28991, -240518, 175557, 579284, 21475, -399969, 758599, +127238, -694711, -632971, 707596, -271120, 245887, -477278, 637803, -618475, -409096, +-114354, -148176, 216359, 7539815, -2809982, 2458332, 6305012, -5101348, -5756330, -838056, +-1433445, -59593, 3213709, 1797981, -8005819, 1263257, -4591857, -6311992, -403727, 2331630, +2512019, -2050310, -264677, -662499, 3445101, -699543, 2833068, -1308891, 331786, 635655, +863825, -3990025, 1686848, 3113315, -1451162, 3963718, -2185602, -414464, -4932770, 3524021, +885837, -1286343, -3825205, -3774203, -1720671, -1277753, 1916092, -399969, 1654636, 1654636, +-3393561, 2133525, -4559108, 1650341, 2655901, 5052492, 4847945, -4158602, 2071785, -247497, +-1103807, 2966749, -2248416, -2663954, -2019172, 2422899, 1197222, 3152506, -3113851, 4736812, +-1529545, -217970, 1421097, 802622, 2767033, -2072859, 3942243, 4998268, 8708046, 4065187, +2769717, -5120675, -941135, -3333968, -2428804, 3186866, -416075, 3932580, 1597191, -287226, +-782221, -654983, 2257005, -1686312, 1799591, 2154463, -1682017, 1044214, 777926, 251256, +1285806, -770410, -239444, -1660005, -9224516, -9926743, 1133335, -812823, 2362769, 2205466, +6558952, 2968359, 3134253, 1589675, -3205119, 1240172, 8286066, -5531918, -617938, 260382, +6652905, 4005057, 930397, 2954401, -521839, 2283849, 3069291, 6820945, 3781182, 3833258, +2061584, 1647657, 3326989, 1212255, -4744865, 2924873, 3928821, -1386738, 2858838, 3775276, +-1306744, 1195612, 4710506, 1749662, -1125818, 1701881, 4807679, -233002, -44023, -933082, +1326071, 4510790, -1319629, -2521683, 1308891, -1543504, 2386391, 2837363, -3338263, 734439, +-2152852, 189515, 1381369, 3799972, 3125126, -7946763, -6442, 3915400, -2015950, -3302830, +458488, 625992, 3933116, -311385, -8483634, -3697430, 2763275, -2345589, 4014721, -1096290, +34360, 1032940, 5032091, 3164854, 2141578, -2566780, 4135517, -477278, 2538326, 1257889, +512175, 880468, 872415, -47245, -646393, 569083, -343597, -2043331, -860604, -830539, +-248571, -457951, 5906, -605590, -1477469, 758062, 326954, -740882, 181999, 1418950, +1038308, 501974, -186294, -219043, -136902, -58519, 1340030, -16789028, 2364380, 1744294, +7845295, -293668, 6127845, 3149285, 1568200, -9834938, 23085, -140660, -7628936, 1233729, +5719286, 1095217, -100932, -710817, -3038153, -3484292, 1568200, 2262911, -261456, 1512902, +1764695, 6870337, 795643, 3047816, 3212099, -3590056, 787053, -839666, -983548, -451508, +2536715, -383326, -1709934, -2742874, -1636383, 887448, -4874788, -3463891, 2068027, -3879966, +1280437, -6378027, -7633768, -1945083, 9463960, -2494839, -547608, 5583995, 1880122, 415538, +5979132, -842350, 677531, -754304, 1760400, 3838627, -1490891, -5966247, 3823595, -3477850, +-6613713, -2638184, -1842541, -6442, 2446521, 7173669, 59593, -71941, -2796561, -266288, +4243428, -2001992, -2177012, 5115843, -4311074, -332860, 2352568, -5232881, -1013612, -1814624, +-1758789, 583579, -2791192, -3948149, 254477, 2448668, -1126892, -1704565, -2225330, -2261300, +-304943, 1631551, 746251, -223338, -650688, -1759863, 94489, -589484, -2137283, -3160022, +-2685428, -37581, -335544, 1276679, -2086817, -100932, -295279, 1016297, -153545, 436476, +14968498, 497679, -900869, -5666673, -3257196, 7902740, -3189013, 6171868, 5311264, -6014565, +-974421, 4631049, -3364570, -1618129, -1569274, -2174327, 999117, 1669132, 290447, 2897492, +-1306207, 464930, 1096290, -1197759, -2824478, -2939905, -3328600, 279173, 3901978, 1709934, +-3286187, 322659, 1545651, 7446937, -2190970, 6668474, -6046777, 2760590, 4807142, -3145527, +-1919314, -6159520, 2929705, -40802, -4324495, 4319664, -5364414, 6053757, -316217, 8559333, +1976222, 955093, 2079301, 3579855, 1910724, -2732673, 4225711, -756451, -4480188, -7004555, +-1900523, 3012920, -3510599, -2257542, 2759517, -3903052, 7728794, -7388955, -21475, 4993973, +-4222490, -1649268, -7769596, -548682, -3035468, -1672890, -2323041, 6770479, 2663417, 722091, +290984, 5846524, 588947, -461709, 4670240, 3870303, 3505767, 7255811, -1525787, 743029, +-2019172, 2078764, 2393908, 525597, 711354, -1177895, -33823, -1683627, -846109, 209380, +668404, 1190243, -552977, -208843, 2334315, 1121523, -851477, 4518306, -229244, -1068373, +-1821603, -1157494, 1655173, -1491427, 169114, -140660, -1554241, 738734, 494458, -379568, +1148904, 1228898, -1176284, 1273995, 7224672, 12786118, -3730716, -5558225, 1470489, -2265059, +3530463, 11642046, 77846, -2669859, 3698504, 2011655, 3451006, 2098629, -6325950, 248034, +-5645198, 3162170, 2739652, 1677722, 10643466, -495532, 7936563, -194884, -188979, 2428267, +-60130, 8361228, 1110786, 5270999, -1934883, 7135552, -3204046, 3812857, 14110578, -2290291, +-3554622, 9960566, 2098629, 6495601, -152471, -6165426, 1933272, -3549254, 4268124, -7431367, +-990527, -3853123, 4207994, -613107, 872415, 7701950, -3728032, -7704098, 2168959, -646929, +-358630, 6267968, 1213865, 909996, -2812130, -5060009, -5379984, -1780264, -4440996, -3338263, +4610111, -2297271, -432718, -1661616, 547071, 46171, 4115653, 2594160, -4702453, -6772090, +-1583769, 241055, 1878511, -1829119, -1662689, 5609228, 3190087, 2775623, 816581, -4523675, +-2097018, 2487323, 112743, -1475858, 1995549, -599685, 1219234, -1451162, 125628, -819265, +-2575370, -3033858, -806917, -2680597, 723702, -372052, 273267, 1888712, -488016, -1421634, +2289755, 525060, 1462973, 887448, 149787, -814970, 1134408, -248034, -254477, -47782, +-243203, 135828, -464393, 674847, 1453310, -1734630, 486405, -2051384, 328565, -971200, +17539572, -9206262, 6154688, 240518, 3033858, -4235375, -3319473, -1928977, 3813394, 4912906, +1043677, -2691334, -5099737, 2666638, 4848481, -947577, 1521492, -2593624, 5285494, 1960116, +-9936407, -3261491, 3195993, -577673, -4225174, -197569, 4517232, -3315178, 1531156, -6457484, +3766686, 8172786, -3385508, 8644695, 289373, -1571421, 5752572, -245887, 439697, 5209796, +-11250667, 1691680, 3404299, 4787278, 3228205, 3740380, -5052492, -3910031, -182536, 1795833, +-5471789, 1808718, 5305359, 4771709, 1759863, 14564234, -4594005, -1823751, -6599218, -2822867, +-4328790, -6059125, 7496866, 3132642, 7321846, -1144072, -11735461, 6830072, -4147865, 3754338, +3355443, 1640141, 2015950, -9260486, 10968273, 2398202, -5095442, -8886287, -5578626, -5566278, +770410, 4540854, -4147328, 347892, 2782602, 2385854, -4295, -1927367, 447213, -192737, +1723356, 1848447, 1975148, 1384053, 1302449, 686121, -3241090, -2897492, 131533, -1063541, +1047972, 1320703, -1511829, 2106682, -520228, 770410, 1730335, 753767, 1340567, 404264, +-3447248, -235686, -55835, 1215476, 882616, 419833, -788127, -923418, 1848447, -541166, +4517232, 784368, 1947231, -21022254, -17696876, -16316044, 3640522, 3351148, 1365800, 732292, +-1165010, -1270774, 436476, -2783139, -5920613, -4115653, -10364293, -4578435, -5031018, 6193880, +-7966628, -3526705, -4510253, 1336809, 90194, -2067490, 2323041, -692027, -8271570, -168041, +7588671, 980326, -7378754, -6522445, 2849711, -2638184, 6368900, 4478577, -6971806, 6881075, +10861972, -9107478, -9328669, -4989142, 3426310, 8635032, -6152541, -6361921, 3266860, -3673808, +671626, -818728, -792958, -9907416, 1891933, 5997385, -3080029, 3433826, -4926865, -5858336, +-5815923, -2878702, -10018548, 17157320, -3638374, -1158567, 2995740, 1866163, 3654480, 2336462, +5352603, 2443837, 4647155, 10619307, -13706851, 9590125, -3270081, -2606508, -471373, -15298137, +-700617, 4680978, 424128, 602906, 4274030, 1563905, -379568, 2543158, -5172215, 5987722, +-2165201, -3486440, 3250217, -2120640, -1913408, 612570, 2652679, -2047626, -3247532, 1104344, +2574833, 100932, -1103807, -2830920, -1556926, 390305, -4002910, -2674691, -1397475, 1908576, +-906238, 143345, 2109366, 35970, -3987877, -908386, -3396246, -3019899, -2849174, -1758789, +-3147674, 2664490, -941672, 175020, 5714454, -1140314, -1743757, -1546725, 3090229, 775242, +-1065152, -20672752, 15845208, 4198331, 3453691, -3827353, 15509127, -2441152, 7306813, -22012, +6573985, -9230958, 3652870, 3621731, 1411434, -4541391, 13804562, -3743064, 4206921, 3176665, +14326937, -9667435, -630823, 3986267, -2493766, -7093676, 4278861, -6672232, 1723356, 1828046, +-7838852, 3033858, 638876, 395137, 15756624, 9854802, -1323387, -6447820, -5043902, 3518652, +-842887, -9450002, 2677912, -830002, 2778844, 7118372, 10478110, -7197292, 7123204, 3570729, +-4730907, 3408057, 2736431, -7443715, -4034585, -4666482, 7498476, -8112657, -6898791, -18595598, +-13634911, 3778498, -2568391, -2674154, -7173133, -14428406, 5525476, 1112397, -436476, 7069516, +6009733, 8502425, 5037460, 2057826, -255014, 1360968, 9597641, -7096897, 13146895, -4836670, +-3740917, -12018392, 1906429, -2206003, -6138045, -1084479, 1453846, -3022583, 3491809, -1451162, +142271, -1477469, -488016, -1268626, -301185, 2173790, 3435974, 278636, 2835215, -3204583, +-2289218, -1623498, 1175210, 2475512, -3278671, -1228361, -1533840, 481573, -1834488, 1473711, +-340376, 1283122, 2164127, 36507, -3495030, 4930623, 4723927, 1974611, 21475, -2126546, +-145492, -1107028, -526134, 5576478, -24987582, 23119272, 16607565, -6772627, -5717675, 6243272, +56908, 569083, 11033771, 7809861, 321586, -1624035, 4444218, -2563022, -1595580, 3115462, +-4944044, 6213207, 4258460, -5159867, 6698002, -716723, 1807644, -483184, -11011222, -609885, +8018704, 8313983, 3263638, 3564823, 4458176, -5124970, -6487011, 2808909, 4997195, -202400, +-2501819, -5652177, 2355790, -1653026, 7083475, 8341900, -926102, 9615358, -4992900, 10715407, +5807333, 12913356, 937914, 1893007, -3709241, -5264556, -992674, 9913858, 16181826, 989990, +12336220, -5305359, -11818676, 1592896, 4474819, -10327786, 10785200, -3550864, 3819300, -22764400, +-9785546, -134218, -5462125, 4424890, 7544647, 15835544, 3309272, 134755, -7735773, -13731010, +3563212, 610422, -11522860, 4749160, 2513630, -8308078, -2349884, 2011655, 9135395, 228707, +2774012, 2813204, 4770098, 3925600, -7699266, 2771865, -118648, -1510218, 187368, -354872, +-1218697, 3308199, 3124589, -3191161, -1305670, -17717, 2237678, -1205275, 3183645, 500364, +2325725, 2084670, -2492155, 1924682, 2332167, 5980742, 564251, 3430605, 3747896, 951335, +4396436, 1619740, 2280091, 1038308, 577136, 1618129, 5162014, -2160369, -4706748, 1190780, +6153078, -9710384, 16675211, -7154879, 2004676, 12465069, 12899934, -952409, -7412040, -3974992, +-3930432, 956704, -9581535, -7600482, 8025684, 2017024, 5159867, 6288906, 7432441, -3322694, +4821638, -1821603, 5773510, 24049670, 5664525, -11592117, 11259257, 12931073, 563714, -2131915, +683437, -6395207, -8817031, -4613869, 13186086, 8857296, 7301982, 11216307, 2273648, -1930588, +-5155572, -14242648, 6601365, 7514582, 4171487, -2255932, -1763621, -4912906, 1981591, 11596949, +7990787, -13285944, 8777303, -11201275, 11810623, 2522220, 4421669, 5281199, -1976222, -6330782, +-1926830, 4755603, 20434380, -3252901, 10206990, -4538170, -9241159, 10851235, 9766756, 2479807, +2233920, 9840844, 3441343, 580894, -1122597, -6255083, -1930051, -9176734, 2947421, -7124277, +-3568044, 14483703, -767189, 395137, 286152, 6681896, -2183991, 1995012, 4420058, 6729140, +7271380, 6066642, 2374580, 3188476, 3323768, 6096169, -944356, -4862977, 6885907, 2739652, +3795677, 4185983, 174483, -482647, 428960, -3034395, 1890323, 6535867, 731755, 842350, +-1377074, -2422899, 5454072, 5873905, 1137093, 10409390, -1293859, 4494684, 7961259, 514322, +2208687, -1147293, -3051574, 826781, 1728188, 2889439, 5733245, 2508798, 4294968, 1604707, +1028645, 5980205, 8505109, -4292283, 8644159, 11042898, -12664785, 8529805, 4935991, -3061238, +789737, 5868536, -5299990, -11187853, 16806744, 3633006, 3218541, 3141232, 9976135, 2907693, +-10039486, 10726144, -14397267, -16819628, 1495722, 2024003, -9287867, -3044058, -27509266, -19477676, +-14668387, -4955856, -15090904, -7430831, 5724118, -13566191, 9520869, 8757438, -11049877, 14268418, +7611756, -2790655, -1435593, -7383049, 320512, -13184476, 28934658, 8461622, 4509179, -14441291, +3518115, -4458176, 19187766, -3858491, -499827, -17511118, 17137456, 1147830, 6711960, 5563057, +9994926, 5666136, -3880503, 5731097, -8534100, 8664023, -3132105, 5107253, -13661217, 30942018, +4720169, -14343043, 7785165, 9038759, 7063074, 10532870, 8986682, -13929116, 11109470, -272730, +8958765, -7045894, 2662880, -17923972, 7541426, 7819525, 2268817, -4298189, -13561359, -872415, +9283035, -12030740, -1643362, -1414655, -57982, 3690451, 2793339, -2704219, 5216238, -294205, +-2557116, 4133369, 3170760, -3757023, -3039226, -7852274, -492848, -7304129, 4394289, 1239635, +733903, 5767604, 8871255, 5638219, 4173635, 2834679, -3156264, -1219234, 91268, -5695664, +-4719632, -1293859, -1911797, 3106872, 7204271, 2294050, 4556961, -1016297, -89121, -22364432, +6277095, -3061238, -2173254, 13280576, -2439005, -2260764, 1292785, 11890617, -3091303, 6936372, +-5800354, -6841346, -8742406, -11087458, 19270444, 10047539, 6996502, -6048925, -17637284, -21648782, +10431939, 7185481, -7675107, 5163088, -5212480, 519154, 19181860, 8377871, -5424007, 10344429, +-3478924, 5369783, -6373732, 6493454, -14145475, -20809116, -8072928, -9280887, -1562831, 24359444, +-19810536, 11468100, 6605123, 4981089, -4363150, 9590662, 4300336, -19033148, -24193014, -8614094, +-11022497, 27420682, 19898584, -6637335, -12204150, -1016297, -12523588, -2648384, 19983410, 18487150, +10513006, -16302085, 3549791, -12734041, 20037096, 9504763, -2085744, 71404, 6767795, -11819213, +2690260, 17653390, 9622874, -15968152, 17384418, -8854612, 10404558, 27545236, 10553808, -6485938, +-8118025, 23574002, 2640331, -1436667, -10667088, 4153234, -5005248, 1516660, -3106872, -556735, +-652298, -11742441, 1529545, -1462973, -3298535, 5163088, -860604, -4154844, 799938, -2470143, +705985, -3066070, -4519380, 4067871, -5014911, -3245385, 2459406, 6127845, -247497, 4326643, +3629247, -817654, 42413, -5906654, 871342, 1996086, -4938139, 6703370, 3374771, -4095251, +-2679523, -2860448, -1205275, -6596533, 3968550, 6245420, 357556, -4913443, -2778844, 3241627, +-1351304, 3115462, 4481799, 313533, 1700807, -17768280, -6956774, 29768956, 13785771, 17157320, +4190814, -24723442, 7648263, -20057498, 13202193, 37205156, 13232257, 23345832, -10500121, 6746320, +10850161, -1112397, 2806224, -9535364, 2441689, 14636175, 782221, -3891777, -13196824, 7279433, +5466957, -13448616, 7032472, -5101348, 10312216, 14713484, 15645492, 18844170, 1906966, -14596446, +3968013, 8909373, -146566, 25653840, 2275259, -29464550, -18475876, 8398272, -7480223, -34775276, +1283658, 14839112, 5493800, 1567126, -3142842, 18335752, -14374182, -17838072, -3424700, -6379100, +-17351668, -952409, 1296006, -10108206, -14936286, -9150965, 763430, 2178085, -21585968, 6466610, +-8983461, 5267241, 24977382, -3395172, -8644159, 17398376, -2993592, 14487998, -13678934, 9360344, +644245, -15855409, -17683990, 31988916, 3147137, 4331475, 1551020, 46171, 32096828, 26208428, +8316668, -2398739, 12610561, -6145025, 4331475, 7508677, -1344325, 9863929, 4278861, 2885144, +-14561550, 8706972, 4709432, -803159, 1374926, -4927938, 4255776, 11331734, -1822140, -3654480, +-6227166, -6833830, 6859063, 8047695, 490700, 56371, -6130529, -6619619, 1246614, -9515500, +1416266, -3148211, 10063645, 3590593, 496069, -6277095, -10966125, -2479270, -5286031, -7397008, +4355634, 4482335, 8647917, 25170656, 3271691, -34470872, -15591805, 21391084, -30829812, 17522930, +-29176250, 2374043, -4658429, -42198052, -5558762, 18997714, 38841536, 12372727, -5640366, 9431748, +-14894410, -4993437, -33880312, -1883343, -23010824, -3313031, -5036386, -15904264, -16874390, -5603859, +9701794, -15285252, 10537165, 19398756, -19989314, 7249368, 6458557, 3433826, -21272974, -3248069, +-217970, -22286586, 5814849, 28389196, -2152852, -41213968, 14599668, -24893094, -63546724, 17922362, +-26278758, -32682554, 1744294, -14965814, 4539781, 11235098, -6259378, 16734803, -13984414, 14618458, +-11537893, -28440736, 170725, 20351166, 19514184, -36956584, 5441187, -4420058, -27507654, -7358353, +-6812355, 47873852, 23905252, 28083180, 12799003, 12213813, 29631516, 42561516, -9711995, -20164872, +-22000434, 3863860, -27334246, -8411157, 14157286, 22992570, 3235184, 2088428, 19967840, -4621922, +-11324755, -15411416, 12031814, 13643500, 13406740, 3129958, 15379204, 6376953, -9426916, -2094333, +-9130564, 14024679, 2268280, -1639604, -15726023, 4772246, 12607876, 1384053, 241055, 12316356, +-9827959, -6575595, 6819335, 695248, -4958540, -9468255, -3020973, 14492830, -697932, -32087700, +-2977486, -793495, -7348689, -6256694, -8472360, -5194763, 6998649, 6258304, 3729105, 2221572, +-5268851, -6656663, 55716464, 60232084, -35359392, -14008573, 26891328, -12200391, 10846940, -16780438, +5019206, -17241072, -32293860, 44000868, 6415071, 13817984, 11316165, 4120484, 5779416, 1322313, +8916352, 10933376, -31249108, -25761750, -22570590, -21308406, -15963320, -10060424, -8339216, -16753057, +-9491878, -14198088, 16145319, 12277164, 6207839, -7823820, 3280281, -33063196, -16612934, 8994735, +-30048664, -2777233, 14625437, 25942140, 3802120, 5028333, -11098195, -19403052, -22886806, 18387292, +-2488397, 18204218, -64170568, 4009352, -7460895, 7389491, 39237748, 4820564, 6549289, 4429185, +-11492796, -13215077, 361314, -2607045, -36026184, 7733089, -13212393, 32319628, 2156611, -35403416, +-48195440, -29943976, -6083821, -33843804, -33143188, -20561620, 23378044, -6052146, -22824530, -30775588, +25724170, -3305514, 15222975, -17313014, 9342091, 25365004, -16840030, -24417426, -10255845, -12605729, +26527328, 5595269, -11629161, 10457172, 7784628, 23088670, 14328548, 6725919, -20495584, -20424180, +-4488778, 2403571, -5360656, 3705483, 14220637, -3098282, -1189706, -10363219, -7597261, -5645198, +-10787347, -2019708, 4441533, 6542846, 33530810, 2261300, -8395050, -2640331, 4496831, 10507637, +-594316, 16623134, 6971269, 38341708, 5950677, -252866, 1417876, 7049115, -10610180, -16483011, +62755376, -36376224, 23831700, 44472776, -21304112, 6334540, 35544612, -44917304, 1833414, 5098663, +21923124, -50377820, 2849174, 3462818, 16632798, -21945672, 328565, 9104794, -29617558, 4484483, +-2202245, -5475547, 16387985, -4837207, -4423280, 6974490, -3834332, -4976794, 16079284, -14900852, +4475893, -6098317, 4153770, -9520869, -5254893, -11627550, 230854, 2348810, 31419296, 10496900, +15304579, -3097208, 426276, 23312008, -910533, -8718247, 13108240, 9679246, -10397579, -30348776, +27960238, -30246770, 5044976, 14632954, 19199578, -29764660, 31967442, 51311976, -27921046, -51991652, +69785168, 24716464, -34323768, 16000901, -33036888, -41052372, -20412368, -7434589, -42874512, 34879968, +-59804736, 18083422, 28701118, -23690502, -79981952, 75848584, -13065827, -19437948, 50596864, -50227496, +26120380, 43182676, -12802224, -11724187, 13499619, 14897094, -7964480, 5434744, 4543002, 13758928, +-6613176, -4867809, 15416785, 63351, 3557307, -1519345, 3004867, 12329777, 9183177, -1559073, +-10780368, 18023294, 19523310, -3565897, -16517907, -1666984, 8362838, 1881196, 12092480, 161598, +10603737, 4533338, 15483894, 11436424, 13037373, -19016504, 5084705, -265751, 951872, 178778, +-11491185, -20550344, 30412664, -4776541, -27759984, 10264435, 6976101, 3023657, -4403415, -19206556, +-15238544, 34819300, -23038742, -18430242, -36750424, -16944720, 21767968, 16884054, -9840307, -12259984, +11571179, 28875602, -12477954, 21772800, 26074210, -18585934, -2714419, 15911780, -4185446, -143881, +-5330592, 1328756, -26742076, 7245610, -5974300, 834834, 6373195, -5437429, 5450314, -11144903, +-22409528, -10647224, -38976828, 4799626, -141734, -5875516, 7162932, 3641059, -2593624, -8938901, +15588584, 24654186, -26035554, 37918656, -4339528, 5006322, 5448703, 33512020, 15352897, 24506010, +-30888868, -7709467, -5838471, 43707736, -40900436, -14015552, 19913616, -1532767, -47222092, 3136400, +-9784472, -8124468, 21481278, 23544474, 1604707, -17770428, 38060928, -16111496, 63508072, 785979, +-29541858, -92879, -5171678, -33420214, 63807644, 12782896, -9574019, -75647256, -37828460, 21251498, +-27875948, -25092810, 29556892, -110861160, 2748242, 21796422, 15988553, -9004936, 31120796, -19107236, +-2517388, 110059, 16189879, -4645544, 3274376, 22053584, -1583232, -5598490, -7030325, -7972533, +-390305, 2451890, -1510218, -3366718, 14232985, -20003274, -4518843, 2359011, 3299072, -11986717, +-20281910, -5166846, -6248104, -2909840, -1717450, 3911105, -22491134, 1719598, 17011828, -10619844, +13004624, 9985799, -9811316, 611496, -7185481, 2839510, 4777078, -10466835, 29417842, -14281840, +-13191992, -17027398, 14239427, 19317152, 11791833, 48008072, -9225053, 10887742, -4577899, -24752970, +12429098, -15771657, -8877697, 9910637, 21544092, -22691922, 24821152, 2863670, -1233729, 50586660, +-10255308, -5608154, 37924560, -24225764, 33504504, 14461692, -7919920, 13366475, 14124000, 31253404, +32502702, 9447317, -26357140, 55205364, -55356224, 1873680, 50407348, -27116276, 11178189, -5975910, +-6510634, -58372364, 39660800, 10490994, 17617418, 18596134, -12108587, -29055990, -21831318, -17705466, +2784213, 55472188, 394063, 43509628, -14455786, -33483566, 1859721, 12512850, -27485106, 44647796, +18178450, 21940840, 44110388, 28552942, -47160888, 17997524, -67653784, -83598856, 1767379, 70399344, +44163540, 5696737, -49787796, -177893792, -32693828, 55009404, 62872416, 89085672, -4512937, -112974816, +-63712620, -58852864, 90339808, 69042672, -12451647, -45145476, -26402238, -54900956, -6994354, 70731136, +-6849936, 16546362, 11826192, -11598022, -25608742, 38548944, -15628849, 21506512, 15781857, -1462436, +-35782984, 49090404, -19342386, -9268539, 14230300, 12738336, -26553098, 443455, -8309688, -10023917, +3403225, -954557, 19676318, -35107064, 18625662, -42251740, -6657200, -7043747, 50258096, 1497333, +13655849, -30659088, 16056198, -11526082, 22226992, 26558468, -12816182, -30494268, 11018202, 7902740, +25736518, 7217156, -43612172, 36628016, -27421218, -4743792, -17755932, 17024176, -19945828, -848793, +-2097555, -5411122, 4093104, 18756660, -19812148, 8717710, 1555315, -4587025, 276489, 13226889, +-16747688, -4581657, -2454574, 27471148, -27819576, 7377680, -12191802, 18203682, -20310364, -5778342, +6964827, -3934727, 3856344, -13140452, -2323577, 11880416, -3608310, 4589173, 3770981, 2484639, +14865419, -13771813, 9328669, 10715943, 13272523, -1866163, -30778272, 3940096, 3666828, 12534325, +11463805, -2248416, 3083787, -5194763, -13982266, -2392834, 6432788, -2649995, 18716394, -15235323, +-5020280, -30389578, 9091372, 3267933, -4769561, 6771016, 5950141, -455267, -15666430, 4870493, +15355045, -3005940, -2209224, 6003291, -6159520, 11424613, -7034083, 1918777, -14374182, 6789270, +2755222, -2319819, -3909494, 8311299, -3956739, -6083285, -8650064, 9041443, -327491, -4592931, +-1901597, 8994198, -3528853, 3951907, -4960151, -3061238, -421444, 278099, -41339, -5017596, +599685, 103616, -4126927, 4225174, -3911105, 11749957, 1938641, 1525250, -16278463, 4555350, +-256624, -6583111, 7480760, 13791677, -9964324, -2326262, -300111, -7292855, 11069204, -1895154, +1660005, -7314866, 3884798, -1623498, 1449552, -4704063, -24839406, 60313152, 16461536, 14921790, +-7944079, -19275814, -18538690, 5295158, 11735998, 1869921, -656056, -41876, -8774081, -1581085, +4267587, -2313914, 1858110, -922881, -8786966, -440234, 4407710, 6904160, -6102612, 1708323, +4451197, -8776766, 14472429, -8746701, -7604240, -7581154, 2015413, 4234301, 6739341, -7294465, +9386651, -13447006, 8965207, 7967165, -5879810, -600759, -381178, -1536525, 7000260, -7474854, +2232309, -2383170, -9634685, 13732084, -7616051, -250719, -5628018, -1768453, 9619653, -12481175, +5137855, 3469260, -5399848, 4594005, -10599442, 3096672, 4489852, -7911330, 248571, 4256850, +-7262253, 7353521, -10046465, 2806761, 10418517, -15159624, 4425427, -5793374, 1110249, 5954436, +-4461934, -2321430, 1138166, 1294396, -838056, 4253092, -3168075, -2799782, 2149094, -2504503, +1435056, -970663, 1865090, 1670205, -2371896, 1215476, -386010, 2189897, -1940252, -584116, +1568200, 30602, -1083942, -3543348, 2317672, 2316598, -438624, -2458869, 2414309, -144418, +-1001801, 2366527, -4924180, -1049046, 2935610, -3650722, 5364414, -3260954, 348966, 8699993, +-2436320, 6255620, -3470871, -389231, 7056095, -4911295, 9025874, -46599860, -109318192, 30926986, +106989784, 73576544, 116342072, -64791728, -68966440, -94036696, -108853800, 2326262, 83965536, 86750288, +90569584, 17772038, -29945586, -59407988, -85263688, -72267656, 5616207, 56120728, 66568236, 59896540, +14321568, -16564615, -10351945, -46788300, -52334176, -22083112, -1438814, 20115480, 44105556, 21540872, +15989626, 22088480, -11049340, -26251914, -4311611, -41962904, -19695646, 451508, 6643778, 31963146, +37214280, 3293166, -5657546, -3507915, -27490476, -7454453, -402116, -5727339, 9493488, 18386218, +-3941169, -1470489, -7239168, -11498701, 2338073, 1123671, -1272921, 20746840, 14033806, 5180268, +-548145, -19588808, -28324236, -22395570, 1596654, 21053930, 18065706, 23721642, 3208878, 604517, +5378373, -29469382, -16785806, -13864691, -2538326, 22588844, 5091684, 7569880, 21066278, -12182675, +-17724256, -4134980, -3042448, 6523519, 7582228, 2364380, 4224637, 1845225, -10887742, -11274826, +-2765422, -16643, 8079907, 11706470, 3827353, -1668595, -2562485, -3347927, 2918430, -3301756, +-13837848, -2182380, 3242164, 6392522, 13745506, 3339874, -2869575, -6624987, -11331197, -2486786, +1126355, 3678103, 6459094, 8076686, 6357089, -3274913, -9817758, -10344429, -9030706, -1043140, +4477504, 4962298, 13284871, 13642427, 6645388, -2953327, -16789028, -17755394, -8233453, -6224482, +6267968, 16568373, 12277701, 5311264, 70867, -1313723, -2155000, -5058398, -8322573, -7997766, +-3400540, 1205812, 3506841, 5606006, 8131984, 7780870, 3052648, -2842195, -6265284, -6518687, +-4183835, -918049, 641024, 546535, 176631, 75699, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -4398047, --2920041, 1234803, -1123671, -1386201, -2139968, 525597, 4264366, -1364189, 21475, 438624, -7299834, -140660, 1401233, -2997887, -2079838, -742493, -1958505, -2107218, -1975148, -1343251, --1876364, -2482491, 2096481, 3469797, -1898912, 529892, 147640, -3933116, 118112, -85362, --2785286, 5270462, -2684892, 2997350, 1149978, -806917, -3015604, -2792266, 2718178, -1409286, --1012539, -4161823, -1052267, -386010, -1955284, 5557151, -1205275, -349503, 2331094, -405338, --4621922, -2379412, -4073240, -2742337, 6344204, -1781338, 7054484, -30065, -282394, -1278827, -830002, 294742, -4179540, -4466766, 3262028, 368830, 2221035, -301185, 2585034, 1578937, --4049081, -28454, 1362578, 2187749, 4832, 1846299, 3376918, -4488778, 1195075, 1152125, --2234457, -2684, 1031866, 3218004, 2132451, -2246268, -667331, -124017, 765578, 1022202, -791885, 840740, -577136, 435939, -1209033, -784368, -5906, 1637993, 733903, -50466, --105227, -1113470, 665720, -86973, -367220, -96637, 594316, 244276, 430570, 1055488, --338229, 463320, 1284732, 9656697, -723702, -1136019, -2439005, -5237713, -6467684, -5915244, -690416, 5323612, 1881733, 7098507, 2458332, -3182034, 883153, -8390219, -7101729, 3339874, --2477123, 4693326, -409633, -3714073, -1836099, 9294309, 2096481, 3944928, -151398, 3026878, --1355599, -1112397, 1861868, -1250909, -4021163, -272194, 1508607, -445603, -216359, 5921686, -3673271, -6310918, 171262, -3993783, 6704981, 3975529, 305480, -2346126, -2413235, 3099893, -1740536, 5010616, -4602058, 7938174, 9732933, -2647311, 9483825, 13422, 4982699, 3107946, --1722819, 1665911, 7606387, -860067, -5089536, 4407710, 1439888, -29528, -562641, -873489, -350577, 4450660, -2816425, 1634235, 1212255, 2369211, -3641596, 4197257, 991601, -341450, -1344862, 633508, 430570, -150861, 967978, 2477659, -1704028, 1014686, 675384, 1057099, --1553704, 137439, -2508261, 466004, 1213865, -1438814, -912144, 361314, 722628, 848793, -252866, 774705, 21475, 37044, -8361765, -6541235, 2030983, -3710315, 2615098, -4632122, --6577206, -6075768, 823560, -4541928, 4122095, 3024194, -5840619, -1210107, 2345589, 543850, -2889439, -1726040, 2989834, 3702262, -5188321, 1643362, 1676648, -4156455, 2413772, 418759, --4917738, 3626026, 3479461, -1746441, 3803731, 543850, 3099356, 2824478, 1156957, -1844689, --483721, -5871221, -1795833, -2920041, 3062312, 3250753, 1256278, -9402757, 1767916, 3960497, --2153389, 6608881, -5433671, -7170985, 517544, -2127620, 2263985, -5119064, 9306120, -490163, --3154654, 915365, 85899, 5317707, -334471, -3099356, -238371, -2103460, -2901787, -3630321, -1675037, -6563784, 640487, 242666, 1893544, 4391067, 1408212, 3125663, 4800700, -3304441, --620623, 1084479, -4175782, 2831457, -1449015, 2413772, 1882806, -1277753, -1018444, 3551938, --1192390, -3229816, 416612, -338766, -163746, -1740536, 2539400, -1987496, 937914, 972273, -1271310, -510027, -584116, 161598, -1039919, 393526, -728534, 67646, -471373, -969589, -1215476, -490700, 226560, -169114, 28454, 22549, 175020, -20105816, -448824, -2561411, -13957570, 186831, 727460, 2881386, -2086280, 6970195, 1625645, -7705708, -4203163, -9019431, -1454383, -747861, -3180423, -2699924, -3386045, -2203318, 10827613, -5166309, -2617246, -2980707, --8476118, -483721, -2179159, 2722473, 4013110, -1483911, -186294, 2311229, -2690260, -826781, --1220308, -3151969, 3215857, 6620692, -941135, -1246077, 5203353, -7190849, 4452808, -5767604, --11507291, -7336341, -11461657, -1853278, -6593312, -4466766, 1058173, 4393752, 2159295, 3104725, --1804423, 3793530, -4945655, -1210107, 3973382, -139050, 5569499, -2500745, 1625645, -4117800, --3151969, 2845416, -7053410, 1737851, 5069135, -6864969, 577136, -1903207, -3250753, -4541928, --4109210, -1438814, -1869385, 955093, 4738423, -2455648, 1413581, -4173635, -4449586, -3519726, -1551020, 2206540, 513785, -1177895, -1362578, -1928440, 911070, -1650878, -1458141, -729608, --1359894, -265214, 151934, -2308008, -603980, -367220, -1759326, -536334, -834834, -95026, --373125, -3114388, 286152, 1165547, -654983, -1287417, -204548, 1767916, 884763, -832150, -12785581, 69256, -7154342, -6878927, -2365990, -5022965, -1941862, -3782256, 967441, 600759, --5657009, -3342022, -6211597, 11737072, 4978404, 1064078, -673773, 6354404, -9521942, -172872, --206695, -6036577, -8011188, 7143068, 142808, 5088463, -8033737, -3540664, -2798708, 2763812, --284542, 3403225, -5538361, 1644973, 2273112, -6027987, -5763846, -5250598, 1256815, -1752347, --1605244, 5032628, -1473711, 525597, 106837, -1037235, -5711770, -3529390, -641561, -8645232, --5603859, -4574140, 2417530, 1606855, 3464965, -892816, 1532230, -140123, -852551, 3960497, --3078418, 6931004, 1011465, 2065342, -884763, -2352032, 2813741, 2108292, 5549635, -1714229, -904628, 3313031, -1945083, 15032, -7233799, 3374771, -5556077, 3495567, -4092567, -4087198, --7797513, -1589675, 2044941, 802085, -1266479, 1769527, 853625, 3526705, 647466, -1152125, -3205656, 1653562, -2728378, 620623, -2203855, 2403034, -925565, 351650, -548682, -352187, --1928440, -142808, 192200, 309238, -1094143, 865973, -1600949, 591095, -220654, -914828, --1403917, 313533, -911607, 2040110, 690953, -642635, -832687, -934692, 1744831, 1017370, -1675574, 76773, 279173, 735513, 15052787, 14245870, 10618233, -3677566, 3850438, 5340255, -3110093, 2985002, -5374078, -4704063, -7014756, 6121402, -6586333, -872952, -4808753, 8142185, --9176734, -6876780, -3460133, -1545651, -5083631, -7620346, 2086817, 318901, 374736, -9225053, --5107253, 2308545, 1849520, 2514703, -2547989, -3717294, 219580, 2666638, 3445638, -2660732, -3273302, -4942434, -1358820, -11973295, 4286378, 1341104, -2117956, -2344515, -8836895, -4097936, -1031329, -2221035, -12383464, 6547141, 2667175, -112743, -3400004, -2684355, -5284421, 1489817, --1925756, 3442953, -853088, -1875290, -7079717, -1462973, -782758, -3968550, 7606387, -5688684, -21475, 4449586, -2001455, -6146098, -3475166, 5068062, 7429757, 3594888, -661425, -345208, -3889630, -8227010, 3213709, -983548, -482647, 249108, 1656784, -594853, -427886, 275952, --1676111, -5025112, -1413044, -1629403, 1400159, 907849, 474057, -2032593, -1088237, -2327872, --2791192, -812823, -196495, 3087545, 212064, 296353, 304943, -1271310, -749472, 1339493, --1792075, -412854, 486942, 780073, -2122251, -126702, -275952, 1038845, -1552631, -502511, --955630, -1570884, -3211562, -1589138, -249645, -1515587, -96100, -1611, -250182, -1883880, -18321256, 6164352, -2642479, -2105071, 6453725, -12330851, -2294586, 10035191, 5050882, -6950331, --120796, -4708358, 1967632, 7721278, 18940268, 6263673, 14761266, -5194763, -1056562, -14305999, -4901632, -4160213, 4073777, -6256157, -288837, 622770, -2190970, 5159867, -2260764, 2471754, -6374805, -4836133, 2902324, 8097624, -2157684, 2716030, 56908, 3260417, 4476430, 4559645, --24256364, 8895951, -2758980, -11376295, -1938104, 6955700, 2178622, -8789114, 4796942, 6933688, --14260902, 1150514, -3986267, 8422431, 1978906, 6956237, -1644436, -5012227, -9995463, 612570, --6022618, 18971944, 3565360, -3125126, 6385006, 788663, 6180995, -14942191, -1905355, 2293513, -4690105, 1087164, -6923488, -1115081, 2615635, 6629282, 5671505, -4651450, 188979, 6519224, --220117, 3058554, -2214056, -1146219, 4650376, 423054, -291521, -650151, 297427, 2221572, --2097555, -985695, -208843, 1717987, 1761474, -252866, -535260, 4488778, -1371168, -808528, --2316061, 280247, 1295470, -1223529, 152471, 1352378, 1914482, -1653026, -666794, -2720862, -268435, 2074469, -945967, 347892, 1049046, 1050120, 3714073, 416612, 1854889, -164819, --1512365, 2323577, 653909, -21703006, -23802172, -8147016, -1851131, 441845, 5066451, -10164577, -3216394, 11990475, -6868727, 6383395, 8308078, -5780489, 188442, -2814814, 10160282, 14158360, --6770479, -7991861, 7131793, 685584, -6784438, 3218541, 127238, 1774895, 2039036, -3634616, --2632815, -15128485, -762357, -4327717, -331786, -448824, 10302553, 3052648, -18445810, 308701, -8921184, -10099079, 2677375, 10859288, -2369748, 3821984, 239981, -2850785, -6996502, 13960791, -11770358, -8936753, 4699768, -3324842, -441845, 4343823, -3078418, 3642669, -5506685, -632434, -11818139, -3352759, 2518462, 5568962, -4004520, -9697499, -391379, 3326989, 1746978, -4661650, -640487, 2611340, 4220342, 8623221, 5363878, 9489193, 5042829, 1831804, 4440996, -1560684, -8587787, -282931, -6737193, -9110163, 1146219, 2954401, -1566589, 6806987, -3491809, -3680787, -2734821, -861678, 756988, 342524, -4183298, -592169, -2509872, 3092377, 1416802, 2485712, -4887673, 601832, -1692754, -7054484, -514859, 1631551, -1773285, -733366, 739271, -1575179, -1533840, 1561221, 228707, -1668058, -1155883, 3444564, -459025, 1613834, 886374, 1110249, --2443837, -2627983, -1516660, 594316, 1218697, 2058363, 1563368, 1003412, 994822, 2588255, --648003, -23369454, 26096758, -1501628, 16796006, 1293322, -9721658, -2904472, -5622649, -6821482, --871878, 479963, 12157442, -1906966, 8361228, -8376260, -419833, 2087354, 1950989, 972273, -10574209, 10536629, 3875134, 1697586, -1296006, -2025614, -569083, -1726577, -17533668, -5963025, -8135742, 5260261, -1918240, 924492, -8274255, 4242891, -10154913, 2266132, 16248398, 1798518, -3564286, -13437879, 7245073, 6318434, 1779727, -9001178, -3904662, -4173635, 793495, -8074539, -8349954, 10179072, 6174016, -851477, 15247671, 5434744, 22291418, 8739185, -5883569, 18574122, -482647, -6700686, 13474923, -2128693, 4495220, 8508330, -6031208, -5164698, 12474196, 13392782, -7949985, -10755135, 4184372, -42950, -4920422, -8821326, 6671158, 11862700, 7211787, 17196512, -2445984, -3710852, -3732864, -10492068, -3915400, 6609955, 1112397, -1866163, 514859, -6518687, --4515085, 992674, 1789391, -150861, 7192997, 5672041, 2593624, 299037, 2186675, 3432753, -1846299, -3212099, -1212255, 1037235, -634581, -1056025, 3108483, 343061, -715112, 2475512, -1046898, 843961, 1076426, -2094870, 689879, 6278169, -2669322, 3985730, 1968706, 239444, --2642479, -3026878, -1433982, 5740224, -12565464, 16683264, -4832912, -10983842, 3663607, 7245610, --7286949, -3707094, -15379204, 6420439, -5641977, -1874753, -14096620, -6215355, -4783520, -2433099, --6357089, 3301756, -2853469, -3496104, 3314641, 4631049, 8207146, 8016557, -3478387, -2934537, --11355357, 4447976, 220117, 7446937, 2055679, 1973538, -2571075, 2961380, -7095823, -6045167, -3345243, 1670742, 3396246, -13887240, 4641786, 9026948, -25233, -12237972, -12735115, -9967008, --29372208, 4113505, -3377992, 14178224, -6952479, 11770895, 3800509, 760746, 15241228, 2274722, --1748589, 10899553, 4064650, -14977088, -7407745, 1733556, -4747550, -8525510, -5138929, 19191524, -8868571, -9113384, -1083406, -5143760, -2470143, 2756832, 13611288, 190052, -3628711, 17923972, --6423124, -16394427, -15563888, -18546742, -3260954, 1354525, -459562, -3313567, -2237141, -7966628, --1528472, 2251637, -2425583, -2402497, 1589138, 1450088, -11595338, -4842576, -9073655, 370978, --3053722, -3012920, -4841502, -1589138, 1336272, 6995428, 107374, 8593693, 4295504, 6294812, -710817, 2931315, -2932389, 5734318, 1074, -4234301, -6190659, 3527242, 607201, 1925756, --1590749, 1081258, -1923609, 1945620, -667331, 2318209, -460098, -1076426, 1572495, -382252, -7329362, -12034498, -2995203, -3197603, -1542430, -802622, 32114544, 5288179, 11767674, -5654862, -10283225, 20702280, -17671106, 26883810, 15961172, -7150047, 285615, 1660005, -9608916, -16163036, -1161252, -9359271, -14401562, -6447820, 1333051, 51540, -1726040, -6468758, -1035624, -6298033, --388158, -7286412, -480499, 5034776, -11301133, 6262599, 9618579, -7421167, -6862821, 4958540, -3787624, -626528, 28858422, 2563022, 19258096, -13780403, -1277753, -16713865, -12222940, 2980171, --12258374, -16897476, -11216307, -12829604, -2737505, -3402688, -14203457, -15488726, 20304994, 3196530, -1341640, -2724083, 10553808, 5838471, 12716861, -1236414, 12025372, -6665789, 2797634, -22345642, -18345416, 8851391, 1511292, -12265353, -849330, 5563057, 1242319, 2153926, 9105331, 12606266, --9672266, -12521440, -8171176, -1946694, -126165, 1387274, -7281580, 855772, 2195265, 5203353, -6830609, -838056, -4080756, 7043747, 3560528, -5231807, -271120, 2553895, -3044595, -5530308, -1094143, -1866700, -1733019, -155156, -2336462, 6458020, -6701760, 3754338, -96100, 7142531, --7345468, -1792075, 1352378, -1874216, -2734284, -1181653, -5797669, -6472516, -1122060, 696858, -2022393, 2370822, -4295504, 4483409, 3487514, -2636573, 4103841, -766115, 2407329, 217433, -2386391, -1780801, 15586973, -6415608, -5237713, 17405892, -14721537, -11235634, -2782602, -8945880, --1461900, -17523466, 3882114, -10805601, 8221641, 1123671, 2777233, 9952513, 2833068, 7011534, -9651328, 9157407, 7556995, 12848395, 1489280, 8719320, 7814156, -9453760, 16237661, 3941706, -7482907, -8830453, 12661564, 5679021, 8877697, 2211371, 3138011, -1698123, -11764989, 2932389, -6580427, 7762080, 8487929, 1783485, -14299020, -9065602, 10203769, 5523328, 2283849, -5472325, -7047505, -5238250, -14333380, 20914344, 12757127, 9304510, -8121783, -4031901, -10691784, -33219962, --1055488, -4691715, 4229469, -7809325, -8377871, -14687714, 2533494, 4624069, 18505404, -14703284, -5883569, 204548, 8491687, -12955769, -15869367, -9703942, 10166724, 3047816, 3145527, 5361730, --4392678, 1741072, 11926587, 4190814, 6015639, 7574175, -3104188, -2856690, -5071283, 51540, -5185100, 6413997, 193810, 2615635, 1260573, 978179, 4869956, -3117610, -2662880, -4367982, --2461553, -4518843, -186294, -6825240, -2771328, -7212324, -448287, -4371740, -1282048, -1061394, --2522757, 1972464, -1833414, -9245991, -1422708, 3587908, 3957276, 7470559, -1181116, -4573067, -2088965, -1856500, -6730751, 6067178, 5147519, 4913980, 11615202, 7558069, -705985, -26699128, -15480136, 16469052, -8049843, 14057965, 4898947, -22501870, -3898220, 29790966, -4128001, -19658066, --2989834, -1802276, -17064978, 12115029, 2597382, -8557722, 13054016, 8694088, 30728344, 18050136, -580894, 2354716, 28998008, -7308424, 7420093, -11700565, -16878684, -4962298, -11430519, 2704219, --731218, 5928666, -769873, -1967095, -4773320, 22879828, 1220308, -17839684, -14121316, -3135326, --3573950, -533650, 7556995, 20892868, 13407277, 4500589, -12489765, 16276852, 29673930, -6140193, -13550085, 12670154, 35733592, 6882685, 6921877, 10878615, 15310485, 8526047, -12084427, -11639898, -8333311, -21716966, -13006235, -15531675, 14980846, 13095892, 9218074, -3433290, 11085847, 22962506, --12882218, 18314814, 18274548, -2321967, 17968532, -16631187, -7235946, -5724655, 37480568, -18101676, -18505940, 11591580, 6924024, 5336497, -16348793, -1514513, -12817256, 14071387, 13430363, -85899, -1161789, -6542846, 10093173, -3754875, 1181653, 3860102, 4256313, 97174, 6242735, -4042101, --2040646, -1533303, -3944928, 2013266, 3857418, -2951180, 1881733, 4421669, 7785702, 1291711, --6753299, 3087008, -7335268, 1484985, 7048042, 4577362, 7445863, -1118839, 11867532, -4476967, -8827232, -2120640, -2542084, -1398549, 730144, 9511205, -6568616, 4634270, 53687, 4693326, --5294084, 1590749, 2522757, -2408403, 12593918, 5956583, 20477868, 36502928, 3943854, -3748433, -3893925, -1930588, -5972152, 1112933, 3846143, -8878234, -11830487, 4058207, -6122476, -3333432, -9337796, -432718, 18304076, -9576703, 17948132, 8825621, 1814624, -10359998, 3437048, 17884244, -5229123, -9037685, 3592740, -2126009, 571768, 10518375, -14456323, -7652558, 16287590, 376883, --3928285, 14111115, -614717, 5014911, 3284576, -13441637, -24474334, -5168457, 8611946, 15775952, -3498788, -12047920, 15819975, -5117454, 31994822, -16115254, 21566104, -12505871, 7789460, 18440978, --27084064, -28075664, -72478, -7922067, 7386270, 8999030, 1418950, -4103841, -16499117, 11245298, --2273648, 19990926, 9160628, 18616536, 5215701, 10848551, -4384625, 14299020, 5308043, -8508867, -1893544, -217970, -40955196, -1193464, 7402376, 9970230, 17560510, 14766098, -4631049, 1258425, --2877091, 2774012, 170725, -4558571, -10716480, 4748087, -6172942, 14270029, 1873143, 2791192, -7202660, 4155381, -4285304, 4121021, 10540387, 9066139, -2876018, -1638530, 1698123, -2189360, --1274532, -6445672, -944356, -13508209, -1651952, 4634807, -11038603, 7819525, -8270497, -6905234, -2263448, -7023882, 7395397, 2772402, -2437394, 4662724, -284542, -777389, 3256122, 9916006, --6630893, 1539209, 1758252, 23791434, 30776662, -6739341, -1206349, 10842108, 40719512, 1120450, --24107652, -9663676, 4888747, 4611185, -7628936, 7762617, -5512054, 12597139, -20443508, 1047435, -12721156, -8560407, -9225053, 1748589, -20204600, -6254546, -6584185, -32190244, -27158688, -15768972, -11850889, 13915157, -2447595, -22921166, 2576444, 776315, -808528, 4549444, -11489574, 27436788, --7840463, 3460133, 30444338, -26687854, 12853227, 4464619, -9290551, 11028402, -7195144, -21649856, -454193, 18648212, -8357470, -13619341, 7793218, 2474975, 17830556, 89657, -27464168, 2153389, --16233366, 27020176, -9810242, 4045859, 6664179, 3198140, -3878356, -17620104, 7347079, 18382996, -5364951, 18967650, -27843736, -15384036, -4580046, -301185, 3010235, -21547850, 19260780, -2698313, --20477868, -6889128, 12971338, 12004970, -11334419, -15812459, 15575699, -12599287, -7844758, -345745, --1912871, -1770600, -1000727, -4642860, -852551, 7754027, -1755568, 7121056, -8203925, 5647345, -7517804, -2070174, 4072166, 1166084, -1493575, 44560, 1048509, 13314399, 733366, -2610266, -1176284, 2920041, -6637335, 2343442, -8496519, -727997, 9922448, -3595425, -7731478, -2922188, -4478577, 103079, 377957, 5789616, 520228, -7834557, -3994857, 14157286, 10429254, -3458523, --546535, -21110302, 31081604, 905164, -53181896, 21330956, -7292855, 4165582, 5448703, 7162395, -13080323, 4780299, -9612137, -2308008, 13172665, 8911520, -10543608, -547071, -8361228, -4327717, --26111254, -3316789, 12597676, 15636902, 3531537, -6181532, 17322676, -17805860, 19735374, -11341935, --6359773, 2366527, -6096706, 5272609, -15706159, -21216602, -23740968, -7590281, 12326019, -4737349, -141734, 14486388, 4040491, 2543158, -432718, 505732, -4983236, 208306, 15618649, 9614821, -16481400, 13972602, 16534550, 11248519, -9795747, -6250251, 4079145, -1040993, -18952616, 12769475, --3411278, -17918604, 22527640, -245350, 3681324, -618475, -8162586, -2695092, 9474698, 13697188, -11412265, 353798, 6999186, -22958748, -3237332, -8180839, 12520367, 4315369, -6375342, -7304129, -28942174, -8815957, -9880572, -3135326, 4689568, -7162932, -19028852, -1080721, -3237332, -10303627, -17886928, 3635690, 6750615, -5499169, -927176, 4146791, 1102196, 5238787, 5694590, -1872606, -3504693, -3457449, 3968550, 1478006, -3126199, -2415919, 2949032, 4082367, 1151051, -3660923, --2978023, -3296924, -2374043, 49929, 2079838, -2996277, -3545496, 810675, -244276, -687732, -3141769, -1500017, 4954782, 1439351, 14432164, -1272921, -1759326, -3232500, -6194417, -8096550, -72334768, -71203576, -3646964, -77408192, -12050604, -29493004, -3663070, 18780282, -9669582, -21496312, -33653752, -9224516, -5961415, 1017907, 10315438, -1306744, 27955942, 18461916, 11042898, -16656420, -1018981, -11397233, -11573863, -7786239, 332323, -3640522, -3185792, -9455907, -2170032, 15392089, -1819992, 10149008, 10152229, -934692, 13581760, 19811610, 977105, -4195110, -10490458, -12533788, -4871567, 5326833, -10399190, 16770237, -22409528, -22688702, 2391223, -8016020, 11973832, -21044266, -8832600, -40361956, -21551072, -32335198, -2899103, -16019154, -1548873, -9822590, -12213276, -10646150, --1072668, 2614025, -31589484, 3474629, -7005629, 3499325, 31139, -14664092, -25720948, 17597554, --15523622, -2859911, 15730318, -1713692, -5083094, 10376641, 13019656, -2814814, 12969191, 8463770, -15695958, 8618926, 15884937, 7477538, -9596031, -2739116, -8466991, 284005, -7029788, 1383516, -5684926, 8101382, 8866960, -4076998, 4061965, 2905009, 5778342, -1486596, -2355253, 2987687, -6950331, 844498, 1535451, 7699266, 3887482, 7930120, -1247688, 289373, -930934, 3830037, -5444408, -1085016, -9322763, 4981625, -1640141, 1891396, -2994129, 1211718, -2719251, -1431835, -386547, -7750806, 29528, 10459319, -6672769, -7001871, 813896, 3532611, 3573413, 1184337, --6903086, 58997280, 29798484, 14583561, -13860933, -7016366, -30294014, 7078643, 24894704, -4467303, --5508833, 40556304, -6877317, -8620536, 20244866, 29774860, 5426155, 30358976, -7187091, 4692252, -18067316, 20345260, 31957242, 25885232, -1022739, -11110007, 9833328, 11823508, 11218991, 13843753, -23983634, 11861626, 30413200, -11389716, -475131, 9070971, 8490077, 25746182, 15136002, 27569932, --19363860, -5935645, 11221676, -20961052, 17458506, 17651242, 16993574, 7344394, -21060372, -7573638, -40877888, 10674604, 27664422, 22911504, 25193742, -4883378, 33287608, 51831664, 18097382, 4762045, -36530308, 25218974, -13620952, -8389145, -17212082, -13832479, 15559056, 17895518, 1853815, -14752676, -623307, -13178570, -310848, -5800890, 9043591, -31238908, -3277060, 3319473, -15600395, 12139725, -2424509, -9674951, 8691403, -19632832, -12551505, -21772800, -7022272, -10448582, 8040179, 2515240, --9884867, 2405182, 14602352, 4313221, -4391067, -8608725, -13220446, -5147519, 4771709, -19063750, --8631811, -1576790, 15661061, 5205501, -6248641, 3255585, -10031970, -2796024, -2892661, -8524436, --5238787, 14383309, -3047279, -1016834, -3241090, 3381750, 9451076, 6512781, 8131447, 19786378, -277562, 15930034, 993748, 1576790, 10256382, 8497593, -12927852, -7720741, -803696, 2974265, -1619203, -8053, -18720152, 9063992, -22537840, 39040180, 55475408, 32251446, -14447196, -30711700, --11438572, 27382564, -8332774, -22921166, 41289668, -28874528, 24579024, 13856101, -32774896, -13625247, --3621731, -53893248, 1932198, 6068252, -26144002, 52874804, -18416282, 49105436, -37081672, 5374078, -2144263, 35887136, 52766896, -4446902, 17767742, 24946780, -29532732, 19594714, -39897560, -10999411, -75120048, -4299799, -21036750, -4122095, -42425688, 1780801, -13533979, 47118476, 17672180, 21922050, --7492571, -12481712, -23744190, -21734146, 5196374, 3000572, -155693, 31394064, -7904351, 5994701, --32862942, -16879222, 21477520, -48512728, -19420768, -14573898, -16884054, 45344116, 3002719, 48994840, -34803192, 15650861, 18474802, -10930692, -26183732, 21980032, -35531192, -21460878, 43133820, 13262859, --26495116, -43097312, -26451630, -30645128, 24337970, -26438208, 13414793, -19066970, -2017024, -16357920, -17156246, 10308995, 1170916, -14168023, -3018825, -9747428, 2513093, -19290846, -13845901, -7193534, -3867081, 10953240, -805306, -7780334, -11478837, -17894982, -13336410, 11587285, 15206332, -4787278, -10340671, 22092238, 10021769, -20227686, -6480032, -7334194, 12387759, -12272332, -8694088, -2762201, -4228932, -16168941, -22611392, -15518791, -5788542, 9257265, -852551, 2241973, -3693672, 12622372, -3303367, 35417376, -58496380, 62438088, -1465658, 4899484, -19877108, 50437948, 11911555, 32517734, -12341589, -21149492, 7334731, 18105972, -30724586, 21656298, 466004, 14403173, -41045928, -3107946, -10162429, 37965364, -15719043, -31134218, -1296543, 37759740, 19945828, -14286672, -32397476, -1500017, -27260158, 3660386, 1962800, 7641284, 19835770, 50016504, -70294656, -11500312, 6866042, 39242044, -8827232, -21212844, -5215701, 15018964, 35883916, -3505767, 1808181, -67368176, 19603304, 10662793, -18474264, -48847200, 43368432, 37404872, 14105209, -22032108, -2185065, -24389508, 18388902, 32053878, -13467407, 15065135, -2717104, 24328306, -35209068, 33567316, -9832254, -11807939, 39385924, 32521492, -2165201, -12121471, -32249298, 23796266, 25982942, -69102264, -5413270, 39938900, 9992778, -310311, --24684788, -10525891, 67747744, -5052492, -23072028, -2798171, -12407087, -14925548, 22578106, -18893024, -6940667, 10408316, 13806172, -9368934, 1420024, -9513889, -11515881, -7586523, 10440529, 10529649, --10536629, -1977833, 5254893, -8279623, 20543366, -19517942, 5192616, -3393024, -6303402, 7422777, -33978024, 2373506, 131533, -5295695, -11869679, 204011, 18530100, 4549981, -787053, -3427921, --8619999, 15870441, -3985193, -766652, -9154723, 9167608, -52147884, 25677462, 5065914, 16405701, -19749334, 28663002, 10262287, 9326521, -13441100, 14863271, 2859911, 33996276, -3737695, -9921911, -26737782, 20587388, -4314832, 1948841, -11210938, 545461, 8576513, -2424509, -6634114, 15364709, --11922292, 1768990, 20685636, -4223027, 12004434, -20711942, -4111894, 3016678, -8464307, -3111167, -2549063, 15193984, -3656628, -24794310, 1133871, 50149112, 10494216, -26795228, 8232916, -27318676, --18733036, -13971529, -3715684, 32126892, -3313567, -25088514, 51651276, -55427628, 9611063, 57191784, -6167036, 40303972, -30407832, -56697328, 18554796, 2283312, 45592152, 2741263, -25469156, 21442624, --5586679, -4372277, -10744398, -1460826, -15791521, 8330089, 2374043, 12520903, -19316078, -16368120, --6505265, 20540144, 26072062, -8254927, 13954349, -1683090, 21852794, 15761993, -27122182, 22209812, --5422933, 3651796, -4453881, -8050916, 85362, 309238, 3138547, -1646583, 2479270, 2401424, -1737314, 3583077, -8808978, 914291, 5208185, -7064685, -782758, 5264020, -4621385, 6765111, -7148973, -9803800, 12596065, 5528697, 13040594, -2370285, 6152004, 10838887, -19380504, 258772, -6189585, 11931419, -6803765, -4683125, -6537477, -4351876, 22156126, -10135586, -106493176, -244153856, --97014720, -147111216, -215228864, 115087944, 31514860, 66060356, 305528928, 235443664, 137154944, 251477312, -187502704, 31738198, 61700428, 51320564, -119776976, -102499928, -50463720, -182902800, -174986624, -67205504, --90123984, -126987152, -53385368, -45837500, -129331664, -107922864, -9384504, -61624192, -104951824, -36230732, -32875290, -76236744, 22398254, 112650016, -9066139, -16517907, 152976000, 122218664, -5825587, 178953568, -207263840, 84055728, 194702144, 273553440, 162918848, 141645344, 328174144, 261996224, 196725072, 233493216, -309586080, 110580912, 43506408, 129544264, -102869296, -294081792, -213476512, -325214912, -526698816, -471585248, --500714272, -581980416, -593386752, -511484448, -445680704, -446705600, -314376576, -139270224, -94665376, -14501957, -151785216, 279665184, 282040288, 350556320, 504142176, 440926720, 402742848, 557059968, 442388608, 250142112, -364811840, 255635376, 98792840, 89697704, 117497960, 11982422, -37787660, 22746684, 2836826, -82906288, --44630080, 7207492, -66430260, -122240672, -59158880, -83909168, -178365696, -112239304, -43852688, -133041984, --89887760, 17794586, -42775728, -62180924, 29912300, -36818072, -146983984, -112297824, -180297360, -303956992, --286713216, -274494048, -285630368, -250611344, -168907104, -131568272, -79719424, -15364172, 66423280, 118810072, -181738864, 229998720, 285086496, 297256832, 314661664, 351279456, 332600672, 305599808, 288465568, 191623728, -66986456, 6649683, -29064044, -81466936, -96795144, -83759912, -95332168, -106209712, -94211184, -94285808, --93087512, -77677168, -76464376, -79218528, -77041512, -66199404, -55065240, -45322104, -28477780, -13413720, -3209951, 10022306, 13147432, 9614284, 5858873, 4073777, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-2920041, 1234803, -1123671, -1386201, -2139968, 525597, 4264366, -1364189, 21475, 438624, +7299834, -140660, 1401233, -2997887, -2079838, -742493, -1958505, -2107218, -1975148, -1343251, +-1876364, -2482491, 2096481, 3469797, -1898912, 529892, 147640, -3933116, 118112, -85362, +-2785286, 5270462, -2684892, 2997350, 1149978, -806917, -3015604, -2792266, 2718178, -1409286, +-1012539, -4161823, -1052267, -386010, -1955284, 5557151, -1205275, -349503, 2331094, -405338, +-4621922, -2379412, -4073240, -2742337, 6344204, -1781338, 7054484, -30065, -282394, -1278827, +830002, 294742, -4179540, -4466766, 3262028, 368830, 2221035, -301185, 2585034, 1578937, +-4049081, -28454, 1362578, 2187749, 4832, 1846299, 3376918, -4488778, 1195075, 1152125, +-2234457, -2684, 1031866, 3218004, 2132451, -2246268, -667331, -124017, 765578, 1022202, +791885, 840740, -577136, 435939, -1209033, -784368, -5906, 1637993, 733903, -50466, +-105227, -1113470, 665720, -86973, -367220, -96637, 594316, 244276, 430570, 1055488, +-338229, 463320, 1284732, 9656697, -723702, -1136019, -2439005, -5237713, -6467684, -5915244, +690416, 5323612, 1881733, 7098507, 2458332, -3182034, 883153, -8390219, -7101729, 3339874, +-2477123, 4693326, -409633, -3714073, -1836099, 9294309, 2096481, 3944928, -151398, 3026878, +-1355599, -1112397, 1861868, -1250909, -4021163, -272194, 1508607, -445603, -216359, 5921686, +3673271, -6310918, 171262, -3993783, 6704981, 3975529, 305480, -2346126, -2413235, 3099893, +1740536, 5010616, -4602058, 7938174, 9732933, -2647311, 9483825, 13422, 4982699, 3107946, +-1722819, 1665911, 7606387, -860067, -5089536, 4407710, 1439888, -29528, -562641, -873489, +350577, 4450660, -2816425, 1634235, 1212255, 2369211, -3641596, 4197257, 991601, -341450, +1344862, 633508, 430570, -150861, 967978, 2477659, -1704028, 1014686, 675384, 1057099, +-1553704, 137439, -2508261, 466004, 1213865, -1438814, -912144, 361314, 722628, 848793, +252866, 774705, 21475, 37044, -8361765, -6541235, 2030983, -3710315, 2615098, -4632122, +-6577206, -6075768, 823560, -4541928, 4122095, 3024194, -5840619, -1210107, 2345589, 543850, +2889439, -1726040, 2989834, 3702262, -5188321, 1643362, 1676648, -4156455, 2413772, 418759, +-4917738, 3626026, 3479461, -1746441, 3803731, 543850, 3099356, 2824478, 1156957, -1844689, +-483721, -5871221, -1795833, -2920041, 3062312, 3250753, 1256278, -9402757, 1767916, 3960497, +-2153389, 6608881, -5433671, -7170985, 517544, -2127620, 2263985, -5119064, 9306120, -490163, +-3154654, 915365, 85899, 5317707, -334471, -3099356, -238371, -2103460, -2901787, -3630321, +1675037, -6563784, 640487, 242666, 1893544, 4391067, 1408212, 3125663, 4800700, -3304441, +-620623, 1084479, -4175782, 2831457, -1449015, 2413772, 1882806, -1277753, -1018444, 3551938, +-1192390, -3229816, 416612, -338766, -163746, -1740536, 2539400, -1987496, 937914, 972273, +1271310, -510027, -584116, 161598, -1039919, 393526, -728534, 67646, -471373, -969589, +1215476, -490700, 226560, -169114, 28454, 22549, 175020, -20105816, -448824, -2561411, +13957570, 186831, 727460, 2881386, -2086280, 6970195, 1625645, -7705708, -4203163, -9019431, +1454383, -747861, -3180423, -2699924, -3386045, -2203318, 10827613, -5166309, -2617246, -2980707, +-8476118, -483721, -2179159, 2722473, 4013110, -1483911, -186294, 2311229, -2690260, -826781, +-1220308, -3151969, 3215857, 6620692, -941135, -1246077, 5203353, -7190849, 4452808, -5767604, +-11507291, -7336341, -11461657, -1853278, -6593312, -4466766, 1058173, 4393752, 2159295, 3104725, +-1804423, 3793530, -4945655, -1210107, 3973382, -139050, 5569499, -2500745, 1625645, -4117800, +-3151969, 2845416, -7053410, 1737851, 5069135, -6864969, 577136, -1903207, -3250753, -4541928, +-4109210, -1438814, -1869385, 955093, 4738423, -2455648, 1413581, -4173635, -4449586, -3519726, +1551020, 2206540, 513785, -1177895, -1362578, -1928440, 911070, -1650878, -1458141, -729608, +-1359894, -265214, 151934, -2308008, -603980, -367220, -1759326, -536334, -834834, -95026, +-373125, -3114388, 286152, 1165547, -654983, -1287417, -204548, 1767916, 884763, -832150, +12785581, 69256, -7154342, -6878927, -2365990, -5022965, -1941862, -3782256, 967441, 600759, +-5657009, -3342022, -6211597, 11737072, 4978404, 1064078, -673773, 6354404, -9521942, -172872, +-206695, -6036577, -8011188, 7143068, 142808, 5088463, -8033737, -3540664, -2798708, 2763812, +-284542, 3403225, -5538361, 1644973, 2273112, -6027987, -5763846, -5250598, 1256815, -1752347, +-1605244, 5032628, -1473711, 525597, 106837, -1037235, -5711770, -3529390, -641561, -8645232, +-5603859, -4574140, 2417530, 1606855, 3464965, -892816, 1532230, -140123, -852551, 3960497, +-3078418, 6931004, 1011465, 2065342, -884763, -2352032, 2813741, 2108292, 5549635, -1714229, +904628, 3313031, -1945083, 15032, -7233799, 3374771, -5556077, 3495567, -4092567, -4087198, +-7797513, -1589675, 2044941, 802085, -1266479, 1769527, 853625, 3526705, 647466, -1152125, +3205656, 1653562, -2728378, 620623, -2203855, 2403034, -925565, 351650, -548682, -352187, +-1928440, -142808, 192200, 309238, -1094143, 865973, -1600949, 591095, -220654, -914828, +-1403917, 313533, -911607, 2040110, 690953, -642635, -832687, -934692, 1744831, 1017370, +1675574, 76773, 279173, 735513, 15052787, 14245870, 10618233, -3677566, 3850438, 5340255, +3110093, 2985002, -5374078, -4704063, -7014756, 6121402, -6586333, -872952, -4808753, 8142185, +-9176734, -6876780, -3460133, -1545651, -5083631, -7620346, 2086817, 318901, 374736, -9225053, +-5107253, 2308545, 1849520, 2514703, -2547989, -3717294, 219580, 2666638, 3445638, -2660732, +3273302, -4942434, -1358820, -11973295, 4286378, 1341104, -2117956, -2344515, -8836895, -4097936, +1031329, -2221035, -12383464, 6547141, 2667175, -112743, -3400004, -2684355, -5284421, 1489817, +-1925756, 3442953, -853088, -1875290, -7079717, -1462973, -782758, -3968550, 7606387, -5688684, +21475, 4449586, -2001455, -6146098, -3475166, 5068062, 7429757, 3594888, -661425, -345208, +3889630, -8227010, 3213709, -983548, -482647, 249108, 1656784, -594853, -427886, 275952, +-1676111, -5025112, -1413044, -1629403, 1400159, 907849, 474057, -2032593, -1088237, -2327872, +-2791192, -812823, -196495, 3087545, 212064, 296353, 304943, -1271310, -749472, 1339493, +-1792075, -412854, 486942, 780073, -2122251, -126702, -275952, 1038845, -1552631, -502511, +-955630, -1570884, -3211562, -1589138, -249645, -1515587, -96100, -1611, -250182, -1883880, +18321256, 6164352, -2642479, -2105071, 6453725, -12330851, -2294586, 10035191, 5050882, -6950331, +-120796, -4708358, 1967632, 7721278, 18940268, 6263673, 14761266, -5194763, -1056562, -14305999, +4901632, -4160213, 4073777, -6256157, -288837, 622770, -2190970, 5159867, -2260764, 2471754, +6374805, -4836133, 2902324, 8097624, -2157684, 2716030, 56908, 3260417, 4476430, 4559645, +-24256364, 8895951, -2758980, -11376295, -1938104, 6955700, 2178622, -8789114, 4796942, 6933688, +-14260902, 1150514, -3986267, 8422431, 1978906, 6956237, -1644436, -5012227, -9995463, 612570, +-6022618, 18971944, 3565360, -3125126, 6385006, 788663, 6180995, -14942191, -1905355, 2293513, +4690105, 1087164, -6923488, -1115081, 2615635, 6629282, 5671505, -4651450, 188979, 6519224, +-220117, 3058554, -2214056, -1146219, 4650376, 423054, -291521, -650151, 297427, 2221572, +-2097555, -985695, -208843, 1717987, 1761474, -252866, -535260, 4488778, -1371168, -808528, +-2316061, 280247, 1295470, -1223529, 152471, 1352378, 1914482, -1653026, -666794, -2720862, +268435, 2074469, -945967, 347892, 1049046, 1050120, 3714073, 416612, 1854889, -164819, +-1512365, 2323577, 653909, -21703006, -23802172, -8147016, -1851131, 441845, 5066451, -10164577, +3216394, 11990475, -6868727, 6383395, 8308078, -5780489, 188442, -2814814, 10160282, 14158360, +-6770479, -7991861, 7131793, 685584, -6784438, 3218541, 127238, 1774895, 2039036, -3634616, +-2632815, -15128485, -762357, -4327717, -331786, -448824, 10302553, 3052648, -18445810, 308701, +8921184, -10099079, 2677375, 10859288, -2369748, 3821984, 239981, -2850785, -6996502, 13960791, +11770358, -8936753, 4699768, -3324842, -441845, 4343823, -3078418, 3642669, -5506685, -632434, +11818139, -3352759, 2518462, 5568962, -4004520, -9697499, -391379, 3326989, 1746978, -4661650, +640487, 2611340, 4220342, 8623221, 5363878, 9489193, 5042829, 1831804, 4440996, -1560684, +8587787, -282931, -6737193, -9110163, 1146219, 2954401, -1566589, 6806987, -3491809, -3680787, +2734821, -861678, 756988, 342524, -4183298, -592169, -2509872, 3092377, 1416802, 2485712, +4887673, 601832, -1692754, -7054484, -514859, 1631551, -1773285, -733366, 739271, -1575179, +1533840, 1561221, 228707, -1668058, -1155883, 3444564, -459025, 1613834, 886374, 1110249, +-2443837, -2627983, -1516660, 594316, 1218697, 2058363, 1563368, 1003412, 994822, 2588255, +-648003, -23369454, 26096758, -1501628, 16796006, 1293322, -9721658, -2904472, -5622649, -6821482, +-871878, 479963, 12157442, -1906966, 8361228, -8376260, -419833, 2087354, 1950989, 972273, +10574209, 10536629, 3875134, 1697586, -1296006, -2025614, -569083, -1726577, -17533668, -5963025, +8135742, 5260261, -1918240, 924492, -8274255, 4242891, -10154913, 2266132, 16248398, 1798518, +3564286, -13437879, 7245073, 6318434, 1779727, -9001178, -3904662, -4173635, 793495, -8074539, +8349954, 10179072, 6174016, -851477, 15247671, 5434744, 22291418, 8739185, -5883569, 18574122, +482647, -6700686, 13474923, -2128693, 4495220, 8508330, -6031208, -5164698, 12474196, 13392782, +7949985, -10755135, 4184372, -42950, -4920422, -8821326, 6671158, 11862700, 7211787, 17196512, +2445984, -3710852, -3732864, -10492068, -3915400, 6609955, 1112397, -1866163, 514859, -6518687, +-4515085, 992674, 1789391, -150861, 7192997, 5672041, 2593624, 299037, 2186675, 3432753, +1846299, -3212099, -1212255, 1037235, -634581, -1056025, 3108483, 343061, -715112, 2475512, +1046898, 843961, 1076426, -2094870, 689879, 6278169, -2669322, 3985730, 1968706, 239444, +-2642479, -3026878, -1433982, 5740224, -12565464, 16683264, -4832912, -10983842, 3663607, 7245610, +-7286949, -3707094, -15379204, 6420439, -5641977, -1874753, -14096620, -6215355, -4783520, -2433099, +-6357089, 3301756, -2853469, -3496104, 3314641, 4631049, 8207146, 8016557, -3478387, -2934537, +-11355357, 4447976, 220117, 7446937, 2055679, 1973538, -2571075, 2961380, -7095823, -6045167, +3345243, 1670742, 3396246, -13887240, 4641786, 9026948, -25233, -12237972, -12735115, -9967008, +-29372208, 4113505, -3377992, 14178224, -6952479, 11770895, 3800509, 760746, 15241228, 2274722, +-1748589, 10899553, 4064650, -14977088, -7407745, 1733556, -4747550, -8525510, -5138929, 19191524, +8868571, -9113384, -1083406, -5143760, -2470143, 2756832, 13611288, 190052, -3628711, 17923972, +-6423124, -16394427, -15563888, -18546742, -3260954, 1354525, -459562, -3313567, -2237141, -7966628, +-1528472, 2251637, -2425583, -2402497, 1589138, 1450088, -11595338, -4842576, -9073655, 370978, +-3053722, -3012920, -4841502, -1589138, 1336272, 6995428, 107374, 8593693, 4295504, 6294812, +710817, 2931315, -2932389, 5734318, 1074, -4234301, -6190659, 3527242, 607201, 1925756, +-1590749, 1081258, -1923609, 1945620, -667331, 2318209, -460098, -1076426, 1572495, -382252, +7329362, -12034498, -2995203, -3197603, -1542430, -802622, 32114544, 5288179, 11767674, -5654862, +10283225, 20702280, -17671106, 26883810, 15961172, -7150047, 285615, 1660005, -9608916, -16163036, +1161252, -9359271, -14401562, -6447820, 1333051, 51540, -1726040, -6468758, -1035624, -6298033, +-388158, -7286412, -480499, 5034776, -11301133, 6262599, 9618579, -7421167, -6862821, 4958540, +3787624, -626528, 28858422, 2563022, 19258096, -13780403, -1277753, -16713865, -12222940, 2980171, +-12258374, -16897476, -11216307, -12829604, -2737505, -3402688, -14203457, -15488726, 20304994, 3196530, +1341640, -2724083, 10553808, 5838471, 12716861, -1236414, 12025372, -6665789, 2797634, -22345642, +18345416, 8851391, 1511292, -12265353, -849330, 5563057, 1242319, 2153926, 9105331, 12606266, +-9672266, -12521440, -8171176, -1946694, -126165, 1387274, -7281580, 855772, 2195265, 5203353, +6830609, -838056, -4080756, 7043747, 3560528, -5231807, -271120, 2553895, -3044595, -5530308, +1094143, -1866700, -1733019, -155156, -2336462, 6458020, -6701760, 3754338, -96100, 7142531, +-7345468, -1792075, 1352378, -1874216, -2734284, -1181653, -5797669, -6472516, -1122060, 696858, +2022393, 2370822, -4295504, 4483409, 3487514, -2636573, 4103841, -766115, 2407329, 217433, +2386391, -1780801, 15586973, -6415608, -5237713, 17405892, -14721537, -11235634, -2782602, -8945880, +-1461900, -17523466, 3882114, -10805601, 8221641, 1123671, 2777233, 9952513, 2833068, 7011534, +9651328, 9157407, 7556995, 12848395, 1489280, 8719320, 7814156, -9453760, 16237661, 3941706, +7482907, -8830453, 12661564, 5679021, 8877697, 2211371, 3138011, -1698123, -11764989, 2932389, +6580427, 7762080, 8487929, 1783485, -14299020, -9065602, 10203769, 5523328, 2283849, -5472325, +7047505, -5238250, -14333380, 20914344, 12757127, 9304510, -8121783, -4031901, -10691784, -33219962, +-1055488, -4691715, 4229469, -7809325, -8377871, -14687714, 2533494, 4624069, 18505404, -14703284, +5883569, 204548, 8491687, -12955769, -15869367, -9703942, 10166724, 3047816, 3145527, 5361730, +-4392678, 1741072, 11926587, 4190814, 6015639, 7574175, -3104188, -2856690, -5071283, 51540, +5185100, 6413997, 193810, 2615635, 1260573, 978179, 4869956, -3117610, -2662880, -4367982, +-2461553, -4518843, -186294, -6825240, -2771328, -7212324, -448287, -4371740, -1282048, -1061394, +-2522757, 1972464, -1833414, -9245991, -1422708, 3587908, 3957276, 7470559, -1181116, -4573067, +2088965, -1856500, -6730751, 6067178, 5147519, 4913980, 11615202, 7558069, -705985, -26699128, +15480136, 16469052, -8049843, 14057965, 4898947, -22501870, -3898220, 29790966, -4128001, -19658066, +-2989834, -1802276, -17064978, 12115029, 2597382, -8557722, 13054016, 8694088, 30728344, 18050136, +580894, 2354716, 28998008, -7308424, 7420093, -11700565, -16878684, -4962298, -11430519, 2704219, +-731218, 5928666, -769873, -1967095, -4773320, 22879828, 1220308, -17839684, -14121316, -3135326, +-3573950, -533650, 7556995, 20892868, 13407277, 4500589, -12489765, 16276852, 29673930, -6140193, +13550085, 12670154, 35733592, 6882685, 6921877, 10878615, 15310485, 8526047, -12084427, -11639898, +8333311, -21716966, -13006235, -15531675, 14980846, 13095892, 9218074, -3433290, 11085847, 22962506, +-12882218, 18314814, 18274548, -2321967, 17968532, -16631187, -7235946, -5724655, 37480568, -18101676, +18505940, 11591580, 6924024, 5336497, -16348793, -1514513, -12817256, 14071387, 13430363, -85899, +1161789, -6542846, 10093173, -3754875, 1181653, 3860102, 4256313, 97174, 6242735, -4042101, +-2040646, -1533303, -3944928, 2013266, 3857418, -2951180, 1881733, 4421669, 7785702, 1291711, +-6753299, 3087008, -7335268, 1484985, 7048042, 4577362, 7445863, -1118839, 11867532, -4476967, +8827232, -2120640, -2542084, -1398549, 730144, 9511205, -6568616, 4634270, 53687, 4693326, +-5294084, 1590749, 2522757, -2408403, 12593918, 5956583, 20477868, 36502928, 3943854, -3748433, +3893925, -1930588, -5972152, 1112933, 3846143, -8878234, -11830487, 4058207, -6122476, -3333432, +9337796, -432718, 18304076, -9576703, 17948132, 8825621, 1814624, -10359998, 3437048, 17884244, +5229123, -9037685, 3592740, -2126009, 571768, 10518375, -14456323, -7652558, 16287590, 376883, +-3928285, 14111115, -614717, 5014911, 3284576, -13441637, -24474334, -5168457, 8611946, 15775952, +3498788, -12047920, 15819975, -5117454, 31994822, -16115254, 21566104, -12505871, 7789460, 18440978, +-27084064, -28075664, -72478, -7922067, 7386270, 8999030, 1418950, -4103841, -16499117, 11245298, +-2273648, 19990926, 9160628, 18616536, 5215701, 10848551, -4384625, 14299020, 5308043, -8508867, +1893544, -217970, -40955196, -1193464, 7402376, 9970230, 17560510, 14766098, -4631049, 1258425, +-2877091, 2774012, 170725, -4558571, -10716480, 4748087, -6172942, 14270029, 1873143, 2791192, +7202660, 4155381, -4285304, 4121021, 10540387, 9066139, -2876018, -1638530, 1698123, -2189360, +-1274532, -6445672, -944356, -13508209, -1651952, 4634807, -11038603, 7819525, -8270497, -6905234, +2263448, -7023882, 7395397, 2772402, -2437394, 4662724, -284542, -777389, 3256122, 9916006, +-6630893, 1539209, 1758252, 23791434, 30776662, -6739341, -1206349, 10842108, 40719512, 1120450, +-24107652, -9663676, 4888747, 4611185, -7628936, 7762617, -5512054, 12597139, -20443508, 1047435, +12721156, -8560407, -9225053, 1748589, -20204600, -6254546, -6584185, -32190244, -27158688, -15768972, +11850889, 13915157, -2447595, -22921166, 2576444, 776315, -808528, 4549444, -11489574, 27436788, +-7840463, 3460133, 30444338, -26687854, 12853227, 4464619, -9290551, 11028402, -7195144, -21649856, +454193, 18648212, -8357470, -13619341, 7793218, 2474975, 17830556, 89657, -27464168, 2153389, +-16233366, 27020176, -9810242, 4045859, 6664179, 3198140, -3878356, -17620104, 7347079, 18382996, +5364951, 18967650, -27843736, -15384036, -4580046, -301185, 3010235, -21547850, 19260780, -2698313, +-20477868, -6889128, 12971338, 12004970, -11334419, -15812459, 15575699, -12599287, -7844758, -345745, +-1912871, -1770600, -1000727, -4642860, -852551, 7754027, -1755568, 7121056, -8203925, 5647345, +7517804, -2070174, 4072166, 1166084, -1493575, 44560, 1048509, 13314399, 733366, -2610266, +1176284, 2920041, -6637335, 2343442, -8496519, -727997, 9922448, -3595425, -7731478, -2922188, +4478577, 103079, 377957, 5789616, 520228, -7834557, -3994857, 14157286, 10429254, -3458523, +-546535, -21110302, 31081604, 905164, -53181896, 21330956, -7292855, 4165582, 5448703, 7162395, +13080323, 4780299, -9612137, -2308008, 13172665, 8911520, -10543608, -547071, -8361228, -4327717, +-26111254, -3316789, 12597676, 15636902, 3531537, -6181532, 17322676, -17805860, 19735374, -11341935, +-6359773, 2366527, -6096706, 5272609, -15706159, -21216602, -23740968, -7590281, 12326019, -4737349, +141734, 14486388, 4040491, 2543158, -432718, 505732, -4983236, 208306, 15618649, 9614821, +16481400, 13972602, 16534550, 11248519, -9795747, -6250251, 4079145, -1040993, -18952616, 12769475, +-3411278, -17918604, 22527640, -245350, 3681324, -618475, -8162586, -2695092, 9474698, 13697188, +11412265, 353798, 6999186, -22958748, -3237332, -8180839, 12520367, 4315369, -6375342, -7304129, +28942174, -8815957, -9880572, -3135326, 4689568, -7162932, -19028852, -1080721, -3237332, -10303627, +17886928, 3635690, 6750615, -5499169, -927176, 4146791, 1102196, 5238787, 5694590, -1872606, +3504693, -3457449, 3968550, 1478006, -3126199, -2415919, 2949032, 4082367, 1151051, -3660923, +-2978023, -3296924, -2374043, 49929, 2079838, -2996277, -3545496, 810675, -244276, -687732, +3141769, -1500017, 4954782, 1439351, 14432164, -1272921, -1759326, -3232500, -6194417, -8096550, +72334768, -71203576, -3646964, -77408192, -12050604, -29493004, -3663070, 18780282, -9669582, -21496312, +33653752, -9224516, -5961415, 1017907, 10315438, -1306744, 27955942, 18461916, 11042898, -16656420, +1018981, -11397233, -11573863, -7786239, 332323, -3640522, -3185792, -9455907, -2170032, 15392089, +1819992, 10149008, 10152229, -934692, 13581760, 19811610, 977105, -4195110, -10490458, -12533788, +4871567, 5326833, -10399190, 16770237, -22409528, -22688702, 2391223, -8016020, 11973832, -21044266, +8832600, -40361956, -21551072, -32335198, -2899103, -16019154, -1548873, -9822590, -12213276, -10646150, +-1072668, 2614025, -31589484, 3474629, -7005629, 3499325, 31139, -14664092, -25720948, 17597554, +-15523622, -2859911, 15730318, -1713692, -5083094, 10376641, 13019656, -2814814, 12969191, 8463770, +15695958, 8618926, 15884937, 7477538, -9596031, -2739116, -8466991, 284005, -7029788, 1383516, +5684926, 8101382, 8866960, -4076998, 4061965, 2905009, 5778342, -1486596, -2355253, 2987687, +6950331, 844498, 1535451, 7699266, 3887482, 7930120, -1247688, 289373, -930934, 3830037, +5444408, -1085016, -9322763, 4981625, -1640141, 1891396, -2994129, 1211718, -2719251, -1431835, +386547, -7750806, 29528, 10459319, -6672769, -7001871, 813896, 3532611, 3573413, 1184337, +-6903086, 58997280, 29798484, 14583561, -13860933, -7016366, -30294014, 7078643, 24894704, -4467303, +-5508833, 40556304, -6877317, -8620536, 20244866, 29774860, 5426155, 30358976, -7187091, 4692252, +18067316, 20345260, 31957242, 25885232, -1022739, -11110007, 9833328, 11823508, 11218991, 13843753, +23983634, 11861626, 30413200, -11389716, -475131, 9070971, 8490077, 25746182, 15136002, 27569932, +-19363860, -5935645, 11221676, -20961052, 17458506, 17651242, 16993574, 7344394, -21060372, -7573638, +40877888, 10674604, 27664422, 22911504, 25193742, -4883378, 33287608, 51831664, 18097382, 4762045, +36530308, 25218974, -13620952, -8389145, -17212082, -13832479, 15559056, 17895518, 1853815, -14752676, +623307, -13178570, -310848, -5800890, 9043591, -31238908, -3277060, 3319473, -15600395, 12139725, +2424509, -9674951, 8691403, -19632832, -12551505, -21772800, -7022272, -10448582, 8040179, 2515240, +-9884867, 2405182, 14602352, 4313221, -4391067, -8608725, -13220446, -5147519, 4771709, -19063750, +-8631811, -1576790, 15661061, 5205501, -6248641, 3255585, -10031970, -2796024, -2892661, -8524436, +-5238787, 14383309, -3047279, -1016834, -3241090, 3381750, 9451076, 6512781, 8131447, 19786378, +277562, 15930034, 993748, 1576790, 10256382, 8497593, -12927852, -7720741, -803696, 2974265, +1619203, -8053, -18720152, 9063992, -22537840, 39040180, 55475408, 32251446, -14447196, -30711700, +-11438572, 27382564, -8332774, -22921166, 41289668, -28874528, 24579024, 13856101, -32774896, -13625247, +-3621731, -53893248, 1932198, 6068252, -26144002, 52874804, -18416282, 49105436, -37081672, 5374078, +2144263, 35887136, 52766896, -4446902, 17767742, 24946780, -29532732, 19594714, -39897560, -10999411, +75120048, -4299799, -21036750, -4122095, -42425688, 1780801, -13533979, 47118476, 17672180, 21922050, +-7492571, -12481712, -23744190, -21734146, 5196374, 3000572, -155693, 31394064, -7904351, 5994701, +-32862942, -16879222, 21477520, -48512728, -19420768, -14573898, -16884054, 45344116, 3002719, 48994840, +34803192, 15650861, 18474802, -10930692, -26183732, 21980032, -35531192, -21460878, 43133820, 13262859, +-26495116, -43097312, -26451630, -30645128, 24337970, -26438208, 13414793, -19066970, -2017024, -16357920, +17156246, 10308995, 1170916, -14168023, -3018825, -9747428, 2513093, -19290846, -13845901, -7193534, +3867081, 10953240, -805306, -7780334, -11478837, -17894982, -13336410, 11587285, 15206332, -4787278, +10340671, 22092238, 10021769, -20227686, -6480032, -7334194, 12387759, -12272332, -8694088, -2762201, +4228932, -16168941, -22611392, -15518791, -5788542, 9257265, -852551, 2241973, -3693672, 12622372, +3303367, 35417376, -58496380, 62438088, -1465658, 4899484, -19877108, 50437948, 11911555, 32517734, +12341589, -21149492, 7334731, 18105972, -30724586, 21656298, 466004, 14403173, -41045928, -3107946, +10162429, 37965364, -15719043, -31134218, -1296543, 37759740, 19945828, -14286672, -32397476, -1500017, +27260158, 3660386, 1962800, 7641284, 19835770, 50016504, -70294656, -11500312, 6866042, 39242044, +8827232, -21212844, -5215701, 15018964, 35883916, -3505767, 1808181, -67368176, 19603304, 10662793, +18474264, -48847200, 43368432, 37404872, 14105209, -22032108, -2185065, -24389508, 18388902, 32053878, +13467407, 15065135, -2717104, 24328306, -35209068, 33567316, -9832254, -11807939, 39385924, 32521492, +2165201, -12121471, -32249298, 23796266, 25982942, -69102264, -5413270, 39938900, 9992778, -310311, +-24684788, -10525891, 67747744, -5052492, -23072028, -2798171, -12407087, -14925548, 22578106, -18893024, +6940667, 10408316, 13806172, -9368934, 1420024, -9513889, -11515881, -7586523, 10440529, 10529649, +-10536629, -1977833, 5254893, -8279623, 20543366, -19517942, 5192616, -3393024, -6303402, 7422777, +33978024, 2373506, 131533, -5295695, -11869679, 204011, 18530100, 4549981, -787053, -3427921, +-8619999, 15870441, -3985193, -766652, -9154723, 9167608, -52147884, 25677462, 5065914, 16405701, +19749334, 28663002, 10262287, 9326521, -13441100, 14863271, 2859911, 33996276, -3737695, -9921911, +26737782, 20587388, -4314832, 1948841, -11210938, 545461, 8576513, -2424509, -6634114, 15364709, +-11922292, 1768990, 20685636, -4223027, 12004434, -20711942, -4111894, 3016678, -8464307, -3111167, +2549063, 15193984, -3656628, -24794310, 1133871, 50149112, 10494216, -26795228, 8232916, -27318676, +-18733036, -13971529, -3715684, 32126892, -3313567, -25088514, 51651276, -55427628, 9611063, 57191784, +6167036, 40303972, -30407832, -56697328, 18554796, 2283312, 45592152, 2741263, -25469156, 21442624, +-5586679, -4372277, -10744398, -1460826, -15791521, 8330089, 2374043, 12520903, -19316078, -16368120, +-6505265, 20540144, 26072062, -8254927, 13954349, -1683090, 21852794, 15761993, -27122182, 22209812, +-5422933, 3651796, -4453881, -8050916, 85362, 309238, 3138547, -1646583, 2479270, 2401424, +1737314, 3583077, -8808978, 914291, 5208185, -7064685, -782758, 5264020, -4621385, 6765111, +7148973, -9803800, 12596065, 5528697, 13040594, -2370285, 6152004, 10838887, -19380504, 258772, +6189585, 11931419, -6803765, -4683125, -6537477, -4351876, 22156126, -10135586, -106493176, -244153856, +-97014720, -147111216, -215228864, 115087944, 31514860, 66060356, 305528928, 235443664, 137154944, 251477312, +187502704, 31738198, 61700428, 51320564, -119776976, -102499928, -50463720, -182902800, -174986624, -67205504, +-90123984, -126987152, -53385368, -45837500, -129331664, -107922864, -9384504, -61624192, -104951824, -36230732, +32875290, -76236744, 22398254, 112650016, -9066139, -16517907, 152976000, 122218664, -5825587, 178953568, +207263840, 84055728, 194702144, 273553440, 162918848, 141645344, 328174144, 261996224, 196725072, 233493216, +309586080, 110580912, 43506408, 129544264, -102869296, -294081792, -213476512, -325214912, -526698816, -471585248, +-500714272, -581980416, -593386752, -511484448, -445680704, -446705600, -314376576, -139270224, -94665376, -14501957, +151785216, 279665184, 282040288, 350556320, 504142176, 440926720, 402742848, 557059968, 442388608, 250142112, +364811840, 255635376, 98792840, 89697704, 117497960, 11982422, -37787660, 22746684, 2836826, -82906288, +-44630080, 7207492, -66430260, -122240672, -59158880, -83909168, -178365696, -112239304, -43852688, -133041984, +-89887760, 17794586, -42775728, -62180924, 29912300, -36818072, -146983984, -112297824, -180297360, -303956992, +-286713216, -274494048, -285630368, -250611344, -168907104, -131568272, -79719424, -15364172, 66423280, 118810072, +181738864, 229998720, 285086496, 297256832, 314661664, 351279456, 332600672, 305599808, 288465568, 191623728, +66986456, 6649683, -29064044, -81466936, -96795144, -83759912, -95332168, -106209712, -94211184, -94285808, +-93087512, -77677168, -76464376, -79218528, -77041512, -66199404, -55065240, -45322104, -28477780, -13413720, +3209951, 10022306, 13147432, 9614284, 5858873, 4073777, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -8562554, -5064840, -6513318, 790274, -2760590, -862752, 2532957, -4039417, -7337952, -1877438, 619549, --4208531, -2426657, 3556770, -2112587, 1644436, -9188009, -791348, 6214281, 3308199, -10279467, --3543348, -2697776, -2734284, 3470334, -1503775, -5354751, -3367791, -3828427, -3900904, 6772090, -2113124, 4361540, -2831994, 5729487, 5203353, 3711389, -2066953, -4863514, -3825742, 403727, -964757, 7794829, 2758443, 1483374, -3677566, 847182, 331249, 891743, 3083787, 1830193, --5298916, -4500052, -2331630, 2849174, 657667, -996969, -5664525, -1729261, 2213519, 2563559, --2289755, -862752, 119722, 2714956, -592169, -2993592, -3758, 433255, -3868155, 8221641, -509491, -5576478, -16643, -857383, 5268851, 426812, 3562675, 4934381, 1839857, -333397, -228170, -1787780, -1178969, -1187022, 3121368, -1005559, -417686, -1409286, 1067836, 383863, --621697, -122943, -833224, 171262, -134755, 643171, 621160, 1054951, -5645198, -5108327, -5800890, 5320928, -4297115, 3205656, 324807, 1654636, -14120779, 5468030, -2095407, -9640591, --12573517, 344671, 9098351, 555661, 5900748, 226560, -11370926, -3919158, 1316408, 3986267, --1998234, -965831, -4784057, 642635, -864362, 8048232, 4092567, 1716913, 1449015, 2193118, -2798171, 7339026, 4449586, -6467684, -542777, 1514513, 1574642, -7694434, 2513630, -2282238, --4864588, -1370632, -198105, 5277978, 1363115, -2936684, 5345624, 8326868, -1753957, -3147674, -2020782, -587874, 4558034, 4645007, 3640522, -5554467, -4224101, 3997004, -1673964, -1389422, --4255776, 469225, -6325413, 3780645, 3411278, 4472672, 1159641, 5196911, -5604396, -3521336, -7303592, 388158, 2716567, 8616241, 3340948, 853625, -3453691, 5056787, 621697, -2556043, -1459215, -6081674, 188979, -635655, 923418, 1640141, -678068, -2706903, -1469953, -436476, -1344325, 1248225, 438087, -744640, 761820, 1723893, 322659, -564251, 7201050, 649077, -2796024, -6038187, -5127117, 2956548, -1412507, -2199560, -2798708, -2615635, 2196339, -6988449, --4002373, -8633421, -10377178, -1908576, 8660265, 5590974, -3481071, -958851, -1189706, -1998770, --7471096, 5405217, -1866700, -1907502, 484794, 3538516, -1674500, 328028, -247497, 5117991, --4705674, 5134097, 2805151, 6152541, -2082522, 4763656, 2121177, -2920578, 4290673, -2887292, -2474438, 4565550, -3423089, 4794257, -2843268, -2286533, -712428, -1397475, 2415382, -1375463, --3624416, 1477469, -3145527, 708670, 438087, 508417, 7213398, 1416802, -1648194, 57445, --2946348, -4105452, 2138357, -976031, 6885370, 7030862, 2851858, -1930051, -1075889, -32749, --2757906, -3180960, 3544422, 5576478, 185220, -587337, 3425237, 3706557, -476205, 1321239, -1190243, -2663417, 2548526, -468688, 3655017, -1792075, -694711, -119722, -1516124, -147640, -2662880, -563714, 807991, 798327, -1878511, 608275, -343597, -360240, 760746, 715649, --1203128, 1391569, -464930, -570157, 99858, -134755, -227096, -1077500, -816044, 13702019, --5815923, 5609764, -7005092, -5894306, 15569, -1646046, -1500554, 1897839, -2953864, 5917391, -5774584, 4944044, -1500017, -660888, -2594160, -6344741, 978179, -3817689, -714038, 679679, --2130304, 3592203, 1354525, -447750, -10458782, -4377109, -6594923, 231928, -4317516, -6638946, --2911451, -3675418, -4057134, 6578280, -5276368, 4632122, 396211, -1886564, 2596845, 2221035, --4729833, -1309965, 91805, 5076115, -490163, -6978248, -8837969, -9211094, 2388002, -3375308, -198105, -745177, 1326608, 3091303, 5107790, -3547643, -1872606, 1665911, 1755568, 637803, -6408091, -3602941, 3962644, -7380365, 14431090, 1757179, -1536525, 2788508, 1381906, 2742337, --4010963, -724239, 1097364, -462246, -861678, -7299834, -2418604, -4966593, -1469953, -596464, --3564823, -3505767, 2597382, 3011309, 928787, 578747, -326418, 2542084, 1511292, 2921115, --1462436, 243203, 100395, 2683281, -1072668, -174483, -153545, 285615, -2124398, 510564, --1533303, 765041, 1091995, -526670, -1784022, 344671, 570157, -569620, -602369, -1948305, -528818, -239981, -967978, 1207960, 1425392, -192200, -6662568, 1022202, 1291175, 492311, --1013075, -3969624, 2436857, 1960116, -6014028, 7165616, -8830453, 10998874, -1028108, 3702262, -1661079, -176631, -1133871, 2300492, 10310069, 11560978, -2161979, 2120103, -1343251, -1587527, -1570347, 2491618, 7939247, -954557, 2436320, -3947612, 4372814, 1008780, 6269042, 3063386, -5874979, -8358007, 3590056, 3113315, -2601677, -38118, 6374805, 77309, 541166, 1976222, -3896609, -1256278, -501974, 12261058, 5856725, 1132798, 1158031, -2501282, 5590974, -7327751, --10766409, -13038984, -759136, 6933151, -165356, 3482145, 9352291, 3728569, -1601486, -3222836, -5007932, -913217, 12012487, 5428302, 1821066, 1722819, -6484864, 1438277, 4977330, -2461016, --7307350, 1341640, 2691871, -270583, -2508261, -888521, 1297617, -2339684, 1429687, 1411434, -1296006, -425739, 1488743, -2295660, -2137820, -671089, -1340030, 798864, -2145873, 1316408, -2199023, 1462436, 1670205, 1673427, 559956, 1090385, -2976412, -2506114, -904628, -1293322, --1532230, -281320, 1060857, 606664, -61203, 1940252, 1075889, -99858, 2437931, 1530082, --15933792, 1724966, -1189706, 10956462, -8174397, 4817880, -16872242, 6664179, -1577327, -8591008, --9440338, -6598681, 5060009, 3957276, 12836047, 1719598, 4287451, 12288975, -2114735, -8908299, -1358820, -6859063, 1700807, 10024991, 1879585, -2784213, -1171989, -1893007, 2961380, 3897146, --804770, 2612951, 5174899, -3194382, 1652489, -6025839, -449361, -7546795, -1167694, 1058173, --3570729, 5612986, 3835406, 4787815, 9511742, 634045, 11507291, 8822937, 4272419, -5946382, -13193603, 5698348, 2333241, 11575474, -1248225, 287763, 979789, 3861713, -2390686, -3342558, --7895224, -7626788, -6231998, 99858, -4914517, 10162429, -6092411, 4223027, 6338835, -3519189, -338229, -2871186, -1686312, -9919764, -11381663, 5245229, -1975685, -3787088, -3368865, 1010391, -1342177, 807991, 2239289, -3942780, 9324911, 695785, 2809446, -1869921, 524523, 2815888, --4536559, 1574106, 179315, 1614371, 2115808, 32749, 1653026, 3229279, 9664, 964757, -2295123, 2579128, 3297998, -89657, 565862, -1637456, -469762, 220654, -788127, -2334852, -169114, -634045, -1033477, 317828, 13381507, 539555, 192200, -1204202, -2579128, 2429341, -585189, -6781754, -8699993, -11800960, -6170258, -12348568, -7842074, -4186519, -9131637, -5762773, --3978214, -4730907, -12355010, 8524973, 5348845, 345208, 4503810, 2087354, -3413425, 15406048, -970126, -5281736, -2765959, -10390600, -4459787, 11481521, 579284, -9575093, -9582072, 1432909, --9699647, 3148748, 3429532, -7538742, 319975, 2400887, 557272, 11303817, 3394635, -5110474, -1157494, -6133750, 5707475, 846109, 2537789, -13743358, 9521942, -4698158, 3978214, 357556, -1861332, 2301566, 373125, -3973919, -299574, -5341329, 28991, -10823854, -42413, -11679090, -15469398, -2586107, 9848360, -7187091, -3363496, -1509681, -7443179, -4122632, 6054294, -172336, --213675, 4519380, 5820755, 975494, 9494025, 8249559, 11414949, 6116571, 2440078, 1438277, -5193153, 2812130, 1740536, 2154463, 1191317, 2590939, -696858, 4201552, 745177, -214212, --852014, 3286187, 1336809, 2355253, 1176284, -1464047, 1126892, 1332514, 1094143, -2446521, -4798016, 2631741, -439160, -3587372, -374736, -489089, -2596308, 1015760, 501437, 2778844, --2208687, -4973036, -6855842, -35433, 5032091, -13160854, -10737, -5692979, -4558571, 9308268, --15178951, -14338748, 3729642, 19103478, 484258, 1810866, 1464047, -2918967, 10458782, 10154376, -5864241, 2876018, -2761127, -15540265, 9202504, 71941, -12451110, -4022237, 2880313, -635655, -98247, 1265405, -3003256, -12261595, -696858, 494458, -2246805, -5127117, 3670587, 10622528, --13720273, 8524973, -5148592, -2589865, 807454, 6762963, 22275312, -14418205, -3639985, 1407139, --1437203, -2645163, 727997, -5532455, 1913945, -4997195, 15311022, 5260798, 2860985, 4219806, --3247532, -892279, 8099772, -1282585, 3514894, -6750615, 11751031, 514859, -8335995, 16441135, --10492068, 7565585, 2147484, 3727495, 11951820, -4776541, 5082557, -590558, 12348, 1433982, --812823, -8083129, -4289599, -527744, -3581466, -1275605, -1957431, -4961761, -5074504, -3810173, -2347200, -4345970, 2486786, -1167694, -190052, -3814468, -2616172, -2816425, 2225330, -5263483, -514859, 500364, 3177739, 4983773, -1970853, -958315, -4507568, -3847217, 255551, -3385508, -936840, -634581, -3003256, 47782, -920197, 1351304, 1783485, -1262720, 16307991, 1283122, -4259534, 4844723, -2718178, -9373766, -7347079, 1136556, 16314433, 9251360, 2018098, -14571213, -2113124, -8010114, 60130, 16321413, 15700790, 7933879, 10617159, -9558987, -19801946, -10366977, --14267881, 7927436, -128312, -2405719, -40802, -10799695, -3194919, 3351148, -2016487, -4099010, --3980361, 11566347, -732292, 3152506, -3270081, 7585449, 1622424, -4365835, -9176198, -7054484, -20940650, -894427, -4714264, 6691559, -11938935, 3755949, -6825240, -20885352, -4668630, -2712272, -6342056, 2428267, 5574331, 1769527, 8286603, 315143, 594853, 4581120, -20397336, -3221226, --5463736, -1453846, 2004676, 11729556, 12975633, 4672925, -3367254, -8928163, -11710765, -3935801, --6880001, 1482301, -3409667, -3655554, -8056822, 12093554, 8739185, 3544959, 11144366, -2644626, -4466229, 6822019, -4316442, 4064113, -2770791, 891206, 4082903, -1232656, -2661269, -1116155, --1456531, -1054951, -64961, 275415, 4048007, 163209, 509491, 1235877, -2202245, -6179384, -280247, -1439888, -770947, -1117765, -3604551, -412317, 1245004, 5497558, 4551592, -2550137, -668404, 3617436, -731218, 833224, -1264868, 830002, 3506304, 437013, 3844533, -23621784, --15449534, -3588982, -5636071, 12045236, 8269423, -1992865, 20753818, -21005074, -4908611, -7936563, -22169010, 10628433, -7303592, 8164196, 3098819, -8647917, 15307800, -16910360, 8353175, -7794829, -1309428, 1829119, -5651103, 14781130, -10408316, 9072045, -4340602, -21777632, -3620658, 15192910, --9214315, -14872398, 194347, -1864553, -22244710, -4168803, 8914205, 3773129, 11851425, 8710731, --2519535, 21378736, -5124970, -6596533, -10525891, -9804337, -9480067, 5862094, 7981660, -6894497, --7772280, 2553358, -6742025, 8959839, -2474975, 4859756, -3646964, -5568962, -4272956, -130997, --12590697, 3401077, 9073655, -2129767, 3922916, 5447629, 6442451, 11613055, -8318815, 3731790, -9059697, -1174137, -19302656, -20551418, 2261837, -1957968, 1526861, -7524246, -3122978, 1510218, --7441031, -13505525, -4124242, 10187126, 8269960, -4063576, -1642825, 3134253, 2798708, -1609002, --3275986, 244276, -427349, -5308043, -1961190, 5644124, -1615982, 4536023, 826781, -1407139, --2768643, 3646427, 3600793, 4220342, 517544, -2359011, 2460480, -6316287, -3779571, 3127810, -1472100, 2686502, 4942434, -2503966, 1039382, 1947231, 2421825, 476205, -2866354, -4134443, -1879585, -2241973, -1359357, 17055852, -10550587, -26788784, 249108, 19338628, 24639154, 4725001, --8906688, -6634114, 2647847, -4226248, -3743601, 10921028, 11052025, -5201743, 10668162, -13208635, --1509681, 9801652, -4580583, 11837467, 5619965, -1457605, -15941308, 6310381, -3637301, -3651796, -945430, -1030792, -1590749, 22212498, -10717017, 11423002, 19006304, 13276281, 7011534, 423054, --12368432, 12669080, -6875706, 12081206, -6599218, 2934000, -13012140, -2340220, -12293270, -7956427, -1986422, -11352135, -3090766, -3828427, -373125, 10478110, -12009802, -10216117, -3702799, -5778879, --2360085, -10120554, -13245679, -16489990, 1781338, 13163538, -804770, -8015483, 1480153, 2979097, -10384694, -11104638, -6390375, -3391414, -196495, 7946763, 228707, 2394444, -7718056, -3020973, -4168266, 15881178, 7107097, 11054709, 12664248, 16587701, 6461779, -1945620, -5635534, 4256850, -5155572, 7492571, 3231426, 987306, 169114, 10204842, 3710852, -3359201, 957241, 5869073, -2415382, 1668595, -3461744, -3227668, -2360085, -4612795, 514322, 5017059, 4673998, 1335198, --2480881, 6876243, 3954591, 8622684, 4505421, 610422, 5726802, 441845, -4107063, 6714645, -142808, -476205, -2224256, 1645509, -1324461, 269509, 5739150, -45168560, -21471078, 15068893, --36881956, -25567940, -1646583, -15049565, -10315438, 11253888, 12876312, 3941169, -2360622, 4659503, -36840620, -4518306, 5900748, 14176076, 16169478, -16802448, -8706972, -7960722, 13611288, 14839649, -7471096, 2726231, 13917305, -4092567, -6950868, 9756555, 18832894, 1332514, 6099391, 19129784, -14137959, 11502996, -8567923, 3616899, 5821828, -46171, -289373, 12273943, -4000762, -204011, --1213865, 8192113, 337692, -13447543, -8960912, 2681670, -18210124, 13807783, -4017942, 30522722, -1253057, 16732656, 3359738, -748398, -9808632, -491774, 3955128, -12933757, -6606197, -15107011, --1864016, 7695508, 10557030, -4610648, -24506010, 8868034, -3855270, 8347806, -8755828, -10546292, -7756711, -15935402, -12119861, 23666344, 406411, 10878615, -2180770, -10300942, 2903935, 13918915, -3455838, 11058467, -17929340, -938450, -1161789, -3028489, -15403900, 15047955, -8943733, 1055488, --1702418, 1767916, -5672041, -617938, 3235721, 4568772, -3762928, 9830643, -2372970, -3224447, --5727339, -5008469, -4932233, 4688494, -1854889, -3563749, -1397475, 1188095, -3734474, 6844568, --1997697, 7753490, -4833986, 3248606, 1282048, 3050501, 5141613, 953483, 18333604, -8333847, --21175800, 9108552, -11052561, 4655208, -266825, -10529112, 19515258, -26058640, -1062468, -31460636, -782221, 25466472, 35609036, 16865262, -6099391, 16483011, -1235877, -2254321, 1782948, -2760590, -8766028, -1050656, -16646756, 1008780, -23138600, 8186745, -7152731, -5126581, 15538118, -277562, --17790292, -19863686, 4626217, 2789045, -9906342, -8221105, 14918032, -21532818, -105227, -4308926, -7625715, -5745593, -4669167, -17213156, -7326141, -7571491, -3210488, 12492449, -14748918, 5363878, --1788854, -2507187, 1948305, 5418101, -24974162, -2602750, 3398930, -2149631, 9255655, -7812546, --11029476, -4975183, -27946816, -12271258, -12177306, 648003, 11948062, 18037788, -8490613, 13666586, --23300734, 37436008, 2575907, -6642704, 19563040, -23116050, 19634980, 8841727, -5233418, 479963, -6561637, 594316, 3149822, 17948668, -7627862, 7704098, -4123706, 5597416, 8929774, 8859444, -10744934, -3614215, 9062918, 2218888, 1375463, -1414655, -12020540, 547071, -8523363, 4028143, -5565204, -1757715, -1317481, 1704565, 1240172, 6121939, 2803540, -4259534, 6557342, 24696, -794569, 8183524, 5544803, 3346853, 14681272, -11919071, 119722, 5487895, 46708, -9327058, -2329483, -5876589, -5642514, 22841172, 1219234, -16447577, -446140, -2556043, 10551661, 6930467, --10066330, 11456825, 131533, -25838524, -28133646, -2759517, -8530342, 6929393, -1284195, -9977746, --25366076, -22127672, 11952357, -18836652, -4290673, 1122597, 5862094, 1340567, 17950816, 1450088, --9193914, 12020003, -1683627, 1708323, 11076184, -14753750, -1042603, 3131568, -15076946, 9041980, -12384538, 5381057, 11012296, 5741298, 17098264, 4639102, 12427488, -17616346, -5560909, -2850248, --23656142, -172872, -2624762, 9826348, -1652489, 11271605, -1959042, -13730474, -9390946, -748398, --21882322, 9522479, 532039, -4277788, 12684649, 8040716, 10525891, 10956462, 3297461, -1357210, -9184788, -29610042, 8904541, 3689377, 13176423, -5263483, -20943872, 13115756, -3217468, 22566296, --33394444, -11898670, -23404350, 15942919, -6866579, -21485038, -23977192, -15784542, -7135015, 7596187, -5945309, -6589554, -6852621, -3595961, -484794, -7271917, -2799782, 12178917, 1843615, -1188632, -3535832, 2647847, 2192044, 6605123, -5181341, -6823630, -215285, -11840688, -42413, -4166655, --1726577, -7646653, -2095944, -10428181, -9359807, 11793443, -6629819, -435402, 3941169, 5677947, --1028108, 9900436, -8267812, -2669322, 4076461, -9715753, -2680060, 11366631, 4070019, 2547989, --3898757, -5869073, 4386772, 15659988, 14518600, 53112104, 40129492, 5439576, 11634530, 3374234, -30830886, 854162, 15005542, -13998372, 36513664, -14457397, 33112588, -1480153, 21149492, -2451890, -14923401, -14837501, 3570192, 7471096, -8149164, -2647847, -4384088, -3411278, 9866614, 255014, --8537858, -11722039, -17737678, -22516366, -10854993, -3771518, 119185, 7118909, -19008452, 8077760, --10471130, -16091095, -3375308, -11747809, 5357435, -2837363, -24733642, -5843840, -12589086, -14853608, --15662672, 14239427, 18943490, -39637180, 8971650, 3568581, 11113765, 3976603, -5034776, 24051280, -13471702, 12609487, -33239826, -14810658, -471373, 8238821, 27456652, 1083942, -3755412, 1386738, -23251342, 20978768, -19866908, 22447110, 1617592, 5086315, -3832722, 13198435, -28304372, -9838696, -29078002, -4409858, -1943473, -11155641, 19369766, 12754442, -10096394, -16931298, -2987150, -665183, -1666984, 319975, -3696356, -15776489, -5483600, 12421582, 16130287, 10110890, -9012989, -2296197, --2688113, -7592429, 2414845, 2633889, 7413114, -1573569, -5366562, 4758287, 1732482, 2898029, -14580340, 2066416, -4164508, -5497558, 2434710, 5339718, 11328513, 2371359, -11195369, -5856725, --8432631, 3387119, 4157528, -9105868, -19662360, 6407018, -1704565, -3211025, -6943889, -11969537, -14304389, -6045704, 12428562, 19485730, -22603876, 6658810, -13034152, 36959804, -22325240, 20762408, -19112068, -7656316, -35065724, -20521890, -2575370, -9532680, -1316944, -16225850, -25623238, -33993056, --19607062, -22727356, 9405442, -19478750, 7712688, 2005213, -2492692, -2264522, -16098074, -5166846, --16530792, 4489852, 14227079, 18733574, 56371, -5616207, -16965120, -4251481, 1367947, -10191957, -2538326, -13952738, -9209484, -2232309, -13876502, 10473278, -12291660, -35685808, 1015223, -1368484, --11996917, 14821932, 11521250, 16927540, 6294275, 13262322, 27071178, 4336307, -27545236, -6484864, -12505334, -6258304, -22952842, 12385075, 17631914, 5782100, -442919, -30888332, 27040578, -1569811, -22010096, -18795850, 22291418, 55151676, -5228586, -1850594, -27393838, 14317273, -22346714, 18319646, -9109626, -12377559, -3043521, -30181808, 6561100, -16574816, -79457, 11263015, 11200738, -663036, --8076149, -6933151, 7885023, 20003274, -10178536, -1828582, 2766496, -9074729, -2920578, -3031710, -3899294, -1223529, 8153459, -4134443, -10072772, -5636608, 2584497, 7423314, -9979893, -3234647, --512175, 1085553, 6785512, 1308891, -2787434, 2315524, -16697759, -9589051, -1361505, -1732482, -3034931, 736050, 968515, -529892, -3179350, 8114804, -804233, 5994164, -762894, -2016487, --6390912, -4358855, -43503188, 14866492, -57081724, 37812356, 13590350, -9700721, 40301824, -3801583, --20410758, 35742716, -13659070, -1881733, 7626252, 12540231, 33066954, 1402307, -2596308, 23343684, -9976135, 19611358, 24033026, 17811766, 1738388, 12465606, 2064269, -1195075, -13004087, 8441758, -12669080, 3086471, -642635, -14101451, 6908455, -13208635, 16076063, 15794742, 2861522, 18651432, --11332271, 12329240, 19424526, 12352863, -25900800, -27939836, 33022930, -3143916, 20710870, 31976032, -902480, 74088, -3175055, 6321655, 18603114, 17570174, 1986959, 14601815, 168577, -16572668, --20574504, -30677878, 705985, -12435004, 608812, 17448304, 16474958, -28699508, 2639258, 11180874, --25028922, 4218195, 35241280, -15177341, -17313014, 18849000, -20047834, 4685273, -5502390, 36797668, --10506027, 22736484, -11082089, 19110456, -1604707, 7111392, 15447924, -24008868, -7124277, 9163313, --15719043, 11676405, -14086419, -3948149, -7868380, -7348152, 1229434, -3948149, -6347962, 3849365, -11134166, -5505611, 3191161, 3988414, -9281424, 1673427, 1502702, -2445447, -6500970, -2775623, --4972499, -15440944, -5918465, 3302830, -20055350, 7327751, -10174778, 7810935, -4505958, -1975148, --13998909, -7441031, 388158, 3913789, -6060199, -13878650, 2527052, 926639, 7657927, 3175592, -235686, 8994198, 7451232, 741956, 4134980, -19990388, 4418448, -23153632, 47499652, 11634530, --25421912, 9633612, -5933498, -22623740, -26669600, -27048094, 7957501, -1351841, 23801098, 35346508, -16949552, 8551280, -4334159, 11728482, 1069984, -44521632, 19464254, 46213848, -30325154, -31825170, --27540404, -38896296, 28056336, -38300372, 17164300, 228707, -4861366, -270046, -12510703, -14829985, -18920942, -39402028, 40403832, 23207318, 5290863, -25933550, -19666118, -17185238, 3539053, 6736656, --16854526, -2348810, -12471511, 27849104, 12540768, -5064304, -942745, 11432666, 2474975, 13053479, --22899692, -9062381, -2289755, -4073240, -21312702, -14958297, 12487617, -40365712, -23906862, 3034395, -47035260, 22715008, -14485314, -1001801, -35965520, 17403744, 54569172, 1897302, -11889006, -8257612, --25961466, 33652680, -10966662, -13050795, -1270774, 19935090, 12403866, -17352742, -15759846, -5611912, -17448304, -4722317, 5005785, -1400696, -14115947, -4555350, 22138946, 12739410, 1671279, -10366977, --1808718, -1590212, 17223892, 14136885, 6920803, 6377490, -20781200, 7872138, 7257958, -3098282, -4510253, -3235721, -3118146, -18060874, -2089502, -929324, -2729989, -5763309, 4665408, 6622303, -3299072, -21230024, -18451180, -8997420, -242666, 1302449, -21604222, 7652558, 26739392, 5443871, --7656316, 526134, 3985193, 108985, -37044, -22217866, -15334644, -44321916, 9574556, -32682016, --48816060, 11355357, 26852136, 6536940, 7144141, -20718922, -25885768, -6799470, -38308960, -18880676, -9895068, -32085554, 50302656, 9711995, -12469364, 10735271, -24237038, -47831440, -16098611, -36607616, -5706401, 10562398, -13480829, -26068840, -13257490, -16124918, 13914083, -19154480, -7041062, -2580202, -21473762, -15706159, -2942053, -7404524, 5418638, 8901320, 1549410, -6561100, 22157200, 28980828, -18514530, -15013058, -12299176, -42909944, -23907398, -9900436, 11244224, 71781792, -12376485, 725313, -31920734, -3027415, 13543642, -16478179, -17115444, -13892072, 15098958, -40718436, 216896, -5509906, --607201, 34997540, -15534360, 53043920, 4618164, 40164924, -51446192, -15537044, 14774151, -1154273, --22369800, -18911814, 41601592, -43105364, -35529580, 51007568, 8932995, 44268228, -17715666, -3095061, --3158949, 14151380, 6040335, -4214437, 15052250, 15005542, -884226, 6981470, 4711043, 1457068, --5315022, -9710921, -2234994, -6475200, -8529268, 7748121, 4539244, -7327214, 5103495, -15831786, --1586454, 10934450, 19315542, -1698123, -12227235, -1070521, -13909788, 7795366, 13276818, -9422085, --7646116, 7324530, 8857296, -19969988, 7087770, 729608, 12932683, -8576513, -8687108, -241592, -4112431, 5879274, -22292490, 3479461, -9429064, 17550846, -6140730, -2648384, -44131324, 20992726, -32353452, -23495618, -19319300, -6614787, -21219822, -25556130, 6799470, 7539278, 19821274, 858993, -17316234, 30840012, 32170378, 21351894, 7367480, -23620172, 2292439, 12263742, 16255377, 25020868, -232465, -12967043, -18882286, -7130183, 25349434, -10424422, 9946607, 22047678, 2131915, 43330852, -4952634, -27666032, 23860690, 23605140, 6761889, 10177462, 21856552, 3500398, 1804423, -25386478, -54788212, -58460412, -43036108, -49867256, -16571058, 10324028, -29379186, 15066745, 32642826, -9692667, -3135326, 28851980, 9142375, -31241056, -10925323, -24174224, -3547643, 1814624, 1508070, 27902792, -27331562, -6286222, -7013145, 17536888, 42126648, 7347616, 34637836, -29272350, 30775052, -13522705, -10129680, -6152004, -19807852, -13683229, -3235721, 14003204, 8445516, 34478924, -44704168, 22717692, --17769354, -10984916, -8821863, 16540456, -7995619, -1522566, 3447785, -17851494, 11049340, -8722542, --761283, -13544716, 4032974, -2720862, 428960, -15256261, 2093260, -1376000, 2871723, -1468879, --16846472, 6681359, -9682467, -8612483, -4131222, 12447889, 14176613, 15921981, -13848048, 27352500, --20811264, -6180995, 1333051, -2196339, -15452755, -8147016, -1123671, -11375758, 3010235, -903554, --755377, -1317481, -11545409, 1496796, -2158758, -24957518, -50216756, -50544248, -36580236, 7511898, -93910536, 23737210, -12948790, -28388124, -67853504, -95444912, 21553756, 39535712, 47460464, -9982578, -4117263, -27984934, -48688288, 14042932, 8844948, 15847356, 2294050, -40832256, -12472585, 9980430, --8205535, -1608465, -7721815, 53209812, 46726560, 31507880, -2878702, -22835804, -38783556, -25672630, --23206246, 36347772, -6017786, 26598196, 12032888, 12458090, -16345572, -88406536, -60863980, 30061012, --47890496, -16342351, 102009232, 70140040, 52707300, -39944268, 28872380, -27664422, 2032056, 2030983, -14812805, 43272868, 76263584, -29189672, -2709588, -50273664, -40613748, -66535484, 7232725, -2739652, --71636832, -17155174, 46163384, 17257178, 32225140, 43673376, 78692392, -57303992, -34386044, 4562329, --46768972, -6016713, 26175678, 61300996, 31173946, 9584220, -37382320, -35842040, 24224690, -10193568, -36138392, 31774168, -8553427, 14567992, 5865852, -6090264, -11994770, -6975027, -4509179, 10809896, -3153580, -251792, 3781719, -1094680, 5240934, 169114, 22886270, 18822158, 29824790, 5398237, --16342351, -34441344, -28130962, 11494406, 26805964, 30706332, -3809636, -19563040, -79255032, -40711460, --37497212, 940598, 4059818, 8144869, -238371, 5950141, -8933532, 4295, -13240847, -11832635, -16818018, 14847165, 8651138, 8740258, 4418448, 2033667, 23262616, -37721088, -124932008, -116255640, --66723928, -72566160, -18080738, 120370752, 61170536, 123842160, 109904456, 172254496, 123032560, 105828528, -17095044, -45919104, -103823320, -166393472, -141293680, -142310528, -74359840, -35695472, -8359080, 1201517, -4119411, 29395830, 39298412, 99050000, 60176248, 116887536, 76168024, 100197296, 36280124, 96815544, -33664492, 23692114, 22945326, -5750425, -27140972, -65525096, -75586592, -140383152, -96135328, -177893792, --140714944, -215911760, -127972848, -101573296, -24471114, 59337656, 31598074, 5333276, 59273768, 126608120, -169169632, 221744864, 264361136, 226169760, 165264976, 206039776, 170046880, 95297272, 42902964, -10572062, --70841192, -164007616, -194742944, -260862352, -336744224, -389762912, -351673536, -309996768, -220571808, -150638992, -46195056, 145269760, 177118016, 272665984, 227720784, 284360128, 298912544, 293163744, 338026272, 221853312, -57685704, -55870008, -108266464, -134084048, -86757800, -125577328, -107594840, -125680408, -170003392, -172029552, --200196480, -118600688, -92260192, -78731584, -43933756, -2707977, 11866458, 48595408, 132080448, 139081776, -197581376, 171901776, 225963056, 166077792, 111059800, 114491480, 43718472, -30105036, -48995912, -217961008, --280880672, -261649952, -230791136, -135231344, -106036840, -58089432, 5114233, 58809912, 89801320, 121946472, -145718576, 173156432, 164531072, 155421984, 136944496, 76417128, -304406, -38872676, -90344104, -94649272, --80968720, -66227320, -68890736, -69854960, -54808076, -39465380, -23320062, -9865003, -8927090, -6482717, -1961190, -6857989, -7970386, 9463424, 22465900, 24951076, 16435229, 11529303, 19292456, 23252416, -17068200, 15530602, 14453102, 9055402, 6154152, 5211943, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +5064840, -6513318, 790274, -2760590, -862752, 2532957, -4039417, -7337952, -1877438, 619549, +-4208531, -2426657, 3556770, -2112587, 1644436, -9188009, -791348, 6214281, 3308199, -10279467, +-3543348, -2697776, -2734284, 3470334, -1503775, -5354751, -3367791, -3828427, -3900904, 6772090, +2113124, 4361540, -2831994, 5729487, 5203353, 3711389, -2066953, -4863514, -3825742, 403727, +964757, 7794829, 2758443, 1483374, -3677566, 847182, 331249, 891743, 3083787, 1830193, +-5298916, -4500052, -2331630, 2849174, 657667, -996969, -5664525, -1729261, 2213519, 2563559, +-2289755, -862752, 119722, 2714956, -592169, -2993592, -3758, 433255, -3868155, 8221641, +509491, -5576478, -16643, -857383, 5268851, 426812, 3562675, 4934381, 1839857, -333397, +228170, -1787780, -1178969, -1187022, 3121368, -1005559, -417686, -1409286, 1067836, 383863, +-621697, -122943, -833224, 171262, -134755, 643171, 621160, 1054951, -5645198, -5108327, +5800890, 5320928, -4297115, 3205656, 324807, 1654636, -14120779, 5468030, -2095407, -9640591, +-12573517, 344671, 9098351, 555661, 5900748, 226560, -11370926, -3919158, 1316408, 3986267, +-1998234, -965831, -4784057, 642635, -864362, 8048232, 4092567, 1716913, 1449015, 2193118, +2798171, 7339026, 4449586, -6467684, -542777, 1514513, 1574642, -7694434, 2513630, -2282238, +-4864588, -1370632, -198105, 5277978, 1363115, -2936684, 5345624, 8326868, -1753957, -3147674, +2020782, -587874, 4558034, 4645007, 3640522, -5554467, -4224101, 3997004, -1673964, -1389422, +-4255776, 469225, -6325413, 3780645, 3411278, 4472672, 1159641, 5196911, -5604396, -3521336, +7303592, 388158, 2716567, 8616241, 3340948, 853625, -3453691, 5056787, 621697, -2556043, +1459215, -6081674, 188979, -635655, 923418, 1640141, -678068, -2706903, -1469953, -436476, +1344325, 1248225, 438087, -744640, 761820, 1723893, 322659, -564251, 7201050, 649077, +2796024, -6038187, -5127117, 2956548, -1412507, -2199560, -2798708, -2615635, 2196339, -6988449, +-4002373, -8633421, -10377178, -1908576, 8660265, 5590974, -3481071, -958851, -1189706, -1998770, +-7471096, 5405217, -1866700, -1907502, 484794, 3538516, -1674500, 328028, -247497, 5117991, +-4705674, 5134097, 2805151, 6152541, -2082522, 4763656, 2121177, -2920578, 4290673, -2887292, +2474438, 4565550, -3423089, 4794257, -2843268, -2286533, -712428, -1397475, 2415382, -1375463, +-3624416, 1477469, -3145527, 708670, 438087, 508417, 7213398, 1416802, -1648194, 57445, +-2946348, -4105452, 2138357, -976031, 6885370, 7030862, 2851858, -1930051, -1075889, -32749, +-2757906, -3180960, 3544422, 5576478, 185220, -587337, 3425237, 3706557, -476205, 1321239, +1190243, -2663417, 2548526, -468688, 3655017, -1792075, -694711, -119722, -1516124, -147640, +2662880, -563714, 807991, 798327, -1878511, 608275, -343597, -360240, 760746, 715649, +-1203128, 1391569, -464930, -570157, 99858, -134755, -227096, -1077500, -816044, 13702019, +-5815923, 5609764, -7005092, -5894306, 15569, -1646046, -1500554, 1897839, -2953864, 5917391, +5774584, 4944044, -1500017, -660888, -2594160, -6344741, 978179, -3817689, -714038, 679679, +-2130304, 3592203, 1354525, -447750, -10458782, -4377109, -6594923, 231928, -4317516, -6638946, +-2911451, -3675418, -4057134, 6578280, -5276368, 4632122, 396211, -1886564, 2596845, 2221035, +-4729833, -1309965, 91805, 5076115, -490163, -6978248, -8837969, -9211094, 2388002, -3375308, +198105, -745177, 1326608, 3091303, 5107790, -3547643, -1872606, 1665911, 1755568, 637803, +6408091, -3602941, 3962644, -7380365, 14431090, 1757179, -1536525, 2788508, 1381906, 2742337, +-4010963, -724239, 1097364, -462246, -861678, -7299834, -2418604, -4966593, -1469953, -596464, +-3564823, -3505767, 2597382, 3011309, 928787, 578747, -326418, 2542084, 1511292, 2921115, +-1462436, 243203, 100395, 2683281, -1072668, -174483, -153545, 285615, -2124398, 510564, +-1533303, 765041, 1091995, -526670, -1784022, 344671, 570157, -569620, -602369, -1948305, +528818, -239981, -967978, 1207960, 1425392, -192200, -6662568, 1022202, 1291175, 492311, +-1013075, -3969624, 2436857, 1960116, -6014028, 7165616, -8830453, 10998874, -1028108, 3702262, +1661079, -176631, -1133871, 2300492, 10310069, 11560978, -2161979, 2120103, -1343251, -1587527, +1570347, 2491618, 7939247, -954557, 2436320, -3947612, 4372814, 1008780, 6269042, 3063386, +5874979, -8358007, 3590056, 3113315, -2601677, -38118, 6374805, 77309, 541166, 1976222, +3896609, -1256278, -501974, 12261058, 5856725, 1132798, 1158031, -2501282, 5590974, -7327751, +-10766409, -13038984, -759136, 6933151, -165356, 3482145, 9352291, 3728569, -1601486, -3222836, +5007932, -913217, 12012487, 5428302, 1821066, 1722819, -6484864, 1438277, 4977330, -2461016, +-7307350, 1341640, 2691871, -270583, -2508261, -888521, 1297617, -2339684, 1429687, 1411434, +1296006, -425739, 1488743, -2295660, -2137820, -671089, -1340030, 798864, -2145873, 1316408, +2199023, 1462436, 1670205, 1673427, 559956, 1090385, -2976412, -2506114, -904628, -1293322, +-1532230, -281320, 1060857, 606664, -61203, 1940252, 1075889, -99858, 2437931, 1530082, +-15933792, 1724966, -1189706, 10956462, -8174397, 4817880, -16872242, 6664179, -1577327, -8591008, +-9440338, -6598681, 5060009, 3957276, 12836047, 1719598, 4287451, 12288975, -2114735, -8908299, +1358820, -6859063, 1700807, 10024991, 1879585, -2784213, -1171989, -1893007, 2961380, 3897146, +-804770, 2612951, 5174899, -3194382, 1652489, -6025839, -449361, -7546795, -1167694, 1058173, +-3570729, 5612986, 3835406, 4787815, 9511742, 634045, 11507291, 8822937, 4272419, -5946382, +13193603, 5698348, 2333241, 11575474, -1248225, 287763, 979789, 3861713, -2390686, -3342558, +-7895224, -7626788, -6231998, 99858, -4914517, 10162429, -6092411, 4223027, 6338835, -3519189, +338229, -2871186, -1686312, -9919764, -11381663, 5245229, -1975685, -3787088, -3368865, 1010391, +1342177, 807991, 2239289, -3942780, 9324911, 695785, 2809446, -1869921, 524523, 2815888, +-4536559, 1574106, 179315, 1614371, 2115808, 32749, 1653026, 3229279, 9664, 964757, +2295123, 2579128, 3297998, -89657, 565862, -1637456, -469762, 220654, -788127, -2334852, +169114, -634045, -1033477, 317828, 13381507, 539555, 192200, -1204202, -2579128, 2429341, +585189, -6781754, -8699993, -11800960, -6170258, -12348568, -7842074, -4186519, -9131637, -5762773, +-3978214, -4730907, -12355010, 8524973, 5348845, 345208, 4503810, 2087354, -3413425, 15406048, +970126, -5281736, -2765959, -10390600, -4459787, 11481521, 579284, -9575093, -9582072, 1432909, +-9699647, 3148748, 3429532, -7538742, 319975, 2400887, 557272, 11303817, 3394635, -5110474, +1157494, -6133750, 5707475, 846109, 2537789, -13743358, 9521942, -4698158, 3978214, 357556, +1861332, 2301566, 373125, -3973919, -299574, -5341329, 28991, -10823854, -42413, -11679090, +15469398, -2586107, 9848360, -7187091, -3363496, -1509681, -7443179, -4122632, 6054294, -172336, +-213675, 4519380, 5820755, 975494, 9494025, 8249559, 11414949, 6116571, 2440078, 1438277, +5193153, 2812130, 1740536, 2154463, 1191317, 2590939, -696858, 4201552, 745177, -214212, +-852014, 3286187, 1336809, 2355253, 1176284, -1464047, 1126892, 1332514, 1094143, -2446521, +4798016, 2631741, -439160, -3587372, -374736, -489089, -2596308, 1015760, 501437, 2778844, +-2208687, -4973036, -6855842, -35433, 5032091, -13160854, -10737, -5692979, -4558571, 9308268, +-15178951, -14338748, 3729642, 19103478, 484258, 1810866, 1464047, -2918967, 10458782, 10154376, +5864241, 2876018, -2761127, -15540265, 9202504, 71941, -12451110, -4022237, 2880313, -635655, +98247, 1265405, -3003256, -12261595, -696858, 494458, -2246805, -5127117, 3670587, 10622528, +-13720273, 8524973, -5148592, -2589865, 807454, 6762963, 22275312, -14418205, -3639985, 1407139, +-1437203, -2645163, 727997, -5532455, 1913945, -4997195, 15311022, 5260798, 2860985, 4219806, +-3247532, -892279, 8099772, -1282585, 3514894, -6750615, 11751031, 514859, -8335995, 16441135, +-10492068, 7565585, 2147484, 3727495, 11951820, -4776541, 5082557, -590558, 12348, 1433982, +-812823, -8083129, -4289599, -527744, -3581466, -1275605, -1957431, -4961761, -5074504, -3810173, +2347200, -4345970, 2486786, -1167694, -190052, -3814468, -2616172, -2816425, 2225330, -5263483, +514859, 500364, 3177739, 4983773, -1970853, -958315, -4507568, -3847217, 255551, -3385508, +936840, -634581, -3003256, 47782, -920197, 1351304, 1783485, -1262720, 16307991, 1283122, +4259534, 4844723, -2718178, -9373766, -7347079, 1136556, 16314433, 9251360, 2018098, -14571213, +2113124, -8010114, 60130, 16321413, 15700790, 7933879, 10617159, -9558987, -19801946, -10366977, +-14267881, 7927436, -128312, -2405719, -40802, -10799695, -3194919, 3351148, -2016487, -4099010, +-3980361, 11566347, -732292, 3152506, -3270081, 7585449, 1622424, -4365835, -9176198, -7054484, +20940650, -894427, -4714264, 6691559, -11938935, 3755949, -6825240, -20885352, -4668630, -2712272, +6342056, 2428267, 5574331, 1769527, 8286603, 315143, 594853, 4581120, -20397336, -3221226, +-5463736, -1453846, 2004676, 11729556, 12975633, 4672925, -3367254, -8928163, -11710765, -3935801, +-6880001, 1482301, -3409667, -3655554, -8056822, 12093554, 8739185, 3544959, 11144366, -2644626, +4466229, 6822019, -4316442, 4064113, -2770791, 891206, 4082903, -1232656, -2661269, -1116155, +-1456531, -1054951, -64961, 275415, 4048007, 163209, 509491, 1235877, -2202245, -6179384, +280247, -1439888, -770947, -1117765, -3604551, -412317, 1245004, 5497558, 4551592, -2550137, +668404, 3617436, -731218, 833224, -1264868, 830002, 3506304, 437013, 3844533, -23621784, +-15449534, -3588982, -5636071, 12045236, 8269423, -1992865, 20753818, -21005074, -4908611, -7936563, +22169010, 10628433, -7303592, 8164196, 3098819, -8647917, 15307800, -16910360, 8353175, -7794829, +1309428, 1829119, -5651103, 14781130, -10408316, 9072045, -4340602, -21777632, -3620658, 15192910, +-9214315, -14872398, 194347, -1864553, -22244710, -4168803, 8914205, 3773129, 11851425, 8710731, +-2519535, 21378736, -5124970, -6596533, -10525891, -9804337, -9480067, 5862094, 7981660, -6894497, +-7772280, 2553358, -6742025, 8959839, -2474975, 4859756, -3646964, -5568962, -4272956, -130997, +-12590697, 3401077, 9073655, -2129767, 3922916, 5447629, 6442451, 11613055, -8318815, 3731790, +9059697, -1174137, -19302656, -20551418, 2261837, -1957968, 1526861, -7524246, -3122978, 1510218, +-7441031, -13505525, -4124242, 10187126, 8269960, -4063576, -1642825, 3134253, 2798708, -1609002, +-3275986, 244276, -427349, -5308043, -1961190, 5644124, -1615982, 4536023, 826781, -1407139, +-2768643, 3646427, 3600793, 4220342, 517544, -2359011, 2460480, -6316287, -3779571, 3127810, +1472100, 2686502, 4942434, -2503966, 1039382, 1947231, 2421825, 476205, -2866354, -4134443, +1879585, -2241973, -1359357, 17055852, -10550587, -26788784, 249108, 19338628, 24639154, 4725001, +-8906688, -6634114, 2647847, -4226248, -3743601, 10921028, 11052025, -5201743, 10668162, -13208635, +-1509681, 9801652, -4580583, 11837467, 5619965, -1457605, -15941308, 6310381, -3637301, -3651796, +945430, -1030792, -1590749, 22212498, -10717017, 11423002, 19006304, 13276281, 7011534, 423054, +-12368432, 12669080, -6875706, 12081206, -6599218, 2934000, -13012140, -2340220, -12293270, -7956427, +1986422, -11352135, -3090766, -3828427, -373125, 10478110, -12009802, -10216117, -3702799, -5778879, +-2360085, -10120554, -13245679, -16489990, 1781338, 13163538, -804770, -8015483, 1480153, 2979097, +10384694, -11104638, -6390375, -3391414, -196495, 7946763, 228707, 2394444, -7718056, -3020973, +4168266, 15881178, 7107097, 11054709, 12664248, 16587701, 6461779, -1945620, -5635534, 4256850, +5155572, 7492571, 3231426, 987306, 169114, 10204842, 3710852, -3359201, 957241, 5869073, +2415382, 1668595, -3461744, -3227668, -2360085, -4612795, 514322, 5017059, 4673998, 1335198, +-2480881, 6876243, 3954591, 8622684, 4505421, 610422, 5726802, 441845, -4107063, 6714645, +142808, -476205, -2224256, 1645509, -1324461, 269509, 5739150, -45168560, -21471078, 15068893, +-36881956, -25567940, -1646583, -15049565, -10315438, 11253888, 12876312, 3941169, -2360622, 4659503, +36840620, -4518306, 5900748, 14176076, 16169478, -16802448, -8706972, -7960722, 13611288, 14839649, +7471096, 2726231, 13917305, -4092567, -6950868, 9756555, 18832894, 1332514, 6099391, 19129784, +14137959, 11502996, -8567923, 3616899, 5821828, -46171, -289373, 12273943, -4000762, -204011, +-1213865, 8192113, 337692, -13447543, -8960912, 2681670, -18210124, 13807783, -4017942, 30522722, +1253057, 16732656, 3359738, -748398, -9808632, -491774, 3955128, -12933757, -6606197, -15107011, +-1864016, 7695508, 10557030, -4610648, -24506010, 8868034, -3855270, 8347806, -8755828, -10546292, +7756711, -15935402, -12119861, 23666344, 406411, 10878615, -2180770, -10300942, 2903935, 13918915, +3455838, 11058467, -17929340, -938450, -1161789, -3028489, -15403900, 15047955, -8943733, 1055488, +-1702418, 1767916, -5672041, -617938, 3235721, 4568772, -3762928, 9830643, -2372970, -3224447, +-5727339, -5008469, -4932233, 4688494, -1854889, -3563749, -1397475, 1188095, -3734474, 6844568, +-1997697, 7753490, -4833986, 3248606, 1282048, 3050501, 5141613, 953483, 18333604, -8333847, +-21175800, 9108552, -11052561, 4655208, -266825, -10529112, 19515258, -26058640, -1062468, -31460636, +782221, 25466472, 35609036, 16865262, -6099391, 16483011, -1235877, -2254321, 1782948, -2760590, +8766028, -1050656, -16646756, 1008780, -23138600, 8186745, -7152731, -5126581, 15538118, -277562, +-17790292, -19863686, 4626217, 2789045, -9906342, -8221105, 14918032, -21532818, -105227, -4308926, +7625715, -5745593, -4669167, -17213156, -7326141, -7571491, -3210488, 12492449, -14748918, 5363878, +-1788854, -2507187, 1948305, 5418101, -24974162, -2602750, 3398930, -2149631, 9255655, -7812546, +-11029476, -4975183, -27946816, -12271258, -12177306, 648003, 11948062, 18037788, -8490613, 13666586, +-23300734, 37436008, 2575907, -6642704, 19563040, -23116050, 19634980, 8841727, -5233418, 479963, +6561637, 594316, 3149822, 17948668, -7627862, 7704098, -4123706, 5597416, 8929774, 8859444, +10744934, -3614215, 9062918, 2218888, 1375463, -1414655, -12020540, 547071, -8523363, 4028143, +5565204, -1757715, -1317481, 1704565, 1240172, 6121939, 2803540, -4259534, 6557342, 24696, +794569, 8183524, 5544803, 3346853, 14681272, -11919071, 119722, 5487895, 46708, -9327058, +2329483, -5876589, -5642514, 22841172, 1219234, -16447577, -446140, -2556043, 10551661, 6930467, +-10066330, 11456825, 131533, -25838524, -28133646, -2759517, -8530342, 6929393, -1284195, -9977746, +-25366076, -22127672, 11952357, -18836652, -4290673, 1122597, 5862094, 1340567, 17950816, 1450088, +-9193914, 12020003, -1683627, 1708323, 11076184, -14753750, -1042603, 3131568, -15076946, 9041980, +12384538, 5381057, 11012296, 5741298, 17098264, 4639102, 12427488, -17616346, -5560909, -2850248, +-23656142, -172872, -2624762, 9826348, -1652489, 11271605, -1959042, -13730474, -9390946, -748398, +-21882322, 9522479, 532039, -4277788, 12684649, 8040716, 10525891, 10956462, 3297461, -1357210, +9184788, -29610042, 8904541, 3689377, 13176423, -5263483, -20943872, 13115756, -3217468, 22566296, +-33394444, -11898670, -23404350, 15942919, -6866579, -21485038, -23977192, -15784542, -7135015, 7596187, +5945309, -6589554, -6852621, -3595961, -484794, -7271917, -2799782, 12178917, 1843615, -1188632, +3535832, 2647847, 2192044, 6605123, -5181341, -6823630, -215285, -11840688, -42413, -4166655, +-1726577, -7646653, -2095944, -10428181, -9359807, 11793443, -6629819, -435402, 3941169, 5677947, +-1028108, 9900436, -8267812, -2669322, 4076461, -9715753, -2680060, 11366631, 4070019, 2547989, +-3898757, -5869073, 4386772, 15659988, 14518600, 53112104, 40129492, 5439576, 11634530, 3374234, +30830886, 854162, 15005542, -13998372, 36513664, -14457397, 33112588, -1480153, 21149492, -2451890, +14923401, -14837501, 3570192, 7471096, -8149164, -2647847, -4384088, -3411278, 9866614, 255014, +-8537858, -11722039, -17737678, -22516366, -10854993, -3771518, 119185, 7118909, -19008452, 8077760, +-10471130, -16091095, -3375308, -11747809, 5357435, -2837363, -24733642, -5843840, -12589086, -14853608, +-15662672, 14239427, 18943490, -39637180, 8971650, 3568581, 11113765, 3976603, -5034776, 24051280, +13471702, 12609487, -33239826, -14810658, -471373, 8238821, 27456652, 1083942, -3755412, 1386738, +23251342, 20978768, -19866908, 22447110, 1617592, 5086315, -3832722, 13198435, -28304372, -9838696, +29078002, -4409858, -1943473, -11155641, 19369766, 12754442, -10096394, -16931298, -2987150, -665183, +1666984, 319975, -3696356, -15776489, -5483600, 12421582, 16130287, 10110890, -9012989, -2296197, +-2688113, -7592429, 2414845, 2633889, 7413114, -1573569, -5366562, 4758287, 1732482, 2898029, +14580340, 2066416, -4164508, -5497558, 2434710, 5339718, 11328513, 2371359, -11195369, -5856725, +-8432631, 3387119, 4157528, -9105868, -19662360, 6407018, -1704565, -3211025, -6943889, -11969537, +14304389, -6045704, 12428562, 19485730, -22603876, 6658810, -13034152, 36959804, -22325240, 20762408, +19112068, -7656316, -35065724, -20521890, -2575370, -9532680, -1316944, -16225850, -25623238, -33993056, +-19607062, -22727356, 9405442, -19478750, 7712688, 2005213, -2492692, -2264522, -16098074, -5166846, +-16530792, 4489852, 14227079, 18733574, 56371, -5616207, -16965120, -4251481, 1367947, -10191957, +2538326, -13952738, -9209484, -2232309, -13876502, 10473278, -12291660, -35685808, 1015223, -1368484, +-11996917, 14821932, 11521250, 16927540, 6294275, 13262322, 27071178, 4336307, -27545236, -6484864, +12505334, -6258304, -22952842, 12385075, 17631914, 5782100, -442919, -30888332, 27040578, -1569811, +22010096, -18795850, 22291418, 55151676, -5228586, -1850594, -27393838, 14317273, -22346714, 18319646, +9109626, -12377559, -3043521, -30181808, 6561100, -16574816, -79457, 11263015, 11200738, -663036, +-8076149, -6933151, 7885023, 20003274, -10178536, -1828582, 2766496, -9074729, -2920578, -3031710, +3899294, -1223529, 8153459, -4134443, -10072772, -5636608, 2584497, 7423314, -9979893, -3234647, +-512175, 1085553, 6785512, 1308891, -2787434, 2315524, -16697759, -9589051, -1361505, -1732482, +3034931, 736050, 968515, -529892, -3179350, 8114804, -804233, 5994164, -762894, -2016487, +-6390912, -4358855, -43503188, 14866492, -57081724, 37812356, 13590350, -9700721, 40301824, -3801583, +-20410758, 35742716, -13659070, -1881733, 7626252, 12540231, 33066954, 1402307, -2596308, 23343684, +9976135, 19611358, 24033026, 17811766, 1738388, 12465606, 2064269, -1195075, -13004087, 8441758, +12669080, 3086471, -642635, -14101451, 6908455, -13208635, 16076063, 15794742, 2861522, 18651432, +-11332271, 12329240, 19424526, 12352863, -25900800, -27939836, 33022930, -3143916, 20710870, 31976032, +902480, 74088, -3175055, 6321655, 18603114, 17570174, 1986959, 14601815, 168577, -16572668, +-20574504, -30677878, 705985, -12435004, 608812, 17448304, 16474958, -28699508, 2639258, 11180874, +-25028922, 4218195, 35241280, -15177341, -17313014, 18849000, -20047834, 4685273, -5502390, 36797668, +-10506027, 22736484, -11082089, 19110456, -1604707, 7111392, 15447924, -24008868, -7124277, 9163313, +-15719043, 11676405, -14086419, -3948149, -7868380, -7348152, 1229434, -3948149, -6347962, 3849365, +11134166, -5505611, 3191161, 3988414, -9281424, 1673427, 1502702, -2445447, -6500970, -2775623, +-4972499, -15440944, -5918465, 3302830, -20055350, 7327751, -10174778, 7810935, -4505958, -1975148, +-13998909, -7441031, 388158, 3913789, -6060199, -13878650, 2527052, 926639, 7657927, 3175592, +235686, 8994198, 7451232, 741956, 4134980, -19990388, 4418448, -23153632, 47499652, 11634530, +-25421912, 9633612, -5933498, -22623740, -26669600, -27048094, 7957501, -1351841, 23801098, 35346508, +16949552, 8551280, -4334159, 11728482, 1069984, -44521632, 19464254, 46213848, -30325154, -31825170, +-27540404, -38896296, 28056336, -38300372, 17164300, 228707, -4861366, -270046, -12510703, -14829985, +18920942, -39402028, 40403832, 23207318, 5290863, -25933550, -19666118, -17185238, 3539053, 6736656, +-16854526, -2348810, -12471511, 27849104, 12540768, -5064304, -942745, 11432666, 2474975, 13053479, +-22899692, -9062381, -2289755, -4073240, -21312702, -14958297, 12487617, -40365712, -23906862, 3034395, +47035260, 22715008, -14485314, -1001801, -35965520, 17403744, 54569172, 1897302, -11889006, -8257612, +-25961466, 33652680, -10966662, -13050795, -1270774, 19935090, 12403866, -17352742, -15759846, -5611912, +17448304, -4722317, 5005785, -1400696, -14115947, -4555350, 22138946, 12739410, 1671279, -10366977, +-1808718, -1590212, 17223892, 14136885, 6920803, 6377490, -20781200, 7872138, 7257958, -3098282, +4510253, -3235721, -3118146, -18060874, -2089502, -929324, -2729989, -5763309, 4665408, 6622303, +3299072, -21230024, -18451180, -8997420, -242666, 1302449, -21604222, 7652558, 26739392, 5443871, +-7656316, 526134, 3985193, 108985, -37044, -22217866, -15334644, -44321916, 9574556, -32682016, +-48816060, 11355357, 26852136, 6536940, 7144141, -20718922, -25885768, -6799470, -38308960, -18880676, +9895068, -32085554, 50302656, 9711995, -12469364, 10735271, -24237038, -47831440, -16098611, -36607616, +5706401, 10562398, -13480829, -26068840, -13257490, -16124918, 13914083, -19154480, -7041062, -2580202, +21473762, -15706159, -2942053, -7404524, 5418638, 8901320, 1549410, -6561100, 22157200, 28980828, +18514530, -15013058, -12299176, -42909944, -23907398, -9900436, 11244224, 71781792, -12376485, 725313, +31920734, -3027415, 13543642, -16478179, -17115444, -13892072, 15098958, -40718436, 216896, -5509906, +-607201, 34997540, -15534360, 53043920, 4618164, 40164924, -51446192, -15537044, 14774151, -1154273, +-22369800, -18911814, 41601592, -43105364, -35529580, 51007568, 8932995, 44268228, -17715666, -3095061, +-3158949, 14151380, 6040335, -4214437, 15052250, 15005542, -884226, 6981470, 4711043, 1457068, +-5315022, -9710921, -2234994, -6475200, -8529268, 7748121, 4539244, -7327214, 5103495, -15831786, +-1586454, 10934450, 19315542, -1698123, -12227235, -1070521, -13909788, 7795366, 13276818, -9422085, +-7646116, 7324530, 8857296, -19969988, 7087770, 729608, 12932683, -8576513, -8687108, -241592, +4112431, 5879274, -22292490, 3479461, -9429064, 17550846, -6140730, -2648384, -44131324, 20992726, +32353452, -23495618, -19319300, -6614787, -21219822, -25556130, 6799470, 7539278, 19821274, 858993, +17316234, 30840012, 32170378, 21351894, 7367480, -23620172, 2292439, 12263742, 16255377, 25020868, +232465, -12967043, -18882286, -7130183, 25349434, -10424422, 9946607, 22047678, 2131915, 43330852, +4952634, -27666032, 23860690, 23605140, 6761889, 10177462, 21856552, 3500398, 1804423, -25386478, +54788212, -58460412, -43036108, -49867256, -16571058, 10324028, -29379186, 15066745, 32642826, -9692667, +3135326, 28851980, 9142375, -31241056, -10925323, -24174224, -3547643, 1814624, 1508070, 27902792, +27331562, -6286222, -7013145, 17536888, 42126648, 7347616, 34637836, -29272350, 30775052, -13522705, +10129680, -6152004, -19807852, -13683229, -3235721, 14003204, 8445516, 34478924, -44704168, 22717692, +-17769354, -10984916, -8821863, 16540456, -7995619, -1522566, 3447785, -17851494, 11049340, -8722542, +-761283, -13544716, 4032974, -2720862, 428960, -15256261, 2093260, -1376000, 2871723, -1468879, +-16846472, 6681359, -9682467, -8612483, -4131222, 12447889, 14176613, 15921981, -13848048, 27352500, +-20811264, -6180995, 1333051, -2196339, -15452755, -8147016, -1123671, -11375758, 3010235, -903554, +-755377, -1317481, -11545409, 1496796, -2158758, -24957518, -50216756, -50544248, -36580236, 7511898, +93910536, 23737210, -12948790, -28388124, -67853504, -95444912, 21553756, 39535712, 47460464, -9982578, +4117263, -27984934, -48688288, 14042932, 8844948, 15847356, 2294050, -40832256, -12472585, 9980430, +-8205535, -1608465, -7721815, 53209812, 46726560, 31507880, -2878702, -22835804, -38783556, -25672630, +-23206246, 36347772, -6017786, 26598196, 12032888, 12458090, -16345572, -88406536, -60863980, 30061012, +-47890496, -16342351, 102009232, 70140040, 52707300, -39944268, 28872380, -27664422, 2032056, 2030983, +14812805, 43272868, 76263584, -29189672, -2709588, -50273664, -40613748, -66535484, 7232725, -2739652, +-71636832, -17155174, 46163384, 17257178, 32225140, 43673376, 78692392, -57303992, -34386044, 4562329, +-46768972, -6016713, 26175678, 61300996, 31173946, 9584220, -37382320, -35842040, 24224690, -10193568, +36138392, 31774168, -8553427, 14567992, 5865852, -6090264, -11994770, -6975027, -4509179, 10809896, +3153580, -251792, 3781719, -1094680, 5240934, 169114, 22886270, 18822158, 29824790, 5398237, +-16342351, -34441344, -28130962, 11494406, 26805964, 30706332, -3809636, -19563040, -79255032, -40711460, +-37497212, 940598, 4059818, 8144869, -238371, 5950141, -8933532, 4295, -13240847, -11832635, +16818018, 14847165, 8651138, 8740258, 4418448, 2033667, 23262616, -37721088, -124932008, -116255640, +-66723928, -72566160, -18080738, 120370752, 61170536, 123842160, 109904456, 172254496, 123032560, 105828528, +17095044, -45919104, -103823320, -166393472, -141293680, -142310528, -74359840, -35695472, -8359080, 1201517, +4119411, 29395830, 39298412, 99050000, 60176248, 116887536, 76168024, 100197296, 36280124, 96815544, +33664492, 23692114, 22945326, -5750425, -27140972, -65525096, -75586592, -140383152, -96135328, -177893792, +-140714944, -215911760, -127972848, -101573296, -24471114, 59337656, 31598074, 5333276, 59273768, 126608120, +169169632, 221744864, 264361136, 226169760, 165264976, 206039776, 170046880, 95297272, 42902964, -10572062, +-70841192, -164007616, -194742944, -260862352, -336744224, -389762912, -351673536, -309996768, -220571808, -150638992, +46195056, 145269760, 177118016, 272665984, 227720784, 284360128, 298912544, 293163744, 338026272, 221853312, +57685704, -55870008, -108266464, -134084048, -86757800, -125577328, -107594840, -125680408, -170003392, -172029552, +-200196480, -118600688, -92260192, -78731584, -43933756, -2707977, 11866458, 48595408, 132080448, 139081776, +197581376, 171901776, 225963056, 166077792, 111059800, 114491480, 43718472, -30105036, -48995912, -217961008, +-280880672, -261649952, -230791136, -135231344, -106036840, -58089432, 5114233, 58809912, 89801320, 121946472, +145718576, 173156432, 164531072, 155421984, 136944496, 76417128, -304406, -38872676, -90344104, -94649272, +-80968720, -66227320, -68890736, -69854960, -54808076, -39465380, -23320062, -9865003, -8927090, -6482717, +1961190, -6857989, -7970386, 9463424, 22465900, 24951076, 16435229, 11529303, 19292456, 23252416, +17068200, 15530602, 14453102, 9055402, 6154152, 5211943, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -12016245, -4409858, -6861211, 3652333, -3889630, -7934415, -13678397, 2362232, 363998, 3390340, 2976949, --992137, -1042603, 989453, 8204462, -5894843, -10487773, 3422015, -4362613, -7042136, 82678, --1086627, 4284767, 1500017, 3044595, -3188476, -822486, -2105608, 6982543, -1959042, -2880849, --2545305, -1279900, -1741609, -2862059, -2536178, -1770600, 1344862, 553514, 872415, 197569, -1781875, 2938831, 1466195, -2696703, -7978439, -121870, -5563057, 758599, -423054, -2555506, -3499325, 198105, -24696, -7945690, -3278134, 1014686, -669478, 2716567, 151398, 2412698, --2345052, 974958, -1045825, 4831302, -1779190, 2522757, -4413616, -4387309, -5542656, 228170, --1355062, -1646583, -15569, -1963874, -86436, -2282775, 423054, 54224, -995359, -3503083, -293132, 314606, 1937567, 1706713, -34897, 1821066, -249645, -1493575, -529892, -729608, -675921, -60130, 50466, 1007170, 712965, -179315, 907312, -687195, -8598525, -1796370, --1148904, -2456185, -1120450, -2956011, 2819109, -1186485, -1018981, -272730, 42950, -202400, --2083596, 7569343, 4871567, 7911867, -3734474, 7873749, -4698158, -3319473, 3060701, 8721468, --206158, -5344550, -7849590, -5668283, -1095754, 6203544, 2441152, 2072859, 2759517, -2784750, -4238059, 498753, 3164854, -1592896, -7150047, 1898376, -4949950, -3431142, -3474629, -872952, --9073655, -469225, 421444, -3839164, 8463770, -1658931, -2743410, -3457986, -89657, 879395, --3633542, 68183, -4454955, -1732482, 119722, -1893544, 6087580, 129386, -1642288, 3352222, -2187212, 5580237, 2267206, 6719477, 1671279, 5481452, -6323803, 1577864, 5058935, -1796370, --4514548, -6288369, -117575, -556198, -1238024, 1460826, 1836635, -1391569, 4854924, -4242891, -1618666, 1619203, -3097208, 2193655, 520765, -2349347, 1228898, -651224, 492848, -2209224, -675921, 185757, 411243, -320512, -133681, 970663, 290984, 1865626, 9737765, -4380330, --3363496, 1000727, -2134062, -1581622, 4900021, -3761318, 4720169, 2179159, 135291, 2421288, --3108483, -2966212, -5477157, -5910412, 7856569, 3724811, 2786897, 4209605, -2700461, -1800128, --1976759, 9905268, -3784403, 10838887, -325344, -2726767, -2563559, -5701569, -6118181, -7448010, --419833, -1858110, 1395328, 7245073, -571231, -3360812, -10025527, 374199, 8046621, 11767137, --5464809, 3054259, 2211371, -2966212, -2608656, 3084860, 11176579, -2634963, 1802813, -934692, --1572495, -1023276, 5390721, 7722351, -5779952, -3147674, 2443837, 10118406, 1741609, 7171522, --5788542, -5404143, -239981, -879931, 2105608, 1550483, -71941, 649077, 1107565, -2616172, -1287953, 3284576, 2571612, -1963874, 6518150, -1632088, 4120484, -2106682, -2163053, 2438468, -2103997, 2205466, 557272, 2298881, 502511, -3343632, -2215130, 665720, -96100, 1249299, --565325, 1860258, -15569, 1043677, -934155, -175020, -22012, -481573, -1097364, -96100, --642635, -168577, -785979, -721555, 1894081, -16643, -807991, 1990181, 108448, 15882252, --11045582, -2500208, -4633196, 1171452, 4175245, 7587597, -7735236, 5176510, -2074469, -8185671, --13186623, -2765959, -5643050, 852014, -1322313, -5625871, -2902324, 2978023, 3170223, 10172093, -5623186, 5135707, 472983, 1542967, -5376226, -3678103, 8177618, 6227703, 4222490, 1904281, -3893925, 765041, -22012, -6961605, -9789841, 6432251, -2650532, -6633040, -3177202, -4199941, -3430605, -3708704, 8221641, 1828582, -4817880, -2404645, -3701188, -3246995, 3993246, 5995775, --569083, 4014721, -3050501, -3433290, -22012, 739808, -3247532, -1327145, 4733054, -24159, --2014877, -2431488, 2559801, 2819109, -410169, 3424163, 446677, -2564632, 8213051, -1257889, -869731, 315680, -9980430, 3797825, 3080565, 5078262, 3325379, -3722663, -869194, -9051644, --4160213, -8313983, -3056943, -3774203, -3758, 700080, -5461588, 151934, -1346472, -70330, -2276870, -908922, -1036698, -268435, -1537061, 179852, -801011, 532039, -958851, -2113124, --1054415, -603980, -3427921, -400506, -191663, 610422, -245350, 323733, -219580, -12348, --1847910, -2442763, 202400, -438087, -1081795, 343597, -10811506, 2880313, 187905, -3151969, --5887864, 2564632, -5623186, -973884, 9922985, 14992657, 7421704, 8273181, -540092, -4072166, -6241125, 5589900, 2404645, 3016678, 7428146, -1016297, 5422396, 5255430, 7705172, 7381975, --5916318, 4969277, -312459, 1785633, -5507222, 1764158, -673236, 5062156, -1862942, -1354525, --3867081, 3699041, -6036577, -4905927, 566936, 5310727, 2942590, -3109020, -1569274, -920197, --2021856, 3228742, -7277822, 6817724, 40265, 8466991, -11872363, 895501, -10685342, -3344169, --3356517, 2985539, -1053341, -2400887, 2433636, 938987, 2971581, 4696010, 7699803, -898185, --6055367, 1364726, 10350871, 2145336, -2903398, -706522, 6410776, -3297461, 3930432, -3184182, --10909754, 6394670, 6805376, 6288906, -5353677, -8100845, -5799817, 6950331, -665720, -1009854, -4962835, 1852742, 1283122, 886911, -267362, 1947231, 2624762, -803696, -1313186, 1482838, -230318, -435402, 943819, -1330903, 478352, 2265059, -839129, 2376728, -898722, -1682554, -901943, -5369, 92879, 1225676, 986232, 1243930, 1022739, 906238, 17180, 1202054, --16406238, 251792, -3659312, 1482301, -9201431, 1095217, 1486596, 12137578, -9760850, 99321, --13084618, 2951716, -7919383, -1945083, 448287, -4296041, 3741990, 1650878, -6868727, 107374, --138513, 6301791, -4166655, 10163503, -159988, -8841190, -4541928, 10819023, -1081258, 4322348, -2844342, -1803349, 6438693, -7183870, -6826314, -5292474, 699543, -6879464, 7257421, -4033511, -4639639, -6660421, -121870, -8089571, 5263483, 701153, 6313065, 5671505, -5428302, 10673531, -9063455, 8592619, 1654636, 9023726, 7374459, -7669738, 6529961, 3136400, 557809, -7119445, -3229816, -6059125, 5953362, -2607045, -4827007, -584652, 8905615, 3184718, -10364830, 9829033, --864899, -3479461, -5947993, 10013179, 8607651, -7466264, 7332046, -535260, -8957154, 110059, --5116917, -2775086, 4833986, -4287451, 3432753, -356482, 1484448, -2051384, 2597382, -363998, --340376, -589484, -1053341, 949725, 447213, -2484102, 817654, 1248225, -75162, 933082, -1013075, -2329483, 428423, -271120, -28991, -1961726, 621160, -797253, -1273995, -2612951, -2937758, 642635, -1514513, -392990, 23383412, 3978214, -927713, -8056822, -15139760, 3870839, --2225330, -22225382, 19507742, -9444096, -14101988, 2985539, -894964, 2632278, -904628, 3784940, -5630702, 78920, -351650, -11356430, -936303, -1073742, 13403519, -2442226, 356482, 4934918, --2341831, -1644973, -5441724, 11443403, -8572755, 8269960, -2029909, -6849399, 1293322, -7657927, --3884798, -12439836, 2203318, 5718212, -3353833, -6204081, -4902705, 7527467, -11652783, -2753611, --5740224, -157840, -1659468, 1524177, -10106595, 9863929, -13803488, -9443022, 3762391, 1673964, --509491, 3696356, -7151658, -10306311, 1293859, -2798171, -456340, 5069135, -6148246, 4596152, -3211562, 11382200, -3134789, 1639604, -858457, 171799, 15791521, 1329829, 15635828, -3762391, --5845451, 1788317, -8012799, -707596, 8002061, 651224, -9323837, -8171176, 2316598, -859530, -59056, 8026757, 648003, -1496796, 3354906, -446140, -297963, -3733937, 1413581, 1765232, --1854889, -39192, -897111, 3108483, -1371168, -613643, 1620276, 425739, 996969, -279173, -1805497, -568009, 42950, 961536, -1926830, 2454037, -1508607, 920197, 2086280, 1133871, -1974611, 551366, -17235704, -2330020, -3570729, -13998372, -24041080, 7305740, 12361990, -8863739, --4301947, 6955163, -2662880, 14843944, -1739999, -8057896, -4828617, -22413824, 7474854, 2438468, --2108292, -15768436, 3636764, -8806830, -2370285, -7741142, -3990025, 11066520, -10767483, 4531728, --15909096, 10062035, 1954747, 120796, -4636417, 1116155, -2134062, -8937290, -16744467, 3156264, --34360, 3491272, 6931541, -4133906, -1398012, -10810970, -5579700, -2955474, 4484483, 2991445, -7851737, 12548821, 9819369, 4999342, 7479149, 2208150, 7798587, 6984154, -6942815, 8012262, -9091909, -1964411, 12196097, -1361505, 14319421, -6444062, -15495168, -2609193, 9799505, 10755672, -12408697, -2491081, -21597780, -2251637, -1193464, 729608, -775778, -5386426, 3045132, -15810311, -12196097, 7632694, 7378754, -8321499, -7821136, -1805497, 4510253, -646929, -8742406, -13422, --4291746, -7165079, -2882997, -1262720, -3426847, 224949, -2902324, 1340030, -1825361, -1071594, -2231236, 333397, 996432, -1222992, -3147137, -3543885, 2371896, -2847027, -134755, -1102196, -1445257, -1220308, -741419, -1210107, 3580929, 1816234, 1069984, -1226213, 22947474, -5043366, --5505075, 7654706, 12358232, -884763, 5754720, 14307073, 10340671, -23487028, -21575768, 176094, --2068564, 3164854, -9640054, -17136382, 4075387, 13734769, 9082245, -9949829, 16167331, 13053479, -12264279, -20591146, 5837398, 10791642, 563178, 1636919, 9199820, 21203180, -4090420, -9702331, -6443525, 4800163, -2879776, 11455752, 17125646, 3187403, 17741436, 7741679, -13298829, 1490354, -14714558, -1598265, -6026913, 7605314, 1240709, 2885144, 15444166, 9896678, 5262409, 1817308, --17906256, -18267570, -1514513, 2878165, 4780299, -5648419, -782221, -4735739, 1615445, 2260227, --6823630, 2572149, -4184372, -1083406, -5796059, 636192, 11418171, -6765111, -16462073, -2594697, --13999446, 3064996, -4986457, -388158, -1865090, 6592775, -2459406, 4765803, -45097, 4082367, -1959579, -1935957, -2216740, -2886755, -8109972, 2927557, 1079647, 2003065, 293132, -6322192, -3182571, -4955319, -4113505, -1472637, -5288179, -1161252, -1712081, -2026151, -1646046, 3406446, --1500017, 2254321, -187368, 1802813, 357019, 4407174, -1894081, 1153199, -3565897, -968515, --3053185, -2877091, -554051, -2138894, 6885907, 2827699, 293132, -1020055, -929324, -38486128, --24070608, -7408819, 6793565, -2524367, -9735080, 1536525, -9492951, 26647050, -11039677, 17029008, -26298622, 14170171, 12864501, -10545755, 9198746, -5331128, -12465069, 10497974, 12298102, 8077760, -17646946, -94489, -1123134, -8087961, -8268886, -7110319, -11313481, -11042361, -7630547, 3939022, -1292248, -315680, -7196755, -4030827, -10987063, 4271345, -9520869, -8683887, -3999688, 4290673, --275952, -5934571, -15901043, 1654636, -4867272, 5455146, -18716930, -14543296, 15982110, -2706366, --3371013, -7734163, -4838281, 11921755, 3699578, -2752000, 6421513, -2056216, 6691022, 5266704, -7668664, -5914170, -9576166, -23751170, 1387811, -23044110, -1796907, -19545322, -3034931, 18006650, --2555506, 2985539, -13273596, -5889474, -6972343, 1206886, -8616778, -5119064, 7967165, 9954660, --1315871, -1299765, 904091, -4925254, 1473174, -795106, -4834523, -2142652, -4175245, -1810866, --2486786, -10850698, 1583769, -2048699, -1636919, 377420, -3157338, -3706020, -7543037, -1984812, --4475356, -5311801, -1205275, -6618545, -3213173, 762357, -4236985, -4905390, 312459, -4150549, -1027034, 1213328, 4295504, -3047816, 2924873, 1218697, -4416837, -1864553, -1258425, -2223183, -573915, -1219234, -1464584, 26376468, 506269, -19113678, -16217260, 16549046, 12962211, -12232604, --11835856, 22194780, 14081587, 818191, -13196287, 1597191, -5565741, 10533407, -8203388, 1262184, --3494493, -2410551, 22914188, -3230352, -6284611, 4273493, 3867618, 6880538, 7049652, 800475, --9097814, 6878927, 3426310, 7880728, 17704928, 8152922, -25602836, -7287486, -4215511, -19535658, -7524246, -3367791, 347355, -10874320, 9162239, -4206384, 1706176, -14147622, 9559523, -11517492, -889058, 11419244, -1890323, 12045773, -9441949, 15015743, -19268834, 9630390, 148713, -6879464, -25049860, 6739878, -5296232, -14939507, 6442988, -3037616, 1990717, -2233920, 9112847, 13749801, -18388366, -11644193, 8221105, -4589173, 16435766, 6100464, 2277407, -1475321, 9818295, 1813013, --6649683, 8091182, -5805722, -9621264, -4279935, -13101261, 78920, -14682346, -1345399, -9878962, -11258720, -3552475, 7202124, -7898982, 199716, -4401268, 6788196, -2137283, -763430, -4357245, -2222109, -3255585, -5434744, -3017215, 2195265, -5087389, 3009698, -4020090, 1801739, -2584497, --2674691, -2581812, -5790690, -3250217, 21475, -4085588, -3883187, 5291937, 4421132, 2523830, --2758443, -6609955, -835371, 2953864, -369367, -5115306, -3213709, -38540888, -25012816, 20515986, --15315853, -14379551, 7802882, 17943836, -29964914, -5097053, 6955700, 1779190, -15715285, -23472534, -43664248, -19029926, 5804112, -21616570, 11690901, -7620346, 20338818, 18064096, 1692754, 3089692, --24480776, -167504, 11360725, -9995463, -14654965, 11400454, 3120831, 12303471, 9739912, -2196876, -4005594, -2867965, -1693291, 18210124, -15734076, -9291088, 14567992, -726386, -11912092, 15448460, --612570, -3543885, -10662256, -4765266, 5608154, -8337069, -1076426, 5366025, -10580115, -10813654, --7099581, 7783018, -22801444, 10718091, -1174137, 21451214, -20393042, 6636798, -15541339, 5589363, --9385040, -11894375, 19305342, -10838350, -4867809, -10551661, 8269960, -12054899, 6941741, -4159676, -14083735, 14490683, -1963874, -22817550, 8948564, 9371619, -1222992, -808528, -13109851, -9055939, --2288144, -11267310, -9126269, -3246459, -400506, -5645735, -7526930, 8380555, 2703682, -5354214, --4549444, -5467494, -5839545, 6080600, 2138357, 1414118, -8710194, -3342558, 7244536, -4354560, --5397164, 3398393, -3902515, -31675, 2554432, 4243965, -1890859, -7151121, 1285806, 4185446, --9615895, 172872, 2326799, 183610, -5131412, -2893197, 110595, -2289218, 19300510, 9376987, --21734146, 7406134, 23381266, -2067490, 53150, 10783589, -6993281, 16386374, 14837501, -19625316, --12028056, -3627637, 10362145, 18709952, 3327526, 9934796, 21134998, 15800648, -22224308, -2405182, -35322348, 8701604, -2347200, -4191888, -6640020, -10397042, 3121368, 8630737, 9652402, 8951249, --6307697, -15108621, 4065187, -7870528, 8294656, 24350854, -6469832, -24510304, 29314762, -8864812, --16129750, 23703924, -4266513, -7113003, -25393994, -4611185, 10520522, 4970888, -5504001, -10769094, -9833864, 1000191, -11754789, 10045929, -2343442, 23115514, -17029008, 2365990, -3310883, 26485990, -9063992, -37758668, 11841225, -15813533, -6593849, -13538811, 16331613, 53905060, 19736986, 3069291, -12510166, 15643345, -19879794, -8512625, -5577552, -11435350, -6851010, -12651900, 11901891, -27792196, --7322919, 2423972, 3339337, -9168681, 1751810, 4799626, -2685965, -3609920, 9456981, 1638530, -6323803, 5135707, -5655398, 1508070, 4691715, 1673964, 3929895, -2953864, 2424509, -5496485, -751082, -1747515, -5120138, -2837363, -1134945, 8325257, 503048, 2065342, 380641, -1888712, --1699733, 574452, -718870, -7971996, -912144, 1124208, -1824824, -6185827, -14047227, -5267778, --4234838, 8135742, -1405528, 1656247, -8164196, -28502476, -12089796, 2018098, -11533061, -35893040, -31244814, -5929203, 14119168, 2712809, -16419123, -28308130, -27266064, 30709554, 18735722, 7088844, --10741713, -20450486, -15293305, -24295020, -6189048, 9131100, -3719979, 2039036, 3954054, -3947612, --12544526, -12080132, -20627654, -7380365, -3905736, 10223096, 7175280, 11234024, -5477157, -9221832, --3809099, 14668387, 2157147, 12990665, -43198244, -10154913, 20401, 9536438, -13727789, -569083, --15900506, 12560095, 11107859, 2143189, 53539452, 881005, 16790638, 22028888, 1040993, 7135015, -421981, -3819300, -6339909, 11113228, 16364899, 21309480, -385473, -3995393, 1556389, 14005888, -12802224, 474594, 10397579, 8917963, 7030862, -2829847, 21021718, -6019934, 26948772, -26526254, --13171591, -32630478, -10068477, 5849209, 885300, -8450348, 1845225, -105227, 14715095, -2959769, -17610976, -8012262, -6409165, -8804683, 4618701, 9844065, -1507534, -4782983, -5222680, 6076305, -178241, 20422570, -3149822, -1402307, 3750043, 5733245, 8504035, -7062000, -544924, 2737505, -4240744, -9748502, 3474629, 3718368, 12606803, -12393128, 7130183, 4726075, -5197448, 10629507, --5913096, -7282654, 126702, -2469606, 5529771, 2728915, -4289062, -129386, 4558571, 1042603, -10994579, -508954, 7219303, 20288888, -3740917, 894427, 5343476, -27765890, 1164473, 3984656, -17478370, 26663156, -22691386, 5027259, -14305462, 19005768, 17230872, 2182917, 33079838, 10320806, -13174812, -12054899, -1937030, -21111374, 33051384, -19203872, 5166846, 20225538, -4809827, -13001403, -10215580, -2968896, 5170067, 21714280, 566399, -6876780, -1996086, 4077535, -681826, -12872554, -9543954, -1223529, -3650185, 37071472, -28477780, 26824218, 17317308, 33472828, 13639742, -23648090, -18315888, 381178, 17020956, 44077640, -31778464, -13159243, -4082903, 867583, 29968672, -17762910, -1568200, -19075560, 1508070, 33793340, -3796214, 35068944, 9891847, 6008123, 15949361, -21402896, --3532611, 15426449, 21829708, -35435092, -1252520, -30359514, 13618804, -15781320, -511101, 7198365, -9905805, 766115, -10792179, -8594766, -33196876, -3765613, -23580444, 19147502, 1669132, -1481764, -14913200, 846109, -63888, 14323716, 10697153, 7207492, 188979, -4815195, 6764574, -11207717, --825707, -7685844, 7706782, 8016557, -6766184, -1296006, -14398341, 6399502, -883153, -5906, --382252, -13981192, -16849694, -5572183, 5465346, 12794708, 6514392, 5777268, -2026688, 10717554, -7461432, -466004, -5444408, 9324911, -13269301, -3727495, 2774549, 15030238, 12429098, 2695092, --6045704, -21467320, 6030134, -37565396, -33108292, 478352, 446677, -21028696, 17053168, 4930623, --5751498, -19514720, 26515518, -6195491, 39475044, -5781563, 8469676, 14241038, -19276350, -6434935, -5971615, -22937810, -12964359, -20062330, 17151952, -16077136, -4436165, -5293011, 14833206, -13558138, --22949084, -31917512, -1027034, 26502096, 1485522, -14647986, -6337761, -18539764, -6320581, 130997, -10939819, -20877836, -2460480, -4571456, -15000173, -20520280, 842350, 3397856, 13112535, 4515085, -22630182, 6288906, 28592134, -12017855, 23579370, -6078453, -18678276, -4861903, 38435664, -16695075, -17430052, -12246026, 28155658, -15004468, 9393630, 17940616, -1235340, -7435662, 3263102, -10271414, -25581898, -23622320, -9064528, 25680684, -3337190, -21466246, 838592, 19628000, 10744934, 19630148, --20017232, -16879222, -10894185, -2187749, 19190988, 23415088, -41653668, 2185065, 11819213, -22767622, -3569655, 14368813, 11001559, 10540923, 10108206, 6882685, -3366181, 758062, 7698729, 8828305, -6999186, 17719424, -5574331, 9317932, 3740917, 19183472, 11220065, -14803142, -18919868, 5966247, -19949586, -5731634, -5784247, -12831215, -22084722, 2528662, -18879602, -5858336, 4066260, -12420509, -11385958, 3331284, -4096325, -10253698, -2190433, -10628433, -1084479, 5924908, 2574833, 1688459, --2081449, -2590402, -35620848, 39280696, -12983686, 33457258, -6896644, 26889180, 2330557, -8318815, --18257906, -12894566, -2340757, 475131, 19789598, -7430294, -1428614, 5725729, -17840758, 29032368, -10914049, 1156420, -23735064, 16428250, 8712341, -18937048, 18709414, 1702955, -2807298, 4774393, --455267, 24523726, -5472325, -30645128, 33333778, -17041894, -2565169, 24765856, -10763725, -5317170, --14618458, 39043400, -17326434, -4738960, -24235426, -4660040, 3113315, 34907348, -16173236, 6628745, -11236171, 20784420, -5304822, -22025130, 24221468, 14680735, 19692426, -9470940, -4536023, 2537252, -21805548, -11940009, -25251724, -28278602, 15249281, -19785304, 5236102, 21255794, 19821274, -13780403, --4585415, 28585692, -45318884, -1013075, 6440304, 15794742, -1942936, -16536698, -3148211, 26074746, --4884989, 53473952, 21068426, -15213848, -1893007, 1639067, -6262599, -19276886, -23523000, -17283486, -15029164, -11167989, -4427575, -387084, 23471460, 10162429, -7892540, 10348724, 7699266, -251792, -3610457, 4393752, -98784, 3301756, 24041616, 19718194, 19174344, 13010530, 2014340, -11673721, -6528887, -9105331, 11631845, -14042932, 15538118, 22483616, 7650948, 28461138, 30813170, 12497281, --83215, 16146393, 5735392, -2852932, -9540196, 16782584, -4138201, -13283260, 36507, 8174397, --3604551, 7126962, 13357348, 5070209, 13629005, -7598334, -8668318, -50306416, 17134236, 9794673, -44865764, 39315056, -5813238, -14511621, -46227268, 1362578, 15483894, -19785840, 15124727, 27080306, -26346940, -12196097, 31715650, 28351616, 1377611, -17090748, -18301392, 28950764, 24777666, -35150012, --47914120, 63750200, 3352222, -4493073, 8418673, 4743792, 23700704, 23528904, -9392020, -8018167, -33272038, 15820512, -5873905, -22048214, 13464722, 2690797, 1870995, 11864847, 1745367, -1000191, --13164612, 7479686, -3874061, -16199006, 29921964, -47421272, 33208150, 27514634, -44844828, -3081102, -23029614, 5834176, 26262114, -6077379, 3791383, 24004572, -3040300, 12284680, -22048214, -35057132, -98967856, -40377524, -56731148, -12375411, 110207248, 47591460, -46802260, -10560251, 19564112, 13507672, --880468, -28275918, 41514080, 23228256, 17487496, 4156992, -55755116, -9101573, 9218074, 16712791, --22827752, -37888056, 3473018, 12084427, 5371394, -17835926, -18847928, 9214315, 5225365, 13851270, --2431488, -4522601, -1261647, 14798847, 18803904, 13007308, -28016072, -10773925, 19967840, 14746770, --14059575, 174483, 16301548, 28875066, 11346230, -15042049, -20422570, -26714696, 12780212, -8458938, -11893301, -22555020, 12861280, 6749004, 14475650, -10247255, -5377299, -18067854, -7636989, 18134426, -3400540, -14775761, 8361228, 27331562, 7212861, -19659676, -12409234, 24756192, 42871828, 2995203, -71201432, -31570694, -12141873, 41319732, 2040110, -2325725, -21248276, -42415488, 35262220, -22085796, --24075440, 18336290, -26725434, 13303661, -25341918, -28023588, -4735739, 6200859, 3971771, -6553047, -33728916, 8519068, 20564304, 9947144, 568546, 597000, -15248208, -32318556, 10351945, 32382442, --26396332, 22640920, -26908506, -2718714, -1489817, -41523208, 29603062, -14335527, 11518565, 902480, --12261595, 798864, -30110406, 31000000, -21806622, 10421738, -35053912, -21196200, -45974940, 17457968, --21508660, -24063628, -19560892, -9943923, -6442, 49008260, 17459042, 24288040, -6731288, -22766012, --28984050, 7755637, 1727651, -49741088, -23255100, -87550760, -41318660, -33790656, -5150203, -40284108, --33332168, -7212324, 32013612, 36683316, -29827474, -37512780, -43337292, 21898428, 51662016, 2755222, -41530724, 1182727, 25049324, 10207527, 2958159, 12242804, 4376035, -874026, -15106474, 21613886, -17666812, 9679246, -18035642, -6978785, -2494839, 9337259, 9572945, -3431142, 10396505, -4495220, --12168179, -20904142, 2503966, 29417304, 10426570, -3328063, 8132521, -9306120, 15562814, -5602248, -20378546, 20016696, 2207076, -21248276, 3408594, 4915590, 23106388, 5813238, 26278758, -17548700, --11048266, 24528022, 25120190, 6900402, -6764037, -4466229, -25179246, -11764452, -50134616, 11805254, -17702782, -43410844, 24063628, 4795331, -12596065, 2597382, -12275553, -1213865, 9343164, 12673375, -22216256, -26148834, 2545842, 30151744, -3350611, -14374182, 27116812, -11917997, 1899449, -16057809, --6517613, -32063542, 8358543, 772557, 18115098, -12654047, 1343788, 22523346, -10662256, 360240, -23241678, -45625976, 2967823, -52231096, -16616692, -34992708, 27935542, 9876277, -2049773, 11718281, --10249939, 12784507, 35503272, 9547175, 55122684, -30719216, -35241280, 32469952, 8840116, -23834384, --22372484, -9139154, 20354924, -19569482, -755377, -16925930, -21849572, 12815646, 16042777, -32583232, --18941342, 27992450, -497679, 9874130, -6071473, 15333570, 6810745, 28254980, -16468515, -12236899, -7166153, 6500433, -8178155, -29564408, -21609592, -23396298, 31272730, -14561013, -24217174, 6996502, --6341519, -8003672, -15967615, 5992553, 7150584, -2684892, -4756140, -8715562, -14717242, -2608656, --3345243, -10763188, 383863, -5291937, -10102300, 6082748, -5966247, 5592585, -5887327, -5034776, -14760192, -5903433, 6971269, 5122822, -14078903, 6228777, 1852205, -5740761, -17071958, 23145042, -15234786, -6635188, 3587372, -11468100, -8685498, 7009924, -214748, -14718316, 5117991, -5937256, -13294534, -3635153, -2484639, 2485712, 6191196, -33851860, -68504192, -34213172, -13007308, 30036316, -39127688, -74772696, 12953084, -29657822, -40523016, -8258149, 46896748, 30023968, 25588342, -16072841, --18017388, -21510270, 23667954, 16750372, 36499704, 4838818, -47347720, -18477486, 35639100, -5387500, -10470593, 31981400, -15229417, -22000434, -34635152, -34616364, 231928, 22705882, 48842904, 36250060, -23983098, 9909026, -49948860, -53127136, 18613852, -36623188, 8674760, 46992312, 18653042, 3280281, --23665270, -42347304, -7279433, -18189724, 14239964, 11194832, 7951595, 29502130, -4596689, -5580237, -7710003, 21444234, 34571804, 35949412, 12127377, 32028108, 10702522, 11580306, -7057705, -35624068, --14074608, -15381888, -29353954, 22191560, 20575578, 15462419, 15206332, -6679748, -35243964, 5959804, -10451266, -421444, 23356570, 15203647, 12209518, -2647311, 1538135, 3587908, 24042690, 24437828, -18371186, 5499706, -4532801, -17683454, -3388729, 10548440, 2938295, -5121212, -187368, -14012868, --6693707, -8040179, -9415642, 7505992, 26239028, 13105556, -4933844, -2494302, -19814832, -1868848, -6781754, 13467407, 14651207, -4493073, -6431177, -30515206, -17859548, -4274030, 81068, 12499965, -10123238, -5875516, -7536057, 5142687, 1808718, 3350075, 7405061, -8393440, -3212636, -1542430, -4862977, 8346732, 624381, -2689723, -2457795, -12662100, 21192442, -60351268, -121411744, -62691492, -11719892, 47356848, 115472344, 112976432, 47042240, 48051020, 34483756, 1840394, -57573500, -97520456, --146939952, -43881680, -61496416, -10729902, 59907276, 106827112, 89801864, 79313552, 43687332, -1005559, --28019830, -37553584, -8069707, -65017752, -51657720, -49057652, -32174674, -26396870, -12279311, -2324114, -22341346, 52674552, 54220204, 53317188, 39007968, 50794432, 26911728, 29049548, -9542880, -2131915, --24014236, -62963148, -91231008, -110187920, -53413824, -21487722, 17113298, -2839510, 11607149, 25624312, -33469606, 71484360, 82386064, 109236048, 69641824, 7041599, 31807990, -16495896, -60360396, -52765820, --105075304, -122541320, -91645472, -56626460, -24384140, -19188304, 44069584, 49824840, 138174464, 113186344, -82778512, 81086296, 38805028, -4942971, -54932096, -79373144, -57985280, -69497400, -95481952, -45326400, -2607582, -9320079, 2682744, 41748692, 58132384, 42999600, 22393422, 21742198, 37032280, 15838229, --2781528, -4425427, -18204218, -3043521, -16246251, -42748884, -22641994, -31874026, -51835424, -9098888, --9021042, 41435160, 37704980, 22743462, 40567576, 70300560, 50260244, -12310987, -8513699, -33862060, --30198988, -70717176, -73410120, -35460860, -15011984, 6133750, 24862492, 29518236, 43898324, 50099184, -48352740, 50866372, 12934294, -5132486, -27078696, -32990180, -43663712, -48249664, -48510580, -20837570, -10845329, 14587320, 21026012, 22070764, 15260019, 16369194, 17044578, 5551782, 3984119, -5629629, --6033892, 10413685, -6889128, -16646756, 1023276, 3924526, -2014340, -4838818, -6873022, 720481, --1183800, -6866579, -1421634, 733903, 66035, -76773, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +4409858, -6861211, 3652333, -3889630, -7934415, -13678397, 2362232, 363998, 3390340, 2976949, +-992137, -1042603, 989453, 8204462, -5894843, -10487773, 3422015, -4362613, -7042136, 82678, +-1086627, 4284767, 1500017, 3044595, -3188476, -822486, -2105608, 6982543, -1959042, -2880849, +-2545305, -1279900, -1741609, -2862059, -2536178, -1770600, 1344862, 553514, 872415, 197569, +1781875, 2938831, 1466195, -2696703, -7978439, -121870, -5563057, 758599, -423054, -2555506, +3499325, 198105, -24696, -7945690, -3278134, 1014686, -669478, 2716567, 151398, 2412698, +-2345052, 974958, -1045825, 4831302, -1779190, 2522757, -4413616, -4387309, -5542656, 228170, +-1355062, -1646583, -15569, -1963874, -86436, -2282775, 423054, 54224, -995359, -3503083, +293132, 314606, 1937567, 1706713, -34897, 1821066, -249645, -1493575, -529892, -729608, +675921, -60130, 50466, 1007170, 712965, -179315, 907312, -687195, -8598525, -1796370, +-1148904, -2456185, -1120450, -2956011, 2819109, -1186485, -1018981, -272730, 42950, -202400, +-2083596, 7569343, 4871567, 7911867, -3734474, 7873749, -4698158, -3319473, 3060701, 8721468, +-206158, -5344550, -7849590, -5668283, -1095754, 6203544, 2441152, 2072859, 2759517, -2784750, +4238059, 498753, 3164854, -1592896, -7150047, 1898376, -4949950, -3431142, -3474629, -872952, +-9073655, -469225, 421444, -3839164, 8463770, -1658931, -2743410, -3457986, -89657, 879395, +-3633542, 68183, -4454955, -1732482, 119722, -1893544, 6087580, 129386, -1642288, 3352222, +2187212, 5580237, 2267206, 6719477, 1671279, 5481452, -6323803, 1577864, 5058935, -1796370, +-4514548, -6288369, -117575, -556198, -1238024, 1460826, 1836635, -1391569, 4854924, -4242891, +1618666, 1619203, -3097208, 2193655, 520765, -2349347, 1228898, -651224, 492848, -2209224, +675921, 185757, 411243, -320512, -133681, 970663, 290984, 1865626, 9737765, -4380330, +-3363496, 1000727, -2134062, -1581622, 4900021, -3761318, 4720169, 2179159, 135291, 2421288, +-3108483, -2966212, -5477157, -5910412, 7856569, 3724811, 2786897, 4209605, -2700461, -1800128, +-1976759, 9905268, -3784403, 10838887, -325344, -2726767, -2563559, -5701569, -6118181, -7448010, +-419833, -1858110, 1395328, 7245073, -571231, -3360812, -10025527, 374199, 8046621, 11767137, +-5464809, 3054259, 2211371, -2966212, -2608656, 3084860, 11176579, -2634963, 1802813, -934692, +-1572495, -1023276, 5390721, 7722351, -5779952, -3147674, 2443837, 10118406, 1741609, 7171522, +-5788542, -5404143, -239981, -879931, 2105608, 1550483, -71941, 649077, 1107565, -2616172, +1287953, 3284576, 2571612, -1963874, 6518150, -1632088, 4120484, -2106682, -2163053, 2438468, +2103997, 2205466, 557272, 2298881, 502511, -3343632, -2215130, 665720, -96100, 1249299, +-565325, 1860258, -15569, 1043677, -934155, -175020, -22012, -481573, -1097364, -96100, +-642635, -168577, -785979, -721555, 1894081, -16643, -807991, 1990181, 108448, 15882252, +-11045582, -2500208, -4633196, 1171452, 4175245, 7587597, -7735236, 5176510, -2074469, -8185671, +-13186623, -2765959, -5643050, 852014, -1322313, -5625871, -2902324, 2978023, 3170223, 10172093, +5623186, 5135707, 472983, 1542967, -5376226, -3678103, 8177618, 6227703, 4222490, 1904281, +3893925, 765041, -22012, -6961605, -9789841, 6432251, -2650532, -6633040, -3177202, -4199941, +3430605, -3708704, 8221641, 1828582, -4817880, -2404645, -3701188, -3246995, 3993246, 5995775, +-569083, 4014721, -3050501, -3433290, -22012, 739808, -3247532, -1327145, 4733054, -24159, +-2014877, -2431488, 2559801, 2819109, -410169, 3424163, 446677, -2564632, 8213051, -1257889, +869731, 315680, -9980430, 3797825, 3080565, 5078262, 3325379, -3722663, -869194, -9051644, +-4160213, -8313983, -3056943, -3774203, -3758, 700080, -5461588, 151934, -1346472, -70330, +2276870, -908922, -1036698, -268435, -1537061, 179852, -801011, 532039, -958851, -2113124, +-1054415, -603980, -3427921, -400506, -191663, 610422, -245350, 323733, -219580, -12348, +-1847910, -2442763, 202400, -438087, -1081795, 343597, -10811506, 2880313, 187905, -3151969, +-5887864, 2564632, -5623186, -973884, 9922985, 14992657, 7421704, 8273181, -540092, -4072166, +6241125, 5589900, 2404645, 3016678, 7428146, -1016297, 5422396, 5255430, 7705172, 7381975, +-5916318, 4969277, -312459, 1785633, -5507222, 1764158, -673236, 5062156, -1862942, -1354525, +-3867081, 3699041, -6036577, -4905927, 566936, 5310727, 2942590, -3109020, -1569274, -920197, +-2021856, 3228742, -7277822, 6817724, 40265, 8466991, -11872363, 895501, -10685342, -3344169, +-3356517, 2985539, -1053341, -2400887, 2433636, 938987, 2971581, 4696010, 7699803, -898185, +-6055367, 1364726, 10350871, 2145336, -2903398, -706522, 6410776, -3297461, 3930432, -3184182, +-10909754, 6394670, 6805376, 6288906, -5353677, -8100845, -5799817, 6950331, -665720, -1009854, +4962835, 1852742, 1283122, 886911, -267362, 1947231, 2624762, -803696, -1313186, 1482838, +230318, -435402, 943819, -1330903, 478352, 2265059, -839129, 2376728, -898722, -1682554, +901943, -5369, 92879, 1225676, 986232, 1243930, 1022739, 906238, 17180, 1202054, +-16406238, 251792, -3659312, 1482301, -9201431, 1095217, 1486596, 12137578, -9760850, 99321, +-13084618, 2951716, -7919383, -1945083, 448287, -4296041, 3741990, 1650878, -6868727, 107374, +-138513, 6301791, -4166655, 10163503, -159988, -8841190, -4541928, 10819023, -1081258, 4322348, +2844342, -1803349, 6438693, -7183870, -6826314, -5292474, 699543, -6879464, 7257421, -4033511, +4639639, -6660421, -121870, -8089571, 5263483, 701153, 6313065, 5671505, -5428302, 10673531, +9063455, 8592619, 1654636, 9023726, 7374459, -7669738, 6529961, 3136400, 557809, -7119445, +3229816, -6059125, 5953362, -2607045, -4827007, -584652, 8905615, 3184718, -10364830, 9829033, +-864899, -3479461, -5947993, 10013179, 8607651, -7466264, 7332046, -535260, -8957154, 110059, +-5116917, -2775086, 4833986, -4287451, 3432753, -356482, 1484448, -2051384, 2597382, -363998, +-340376, -589484, -1053341, 949725, 447213, -2484102, 817654, 1248225, -75162, 933082, +1013075, -2329483, 428423, -271120, -28991, -1961726, 621160, -797253, -1273995, -2612951, +2937758, 642635, -1514513, -392990, 23383412, 3978214, -927713, -8056822, -15139760, 3870839, +-2225330, -22225382, 19507742, -9444096, -14101988, 2985539, -894964, 2632278, -904628, 3784940, +5630702, 78920, -351650, -11356430, -936303, -1073742, 13403519, -2442226, 356482, 4934918, +-2341831, -1644973, -5441724, 11443403, -8572755, 8269960, -2029909, -6849399, 1293322, -7657927, +-3884798, -12439836, 2203318, 5718212, -3353833, -6204081, -4902705, 7527467, -11652783, -2753611, +-5740224, -157840, -1659468, 1524177, -10106595, 9863929, -13803488, -9443022, 3762391, 1673964, +-509491, 3696356, -7151658, -10306311, 1293859, -2798171, -456340, 5069135, -6148246, 4596152, +3211562, 11382200, -3134789, 1639604, -858457, 171799, 15791521, 1329829, 15635828, -3762391, +-5845451, 1788317, -8012799, -707596, 8002061, 651224, -9323837, -8171176, 2316598, -859530, +59056, 8026757, 648003, -1496796, 3354906, -446140, -297963, -3733937, 1413581, 1765232, +-1854889, -39192, -897111, 3108483, -1371168, -613643, 1620276, 425739, 996969, -279173, +1805497, -568009, 42950, 961536, -1926830, 2454037, -1508607, 920197, 2086280, 1133871, +1974611, 551366, -17235704, -2330020, -3570729, -13998372, -24041080, 7305740, 12361990, -8863739, +-4301947, 6955163, -2662880, 14843944, -1739999, -8057896, -4828617, -22413824, 7474854, 2438468, +-2108292, -15768436, 3636764, -8806830, -2370285, -7741142, -3990025, 11066520, -10767483, 4531728, +-15909096, 10062035, 1954747, 120796, -4636417, 1116155, -2134062, -8937290, -16744467, 3156264, +-34360, 3491272, 6931541, -4133906, -1398012, -10810970, -5579700, -2955474, 4484483, 2991445, +7851737, 12548821, 9819369, 4999342, 7479149, 2208150, 7798587, 6984154, -6942815, 8012262, +9091909, -1964411, 12196097, -1361505, 14319421, -6444062, -15495168, -2609193, 9799505, 10755672, +12408697, -2491081, -21597780, -2251637, -1193464, 729608, -775778, -5386426, 3045132, -15810311, +12196097, 7632694, 7378754, -8321499, -7821136, -1805497, 4510253, -646929, -8742406, -13422, +-4291746, -7165079, -2882997, -1262720, -3426847, 224949, -2902324, 1340030, -1825361, -1071594, +2231236, 333397, 996432, -1222992, -3147137, -3543885, 2371896, -2847027, -134755, -1102196, +1445257, -1220308, -741419, -1210107, 3580929, 1816234, 1069984, -1226213, 22947474, -5043366, +-5505075, 7654706, 12358232, -884763, 5754720, 14307073, 10340671, -23487028, -21575768, 176094, +-2068564, 3164854, -9640054, -17136382, 4075387, 13734769, 9082245, -9949829, 16167331, 13053479, +12264279, -20591146, 5837398, 10791642, 563178, 1636919, 9199820, 21203180, -4090420, -9702331, +6443525, 4800163, -2879776, 11455752, 17125646, 3187403, 17741436, 7741679, -13298829, 1490354, +14714558, -1598265, -6026913, 7605314, 1240709, 2885144, 15444166, 9896678, 5262409, 1817308, +-17906256, -18267570, -1514513, 2878165, 4780299, -5648419, -782221, -4735739, 1615445, 2260227, +-6823630, 2572149, -4184372, -1083406, -5796059, 636192, 11418171, -6765111, -16462073, -2594697, +-13999446, 3064996, -4986457, -388158, -1865090, 6592775, -2459406, 4765803, -45097, 4082367, +1959579, -1935957, -2216740, -2886755, -8109972, 2927557, 1079647, 2003065, 293132, -6322192, +3182571, -4955319, -4113505, -1472637, -5288179, -1161252, -1712081, -2026151, -1646046, 3406446, +-1500017, 2254321, -187368, 1802813, 357019, 4407174, -1894081, 1153199, -3565897, -968515, +-3053185, -2877091, -554051, -2138894, 6885907, 2827699, 293132, -1020055, -929324, -38486128, +-24070608, -7408819, 6793565, -2524367, -9735080, 1536525, -9492951, 26647050, -11039677, 17029008, +26298622, 14170171, 12864501, -10545755, 9198746, -5331128, -12465069, 10497974, 12298102, 8077760, +17646946, -94489, -1123134, -8087961, -8268886, -7110319, -11313481, -11042361, -7630547, 3939022, +1292248, -315680, -7196755, -4030827, -10987063, 4271345, -9520869, -8683887, -3999688, 4290673, +-275952, -5934571, -15901043, 1654636, -4867272, 5455146, -18716930, -14543296, 15982110, -2706366, +-3371013, -7734163, -4838281, 11921755, 3699578, -2752000, 6421513, -2056216, 6691022, 5266704, +7668664, -5914170, -9576166, -23751170, 1387811, -23044110, -1796907, -19545322, -3034931, 18006650, +-2555506, 2985539, -13273596, -5889474, -6972343, 1206886, -8616778, -5119064, 7967165, 9954660, +-1315871, -1299765, 904091, -4925254, 1473174, -795106, -4834523, -2142652, -4175245, -1810866, +-2486786, -10850698, 1583769, -2048699, -1636919, 377420, -3157338, -3706020, -7543037, -1984812, +-4475356, -5311801, -1205275, -6618545, -3213173, 762357, -4236985, -4905390, 312459, -4150549, +1027034, 1213328, 4295504, -3047816, 2924873, 1218697, -4416837, -1864553, -1258425, -2223183, +573915, -1219234, -1464584, 26376468, 506269, -19113678, -16217260, 16549046, 12962211, -12232604, +-11835856, 22194780, 14081587, 818191, -13196287, 1597191, -5565741, 10533407, -8203388, 1262184, +-3494493, -2410551, 22914188, -3230352, -6284611, 4273493, 3867618, 6880538, 7049652, 800475, +-9097814, 6878927, 3426310, 7880728, 17704928, 8152922, -25602836, -7287486, -4215511, -19535658, +7524246, -3367791, 347355, -10874320, 9162239, -4206384, 1706176, -14147622, 9559523, -11517492, +889058, 11419244, -1890323, 12045773, -9441949, 15015743, -19268834, 9630390, 148713, -6879464, +25049860, 6739878, -5296232, -14939507, 6442988, -3037616, 1990717, -2233920, 9112847, 13749801, +18388366, -11644193, 8221105, -4589173, 16435766, 6100464, 2277407, -1475321, 9818295, 1813013, +-6649683, 8091182, -5805722, -9621264, -4279935, -13101261, 78920, -14682346, -1345399, -9878962, +11258720, -3552475, 7202124, -7898982, 199716, -4401268, 6788196, -2137283, -763430, -4357245, +2222109, -3255585, -5434744, -3017215, 2195265, -5087389, 3009698, -4020090, 1801739, -2584497, +-2674691, -2581812, -5790690, -3250217, 21475, -4085588, -3883187, 5291937, 4421132, 2523830, +-2758443, -6609955, -835371, 2953864, -369367, -5115306, -3213709, -38540888, -25012816, 20515986, +-15315853, -14379551, 7802882, 17943836, -29964914, -5097053, 6955700, 1779190, -15715285, -23472534, +43664248, -19029926, 5804112, -21616570, 11690901, -7620346, 20338818, 18064096, 1692754, 3089692, +-24480776, -167504, 11360725, -9995463, -14654965, 11400454, 3120831, 12303471, 9739912, -2196876, +4005594, -2867965, -1693291, 18210124, -15734076, -9291088, 14567992, -726386, -11912092, 15448460, +-612570, -3543885, -10662256, -4765266, 5608154, -8337069, -1076426, 5366025, -10580115, -10813654, +-7099581, 7783018, -22801444, 10718091, -1174137, 21451214, -20393042, 6636798, -15541339, 5589363, +-9385040, -11894375, 19305342, -10838350, -4867809, -10551661, 8269960, -12054899, 6941741, -4159676, +14083735, 14490683, -1963874, -22817550, 8948564, 9371619, -1222992, -808528, -13109851, -9055939, +-2288144, -11267310, -9126269, -3246459, -400506, -5645735, -7526930, 8380555, 2703682, -5354214, +-4549444, -5467494, -5839545, 6080600, 2138357, 1414118, -8710194, -3342558, 7244536, -4354560, +-5397164, 3398393, -3902515, -31675, 2554432, 4243965, -1890859, -7151121, 1285806, 4185446, +-9615895, 172872, 2326799, 183610, -5131412, -2893197, 110595, -2289218, 19300510, 9376987, +-21734146, 7406134, 23381266, -2067490, 53150, 10783589, -6993281, 16386374, 14837501, -19625316, +-12028056, -3627637, 10362145, 18709952, 3327526, 9934796, 21134998, 15800648, -22224308, -2405182, +35322348, 8701604, -2347200, -4191888, -6640020, -10397042, 3121368, 8630737, 9652402, 8951249, +-6307697, -15108621, 4065187, -7870528, 8294656, 24350854, -6469832, -24510304, 29314762, -8864812, +-16129750, 23703924, -4266513, -7113003, -25393994, -4611185, 10520522, 4970888, -5504001, -10769094, +9833864, 1000191, -11754789, 10045929, -2343442, 23115514, -17029008, 2365990, -3310883, 26485990, +9063992, -37758668, 11841225, -15813533, -6593849, -13538811, 16331613, 53905060, 19736986, 3069291, +12510166, 15643345, -19879794, -8512625, -5577552, -11435350, -6851010, -12651900, 11901891, -27792196, +-7322919, 2423972, 3339337, -9168681, 1751810, 4799626, -2685965, -3609920, 9456981, 1638530, +6323803, 5135707, -5655398, 1508070, 4691715, 1673964, 3929895, -2953864, 2424509, -5496485, +751082, -1747515, -5120138, -2837363, -1134945, 8325257, 503048, 2065342, 380641, -1888712, +-1699733, 574452, -718870, -7971996, -912144, 1124208, -1824824, -6185827, -14047227, -5267778, +-4234838, 8135742, -1405528, 1656247, -8164196, -28502476, -12089796, 2018098, -11533061, -35893040, +31244814, -5929203, 14119168, 2712809, -16419123, -28308130, -27266064, 30709554, 18735722, 7088844, +-10741713, -20450486, -15293305, -24295020, -6189048, 9131100, -3719979, 2039036, 3954054, -3947612, +-12544526, -12080132, -20627654, -7380365, -3905736, 10223096, 7175280, 11234024, -5477157, -9221832, +-3809099, 14668387, 2157147, 12990665, -43198244, -10154913, 20401, 9536438, -13727789, -569083, +-15900506, 12560095, 11107859, 2143189, 53539452, 881005, 16790638, 22028888, 1040993, 7135015, +421981, -3819300, -6339909, 11113228, 16364899, 21309480, -385473, -3995393, 1556389, 14005888, +12802224, 474594, 10397579, 8917963, 7030862, -2829847, 21021718, -6019934, 26948772, -26526254, +-13171591, -32630478, -10068477, 5849209, 885300, -8450348, 1845225, -105227, 14715095, -2959769, +17610976, -8012262, -6409165, -8804683, 4618701, 9844065, -1507534, -4782983, -5222680, 6076305, +178241, 20422570, -3149822, -1402307, 3750043, 5733245, 8504035, -7062000, -544924, 2737505, +4240744, -9748502, 3474629, 3718368, 12606803, -12393128, 7130183, 4726075, -5197448, 10629507, +-5913096, -7282654, 126702, -2469606, 5529771, 2728915, -4289062, -129386, 4558571, 1042603, +10994579, -508954, 7219303, 20288888, -3740917, 894427, 5343476, -27765890, 1164473, 3984656, +17478370, 26663156, -22691386, 5027259, -14305462, 19005768, 17230872, 2182917, 33079838, 10320806, +13174812, -12054899, -1937030, -21111374, 33051384, -19203872, 5166846, 20225538, -4809827, -13001403, +10215580, -2968896, 5170067, 21714280, 566399, -6876780, -1996086, 4077535, -681826, -12872554, +9543954, -1223529, -3650185, 37071472, -28477780, 26824218, 17317308, 33472828, 13639742, -23648090, +18315888, 381178, 17020956, 44077640, -31778464, -13159243, -4082903, 867583, 29968672, -17762910, +1568200, -19075560, 1508070, 33793340, -3796214, 35068944, 9891847, 6008123, 15949361, -21402896, +-3532611, 15426449, 21829708, -35435092, -1252520, -30359514, 13618804, -15781320, -511101, 7198365, +9905805, 766115, -10792179, -8594766, -33196876, -3765613, -23580444, 19147502, 1669132, -1481764, +14913200, 846109, -63888, 14323716, 10697153, 7207492, 188979, -4815195, 6764574, -11207717, +-825707, -7685844, 7706782, 8016557, -6766184, -1296006, -14398341, 6399502, -883153, -5906, +-382252, -13981192, -16849694, -5572183, 5465346, 12794708, 6514392, 5777268, -2026688, 10717554, +7461432, -466004, -5444408, 9324911, -13269301, -3727495, 2774549, 15030238, 12429098, 2695092, +-6045704, -21467320, 6030134, -37565396, -33108292, 478352, 446677, -21028696, 17053168, 4930623, +-5751498, -19514720, 26515518, -6195491, 39475044, -5781563, 8469676, 14241038, -19276350, -6434935, +5971615, -22937810, -12964359, -20062330, 17151952, -16077136, -4436165, -5293011, 14833206, -13558138, +-22949084, -31917512, -1027034, 26502096, 1485522, -14647986, -6337761, -18539764, -6320581, 130997, +10939819, -20877836, -2460480, -4571456, -15000173, -20520280, 842350, 3397856, 13112535, 4515085, +22630182, 6288906, 28592134, -12017855, 23579370, -6078453, -18678276, -4861903, 38435664, -16695075, +17430052, -12246026, 28155658, -15004468, 9393630, 17940616, -1235340, -7435662, 3263102, -10271414, +25581898, -23622320, -9064528, 25680684, -3337190, -21466246, 838592, 19628000, 10744934, 19630148, +-20017232, -16879222, -10894185, -2187749, 19190988, 23415088, -41653668, 2185065, 11819213, -22767622, +3569655, 14368813, 11001559, 10540923, 10108206, 6882685, -3366181, 758062, 7698729, 8828305, +6999186, 17719424, -5574331, 9317932, 3740917, 19183472, 11220065, -14803142, -18919868, 5966247, +19949586, -5731634, -5784247, -12831215, -22084722, 2528662, -18879602, -5858336, 4066260, -12420509, +11385958, 3331284, -4096325, -10253698, -2190433, -10628433, -1084479, 5924908, 2574833, 1688459, +-2081449, -2590402, -35620848, 39280696, -12983686, 33457258, -6896644, 26889180, 2330557, -8318815, +-18257906, -12894566, -2340757, 475131, 19789598, -7430294, -1428614, 5725729, -17840758, 29032368, +10914049, 1156420, -23735064, 16428250, 8712341, -18937048, 18709414, 1702955, -2807298, 4774393, +-455267, 24523726, -5472325, -30645128, 33333778, -17041894, -2565169, 24765856, -10763725, -5317170, +-14618458, 39043400, -17326434, -4738960, -24235426, -4660040, 3113315, 34907348, -16173236, 6628745, +11236171, 20784420, -5304822, -22025130, 24221468, 14680735, 19692426, -9470940, -4536023, 2537252, +21805548, -11940009, -25251724, -28278602, 15249281, -19785304, 5236102, 21255794, 19821274, -13780403, +-4585415, 28585692, -45318884, -1013075, 6440304, 15794742, -1942936, -16536698, -3148211, 26074746, +-4884989, 53473952, 21068426, -15213848, -1893007, 1639067, -6262599, -19276886, -23523000, -17283486, +15029164, -11167989, -4427575, -387084, 23471460, 10162429, -7892540, 10348724, 7699266, -251792, +3610457, 4393752, -98784, 3301756, 24041616, 19718194, 19174344, 13010530, 2014340, -11673721, +6528887, -9105331, 11631845, -14042932, 15538118, 22483616, 7650948, 28461138, 30813170, 12497281, +-83215, 16146393, 5735392, -2852932, -9540196, 16782584, -4138201, -13283260, 36507, 8174397, +-3604551, 7126962, 13357348, 5070209, 13629005, -7598334, -8668318, -50306416, 17134236, 9794673, +44865764, 39315056, -5813238, -14511621, -46227268, 1362578, 15483894, -19785840, 15124727, 27080306, +26346940, -12196097, 31715650, 28351616, 1377611, -17090748, -18301392, 28950764, 24777666, -35150012, +-47914120, 63750200, 3352222, -4493073, 8418673, 4743792, 23700704, 23528904, -9392020, -8018167, +33272038, 15820512, -5873905, -22048214, 13464722, 2690797, 1870995, 11864847, 1745367, -1000191, +-13164612, 7479686, -3874061, -16199006, 29921964, -47421272, 33208150, 27514634, -44844828, -3081102, +23029614, 5834176, 26262114, -6077379, 3791383, 24004572, -3040300, 12284680, -22048214, -35057132, +98967856, -40377524, -56731148, -12375411, 110207248, 47591460, -46802260, -10560251, 19564112, 13507672, +-880468, -28275918, 41514080, 23228256, 17487496, 4156992, -55755116, -9101573, 9218074, 16712791, +-22827752, -37888056, 3473018, 12084427, 5371394, -17835926, -18847928, 9214315, 5225365, 13851270, +-2431488, -4522601, -1261647, 14798847, 18803904, 13007308, -28016072, -10773925, 19967840, 14746770, +-14059575, 174483, 16301548, 28875066, 11346230, -15042049, -20422570, -26714696, 12780212, -8458938, +11893301, -22555020, 12861280, 6749004, 14475650, -10247255, -5377299, -18067854, -7636989, 18134426, +3400540, -14775761, 8361228, 27331562, 7212861, -19659676, -12409234, 24756192, 42871828, 2995203, +71201432, -31570694, -12141873, 41319732, 2040110, -2325725, -21248276, -42415488, 35262220, -22085796, +-24075440, 18336290, -26725434, 13303661, -25341918, -28023588, -4735739, 6200859, 3971771, -6553047, +33728916, 8519068, 20564304, 9947144, 568546, 597000, -15248208, -32318556, 10351945, 32382442, +-26396332, 22640920, -26908506, -2718714, -1489817, -41523208, 29603062, -14335527, 11518565, 902480, +-12261595, 798864, -30110406, 31000000, -21806622, 10421738, -35053912, -21196200, -45974940, 17457968, +-21508660, -24063628, -19560892, -9943923, -6442, 49008260, 17459042, 24288040, -6731288, -22766012, +-28984050, 7755637, 1727651, -49741088, -23255100, -87550760, -41318660, -33790656, -5150203, -40284108, +-33332168, -7212324, 32013612, 36683316, -29827474, -37512780, -43337292, 21898428, 51662016, 2755222, +41530724, 1182727, 25049324, 10207527, 2958159, 12242804, 4376035, -874026, -15106474, 21613886, +17666812, 9679246, -18035642, -6978785, -2494839, 9337259, 9572945, -3431142, 10396505, -4495220, +-12168179, -20904142, 2503966, 29417304, 10426570, -3328063, 8132521, -9306120, 15562814, -5602248, +20378546, 20016696, 2207076, -21248276, 3408594, 4915590, 23106388, 5813238, 26278758, -17548700, +-11048266, 24528022, 25120190, 6900402, -6764037, -4466229, -25179246, -11764452, -50134616, 11805254, +17702782, -43410844, 24063628, 4795331, -12596065, 2597382, -12275553, -1213865, 9343164, 12673375, +22216256, -26148834, 2545842, 30151744, -3350611, -14374182, 27116812, -11917997, 1899449, -16057809, +-6517613, -32063542, 8358543, 772557, 18115098, -12654047, 1343788, 22523346, -10662256, 360240, +23241678, -45625976, 2967823, -52231096, -16616692, -34992708, 27935542, 9876277, -2049773, 11718281, +-10249939, 12784507, 35503272, 9547175, 55122684, -30719216, -35241280, 32469952, 8840116, -23834384, +-22372484, -9139154, 20354924, -19569482, -755377, -16925930, -21849572, 12815646, 16042777, -32583232, +-18941342, 27992450, -497679, 9874130, -6071473, 15333570, 6810745, 28254980, -16468515, -12236899, +7166153, 6500433, -8178155, -29564408, -21609592, -23396298, 31272730, -14561013, -24217174, 6996502, +-6341519, -8003672, -15967615, 5992553, 7150584, -2684892, -4756140, -8715562, -14717242, -2608656, +-3345243, -10763188, 383863, -5291937, -10102300, 6082748, -5966247, 5592585, -5887327, -5034776, +14760192, -5903433, 6971269, 5122822, -14078903, 6228777, 1852205, -5740761, -17071958, 23145042, +15234786, -6635188, 3587372, -11468100, -8685498, 7009924, -214748, -14718316, 5117991, -5937256, +13294534, -3635153, -2484639, 2485712, 6191196, -33851860, -68504192, -34213172, -13007308, 30036316, +39127688, -74772696, 12953084, -29657822, -40523016, -8258149, 46896748, 30023968, 25588342, -16072841, +-18017388, -21510270, 23667954, 16750372, 36499704, 4838818, -47347720, -18477486, 35639100, -5387500, +10470593, 31981400, -15229417, -22000434, -34635152, -34616364, 231928, 22705882, 48842904, 36250060, +23983098, 9909026, -49948860, -53127136, 18613852, -36623188, 8674760, 46992312, 18653042, 3280281, +-23665270, -42347304, -7279433, -18189724, 14239964, 11194832, 7951595, 29502130, -4596689, -5580237, +7710003, 21444234, 34571804, 35949412, 12127377, 32028108, 10702522, 11580306, -7057705, -35624068, +-14074608, -15381888, -29353954, 22191560, 20575578, 15462419, 15206332, -6679748, -35243964, 5959804, +10451266, -421444, 23356570, 15203647, 12209518, -2647311, 1538135, 3587908, 24042690, 24437828, +18371186, 5499706, -4532801, -17683454, -3388729, 10548440, 2938295, -5121212, -187368, -14012868, +-6693707, -8040179, -9415642, 7505992, 26239028, 13105556, -4933844, -2494302, -19814832, -1868848, +6781754, 13467407, 14651207, -4493073, -6431177, -30515206, -17859548, -4274030, 81068, 12499965, +10123238, -5875516, -7536057, 5142687, 1808718, 3350075, 7405061, -8393440, -3212636, -1542430, +4862977, 8346732, 624381, -2689723, -2457795, -12662100, 21192442, -60351268, -121411744, -62691492, +11719892, 47356848, 115472344, 112976432, 47042240, 48051020, 34483756, 1840394, -57573500, -97520456, +-146939952, -43881680, -61496416, -10729902, 59907276, 106827112, 89801864, 79313552, 43687332, -1005559, +-28019830, -37553584, -8069707, -65017752, -51657720, -49057652, -32174674, -26396870, -12279311, -2324114, +22341346, 52674552, 54220204, 53317188, 39007968, 50794432, 26911728, 29049548, -9542880, -2131915, +-24014236, -62963148, -91231008, -110187920, -53413824, -21487722, 17113298, -2839510, 11607149, 25624312, +33469606, 71484360, 82386064, 109236048, 69641824, 7041599, 31807990, -16495896, -60360396, -52765820, +-105075304, -122541320, -91645472, -56626460, -24384140, -19188304, 44069584, 49824840, 138174464, 113186344, +82778512, 81086296, 38805028, -4942971, -54932096, -79373144, -57985280, -69497400, -95481952, -45326400, +2607582, -9320079, 2682744, 41748692, 58132384, 42999600, 22393422, 21742198, 37032280, 15838229, +-2781528, -4425427, -18204218, -3043521, -16246251, -42748884, -22641994, -31874026, -51835424, -9098888, +-9021042, 41435160, 37704980, 22743462, 40567576, 70300560, 50260244, -12310987, -8513699, -33862060, +-30198988, -70717176, -73410120, -35460860, -15011984, 6133750, 24862492, 29518236, 43898324, 50099184, +48352740, 50866372, 12934294, -5132486, -27078696, -32990180, -43663712, -48249664, -48510580, -20837570, +10845329, 14587320, 21026012, 22070764, 15260019, 16369194, 17044578, 5551782, 3984119, -5629629, +-6033892, 10413685, -6889128, -16646756, 1023276, 3924526, -2014340, -4838818, -6873022, 720481, +-1183800, -6866579, -1421634, 733903, 66035, -76773, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -4551055, --7092602, -5158793, 2002529, -785442, -12138651, -6896107, -530428, 1733556, -3736085, 1276142, --4507568, 877784, -3258270, 8514773, -6942278, -3049427, -3053722, 5424544, 3746285, 8668318, -2287070, 1799054, -3967476, 4088272, 520228, 1105417, -485331, 3279745, 4500052, 331786, -4485557, 4254702, -2073396, 2377265, -2534031, -2828236, 315680, -2312303, 1443109, -3624953, --6555731, 1762010, 2340220, -1633161, 1823751, -3136937, 2951180, 4013647, -6924024, 1344862, --382789, 2597918, 2226404, 356482, -6833830, -2056753, -3003256, 2258616, -80531, 679142, --2193655, 1257889, -3505230, 160524, 3803731, 2419140, 257698, -1953136, 1259499, -5598490, --3138011, -4115116, 744640, 697395, -348966, 5898064, 28991, 5140539, 75162, 537945, -481573, -25233, -2788508, 2085207, -168577, 1028645, -596464, 660888, 978179, -384936, --972810, -384936, -292058, -300648, -161598, -1502165, 258772, 1544041, 894427, 15032, -175020, -423054, -678068, 653372, -14011257, -446140, 738198, 198105, 2298344, -4947803, -3628711, 2035815, -2598455, -8352638, 5488432, 5628018, -1329292, 4682588, 3380139, -4632659, -9192841, 1910187, -4166118, 4936528, 352187, 4612258, 674847, -8017094, 3040837, -1525787, --2968359, -3118146, -2435783, 5237176, 4062502, 321049, 4250944, 1531693, -4023848, -4985920, --456877, -1171989, 2139431, 1447404, -3917547, 926102, 2035815, 1917703, -3444564, -2894808, --4562866, -1609002, -1139777, 906775, -1118839, 6113886, 2618856, -956167, -3104188, 1139777, -2547453, 1312649, 6590628, -1107028, 3319473, -399432, -2168422, -4012573, 2823404, -914828, --1857573, 3858491, -1193464, 1279363, -864362, -808528, -4449586, 969052, -1261647, 5223217, -6473590, -3904125, -3962107, -2791729, 1089848, -2506114, -1275068, -1619740, -1610076, -1748052, -1036698, 2405182, -156766, 616865, 719944, -259846, 77309, -1187022, -2645700, -4149475, --9535901, -5700496, -2082522, 6831146, 867047, 1267552, 4173635, 1120987, 1788317, -9989557, --9180493, -5848672, -1552094, -46171, 4205310, -3005403, 3285113, -1721745, -6181532, 1914482, --925565, -4227859, -91805, 5904507, 8575439, 3889630, -3962644, 2299418, 250719, 6190122, --52613, -4942971, -193274, -2888366, 6072010, 2658585, 2835215, 6163278, -1090385, 445066, -8257612, 7231651, -295279, -38655, 546535, -463320, 2181307, 602369, -6055367, -8015483, --2848100, -1021129, 5369, -2659122, -8946417, -952409, 2455111, -4866735, -2390686, -3171297, --2724083, 942745, 1126355, 2942053, -6240588, -4983236, 4781373, -2034204, -1104880, 986769, --388158, 3126199, -6010270, 2371896, 2204929, -2384244, -2301029, 2390149, -2635499, 3812320, --1515587, 33286, -17180, -1505923, 740345, 2817499, 1552094, 317291, 1698123, 483184, --796180, -1540283, -860067, -888521, 335007, 430034, -272194, -226560, 406411, -139050, -12744779, -4890357, -3874597, -620086, 218506, -4765803, 42950, -3334505, 6130529, -1500017, --7580618, -10558103, -2711198, -6993818, 9745818, 791348, 6915971, 5826123, -9241159, -520228, -3879429, 2805688, 4912906, 914291, -594853, -838592, 2304787, -3063386, 3529390, 1948841, --3295851, 2039036, 150324, 2381023, 5299453, -2861522, 2105608, -338766, 3027952, 2605435, --1084479, 3591130, -1017370, 3123515, -2386928, 2848637, -7485055, -3182034, -2733210, 2105608, -6473590, -4755066, -3142306, -1755031, 394600, -2173254, -2867965, -1519345, 2621541, 2123861, -3744138, -1242319, 2134062, -2205466, -2324114, -217970, -1396401, 2590939, -34360, -3910568, -2199560, -2283312, -3849365, -1429687, -2394444, 1693291, -2808909, -7623567, -1080184, -3295851, --3248606, 1653562, -2103460, -4589173, -933619, 970663, -329102, 276489, -45097, -2881923, -92342, 1521492, -1089848, -1204738, 306016, -58519, 550830, 489089, 1495722, 434865, --1298154, 862215, -230318, -460635, -501974, -1290101, -1209570, -1315871, 2166274, 3345243, --1291711, 5071283, -7919383, 3560528, -4727149, -5219459, 7687455, 2869038, -9036074, 957241, -74088, 2743947, -6497212, -4154307, -550830, -5261872, -9604084, -9301289, -6129455, -9282498, -4015258, -953483, 1431835, 5053029, -8144869, 5398237, -2286533, 2536178, 1682017, -813896, -865973, -1163936, -1152125, -5306432, -3166465, 6971806, -2542084, -5767604, -5299453, -501437, --2367601, 2183454, -5064304, -7861938, 1229434, 7337952, -1090385, 4453344, -2509335, 2433636, --3910568, 2998961, 1246077, -5371931, 7939784, 1421634, -1642288, 1859721, 7303055, 6725382, -3554086, -711354, -8097624, -1364189, -6746320, 1955284, -1464584, 1133871, 1193464, 1891396, --6131066, -47245, -438087, 2973728, 6304475, -7865159, 1064615, -2302639, -7351374, -832150, -2166811, -752693, -164283, -707059, 2437931, 475668, -2126009, -1466731, -1535451, -943282, --2534568, 86973, -202400, 1425392, -3058554, -2155537, -227096, -411780, -373662, 139050, --228707, 490700, -1106491, -1153199, -290447, -196495, -803696, -209380, -212064, 1362042, -1277216, -26307, 37581, -1422708, -2296734, -823560, 121870, -9019968, -8642011, -5614059, --9517648, -11278584, -10752451, 4555887, 4975720, -6916508, -1832340, -6261526, -10220948, 5471789, --2683281, -8863739, 3040300, -602906, 444529, 901406, 3002182, 988916, -329102, 2284923, -3056406, -5095979, -4911832, -1317481, -5987185, -421444, -6381785, -11015517, -892279, 6673843, --7997229, -6112812, 4303021, -4205847, 477278, 1700270, -4135517, -3311420, -3512210, -11867532, --5174362, 2554969, -3428995, -3929895, -7518877, 3345780, 6641093, -2411624, 10260677, -5698885, --2729989, -43487, -2529199, -8702677, -658741, 1996623, -333934, -1830730, -7648263, -1250909, -7433515, 3773666, 2157147, 3882651, 2724083, -1968706, 14258218, -4496294, -5608691, -5290863, --6400038, 2525441, 8077223, 5552319, 569620, -1320703, -4160213, -1468342, -178241, -1925219, -290447, -2582886, 941135, 5961952, 3799436, -2928094, -680752, -1060320, 2092723, -1234803, -2282238, -2477123, -1311039, 372588, 413927, -615254, 734439, -1430224, 1483374, 61740, -1154273, 1004486, 661425, -696322, -1212791, -295816, -1225139, 16069083, 10945724, -454193, -9999758, -794032, 1500017, 1949378, -5402532, 9124121, 139586, 8055211, 7719667, -6165963, -10014253, 196495, -7565585, -12503724, 11494943, 5595806, 11419781, -9497246, 6575058, 3586835, --10469520, -10335302, -6110128, -2905546, 11002632, -10405095, 9283572, -856309, -1007707, 6704981, -6312528, 8604967, 3175055, -4644471, 4207458, 8090108, -4860293, 8088497, 12259984, 5243618, -7444789, 3123515, 2113124, 2123861, 327491, -6629282, 2474438, 714575, 499290, 5655398, --3960497, 3390340, 3759707, -1588064, 10693395, -6228240, -3801583, -2373506, 9235790, -1638530, -7627862, 3896609, 5156645, 4667556, 898722, -13000329, -2020782, -10412611, -5676336, 13630616, -7090454, -6017786, -364535, -7428146, -6691559, -3441343, 11298985, 1058710, 3889630, 2258616, --1768990, 2374043, 4045859, 7139310, -2007360, 4201552, 2980707, 2626373, -2439005, -1486059, -1118839, -1195075, -61740, 1999307, 2610803, 1157494, 1126355, 3221762, 3076807, 1224603, -85899, 1588601, -667331, 2749316, 4072703, 2018635, 106837, 4559108, -14037027, 8929237, -8573292, 25295746, 1030255, 2224793, -1229434, -3426847, -1613834, 8580808, 7820062, 6820945, -9852655, 4019553, 15538655, 4574140, -6112812, 1517734, 13545253, 5371394, 1400696, 2132988, --6922414, -9966472, 6436546, -4935991, -9768366, -20712480, -305480, 8279623, -610959, 4893042, --7161321, -3776887, -2663417, 1574642, -2254321, -6194954, -3016141, -16681116, -4342212, -14156212, -1213865, -7453379, 5713917, -8115878, 3112241, -7802345, -2701535, -477815, 250182, 1221381, -1597728, -10342281, 5019743, -1548873, 2307471, -5400385, 155693, 8276939, 3338800, 11435350, -6409165, -3478924, -668404, -2347737, -1159641, -2673617, -3630858, -170725, 4697084, 3045132, -3492882, 2251100, -16338592, 10799695, 10596221, -3953518, 6070937, 4757750, -8633958, 4180077, -2595771, 569083, -1829656, 1530619, 5587216, -4883915, 3258807, -1356136, 287763, -350040, -1235877, 3020436, -2492155, -1081795, 4149475, -2896956, 212601, 174483, 1576790, -1872606, --3466576, 2173254, 140123, -1032940, -1034013, 582505, -121333, 2037962, 2298344, 2633352, -38655, -2683281, 27225798, 9816148, -4545149, 13449153, -8829379, 9381282, 6239514, -12809740, -2734821, -16114717, 331249, -5471789, -11348377, 6079526, 207232, 4655745, 6657736, 8266202, -13254806, 5542656, -940598, -3410741, -9022653, -16240882, 5769215, 6383395, 1768453, -5658083, -8786429, 1163936, 9283035, 5539434, -16952772, -6416145, 2285460, -12454868, 644782, -872415, --2368138, 3696356, 2757369, -2915746, 12502650, -7196755, 497142, 7035694, -6160057, 4842039, --2688650, -7552163, 5084705, -30602, -978179, 7233799, 4767414, 301721, -3737695, 14941654, -668404, 8422968, 846645, -4604205, -5165772, -12453795, -4825396, 5261872, -327491, 4498442, --1410897, -9689983, 3894462, 3266323, -14270029, 4203699, 7368554, -3757023, 7859254, 1906429, --8096014, -8189966, 9370008, -127238, -18738406, 2412698, 2029909, 867583, -1895691, 1184337, --2564632, 551366, 5610301, -1632088, 909459, 1495722, 1665911, -4634270, 1439351, -1598802, -1315871, 3577171, 3702262, 2752000, 1295470, -3004867, 1423782, -174483, -264677, 1351841, --3440269, 58519, 2385854, 3350075, -2141041, -1209570, -4031364, 825171, 4268661, -4068408, -1723356, 1608465, -28284508, -9389872, 29560112, 8208220, 4720169, -4447976, -795643, -4541928, -6029061, -9555228, 12922483, 7395934, 6058588, 6228777, -4577899, -445066, -533113, 4159676, -8697309, -13085155, -7770133, -4177393, 9944460, 3595961, 5546414, 5975374, -1366873, -9379135, -3074660, 738734, 18054968, 14216879, 3732864, 10798085, 586263, -5196374, 2233920, -1485522, --2481417, 6963753, 8548059, 7048042, 17468168, 8449274, 6850473, 7683697, -7929047, -12971875, --6092948, 5928129, -11074573, -5465883, 10755672, 11485279, 6288906, -5178120, 10147934, -3986267, -1102196, 2443300, 5827197, -2972654, -6338298, 3643206, -5716602, -17891760, 773631, 5805185, --9765682, 1290101, -1764158, -2515777, -1791538, -5779416, 14564234, -1505386, 8323647, -20871394, --19872276, -16811038, -7678328, 1729798, 2040110, -531502, 1147293, -338766, -4441533, 2195265, --4882304, -1420560, -2142652, 5111548, 805306, 1860258, -3922379, -706522, -3491809, -1248225, -2765959, 4418448, 4722854, 4558034, -67109, -3022046, 2466922, 4017942, 2472291, 4000762, -1389422, -361851, 1678795, 589484, 818191, -1179505, -2735357, 3234647, 3587372, -1167157, --1034550, -777389, -604517, 14556181, 22890566, -33740188, -4788889, 1999307, -272730, -4055523, --8426726, 9223442, -10812580, -17172352, -1762547, 16741783, -2416456, -9810242, 3093987, -13719736, --7461969, 529892, 8780524, -14380624, 1578937, 15661598, 16069083, 402116, 5680094, 14035953, --8051990, -12569759, -17564806, 1684701, -17508972, -3754338, 7349226, 6909529, -15495168, -14623290, --8894877, 6272800, -4128537, -2746632, -4080756, 13936632, -20750060, -6083285, 3210488, -11199664, --3872450, 19864, -13096966, 588411, 5364414, -731755, 17133162, -1180579, -6962142, 1436130, --884226, -5652177, 3273839, 8419747, -7825431, 12015171, -5961952, -22426708, 1035624, -8766028, --4815195, -643708, -2414309, -29580514, -4980015, 13529147, 11684995, 8164196, 17628156, 17952426, --24338506, -2754685, 1552631, 5033165, -7082938, -12135967, -242129, 5468030, 6469295, 5516886, -4306242, 2034741, 3471407, -6523519, 23622, 3852049, -2058363, -1536525, 711891, 1227287, -3491809, -3912178, 703301, -1607928, 1631014, 2240362, -5201743, 704375, -541166, -3613678, -1511292, -868657, 674310, 110595, -95563, -4560719, 2295660, 259846, 1195075, -3060701, --2258079, -2051384, -1905892, -32273458, 8995272, -6016176, 10984916, -10339060, -122407, 16858284, --5657546, 23958938, 5499706, 4604205, -10320806, 4519916, 11871290, -7338489, -1501091, 15489263, -9979357, 11654931, 1637993, -17940616, 11387032, -11588896, -1093069, -6991670, 1763621, -8923331, -5173825, -2336462, 5042292, 4798552, 8565775, 8684424, 9640591, -11453604, 2724620, 18262200, -3893388, -3292629, -3671660, -9187472, -7406134, -49392, 671089, 3278671, 15371151, 1315334, -8479339, 8210904, -580894, -3928285, -3741454, 13943611, -16296717, -3555159, -14421426, -11891691, --3338263, 89657, -24196772, 6279779, -7606924, 14809047, -3069291, 635655, 10284836, 2093260, -24845848, 20510616, 29595546, 11181947, 1257889, -3451006, -3000572, -5004174, -1451162, -5949604, --16291885, 11024644, 13510357, 6424734, -2202781, 1493575, -11472395, -15628312, 7257421, 1912334, -2164664, -5052492, -2145873, -5481452, -2945811, 4766877, 1597728, 6254010, -401579, 1357747, --3587908, 4345433, -12921409, -3463354, -441845, -571768, -2419140, 2216203, 605590, 773094, --878858, -3217468, -618475, -1381906, -849867, 3959960, 495532, 425202, -2641942, 787053, -664646, -287763, -5752035, -4281546, -9451612, 12746926, -3721052, -2775623, 29734058, -6124624, --6527814, 33059974, -460635, 18814642, 13888314, 1112933, 7797513, -4434017, 6117107, 5741298, -3651796, 4660040, 15285252, -10528575, 18417894, -10136123, -301721, 3772592, -2476586, -13349295, --11913166, -355945, -19345606, -6186901, -21134460, -1461363, -12550431, -9402757, -6867116, -6044093, -3166465, -17012366, 19753628, 3094524, -12809740, -9577777, -597000, -2487323, -3127810, 5102958, -2723546, 19407884, 2240899, -224949, -9905268, 1631014, 4034585, -732292, -10567230, -4588099, -12194486, 13279502, -774705, -11288785, 4628364, -2226404, 17339320, 19293530, -7524246, -4997195, --3553012, 2188286, -7400229, 7798050, -24005110, -2257542, 28399934, -25616796, -12612708, -5938329, -1851668, 2265595, 3399467, -2319819, 7612830, -4541928, -1269700, 13821205, -2167348, 10016937, --6771016, 10091026, -8825621, 6911676, 5641440, 13718662, -278636, -2320893, 5799817, 9030706, -808528, -2162516, -1415192, 919123, -4902169, -1495186, 4625680, 6095633, 1921998, -1975685, -5922223, -4624069, 4866198, 4063576, 4440460, 2444910, 163209, -7209640, 7250979, 4285841, -3357054, 1592359, 3421478, 6343130, 1460826, -4976257, 2484102, -4055523, -3124052, 5250061, --1276679, 4545149, 4926865, -1922535, -3582540, 2027225, -17297980, -9479530, -2705830, 13387413, -16136729, 11059541, -10268193, -26353382, 45624364, 11477763, -28632400, -28727426, -4304094, 6956774, -19432042, -24992952, -4412005, 4667019, -361314, -3594351, 26146150, 5610301, -15349139, 8195872, -1079111, -733903, 13765370, -2511482, 7522635, -17040820, -5773510, 29944512, 11061151, 23613730, -7451232, 21349208, 3731790, -7841537, 15009837, 13681081, 21442088, 10559714, -24218784, -9183177, -5235565, 12517682, -9730248, 3692598, -9375914, -15658914, 1580011, -1810329, -9373229, 7284802, -10142565, 8808978, 6431177, 6039261, -4622459, 16207059, -133681, -16102369, -11697880, 14576582, -7896834, -25289842, 10991895, 4489852, 8124468, -22097606, -15111842, 14209362, 21943524, 12409234, --4941360, -23630910, 5339718, -1045288, 20143396, -6728067, -27101780, 11356430, 15796890, -5990406, -16441135, 13538811, 5572183, -10821707, 1409823, -142808, 3153043, 1186485, -745177, -5757941, --2430952, -7226820, -760746, -1428077, 3764539, -4414690, -2660732, -1483374, -3321084, -2019172, --1772211, -2018098, 8383240, 2524904, 85362, 8169028, -2044941, -7707856, -5192079, -4131222, --3348464, 354335, -5637682, 2360085, 3400004, 2887292, 2132988, -7403450, -2896419, 6211597, -5105643, -766652, 10897943, 21285322, 8205535, 22471268, 3767760, 10310069, 7679939, 37430640, -50927036, 3984656, 10193568, -32407676, -10296647, 19607062, -16514149, 38554848, -7670275, 6080063, -10386305, 22580790, 12524662, -5376226, -16356846, -19170586, -6326487, -3151432, -24041616, -11393474, --9566503, 15428059, -8946954, 4595615, -15420006, 2055142, -6063957, -22496502, 23380192, 16217797, -18821084, 8291435, -11482058, -11115912, -26188564, 483721, -23606750, -7170448, -2017024, 3112241, -12071542, 9525701, -7672959, -5435818, 9996536, 22111028, 5924908, 8454106, 16123307, -20565378, -14555107, -11681774, -10815265, -20764020, -9117679, 9495099, 8007967, 1323387, 24254754, -5315559, --9028021, 3718368, 6327024, 33348274, -10996727, 13368623, 13144211, -32058172, 8590, 4005594, --7093139, -4724464, 11054172, -6362457, 913754, 13583371, 6990596, -19729470, -23710366, -22867480, --10735271, -8512088, 19040126, 16623134, -4589173, -7268159, 944893, 2110440, 12549894, -1419487, --3965866, 7801808, -1464584, -1301375, -3326989, 5651103, 7721815, -4109210, 7391102, 6984691, -7148436, 1262184, -3043521, 6319508, -4381941, 3786014, 8050380, 593779, 4800163, 6445136, --10949482, -477815, 5327370, 5957657, 8024610, 944356, 7184407, 378494, 462783, -2469606, -4125316, 6041409, 31903554, -7567196, 4663261, -14266808, -4087198, -19018652, 15111306, -27362700, -1257352, -22033720, 4359929, 9433896, 3423626, -13188771, 45197016, -3176128, -6080600, 4103841, --25724170, 1475858, -17381732, 597000, 4884452, -5211943, -592706, 10644003, -9445707, 405338, -13678397, 1116692, 3460670, -22136262, 2818036, -1873143, -1380832, -5609228, -27460410, -15285789, -6785512, 2242510, 12191802, -31822486, 3469260, -29617558, 15015743, -20201378, -32309428, 16357383, -29788820, 5131412, 14652281, -22317724, 22095996, -5484137, 3298535, -13691282, 18403934, 7408282, -19110456, 5994701, 23186918, -21012590, 4012036, 1152662, -3601867, -16663399, -13583371, -15663209, -17768280, -4742718, 24148454, -15016816, -11518565, 2692945, 3216394, -13434658, 6971269, -7908646, --31454730, 13810467, 20837034, 34586296, 12099460, 24527484, -14184666, 26307, -15992311, 26275000, -8862665, -5061082, -10480794, 12460774, -8993125, -2555506, 1329292, -7960722, -13394929, -8953933, --6352794, -5352066, -17838610, -7793218, -14870787, 11421392, -2843805, 6769406, 13340705, 3479997, --10123238, -1021665, -10131291, -4399121, -15136538, -8413841, -16021839, -2863670, 26208428, 5284421, --2025614, 5820218, 7844221, -15239618, -6995965, -958315, -2057826, -6371584, 6633040, -3070902, --23232014, -2084133, -5367636, -52807160, 6482180, -16870094, 48863844, -9197672, -24679956, 9811316, --1419487, -24587078, -4214974, 4092030, -14811732, 36892160, 5228586, 3539053, 16729971, -20747376, --31947040, -19682224, 45009648, -3593814, -9596031, 29753922, 16756278, -14192183, -14139032, -7950522, -35668628, 5004711, -8750459, -13963476, -6785512, -27888834, 18769008, -3249143, 7577396, 17940616, --6395207, -28882582, -3590593, 37249176, -1654099, -9290014, 17893908, -8156680, 22217866, 14625974, --1951526, -27523224, -14085882, -3773129, -25538950, -14948097, -14737643, 1998234, -3554622, 21510270, --15018964, -5186710, -142271, 55300388, 19175956, -9516574, 11149735, 6524056, -3293166, 28085864, -13615583, -10624675, 4365835, 22708566, 25617870, -15652471, -11206643, -37548216, -30183956, 17166984, --11292543, 18532248, -534187, -22073984, 5375152, -1743220, 6983080, -14685567, -11233487, 20794622, -5235029, 2762201, -2084670, -2424509, 13785771, -6620692, 7091528, -3528316, 8595303, 17470854, -4625680, -12620761, 2064269, -4847945, 9501005, 7862475, 2589865, 11373610, 17666812, -6942815, -14249091, -1379758, -18945100, -4895189, 592169, -10585484, 4250407, 13791140, -272194, -6979322, -843424, -2579128, 17974438, 15420543, 1561758, 7299297, 9258339, 4843650, 12006044, -15411953, --11476689, 5516349, 3095061, -3275450, -1370632, -2537252, -5765994, -5684926, -59680720, 20480014, --12782896, 31747324, 32278290, -18722836, 15235860, -31965294, -47995724, 1163936, -33758980, 4429722, --4236985, 26101054, -19398220, 18620830, 15971910, 26178900, -39882528, 4342749, -24414204, -22369800, -2406792, -28876138, -18634252, 26196616, -7661685, 9943923, 30586610, -6075231, 10064182, -25218438, -2889976, -27804544, 25761750, -23048942, -15311558, -17015050, 28738164, 23036058, -16511465, 31501438, -20855824, -6666326, 31257162, -1743757, -33085744, -9141838, -3904662, -25776246, 5801427, -54536956, -5468567, -13874355, -26179436, -21137144, 24375550, -14559939, 50542100, 37563248, -56511568, 25770, --1478543, 2714419, 26121992, -44361644, -30942556, 30522186, -25433186, -31774704, -36597952, 2481954, -75163536, 37371048, -34979288, -22007950, 3047816, 27374510, 10460930, -36557152, 5439039, -24414204, --14358076, -1273458, -4403415, 1437203, 24127516, 5733245, 14307610, 9516574, -28135794, 7592429, -12632036, -3942780, -10138807, 1521492, -24008868, 21409876, 7762080, 5880884, -31843424, 5352603, -16428787, 4673998, -7521562, -5916855, 14122926, -23194434, -1495186, -17286706, -9580998, 22805740, --24059334, -943819, 14344654, -12032888, 11247446, 13701483, 3558917, 2088428, 10030359, 3318399, --12801150, 18737332, -14424648, -11258720, -6545530, -19704774, -6808597, -18464602, -17700098, 6441377, -27705224, -31722628, 15244986, -52969832, -8336532, -20909512, -18252538, 27302570, -36308580, -56439092, -32251984, 48736604, 11502996, -10035191, -45134200, 2535105, 17087528, 16998406, -7909183, -18435610, -1834488, -4940823, -6259378, 5177046, -6991133, -15537044, -29681446, 3182571, -18014704, 3833258, --16186658, -33934000, 20365662, 14726906, 25133074, 351114, 27217208, 14911053, 3783329, -9503152, --14465987, -23549842, -16761110, -9807021, 6177774, 15297063, -10975789, -5750425, -38395396, 35163436, -42000484, 22991496, -21893058, 22036404, -29772714, -1025423, 6485401, -64990908, 4981625, 5852967, -30182346, -39003136, 49371184, 18953154, -35807680, -20685100, 14715632, -6731825, -26287348, -32471026, --34639448, -47457240, 34333432, -15293842, 5234492, -72285376, -28754806, 3920768, 597000, 15973520, --11619497, 2421288, 12075837, 12390981, -34459596, -8358007, 5414880, 18523120, 13640816, -3445101, --13322452, -6110665, -2994666, 17259326, 2886755, -11596412, -1451162, -9121974, -3461207, 15923054, -7415261, -8611409, 17419850, -17943836, -10317585, -13514115, 16853452, -7227356, 1965484, -8281771, -7346542, -24772298, 3558917, 9674951, 3807489, -4734128, -10632192, -9602473, -12427488, 11839077, -2647311, -4573067, -14209362, 14245870, 833224, 609885, 2107218, -25211994, -12131672, -16657494, -2123861, -8650601, -5191005, -49203684, -6680285, 17721036, -23166516, -21619254, 20138564, 20377472, -4060355, -19556596, -66505420, -9937481, 12884902, 7735773, 28697360, -818728, 16646219, -4524748, --510027, -8558259, 1156957, 17374216, 1948305, 507880, 17000018, -4776004, -4195110, -22671522, --2142652, -3841312, -2582349, 3624953, 13560285, 18371186, -3715684, -244276, 14548128, -3562139, --28192702, -2196876, -25030532, 3368865, 3357591, -33028298, 23708756, -45410152, 10064182, 12132209, --19828790, -1687922, 58486716, -16869020, 19724100, -12663711, 10427644, -44146896, 4700305, 25335476, --710280, 21810380, -5173288, 1971390, -1444720, 27953794, -18219788, -22220014, 25097642, -23550380, --28645822, -733366, -45744624, 30147986, 25373056, -9541807, 9797894, 3833795, -268435, -39352636, --6406481, -3383361, 17177184, 6027987, -16414828, 15046881, -1100049, -20272782, -13440026, -12776991, -2659122, 2247879, -2682744, -900869, 12474196, -12755516, -3506841, 8107825, -13079786, -7558069, -10132365, -13937169, 927176, 11440182, 794569, -3838627, 5232344, -957241, 1236951, 9906342, --3741990, -3670587, -7893076, 2964064, -4956929, -5311801, 4631586, 5192079, -11119670, 1296543, --10375030, 9596031, -11818676, 6113349, -2147, -2654290, 1276142, -3134253, -1298154, -1010928, --24344412, -73437496, -34567508, -11567958, 23879482, 53955528, -49584324, 10736881, -14407468, -50005232, --7064148, 44777180, 12000139, 36872296, -31261994, 9196062, -10866267, 2102387, 21749178, 3611531, -11792906, -7140383, -63677724, 18786724, 3073586, -27084600, 27679454, 21090974, -19274202, 19491098, -2308545, -20795694, 6314676, -12878459, 39758512, 4809290, 16085189, 696322, -40853728, -32772212, --11042898, -24304146, 26548266, 38097972, 39226472, 31512712, -10946798, 4332549, -32097902, -4915590, --3239479, -13582297, -16917876, 2649458, 3092377, -44178572, -12920872, -17325362, -1216013, 19662898, --21701932, -5098126, 7625715, -47245, 22699440, -25248502, -1024887, -28591598, -14975477, -21165062, -11605002, 7471633, 22677428, -3177202, -2358474, -26966490, -8054138, -12869870, -3382287, 11218455, -15530602, 31785442, -20477330, 5679021, -17743046, 6232535, 11955041, 3192235, -9766756, -4144644, --3433290, -4148939, -1451162, 8264054, 8860518, -2688650, -1047435, -4440996, -6289443, 3919695, -8818642, 2806224, 978716, 2199023, -7445326, -8864812, -8112657, 13202193, -383863, 9066139, -7648263, -1492501, -10449119, -11423539, 1665374, 2910914, -8671539, -3003256, -7547868, 5342940, --5470715, 1664300, 1581622, 5586679, -2953864, -3687230, 1423245, 1856500, 19069654, -30870078, --121735480, -64207612, 13144211, 51173460, 114566640, 87520696, 49303540, 16576426, 25710212, -8192650, --48204028, -93235152, -124003760, -31402116, -35947804, 1829656, 60381872, 86106576, 57753352, 77144592, -17760226, 16320876, -9034464, -39085812, -44229572, -35800700, -38006704, -47027744, -37682432, -16148540, --2424509, -619549, 30116310, 39039104, 74721696, 35265440, 11625403, 30636002, 47688632, 15158013, -9101036, -38524248, -52668648, -86129664, -39782136, -45198088, -32673964, -19499688, -15266461, 6323266, -10608032, 36142148, 74115568, 59569048, 65069828, 48119204, 59035400, 43867724, -35504348, -32614908, --82030120, -63602560, -46495704, -104545944, -80806592, -49507552, 3929895, 63265944, 60369524, 71256728, -89193584, 76190576, 41084584, 49425408, 1976222, -19454592, -52309480, -76060648, -76292576, -63052268, --37826852, -8249022, 10888279, 18323942, 21182778, 35179540, 25507274, 41162968, 26134876, 10223633, -6768869, -1685238, -4026532, -1090922, -28506772, -20043538, -3994320, -13382581, -34053720, -9693204, --12197170, -12805445, -2317672, 25358560, 48223356, 39826156, 4258460, 39140036, 27724550, -5282810, --32276680, -51323784, -47537772, -21697102, -23513336, -14889041, -8125005, 13423920, 29911762, 41248864, -47119012, 33740728, 13318694, 14351096, -8957154, -25884694, -43292196, -39007428, -17136382, -1905892, --12637404, -4318590, 12534325, 15674483, 16426102, 15391015, 4071092, 6305549, 10040023, -1909650, --8971650, 105764, 3290482, -6816650, -7377143, -1222455, 3005940, 1996086, -4589173, -2531883, -2313377, 876173, -3190087, -4255239, -1751810, 462246, -71941, -90194, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-7092602, -5158793, 2002529, -785442, -12138651, -6896107, -530428, 1733556, -3736085, 1276142, +-4507568, 877784, -3258270, 8514773, -6942278, -3049427, -3053722, 5424544, 3746285, 8668318, +2287070, 1799054, -3967476, 4088272, 520228, 1105417, -485331, 3279745, 4500052, 331786, +4485557, 4254702, -2073396, 2377265, -2534031, -2828236, 315680, -2312303, 1443109, -3624953, +-6555731, 1762010, 2340220, -1633161, 1823751, -3136937, 2951180, 4013647, -6924024, 1344862, +-382789, 2597918, 2226404, 356482, -6833830, -2056753, -3003256, 2258616, -80531, 679142, +-2193655, 1257889, -3505230, 160524, 3803731, 2419140, 257698, -1953136, 1259499, -5598490, +-3138011, -4115116, 744640, 697395, -348966, 5898064, 28991, 5140539, 75162, 537945, +481573, -25233, -2788508, 2085207, -168577, 1028645, -596464, 660888, 978179, -384936, +-972810, -384936, -292058, -300648, -161598, -1502165, 258772, 1544041, 894427, 15032, +175020, -423054, -678068, 653372, -14011257, -446140, 738198, 198105, 2298344, -4947803, +3628711, 2035815, -2598455, -8352638, 5488432, 5628018, -1329292, 4682588, 3380139, -4632659, +9192841, 1910187, -4166118, 4936528, 352187, 4612258, 674847, -8017094, 3040837, -1525787, +-2968359, -3118146, -2435783, 5237176, 4062502, 321049, 4250944, 1531693, -4023848, -4985920, +-456877, -1171989, 2139431, 1447404, -3917547, 926102, 2035815, 1917703, -3444564, -2894808, +-4562866, -1609002, -1139777, 906775, -1118839, 6113886, 2618856, -956167, -3104188, 1139777, +2547453, 1312649, 6590628, -1107028, 3319473, -399432, -2168422, -4012573, 2823404, -914828, +-1857573, 3858491, -1193464, 1279363, -864362, -808528, -4449586, 969052, -1261647, 5223217, +6473590, -3904125, -3962107, -2791729, 1089848, -2506114, -1275068, -1619740, -1610076, -1748052, +1036698, 2405182, -156766, 616865, 719944, -259846, 77309, -1187022, -2645700, -4149475, +-9535901, -5700496, -2082522, 6831146, 867047, 1267552, 4173635, 1120987, 1788317, -9989557, +-9180493, -5848672, -1552094, -46171, 4205310, -3005403, 3285113, -1721745, -6181532, 1914482, +-925565, -4227859, -91805, 5904507, 8575439, 3889630, -3962644, 2299418, 250719, 6190122, +-52613, -4942971, -193274, -2888366, 6072010, 2658585, 2835215, 6163278, -1090385, 445066, +8257612, 7231651, -295279, -38655, 546535, -463320, 2181307, 602369, -6055367, -8015483, +-2848100, -1021129, 5369, -2659122, -8946417, -952409, 2455111, -4866735, -2390686, -3171297, +-2724083, 942745, 1126355, 2942053, -6240588, -4983236, 4781373, -2034204, -1104880, 986769, +-388158, 3126199, -6010270, 2371896, 2204929, -2384244, -2301029, 2390149, -2635499, 3812320, +-1515587, 33286, -17180, -1505923, 740345, 2817499, 1552094, 317291, 1698123, 483184, +-796180, -1540283, -860067, -888521, 335007, 430034, -272194, -226560, 406411, -139050, +12744779, -4890357, -3874597, -620086, 218506, -4765803, 42950, -3334505, 6130529, -1500017, +-7580618, -10558103, -2711198, -6993818, 9745818, 791348, 6915971, 5826123, -9241159, -520228, +3879429, 2805688, 4912906, 914291, -594853, -838592, 2304787, -3063386, 3529390, 1948841, +-3295851, 2039036, 150324, 2381023, 5299453, -2861522, 2105608, -338766, 3027952, 2605435, +-1084479, 3591130, -1017370, 3123515, -2386928, 2848637, -7485055, -3182034, -2733210, 2105608, +6473590, -4755066, -3142306, -1755031, 394600, -2173254, -2867965, -1519345, 2621541, 2123861, +3744138, -1242319, 2134062, -2205466, -2324114, -217970, -1396401, 2590939, -34360, -3910568, +2199560, -2283312, -3849365, -1429687, -2394444, 1693291, -2808909, -7623567, -1080184, -3295851, +-3248606, 1653562, -2103460, -4589173, -933619, 970663, -329102, 276489, -45097, -2881923, +92342, 1521492, -1089848, -1204738, 306016, -58519, 550830, 489089, 1495722, 434865, +-1298154, 862215, -230318, -460635, -501974, -1290101, -1209570, -1315871, 2166274, 3345243, +-1291711, 5071283, -7919383, 3560528, -4727149, -5219459, 7687455, 2869038, -9036074, 957241, +74088, 2743947, -6497212, -4154307, -550830, -5261872, -9604084, -9301289, -6129455, -9282498, +4015258, -953483, 1431835, 5053029, -8144869, 5398237, -2286533, 2536178, 1682017, -813896, +865973, -1163936, -1152125, -5306432, -3166465, 6971806, -2542084, -5767604, -5299453, -501437, +-2367601, 2183454, -5064304, -7861938, 1229434, 7337952, -1090385, 4453344, -2509335, 2433636, +-3910568, 2998961, 1246077, -5371931, 7939784, 1421634, -1642288, 1859721, 7303055, 6725382, +3554086, -711354, -8097624, -1364189, -6746320, 1955284, -1464584, 1133871, 1193464, 1891396, +-6131066, -47245, -438087, 2973728, 6304475, -7865159, 1064615, -2302639, -7351374, -832150, +2166811, -752693, -164283, -707059, 2437931, 475668, -2126009, -1466731, -1535451, -943282, +-2534568, 86973, -202400, 1425392, -3058554, -2155537, -227096, -411780, -373662, 139050, +-228707, 490700, -1106491, -1153199, -290447, -196495, -803696, -209380, -212064, 1362042, +1277216, -26307, 37581, -1422708, -2296734, -823560, 121870, -9019968, -8642011, -5614059, +-9517648, -11278584, -10752451, 4555887, 4975720, -6916508, -1832340, -6261526, -10220948, 5471789, +-2683281, -8863739, 3040300, -602906, 444529, 901406, 3002182, 988916, -329102, 2284923, +3056406, -5095979, -4911832, -1317481, -5987185, -421444, -6381785, -11015517, -892279, 6673843, +-7997229, -6112812, 4303021, -4205847, 477278, 1700270, -4135517, -3311420, -3512210, -11867532, +-5174362, 2554969, -3428995, -3929895, -7518877, 3345780, 6641093, -2411624, 10260677, -5698885, +-2729989, -43487, -2529199, -8702677, -658741, 1996623, -333934, -1830730, -7648263, -1250909, +7433515, 3773666, 2157147, 3882651, 2724083, -1968706, 14258218, -4496294, -5608691, -5290863, +-6400038, 2525441, 8077223, 5552319, 569620, -1320703, -4160213, -1468342, -178241, -1925219, +290447, -2582886, 941135, 5961952, 3799436, -2928094, -680752, -1060320, 2092723, -1234803, +2282238, -2477123, -1311039, 372588, 413927, -615254, 734439, -1430224, 1483374, 61740, +1154273, 1004486, 661425, -696322, -1212791, -295816, -1225139, 16069083, 10945724, -454193, +9999758, -794032, 1500017, 1949378, -5402532, 9124121, 139586, 8055211, 7719667, -6165963, +10014253, 196495, -7565585, -12503724, 11494943, 5595806, 11419781, -9497246, 6575058, 3586835, +-10469520, -10335302, -6110128, -2905546, 11002632, -10405095, 9283572, -856309, -1007707, 6704981, +6312528, 8604967, 3175055, -4644471, 4207458, 8090108, -4860293, 8088497, 12259984, 5243618, +7444789, 3123515, 2113124, 2123861, 327491, -6629282, 2474438, 714575, 499290, 5655398, +-3960497, 3390340, 3759707, -1588064, 10693395, -6228240, -3801583, -2373506, 9235790, -1638530, +7627862, 3896609, 5156645, 4667556, 898722, -13000329, -2020782, -10412611, -5676336, 13630616, +7090454, -6017786, -364535, -7428146, -6691559, -3441343, 11298985, 1058710, 3889630, 2258616, +-1768990, 2374043, 4045859, 7139310, -2007360, 4201552, 2980707, 2626373, -2439005, -1486059, +1118839, -1195075, -61740, 1999307, 2610803, 1157494, 1126355, 3221762, 3076807, 1224603, +85899, 1588601, -667331, 2749316, 4072703, 2018635, 106837, 4559108, -14037027, 8929237, +8573292, 25295746, 1030255, 2224793, -1229434, -3426847, -1613834, 8580808, 7820062, 6820945, +9852655, 4019553, 15538655, 4574140, -6112812, 1517734, 13545253, 5371394, 1400696, 2132988, +-6922414, -9966472, 6436546, -4935991, -9768366, -20712480, -305480, 8279623, -610959, 4893042, +-7161321, -3776887, -2663417, 1574642, -2254321, -6194954, -3016141, -16681116, -4342212, -14156212, +1213865, -7453379, 5713917, -8115878, 3112241, -7802345, -2701535, -477815, 250182, 1221381, +1597728, -10342281, 5019743, -1548873, 2307471, -5400385, 155693, 8276939, 3338800, 11435350, +6409165, -3478924, -668404, -2347737, -1159641, -2673617, -3630858, -170725, 4697084, 3045132, +3492882, 2251100, -16338592, 10799695, 10596221, -3953518, 6070937, 4757750, -8633958, 4180077, +2595771, 569083, -1829656, 1530619, 5587216, -4883915, 3258807, -1356136, 287763, -350040, +1235877, 3020436, -2492155, -1081795, 4149475, -2896956, 212601, 174483, 1576790, -1872606, +-3466576, 2173254, 140123, -1032940, -1034013, 582505, -121333, 2037962, 2298344, 2633352, +38655, -2683281, 27225798, 9816148, -4545149, 13449153, -8829379, 9381282, 6239514, -12809740, +2734821, -16114717, 331249, -5471789, -11348377, 6079526, 207232, 4655745, 6657736, 8266202, +13254806, 5542656, -940598, -3410741, -9022653, -16240882, 5769215, 6383395, 1768453, -5658083, +8786429, 1163936, 9283035, 5539434, -16952772, -6416145, 2285460, -12454868, 644782, -872415, +-2368138, 3696356, 2757369, -2915746, 12502650, -7196755, 497142, 7035694, -6160057, 4842039, +-2688650, -7552163, 5084705, -30602, -978179, 7233799, 4767414, 301721, -3737695, 14941654, +668404, 8422968, 846645, -4604205, -5165772, -12453795, -4825396, 5261872, -327491, 4498442, +-1410897, -9689983, 3894462, 3266323, -14270029, 4203699, 7368554, -3757023, 7859254, 1906429, +-8096014, -8189966, 9370008, -127238, -18738406, 2412698, 2029909, 867583, -1895691, 1184337, +-2564632, 551366, 5610301, -1632088, 909459, 1495722, 1665911, -4634270, 1439351, -1598802, +1315871, 3577171, 3702262, 2752000, 1295470, -3004867, 1423782, -174483, -264677, 1351841, +-3440269, 58519, 2385854, 3350075, -2141041, -1209570, -4031364, 825171, 4268661, -4068408, +1723356, 1608465, -28284508, -9389872, 29560112, 8208220, 4720169, -4447976, -795643, -4541928, +6029061, -9555228, 12922483, 7395934, 6058588, 6228777, -4577899, -445066, -533113, 4159676, +8697309, -13085155, -7770133, -4177393, 9944460, 3595961, 5546414, 5975374, -1366873, -9379135, +3074660, 738734, 18054968, 14216879, 3732864, 10798085, 586263, -5196374, 2233920, -1485522, +-2481417, 6963753, 8548059, 7048042, 17468168, 8449274, 6850473, 7683697, -7929047, -12971875, +-6092948, 5928129, -11074573, -5465883, 10755672, 11485279, 6288906, -5178120, 10147934, -3986267, +1102196, 2443300, 5827197, -2972654, -6338298, 3643206, -5716602, -17891760, 773631, 5805185, +-9765682, 1290101, -1764158, -2515777, -1791538, -5779416, 14564234, -1505386, 8323647, -20871394, +-19872276, -16811038, -7678328, 1729798, 2040110, -531502, 1147293, -338766, -4441533, 2195265, +-4882304, -1420560, -2142652, 5111548, 805306, 1860258, -3922379, -706522, -3491809, -1248225, +2765959, 4418448, 4722854, 4558034, -67109, -3022046, 2466922, 4017942, 2472291, 4000762, +1389422, -361851, 1678795, 589484, 818191, -1179505, -2735357, 3234647, 3587372, -1167157, +-1034550, -777389, -604517, 14556181, 22890566, -33740188, -4788889, 1999307, -272730, -4055523, +-8426726, 9223442, -10812580, -17172352, -1762547, 16741783, -2416456, -9810242, 3093987, -13719736, +-7461969, 529892, 8780524, -14380624, 1578937, 15661598, 16069083, 402116, 5680094, 14035953, +-8051990, -12569759, -17564806, 1684701, -17508972, -3754338, 7349226, 6909529, -15495168, -14623290, +-8894877, 6272800, -4128537, -2746632, -4080756, 13936632, -20750060, -6083285, 3210488, -11199664, +-3872450, 19864, -13096966, 588411, 5364414, -731755, 17133162, -1180579, -6962142, 1436130, +-884226, -5652177, 3273839, 8419747, -7825431, 12015171, -5961952, -22426708, 1035624, -8766028, +-4815195, -643708, -2414309, -29580514, -4980015, 13529147, 11684995, 8164196, 17628156, 17952426, +-24338506, -2754685, 1552631, 5033165, -7082938, -12135967, -242129, 5468030, 6469295, 5516886, +4306242, 2034741, 3471407, -6523519, 23622, 3852049, -2058363, -1536525, 711891, 1227287, +3491809, -3912178, 703301, -1607928, 1631014, 2240362, -5201743, 704375, -541166, -3613678, +1511292, -868657, 674310, 110595, -95563, -4560719, 2295660, 259846, 1195075, -3060701, +-2258079, -2051384, -1905892, -32273458, 8995272, -6016176, 10984916, -10339060, -122407, 16858284, +-5657546, 23958938, 5499706, 4604205, -10320806, 4519916, 11871290, -7338489, -1501091, 15489263, +9979357, 11654931, 1637993, -17940616, 11387032, -11588896, -1093069, -6991670, 1763621, -8923331, +5173825, -2336462, 5042292, 4798552, 8565775, 8684424, 9640591, -11453604, 2724620, 18262200, +3893388, -3292629, -3671660, -9187472, -7406134, -49392, 671089, 3278671, 15371151, 1315334, +8479339, 8210904, -580894, -3928285, -3741454, 13943611, -16296717, -3555159, -14421426, -11891691, +-3338263, 89657, -24196772, 6279779, -7606924, 14809047, -3069291, 635655, 10284836, 2093260, +24845848, 20510616, 29595546, 11181947, 1257889, -3451006, -3000572, -5004174, -1451162, -5949604, +-16291885, 11024644, 13510357, 6424734, -2202781, 1493575, -11472395, -15628312, 7257421, 1912334, +2164664, -5052492, -2145873, -5481452, -2945811, 4766877, 1597728, 6254010, -401579, 1357747, +-3587908, 4345433, -12921409, -3463354, -441845, -571768, -2419140, 2216203, 605590, 773094, +-878858, -3217468, -618475, -1381906, -849867, 3959960, 495532, 425202, -2641942, 787053, +664646, -287763, -5752035, -4281546, -9451612, 12746926, -3721052, -2775623, 29734058, -6124624, +-6527814, 33059974, -460635, 18814642, 13888314, 1112933, 7797513, -4434017, 6117107, 5741298, +3651796, 4660040, 15285252, -10528575, 18417894, -10136123, -301721, 3772592, -2476586, -13349295, +-11913166, -355945, -19345606, -6186901, -21134460, -1461363, -12550431, -9402757, -6867116, -6044093, +3166465, -17012366, 19753628, 3094524, -12809740, -9577777, -597000, -2487323, -3127810, 5102958, +2723546, 19407884, 2240899, -224949, -9905268, 1631014, 4034585, -732292, -10567230, -4588099, +12194486, 13279502, -774705, -11288785, 4628364, -2226404, 17339320, 19293530, -7524246, -4997195, +-3553012, 2188286, -7400229, 7798050, -24005110, -2257542, 28399934, -25616796, -12612708, -5938329, +1851668, 2265595, 3399467, -2319819, 7612830, -4541928, -1269700, 13821205, -2167348, 10016937, +-6771016, 10091026, -8825621, 6911676, 5641440, 13718662, -278636, -2320893, 5799817, 9030706, +808528, -2162516, -1415192, 919123, -4902169, -1495186, 4625680, 6095633, 1921998, -1975685, +5922223, -4624069, 4866198, 4063576, 4440460, 2444910, 163209, -7209640, 7250979, 4285841, +3357054, 1592359, 3421478, 6343130, 1460826, -4976257, 2484102, -4055523, -3124052, 5250061, +-1276679, 4545149, 4926865, -1922535, -3582540, 2027225, -17297980, -9479530, -2705830, 13387413, +16136729, 11059541, -10268193, -26353382, 45624364, 11477763, -28632400, -28727426, -4304094, 6956774, +19432042, -24992952, -4412005, 4667019, -361314, -3594351, 26146150, 5610301, -15349139, 8195872, +1079111, -733903, 13765370, -2511482, 7522635, -17040820, -5773510, 29944512, 11061151, 23613730, +7451232, 21349208, 3731790, -7841537, 15009837, 13681081, 21442088, 10559714, -24218784, -9183177, +5235565, 12517682, -9730248, 3692598, -9375914, -15658914, 1580011, -1810329, -9373229, 7284802, +10142565, 8808978, 6431177, 6039261, -4622459, 16207059, -133681, -16102369, -11697880, 14576582, +7896834, -25289842, 10991895, 4489852, 8124468, -22097606, -15111842, 14209362, 21943524, 12409234, +-4941360, -23630910, 5339718, -1045288, 20143396, -6728067, -27101780, 11356430, 15796890, -5990406, +16441135, 13538811, 5572183, -10821707, 1409823, -142808, 3153043, 1186485, -745177, -5757941, +-2430952, -7226820, -760746, -1428077, 3764539, -4414690, -2660732, -1483374, -3321084, -2019172, +-1772211, -2018098, 8383240, 2524904, 85362, 8169028, -2044941, -7707856, -5192079, -4131222, +-3348464, 354335, -5637682, 2360085, 3400004, 2887292, 2132988, -7403450, -2896419, 6211597, +5105643, -766652, 10897943, 21285322, 8205535, 22471268, 3767760, 10310069, 7679939, 37430640, +50927036, 3984656, 10193568, -32407676, -10296647, 19607062, -16514149, 38554848, -7670275, 6080063, +10386305, 22580790, 12524662, -5376226, -16356846, -19170586, -6326487, -3151432, -24041616, -11393474, +-9566503, 15428059, -8946954, 4595615, -15420006, 2055142, -6063957, -22496502, 23380192, 16217797, +18821084, 8291435, -11482058, -11115912, -26188564, 483721, -23606750, -7170448, -2017024, 3112241, +12071542, 9525701, -7672959, -5435818, 9996536, 22111028, 5924908, 8454106, 16123307, -20565378, +14555107, -11681774, -10815265, -20764020, -9117679, 9495099, 8007967, 1323387, 24254754, -5315559, +-9028021, 3718368, 6327024, 33348274, -10996727, 13368623, 13144211, -32058172, 8590, 4005594, +-7093139, -4724464, 11054172, -6362457, 913754, 13583371, 6990596, -19729470, -23710366, -22867480, +-10735271, -8512088, 19040126, 16623134, -4589173, -7268159, 944893, 2110440, 12549894, -1419487, +-3965866, 7801808, -1464584, -1301375, -3326989, 5651103, 7721815, -4109210, 7391102, 6984691, +7148436, 1262184, -3043521, 6319508, -4381941, 3786014, 8050380, 593779, 4800163, 6445136, +-10949482, -477815, 5327370, 5957657, 8024610, 944356, 7184407, 378494, 462783, -2469606, +4125316, 6041409, 31903554, -7567196, 4663261, -14266808, -4087198, -19018652, 15111306, -27362700, +1257352, -22033720, 4359929, 9433896, 3423626, -13188771, 45197016, -3176128, -6080600, 4103841, +-25724170, 1475858, -17381732, 597000, 4884452, -5211943, -592706, 10644003, -9445707, 405338, +13678397, 1116692, 3460670, -22136262, 2818036, -1873143, -1380832, -5609228, -27460410, -15285789, +6785512, 2242510, 12191802, -31822486, 3469260, -29617558, 15015743, -20201378, -32309428, 16357383, +29788820, 5131412, 14652281, -22317724, 22095996, -5484137, 3298535, -13691282, 18403934, 7408282, +19110456, 5994701, 23186918, -21012590, 4012036, 1152662, -3601867, -16663399, -13583371, -15663209, +17768280, -4742718, 24148454, -15016816, -11518565, 2692945, 3216394, -13434658, 6971269, -7908646, +-31454730, 13810467, 20837034, 34586296, 12099460, 24527484, -14184666, 26307, -15992311, 26275000, +8862665, -5061082, -10480794, 12460774, -8993125, -2555506, 1329292, -7960722, -13394929, -8953933, +-6352794, -5352066, -17838610, -7793218, -14870787, 11421392, -2843805, 6769406, 13340705, 3479997, +-10123238, -1021665, -10131291, -4399121, -15136538, -8413841, -16021839, -2863670, 26208428, 5284421, +-2025614, 5820218, 7844221, -15239618, -6995965, -958315, -2057826, -6371584, 6633040, -3070902, +-23232014, -2084133, -5367636, -52807160, 6482180, -16870094, 48863844, -9197672, -24679956, 9811316, +-1419487, -24587078, -4214974, 4092030, -14811732, 36892160, 5228586, 3539053, 16729971, -20747376, +-31947040, -19682224, 45009648, -3593814, -9596031, 29753922, 16756278, -14192183, -14139032, -7950522, +35668628, 5004711, -8750459, -13963476, -6785512, -27888834, 18769008, -3249143, 7577396, 17940616, +-6395207, -28882582, -3590593, 37249176, -1654099, -9290014, 17893908, -8156680, 22217866, 14625974, +-1951526, -27523224, -14085882, -3773129, -25538950, -14948097, -14737643, 1998234, -3554622, 21510270, +-15018964, -5186710, -142271, 55300388, 19175956, -9516574, 11149735, 6524056, -3293166, 28085864, +13615583, -10624675, 4365835, 22708566, 25617870, -15652471, -11206643, -37548216, -30183956, 17166984, +-11292543, 18532248, -534187, -22073984, 5375152, -1743220, 6983080, -14685567, -11233487, 20794622, +5235029, 2762201, -2084670, -2424509, 13785771, -6620692, 7091528, -3528316, 8595303, 17470854, +4625680, -12620761, 2064269, -4847945, 9501005, 7862475, 2589865, 11373610, 17666812, -6942815, +14249091, -1379758, -18945100, -4895189, 592169, -10585484, 4250407, 13791140, -272194, -6979322, +843424, -2579128, 17974438, 15420543, 1561758, 7299297, 9258339, 4843650, 12006044, -15411953, +-11476689, 5516349, 3095061, -3275450, -1370632, -2537252, -5765994, -5684926, -59680720, 20480014, +-12782896, 31747324, 32278290, -18722836, 15235860, -31965294, -47995724, 1163936, -33758980, 4429722, +-4236985, 26101054, -19398220, 18620830, 15971910, 26178900, -39882528, 4342749, -24414204, -22369800, +2406792, -28876138, -18634252, 26196616, -7661685, 9943923, 30586610, -6075231, 10064182, -25218438, +2889976, -27804544, 25761750, -23048942, -15311558, -17015050, 28738164, 23036058, -16511465, 31501438, +20855824, -6666326, 31257162, -1743757, -33085744, -9141838, -3904662, -25776246, 5801427, -54536956, +5468567, -13874355, -26179436, -21137144, 24375550, -14559939, 50542100, 37563248, -56511568, 25770, +-1478543, 2714419, 26121992, -44361644, -30942556, 30522186, -25433186, -31774704, -36597952, 2481954, +75163536, 37371048, -34979288, -22007950, 3047816, 27374510, 10460930, -36557152, 5439039, -24414204, +-14358076, -1273458, -4403415, 1437203, 24127516, 5733245, 14307610, 9516574, -28135794, 7592429, +12632036, -3942780, -10138807, 1521492, -24008868, 21409876, 7762080, 5880884, -31843424, 5352603, +16428787, 4673998, -7521562, -5916855, 14122926, -23194434, -1495186, -17286706, -9580998, 22805740, +-24059334, -943819, 14344654, -12032888, 11247446, 13701483, 3558917, 2088428, 10030359, 3318399, +-12801150, 18737332, -14424648, -11258720, -6545530, -19704774, -6808597, -18464602, -17700098, 6441377, +27705224, -31722628, 15244986, -52969832, -8336532, -20909512, -18252538, 27302570, -36308580, -56439092, +32251984, 48736604, 11502996, -10035191, -45134200, 2535105, 17087528, 16998406, -7909183, -18435610, +1834488, -4940823, -6259378, 5177046, -6991133, -15537044, -29681446, 3182571, -18014704, 3833258, +-16186658, -33934000, 20365662, 14726906, 25133074, 351114, 27217208, 14911053, 3783329, -9503152, +-14465987, -23549842, -16761110, -9807021, 6177774, 15297063, -10975789, -5750425, -38395396, 35163436, +42000484, 22991496, -21893058, 22036404, -29772714, -1025423, 6485401, -64990908, 4981625, 5852967, +30182346, -39003136, 49371184, 18953154, -35807680, -20685100, 14715632, -6731825, -26287348, -32471026, +-34639448, -47457240, 34333432, -15293842, 5234492, -72285376, -28754806, 3920768, 597000, 15973520, +-11619497, 2421288, 12075837, 12390981, -34459596, -8358007, 5414880, 18523120, 13640816, -3445101, +-13322452, -6110665, -2994666, 17259326, 2886755, -11596412, -1451162, -9121974, -3461207, 15923054, +7415261, -8611409, 17419850, -17943836, -10317585, -13514115, 16853452, -7227356, 1965484, -8281771, +7346542, -24772298, 3558917, 9674951, 3807489, -4734128, -10632192, -9602473, -12427488, 11839077, +2647311, -4573067, -14209362, 14245870, 833224, 609885, 2107218, -25211994, -12131672, -16657494, +2123861, -8650601, -5191005, -49203684, -6680285, 17721036, -23166516, -21619254, 20138564, 20377472, +4060355, -19556596, -66505420, -9937481, 12884902, 7735773, 28697360, -818728, 16646219, -4524748, +-510027, -8558259, 1156957, 17374216, 1948305, 507880, 17000018, -4776004, -4195110, -22671522, +-2142652, -3841312, -2582349, 3624953, 13560285, 18371186, -3715684, -244276, 14548128, -3562139, +-28192702, -2196876, -25030532, 3368865, 3357591, -33028298, 23708756, -45410152, 10064182, 12132209, +-19828790, -1687922, 58486716, -16869020, 19724100, -12663711, 10427644, -44146896, 4700305, 25335476, +-710280, 21810380, -5173288, 1971390, -1444720, 27953794, -18219788, -22220014, 25097642, -23550380, +-28645822, -733366, -45744624, 30147986, 25373056, -9541807, 9797894, 3833795, -268435, -39352636, +-6406481, -3383361, 17177184, 6027987, -16414828, 15046881, -1100049, -20272782, -13440026, -12776991, +2659122, 2247879, -2682744, -900869, 12474196, -12755516, -3506841, 8107825, -13079786, -7558069, +10132365, -13937169, 927176, 11440182, 794569, -3838627, 5232344, -957241, 1236951, 9906342, +-3741990, -3670587, -7893076, 2964064, -4956929, -5311801, 4631586, 5192079, -11119670, 1296543, +-10375030, 9596031, -11818676, 6113349, -2147, -2654290, 1276142, -3134253, -1298154, -1010928, +-24344412, -73437496, -34567508, -11567958, 23879482, 53955528, -49584324, 10736881, -14407468, -50005232, +-7064148, 44777180, 12000139, 36872296, -31261994, 9196062, -10866267, 2102387, 21749178, 3611531, +11792906, -7140383, -63677724, 18786724, 3073586, -27084600, 27679454, 21090974, -19274202, 19491098, +2308545, -20795694, 6314676, -12878459, 39758512, 4809290, 16085189, 696322, -40853728, -32772212, +-11042898, -24304146, 26548266, 38097972, 39226472, 31512712, -10946798, 4332549, -32097902, -4915590, +-3239479, -13582297, -16917876, 2649458, 3092377, -44178572, -12920872, -17325362, -1216013, 19662898, +-21701932, -5098126, 7625715, -47245, 22699440, -25248502, -1024887, -28591598, -14975477, -21165062, +11605002, 7471633, 22677428, -3177202, -2358474, -26966490, -8054138, -12869870, -3382287, 11218455, +15530602, 31785442, -20477330, 5679021, -17743046, 6232535, 11955041, 3192235, -9766756, -4144644, +-3433290, -4148939, -1451162, 8264054, 8860518, -2688650, -1047435, -4440996, -6289443, 3919695, +8818642, 2806224, 978716, 2199023, -7445326, -8864812, -8112657, 13202193, -383863, 9066139, +7648263, -1492501, -10449119, -11423539, 1665374, 2910914, -8671539, -3003256, -7547868, 5342940, +-5470715, 1664300, 1581622, 5586679, -2953864, -3687230, 1423245, 1856500, 19069654, -30870078, +-121735480, -64207612, 13144211, 51173460, 114566640, 87520696, 49303540, 16576426, 25710212, -8192650, +-48204028, -93235152, -124003760, -31402116, -35947804, 1829656, 60381872, 86106576, 57753352, 77144592, +17760226, 16320876, -9034464, -39085812, -44229572, -35800700, -38006704, -47027744, -37682432, -16148540, +-2424509, -619549, 30116310, 39039104, 74721696, 35265440, 11625403, 30636002, 47688632, 15158013, +9101036, -38524248, -52668648, -86129664, -39782136, -45198088, -32673964, -19499688, -15266461, 6323266, +10608032, 36142148, 74115568, 59569048, 65069828, 48119204, 59035400, 43867724, -35504348, -32614908, +-82030120, -63602560, -46495704, -104545944, -80806592, -49507552, 3929895, 63265944, 60369524, 71256728, +89193584, 76190576, 41084584, 49425408, 1976222, -19454592, -52309480, -76060648, -76292576, -63052268, +-37826852, -8249022, 10888279, 18323942, 21182778, 35179540, 25507274, 41162968, 26134876, 10223633, +6768869, -1685238, -4026532, -1090922, -28506772, -20043538, -3994320, -13382581, -34053720, -9693204, +-12197170, -12805445, -2317672, 25358560, 48223356, 39826156, 4258460, 39140036, 27724550, -5282810, +-32276680, -51323784, -47537772, -21697102, -23513336, -14889041, -8125005, 13423920, 29911762, 41248864, +47119012, 33740728, 13318694, 14351096, -8957154, -25884694, -43292196, -39007428, -17136382, -1905892, +-12637404, -4318590, 12534325, 15674483, 16426102, 15391015, 4071092, 6305549, 10040023, -1909650, +-8971650, 105764, 3290482, -6816650, -7377143, -1222455, 3005940, 1996086, -4589173, -2531883, +2313377, 876173, -3190087, -4255239, -1751810, 462246, -71941, -90194, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -1562831, --2220498, -4257923, 2469606, 3956739, 7029788, 1888712, -4956393, -8808441, 1897302, -4122095, -338229, 2747705, 1063004, 7102802, -5896990, -1464047, -811749, -481036, -5063767, 3098282, -1307818, 635118, 125628, -2482491, -1908576, -1802813, -586800, 231928, 1180042, -1876901, -2700998, 6356015, -213138, 2814814, -4527433, -2638721, -5416491, -2625836, 5734318, 258235, --1180579, 1004486, 6084358, 639950, 3055869, -786516, -2866891, -913754, 3470334, -3006477, -5450851, 3343632, 6147172, 3020436, 384936, -1902134, -4087198, -2280091, -3553549, -565862, --2594697, 1005022, 222265, -1414118, 897111, -1218160, 2196876, -571231, -610959, 3089155, --312996, -244276, 412317, -3033858, 1369021, -2226941, -3554622, -2069637, -1563905, 1522029, --294205, -271657, -4030290, -695248, 1050656, 767725, -1600412, 125628, -1581622, 682900, -1133335, 817118, 320512, -306016, -641561, 158914, -1242856, -701153, 278099, 157840, -557272, 510027, 503048, 81604, -12274480, -2782065, 5031554, 879395, 6860674, 3657165, --5651103, 1486059, -124554, 2244121, -2024540, -9427990, 5438503, 3328063, 6231998, 7785702, -6707129, 2346126, 89657, -9606768, -991064, 4402342, -4378719, -3805341, -10026601, -680215, --1678259, -1167157, -2552821, 1180579, -5985574, 2721936, -1050656, 2524904, 744640, -4031364, -3104188, 2582886, 6953015, -817654, -5570573, -2885681, 3013993, 1203665, -1394254, 279710, -2218888, 279710, -4070555, -47782, 856846, -442919, 257698, -2578591, -1126355, -3430605, --704375, 4201552, 1505386, -1449552, 1799591, -558346, -216896, 628139, -4887136, -460635, --242129, 2721936, 5292474, -1576790, -533113, -3425773, -2643016, 1338956, 6022618, -5341866, --833224, 1355062, -288300, -1460826, -91805, -1424319, 1962263, 2044404, 1089848, 3332358, --1589138, -1043677, -340376, 772020, -762894, 124017, 544387, 461709, -395137, -1422708, -1050120, -1416802, 6787659, 2547453, 2294050, -2276333, 178778, 638340, 650688, -11654931, --6302328, -528281, -2899103, -3607236, -178778, -3037079, -11860015, 7068980, 1626719, 3199751, --1246614, 2434710, -3134253, 150324, 428423, 6111202, -2171106, -1287417, -1019518, -1032940, --975494, -432718, 6624987, -1282585, -97174, -3772055, -209917, -1821066, 2153926, 1089311, --6415071, 4976257, -6493454, -124017, 5696737, -815507, 213675, 434329, -130997, -3979287, --2827699, 6539625, 3781719, -8104067, -4330938, 1282585, -4758287, -3452617, 3468723, -5832566, -1133871, 1413044, 3335579, 6965363, 5339718, 3266860, 2495376, -4745402, -4947803, -4236449, -1377074, 6061273, 2342905, -1039382, -2706903, 1987496, -2288144, -997506, 1411971, -2246805, --3405909, -457951, 2730526, -494458, -2324651, 309775, 22549, 2660732, 1108102, 2457795, -559956, -1126355, -1155346, -923955, -482647, -308701, 790274, 1546188, 1837172, 1932735, -8908836, -2181307, -2276870, -2670396, 2512556, -2987687, 4356171, -8450348, -1082869, 6268505, -3281892, -6355478, 4702453, 7719130, 7284802, 4645544, 890669, -289910, -4764730, -6144488, -2605972, -591095, 6158446, -483721, 3682398, -3838627, -2554432, -2059974, 609349, 1961726, --349503, -7503845, 1582159, 2598455, 1887101, 3234110, 1983738, -4072703, -10027138, -3229279, -1467268, 1932735, 470836, -431107, 1901060, -4114579, -68719, -7471633, 3490198, -7708930, --2034204, -3269544, -5073430, 3699578, 1634772, 1568200, -4430259, -2155000, -1305133, -4443144, -418759, -378494, 2371896, -1905355, -3741454, -2856153, -8873939, 2816962, 1026497, 3809636, -5618354, 7176354, 2799782, -2829310, -4228932, -1996623, 3898220, 3889093, -4407174, 4803921, -202937, -3125126, 6926709, -1344325, 1561221, 1174674, 2031520, -124554, -1548873, 448824, -2151779, 772557, -341987, 2331630, -1222455, -957241, -1693291, 799401, 209380, -865973, -1274532, -1236951, -2230162, -935229, 1689533, -406948, -389231, 609349, 4460324, 4121021, --706522, 2918430, -8606578, 1023813, -4108136, 462783, 1286880, -5402532, 1980517, 15855946, -1736241, -1387811, -8915278, 12767327, -24159, 5370320, 638340, -252866, -6927782, 6745783, -1731946, -3707094, 884226, 523986, -2763812, 2736431, 7099044, -2049773, 7548942, -2218888, -3230889, -104690, 4978941, 4436165, 4958003, 69793, -2697776, 3897683, -2843268, 3434900, --976031, 3462818, 3354370, 3227668, -416075, -972810, 1289564, -2773475, -4030290, -10290205, -6735583, -6648073, 4661114, 610422, 1963337, -1187022, -12290049, -2646774, -3317325, -5972689, -814970, 3740380, -7894150, -2483028, 3564286, 672162, 5585605, 9763534, -265214, -2624762, --2330557, -10119480, 3109556, 1975148, -2264522, 546535, 4025458, 4142496, 1197222, 1067299, -2914672, 350040, -445066, 4361540, 2563022, -2374580, 4449586, 3266323, 4368519, 1356673, --741419, 329639, -281857, -278099, -1611150, 586800, -977105, 1029182, -1235340, 2052994, -734976, 212601, 1691143, 166430, -507880, 493384, -360240, -128849, -574989, 2044941, -1247151, 433792, 1451699, -439160, 2307471, 319975, 743566, -4495220, -5429913, -526670, -2924873, -1739462, -2619393, -3958886, 1158567, 7198902, 3231963, 1131724, -16364362, -7515119, --2277407, 3346317, -1949378, 5535139, 18685792, 5807333, -6853157, 1063004, -8108362, -2633889, -5695127, -6465537, -1633161, 8329016, 2019708, -2090575, 1194001, 4708895, -2825015, 2281165, -2487323, 2442763, -4626217, 2114735, -2159832, -2654290, -6839199, -2670933, -3993783, -7633768, -3347927, 259309, -508954, 7699803, 5635534, 1971390, 6194954, 33823, -7825431, 6594386, --737661, -5369783, -4223027, -7794829, 363462, 9380209, 650688, -4134980, 3997004, -6991670, --4365298, 3613678, -5645198, -7529078, -3943317, -2375654, 4252555, -6652905, -2044941, -3098282, -8559870, 1230508, -2957622, 4192425, -2558727, -3120294, 492848, 6770479, -1265405, 447213, -3755949, 2144263, -8638253, -330712, 5280663, 2507187, 3080029, -704912, -1671816, 3877819, --2308008, 668404, -1891396, 1105417, 1461900, 2004676, -4378183, 25770, 459025, 1103270, -270046, 46708, 2051921, -384400, -389768, -1933809, 1508070, 5688148, 4107599, -10622528, -10069014, -3799972, 923418, -4646081, 8622684, -1228898, -5819144, -18964428, -2535641, 9834401, -2430952, -14785962, 6731825, -15032, -3033321, -4744865, -3847754, -1464584, -8798777, -1487669, -7101192, 9250823, 11006927, 6681896, 10036265, -3294777, 7903814, 3809099, -15620259, -372052, -4056597, 5541582, 2697240, -5386963, 299037, -1127429, 5502927, -9362492, -3373160, 6954089, --2305324, 3908957, 2046015, -6237367, -6933688, -3578782, -10385231, -2956548, -3196530, 4257923, -1535451, -6005438, -1389422, -12821014, -3242164, 5231807, -3757560, -12669080, -201327, 7192997, --15381352, 4456029, 2544231, 4883378, -7300908, -3389803, -6940667, 534723, -2095407, -7849053, --2080912, -1321239, 4702989, 2661806, 11475079, 728534, 103616, 1831267, -890669, -5824513, -7245073, 2531883, -3012383, 6365679, 1132798, -3164854, 1026497, -199179, 3848291, 887448, -735513, 2411624, -2090039, 87510, -2243047, -5369, -1794223, 1771674, -751082, 767725, -2141578, 309238, -1410897, 2018635, 470299, 2148558, 543850, -620086, -11756399, 2643016, -9449465, 12170864, 9075803, 9268539, 3591667, -6398965, 6498286, 11249056, -16604344, 8355322, -8355859, -17791366, -4653060, 4393215, 19224810, -1480153, -1202054, -4559108, -5361730, 23778550, -11800960, 3321620, 2991982, 12341052, -205085, -1859184, -4587025, 1858110, -10667625, -9633612, --2182917, 3002719, 7170985, 3259880, 1643362, -3627637, 712428, -7832947, 3286187, -11616813, -11416023, -1262720, -5655398, -6673843, -7607461, -11720966, 2050847, -11345693, -3796214, 7806640, --1787780, -3879429, -3714610, -1808181, -9688909, -6739341, -4353486, -4130148, -2193655, 3580929, -2018098, 600759, 542777, -8574902, 14802068, 8501888, 231928, -1079111, 19461570, -2335389, --3332895, -4763119, -9824738, -2690260, 6522982, 6257231, -936303, 7612293, -15091441, 4479114, --5741298, 1455994, 5843303, -2018635, -110059, 955093, 519691, 1874753, -2353642, 2824478, -3645354, -3395172, 1426466, 1915019, 2385318, 6185827, -4622996, -417149, 676994, -108985, -1468342, 692027, 1532230, 1953136, -1665911, 1256815, -505732, 155156, -3291019, -710817, --759672, 2822331, 21895206, 7478612, 4633196, 10627360, -11993159, -7216619, 6861211, 7298223, -16252156, 2352032, 4533338, -10940892, -624381, 5399848, -14341970, -4627828, 5768678, -4796405, -199179, 3923990, 10632192, -3606162, 4166118, 2166274, 2353105, 9054328, 7910793, 9649718, --7588671, -5098663, 10481331, -13291313, -4395899, -4418985, -877247, -3612604, -8473970, 8238821, --285078, -9178882, 443455, -3631932, -9532680, -11912629, -6604586, -7152731, 14056354, -4502737, --3569655, -8352638, -685047, -4266513, 2178085, 16538845, -3100967, -5449240, 2822867, -1013075, -9560060, -11123965, 18775450, 3733937, -18065706, -13163538, 4763119, -12190728, 197569, -13050795, -57445, 2753074, -1669132, 14033806, 17624936, -8413841, 2133525, -3488050, -13049721, -4904316, --7110319, -8543764, -1964948, 6373732, -4435091, -10063645, 6633577, 401579, -5442798, -4625680, -2180770, 3687766, -1627256, -1086627, -5126581, 241055, -4734665, -985695, -2376191, 3258270, -3711926, 853088, -4702453, 461172, 292058, 2990371, -78383, -1203665, 241592, -5931887, --659814, -3364570, -2371896, 414464, 1314797, -3139621, 2391760, -1846299, -1701344, 3955128, --1613297, -3948149, -19105626, 7332583, 39757440, -6784975, -373662, -17289390, -7225209, 11864847, --1632088, 22836878, 13751412, 12711493, 170725, 9828496, -18539764, 17027398, 8865886, 886911, -2299418, -10713259, 4776541, -76236, 17358110, 9720585, 11595338, -4102768, 1207423, 3088082, --11517492, -9278740, -4177930, 5383742, 20235202, -5504001, -6715182, -6778532, -3751117, 2700998, --12724377, -3638374, -758599, -6775848, -13473312, -2784750, -17114908, -6175089, 10215043, -11882564, --5135707, -2276870, 1058173, -19306952, -11593727, -2447595, -1927904, -3620121, 12328704, 5459441, -915365, 7459285, 12699681, -7669738, -3103651, -10490994, 4924717, -8232379, 7197292, 8220568, -9890773, 17854716, 5156108, -13290776, -2056753, 29866666, 9825275, 16830366, 8200167, 5172751, --1023813, 2123861, -6919193, -8919036, 4196183, 3059091, -8812736, 2470143, 6386617, 5743982, --8453569, 6815576, 2430952, 4937602, 5767068, 50466, 2860448, 4776541, 2075543, 5592048, --406411, 1279900, -1582696, -3627100, 954557, 4894115, 870268, -2000381, 7901666, 5035849, -4375498, 264677, -774168, -1177895, -38118, 359167, -1095217, 2815351, 2291902, 2237678, -2526515, 1288490, -3952981, 20482162, 22446036, -22628036, 5566278, 16626892, 10053445, -6300717, --12030203, -10408853, 23395224, 1930588, 8814884, 12274480, -6962679, 3473018, 5152887, -14294725, --15183246, 12370043, 4222490, -22125524, -5087926, 28786482, 13820131, -47245, -16393890, 5395016, -4340065, 17507360, 5806796, -8524436, 11476153, 2034204, -4796942, -1656784, -3440269, -13645111, --6429566, 2096481, 2380486, -16290811, -17563196, -10406706, -5021354, -19348828, 11527692, -1207960, --13717589, 2622078, 355945, -5962489, -1635309, 4154844, -79457, 4372814, 5107790, 7796977, --7618735, -9081171, 12030740, 24324010, 11048803, 6640557, 17779018, -3332358, 9705015, 23640036, -14495515, 2222109, 2678449, -7398618, -14433774, 14060649, -13747117, 6187974, -5482526, 4294968, --18006650, 8648454, -195958, -5908802, -3364033, 10249403, -9689983, -4905927, -2480344, 1551557, --197569, 3026878, -3820910, -497142, -6909529, -1770600, -369367, 1268089, -2045478, 2395518, --2568927, 2076080, -2296197, 7858717, 2497524, -2031520, -3619584, 2969970, 367220, 2723546, -2509335, -1887101, 2263985, 2890513, -1902134, 754841, 3616363, -1086090, 1305670, 3933116, -4179540, 7190849, -4619774, -21237540, 5958731, -10239739, -4723927, -7915088, -1336809, 18177912, -18002356, -36427764, 11266773, 11559368, -11320997, -18533320, -24167780, 4261145, -7105487, 4471598, --8441221, -6635725, -3931506, 22546968, 5701032, -1965484, -398358, -3593814, -6751689, 5701569, -3738769, -107374, 9032853, 1964411, -1921998, 3220689, 8195872, 23269596, 2325188, 2863133, --11515344, -4924717, -5460514, -5791764, -722091, -1940252, 7690139, 11130408, 509491, 12859132, --3007551, -2177549, -2656437, -1436130, -22578644, 25437480, 634045, 1799591, -1894618, -6616397, -6729140, -1746978, 10304700, 582505, -9900973, 2670933, 10925860, -7792145, 10144713, 2470680, --15581604, -2659122, -3352759, -28297392, -9687299, 7232725, 7284802, -11563663, -6673843, 6752763, -914828, 18910204, -15093052, 6862821, 8418136, -1224603, 7358890, 6856379, 8344585, 3221762, -3700114, 3383897, 2748779, -1259499, -1569274, -4884452, 1921461, 7067369, 1231582, -5185636, --2045478, -2930242, 1647120, -2272038, -1951526, -3454228, 4546760, 2595771, 3090766, 333934, --8266739, 3288871, -8402030, 641561, 1304596, 2952790, -4005057, -1916092, -1277216, 2709588, -4974646, 2266132, 2074469, 703838, -5935108, 18496276, 5288716, 5660767, -13650480, 10079215, --5499169, 9600326, -7650411, 12397423, -11404212, -9314173, 17064442, 2068564, 4316979, -10268730, --22884660, -2255395, 6605123, 1700270, 9728101, -8225936, 1202054, -188979, -17103634, -12362526, -5578089, -19327352, -12673375, 6054830, 19327, -20207822, -2939368, -10113574, 12764106, 7605314, -2253784, -4781909, -12665859, -26879516, 9387188, -12093554, 14601815, -4519380, -4960687, -2578591, --7169374, 3980361, 3778498, -21511344, -9512816, 20980378, 18373334, -19140522, 24677808, 1177895, -18154826, -4468377, -4435628, -2399813, -7253663, 9363029, -7150047, -20081120, -10675141, 23631984, --5382668, -4878009, -1395328, 7247758, 4641249, 11886322, -27341762, 7941932, 18496814, 14526116, --6049999, -1635846, -5957120, -12453795, 1315334, 11226508, 17513266, -10913512, -11028402, -12498355, --1345935, -2132451, 1065152, -6053220, 2988760, 2988224, -2189897, -980326, -2751464, -5523865, -5184026, 2684, 702764, -8330089, -7020661, -1955821, -9075266, -3606699, -4604205, 889595, --3292093, -102542, 6804839, -2916820, 2774012, -213138, -6558952, 1144609, -3364570, -960462, -2663417, 5938866, 744103, 2417530, 5549635, 5504538, 7354058, -2499671, -2148558, -1488206, -7541963, -1320703, -12496207, -835371, 12792023, 9925133, -9677098, -16480863, -13827647, -8127152, --16022912, -903554, 7566122, 17563196, -3054259, -852551, -29430190, 17607756, 21932250, -3493956, --11941620, -12138651, -7523172, 33014340, -20125144, -87510, -2384781, 8898635, -1490354, 38033548, -918049, -20727512, -5461051, -19699942, 25679072, 22316114, -18035104, 20990578, 5256503, 16892644, -6320581, -31787052, 9958419, 16971564, -22006338, -6129455, -24968792, -12502113, 863288, -23026394, --19625316, -588411, -15899432, -252866, 5592048, -5723044, -15768972, 12918188, 11743514, -25999048, --19842748, 10822781, 4585415, 6943352, 13172665, 17166984, -6320045, -9371619, -524523, -6087580, --317291, -1966021, -8698383, 3421478, -36034240, 12246026, 17550310, -18632642, -15303505, 11588896, --11712913, -10672457, -5049808, 6467147, 942208, 22331682, 199716, 13031468, -1255741, -9151502, -4885526, 6709813, 7035157, -5918465, 188442, 686658, -784368, -3812857, -8885750, 5857799, -9440338, -4849018, -15665893, 3968550, 1397475, 16616155, -1551020, -6540699, 5192616, 1823751, -8373576, -37581, -5025649, 95563, 6843494, 5033702, 1749125, -1815697, 1341640, -3122978, --2545842, -7843147, 3982509, 3717294, -5282273, 2560874, 2425583, 1410897, -836445, -2653753, -753767, -7519951, 8381092, 20337208, 37970196, 59759100, 2063195, -23768886, -30681098, -6992744, -1499481, -7121593, 29157460, 21923124, 15254650, 25366614, 18543522, 15028627, 1266479, 12157442, --15193447, 22003118, 25425132, 1958505, 26441966, -10526965, 2421825, 6318434, -24135568, -16163573, --5509906, -14272713, -16831976, -2288681, 27174794, -117575, -4904853, 3597035, 6034429, -3399467, --36175972, -4751308, 9829570, -5136781, -10879689, 4744328, 14398341, 25280178, 6474127, 13005698, -18020072, 22071300, -29844654, -20667382, 12162811, -8522289, 38661148, -3738769, 33287070, -26349624, -16044387, 27125940, 1335198, 4621922, 16443819, -28827284, -13193603, 1015760, 16930762, 727997, -19442244, 8013872, 7515656, 19743428, 7365332, -2321967, -7872675, -22759032, -4992900, 1600412, -6447283, 727997, 846645, 779537, -12208981, 6797323, 4728759, 11143830, -3397856, 8448738, -13726179, 8214662, 3736085, 222801, -1247151, 3088082, -4276177, 3006477, -4071092, 401579, -3109020, 2991982, -3558381, 6274411, 6177237, 7576859, 1174674, 846645, 3414499, -2357937, -5340255, -3454228, 5390184, 11813844, -1047435, -1954210, 1241246, 10305774, -5821292, 2626909, --846109, -1230508, -1553704, 1638530, 3123515, 4779225, 3787088, 3706557, 9659381, -6299107, -11395622, -5129265, 42939472, 14498736, 15281494, 31390842, -1972464, 6897181, 13842143, 20277614, --21904334, -17510582, -7263327, -19236084, -3115462, -25950730, 13815299, 21271900, 15625628, 21127480, --13714904, -7479686, 16402480, 12807592, -8479339, 21423296, 13003013, -4546223, -25515864, 14663555, -16023449, -12823162, -1654099, 7851200, 4020626, -20513300, 24297166, 6730214, 26058640, 14382772, -10387378, -13677323, 12308303, -7111929, 39556648, -30613990, 3672197, 12186433, -5597416, -19642496, -13027710, 12847321, -2181844, 12647605, -11704323, 32368484, -14576045, 8788577, 7227893, -19983946, --8562554, -27725088, 12195023, 8574902, -20635170, 19854024, 16924318, -14095546, 12203613, -1196685, -32729798, 10979010, -16019154, -11551315, -11406359, 10598906, -6554657, 9092446, -3933653, 2292976, -11092290, 7249368, 5634997, -10318659, 28132036, 3474629, -10645076, -15500537, 13679471, 7101729, -12916040, -6893960, 3898220, 10506027, 21238614, 5753646, -3325379, 17945984, -4599373, -4691715, --2355790, 2117419, 4861366, -10091563, -9088688, 4392141, -7849590, -4447439, 1092532, -3422015, --1018444, -952946, -7724499, 5846524, 3202972, -14695231, 3688840, -10882910, -6979322, -3189013, -5577015, 3361886, 10423349, 4958540, -295279, 3355443, 3830574, 4842039, 399432, 1655710, -2379412, 9250823, -2899640, -38056632, 16586627, -32500554, 33107218, 39826156, -2399813, 6757594, --32858648, -545998, -7544647, 3081639, 18680424, 19154480, -6010270, 9818295, 15489800, 2260227, -6354404, 4311074, 6272263, -4359929, 22712860, -3440269, 4970888, -13042742, 25601764, 5367636, --2657511, -1078037, 23030152, 8683887, 10761577, 25489558, -5940477, -16106664, 31367756, -33767568, --14682346, -6030671, 7259569, 22003654, 4996658, -9332427, -9542344, -16407849, -485868, -3156801, -6314676, 35414688, 34484292, 21799644, 31108984, -3034395, 46909096, -15891916, 13022878, -11333345, -1043140, 14628122, -7299834, 1587527, -14162118, -18351858, 272730, -11579769, 9583146, -15677704, -23200876, -17589502, -28144384, -11758547, -7228967, -2660195, 33847028, -20552492, -4713190, -2998961, --21246130, -5471252, 12385612, 26507464, -2332704, -1259499, 1046361, -8825621, -18243410, 644782, --771484, -2877628, -1869385, -91268, -10519986, 8404177, -8998493, 10405632, -4128001, -8139500, --8789651, 2085744, 8396124, -5967320, -7515119, -2757906, 6977711, 7581691, -5483063, 3517578, -4683125, 2652142, 4673998, -4465156, -3885335, 2067490, 533650, 4751308, -5869610, 4168266, -7767449, -411243, -2430952, -4028679, 6822019, -13728863, -6347425, 13431436, -8063801, -1015223, --2045478, 2553358, -8279087, 6023692, -2559801, 12380243, 10734734, 176631, -13336947, 58553288, -81298896, 24929600, 63377612, -13875429, -44066900, -30888332, -21584358, 10690710, 11662447, -14696304, --23663122, 20509006, 27597312, 16113107, 27533962, 21223044, 5252745, 8438000, 4169876, -1388885, --18097918, 7980586, -21447992, 15110769, 150324, -20100446, 23296976, 14068702, 11150272, 40200356, -24729348, -11551851, -7755101, -14499273, -17150878, -21036750, -8284455, 805306, -16613470, -5185100, -34751656, 52674016, 38830800, 5285494, 26502632, 28233504, 43215424, 19757386, -22894860, -37628744, --23444616, -24022826, 14200236, 11891691, -51395188, -35285840, -9073655, 21636434, 46774880, -35065724, --1384590, -30440580, -3948686, 38196756, -21044802, 14368813, -30529164, -5019206, -9123584, 25743498, --28618440, -16350940, 461709, 11341398, -23236846, 53303764, -12572443, -883153, 30324616, -13377749, -22793392, -7324530, -18853832, -14697378, 8842801, 816044, 7533910, 4670240, -16842178, 399969, --7130183, 20366734, 11926587, 3536906, 11125576, 12658342, 664109, -240518, -4095251, -12824235, -25995290, -8143258, 5401995, 118648, -15161771, 512175, 1582696, -4867809, -10001368, -2263985, --5910412, 1329292, 3786551, -4542465, 784368, 17635672, 12567611, -2412698, -2968359, 16693464, --7168301, -2268280, -14341970, -20610474, -7820599, -5559835, -2439005, -5774047, -23241142, -44906032, -5250061, 24711094, -20918638, 38393788, -15609522, 15161771, -5366562, -44740676, -23061826, -2325188, --26461830, -60330868, -17121350, 21553756, 33135672, -16447040, -26016764, -53841172, -16222628, 15705622, --10940355, -15701864, -26949846, 6198175, -6300717, -4654671, -5288179, 10722386, 21288006, -16905528, -16389595, 14095546, -17246442, -49119932, 3716757, 3859565, 12359842, 5808407, 31768800, 3140158, --49014168, 229244, -53951232, -335007, 18321256, 22379464, -4468377, 2897492, 24620364, -13113609, --9816685, -16872780, 15818901, 11680164, -8051453, 19179176, -6331319, 8043937, 8623757, 31438624, -3860102, -11231876, -34057480, -11663521, 17145510, 15138149, 26417270, 38963408, 67159864, 33571612, -15878494, -17626546, -68166496, -18624052, -10163503, 51803212, -9092983, 3191698, -612033, -16391743, -1830193, 15168751, 6853694, -388695, 332323, 254477, -324270, 25117506, -9503152, -7508140, --8775692, 17424146, 6236293, 8812736, -7308424, -21445846, 6612102, 9066676, -10226854, -1437740, -4984310, -1225139, 1184874, -3794604, -31321050, -10095321, -2971044, 14170171, 21678310, 2667712, --18961744, -17963700, 7713762, 3036542, -2224793, -3001645, 479426, -1853815, -1456531, 16542067, --18675054, 2378338, -16137803, 16565152, -9633075, 449361, -23008140, -3409667, 14515916, -4595615, -7541426, -12758200, 3543348, -43776992, -13377749, 30306362, -15038291, -12641162, -3306051, -9893994, --35098472, -39043936, -57045756, -18084496, 51003, -4508105, 37243272, 10164577, 48664664, 29956860, -15035070, -6908455, -18053358, -3461744, 68274408, 4135517, 19645718, 10991358, -8622684, 33931852, --14247480, 27365920, -30048128, -3096135, -21664352, 25744570, -36471788, -7789997, 11094974, 11355357, -11656004, -31958852, 22622666, -36563056, 7369627, -17974976, -12261058, 36145372, 2113661, 2262374, -12453795, -13888850, -839129, 9354976, -44255880, 1068910, 10176388, -6560026, 28469190, -12876849, --5596343, 47800840, -18176838, -40007620, 83215, -15192373, 3209414, -3151432, -2114735, -32141388, -17096118, -5347235, -43671764, 26142930, -54083840, 10362145, -12407624, -21548924, -34190624, -4547834, -9238475, 15581068, 1387274, 12588012, 15761456, -18807662, 32934346, -7769059, 8797704, -588947, -15715285, -867583, -1785096, -5506685, 9290014, -19840064, -2550137, 6287296, 4250944, -7809861, --135828, -8725226, -11410654, 5709086, 4657355, 8506720, 5542656, -2650532, 6682432, 19424526, --9703405, -10358924, 3403762, -1124208, 3821447, 14360760, -2092723, 7747584, 7386270, 7335804, --9882720, -12000675, -2943663, -1126355, -12414066, -882616, -2474975, 5066988, -13559749, 3879429, --18924700, -66735200, -68579352, -58546308, -29519310, 120998896, 37888056, -15138686, -15801185, -59913720, --126835216, -14335527, 34027416, 42469712, 18218714, -19573240, -14664092, -37444060, -41227392, 30874372, --29726006, 76229224, 57132192, -89101248, 28690918, 11587285, -18758806, 6805376, 63791540, 9029632, -43967580, 87352656, -19175418, -71963248, 3234647, -12386686, -67085780, -18399104, 32200444, -3093987, -39667244, 64164128, 5596343, -55910812, -109313896, -93885304, -83936544, -8967355, 81027776, 22978612, -21504364, 12040404, -22231288, -109589312, -68625528, -35221416, -13508746, 6541235, 24562382, 23851028, -30692910, 31455804, 39150776, -47317116, -17146584, -38776576, -3451006, -42396696, 26091926, 26068840, -53616224, 59569584, 28363428, 746787, -16098611, -11184095, -73804720, -58764816, 51298552, 80371720, -54670640, 64195804, -15650861, -28877750, -58440548, -33304788, 17036524, 8590, 3807489, 17969606, -5898064, 4449049, -14299557, -18851686, -9447854, -14267344, 345745, 14082124, 3854196, 5390721, --3413425, 8171712, -15578920, 10214506, -4769561, -14428943, -14212047, -4359392, -23524610, -7304129, --14440217, 14703821, 16574816, 7981123, 6327024, -15337328, -31370978, -31025234, 8084202, -3015604, -13921600, 12253005, 6466074, -22636626, -11580306, -21558052, -33183992, 9820980, 22939420, -8871255, --121768232, -136324944, -92743376, -95395520, -25590488, 106556528, 71724880, 114979496, 128088272, 194632880, -129216240, 133721656, 86231136, -6813429, -96453152, -166669424, -196809360, -170889776, -134812576, -97623000, --23740432, -5173825, -14254996, 4721243, 42157252, 69490424, 96552472, 83866752, 114467320, 110504136, -142940272, 130662032, 36607616, 87620552, -19233938, 23784456, 17546552, 4716948, -12320651, -127836480, --153313696, -196057744, -229834976, -209082768, -116224496, -103421736, -85016728, -106574248, -123169464, -26641146, -29941290, 76948632, 113022600, 163536784, 195575088, 250975872, 331434560, 321683392, 244395984, 198096784, -164973456, 87024624, 138521280, -56552908, -113223392, -270952320, -310038112, -385605376, -370272896, -338864864, --320932832, -310228704, -190948336, -118580824, -64470680, 172683984, 176159696, 269123200, 346027808, 299740928, -270986144, 273855712, 215344288, 163902928, 90142776, 11492259, -1463510, -51218560, -61929132, -90070296, --116286776, -160002560, -172614192, -157502896, -181144544, -140391200, -128580584, -121756952, -106627392, -55441584, --10983305, 56186224, 116709296, 109102368, 170671264, 188196336, 208002048, 245097680, 198619696, 115471272, -57822608, -35779224, -90550256, -91090888, -175111184, -162739536, -222120144, -177416512, -184124176, -118828320, --123693448, -72920488, -9342091, 61786324, 93720480, 164700192, 192387696, 186087504, 181366800, 176068960, -135773584, 47742320, -31244814, -45542760, -58606440, -65387656, -73498704, -87575992, -80851688, -60436096, --64958696, -59369868, -51081120, -37298568, -16554415, -11860552, -8407935, 1801202, 10766409, 6766721, -10054518, 25705916, 30918932, 27554362, 18340584, 12511240, 9405442, 9110163, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-2220498, -4257923, 2469606, 3956739, 7029788, 1888712, -4956393, -8808441, 1897302, -4122095, +338229, 2747705, 1063004, 7102802, -5896990, -1464047, -811749, -481036, -5063767, 3098282, +1307818, 635118, 125628, -2482491, -1908576, -1802813, -586800, 231928, 1180042, -1876901, +2700998, 6356015, -213138, 2814814, -4527433, -2638721, -5416491, -2625836, 5734318, 258235, +-1180579, 1004486, 6084358, 639950, 3055869, -786516, -2866891, -913754, 3470334, -3006477, +5450851, 3343632, 6147172, 3020436, 384936, -1902134, -4087198, -2280091, -3553549, -565862, +-2594697, 1005022, 222265, -1414118, 897111, -1218160, 2196876, -571231, -610959, 3089155, +-312996, -244276, 412317, -3033858, 1369021, -2226941, -3554622, -2069637, -1563905, 1522029, +-294205, -271657, -4030290, -695248, 1050656, 767725, -1600412, 125628, -1581622, 682900, +1133335, 817118, 320512, -306016, -641561, 158914, -1242856, -701153, 278099, 157840, +557272, 510027, 503048, 81604, -12274480, -2782065, 5031554, 879395, 6860674, 3657165, +-5651103, 1486059, -124554, 2244121, -2024540, -9427990, 5438503, 3328063, 6231998, 7785702, +6707129, 2346126, 89657, -9606768, -991064, 4402342, -4378719, -3805341, -10026601, -680215, +-1678259, -1167157, -2552821, 1180579, -5985574, 2721936, -1050656, 2524904, 744640, -4031364, +3104188, 2582886, 6953015, -817654, -5570573, -2885681, 3013993, 1203665, -1394254, 279710, +2218888, 279710, -4070555, -47782, 856846, -442919, 257698, -2578591, -1126355, -3430605, +-704375, 4201552, 1505386, -1449552, 1799591, -558346, -216896, 628139, -4887136, -460635, +-242129, 2721936, 5292474, -1576790, -533113, -3425773, -2643016, 1338956, 6022618, -5341866, +-833224, 1355062, -288300, -1460826, -91805, -1424319, 1962263, 2044404, 1089848, 3332358, +-1589138, -1043677, -340376, 772020, -762894, 124017, 544387, 461709, -395137, -1422708, +1050120, -1416802, 6787659, 2547453, 2294050, -2276333, 178778, 638340, 650688, -11654931, +-6302328, -528281, -2899103, -3607236, -178778, -3037079, -11860015, 7068980, 1626719, 3199751, +-1246614, 2434710, -3134253, 150324, 428423, 6111202, -2171106, -1287417, -1019518, -1032940, +-975494, -432718, 6624987, -1282585, -97174, -3772055, -209917, -1821066, 2153926, 1089311, +-6415071, 4976257, -6493454, -124017, 5696737, -815507, 213675, 434329, -130997, -3979287, +-2827699, 6539625, 3781719, -8104067, -4330938, 1282585, -4758287, -3452617, 3468723, -5832566, +1133871, 1413044, 3335579, 6965363, 5339718, 3266860, 2495376, -4745402, -4947803, -4236449, +1377074, 6061273, 2342905, -1039382, -2706903, 1987496, -2288144, -997506, 1411971, -2246805, +-3405909, -457951, 2730526, -494458, -2324651, 309775, 22549, 2660732, 1108102, 2457795, +559956, -1126355, -1155346, -923955, -482647, -308701, 790274, 1546188, 1837172, 1932735, +8908836, -2181307, -2276870, -2670396, 2512556, -2987687, 4356171, -8450348, -1082869, 6268505, +3281892, -6355478, 4702453, 7719130, 7284802, 4645544, 890669, -289910, -4764730, -6144488, +2605972, -591095, 6158446, -483721, 3682398, -3838627, -2554432, -2059974, 609349, 1961726, +-349503, -7503845, 1582159, 2598455, 1887101, 3234110, 1983738, -4072703, -10027138, -3229279, +1467268, 1932735, 470836, -431107, 1901060, -4114579, -68719, -7471633, 3490198, -7708930, +-2034204, -3269544, -5073430, 3699578, 1634772, 1568200, -4430259, -2155000, -1305133, -4443144, +418759, -378494, 2371896, -1905355, -3741454, -2856153, -8873939, 2816962, 1026497, 3809636, +5618354, 7176354, 2799782, -2829310, -4228932, -1996623, 3898220, 3889093, -4407174, 4803921, +202937, -3125126, 6926709, -1344325, 1561221, 1174674, 2031520, -124554, -1548873, 448824, +2151779, 772557, -341987, 2331630, -1222455, -957241, -1693291, 799401, 209380, -865973, +1274532, -1236951, -2230162, -935229, 1689533, -406948, -389231, 609349, 4460324, 4121021, +-706522, 2918430, -8606578, 1023813, -4108136, 462783, 1286880, -5402532, 1980517, 15855946, +1736241, -1387811, -8915278, 12767327, -24159, 5370320, 638340, -252866, -6927782, 6745783, +1731946, -3707094, 884226, 523986, -2763812, 2736431, 7099044, -2049773, 7548942, -2218888, +3230889, -104690, 4978941, 4436165, 4958003, 69793, -2697776, 3897683, -2843268, 3434900, +-976031, 3462818, 3354370, 3227668, -416075, -972810, 1289564, -2773475, -4030290, -10290205, +6735583, -6648073, 4661114, 610422, 1963337, -1187022, -12290049, -2646774, -3317325, -5972689, +814970, 3740380, -7894150, -2483028, 3564286, 672162, 5585605, 9763534, -265214, -2624762, +-2330557, -10119480, 3109556, 1975148, -2264522, 546535, 4025458, 4142496, 1197222, 1067299, +2914672, 350040, -445066, 4361540, 2563022, -2374580, 4449586, 3266323, 4368519, 1356673, +-741419, 329639, -281857, -278099, -1611150, 586800, -977105, 1029182, -1235340, 2052994, +734976, 212601, 1691143, 166430, -507880, 493384, -360240, -128849, -574989, 2044941, +1247151, 433792, 1451699, -439160, 2307471, 319975, 743566, -4495220, -5429913, -526670, +2924873, -1739462, -2619393, -3958886, 1158567, 7198902, 3231963, 1131724, -16364362, -7515119, +-2277407, 3346317, -1949378, 5535139, 18685792, 5807333, -6853157, 1063004, -8108362, -2633889, +5695127, -6465537, -1633161, 8329016, 2019708, -2090575, 1194001, 4708895, -2825015, 2281165, +2487323, 2442763, -4626217, 2114735, -2159832, -2654290, -6839199, -2670933, -3993783, -7633768, +3347927, 259309, -508954, 7699803, 5635534, 1971390, 6194954, 33823, -7825431, 6594386, +-737661, -5369783, -4223027, -7794829, 363462, 9380209, 650688, -4134980, 3997004, -6991670, +-4365298, 3613678, -5645198, -7529078, -3943317, -2375654, 4252555, -6652905, -2044941, -3098282, +8559870, 1230508, -2957622, 4192425, -2558727, -3120294, 492848, 6770479, -1265405, 447213, +3755949, 2144263, -8638253, -330712, 5280663, 2507187, 3080029, -704912, -1671816, 3877819, +-2308008, 668404, -1891396, 1105417, 1461900, 2004676, -4378183, 25770, 459025, 1103270, +270046, 46708, 2051921, -384400, -389768, -1933809, 1508070, 5688148, 4107599, -10622528, +10069014, -3799972, 923418, -4646081, 8622684, -1228898, -5819144, -18964428, -2535641, 9834401, +2430952, -14785962, 6731825, -15032, -3033321, -4744865, -3847754, -1464584, -8798777, -1487669, +7101192, 9250823, 11006927, 6681896, 10036265, -3294777, 7903814, 3809099, -15620259, -372052, +4056597, 5541582, 2697240, -5386963, 299037, -1127429, 5502927, -9362492, -3373160, 6954089, +-2305324, 3908957, 2046015, -6237367, -6933688, -3578782, -10385231, -2956548, -3196530, 4257923, +1535451, -6005438, -1389422, -12821014, -3242164, 5231807, -3757560, -12669080, -201327, 7192997, +-15381352, 4456029, 2544231, 4883378, -7300908, -3389803, -6940667, 534723, -2095407, -7849053, +-2080912, -1321239, 4702989, 2661806, 11475079, 728534, 103616, 1831267, -890669, -5824513, +7245073, 2531883, -3012383, 6365679, 1132798, -3164854, 1026497, -199179, 3848291, 887448, +735513, 2411624, -2090039, 87510, -2243047, -5369, -1794223, 1771674, -751082, 767725, +2141578, 309238, -1410897, 2018635, 470299, 2148558, 543850, -620086, -11756399, 2643016, +9449465, 12170864, 9075803, 9268539, 3591667, -6398965, 6498286, 11249056, -16604344, 8355322, +8355859, -17791366, -4653060, 4393215, 19224810, -1480153, -1202054, -4559108, -5361730, 23778550, +11800960, 3321620, 2991982, 12341052, -205085, -1859184, -4587025, 1858110, -10667625, -9633612, +-2182917, 3002719, 7170985, 3259880, 1643362, -3627637, 712428, -7832947, 3286187, -11616813, +11416023, -1262720, -5655398, -6673843, -7607461, -11720966, 2050847, -11345693, -3796214, 7806640, +-1787780, -3879429, -3714610, -1808181, -9688909, -6739341, -4353486, -4130148, -2193655, 3580929, +2018098, 600759, 542777, -8574902, 14802068, 8501888, 231928, -1079111, 19461570, -2335389, +-3332895, -4763119, -9824738, -2690260, 6522982, 6257231, -936303, 7612293, -15091441, 4479114, +-5741298, 1455994, 5843303, -2018635, -110059, 955093, 519691, 1874753, -2353642, 2824478, +3645354, -3395172, 1426466, 1915019, 2385318, 6185827, -4622996, -417149, 676994, -108985, +1468342, 692027, 1532230, 1953136, -1665911, 1256815, -505732, 155156, -3291019, -710817, +-759672, 2822331, 21895206, 7478612, 4633196, 10627360, -11993159, -7216619, 6861211, 7298223, +16252156, 2352032, 4533338, -10940892, -624381, 5399848, -14341970, -4627828, 5768678, -4796405, +199179, 3923990, 10632192, -3606162, 4166118, 2166274, 2353105, 9054328, 7910793, 9649718, +-7588671, -5098663, 10481331, -13291313, -4395899, -4418985, -877247, -3612604, -8473970, 8238821, +-285078, -9178882, 443455, -3631932, -9532680, -11912629, -6604586, -7152731, 14056354, -4502737, +-3569655, -8352638, -685047, -4266513, 2178085, 16538845, -3100967, -5449240, 2822867, -1013075, +9560060, -11123965, 18775450, 3733937, -18065706, -13163538, 4763119, -12190728, 197569, -13050795, +57445, 2753074, -1669132, 14033806, 17624936, -8413841, 2133525, -3488050, -13049721, -4904316, +-7110319, -8543764, -1964948, 6373732, -4435091, -10063645, 6633577, 401579, -5442798, -4625680, +2180770, 3687766, -1627256, -1086627, -5126581, 241055, -4734665, -985695, -2376191, 3258270, +3711926, 853088, -4702453, 461172, 292058, 2990371, -78383, -1203665, 241592, -5931887, +-659814, -3364570, -2371896, 414464, 1314797, -3139621, 2391760, -1846299, -1701344, 3955128, +-1613297, -3948149, -19105626, 7332583, 39757440, -6784975, -373662, -17289390, -7225209, 11864847, +-1632088, 22836878, 13751412, 12711493, 170725, 9828496, -18539764, 17027398, 8865886, 886911, +2299418, -10713259, 4776541, -76236, 17358110, 9720585, 11595338, -4102768, 1207423, 3088082, +-11517492, -9278740, -4177930, 5383742, 20235202, -5504001, -6715182, -6778532, -3751117, 2700998, +-12724377, -3638374, -758599, -6775848, -13473312, -2784750, -17114908, -6175089, 10215043, -11882564, +-5135707, -2276870, 1058173, -19306952, -11593727, -2447595, -1927904, -3620121, 12328704, 5459441, +915365, 7459285, 12699681, -7669738, -3103651, -10490994, 4924717, -8232379, 7197292, 8220568, +9890773, 17854716, 5156108, -13290776, -2056753, 29866666, 9825275, 16830366, 8200167, 5172751, +-1023813, 2123861, -6919193, -8919036, 4196183, 3059091, -8812736, 2470143, 6386617, 5743982, +-8453569, 6815576, 2430952, 4937602, 5767068, 50466, 2860448, 4776541, 2075543, 5592048, +-406411, 1279900, -1582696, -3627100, 954557, 4894115, 870268, -2000381, 7901666, 5035849, +4375498, 264677, -774168, -1177895, -38118, 359167, -1095217, 2815351, 2291902, 2237678, +2526515, 1288490, -3952981, 20482162, 22446036, -22628036, 5566278, 16626892, 10053445, -6300717, +-12030203, -10408853, 23395224, 1930588, 8814884, 12274480, -6962679, 3473018, 5152887, -14294725, +-15183246, 12370043, 4222490, -22125524, -5087926, 28786482, 13820131, -47245, -16393890, 5395016, +4340065, 17507360, 5806796, -8524436, 11476153, 2034204, -4796942, -1656784, -3440269, -13645111, +-6429566, 2096481, 2380486, -16290811, -17563196, -10406706, -5021354, -19348828, 11527692, -1207960, +-13717589, 2622078, 355945, -5962489, -1635309, 4154844, -79457, 4372814, 5107790, 7796977, +-7618735, -9081171, 12030740, 24324010, 11048803, 6640557, 17779018, -3332358, 9705015, 23640036, +14495515, 2222109, 2678449, -7398618, -14433774, 14060649, -13747117, 6187974, -5482526, 4294968, +-18006650, 8648454, -195958, -5908802, -3364033, 10249403, -9689983, -4905927, -2480344, 1551557, +-197569, 3026878, -3820910, -497142, -6909529, -1770600, -369367, 1268089, -2045478, 2395518, +-2568927, 2076080, -2296197, 7858717, 2497524, -2031520, -3619584, 2969970, 367220, 2723546, +2509335, -1887101, 2263985, 2890513, -1902134, 754841, 3616363, -1086090, 1305670, 3933116, +4179540, 7190849, -4619774, -21237540, 5958731, -10239739, -4723927, -7915088, -1336809, 18177912, +18002356, -36427764, 11266773, 11559368, -11320997, -18533320, -24167780, 4261145, -7105487, 4471598, +-8441221, -6635725, -3931506, 22546968, 5701032, -1965484, -398358, -3593814, -6751689, 5701569, +3738769, -107374, 9032853, 1964411, -1921998, 3220689, 8195872, 23269596, 2325188, 2863133, +-11515344, -4924717, -5460514, -5791764, -722091, -1940252, 7690139, 11130408, 509491, 12859132, +-3007551, -2177549, -2656437, -1436130, -22578644, 25437480, 634045, 1799591, -1894618, -6616397, +6729140, -1746978, 10304700, 582505, -9900973, 2670933, 10925860, -7792145, 10144713, 2470680, +-15581604, -2659122, -3352759, -28297392, -9687299, 7232725, 7284802, -11563663, -6673843, 6752763, +914828, 18910204, -15093052, 6862821, 8418136, -1224603, 7358890, 6856379, 8344585, 3221762, +3700114, 3383897, 2748779, -1259499, -1569274, -4884452, 1921461, 7067369, 1231582, -5185636, +-2045478, -2930242, 1647120, -2272038, -1951526, -3454228, 4546760, 2595771, 3090766, 333934, +-8266739, 3288871, -8402030, 641561, 1304596, 2952790, -4005057, -1916092, -1277216, 2709588, +4974646, 2266132, 2074469, 703838, -5935108, 18496276, 5288716, 5660767, -13650480, 10079215, +-5499169, 9600326, -7650411, 12397423, -11404212, -9314173, 17064442, 2068564, 4316979, -10268730, +-22884660, -2255395, 6605123, 1700270, 9728101, -8225936, 1202054, -188979, -17103634, -12362526, +5578089, -19327352, -12673375, 6054830, 19327, -20207822, -2939368, -10113574, 12764106, 7605314, +2253784, -4781909, -12665859, -26879516, 9387188, -12093554, 14601815, -4519380, -4960687, -2578591, +-7169374, 3980361, 3778498, -21511344, -9512816, 20980378, 18373334, -19140522, 24677808, 1177895, +18154826, -4468377, -4435628, -2399813, -7253663, 9363029, -7150047, -20081120, -10675141, 23631984, +-5382668, -4878009, -1395328, 7247758, 4641249, 11886322, -27341762, 7941932, 18496814, 14526116, +-6049999, -1635846, -5957120, -12453795, 1315334, 11226508, 17513266, -10913512, -11028402, -12498355, +-1345935, -2132451, 1065152, -6053220, 2988760, 2988224, -2189897, -980326, -2751464, -5523865, +5184026, 2684, 702764, -8330089, -7020661, -1955821, -9075266, -3606699, -4604205, 889595, +-3292093, -102542, 6804839, -2916820, 2774012, -213138, -6558952, 1144609, -3364570, -960462, +2663417, 5938866, 744103, 2417530, 5549635, 5504538, 7354058, -2499671, -2148558, -1488206, +7541963, -1320703, -12496207, -835371, 12792023, 9925133, -9677098, -16480863, -13827647, -8127152, +-16022912, -903554, 7566122, 17563196, -3054259, -852551, -29430190, 17607756, 21932250, -3493956, +-11941620, -12138651, -7523172, 33014340, -20125144, -87510, -2384781, 8898635, -1490354, 38033548, +918049, -20727512, -5461051, -19699942, 25679072, 22316114, -18035104, 20990578, 5256503, 16892644, +6320581, -31787052, 9958419, 16971564, -22006338, -6129455, -24968792, -12502113, 863288, -23026394, +-19625316, -588411, -15899432, -252866, 5592048, -5723044, -15768972, 12918188, 11743514, -25999048, +-19842748, 10822781, 4585415, 6943352, 13172665, 17166984, -6320045, -9371619, -524523, -6087580, +-317291, -1966021, -8698383, 3421478, -36034240, 12246026, 17550310, -18632642, -15303505, 11588896, +-11712913, -10672457, -5049808, 6467147, 942208, 22331682, 199716, 13031468, -1255741, -9151502, +4885526, 6709813, 7035157, -5918465, 188442, 686658, -784368, -3812857, -8885750, 5857799, +9440338, -4849018, -15665893, 3968550, 1397475, 16616155, -1551020, -6540699, 5192616, 1823751, +8373576, -37581, -5025649, 95563, 6843494, 5033702, 1749125, -1815697, 1341640, -3122978, +-2545842, -7843147, 3982509, 3717294, -5282273, 2560874, 2425583, 1410897, -836445, -2653753, +753767, -7519951, 8381092, 20337208, 37970196, 59759100, 2063195, -23768886, -30681098, -6992744, +1499481, -7121593, 29157460, 21923124, 15254650, 25366614, 18543522, 15028627, 1266479, 12157442, +-15193447, 22003118, 25425132, 1958505, 26441966, -10526965, 2421825, 6318434, -24135568, -16163573, +-5509906, -14272713, -16831976, -2288681, 27174794, -117575, -4904853, 3597035, 6034429, -3399467, +-36175972, -4751308, 9829570, -5136781, -10879689, 4744328, 14398341, 25280178, 6474127, 13005698, +18020072, 22071300, -29844654, -20667382, 12162811, -8522289, 38661148, -3738769, 33287070, -26349624, +16044387, 27125940, 1335198, 4621922, 16443819, -28827284, -13193603, 1015760, 16930762, 727997, +19442244, 8013872, 7515656, 19743428, 7365332, -2321967, -7872675, -22759032, -4992900, 1600412, +6447283, 727997, 846645, 779537, -12208981, 6797323, 4728759, 11143830, -3397856, 8448738, +13726179, 8214662, 3736085, 222801, -1247151, 3088082, -4276177, 3006477, -4071092, 401579, +3109020, 2991982, -3558381, 6274411, 6177237, 7576859, 1174674, 846645, 3414499, -2357937, +5340255, -3454228, 5390184, 11813844, -1047435, -1954210, 1241246, 10305774, -5821292, 2626909, +-846109, -1230508, -1553704, 1638530, 3123515, 4779225, 3787088, 3706557, 9659381, -6299107, +11395622, -5129265, 42939472, 14498736, 15281494, 31390842, -1972464, 6897181, 13842143, 20277614, +-21904334, -17510582, -7263327, -19236084, -3115462, -25950730, 13815299, 21271900, 15625628, 21127480, +-13714904, -7479686, 16402480, 12807592, -8479339, 21423296, 13003013, -4546223, -25515864, 14663555, +16023449, -12823162, -1654099, 7851200, 4020626, -20513300, 24297166, 6730214, 26058640, 14382772, +10387378, -13677323, 12308303, -7111929, 39556648, -30613990, 3672197, 12186433, -5597416, -19642496, +13027710, 12847321, -2181844, 12647605, -11704323, 32368484, -14576045, 8788577, 7227893, -19983946, +-8562554, -27725088, 12195023, 8574902, -20635170, 19854024, 16924318, -14095546, 12203613, -1196685, +32729798, 10979010, -16019154, -11551315, -11406359, 10598906, -6554657, 9092446, -3933653, 2292976, +11092290, 7249368, 5634997, -10318659, 28132036, 3474629, -10645076, -15500537, 13679471, 7101729, +12916040, -6893960, 3898220, 10506027, 21238614, 5753646, -3325379, 17945984, -4599373, -4691715, +-2355790, 2117419, 4861366, -10091563, -9088688, 4392141, -7849590, -4447439, 1092532, -3422015, +-1018444, -952946, -7724499, 5846524, 3202972, -14695231, 3688840, -10882910, -6979322, -3189013, +5577015, 3361886, 10423349, 4958540, -295279, 3355443, 3830574, 4842039, 399432, 1655710, +2379412, 9250823, -2899640, -38056632, 16586627, -32500554, 33107218, 39826156, -2399813, 6757594, +-32858648, -545998, -7544647, 3081639, 18680424, 19154480, -6010270, 9818295, 15489800, 2260227, +6354404, 4311074, 6272263, -4359929, 22712860, -3440269, 4970888, -13042742, 25601764, 5367636, +-2657511, -1078037, 23030152, 8683887, 10761577, 25489558, -5940477, -16106664, 31367756, -33767568, +-14682346, -6030671, 7259569, 22003654, 4996658, -9332427, -9542344, -16407849, -485868, -3156801, +6314676, 35414688, 34484292, 21799644, 31108984, -3034395, 46909096, -15891916, 13022878, -11333345, +1043140, 14628122, -7299834, 1587527, -14162118, -18351858, 272730, -11579769, 9583146, -15677704, +23200876, -17589502, -28144384, -11758547, -7228967, -2660195, 33847028, -20552492, -4713190, -2998961, +-21246130, -5471252, 12385612, 26507464, -2332704, -1259499, 1046361, -8825621, -18243410, 644782, +-771484, -2877628, -1869385, -91268, -10519986, 8404177, -8998493, 10405632, -4128001, -8139500, +-8789651, 2085744, 8396124, -5967320, -7515119, -2757906, 6977711, 7581691, -5483063, 3517578, +4683125, 2652142, 4673998, -4465156, -3885335, 2067490, 533650, 4751308, -5869610, 4168266, +7767449, -411243, -2430952, -4028679, 6822019, -13728863, -6347425, 13431436, -8063801, -1015223, +-2045478, 2553358, -8279087, 6023692, -2559801, 12380243, 10734734, 176631, -13336947, 58553288, +81298896, 24929600, 63377612, -13875429, -44066900, -30888332, -21584358, 10690710, 11662447, -14696304, +-23663122, 20509006, 27597312, 16113107, 27533962, 21223044, 5252745, 8438000, 4169876, -1388885, +-18097918, 7980586, -21447992, 15110769, 150324, -20100446, 23296976, 14068702, 11150272, 40200356, +24729348, -11551851, -7755101, -14499273, -17150878, -21036750, -8284455, 805306, -16613470, -5185100, +34751656, 52674016, 38830800, 5285494, 26502632, 28233504, 43215424, 19757386, -22894860, -37628744, +-23444616, -24022826, 14200236, 11891691, -51395188, -35285840, -9073655, 21636434, 46774880, -35065724, +-1384590, -30440580, -3948686, 38196756, -21044802, 14368813, -30529164, -5019206, -9123584, 25743498, +-28618440, -16350940, 461709, 11341398, -23236846, 53303764, -12572443, -883153, 30324616, -13377749, +22793392, -7324530, -18853832, -14697378, 8842801, 816044, 7533910, 4670240, -16842178, 399969, +-7130183, 20366734, 11926587, 3536906, 11125576, 12658342, 664109, -240518, -4095251, -12824235, +25995290, -8143258, 5401995, 118648, -15161771, 512175, 1582696, -4867809, -10001368, -2263985, +-5910412, 1329292, 3786551, -4542465, 784368, 17635672, 12567611, -2412698, -2968359, 16693464, +-7168301, -2268280, -14341970, -20610474, -7820599, -5559835, -2439005, -5774047, -23241142, -44906032, +5250061, 24711094, -20918638, 38393788, -15609522, 15161771, -5366562, -44740676, -23061826, -2325188, +-26461830, -60330868, -17121350, 21553756, 33135672, -16447040, -26016764, -53841172, -16222628, 15705622, +-10940355, -15701864, -26949846, 6198175, -6300717, -4654671, -5288179, 10722386, 21288006, -16905528, +16389595, 14095546, -17246442, -49119932, 3716757, 3859565, 12359842, 5808407, 31768800, 3140158, +-49014168, 229244, -53951232, -335007, 18321256, 22379464, -4468377, 2897492, 24620364, -13113609, +-9816685, -16872780, 15818901, 11680164, -8051453, 19179176, -6331319, 8043937, 8623757, 31438624, +3860102, -11231876, -34057480, -11663521, 17145510, 15138149, 26417270, 38963408, 67159864, 33571612, +15878494, -17626546, -68166496, -18624052, -10163503, 51803212, -9092983, 3191698, -612033, -16391743, +1830193, 15168751, 6853694, -388695, 332323, 254477, -324270, 25117506, -9503152, -7508140, +-8775692, 17424146, 6236293, 8812736, -7308424, -21445846, 6612102, 9066676, -10226854, -1437740, +4984310, -1225139, 1184874, -3794604, -31321050, -10095321, -2971044, 14170171, 21678310, 2667712, +-18961744, -17963700, 7713762, 3036542, -2224793, -3001645, 479426, -1853815, -1456531, 16542067, +-18675054, 2378338, -16137803, 16565152, -9633075, 449361, -23008140, -3409667, 14515916, -4595615, +7541426, -12758200, 3543348, -43776992, -13377749, 30306362, -15038291, -12641162, -3306051, -9893994, +-35098472, -39043936, -57045756, -18084496, 51003, -4508105, 37243272, 10164577, 48664664, 29956860, +15035070, -6908455, -18053358, -3461744, 68274408, 4135517, 19645718, 10991358, -8622684, 33931852, +-14247480, 27365920, -30048128, -3096135, -21664352, 25744570, -36471788, -7789997, 11094974, 11355357, +11656004, -31958852, 22622666, -36563056, 7369627, -17974976, -12261058, 36145372, 2113661, 2262374, +12453795, -13888850, -839129, 9354976, -44255880, 1068910, 10176388, -6560026, 28469190, -12876849, +-5596343, 47800840, -18176838, -40007620, 83215, -15192373, 3209414, -3151432, -2114735, -32141388, +17096118, -5347235, -43671764, 26142930, -54083840, 10362145, -12407624, -21548924, -34190624, -4547834, +9238475, 15581068, 1387274, 12588012, 15761456, -18807662, 32934346, -7769059, 8797704, -588947, +15715285, -867583, -1785096, -5506685, 9290014, -19840064, -2550137, 6287296, 4250944, -7809861, +-135828, -8725226, -11410654, 5709086, 4657355, 8506720, 5542656, -2650532, 6682432, 19424526, +-9703405, -10358924, 3403762, -1124208, 3821447, 14360760, -2092723, 7747584, 7386270, 7335804, +-9882720, -12000675, -2943663, -1126355, -12414066, -882616, -2474975, 5066988, -13559749, 3879429, +-18924700, -66735200, -68579352, -58546308, -29519310, 120998896, 37888056, -15138686, -15801185, -59913720, +-126835216, -14335527, 34027416, 42469712, 18218714, -19573240, -14664092, -37444060, -41227392, 30874372, +-29726006, 76229224, 57132192, -89101248, 28690918, 11587285, -18758806, 6805376, 63791540, 9029632, +43967580, 87352656, -19175418, -71963248, 3234647, -12386686, -67085780, -18399104, 32200444, -3093987, +39667244, 64164128, 5596343, -55910812, -109313896, -93885304, -83936544, -8967355, 81027776, 22978612, +21504364, 12040404, -22231288, -109589312, -68625528, -35221416, -13508746, 6541235, 24562382, 23851028, +30692910, 31455804, 39150776, -47317116, -17146584, -38776576, -3451006, -42396696, 26091926, 26068840, +53616224, 59569584, 28363428, 746787, -16098611, -11184095, -73804720, -58764816, 51298552, 80371720, +54670640, 64195804, -15650861, -28877750, -58440548, -33304788, 17036524, 8590, 3807489, 17969606, +5898064, 4449049, -14299557, -18851686, -9447854, -14267344, 345745, 14082124, 3854196, 5390721, +-3413425, 8171712, -15578920, 10214506, -4769561, -14428943, -14212047, -4359392, -23524610, -7304129, +-14440217, 14703821, 16574816, 7981123, 6327024, -15337328, -31370978, -31025234, 8084202, -3015604, +13921600, 12253005, 6466074, -22636626, -11580306, -21558052, -33183992, 9820980, 22939420, -8871255, +-121768232, -136324944, -92743376, -95395520, -25590488, 106556528, 71724880, 114979496, 128088272, 194632880, +129216240, 133721656, 86231136, -6813429, -96453152, -166669424, -196809360, -170889776, -134812576, -97623000, +-23740432, -5173825, -14254996, 4721243, 42157252, 69490424, 96552472, 83866752, 114467320, 110504136, +142940272, 130662032, 36607616, 87620552, -19233938, 23784456, 17546552, 4716948, -12320651, -127836480, +-153313696, -196057744, -229834976, -209082768, -116224496, -103421736, -85016728, -106574248, -123169464, -26641146, +29941290, 76948632, 113022600, 163536784, 195575088, 250975872, 331434560, 321683392, 244395984, 198096784, +164973456, 87024624, 138521280, -56552908, -113223392, -270952320, -310038112, -385605376, -370272896, -338864864, +-320932832, -310228704, -190948336, -118580824, -64470680, 172683984, 176159696, 269123200, 346027808, 299740928, +270986144, 273855712, 215344288, 163902928, 90142776, 11492259, -1463510, -51218560, -61929132, -90070296, +-116286776, -160002560, -172614192, -157502896, -181144544, -140391200, -128580584, -121756952, -106627392, -55441584, +-10983305, 56186224, 116709296, 109102368, 170671264, 188196336, 208002048, 245097680, 198619696, 115471272, +57822608, -35779224, -90550256, -91090888, -175111184, -162739536, -222120144, -177416512, -184124176, -118828320, +-123693448, -72920488, -9342091, 61786324, 93720480, 164700192, 192387696, 186087504, 181366800, 176068960, +135773584, 47742320, -31244814, -45542760, -58606440, -65387656, -73498704, -87575992, -80851688, -60436096, +-64958696, -59369868, -51081120, -37298568, -16554415, -11860552, -8407935, 1801202, 10766409, 6766721, +10054518, 25705916, 30918932, 27554362, 18340584, 12511240, 9405442, 9110163, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 13406740, -1573569, -5842766, 2067490, -3676492, 1025423, -2377801, -1482301, -3195456, 2348273, 4016868, -1200443, 1285269, -7240241, 1482301, 179315, 2319282, 2834142, 1577327, 4240744, -833224, --2290291, 493384, 5058398, 82678, -3781182, -334471, 4315369, 2367064, 513785, 93952, -1254667, -56371, 381178, 877784, -79457, -1468342, -123480, 91268, 1730335, -2441689, --5812702, 4386772, 4384088, 3836480, 3599720, -127238, 1990717, 3438658, -3501472, -744640, --34897, -4678830, 1128503, 405874, 4346507, 503585, 2462627, 132070, 5450851, 2798171, --730144, 3849365, 2350958, -1167694, -4343823, 1163936, 1209033, -1100585, 389768, -2437931, --594853, 2316061, 1629940, 1935957, 4505958, -673236, -1341640, 672699, 2704219, 6169721, --3528853, 1693828, 1710471, 1845225, -123480, -343061, 1946157, -985158, 111132, 962610, --1089311, -130460, 233002, 388695, -690416, -1063541, 773094, -207769, 199716, -344671, -1175747, -71404, 1387811, -246424, 11334419, -7558606, 2563022, 6385543, 1499481, 4504347, -5449777, -4932770, 1046898, -439160, 2124935, -6256694, -4970351, -914291, 4881767, 6622303, --2527052, -2173790, 3173444, -5350456, -7170985, -1309428, -8434779, 2905546, 2803540, 780610, --5240397, -5318244, 1898912, -3088618, 722628, -140660, 5561983, 5887864, 5302137, -845035, -3715147, -5791764, 2527588, -3408057, -316217, 325344, 4536023, -4881231, -4353486, 51003, -5966247, 2478733, 2328409, -3597035, 2018098, 1497333, -1764158, -7442105, -1214939, -2512556, --3283503, -2932926, 3414499, -3120831, -1021665, 796180, 2116882, 5376226, -2061584, -107374, --4050154, -1938104, 828392, -5578626, -356482, 1550483, 3820374, -1194538, -2914135, -1444720, --5841156, 2783676, 1698123, 362388, -487479, -5013838, 2061584, 442919, -1808718, 1859184, --731218, 473520, 1656784, 193274, 331786, 1972464, 852014, 431107, 36507, 1588601, -558883, -263067, 627065, 945430, -4001836, -7248831, -1810329, 1243393, -2238752, -3671123, --2036888, -7226283, -4072166, 7630010, -311385, -3388729, 4042638, -6120329, -1406602, -7632694, --1591285, -6016176, -3149285, 7056632, 364535, -1443646, -7974144, -4975720, -1804423, -3420405, -1342177, -4248797, 409096, 2632815, 8441221, 4137664, 3162170, 3652333, 6832219, -5751498, --73014, -1726577, -4435628, 1823751, -911607, -1729798, -4642323, 2413772, 4868883, 507343, --3545496, -2272038, 12472048, 50466, -3590056, -4996121, -7486128, -9972377, -1248762, -5171678, -1193464, -1014149, 2782065, 517007, 1343788, -4582730, 681826, 748398, 6034429, 2039573, --4519380, 252866, -1407676, -1342177, -1079647, 2157684, 3234647, 3169686, -2960306, -2880849, -1814624, 862215, 1186485, 1305670, -1152662, -4422743, -5194763, -614180, 935766, -1239635, -539555, 35970, -705985, -1095217, -1628866, -632434, -313533, -978179, -1809792, 153545, -588947, -978716, 343061, -861141, 170188, -1077500, -540629, 212601, 282931, -1298691, -192737, -494458, -2334852, 242129, -821413, 1311039, -17431662, 6905234, -3114925, 2921115, --7211787, -2900714, -5645735, -5162014, 354872, -1621887, -3536369, 8887361, 2305861, -818191, --5383742, -1698123, 2501819, -6164889, -3263638, -5871221, -3267396, 8494908, 830539, 5666136, --537945, -52076, -1422171, 1609539, 1572495, -4498978, 59593, 1353452, 2543158, 9216463, --4811974, -5579163, -1100585, 10193568, 3211025, 10848014, 963683, 1001264, -1912334, 5359046, --925565, 7900056, -797790, -918049, -1414655, -3285650, 3362960, 1019518, -2812130, 2296734, -2981781, 5484137, -3162707, -277562, -976568, 4883915, -1988570, -824097, -1830730, -1250909, -1184337, -1600949, 576599, 823560, -1184337, 1207423, -8081518, 773631, 5267778, 1843078, -7052337, 569620, 758599, 1693828, 4497905, 7182796, -4741644, 687195, -362388, 1693828, --212601, -182536, 2166274, 4655745, 1806034, 2282238, 265214, -812823, -1198833, 628139, -2376728, -831613, 1089311, 1074816, 1134408, -48855, 500901, 1976759, -328565, 517007, --56371, 2281165, 1352378, -746251, -113817, 2454037, 1280437, -744103, 1829656, 999117, --3731790, -1841467, -79457, -8618926, -1440425, 81068, -4290136, -15254113, -3699041, -3289408, --6647536, -1297080, -1709934, 9552544, -3314104, 7224672, 3383897, 5211406, -9808632, -4406637, --9911711, -9207873, -8053, 1733556, 5765994, -2780455, -4333622, -2663417, -6703907, 1435056, -3049427, 3510062, 2159832, -2030983, 2495913, -4471598, 480499, -8066486, 2910914, -2079301, -1102196, 1779190, 3011309, 3218004, -3085934, 122943, 7810935, -4186519, 3783866, 3976603, --263604, 2382096, 3840238, -1584843, 1509681, 3789235, 202937, 6680822, -3503083, -4621922, --2243047, 2185602, -24696, -8877697, -4511327, -9836012, -10714870, -1823214, 2890513, -8725763, -3884261, -1416266, -161598, -2987150, 2916283, -5191005, -838592, -1813550, -7335804, -6459094, --2148558, 3837553, 115427, 3291019, -1393180, 2130304, 1695438, -4054449, 13959, -803159, -2284923, -2733210, -4583804, -1495186, 613643, -3221, -1770600, 779000, -1102196, -415538, -719944, -243203, 41876, -93952, -1049046, -227096, -1018444, -675384, -661425, -23085, -462246, 55835, 1291711, 500364, -638876, 4925254, -14198088, -684510, 4411469, 2784213, --7536057, -917512, -4795331, 1234266, 1439888, 1030792, -8230768, -11017665, -7510824, 1290638, --6004365, 6572374, 2079301, -10608032, 7665443, 6723235, 5317707, 4765266, -5273146, 8643085, -2281165, -61740, -3363496, 2923262, 5177046, -4741107, -6968585, 2582886, -2629594, -8630737, --1153736, -8327942, -3038689, 15098421, -4027069, -6776385, -8412767, 477278, 1374926, 6012418, -2391223, -5518496, 5027796, -633508, -4342749, -5737540, -6104223, 9308268, 4160213, 5869610, --4430796, -6054294, 2736968, 1514513, -6242735, -306016, -3828427, 6021544, -1160715, 545998, --7377143, 4720169, 3941706, -4185983, -2702608, -2594160, 8347806, 110059, 1224066, -2402497, -5719823, -5834176, -9940702, -4425427, 858993, -1894618, 5411659, -1103807, -629750, -5784784, --3064459, 2518462, 324807, -4114579, -2701535, 3528316, 1889786, -1110249, 143881, 60666, --10737, -1127429, 1516124, 686121, 2362769, 385473, 399432, 91805, 1014686, -478352, -1470489, -1941325, 2020245, -7623567, -335007, 1877438, -1915019, -6095096, -9043591, -7246684, -7286949, 843961, 8934069, 10668162, 10357851, 1566589, 14219563, 3410204, -1585380, 6575595, -5017059, 13143137, 1890323, 7556458, -10378788, 17075180, 12559021, 6072547, -5187784, -4110284, -6165426, 1425392, 4422206, -2537252, 7360500, -2196876, -1915555, 6627672, 5377836, -6739878, -4538170, -1799054, 7168838, 7797513, -15286862, -2811593, 9421548, 2849711, 5130339, 4049617, -9329206, -4497368, 3743064, 186294, -7854422, -3818226, -214748, 1651415, -11533061, -962073, -7297150, -5746666, 12248173, 9196062, -3696893, -88584, 2351495, 4614943, 7153268, -2747169, --2305861, 11609297, -2733747, -214212, 5047661, 263067, 6782827, 5424007, 2234994, 3758097, -3912715, 3754338, 1731409, 1613297, -1607928, -2674691, -1130650, -2433099, -285615, -1689533, -1289564, 1191317, -2450279, -1907502, -287226, 1903744, 3794604, 3199751, 1800128, 397284, -1889249, -3223910, -1467268, -1713155, 729608, -1229971, 1695438, -3751654, 419296, -24159, -3278134, 1351841, 168041, 611496, 3397856, 1086090, -2921115, 1016834, -264141, 840740, -29695940, -15530602, 2165201, 12246562, -1177358, 445066, 16207059, 17772038, 2109903, -1348083, -3738232, -846109, 4015795, 5114769, -6495065, -1979443, 10490458, 9276592, -4329864, -8431021, --9033390, -9356049, -5064304, 7808251, -6001680, 3435437, 412854, -10933376, -744640, -7259032, --883690, 3162707, 4796405, -14181982, -6687264, -11286100, -3526168, 17164836, 2455648, -1517197, -1507534, -1524713, 829466, 5092758, 2952790, 8588861, -477815, 6427956, 3789772, -5931350, -3764539, -9043054, 236760, -9082245, -9529996, 3633542, -10484015, 4442070, -143881, 5370857, -4216584, 3886409, -5609228, 6555731, -9512279, -153008, -4396436, -1432909, 11887933, 474057, -5937256, 5956583, -1238024, -2213519, 4580046, -9796820, 3917547, 9425843, -13987098, -10203769, --2876018, 7143605, -684510, -8521215, 3211025, -1191317, 3651259, -3097208, 1100585, -1731409, -6129992, -1083406, 5633924, 3201361, 5258651, 1903207, 1436130, -2709051, 3550327, 1670742, --154082, 2182380, 1781875, -948114, 2638721, 2181307, -1335198, -1315871, -4598836, -861141, --2641405, 1074, -149787, -1449552, 2312303, -705448, 1340567, 602369, 4728222, -3662533, --17729088, 3300146, 4282620, -11975443, 5409512, -78920, 12553116, -3311957, -6386617, 5315559, --15519864, -5334887, 13084081, 5745056, -7971460, -19160922, 8525510, -2662343, 4678293, -12222403, --16215649, -10991895, 14011257, 1155883, 7723425, -1340567, -7439420, -11011222, 5183489, -2930778, --9605157, -11203422, 795643, -9999221, -7713762, -4190278, -1997697, -10833518, 6056978, 7261179, -9787694, -4679904, 8697309, -7009924, 13775034, -2554432, -757525, 10522670, 5387500, -2591476, --7088307, -3528316, 10126996, 2359011, -7563975, 3617436, 10758356, 10204842, 4359929, -12444668, --13778792, -1218160, 2651606, 868657, -9925133, 2981244, 10908143, 3178276, -4680978, -17605070, -4687957, -7652021, -17207786, 550830, 896574, -9698036, 13946833, -996432, -5767068, -19035832, --139050, -5593121, -906238, 7165079, -4286378, -7271917, -510027, 1653026, 1705639, -5762773, --5876052, -5801427, 2126546, -5006322, 296890, -893890, 801011, -1384053, 1388885, 2571612, -2257542, 2937758, 1430761, 5272073, 6671695, 388158, 1950452, 1239098, -2625836, -717260, --2143189, 830002, 715649, 404801, -6515466, 778463, -570157, -2359548, -328028, -2120103, -1941325, -2593624, -2750927, -21936008, 13775034, 10627360, 11699491, 1673427, 12364674, 1270774, --7902203, -9142375, 1404991, 9928354, -6815040, 2328409, -14769856, 10174241, 10790032, -5390721, --3025268, 2520609, 11815455, 8632884, -6054294, -5402532, 8093866, -9629317, 3387119, -13178033, -27917, -3849365, -17680770, -18233210, 3602941, 10622528, 4949950, -15553150, -8367670, 12021077, --13181255, -5415417, 10674604, -2777770, 13331042, -4578972, -9199283, 3580392, -13406740, 15607374, --1580548, 2843268, -7194607, -3592203, -559420, -14459544, -8818105, 1267552, -2289218, 1551020, --4636954, -15349676, 2988224, -12691091, 5794985, -3123515, 9322227, -15316390, 7029251, 2739116, --4297115, 11592654, -1357747, -7796977, -15055471, -1940788, 3426310, -12122545, 9127342, -8158827, -5956046, -15993921, -16364362, 7926899, 6332930, -6482717, -5091147, 5326297, 3653407, -3403762, --2848100, -4337380, -5628555, -431107, -9099962, -880468, -1255204, 779537, 2612951, -1610076, -2640868, -1679869, -506806, -4873178, -2399813, -1259499, -586263, 7413651, -2117419, -940061, -4285841, -4489315, 3221762, 1915555, -1726577, -1022202, -4559645, -4175245, -145492, -2405182, --2910914, 7178501, -6950331, 2396055, 8545911, 12598750, -3302830, 1407139, -4442070, -16798690, --3562139, -3591130, 7332046, -14758044, -11811, -8513699, 9195525, -10325638, -14047764, 9367324, -4338454, 6091874, 19435264, -3201361, -5521181, 5468030, -12381317, -14496588, 1238561, 18554796, -5692979, 10412074, -7357279, -9122511, -14708116, 2937758, 18900004, -8460012, 9906342, 2249489, -14711337, -22437446, -7069516, -394063, 2694555, 12750684, 6222871, -17108466, -4563403, -7953206, --610959, -19698868, -3024731, -7108171, 1430224, -10382547, -615254, 2374580, -28646894, 3260954, --8928700, 1731409, -11289858, -653372, 7144678, 3572876, -3783866, -3677029, -15061913, 15188615, -14718853, 4785668, 3737695, -13183939, 20155744, 6945499, 10436771, -3994320, -31489090, 12266427, --984084, 23649700, 22359600, 6974490, -2756295, 9758703, 624381, 8538932, 570694, 933619, --5478768, 2622078, -4992900, -2782065, -1307818, 10276246, -28991, 568546, 2774549, -712428, --5454609, -2928094, 1077500, 4130148, -1844152, 2025077, -3142842, 4298189, -3291556, -5331128, --2543695, -826244, 2602213, 887448, -987306, -984621, -1010391, 6748468, -1340030, 322123, -1280437, 3328063, 27215060, 9607842, 18631568, -18045306, 4216048, 18997714, -5686537, -6822019, -2700998, -11718818, 8979703, 2289218, -13689671, -17930414, -1330903, 15242302, -376347, -1207960, -9978283, -14854144, -3772055, -12224551, 6894497, -20845624, 361314, -4442070, 7605850, -21772262, --15038291, -9503152, 6403796, 7031935, 4871567, -7049652, 5312338, -5239860, 6477885, -4294968, --1891933, -1481227, -6102612, 4165045, 9660455, 5761162, 9724880, -780073, -9401147, 1361505, --9360881, 25001542, -6298033, -24554864, -7639673, 6736656, 21361556, -21344914, -8792872, -1372779, -13741211, 898722, -30218854, -3692598, 13969381, 28837484, 1083406, 20082194, 28919626, -2130841, -9320079, 13677323, -3764539, 24652576, -3294777, 29766270, 4752918, -8152385, -25782152, -16138876, -207769, 7779797, 3721589, -3905736, -4998268, -7995619, -10926934, -9702868, 11847667, 3482145, --129386, -16940962, -1902134, 645319, -3082176, -9625022, 2531346, 5127654, -1447404, -4977867, --3634079, -9429601, -5694053, -2757369, 5966247, -1145683, -5133560, 5178657, -7380902, 5337034, -5377299, -4610111, -8949101, 8210367, 12175159, 1884954, 382789, 762357, 7097434, -2091649, --8464844, 1022202, 8223789, 6829535, -8405788, -7119982, 1318018, 1372779, 127238, 2457795, --1310502, 11460583, 13868449, -23730768, -23086522, 6149857, -5368709, 760746, -9174050, 21599928, --9664750, -6162741, 7518877, 5435281, 230854, -9828496, -7195681, -11967389, 4859756, -660351, --5781563, -922344, 14365055, 21573620, -23269596, -1451699, -22699440, -2384781, -5850819, 22560926, --9488656, -9053791, -4353486, 13744969, 4575214, 3819300, 5771363, 5522791, -4045859, 307627, --2925410, 3698504, -2665027, 21124260, -5468567, 5635534, 14872398, -7693360, -17015586, 3831648, -5833640, -5954436, -6509023, -1384053, 3531537, 10737418, -14570140, 19605988, 28798830, 19372450, --8048232, -11599096, -26612154, -34333432, -12620225, -86973, -6191732, -1697586, -3887482, 8265128, --686121, -13231720, 6999723, -5833103, -1238561, 12663711, 21068962, -5102958, 5939940, -3652870, -1178969, 19208704, 9703942, 16436840, 16705275, -13277355, -4075924, -3000035, 499290, -250719, -5962489, 466541, 3664681, 16858820, 724776, 7909719, -3535832, -3626026, -6856379, -2048699, -1003949, 7718593, -2099165, -6300180, -2969970, 3754875, -2619930, -1353989, -1947231, 2403034, -632434, -2392834, -1308354, 1800665, 877247, 964757, 9716290, -3877819, 266825, 1350767, -167504, -5248987, 2472828, 3119220, 6215355, -12217571, 23172960, 10440529, 13198435, 19793894, -30566746, -11698954, 15834471, -31405338, -3834332, -14070313, -30856118, 12535936, 7353521, 9440875, -4169340, 12278238, 3775276, -22202296, 18762028, 33108830, -4911295, -5291400, 8138963, 3316252, --6871411, -29460792, 2454574, 132070, -2643016, 425739, 10071698, -21056078, 4603131, 6013491, --4298189, -12135430, -5890011, -13528610, 13840532, -30248918, -4351339, -19448148, 10852845, 4399121, -11005317, -3831648, 3025268, -7719667, 18566070, 5598490, 15248208, -13817447, 14988899, -319438, --14598594, 30254824, -4971962, 3721589, 20459614, -19603842, 22928682, 13697188, -17900350, 7587060, --6818798, 10075993, -24813636, 18183280, 2616172, 6399502, -2291365, 5898601, -20142322, 12866648, -22961432, -45521820, 4696010, 43935904, -28326920, -9093520, 3144990, 21422224, 15227270, 5293547, -13310104, -5976984, 8043937, -3320010, -9670656, 4817880, -2128156, -1622961, 8304856, 11994770, --982474, -4649839, -3951907, 3556233, 7690676, -10133438, -3754875, -6932077, -4272419, -9060770, -9118752, 11989938, -2479807, 5524402, -3361886, 2248952, 7675107, 8616778, -9864466, 852014, -3721589, -5195837, 7932268, 415538, -106300, 7148973, 3702262, -8575439, -7130183, 2451353, -1198833, -2582349, 1517734, 18386754, -11215233, -13495324, -479963, -12923557, -5901822, -34055332, --29070486, -4070019, -16698296, -20047296, -14463302, 8805220, -5180805, -10186589, -16292422, 14931991, -963146, -24616068, -3914326, -215822, -11722039, -3752728, 9921374, 7080254, -1765232, 9664, -428423, -6242198, 5200669, 11375221, -4330938, -2818572, 17558900, -33135136, -5416491, 9215389, -35210680, -14680735, -9172440, -13236552, -17912162, 7710540, 37369436, 6854231, 23139136, 4691715, --3829500, -2047626, -2791729, -18138720, 3932580, 3988414, -14711874, 3159485, 29189672, -4835060, --9028021, 4800700, -10506027, -2505040, 25750476, 37993280, 10266046, 22768158, 26418344, -9481677, --11049877, 2909840, -8743480, 1399623, -26154204, -337692, -20381230, 6090264, 4245575, 12306692, --21214990, -8034810, -7239168, -8420283, -6644852, -7548942, 11811160, 2433636, 15225659, -3979824, -5806259, 15107547, -2793339, 423054, -2203318, -6161131, -4854387, -945967, -3665218, -5675263, --86973, 2184528, -2865817, 905164, 7122130, -7253126, -6476811, 367220, 5346161, 2643552, --3409667, -10690174, -10261751, -1384053, 2433636, -6394133, -3471407, 2091649, -2103460, 983011, -779537, 7101729, 2457258, 1712081, -7885560, 8640400, -3651796, 27110370, 30617748, -12203613, -69198904, -9444096, 1641751, -12735652, 8199630, -5354214, 8093329, 17814988, 5090610, -16503949, --8936216, -17246978, -229244, -11690901, -21378736, 2936147, 13967234, -2291365, 4105989, 6663105, -8214662, -63351, -6127308, -8016557, 4163971, 11274, -10630044, 4260071, 29779692, 21074330, -11999602, -25139518, 18156974, 14218489, -6591164, -7623030, -7656853, -10013179, -4285304, 8241506, --18195092, 1818382, 2327336, 11025718, 28388660, 5548024, 5925981, 1618129, -3339874, -5655935, -12340515, -7371775, 28665148, 9285719, -2716030, 12615930, 2432025, -19202798, -13824426, 16352014, -18804978, 7056632, -4643397, 12560632, 13465796, 19206020, 37402184, 4102768, -10691247, -19108846, --12781286, 9804337, 2158758, 3245922, -1729261, 13244069, 1443109, -1489817, -17387102, -8481487, -18205830, 20481088, -7210713, -13721884, -16478179, -4669167, 8917426, 5705864, 1682554, -5465883, -1487669, 125091, -7267622, 203474, -16111496, -4064113, -564788, 11742977, -2036351, -3364570, -141197, 9557913, -5579163, 6896107, -3446175, -7432441, 6630356, 9456981, 6044630, 6740415, --783832, 7208566, 13413720, 5997922, 5766531, 4000225, -4862440, -2051384, 437013, -1008780, -4080756, -3578245, 6621229, 8645769, 5072357, 809064, -6356552, 2727841, 2414309, 7021198, -11217918, -10737955, 49445812, -7349226, 2102387, 5483600, -3728569, -684510, 12404939, -9190156, --10865194, -5701569, 16008417, 14295262, -38200512, 7379291, 6563784, 15643345, -9745281, -15073188, --14333380, 10945187, 9933722, -15400142, -8374650, -6315213, 25776246, 12955769, 7291244, -4974109, --26574574, 7565048, 6782290, 13752485, -3221226, 7317014, -7306276, 2614025, -23056996, 9629854, -9563818, 355945, -5638755, -14500883, -28682866, 18685792, -12016245, 9615895, 9965398, 16510391, -2423435, -17526688, 29325500, 5734855, -28408524, -13225278, 17221208, 4079145, 22507240, 9473087, -3840775, -20329154, -9895605, 11368778, -35219804, 38115688, -27044872, 1552094, 23038742, -6135361, -45507324, 6803765, 8404714, -16412144, 52993992, 5514738, 34550864, -23315230, -10232760, -7332046, -13617731, -1414655, -5132486, 23966454, -19568408, 23115514, -27189828, 5928129, 3052648, 5028333, --5043366, 20381230, -2168959, 10402948, 9433359, 13547401, 7978976, 3999152, 9765145, 10588168, -676457, 3916473, 1482301, -7093676, 9364102, 320512, 6541235, 12812424, 6727530, 863288, --321049, 9822053, 10841571, 5306969, -5655398, 21442088, -637266, -4236985, -3839701, 13778255, --10100152, 4813585, -1975148, 7423851, 792421, 3103114, 4382478, -2894808, -2018098, 2127620, -4427575, 3581466, 4617090, 5541582, -6131603, 17343614, 40761924, 13534516, 25595858, 32631014, --1403917, 37420440, -28841242, -10326175, -10865194, -9532143, 3991635, 6116034, -2487323, -12730820, --24819006, 23802708, 22434762, 9539659, 20257214, -33226940, -28815472, 9720585, 13707388, -15348603, --21624624, 13812078, -6857989, -30959734, -11447698, -5876052, 15263777, -28458454, 15697569, 10735271, -12418898, -13292924, -874563, -13145284, -5871221, -37906844, -9333501, 18434536, -60224032, -19013284, --2397666, -1303523, 1984812, -36131948, -9102109, -54437100, -4643397, 10815801, -15620259, -16996796, --7161321, 16443282, -5649493, -19590956, -22517976, -56792352, -20389820, 26667452, -25283398, -38203196, -31911070, -9999221, -43147780, 13074417, 38723964, -20712480, -9558450, 4769025, -28352152, 35072704, -15388868, 22478248, -11876658, -2411087, 11356967, 33413234, 15373299, 5332739, -10844792, -2250026, -37660420, 3762391, 5717675, -2697240, -22484154, -9817758, 17577690, -304406, 922344, -3522410, --20121922, -1416266, 8407935, -12256226, 14445586, -18951006, -12449500, 4030290, -6918656, 10014253, -3779034, -17223356, 6880538, 8834211, 4438849, 3438658, -7293928, 4288525, -434329, -4094715, --12568148, 6267968, 4723927, -1276142, 8996346, -13481902, 1242856, -12894566, 49392, 3642132, --4937602, -2078227, -979253, 5354214, 418759, 47595752, 65606164, -9679246, -1520955, -24999930, --25162602, -43725988, 19250044, -7008313, 65527244, -13229036, -27649926, -38662220, 2746095, 12682502, --14006962, 12775917, 42996380, -16363825, -7122130, -29214368, -13060996, 29255706, 33626372, -32937030, --9030169, 17586818, -6782290, 8038568, -9550934, 42239928, 33913060, 71675488, 23630910, 31957778, --13597866, 23045720, 48566416, 16084653, -2659659, 11688753, -1212791, 31845036, 16827682, 46229416, -13306882, -45714020, 16625818, 18287434, 38440496, -20827370, -17713518, 22501334, 24299852, -10919417, -38636452, -12903692, 16079284, -41548440, 26998702, -9371619, 14985678, 15454903, 33921116, 29543470, --22709640, -23616952, -7361037, 35653596, 35930624, -12887586, -19331648, -37341520, -3917547, 27187680, -30626338, 20667920, -8454106, -24517820, -23310934, -3517041, 16843252, -15810311, 23331336, 6269042, -16401943, 3460133, -7821136, 18816788, 11847130, -2103460, -7388955, 6346351, 15801722, -21746494, -9357123, 11872900, 15397995, 8927090, 21628918, -6359773, 7823820, -9302899, -14316200, 9143985, -18240726, 16476031, 24380918, 463856, -49392, 7950522, 6659884, 43728672, 8489540, -1100585, --18580028, 826781, 27710592, 14714558, 21438866, 13114146, -439160, 1119913, -4620848, 562104, -26593900, 22705882, 2400887, 8956617, -2604898, -3611531, 1012539, 11918534, 8495982, 8160975, --5734855, -4853850, 6363531, 1636919, -15897285, -52763136, 3762928, 81046568, 48425220, -11223286, --118620016, -16892106, -12009802, 9363029, -13470091, 2331094, 12406550, -4447976, 5369246, -25729538, -16510928, 19931870, 36696200, -26423712, -33491082, 34765612, 54913304, 13943074, -24392730, -32399622, --6979322, 8275865, 3077344, 8790187, 208843, 12194486, 4867809, 35955856, -11449846, -49115100, --21335250, 15945603, 5792301, -16909824, -21549998, 2983929, 23213762, 41351408, 37831684, -690416, -629213, 15643345, -14635101, -42359652, 12904229, -26373784, 51005956, 56084220, -1144072, 15940771, -7989713, 11304354, -24751896, -3409130, 53179212, -19883552, 473520, -72110888, -9622337, 8348880, -16698833, 15917149, 14942728, -17707614, -11274289, 32913946, 47877076, -8254927, -2097555, 4859756, -19259170, 23591718, -10897406, 8086887, -26103738, -30554398, 3120831, 8680129, 11366094, -3518652, --4853313, -5583995, -6662568, 21282100, -162672, -3685082, -11108396, -616328, 12951474, 12050068, --6350109, 16387985, 3643743, 24797530, 1972464, 4619774, 756451, -8329552, -7407745, -4021700, --5776194, -1375463, -7457674, -4861366, 1807644, 20692616, 23000086, 7159174, 11908334, 4820564, -4107599, 20248086, -14483167, 15450608, 5357435, 25141664, -6761889, 6800007, 4460324, -9771051, -7753490, -4480188, 7911330, -2489471, 13583908, -4511863, -8684961, 7127498, 2840584, 3651259, -5258114, 3753265, 9573482, 2208687, 3465502, 2101313, 3238942, 3721052, 2735357, 6669011, -4394826, 1012002, 645856, 1705102, 5940477, 4809827, 4429185, 5477694, -6285685, -53438520, --22168474, 42549168, 46921980, 44537736, 60453276, 10289131, -26148834, -80000208, -60723860, -11544335, -16848082, 50502372, 55006184, 25916906, 1159641, -26953604, -23276576, -10444824, 17138530, 47114180, -26793616, -6383932, 1670742, -4011500, -25999048, -35676144, -29110214, 5283347, 43481176, 32517198, -65407520, 42381664, 42112156, 59117004, -17303350, -41166724, -46642272, -62105764, -76261976, -28982976, --9013526, 22431004, 41960756, 60401200, 56638272, 45806364, 29117194, 58001924, -11399917, -37063420, --1733556, -9630927, 15408195, 17362942, 69524784, 60442000, -22573274, 10616085, -15806553, -46768436, --13708462, 12054899, -27972586, 42913704, -17289928, 14060649, 3697967, -5240934, 37404332, 51622284, -41442140, 28819230, -21559126, -52861920, -59757492, 16726750, -25179246, 4257387, -2852932, 33392834, -5299453, 18740016, -16101296, -37175628, -34133716, -53997404, -46603616, 19435264, 11180337, 26633630, -40685688, 31258772, 1242319, -24336358, -38580080, -52765820, -28628104, -13780403, -19250044, 8237211, --6980396, -6493454, -6185290, -16325171, 168577, -7490423, -10548977, -13060459, -8020852, -2130304, -8383776, -15719580, -9545565, 22308060, 2232846, -119464512, -125736776, -130787120, -134055592, -177140560, --19223200, -50107236, -12120398, 16551193, 80706192, 91716880, 94836632, 132741872, 183504624, 175827904, -172805856, 138838576, 100291248, 72878080, 21925808, -83719112, -40156332, -49458696, -30610768, -100545184, --16660178, -41609644, -45818712, -83195664, -63918776, -65040300, -58906012, -61546344, -108156400, -95783680, --56499756, -51095080, -64177548, -88938576, -13483513, -77876880, -147614272, -126491616, -111038328, -58529668, --75420160, -13453448, -152784864, -67647880, -67648960, -31255550, -22764400, -78668768, 3539590, -78816944, --9468255, 12314208, 37006512, 3340411, 38034084, 56727928, 89203784, 95056216, 130791416, 85453744, -205208704, 129667208, 238850640, 162376064, 237952464, 275961856, 327714592, 269165056, 271026944, 305413504, -274085472, 278319776, 270913120, 234870288, 135953424, 108615968, 76703288, 55919400, 65488588, 97633736, -53890028, -19767050, -33867964, -39142184, -67223216, -87312928, -106416944, -98044440, -161110672, -156117232, --160748816, -194795552, -171485152, -216383680, -191542656, -224826512, -230847520, -217517552, -239963584, -217045632, --242307024, -192364608, -188419680, -156209568, -166662992, -171856144, -120736360, -108163384, -82571280, -42059004, -14302241, 46119896, 40519260, 51621748, 46302968, 52185464, 60047400, 85623392, 102984728, 93013960, -83799640, 102304512, 95332168, 117667608, 107268952, 78353624, 71478992, 62064424, 54842976, 34498788, -26384520, 24437290, 15589658, 16940962, 6990596, 11067594, 9880572, 6725382, 9915469, 7137162, -4484483, 1649804, -3459596, -496606, 87510, -10295573, -16087337, -9226127, -7261179, -6651831, --4581657, -3251827, -2968896, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +1573569, -5842766, 2067490, -3676492, 1025423, -2377801, -1482301, -3195456, 2348273, 4016868, +1200443, 1285269, -7240241, 1482301, 179315, 2319282, 2834142, 1577327, 4240744, -833224, +-2290291, 493384, 5058398, 82678, -3781182, -334471, 4315369, 2367064, 513785, 93952, +1254667, -56371, 381178, 877784, -79457, -1468342, -123480, 91268, 1730335, -2441689, +-5812702, 4386772, 4384088, 3836480, 3599720, -127238, 1990717, 3438658, -3501472, -744640, +-34897, -4678830, 1128503, 405874, 4346507, 503585, 2462627, 132070, 5450851, 2798171, +-730144, 3849365, 2350958, -1167694, -4343823, 1163936, 1209033, -1100585, 389768, -2437931, +-594853, 2316061, 1629940, 1935957, 4505958, -673236, -1341640, 672699, 2704219, 6169721, +-3528853, 1693828, 1710471, 1845225, -123480, -343061, 1946157, -985158, 111132, 962610, +-1089311, -130460, 233002, 388695, -690416, -1063541, 773094, -207769, 199716, -344671, +1175747, -71404, 1387811, -246424, 11334419, -7558606, 2563022, 6385543, 1499481, 4504347, +5449777, -4932770, 1046898, -439160, 2124935, -6256694, -4970351, -914291, 4881767, 6622303, +-2527052, -2173790, 3173444, -5350456, -7170985, -1309428, -8434779, 2905546, 2803540, 780610, +-5240397, -5318244, 1898912, -3088618, 722628, -140660, 5561983, 5887864, 5302137, -845035, +3715147, -5791764, 2527588, -3408057, -316217, 325344, 4536023, -4881231, -4353486, 51003, +5966247, 2478733, 2328409, -3597035, 2018098, 1497333, -1764158, -7442105, -1214939, -2512556, +-3283503, -2932926, 3414499, -3120831, -1021665, 796180, 2116882, 5376226, -2061584, -107374, +-4050154, -1938104, 828392, -5578626, -356482, 1550483, 3820374, -1194538, -2914135, -1444720, +-5841156, 2783676, 1698123, 362388, -487479, -5013838, 2061584, 442919, -1808718, 1859184, +-731218, 473520, 1656784, 193274, 331786, 1972464, 852014, 431107, 36507, 1588601, +558883, -263067, 627065, 945430, -4001836, -7248831, -1810329, 1243393, -2238752, -3671123, +-2036888, -7226283, -4072166, 7630010, -311385, -3388729, 4042638, -6120329, -1406602, -7632694, +-1591285, -6016176, -3149285, 7056632, 364535, -1443646, -7974144, -4975720, -1804423, -3420405, +1342177, -4248797, 409096, 2632815, 8441221, 4137664, 3162170, 3652333, 6832219, -5751498, +-73014, -1726577, -4435628, 1823751, -911607, -1729798, -4642323, 2413772, 4868883, 507343, +-3545496, -2272038, 12472048, 50466, -3590056, -4996121, -7486128, -9972377, -1248762, -5171678, +1193464, -1014149, 2782065, 517007, 1343788, -4582730, 681826, 748398, 6034429, 2039573, +-4519380, 252866, -1407676, -1342177, -1079647, 2157684, 3234647, 3169686, -2960306, -2880849, +1814624, 862215, 1186485, 1305670, -1152662, -4422743, -5194763, -614180, 935766, -1239635, +539555, 35970, -705985, -1095217, -1628866, -632434, -313533, -978179, -1809792, 153545, +588947, -978716, 343061, -861141, 170188, -1077500, -540629, 212601, 282931, -1298691, +192737, -494458, -2334852, 242129, -821413, 1311039, -17431662, 6905234, -3114925, 2921115, +-7211787, -2900714, -5645735, -5162014, 354872, -1621887, -3536369, 8887361, 2305861, -818191, +-5383742, -1698123, 2501819, -6164889, -3263638, -5871221, -3267396, 8494908, 830539, 5666136, +-537945, -52076, -1422171, 1609539, 1572495, -4498978, 59593, 1353452, 2543158, 9216463, +-4811974, -5579163, -1100585, 10193568, 3211025, 10848014, 963683, 1001264, -1912334, 5359046, +-925565, 7900056, -797790, -918049, -1414655, -3285650, 3362960, 1019518, -2812130, 2296734, +2981781, 5484137, -3162707, -277562, -976568, 4883915, -1988570, -824097, -1830730, -1250909, +1184337, -1600949, 576599, 823560, -1184337, 1207423, -8081518, 773631, 5267778, 1843078, +7052337, 569620, 758599, 1693828, 4497905, 7182796, -4741644, 687195, -362388, 1693828, +-212601, -182536, 2166274, 4655745, 1806034, 2282238, 265214, -812823, -1198833, 628139, +2376728, -831613, 1089311, 1074816, 1134408, -48855, 500901, 1976759, -328565, 517007, +-56371, 2281165, 1352378, -746251, -113817, 2454037, 1280437, -744103, 1829656, 999117, +-3731790, -1841467, -79457, -8618926, -1440425, 81068, -4290136, -15254113, -3699041, -3289408, +-6647536, -1297080, -1709934, 9552544, -3314104, 7224672, 3383897, 5211406, -9808632, -4406637, +-9911711, -9207873, -8053, 1733556, 5765994, -2780455, -4333622, -2663417, -6703907, 1435056, +3049427, 3510062, 2159832, -2030983, 2495913, -4471598, 480499, -8066486, 2910914, -2079301, +1102196, 1779190, 3011309, 3218004, -3085934, 122943, 7810935, -4186519, 3783866, 3976603, +-263604, 2382096, 3840238, -1584843, 1509681, 3789235, 202937, 6680822, -3503083, -4621922, +-2243047, 2185602, -24696, -8877697, -4511327, -9836012, -10714870, -1823214, 2890513, -8725763, +3884261, -1416266, -161598, -2987150, 2916283, -5191005, -838592, -1813550, -7335804, -6459094, +-2148558, 3837553, 115427, 3291019, -1393180, 2130304, 1695438, -4054449, 13959, -803159, +2284923, -2733210, -4583804, -1495186, 613643, -3221, -1770600, 779000, -1102196, -415538, +719944, -243203, 41876, -93952, -1049046, -227096, -1018444, -675384, -661425, -23085, +462246, 55835, 1291711, 500364, -638876, 4925254, -14198088, -684510, 4411469, 2784213, +-7536057, -917512, -4795331, 1234266, 1439888, 1030792, -8230768, -11017665, -7510824, 1290638, +-6004365, 6572374, 2079301, -10608032, 7665443, 6723235, 5317707, 4765266, -5273146, 8643085, +2281165, -61740, -3363496, 2923262, 5177046, -4741107, -6968585, 2582886, -2629594, -8630737, +-1153736, -8327942, -3038689, 15098421, -4027069, -6776385, -8412767, 477278, 1374926, 6012418, +2391223, -5518496, 5027796, -633508, -4342749, -5737540, -6104223, 9308268, 4160213, 5869610, +-4430796, -6054294, 2736968, 1514513, -6242735, -306016, -3828427, 6021544, -1160715, 545998, +-7377143, 4720169, 3941706, -4185983, -2702608, -2594160, 8347806, 110059, 1224066, -2402497, +5719823, -5834176, -9940702, -4425427, 858993, -1894618, 5411659, -1103807, -629750, -5784784, +-3064459, 2518462, 324807, -4114579, -2701535, 3528316, 1889786, -1110249, 143881, 60666, +-10737, -1127429, 1516124, 686121, 2362769, 385473, 399432, 91805, 1014686, -478352, +1470489, -1941325, 2020245, -7623567, -335007, 1877438, -1915019, -6095096, -9043591, -7246684, +7286949, 843961, 8934069, 10668162, 10357851, 1566589, 14219563, 3410204, -1585380, 6575595, +5017059, 13143137, 1890323, 7556458, -10378788, 17075180, 12559021, 6072547, -5187784, -4110284, +6165426, 1425392, 4422206, -2537252, 7360500, -2196876, -1915555, 6627672, 5377836, -6739878, +4538170, -1799054, 7168838, 7797513, -15286862, -2811593, 9421548, 2849711, 5130339, 4049617, +9329206, -4497368, 3743064, 186294, -7854422, -3818226, -214748, 1651415, -11533061, -962073, +7297150, -5746666, 12248173, 9196062, -3696893, -88584, 2351495, 4614943, 7153268, -2747169, +-2305861, 11609297, -2733747, -214212, 5047661, 263067, 6782827, 5424007, 2234994, 3758097, +3912715, 3754338, 1731409, 1613297, -1607928, -2674691, -1130650, -2433099, -285615, -1689533, +1289564, 1191317, -2450279, -1907502, -287226, 1903744, 3794604, 3199751, 1800128, 397284, +1889249, -3223910, -1467268, -1713155, 729608, -1229971, 1695438, -3751654, 419296, -24159, +3278134, 1351841, 168041, 611496, 3397856, 1086090, -2921115, 1016834, -264141, 840740, +29695940, -15530602, 2165201, 12246562, -1177358, 445066, 16207059, 17772038, 2109903, -1348083, +3738232, -846109, 4015795, 5114769, -6495065, -1979443, 10490458, 9276592, -4329864, -8431021, +-9033390, -9356049, -5064304, 7808251, -6001680, 3435437, 412854, -10933376, -744640, -7259032, +-883690, 3162707, 4796405, -14181982, -6687264, -11286100, -3526168, 17164836, 2455648, -1517197, +1507534, -1524713, 829466, 5092758, 2952790, 8588861, -477815, 6427956, 3789772, -5931350, +3764539, -9043054, 236760, -9082245, -9529996, 3633542, -10484015, 4442070, -143881, 5370857, +4216584, 3886409, -5609228, 6555731, -9512279, -153008, -4396436, -1432909, 11887933, 474057, +5937256, 5956583, -1238024, -2213519, 4580046, -9796820, 3917547, 9425843, -13987098, -10203769, +-2876018, 7143605, -684510, -8521215, 3211025, -1191317, 3651259, -3097208, 1100585, -1731409, +6129992, -1083406, 5633924, 3201361, 5258651, 1903207, 1436130, -2709051, 3550327, 1670742, +-154082, 2182380, 1781875, -948114, 2638721, 2181307, -1335198, -1315871, -4598836, -861141, +-2641405, 1074, -149787, -1449552, 2312303, -705448, 1340567, 602369, 4728222, -3662533, +-17729088, 3300146, 4282620, -11975443, 5409512, -78920, 12553116, -3311957, -6386617, 5315559, +-15519864, -5334887, 13084081, 5745056, -7971460, -19160922, 8525510, -2662343, 4678293, -12222403, +-16215649, -10991895, 14011257, 1155883, 7723425, -1340567, -7439420, -11011222, 5183489, -2930778, +-9605157, -11203422, 795643, -9999221, -7713762, -4190278, -1997697, -10833518, 6056978, 7261179, +9787694, -4679904, 8697309, -7009924, 13775034, -2554432, -757525, 10522670, 5387500, -2591476, +-7088307, -3528316, 10126996, 2359011, -7563975, 3617436, 10758356, 10204842, 4359929, -12444668, +-13778792, -1218160, 2651606, 868657, -9925133, 2981244, 10908143, 3178276, -4680978, -17605070, +4687957, -7652021, -17207786, 550830, 896574, -9698036, 13946833, -996432, -5767068, -19035832, +-139050, -5593121, -906238, 7165079, -4286378, -7271917, -510027, 1653026, 1705639, -5762773, +-5876052, -5801427, 2126546, -5006322, 296890, -893890, 801011, -1384053, 1388885, 2571612, +2257542, 2937758, 1430761, 5272073, 6671695, 388158, 1950452, 1239098, -2625836, -717260, +-2143189, 830002, 715649, 404801, -6515466, 778463, -570157, -2359548, -328028, -2120103, +1941325, -2593624, -2750927, -21936008, 13775034, 10627360, 11699491, 1673427, 12364674, 1270774, +-7902203, -9142375, 1404991, 9928354, -6815040, 2328409, -14769856, 10174241, 10790032, -5390721, +-3025268, 2520609, 11815455, 8632884, -6054294, -5402532, 8093866, -9629317, 3387119, -13178033, +27917, -3849365, -17680770, -18233210, 3602941, 10622528, 4949950, -15553150, -8367670, 12021077, +-13181255, -5415417, 10674604, -2777770, 13331042, -4578972, -9199283, 3580392, -13406740, 15607374, +-1580548, 2843268, -7194607, -3592203, -559420, -14459544, -8818105, 1267552, -2289218, 1551020, +-4636954, -15349676, 2988224, -12691091, 5794985, -3123515, 9322227, -15316390, 7029251, 2739116, +-4297115, 11592654, -1357747, -7796977, -15055471, -1940788, 3426310, -12122545, 9127342, -8158827, +5956046, -15993921, -16364362, 7926899, 6332930, -6482717, -5091147, 5326297, 3653407, -3403762, +-2848100, -4337380, -5628555, -431107, -9099962, -880468, -1255204, 779537, 2612951, -1610076, +2640868, -1679869, -506806, -4873178, -2399813, -1259499, -586263, 7413651, -2117419, -940061, +4285841, -4489315, 3221762, 1915555, -1726577, -1022202, -4559645, -4175245, -145492, -2405182, +-2910914, 7178501, -6950331, 2396055, 8545911, 12598750, -3302830, 1407139, -4442070, -16798690, +-3562139, -3591130, 7332046, -14758044, -11811, -8513699, 9195525, -10325638, -14047764, 9367324, +4338454, 6091874, 19435264, -3201361, -5521181, 5468030, -12381317, -14496588, 1238561, 18554796, +5692979, 10412074, -7357279, -9122511, -14708116, 2937758, 18900004, -8460012, 9906342, 2249489, +14711337, -22437446, -7069516, -394063, 2694555, 12750684, 6222871, -17108466, -4563403, -7953206, +-610959, -19698868, -3024731, -7108171, 1430224, -10382547, -615254, 2374580, -28646894, 3260954, +-8928700, 1731409, -11289858, -653372, 7144678, 3572876, -3783866, -3677029, -15061913, 15188615, +14718853, 4785668, 3737695, -13183939, 20155744, 6945499, 10436771, -3994320, -31489090, 12266427, +-984084, 23649700, 22359600, 6974490, -2756295, 9758703, 624381, 8538932, 570694, 933619, +-5478768, 2622078, -4992900, -2782065, -1307818, 10276246, -28991, 568546, 2774549, -712428, +-5454609, -2928094, 1077500, 4130148, -1844152, 2025077, -3142842, 4298189, -3291556, -5331128, +-2543695, -826244, 2602213, 887448, -987306, -984621, -1010391, 6748468, -1340030, 322123, +1280437, 3328063, 27215060, 9607842, 18631568, -18045306, 4216048, 18997714, -5686537, -6822019, +2700998, -11718818, 8979703, 2289218, -13689671, -17930414, -1330903, 15242302, -376347, -1207960, +9978283, -14854144, -3772055, -12224551, 6894497, -20845624, 361314, -4442070, 7605850, -21772262, +-15038291, -9503152, 6403796, 7031935, 4871567, -7049652, 5312338, -5239860, 6477885, -4294968, +-1891933, -1481227, -6102612, 4165045, 9660455, 5761162, 9724880, -780073, -9401147, 1361505, +-9360881, 25001542, -6298033, -24554864, -7639673, 6736656, 21361556, -21344914, -8792872, -1372779, +13741211, 898722, -30218854, -3692598, 13969381, 28837484, 1083406, 20082194, 28919626, -2130841, +9320079, 13677323, -3764539, 24652576, -3294777, 29766270, 4752918, -8152385, -25782152, -16138876, +207769, 7779797, 3721589, -3905736, -4998268, -7995619, -10926934, -9702868, 11847667, 3482145, +-129386, -16940962, -1902134, 645319, -3082176, -9625022, 2531346, 5127654, -1447404, -4977867, +-3634079, -9429601, -5694053, -2757369, 5966247, -1145683, -5133560, 5178657, -7380902, 5337034, +5377299, -4610111, -8949101, 8210367, 12175159, 1884954, 382789, 762357, 7097434, -2091649, +-8464844, 1022202, 8223789, 6829535, -8405788, -7119982, 1318018, 1372779, 127238, 2457795, +-1310502, 11460583, 13868449, -23730768, -23086522, 6149857, -5368709, 760746, -9174050, 21599928, +-9664750, -6162741, 7518877, 5435281, 230854, -9828496, -7195681, -11967389, 4859756, -660351, +-5781563, -922344, 14365055, 21573620, -23269596, -1451699, -22699440, -2384781, -5850819, 22560926, +-9488656, -9053791, -4353486, 13744969, 4575214, 3819300, 5771363, 5522791, -4045859, 307627, +-2925410, 3698504, -2665027, 21124260, -5468567, 5635534, 14872398, -7693360, -17015586, 3831648, +5833640, -5954436, -6509023, -1384053, 3531537, 10737418, -14570140, 19605988, 28798830, 19372450, +-8048232, -11599096, -26612154, -34333432, -12620225, -86973, -6191732, -1697586, -3887482, 8265128, +-686121, -13231720, 6999723, -5833103, -1238561, 12663711, 21068962, -5102958, 5939940, -3652870, +1178969, 19208704, 9703942, 16436840, 16705275, -13277355, -4075924, -3000035, 499290, -250719, +5962489, 466541, 3664681, 16858820, 724776, 7909719, -3535832, -3626026, -6856379, -2048699, +1003949, 7718593, -2099165, -6300180, -2969970, 3754875, -2619930, -1353989, -1947231, 2403034, +632434, -2392834, -1308354, 1800665, 877247, 964757, 9716290, -3877819, 266825, 1350767, +167504, -5248987, 2472828, 3119220, 6215355, -12217571, 23172960, 10440529, 13198435, 19793894, +30566746, -11698954, 15834471, -31405338, -3834332, -14070313, -30856118, 12535936, 7353521, 9440875, +4169340, 12278238, 3775276, -22202296, 18762028, 33108830, -4911295, -5291400, 8138963, 3316252, +-6871411, -29460792, 2454574, 132070, -2643016, 425739, 10071698, -21056078, 4603131, 6013491, +-4298189, -12135430, -5890011, -13528610, 13840532, -30248918, -4351339, -19448148, 10852845, 4399121, +11005317, -3831648, 3025268, -7719667, 18566070, 5598490, 15248208, -13817447, 14988899, -319438, +-14598594, 30254824, -4971962, 3721589, 20459614, -19603842, 22928682, 13697188, -17900350, 7587060, +-6818798, 10075993, -24813636, 18183280, 2616172, 6399502, -2291365, 5898601, -20142322, 12866648, +22961432, -45521820, 4696010, 43935904, -28326920, -9093520, 3144990, 21422224, 15227270, 5293547, +13310104, -5976984, 8043937, -3320010, -9670656, 4817880, -2128156, -1622961, 8304856, 11994770, +-982474, -4649839, -3951907, 3556233, 7690676, -10133438, -3754875, -6932077, -4272419, -9060770, +9118752, 11989938, -2479807, 5524402, -3361886, 2248952, 7675107, 8616778, -9864466, 852014, +3721589, -5195837, 7932268, 415538, -106300, 7148973, 3702262, -8575439, -7130183, 2451353, +1198833, -2582349, 1517734, 18386754, -11215233, -13495324, -479963, -12923557, -5901822, -34055332, +-29070486, -4070019, -16698296, -20047296, -14463302, 8805220, -5180805, -10186589, -16292422, 14931991, +963146, -24616068, -3914326, -215822, -11722039, -3752728, 9921374, 7080254, -1765232, 9664, +428423, -6242198, 5200669, 11375221, -4330938, -2818572, 17558900, -33135136, -5416491, 9215389, +35210680, -14680735, -9172440, -13236552, -17912162, 7710540, 37369436, 6854231, 23139136, 4691715, +-3829500, -2047626, -2791729, -18138720, 3932580, 3988414, -14711874, 3159485, 29189672, -4835060, +-9028021, 4800700, -10506027, -2505040, 25750476, 37993280, 10266046, 22768158, 26418344, -9481677, +-11049877, 2909840, -8743480, 1399623, -26154204, -337692, -20381230, 6090264, 4245575, 12306692, +-21214990, -8034810, -7239168, -8420283, -6644852, -7548942, 11811160, 2433636, 15225659, -3979824, +5806259, 15107547, -2793339, 423054, -2203318, -6161131, -4854387, -945967, -3665218, -5675263, +-86973, 2184528, -2865817, 905164, 7122130, -7253126, -6476811, 367220, 5346161, 2643552, +-3409667, -10690174, -10261751, -1384053, 2433636, -6394133, -3471407, 2091649, -2103460, 983011, +779537, 7101729, 2457258, 1712081, -7885560, 8640400, -3651796, 27110370, 30617748, -12203613, +69198904, -9444096, 1641751, -12735652, 8199630, -5354214, 8093329, 17814988, 5090610, -16503949, +-8936216, -17246978, -229244, -11690901, -21378736, 2936147, 13967234, -2291365, 4105989, 6663105, +8214662, -63351, -6127308, -8016557, 4163971, 11274, -10630044, 4260071, 29779692, 21074330, +11999602, -25139518, 18156974, 14218489, -6591164, -7623030, -7656853, -10013179, -4285304, 8241506, +-18195092, 1818382, 2327336, 11025718, 28388660, 5548024, 5925981, 1618129, -3339874, -5655935, +12340515, -7371775, 28665148, 9285719, -2716030, 12615930, 2432025, -19202798, -13824426, 16352014, +18804978, 7056632, -4643397, 12560632, 13465796, 19206020, 37402184, 4102768, -10691247, -19108846, +-12781286, 9804337, 2158758, 3245922, -1729261, 13244069, 1443109, -1489817, -17387102, -8481487, +18205830, 20481088, -7210713, -13721884, -16478179, -4669167, 8917426, 5705864, 1682554, -5465883, +1487669, 125091, -7267622, 203474, -16111496, -4064113, -564788, 11742977, -2036351, -3364570, +141197, 9557913, -5579163, 6896107, -3446175, -7432441, 6630356, 9456981, 6044630, 6740415, +-783832, 7208566, 13413720, 5997922, 5766531, 4000225, -4862440, -2051384, 437013, -1008780, +4080756, -3578245, 6621229, 8645769, 5072357, 809064, -6356552, 2727841, 2414309, 7021198, +11217918, -10737955, 49445812, -7349226, 2102387, 5483600, -3728569, -684510, 12404939, -9190156, +-10865194, -5701569, 16008417, 14295262, -38200512, 7379291, 6563784, 15643345, -9745281, -15073188, +-14333380, 10945187, 9933722, -15400142, -8374650, -6315213, 25776246, 12955769, 7291244, -4974109, +-26574574, 7565048, 6782290, 13752485, -3221226, 7317014, -7306276, 2614025, -23056996, 9629854, +9563818, 355945, -5638755, -14500883, -28682866, 18685792, -12016245, 9615895, 9965398, 16510391, +2423435, -17526688, 29325500, 5734855, -28408524, -13225278, 17221208, 4079145, 22507240, 9473087, +3840775, -20329154, -9895605, 11368778, -35219804, 38115688, -27044872, 1552094, 23038742, -6135361, +45507324, 6803765, 8404714, -16412144, 52993992, 5514738, 34550864, -23315230, -10232760, -7332046, +13617731, -1414655, -5132486, 23966454, -19568408, 23115514, -27189828, 5928129, 3052648, 5028333, +-5043366, 20381230, -2168959, 10402948, 9433359, 13547401, 7978976, 3999152, 9765145, 10588168, +676457, 3916473, 1482301, -7093676, 9364102, 320512, 6541235, 12812424, 6727530, 863288, +-321049, 9822053, 10841571, 5306969, -5655398, 21442088, -637266, -4236985, -3839701, 13778255, +-10100152, 4813585, -1975148, 7423851, 792421, 3103114, 4382478, -2894808, -2018098, 2127620, +4427575, 3581466, 4617090, 5541582, -6131603, 17343614, 40761924, 13534516, 25595858, 32631014, +-1403917, 37420440, -28841242, -10326175, -10865194, -9532143, 3991635, 6116034, -2487323, -12730820, +-24819006, 23802708, 22434762, 9539659, 20257214, -33226940, -28815472, 9720585, 13707388, -15348603, +-21624624, 13812078, -6857989, -30959734, -11447698, -5876052, 15263777, -28458454, 15697569, 10735271, +12418898, -13292924, -874563, -13145284, -5871221, -37906844, -9333501, 18434536, -60224032, -19013284, +-2397666, -1303523, 1984812, -36131948, -9102109, -54437100, -4643397, 10815801, -15620259, -16996796, +-7161321, 16443282, -5649493, -19590956, -22517976, -56792352, -20389820, 26667452, -25283398, -38203196, +31911070, -9999221, -43147780, 13074417, 38723964, -20712480, -9558450, 4769025, -28352152, 35072704, +15388868, 22478248, -11876658, -2411087, 11356967, 33413234, 15373299, 5332739, -10844792, -2250026, +37660420, 3762391, 5717675, -2697240, -22484154, -9817758, 17577690, -304406, 922344, -3522410, +-20121922, -1416266, 8407935, -12256226, 14445586, -18951006, -12449500, 4030290, -6918656, 10014253, +3779034, -17223356, 6880538, 8834211, 4438849, 3438658, -7293928, 4288525, -434329, -4094715, +-12568148, 6267968, 4723927, -1276142, 8996346, -13481902, 1242856, -12894566, 49392, 3642132, +-4937602, -2078227, -979253, 5354214, 418759, 47595752, 65606164, -9679246, -1520955, -24999930, +-25162602, -43725988, 19250044, -7008313, 65527244, -13229036, -27649926, -38662220, 2746095, 12682502, +-14006962, 12775917, 42996380, -16363825, -7122130, -29214368, -13060996, 29255706, 33626372, -32937030, +-9030169, 17586818, -6782290, 8038568, -9550934, 42239928, 33913060, 71675488, 23630910, 31957778, +-13597866, 23045720, 48566416, 16084653, -2659659, 11688753, -1212791, 31845036, 16827682, 46229416, +13306882, -45714020, 16625818, 18287434, 38440496, -20827370, -17713518, 22501334, 24299852, -10919417, +38636452, -12903692, 16079284, -41548440, 26998702, -9371619, 14985678, 15454903, 33921116, 29543470, +-22709640, -23616952, -7361037, 35653596, 35930624, -12887586, -19331648, -37341520, -3917547, 27187680, +30626338, 20667920, -8454106, -24517820, -23310934, -3517041, 16843252, -15810311, 23331336, 6269042, +16401943, 3460133, -7821136, 18816788, 11847130, -2103460, -7388955, 6346351, 15801722, -21746494, +9357123, 11872900, 15397995, 8927090, 21628918, -6359773, 7823820, -9302899, -14316200, 9143985, +18240726, 16476031, 24380918, 463856, -49392, 7950522, 6659884, 43728672, 8489540, -1100585, +-18580028, 826781, 27710592, 14714558, 21438866, 13114146, -439160, 1119913, -4620848, 562104, +26593900, 22705882, 2400887, 8956617, -2604898, -3611531, 1012539, 11918534, 8495982, 8160975, +-5734855, -4853850, 6363531, 1636919, -15897285, -52763136, 3762928, 81046568, 48425220, -11223286, +-118620016, -16892106, -12009802, 9363029, -13470091, 2331094, 12406550, -4447976, 5369246, -25729538, +16510928, 19931870, 36696200, -26423712, -33491082, 34765612, 54913304, 13943074, -24392730, -32399622, +-6979322, 8275865, 3077344, 8790187, 208843, 12194486, 4867809, 35955856, -11449846, -49115100, +-21335250, 15945603, 5792301, -16909824, -21549998, 2983929, 23213762, 41351408, 37831684, -690416, +629213, 15643345, -14635101, -42359652, 12904229, -26373784, 51005956, 56084220, -1144072, 15940771, +7989713, 11304354, -24751896, -3409130, 53179212, -19883552, 473520, -72110888, -9622337, 8348880, +16698833, 15917149, 14942728, -17707614, -11274289, 32913946, 47877076, -8254927, -2097555, 4859756, +19259170, 23591718, -10897406, 8086887, -26103738, -30554398, 3120831, 8680129, 11366094, -3518652, +-4853313, -5583995, -6662568, 21282100, -162672, -3685082, -11108396, -616328, 12951474, 12050068, +-6350109, 16387985, 3643743, 24797530, 1972464, 4619774, 756451, -8329552, -7407745, -4021700, +-5776194, -1375463, -7457674, -4861366, 1807644, 20692616, 23000086, 7159174, 11908334, 4820564, +4107599, 20248086, -14483167, 15450608, 5357435, 25141664, -6761889, 6800007, 4460324, -9771051, +7753490, -4480188, 7911330, -2489471, 13583908, -4511863, -8684961, 7127498, 2840584, 3651259, +5258114, 3753265, 9573482, 2208687, 3465502, 2101313, 3238942, 3721052, 2735357, 6669011, +4394826, 1012002, 645856, 1705102, 5940477, 4809827, 4429185, 5477694, -6285685, -53438520, +-22168474, 42549168, 46921980, 44537736, 60453276, 10289131, -26148834, -80000208, -60723860, -11544335, +16848082, 50502372, 55006184, 25916906, 1159641, -26953604, -23276576, -10444824, 17138530, 47114180, +26793616, -6383932, 1670742, -4011500, -25999048, -35676144, -29110214, 5283347, 43481176, 32517198, +65407520, 42381664, 42112156, 59117004, -17303350, -41166724, -46642272, -62105764, -76261976, -28982976, +-9013526, 22431004, 41960756, 60401200, 56638272, 45806364, 29117194, 58001924, -11399917, -37063420, +-1733556, -9630927, 15408195, 17362942, 69524784, 60442000, -22573274, 10616085, -15806553, -46768436, +-13708462, 12054899, -27972586, 42913704, -17289928, 14060649, 3697967, -5240934, 37404332, 51622284, +41442140, 28819230, -21559126, -52861920, -59757492, 16726750, -25179246, 4257387, -2852932, 33392834, +5299453, 18740016, -16101296, -37175628, -34133716, -53997404, -46603616, 19435264, 11180337, 26633630, +40685688, 31258772, 1242319, -24336358, -38580080, -52765820, -28628104, -13780403, -19250044, 8237211, +-6980396, -6493454, -6185290, -16325171, 168577, -7490423, -10548977, -13060459, -8020852, -2130304, +8383776, -15719580, -9545565, 22308060, 2232846, -119464512, -125736776, -130787120, -134055592, -177140560, +-19223200, -50107236, -12120398, 16551193, 80706192, 91716880, 94836632, 132741872, 183504624, 175827904, +172805856, 138838576, 100291248, 72878080, 21925808, -83719112, -40156332, -49458696, -30610768, -100545184, +-16660178, -41609644, -45818712, -83195664, -63918776, -65040300, -58906012, -61546344, -108156400, -95783680, +-56499756, -51095080, -64177548, -88938576, -13483513, -77876880, -147614272, -126491616, -111038328, -58529668, +-75420160, -13453448, -152784864, -67647880, -67648960, -31255550, -22764400, -78668768, 3539590, -78816944, +-9468255, 12314208, 37006512, 3340411, 38034084, 56727928, 89203784, 95056216, 130791416, 85453744, +205208704, 129667208, 238850640, 162376064, 237952464, 275961856, 327714592, 269165056, 271026944, 305413504, +274085472, 278319776, 270913120, 234870288, 135953424, 108615968, 76703288, 55919400, 65488588, 97633736, +53890028, -19767050, -33867964, -39142184, -67223216, -87312928, -106416944, -98044440, -161110672, -156117232, +-160748816, -194795552, -171485152, -216383680, -191542656, -224826512, -230847520, -217517552, -239963584, -217045632, +-242307024, -192364608, -188419680, -156209568, -166662992, -171856144, -120736360, -108163384, -82571280, -42059004, +14302241, 46119896, 40519260, 51621748, 46302968, 52185464, 60047400, 85623392, 102984728, 93013960, +83799640, 102304512, 95332168, 117667608, 107268952, 78353624, 71478992, 62064424, 54842976, 34498788, +26384520, 24437290, 15589658, 16940962, 6990596, 11067594, 9880572, 6725382, 9915469, 7137162, +4484483, 1649804, -3459596, -496606, 87510, -10295573, -16087337, -9226127, -7261179, -6651831, +-4581657, -3251827, -2968896, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 17045114, -2260227, -5585605, 2661806, 3018288, 1051193, -7075959, 3245922, 5035849, -5403606, -1613834, --6622840, -1449552, -2807835, -2422362, -944356, 375810, -219043, 683437, 2396592, -2946885, -1333051, -6787122, 2350421, 4185446, 900333, -1778117, -5499169, 3610457, -2409477, 5833640, -4980552, -205622, -2302103, 4757750, 5547487, 4461934, 4514011, 1127966, -3442953, 1090922, -4270271, -1779190, -3598109, 3249680, 5146445, -2247879, 2691871, -5837935, -472983, -5120138, -3508452, -6817724, -1834488, -1264868, 2345589, 3409667, 2419677, -188442, -3609383, 449361, --4996658, -3297461, 924492, -613643, -3009162, 1655710, 1704028, 437013, 3167539, -2806224, -1367947, -3792456, -1499481, -1609539, 2101313, -1963337, -4013110, -1795833, -1490354, 5539971, -4764730, 1214402, -2517925, 335544, -286689, 974958, 1917703, 359704, 115427, 345208, --70867, 89657, -703838, 561567, -2110977, 108448, -154082, 882079, 464393, -644782, --919660, 201863, 389768, 413391, 9718437, -9793062, 372052, 173946, -2478733, -2938295, --3129958, 1015223, -5518496, -5443334, 770410, 2645700, -201327, 3135863, 2443837, -2991982, -1234803, -10740639, -2626909, -2399276, -2498597, -3384434, -3733937, -9465571, -7354058, 1012539, -2218351, -505732, 5128191, 4102768, 1727114, -1820529, -1018981, 4806069, -1851668, 599685, --696322, -5039071, 1691680, -1683627, -3432216, -1322313, 4128001, 9969693, -3795141, 1118839, -2429878, -1836099, 3142306, 1409286, -3476776, 2037425, -8228621, -3804804, 98247, 3375844, -5236102, -3198140, -1481227, -350040, -11927661, 2047089, 6176163, 341450, 902480, 3384434, --1935420, 5278515, 7112466, -890132, 2026151, 4279935, 4061429, 814970, 228707, -1972464, --2844342, -1771674, 1265405, -2704219, 5941014, 3997004, -126165, -2891050, -1479616, 3427921, -4026532, -2002529, 3126199, -1890323, 854699, -1927367, -1167694, -1318018, 380641, 99858, -236760, 275952, -215822, -634581, -2573222, -8390219, 1941325, 304406, -8115341, 1240172, -4545686, 6689412, 1717987, -4816269, 11340861, -1524713, -2234994, 5328981, -3295851, -3212099, -545461, -4144107, 5054640, 5050345, -2044941, -7633231, -3770981, 3794604, -4912906, 10786810, -9310952, -7445863, -9107478, 323196, 1703491, -8669391, -567473, 3578245, 2430415, -4245575, --2467996, 9944460, -1056025, 6844031, -679679, -2226941, -2312840, -5126044, 892279, -731218, -5367099, -4584341, 1242319, -1204202, 997506, -2701535, -354335, 4524748, 3599183, -5673115, -8834211, 726923, -39728, -143345, -809064, 2393908, -1217086, -7910793, -1122060, -4178466, -6889128, 2883534, 180389, 8459475, -4680441, 5658083, 5567352, 509491, -4116726, -843961, --875636, -91805, -1170916, -1708860, 2341294, 2477659, -3738769, 1791538, -220117, 2622078, -2318746, -768262, 363462, -1161789, -1756105, 1251446, -1615982, -1366873, 694174, 1772211, --1632088, -1219771, -2124398, -914291, 1279363, -813896, -308701, 23085, 649614, -1180579, --668404, 1634772, 544924, -351114, -514322, -1845762, -20218022, 4638028, 1080184, 14401562, --782758, 5785858, -7752416, 1665374, -5810554, -1392643, -2849711, -918049, 2641942, -1560147, -2466922, 4853313, 3703336, 13674102, 9433896, -6211060, 3131031, -335007, 2519535, 1612223, --1750736, -13589813, 3435974, -695785, -137439, 5156108, -814433, -3791919, -2641405, -643171, --4225174, -2269890, -10864120, -2549063, 280247, -3837017, -687195, 4499515, 6435472, -2084670, -7953743, -5956046, 1304060, 2717641, 1036161, -1848983, -4196720, 2962454, -1059783, 1823751, --3120294, -4432406, 819802, 2577517, -4479651, 4263829, -3063386, 10157061, 10772315, -3279745, -3928285, 4136591, -566399, -1400696, -1454383, -13171054, 5496485, 5348845, 155156, -2219424, --5507222, 574989, -1621887, -6713571, -15038828, 983011, -3733937, 3852049, -8053, -64961, --2518462, -1704028, -2837900, -286152, 1533840, -1966558, 2281702, -2420751, -1407676, -1025423, --608812, 1222992, 1013612, -820876, 464393, 331249, 816581, 1334124, 1028645, -711891, --1602560, 1122597, -681289, -1198833, 429497, 379031, -711354, 827855, 1352378, 454193, --4327180, -6606734, 6594923, 3757560, -574452, 7622493, -4086662, 6838125, -7700877, -7393250, -3600793, -11798275, -4178466, 2976949, 7184407, 9388262, -1637456, 7007776, -242129, 6674379, -2469069, 1085016, -1096827, 365609, 6661495, -3174518, -699543, 1211718, 579284, -6562710, --815507, -3560528, 13570486, -6486475, -6572374, -1596654, 6396817, 6435472, 5528160, 7393250, --1278290, 1357747, -1638530, -3670587, 2800319, -331786, -697932, -4197794, 10645076, 6562173, --3287261, 2027225, 3147674, -5614596, 1194538, 4135517, -1045288, 7981660, -3221226, -1037235, --8675834, -3275450, -7376070, 328028, 10180146, -4007205, 2876554, 1742146, 353798, -2779918, --940061, 88584, -2485176, 4884989, -5019743, -2370822, -443455, 10728828, 1702418, -67109, -3391951, -2924873, -8048769, 1993402, 813896, -1285806, 586263, 1974074, -529892, 403190, -3916473, 737124, -311922, 926639, 59593, -528818, -932545, 3628174, -175557, 299574, --3320010, 2010045, 515933, 2000918, -489626, -1372779, -407485, 1012539, 1647120, 1057636, --2705830, 125628, 1919314, -601832, -3413962, -2212982, -19057844, 13824426, 1457605, -7010461, --16831440, -1675037, 428960, -9957882, -897111, 4639102, 3954054, 365609, -2877628, 3672734, -12033425, 12206834, -5228049, -5737540, -13234942, 2646237, -2384781, 12858595, -5238250, -284005, --3015604, 4839892, -1440962, -13180181, 4330401, -618475, -7809325, 7516, 1235877, -1069984, --1328756, -5417565, -7540889, 4585415, 1137093, 5996848, -5209796, 10093710, 4793721, -2085207, --8939438, -1775969, 3236258, 9871445, 3066070, -5583458, -2542084, 4587025, 2966212, -2867965, --1395328, 4835060, 3965329, 5104032, 9787157, 10916733, 5340792, 5812165, 6717866, -3931506, -980863, -7227893, 7233799, 1138166, 3659312, -5163625, -8019778, 1833414, -10254234, -3699041, --4467303, 7532836, 7905424, 8265128, 2181844, -2344515, -2610266, 7720741, 1580011, -1081258, -1954210, -2434173, 4941897, 255014, -64425, 1619740, 2034741, -768799, 4052839, -3221, -694711, -1940788, -1157494, 1113470, 3164854, -194347, 1154273, 1826435, 1062468, 608275, --941135, 1509681, -1252520, -6855305, -406948, 12825309, 7885560, 10842645, 2063732, -11864847, --3910568, 12592844, -3631932, -7980049, -8311836, -8186208, -8658654, 4760435, 4839892, 3104725, -2846490, 2936684, 12118250, -1500017, 5260261, -10409390, -11709155, 7839926, -415538, -6394133, -459562, -16316044, -5325760, -5499169, 2005213, -577136, -1504849, -11480448, -7511361, 1269163, -7927436, 12874701, -5106716, -5057861, 6864432, -8849243, -632971, -457414, 2961917, 5629092, -4598836, 8921184, -4790499, 12936441, 6107981, -13993003, 6990060, -7781407, -9274445, -7723962, --11219528, 10149545, 2389076, -11969537, 1370632, 2515777, 1111860, 1886564, -2190433, 8414915, --4884989, 6466610, -10404558, 7884486, -5277978, -4820027, 1031329, 3493956, -403190, 5693516, -16340740, -1381369, -8759049, 5167383, 10710038, 845572, -1161252, -8498130, -3700651, 7876970, --1337882, -540629, 271657, 1583769, -2208687, -1277753, -192737, 2319282, -1345399, -287763, --1546188, 4439923, -3257196, 678605, -3061238, -3837553, 1011465, 1227287, -1195612, 590558, --1109175, -846645, -240518, -439160, -92342, -1628866, -956167, 4558034, -235149, 26307, -26589068, -23968064, 11085847, 11567421, -10772852, -1944010, 15906948, 5767604, 10102837, 3021510, --3499862, 23929948, -960999, -4476967, -25770, 81604, 11486353, 18001282, 6815040, -122943, -361851, 2703145, 6184753, -84826, 3281892, -12579959, 5956583, 9808632, -2056753, 4001836, -1074, 1823751, -8110509, -6326487, 456877, -276489, 11107322, 5488968, 4594542, -4676146, --5753109, -5744519, 6393596, 9295383, 78383, -2985539, 18149994, 9403831, 12128451, -6534256, --13542569, -2575907, -14181982, -9327595, -4272956, -5910412, -814970, 10619307, -3359201, 412854, --8684424, -9269076, 10577431, -530428, 4933844, 5285494, -5517959, 10166188, 2646237, 914828, --3531000, -6801618, 7977365, -2440615, -14125074, 8169565, 6900402, 8542153, 3850975, -9947681, --2086280, 930934, -10388989, 5940477, 5959267, -969052, 4500052, 3764539, 4022237, -972273, -6357089, 948114, -250719, -3221762, 1579474, -62814, 5064304, 1093069, -141197, 1036698, --48855, 3725884, -1585380, -459025, -2468533, 1265405, -658204, -1933809, 420907, 520765, --734976, 576063, 4102768, 3097208, -1773822, -1156957, -2646774, 688269, -570157, -355409, --18583786, 2284386, 6135361, -9127879, 7612830, -15771657, 3602941, 4810900, -2075543, -6245420, --8014946, -9344775, -15823733, 2021856, 17996450, -5918465, 8680666, 4828080, 13383655, 7112466, --5056787, -11488501, 5922223, -2896956, -4085051, -11905112, -1779190, -1593970, -4750771, -5093831, --2738042, -8361765, -10994043, 12833899, -1258425, -7432978, 10064719, 3563212, -8778376, 1333051, --644245, 5739687, -11664594, 3303367, 4010426, -17210470, 5755256, 5645735, -8870718, 2571612, -672162, -2764885, 6366216, 614180, -1200980, 787590, 4312684, 11650099, 9250823, 11888469, -8192113, 4255776, -3070365, 17683990, -4488241, -9014599, 19581292, 1333587, 11834246, 2573222, --3795141, -18149458, -16800838, -4148402, 1063004, -6613713, -3216931, -5187247, 11553462, -10091026, --2946885, -1692754, 2820720, -9848897, 7128035, -757525, 2254321, -825171, -3830037, -6400575, --4311074, -5035849, -4099010, -1195075, 654983, -3087545, -2208150, -1712618, 4225711, -4890357, --4323422, -3510062, -4162897, -152471, 3390877, -1480153, -1659468, 2448131, 595927, -1206886, -1658931, -3052111, -3375844, 2610266, -3936875, -6323266, 2232846, 5706938, -3020436, 636729, -3819300, -1283658, -3139084, -30940944, 15134391, 26657252, 1851668, -15128485, 6893960, -2794413, --1060320, 4370129, 2574296, 6862284, -8075076, 932008, 23882166, 18354006, 16044387, -17520782, --751082, 4305168, 9158481, -8406862, -9425843, -2399276, 3013457, 8303246, 4117263, -22531936, --25583510, 7957501, -855235, 14412837, 14763413, -9531069, 12217571, 9842991, 13050795, -889058, --7792682, -8101382, 6234145, -8579734, -3297461, -2684, -374736, 7813620, 16596827, 9337796, --4549981, -3917010, -8225399, -2094870, 728534, 4494147, -1773822, -2924336, 8158291, 5140539, --12541305, -166430, 518080, 15074261, -7587060, -8652212, -16438450, -5577552, 2814277, 1102733, -8490077, -1829656, 2124398, -7349763, -10922639, -9904195, -10008348, -5756330, 4776541, -20623360, -2463164, -2887829, -3236795, -4359929, 4079682, 11298448, 8229158, 1309428, -1849520, -10476499, --3342558, -964757, -2131378, 6922951, 3533148, 2114198, 1523640, 3599720, 4199941, -1604170, --1756642, 107374, -1902671, 367220, 462783, 1383516, 2308545, -6700149, 1034550, -865973, -5084168, 1381369, -6740951, -375273, -4268124, -3269544, -1683090, -1504849, -1791001, -850404, -3810710, 3490735, 2943126, 5042292, 15592342, 1273995, 13530221, -1851668, 17562658, 8761733, -13695040, 8418136, 3990025, -6782290, -686121, -4245039, 9386651, 2764885, 8243653, -7871065, --1376537, 14564234, -17952964, -10034654, 13993540, -23680840, -10440529, 1766305, -4520453, -11725261, -23849416, -4262218, 16474421, 6609955, -14352170, -2195802, -5397700, -17352742, -22541062, 18005040, --163746, -6558952, 4453881, 328028, -2992519, 6557342, 2573222, -2324114, -8291971, 1592359, -17009144, 14421426, -11894912, 4720706, 934155, 13454522, -6124624, 9119289, -19339164, -4680441, -13204877, 4437238, -4426501, 15759309, -5012764, 11048803, -21470004, -24755654, -8925479, 485868, --17538498, 18953690, 13375065, 19254876, -8827232, -6496138, -6676527, 1002875, -9764071, -99858, --14923401, -13545253, 620623, 3821984, 13827110, 6540699, -1455994, -5094368, 4351876, 7987566, -5234492, 3196530, -4915590, 5776731, 5157182, 6510097, 4819490, 3528316, 5216238, -7155953, -6038724, -4327180, -2196876, 9469866, 8368744, 5631239, -995359, 341987, -2527052, 4858682, -1523640, -1987496, 2637110, 4929012, 744640, 3832722, 3722663, -4927938, 1637993, -3723737, --1089311, 1172526, 21589726, 15525770, 24328306, -21605832, -16239808, -37012416, 15947750, -4121021, --31628676, -6134824, 3000572, 4658429, -11818676, 12875238, 10877542, 1221381, -143345, 2010045, --5240934, -11013370, 2427194, -6263673, -10307385, -135291, 23977728, 744103, -3639985, -19174882, -8088497, 15141370, -7834557, -23135916, -4197794, 7798050, 2765422, -4911295, 5041218, 1647657, -8321499, -2339684, 13725105, 20976084, 7934952, -13947906, 15808164, 7117835, -17865454, -19011672, -20664698, 9994389, -8048232, -9277129, -459562, -16851304, 12334609, 16250546, -387621, 915902, -4091493, -2081449, 17784386, 5979668, 4622996, -7374996, 2873333, 6005438, 21961778, -5272609, -8414915, -17016124, -19383188, 17282948, -2608656, -1616518, 1784559, 16473884, 360240, -775778, -10395431, -4975720, 2071248, 9540733, 11643656, -5570036, -7256884, -15631533, -7714298, 5105106, --6909529, 5440113, -177167, 5772973, -3131031, 4257387, 878858, -2408940, 1872606, 8738648, -2149631, 8698919, 2618320, -5508296, 347355, 3628711, 3004330, -5405753, -4961224, -5266167, --2268280, -4138201, -4056060, -6431177, -2778844, 3577171, 2263985, -658741, -1059246, 1953673, --4284767, -108448, 5484673, -1554778, -907849, -2652142, -2248952, -1160715, -8168491, -1151051, --3182034, -3502546, -5104032, -7267622, -25049324, -2065342, -16390132, -33248416, -34266860, -14812268, --26163868, -11862700, -4227322, 4699231, 14631880, 16324097, 1671279, -8833137, 17581986, -8939974, -8665633, -32826436, -3229816, -22519588, -15115064, 15252503, 10707890, 10419054, 3463891, 21964462, --2221572, -1374926, -15822660, -5485210, -3187940, -10769094, -10877005, -26975078, -10609106, -2979097, --4351339, -16689706, 14756971, 5877126, 8804146, -7348152, -2831457, -40935332, -11800960, -11283416, -9477382, 20979304, -12927852, -1982664, -23851564, -1722282, 12271795, -3908957, -8056822, 5365488, -17601312, 30039002, 6311992, 952409, -1663226, -8058970, -12026982, 8032663, -7925826, 27247810, -5356361, 11731703, 55566140, -11059541, -9460202, -14038637, -19479824, -2643016, 18981608, 8544837, -2712809, 6316823, -8029978, -6225018, -16954920, -4059818, 9530532, -1556926, -3750043, -1591822, --3954054, 1997697, -625992, 3695819, 3744675, 3820910, 5013838, 5490579, 14153528, 8641474, --5246840, 8238821, -220117, 526134, 5920613, -6847789, 128849, -7900593, -4779225, -10814191, --8033737, -11279121, -9361955, -6271189, 12367895, -7697119, -4345433, -9079024, 566399, 2698313, --1964948, 3728569, 1499481, -228707, -7672959, -27808840, 15775415, 26007638, -15397995, 775242, -5826123, -9003862, -2177549, -19459960, -416075, -10924786, 28234042, -26844, -5347235, 22655952, --5782100, 6568079, -26042534, 13472239, 4001299, 17561048, -8236137, 13069049, 23095112, 24812026, -13914083, 22363358, 11445014, -3597572, 21735756, -10570988, -14361834, -4628364, 8706972, 14721537, --35458176, -2457795, -22935126, 18132278, 8194798, -492311, 6220187, 25407952, 1056562, 22670984, -9666898, 34354368, 3060164, -3959960, 15030775, 4936528, -17572858, 3728569, -2080375, -23570780, -16474958, -14233522, -23000624, -47004660, 3610457, -5831492, 27585502, -15426986, 36927592, 12159052, --656593, -5693516, 14379551, 15164456, -27078696, -11588896, -20021526, 6927782, -9056475, 20266876, -6420976, 6792491, 9774809, -4710506, 1702955, -7142531, -2509872, 539018, -2715493, -20922396, -8213588, -66035, 6150930, 176094, -6192269, 644782, 8501351, -13926431, 11945378, -5118528, --75699, 1339493, -11712376, -1018981, 7016903, 3550327, -8424578, -3486977, -2066416, -9855876, -3265786, -2821257, 14296336, -11511586, 5069672, 9976135, 3546032, -4254165, -3182034, 4846334, -2346663, 3003793, -2578054, 5025649, -15369004, 4094715, 3644280, 6580964, -4689031, -7176354, -511638, 6441914, 861678, 17859010, -11941083, -13361643, -13145284, 17173964, 8909910, 22363358, -6208375, 69186552, -20547660, 372052, 520765, 32205276, 13335873, 14911590, -21125870, 9278203, --8329552, 598074, -9771587, 2150705, 23277112, -6125160, 7383586, 44978508, 14120779, -20371566, --23852100, 2774549, 29334626, 15298137, 5576478, -11349988, 24973088, 4239670, -3703336, -27440546, -8391292, -4359929, 11828340, -24910274, -15202574, 1298691, -6334540, 3278671, -23226110, -801011, --14166413, 6582575, 20598126, 16464220, 5391258, -31871342, 271657, 3151432, -28718298, -25651156, --16996796, -14024142, -13998372, 22733798, 5196374, -650151, 14826227, 23638426, 6310918, 20472498, -558346, 13554380, 90393496, -20623896, 14898168, 10377178, -15879031, 3365107, -60224568, 1214402, -29912300, 7829726, -16565689, 23028540, 5555540, 8761733, -15023259, -3409667, -12833899, 4514011, -1124745, 1146756, 5164162, -18660022, 6915971, -10234370, -7439957, -25549150, 6350109, 5874442, -5101885, 6585796, 31991600, 4836133, 3430605, 3679176, 2511482, 19124952, 2255395, 8080981, -6696391, 14592688, 5872831, -867047, -3222299, -2644089, 2429341, 9259413, 11050951, 3277597, --16782048, -7702487, -3713536, -3710315, -5543192, -17524004, -4256850, 13467944, 36599564, -17013440, --865973, -24550570, -17829482, 5816997, 16043850, -20310364, 24260660, 10175851, -31825708, 19589882, --12880607, -15761456, -1307281, -19062676, 4497905, -8528731, 24622510, -14171781, -1109175, 13558675, --47501264, 6817724, 14761803, -14327474, 11716671, -28698434, 28716688, 3150896, 4960151, -54316304, -49052820, 21041582, 16120623, 1094143, -30962420, 28414966, -1795296, -14057965, 50164144, -9971303, --22001506, -11586211, 6075768, 14526653, 13759465, 3673808, -8434242, -59027884, -6648610, 14785962, -882616, 21693880, -30971546, 32003412, 3270081, 10831908, -31479962, -9089761, 5093831, 40787156, --16934520, 9543417, -29163364, 25831544, 14492830, 24378234, -9371082, 10811506, 4234301, -31884764, --30440580, 16770237, 13716515, 26003342, 5594195, 33367600, -50232328, -65747896, 10528575, -13861470, -37187976, -24230058, -5222680, 4297115, -27974196, 1398549, -16688095, 14576045, 20684562, 2076080, -16789028, 18452254, 5509906, -16644609, -8378408, 29677150, 15473157, 3861713, 5224828, -8886824, -747861, 18073222, 10165114, -14612016, -8225936, 16816944, -2335389, 10482941, 10572062, -6453725, --8538395, -8662949, 121333, 8978629, 4112431, 11483132, 16503412, 1361505, -463856, 13431436, -890669, 2709588, 4306779, -5603322, 4661114, -9807021, 5657009, 2026151, 295279, 4126390, --4891968, -45965276, 41857140, -9073655, -10152766, -16379395, -4811974, -36250596, -67662376, 23325430, -19382114, -3008088, -13977434, -27577986, -4585952, -8570607, -14685030, 26623966, -60512868, -25867514, --31961536, -9543954, -46081776, -4265440, -6968048, -1671279, -7743826, -9358197, 7391102, -474057, --20408610, -6400575, -487479, -27907086, -14924474, -8243116, 2012192, 21457656, -11038603, 43023224, --22504554, -3233574, 18079664, -19202798, 11655467, 2440078, -29512868, -44139380, -10830834, 11265699, -40240084, 17454210, -30842160, -13048111, -88525720, -29626148, -6391448, 18622442, 48063904, -2548526, --51496656, 2863133, 27963996, -10289131, -2437394, 29654602, 31205622, 71602472, -79115984, -15336791, -11212549, 20024748, -24972014, -29644402, -42304892, -41997800, -23496692, -19524384, -5500780, -3002182, --48875656, -20253456, -17913234, 18097918, -9224516, -4813048, 44024488, 33347736, 2676838, -6283537, --2017024, -27189290, -1207960, 9692667, -19645180, -10521059, 3726421, 12426951, -8326331, -9623948, --6512244, 13866839, -9170829, 14531485, 1041530, 15007689, 10663330, 10819023, -8260833, 5479842, --20591684, 10634339, -2705293, 6273337, -18205830, -14093935, -2039036, 4714801, -10248329, 278099, --23076860, -4035659, -2764885, 9894531, 12228309, -14678051, 30142080, 642098, 11189464, 6722698, -21840446, 21905406, -1055488, 13941464, -26118232, 6114423, -10652593, -62904092, 14060112, -10879689, -18409840, -17497696, -17999134, 1177895, -26393648, 4315906, -26610544, -696858, -4748623, -10545218, -12602508, -19929186, -25901338, -23702314, -30391188, -5243618, -3438121, 33362770, 7295002, -24664386, --36511516, 4587562, -893890, 8469139, -7211250, 20133196, -24048058, -9709310, -33721936, -21711596, --9780714, 907312, -14304389, 34797288, -12351789, -30135638, 9179956, 36121212, 26254598, 10549513, --25808458, -16953846, -2731599, 32774896, 63065688, -795643, 12327630, -12333535, -61920008, -13796509, -5516886, 23099408, 52655764, -29432874, -35872640, 20775294, 9867150, -12636331, 1578401, -19871740, -12054363, -52468932, -6102612, 2782602, 12607876, -31718334, 36265632, -51318416, -58244588, -53910428, -27036820, -11228655, 51117092, -71570264, -31161062, 5528160, 72803992, -6050535, -13033615, -40285720, --14736570, -4875325, 35089344, -3168075, -203474, 1916629, 6060736, 516470, -563178, -15352897, --12967580, 16591996, 7368554, 1861868, -38190848, 9397925, -9840307, -4680441, -19777788, 726386, --1789928, -3772055, -44921600, 3993783, -9947681, -5298916, -3898220, 7459285, -156229, 2625836, --308164, 118648, -143881, 57982, -16378321, -3319473, -10536629, -9189619, 7823283, 7997766, --13133473, 361851, -9353902, 12093017, -4516695, 37345816, 11457899, -66524748, -11754252, -45882600, -20562692, 3889630, -91495152, 6295349, -28106266, -59261960, -46082852, -67636608, 41965052, -20599736, --53208740, -23896124, 17389248, -31704374, -27335320, -21332028, -12619688, -23522462, -23338852, -43174084, --31194884, -59251220, -33368674, -30104500, -9862856, -27861990, -5614059, -12984223, -676994, 2369211, -8032663, 16743393, -16227997, 13951664, 1830193, 30594126, 13427142, 19165218, 19365470, -55489904, --14463302, 44837312, -7498476, -27509266, -31032750, -22939958, 18069464, 72281080, -4606353, -892816, --48185240, -49149996, -10233833, 10388989, 43290048, -2755759, 39475044, 14766634, -47327320, 85985784, -1830730, 66966056, 357019, -16802986, 36027796, -47805672, -61877056, -39533028, -137296144, -83176336, --27164058, 63257352, 38845296, -54899344, -36097588, -84030496, 42000484, 56057912, -42880416, -42805256, -10095321, 37150392, 52669720, 15010374, 30285962, -27676232, -15216532, -20771536, -31878322, -12790413, --2736431, 3463891, 1471563, -17111150, 2892661, 12356621, 4059818, -2326799, -12552042, -8136816, --14327474, -4912369, -21245592, -4086662, 13310104, -20285668, -33665028, -4420595, -22049288, -14561550, --2485712, -27980638, -21925808, -5163088, 13782013, 14776298, 15883863, 322659, -12066174, -1352378, -5224291, -6565932, 21299816, 1780801, 15731391, 1731409, 69793, 16452946, 12228309, 18410914, -38111392, 24876988, 28465970, 24698210, -23368918, -56748868, 65997004, 63108100, -39907224, -51781200, --240518, 56625924, -6137509, -3287798, -17640504, 49516140, -5487895, -13216151, -1203128, 13674639, -25426744, 680215, -19085760, -21729314, 30558692, 2267206, -13124883, -32678258, 18586470, 10249939, --3707631, -25757992, 8107825, 11078868, 9207873, -16294032, -9765682, 2873333, 25218974, -7420093, -9066139, -37089192, -10307385, 53687, 24436216, -51628192, -9208410, 5015448, 37171868, -17866528, -5777268, -26385594, 3612068, 10911364, -18126910, -13841069, -2133525, 6026376, 11349988, -11777337, -814433, -46018964, 24916716, -7704635, 43119860, -26738856, 19248970, -18204218, 20012936, 3721052, -13429289, 11349451, -33462628, 37852620, 7508140, 21829708, -36934036, 10251550, -9378061, 5853504, --10512469, 1445257, -2536178, 5015448, 12577812, -1996086, -14749455, -8812199, 3800509, -2018098, -952409, -5782637, -14367202, 4795331, 3848828, -4496294, -4049617, -301185, -4488241, 643171, --7803956, -285078, -3800509, 6431714, 3799972, -2718714, -5787469, 1974611, 181999, -5145908, -3756486, -15827491, -121333, -1889786, 7054484, -303869, 18214956, -12114492, -12257837, -4220879, -9625559, -13114683, 19536732, -16440061, 8298951, -8081518, 17810692, -15962783, 19593640, -11164231, -15322296, -13869523, 23807004, -22436910, 17243756, -5196374, 12979928, -12099460, 12754442, -13692893, -14385456, -13771813, 11541114, -9204652, 12751758, -9868761, 10635950, -9786083, 3100967, -3188476, -6408628, -4757750, 5177583, -4076998, 4045859, -2652142, 5296769, -19353122, -43012488, -57189100, -41679972, 27649388, -32624572, -46478524, -22788560, 21502216, 11264625, 28607704, 30787400, 6025839, --15557445, -4538707, 10755672, -10604811, -891206, 6365142, 1723356, 17238924, 12031814, 5222144, --15548318, -581431, -9638980, 10001905, -16290274, -14095009, 11782169, -3758633, -6648610, -6505802, --11335492, -15503758, 1156420, 12658342, 11522860, 9684078, -3710315, -12783433, -11133629, -7766375, -13776108, 18778134, -8783745, -13127031, -5709086, 15582678, 8018167, 20847234, -14767708, -5606006, -8206072, -3930432, 656056, -2234994, 7369090, 4436165, 5946919, 1254131, -14133127, 5837398, -2594160, -522912, 10894721, -5674726, -2818572, 1884954, -2040646, 1399623, -4110821, 18504866, -4627291, -1498407, 17608292, 17660368, -17973902, -27180164, -9982578, -18616536, 536334, 12310987, -3498788, -11135776, -13450764, -3584687, -2610266, 10698227, 5090073, 6667400, 10006200, 6116571, --5608691, 6193343, 4377646, -13084081, -17548700, 5249524, -4639102, 8722005, 6388764, -9618042, --2585570, -3268470, -3538516, -11176042, -6143951, -696858, 3518652, 5334887, 14849313, -7401303, --5548024, 3805878, -3462818, 19608136, -47631188, -125398016, -46098956, 22492744, 65234648, 137780944, -92198456, 23731304, 34942244, -18410914, -56084220, -93134752, -81039592, -64423972, -18583786, 2482491, -44819596, 49421116, 105191800, 51074676, 33668784, -2637110, -22430466, -50629612, -26300232, -40938556, --47225848, -29067264, -24348170, -1809792, 13145821, 39364448, 24320790, 28258200, 25669946, 25964688, -39031052, 3377992, 27039504, -5008469, -12156905, -32939178, -19644106, -49126908, -72341744, -63189708, -732829, -10739566, 19822348, 33990372, 18620294, 52427056, 45756436, 66259536, 37698000, 44940928, -2210298, 2221572, -35442072, -57870388, -67656472, -81190992, -53390200, -66349728, -5597953, -250182, -31928250, 33521146, 80197776, 63027036, 89585504, 36383204, 41872708, 17485886, -396748, -53451404, --87235080, -58386324, -69696584, -43393128, -47201152, -4392141, 7275675, 27861990, 36508832, 49514532, -50501300, 48601312, 31788126, 34808024, 9033927, -6285685, -11977590, -39158292, -35747548, -46886012, --33174864, -46868832, -35757212, -3709241, 8346195, 24740086, 37287832, 33309082, 34276524, 56542172, -20436528, 34531536, 26462368, -35618164, -64539936, -27949500, -56913148, -35844724, -19550154, -4046933, -5035313, 18134962, 32790464, 22864258, 35276712, 22429930, 19188304, 7769596, -2204392, -20501490, --6782290, -9608916, -36036388, -33621540, -9318468, -3789772, 1864553, 11841225, 13784161, 17557826, -13964012, 13880797, 5147519, 4683662, -265214, -7879118, -3991635, -2893734, -8113730, -12856985, --4488778, -6484864, -7667054, -1001801, 3180423, 3663070, 5330055, 5941014, 5523328, 2313914, -1056562, 714038, 734976, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +2260227, -5585605, 2661806, 3018288, 1051193, -7075959, 3245922, 5035849, -5403606, -1613834, +-6622840, -1449552, -2807835, -2422362, -944356, 375810, -219043, 683437, 2396592, -2946885, +1333051, -6787122, 2350421, 4185446, 900333, -1778117, -5499169, 3610457, -2409477, 5833640, +4980552, -205622, -2302103, 4757750, 5547487, 4461934, 4514011, 1127966, -3442953, 1090922, +4270271, -1779190, -3598109, 3249680, 5146445, -2247879, 2691871, -5837935, -472983, -5120138, +3508452, -6817724, -1834488, -1264868, 2345589, 3409667, 2419677, -188442, -3609383, 449361, +-4996658, -3297461, 924492, -613643, -3009162, 1655710, 1704028, 437013, 3167539, -2806224, +1367947, -3792456, -1499481, -1609539, 2101313, -1963337, -4013110, -1795833, -1490354, 5539971, +4764730, 1214402, -2517925, 335544, -286689, 974958, 1917703, 359704, 115427, 345208, +-70867, 89657, -703838, 561567, -2110977, 108448, -154082, 882079, 464393, -644782, +-919660, 201863, 389768, 413391, 9718437, -9793062, 372052, 173946, -2478733, -2938295, +-3129958, 1015223, -5518496, -5443334, 770410, 2645700, -201327, 3135863, 2443837, -2991982, +1234803, -10740639, -2626909, -2399276, -2498597, -3384434, -3733937, -9465571, -7354058, 1012539, +2218351, -505732, 5128191, 4102768, 1727114, -1820529, -1018981, 4806069, -1851668, 599685, +-696322, -5039071, 1691680, -1683627, -3432216, -1322313, 4128001, 9969693, -3795141, 1118839, +2429878, -1836099, 3142306, 1409286, -3476776, 2037425, -8228621, -3804804, 98247, 3375844, +5236102, -3198140, -1481227, -350040, -11927661, 2047089, 6176163, 341450, 902480, 3384434, +-1935420, 5278515, 7112466, -890132, 2026151, 4279935, 4061429, 814970, 228707, -1972464, +-2844342, -1771674, 1265405, -2704219, 5941014, 3997004, -126165, -2891050, -1479616, 3427921, +4026532, -2002529, 3126199, -1890323, 854699, -1927367, -1167694, -1318018, 380641, 99858, +236760, 275952, -215822, -634581, -2573222, -8390219, 1941325, 304406, -8115341, 1240172, +4545686, 6689412, 1717987, -4816269, 11340861, -1524713, -2234994, 5328981, -3295851, -3212099, +545461, -4144107, 5054640, 5050345, -2044941, -7633231, -3770981, 3794604, -4912906, 10786810, +9310952, -7445863, -9107478, 323196, 1703491, -8669391, -567473, 3578245, 2430415, -4245575, +-2467996, 9944460, -1056025, 6844031, -679679, -2226941, -2312840, -5126044, 892279, -731218, +5367099, -4584341, 1242319, -1204202, 997506, -2701535, -354335, 4524748, 3599183, -5673115, +8834211, 726923, -39728, -143345, -809064, 2393908, -1217086, -7910793, -1122060, -4178466, +6889128, 2883534, 180389, 8459475, -4680441, 5658083, 5567352, 509491, -4116726, -843961, +-875636, -91805, -1170916, -1708860, 2341294, 2477659, -3738769, 1791538, -220117, 2622078, +2318746, -768262, 363462, -1161789, -1756105, 1251446, -1615982, -1366873, 694174, 1772211, +-1632088, -1219771, -2124398, -914291, 1279363, -813896, -308701, 23085, 649614, -1180579, +-668404, 1634772, 544924, -351114, -514322, -1845762, -20218022, 4638028, 1080184, 14401562, +-782758, 5785858, -7752416, 1665374, -5810554, -1392643, -2849711, -918049, 2641942, -1560147, +2466922, 4853313, 3703336, 13674102, 9433896, -6211060, 3131031, -335007, 2519535, 1612223, +-1750736, -13589813, 3435974, -695785, -137439, 5156108, -814433, -3791919, -2641405, -643171, +-4225174, -2269890, -10864120, -2549063, 280247, -3837017, -687195, 4499515, 6435472, -2084670, +7953743, -5956046, 1304060, 2717641, 1036161, -1848983, -4196720, 2962454, -1059783, 1823751, +-3120294, -4432406, 819802, 2577517, -4479651, 4263829, -3063386, 10157061, 10772315, -3279745, +3928285, 4136591, -566399, -1400696, -1454383, -13171054, 5496485, 5348845, 155156, -2219424, +-5507222, 574989, -1621887, -6713571, -15038828, 983011, -3733937, 3852049, -8053, -64961, +-2518462, -1704028, -2837900, -286152, 1533840, -1966558, 2281702, -2420751, -1407676, -1025423, +-608812, 1222992, 1013612, -820876, 464393, 331249, 816581, 1334124, 1028645, -711891, +-1602560, 1122597, -681289, -1198833, 429497, 379031, -711354, 827855, 1352378, 454193, +-4327180, -6606734, 6594923, 3757560, -574452, 7622493, -4086662, 6838125, -7700877, -7393250, +3600793, -11798275, -4178466, 2976949, 7184407, 9388262, -1637456, 7007776, -242129, 6674379, +2469069, 1085016, -1096827, 365609, 6661495, -3174518, -699543, 1211718, 579284, -6562710, +-815507, -3560528, 13570486, -6486475, -6572374, -1596654, 6396817, 6435472, 5528160, 7393250, +-1278290, 1357747, -1638530, -3670587, 2800319, -331786, -697932, -4197794, 10645076, 6562173, +-3287261, 2027225, 3147674, -5614596, 1194538, 4135517, -1045288, 7981660, -3221226, -1037235, +-8675834, -3275450, -7376070, 328028, 10180146, -4007205, 2876554, 1742146, 353798, -2779918, +-940061, 88584, -2485176, 4884989, -5019743, -2370822, -443455, 10728828, 1702418, -67109, +3391951, -2924873, -8048769, 1993402, 813896, -1285806, 586263, 1974074, -529892, 403190, +3916473, 737124, -311922, 926639, 59593, -528818, -932545, 3628174, -175557, 299574, +-3320010, 2010045, 515933, 2000918, -489626, -1372779, -407485, 1012539, 1647120, 1057636, +-2705830, 125628, 1919314, -601832, -3413962, -2212982, -19057844, 13824426, 1457605, -7010461, +-16831440, -1675037, 428960, -9957882, -897111, 4639102, 3954054, 365609, -2877628, 3672734, +12033425, 12206834, -5228049, -5737540, -13234942, 2646237, -2384781, 12858595, -5238250, -284005, +-3015604, 4839892, -1440962, -13180181, 4330401, -618475, -7809325, 7516, 1235877, -1069984, +-1328756, -5417565, -7540889, 4585415, 1137093, 5996848, -5209796, 10093710, 4793721, -2085207, +-8939438, -1775969, 3236258, 9871445, 3066070, -5583458, -2542084, 4587025, 2966212, -2867965, +-1395328, 4835060, 3965329, 5104032, 9787157, 10916733, 5340792, 5812165, 6717866, -3931506, +980863, -7227893, 7233799, 1138166, 3659312, -5163625, -8019778, 1833414, -10254234, -3699041, +-4467303, 7532836, 7905424, 8265128, 2181844, -2344515, -2610266, 7720741, 1580011, -1081258, +1954210, -2434173, 4941897, 255014, -64425, 1619740, 2034741, -768799, 4052839, -3221, +694711, -1940788, -1157494, 1113470, 3164854, -194347, 1154273, 1826435, 1062468, 608275, +-941135, 1509681, -1252520, -6855305, -406948, 12825309, 7885560, 10842645, 2063732, -11864847, +-3910568, 12592844, -3631932, -7980049, -8311836, -8186208, -8658654, 4760435, 4839892, 3104725, +2846490, 2936684, 12118250, -1500017, 5260261, -10409390, -11709155, 7839926, -415538, -6394133, +459562, -16316044, -5325760, -5499169, 2005213, -577136, -1504849, -11480448, -7511361, 1269163, +7927436, 12874701, -5106716, -5057861, 6864432, -8849243, -632971, -457414, 2961917, 5629092, +4598836, 8921184, -4790499, 12936441, 6107981, -13993003, 6990060, -7781407, -9274445, -7723962, +-11219528, 10149545, 2389076, -11969537, 1370632, 2515777, 1111860, 1886564, -2190433, 8414915, +-4884989, 6466610, -10404558, 7884486, -5277978, -4820027, 1031329, 3493956, -403190, 5693516, +16340740, -1381369, -8759049, 5167383, 10710038, 845572, -1161252, -8498130, -3700651, 7876970, +-1337882, -540629, 271657, 1583769, -2208687, -1277753, -192737, 2319282, -1345399, -287763, +-1546188, 4439923, -3257196, 678605, -3061238, -3837553, 1011465, 1227287, -1195612, 590558, +-1109175, -846645, -240518, -439160, -92342, -1628866, -956167, 4558034, -235149, 26307, +26589068, -23968064, 11085847, 11567421, -10772852, -1944010, 15906948, 5767604, 10102837, 3021510, +-3499862, 23929948, -960999, -4476967, -25770, 81604, 11486353, 18001282, 6815040, -122943, +361851, 2703145, 6184753, -84826, 3281892, -12579959, 5956583, 9808632, -2056753, 4001836, +1074, 1823751, -8110509, -6326487, 456877, -276489, 11107322, 5488968, 4594542, -4676146, +-5753109, -5744519, 6393596, 9295383, 78383, -2985539, 18149994, 9403831, 12128451, -6534256, +-13542569, -2575907, -14181982, -9327595, -4272956, -5910412, -814970, 10619307, -3359201, 412854, +-8684424, -9269076, 10577431, -530428, 4933844, 5285494, -5517959, 10166188, 2646237, 914828, +-3531000, -6801618, 7977365, -2440615, -14125074, 8169565, 6900402, 8542153, 3850975, -9947681, +-2086280, 930934, -10388989, 5940477, 5959267, -969052, 4500052, 3764539, 4022237, -972273, +6357089, 948114, -250719, -3221762, 1579474, -62814, 5064304, 1093069, -141197, 1036698, +-48855, 3725884, -1585380, -459025, -2468533, 1265405, -658204, -1933809, 420907, 520765, +-734976, 576063, 4102768, 3097208, -1773822, -1156957, -2646774, 688269, -570157, -355409, +-18583786, 2284386, 6135361, -9127879, 7612830, -15771657, 3602941, 4810900, -2075543, -6245420, +-8014946, -9344775, -15823733, 2021856, 17996450, -5918465, 8680666, 4828080, 13383655, 7112466, +-5056787, -11488501, 5922223, -2896956, -4085051, -11905112, -1779190, -1593970, -4750771, -5093831, +-2738042, -8361765, -10994043, 12833899, -1258425, -7432978, 10064719, 3563212, -8778376, 1333051, +-644245, 5739687, -11664594, 3303367, 4010426, -17210470, 5755256, 5645735, -8870718, 2571612, +672162, -2764885, 6366216, 614180, -1200980, 787590, 4312684, 11650099, 9250823, 11888469, +8192113, 4255776, -3070365, 17683990, -4488241, -9014599, 19581292, 1333587, 11834246, 2573222, +-3795141, -18149458, -16800838, -4148402, 1063004, -6613713, -3216931, -5187247, 11553462, -10091026, +-2946885, -1692754, 2820720, -9848897, 7128035, -757525, 2254321, -825171, -3830037, -6400575, +-4311074, -5035849, -4099010, -1195075, 654983, -3087545, -2208150, -1712618, 4225711, -4890357, +-4323422, -3510062, -4162897, -152471, 3390877, -1480153, -1659468, 2448131, 595927, -1206886, +1658931, -3052111, -3375844, 2610266, -3936875, -6323266, 2232846, 5706938, -3020436, 636729, +3819300, -1283658, -3139084, -30940944, 15134391, 26657252, 1851668, -15128485, 6893960, -2794413, +-1060320, 4370129, 2574296, 6862284, -8075076, 932008, 23882166, 18354006, 16044387, -17520782, +-751082, 4305168, 9158481, -8406862, -9425843, -2399276, 3013457, 8303246, 4117263, -22531936, +-25583510, 7957501, -855235, 14412837, 14763413, -9531069, 12217571, 9842991, 13050795, -889058, +-7792682, -8101382, 6234145, -8579734, -3297461, -2684, -374736, 7813620, 16596827, 9337796, +-4549981, -3917010, -8225399, -2094870, 728534, 4494147, -1773822, -2924336, 8158291, 5140539, +-12541305, -166430, 518080, 15074261, -7587060, -8652212, -16438450, -5577552, 2814277, 1102733, +8490077, -1829656, 2124398, -7349763, -10922639, -9904195, -10008348, -5756330, 4776541, -20623360, +2463164, -2887829, -3236795, -4359929, 4079682, 11298448, 8229158, 1309428, -1849520, -10476499, +-3342558, -964757, -2131378, 6922951, 3533148, 2114198, 1523640, 3599720, 4199941, -1604170, +-1756642, 107374, -1902671, 367220, 462783, 1383516, 2308545, -6700149, 1034550, -865973, +5084168, 1381369, -6740951, -375273, -4268124, -3269544, -1683090, -1504849, -1791001, -850404, +3810710, 3490735, 2943126, 5042292, 15592342, 1273995, 13530221, -1851668, 17562658, 8761733, +13695040, 8418136, 3990025, -6782290, -686121, -4245039, 9386651, 2764885, 8243653, -7871065, +-1376537, 14564234, -17952964, -10034654, 13993540, -23680840, -10440529, 1766305, -4520453, -11725261, +23849416, -4262218, 16474421, 6609955, -14352170, -2195802, -5397700, -17352742, -22541062, 18005040, +-163746, -6558952, 4453881, 328028, -2992519, 6557342, 2573222, -2324114, -8291971, 1592359, +17009144, 14421426, -11894912, 4720706, 934155, 13454522, -6124624, 9119289, -19339164, -4680441, +13204877, 4437238, -4426501, 15759309, -5012764, 11048803, -21470004, -24755654, -8925479, 485868, +-17538498, 18953690, 13375065, 19254876, -8827232, -6496138, -6676527, 1002875, -9764071, -99858, +-14923401, -13545253, 620623, 3821984, 13827110, 6540699, -1455994, -5094368, 4351876, 7987566, +5234492, 3196530, -4915590, 5776731, 5157182, 6510097, 4819490, 3528316, 5216238, -7155953, +6038724, -4327180, -2196876, 9469866, 8368744, 5631239, -995359, 341987, -2527052, 4858682, +1523640, -1987496, 2637110, 4929012, 744640, 3832722, 3722663, -4927938, 1637993, -3723737, +-1089311, 1172526, 21589726, 15525770, 24328306, -21605832, -16239808, -37012416, 15947750, -4121021, +-31628676, -6134824, 3000572, 4658429, -11818676, 12875238, 10877542, 1221381, -143345, 2010045, +-5240934, -11013370, 2427194, -6263673, -10307385, -135291, 23977728, 744103, -3639985, -19174882, +8088497, 15141370, -7834557, -23135916, -4197794, 7798050, 2765422, -4911295, 5041218, 1647657, +8321499, -2339684, 13725105, 20976084, 7934952, -13947906, 15808164, 7117835, -17865454, -19011672, +20664698, 9994389, -8048232, -9277129, -459562, -16851304, 12334609, 16250546, -387621, 915902, +4091493, -2081449, 17784386, 5979668, 4622996, -7374996, 2873333, 6005438, 21961778, -5272609, +8414915, -17016124, -19383188, 17282948, -2608656, -1616518, 1784559, 16473884, 360240, -775778, +10395431, -4975720, 2071248, 9540733, 11643656, -5570036, -7256884, -15631533, -7714298, 5105106, +-6909529, 5440113, -177167, 5772973, -3131031, 4257387, 878858, -2408940, 1872606, 8738648, +2149631, 8698919, 2618320, -5508296, 347355, 3628711, 3004330, -5405753, -4961224, -5266167, +-2268280, -4138201, -4056060, -6431177, -2778844, 3577171, 2263985, -658741, -1059246, 1953673, +-4284767, -108448, 5484673, -1554778, -907849, -2652142, -2248952, -1160715, -8168491, -1151051, +-3182034, -3502546, -5104032, -7267622, -25049324, -2065342, -16390132, -33248416, -34266860, -14812268, +-26163868, -11862700, -4227322, 4699231, 14631880, 16324097, 1671279, -8833137, 17581986, -8939974, +8665633, -32826436, -3229816, -22519588, -15115064, 15252503, 10707890, 10419054, 3463891, 21964462, +-2221572, -1374926, -15822660, -5485210, -3187940, -10769094, -10877005, -26975078, -10609106, -2979097, +-4351339, -16689706, 14756971, 5877126, 8804146, -7348152, -2831457, -40935332, -11800960, -11283416, +9477382, 20979304, -12927852, -1982664, -23851564, -1722282, 12271795, -3908957, -8056822, 5365488, +17601312, 30039002, 6311992, 952409, -1663226, -8058970, -12026982, 8032663, -7925826, 27247810, +5356361, 11731703, 55566140, -11059541, -9460202, -14038637, -19479824, -2643016, 18981608, 8544837, +2712809, 6316823, -8029978, -6225018, -16954920, -4059818, 9530532, -1556926, -3750043, -1591822, +-3954054, 1997697, -625992, 3695819, 3744675, 3820910, 5013838, 5490579, 14153528, 8641474, +-5246840, 8238821, -220117, 526134, 5920613, -6847789, 128849, -7900593, -4779225, -10814191, +-8033737, -11279121, -9361955, -6271189, 12367895, -7697119, -4345433, -9079024, 566399, 2698313, +-1964948, 3728569, 1499481, -228707, -7672959, -27808840, 15775415, 26007638, -15397995, 775242, +5826123, -9003862, -2177549, -19459960, -416075, -10924786, 28234042, -26844, -5347235, 22655952, +-5782100, 6568079, -26042534, 13472239, 4001299, 17561048, -8236137, 13069049, 23095112, 24812026, +13914083, 22363358, 11445014, -3597572, 21735756, -10570988, -14361834, -4628364, 8706972, 14721537, +-35458176, -2457795, -22935126, 18132278, 8194798, -492311, 6220187, 25407952, 1056562, 22670984, +9666898, 34354368, 3060164, -3959960, 15030775, 4936528, -17572858, 3728569, -2080375, -23570780, +16474958, -14233522, -23000624, -47004660, 3610457, -5831492, 27585502, -15426986, 36927592, 12159052, +-656593, -5693516, 14379551, 15164456, -27078696, -11588896, -20021526, 6927782, -9056475, 20266876, +6420976, 6792491, 9774809, -4710506, 1702955, -7142531, -2509872, 539018, -2715493, -20922396, +8213588, -66035, 6150930, 176094, -6192269, 644782, 8501351, -13926431, 11945378, -5118528, +-75699, 1339493, -11712376, -1018981, 7016903, 3550327, -8424578, -3486977, -2066416, -9855876, +3265786, -2821257, 14296336, -11511586, 5069672, 9976135, 3546032, -4254165, -3182034, 4846334, +2346663, 3003793, -2578054, 5025649, -15369004, 4094715, 3644280, 6580964, -4689031, -7176354, +511638, 6441914, 861678, 17859010, -11941083, -13361643, -13145284, 17173964, 8909910, 22363358, +6208375, 69186552, -20547660, 372052, 520765, 32205276, 13335873, 14911590, -21125870, 9278203, +-8329552, 598074, -9771587, 2150705, 23277112, -6125160, 7383586, 44978508, 14120779, -20371566, +-23852100, 2774549, 29334626, 15298137, 5576478, -11349988, 24973088, 4239670, -3703336, -27440546, +8391292, -4359929, 11828340, -24910274, -15202574, 1298691, -6334540, 3278671, -23226110, -801011, +-14166413, 6582575, 20598126, 16464220, 5391258, -31871342, 271657, 3151432, -28718298, -25651156, +-16996796, -14024142, -13998372, 22733798, 5196374, -650151, 14826227, 23638426, 6310918, 20472498, +558346, 13554380, 90393496, -20623896, 14898168, 10377178, -15879031, 3365107, -60224568, 1214402, +29912300, 7829726, -16565689, 23028540, 5555540, 8761733, -15023259, -3409667, -12833899, 4514011, +1124745, 1146756, 5164162, -18660022, 6915971, -10234370, -7439957, -25549150, 6350109, 5874442, +5101885, 6585796, 31991600, 4836133, 3430605, 3679176, 2511482, 19124952, 2255395, 8080981, +6696391, 14592688, 5872831, -867047, -3222299, -2644089, 2429341, 9259413, 11050951, 3277597, +-16782048, -7702487, -3713536, -3710315, -5543192, -17524004, -4256850, 13467944, 36599564, -17013440, +-865973, -24550570, -17829482, 5816997, 16043850, -20310364, 24260660, 10175851, -31825708, 19589882, +-12880607, -15761456, -1307281, -19062676, 4497905, -8528731, 24622510, -14171781, -1109175, 13558675, +-47501264, 6817724, 14761803, -14327474, 11716671, -28698434, 28716688, 3150896, 4960151, -54316304, +49052820, 21041582, 16120623, 1094143, -30962420, 28414966, -1795296, -14057965, 50164144, -9971303, +-22001506, -11586211, 6075768, 14526653, 13759465, 3673808, -8434242, -59027884, -6648610, 14785962, +882616, 21693880, -30971546, 32003412, 3270081, 10831908, -31479962, -9089761, 5093831, 40787156, +-16934520, 9543417, -29163364, 25831544, 14492830, 24378234, -9371082, 10811506, 4234301, -31884764, +-30440580, 16770237, 13716515, 26003342, 5594195, 33367600, -50232328, -65747896, 10528575, -13861470, +37187976, -24230058, -5222680, 4297115, -27974196, 1398549, -16688095, 14576045, 20684562, 2076080, +16789028, 18452254, 5509906, -16644609, -8378408, 29677150, 15473157, 3861713, 5224828, -8886824, +747861, 18073222, 10165114, -14612016, -8225936, 16816944, -2335389, 10482941, 10572062, -6453725, +-8538395, -8662949, 121333, 8978629, 4112431, 11483132, 16503412, 1361505, -463856, 13431436, +890669, 2709588, 4306779, -5603322, 4661114, -9807021, 5657009, 2026151, 295279, 4126390, +-4891968, -45965276, 41857140, -9073655, -10152766, -16379395, -4811974, -36250596, -67662376, 23325430, +19382114, -3008088, -13977434, -27577986, -4585952, -8570607, -14685030, 26623966, -60512868, -25867514, +-31961536, -9543954, -46081776, -4265440, -6968048, -1671279, -7743826, -9358197, 7391102, -474057, +-20408610, -6400575, -487479, -27907086, -14924474, -8243116, 2012192, 21457656, -11038603, 43023224, +-22504554, -3233574, 18079664, -19202798, 11655467, 2440078, -29512868, -44139380, -10830834, 11265699, +40240084, 17454210, -30842160, -13048111, -88525720, -29626148, -6391448, 18622442, 48063904, -2548526, +-51496656, 2863133, 27963996, -10289131, -2437394, 29654602, 31205622, 71602472, -79115984, -15336791, +11212549, 20024748, -24972014, -29644402, -42304892, -41997800, -23496692, -19524384, -5500780, -3002182, +-48875656, -20253456, -17913234, 18097918, -9224516, -4813048, 44024488, 33347736, 2676838, -6283537, +-2017024, -27189290, -1207960, 9692667, -19645180, -10521059, 3726421, 12426951, -8326331, -9623948, +-6512244, 13866839, -9170829, 14531485, 1041530, 15007689, 10663330, 10819023, -8260833, 5479842, +-20591684, 10634339, -2705293, 6273337, -18205830, -14093935, -2039036, 4714801, -10248329, 278099, +-23076860, -4035659, -2764885, 9894531, 12228309, -14678051, 30142080, 642098, 11189464, 6722698, +21840446, 21905406, -1055488, 13941464, -26118232, 6114423, -10652593, -62904092, 14060112, -10879689, +18409840, -17497696, -17999134, 1177895, -26393648, 4315906, -26610544, -696858, -4748623, -10545218, +12602508, -19929186, -25901338, -23702314, -30391188, -5243618, -3438121, 33362770, 7295002, -24664386, +-36511516, 4587562, -893890, 8469139, -7211250, 20133196, -24048058, -9709310, -33721936, -21711596, +-9780714, 907312, -14304389, 34797288, -12351789, -30135638, 9179956, 36121212, 26254598, 10549513, +-25808458, -16953846, -2731599, 32774896, 63065688, -795643, 12327630, -12333535, -61920008, -13796509, +5516886, 23099408, 52655764, -29432874, -35872640, 20775294, 9867150, -12636331, 1578401, -19871740, +12054363, -52468932, -6102612, 2782602, 12607876, -31718334, 36265632, -51318416, -58244588, -53910428, +27036820, -11228655, 51117092, -71570264, -31161062, 5528160, 72803992, -6050535, -13033615, -40285720, +-14736570, -4875325, 35089344, -3168075, -203474, 1916629, 6060736, 516470, -563178, -15352897, +-12967580, 16591996, 7368554, 1861868, -38190848, 9397925, -9840307, -4680441, -19777788, 726386, +-1789928, -3772055, -44921600, 3993783, -9947681, -5298916, -3898220, 7459285, -156229, 2625836, +-308164, 118648, -143881, 57982, -16378321, -3319473, -10536629, -9189619, 7823283, 7997766, +-13133473, 361851, -9353902, 12093017, -4516695, 37345816, 11457899, -66524748, -11754252, -45882600, +20562692, 3889630, -91495152, 6295349, -28106266, -59261960, -46082852, -67636608, 41965052, -20599736, +-53208740, -23896124, 17389248, -31704374, -27335320, -21332028, -12619688, -23522462, -23338852, -43174084, +-31194884, -59251220, -33368674, -30104500, -9862856, -27861990, -5614059, -12984223, -676994, 2369211, +8032663, 16743393, -16227997, 13951664, 1830193, 30594126, 13427142, 19165218, 19365470, -55489904, +-14463302, 44837312, -7498476, -27509266, -31032750, -22939958, 18069464, 72281080, -4606353, -892816, +-48185240, -49149996, -10233833, 10388989, 43290048, -2755759, 39475044, 14766634, -47327320, 85985784, +1830730, 66966056, 357019, -16802986, 36027796, -47805672, -61877056, -39533028, -137296144, -83176336, +-27164058, 63257352, 38845296, -54899344, -36097588, -84030496, 42000484, 56057912, -42880416, -42805256, +10095321, 37150392, 52669720, 15010374, 30285962, -27676232, -15216532, -20771536, -31878322, -12790413, +-2736431, 3463891, 1471563, -17111150, 2892661, 12356621, 4059818, -2326799, -12552042, -8136816, +-14327474, -4912369, -21245592, -4086662, 13310104, -20285668, -33665028, -4420595, -22049288, -14561550, +-2485712, -27980638, -21925808, -5163088, 13782013, 14776298, 15883863, 322659, -12066174, -1352378, +5224291, -6565932, 21299816, 1780801, 15731391, 1731409, 69793, 16452946, 12228309, 18410914, +38111392, 24876988, 28465970, 24698210, -23368918, -56748868, 65997004, 63108100, -39907224, -51781200, +-240518, 56625924, -6137509, -3287798, -17640504, 49516140, -5487895, -13216151, -1203128, 13674639, +25426744, 680215, -19085760, -21729314, 30558692, 2267206, -13124883, -32678258, 18586470, 10249939, +-3707631, -25757992, 8107825, 11078868, 9207873, -16294032, -9765682, 2873333, 25218974, -7420093, +9066139, -37089192, -10307385, 53687, 24436216, -51628192, -9208410, 5015448, 37171868, -17866528, +5777268, -26385594, 3612068, 10911364, -18126910, -13841069, -2133525, 6026376, 11349988, -11777337, +814433, -46018964, 24916716, -7704635, 43119860, -26738856, 19248970, -18204218, 20012936, 3721052, +13429289, 11349451, -33462628, 37852620, 7508140, 21829708, -36934036, 10251550, -9378061, 5853504, +-10512469, 1445257, -2536178, 5015448, 12577812, -1996086, -14749455, -8812199, 3800509, -2018098, +952409, -5782637, -14367202, 4795331, 3848828, -4496294, -4049617, -301185, -4488241, 643171, +-7803956, -285078, -3800509, 6431714, 3799972, -2718714, -5787469, 1974611, 181999, -5145908, +3756486, -15827491, -121333, -1889786, 7054484, -303869, 18214956, -12114492, -12257837, -4220879, +9625559, -13114683, 19536732, -16440061, 8298951, -8081518, 17810692, -15962783, 19593640, -11164231, +15322296, -13869523, 23807004, -22436910, 17243756, -5196374, 12979928, -12099460, 12754442, -13692893, +14385456, -13771813, 11541114, -9204652, 12751758, -9868761, 10635950, -9786083, 3100967, -3188476, +6408628, -4757750, 5177583, -4076998, 4045859, -2652142, 5296769, -19353122, -43012488, -57189100, +41679972, 27649388, -32624572, -46478524, -22788560, 21502216, 11264625, 28607704, 30787400, 6025839, +-15557445, -4538707, 10755672, -10604811, -891206, 6365142, 1723356, 17238924, 12031814, 5222144, +-15548318, -581431, -9638980, 10001905, -16290274, -14095009, 11782169, -3758633, -6648610, -6505802, +-11335492, -15503758, 1156420, 12658342, 11522860, 9684078, -3710315, -12783433, -11133629, -7766375, +13776108, 18778134, -8783745, -13127031, -5709086, 15582678, 8018167, 20847234, -14767708, -5606006, +8206072, -3930432, 656056, -2234994, 7369090, 4436165, 5946919, 1254131, -14133127, 5837398, +2594160, -522912, 10894721, -5674726, -2818572, 1884954, -2040646, 1399623, -4110821, 18504866, +4627291, -1498407, 17608292, 17660368, -17973902, -27180164, -9982578, -18616536, 536334, 12310987, +3498788, -11135776, -13450764, -3584687, -2610266, 10698227, 5090073, 6667400, 10006200, 6116571, +-5608691, 6193343, 4377646, -13084081, -17548700, 5249524, -4639102, 8722005, 6388764, -9618042, +-2585570, -3268470, -3538516, -11176042, -6143951, -696858, 3518652, 5334887, 14849313, -7401303, +-5548024, 3805878, -3462818, 19608136, -47631188, -125398016, -46098956, 22492744, 65234648, 137780944, +92198456, 23731304, 34942244, -18410914, -56084220, -93134752, -81039592, -64423972, -18583786, 2482491, +44819596, 49421116, 105191800, 51074676, 33668784, -2637110, -22430466, -50629612, -26300232, -40938556, +-47225848, -29067264, -24348170, -1809792, 13145821, 39364448, 24320790, 28258200, 25669946, 25964688, +39031052, 3377992, 27039504, -5008469, -12156905, -32939178, -19644106, -49126908, -72341744, -63189708, +732829, -10739566, 19822348, 33990372, 18620294, 52427056, 45756436, 66259536, 37698000, 44940928, +2210298, 2221572, -35442072, -57870388, -67656472, -81190992, -53390200, -66349728, -5597953, -250182, +31928250, 33521146, 80197776, 63027036, 89585504, 36383204, 41872708, 17485886, -396748, -53451404, +-87235080, -58386324, -69696584, -43393128, -47201152, -4392141, 7275675, 27861990, 36508832, 49514532, +50501300, 48601312, 31788126, 34808024, 9033927, -6285685, -11977590, -39158292, -35747548, -46886012, +-33174864, -46868832, -35757212, -3709241, 8346195, 24740086, 37287832, 33309082, 34276524, 56542172, +20436528, 34531536, 26462368, -35618164, -64539936, -27949500, -56913148, -35844724, -19550154, -4046933, +5035313, 18134962, 32790464, 22864258, 35276712, 22429930, 19188304, 7769596, -2204392, -20501490, +-6782290, -9608916, -36036388, -33621540, -9318468, -3789772, 1864553, 11841225, 13784161, 17557826, +13964012, 13880797, 5147519, 4683662, -265214, -7879118, -3991635, -2893734, -8113730, -12856985, +-4488778, -6484864, -7667054, -1001801, 3180423, 3663070, 5330055, 5941014, 5523328, 2313914, +1056562, 714038, 734976, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 7651484, -815507, -2067490, -2163053, 1333587, -3695283, -53687, -7201587, 5168993, 6554120, 4579509, -6449967, -7733626, 628676, 1772748, -2756295, -2121177, -1883880, -9058086, -1522029, 5391258, --9273908, -7535520, 4391067, 3980898, -5958194, -2075543, 3948686, 509491, 4800163, 2059437, -4999879, -3133716, 958851, 696858, -1324997, 2331094, 1831804, 3396246, 1426466, -1493575, -328028, 3794067, -1022202, -1719061, -638876, -4578435, -10112500, 6018323, 2921652, -3160022, -4439923, -1772211, 493384, -150861, 2064269, -2664490, -692027, 5981279, -5626407, -2252174, -1956895, 980863, -869194, -272730, 2621541, 304406, 2320893, -4006668, 4083440, 2105071, --5228049, 4170950, 370978, 1514513, -623307, -1549946, -6102612, -1883880, -455803, 3142306, --804770, 2571075, -1533303, 309775, 765578, 312459, 1821603, -319975, 126702, -217433, --1235340, -558346, 243739, -658741, 88047, -25233, -280247, 1674500, 1679869, 878858, -700617, 613643, 217433, 11811, 224949, 97174, -253403, -739808, -836982, 11946988, --6880538, 2092723, -7604240, 908386, 1771674, -7665980, -9692131, 2413772, -10515154, 2310693, --2746632, -731218, -6451578, -940061, -7243999, -3726421, 23085, -7663296, 8131984, 2859911, --12707198, 1200980, -705985, -2305861, -5443334, 2726231, 6583111, 125628, -492311, 6179921, --3641059, 73551, -2320356, 4093641, -4808753, 1402844, 5774584, -5038534, 5048734, 1772211, -5461588, -475668, 1232656, -834297, -2318209, 7158637, -8902393, 2045478, -3946001, -1716376, --1170379, -3244848, -2404645, -7096360, -4466766, -1115081, 4604742, -400506, 1721208, 6452652, --163746, -5609228, -733903, 194884, 1738925, -2742337, -5906, -5517423, 102005, -2251637, -1805497, 2855617, 4197257, 1493038, -2393908, -3103114, 4119411, -1392643, -1910724, 763430, -2283312, 4755603, 563714, 1358820, -328028, 2784750, -559956, -2221572, -1148904, -1103807, --117575, 1886028, 352724, -133681, -1023813, 1826972, -21475, -695785, -531502, -477815, --551903, 864362, -384936, -99321, -1078037, -2876554, -9896678, -117038, -5964636, -1882269, --972810, -6955700, -953483, -1620276, 3450469, 8112120, 8157754, 970126, -3489124, 3262565, --7904888, -1130113, -3026341, 2755222, -11779485, 4158602, 1992328, -430034, -3391414, -5077188, --2323577, -4188667, -3606162, 2203318, -791348, -4514548, -1320166, 914291, 7686918, -296890, --7772817, 608275, 3342022, -97174, -2449205, 644782, 2921652, -8442832, -660888, -3671123, -5927592, 3611531, 1001801, -7805030, 878858, 3006477, 4782446, 4478577, -5133560, -2412161, -229244, -1603097, -1611687, 4172024, -2592013, 2553895, 697395, -3279745, -743029, -4505958, -5425618, 2039036, -5366562, -3699041, 903017, 2846490, -4257923, -5366562, -915902, 266825, --3571802, 768262, -1467268, 1811403, -3404299, 5058935, 2707977, 3813931, 1088237, 503585, -3429532, 4642323, 540092, 1319629, -444529, 660888, 77846, -192737, 517544, 391379, -537408, -732292, 25770, 357556, -259846, 82678, 1546188, -899259, 352187, -1076963, --864362, -721555, 158914, 587337, 394600, 54761, -1002875, -663036, -16843788, 5437429, -4862440, 8147016, -2122788, 5113159, -14529337, -3979287, 4542465, 530428, -7191386, -1881196, --2399276, -12731357, -5164162, 1279363, -593242, -9080635, 5655935, 8039642, -8277476, 6263673, --10837276, -3695283, -981400, 3714610, -68719, -4403952, 2960306, 1466731, -733903, 4823785, --2352568, -3132105, -983548, -1794760, -3215320, 4743792, -3668439, 1331977, 3552475, -741419, --2843268, -5333813, -657130, -3811247, -1170916, -4431333, -1206349, 9802726, 188442, 5953362, --5493263, 4992363, -1578401, -8041790, -4747013, 4424353, -2929705, -4099010, 2917357, -4816806, -3982509, 1056025, -1488743, 5205501, 4704600, 2063195, -5195300, -5885716, -418759, 7792145, -1540283, 1165547, -4440460, 1134945, 2794413, -5977521, -2193118, 1918240, 4149475, 2045478, -3511136, -217970, 23085, 1278290, 155693, -689342, 202937, -528818, -762357, -2655901, --2117419, 622770, -1277216, -774705, 879395, 381178, 641561, -185220, 1071594, -718333, -45097, -947577, 4295, -1145683, 557809, 173409, 766652, -1488743, -9048422, -8603356, --5699959, 1022202, -1484448, 3468186, -3143916, -34360, 580894, -2596308, -1010928, 2118493, --2574296, 9979893, -6614250, 4599373, -1766305, -727460, -4707821, -1325534, -687732, 7263864, --5034239, 610959, 1371705, -7210713, -4426501, -4939750, -4206921, -8352638, -2908767, 2944200, -5588826, 3525095, -6679748, -9402220, -2101850, 241055, -4811437, 827855, -3284576, -4927401, --11630235, -5868536, -8166344, 4632659, -2148021, 3755412, -4711579, -11339787, -6036577, 511638, --2348810, -3752728, -1734093, -4494147, 5982890, 493384, 3462818, 4651450, 1141388, -242666, --3965329, 125628, 5057324, -929860, -3830037, -5289789, 8355322, -7041599, -9812390, -6944962, --4021163, -5472862, 6064494, 9707700, -7826504, -5413270, 1148904, 4684199, 7224135, 5703717, -4441533, 4381404, -1619203, -1985886, -2262911, -2341831, 1750736, -1453846, 439697, -1763084, --2809446, -1174137, -2037425, 1409823, -1291175, -2508261, -1486059, -1468879, -2521146, -2781528, --1759326, -737661, 497679, 445603, 1237488, 117575, -4293894, 457414, -701690, -1753957, -451508, -788127, -1330903, -2828773, -2342368, 32212, -40802, -980326, -1122597, -43487, -2309082, -18480708, 5698885, -1313723, 3266860, 10126996, 3974455, -2514703, 3426847, -7633231, -4712653, 5524939, -10069014, -2159295, -5099737, 5668820, 4937065, 7695508, 8934069, -11621108, --5984500, 1904818, 9972914, -3794067, 4635881, -11111080, -3355980, -3903052, -2357400, -6730751, -1663763, -11001022, 7614440, -2167885, -1952063, 5555004, -332860, 1261110, 5913096, 151398, -4840428, 3233574, -1370095, -1917166, -653372, -7727183, -5657009, -7061463, -444529, 14652281, -3406446, 2826089, -342524, -2057289, -120796, 8752070, -1871532, 2732136, -16902844, 15546171, --3767223, -2788508, 896574, 9517648, 3470334, -1605244, -5793911, 16658031, -3211025, -213138, -5343476, -4233227, -23622, 2378875, -3751654, 3281355, 3272765, 13754096, -6847252, -8633421, --1581085, 4108673, -5177046, 1143535, 3563749, 1126355, -3022583, 1352378, 3654480, -2314451, -332323, -3950833, -1231582, -1170379, -3211025, 4213363, -3053722, -2607045, 1937030, -134755, --3621194, -340376, 884226, 1547799, 185757, 1823214, -1307281, -1137093, -1063541, 1220308, --1332514, 2179159, 249645, -938450, 1013612, 2275796, -51003, -1050120, 7998303, 4487167, -8900783, -3558381, -2114198, 5130339, -8207146, 7393250, 8436926, -4223027, -707059, -13249437, -632434, 4566624, 3696356, -2801929, -9012989, -18289044, 299037, -3104725, -8677981, 2030983, -5841156, -7937100, -3380139, -8657043, 4387846, 503048, -1285269, -2874407, -3751654, 9346386, -10902774, 4245039, 5197448, -2421825, -5466957, 15203647, 3784403, -2584497, -8919573, 6585259, -279710, 8745627, -765041, 10806138, 5408438, 7564511, 6398965, 3265786, 8414378, 10500121, --294205, 1947768, -3343632, -100395, 5733782, 2405182, 3121904, -9270150, -3398930, -1948305, --8071854, -7716446, -5080947, 4337917, 8927626, 11671037, 15267535, 3408594, 1344325, 12306692, --4890357, -9254044, -3216931, -4679367, 7969312, 6518150, 2503966, -8761733, -2378338, 1583769, -1287417, -1688459, -4031901, 1259499, 1046898, 5099737, -1202591, -2785286, 603980, 1011465, -1261110, 121870, 90731, 1035624, 2345052, -1614908, -1581622, 184147, -179852, -2276333, --508417, -2911451, 3240553, 1069447, -2189360, -58519, 2207076, -1107028, -168041, -1712618, -993748, 1186485, -744103, 2827699, 2149094, 14127758, -13378823, -6286759, -1789391, 5417565, --12514998, 7927973, -12329777, 6081137, -28991, 6451578, 10211822, -4168266, 9327595, 10198937, -9698573, -5608154, 8182450, -8792335, -7007239, -1082332, -5413270, -78383, -4653597, 8014946, --5917391, 1768990, -5841693, -10266582, -4778151, -2157147, 12427488, -10404558, 9790915, 4311611, --14409615, 16546898, 4086662, 1851668, 11629161, 2069101, 535797, -6573448, -19864, -3668439, -13259101, 5599564, 9298604, -3611531, -2177012, 6397354, 11047193, -11527692, 11447698, 2093797, --1843078, -2145336, -10848551, 5242008, -5111011, 2216740, 499290, -9843528, 3342558, 8343511, --7558069, 5294084, 3481608, 11676405, 1257889, -783295, 7101729, 10211822, 847719, -5852430, -6871411, -7898982, -4099546, 2111513, -3183108, 2136746, -2548526, 1018444, 4430796, 3227668, --3207804, 2820720, -1642825, 2274185, -2246805, 7110319, 734439, 6788733, -797253, 1702955, --1416802, -587337, -2149094, 4302484, 1824287, -3544422, 3724274, 4311074, -459562, -592706, -2648921, -187905, -205622, 3588445, -92342, 880468, 2334852, 1514513, -539555, 2739652, --2250563, -419296, 546535, 739271, 628139, -157303, -306016, -2733210, 1316408, 4057134, --11404749, -8158827, 12411382, -15892990, 4009352, -8457864, 9449465, -10094784, 15433965, 5356361, -1496259, -13382044, 6826851, 11343545, 2997887, -6874632, -4473209, -3930432, 10524817, 5734318, --14685567, 2088965, -10390063, -560493, 1189706, -8866960, 11642046, 11700028, -5306432, 2576981, -7926899, -9666898, -1474784, -2965138, -8019241, 17065516, -6199786, -3796751, -8589935, -14324790, --2279017, 283468, -4960151, 2149631, -11874511, 1065689, 833224, -2359548, 9377524, -1935420, --7304666, 3821447, -11811, -5440650, 4679367, 20234664, -4050691, 4836133, 1095217, -13704167, --2239826, 12275553, 5515275, 12187507, -1253594, 7058779, -9695352, 4377109, 4274566, 1461363, --8242042, 7644505, 2683818, -21330956, 1658394, -3825742, 14280229, -5451387, 11086384, 10310606, -8252243, -986769, 3162170, 522912, 824634, -1352915, -2362232, 5621576, 2244657, -34360, --3711926, -5133023, -1214939, 2261837, 3615826, 2643016, 4641786, 210990, -1268626, -1870995, --1508607, 1733019, 2770791, -204548, 2183454, 1493575, 393526, 2068564, -398895, 2161979, --3504693, -4260608, -5699959, -208843, 2573222, 1238024, -2686502, -905701, -1887101, -2002529, -3458523, 1131187, 1529545, -24959128, 28223304, 3328600, 11141145, -20476256, 11180874, 14549202, --16765942, 6389838, 8303783, 6423661, -10832981, 1422708, 1914482, -3656628, 6328098, 13032541, --10459856, -8705362, -3182034, 11047730, 9556302, 13510893, -649077, 5706938, -10065256, -2637647, --2612951, 2209224, 6353867, 17268990, 10285373, 6277632, 3286724, -573378, 8252780, -3054796, --14816027, -2878702, 4359392, 4731980, -8669928, -6569153, -10737955, 2073396, -850404, 3769908, --7038378, 12607340, 12328704, -10674604, 25381110, 1162862, -2329483, -145492, -5280663, -1143535, --1622424, -10263898, 172872, 30065, 6739878, -21357262, 5234492, -7570954, 15516106, 18734110, -8112120, 7783018, 3503083, 1249836, 16916266, -3173981, -12504797, 10702522, -5630702, 2868501, -8358007, 15237470, 2143726, 1502165, -12197170, -532039, 3571265, 9671193, -4201015, 5252745, -2536178, -3704409, 9825811, 1656247, 4406637, -2864206, -903554, -2838437, 482110, 1127966, --1495186, -87510, 2961380, -1635846, 3001109, 2017561, -2090039, -224949, 1395864, -887448, -241592, -2015413, -6623377, -1907502, -1005559, 6924024, 8578660, 838592, 1265942, -2467459, --2864206, 718333, 940598, -3590056, -2779918, -1867774, -1618129, 2298344, -3965866, -196495, --2913062, 10264435, 1964948, -7147900, 6655052, 9988483, 8675834, 5475010, 10350334, -12595528, --8036421, 1397475, -11395085, -2847563, -1945620, 2500208, -2961380, -7403450, -9302899, -5599027, -4533875, 7790534, -13729400, 2866891, -1475858, -400506, -16535087, -14850923, -2624762, -11528229, -5381057, -13142063, 799938, 6972343, 10041097, -8975945, 11940009, 3016678, -1228361, -2685965, -17729624, -4996658, -923955, -14324790, -8067023, 11595338, -925029, 4361003, -13780403, -15093589, --4150549, -8538932, -1515587, 608275, -5587753, -7167227, 4198868, -6657736, 548682, -9788230, --5296769, -301185, -16078747, 1424319, 10532870, 1959579, 5519570, 11447698, 19687056, -19079318, -3441880, -11794517, -11436961, -6440304, -8695698, -5629092, -5140539, 19232864, 10594611, 10619844, -2199560, 3078418, -13964549, 623307, -4928475, 2172717, -6070937, 8478265, 11256572, 1043140, --5116380, -3525631, -9635759, 813896, 5908265, 3216394, -2338073, 6043019, 2935610, 6400038, --1394791, -1249836, 1054951, 4140349, -2686502, 1729798, -3948149, -5546951, 3959423, 1359357, -814433, 814433, -7470022, -4511863, -38655, 5670968, -4835060, 2803003, -6478422, -2239826, --1034550, 2222109, 1559073, -2005213, -1579474, -8690329, 19815906, 21010444, 23088134, -17266306, -1203665, 12422656, 9773198, -10113037, -19287624, -2301029, -2920041, -15191299, -8800388, 28651190, -2208687, 1898912, 10695005, -1308354, 4545149, -4022774, -11439645, 7438884, 6225555, -15484431, --21962852, -17047798, -13542569, -12920335, 1189706, 3672734, 6475737, -8615704, 8333311, 1941325, --4238596, -9114994, -347355, 437013, -14010183, -11002632, 1561221, -2592013, 1864553, -8532489, -6800544, 2060511, -8010651, -17161616, -6799470, -5840082, -22774600, -7237020, 2081449, 11163694, --1132798, 13232257, -2394444, -1192390, -19415936, -4190814, 7568269, 3558917, -32458678, 9217000, -2762738, -9111236, -5541582, -9501541, -10686416, -499827, 445603, -10355703, -3358665, 6487011, -9408126, 14811732, -11426224, 469762, 8359080, -453119, -24830816, -19833086, -272194, -5303748, -6162741, -257161, -6140193, -8949638, 4052839, -2630668, 3678103, 10058277, -316217, -5085242, --8486319, -15567109, -5327907, 871342, -2605435, -2686502, 976031, 941672, 6849399, -3603478, -682900, 2516851, 1328756, -5670968, 610422, -1494112, -13516262, 1306207, -5022428, -6157910, -2156074, 1587527, -4115653, -1352915, 4827007, 1343788, 1263257, -5050345, -5672578, -2053531, --450972, 227633, 3434900, 7945153, -6739878, 22556632, -19305342, -11885248, -3925063, -36501316, --19067508, -100395, -23269596, 18067316, -8185134, -7541426, 2065879, 41372348, 19963008, 1278290, -8491687, -1925219, -11108933, -1107565, -17185774, -12436615, 5908802, 6001680, 7416872, -11943230, -15289010, 9358197, 17297980, -17589502, 2818036, 25642028, 2389076, 1046898, 5051419, -24598352, -6267431, -6220724, 4034048, -9909026, -23232014, -1428614, 9370545, 11429445, 2946885, -3635153, -1671279, -1073205, 7678328, -17544404, -25535192, 4554813, -9332964, 15222438, -6115497, -6353867, -19877646, 4466766, 8536248, 1575716, -16843788, -6913824, -2035278, 9063992, 26222922, 20184736, --6053220, -23218594, -505732, -2685965, 8566312, -14323179, -17954574, -10197326, 8459475, -18185428, --2867965, -15262166, 63351, 12263742, -408559, -22866406, -5058398, 3011309, 5975374, 2828773, --14279693, -9622337, -15280420, 2343979, -3236795, -6643778, -5126044, -6640020, 1252520, -2780455, --6366752, -1813013, 4426501, -42950, -247497, -7769596, -228707, -745177, -4978941, 390842, -9482751, 3168612, 1686312, -9829570, 3765076, -1102733, -1183264, 1518808, -285615, -214748, --2071785, -5861020, -6568079, -5367636, 6553583, 5749351, -2744484, -14592151, -5457830, -5430986, --1258425, -41510860, 16047608, 13171054, -6079526, -27430346, -6040335, -10557030, -11111617, 12123082, -14975477, -1513439, 4107599, -31166968, 11005317, -39012800, -9855876, -3364570, 7798050, 19668266, -31217432, 12975633, -18034030, 4229469, 21818434, 2932389, 6654515, 11860015, -18330384, -7048578, --2872796, 5604933, -12906914, -6918119, -3897146, -9674414, -7385733, 13290239, 13028246, 3381750, -1106491, 22473416, -4195646, 10519986, -25336012, 16864190, 4835060, -22945862, 2374043, 7417946, --21589726, -2738579, -21114596, 7125351, 8929774, 9552007, -14207752, -1165547, 14235669, -11784853, -192737, -1849520, 23481660, -13824963, 17306570, 8818642, -21827560, 19252728, -16064251, 12414603, -16297790, -16367583, 9300752, -13953812, -17418240, -26227218, -21911312, -23976118, -5715528, 4362076, --7211787, 21100638, 21864068, -9158481, 19272056, -2876018, -4029753, 24551644, -5418101, -16322486, -11439109, -2381559, -12782360, -9774272, 9702868, 1802276, 5042829, 7745437, 1382443, 6389301, -9761387, -2508798, 10941966, 7597797, 5471789, 6300180, 938987, 3909494, 9302362, 7573638, -9430674, 1511829, 7835094, -1349694, 569083, 6922951, -3346853, -12123082, 5820218, 2075543, -40802, 378494, 5557688, -10708427, 5589900, 7757785, 6216429, -7048042, 6820945, -32802276, --15469398, -16103443, 28835336, 943282, 10826002, -4606353, 40860708, 6510097, -27166742, 2065879, -30043296, -11030013, 6751689, -4880694, 2675228, -17447230, -23551990, 37554656, 26757646, -10200010, -20556250, 8115341, 26716308, 30354144, -8776229, -7088307, 27011050, 19807316, 2266132, -8455180, --13310641, -13987098, 12545599, 23811836, 11241540, -4279398, 16040629, -8345122, 15227807, -6727530, -22171158, 39197484, 29880088, -31832686, 14639396, -5386426, -12920872, -376883, 11173357, 10775536, -71567576, -7178501, -686658, -11599633, -12633646, 13968307, 25890600, -6287296, 19694572, 16809428, --2196339, 635655, -13864691, 14216879, 11966853, 38081328, 38737384, 47022376, 19566798, -11959336, --9678172, -21556978, 21126408, -31903018, 23147726, -29944512, 17661980, -10540387, -17993766, 13070122, --48506288, -38367480, 7030325, 7574175, -13859323, -13438953, 22671522, 11315628, -20798380, 3124589, --4716948, -11375221, 3758633, 5866389, 1806034, 5944235, 6977711, 12258910, -5640903, 2413235, --6826851, -12109123, -7393786, 2935073, 1076426, 16802448, 3601867, -4029216, -13573707, 2186138, --5369783, -4343823, -6027987, 4722854, 10133975, 3614752, 8797704, 7390028, 11625403, -4850629, -8861054, 1202591, 2595234, -762357, 775242, -6789807, 8172249, 19503446, 10465225, -2021856, --2152852, 15508590, 12999792, -11950747, 3837553, 7813083, -5992016, 22433152, 5067525, -52586504, -12059731, 6888591, -39119636, 2302639, -6713034, 1619740, 14326400, -1902134, -36158256, -6426345, --11530913, -2032593, 25589952, 30720828, -17498234, -4416837, -14689862, 7556995, -27710592, -53739704, --19263466, -16238734, 2807298, 868120, 24417962, -36745592, 17485348, -8560407, -4079145, 15066745, -7066832, 25523380, 5802501, 9810779, 27307402, -31255550, 38945152, 30910342, 16108275, 28987808, --11296838, 10984379, -27211302, -5449240, -13711683, 24001888, -21338472, 5099200, -45788648, -56791816, -37853696, -1804423, 24412594, -17289390, 16149614, -11317776, 3479997, -6521371, -37211060, -11822434, --24886652, -11872900, 13427678, 55043228, 19643570, -48721036, -11041824, 12786118, -11307038, -7384123, --32171452, -16727287, 24790552, -9409736, 5976984, 4765266, -20062330, 12549358, -2958159, 849330, --41140956, -12105902, -905701, -18928458, -10689100, 1413044, -27851252, 2750390, 6197101, -22669912, --17741974, -31947578, -23730768, -2379412, -13156559, -6470905, 766115, -9291088, -9010305, -3927211, --14067092, -6934225, 1774895, 9342628, -12410845, -4643934, -21228412, 7267622, 5178657, 12241731, --8807904, 12732967, -27457726, -1869921, -34897, -2180770, 4158065, -4720169, 2871723, -12998182, --13390097, 3850975, 3308199, -32236414, 17130478, 17114908, 30323006, -14668924, 11165841, -16872780, --19628538, 8879308, 40237400, 65157876, -3975529, -4220342, 1447404, -1349694, -28916404, 45624364, -21946210, 24314884, 18744848, -13086765, 15882789, -25566330, -36870684, -6283001, 27740120, 18089328, --13146895, -8437463, -1762547, 22480932, 1015760, 16413754, 16053514, 26602490, 8904004, -16580721, --15770046, 15252503, -17762374, -13197898, 7913477, 29211146, 26903676, -30572650, -23664196, 15917149, -18931142, 57332444, -13228499, -31067110, -32244466, 27487790, -20616380, 25941066, 29272350, 58992988, -125030256, -27844810, -15879568, -46733004, -74512312, -23676008, -37502044, 4406100, 51884280, -7515656, -27497454, 39262444, 25706990, -14367739, -46141372, -75521096, 42256036, -2865280, 48056924, -24568824, --65544960, 22999550, -38831872, -51652352, -26540214, -16362752, 16522739, 16365436, 29525216, -2080375, --14323716, -2166274, -1177895, -26666378, -25928180, 13328894, -9167071, 26584236, 24131810, -11404212, -24024436, -18792630, 541703, 23789824, 2554432, -36718212, 9838159, -18428094, -3224447, -5838471, --4938676, -27031988, -22236656, 4456566, 32223530, 34676492, -32350768, -3688303, 39342976, 37815576, -44560, 8093329, -35633196, -18763102, 5273146, 20973936, -30807800, 8035884, 23985782, 12215961, -9068823, 2893197, 15121506, -25233470, 4694936, -23002234, -63432372, 15969225, -26503706, 26326002, -3870839, 14697915, 12883828, -58030376, -41111964, -20365662, -12785581, -13492103, -23716272, -7380365, --39400956, -25100326, 18953154, -25660282, 48831632, -36335960, 3738232, 10059887, -3861713, 4290136, --2095407, 11662984, -11324218, -12212203, -2112587, 8737037, -1537598, 20936354, -19766514, 4452271, -30601642, 9797357, 4589173, 15573015, 1931662, -12475269, -7940858, 24821690, 5568962, -39260832, --17403208, -31859530, -14499810, 42194296, 39355860, -40668508, -4498442, -46238544, -11142219, -3856881, -10660646, 23163296, -37868728, 25246892, -32239636, -5469641, -21842594, 48581448, -9825811, 34259880, -32057636, 71331888, -32869922, 29407642, 4787815, 27939300, 9760850, 21310018, -35756140, -32862942, -47662864, 2303176, -1799591, -33777772, 38481296, -13052406, 19740206, -35553204, 74673376, -40039296, -41539312, -50127100, 19789062, -37791416, 20855824, -34821984, 25789132, -22069690, 15146202, -12338367, -8338679, -18787798, -11599633, -8921184, -2346126, 6584185, 1148904, 5297842, 428423, 5202279, --2842195, -9628780, -15175193, 6816650, 7529615, 2117956, 6896107, -5738077, 2681133, -4566087, -2818036, 25597468, -6494528, -18514530, 2578591, -10534481, -19695646, 6146635, -10773925, 7740605, --9042517, 6408628, -17218524, 6849936, -22252226, 31101468, 4785668, -57204668, -25195888, -35458712, -1929514, -8322036, -77232104, -35095788, -20277078, -41168336, -25653840, -77829104, -65706556, -12037183, -27894738, -42905648, -25666724, -6378027, -36561984, -8515846, -3070365, -35390532, -9557913, 7046968, -1577864, -46920372, -26770532, -26840862, -14992657, -16732119, -4955319, -32635308, 26874148, 17453674, -38438348, 55988120, 48664664, 12287365, 51459612, 20509006, 9004399, -23156854, 17885318, 18611168, -14668924, -6197638, -17915382, -8414378, 12712029, 22761716, 117880208, 15800111, 24100672, 17142288, -48061220, 18474802, 42179800, 77001248, -37512244, -75856104, 9154723, 48088600, 86057184, 38024420, --74822624, 9839770, -18871012, 108656768, 79860624, 97182224, 89071720, -77888696, -51504176, 63425392, -76182520, -22580790, -44769128, -53954988, 120296664, 80039400, -5525476, -104097656, 24522116, -4274566, --23455354, 28296318, 7315940, -9382356, -22682796, -739808, 15927886, 44486196, 31411780, -27064736, --11237782, -7518341, -6230387, 24954834, 17882096, 19268298, -272194, 10153840, 40736692, 27593554, -5207111, 16091095, -11943230, 20159502, 26041998, 34547644, 44014824, 34377992, 26060250, -163209, --6766721, -9570261, -3775276, -20331302, -11695196, -9976135, -25400436, -32472100, -37142876, -63242856, --36386428, -23783918, -38579008, -70343512, -49387828, -41647760, -48752172, -57642220, -61092688, -21170430, --23972896, -33595772, -19364934, -21106544, -14496588, -19844896, -19596326, -19148038, -18945638, -55890948, -89661200, 72392208, -62634044, 14002130, -1418413, 10076530, -2406256, -6205691, 23117124, -23205708, -22583474, -9205726, 124554, 8892730, 7312719, 8019778, -18790, -13176423, -8354249, 14382235, --11798275, -1564442, 13962939, -7642895, -7870528, -11106249, -20156818, -20383378, 14937896, -7488276, -5619965, -12861816, 2647311, -27196270, -4794794, 7320772, 17552458, -11202885, 3920768, 11835319, -19225884, -4713727, 15945066, -12992276, 50530828, -18873696, 17519708, 2152316, 9991168, -9621264, -13518410, -5546951, 36074504, -6063957, 11293617, -25289304, 33127082, -17550846, -1156957, -5105106, -4989679, -10077067, 19988778, -23081692, 18802830, -21187610, 27380416, -28686086, 34670588, -23186918, --12135430, -14657113, -6988986, 1059783, -22429392, 14442364, -13194676, 12614319, 1290638, 17551384, -6991133, 12015171, 22058416, 9032316, -7310035, 5480915, 5597416, -3511673, 4190814, -7241315, -8161512, -4265977, 326418, -7126962, 15644955, -15631533, 1736241, -1856500, 12768938, -2867428, -2901251, -3419331, 5355824, -7717520, 5899675, -6699075, -2837900, 11158862, 10989211, -3795677, --10209674, 6240588, 9806484, 9411884, -8745627, 7152731, -5884642, 5175436, 1939178, 1522566, --9356049, 9811853, -3345780, -13223667, 10919954, 8975945, -7709467, -2566780, -1132261, 1789928, --7387881, 10380936, -9762998, 2929168, -10705206, 9300215, -7476465, 7775502, -5807870, 9751723, --11068131, 11932493, -10848014, 5125507, -8821326, 8772471, -10209137, 7920457, -6080063, 10378252, --11773042, 12176232, -10335302, -21983790, -45426260, -49982144, 42490112, 10733660, -13156022, -67734320, --27228482, 37728068, 7690676, 27246198, 30393336, -10982768, -19103478, 889595, 7201587, 5575405, -5037997, -11997454, -8805757, -6673843, 31675, 18301930, 9901510, -914828, 4120484, -5310190, --8862665, -5691906, -4639639, 295279, 5413807, -4204773, 6986838, 7295002, -24871618, -11094974, --11003169, 13235479, 9245991, -885300, -11573326, -15709380, 13648332, 2957622, 9155797, 12671764, --23057532, -15413027, 4220342, 18519362, 9393093, -26310432, -16163573, -21388400, -10159208, 5424544, -4832375, -8850317, 9663676, -4034048, -9186398, 4042101, 8810589, -6643778, 2110440, -335544, --8202851, -834297, -2885144, -18718542, -18795850, -1246077, -20050518, -15142981, 658741, 5996848, --4350802, 22053584, 16383153, 9222369, 730144, -2218351, -9822053, 12171400, 6047314, 7059853, -6954089, -6302328, -2566780, -568009, 3567507, -11705396, -14076755, -2047089, 6274411, 818728, -7929047, 5385352, -7305203, 2324114, 4397510, 2951180, -2299955, 7771207, -9731322, -5949067, -18129594, 10269267, -11022497, -8446590, -5564667, -10008348, 11054172, -470836, 1672353, 4930623, -3363496, -217970, -306016, -7483981, 4823785, 2716567, 6590091, -3741990, -942745, 4103305, -17636210, -43859132, -119562760, -45428944, 27266064, 57630408, 135865920, 79868136, 21749714, 28464358, --23499376, -43932684, -96171832, -64838972, -49699752, -16244640, 19762218, 52981104, 41190884, 51434380, -49704584, 33699388, -11311870, -39169028, -33899640, -34845608, -27991912, -40399000, 12461848, -25531434, -1924682, 18824842, 34791384, 19636590, 32570884, 42917460, 855235, 12816182, 1003949, -645319, --23916526, -3158412, -21274584, -41620380, -65672196, -36594732, -19995220, 5314485, 5061082, 39090644, -54299660, 52166672, 62135292, 9049496, 40799504, 16158204, -3609920, -38183868, -37361384, -50787988, --66627292, -45459008, -51613160, -32715302, 261993, 16028281, 37202468, 59999084, 88428544, 70812200, -64216204, 34744136, -13167296, -13075491, -34616900, -73785928, -56622700, -93243736, -61241940, -27159226, --20604032, 29145648, 56052008, 76715632, 54221816, 41464152, 25283936, 28739774, 25337622, -4039417, --28968480, -27709518, -43621300, -48371532, -38409356, -26340498, -24399172, -23283018, 10753524, 22667764, -40219148, 47613472, 39157752, 34317324, 19684908, 672162, 1089848, 4420058, -28839632, -49107044, --20013474, -42891692, -48499844, -1661079, 12253005, 27064736, 28120224, 17882634, 29715804, 17179870, -23796266, -5028333, -393526, -20816632, -12393665, -11077258, -13642427, -15788300, -12594455, 2056753, --5181341, -15032, 14536317, 19968914, 12717935, 10924786, -2667712, -3567507, -76236, -367220, --5999533, -7295002, -1095217, -4362613, -4267587, -2720862, 178241, -4603668, -1415729, 8649527, -3157875, 3783866, 5685463, 4010963, 1215476, 197032, -997506, -1186485, -715112, -471373, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +815507, -2067490, -2163053, 1333587, -3695283, -53687, -7201587, 5168993, 6554120, 4579509, +6449967, -7733626, 628676, 1772748, -2756295, -2121177, -1883880, -9058086, -1522029, 5391258, +-9273908, -7535520, 4391067, 3980898, -5958194, -2075543, 3948686, 509491, 4800163, 2059437, +4999879, -3133716, 958851, 696858, -1324997, 2331094, 1831804, 3396246, 1426466, -1493575, +328028, 3794067, -1022202, -1719061, -638876, -4578435, -10112500, 6018323, 2921652, -3160022, +4439923, -1772211, 493384, -150861, 2064269, -2664490, -692027, 5981279, -5626407, -2252174, +1956895, 980863, -869194, -272730, 2621541, 304406, 2320893, -4006668, 4083440, 2105071, +-5228049, 4170950, 370978, 1514513, -623307, -1549946, -6102612, -1883880, -455803, 3142306, +-804770, 2571075, -1533303, 309775, 765578, 312459, 1821603, -319975, 126702, -217433, +-1235340, -558346, 243739, -658741, 88047, -25233, -280247, 1674500, 1679869, 878858, +700617, 613643, 217433, 11811, 224949, 97174, -253403, -739808, -836982, 11946988, +-6880538, 2092723, -7604240, 908386, 1771674, -7665980, -9692131, 2413772, -10515154, 2310693, +-2746632, -731218, -6451578, -940061, -7243999, -3726421, 23085, -7663296, 8131984, 2859911, +-12707198, 1200980, -705985, -2305861, -5443334, 2726231, 6583111, 125628, -492311, 6179921, +-3641059, 73551, -2320356, 4093641, -4808753, 1402844, 5774584, -5038534, 5048734, 1772211, +5461588, -475668, 1232656, -834297, -2318209, 7158637, -8902393, 2045478, -3946001, -1716376, +-1170379, -3244848, -2404645, -7096360, -4466766, -1115081, 4604742, -400506, 1721208, 6452652, +-163746, -5609228, -733903, 194884, 1738925, -2742337, -5906, -5517423, 102005, -2251637, +1805497, 2855617, 4197257, 1493038, -2393908, -3103114, 4119411, -1392643, -1910724, 763430, +2283312, 4755603, 563714, 1358820, -328028, 2784750, -559956, -2221572, -1148904, -1103807, +-117575, 1886028, 352724, -133681, -1023813, 1826972, -21475, -695785, -531502, -477815, +-551903, 864362, -384936, -99321, -1078037, -2876554, -9896678, -117038, -5964636, -1882269, +-972810, -6955700, -953483, -1620276, 3450469, 8112120, 8157754, 970126, -3489124, 3262565, +-7904888, -1130113, -3026341, 2755222, -11779485, 4158602, 1992328, -430034, -3391414, -5077188, +-2323577, -4188667, -3606162, 2203318, -791348, -4514548, -1320166, 914291, 7686918, -296890, +-7772817, 608275, 3342022, -97174, -2449205, 644782, 2921652, -8442832, -660888, -3671123, +5927592, 3611531, 1001801, -7805030, 878858, 3006477, 4782446, 4478577, -5133560, -2412161, +229244, -1603097, -1611687, 4172024, -2592013, 2553895, 697395, -3279745, -743029, -4505958, +5425618, 2039036, -5366562, -3699041, 903017, 2846490, -4257923, -5366562, -915902, 266825, +-3571802, 768262, -1467268, 1811403, -3404299, 5058935, 2707977, 3813931, 1088237, 503585, +3429532, 4642323, 540092, 1319629, -444529, 660888, 77846, -192737, 517544, 391379, +537408, -732292, 25770, 357556, -259846, 82678, 1546188, -899259, 352187, -1076963, +-864362, -721555, 158914, 587337, 394600, 54761, -1002875, -663036, -16843788, 5437429, +4862440, 8147016, -2122788, 5113159, -14529337, -3979287, 4542465, 530428, -7191386, -1881196, +-2399276, -12731357, -5164162, 1279363, -593242, -9080635, 5655935, 8039642, -8277476, 6263673, +-10837276, -3695283, -981400, 3714610, -68719, -4403952, 2960306, 1466731, -733903, 4823785, +-2352568, -3132105, -983548, -1794760, -3215320, 4743792, -3668439, 1331977, 3552475, -741419, +-2843268, -5333813, -657130, -3811247, -1170916, -4431333, -1206349, 9802726, 188442, 5953362, +-5493263, 4992363, -1578401, -8041790, -4747013, 4424353, -2929705, -4099010, 2917357, -4816806, +3982509, 1056025, -1488743, 5205501, 4704600, 2063195, -5195300, -5885716, -418759, 7792145, +1540283, 1165547, -4440460, 1134945, 2794413, -5977521, -2193118, 1918240, 4149475, 2045478, +3511136, -217970, 23085, 1278290, 155693, -689342, 202937, -528818, -762357, -2655901, +-2117419, 622770, -1277216, -774705, 879395, 381178, 641561, -185220, 1071594, -718333, +45097, -947577, 4295, -1145683, 557809, 173409, 766652, -1488743, -9048422, -8603356, +-5699959, 1022202, -1484448, 3468186, -3143916, -34360, 580894, -2596308, -1010928, 2118493, +-2574296, 9979893, -6614250, 4599373, -1766305, -727460, -4707821, -1325534, -687732, 7263864, +-5034239, 610959, 1371705, -7210713, -4426501, -4939750, -4206921, -8352638, -2908767, 2944200, +5588826, 3525095, -6679748, -9402220, -2101850, 241055, -4811437, 827855, -3284576, -4927401, +-11630235, -5868536, -8166344, 4632659, -2148021, 3755412, -4711579, -11339787, -6036577, 511638, +-2348810, -3752728, -1734093, -4494147, 5982890, 493384, 3462818, 4651450, 1141388, -242666, +-3965329, 125628, 5057324, -929860, -3830037, -5289789, 8355322, -7041599, -9812390, -6944962, +-4021163, -5472862, 6064494, 9707700, -7826504, -5413270, 1148904, 4684199, 7224135, 5703717, +4441533, 4381404, -1619203, -1985886, -2262911, -2341831, 1750736, -1453846, 439697, -1763084, +-2809446, -1174137, -2037425, 1409823, -1291175, -2508261, -1486059, -1468879, -2521146, -2781528, +-1759326, -737661, 497679, 445603, 1237488, 117575, -4293894, 457414, -701690, -1753957, +451508, -788127, -1330903, -2828773, -2342368, 32212, -40802, -980326, -1122597, -43487, +2309082, -18480708, 5698885, -1313723, 3266860, 10126996, 3974455, -2514703, 3426847, -7633231, +4712653, 5524939, -10069014, -2159295, -5099737, 5668820, 4937065, 7695508, 8934069, -11621108, +-5984500, 1904818, 9972914, -3794067, 4635881, -11111080, -3355980, -3903052, -2357400, -6730751, +1663763, -11001022, 7614440, -2167885, -1952063, 5555004, -332860, 1261110, 5913096, 151398, +4840428, 3233574, -1370095, -1917166, -653372, -7727183, -5657009, -7061463, -444529, 14652281, +3406446, 2826089, -342524, -2057289, -120796, 8752070, -1871532, 2732136, -16902844, 15546171, +-3767223, -2788508, 896574, 9517648, 3470334, -1605244, -5793911, 16658031, -3211025, -213138, +5343476, -4233227, -23622, 2378875, -3751654, 3281355, 3272765, 13754096, -6847252, -8633421, +-1581085, 4108673, -5177046, 1143535, 3563749, 1126355, -3022583, 1352378, 3654480, -2314451, +332323, -3950833, -1231582, -1170379, -3211025, 4213363, -3053722, -2607045, 1937030, -134755, +-3621194, -340376, 884226, 1547799, 185757, 1823214, -1307281, -1137093, -1063541, 1220308, +-1332514, 2179159, 249645, -938450, 1013612, 2275796, -51003, -1050120, 7998303, 4487167, +8900783, -3558381, -2114198, 5130339, -8207146, 7393250, 8436926, -4223027, -707059, -13249437, +632434, 4566624, 3696356, -2801929, -9012989, -18289044, 299037, -3104725, -8677981, 2030983, +5841156, -7937100, -3380139, -8657043, 4387846, 503048, -1285269, -2874407, -3751654, 9346386, +10902774, 4245039, 5197448, -2421825, -5466957, 15203647, 3784403, -2584497, -8919573, 6585259, +279710, 8745627, -765041, 10806138, 5408438, 7564511, 6398965, 3265786, 8414378, 10500121, +-294205, 1947768, -3343632, -100395, 5733782, 2405182, 3121904, -9270150, -3398930, -1948305, +-8071854, -7716446, -5080947, 4337917, 8927626, 11671037, 15267535, 3408594, 1344325, 12306692, +-4890357, -9254044, -3216931, -4679367, 7969312, 6518150, 2503966, -8761733, -2378338, 1583769, +1287417, -1688459, -4031901, 1259499, 1046898, 5099737, -1202591, -2785286, 603980, 1011465, +1261110, 121870, 90731, 1035624, 2345052, -1614908, -1581622, 184147, -179852, -2276333, +-508417, -2911451, 3240553, 1069447, -2189360, -58519, 2207076, -1107028, -168041, -1712618, +993748, 1186485, -744103, 2827699, 2149094, 14127758, -13378823, -6286759, -1789391, 5417565, +-12514998, 7927973, -12329777, 6081137, -28991, 6451578, 10211822, -4168266, 9327595, 10198937, +9698573, -5608154, 8182450, -8792335, -7007239, -1082332, -5413270, -78383, -4653597, 8014946, +-5917391, 1768990, -5841693, -10266582, -4778151, -2157147, 12427488, -10404558, 9790915, 4311611, +-14409615, 16546898, 4086662, 1851668, 11629161, 2069101, 535797, -6573448, -19864, -3668439, +13259101, 5599564, 9298604, -3611531, -2177012, 6397354, 11047193, -11527692, 11447698, 2093797, +-1843078, -2145336, -10848551, 5242008, -5111011, 2216740, 499290, -9843528, 3342558, 8343511, +-7558069, 5294084, 3481608, 11676405, 1257889, -783295, 7101729, 10211822, 847719, -5852430, +6871411, -7898982, -4099546, 2111513, -3183108, 2136746, -2548526, 1018444, 4430796, 3227668, +-3207804, 2820720, -1642825, 2274185, -2246805, 7110319, 734439, 6788733, -797253, 1702955, +-1416802, -587337, -2149094, 4302484, 1824287, -3544422, 3724274, 4311074, -459562, -592706, +2648921, -187905, -205622, 3588445, -92342, 880468, 2334852, 1514513, -539555, 2739652, +-2250563, -419296, 546535, 739271, 628139, -157303, -306016, -2733210, 1316408, 4057134, +-11404749, -8158827, 12411382, -15892990, 4009352, -8457864, 9449465, -10094784, 15433965, 5356361, +1496259, -13382044, 6826851, 11343545, 2997887, -6874632, -4473209, -3930432, 10524817, 5734318, +-14685567, 2088965, -10390063, -560493, 1189706, -8866960, 11642046, 11700028, -5306432, 2576981, +7926899, -9666898, -1474784, -2965138, -8019241, 17065516, -6199786, -3796751, -8589935, -14324790, +-2279017, 283468, -4960151, 2149631, -11874511, 1065689, 833224, -2359548, 9377524, -1935420, +-7304666, 3821447, -11811, -5440650, 4679367, 20234664, -4050691, 4836133, 1095217, -13704167, +-2239826, 12275553, 5515275, 12187507, -1253594, 7058779, -9695352, 4377109, 4274566, 1461363, +-8242042, 7644505, 2683818, -21330956, 1658394, -3825742, 14280229, -5451387, 11086384, 10310606, +8252243, -986769, 3162170, 522912, 824634, -1352915, -2362232, 5621576, 2244657, -34360, +-3711926, -5133023, -1214939, 2261837, 3615826, 2643016, 4641786, 210990, -1268626, -1870995, +-1508607, 1733019, 2770791, -204548, 2183454, 1493575, 393526, 2068564, -398895, 2161979, +-3504693, -4260608, -5699959, -208843, 2573222, 1238024, -2686502, -905701, -1887101, -2002529, +3458523, 1131187, 1529545, -24959128, 28223304, 3328600, 11141145, -20476256, 11180874, 14549202, +-16765942, 6389838, 8303783, 6423661, -10832981, 1422708, 1914482, -3656628, 6328098, 13032541, +-10459856, -8705362, -3182034, 11047730, 9556302, 13510893, -649077, 5706938, -10065256, -2637647, +-2612951, 2209224, 6353867, 17268990, 10285373, 6277632, 3286724, -573378, 8252780, -3054796, +-14816027, -2878702, 4359392, 4731980, -8669928, -6569153, -10737955, 2073396, -850404, 3769908, +-7038378, 12607340, 12328704, -10674604, 25381110, 1162862, -2329483, -145492, -5280663, -1143535, +-1622424, -10263898, 172872, 30065, 6739878, -21357262, 5234492, -7570954, 15516106, 18734110, +8112120, 7783018, 3503083, 1249836, 16916266, -3173981, -12504797, 10702522, -5630702, 2868501, +8358007, 15237470, 2143726, 1502165, -12197170, -532039, 3571265, 9671193, -4201015, 5252745, +2536178, -3704409, 9825811, 1656247, 4406637, -2864206, -903554, -2838437, 482110, 1127966, +-1495186, -87510, 2961380, -1635846, 3001109, 2017561, -2090039, -224949, 1395864, -887448, +241592, -2015413, -6623377, -1907502, -1005559, 6924024, 8578660, 838592, 1265942, -2467459, +-2864206, 718333, 940598, -3590056, -2779918, -1867774, -1618129, 2298344, -3965866, -196495, +-2913062, 10264435, 1964948, -7147900, 6655052, 9988483, 8675834, 5475010, 10350334, -12595528, +-8036421, 1397475, -11395085, -2847563, -1945620, 2500208, -2961380, -7403450, -9302899, -5599027, +4533875, 7790534, -13729400, 2866891, -1475858, -400506, -16535087, -14850923, -2624762, -11528229, +5381057, -13142063, 799938, 6972343, 10041097, -8975945, 11940009, 3016678, -1228361, -2685965, +17729624, -4996658, -923955, -14324790, -8067023, 11595338, -925029, 4361003, -13780403, -15093589, +-4150549, -8538932, -1515587, 608275, -5587753, -7167227, 4198868, -6657736, 548682, -9788230, +-5296769, -301185, -16078747, 1424319, 10532870, 1959579, 5519570, 11447698, 19687056, -19079318, +3441880, -11794517, -11436961, -6440304, -8695698, -5629092, -5140539, 19232864, 10594611, 10619844, +2199560, 3078418, -13964549, 623307, -4928475, 2172717, -6070937, 8478265, 11256572, 1043140, +-5116380, -3525631, -9635759, 813896, 5908265, 3216394, -2338073, 6043019, 2935610, 6400038, +-1394791, -1249836, 1054951, 4140349, -2686502, 1729798, -3948149, -5546951, 3959423, 1359357, +814433, 814433, -7470022, -4511863, -38655, 5670968, -4835060, 2803003, -6478422, -2239826, +-1034550, 2222109, 1559073, -2005213, -1579474, -8690329, 19815906, 21010444, 23088134, -17266306, +1203665, 12422656, 9773198, -10113037, -19287624, -2301029, -2920041, -15191299, -8800388, 28651190, +2208687, 1898912, 10695005, -1308354, 4545149, -4022774, -11439645, 7438884, 6225555, -15484431, +-21962852, -17047798, -13542569, -12920335, 1189706, 3672734, 6475737, -8615704, 8333311, 1941325, +-4238596, -9114994, -347355, 437013, -14010183, -11002632, 1561221, -2592013, 1864553, -8532489, +6800544, 2060511, -8010651, -17161616, -6799470, -5840082, -22774600, -7237020, 2081449, 11163694, +-1132798, 13232257, -2394444, -1192390, -19415936, -4190814, 7568269, 3558917, -32458678, 9217000, +2762738, -9111236, -5541582, -9501541, -10686416, -499827, 445603, -10355703, -3358665, 6487011, +9408126, 14811732, -11426224, 469762, 8359080, -453119, -24830816, -19833086, -272194, -5303748, +6162741, -257161, -6140193, -8949638, 4052839, -2630668, 3678103, 10058277, -316217, -5085242, +-8486319, -15567109, -5327907, 871342, -2605435, -2686502, 976031, 941672, 6849399, -3603478, +682900, 2516851, 1328756, -5670968, 610422, -1494112, -13516262, 1306207, -5022428, -6157910, +2156074, 1587527, -4115653, -1352915, 4827007, 1343788, 1263257, -5050345, -5672578, -2053531, +-450972, 227633, 3434900, 7945153, -6739878, 22556632, -19305342, -11885248, -3925063, -36501316, +-19067508, -100395, -23269596, 18067316, -8185134, -7541426, 2065879, 41372348, 19963008, 1278290, +8491687, -1925219, -11108933, -1107565, -17185774, -12436615, 5908802, 6001680, 7416872, -11943230, +15289010, 9358197, 17297980, -17589502, 2818036, 25642028, 2389076, 1046898, 5051419, -24598352, +6267431, -6220724, 4034048, -9909026, -23232014, -1428614, 9370545, 11429445, 2946885, -3635153, +1671279, -1073205, 7678328, -17544404, -25535192, 4554813, -9332964, 15222438, -6115497, -6353867, +19877646, 4466766, 8536248, 1575716, -16843788, -6913824, -2035278, 9063992, 26222922, 20184736, +-6053220, -23218594, -505732, -2685965, 8566312, -14323179, -17954574, -10197326, 8459475, -18185428, +-2867965, -15262166, 63351, 12263742, -408559, -22866406, -5058398, 3011309, 5975374, 2828773, +-14279693, -9622337, -15280420, 2343979, -3236795, -6643778, -5126044, -6640020, 1252520, -2780455, +-6366752, -1813013, 4426501, -42950, -247497, -7769596, -228707, -745177, -4978941, 390842, +9482751, 3168612, 1686312, -9829570, 3765076, -1102733, -1183264, 1518808, -285615, -214748, +-2071785, -5861020, -6568079, -5367636, 6553583, 5749351, -2744484, -14592151, -5457830, -5430986, +-1258425, -41510860, 16047608, 13171054, -6079526, -27430346, -6040335, -10557030, -11111617, 12123082, +14975477, -1513439, 4107599, -31166968, 11005317, -39012800, -9855876, -3364570, 7798050, 19668266, +31217432, 12975633, -18034030, 4229469, 21818434, 2932389, 6654515, 11860015, -18330384, -7048578, +-2872796, 5604933, -12906914, -6918119, -3897146, -9674414, -7385733, 13290239, 13028246, 3381750, +1106491, 22473416, -4195646, 10519986, -25336012, 16864190, 4835060, -22945862, 2374043, 7417946, +-21589726, -2738579, -21114596, 7125351, 8929774, 9552007, -14207752, -1165547, 14235669, -11784853, +192737, -1849520, 23481660, -13824963, 17306570, 8818642, -21827560, 19252728, -16064251, 12414603, +16297790, -16367583, 9300752, -13953812, -17418240, -26227218, -21911312, -23976118, -5715528, 4362076, +-7211787, 21100638, 21864068, -9158481, 19272056, -2876018, -4029753, 24551644, -5418101, -16322486, +11439109, -2381559, -12782360, -9774272, 9702868, 1802276, 5042829, 7745437, 1382443, 6389301, +9761387, -2508798, 10941966, 7597797, 5471789, 6300180, 938987, 3909494, 9302362, 7573638, +9430674, 1511829, 7835094, -1349694, 569083, 6922951, -3346853, -12123082, 5820218, 2075543, +40802, 378494, 5557688, -10708427, 5589900, 7757785, 6216429, -7048042, 6820945, -32802276, +-15469398, -16103443, 28835336, 943282, 10826002, -4606353, 40860708, 6510097, -27166742, 2065879, +30043296, -11030013, 6751689, -4880694, 2675228, -17447230, -23551990, 37554656, 26757646, -10200010, +20556250, 8115341, 26716308, 30354144, -8776229, -7088307, 27011050, 19807316, 2266132, -8455180, +-13310641, -13987098, 12545599, 23811836, 11241540, -4279398, 16040629, -8345122, 15227807, -6727530, +22171158, 39197484, 29880088, -31832686, 14639396, -5386426, -12920872, -376883, 11173357, 10775536, +71567576, -7178501, -686658, -11599633, -12633646, 13968307, 25890600, -6287296, 19694572, 16809428, +-2196339, 635655, -13864691, 14216879, 11966853, 38081328, 38737384, 47022376, 19566798, -11959336, +-9678172, -21556978, 21126408, -31903018, 23147726, -29944512, 17661980, -10540387, -17993766, 13070122, +-48506288, -38367480, 7030325, 7574175, -13859323, -13438953, 22671522, 11315628, -20798380, 3124589, +-4716948, -11375221, 3758633, 5866389, 1806034, 5944235, 6977711, 12258910, -5640903, 2413235, +-6826851, -12109123, -7393786, 2935073, 1076426, 16802448, 3601867, -4029216, -13573707, 2186138, +-5369783, -4343823, -6027987, 4722854, 10133975, 3614752, 8797704, 7390028, 11625403, -4850629, +8861054, 1202591, 2595234, -762357, 775242, -6789807, 8172249, 19503446, 10465225, -2021856, +-2152852, 15508590, 12999792, -11950747, 3837553, 7813083, -5992016, 22433152, 5067525, -52586504, +12059731, 6888591, -39119636, 2302639, -6713034, 1619740, 14326400, -1902134, -36158256, -6426345, +-11530913, -2032593, 25589952, 30720828, -17498234, -4416837, -14689862, 7556995, -27710592, -53739704, +-19263466, -16238734, 2807298, 868120, 24417962, -36745592, 17485348, -8560407, -4079145, 15066745, +7066832, 25523380, 5802501, 9810779, 27307402, -31255550, 38945152, 30910342, 16108275, 28987808, +-11296838, 10984379, -27211302, -5449240, -13711683, 24001888, -21338472, 5099200, -45788648, -56791816, +37853696, -1804423, 24412594, -17289390, 16149614, -11317776, 3479997, -6521371, -37211060, -11822434, +-24886652, -11872900, 13427678, 55043228, 19643570, -48721036, -11041824, 12786118, -11307038, -7384123, +-32171452, -16727287, 24790552, -9409736, 5976984, 4765266, -20062330, 12549358, -2958159, 849330, +-41140956, -12105902, -905701, -18928458, -10689100, 1413044, -27851252, 2750390, 6197101, -22669912, +-17741974, -31947578, -23730768, -2379412, -13156559, -6470905, 766115, -9291088, -9010305, -3927211, +-14067092, -6934225, 1774895, 9342628, -12410845, -4643934, -21228412, 7267622, 5178657, 12241731, +-8807904, 12732967, -27457726, -1869921, -34897, -2180770, 4158065, -4720169, 2871723, -12998182, +-13390097, 3850975, 3308199, -32236414, 17130478, 17114908, 30323006, -14668924, 11165841, -16872780, +-19628538, 8879308, 40237400, 65157876, -3975529, -4220342, 1447404, -1349694, -28916404, 45624364, +21946210, 24314884, 18744848, -13086765, 15882789, -25566330, -36870684, -6283001, 27740120, 18089328, +-13146895, -8437463, -1762547, 22480932, 1015760, 16413754, 16053514, 26602490, 8904004, -16580721, +-15770046, 15252503, -17762374, -13197898, 7913477, 29211146, 26903676, -30572650, -23664196, 15917149, +18931142, 57332444, -13228499, -31067110, -32244466, 27487790, -20616380, 25941066, 29272350, 58992988, +125030256, -27844810, -15879568, -46733004, -74512312, -23676008, -37502044, 4406100, 51884280, -7515656, +27497454, 39262444, 25706990, -14367739, -46141372, -75521096, 42256036, -2865280, 48056924, -24568824, +-65544960, 22999550, -38831872, -51652352, -26540214, -16362752, 16522739, 16365436, 29525216, -2080375, +-14323716, -2166274, -1177895, -26666378, -25928180, 13328894, -9167071, 26584236, 24131810, -11404212, +24024436, -18792630, 541703, 23789824, 2554432, -36718212, 9838159, -18428094, -3224447, -5838471, +-4938676, -27031988, -22236656, 4456566, 32223530, 34676492, -32350768, -3688303, 39342976, 37815576, +44560, 8093329, -35633196, -18763102, 5273146, 20973936, -30807800, 8035884, 23985782, 12215961, +9068823, 2893197, 15121506, -25233470, 4694936, -23002234, -63432372, 15969225, -26503706, 26326002, +3870839, 14697915, 12883828, -58030376, -41111964, -20365662, -12785581, -13492103, -23716272, -7380365, +-39400956, -25100326, 18953154, -25660282, 48831632, -36335960, 3738232, 10059887, -3861713, 4290136, +-2095407, 11662984, -11324218, -12212203, -2112587, 8737037, -1537598, 20936354, -19766514, 4452271, +30601642, 9797357, 4589173, 15573015, 1931662, -12475269, -7940858, 24821690, 5568962, -39260832, +-17403208, -31859530, -14499810, 42194296, 39355860, -40668508, -4498442, -46238544, -11142219, -3856881, +10660646, 23163296, -37868728, 25246892, -32239636, -5469641, -21842594, 48581448, -9825811, 34259880, +32057636, 71331888, -32869922, 29407642, 4787815, 27939300, 9760850, 21310018, -35756140, -32862942, +47662864, 2303176, -1799591, -33777772, 38481296, -13052406, 19740206, -35553204, 74673376, -40039296, +41539312, -50127100, 19789062, -37791416, 20855824, -34821984, 25789132, -22069690, 15146202, -12338367, +8338679, -18787798, -11599633, -8921184, -2346126, 6584185, 1148904, 5297842, 428423, 5202279, +-2842195, -9628780, -15175193, 6816650, 7529615, 2117956, 6896107, -5738077, 2681133, -4566087, +2818036, 25597468, -6494528, -18514530, 2578591, -10534481, -19695646, 6146635, -10773925, 7740605, +-9042517, 6408628, -17218524, 6849936, -22252226, 31101468, 4785668, -57204668, -25195888, -35458712, +1929514, -8322036, -77232104, -35095788, -20277078, -41168336, -25653840, -77829104, -65706556, -12037183, +27894738, -42905648, -25666724, -6378027, -36561984, -8515846, -3070365, -35390532, -9557913, 7046968, +1577864, -46920372, -26770532, -26840862, -14992657, -16732119, -4955319, -32635308, 26874148, 17453674, +38438348, 55988120, 48664664, 12287365, 51459612, 20509006, 9004399, -23156854, 17885318, 18611168, +14668924, -6197638, -17915382, -8414378, 12712029, 22761716, 117880208, 15800111, 24100672, 17142288, +48061220, 18474802, 42179800, 77001248, -37512244, -75856104, 9154723, 48088600, 86057184, 38024420, +-74822624, 9839770, -18871012, 108656768, 79860624, 97182224, 89071720, -77888696, -51504176, 63425392, +76182520, -22580790, -44769128, -53954988, 120296664, 80039400, -5525476, -104097656, 24522116, -4274566, +-23455354, 28296318, 7315940, -9382356, -22682796, -739808, 15927886, 44486196, 31411780, -27064736, +-11237782, -7518341, -6230387, 24954834, 17882096, 19268298, -272194, 10153840, 40736692, 27593554, +5207111, 16091095, -11943230, 20159502, 26041998, 34547644, 44014824, 34377992, 26060250, -163209, +-6766721, -9570261, -3775276, -20331302, -11695196, -9976135, -25400436, -32472100, -37142876, -63242856, +-36386428, -23783918, -38579008, -70343512, -49387828, -41647760, -48752172, -57642220, -61092688, -21170430, +-23972896, -33595772, -19364934, -21106544, -14496588, -19844896, -19596326, -19148038, -18945638, -55890948, +89661200, 72392208, -62634044, 14002130, -1418413, 10076530, -2406256, -6205691, 23117124, -23205708, +22583474, -9205726, 124554, 8892730, 7312719, 8019778, -18790, -13176423, -8354249, 14382235, +-11798275, -1564442, 13962939, -7642895, -7870528, -11106249, -20156818, -20383378, 14937896, -7488276, +5619965, -12861816, 2647311, -27196270, -4794794, 7320772, 17552458, -11202885, 3920768, 11835319, +19225884, -4713727, 15945066, -12992276, 50530828, -18873696, 17519708, 2152316, 9991168, -9621264, +13518410, -5546951, 36074504, -6063957, 11293617, -25289304, 33127082, -17550846, -1156957, -5105106, +4989679, -10077067, 19988778, -23081692, 18802830, -21187610, 27380416, -28686086, 34670588, -23186918, +-12135430, -14657113, -6988986, 1059783, -22429392, 14442364, -13194676, 12614319, 1290638, 17551384, +6991133, 12015171, 22058416, 9032316, -7310035, 5480915, 5597416, -3511673, 4190814, -7241315, +8161512, -4265977, 326418, -7126962, 15644955, -15631533, 1736241, -1856500, 12768938, -2867428, +2901251, -3419331, 5355824, -7717520, 5899675, -6699075, -2837900, 11158862, 10989211, -3795677, +-10209674, 6240588, 9806484, 9411884, -8745627, 7152731, -5884642, 5175436, 1939178, 1522566, +-9356049, 9811853, -3345780, -13223667, 10919954, 8975945, -7709467, -2566780, -1132261, 1789928, +-7387881, 10380936, -9762998, 2929168, -10705206, 9300215, -7476465, 7775502, -5807870, 9751723, +-11068131, 11932493, -10848014, 5125507, -8821326, 8772471, -10209137, 7920457, -6080063, 10378252, +-11773042, 12176232, -10335302, -21983790, -45426260, -49982144, 42490112, 10733660, -13156022, -67734320, +-27228482, 37728068, 7690676, 27246198, 30393336, -10982768, -19103478, 889595, 7201587, 5575405, +5037997, -11997454, -8805757, -6673843, 31675, 18301930, 9901510, -914828, 4120484, -5310190, +-8862665, -5691906, -4639639, 295279, 5413807, -4204773, 6986838, 7295002, -24871618, -11094974, +-11003169, 13235479, 9245991, -885300, -11573326, -15709380, 13648332, 2957622, 9155797, 12671764, +-23057532, -15413027, 4220342, 18519362, 9393093, -26310432, -16163573, -21388400, -10159208, 5424544, +4832375, -8850317, 9663676, -4034048, -9186398, 4042101, 8810589, -6643778, 2110440, -335544, +-8202851, -834297, -2885144, -18718542, -18795850, -1246077, -20050518, -15142981, 658741, 5996848, +-4350802, 22053584, 16383153, 9222369, 730144, -2218351, -9822053, 12171400, 6047314, 7059853, +6954089, -6302328, -2566780, -568009, 3567507, -11705396, -14076755, -2047089, 6274411, 818728, +7929047, 5385352, -7305203, 2324114, 4397510, 2951180, -2299955, 7771207, -9731322, -5949067, +18129594, 10269267, -11022497, -8446590, -5564667, -10008348, 11054172, -470836, 1672353, 4930623, +3363496, -217970, -306016, -7483981, 4823785, 2716567, 6590091, -3741990, -942745, 4103305, +17636210, -43859132, -119562760, -45428944, 27266064, 57630408, 135865920, 79868136, 21749714, 28464358, +-23499376, -43932684, -96171832, -64838972, -49699752, -16244640, 19762218, 52981104, 41190884, 51434380, +49704584, 33699388, -11311870, -39169028, -33899640, -34845608, -27991912, -40399000, 12461848, -25531434, +1924682, 18824842, 34791384, 19636590, 32570884, 42917460, 855235, 12816182, 1003949, -645319, +-23916526, -3158412, -21274584, -41620380, -65672196, -36594732, -19995220, 5314485, 5061082, 39090644, +54299660, 52166672, 62135292, 9049496, 40799504, 16158204, -3609920, -38183868, -37361384, -50787988, +-66627292, -45459008, -51613160, -32715302, 261993, 16028281, 37202468, 59999084, 88428544, 70812200, +64216204, 34744136, -13167296, -13075491, -34616900, -73785928, -56622700, -93243736, -61241940, -27159226, +-20604032, 29145648, 56052008, 76715632, 54221816, 41464152, 25283936, 28739774, 25337622, -4039417, +-28968480, -27709518, -43621300, -48371532, -38409356, -26340498, -24399172, -23283018, 10753524, 22667764, +40219148, 47613472, 39157752, 34317324, 19684908, 672162, 1089848, 4420058, -28839632, -49107044, +-20013474, -42891692, -48499844, -1661079, 12253005, 27064736, 28120224, 17882634, 29715804, 17179870, +23796266, -5028333, -393526, -20816632, -12393665, -11077258, -13642427, -15788300, -12594455, 2056753, +-5181341, -15032, 14536317, 19968914, 12717935, 10924786, -2667712, -3567507, -76236, -367220, +-5999533, -7295002, -1095217, -4362613, -4267587, -2720862, 178241, -4603668, -1415729, 8649527, +3157875, 3783866, 5685463, 4010963, 1215476, 197032, -997506, -1186485, -715112, -471373, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 8075613, -5168993, 141734, 270583, 6361384, 1582696, -3165928, 2160369, 4234301, -2147484, -3509525, --12622909, 675384, -4248260, 8429947, -4185446, 4228932, 3401614, -435402, 2748242, 4667556, -1267552, 1095217, -2306398, -2765422, -2153926, -3485366, 3036542, 1823214, -1656784, 2752000, --1905892, -2782065, -3343632, -1598802, -2644626, 236223, 30602, -478352, 5761162, -3325915, -4709432, -1691143, -1215476, 3186329, -1978906, 1007707, -1980517, 3493956, -1043677, -9844065, -2914135, 366146, 1190243, 4983236, 2542621, 381178, -1148367, -3237869, 8419747, -4439923, -3258270, 1745904, -3520263, 3583613, 1553704, -4097399, 3242700, -4225711, 212064, -407485, -3690988, 647466, 3857954, -1465121, -8750459, -1826972, -2141578, -4101694, -3748970, -3633542, -2966212, 1366873, 1010391, 1870995, 1779190, 409096, 818191, -974421, 562104, -704912, --396211, -2077154, -80531, -654446, 1557463, -103616, -565862, -270046, 113280, -1045825, -318901, -420370, 535797, -291521, 47782, -1209033, -222801, -1524177, -1043677, 15338402, --7602092, 830002, -481573, -469762, 3471944, -2784750, -11052025, -10186052, 4760435, -3237332, --966905, 2573222, 537945, 2539936, 2833605, -4865124, 2587718, 1781338, -3459059, 3991635, -6019934, -3974455, -1329292, 274341, -6560026, -2978023, 623844, 7772280, -1293322, -468151, --6536940, 3816615, -33823, -5861557, -2530273, 1996086, -923955, 1101122, -5083094, -154082, -302795, -2088428, 5347235, 1330366, 1167694, 5170604, -584652, 6725382, -2315524, -8627516, -3427384, 3329137, -3069828, -1353989, -1098975, 1031866, 338766, 2360622, -2014340, 1550483, --4733591, -244276, 3033321, -4517232, -572841, 2604361, 791885, -2377801, 1497333, -1808181, -440234, 4367445, 1538135, -6078990, 7303055, 2727304, 2662343, -657130, 4187056, 4667019, --2076617, -318364, 1003412, 1181116, 1438277, 1955821, -234076, 139050, 1445257, -234613, -181999, 903554, 2260227, -389231, 2302639, -108985, 534187, 1173063, 285078, -695785, --218506, 796716, 766115, -154619, -1067299, -3751117, -8999567, -1111323, 923955, 9847823, --3808026, 8434242, 2085744, -331249, 486405, 7540889, -1802276, -2117419, -2232846, 5301601, -10817949, 2800319, -7523172, -10201621, -14488535, 1850057, -3811784, -6119792, -3371013, -9465034, --80531, -4416837, 675384, 4479114, 4730370, -5416491, -4844186, -3462281, 570694, -8039105, --905164, 2440078, -3652333, -1363652, 808528, 3177202, -4522064, 1126892, 10535555, -483721, --542777, -3940096, 4371203, -2006287, 360240, 3311957, 4348118, 6454262, -1065152, 913217, --1984275, -133681, -1136556, 813359, 10126996, -11325292, 227633, 2145336, 5974837, -2542084, --3007551, -710817, -2840047, 8063264, -4489852, -10679973, -756451, -3220689, -4471061, 2591476, --10542534, 3840238, -1143535, -2971044, 195958, 7383049, -2217814, -2844879, -2881923, 3513283, --3355443, -956704, 615254, -354872, 1270774, 67646, 490700, 2155537, 170188, 525597, --559420, 1722282, 383326, -404801, -2006287, -1127429, -155156, -1102733, 2054068, 1200443, --1174674, 1482301, 155693, 174483, -1088774, 519154, -475668, -5369, -16508244, 6166500, --5163088, 6920266, -6218576, -564788, 4792110, -9549323, -1638530, 2910377, -2597382, 13910325, --5835250, -1765232, -5566278, -4659503, 7151121, 7945690, 3080565, -9370008, -11300059, 10448045, -1757715, -10599979, 3962644, 382252, 5018670, -3150359, 4789426, -6347425, 3097208, 10222022, -4235912, 4371740, 2331630, 167504, -2595771, 2124935, 807991, -6995965, 127775, -2229088, --5117991, -5135171, -1931662, 4026532, -7348689, 986769, -5311801, -565862, -798864, 2409477, -4383014, 9223979, 3281892, -76236, 3991635, -4965519, -7252589, -154619, 1714229, 729608, -8806830, -2026151, -1051193, -2837363, -1219234, 1220308, 4291746, -1188095, 1809792, -4389994, -7136625, -1897839, -2456185, -1674500, 2333241, -3893388, 151398, 4362076, -281320, -1298154, -682900, 3455838, 2786360, -583042, 2253784, -1929514, 1440962, -1183800, 584116, 2459406, --842887, 1026497, 1104880, -1750199, 1755031, 1005022, 424665, -777926, -1508070, -418222, -1962263, 1226750, -622233, 721555, -324270, 3092913, -235149, -929324, -8236137, -1909113, --5340255, -530965, 10976326, 7021735, 4910758, -817118, -9630927, 1362578, -6331319, -10208600, --3378529, 7375533, -5759551, -9050570, 2384244, 794569, -4501126, 985158, 5175436, 1437203, --12069932, -3409130, 7609609, 8961986, 4476430, -9999758, -3619047, 4580046, -1692217, -2140504, -664109, 3368865, 554051, 1254667, 10292352, 34897, 6231461, 4833986, -64961, -4613332, --99858, -2715493, 6141803, -3489661, -5832566, 27917, 9627706, 554051, 9564355, 5162014, -939524, 6185290, -1027571, 13274670, 1082869, 6573985, 7486665, 705448, -6167573, -934692, --7381438, 3787624, -5286568, -2958696, -4873714, -3209414, -2333241, 2439542, 832150, 3665755, --140660, -4212289, -3666292, 1385127, 6840809, -2012729, 1699733, -7321309, 2332704, 6345278, -9735617, -3340411, -715112, 1619740, -3336116, -244276, 3219078, -975494, 5906654, 396748, -1350230, 155156, 287763, 2182917, -1431298, -927713, -760746, -437013, 601832, 736587, --1105417, 970663, -333934, -1172526, -1429687, 490700, -1357747, -892816, -1703491, 833761, -1184337, -244813, 3328063, -2155537, 587337, -234076, -1886028, 3166465, -914291, -449898, -9999758, -14951318, -2758443, 12517145, -6220724, 2287070, -9667971, 4254165, 17607218, -2384244, -923418, -745714, -12453258, 1004486, -802085, 18690088, -5907728, -914828, 8159901, -5151277, -11573326, -7809861, -1178969, -11807939, 13339632, 185220, -5267241, 171262, 4878009, -6206228, -9268539, -985158, 8211978, -56371, 4294431, -12904229, -8322573, -6018323, -1951526, 7784628, --11714523, 6257768, 4814122, 1636919, -4861903, -7047505, 16064251, 3201361, -1844152, 6245956, --5703717, 3389803, -7587060, -7423314, -3119220, -4981089, 17347372, 5196374, -3475166, -5153424, --6650757, 5470715, 4485557, 1652489, -6138045, -736050, -2503429, 7432978, 643171, 6015102, --14055280, 7641284, -1259499, 389231, -1591285, 2480881, -6222871, -2864743, -9759776, -3169686, -3505767, 5950141, 6239514, 2336462, 2251637, 1481227, -3516505, 2092723, 1392106, -240518, --2371359, -3866008, 2036888, 1957431, -3007014, 1551020, 171799, -2430415, 1569274, 466004, --1087701, -560493, 115427, 496069, -1845225, 1275068, 653909, -2799782, -699006, -1427540, -190052, 2007897, 1323387, -277025, 44023, -1287953, 153545, -1187022, 6329171, 3114925, -5215701, 1541356, 56371, -1989107, -8012799, -2496450, -5171141, 3144453, -308701, 12030740, --10127533, -13042742, -3310346, 4041564, -4085051, -3172907, 10225243, 2034204, -5686537, -6548752, --6790880, 11180337, -5679021, 7546795, -3686693, 8259222, -8302709, 1789928, 12687333, 4323959, --17376364, 3958349, 348966, -2255395, -1586454, 1743757, -2115808, 1646583, -2874944, 1351304, --750009, -7786776, 7714298, 7922067, -2420751, 8779987, -7572028, -1343788, -2215666, -3624416, -9659918, -7028177, -12429635, -6979859, 2281165, -10139881, -9456981, -4744865, -3225521, -6510097, --587337, 8242042, 8677981, 1294396, 9359271, 2900177, 1214939, 7088307, -7674033, -1381369, --45097, -6307160, -109522, -6111202, 7298223, -2151242, -1388348, 6068789, -1167694, -1962800, --1310502, 7253663, -938987, 2506650, -7147363, -2557653, 3924526, -4645544, 290984, 90194, -741956, -3549254, -2472828, -1885491, 68183, -1961726, -2334852, 694174, -396211, -2097018, --949188, 231391, -264141, -678605, -744640, -1221918, 332323, -3849365, -2698850, -2604361, --2588255, -3758, -188442, -940598, 883690, 19327352, -9545565, -9188546, 6222871, 15707769, -3053185, 14147085, 8074002, 12848395, 5691906, -2403571, -5835250, 4601521, -9605157, -7306276, -10721312, 8968429, 22405234, -577673, 3116536, -8299488, 8653285, 3920768, -9987946, -2367601, -12688944, -41339, -13982803, -5647345, -7892003, -2677375, 7798050, 7164543, -5304285, -2570001, -9727027, -9424769, 4328254, 8199630, 9795747, -5226439, 8432095, -3558917, -12736189, 4504347, -11689827, -3119757, 3375308, 2863133, -3962644, 1438277, 3503083, -3622805, 1304060, 9479530, --5574331, -2932926, 8737574, -1860795, -1765232, -14474040, -5128191, -8732742, -14377940, -9666898, -7218230, -4694936, -6146635, 12477417, 12456479, -3124052, 13397077, 5395016, 8801462, -2446521, --6928319, 5818607, -7184944, -14323716, -8645769, -3659312, 7080254, 3297998, 11869142, 2129767, --2561411, -1888712, -8053, 2095944, -3693672, 275952, -2148021, -272730, 2080375, -321049, -330176, 3881577, -1399623, -653372, 3811784, -2763812, -1443109, -1815161, 1121523, -2028298, -1385127, 900333, 586800, 2057289, 2558190, 1216550, 4624069, 619012, 3156264, 1132261, -2368138, 2790655, -2415919, 2233920, 2322504, -1628866, -540629, -179315, -3375308, 1031866, --9757629, -10438381, 14139032, -2354716, 32300302, -13302051, -6255083, -740882, 7881802, -4502200, --4399657, -13305272, -15397458, 6956774, 1336809, 21259552, 6886443, -2165737, -2427194, 14124000, -14413910, -11905112, 8651138, -11371463, 2990371, -4893579, -5866389, -3484829, 2419677, -1843078, -7484518, 3761318, 8375186, -1035087, -4001836, -7856569, -1526861, 9167071, 815507, -12154221, --1535451, 2972654, -5200669, 9650792, 8137890, 1708323, 2827699, -26550950, -10181220, 9299678, --627602, 14927696, 4156455, 16824998, -1893544, -9074192, 8968965, -5064840, 6116034, 1112397, -24480240, 20272246, 2384244, 5754183, -3344169, 8078297, 8534637, 9263171, 9977209, 16268799, --305480, 2945811, -6234145, -5392869, 5078262, -7561827, -18843632, -13932874, -337155, 11735461, --5915244, -10615549, -6130529, -5706401, -649077, -12678207, -523449, 2403571, -98784, -1670742, --1264868, 1363652, 2732673, -300648, 2055679, -9451076, -5840619, -2985002, -6751689, 646393, --2450279, -3873524, -2658048, -1547799, 3826816, 1626182, -3629247, 1236414, 8486319, 4435091, --1818919, -2974802, -3896072, -2193655, -3146064, -6591701, 2420214, -2503429, -559956, 4895726, -1554241, -889595, 904628, -28055264, 22111028, -651224, 2501819, -7783018, 12390444, -26637924, --17080012, -5396627, -6851547, -660888, -23883776, 4656282, 475131, -657667, -10914586, -11110544, -4500589, 15194521, 2342905, -20316270, -4413079, -16638166, 13117904, 8458401, 647466, -7375533, --3493419, -3773129, 10808822, -1558536, -230318, -2359011, -14718316, 7628399, 10299332, -6179921, --3302830, 8005819, -16018617, -11680164, -17671106, -5998459, 4434017, -11278047, -5388574, -491237, --18298172, 5578626, 11275363, 19962472, 2868501, -1993402, 1219771, -13146358, -10308995, 15282031, --1097364, -5822365, -3619584, -23420456, -12568148, 4574140, -4952098, -2738042, -1831804, 15311022, --2662880, -14564234, 1162326, 11336566, -297427, -7146289, -146029, 778463, -6020471, -10213432, -8016557, -18774376, -9293772, -143345, 9069897, -11475616, 7254200, 4804995, 6609418, 7042673, --7209103, -1823751, 8643085, 1653026, -5285494, 4959077, 7153805, -6687801, 2486249, 6417755, -6061273, 9521406, 643708, -2908230, -1625108, 1563905, 132070, 4188130, 3529926, 327491, --862752, -3036005, -1030255, 2100776, 4256850, -7031399, 916976, -1329292, 2924336, 6799470, -348429, 4765803, -2524367, 3170760, 3899830, 5738613, 4479651, 5602248, -396748, 3224984, --1011465, 2741263, 14862197, 13649406, 4966056, 23115514, -10306311, -4798016, 3764539, -6029061, --1759326, 7564511, 24768540, -3971234, 5051419, -132070, -1496259, -386010, 27315992, -13200582, -14188961, -121870, -17865990, 5956583, -17722108, -10823854, 10290742, -9325985, 7292318, 418222, -1018444, 12256763, 9833864, -14674830, -16627966, -12494597, -4156455, 4797479, 4854924, 1830193, -3344169, -19993610, 3112778, -10719165, -25176562, 17211008, -4918275, 16187195, 17311940, 1032940, -6497749, -9183177, -11183021, -19826642, 4611185, 18246632, 3260417, -7955890, 1125818, -3984656, -2838974, -10657424, -8706436, -10640781, 1893007, -1252520, -3439732, 11778948, 10600516, 6400575, -17140140, 1974074, -17929340, 23284092, -16920024, -5170604, -4204773, -4434554, 19517942, -3052648, --27828166, 23778550, -9212168, -5611912, 6554120, 6083285, 18331994, 11739756, 7706782, 9003325, -8133595, 6180458, 406948, 7750269, 9289477, 2528125, 183073, 9968619, -1697049, 1231045, --9026948, -2099702, -2834679, -4636417, 820339, -644782, 6025302, 4432406, 1835562, -648003, -2936147, 1335735, 2157684, 4123706, -1178432, -1438814, 907849, -1412507, 3059627, 1508607, -1464047, 2489471, 1435593, 9247601, 6742562, 2024540, 21172042, 23928874, 5592585, -44973140, -1632088, 12733504, -14840723, 9071508, 18011482, 914291, 4905390, 11395622, 8753680, 3427384, -16190953, 3711389, -2223719, 30430918, 11326903, 4026532, 13157632, -9980967, 16136192, -11225971, --961536, -1204202, -3700651, -16587164, 5609764, -11709155, 21671868, -1844152, -4234301, 31911070, -4272419, 4748623, 10611254, 1299228, 6124624, -7036230, -13849122, -1470489, 9378598, -16311749, -19077170, 17319992, 12715788, 3446711, 7577396, -11228118, -11775727, -18579492, -8247948, -9965398, --9604084, 4581657, -1802813, -18182744, -8111583, 16247861, -261993, -14971182, 8580271, -694174, --10281615, -24389508, 1722819, -37037652, 21630530, -12509092, 19675246, 1107028, 5496485, 799938, --7295002, 10050760, 33265058, 3215320, 9490267, -5651103, -25906706, 2464238, -2785823, 19134616, -11049877, -4291209, -905164, -3749507, -2037425, 6628745, -7406134, 6237903, -862215, -6332393, --6554657, 7194070, -8030515, -7723962, -11137387, -2053531, -8004746, 2724083, 7024419, 685584, --2017024, -4986457, 10251550, -9385577, 2537789, 1471026, 875100, -5405753, 4088809, 10318122, --433792, -4762582, -1212255, 9449465, 9556302, -7385733, 9150428, -389231, -2374580, 1738388, --575526, 10409390, 2637110, 12400107, 9224516, 24508694, -33712808, 13282723, -19748260, 16815870, --8387535, -14176076, -4072166, -16325708, -6869800, -3662533, 5877663, 7486665, -4772246, 23529978, --1122597, -4085588, -3177739, -21369610, -2377801, 56371, -17972290, 5725192, -15329812, -19337554, --6267431, 11588359, -31987842, -21736292, -14527190, 1607928, -22437446, -19075024, -15448460, -7786776, --6283001, -2983392, -15176804, 16149614, 2742337, -1619740, -11338177, -11668889, 21859236, -19096498, --13067975, 5706938, 5798206, 7822209, -11107322, -15439334, -6540699, -2905546, 7126425, -11102490, --4478041, -4572530, -13242458, -22557706, -28493350, 26871462, -29523068, -1687385, 2054068, -5193689, --5486284, -26413512, 10179072, -6371047, -27688580, -680752, -6103686, 25983478, 6417755, 18478024, -17601850, -5299453, 6877854, -2945274, -5055177, 12986907, -3314104, 7443715, -10009958, 734976, --10080288, 8545911, 6701223, 1183264, 6133750, -2669859, -967978, 6476811, 3105798, -6408628, -4706748, 10589242, -1644973, 2416993, -5786395, -13637595, -1433982, -1229434, -454730, -9474698, --2048699, 1482838, -1363115, -5061619, 6456947, -1207960, -3632469, -11033234, -11126113, 143881, -6135898, 3586298, 2389613, -761283, 8053601, 9096741, -4053912, 1955821, 2247879, -611496, -2763812, -29996052, 34702264, 5495411, 3499862, -6017249, 17619030, 217433, 29011430, -7911330, -19900730, 10729365, -28617368, 12403866, 4687420, 13586055, -2348273, -7619809, -11406896, -4192962, -13962939, 30758408, 3238405, -4491999, -19476602, 7350300, -21065204, -3325915, 21221970, -19186692, -9664, 1355599, -3335579, -7237557, -8187282, 34093988, -7388418, -8364986, -4158602, 7738994, -11407433, 4294431, 536871, -6937446, -129923, 5111011, 20679194, -4744865, 29596620, 17327508, -8796630, -7113540, 25792352, 29358786, -2449205, -7763691, -1570884, -9528385, 2887829, -9433896, -14770393, 5060545, 21293910, 16498580, -26154740, -29410326, 35261144, 26250304, 4129611, -4968741, --14038637, -19359028, -7617662, 19903416, -18742164, -20205136, -2890513, -5426155, -32413582, -7172596, -7146826, -12498355, 1692754, -33823, 1673964, 2684892, 5340255, -9488656, -5927592, -9750113, --3598646, 22549, 1405528, -5284421, -2596308, -872415, -16027207, -5239860, -7661685, -3434363, --482110, 1501628, 603980, 2768643, -1089848, 689879, -8471286, 4940286, -7305203, -8251169, -5879810, 2668785, -15057618, -1509144, -4765266, 7520488, 14201309, 439160, -12259447, 9909563, --2866891, 2697776, 3330210, -3804804, -2945274, 1048509, -6606197, -8424578, 15343771, -12607340, --4096862, -2668249, 3018825, 464930, -18937584, -54842976, 27453968, -26381836, 10731513, 39107824, -5962489, -16411607, 11279658, 13620415, -5703717, -12418361, -2586107, -27022324, 8907762, -28085864, --17058000, 11256572, 1154273, 4846334, -25374130, -5178120, -18318572, -15561740, -22601192, -7900593, -7731478, -13471702, -13664975, 13259101, 1827509, -1130650, 4214974, -26004416, -1606855, -20228222, -17299054, 4756140, -49475876, 12441983, 26504244, -5684389, 15807627, 13289703, 8974871, 7182259, -25312390, 19830938, 722628, -18141404, -3841312, 20042464, 13011067, -16816944, 1198833, -19641422, --6332930, 1299765, 14220100, 19028852, -35002908, -27697170, -15500000, 2919504, -10414759, -3875671, -32541894, 5327370, 7694971, 25323664, -10302553, 5201206, -6482717, 25910464, -13220983, 1028645, -2572149, 19185618, -5368709, -2073396, 7019587, 7853348, -1016297, 3816079, 12537010, 464930, --409633, -551366, 12206834, -6231998, -3974992, 2900714, 5272609, 3547643, 1595580, 5719286, --2697776, -23622, -5613523, -208306, -4181688, -670552, -5752035, 9316321, -7090454, -10449119, -9780714, 6369437, 6726456, -7399155, -9458592, -75699, -16946330, -4716411, -8747238, -8946417, -3415036, -183610, -9058086, 2943663, 3646964, -1096290, -5373004, -5262946, 3897683, 2333241, -8035884, 18126372, 17517024, -30652644, 6363531, -6629282, -8096550, -7147363, 20492900, 10878078, --15029164, -8576513, 15624017, -28187334, 1547262, 10222022, 15650861, -3366181, 3422015, -32883880, --178241, -14576045, 10937134, 4025995, 18183280, -28916404, -14638322, -4216048, 3506841, -2496987, -5585068, 2060511, 15705622, 29710436, -18875308, -24306830, 6340983, -25328496, -7530689, 10608032, --18475876, -17883170, 1428614, 11026792, 15402290, 10984916, -6977711, -1544041, -32316408, -21729850, -28561532, -19853486, 38576860, -16368120, 7796977, 5681705, -377420, -28377386, 35512400, -16545825, --3448322, -6366216, 13816373, 26840324, -27192512, -15378667, 31742492, -23510650, -134218, -8843338, -6412923, 36887864, 114354, -2654290, -22887344, 28237262, -9279814, 7392713, 9217537, -17750026, --21589726, 2175938, 12292196, -6353867, 6248104, -50899656, -23884314, -7209640, -26108032, -12723841, -4234838, 16995722, -3671660, -4534949, -13407277, 461709, -1383516, -9600863, -3469797, 6088116, -379568, 8123394, 3628711, 7711614, -10148471, -1287417, -2229088, 10688563, 8214125, -6165963, -19209242, 7295002, -7924752, 11901354, 3076270, -980326, -6270116, 4627828, -4578972, -3962107, -8494372, 941672, -3957812, -3189550, 7087770, -1784022, 6388764, -1256815, 11749957, 2728378, -1561221, 1737851, 17754858, -19897510, 5756330, 16793322, 16594680, 37465000, -23553064, 34431144, --5883569, -22265110, -21807160, 5815386, 14461155, -9744744, -4434017, -15267535, -6211597, 29208462, --20336134, -1717987, 23483270, -7358890, 14072460, -9130027, -4304094, 24939802, -736050, 1455457, -24018530, 16747151, 5981816, -2745021, 20303384, 27730456, -27927488, 26074746, -24656870, 13315472, --17766670, 3946001, 21453362, 7502234, -48325900, 21715354, 13870060, 52076, 24672976, -38241852, --7318088, 26368952, 22366580, 3942243, 35087200, -18386754, 508417, -4248797, -5305895, 15234249, -6298570, 26442504, 21936008, -16148540, 14583025, -30176978, -9335111, 2672544, -1464047, -2119566, --4864588, -47356848, -26189636, -36517960, -24888798, 27588722, -16931298, -3868155, 3190624, 45016624, --10645076, -15506979, 35989140, 22264036, -991064, 29351270, 4463545, 5778879, -13554917, 328028, --11333882, -11744051, -6156836, 9711458, -11464341, -5726802, 5597953, 2433099, 9029632, -3312494, --1496259, 11926050, 6785512, 998043, -9194988, -7122130, -1137093, -2545842, 6928319, 11918534, --862215, 2390149, 2682207, -4366371, 28890098, 9268539, 2045478, 1509144, -9460202, 8039105, --16900696, -892816, 14531485, -648003, -3873524, 10926934, 6014565, 3616363, -284542, -9027484, -6231998, 7235410, 2222109, -11940009, 11514270, 29552060, -16320339, 11400454, 14586783, -21307332, -2728378, -26204132, 9960029, -2808909, -13966697, 20740934, 605590, 32358284, -1990717, -24241332, -40967544, -7379291, 4083977, 5640366, -38459820, 11562052, 33097018, 11788611, -14395657, -25196962, -2617246, 6124624, 28303834, 18239116, -9231495, -5523865, -22056804, 193810, 32027034, -43550968, -13211856, 30418032, -27381490, 10031433, 2844342, 10534481, 32039920, 10681584, 12367358, -5950677, --31457952, 32556388, -6045167, -16670379, 68305552, 33590404, 17429514, 2973191, 1553168, -32159104, --26351772, -11971148, 20084340, -697932, -18644454, -13182865, 25334402, -15489263, 17452062, 9882183, --12503187, 18619756, 8542153, -27076548, -13508746, -15893526, 4463008, 16916266, -33838436, 11107322, --34672736, -43840340, -27547920, 42005316, -14525579, 8664560, -9822053, -14622216, -2092723, -17425756, --12048457, -9292699, 2149094, -16707960, 1968169, 9738301, -9127, -14716169, -10900090, 5096516, -1664300, 18625126, 2507187, -21524228, -8342974, -12358232, 17643188, -3638911, -7132330, -17053704, --215285, 10149545, 4660577, 11569031, -5891085, -1976759, 3441880, 11778411, 7549479, -401043, --6718940, 8746701, -8228084, -936303, 4785668, -7746511, -204011, 13166222, -430034, 2374043, --14571750, -10340134, -11089069, 6505802, -11798275, 41917808, 69837776, -11564199, -2267743, -57142392, --19145354, -41991896, -27991376, 39072928, 2817499, 10683194, -32337882, 10592463, -28390270, -63919312, -9381819, 30857730, -2489471, 4085588, 33158758, -43782896, 50151260, 25088514, 15686831, -24713778, -33732672, 65077880, -12869333, 20206210, 49373332, 41783588, 73546480, 16107738, 26433376, 20141786, -17941152, 63279364, -16378858, -7345468, 23318452, 13986024, -6808597, 34889628, 2145336, 7490423, --20547124, -56196424, 2244657, 37814504, 5785321, 22992034, -40636296, 2746095, -54053236, 328565, --58094264, 4239670, 40852656, -4929549, -17275970, -55199992, 72691248, 13458280, 4937065, 75487808, --840203, -16918414, -12631499, 4166118, 15114527, -3867081, 335007, -5672578, -39707508, 23876260, -9224516, -24625194, -15214922, 20002200, -23965380, -41282152, -20234664, 9358197, 39832064, -41324564, -33170032, -1346472, 17719962, -6994354, 14469745, -9706626, -1415729, 3868692, 4090956, 13604846, -12137041, 2756832, 25451976, -1079111, 10466835, 13629542, 7825431, 6091874, 6077379, 22182970, -16350940, 8120173, -8590471, -3397856, 19051938, -25183004, 9772661, -14962592, 3623342, -5472325, -17178796, 20004348, 40274444, 22683332, 37988448, 21940840, 7952669, 40088152, 41401876, 39583492, -22552874, -6658810, 23600308, 26312580, 16106127, 31643172, 23734526, 98247, 7155416, 5467494, -5153961, 9323300, 6672769, -8026220, -8174397, 430034, 6585796, -1926830, -21905944, -72838352, -3676492, 98816464, 14500883, -19930796, -18915036, -44733696, -29227790, 1556926, 61727808, 11077794, --41000832, -2719788, 16908750, 4295504, 1357747, -3788161, 10834055, -29113972, -10910828, 15314243, -34238404, 34732328, -32383516, -12163884, 2583423, 4932770, 8771934, -37012416, 3700114, 6467147, --9750113, 27260158, -195421, 31409632, 46779712, 22762252, 9754944, 20760798, -26423712, 24523726, --21327196, 36479840, 63733020, 21420612, -34307124, -29189672, 28933048, 11023034, 54339928, 41293964, -12552042, -9653476, -12078522, 2212982, 2917894, -18322868, 21188684, 19043884, 3608846, 49616536, -33660196, -3894999, 24027120, 27296128, 12536473, 27314382, 1232656, -45952392, -5683316, -10547903, --10696616, 53723600, 24508694, 9322227, 42252816, 25707526, 26958436, 33753076, 11475079, -32925220, --16655346, -18254, -539018, -11094437, -9826885, -19627464, 12766253, 9035001, 19862076, -8451422, -22153978, 7069516, 22935126, 16203301, -5025649, -10789495, 3477313, 7094212, 258235, 3561065, -16803522, 2575907, 26265336, 36094904, 10102300, -1970316, 2614561, 26246546, 5849209, -6976101, --6675990, 20987894, -1012539, -5149666, -3848828, 7658464, 14176076, 29327110, -14855218, 3385508, --9627169, 3466039, 1142461, 24202140, -12349642, 12560632, 13973139, 9532143, -10471667, 4462471, -16254304, 3314641, 477278, 17004850, 2146410, 10798085, 5934034, 2928631, -3047816, 4225711, --2214593, 5015448, 1114007, 5290326, 901406, 9165997, 2126009, 4663798, 1585917, 7167227, -1376537, 7495792, 1595580, -526134, -14556718, -69439960, -15044734, 38685308, 20892332, 84694608, -4583267, -12350178, -38033008, -74446816, -81748264, -13673565, 35172560, 39511016, 25324200, -41345504, --54573464, -468151, -6723235, 21676700, 56847652, 28869160, -5381057, -34214248, -46319612, -29198262, -1860795, -28612536, 11072426, -23972896, -11807939, 37783900, 31343060, 27759448, 10886668, -39133596, --10883984, -37452652, -28683940, -15182709, 21994528, -4352950, 23363548, 57309896, 60016264, -25272662, -6912213, -44560824, -30288110, -21428128, -3831111, 7981123, 34821448, 36822364, 51210504, 36068060, -13092671, -25684978, -23324894, -5952288, 16485695, -42178728, 3080029, 48491256, 39017092, -10623065, -52867288, 46732464, 26651882, 48841832, -93347360, 21747566, -26499412, -29281476, 16081968, -15953119, --1284732, 93679144, 79765592, 27713276, -24553254, -2753611, -37397892, -7951058, -50310712, -18499498, --8393440, 18810346, 61791156, 31678068, 13025025, 10321343, -9853729, -31667330, -39782672, -609885, --26227754, 20338280, -2193118, -919123, 23776938, 18556944, 7415798, 19222126, 7203197, 30465814, --21725018, -1313723, -23961086, 9117679, -20819854, -20136954, 3498251, -6757594, 16798154, 28609850, -1962263, -28447180, -46036680, -14965814, -26616450, 1995549, 12173011, 20769924, -17689896, -7483981, -23580444, 2032593, -119969176, -136030736, -146262960, -147783376, -200384384, -11873974, -71760848, -23181012, -26607860, 66992364, 94001800, 96944392, 198101616, 212397408, 172939008, 128635880, 136284688, 129933496, -50126564, -19303730, -89222040, -89418000, -137203264, -44578540, -74321728, -55431920, -5118528, -116489712, --33435246, -104045584, -28242094, -119557392, -112658064, -52023864, -92994096, -9478456, -46922516, -43421584, --69514048, -46044732, -105008728, -74268576, -39382164, -36158792, -55503324, -34037616, -3990562, -44966160, -15251966, 67266704, -52278340, 79570176, 47782584, 106202728, 106757320, 93149248, 114941376, 97045320, -160286032, 159140352, 126995744, 169804752, 145689056, 222382672, 219070176, 258062032, 200934672, 216196848, -235676128, 212816160, 254544464, 188563024, 275626304, 220218544, 84031032, 107686640, 28484224, 42661912, --148963424, -125099512, -139563888, -148647200, -156631552, -202496976, -190563936, -209574000, -230017504, -270531392, --226011376, -207048560, -230041136, -250996272, -299143392, -240052160, -265689360, -267551760, -202892640, -228866464, --131945688, -163920112, -112076632, -104183560, -55062556, -40372156, -57016764, -9896678, 27023934, 129907192, -123240864, 89353040, 101184064, 108689520, 147529984, 150953072, 163422976, 172185776, 148242400, 150448944, -110693120, 156531696, 160251136, 121903520, 85893440, 66139812, 96290480, 95058360, 74155832, 44241920, -24610700, 37218040, -9754408, 4849555, -17558900, -14202920, -71130024, -65409132, -47492136, -33187750, --43352864, -33563020, -15937550, -13494787, -17284022, -32502702, -29576756, -15161235, -19100794, -13125420, --10730976, 1491964, 4895726, 316754, -4364761, -1374926, 435402, -1043140, -1068910, -1057099, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +5168993, 141734, 270583, 6361384, 1582696, -3165928, 2160369, 4234301, -2147484, -3509525, +-12622909, 675384, -4248260, 8429947, -4185446, 4228932, 3401614, -435402, 2748242, 4667556, +1267552, 1095217, -2306398, -2765422, -2153926, -3485366, 3036542, 1823214, -1656784, 2752000, +-1905892, -2782065, -3343632, -1598802, -2644626, 236223, 30602, -478352, 5761162, -3325915, +4709432, -1691143, -1215476, 3186329, -1978906, 1007707, -1980517, 3493956, -1043677, -9844065, +2914135, 366146, 1190243, 4983236, 2542621, 381178, -1148367, -3237869, 8419747, -4439923, +3258270, 1745904, -3520263, 3583613, 1553704, -4097399, 3242700, -4225711, 212064, -407485, +3690988, 647466, 3857954, -1465121, -8750459, -1826972, -2141578, -4101694, -3748970, -3633542, +2966212, 1366873, 1010391, 1870995, 1779190, 409096, 818191, -974421, 562104, -704912, +-396211, -2077154, -80531, -654446, 1557463, -103616, -565862, -270046, 113280, -1045825, +318901, -420370, 535797, -291521, 47782, -1209033, -222801, -1524177, -1043677, 15338402, +-7602092, 830002, -481573, -469762, 3471944, -2784750, -11052025, -10186052, 4760435, -3237332, +-966905, 2573222, 537945, 2539936, 2833605, -4865124, 2587718, 1781338, -3459059, 3991635, +6019934, -3974455, -1329292, 274341, -6560026, -2978023, 623844, 7772280, -1293322, -468151, +-6536940, 3816615, -33823, -5861557, -2530273, 1996086, -923955, 1101122, -5083094, -154082, +302795, -2088428, 5347235, 1330366, 1167694, 5170604, -584652, 6725382, -2315524, -8627516, +3427384, 3329137, -3069828, -1353989, -1098975, 1031866, 338766, 2360622, -2014340, 1550483, +-4733591, -244276, 3033321, -4517232, -572841, 2604361, 791885, -2377801, 1497333, -1808181, +440234, 4367445, 1538135, -6078990, 7303055, 2727304, 2662343, -657130, 4187056, 4667019, +-2076617, -318364, 1003412, 1181116, 1438277, 1955821, -234076, 139050, 1445257, -234613, +181999, 903554, 2260227, -389231, 2302639, -108985, 534187, 1173063, 285078, -695785, +-218506, 796716, 766115, -154619, -1067299, -3751117, -8999567, -1111323, 923955, 9847823, +-3808026, 8434242, 2085744, -331249, 486405, 7540889, -1802276, -2117419, -2232846, 5301601, +10817949, 2800319, -7523172, -10201621, -14488535, 1850057, -3811784, -6119792, -3371013, -9465034, +-80531, -4416837, 675384, 4479114, 4730370, -5416491, -4844186, -3462281, 570694, -8039105, +-905164, 2440078, -3652333, -1363652, 808528, 3177202, -4522064, 1126892, 10535555, -483721, +-542777, -3940096, 4371203, -2006287, 360240, 3311957, 4348118, 6454262, -1065152, 913217, +-1984275, -133681, -1136556, 813359, 10126996, -11325292, 227633, 2145336, 5974837, -2542084, +-3007551, -710817, -2840047, 8063264, -4489852, -10679973, -756451, -3220689, -4471061, 2591476, +-10542534, 3840238, -1143535, -2971044, 195958, 7383049, -2217814, -2844879, -2881923, 3513283, +-3355443, -956704, 615254, -354872, 1270774, 67646, 490700, 2155537, 170188, 525597, +-559420, 1722282, 383326, -404801, -2006287, -1127429, -155156, -1102733, 2054068, 1200443, +-1174674, 1482301, 155693, 174483, -1088774, 519154, -475668, -5369, -16508244, 6166500, +-5163088, 6920266, -6218576, -564788, 4792110, -9549323, -1638530, 2910377, -2597382, 13910325, +-5835250, -1765232, -5566278, -4659503, 7151121, 7945690, 3080565, -9370008, -11300059, 10448045, +1757715, -10599979, 3962644, 382252, 5018670, -3150359, 4789426, -6347425, 3097208, 10222022, +4235912, 4371740, 2331630, 167504, -2595771, 2124935, 807991, -6995965, 127775, -2229088, +-5117991, -5135171, -1931662, 4026532, -7348689, 986769, -5311801, -565862, -798864, 2409477, +4383014, 9223979, 3281892, -76236, 3991635, -4965519, -7252589, -154619, 1714229, 729608, +8806830, -2026151, -1051193, -2837363, -1219234, 1220308, 4291746, -1188095, 1809792, -4389994, +7136625, -1897839, -2456185, -1674500, 2333241, -3893388, 151398, 4362076, -281320, -1298154, +682900, 3455838, 2786360, -583042, 2253784, -1929514, 1440962, -1183800, 584116, 2459406, +-842887, 1026497, 1104880, -1750199, 1755031, 1005022, 424665, -777926, -1508070, -418222, +1962263, 1226750, -622233, 721555, -324270, 3092913, -235149, -929324, -8236137, -1909113, +-5340255, -530965, 10976326, 7021735, 4910758, -817118, -9630927, 1362578, -6331319, -10208600, +-3378529, 7375533, -5759551, -9050570, 2384244, 794569, -4501126, 985158, 5175436, 1437203, +-12069932, -3409130, 7609609, 8961986, 4476430, -9999758, -3619047, 4580046, -1692217, -2140504, +664109, 3368865, 554051, 1254667, 10292352, 34897, 6231461, 4833986, -64961, -4613332, +-99858, -2715493, 6141803, -3489661, -5832566, 27917, 9627706, 554051, 9564355, 5162014, +939524, 6185290, -1027571, 13274670, 1082869, 6573985, 7486665, 705448, -6167573, -934692, +-7381438, 3787624, -5286568, -2958696, -4873714, -3209414, -2333241, 2439542, 832150, 3665755, +-140660, -4212289, -3666292, 1385127, 6840809, -2012729, 1699733, -7321309, 2332704, 6345278, +9735617, -3340411, -715112, 1619740, -3336116, -244276, 3219078, -975494, 5906654, 396748, +1350230, 155156, 287763, 2182917, -1431298, -927713, -760746, -437013, 601832, 736587, +-1105417, 970663, -333934, -1172526, -1429687, 490700, -1357747, -892816, -1703491, 833761, +1184337, -244813, 3328063, -2155537, 587337, -234076, -1886028, 3166465, -914291, -449898, +9999758, -14951318, -2758443, 12517145, -6220724, 2287070, -9667971, 4254165, 17607218, -2384244, +923418, -745714, -12453258, 1004486, -802085, 18690088, -5907728, -914828, 8159901, -5151277, +11573326, -7809861, -1178969, -11807939, 13339632, 185220, -5267241, 171262, 4878009, -6206228, +9268539, -985158, 8211978, -56371, 4294431, -12904229, -8322573, -6018323, -1951526, 7784628, +-11714523, 6257768, 4814122, 1636919, -4861903, -7047505, 16064251, 3201361, -1844152, 6245956, +-5703717, 3389803, -7587060, -7423314, -3119220, -4981089, 17347372, 5196374, -3475166, -5153424, +-6650757, 5470715, 4485557, 1652489, -6138045, -736050, -2503429, 7432978, 643171, 6015102, +-14055280, 7641284, -1259499, 389231, -1591285, 2480881, -6222871, -2864743, -9759776, -3169686, +3505767, 5950141, 6239514, 2336462, 2251637, 1481227, -3516505, 2092723, 1392106, -240518, +-2371359, -3866008, 2036888, 1957431, -3007014, 1551020, 171799, -2430415, 1569274, 466004, +-1087701, -560493, 115427, 496069, -1845225, 1275068, 653909, -2799782, -699006, -1427540, +190052, 2007897, 1323387, -277025, 44023, -1287953, 153545, -1187022, 6329171, 3114925, +5215701, 1541356, 56371, -1989107, -8012799, -2496450, -5171141, 3144453, -308701, 12030740, +-10127533, -13042742, -3310346, 4041564, -4085051, -3172907, 10225243, 2034204, -5686537, -6548752, +-6790880, 11180337, -5679021, 7546795, -3686693, 8259222, -8302709, 1789928, 12687333, 4323959, +-17376364, 3958349, 348966, -2255395, -1586454, 1743757, -2115808, 1646583, -2874944, 1351304, +-750009, -7786776, 7714298, 7922067, -2420751, 8779987, -7572028, -1343788, -2215666, -3624416, +9659918, -7028177, -12429635, -6979859, 2281165, -10139881, -9456981, -4744865, -3225521, -6510097, +-587337, 8242042, 8677981, 1294396, 9359271, 2900177, 1214939, 7088307, -7674033, -1381369, +-45097, -6307160, -109522, -6111202, 7298223, -2151242, -1388348, 6068789, -1167694, -1962800, +-1310502, 7253663, -938987, 2506650, -7147363, -2557653, 3924526, -4645544, 290984, 90194, +741956, -3549254, -2472828, -1885491, 68183, -1961726, -2334852, 694174, -396211, -2097018, +-949188, 231391, -264141, -678605, -744640, -1221918, 332323, -3849365, -2698850, -2604361, +-2588255, -3758, -188442, -940598, 883690, 19327352, -9545565, -9188546, 6222871, 15707769, +3053185, 14147085, 8074002, 12848395, 5691906, -2403571, -5835250, 4601521, -9605157, -7306276, +10721312, 8968429, 22405234, -577673, 3116536, -8299488, 8653285, 3920768, -9987946, -2367601, +12688944, -41339, -13982803, -5647345, -7892003, -2677375, 7798050, 7164543, -5304285, -2570001, +9727027, -9424769, 4328254, 8199630, 9795747, -5226439, 8432095, -3558917, -12736189, 4504347, +11689827, -3119757, 3375308, 2863133, -3962644, 1438277, 3503083, -3622805, 1304060, 9479530, +-5574331, -2932926, 8737574, -1860795, -1765232, -14474040, -5128191, -8732742, -14377940, -9666898, +7218230, -4694936, -6146635, 12477417, 12456479, -3124052, 13397077, 5395016, 8801462, -2446521, +-6928319, 5818607, -7184944, -14323716, -8645769, -3659312, 7080254, 3297998, 11869142, 2129767, +-2561411, -1888712, -8053, 2095944, -3693672, 275952, -2148021, -272730, 2080375, -321049, +330176, 3881577, -1399623, -653372, 3811784, -2763812, -1443109, -1815161, 1121523, -2028298, +1385127, 900333, 586800, 2057289, 2558190, 1216550, 4624069, 619012, 3156264, 1132261, +2368138, 2790655, -2415919, 2233920, 2322504, -1628866, -540629, -179315, -3375308, 1031866, +-9757629, -10438381, 14139032, -2354716, 32300302, -13302051, -6255083, -740882, 7881802, -4502200, +-4399657, -13305272, -15397458, 6956774, 1336809, 21259552, 6886443, -2165737, -2427194, 14124000, +14413910, -11905112, 8651138, -11371463, 2990371, -4893579, -5866389, -3484829, 2419677, -1843078, +7484518, 3761318, 8375186, -1035087, -4001836, -7856569, -1526861, 9167071, 815507, -12154221, +-1535451, 2972654, -5200669, 9650792, 8137890, 1708323, 2827699, -26550950, -10181220, 9299678, +-627602, 14927696, 4156455, 16824998, -1893544, -9074192, 8968965, -5064840, 6116034, 1112397, +24480240, 20272246, 2384244, 5754183, -3344169, 8078297, 8534637, 9263171, 9977209, 16268799, +-305480, 2945811, -6234145, -5392869, 5078262, -7561827, -18843632, -13932874, -337155, 11735461, +-5915244, -10615549, -6130529, -5706401, -649077, -12678207, -523449, 2403571, -98784, -1670742, +-1264868, 1363652, 2732673, -300648, 2055679, -9451076, -5840619, -2985002, -6751689, 646393, +-2450279, -3873524, -2658048, -1547799, 3826816, 1626182, -3629247, 1236414, 8486319, 4435091, +-1818919, -2974802, -3896072, -2193655, -3146064, -6591701, 2420214, -2503429, -559956, 4895726, +1554241, -889595, 904628, -28055264, 22111028, -651224, 2501819, -7783018, 12390444, -26637924, +-17080012, -5396627, -6851547, -660888, -23883776, 4656282, 475131, -657667, -10914586, -11110544, +4500589, 15194521, 2342905, -20316270, -4413079, -16638166, 13117904, 8458401, 647466, -7375533, +-3493419, -3773129, 10808822, -1558536, -230318, -2359011, -14718316, 7628399, 10299332, -6179921, +-3302830, 8005819, -16018617, -11680164, -17671106, -5998459, 4434017, -11278047, -5388574, -491237, +-18298172, 5578626, 11275363, 19962472, 2868501, -1993402, 1219771, -13146358, -10308995, 15282031, +-1097364, -5822365, -3619584, -23420456, -12568148, 4574140, -4952098, -2738042, -1831804, 15311022, +-2662880, -14564234, 1162326, 11336566, -297427, -7146289, -146029, 778463, -6020471, -10213432, +8016557, -18774376, -9293772, -143345, 9069897, -11475616, 7254200, 4804995, 6609418, 7042673, +-7209103, -1823751, 8643085, 1653026, -5285494, 4959077, 7153805, -6687801, 2486249, 6417755, +6061273, 9521406, 643708, -2908230, -1625108, 1563905, 132070, 4188130, 3529926, 327491, +-862752, -3036005, -1030255, 2100776, 4256850, -7031399, 916976, -1329292, 2924336, 6799470, +348429, 4765803, -2524367, 3170760, 3899830, 5738613, 4479651, 5602248, -396748, 3224984, +-1011465, 2741263, 14862197, 13649406, 4966056, 23115514, -10306311, -4798016, 3764539, -6029061, +-1759326, 7564511, 24768540, -3971234, 5051419, -132070, -1496259, -386010, 27315992, -13200582, +14188961, -121870, -17865990, 5956583, -17722108, -10823854, 10290742, -9325985, 7292318, 418222, +1018444, 12256763, 9833864, -14674830, -16627966, -12494597, -4156455, 4797479, 4854924, 1830193, +3344169, -19993610, 3112778, -10719165, -25176562, 17211008, -4918275, 16187195, 17311940, 1032940, +6497749, -9183177, -11183021, -19826642, 4611185, 18246632, 3260417, -7955890, 1125818, -3984656, +2838974, -10657424, -8706436, -10640781, 1893007, -1252520, -3439732, 11778948, 10600516, 6400575, +17140140, 1974074, -17929340, 23284092, -16920024, -5170604, -4204773, -4434554, 19517942, -3052648, +-27828166, 23778550, -9212168, -5611912, 6554120, 6083285, 18331994, 11739756, 7706782, 9003325, +8133595, 6180458, 406948, 7750269, 9289477, 2528125, 183073, 9968619, -1697049, 1231045, +-9026948, -2099702, -2834679, -4636417, 820339, -644782, 6025302, 4432406, 1835562, -648003, +2936147, 1335735, 2157684, 4123706, -1178432, -1438814, 907849, -1412507, 3059627, 1508607, +1464047, 2489471, 1435593, 9247601, 6742562, 2024540, 21172042, 23928874, 5592585, -44973140, +1632088, 12733504, -14840723, 9071508, 18011482, 914291, 4905390, 11395622, 8753680, 3427384, +16190953, 3711389, -2223719, 30430918, 11326903, 4026532, 13157632, -9980967, 16136192, -11225971, +-961536, -1204202, -3700651, -16587164, 5609764, -11709155, 21671868, -1844152, -4234301, 31911070, +4272419, 4748623, 10611254, 1299228, 6124624, -7036230, -13849122, -1470489, 9378598, -16311749, +19077170, 17319992, 12715788, 3446711, 7577396, -11228118, -11775727, -18579492, -8247948, -9965398, +-9604084, 4581657, -1802813, -18182744, -8111583, 16247861, -261993, -14971182, 8580271, -694174, +-10281615, -24389508, 1722819, -37037652, 21630530, -12509092, 19675246, 1107028, 5496485, 799938, +-7295002, 10050760, 33265058, 3215320, 9490267, -5651103, -25906706, 2464238, -2785823, 19134616, +11049877, -4291209, -905164, -3749507, -2037425, 6628745, -7406134, 6237903, -862215, -6332393, +-6554657, 7194070, -8030515, -7723962, -11137387, -2053531, -8004746, 2724083, 7024419, 685584, +-2017024, -4986457, 10251550, -9385577, 2537789, 1471026, 875100, -5405753, 4088809, 10318122, +-433792, -4762582, -1212255, 9449465, 9556302, -7385733, 9150428, -389231, -2374580, 1738388, +-575526, 10409390, 2637110, 12400107, 9224516, 24508694, -33712808, 13282723, -19748260, 16815870, +-8387535, -14176076, -4072166, -16325708, -6869800, -3662533, 5877663, 7486665, -4772246, 23529978, +-1122597, -4085588, -3177739, -21369610, -2377801, 56371, -17972290, 5725192, -15329812, -19337554, +-6267431, 11588359, -31987842, -21736292, -14527190, 1607928, -22437446, -19075024, -15448460, -7786776, +-6283001, -2983392, -15176804, 16149614, 2742337, -1619740, -11338177, -11668889, 21859236, -19096498, +-13067975, 5706938, 5798206, 7822209, -11107322, -15439334, -6540699, -2905546, 7126425, -11102490, +-4478041, -4572530, -13242458, -22557706, -28493350, 26871462, -29523068, -1687385, 2054068, -5193689, +-5486284, -26413512, 10179072, -6371047, -27688580, -680752, -6103686, 25983478, 6417755, 18478024, +17601850, -5299453, 6877854, -2945274, -5055177, 12986907, -3314104, 7443715, -10009958, 734976, +-10080288, 8545911, 6701223, 1183264, 6133750, -2669859, -967978, 6476811, 3105798, -6408628, +4706748, 10589242, -1644973, 2416993, -5786395, -13637595, -1433982, -1229434, -454730, -9474698, +-2048699, 1482838, -1363115, -5061619, 6456947, -1207960, -3632469, -11033234, -11126113, 143881, +6135898, 3586298, 2389613, -761283, 8053601, 9096741, -4053912, 1955821, 2247879, -611496, +2763812, -29996052, 34702264, 5495411, 3499862, -6017249, 17619030, 217433, 29011430, -7911330, +19900730, 10729365, -28617368, 12403866, 4687420, 13586055, -2348273, -7619809, -11406896, -4192962, +13962939, 30758408, 3238405, -4491999, -19476602, 7350300, -21065204, -3325915, 21221970, -19186692, +9664, 1355599, -3335579, -7237557, -8187282, 34093988, -7388418, -8364986, -4158602, 7738994, +11407433, 4294431, 536871, -6937446, -129923, 5111011, 20679194, -4744865, 29596620, 17327508, +8796630, -7113540, 25792352, 29358786, -2449205, -7763691, -1570884, -9528385, 2887829, -9433896, +14770393, 5060545, 21293910, 16498580, -26154740, -29410326, 35261144, 26250304, 4129611, -4968741, +-14038637, -19359028, -7617662, 19903416, -18742164, -20205136, -2890513, -5426155, -32413582, -7172596, +7146826, -12498355, 1692754, -33823, 1673964, 2684892, 5340255, -9488656, -5927592, -9750113, +-3598646, 22549, 1405528, -5284421, -2596308, -872415, -16027207, -5239860, -7661685, -3434363, +-482110, 1501628, 603980, 2768643, -1089848, 689879, -8471286, 4940286, -7305203, -8251169, +5879810, 2668785, -15057618, -1509144, -4765266, 7520488, 14201309, 439160, -12259447, 9909563, +-2866891, 2697776, 3330210, -3804804, -2945274, 1048509, -6606197, -8424578, 15343771, -12607340, +-4096862, -2668249, 3018825, 464930, -18937584, -54842976, 27453968, -26381836, 10731513, 39107824, +5962489, -16411607, 11279658, 13620415, -5703717, -12418361, -2586107, -27022324, 8907762, -28085864, +-17058000, 11256572, 1154273, 4846334, -25374130, -5178120, -18318572, -15561740, -22601192, -7900593, +7731478, -13471702, -13664975, 13259101, 1827509, -1130650, 4214974, -26004416, -1606855, -20228222, +17299054, 4756140, -49475876, 12441983, 26504244, -5684389, 15807627, 13289703, 8974871, 7182259, +25312390, 19830938, 722628, -18141404, -3841312, 20042464, 13011067, -16816944, 1198833, -19641422, +-6332930, 1299765, 14220100, 19028852, -35002908, -27697170, -15500000, 2919504, -10414759, -3875671, +32541894, 5327370, 7694971, 25323664, -10302553, 5201206, -6482717, 25910464, -13220983, 1028645, +2572149, 19185618, -5368709, -2073396, 7019587, 7853348, -1016297, 3816079, 12537010, 464930, +-409633, -551366, 12206834, -6231998, -3974992, 2900714, 5272609, 3547643, 1595580, 5719286, +-2697776, -23622, -5613523, -208306, -4181688, -670552, -5752035, 9316321, -7090454, -10449119, +9780714, 6369437, 6726456, -7399155, -9458592, -75699, -16946330, -4716411, -8747238, -8946417, +3415036, -183610, -9058086, 2943663, 3646964, -1096290, -5373004, -5262946, 3897683, 2333241, +8035884, 18126372, 17517024, -30652644, 6363531, -6629282, -8096550, -7147363, 20492900, 10878078, +-15029164, -8576513, 15624017, -28187334, 1547262, 10222022, 15650861, -3366181, 3422015, -32883880, +-178241, -14576045, 10937134, 4025995, 18183280, -28916404, -14638322, -4216048, 3506841, -2496987, +5585068, 2060511, 15705622, 29710436, -18875308, -24306830, 6340983, -25328496, -7530689, 10608032, +-18475876, -17883170, 1428614, 11026792, 15402290, 10984916, -6977711, -1544041, -32316408, -21729850, +28561532, -19853486, 38576860, -16368120, 7796977, 5681705, -377420, -28377386, 35512400, -16545825, +-3448322, -6366216, 13816373, 26840324, -27192512, -15378667, 31742492, -23510650, -134218, -8843338, +6412923, 36887864, 114354, -2654290, -22887344, 28237262, -9279814, 7392713, 9217537, -17750026, +-21589726, 2175938, 12292196, -6353867, 6248104, -50899656, -23884314, -7209640, -26108032, -12723841, +4234838, 16995722, -3671660, -4534949, -13407277, 461709, -1383516, -9600863, -3469797, 6088116, +379568, 8123394, 3628711, 7711614, -10148471, -1287417, -2229088, 10688563, 8214125, -6165963, +19209242, 7295002, -7924752, 11901354, 3076270, -980326, -6270116, 4627828, -4578972, -3962107, +8494372, 941672, -3957812, -3189550, 7087770, -1784022, 6388764, -1256815, 11749957, 2728378, +1561221, 1737851, 17754858, -19897510, 5756330, 16793322, 16594680, 37465000, -23553064, 34431144, +-5883569, -22265110, -21807160, 5815386, 14461155, -9744744, -4434017, -15267535, -6211597, 29208462, +-20336134, -1717987, 23483270, -7358890, 14072460, -9130027, -4304094, 24939802, -736050, 1455457, +24018530, 16747151, 5981816, -2745021, 20303384, 27730456, -27927488, 26074746, -24656870, 13315472, +-17766670, 3946001, 21453362, 7502234, -48325900, 21715354, 13870060, 52076, 24672976, -38241852, +-7318088, 26368952, 22366580, 3942243, 35087200, -18386754, 508417, -4248797, -5305895, 15234249, +6298570, 26442504, 21936008, -16148540, 14583025, -30176978, -9335111, 2672544, -1464047, -2119566, +-4864588, -47356848, -26189636, -36517960, -24888798, 27588722, -16931298, -3868155, 3190624, 45016624, +-10645076, -15506979, 35989140, 22264036, -991064, 29351270, 4463545, 5778879, -13554917, 328028, +-11333882, -11744051, -6156836, 9711458, -11464341, -5726802, 5597953, 2433099, 9029632, -3312494, +-1496259, 11926050, 6785512, 998043, -9194988, -7122130, -1137093, -2545842, 6928319, 11918534, +-862215, 2390149, 2682207, -4366371, 28890098, 9268539, 2045478, 1509144, -9460202, 8039105, +-16900696, -892816, 14531485, -648003, -3873524, 10926934, 6014565, 3616363, -284542, -9027484, +6231998, 7235410, 2222109, -11940009, 11514270, 29552060, -16320339, 11400454, 14586783, -21307332, +2728378, -26204132, 9960029, -2808909, -13966697, 20740934, 605590, 32358284, -1990717, -24241332, +40967544, -7379291, 4083977, 5640366, -38459820, 11562052, 33097018, 11788611, -14395657, -25196962, +2617246, 6124624, 28303834, 18239116, -9231495, -5523865, -22056804, 193810, 32027034, -43550968, +13211856, 30418032, -27381490, 10031433, 2844342, 10534481, 32039920, 10681584, 12367358, -5950677, +-31457952, 32556388, -6045167, -16670379, 68305552, 33590404, 17429514, 2973191, 1553168, -32159104, +-26351772, -11971148, 20084340, -697932, -18644454, -13182865, 25334402, -15489263, 17452062, 9882183, +-12503187, 18619756, 8542153, -27076548, -13508746, -15893526, 4463008, 16916266, -33838436, 11107322, +-34672736, -43840340, -27547920, 42005316, -14525579, 8664560, -9822053, -14622216, -2092723, -17425756, +-12048457, -9292699, 2149094, -16707960, 1968169, 9738301, -9127, -14716169, -10900090, 5096516, +1664300, 18625126, 2507187, -21524228, -8342974, -12358232, 17643188, -3638911, -7132330, -17053704, +-215285, 10149545, 4660577, 11569031, -5891085, -1976759, 3441880, 11778411, 7549479, -401043, +-6718940, 8746701, -8228084, -936303, 4785668, -7746511, -204011, 13166222, -430034, 2374043, +-14571750, -10340134, -11089069, 6505802, -11798275, 41917808, 69837776, -11564199, -2267743, -57142392, +-19145354, -41991896, -27991376, 39072928, 2817499, 10683194, -32337882, 10592463, -28390270, -63919312, +9381819, 30857730, -2489471, 4085588, 33158758, -43782896, 50151260, 25088514, 15686831, -24713778, +33732672, 65077880, -12869333, 20206210, 49373332, 41783588, 73546480, 16107738, 26433376, 20141786, +17941152, 63279364, -16378858, -7345468, 23318452, 13986024, -6808597, 34889628, 2145336, 7490423, +-20547124, -56196424, 2244657, 37814504, 5785321, 22992034, -40636296, 2746095, -54053236, 328565, +-58094264, 4239670, 40852656, -4929549, -17275970, -55199992, 72691248, 13458280, 4937065, 75487808, +-840203, -16918414, -12631499, 4166118, 15114527, -3867081, 335007, -5672578, -39707508, 23876260, +9224516, -24625194, -15214922, 20002200, -23965380, -41282152, -20234664, 9358197, 39832064, -41324564, +33170032, -1346472, 17719962, -6994354, 14469745, -9706626, -1415729, 3868692, 4090956, 13604846, +12137041, 2756832, 25451976, -1079111, 10466835, 13629542, 7825431, 6091874, 6077379, 22182970, +16350940, 8120173, -8590471, -3397856, 19051938, -25183004, 9772661, -14962592, 3623342, -5472325, +17178796, 20004348, 40274444, 22683332, 37988448, 21940840, 7952669, 40088152, 41401876, 39583492, +22552874, -6658810, 23600308, 26312580, 16106127, 31643172, 23734526, 98247, 7155416, 5467494, +5153961, 9323300, 6672769, -8026220, -8174397, 430034, 6585796, -1926830, -21905944, -72838352, +3676492, 98816464, 14500883, -19930796, -18915036, -44733696, -29227790, 1556926, 61727808, 11077794, +-41000832, -2719788, 16908750, 4295504, 1357747, -3788161, 10834055, -29113972, -10910828, 15314243, +34238404, 34732328, -32383516, -12163884, 2583423, 4932770, 8771934, -37012416, 3700114, 6467147, +-9750113, 27260158, -195421, 31409632, 46779712, 22762252, 9754944, 20760798, -26423712, 24523726, +-21327196, 36479840, 63733020, 21420612, -34307124, -29189672, 28933048, 11023034, 54339928, 41293964, +12552042, -9653476, -12078522, 2212982, 2917894, -18322868, 21188684, 19043884, 3608846, 49616536, +33660196, -3894999, 24027120, 27296128, 12536473, 27314382, 1232656, -45952392, -5683316, -10547903, +-10696616, 53723600, 24508694, 9322227, 42252816, 25707526, 26958436, 33753076, 11475079, -32925220, +-16655346, -18254, -539018, -11094437, -9826885, -19627464, 12766253, 9035001, 19862076, -8451422, +22153978, 7069516, 22935126, 16203301, -5025649, -10789495, 3477313, 7094212, 258235, 3561065, +16803522, 2575907, 26265336, 36094904, 10102300, -1970316, 2614561, 26246546, 5849209, -6976101, +-6675990, 20987894, -1012539, -5149666, -3848828, 7658464, 14176076, 29327110, -14855218, 3385508, +-9627169, 3466039, 1142461, 24202140, -12349642, 12560632, 13973139, 9532143, -10471667, 4462471, +16254304, 3314641, 477278, 17004850, 2146410, 10798085, 5934034, 2928631, -3047816, 4225711, +-2214593, 5015448, 1114007, 5290326, 901406, 9165997, 2126009, 4663798, 1585917, 7167227, +1376537, 7495792, 1595580, -526134, -14556718, -69439960, -15044734, 38685308, 20892332, 84694608, +4583267, -12350178, -38033008, -74446816, -81748264, -13673565, 35172560, 39511016, 25324200, -41345504, +-54573464, -468151, -6723235, 21676700, 56847652, 28869160, -5381057, -34214248, -46319612, -29198262, +1860795, -28612536, 11072426, -23972896, -11807939, 37783900, 31343060, 27759448, 10886668, -39133596, +-10883984, -37452652, -28683940, -15182709, 21994528, -4352950, 23363548, 57309896, 60016264, -25272662, +6912213, -44560824, -30288110, -21428128, -3831111, 7981123, 34821448, 36822364, 51210504, 36068060, +13092671, -25684978, -23324894, -5952288, 16485695, -42178728, 3080029, 48491256, 39017092, -10623065, +52867288, 46732464, 26651882, 48841832, -93347360, 21747566, -26499412, -29281476, 16081968, -15953119, +-1284732, 93679144, 79765592, 27713276, -24553254, -2753611, -37397892, -7951058, -50310712, -18499498, +-8393440, 18810346, 61791156, 31678068, 13025025, 10321343, -9853729, -31667330, -39782672, -609885, +-26227754, 20338280, -2193118, -919123, 23776938, 18556944, 7415798, 19222126, 7203197, 30465814, +-21725018, -1313723, -23961086, 9117679, -20819854, -20136954, 3498251, -6757594, 16798154, 28609850, +1962263, -28447180, -46036680, -14965814, -26616450, 1995549, 12173011, 20769924, -17689896, -7483981, +23580444, 2032593, -119969176, -136030736, -146262960, -147783376, -200384384, -11873974, -71760848, -23181012, +26607860, 66992364, 94001800, 96944392, 198101616, 212397408, 172939008, 128635880, 136284688, 129933496, +50126564, -19303730, -89222040, -89418000, -137203264, -44578540, -74321728, -55431920, -5118528, -116489712, +-33435246, -104045584, -28242094, -119557392, -112658064, -52023864, -92994096, -9478456, -46922516, -43421584, +-69514048, -46044732, -105008728, -74268576, -39382164, -36158792, -55503324, -34037616, -3990562, -44966160, +15251966, 67266704, -52278340, 79570176, 47782584, 106202728, 106757320, 93149248, 114941376, 97045320, +160286032, 159140352, 126995744, 169804752, 145689056, 222382672, 219070176, 258062032, 200934672, 216196848, +235676128, 212816160, 254544464, 188563024, 275626304, 220218544, 84031032, 107686640, 28484224, 42661912, +-148963424, -125099512, -139563888, -148647200, -156631552, -202496976, -190563936, -209574000, -230017504, -270531392, +-226011376, -207048560, -230041136, -250996272, -299143392, -240052160, -265689360, -267551760, -202892640, -228866464, +-131945688, -163920112, -112076632, -104183560, -55062556, -40372156, -57016764, -9896678, 27023934, 129907192, +123240864, 89353040, 101184064, 108689520, 147529984, 150953072, 163422976, 172185776, 148242400, 150448944, +110693120, 156531696, 160251136, 121903520, 85893440, 66139812, 96290480, 95058360, 74155832, 44241920, +24610700, 37218040, -9754408, 4849555, -17558900, -14202920, -71130024, -65409132, -47492136, -33187750, +-43352864, -33563020, -15937550, -13494787, -17284022, -32502702, -29576756, -15161235, -19100794, -13125420, +-10730976, 1491964, 4895726, 316754, -4364761, -1374926, 435402, -1043140, -1068910, -1057099, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -2838974, -5248450, -212064, 2153926, 833761, -4591320, -3453691, 1197759, -3111704, -4616553, 2632278, --546535, 686658, -2649995, 1946157, 187905, -4090956, -185757, 4719096, 3835406, -2937758, --5174899, -4716948, 694174, -1088237, -924492, -4014721, 4366908, -1163399, 1230508, -1832340, --1111323, -402653, 1656247, -1189706, -2298881, -8810589, 2995740, -671626, 2847027, 1686848, -1196685, -231391, 5872831, 1099512, 1173600, 815507, -3004867, -1925756, -278636, 427349, --3008088, -716186, 1170916, -418222, -2842195, -1501091, 104690, 2775086, -4351876, -5907728, --7315403, 2585570, 4191351, 419296, 3466576, 2538863, 486942, -6710887, -174483, -1759863, --2352568, 111132, 374736, 2773475, -598611, 3949223, 2799782, -1256278, -4016331, -1959042, --717260, 1020055, 307090, 1290638, 1504849, 2755759, -58519, -270046, -1300301, -1132261, --1076426, -485331, -2240899, -1064615, -1267015, 690953, -148176, -288300, -688805, 1044214, --1577327, 3165391, 4140349, -963683, -63351, -5941014, 5283884, -6803765, 2617246, 11435887, --2460480, -4269735, 641024, 5961952, 625992, -1708860, -836982, -1722282, -1091995, -5389110, --2103997, 2640331, -4280472, -2453500, 233539, -248571, 4711043, -2893197, 872952, -1126892, -1022739, -611496, -2765422, 5215701, 8880919, 2240899, -514859, -1677722, 9612137, 437550, --4031364, 258772, -7182259, 16106, 3737159, -5516349, -707059, 1171989, -4405563, -1332514, -5059472, 712965, -550830, 4881231, -3259343, -5149666, 2903935, 1923072, -3597035, -1786706, --3850438, -4512400, -4853850, -2688113, -2777770, 3924526, 2789581, 765041, -116501, -2731599, -2521683, -595390, -1866163, 3325379, 3674882, -2629594, -529355, -1245541, -1679869, 513249, -4211216, -2131915, 940061, 4015795, 2653216, -924492, 1015223, -704912, -114890, 1701344, --245350, 25233, 1731409, -1856500, 748935, 380641, -597537, -1710471, 1306207, 149787, --767189, 402116, 184684, -613107, 192200, -314069, -572304, -998580, 5847061, -8523899, --5627481, -2029909, -1240172, 287763, 1096290, -8128226, 5644124, -2567854, 1844152, 1162862, -1878511, 3549254, -25770, -1177358, -2705293, 5849746, -462783, 3802120, 7225209, -1569274, -6143414, 5239323, -4543539, 3035468, 3072512, 3295314, -8017094, -798864, 478889, -2521683, --5042829, 76236, 5883032, -1383516, -2520609, -1981054, 1799054, 5452998, 2693481, -2789581, --46708, -2301029, 230854, -733903, -2719251, 5092221, -6585259, -5443334, -4998268, 1542967, --703301, -182536, -6143951, -6489696, 1579474, -139586, 366146, -642635, -345745, -4845260, --2866891, -5297306, 1036698, 4534412, -1415192, 4023311, 753230, 3576634, -7733089, 30065, -1116155, -2582886, -1167694, 1029718, -2756295, -341987, 2024540, 2184528, -1716376, -5175436, -4552666, 710817, 110595, -1146219, -661962, -4144644, 181999, 282394, -729608, 744103, -133144, -1464584, 623844, 667331, -418222, -599148, -206695, -250182, -280247, 224949, -2179696, 33286, -654983, 1801202, 804770, -145492, -601832, -181999, -2920578, 720481, --586263, 5018670, 7982734, 506269, -3035468, -6788196, 3106335, 2015950, 1883880, 8456254, --5528160, 195421, 1030255, -1532767, -2765422, 1250909, 533650, 5097590, 11246909, -989990, -1947231, 4702989, -2038499, 4195110, 7310571, -5100811, -189515, -1900523, -104690, 3261491, --5692979, 6152541, 1373316, 72478, 3244848, -532576, 4492536, -2433636, -1032403, -1263257, -7056632, 3289408, 4495220, -850404, 3704409, -6845641, 7917236, -3062849, 3115462, -7206419, -2911451, 5234492, 9649181, 3543885, 1804960, -6345814, -2427730, 1755031, -4801774, -5713917, --1352378, 11399380, 13202193, 2533494, 3109020, -3763465, -1669132, 7383049, 1443109, 3234647, --442919, 2249489, 1981591, -972810, 1691143, -1076963, 1275605, 892816, 4665945, 3797288, --5851356, 5219996, -1709397, 2685965, -1840930, 1975148, -1553168, -2173254, -38118, -3471407, -548145, 2546916, 581431, 1315334, -1231582, -1532230, -788663, 639413, 111669, 584116, --222801, 406411, -979789, 369904, 376883, 1855963, 111669, 1265405, -592169, 1133871, -5567888, 156766, 695785, 7811472, -6576132, -7741679, 12072079, -3124052, -1929514, 7894687, -4726612, 586800, -13843753, 14963129, -2735894, -1886028, -1567126, -810138, 599148, 929860, -4682588, 6984154, 4602595, -995359, 7835094, 4974109, 2521683, 2114735, -2874407, 3582540, --5622112, 4503810, -852014, 1891396, -4757750, -6914361, 896574, -865436, 2548526, 4188667, --2048699, -6616397, -3858491, 1644973, -7945153, 5157182, 1609002, -12670154, 5743445, 892816, -3290482, 839129, 1985349, 2172180, -504122, -3558917, -3091840, -8637716, -6345814, -3512747, --4405563, -952946, 533650, -6314676, -8951249, -1313186, 5851893, 10077067, -493384, -6665789, -1132261, -10496900, 743029, -689342, -4118337, 8909910, 8370892, 2842195, -300648, -2114198, --610959, -4631586, 2215666, 8547522, 4575214, 7070590, 1442572, -3175592, 3295314, 1737314, --215822, 709743, 404801, 243739, 1541893, 1604170, 1529545, -438624, 2669322, 754841, -5250061, 2080375, 1421097, 285078, 468151, 1418950, -358093, 2492692, 921271, 989453, --1381369, 3091303, 779000, -1047972, -439697, -13585518, 7031399, -2587718, -4828617, -3828427, --4618701, -6455336, 12463995, -15857019, 3750043, 3840238, 5199595, 7758859, 1282585, 2160369, -2928631, 2106145, 1625108, 2632815, 6831683, 1237488, -3745748, -1611, -649077, -4878546, --4407710, 2266669, 4581120, 4923643, 677531, 3511673, -8254391, -956704, -107374, -450972, --7821136, -4687957, -2809446, 5122822, 4604742, -78383, -8560944, 49392, -4632122, -3321084, --1674500, -2305324, 5394479, 7326678, 2234994, 7621420, -12183748, -8519068, 4067334, 2490007, -425202, 1612760, 808528, -3954054, -7659538, -5300527, 4076998, -3435437, 6228777, 6121939, --2220498, 5800890, -9220221, -4565550, -2586107, -3115999, 686121, 16811038, -2405719, 4753455, --2671470, -2435247, -1701344, 3566434, 3836480, -447213, 3099356, 2108292, -5232881, 1444183, -413391, 2248952, 500901, 273804, -2632278, 1692217, -97711, 1714766, 561567, 886374, --476741, -1006096, 514322, -1534377, -2194728, 747324, -1195612, -1899986, -548145, 565325, -762894, 746787, 836445, -113280, 604517, 1187022, 1006633, 330712, 303869, -397284, --623307, 1107028, 13911936, -2665564, 388158, 5863704, -13227426, 9106404, 4622459, -7451769, -8289287, 9273371, 3118683, -14281840, 8843338, 392990, -1339493, 7242926, 7823283, -434865, --2299418, 236760, -5537824, 5198521, -3024194, -5275831, -11108933, 2605435, -12075301, 3253438, --2953327, -1342714, 3492882, -9837086, -4037269, 8195335, -707059, -3812857, 5018133, 341987, --4289062, 3717294, 1352378, 373662, -1834488, 2837363, -5986111, -619012, -8745627, 8291971, -8288750, -10299332, 6897718, -7344931, -2768643, 7128035, 9961640, -712428, -4951024, 3019362, --617938, 1445257, -12159052, -9609989, 1928977, 1736777, -2623151, -2490544, 3163780, -365072, --4304631, 5153961, -4963372, 1752884, 3729642, -841814, 5844914, -5840082, 5910412, -30602, -9398999, -3211025, 2858838, 5311801, 607738, -3357054, -950798, -339302, 2762201, -909996, --4411469, 3735548, 817118, -1843615, 1654099, -1236951, -48318, -1729798, -490700, 1282585, --1472637, 963146, 2582886, -1325534, 634581, 188442, -845572, 1639067, 443992, 1396401, --2067490, 853088, -2116882, -2420751, 912681, -377957, 995896, 1034013, 315143, 3847217, -1676111, -5063767, 9760850, -3343632, 4748623, -9858561, -700080, -2603824, -8950175, 309775, -6319508, 11232950, 14697378, -8374113, -236223, -10437307, -782221, -6648073, 5931887, -6225018, --12307766, 794569, -7888781, -741419, 10202158, -6052146, -6037651, 10947872, 336618, 1879048, --1147293, -6441914, 2732673, 2333778, 13194140, -9108552, 6469832, -7725573, 1923072, 2559264, --7622493, -4694936, 12669617, 3462281, -9428527, -2437394, -3451543, -7570954, -321586, 12418361, -6651294, 8640400, 1973001, 3452617, -11339787, -1643899, 14414447, 1138166, -8963060, 4790499, -4763656, -6579890, -5729487, -3173981, -14814416, -2288681, 4395362, 7313793, 13001403, -3263638, --7117835, -2062658, -4431870, 10553808, -3931506, -9222369, -6285148, -2727841, -1262184, -2860985, --5332202, 11490111, -6592238, -805306, 1057099, 544924, 3748970, 2335389, -3390340, -4552129, -3411815, 4096862, 4333085, -998043, 1957968, -1207423, -721018, 1933809, -430570, -2021856, -2039573, 952409, -63351, -1326071, -446677, -3365644, 308701, -839666, -2893734, -1481227, -1309428, 1138166, 49392, 1337346, 6324340, -21955872, -15133854, -9700721, 1158031, -18396418, -2749316, 13674639, 4524748, 14079977, -7555921, -3484829, -1529545, -7318625, -2739116, -10986526, -19526532, 11148124, 7784628, -16497506, -3189013, -5310190, -10734197, 3711926, -1130113, 3480534, --13332652, -918049, -1195075, -9575630, 5569499, 1584306, 9784472, 3934727, -8182987, 12890271, --6096169, 5230734, 2714956, -110059, 10201084, 9479530, 2391760, -12303471, 15006079, -7598871, -10759430, 4903242, -5568425, -6194954, 12065100, 1768453, -1406602, 3138547, -10192494, -3656091, -5877126, -855772, 10669236, -6171331, -9647033, 3951370, 2729452, 324807, 10610717, 4569845, -2157147, -6773701, 7721815, 3024731, -5919539, -818191, -635655, -3406983, -2476049, -2873870, -4644471, 11650636, 19640348, 9123584, -3313567, 992674, -4509179, 4514548, 6043019, -100395, --5018670, -2956011, -6550899, 4035659, -3579318, 954557, -3095061, -852551, 4357781, -522912, -471910, -3992172, 4261682, -2254858, -1912871, 2335389, -3920232, 4289599, -3003793, 2294050, --2123325, -406411, 961536, -2930778, -2081449, -1288490, -4769025, -4794794, -2102923, -257161, --1690070, 3787088, 3499862, 2041183, -13863081, 18636400, 7727720, 21311090, -9553618, -11442867, -20308216, 690416, -2091649, 4455492, 1562831, 11891691, 15843597, 2071785, -14704894, -23554674, -3315715, -6497212, 1448478, 673773, -10188199, -645319, 12846247, 10502806, 8264591, 16534550, --3720516, 14011257, -9824201, 12409234, 4094178, 9616432, -6427956, 16935056, 9759239, 12368432, --19602768, -86436, 17861696, 10169946, 3257196, -4225174, 26861800, 11340861, -10508711, -6479495, -6564858, -10231686, -978179, -4907000, 1403381, 22551800, 23629836, 17156246, 6317360, 207232, -8908836, -7827041, -1959042, 9683004, -10001368, 23880018, 14904073, 11725798, 4639639, -908922, --11250130, 14183056, 536871, 12373264, -5500780, 4814659, -7931731, -4548907, -180926, 6246493, --9333501, 22233972, 9601936, -2432025, -10865194, -20928838, 10329933, 1848447, -6784975, -627602, -2621541, -4879083, 3070365, 8098698, -1371705, -2765422, 281320, -1697586, -2056216, 1842541, --2500745, -1837709, -3437048, 3639448, 2094333, -5244692, 2986076, 3390877, 3300146, -93952, --1529545, -579284, -13422, 1761474, -423054, 1305133, -3089155, 5142150, -6415608, 118112, -2246268, 5763309, 22985592, -1382980, -11419244, -5169530, -8962523, -380641, -14354318, 3673808, --12376485, 6943352, 1541893, -3366718, -9752260, -11631308, -17627620, -18267570, -5462125, 15778099, --1233729, -10353019, 4206384, -9874130, 7495792, -8441221, 14761266, -15257334, 3504157, -10833518, --11105712, -2067490, 1824287, -3263102, 6937983, -21942988, 8763881, 2070174, -5335960, -1557463, --1512902, -10881837, -17440788, -18671296, 13342853, 6584185, -7346005, 11558294, 308701, -4884452, --13771276, -28849832, -23783918, 13390097, -4212826, 257698, -2918430, -1400159, -1444183, -19556596, -7346542, -23095112, -12368432, 1009854, -798864, -4977330, -3175592, -3120294, 23695334, -7406671, --7831873, -6501507, 24793236, -4540318, -10074383, 15708306, -12453258, -7923141, -10279467, -8645769, --32168768, 6367826, 5046587, -10810970, -1654099, 7436199, -4282620, -2950643, -6079526, -5548561, --877247, -2935610, -2946885, 11129334, -1032403, -1272384, 7378754, 8839043, -4516158, -3297998, --845572, -1641214, 2156074, -5505075, 497142, 562104, 892816, -3300682, -4113505, -1704565, -3524558, -1553704, -3094524, -473520, 2182380, -7076496, -1242319, 3910031, 122943, -2856690, -3628174, -2500745, 3198677, -73551, 3049964, 3342022, 3337727, -6189585, -769336, -33990908, --25667262, -14683419, 29677150, -1512365, -4947266, -3626563, -2340757, -9780714, 10502806, 8119099, -26560614, -24512988, -4779225, 7548405, -17931488, -7176354, -6344741, 30595200, -448824, 7052337, -15573551, 1408749, 14988362, -16185584, -20344186, -13614509, -3745212, -3461207, 2427194, 9560060, --471373, -17136920, -11825119, -878321, -9149891, -19225348, 17157320, -2869575, -9590662, -122407, -5507759, 5449777, 3203509, -8688719, 1748052, -17877802, -7829189, -26512834, 12455405, 8008504, --3138547, -8325257, 9796284, -13210783, -3379066, 28600188, -3016141, 24238112, 10838350, 6498286, --6352257, -30443802, -12666932, -5856725, -16396038, -12256226, -7819525, 13625784, -6236830, 310311, --12241731, 25958246, -9290551, 10707353, 7254737, -17711908, -7137162, 3905736, 16402480, 29967060, -24919400, 10801843, -1713692, 10289131, 62814, 894964, -5891622, 3027952, -6090801, -4224637, --128312, 1764695, -3685619, -4868346, -8796630, -6991670, 3709241, 2881386, 3018288, -3233574, --1381906, -17439714, -366146, -8042327, -3817152, 3159485, 2379412, 1008780, 7166153, 179315, --1065152, 719407, -2959233, -12653511, -1253057, -7191923, 3546032, -6381785, -7010461, 813359, -8007430, 3682398, -2370285, -4725538, -4450123, -2076617, 4260608, 1140314, -2036351, 17648558, --816581, -9993852, 10902238, 6263673, 36871756, 1315334, 459025, 13032541, -16555488, -11409581, --3237869, 3083250, 6025302, -4408784, 15650324, -9507984, 2243047, 14710800, 6676527, 5492190, -5515275, -10758356, 2136209, -260919, -5199595, 2311229, -7755101, -13898514, -7192997, 1175210, --13651017, 17860084, -1189169, 1857037, -2328946, 12319577, 13922136, -2525441, -10072772, -849867, --3129421, 16375637, 21027624, -14769319, -10083509, -7419019, 5361730, 15625091, -13748727, 4743255, --469225, 3365107, -7079180, -9561134, 3177202, 10350871, 2052458, -12539157, 11608760, 33770256, --10740639, 6389301, -2383707, 2731062, 13145821, 3808026, 15471009, 12942884, -3218004, 19767050, -35836132, 1588601, -13042205, 35084516, -550293, 33554968, -11414412, -16199006, 15552077, 6096706, -23467702, -3631395, 32990718, 10536629, 7754564, -9669045, 15695421, 1983201, 1692754, 3828963, -12839805, 2850785, 14643691, 1948305, 3732864, 684510, 2311766, 2513630, 4764730, -1279900, -5325223, 12412455, 5245766, 5791227, 1861332, 3481071, -6669011, 6177237, 2431488, 2942590, -4522064, 2542084, -299574, 129923, 3558381, -3207267, 1319092, 386010, 3180960, 8944806, -3269544, -55835, -4280472, 4828617, 929324, 1344325, -689879, 4725001, 2753074, 6876780, --23116588, -7454453, 36093296, 6043556, -16664473, 4976794, -12622909, 4685810, 6926172, -2918967, --19084688, -7168301, -28534152, 11859478, 9797357, -10956462, 10626823, 16592532, 3415036, -4432943, --16665010, 3822521, 26675506, -12738336, 16011101, 15308337, 2420214, 11522860, 10663330, 523449, -13297756, 8894340, -25397216, -3570192, -10232760, 25987774, 17220672, -18076444, 11144903, -2051384, -13707925, 43316892, -4086125, -7289633, 4334159, 38989712, 16004122, -2363843, 4991826, 7090454, -22498112, 19879794, -13566191, 23858544, 10939819, 22119618, -15631533, 2405719, 4443144, 4733054, -13667660, 20301236, -13180181, -10455024, 16068010, 8055211, -5445482, -5709086, 65498, 24360518, --45873472, 10830297, -16303696, -12020540, 2222646, -15698642, -14595909, -2080375, -25079388, 18133888, --5322538, 19158238, -678605, 16761110, -11040750, 6754373, 418222, 5560372, -503048, -6436009, -5085242, 3590056, 4065187, 8187282, -3972845, 4152160, 5650030, -4677220, 453119, 7823820, -2914672, -4187593, 8728984, -5718212, 1190243, 4554813, -5578626, -4210142, 1800128, 1752884, -9735617, 8053064, 5786395, 2932389, -901943, 6283537, 1440425, 2772938, 2798708, 5215164, -6366216, -5247913, -4363687, -8493298, 6726993, 2653753, 575526, 2119030, -8945343, -8573292, -5996311, 7803956, 8240969, -10150618, -12122545, -31379032, 1490354, -17498770, 28650654, 3519189, --7358353, -4218195, 17222282, 4971425, 27927488, 11274289, -7162932, 1188632, 5954972, 12715788, -21030844, -23415088, -20223390, -4227322, 35321276, -10826539, 4575751, 10086731, 15521475, 18766860, -26868242, 23175106, 2115272, -5481989, 25099788, 1979980, -15862388, 8519068, -14710263, 10723460, -2747169, -13144747, 12145094, 47095392, 26295400, -16579111, -12502113, -1671279, -12972412, -12896713, --11101954, 8123394, -6288906, -10966662, 2531346, 12991202, 7820599, 4337380, 18571976, 5004711, --4394826, 19573776, 16529719, -14067629, 9663676, -15886010, -12367895, -14079977, 42950, -34074124, --10021232, 23790898, 17604534, -8076149, 11847667, -2821257, 925565, -20925618, 4795868, 12627741, -20064476, 11279658, 13316009, 7299834, 6415608, -8907762, -7807714, -9477382, 5419175, -2021319, -824634, 4080756, 4255776, -404801, 10407780, -3223910, -4489852, -4910758, 7318088, -9469866, --3794604, -11687143, -581431, 2321430, -5009543, 471910, -2754685, 7320772, -1365263, -15424301, -271657, -1051193, 4636417, 6045704, 1990181, 6868190, -403190, 11162620, 2312303, -881542, --271657, 1218160, 497679, 566936, -12811351, 10594074, 8552354, -16271484, -6954089, -35381940, --2815351, 29511794, 370978, -21618718, 3502009, 1017370, -14508936, 19673634, 11391327, -7901666, -5618891, 8919036, 12164421, 6753836, 2124398, -8730058, 4780836, 7004018, 18821084, 28102508, --7698192, -18912352, -9944460, 5363878, 5866389, 23128398, -8826158, -18111340, -14097156, -14490683, -27994596, 51287816, 18640158, 2574833, 56273736, 3384971, 23337778, 13311714, -4723927, -11795054, -10011569, -15969762, -10636487, 11405823, 776852, -33896956, -35102768, -8781598, 14674830, -18315352, --22969486, -12648142, -17004312, -14001057, 11871290, -9750113, -26046292, 11716671, 1035624, -7593502, -6102075, -5869610, 13142600, 52789444, -32331440, 26613228, -36761160, -20846160, -12183748, -8318278, -20445118, 8260833, 9806484, -3970697, 11360725, 23691576, 5929203, 555661, 310848, -6872485, -3260954, 6496138, 18983756, -1140314, -9403831, -1403381, 14501957, 9322227, -4096325, 5500780, -6582575, -5232881, -179852, -2237678, 18197776, 6594923, 8628589, 6405944, 5207648, -7491497, --5310190, -1177358, 4671851, -9167071, 1349157, -9040906, -6237367, 1475858, 969589, -10391137, -10198400, 13934485, -1363652, -1773285, 8476655, 125091, -3638911, 12335146, -5059472, 8560407, -798864, 28574418, 18377628, 16569447, 24336358, -28398860, 10922639, -29744796, -1192390, 38876432, -34575024, 14739254, 537408, 6727530, 4393215, -11148124, 9010841, 11194295, -48985176, 3003793, -7202660, 14897631, -17949742, -27581744, 20234128, 9573482, 5149666, -11788611, 23999740, -3370476, -18656802, 15502684, -1846836, 2368675, -5418101, 18894098, -11207180, 5769752, 11369852, -987843, -24146306, 13981729, -1348083, 12389907, 14078903, -722628, -10893648, -36741836, -6771553, 3929358, --21755620, 2109366, 17369922, -33387466, -14810121, 5129265, -14348412, -2317672, 17631378, 1030255, --12459163, -16262357, 7253663, 7070590, -33750928, -11247982, -2792803, 149787, 21216064, 10399190, -2383170, 37056440, -4655745, -1190780, 1475858, -21121576, 20029580, 181462, 32861868, -12722767, --5477694, 9893994, 4978404, -27987618, 928787, -3853660, -11184632, -9036611, 3519189, 1174674, --7884486, -687732, -4890357, -3447248, 1039382, -11963095, 3476776, 1661616, -1653026, 4600447, -1282585, -7890392, 1636919, 2281702, 2127620, -7632694, 11203959, 2215666, 14570677, -10706817, -1384590, -9018894, -3159485, -1643899, -16069083, 3443490, 1529545, -654983, -2144263, -2889976, -6001680, -7237020, -5561446, 7028714, 9413495, -9306120, -34672196, -30218854, 5537824, -15552613, --4867272, -23284628, -29007136, -30520038, -20055350, 21777632, 29727080, 802085, -24465208, 1948305, -1151051, 338766, 11307575, 18978386, 18977850, 484258, -12284143, -30447560, -17454210, -26650808, --5710696, 129386, 2263448, 2767570, 3765076, 7360500, 9536975, 17961554, -28161564, 12382928, -4939750, 6234145, 15130096, 26743688, 30026116, -17275970, 13389024, -23884314, -7450695, -21671868, --2100776, -8441758, 49908056, 17711908, 35957468, 1521492, -19269370, -8278013, 23032298, 24921010, --14629732, 46033460, -19270444, 2874944, 2036351, 7997229, 16919486, 51208360, -3571802, 12540768, -28525026, 6512781, -22582938, 14358613, 52405044, -9562745, -12668006, -30902290, -2564632, 19328964, -11941083, 1621887, -29656750, -22476100, 3786014, -23453742, 7074348, 1037772, -29524142, -3348464, -3052111, -4644471, 21343304, 20033874, 455803, -5850819, -12712029, 13868449, -5871221, 24102820, --5483600, 311922, 16525424, 16571594, 23598698, 18216566, -13297219, -5221070, 3192235, -4408784, -1627256, -10151155, -9737765, -9885941, 5184563, -12106976, -14077829, 8361228, 10950556, 983011, --12087649, 7705708, 4326643, -2988224, -3051038, -8247411, -127238, 4702989, -2042794, -7374459, --9552544, -1832877, -6256157, 7879118, 4478041, -4090420, -5290326, 10084046, 46531140, -2442226, --289373, 19723026, 3806952, -64277408, -20220706, 45590004, 15151571, -13423383, -25621090, -3629784, --16936666, 23490250, 12192875, 4380330, -13588740, -30449170, 6495065, -52421688, -6430640, 25578140, -34936336, -4077535, -29721710, -20264192, -61336964, 17956184, -10675141, 23969676, 18116708, -17464410, --12711493, -54444080, -40893996, 21233782, 57941256, 23106924, 27504970, -19352586, -34490736, -33111514, --13894219, 49228916, 66342212, 34572340, -77173048, -28325846, -59144384, -31654982, 73260328, 17821966, -16225850, -9776419, -70604432, -57835492, -58016420, -10827613, 5598490, 36506148, -13593571, 27760522, --55994564, 34754340, 13900662, 4199941, 70351024, 4476430, -6523519, -3409130, -95494304, -29213294, --6505802, 30029338, 15663209, 13705778, 42119132, -45089104, 2886218, -29850560, 32491428, 23439784, -2236067, 6451041, 6909529, -5360119, 19319836, 10322417, 5125507, 16422344, -11236708, -21021718, -5091147, 15018964, 22858352, 18806588, 12429635, -15793132, -25545928, -35830228, -3204046, 2521683, -28958280, 35851704, -5405217, -27370752, -46979964, -22594750, 3350611, 35866736, 57643292, 14977088, --56385940, -57922464, -59074052, -694174, 48194900, 42381664, 44775036, -15087146, -21800180, -42074036, --42408508, 15494631, 28681792, 37330244, 18991272, -29693256, -27988692, -15897821, -4413079, 34633544, -18415210, 5669894, -1547799, -21342766, -15317464, -3241627, 4268661, -27590334, 52947284, 22723598, -24268712, -65591668, 13151727, -91370064, -20199768, -275415, 12898324, 5230734, -58566176, 31687194, --16267726, -10576894, -11059541, -12491912, -14395657, -18146774, 38287484, -11010149, -32992866, 10472204, --9380209, 3986267, 18432926, -37246492, -13370233, -2342368, 15544560, 1551557, 42121820, -3636764, --24188718, 55632176, -47182364, 27488328, -43759812, -14509473, 21266530, -35556424, 2542084, 25681220, --13485124, -3121368, -2696703, 33083060, 50514720, 29196650, -17063906, -7064685, -7953206, 3144990, -16195248, -6765647, -10105521, 9770514, 5165772, -91743720, -3737159, -3461207, 13299903, 11322608, -554588, 75162, 26038240, -28933048, -7458748, -2891050, 19834158, -73680704, -10360535, 66432408, --17089138, -26920318, -282931, 50247360, -9307194, -12144557, 13672492, -19918984, -20783884, 30992484, -48118128, -17555142, -24507084, 8184060, 14406931, -7755101, -25831544, -676457, 3715147, -5383205, --3782793, -8211441, -11259257, 5135171, 344134, -10475962, -1881196, -555661, -393526, -9674951, -5466420, -12903155, -13511430, -8078297, -8258685, 12321187, -1826435, -2823404, -294205, -7321846, -10328323, -13712220, 3901978, 180926, 978179, 9162239, -433792, -16449725, 1874216, -4510253, -3062312, 1992328, -14595909, 22780506, -6041945, -2416993, -2188286, 1868311, 5859409, -785979, --5348845, -12221866, -22310744, -67123360, -55140936, 48186848, 41077604, 3758633, 43885440, -48110612, --2922725, -92759480, -33041720, -16550120, 44715980, 40695888, 24888798, -37435472, -12973486, -1791001, --17926120, 8642011, 16079821, 20918102, 27991912, -21612812, 15625628, -40227736, -25500832, -6499896, --8668318, 911070, 26381300, -31792958, 27180700, -12379169, -17719962, -7145752, 2434710, -39873404, --1010928, -36114232, -13558138, -14119705, -34313032, 46849504, 21456046, 10524817, 11365020, -9241159, --48062296, -71184248, -41641320, -41924248, 28233504, 6635188, 30441654, 42484744, 35006668, -11643119, -8310225, -24672440, -18966576, -22550188, 17466558, -23891292, -1251446, -22807350, -23567560, -14883135, -27558658, -22415434, -6392522, 2116882, -3293166, -32270774, -34713000, -21106544, -12514461, -46750184, --27857694, 6926709, 27963458, 29180544, 37263136, -2567317, -30575872, -39592620, -30466888, 15353434, -4851166, -5023501, 18084496, 45932528, 12128988, 12159052, -11754252, -8871792, -15262703, -9385040, --4985384, -14805289, -3491272, 17342542, -3850975, -7866233, -14292577, -15906948, -17867600, -5431523, -8586176, -4911832, 3638911, 1998770, -32106492, 3314104, -15338939, 13255343, 25695178, -13129715, -17736604, -2423435, 4291209, 441308, -25391310, -4197257, -8295730, -6752226, 23113366, -14740328, --99975568, -135506752, -128042104, -121785944, -146004736, -24419574, -40365712, 25920128, 41320268, 130760816, -84006872, 110859552, 152775200, 167980464, 114683680, 145937088, 83072720, 38725572, -5827197, -27396522, --37221796, -61609696, -60469920, -83566104, -35329328, -30740154, -78617232, -58704688, -56209848, -63931660, --104020888, -70853000, -54539104, -43803296, -80052288, -11157251, -23970212, -33285460, -77518792, -71603544, --59025200, -50471236, -36640904, -14903537, -49276160, 14271103, 25593174, -38579544, 43280924, 60108604, -57759256, 104812768, 85182088, 65615824, 72219872, 72659576, 72108208, 110221744, 124031680, 121886344, -83422760, 131459288, 129814312, 135242080, 137529152, 156161792, 138625440, 146378928, 194237216, 99092408, -100071664, 101423504, 94518808, -4447976, 43201464, 54335096, -31084288, -16762184, -53597432, -98354752, --89000848, -94003952, -169333920, -124311920, -75579616, -132449816, -140167872, -115754736, -123284352, -122127928, --146591536, -134413680, -135646880, -127032248, -118471304, -108113992, -100013144, -100224136, -83204792, -70188352, --110928264, -16963510, -49847392, -57363584, -12874164, -7123740, -56115360, -7131793, -21639656, -8070781, -20755430, 24841018, 65246996, 38691748, 54559508, 60465088, 65846680, 59726888, 83419536, 81347752, -86646136, 80821624, 97010424, 99584184, 97806072, 79061224, 102270152, 107405320, 83400752, 56191596, -54465016, 32988570, 28629178, 7789460, -3415573, -3235721, -17642116, -15925739, -12101607, -7037841, --15665893, -16919486, -15651935, -7326141, -15650861, -20058572, -11640435, -3979287, -13694503, -18891950, --15096273, -12797392, -20027432, -20374788, -15313169, -9833864, -8535174, -8010114, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +5248450, -212064, 2153926, 833761, -4591320, -3453691, 1197759, -3111704, -4616553, 2632278, +-546535, 686658, -2649995, 1946157, 187905, -4090956, -185757, 4719096, 3835406, -2937758, +-5174899, -4716948, 694174, -1088237, -924492, -4014721, 4366908, -1163399, 1230508, -1832340, +-1111323, -402653, 1656247, -1189706, -2298881, -8810589, 2995740, -671626, 2847027, 1686848, +1196685, -231391, 5872831, 1099512, 1173600, 815507, -3004867, -1925756, -278636, 427349, +-3008088, -716186, 1170916, -418222, -2842195, -1501091, 104690, 2775086, -4351876, -5907728, +-7315403, 2585570, 4191351, 419296, 3466576, 2538863, 486942, -6710887, -174483, -1759863, +-2352568, 111132, 374736, 2773475, -598611, 3949223, 2799782, -1256278, -4016331, -1959042, +-717260, 1020055, 307090, 1290638, 1504849, 2755759, -58519, -270046, -1300301, -1132261, +-1076426, -485331, -2240899, -1064615, -1267015, 690953, -148176, -288300, -688805, 1044214, +-1577327, 3165391, 4140349, -963683, -63351, -5941014, 5283884, -6803765, 2617246, 11435887, +-2460480, -4269735, 641024, 5961952, 625992, -1708860, -836982, -1722282, -1091995, -5389110, +-2103997, 2640331, -4280472, -2453500, 233539, -248571, 4711043, -2893197, 872952, -1126892, +1022739, -611496, -2765422, 5215701, 8880919, 2240899, -514859, -1677722, 9612137, 437550, +-4031364, 258772, -7182259, 16106, 3737159, -5516349, -707059, 1171989, -4405563, -1332514, +5059472, 712965, -550830, 4881231, -3259343, -5149666, 2903935, 1923072, -3597035, -1786706, +-3850438, -4512400, -4853850, -2688113, -2777770, 3924526, 2789581, 765041, -116501, -2731599, +2521683, -595390, -1866163, 3325379, 3674882, -2629594, -529355, -1245541, -1679869, 513249, +4211216, -2131915, 940061, 4015795, 2653216, -924492, 1015223, -704912, -114890, 1701344, +-245350, 25233, 1731409, -1856500, 748935, 380641, -597537, -1710471, 1306207, 149787, +-767189, 402116, 184684, -613107, 192200, -314069, -572304, -998580, 5847061, -8523899, +-5627481, -2029909, -1240172, 287763, 1096290, -8128226, 5644124, -2567854, 1844152, 1162862, +1878511, 3549254, -25770, -1177358, -2705293, 5849746, -462783, 3802120, 7225209, -1569274, +6143414, 5239323, -4543539, 3035468, 3072512, 3295314, -8017094, -798864, 478889, -2521683, +-5042829, 76236, 5883032, -1383516, -2520609, -1981054, 1799054, 5452998, 2693481, -2789581, +-46708, -2301029, 230854, -733903, -2719251, 5092221, -6585259, -5443334, -4998268, 1542967, +-703301, -182536, -6143951, -6489696, 1579474, -139586, 366146, -642635, -345745, -4845260, +-2866891, -5297306, 1036698, 4534412, -1415192, 4023311, 753230, 3576634, -7733089, 30065, +1116155, -2582886, -1167694, 1029718, -2756295, -341987, 2024540, 2184528, -1716376, -5175436, +4552666, 710817, 110595, -1146219, -661962, -4144644, 181999, 282394, -729608, 744103, +133144, -1464584, 623844, 667331, -418222, -599148, -206695, -250182, -280247, 224949, +2179696, 33286, -654983, 1801202, 804770, -145492, -601832, -181999, -2920578, 720481, +-586263, 5018670, 7982734, 506269, -3035468, -6788196, 3106335, 2015950, 1883880, 8456254, +-5528160, 195421, 1030255, -1532767, -2765422, 1250909, 533650, 5097590, 11246909, -989990, +1947231, 4702989, -2038499, 4195110, 7310571, -5100811, -189515, -1900523, -104690, 3261491, +-5692979, 6152541, 1373316, 72478, 3244848, -532576, 4492536, -2433636, -1032403, -1263257, +7056632, 3289408, 4495220, -850404, 3704409, -6845641, 7917236, -3062849, 3115462, -7206419, +2911451, 5234492, 9649181, 3543885, 1804960, -6345814, -2427730, 1755031, -4801774, -5713917, +-1352378, 11399380, 13202193, 2533494, 3109020, -3763465, -1669132, 7383049, 1443109, 3234647, +-442919, 2249489, 1981591, -972810, 1691143, -1076963, 1275605, 892816, 4665945, 3797288, +-5851356, 5219996, -1709397, 2685965, -1840930, 1975148, -1553168, -2173254, -38118, -3471407, +548145, 2546916, 581431, 1315334, -1231582, -1532230, -788663, 639413, 111669, 584116, +-222801, 406411, -979789, 369904, 376883, 1855963, 111669, 1265405, -592169, 1133871, +5567888, 156766, 695785, 7811472, -6576132, -7741679, 12072079, -3124052, -1929514, 7894687, +4726612, 586800, -13843753, 14963129, -2735894, -1886028, -1567126, -810138, 599148, 929860, +4682588, 6984154, 4602595, -995359, 7835094, 4974109, 2521683, 2114735, -2874407, 3582540, +-5622112, 4503810, -852014, 1891396, -4757750, -6914361, 896574, -865436, 2548526, 4188667, +-2048699, -6616397, -3858491, 1644973, -7945153, 5157182, 1609002, -12670154, 5743445, 892816, +3290482, 839129, 1985349, 2172180, -504122, -3558917, -3091840, -8637716, -6345814, -3512747, +-4405563, -952946, 533650, -6314676, -8951249, -1313186, 5851893, 10077067, -493384, -6665789, +1132261, -10496900, 743029, -689342, -4118337, 8909910, 8370892, 2842195, -300648, -2114198, +-610959, -4631586, 2215666, 8547522, 4575214, 7070590, 1442572, -3175592, 3295314, 1737314, +-215822, 709743, 404801, 243739, 1541893, 1604170, 1529545, -438624, 2669322, 754841, +5250061, 2080375, 1421097, 285078, 468151, 1418950, -358093, 2492692, 921271, 989453, +-1381369, 3091303, 779000, -1047972, -439697, -13585518, 7031399, -2587718, -4828617, -3828427, +-4618701, -6455336, 12463995, -15857019, 3750043, 3840238, 5199595, 7758859, 1282585, 2160369, +2928631, 2106145, 1625108, 2632815, 6831683, 1237488, -3745748, -1611, -649077, -4878546, +-4407710, 2266669, 4581120, 4923643, 677531, 3511673, -8254391, -956704, -107374, -450972, +-7821136, -4687957, -2809446, 5122822, 4604742, -78383, -8560944, 49392, -4632122, -3321084, +-1674500, -2305324, 5394479, 7326678, 2234994, 7621420, -12183748, -8519068, 4067334, 2490007, +425202, 1612760, 808528, -3954054, -7659538, -5300527, 4076998, -3435437, 6228777, 6121939, +-2220498, 5800890, -9220221, -4565550, -2586107, -3115999, 686121, 16811038, -2405719, 4753455, +-2671470, -2435247, -1701344, 3566434, 3836480, -447213, 3099356, 2108292, -5232881, 1444183, +413391, 2248952, 500901, 273804, -2632278, 1692217, -97711, 1714766, 561567, 886374, +-476741, -1006096, 514322, -1534377, -2194728, 747324, -1195612, -1899986, -548145, 565325, +762894, 746787, 836445, -113280, 604517, 1187022, 1006633, 330712, 303869, -397284, +-623307, 1107028, 13911936, -2665564, 388158, 5863704, -13227426, 9106404, 4622459, -7451769, +8289287, 9273371, 3118683, -14281840, 8843338, 392990, -1339493, 7242926, 7823283, -434865, +-2299418, 236760, -5537824, 5198521, -3024194, -5275831, -11108933, 2605435, -12075301, 3253438, +-2953327, -1342714, 3492882, -9837086, -4037269, 8195335, -707059, -3812857, 5018133, 341987, +-4289062, 3717294, 1352378, 373662, -1834488, 2837363, -5986111, -619012, -8745627, 8291971, +8288750, -10299332, 6897718, -7344931, -2768643, 7128035, 9961640, -712428, -4951024, 3019362, +-617938, 1445257, -12159052, -9609989, 1928977, 1736777, -2623151, -2490544, 3163780, -365072, +-4304631, 5153961, -4963372, 1752884, 3729642, -841814, 5844914, -5840082, 5910412, -30602, +9398999, -3211025, 2858838, 5311801, 607738, -3357054, -950798, -339302, 2762201, -909996, +-4411469, 3735548, 817118, -1843615, 1654099, -1236951, -48318, -1729798, -490700, 1282585, +-1472637, 963146, 2582886, -1325534, 634581, 188442, -845572, 1639067, 443992, 1396401, +-2067490, 853088, -2116882, -2420751, 912681, -377957, 995896, 1034013, 315143, 3847217, +1676111, -5063767, 9760850, -3343632, 4748623, -9858561, -700080, -2603824, -8950175, 309775, +6319508, 11232950, 14697378, -8374113, -236223, -10437307, -782221, -6648073, 5931887, -6225018, +-12307766, 794569, -7888781, -741419, 10202158, -6052146, -6037651, 10947872, 336618, 1879048, +-1147293, -6441914, 2732673, 2333778, 13194140, -9108552, 6469832, -7725573, 1923072, 2559264, +-7622493, -4694936, 12669617, 3462281, -9428527, -2437394, -3451543, -7570954, -321586, 12418361, +6651294, 8640400, 1973001, 3452617, -11339787, -1643899, 14414447, 1138166, -8963060, 4790499, +4763656, -6579890, -5729487, -3173981, -14814416, -2288681, 4395362, 7313793, 13001403, -3263638, +-7117835, -2062658, -4431870, 10553808, -3931506, -9222369, -6285148, -2727841, -1262184, -2860985, +-5332202, 11490111, -6592238, -805306, 1057099, 544924, 3748970, 2335389, -3390340, -4552129, +3411815, 4096862, 4333085, -998043, 1957968, -1207423, -721018, 1933809, -430570, -2021856, +2039573, 952409, -63351, -1326071, -446677, -3365644, 308701, -839666, -2893734, -1481227, +1309428, 1138166, 49392, 1337346, 6324340, -21955872, -15133854, -9700721, 1158031, -18396418, +2749316, 13674639, 4524748, 14079977, -7555921, -3484829, -1529545, -7318625, -2739116, -10986526, +19526532, 11148124, 7784628, -16497506, -3189013, -5310190, -10734197, 3711926, -1130113, 3480534, +-13332652, -918049, -1195075, -9575630, 5569499, 1584306, 9784472, 3934727, -8182987, 12890271, +-6096169, 5230734, 2714956, -110059, 10201084, 9479530, 2391760, -12303471, 15006079, -7598871, +10759430, 4903242, -5568425, -6194954, 12065100, 1768453, -1406602, 3138547, -10192494, -3656091, +5877126, -855772, 10669236, -6171331, -9647033, 3951370, 2729452, 324807, 10610717, 4569845, +2157147, -6773701, 7721815, 3024731, -5919539, -818191, -635655, -3406983, -2476049, -2873870, +4644471, 11650636, 19640348, 9123584, -3313567, 992674, -4509179, 4514548, 6043019, -100395, +-5018670, -2956011, -6550899, 4035659, -3579318, 954557, -3095061, -852551, 4357781, -522912, +471910, -3992172, 4261682, -2254858, -1912871, 2335389, -3920232, 4289599, -3003793, 2294050, +-2123325, -406411, 961536, -2930778, -2081449, -1288490, -4769025, -4794794, -2102923, -257161, +-1690070, 3787088, 3499862, 2041183, -13863081, 18636400, 7727720, 21311090, -9553618, -11442867, +20308216, 690416, -2091649, 4455492, 1562831, 11891691, 15843597, 2071785, -14704894, -23554674, +3315715, -6497212, 1448478, 673773, -10188199, -645319, 12846247, 10502806, 8264591, 16534550, +-3720516, 14011257, -9824201, 12409234, 4094178, 9616432, -6427956, 16935056, 9759239, 12368432, +-19602768, -86436, 17861696, 10169946, 3257196, -4225174, 26861800, 11340861, -10508711, -6479495, +6564858, -10231686, -978179, -4907000, 1403381, 22551800, 23629836, 17156246, 6317360, 207232, +8908836, -7827041, -1959042, 9683004, -10001368, 23880018, 14904073, 11725798, 4639639, -908922, +-11250130, 14183056, 536871, 12373264, -5500780, 4814659, -7931731, -4548907, -180926, 6246493, +-9333501, 22233972, 9601936, -2432025, -10865194, -20928838, 10329933, 1848447, -6784975, -627602, +2621541, -4879083, 3070365, 8098698, -1371705, -2765422, 281320, -1697586, -2056216, 1842541, +-2500745, -1837709, -3437048, 3639448, 2094333, -5244692, 2986076, 3390877, 3300146, -93952, +-1529545, -579284, -13422, 1761474, -423054, 1305133, -3089155, 5142150, -6415608, 118112, +2246268, 5763309, 22985592, -1382980, -11419244, -5169530, -8962523, -380641, -14354318, 3673808, +-12376485, 6943352, 1541893, -3366718, -9752260, -11631308, -17627620, -18267570, -5462125, 15778099, +-1233729, -10353019, 4206384, -9874130, 7495792, -8441221, 14761266, -15257334, 3504157, -10833518, +-11105712, -2067490, 1824287, -3263102, 6937983, -21942988, 8763881, 2070174, -5335960, -1557463, +-1512902, -10881837, -17440788, -18671296, 13342853, 6584185, -7346005, 11558294, 308701, -4884452, +-13771276, -28849832, -23783918, 13390097, -4212826, 257698, -2918430, -1400159, -1444183, -19556596, +7346542, -23095112, -12368432, 1009854, -798864, -4977330, -3175592, -3120294, 23695334, -7406671, +-7831873, -6501507, 24793236, -4540318, -10074383, 15708306, -12453258, -7923141, -10279467, -8645769, +-32168768, 6367826, 5046587, -10810970, -1654099, 7436199, -4282620, -2950643, -6079526, -5548561, +-877247, -2935610, -2946885, 11129334, -1032403, -1272384, 7378754, 8839043, -4516158, -3297998, +-845572, -1641214, 2156074, -5505075, 497142, 562104, 892816, -3300682, -4113505, -1704565, +3524558, -1553704, -3094524, -473520, 2182380, -7076496, -1242319, 3910031, 122943, -2856690, +3628174, -2500745, 3198677, -73551, 3049964, 3342022, 3337727, -6189585, -769336, -33990908, +-25667262, -14683419, 29677150, -1512365, -4947266, -3626563, -2340757, -9780714, 10502806, 8119099, +26560614, -24512988, -4779225, 7548405, -17931488, -7176354, -6344741, 30595200, -448824, 7052337, +15573551, 1408749, 14988362, -16185584, -20344186, -13614509, -3745212, -3461207, 2427194, 9560060, +-471373, -17136920, -11825119, -878321, -9149891, -19225348, 17157320, -2869575, -9590662, -122407, +5507759, 5449777, 3203509, -8688719, 1748052, -17877802, -7829189, -26512834, 12455405, 8008504, +-3138547, -8325257, 9796284, -13210783, -3379066, 28600188, -3016141, 24238112, 10838350, 6498286, +-6352257, -30443802, -12666932, -5856725, -16396038, -12256226, -7819525, 13625784, -6236830, 310311, +-12241731, 25958246, -9290551, 10707353, 7254737, -17711908, -7137162, 3905736, 16402480, 29967060, +24919400, 10801843, -1713692, 10289131, 62814, 894964, -5891622, 3027952, -6090801, -4224637, +-128312, 1764695, -3685619, -4868346, -8796630, -6991670, 3709241, 2881386, 3018288, -3233574, +-1381906, -17439714, -366146, -8042327, -3817152, 3159485, 2379412, 1008780, 7166153, 179315, +-1065152, 719407, -2959233, -12653511, -1253057, -7191923, 3546032, -6381785, -7010461, 813359, +8007430, 3682398, -2370285, -4725538, -4450123, -2076617, 4260608, 1140314, -2036351, 17648558, +-816581, -9993852, 10902238, 6263673, 36871756, 1315334, 459025, 13032541, -16555488, -11409581, +-3237869, 3083250, 6025302, -4408784, 15650324, -9507984, 2243047, 14710800, 6676527, 5492190, +5515275, -10758356, 2136209, -260919, -5199595, 2311229, -7755101, -13898514, -7192997, 1175210, +-13651017, 17860084, -1189169, 1857037, -2328946, 12319577, 13922136, -2525441, -10072772, -849867, +-3129421, 16375637, 21027624, -14769319, -10083509, -7419019, 5361730, 15625091, -13748727, 4743255, +-469225, 3365107, -7079180, -9561134, 3177202, 10350871, 2052458, -12539157, 11608760, 33770256, +-10740639, 6389301, -2383707, 2731062, 13145821, 3808026, 15471009, 12942884, -3218004, 19767050, +35836132, 1588601, -13042205, 35084516, -550293, 33554968, -11414412, -16199006, 15552077, 6096706, +23467702, -3631395, 32990718, 10536629, 7754564, -9669045, 15695421, 1983201, 1692754, 3828963, +12839805, 2850785, 14643691, 1948305, 3732864, 684510, 2311766, 2513630, 4764730, -1279900, +5325223, 12412455, 5245766, 5791227, 1861332, 3481071, -6669011, 6177237, 2431488, 2942590, +4522064, 2542084, -299574, 129923, 3558381, -3207267, 1319092, 386010, 3180960, 8944806, +3269544, -55835, -4280472, 4828617, 929324, 1344325, -689879, 4725001, 2753074, 6876780, +-23116588, -7454453, 36093296, 6043556, -16664473, 4976794, -12622909, 4685810, 6926172, -2918967, +-19084688, -7168301, -28534152, 11859478, 9797357, -10956462, 10626823, 16592532, 3415036, -4432943, +-16665010, 3822521, 26675506, -12738336, 16011101, 15308337, 2420214, 11522860, 10663330, 523449, +13297756, 8894340, -25397216, -3570192, -10232760, 25987774, 17220672, -18076444, 11144903, -2051384, +13707925, 43316892, -4086125, -7289633, 4334159, 38989712, 16004122, -2363843, 4991826, 7090454, +22498112, 19879794, -13566191, 23858544, 10939819, 22119618, -15631533, 2405719, 4443144, 4733054, +13667660, 20301236, -13180181, -10455024, 16068010, 8055211, -5445482, -5709086, 65498, 24360518, +-45873472, 10830297, -16303696, -12020540, 2222646, -15698642, -14595909, -2080375, -25079388, 18133888, +-5322538, 19158238, -678605, 16761110, -11040750, 6754373, 418222, 5560372, -503048, -6436009, +5085242, 3590056, 4065187, 8187282, -3972845, 4152160, 5650030, -4677220, 453119, 7823820, +2914672, -4187593, 8728984, -5718212, 1190243, 4554813, -5578626, -4210142, 1800128, 1752884, +9735617, 8053064, 5786395, 2932389, -901943, 6283537, 1440425, 2772938, 2798708, 5215164, +6366216, -5247913, -4363687, -8493298, 6726993, 2653753, 575526, 2119030, -8945343, -8573292, +5996311, 7803956, 8240969, -10150618, -12122545, -31379032, 1490354, -17498770, 28650654, 3519189, +-7358353, -4218195, 17222282, 4971425, 27927488, 11274289, -7162932, 1188632, 5954972, 12715788, +21030844, -23415088, -20223390, -4227322, 35321276, -10826539, 4575751, 10086731, 15521475, 18766860, +26868242, 23175106, 2115272, -5481989, 25099788, 1979980, -15862388, 8519068, -14710263, 10723460, +2747169, -13144747, 12145094, 47095392, 26295400, -16579111, -12502113, -1671279, -12972412, -12896713, +-11101954, 8123394, -6288906, -10966662, 2531346, 12991202, 7820599, 4337380, 18571976, 5004711, +-4394826, 19573776, 16529719, -14067629, 9663676, -15886010, -12367895, -14079977, 42950, -34074124, +-10021232, 23790898, 17604534, -8076149, 11847667, -2821257, 925565, -20925618, 4795868, 12627741, +20064476, 11279658, 13316009, 7299834, 6415608, -8907762, -7807714, -9477382, 5419175, -2021319, +824634, 4080756, 4255776, -404801, 10407780, -3223910, -4489852, -4910758, 7318088, -9469866, +-3794604, -11687143, -581431, 2321430, -5009543, 471910, -2754685, 7320772, -1365263, -15424301, +271657, -1051193, 4636417, 6045704, 1990181, 6868190, -403190, 11162620, 2312303, -881542, +-271657, 1218160, 497679, 566936, -12811351, 10594074, 8552354, -16271484, -6954089, -35381940, +-2815351, 29511794, 370978, -21618718, 3502009, 1017370, -14508936, 19673634, 11391327, -7901666, +5618891, 8919036, 12164421, 6753836, 2124398, -8730058, 4780836, 7004018, 18821084, 28102508, +-7698192, -18912352, -9944460, 5363878, 5866389, 23128398, -8826158, -18111340, -14097156, -14490683, +27994596, 51287816, 18640158, 2574833, 56273736, 3384971, 23337778, 13311714, -4723927, -11795054, +10011569, -15969762, -10636487, 11405823, 776852, -33896956, -35102768, -8781598, 14674830, -18315352, +-22969486, -12648142, -17004312, -14001057, 11871290, -9750113, -26046292, 11716671, 1035624, -7593502, +6102075, -5869610, 13142600, 52789444, -32331440, 26613228, -36761160, -20846160, -12183748, -8318278, +20445118, 8260833, 9806484, -3970697, 11360725, 23691576, 5929203, 555661, 310848, -6872485, +3260954, 6496138, 18983756, -1140314, -9403831, -1403381, 14501957, 9322227, -4096325, 5500780, +6582575, -5232881, -179852, -2237678, 18197776, 6594923, 8628589, 6405944, 5207648, -7491497, +-5310190, -1177358, 4671851, -9167071, 1349157, -9040906, -6237367, 1475858, 969589, -10391137, +10198400, 13934485, -1363652, -1773285, 8476655, 125091, -3638911, 12335146, -5059472, 8560407, +798864, 28574418, 18377628, 16569447, 24336358, -28398860, 10922639, -29744796, -1192390, 38876432, +34575024, 14739254, 537408, 6727530, 4393215, -11148124, 9010841, 11194295, -48985176, 3003793, +7202660, 14897631, -17949742, -27581744, 20234128, 9573482, 5149666, -11788611, 23999740, -3370476, +18656802, 15502684, -1846836, 2368675, -5418101, 18894098, -11207180, 5769752, 11369852, -987843, +24146306, 13981729, -1348083, 12389907, 14078903, -722628, -10893648, -36741836, -6771553, 3929358, +-21755620, 2109366, 17369922, -33387466, -14810121, 5129265, -14348412, -2317672, 17631378, 1030255, +-12459163, -16262357, 7253663, 7070590, -33750928, -11247982, -2792803, 149787, 21216064, 10399190, +2383170, 37056440, -4655745, -1190780, 1475858, -21121576, 20029580, 181462, 32861868, -12722767, +-5477694, 9893994, 4978404, -27987618, 928787, -3853660, -11184632, -9036611, 3519189, 1174674, +-7884486, -687732, -4890357, -3447248, 1039382, -11963095, 3476776, 1661616, -1653026, 4600447, +1282585, -7890392, 1636919, 2281702, 2127620, -7632694, 11203959, 2215666, 14570677, -10706817, +1384590, -9018894, -3159485, -1643899, -16069083, 3443490, 1529545, -654983, -2144263, -2889976, +6001680, -7237020, -5561446, 7028714, 9413495, -9306120, -34672196, -30218854, 5537824, -15552613, +-4867272, -23284628, -29007136, -30520038, -20055350, 21777632, 29727080, 802085, -24465208, 1948305, +1151051, 338766, 11307575, 18978386, 18977850, 484258, -12284143, -30447560, -17454210, -26650808, +-5710696, 129386, 2263448, 2767570, 3765076, 7360500, 9536975, 17961554, -28161564, 12382928, +4939750, 6234145, 15130096, 26743688, 30026116, -17275970, 13389024, -23884314, -7450695, -21671868, +-2100776, -8441758, 49908056, 17711908, 35957468, 1521492, -19269370, -8278013, 23032298, 24921010, +-14629732, 46033460, -19270444, 2874944, 2036351, 7997229, 16919486, 51208360, -3571802, 12540768, +28525026, 6512781, -22582938, 14358613, 52405044, -9562745, -12668006, -30902290, -2564632, 19328964, +11941083, 1621887, -29656750, -22476100, 3786014, -23453742, 7074348, 1037772, -29524142, -3348464, +3052111, -4644471, 21343304, 20033874, 455803, -5850819, -12712029, 13868449, -5871221, 24102820, +-5483600, 311922, 16525424, 16571594, 23598698, 18216566, -13297219, -5221070, 3192235, -4408784, +1627256, -10151155, -9737765, -9885941, 5184563, -12106976, -14077829, 8361228, 10950556, 983011, +-12087649, 7705708, 4326643, -2988224, -3051038, -8247411, -127238, 4702989, -2042794, -7374459, +-9552544, -1832877, -6256157, 7879118, 4478041, -4090420, -5290326, 10084046, 46531140, -2442226, +-289373, 19723026, 3806952, -64277408, -20220706, 45590004, 15151571, -13423383, -25621090, -3629784, +-16936666, 23490250, 12192875, 4380330, -13588740, -30449170, 6495065, -52421688, -6430640, 25578140, +34936336, -4077535, -29721710, -20264192, -61336964, 17956184, -10675141, 23969676, 18116708, -17464410, +-12711493, -54444080, -40893996, 21233782, 57941256, 23106924, 27504970, -19352586, -34490736, -33111514, +-13894219, 49228916, 66342212, 34572340, -77173048, -28325846, -59144384, -31654982, 73260328, 17821966, +16225850, -9776419, -70604432, -57835492, -58016420, -10827613, 5598490, 36506148, -13593571, 27760522, +-55994564, 34754340, 13900662, 4199941, 70351024, 4476430, -6523519, -3409130, -95494304, -29213294, +-6505802, 30029338, 15663209, 13705778, 42119132, -45089104, 2886218, -29850560, 32491428, 23439784, +2236067, 6451041, 6909529, -5360119, 19319836, 10322417, 5125507, 16422344, -11236708, -21021718, +5091147, 15018964, 22858352, 18806588, 12429635, -15793132, -25545928, -35830228, -3204046, 2521683, +28958280, 35851704, -5405217, -27370752, -46979964, -22594750, 3350611, 35866736, 57643292, 14977088, +-56385940, -57922464, -59074052, -694174, 48194900, 42381664, 44775036, -15087146, -21800180, -42074036, +-42408508, 15494631, 28681792, 37330244, 18991272, -29693256, -27988692, -15897821, -4413079, 34633544, +18415210, 5669894, -1547799, -21342766, -15317464, -3241627, 4268661, -27590334, 52947284, 22723598, +24268712, -65591668, 13151727, -91370064, -20199768, -275415, 12898324, 5230734, -58566176, 31687194, +-16267726, -10576894, -11059541, -12491912, -14395657, -18146774, 38287484, -11010149, -32992866, 10472204, +-9380209, 3986267, 18432926, -37246492, -13370233, -2342368, 15544560, 1551557, 42121820, -3636764, +-24188718, 55632176, -47182364, 27488328, -43759812, -14509473, 21266530, -35556424, 2542084, 25681220, +-13485124, -3121368, -2696703, 33083060, 50514720, 29196650, -17063906, -7064685, -7953206, 3144990, +16195248, -6765647, -10105521, 9770514, 5165772, -91743720, -3737159, -3461207, 13299903, 11322608, +554588, 75162, 26038240, -28933048, -7458748, -2891050, 19834158, -73680704, -10360535, 66432408, +-17089138, -26920318, -282931, 50247360, -9307194, -12144557, 13672492, -19918984, -20783884, 30992484, +48118128, -17555142, -24507084, 8184060, 14406931, -7755101, -25831544, -676457, 3715147, -5383205, +-3782793, -8211441, -11259257, 5135171, 344134, -10475962, -1881196, -555661, -393526, -9674951, +5466420, -12903155, -13511430, -8078297, -8258685, 12321187, -1826435, -2823404, -294205, -7321846, +10328323, -13712220, 3901978, 180926, 978179, 9162239, -433792, -16449725, 1874216, -4510253, +3062312, 1992328, -14595909, 22780506, -6041945, -2416993, -2188286, 1868311, 5859409, -785979, +-5348845, -12221866, -22310744, -67123360, -55140936, 48186848, 41077604, 3758633, 43885440, -48110612, +-2922725, -92759480, -33041720, -16550120, 44715980, 40695888, 24888798, -37435472, -12973486, -1791001, +-17926120, 8642011, 16079821, 20918102, 27991912, -21612812, 15625628, -40227736, -25500832, -6499896, +-8668318, 911070, 26381300, -31792958, 27180700, -12379169, -17719962, -7145752, 2434710, -39873404, +-1010928, -36114232, -13558138, -14119705, -34313032, 46849504, 21456046, 10524817, 11365020, -9241159, +-48062296, -71184248, -41641320, -41924248, 28233504, 6635188, 30441654, 42484744, 35006668, -11643119, +8310225, -24672440, -18966576, -22550188, 17466558, -23891292, -1251446, -22807350, -23567560, -14883135, +27558658, -22415434, -6392522, 2116882, -3293166, -32270774, -34713000, -21106544, -12514461, -46750184, +-27857694, 6926709, 27963458, 29180544, 37263136, -2567317, -30575872, -39592620, -30466888, 15353434, +4851166, -5023501, 18084496, 45932528, 12128988, 12159052, -11754252, -8871792, -15262703, -9385040, +-4985384, -14805289, -3491272, 17342542, -3850975, -7866233, -14292577, -15906948, -17867600, -5431523, +8586176, -4911832, 3638911, 1998770, -32106492, 3314104, -15338939, 13255343, 25695178, -13129715, +17736604, -2423435, 4291209, 441308, -25391310, -4197257, -8295730, -6752226, 23113366, -14740328, +-99975568, -135506752, -128042104, -121785944, -146004736, -24419574, -40365712, 25920128, 41320268, 130760816, +84006872, 110859552, 152775200, 167980464, 114683680, 145937088, 83072720, 38725572, -5827197, -27396522, +-37221796, -61609696, -60469920, -83566104, -35329328, -30740154, -78617232, -58704688, -56209848, -63931660, +-104020888, -70853000, -54539104, -43803296, -80052288, -11157251, -23970212, -33285460, -77518792, -71603544, +-59025200, -50471236, -36640904, -14903537, -49276160, 14271103, 25593174, -38579544, 43280924, 60108604, +57759256, 104812768, 85182088, 65615824, 72219872, 72659576, 72108208, 110221744, 124031680, 121886344, +83422760, 131459288, 129814312, 135242080, 137529152, 156161792, 138625440, 146378928, 194237216, 99092408, +100071664, 101423504, 94518808, -4447976, 43201464, 54335096, -31084288, -16762184, -53597432, -98354752, +-89000848, -94003952, -169333920, -124311920, -75579616, -132449816, -140167872, -115754736, -123284352, -122127928, +-146591536, -134413680, -135646880, -127032248, -118471304, -108113992, -100013144, -100224136, -83204792, -70188352, +-110928264, -16963510, -49847392, -57363584, -12874164, -7123740, -56115360, -7131793, -21639656, -8070781, +20755430, 24841018, 65246996, 38691748, 54559508, 60465088, 65846680, 59726888, 83419536, 81347752, +86646136, 80821624, 97010424, 99584184, 97806072, 79061224, 102270152, 107405320, 83400752, 56191596, +54465016, 32988570, 28629178, 7789460, -3415573, -3235721, -17642116, -15925739, -12101607, -7037841, +-15665893, -16919486, -15651935, -7326141, -15650861, -20058572, -11640435, -3979287, -13694503, -18891950, +-15096273, -12797392, -20027432, -20374788, -15313169, -9833864, -8535174, -8010114, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -6308233, -7975755, -615791, 3212099, 1615982, 3783329, -6770479, -3656628, 4343286, 2100239, 44023, --3766150, 767189, -10504416, -6765111, -368293, -4034048, -4562329, 1868311, 8203925, 1373316, -6246493, -1451699, 6172942, -3692061, -3295314, -415538, -5578626, 1102196, 2767570, -2019172, --139050, 1442572, 258235, 2510945, -303332, -5971079, 2130304, -3703336, -2793339, 1669669, --3680250, -5572720, 5533529, -5847061, 5265630, 4915590, 3234110, -272730, -6860674, -3997004, -763967, -1304060, 8812199, -5410585, 2136746, -708133, 1156957, -6687801, -11156714, -1979980, --3357054, -3733400, -887985, 4696547, -1032940, -5040144, 4397510, 1858647, -2246805, 3668439, --731755, 1089848, -5143224, -438624, -1293859, -99858, 1952063, -2366527, 1578401, -4711579, -3154654, -754841, 322123, -1735167, -1567126, -3221, 1910187, 681289, -82141, 715649, --49929, -2850248, 801548, 204011, 1761474, -312459, 46171, -34897, 26307, -207769, --1028645, 4281546, 4270271, 605054, 7701413, -87510, 3325379, 4138738, -50466, -3758633, -392990, -5340255, -6840273, -2596308, -7794829, -8045011, -2621004, 5288179, -1891933, -1832340, --4190814, -1060320, -7326678, 3579855, -2053531, 1808181, 4394826, 1490891, -1544578, 3022046, -2864206, -3575560, 2481417, 329639, 661425, 2679523, -6391985, -2757906, 4524211, -2902324, --213675, -1846299, 5021354, -6437619, -537945, -5391795, 3493419, -320512, -397821, 4871030, --2107755, -2340757, -1685775, -4552666, 323196, -2062121, -363998, 301185, 3096672, 3148211, -1058173, -1398549, -5376226, -8791798, -2727841, -610959, -2174864, 4725538, -1908576, -2710661, -3770445, -2429878, -3773129, 8343511, -1815161, -4667019, -421444, 766115, -1400159, 4115653, --535260, -3678640, 52613, 161598, -794569, -1108102, 3272228, 739271, 461172, -1952600, -406411, -594853, 220654, 1276679, -287226, 723702, 1518271, 191663, -308164, -327491, -643171, -1854889, -693637, -370978, -856309, 771484, 639413, -304406, 8938364, -5683316, --2679523, -4112431, 3321084, 643708, -398358, 6447820, 1553168, 1890323, -9341017, 1724966, --4353486, -5069672, -6584722, -105764, 245350, 7828115, -6387153, 2962454, -2673617, 9678709, --3480534, -3204046, 6894497, -2630668, 2386391, 1040993, -446677, 1139777, -4606353, 752156, -228707, 1954747, 9106404, 3171833, 861141, -3881577, 3194382, -7066295, -1949378, -1351841, -3883724, 3310883, 5507759, 3606162, -4107599, -6058588, -2631204, 4632122, -554588, 2405719, --960462, -666794, 9260486, 2183454, -687195, -11034845, -4908074, 289373, 3854733, 5907728, -8325257, 4656819, -1991254, 1492501, -2019708, -2821257, 5978595, -3754338, 6155225, 282931, --5525476, 2000918, -2838974, 4794257, -4096325, -468151, 4182225, 4782446, -4775467, -1836099, --884763, -1961190, 2897492, -642098, -2030983, 1330366, 712965, 732829, 826781, 1160715, -646929, 694711, 327491, -343061, -397821, -1772748, 2780455, -105227, 185757, 318364, -62814, 441308, 1494649, 1435593, -44560, -374199, 1858647, 1401233, 1119376, 4686883, --1122597, -785442, -1729798, -5486284, 213138, 3940096, 3925063, 7342247, 3365644, -9642202, --8054138, -6989523, 288837, -1184337, 511638, -3808026, -2365990, -592706, 2927020, -39728, --6177774, 6674916, -954020, -6202470, 1269700, 1464584, -127238, -595927, 2683281, 3534221, --2212445, 5401995, 267899, 3164854, -7368017, 5240934, 1864016, 3022046, -5071283, -557272, -3707094, 3172370, 8046085, -301185, -11112154, -3039763, -5323075, 2603287, 1799591, -461172, --2967286, 847719, -4557497, -1615445, -8298414, -4884989, -280247, 4619774, 5156108, -3724274, --3187940, -3263638, 5299453, -1810329, -653372, -7969849, 4801774, -7866233, -2732136, -343597, --1663763, -2138357, 8366060, -714575, -1945620, -2241973, 1659468, -5045513, 579821, -8748312, --7030862, 2559264, -2455111, -1308891, 3124589, -1586454, 4168803, 819265, 1914482, 2933463, --785442, 1415729, 956704, 539555, -617402, 1070521, 433255, 261993, -651761, -690953, -170188, -2565169, -48855, 1604707, 384400, -102005, 303869, -1575716, -509491, 957241, --471373, 2231236, -2899640, 4105989, -3301756, 3221, 5667210, 10318659, 7138773, 1532230, --8079371, -6062347, 2168422, -1387274, -5181341, -1701344, -6674379, -2870112, 13411035, 1549946, --1428614, -2498597, 8053, -3121368, -2158221, 9067213, -9409200, -1110249, 929324, -2013266, -2362232, 5484137, -2520072, -3098282, 1387274, -3854196, -3760244, -8749385, -3240553, 2356327, --7832410, -1313186, 3886946, 5900212, 2099702, -12286828, -3707094, 2468533, 6193343, -4820564, -10688026, -1246077, -5424544, -3026878, -2313914, -4224101, 5810017, -4345970, -1159104, -5739150, --4502200, -2107218, -4578435, 6142877, -2261300, -12317429, 4704063, 8262980, 110059, 2985539, --14969035, 11680700, 211527, -9816148, 989990, -6631430, -1406602, 1035087, -7124277, -8359617, -5550709, 2593087, -7238094, -498753, 179315, -4482872, -567473, -1660542, 1112397, -3979824, --2053531, -792958, -1982127, -1014149, -2925947, 950798, -199179, 1493575, -3181497, 738198, -1787243, -54761, -1811939, 1152662, -1759326, 1656247, 1351304, -1356673, 1317481, -260382, --936303, -446677, 453119, 625992, 374736, -11076721, 2500208, -8153459, 8719320, 2225867, --3313031, -6579353, -11533598, -5007932, -8348880, 2894271, 16143708, 2765422, -4180614, -230854, --2199023, -2468533, -7256347, -4764730, -7471096, 2047089, -548682, 1664300, -2604898, 1264331, --7895761, -520228, 1824824, -5355824, -1967095, 703301, -2918967, 801548, -2685965, 11941083, --14548128, -2567317, 1194538, 3944391, -1489817, -5955509, -8918500, -6308233, 4803384, -1247151, -5327370, -4505958, 13817447, 1838783, -2666101, -105227, -8190503, -10455561, -5286568, 4008815, --8941585, -509491, 10523207, -258772, -4970351, -9945534, -16865262, 736587, 8664023, -2360622, -9940702, -862215, -3107946, -6194954, -5508296, 1006096, 3949223, -3142842, 14412300, 4393215, --4625143, 2258079, -5920076, 2217277, 2725694, -1940252, 3124052, 5881421, 2482491, 311385, --3868155, -10549513, 712428, -2364916, -1067836, -1575179, 761820, 268972, -139050, -4640712, -738198, -2644626, 878858, -2604898, -879931, -650151, -244276, -199716, -512712, -1859721, --1702955, -2041183, -3062312, -3216931, -1364189, 205622, 856309, -1670205, -52613, 137976, -316217, -1261647, 9472014, -4160213, -10955925, -2996814, -8182987, -4258997, -3556233, 11605002, --2917894, -3884798, -4900558, 7461432, 6700149, 5923834, 16365436, 17153026, 7936563, 10664404, --4020626, -4928475, 7086159, 10523207, -4573604, 4629975, 3241090, -9128416, -8654896, 5113159, --1275068, -105227, -8637179, -10953777, -2616709, -8877697, 10049150, 18808198, 3875134, 7428683, -2153926, -2202245, 6709276, -12832825, -3439732, 2681133, 7149510, -4219269, -10378252, 15154792, --35433, -4641786, -3707631, 6224482, -1862942, 5550172, -3792456, 8704825, -733366, -217970, -10737418, 3348464, 4951561, 1939715, -1640141, 8032126, -12222940, -4892505, 4570919, 13835700, --8412230, -971200, -1716376, -1941862, -5764383, -1263794, -2990908, -3958349, -565862, 935229, -3908957, -1619740, 11101954, 4050154, -6370510, -1532767, 832150, 4242354, 1503239, -1922535, --3841848, -835371, 2456721, -2470143, -2161979, -1889786, 2280091, 1421634, 2252174, 1175210, --2040110, -807991, 71404, -2061047, -351114, 1615982, 1005559, -253940, -2287070, 3032247, --408559, 1887638, -1272384, 926102, -2657511, -257698, -383326, 128312, -1768453, 6856916, --6709813, -2596845, 6191196, -4805532, 2684892, 4668630, -9159555, -9773198, 2804614, 7516193, --2538863, 6862284, -4968741, -2184528, 13055090, -14771466, 8927626, -4192962, 117575, 416612, -16117939, -3563212, 3193308, 5140539, 8885750, 5209796, 7785702, -1273458, -1238561, 2557116, -1262720, 1312649, -7763691, 12103218, -16106664, -3531000, -4231617, 9021579, -1803886, 10990284, --492848, 1052267, -19167902, -5246303, 11704323, 19894826, -169114, -9849434, -8299488, 8180839, -6579353, 4954245, 4697621, -8441221, -3858491, -4880157, 2596308, 376347, -5183489, 3077344, -2684355, -2409477, -2647311, -11558294, -3037616, -4231080, 16557636, 1531156, 3133179, 6287296, -512175, -12936978, 661425, -7782481, 6482717, 15462956, -8174397, 4792110, -2340757, -8002598, -3893388, -6706055, -1146219, 2819109, 2094333, 3550864, 1509144, -545461, -2921652, 3359738, -7257958, 1231045, 3604551, 5970542, 2667712, 6748468, -2019172, 6383395, 335007, 162135, -1403381, 724776, 1845762, -183073, -3116536, -1730872, 149250, 1717450, 1809792, -1213865, -3101503, 2936147, -2449742, 4146791, 6984154, -12017855, -4626754, -4521527, 2284386, -693100, -17877264, -2247879, 620623, 11348914, -10126996, -7352984, -9495099, -9938017, -2417530, -366683, -4457103, 19123878, -1760937, -11010149, 19794430, 324270, 5528697, 13535589, 9321690, 12632036, --3320547, 9978820, -6461779, 13224204, 11546483, -3137474, 6007049, -5325223, -4962835, 4993437, -15115601, 6814503, 5961415, 2141578, -4854924, -8366597, -8539469, 1379221, 10380399, -6060199, --7320772, -8959302, -3432753, -17757006, -4198331, 3401077, -13081934, 6305549, 890132, -5954972, --15363098, -10247792, -24159, -20328618, 6328098, 4496831, -498216, 5660767, 3633006, -1986422, --10641318, -6418292, -1248225, -6712497, 6201396, -7034083, 16773458, -11337103, 537408, 7388418, -587337, -5070746, -19491636, 3381750, 9451612, 2302639, 485331, 10532870, 5738613, -6041409, --69793, -704912, 709207, -432181, -3439732, -6845641, -2128156, -7395397, 328028, 1847373, -814970, -1916629, -3913252, -1772748, -2645163, 3210488, 872415, 4201015, 2895882, 2412698, -824634, -347892, -1561221, -1301375, -3456912, 1542430, 107374, 1536525, -1733556, -223338, --2921115, 178778, -2313914, 865973, -24816858, 8718784, 11337640, 19942606, -54224, -14808510, -4185446, 7137699, -15328738, -15944529, -9960029, -391916, 8521752, -438087, -6238440, -324270, --5457293, -3677029, -9877351, 16510391, 12904766, 4857071, -20233054, -6063420, 3267933, -1149441, --4495220, 25629144, 9402757, 8055748, 7557532, 12167105, 9141838, 2226941, 9571335, -647466, --15891916, 8613557, -16347719, 5005248, -16183974, 13690745, -4265440, 16530255, -8998493, 4021163, --7274064, 5961952, 9687299, 25229174, 5353677, -32068910, -1677185, -4458176, 6910603, 14021458, --2813741, -6223945, 10324028, -1814624, -5033165, 13812078, 900869, -606664, 726923, 5918465, -11070815, 8751533, -9463960, -7050726, -5960341, -9623411, 2285996, -885837, 10947335, 7852811, --14702210, -3548717, -8303246, 7153805, -4025995, -3931506, 2611877, 483184, -5643050, 4872641, -1221918, 812823, -803159, 2771865, 2903935, 459562, -8303246, 2331630, 1494649, -1069984, --1431835, -2771865, 147103, -3709241, 1761474, 4185446, -1231582, -1243930, 4149475, 641024, --3785477, -2937221, -645856, 1998234, -1623498, -401579, -2309619, 628139, -1528472, 15569, -3993783, -2647847, 27016954, -10253698, -18022220, -5745056, 7026567, -4465156, 12978854, 18781356, --7568806, 17223892, 11082089, 8652212, -2857227, -2090039, -3482682, 16706349, 3048353, 2001455, --9742596, 4224101, -5095442, -439697, -16084653, 10880763, -14760192, 54224, -10413148, 17426830, --8921184, 375810, 17224430, 13085155, 8848170, -1067836, -6846715, 7995619, -257698, -1562294, --22011708, -6549289, -13297756, -10813117, -8434779, -3988414, 11436424, 7175817, 6667400, 13959, -16834662, -8933532, 17814450, 15653008, 16803522, 29389388, -11373073, -8885750, 12922483, 2419677, --11414949, 17727478, -5843303, -8580808, 5750425, -2209761, -6160594, -5094368, 7612293, -10305774, -4657355, -6391985, 16284905, -6949257, 243739, 4738960, 11870216, 16131897, 1279900, -14124000, --15340013, 4989679, -10226317, -32905892, -17328046, 5225902, -391379, 9489730, 1194001, -5414880, --648003, -3154117, 1372242, -5729487, -2536715, -3941169, -1676111, 423591, -739808, -10298258, --2730526, -6755447, -6077916, -4774393, 2052458, -505732, 379568, -7509214, -5254893, -311922, --329102, 1427003, 3811247, 3134789, 2304787, -5415417, 212064, 1192390, -7013145, 2415919, -355409, 2990908, 1319092, 3824669, 2116345, -1617592, 3204046, -2537789, -1927367, -25209848, --21310554, -1031866, 4474819, -14551349, 643171, 1285269, 23431194, -15287936, -17490718, 5665062, --7373385, -31139, -12781823, 12169790, -12986370, -17396766, -10528039, 20098836, -13717589, -11206107, --2587181, 8158291, -6017786, -14421963, 4466229, -5842766, 77309, 6558415, -19026706, -1436667, -10525354, 16924318, -2580202, 25871810, 11336029, -2952253, 1141388, 11764452, -4855461, -10524817, -1986959, 14013941, 1552631, 6726456, 304943, -11480984, 3957812, -25201258, 2283312, 1366873, --3220152, -14844481, -13484050, 1633698, -6156299, -10193031, -6835978, -8206609, 9634685, -16598975, --9483288, -4788352, 7210713, -9767829, 20340428, -3066607, -17114908, -1484985, -10193568, -27137750, --8126615, 1793149, -836982, -17631378, -9423695, -4027606, 4007205, -10480257, -5211406, 17388712, --6198712, -23741506, -8362302, 3069291, 1806571, 7797513, 6588480, 4918812, -5525476, -6900939, --1653562, -4823249, 3455301, 1039919, -3053185, 5076652, 2108829, 2982318, -2061047, 2442763, -1825898, -19327, -1019518, -1762547, -2211908, 38655, 1369021, -8443369, 1800665, -4860829, -5415954, 2003065, -6249715, -5532992, -490163, -4380867, -648540, 1775969, -1590212, -2959769, --4637491, -3525095, 2433099, 897111, -5251672, 1952600, 538482, -3496640, -2977486, 19248432, -17204028, 5158793, 35217660, -6540699, -12300786, -11020886, -5161477, -18969796, 25633438, -15352897, --5603859, -12435004, -6415608, -5843840, 3026341, -18039936, 283468, 211527, -2486786, 5132486, --19071266, -4840428, 13086228, -12982076, 716186, -16800838, 16135655, 104690, -28656022, -14860587, --5187247, -603980, 7971996, -17393544, -9757092, 11965242, -2040646, 8269960, 7597261, 7510824, --10441602, 1183264, 12680354, 4705674, -23655070, 15273441, 11016591, -12764106, 36339720, -617402, --26075820, 7263864, 8244190, -530965, 19396072, -5892159, -32395328, 9194451, 4650913, 9769440, -11504607, -14745696, 23447300, 8892730, 7295539, -5499169, 35505956, -2646774, 617402, 24308978, --4134443, 11135776, 19182934, 6660958, 2865817, -4513474, 9222905, 490700, 16219944, -7027640, -15788837, 14579803, 887985, 14429480, 8581345, 11520713, -5812702, 75162, 13104482, 9557913, -7041062, 4336307, 4486630, -8529268, -1010391, 544387, -4035122, 673236, -1462973, -3574487, -7594039, -7661685, -1475858, -7511361, 6618008, -3114925, 7930657, -6610492, 1105954, -4557497, --6675453, 4794257, -2546916, -12348, -6515466, -9514963, -7181186, 7651484, 716186, -2914135, -789200, 9490804, 6760816, -2643552, 3278671, 306553, -2617246, 9819369, 340376, 7093676, --25128244, -24663312, 50577000, 16311212, -31601296, -15896211, -14499273, -28941638, -2157147, -15278809, -21061982, -11921219, 97174, 26268020, 558346, 4354023, -19359566, 24217174, 18051748, -329639, --5851893, -1904818, -15052250, 1126355, 1905355, 3055869, -20681342, -3028489, -1202591, -6242198, --4609574, -14271639, 13496935, 26728118, 32125818, -2637647, -13020730, -5450851, -6660421, -4524748, --19725174, 6687801, 7701950, 7051263, -20554640, -27454504, 29648696, 11175505, 16603807, 21514564, -20195474, -8779987, -13811004, 19465328, -19835232, 10036802, -14845554, -11414412, -6622303, 23163296, --7687992, 4685273, 7973607, -4255776, -18752900, 38748660, -23443542, 2377801, 28094454, -25458418, --11499775, 2959233, 10284299, 28846074, 5186173, -16782584, 492848, 3486440, -3907883, -7067906, -4175782, -11766600, 9010841, -9747428, -13613973, 7318088, 4160213, 10355703, 4705137, -419833, --4702453, 1132798, 2941516, 3165928, 11152956, -684510, 1575179, 6864432, -16421807, 2323041, --7376607, 1762547, 1877438, -2705293, -6187974, -7769059, -1843078, -7797513, 3087008, 4159139, -9558450, -887985, -6316823, 6014028, 7421704, 4433480, 4558034, -11898670, 467078, 2932389, --2883534, 10137733, -3768834, 711354, 1141388, 9355513, -4432943, 2758980, 13125420, -8449811, -8221641, 33676840, 20285130, -3073049, -21614960, 2231236, 34534760, 27492086, 5767604, -27388470, --10566693, -23649700, -1791001, 18457622, 22807350, -1704565, 8651138, 27113054, 28856812, 44793288, -45090176, -22558242, 9788767, -24357296, -4429722, -19751480, -7115687, 15520401, -3511136, 6777996, -6083285, -14043469, -10296110, 11413339, 12728136, 16523813, 11735461, -589484, 12099460, 18241262, --9704479, 9222905, 10744934, 3178813, 10492605, 34927748, -26304528, -22648974, -5125507, 21570400, -20666308, -12330314, -191126, 33153926, 26804890, -18837726, -12577812, 11372000, -23002234, 6356015, --11088532, -20866024, 6694781, -24511378, 25392384, 9308805, 28131498, -11864847, -16517907, -31858994, --6930467, 10361609, -27929098, -23892366, -13107703, 12424804, 7332046, 5826660, -12331925, 5293011, --8841190, 3343632, 25854630, -11066520, 2987687, -14735496, 11067594, -6101001, -12400644, 8668855, -12032351, -6772627, -3541738, -4030827, 8619462, 19273666, -6257231, -13040058, 212064, -289910, --4886062, -2117956, -18084496, 2440078, -9648644, -4347044, 6440304, -5939940, -3289945, -597000, --5082557, 7871065, -8004746, -12548821, -11404749, -9603547, 10029822, 5257577, -2422899, 4405026, -2909840, -8164733, -8936753, 3203509, -15760919, 13298292, 33883532, -2178085, -10481331, 21760452, -4479114, -1242856, -32248226, 28342490, -13978508, -30634928, -10406706, 2087891, 35334160, 3398930, -25322590, 10278930, -29976188, -6503654, -26555782, 4279935, -26470420, -19022410, -11361799, 1349157, -5572720, -20504710, 20145008, -6482717, 12243878, 13173202, 13027173, 24449638, 44573708, 26169772, --8500814, -21907554, -762357, 46945604, 29241212, -15962783, 23367306, -8985072, 28542206, -14161044, -2775086, -10597295, -5262409, -1582159, -8015483, 70547520, -13414257, -19451370, -22500796, -31631360, --12173548, -24376086, -1084479, 27273580, -10853919, 8066486, -9073655, -13895293, 24799142, -6882685, -41775536, 7754564, 33416994, -40803264, 16816408, 71718976, 26097832, -39978628, 23815056, 21818434, -1321239, 4641786, -12250320, 13675176, 62954020, 33490008, 14135811, 19108310, -19680614, 36448704, --3800509, 5617817, 5792301, 9012989, 4237522, 23982560, -19786378, -4922570, 1739462, 30570504, --5140539, 7513509, 35401268, -2762738, -19672024, -4529580, 13030931, 2171643, -8307004, -19934016, -11632382, 8352101, -13719736, -8048232, 9549323, -16858820, -14020384, 4593468, 7055558, -30602, -4911832, 3347390, 5739687, -6158446, 6003291, -3737159, -5005248, 5542119, 2400350, 7657390, -1186485, 49008260, 22868016, 5441724, -1563905, -53556632, 24910810, 33598992, -24274618, -17652852, -41486700, 27067958, -33318746, -35330400, 1170379, -20656646, 8903467, 3405372, 8491150, -33199560, -8586713, -6458557, -16624745, 29488708, -2150168, -4909685, 9814000, 24734180, 22117470, 15212774, --28513214, 631360, -13975287, -30259118, 10910828, 8588861, 18523120, -6373732, -14250165, 38766376, --27950574, 12312061, 13313325, 10981695, 8167954, -4772783, 22741314, -21190832, -36839544, -6111739, --42180872, 36932960, 22488448, 36246840, -3105798, 7184407, -29407104, 30457224, 38131792, 13817984, --16499654, -42881492, -10088878, -56591024, 618475, -10476499, -38656852, -32530620, 14697378, 2467996, -23404350, -18202072, 26858042, 22893786, -32408750, 6905234, -19468550, -5340255, -29316910, 3792456, -84306984, 21201032, 24536612, 31092878, 13538811, -23898808, -3591667, -233002, 19769734, -4495757, -20316806, -9230958, -13024488, 617402, -1756642, -23594940, 20066088, -3650185, -6147172, -7233262, --16952772, 2512556, -8187819, -10483478, -15790447, -12021613, 7180112, -8644159, 7018514, 8548596, --6282464, -9749576, -13703630, 6248104, -2779381, 5830418, 20030116, 12863427, -606664, -1540820, -6158446, 12909061, -12992813, 11407433, -13100724, -5520644, -33506650, 15107011, 11596412, -15636365, -5883569, -7935489, -50529216, -13197898, 12910672, -5666136, 5947456, -28071906, 37314676, -48410724, -4200478, -35402340, 25129316, 27539330, 9288404, 23081154, 2918967, -23271744, 40480604, -18493592, -4622996, 836445, -22659710, 38253664, 3056943, 10080288, 8753680, 12085501, 6757058, 28714540, -34033856, 11559368, 39696772, -33888904, -2173254, 241592, 50641424, -9367324, 40473624, 22572738, -55449640, 11054709, -12002286, -17296370, 22323630, -40871984, 39278012, -23164906, -13355738, -6263136, -8311836, 29656212, -6395743, -53059488, -14325863, 86611776, 6890738, -54118736, 13931263, -35752380, -11202885, 85340464, -22907208, -23030688, 59559384, -63459752, 32691144, 14886357, 19760608, 55674588, -35548372, -48991620, 61152280, 40231496, 2350958, 64951180, -26051662, -8554501, 47342888, 31210990, -6138045, 12935368, 488553, -257698, 6210523, 16456167, -13961328, 17374754, 17993766, -14105209, -8126078, 12233141, -20213190, -1499481, 8355859, -1508070, 4539244, 26825292, 1028108, 18028126, --8681203, 707596, 13360033, -7519951, -6035503, -16836272, 3591667, 16302622, 11190537, 15389942, --27205934, 16089484, 18838264, 8788040, 3838627, 8083129, -619549, 17121888, 30251066, 7824357, -14948634, 14123463, -6155225, -7155953, 14775224, 21540872, 29281476, 55824912, 27797028, -26767846, -35700304, 10699837, 32209034, -9278203, -59617904, 60617556, 52640192, 32345398, 99380712, -9269076, --83374976, -43110196, -39342976, 88140248, 64801392, 15665893, -5589900, -16109349, -58282168, -27692876, --18869402, -33502356, 89719720, 72771776, 101192112, 1877975, -115698368, -180230784, -87856776, 100417944, -135552928, 138379008, 55832964, -114705152, -210686944, -129230200, -65155728, 97231616, 165390608, 93891208, -51142860, 13663365, -74477416, -100207496, -74891344, -5651103, 58247808, 117871080, 141021488, 25061672, -27691264, -111823768, -185217776, -98826120, 92532384, 155081600, 147162224, 91807072, -53748832, -180289312, --116565952, -151182848, 766652, 102634688, 111126376, 55604796, -43793096, -94926832, -83909168, -66519380, -19963544, 63216012, 44739064, 127896072, 46518252, -28635620, -75277352, -28093382, 85600312, 124496072, -42426224, -4904853, -75780400, -15532749, -16687022, 49100604, 19110994, -12628278, -52147884, -15904264, -3488587, -8591008, -15222438, -3584687, 13094818, 26485452, 45679660, 21543556, -43631500, -39674224, --36269388, 8672076, 48150880, 52459804, 25184078, 5390184, -32849520, -14789183, -65118684, -58641336, --4144644, 17026860, 73496552, 108803336, 42464340, -38333120, -88883808, -112429896, -45936824, 87628608, -146404704, 99345816, 31524524, -73296840, -117599960, -58635968, 991601, 21235928, 22835804, 50174880, -27216670, 10764262, -28748900, -64632816, -46846820, 6252399, -12566537, -32347010, 37434400, 5425081, --54120348, 7030325, -14050449, -21668110, 16345035, -16573205, -6578280, -28881508, 1734093, -10951093, --21590264, 8816494, -2385854, 7421167, 3571802, 18177912, -17601850, -5756867, 5516349, 2178085, -8432095, -7311645, 18211736, -12550431, 12576201, 6177774, -5768141, -13179644, -5686000, -24903830, -27509802, -2195802, 1048509, -4467840, -6407018, 1819992, -665720, 1031329, 10720775, 6648610, --179315, 15708306, -13150653, 5092758, -12483859, 14170171, 8563091, -10071698, 7456063, -12368432, --14230837, -11243151, -22014392, -2033667, 16745004, -14799920, -29995514, -20264192, 1888175, 18705656, -454730, 14034343, -28559386, -7186554, -3270081, -2277943, -27938762, -6698539, 973347, 4391604, --10000294, 29468308, 11761768, -9168145, 26897232, -2416993, -48115980, -1768453, -7020124, -4097936, -9250286, 6320581, 12750684, -14822469, 20633022, -35156992, 10152766, 6458020, -1557463, 197569, --2378875, -2235531, 11768747, -2027225, 1998770, -5128191, -632971, -10178536, 2530810, 262530, -20523502, 10201, 9015673, -9338333, 1012002, -4603131, -12348031, 3959423, -465467, -5867999, -14562087, -2621541, -3997541, -5789079, 10620380, -3926137, -20643760, 4381941, -4256313, 6509023, --8932458, 1104880, -2764348, -12311524, 11275900, -10870025, 7673496, -10375030, 5315022, -777389, --4255239, -29228326, -47957068, -75341776, 2769180, 62201864, -23771034, -38155952, -40783936, -38536596, -8071318, 8012262, 71694816, -10356240, -10268193, -31875100, 3595425, 9716827, 22591528, -23956790, -12165495, -17419314, 28088550, 8966281, 9212168, 3395709, -17447230, -9484362, -11365020, -3741990, -10178536, -10513543, -9263171, 19814294, -18064632, -11261941, 16372415, -15557982, -5716065, -13353053, --21809308, 7727720, 14320495, 2646774, 13491566, -20502564, -5224828, -593242, 11895986, 14749455, -18253074, 1291175, -1920924, -30842160, -31718870, -11715060, -10296647, -6926709, 14542222, 19957640, -28144384, 3118683, -12880070, 28245852, -20200304, -9009231, 12537010, -8830990, 37044628, 1898912, --6213744, 6292664, -13585518, 10764799, 25643640, 21059836, -7647190, 7975755, -25007448, -16282758, --9315247, -6152541, 18452790, -2388539, 18010946, 4814659, -6028524, 2182380, 3161096, -21626234, -12787728, -16005196, 9863929, -7341173, -4614943, -1116692, 11697343, -11230803, 1287417, 1994476, -10189273, 18094698, -9336185, -2688650, -14522358, -5770826, 4817343, -5646809, 3789772, -4412005, --6060199, -9978820, -15880642, -8637179, 14121852, -5608154, 6847252, -10281615, -2603824, -809601, --3489661, -9216463, -4394289, 1056562, -1324461, 141197, -243739, -13948980, 19636054, -48543868, --113477328, -86721832, -10009421, 37539088, 97904856, 82649664, 78922712, 80581640, 53192632, 22388590, --29042568, -51546588, -98342400, -72493144, -71200896, -71025336, -44149580, 42811160, 57751740, 84813792, -65161096, 54539104, 18029198, 36365488, -8167417, -9470940, -11410117, -19961934, -37220188, -30565134, --62704912, -22904524, -49791556, -23795730, -11748883, 16256451, 3301756, 23283554, 5441724, 32631014, -24084030, 39484172, 52624624, 65243776, 41826004, 27992986, 46466716, 3507915, -15741055, -57412976, --67177584, -92573192, -82385528, -77167680, -29472602, -50680616, -26412976, 3010772, 14016089, 32560148, -62366148, 66298188, 74277704, 111997712, 63181116, 85779088, 59629180, 13469017, -9038759, -35306240, --89620400, -98213016, -93321584, -103745472, -76013944, -53199076, -42516420, -11780558, 21907018, 36452460, -46553152, 69005632, 73498168, 77189152, 73128800, 45408540, 31883690, 14984604, 1750736, -324270, --21952652, -36188320, -52003464, -62095028, -65673272, -62372588, -43633648, -19781546, -17519172, -6798397, -11775190, 30865246, 38734700, 73016056, 51687248, 40594420, 40818832, 14555644, -1588601, -10691247, --12872554, -13911399, -35380328, -31999654, -22934052, -24275156, -17552994, 2208150, 5609228, 6886443, --4195110, 11512660, 416612, 13644574, 14296872, 4525822, -4839892, -716723, 3125126, 1840394, -2273648, 6394670, 1486059, -3404835, -10267119, -2488934, 2340220, -383326, 6375879, 4872641, --1081795, -1055488, -4389994, -3587372, -2379412, -1650341, -1961190, 1397475, -1194001, -930397, --272730, -2176475, -2898566, 275952, 583042, 886911, 636729, 428423, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +7975755, -615791, 3212099, 1615982, 3783329, -6770479, -3656628, 4343286, 2100239, 44023, +-3766150, 767189, -10504416, -6765111, -368293, -4034048, -4562329, 1868311, 8203925, 1373316, +6246493, -1451699, 6172942, -3692061, -3295314, -415538, -5578626, 1102196, 2767570, -2019172, +-139050, 1442572, 258235, 2510945, -303332, -5971079, 2130304, -3703336, -2793339, 1669669, +-3680250, -5572720, 5533529, -5847061, 5265630, 4915590, 3234110, -272730, -6860674, -3997004, +763967, -1304060, 8812199, -5410585, 2136746, -708133, 1156957, -6687801, -11156714, -1979980, +-3357054, -3733400, -887985, 4696547, -1032940, -5040144, 4397510, 1858647, -2246805, 3668439, +-731755, 1089848, -5143224, -438624, -1293859, -99858, 1952063, -2366527, 1578401, -4711579, +3154654, -754841, 322123, -1735167, -1567126, -3221, 1910187, 681289, -82141, 715649, +-49929, -2850248, 801548, 204011, 1761474, -312459, 46171, -34897, 26307, -207769, +-1028645, 4281546, 4270271, 605054, 7701413, -87510, 3325379, 4138738, -50466, -3758633, +392990, -5340255, -6840273, -2596308, -7794829, -8045011, -2621004, 5288179, -1891933, -1832340, +-4190814, -1060320, -7326678, 3579855, -2053531, 1808181, 4394826, 1490891, -1544578, 3022046, +2864206, -3575560, 2481417, 329639, 661425, 2679523, -6391985, -2757906, 4524211, -2902324, +-213675, -1846299, 5021354, -6437619, -537945, -5391795, 3493419, -320512, -397821, 4871030, +-2107755, -2340757, -1685775, -4552666, 323196, -2062121, -363998, 301185, 3096672, 3148211, +1058173, -1398549, -5376226, -8791798, -2727841, -610959, -2174864, 4725538, -1908576, -2710661, +3770445, -2429878, -3773129, 8343511, -1815161, -4667019, -421444, 766115, -1400159, 4115653, +-535260, -3678640, 52613, 161598, -794569, -1108102, 3272228, 739271, 461172, -1952600, +406411, -594853, 220654, 1276679, -287226, 723702, 1518271, 191663, -308164, -327491, +643171, -1854889, -693637, -370978, -856309, 771484, 639413, -304406, 8938364, -5683316, +-2679523, -4112431, 3321084, 643708, -398358, 6447820, 1553168, 1890323, -9341017, 1724966, +-4353486, -5069672, -6584722, -105764, 245350, 7828115, -6387153, 2962454, -2673617, 9678709, +-3480534, -3204046, 6894497, -2630668, 2386391, 1040993, -446677, 1139777, -4606353, 752156, +228707, 1954747, 9106404, 3171833, 861141, -3881577, 3194382, -7066295, -1949378, -1351841, +3883724, 3310883, 5507759, 3606162, -4107599, -6058588, -2631204, 4632122, -554588, 2405719, +-960462, -666794, 9260486, 2183454, -687195, -11034845, -4908074, 289373, 3854733, 5907728, +8325257, 4656819, -1991254, 1492501, -2019708, -2821257, 5978595, -3754338, 6155225, 282931, +-5525476, 2000918, -2838974, 4794257, -4096325, -468151, 4182225, 4782446, -4775467, -1836099, +-884763, -1961190, 2897492, -642098, -2030983, 1330366, 712965, 732829, 826781, 1160715, +646929, 694711, 327491, -343061, -397821, -1772748, 2780455, -105227, 185757, 318364, +62814, 441308, 1494649, 1435593, -44560, -374199, 1858647, 1401233, 1119376, 4686883, +-1122597, -785442, -1729798, -5486284, 213138, 3940096, 3925063, 7342247, 3365644, -9642202, +-8054138, -6989523, 288837, -1184337, 511638, -3808026, -2365990, -592706, 2927020, -39728, +-6177774, 6674916, -954020, -6202470, 1269700, 1464584, -127238, -595927, 2683281, 3534221, +-2212445, 5401995, 267899, 3164854, -7368017, 5240934, 1864016, 3022046, -5071283, -557272, +3707094, 3172370, 8046085, -301185, -11112154, -3039763, -5323075, 2603287, 1799591, -461172, +-2967286, 847719, -4557497, -1615445, -8298414, -4884989, -280247, 4619774, 5156108, -3724274, +-3187940, -3263638, 5299453, -1810329, -653372, -7969849, 4801774, -7866233, -2732136, -343597, +-1663763, -2138357, 8366060, -714575, -1945620, -2241973, 1659468, -5045513, 579821, -8748312, +-7030862, 2559264, -2455111, -1308891, 3124589, -1586454, 4168803, 819265, 1914482, 2933463, +-785442, 1415729, 956704, 539555, -617402, 1070521, 433255, 261993, -651761, -690953, +170188, -2565169, -48855, 1604707, 384400, -102005, 303869, -1575716, -509491, 957241, +-471373, 2231236, -2899640, 4105989, -3301756, 3221, 5667210, 10318659, 7138773, 1532230, +-8079371, -6062347, 2168422, -1387274, -5181341, -1701344, -6674379, -2870112, 13411035, 1549946, +-1428614, -2498597, 8053, -3121368, -2158221, 9067213, -9409200, -1110249, 929324, -2013266, +2362232, 5484137, -2520072, -3098282, 1387274, -3854196, -3760244, -8749385, -3240553, 2356327, +-7832410, -1313186, 3886946, 5900212, 2099702, -12286828, -3707094, 2468533, 6193343, -4820564, +10688026, -1246077, -5424544, -3026878, -2313914, -4224101, 5810017, -4345970, -1159104, -5739150, +-4502200, -2107218, -4578435, 6142877, -2261300, -12317429, 4704063, 8262980, 110059, 2985539, +-14969035, 11680700, 211527, -9816148, 989990, -6631430, -1406602, 1035087, -7124277, -8359617, +5550709, 2593087, -7238094, -498753, 179315, -4482872, -567473, -1660542, 1112397, -3979824, +-2053531, -792958, -1982127, -1014149, -2925947, 950798, -199179, 1493575, -3181497, 738198, +1787243, -54761, -1811939, 1152662, -1759326, 1656247, 1351304, -1356673, 1317481, -260382, +-936303, -446677, 453119, 625992, 374736, -11076721, 2500208, -8153459, 8719320, 2225867, +-3313031, -6579353, -11533598, -5007932, -8348880, 2894271, 16143708, 2765422, -4180614, -230854, +-2199023, -2468533, -7256347, -4764730, -7471096, 2047089, -548682, 1664300, -2604898, 1264331, +-7895761, -520228, 1824824, -5355824, -1967095, 703301, -2918967, 801548, -2685965, 11941083, +-14548128, -2567317, 1194538, 3944391, -1489817, -5955509, -8918500, -6308233, 4803384, -1247151, +5327370, -4505958, 13817447, 1838783, -2666101, -105227, -8190503, -10455561, -5286568, 4008815, +-8941585, -509491, 10523207, -258772, -4970351, -9945534, -16865262, 736587, 8664023, -2360622, +9940702, -862215, -3107946, -6194954, -5508296, 1006096, 3949223, -3142842, 14412300, 4393215, +-4625143, 2258079, -5920076, 2217277, 2725694, -1940252, 3124052, 5881421, 2482491, 311385, +-3868155, -10549513, 712428, -2364916, -1067836, -1575179, 761820, 268972, -139050, -4640712, +738198, -2644626, 878858, -2604898, -879931, -650151, -244276, -199716, -512712, -1859721, +-1702955, -2041183, -3062312, -3216931, -1364189, 205622, 856309, -1670205, -52613, 137976, +316217, -1261647, 9472014, -4160213, -10955925, -2996814, -8182987, -4258997, -3556233, 11605002, +-2917894, -3884798, -4900558, 7461432, 6700149, 5923834, 16365436, 17153026, 7936563, 10664404, +-4020626, -4928475, 7086159, 10523207, -4573604, 4629975, 3241090, -9128416, -8654896, 5113159, +-1275068, -105227, -8637179, -10953777, -2616709, -8877697, 10049150, 18808198, 3875134, 7428683, +2153926, -2202245, 6709276, -12832825, -3439732, 2681133, 7149510, -4219269, -10378252, 15154792, +-35433, -4641786, -3707631, 6224482, -1862942, 5550172, -3792456, 8704825, -733366, -217970, +10737418, 3348464, 4951561, 1939715, -1640141, 8032126, -12222940, -4892505, 4570919, 13835700, +-8412230, -971200, -1716376, -1941862, -5764383, -1263794, -2990908, -3958349, -565862, 935229, +3908957, -1619740, 11101954, 4050154, -6370510, -1532767, 832150, 4242354, 1503239, -1922535, +-3841848, -835371, 2456721, -2470143, -2161979, -1889786, 2280091, 1421634, 2252174, 1175210, +-2040110, -807991, 71404, -2061047, -351114, 1615982, 1005559, -253940, -2287070, 3032247, +-408559, 1887638, -1272384, 926102, -2657511, -257698, -383326, 128312, -1768453, 6856916, +-6709813, -2596845, 6191196, -4805532, 2684892, 4668630, -9159555, -9773198, 2804614, 7516193, +-2538863, 6862284, -4968741, -2184528, 13055090, -14771466, 8927626, -4192962, 117575, 416612, +16117939, -3563212, 3193308, 5140539, 8885750, 5209796, 7785702, -1273458, -1238561, 2557116, +1262720, 1312649, -7763691, 12103218, -16106664, -3531000, -4231617, 9021579, -1803886, 10990284, +-492848, 1052267, -19167902, -5246303, 11704323, 19894826, -169114, -9849434, -8299488, 8180839, +6579353, 4954245, 4697621, -8441221, -3858491, -4880157, 2596308, 376347, -5183489, 3077344, +2684355, -2409477, -2647311, -11558294, -3037616, -4231080, 16557636, 1531156, 3133179, 6287296, +512175, -12936978, 661425, -7782481, 6482717, 15462956, -8174397, 4792110, -2340757, -8002598, +3893388, -6706055, -1146219, 2819109, 2094333, 3550864, 1509144, -545461, -2921652, 3359738, +7257958, 1231045, 3604551, 5970542, 2667712, 6748468, -2019172, 6383395, 335007, 162135, +1403381, 724776, 1845762, -183073, -3116536, -1730872, 149250, 1717450, 1809792, -1213865, +3101503, 2936147, -2449742, 4146791, 6984154, -12017855, -4626754, -4521527, 2284386, -693100, +17877264, -2247879, 620623, 11348914, -10126996, -7352984, -9495099, -9938017, -2417530, -366683, +4457103, 19123878, -1760937, -11010149, 19794430, 324270, 5528697, 13535589, 9321690, 12632036, +-3320547, 9978820, -6461779, 13224204, 11546483, -3137474, 6007049, -5325223, -4962835, 4993437, +15115601, 6814503, 5961415, 2141578, -4854924, -8366597, -8539469, 1379221, 10380399, -6060199, +-7320772, -8959302, -3432753, -17757006, -4198331, 3401077, -13081934, 6305549, 890132, -5954972, +-15363098, -10247792, -24159, -20328618, 6328098, 4496831, -498216, 5660767, 3633006, -1986422, +-10641318, -6418292, -1248225, -6712497, 6201396, -7034083, 16773458, -11337103, 537408, 7388418, +587337, -5070746, -19491636, 3381750, 9451612, 2302639, 485331, 10532870, 5738613, -6041409, +-69793, -704912, 709207, -432181, -3439732, -6845641, -2128156, -7395397, 328028, 1847373, +814970, -1916629, -3913252, -1772748, -2645163, 3210488, 872415, 4201015, 2895882, 2412698, +824634, -347892, -1561221, -1301375, -3456912, 1542430, 107374, 1536525, -1733556, -223338, +-2921115, 178778, -2313914, 865973, -24816858, 8718784, 11337640, 19942606, -54224, -14808510, +4185446, 7137699, -15328738, -15944529, -9960029, -391916, 8521752, -438087, -6238440, -324270, +-5457293, -3677029, -9877351, 16510391, 12904766, 4857071, -20233054, -6063420, 3267933, -1149441, +-4495220, 25629144, 9402757, 8055748, 7557532, 12167105, 9141838, 2226941, 9571335, -647466, +-15891916, 8613557, -16347719, 5005248, -16183974, 13690745, -4265440, 16530255, -8998493, 4021163, +-7274064, 5961952, 9687299, 25229174, 5353677, -32068910, -1677185, -4458176, 6910603, 14021458, +-2813741, -6223945, 10324028, -1814624, -5033165, 13812078, 900869, -606664, 726923, 5918465, +11070815, 8751533, -9463960, -7050726, -5960341, -9623411, 2285996, -885837, 10947335, 7852811, +-14702210, -3548717, -8303246, 7153805, -4025995, -3931506, 2611877, 483184, -5643050, 4872641, +1221918, 812823, -803159, 2771865, 2903935, 459562, -8303246, 2331630, 1494649, -1069984, +-1431835, -2771865, 147103, -3709241, 1761474, 4185446, -1231582, -1243930, 4149475, 641024, +-3785477, -2937221, -645856, 1998234, -1623498, -401579, -2309619, 628139, -1528472, 15569, +3993783, -2647847, 27016954, -10253698, -18022220, -5745056, 7026567, -4465156, 12978854, 18781356, +-7568806, 17223892, 11082089, 8652212, -2857227, -2090039, -3482682, 16706349, 3048353, 2001455, +-9742596, 4224101, -5095442, -439697, -16084653, 10880763, -14760192, 54224, -10413148, 17426830, +-8921184, 375810, 17224430, 13085155, 8848170, -1067836, -6846715, 7995619, -257698, -1562294, +-22011708, -6549289, -13297756, -10813117, -8434779, -3988414, 11436424, 7175817, 6667400, 13959, +16834662, -8933532, 17814450, 15653008, 16803522, 29389388, -11373073, -8885750, 12922483, 2419677, +-11414949, 17727478, -5843303, -8580808, 5750425, -2209761, -6160594, -5094368, 7612293, -10305774, +4657355, -6391985, 16284905, -6949257, 243739, 4738960, 11870216, 16131897, 1279900, -14124000, +-15340013, 4989679, -10226317, -32905892, -17328046, 5225902, -391379, 9489730, 1194001, -5414880, +-648003, -3154117, 1372242, -5729487, -2536715, -3941169, -1676111, 423591, -739808, -10298258, +-2730526, -6755447, -6077916, -4774393, 2052458, -505732, 379568, -7509214, -5254893, -311922, +-329102, 1427003, 3811247, 3134789, 2304787, -5415417, 212064, 1192390, -7013145, 2415919, +355409, 2990908, 1319092, 3824669, 2116345, -1617592, 3204046, -2537789, -1927367, -25209848, +-21310554, -1031866, 4474819, -14551349, 643171, 1285269, 23431194, -15287936, -17490718, 5665062, +-7373385, -31139, -12781823, 12169790, -12986370, -17396766, -10528039, 20098836, -13717589, -11206107, +-2587181, 8158291, -6017786, -14421963, 4466229, -5842766, 77309, 6558415, -19026706, -1436667, +10525354, 16924318, -2580202, 25871810, 11336029, -2952253, 1141388, 11764452, -4855461, -10524817, +1986959, 14013941, 1552631, 6726456, 304943, -11480984, 3957812, -25201258, 2283312, 1366873, +-3220152, -14844481, -13484050, 1633698, -6156299, -10193031, -6835978, -8206609, 9634685, -16598975, +-9483288, -4788352, 7210713, -9767829, 20340428, -3066607, -17114908, -1484985, -10193568, -27137750, +-8126615, 1793149, -836982, -17631378, -9423695, -4027606, 4007205, -10480257, -5211406, 17388712, +-6198712, -23741506, -8362302, 3069291, 1806571, 7797513, 6588480, 4918812, -5525476, -6900939, +-1653562, -4823249, 3455301, 1039919, -3053185, 5076652, 2108829, 2982318, -2061047, 2442763, +1825898, -19327, -1019518, -1762547, -2211908, 38655, 1369021, -8443369, 1800665, -4860829, +5415954, 2003065, -6249715, -5532992, -490163, -4380867, -648540, 1775969, -1590212, -2959769, +-4637491, -3525095, 2433099, 897111, -5251672, 1952600, 538482, -3496640, -2977486, 19248432, +17204028, 5158793, 35217660, -6540699, -12300786, -11020886, -5161477, -18969796, 25633438, -15352897, +-5603859, -12435004, -6415608, -5843840, 3026341, -18039936, 283468, 211527, -2486786, 5132486, +-19071266, -4840428, 13086228, -12982076, 716186, -16800838, 16135655, 104690, -28656022, -14860587, +-5187247, -603980, 7971996, -17393544, -9757092, 11965242, -2040646, 8269960, 7597261, 7510824, +-10441602, 1183264, 12680354, 4705674, -23655070, 15273441, 11016591, -12764106, 36339720, -617402, +-26075820, 7263864, 8244190, -530965, 19396072, -5892159, -32395328, 9194451, 4650913, 9769440, +11504607, -14745696, 23447300, 8892730, 7295539, -5499169, 35505956, -2646774, 617402, 24308978, +-4134443, 11135776, 19182934, 6660958, 2865817, -4513474, 9222905, 490700, 16219944, -7027640, +15788837, 14579803, 887985, 14429480, 8581345, 11520713, -5812702, 75162, 13104482, 9557913, +7041062, 4336307, 4486630, -8529268, -1010391, 544387, -4035122, 673236, -1462973, -3574487, +7594039, -7661685, -1475858, -7511361, 6618008, -3114925, 7930657, -6610492, 1105954, -4557497, +-6675453, 4794257, -2546916, -12348, -6515466, -9514963, -7181186, 7651484, 716186, -2914135, +789200, 9490804, 6760816, -2643552, 3278671, 306553, -2617246, 9819369, 340376, 7093676, +-25128244, -24663312, 50577000, 16311212, -31601296, -15896211, -14499273, -28941638, -2157147, -15278809, +21061982, -11921219, 97174, 26268020, 558346, 4354023, -19359566, 24217174, 18051748, -329639, +-5851893, -1904818, -15052250, 1126355, 1905355, 3055869, -20681342, -3028489, -1202591, -6242198, +-4609574, -14271639, 13496935, 26728118, 32125818, -2637647, -13020730, -5450851, -6660421, -4524748, +-19725174, 6687801, 7701950, 7051263, -20554640, -27454504, 29648696, 11175505, 16603807, 21514564, +20195474, -8779987, -13811004, 19465328, -19835232, 10036802, -14845554, -11414412, -6622303, 23163296, +-7687992, 4685273, 7973607, -4255776, -18752900, 38748660, -23443542, 2377801, 28094454, -25458418, +-11499775, 2959233, 10284299, 28846074, 5186173, -16782584, 492848, 3486440, -3907883, -7067906, +4175782, -11766600, 9010841, -9747428, -13613973, 7318088, 4160213, 10355703, 4705137, -419833, +-4702453, 1132798, 2941516, 3165928, 11152956, -684510, 1575179, 6864432, -16421807, 2323041, +-7376607, 1762547, 1877438, -2705293, -6187974, -7769059, -1843078, -7797513, 3087008, 4159139, +9558450, -887985, -6316823, 6014028, 7421704, 4433480, 4558034, -11898670, 467078, 2932389, +-2883534, 10137733, -3768834, 711354, 1141388, 9355513, -4432943, 2758980, 13125420, -8449811, +8221641, 33676840, 20285130, -3073049, -21614960, 2231236, 34534760, 27492086, 5767604, -27388470, +-10566693, -23649700, -1791001, 18457622, 22807350, -1704565, 8651138, 27113054, 28856812, 44793288, +45090176, -22558242, 9788767, -24357296, -4429722, -19751480, -7115687, 15520401, -3511136, 6777996, +6083285, -14043469, -10296110, 11413339, 12728136, 16523813, 11735461, -589484, 12099460, 18241262, +-9704479, 9222905, 10744934, 3178813, 10492605, 34927748, -26304528, -22648974, -5125507, 21570400, +20666308, -12330314, -191126, 33153926, 26804890, -18837726, -12577812, 11372000, -23002234, 6356015, +-11088532, -20866024, 6694781, -24511378, 25392384, 9308805, 28131498, -11864847, -16517907, -31858994, +-6930467, 10361609, -27929098, -23892366, -13107703, 12424804, 7332046, 5826660, -12331925, 5293011, +-8841190, 3343632, 25854630, -11066520, 2987687, -14735496, 11067594, -6101001, -12400644, 8668855, +12032351, -6772627, -3541738, -4030827, 8619462, 19273666, -6257231, -13040058, 212064, -289910, +-4886062, -2117956, -18084496, 2440078, -9648644, -4347044, 6440304, -5939940, -3289945, -597000, +-5082557, 7871065, -8004746, -12548821, -11404749, -9603547, 10029822, 5257577, -2422899, 4405026, +2909840, -8164733, -8936753, 3203509, -15760919, 13298292, 33883532, -2178085, -10481331, 21760452, +4479114, -1242856, -32248226, 28342490, -13978508, -30634928, -10406706, 2087891, 35334160, 3398930, +25322590, 10278930, -29976188, -6503654, -26555782, 4279935, -26470420, -19022410, -11361799, 1349157, +5572720, -20504710, 20145008, -6482717, 12243878, 13173202, 13027173, 24449638, 44573708, 26169772, +-8500814, -21907554, -762357, 46945604, 29241212, -15962783, 23367306, -8985072, 28542206, -14161044, +2775086, -10597295, -5262409, -1582159, -8015483, 70547520, -13414257, -19451370, -22500796, -31631360, +-12173548, -24376086, -1084479, 27273580, -10853919, 8066486, -9073655, -13895293, 24799142, -6882685, +41775536, 7754564, 33416994, -40803264, 16816408, 71718976, 26097832, -39978628, 23815056, 21818434, +1321239, 4641786, -12250320, 13675176, 62954020, 33490008, 14135811, 19108310, -19680614, 36448704, +-3800509, 5617817, 5792301, 9012989, 4237522, 23982560, -19786378, -4922570, 1739462, 30570504, +-5140539, 7513509, 35401268, -2762738, -19672024, -4529580, 13030931, 2171643, -8307004, -19934016, +11632382, 8352101, -13719736, -8048232, 9549323, -16858820, -14020384, 4593468, 7055558, -30602, +4911832, 3347390, 5739687, -6158446, 6003291, -3737159, -5005248, 5542119, 2400350, 7657390, +1186485, 49008260, 22868016, 5441724, -1563905, -53556632, 24910810, 33598992, -24274618, -17652852, +41486700, 27067958, -33318746, -35330400, 1170379, -20656646, 8903467, 3405372, 8491150, -33199560, +8586713, -6458557, -16624745, 29488708, -2150168, -4909685, 9814000, 24734180, 22117470, 15212774, +-28513214, 631360, -13975287, -30259118, 10910828, 8588861, 18523120, -6373732, -14250165, 38766376, +-27950574, 12312061, 13313325, 10981695, 8167954, -4772783, 22741314, -21190832, -36839544, -6111739, +-42180872, 36932960, 22488448, 36246840, -3105798, 7184407, -29407104, 30457224, 38131792, 13817984, +-16499654, -42881492, -10088878, -56591024, 618475, -10476499, -38656852, -32530620, 14697378, 2467996, +23404350, -18202072, 26858042, 22893786, -32408750, 6905234, -19468550, -5340255, -29316910, 3792456, +84306984, 21201032, 24536612, 31092878, 13538811, -23898808, -3591667, -233002, 19769734, -4495757, +20316806, -9230958, -13024488, 617402, -1756642, -23594940, 20066088, -3650185, -6147172, -7233262, +-16952772, 2512556, -8187819, -10483478, -15790447, -12021613, 7180112, -8644159, 7018514, 8548596, +-6282464, -9749576, -13703630, 6248104, -2779381, 5830418, 20030116, 12863427, -606664, -1540820, +6158446, 12909061, -12992813, 11407433, -13100724, -5520644, -33506650, 15107011, 11596412, -15636365, +5883569, -7935489, -50529216, -13197898, 12910672, -5666136, 5947456, -28071906, 37314676, -48410724, +4200478, -35402340, 25129316, 27539330, 9288404, 23081154, 2918967, -23271744, 40480604, -18493592, +4622996, 836445, -22659710, 38253664, 3056943, 10080288, 8753680, 12085501, 6757058, 28714540, +34033856, 11559368, 39696772, -33888904, -2173254, 241592, 50641424, -9367324, 40473624, 22572738, +55449640, 11054709, -12002286, -17296370, 22323630, -40871984, 39278012, -23164906, -13355738, -6263136, +8311836, 29656212, -6395743, -53059488, -14325863, 86611776, 6890738, -54118736, 13931263, -35752380, +11202885, 85340464, -22907208, -23030688, 59559384, -63459752, 32691144, 14886357, 19760608, 55674588, +35548372, -48991620, 61152280, 40231496, 2350958, 64951180, -26051662, -8554501, 47342888, 31210990, +6138045, 12935368, 488553, -257698, 6210523, 16456167, -13961328, 17374754, 17993766, -14105209, +8126078, 12233141, -20213190, -1499481, 8355859, -1508070, 4539244, 26825292, 1028108, 18028126, +-8681203, 707596, 13360033, -7519951, -6035503, -16836272, 3591667, 16302622, 11190537, 15389942, +-27205934, 16089484, 18838264, 8788040, 3838627, 8083129, -619549, 17121888, 30251066, 7824357, +14948634, 14123463, -6155225, -7155953, 14775224, 21540872, 29281476, 55824912, 27797028, -26767846, +35700304, 10699837, 32209034, -9278203, -59617904, 60617556, 52640192, 32345398, 99380712, -9269076, +-83374976, -43110196, -39342976, 88140248, 64801392, 15665893, -5589900, -16109349, -58282168, -27692876, +-18869402, -33502356, 89719720, 72771776, 101192112, 1877975, -115698368, -180230784, -87856776, 100417944, +135552928, 138379008, 55832964, -114705152, -210686944, -129230200, -65155728, 97231616, 165390608, 93891208, +51142860, 13663365, -74477416, -100207496, -74891344, -5651103, 58247808, 117871080, 141021488, 25061672, +27691264, -111823768, -185217776, -98826120, 92532384, 155081600, 147162224, 91807072, -53748832, -180289312, +-116565952, -151182848, 766652, 102634688, 111126376, 55604796, -43793096, -94926832, -83909168, -66519380, +19963544, 63216012, 44739064, 127896072, 46518252, -28635620, -75277352, -28093382, 85600312, 124496072, +42426224, -4904853, -75780400, -15532749, -16687022, 49100604, 19110994, -12628278, -52147884, -15904264, +3488587, -8591008, -15222438, -3584687, 13094818, 26485452, 45679660, 21543556, -43631500, -39674224, +-36269388, 8672076, 48150880, 52459804, 25184078, 5390184, -32849520, -14789183, -65118684, -58641336, +-4144644, 17026860, 73496552, 108803336, 42464340, -38333120, -88883808, -112429896, -45936824, 87628608, +146404704, 99345816, 31524524, -73296840, -117599960, -58635968, 991601, 21235928, 22835804, 50174880, +27216670, 10764262, -28748900, -64632816, -46846820, 6252399, -12566537, -32347010, 37434400, 5425081, +-54120348, 7030325, -14050449, -21668110, 16345035, -16573205, -6578280, -28881508, 1734093, -10951093, +-21590264, 8816494, -2385854, 7421167, 3571802, 18177912, -17601850, -5756867, 5516349, 2178085, +8432095, -7311645, 18211736, -12550431, 12576201, 6177774, -5768141, -13179644, -5686000, -24903830, +27509802, -2195802, 1048509, -4467840, -6407018, 1819992, -665720, 1031329, 10720775, 6648610, +-179315, 15708306, -13150653, 5092758, -12483859, 14170171, 8563091, -10071698, 7456063, -12368432, +-14230837, -11243151, -22014392, -2033667, 16745004, -14799920, -29995514, -20264192, 1888175, 18705656, +454730, 14034343, -28559386, -7186554, -3270081, -2277943, -27938762, -6698539, 973347, 4391604, +-10000294, 29468308, 11761768, -9168145, 26897232, -2416993, -48115980, -1768453, -7020124, -4097936, +9250286, 6320581, 12750684, -14822469, 20633022, -35156992, 10152766, 6458020, -1557463, 197569, +-2378875, -2235531, 11768747, -2027225, 1998770, -5128191, -632971, -10178536, 2530810, 262530, +20523502, 10201, 9015673, -9338333, 1012002, -4603131, -12348031, 3959423, -465467, -5867999, +14562087, -2621541, -3997541, -5789079, 10620380, -3926137, -20643760, 4381941, -4256313, 6509023, +-8932458, 1104880, -2764348, -12311524, 11275900, -10870025, 7673496, -10375030, 5315022, -777389, +-4255239, -29228326, -47957068, -75341776, 2769180, 62201864, -23771034, -38155952, -40783936, -38536596, +8071318, 8012262, 71694816, -10356240, -10268193, -31875100, 3595425, 9716827, 22591528, -23956790, +12165495, -17419314, 28088550, 8966281, 9212168, 3395709, -17447230, -9484362, -11365020, -3741990, +10178536, -10513543, -9263171, 19814294, -18064632, -11261941, 16372415, -15557982, -5716065, -13353053, +-21809308, 7727720, 14320495, 2646774, 13491566, -20502564, -5224828, -593242, 11895986, 14749455, +18253074, 1291175, -1920924, -30842160, -31718870, -11715060, -10296647, -6926709, 14542222, 19957640, +28144384, 3118683, -12880070, 28245852, -20200304, -9009231, 12537010, -8830990, 37044628, 1898912, +-6213744, 6292664, -13585518, 10764799, 25643640, 21059836, -7647190, 7975755, -25007448, -16282758, +-9315247, -6152541, 18452790, -2388539, 18010946, 4814659, -6028524, 2182380, 3161096, -21626234, +12787728, -16005196, 9863929, -7341173, -4614943, -1116692, 11697343, -11230803, 1287417, 1994476, +10189273, 18094698, -9336185, -2688650, -14522358, -5770826, 4817343, -5646809, 3789772, -4412005, +-6060199, -9978820, -15880642, -8637179, 14121852, -5608154, 6847252, -10281615, -2603824, -809601, +-3489661, -9216463, -4394289, 1056562, -1324461, 141197, -243739, -13948980, 19636054, -48543868, +-113477328, -86721832, -10009421, 37539088, 97904856, 82649664, 78922712, 80581640, 53192632, 22388590, +-29042568, -51546588, -98342400, -72493144, -71200896, -71025336, -44149580, 42811160, 57751740, 84813792, +65161096, 54539104, 18029198, 36365488, -8167417, -9470940, -11410117, -19961934, -37220188, -30565134, +-62704912, -22904524, -49791556, -23795730, -11748883, 16256451, 3301756, 23283554, 5441724, 32631014, +24084030, 39484172, 52624624, 65243776, 41826004, 27992986, 46466716, 3507915, -15741055, -57412976, +-67177584, -92573192, -82385528, -77167680, -29472602, -50680616, -26412976, 3010772, 14016089, 32560148, +62366148, 66298188, 74277704, 111997712, 63181116, 85779088, 59629180, 13469017, -9038759, -35306240, +-89620400, -98213016, -93321584, -103745472, -76013944, -53199076, -42516420, -11780558, 21907018, 36452460, +46553152, 69005632, 73498168, 77189152, 73128800, 45408540, 31883690, 14984604, 1750736, -324270, +-21952652, -36188320, -52003464, -62095028, -65673272, -62372588, -43633648, -19781546, -17519172, -6798397, +11775190, 30865246, 38734700, 73016056, 51687248, 40594420, 40818832, 14555644, -1588601, -10691247, +-12872554, -13911399, -35380328, -31999654, -22934052, -24275156, -17552994, 2208150, 5609228, 6886443, +-4195110, 11512660, 416612, 13644574, 14296872, 4525822, -4839892, -716723, 3125126, 1840394, +2273648, 6394670, 1486059, -3404835, -10267119, -2488934, 2340220, -383326, 6375879, 4872641, +-1081795, -1055488, -4389994, -3587372, -2379412, -1650341, -1961190, 1397475, -1194001, -930397, +-272730, -2176475, -2898566, 275952, 583042, 886911, 636729, 428423, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -9297530, -7221988, 367757, 3323768, 3297998, 9343701, 4401805, -3434900, -4341138, -6060736, 4363150, --5300527, -3850975, 879931, 1349157, 587337, 5486821, -1776506, 5129265, -1298691, 4605279, --4337917, 2026688, -1909650, -4636417, -316217, -8854075, 1341640, 2187212, 3976066, -3227131, --40802, 3470871, -2535105, 3897146, 3669513, -2185602, 2638184, -2932926, -1358820, -2165737, --3169686, -4029753, 3628174, 5354751, -3989488, 2382096, 4307316, 3488050, 5270999, 671626, --780610, 3074123, 2334852, -5551782, -202937, 653909, 363462, 1775969, 3614215, 818728, -1315871, -1920387, -1213865, 2561948, 3590593, 2007360, -1890859, -3312494, 3701188, -2989297, --967441, 2077154, -616865, -125628, 1580548, 382252, 106300, 3357591, -3272228, 2503429, -1363115, 1644436, 3097208, -1236414, -354335, -1037235, -430034, 135828, 1517734, -1194538, --216359, -823023, -476205, 57982, -116501, -476741, -340913, 347892, 449361, -2684, --195421, -328565, 49392, -100395, 52076, -474594, -107911, 487479, -1068910, 3682935, --1955821, 2697776, 256087, -230854, -7508140, 1202591, 6391448, -3927748, 2639794, -7973070, --8067023, -2660195, -6560026, -5726802, -863825, 1180042, 4503810, 714575, -2172717, 1017907, -3064996, -3966939, 5491653, -3724274, -4027069, 4651987, -2317672, 5359583, 6813429, 941672, --4916664, 3437585, 2246805, 1376537, -2502355, -1815161, 2861522, 2388002, 485868, -5558225, --1603633, -5134634, 4635344, -4634807, -3021510, 3410204, 161598, 2959769, 848256, 1134408, -5045513, 851477, 5659157, -7297687, -3744675, -1688996, 3616363, 5109938, 5844377, 7947837, -864899, -2267743, -759136, -1069984, -241592, -5170067, -2260764, -2251100, -626528, 794569, --4188667, -2485176, -943282, -1788317, -3274376, 3934190, -3936338, -1347009, 2625836, -6753299, -2043868, 3675418, 4085588, 2143726, 1187559, 2441689, -1194001, -2622615, -655519, 700617, --276489, 700617, 134218, -733366, 57445, -1054415, -1227824, 1497333, 682363, -144955, --4832, -17717, 1147830, 523986, -438087, -472983, -457414, 78383, 851477, -1008244, --159988, -63351, -177167, 549219, -18254, -413391, 8549669, -6314676, -2361158, -1233729, -5261872, 4751845, -4768488, -421444, -8863202, -1924145, 10776610, 4070555, -4316442, 7743826, -2535641, 2988224, 802622, -2575907, -8458401, 1154273, -3801583, -2398202, -1534377, -5146982, --1813550, -3980361, 2803540, -1792612, -2325188, 4850629, -9104257, 8405788, -2943126, 1209033, --2841121, 2634963, -325881, -821949, -211527, 3586835, 191126, 2273112, -3244848, 6300180, --4873714, 7333657, 1573032, -709743, -4083440, -4792647, 9961640, 1729261, -9310952, 9550397, -9002788, -4867809, -1774895, 2835752, -3666828, -672699, -2254321, 2269890, 5747740, -3475702, -1324997, -2600603, -2373506, 951335, 7732552, -7066832, 4308389, -7284265, -5595806, -5258651, --916439, 153545, 9664, 4423817, 6847252, 1791538, 1671816, 3344706, 2719788, 1501628, -1709934, 2007897, -727460, 2160369, -972810, -2112050, 3649649, -178778, 513785, -657130, --1066763, -630286, 36507, 1540283, -376883, 346819, 166967, -1367410, 25233, 758062, -980863, -111669, 859530, 2437931, -3271691, 395674, -6462852, 6227703, -9084393, 387621, -9549860, -17251274, 12074227, 4850092, -4559108, 3829500, -312996, 10531797, -1057099, -8636105, --6022618, 3571265, 4108673, 1214939, 331249, 4505958, 1379758, 783295, 6094559, 2528125, -1777580, 4413079, 3185255, 15004468, -4058207, 4035659, -161598, -2395518, 3934727, 2471217, -1574106, 1959042, -2392834, -4076998, 331249, 56371, 271657, 2226941, 4620311, -4590247, --4884452, 2199560, -1125281, -1826435, -2900177, 6149320, -4306779, 8858907, 4191888, 455803, -2124935, 810138, 2464774, 11239393, 9446781, 783295, 592706, 2216740, -2184528, 4252018, --857383, 3842385, 1225676, 318364, 70330, -4691715, 4628901, 3565897, -952946, -2663417, -446140, 4468914, 498753, -1154809, 319975, -3246459, 2478733, 988916, 3140158, -731755, -982474, 1372242, 1354525, 1163936, 1916092, 963683, 896038, -3966939, -159451, 1671279, -2353105, -1298154, 1555315, 1452236, 1293322, 1460289, 663572, 1152662, 1407139, 1580548, -317828, 667331, 511638, 778463, 299574, 481036, 1009854, 459025, -91805, -796716, --1087701, 2228551, -1000727, 4868346, 132070, 5616744, -2121177, 4984847, -3733400, 10399726, --7916699, -2935610, -3769371, 10723996, 6070937, 3959960, 6806450, -6109591, -1226750, 9899363, -5615670, 4661650, 4806069, 2587718, 3305514, -1101122, 9478993, -953483, -4347581, -3209414, -3330210, -3539590, 2179696, -8921721, 3326452, -1684701, 185757, -9587441, 4158065, -2030983, -9040369, -1440425, 2867428, 2510945, -3797288, -912144, 4122632, 600222, 2829847, -2001992, -5016522, 7135552, 905701, -4919348, 1909113, 5028870, 3577708, 696858, -3388729, -6945499, -5857262, -7736847, -3284039, 4396436, -10304163, -2323041, 6398965, -4723927, 1348620, 128312, --576063, -1338956, 2604361, -5100274, 288300, -8542690, -4440460, -11689827, 890132, -3248606, -261456, -2230162, -361851, -2940442, 2691871, 2615098, 1040993, -1809255, 2485176, -235686, -971736, -3335579, 865436, 739808, 1086627, 788663, 2325188, -251256, 2623151, -1100049, --172872, 1869921, 2462090, 433255, 1363115, -1532230, -597000, -396748, -612570, -1085553, -766115, 1970316, 524523, 2076617, -1919850, -1100049, -1075889, -2611877, -3059091, 2805688, --18962818, 3308736, -5982353, -3485366, 4337380, 3279745, 2306398, 810675, -13933948, -1495722, -4329864, -7511361, -1967632, -10266582, -5218922, 2247342, -1224603, -9459665, 9804337, 5881421, --3010235, 1014149, 7712151, -5037460, 2065879, -3466039, -5395016, -3730179, -9750650, -3696356, -7337952, 3399467, 9379135, -4819490, -15374372, -6710887, 3743064, -5004711, -10027138, -1771674, --1899986, 9059697, 4642860, -10744398, 7096897, -7633231, -488016, -5541045, -5282810, -5085242, --11829951, -7077033, 823560, 7488276, 11396696, 7235410, 2084670, 4460861, -5279052, -8854075, --5463199, 5442798, -2739652, 5877663, -1867774, -5666136, -339302, 410169, -2750390, -6372658, -325344, 4620848, -15401216, -10237591, 14249091, -4749160, 224949, -7994545, 3713536, 2019172, --995359, -717260, 5170604, 3767760, 1110786, -1742683, -2021319, -462246, -2250026, 1124745, -1472100, -3133716, -1595044, 1015223, 272194, -105227, 828392, 2869038, -3248606, -1571421, --5882495, -2476586, -946503, -1198833, 218506, 714038, 1576790, 4295, 2042794, -2628520, --1879585, 331786, 437550, 731218, 7244536, -203474, 3666292, -4968741, 3644280, -6790344, --477815, 11792370, -5556077, 11140071, 11298985, 13925358, 3487514, 5572720, 12014634, 9402757, -6925635, -9310952, 1218160, 2945811, 8060580, -1584306, -6901476, 8945343, 9075803, -2570001, -6049999, -3007551, -3150896, 5689758, 4919885, -685584, 5836861, 517544, -9518184, -7612830, -8250096, 11958800, -929324, -4134980, 2536178, 372588, -5686537, -10679436, 5589900, -10098005, --4906464, 7731478, 1648194, 6840809, 303869, 10950019, 1532230, 12024298, -13967234, 12688944, --2450816, -471373, 3832722, 6712497, -5365488, -11559368, -3271155, 10620917, -2052994, -12369506, --7303592, -7573101, 2064269, 4496831, -10771778, 5470178, 6252399, 11221139, 3462281, 3547643, -52613, 3172370, 594316, 2486786, 1711008, -8148627, -892279, 3913789, 2747705, 6634651, --4319127, -1311576, -55835, 558346, 3172907, 427886, 2624225, 1079111, -1248225, -541166, -2502355, 2302103, 897648, 2507187, 714038, 1113470, 3300146, 51003, -1743220, -904628, -740345, 1608465, -201863, -755377, 2672544, 1372242, 611496, -2711735, -852551, -1550483, --1332514, -125628, 2854543, 158377, 2717104, 3763465, 12053826, 1552094, 5039608, 14328548, -15444702, 4607963, 3893925, -11403138, -5747203, 12613245, -9346386, 12890271, 3655554, -48855, --2547453, -4503273, -7425462, 1367410, 5733782, -13861470, -6251325, -5895380, 3104725, 2784750, -3068217, 427886, 2386928, -507880, 4212289, 3394098, -3642132, -6504728, -11950210, 2109366, --6438693, 10816875, 473520, -6012954, -7501161, -2311766, 5067525, -9418863, 5934034, -3156264, -1987496, -117575, -6657200, 6648073, 8475044, -5788542, 7140383, 2012729, -493384, 20199768, --5030481, -13123809, 2540473, 4915053, -3220689, 1078574, -5646272, 13706851, 8043937, -1380832, --2871723, 9726490, 9378598, -1971390, -7873212, -5790153, 19161460, -1782411, -2557653, -7724499, --4924180, -1563905, 1932735, -2025077, -5003100, 8195872, -2525441, 9730248, 2911988, -3107946, --995359, 1714229, 29528, -1705639, -1619203, 3403762, -4254165, -1102196, -1075889, 5602785, -607738, -1267552, -50466, -2915746, -2589865, -398358, 664109, 5871221, -1294396, 3462281, -1440425, -1968706, 1313186, 195421, -2764885, 2160369, -1324997, 3000572, -193810, -3170223, --2189360, -1833414, -2201708, -90194, -621697, -1040993, 1170916, 1031329, 1766842, 4924180, --10581189, -3029026, -3362960, 828392, 4437775, 10336376, 9029632, -14552960, 287763, 1656247, --1513439, -4378183, -10036265, -1073205, 3326989, 5887864, 4786204, -9225053, -1642288, -11681237, -10855530, 425202, -1124745, 5185100, -5223754, -1002875, -12429635, 2022930, -7437810, 5048734, --1011465, -2133525, -4232691, -8282845, -8039105, -1010928, -9905805, -16142098, -3033858, -7393786, --15498389, -1324997, -1374390, -8527658, 5492727, 8414915, -1101122, 3970697, -1117228, -1421097, -2254858, 2427730, -12562242, -3770981, 6817187, -6113349, 14922864, 2620467, 3946538, -9745281, --140660, -4449049, -9904731, -1138703, 13849122, 6356015, 10511932, 5774047, -4648765, -11296838, --17559974, 11664057, 12004434, -1530619, 6181532, -13750875, 6492380, 5497022, 9767293, 1381369, --11732777, -1601486, -10939282, -3878892, 861678, -3637837, 2267743, -2525978, -3658775, -1043140, -1011465, -646393, -1225139, 3104725, -1042603, 1138166, -7951595, 33823, -692027, -1363115, --3630321, -1637456, 2333241, -3446711, -3918621, -1511292, -1437203, -1717450, -61203, -1066226, --4332549, -3580929, -2183454, 1088237, 1388348, 2388539, 1148904, 2179696, 743566, -3229279, -579821, -641561, -1956358, 1017370, -3645890, 1394791, -1998770, -27109834, -6783364, 21555904, -7203734, 8792872, -5618354, 8880919, 15027554, 1106491, -2534568, -25035364, -5846524, -1173600, -14348412, 4042638, 5748277, -18754512, -5057861, -6971806, -4474282, 11665131, -6590091, -2279554, -2013266, 3343632, -5933498, -2584497, 3002182, -5235565, 11454678, -12847321, 1381906, 8476655, --11027329, 9046812, 15356656, 17903572, 8580808, 8766028, 11733314, -8047158, -14787572, 5905043, -6405944, 9777493, 7754564, -16687559, -4769025, 8784282, 5051956, 3201361, 10459319, 2364380, -12185359, -4529580, -2652142, 6995428, 6433861, 1959042, -10776610, -5737003, -11575474, -13216151, --794569, -14455786, 741419, -8411157, 573915, -7649337, -4552666, -18571976, 12792560, 3393561, --2795487, -3321620, -2124935, 2495913, -6910603, -954557, -16207059, -8852464, 5589363, 7326678, -2972117, 2465311, 587874, -8472897, 3837017, 3881577, 2964064, -8096014, 1802276, 322123, --6503654, -2171106, 1067836, 1022202, -3381213, -4839355, 1536525, -2376728, -3030636, -731755, -636729, -600222, -433255, 1646583, -1577327, 2290828, -463856, 3266323, -1520418, 2918430, -4494147, -3243237, 2467996, 224412, 1690607, -1999844, -280247, 2639258, 2034204, -3995930, -2034741, 2095944, 16995722, -8292508, -7096360, -6291590, 11700028, 14853071, -9339406, 23841364, -4999342, -10210748, 12199318, 3466039, -9948755, -11694659, -9438728, -780610, -5074504, -3490735, --15574088, 6219113, 6468221, 21494164, 2900177, -3696356, -9725953, -10199474, 2561411, -1231045, --13625247, 2384781, -5063767, 624381, 10493142, -8160438, 13882408, -12231530, -10270341, -724239, --15979426, -19129248, 3081639, -2221035, -22058416, 1492501, 235686, -10522133, 5488432, -5128728, -2763812, -14929306, -24338506, 15933792, -14899242, 24703578, 13485660, -17716204, -2285996, -17951890, --4851166, -2308008, 7416335, -6490770, 11329587, 14272176, 13566728, -9845676, -8012799, 1232119, --12045773, -1162326, -3940096, -15912317, 9470940, 6988449, -8471286, 12451647, -18577882, -1825361, -1098975, -4904316, -3142306, 16081968, 11900281, 7885560, -984084, -8464844, -6831683, -6393059, -2782602, 2551748, -522375, 1778653, -498753, -794032, 334471, -726386, 644782, 3167002, --3837017, 1478006, -276489, 3489661, -2068027, -420370, 2044941, 4679904, 1876364, 3767223, --4550518, -5019743, 2363306, -3360812, 802085, -72478, -5301601, -3012920, -3161633, 4295, -1743757, 1522029, 1071594, 1191853, -14448807, -10988137, 7209640, 8733816, 9655086, 16321949, --6010807, 30029338, -919660, -15534897, 6801618, 14807973, 4074850, 7787313, -6557342, -16638166, -25062744, 13914620, 10288594, 4874251, -8638790, 8077760, 20883204, -7650411, 4507032, -193274, -4427038, 3607773, 14893873, -4262218, 5092221, -5226975, 4560719, -1395864, -754304, 9243843, -2006824, -18398566, -12310987, -17239462, -11779485, -9133785, -4502737, -13191455, -7430831, -6465537, --11410654, -7937100, 5107253, -11936251, -4075387, -9259949, 22262426, 11325829, 19389092, -17488570, --1591822, -15976741, -3328600, 17966386, 9922985, 21161840, 10133438, 13109314, -13836774, 6308233, -6222334, 19600620, 19928648, 5982890, 18037788, -15451682, -7337415, 11563126, -40564356, 762357, -6738804, 879931, 10147934, 6544457, 22971096, -1742146, -3104188, 24850144, 7562901, -2172180, --11049877, -193274, 257161, 20370494, 2767033, 580894, 1711008, 4144644, 6410239, -1102733, --1086627, 6596533, 3223373, 2168959, 3539053, 4798016, 3755949, -210990, 879931, 683974, -6863895, -1168231, 3658775, 6588480, 4910758, 7346542, -3120294, -2393371, 1817308, 2405182, --2383707, 243739, 4299799, 6825240, -332860, 2064269, 17480516, 11359652, -11475079, 22353158, -13254269, -1140851, -5604933, -2820183, 13404593, 33028836, 17622788, 4744328, 1349157, 10849624, --2685965, 26665304, 15040439, 16655883, 639950, -8490613, 5611375, 2008434, -14226005, -3494493, --941672, -3349538, -4091493, 5416491, 2900177, -11631845, -5630166, -20555176, -2162516, -6387690, --26506928, -11876121, 748935, 9903658, -13669807, 17029008, -4772246, -4062502, -2376191, -4153234, -12324946, -8330626, 8596377, -27118960, 8332237, 11835856, 9066139, 18076444, -17911088, 15480136, --16086263, -11962021, 13326210, -7842611, -2449205, 11244761, -18236968, 16117939, 25760676, -522375, --3824132, 32959042, -7168301, 6350109, 18505940, -39605504, -20352240, 1351841, 1130113, 5380521, -9451612, 19276350, 11510512, -15141370, -12218108, -3587372, -4411469, -20454244, -2081985, -4070019, -4961761, -21371758, 155693, -6433324, 8604967, -3217468, 10980084, 2983929, 2147, -6321655, --4746476, -5943161, -6405407, -4820564, 4258460, -12985834, 9217537, -1536525, 5086852, 331249, --934155, -8858907, 4768488, -6286759, 1505386, -6679748, -3759707, -28991, -3069828, -7665980, -460635, -2390686, 740345, -5212480, -5879810, -6132140, 1000727, 1337882, 7677254, 8336532, --177167, 208306, -6032282, -31468688, -18950470, 23074712, 22943178, 2416993, -5496485, 19448148, --31565326, -16972100, -34149284, 14856829, 4082367, 1458678, 6555194, -15568720, 7800735, 10734734, -14092861, 23918672, 24586004, 20642686, -891206, 4623533, 215822, -9066676, -1917166, -7580081, --3940096, 28513214, -6727530, -26329224, -6695317, -5464809, 2294050, 41106596, -14939507, -14818711, -13874892, -22355304, 7651484, -24800214, 32258962, 9069360, -964757, 8227547, -12530567, -15844134, -22080964, -26994406, -21576842, -19418084, 5301601, 8024073, 10009958, -18021682, 18354542, -5757941, -1320166, 28313498, -2007360, -4895726, 8286603, 22835268, -14898168, 37915972, 1338956, -43845712, --5396627, -1756642, -14688788, -4290673, -81068, -4171487, -12010876, -10119480, 21463026, 14355391, --5377299, 13887777, -25218974, 6977175, 11193222, 6931004, 737661, 13368623, -2293513, -679142, -4958540, 13065291, -5523328, -5821828, -4563403, 518080, 4891431, -2621541, -10450729, -11238856, -467615, -5324686, 3788698, -226560, 2648921, 5826123, -7337415, -4889284, 12453795, -2991982, -2182917, -1063004, 245887, -4378183, -4855461, -2514167, -1688996, -6765111, 3132642, 5990406, -3321084, -222265, 474057, 2641405, -5211406, 1063004, 5737003, -698469, 4905390, -2952790, --9198209, -12437152, 186294, 5459441, -8862665, -4029216, 41791644, 24776056, -33660196, -27191974, -33641940, 32073206, 20075750, 23057532, -40080096, -8777839, -11034845, 10604274, 3912715, -16163036, --29599840, -44837848, 13143137, 11866458, 3497714, 12366285, -6110128, -2225330, -10629507, 8935679, -15546708, 13966697, 3659849, 18547816, 5957657, -2068564, -7533373, -27241904, -1449552, -11443403, --9492951, 9516037, -29241748, 2652679, 1196148, -13620415, 11964705, 10984379, 5429376, -19654844, --18299782, -48228724, -12269111, 375273, -15446850, 2757906, 10209674, 10188199, 27002460, 13277355, --11909407, -8325794, -17919678, 22733262, -9529459, 39323648, 32846300, 9133785, -20965346, 43412456, -19972134, -17539572, 2705293, 21829172, 50481436, -20820928, -38562364, -19868518, 543850, -13879187, -6103686, 13952738, 11635603, -10091563, -15761993, -8683887, -13116293, -14384919, 4017405, 15717433, -12542378, 7084012, 6256694, 2323041, 10551661, 1468879, 1708860, 15369004, 12033961, -663036, --5021891, 3505230, -7974144, 8569533, -3030100, 8771397, -4461398, 3536906, 2292976, 5812702, -7443715, 4422743, 3467649, -7192460, -14248554, 1735704, -7231115, -3621194, 4305168, 1335198, --2105071, -2719251, 10302553, 3442416, 13936095, -4421132, 7455527, 7542500, -9478456, 9903121, -519154, -7917772, 16753594, 6030671, -5754720, -16114717, 13639742, -27361626, -25299504, -9057012, -19756312, -11198053, -14345728, -55835, 22752052, 2483565, 23508504, -7744900, 28361816, 3357054, -15241228, -9813463, -6528887, 9045201, -29056528, -8025147, 11104101, -5086315, -3810710, -23350126, --22049826, 10415296, -13401909, -9581535, 18305150, 25061672, -3537979, 16530792, -29358248, 1939178, --7871065, 38441568, -15654619, 12899934, 23616952, 22494354, 6691022, -15428059, 10096931, 7295539, -6960532, 12536473, -37547676, 69806104, 22449258, -5932961, 3862786, 7999377, 19541028, -5178120, -15093589, 40797356, -2099165, -49999324, 21203180, 17675402, -17605070, 23795730, -4967667, -10306848, --26684632, 52235392, -26556856, 58135604, -37908992, 14543296, -495532, 63143000, 28159954, -26668526, -26051124, 1351841, -16464757, 12871480, 2212982, 5918465, 14334453, 6219650, -15915001, -3976603, -19452444, 5375152, 11125576, -8603356, 12270185, -20068772, 7815230, -912681, -6285148, 12858595, --6738804, -3717294, 9366787, -1316944, 1637456, -1371705, 15561203, -9776419, 15192910, -8577050, -14076755, 19523848, 7454990, 5458904, 10955925, -2551748, -7303592, -7162395, 9492951, 3416647, --1241782, 93416, -2113124, -13640279, -10368051, -1930051, 723165, -8450885, 47631724, 5566815, -25796648, 13086228, -26422638, 1494112, 15454366, -4842039, -23026930, -4536023, -50055696, -14128832, --18733036, -10922639, 10761577, -1622424, 17732310, -8923331, 1802276, 17236778, -15643882, 1504849, -9794136, -1155346, -17149804, -209917, -11820287, 34257196, -6166500, 19771882, 3107946, -531502, -35194036, 25242060, -15672873, -18460306, 8834211, 15776489, 19265076, 23320062, -554051, 8081518, -22203370, -1440425, -9098351, 6756521, 664646, -20024212, -567473, 12790413, -19583978, -26479010, --2596308, -1844689, -2925410, -9066139, -9586367, -31519154, -126165, 30404074, 9345312, 16785270, -9982578, -4408247, -40485972, -29917132, 7864622, 25834228, 8440684, 12899397, 52964464, 54776940, -46526844, -4029216, 23081692, -15110232, -39225400, -65594888, 11265699, 7696045, -2989297, 8706972, --20716238, 4061965, -5102958, 23547696, -1869921, 18827526, -23713052, 11256036, -29102698, -6027987, -12192338, 1676648, -14849313, 3052111, -12241731, -13603235, -5686000, 3054796, 11028939, 13887777, -18773302, -4990215, -1085016, 4412005, -5232344, 5591511, -19591494, -17132088, -11655467, -16071768, --15105400, -16411070, 10281078, 7034083, -2727841, -10952703, -15997679, 9166534, 92342, 14771466, --3819837, 13023951, 9909026, 76236, 4219806, 15699716, -19527068, -18815178, 11093364, -2208687, --14444512, -30776126, 9231495, -18315888, 9505299, -7756711, -21602612, -6445672, 255014, 11261404, --8893267, 5910949, -31880468, 30577482, -67258112, -6400038, -16494285, -13492103, 9489730, 39104604, -6650757, 14429480, -32898376, 7849053, 12724914, 26999238, -13409962, -21166672, -14511621, -6926709, --568009, -190052, 16554415, 12105902, -9035001, -48489644, -22748294, -39358544, 5083631, 70491152, --49117244, -19248970, -7145215, 40909028, -13063680, 17528298, -12458090, 19928112, -7237020, -11425150, --24665998, 13391171, -28661928, 27398670, 49238580, 6678138, -8474507, -8694624, 40933724, 11143830, -155693, 21788370, 7537131, 8148090, -7253126, 47153908, -72927472, 53613004, -44224740, 21671868, -53057880, -41717016, 85703928, 58454504, -21286932, -6863358, 59119152, 21809308, -5005248, 38997228, -35128000, -44546864, 60990148, -36134096, 11318849, 12003360, -15629923, 12081206, 20322712, -11787538, --21536040, 7605314, -11334419, 5551782, 5662378, -5652177, -16744467, 7337415, 6791954, -6667400, -7896298, 6296959, -13343927, 34656628, 4334696, 1141388, 1338419, -6503654, 5852967, 5043366, -2434173, -10720775, 6426345, 2003602, -4243428, -9346923, 21772262, -7567196, 17834314, 20053202, --1340030, -6834367, 5837935, 5260261, 8275865, 24082418, 21020644, -17830556, 9169755, -6985765, --390842, 10639171, -1634235, 49753440, 47438452, -40207336, 39534636, 36369784, -33879240, -51261508, --75781480, 17819282, 114192976, 46966004, 369904, 23648090, -108848432, -44917304, -3697430, 16720308, -82184200, 80347560, 14024142, -30840550, -60226716, -35316444, 4271345, 26001196, 39391292, 63184876, -38280508, -50770272, -119998704, -97881768, -9435506, 109086264, 118790744, 74998720, 23090818, -25121264, --48212080, -73109472, -41515152, -44451836, 87456808, 72645080, 46080704, 40652404, -61495880, -86425480, --100117296, -89820648, 34839164, 121734408, 150086016, 50689204, -45168024, -106667664, -127728568, -34802120, -20842940, 13234942, 80325016, 31422518, -29996588, -17933100, -61378304, -13459891, -70204464, 30502320, -83800720, 156241776, -9223442, -83566104, -181222928, -7122667, -61089468, -6551973, 87278568, 17200808, --7699266, -38856032, -81468552, -53637700, 39560408, 63340568, 21158082, -11132018, -27547384, -33413234, -32807108, 37284076, 23393614, 19929722, 9262634, 18573050, -1476932, 1687922, -17820894, -8492761, -2406256, 47040092, 41564008, -2229625, -17324288, -4689031, -41719164, -28373090, -704912, 15953119, -43882756, 33411624, 24173150, 2044404, -58228484, -52937620, -35339528, 13703093, 56965760, 109462608, -67546952, -50705312, -90574416, -80554792, -31936304, 2113661, 75537200, 94286344, 70966816, 12212740, --55582784, -127587912, -79746808, 25726318, 79597552, 90094992, 26947698, -13459354, -34496640, -41760504, -707059, -10460930, 51341504, 30015378, -4581657, 10883447, 5512054, -36643588, -3876745, -3017215, -3937948, 1101659, 2872796, -13423383, -5411659, -4975720, -3429532, -6125697, 21844740, -7904888, -9348533, -16522739, -1724966, 6774774, -846109, -5041218, 37766184, 5206037, -21488796, -24919400, -5163088, 5204964, -14700599, 4031901, 18929532, 9844602, 17810692, -18331994, 5463736, -671626, -4217658, -12910135, 2369748, 14276471, 20161114, 5104032, -5358509, 5915781, 2199560, -4736275, -13712220, -20412906, 4510253, -33236068, -10499048, 13700409, -11374684, -13370233, 17956722, -11540577, --31113280, -24021752, 21148956, -2673617, -4328790, 4865661, 10654203, 26914950, -17682918, -22899156, -849330, -3163244, 18112414, 112206, 10534481, 4857071, -1938641, 27958090, -36587216, -5366025, --5288179, -21434034, 5338645, 11956652, 382789, -12779675, 5510443, -2907693, 3485903, -11055783, -7940321, -605054, 1161252, -1012539, -2860985, 14155675, -14428943, 1069984, -2604361, -5171678, --4731980, 1614908, -6348499, 6464463, 8178692, -8735427, -2383707, -3373697, 7471096, 8428336, --4461398, 10399190, 834297, -1561758, -7242389, 7479149, 2405719, -3047279, -11856794, 5436355, --10782515, 6742562, -5929739, -5196911, 9426916, 9556839, -13385266, 1499481, -3320547, -12974022, -3927748, -7621420, 8190503, -7514582, -30088930, -33182918, -78932376, 22812718, 22565222, -1613834, --66542464, -43021612, -6335614, -10923176, 44452912, 29982630, 14417668, -29465624, -12166032, -7817378, -27831924, 3045669, -7941932, -17301202, 11407970, 5056787, 13841606, -773631, -5666136, -7090991, --15934866, -7968238, -9647033, 26579942, 14207752, 3114925, 3979287, -17530982, -947577, 2111513, -24271398, -1772748, 11308112, -9041980, -6297496, 4929012, -10016937, 6594923, 2895882, 7094212, -23676008, -2092723, 20775830, -294205, 13338558, -10344966, 867583, -15203110, -19666118, -20700132, --17710834, 5812165, 3060701, 1504312, -26077430, 12861280, -22698366, -2579665, 1171452, -14231374, --15402826, -8147553, 272194, -27115202, -18342732, 16818556, -8189966, 15657303, 2484102, -4364224, --14660871, -16935056, -1107028, 23990614, 29743722, -7428683, -3054796, -11206643, -14919643, -10310069, -9478456, 5025112, 3642669, 9292162, -1847373, -6183679, 6442451, 3539053, 5361193, 8127689, --4570919, 2729452, -908386, 173409, -6209986, 10744398, 3404835, 2438468, -3232500, 1543504, --234613, 16757889, 2136746, 5016522, -9409200, 620086, -6092411, 10963978, 758599, 157840, --3863860, 2538863, -1262720, 130997, 5255430, 491237, 6888054, -4690641, 2238752, 719407, --8826158, -483184, 5049271, 1935420, -1815697, 17746804, -38152732, -94612224, -90687160, -13756780, -27435714, 91260536, 78864728, 74349640, 79859552, 44466332, 10760504, -40305584, -40502080, -84171696, --65369404, -57303992, -36354212, -45721536, 62989452, 51831664, 68209984, 39351564, 55751360, -2004139, -14686104, -8937827, -21746494, -12420509, -26001732, -30228516, -30131344, -29702920, -35187056, -25738666, --20921860, -2350421, 5542656, 49473728, 41502268, 21897890, 23503672, 32647658, 30276298, 14609331, -70395584, 9185861, 920197, 13238700, -26297548, -80736792, -23109608, -64712272, -69442104, -73332272, --51901460, -46185392, 2305861, 38361576, 39095476, 47794396, 86872160, 62565864, 76235672, 74968120, -47801376, 51445120, 17547088, -18049064, -58700392, -76968496, -87997440, -57198228, -78978544, -66318592, --75833552, -44202728, -5293011, 20817170, 61349312, 58597848, 59436980, 99037112, 68961072, 81874424, -50959252, 8522826, -9623948, -24745454, -40991704, -45844480, -48641580, -47334836, -54641648, -46769508, --34274912, -20999168, -10922102, -8198556, 23685670, 22563074, 31714576, 51331840, 57765164, 36694052, -44125956, 27271432, -1708860, -11966316, -26683558, -33286534, -28613608, -24642374, -29909078, -10888816, --7439420, 695785, 8391292, 9402220, 2312840, 1302449, 8213051, -1187022, -7259569, 6633577, -3852586, 4733591, 7246684, 2183454, 1877975, 4459250, 10094247, 8725226, 3910031, 852014, --2333778, -8684424, -6696391, -7903814, -6986838, -2757906, -5435281, -4656282, -2718714, -2073396, --3004867, -828929, 3099893, 3169686, 3795141, 6293738, 4003447, 2831457, 3544959, 927713, -641024, 338229, 5906, 26307, 64961, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +7221988, 367757, 3323768, 3297998, 9343701, 4401805, -3434900, -4341138, -6060736, 4363150, +-5300527, -3850975, 879931, 1349157, 587337, 5486821, -1776506, 5129265, -1298691, 4605279, +-4337917, 2026688, -1909650, -4636417, -316217, -8854075, 1341640, 2187212, 3976066, -3227131, +-40802, 3470871, -2535105, 3897146, 3669513, -2185602, 2638184, -2932926, -1358820, -2165737, +-3169686, -4029753, 3628174, 5354751, -3989488, 2382096, 4307316, 3488050, 5270999, 671626, +-780610, 3074123, 2334852, -5551782, -202937, 653909, 363462, 1775969, 3614215, 818728, +1315871, -1920387, -1213865, 2561948, 3590593, 2007360, -1890859, -3312494, 3701188, -2989297, +-967441, 2077154, -616865, -125628, 1580548, 382252, 106300, 3357591, -3272228, 2503429, +1363115, 1644436, 3097208, -1236414, -354335, -1037235, -430034, 135828, 1517734, -1194538, +-216359, -823023, -476205, 57982, -116501, -476741, -340913, 347892, 449361, -2684, +-195421, -328565, 49392, -100395, 52076, -474594, -107911, 487479, -1068910, 3682935, +-1955821, 2697776, 256087, -230854, -7508140, 1202591, 6391448, -3927748, 2639794, -7973070, +-8067023, -2660195, -6560026, -5726802, -863825, 1180042, 4503810, 714575, -2172717, 1017907, +3064996, -3966939, 5491653, -3724274, -4027069, 4651987, -2317672, 5359583, 6813429, 941672, +-4916664, 3437585, 2246805, 1376537, -2502355, -1815161, 2861522, 2388002, 485868, -5558225, +-1603633, -5134634, 4635344, -4634807, -3021510, 3410204, 161598, 2959769, 848256, 1134408, +5045513, 851477, 5659157, -7297687, -3744675, -1688996, 3616363, 5109938, 5844377, 7947837, +864899, -2267743, -759136, -1069984, -241592, -5170067, -2260764, -2251100, -626528, 794569, +-4188667, -2485176, -943282, -1788317, -3274376, 3934190, -3936338, -1347009, 2625836, -6753299, +2043868, 3675418, 4085588, 2143726, 1187559, 2441689, -1194001, -2622615, -655519, 700617, +-276489, 700617, 134218, -733366, 57445, -1054415, -1227824, 1497333, 682363, -144955, +-4832, -17717, 1147830, 523986, -438087, -472983, -457414, 78383, 851477, -1008244, +-159988, -63351, -177167, 549219, -18254, -413391, 8549669, -6314676, -2361158, -1233729, +5261872, 4751845, -4768488, -421444, -8863202, -1924145, 10776610, 4070555, -4316442, 7743826, +2535641, 2988224, 802622, -2575907, -8458401, 1154273, -3801583, -2398202, -1534377, -5146982, +-1813550, -3980361, 2803540, -1792612, -2325188, 4850629, -9104257, 8405788, -2943126, 1209033, +-2841121, 2634963, -325881, -821949, -211527, 3586835, 191126, 2273112, -3244848, 6300180, +-4873714, 7333657, 1573032, -709743, -4083440, -4792647, 9961640, 1729261, -9310952, 9550397, +9002788, -4867809, -1774895, 2835752, -3666828, -672699, -2254321, 2269890, 5747740, -3475702, +1324997, -2600603, -2373506, 951335, 7732552, -7066832, 4308389, -7284265, -5595806, -5258651, +-916439, 153545, 9664, 4423817, 6847252, 1791538, 1671816, 3344706, 2719788, 1501628, +1709934, 2007897, -727460, 2160369, -972810, -2112050, 3649649, -178778, 513785, -657130, +-1066763, -630286, 36507, 1540283, -376883, 346819, 166967, -1367410, 25233, 758062, +980863, -111669, 859530, 2437931, -3271691, 395674, -6462852, 6227703, -9084393, 387621, +9549860, -17251274, 12074227, 4850092, -4559108, 3829500, -312996, 10531797, -1057099, -8636105, +-6022618, 3571265, 4108673, 1214939, 331249, 4505958, 1379758, 783295, 6094559, 2528125, +1777580, 4413079, 3185255, 15004468, -4058207, 4035659, -161598, -2395518, 3934727, 2471217, +1574106, 1959042, -2392834, -4076998, 331249, 56371, 271657, 2226941, 4620311, -4590247, +-4884452, 2199560, -1125281, -1826435, -2900177, 6149320, -4306779, 8858907, 4191888, 455803, +2124935, 810138, 2464774, 11239393, 9446781, 783295, 592706, 2216740, -2184528, 4252018, +-857383, 3842385, 1225676, 318364, 70330, -4691715, 4628901, 3565897, -952946, -2663417, +446140, 4468914, 498753, -1154809, 319975, -3246459, 2478733, 988916, 3140158, -731755, +982474, 1372242, 1354525, 1163936, 1916092, 963683, 896038, -3966939, -159451, 1671279, +2353105, -1298154, 1555315, 1452236, 1293322, 1460289, 663572, 1152662, 1407139, 1580548, +317828, 667331, 511638, 778463, 299574, 481036, 1009854, 459025, -91805, -796716, +-1087701, 2228551, -1000727, 4868346, 132070, 5616744, -2121177, 4984847, -3733400, 10399726, +-7916699, -2935610, -3769371, 10723996, 6070937, 3959960, 6806450, -6109591, -1226750, 9899363, +5615670, 4661650, 4806069, 2587718, 3305514, -1101122, 9478993, -953483, -4347581, -3209414, +3330210, -3539590, 2179696, -8921721, 3326452, -1684701, 185757, -9587441, 4158065, -2030983, +9040369, -1440425, 2867428, 2510945, -3797288, -912144, 4122632, 600222, 2829847, -2001992, +5016522, 7135552, 905701, -4919348, 1909113, 5028870, 3577708, 696858, -3388729, -6945499, +5857262, -7736847, -3284039, 4396436, -10304163, -2323041, 6398965, -4723927, 1348620, 128312, +-576063, -1338956, 2604361, -5100274, 288300, -8542690, -4440460, -11689827, 890132, -3248606, +261456, -2230162, -361851, -2940442, 2691871, 2615098, 1040993, -1809255, 2485176, -235686, +971736, -3335579, 865436, 739808, 1086627, 788663, 2325188, -251256, 2623151, -1100049, +-172872, 1869921, 2462090, 433255, 1363115, -1532230, -597000, -396748, -612570, -1085553, +766115, 1970316, 524523, 2076617, -1919850, -1100049, -1075889, -2611877, -3059091, 2805688, +-18962818, 3308736, -5982353, -3485366, 4337380, 3279745, 2306398, 810675, -13933948, -1495722, +4329864, -7511361, -1967632, -10266582, -5218922, 2247342, -1224603, -9459665, 9804337, 5881421, +-3010235, 1014149, 7712151, -5037460, 2065879, -3466039, -5395016, -3730179, -9750650, -3696356, +7337952, 3399467, 9379135, -4819490, -15374372, -6710887, 3743064, -5004711, -10027138, -1771674, +-1899986, 9059697, 4642860, -10744398, 7096897, -7633231, -488016, -5541045, -5282810, -5085242, +-11829951, -7077033, 823560, 7488276, 11396696, 7235410, 2084670, 4460861, -5279052, -8854075, +-5463199, 5442798, -2739652, 5877663, -1867774, -5666136, -339302, 410169, -2750390, -6372658, +325344, 4620848, -15401216, -10237591, 14249091, -4749160, 224949, -7994545, 3713536, 2019172, +-995359, -717260, 5170604, 3767760, 1110786, -1742683, -2021319, -462246, -2250026, 1124745, +1472100, -3133716, -1595044, 1015223, 272194, -105227, 828392, 2869038, -3248606, -1571421, +-5882495, -2476586, -946503, -1198833, 218506, 714038, 1576790, 4295, 2042794, -2628520, +-1879585, 331786, 437550, 731218, 7244536, -203474, 3666292, -4968741, 3644280, -6790344, +-477815, 11792370, -5556077, 11140071, 11298985, 13925358, 3487514, 5572720, 12014634, 9402757, +6925635, -9310952, 1218160, 2945811, 8060580, -1584306, -6901476, 8945343, 9075803, -2570001, +6049999, -3007551, -3150896, 5689758, 4919885, -685584, 5836861, 517544, -9518184, -7612830, +8250096, 11958800, -929324, -4134980, 2536178, 372588, -5686537, -10679436, 5589900, -10098005, +-4906464, 7731478, 1648194, 6840809, 303869, 10950019, 1532230, 12024298, -13967234, 12688944, +-2450816, -471373, 3832722, 6712497, -5365488, -11559368, -3271155, 10620917, -2052994, -12369506, +-7303592, -7573101, 2064269, 4496831, -10771778, 5470178, 6252399, 11221139, 3462281, 3547643, +52613, 3172370, 594316, 2486786, 1711008, -8148627, -892279, 3913789, 2747705, 6634651, +-4319127, -1311576, -55835, 558346, 3172907, 427886, 2624225, 1079111, -1248225, -541166, +2502355, 2302103, 897648, 2507187, 714038, 1113470, 3300146, 51003, -1743220, -904628, +740345, 1608465, -201863, -755377, 2672544, 1372242, 611496, -2711735, -852551, -1550483, +-1332514, -125628, 2854543, 158377, 2717104, 3763465, 12053826, 1552094, 5039608, 14328548, +15444702, 4607963, 3893925, -11403138, -5747203, 12613245, -9346386, 12890271, 3655554, -48855, +-2547453, -4503273, -7425462, 1367410, 5733782, -13861470, -6251325, -5895380, 3104725, 2784750, +3068217, 427886, 2386928, -507880, 4212289, 3394098, -3642132, -6504728, -11950210, 2109366, +-6438693, 10816875, 473520, -6012954, -7501161, -2311766, 5067525, -9418863, 5934034, -3156264, +1987496, -117575, -6657200, 6648073, 8475044, -5788542, 7140383, 2012729, -493384, 20199768, +-5030481, -13123809, 2540473, 4915053, -3220689, 1078574, -5646272, 13706851, 8043937, -1380832, +-2871723, 9726490, 9378598, -1971390, -7873212, -5790153, 19161460, -1782411, -2557653, -7724499, +-4924180, -1563905, 1932735, -2025077, -5003100, 8195872, -2525441, 9730248, 2911988, -3107946, +-995359, 1714229, 29528, -1705639, -1619203, 3403762, -4254165, -1102196, -1075889, 5602785, +607738, -1267552, -50466, -2915746, -2589865, -398358, 664109, 5871221, -1294396, 3462281, +1440425, -1968706, 1313186, 195421, -2764885, 2160369, -1324997, 3000572, -193810, -3170223, +-2189360, -1833414, -2201708, -90194, -621697, -1040993, 1170916, 1031329, 1766842, 4924180, +-10581189, -3029026, -3362960, 828392, 4437775, 10336376, 9029632, -14552960, 287763, 1656247, +-1513439, -4378183, -10036265, -1073205, 3326989, 5887864, 4786204, -9225053, -1642288, -11681237, +10855530, 425202, -1124745, 5185100, -5223754, -1002875, -12429635, 2022930, -7437810, 5048734, +-1011465, -2133525, -4232691, -8282845, -8039105, -1010928, -9905805, -16142098, -3033858, -7393786, +-15498389, -1324997, -1374390, -8527658, 5492727, 8414915, -1101122, 3970697, -1117228, -1421097, +2254858, 2427730, -12562242, -3770981, 6817187, -6113349, 14922864, 2620467, 3946538, -9745281, +-140660, -4449049, -9904731, -1138703, 13849122, 6356015, 10511932, 5774047, -4648765, -11296838, +-17559974, 11664057, 12004434, -1530619, 6181532, -13750875, 6492380, 5497022, 9767293, 1381369, +-11732777, -1601486, -10939282, -3878892, 861678, -3637837, 2267743, -2525978, -3658775, -1043140, +1011465, -646393, -1225139, 3104725, -1042603, 1138166, -7951595, 33823, -692027, -1363115, +-3630321, -1637456, 2333241, -3446711, -3918621, -1511292, -1437203, -1717450, -61203, -1066226, +-4332549, -3580929, -2183454, 1088237, 1388348, 2388539, 1148904, 2179696, 743566, -3229279, +579821, -641561, -1956358, 1017370, -3645890, 1394791, -1998770, -27109834, -6783364, 21555904, +7203734, 8792872, -5618354, 8880919, 15027554, 1106491, -2534568, -25035364, -5846524, -1173600, +14348412, 4042638, 5748277, -18754512, -5057861, -6971806, -4474282, 11665131, -6590091, -2279554, +2013266, 3343632, -5933498, -2584497, 3002182, -5235565, 11454678, -12847321, 1381906, 8476655, +-11027329, 9046812, 15356656, 17903572, 8580808, 8766028, 11733314, -8047158, -14787572, 5905043, +6405944, 9777493, 7754564, -16687559, -4769025, 8784282, 5051956, 3201361, 10459319, 2364380, +12185359, -4529580, -2652142, 6995428, 6433861, 1959042, -10776610, -5737003, -11575474, -13216151, +-794569, -14455786, 741419, -8411157, 573915, -7649337, -4552666, -18571976, 12792560, 3393561, +-2795487, -3321620, -2124935, 2495913, -6910603, -954557, -16207059, -8852464, 5589363, 7326678, +2972117, 2465311, 587874, -8472897, 3837017, 3881577, 2964064, -8096014, 1802276, 322123, +-6503654, -2171106, 1067836, 1022202, -3381213, -4839355, 1536525, -2376728, -3030636, -731755, +636729, -600222, -433255, 1646583, -1577327, 2290828, -463856, 3266323, -1520418, 2918430, +4494147, -3243237, 2467996, 224412, 1690607, -1999844, -280247, 2639258, 2034204, -3995930, +2034741, 2095944, 16995722, -8292508, -7096360, -6291590, 11700028, 14853071, -9339406, 23841364, +4999342, -10210748, 12199318, 3466039, -9948755, -11694659, -9438728, -780610, -5074504, -3490735, +-15574088, 6219113, 6468221, 21494164, 2900177, -3696356, -9725953, -10199474, 2561411, -1231045, +-13625247, 2384781, -5063767, 624381, 10493142, -8160438, 13882408, -12231530, -10270341, -724239, +-15979426, -19129248, 3081639, -2221035, -22058416, 1492501, 235686, -10522133, 5488432, -5128728, +2763812, -14929306, -24338506, 15933792, -14899242, 24703578, 13485660, -17716204, -2285996, -17951890, +-4851166, -2308008, 7416335, -6490770, 11329587, 14272176, 13566728, -9845676, -8012799, 1232119, +-12045773, -1162326, -3940096, -15912317, 9470940, 6988449, -8471286, 12451647, -18577882, -1825361, +1098975, -4904316, -3142306, 16081968, 11900281, 7885560, -984084, -8464844, -6831683, -6393059, +2782602, 2551748, -522375, 1778653, -498753, -794032, 334471, -726386, 644782, 3167002, +-3837017, 1478006, -276489, 3489661, -2068027, -420370, 2044941, 4679904, 1876364, 3767223, +-4550518, -5019743, 2363306, -3360812, 802085, -72478, -5301601, -3012920, -3161633, 4295, +1743757, 1522029, 1071594, 1191853, -14448807, -10988137, 7209640, 8733816, 9655086, 16321949, +-6010807, 30029338, -919660, -15534897, 6801618, 14807973, 4074850, 7787313, -6557342, -16638166, +25062744, 13914620, 10288594, 4874251, -8638790, 8077760, 20883204, -7650411, 4507032, -193274, +4427038, 3607773, 14893873, -4262218, 5092221, -5226975, 4560719, -1395864, -754304, 9243843, +2006824, -18398566, -12310987, -17239462, -11779485, -9133785, -4502737, -13191455, -7430831, -6465537, +-11410654, -7937100, 5107253, -11936251, -4075387, -9259949, 22262426, 11325829, 19389092, -17488570, +-1591822, -15976741, -3328600, 17966386, 9922985, 21161840, 10133438, 13109314, -13836774, 6308233, +6222334, 19600620, 19928648, 5982890, 18037788, -15451682, -7337415, 11563126, -40564356, 762357, +6738804, 879931, 10147934, 6544457, 22971096, -1742146, -3104188, 24850144, 7562901, -2172180, +-11049877, -193274, 257161, 20370494, 2767033, 580894, 1711008, 4144644, 6410239, -1102733, +-1086627, 6596533, 3223373, 2168959, 3539053, 4798016, 3755949, -210990, 879931, 683974, +6863895, -1168231, 3658775, 6588480, 4910758, 7346542, -3120294, -2393371, 1817308, 2405182, +-2383707, 243739, 4299799, 6825240, -332860, 2064269, 17480516, 11359652, -11475079, 22353158, +13254269, -1140851, -5604933, -2820183, 13404593, 33028836, 17622788, 4744328, 1349157, 10849624, +-2685965, 26665304, 15040439, 16655883, 639950, -8490613, 5611375, 2008434, -14226005, -3494493, +-941672, -3349538, -4091493, 5416491, 2900177, -11631845, -5630166, -20555176, -2162516, -6387690, +-26506928, -11876121, 748935, 9903658, -13669807, 17029008, -4772246, -4062502, -2376191, -4153234, +12324946, -8330626, 8596377, -27118960, 8332237, 11835856, 9066139, 18076444, -17911088, 15480136, +-16086263, -11962021, 13326210, -7842611, -2449205, 11244761, -18236968, 16117939, 25760676, -522375, +-3824132, 32959042, -7168301, 6350109, 18505940, -39605504, -20352240, 1351841, 1130113, 5380521, +9451612, 19276350, 11510512, -15141370, -12218108, -3587372, -4411469, -20454244, -2081985, -4070019, +4961761, -21371758, 155693, -6433324, 8604967, -3217468, 10980084, 2983929, 2147, -6321655, +-4746476, -5943161, -6405407, -4820564, 4258460, -12985834, 9217537, -1536525, 5086852, 331249, +-934155, -8858907, 4768488, -6286759, 1505386, -6679748, -3759707, -28991, -3069828, -7665980, +460635, -2390686, 740345, -5212480, -5879810, -6132140, 1000727, 1337882, 7677254, 8336532, +-177167, 208306, -6032282, -31468688, -18950470, 23074712, 22943178, 2416993, -5496485, 19448148, +-31565326, -16972100, -34149284, 14856829, 4082367, 1458678, 6555194, -15568720, 7800735, 10734734, +14092861, 23918672, 24586004, 20642686, -891206, 4623533, 215822, -9066676, -1917166, -7580081, +-3940096, 28513214, -6727530, -26329224, -6695317, -5464809, 2294050, 41106596, -14939507, -14818711, +13874892, -22355304, 7651484, -24800214, 32258962, 9069360, -964757, 8227547, -12530567, -15844134, +22080964, -26994406, -21576842, -19418084, 5301601, 8024073, 10009958, -18021682, 18354542, -5757941, +1320166, 28313498, -2007360, -4895726, 8286603, 22835268, -14898168, 37915972, 1338956, -43845712, +-5396627, -1756642, -14688788, -4290673, -81068, -4171487, -12010876, -10119480, 21463026, 14355391, +-5377299, 13887777, -25218974, 6977175, 11193222, 6931004, 737661, 13368623, -2293513, -679142, +4958540, 13065291, -5523328, -5821828, -4563403, 518080, 4891431, -2621541, -10450729, -11238856, +467615, -5324686, 3788698, -226560, 2648921, 5826123, -7337415, -4889284, 12453795, -2991982, +2182917, -1063004, 245887, -4378183, -4855461, -2514167, -1688996, -6765111, 3132642, 5990406, +3321084, -222265, 474057, 2641405, -5211406, 1063004, 5737003, -698469, 4905390, -2952790, +-9198209, -12437152, 186294, 5459441, -8862665, -4029216, 41791644, 24776056, -33660196, -27191974, +33641940, 32073206, 20075750, 23057532, -40080096, -8777839, -11034845, 10604274, 3912715, -16163036, +-29599840, -44837848, 13143137, 11866458, 3497714, 12366285, -6110128, -2225330, -10629507, 8935679, +15546708, 13966697, 3659849, 18547816, 5957657, -2068564, -7533373, -27241904, -1449552, -11443403, +-9492951, 9516037, -29241748, 2652679, 1196148, -13620415, 11964705, 10984379, 5429376, -19654844, +-18299782, -48228724, -12269111, 375273, -15446850, 2757906, 10209674, 10188199, 27002460, 13277355, +-11909407, -8325794, -17919678, 22733262, -9529459, 39323648, 32846300, 9133785, -20965346, 43412456, +19972134, -17539572, 2705293, 21829172, 50481436, -20820928, -38562364, -19868518, 543850, -13879187, +6103686, 13952738, 11635603, -10091563, -15761993, -8683887, -13116293, -14384919, 4017405, 15717433, +12542378, 7084012, 6256694, 2323041, 10551661, 1468879, 1708860, 15369004, 12033961, -663036, +-5021891, 3505230, -7974144, 8569533, -3030100, 8771397, -4461398, 3536906, 2292976, 5812702, +7443715, 4422743, 3467649, -7192460, -14248554, 1735704, -7231115, -3621194, 4305168, 1335198, +-2105071, -2719251, 10302553, 3442416, 13936095, -4421132, 7455527, 7542500, -9478456, 9903121, +519154, -7917772, 16753594, 6030671, -5754720, -16114717, 13639742, -27361626, -25299504, -9057012, +19756312, -11198053, -14345728, -55835, 22752052, 2483565, 23508504, -7744900, 28361816, 3357054, +15241228, -9813463, -6528887, 9045201, -29056528, -8025147, 11104101, -5086315, -3810710, -23350126, +-22049826, 10415296, -13401909, -9581535, 18305150, 25061672, -3537979, 16530792, -29358248, 1939178, +-7871065, 38441568, -15654619, 12899934, 23616952, 22494354, 6691022, -15428059, 10096931, 7295539, +6960532, 12536473, -37547676, 69806104, 22449258, -5932961, 3862786, 7999377, 19541028, -5178120, +15093589, 40797356, -2099165, -49999324, 21203180, 17675402, -17605070, 23795730, -4967667, -10306848, +-26684632, 52235392, -26556856, 58135604, -37908992, 14543296, -495532, 63143000, 28159954, -26668526, +26051124, 1351841, -16464757, 12871480, 2212982, 5918465, 14334453, 6219650, -15915001, -3976603, +19452444, 5375152, 11125576, -8603356, 12270185, -20068772, 7815230, -912681, -6285148, 12858595, +-6738804, -3717294, 9366787, -1316944, 1637456, -1371705, 15561203, -9776419, 15192910, -8577050, +14076755, 19523848, 7454990, 5458904, 10955925, -2551748, -7303592, -7162395, 9492951, 3416647, +-1241782, 93416, -2113124, -13640279, -10368051, -1930051, 723165, -8450885, 47631724, 5566815, +25796648, 13086228, -26422638, 1494112, 15454366, -4842039, -23026930, -4536023, -50055696, -14128832, +-18733036, -10922639, 10761577, -1622424, 17732310, -8923331, 1802276, 17236778, -15643882, 1504849, +9794136, -1155346, -17149804, -209917, -11820287, 34257196, -6166500, 19771882, 3107946, -531502, +35194036, 25242060, -15672873, -18460306, 8834211, 15776489, 19265076, 23320062, -554051, 8081518, +22203370, -1440425, -9098351, 6756521, 664646, -20024212, -567473, 12790413, -19583978, -26479010, +-2596308, -1844689, -2925410, -9066139, -9586367, -31519154, -126165, 30404074, 9345312, 16785270, +9982578, -4408247, -40485972, -29917132, 7864622, 25834228, 8440684, 12899397, 52964464, 54776940, +46526844, -4029216, 23081692, -15110232, -39225400, -65594888, 11265699, 7696045, -2989297, 8706972, +-20716238, 4061965, -5102958, 23547696, -1869921, 18827526, -23713052, 11256036, -29102698, -6027987, +12192338, 1676648, -14849313, 3052111, -12241731, -13603235, -5686000, 3054796, 11028939, 13887777, +18773302, -4990215, -1085016, 4412005, -5232344, 5591511, -19591494, -17132088, -11655467, -16071768, +-15105400, -16411070, 10281078, 7034083, -2727841, -10952703, -15997679, 9166534, 92342, 14771466, +-3819837, 13023951, 9909026, 76236, 4219806, 15699716, -19527068, -18815178, 11093364, -2208687, +-14444512, -30776126, 9231495, -18315888, 9505299, -7756711, -21602612, -6445672, 255014, 11261404, +-8893267, 5910949, -31880468, 30577482, -67258112, -6400038, -16494285, -13492103, 9489730, 39104604, +6650757, 14429480, -32898376, 7849053, 12724914, 26999238, -13409962, -21166672, -14511621, -6926709, +-568009, -190052, 16554415, 12105902, -9035001, -48489644, -22748294, -39358544, 5083631, 70491152, +-49117244, -19248970, -7145215, 40909028, -13063680, 17528298, -12458090, 19928112, -7237020, -11425150, +-24665998, 13391171, -28661928, 27398670, 49238580, 6678138, -8474507, -8694624, 40933724, 11143830, +155693, 21788370, 7537131, 8148090, -7253126, 47153908, -72927472, 53613004, -44224740, 21671868, +53057880, -41717016, 85703928, 58454504, -21286932, -6863358, 59119152, 21809308, -5005248, 38997228, +35128000, -44546864, 60990148, -36134096, 11318849, 12003360, -15629923, 12081206, 20322712, -11787538, +-21536040, 7605314, -11334419, 5551782, 5662378, -5652177, -16744467, 7337415, 6791954, -6667400, +7896298, 6296959, -13343927, 34656628, 4334696, 1141388, 1338419, -6503654, 5852967, 5043366, +2434173, -10720775, 6426345, 2003602, -4243428, -9346923, 21772262, -7567196, 17834314, 20053202, +-1340030, -6834367, 5837935, 5260261, 8275865, 24082418, 21020644, -17830556, 9169755, -6985765, +-390842, 10639171, -1634235, 49753440, 47438452, -40207336, 39534636, 36369784, -33879240, -51261508, +-75781480, 17819282, 114192976, 46966004, 369904, 23648090, -108848432, -44917304, -3697430, 16720308, +82184200, 80347560, 14024142, -30840550, -60226716, -35316444, 4271345, 26001196, 39391292, 63184876, +38280508, -50770272, -119998704, -97881768, -9435506, 109086264, 118790744, 74998720, 23090818, -25121264, +-48212080, -73109472, -41515152, -44451836, 87456808, 72645080, 46080704, 40652404, -61495880, -86425480, +-100117296, -89820648, 34839164, 121734408, 150086016, 50689204, -45168024, -106667664, -127728568, -34802120, +20842940, 13234942, 80325016, 31422518, -29996588, -17933100, -61378304, -13459891, -70204464, 30502320, +83800720, 156241776, -9223442, -83566104, -181222928, -7122667, -61089468, -6551973, 87278568, 17200808, +-7699266, -38856032, -81468552, -53637700, 39560408, 63340568, 21158082, -11132018, -27547384, -33413234, +32807108, 37284076, 23393614, 19929722, 9262634, 18573050, -1476932, 1687922, -17820894, -8492761, +2406256, 47040092, 41564008, -2229625, -17324288, -4689031, -41719164, -28373090, -704912, 15953119, +43882756, 33411624, 24173150, 2044404, -58228484, -52937620, -35339528, 13703093, 56965760, 109462608, +67546952, -50705312, -90574416, -80554792, -31936304, 2113661, 75537200, 94286344, 70966816, 12212740, +-55582784, -127587912, -79746808, 25726318, 79597552, 90094992, 26947698, -13459354, -34496640, -41760504, +707059, -10460930, 51341504, 30015378, -4581657, 10883447, 5512054, -36643588, -3876745, -3017215, +3937948, 1101659, 2872796, -13423383, -5411659, -4975720, -3429532, -6125697, 21844740, -7904888, +9348533, -16522739, -1724966, 6774774, -846109, -5041218, 37766184, 5206037, -21488796, -24919400, +5163088, 5204964, -14700599, 4031901, 18929532, 9844602, 17810692, -18331994, 5463736, -671626, +4217658, -12910135, 2369748, 14276471, 20161114, 5104032, -5358509, 5915781, 2199560, -4736275, +13712220, -20412906, 4510253, -33236068, -10499048, 13700409, -11374684, -13370233, 17956722, -11540577, +-31113280, -24021752, 21148956, -2673617, -4328790, 4865661, 10654203, 26914950, -17682918, -22899156, +849330, -3163244, 18112414, 112206, 10534481, 4857071, -1938641, 27958090, -36587216, -5366025, +-5288179, -21434034, 5338645, 11956652, 382789, -12779675, 5510443, -2907693, 3485903, -11055783, +7940321, -605054, 1161252, -1012539, -2860985, 14155675, -14428943, 1069984, -2604361, -5171678, +-4731980, 1614908, -6348499, 6464463, 8178692, -8735427, -2383707, -3373697, 7471096, 8428336, +-4461398, 10399190, 834297, -1561758, -7242389, 7479149, 2405719, -3047279, -11856794, 5436355, +-10782515, 6742562, -5929739, -5196911, 9426916, 9556839, -13385266, 1499481, -3320547, -12974022, +3927748, -7621420, 8190503, -7514582, -30088930, -33182918, -78932376, 22812718, 22565222, -1613834, +-66542464, -43021612, -6335614, -10923176, 44452912, 29982630, 14417668, -29465624, -12166032, -7817378, +27831924, 3045669, -7941932, -17301202, 11407970, 5056787, 13841606, -773631, -5666136, -7090991, +-15934866, -7968238, -9647033, 26579942, 14207752, 3114925, 3979287, -17530982, -947577, 2111513, +24271398, -1772748, 11308112, -9041980, -6297496, 4929012, -10016937, 6594923, 2895882, 7094212, +23676008, -2092723, 20775830, -294205, 13338558, -10344966, 867583, -15203110, -19666118, -20700132, +-17710834, 5812165, 3060701, 1504312, -26077430, 12861280, -22698366, -2579665, 1171452, -14231374, +-15402826, -8147553, 272194, -27115202, -18342732, 16818556, -8189966, 15657303, 2484102, -4364224, +-14660871, -16935056, -1107028, 23990614, 29743722, -7428683, -3054796, -11206643, -14919643, -10310069, +9478456, 5025112, 3642669, 9292162, -1847373, -6183679, 6442451, 3539053, 5361193, 8127689, +-4570919, 2729452, -908386, 173409, -6209986, 10744398, 3404835, 2438468, -3232500, 1543504, +-234613, 16757889, 2136746, 5016522, -9409200, 620086, -6092411, 10963978, 758599, 157840, +-3863860, 2538863, -1262720, 130997, 5255430, 491237, 6888054, -4690641, 2238752, 719407, +-8826158, -483184, 5049271, 1935420, -1815697, 17746804, -38152732, -94612224, -90687160, -13756780, +27435714, 91260536, 78864728, 74349640, 79859552, 44466332, 10760504, -40305584, -40502080, -84171696, +-65369404, -57303992, -36354212, -45721536, 62989452, 51831664, 68209984, 39351564, 55751360, -2004139, +14686104, -8937827, -21746494, -12420509, -26001732, -30228516, -30131344, -29702920, -35187056, -25738666, +-20921860, -2350421, 5542656, 49473728, 41502268, 21897890, 23503672, 32647658, 30276298, 14609331, +70395584, 9185861, 920197, 13238700, -26297548, -80736792, -23109608, -64712272, -69442104, -73332272, +-51901460, -46185392, 2305861, 38361576, 39095476, 47794396, 86872160, 62565864, 76235672, 74968120, +47801376, 51445120, 17547088, -18049064, -58700392, -76968496, -87997440, -57198228, -78978544, -66318592, +-75833552, -44202728, -5293011, 20817170, 61349312, 58597848, 59436980, 99037112, 68961072, 81874424, +50959252, 8522826, -9623948, -24745454, -40991704, -45844480, -48641580, -47334836, -54641648, -46769508, +-34274912, -20999168, -10922102, -8198556, 23685670, 22563074, 31714576, 51331840, 57765164, 36694052, +44125956, 27271432, -1708860, -11966316, -26683558, -33286534, -28613608, -24642374, -29909078, -10888816, +-7439420, 695785, 8391292, 9402220, 2312840, 1302449, 8213051, -1187022, -7259569, 6633577, +3852586, 4733591, 7246684, 2183454, 1877975, 4459250, 10094247, 8725226, 3910031, 852014, +-2333778, -8684424, -6696391, -7903814, -6986838, -2757906, -5435281, -4656282, -2718714, -2073396, +-3004867, -828929, 3099893, 3169686, 3795141, 6293738, 4003447, 2831457, 3544959, 927713, +641024, 338229, 5906, 26307, 64961, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -4422206, -7414188, 2582886, -1357747, 1876364, 2378875, 4445291, 7424925, -3573950, 2461553, -3045669, --2370822, 1486596, 9664, 614717, -5254893, -2555506, 1842541, 3695283, -501437, 3112778, --5634460, -4997732, 3134253, 2003602, 855772, 2280628, -1929514, 4025458, 4504347, 4374424, -6274411, -3491272, -2888366, 218506, 789737, -6030671, -389231, -528818, 1646046, 586800, --3777961, -934692, 5122822, -2747169, 996969, -3150359, 1498407, 1579474, 1017907, -4690105, -3772592, 339839, 843424, -651224, -1549410, -1948841, -3204583, 6790880, -1206886, -1258425, --1533303, 3012920, 695248, -6433324, 1624035, -2941516, -4420058, 2597382, -2735894, -6963753, -2767033, 1015760, 295816, -6417218, -7785165, -3181497, -3841848, 3600256, -1054415, -15032, --1767916, -2107755, -1758789, 48318, 3176128, 574452, -1430224, -120796, -1494112, -664646, -1403917, 424665, -1354525, -1825898, -639413, -751619, 691490, -461172, 255014, 252866, -754841, 194347, 1085553, -461172, 249645, -255014, 762357, -49392, 699006, 4347044, -517544, 375273, 3867618, -5771363, 966905, -4815732, -6096706, 1760400, 5720360, -3535295, -2716030, -2660195, -1285269, 1154809, 288300, -2828773, -8406862, -8347269, 150861, -2111513, --75162, 4370666, 701153, 5350456, 7226820, -3805341, 6241125, 783295, 6335077, 403727, -7517267, 960999, -4204773, -1152662, 424128, 3427921, -925565, -1125818, 747324, 2602213, --3122978, -185757, -963146, 2302639, 2801929, 158914, -2845416, -197569, -514322, 1648731, -2942590, 5274220, -1837172, 3424163, -1539746, -4581120, -4092567, -2763812, 2596308, 2820183, --1547262, 4563403, 151934, 1660542, 239444, 5548024, 3677566, 4089883, 1661616, 2411087, -1487669, 2237678, 4531728, -955093, -231391, 6403260, 1286880, 191126, 1333587, -2372433, -358093, 1894081, -141734, -5972152, 1876901, 642635, -957241, -2068564, 1384590, 415538, -3258807, -1195612, -590021, -1239635, -1010928, 830002, 238371, 1312113, 619012, 308701, --1174674, -926639, -548682, -572841, 514322, -1547799, 1371168, -552440, 406411, -369904, --553514, -856846, 529355, -689879, -523986, -1686312, 6424198, -6649683, -4496294, -3700114, --5393405, 1649268, 2261300, -4344360, 953483, 8794482, -6482180, 4439386, 7575249, 7494718, --4693863, -1313186, 3688840, 675921, 1112397, -3422552, 1809792, -11506217, 8958765, 14070313, -2452426, 4715337, -2338610, -227633, 7446937, -3973382, -9095130, -1539746, 89657, -60130, --7356205, 509491, 1773285, -8720394, -4128001, 4001836, 1322850, -3120831, -849867, 2982318, --4283156, 8968965, 2762201, 388695, -5820218, -597000, 3058554, -1986422, 146566, -2087354, --161598, -884763, -4672388, 265214, -4520453, 6729140, -6569153, -4365298, -1507534, -7834557, -5190468, -4225174, -10920491, -2021319, -4736275, 1307281, 4953171, -5101885, 586263, -3470871, -3504157, 470836, -3638911, 3062312, -3939022, -5167383, 5687611, -3723200, 1592359, 119722, -476205, 1984275, -1176284, -1769527, -1999307, -3154117, 1007170, -4449049, 209380, -915365, -1349694, -1336272, -151934, -11811, 75699, -2369748, 2064269, 84289, 354872, -1284732, --933619, -966905, -108448, 1398549, -5071283, 3238942, -146566, -993211, 3844533, -3637837, --12781286, -2495913, -784368, 5587753, 7914551, 7010461, 3373697, -2750927, -858993, -7881802, --6679748, 2308008, 8993125, -2573222, 9212705, 5859946, -5679558, 3055869, -870268, 3195456, --6347962, -4284230, 1051730, 4588099, -576063, 2735357, 3826279, -7181722, -1436667, -3313567, --9774809, 6081674, 974958, 2208687, 4246112, 7756174, 2711735, 363998, 6091874, -1422708, --3104188, 6256694, -3286724, 10574209, 4882304, 4204236, 230318, -3042984, -3689377, 5182415, -7056095, -5237713, 1284732, 6724845, -1182727, 2185065, 14873472, -4497368, -1777043, 2885681, --7437273, -304943, 1347546, -3325915, 3634079, -2410551, 2246805, 7372312, 273804, -1703491, --5006858, -418759, -6221797, 2632815, -2298881, -3071975, -1262184, 1178432, -1777580, -1804960, --1495722, 332323, 2315524, 1693828, 485868, -539018, -678068, -536334, -326954, -1043677, --1817845, -364535, -550293, 962073, 24159, 479426, -1837709, 777926, 1001264, -704912, --1606855, -615254, -1685775, -912144, -738734, 1249836, 159988, -281320, -107374, 283468, --2547453, -505732, 920734, -3192771, -18236432, -1417876, -321586, -3594351, -5611375, -1791538, -9885404, -6892886, -10351408, 3980898, -4167192, 1559073, 1917166, 6660421, -4434554, -1285269, -1358283, 6198712, -2806224, -3951370, -1144072, -3389266, 4576825, 8345122, 4223564, 147640, --623844, -4665945, -224412, 13088376, 2349884, -1541893, 15097884, -824634, 11243688, -3303904, -149250, 7666517, 2363843, 1963874, 2768107, 1408749, 4234838, 2510409, -7083475, 13355738, -8128226, 10981695, 7369627, 4893042, -7208029, 3293166, 3758633, 640487, -4397510, 12408161, -7520488, 11218455, 2041720, -2137820, -2685965, 8284455, -3939559, -8383240, 10020159, 3201898, --5413270, -3088082, 554051, -2474438, 1034550, -1072131, 1466195, -3370476, -886911, -7926362, -3136937, -899259, -147103, 3033858, -924492, -1411434, 4776004, -222801, 3724811, 4997195, -4085588, 2682207, 2640331, 1127429, 1569811, 115427, -954020, -842887, 2217277, -512175, --1253594, -1280437, 1089311, -1455994, -335544, -212064, 2750390, 1216013, 1990717, -1704565, -639413, -1347009, -437550, 1952063, -179315, -654983, -523449, -387621, -4587562, -609885, --11943767, -4680441, -13363791, -9135395, 1043140, -8655970, -6802692, 872415, -1475321, 9047349, --5923297, 10020696, 12272332, 1321239, -10329933, -7229504, 11027865, -5502927, -2951180, 6226092, --7985955, -14200772, 5770289, 12387223, -6285685, 3218541, -179315, 5444408, -14836965, 3042448, --5931350, 3672197, 350040, -6170258, 10429791, 4821101, 4433480, 13899588, 6492917, 2934000, -7881802, 1647120, 2585570, 4024921, 1367410, 708670, 2186675, 1966558, 15791521, 8931921, -12348, 13287018, 8320963, 9829033, 15291694, -7714298, -6462315, 13432510, -4610111, -435939, --7885560, -3278134, 4793721, 7164006, -5999533, -632971, 2054605, -1630477, 3720516, -6317360, --1161252, -7319161, 14416595, -4567161, 7889318, -2152316, -3804804, 10654203, 1888712, -3015604, -3471944, -1226213, 333934, -2909304, 4031364, -670015, 1470489, 4366908, 2486249, 1365263, -2442763, 273804, -357556, 1805497, 462783, -2841121, 656056, -525060, -1344862, 2743947, -20401, 1388348, 1108102, -503585, 527207, -1626182, 376883, -1476395, 150861, -545461, -1935420, 609349, 1664300, 544387, 4553739, -4858145, 1569274, 706522, 1555315, -6977711, -9082245, 5277978, 12338367, 2397666, -1668595, -13914620, -7441568, -5209259, 3556770, -7222525, --12054363, -3346317, 3090766, 1354525, -13462038, 10940892, 841277, -803696, -11467563, -6581501, -2705293, 1430761, -12741020, -3944928, 4656282, 534723, 1284732, 6550362, 7628399, 4478041, --1973538, 3868155, 1188632, -4547834, -9432285, 16273094, -4081293, -7888245, 153008, 4057670, -5248987, 12176769, 1993939, -191663, -4569845, -105764, 6733435, -820339, 8413841, 16165183, -1350767, -3464965, 483721, 13924284, 17365626, -8622147, 2418067, 2462627, 9385577, 5002027, -1649268, 2928094, -6924561, 4350265, 4471598, 4515085, -2997887, 298500, 3402151, 5216775, --739271, 1822140, 1185948, -5829881, 2823941, 325344, -5309117, -3802120, 5607617, -2473901, -3875671, -5587216, -4320200, -1870995, 1266479, -33823, 5055714, 2370822, 893890, 304943, -2519535, 2397666, 719944, -4221953, 169651, -1737851, 667867, -1292785, -1063004, 10737, --450435, -544387, -1478543, -4129074, -1187559, 523986, -2850248, -1731946, -1816234, 147103, --1819456, -2885144, -718333, 1477469, 2254858, -4488241, 6431177, -5662915, -10304700, 7203197, --801011, -2478733, 2764348, 6138045, -17314624, 1108102, 13344463, -1503775, 23974508, 11478837, --7265474, -5323075, -2200097, -6871948, -3027415, 10726144, -4067334, -3463354, 10752451, 8732742, -2915209, 5025112, 10053982, 6664179, 7536057, -5448166, -3706557, 9542344, -1818919, 8641474, -104153, -10233833, -6555731, 2820183, 8170102, -11135240, 748935, -5927592, 3180960, -6780143, -9548786, 9508521, -9192304, -946503, 2755759, -261993, -12447889, -5568425, 2200634, 8328479, -13700409, 4675609, -10050223, -2193118, -2400887, -1149441, 8640937, 1400159, 6936909, -10302016, -4702989, 741419, -8135205, 9744207, 4188667, -1276142, -2112587, 1711545, -301185, -8327405, -6364605, -1901060, 3821984, -6465000, -11425150, -6339372, 2785823, 5160403, 191126, 2863670, -10384694, 137976, -2568391, 6518150, -1938641, 6136972, 431644, 2013266, -5168457, 565862, -210990, 2830920, 3154654, 4356708, 2825015, -1036698, -1190780, -1984812, 5208185, -2374580, -2750927, 587337, 1691143, 2131915, 2953327, 1293859, -904628, 2615098, 1098975, 893353, --912144, 3508452, 1731946, 756451, -3374771, 1284732, -1276679, -11274, 2456721, 11126650, --13597866, -2118493, -4307316, 14050986, -6200322, 11586748, -3544422, 10820096, 14653355, -6418829, -4660577, -3660923, 8371428, -3107409, 6979859, 5801964, 5473936, -1187022, 5754720, -2822331, --7185481, -3425773, 8143795, -9408663, 1554241, 19327, 7261716, 14640470, -13290776, 523449, -13131863, -266288, 12011413, 1685775, 5310727, -1596117, -955630, 3279208, -18380850, 1868848, --383863, -7284265, 4937602, 3071439, 13441100, 6710350, -1270774, 25465398, 6391448, -13344463, -3601867, 1333587, 8934606, -5724655, 1762547, 7545184, 649614, 4612795, -1277216, -14585172, --14925548, 71941, -5007932, 12079059, -20305532, 26220776, -97711, 14614700, 16728361, 4045859, --4361540, -3295314, -7776575, -10341744, -833761, 3379066, -2577517, 5271536, -3449396, -8324721, --5223754, -4195110, 1556926, -1280974, 973347, 5629629, 2870649, 2680060, 2105608, -2321967, --2829310, 183610, -560493, 1622424, 432718, 661962, 1815697, 3266323, 1989644, -6477348, -1232119, -1217623, 4769561, 4768488, 2801929, -434329, -1335198, 1872606, 1534377, -2292439, --2374580, -598611, -1610076, 454730, -1723893, -3143379, 1294933, 5244155, -1311039, 2110977, --3983045, 516470, 2358474, 2401961, -79994, 1539209, 3419868, -24267638, -1764695, 8190503, -1307281, -9148817, -22539988, -64425, 2518998, -3999688, -991064, -6678674, 3435974, -5570036, -11534135, 4030290, -6951942, -8688719, -14832133, 11011222, -4764193, 699006, 14362908, 19758998, -12035035, -1898912, 992137, -13648332, -5856188, -5523328, 3606699, -19340238, 4996658, 5209796, -1063004, -9971303, 9479530, 14747844, -2425046, -316754, 1689533, -8649527, -9119826, 5170604, -3544422, 11141145, -12345347, 13304735, -7070053, 7307350, -11429982, -9055939, -4538170, -350577, --1379221, 4818954, -2486249, -19988240, -14972793, -4265977, 505732, -20042464, 254477, 9823127, --5311801, -2370285, 3007551, 8342974, -17602386, 8922795, -3111704, -2707440, -103079, 7119982, -8957154, -10627360, -5406290, -7167764, -3462281, -2632815, 5205501, 1663226, -6383395, -2930242, --4896800, 3319473, 11679090, 7629473, -68719, -412854, -6531572, 171799, -3991635, 5424007, --1003412, 9517111, 3202435, 3268470, -3446711, 119722, 114354, -7758859, 8195872, 528281, --1443109, 4185983, -1509144, -1385127, -384400, 540092, -6649683, 2835752, 4062502, 4204236, --684510, -1669132, 1468879, 2332704, -2371896, -1513439, 2371896, -5166846, 571231, -230318, -4768488, -472446, 21748640, 530965, -4409321, 16915728, -3692061, -6875169, -1815161, -1552094, -20980916, 23992224, -3116536, 5107790, 6120866, -3059627, -11382737, 5612449, 22313428, 17017734, -14557255, -5277978, 6315213, 11981885, -15535434, -11574937, 13590887, -6925635, -7595650, -519691, -16989280, -2553358, 15641197, 1029718, 14038101, -8392366, 19284404, 5865315, -5960341, -9826885, -3536906, -13904420, 1689533, -16499654, -5609228, -5917391, 9467719, -9446781, 15586436, -19053012, --32944010, 20601884, 9243306, -4050154, 197569, 22723062, 10695005, 1805497, -5938329, 4908611, --2619393, 272194, -14739254, -14981383, 8844411, -5031018, 4900021, 28209346, -7351911, 6066105, --18388902, 21795886, -7266548, -9740986, -4634270, -3051574, 9134322, -18480170, 15480136, -18114024, -13092134, -9329743, -12593918, 12593381, -511638, 4121021, -5084705, 7444252, -4054986, -5708549, --2513093, -8649527, 5986111, -294205, -5589900, -2404108, 2136746, 9200894, 1782411, 1299765, -2496450, -248571, -1535451, 4660040, -2594697, 2094870, 1989644, -2415382, -639413, -558346, -6655052, 5759015, -2090575, -3228742, -6883222, -159988, -1375463, -1027034, -1090385, 171799, -6381248, 1869921, -726386, 7967701, -24724516, -18378702, -17820356, 24875376, 831613, 10676215, -6359236, -21916144, -19164144, 12881681, -34190088, 9988483, 10149008, -2197950, -13606993, -12511240, -21293910, -11455215, -1510218, -3583077, -11045045, 16199006, 5152887, 14656039, 8517994, 10111964, --3212636, 16456167, -1521492, -10762114, -12680354, -2917357, 7134478, -9607305, 12771085, 8204998, --9641128, -34610456, -2915209, -2842732, -864899, 25149718, 562104, -19698330, -11696270, -12044699, -10318659, -7591355, -16413754, -18306762, -11398843, -8900783, -40820444, 980863, 5081483, 13410499, --21327734, 6983080, -17624398, -14408005, -4944044, 17065516, 4353486, 15840376, 29894046, 9004399, -6852084, 19508816, -15215995, -1935420, -7233262, -8335995, 15613817, 14457934, 22942104, 11289322, --21032992, -13993540, 16494822, -24823300, -27368606, -8591545, 19917374, 3170223, -4888747, 13602698, -11076184, -105227, 3148748, 11536282, -7559143, 6829535, -5575942, -1051730, -5810017, -1065689, -1501628, 8085276, -5143224, -6470905, -34360, 4568235, 1438814, 4155381, -664646, -6468221, --1570347, -4279935, 317291, -3573950, -725313, -494458, -7313256, 5928129, 883153, 6033892, -7546795, 10473278, -3948149, -5552319, -464930, 1023276, 12047383, -10572062, -22408992, 6523519, --35970, -154082, 1124208, 3447248, 5104569, 10237591, 3524021, 8659728, 4901095, 10207527, -26016764, 1122597, -33260764, -12023761, 8772471, 588947, -6704444, -21300354, -13930190, 4790499, -17740900, 7022809, -16443282, 9188546, 7350300, -18647138, -3310883, -23119808, 18595060, -9495099, --11937325, 17175038, -16159814, 4817880, 35544612, -3911642, 5987722, 10647761, 173946, 5367099, --20456930, 5255966, 3885872, 3569655, 46610596, 31621696, -3234647, -15963857, -10482405, 14789720, -17134772, -18377628, -10139344, -24737402, 39808980, 11120744, 4802847, -6174016, -4101694, -8629126, --4675609, 28669980, -7406134, 7897371, 28649042, 4968204, -7813620, -20924544, 753767, 8624294, --42232952, 9405978, 4849555, 29189672, 20030116, 15635292, 26114474, 14807973, -4926328, 2709051, -9242233, -2781528, 1473711, -1693291, 4323959, 2423972, 24415816, -568009, 10153303, -4140349, -9816148, -685584, 13034152, 2833605, 3791919, 11783780, -731755, 4948339, 8089034, 306016, -6584185, 9076877, 4181151, 7252589, 10683731, 6098317, -3675955, -673773, 2538863, 2648384, -326418, -4115653, 2318746, 2815888, 1479079, 5634460, -536334, 8795019, 4981089, -3504693, -9321153, -1173600, -5903970, -27122182, -3881040, 18710488, 10491531, -30383672, -40066676, 4626217, -27205396, 11018202, 16627429, -9429601, 12842489, 2173790, 344671, -14522895, -5201743, -22626962, -33643016, 11300596, -27312234, -18712636, 12226698, 1327145, 6738267, -8145406, 16779364, 9835475, -11548630, 22054658, 19501300, 4056060, 19064822, -9999758, 10940892, -12348, 13298829, 6156836, --3208878, -7976291, 9171903, -11864847, 31368294, -8380555, -5954436, 6491843, 15493558, 15399605, --10416906, 27096412, 26763552, 15646029, 6451578, 2316061, -8653822, -20288888, -34875672, -5585068, -12345347, -671626, 15113990, 16608639, 17663590, 6258304, 9814537, 57942332, -28506772, -12329240, -5662915, 11277510, -1540283, -45061724, 10515691, -6915434, 6680285, 8121783, 19918448, 4132296, -236223, -18035104, 18725520, -6615860, 2599529, 16634945, 7369627, -17464410, -3940633, -9747428, --3517578, -7444789, 1088237, 853625, 6935836, -1534914, 8488466, 8665097, 11052025, 62277, --285078, -6642704, -3267396, -8949101, -6372121, -2534031, 11726871, 4017942, -2113124, 1007170, --4924717, 1930051, 10231149, 11973832, -2609730, -10652056, -476741, 881005, 4796405, -2778844, -3215857, -4933307, 7656316, -14973330, 1216013, -4430796, -5708549, 239444, 2662880, -9554692, -4365835, -1613297, 4304631, -5071820, -8919573, 3413962, 15158013, 14920716, -8206072, -11167989, -3339337, -10730976, -34408056, 35601520, -10368588, 10020159, 3314641, 29863444, 23816668, 14972793, --14216879, -2338073, 20437066, 10849087, 24050744, 64064268, -3943854, -25232932, -6558952, 19161996, --2836826, -29806536, 45585708, 23622320, -16041703, -24953760, -3055332, 5609228, -7910256, 18107582, -15401753, 17767206, 34038688, 5705327, 9634149, 6089190, -13151190, -31654982, 18640158, -21538188, --16160888, 24999394, 13124883, 14104136, 7422777, 5155035, -1406602, -31259846, -27728846, 523449, -16626892, -20664698, 19606526, -9164923, -23157390, 7316477, 20369956, -3755949, 3943854, 20207284, -19937776, 20674362, 1551557, -12612171, 11810623, 49118856, 5951751, 19975892, 28087476, 1373853, --8867497, -24682104, -9953050, -38898980, -13311714, -9736154, -4771172, 8842801, 1539746, -1767916, --11152956, -7366406, -6466074, 9610526, -9976135, -1999844, -8798241, 2874944, -5578626, -9584756, -408022, -13795435, -4836670, 235149, -12433393, -2356863, -10829760, -6270653, 1225676, -19921132, --1903744, 934155, -198642, 9411884, -12656732, -4177930, 13619341, 264677, -5334350, -590558, --4554813, 2618320, -5821828, -4418448, 6788196, -467078, 478889, 18168248, 14977088, 530428, --11720966, -17381196, -30827128, 5687074, 19188304, 26189636, -21982716, -23448374, 29105382, 13157632, --985158, -2782065, -11857331, 5667746, -5447629, -12385075, 13426605, 16336445, 11349451, 1226213, --2210835, -8908299, 2092723, 6946036, 4260608, -10084583, -36003636, 8209830, -8077760, -10705743, -2152316, -4533338, 3172370, -35884452, 16937204, 13308493, -25798258, 18293340, 24246164, 20311438, --5272073, 3521336, -3084324, 13292387, -2833068, 64425, 64538328, -19200652, 5496485, -17127792, --9880572, 36504536, 13448079, 12557411, 23407034, -29477972, -24373940, 36703180, -23004918, 18799072, -23230942, 2343442, 6303938, 8920647, 41626288, -13965623, -15699179, -37936908, -8011188, -16263431, -13040594, -23692650, 40462352, 22069690, 24773372, 12258910, 21671868, 11416560, 38633232, 9599252, -18668076, 14261439, -18762564, -8932458, -7162932, 3486440, 2347200, 18974092, 8378408, 105764, --726923, 4421132, 1915019, -7213398, -14256070, -7577933, -10662793, 13729937, -4631049, -7647190, -4558034, -2894808, 16969416, 7878044, -2824478, 9543954, -10647761, 5302674, 8628589, -2949032, -16443819, 16729971, 11279121, -7689065, 13913010, 8012799, -13382044, -2502355, 1581085, -8091182, -1095217, 11978127, -13464722, -15654082, 7122667, 3232500, -1341640, -10349797, 26659398, -15407658, -14107894, 45291504, 22506166, 17154100, -25273198, 7159174, 25241522, -21509734, 35723928, 12826383, -19128710, 17126182, -10945187, 17740362, 15285789, 6456410, 35418448, 26855894, -1999307, -60508572, --7063611, 28168544, 27176406, 27933930, 6724845, 15611669, 1417339, 7882339, -1965484, -18705656, -38816304, -964757, 36988260, 16689169, 26706644, -37244344, 25351582, 12659953, 11439109, -9725417, -8845485, -6897181, 8447664, 37179920, 14865956, 48496088, 2462627, 10766409, 28381144, -5665062, -44572096, 21983254, 3981972, -29416768, -18337362, 16276852, 1957968, -4864588, 1072131, -4982162, -3595961, -21427054, 14460618, -22820772, -33939368, -12705587, -1792075, -11339251, -8659728, 28883118, --3325915, 26305600, -24898462, 28900298, 3999152, -31935230, 31765042, 26444114, -9774272, -4445291, -7681549, 13892609, 9040369, -1325534, -14381161, 9156333, -6135361, -922344, 18384070, -3730716, --2865280, -14766634, -3813394, 4081830, 2988760, -995359, 13858786, 12152073, -9460739, 3283503, --92342, 503048, 12759811, 3854733, -13623636, 9259413, -11633993, 5964099, -9385040, -3825742, --2884608, -2165201, 1748052, 2634426, 1811939, 711891, -2598455, 2297271, -6484864, 4558571, -5379447, -1146756, -5297306, 4006668, -1105417, 6811282, -3723737, -3313567, -9417253, -452045, --8351564, -27005144, -25817586, -10389526, -11183021, 20903606, -33804076, -42122356, -45798312, -55315956, -24714316, 27135066, -1580011, -4461398, -172872, -13169443, 3205119, 6861211, -11662984, 37642168, -35469452, 23162758, 25373594, -23382338, 15526307, 1262720, 18489834, -7307887, -9527311, -34564288, -30903900, -31236224, -37811280, -9958955, -7943542, 40552008, -22297860, 5428839, -21048024, -5913096, -39121784, 7230041, 12377022, 19343996, 35929012, 2183991, -4023848, -43921408, -8101919, -3546032, --1247688, 24023362, 12928925, 81713904, 4093641, -2552821, -27111444, -2205466, 32494648, 29781304, --2685428, -14391899, -40385576, 10066866, 25567404, -13118978, -29452202, -12499429, 25198574, -7713225, -18496814, -58531816, -32745368, -46790984, -12661564, 18780282, 9974525, -20383914, -19457812, -22903986, -9188546, 48209396, 14589467, -206695, -17107928, -1383516, -13327820, -3637837, 5698348, 5703180, --15346455, -6927782, -1379221, 10466835, -26081726, -17733384, -6099391, 12828530, -1794223, 16877074, -5386426, 2005750, -5903433, -2893197, -11750494, -2466922, -17701708, -3914326, 19414862, 7006166, -8831527, -13535589, -24476482, 12144020, 11470247, -7051800, -29528, -10052371, -1904281, 3102040, --1348083, 9204115, 5662915, 6041409, 11611444, 6512781, 9163850, 9984188, -2003065, 8033200, -4246649, -6693707, -16349330, -8483097, 39759048, 1304060, 231928, 70380552, 6968585, -52121040, --40023728, 49353468, 43810276, 2788508, -34715684, -43120396, -24729884, 8619462, 42618960, 38004556, -25460030, -15458124, 5045513, -15526307, 13952738, 32366874, 49885508, 54507428, -6759742, -28972776, --45889580, -68576672, -652298, 36761700, 148871088, -19289772, -7877507, -71757096, -29685204, 6231461, -17242684, 88737248, 63971392, 39658116, -44936096, -25307558, -43903692, -2469069, 74257304, 68743096, -83689584, -22934588, -82261512, -59792924, -83060376, 20948702, 76348952, 67188856, 123729416, -58929100, --71775880, -62857384, -10439992, 54813448, 72966128, 102040368, 46205260, -21308944, -39608188, 9501005, --2980171, 29111288, 81609744, -17832704, 50732692, -17988396, -46887084, 790811, 7368017, 44277356, -2136746, -4001299, 4242354, -11458973, -40550932, 17042968, -5562520, 13944685, -11448772, -33298344, --8070244, -7772817, 3794067, 22296786, 3120831, -6304475, 8552354, -8002061, -10386305, -1848983, -32360968, 8319889, 29717416, -2062658, 3407520, -8388071, 3884798, 3525095, 6016176, 23044648, -39699456, -1065152, -10701448, -36237712, -47964584, 2005213, 2913599, 58187144, 37473588, 6404333, --20088098, -81723024, -46030240, -6939594, 37085432, 72536632, 37641632, -21808770, -26973468, -84726816, --31462246, 40558448, 74592848, 60280404, 3972845, -38293928, -43384000, -4215511, -1481227, 35291208, --6411313, -36407900, 47585552, -11111080, 56196964, -51873540, 529892, -22701586, -53886272, 39304856, --28339268, 36381056, -28980828, -11208254, -2694018, 18702436, 4080756, -20687246, -11118060, -953483, -29036126, -27156542, 33321430, 23934778, -18354542, 4131222, -23017266, -23081692, 38814692, -38472708, --19502910, 25810606, 59354836, -475668, 7907572, -5504538, -26199838, -7330973, 24129126, -8460549, --39464844, 5519570, -8760123, -6693170, 11686606, -35873176, 17877802, -143345, 12189117, 27591944, --62658204, -46271292, -15521475, -1428614, 64121716, -34144992, 23107998, 50538880, -27960774, -16438450, --1958505, 27403502, 39758512, -21873194, 11345693, -8067023, 15615427, 62227632, -23324356, -70180304, -14715095, 32116692, 8143795, -37512244, 23180476, 9806484, 23270670, -7355669, -1275068, -26203596, --21026550, 15413564, 3697430, -27924266, 7977365, 19286550, -9581535, -143345, -31199180, 4540854, --7930657, -34049428, -1408749, 15236933, 12986907, 5499706, -1147293, 8444979, -23506356, -5738613, -8000987, -11272679, 17627620, -10873247, -4804458, -10278930, -229781, -10951093, 16841640, 3138011, --13793287, -11565810, -828392, -459562, 27940372, -9821516, 9715216, -5085778, -838056, 6196564, --12499965, -10752987, 1546725, -23837068, -6947110, 7046968, -20656646, 1009317, -4115653, -6983080, -4023848, 13344463, -366683, 2011655, -7471633, -4850092, -72426568, -22986128, 31092342, 42567956, -35347044, -36126580, 11518029, -100852808, -65582540, -55731496, -8877161, 47190416, 30370788, -2150168, --22175990, -27405650, 13359496, -16783122, -1716913, 36062692, 9830106, 1651952, -35752380, -17251810, --3644280, -16964584, 10921028, -3029026, 19378892, -5126581, -197032, -6396280, -1153199, -4664872, --20408074, -15497316, -34252900, -24235964, 17499844, 33480344, 36536212, 20279762, 31843962, -4886062, -27099634, -6368900, -12379169, -42811696, -1620276, -23665806, 18343806, 6970732, 54135380, -43717400, -15555298, 30292404, -16668768, -23250268, -13411572, -10860362, -11046656, 3885872, 38477000, 24656334, --10186052, -1476932, 27639188, -31959926, -35211752, 14529874, -40876276, -31563178, -27413702, 3389803, -13370770, 15856482, 47595216, 32245540, -5062156, 23992224, -13738527, 927176, 6036577, 17769354, -28936268, 31111670, 22038014, 18152680, 14748918, 1214402, -39808440, -11335492, -20498806, -5197984, -23431194, -1044214, 3657702, -8730595, -17646946, 1945083, -8651675, -7292318, -19222126, 8511551, -14670535, -6496675, 5748277, 12835510, 7236483, 8359080, 1628330, 8229158, -5557688, 5650030, --2531883, -10207527, 7938710, 9716290, -7833484, -11739219, 1205275, -7941395, -13472776, 10509785, -11528229, 4399121, 14805826, -1346472, -13288629, 22968412, -9435506, -86497960, -127776888, -156829664, --123946312, -184840896, -32807108, -67602248, 20294258, 38631620, 133545032, 77936480, 138346800, 140676816, -192649680, 140579104, 142914496, 105228848, 4383551, -30681098, -55955908, -34471408, -115299472, -78845936, --62824636, -64205468, -63529008, -63410360, -61546880, -66406636, -72856064, -54349588, -84688704, -69283728, --60394220, -27199492, -71184784, -22092774, 25999048, -52927420, -25636660, 14063334, 11456825, -44828184, -37118716, 47732120, 60490320, 82091320, 83453360, -6693707, 49570364, 80692768, 114590264, 90278064, -180574384, 169572832, 149770880, 121324240, 153663200, 76215272, 122317448, 148902224, 114664352, 73267848, -124370440, 40256728, 41703060, 76340896, 76609872, 54346368, 15683073, 44399224, -14942728, 2514703, -38873212, -44534516, -111682032, -166882560, -66003448, -228427296, -199794896, -175768320, -203199200, -226096736, --189498784, -164084400, -158253440, -109153376, -143444384, -73741368, -91112360, -96892848, -146812176, -118706992, --85592792, -70172248, -59370944, -55713780, -34911640, 13703630, -222265, -3491809, 41261212, 86177448, -71929968, 72772856, 116196584, 99258304, 103241888, 131006704, 123636536, 105097312, 100065760, 119936960, -102216464, 98993088, 105182136, 109018616, 92835184, 81045496, 74702368, 69687992, 91281480, 71452152, -53732188, 56017112, 42037528, 24381456, -14480482, -30367030, -39531416, -71105864, -60648696, -63018444, --74770552, -79284024, -72722920, -47602732, -53134652, -48323752, -48862768, -25378962, -27830314, -33794952, --22845468, -7496329, -8087961, -15794742, -9655623, 993748, -5212480, -7736310, -5793374, -299037, --398895, -436476, 399432, 703838, 124554, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +7414188, 2582886, -1357747, 1876364, 2378875, 4445291, 7424925, -3573950, 2461553, -3045669, +-2370822, 1486596, 9664, 614717, -5254893, -2555506, 1842541, 3695283, -501437, 3112778, +-5634460, -4997732, 3134253, 2003602, 855772, 2280628, -1929514, 4025458, 4504347, 4374424, +6274411, -3491272, -2888366, 218506, 789737, -6030671, -389231, -528818, 1646046, 586800, +-3777961, -934692, 5122822, -2747169, 996969, -3150359, 1498407, 1579474, 1017907, -4690105, +3772592, 339839, 843424, -651224, -1549410, -1948841, -3204583, 6790880, -1206886, -1258425, +-1533303, 3012920, 695248, -6433324, 1624035, -2941516, -4420058, 2597382, -2735894, -6963753, +2767033, 1015760, 295816, -6417218, -7785165, -3181497, -3841848, 3600256, -1054415, -15032, +-1767916, -2107755, -1758789, 48318, 3176128, 574452, -1430224, -120796, -1494112, -664646, +1403917, 424665, -1354525, -1825898, -639413, -751619, 691490, -461172, 255014, 252866, +754841, 194347, 1085553, -461172, 249645, -255014, 762357, -49392, 699006, 4347044, +517544, 375273, 3867618, -5771363, 966905, -4815732, -6096706, 1760400, 5720360, -3535295, +2716030, -2660195, -1285269, 1154809, 288300, -2828773, -8406862, -8347269, 150861, -2111513, +-75162, 4370666, 701153, 5350456, 7226820, -3805341, 6241125, 783295, 6335077, 403727, +7517267, 960999, -4204773, -1152662, 424128, 3427921, -925565, -1125818, 747324, 2602213, +-3122978, -185757, -963146, 2302639, 2801929, 158914, -2845416, -197569, -514322, 1648731, +2942590, 5274220, -1837172, 3424163, -1539746, -4581120, -4092567, -2763812, 2596308, 2820183, +-1547262, 4563403, 151934, 1660542, 239444, 5548024, 3677566, 4089883, 1661616, 2411087, +1487669, 2237678, 4531728, -955093, -231391, 6403260, 1286880, 191126, 1333587, -2372433, +358093, 1894081, -141734, -5972152, 1876901, 642635, -957241, -2068564, 1384590, 415538, +3258807, -1195612, -590021, -1239635, -1010928, 830002, 238371, 1312113, 619012, 308701, +-1174674, -926639, -548682, -572841, 514322, -1547799, 1371168, -552440, 406411, -369904, +-553514, -856846, 529355, -689879, -523986, -1686312, 6424198, -6649683, -4496294, -3700114, +-5393405, 1649268, 2261300, -4344360, 953483, 8794482, -6482180, 4439386, 7575249, 7494718, +-4693863, -1313186, 3688840, 675921, 1112397, -3422552, 1809792, -11506217, 8958765, 14070313, +2452426, 4715337, -2338610, -227633, 7446937, -3973382, -9095130, -1539746, 89657, -60130, +-7356205, 509491, 1773285, -8720394, -4128001, 4001836, 1322850, -3120831, -849867, 2982318, +-4283156, 8968965, 2762201, 388695, -5820218, -597000, 3058554, -1986422, 146566, -2087354, +-161598, -884763, -4672388, 265214, -4520453, 6729140, -6569153, -4365298, -1507534, -7834557, +5190468, -4225174, -10920491, -2021319, -4736275, 1307281, 4953171, -5101885, 586263, -3470871, +3504157, 470836, -3638911, 3062312, -3939022, -5167383, 5687611, -3723200, 1592359, 119722, +476205, 1984275, -1176284, -1769527, -1999307, -3154117, 1007170, -4449049, 209380, -915365, +1349694, -1336272, -151934, -11811, 75699, -2369748, 2064269, 84289, 354872, -1284732, +-933619, -966905, -108448, 1398549, -5071283, 3238942, -146566, -993211, 3844533, -3637837, +-12781286, -2495913, -784368, 5587753, 7914551, 7010461, 3373697, -2750927, -858993, -7881802, +-6679748, 2308008, 8993125, -2573222, 9212705, 5859946, -5679558, 3055869, -870268, 3195456, +-6347962, -4284230, 1051730, 4588099, -576063, 2735357, 3826279, -7181722, -1436667, -3313567, +-9774809, 6081674, 974958, 2208687, 4246112, 7756174, 2711735, 363998, 6091874, -1422708, +-3104188, 6256694, -3286724, 10574209, 4882304, 4204236, 230318, -3042984, -3689377, 5182415, +7056095, -5237713, 1284732, 6724845, -1182727, 2185065, 14873472, -4497368, -1777043, 2885681, +-7437273, -304943, 1347546, -3325915, 3634079, -2410551, 2246805, 7372312, 273804, -1703491, +-5006858, -418759, -6221797, 2632815, -2298881, -3071975, -1262184, 1178432, -1777580, -1804960, +-1495722, 332323, 2315524, 1693828, 485868, -539018, -678068, -536334, -326954, -1043677, +-1817845, -364535, -550293, 962073, 24159, 479426, -1837709, 777926, 1001264, -704912, +-1606855, -615254, -1685775, -912144, -738734, 1249836, 159988, -281320, -107374, 283468, +-2547453, -505732, 920734, -3192771, -18236432, -1417876, -321586, -3594351, -5611375, -1791538, +9885404, -6892886, -10351408, 3980898, -4167192, 1559073, 1917166, 6660421, -4434554, -1285269, +1358283, 6198712, -2806224, -3951370, -1144072, -3389266, 4576825, 8345122, 4223564, 147640, +-623844, -4665945, -224412, 13088376, 2349884, -1541893, 15097884, -824634, 11243688, -3303904, +149250, 7666517, 2363843, 1963874, 2768107, 1408749, 4234838, 2510409, -7083475, 13355738, +8128226, 10981695, 7369627, 4893042, -7208029, 3293166, 3758633, 640487, -4397510, 12408161, +7520488, 11218455, 2041720, -2137820, -2685965, 8284455, -3939559, -8383240, 10020159, 3201898, +-5413270, -3088082, 554051, -2474438, 1034550, -1072131, 1466195, -3370476, -886911, -7926362, +3136937, -899259, -147103, 3033858, -924492, -1411434, 4776004, -222801, 3724811, 4997195, +4085588, 2682207, 2640331, 1127429, 1569811, 115427, -954020, -842887, 2217277, -512175, +-1253594, -1280437, 1089311, -1455994, -335544, -212064, 2750390, 1216013, 1990717, -1704565, +639413, -1347009, -437550, 1952063, -179315, -654983, -523449, -387621, -4587562, -609885, +-11943767, -4680441, -13363791, -9135395, 1043140, -8655970, -6802692, 872415, -1475321, 9047349, +-5923297, 10020696, 12272332, 1321239, -10329933, -7229504, 11027865, -5502927, -2951180, 6226092, +-7985955, -14200772, 5770289, 12387223, -6285685, 3218541, -179315, 5444408, -14836965, 3042448, +-5931350, 3672197, 350040, -6170258, 10429791, 4821101, 4433480, 13899588, 6492917, 2934000, +7881802, 1647120, 2585570, 4024921, 1367410, 708670, 2186675, 1966558, 15791521, 8931921, +12348, 13287018, 8320963, 9829033, 15291694, -7714298, -6462315, 13432510, -4610111, -435939, +-7885560, -3278134, 4793721, 7164006, -5999533, -632971, 2054605, -1630477, 3720516, -6317360, +-1161252, -7319161, 14416595, -4567161, 7889318, -2152316, -3804804, 10654203, 1888712, -3015604, +3471944, -1226213, 333934, -2909304, 4031364, -670015, 1470489, 4366908, 2486249, 1365263, +2442763, 273804, -357556, 1805497, 462783, -2841121, 656056, -525060, -1344862, 2743947, +20401, 1388348, 1108102, -503585, 527207, -1626182, 376883, -1476395, 150861, -545461, +1935420, 609349, 1664300, 544387, 4553739, -4858145, 1569274, 706522, 1555315, -6977711, +9082245, 5277978, 12338367, 2397666, -1668595, -13914620, -7441568, -5209259, 3556770, -7222525, +-12054363, -3346317, 3090766, 1354525, -13462038, 10940892, 841277, -803696, -11467563, -6581501, +2705293, 1430761, -12741020, -3944928, 4656282, 534723, 1284732, 6550362, 7628399, 4478041, +-1973538, 3868155, 1188632, -4547834, -9432285, 16273094, -4081293, -7888245, 153008, 4057670, +5248987, 12176769, 1993939, -191663, -4569845, -105764, 6733435, -820339, 8413841, 16165183, +1350767, -3464965, 483721, 13924284, 17365626, -8622147, 2418067, 2462627, 9385577, 5002027, +1649268, 2928094, -6924561, 4350265, 4471598, 4515085, -2997887, 298500, 3402151, 5216775, +-739271, 1822140, 1185948, -5829881, 2823941, 325344, -5309117, -3802120, 5607617, -2473901, +3875671, -5587216, -4320200, -1870995, 1266479, -33823, 5055714, 2370822, 893890, 304943, +2519535, 2397666, 719944, -4221953, 169651, -1737851, 667867, -1292785, -1063004, 10737, +-450435, -544387, -1478543, -4129074, -1187559, 523986, -2850248, -1731946, -1816234, 147103, +-1819456, -2885144, -718333, 1477469, 2254858, -4488241, 6431177, -5662915, -10304700, 7203197, +-801011, -2478733, 2764348, 6138045, -17314624, 1108102, 13344463, -1503775, 23974508, 11478837, +-7265474, -5323075, -2200097, -6871948, -3027415, 10726144, -4067334, -3463354, 10752451, 8732742, +2915209, 5025112, 10053982, 6664179, 7536057, -5448166, -3706557, 9542344, -1818919, 8641474, +104153, -10233833, -6555731, 2820183, 8170102, -11135240, 748935, -5927592, 3180960, -6780143, +9548786, 9508521, -9192304, -946503, 2755759, -261993, -12447889, -5568425, 2200634, 8328479, +13700409, 4675609, -10050223, -2193118, -2400887, -1149441, 8640937, 1400159, 6936909, -10302016, +4702989, 741419, -8135205, 9744207, 4188667, -1276142, -2112587, 1711545, -301185, -8327405, +6364605, -1901060, 3821984, -6465000, -11425150, -6339372, 2785823, 5160403, 191126, 2863670, +10384694, 137976, -2568391, 6518150, -1938641, 6136972, 431644, 2013266, -5168457, 565862, +210990, 2830920, 3154654, 4356708, 2825015, -1036698, -1190780, -1984812, 5208185, -2374580, +2750927, 587337, 1691143, 2131915, 2953327, 1293859, -904628, 2615098, 1098975, 893353, +-912144, 3508452, 1731946, 756451, -3374771, 1284732, -1276679, -11274, 2456721, 11126650, +-13597866, -2118493, -4307316, 14050986, -6200322, 11586748, -3544422, 10820096, 14653355, -6418829, +4660577, -3660923, 8371428, -3107409, 6979859, 5801964, 5473936, -1187022, 5754720, -2822331, +-7185481, -3425773, 8143795, -9408663, 1554241, 19327, 7261716, 14640470, -13290776, 523449, +13131863, -266288, 12011413, 1685775, 5310727, -1596117, -955630, 3279208, -18380850, 1868848, +-383863, -7284265, 4937602, 3071439, 13441100, 6710350, -1270774, 25465398, 6391448, -13344463, +3601867, 1333587, 8934606, -5724655, 1762547, 7545184, 649614, 4612795, -1277216, -14585172, +-14925548, 71941, -5007932, 12079059, -20305532, 26220776, -97711, 14614700, 16728361, 4045859, +-4361540, -3295314, -7776575, -10341744, -833761, 3379066, -2577517, 5271536, -3449396, -8324721, +-5223754, -4195110, 1556926, -1280974, 973347, 5629629, 2870649, 2680060, 2105608, -2321967, +-2829310, 183610, -560493, 1622424, 432718, 661962, 1815697, 3266323, 1989644, -6477348, +1232119, -1217623, 4769561, 4768488, 2801929, -434329, -1335198, 1872606, 1534377, -2292439, +-2374580, -598611, -1610076, 454730, -1723893, -3143379, 1294933, 5244155, -1311039, 2110977, +-3983045, 516470, 2358474, 2401961, -79994, 1539209, 3419868, -24267638, -1764695, 8190503, +1307281, -9148817, -22539988, -64425, 2518998, -3999688, -991064, -6678674, 3435974, -5570036, +11534135, 4030290, -6951942, -8688719, -14832133, 11011222, -4764193, 699006, 14362908, 19758998, +12035035, -1898912, 992137, -13648332, -5856188, -5523328, 3606699, -19340238, 4996658, 5209796, +1063004, -9971303, 9479530, 14747844, -2425046, -316754, 1689533, -8649527, -9119826, 5170604, +3544422, 11141145, -12345347, 13304735, -7070053, 7307350, -11429982, -9055939, -4538170, -350577, +-1379221, 4818954, -2486249, -19988240, -14972793, -4265977, 505732, -20042464, 254477, 9823127, +-5311801, -2370285, 3007551, 8342974, -17602386, 8922795, -3111704, -2707440, -103079, 7119982, +8957154, -10627360, -5406290, -7167764, -3462281, -2632815, 5205501, 1663226, -6383395, -2930242, +-4896800, 3319473, 11679090, 7629473, -68719, -412854, -6531572, 171799, -3991635, 5424007, +-1003412, 9517111, 3202435, 3268470, -3446711, 119722, 114354, -7758859, 8195872, 528281, +-1443109, 4185983, -1509144, -1385127, -384400, 540092, -6649683, 2835752, 4062502, 4204236, +-684510, -1669132, 1468879, 2332704, -2371896, -1513439, 2371896, -5166846, 571231, -230318, +4768488, -472446, 21748640, 530965, -4409321, 16915728, -3692061, -6875169, -1815161, -1552094, +20980916, 23992224, -3116536, 5107790, 6120866, -3059627, -11382737, 5612449, 22313428, 17017734, +14557255, -5277978, 6315213, 11981885, -15535434, -11574937, 13590887, -6925635, -7595650, -519691, +16989280, -2553358, 15641197, 1029718, 14038101, -8392366, 19284404, 5865315, -5960341, -9826885, +3536906, -13904420, 1689533, -16499654, -5609228, -5917391, 9467719, -9446781, 15586436, -19053012, +-32944010, 20601884, 9243306, -4050154, 197569, 22723062, 10695005, 1805497, -5938329, 4908611, +-2619393, 272194, -14739254, -14981383, 8844411, -5031018, 4900021, 28209346, -7351911, 6066105, +-18388902, 21795886, -7266548, -9740986, -4634270, -3051574, 9134322, -18480170, 15480136, -18114024, +13092134, -9329743, -12593918, 12593381, -511638, 4121021, -5084705, 7444252, -4054986, -5708549, +-2513093, -8649527, 5986111, -294205, -5589900, -2404108, 2136746, 9200894, 1782411, 1299765, +2496450, -248571, -1535451, 4660040, -2594697, 2094870, 1989644, -2415382, -639413, -558346, +6655052, 5759015, -2090575, -3228742, -6883222, -159988, -1375463, -1027034, -1090385, 171799, +6381248, 1869921, -726386, 7967701, -24724516, -18378702, -17820356, 24875376, 831613, 10676215, +6359236, -21916144, -19164144, 12881681, -34190088, 9988483, 10149008, -2197950, -13606993, -12511240, +21293910, -11455215, -1510218, -3583077, -11045045, 16199006, 5152887, 14656039, 8517994, 10111964, +-3212636, 16456167, -1521492, -10762114, -12680354, -2917357, 7134478, -9607305, 12771085, 8204998, +-9641128, -34610456, -2915209, -2842732, -864899, 25149718, 562104, -19698330, -11696270, -12044699, +10318659, -7591355, -16413754, -18306762, -11398843, -8900783, -40820444, 980863, 5081483, 13410499, +-21327734, 6983080, -17624398, -14408005, -4944044, 17065516, 4353486, 15840376, 29894046, 9004399, +6852084, 19508816, -15215995, -1935420, -7233262, -8335995, 15613817, 14457934, 22942104, 11289322, +-21032992, -13993540, 16494822, -24823300, -27368606, -8591545, 19917374, 3170223, -4888747, 13602698, +11076184, -105227, 3148748, 11536282, -7559143, 6829535, -5575942, -1051730, -5810017, -1065689, +1501628, 8085276, -5143224, -6470905, -34360, 4568235, 1438814, 4155381, -664646, -6468221, +-1570347, -4279935, 317291, -3573950, -725313, -494458, -7313256, 5928129, 883153, 6033892, +7546795, 10473278, -3948149, -5552319, -464930, 1023276, 12047383, -10572062, -22408992, 6523519, +-35970, -154082, 1124208, 3447248, 5104569, 10237591, 3524021, 8659728, 4901095, 10207527, +26016764, 1122597, -33260764, -12023761, 8772471, 588947, -6704444, -21300354, -13930190, 4790499, +17740900, 7022809, -16443282, 9188546, 7350300, -18647138, -3310883, -23119808, 18595060, -9495099, +-11937325, 17175038, -16159814, 4817880, 35544612, -3911642, 5987722, 10647761, 173946, 5367099, +-20456930, 5255966, 3885872, 3569655, 46610596, 31621696, -3234647, -15963857, -10482405, 14789720, +17134772, -18377628, -10139344, -24737402, 39808980, 11120744, 4802847, -6174016, -4101694, -8629126, +-4675609, 28669980, -7406134, 7897371, 28649042, 4968204, -7813620, -20924544, 753767, 8624294, +-42232952, 9405978, 4849555, 29189672, 20030116, 15635292, 26114474, 14807973, -4926328, 2709051, +9242233, -2781528, 1473711, -1693291, 4323959, 2423972, 24415816, -568009, 10153303, -4140349, +9816148, -685584, 13034152, 2833605, 3791919, 11783780, -731755, 4948339, 8089034, 306016, +6584185, 9076877, 4181151, 7252589, 10683731, 6098317, -3675955, -673773, 2538863, 2648384, +326418, -4115653, 2318746, 2815888, 1479079, 5634460, -536334, 8795019, 4981089, -3504693, +9321153, -1173600, -5903970, -27122182, -3881040, 18710488, 10491531, -30383672, -40066676, 4626217, +27205396, 11018202, 16627429, -9429601, 12842489, 2173790, 344671, -14522895, -5201743, -22626962, +33643016, 11300596, -27312234, -18712636, 12226698, 1327145, 6738267, -8145406, 16779364, 9835475, +11548630, 22054658, 19501300, 4056060, 19064822, -9999758, 10940892, -12348, 13298829, 6156836, +-3208878, -7976291, 9171903, -11864847, 31368294, -8380555, -5954436, 6491843, 15493558, 15399605, +-10416906, 27096412, 26763552, 15646029, 6451578, 2316061, -8653822, -20288888, -34875672, -5585068, +12345347, -671626, 15113990, 16608639, 17663590, 6258304, 9814537, 57942332, -28506772, -12329240, +5662915, 11277510, -1540283, -45061724, 10515691, -6915434, 6680285, 8121783, 19918448, 4132296, +236223, -18035104, 18725520, -6615860, 2599529, 16634945, 7369627, -17464410, -3940633, -9747428, +-3517578, -7444789, 1088237, 853625, 6935836, -1534914, 8488466, 8665097, 11052025, 62277, +-285078, -6642704, -3267396, -8949101, -6372121, -2534031, 11726871, 4017942, -2113124, 1007170, +-4924717, 1930051, 10231149, 11973832, -2609730, -10652056, -476741, 881005, 4796405, -2778844, +3215857, -4933307, 7656316, -14973330, 1216013, -4430796, -5708549, 239444, 2662880, -9554692, +4365835, -1613297, 4304631, -5071820, -8919573, 3413962, 15158013, 14920716, -8206072, -11167989, +3339337, -10730976, -34408056, 35601520, -10368588, 10020159, 3314641, 29863444, 23816668, 14972793, +-14216879, -2338073, 20437066, 10849087, 24050744, 64064268, -3943854, -25232932, -6558952, 19161996, +-2836826, -29806536, 45585708, 23622320, -16041703, -24953760, -3055332, 5609228, -7910256, 18107582, +15401753, 17767206, 34038688, 5705327, 9634149, 6089190, -13151190, -31654982, 18640158, -21538188, +-16160888, 24999394, 13124883, 14104136, 7422777, 5155035, -1406602, -31259846, -27728846, 523449, +16626892, -20664698, 19606526, -9164923, -23157390, 7316477, 20369956, -3755949, 3943854, 20207284, +19937776, 20674362, 1551557, -12612171, 11810623, 49118856, 5951751, 19975892, 28087476, 1373853, +-8867497, -24682104, -9953050, -38898980, -13311714, -9736154, -4771172, 8842801, 1539746, -1767916, +-11152956, -7366406, -6466074, 9610526, -9976135, -1999844, -8798241, 2874944, -5578626, -9584756, +408022, -13795435, -4836670, 235149, -12433393, -2356863, -10829760, -6270653, 1225676, -19921132, +-1903744, 934155, -198642, 9411884, -12656732, -4177930, 13619341, 264677, -5334350, -590558, +-4554813, 2618320, -5821828, -4418448, 6788196, -467078, 478889, 18168248, 14977088, 530428, +-11720966, -17381196, -30827128, 5687074, 19188304, 26189636, -21982716, -23448374, 29105382, 13157632, +-985158, -2782065, -11857331, 5667746, -5447629, -12385075, 13426605, 16336445, 11349451, 1226213, +-2210835, -8908299, 2092723, 6946036, 4260608, -10084583, -36003636, 8209830, -8077760, -10705743, +2152316, -4533338, 3172370, -35884452, 16937204, 13308493, -25798258, 18293340, 24246164, 20311438, +-5272073, 3521336, -3084324, 13292387, -2833068, 64425, 64538328, -19200652, 5496485, -17127792, +-9880572, 36504536, 13448079, 12557411, 23407034, -29477972, -24373940, 36703180, -23004918, 18799072, +23230942, 2343442, 6303938, 8920647, 41626288, -13965623, -15699179, -37936908, -8011188, -16263431, +13040594, -23692650, 40462352, 22069690, 24773372, 12258910, 21671868, 11416560, 38633232, 9599252, +18668076, 14261439, -18762564, -8932458, -7162932, 3486440, 2347200, 18974092, 8378408, 105764, +-726923, 4421132, 1915019, -7213398, -14256070, -7577933, -10662793, 13729937, -4631049, -7647190, +4558034, -2894808, 16969416, 7878044, -2824478, 9543954, -10647761, 5302674, 8628589, -2949032, +16443819, 16729971, 11279121, -7689065, 13913010, 8012799, -13382044, -2502355, 1581085, -8091182, +1095217, 11978127, -13464722, -15654082, 7122667, 3232500, -1341640, -10349797, 26659398, -15407658, +14107894, 45291504, 22506166, 17154100, -25273198, 7159174, 25241522, -21509734, 35723928, 12826383, +19128710, 17126182, -10945187, 17740362, 15285789, 6456410, 35418448, 26855894, -1999307, -60508572, +-7063611, 28168544, 27176406, 27933930, 6724845, 15611669, 1417339, 7882339, -1965484, -18705656, +38816304, -964757, 36988260, 16689169, 26706644, -37244344, 25351582, 12659953, 11439109, -9725417, +8845485, -6897181, 8447664, 37179920, 14865956, 48496088, 2462627, 10766409, 28381144, -5665062, +44572096, 21983254, 3981972, -29416768, -18337362, 16276852, 1957968, -4864588, 1072131, -4982162, +3595961, -21427054, 14460618, -22820772, -33939368, -12705587, -1792075, -11339251, -8659728, 28883118, +-3325915, 26305600, -24898462, 28900298, 3999152, -31935230, 31765042, 26444114, -9774272, -4445291, +7681549, 13892609, 9040369, -1325534, -14381161, 9156333, -6135361, -922344, 18384070, -3730716, +-2865280, -14766634, -3813394, 4081830, 2988760, -995359, 13858786, 12152073, -9460739, 3283503, +-92342, 503048, 12759811, 3854733, -13623636, 9259413, -11633993, 5964099, -9385040, -3825742, +-2884608, -2165201, 1748052, 2634426, 1811939, 711891, -2598455, 2297271, -6484864, 4558571, +5379447, -1146756, -5297306, 4006668, -1105417, 6811282, -3723737, -3313567, -9417253, -452045, +-8351564, -27005144, -25817586, -10389526, -11183021, 20903606, -33804076, -42122356, -45798312, -55315956, +24714316, 27135066, -1580011, -4461398, -172872, -13169443, 3205119, 6861211, -11662984, 37642168, +35469452, 23162758, 25373594, -23382338, 15526307, 1262720, 18489834, -7307887, -9527311, -34564288, +30903900, -31236224, -37811280, -9958955, -7943542, 40552008, -22297860, 5428839, -21048024, -5913096, +39121784, 7230041, 12377022, 19343996, 35929012, 2183991, -4023848, -43921408, -8101919, -3546032, +-1247688, 24023362, 12928925, 81713904, 4093641, -2552821, -27111444, -2205466, 32494648, 29781304, +-2685428, -14391899, -40385576, 10066866, 25567404, -13118978, -29452202, -12499429, 25198574, -7713225, +18496814, -58531816, -32745368, -46790984, -12661564, 18780282, 9974525, -20383914, -19457812, -22903986, +9188546, 48209396, 14589467, -206695, -17107928, -1383516, -13327820, -3637837, 5698348, 5703180, +-15346455, -6927782, -1379221, 10466835, -26081726, -17733384, -6099391, 12828530, -1794223, 16877074, +5386426, 2005750, -5903433, -2893197, -11750494, -2466922, -17701708, -3914326, 19414862, 7006166, +8831527, -13535589, -24476482, 12144020, 11470247, -7051800, -29528, -10052371, -1904281, 3102040, +-1348083, 9204115, 5662915, 6041409, 11611444, 6512781, 9163850, 9984188, -2003065, 8033200, +4246649, -6693707, -16349330, -8483097, 39759048, 1304060, 231928, 70380552, 6968585, -52121040, +-40023728, 49353468, 43810276, 2788508, -34715684, -43120396, -24729884, 8619462, 42618960, 38004556, +25460030, -15458124, 5045513, -15526307, 13952738, 32366874, 49885508, 54507428, -6759742, -28972776, +-45889580, -68576672, -652298, 36761700, 148871088, -19289772, -7877507, -71757096, -29685204, 6231461, +17242684, 88737248, 63971392, 39658116, -44936096, -25307558, -43903692, -2469069, 74257304, 68743096, +83689584, -22934588, -82261512, -59792924, -83060376, 20948702, 76348952, 67188856, 123729416, -58929100, +-71775880, -62857384, -10439992, 54813448, 72966128, 102040368, 46205260, -21308944, -39608188, 9501005, +-2980171, 29111288, 81609744, -17832704, 50732692, -17988396, -46887084, 790811, 7368017, 44277356, +2136746, -4001299, 4242354, -11458973, -40550932, 17042968, -5562520, 13944685, -11448772, -33298344, +-8070244, -7772817, 3794067, 22296786, 3120831, -6304475, 8552354, -8002061, -10386305, -1848983, +32360968, 8319889, 29717416, -2062658, 3407520, -8388071, 3884798, 3525095, 6016176, 23044648, +39699456, -1065152, -10701448, -36237712, -47964584, 2005213, 2913599, 58187144, 37473588, 6404333, +-20088098, -81723024, -46030240, -6939594, 37085432, 72536632, 37641632, -21808770, -26973468, -84726816, +-31462246, 40558448, 74592848, 60280404, 3972845, -38293928, -43384000, -4215511, -1481227, 35291208, +-6411313, -36407900, 47585552, -11111080, 56196964, -51873540, 529892, -22701586, -53886272, 39304856, +-28339268, 36381056, -28980828, -11208254, -2694018, 18702436, 4080756, -20687246, -11118060, -953483, +29036126, -27156542, 33321430, 23934778, -18354542, 4131222, -23017266, -23081692, 38814692, -38472708, +-19502910, 25810606, 59354836, -475668, 7907572, -5504538, -26199838, -7330973, 24129126, -8460549, +-39464844, 5519570, -8760123, -6693170, 11686606, -35873176, 17877802, -143345, 12189117, 27591944, +-62658204, -46271292, -15521475, -1428614, 64121716, -34144992, 23107998, 50538880, -27960774, -16438450, +-1958505, 27403502, 39758512, -21873194, 11345693, -8067023, 15615427, 62227632, -23324356, -70180304, +14715095, 32116692, 8143795, -37512244, 23180476, 9806484, 23270670, -7355669, -1275068, -26203596, +-21026550, 15413564, 3697430, -27924266, 7977365, 19286550, -9581535, -143345, -31199180, 4540854, +-7930657, -34049428, -1408749, 15236933, 12986907, 5499706, -1147293, 8444979, -23506356, -5738613, +8000987, -11272679, 17627620, -10873247, -4804458, -10278930, -229781, -10951093, 16841640, 3138011, +-13793287, -11565810, -828392, -459562, 27940372, -9821516, 9715216, -5085778, -838056, 6196564, +-12499965, -10752987, 1546725, -23837068, -6947110, 7046968, -20656646, 1009317, -4115653, -6983080, +4023848, 13344463, -366683, 2011655, -7471633, -4850092, -72426568, -22986128, 31092342, 42567956, +35347044, -36126580, 11518029, -100852808, -65582540, -55731496, -8877161, 47190416, 30370788, -2150168, +-22175990, -27405650, 13359496, -16783122, -1716913, 36062692, 9830106, 1651952, -35752380, -17251810, +-3644280, -16964584, 10921028, -3029026, 19378892, -5126581, -197032, -6396280, -1153199, -4664872, +-20408074, -15497316, -34252900, -24235964, 17499844, 33480344, 36536212, 20279762, 31843962, -4886062, +27099634, -6368900, -12379169, -42811696, -1620276, -23665806, 18343806, 6970732, 54135380, -43717400, +15555298, 30292404, -16668768, -23250268, -13411572, -10860362, -11046656, 3885872, 38477000, 24656334, +-10186052, -1476932, 27639188, -31959926, -35211752, 14529874, -40876276, -31563178, -27413702, 3389803, +13370770, 15856482, 47595216, 32245540, -5062156, 23992224, -13738527, 927176, 6036577, 17769354, +28936268, 31111670, 22038014, 18152680, 14748918, 1214402, -39808440, -11335492, -20498806, -5197984, +23431194, -1044214, 3657702, -8730595, -17646946, 1945083, -8651675, -7292318, -19222126, 8511551, +14670535, -6496675, 5748277, 12835510, 7236483, 8359080, 1628330, 8229158, -5557688, 5650030, +-2531883, -10207527, 7938710, 9716290, -7833484, -11739219, 1205275, -7941395, -13472776, 10509785, +11528229, 4399121, 14805826, -1346472, -13288629, 22968412, -9435506, -86497960, -127776888, -156829664, +-123946312, -184840896, -32807108, -67602248, 20294258, 38631620, 133545032, 77936480, 138346800, 140676816, +192649680, 140579104, 142914496, 105228848, 4383551, -30681098, -55955908, -34471408, -115299472, -78845936, +-62824636, -64205468, -63529008, -63410360, -61546880, -66406636, -72856064, -54349588, -84688704, -69283728, +-60394220, -27199492, -71184784, -22092774, 25999048, -52927420, -25636660, 14063334, 11456825, -44828184, +37118716, 47732120, 60490320, 82091320, 83453360, -6693707, 49570364, 80692768, 114590264, 90278064, +180574384, 169572832, 149770880, 121324240, 153663200, 76215272, 122317448, 148902224, 114664352, 73267848, +124370440, 40256728, 41703060, 76340896, 76609872, 54346368, 15683073, 44399224, -14942728, 2514703, +38873212, -44534516, -111682032, -166882560, -66003448, -228427296, -199794896, -175768320, -203199200, -226096736, +-189498784, -164084400, -158253440, -109153376, -143444384, -73741368, -91112360, -96892848, -146812176, -118706992, +-85592792, -70172248, -59370944, -55713780, -34911640, 13703630, -222265, -3491809, 41261212, 86177448, +71929968, 72772856, 116196584, 99258304, 103241888, 131006704, 123636536, 105097312, 100065760, 119936960, +102216464, 98993088, 105182136, 109018616, 92835184, 81045496, 74702368, 69687992, 91281480, 71452152, +53732188, 56017112, 42037528, 24381456, -14480482, -30367030, -39531416, -71105864, -60648696, -63018444, +-74770552, -79284024, -72722920, -47602732, -53134652, -48323752, -48862768, -25378962, -27830314, -33794952, +-22845468, -7496329, -8087961, -15794742, -9655623, 993748, -5212480, -7736310, -5793374, -299037, +-398895, -436476, 399432, 703838, 124554, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, }; const Word32 CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2819] ={ { { 5241471, -2590939, -3527242, 5304822, -3109020, -1074816, 81068, -1825361, -2042794, -4123706, 986769, -6240588, 641024, 1112933, 2654827, 637266, -2216203, -696322, -1316944, -1335735, 3787624, -1032940, 498216, -1298154, 700080, -164283, -1438277, -2364916, 3671123, 2816425, 525060, --788663, 4257387, -5930813, -2205466, 2515240, -2453500, 5091684, 522912, 3591667, 463856, -409096, 2330557, -2049236, -849867, -77309, -56908, -1600949, -1274532, 2243047, -112206, --5470178, 5125507, -727460, 872415, -4621922, 2193118, -2050310, 1816771, 132607, -158914, --1740536, -178241, -2675765, 2754685, -5195837, -586800, 3788161, -3008088, 1408749, 5661304, -1717450, 567473, -2823404, 298500, 1505386, -1069447, 1887638, -1191853, -825171, -1598802, -1708323, -1864553, -2979097, 943282, 494995, -749472, 3644280, -928250, -790811, -893890, -1209570, 1323924, -95563, 141734, 658741, -734439, 652835, -1412507, -580894, -237834, --294205, -765578, -26307, -51003, -156229, -453656, -33286, -768799, 404264, -391916, -878858, -584116, 654983, 883153, 10931766, 2019708, -1530082, 3341485, -1651415, -1366873, --1750199, -711354, -4104378, 5811091, 3357054, 2508798, 2700998, 2569464, -2692945, -3628711, -4891431, -1051193, -3795141, -7225209, 1183264, -2138894, 2267743, 45634, -613107, -1617055, -2274185, -2676838, -1352915, 3571265, 6783901, 1767379, 3086471, 588411, 3411815, -706522, -3629784, 2290291, 410169, 2030446, 180389, 596464, 186831, 4958540, 1050120, 1304596, --1120450, 734439, -351650, -693637, 4023311, 4605816, -1656247, -1695438, 928250, 4238596, --6899328, -361851, -1874216, -5106716, -2078764, 710280, -2177549, 2269890, 1838783, 151934, --3114388, 1449015, -664109, -2978560, 3820374, -5273683, -2493766, -5624797, -2784750, -799401, -836445, 5674189, -2454037, -1479616, 1753420, -896038, -1350767, 2687039, -446140, -111669, --1228898, -1903744, -2361158, -630823, 2003602, 797253, 973347, 929324, 710280, 70330, --336618, -147103, 158914, 1414118, 687732, 744103, -485868, 115427, 484794, 399969, --1074, 90194, 3221, -108985, -196495, -991064, -761820, -515396, 545998, 457414, --223338, 3299072, 1460826, -6663105, -619549, 981400, 4744328, -1432909, -8250096, 6648610, --7794829, 408559, -3396246, -2710124, -8265665, -5507759, -3214783, -2093797, 3424163, 1148904, --5435281, 766652, -2898566, 36507, -173946, 2240362, 477815, -2386391, 408559, 577136, -1358820, -1688996, -1143535, -510564, -2677375, -4103305, 5568425, 2565706, 773631, -772020, -4747550, 4078608, -4640176, 1297080, 467615, -898185, -2694018, 606664, -4794257, 1072668, --893353, -3945464, 4882304, 70867, -354335, 6070937, -5261872, 4772246, 1790465, -724239, --3892851, 1124208, -542777, -4153234, -3426310, 16106, -1487669, -1874216, -5697274, 248571, -1243930, 2664490, -1637993, 2476586, 781147, -1030255, -775242, -3399467, 2943663, 578210, -450435, -5636608, 2967823, -514322, 421981, -2923799, 112743, -5181341, 649614, 1079647, -718333, -471910, 530965, -128312, 61740, -927176, 306553, -297427, 1160178, 618475, -497142, 1017370, 41876, 326418, 1080184, 600222, -702227, -330176, 1699733, -625455, -359704, -609885, 653372, -1954747, -448824, -622770, 817118, -383326, -12273406, -11628624, -4508642, 7691213, 4661650, -10475425, 7460895, -2536715, -950262, 656056, -4846871, -3686156, -8801999, -126702, -10737, 664646, -205622, 2868501, -4372277, 2653753, -2314451, 2378338, -4031901, -2673617, -719944, 2330020, -667331, 4196183, -1304596, 1821603, 368293, -431107, -354872, -3582540, -4975183, 4697084, 617402, -908386, 42950, -4669703, -5806259, -164819, -113817, 3022583, -5397700, -4605816, -980863, -9597641, 3726421, -759136, 1958505, -740345, --2309082, 1464584, 12293807, 6820408, 3568581, -3687230, 4845797, -58519, -6313065, 15032, --6589554, 5596880, 772020, 658204, -3754338, 31675, 3832185, 1399623, 766115, 476205, -428423, 4111894, 2870112, 523986, 2796024, 1657321, 2232846, 6019934, 2500745, 2958696, --2793876, 2258079, 1687385, -727997, 4748623, 1434519, -14496, -434865, 1417339, 2517925, -308164, -40265, -938987, 598611, 2083059, 1141388, -476205, 195421, -1713692, 481036, -429497, -774705, 164819, -118112, -34360, 1154809, -227096, 1205275, 1671279, 590558, --984621, -1903744, 308701, -1205275, 909459, 808528, -1203128, 477815, -17632988, -1342177, --4241817, -616865, -2947421, -10002979, -426276, -2690797, -4124242, -9377524, -1156957, 6657736, --4653597, 4379256, -776315, 6174553, -2093260, 5016522, -1654636, -4968741, -1334124, 533113, --2180233, -4467840, -3590593, -4392141, 140660, -4007741, 1459215, 471910, 399432, 1894618, --3015604, -4037806, 5822902, -532576, 1725503, 59056, -4574677, -2902324, -3230352, 155693, --2319819, 4059281, 4125853, 680215, -5603859, -1837709, 10302016, 2561948, -4361003, -3469260, --2209224, -3821447, -2021319, 8048232, 4896263, -5846524, 3573413, 4746476, 7007776, -1810866, -2847027, -432718, 59593, -2840584, -5839545, -1058710, 4304094, 440771, 8338679, 5916318, -393526, 1934883, 7033009, -5605469, -2570001, -1655173, -3453154, 2477659, 1088237, 1135482, --3026878, 2052994, -2199560, 2275796, -4303021, -202400, -398895, -1689533, -105764, -370441, -2112587, 576599, 473520, -1845225, -1247688, -595927, -1737851, -75162, -2506650, -1459752, -101469, -195958, 1561758, -1066763, 427349, -516470, 849867, 613107, 2160906, -1786706, -22600654, 15170361, -4670777, -851477, 58519, -615254, -2582349, 3156801, 7739531, 6532109, -3394635, -11855720, -5266167, 1524713, 691490, 5038534, -8921721, 1804423, 12104292, 8145406, --1386201, 2902324, -1059783, -4085588, -5575942, 311385, -4750771, -2774012, 1395328, 3757560, --3481071, -6489696, -3081102, 1115618, 5963025, 8322036, -1581085, -8801462, -1859184, -3147674, --8827768, -533113, -264141, -4239670, 1463510, 2377801, 5164162, -7408819, 3029026, 3818226, -835908, -7165079, -5318244, 2437931, 316217, 1857037, -778463, -703838, -245887, -3973919, -1959579, 2070174, -2770791, 4968204, 5883569, 8038568, 1932735, 598074, 7579007, 12347494, -1974611, 1685775, 2107218, 7259032, 824634, 4293357, 12196633, 3613678, 2248416, 331786, --2302103, -10427644, 1395328, -285078, -1692217, -2001455, 1282585, -1453846, 2576444, 1137630, --1378685, -768262, -352724, 2093260, 1338419, -590558, -405874, 1421097, 3097745, 12885, --777389, 1071058, 118112, -1458678, -2881923, 2079838, -2713883, 1642288, 1145683, 2000381, --136365, -349503, 41339, 643171, -3785477, 94489, 551366, -374736, 11893838, 263067, -2478733, 2893197, 5735929, -2236067, 3652870, -3090229, -1971390, -9797894, 3910568, 6696928, --6062347, 5083631, -2508798, -8584029, 8943196, 5311801, -1592896, 5370857, 10473278, 7349226, --5401995, -3004330, 5279589, 1683627, -1192390, 4080756, 3730716, 5455682, 344671, -2365990, --4670240, -8278013, -272194, -6868190, 847719, -2225867, 3846143, -5458367, -12592307, 2787434, --3123515, 5829881, 1465121, 474057, -3485366, -7400229, -6225018, -569083, -637266, -5575405, -7878044, 10212358, 10581189, 4297652, -7577396, -646393, 10025527, 985695, -1729261, 4689031, --1312113, -2506114, -9518184, 5264556, 2757369, 13815299, 6376416, -9350681, 3146601, 3543885, --992674, -151398, 3347927, -2259690, 767725, -3995930, -9870909, 8942659, 1632088, 5339181, -2576444, -4631586, 7552700, -1654636, 1800128, 429497, -1670205, 310848, 231391, 623307, -3951907, 1331440, 754841, 363998, -1349694, -1565516, -2063732, -1196685, 1363115, -630286, --103079, -763967, 1249299, -1131724, -603980, 144955, -150324, 555661, -2175938, 2556043, --1064078, 2252710, 736050, -1136556, -1435056, 3169686, -2870112, 2550674, -695248, -3663607, --6111202, -1648731, -1560147, -10549513, 529355, 1295470, 5281736, -1994476, -4544613, 1894081, -578210, 2497524, 85362, 5732708, 2305324, 3959960, 679679, -441308, 3411278, 1995012, --10383083, -3208878, -14845018, 674310, -2762738, 1717450, 2639794, 200790, 7105487, 1808181, -10142565, 1247688, -12039330, 247497, -4838281, -1991254, -562104, -1804960, -608812, -9549860, -2090039, -4596152, 11518565, -11942693, 6640557, -2592550, -10192494, -1905892, -7162932, -1540820, --2172180, -10853382, 3129421, 3330210, -1975148, -1792075, -679142, 3847217, -8610336, 224412, -8102456, 1500017, 11266236, 18379238, 7606924, -16633871, -22192096, 10779294, 4842039, 16593606, --3419331, 7966628, 1717987, 7912404, 11086384, 14262513, -7559680, 4119948, 10625212, -8676371, -1635846, -1107028, -1072131, 807991, 7593502, -1144609, 2608119, -4896263, 1796907, -3772592, --3970161, -1751273, -3312494, 561030, -1944010, -5591511, -185220, 3729105, 2335389, -1029718, --1014686, -820339, 104690, 1743220, 1842541, -1434519, -2160906, -953483, 3245922, -773631, -3146064, 509491, 485331, -776315, 783832, 940598, 291521, 879931, 180926, -2633352, --2551748, -1660005, 858993, 2695629, -3740380, -2490007, -1157494, 1584843, -1739999, -20310900, -15164993, 2818036, -2702608, -270046, -9225590, -7517267, 7904888, -2098629, -2604361, 8250096, --6133214, -6544994, 344671, 8207146, 3456912, -2598992, 221728, -4636417, -651224, 686658, -4361003, 238908, -10411538, -10283225, 2302639, -1335735, 2469069, -984084, 4130685, 8078297, -14947560, -183073, 9263708, -2232309, 2598992, 6456410, -6253473, 12277701, -1783485, -7539278, --10759430, -1992328, -8932458, -11169599, -3138011, 5236102, -3503083, -8660802, 4324495, 6281390, -9684078, 12618077, -10271951, 3970161, -2887292, -9347996, 3498251, -10455561, -1969243, -17114908, -6833830, -5053566, 2516314, -3019362, 2681133, -18402324, -18449568, -11100343, -4350802, 10306848, --9936944, 19492710, -6866579, 2020245, -1825898, 3711389, -1788317, -13635447, 1974074, 1702955, -3735011, 3290482, 1597728, 5425081, -3063386, -4604205, 8590, 326418, -4596152, 2198487, --5912023, 3459059, 1972464, 2828773, -876173, 132607, -1811403, -4432943, -3323231, -1741609, --2066416, 3166465, -2050310, -5375152, 1900523, 2498060, -1021129, 3883724, -319975, -955630, --26307, 1035624, -1610613, -1415192, 1985349, 2872260, 2027761, 1082869, -4014184, -2698850, --870805, -3007551, 1180579, 479963, -37581, -2675228, 17060146, 1104880, 6374805, 4625143, -1704028, 10109816, 1275605, -13904957, 6644315, 2114198, 6338835, -532039, -10480794, 14948097, -7918846, 6200859, -1513976, -4399121, 1799591, -979789, -8341900, 5433671, 3606162, -4475356, -5849746, 9549323, 132607, 3659849, 9283035, -10134512, 2334315, -3345780, 4095251, -19153944, -5754720, 9371082, -3365107, 2571075, 9155797, 5069135, 14496, 3172370, -9777493, 2586107, --5813238, 536871, 2652679, 1631551, -4545686, 18552112, -3464965, -3392487, -4464619, -15987479, --6691022, -9754944, -11591043, -2094870, 15691663, 17512730, -1887101, 5484137, 6787659, -14432701, --4882841, 11922829, 9571335, -5667210, -4268661, -14212047, -4850629, -5309117, -7103339, -7968775, -1951526, -14500346, 2200634, 13828184, 18960134, 6012418, -5850819, -281320, 9955197, -3444564, --7132867, 786516, -1104880, -2927020, -4862977, 801011, -699543, 2388002, 2812130, 1879585, --1881733, 1003949, 1391569, 1386201, -500901, -2680597, -6362994, 1869385, -616865, -2381023, -4410932, 1580011, 2367064, -2484102, 3705483, -2669859, -2389613, -3020436, 2881386, 750009, -2059437, 4741644, -655519, -2250563, -1542430, 2443837, 774705, -70867, -144955, 770410, -392453, -134755, -1206349, 2483028, 2870112, 3998078, -1569811, -5404143, 3377455, 912681, --7196218, -10644003, -11464341, -4558571, -11208254, -4636954, -4545686, 204548, -10661183, 2415382, -4490925, 528818, -12167642, 3821447, -15094663, 4705674, 8438537, 281857, 13112535, 442382, --3885335, -2343979, 8851391, -3128347, 12179454, 4384625, -4188667, -4110284, 2164664, -6138582, --3324305, 525597, 11528766, -314069, 6109054, 3533684, 1075889, 8150774, -3584687, -7315940, -3317862, -5213017, -2420214, -14366666, 8184060, -4987531, -4230006, -2835752, -15892453, 19161996, -4992363, -2173254, 8352638, 2818036, 4093104, -8337606, -12636868, -14332843, -6915971, 861678, --14530411, 5553393, 10633265, -16250009, -5913096, 6118181, -7469485, 4068408, 18249316, 701690, --2879776, -4712116, 4174171, -9763534, 6536940, 3617973, -8853001, 3054796, 6410776, -3471944, --10493679, -8901857, -4655745, -202937, 2966212, 2603824, 2052994, -1700270, -2567317, -1170916, -2409477, 270583, -1416266, -5825587, -7042136, -1799054, 568009, -4936528, -6020471, -4061965, --2484102, -2174327, -5270462, -4457103, -2403571, -3168075, -6749004, 1350767, 6494528, -484258, --519691, -2405182, -1857573, 2305861, -2324651, 659278, -5300527, 373125, -1476932, -2717641, -74088, -2535105, 1764695, 2695092, -2176475, 3984119, -2566780, -848256, -2655364, -15032, -521839, 11679090, 28790240, 30438970, 9095130, 18931678, -12979928, -12918188, -3114925, -1808718, -1015223, 4394826, 9601936, 17538498, 5632313, 16244103, 1703491, 5008469, 2317672, -4318590, -7272990, -53687, 2847027, 1388885, -8297877, -874026, -4493610, -8750459, -5634460, 290984, -795106, -11649025, -4955856, 15022722, 10617696, 7885560, 12495134, -7645042, -15032, -21456582, -906238, 18720152, -3722126, -3529926, 2129230, -1823751, 14422500, -983548, -2525441, 11370926, --13466333, -21478058, -8833137, 2113124, -11749957, 8790187, 11943767, -16869558, -6565395, 328565, --427349, -24283208, -15694884, 8036421, 3273839, -1635309, 7766912, -10481331, -6665789, -14911590, -3481608, 5062693, 1141388, 1257889, -10156524, -16451335, 13669807, -22442814, 6504728, -8081518, -21521008, 2478196, 8903467, -5938329, -8665633, 6517613, 2803003, 9943386, -9356586, -1421634, -6453725, -182536, -5238250, -4517232, -5152350, 743566, 4931696, 5827197, -6349573, -2323577, --1138166, -8012262, -3070365, 1787243, -1034013, 1009854, -4467840, -6987375, -1161252, 479426, -5574868, 2065342, -3654480, 4706211, 627065, 2548526, -8147553, 1953136, -4916664, 4122095, -581431, 4350265, 6321118, 2319819, -4651987, -8703751, 2704756, 3367254, -28179818, -20266340, -14038101, -2923262, 25526064, -6219650, 21014738, -16902844, 508954, 7558606, -1674500, 914291, -2468533, -1309428, -12687870, 4458713, 4773856, 5561446, 6323266, -3895535, 10429254, -9469866, --6998113, -5410585, 14669461, -8090645, -2728915, 1321776, -306016, -7610145, 6541235, -8492224, --10116259, -19063212, 1739999, 3500935, -12950937, -6037114, 6238440, -2616172, 3333968, 1040993, -15060303, 1053341, 11334956, 5060009, 488016, 9088151, 2063732, 3151432, -17082158, 17598092, -6231461, 13789529, -8376797, 3665218, -9168145, 14305462, 10849624, 17452062, 2782065, -4562866, --12680891, -782221, 2236604, -10786810, 15333033, 2480344, 2384781, 16519518, 3694746, -4939213, --6592775, -527744, 9815611, 11857868, -3852586, 14785962, -17678622, -18510236, -8105677, 4319127, --5646809, 8091719, -2014340, 4351876, 14154065, -614180, 7025493, -5876589, -5389647, 6207302, --545461, 9946071, -3068754, -44023, -3048353, -6110128, 1242319, -3585761, -1436130, 4114042, -1389422, -5549098, -5109401, 3007551, 7512972, 7826504, -790811, 6417218, 6930467, -9691594, -4532264, 9226663, 7226283, 4112968, -7265474, -8760660, -9178882, -9208410, -9184788, 808528, --3209414, -1245004, 1034550, -6718940, 4796405, 4399121, -3484829, 5228049, 1837172, 2499134, --6438693, 12986907, -30627948, -1392106, 15961172, -10194105, -3400540, 11767674, -12746926, -25892748, -5160403, 4414690, 4027069, -3362960, -15305116, 3886409, 4372277, 1177895, 8527121, -27428198, -12621835, -6350109, 6583111, -15613817, 12757663, -19762756, -12610024, 7720204, -5151814, -2266669, --15010911, 11864310, 15604153, 1611, 1778653, -7114077, 23392002, 5839545, 6416145, -4186519, --20146080, -4286378, 11215233, -1970853, 16758962, 206158, -5986111, 4099010, -1097364, 10546829, --19912542, -2336462, -15251429, 16658568, -6091338, 5643587, -378494, -500901, -18024368, -6267968, -16007880, 5182952, 1523103, -4691715, 573915, 2140504, -23107998, -23926190, 25708600, -11245835, --27679990, 11433203, 13256953, -22252226, -29153164, -20301774, -19493782, 3622268, 7918846, -2310156, --18724446, -466541, -9957345, -4601521, -13530758, -608812, 1520955, 1534377, -2579665, 13111461, --6876243, 5261335, -5810017, -121333, 3712999, -3117610, -336618, -7471096, 10285373, -2170032, -3728569, -5416491, -7999377, -1494649, 4155381, 4749160, 1620813, -7759396, 4930086, -920734, --6197638, 6491306, -9482751, -1697586, -5776731, 9974525, -4048544, -10541997, 4938139, -4020626, --4406637, -14074608, -498753, 3483219, 12288438, 5194763, -6823630, -3355443, 1473174, -1637456, --3486440, 2510945, -249108, -2444373, -2380486, -635118, 12252468, -17054242, -9112847, -17820356, --1372242, 3329674, -23332946, 3503083, -11282879, 32523640, 1976759, -29795262, -6533182, 14025216, -9002251, 6691022, 15119895, 14651744, -21047488, -5731097, -7987029, 19674708, -6767258, 23018878, -223875, -13775571, -10473815, -21155936, -23645942, 1105417, 3041374, -4227859, -12057047, -5569499, -1873680, 3460670, 8470749, -12024298, 6206765, -14084808, -15899969, 2819646, -3177202, -4649839, --16589311, -16339666, -7421167, -5287642, 23190140, 1768453, 7982197, 12520367, -109522, 28449864, -11964705, -9959492, 1779190, 14468671, -5499706, 18412524, -4638565, 1985886, 1599339, -25863756, --25785374, 3478387, 18543522, 10201, -5379984, -28896004, 2142652, 9356586, 6429566, -10172630, --7658464, -6059125, 3795141, -12707734, 30592516, 16687022, 18879602, 3293166, -21068962, 7381975, -10064719, 29761440, 7264401, 2687039, 12420509, 4777078, -4611185, -121333, 9589051, -1258425, -1573032, 2604898, -7344931, -5765457, 9332427, -142271, -6980933, 9097814, -5581847, -2583423, --4205310, -4779225, 8749385, -5850819, -2135673, 4074313, -8792872, 3424700, -526134, -5599564, -11432129, -4415227, 300111, -14602352, 8973260, -4738423, -3404835, -9557376, -12712566, 1660005, --4952634, 8757438, -6442, 5034776, 3788161, -190589, -5130876, -245887, -14172855, -12931610, -27304180, -8470749, -10105521, -1454920, -7519414, -18606872, 404264, 12843563, -31894964, -569620, -8284455, 10157598, -10873247, 7203197, -18260054, 1372779, -4708895, 5680631, -16354699, 10146323, --27851790, 4525285, 768799, 15737297, 14846628, 7341710, -10401874, 11549167, -3391414, 12904229, --14104136, 2176475, 16517370, 13036836, -7755101, 2632815, 414464, -3721052, 8011725, -3178276, --9618579, -10783052, 7638063, -19429896, 12787728, 2916820, -20767778, 19488950, 18720688, 17542258, -6351720, -9236327, 22656490, 2640331, 9730785, -14003741, -12085501, -13430900, 4132296, 5077188, -8110509, -18810884, 1805497, 13661217, -35938676, 1240709, -11812771, 22405234, 14506252, 11191074, --3195993, 14805826, -14107357, -867047, -9830106, -21735218, -928787, -20030116, -16667157, 9600863, -26521960, -25094958, -5945846, -4708895, 26623428, -6744173, 11628624, -7800735, -4707821, -1186485, -9396315, -5742908, -2359011, 594853, 6387690, 4551592, 3339874, -3736622, 934692, 2593624, -13159243, -10640781, 10972031, -2597382, 8012262, -188979, 2093260, 2597382, 5021891, -7125888, --1619740, -1560147, -8644695, -7901666, -7679939, 5054640, 4187056, -1803886, -3486977, -4668093, --6078990, -3973919, 427886, -2928631, -140660, 7689065, -266825, -14817637, 6746320, -8787503, --1385664, 23739894, 5152350, 12020540, -34206192, 15855946, -19119584, 25897042, -2547989, 10069014, -19678466, -21219822, 37845640, 27086748, 20503638, -9324374, 5580237, 25873420, -6427419, -8377871, --5965710, -1417876, -19495394, 5128191, -10331544, -23809688, 23084376, 7543037, 6412923, 2813741, -5426155, 8831527, 24299314, 5011153, -14992120, -1367410, -15560130, 3018825, 2368675, -27627378, --1064078, 14911590, 1202591, -2059437, -8295730, 29190208, 6147172, 12378096, 6561637, -15901043, --11179263, -8734353, 18312130, 10645613, -3526168, 10943040, -1505386, -20042464, 19469624, 2253784, -22301080, 2350958, 2404645, 335544, -29317446, 3907347, 906238, 3150896, 18430778, -7347079, -28933584, -43888124, -7647190, 32536524, -13093745, 10686416, -14776835, -23419382, -18641232, 13405667, --12699145, 12489228, -20035486, -4438849, 3532074, -5089536, -7792145, -2676302, -2234994, 8673150, -20421496, 2013803, 12178380, -4065187, -1876364, 14659797, -2003602, -4358855, 4246112, -7532299, -6731288, 12742631, -8448738, -1458678, -3194382, 2216203, 2583423, 5968394, 23075786, -4306242, -8242042, 265214, 5681705, 8176544, 4360466, 1136019, 12937515, 13637595, -3658775, -2093797, -5893232, 2835752, 5132486, -17904108, -1262720, 16694538, -3563212, 3337190, 6835441, -1105954, -17394080, 6135361, -35447440, -42407972, -3748970, -19875498, 2690260, 12077985, -16974248, 4957466, --25926034, 11282342, -14280766, -70875552, -4566087, 43247636, -18641768, -8007967, 43447352, -10188199, -2341294, 52064132, -12458090, 11520713, 4866735, -7591355, 41918344, -33741800, -4359392, -908386, --5939940, -6777996, -6911676, -822486, 13652627, -7665980, -22874458, 278636, 456877, 6781217, -8339216, 1537061, 18824842, -695248, 8662949, -5111548, -22695144, 15849503, -2786360, -23335094, -897111, 13510893, 41291280, 20922934, 34712464, 767725, 8548059, 16608639, 3917010, -1984812, -32451700, -1667521, -12639552, 38031400, 6641093, 6760279, 278099, -5311801, 21709986, 41876, --12617540, -14201309, -2943126, -2768643, 32870996, -22238804, 2888366, 4285304, -5832029, 38649336, -333934, -24629490, 4156992, 12671227, -18121004, -807454, 18494130, 15312632, -9309342, 1532767, --10521596, 8973797, -2820720, 1294396, -10351945, 9722195, 148176, -977105, -15052250, 6322729, -5179194, -9743670, 804770, 3658775, -5046587, -3257733, 11686606, 1917166, 6536940, -4179003, -3461207, 20290500, -18276696, -8244727, -5958194, 21939230, 8193724, 11672110, -13123273, -11924977, --4831838, -1321239, -15921444, -17828946, 21622476, 8844948, -12550431, -11633993, -7108708, 26844, --12435004, -10832444, 284542, 3496104, 8302172, -1934346, -3868692, 2123325, 24089934, 19452444, --39756364, -19417010, 30521648, -5610301, -29804388, -261456, 588411, 10797548, 32273994, 28739236, --17724794, 5326833, -4051765, 261993, -340376, -18596672, 27983860, -8315057, -18421114, 6544994, --13239774, 15928960, 1342714, 22649510, -7032472, -21480742, -19473918, 17160542, -8317741, 22339736, --6058588, 14470819, -14753213, -11420318, -7050726, 1599875, -18504866, 4520453, 907849, 300111, -17955648, -211527, 5951751, -12525198, 8864276, -19765976, 21082920, -19015968, 12501576, 6385543, -17709760, -29759828, 941672, 2498060, -9068287, -21505974, -36495948, -6103149, -31155156, -11959873, --24948392, -11596412, -45532024, -14136348, 20544440, 26107496, 14136885, 15194521, -2537789, 16508781, --32465658, -7414724, 4942434, 20907900, 5688148, -44551160, -1841467, -19590956, -13120051, 52068964, -34918084, -24701968, -10136123, -17348984, 5719286, -45913200, 2734821, 9570261, -13208098, -13629005, -8262980, 2673617, 355945, -8822400, -7825431, -7556995, -7739531, 14320495, 13058311, -945967, --3769908, -14136885, -16304233, -3452617, -4150549, 5454609, 13925895, -27370216, -2163590, 13684303, --146566, 17513802, -6207302, -16791712, 8973260, 18930606, 9480067, -11389180, 1299765, 17517560, --22414898, -15911780, 29501056, 1613297, -1116692, -3028489, 4589173, 6802692, 8886824, -3745212, --7315940, -52413632, 15336791, 8163122, -27528056, 10817412, 10282152, -20067698, -15323370, 23471460, -2965138, 12473122, -6284611, 15493558, -4908074, -2519535, 12295954, 5863167, 4063039, 277562, --8230231, -14282377, -8621073, 22187264, -7797513, -19361712, 32852742, 20205674, 2645700, 14904073, -4494684, -17015050, -50046568, 20451560, -1615445, -27144194, 22789096, -2476049, -36458368, -30790620, --15903727, 23899882, 9690520, 24774446, 31384936, 9280351, -25234544, 7934952, 9179419, -32303522, --5122822, 18088254, -9977746, -35193500, -26555782, -42884712, -27203250, -6262063, 27149562, 39094940, -18972482, -2662343, 27074400, -6802692, -66017944, -52503292, 11630771, -26484916, -31224412, 44863080, -6064494, -60498372, -46582680, 15899969, 2934537, 10291279, 22623740, 54077932, 31199716, -4589710, -60432336, 19185618, -63061932, 539018, -13302587, 32670206, 10002442, -20771536, 10350871, -15593416, --9052180, -13564044, 20764020, -3806952, 15244986, 12610561, 16500191, -3638911, -16095927, -5293011, -11476153, -7027640, 9696426, 6099928, 7067906, -14161044, 1973001, 5746666, 576063, 25493316, --570694, 11334956, 2814277, -4203163, 13940927, 3300146, -1693291, 15161771, -6892349, -2294586, -9633075, 3824669, -1061394, -6126234, -8195872, 992674, -9456444, -7312182, 5714991, 7305740, -49609020, 47986596, -15019501, 16663936, -19601156, 11971684, 776852, 6898255, -23379118, 1803886, --19951734, -17976586, 316754, -41448044, 1169842, -17676474, 4763656, 12104828, -164283, 14033269, --20180978, 30768608, -15079630, -620086, 21493626, -20155744, 8018704, 15316927, 19093278, 2647311, -7010997, 4603668, -29542396, -16628503, -4607963, 4299799, 4789963, -4513474, 19914690, -6452652, --63351, -3859028, -8323647, 6873022, 4138738, -23610508, 7138236, -18995566, 5393405, -45496052, --1979443, -1237488, 119185, 18431852, -7259569, -16656420, -7175280, 16922708, 163746, -43979928, -61604864, -5474473, -11521787, 13269301, -2461016, -9141838, -11289322, -12332462, -12941273, 41996192, --16065325, -24499568, 21085068, 1930051, -33013802, -7949448, 14104673, 10943040, -10741176, 22601728, --3790846, -6337224, 21219286, -15574625, -13996225, 26458072, -11546483, -4306779, -1237488, 11151883, -5650567, -380105, -1658394, 556198, 5233955, -5560909, -207769, 5101885, 5726265, 6500433, --16097537, 4104915, 8425115, -15952045, 1539209, 3221762, -2618320, -6514392, 6598144, 1721745, --5534602, 822486, -348429, -2768107, -19780472, 11253888, -11627550, 3486440, 3573950, -18167712, --817654, 790274, 79457, -350040, -5917928, -985695, 5308580, -829466, -38969312, -57749592, --55357296, 122641184, 101938904, 115883584, 262156752, 68487008, -65593816, 20633022, -210137712, -222957120, --55097988, -140153376, -108246600, 66185984, -34381752, 13735305, 167053824, 82813952, 123842160, 237672752, -158519728, 41356240, 34524020, -70143792, -216390656, -165457712, -126530808, -255796448, -103424424, 6067178, --45216880, -20437602, 129417568, 34237868, 17426292, 160160944, 19899658, 38252052, 227676224, 167276624, -106005160, 215132768, 107243720, -37846180, -3214783, -68190120, -335209312, -292626848, -236352592, -367449472, --279888512, -99262600, -132587248, 29817274, 255129104, 227741712, 315354752, 398032352, 296237312, 230945216, -224735232, 124215288, -42115912, -80267568, -182861984, -261174272, -256440144, -222319312, -254577200, -260610032, --209494544, -117306296, -85012432, 31417686, 199468480, 287551808, 410650944, 461801856, 275661728, 66695472, --39724152, -278681088, -265160000, -202181296, -157153392, -58733140, 29127932, 21408802, 28007482, 35067336, -16197395, 41336912, 58304716, 43080132, 70458936, 39763344, -18660022, -22736484, -63227288, -115181360, --32059784, -36568424, -42036456, 35124780, 30054034, -39760124, -50971060, -94142464, -153156384, -64932928, -85897200, 146859968, 285884832, 345068416, 234268992, 144892864, 37933152, -131108168, -191228592, -216287040, --252678288, -237629264, -182725088, -148447488, -123167312, -75435728, -20340966, 61395484, 217233008, 303904896, -269475904, 193068448, 118275344, 23935316, -49637472, -74557944, -93976568, -67868000, -20431160, -6199249, --22164178, -34699576, -53975392, -84289808, -108737832, -105415144, -106363256, -64825016, 3194382, 30339112, -60224568, 79373680, 71092984, 40979356, 15219217, 4548907, 1192927, 832687, }, +2590939, -3527242, 5304822, -3109020, -1074816, 81068, -1825361, -2042794, -4123706, 986769, +6240588, 641024, 1112933, 2654827, 637266, -2216203, -696322, -1316944, -1335735, 3787624, +1032940, 498216, -1298154, 700080, -164283, -1438277, -2364916, 3671123, 2816425, 525060, +-788663, 4257387, -5930813, -2205466, 2515240, -2453500, 5091684, 522912, 3591667, 463856, +409096, 2330557, -2049236, -849867, -77309, -56908, -1600949, -1274532, 2243047, -112206, +-5470178, 5125507, -727460, 872415, -4621922, 2193118, -2050310, 1816771, 132607, -158914, +-1740536, -178241, -2675765, 2754685, -5195837, -586800, 3788161, -3008088, 1408749, 5661304, +1717450, 567473, -2823404, 298500, 1505386, -1069447, 1887638, -1191853, -825171, -1598802, +1708323, -1864553, -2979097, 943282, 494995, -749472, 3644280, -928250, -790811, -893890, +1209570, 1323924, -95563, 141734, 658741, -734439, 652835, -1412507, -580894, -237834, +-294205, -765578, -26307, -51003, -156229, -453656, -33286, -768799, 404264, -391916, +878858, -584116, 654983, 883153, 10931766, 2019708, -1530082, 3341485, -1651415, -1366873, +-1750199, -711354, -4104378, 5811091, 3357054, 2508798, 2700998, 2569464, -2692945, -3628711, +4891431, -1051193, -3795141, -7225209, 1183264, -2138894, 2267743, 45634, -613107, -1617055, +2274185, -2676838, -1352915, 3571265, 6783901, 1767379, 3086471, 588411, 3411815, -706522, +3629784, 2290291, 410169, 2030446, 180389, 596464, 186831, 4958540, 1050120, 1304596, +-1120450, 734439, -351650, -693637, 4023311, 4605816, -1656247, -1695438, 928250, 4238596, +-6899328, -361851, -1874216, -5106716, -2078764, 710280, -2177549, 2269890, 1838783, 151934, +-3114388, 1449015, -664109, -2978560, 3820374, -5273683, -2493766, -5624797, -2784750, -799401, +836445, 5674189, -2454037, -1479616, 1753420, -896038, -1350767, 2687039, -446140, -111669, +-1228898, -1903744, -2361158, -630823, 2003602, 797253, 973347, 929324, 710280, 70330, +-336618, -147103, 158914, 1414118, 687732, 744103, -485868, 115427, 484794, 399969, +-1074, 90194, 3221, -108985, -196495, -991064, -761820, -515396, 545998, 457414, +-223338, 3299072, 1460826, -6663105, -619549, 981400, 4744328, -1432909, -8250096, 6648610, +-7794829, 408559, -3396246, -2710124, -8265665, -5507759, -3214783, -2093797, 3424163, 1148904, +-5435281, 766652, -2898566, 36507, -173946, 2240362, 477815, -2386391, 408559, 577136, +1358820, -1688996, -1143535, -510564, -2677375, -4103305, 5568425, 2565706, 773631, -772020, +4747550, 4078608, -4640176, 1297080, 467615, -898185, -2694018, 606664, -4794257, 1072668, +-893353, -3945464, 4882304, 70867, -354335, 6070937, -5261872, 4772246, 1790465, -724239, +-3892851, 1124208, -542777, -4153234, -3426310, 16106, -1487669, -1874216, -5697274, 248571, +1243930, 2664490, -1637993, 2476586, 781147, -1030255, -775242, -3399467, 2943663, 578210, +450435, -5636608, 2967823, -514322, 421981, -2923799, 112743, -5181341, 649614, 1079647, +718333, -471910, 530965, -128312, 61740, -927176, 306553, -297427, 1160178, 618475, +497142, 1017370, 41876, 326418, 1080184, 600222, -702227, -330176, 1699733, -625455, +359704, -609885, 653372, -1954747, -448824, -622770, 817118, -383326, -12273406, -11628624, +4508642, 7691213, 4661650, -10475425, 7460895, -2536715, -950262, 656056, -4846871, -3686156, +8801999, -126702, -10737, 664646, -205622, 2868501, -4372277, 2653753, -2314451, 2378338, +4031901, -2673617, -719944, 2330020, -667331, 4196183, -1304596, 1821603, 368293, -431107, +354872, -3582540, -4975183, 4697084, 617402, -908386, 42950, -4669703, -5806259, -164819, +113817, 3022583, -5397700, -4605816, -980863, -9597641, 3726421, -759136, 1958505, -740345, +-2309082, 1464584, 12293807, 6820408, 3568581, -3687230, 4845797, -58519, -6313065, 15032, +-6589554, 5596880, 772020, 658204, -3754338, 31675, 3832185, 1399623, 766115, 476205, +428423, 4111894, 2870112, 523986, 2796024, 1657321, 2232846, 6019934, 2500745, 2958696, +-2793876, 2258079, 1687385, -727997, 4748623, 1434519, -14496, -434865, 1417339, 2517925, +308164, -40265, -938987, 598611, 2083059, 1141388, -476205, 195421, -1713692, 481036, +429497, -774705, 164819, -118112, -34360, 1154809, -227096, 1205275, 1671279, 590558, +-984621, -1903744, 308701, -1205275, 909459, 808528, -1203128, 477815, -17632988, -1342177, +-4241817, -616865, -2947421, -10002979, -426276, -2690797, -4124242, -9377524, -1156957, 6657736, +-4653597, 4379256, -776315, 6174553, -2093260, 5016522, -1654636, -4968741, -1334124, 533113, +-2180233, -4467840, -3590593, -4392141, 140660, -4007741, 1459215, 471910, 399432, 1894618, +-3015604, -4037806, 5822902, -532576, 1725503, 59056, -4574677, -2902324, -3230352, 155693, +-2319819, 4059281, 4125853, 680215, -5603859, -1837709, 10302016, 2561948, -4361003, -3469260, +-2209224, -3821447, -2021319, 8048232, 4896263, -5846524, 3573413, 4746476, 7007776, -1810866, +2847027, -432718, 59593, -2840584, -5839545, -1058710, 4304094, 440771, 8338679, 5916318, +393526, 1934883, 7033009, -5605469, -2570001, -1655173, -3453154, 2477659, 1088237, 1135482, +-3026878, 2052994, -2199560, 2275796, -4303021, -202400, -398895, -1689533, -105764, -370441, +2112587, 576599, 473520, -1845225, -1247688, -595927, -1737851, -75162, -2506650, -1459752, +101469, -195958, 1561758, -1066763, 427349, -516470, 849867, 613107, 2160906, -1786706, +22600654, 15170361, -4670777, -851477, 58519, -615254, -2582349, 3156801, 7739531, 6532109, +3394635, -11855720, -5266167, 1524713, 691490, 5038534, -8921721, 1804423, 12104292, 8145406, +-1386201, 2902324, -1059783, -4085588, -5575942, 311385, -4750771, -2774012, 1395328, 3757560, +-3481071, -6489696, -3081102, 1115618, 5963025, 8322036, -1581085, -8801462, -1859184, -3147674, +-8827768, -533113, -264141, -4239670, 1463510, 2377801, 5164162, -7408819, 3029026, 3818226, +835908, -7165079, -5318244, 2437931, 316217, 1857037, -778463, -703838, -245887, -3973919, +1959579, 2070174, -2770791, 4968204, 5883569, 8038568, 1932735, 598074, 7579007, 12347494, +1974611, 1685775, 2107218, 7259032, 824634, 4293357, 12196633, 3613678, 2248416, 331786, +-2302103, -10427644, 1395328, -285078, -1692217, -2001455, 1282585, -1453846, 2576444, 1137630, +-1378685, -768262, -352724, 2093260, 1338419, -590558, -405874, 1421097, 3097745, 12885, +-777389, 1071058, 118112, -1458678, -2881923, 2079838, -2713883, 1642288, 1145683, 2000381, +-136365, -349503, 41339, 643171, -3785477, 94489, 551366, -374736, 11893838, 263067, +2478733, 2893197, 5735929, -2236067, 3652870, -3090229, -1971390, -9797894, 3910568, 6696928, +-6062347, 5083631, -2508798, -8584029, 8943196, 5311801, -1592896, 5370857, 10473278, 7349226, +-5401995, -3004330, 5279589, 1683627, -1192390, 4080756, 3730716, 5455682, 344671, -2365990, +-4670240, -8278013, -272194, -6868190, 847719, -2225867, 3846143, -5458367, -12592307, 2787434, +-3123515, 5829881, 1465121, 474057, -3485366, -7400229, -6225018, -569083, -637266, -5575405, +7878044, 10212358, 10581189, 4297652, -7577396, -646393, 10025527, 985695, -1729261, 4689031, +-1312113, -2506114, -9518184, 5264556, 2757369, 13815299, 6376416, -9350681, 3146601, 3543885, +-992674, -151398, 3347927, -2259690, 767725, -3995930, -9870909, 8942659, 1632088, 5339181, +2576444, -4631586, 7552700, -1654636, 1800128, 429497, -1670205, 310848, 231391, 623307, +3951907, 1331440, 754841, 363998, -1349694, -1565516, -2063732, -1196685, 1363115, -630286, +-103079, -763967, 1249299, -1131724, -603980, 144955, -150324, 555661, -2175938, 2556043, +-1064078, 2252710, 736050, -1136556, -1435056, 3169686, -2870112, 2550674, -695248, -3663607, +-6111202, -1648731, -1560147, -10549513, 529355, 1295470, 5281736, -1994476, -4544613, 1894081, +578210, 2497524, 85362, 5732708, 2305324, 3959960, 679679, -441308, 3411278, 1995012, +-10383083, -3208878, -14845018, 674310, -2762738, 1717450, 2639794, 200790, 7105487, 1808181, +10142565, 1247688, -12039330, 247497, -4838281, -1991254, -562104, -1804960, -608812, -9549860, +2090039, -4596152, 11518565, -11942693, 6640557, -2592550, -10192494, -1905892, -7162932, -1540820, +-2172180, -10853382, 3129421, 3330210, -1975148, -1792075, -679142, 3847217, -8610336, 224412, +8102456, 1500017, 11266236, 18379238, 7606924, -16633871, -22192096, 10779294, 4842039, 16593606, +-3419331, 7966628, 1717987, 7912404, 11086384, 14262513, -7559680, 4119948, 10625212, -8676371, +1635846, -1107028, -1072131, 807991, 7593502, -1144609, 2608119, -4896263, 1796907, -3772592, +-3970161, -1751273, -3312494, 561030, -1944010, -5591511, -185220, 3729105, 2335389, -1029718, +-1014686, -820339, 104690, 1743220, 1842541, -1434519, -2160906, -953483, 3245922, -773631, +3146064, 509491, 485331, -776315, 783832, 940598, 291521, 879931, 180926, -2633352, +-2551748, -1660005, 858993, 2695629, -3740380, -2490007, -1157494, 1584843, -1739999, -20310900, +15164993, 2818036, -2702608, -270046, -9225590, -7517267, 7904888, -2098629, -2604361, 8250096, +-6133214, -6544994, 344671, 8207146, 3456912, -2598992, 221728, -4636417, -651224, 686658, +4361003, 238908, -10411538, -10283225, 2302639, -1335735, 2469069, -984084, 4130685, 8078297, +14947560, -183073, 9263708, -2232309, 2598992, 6456410, -6253473, 12277701, -1783485, -7539278, +-10759430, -1992328, -8932458, -11169599, -3138011, 5236102, -3503083, -8660802, 4324495, 6281390, +9684078, 12618077, -10271951, 3970161, -2887292, -9347996, 3498251, -10455561, -1969243, -17114908, +6833830, -5053566, 2516314, -3019362, 2681133, -18402324, -18449568, -11100343, -4350802, 10306848, +-9936944, 19492710, -6866579, 2020245, -1825898, 3711389, -1788317, -13635447, 1974074, 1702955, +3735011, 3290482, 1597728, 5425081, -3063386, -4604205, 8590, 326418, -4596152, 2198487, +-5912023, 3459059, 1972464, 2828773, -876173, 132607, -1811403, -4432943, -3323231, -1741609, +-2066416, 3166465, -2050310, -5375152, 1900523, 2498060, -1021129, 3883724, -319975, -955630, +-26307, 1035624, -1610613, -1415192, 1985349, 2872260, 2027761, 1082869, -4014184, -2698850, +-870805, -3007551, 1180579, 479963, -37581, -2675228, 17060146, 1104880, 6374805, 4625143, +1704028, 10109816, 1275605, -13904957, 6644315, 2114198, 6338835, -532039, -10480794, 14948097, +7918846, 6200859, -1513976, -4399121, 1799591, -979789, -8341900, 5433671, 3606162, -4475356, +5849746, 9549323, 132607, 3659849, 9283035, -10134512, 2334315, -3345780, 4095251, -19153944, +5754720, 9371082, -3365107, 2571075, 9155797, 5069135, 14496, 3172370, -9777493, 2586107, +-5813238, 536871, 2652679, 1631551, -4545686, 18552112, -3464965, -3392487, -4464619, -15987479, +-6691022, -9754944, -11591043, -2094870, 15691663, 17512730, -1887101, 5484137, 6787659, -14432701, +-4882841, 11922829, 9571335, -5667210, -4268661, -14212047, -4850629, -5309117, -7103339, -7968775, +1951526, -14500346, 2200634, 13828184, 18960134, 6012418, -5850819, -281320, 9955197, -3444564, +-7132867, 786516, -1104880, -2927020, -4862977, 801011, -699543, 2388002, 2812130, 1879585, +-1881733, 1003949, 1391569, 1386201, -500901, -2680597, -6362994, 1869385, -616865, -2381023, +4410932, 1580011, 2367064, -2484102, 3705483, -2669859, -2389613, -3020436, 2881386, 750009, +2059437, 4741644, -655519, -2250563, -1542430, 2443837, 774705, -70867, -144955, 770410, +392453, -134755, -1206349, 2483028, 2870112, 3998078, -1569811, -5404143, 3377455, 912681, +-7196218, -10644003, -11464341, -4558571, -11208254, -4636954, -4545686, 204548, -10661183, 2415382, +4490925, 528818, -12167642, 3821447, -15094663, 4705674, 8438537, 281857, 13112535, 442382, +-3885335, -2343979, 8851391, -3128347, 12179454, 4384625, -4188667, -4110284, 2164664, -6138582, +-3324305, 525597, 11528766, -314069, 6109054, 3533684, 1075889, 8150774, -3584687, -7315940, +3317862, -5213017, -2420214, -14366666, 8184060, -4987531, -4230006, -2835752, -15892453, 19161996, +4992363, -2173254, 8352638, 2818036, 4093104, -8337606, -12636868, -14332843, -6915971, 861678, +-14530411, 5553393, 10633265, -16250009, -5913096, 6118181, -7469485, 4068408, 18249316, 701690, +-2879776, -4712116, 4174171, -9763534, 6536940, 3617973, -8853001, 3054796, 6410776, -3471944, +-10493679, -8901857, -4655745, -202937, 2966212, 2603824, 2052994, -1700270, -2567317, -1170916, +2409477, 270583, -1416266, -5825587, -7042136, -1799054, 568009, -4936528, -6020471, -4061965, +-2484102, -2174327, -5270462, -4457103, -2403571, -3168075, -6749004, 1350767, 6494528, -484258, +-519691, -2405182, -1857573, 2305861, -2324651, 659278, -5300527, 373125, -1476932, -2717641, +74088, -2535105, 1764695, 2695092, -2176475, 3984119, -2566780, -848256, -2655364, -15032, +521839, 11679090, 28790240, 30438970, 9095130, 18931678, -12979928, -12918188, -3114925, -1808718, +1015223, 4394826, 9601936, 17538498, 5632313, 16244103, 1703491, 5008469, 2317672, -4318590, +7272990, -53687, 2847027, 1388885, -8297877, -874026, -4493610, -8750459, -5634460, 290984, +795106, -11649025, -4955856, 15022722, 10617696, 7885560, 12495134, -7645042, -15032, -21456582, +906238, 18720152, -3722126, -3529926, 2129230, -1823751, 14422500, -983548, -2525441, 11370926, +-13466333, -21478058, -8833137, 2113124, -11749957, 8790187, 11943767, -16869558, -6565395, 328565, +-427349, -24283208, -15694884, 8036421, 3273839, -1635309, 7766912, -10481331, -6665789, -14911590, +3481608, 5062693, 1141388, 1257889, -10156524, -16451335, 13669807, -22442814, 6504728, -8081518, +21521008, 2478196, 8903467, -5938329, -8665633, 6517613, 2803003, 9943386, -9356586, -1421634, +6453725, -182536, -5238250, -4517232, -5152350, 743566, 4931696, 5827197, -6349573, -2323577, +-1138166, -8012262, -3070365, 1787243, -1034013, 1009854, -4467840, -6987375, -1161252, 479426, +5574868, 2065342, -3654480, 4706211, 627065, 2548526, -8147553, 1953136, -4916664, 4122095, +581431, 4350265, 6321118, 2319819, -4651987, -8703751, 2704756, 3367254, -28179818, -20266340, +14038101, -2923262, 25526064, -6219650, 21014738, -16902844, 508954, 7558606, -1674500, 914291, +2468533, -1309428, -12687870, 4458713, 4773856, 5561446, 6323266, -3895535, 10429254, -9469866, +-6998113, -5410585, 14669461, -8090645, -2728915, 1321776, -306016, -7610145, 6541235, -8492224, +-10116259, -19063212, 1739999, 3500935, -12950937, -6037114, 6238440, -2616172, 3333968, 1040993, +15060303, 1053341, 11334956, 5060009, 488016, 9088151, 2063732, 3151432, -17082158, 17598092, +6231461, 13789529, -8376797, 3665218, -9168145, 14305462, 10849624, 17452062, 2782065, -4562866, +-12680891, -782221, 2236604, -10786810, 15333033, 2480344, 2384781, 16519518, 3694746, -4939213, +-6592775, -527744, 9815611, 11857868, -3852586, 14785962, -17678622, -18510236, -8105677, 4319127, +-5646809, 8091719, -2014340, 4351876, 14154065, -614180, 7025493, -5876589, -5389647, 6207302, +-545461, 9946071, -3068754, -44023, -3048353, -6110128, 1242319, -3585761, -1436130, 4114042, +1389422, -5549098, -5109401, 3007551, 7512972, 7826504, -790811, 6417218, 6930467, -9691594, +4532264, 9226663, 7226283, 4112968, -7265474, -8760660, -9178882, -9208410, -9184788, 808528, +-3209414, -1245004, 1034550, -6718940, 4796405, 4399121, -3484829, 5228049, 1837172, 2499134, +-6438693, 12986907, -30627948, -1392106, 15961172, -10194105, -3400540, 11767674, -12746926, -25892748, +5160403, 4414690, 4027069, -3362960, -15305116, 3886409, 4372277, 1177895, 8527121, -27428198, +12621835, -6350109, 6583111, -15613817, 12757663, -19762756, -12610024, 7720204, -5151814, -2266669, +-15010911, 11864310, 15604153, 1611, 1778653, -7114077, 23392002, 5839545, 6416145, -4186519, +-20146080, -4286378, 11215233, -1970853, 16758962, 206158, -5986111, 4099010, -1097364, 10546829, +-19912542, -2336462, -15251429, 16658568, -6091338, 5643587, -378494, -500901, -18024368, -6267968, +16007880, 5182952, 1523103, -4691715, 573915, 2140504, -23107998, -23926190, 25708600, -11245835, +-27679990, 11433203, 13256953, -22252226, -29153164, -20301774, -19493782, 3622268, 7918846, -2310156, +-18724446, -466541, -9957345, -4601521, -13530758, -608812, 1520955, 1534377, -2579665, 13111461, +-6876243, 5261335, -5810017, -121333, 3712999, -3117610, -336618, -7471096, 10285373, -2170032, +3728569, -5416491, -7999377, -1494649, 4155381, 4749160, 1620813, -7759396, 4930086, -920734, +-6197638, 6491306, -9482751, -1697586, -5776731, 9974525, -4048544, -10541997, 4938139, -4020626, +-4406637, -14074608, -498753, 3483219, 12288438, 5194763, -6823630, -3355443, 1473174, -1637456, +-3486440, 2510945, -249108, -2444373, -2380486, -635118, 12252468, -17054242, -9112847, -17820356, +-1372242, 3329674, -23332946, 3503083, -11282879, 32523640, 1976759, -29795262, -6533182, 14025216, +9002251, 6691022, 15119895, 14651744, -21047488, -5731097, -7987029, 19674708, -6767258, 23018878, +223875, -13775571, -10473815, -21155936, -23645942, 1105417, 3041374, -4227859, -12057047, -5569499, +1873680, 3460670, 8470749, -12024298, 6206765, -14084808, -15899969, 2819646, -3177202, -4649839, +-16589311, -16339666, -7421167, -5287642, 23190140, 1768453, 7982197, 12520367, -109522, 28449864, +11964705, -9959492, 1779190, 14468671, -5499706, 18412524, -4638565, 1985886, 1599339, -25863756, +-25785374, 3478387, 18543522, 10201, -5379984, -28896004, 2142652, 9356586, 6429566, -10172630, +-7658464, -6059125, 3795141, -12707734, 30592516, 16687022, 18879602, 3293166, -21068962, 7381975, +10064719, 29761440, 7264401, 2687039, 12420509, 4777078, -4611185, -121333, 9589051, -1258425, +1573032, 2604898, -7344931, -5765457, 9332427, -142271, -6980933, 9097814, -5581847, -2583423, +-4205310, -4779225, 8749385, -5850819, -2135673, 4074313, -8792872, 3424700, -526134, -5599564, +11432129, -4415227, 300111, -14602352, 8973260, -4738423, -3404835, -9557376, -12712566, 1660005, +-4952634, 8757438, -6442, 5034776, 3788161, -190589, -5130876, -245887, -14172855, -12931610, +27304180, -8470749, -10105521, -1454920, -7519414, -18606872, 404264, 12843563, -31894964, -569620, +8284455, 10157598, -10873247, 7203197, -18260054, 1372779, -4708895, 5680631, -16354699, 10146323, +-27851790, 4525285, 768799, 15737297, 14846628, 7341710, -10401874, 11549167, -3391414, 12904229, +-14104136, 2176475, 16517370, 13036836, -7755101, 2632815, 414464, -3721052, 8011725, -3178276, +-9618579, -10783052, 7638063, -19429896, 12787728, 2916820, -20767778, 19488950, 18720688, 17542258, +6351720, -9236327, 22656490, 2640331, 9730785, -14003741, -12085501, -13430900, 4132296, 5077188, +8110509, -18810884, 1805497, 13661217, -35938676, 1240709, -11812771, 22405234, 14506252, 11191074, +-3195993, 14805826, -14107357, -867047, -9830106, -21735218, -928787, -20030116, -16667157, 9600863, +26521960, -25094958, -5945846, -4708895, 26623428, -6744173, 11628624, -7800735, -4707821, -1186485, +9396315, -5742908, -2359011, 594853, 6387690, 4551592, 3339874, -3736622, 934692, 2593624, +13159243, -10640781, 10972031, -2597382, 8012262, -188979, 2093260, 2597382, 5021891, -7125888, +-1619740, -1560147, -8644695, -7901666, -7679939, 5054640, 4187056, -1803886, -3486977, -4668093, +-6078990, -3973919, 427886, -2928631, -140660, 7689065, -266825, -14817637, 6746320, -8787503, +-1385664, 23739894, 5152350, 12020540, -34206192, 15855946, -19119584, 25897042, -2547989, 10069014, +19678466, -21219822, 37845640, 27086748, 20503638, -9324374, 5580237, 25873420, -6427419, -8377871, +-5965710, -1417876, -19495394, 5128191, -10331544, -23809688, 23084376, 7543037, 6412923, 2813741, +5426155, 8831527, 24299314, 5011153, -14992120, -1367410, -15560130, 3018825, 2368675, -27627378, +-1064078, 14911590, 1202591, -2059437, -8295730, 29190208, 6147172, 12378096, 6561637, -15901043, +-11179263, -8734353, 18312130, 10645613, -3526168, 10943040, -1505386, -20042464, 19469624, 2253784, +22301080, 2350958, 2404645, 335544, -29317446, 3907347, 906238, 3150896, 18430778, -7347079, +28933584, -43888124, -7647190, 32536524, -13093745, 10686416, -14776835, -23419382, -18641232, 13405667, +-12699145, 12489228, -20035486, -4438849, 3532074, -5089536, -7792145, -2676302, -2234994, 8673150, +20421496, 2013803, 12178380, -4065187, -1876364, 14659797, -2003602, -4358855, 4246112, -7532299, +6731288, 12742631, -8448738, -1458678, -3194382, 2216203, 2583423, 5968394, 23075786, -4306242, +8242042, 265214, 5681705, 8176544, 4360466, 1136019, 12937515, 13637595, -3658775, -2093797, +5893232, 2835752, 5132486, -17904108, -1262720, 16694538, -3563212, 3337190, 6835441, -1105954, +17394080, 6135361, -35447440, -42407972, -3748970, -19875498, 2690260, 12077985, -16974248, 4957466, +-25926034, 11282342, -14280766, -70875552, -4566087, 43247636, -18641768, -8007967, 43447352, -10188199, +2341294, 52064132, -12458090, 11520713, 4866735, -7591355, 41918344, -33741800, -4359392, -908386, +-5939940, -6777996, -6911676, -822486, 13652627, -7665980, -22874458, 278636, 456877, 6781217, +8339216, 1537061, 18824842, -695248, 8662949, -5111548, -22695144, 15849503, -2786360, -23335094, +897111, 13510893, 41291280, 20922934, 34712464, 767725, 8548059, 16608639, 3917010, -1984812, +32451700, -1667521, -12639552, 38031400, 6641093, 6760279, 278099, -5311801, 21709986, 41876, +-12617540, -14201309, -2943126, -2768643, 32870996, -22238804, 2888366, 4285304, -5832029, 38649336, +333934, -24629490, 4156992, 12671227, -18121004, -807454, 18494130, 15312632, -9309342, 1532767, +-10521596, 8973797, -2820720, 1294396, -10351945, 9722195, 148176, -977105, -15052250, 6322729, +5179194, -9743670, 804770, 3658775, -5046587, -3257733, 11686606, 1917166, 6536940, -4179003, +3461207, 20290500, -18276696, -8244727, -5958194, 21939230, 8193724, 11672110, -13123273, -11924977, +-4831838, -1321239, -15921444, -17828946, 21622476, 8844948, -12550431, -11633993, -7108708, 26844, +-12435004, -10832444, 284542, 3496104, 8302172, -1934346, -3868692, 2123325, 24089934, 19452444, +-39756364, -19417010, 30521648, -5610301, -29804388, -261456, 588411, 10797548, 32273994, 28739236, +-17724794, 5326833, -4051765, 261993, -340376, -18596672, 27983860, -8315057, -18421114, 6544994, +-13239774, 15928960, 1342714, 22649510, -7032472, -21480742, -19473918, 17160542, -8317741, 22339736, +-6058588, 14470819, -14753213, -11420318, -7050726, 1599875, -18504866, 4520453, 907849, 300111, +17955648, -211527, 5951751, -12525198, 8864276, -19765976, 21082920, -19015968, 12501576, 6385543, +17709760, -29759828, 941672, 2498060, -9068287, -21505974, -36495948, -6103149, -31155156, -11959873, +-24948392, -11596412, -45532024, -14136348, 20544440, 26107496, 14136885, 15194521, -2537789, 16508781, +-32465658, -7414724, 4942434, 20907900, 5688148, -44551160, -1841467, -19590956, -13120051, 52068964, +34918084, -24701968, -10136123, -17348984, 5719286, -45913200, 2734821, 9570261, -13208098, -13629005, +8262980, 2673617, 355945, -8822400, -7825431, -7556995, -7739531, 14320495, 13058311, -945967, +-3769908, -14136885, -16304233, -3452617, -4150549, 5454609, 13925895, -27370216, -2163590, 13684303, +-146566, 17513802, -6207302, -16791712, 8973260, 18930606, 9480067, -11389180, 1299765, 17517560, +-22414898, -15911780, 29501056, 1613297, -1116692, -3028489, 4589173, 6802692, 8886824, -3745212, +-7315940, -52413632, 15336791, 8163122, -27528056, 10817412, 10282152, -20067698, -15323370, 23471460, +2965138, 12473122, -6284611, 15493558, -4908074, -2519535, 12295954, 5863167, 4063039, 277562, +-8230231, -14282377, -8621073, 22187264, -7797513, -19361712, 32852742, 20205674, 2645700, 14904073, +4494684, -17015050, -50046568, 20451560, -1615445, -27144194, 22789096, -2476049, -36458368, -30790620, +-15903727, 23899882, 9690520, 24774446, 31384936, 9280351, -25234544, 7934952, 9179419, -32303522, +-5122822, 18088254, -9977746, -35193500, -26555782, -42884712, -27203250, -6262063, 27149562, 39094940, +18972482, -2662343, 27074400, -6802692, -66017944, -52503292, 11630771, -26484916, -31224412, 44863080, +6064494, -60498372, -46582680, 15899969, 2934537, 10291279, 22623740, 54077932, 31199716, -4589710, +60432336, 19185618, -63061932, 539018, -13302587, 32670206, 10002442, -20771536, 10350871, -15593416, +-9052180, -13564044, 20764020, -3806952, 15244986, 12610561, 16500191, -3638911, -16095927, -5293011, +11476153, -7027640, 9696426, 6099928, 7067906, -14161044, 1973001, 5746666, 576063, 25493316, +-570694, 11334956, 2814277, -4203163, 13940927, 3300146, -1693291, 15161771, -6892349, -2294586, +9633075, 3824669, -1061394, -6126234, -8195872, 992674, -9456444, -7312182, 5714991, 7305740, +49609020, 47986596, -15019501, 16663936, -19601156, 11971684, 776852, 6898255, -23379118, 1803886, +-19951734, -17976586, 316754, -41448044, 1169842, -17676474, 4763656, 12104828, -164283, 14033269, +-20180978, 30768608, -15079630, -620086, 21493626, -20155744, 8018704, 15316927, 19093278, 2647311, +7010997, 4603668, -29542396, -16628503, -4607963, 4299799, 4789963, -4513474, 19914690, -6452652, +-63351, -3859028, -8323647, 6873022, 4138738, -23610508, 7138236, -18995566, 5393405, -45496052, +-1979443, -1237488, 119185, 18431852, -7259569, -16656420, -7175280, 16922708, 163746, -43979928, +61604864, -5474473, -11521787, 13269301, -2461016, -9141838, -11289322, -12332462, -12941273, 41996192, +-16065325, -24499568, 21085068, 1930051, -33013802, -7949448, 14104673, 10943040, -10741176, 22601728, +-3790846, -6337224, 21219286, -15574625, -13996225, 26458072, -11546483, -4306779, -1237488, 11151883, +5650567, -380105, -1658394, 556198, 5233955, -5560909, -207769, 5101885, 5726265, 6500433, +-16097537, 4104915, 8425115, -15952045, 1539209, 3221762, -2618320, -6514392, 6598144, 1721745, +-5534602, 822486, -348429, -2768107, -19780472, 11253888, -11627550, 3486440, 3573950, -18167712, +-817654, 790274, 79457, -350040, -5917928, -985695, 5308580, -829466, -38969312, -57749592, +-55357296, 122641184, 101938904, 115883584, 262156752, 68487008, -65593816, 20633022, -210137712, -222957120, +-55097988, -140153376, -108246600, 66185984, -34381752, 13735305, 167053824, 82813952, 123842160, 237672752, +158519728, 41356240, 34524020, -70143792, -216390656, -165457712, -126530808, -255796448, -103424424, 6067178, +-45216880, -20437602, 129417568, 34237868, 17426292, 160160944, 19899658, 38252052, 227676224, 167276624, +106005160, 215132768, 107243720, -37846180, -3214783, -68190120, -335209312, -292626848, -236352592, -367449472, +-279888512, -99262600, -132587248, 29817274, 255129104, 227741712, 315354752, 398032352, 296237312, 230945216, +224735232, 124215288, -42115912, -80267568, -182861984, -261174272, -256440144, -222319312, -254577200, -260610032, +-209494544, -117306296, -85012432, 31417686, 199468480, 287551808, 410650944, 461801856, 275661728, 66695472, +-39724152, -278681088, -265160000, -202181296, -157153392, -58733140, 29127932, 21408802, 28007482, 35067336, +16197395, 41336912, 58304716, 43080132, 70458936, 39763344, -18660022, -22736484, -63227288, -115181360, +-32059784, -36568424, -42036456, 35124780, 30054034, -39760124, -50971060, -94142464, -153156384, -64932928, +85897200, 146859968, 285884832, 345068416, 234268992, 144892864, 37933152, -131108168, -191228592, -216287040, +-252678288, -237629264, -182725088, -148447488, -123167312, -75435728, -20340966, 61395484, 217233008, 303904896, +269475904, 193068448, 118275344, 23935316, -49637472, -74557944, -93976568, -67868000, -20431160, -6199249, +-22164178, -34699576, -53975392, -84289808, -108737832, -105415144, -106363256, -64825016, 3194382, 30339112, +60224568, 79373680, 71092984, 40979356, 15219217, 4548907, 1192927, 832687, }, { 8950175, --1191317, 726386, 7012071, -891743, -344134, -2033667, 7650411, 461709, 3710315, 2278480, -2238215, -3151969, 1571421, -4888747, -552977, 3810173, 750546, 2235531, 3557307, -6040872, --4247186, 1449552, -322123, 4499515, 2712272, -224412, -2514703, -1560147, -3106335, -483184, --434865, -455267, 830539, 1181116, -2707440, 4507568, -1059246, -695785, 1513439, -5731097, --1349694, 2488397, 852014, 5667210, -47782, -409096, 1079111, 390842, 2329483, 3924526, -4956929, -284005, -542240, 93952, -2895882, -3635690, 1980517, 3253975, -2311229, -2186138, --1508607, 4147865, 2411624, -568546, 615791, -4886599, -1438814, 2542621, 2076080, 3615826, --5287105, 1194001, 1956358, -1095754, 3674882, -238908, 3198677, 1537061, 1006096, 4097936, -2000918, 1032940, -537, 481036, -1011465, 341450, 535260, -326418, -1491427, 716186, -673773, -1082332, -186831, -732292, 725313, 1173600, 11274, -156766, -103079, -1099512, -499290, -393526, 870805, 420907, 241055, 185757, -526670, 286689, 95563, 456340, --907312, -424665, -231391, 107374, 11616813, 3238405, -2698850, 5969468, -2916283, 6212670, --2084133, -2784213, 3114925, 5812702, -205085, -2823404, 1516660, 1248762, -263067, -8192113, -1902671, 2447058, 635655, 5176510, 6895033, 3751654, 6790344, 4670777, 4129611, -1068373, -4589173, 2261300, -3515431, 1350230, 2110440, -4460324, -5735392, -835908, 2235531, 132607, --2079838, -2720325, -2708514, -1290638, 3069291, 6227703, 5222680, 2023467, 4009352, -6444599, -397284, -1607928, 51540, -7402376, 2752537, -666257, -1766842, -238908, -2031520, -3631932, --2596308, 2665564, 618475, 2057826, -2722473, 5137318, 1301912, -5832029, 2428267, 803159, -1633698, 3282429, 976568, 5976984, -1889249, 707596, -6912213, 1373853, 667867, 258235, -165893, -1240709, 4920959, -1442035, -2281702, 3793530, -3859565, -1822140, -1589675, -654446, --1794760, 1312113, 338229, 716723, -40802, -103616, 74625, -637803, 435939, 716186, --236760, -233002, -19327, -1208496, -2071248, 840740, 271657, -1574642, -200790, -108985, --340376, -1920387, 531502, 65498, -42413, 212601, 370441, 293132, -732292, 48855, --1349157, 647466, -2427194, -2303713, -836982, 2230699, -4057134, 1230508, -7945690, 1542430, -1418950, -853088, 5560372, 420907, -694711, 570157, 2913062, -4765803, 622233, 1542430, -3016678, -6806450, -3546569, -2529199, 2452426, 1093606, -2222646, -6878927, 1617055, -6842420, --489089, 2804077, -1345399, 2150705, -1258962, 4715337, 6833830, 3708704, -3636764, 732292, -5163625, 3293166, -3299072, 2778844, 744103, -5318780, 1826972, 7460358, 3404299, 2543695, -8185671, 803159, -3196530, -6250788, -340913, -3481071, -4315906, -1950989, 4472135, -4243428, -1438277, -2507187, -2469606, 5351530, -757525, 940598, 4150549, 5807333, -2615098, -5208722, -6644852, 5213017, 3221226, 376883, -4096862, 709207, 5237713, -5311801, 1573032, -3438658, --181462, 3347927, -3144453, -106837, -5992016, -1497870, -586263, 966905, -380105, -2176475, --332323, 1200443, -1815161, -386010, 747324, 746251, 443992, 556198, -155693, -364535, --2403571, 1325534, -193810, 1363652, -970663, -1471026, 479963, 1297617, -872415, 1154809, --250719, -1074, -163209, -171262, 1234803, -686658, 439697, -693637, -15617575, -5695664, --2417530, 8552354, -3254512, -1267552, -5058398, -4252018, -743029, -11236708, 6293738, 2100776, --332860, -4140349, 6197101, -1730872, 3141232, -2497524, 1979980, 3977677, -4959077, 541166, -5448703, 3104725, 2188286, 5858873, 5212480, -3257196, -4189204, -5193153, -96100, -6833830, -1627256, -9032316, -1742146, 6689949, 3498251, -2274185, -712965, -6788733, 3086471, -2889439, -5996848, -3435437, -6169721, -1242319, -2546916, -5039071, 1955284, -1135482, -3229279, -3259343, --10922639, 1517734, -3279745, -8064338, -2157684, 5015448, 2553895, -4157528, 3452080, 4472672, -4289062, 1622961, -5585068, -901943, -1242856, 3894999, -3925600, -1478006, 2033130, 2098629, --6111739, -7245610, -13069049, -2204392, -7591355, 2529736, -295279, -1780801, 3841312, -779000, --1749662, 1708860, 2619930, 2552284, 1957968, 4583267, -1942399, -1564979, -1228898, 704375, -229244, -997506, 1254131, 1842541, -401043, 462246, -796180, -994822, -192200, -631897, -188979, 436476, 54761, -1105417, 178778, -731218, -295279, 695248, 1467268, -608275, -1757715, 2184528, 338229, -574452, -1857573, -328565, 1251983, 879395, -13560285, -5450314, --2414845, -4041027, 4637491, 6020471, 5710696, -11357504, -8449811, 3240553, 13828184, 8145943, -7516, 1945083, 3948686, -4986994, 3289945, -4625680, 3335579, 4883915, 768799, 3914326, -1239098, -299574, 2052994, 1187559, -3694209, -4715337, 6489159, 2602213, -4725001, 4615479, --2574833, -505196, 11147051, -5345087, 6312528, 12428562, 5087389, -738734, 483184, -4520453, -5826660, -5977521, -3250753, -10028749, 1885491, 7682623, -193274, -7108171, -2523293, -10065793, --5097590, -1894081, -14276471, -7798587, -1414655, 1481764, -6254010, 3134789, -1661616, -4966593, -5337034, 15745887, 1460289, 8009577, 5448703, 4695473, -5004711, 2066416, -8521752, 874026, -2435783, 1873143, -3318936, 41339, -8655433, -3046743, -3046743, -650688, 4184372, 4464619, --218506, 1715303, 2430415, -1273995, -963683, -834297, 788663, 62277, 584116, 433792, -1357747, -770410, -70330, -2112587, -280784, -361851, 1454920, 806917, -936840, -1292248, --1236414, -1216550, -425202, -1485522, 487479, 2619930, -2137820, -316217, 878321, 1471026, -21109228, 13502840, -7392713, 2820183, 6726993, -2718178, 3807489, -1227824, 6267968, 3288871, -1938104, 5874979, 3166465, 2955474, -1901597, -14095009, 6694781, -2320356, -3331284, 11200201, -6771553, 3933653, 5019743, 3898757, 2724083, -2076080, 1543504, 547608, -3735011, 3031173, -4700842, -7909719, 1430761, -5085778, 3727495, 4527970, -12618077, -110595, -14996952, 351114, -1757715, 1358820, 3962107, 10255308, -1346472, -5172215, -2685428, -2733210, -4021163, 3018825, -3045132, 1076963, -1758252, -1733556, 9769440, -3183108, -2081985, -5298916, 8665097, -1240172, -7264401, -3377992, 7770133, -7495792, -16062104, -4650913, 889595, 3320547, 5283347, -5280126, --4112431, 2277943, 1327682, -2399276, -4272956, 10064719, -4016331, 9578851, 2393371, 6794639, -2525978, 4974646, 4002910, -1626182, -761820, 2008971, -399969, 5265093, 15032, -1625645, -352724, -5712844, -1270237, -1254667, 281320, -1851131, -865973, -565325, -261993, -581431, --3168075, -2381559, 613643, 297963, -3542811, -118112, 375273, 590558, 1264331, 679679, -3229279, 236760, -1266479, -49392, -590021, -1470489, -1971927, -639950, 9893457, -3760781, --6628745, -274341, 1014149, -9398999, -7407208, -2323577, 2527588, -1381906, 12202002, 7368017, -283468, 11708618, 4173635, 3438658, -10061498, 9415642, -1803886, -2343442, -8496519, -3803731, -7452305, 7419019, -2162516, 4923107, -10212895, -1419487, 6770479, 5146445, -3854733, -7208566, --4110284, -4453881, -5626407, -4628901, 1048509, -7581154, -796716, 10481868, -5112622, 1210644, --464930, -2413235, 4016331, -1673964, 6776922, 5369, 9585293, -2485176, -6162741, 3487514, --4887136, -4773320, -4889284, -13723494, 1510755, 5667210, 8082592, 5874979, 10646150, -1113470, --4214437, 6187974, -7714835, 1757715, 1087701, -1162862, 6860674, 6469832, -1765768, -8304320, -1559610, -4300336, -7988639, -7333657, 3929895, 7059853, 4336843, -15348603, 3350611, 1606855, --868657, 7202124, 3794604, 5887327, 2128693, -603443, 7650948, 1013075, 3413425, 2788508, -498753, -3518115, 451508, -1977296, -4387309, 777389, 1175747, 1990181, -634045, 513785, -353798, 338229, 1392643, 949725, 919123, -202400, -2827699, 1865090, -1224066, -1255204, --1151051, -1964948, 3380676, 3933116, 3236258, 1314797, 228170, 529892, -958315, 2574296, --12070469, -7066295, 1275068, -6895033, -17866528, 13540958, -295816, -887448, 1716376, 1072668, --11815992, 8268349, -12318503, 1102196, 5639292, -1616518, 2057826, 1992865, -13251585, -4457639, --5900212, -1220845, 2729452, -4349728, -2755222, -530428, -768262, 1222992, 5560909, 2979634, -11944304, -4320200, 16390669, -1137093, 462246, -10697690, -1570347, 7968775, -1560684, -16458315, -6671695, 7667054, -4878009, 4061429, -6128919, 11424076, 6339909, -313533, -645856, -7313793, --4645544, -8004746, 7536057, 7419019, 3287798, 855772, 3413425, -6451041, -16962436, -6204081, -5993627, 2622078, -12568148, 329639, 1531156, 1737314, -6003291, 4348118, 9001715, 4635344, -235686, 3637301, 6213744, -3468186, 9229348, 154082, -184684, -9081708, -11548630, 7468412, --3474629, 3707631, 3839701, -627602, -2417530, -2541010, -1868848, 1183800, -2780991, 3763465, -952409, -1049583, 1043140, -1348620, 238908, -4756677, 1280974, 355945, -731218, -2660732, -986769, -2358474, -25770, 731218, -377957, -1557463, 81604, -1564442, 5850819, 4332549, -1747515, -704375, -369904, -1697049, 158377, -696322, 3795141, -1278827, -358093, 3451543, -956167, 1410897, 2702608, -1851668, -827318, 2559264, 1724429, -796716, -257698, -18791556, -10087804, -2531346, 3687230, -5536213, -3088618, 7958038, -9207873, 8944269, -5586679, -10648298, -4794257, -5721434, 22731652, 3419331, -8012262, -11034308, -2037962, -13692893, -6359773, -14751065, --923955, 9916006, -7063611, 6128919, 9920838, -9217000, -26307, -10763725, 5996311, 2159832, --457414, 6390375, -6793565, -9651328, -8239895, 588411, 1760400, 8158827, -11775727, 8363375, -1565516, -17267916, -9583146, -13932874, -5801964, 5330055, -4776004, -4633196, -26640072, -528818, --5906654, -2408403, -17115982, -5909338, -2328946, 1344325, 13821742, 12690018, 10640781, 6190659, -13319230, -14397267, 11162083, 1585917, 5163088, 3802657, -10380399, 16044924, 9853192, 6342593, --7121056, -9433359, -6886980, 9324374, 989990, 64425, 4956929, 2455111, 5215701, -4640712, -13996225, 7420093, -1591822, -2273648, 3075734, 2865817, 1635309, -818728, -942745, 1332514, --306016, -222801, -5918465, 368830, -3456912, 236223, 1770063, 671626, -440234, 54761, -1068373, 1043140, -5639292, -1445257, 1876364, -1581085, -2259153, -105227, 653909, 943282, -984621, -777389, -1243930, 993748, -2517388, -4086125, -1138166, -988379, -1443646, 797253, --421444, 3712999, 1621350, -1440962, 1515587, -820876, 7124814, 13223131, 14324253, 5861020, -10020696, 8119099, 4846334, -2623151, 1069984, -3912178, 330176, -1351841, -8662412, 11023034, -17486422, 6968585, -4791036, 7836705, 7447474, -310311, 4622996, -8257612, -15911780, -10589779, --7247221, 4594542, -1933272, -8320426, 6205154, -2867428, -7443715, -104690, 12879533, 6482180, -9540196, 3330747, 7021198, 7793218, -1795833, 7135552, -2789581, -8192650, 3442416, -9485972, -3526168, 3749507, -13933411, -9066676, 5702643, 14409615, -7487739, 10034654, 14026826, -11624866, -471373, 12774843, 1376000, -4701916, -1086090, -6590628, -11482058, 111669, -3492345, -6048925, -7873212, 364535, -13143674, 16796006, -6968585, 13614509, -16164109, -11077794, 7870528, -9968082, -5465346, -6717866, -4895726, -9368934, -5738613, -7636989, -19086298, 3095598, 11610907, -5424544, --903017, 8025147, 8573292, 6063957, -1249299, -755377, -4990752, -1609539, -2225867, -2649458, -1988570, -592169, -1877438, 2720862, 2455648, -1270774, -326954, -3496104, 1414118, -3089692, --5549635, -475131, 5013838, -52613, -2949569, -858993, 8333847, 4115116, 191663, -2638184, --3159485, -2347200, 409096, 464930, -2674154, -1080721, -11811, 872415, 3245385, 678068, -5182952, 3053185, 3676492, 1315334, 1577327, -921271, 420907, -12042015, 7776039, -5239860, --12796855, 18496814, 9699647, -13150653, 9432822, 8324184, 2611877, 15580531, -31925028, 2246268, -13374528, 4464082, 1372779, 13937169, 738198, 7598334, -18377092, -2576444, 5250598, 163746, --9099962, 3552475, 7669201, 3541738, 3737695, 9824201, 8434242, 13079786, 10538776, -4132296, --4025458, 10103911, -6058052, 7064685, -11323144, -6339372, -14542759, -6796786, 8342437, 2763812, --3195456, 12048457, -14177687, -19510962, -31252866, 9687299, 11077794, 8435853, 6863358, -7504919, -5213554, -4391604, 12095165, 31657130, -4734128, -6782290, -13601625, -4473209, 12097312, -8193724, -7022272, 11612518, 2119566, -355409, -9012989, -2765422, 4580583, -22092774, -20109036, 1941862, -2956548, -7908646, 11359115, 8417062, 16259672, 25884694, 10559714, -6147709, -2960306, 5374078, -60666, -14452565, 7020661, 5899138, 5325760, 1578937, 6884296, -397821, 3903589, 2949569, -2267743, -3394098, 474057, -474057, -243203, 5175436, 1784022, -233002, 2985002, -5849746, -1836635, 862752, -510027, 5447629, 1322313, -1808718, -743029, -3641596, 10169409, 486942, -1922535, 4000762, -1252520, -1670205, 5822365, -6262599, 5792837, -4633733, 4840428, -505196, --172872, -1270774, 2104534, -1130650, 4998268, -4128001, -1389959, 1261647, -651224, -1555852, --2774549, 3268470, 47640316, 26867168, 17199734, -4437775, -4800700, -636192, -4005057, -4940823, --7332583, -8938901, -15220290, 632971, -1028108, 3688303, 6710887, 12645457, 19242528, -2605972, --24914032, -9801115, 21481278, -3380676, 8083666, -2814814, -307090, 14236206, 4997195, 10801306, -6431177, -486405, -590021, -239981, 7262253, 9170292, -3519189, -14101988, 18471580, 13159780, -9431748, 3412889, 4832375, -7515119, -13881334, 19160922, 10769630, 4904853, -8851391, -9946607, --13849122, -8600672, -2415382, -8736500, 4876936, -17826798, 2518462, 13090523, -8482024, 4592931, -853625, 1886028, -20245938, 7157026, -8659728, 14775761, -32551020, 5557151, -8462696, -11050951, -2760053, -6684043, 6768332, 6319508, -21184926, 192200, 14914274, 2182380, 4417374, 9303973, -3874597, 15457587, 6383395, 3239479, 1100049, -2285996, 10043244, -19756850, -313533, -1189706, --1748052, 738198, -505196, -188442, -1654099, -2939368, -3730716, 6097780, 5199595, -2735357, --379031, -9479530, 988379, -627065, -9258339, -80531, -13762149, -10540387, 4719096, 1723356, -7337415, -8250096, 3591667, 7118909, 1640141, -343597, 1916629, 3800509, 384400, -2095407, -7638063, 19864, 2525978, -4482872, -3279745, 3118146, 4603131, 769336, -29209536, -15059766, -2196339, -25735980, 5928666, 18619220, -8943733, 22640920, 26633630, 3349001, 13322989, 16370268, -7389491, -15777025, 10304163, 12482786, -584116, 3128347, 8863739, 7773891, 18804978, 3167002, --7205882, 11949136, 4329327, -1901597, 303869, 7997766, -10943040, -5001490, -4613869, 6665789, -3506304, -15516643, 4600447, 12889197, 374199, 15542413, -14709726, -27882390, 2253784, 12452184, -18918258, 17480516, 9071508, 8272644, 6688875, -18960670, -5509370, -834834, 14221174, 22397718, --7729331, 4789426, -8233453, 5263483, 3595425, 13615583, 21182242, -8201777, -9245454, -1889249, -11616813, 14842870, 20876226, 465467, -22510998, -21301964, -3445101, 2702608, 90731, -9792525, -243739, -25675852, -16518981, -15193447, -17216914, 7299297, 2667175, 20598664, 16522739, 6172405, --9850507, -9904195, -9156333, -8383240, -14300630, 6705518, 4505958, 2600066, 9650255, 10657961, -79994, 9085466, 1895691, 9705015, -3375844, 8040179, -2568927, -785442, 2419677, -3026878, -13553306, 6045167, 8053064, 3580929, 9654013, 2105071, 4636954, 13771276, 12002286, 6366752, --758599, -5356361, -4532801, -9833864, -5480379, -6474663, -3821984, -5975374, -7167764, -4205847, -4187056, 9159555, 2565169, -2215130, 344134, -1420024, 5761699, 6751689, 5651640, -654983, -2542621, 12390444, -27371826, 2492155, -5495948, 15001247, -8060043, -1233729, 4600984, 11364483, --15300821, -25682294, -4502200, -10058277, 679679, -11586211, 6786049, 6749541, 629750, -13856101, -8610873, 871342, 23111756, -3695283, 12634183, -10700374, 23867670, 6898255, 14874545, 10024991, -16231218, 23947664, -5893769, 9292162, -16813724, 17666812, 17116518, -399969, 5520644, 17299054, --11138461, -10702522, -1830730, 34827888, 5596880, -9746355, 17229262, 2257005, 13196287, 19064286, -5490042, -1299228, 1722819, 2965675, 12510703, -4415764, 13420162, -9330280, 13096429, -7307350, -29655138, -4336843, 25487946, -23210004, -25553982, 35423816, -29761976, -15900506, 1104880, -9579925, --18513456, 16170015, -2258079, -22859426, -10907069, -11754789, -33695628, -12486007, 4036733, 7520488, --26026964, -6650757, 15610059, -3172907, 8914741, 15477988, -11202885, -2564632, 2403571, 10090489, -7143605, 7603166, -2644626, -1503239, 6132140, -585726, -4310537, 3402151, 7084012, 1329292, -4875862, -192737, -4812511, -57445, 6509023, 2471217, -3560528, -8433168, -5233418, 9780714, --4687420, -13261785, 2971581, -7633768, -14564234, -41339, 5236102, 456340, -3913789, -1118839, -3763465, -3068217, -2684, 5119064, -481036, -2462090, -3299072, 9269613, 17690434, 922344, --6514392, -5284958, -3132642, -8503498, -2034204, -3595961, 3519189, -22922240, -15318538, 4492536, --30008400, -17469242, -20848308, -21173116, 25856776, -594316, 901943, 7748121, -7520488, -32934346, --24656334, -24111946, -49260052, 3626563, 5630166, 21368536, 12488691, 7456600, 10673531, 7452842, -2356327, -15472083, -22803056, -13075491, 17830020, -2151779, -13303124, -5297306, 17478370, -20940114, --13500156, -21507048, -10660646, -1730872, -20645908, 7837242, -17121888, 18760954, 13175349, -2761127, -13005698, -12542378, -25947508, 11531987, 15329812, -13309030, -29779692, 22689238, -1803886, 16480863, -13856101, -42621644, -30243012, 455803, -6779069, 28031104, -15810311, -18293340, -4786204, 10458782, -1755031, -2387465, -9513353, 37184216, -17951890, -29926796, -40531068, 29415158, -6766184, -33333242, -15848429, 16124918, 9663676, 33935072, 36308044, 37260988, 16095927, -8177081, -3149822, -5510980, -12560095, -23468776, 15511811, 3152506, 3260417, 11807402, 11468100, -9529996, 14614163, -10975252, -5089000, -15687905, -8775692, -5927592, -7943005, -3020973, -8571144, -1937030, 6472516, 17023102, -19832012, 1103270, 15647103, -8844411, 2594697, 9328669, 1604707, -16646756, 2482491, 4466229, --4283693, -12276627, -7637526, -7423314, 20648056, 12918188, 6994891, 9859097, 17519172, -2341831, --19836306, -12412455, -11183021, -14226542, -18364206, 3695819, -15301895, -27330488, -6254010, -5621039, -4532264, -27398134, -10439455, 12259984, 20846160, 41420128, 7179575, 21497386, 10918881, 10194105, --9203041, -3411278, -7800198, -23272818, -26600344, -38160784, -13441637, -34416108, -13071196, -18191870, --6344741, 17930952, 4809827, 12082817, 21829708, -340913, 14845554, 3856881, 1044751, -868657, --2541010, -29105382, 10756209, -3964792, -32166620, -20478404, 9774272, -21211232, -7703561, 7201587, -23853174, 28212030, 10233833, -6330782, 4218195, 18756122, 10524280, 3648038, -289373, -57013544, --11146514, 12136504, 14642617, 5342403, -1898376, -19487340, 13506062, -17429514, -12576738, -3750580, -3736085, -9872519, -29987462, 15763067, -3619584, 37219648, 14559939, 12451110, 14705431, 27250494, -62286152, 537945, 1298154, -3019362, -18240726, 10611254, -12586939, 44697724, -3786014, -16603270, --14334453, 18644990, -24252070, -16950626, -3004867, 38165080, 1504849, 17984638, 28719372, 5327907, -23286776, 17065516, -2988760, 15609522, 17591650, 141734, -11690901, -13246216, 3774740, 3965329, -14777372, 8928700, -446677, -2631204, 2768107, 5487895, -10652056, -2712809, -2488934, -1875290, --16815334, 10239739, -12165495, 3852586, -2349347, -7828115, 2196876, 20214264, 18220326, -426276, --1085553, -13619341, -5252208, -13542032, -1835562, -15685757, -21585968, 5892695, 15132780, 561030, -946503, 31472446, -4080219, 5537824, -34466576, -11952894, 40824200, -27289686, -7191923, -23662586, --69057168, -10056129, 21425982, 17309792, 3543885, 4817880, -3568581, 38585988, -41646152, -258235, --11871290, -28178744, -23507966, -3747896, 8105140, 6742562, 9516574, 24826522, 16412144, -17971754, --17894444, 49604188, 40869836, -3508452, 4918275, -5703717, 13421236, -435402, 29207388, 10339597, -15592342, 4106526, 2392834, -51775832, 21502754, -2464238, -29548302, -15364172, 3077344, -8250096, --29410862, 28192702, -4889821, -21287468, -4271882, 2850248, 25336012, 27980102, 21592412, 8029978, -25263534, 26610544, -20061792, -22312356, -13987098, -3862249, 26166014, 34578244, 6083285, 12300249, -33509872, 19811610, -31208306, 22886270, 8527658, -7153268, 1341640, 63988032, -42436424, 32481764, -37592776, -38001332, -2111513, -24793236, -7820599, -54481660, 15692200, 23710904, -32556388, 19426138, --28161564, -20681878, 24780888, -15662672, -2201708, -9532680, 1271310, -13859859, 4248260, 5967857, --10223633, -14838038, -1082332, -16094853, 20747376, 3412889, -19389092, 3940096, -3225521, -10875394, --10168335, 6362994, 13223131, 16232829, 6812355, -15231565, 38132332, -7387344, 3803194, -2813204, --20175608, 7357279, 10996727, -10588705, 16242493, 3789772, 12120398, -3202435, -19552838, 6213207, -29246580, -18847390, -27409944, -44365400, 8761196, -8487929, -14178761, -17938468, 9793599, -10883447, --5180805, 29199336, -9170292, -1628330, -22961432, 1880122, 14544907, -32065688, -20323786, -19179714, --9517648, 11681237, -43335684, -24050206, -62508956, 10874857, -714575, -15844671, -7042673, -9204115, -13256417, 20061792, -22261352, 850940, -7829189, -7490423, -39089572, 8596914, 29849486, 7937637, -22559316, 28452548, 25382720, -34176128, -10552198, -10306848, -16108275, 28792388, -29496762, -16930224, -937914, 41802380, 9345312, -14642617, 42004780, -23645406, -22328462, 50244140, 47998408, 4668630, -12161200, -13638132, -45650672, -13987635, 45816564, -22214644, 41518912, -14969035, -65569120, -17223892, --30703648, 34971236, 244813, 7879118, 31230318, -4940286, 25740276, -33620468, -39762808, 30604864, --8021925, -66823248, 41259604, -21223044, 11220065, 13641890, -23446226, 44467944, -30351998, 16190953, --508417, 11915850, 44913008, -11316165, -14239964, 1865090, -9393630, -12077985, -10188736, 5259188, -10079751, 2660195, -6473590, 5862631, -21432960, 19489488, 13474386, 11075110, 4270808, 366683, --10030359, -10641318, -10433012, 9343164, 17544942, -16927540, 15214922, 35762044, 11903502, -30087856, -2934000, 11403675, -11293617, -19754702, 18884434, -16676284, -389231, -1162862, -18163954, -23050552, --243203, 13660680, -7761006, 30894774, -10246181, -19816980, 14103062, 11967926, 23112292, 1726577, --41636488, 24561844, 28305446, -34397320, 18802830, -181999, -12460237, -14710263, -49646600, -21885006, -17423608, 3156264, 45530948, -36558224, -20701206, 8586176, -5047661, 29232622, -40605696, 80531, -4154307, -34264176, 34295312, 18854906, 10462003, -16037945, 23487028, -27753542, 15366856, 12010339, -7229504, -1913408, -15530065, 6512781, 31207232, -16335908, -5966784, 6180458, -24422794, 25005300, -991064, 6615860, -33461554, 18149994, 4457103, 6229313, -78541528, 10870025, -22298934, 36817532, -30452392, 32373852, 16550120, -63805496, -11159936, 13799193, 1430224, 4348118, 45081052, -6604049, --27020176, -32392106, 1396401, -36037460, -31635118, -27986544, 13626857, -52617108, 37579892, 71818832, --18693846, -8470749, -55852828, -12068321, 21565030, 13375065, -18486076, -3674882, -67579160, -23629836, -68140728, 29120416, -20946018, 20077362, -38248296, -28191092, 7669738, 1715839, 4777614, -25815974, --8843338, -5231807, 176094, -37504728, 8331700, -4600447, -11614128, 5280126, 15820512, -20344186, --10087268, -2954401, 7675644, -15549929, -3975529, -2430952, -14707042, 528281, -27450210, 36527088, -11970611, -9165460, -3368328, -10313827, -1195612, 23582592, 7271380, -3935801, 12468827, -7170448, --34172372, 1965484, 1930588, 7673496, 15671799, -8644159, -6120866, 15454366, 18568218, 8178692, --16225850, -51269024, 13932874, -22482544, -15300284, 15573551, -12560095, -18030810, 14267344, -23707146, --1460826, -27023934, 39017632, 684510, -28536300, -8425652, 644245, -2869575, 9061844, -19058380, --13218299, 4278325, 7841537, 4578972, 3801046, 14810121, -17191144, -6587406, -39505648, 14650670, -3647501, -12054363, 28458990, 15598784, -11754789, 43650288, 9596031, -27425514, 20622822, 3593277, -13379897, 28829432, -2798708, -7044283, 4373888, 23770496, 13276281, 563178, -2578591, 25432112, --2420751, -29466696, -5280663, 5488432, 23118198, -10285910, 39927088, 44373456, -28347322, 23198728, -49606872, -13389024, 75428216, 42773580, -19173808, -17149268, -28744068, -32179506, -18481244, 10164040, --5895917, -5645735, -1256815, -4824322, -53134116, -20391968, -52467320, 12322261, 46523624, -17413408, --3112241, -25356950, 12398497, 3265249, 8737037, 13161390, 38980048, -1834488, 17553532, 18352932, --29777008, 1365263, -353798, 6544994, 12612171, -1564442, -7271917, 12371653, -2110440, -6678138, -1254131, -12104828, -3237332, 9106941, 1380832, -5131949, -28533078, 1564442, -13321378, -945430, --11281268, 23716272, -8244727, 11630771, 13871134, -11126113, 16802448, 11114302, -170188, -5961952, --11134166, 2790655, -1584306, -6040872, -1454383, 11865384, -9432285, 5233955, -3658775, 8594230, -66728224, 17685602, -23957864, 2723546, -31445066, -4060355, 10974178, -12981539, -16725676, -18547280, --7087233, 7221988, -4138738, -5913633, 8457327, 4961761, 11476153, -11799886, -7473780, 8632884, --3095598, 1604170, -17368848, 11851962, -20327006, 9831180, 6699612, -4295504, -916439, 830002, --11796128, 2066416, 2402497, -9311489, 16989280, -9047349, 4115653, 188442, 596464, 8683887, --8374113, -12932147, -3905199, 19734300, -14555644, 9721122, -26697516, -15782394, 5089000, -5669894, --403190, -1656784, -16057272, 17170206, 13654775, 1355599, -11744051, -467615, -7125888, 3628711, --8898098, -163746, -8535711, 6548215, -2323041, 1799591, 21659520, -18155364, -1506997, 3374234, -1380295, -3834869, 579821, -8540006, 565862, -7134478, 4523138, 8667244, -13011603, -10731513, -6354941, 954557, -3012920, -10215580, 4567698, 1530082, -340913, -2211371, 199179, -2232846, -7327751, -4657355, -1218697, 3506304, -2299955, -238908, 5909875, -3717831, -2411087, -1330903, -1369558, 6129992, -1893007, -6564321, 555661, -4168266, 15710990, -6117644, 2075006, 3722663, --3783329, 12579422, -1607392, -10585484, 4040491, -5967857, 7840463, 3944928, -1509681, -471910, --2654827, -2743410, 7767985, -4806606, -2065342, -616865, -6382322, 8702141, -32014150, -47329464, -32984276, 151562960, 66400732, 69463576, -443992, -140291888, -101536248, -52824876, -110555680, 53674208, -65971772, 34287260, 142995568, 64288680, -6190122, 47411072, -92502320, -117978456, -67315024, -82653960, --17791366, 63887100, 65465504, 27396522, 109962976, 54550916, -7610145, 52865140, -48622252, -83513488, --47840032, -62832688, -98535136, 36286032, -793495, -35416300, 106236016, 63903208, 36060008, 108657304, -26369488, -55233816, 53630184, -78741248, -89627912, -18407156, -94270240, -95809984, 38001872, -15889232, -23294828, 120698784, 82862808, 86045376, 81384800, 9805410, -45368276, -52679384, -87928184, -115650584, --60450056, -32998770, -23736674, 44084080, 69021736, 64581276, 91729768, 82614768, -12550968, -14678588, --14654965, -84959824, -25242596, -41880228, -62860604, 14037027, 26101054, 4112431, 59032176, 26160646, -782221, 36742372, -28080496, -31283468, 1120987, -20360292, -6120866, 15292231, -2895882, 16987132, -23080080, -12629351, 18223546, 7231651, -27258546, 2546379, -12837120, -52391620, -428960, -13360570, --22001506, 50452980, 15469398, 18919330, 66676684, 26255136, 19824496, 14560476, -32525788, -48153564, --44212932, -74928928, -60845728, -27301496, 2984466, 33668248, 77463496, 81564112, 75357888, 66368520, -41458784, -16333761, -46511812, -93714040, -118250648, -91647088, -54499912, -19357954, 50539416, 92627416, -106973136, 109150152, 53195856, -12895102, -35276712, -44001404, -56310244, -40934260, -41545756, -33894808, --4146254, 10802916, 17840758, 29476360, 32159104, 29174640, 27214524, 15092515, 5302674, -2956011, --12589623, -20225000, -17219060, -10948409, -3455301, -1072668, 845035, -561567, }, +-1191317, 726386, 7012071, -891743, -344134, -2033667, 7650411, 461709, 3710315, 2278480, +2238215, -3151969, 1571421, -4888747, -552977, 3810173, 750546, 2235531, 3557307, -6040872, +-4247186, 1449552, -322123, 4499515, 2712272, -224412, -2514703, -1560147, -3106335, -483184, +-434865, -455267, 830539, 1181116, -2707440, 4507568, -1059246, -695785, 1513439, -5731097, +-1349694, 2488397, 852014, 5667210, -47782, -409096, 1079111, 390842, 2329483, 3924526, +4956929, -284005, -542240, 93952, -2895882, -3635690, 1980517, 3253975, -2311229, -2186138, +-1508607, 4147865, 2411624, -568546, 615791, -4886599, -1438814, 2542621, 2076080, 3615826, +-5287105, 1194001, 1956358, -1095754, 3674882, -238908, 3198677, 1537061, 1006096, 4097936, +2000918, 1032940, -537, 481036, -1011465, 341450, 535260, -326418, -1491427, 716186, +673773, -1082332, -186831, -732292, 725313, 1173600, 11274, -156766, -103079, -1099512, +499290, -393526, 870805, 420907, 241055, 185757, -526670, 286689, 95563, 456340, +-907312, -424665, -231391, 107374, 11616813, 3238405, -2698850, 5969468, -2916283, 6212670, +-2084133, -2784213, 3114925, 5812702, -205085, -2823404, 1516660, 1248762, -263067, -8192113, +1902671, 2447058, 635655, 5176510, 6895033, 3751654, 6790344, 4670777, 4129611, -1068373, +4589173, 2261300, -3515431, 1350230, 2110440, -4460324, -5735392, -835908, 2235531, 132607, +-2079838, -2720325, -2708514, -1290638, 3069291, 6227703, 5222680, 2023467, 4009352, -6444599, +397284, -1607928, 51540, -7402376, 2752537, -666257, -1766842, -238908, -2031520, -3631932, +-2596308, 2665564, 618475, 2057826, -2722473, 5137318, 1301912, -5832029, 2428267, 803159, +1633698, 3282429, 976568, 5976984, -1889249, 707596, -6912213, 1373853, 667867, 258235, +165893, -1240709, 4920959, -1442035, -2281702, 3793530, -3859565, -1822140, -1589675, -654446, +-1794760, 1312113, 338229, 716723, -40802, -103616, 74625, -637803, 435939, 716186, +-236760, -233002, -19327, -1208496, -2071248, 840740, 271657, -1574642, -200790, -108985, +-340376, -1920387, 531502, 65498, -42413, 212601, 370441, 293132, -732292, 48855, +-1349157, 647466, -2427194, -2303713, -836982, 2230699, -4057134, 1230508, -7945690, 1542430, +1418950, -853088, 5560372, 420907, -694711, 570157, 2913062, -4765803, 622233, 1542430, +3016678, -6806450, -3546569, -2529199, 2452426, 1093606, -2222646, -6878927, 1617055, -6842420, +-489089, 2804077, -1345399, 2150705, -1258962, 4715337, 6833830, 3708704, -3636764, 732292, +5163625, 3293166, -3299072, 2778844, 744103, -5318780, 1826972, 7460358, 3404299, 2543695, +8185671, 803159, -3196530, -6250788, -340913, -3481071, -4315906, -1950989, 4472135, -4243428, +1438277, -2507187, -2469606, 5351530, -757525, 940598, 4150549, 5807333, -2615098, -5208722, +6644852, 5213017, 3221226, 376883, -4096862, 709207, 5237713, -5311801, 1573032, -3438658, +-181462, 3347927, -3144453, -106837, -5992016, -1497870, -586263, 966905, -380105, -2176475, +-332323, 1200443, -1815161, -386010, 747324, 746251, 443992, 556198, -155693, -364535, +-2403571, 1325534, -193810, 1363652, -970663, -1471026, 479963, 1297617, -872415, 1154809, +-250719, -1074, -163209, -171262, 1234803, -686658, 439697, -693637, -15617575, -5695664, +-2417530, 8552354, -3254512, -1267552, -5058398, -4252018, -743029, -11236708, 6293738, 2100776, +-332860, -4140349, 6197101, -1730872, 3141232, -2497524, 1979980, 3977677, -4959077, 541166, +5448703, 3104725, 2188286, 5858873, 5212480, -3257196, -4189204, -5193153, -96100, -6833830, +1627256, -9032316, -1742146, 6689949, 3498251, -2274185, -712965, -6788733, 3086471, -2889439, +5996848, -3435437, -6169721, -1242319, -2546916, -5039071, 1955284, -1135482, -3229279, -3259343, +-10922639, 1517734, -3279745, -8064338, -2157684, 5015448, 2553895, -4157528, 3452080, 4472672, +4289062, 1622961, -5585068, -901943, -1242856, 3894999, -3925600, -1478006, 2033130, 2098629, +-6111739, -7245610, -13069049, -2204392, -7591355, 2529736, -295279, -1780801, 3841312, -779000, +-1749662, 1708860, 2619930, 2552284, 1957968, 4583267, -1942399, -1564979, -1228898, 704375, +229244, -997506, 1254131, 1842541, -401043, 462246, -796180, -994822, -192200, -631897, +188979, 436476, 54761, -1105417, 178778, -731218, -295279, 695248, 1467268, -608275, +1757715, 2184528, 338229, -574452, -1857573, -328565, 1251983, 879395, -13560285, -5450314, +-2414845, -4041027, 4637491, 6020471, 5710696, -11357504, -8449811, 3240553, 13828184, 8145943, +7516, 1945083, 3948686, -4986994, 3289945, -4625680, 3335579, 4883915, 768799, 3914326, +1239098, -299574, 2052994, 1187559, -3694209, -4715337, 6489159, 2602213, -4725001, 4615479, +-2574833, -505196, 11147051, -5345087, 6312528, 12428562, 5087389, -738734, 483184, -4520453, +5826660, -5977521, -3250753, -10028749, 1885491, 7682623, -193274, -7108171, -2523293, -10065793, +-5097590, -1894081, -14276471, -7798587, -1414655, 1481764, -6254010, 3134789, -1661616, -4966593, +5337034, 15745887, 1460289, 8009577, 5448703, 4695473, -5004711, 2066416, -8521752, 874026, +2435783, 1873143, -3318936, 41339, -8655433, -3046743, -3046743, -650688, 4184372, 4464619, +-218506, 1715303, 2430415, -1273995, -963683, -834297, 788663, 62277, 584116, 433792, +1357747, -770410, -70330, -2112587, -280784, -361851, 1454920, 806917, -936840, -1292248, +-1236414, -1216550, -425202, -1485522, 487479, 2619930, -2137820, -316217, 878321, 1471026, +21109228, 13502840, -7392713, 2820183, 6726993, -2718178, 3807489, -1227824, 6267968, 3288871, +1938104, 5874979, 3166465, 2955474, -1901597, -14095009, 6694781, -2320356, -3331284, 11200201, +6771553, 3933653, 5019743, 3898757, 2724083, -2076080, 1543504, 547608, -3735011, 3031173, +4700842, -7909719, 1430761, -5085778, 3727495, 4527970, -12618077, -110595, -14996952, 351114, +1757715, 1358820, 3962107, 10255308, -1346472, -5172215, -2685428, -2733210, -4021163, 3018825, +3045132, 1076963, -1758252, -1733556, 9769440, -3183108, -2081985, -5298916, 8665097, -1240172, +7264401, -3377992, 7770133, -7495792, -16062104, -4650913, 889595, 3320547, 5283347, -5280126, +-4112431, 2277943, 1327682, -2399276, -4272956, 10064719, -4016331, 9578851, 2393371, 6794639, +2525978, 4974646, 4002910, -1626182, -761820, 2008971, -399969, 5265093, 15032, -1625645, +352724, -5712844, -1270237, -1254667, 281320, -1851131, -865973, -565325, -261993, -581431, +-3168075, -2381559, 613643, 297963, -3542811, -118112, 375273, 590558, 1264331, 679679, +3229279, 236760, -1266479, -49392, -590021, -1470489, -1971927, -639950, 9893457, -3760781, +-6628745, -274341, 1014149, -9398999, -7407208, -2323577, 2527588, -1381906, 12202002, 7368017, +283468, 11708618, 4173635, 3438658, -10061498, 9415642, -1803886, -2343442, -8496519, -3803731, +7452305, 7419019, -2162516, 4923107, -10212895, -1419487, 6770479, 5146445, -3854733, -7208566, +-4110284, -4453881, -5626407, -4628901, 1048509, -7581154, -796716, 10481868, -5112622, 1210644, +-464930, -2413235, 4016331, -1673964, 6776922, 5369, 9585293, -2485176, -6162741, 3487514, +-4887136, -4773320, -4889284, -13723494, 1510755, 5667210, 8082592, 5874979, 10646150, -1113470, +-4214437, 6187974, -7714835, 1757715, 1087701, -1162862, 6860674, 6469832, -1765768, -8304320, +1559610, -4300336, -7988639, -7333657, 3929895, 7059853, 4336843, -15348603, 3350611, 1606855, +-868657, 7202124, 3794604, 5887327, 2128693, -603443, 7650948, 1013075, 3413425, 2788508, +498753, -3518115, 451508, -1977296, -4387309, 777389, 1175747, 1990181, -634045, 513785, +353798, 338229, 1392643, 949725, 919123, -202400, -2827699, 1865090, -1224066, -1255204, +-1151051, -1964948, 3380676, 3933116, 3236258, 1314797, 228170, 529892, -958315, 2574296, +-12070469, -7066295, 1275068, -6895033, -17866528, 13540958, -295816, -887448, 1716376, 1072668, +-11815992, 8268349, -12318503, 1102196, 5639292, -1616518, 2057826, 1992865, -13251585, -4457639, +-5900212, -1220845, 2729452, -4349728, -2755222, -530428, -768262, 1222992, 5560909, 2979634, +11944304, -4320200, 16390669, -1137093, 462246, -10697690, -1570347, 7968775, -1560684, -16458315, +6671695, 7667054, -4878009, 4061429, -6128919, 11424076, 6339909, -313533, -645856, -7313793, +-4645544, -8004746, 7536057, 7419019, 3287798, 855772, 3413425, -6451041, -16962436, -6204081, +5993627, 2622078, -12568148, 329639, 1531156, 1737314, -6003291, 4348118, 9001715, 4635344, +235686, 3637301, 6213744, -3468186, 9229348, 154082, -184684, -9081708, -11548630, 7468412, +-3474629, 3707631, 3839701, -627602, -2417530, -2541010, -1868848, 1183800, -2780991, 3763465, +952409, -1049583, 1043140, -1348620, 238908, -4756677, 1280974, 355945, -731218, -2660732, +986769, -2358474, -25770, 731218, -377957, -1557463, 81604, -1564442, 5850819, 4332549, +1747515, -704375, -369904, -1697049, 158377, -696322, 3795141, -1278827, -358093, 3451543, +956167, 1410897, 2702608, -1851668, -827318, 2559264, 1724429, -796716, -257698, -18791556, +10087804, -2531346, 3687230, -5536213, -3088618, 7958038, -9207873, 8944269, -5586679, -10648298, +4794257, -5721434, 22731652, 3419331, -8012262, -11034308, -2037962, -13692893, -6359773, -14751065, +-923955, 9916006, -7063611, 6128919, 9920838, -9217000, -26307, -10763725, 5996311, 2159832, +-457414, 6390375, -6793565, -9651328, -8239895, 588411, 1760400, 8158827, -11775727, 8363375, +1565516, -17267916, -9583146, -13932874, -5801964, 5330055, -4776004, -4633196, -26640072, -528818, +-5906654, -2408403, -17115982, -5909338, -2328946, 1344325, 13821742, 12690018, 10640781, 6190659, +13319230, -14397267, 11162083, 1585917, 5163088, 3802657, -10380399, 16044924, 9853192, 6342593, +-7121056, -9433359, -6886980, 9324374, 989990, 64425, 4956929, 2455111, 5215701, -4640712, +13996225, 7420093, -1591822, -2273648, 3075734, 2865817, 1635309, -818728, -942745, 1332514, +-306016, -222801, -5918465, 368830, -3456912, 236223, 1770063, 671626, -440234, 54761, +1068373, 1043140, -5639292, -1445257, 1876364, -1581085, -2259153, -105227, 653909, 943282, +984621, -777389, -1243930, 993748, -2517388, -4086125, -1138166, -988379, -1443646, 797253, +-421444, 3712999, 1621350, -1440962, 1515587, -820876, 7124814, 13223131, 14324253, 5861020, +10020696, 8119099, 4846334, -2623151, 1069984, -3912178, 330176, -1351841, -8662412, 11023034, +17486422, 6968585, -4791036, 7836705, 7447474, -310311, 4622996, -8257612, -15911780, -10589779, +-7247221, 4594542, -1933272, -8320426, 6205154, -2867428, -7443715, -104690, 12879533, 6482180, +9540196, 3330747, 7021198, 7793218, -1795833, 7135552, -2789581, -8192650, 3442416, -9485972, +3526168, 3749507, -13933411, -9066676, 5702643, 14409615, -7487739, 10034654, 14026826, -11624866, +471373, 12774843, 1376000, -4701916, -1086090, -6590628, -11482058, 111669, -3492345, -6048925, +7873212, 364535, -13143674, 16796006, -6968585, 13614509, -16164109, -11077794, 7870528, -9968082, +5465346, -6717866, -4895726, -9368934, -5738613, -7636989, -19086298, 3095598, 11610907, -5424544, +-903017, 8025147, 8573292, 6063957, -1249299, -755377, -4990752, -1609539, -2225867, -2649458, +1988570, -592169, -1877438, 2720862, 2455648, -1270774, -326954, -3496104, 1414118, -3089692, +-5549635, -475131, 5013838, -52613, -2949569, -858993, 8333847, 4115116, 191663, -2638184, +-3159485, -2347200, 409096, 464930, -2674154, -1080721, -11811, 872415, 3245385, 678068, +5182952, 3053185, 3676492, 1315334, 1577327, -921271, 420907, -12042015, 7776039, -5239860, +-12796855, 18496814, 9699647, -13150653, 9432822, 8324184, 2611877, 15580531, -31925028, 2246268, +13374528, 4464082, 1372779, 13937169, 738198, 7598334, -18377092, -2576444, 5250598, 163746, +-9099962, 3552475, 7669201, 3541738, 3737695, 9824201, 8434242, 13079786, 10538776, -4132296, +-4025458, 10103911, -6058052, 7064685, -11323144, -6339372, -14542759, -6796786, 8342437, 2763812, +-3195456, 12048457, -14177687, -19510962, -31252866, 9687299, 11077794, 8435853, 6863358, -7504919, +5213554, -4391604, 12095165, 31657130, -4734128, -6782290, -13601625, -4473209, 12097312, -8193724, +7022272, 11612518, 2119566, -355409, -9012989, -2765422, 4580583, -22092774, -20109036, 1941862, +2956548, -7908646, 11359115, 8417062, 16259672, 25884694, 10559714, -6147709, -2960306, 5374078, +60666, -14452565, 7020661, 5899138, 5325760, 1578937, 6884296, -397821, 3903589, 2949569, +2267743, -3394098, 474057, -474057, -243203, 5175436, 1784022, -233002, 2985002, -5849746, +1836635, 862752, -510027, 5447629, 1322313, -1808718, -743029, -3641596, 10169409, 486942, +1922535, 4000762, -1252520, -1670205, 5822365, -6262599, 5792837, -4633733, 4840428, -505196, +-172872, -1270774, 2104534, -1130650, 4998268, -4128001, -1389959, 1261647, -651224, -1555852, +-2774549, 3268470, 47640316, 26867168, 17199734, -4437775, -4800700, -636192, -4005057, -4940823, +-7332583, -8938901, -15220290, 632971, -1028108, 3688303, 6710887, 12645457, 19242528, -2605972, +-24914032, -9801115, 21481278, -3380676, 8083666, -2814814, -307090, 14236206, 4997195, 10801306, +6431177, -486405, -590021, -239981, 7262253, 9170292, -3519189, -14101988, 18471580, 13159780, +9431748, 3412889, 4832375, -7515119, -13881334, 19160922, 10769630, 4904853, -8851391, -9946607, +-13849122, -8600672, -2415382, -8736500, 4876936, -17826798, 2518462, 13090523, -8482024, 4592931, +853625, 1886028, -20245938, 7157026, -8659728, 14775761, -32551020, 5557151, -8462696, -11050951, +2760053, -6684043, 6768332, 6319508, -21184926, 192200, 14914274, 2182380, 4417374, 9303973, +3874597, 15457587, 6383395, 3239479, 1100049, -2285996, 10043244, -19756850, -313533, -1189706, +-1748052, 738198, -505196, -188442, -1654099, -2939368, -3730716, 6097780, 5199595, -2735357, +-379031, -9479530, 988379, -627065, -9258339, -80531, -13762149, -10540387, 4719096, 1723356, +7337415, -8250096, 3591667, 7118909, 1640141, -343597, 1916629, 3800509, 384400, -2095407, +7638063, 19864, 2525978, -4482872, -3279745, 3118146, 4603131, 769336, -29209536, -15059766, +2196339, -25735980, 5928666, 18619220, -8943733, 22640920, 26633630, 3349001, 13322989, 16370268, +7389491, -15777025, 10304163, 12482786, -584116, 3128347, 8863739, 7773891, 18804978, 3167002, +-7205882, 11949136, 4329327, -1901597, 303869, 7997766, -10943040, -5001490, -4613869, 6665789, +3506304, -15516643, 4600447, 12889197, 374199, 15542413, -14709726, -27882390, 2253784, 12452184, +18918258, 17480516, 9071508, 8272644, 6688875, -18960670, -5509370, -834834, 14221174, 22397718, +-7729331, 4789426, -8233453, 5263483, 3595425, 13615583, 21182242, -8201777, -9245454, -1889249, +11616813, 14842870, 20876226, 465467, -22510998, -21301964, -3445101, 2702608, 90731, -9792525, +243739, -25675852, -16518981, -15193447, -17216914, 7299297, 2667175, 20598664, 16522739, 6172405, +-9850507, -9904195, -9156333, -8383240, -14300630, 6705518, 4505958, 2600066, 9650255, 10657961, +79994, 9085466, 1895691, 9705015, -3375844, 8040179, -2568927, -785442, 2419677, -3026878, +13553306, 6045167, 8053064, 3580929, 9654013, 2105071, 4636954, 13771276, 12002286, 6366752, +-758599, -5356361, -4532801, -9833864, -5480379, -6474663, -3821984, -5975374, -7167764, -4205847, +4187056, 9159555, 2565169, -2215130, 344134, -1420024, 5761699, 6751689, 5651640, -654983, +2542621, 12390444, -27371826, 2492155, -5495948, 15001247, -8060043, -1233729, 4600984, 11364483, +-15300821, -25682294, -4502200, -10058277, 679679, -11586211, 6786049, 6749541, 629750, -13856101, +8610873, 871342, 23111756, -3695283, 12634183, -10700374, 23867670, 6898255, 14874545, 10024991, +16231218, 23947664, -5893769, 9292162, -16813724, 17666812, 17116518, -399969, 5520644, 17299054, +-11138461, -10702522, -1830730, 34827888, 5596880, -9746355, 17229262, 2257005, 13196287, 19064286, +5490042, -1299228, 1722819, 2965675, 12510703, -4415764, 13420162, -9330280, 13096429, -7307350, +29655138, -4336843, 25487946, -23210004, -25553982, 35423816, -29761976, -15900506, 1104880, -9579925, +-18513456, 16170015, -2258079, -22859426, -10907069, -11754789, -33695628, -12486007, 4036733, 7520488, +-26026964, -6650757, 15610059, -3172907, 8914741, 15477988, -11202885, -2564632, 2403571, 10090489, +7143605, 7603166, -2644626, -1503239, 6132140, -585726, -4310537, 3402151, 7084012, 1329292, +4875862, -192737, -4812511, -57445, 6509023, 2471217, -3560528, -8433168, -5233418, 9780714, +-4687420, -13261785, 2971581, -7633768, -14564234, -41339, 5236102, 456340, -3913789, -1118839, +3763465, -3068217, -2684, 5119064, -481036, -2462090, -3299072, 9269613, 17690434, 922344, +-6514392, -5284958, -3132642, -8503498, -2034204, -3595961, 3519189, -22922240, -15318538, 4492536, +-30008400, -17469242, -20848308, -21173116, 25856776, -594316, 901943, 7748121, -7520488, -32934346, +-24656334, -24111946, -49260052, 3626563, 5630166, 21368536, 12488691, 7456600, 10673531, 7452842, +2356327, -15472083, -22803056, -13075491, 17830020, -2151779, -13303124, -5297306, 17478370, -20940114, +-13500156, -21507048, -10660646, -1730872, -20645908, 7837242, -17121888, 18760954, 13175349, -2761127, +13005698, -12542378, -25947508, 11531987, 15329812, -13309030, -29779692, 22689238, -1803886, 16480863, +13856101, -42621644, -30243012, 455803, -6779069, 28031104, -15810311, -18293340, -4786204, 10458782, +1755031, -2387465, -9513353, 37184216, -17951890, -29926796, -40531068, 29415158, -6766184, -33333242, +15848429, 16124918, 9663676, 33935072, 36308044, 37260988, 16095927, -8177081, -3149822, -5510980, +12560095, -23468776, 15511811, 3152506, 3260417, 11807402, 11468100, -9529996, 14614163, -10975252, +5089000, -15687905, -8775692, -5927592, -7943005, -3020973, -8571144, -1937030, 6472516, 17023102, +19832012, 1103270, 15647103, -8844411, 2594697, 9328669, 1604707, -16646756, 2482491, 4466229, +-4283693, -12276627, -7637526, -7423314, 20648056, 12918188, 6994891, 9859097, 17519172, -2341831, +-19836306, -12412455, -11183021, -14226542, -18364206, 3695819, -15301895, -27330488, -6254010, -5621039, +4532264, -27398134, -10439455, 12259984, 20846160, 41420128, 7179575, 21497386, 10918881, 10194105, +-9203041, -3411278, -7800198, -23272818, -26600344, -38160784, -13441637, -34416108, -13071196, -18191870, +-6344741, 17930952, 4809827, 12082817, 21829708, -340913, 14845554, 3856881, 1044751, -868657, +-2541010, -29105382, 10756209, -3964792, -32166620, -20478404, 9774272, -21211232, -7703561, 7201587, +23853174, 28212030, 10233833, -6330782, 4218195, 18756122, 10524280, 3648038, -289373, -57013544, +-11146514, 12136504, 14642617, 5342403, -1898376, -19487340, 13506062, -17429514, -12576738, -3750580, +3736085, -9872519, -29987462, 15763067, -3619584, 37219648, 14559939, 12451110, 14705431, 27250494, +62286152, 537945, 1298154, -3019362, -18240726, 10611254, -12586939, 44697724, -3786014, -16603270, +-14334453, 18644990, -24252070, -16950626, -3004867, 38165080, 1504849, 17984638, 28719372, 5327907, +23286776, 17065516, -2988760, 15609522, 17591650, 141734, -11690901, -13246216, 3774740, 3965329, +14777372, 8928700, -446677, -2631204, 2768107, 5487895, -10652056, -2712809, -2488934, -1875290, +-16815334, 10239739, -12165495, 3852586, -2349347, -7828115, 2196876, 20214264, 18220326, -426276, +-1085553, -13619341, -5252208, -13542032, -1835562, -15685757, -21585968, 5892695, 15132780, 561030, +946503, 31472446, -4080219, 5537824, -34466576, -11952894, 40824200, -27289686, -7191923, -23662586, +-69057168, -10056129, 21425982, 17309792, 3543885, 4817880, -3568581, 38585988, -41646152, -258235, +-11871290, -28178744, -23507966, -3747896, 8105140, 6742562, 9516574, 24826522, 16412144, -17971754, +-17894444, 49604188, 40869836, -3508452, 4918275, -5703717, 13421236, -435402, 29207388, 10339597, +15592342, 4106526, 2392834, -51775832, 21502754, -2464238, -29548302, -15364172, 3077344, -8250096, +-29410862, 28192702, -4889821, -21287468, -4271882, 2850248, 25336012, 27980102, 21592412, 8029978, +25263534, 26610544, -20061792, -22312356, -13987098, -3862249, 26166014, 34578244, 6083285, 12300249, +33509872, 19811610, -31208306, 22886270, 8527658, -7153268, 1341640, 63988032, -42436424, 32481764, +37592776, -38001332, -2111513, -24793236, -7820599, -54481660, 15692200, 23710904, -32556388, 19426138, +-28161564, -20681878, 24780888, -15662672, -2201708, -9532680, 1271310, -13859859, 4248260, 5967857, +-10223633, -14838038, -1082332, -16094853, 20747376, 3412889, -19389092, 3940096, -3225521, -10875394, +-10168335, 6362994, 13223131, 16232829, 6812355, -15231565, 38132332, -7387344, 3803194, -2813204, +-20175608, 7357279, 10996727, -10588705, 16242493, 3789772, 12120398, -3202435, -19552838, 6213207, +29246580, -18847390, -27409944, -44365400, 8761196, -8487929, -14178761, -17938468, 9793599, -10883447, +-5180805, 29199336, -9170292, -1628330, -22961432, 1880122, 14544907, -32065688, -20323786, -19179714, +-9517648, 11681237, -43335684, -24050206, -62508956, 10874857, -714575, -15844671, -7042673, -9204115, +13256417, 20061792, -22261352, 850940, -7829189, -7490423, -39089572, 8596914, 29849486, 7937637, +22559316, 28452548, 25382720, -34176128, -10552198, -10306848, -16108275, 28792388, -29496762, -16930224, +937914, 41802380, 9345312, -14642617, 42004780, -23645406, -22328462, 50244140, 47998408, 4668630, +12161200, -13638132, -45650672, -13987635, 45816564, -22214644, 41518912, -14969035, -65569120, -17223892, +-30703648, 34971236, 244813, 7879118, 31230318, -4940286, 25740276, -33620468, -39762808, 30604864, +-8021925, -66823248, 41259604, -21223044, 11220065, 13641890, -23446226, 44467944, -30351998, 16190953, +-508417, 11915850, 44913008, -11316165, -14239964, 1865090, -9393630, -12077985, -10188736, 5259188, +10079751, 2660195, -6473590, 5862631, -21432960, 19489488, 13474386, 11075110, 4270808, 366683, +-10030359, -10641318, -10433012, 9343164, 17544942, -16927540, 15214922, 35762044, 11903502, -30087856, +2934000, 11403675, -11293617, -19754702, 18884434, -16676284, -389231, -1162862, -18163954, -23050552, +-243203, 13660680, -7761006, 30894774, -10246181, -19816980, 14103062, 11967926, 23112292, 1726577, +-41636488, 24561844, 28305446, -34397320, 18802830, -181999, -12460237, -14710263, -49646600, -21885006, +17423608, 3156264, 45530948, -36558224, -20701206, 8586176, -5047661, 29232622, -40605696, 80531, +4154307, -34264176, 34295312, 18854906, 10462003, -16037945, 23487028, -27753542, 15366856, 12010339, +7229504, -1913408, -15530065, 6512781, 31207232, -16335908, -5966784, 6180458, -24422794, 25005300, +991064, 6615860, -33461554, 18149994, 4457103, 6229313, -78541528, 10870025, -22298934, 36817532, +30452392, 32373852, 16550120, -63805496, -11159936, 13799193, 1430224, 4348118, 45081052, -6604049, +-27020176, -32392106, 1396401, -36037460, -31635118, -27986544, 13626857, -52617108, 37579892, 71818832, +-18693846, -8470749, -55852828, -12068321, 21565030, 13375065, -18486076, -3674882, -67579160, -23629836, +68140728, 29120416, -20946018, 20077362, -38248296, -28191092, 7669738, 1715839, 4777614, -25815974, +-8843338, -5231807, 176094, -37504728, 8331700, -4600447, -11614128, 5280126, 15820512, -20344186, +-10087268, -2954401, 7675644, -15549929, -3975529, -2430952, -14707042, 528281, -27450210, 36527088, +11970611, -9165460, -3368328, -10313827, -1195612, 23582592, 7271380, -3935801, 12468827, -7170448, +-34172372, 1965484, 1930588, 7673496, 15671799, -8644159, -6120866, 15454366, 18568218, 8178692, +-16225850, -51269024, 13932874, -22482544, -15300284, 15573551, -12560095, -18030810, 14267344, -23707146, +-1460826, -27023934, 39017632, 684510, -28536300, -8425652, 644245, -2869575, 9061844, -19058380, +-13218299, 4278325, 7841537, 4578972, 3801046, 14810121, -17191144, -6587406, -39505648, 14650670, +3647501, -12054363, 28458990, 15598784, -11754789, 43650288, 9596031, -27425514, 20622822, 3593277, +13379897, 28829432, -2798708, -7044283, 4373888, 23770496, 13276281, 563178, -2578591, 25432112, +-2420751, -29466696, -5280663, 5488432, 23118198, -10285910, 39927088, 44373456, -28347322, 23198728, +49606872, -13389024, 75428216, 42773580, -19173808, -17149268, -28744068, -32179506, -18481244, 10164040, +-5895917, -5645735, -1256815, -4824322, -53134116, -20391968, -52467320, 12322261, 46523624, -17413408, +-3112241, -25356950, 12398497, 3265249, 8737037, 13161390, 38980048, -1834488, 17553532, 18352932, +-29777008, 1365263, -353798, 6544994, 12612171, -1564442, -7271917, 12371653, -2110440, -6678138, +1254131, -12104828, -3237332, 9106941, 1380832, -5131949, -28533078, 1564442, -13321378, -945430, +-11281268, 23716272, -8244727, 11630771, 13871134, -11126113, 16802448, 11114302, -170188, -5961952, +-11134166, 2790655, -1584306, -6040872, -1454383, 11865384, -9432285, 5233955, -3658775, 8594230, +66728224, 17685602, -23957864, 2723546, -31445066, -4060355, 10974178, -12981539, -16725676, -18547280, +-7087233, 7221988, -4138738, -5913633, 8457327, 4961761, 11476153, -11799886, -7473780, 8632884, +-3095598, 1604170, -17368848, 11851962, -20327006, 9831180, 6699612, -4295504, -916439, 830002, +-11796128, 2066416, 2402497, -9311489, 16989280, -9047349, 4115653, 188442, 596464, 8683887, +-8374113, -12932147, -3905199, 19734300, -14555644, 9721122, -26697516, -15782394, 5089000, -5669894, +-403190, -1656784, -16057272, 17170206, 13654775, 1355599, -11744051, -467615, -7125888, 3628711, +-8898098, -163746, -8535711, 6548215, -2323041, 1799591, 21659520, -18155364, -1506997, 3374234, +1380295, -3834869, 579821, -8540006, 565862, -7134478, 4523138, 8667244, -13011603, -10731513, +6354941, 954557, -3012920, -10215580, 4567698, 1530082, -340913, -2211371, 199179, -2232846, +7327751, -4657355, -1218697, 3506304, -2299955, -238908, 5909875, -3717831, -2411087, -1330903, +1369558, 6129992, -1893007, -6564321, 555661, -4168266, 15710990, -6117644, 2075006, 3722663, +-3783329, 12579422, -1607392, -10585484, 4040491, -5967857, 7840463, 3944928, -1509681, -471910, +-2654827, -2743410, 7767985, -4806606, -2065342, -616865, -6382322, 8702141, -32014150, -47329464, +32984276, 151562960, 66400732, 69463576, -443992, -140291888, -101536248, -52824876, -110555680, 53674208, +65971772, 34287260, 142995568, 64288680, -6190122, 47411072, -92502320, -117978456, -67315024, -82653960, +-17791366, 63887100, 65465504, 27396522, 109962976, 54550916, -7610145, 52865140, -48622252, -83513488, +-47840032, -62832688, -98535136, 36286032, -793495, -35416300, 106236016, 63903208, 36060008, 108657304, +26369488, -55233816, 53630184, -78741248, -89627912, -18407156, -94270240, -95809984, 38001872, -15889232, +23294828, 120698784, 82862808, 86045376, 81384800, 9805410, -45368276, -52679384, -87928184, -115650584, +-60450056, -32998770, -23736674, 44084080, 69021736, 64581276, 91729768, 82614768, -12550968, -14678588, +-14654965, -84959824, -25242596, -41880228, -62860604, 14037027, 26101054, 4112431, 59032176, 26160646, +782221, 36742372, -28080496, -31283468, 1120987, -20360292, -6120866, 15292231, -2895882, 16987132, +23080080, -12629351, 18223546, 7231651, -27258546, 2546379, -12837120, -52391620, -428960, -13360570, +-22001506, 50452980, 15469398, 18919330, 66676684, 26255136, 19824496, 14560476, -32525788, -48153564, +-44212932, -74928928, -60845728, -27301496, 2984466, 33668248, 77463496, 81564112, 75357888, 66368520, +41458784, -16333761, -46511812, -93714040, -118250648, -91647088, -54499912, -19357954, 50539416, 92627416, +106973136, 109150152, 53195856, -12895102, -35276712, -44001404, -56310244, -40934260, -41545756, -33894808, +-4146254, 10802916, 17840758, 29476360, 32159104, 29174640, 27214524, 15092515, 5302674, -2956011, +-12589623, -20225000, -17219060, -10948409, -3455301, -1072668, 845035, -561567, }, }, { { 4808753, -2767033, -4361540, -995359, -1613297, -139586, 6528887, 375273, -2796024, 3442416, 699543, -352187, 1146756, 723702, 55835, 4913443, 2767033, -3324305, -1284195, -381178, -1170916, -1378685, 2094333, 1409286, -1427003, -2123325, 813896, -4277788, -1948841, 3213709, 279173, -2587718, 1320703, -2086817, 1577864, 28454, -1846299, 4512400, -3022583, -1418950, 572304, -1552631, -2068027, -542240, -2968359, -5867462, 5485210, -1100585, -3064459, 323733, 5042292, -5369, 1948305, -2508261, -1471563, -1034550, 1546188, -1983738, 4031364, 637803, 3636764, --5286568, 2231773, -1373853, 878858, 2245731, -916976, -588947, -3911642, 27380, 2106682, -479426, -1094143, -184147, 1874216, -994822, -1046898, 2962991, -1357747, 940598, -569620, --177704, -3652870, -1498407, -1001264, 1330903, -280247, -1625645, -287763, -331249, -1032940, -970126, -1234803, 80531, 266288, 623844, 980326, -433255, -892816, 928250, 177167, --668941, 111132, 1581622, -223875, -153008, 621697, 54761, 199716, 256624, -496606, --856846, -504122, 676994, -174483, 76236, 317828, -459025, 425202, 10737, -295279, -13784161, 4725538, -1090922, 3732327, 190589, 6801081, 4273493, -954020, 3496640, 6106907, -7987566, -4714801, -4614406, 1962800, -1861868, -1542967, 5711770, 4616553, 4396973, 3139084, -591095, -179852, -1994476, 2179696, 1522029, 7276749, 736050, -157303, -3218541, 1515050, -2130841, -414464, -992137, -1138166, 1973001, -288300, -1173600, -2664490, 2825552, -948114, --956704, 4018479, 5700496, -1469953, -699543, 3296924, 2949569, 5223217, 3235184, 1435593, -536871, 4447439, 2515777, -6131066, 5369, 1882269, -3533684, 92342, 576599, -4373888, -2226404, -2123861, 3278671, -707059, -567473, 1764695, 566399, -3017215, -270583, 1675574, --594316, -746787, -877247, 325344, 3488587, 615791, -3515968, -835908, 824634, -1048509, --448824, 5163088, -1047972, 627602, -607201, -1321239, 1165547, 1920387, -499827, 872415, -938450, -957241, 454193, 858993, 198642, -637266, -1815697, -564251, -1093606, -508417, --134218, 574989, -339302, 692027, 377420, -158377, 4769025, -371515, -9002251, -4190814, --1746441, -1948305, -4900021, -4501126, -2826089, 4879083, -5360656, -2503429, -2545305, 981400, -8140037, -1221918, -645319, 1990717, 4659503, -7123204, -1160715, 1453846, -3143379, 2515240, -3984119, -4392141, -269509, 566399, -2552284, -6465000, 1126892, -2721936, 878858, -2506114, -3702799, -4463545, -4164508, -10260677, -2763275, 3528853, -569620, -3936875, -1937030, -494995, --4123706, 208306, -692027, 2835752, 2246268, -1062468, 132607, -1049583, -4352950, 5320928, -931471, 3596498, -1315871, 13422, 940598, 1556389, 4126390, -1320166, -990527, 1219234, --111132, 4499515, 2410014, -3889630, -1538135, -970126, -6153078, -692027, -576063, 3664144, --2354179, 3339337, 580357, -116501, -336081, -587874, -658204, 712428, -2478196, 1154809, --1425929, 1255204, 1078037, 483184, 315143, 3586835, 2639794, -658741, 3273302, -443455, --1091459, -1037235, 647466, -233539, 2243584, -578210, 1404454, 1133335, -189515, 950262, -8590, 995359, 993748, 288300, 347892, 1077500, 728534, -1473711, -801011, -155156, -1825361, 2021319, 16643, -214748, 1108638, -19805168, -6204081, -1748589, -1602560, -1653562, -7642895, -7051800, 3391951, -1642825, 1549410, -2011655, -1642825, -5675800, 926102, -2065879, -423054, -8240432, 158377, -836445, -1484985, -125628, 1541356, 1258962, -790274, -554588, --3316252, 1031329, -2664490, 1758252, -13422, 1503775, 5140002, -1335198, -5912560, -2510409, --6921877, 971200, 1234266, -610959, 1184874, -2397666, 2303176, 1207423, -3073049, 282394, --8319352, -1752347, -5568425, 3060164, 5481452, -4819490, -391916, 1597191, 830539, -7902740, -1309965, 4097399, -3817689, -1787243, -9055939, 3094524, -1320703, 3764539, 6686727, 3846680, --5397700, 1169842, 1260573, 325881, -6000070, 1577864, -2565169, 4019016, -1624035, -158914, -1858647, 1661079, 4699768, 5397164, 3654480, -233539, 1344325, 3233037, 1603633, -3117073, --661962, -2064269, -2128156, 1009317, -101469, 562641, 42413, -579821, -186831, 1979980, --643708, -581968, 47245, -493921, -1427003, 1804960, 60130, 885837, 2114735, -205085, -229781, -1608465, 1070521, 803159, 165893, -1614371, 549756, 89657, -12217571, 1311576, -2234457, -4431333, -502511, 11948062, 9351754, 5016522, -1297617, -2211371, 6005438, 3704946, -1952063, 2224256, -4767951, 1611687, 507343, 5602248, -5337571, -2492692, -985158, 676457, --1059246, -6240051, -4167192, -4400731, -5121212, 2827162, 3503620, 2194728, 1576790, 81604, -1541893, -810675, -629213, 363998, -1837172, -566399, 2760053, 2092723, -4179003, -4734128, --399432, -4748087, 2865280, -1459752, -7943005, 938450, 4096862, 5725729, 4016868, 199179, -3797288, -5718749, -1793149, -2566780, -362925, 379031, 2589865, -1983738, -5181341, 6331319, --5730560, -2782065, 3962107, 9164386, 2203855, 1797444, -8935143, 9681930, 1191317, 6743099, -10442676, -2315524, 1140851, 1196685, -4233227, 8608188, 2047626, -2843805, 2407866, -1222455, -4283693, -7109245, -3754338, -7264401, -1381369, -3230352, 2932389, -1853815, 1262184, -3413425, --845572, -679142, -2157147, -162672, -796180, 875636, -134755, -964757, -479963, -444529, -1737851, 447213, -1284195, -2966749, 1672353, 1621887, 322123, -18254, -27917, -1240709, -542240, -835371, 1810329, 318364, 1027571, -1043677, -1168231, -2359548, 18537078, 13058848, --4655745, -6803765, 10293963, 6711960, 10834592, 15912317, -8016557, 5521718, 2668785, 4628364, -2090039, 2785823, 6597607, 1649268, 6737193, 234076, -4274566, 1817308, -1365800, 2278480, --779000, 12356621, 2105071, 2732136, 1693291, 499290, 4340065, 1846299, 272730, -784368, -3111704, -2378338, 5925981, -4597226, 7130720, -3352759, 4320200, 2257542, 2647847, 2092723, -10459319, 7986492, 519691, -2243047, -5641977, 6190659, -6881612, 1736241, -3000035, 3047279, -6553583, 789737, -10923712, -8877161, 934155, -5522791, -5974837, -3454764, -6892349, 2465311, -11989938, 6009196, -4395899, 277025, 1395328, -3139084, -3517578, -585189, 5892695, 6538014, --6928319, 3285650, 7686381, 1525250, 2534568, 3701725, 5989869, -1035624, -4078072, 1585380, --1752884, -355409, -3913789, 3615826, 5660230, 857920, 1016297, 774168, -3963718, -584116, --65498, -452045, 402116, -635655, 652835, 474057, 1938104, 190589, -35970, 165356, -1243930, 2123861, 1112933, 2248952, 1234803, 398358, 662499, -501437, -3697967, -3850438, -773631, 2797634, 717260, -863825, 681826, -518617, 1774358, -1446867, -1316408, -2425583, -1039382, 8117488, 1600949, 11772505, -994822, -185757, -3876745, -3211025, 4012036, 8899172, --2560874, 2327872, 690416, 9646497, 4060355, -4553202, -4112968, 593779, 2086817, 8763881, -8688719, 13102871, 2447058, 3619047, -2246268, 5320928, 6153615, -2401424, -2952790, 4686883, --3558381, -5068599, 4797479, 1393180, -5759551, -7181722, 10941966, 5418638, -290984, 6903086, -1432372, -4898947, 10400263, -2448131, 397821, -279710, 2763812, -3787088, 2765422, -3791919, -2695629, -3523484, 3251290, -2885144, 4393752, -3630858, -3569655, 9589588, -11940546, 655519, -1527398, -4155381, 906238, -13545790, -6545530, 6447283, -5289252, 3955665, -1332514, 2664490, -1284732, 2283849, 1534914, -6146635, 3411815, -3577171, -295279, -7802345, -4106526, -1960116, --1744831, 2212445, 7464117, 4245039, -5794985, 2279017, 1280974, 48318, -2717641, 401579, --410169, 1440962, 816581, -1502702, -1869385, -783832, -416612, -1138166, 4391604, 792421, --1479616, -908386, 1167157, -1736241, 337155, 863288, 214212, 244276, -4325569, -1803886, --954020, 693637, -1080184, -162672, 3011846, -9571335, -8298414, -1074, 3562139, 6760816, --7859254, 2289218, -7064148, 5851356, 4433480, -9641128, -2027761, 1077500, -11369315, -6416681, -6889128, -855235, -511101, 1676111, -733903, -11840688, 10846940, 742493, -7713762, -3702262, -1428077, -951872, -7413651, -2171106, -4267050, 1276142, -386010, -2309619, 2357400, -10253161, --4592931, 2712809, 13458280, -2201708, -7929584, -5546951, -4421132, 9223979, -9780714, -1899449, --689342, -10384694, -13019656, 3257196, -9026948, -1376537, 1338956, 6917582, 3828963, 621697, -1480690, 8250096, -3541738, -2495913, 12138114, -8047695, 6322192, -2719788, -3035468, -1171452, --1465658, 13023415, 303332, 5105106, -13334263, -9609452, 328028, -1865090, 14908368, 551903, -10168335, 4350802, 12715788, 7781407, -1917166, -8773008, -3315178, 6019397, 2603287, 4089346, --4897337, -5459977, -1519345, -1788854, 2646237, -1291711, -3562139, -573378, -855772, 39728, --425202, 555125, -1444183, -1903207, 2442763, -103079, 171262, -606127, -1058173, -769873, -679142, 2138894, -2150168, 561030, -1310502, -1901060, 1420024, -516470, -1814624, -2079301, --393526, 2088965, 236223, 328028, 790811, 3714610, -3055332, -2498060, -1539746, 361851, -1504849, -15947214, 1510218, -1562831, 10891500, 1270774, -11601244, 13816373, 4418985, -8105140, --17808546, -7403987, 17537962, 876710, -2259690, -2936684, 1780264, 583579, 5389110, 2873870, -5776194, -1256278, 10339060, -5348845, -12247636, 521839, 539555, -2905546, -470299, 4583804, --3163244, -1864553, -1089311, 9775882, 7562901, 3932043, -743029, -13301514, -277025, -689342, --573915, -2206003, -233002, -5816997, -10869488, -1694365, 7449621, 7269232, -2747169, 7809861, --2531346, 3378529, 8564165, 8212515, -18125836, 6222334, 6525129, 2720862, -4425964, -15874736, -9628243, 5701032, 3072512, -5654325, -3175055, -6403796, 3554622, -7104950, -1326608, 142808, -6480032, -4006131, 3298535, 1812476, -11618423, -1581085, -7765838, 12750147, 5905043, -14935212, --3171297, 11876658, 5908802, -6135361, -3073586, -6778532, -2295123, 3570192, -2073932, -789200, --2593087, -3235184, -5682242, 1138166, 454730, -1789391, -572304, 2955474, 1973538, -3550327, --1264331, 2682744, -689342, 2063732, -2357400, -1598265, -450972, 581431, 3063386, -3190624, --2288681, 1686848, -3663607, -235686, -2578591, 1629403, -2042794, 3586835, -1227824, -573378, --1796370, 2310156, 1539746, 4082367, 1271310, 9846213, 12270185, 12350715, 9648644, 12106976, --15260019, -10167798, -5196374, -5106179, -7253663, -5760088, -12229383, -4305168, 933619, 7230041, -93416, -7184407, -231391, 7221988, 456877, -6220187, -2762201, 16586627, 1717987, 6153078, -2021319, 6775848, 1499481, 2107755, -10193031, 5599564, 472446, 2236604, -10691784, 3587908, --16468515, -151398, -5154498, 3956739, -1436667, -12241731, -216359, -12186970, 2280091, -10154376, -9204115, -5337571, 14426258, 290984, -196495, 7075422, 1621350, -2435783, -2047626, 2765422, --4844186, 3226057, 8919573, 4365835, -6531572, -3616899, 19042812, 1286343, 15199352, -14207752, --2898566, -1657857, 11068668, -12421582, 1780801, 5696737, -12137041, 8338142, -7607461, 2054605, -11889006, 1104344, 6714645, 2981244, 15517717, 6522982, -6385006, -5236639, -6152541, 753767, -621697, 6325950, -3843996, -922881, 4274030, 111669, 3299609, 4269198, 638876, -3780645, -4302484, 3091840, -404264, 1135482, 1449015, -1781338, -1278827, -5284958, 3398930, -2639794, --2280628, -1205812, -2647311, 2277943, -1808718, -826244, -2843268, -914828, -656056, 3356517, -2532957, -345208, -601832, -443992, 1999844, 2218351, 2119566, 4357781, -569083, -4679904, --15323370, 2284386, 15000710, 11165841, 12264279, -4098473, -3110093, 3028489, -2088965, 15106474, -5102421, 7178501, 12792560, -958851, 4811437, -8701067, 12741020, 6313065, -3162170, -7830799, --7211787, 8486319, -14709726, 5717675, 8524973, -6206228, -8197482, -4749160, 7952669, 2910914, --2954938, -5457293, 141197, -9148280, -13630616, 2424509, -13082470, -19616726, -2425046, 683974, -19841138, -8621610, -6721624, 8740258, 14624901, 14523969, 7810935, -978179, 3417183, -6393059, -1155883, -6700149, 16342887, 14292577, 9358734, -770947, -16658031, -215822, -14224932, 15602542, -12235288, 7465190, -11807402, 9630927, 5576478, 6622840, -2193655, -10166724, -7272990, -8166344, -2739652, -11424613, -20628728, 3891777, 14011794, 7235946, 13755707, -4365835, -3776350, 13701483, -4634270, 1684164, 9235790, 2856690, 271657, 7748658, 5004711, -947040, 3631932, 3235721, -2087891, -2852395, -4562329, -6249715, 1607392, 3654480, 2248952, 7786776, 197032, 5476620, --1816771, 2098629, 4514011, 371515, -2092723, -1495186, -6678674, -5978595, 1988570, 1182190, -2632278, 6693170, 1005559, 5017596, -2029372, -1444183, 886374, -5393942, -4050154, -1775969, --4345970, 1746978, -1465658, 1352915, 3847754, 5149129, 7653095, 12665859, 26687316, 12115566, -9191230, 8915815, -16829292, -2442763, -6279242, 21429202, -21798570, -20322174, 5674726, 14042932, --590558, 17136382, 15193984, -574989, 5720897, -10024454, -7554311, 16294569, -6571837, 11244224, -3713536, -7024419, -3962644, -3029026, -3770981, -7337952, 6052683, 6845104, 5380521, 672162, --8598525, -10627360, 13728863, -13574244, 10580652, 1140314, -17131550, 8665097, 15897821, -186831, --4599910, -1906429, 1086627, 1065152, 10773925, -442919, -8491150, -3314641, 9132711, -16919486, -3890704, -2728378, 13638132, 14756434, 9538049, 11577084, 14845554, 10959146, 3710315, -9674414, --11275363, 5461051, 7123204, -409096, 6138582, 8807904, 22741852, -12847858, 14304389, -8501888, --5741298, 15921444, 2174864, -9326521, -8462696, -8597451, -14408542, -4729296, -7164543, 11453604, -42413, -8959302, 4731980, 3258270, -2171643, 5430450, -11046119, 7167227, 224949, -906775, --1399086, 6103686, 799401, 1682554, 6023692, -2503966, 784368, 4674535, -7160784, 4978404, -40802, 1914482, -3335579, 3985730, -1624571, 549756, 5099737, 110059, -1532767, 1451699, -3358665, 4631049, 7341173, 6266894, 2008434, -3432216, -3170760, -10712185, 2134599, -8911520, --2913062, -3841312, -3954591, 4327717, -17890686, -3190624, 10407243, -12841415, 405874, -8077760, --14133127, 20557324, 17569100, 14694694, 6962142, 3833258, 5779952, 15093589, 8333847, 15474230, --5730560, 12961674, -9764071, 15697032, 21075942, 13220983, 10534481, 5369783, 10881300, 10968273, --3259343, 21821118, 5237176, -13153874, 6241125, -13317620, -9163313, -2726231, -20720532, 359704, --4418448, -5614596, -10073846, -5235029, -2894271, -643171, -2044404, 903017, 865973, -11889006, --7854959, 2467996, -6280853, 4942971, 20405926, -10284836, -830539, -1935957, 754304, -9751186, -5257040, -4682588, 15796353, 3365107, 9435506, 14775224, 2522757, -977642, -9742060, -21686900, -2864743, 16149077, 11720966, -3052111, -14454176, 12182675, 1284732, 7340099, -18504866, -13283797, --12184822, -18350248, -11360725, -13424994, 6256694, 1988033, 4700842, 6127845, 8475581, -4141959, -8627516, 9808632, 312996, 5273683, -3143916, -6511171, -6699075, -7049652, -2816962, -5140539, --308164, 1548873, -673236, 463320, 1314260, -5967320, -5508296, -9447854, -3228205, -2195265, --5245229, 2070711, 792958, -2797098, -8533026, -3938485, -3142306, -2214056, 7138236, 2167348, --3100967, -3952981, -1424319, -10266582, 2810519, -2104534, 5310727, 587874, -3214783, -6065031, -6321118, 8983998, -30671436, -19676856, -9319005, 21912386, 16006269, -11907260, 13722957, 12337294, -10573136, 10302553, -10260140, 1035624, 5991480, -10253698, -30890478, -5658083, -8540542, -18973018, -1759326, -6477348, -4806606, 5793911, 3498251, -4223027, 961536, 14496051, 15558519, -28512678, -6834367, 1454383, 13247827, 4494684, 777926, -17751636, 5480915, -4546223, -4871030, -12203076, --9019968, 22856206, -10307385, -398358, 2787434, -6024766, 25333864, 12014634, -11182484, -6786049, --19704236, -2831994, 18968724, 5571110, 5789079, -6179921, 11618960, -2691871, -4907000, 10661183, --6218039, 17658758, -4061429, 13166759, -26681410, -9025874, 15420006, 3811784, -2374580, 4358318, --29521458, -13955422, 4593468, -11765526, 4619774, 1257352, 3386582, 18220862, -6697465, 7390565, --1335735, -14695231, -2459943, 11244224, 16287053, -447750, -6673306, -12438762, 455267, -17393006, --5572720, 1592896, 20669530, 18424336, 2622615, 7792145, 2429341, -2983392, 10311143, 7785165, --3910568, 8538932, 6514392, 3480534, -6939057, -396211, -3526168, 6264210, 4456029, 5586142, --302258, -8272644, 8050916, 466541, -3735548, -8048232, -220117, -548682, -7522635, 5513665, --5413270, -8783745, 10242960, -3901978, -3200288, -4377646, 2452426, 1555315, 8275865, 1898376, --1142998, 3468186, 5227512, -8885750, 2738579, 5987722, -13793287, -38021196, -3682935, -4229469, --4591320, 6287296, -15767899, 30518964, -5935645, 1722819, 32788318, -38732016, -4512400, -7282117, --4176856, -44426604, 2047089, -6577743, -9115531, 15538118, -15839303, 2700998, 2473364, 7578470, --1875827, -15993921, 10697690, -10397042, 22804128, -3689914, -26868778, -1634235, -1371168, -13013214, --27074936, 12242267, 13049721, -21968758, 17687750, -19844360, -16156056, -9351218, 1256278, 1896765, -2494839, 13129715, -2947421, -11992086, -29504814, 6174016, -39710192, -20575578, -13995688, -31163746, --19127636, -8812736, -2456185, -14508936, 21921514, 23331336, 4598300, -6734509, 24968256, 11725261, --3453691, -5535676, 17819282, 13756780, -6816113, 24496882, -20942260, -10248866, 26002806, 12693776, -36693516, -20147154, -23460186, 6123550, -17979806, 18949396, 1446867, 6720013, 34835404, -19327352, --21496312, -7511898, 6778532, 8271570, 8334921, 9255655, 9670656, -10705206, 3723200, 1863479, --1370632, -1066226, -7904351, -5628555, 9724343, -10985453, -1174137, 2455648, -6022618, 1588064, --6168110, -209917, -1231045, 2511482, -9592273, 4755066, 10529649, 3490735, 2036351, 12527883, -8411693, -689879, -12588549, 11090679, 2083596, -3959423, -9580998, 11497627, 981937, 512175, -6174016, 8938901, -12052215, 6021544, 2923799, -7960185, -4131222, -12829604, 8270497, -1736241, --14047764, -7316477, 3735548, 29721174, 17149804, -2957085, 40585832, -4849555, 16740172, -19288162, -23742042, 22069690, -1899986, -18049064, 2010582, 6272263, -9853192, 10376104, -14435922, -419833, --4351876, -4961224, -16421271, -12280922, -7405598, -1191317, -5236102, -13175886, 19427748, 13071733, -3704409, -5570573, 3414499, 18415210, 8875550, 13489955, 8719320, -10334228, -15610596, 31616864, --4038880, -17531520, -7118909, -7618735, -4028679, 22844932, 1114007, -17877802, -6645388, -44214540, --10725607, -5310727, 27277874, 18606872, -53429392, -23207318, -12899934, -407485, 2818572, -21514564, -15874736, 8290361, 13833553, 26735634, -35001836, 34250752, 24816858, -11289858, -23461258, 1385664, --5752035, 9037148, 31429496, -16324634, -18009334, 25411174, -29921426, -33743412, -13414793, 3344706, --9504763, -36961416, -14779519, -12011413, 694174, 1933809, -10427107, -826244, 1712081, 365072, -3262565, -23379118, -8069170, -7791071, 1617592, 6446209, -1613834, -7514582, -4224101, 2419677, -12006044, 12656195, -1657321, -11087458, -2761127, 16125992, 1069447, -4250407, 3479997, -21978958, --6354404, -10383083, 1555315, 3767223, -21180632, -21712670, 5509906, 18851686, -8004746, 12337830, -3910568, -6082748, -1674500, 5013838, 3884261, -1777043, 3858491, 27977416, 3863323, 10465225, --21819508, -34675956, 50068044, 24947318, 2355253, 3195993, -11161546, -29512330, 10408853, -2374043, -25318832, 5559835, 9448928, 27584964, 15385110, -397284, -2869575, 4591320, -16787954, -13960791, --17855252, -10097468, 16684874, -4634807, 1128503, 20676510, -3489661, 9020505, -28765544, -26004416, --17505750, 14891188, 6171868, -1051730, 6938520, -9265318, -25861072, 32651416, -31030602, 14238353, -14863808, 11549167, 5272073, 19728932, -12716861, -31918586, 23596014, 66597228, -11687143, 32161252, --38742216, -21049098, 24061480, 13933948, -35964984, -10266046, -2972654, 31170726, -7713762, -3510062, --48928804, -31615254, -11190000, -36106716, 30146912, 31929860, 50657528, -44937704, 19326280, 5475547, --24850144, -1574106, -1117765, -51903608, 36981280, -15518254, 17495012, -5462125, 2937758, 69902200, --18858128, 24147380, 16127065, -17131550, 30602178, -210453, -5810017, 1692217, 7952669, 19551764, -12153147, 7666517, -614180, 18488224, -17426292, -8820789, 1561758, 4471598, 8760660, -5005785, -15181636, 1817308, 6803228, -3162707, 11535745, -1193464, -16642998, 9392557, -20463372, -12402792, --4662724, 8566312, -2068564, 10268193, 24206972, 36911484, 26975616, 7109245, 17413944, -10252624, -8943196, -926639, -580894, -1887101, 3783866, -8018704, 10390063, -9882183, -44627396, -25302726, --922344, -6758668, -14957760, 5422933, 14388677, 1493038, -15808701, -793495, -15154792, 41043780, --12607876, 944356, 31110058, -1744294, -31919124, -22201222, -21817896, -9659918, -11617350, 34195992, -3541201, 5645198, 17040282, -9365176, -9545028, -5738613, -9730248, -20845624, -4901632, 39198556, -12645457, 9322763, -26047902, 9617506, 2039573, -18543522, -2166811, -9287867, 42526620, -33627984, --29038810, -10223633, 5303748, -10011032, 1295470, 11492796, -22141094, -5936182, 36025112, -29018410, -5098126, -7262253, -17649094, -30778272, -23528904, 1154809, -42876660, -51833276, 12305081, 10634339, -8324184, -46315316, 35775468, 43476344, -14759655, -12572980, 2709051, -1797444, -9800578, -24057722, -17437030, 65597572, 17022566, -16193637, 314606, 10424959, 21876416, 5936182, -38816840, -34603476, -37494528, -7171522, -15351287, -22603340, 7779260, 42874512, 13121662, -13547401, 7895224, -1658394, --7642358, -3744675, -2302639, 18973018, 10477036, -6444599, -10503343, 8589398, 4968741, -1591285, --4354023, 6943889, -10160282, 6306086, 16425029, -1510755, -9108015, -2731599, -5870147, -9949292, --18422726, 2685428, 14031658, -9397925, -11627550, 5735392, -14509473, 85899, -23591718, 11317776, -14674830, 37556804, -11977590, -5115843, -15573551, -15952582, 4483409, 8275328, 15600395, -1881733, --3405372, -15748571, 6308233, 3877819, 4699768, 9933722, 11427834, -14187888, -37455872, 10375030, -14631343, -55451784, 30376694, 1328756, -15811385, 5341329, 20236276, -28643674, 17701170, -26594974, -7184407, -1514513, -13422310, -7424925, -3636764, -19568944, 14039711, 12323872, -573915, 6813429, -852014, 10908143, 14179835, 13755707, 20338280, 17516488, -10814191, 2764348, -22193170, 23571318, --18194556, 5806259, -3506304, 4842576, 1154273, -16761647, 15289010, -8471823, -16243566, 34129420, --27267136, 8240432, -7859254, -13501767, 13761075, -3497177, 4089346, 21289080, -25661892, 1093606, --31442918, -61914636, -1568737, 19801946, -7429757, 79709760, 16232292, -31072478, 8768176, -43371652, -15099494, 31124554, 36719824, -12563316, -7219303, -48223356, -55319716, -4600984, -34478924, 8229694, --2153389, -30059940, -7025493, -14857366, -32937030, 27064736, 53167400, -14858439, 3780645, 11519102, --14062797, 16495896, 20984674, -14500883, 2469606, 105764, -26421028, 13268765, 2270964, 8087424, -9720585, -18641232, 7361037, -9865540, -14958297, -16939888, 14492830, -10492068, 5988258, -16374026, --5876589, -1068373, -19983946, 19676318, -12646531, 3977140, 6046777, -18619220, -2983392, 14444512, --1641751, 2101313, 3269544, -5404680, 8910983, 18629420, -2153389, 10841034, 12794171, -15829639, --30061012, 10241886, 4296578, 17448842, 20932596, -27201102, -26673358, 4728222, -39508332, 8123394, --2848100, -23068806, 10400800, -14986215, -10074383, -18621368, 9517648, -20275466, 25973278, -2777233, -9639517, -5998459, 34878892, -9484898, 19173270, -329102, 22852984, -6382859, -11480448, 7436736, --12997108, -13789529, 1915555, 25948582, 16738024, -17681844, 18924162, -13263396, -20252382, 5718749, -27814746, -10685342, -11265162, 14848776, 6716255, -13833553, 1603633, 18893024, -7821673, -18174690, -9960029, 7579007, 11668889, 21279416, 4522064, -12833899, -4161287, 46743204, 49159120, -13562970, --40596032, 31192736, -13530221, 8807904, 4490389, 52641804, 7305203, -27300960, -9910637, -6602439, -1556389, 8164733, 12780749, 17126718, -20240034, 6553047, 4704600, 30539902, -7526394, 21528524, -23217520, 12838194, 11121818, 6703370, 18511846, -17615272, 19915764, 25262460, 18294414, 3123515, --35633196, -5288179, -22942104, 1125818, 15584289, 5260798, -7766375, -12493523, -7236483, -1937567, --794032, 6620155, -7285339, 2080375, -649077, -5532992, 11009612, 4318053, -9631464, -4527433, --2376191, 13377213, 125628, 2808372, -12666932, -9076877, -16844324, -7904888, -896038, -1523640, -374199, -2868501, -15074261, 4020626, -5050882, -2395518, 2414845, -4146791, -57445, -13085692, --2979634, 664109, 372588, 394600, -3195456, -3207804, -981400, -5108327, -7243463, 55684252, -23128398, -24858196, 5847598, -25978110, -14406931, -1596117, 9269076, -3980361, 20126754, -24008330, --956704, 9751723, -1017907, 10134512, -1647657, 3687766, 2120103, -17146046, -5652714, 4764730, --16393353, -16099685, 1167694, 4405026, -11716671, 8451422, 7757785, -4642323, -8341900, -1087701, -1561221, -2636036, 6637335, 1972464, 5185636, -6931004, -3234110, 12908524, -193274, 874026, -5928129, -3875134, 6580964, -6252399, -12225624, -7583302, 12212740, -9639517, -7454990, 999654, --9982041, -10332081, 14902463, -14796699, 23674934, 5472862, -10787347, 10695542, 1457605, -17456894, -1345935, -2924873, -3304977, 8649527, -472983, -10138270, 20111184, -11935714, -4931160, 10769094, -3178276, -4172561, 321049, 3509525, -539555, -597000, -2302103, 4932233, 8237748, -63351, --14280229, 10342818, -7463580, -824097, 11844446, -528281, -3888556, -226560, -10612864, 5304822, -3400540, -889595, 27380, 4517769, -10339597, 1009854, -3677029, 1294396, 3990562, 1349694, --4512400, 10213432, -15316390, 2254321, 1582696, -799401, 1668058, -1949378, -8737037, 9687299, --4571993, 6999723, -90731, -822486, 8664560, 3589519, -7626788, 3081102, -3946001, -2953864, -1500017, 5893769, 5513128, -1962263, -7530689, 4030290, -4372277, -33574832, -40375912, 34054796, -137916768, 53965728, 63273460, 869194, -129125504, -95083600, -49707804, -75767520, 34001644, 65270080, -26913876, 115376784, 65284576, -4322885, 27121108, -58306864, -117659016, -46937012, -81719808, -13043279, -56630756, 47723528, 43191800, 71928888, 44377748, 12225624, 19767050, -5328444, -83713744, -36973764, --30141006, -115656488, 21472688, 15196668, -51357072, 83361560, 82481088, -2780455, 104355360, 51337208, --48446696, 32411970, -48163228, -100250440, -7935489, -60540784, -87738664, 15548318, 9411347, -5200132, -81851336, 78947408, 47149616, 70283920, 42714524, -27271432, -30760018, -54695336, -93787056, -69177424, --33005214, -30909270, 16856136, 53028352, 36238788, 58257472, 87923888, 34253436, -11530377, -10939819, --60773252, -49038864, 4533338, -56297356, -25558814, 30642444, 7570417, 38345468, 30822832, -15623480, -10299332, -3092913, -20959978, 4721243, -9336185, -9412958, 19477140, 6826851, 8272644, 25963078, --14822469, -5679558, 14105209, -19196894, -15781320, 7432978, -46141372, -7581154, 15913391, -37124624, -18300318, 23379118, 2555506, 58543088, 55650428, 12910135, 22645216, -16091095, -49568216, -24765318, --65993784, -74876848, -42454676, -17945448, 14334990, 71711456, 83000776, 87012280, 77242304, 44232796, --9462350, -48297980, -76620608, -106884016, -91475824, -50193672, -12891881, 43451648, 77698104, 77627240, -69367480, 45273252, -8191040, -13551159, -21918828, -33120104, -23543936, -20556250, -24495272, -12923020, --6561637, -5403606, 5477157, 15188078, 19863150, 25978110, 23922430, 19169512, 8951249, 2305324, --7988639, -10641318, -11562052, -6452652, -3611531, 23085, -782758, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +2767033, -4361540, -995359, -1613297, -139586, 6528887, 375273, -2796024, 3442416, 699543, +352187, 1146756, 723702, 55835, 4913443, 2767033, -3324305, -1284195, -381178, -1170916, +1378685, 2094333, 1409286, -1427003, -2123325, 813896, -4277788, -1948841, 3213709, 279173, +2587718, 1320703, -2086817, 1577864, 28454, -1846299, 4512400, -3022583, -1418950, 572304, +1552631, -2068027, -542240, -2968359, -5867462, 5485210, -1100585, -3064459, 323733, 5042292, +5369, 1948305, -2508261, -1471563, -1034550, 1546188, -1983738, 4031364, 637803, 3636764, +-5286568, 2231773, -1373853, 878858, 2245731, -916976, -588947, -3911642, 27380, 2106682, +479426, -1094143, -184147, 1874216, -994822, -1046898, 2962991, -1357747, 940598, -569620, +-177704, -3652870, -1498407, -1001264, 1330903, -280247, -1625645, -287763, -331249, -1032940, +970126, -1234803, 80531, 266288, 623844, 980326, -433255, -892816, 928250, 177167, +-668941, 111132, 1581622, -223875, -153008, 621697, 54761, 199716, 256624, -496606, +-856846, -504122, 676994, -174483, 76236, 317828, -459025, 425202, 10737, -295279, +13784161, 4725538, -1090922, 3732327, 190589, 6801081, 4273493, -954020, 3496640, 6106907, +7987566, -4714801, -4614406, 1962800, -1861868, -1542967, 5711770, 4616553, 4396973, 3139084, +591095, -179852, -1994476, 2179696, 1522029, 7276749, 736050, -157303, -3218541, 1515050, +2130841, -414464, -992137, -1138166, 1973001, -288300, -1173600, -2664490, 2825552, -948114, +-956704, 4018479, 5700496, -1469953, -699543, 3296924, 2949569, 5223217, 3235184, 1435593, +536871, 4447439, 2515777, -6131066, 5369, 1882269, -3533684, 92342, 576599, -4373888, +2226404, -2123861, 3278671, -707059, -567473, 1764695, 566399, -3017215, -270583, 1675574, +-594316, -746787, -877247, 325344, 3488587, 615791, -3515968, -835908, 824634, -1048509, +-448824, 5163088, -1047972, 627602, -607201, -1321239, 1165547, 1920387, -499827, 872415, +938450, -957241, 454193, 858993, 198642, -637266, -1815697, -564251, -1093606, -508417, +-134218, 574989, -339302, 692027, 377420, -158377, 4769025, -371515, -9002251, -4190814, +-1746441, -1948305, -4900021, -4501126, -2826089, 4879083, -5360656, -2503429, -2545305, 981400, +8140037, -1221918, -645319, 1990717, 4659503, -7123204, -1160715, 1453846, -3143379, 2515240, +3984119, -4392141, -269509, 566399, -2552284, -6465000, 1126892, -2721936, 878858, -2506114, +3702799, -4463545, -4164508, -10260677, -2763275, 3528853, -569620, -3936875, -1937030, -494995, +-4123706, 208306, -692027, 2835752, 2246268, -1062468, 132607, -1049583, -4352950, 5320928, +931471, 3596498, -1315871, 13422, 940598, 1556389, 4126390, -1320166, -990527, 1219234, +-111132, 4499515, 2410014, -3889630, -1538135, -970126, -6153078, -692027, -576063, 3664144, +-2354179, 3339337, 580357, -116501, -336081, -587874, -658204, 712428, -2478196, 1154809, +-1425929, 1255204, 1078037, 483184, 315143, 3586835, 2639794, -658741, 3273302, -443455, +-1091459, -1037235, 647466, -233539, 2243584, -578210, 1404454, 1133335, -189515, 950262, +8590, 995359, 993748, 288300, 347892, 1077500, 728534, -1473711, -801011, -155156, +1825361, 2021319, 16643, -214748, 1108638, -19805168, -6204081, -1748589, -1602560, -1653562, +7642895, -7051800, 3391951, -1642825, 1549410, -2011655, -1642825, -5675800, 926102, -2065879, +423054, -8240432, 158377, -836445, -1484985, -125628, 1541356, 1258962, -790274, -554588, +-3316252, 1031329, -2664490, 1758252, -13422, 1503775, 5140002, -1335198, -5912560, -2510409, +-6921877, 971200, 1234266, -610959, 1184874, -2397666, 2303176, 1207423, -3073049, 282394, +-8319352, -1752347, -5568425, 3060164, 5481452, -4819490, -391916, 1597191, 830539, -7902740, +1309965, 4097399, -3817689, -1787243, -9055939, 3094524, -1320703, 3764539, 6686727, 3846680, +-5397700, 1169842, 1260573, 325881, -6000070, 1577864, -2565169, 4019016, -1624035, -158914, +1858647, 1661079, 4699768, 5397164, 3654480, -233539, 1344325, 3233037, 1603633, -3117073, +-661962, -2064269, -2128156, 1009317, -101469, 562641, 42413, -579821, -186831, 1979980, +-643708, -581968, 47245, -493921, -1427003, 1804960, 60130, 885837, 2114735, -205085, +229781, -1608465, 1070521, 803159, 165893, -1614371, 549756, 89657, -12217571, 1311576, +2234457, -4431333, -502511, 11948062, 9351754, 5016522, -1297617, -2211371, 6005438, 3704946, +1952063, 2224256, -4767951, 1611687, 507343, 5602248, -5337571, -2492692, -985158, 676457, +-1059246, -6240051, -4167192, -4400731, -5121212, 2827162, 3503620, 2194728, 1576790, 81604, +1541893, -810675, -629213, 363998, -1837172, -566399, 2760053, 2092723, -4179003, -4734128, +-399432, -4748087, 2865280, -1459752, -7943005, 938450, 4096862, 5725729, 4016868, 199179, +3797288, -5718749, -1793149, -2566780, -362925, 379031, 2589865, -1983738, -5181341, 6331319, +-5730560, -2782065, 3962107, 9164386, 2203855, 1797444, -8935143, 9681930, 1191317, 6743099, +10442676, -2315524, 1140851, 1196685, -4233227, 8608188, 2047626, -2843805, 2407866, -1222455, +4283693, -7109245, -3754338, -7264401, -1381369, -3230352, 2932389, -1853815, 1262184, -3413425, +-845572, -679142, -2157147, -162672, -796180, 875636, -134755, -964757, -479963, -444529, +1737851, 447213, -1284195, -2966749, 1672353, 1621887, 322123, -18254, -27917, -1240709, +542240, -835371, 1810329, 318364, 1027571, -1043677, -1168231, -2359548, 18537078, 13058848, +-4655745, -6803765, 10293963, 6711960, 10834592, 15912317, -8016557, 5521718, 2668785, 4628364, +2090039, 2785823, 6597607, 1649268, 6737193, 234076, -4274566, 1817308, -1365800, 2278480, +-779000, 12356621, 2105071, 2732136, 1693291, 499290, 4340065, 1846299, 272730, -784368, +3111704, -2378338, 5925981, -4597226, 7130720, -3352759, 4320200, 2257542, 2647847, 2092723, +10459319, 7986492, 519691, -2243047, -5641977, 6190659, -6881612, 1736241, -3000035, 3047279, +6553583, 789737, -10923712, -8877161, 934155, -5522791, -5974837, -3454764, -6892349, 2465311, +11989938, 6009196, -4395899, 277025, 1395328, -3139084, -3517578, -585189, 5892695, 6538014, +-6928319, 3285650, 7686381, 1525250, 2534568, 3701725, 5989869, -1035624, -4078072, 1585380, +-1752884, -355409, -3913789, 3615826, 5660230, 857920, 1016297, 774168, -3963718, -584116, +-65498, -452045, 402116, -635655, 652835, 474057, 1938104, 190589, -35970, 165356, +1243930, 2123861, 1112933, 2248952, 1234803, 398358, 662499, -501437, -3697967, -3850438, +773631, 2797634, 717260, -863825, 681826, -518617, 1774358, -1446867, -1316408, -2425583, +1039382, 8117488, 1600949, 11772505, -994822, -185757, -3876745, -3211025, 4012036, 8899172, +-2560874, 2327872, 690416, 9646497, 4060355, -4553202, -4112968, 593779, 2086817, 8763881, +8688719, 13102871, 2447058, 3619047, -2246268, 5320928, 6153615, -2401424, -2952790, 4686883, +-3558381, -5068599, 4797479, 1393180, -5759551, -7181722, 10941966, 5418638, -290984, 6903086, +1432372, -4898947, 10400263, -2448131, 397821, -279710, 2763812, -3787088, 2765422, -3791919, +2695629, -3523484, 3251290, -2885144, 4393752, -3630858, -3569655, 9589588, -11940546, 655519, +1527398, -4155381, 906238, -13545790, -6545530, 6447283, -5289252, 3955665, -1332514, 2664490, +1284732, 2283849, 1534914, -6146635, 3411815, -3577171, -295279, -7802345, -4106526, -1960116, +-1744831, 2212445, 7464117, 4245039, -5794985, 2279017, 1280974, 48318, -2717641, 401579, +-410169, 1440962, 816581, -1502702, -1869385, -783832, -416612, -1138166, 4391604, 792421, +-1479616, -908386, 1167157, -1736241, 337155, 863288, 214212, 244276, -4325569, -1803886, +-954020, 693637, -1080184, -162672, 3011846, -9571335, -8298414, -1074, 3562139, 6760816, +-7859254, 2289218, -7064148, 5851356, 4433480, -9641128, -2027761, 1077500, -11369315, -6416681, +6889128, -855235, -511101, 1676111, -733903, -11840688, 10846940, 742493, -7713762, -3702262, +1428077, -951872, -7413651, -2171106, -4267050, 1276142, -386010, -2309619, 2357400, -10253161, +-4592931, 2712809, 13458280, -2201708, -7929584, -5546951, -4421132, 9223979, -9780714, -1899449, +-689342, -10384694, -13019656, 3257196, -9026948, -1376537, 1338956, 6917582, 3828963, 621697, +1480690, 8250096, -3541738, -2495913, 12138114, -8047695, 6322192, -2719788, -3035468, -1171452, +-1465658, 13023415, 303332, 5105106, -13334263, -9609452, 328028, -1865090, 14908368, 551903, +10168335, 4350802, 12715788, 7781407, -1917166, -8773008, -3315178, 6019397, 2603287, 4089346, +-4897337, -5459977, -1519345, -1788854, 2646237, -1291711, -3562139, -573378, -855772, 39728, +-425202, 555125, -1444183, -1903207, 2442763, -103079, 171262, -606127, -1058173, -769873, +679142, 2138894, -2150168, 561030, -1310502, -1901060, 1420024, -516470, -1814624, -2079301, +-393526, 2088965, 236223, 328028, 790811, 3714610, -3055332, -2498060, -1539746, 361851, +1504849, -15947214, 1510218, -1562831, 10891500, 1270774, -11601244, 13816373, 4418985, -8105140, +-17808546, -7403987, 17537962, 876710, -2259690, -2936684, 1780264, 583579, 5389110, 2873870, +5776194, -1256278, 10339060, -5348845, -12247636, 521839, 539555, -2905546, -470299, 4583804, +-3163244, -1864553, -1089311, 9775882, 7562901, 3932043, -743029, -13301514, -277025, -689342, +-573915, -2206003, -233002, -5816997, -10869488, -1694365, 7449621, 7269232, -2747169, 7809861, +-2531346, 3378529, 8564165, 8212515, -18125836, 6222334, 6525129, 2720862, -4425964, -15874736, +9628243, 5701032, 3072512, -5654325, -3175055, -6403796, 3554622, -7104950, -1326608, 142808, +6480032, -4006131, 3298535, 1812476, -11618423, -1581085, -7765838, 12750147, 5905043, -14935212, +-3171297, 11876658, 5908802, -6135361, -3073586, -6778532, -2295123, 3570192, -2073932, -789200, +-2593087, -3235184, -5682242, 1138166, 454730, -1789391, -572304, 2955474, 1973538, -3550327, +-1264331, 2682744, -689342, 2063732, -2357400, -1598265, -450972, 581431, 3063386, -3190624, +-2288681, 1686848, -3663607, -235686, -2578591, 1629403, -2042794, 3586835, -1227824, -573378, +-1796370, 2310156, 1539746, 4082367, 1271310, 9846213, 12270185, 12350715, 9648644, 12106976, +-15260019, -10167798, -5196374, -5106179, -7253663, -5760088, -12229383, -4305168, 933619, 7230041, +93416, -7184407, -231391, 7221988, 456877, -6220187, -2762201, 16586627, 1717987, 6153078, +2021319, 6775848, 1499481, 2107755, -10193031, 5599564, 472446, 2236604, -10691784, 3587908, +-16468515, -151398, -5154498, 3956739, -1436667, -12241731, -216359, -12186970, 2280091, -10154376, +9204115, -5337571, 14426258, 290984, -196495, 7075422, 1621350, -2435783, -2047626, 2765422, +-4844186, 3226057, 8919573, 4365835, -6531572, -3616899, 19042812, 1286343, 15199352, -14207752, +-2898566, -1657857, 11068668, -12421582, 1780801, 5696737, -12137041, 8338142, -7607461, 2054605, +11889006, 1104344, 6714645, 2981244, 15517717, 6522982, -6385006, -5236639, -6152541, 753767, +621697, 6325950, -3843996, -922881, 4274030, 111669, 3299609, 4269198, 638876, -3780645, +4302484, 3091840, -404264, 1135482, 1449015, -1781338, -1278827, -5284958, 3398930, -2639794, +-2280628, -1205812, -2647311, 2277943, -1808718, -826244, -2843268, -914828, -656056, 3356517, +2532957, -345208, -601832, -443992, 1999844, 2218351, 2119566, 4357781, -569083, -4679904, +-15323370, 2284386, 15000710, 11165841, 12264279, -4098473, -3110093, 3028489, -2088965, 15106474, +5102421, 7178501, 12792560, -958851, 4811437, -8701067, 12741020, 6313065, -3162170, -7830799, +-7211787, 8486319, -14709726, 5717675, 8524973, -6206228, -8197482, -4749160, 7952669, 2910914, +-2954938, -5457293, 141197, -9148280, -13630616, 2424509, -13082470, -19616726, -2425046, 683974, +19841138, -8621610, -6721624, 8740258, 14624901, 14523969, 7810935, -978179, 3417183, -6393059, +1155883, -6700149, 16342887, 14292577, 9358734, -770947, -16658031, -215822, -14224932, 15602542, +12235288, 7465190, -11807402, 9630927, 5576478, 6622840, -2193655, -10166724, -7272990, -8166344, +2739652, -11424613, -20628728, 3891777, 14011794, 7235946, 13755707, -4365835, -3776350, 13701483, +4634270, 1684164, 9235790, 2856690, 271657, 7748658, 5004711, -947040, 3631932, 3235721, +2087891, -2852395, -4562329, -6249715, 1607392, 3654480, 2248952, 7786776, 197032, 5476620, +-1816771, 2098629, 4514011, 371515, -2092723, -1495186, -6678674, -5978595, 1988570, 1182190, +2632278, 6693170, 1005559, 5017596, -2029372, -1444183, 886374, -5393942, -4050154, -1775969, +-4345970, 1746978, -1465658, 1352915, 3847754, 5149129, 7653095, 12665859, 26687316, 12115566, +9191230, 8915815, -16829292, -2442763, -6279242, 21429202, -21798570, -20322174, 5674726, 14042932, +-590558, 17136382, 15193984, -574989, 5720897, -10024454, -7554311, 16294569, -6571837, 11244224, +3713536, -7024419, -3962644, -3029026, -3770981, -7337952, 6052683, 6845104, 5380521, 672162, +-8598525, -10627360, 13728863, -13574244, 10580652, 1140314, -17131550, 8665097, 15897821, -186831, +-4599910, -1906429, 1086627, 1065152, 10773925, -442919, -8491150, -3314641, 9132711, -16919486, +3890704, -2728378, 13638132, 14756434, 9538049, 11577084, 14845554, 10959146, 3710315, -9674414, +-11275363, 5461051, 7123204, -409096, 6138582, 8807904, 22741852, -12847858, 14304389, -8501888, +-5741298, 15921444, 2174864, -9326521, -8462696, -8597451, -14408542, -4729296, -7164543, 11453604, +42413, -8959302, 4731980, 3258270, -2171643, 5430450, -11046119, 7167227, 224949, -906775, +-1399086, 6103686, 799401, 1682554, 6023692, -2503966, 784368, 4674535, -7160784, 4978404, +40802, 1914482, -3335579, 3985730, -1624571, 549756, 5099737, 110059, -1532767, 1451699, +3358665, 4631049, 7341173, 6266894, 2008434, -3432216, -3170760, -10712185, 2134599, -8911520, +-2913062, -3841312, -3954591, 4327717, -17890686, -3190624, 10407243, -12841415, 405874, -8077760, +-14133127, 20557324, 17569100, 14694694, 6962142, 3833258, 5779952, 15093589, 8333847, 15474230, +-5730560, 12961674, -9764071, 15697032, 21075942, 13220983, 10534481, 5369783, 10881300, 10968273, +-3259343, 21821118, 5237176, -13153874, 6241125, -13317620, -9163313, -2726231, -20720532, 359704, +-4418448, -5614596, -10073846, -5235029, -2894271, -643171, -2044404, 903017, 865973, -11889006, +-7854959, 2467996, -6280853, 4942971, 20405926, -10284836, -830539, -1935957, 754304, -9751186, +5257040, -4682588, 15796353, 3365107, 9435506, 14775224, 2522757, -977642, -9742060, -21686900, +2864743, 16149077, 11720966, -3052111, -14454176, 12182675, 1284732, 7340099, -18504866, -13283797, +-12184822, -18350248, -11360725, -13424994, 6256694, 1988033, 4700842, 6127845, 8475581, -4141959, +8627516, 9808632, 312996, 5273683, -3143916, -6511171, -6699075, -7049652, -2816962, -5140539, +-308164, 1548873, -673236, 463320, 1314260, -5967320, -5508296, -9447854, -3228205, -2195265, +-5245229, 2070711, 792958, -2797098, -8533026, -3938485, -3142306, -2214056, 7138236, 2167348, +-3100967, -3952981, -1424319, -10266582, 2810519, -2104534, 5310727, 587874, -3214783, -6065031, +6321118, 8983998, -30671436, -19676856, -9319005, 21912386, 16006269, -11907260, 13722957, 12337294, +10573136, 10302553, -10260140, 1035624, 5991480, -10253698, -30890478, -5658083, -8540542, -18973018, +1759326, -6477348, -4806606, 5793911, 3498251, -4223027, 961536, 14496051, 15558519, -28512678, +6834367, 1454383, 13247827, 4494684, 777926, -17751636, 5480915, -4546223, -4871030, -12203076, +-9019968, 22856206, -10307385, -398358, 2787434, -6024766, 25333864, 12014634, -11182484, -6786049, +-19704236, -2831994, 18968724, 5571110, 5789079, -6179921, 11618960, -2691871, -4907000, 10661183, +-6218039, 17658758, -4061429, 13166759, -26681410, -9025874, 15420006, 3811784, -2374580, 4358318, +-29521458, -13955422, 4593468, -11765526, 4619774, 1257352, 3386582, 18220862, -6697465, 7390565, +-1335735, -14695231, -2459943, 11244224, 16287053, -447750, -6673306, -12438762, 455267, -17393006, +-5572720, 1592896, 20669530, 18424336, 2622615, 7792145, 2429341, -2983392, 10311143, 7785165, +-3910568, 8538932, 6514392, 3480534, -6939057, -396211, -3526168, 6264210, 4456029, 5586142, +-302258, -8272644, 8050916, 466541, -3735548, -8048232, -220117, -548682, -7522635, 5513665, +-5413270, -8783745, 10242960, -3901978, -3200288, -4377646, 2452426, 1555315, 8275865, 1898376, +-1142998, 3468186, 5227512, -8885750, 2738579, 5987722, -13793287, -38021196, -3682935, -4229469, +-4591320, 6287296, -15767899, 30518964, -5935645, 1722819, 32788318, -38732016, -4512400, -7282117, +-4176856, -44426604, 2047089, -6577743, -9115531, 15538118, -15839303, 2700998, 2473364, 7578470, +-1875827, -15993921, 10697690, -10397042, 22804128, -3689914, -26868778, -1634235, -1371168, -13013214, +-27074936, 12242267, 13049721, -21968758, 17687750, -19844360, -16156056, -9351218, 1256278, 1896765, +2494839, 13129715, -2947421, -11992086, -29504814, 6174016, -39710192, -20575578, -13995688, -31163746, +-19127636, -8812736, -2456185, -14508936, 21921514, 23331336, 4598300, -6734509, 24968256, 11725261, +-3453691, -5535676, 17819282, 13756780, -6816113, 24496882, -20942260, -10248866, 26002806, 12693776, +36693516, -20147154, -23460186, 6123550, -17979806, 18949396, 1446867, 6720013, 34835404, -19327352, +-21496312, -7511898, 6778532, 8271570, 8334921, 9255655, 9670656, -10705206, 3723200, 1863479, +-1370632, -1066226, -7904351, -5628555, 9724343, -10985453, -1174137, 2455648, -6022618, 1588064, +-6168110, -209917, -1231045, 2511482, -9592273, 4755066, 10529649, 3490735, 2036351, 12527883, +8411693, -689879, -12588549, 11090679, 2083596, -3959423, -9580998, 11497627, 981937, 512175, +6174016, 8938901, -12052215, 6021544, 2923799, -7960185, -4131222, -12829604, 8270497, -1736241, +-14047764, -7316477, 3735548, 29721174, 17149804, -2957085, 40585832, -4849555, 16740172, -19288162, +23742042, 22069690, -1899986, -18049064, 2010582, 6272263, -9853192, 10376104, -14435922, -419833, +-4351876, -4961224, -16421271, -12280922, -7405598, -1191317, -5236102, -13175886, 19427748, 13071733, +3704409, -5570573, 3414499, 18415210, 8875550, 13489955, 8719320, -10334228, -15610596, 31616864, +-4038880, -17531520, -7118909, -7618735, -4028679, 22844932, 1114007, -17877802, -6645388, -44214540, +-10725607, -5310727, 27277874, 18606872, -53429392, -23207318, -12899934, -407485, 2818572, -21514564, +15874736, 8290361, 13833553, 26735634, -35001836, 34250752, 24816858, -11289858, -23461258, 1385664, +-5752035, 9037148, 31429496, -16324634, -18009334, 25411174, -29921426, -33743412, -13414793, 3344706, +-9504763, -36961416, -14779519, -12011413, 694174, 1933809, -10427107, -826244, 1712081, 365072, +3262565, -23379118, -8069170, -7791071, 1617592, 6446209, -1613834, -7514582, -4224101, 2419677, +12006044, 12656195, -1657321, -11087458, -2761127, 16125992, 1069447, -4250407, 3479997, -21978958, +-6354404, -10383083, 1555315, 3767223, -21180632, -21712670, 5509906, 18851686, -8004746, 12337830, +3910568, -6082748, -1674500, 5013838, 3884261, -1777043, 3858491, 27977416, 3863323, 10465225, +-21819508, -34675956, 50068044, 24947318, 2355253, 3195993, -11161546, -29512330, 10408853, -2374043, +25318832, 5559835, 9448928, 27584964, 15385110, -397284, -2869575, 4591320, -16787954, -13960791, +-17855252, -10097468, 16684874, -4634807, 1128503, 20676510, -3489661, 9020505, -28765544, -26004416, +-17505750, 14891188, 6171868, -1051730, 6938520, -9265318, -25861072, 32651416, -31030602, 14238353, +14863808, 11549167, 5272073, 19728932, -12716861, -31918586, 23596014, 66597228, -11687143, 32161252, +-38742216, -21049098, 24061480, 13933948, -35964984, -10266046, -2972654, 31170726, -7713762, -3510062, +-48928804, -31615254, -11190000, -36106716, 30146912, 31929860, 50657528, -44937704, 19326280, 5475547, +-24850144, -1574106, -1117765, -51903608, 36981280, -15518254, 17495012, -5462125, 2937758, 69902200, +-18858128, 24147380, 16127065, -17131550, 30602178, -210453, -5810017, 1692217, 7952669, 19551764, +12153147, 7666517, -614180, 18488224, -17426292, -8820789, 1561758, 4471598, 8760660, -5005785, +15181636, 1817308, 6803228, -3162707, 11535745, -1193464, -16642998, 9392557, -20463372, -12402792, +-4662724, 8566312, -2068564, 10268193, 24206972, 36911484, 26975616, 7109245, 17413944, -10252624, +8943196, -926639, -580894, -1887101, 3783866, -8018704, 10390063, -9882183, -44627396, -25302726, +-922344, -6758668, -14957760, 5422933, 14388677, 1493038, -15808701, -793495, -15154792, 41043780, +-12607876, 944356, 31110058, -1744294, -31919124, -22201222, -21817896, -9659918, -11617350, 34195992, +3541201, 5645198, 17040282, -9365176, -9545028, -5738613, -9730248, -20845624, -4901632, 39198556, +12645457, 9322763, -26047902, 9617506, 2039573, -18543522, -2166811, -9287867, 42526620, -33627984, +-29038810, -10223633, 5303748, -10011032, 1295470, 11492796, -22141094, -5936182, 36025112, -29018410, +5098126, -7262253, -17649094, -30778272, -23528904, 1154809, -42876660, -51833276, 12305081, 10634339, +8324184, -46315316, 35775468, 43476344, -14759655, -12572980, 2709051, -1797444, -9800578, -24057722, +17437030, 65597572, 17022566, -16193637, 314606, 10424959, 21876416, 5936182, -38816840, -34603476, +37494528, -7171522, -15351287, -22603340, 7779260, 42874512, 13121662, -13547401, 7895224, -1658394, +-7642358, -3744675, -2302639, 18973018, 10477036, -6444599, -10503343, 8589398, 4968741, -1591285, +-4354023, 6943889, -10160282, 6306086, 16425029, -1510755, -9108015, -2731599, -5870147, -9949292, +-18422726, 2685428, 14031658, -9397925, -11627550, 5735392, -14509473, 85899, -23591718, 11317776, +14674830, 37556804, -11977590, -5115843, -15573551, -15952582, 4483409, 8275328, 15600395, -1881733, +-3405372, -15748571, 6308233, 3877819, 4699768, 9933722, 11427834, -14187888, -37455872, 10375030, +14631343, -55451784, 30376694, 1328756, -15811385, 5341329, 20236276, -28643674, 17701170, -26594974, +7184407, -1514513, -13422310, -7424925, -3636764, -19568944, 14039711, 12323872, -573915, 6813429, +852014, 10908143, 14179835, 13755707, 20338280, 17516488, -10814191, 2764348, -22193170, 23571318, +-18194556, 5806259, -3506304, 4842576, 1154273, -16761647, 15289010, -8471823, -16243566, 34129420, +-27267136, 8240432, -7859254, -13501767, 13761075, -3497177, 4089346, 21289080, -25661892, 1093606, +-31442918, -61914636, -1568737, 19801946, -7429757, 79709760, 16232292, -31072478, 8768176, -43371652, +15099494, 31124554, 36719824, -12563316, -7219303, -48223356, -55319716, -4600984, -34478924, 8229694, +-2153389, -30059940, -7025493, -14857366, -32937030, 27064736, 53167400, -14858439, 3780645, 11519102, +-14062797, 16495896, 20984674, -14500883, 2469606, 105764, -26421028, 13268765, 2270964, 8087424, +9720585, -18641232, 7361037, -9865540, -14958297, -16939888, 14492830, -10492068, 5988258, -16374026, +-5876589, -1068373, -19983946, 19676318, -12646531, 3977140, 6046777, -18619220, -2983392, 14444512, +-1641751, 2101313, 3269544, -5404680, 8910983, 18629420, -2153389, 10841034, 12794171, -15829639, +-30061012, 10241886, 4296578, 17448842, 20932596, -27201102, -26673358, 4728222, -39508332, 8123394, +-2848100, -23068806, 10400800, -14986215, -10074383, -18621368, 9517648, -20275466, 25973278, -2777233, +9639517, -5998459, 34878892, -9484898, 19173270, -329102, 22852984, -6382859, -11480448, 7436736, +-12997108, -13789529, 1915555, 25948582, 16738024, -17681844, 18924162, -13263396, -20252382, 5718749, +27814746, -10685342, -11265162, 14848776, 6716255, -13833553, 1603633, 18893024, -7821673, -18174690, +9960029, 7579007, 11668889, 21279416, 4522064, -12833899, -4161287, 46743204, 49159120, -13562970, +-40596032, 31192736, -13530221, 8807904, 4490389, 52641804, 7305203, -27300960, -9910637, -6602439, +1556389, 8164733, 12780749, 17126718, -20240034, 6553047, 4704600, 30539902, -7526394, 21528524, +23217520, 12838194, 11121818, 6703370, 18511846, -17615272, 19915764, 25262460, 18294414, 3123515, +-35633196, -5288179, -22942104, 1125818, 15584289, 5260798, -7766375, -12493523, -7236483, -1937567, +-794032, 6620155, -7285339, 2080375, -649077, -5532992, 11009612, 4318053, -9631464, -4527433, +-2376191, 13377213, 125628, 2808372, -12666932, -9076877, -16844324, -7904888, -896038, -1523640, +374199, -2868501, -15074261, 4020626, -5050882, -2395518, 2414845, -4146791, -57445, -13085692, +-2979634, 664109, 372588, 394600, -3195456, -3207804, -981400, -5108327, -7243463, 55684252, +23128398, -24858196, 5847598, -25978110, -14406931, -1596117, 9269076, -3980361, 20126754, -24008330, +-956704, 9751723, -1017907, 10134512, -1647657, 3687766, 2120103, -17146046, -5652714, 4764730, +-16393353, -16099685, 1167694, 4405026, -11716671, 8451422, 7757785, -4642323, -8341900, -1087701, +1561221, -2636036, 6637335, 1972464, 5185636, -6931004, -3234110, 12908524, -193274, 874026, +5928129, -3875134, 6580964, -6252399, -12225624, -7583302, 12212740, -9639517, -7454990, 999654, +-9982041, -10332081, 14902463, -14796699, 23674934, 5472862, -10787347, 10695542, 1457605, -17456894, +1345935, -2924873, -3304977, 8649527, -472983, -10138270, 20111184, -11935714, -4931160, 10769094, +3178276, -4172561, 321049, 3509525, -539555, -597000, -2302103, 4932233, 8237748, -63351, +-14280229, 10342818, -7463580, -824097, 11844446, -528281, -3888556, -226560, -10612864, 5304822, +3400540, -889595, 27380, 4517769, -10339597, 1009854, -3677029, 1294396, 3990562, 1349694, +-4512400, 10213432, -15316390, 2254321, 1582696, -799401, 1668058, -1949378, -8737037, 9687299, +-4571993, 6999723, -90731, -822486, 8664560, 3589519, -7626788, 3081102, -3946001, -2953864, +1500017, 5893769, 5513128, -1962263, -7530689, 4030290, -4372277, -33574832, -40375912, 34054796, +137916768, 53965728, 63273460, 869194, -129125504, -95083600, -49707804, -75767520, 34001644, 65270080, +26913876, 115376784, 65284576, -4322885, 27121108, -58306864, -117659016, -46937012, -81719808, -13043279, +56630756, 47723528, 43191800, 71928888, 44377748, 12225624, 19767050, -5328444, -83713744, -36973764, +-30141006, -115656488, 21472688, 15196668, -51357072, 83361560, 82481088, -2780455, 104355360, 51337208, +-48446696, 32411970, -48163228, -100250440, -7935489, -60540784, -87738664, 15548318, 9411347, -5200132, +81851336, 78947408, 47149616, 70283920, 42714524, -27271432, -30760018, -54695336, -93787056, -69177424, +-33005214, -30909270, 16856136, 53028352, 36238788, 58257472, 87923888, 34253436, -11530377, -10939819, +-60773252, -49038864, 4533338, -56297356, -25558814, 30642444, 7570417, 38345468, 30822832, -15623480, +10299332, -3092913, -20959978, 4721243, -9336185, -9412958, 19477140, 6826851, 8272644, 25963078, +-14822469, -5679558, 14105209, -19196894, -15781320, 7432978, -46141372, -7581154, 15913391, -37124624, +18300318, 23379118, 2555506, 58543088, 55650428, 12910135, 22645216, -16091095, -49568216, -24765318, +-65993784, -74876848, -42454676, -17945448, 14334990, 71711456, 83000776, 87012280, 77242304, 44232796, +-9462350, -48297980, -76620608, -106884016, -91475824, -50193672, -12891881, 43451648, 77698104, 77627240, +69367480, 45273252, -8191040, -13551159, -21918828, -33120104, -23543936, -20556250, -24495272, -12923020, +-6561637, -5403606, 5477157, 15188078, 19863150, 25978110, 23922430, 19169512, 8951249, 2305324, +-7988639, -10641318, -11562052, -6452652, -3611531, 23085, -782758, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 536871, -3439732, -4676683, -3805878, -653372, 3687230, 5433134, -2558190, 3172907, -1756642, -4524748, --1240172, -2529199, 1487669, -622770, -2186138, 2004676, 3043521, 681826, 3679176, -6740951, --7283191, -4679904, 678605, -18254, -1244467, 351114, 2224256, -728534, 3003256, 2480344, --3180960, 1210644, -237297, 3888019, 3586835, 1351841, -3809099, 2497524, -2268817, 1269700, -2501282, -6088653, 6653441, 9768366, 1280437, 4425964, -3595425, -727997, -3375308, -1756105, -3028489, -1013075, -3490735, -927713, -2196876, 1681480, -2142652, -1951526, 198105, 1784022, --1775969, -2009508, -867583, 3468723, 3127810, -2643552, -969052, -3123515, 721555, 4121021, -1148904, -1512365, -1967095, 1548873, -550830, -2812130, -1022739, -1899986, -269509, -1020055, -1633698, 1523640, 823560, -905701, -1241782, 2776696, -373125, 753230, 1446330, -417149, --34897, -579284, 852014, 109522, 217433, -816581, 119185, -260919, -803696, 36507, --120796, 597000, 1468879, -817118, 345745, -161598, 717796, 869194, -206158, -362925, --177704, -48855, -775778, -331786, 355945, -303332, 154619, -21475, 657667, 137439, -15028627, 6916508, -521839, 3146064, 2856153, -3605625, -1768990, 4166655, 1894081, 4534412, --3299609, 6594386, 2475512, -6512781, 5163625, 271120, -120796, -3439732, 3776887, -7042673, --6043556, -1299765, -2151779, -1175210, -2161979, 807991, -1314797, -2934000, -2121177, 2440078, --2678449, 1700807, 1073742, 675384, -2956548, 4129074, -8671539, -1536525, -55298, -1532230, --1097364, 732292, 1608465, -2794950, 2200634, -3384434, 3212636, 1002875, 694711, 3305514, --2356327, -584116, 1334661, 5181341, 1275068, 2160906, -1212791, -4535486, -6318434, 1137093, -3408057, 4445291, -1847373, -7073811, 1032403, -2907156, -1983201, -1656784, 1937030, 180389, -6874632, -231928, 2301566, 1324461, -1063004, -1822677, -1942936, -7230041, -2136746, -1206349, --1001264, -1408212, 1317481, 3577708, 984621, 3391951, -61740, -354872, -1118302, 909459, -1222992, -376347, -1420560, 1181116, -744640, 444529, -636192, 597537, -1061931, -673236, -949725, 282394, 522912, -409096, 309775, -696322, 8085813, 1894618, -6847252, -7743289, -2115272, -2348273, -6435472, 7310571, -3591667, -1174137, -1005559, 5738613, 1194001, -3293703, -4003983, -3089692, 6056978, -8361765, -5540508, 6701223, -6976638, -7011534, -2833068, 5731634, -2492692, 2756832, -678605, 5138929, 3088618, -507880, -6763500, 1850057, -1887101, 2454037, -2134599, 1864016, 5854041, 1595580, -5785858, 555661, 4012036, 5930813, 1981591, -3209414, --773631, -4745402, 2031520, -8437463, -339302, 9167608, 482110, 1007707, -4696547, -5775658, -883690, 1296006, 6716255, -1433982, 572304, 738198, -1000191, 722628, 2229088, 432181, -4724464, -1249836, 3136937, 499290, 845572, 603980, 5545340, 267899, -776315, 1062468, --1185411, -3714073, -1999307, -3829500, -89121, 7025493, 1466195, -2245731, -783295, -3946001, -2270964, -3079492, -2189360, 802085, 120796, 279173, -1794760, -2502892, -520228, 678068, --848793, 1510218, -154082, 46171, 1440962, 945430, 1452236, 1242856, -3758, 526134, --1156420, 119185, -1023813, -1059783, 798327, 993748, 1669669, 1257889, -783295, -146566, -893890, -581968, -1243393, 776852, 202400, -18589692, -12195023, -2648921, 1991254, 3027415, -280784, 6442, -7144141, -407485, -1583769, -1158031, 121333, -1777043, -854699, -5225902, -2694018, -11031087, -4080756, 1026497, -2257542, -3346853, -1973001, -6260452, -3228742, -2579665, --3024731, 1429687, -4911295, -2643552, 6004365, 3976066, 373125, 2939905, 2097018, -1938641, --4081830, 2442226, 8984535, 1063541, 1097364, -3513820, -3210488, 2694018, -7756174, -4068408, -8529805, -7783555, 2334315, -1822677, -3976603, 1853815, 548145, -2132988, 479426, 1359357, --2736968, 70867, -563178, 5327370, 4659503, 738198, 1237488, 2336999, -179315, -983011, --1845762, -10817412, 5238787, 3329137, -2980707, -70867, -4568235, -1189706, 627065, -3277060, -1489280, -3985730, -2262911, -4647692, -6984154, 4632122, -1342177, 255551, -5904507, -1420560, -746787, 1027034, -1566053, -220654, -338229, -1573569, -3060164, 539018, -1576790, 1364726, --253940, -715649, -637803, -265751, 1480690, 313533, -2266669, 482110, -688805, -132070, -716186, 394063, -596464, 589484, -1780264, 1007170, -1618666, -444529, -16087337, 2477123, -3774740, -1016834, -1409286, -8910983, -3644280, 2439005, -7953743, -7627325, 1557999, -7256347, --3732864, -191126, -4377109, 2463701, -3450469, 5432597, -2870649, -1893544, 1717450, 3795677, -7038378, 4388920, -7844758, -437013, -582505, 3855270, 5799817, 9842454, -4380330, -3888019, -5107790, -5398774, 1248762, 1530082, 8326331, 3036005, 4647155, -6214281, -2740189, -8478802, -6692633, 6989523, 8055748, -147640, -1733556, -5420249, -1132798, 5393942, -2513093, -3500935, --3204583, -4262755, 915902, 971200, 1270774, -5826660, -77846, -5710159, -307627, -878858, -2315524, 1971927, -1744294, -2609730, -7202660, -453119, -577136, 4405563, -2782065, 7342247, --4205310, 884226, 3419331, 6665789, -5184026, 1513976, 3512210, -6060736, 3017215, -39192, -7416872, 2434710, 1660005, 4519916, -462246, 1207960, 3506304, 1377074, 37044, -1338956, -56908, 1435056, -479963, 1833951, 2871723, 2305324, -1088774, 1257889, 180926, -826781, -1148367, 1465658, -2684, 644245, 1837172, 1302449, 1481227, 660888, -724239, -1247688, -1415729, -1336272, 1409286, -794569, 102005, 1717987, 1346472, -476741, 19902878, 17075180, --620086, 513785, 8873402, 1217086, 4342212, -2657511, 4867272, -3750580, 8957691, 3074123, -6442, 1835025, 617938, 11353209, 7655243, -7435126, -6204081, 2416993, 1190780, -2379949, --1625108, 1443646, 5432060, 4044786, 2473901, 587337, 2862059, -1891396, -161061, 6256157, --6881075, 2761664, 8337069, 6266894, 11338714, -1113470, -1739999, -986232, 702227, -3620121, -12322261, 11311333, 8064875, -3757560, -1140851, 4811974, 3901978, -3448859, 753767, 6475200, --2437394, -3027415, 4099546, -11989938, -1413044, 666257, 1744294, -4056597, -7860864, 3204046, -5341329, -6375342, -2397129, -6933151, 2561948, 489626, -1482838, -1489280, -6075231, 10139881, --2695092, 1365800, -10339060, -2446521, -4952634, 12057584, -2158221, -1654099, 5337571, 2484102, --66572, -3845606, 3534221, -2529736, -3628711, 5591511, 5168993, -76773, 3213173, 119722, --1524177, 2967823, -503048, 1159641, -1005022, -1306744, -376883, 2309619, -1759326, -1305670, --124554, -1747515, 574452, -1575179, -963146, 152471, -340913, 2295123, 16106, 675384, -1405528, 1473711, 329639, 763967, 1148367, 3058554, 517544, 2882997, 421981, 1429687, -2029909, 13103408, -499290, 8278013, 11330661, -5987185, -13932874, 578210, 10613938, -8215199, -7455527, -2223183, -10081362, -4664335, 10171019, -9934796, -8756365, 6377490, -10126996, 3369939, -4840428, 3969624, -2869038, 6132140, 1736241, 1146756, 3954054, -6479495, 8827232, 4336307, -3835406, -1827509, -980863, 16440061, -5755793, 1015223, 4283156, 8269960, -11245298, -9265318, --8623757, 326418, 638340, -583579, 5233955, 1622424, 9342091, 3753802, 5474473, -886374, -731755, -4625143, 8348343, -3787624, 8233989, -4498442, -7106024, 12246026, 9949292, -14097156, --12439836, -8182450, -6397891, 4429185, 698469, -2860448, 6478958, 7143605, -8586176, 5045513, --700617, -17185774, -5682242, -8668855, -7864622, 2968359, -2682207, 5635534, -1307818, 841277, -10268193, 10460393, -980863, 2746632, -921271, 1622424, 1469416, -3547106, 2936147, 853625, --145492, 8825621, 2642479, -69793, 252329, -1584306, 2597382, -295816, 1705102, -1918240, --118648, -2022930, 523986, 2291902, 710817, -13959, -290447, 2004139, 1280974, -1277753, -159451, -62814, 287763, 1014149, 434865, -7471633, -10411538, 6240051, -5972689, -4431870, --3697430, -12159052, -1241782, 5394479, -3247532, -754304, -4396436, 9980967, 1583769, 6350646, -4904316, -8078297, 8320426, 12377022, -3754338, -5079873, 1379221, -2168959, 5399311, -15343771, -5921150, 13262322, -1714766, -4358318, -3732327, 5761699, 11945378, -2832531, 3057480, -5316633, -8202851, -9826885, -3704946, 1900523, -1476395, -7625715, 14086419, 9883257, 7469485, -3129421, --10505490, -1306207, -14949171, 2589329, -1026497, -483184, -246424, -2266669, 8206072, 6889128, --10361609, 5830418, -6175089, 8628052, -719944, -1748589, -643171, -9137543, -1671279, -8335458, --18382996, -836445, 2237141, 1460289, -7007776, -236760, -1947768, -13783624, 360777, 11979201, --7483981, 3140158, 3992172, -1511829, 935229, -3536906, -2010582, 2819646, 3496104, 3764002, --864899, -2394981, -827318, -2574296, 2204929, 1047972, -2084670, -617938, -1908576, -2168422, --194347, -1947231, -2879239, 1844689, -522912, -2266669, 1905355, -1583232, 1589675, 2291365, -1062468, 2203318, 1651415, -9127, 1567663, 4959077, 2487860, -2441152, -1582159, -2804614, -118648, -3633542, 2042257, -194884, 2937758, -730144, 2316061, -357556, -1438814, 4687420, -2364916, -19313932, 1288490, 11377368, 6099391, -8761733, -7255811, 14244259, 3201898, 3257733, --2865280, 3739843, -217433, -9405442, -2543695, -9882183, 4636954, -5857799, -978179, -9626632, --10808285, -14360760, 8959839, 6169721, -4701916, -5072893, 3984119, -13181255, -1281511, 1072131, -3130494, 5899675, 2774012, 446677, -4657892, 2003065, -4283156, 3572339, -4111358, 2384781, -1156420, -4123706, -5523865, -10313290, -6924561, 2702608, -17798344, -4758287, 9656160, 5250061, --2208687, 23217520, -3420942, 10795400, 10534481, -16793858, 1029718, -2167348, -14317273, -7379291, --7910793, 322123, 1599339, 16067473, -2643016, 1611150, 10772852, 8114804, -1959579, 10870562, --5187784, -3889630, -7282654, -9496173, -14001593, -5221070, 7883950, -15102716, -7807714, 11803107, -8486319, -5039608, 10656351, -4698694, -804770, -401579, 5093831, -3278671, 5076652, -3136400, -4334696, -1194538, 1755031, -1986422, 3496640, 3491272, 1418950, -520765, 3955665, -2515240, --3001645, 3218541, -936840, 3505767, 2437394, 1782411, 2251100, 1491964, 599148, -5764920, --1138703, 32212, 1576253, -1468342, -2529199, -1975685, -5657546, 2215666, -170188, 3627100, -1941325, 3534221, 2565169, 825707, 1140851, 13302051, -2288681, 4273493, -6478422, 3818763, -5623186, -3432216, 4816269, -7400766, -8069707, 12345883, 6780680, 7969849, 9904195, -54224, --8067559, 10665478, -9299678, -12563853, 229781, 11776800, -1640678, -10207527, 1448478, 13862007, --1942936, 3806415, 1399623, 19449222, 1288490, 4163434, 9657234, -1219234, -4904316, -9315247, -1381906, -1289564, -8887898, 295279, -5207111, 3575560, 13257490, 136365, -7879655, -2353105, --7299297, -3919158, -1071058, -3105798, 1864016, -9825811, 10640245, -5569499, 17920214, -4488778, --12873628, 751619, 717796, 6340446, 2792803, 3437048, -13201656, -10763725, 7882339, -11208254, --15532749, 4500052, 3202435, -3535832, 16997870, -13732621, -18951544, 7147363, -12905840, 1269163, -1904818, 392990, -12402255, -7595113, -16160888, 5603859, -1522029, -872952, -2394444, -7220377, --3138011, -5470178, -2592013, -2105071, 6338835, -4722854, 4901095, 1768990, 5058398, 857383, -773631, -6608344, -2283849, 1837709, -1995549, -7213398, 1575716, -1139240, -2679523, -2514167, -2460480, -2874407, 3271691, -1628866, 3942243, -687195, 2090039, -3740917, -3545496, -81068, -450435, -1305133, 5885179, -4950487, -4579509, -3086471, 2950106, 3051574, -3670587, 883153, --10432476, 5819144, 519154, 14220637, 14780056, 21497922, 9718974, 4625143, 2914135, 7143605, --7338489, 8246337, -12965433, 6369974, -1322313, -1009317, -24800752, -9489193, -4118874, 8510478, --1114544, 2128693, 2626373, 2328409, -12702366, 13168370, -550830, 5409512, 380105, 12295418, --13178033, 9203578, -6505802, -232465, 9840307, -11155104, -5075578, -12163884, -4927938, -13554917, -12363063, 9205726, 16627966, -741956, 3892314, -15119359, 3405909, -15678241, 15252503, 4406100, --2543695, 14572287, 14738180, 7634305, -8872329, -13089450, -19013284, -769873, -6768332, -9484898, -10230075, -2762738, 23896124, -17677548, -6528351, 13761075, -14343580, -5615133, 3234110, 315143, --2141578, -13651017, 6202470, 2392834, -7519951, 6847252, 14379014, -12351789, 13877039, 17410724, --5255966, -9133248, 7087770, -6998113, 6543920, 4277788, -7325604, -5604396, -1502165, -2209224, -10116259, 3483755, -1787780, -4891968, -8140574, -4522601, 2498060, -5122822, 2415382, 4946192, -3084324, -3433290, 2601140, -2804077, 3824669, 2564096, 4274566, 2661806, 144418, -4525285, -2929168, 4584878, -4656282, 217970, 1534914, 1723893, 3875134, 385473, -561567, 4355634, -5267241, 1063004, -2480344, -4132832, -154082, 3704409, 4491462, 3149285, 22266184, -5068062, -3116536, -1168768, -7377143, 10021769, -3693135, 3726421, 1166084, 14344117, -4543539, 16722455, -242666, 8334384, 7344931, -1298691, -5453535, -16248935, 7683697, 16951700, 847719, -97711, -11709155, 9984725, -766652, 1855426, 20113332, 12642773, -3700114, 4402879, 13205414, -3329674, --14731738, 360777, -10712722, -1671816, -6812355, 630286, -20361904, -6058052, -7457137, 347355, -4189204, 4277788, 19689204, 21828634, 11448772, -15103252, -8973797, 12265353, 17147120, 3635153, --15788300, -2590939, -3793530, -16404091, -10424422, -12424267, 15101105, -5683316, 2007360, -15446313, -22378928, 16556025, -1939715, 6834904, 37192808, -1903207, -7720741, -14347875, -949725, 9884330, -7759396, -5790153, 11149735, 22277458, -9644349, 14198625, -6571300, 4628901, -9047349, -4890894, --7821673, -10152229, -5302137, 6591164, -127775, -2262374, 1511292, 2710124, 11922829, -1376537, -1088237, -187905, -5674726, -652298, -2105608, 1062468, 4745939, -3207804, -1618666, -3964255, --1982127, 1305133, 1348620, -1478006, -8082592, -7487202, -2684892, -9208410, -8126615, -1527935, -6934762, 6191196, 5260261, 1132798, -1411971, 236760, 2854006, 2433636, -1152125, 1643899, -1071594, 11319386, 907849, -7062537, -9737228, -15964930, 20779588, -12985834, 15634218, -11394011, --17415556, 973884, 21526376, 14078903, -16189342, -10588705, 3543348, 3321620, 7172059, -1141388, -14296872, 7825968, 18889804, -6829535, -3359738, -556735, -3860639, -18246632, -13708462, -4127464, -18986440, 4097936, 1329292, 755914, -18032420, -20223928, -15892453, 8222178, 9097278, -6851547, --4769561, 1874753, 2020245, -10744398, 2939368, 20301774, 3358128, 12750684, 12254615, 9033390, -21499532, 31222802, 10033580, 627065, 4289599, 12378633, -6693707, -3375308, 8073465, -2725157, -4224637, -2799245, 13245142, 4845260, 9321153, -2570001, -3783866, 6905771, 17759690, -1235340, --14940044, 9499931, -23264228, -26670674, -9371082, 13901735, -9148280, -26378078, -16388521, -6663642, -9433896, 6657200, -14526653, 25725780, -8477729, -17932026, 4467303, 7080791, -6150930, 8974871, --9519795, -3599720, 3086471, 2463164, -5123359, 4584878, 605054, 8145406, -4738423, -9638980, --5898064, 1659468, -2407866, -1918240, -1042066, 107374, -1057636, 6606197, -1410897, 1123671, --2949032, 3059627, 5137855, 1086090, 4910222, 1641214, -8389682, -3555159, -270583, -6976101, --8570070, 3992709, 5497022, -4520990, -9128953, -9683541, 3644280, 1619740, -750009, 6258841, --3956739, 8410083, -37284076, 1984812, 18926310, -3520263, -4414690, 22918482, -12287901, -12752295, --16187732, -5417028, -5458367, -10845329, 3219078, 5213017, 8863202, 6200859, -5168457, -4142496, --1814087, -4637491, 1552094, 4267587, 18700824, -8067559, -24195162, 12883291, 114354, -776315, --20122996, 8911520, 3918621, -2152852, 22944790, -6635188, 2502892, -2197413, 10122701, 12127377, --13412646, -1395864, -7522635, -952409, 6866579, -5155572, 10510859, -16462610, -13674102, -8734890, --14610405, -2623688, 1331440, 2182917, -20437066, -13518946, 9730248, 16400333, -7827578, -9306120, -8666170, -18791556, -16957604, -16500727, 18034568, -30531312, 9880572, -1737314, -17966386, -5828271, -15151571, 38597796, -5197984, -10791105, 12741020, 29569240, 10644540, -6805376, -7215545, -1472100, -8104067, -671626, 3767760, 17551384, 1134945, -6724845, -12509092, 10232760, -14754286, -10165114, --7365332, 5081483, -6110128, -10791105, -6794102, -6615324, -137439, -7995082, 2653216, -6225018, --597537, -2125472, 7436199, -5794985, -4514548, -11742977, -3528853, -2194728, -3984119, 10902238, --8211441, -10572062, -748398, -9295383, -8463233, -3965866, 1153736, 8134668, -1176821, -3673808, --1692754, -5613523, 3764002, -11187316, -1061394, 11281268, 5322538, 7332583, -3000035, 2691871, -3539590, -2889439, -4466229, -6381248, 2088428, 5355288, -2363306, -20855288, -33608656, -1828046, -38245612, -6031208, -2888366, -25264608, -2058900, -1589138, 2498060, 8498130, 1009317, 7079717, -353261, -319975, -18228914, 2668249, 16302085, -11019275, 20253456, -8513699, -1415192, -18006650, -11435887, -8931384, -6009733, -20796768, -28453622, 14529874, -13968307, -13528610, 4809827, 2972117, --6249715, 1455994, 15869904, -4693326, -15446850, -9439264, -19736986, -2346126, 5444945, 13607530, -2626909, -3945464, -3508988, -8068633, 4546223, 14123463, 2180233, -8778376, 15870441, -15310485, -1495722, -26410828, -7937100, -5154498, 32444720, -20578262, 6512244, -6672769, 4134980, -3779571, --3786551, 644782, 13109851, 4030827, -24197846, 26455388, 7934952, 9451612, 3271691, -10535555, --8200703, -3016678, 3196530, -585726, 5134634, -14302241, -15049029, -2433636, 7109782, 16067473, --10107669, 13625784, -3509525, 5305895, -10930155, 6131066, -17717276, 19633906, 696858, 2176475, -6281927, 8845485, 691490, -12277701, -6089727, 3285113, -11806865, 3132105, 5287105, 4886599, --7099044, -4328254, 11587822, 2116345, -12141336, -1764695, 10019085, -3893388, -14899242, 16600049, --4723391, 6379100, -3012920, -4843113, -8041253, 5050882, 1206886, 5251672, 595927, 8861591, -848256, 6342593, -3336653, 341987, 3808026, -2379949, -3759707, -16653736, -9628243, 35494684, --4250944, 2941516, -18313740, 16556562, -9396315, 12187507, -9483288, 21437256, 2342905, 2174864, --10222559, -8544837, 12714177, 27788976, -11357504, -16951162, 8214125, -6678674, 18563922, 23156316, -11661373, -3483755, 14573898, -9523553, -8605504, 19454592, 27043798, -29982092, 2719788, 4472135, -5344013, -10146323, -436476, 12105902, -30030948, 9107478, 17983028, 6664716, -13205414, -3727495, -22022444, 17811766, 6201396, -10236518, -13087302, -26226680, 37697464, 6774774, 19521700, -2798708, --7680476, 4190814, 11485279, 353261, -314069, -30481920, 5012764, 28751584, -4844723, 27551142, --16236587, -7426536, -11230803, 6423124, 26217018, -8169028, -449898, 23440858, 28932510, -9345312, --20619602, -18671296, -15966004, -7584912, -6564858, 16464220, -19856708, 10977400, 12735115, -4593468, -1743220, 12897787, -2178622, -7452842, 8089571, 5472325, 4467303, 11853036, 2939368, -2152852, -11087995, 3805878, 4883915, 5413807, -1513439, 600759, -2110977, 4605279, -19433116, -5555004, -1180042, -3925600, 8053601, -14926622, -1329829, 96100, 5624260, -448287, 8732742, 5732171, --3637301, 11772505, 6422587, -4241280, 8939974, 9171366, 462783, -6118181, 4898410, 8914741, -5869610, -1478543, -8334384, -4376035, 2674691, 1234803, 1797444, 14156749, 10413685, 24984362, --7557532, 18095234, -9577240, -3819300, 16817482, -566399, 22923314, -27668716, 17335024, 3160022, -7698192, -11130945, 8389682, 20640002, 40135932, -9243306, 10189273, -567473, -26646514, 24414204, -2459406, 9538049, -4884452, -12480638, -4653060, -1036161, -10358924, -6514929, 34055332, 2362232, -13077102, -9777493, 24124294, 106300, 11682848, 4920959, -14172855, -3048890, -8761733, 222265, -4318053, 28519120, 14483167, 1159104, 3331821, -1063004, -2435247, 4627291, 2781528, 17829482, -14490146, 7268696, -8589398, 12353400, 26036628, -24747064, 22804128, 3592203, 6785512, -24879672, --11880953, -31245350, -25252798, -5065914, 16640851, 13873281, -43314208, -438087, -19616190, 10104447, -42959872, 21498996, -27885612, 15013058, -11572789, -14458471, 23578834, 11838540, -12392591, -6977175, -20713016, 16938814, 9159555, 26406532, -7381975, 16116865, 14140643, -17163764, 23517094, 6305012, -27323508, 8176544, -2807298, 16000901, -1946157, 3994320, -19633370, 14323179, -9721658, 7330973, --7313793, 3088618, 8680129, 21689048, 5441724, 13071196, 3049427, 3980361, -7551090, -1920924, --2930242, 1495186, 10654740, 9105331, 16191490, 5810554, -2386391, 2325188, -4290673, -2515240, --17064442, -3139621, 3710852, 4918812, 13845364, 12390981, 11230803, 14028974, -36266704, -55672976, --14601815, -6265284, -13826573, 3097208, 18711562, -19624780, 28263032, 10372883, -40940704, -31345746, --6376953, 22349400, 709207, 1876364, -4374961, -12944495, -39646844, 1632625, -33329484, -27519466, -13385266, 10718091, 9652939, -4646081, -13001940, 29971892, 17843442, -12710956, -26036092, 19792284, -9875204, 4668630, -12320114, -30335354, 11406359, -14236206, 4417374, -25837450, 31279710, 792421, --12729746, 3080029, 7760469, 25929792, 16048682, -6622840, -1453310, 9092446, 8818642, 10002979, --6065568, -40517648, -32048510, 6467147, -4561256, 23746338, -4728222, -10159208, -28782724, 33246268, -12563853, -23128936, -24078660, 34105260, 31752156, -310848, 23238994, -3105798, 607201, -9659918, --6091874, -18280992, 22381074, -4150012, -5337571, -9756555, 9101573, -28778428, 13374528, -8406325, --5638755, 20491826, -673773, 3265249, 4910758, 18813568, 9372692, -7633231, 13706851, -4128537, -16594680, 6680822, -19146964, 4726612, -9844602, 9002251, -8035884, 223338, -12805445, -6426345, -6658810, -12408161, 5043366, 4279935, 5187784, -11090679, -8196408, -14279693, -12773233, 16699370, --6258841, 10786810, 6535867, -10205379, -1683090, -8924405, 122943, -5659157, 20859046, 17796734, -11814918, 16623134, -4318590, -18449032, -21365852, -3026341, 6160057, 30745524, 18547816, -7099044, --5978058, -8286603, -15546708, -949725, 6721624, 3106335, 19530290, 1913408, -13764833, -35365296, -55763708, 1405528, -43133820, -3264712, -16057272, 7294465, 21401286, 19439558, -23997592, -38509212, -6577743, -18431316, 5873905, -3755412, 16979080, -5574331, 2429341, 10087268, -15731928, -19291382, -2038499, 5063767, 16811576, -385473, -26896696, 17691508, -15001247, 13903883, -13038447, -8876624, --1468342, -4268661, -28916404, 5432060, 8079371, -27958090, 11826192, -10988674, 5601174, -9329206, -27011050, 21031918, -27236536, -14457397, 18602578, 23309324, -27870580, 36792836, 2386928, 29625610, -21525840, 34959960, -10814728, -14838575, 7850664, -29011430, 4430796, 3664681, 50939924, -15794742, --47884052, 80834504, -38193532, -29381872, 46605228, 21049098, -27193048, 45282912, 5039608, -36888400, -45871860, 5535139, 4106526, -8021925, 6738267, 30434676, -7448010, -10620917, -15850040, 22657026, --8259759, -5822902, -3191161, -9165997, -9780177, -14234058, 13598403, -2057289, -1282048, -5182415, --3519189, 1681480, -6152541, -10718091, 1343251, -8686571, -16030965, -16715476, 20686710, -9062918, -1902671, 19047644, -9222369, -8839043, 1321776, 9400610, 4053376, 3949223, 18358838, -11449846, -2629594, -8471286, -5254356, -3795677, 30378840, 14976551, -4977867, 4199405, -16155519, 5033165, --14789720, -9302899, 7093139, -4054986, -30488900, 18610094, 7627325, -5825587, -50255948, 7009387, -14988362, -37600292, 17184164, 10033044, -13254806, -3691525, -706522, -9159555, -3071975, -5334350, --16829292, 548682, -8410620, -1767916, -4155381, 8262444, 29965986, 25195352, -23167590, -2467996, -31541702, -5439039, -5942624, -32192390, 3719979, 10694469, -5288716, 27610198, 65951908, -22087406, --27797566, 47060492, -3132642, -25216290, 29308320, 19398220, -15191836, -22637162, -28101434, 8683887, -15095736, -12409771, 44265008, 28985124, -55169928, -52842592, 30900142, -24806120, -32256278, 41998336, -6767795, 56181932, 26934276, -6671158, -7508677, -40316860, -31507344, 92204896, 25456808, -19618874, --44518948, 1379221, -18116172, -39654360, -6163815, 46761992, 19870666, 738734, 38416336, 33695092, --10590316, -42572788, 6669548, 25769804, -10561861, -9832791, 53525492, 30911416, 5362804, -5451924, --27449136, -26787174, -6909529, 25637734, 10315975, -10165651, -4851166, -11788611, 10070088, -7510287, --10251013, -6453725, -1221918, 7847979, 10348724, 9337796, 3881577, -24255828, -8494908, -4575751, -9285182, -9288404, 1745904, -2299418, 22552336, -14277008, -10036802, 23481124, 6548215, -11498164, -18370648, -6118718, 5415417, 1722819, 4238059, -13741211, -3722126, 19410568, 18800146, 8082592, --7354595, 5324149, -8453033, -6541235, -5168993, 10370735, -15610596, -2952790, 12537546, 49995568, -41503880, -11044508, 29477972, 3130494, -22994718, 14770929, 25171192, 8516383, 10851772, -32958506, --6788196, 3963718, 6626598, -4773856, -28797756, -10257993, 10302553, -6903086, -3116536, -24217174, -37261524, 4772783, -30863098, 17546552, 43755516, -22512608, -13250511, 6518687, 14380624, -14026826, --27674084, 23781770, 39779452, -3081102, -15757698, 5291937, 11199664, 18274548, 25448754, 1799591, -46395848, -920197, -51864952, 525597, -5924371, 17010218, -5515275, -42149200, -1267015, -18132816, --17929878, 25502978, 13242458, 14601815, 18130130, -37758132, -19916300, -6523519, -606127, 15430207, -434865, -7612830, 966368, -12837657, -25922812, 2639794, 40061308, -20511154, 3725884, -15908022, --11586748, 27603754, -33881388, -237297, 14743012, -11807939, 5442261, 4355634, 8305930, 9878962, --17947058, -21231098, 35851704, -7331509, -11772505, 18668612, -18564460, 11707544, 2201708, -7440494, -5550709, 15709380, -3073586, 2250563, -7788387, 3891240, 850404, -884226, -6971269, 8652748, -4128537, -703838, -857383, 7283728, 5796595, -6486475, -12097312, 6694244, -862752, 3484829, -550293, -2947958, 6021008, 328028, 4967130, -1825898, -1126355, -3319473, 812823, 5936719, --1456531, 14567992, -6018323, -4210142, 486942, -6113886, 3826816, -43223476, -62003760, -54831164, -110295832, 105287368, 105076376, 296649088, 105393664, -12213276, 19523310, -205112608, -249850064, -83937080, --140196864, -194280704, 24983824, -10773925, -32512902, 213981712, 130604584, 54570244, 334143072, 157770784, -29167122, 152371488, -36135172, -181773760, -174100256, -165839424, -229861824, -225025152, -52853868, -81204408, --132513696, 154775584, 71257800, -55684788, 223462320, 72227392, -26243860, 252712112, 230200048, 53080964, -238889296, 242449824, -9298604, 60250876, 27439472, -233230688, -270818624, -201627232, -381252448, -360993088, --216846992, -289538784, -217855776, 24761024, 179109792, 203320528, 436755232, 397176576, 350167616, 377354208, -278284352, 141373680, 43154756, -30522722, -212568672, -256203920, -274342112, -309107712, -293347872, -249975680, --161589024, -117308440, -114790520, 22028350, 69610144, 136782368, 325055488, 337662272, 230827648, 288598720, -121995328, -39716100, -95506648, -147853168, -202782048, -146757424, -98203888, -97641248, -33684356, -9064528, -838592, 52167748, 66122632, 63123136, 96505768, 60898880, 39327940, 48821432, -28745680, -26458610, -8225936, -78065328, -55330452, -20219632, -75537200, -46500000, -5207648, -75889384, -80305152, -53165252, --78797080, -51562692, 59413356, 111162344, 176562352, 260577280, 243059184, 208193168, 195572416, 105966504, --32239636, -162426544, -287866976, -341674304, -308279872, -249395872, -188383712, -88151520, 28366648, 112104552, -157007904, 169647456, 149630224, 133777496, 124294744, 125515048, 87298432, 41714868, 19335406, -10277320, --35206920, -31514322, -57379152, -61457224, -43352328, -31918586, -42579768, -40274984, -51890184, -58089968, --54074712, -36619428, -17319992, 7194070, 10759430, 7631083, 514859, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +3439732, -4676683, -3805878, -653372, 3687230, 5433134, -2558190, 3172907, -1756642, -4524748, +-1240172, -2529199, 1487669, -622770, -2186138, 2004676, 3043521, 681826, 3679176, -6740951, +-7283191, -4679904, 678605, -18254, -1244467, 351114, 2224256, -728534, 3003256, 2480344, +-3180960, 1210644, -237297, 3888019, 3586835, 1351841, -3809099, 2497524, -2268817, 1269700, +2501282, -6088653, 6653441, 9768366, 1280437, 4425964, -3595425, -727997, -3375308, -1756105, +3028489, -1013075, -3490735, -927713, -2196876, 1681480, -2142652, -1951526, 198105, 1784022, +-1775969, -2009508, -867583, 3468723, 3127810, -2643552, -969052, -3123515, 721555, 4121021, +1148904, -1512365, -1967095, 1548873, -550830, -2812130, -1022739, -1899986, -269509, -1020055, +1633698, 1523640, 823560, -905701, -1241782, 2776696, -373125, 753230, 1446330, -417149, +-34897, -579284, 852014, 109522, 217433, -816581, 119185, -260919, -803696, 36507, +-120796, 597000, 1468879, -817118, 345745, -161598, 717796, 869194, -206158, -362925, +-177704, -48855, -775778, -331786, 355945, -303332, 154619, -21475, 657667, 137439, +15028627, 6916508, -521839, 3146064, 2856153, -3605625, -1768990, 4166655, 1894081, 4534412, +-3299609, 6594386, 2475512, -6512781, 5163625, 271120, -120796, -3439732, 3776887, -7042673, +-6043556, -1299765, -2151779, -1175210, -2161979, 807991, -1314797, -2934000, -2121177, 2440078, +-2678449, 1700807, 1073742, 675384, -2956548, 4129074, -8671539, -1536525, -55298, -1532230, +-1097364, 732292, 1608465, -2794950, 2200634, -3384434, 3212636, 1002875, 694711, 3305514, +-2356327, -584116, 1334661, 5181341, 1275068, 2160906, -1212791, -4535486, -6318434, 1137093, +3408057, 4445291, -1847373, -7073811, 1032403, -2907156, -1983201, -1656784, 1937030, 180389, +6874632, -231928, 2301566, 1324461, -1063004, -1822677, -1942936, -7230041, -2136746, -1206349, +-1001264, -1408212, 1317481, 3577708, 984621, 3391951, -61740, -354872, -1118302, 909459, +1222992, -376347, -1420560, 1181116, -744640, 444529, -636192, 597537, -1061931, -673236, +949725, 282394, 522912, -409096, 309775, -696322, 8085813, 1894618, -6847252, -7743289, +2115272, -2348273, -6435472, 7310571, -3591667, -1174137, -1005559, 5738613, 1194001, -3293703, +4003983, -3089692, 6056978, -8361765, -5540508, 6701223, -6976638, -7011534, -2833068, 5731634, +2492692, 2756832, -678605, 5138929, 3088618, -507880, -6763500, 1850057, -1887101, 2454037, +2134599, 1864016, 5854041, 1595580, -5785858, 555661, 4012036, 5930813, 1981591, -3209414, +-773631, -4745402, 2031520, -8437463, -339302, 9167608, 482110, 1007707, -4696547, -5775658, +883690, 1296006, 6716255, -1433982, 572304, 738198, -1000191, 722628, 2229088, 432181, +4724464, -1249836, 3136937, 499290, 845572, 603980, 5545340, 267899, -776315, 1062468, +-1185411, -3714073, -1999307, -3829500, -89121, 7025493, 1466195, -2245731, -783295, -3946001, +2270964, -3079492, -2189360, 802085, 120796, 279173, -1794760, -2502892, -520228, 678068, +-848793, 1510218, -154082, 46171, 1440962, 945430, 1452236, 1242856, -3758, 526134, +-1156420, 119185, -1023813, -1059783, 798327, 993748, 1669669, 1257889, -783295, -146566, +893890, -581968, -1243393, 776852, 202400, -18589692, -12195023, -2648921, 1991254, 3027415, +280784, 6442, -7144141, -407485, -1583769, -1158031, 121333, -1777043, -854699, -5225902, +2694018, -11031087, -4080756, 1026497, -2257542, -3346853, -1973001, -6260452, -3228742, -2579665, +-3024731, 1429687, -4911295, -2643552, 6004365, 3976066, 373125, 2939905, 2097018, -1938641, +-4081830, 2442226, 8984535, 1063541, 1097364, -3513820, -3210488, 2694018, -7756174, -4068408, +8529805, -7783555, 2334315, -1822677, -3976603, 1853815, 548145, -2132988, 479426, 1359357, +-2736968, 70867, -563178, 5327370, 4659503, 738198, 1237488, 2336999, -179315, -983011, +-1845762, -10817412, 5238787, 3329137, -2980707, -70867, -4568235, -1189706, 627065, -3277060, +1489280, -3985730, -2262911, -4647692, -6984154, 4632122, -1342177, 255551, -5904507, -1420560, +746787, 1027034, -1566053, -220654, -338229, -1573569, -3060164, 539018, -1576790, 1364726, +-253940, -715649, -637803, -265751, 1480690, 313533, -2266669, 482110, -688805, -132070, +716186, 394063, -596464, 589484, -1780264, 1007170, -1618666, -444529, -16087337, 2477123, +3774740, -1016834, -1409286, -8910983, -3644280, 2439005, -7953743, -7627325, 1557999, -7256347, +-3732864, -191126, -4377109, 2463701, -3450469, 5432597, -2870649, -1893544, 1717450, 3795677, +7038378, 4388920, -7844758, -437013, -582505, 3855270, 5799817, 9842454, -4380330, -3888019, +5107790, -5398774, 1248762, 1530082, 8326331, 3036005, 4647155, -6214281, -2740189, -8478802, +6692633, 6989523, 8055748, -147640, -1733556, -5420249, -1132798, 5393942, -2513093, -3500935, +-3204583, -4262755, 915902, 971200, 1270774, -5826660, -77846, -5710159, -307627, -878858, +2315524, 1971927, -1744294, -2609730, -7202660, -453119, -577136, 4405563, -2782065, 7342247, +-4205310, 884226, 3419331, 6665789, -5184026, 1513976, 3512210, -6060736, 3017215, -39192, +7416872, 2434710, 1660005, 4519916, -462246, 1207960, 3506304, 1377074, 37044, -1338956, +56908, 1435056, -479963, 1833951, 2871723, 2305324, -1088774, 1257889, 180926, -826781, +1148367, 1465658, -2684, 644245, 1837172, 1302449, 1481227, 660888, -724239, -1247688, +1415729, -1336272, 1409286, -794569, 102005, 1717987, 1346472, -476741, 19902878, 17075180, +-620086, 513785, 8873402, 1217086, 4342212, -2657511, 4867272, -3750580, 8957691, 3074123, +6442, 1835025, 617938, 11353209, 7655243, -7435126, -6204081, 2416993, 1190780, -2379949, +-1625108, 1443646, 5432060, 4044786, 2473901, 587337, 2862059, -1891396, -161061, 6256157, +-6881075, 2761664, 8337069, 6266894, 11338714, -1113470, -1739999, -986232, 702227, -3620121, +12322261, 11311333, 8064875, -3757560, -1140851, 4811974, 3901978, -3448859, 753767, 6475200, +-2437394, -3027415, 4099546, -11989938, -1413044, 666257, 1744294, -4056597, -7860864, 3204046, +5341329, -6375342, -2397129, -6933151, 2561948, 489626, -1482838, -1489280, -6075231, 10139881, +-2695092, 1365800, -10339060, -2446521, -4952634, 12057584, -2158221, -1654099, 5337571, 2484102, +-66572, -3845606, 3534221, -2529736, -3628711, 5591511, 5168993, -76773, 3213173, 119722, +-1524177, 2967823, -503048, 1159641, -1005022, -1306744, -376883, 2309619, -1759326, -1305670, +-124554, -1747515, 574452, -1575179, -963146, 152471, -340913, 2295123, 16106, 675384, +1405528, 1473711, 329639, 763967, 1148367, 3058554, 517544, 2882997, 421981, 1429687, +2029909, 13103408, -499290, 8278013, 11330661, -5987185, -13932874, 578210, 10613938, -8215199, +7455527, -2223183, -10081362, -4664335, 10171019, -9934796, -8756365, 6377490, -10126996, 3369939, +4840428, 3969624, -2869038, 6132140, 1736241, 1146756, 3954054, -6479495, 8827232, 4336307, +3835406, -1827509, -980863, 16440061, -5755793, 1015223, 4283156, 8269960, -11245298, -9265318, +-8623757, 326418, 638340, -583579, 5233955, 1622424, 9342091, 3753802, 5474473, -886374, +731755, -4625143, 8348343, -3787624, 8233989, -4498442, -7106024, 12246026, 9949292, -14097156, +-12439836, -8182450, -6397891, 4429185, 698469, -2860448, 6478958, 7143605, -8586176, 5045513, +-700617, -17185774, -5682242, -8668855, -7864622, 2968359, -2682207, 5635534, -1307818, 841277, +10268193, 10460393, -980863, 2746632, -921271, 1622424, 1469416, -3547106, 2936147, 853625, +-145492, 8825621, 2642479, -69793, 252329, -1584306, 2597382, -295816, 1705102, -1918240, +-118648, -2022930, 523986, 2291902, 710817, -13959, -290447, 2004139, 1280974, -1277753, +159451, -62814, 287763, 1014149, 434865, -7471633, -10411538, 6240051, -5972689, -4431870, +-3697430, -12159052, -1241782, 5394479, -3247532, -754304, -4396436, 9980967, 1583769, 6350646, +4904316, -8078297, 8320426, 12377022, -3754338, -5079873, 1379221, -2168959, 5399311, -15343771, +5921150, 13262322, -1714766, -4358318, -3732327, 5761699, 11945378, -2832531, 3057480, -5316633, +8202851, -9826885, -3704946, 1900523, -1476395, -7625715, 14086419, 9883257, 7469485, -3129421, +-10505490, -1306207, -14949171, 2589329, -1026497, -483184, -246424, -2266669, 8206072, 6889128, +-10361609, 5830418, -6175089, 8628052, -719944, -1748589, -643171, -9137543, -1671279, -8335458, +-18382996, -836445, 2237141, 1460289, -7007776, -236760, -1947768, -13783624, 360777, 11979201, +-7483981, 3140158, 3992172, -1511829, 935229, -3536906, -2010582, 2819646, 3496104, 3764002, +-864899, -2394981, -827318, -2574296, 2204929, 1047972, -2084670, -617938, -1908576, -2168422, +-194347, -1947231, -2879239, 1844689, -522912, -2266669, 1905355, -1583232, 1589675, 2291365, +1062468, 2203318, 1651415, -9127, 1567663, 4959077, 2487860, -2441152, -1582159, -2804614, +118648, -3633542, 2042257, -194884, 2937758, -730144, 2316061, -357556, -1438814, 4687420, +2364916, -19313932, 1288490, 11377368, 6099391, -8761733, -7255811, 14244259, 3201898, 3257733, +-2865280, 3739843, -217433, -9405442, -2543695, -9882183, 4636954, -5857799, -978179, -9626632, +-10808285, -14360760, 8959839, 6169721, -4701916, -5072893, 3984119, -13181255, -1281511, 1072131, +3130494, 5899675, 2774012, 446677, -4657892, 2003065, -4283156, 3572339, -4111358, 2384781, +1156420, -4123706, -5523865, -10313290, -6924561, 2702608, -17798344, -4758287, 9656160, 5250061, +-2208687, 23217520, -3420942, 10795400, 10534481, -16793858, 1029718, -2167348, -14317273, -7379291, +-7910793, 322123, 1599339, 16067473, -2643016, 1611150, 10772852, 8114804, -1959579, 10870562, +-5187784, -3889630, -7282654, -9496173, -14001593, -5221070, 7883950, -15102716, -7807714, 11803107, +8486319, -5039608, 10656351, -4698694, -804770, -401579, 5093831, -3278671, 5076652, -3136400, +4334696, -1194538, 1755031, -1986422, 3496640, 3491272, 1418950, -520765, 3955665, -2515240, +-3001645, 3218541, -936840, 3505767, 2437394, 1782411, 2251100, 1491964, 599148, -5764920, +-1138703, 32212, 1576253, -1468342, -2529199, -1975685, -5657546, 2215666, -170188, 3627100, +1941325, 3534221, 2565169, 825707, 1140851, 13302051, -2288681, 4273493, -6478422, 3818763, +5623186, -3432216, 4816269, -7400766, -8069707, 12345883, 6780680, 7969849, 9904195, -54224, +-8067559, 10665478, -9299678, -12563853, 229781, 11776800, -1640678, -10207527, 1448478, 13862007, +-1942936, 3806415, 1399623, 19449222, 1288490, 4163434, 9657234, -1219234, -4904316, -9315247, +1381906, -1289564, -8887898, 295279, -5207111, 3575560, 13257490, 136365, -7879655, -2353105, +-7299297, -3919158, -1071058, -3105798, 1864016, -9825811, 10640245, -5569499, 17920214, -4488778, +-12873628, 751619, 717796, 6340446, 2792803, 3437048, -13201656, -10763725, 7882339, -11208254, +-15532749, 4500052, 3202435, -3535832, 16997870, -13732621, -18951544, 7147363, -12905840, 1269163, +1904818, 392990, -12402255, -7595113, -16160888, 5603859, -1522029, -872952, -2394444, -7220377, +-3138011, -5470178, -2592013, -2105071, 6338835, -4722854, 4901095, 1768990, 5058398, 857383, +773631, -6608344, -2283849, 1837709, -1995549, -7213398, 1575716, -1139240, -2679523, -2514167, +2460480, -2874407, 3271691, -1628866, 3942243, -687195, 2090039, -3740917, -3545496, -81068, +450435, -1305133, 5885179, -4950487, -4579509, -3086471, 2950106, 3051574, -3670587, 883153, +-10432476, 5819144, 519154, 14220637, 14780056, 21497922, 9718974, 4625143, 2914135, 7143605, +-7338489, 8246337, -12965433, 6369974, -1322313, -1009317, -24800752, -9489193, -4118874, 8510478, +-1114544, 2128693, 2626373, 2328409, -12702366, 13168370, -550830, 5409512, 380105, 12295418, +-13178033, 9203578, -6505802, -232465, 9840307, -11155104, -5075578, -12163884, -4927938, -13554917, +12363063, 9205726, 16627966, -741956, 3892314, -15119359, 3405909, -15678241, 15252503, 4406100, +-2543695, 14572287, 14738180, 7634305, -8872329, -13089450, -19013284, -769873, -6768332, -9484898, +10230075, -2762738, 23896124, -17677548, -6528351, 13761075, -14343580, -5615133, 3234110, 315143, +-2141578, -13651017, 6202470, 2392834, -7519951, 6847252, 14379014, -12351789, 13877039, 17410724, +-5255966, -9133248, 7087770, -6998113, 6543920, 4277788, -7325604, -5604396, -1502165, -2209224, +10116259, 3483755, -1787780, -4891968, -8140574, -4522601, 2498060, -5122822, 2415382, 4946192, +3084324, -3433290, 2601140, -2804077, 3824669, 2564096, 4274566, 2661806, 144418, -4525285, +2929168, 4584878, -4656282, 217970, 1534914, 1723893, 3875134, 385473, -561567, 4355634, +5267241, 1063004, -2480344, -4132832, -154082, 3704409, 4491462, 3149285, 22266184, -5068062, +3116536, -1168768, -7377143, 10021769, -3693135, 3726421, 1166084, 14344117, -4543539, 16722455, +242666, 8334384, 7344931, -1298691, -5453535, -16248935, 7683697, 16951700, 847719, -97711, +11709155, 9984725, -766652, 1855426, 20113332, 12642773, -3700114, 4402879, 13205414, -3329674, +-14731738, 360777, -10712722, -1671816, -6812355, 630286, -20361904, -6058052, -7457137, 347355, +4189204, 4277788, 19689204, 21828634, 11448772, -15103252, -8973797, 12265353, 17147120, 3635153, +-15788300, -2590939, -3793530, -16404091, -10424422, -12424267, 15101105, -5683316, 2007360, -15446313, +22378928, 16556025, -1939715, 6834904, 37192808, -1903207, -7720741, -14347875, -949725, 9884330, +7759396, -5790153, 11149735, 22277458, -9644349, 14198625, -6571300, 4628901, -9047349, -4890894, +-7821673, -10152229, -5302137, 6591164, -127775, -2262374, 1511292, 2710124, 11922829, -1376537, +1088237, -187905, -5674726, -652298, -2105608, 1062468, 4745939, -3207804, -1618666, -3964255, +-1982127, 1305133, 1348620, -1478006, -8082592, -7487202, -2684892, -9208410, -8126615, -1527935, +6934762, 6191196, 5260261, 1132798, -1411971, 236760, 2854006, 2433636, -1152125, 1643899, +1071594, 11319386, 907849, -7062537, -9737228, -15964930, 20779588, -12985834, 15634218, -11394011, +-17415556, 973884, 21526376, 14078903, -16189342, -10588705, 3543348, 3321620, 7172059, -1141388, +14296872, 7825968, 18889804, -6829535, -3359738, -556735, -3860639, -18246632, -13708462, -4127464, +18986440, 4097936, 1329292, 755914, -18032420, -20223928, -15892453, 8222178, 9097278, -6851547, +-4769561, 1874753, 2020245, -10744398, 2939368, 20301774, 3358128, 12750684, 12254615, 9033390, +21499532, 31222802, 10033580, 627065, 4289599, 12378633, -6693707, -3375308, 8073465, -2725157, +4224637, -2799245, 13245142, 4845260, 9321153, -2570001, -3783866, 6905771, 17759690, -1235340, +-14940044, 9499931, -23264228, -26670674, -9371082, 13901735, -9148280, -26378078, -16388521, -6663642, +9433896, 6657200, -14526653, 25725780, -8477729, -17932026, 4467303, 7080791, -6150930, 8974871, +-9519795, -3599720, 3086471, 2463164, -5123359, 4584878, 605054, 8145406, -4738423, -9638980, +-5898064, 1659468, -2407866, -1918240, -1042066, 107374, -1057636, 6606197, -1410897, 1123671, +-2949032, 3059627, 5137855, 1086090, 4910222, 1641214, -8389682, -3555159, -270583, -6976101, +-8570070, 3992709, 5497022, -4520990, -9128953, -9683541, 3644280, 1619740, -750009, 6258841, +-3956739, 8410083, -37284076, 1984812, 18926310, -3520263, -4414690, 22918482, -12287901, -12752295, +-16187732, -5417028, -5458367, -10845329, 3219078, 5213017, 8863202, 6200859, -5168457, -4142496, +-1814087, -4637491, 1552094, 4267587, 18700824, -8067559, -24195162, 12883291, 114354, -776315, +-20122996, 8911520, 3918621, -2152852, 22944790, -6635188, 2502892, -2197413, 10122701, 12127377, +-13412646, -1395864, -7522635, -952409, 6866579, -5155572, 10510859, -16462610, -13674102, -8734890, +-14610405, -2623688, 1331440, 2182917, -20437066, -13518946, 9730248, 16400333, -7827578, -9306120, +8666170, -18791556, -16957604, -16500727, 18034568, -30531312, 9880572, -1737314, -17966386, -5828271, +15151571, 38597796, -5197984, -10791105, 12741020, 29569240, 10644540, -6805376, -7215545, -1472100, +8104067, -671626, 3767760, 17551384, 1134945, -6724845, -12509092, 10232760, -14754286, -10165114, +-7365332, 5081483, -6110128, -10791105, -6794102, -6615324, -137439, -7995082, 2653216, -6225018, +-597537, -2125472, 7436199, -5794985, -4514548, -11742977, -3528853, -2194728, -3984119, 10902238, +-8211441, -10572062, -748398, -9295383, -8463233, -3965866, 1153736, 8134668, -1176821, -3673808, +-1692754, -5613523, 3764002, -11187316, -1061394, 11281268, 5322538, 7332583, -3000035, 2691871, +3539590, -2889439, -4466229, -6381248, 2088428, 5355288, -2363306, -20855288, -33608656, -1828046, +38245612, -6031208, -2888366, -25264608, -2058900, -1589138, 2498060, 8498130, 1009317, 7079717, +353261, -319975, -18228914, 2668249, 16302085, -11019275, 20253456, -8513699, -1415192, -18006650, +11435887, -8931384, -6009733, -20796768, -28453622, 14529874, -13968307, -13528610, 4809827, 2972117, +-6249715, 1455994, 15869904, -4693326, -15446850, -9439264, -19736986, -2346126, 5444945, 13607530, +2626909, -3945464, -3508988, -8068633, 4546223, 14123463, 2180233, -8778376, 15870441, -15310485, +1495722, -26410828, -7937100, -5154498, 32444720, -20578262, 6512244, -6672769, 4134980, -3779571, +-3786551, 644782, 13109851, 4030827, -24197846, 26455388, 7934952, 9451612, 3271691, -10535555, +-8200703, -3016678, 3196530, -585726, 5134634, -14302241, -15049029, -2433636, 7109782, 16067473, +-10107669, 13625784, -3509525, 5305895, -10930155, 6131066, -17717276, 19633906, 696858, 2176475, +6281927, 8845485, 691490, -12277701, -6089727, 3285113, -11806865, 3132105, 5287105, 4886599, +-7099044, -4328254, 11587822, 2116345, -12141336, -1764695, 10019085, -3893388, -14899242, 16600049, +-4723391, 6379100, -3012920, -4843113, -8041253, 5050882, 1206886, 5251672, 595927, 8861591, +848256, 6342593, -3336653, 341987, 3808026, -2379949, -3759707, -16653736, -9628243, 35494684, +-4250944, 2941516, -18313740, 16556562, -9396315, 12187507, -9483288, 21437256, 2342905, 2174864, +-10222559, -8544837, 12714177, 27788976, -11357504, -16951162, 8214125, -6678674, 18563922, 23156316, +11661373, -3483755, 14573898, -9523553, -8605504, 19454592, 27043798, -29982092, 2719788, 4472135, +5344013, -10146323, -436476, 12105902, -30030948, 9107478, 17983028, 6664716, -13205414, -3727495, +22022444, 17811766, 6201396, -10236518, -13087302, -26226680, 37697464, 6774774, 19521700, -2798708, +-7680476, 4190814, 11485279, 353261, -314069, -30481920, 5012764, 28751584, -4844723, 27551142, +-16236587, -7426536, -11230803, 6423124, 26217018, -8169028, -449898, 23440858, 28932510, -9345312, +-20619602, -18671296, -15966004, -7584912, -6564858, 16464220, -19856708, 10977400, 12735115, -4593468, +1743220, 12897787, -2178622, -7452842, 8089571, 5472325, 4467303, 11853036, 2939368, -2152852, +11087995, 3805878, 4883915, 5413807, -1513439, 600759, -2110977, 4605279, -19433116, -5555004, +1180042, -3925600, 8053601, -14926622, -1329829, 96100, 5624260, -448287, 8732742, 5732171, +-3637301, 11772505, 6422587, -4241280, 8939974, 9171366, 462783, -6118181, 4898410, 8914741, +5869610, -1478543, -8334384, -4376035, 2674691, 1234803, 1797444, 14156749, 10413685, 24984362, +-7557532, 18095234, -9577240, -3819300, 16817482, -566399, 22923314, -27668716, 17335024, 3160022, +7698192, -11130945, 8389682, 20640002, 40135932, -9243306, 10189273, -567473, -26646514, 24414204, +2459406, 9538049, -4884452, -12480638, -4653060, -1036161, -10358924, -6514929, 34055332, 2362232, +13077102, -9777493, 24124294, 106300, 11682848, 4920959, -14172855, -3048890, -8761733, 222265, +4318053, 28519120, 14483167, 1159104, 3331821, -1063004, -2435247, 4627291, 2781528, 17829482, +14490146, 7268696, -8589398, 12353400, 26036628, -24747064, 22804128, 3592203, 6785512, -24879672, +-11880953, -31245350, -25252798, -5065914, 16640851, 13873281, -43314208, -438087, -19616190, 10104447, +42959872, 21498996, -27885612, 15013058, -11572789, -14458471, 23578834, 11838540, -12392591, -6977175, +20713016, 16938814, 9159555, 26406532, -7381975, 16116865, 14140643, -17163764, 23517094, 6305012, +27323508, 8176544, -2807298, 16000901, -1946157, 3994320, -19633370, 14323179, -9721658, 7330973, +-7313793, 3088618, 8680129, 21689048, 5441724, 13071196, 3049427, 3980361, -7551090, -1920924, +-2930242, 1495186, 10654740, 9105331, 16191490, 5810554, -2386391, 2325188, -4290673, -2515240, +-17064442, -3139621, 3710852, 4918812, 13845364, 12390981, 11230803, 14028974, -36266704, -55672976, +-14601815, -6265284, -13826573, 3097208, 18711562, -19624780, 28263032, 10372883, -40940704, -31345746, +-6376953, 22349400, 709207, 1876364, -4374961, -12944495, -39646844, 1632625, -33329484, -27519466, +13385266, 10718091, 9652939, -4646081, -13001940, 29971892, 17843442, -12710956, -26036092, 19792284, +9875204, 4668630, -12320114, -30335354, 11406359, -14236206, 4417374, -25837450, 31279710, 792421, +-12729746, 3080029, 7760469, 25929792, 16048682, -6622840, -1453310, 9092446, 8818642, 10002979, +-6065568, -40517648, -32048510, 6467147, -4561256, 23746338, -4728222, -10159208, -28782724, 33246268, +12563853, -23128936, -24078660, 34105260, 31752156, -310848, 23238994, -3105798, 607201, -9659918, +-6091874, -18280992, 22381074, -4150012, -5337571, -9756555, 9101573, -28778428, 13374528, -8406325, +-5638755, 20491826, -673773, 3265249, 4910758, 18813568, 9372692, -7633231, 13706851, -4128537, +16594680, 6680822, -19146964, 4726612, -9844602, 9002251, -8035884, 223338, -12805445, -6426345, +6658810, -12408161, 5043366, 4279935, 5187784, -11090679, -8196408, -14279693, -12773233, 16699370, +-6258841, 10786810, 6535867, -10205379, -1683090, -8924405, 122943, -5659157, 20859046, 17796734, +11814918, 16623134, -4318590, -18449032, -21365852, -3026341, 6160057, 30745524, 18547816, -7099044, +-5978058, -8286603, -15546708, -949725, 6721624, 3106335, 19530290, 1913408, -13764833, -35365296, +55763708, 1405528, -43133820, -3264712, -16057272, 7294465, 21401286, 19439558, -23997592, -38509212, +6577743, -18431316, 5873905, -3755412, 16979080, -5574331, 2429341, 10087268, -15731928, -19291382, +2038499, 5063767, 16811576, -385473, -26896696, 17691508, -15001247, 13903883, -13038447, -8876624, +-1468342, -4268661, -28916404, 5432060, 8079371, -27958090, 11826192, -10988674, 5601174, -9329206, +27011050, 21031918, -27236536, -14457397, 18602578, 23309324, -27870580, 36792836, 2386928, 29625610, +21525840, 34959960, -10814728, -14838575, 7850664, -29011430, 4430796, 3664681, 50939924, -15794742, +-47884052, 80834504, -38193532, -29381872, 46605228, 21049098, -27193048, 45282912, 5039608, -36888400, +45871860, 5535139, 4106526, -8021925, 6738267, 30434676, -7448010, -10620917, -15850040, 22657026, +-8259759, -5822902, -3191161, -9165997, -9780177, -14234058, 13598403, -2057289, -1282048, -5182415, +-3519189, 1681480, -6152541, -10718091, 1343251, -8686571, -16030965, -16715476, 20686710, -9062918, +1902671, 19047644, -9222369, -8839043, 1321776, 9400610, 4053376, 3949223, 18358838, -11449846, +2629594, -8471286, -5254356, -3795677, 30378840, 14976551, -4977867, 4199405, -16155519, 5033165, +-14789720, -9302899, 7093139, -4054986, -30488900, 18610094, 7627325, -5825587, -50255948, 7009387, +14988362, -37600292, 17184164, 10033044, -13254806, -3691525, -706522, -9159555, -3071975, -5334350, +-16829292, 548682, -8410620, -1767916, -4155381, 8262444, 29965986, 25195352, -23167590, -2467996, +31541702, -5439039, -5942624, -32192390, 3719979, 10694469, -5288716, 27610198, 65951908, -22087406, +-27797566, 47060492, -3132642, -25216290, 29308320, 19398220, -15191836, -22637162, -28101434, 8683887, +15095736, -12409771, 44265008, 28985124, -55169928, -52842592, 30900142, -24806120, -32256278, 41998336, +6767795, 56181932, 26934276, -6671158, -7508677, -40316860, -31507344, 92204896, 25456808, -19618874, +-44518948, 1379221, -18116172, -39654360, -6163815, 46761992, 19870666, 738734, 38416336, 33695092, +-10590316, -42572788, 6669548, 25769804, -10561861, -9832791, 53525492, 30911416, 5362804, -5451924, +-27449136, -26787174, -6909529, 25637734, 10315975, -10165651, -4851166, -11788611, 10070088, -7510287, +-10251013, -6453725, -1221918, 7847979, 10348724, 9337796, 3881577, -24255828, -8494908, -4575751, +9285182, -9288404, 1745904, -2299418, 22552336, -14277008, -10036802, 23481124, 6548215, -11498164, +18370648, -6118718, 5415417, 1722819, 4238059, -13741211, -3722126, 19410568, 18800146, 8082592, +-7354595, 5324149, -8453033, -6541235, -5168993, 10370735, -15610596, -2952790, 12537546, 49995568, +41503880, -11044508, 29477972, 3130494, -22994718, 14770929, 25171192, 8516383, 10851772, -32958506, +-6788196, 3963718, 6626598, -4773856, -28797756, -10257993, 10302553, -6903086, -3116536, -24217174, +37261524, 4772783, -30863098, 17546552, 43755516, -22512608, -13250511, 6518687, 14380624, -14026826, +-27674084, 23781770, 39779452, -3081102, -15757698, 5291937, 11199664, 18274548, 25448754, 1799591, +46395848, -920197, -51864952, 525597, -5924371, 17010218, -5515275, -42149200, -1267015, -18132816, +-17929878, 25502978, 13242458, 14601815, 18130130, -37758132, -19916300, -6523519, -606127, 15430207, +434865, -7612830, 966368, -12837657, -25922812, 2639794, 40061308, -20511154, 3725884, -15908022, +-11586748, 27603754, -33881388, -237297, 14743012, -11807939, 5442261, 4355634, 8305930, 9878962, +-17947058, -21231098, 35851704, -7331509, -11772505, 18668612, -18564460, 11707544, 2201708, -7440494, +5550709, 15709380, -3073586, 2250563, -7788387, 3891240, 850404, -884226, -6971269, 8652748, +4128537, -703838, -857383, 7283728, 5796595, -6486475, -12097312, 6694244, -862752, 3484829, +550293, -2947958, 6021008, 328028, 4967130, -1825898, -1126355, -3319473, 812823, 5936719, +-1456531, 14567992, -6018323, -4210142, 486942, -6113886, 3826816, -43223476, -62003760, -54831164, +110295832, 105287368, 105076376, 296649088, 105393664, -12213276, 19523310, -205112608, -249850064, -83937080, +-140196864, -194280704, 24983824, -10773925, -32512902, 213981712, 130604584, 54570244, 334143072, 157770784, +29167122, 152371488, -36135172, -181773760, -174100256, -165839424, -229861824, -225025152, -52853868, -81204408, +-132513696, 154775584, 71257800, -55684788, 223462320, 72227392, -26243860, 252712112, 230200048, 53080964, +238889296, 242449824, -9298604, 60250876, 27439472, -233230688, -270818624, -201627232, -381252448, -360993088, +-216846992, -289538784, -217855776, 24761024, 179109792, 203320528, 436755232, 397176576, 350167616, 377354208, +278284352, 141373680, 43154756, -30522722, -212568672, -256203920, -274342112, -309107712, -293347872, -249975680, +-161589024, -117308440, -114790520, 22028350, 69610144, 136782368, 325055488, 337662272, 230827648, 288598720, +121995328, -39716100, -95506648, -147853168, -202782048, -146757424, -98203888, -97641248, -33684356, -9064528, +838592, 52167748, 66122632, 63123136, 96505768, 60898880, 39327940, 48821432, -28745680, -26458610, +8225936, -78065328, -55330452, -20219632, -75537200, -46500000, -5207648, -75889384, -80305152, -53165252, +-78797080, -51562692, 59413356, 111162344, 176562352, 260577280, 243059184, 208193168, 195572416, 105966504, +-32239636, -162426544, -287866976, -341674304, -308279872, -249395872, -188383712, -88151520, 28366648, 112104552, +157007904, 169647456, 149630224, 133777496, 124294744, 125515048, 87298432, 41714868, 19335406, -10277320, +-35206920, -31514322, -57379152, -61457224, -43352328, -31918586, -42579768, -40274984, -51890184, -58089968, +-54074712, -36619428, -17319992, 7194070, 10759430, 7631083, 514859, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -3671660, -13821205, 7314330, 6095633, 3394635, -1464584, -435402, -1415729, -2878702, -3990562, -2825552, --4078072, -1725503, 3882651, 1322313, -202937, -5369, 2545305, 1183264, -1610613, -1734630, --1305670, -7206419, 2986613, 754304, 69793, -1487669, 935229, 126165, -1991791, 1038845, -2637110, -11274, -3290482, -838592, -1422708, -1532230, 405338, 3169686, -821413, 747861, --3767223, 2417530, -4654671, 2965138, 656593, 175020, 35433, 2949569, -3573413, -2653753, --4869956, 1290638, 874563, 237834, 2778307, -3005940, 647466, -413927, 78920, -2193655, -1927367, 877247, -1616518, 2997350, -4789426, 2188823, -2615098, 4873178, 2219424, 852014, -345745, -982474, -5975910, 4542465, -1437203, -157840, 776852, 1261110, 1080721, 1192927, -1434519, -446140, 413391, -677531, 1399623, -117038, 793495, -1826435, 609885, -299574, -387084, 707596, 1937030, -127775, -341450, 639950, 760209, -807454, 995896, -1209570, -971736, 188442, 863825, 44560, 553514, -333397, 210990, 739271, 365072, -153008, -568009, -154082, 13207561, 6292664, 8622684, 2362769, 2932926, -500364, 3374234, 354872, -2998961, -2210298, 5847061, -1482838, -6682432, -1830730, 135828, 368293, -2122788, 5125507, -281857, 2003065, 4949950, 2425583, 54761, -4832, 1177895, -4515085, -2990371, 1797444, -2152316, -1641214, 469225, 2211371, -4483946, 6321118, -651761, 933619, -1006096, 2348810, -3256122, 165893, -3430068, -3492882, 6851010, 155156, -2007897, -288300, 3943854, 2921115, --2044941, -2749853, -6052146, -1875827, -2486249, 252866, -2246268, 541166, -5880884, -2399813, -674847, -2393908, 1286343, 2369748, -1197759, -157840, 1105417, -1492501, 2305861, -169651, -2902861, 35970, -1008780, -3380139, 375273, -4192425, 1311039, 76773, 2365990, 42950, -2429878, 3141232, 2668249, 102005, -1746441, -132607, -644245, 3467112, -943282, 444529, -2208687, 2319282, -170725, 1307818, 459025, 1195075, -498216, 1446867, -557272, 2132988, -479426, 408022, -185220, 191126, 207232, 2793339, -8916352, -2873333, -2039036, 1555315, -1746978, -6087043, -2743947, -1202591, 1449015, 3243774, 1006633, 4445828, -3678103, -5292474, -1521492, 185757, -964220, -3622805, 11758547, -607201, 3118683, 709743, 353798, -257698, --1826972, -4468377, -3526168, -1092532, 2994666, -2492692, 6150393, -2079301, -587874, -5043902, --6025302, -510027, -3847754, -2124398, 8185671, -4473209, -1255204, -4342212, 1581622, 216359, --1590749, -4562866, -884226, 47782, -5202816, 622233, -2806224, 4162360, 2717641, -2379412, --1284732, -1309965, 1259499, -215285, 3285113, -1693828, -2179696, -2212982, 7464117, 6764574, --2330020, -6490233, 869194, 2026151, -221191, 1925756, -2713883, 547071, -3145527, 2251637, -158377, 7195681, 4414153, 6842420, -6228240, 2708514, 4146791, 177704, 3143379, 2292976, -456877, 4714801, -877247, -479426, 1189169, 673236, -1942936, 1894618, -1491964, -1243930, --147103, 500364, -225486, 735513, -1118839, 574452, -156229, 171799, 593242, 890132, -396748, 1028108, 922881, -688269, -962610, 772557, 257698, -1659468, -707059, 1388885, --845572, -29295972, -4744328, -8441758, -9577777, 2577517, -3241627, -8327405, -6903086, 1159104, --6800544, 969589, 10140955, -2516314, 4353486, 3303904, 8551280, 2228551, -5954972, 1372779, -9294846, -4330401, 4628364, -6848326, -6248104, 2059974, 2668249, 7315940, 431644, -4467303, -4243965, -2991982, 3257733, -361851, 4612795, -3891240, -2531883, -4341675, 60666, 812286, --1704028, 3370476, -7689602, 1013075, 7764227, 1704565, -2195802, 3013457, -3962644, -1985349, --9708774, -2850785, -317291, 1548873, 169651, 5248987, -7793755, 788663, -1064615, 3961034, -2107218, -1475321, 5563057, -4839892, -649614, -3876208, -7488276, -3120831, -1717450, -2080912, -5643587, -5007932, -8090108, 360240, 2660195, -769336, -2327872, 2828236, 3104188, -2220498, --1818382, -3102040, -1290638, 6564858, -3017215, 3642669, -1066763, -62814, -589484, -166967, --3366718, 881005, -2011118, -41876, -228170, -430034, 91805, -719407, -1045825, -977642, --272194, 391379, -639950, 1145683, 494995, -14551349, 8291971, 9394167, -530965, 5283347, -2369211, 11092827, 14688251, 1917166, 1904281, 4249334, 1807108, 2474438, -2111513, 2939905, --2445447, 3894999, 4480725, -12573517, 6510634, -1353989, -2356327, -3871376, -5124433, 2087354, -3561065, 5763846, 1099512, 1002338, -7379828, 346819, -2168959, -2433636, -1111323, 1007170, -403190, -540629, 7212861, -354872, -2422899, 2411087, -2833605, 3728032, 4865661, 5486821, -2818572, 618475, -3067144, 6125160, 1916629, 839666, 615254, 820876, 416075, -3517578, --5003100, 4535486, -4665945, 4344897, 3925600, 2916283, -668941, -3265786, 2930242, 3859565, -8504035, 3951370, 3190624, 2010582, -8379481, -2558190, 992674, -1355599, 3558381, -7223062, -328565, 2395518, -6801081, -631360, 2232309, -1635309, 828929, -3962644, 1457605, 511101, --1732482, 3119757, 1794223, 122943, 3379603, -1552094, -1550483, -347892, 667867, 1393180, -5142687, 840740, 1726577, 1215476, -91268, 1123134, -899259, -995359, -1438814, 902480, --812286, -677531, 537408, 535797, -682363, 1742146, -1077500, 1211718, 1084479, -536871, -1654099, 469225, 675384, 826781, 62814, 157840, 1927904, -170725, 27029840, 8152385, -1998234, 5288716, 13511967, 5446556, 16292958, 3992709, -3595425, -1168231, -1367947, -1554778, -4420058, 6984154, -3246995, 1500554, 4866198, -1809255, -6774774, 5382131, -639950, 2559264, --2309619, -3398393, 5534602, 1292248, -511638, -1574642, -6172942, -3050501, 3338263, 839666, --2126009, -1080721, 930934, 2324651, 6203544, 1963874, -5724655, -1310502, 365609, -1794760, -2054068, 2945811, -5769752, -6957310, -409096, 1749125, -743566, 5382668, -9927817, -2102387, --4506495, -5579163, -619012, -426276, 1459752, 5320391, -59056, 805843, 1710471, -853088, -7079717, 4529043, -5825587, -5097590, 3876745, 8591545, -751082, -4010426, 8458938, 4484483, -1953136, -3716757, -4049081, 4191888, 205622, 3172370, -1928440, -6143414, -3402151, -4179540, --2665564, 2435247, -3443490, 478352, 1452236, -1227824, 1407676, 1039382, 1196148, 718333, --2234457, 1236951, -717260, -1163936, -556198, 1660542, 1277753, 224949, -1924145, 1699733, --773631, 2931315, -480499, 407485, -2812130, -3584687, 1171989, -3374234, -680752, -518080, --1935420, -914828, 384936, -3029563, -1292248, -307090, 307627, -632434, 2105608, 302795, --839666, 13263396, 6443525, 11942693, -4029216, 95563, -3037616, 12031814, -12379706, -1760937, -3170760, -2374580, -2451890, 4025995, -1391569, -3819837, 10558103, 5964099, 1216013, 17835388, --4875325, -1191853, -3776887, 131533, 2945811, -4609574, -593242, -2394981, 6807523, -5761699, -1531693, 395137, -1809792, 615791, 4001299, 2723009, -5417565, -9453223, 221728, 1938641, -7821673, 9174587, 9136469, 827318, -5269388, 6568616, -15948824, -2630131, -6264747, -9287867, -6491843, -2141578, -3007551, 5056250, -1839320, -2725157, 13915157, 159451, -4108136, 4840428, -372588, 3681861, 2716030, 1808718, 8429947, -5061619, -3102577, 488553, -7239704, -64961, -1368484, -1844152, 2481954, 4160213, 8864276, -3352222, 2955474, 7649337, 4649302, 2260764, -1445793, -2646774, -5597416, 2855080, 4270808, -941135, 428423, -896038, -714575, -3198140, -625455, -988379, 548145, -2988224, -1498407, -2684, -520765, 2745021, 1200980, -2684, --3832722, -1752884, 1905355, -2252710, -38655, 1460826, 1505923, -2606508, 2410551, 1860795, -620086, 2463701, 2238752, -4460861, -789737, -1730872, 1207423, 2379949, 2932389, -638340, --1632625, 354872, -886374, -20679730, -31088048, -5237176, 1534377, -535797, 853625, -1451162, --6239514, -3508988, -4974646, -1333587, 5048197, 6032819, -5478768, -8069170, 6898791, 1433982, --4436701, 364535, -739808, -4918812, -4132832, 11470247, 5834176, -6160057, 3131031, 1301912, -4904853, -5975910, 6657200, -6646999, 4575751, 2995740, -1407676, -3097745, 2956011, -12396886, --6154688, 7603703, 12237436, 6797323, -8563091, 207232, -6071473, 8142721, 1684701, 2116882, -580357, -6698539, 3258270, 9961640, 1127429, 7533373, 5332202, 3454764, 5760625, 12219182, --3384434, -12285754, 5965173, 43487, -2907156, 635655, 10573673, -4307852, -7340099, 3613141, --1939715, -1240709, -2775086, -1640141, -3299609, -5735392, -2882997, 7099044, -9652402, -6047314, --3556233, -6923488, -6743099, -388158, 4199405, -6345278, -107911, -2335389, -2678986, -5713380, --3616363, -6562710, -344134, -5039071, -383326, -99858, 4638028, 3320547, -2337536, -2478733, --3354370, -983548, -2369748, -2236604, 2817499, -4445828, 1707786, 434865, -2843268, 360777, --1855963, 1136019, -954020, -3615289, -4476967, 18254, 1194538, 1926830, -836982, 856846, -1435056, 68719, -2329483, -246424, -2988224, 389231, 1411434, 1374926, -11956652, -7790534, -2020782, 1915555, 15943992, -13936095, -9534291, -5381594, -2633352, -1727114, 5158256, 4984310, --7377143, 7585449, -1755031, 3440806, -5312338, 11307575, -2195265, -4256313, 7311108, 5274220, -4254702, -7685307, -7230041, 9572945, -5007932, 2828236, 2342905, -3462281, 8136816, 2480881, --4832, 1815161, 5973763, 7670812, 2364380, -6804302, 1588601, -9713069, 5805185, 2546379, --10882910, 7730405, 1799054, -5648419, 9972914, 3185255, -2698313, 5830418, -900333, 11026792, --2515240, -2739652, -2331630, -1423782, 14328011, 3044595, 248034, 3918621, -12036109, -7498476, --8178692, 919123, 7623567, 1038308, 9454834, -12194486, -5024575, -7728257, -7186017, 17856326, --1814624, 6398965, 4570919, -3794604, -894964, -2451353, 1349694, 973347, 4866735, 3003256, -9748502, -5221607, 807991, -1630477, 2116882, -31139, -193274, 7516, -2081985, -9167071, -3424163, 2186138, 1361505, -2406256, -870805, -1142998, -5142150, -287763, -1844689, -3299609, -1864016, -2777770, 1195075, 1685775, 1285806, 2151779, -3582540, -1903207, -2430415, -2157147, -1275068, 2601140, 1491964, -799938, -493921, -589484, -1124208, 3762391, -1289027, 2692945, -1642288, -959388, 1105417, -682900, -11274, 979789, 982474, -16135118, 5031018, -6924561, -3919695, -4840428, 13032005, 2208687, -9150965, 1448478, -9328669, 7570954, 14405857, -12282533, -8108899, 3018288, -372588, 5956583, 15356656, -5864241, -27380, 4713190, -16791174, 997506, -7622493, -4650376, 5461051, 5973226, -3071975, 15074261, -7515656, -13605920, -5868536, 1657321, -355409, -2770791, -5881958, 4123169, 3794604, 24696, -9598715, -2232309, -2436857, 6428493, --4206921, 25274272, -3181497, 3636227, -1166621, -1052267, -12257837, 1279900, 9084393, 7374459, -24627880, -2625836, -2386928, -5078262, -973347, -6910603, -526670, 9900973, -5259725, -996969, -1788317, 2354716, 9710384, 7926362, 2234994, 19092204, -3606162, -17634598, -17678622, -12443057, --2566780, 5603859, -1742146, -4615479, 8413841, -485868, 7471633, -4577362, -872952, 6092948, -5149666, -1843078, -1803349, 646929, 1579474, -1934346, -4125316, -5906117, -1997697, -2493229, --744640, -4202089, 3167002, -1242856, 954557, -2113124, -3038689, 4106526, 1831804, -2052458, --559420, -1676648, -1811403, 1809255, -1126355, -1988033, -4012573, 3204583, 1262720, -1693828, --3037616, -4013647, -752156, -2749316, -2805151, 3447785, -2015413, 712428, 145492, -1438277, -1474784, 701690, -546535, -718870, -887448, 28727426, -20703890, -15705622, -5025112, -9923522, --11349451, 13935558, 5653788, 2794950, -4378719, -2778307, 16908750, -4905390, -7103876, -20219632, --2916820, -486405, 9553618, 3537443, -4102768, 1261110, 8378408, 3800509, 5243618, 12964359, -16266115, 4523138, -6046777, 4201015, -9753871, 6706055, 5492727, -3481071, 338229, -7553774, -3063386, 212601, -14657650, 14299557, -1279363, -6645925, 8827232, -13561896, -3133179, 14930917, -8517994, -186831, 561567, -18791556, 6599218, 10501732, 5992553, 3489661, -1028108, -13871134, --40761388, -3252901, 8309688, 11454141, -1046361, -11956652, 20137492, -9329743, 9190693, 15244450, -12562242, 2334852, 15196668, 1727114, 5415954, 3214246, 9221295, 1811403, 2924873, 19354734, --6494528, -4232154, 16363825, 8529268, 4433480, -6767795, 1637456, 13308493, -1454383, 10661719, -2441689, 2315524, 6706055, -3624953, -342524, 700080, -718333, -3027415, 5218922, 2414309, --7303592, 3980361, 2698313, 3830037, 1875290, -2119030, -34897, -2350958, -2698850, 3191698, -4066797, 1671279, 2447595, -2210835, -2158221, -1487132, -2647847, -3472481, -5180268, 700080, --3344706, 2392834, -1265942, 1363652, -4800700, -3188476, -1066763, -1624571, -1478543, -2240899, -534187, 4474819, 4675609, 1695438, 290447, -2761127, 3668976, 14352170, 13651017, -3611531, --6997576, -1360968, -4129611, 15703474, 10207527, -27426588, -3009162, 2195802, -12865575, 5060009, --18765786, 14208289, 3446175, -2261837, 7784092, 3815005, -3951907, -6363531, -4606890, 20073604, -802622, -226023, 4449049, -2799245, 8063801, 23653996, 9663676, -3546032, -4196720, -3570192, -13741748, 4798552, 13914083, 9536975, 6941741, 3914863, -6063420, -6766721, 6206228, -14191646, -2406792, -7590281, -6259915, 368830, 9729175, 1251446, 782758, 3371549, -3061238, 16159278, -21114596, 24038932, -113817, 10902238, -14342506, 5411122, 8311836, -6709276, 12295418, -9971840, --19643570, 2471754, -10292889, -1682017, 930397, -10582799, 2631204, 14132590, -8667244, -8613557, -7200513, 13077102, -579821, -5020280, 12175159, 926102, 2737505, -8515310, -1711545, -734976, -10055592, -5256503, 836445, -2525441, 2223719, -364535, 1971390, 2371359, 1814087, -163209, -1020592, 2006287, 2857227, -2477123, -4515621, -1012539, -643708, -4422743, -5115306, -599685, --2329483, 3477850, -3442416, 2586107, 4919348, -567473, -8003135, -1103270, 1638530, -3114925, --3739306, 259846, 2305861, 12246562, 4258997, 3553012, -308701, -33286, -1000727, 3331821, --809064, 3562675, 10612864, 9237401, -1141924, -920734, -1699733, 108985, -17106318, 31129386, -1944010, 8109972, 23763518, -8768713, 2409477, -4516158, 6250788, -6836514, 6843494, -16718160, --19870666, -584116, -11775727, -876710, -1115618, -1309965, -3371549, 1293859, -5520644, 4984310, --15796353, -6284074, -21304112, -1051730, 4871567, 10236518, 22982906, 12775380, 3966402, 2962454, -6595459, 5124970, 3874061, 9315784, 9729175, -3060701, -19456202, -19254876, -13228499, -7871602, -1930051, 6535330, -7127498, -11271068, -19734838, 606127, -7538742, 18047452, -8031052, 4563940, --13692893, -6568616, -2397666, -5590437, -26459682, -27529130, 7566659, 2863670, 722091, 14179835, -8075613, 11391864, 9155260, -17131550, -3726958, 32266478, -5956046, -12142946, 4750234, -7043747, -3307662, -19839528, 8075076, -9074192, 1377611, -1257889, 13095355, 826781, 5267241, -11261941, -2172180, -6325950, -2845416, -7706245, -5844914, 4115116, 4582730, -10286447, -3436511, 810138, -1995549, 2636036, 1411434, -3947612, 4573604, 1933272, 1607392, -470836, -231928, 1492501, -4645007, -4850092, 4696547, -1157494, -85362, -1677722, 3019899, -2818572, -1606855, 4149475, --7580081, -76773, 1595044, -4591320, -1504312, -10672457, 7846369, 9214315, -504122, 2241973, -2554432, 3202435, -4663261, 5180268, 3391951, 4066260, -3345780, 2266669, 3221226, 4711579, -18467822, 14069776, 1833951, 14949171, -2799245, -6077379, 8180302, -11372537, -22275848, -33263448, -2788508, 739808, 12869870, 9441412, -12411382, -6315750, -32526324, -2149094, -15149960, 3569655, --7625715, -3604551, -6260989, -2377801, -2537252, -11264625, -5085242, -13134010, 10501732, -2612951, -8986682, 23332410, -12309376, 6733972, -1913945, -5757941, 6002217, -12441447, -21205328, 10203232, -4980015, 10147934, 6332393, -44394392, -20163798, 5939403, -14785962, -1235877, -12633109, 18604724, -22389128, -1082869, 24748676, 3504693, 11242077, -3256659, -819802, -13833016, 8767639, 17901960, -3876745, 29801704, 703838, 4109210, -8748848, -13089987, 17634598, 27966142, 9759776, 5435281, -2755222, 10579041, 912681, 2025614, -26167626, -19189378, -1987496, 1398549, 3468186, 19678466, -21160230, -3894999, 1389959, -7262253, 4406100, -13551696, 346819, -14341970, -12151536, 6274411, --354335, 1580011, -8067559, 5179194, 6334540, 4261145, 6415071, 7575786, 657130, -4300336, -3323768, -5874442, -1433982, -3625489, -8609799, -2473364, -4762582, -3834332, 7145215, 3946001, --2546379, -5662378, -8527121, -5585068, 5754183, -5667746, -560493, 455267, 3938485, -8047158, --6426345, 2849711, 9991705, 6367289, 2571612, -16106, -6010270, -736050, -3653944, -6968585, -11900281, -17418776, -8582955, -32544578, -40553620, -30071214, -13728863, 9196599, -259846, -7132330, --14812805, 32212, 26769458, 13107703, -23404350, -3851512, -4832375, -16542067, -2942590, 1225139, -11275900, 8302172, -17456358, 12555263, -9856950, 5332739, -9181029, 2789045, -13369696, -4996658, -6642167, -24172076, -4606890, -9110163, 7956964, -6012418, -22321482, 26286810, 25361782, 350040, --10218801, 14322642, -34212100, -10719701, 10222022, -11514270, -7248294, -878321, -11038066, 2199560, --2820720, -22944790, 9880572, -2918967, -7022272, -7845832, -6027987, -1430761, -6249178, -9725417, -19080392, -9061307, -8963597, 9063992, -201863, 31256088, -6212134, -19367082, 11121818, -10111427, --8550206, -15108621, 10528575, 19279572, -37556268, 2957622, 31794032, -5158256, -1915555, -12553116, -21694416, -1525250, -11708081, -1560147, -10987063, -8860518, 15736223, -9411884, -731755, -5221607, --6491843, -10998338, 4716948, 3684545, 5799817, -1306744, -8804683, -6080600, 390305, 1561758, --13441100, -3867618, -8620536, 13448616, -4421669, 965294, 1986959, 1669132, 1503239, -10924786, -7454990, 374736, -4095788, 9812927, 1599875, 12838194, -2190433, 14833206, 3524558, 5992016, -7349226, -9590125, -6238440, 4696010, -7801271, -6153615, 2442226, 45097, -5449777, -12963822, -6444599, -25663504, 51269024, 36568964, -695785, -9774272, 8138963, -30735322, 516470, 38264400, --6737193, -13292387, 636729, 43370044, -6196564, 9531606, -9208410, -19594714, -15841987, -3993783, --7227356, 8010651, 11107322, 625455, -16294032, -22821308, -20992726, -3365107, -4591320, -11303280, -10649908, 8629126, -9152575, -11170673, -12195023, 6926709, 2440078, 8507256, 21721260, -78383, --18444738, 12623446, 5018133, 4303021, 1386738, -284542, -8846559, 16104517, 8291971, -6352794, --7576859, -5010616, -20936892, 5876589, 15504295, 4758824, -14625437, 17315160, 12738336, 7215545, -2030983, -8960912, 4855461, -29882772, 4807142, -1768453, 26869316, -9508521, -13108777, 5778342, --6772627, -455267, -19184008, -3394098, -5035313, 26080116, -16732119, -31376884, -20374252, -40804336, -8190503, -8210367, -2550137, -21720724, -13770739, -36042292, -15847892, -12521440, -1692217, 8998493, --11494943, -1911261, -2021319, -1705639, -3026878, 7893076, -13370770, 6035503, -5128728, -10412611, -1845762, -2896956, 9934259, 5178657, 423591, -5141076, 12777528, 11870216, 7310035, -4371740, --6008123, -6034966, -5465883, 13333189, 21788906, 2698850, 20052666, 21923660, 7532836, 567473, --19151796, -1897302, 3930969, 3038153, -1512902, -5148055, -16139413, -175557, 11391864, 1978906, --12014097, -2931852, -8935143, 48922900, 1705102, 8294119, -8356933, -15773267, -21721798, -6904697, -5847061, 14470819, 11584601, -10122701, -290984, -21301964, -8092792, 7900056, -18345416, -9520332, --7100118, 26478474, 13485124, 14658187, 13436268, -15051176, 2564096, 5712844, 5972689, -1288490, -17498770, -3726958, 7569880, 13936095, 5031554, 3996467, 11384885, 16140487, -9654550, -18603650, -12302934, -1872069, -191663, -19677930, -18719614, 4406100, -9492951, -7031399, 15967078, -16564615, -21197274, 13998909, -9785546, 11442867, -12838194, -12534325, -15612206, 22298934, -15800648, 7117298, -6499360, -25266218, 2141041, 3064996, -20316270, -34429532, -31160524, 22613002, -23490786, -322123, --21151640, -4723927, -15204721, -1166084, 9375914, 5990943, -15472620, 15821586, 18003966, 38289632, -9725417, -25648470, 8788040, -15771657, 8290361, -22565758, 11857868, -9646497, 1428614, -4614406, -8983461, -2775623, -9462887, -21683142, -21900038, 2413235, 1817308, 13695577, -10030896, -937377, -21100100, 6043019, 14543833, 4479651, -4144107, -1653026, -5354751, -14330158, 4857608, -17288854, --10467372, 3671660, 14025753, -18884434, 10220948, 1916092, 13245679, -4645007, 7292855, 13589277, -14748918, 15046344, -7164006, 7296076, 11500849, 12632036, 2205466, 7496329, 3686156, -5911486, -23159538, 10746545, 11536819, -9826885, 880468, -21431886, -340376, 3600256, 4188130, -18901614, --19663970, -31130460, 21627844, 2209761, 7450158, -5129265, 11475079, -8534100, -8360154, 6424734, -16484084, 3845606, 10852845, 33501282, -4815732, -20244866, -42945916, -6134824, -16568373, -8186745, --10193568, -19981798, -14017700, -29841432, -3414499, -476205, 10495826, 30917322, -25691958, -9926743, --4176856, 10121627, 11017128, 30635464, 4234301, -35003448, -7968775, 7177427, 27447526, 7184944, --42315628, -16995722, 38448012, 3498251, 38357816, -22513144, 1326071, 3005940, 23259396, -2143189, -21176874, 31780074, 4594542, 26967562, 19006304, 4594005, 37427956, 31917512, 10457172, 49760416, -38312184, 23988466, -40176736, -2575370, 15910169, 9215389, -345208, -29161218, -34794604, -18010946, --49856516, -7836168, -37038724, -14111652, -9419400, -53446036, -50636592, -35252016, 17604534, 634581, --11583527, -535260, -3697967, -978179, -9718437, -5126581, 12617540, 5082557, 2328946, -1560147, -2155000, -2296734, 7894150, -1149441, -13177497, 23388244, 3943854, 5763309, -6706592, 1307281, --617402, 12365211, -425739, 7300371, -3980361, -12495134, 5308043, 10061498, 25926034, 23079006, -1742146, 21475, 16642998, 8432095, 19407346, 16210817, -4842039, 18665928, 10539850, 4020090, -11808476, 7799124, -6280853, -2631741, -14421963, 9358734, -12836584, -5459441, 7301982, -27711666, -29579976, -12831215, 19377818, 9430138, -24779814, 3600793, 15479599, -9846749, -25884158, 17084306, --6971806, 14597520, -8644159, 3650185, 6061810, -16077673, -1821603, -7146826, -269509, -26244398, --20474646, 25314538, 1243930, 10173704, -19980724, 20677046, 18659486, -14092861, 11922292, -20409148, --4269735, -11483669, 14832670, 36033164, -533113, 43744780, -10989211, -2219424, 2218351, 4361003, --2868501, -24874304, 43179452, 27931246, -3205656, 23437100, 18599356, 24332600, -9119289, -708133, --43549356, 19622632, 20780662, -5842230, -7279970, 27213986, 14668387, 14273787, 34269544, 5533529, --17277042, -21264384, 6617471, -6794639, -24918864, 20643760, -28898688, 1067836, 6713034, -20900922, --32118840, -22202296, -7990250, 2117419, 26391500, 17324288, 8607651, -49827528, -13680008, 29696478, --2097555, -11009075, 9109089, -27100170, -16485158, 22416508, 178241, 115964, -9268539, -66035, -14057428, -4481262, -9848360, 7602629, -3208341, -19347218, -10095321, 1666984, -1127429, -1389422, -614180, -8611946, 327491, -13357885, -17358110, 2164127, -1327682, -29286308, -2953864, -17823578, --9846749, -3449396, 4715337, 5088463, 16259672, -14921790, -9690520, 2999498, 15852724, -16493211, --17097728, 24289114, -3507915, -1600412, -4366371, -375810, -9960029, 4149475, 11796665, 6092411, -10307385, 495532, 4062502, 34897, 1740536, -36783172, 20883742, 32648730, -714038, 37613712, -11264625, -32523640, -20172388, -2490544, -11437498, -19752018, 20875152, 24609088, -2461553, 17153026, -22902914, -18080202, 16125455, 27657442, -1775432, -37152004, 14527727, -971736, -7487739, 10364293, -28021440, -8890045, -14264123, 6993281, -12430172, -16052440, -1228361, 24811490, 20998632, -34998076, -11059004, 15128485, -23672786, -14951855, 28349468, -7629473, -41477572, -5163625, 34693672, -11225971, --59882580, 62836984, -17936320, -7092602, -31008054, 40657772, 13106093, -13806172, 29381334, -17171816, --13044353, -7398618, 75343928, 25352656, -31668404, -27764280, 28846074, -6519224, 42032160, 967978, -31526670, -43321188, 34687228, 60143500, 5578089, -6244346, -10645613, -10253698, -24007256, 56767120, -37934224, -33618320, 9412421, -35344360, -6174553, 4061965, 7328825, 5226439, 10409390, 1224066, --39068096, 18479096, 2291365, -3803194, -929860, 18171470, -7861938, 4222490, -5782637, 9549323, --3782793, 2659122, -6321655, 11967926, 377420, -2088428, 6570226, 9672803, -21433498, 2854006, -13349832, 5394479, -15472620, 8494908, 24077586, -23397908, -36866388, 7511898, 4472135, 14687714, -14019310, -1645509, -33310692, -10942503, 8993125, 4895726, 9254044, -4709432, 1301375, -1031866, --11179263, 9983651, -8766565, 27043262, 61847528, 11956652, -23916526, -5699422, -5866389, 10845866, -9306657, -19313932, -27538256, 7344394, -23304492, 4632659, -14507326, -16687559, -3628174, 2821794, -7904351, -18599356, -7512972, -7377680, -23145042, 19406272, -7281580, 1246077, -3435437, -15444166, -6124087, 4339528, 536334, -3339874, 171262, -569620, -9129490, -19646254, 8399345, -9754408, -8519068, 5986111, -19634442, -15898358, -1806571, -2287070, -2238215, -4221416, 16004659, -11075647, -1637993, -20853676, 17804250, -20431160, -10813117, 10158671, 288300, -16373489, 13020193, -22014392, -1680943, 6631967, -578210, 2413235, 10557030, 5013301, -22680112, 11488501, 1620276, -13681618, -19471234, 7675644, -21520470, -2346126, -17155174, -2248952, 7007776, 5768678, -21906480, 27939836, --14744623, -8094940, 15566035, 10335839, 2571612, 10401874, -833761, 14549202, -6430640, 3002182, --1762547, 7059853, 5531918, -4137127, -4996121, 5624797, -6924024, 780610, 1260036, 967441, --4041027, 736050, -3762928, -6250788, -3355980, -6802692, -290447, 5200669, 9046275, 3394635, -1147293, 4807679, 5959804, -8101382, 12674448, 3369939, -298500, -8214125, -4606353, 4018479, -10060961, -1859721, -88047, -4808753, 1760937, 1515587, -3972845, -5482526, -4810364, -12868259, --4586488, -37123548, -46348064, -16995186, 140025600, 112070728, 74327096, 135528224, -53813792, -128220344, --41096932, -207234864, -80744312, 5864241, -48556216, 95051384, 129866928, 21242908, 82568600, 141779024, -3122441, 39082056, -9192304, -166630768, -137820672, -104167992, -103435160, -50987168, 79103096, 42489036, -61226908, 174037440, 73867528, 10805064, 104263552, 48442936, -59626496, 20330228, -50007376, -168875968, --40581000, -88238496, -173916112, -28923384, 4083440, -42518564, 117759952, 135847664, 53641996, 159742176, -161722704, 30163018, 62375812, 28030030, -102149888, -114591872, -107188424, -192924032, -170415712, -64983928, --79121352, 16672526, 103380400, 141463344, 116963232, 180706448, 134122168, 71931576, 9993852, -22582402, --104210400, -127000576, -93730144, -111598816, -93020400, -4106526, -5240934, 21129628, 100411504, 48358648, -61341260, 96148752, -2008434, -30012694, -15902116, -60358248, -34495568, -20273320, -22270480, 24645596, -50837380, 19662898, 28128814, 31978716, -23396834, -8398272, -9985262, -61582852, 8438000, 25622702, --66715336, -888521, -6235756, -67350456, 24927990, 11272679, -76272712, 48027936, 71595496, 16767552, -144330224, 89754616, -1946694, 76768784, 13698261, -97773320, -81282256, -127298536, -180623232, -135613600, --88377544, -47559784, 61372936, 133379672, 156292784, 194695168, 190727152, 135007472, 29628832, -14517526, --97274032, -177209808, -172392464, -153183760, -128762584, -27935004, 13528610, 22120692, 88153128, 93741960, -64961380, 66937064, 51891256, 22429392, 31666258, 22938346, -5954972, -11979201, -28184112, -56296820, --61058864, -60413548, -61165704, -45817100, -9196599, 4551592, 16142098, 19381040, 10968273, 4398047, -1093069, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +13821205, 7314330, 6095633, 3394635, -1464584, -435402, -1415729, -2878702, -3990562, -2825552, +-4078072, -1725503, 3882651, 1322313, -202937, -5369, 2545305, 1183264, -1610613, -1734630, +-1305670, -7206419, 2986613, 754304, 69793, -1487669, 935229, 126165, -1991791, 1038845, +2637110, -11274, -3290482, -838592, -1422708, -1532230, 405338, 3169686, -821413, 747861, +-3767223, 2417530, -4654671, 2965138, 656593, 175020, 35433, 2949569, -3573413, -2653753, +-4869956, 1290638, 874563, 237834, 2778307, -3005940, 647466, -413927, 78920, -2193655, +1927367, 877247, -1616518, 2997350, -4789426, 2188823, -2615098, 4873178, 2219424, 852014, +345745, -982474, -5975910, 4542465, -1437203, -157840, 776852, 1261110, 1080721, 1192927, +1434519, -446140, 413391, -677531, 1399623, -117038, 793495, -1826435, 609885, -299574, +387084, 707596, 1937030, -127775, -341450, 639950, 760209, -807454, 995896, -1209570, +971736, 188442, 863825, 44560, 553514, -333397, 210990, 739271, 365072, -153008, +568009, -154082, 13207561, 6292664, 8622684, 2362769, 2932926, -500364, 3374234, 354872, +2998961, -2210298, 5847061, -1482838, -6682432, -1830730, 135828, 368293, -2122788, 5125507, +281857, 2003065, 4949950, 2425583, 54761, -4832, 1177895, -4515085, -2990371, 1797444, +2152316, -1641214, 469225, 2211371, -4483946, 6321118, -651761, 933619, -1006096, 2348810, +3256122, 165893, -3430068, -3492882, 6851010, 155156, -2007897, -288300, 3943854, 2921115, +-2044941, -2749853, -6052146, -1875827, -2486249, 252866, -2246268, 541166, -5880884, -2399813, +674847, -2393908, 1286343, 2369748, -1197759, -157840, 1105417, -1492501, 2305861, -169651, +2902861, 35970, -1008780, -3380139, 375273, -4192425, 1311039, 76773, 2365990, 42950, +2429878, 3141232, 2668249, 102005, -1746441, -132607, -644245, 3467112, -943282, 444529, +2208687, 2319282, -170725, 1307818, 459025, 1195075, -498216, 1446867, -557272, 2132988, +479426, 408022, -185220, 191126, 207232, 2793339, -8916352, -2873333, -2039036, 1555315, +1746978, -6087043, -2743947, -1202591, 1449015, 3243774, 1006633, 4445828, -3678103, -5292474, +1521492, 185757, -964220, -3622805, 11758547, -607201, 3118683, 709743, 353798, -257698, +-1826972, -4468377, -3526168, -1092532, 2994666, -2492692, 6150393, -2079301, -587874, -5043902, +-6025302, -510027, -3847754, -2124398, 8185671, -4473209, -1255204, -4342212, 1581622, 216359, +-1590749, -4562866, -884226, 47782, -5202816, 622233, -2806224, 4162360, 2717641, -2379412, +-1284732, -1309965, 1259499, -215285, 3285113, -1693828, -2179696, -2212982, 7464117, 6764574, +-2330020, -6490233, 869194, 2026151, -221191, 1925756, -2713883, 547071, -3145527, 2251637, +158377, 7195681, 4414153, 6842420, -6228240, 2708514, 4146791, 177704, 3143379, 2292976, +456877, 4714801, -877247, -479426, 1189169, 673236, -1942936, 1894618, -1491964, -1243930, +-147103, 500364, -225486, 735513, -1118839, 574452, -156229, 171799, 593242, 890132, +396748, 1028108, 922881, -688269, -962610, 772557, 257698, -1659468, -707059, 1388885, +-845572, -29295972, -4744328, -8441758, -9577777, 2577517, -3241627, -8327405, -6903086, 1159104, +-6800544, 969589, 10140955, -2516314, 4353486, 3303904, 8551280, 2228551, -5954972, 1372779, +9294846, -4330401, 4628364, -6848326, -6248104, 2059974, 2668249, 7315940, 431644, -4467303, +4243965, -2991982, 3257733, -361851, 4612795, -3891240, -2531883, -4341675, 60666, 812286, +-1704028, 3370476, -7689602, 1013075, 7764227, 1704565, -2195802, 3013457, -3962644, -1985349, +-9708774, -2850785, -317291, 1548873, 169651, 5248987, -7793755, 788663, -1064615, 3961034, +2107218, -1475321, 5563057, -4839892, -649614, -3876208, -7488276, -3120831, -1717450, -2080912, +5643587, -5007932, -8090108, 360240, 2660195, -769336, -2327872, 2828236, 3104188, -2220498, +-1818382, -3102040, -1290638, 6564858, -3017215, 3642669, -1066763, -62814, -589484, -166967, +-3366718, 881005, -2011118, -41876, -228170, -430034, 91805, -719407, -1045825, -977642, +-272194, 391379, -639950, 1145683, 494995, -14551349, 8291971, 9394167, -530965, 5283347, +2369211, 11092827, 14688251, 1917166, 1904281, 4249334, 1807108, 2474438, -2111513, 2939905, +-2445447, 3894999, 4480725, -12573517, 6510634, -1353989, -2356327, -3871376, -5124433, 2087354, +3561065, 5763846, 1099512, 1002338, -7379828, 346819, -2168959, -2433636, -1111323, 1007170, +403190, -540629, 7212861, -354872, -2422899, 2411087, -2833605, 3728032, 4865661, 5486821, +2818572, 618475, -3067144, 6125160, 1916629, 839666, 615254, 820876, 416075, -3517578, +-5003100, 4535486, -4665945, 4344897, 3925600, 2916283, -668941, -3265786, 2930242, 3859565, +8504035, 3951370, 3190624, 2010582, -8379481, -2558190, 992674, -1355599, 3558381, -7223062, +328565, 2395518, -6801081, -631360, 2232309, -1635309, 828929, -3962644, 1457605, 511101, +-1732482, 3119757, 1794223, 122943, 3379603, -1552094, -1550483, -347892, 667867, 1393180, +5142687, 840740, 1726577, 1215476, -91268, 1123134, -899259, -995359, -1438814, 902480, +-812286, -677531, 537408, 535797, -682363, 1742146, -1077500, 1211718, 1084479, -536871, +1654099, 469225, 675384, 826781, 62814, 157840, 1927904, -170725, 27029840, 8152385, +1998234, 5288716, 13511967, 5446556, 16292958, 3992709, -3595425, -1168231, -1367947, -1554778, +4420058, 6984154, -3246995, 1500554, 4866198, -1809255, -6774774, 5382131, -639950, 2559264, +-2309619, -3398393, 5534602, 1292248, -511638, -1574642, -6172942, -3050501, 3338263, 839666, +-2126009, -1080721, 930934, 2324651, 6203544, 1963874, -5724655, -1310502, 365609, -1794760, +2054068, 2945811, -5769752, -6957310, -409096, 1749125, -743566, 5382668, -9927817, -2102387, +-4506495, -5579163, -619012, -426276, 1459752, 5320391, -59056, 805843, 1710471, -853088, +7079717, 4529043, -5825587, -5097590, 3876745, 8591545, -751082, -4010426, 8458938, 4484483, +1953136, -3716757, -4049081, 4191888, 205622, 3172370, -1928440, -6143414, -3402151, -4179540, +-2665564, 2435247, -3443490, 478352, 1452236, -1227824, 1407676, 1039382, 1196148, 718333, +-2234457, 1236951, -717260, -1163936, -556198, 1660542, 1277753, 224949, -1924145, 1699733, +-773631, 2931315, -480499, 407485, -2812130, -3584687, 1171989, -3374234, -680752, -518080, +-1935420, -914828, 384936, -3029563, -1292248, -307090, 307627, -632434, 2105608, 302795, +-839666, 13263396, 6443525, 11942693, -4029216, 95563, -3037616, 12031814, -12379706, -1760937, +3170760, -2374580, -2451890, 4025995, -1391569, -3819837, 10558103, 5964099, 1216013, 17835388, +-4875325, -1191853, -3776887, 131533, 2945811, -4609574, -593242, -2394981, 6807523, -5761699, +1531693, 395137, -1809792, 615791, 4001299, 2723009, -5417565, -9453223, 221728, 1938641, +7821673, 9174587, 9136469, 827318, -5269388, 6568616, -15948824, -2630131, -6264747, -9287867, +6491843, -2141578, -3007551, 5056250, -1839320, -2725157, 13915157, 159451, -4108136, 4840428, +372588, 3681861, 2716030, 1808718, 8429947, -5061619, -3102577, 488553, -7239704, -64961, +1368484, -1844152, 2481954, 4160213, 8864276, -3352222, 2955474, 7649337, 4649302, 2260764, +1445793, -2646774, -5597416, 2855080, 4270808, -941135, 428423, -896038, -714575, -3198140, +625455, -988379, 548145, -2988224, -1498407, -2684, -520765, 2745021, 1200980, -2684, +-3832722, -1752884, 1905355, -2252710, -38655, 1460826, 1505923, -2606508, 2410551, 1860795, +620086, 2463701, 2238752, -4460861, -789737, -1730872, 1207423, 2379949, 2932389, -638340, +-1632625, 354872, -886374, -20679730, -31088048, -5237176, 1534377, -535797, 853625, -1451162, +-6239514, -3508988, -4974646, -1333587, 5048197, 6032819, -5478768, -8069170, 6898791, 1433982, +-4436701, 364535, -739808, -4918812, -4132832, 11470247, 5834176, -6160057, 3131031, 1301912, +4904853, -5975910, 6657200, -6646999, 4575751, 2995740, -1407676, -3097745, 2956011, -12396886, +-6154688, 7603703, 12237436, 6797323, -8563091, 207232, -6071473, 8142721, 1684701, 2116882, +580357, -6698539, 3258270, 9961640, 1127429, 7533373, 5332202, 3454764, 5760625, 12219182, +-3384434, -12285754, 5965173, 43487, -2907156, 635655, 10573673, -4307852, -7340099, 3613141, +-1939715, -1240709, -2775086, -1640141, -3299609, -5735392, -2882997, 7099044, -9652402, -6047314, +-3556233, -6923488, -6743099, -388158, 4199405, -6345278, -107911, -2335389, -2678986, -5713380, +-3616363, -6562710, -344134, -5039071, -383326, -99858, 4638028, 3320547, -2337536, -2478733, +-3354370, -983548, -2369748, -2236604, 2817499, -4445828, 1707786, 434865, -2843268, 360777, +-1855963, 1136019, -954020, -3615289, -4476967, 18254, 1194538, 1926830, -836982, 856846, +1435056, 68719, -2329483, -246424, -2988224, 389231, 1411434, 1374926, -11956652, -7790534, +2020782, 1915555, 15943992, -13936095, -9534291, -5381594, -2633352, -1727114, 5158256, 4984310, +-7377143, 7585449, -1755031, 3440806, -5312338, 11307575, -2195265, -4256313, 7311108, 5274220, +4254702, -7685307, -7230041, 9572945, -5007932, 2828236, 2342905, -3462281, 8136816, 2480881, +-4832, 1815161, 5973763, 7670812, 2364380, -6804302, 1588601, -9713069, 5805185, 2546379, +-10882910, 7730405, 1799054, -5648419, 9972914, 3185255, -2698313, 5830418, -900333, 11026792, +-2515240, -2739652, -2331630, -1423782, 14328011, 3044595, 248034, 3918621, -12036109, -7498476, +-8178692, 919123, 7623567, 1038308, 9454834, -12194486, -5024575, -7728257, -7186017, 17856326, +-1814624, 6398965, 4570919, -3794604, -894964, -2451353, 1349694, 973347, 4866735, 3003256, +9748502, -5221607, 807991, -1630477, 2116882, -31139, -193274, 7516, -2081985, -9167071, +3424163, 2186138, 1361505, -2406256, -870805, -1142998, -5142150, -287763, -1844689, -3299609, +1864016, -2777770, 1195075, 1685775, 1285806, 2151779, -3582540, -1903207, -2430415, -2157147, +1275068, 2601140, 1491964, -799938, -493921, -589484, -1124208, 3762391, -1289027, 2692945, +1642288, -959388, 1105417, -682900, -11274, 979789, 982474, -16135118, 5031018, -6924561, +3919695, -4840428, 13032005, 2208687, -9150965, 1448478, -9328669, 7570954, 14405857, -12282533, +8108899, 3018288, -372588, 5956583, 15356656, -5864241, -27380, 4713190, -16791174, 997506, +7622493, -4650376, 5461051, 5973226, -3071975, 15074261, -7515656, -13605920, -5868536, 1657321, +355409, -2770791, -5881958, 4123169, 3794604, 24696, -9598715, -2232309, -2436857, 6428493, +-4206921, 25274272, -3181497, 3636227, -1166621, -1052267, -12257837, 1279900, 9084393, 7374459, +24627880, -2625836, -2386928, -5078262, -973347, -6910603, -526670, 9900973, -5259725, -996969, +1788317, 2354716, 9710384, 7926362, 2234994, 19092204, -3606162, -17634598, -17678622, -12443057, +-2566780, 5603859, -1742146, -4615479, 8413841, -485868, 7471633, -4577362, -872952, 6092948, +5149666, -1843078, -1803349, 646929, 1579474, -1934346, -4125316, -5906117, -1997697, -2493229, +-744640, -4202089, 3167002, -1242856, 954557, -2113124, -3038689, 4106526, 1831804, -2052458, +-559420, -1676648, -1811403, 1809255, -1126355, -1988033, -4012573, 3204583, 1262720, -1693828, +-3037616, -4013647, -752156, -2749316, -2805151, 3447785, -2015413, 712428, 145492, -1438277, +1474784, 701690, -546535, -718870, -887448, 28727426, -20703890, -15705622, -5025112, -9923522, +-11349451, 13935558, 5653788, 2794950, -4378719, -2778307, 16908750, -4905390, -7103876, -20219632, +-2916820, -486405, 9553618, 3537443, -4102768, 1261110, 8378408, 3800509, 5243618, 12964359, +16266115, 4523138, -6046777, 4201015, -9753871, 6706055, 5492727, -3481071, 338229, -7553774, +3063386, 212601, -14657650, 14299557, -1279363, -6645925, 8827232, -13561896, -3133179, 14930917, +8517994, -186831, 561567, -18791556, 6599218, 10501732, 5992553, 3489661, -1028108, -13871134, +-40761388, -3252901, 8309688, 11454141, -1046361, -11956652, 20137492, -9329743, 9190693, 15244450, +12562242, 2334852, 15196668, 1727114, 5415954, 3214246, 9221295, 1811403, 2924873, 19354734, +-6494528, -4232154, 16363825, 8529268, 4433480, -6767795, 1637456, 13308493, -1454383, 10661719, +2441689, 2315524, 6706055, -3624953, -342524, 700080, -718333, -3027415, 5218922, 2414309, +-7303592, 3980361, 2698313, 3830037, 1875290, -2119030, -34897, -2350958, -2698850, 3191698, +4066797, 1671279, 2447595, -2210835, -2158221, -1487132, -2647847, -3472481, -5180268, 700080, +-3344706, 2392834, -1265942, 1363652, -4800700, -3188476, -1066763, -1624571, -1478543, -2240899, +534187, 4474819, 4675609, 1695438, 290447, -2761127, 3668976, 14352170, 13651017, -3611531, +-6997576, -1360968, -4129611, 15703474, 10207527, -27426588, -3009162, 2195802, -12865575, 5060009, +-18765786, 14208289, 3446175, -2261837, 7784092, 3815005, -3951907, -6363531, -4606890, 20073604, +802622, -226023, 4449049, -2799245, 8063801, 23653996, 9663676, -3546032, -4196720, -3570192, +13741748, 4798552, 13914083, 9536975, 6941741, 3914863, -6063420, -6766721, 6206228, -14191646, +2406792, -7590281, -6259915, 368830, 9729175, 1251446, 782758, 3371549, -3061238, 16159278, +21114596, 24038932, -113817, 10902238, -14342506, 5411122, 8311836, -6709276, 12295418, -9971840, +-19643570, 2471754, -10292889, -1682017, 930397, -10582799, 2631204, 14132590, -8667244, -8613557, +7200513, 13077102, -579821, -5020280, 12175159, 926102, 2737505, -8515310, -1711545, -734976, +10055592, -5256503, 836445, -2525441, 2223719, -364535, 1971390, 2371359, 1814087, -163209, +1020592, 2006287, 2857227, -2477123, -4515621, -1012539, -643708, -4422743, -5115306, -599685, +-2329483, 3477850, -3442416, 2586107, 4919348, -567473, -8003135, -1103270, 1638530, -3114925, +-3739306, 259846, 2305861, 12246562, 4258997, 3553012, -308701, -33286, -1000727, 3331821, +-809064, 3562675, 10612864, 9237401, -1141924, -920734, -1699733, 108985, -17106318, 31129386, +1944010, 8109972, 23763518, -8768713, 2409477, -4516158, 6250788, -6836514, 6843494, -16718160, +-19870666, -584116, -11775727, -876710, -1115618, -1309965, -3371549, 1293859, -5520644, 4984310, +-15796353, -6284074, -21304112, -1051730, 4871567, 10236518, 22982906, 12775380, 3966402, 2962454, +6595459, 5124970, 3874061, 9315784, 9729175, -3060701, -19456202, -19254876, -13228499, -7871602, +1930051, 6535330, -7127498, -11271068, -19734838, 606127, -7538742, 18047452, -8031052, 4563940, +-13692893, -6568616, -2397666, -5590437, -26459682, -27529130, 7566659, 2863670, 722091, 14179835, +8075613, 11391864, 9155260, -17131550, -3726958, 32266478, -5956046, -12142946, 4750234, -7043747, +3307662, -19839528, 8075076, -9074192, 1377611, -1257889, 13095355, 826781, 5267241, -11261941, +2172180, -6325950, -2845416, -7706245, -5844914, 4115116, 4582730, -10286447, -3436511, 810138, +1995549, 2636036, 1411434, -3947612, 4573604, 1933272, 1607392, -470836, -231928, 1492501, +4645007, -4850092, 4696547, -1157494, -85362, -1677722, 3019899, -2818572, -1606855, 4149475, +-7580081, -76773, 1595044, -4591320, -1504312, -10672457, 7846369, 9214315, -504122, 2241973, +2554432, 3202435, -4663261, 5180268, 3391951, 4066260, -3345780, 2266669, 3221226, 4711579, +18467822, 14069776, 1833951, 14949171, -2799245, -6077379, 8180302, -11372537, -22275848, -33263448, +2788508, 739808, 12869870, 9441412, -12411382, -6315750, -32526324, -2149094, -15149960, 3569655, +-7625715, -3604551, -6260989, -2377801, -2537252, -11264625, -5085242, -13134010, 10501732, -2612951, +8986682, 23332410, -12309376, 6733972, -1913945, -5757941, 6002217, -12441447, -21205328, 10203232, +4980015, 10147934, 6332393, -44394392, -20163798, 5939403, -14785962, -1235877, -12633109, 18604724, +22389128, -1082869, 24748676, 3504693, 11242077, -3256659, -819802, -13833016, 8767639, 17901960, +3876745, 29801704, 703838, 4109210, -8748848, -13089987, 17634598, 27966142, 9759776, 5435281, +2755222, 10579041, 912681, 2025614, -26167626, -19189378, -1987496, 1398549, 3468186, 19678466, +21160230, -3894999, 1389959, -7262253, 4406100, -13551696, 346819, -14341970, -12151536, 6274411, +-354335, 1580011, -8067559, 5179194, 6334540, 4261145, 6415071, 7575786, 657130, -4300336, +3323768, -5874442, -1433982, -3625489, -8609799, -2473364, -4762582, -3834332, 7145215, 3946001, +-2546379, -5662378, -8527121, -5585068, 5754183, -5667746, -560493, 455267, 3938485, -8047158, +-6426345, 2849711, 9991705, 6367289, 2571612, -16106, -6010270, -736050, -3653944, -6968585, +11900281, -17418776, -8582955, -32544578, -40553620, -30071214, -13728863, 9196599, -259846, -7132330, +-14812805, 32212, 26769458, 13107703, -23404350, -3851512, -4832375, -16542067, -2942590, 1225139, +11275900, 8302172, -17456358, 12555263, -9856950, 5332739, -9181029, 2789045, -13369696, -4996658, +6642167, -24172076, -4606890, -9110163, 7956964, -6012418, -22321482, 26286810, 25361782, 350040, +-10218801, 14322642, -34212100, -10719701, 10222022, -11514270, -7248294, -878321, -11038066, 2199560, +-2820720, -22944790, 9880572, -2918967, -7022272, -7845832, -6027987, -1430761, -6249178, -9725417, +19080392, -9061307, -8963597, 9063992, -201863, 31256088, -6212134, -19367082, 11121818, -10111427, +-8550206, -15108621, 10528575, 19279572, -37556268, 2957622, 31794032, -5158256, -1915555, -12553116, +21694416, -1525250, -11708081, -1560147, -10987063, -8860518, 15736223, -9411884, -731755, -5221607, +-6491843, -10998338, 4716948, 3684545, 5799817, -1306744, -8804683, -6080600, 390305, 1561758, +-13441100, -3867618, -8620536, 13448616, -4421669, 965294, 1986959, 1669132, 1503239, -10924786, +7454990, 374736, -4095788, 9812927, 1599875, 12838194, -2190433, 14833206, 3524558, 5992016, +7349226, -9590125, -6238440, 4696010, -7801271, -6153615, 2442226, 45097, -5449777, -12963822, +6444599, -25663504, 51269024, 36568964, -695785, -9774272, 8138963, -30735322, 516470, 38264400, +-6737193, -13292387, 636729, 43370044, -6196564, 9531606, -9208410, -19594714, -15841987, -3993783, +-7227356, 8010651, 11107322, 625455, -16294032, -22821308, -20992726, -3365107, -4591320, -11303280, +10649908, 8629126, -9152575, -11170673, -12195023, 6926709, 2440078, 8507256, 21721260, -78383, +-18444738, 12623446, 5018133, 4303021, 1386738, -284542, -8846559, 16104517, 8291971, -6352794, +-7576859, -5010616, -20936892, 5876589, 15504295, 4758824, -14625437, 17315160, 12738336, 7215545, +2030983, -8960912, 4855461, -29882772, 4807142, -1768453, 26869316, -9508521, -13108777, 5778342, +-6772627, -455267, -19184008, -3394098, -5035313, 26080116, -16732119, -31376884, -20374252, -40804336, +8190503, -8210367, -2550137, -21720724, -13770739, -36042292, -15847892, -12521440, -1692217, 8998493, +-11494943, -1911261, -2021319, -1705639, -3026878, 7893076, -13370770, 6035503, -5128728, -10412611, +1845762, -2896956, 9934259, 5178657, 423591, -5141076, 12777528, 11870216, 7310035, -4371740, +-6008123, -6034966, -5465883, 13333189, 21788906, 2698850, 20052666, 21923660, 7532836, 567473, +-19151796, -1897302, 3930969, 3038153, -1512902, -5148055, -16139413, -175557, 11391864, 1978906, +-12014097, -2931852, -8935143, 48922900, 1705102, 8294119, -8356933, -15773267, -21721798, -6904697, +5847061, 14470819, 11584601, -10122701, -290984, -21301964, -8092792, 7900056, -18345416, -9520332, +-7100118, 26478474, 13485124, 14658187, 13436268, -15051176, 2564096, 5712844, 5972689, -1288490, +17498770, -3726958, 7569880, 13936095, 5031554, 3996467, 11384885, 16140487, -9654550, -18603650, +12302934, -1872069, -191663, -19677930, -18719614, 4406100, -9492951, -7031399, 15967078, -16564615, +21197274, 13998909, -9785546, 11442867, -12838194, -12534325, -15612206, 22298934, -15800648, 7117298, +6499360, -25266218, 2141041, 3064996, -20316270, -34429532, -31160524, 22613002, -23490786, -322123, +-21151640, -4723927, -15204721, -1166084, 9375914, 5990943, -15472620, 15821586, 18003966, 38289632, +9725417, -25648470, 8788040, -15771657, 8290361, -22565758, 11857868, -9646497, 1428614, -4614406, +8983461, -2775623, -9462887, -21683142, -21900038, 2413235, 1817308, 13695577, -10030896, -937377, +21100100, 6043019, 14543833, 4479651, -4144107, -1653026, -5354751, -14330158, 4857608, -17288854, +-10467372, 3671660, 14025753, -18884434, 10220948, 1916092, 13245679, -4645007, 7292855, 13589277, +14748918, 15046344, -7164006, 7296076, 11500849, 12632036, 2205466, 7496329, 3686156, -5911486, +23159538, 10746545, 11536819, -9826885, 880468, -21431886, -340376, 3600256, 4188130, -18901614, +-19663970, -31130460, 21627844, 2209761, 7450158, -5129265, 11475079, -8534100, -8360154, 6424734, +16484084, 3845606, 10852845, 33501282, -4815732, -20244866, -42945916, -6134824, -16568373, -8186745, +-10193568, -19981798, -14017700, -29841432, -3414499, -476205, 10495826, 30917322, -25691958, -9926743, +-4176856, 10121627, 11017128, 30635464, 4234301, -35003448, -7968775, 7177427, 27447526, 7184944, +-42315628, -16995722, 38448012, 3498251, 38357816, -22513144, 1326071, 3005940, 23259396, -2143189, +21176874, 31780074, 4594542, 26967562, 19006304, 4594005, 37427956, 31917512, 10457172, 49760416, +38312184, 23988466, -40176736, -2575370, 15910169, 9215389, -345208, -29161218, -34794604, -18010946, +-49856516, -7836168, -37038724, -14111652, -9419400, -53446036, -50636592, -35252016, 17604534, 634581, +-11583527, -535260, -3697967, -978179, -9718437, -5126581, 12617540, 5082557, 2328946, -1560147, +2155000, -2296734, 7894150, -1149441, -13177497, 23388244, 3943854, 5763309, -6706592, 1307281, +-617402, 12365211, -425739, 7300371, -3980361, -12495134, 5308043, 10061498, 25926034, 23079006, +1742146, 21475, 16642998, 8432095, 19407346, 16210817, -4842039, 18665928, 10539850, 4020090, +11808476, 7799124, -6280853, -2631741, -14421963, 9358734, -12836584, -5459441, 7301982, -27711666, +29579976, -12831215, 19377818, 9430138, -24779814, 3600793, 15479599, -9846749, -25884158, 17084306, +-6971806, 14597520, -8644159, 3650185, 6061810, -16077673, -1821603, -7146826, -269509, -26244398, +-20474646, 25314538, 1243930, 10173704, -19980724, 20677046, 18659486, -14092861, 11922292, -20409148, +-4269735, -11483669, 14832670, 36033164, -533113, 43744780, -10989211, -2219424, 2218351, 4361003, +-2868501, -24874304, 43179452, 27931246, -3205656, 23437100, 18599356, 24332600, -9119289, -708133, +-43549356, 19622632, 20780662, -5842230, -7279970, 27213986, 14668387, 14273787, 34269544, 5533529, +-17277042, -21264384, 6617471, -6794639, -24918864, 20643760, -28898688, 1067836, 6713034, -20900922, +-32118840, -22202296, -7990250, 2117419, 26391500, 17324288, 8607651, -49827528, -13680008, 29696478, +-2097555, -11009075, 9109089, -27100170, -16485158, 22416508, 178241, 115964, -9268539, -66035, +14057428, -4481262, -9848360, 7602629, -3208341, -19347218, -10095321, 1666984, -1127429, -1389422, +614180, -8611946, 327491, -13357885, -17358110, 2164127, -1327682, -29286308, -2953864, -17823578, +-9846749, -3449396, 4715337, 5088463, 16259672, -14921790, -9690520, 2999498, 15852724, -16493211, +-17097728, 24289114, -3507915, -1600412, -4366371, -375810, -9960029, 4149475, 11796665, 6092411, +10307385, 495532, 4062502, 34897, 1740536, -36783172, 20883742, 32648730, -714038, 37613712, +11264625, -32523640, -20172388, -2490544, -11437498, -19752018, 20875152, 24609088, -2461553, 17153026, +22902914, -18080202, 16125455, 27657442, -1775432, -37152004, 14527727, -971736, -7487739, 10364293, +28021440, -8890045, -14264123, 6993281, -12430172, -16052440, -1228361, 24811490, 20998632, -34998076, +11059004, 15128485, -23672786, -14951855, 28349468, -7629473, -41477572, -5163625, 34693672, -11225971, +-59882580, 62836984, -17936320, -7092602, -31008054, 40657772, 13106093, -13806172, 29381334, -17171816, +-13044353, -7398618, 75343928, 25352656, -31668404, -27764280, 28846074, -6519224, 42032160, 967978, +31526670, -43321188, 34687228, 60143500, 5578089, -6244346, -10645613, -10253698, -24007256, 56767120, +37934224, -33618320, 9412421, -35344360, -6174553, 4061965, 7328825, 5226439, 10409390, 1224066, +-39068096, 18479096, 2291365, -3803194, -929860, 18171470, -7861938, 4222490, -5782637, 9549323, +-3782793, 2659122, -6321655, 11967926, 377420, -2088428, 6570226, 9672803, -21433498, 2854006, +13349832, 5394479, -15472620, 8494908, 24077586, -23397908, -36866388, 7511898, 4472135, 14687714, +14019310, -1645509, -33310692, -10942503, 8993125, 4895726, 9254044, -4709432, 1301375, -1031866, +-11179263, 9983651, -8766565, 27043262, 61847528, 11956652, -23916526, -5699422, -5866389, 10845866, +9306657, -19313932, -27538256, 7344394, -23304492, 4632659, -14507326, -16687559, -3628174, 2821794, +7904351, -18599356, -7512972, -7377680, -23145042, 19406272, -7281580, 1246077, -3435437, -15444166, +6124087, 4339528, 536334, -3339874, 171262, -569620, -9129490, -19646254, 8399345, -9754408, +8519068, 5986111, -19634442, -15898358, -1806571, -2287070, -2238215, -4221416, 16004659, -11075647, +1637993, -20853676, 17804250, -20431160, -10813117, 10158671, 288300, -16373489, 13020193, -22014392, +1680943, 6631967, -578210, 2413235, 10557030, 5013301, -22680112, 11488501, 1620276, -13681618, +19471234, 7675644, -21520470, -2346126, -17155174, -2248952, 7007776, 5768678, -21906480, 27939836, +-14744623, -8094940, 15566035, 10335839, 2571612, 10401874, -833761, 14549202, -6430640, 3002182, +-1762547, 7059853, 5531918, -4137127, -4996121, 5624797, -6924024, 780610, 1260036, 967441, +-4041027, 736050, -3762928, -6250788, -3355980, -6802692, -290447, 5200669, 9046275, 3394635, +1147293, 4807679, 5959804, -8101382, 12674448, 3369939, -298500, -8214125, -4606353, 4018479, +10060961, -1859721, -88047, -4808753, 1760937, 1515587, -3972845, -5482526, -4810364, -12868259, +-4586488, -37123548, -46348064, -16995186, 140025600, 112070728, 74327096, 135528224, -53813792, -128220344, +-41096932, -207234864, -80744312, 5864241, -48556216, 95051384, 129866928, 21242908, 82568600, 141779024, +3122441, 39082056, -9192304, -166630768, -137820672, -104167992, -103435160, -50987168, 79103096, 42489036, +61226908, 174037440, 73867528, 10805064, 104263552, 48442936, -59626496, 20330228, -50007376, -168875968, +-40581000, -88238496, -173916112, -28923384, 4083440, -42518564, 117759952, 135847664, 53641996, 159742176, +161722704, 30163018, 62375812, 28030030, -102149888, -114591872, -107188424, -192924032, -170415712, -64983928, +-79121352, 16672526, 103380400, 141463344, 116963232, 180706448, 134122168, 71931576, 9993852, -22582402, +-104210400, -127000576, -93730144, -111598816, -93020400, -4106526, -5240934, 21129628, 100411504, 48358648, +61341260, 96148752, -2008434, -30012694, -15902116, -60358248, -34495568, -20273320, -22270480, 24645596, +50837380, 19662898, 28128814, 31978716, -23396834, -8398272, -9985262, -61582852, 8438000, 25622702, +-66715336, -888521, -6235756, -67350456, 24927990, 11272679, -76272712, 48027936, 71595496, 16767552, +144330224, 89754616, -1946694, 76768784, 13698261, -97773320, -81282256, -127298536, -180623232, -135613600, +-88377544, -47559784, 61372936, 133379672, 156292784, 194695168, 190727152, 135007472, 29628832, -14517526, +-97274032, -177209808, -172392464, -153183760, -128762584, -27935004, 13528610, 22120692, 88153128, 93741960, +64961380, 66937064, 51891256, 22429392, 31666258, 22938346, -5954972, -11979201, -28184112, -56296820, +-61058864, -60413548, -61165704, -45817100, -9196599, 4551592, 16142098, 19381040, 10968273, 4398047, +1093069, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -5063230, -15737834, 6034966, 3824132, 1245541, -3338263, 45634, 3016678, 5682779, 75699, 554588, -329639, -2076080, 550293, 1931662, -391379, 1886564, 2901251, 3874597, 1621887, 1592896, -2035278, 1813550, -3562675, 3613141, 6772090, -3209414, 1919850, 1068910, 1884954, 354335, -4005594, -2609193, -940598, -2347737, 2306934, 6725919, -1142461, 3266323, -101469, -1513976, --5550709, 2077690, -2881923, 2558190, 1280974, 2857227, -331786, -1710471, 886911, -1176821, -3834332, 501974, -3064996, 3911105, -871878, 3053722, 2335389, -118648, 2240362, 4408247, --1258425, -1538672, -1269700, 2195802, -1821066, -2370822, 2719788, 36507, 1818382, -2929168, -4310537, 260919, -1243930, -504122, -503585, 1729261, -1647120, -2595771, 1511829, 2330020, -2178085, -2058363, -3105261, 1242319, -134755, -364535, -1213865, -1123134, 1514513, -399969, --255014, -952946, -1161252, 226560, -843961, 353261, 207769, 1143535, 762357, -338229, -377957, 651761, -721555, -285078, 10201, -312996, -561030, 397821, 1071594, 633508, -791348, 16106, 12225624, 9594420, 4808753, 707059, -1816771, 5563594, -3260417, -3485903, --812286, -6094559, 3677029, 255551, -2541547, 1453310, 3533148, 6098317, -2836826, 3521873, -7898982, -2247342, 41339, 1823751, 4098473, -1024887, 4466229, 3184182, 4518306, 1057099, -3446711, -3510062, 6026913, -707596, 5814312, 2906619, -659814, 740882, -983548, -118112, --2126546, -978179, -2623151, -1902134, 2013266, -528818, -5667746, -1249299, 577136, -139050, --3172907, -3236258, -1675037, -1388885, 4393752, -1749125, -4874788, -6460168, -7158100, -2441689, --3167002, -236760, 1074279, 3464965, -4691715, -2099702, 519691, -453119, -2117956, 538482, --4937602, -444529, -5814849, 3111704, -3179350, -1516660, 3984119, -565325, 2725694, 813896, -973884, 3126736, 745177, -2483028, -1176821, 266825, -2471217, 1316944, 2453500, 1224603, --1942936, 1454383, 2046552, 423591, 1094680, -592706, -1155346, -768262, -1155346, 817118, --148176, 750546, -970663, -679679, 766115, 6478958, -14046691, -3777961, -7113540, -1328219, -1611, 7731478, -3757023, -12601434, -4430796, -327491, 4803384, 1489817, -4664872, -10940892, --2805688, 2991982, -1217086, 6154152, 251256, 2694018, -599148, -4858145, -5270462, 3178276, -3894462, 451508, 1272384, -195958, 2386928, 548145, -6483253, 343597, 9163850, 1229971, --2258079, -845572, -2414309, 559956, -2079838, -3975529, 6142877, -1904281, -2532420, 5560909, --2889439, -4934381, 246424, 34897, 181462, -7116761, 5809480, -2203318, -115427, 5342940, -4879083, -7629473, -1912334, 1482301, 1877975, -670552, 4206921, 1158031, 2102923, 2905009, -460098, 2323041, 3530463, 770410, 48855, 3275450, -8679055, -1920387, 248571, 4445828, -2491618, -1063004, -849867, 3236258, 3037079, -3462818, -463856, -1226750, 139050, 1919850, -2465311, 496606, 3039226, -292595, -2120103, -1007170, 277025, 235149, 321586, -797790, -2129767, -417686, 789737, -306553, -915365, 629750, 9127, -402116, -742493, 187368, --695785, -106837, -1278827, -1003412, 311922, -185220, -990527, -2017561, -703301, 460635, -1762010, -27909772, -11086384, -5578626, -7984881, 2561948, -2791729, -2610803, -379031, 3599183, --3250753, -3754875, -5600638, 1182727, 4944581, 1181116, -3853660, -4662724, 1367947, 4231617, -3809099, -5309654, -7968775, 667331, -7452842, 4018479, -93416, 2825552, -252866, 2728915, --2959769, -1154809, 7705172, -9306120, 4270808, 2258079, 1005559, -3255048, 2028835, 4689568, -1188095, -5641440, 1109175, -3552475, 2750927, -7726110, -338766, -6992207, 5395553, -504659, --1444183, -1932735, 2951716, -11782706, 5425618, -3345243, -7219303, 2943663, 5733782, 6605123, -3808562, 1469416, -504122, 852014, -632434, 4290673, -2443837, 1270774, 3277060, 8240432, -1264331, 239981, -5899675, 3817152, -2951180, 747324, 128312, 4424890, -3889630, 307627, -3956739, -273804, -4769025, -6439767, 5357435, 535260, 978179, 2801393, -592706, 1406065, -1131187, 44023, 942208, -370978, 132070, 1532767, 1312113, 1512365, -2396592, 1017370, --1806571, -685047, -1526324, 1487132, -1727651, -15913928, 7796977, 12402255, 2424509, 967978, -6912750, 2316598, 2122788, 3760781, 530428, 3935264, 3983045, -3218004, -576599, 524523, --3889630, -2432562, -39192, 1904818, -2289755, 12896176, 6870874, -1898376, 934692, 4085051, -5173288, 5878200, -2456185, 4134980, 4843650, 257161, 1420560, 1378148, 2762738, 1979980, -1224603, 2713883, 2616709, -5601174, -4307316, -8615704, 940598, -3061775, -4289599, 4409321, --1248225, 2770254, -10645613, 11718818, -842350, -5595269, -1026497, 9286793, 6740951, -1497870, -250182, 4489315, -2132988, 1922535, -3420942, -7337952, 871342, 670552, -5876589, -2342905, --5792837, 1021665, 2152316, 1297617, -2812130, -5141076, -7805566, -9323837, -6686727, -2622615, -542777, -2278480, 914291, 3078955, 2751464, -3883187, -408559, -4233764, 1547262, -1483911, -1218697, -68719, -1717987, 1220845, 1415729, -1254667, -580357, -1629940, 2187749, -2599529, -569083, 817118, 772557, -273804, -596464, 541166, 1165547, 1147830, 955093, 717796, -983548, 310311, 1865626, -438624, 2066953, -1295470, 657130, -392453, -523449, -1489817, --1139240, -994285, -1335198, 519691, -1071058, -153008, 987306, 318901, 29315300, 7773891, -2174327, -1086627, 17668958, 2073932, 8395050, 1733019, 5583458, 9203578, 3246995, -5108327, -5429913, 6326487, 996969, -461709, 1348620, 11580842, 799938, -3957812, -7044820, -2068564, --216896, -8044474, 1344862, 2386928, 4611185, 1966558, 3252901, 8869107, -2776160, -1411434, -5442798, -854162, -2411087, -462246, -7940858, 5128191, 3351685, 178778, 5094905, -2554969, --6957310, -15022185, -5509370, 5541582, 6120866, 187368, 4292283, -4248797, -4618701, 12211666, --7083475, 5529234, -6239514, 1291711, -9090835, -9541270, 10331007, -3962644, -3733400, 14259291, -1060857, -1616518, -6719477, 5217849, 8228084, 387084, -4458713, -8422968, -1336809, 6092948, --1973538, 2052458, -3732864, 2988760, -1433445, 952409, 6490770, -7047505, 2175401, -2012729, -412317, 783295, -833224, 7496329, 2329483, 1078037, -2262911, 46708, -1800128, 3138547, --1566053, 2480881, 2490007, -2677912, -19864, -459562, -1751273, 3537979, 562641, 1633161, -92879, -1303523, 681289, -27380, 19864, 978716, 1537598, 544387, 2029372, 606664, --210990, 1118302, 738734, -860604, 195421, -402653, 396211, 1801202, 1999307, 277025, --252866, 14890115, 5004711, 12335146, -7537131, 2456721, 6964290, -9446781, -3172907, -3701725, -1033477, -4782446, -2851858, 7305203, -2173254, -1396938, -463320, 9146133, -3291019, -4265440, -9844065, 1567126, -6863358, 2901251, -1459215, 1547799, 3758097, -5631239, -1236414, -4236985, --7509751, 900869, 250719, 1417876, -7387881, -7779260, 3062312, -695785, 2982318, -337692, -4310537, 1225139, -134218, -4980552, -4738423, 1301912, 4841502, 2294050, -1337346, 14015552, -3395709, 2370822, 6444599, 2330020, 4808216, 4799089, 3222836, 1905892, 2484102, -2077154, --1049046, 1030255, -5901822, 1537598, -9548249, 2583960, -6301254, 4937602, -3519189, 2692945, --1184874, -4701379, 1624035, -1275068, 5070209, -4411469, 13469017, 11260331, 5272073, -9710921, -3092377, 4250944, -4072166, 1739462, 1249836, 6531035, 6305549, 2574296, -88047, -947040, --1291711, -3872450, 5879274, -493384, -652298, -37044, -1624035, 579821, 1995012, -1658931, -3085934, -1213328, -2449742, -2674154, -44023, 1726040, 1782411, -541166, -577673, -2127083, --844498, 1025960, -2433099, 2699924, 2904472, -1884417, 558346, -2368675, -714575, 320512, -975494, -1824287, 3074123, -18502720, -35604204, -1518271, -7135552, 6176700, -1835562, -9856413, --955630, -7981123, -8804146, -7545184, 11644193, 6047851, -7776575, -4468377, 8862665, 5135171, -7909719, -5437966, 5116380, -4822175, -4873714, -1497870, -2128156, -15052250, 4116189, 8608188, -3706020, -8944269, -2054605, 1597728, 2297808, -7976291, -1775969, -11451457, 2534031, -5421860, --503048, -3980361, 2199023, 12281459, -1315871, -2262911, 6153615, 8984535, -5416491, 2465311, -3397856, -7542500, 4059818, 3796751, -8871792, 1419487, 5758478, -1333587, -9341017, -5867999, --6020471, 8521215, 3305514, 8346195, -4907000, -9582072, 2295660, 4826470, -2027225, -6847789, -4591320, 6758668, 6393059, -7853348, -4080756, -1599875, 12769475, -2668249, 7632157, 2280628, --8947491, -7264401, -1371168, 5050345, -8475581, -454193, -1554778, 4727149, -994285, 10594611, -1350767, -2358474, -3117610, -2613488, -3005403, -1909650, -996432, 1031329, 9127, -1174137, --3827890, -307627, -3719979, -1575716, 1582696, -1242856, 652835, -1017907, -2799782, 1791538, --417149, 4593468, -836445, -3585224, -2534568, 1525250, -643708, 250182, -977105, -2267743, -850940, 2624762, -2200097, -612033, 3499325, 1698123, -2076080, 2858838, -18214420, -17180, -504122, 10504416, 2544231, -4188130, 6212134, -2985002, 2717641, -9865003, -2905009, -6248641, --3470871, -12473122, -4738960, -7446400, 17204028, 9895068, 10484015, -12234751, -10484552, -5007932, -5859946, -551903, -144418, 366683, 3515431, -824097, 4991826, -7112466, -6127308, -103616, --1748589, -8776229, -8858907, -7058779, -5140539, -3799436, -3536906, -11121281, 5096516, 13673565, --2977486, 6422050, 8759586, -6405407, 7578470, 4835597, 1788854, 12491912, -614717, 10467372, -3855270, 1379221, -9822590, 3964255, 4820027, -2538863, 14338748, 11496017, 2208150, -4217658, --7183870, 4202089, -7063074, 2907156, -166967, 8555038, -48855, -12590697, 882616, -4919885, --2046015, -9414568, 11052561, 5821828, 3985193, 2710661, 12337830, -3485903, -12999792, -1954210, -8115341, 303869, -6715718, -1638530, 888521, -2804614, 1540283, 4005057, -80531, 208843, --877247, 1359894, -260382, 4809290, 1395328, 1495186, -1160715, 1916092, 2444910, 4376572, --3651259, 2463164, 2428267, 59056, 726386, 4408784, 2334852, 1209570, -2678986, 3761318, --1135482, -2037425, -2537789, -70867, -6501507, 4165582, 2011655, 832687, -3110093, 3685082, -3536906, 6477885, 3926674, 1182190, 1045825, 424128, 5235029, -16489453, 7431367, 5449240, -7049652, -7704635, -13674102, 3952444, 4100083, 675921, -11532524, 11011222, 3155190, -5894306, --10158135, 4568235, -4498442, 17633526, 20541754, 3019362, -3299072, -7685307, 11659762, -13298292, --4764730, 16371342, 4064650, -3207267, -8875550, -8189429, -4630512, 267899, -10852845, 2420214, -11537356, -1494649, 4326106, -8491150, -7745437, -2647847, -6406481, 16757889, -6175626, 7509751, -6185290, 6782827, 1782948, 3316789, -11655467, -11703786, -11207717, -2527588, 8383240, 19320374, --7814693, -14015015, -3248606, -6477348, 3564286, 2967286, 10758893, -6620155, -155693, -8760660, --1679332, 15462419, -1999307, -8479876, 11072426, 3595425, 1775432, 5784247, -12455405, 1859184, --4230006, 1161789, 5674726, 13585518, 3793530, -15880105, 5770826, 1342177, -2474975, -6645388, -290984, -1734093, -883153, -473520, 2217814, 3602404, 4370666, 1405528, 281320, -2606508, -810675, -844498, 3132642, -5428302, 1993939, 2038499, -133681, 418759, 884226, -4125316, --127775, -2757369, 4414690, 4057134, 1004486, 4882841, -1949378, 621697, 3753265, -859530, -2969970, 668941, 2747705, 863825, -6274411, -452045, -2256469, -426276, 828392, 295816, --2226941, 136365, -2619930, -76236, -1286343, 26761404, -11611981, -9166534, -2755759, 5607080, --15641197, 6234682, -4198331, 7872675, -7003481, -3251827, 9754944, 7164006, 2776160, -4941360, --1745367, 13261248, 13120588, -2770791, 11458436, -3370476, 16835198, -7912941, -4108136, 2962454, -17632988, 12808129, 4276714, -9497783, -644245, -19621558, -2940979, 2996814, 9012452, 10423886, -18575196, 4801237, -328565, -962610, -7116761, -12267500, -868657, -10650445, 7659001, 2331094, -11838540, 6516003, -4039417, 11658689, -13965086, 6241125, -3114925, 937377, -2430415, 14856292, -8747238, 4198331, 2658048, -27180164, -4318590, 15996606, 8108362, 919123, -512712, 736587, -12952011, 5420249, -20508468, -6766184, -7922067, 1838783, 426276, -20446192, 780073, -19118510, --12640626, -1734093, -8200703, -8948564, 11880416, 14943265, -1635846, -7383586, -823023, 4533338, --1862942, 3856344, 6132140, -577673, 6814503, 9929964, -3219615, -5655398, 908922, -2457795, -3012920, 1893544, -1595044, -1476932, 115964, 71404, 2813204, -383326, -3459596, 624918, -3394098, 1190780, 3014530, -2709051, 4579509, -76236, -1702955, 1054951, -2916820, 1091459, --5834176, -3803731, -4567161, 2280091, 213138, -4400731, -872415, 3635690, 2429878, 3146064, --2139431, 1701344, 26844, -788127, -5575405, -2929705, -5909875, 9710384, 18914500, -4787815, --7692824, 1058710, 7319161, 4167192, -11563663, -754841, -9367324, -549756, -12751221, -1444183, --10958609, 465467, 11362336, 841814, 25077240, -10576357, -5024038, -9001178, 10247792, 16641388, --13345537, -4534949, -20709258, 3838627, -140660, 5605469, 5146445, -11677479, -6849936, 9007620, --3358665, -2631741, -11241540, 22687090, -2988224, -24419574, 6903086, -6484327, -7177427, 8695161, -6887517, -7106024, -7690139, -2422899, -14002667, -8526047, 4770635, 3080565, 4976257, -4361540, --10088341, -11877195, -11747272, 9704479, -17292076, 203474, 4305168, -5439576, 573915, -185757, --2236604, -13880797, -2427730, -5686537, 8918500, 11165304, -1950452, 17398912, -858457, -255014, --5217312, -1192390, 25271050, 2359011, -11203959, -4609574, 9917079, 7201587, -13805636, 205085, -2135136, -9538049, 8032126, 1773822, 8973797, 1286880, 1488743, 1276679, 834834, 3772055, -5461051, 392453, 2808909, 8469139, 811212, -3133716, 1635309, 4022237, -3102040, -1013612, -634581, -4100620, 3861176, 3342558, 4439923, 757525, -4511327, 983548, -1447404, 679142, --830002, -956167, 559956, -2711198, 3864934, -2019172, -2416993, -3214783, 7661148, -24696, --7991861, 5850819, 4812511, 1913945, -382252, 4450660, 3592740, -9165460, -12147241, 30758946, --7871065, -2763275, 2792266, 13078175, 9492951, -20071456, -8112657, -19072876, 4220879, 1027571, --5833640, -20990042, 914828, -9836012, 4392678, 4539244, 10608569, 465467, 7733089, 36134632, -7912404, 8963060, -5644661, -2087891, 15849503, -1458141, 1281511, 4113505, 1069984, -2402497, --8228084, 14505715, -15446313, 6362994, -22980222, -7089381, -10736881, -14292041, -12178380, -111132, --25114822, -8646306, 3478387, 14307610, 8307541, -24793236, 14034879, 9229885, 10233296, -15779173, -11553462, -7452305, -17966386, -6213744, -17877264, 8650601, 21412022, 5319317, -2036351, -14055280, -11327976, -14964203, 22356916, -4217658, -2399276, -13530758, -14707042, 2118493, 17458506, 5705327, --12006044, -4909685, 2926483, -2515777, -4806069, 11412802, 5903433, -5353140, 14774151, -1219234, --20975010, 26278220, 13993003, 10817412, 4961761, -3553549, -1297080, -2201171, 7851737, 1777043, -1151588, 17295296, 6753299, 303869, 824097, 2453500, 9031779, -7246147, 5091147, 493384, -1699733, 1652489, 5815923, 2843268, 358093, 9746355, 7456063, 648003, -3411815, -3467112, --1282048, 7977365, 3990025, 4476967, 4300873, 5305895, -6602976, 6598681, -1756105, -1764158, -6112812, 9586904, -1398012, -2670933, -64425, 9124121, 10510859, 4021163, 6475200, 4962835, -16905528, 3151969, -10803453, 4893042, -3116536, 5042292, 18542984, -26087094, -11802033, -20976084, -11942157, -4229469, 2090575, -6925635, 15139760, -14873472, -14963666, -6830609, -3461744, -10712185, --18527416, -8962523, 3515968, 12185896, -17045652, 11263015, -6393059, 1348083, 22168474, 16938814, --245350, 8927090, 4318053, -3523484, -2637110, -30048128, 4205310, -3049427, 2998424, 5852967, --2324114, 819265, 30396558, -27254788, 2601140, 32886028, 4325569, 9082782, -12862890, -3521336, -17224966, 30189862, 1560684, 26773216, -10409390, 24220932, -8483097, 17928268, 18209588, -4500052, -35460324, -5897527, -1476395, -10524817, -15991774, -16969416, -7765838, -10186052, -24635932, -11508902, --5214627, 9118752, 9035537, 1156420, -12649216, -2115808, -3563749, 15857556, 4931696, -8268349, -13594645, 3058017, -1673427, -1916629, -9884330, -1522029, -3928285, 4138201, -10009421, -4786741, --6981470, -6947110, 12637941, 4879620, -4195646, 3816615, -3230352, 2414845, -7607998, 11325292, -531502, 3176128, -302258, -7637526, 6986301, -930397, 2559801, 8044474, 5567888, 3426847, -617402, -11883101, 5661304, -4558034, -565325, 10218801, -244276, 3783866, 2424509, 4879083, -6845104, -2483565, -5574868, -3677566, -4474282, 2126009, 6133750, 10519449, 6042482, -12297565, --1602560, -13472239, -11390253, -39062728, -27616102, -19650550, -1852742, 26421566, -17279190, -2256469, --13274670, -19374598, -15896211, -19792284, -20485384, -8195335, -24194624, -26494042, -22897544, 6461779, --15784005, -8344585, -19697794, 18815178, 30975304, 2633889, -3481608, -10931229, 2612414, -1969779, --736587, -2524367, 9810242, 2008971, 21146808, -18411452, 1684701, -15668041, 32101660, 7817378, --18711562, 14720464, -13389561, 11951820, -18003430, 10561325, 1623498, -10853382, 9782325, -17148730, --5645198, 5398774, 17576616, 7623567, 31142270, -6995965, -19968914, 1859184, -5650030, 2344515, --13209709, -11523397, -21316996, 2688113, -22667764, -4584878, -3490198, -19945828, 13381507, 16850768, --9747428, -1085016, -29248728, 33687040, 40939092, 6535867, -16063178, 5569499, 36034776, -16893180, --7599408, -19265612, -11152419, -21146272, 8745627, -1025960, -11857331, 9217000, -11877732, 4958540, --7367480, -3425773, 4953171, 2556579, -28454, -7930120, -1516124, 6931541, 4110821, -13216151, -10495289, -9211631, 4871567, 6024229, -4094715, -7781944, 4239670, -6297496, 5208722, 3696356, --8147553, 2991445, -1050656, 3151969, -4830228, -13332652, 3693135, 2309082, -5408975, 3426310, --4839892, 9459665, -88047, 3851512, 1150514, 12298102, 1694365, -16558173, 9373229, 6108517, -2873870, -31477278, 57612156, 21807160, -4732517, -17359184, -4849555, -18436684, 19824496, 49993956, -1082332, -33157684, -15183246, 18039936, 6702834, -6594386, 23820426, -4601521, 2988224, 13667123, --1440425, -13746580, -4483946, 11257646, -14413910, -13096966, -5323075, 4686883, 711354, -2492155, --6052683, 10608032, 1101659, 15699179, 12392591, -16169478, 7947837, 19295140, 10794327, -14943265, -5776731, 3209414, 13012677, 336081, 4537096, 3511673, 5367099, 27202176, 25743498, 15955804, -34891776, -17187386, 17987324, -20707648, 13220983, -228707, 12082817, 15152108, 4886062, 3941169, -18397492, 8551817, -4896263, 11678016, 71941, 15663746, -16608639, -9497783, 1450625, 37759740, --26046830, 2519535, -32753420, -3892851, 3810173, 12905303, -15931644, -3151969, -16419123, 4250407, -20267414, -12424804, -29283624, -6246493, -2870649, -7959112, 7123740, 5091147, -8279087, 2923262, --7080791, -6940131, 6582575, -1060857, -3941706, -13243532, 7197292, -576063, -8368744, -6726456, -6269042, 17814988, 1743757, -5129802, -2357400, 6478958, 16019154, 3178813, 1402844, 13323525, --377957, 3613678, -1231582, -2642479, -602369, 4820027, 7589207, 4535486, -2134062, -2850785, -6762963, 4793184, -10033580, 9525164, 2592013, 18525268, -4606890, 4690641, 11173894, -7674570, --4686346, 6270653, -10528575, 48233020, 3953518, 3496104, -10618770, -6762426, 7975755, 7368554, -4398047, 18611168, 7754564, -7845832, 9827959, 19858318, -832150, 21771190, -2155537, 10574209, --22204980, 40162776, -6026376, -4704063, 6685117, -30396020, -7873212, -14632417, 21369072, 11771968, -12073690, -14198088, 5115843, 5128728, -18963892, 5246840, 16124381, 13764296, 4675609, -4677220, -1879048, -9102646, 30465276, 4620311, 13735305, 11253351, 16406775, -27169964, -2236604, -8182450, -4999879, -10080288, -11982422, 22514756, -21532282, 16502875, -13694503, 17372606, -3991635, -18184354, --1810866, -27328876, 16844862, 15691126, 18903762, -56528748, 16218333, 10217727, -17470316, -11629698, --16250009, 29136522, -41735272, 25012816, 58469536, 1130113, -28052042, -11192685, 16899622, 34391412, -9402757, -11716671, -25287694, -42323680, -3500935, -216896, 16736951, -12645994, -5797132, -9681930, -28951838, 1901597, -915902, -8278013, 5975374, 1713692, -89121, 1196685, -373662, 5501853, -18453864, 22672596, 11884711, -3308199, -1869385, 9062918, 2237678, -5502927, 2642479, -8898098, --5453535, -10854456, -15947750, -33374044, -13254269, 5258114, 1626182, 18946174, -13401909, -9406515, -24139326, 9099425, -6262063, -9815611, 7864085, -2285996, -9200894, 24041080, 2816962, -960462, --7470559, 882616, -9490267, -12644921, 7949448, -27215060, 3782256, -16236587, 24575266, 2248416, -6480569, -13654238, 10722386, -3469797, -10337449, 5177583, -10627360, -5588290, -9061307, -21664888, --13099113, 16757352, 13184476, 10899553, 11181410, -26302916, -8094403, 5761699, -8234526, 16186658, -10759967, 1423782, 9143449, 27135604, -8334384, -26908506, 51730732, -22305912, -29455960, 32679332, --15944529, -8760660, 6866042, 16977468, -19724638, -5664525, 1662152, -12324946, 67472864, -162135, --11395622, -3851512, 300111, 17307644, -33502892, -24810952, -14467597, -12840342, -1442035, -28156732, --343597, -2076617, 10231149, 43402256, 43061880, -16310675, 33223720, -32380296, -29569240, 18216566, -26844620, -8764418, 7233799, 3996467, 18318572, 23594940, -228707, 2083596, 30043296, -26508002, --54018876, -5398237, -21676700, 12555263, 25074020, -1897839, -17231946, 35112432, 9992778, 7572564, --9558450, -27692338, -16120623, 3703336, -12505871, 16914654, -1694902, -9519258, -1689533, -10849624, --12067784, 16826608, -5416491, 7212861, -12068858, 17891224, -1715303, -311922, 10808285, 17202418, --2026688, -2694018, -11503533, 2209224, -9919227, -8081518, -7047505, -2089502, -17146046, 785442, --7911330, -2083059, -17190606, 5753109, 19400904, 8291435, -12178917, -23974508, -2040110, -1359357, -13173202, -32568200, -7057705, 8757438, -7013682, 16499117, -438087, 10397579, 2518462, -19599010, -21180632, 201863, 12978317, -13397077, -20365662, 18910742, -20161114, 6187438, -4580046, 17765058, -179315, 3833795, -10668699, 3317325, -7508677, -26492432, -20716774, 8726300, -1513976, -833224, -4443681, 19500762, -8678518, -6172405, -16376710, 6948184, 6207839, -2220498, -3101503, -44423384, -2193118, 12230993, -15643345, 10795400, -24330452, -4833449, 1805497, 15094126, 19573240, 2093797, --9054328, 5899138, 35108672, 30196842, 30501248, -1659468, -2576981, 6176700, 3840238, -14233522, -9218610, 37997040, -27110908, -9225053, -7712151, -267362, 1656784, 4615479, -20109036, -31341450, --11434277, -2232309, 62594852, 31322660, 21386252, -3323768, -5261335, -16312823, 27333708, 3519726, -17565342, -6843494, -8227010, -13025025, -10945724, -46555300, -20242718, -24780350, 19317690, -2243584, --8813273, -1910724, -18751828, -9317932, 20226074, 29706678, -4539781, 26137560, 14502494, 10679973, -1774358, 12138651, 16085189, 12934294, -3240553, -1316408, 344671, 17661442, -14231911, -18988588, --8830990, 9468792, -1606855, -13502840, -8361765, -13526999, 7807714, -3437048, 16611323, 32425930, -6277095, 19810536, 26475252, 12366285, 16454557, 7762080, 5277978, 6805376, -12002286, 16895864, --14248017, -10087268, 3891240, 1001801, -10158135, 4771709, 9457518, 16968878, 7171522, -20476794, -11037529, 7961259, 2189897, 8829379, -5383205, -42719892, 24018530, 20854750, -1084479, 34332356, -15537044, -23579908, -23095650, 9953587, -9451076, -21053392, 1416266, 1958505, 9441412, -5336497, -12301860, -3168612, 11650636, 14671071, -13604846, -55350856, 29714732, -8471823, -17242684, 12446815, -19648938, 559420, -37033892, -4993437, -1440962, -38301444, -23766202, 19975892, -5749888, -15640660, --13062069, 8505646, -37092412, -26496726, 50256488, -4404489, -29055990, 11282879, 27336930, 11565273, --41184440, 58851252, 23922968, -36483600, 20282984, 26536456, 4333622, -24750286, 25638808, 28427852, -17439714, -22821308, 21521008, 39871256, 2231773, 40279276, 50058380, -26874684, -15874736, -18751828, -47301548, 29959008, -20441896, 11402064, -12333535, -30172146, 25936770, 58773408, 8567923, -17822504, --14730127, 35265976, -3246459, -39717712, -28292560, 7096360, -1413044, 32693828, -5793911, 25233470, --49174156, -7647726, 2022393, 8358007, -10197326, 10356777, -413927, 922344, 5694590, 1312649, --12818330, 3823058, -6078453, 7863548, 3156801, -17997524, 15712064, 5037997, -14893336, -10726681, -2876018, -13006772, 2565169, 11774116, 13041668, 1791001, -12210592, -4032438, 4038880, -16822314, -9803800, 12361453, 4044786, 983011, 12412992, 4494684, -5578626, 6005975, -4500589, 992674, --8577587, 5363878, 19854560, 34739844, 55672976, 22512072, -23155780, -8467528, -19429896, 11911555, --9473624, 15336791, 10051297, -25540560, 12978854, -26025354, -8817568, 256087, -9627169, 1516660, -13573170, 10696616, 720481, -20732344, 4658966, 16755204, -6348499, 2543158, -7551090, -24252606, -24583856, -14623827, 17019882, -24975234, -14777909, -3466039, -20574504, -6045704, 20886426, -20310900, -27540940, 1854889, 22461068, 8934069, -11188927, -30059402, 24715926, 15397458, 10295037, 6415608, -25484188, -18805514, -9591736, -10850698, 7971460, 9640054, -2490007, -23710366, -1068373, -3207267, --24013700, -9445707, 3810710, 6589017, 18974628, -2170569, -16862578, 22600654, -4318053, -3810173, -27097486, 12979928, -22188338, 7305203, -13586055, 8732205, -7107634, 10712722, -19154480, 10853919, --6618545, 21368536, 3683471, 8286066, -7169911, 82141, -15532212, 6375342, 1051730, 842350, --364535, 4609037, -6233608, -5679558, -711354, 2682207, -1701881, 4250944, -7877507, -1354525, -6124087, -1296006, -242666, -1099512, 206158, 553514, -12451647, 2561411, 10075993, 402653, --1409823, -2488397, -1176284, -9071508, 722628, -2099702, -1098975, -4595615, -7609609, -1486596, -7577396, -4099010, -2242510, 3772055, 1657857, 6012954, -5660230, -1935957, -794569, -4277251, --6615860, -41258528, -48598092, -26026964, 144189568, 126756296, 76713488, 168197360, -35840964, -126346128, --44422308, -238212304, -124871880, -2457258, -61648888, 85207856, 156161792, 21930640, 91764120, 178922432, -30035244, 62448824, 5979668, -183727968, -153493536, -135514816, -149296816, -90467584, 74131672, 31441844, -74226160, 193390032, 116533200, 30236570, 143471776, 65557844, -87885768, 47815872, -64135672, -168209168, --20748988, -103965592, -191249520, -86223616, -19843286, -100211248, 111897320, 120471688, 57008712, 191822368, -216646736, 82292112, 107134200, 101164736, -112692960, -73342472, -144118704, -225082592, -207087216, -132682280, --133310416, -38168300, 86586544, 112165216, 149781072, 211168512, 189587904, 110932024, 80908056, 14693620, --87850336, -127601328, -93598608, -121483688, -150190704, -50711216, -56702696, -27418534, 93711888, 65073588, -69247760, 145929024, 37215892, -6254010, 24070070, -40108016, -63005024, -34879968, -63667520, -18914500, -40859636, 15763067, 22525492, 51873540, -12111271, 11030013, 28192166, -47307456, -4731444, 60054916, --56549152, 5197984, 9531069, -112512040, -5695127, -1864016, -134712192, 11098195, 47505560, -16942036, -138870256, 126500208, 23171886, 135353216, 66657892, -5469641, 22497038, -35960688, -145471072, -151259616, --187569280, -213129696, -107540616, -16962436, 43333000, 134529120, 222994704, 256076688, 203566960, 151034672, -69009920, -27580670, -84715544, -186134224, -233558176, -171529712, -137841072, -130813968, 8683887, 65208340, -79403208, 130254544, 116043576, 76997488, 75474384, 54920284, 17861696, 22657564, 560493, -39524436, --45617384, -57357676, -73910480, -64209224, -43142408, -24988120, -2066953, 14066018, 8092256, 5173288, -249645, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +15737834, 6034966, 3824132, 1245541, -3338263, 45634, 3016678, 5682779, 75699, 554588, +329639, -2076080, 550293, 1931662, -391379, 1886564, 2901251, 3874597, 1621887, 1592896, +2035278, 1813550, -3562675, 3613141, 6772090, -3209414, 1919850, 1068910, 1884954, 354335, +4005594, -2609193, -940598, -2347737, 2306934, 6725919, -1142461, 3266323, -101469, -1513976, +-5550709, 2077690, -2881923, 2558190, 1280974, 2857227, -331786, -1710471, 886911, -1176821, +3834332, 501974, -3064996, 3911105, -871878, 3053722, 2335389, -118648, 2240362, 4408247, +-1258425, -1538672, -1269700, 2195802, -1821066, -2370822, 2719788, 36507, 1818382, -2929168, +4310537, 260919, -1243930, -504122, -503585, 1729261, -1647120, -2595771, 1511829, 2330020, +2178085, -2058363, -3105261, 1242319, -134755, -364535, -1213865, -1123134, 1514513, -399969, +-255014, -952946, -1161252, 226560, -843961, 353261, 207769, 1143535, 762357, -338229, +377957, 651761, -721555, -285078, 10201, -312996, -561030, 397821, 1071594, 633508, +791348, 16106, 12225624, 9594420, 4808753, 707059, -1816771, 5563594, -3260417, -3485903, +-812286, -6094559, 3677029, 255551, -2541547, 1453310, 3533148, 6098317, -2836826, 3521873, +7898982, -2247342, 41339, 1823751, 4098473, -1024887, 4466229, 3184182, 4518306, 1057099, +3446711, -3510062, 6026913, -707596, 5814312, 2906619, -659814, 740882, -983548, -118112, +-2126546, -978179, -2623151, -1902134, 2013266, -528818, -5667746, -1249299, 577136, -139050, +-3172907, -3236258, -1675037, -1388885, 4393752, -1749125, -4874788, -6460168, -7158100, -2441689, +-3167002, -236760, 1074279, 3464965, -4691715, -2099702, 519691, -453119, -2117956, 538482, +-4937602, -444529, -5814849, 3111704, -3179350, -1516660, 3984119, -565325, 2725694, 813896, +973884, 3126736, 745177, -2483028, -1176821, 266825, -2471217, 1316944, 2453500, 1224603, +-1942936, 1454383, 2046552, 423591, 1094680, -592706, -1155346, -768262, -1155346, 817118, +-148176, 750546, -970663, -679679, 766115, 6478958, -14046691, -3777961, -7113540, -1328219, +1611, 7731478, -3757023, -12601434, -4430796, -327491, 4803384, 1489817, -4664872, -10940892, +-2805688, 2991982, -1217086, 6154152, 251256, 2694018, -599148, -4858145, -5270462, 3178276, +3894462, 451508, 1272384, -195958, 2386928, 548145, -6483253, 343597, 9163850, 1229971, +-2258079, -845572, -2414309, 559956, -2079838, -3975529, 6142877, -1904281, -2532420, 5560909, +-2889439, -4934381, 246424, 34897, 181462, -7116761, 5809480, -2203318, -115427, 5342940, +4879083, -7629473, -1912334, 1482301, 1877975, -670552, 4206921, 1158031, 2102923, 2905009, +460098, 2323041, 3530463, 770410, 48855, 3275450, -8679055, -1920387, 248571, 4445828, +2491618, -1063004, -849867, 3236258, 3037079, -3462818, -463856, -1226750, 139050, 1919850, +2465311, 496606, 3039226, -292595, -2120103, -1007170, 277025, 235149, 321586, -797790, +2129767, -417686, 789737, -306553, -915365, 629750, 9127, -402116, -742493, 187368, +-695785, -106837, -1278827, -1003412, 311922, -185220, -990527, -2017561, -703301, 460635, +1762010, -27909772, -11086384, -5578626, -7984881, 2561948, -2791729, -2610803, -379031, 3599183, +-3250753, -3754875, -5600638, 1182727, 4944581, 1181116, -3853660, -4662724, 1367947, 4231617, +3809099, -5309654, -7968775, 667331, -7452842, 4018479, -93416, 2825552, -252866, 2728915, +-2959769, -1154809, 7705172, -9306120, 4270808, 2258079, 1005559, -3255048, 2028835, 4689568, +1188095, -5641440, 1109175, -3552475, 2750927, -7726110, -338766, -6992207, 5395553, -504659, +-1444183, -1932735, 2951716, -11782706, 5425618, -3345243, -7219303, 2943663, 5733782, 6605123, +3808562, 1469416, -504122, 852014, -632434, 4290673, -2443837, 1270774, 3277060, 8240432, +1264331, 239981, -5899675, 3817152, -2951180, 747324, 128312, 4424890, -3889630, 307627, +3956739, -273804, -4769025, -6439767, 5357435, 535260, 978179, 2801393, -592706, 1406065, +1131187, 44023, 942208, -370978, 132070, 1532767, 1312113, 1512365, -2396592, 1017370, +-1806571, -685047, -1526324, 1487132, -1727651, -15913928, 7796977, 12402255, 2424509, 967978, +6912750, 2316598, 2122788, 3760781, 530428, 3935264, 3983045, -3218004, -576599, 524523, +-3889630, -2432562, -39192, 1904818, -2289755, 12896176, 6870874, -1898376, 934692, 4085051, +5173288, 5878200, -2456185, 4134980, 4843650, 257161, 1420560, 1378148, 2762738, 1979980, +1224603, 2713883, 2616709, -5601174, -4307316, -8615704, 940598, -3061775, -4289599, 4409321, +-1248225, 2770254, -10645613, 11718818, -842350, -5595269, -1026497, 9286793, 6740951, -1497870, +250182, 4489315, -2132988, 1922535, -3420942, -7337952, 871342, 670552, -5876589, -2342905, +-5792837, 1021665, 2152316, 1297617, -2812130, -5141076, -7805566, -9323837, -6686727, -2622615, +542777, -2278480, 914291, 3078955, 2751464, -3883187, -408559, -4233764, 1547262, -1483911, +1218697, -68719, -1717987, 1220845, 1415729, -1254667, -580357, -1629940, 2187749, -2599529, +569083, 817118, 772557, -273804, -596464, 541166, 1165547, 1147830, 955093, 717796, +983548, 310311, 1865626, -438624, 2066953, -1295470, 657130, -392453, -523449, -1489817, +-1139240, -994285, -1335198, 519691, -1071058, -153008, 987306, 318901, 29315300, 7773891, +2174327, -1086627, 17668958, 2073932, 8395050, 1733019, 5583458, 9203578, 3246995, -5108327, +5429913, 6326487, 996969, -461709, 1348620, 11580842, 799938, -3957812, -7044820, -2068564, +-216896, -8044474, 1344862, 2386928, 4611185, 1966558, 3252901, 8869107, -2776160, -1411434, +5442798, -854162, -2411087, -462246, -7940858, 5128191, 3351685, 178778, 5094905, -2554969, +-6957310, -15022185, -5509370, 5541582, 6120866, 187368, 4292283, -4248797, -4618701, 12211666, +-7083475, 5529234, -6239514, 1291711, -9090835, -9541270, 10331007, -3962644, -3733400, 14259291, +1060857, -1616518, -6719477, 5217849, 8228084, 387084, -4458713, -8422968, -1336809, 6092948, +-1973538, 2052458, -3732864, 2988760, -1433445, 952409, 6490770, -7047505, 2175401, -2012729, +412317, 783295, -833224, 7496329, 2329483, 1078037, -2262911, 46708, -1800128, 3138547, +-1566053, 2480881, 2490007, -2677912, -19864, -459562, -1751273, 3537979, 562641, 1633161, +92879, -1303523, 681289, -27380, 19864, 978716, 1537598, 544387, 2029372, 606664, +-210990, 1118302, 738734, -860604, 195421, -402653, 396211, 1801202, 1999307, 277025, +-252866, 14890115, 5004711, 12335146, -7537131, 2456721, 6964290, -9446781, -3172907, -3701725, +1033477, -4782446, -2851858, 7305203, -2173254, -1396938, -463320, 9146133, -3291019, -4265440, +9844065, 1567126, -6863358, 2901251, -1459215, 1547799, 3758097, -5631239, -1236414, -4236985, +-7509751, 900869, 250719, 1417876, -7387881, -7779260, 3062312, -695785, 2982318, -337692, +4310537, 1225139, -134218, -4980552, -4738423, 1301912, 4841502, 2294050, -1337346, 14015552, +3395709, 2370822, 6444599, 2330020, 4808216, 4799089, 3222836, 1905892, 2484102, -2077154, +-1049046, 1030255, -5901822, 1537598, -9548249, 2583960, -6301254, 4937602, -3519189, 2692945, +-1184874, -4701379, 1624035, -1275068, 5070209, -4411469, 13469017, 11260331, 5272073, -9710921, +3092377, 4250944, -4072166, 1739462, 1249836, 6531035, 6305549, 2574296, -88047, -947040, +-1291711, -3872450, 5879274, -493384, -652298, -37044, -1624035, 579821, 1995012, -1658931, +3085934, -1213328, -2449742, -2674154, -44023, 1726040, 1782411, -541166, -577673, -2127083, +-844498, 1025960, -2433099, 2699924, 2904472, -1884417, 558346, -2368675, -714575, 320512, +975494, -1824287, 3074123, -18502720, -35604204, -1518271, -7135552, 6176700, -1835562, -9856413, +-955630, -7981123, -8804146, -7545184, 11644193, 6047851, -7776575, -4468377, 8862665, 5135171, +7909719, -5437966, 5116380, -4822175, -4873714, -1497870, -2128156, -15052250, 4116189, 8608188, +3706020, -8944269, -2054605, 1597728, 2297808, -7976291, -1775969, -11451457, 2534031, -5421860, +-503048, -3980361, 2199023, 12281459, -1315871, -2262911, 6153615, 8984535, -5416491, 2465311, +3397856, -7542500, 4059818, 3796751, -8871792, 1419487, 5758478, -1333587, -9341017, -5867999, +-6020471, 8521215, 3305514, 8346195, -4907000, -9582072, 2295660, 4826470, -2027225, -6847789, +4591320, 6758668, 6393059, -7853348, -4080756, -1599875, 12769475, -2668249, 7632157, 2280628, +-8947491, -7264401, -1371168, 5050345, -8475581, -454193, -1554778, 4727149, -994285, 10594611, +1350767, -2358474, -3117610, -2613488, -3005403, -1909650, -996432, 1031329, 9127, -1174137, +-3827890, -307627, -3719979, -1575716, 1582696, -1242856, 652835, -1017907, -2799782, 1791538, +-417149, 4593468, -836445, -3585224, -2534568, 1525250, -643708, 250182, -977105, -2267743, +850940, 2624762, -2200097, -612033, 3499325, 1698123, -2076080, 2858838, -18214420, -17180, +504122, 10504416, 2544231, -4188130, 6212134, -2985002, 2717641, -9865003, -2905009, -6248641, +-3470871, -12473122, -4738960, -7446400, 17204028, 9895068, 10484015, -12234751, -10484552, -5007932, +5859946, -551903, -144418, 366683, 3515431, -824097, 4991826, -7112466, -6127308, -103616, +-1748589, -8776229, -8858907, -7058779, -5140539, -3799436, -3536906, -11121281, 5096516, 13673565, +-2977486, 6422050, 8759586, -6405407, 7578470, 4835597, 1788854, 12491912, -614717, 10467372, +3855270, 1379221, -9822590, 3964255, 4820027, -2538863, 14338748, 11496017, 2208150, -4217658, +-7183870, 4202089, -7063074, 2907156, -166967, 8555038, -48855, -12590697, 882616, -4919885, +-2046015, -9414568, 11052561, 5821828, 3985193, 2710661, 12337830, -3485903, -12999792, -1954210, +8115341, 303869, -6715718, -1638530, 888521, -2804614, 1540283, 4005057, -80531, 208843, +-877247, 1359894, -260382, 4809290, 1395328, 1495186, -1160715, 1916092, 2444910, 4376572, +-3651259, 2463164, 2428267, 59056, 726386, 4408784, 2334852, 1209570, -2678986, 3761318, +-1135482, -2037425, -2537789, -70867, -6501507, 4165582, 2011655, 832687, -3110093, 3685082, +3536906, 6477885, 3926674, 1182190, 1045825, 424128, 5235029, -16489453, 7431367, 5449240, +7049652, -7704635, -13674102, 3952444, 4100083, 675921, -11532524, 11011222, 3155190, -5894306, +-10158135, 4568235, -4498442, 17633526, 20541754, 3019362, -3299072, -7685307, 11659762, -13298292, +-4764730, 16371342, 4064650, -3207267, -8875550, -8189429, -4630512, 267899, -10852845, 2420214, +11537356, -1494649, 4326106, -8491150, -7745437, -2647847, -6406481, 16757889, -6175626, 7509751, +6185290, 6782827, 1782948, 3316789, -11655467, -11703786, -11207717, -2527588, 8383240, 19320374, +-7814693, -14015015, -3248606, -6477348, 3564286, 2967286, 10758893, -6620155, -155693, -8760660, +-1679332, 15462419, -1999307, -8479876, 11072426, 3595425, 1775432, 5784247, -12455405, 1859184, +-4230006, 1161789, 5674726, 13585518, 3793530, -15880105, 5770826, 1342177, -2474975, -6645388, +290984, -1734093, -883153, -473520, 2217814, 3602404, 4370666, 1405528, 281320, -2606508, +810675, -844498, 3132642, -5428302, 1993939, 2038499, -133681, 418759, 884226, -4125316, +-127775, -2757369, 4414690, 4057134, 1004486, 4882841, -1949378, 621697, 3753265, -859530, +2969970, 668941, 2747705, 863825, -6274411, -452045, -2256469, -426276, 828392, 295816, +-2226941, 136365, -2619930, -76236, -1286343, 26761404, -11611981, -9166534, -2755759, 5607080, +-15641197, 6234682, -4198331, 7872675, -7003481, -3251827, 9754944, 7164006, 2776160, -4941360, +-1745367, 13261248, 13120588, -2770791, 11458436, -3370476, 16835198, -7912941, -4108136, 2962454, +17632988, 12808129, 4276714, -9497783, -644245, -19621558, -2940979, 2996814, 9012452, 10423886, +18575196, 4801237, -328565, -962610, -7116761, -12267500, -868657, -10650445, 7659001, 2331094, +11838540, 6516003, -4039417, 11658689, -13965086, 6241125, -3114925, 937377, -2430415, 14856292, +8747238, 4198331, 2658048, -27180164, -4318590, 15996606, 8108362, 919123, -512712, 736587, +12952011, 5420249, -20508468, -6766184, -7922067, 1838783, 426276, -20446192, 780073, -19118510, +-12640626, -1734093, -8200703, -8948564, 11880416, 14943265, -1635846, -7383586, -823023, 4533338, +-1862942, 3856344, 6132140, -577673, 6814503, 9929964, -3219615, -5655398, 908922, -2457795, +3012920, 1893544, -1595044, -1476932, 115964, 71404, 2813204, -383326, -3459596, 624918, +3394098, 1190780, 3014530, -2709051, 4579509, -76236, -1702955, 1054951, -2916820, 1091459, +-5834176, -3803731, -4567161, 2280091, 213138, -4400731, -872415, 3635690, 2429878, 3146064, +-2139431, 1701344, 26844, -788127, -5575405, -2929705, -5909875, 9710384, 18914500, -4787815, +-7692824, 1058710, 7319161, 4167192, -11563663, -754841, -9367324, -549756, -12751221, -1444183, +-10958609, 465467, 11362336, 841814, 25077240, -10576357, -5024038, -9001178, 10247792, 16641388, +-13345537, -4534949, -20709258, 3838627, -140660, 5605469, 5146445, -11677479, -6849936, 9007620, +-3358665, -2631741, -11241540, 22687090, -2988224, -24419574, 6903086, -6484327, -7177427, 8695161, +6887517, -7106024, -7690139, -2422899, -14002667, -8526047, 4770635, 3080565, 4976257, -4361540, +-10088341, -11877195, -11747272, 9704479, -17292076, 203474, 4305168, -5439576, 573915, -185757, +-2236604, -13880797, -2427730, -5686537, 8918500, 11165304, -1950452, 17398912, -858457, -255014, +-5217312, -1192390, 25271050, 2359011, -11203959, -4609574, 9917079, 7201587, -13805636, 205085, +2135136, -9538049, 8032126, 1773822, 8973797, 1286880, 1488743, 1276679, 834834, 3772055, +5461051, 392453, 2808909, 8469139, 811212, -3133716, 1635309, 4022237, -3102040, -1013612, +634581, -4100620, 3861176, 3342558, 4439923, 757525, -4511327, 983548, -1447404, 679142, +-830002, -956167, 559956, -2711198, 3864934, -2019172, -2416993, -3214783, 7661148, -24696, +-7991861, 5850819, 4812511, 1913945, -382252, 4450660, 3592740, -9165460, -12147241, 30758946, +-7871065, -2763275, 2792266, 13078175, 9492951, -20071456, -8112657, -19072876, 4220879, 1027571, +-5833640, -20990042, 914828, -9836012, 4392678, 4539244, 10608569, 465467, 7733089, 36134632, +7912404, 8963060, -5644661, -2087891, 15849503, -1458141, 1281511, 4113505, 1069984, -2402497, +-8228084, 14505715, -15446313, 6362994, -22980222, -7089381, -10736881, -14292041, -12178380, -111132, +-25114822, -8646306, 3478387, 14307610, 8307541, -24793236, 14034879, 9229885, 10233296, -15779173, +11553462, -7452305, -17966386, -6213744, -17877264, 8650601, 21412022, 5319317, -2036351, -14055280, +11327976, -14964203, 22356916, -4217658, -2399276, -13530758, -14707042, 2118493, 17458506, 5705327, +-12006044, -4909685, 2926483, -2515777, -4806069, 11412802, 5903433, -5353140, 14774151, -1219234, +-20975010, 26278220, 13993003, 10817412, 4961761, -3553549, -1297080, -2201171, 7851737, 1777043, +1151588, 17295296, 6753299, 303869, 824097, 2453500, 9031779, -7246147, 5091147, 493384, +1699733, 1652489, 5815923, 2843268, 358093, 9746355, 7456063, 648003, -3411815, -3467112, +-1282048, 7977365, 3990025, 4476967, 4300873, 5305895, -6602976, 6598681, -1756105, -1764158, +6112812, 9586904, -1398012, -2670933, -64425, 9124121, 10510859, 4021163, 6475200, 4962835, +16905528, 3151969, -10803453, 4893042, -3116536, 5042292, 18542984, -26087094, -11802033, -20976084, +11942157, -4229469, 2090575, -6925635, 15139760, -14873472, -14963666, -6830609, -3461744, -10712185, +-18527416, -8962523, 3515968, 12185896, -17045652, 11263015, -6393059, 1348083, 22168474, 16938814, +-245350, 8927090, 4318053, -3523484, -2637110, -30048128, 4205310, -3049427, 2998424, 5852967, +-2324114, 819265, 30396558, -27254788, 2601140, 32886028, 4325569, 9082782, -12862890, -3521336, +17224966, 30189862, 1560684, 26773216, -10409390, 24220932, -8483097, 17928268, 18209588, -4500052, +35460324, -5897527, -1476395, -10524817, -15991774, -16969416, -7765838, -10186052, -24635932, -11508902, +-5214627, 9118752, 9035537, 1156420, -12649216, -2115808, -3563749, 15857556, 4931696, -8268349, +13594645, 3058017, -1673427, -1916629, -9884330, -1522029, -3928285, 4138201, -10009421, -4786741, +-6981470, -6947110, 12637941, 4879620, -4195646, 3816615, -3230352, 2414845, -7607998, 11325292, +531502, 3176128, -302258, -7637526, 6986301, -930397, 2559801, 8044474, 5567888, 3426847, +617402, -11883101, 5661304, -4558034, -565325, 10218801, -244276, 3783866, 2424509, 4879083, +6845104, -2483565, -5574868, -3677566, -4474282, 2126009, 6133750, 10519449, 6042482, -12297565, +-1602560, -13472239, -11390253, -39062728, -27616102, -19650550, -1852742, 26421566, -17279190, -2256469, +-13274670, -19374598, -15896211, -19792284, -20485384, -8195335, -24194624, -26494042, -22897544, 6461779, +-15784005, -8344585, -19697794, 18815178, 30975304, 2633889, -3481608, -10931229, 2612414, -1969779, +-736587, -2524367, 9810242, 2008971, 21146808, -18411452, 1684701, -15668041, 32101660, 7817378, +-18711562, 14720464, -13389561, 11951820, -18003430, 10561325, 1623498, -10853382, 9782325, -17148730, +-5645198, 5398774, 17576616, 7623567, 31142270, -6995965, -19968914, 1859184, -5650030, 2344515, +-13209709, -11523397, -21316996, 2688113, -22667764, -4584878, -3490198, -19945828, 13381507, 16850768, +-9747428, -1085016, -29248728, 33687040, 40939092, 6535867, -16063178, 5569499, 36034776, -16893180, +-7599408, -19265612, -11152419, -21146272, 8745627, -1025960, -11857331, 9217000, -11877732, 4958540, +-7367480, -3425773, 4953171, 2556579, -28454, -7930120, -1516124, 6931541, 4110821, -13216151, +10495289, -9211631, 4871567, 6024229, -4094715, -7781944, 4239670, -6297496, 5208722, 3696356, +-8147553, 2991445, -1050656, 3151969, -4830228, -13332652, 3693135, 2309082, -5408975, 3426310, +-4839892, 9459665, -88047, 3851512, 1150514, 12298102, 1694365, -16558173, 9373229, 6108517, +2873870, -31477278, 57612156, 21807160, -4732517, -17359184, -4849555, -18436684, 19824496, 49993956, +1082332, -33157684, -15183246, 18039936, 6702834, -6594386, 23820426, -4601521, 2988224, 13667123, +-1440425, -13746580, -4483946, 11257646, -14413910, -13096966, -5323075, 4686883, 711354, -2492155, +-6052683, 10608032, 1101659, 15699179, 12392591, -16169478, 7947837, 19295140, 10794327, -14943265, +5776731, 3209414, 13012677, 336081, 4537096, 3511673, 5367099, 27202176, 25743498, 15955804, +34891776, -17187386, 17987324, -20707648, 13220983, -228707, 12082817, 15152108, 4886062, 3941169, +18397492, 8551817, -4896263, 11678016, 71941, 15663746, -16608639, -9497783, 1450625, 37759740, +-26046830, 2519535, -32753420, -3892851, 3810173, 12905303, -15931644, -3151969, -16419123, 4250407, +20267414, -12424804, -29283624, -6246493, -2870649, -7959112, 7123740, 5091147, -8279087, 2923262, +-7080791, -6940131, 6582575, -1060857, -3941706, -13243532, 7197292, -576063, -8368744, -6726456, +6269042, 17814988, 1743757, -5129802, -2357400, 6478958, 16019154, 3178813, 1402844, 13323525, +-377957, 3613678, -1231582, -2642479, -602369, 4820027, 7589207, 4535486, -2134062, -2850785, +6762963, 4793184, -10033580, 9525164, 2592013, 18525268, -4606890, 4690641, 11173894, -7674570, +-4686346, 6270653, -10528575, 48233020, 3953518, 3496104, -10618770, -6762426, 7975755, 7368554, +4398047, 18611168, 7754564, -7845832, 9827959, 19858318, -832150, 21771190, -2155537, 10574209, +-22204980, 40162776, -6026376, -4704063, 6685117, -30396020, -7873212, -14632417, 21369072, 11771968, +12073690, -14198088, 5115843, 5128728, -18963892, 5246840, 16124381, 13764296, 4675609, -4677220, +1879048, -9102646, 30465276, 4620311, 13735305, 11253351, 16406775, -27169964, -2236604, -8182450, +4999879, -10080288, -11982422, 22514756, -21532282, 16502875, -13694503, 17372606, -3991635, -18184354, +-1810866, -27328876, 16844862, 15691126, 18903762, -56528748, 16218333, 10217727, -17470316, -11629698, +-16250009, 29136522, -41735272, 25012816, 58469536, 1130113, -28052042, -11192685, 16899622, 34391412, +9402757, -11716671, -25287694, -42323680, -3500935, -216896, 16736951, -12645994, -5797132, -9681930, +28951838, 1901597, -915902, -8278013, 5975374, 1713692, -89121, 1196685, -373662, 5501853, +18453864, 22672596, 11884711, -3308199, -1869385, 9062918, 2237678, -5502927, 2642479, -8898098, +-5453535, -10854456, -15947750, -33374044, -13254269, 5258114, 1626182, 18946174, -13401909, -9406515, +24139326, 9099425, -6262063, -9815611, 7864085, -2285996, -9200894, 24041080, 2816962, -960462, +-7470559, 882616, -9490267, -12644921, 7949448, -27215060, 3782256, -16236587, 24575266, 2248416, +6480569, -13654238, 10722386, -3469797, -10337449, 5177583, -10627360, -5588290, -9061307, -21664888, +-13099113, 16757352, 13184476, 10899553, 11181410, -26302916, -8094403, 5761699, -8234526, 16186658, +10759967, 1423782, 9143449, 27135604, -8334384, -26908506, 51730732, -22305912, -29455960, 32679332, +-15944529, -8760660, 6866042, 16977468, -19724638, -5664525, 1662152, -12324946, 67472864, -162135, +-11395622, -3851512, 300111, 17307644, -33502892, -24810952, -14467597, -12840342, -1442035, -28156732, +-343597, -2076617, 10231149, 43402256, 43061880, -16310675, 33223720, -32380296, -29569240, 18216566, +26844620, -8764418, 7233799, 3996467, 18318572, 23594940, -228707, 2083596, 30043296, -26508002, +-54018876, -5398237, -21676700, 12555263, 25074020, -1897839, -17231946, 35112432, 9992778, 7572564, +-9558450, -27692338, -16120623, 3703336, -12505871, 16914654, -1694902, -9519258, -1689533, -10849624, +-12067784, 16826608, -5416491, 7212861, -12068858, 17891224, -1715303, -311922, 10808285, 17202418, +-2026688, -2694018, -11503533, 2209224, -9919227, -8081518, -7047505, -2089502, -17146046, 785442, +-7911330, -2083059, -17190606, 5753109, 19400904, 8291435, -12178917, -23974508, -2040110, -1359357, +13173202, -32568200, -7057705, 8757438, -7013682, 16499117, -438087, 10397579, 2518462, -19599010, +21180632, 201863, 12978317, -13397077, -20365662, 18910742, -20161114, 6187438, -4580046, 17765058, +179315, 3833795, -10668699, 3317325, -7508677, -26492432, -20716774, 8726300, -1513976, -833224, +4443681, 19500762, -8678518, -6172405, -16376710, 6948184, 6207839, -2220498, -3101503, -44423384, +2193118, 12230993, -15643345, 10795400, -24330452, -4833449, 1805497, 15094126, 19573240, 2093797, +-9054328, 5899138, 35108672, 30196842, 30501248, -1659468, -2576981, 6176700, 3840238, -14233522, +9218610, 37997040, -27110908, -9225053, -7712151, -267362, 1656784, 4615479, -20109036, -31341450, +-11434277, -2232309, 62594852, 31322660, 21386252, -3323768, -5261335, -16312823, 27333708, 3519726, +17565342, -6843494, -8227010, -13025025, -10945724, -46555300, -20242718, -24780350, 19317690, -2243584, +-8813273, -1910724, -18751828, -9317932, 20226074, 29706678, -4539781, 26137560, 14502494, 10679973, +1774358, 12138651, 16085189, 12934294, -3240553, -1316408, 344671, 17661442, -14231911, -18988588, +-8830990, 9468792, -1606855, -13502840, -8361765, -13526999, 7807714, -3437048, 16611323, 32425930, +6277095, 19810536, 26475252, 12366285, 16454557, 7762080, 5277978, 6805376, -12002286, 16895864, +-14248017, -10087268, 3891240, 1001801, -10158135, 4771709, 9457518, 16968878, 7171522, -20476794, +11037529, 7961259, 2189897, 8829379, -5383205, -42719892, 24018530, 20854750, -1084479, 34332356, +15537044, -23579908, -23095650, 9953587, -9451076, -21053392, 1416266, 1958505, 9441412, -5336497, +12301860, -3168612, 11650636, 14671071, -13604846, -55350856, 29714732, -8471823, -17242684, 12446815, +19648938, 559420, -37033892, -4993437, -1440962, -38301444, -23766202, 19975892, -5749888, -15640660, +-13062069, 8505646, -37092412, -26496726, 50256488, -4404489, -29055990, 11282879, 27336930, 11565273, +-41184440, 58851252, 23922968, -36483600, 20282984, 26536456, 4333622, -24750286, 25638808, 28427852, +17439714, -22821308, 21521008, 39871256, 2231773, 40279276, 50058380, -26874684, -15874736, -18751828, +47301548, 29959008, -20441896, 11402064, -12333535, -30172146, 25936770, 58773408, 8567923, -17822504, +-14730127, 35265976, -3246459, -39717712, -28292560, 7096360, -1413044, 32693828, -5793911, 25233470, +-49174156, -7647726, 2022393, 8358007, -10197326, 10356777, -413927, 922344, 5694590, 1312649, +-12818330, 3823058, -6078453, 7863548, 3156801, -17997524, 15712064, 5037997, -14893336, -10726681, +2876018, -13006772, 2565169, 11774116, 13041668, 1791001, -12210592, -4032438, 4038880, -16822314, +9803800, 12361453, 4044786, 983011, 12412992, 4494684, -5578626, 6005975, -4500589, 992674, +-8577587, 5363878, 19854560, 34739844, 55672976, 22512072, -23155780, -8467528, -19429896, 11911555, +-9473624, 15336791, 10051297, -25540560, 12978854, -26025354, -8817568, 256087, -9627169, 1516660, +13573170, 10696616, 720481, -20732344, 4658966, 16755204, -6348499, 2543158, -7551090, -24252606, +24583856, -14623827, 17019882, -24975234, -14777909, -3466039, -20574504, -6045704, 20886426, -20310900, +27540940, 1854889, 22461068, 8934069, -11188927, -30059402, 24715926, 15397458, 10295037, 6415608, +25484188, -18805514, -9591736, -10850698, 7971460, 9640054, -2490007, -23710366, -1068373, -3207267, +-24013700, -9445707, 3810710, 6589017, 18974628, -2170569, -16862578, 22600654, -4318053, -3810173, +27097486, 12979928, -22188338, 7305203, -13586055, 8732205, -7107634, 10712722, -19154480, 10853919, +-6618545, 21368536, 3683471, 8286066, -7169911, 82141, -15532212, 6375342, 1051730, 842350, +-364535, 4609037, -6233608, -5679558, -711354, 2682207, -1701881, 4250944, -7877507, -1354525, +6124087, -1296006, -242666, -1099512, 206158, 553514, -12451647, 2561411, 10075993, 402653, +-1409823, -2488397, -1176284, -9071508, 722628, -2099702, -1098975, -4595615, -7609609, -1486596, +7577396, -4099010, -2242510, 3772055, 1657857, 6012954, -5660230, -1935957, -794569, -4277251, +-6615860, -41258528, -48598092, -26026964, 144189568, 126756296, 76713488, 168197360, -35840964, -126346128, +-44422308, -238212304, -124871880, -2457258, -61648888, 85207856, 156161792, 21930640, 91764120, 178922432, +30035244, 62448824, 5979668, -183727968, -153493536, -135514816, -149296816, -90467584, 74131672, 31441844, +74226160, 193390032, 116533200, 30236570, 143471776, 65557844, -87885768, 47815872, -64135672, -168209168, +-20748988, -103965592, -191249520, -86223616, -19843286, -100211248, 111897320, 120471688, 57008712, 191822368, +216646736, 82292112, 107134200, 101164736, -112692960, -73342472, -144118704, -225082592, -207087216, -132682280, +-133310416, -38168300, 86586544, 112165216, 149781072, 211168512, 189587904, 110932024, 80908056, 14693620, +-87850336, -127601328, -93598608, -121483688, -150190704, -50711216, -56702696, -27418534, 93711888, 65073588, +69247760, 145929024, 37215892, -6254010, 24070070, -40108016, -63005024, -34879968, -63667520, -18914500, +40859636, 15763067, 22525492, 51873540, -12111271, 11030013, 28192166, -47307456, -4731444, 60054916, +-56549152, 5197984, 9531069, -112512040, -5695127, -1864016, -134712192, 11098195, 47505560, -16942036, +138870256, 126500208, 23171886, 135353216, 66657892, -5469641, 22497038, -35960688, -145471072, -151259616, +-187569280, -213129696, -107540616, -16962436, 43333000, 134529120, 222994704, 256076688, 203566960, 151034672, +69009920, -27580670, -84715544, -186134224, -233558176, -171529712, -137841072, -130813968, 8683887, 65208340, +79403208, 130254544, 116043576, 76997488, 75474384, 54920284, 17861696, 22657564, 560493, -39524436, +-45617384, -57357676, -73910480, -64209224, -43142408, -24988120, -2066953, 14066018, 8092256, 5173288, +249645, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -527744, -6460705, -673773, 1967632, -1189706, 8621073, -3393561, -827855, -316754, 1074279, -1533303, -3951907, -694174, -2653753, -484258, 5400385, 387621, -2724083, 2516851, 1869921, 3539053, -1460289, -2718178, -1783485, 6015639, 843961, -1557463, -1187559, -1242856, 1189706, 1269163, --773094, -7691750, -1918240, 355409, 5303211, 1879048, -653909, -37581, -3054796, 4204773, --4307852, -5748814, 744640, 39728, -1940252, -1336809, -1599875, 803696, 523449, 489089, --2006287, 4989142, 153545, 6692096, -1080721, -3213709, 1470489, -374199, 958315, 1539746, -3389803, 2288681, -868657, -1860258, -1571421, 4334696, -4434017, 154082, 122407, -797253, --3804267, 3333432, -1919850, 423591, 2907156, -2069637, -2751464, -2304787, 2947421, -292058, --925029, -840203, 91805, -573915, -1204738, 1445257, 1495186, 1075889, 676994, 354335, -2044404, 310311, -51540, 410706, -210453, 52076, -484258, -276489, -256087, 1364189, -323733, -949188, 1178969, -2560874, 2239289, 1325534, -2985002, -1663226, -217970, 265751, --140660, -456340, -1503239, 2703682, 540629, -1183800, -1572495, -93952, 5638219, -799401, --2622078, 3586298, -1380832, -3401077, -323196, 2866891, 2172717, -1868848, 530428, -2332704, -1374390, 1307281, -1085016, 2863133, -761283, -5206037, 989453, 2677375, 2537789, 339302, --358630, -3778498, -1242319, -510564, -1622424, 3383361, 4800163, 2207613, -6482717, 2188286, -7691213, 3154654, -345745, -66572, 3558381, -1761474, 1184874, -3246995, -2893197, 2950106, -3382287, 1600949, 927713, 576599, 703838, 1567126, 331786, -320512, -1124745, 787053, --2246268, -446677, -950798, -4666482, -2294050, 956167, 1759326, 1409286, 3176128, 2463164, -2643016, 3744138, -2370285, -1532767, -667331, 1176284, 1406602, 2201171, -448824, -763967, --393526, 1336272, -959925, 1207423, 332323, -531502, -388158, 385473, -203474, 727460, -331249, 99321, -287226, 392990, 397284, -184684, 624918, 129923, 172336, -513785, -128312, -160524, 34360, 767189, 110059, 312996, 310848, 4453344, -311922, 1835562, --2867965, -4285841, -2674154, 2324651, -1945083, -1992328, -2109903, -2831994, 2725694, 378494, -2000381, -887985, 590021, -5818070, -3733937, -2660732, 3729105, 703301, 831076, 2029909, --2056753, -1054951, -462783, 664109, -4403952, -860067, -2971044, -3249143, 187905, -2867965, -1921461, 1799054, 7681549, -1921461, 3906810, -2609730, 1614908, -1794760, 402116, 6706592, -1077500, 2899640, -3182034, 2036351, -2862596, -1371168, -443455, 4256313, -2106682, -1108638, --3797825, -2028835, -4484483, -613643, 4236985, 1001801, 314069, 723165, 3884261, -3841848, --6720550, 1545651, 2113661, -4398047, -324270, 578210, -1089311, 1760400, 5251672, 1088237, --1336809, 110595, -1873143, 338766, 317291, -1509681, -453656, -485868, -2126546, -507880, --1214939, 442382, -463320, -843424, 1736241, -336081, -1713692, 727460, -1221381, 48318, --1321239, -1925219, 1116155, -352187, -140123, 608275, 816044, 245350, 1779727, -848793, --149787, 297427, -641561, -274341, -202400, -887448, -465467, 1465658, 489626, 2088428, -256087, 937914, -828392, 2471754, -6861747, 1145683, -2402497, -5046050, -3655017, 2059437, --1013075, -226023, 5006858, 1671816, -700617, 446677, 4257923, -1995012, 3143379, -1417339, -938987, -4496831, -796180, 3065533, -1028108, 3805878, 4256313, 1412507, 2681670, 5586679, --1304060, -7839389, 1786170, -3481608, 245350, -9604084, 263067, 3099893, -1927367, 3602941, -510564, -3455838, 1248225, -7218767, -4626217, -1750199, -1775969, -5987722, 3043521, 3342022, -197032, 3111704, 239444, 855772, -1944547, 2823404, 2140504, -1106491, 6624987, -1229434, -5473399, 4704063, -268972, -745177, 14496, 1518808, 2236067, 731218, 2502892, 852014, -850404, 7348152, 2798171, -3182571, -1471563, -25233, -1765768, 1106491, -1277753, 7412577, -1234803, 3492882, -2655901, 3020436, -33286, -1437740, 635118, -2372970, -1559073, -390305, --1718524, -1036698, -1040993, 927176, -1612760, -355945, -1136019, -564788, -553514, 2052994, --866510, 1080721, -292058, -1707250, -288300, 1091459, 428960, 212064, 664646, -1022202, -893890, 609885, 523449, 1025423, -576599, 262530, -1691680, -96637, 1296543, 1188632, -281320, 244276, 161598, 976568, -13087302, 42950, -31675, 3358665, 5753646, 2018098, --2888366, -4784057, -756988, 6223945, -1173600, -1185948, -4604205, -106837, -1911261, 4609037, -5485747, -9402757, 6143951, 3919695, -3557307, -762894, -4922570, 31139, -1479616, 117575, -3240016, 6254010, -2339684, 1445793, -1628866, -2139431, 2329483, 4315906, 2917357, -2711198, --4443681, 3103114, 2161442, -1602560, -802085, 543850, -5729487, 2086280, 1743757, -2296734, --3828427, 1483374, -2907156, 5102958, 2253784, -8960376, 4098473, -3837553, -9860171, -2861522, --729071, 1979980, -4038343, -187905, 2186138, -4358855, -4284767, -4486094, -1363115, 1123134, -9376450, 1472637, 1791001, -2016487, -4885526, 6380711, -1925756, -7494181, 381178, -7563975, -582505, -734439, -2745021, -8286066, 2537789, 110595, -1809255, 2023467, 5038534, 2303713, --941135, -860604, -11274, 2738579, 457414, 667867, 1556389, 2666101, -217433, -1256815, --1584306, -1660542, 656593, -136365, -1287953, -1336809, 1229434, 1162326, 2351495, 482647, --37044, -143345, 890669, -420370, -22012, -383863, 1494649, -181999, 807454, -231391, -8153459, 2177012, 1771137, 3555159, 5131949, -1147830, 12534862, -1838246, 8968429, -10593000, -3641596, 6165963, -2240899, 845572, -2981781, -300648, 4827543, 8799314, -2501282, -4395362, --1296006, 4092030, 867047, 8947491, 4231617, -983548, 1279363, -81604, -4201552, 817654, --945967, -1315334, 3906810, 5130876, -8133595, 9364639, -7152731, -3900904, 1583769, -2908767, -4713190, 105764, -2726231, 6610492, 9277129, -6936372, -1261110, -692564, 2864743, -6568616, --10805601, -5051956, -3312494, 3158949, -7497939, -4339528, -884226, 7736847, 4864051, -5422933, -3850438, 2034741, -2956548, -4460324, -716723, -2752537, -3182571, 302795, -2121714, 5779416, --4401805, -935229, 4897874, -3914326, 5294084, 6324340, 851477, -677531, 544924, -7860864, --6972343, -1760400, 4356171, 166430, -3062312, 2865817, 6427419, -4316442, -2012729, 1730872, --593242, -3074660, -28454, 802622, -2970507, 136365, -827318, 1302449, 380105, 2305861, -311385, 1804423, -1176284, -508417, 73551, 186831, -134218, 1612760, 688805, 1884954, -1811403, 154619, 532039, -302258, 1229971, 1874216, -947577, 4778151, 3884261, 5219459, --5042292, -6671158, -3606699, 4531728, 204548, 18763638, -1434519, -466004, -4539244, -8487392, --12473659, -2758980, 4096325, 6591701, -4136591, -7989713, 1012539, 63888, 7976828, -2685428, --3304441, 9869835, -5409512, 635655, -7645042, 4872641, -1556389, 31139, -1723356, -11609297, --7310571, 609349, 6407018, 4297115, 492311, -12029130, 7951058, -4865661, -4991289, -5194763, --6906845, -1084479, 6502044, -5335960, -5901285, 4026532, -1951526, 2309082, 11996917, -5260261, -226023, 590021, 5074504, -3569118, -3295851, -1670742, 7610682, -1731946, -4068945, -718870, -5926518, 7737921, -7722351, -8750459, -3009162, -1302449, -2963528, 1851131, -6174016, -2177012, --5829881, -11558831, -4600447, -2676302, 1499481, -10630581, -2983392, 158377, 7479149, 219580, --6575595, -128849, -313533, -2005750, -3657165, 159988, 1508070, -695248, 1106491, 1054951, --1484448, 2159832, -934692, -2157147, 2304787, 2873333, -1286880, -2757369, -127775, -542240, -440771, 2301029, 817654, 41876, 1580011, -875636, -1428614, -1108638, -1563368, 2246805, --6123550, 5189931, 6342056, -4664335, -5645735, -4775467, 2587718, -483184, 9190693, 16004122, --8981313, 590558, -369367, -1119913, 1496259, 4627828, -13139379, 11800960, -9257265, -4588636, -11888469, -2754685, -5675263, 3932043, 4398047, 259846, -656593, -9176198, 5732708, -1314260, -1996623, -6076305, 7575786, -701153, -12641162, -13512504, 4523138, -2485176, -6966974, 3416647, --569620, 20914880, 3519726, -3834332, -6220187, -12345347, -4365835, 2387465, -2993055, 9626632, --2029372, -14377403, -1380832, 9871982, -4306242, 1286343, 8548059, 5757404, -4833449, -913754, -6925098, 9227737, -4201015, 1796370, 1331440, -4464082, 2014877, -2061584, -604517, 1366873, --2134599, -2611877, -8887898, -9747965, -8215199, 8199093, 4601521, 5337034, 2278480, 51003, -3293166, -7116761, -3908957, -9955734, 4955856, -1269700, -1353452, -2036351, -1461900, -5086852, --2990371, 1024350, -2040646, 289910, 405338, 340376, 1975148, 236223, 2365990, -274341, -1751273, -2328946, 1349694, -3484292, 317828, -1665911, 2915209, 119722, -1803886, -562104, -940598, -1511829, -1655173, -4072703, -4039954, -2275796, 4167192, 252866, 1490891, 2578054, --10722386, 4066797, -11574937, 448287, 4214437, -1872069, -8661875, -4076998, -1765768, 7756711, -6163278, -4619774, -4780299, 8271034, 3452617, -4792110, -5168457, -4034048, -545998, 7997766, --1356136, 725313, -444529, -98784, 10276783, 5092221, 6889128, -483184, -492311, 3544422, --5301601, -8944806, 7321309, 11761768, -7940858, 10111427, -2949569, -1024350, -4515621, 5210869, -340376, -5660767, 3469260, 9562208, 7504382, 3456375, -7157026, -2943663, -14513768, 2416993, -7601019, -4671851, -1138703, -5754183, 1536525, -3424700, 5674726, -3587908, 1915019, 6738267, -3875134, 12693239, 6673843, 4294968, 8153459, -6806450, 12221329, 3775276, 7446400, -2430415, --8356396, -12946642, -2418067, -2167885, -3336653, -3034395, 4869419, -8897562, 13514115, -2303176, --10842645, 6213207, 10115722, 4185446, 1349694, 2112050, 3831648, 1289564, -2176475, 2597382, --1987496, -23085, 4286378, -3221, -98784, 4638565, 725313, 2548526, -321586, -2157684, -771484, 468688, -1779727, 1458141, 1965484, 518080, -1244467, 1130113, 460635, 3598646, -869194, -636729, 2347737, -3054259, 981400, 718333, -3263102, -4873178, -1281511, -1894618, --1168768, -2404645, -1619203, -999117, -324807, 6007586, -12783433, 9402757, 3255585, -1932198, -13877576, 10739029, -17622788, -11799886, 11119670, 19087908, -1762547, 2820720, -1624571, -2404108, --1906966, -787053, 4831838, 2878702, 11536282, 2845953, 11039677, 3124052, 4804995, -1493575, --6236830, 2683818, 865973, -5085242, 8451959, 875636, 3391414, 1980517, -1745367, -7830799, -1023813, -8884677, -2997350, -10283225, -6880001, -4155381, 8650601, 1241782, 4263829, 10592463, --4574677, -878321, 1247688, 3808562, 1149978, 265751, -2968359, 7843147, 17274358, 8315057, --13746043, -9796284, -10172630, 11933567, -1807108, -11045045, 6454262, -6189048, -674847, -1804423, --767189, -848256, 378494, 10462003, 17291002, 6540699, 14892262, 9552544, 4830228, 1941325, -3752191, -4792110, 15850577, 5131949, -8315594, -11133092, 4917738, 3664144, -3051038, 7943542, -14988362, 3459059, -5788542, 9339406, -876173, -6867653, 1424319, 5237176, 850404, -909459, -593779, 2876018, 5052492, 2243584, 2237141, 574452, 3295314, -1398012, -651224, -1945620, --562641, 6914361, -3677029, 2559264, -1089848, 1649268, 162135, -1843615, 1023813, 2451353, -3003256, -1429687, 1225676, -2791192, -85362, 1389422, -5006858, 2123325, -7150047, 1994476, -17193828, 3285650, 6038187, -5516349, 4406100, -8470212, -14982993, 347355, 7969849, 2392297, -6393596, 9030706, 9903658, 591632, -10875931, -9211631, -14397804, -22244172, -419833, -2677912, -9803800, 7313793, -8383776, -4652524, 5735929, 11638825, -14595909, -9394704, -2833068, -7975755, --5469104, -2979634, 4472672, 9038222, 373662, -5487358, -6776922, 9133248, -7327214, -3069828, --251792, 12855374, -936840, 1056025, -20212116, -1522566, 4891968, 10369125, 13438953, 2905009, --13032541, 6135361, 224412, 6106370, 8447127, 1429687, 4226248, 9749039, 16994112, -11324218, --4514011, -995896, 5178120, 18124226, 7590281, 6055367, 10124312, -3487514, -6029061, -10878615, --13746580, -8132521, -572304, 8796630, 20136418, -12583180, -9290551, -1290101, 19745038, -11075647, --6473053, -9892383, -1860795, -8865886, 2797634, 1694902, 4669703, 10513006, 1901060, 6735583, --4407174, -4329864, -5638755, 456877, -2865280, -6553047, -5919002, -2866354, -1586454, -1357210, -6643241, -5000416, -1549410, -1879585, 4741107, 1208496, 3445638, -2251100, -2318209, 4786204, -1553704, 1270237, -4028143, 6166500, -3144453, -157840, -2205466, 1966558, -2285996, 649614, -4022774, 4904853, 8951786, 5057861, 12610561, -14915348, -10645076, -1661079, 21887154, 8849780, -555661, 11842835, -7371775, 17770428, -4169876, -15599321, -3020973, -15501611, 12607876, 7532836, -4950487, 4909148, 297963, -4970888, 6109054, 9084393, 4582193, -3164317, 8145943, 10880763, -9752260, -1212791, -8446590, 14743549, 3481608, -899796, -2461553, 1774358, -9605694, 9568650, --1796907, -2649458, -12246026, -6669548, -7553774, 17200270, 6147172, 187905, 2286533, 8893267, -12786655, 6521371, -16492138, 15035607, -1752347, 8700530, 3727495, 13214004, -3007014, -17277042, -5446019, -780073, 7178501, -3059091, -7042673, 6441914, -2727841, 4376035, 21794812, -2629594, --9989020, 68183, 2896419, -10545755, 17575544, -7783018, -10541997, 15498389, -8970039, 7916699, -1088774, -11188927, -7925826, -11190537, 3585761, 9429064, -5546951, 5479305, 10471130, -5750961, -7407745, -2354179, 12385612, -4330938, 3744675, 4065187, -3315178, 96100, 556198, -5537287, --643708, 5159867, -7757785, -1453846, 5852967, 3017215, 271657, -4729296, 2495913, -1217623, -2046015, -4944044, -4758287, -2645163, 1146756, 1329292, -5743445, -3570192, 5600638, 816044, -2518998, -5856725, 2857227, 631897, -2567317, 1300838, 981400, 2053531, -3032784, 362925, --1404454, -199716, -6242735, 4671314, -14404783, -3122441, 7761006, 1553168, -14087493, 3477313, --4937602, 10128607, 2518462, 5071283, -23530516, 6954626, 447213, 8893804, 15185931, 558346, --1910724, 1018444, -7648263, 15155866, -14636712, 4517232, 9269076, 6081137, 8535711, -4147328, --7053947, -8448738, -15149423, 5749888, 2309619, 8568460, 16090558, -6332930, 13797046, 7252589, --13311177, -7839926, -208306, 1186485, 707059, -389231, 6823630, 11574937, 10957535, 4362076, --27811524, 6603512, 8254391, 7953743, -18331458, 10808285, -9416179, 9339406, 1138166, 4798552, --2506114, 6929930, -2238215, 23349590, 11335492, -10873247, 1306207, -30019138, 4971425, -9066139, --9019968, 8039105, 5978595, -15246597, -29599840, 18388902, 11502996, -28090696, 10851235, -6604049, -10628433, -2655901, 2558190, 4018479, 303869, -19042812, -6976101, -3048890, 5952288, -518617, --4710506, 7523172, -9981504, -4293894, 10421738, -1251983, -875100, 3260954, 2198487, 3724811, -1899986, -5937256, 2349347, -8704825, 5224291, -4019016, 3007014, 1842004, -2165737, -1644436, --1447404, -3344169, 1589138, -5171141, -701690, -4442607, -2937221, -7081864, 3510599, -2389613, --1701881, -4247723, 1855426, 2935610, 2297271, 1402844, 746787, 576599, 2627446, -581431, -2847027, 1879585, 6504728, -3843996, -3449396, -6016176, 10919954, -8339753, 92342, 1622424, -28033788, -3811247, 20246476, 4985920, 15248745, 969052, 4363687, 4951561, 27030376, 27078158, --13978508, -12780212, 15475304, -19614042, 24159, 5306432, -19547470, 11137924, 1584306, -1560147, --3543348, -5959804, 2371359, 2110440, 3680787, -12015171, 113280, -2930778, -15786689, 8064875, -11023034, -17653390, -13128104, -6453725, 9536438, 9248675, 8868034, -951335, -3564286, 8304320, -28147606, 15166066, -5521718, -3663607, -3817689, 18992346, -15170361, 7017440, 4042101, -23685134, --9800578, -1064615, 3240553, -20074678, 13843753, 9006010, 4045322, 3823595, 9605157, -19010598, --2289218, -15768972, 714038, 9791452, 16480326, 10140955, -10407243, -5537824, -817118, 555125, --11959336, 26775900, -2119566, 3567507, -6306623, 9188009, -2032593, 5375689, -2421288, 3344169, -2522220, 5831492, -679142, 105764, -2182917, 1389422, -415001, -1499481, 7894687, -2348273, --5829345, -327491, -657130, 4049081, -5943161, 1365263, -4931160, -7715909, 4760971, -1422708, --5289252, 442382, -115427, 930934, -4660040, 6186901, 1586454, 7594576, -9385040, -631360, -4375498, -2345052, -7627325, -120259, 8175470, 3722126, -2525441, 12914430, 20024748, -1394791, -1302449, -12402792, 1042066, -546535, -8865886, -14810658, -2843268, -6857989, -11098732, -8113730, -12550431, -10638634, 9101573, -3206730, -2540473, 17577154, -12169790, -6789807, 2684892, 7090454, -1030792, -23255100, -14295799, 2660195, -3752728, 3772592, -3260954, -7299297, 14817637, 3175592, --1289027, -6089190, -33454038, 20084340, -6062347, -364535, -2860448, 1278827, 9573482, -5570036, --9139154, -15608985, -1487132, 6892349, -9651865, -12367895, 5083631, 19638202, -3350611, 18263812, -13430363, -13368086, 24570972, 16254841, -16232292, -25052544, -7223062, -10917807, 1324461, -7937637, --1964948, 12001212, -20966420, 10262824, -3422552, -11769821, -13164075, -13129715, -15930034, 3317325, -9533754, -8547522, 13630616, -1773822, -7983271, -16409459, 250719, -1837709, 6328635, 19588272, --7099044, -14838038, -5196374, 434865, 5019743, 13406740, 3509525, -1657321, -11001022, -79994, -395137, 4989679, 2058900, 31139, 3688840, 5495948, -4131759, 6860674, -3966939, 3144990, -7944616, 7181186, 421981, -11214160, -4626217, 1716376, 2753074, -7793218, 12649216, -7668664, -5773510, 6856379, -5212480, 693637, 1376537, -2954938, -10751914, 2296197, 4805532, 869194, -9005473, 6309844, -6150393, -21228950, 38631084, 54366768, -5245229, 6623914, 3491272, 13167833, -26363584, -25164214, 303332, 4359392, 500901, -9075803, 1362042, -11212549, 13235479, 32386200, --6834904, 695248, 1851668, 9810242, 904091, 3802120, 12460237, -24955370, -1854889, 24482388, -25161530, -29403346, -6233608, 4227322, 4145717, 8748848, 22148072, 6226629, 44668196, 7430831, -13790066, 6576132, -7008313, -9270687, -525597, -31345746, -45076220, -15269682, -14622753, -46976204, -7362648, -1124745, -26223996, -12809740, -43936980, -4815195, -6040335, 29944512, -29339996, 18299782, --20045150, -1644436, -13179107, -10420664, 11793980, 26907434, -20734492, -7795366, -1870458, -6152541, --2190433, 11343009, 21594558, 23032298, -16434155, 46338940, 31102006, 4038343, -17568026, -38151120, --8641474, -14208289, -10399726, 2505040, 12259447, -8017094, 4580583, 14377403, 2347737, -4578972, -14632954, 9723806, 5026723, 6402723, 15362561, 15469935, 134755, 1254131, 6222871, 5791764, --2512019, -4625680, -2635499, 2819646, -363998, -1963337, 985695, -3093450, 2158221, 10084046, --415538, 3550864, 12345883, -3234110, -4396973, -4728222, -500901, -6855305, -1354525, 5833640, --3180423, -1880659, 1207423, 31139, 1078574, -981937, 4878546, -3294240, -3367791, 7974144, -5679558, -6235219, -290447, -3340948, -19413790, 35566088, 59204512, -13906030, -3015067, 10546829, -26513370, 8959839, -15373835, 9681930, -13127031, 3459059, 8405788, -3124052, -17709224, 5393942, -18905910, -4646081, -26976690, 21203716, -6160057, 17322676, -6340983, -4198331, -6614787, -10856067, --384400, 19240380, 10764799, 3248069, 15560667, -7283728, -6081137, 5989332, -8214125, 10813117, -6325413, 16499117, 28195924, 24734716, -17672716, -32952600, -11989938, -1982664, 25937844, -9806484, -4680441, 10525354, -10168872, -15130096, -24276766, -24919938, 19801410, 21124260, -16698296, -60122564, -5075041, -4133906, -8157754, 4786741, -5904507, -24052890, -11177116, -5555004, -16683264, -7070590, -25745108, 9825811, 14890115, -5675800, -8269960, -5322002, 14370961, 2518462, 2792803, 12380780, -35682052, -2974802, -5094905, -17827872, -16853452, -24665998, -2534568, 14166413, 9713605, -9986336, -7560753, -4539244, -5747740, -10205379, -9264781, 8705362, -7136088, 8498130, 4081293, 4862440, --5145371, -7590281, 8880382, 5545877, -2018635, 6736656, -8942659, 3979824, -1063541, 5578089, --2832531, -5057324, -2760590, -2432025, 6320581, 3190624, -88584, -6248641, -1311576, 12971338, --8974871, -79457, -8704825, 11154567, -5708012, -2312303, -8012799, 1340567, -3295314, 1341104, -9553618, 9546639, 2186138, 310311, -3328063, -12590697, -1873143, -10380936, 5513665, -14761266, --24550034, -5179194, -4205310, 4697084, -8458938, 18991272, -11318849, -38155952, -20898238, 13452374, --18187040, 21486648, 18901078, -8221105, -3013993, 2951180, -11809549, 251792, 6112812, -1472637, -3273302, 27168352, 22362820, -5796595, -35850092, -26900990, 1899449, 19132468, -14479408, -5970542, --16994648, -21423296, 1873143, -5901822, -25467008, -27406724, -40615360, 16485695, 5462662, 1089848, -23236846, 31534724, -1352915, -23228256, -17906256, -18752364, -10831908, -6519224, 7005629, 12321187, --10949482, -17062294, -21169356, 11339251, 9694815, -20507396, -19832548, -7745974, -3561065, -11906186, -7343857, 50964620, 30379378, 59490128, 19714436, -31396748, 36840620, -1484448, -19051938, 1956895, --17944374, -38801272, -16226923, 9035537, 18436684, -4283693, 16974248, 9968619, 37655588, 41310608, -33793876, 11332808, -9657234, -5903433, -5720897, 7250979, 9458055, -14268418, -5431523, 2417530, -30681098, -4250407, 2529199, -3318936, 11013370, 11246372, 13039521, -644782, 124554, 236223, -2729452, -1194538, 1728188, -11222750, -3732327, -3841848, -10661183, -10877005, -5165235, 3946538, -12893492, -8429410, 1830193, 4565014, 14669998, 20038706, 13587666, 12805445, 14137959, 3141769, --5494337, -11041287, -16031502, -19791210, -15716359, -9215926, -18910204, -19098646, -7524783, -3382824, -35376036, -20088636, 2306934, 10405095, -4464082, -26219702, 26520886, 25340308, -14579803, -20045150, -2738042, 35087736, -18402324, 10011569, 22471268, 6896107, -8469139, -16741783, -11023034, 7803419, --2678449, 5954436, -9838696, 6573985, -21779780, 31876710, -3094524, 7184407, -1519882, -40111236, -12492449, -11077794, 20683488, 12504797, 22100292, -8599598, -38729868, 27837294, 12495670, -13121662, --24119462, 19969450, 10659572, 21234318, 21376590, -18622442, 8567386, 22407918, -32811402, 30090540, -14768245, -911607, 9535901, -16962974, 37616936, -4202089, 24748138, 11162083, 43683040, -3024731, --7686381, 6194954, 17756468, 11842299, 12351789, 44189308, 2568391, 10831371, 25777856, -17022030, -17681306, 2133525, -29388314, 10970420, -9921374, 33247878, -24487220, -29356638, -30617748, 26167626, -42871828, -13657459, 10892037, -50549080, 4794794, 2473901, -1961726, -23653996, 3930969, 10062035, --7853348, -6476811, -6391448, 16061567, 7480760, -10071698, -10937134, -6256157, -2609193, -3130494, -4561792, -17402670, -10492068, 9307194, 3789235, 3338263, 521302, 8025684, -1401770, -883690, --10286984, 13781476, 17095044, -7283191, -26714160, -17977122, -240518, 77846, 5068599, 1398549, --8458401, -13060459, -7248831, 4996658, 7651484, 21429740, 7175817, 1174137, 301721, -15879031, --3330210, 16620987, 9726490, -64912524, 3564823, -7966628, 2028835, 50225884, 41371808, 59481540, -31433256, -15845745, -12112345, -24675124, -32855962, 11545946, 2891050, 8606578, 10457172, -9598715, -14966887, 25347824, 4671314, -6818261, -8591008, -17995912, -11945378, -10886668, 4963372, 8056285, --25805774, -15292231, -3558381, 17288854, -7815767, 11125576, 13854491, -36697812, -36132488, 6827388, -10472204, 8019241, -27275726, -12568148, -24499568, -11886322, -11218455, 23596014, -31053150, -43262132, --16256988, 8545374, 7347616, -33376728, -26781806, -21077016, -15946140, 17986786, 25393458, 1111323, --8634495, -10588168, -5896990, -5663452, -11484743, -37050536, 12168179, 27769648, 25262460, 7827041, -34507376, 46639048, -4078072, -6047314, 35730368, -8701067, -21767432, -49213344, -16762184, 6650757, --26998702, -18113488, 12623446, -4469451, 17508972, 30611306, -18685792, -29019484, -9611600, -12483859, --7213398, -7917772, -7820062, 3205119, 4423280, 3525631, 6214818, -10465225, 9054865, -14434848, --1752347, 8875550, 11951283, -12907450, -17948668, 10196789, -4113505, 596464, -12539157, 14717779, --8693014, -3185792, -3481071, 13613973, -11619497, 14773614, -6627672, -7006166, 9784472, 2513630, -7784628, -6276558, 653372, 2829310, 15963857, -1957968, 3758097, 42610908, 14971719, 3436511, -15572478, -17681306, 1165010, -9041443, -13186623, 7865159, 3127273, -11043435, -18305688, -10556493, --16990890, -13861470, 5599564, -10703059, -5180805, 7970923, -5254893, 1782411, -5849746, 21161304, --16540993, 17342004, 6344741, 1924145, -15996606, -6944425, 12832289, 5149129, -251256, 10182831, --1772211, -4281546, -6524056, -5582921, -4357781, 1868848, -40265, 2098629, -18743238, 9822590, --7811472, -7420093, 6597607, 4437238, 2503966, -3608310, 13231720, 11281805, -16396575, 14650133, --2011655, 9913858, 19902878, -4242891, 10794863, 10157598, -9825811, -7117835, -13111998, 1094143, -2313377, -21188148, 8758512, 3113851, 16479790, -6562710, -37381784, 23375896, 1472100, 585726, -532039, -16621523, -5171678, -4453881, -5539434, -24184960, 13765907, 6795175, 14842870, -10837276, -6559489, -12146168, -10937134, 394063, 9438191, 7470022, 293132, -1497333, -3333968, 716186, --5479842, -1257352, 16005196, -6608344, 3216394, 1608465, 4576825, -9922448, 10668699, -522375, --1979980, 2359011, -1015223, 2298881, 3601330, -9046812, -1187022, 16106, -1633161, -1777580, -4909148, -5839008, 7144678, 10176925, 3932580, -6592775, -287226, -1501091, -5971079, 7374459, --2056753, 3955665, -21979496, -62221192, -92652112, 19484656, 72727216, 3061775, 199157632, 183672128, -126109904, 217009664, 166875584, 22737556, 3547643, -22484154, -159137664, -162250448, -123415888, -212531088, --198250864, -56649008, -66169340, -66847408, 15864535, 40253508, -33210298, -11047730, 63720136, 40621800, --2214056, 47418048, 32847910, 2487860, 39664024, 93978176, 61793840, 21552146, 96267400, 71271760, -5556614, 82744152, 112146968, 26933204, 12138114, 114417392, 31335544, -44549012, 57605712, 88132728, --45041860, 20586852, 123179128, 11701102, 20353314, 148707344, 116867136, 9869835, 92727808, 122989608, --42707544, -25306484, 34996468, -100618736, -168106096, -113456392, -185379376, -275375040, -252932768, -282906816, --360331104, -380201248, -336338880, -355431616, -334764256, -251346320, -200756976, -104570104, -26079042, 59113784, -206190640, 239972704, 260528960, 404256832, 395223968, 265348448, 341647456, 266976784, 106180720, 117365888, -165971488, 81170048, 52882860, 124010200, 88442504, -566936, 42354820, 96364032, 23981486, 6656663, -71806488, 16535087, -74924096, 24137180, 58799712, -17300666, 52645024, 140332144, 55506548, 31452582, -123509840, 67342400, -24438364, 14312442, -32136020, -148364816, -181694304, -180536272, -227627360, -257132176, --212735632, -204527424, -233190960, -210472192, -174064816, -200471360, -183533616, -123744448, -98538896, -94358824, --38999912, 21944062, 26232050, 83369072, 141111680, 148402400, 146712320, 165781440, 153117728, 109302624, -92571040, 82350096, 56575992, 46007688, 56799332, 50285476, 33621004, 34934728, 38308960, 31956704, -31077310, 40149356, 34928820, 23197118, 17160542, 12417287, -5382668, -11112154, -11217381, -10800232, --5050882, -1528472, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +6460705, -673773, 1967632, -1189706, 8621073, -3393561, -827855, -316754, 1074279, -1533303, +3951907, -694174, -2653753, -484258, 5400385, 387621, -2724083, 2516851, 1869921, 3539053, +1460289, -2718178, -1783485, 6015639, 843961, -1557463, -1187559, -1242856, 1189706, 1269163, +-773094, -7691750, -1918240, 355409, 5303211, 1879048, -653909, -37581, -3054796, 4204773, +-4307852, -5748814, 744640, 39728, -1940252, -1336809, -1599875, 803696, 523449, 489089, +-2006287, 4989142, 153545, 6692096, -1080721, -3213709, 1470489, -374199, 958315, 1539746, +3389803, 2288681, -868657, -1860258, -1571421, 4334696, -4434017, 154082, 122407, -797253, +-3804267, 3333432, -1919850, 423591, 2907156, -2069637, -2751464, -2304787, 2947421, -292058, +-925029, -840203, 91805, -573915, -1204738, 1445257, 1495186, 1075889, 676994, 354335, +2044404, 310311, -51540, 410706, -210453, 52076, -484258, -276489, -256087, 1364189, +323733, -949188, 1178969, -2560874, 2239289, 1325534, -2985002, -1663226, -217970, 265751, +-140660, -456340, -1503239, 2703682, 540629, -1183800, -1572495, -93952, 5638219, -799401, +-2622078, 3586298, -1380832, -3401077, -323196, 2866891, 2172717, -1868848, 530428, -2332704, +1374390, 1307281, -1085016, 2863133, -761283, -5206037, 989453, 2677375, 2537789, 339302, +-358630, -3778498, -1242319, -510564, -1622424, 3383361, 4800163, 2207613, -6482717, 2188286, +7691213, 3154654, -345745, -66572, 3558381, -1761474, 1184874, -3246995, -2893197, 2950106, +3382287, 1600949, 927713, 576599, 703838, 1567126, 331786, -320512, -1124745, 787053, +-2246268, -446677, -950798, -4666482, -2294050, 956167, 1759326, 1409286, 3176128, 2463164, +2643016, 3744138, -2370285, -1532767, -667331, 1176284, 1406602, 2201171, -448824, -763967, +-393526, 1336272, -959925, 1207423, 332323, -531502, -388158, 385473, -203474, 727460, +331249, 99321, -287226, 392990, 397284, -184684, 624918, 129923, 172336, -513785, +128312, -160524, 34360, 767189, 110059, 312996, 310848, 4453344, -311922, 1835562, +-2867965, -4285841, -2674154, 2324651, -1945083, -1992328, -2109903, -2831994, 2725694, 378494, +2000381, -887985, 590021, -5818070, -3733937, -2660732, 3729105, 703301, 831076, 2029909, +-2056753, -1054951, -462783, 664109, -4403952, -860067, -2971044, -3249143, 187905, -2867965, +1921461, 1799054, 7681549, -1921461, 3906810, -2609730, 1614908, -1794760, 402116, 6706592, +1077500, 2899640, -3182034, 2036351, -2862596, -1371168, -443455, 4256313, -2106682, -1108638, +-3797825, -2028835, -4484483, -613643, 4236985, 1001801, 314069, 723165, 3884261, -3841848, +-6720550, 1545651, 2113661, -4398047, -324270, 578210, -1089311, 1760400, 5251672, 1088237, +-1336809, 110595, -1873143, 338766, 317291, -1509681, -453656, -485868, -2126546, -507880, +-1214939, 442382, -463320, -843424, 1736241, -336081, -1713692, 727460, -1221381, 48318, +-1321239, -1925219, 1116155, -352187, -140123, 608275, 816044, 245350, 1779727, -848793, +-149787, 297427, -641561, -274341, -202400, -887448, -465467, 1465658, 489626, 2088428, +256087, 937914, -828392, 2471754, -6861747, 1145683, -2402497, -5046050, -3655017, 2059437, +-1013075, -226023, 5006858, 1671816, -700617, 446677, 4257923, -1995012, 3143379, -1417339, +938987, -4496831, -796180, 3065533, -1028108, 3805878, 4256313, 1412507, 2681670, 5586679, +-1304060, -7839389, 1786170, -3481608, 245350, -9604084, 263067, 3099893, -1927367, 3602941, +510564, -3455838, 1248225, -7218767, -4626217, -1750199, -1775969, -5987722, 3043521, 3342022, +197032, 3111704, 239444, 855772, -1944547, 2823404, 2140504, -1106491, 6624987, -1229434, +5473399, 4704063, -268972, -745177, 14496, 1518808, 2236067, 731218, 2502892, 852014, +850404, 7348152, 2798171, -3182571, -1471563, -25233, -1765768, 1106491, -1277753, 7412577, +1234803, 3492882, -2655901, 3020436, -33286, -1437740, 635118, -2372970, -1559073, -390305, +-1718524, -1036698, -1040993, 927176, -1612760, -355945, -1136019, -564788, -553514, 2052994, +-866510, 1080721, -292058, -1707250, -288300, 1091459, 428960, 212064, 664646, -1022202, +893890, 609885, 523449, 1025423, -576599, 262530, -1691680, -96637, 1296543, 1188632, +281320, 244276, 161598, 976568, -13087302, 42950, -31675, 3358665, 5753646, 2018098, +-2888366, -4784057, -756988, 6223945, -1173600, -1185948, -4604205, -106837, -1911261, 4609037, +5485747, -9402757, 6143951, 3919695, -3557307, -762894, -4922570, 31139, -1479616, 117575, +3240016, 6254010, -2339684, 1445793, -1628866, -2139431, 2329483, 4315906, 2917357, -2711198, +-4443681, 3103114, 2161442, -1602560, -802085, 543850, -5729487, 2086280, 1743757, -2296734, +-3828427, 1483374, -2907156, 5102958, 2253784, -8960376, 4098473, -3837553, -9860171, -2861522, +-729071, 1979980, -4038343, -187905, 2186138, -4358855, -4284767, -4486094, -1363115, 1123134, +9376450, 1472637, 1791001, -2016487, -4885526, 6380711, -1925756, -7494181, 381178, -7563975, +582505, -734439, -2745021, -8286066, 2537789, 110595, -1809255, 2023467, 5038534, 2303713, +-941135, -860604, -11274, 2738579, 457414, 667867, 1556389, 2666101, -217433, -1256815, +-1584306, -1660542, 656593, -136365, -1287953, -1336809, 1229434, 1162326, 2351495, 482647, +-37044, -143345, 890669, -420370, -22012, -383863, 1494649, -181999, 807454, -231391, +8153459, 2177012, 1771137, 3555159, 5131949, -1147830, 12534862, -1838246, 8968429, -10593000, +3641596, 6165963, -2240899, 845572, -2981781, -300648, 4827543, 8799314, -2501282, -4395362, +-1296006, 4092030, 867047, 8947491, 4231617, -983548, 1279363, -81604, -4201552, 817654, +-945967, -1315334, 3906810, 5130876, -8133595, 9364639, -7152731, -3900904, 1583769, -2908767, +4713190, 105764, -2726231, 6610492, 9277129, -6936372, -1261110, -692564, 2864743, -6568616, +-10805601, -5051956, -3312494, 3158949, -7497939, -4339528, -884226, 7736847, 4864051, -5422933, +3850438, 2034741, -2956548, -4460324, -716723, -2752537, -3182571, 302795, -2121714, 5779416, +-4401805, -935229, 4897874, -3914326, 5294084, 6324340, 851477, -677531, 544924, -7860864, +-6972343, -1760400, 4356171, 166430, -3062312, 2865817, 6427419, -4316442, -2012729, 1730872, +-593242, -3074660, -28454, 802622, -2970507, 136365, -827318, 1302449, 380105, 2305861, +311385, 1804423, -1176284, -508417, 73551, 186831, -134218, 1612760, 688805, 1884954, +1811403, 154619, 532039, -302258, 1229971, 1874216, -947577, 4778151, 3884261, 5219459, +-5042292, -6671158, -3606699, 4531728, 204548, 18763638, -1434519, -466004, -4539244, -8487392, +-12473659, -2758980, 4096325, 6591701, -4136591, -7989713, 1012539, 63888, 7976828, -2685428, +-3304441, 9869835, -5409512, 635655, -7645042, 4872641, -1556389, 31139, -1723356, -11609297, +-7310571, 609349, 6407018, 4297115, 492311, -12029130, 7951058, -4865661, -4991289, -5194763, +-6906845, -1084479, 6502044, -5335960, -5901285, 4026532, -1951526, 2309082, 11996917, -5260261, +226023, 590021, 5074504, -3569118, -3295851, -1670742, 7610682, -1731946, -4068945, -718870, +5926518, 7737921, -7722351, -8750459, -3009162, -1302449, -2963528, 1851131, -6174016, -2177012, +-5829881, -11558831, -4600447, -2676302, 1499481, -10630581, -2983392, 158377, 7479149, 219580, +-6575595, -128849, -313533, -2005750, -3657165, 159988, 1508070, -695248, 1106491, 1054951, +-1484448, 2159832, -934692, -2157147, 2304787, 2873333, -1286880, -2757369, -127775, -542240, +440771, 2301029, 817654, 41876, 1580011, -875636, -1428614, -1108638, -1563368, 2246805, +-6123550, 5189931, 6342056, -4664335, -5645735, -4775467, 2587718, -483184, 9190693, 16004122, +-8981313, 590558, -369367, -1119913, 1496259, 4627828, -13139379, 11800960, -9257265, -4588636, +11888469, -2754685, -5675263, 3932043, 4398047, 259846, -656593, -9176198, 5732708, -1314260, +1996623, -6076305, 7575786, -701153, -12641162, -13512504, 4523138, -2485176, -6966974, 3416647, +-569620, 20914880, 3519726, -3834332, -6220187, -12345347, -4365835, 2387465, -2993055, 9626632, +-2029372, -14377403, -1380832, 9871982, -4306242, 1286343, 8548059, 5757404, -4833449, -913754, +6925098, 9227737, -4201015, 1796370, 1331440, -4464082, 2014877, -2061584, -604517, 1366873, +-2134599, -2611877, -8887898, -9747965, -8215199, 8199093, 4601521, 5337034, 2278480, 51003, +3293166, -7116761, -3908957, -9955734, 4955856, -1269700, -1353452, -2036351, -1461900, -5086852, +-2990371, 1024350, -2040646, 289910, 405338, 340376, 1975148, 236223, 2365990, -274341, +1751273, -2328946, 1349694, -3484292, 317828, -1665911, 2915209, 119722, -1803886, -562104, +940598, -1511829, -1655173, -4072703, -4039954, -2275796, 4167192, 252866, 1490891, 2578054, +-10722386, 4066797, -11574937, 448287, 4214437, -1872069, -8661875, -4076998, -1765768, 7756711, +6163278, -4619774, -4780299, 8271034, 3452617, -4792110, -5168457, -4034048, -545998, 7997766, +-1356136, 725313, -444529, -98784, 10276783, 5092221, 6889128, -483184, -492311, 3544422, +-5301601, -8944806, 7321309, 11761768, -7940858, 10111427, -2949569, -1024350, -4515621, 5210869, +340376, -5660767, 3469260, 9562208, 7504382, 3456375, -7157026, -2943663, -14513768, 2416993, +7601019, -4671851, -1138703, -5754183, 1536525, -3424700, 5674726, -3587908, 1915019, 6738267, +3875134, 12693239, 6673843, 4294968, 8153459, -6806450, 12221329, 3775276, 7446400, -2430415, +-8356396, -12946642, -2418067, -2167885, -3336653, -3034395, 4869419, -8897562, 13514115, -2303176, +-10842645, 6213207, 10115722, 4185446, 1349694, 2112050, 3831648, 1289564, -2176475, 2597382, +-1987496, -23085, 4286378, -3221, -98784, 4638565, 725313, 2548526, -321586, -2157684, +771484, 468688, -1779727, 1458141, 1965484, 518080, -1244467, 1130113, 460635, 3598646, +869194, -636729, 2347737, -3054259, 981400, 718333, -3263102, -4873178, -1281511, -1894618, +-1168768, -2404645, -1619203, -999117, -324807, 6007586, -12783433, 9402757, 3255585, -1932198, +13877576, 10739029, -17622788, -11799886, 11119670, 19087908, -1762547, 2820720, -1624571, -2404108, +-1906966, -787053, 4831838, 2878702, 11536282, 2845953, 11039677, 3124052, 4804995, -1493575, +-6236830, 2683818, 865973, -5085242, 8451959, 875636, 3391414, 1980517, -1745367, -7830799, +1023813, -8884677, -2997350, -10283225, -6880001, -4155381, 8650601, 1241782, 4263829, 10592463, +-4574677, -878321, 1247688, 3808562, 1149978, 265751, -2968359, 7843147, 17274358, 8315057, +-13746043, -9796284, -10172630, 11933567, -1807108, -11045045, 6454262, -6189048, -674847, -1804423, +-767189, -848256, 378494, 10462003, 17291002, 6540699, 14892262, 9552544, 4830228, 1941325, +3752191, -4792110, 15850577, 5131949, -8315594, -11133092, 4917738, 3664144, -3051038, 7943542, +14988362, 3459059, -5788542, 9339406, -876173, -6867653, 1424319, 5237176, 850404, -909459, +593779, 2876018, 5052492, 2243584, 2237141, 574452, 3295314, -1398012, -651224, -1945620, +-562641, 6914361, -3677029, 2559264, -1089848, 1649268, 162135, -1843615, 1023813, 2451353, +3003256, -1429687, 1225676, -2791192, -85362, 1389422, -5006858, 2123325, -7150047, 1994476, +17193828, 3285650, 6038187, -5516349, 4406100, -8470212, -14982993, 347355, 7969849, 2392297, +6393596, 9030706, 9903658, 591632, -10875931, -9211631, -14397804, -22244172, -419833, -2677912, +9803800, 7313793, -8383776, -4652524, 5735929, 11638825, -14595909, -9394704, -2833068, -7975755, +-5469104, -2979634, 4472672, 9038222, 373662, -5487358, -6776922, 9133248, -7327214, -3069828, +-251792, 12855374, -936840, 1056025, -20212116, -1522566, 4891968, 10369125, 13438953, 2905009, +-13032541, 6135361, 224412, 6106370, 8447127, 1429687, 4226248, 9749039, 16994112, -11324218, +-4514011, -995896, 5178120, 18124226, 7590281, 6055367, 10124312, -3487514, -6029061, -10878615, +-13746580, -8132521, -572304, 8796630, 20136418, -12583180, -9290551, -1290101, 19745038, -11075647, +-6473053, -9892383, -1860795, -8865886, 2797634, 1694902, 4669703, 10513006, 1901060, 6735583, +-4407174, -4329864, -5638755, 456877, -2865280, -6553047, -5919002, -2866354, -1586454, -1357210, +6643241, -5000416, -1549410, -1879585, 4741107, 1208496, 3445638, -2251100, -2318209, 4786204, +1553704, 1270237, -4028143, 6166500, -3144453, -157840, -2205466, 1966558, -2285996, 649614, +4022774, 4904853, 8951786, 5057861, 12610561, -14915348, -10645076, -1661079, 21887154, 8849780, +555661, 11842835, -7371775, 17770428, -4169876, -15599321, -3020973, -15501611, 12607876, 7532836, +4950487, 4909148, 297963, -4970888, 6109054, 9084393, 4582193, -3164317, 8145943, 10880763, +9752260, -1212791, -8446590, 14743549, 3481608, -899796, -2461553, 1774358, -9605694, 9568650, +-1796907, -2649458, -12246026, -6669548, -7553774, 17200270, 6147172, 187905, 2286533, 8893267, +12786655, 6521371, -16492138, 15035607, -1752347, 8700530, 3727495, 13214004, -3007014, -17277042, +5446019, -780073, 7178501, -3059091, -7042673, 6441914, -2727841, 4376035, 21794812, -2629594, +-9989020, 68183, 2896419, -10545755, 17575544, -7783018, -10541997, 15498389, -8970039, 7916699, +1088774, -11188927, -7925826, -11190537, 3585761, 9429064, -5546951, 5479305, 10471130, -5750961, +7407745, -2354179, 12385612, -4330938, 3744675, 4065187, -3315178, 96100, 556198, -5537287, +-643708, 5159867, -7757785, -1453846, 5852967, 3017215, 271657, -4729296, 2495913, -1217623, +2046015, -4944044, -4758287, -2645163, 1146756, 1329292, -5743445, -3570192, 5600638, 816044, +2518998, -5856725, 2857227, 631897, -2567317, 1300838, 981400, 2053531, -3032784, 362925, +-1404454, -199716, -6242735, 4671314, -14404783, -3122441, 7761006, 1553168, -14087493, 3477313, +-4937602, 10128607, 2518462, 5071283, -23530516, 6954626, 447213, 8893804, 15185931, 558346, +-1910724, 1018444, -7648263, 15155866, -14636712, 4517232, 9269076, 6081137, 8535711, -4147328, +-7053947, -8448738, -15149423, 5749888, 2309619, 8568460, 16090558, -6332930, 13797046, 7252589, +-13311177, -7839926, -208306, 1186485, 707059, -389231, 6823630, 11574937, 10957535, 4362076, +-27811524, 6603512, 8254391, 7953743, -18331458, 10808285, -9416179, 9339406, 1138166, 4798552, +-2506114, 6929930, -2238215, 23349590, 11335492, -10873247, 1306207, -30019138, 4971425, -9066139, +-9019968, 8039105, 5978595, -15246597, -29599840, 18388902, 11502996, -28090696, 10851235, -6604049, +10628433, -2655901, 2558190, 4018479, 303869, -19042812, -6976101, -3048890, 5952288, -518617, +-4710506, 7523172, -9981504, -4293894, 10421738, -1251983, -875100, 3260954, 2198487, 3724811, +1899986, -5937256, 2349347, -8704825, 5224291, -4019016, 3007014, 1842004, -2165737, -1644436, +-1447404, -3344169, 1589138, -5171141, -701690, -4442607, -2937221, -7081864, 3510599, -2389613, +-1701881, -4247723, 1855426, 2935610, 2297271, 1402844, 746787, 576599, 2627446, -581431, +2847027, 1879585, 6504728, -3843996, -3449396, -6016176, 10919954, -8339753, 92342, 1622424, +28033788, -3811247, 20246476, 4985920, 15248745, 969052, 4363687, 4951561, 27030376, 27078158, +-13978508, -12780212, 15475304, -19614042, 24159, 5306432, -19547470, 11137924, 1584306, -1560147, +-3543348, -5959804, 2371359, 2110440, 3680787, -12015171, 113280, -2930778, -15786689, 8064875, +11023034, -17653390, -13128104, -6453725, 9536438, 9248675, 8868034, -951335, -3564286, 8304320, +28147606, 15166066, -5521718, -3663607, -3817689, 18992346, -15170361, 7017440, 4042101, -23685134, +-9800578, -1064615, 3240553, -20074678, 13843753, 9006010, 4045322, 3823595, 9605157, -19010598, +-2289218, -15768972, 714038, 9791452, 16480326, 10140955, -10407243, -5537824, -817118, 555125, +-11959336, 26775900, -2119566, 3567507, -6306623, 9188009, -2032593, 5375689, -2421288, 3344169, +2522220, 5831492, -679142, 105764, -2182917, 1389422, -415001, -1499481, 7894687, -2348273, +-5829345, -327491, -657130, 4049081, -5943161, 1365263, -4931160, -7715909, 4760971, -1422708, +-5289252, 442382, -115427, 930934, -4660040, 6186901, 1586454, 7594576, -9385040, -631360, +4375498, -2345052, -7627325, -120259, 8175470, 3722126, -2525441, 12914430, 20024748, -1394791, +1302449, -12402792, 1042066, -546535, -8865886, -14810658, -2843268, -6857989, -11098732, -8113730, +12550431, -10638634, 9101573, -3206730, -2540473, 17577154, -12169790, -6789807, 2684892, 7090454, +1030792, -23255100, -14295799, 2660195, -3752728, 3772592, -3260954, -7299297, 14817637, 3175592, +-1289027, -6089190, -33454038, 20084340, -6062347, -364535, -2860448, 1278827, 9573482, -5570036, +-9139154, -15608985, -1487132, 6892349, -9651865, -12367895, 5083631, 19638202, -3350611, 18263812, +13430363, -13368086, 24570972, 16254841, -16232292, -25052544, -7223062, -10917807, 1324461, -7937637, +-1964948, 12001212, -20966420, 10262824, -3422552, -11769821, -13164075, -13129715, -15930034, 3317325, +9533754, -8547522, 13630616, -1773822, -7983271, -16409459, 250719, -1837709, 6328635, 19588272, +-7099044, -14838038, -5196374, 434865, 5019743, 13406740, 3509525, -1657321, -11001022, -79994, +395137, 4989679, 2058900, 31139, 3688840, 5495948, -4131759, 6860674, -3966939, 3144990, +7944616, 7181186, 421981, -11214160, -4626217, 1716376, 2753074, -7793218, 12649216, -7668664, +5773510, 6856379, -5212480, 693637, 1376537, -2954938, -10751914, 2296197, 4805532, 869194, +9005473, 6309844, -6150393, -21228950, 38631084, 54366768, -5245229, 6623914, 3491272, 13167833, +26363584, -25164214, 303332, 4359392, 500901, -9075803, 1362042, -11212549, 13235479, 32386200, +-6834904, 695248, 1851668, 9810242, 904091, 3802120, 12460237, -24955370, -1854889, 24482388, +25161530, -29403346, -6233608, 4227322, 4145717, 8748848, 22148072, 6226629, 44668196, 7430831, +13790066, 6576132, -7008313, -9270687, -525597, -31345746, -45076220, -15269682, -14622753, -46976204, +7362648, -1124745, -26223996, -12809740, -43936980, -4815195, -6040335, 29944512, -29339996, 18299782, +-20045150, -1644436, -13179107, -10420664, 11793980, 26907434, -20734492, -7795366, -1870458, -6152541, +-2190433, 11343009, 21594558, 23032298, -16434155, 46338940, 31102006, 4038343, -17568026, -38151120, +-8641474, -14208289, -10399726, 2505040, 12259447, -8017094, 4580583, 14377403, 2347737, -4578972, +14632954, 9723806, 5026723, 6402723, 15362561, 15469935, 134755, 1254131, 6222871, 5791764, +-2512019, -4625680, -2635499, 2819646, -363998, -1963337, 985695, -3093450, 2158221, 10084046, +-415538, 3550864, 12345883, -3234110, -4396973, -4728222, -500901, -6855305, -1354525, 5833640, +-3180423, -1880659, 1207423, 31139, 1078574, -981937, 4878546, -3294240, -3367791, 7974144, +5679558, -6235219, -290447, -3340948, -19413790, 35566088, 59204512, -13906030, -3015067, 10546829, +26513370, 8959839, -15373835, 9681930, -13127031, 3459059, 8405788, -3124052, -17709224, 5393942, +18905910, -4646081, -26976690, 21203716, -6160057, 17322676, -6340983, -4198331, -6614787, -10856067, +-384400, 19240380, 10764799, 3248069, 15560667, -7283728, -6081137, 5989332, -8214125, 10813117, +6325413, 16499117, 28195924, 24734716, -17672716, -32952600, -11989938, -1982664, 25937844, -9806484, +4680441, 10525354, -10168872, -15130096, -24276766, -24919938, 19801410, 21124260, -16698296, -60122564, +5075041, -4133906, -8157754, 4786741, -5904507, -24052890, -11177116, -5555004, -16683264, -7070590, +25745108, 9825811, 14890115, -5675800, -8269960, -5322002, 14370961, 2518462, 2792803, 12380780, +35682052, -2974802, -5094905, -17827872, -16853452, -24665998, -2534568, 14166413, 9713605, -9986336, +7560753, -4539244, -5747740, -10205379, -9264781, 8705362, -7136088, 8498130, 4081293, 4862440, +-5145371, -7590281, 8880382, 5545877, -2018635, 6736656, -8942659, 3979824, -1063541, 5578089, +-2832531, -5057324, -2760590, -2432025, 6320581, 3190624, -88584, -6248641, -1311576, 12971338, +-8974871, -79457, -8704825, 11154567, -5708012, -2312303, -8012799, 1340567, -3295314, 1341104, +9553618, 9546639, 2186138, 310311, -3328063, -12590697, -1873143, -10380936, 5513665, -14761266, +-24550034, -5179194, -4205310, 4697084, -8458938, 18991272, -11318849, -38155952, -20898238, 13452374, +-18187040, 21486648, 18901078, -8221105, -3013993, 2951180, -11809549, 251792, 6112812, -1472637, +3273302, 27168352, 22362820, -5796595, -35850092, -26900990, 1899449, 19132468, -14479408, -5970542, +-16994648, -21423296, 1873143, -5901822, -25467008, -27406724, -40615360, 16485695, 5462662, 1089848, +23236846, 31534724, -1352915, -23228256, -17906256, -18752364, -10831908, -6519224, 7005629, 12321187, +-10949482, -17062294, -21169356, 11339251, 9694815, -20507396, -19832548, -7745974, -3561065, -11906186, +7343857, 50964620, 30379378, 59490128, 19714436, -31396748, 36840620, -1484448, -19051938, 1956895, +-17944374, -38801272, -16226923, 9035537, 18436684, -4283693, 16974248, 9968619, 37655588, 41310608, +33793876, 11332808, -9657234, -5903433, -5720897, 7250979, 9458055, -14268418, -5431523, 2417530, +30681098, -4250407, 2529199, -3318936, 11013370, 11246372, 13039521, -644782, 124554, 236223, +2729452, -1194538, 1728188, -11222750, -3732327, -3841848, -10661183, -10877005, -5165235, 3946538, +12893492, -8429410, 1830193, 4565014, 14669998, 20038706, 13587666, 12805445, 14137959, 3141769, +-5494337, -11041287, -16031502, -19791210, -15716359, -9215926, -18910204, -19098646, -7524783, -3382824, +35376036, -20088636, 2306934, 10405095, -4464082, -26219702, 26520886, 25340308, -14579803, -20045150, +2738042, 35087736, -18402324, 10011569, 22471268, 6896107, -8469139, -16741783, -11023034, 7803419, +-2678449, 5954436, -9838696, 6573985, -21779780, 31876710, -3094524, 7184407, -1519882, -40111236, +12492449, -11077794, 20683488, 12504797, 22100292, -8599598, -38729868, 27837294, 12495670, -13121662, +-24119462, 19969450, 10659572, 21234318, 21376590, -18622442, 8567386, 22407918, -32811402, 30090540, +14768245, -911607, 9535901, -16962974, 37616936, -4202089, 24748138, 11162083, 43683040, -3024731, +-7686381, 6194954, 17756468, 11842299, 12351789, 44189308, 2568391, 10831371, 25777856, -17022030, +17681306, 2133525, -29388314, 10970420, -9921374, 33247878, -24487220, -29356638, -30617748, 26167626, +42871828, -13657459, 10892037, -50549080, 4794794, 2473901, -1961726, -23653996, 3930969, 10062035, +-7853348, -6476811, -6391448, 16061567, 7480760, -10071698, -10937134, -6256157, -2609193, -3130494, +4561792, -17402670, -10492068, 9307194, 3789235, 3338263, 521302, 8025684, -1401770, -883690, +-10286984, 13781476, 17095044, -7283191, -26714160, -17977122, -240518, 77846, 5068599, 1398549, +-8458401, -13060459, -7248831, 4996658, 7651484, 21429740, 7175817, 1174137, 301721, -15879031, +-3330210, 16620987, 9726490, -64912524, 3564823, -7966628, 2028835, 50225884, 41371808, 59481540, +31433256, -15845745, -12112345, -24675124, -32855962, 11545946, 2891050, 8606578, 10457172, -9598715, +14966887, 25347824, 4671314, -6818261, -8591008, -17995912, -11945378, -10886668, 4963372, 8056285, +-25805774, -15292231, -3558381, 17288854, -7815767, 11125576, 13854491, -36697812, -36132488, 6827388, +10472204, 8019241, -27275726, -12568148, -24499568, -11886322, -11218455, 23596014, -31053150, -43262132, +-16256988, 8545374, 7347616, -33376728, -26781806, -21077016, -15946140, 17986786, 25393458, 1111323, +-8634495, -10588168, -5896990, -5663452, -11484743, -37050536, 12168179, 27769648, 25262460, 7827041, +34507376, 46639048, -4078072, -6047314, 35730368, -8701067, -21767432, -49213344, -16762184, 6650757, +-26998702, -18113488, 12623446, -4469451, 17508972, 30611306, -18685792, -29019484, -9611600, -12483859, +-7213398, -7917772, -7820062, 3205119, 4423280, 3525631, 6214818, -10465225, 9054865, -14434848, +-1752347, 8875550, 11951283, -12907450, -17948668, 10196789, -4113505, 596464, -12539157, 14717779, +-8693014, -3185792, -3481071, 13613973, -11619497, 14773614, -6627672, -7006166, 9784472, 2513630, +7784628, -6276558, 653372, 2829310, 15963857, -1957968, 3758097, 42610908, 14971719, 3436511, +15572478, -17681306, 1165010, -9041443, -13186623, 7865159, 3127273, -11043435, -18305688, -10556493, +-16990890, -13861470, 5599564, -10703059, -5180805, 7970923, -5254893, 1782411, -5849746, 21161304, +-16540993, 17342004, 6344741, 1924145, -15996606, -6944425, 12832289, 5149129, -251256, 10182831, +-1772211, -4281546, -6524056, -5582921, -4357781, 1868848, -40265, 2098629, -18743238, 9822590, +-7811472, -7420093, 6597607, 4437238, 2503966, -3608310, 13231720, 11281805, -16396575, 14650133, +-2011655, 9913858, 19902878, -4242891, 10794863, 10157598, -9825811, -7117835, -13111998, 1094143, +2313377, -21188148, 8758512, 3113851, 16479790, -6562710, -37381784, 23375896, 1472100, 585726, +532039, -16621523, -5171678, -4453881, -5539434, -24184960, 13765907, 6795175, 14842870, -10837276, +6559489, -12146168, -10937134, 394063, 9438191, 7470022, 293132, -1497333, -3333968, 716186, +-5479842, -1257352, 16005196, -6608344, 3216394, 1608465, 4576825, -9922448, 10668699, -522375, +-1979980, 2359011, -1015223, 2298881, 3601330, -9046812, -1187022, 16106, -1633161, -1777580, +4909148, -5839008, 7144678, 10176925, 3932580, -6592775, -287226, -1501091, -5971079, 7374459, +-2056753, 3955665, -21979496, -62221192, -92652112, 19484656, 72727216, 3061775, 199157632, 183672128, +126109904, 217009664, 166875584, 22737556, 3547643, -22484154, -159137664, -162250448, -123415888, -212531088, +-198250864, -56649008, -66169340, -66847408, 15864535, 40253508, -33210298, -11047730, 63720136, 40621800, +-2214056, 47418048, 32847910, 2487860, 39664024, 93978176, 61793840, 21552146, 96267400, 71271760, +5556614, 82744152, 112146968, 26933204, 12138114, 114417392, 31335544, -44549012, 57605712, 88132728, +-45041860, 20586852, 123179128, 11701102, 20353314, 148707344, 116867136, 9869835, 92727808, 122989608, +-42707544, -25306484, 34996468, -100618736, -168106096, -113456392, -185379376, -275375040, -252932768, -282906816, +-360331104, -380201248, -336338880, -355431616, -334764256, -251346320, -200756976, -104570104, -26079042, 59113784, +206190640, 239972704, 260528960, 404256832, 395223968, 265348448, 341647456, 266976784, 106180720, 117365888, +165971488, 81170048, 52882860, 124010200, 88442504, -566936, 42354820, 96364032, 23981486, 6656663, +71806488, 16535087, -74924096, 24137180, 58799712, -17300666, 52645024, 140332144, 55506548, 31452582, +123509840, 67342400, -24438364, 14312442, -32136020, -148364816, -181694304, -180536272, -227627360, -257132176, +-212735632, -204527424, -233190960, -210472192, -174064816, -200471360, -183533616, -123744448, -98538896, -94358824, +-38999912, 21944062, 26232050, 83369072, 141111680, 148402400, 146712320, 165781440, 153117728, 109302624, +92571040, 82350096, 56575992, 46007688, 56799332, 50285476, 33621004, 34934728, 38308960, 31956704, +31077310, 40149356, 34928820, 23197118, 17160542, 12417287, -5382668, -11112154, -11217381, -10800232, +-5050882, -1528472, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 3755412, -5177583, -3042448, 206695, 171262, -3719979, 4968204, -1986959, -1937567, 1413044, -5119601, --2303176, 5493263, 1240709, -2234994, 3896072, 1211181, 828929, -801011, 1896765, -30065, --6574521, -310848, -2443837, -292058, -149250, -6285685, 91268, -4039954, 213675, 637803, -2801929, 3360275, 1102196, 836445, 610959, 2903398, -1593970, 994285, 179852, 457951, -600759, -868657, 2587181, 3878892, -7452305, 3462818, -1952063, -4476967, -2869038, 5717139, -2861522, -1927367, 3241627, 947040, -2051921, 2016487, 40265, 0, 296890, 393526, --779000, 46708, 420370, -326954, 2454037, -1524177, -3442416, -3330210, -22012, 1124208, --212601, 163209, 1877438, -737124, 3296924, -3481071, -1040456, 2685965, 2895345, -1988033, -3264175, 1151588, -845035, -2199560, -1021129, -937377, -877247, -868657, -433792, -121333, --478889, -915365, 281320, 662499, -1309965, -339302, -420370, 684510, -1138703, -256624, -164283, 2767570, 198642, -2206003, 1379221, -1188095, -1768990, 435402, -3721589, -444529, --2790655, 977105, 1734093, 1672890, 1323924, -2901787, -211527, -2404645, 2567317, -4961224, --2822867, 2502892, -5444945, -615254, -367220, 1385664, 1184874, 2670933, 5633924, 2601140, --712965, -21475, -2029372, -1576253, -9976672, -9179419, -624918, 6787659, -1698123, 5420786, -463320, 1546725, -1698660, -7719667, 3978214, 1216550, -2333241, 1895691, -4101694, -837519, -2304787, 1015760, 7221988, -4969277, 4377109, -2280628, -5710159, -2652142, -1566053, -1570884, -2005750, 1696512, -4605816, -2055142, -2627983, -983011, 4424353, 4728222, 5081483, -3738769, -627065, -2347200, -316754, -1975148, -2520609, -3056406, -3432753, 1884954, 531502, -533113, --1250909, 447213, 1921998, -1968169, -1728724, -885300, 2202781, -770947, -424128, -967978, --1120450, -282394, 480499, -32212, -187905, 364535, 482647, -147103, -214748, 1409286, --1116155, -708670, 541166, -687732, 1090385, -689342, -758599, -155156, -139050, 681289, --359167, -347892, 408559, 85899, -1111323, 357019, 259309, 3708704, -3513820, -4534949, --3939022, 117575, -1560147, -1253594, -3118146, 678068, -3482682, -248571, -1437203, 5337571, --3439195, -3758633, -8400956, -10890963, -2643552, -4852776, -4474282, -1062468, 2248416, -2761664, --6545530, 4059281, -9490267, 2855080, -1600949, -1698123, 6123013, 4330401, 2259690, 855772, --1065152, -968515, -2314987, 1000727, 4152160, -3339874, 3936875, 3655554, 1050656, 551903, -1633161, 2804614, -6175626, -2660732, 5869610, -4543002, 374736, -75699, 3586835, -433255, --1379221, 699006, 6090264, 3397319, 2114198, 1988570, 3390340, -5364414, 4151623, -4373888, -3843996, 2561411, -1151051, -747861, -1841467, -2388002, -3930432, -173409, -1232656, -3099356, --3468723, -1920924, -2020782, -323196, -240518, -921807, 4624069, -1884417, -874563, -3119757, -3203509, 46171, -716723, 711354, -1356136, -2239826, 44023, 1309965, -158914, -191126, --1479079, 454730, -492311, -1295470, 81068, 326418, 724776, -136365, 474057, 434865, -1082332, 408559, -1191853, 82678, 608812, -140660, -1045825, -620086, 1521492, 821949, --827855, -328028, -331249, 2185602, -5772973, -137976, -2709051, -5302137, -2465848, -986769, --3696893, -1248762, -3410741, -1330903, 2685965, 3613678, -5990406, -3408057, 1962263, -1193464, --6544994, 4353486, 7795903, 1634235, -1836635, -3644817, 862215, 3765076, 7052337, -3586298, --1494112, -4521527, -3625489, 3897683, 3912715, -5487895, 3223373, -1754494, -3500935, 5544803, --14496, 3023657, -7596187, 522375, -4871030, 1101122, -6051609, -3801046, -988916, -1414118, -12621835, 4005057, 3272765, 2462090, -9397388, 5253282, 3656091, -2077154, -236223, 4095788, --581968, 4327717, 5011690, 4982699, -2891050, 363462, -1613834, 2651069, -2369211, -2507724, -1650341, -2355790, 1112933, 1557999, 86436, 2933463, 1164473, -5575405, -673773, -712965, -1751810, -6319508, -2030446, -1606318, 4454418, -1359894, -740345, -3417720, -903017, 219043, --321049, -1594507, 46171, -1036698, 1152125, 403190, 10201, 180926, 425202, -821949, --2349884, 1240709, 526134, -1357210, 652835, -744640, 281320, 285078, 843424, -194347, --281857, -595927, 540092, -978179, 918586, -1112397, -56371, -97174, 733366, -740882, --284005, -1073742, -615791, -991601, -7810398, -4358855, 3197603, -3422552, 9165997, 4029753, -8973797, -139586, -4384088, -4676683, -6294812, 9576166, -2345052, 4373351, 4894652, 1009317, -3446711, 3122441, 3048890, 1209570, -6323803, -365072, -2442763, -951872, 4339528, -397821, --386010, 3018288, 1911261, 3126199, -2747169, -9982578, -5950677, -3784940, 7348689, -6644315, --2007360, 4494147, -505196, 831076, -5566815, 9654550, 528818, -3769371, 7631083, -4693863, -11820287, 6100464, -2665564, 1361505, -3365107, -2308545, -10885595, 3852049, -4957466, -777389, --423054, -2389613, 4669167, -1826435, -4750234, -4638565, 1082332, -4238596, -4658429, 2657511, -417149, 3355443, -1816234, -9943386, 3438658, 4315906, 5561446, -5351530, -6011881, 780610, -9859097, 1583232, -5085778, -2336462, -855235, 2699924, 501974, 2875481, -2888903, -1100585, --559420, -3565360, -2908230, 4379256, -717796, 1717987, -367757, -1247151, -2774012, -267362, -124554, 1089848, -504659, 1013612, -705448, -2266132, -891743, -311922, -33286, -408022, -1726040, 99321, 1867774, -620086, -109522, -284005, -1987496, -2684, 1066763, 1044751, -7885023, -7255274, 3623342, 9255118, -6672769, 1830730, -3749507, -7276749, 10769094, 4022774, -10008884, 9215389, 1359894, -7356742, -4494147, 3813931, -468688, 1588601, -7945153, 829466, --14125611, -5944772, -11016054, 6795712, -6253473, -230854, 2042794, -1828046, -2842195, 3340411, -3368865, 9771587, -1347546, -2175401, -7472170, -6401112, 6260989, 1337882, 2170032, 11687680, --3520800, 75699, 6241661, -2799782, 2895882, 2137820, 6247030, 5598490, -3862786, -614717, --7919383, 8252243, -5401995, -7171522, -6871411, 4355634, -2535641, -3783329, 8151848, -2539400, -8449274, -5194226, -3924526, -1084479, 5542119, 7152195, -520228, -7737921, 2816962, -4948876, -10087804, 2079301, 5936719, -8104604, -3551401, 2161979, -2051921, 4872104, 745714, -2764348, -2945274, 6459631, 9148280, 7031399, 132607, -1657857, -83215, 1514513, 168577, -1589138, -1097901, -1339493, -195421, 2594697, 164819, -1286880, 2813204, -899796, -1457068, 721018, -1001801, -58519, -1725503, 637266, -1180579, 243739, -2357400, -2947958, 759672, 1104344, --61203, 2276870, -802622, 1027571, 4663798, -12346420, 4294968, 3688840, 2447595, -9330280, -7118909, 11783243, -11493869, 4388920, -7074885, 4643397, 606127, 4173635, -3420405, -241055, -2692945, -7796440, -3893388, -3351148, 6166500, 6513855, -2151242, 3068754, -1607392, 4817880, -6110128, 2405182, 1833414, -6197638, -2349884, -7743826, -8613557, -5996848, 559420, -2863133, --419833, -3578782, -8577587, -2887292, 1724966, 789200, -539555, 12967580, -10505490, 3878892, --5243082, -1500017, -3275450, -3289408, 5485210, -3274913, 399432, -3969624, -2677912, -4824859, -6587943, -6068789, 5400385, -1403381, 5394479, -483184, 797790, -552977, 5213017, 3034395, --175020, 11246372, 423591, -5623186, 2936684, -5057324, -6243809, -7489886, 7267085, 2586107, -6470905, 6629282, 7740068, 4570382, -959388, -1385664, -1427540, 7476465, -1122597, 8381629, -1760937, -352724, -1304060, 2878165, 4240207, 1120450, 1727114, 592706, -593779, 838592, --1433982, 2256469, 75699, 1935957, -600759, 1837172, -224412, -2922725, 1423245, 2017561, --30602, 1641751, -545461, 95563, -1721745, 1417876, -434329, 695248, 3076807, 3102040, --12988518, -1032403, 1680943, -3008088, -10230612, 11696807, -762357, 426276, 9935870, -2787434, --10240276, 3601867, 6699612, 12686797, -822486, 5355824, 1091459, -11184095, -3290482, -5820218, -5682779, 3230889, 2965675, -4194036, -770947, -483721, 1015760, -3791383, 5291937, 1457068, --4504347, 6544457, 917512, -7353521, -6171331, 1700807, 7928510, 7108708, -9953587, 19442780, --972810, 352187, 5345624, -788127, -2562485, -188979, 12498892, -6273337, 6178311, -1523103, -8650601, 2595771, 7752953, -2962991, -6109591, 4294431, 6628745, -3304441, -7425462, -8077760, --7110319, -3226057, -1439888, 7387881, 178778, 6420439, -776315, -2130841, 6377490, -5577552, --10764262, -2869575, -6874095, -6476274, -11969000, 8921184, 7785165, 3196530, -18559628, 4358855, -3907883, -1392106, -545461, -6476811, 8866960, 4538707, 3510599, 2166811, 8143258, -710280, --583579, 600222, -83752, 1891396, 923418, 36507, 2495913, -1504312, -337692, -1921461, -557272, 645319, 2749853, -1924682, -302258, -756988, 2118493, -982474, 787590, 1253057, -1695438, -1472100, 4068945, -11274, -125091, -1499481, 1588064, -2550674, 898185, 104153, --3725884, -874563, -618475, -7399692, -499827, 576599, 5389647, -7787313, 395137, -1194001, --3250753, -16176457, -1960116, 7652558, 5905580, 7841537, 906238, -8687108, 22981834, 9681930, -15629923, 1647657, -6844568, -2714956, -2221035, -9736691, -615791, -3809099, 4897337, 47782, -505732, -3103651, -4172561, -8227010, 2779918, 838056, 405874, 4283156, -352187, 1834488, --823023, -7141457, -5566278, 4366908, 26307, 10471667, -13195750, 10593537, 6480032, -4625680, --9540196, -14868640, 3153043, 11797738, -6018860, 11421929, -891743, -470836, 2619393, -3304441, --13225815, 1627256, 6257231, 2829847, -5742372, -1462436, -3600793, 2968359, 6419366, -292058, -1642825, -825707, 6181532, -2720325, -2103997, 4261145, -3649112, 9767829, -2592013, -4875862, -3620121, -8751533, -4483946, 124554, 3489124, -3763465, 1643362, -1335735, 1945620, 118648, -2310693, 2054068, -779000, 1250372, -4165582, 2318209, -564251, -5575942, -1954210, -1537598, --3388192, 59056, 985695, -2574296, -1883343, -61740, -3569655, 320512, 915902, -714038, --3778498, 402653, -56371, -2790118, 1176821, 2180770, -2323577, -80531, 679679, 299037, -1101122, 3410204, 2776160, -2789045, -2298344, 2561411, -17788144, 12727599, 11475079, 13552232, --4380867, -12084964, 4214974, 4859756, -18100602, -16432008, 15892990, 1742146, -7815230, 6028524, --11324755, -12836584, 1792612, 33440616, 15489800, 6207839, -9124121, 150861, -3280281, 264141, --3854196, -1858647, -4276177, 1204738, 9479530, 1888712, 11696807, -4649302, -3930969, 2149631, -8161512, -1567663, -1224066, -17485348, -784905, -9847823, -566936, 13558138, 9631464, -3584687, -9413495, 18814104, -8999030, 5434208, 15545634, -11446088, 16433619, -1373316, 6738267, -3906273, -658204, -2226941, 2251100, 3818226, 16303159, -6262599, -2095944, 4248260, -7648263, 4803921, -2491081, -4383551, -7451769, 16094316, -1097364, -8838506, -2952790, 9980430, -4227322, 6774774, --72478, 487479, -10644003, -11559904, -5586142, -9860171, -8936216, -9660455, -610959, -2302103, -4680978, -606664, 831613, -881005, 5898064, 3765613, 410706, -7322919, 258235, -1370632, --5458904, -1556389, -2814814, 2862596, 1082869, -3722663, -1253057, -2854543, -2245194, -262530, -2040110, 1997697, 2087354, 3585224, -2206003, 455803, 2248416, -1558536, -2148021, 2633889, --3708168, -1458678, -1139240, 1661079, 710817, 2667712, 466004, 273804, -1047435, -2679523, -21697638, 3886946, 3074660, -11292006, -6532109, 562641, 2510409, 4384625, 5044439, -21524766, -984084, 1351841, 15555835, 2479807, 3968013, -1484985, 14153528, -23113904, 725313, 11829414, --13748727, 3436511, 2714956, 11139535, 2208150, 1180579, -3766686, 352724, -11800423, 3997541, --2932926, 2088428, 3233574, -2029909, -8944806, 3275986, -7056095, -12317429, 6971806, -6966974, -4594005, -11581379, -7276212, -1230508, -3568044, 2758443, -4896263, 12683575, -122943, 12093554, --12749074, -10802916, -3439195, 171799, -187368, -3760781, 10915659, 8887361, 22739168, -3651796, -14555644, -8517457, -1429687, 4373888, -17209934, 19669340, -497142, 12244952, -453656, -17180942, --10322954, 7226820, -22958210, 11967389, 3336116, 17470316, 22057342, 2862596, -16296180, -12355010, --5059472, 12543452, -1500017, -3040300, 724776, -4600447, 698469, -3367254, -4918812, -1711545, --7931731, -391379, 386010, -3693672, -3294777, -4507568, -3187403, -1546188, 2025077, 3831111, -1447941, -635655, 3521873, -2400887, -1314797, 816581, 1872606, 2237141, -2215666, 2830920, --2893734, -1366337, -4233764, -7431367, 4617627, 797790, -4206384, -4254165, -799938, -5898601, -820876, 62814, 4397510, 11016054, 17063368, 5839545, -7018514, 16094853, -17290464, -1884954, --5290326, 2063195, 13864691, -12594455, 31208842, 4052302, 7753490, -9268003, -12547210, 4265440, -135291, 26402774, -3770981, -9257802, -15111306, -10289131, 7409893, 4652524, 4345970, -1994476, --14874009, -23065048, 1752884, -13937169, 18462990, 2323577, 15000173, -9330816, 6291054, -6062347, -7789460, 21539260, -3556233, -2365990, -3231426, 5567352, 7223062, 3621194, 1619740, 2157684, -9419937, 8364449, -4824322, -7493108, -6640020, -7503308, 24757802, 9691057, -14461692, 11109470, --3259880, -11931419, -8475581, 4298726, 9088151, -16977468, -22028888, 2398739, -9814537, 28923384, -15101642, -5042292, -3253975, 6076842, 13117367, 3282966, -2174327, -3916473, -19966230, -1001264, --4854387, -21787832, 8276402, 13619878, -2172717, 6791417, 3841848, 13893682, -7618735, -2121714, -5063767, -2237678, -6245956, -7174743, -137439, -4356171, -10544682, -2244657, -4828617, 4555350, --2000918, -5913096, 4117263, 1562294, 644782, -3685619, 4109210, 1057099, -6593849, 2257005, -2707440, -3163244, -9177808, -4606890, -1627793, -1053341, -50466, -3541201, -397284, -2640868, -1347546, 1041530, -1746978, 369904, -71404, -2816425, -5657009, -807454, 1297080, 3278134, -1755568, -4373351, -2739116, 1029182, -8122857, -13793287, 7967701, -4635344, 12035035, 5354214, --12809203, -5536213, -6425808, 2692408, -17292612, 11699491, 16588774, -6796786, 10391673, -2587718, --4416300, 7927973, -12076911, 7500624, 13499082, 3604551, 23196582, 11130408, -9545028, 9789304, -4311611, 8593693, 525597, 12340515, 10917270, 16558173, 6393596, -6595459, -7676181, -10386305, --854699, 25728464, 679142, 10832981, -16122770, 33636036, -9875740, -26519276, -12367358, 21203180, -1814087, -3056943, -2789581, -1653562, 15996606, -11748346, 9319005, -2463701, 20109036, 30422864, -15840913, 14617921, -10715943, 17258252, 10623602, 10210748, 11933567, 17256642, -3478387, -30403536, --19306414, -22115860, 5848135, 7742216, 6421513, -5210869, 10388452, 26656178, 2014877, 1976222, -6662031, -1602560, -23333484, -25352656, -8497056, 4915053, 2834142, -1178432, -14295262, 3571265, -859530, 1088774, 7727720, -1774895, 4967667, 1549410, 9506373, -2457795, 6399502, -5049808, -1271847, 879931, 11011222, 4884452, 10992969, 1119913, 5675263, -2042257, 1376537, 4544613, --2844342, -7158100, 1785633, -4308926, -7789460, -6371047, -1572495, -1823214, 10735271, 2110440, -136902, -3315715, 1818919, -45634, -3645354, -4426501, -2997350, 2294050, 6925098, -955630, -796716, 753767, 3204583, 2034741, -6931541, 4402879, 11159399, 13067438, 4746476, 6127845, -10206453, -8047158, 23714126, 9331353, 4596689, -6779606, -18163416, -7350837, 9932112, -1005022, --25746718, 34674344, -12167642, -6815576, 10705206, 507880, -3447785, 2496450, -6720550, -8162586, --1763621, -18893024, 4682051, -20302310, 574452, -16098611, -18094160, -3651259, -3840238, -3990562, --13234405, 5791764, 14190572, 3782793, 10867878, -18846316, 18574122, 33805688, 3511136, -13604309, -21141976, -17355426, -27452894, 45698988, -4682051, 3223373, -3175055, -20467130, 15780784, -18556944, -8029978, 27913530, -551903, 38346540, -29936996, 28880970, 8429947, -19011136, -9944460, 3598646, --18240726, -9117679, 20332376, -19959250, 13242458, -13430363, 7350300, 21210696, -46618648, -20574504, -21475374, -40040368, 14146549, 12382391, 22894324, 20214800, 9117679, -1653562, 13440026, 20050518, --21796960, 21758304, -401043, 7511361, -1143535, 6808597, 1771137, -4170413, 1508607, -6353331, --2071248, 1607928, -1122597, -10996190, 6912750, -1962800, 9002251, 5359583, -7762080, 6107444, -7513509, 5428839, 2265059, 3878356, 2360622, 4949950, -15229417, 8519605, -1988570, -4179540, -10829760, -8714489, -7062000, 3620658, -8993662, -7354058, -8862665, 4904316, -13435731, -40099964, --10435697, 13137231, 30958662, -9863392, 15632607, 424665, 7385197, 16031502, 10386842, 27766964, --7177964, 1169842, 7635915, -24616068, -15817291, -7348689, -7951058, 5645735, 427886, 2069637, --12814572, -2138894, -16967806, -13822279, 6649683, 34289408, 19749334, -9037148, -10968810, 16333224, -19602768, -11685532, 5184563, 15056545, -5956046, 32796370, 11181410, 4802311, -25298968, 15600932, -3227131, 12289512, -2580739, 3158412, -4159676, -5473936, -39898636, 10562398, 27625766, 13618804, -3715147, -793495, 13942538, -22473954, -41447508, 3063922, 55005108, 13210246, 43642236, 41334228, -574989, 3587372, -26277146, -23582054, -2487860, -20233590, 27564026, -60043104, 11368778, -22510460, --47904992, 10624138, 22468048, 47896400, 4329864, 2367601, -30507152, 9948218, 14462229, -21379810, --1959042, 1480153, 22429930, -6036040, -14249628, 33867428, 7215545, -12150999, -394600, -19659676, -2632278, -18611168, -3704409, -678068, -9031779, 2784213, -7285875, -7829189, -4207994, -127238, --3655554, 6231461, 17624936, -1041530, 260919, 6499896, -15846819, -9665824, -1853278, 4760435, -5091147, -13907641, -7776039, 10942503, 6549825, 3769908, 2718178, 11555073, -373662, 134755, -1263794, -7912941, 1489817, -10405632, 29235842, 51306068, 1251983, 14089103, 9154723, -26816166, --7710003, 26946088, 8385387, 11936788, -6811818, 7903277, 4500589, -9418326, 348966, 14031658, -14693083, 18103824, -8029442, -2115808, -39858908, -37226092, 5074504, -22979148, 725850, 20117090, -4772246, 2480881, -6985228, -4362613, 12769475, 31428424, -22832046, -12970264, -3046206, -22025666, --1688459, -21224654, -6705518, -22538378, 19923280, -27332636, -2310693, 5036386, 13211319, 48063368, -63883880, 16662326, -16896938, -34024732, -3091303, -23241678, -9241696, -36193688, 5350993, 35095788, -25736518, 21102784, 2445447, 5191005, 35778152, 34927748, 25508884, -1991254, 16071231, 6069863, -7900056, -41179608, 12370043, 4676146, -9604621, 25001542, 33718716, -4591320, -657130, -16492674, --70618928, -1257352, 20776904, -10139344, 48740900, 34793532, -16208670, 3337190, -18061948, 12254079, -3283503, -6435472, -10844792, -4802311, -1087164, 7693360, 9350144, 14553497, 318364, -8590471, --18896246, 1202054, -8959839, 7289097, -8460012, -11360188, -2944737, -2866891, 8427800, 3677029, --3315715, 4591857, 2379412, 3667902, 750546, -6408091, -10478110, -5150740, 3835406, 8819715, --842350, 7214472, -176094, -10298258, -10921565, 3134789, -13346074, -7348689, -57445, -5709086, --1709934, 3852049, 5348845, -4824859, -12460774, 31922344, 22778896, -15224585, 15429133, 23709830, -2685965, -29725468, -35461936, 33123324, 11289858, 7655243, 26097296, 569083, -11348377, 27988154, -7391102, -21254182, -10766409, -7714298, 9463960, 575526, -12706661, 4902705, -14057965, -1430761, --6334003, -6865505, 19091130, 35537632, -12088185, 7356205, 16775069, -8350490, -7135552, 6851010, -20265266, 6454262, -15520938, -19696720, -23655606, 12681965, 13368623, 32251984, -15267535, -14518600, -11359652, 19204410, 30114164, -882079, -55706264, -11959873, 17999672, 17893908, 8096550, -10917270, --386010, -22321482, 3380139, -9667435, 23199266, 33174864, -10011569, 694711, -19423452, -21111912, --8109435, -42719356, -8563628, -21737904, 18951544, -17405354, 19658066, 24317568, -49372260, -4161287, --20877300, 21122112, -8684424, 7423851, -15343771, 2469606, -13067975, 14536854, 16253230, 27989228, -27075474, 13365401, 26050050, 12041478, 1563905, 13729937, 8871255, -3927748, 11603391, -12917651, -6219650, -6627672, 5385889, -16273094, 9629854, 35433, 7627862, -11997454, -6787659, 7708930, --3119757, -4056060, 13975824, -11054709, -2528662, 11264089, 5590437, -7658464, -2405182, 4555350, -25790204, 13793287, 11241003, 15139760, 1028645, 16462610, 5565204, 4987531, 8638253, -65498, -13865765, 3767223, -23866596, -11230803, -6379637, -11727408, -16201690, -26793616, -6073621, -14905684, --27178554, -41064720, 20088098, 21264384, 12539694, -27438936, -37344740, -28675886, -16259136, 6732898, --1219234, -36371932, -21703544, -24924232, 35325568, 10997264, 15406048, -11102490, -20062866, 44762148, -11103027, 13969381, -8525510, 2662343, 13270912, -9141301, 10560251, -3283503, 21398600, 30171608, -1388348, -24319716, -19468550, 23906324, 16443819, 20944944, 6128919, 5270462, -10697690, -4705674, -3556770, 14646912, 31692564, -239444, -58819576, -54595476, 910533, -13316546, 35492536, 36011152, --39887900, -27003534, -16684874, 49859200, 44536664, -24002424, 7254200, -31443456, -30176978, 18546206, --13781476, 251256, -4470524, -21792664, 15809238, 16101296, 12960601, 50525460, -36764384, -9868224, --3204046, 13019656, 4336307, 20846698, -73593192, -42818140, 15701327, 23270132, 23138600, 6601365, --24103894, -24806658, 718870, 14849313, 42973832, 10496900, -13895830, 4499515, -27314918, 17274358, -15255187, 1000727, 24236500, 51366200, 12643310, -37459632, -19364396, -2522757, 4685273, 24887724, -21879100, 10344966, -10943577, -4458713, -7410429, -8723615, 22683870, -2455111, 2460480, -8698919, -22028888, -9836012, -3727495, -367757, 19194746, 8426189, 7126962, -3750043, -23118736, -8212515, -8144332, 19062676, 3740380, -25916906, -35806604, -29993368, -206158, 4699768, 6138582, 3969087, -49425948, -32813014, 30838402, 30768072, 19640886, -71599256, -28770912, 24052354, -19480898, 13940927, --5122822, -29703994, 19053012, 5794985, 5676336, -13095892, -47438452, -4435628, -1449552, 242666, --6773701, -34497716, 25834766, -21293374, 44123808, -4594542, -3859028, 21559126, 16003585, -21032992, --1957968, -15905338, 23576150, 37204080, 28266790, -31259846, 7022809, -20896626, 18900540, -18141942, --7475928, 3165928, -1595580, 20252918, -18543522, -43428024, 11187316, -15488726, 16243566, 17032230, --55048060, -9271224, -10499584, 2080375, 60956860, -16363825, -44362180, -11716134, 38743288, 18673980, --24024974, -7812009, 24034100, -27380, 29672318, -44557064, -23574002, 26931592, -28016608, -67973224, --20074678, -9201431, 77653544, -21111912, -40119828, 21420612, -46283640, 122176784, 11562589, -113368880, --30205968, -19958176, 80524192, 43666932, -50622096, -26645978, -657667, 59585692, 47456168, -7325604, --37314140, 14698452, -12623983, 53746684, -5196374, -26884884, -22321482, 35233764, -28139552, 18292802, --53884124, -171262, -2064269, -3068217, -3163780, 11397233, -29831232, 28958280, 2397129, 21258478, -855772, -33960844, -26140244, 19452980, 22935126, 36099200, 13449690, -3606699, -23523536, 3204583, -5853504, -6144488, 1542430, 23682986, 3676492, -1054415, -26909580, 5241471, 19115288, 7125888, -788127, -7808788, -19353122, -65553012, 18389976, -1058173, 22408454, 54184232, 17386028, 7450158, --30533996, -12688944, -30515206, -36579164, -12230993, 7173133, 20915954, 27640262, -3083787, 16069083, -19501300, -16987670, -34390876, 18209588, 6564321, -27980102, -9489730, 26543434, -9025874, -2994666, -24320252, 13603772, 10818486, 3361886, 13830868, -13249974, -31948114, -13922673, 9118752, -13120588, --7542500, 11682311, 795643, -22538378, 23476828, 5040681, -20839718, 2646237, -5022965, 20169166, -11251204, -8176544, 9495099, -12475269, -28009092, 3728569, 6826851, -2573222, 74088, 5901822, --12232067, 3843996, -10473278, 6265821, 19996294, -2145873, 8744017, 9217537, -7723425, 474594, --19071802, 6503118, 11258183, -34692060, 20131586, -21646636, 6823630, 979253, -96100, 9528385, -3872987, 22602802, 4132832, 6373195, -3266860, 11551315, -12162811, -8035347, 2805688, 1912871, --10642929, 3807489, -948651, -3124589, -6147172, 2166811, -1211718, 12216498, -3136937, 1430224, -8770860, -6188511, 6094022, -3826279, 2138894, -6194417, -5371394, -6187438, -1617055, -2804614, -4632122, 3265249, -14354318, -3966939, -4194036, 9951976, -5923834, 3692598, 1716913, -16037408, -5320391, 10331007, 681289, -3947075, 1730335, -4752918, -2369211, 53062712, -1931662, -1765768, --14733885, -14492293, 10923176, -644245, 9456444, 162672, -5185636, -7016903, 3596498, -9820980, -9954660, -9249749, 14504105, -11741904, 8451959, -9940702, -2211908, -1613297, -9245454, -7082401, -2091112, -4188130, -2919504, -85899, -6951942, 904628, -1380832, 2201171, -1634772, 4039417, --13937706, 12680354, -4771709, -4175782, 9622337, -7738458, 515396, -9660992, -8449274, 6135361, -5418101, -6792491, -4381404, 2717641, -438624, -11811160, 3019362, 2063195, -11274, 7736310, --2876018, -3339874, -3184182, -8067559, -2194728, 8443369, -8993662, 2307471, -4362613, -1114544, -572304, -2741800, 1978906, 42950, 5905043, -8595840, -746251, 5540508, -11094437, 6456410, --4999879, 69256, 5063767, -2463164, -5057861, 2282775, -900333, -1453846, -379031, -3613678, --95026, 3743064, -249645, -1765232, 650688, -3131568, 2158221, 1576253, 916976, -2529199, --761820, 3243237, -4155381, 4138738, -1902671, 1798518, 4600984, -5548561, 1319092, 370441, --7000797, 1269700, -2234457, 2878702, -998043, 207769, 4233227, -2798708, 808528, -4506495, -768262, 646393, -1130113, -1090385, -547071, -1627256, 311922, -824634, 178241, 3115999, --4567698, 1991791, -24917790, -42071352, 15599858, 134742784, 33703684, 74294344, -2939905, -72384696, --23528368, -71231496, -60878476, -21531208, -14697915, -4994510, 40325448, 54178864, 71619120, 90486368, -39031588, -23211078, -41968272, -88926224, -84546968, -34493956, -28285044, -18869938, 36458368, 49733036, -29701310, 46104328, 55294484, 18677740, 15121506, 10293426, -28742994, -13253195, -20601348, -44813688, --24767466, -33312304, -49348100, -26882200, 6044630, 5217849, 27468464, 66728224, 45624364, 37962680, -36983428, 11339251, 2673617, -3862786, -19291920, -27497992, -34785476, -49700824, -43947716, -24603720, --7763691, -16833588, 13779329, 25659746, 21796960, 37652904, 41984916, 26928908, 24391120, 23833848, --3791383, -11799886, -5958731, -34308736, -28424094, -7332046, -28135258, -30109332, -19083076, -27092654, --13190918, 7634841, 17203492, 31152472, 50001472, 30964030, 28713466, 31755914, 11715597, -3879966, --5873368, -17193828, -28355374, -29469918, -28071906, -30815854, -21428666, -19755238, -16398722, -6837051, -7608535, 18880140, 29344290, 44281648, 46665892, 45452028, 38643968, 12141873, -10161893, -20864952, --33481418, -44344464, -50033684, -50003084, -39577588, -22399866, -5398774, 13573170, 40905804, 45449880, -45578192, 47685412, 39457864, 20635170, 6519224, -11373610, -31998044, -44806172, -39498128, -37031208, --29146722, -13701483, 1115081, 10712185, 21919366, 24741696, 24450176, 19325742, 8734353, 3875134, -1481764, -3832185, -4310537, -4444218, -5719286, -7172059, -5539971, -7909719, -5350993, -4576825, --3178276, -4049617, -1530619, -928787, 1657321, 1683090, 3795141, 3054259, 2889976, 344671, -848793, -466541, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +5177583, -3042448, 206695, 171262, -3719979, 4968204, -1986959, -1937567, 1413044, -5119601, +-2303176, 5493263, 1240709, -2234994, 3896072, 1211181, 828929, -801011, 1896765, -30065, +-6574521, -310848, -2443837, -292058, -149250, -6285685, 91268, -4039954, 213675, 637803, +2801929, 3360275, 1102196, 836445, 610959, 2903398, -1593970, 994285, 179852, 457951, +600759, -868657, 2587181, 3878892, -7452305, 3462818, -1952063, -4476967, -2869038, 5717139, +2861522, -1927367, 3241627, 947040, -2051921, 2016487, 40265, 0, 296890, 393526, +-779000, 46708, 420370, -326954, 2454037, -1524177, -3442416, -3330210, -22012, 1124208, +-212601, 163209, 1877438, -737124, 3296924, -3481071, -1040456, 2685965, 2895345, -1988033, +3264175, 1151588, -845035, -2199560, -1021129, -937377, -877247, -868657, -433792, -121333, +-478889, -915365, 281320, 662499, -1309965, -339302, -420370, 684510, -1138703, -256624, +164283, 2767570, 198642, -2206003, 1379221, -1188095, -1768990, 435402, -3721589, -444529, +-2790655, 977105, 1734093, 1672890, 1323924, -2901787, -211527, -2404645, 2567317, -4961224, +-2822867, 2502892, -5444945, -615254, -367220, 1385664, 1184874, 2670933, 5633924, 2601140, +-712965, -21475, -2029372, -1576253, -9976672, -9179419, -624918, 6787659, -1698123, 5420786, +463320, 1546725, -1698660, -7719667, 3978214, 1216550, -2333241, 1895691, -4101694, -837519, +2304787, 1015760, 7221988, -4969277, 4377109, -2280628, -5710159, -2652142, -1566053, -1570884, +2005750, 1696512, -4605816, -2055142, -2627983, -983011, 4424353, 4728222, 5081483, -3738769, +627065, -2347200, -316754, -1975148, -2520609, -3056406, -3432753, 1884954, 531502, -533113, +-1250909, 447213, 1921998, -1968169, -1728724, -885300, 2202781, -770947, -424128, -967978, +-1120450, -282394, 480499, -32212, -187905, 364535, 482647, -147103, -214748, 1409286, +-1116155, -708670, 541166, -687732, 1090385, -689342, -758599, -155156, -139050, 681289, +-359167, -347892, 408559, 85899, -1111323, 357019, 259309, 3708704, -3513820, -4534949, +-3939022, 117575, -1560147, -1253594, -3118146, 678068, -3482682, -248571, -1437203, 5337571, +-3439195, -3758633, -8400956, -10890963, -2643552, -4852776, -4474282, -1062468, 2248416, -2761664, +-6545530, 4059281, -9490267, 2855080, -1600949, -1698123, 6123013, 4330401, 2259690, 855772, +-1065152, -968515, -2314987, 1000727, 4152160, -3339874, 3936875, 3655554, 1050656, 551903, +1633161, 2804614, -6175626, -2660732, 5869610, -4543002, 374736, -75699, 3586835, -433255, +-1379221, 699006, 6090264, 3397319, 2114198, 1988570, 3390340, -5364414, 4151623, -4373888, +3843996, 2561411, -1151051, -747861, -1841467, -2388002, -3930432, -173409, -1232656, -3099356, +-3468723, -1920924, -2020782, -323196, -240518, -921807, 4624069, -1884417, -874563, -3119757, +3203509, 46171, -716723, 711354, -1356136, -2239826, 44023, 1309965, -158914, -191126, +-1479079, 454730, -492311, -1295470, 81068, 326418, 724776, -136365, 474057, 434865, +1082332, 408559, -1191853, 82678, 608812, -140660, -1045825, -620086, 1521492, 821949, +-827855, -328028, -331249, 2185602, -5772973, -137976, -2709051, -5302137, -2465848, -986769, +-3696893, -1248762, -3410741, -1330903, 2685965, 3613678, -5990406, -3408057, 1962263, -1193464, +-6544994, 4353486, 7795903, 1634235, -1836635, -3644817, 862215, 3765076, 7052337, -3586298, +-1494112, -4521527, -3625489, 3897683, 3912715, -5487895, 3223373, -1754494, -3500935, 5544803, +-14496, 3023657, -7596187, 522375, -4871030, 1101122, -6051609, -3801046, -988916, -1414118, +12621835, 4005057, 3272765, 2462090, -9397388, 5253282, 3656091, -2077154, -236223, 4095788, +-581968, 4327717, 5011690, 4982699, -2891050, 363462, -1613834, 2651069, -2369211, -2507724, +1650341, -2355790, 1112933, 1557999, 86436, 2933463, 1164473, -5575405, -673773, -712965, +1751810, -6319508, -2030446, -1606318, 4454418, -1359894, -740345, -3417720, -903017, 219043, +-321049, -1594507, 46171, -1036698, 1152125, 403190, 10201, 180926, 425202, -821949, +-2349884, 1240709, 526134, -1357210, 652835, -744640, 281320, 285078, 843424, -194347, +-281857, -595927, 540092, -978179, 918586, -1112397, -56371, -97174, 733366, -740882, +-284005, -1073742, -615791, -991601, -7810398, -4358855, 3197603, -3422552, 9165997, 4029753, +8973797, -139586, -4384088, -4676683, -6294812, 9576166, -2345052, 4373351, 4894652, 1009317, +3446711, 3122441, 3048890, 1209570, -6323803, -365072, -2442763, -951872, 4339528, -397821, +-386010, 3018288, 1911261, 3126199, -2747169, -9982578, -5950677, -3784940, 7348689, -6644315, +-2007360, 4494147, -505196, 831076, -5566815, 9654550, 528818, -3769371, 7631083, -4693863, +11820287, 6100464, -2665564, 1361505, -3365107, -2308545, -10885595, 3852049, -4957466, -777389, +-423054, -2389613, 4669167, -1826435, -4750234, -4638565, 1082332, -4238596, -4658429, 2657511, +417149, 3355443, -1816234, -9943386, 3438658, 4315906, 5561446, -5351530, -6011881, 780610, +9859097, 1583232, -5085778, -2336462, -855235, 2699924, 501974, 2875481, -2888903, -1100585, +-559420, -3565360, -2908230, 4379256, -717796, 1717987, -367757, -1247151, -2774012, -267362, +124554, 1089848, -504659, 1013612, -705448, -2266132, -891743, -311922, -33286, -408022, +1726040, 99321, 1867774, -620086, -109522, -284005, -1987496, -2684, 1066763, 1044751, +7885023, -7255274, 3623342, 9255118, -6672769, 1830730, -3749507, -7276749, 10769094, 4022774, +10008884, 9215389, 1359894, -7356742, -4494147, 3813931, -468688, 1588601, -7945153, 829466, +-14125611, -5944772, -11016054, 6795712, -6253473, -230854, 2042794, -1828046, -2842195, 3340411, +3368865, 9771587, -1347546, -2175401, -7472170, -6401112, 6260989, 1337882, 2170032, 11687680, +-3520800, 75699, 6241661, -2799782, 2895882, 2137820, 6247030, 5598490, -3862786, -614717, +-7919383, 8252243, -5401995, -7171522, -6871411, 4355634, -2535641, -3783329, 8151848, -2539400, +8449274, -5194226, -3924526, -1084479, 5542119, 7152195, -520228, -7737921, 2816962, -4948876, +10087804, 2079301, 5936719, -8104604, -3551401, 2161979, -2051921, 4872104, 745714, -2764348, +2945274, 6459631, 9148280, 7031399, 132607, -1657857, -83215, 1514513, 168577, -1589138, +1097901, -1339493, -195421, 2594697, 164819, -1286880, 2813204, -899796, -1457068, 721018, +1001801, -58519, -1725503, 637266, -1180579, 243739, -2357400, -2947958, 759672, 1104344, +-61203, 2276870, -802622, 1027571, 4663798, -12346420, 4294968, 3688840, 2447595, -9330280, +7118909, 11783243, -11493869, 4388920, -7074885, 4643397, 606127, 4173635, -3420405, -241055, +2692945, -7796440, -3893388, -3351148, 6166500, 6513855, -2151242, 3068754, -1607392, 4817880, +6110128, 2405182, 1833414, -6197638, -2349884, -7743826, -8613557, -5996848, 559420, -2863133, +-419833, -3578782, -8577587, -2887292, 1724966, 789200, -539555, 12967580, -10505490, 3878892, +-5243082, -1500017, -3275450, -3289408, 5485210, -3274913, 399432, -3969624, -2677912, -4824859, +6587943, -6068789, 5400385, -1403381, 5394479, -483184, 797790, -552977, 5213017, 3034395, +-175020, 11246372, 423591, -5623186, 2936684, -5057324, -6243809, -7489886, 7267085, 2586107, +6470905, 6629282, 7740068, 4570382, -959388, -1385664, -1427540, 7476465, -1122597, 8381629, +1760937, -352724, -1304060, 2878165, 4240207, 1120450, 1727114, 592706, -593779, 838592, +-1433982, 2256469, 75699, 1935957, -600759, 1837172, -224412, -2922725, 1423245, 2017561, +-30602, 1641751, -545461, 95563, -1721745, 1417876, -434329, 695248, 3076807, 3102040, +-12988518, -1032403, 1680943, -3008088, -10230612, 11696807, -762357, 426276, 9935870, -2787434, +-10240276, 3601867, 6699612, 12686797, -822486, 5355824, 1091459, -11184095, -3290482, -5820218, +5682779, 3230889, 2965675, -4194036, -770947, -483721, 1015760, -3791383, 5291937, 1457068, +-4504347, 6544457, 917512, -7353521, -6171331, 1700807, 7928510, 7108708, -9953587, 19442780, +-972810, 352187, 5345624, -788127, -2562485, -188979, 12498892, -6273337, 6178311, -1523103, +8650601, 2595771, 7752953, -2962991, -6109591, 4294431, 6628745, -3304441, -7425462, -8077760, +-7110319, -3226057, -1439888, 7387881, 178778, 6420439, -776315, -2130841, 6377490, -5577552, +-10764262, -2869575, -6874095, -6476274, -11969000, 8921184, 7785165, 3196530, -18559628, 4358855, +3907883, -1392106, -545461, -6476811, 8866960, 4538707, 3510599, 2166811, 8143258, -710280, +-583579, 600222, -83752, 1891396, 923418, 36507, 2495913, -1504312, -337692, -1921461, +557272, 645319, 2749853, -1924682, -302258, -756988, 2118493, -982474, 787590, 1253057, +1695438, -1472100, 4068945, -11274, -125091, -1499481, 1588064, -2550674, 898185, 104153, +-3725884, -874563, -618475, -7399692, -499827, 576599, 5389647, -7787313, 395137, -1194001, +-3250753, -16176457, -1960116, 7652558, 5905580, 7841537, 906238, -8687108, 22981834, 9681930, +15629923, 1647657, -6844568, -2714956, -2221035, -9736691, -615791, -3809099, 4897337, 47782, +505732, -3103651, -4172561, -8227010, 2779918, 838056, 405874, 4283156, -352187, 1834488, +-823023, -7141457, -5566278, 4366908, 26307, 10471667, -13195750, 10593537, 6480032, -4625680, +-9540196, -14868640, 3153043, 11797738, -6018860, 11421929, -891743, -470836, 2619393, -3304441, +-13225815, 1627256, 6257231, 2829847, -5742372, -1462436, -3600793, 2968359, 6419366, -292058, +1642825, -825707, 6181532, -2720325, -2103997, 4261145, -3649112, 9767829, -2592013, -4875862, +3620121, -8751533, -4483946, 124554, 3489124, -3763465, 1643362, -1335735, 1945620, 118648, +2310693, 2054068, -779000, 1250372, -4165582, 2318209, -564251, -5575942, -1954210, -1537598, +-3388192, 59056, 985695, -2574296, -1883343, -61740, -3569655, 320512, 915902, -714038, +-3778498, 402653, -56371, -2790118, 1176821, 2180770, -2323577, -80531, 679679, 299037, +1101122, 3410204, 2776160, -2789045, -2298344, 2561411, -17788144, 12727599, 11475079, 13552232, +-4380867, -12084964, 4214974, 4859756, -18100602, -16432008, 15892990, 1742146, -7815230, 6028524, +-11324755, -12836584, 1792612, 33440616, 15489800, 6207839, -9124121, 150861, -3280281, 264141, +-3854196, -1858647, -4276177, 1204738, 9479530, 1888712, 11696807, -4649302, -3930969, 2149631, +8161512, -1567663, -1224066, -17485348, -784905, -9847823, -566936, 13558138, 9631464, -3584687, +9413495, 18814104, -8999030, 5434208, 15545634, -11446088, 16433619, -1373316, 6738267, -3906273, +658204, -2226941, 2251100, 3818226, 16303159, -6262599, -2095944, 4248260, -7648263, 4803921, +2491081, -4383551, -7451769, 16094316, -1097364, -8838506, -2952790, 9980430, -4227322, 6774774, +-72478, 487479, -10644003, -11559904, -5586142, -9860171, -8936216, -9660455, -610959, -2302103, +4680978, -606664, 831613, -881005, 5898064, 3765613, 410706, -7322919, 258235, -1370632, +-5458904, -1556389, -2814814, 2862596, 1082869, -3722663, -1253057, -2854543, -2245194, -262530, +2040110, 1997697, 2087354, 3585224, -2206003, 455803, 2248416, -1558536, -2148021, 2633889, +-3708168, -1458678, -1139240, 1661079, 710817, 2667712, 466004, 273804, -1047435, -2679523, +21697638, 3886946, 3074660, -11292006, -6532109, 562641, 2510409, 4384625, 5044439, -21524766, +984084, 1351841, 15555835, 2479807, 3968013, -1484985, 14153528, -23113904, 725313, 11829414, +-13748727, 3436511, 2714956, 11139535, 2208150, 1180579, -3766686, 352724, -11800423, 3997541, +-2932926, 2088428, 3233574, -2029909, -8944806, 3275986, -7056095, -12317429, 6971806, -6966974, +4594005, -11581379, -7276212, -1230508, -3568044, 2758443, -4896263, 12683575, -122943, 12093554, +-12749074, -10802916, -3439195, 171799, -187368, -3760781, 10915659, 8887361, 22739168, -3651796, +14555644, -8517457, -1429687, 4373888, -17209934, 19669340, -497142, 12244952, -453656, -17180942, +-10322954, 7226820, -22958210, 11967389, 3336116, 17470316, 22057342, 2862596, -16296180, -12355010, +-5059472, 12543452, -1500017, -3040300, 724776, -4600447, 698469, -3367254, -4918812, -1711545, +-7931731, -391379, 386010, -3693672, -3294777, -4507568, -3187403, -1546188, 2025077, 3831111, +1447941, -635655, 3521873, -2400887, -1314797, 816581, 1872606, 2237141, -2215666, 2830920, +-2893734, -1366337, -4233764, -7431367, 4617627, 797790, -4206384, -4254165, -799938, -5898601, +820876, 62814, 4397510, 11016054, 17063368, 5839545, -7018514, 16094853, -17290464, -1884954, +-5290326, 2063195, 13864691, -12594455, 31208842, 4052302, 7753490, -9268003, -12547210, 4265440, +135291, 26402774, -3770981, -9257802, -15111306, -10289131, 7409893, 4652524, 4345970, -1994476, +-14874009, -23065048, 1752884, -13937169, 18462990, 2323577, 15000173, -9330816, 6291054, -6062347, +7789460, 21539260, -3556233, -2365990, -3231426, 5567352, 7223062, 3621194, 1619740, 2157684, +9419937, 8364449, -4824322, -7493108, -6640020, -7503308, 24757802, 9691057, -14461692, 11109470, +-3259880, -11931419, -8475581, 4298726, 9088151, -16977468, -22028888, 2398739, -9814537, 28923384, +15101642, -5042292, -3253975, 6076842, 13117367, 3282966, -2174327, -3916473, -19966230, -1001264, +-4854387, -21787832, 8276402, 13619878, -2172717, 6791417, 3841848, 13893682, -7618735, -2121714, +5063767, -2237678, -6245956, -7174743, -137439, -4356171, -10544682, -2244657, -4828617, 4555350, +-2000918, -5913096, 4117263, 1562294, 644782, -3685619, 4109210, 1057099, -6593849, 2257005, +2707440, -3163244, -9177808, -4606890, -1627793, -1053341, -50466, -3541201, -397284, -2640868, +1347546, 1041530, -1746978, 369904, -71404, -2816425, -5657009, -807454, 1297080, 3278134, +1755568, -4373351, -2739116, 1029182, -8122857, -13793287, 7967701, -4635344, 12035035, 5354214, +-12809203, -5536213, -6425808, 2692408, -17292612, 11699491, 16588774, -6796786, 10391673, -2587718, +-4416300, 7927973, -12076911, 7500624, 13499082, 3604551, 23196582, 11130408, -9545028, 9789304, +4311611, 8593693, 525597, 12340515, 10917270, 16558173, 6393596, -6595459, -7676181, -10386305, +-854699, 25728464, 679142, 10832981, -16122770, 33636036, -9875740, -26519276, -12367358, 21203180, +1814087, -3056943, -2789581, -1653562, 15996606, -11748346, 9319005, -2463701, 20109036, 30422864, +15840913, 14617921, -10715943, 17258252, 10623602, 10210748, 11933567, 17256642, -3478387, -30403536, +-19306414, -22115860, 5848135, 7742216, 6421513, -5210869, 10388452, 26656178, 2014877, 1976222, +6662031, -1602560, -23333484, -25352656, -8497056, 4915053, 2834142, -1178432, -14295262, 3571265, +859530, 1088774, 7727720, -1774895, 4967667, 1549410, 9506373, -2457795, 6399502, -5049808, +1271847, 879931, 11011222, 4884452, 10992969, 1119913, 5675263, -2042257, 1376537, 4544613, +-2844342, -7158100, 1785633, -4308926, -7789460, -6371047, -1572495, -1823214, 10735271, 2110440, +136902, -3315715, 1818919, -45634, -3645354, -4426501, -2997350, 2294050, 6925098, -955630, +796716, 753767, 3204583, 2034741, -6931541, 4402879, 11159399, 13067438, 4746476, 6127845, +10206453, -8047158, 23714126, 9331353, 4596689, -6779606, -18163416, -7350837, 9932112, -1005022, +-25746718, 34674344, -12167642, -6815576, 10705206, 507880, -3447785, 2496450, -6720550, -8162586, +-1763621, -18893024, 4682051, -20302310, 574452, -16098611, -18094160, -3651259, -3840238, -3990562, +-13234405, 5791764, 14190572, 3782793, 10867878, -18846316, 18574122, 33805688, 3511136, -13604309, +21141976, -17355426, -27452894, 45698988, -4682051, 3223373, -3175055, -20467130, 15780784, -18556944, +8029978, 27913530, -551903, 38346540, -29936996, 28880970, 8429947, -19011136, -9944460, 3598646, +-18240726, -9117679, 20332376, -19959250, 13242458, -13430363, 7350300, 21210696, -46618648, -20574504, +21475374, -40040368, 14146549, 12382391, 22894324, 20214800, 9117679, -1653562, 13440026, 20050518, +-21796960, 21758304, -401043, 7511361, -1143535, 6808597, 1771137, -4170413, 1508607, -6353331, +-2071248, 1607928, -1122597, -10996190, 6912750, -1962800, 9002251, 5359583, -7762080, 6107444, +7513509, 5428839, 2265059, 3878356, 2360622, 4949950, -15229417, 8519605, -1988570, -4179540, +10829760, -8714489, -7062000, 3620658, -8993662, -7354058, -8862665, 4904316, -13435731, -40099964, +-10435697, 13137231, 30958662, -9863392, 15632607, 424665, 7385197, 16031502, 10386842, 27766964, +-7177964, 1169842, 7635915, -24616068, -15817291, -7348689, -7951058, 5645735, 427886, 2069637, +-12814572, -2138894, -16967806, -13822279, 6649683, 34289408, 19749334, -9037148, -10968810, 16333224, +19602768, -11685532, 5184563, 15056545, -5956046, 32796370, 11181410, 4802311, -25298968, 15600932, +3227131, 12289512, -2580739, 3158412, -4159676, -5473936, -39898636, 10562398, 27625766, 13618804, +3715147, -793495, 13942538, -22473954, -41447508, 3063922, 55005108, 13210246, 43642236, 41334228, +574989, 3587372, -26277146, -23582054, -2487860, -20233590, 27564026, -60043104, 11368778, -22510460, +-47904992, 10624138, 22468048, 47896400, 4329864, 2367601, -30507152, 9948218, 14462229, -21379810, +-1959042, 1480153, 22429930, -6036040, -14249628, 33867428, 7215545, -12150999, -394600, -19659676, +2632278, -18611168, -3704409, -678068, -9031779, 2784213, -7285875, -7829189, -4207994, -127238, +-3655554, 6231461, 17624936, -1041530, 260919, 6499896, -15846819, -9665824, -1853278, 4760435, +5091147, -13907641, -7776039, 10942503, 6549825, 3769908, 2718178, 11555073, -373662, 134755, +1263794, -7912941, 1489817, -10405632, 29235842, 51306068, 1251983, 14089103, 9154723, -26816166, +-7710003, 26946088, 8385387, 11936788, -6811818, 7903277, 4500589, -9418326, 348966, 14031658, +14693083, 18103824, -8029442, -2115808, -39858908, -37226092, 5074504, -22979148, 725850, 20117090, +4772246, 2480881, -6985228, -4362613, 12769475, 31428424, -22832046, -12970264, -3046206, -22025666, +-1688459, -21224654, -6705518, -22538378, 19923280, -27332636, -2310693, 5036386, 13211319, 48063368, +63883880, 16662326, -16896938, -34024732, -3091303, -23241678, -9241696, -36193688, 5350993, 35095788, +25736518, 21102784, 2445447, 5191005, 35778152, 34927748, 25508884, -1991254, 16071231, 6069863, +7900056, -41179608, 12370043, 4676146, -9604621, 25001542, 33718716, -4591320, -657130, -16492674, +-70618928, -1257352, 20776904, -10139344, 48740900, 34793532, -16208670, 3337190, -18061948, 12254079, +3283503, -6435472, -10844792, -4802311, -1087164, 7693360, 9350144, 14553497, 318364, -8590471, +-18896246, 1202054, -8959839, 7289097, -8460012, -11360188, -2944737, -2866891, 8427800, 3677029, +-3315715, 4591857, 2379412, 3667902, 750546, -6408091, -10478110, -5150740, 3835406, 8819715, +-842350, 7214472, -176094, -10298258, -10921565, 3134789, -13346074, -7348689, -57445, -5709086, +-1709934, 3852049, 5348845, -4824859, -12460774, 31922344, 22778896, -15224585, 15429133, 23709830, +2685965, -29725468, -35461936, 33123324, 11289858, 7655243, 26097296, 569083, -11348377, 27988154, +7391102, -21254182, -10766409, -7714298, 9463960, 575526, -12706661, 4902705, -14057965, -1430761, +-6334003, -6865505, 19091130, 35537632, -12088185, 7356205, 16775069, -8350490, -7135552, 6851010, +20265266, 6454262, -15520938, -19696720, -23655606, 12681965, 13368623, 32251984, -15267535, -14518600, +11359652, 19204410, 30114164, -882079, -55706264, -11959873, 17999672, 17893908, 8096550, -10917270, +-386010, -22321482, 3380139, -9667435, 23199266, 33174864, -10011569, 694711, -19423452, -21111912, +-8109435, -42719356, -8563628, -21737904, 18951544, -17405354, 19658066, 24317568, -49372260, -4161287, +-20877300, 21122112, -8684424, 7423851, -15343771, 2469606, -13067975, 14536854, 16253230, 27989228, +27075474, 13365401, 26050050, 12041478, 1563905, 13729937, 8871255, -3927748, 11603391, -12917651, +6219650, -6627672, 5385889, -16273094, 9629854, 35433, 7627862, -11997454, -6787659, 7708930, +-3119757, -4056060, 13975824, -11054709, -2528662, 11264089, 5590437, -7658464, -2405182, 4555350, +25790204, 13793287, 11241003, 15139760, 1028645, 16462610, 5565204, 4987531, 8638253, -65498, +13865765, 3767223, -23866596, -11230803, -6379637, -11727408, -16201690, -26793616, -6073621, -14905684, +-27178554, -41064720, 20088098, 21264384, 12539694, -27438936, -37344740, -28675886, -16259136, 6732898, +-1219234, -36371932, -21703544, -24924232, 35325568, 10997264, 15406048, -11102490, -20062866, 44762148, +11103027, 13969381, -8525510, 2662343, 13270912, -9141301, 10560251, -3283503, 21398600, 30171608, +1388348, -24319716, -19468550, 23906324, 16443819, 20944944, 6128919, 5270462, -10697690, -4705674, +3556770, 14646912, 31692564, -239444, -58819576, -54595476, 910533, -13316546, 35492536, 36011152, +-39887900, -27003534, -16684874, 49859200, 44536664, -24002424, 7254200, -31443456, -30176978, 18546206, +-13781476, 251256, -4470524, -21792664, 15809238, 16101296, 12960601, 50525460, -36764384, -9868224, +-3204046, 13019656, 4336307, 20846698, -73593192, -42818140, 15701327, 23270132, 23138600, 6601365, +-24103894, -24806658, 718870, 14849313, 42973832, 10496900, -13895830, 4499515, -27314918, 17274358, +15255187, 1000727, 24236500, 51366200, 12643310, -37459632, -19364396, -2522757, 4685273, 24887724, +21879100, 10344966, -10943577, -4458713, -7410429, -8723615, 22683870, -2455111, 2460480, -8698919, +22028888, -9836012, -3727495, -367757, 19194746, 8426189, 7126962, -3750043, -23118736, -8212515, +8144332, 19062676, 3740380, -25916906, -35806604, -29993368, -206158, 4699768, 6138582, 3969087, +49425948, -32813014, 30838402, 30768072, 19640886, -71599256, -28770912, 24052354, -19480898, 13940927, +-5122822, -29703994, 19053012, 5794985, 5676336, -13095892, -47438452, -4435628, -1449552, 242666, +-6773701, -34497716, 25834766, -21293374, 44123808, -4594542, -3859028, 21559126, 16003585, -21032992, +-1957968, -15905338, 23576150, 37204080, 28266790, -31259846, 7022809, -20896626, 18900540, -18141942, +-7475928, 3165928, -1595580, 20252918, -18543522, -43428024, 11187316, -15488726, 16243566, 17032230, +-55048060, -9271224, -10499584, 2080375, 60956860, -16363825, -44362180, -11716134, 38743288, 18673980, +-24024974, -7812009, 24034100, -27380, 29672318, -44557064, -23574002, 26931592, -28016608, -67973224, +-20074678, -9201431, 77653544, -21111912, -40119828, 21420612, -46283640, 122176784, 11562589, -113368880, +-30205968, -19958176, 80524192, 43666932, -50622096, -26645978, -657667, 59585692, 47456168, -7325604, +-37314140, 14698452, -12623983, 53746684, -5196374, -26884884, -22321482, 35233764, -28139552, 18292802, +-53884124, -171262, -2064269, -3068217, -3163780, 11397233, -29831232, 28958280, 2397129, 21258478, +855772, -33960844, -26140244, 19452980, 22935126, 36099200, 13449690, -3606699, -23523536, 3204583, +5853504, -6144488, 1542430, 23682986, 3676492, -1054415, -26909580, 5241471, 19115288, 7125888, +788127, -7808788, -19353122, -65553012, 18389976, -1058173, 22408454, 54184232, 17386028, 7450158, +-30533996, -12688944, -30515206, -36579164, -12230993, 7173133, 20915954, 27640262, -3083787, 16069083, +19501300, -16987670, -34390876, 18209588, 6564321, -27980102, -9489730, 26543434, -9025874, -2994666, +24320252, 13603772, 10818486, 3361886, 13830868, -13249974, -31948114, -13922673, 9118752, -13120588, +-7542500, 11682311, 795643, -22538378, 23476828, 5040681, -20839718, 2646237, -5022965, 20169166, +11251204, -8176544, 9495099, -12475269, -28009092, 3728569, 6826851, -2573222, 74088, 5901822, +-12232067, 3843996, -10473278, 6265821, 19996294, -2145873, 8744017, 9217537, -7723425, 474594, +-19071802, 6503118, 11258183, -34692060, 20131586, -21646636, 6823630, 979253, -96100, 9528385, +3872987, 22602802, 4132832, 6373195, -3266860, 11551315, -12162811, -8035347, 2805688, 1912871, +-10642929, 3807489, -948651, -3124589, -6147172, 2166811, -1211718, 12216498, -3136937, 1430224, +8770860, -6188511, 6094022, -3826279, 2138894, -6194417, -5371394, -6187438, -1617055, -2804614, +4632122, 3265249, -14354318, -3966939, -4194036, 9951976, -5923834, 3692598, 1716913, -16037408, +5320391, 10331007, 681289, -3947075, 1730335, -4752918, -2369211, 53062712, -1931662, -1765768, +-14733885, -14492293, 10923176, -644245, 9456444, 162672, -5185636, -7016903, 3596498, -9820980, +9954660, -9249749, 14504105, -11741904, 8451959, -9940702, -2211908, -1613297, -9245454, -7082401, +2091112, -4188130, -2919504, -85899, -6951942, 904628, -1380832, 2201171, -1634772, 4039417, +-13937706, 12680354, -4771709, -4175782, 9622337, -7738458, 515396, -9660992, -8449274, 6135361, +5418101, -6792491, -4381404, 2717641, -438624, -11811160, 3019362, 2063195, -11274, 7736310, +-2876018, -3339874, -3184182, -8067559, -2194728, 8443369, -8993662, 2307471, -4362613, -1114544, +572304, -2741800, 1978906, 42950, 5905043, -8595840, -746251, 5540508, -11094437, 6456410, +-4999879, 69256, 5063767, -2463164, -5057861, 2282775, -900333, -1453846, -379031, -3613678, +-95026, 3743064, -249645, -1765232, 650688, -3131568, 2158221, 1576253, 916976, -2529199, +-761820, 3243237, -4155381, 4138738, -1902671, 1798518, 4600984, -5548561, 1319092, 370441, +-7000797, 1269700, -2234457, 2878702, -998043, 207769, 4233227, -2798708, 808528, -4506495, +768262, 646393, -1130113, -1090385, -547071, -1627256, 311922, -824634, 178241, 3115999, +-4567698, 1991791, -24917790, -42071352, 15599858, 134742784, 33703684, 74294344, -2939905, -72384696, +-23528368, -71231496, -60878476, -21531208, -14697915, -4994510, 40325448, 54178864, 71619120, 90486368, +39031588, -23211078, -41968272, -88926224, -84546968, -34493956, -28285044, -18869938, 36458368, 49733036, +29701310, 46104328, 55294484, 18677740, 15121506, 10293426, -28742994, -13253195, -20601348, -44813688, +-24767466, -33312304, -49348100, -26882200, 6044630, 5217849, 27468464, 66728224, 45624364, 37962680, +36983428, 11339251, 2673617, -3862786, -19291920, -27497992, -34785476, -49700824, -43947716, -24603720, +-7763691, -16833588, 13779329, 25659746, 21796960, 37652904, 41984916, 26928908, 24391120, 23833848, +-3791383, -11799886, -5958731, -34308736, -28424094, -7332046, -28135258, -30109332, -19083076, -27092654, +-13190918, 7634841, 17203492, 31152472, 50001472, 30964030, 28713466, 31755914, 11715597, -3879966, +-5873368, -17193828, -28355374, -29469918, -28071906, -30815854, -21428666, -19755238, -16398722, -6837051, +7608535, 18880140, 29344290, 44281648, 46665892, 45452028, 38643968, 12141873, -10161893, -20864952, +-33481418, -44344464, -50033684, -50003084, -39577588, -22399866, -5398774, 13573170, 40905804, 45449880, +45578192, 47685412, 39457864, 20635170, 6519224, -11373610, -31998044, -44806172, -39498128, -37031208, +-29146722, -13701483, 1115081, 10712185, 21919366, 24741696, 24450176, 19325742, 8734353, 3875134, +1481764, -3832185, -4310537, -4444218, -5719286, -7172059, -5539971, -7909719, -5350993, -4576825, +-3178276, -4049617, -1530619, -928787, 1657321, 1683090, 3795141, 3054259, 2889976, 344671, +848793, -466541, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 3117610, -3112241, -2801929, -496069, 4461398, 1465121, -2306934, 481036, -2548526, -2270427, -1824287, --3999152, -1387811, 2437931, -195421, 1350230, -672699, -1133871, -1107028, -485868, 3362423, --2123861, 211527, -151934, 148713, 2667712, -85899, 1835025, 5850819, 4560719, 4588636, -2376728, 1043140, -740345, -5404680, 2219961, -2015413, 3468186, 1233193, -1835562, 1635309, --2414309, -4684199, -1444720, -1808718, -4438849, 192200, -545461, -631360, -2079301, 286152, -4632659, 2057826, 3148748, -45634, 1936493, -1807108, -130460, 2426657, -2001455, 1626719, --2481417, -2637110, 268972, 5457830, 3593277, 2098092, -1060857, 915902, 585189, 319975, --984084, -2090039, -3202435, -2318209, 73014, -1984275, -993748, -2136746, 709743, 330712, -1108102, -627065, 911607, 1292785, 1059783, 142808, 665720, -487479, -533650, -12885, --1333051, 1409286, 1153736, -130460, 1457605, 433792, 293668, -653909, -414464, -836982, -280247, 475668, -15032, -260919, 503585, -318364, -1236951, -345745, -827855, -45634, -242666, 309775, -1295470, 236223, 1999844, 1028108, -3454764, 8158827, -177167, 491774, --865436, -4310537, 3183645, -2250026, -2155537, -5023501, -3871913, -1630477, 3114388, 4479651, --911070, 2647847, -1035624, 4859219, 5042829, -10080288, 1840394, 42950, -992137, 3403762, -5356898, -1660542, -787590, 102542, -336081, -2566780, 2101313, -2587718, -2046552, -215822, -2679523, -1527398, -5674726, -2526515, -3860639, 443455, 333934, -5039071, -606664, -2203855, -1034013, -158377, -769873, 1227824, -1687922, 1698123, -2708514, 2636573, 3860639, 5937793, -2457258, -2608119, 2118493, 2485712, -948114, -6742025, 425739, 3496104, -2719251, 2011655, --3918621, -54224, -2506650, -6849936, -2099702, -3587372, 1717450, 2531346, -2324651, 1079111, --1102733, 3216931, 235686, 1879585, 2686502, -1164473, 1097364, 536334, 1122060, 2316598, --566399, 775778, 2889439, 1642825, 369367, 1725503, 287226, 739271, -147640, -51540, --1607928, 830539, 971736, 1307281, 872952, 284005, 395674, 28991, 471373, -221728, --474594, -137976, 1038308, 887448, 243203, 793495, 156229, 919660, 766652, 6669548, -1837172, -9086540, 3231426, 4647155, 1708860, -798327, 2374043, -5713917, 811212, 2516851, --1272384, 2433099, -384936, 2966749, 722628, -3862249, 2422362, 3506304, 3479461, -1024350, -1663226, 1888175, 1321239, -10289131, 1443646, -4387309, -1294396, -1468342, 2399813, 1097901, --8386461, -3034931, -1879585, -1606855, 3409130, -3138011, -5869610, 1432909, 2718714, 1679869, --5840619, -2761127, 1868848, -5527623, -447213, -6106370, 892279, 2971044, -3124589, -966368, -3482145, 4422206, -10355166, -782221, -2878702, 3118683, 1280974, 499290, 892279, -2932389, -2633352, 2262911, -8042863, 6157910, -831613, 1501628, -4105989, -1734093, -3473555, -451508, -899796, -3238405, -4472135, 3946538, -1444720, 1614371, -226560, -828392, 1145146, 1326071, --1635309, -4154307, 2296734, 2064806, 525597, 945967, -135291, 289910, 684510, -55298, -681826, 456877, -98784, 1566053, 220654, 1193464, 1441498, 57982, 2034741, -80531, -392453, 524523, 907849, 708670, 1008780, -1553168, 686121, -720481, 300648, 650688, -488016, 1173600, -421444, -389768, -4362076, -4093104, -3404299, -2157147, 6780680, -2368675, -921271, -5509370, 5839545, 392453, -3964792, -1041530, 3381213, -7055021, 2390686, -2080912, -1585917, 1140851, -3235184, -2291365, -8397735, -2257542, -9457518, 1225676, 2126009, -1012539, --1290101, -862215, 1422708, -3697967, -6743099, -3129958, -2483565, -1038845, 2469606, -1551020, -4007205, 1783485, 3069828, -4175245, -240518, -205622, -3498251, 971200, 2747169, -272194, --1747515, -4093104, -3792456, 2551211, 3808562, -122943, 7546795, 5990943, -5415954, -1376537, -8053, -5708549, -6538014, 9872519, -167504, 271657, 3089692, -6273337, -2070711, -4064113, -9742060, 2634426, 499290, -7762617, -6171331, 828929, -2547453, 5037997, -2592013, -55298, -1374390, -3046743, 1098438, 3040837, -4574677, 50466, -7290707, 795106, 2734821, -2103997, -1057099, 875100, 3564823, -512175, 566936, -705448, -144955, 1546188, 1582159, 1484448, --1106491, 474594, -77846, 666257, 42950, 652835, -1069984, 2298881, 13959, 659278, -341987, 725850, 534187, 664109, -619012, -596464, -525060, 506806, 1537061, 1817308, -317291, 824097, -1504312, -11388643, 5701569, 3231426, 5813775, -3117073, 3187940, 3334505, -5974837, 1418413, -11367168, 2843805, 493384, 4523675, 8256538, 438087, 3587908, 3144453, --6805913, 2396055, 634045, 947040, -1847373, -942208, 4228932, 2804614, 175020, -4161823, --47245, -1983738, -2153389, 6816113, 3150359, -281857, -909459, -8228084, -7058779, -8083129, -2154463, 2189897, -8380018, 599148, 570157, -8302709, 524523, 1286880, -1108638, 9551470, --1175210, -4688494, -1178969, 5486821, -452045, -8501888, 9243843, 4792110, -5879274, 4501663, -897111, 867583, -151934, 521839, -2283312, -4268124, -4041564, 7391102, -490163, -2154463, --343061, 5316633, -4922033, -8691940, 311922, 1983201, 1631014, -7597261, -3935801, 2929168, --683437, 4251481, 1619740, -1347009, -1270237, -1158567, -603980, 150324, 6752763, 3937411, -2441689, 2163053, 2610266, 3934190, -1878511, -625992, -2129767, -646929, 748398, 195958, --1178969, -1900523, 1984812, 304406, 894964, -31139, -1214402, 435402, 1048509, -2401424, --408559, 1924145, 415538, 114354, -883153, -264141, -574452, -1042603, 257161, 975494, -777926, -703301, 793495, 68719, 3410204, 13167296, 3894462, 10564009, -11620571, 463320, --5748277, 202400, 3829500, 4457639, -5981816, 2621004, -3474629, -3038689, -4165045, -6720550, --1010928, -15852187, -173409, 5257040, -722091, -1064078, 1722819, -8309688, 2908230, -7924215, --2528662, 8192650, 1634772, 2837900, 172336, 2421825, 6951942, 6324340, 12128451, 6326487, --9210020, -751082, 10214506, -1418413, -7511898, -1124208, 928787, -3408057, 6837588, 5097590, --5912560, -1706176, 6556805, 7015829, -2513093, -4434554, 11077794, -4558034, -14979235, -10093710, -3277597, -15032922, -318901, -4489315, 55298, -1381369, -4224637, 5652714, 1593970, -1456531, --4936528, 4320200, -2964601, 7995619, 5434744, -2164127, -5307506, 1152662, 2069637, 759136, -282394, 1903207, -1118302, -5849746, -1715839, 8185134, -961536, -3304977, -899259, -1698660, --4237522, -4083977, -2289755, -1953136, 469762, -20401, 4076998, -339302, -1490354, 592169, -1449015, -965294, 840203, -1389959, 2767570, -71404, 1694365, 273267, -2690260, -253403, --304406, -2793339, -772557, -1692754, 1267015, 101469, -446677, 984084, 420370, -263604, -488553, -3126199, 670552, 915365, -12826920, 6088653, -1129040, 3261491, 4254165, 6956774, -1559073, -6072010, 8287140, -3058017, 3690451, -3678103, 3075734, -534187, -15067819, -3092377, --2575370, -1743757, 1035087, -3588982, -2485176, 2045478, 3310883, 1172526, 8144869, 3788161, --7866233, -547608, 20938, -4399121, 9370008, -5567888, -5410585, 9895605, 10391137, -1256278, --117575, -6430103, 2336462, 1442035, -3367791, 1760937, 6437619, 4010426, 7740605, -1887101, --6070937, 3816615, 907312, 1896228, -7237020, -3714073, -4250407, 1744831, 4148402, 1555315, -1112933, 7471633, 8913131, 1367947, -4231080, 5109401, 4157528, -6242735, 880468, 1127429, --715112, 771484, -140123, 5357435, -578210, -4117263, 2121714, 7050189, 3120294, 4154844, -8691940, -5887327, 1061394, -1978906, 8248485, 4759898, 8834211, -4214974, -1127429, 1505386, --3135863, 496069, 872415, -965294, 10737, 2083059, 2366527, -849867, 1294933, 954020, -3068217, 2739652, -359167, -192200, -1374390, 428423, -1384053, 768262, -2440078, 2459406, --35433, -901406, -31675, -167504, 102542, -824634, -1897839, 2733210, -330712, 484794, --3004867, -2432562, -658741, 2627983, -267362, -237297, 260919, -259309, 5373004, -11148124, --6640557, 4408247, -2584497, -10414222, 5309654, -5457830, -4728222, 6688338, -2012729, -2238752, --1641751, 1711545, 4989679, 2560874, 2695092, 2729452, -4113505, -2492155, -838592, 6024229, -3135863, -10641855, 3406983, 3294777, -4431333, 9976672, 9194988, 4917201, 380105, -3648038, --2326799, 519691, -3091303, -3754338, -6128919, 877247, -7000797, 5084168, 1987496, 45634, -1139777, 2675228, 2356863, 5443871, 8549669, -3246995, -13471165, -2370822, -9164386, 3151969, -1304060, -12239583, 4466229, -5148592, 15381888, 5077188, -9635222, -349503, 9799505, 5073430, --7970923, -4786204, 10251550, 5848672, -7057705, 8708046, -7243999, -9621264, 1523103, -14558329, -8813273, 9420474, -2126546, -8771397, -1530082, 3419868, 1819992, 1445793, 923418, 6744710, --9464497, 3039763, 10632192, 156766, 409633, -9349607, 4687420, 2585034, -8566849, -2171106, --4301947, -2082522, 386547, 2671470, 2204392, 281857, -2544231, 239981, -2728915, 1126355, -1703491, -379031, -1293859, -953483, 1747515, 512712, -493384, -1480153, -2721399, -344134, --2655364, 5375689, -5012227, -43487, -483184, 2041720, 1452236, -2949569, 944893, -936303, -4651987, -610959, 1356136, 101469, -2585034, -296353, 2948495, -31675, -8721468, -6441914, -206158, -10472204, 31139, -24622510, -7750269, -2830920, -13455059, -4712116, -2818036, -5899675, --4560719, 3211562, -6485938, -12313134, 3278671, 7727720, -12577812, -3476776, 3875671, 6314139, -10849087, 6927246, 6390375, 7011534, 2534031, 12426414, -7395397, -3164317, 2630131, -6148246, -2338610, 3522410, 6503654, 855772, 10635413, 2235531, 2621004, 7344931, -3246995, -6296959, -111132, -9654013, -6176163, -11143293, -469225, -512175, -14653355, 5283347, -6640557, 2998961, --13841069, 1656784, -10475962, 15626165, 781147, -13928042, 16709570, 20473572, 5743445, -6862821, --5090610, 5312338, -1789391, -676457, 6041945, -9778030, 6362457, -10099079, 5338645, -4027606, --5698885, 2405182, 5361193, -2921652, -321586, 6299644, 1640678, -3115999, 3535295, -1563905, --5791764, 752693, 5383742, -1045288, -2148021, 2136746, 1554778, 4388920, 864899, 141197, -1879048, -1485522, 3049964, 764504, 2522757, 867583, 2000381, 1619740, 1628330, 1311576, --1900523, 2105071, -2550674, -2362769, 210453, 1376000, 436476, 681826, 1501628, 991064, -97711, -835908, -1924682, 6979, -2022930, 5326297, -2674691, 4798016, 7240241, 1066226, -6681896, -3778498, 10444824, -8122320, -7565585, -19903952, -4425427, -10321343, -24285356, 6091338, --14005888, -8505109, -11294153, 3097745, -21879638, 5848672, 1773822, -4203163, -500364, -6293738, --2237141, 5241471, -7469485, -5316633, 270046, 3994320, -6537477, -509491, 7459285, -12006044, --2798708, 7000260, -6685117, -411243, 39192, -1902134, 10120554, -8875013, 6000606, -4039417, -8227547, 8702141, -8883066, -11833709, 11045582, -1199370, 2386928, 2891587, 970663, -2541547, -6209449, -3380676, -13707925, 3568581, 2762201, -11855183, -1349694, -4243965, 7099581, 8672613, -4269198, 1462436, -3437585, -8421894, 8593156, 5330055, 7683160, -528818, -12164958, -2837363, --1856500, -5296769, -3018288, -1413044, 3482145, 5412196, -4714264, -3980898, -12087112, -5721434, -2303176, 4983773, 1320166, -1015223, 5500780, 5217312, 3092377, 6404870, -1989107, 5026186, -2251100, 3442953, 554588, 57982, -3350075, -2523830, -633508, 1633698, -814970, -2808909, --3570729, -92342, -607738, 772020, -2436320, 599148, -2900714, 935229, 4786741, 1123671, --2780455, -2794413, 6098854, 3526705, -781147, -326954, -7769059, -831613, -114354, -6511171, -144418, -2611340, -2056753, 1610613, 2017024, 545998, -776315, -5984500, 29561186, 17069810, -1137630, -9383967, -22384296, -2729452, 10408316, -4902169, -9043591, -16783658, -980863, -3622805, -542240, -5758478, 5382668, -95026, 14612016, 5792301, -6157910, -435939, -2657511, 1105954, --3063922, 3025268, 9041980, -10644003, 2019708, -6416145, 4189204, -4571993, -7797513, -15166066, --1264331, 8673150, 2869575, -1899449, 3162170, -1129576, 8237748, 13089450, -4609037, -2989834, --15209553, -16451335, 4507032, 2435247, -6995428, -6019397, -13700409, -9394167, 5370857, -1776506, --15569, 690953, -1098975, 6237903, 3529926, -11249593, 429497, -10252624, -933082, -5532455, --3224447, 10880226, 22396106, 36958732, 1351304, 11886859, -11194295, -14207752, -20002200, -1054415, --110059, 4044786, 4188130, -2731599, -25273736, 10472741, -4330938, -3484292, 1546188, -6616934, -719944, -3598109, -10321343, 128849, -4155918, 97174, 984621, 394063, 7257958, 1060320, -791348, -392453, 261456, -304943, 3093987, 6882685, 1995012, -242666, 1431835, 6241125, -130997, 80531, 2309082, -2064269, 736050, -5702106, 1912871, 2988760, -5400385, 5487895, -293132, 481036, -1625108, -5961952, -1959579, 2678986, -8590, -599685, -1525787, 214748, -10821707, 18009872, -8901320, 22549, 3475702, -14709726, 148176, -9501541, -9184788, 13834627, --4063576, -3488050, -7430831, 15889232, 13985487, -16643, 22969486, 2570001, 7181186, 5039608, --6389838, -7511898, -11940009, -6308233, 2809446, 96637, 10298795, 785442, -1112933, -1890323, -7279970, -10524817, -25669946, -9019968, 7582765, 2357400, -2100776, -7669201, 464930, -12373264, --1847910, -11274826, -769873, -1429150, -7923141, 7582228, 3784403, 14419816, -11920145, 22348862, -6012954, -4373351, -7909719, -4087198, 3531537, 12882218, -3964255, 7361037, -11395085, 9191230, --10347650, -11676405, 11497627, -16689706, 10930155, 9153649, 17735530, -18076444, 13725642, -1737314, -12236899, 4751308, -18965502, -3345243, -4452271, 5264020, -10061498, 29840360, -1465121, -10572062, -4240744, 13775571, 9380209, 6437082, 7131793, -971736, 3399467, -1251983, -3955128, -2550137, -1056025, -163746, -3923453, 1095754, -1150514, -6090801, -1255741, -2347200, 2551748, 3161096, -1743757, -871342, 5900212, -993211, 3267396, 1269163, 4176319, 1531156, -2103460, -2662880, -719944, -352724, 2881386, -1206349, 280784, 2400887, -1473174, 4140885, -1971927, -2352032, -1174137, -1775432, 4374961, 1535988, -1273458, 1286343, -12487617, -16750909, -34305516, -10536629, --20145544, 5608154, -920734, -6870337, -9979893, -9505836, -8588324, -9312026, -9118752, 943819, --7436199, -1351304, -16156593, -24792162, 30344480, -9476308, 16436303, -3162170, 4233227, 5221607, -8852464, 5827734, -1565516, -520228, -13124883, -2988224, -3138547, -8839043, -13766444, 5341866, --1574106, 19401978, -13478681, 327491, 26851598, -6509023, -22362284, -7237020, 856309, -10156524, -15695421, 7192997, -8670465, 6344204, 8414378, -5245766, -209380, 4208531, 10476499, -432181, --10397042, -10236518, 12543452, 8955544, -6656663, -14388140, 9108552, 10546829, -9501541, -12954158, -8996883, -16416439, 31271120, 6686727, -2611340, 1225139, 7607998, 1675037, -5570573, 452045, -2193655, 11191611, -7439420, 2194192, -22317724, -20106352, -2304250, 1135482, -2252174, -9792525, -7016903, 16489990, -530428, 4176856, -1624571, 3470871, 4933844, 5903433, -6473590, 7110319, --3393024, -1981054, 4680978, 8766565, -2688113, -8948027, 2449742, -896038, 1399623, -886911, --4841502, -1403381, -5003637, -3131031, -6157373, 6165426, 6309844, -3923990, -99321, 7603166, -2346663, -3347390, 1515587, 9543417, 6239514, 6855305, 6903086, 6092948, 2197950, 8734890, -4558034, 3582003, 3173444, 8264591, -12912819, 27917, 4774393, 3672197, -8462696, 20390358, -14376866, 29351270, 16209743, 10930155, 4247186, -25670482, -2120103, 3500935, -15137612, -4026532, -29021094, 2232309, -16850768, -16598975, 15022185, -22873922, -5960878, 1009854, 6100464, 2633352, --4394826, 7433515, -10364830, -13422, -2128156, -6504191, -1474784, -4526896, -14984067, 7875360, --12996034, 7596724, 6717329, 8841727, 1547262, 5860483, -5473936, 24154896, 3175592, -25650618, --22624278, 2070174, 10047002, 19632832, -6554657, -15409269, -6914361, -2041720, 2124935, 11528766, -2413772, -9096204, 26466126, -32569810, -5527086, 6164889, -22767084, -11737609, -6074695, 3346853, --36829344, -17388712, 26169772, -9970230, 7552163, -8551280, -29772714, -11227581, 14141180, -4387846, -5424544, 9069897, 18606336, -8950175, 1921461, -5622649, 11589969, 5298916, 4901632, 721018, --624381, 274341, 10065793, 5209259, 5884642, -1628866, -399432, 3738232, -7030862, -6334540, -2553895, 11783243, 5375152, 4539244, -11745662, 6739878, 21447456, -177704, -431107, -8381629, -5661304, 882616, -5242008, -6828998, 695248, 6319508, 7296613, 5337571, -6922951, 4398584, --4725001, 5002027, -8868571, -4871567, -1991254, -4671314, -5870684, -1844152, -14313515, -13485124, -1920387, -1107028, -2488934, 4602595, -456340, -1453846, -176094, 4552129, 15224585, -6714645, --47055124, -12598213, 2956548, 12864501, 13244069, 11370389, 12129525, 20935818, 38648264, -22345642, -16353088, -5941551, -416612, -6021544, -31228708, -23920820, -4211753, -1797444, 7027640, 11979738, -16422881, -5454609, -279173, -8690329, 322123, -1857573, 90194, 16304233, 9166534, 5197448, -13064754, 14814953, -26378078, 12836047, -15230491, -19996294, -5570036, 12315819, 3882651, -13622026, -4612258, 1249299, 9717364, -1263257, -25640954, -18891950, -21227876, -21712134, 3016678, 17328046, --3098282, 63722284, -41689100, -31935766, 19498614, -5999533, -12657269, -4683662, -3318399, 350040, --39058968, 3789772, -2707440, 5043366, 30169998, -2446521, 10650982, 11247982, 14461155, 48959944, --18165564, 62001612, 17482128, -2039573, 8341364, 3234110, -25482040, -23046258, -281857, -5914707, -3328600, 9288404, 7787850, -4787278, -21836150, -18455474, 7372312, -12568685, 8079371, 8329552, -19583440, 18516140, 17441862, 2996277, 6175626, -635118, -708670, 12379169, -1960653, -1504312, -4236449, -18851148, -4238596, 7406134, 147103, -2260764, 11930882, 4058744, -17029546, 11461120, --9448928, -13822279, -7318625, -4562329, 3507915, 5179194, 6029061, -7575249, 8638253, 3150896, -5626944, 1960116, 7354595, -3380139, 4527970, -11554536, -2121177, -28176060, 10267119, 44988708, -1320703, 46948288, 24839944, -2930242, -18136036, 52952116, 7986492, -9029632, 6885907, -12190728, --3537443, -1934346, -3238942, 6570763, 14823543, 10177999, 1971927, 6665253, -10634339, -10448582, -3232500, -3299072, 17450988, 18747532, 12048994, -5033702, 1203128, -23171348, -14421426, -4457103, --15774878, -25062744, -14805289, 11646878, -14442364, -44069584, -20282446, 13182328, -17721572, -12729209, -627602, -3457449, 20635708, 30104500, 39873404, -21364242, 11336029, -555125, 1308891, -8840116, --26374320, -52894668, -34653408, 17996450, -35115116, -18692234, 9578851, 17561048, -13007845, 19835770, -57707716, 11862163, 11181410, -43912820, -58496380, -12962748, -18212272, -31508954, -8913668, -26374858, -18611704, 10294500, 52310016, 21264384, -6063957, -10886668, -18177912, 12063489, 23766202, 47082504, -33141042, -23123568, -47892108, -23701240, -15288473, -28656558, -5301064, 23827942, 11563126, 29544544, -1261647, 20906290, 8438000, -7248831, -8973260, -10606422, 5742372, 12631499, 3195993, 16531866, -21023328, 12371116, 14974940, 6548215, 22702660, 19623168, 771484, -806917, 9917616, 22185654, --2281702, -6441914, -3455301, 18853296, 5843840, 502511, -5806259, 11621645, 9162776, -3387656, -7587597, 9096741, 4638028, -2535641, 2007897, 6371047, 750546, -11464341, 24106040, 47805132, --25517474, 36192080, 29050622, -4895726, -7565048, -16487306, 4835060, 32249298, 23928874, 37853696, --16711181, -7744900, -7932268, -2594697, -10410464, 9717900, -12748537, 27700928, 11687143, -46186468, --20023674, 124017, 6699612, 19556060, -9680319, -17644800, 4948876, 5144834, -7592429, -8851391, -4945655, -13326747, -20222854, -9348533, 43060804, 17655536, 7111392, -22226992, -7319698, -18900004, -10671920, 20727512, 6845104, 1131187, 12182138, -7618198, 27401354, 15426449, 1425929, 8919036, --1226213, 54475216, 11096585, -23549306, 8697846, 9216463, 5246303, 12151536, 519691, -22478786, -26173530, 5580773, 4327180, 10118406, 4609037, -260919, -16540993, 18640694, 21296596, 10900627, -61481920, 43639016, -23853174, -47808356, -33501282, -3474629, 3970161, -5061082, -40652940, -20271172, --14524506, -16847010, -16764331, 14871324, 11636140, -4423280, 2367601, -3791919, -22822920, 6388227, --4312684, -1391033, -23375896, -22503482, -4140349, 9360344, 10995653, 1252520, 11734388, 4954245, -14834817, 2059974, 2894271, -25469156, -15162308, 10714870, 2871723, -7107634, 13238700, 5574868, -2313377, -12271795, 11760157, 16168404, 11371463, 11730093, 14843944, -3320010, 16457241, 32993402, -26022134, 5866926, 3605088, -4228396, -5755256, -16967806, -21448530, 5641977, -2357937, -8938901, --55867324, -7334731, 13858786, 15622407, -12870943, 19532438, 5946919, -8077223, -21052320, 4483946, --5286031, -31256624, -10151692, -11220602, 2017561, -42992084, -33784212, -5919002, 20724290, -3045669, --6823093, -26112328, 161061, 21940840, 683437, -15621870, -9255118, -3562139, -9094056, 5252745, -6961068, -22181896, -24854438, 3543885, -1261110, 4990215, 39902932, -24944096, -2987687, -1846299, --39735964, -12149926, -29194504, -4817880, -2856153, 27504970, 30911954, 38056632, 10560251, 6167036, --15010911, -33942052, 918049, 13297219, -12096239, 46783468, 109790640, 105502112, 15014669, -68137512, --62648540, -24790014, -39560408, 129475008, 79903032, 50057308, 65168612, -1476395, -35230008, -92965640, --59742460, -23409182, -5399848, 36839544, 74978856, 66718560, -8426726, -55988120, -34078956, -50755776, --39982388, 6535330, 54178328, 79152488, 30423938, -4829691, 4016331, -31077310, -36588828, -36477156, -12129525, 5071283, 8957691, 31439160, 16670379, -3815005, -20917028, -18349174, -12128451, -28679644, --5996848, 11814918, -10852845, 123480, -4227859, 18875844, 14304389, -26737246, -16609712, -53397180, --42813308, -38366944, 23790898, 42049340, 15903190, 10401337, -15835544, -28012314, -83099024, -61882964, --37087580, 6427956, 22641456, 14055280, 3091303, -31093416, -25740812, -48826260, -80191872, -32101122, -8966818, 22689776, 40568112, 18256296, -338229, -23165442, -8599598, -15602542, 28831578, -28202366, -32521492, 6686191, 3249680, -51775292, -17261474, 46268072, -31066572, 13106630, -320512, -9896678, -13778255, 5738613, 24099062, 39135204, -23012972, -29812978, 7601019, -17955648, 23886460, -31166968, --16982838, -19520626, 2020245, -4911295, -18684718, 8830453, 36524400, -28394028, -32298154, -23124104, --7723425, -6424198, 49148384, 3512210, -1753957, -48176112, -12821551, 5047124, 41252088, 18508624, --7625178, -69670272, -50451908, 48051556, 51667384, 50630148, -23201414, -116545552, -23204634, 52867288, -43682500, 6990060, -13635984, 7711614, -47302084, -27880780, 15904264, -13654775, 14395657, -8419747, -1917703, 49733036, -36817532, -19163608, 41056668, 32525788, 61951684, 26458610, -82691544, 26069378, -89352496, 19387482, 45256072, 11579232, -25060598, -566399, 56872884, 39257612, 75527000, -99027984, -13606456, -472983, -11203959, 39507256, 538482, -51380156, 4413079, -2063732, -10769630, 7809861, --413391, -31352724, 27399206, -12828530, -992137, 1617055, -7721278, 1600412, 3895535, -8533026, --11737072, -16968342, -25524454, 25059524, -1545115, 9383967, 20816632, -23858544, 11145440, -627602, --44217764, 463856, 13217225, 47602196, -12948790, -65412888, -8260833, 31721554, 7872138, 28103044, --22303766, -17915382, -24532854, 11478837, -4873714, 17412334, -25961466, 13110925, 5688684, 8169565, --28858960, 3510062, 5194226, 20543366, -8775155, 4934381, -17972828, 7087770, -11120744, 17869748, --4068945, 14529874, -5345087, 6612639, -58281096, 6585796, 10422812, 5555004, 57461832, 9678709, --4313221, -36686536, -6272263, -3611531, -8596377, -368830, -6944425, 14698452, 6860137, -10818486, --1853815, 22813792, 70330, -1289027, 2423435, -5717675, -9794673, 12799003, 11320460, 8586713, --14267881, 7493108, 21346524, 8364986, -1227287, 13762686, -2508261, -16346646, 4319664, 4133369, --13163001, -14312979, 14249091, 13868449, -13700946, 8770323, 8475044, -129923, -4991826, 92879, -10832444, -607738, -12103218, 6288906, 7379291, -22486302, 5745593, 16611323, 5434208, -14623290, -2273648, 10306311, -18937048, 5134097, 8869107, 3736622, -4928475, -18061948, 21246130, -23011362, --2035815, 22126060, 355409, -3826816, 483184, -20813412, 9203041, -316217, 11878269, 22002580, --9967008, -1594507, -12728672, 16825534, -3534221, -1891933, 17254494, -22550726, -9918690, 12503724, -10204305, 4470524, -18335216, 6325413, -4035659, -1162862, 8781061, 6670084, 1250372, -4677220, --2355253, 839666, 4964446, -16011638, 11648488, 2367601, -2232846, 4505421, -2106682, 10110890, --15060303, -2738579, 301185, 874563, 1492501, 6955163, 4602058, -25573310, 13508209, -2741263, --2981781, -1074279, 5192079, 6979859, -6344741, -2567317, 11883638, -10184978, -1315871, -7793755, -5645735, 53852448, 4723391, -6572374, -18009334, -11969537, 6309307, -8026220, 6944962, -10712722, --853088, 8532489, -4827543, 4011500, 3929358, -14929843, 4122095, -4890894, -3252901, -12305081, -3469797, -3486440, -7762617, -3620121, 5943161, -5372467, -5320928, 7589744, -8436390, 4266513, -7215545, -14959908, 14740865, -3736085, -17600240, 9335111, 9284109, -8208756, 2848637, 5322538, --7437810, -6660421, 39728, 990527, 4787815, -2421825, -911607, -7405061, 6783901, -5801427, --1882269, 8519605, -10300942, 2967286, -1877438, 26307, -4857071, -6641093, -2717104, 11583527, --7933879, -3018288, 1859184, 2461553, 319438, -7020661, 5331665, -3146601, -6074695, -172872, --11123965, 16242493, -7189239, 3292093, 3571802, -3339874, 5619428, -9660455, -7893613, 9891310, --4871567, -6700149, 6611566, -439697, 1835562, -4464082, 1166621, -984621, 3017215, -3559454, --2800319, 3754338, -2188286, -2592013, -709743, 2373506, -1551557, -209380, -1261110, 638876, -2245194, -3157875, -3199214, 9313637, -2747705, -3318399, 2907156, -1054951, 2702608, -7451232, -497679, -1227287, -232465, -1962263, 8722542, 132607, -7676181, 2534031, 849330, -309775, -67646, 3416647, -2188286, -2183991, -970126, -1966021, -994822, 989990, -2396055, -27917, -728534, -301721, -26739392, -43719544, 19992536, 150777504, 23133230, 75307960, -17661980, -76678048, --27823872, -74729208, -49151068, -15658377, -8187819, 3504157, 44393320, 53282828, 74076376, 73485280, -23393076, -29124174, -47028820, -86385216, -66111356, -34844532, -13527536, -8881455, 26677116, 44685376, -34590592, 47084652, 45702212, 16784732, 14826764, 5535139, -33415920, -12473659, -28729574, -49810348, --30063160, -29122026, -43118788, -9237938, 20173998, 15265924, 44015900, 57611616, 30034706, 38356744, -28922310, -4117800, -1243930, -2764348, -31003758, -38262788, -34055332, -51375324, -43698072, -15517180, --2554432, 6142877, 35617628, 32708324, 31599686, 39724152, 29722784, 10146860, 18787798, 10229538, --11570105, -5587753, -21398600, -45119704, -27084064, -25632364, -35471600, -17167522, -11361799, -20021526, -16876538, 31833224, 36849744, 58693948, 55381992, 23298586, 13754633, -849330, -20066088, -23904178, --24569898, -35863512, -32764158, -30173756, -27583354, -17323750, -6845104, -140123, 13436268, 31406948, -39256000, 36418100, 44050260, 30415348, 14788109, 6150393, -5115843, -22700512, -25531970, -35694400, --46444704, -46923592, -37205692, -31182536, -4738960, 18469970, 41553272, 55597276, 60287920, 46454904, -30328374, 13320841, -3651259, -23476828, -34227132, -46366320, -45914812, -32997160, -21588116, -6720550, -8288213, 16398722, 21910238, 27285928, 23644868, 14607184, 12456479, 4246112, -368830, -4604205, --5756867, -7623030, -7311645, -10666014, -8605504, -6968048, -5687611, -5888400, -3838090, -3960497, --1025960, 1182190, 5236102, 6003291, 8458401, 8270497, 7847979, 2549600, 786516, -1102196, -179852, -684510, 0, 0, 0, 0, 0, 0, }, +3112241, -2801929, -496069, 4461398, 1465121, -2306934, 481036, -2548526, -2270427, -1824287, +-3999152, -1387811, 2437931, -195421, 1350230, -672699, -1133871, -1107028, -485868, 3362423, +-2123861, 211527, -151934, 148713, 2667712, -85899, 1835025, 5850819, 4560719, 4588636, +2376728, 1043140, -740345, -5404680, 2219961, -2015413, 3468186, 1233193, -1835562, 1635309, +-2414309, -4684199, -1444720, -1808718, -4438849, 192200, -545461, -631360, -2079301, 286152, +4632659, 2057826, 3148748, -45634, 1936493, -1807108, -130460, 2426657, -2001455, 1626719, +-2481417, -2637110, 268972, 5457830, 3593277, 2098092, -1060857, 915902, 585189, 319975, +-984084, -2090039, -3202435, -2318209, 73014, -1984275, -993748, -2136746, 709743, 330712, +1108102, -627065, 911607, 1292785, 1059783, 142808, 665720, -487479, -533650, -12885, +-1333051, 1409286, 1153736, -130460, 1457605, 433792, 293668, -653909, -414464, -836982, +280247, 475668, -15032, -260919, 503585, -318364, -1236951, -345745, -827855, -45634, +242666, 309775, -1295470, 236223, 1999844, 1028108, -3454764, 8158827, -177167, 491774, +-865436, -4310537, 3183645, -2250026, -2155537, -5023501, -3871913, -1630477, 3114388, 4479651, +-911070, 2647847, -1035624, 4859219, 5042829, -10080288, 1840394, 42950, -992137, 3403762, +5356898, -1660542, -787590, 102542, -336081, -2566780, 2101313, -2587718, -2046552, -215822, +2679523, -1527398, -5674726, -2526515, -3860639, 443455, 333934, -5039071, -606664, -2203855, +1034013, -158377, -769873, 1227824, -1687922, 1698123, -2708514, 2636573, 3860639, 5937793, +2457258, -2608119, 2118493, 2485712, -948114, -6742025, 425739, 3496104, -2719251, 2011655, +-3918621, -54224, -2506650, -6849936, -2099702, -3587372, 1717450, 2531346, -2324651, 1079111, +-1102733, 3216931, 235686, 1879585, 2686502, -1164473, 1097364, 536334, 1122060, 2316598, +-566399, 775778, 2889439, 1642825, 369367, 1725503, 287226, 739271, -147640, -51540, +-1607928, 830539, 971736, 1307281, 872952, 284005, 395674, 28991, 471373, -221728, +-474594, -137976, 1038308, 887448, 243203, 793495, 156229, 919660, 766652, 6669548, +1837172, -9086540, 3231426, 4647155, 1708860, -798327, 2374043, -5713917, 811212, 2516851, +-1272384, 2433099, -384936, 2966749, 722628, -3862249, 2422362, 3506304, 3479461, -1024350, +1663226, 1888175, 1321239, -10289131, 1443646, -4387309, -1294396, -1468342, 2399813, 1097901, +-8386461, -3034931, -1879585, -1606855, 3409130, -3138011, -5869610, 1432909, 2718714, 1679869, +-5840619, -2761127, 1868848, -5527623, -447213, -6106370, 892279, 2971044, -3124589, -966368, +3482145, 4422206, -10355166, -782221, -2878702, 3118683, 1280974, 499290, 892279, -2932389, +2633352, 2262911, -8042863, 6157910, -831613, 1501628, -4105989, -1734093, -3473555, -451508, +899796, -3238405, -4472135, 3946538, -1444720, 1614371, -226560, -828392, 1145146, 1326071, +-1635309, -4154307, 2296734, 2064806, 525597, 945967, -135291, 289910, 684510, -55298, +681826, 456877, -98784, 1566053, 220654, 1193464, 1441498, 57982, 2034741, -80531, +392453, 524523, 907849, 708670, 1008780, -1553168, 686121, -720481, 300648, 650688, +488016, 1173600, -421444, -389768, -4362076, -4093104, -3404299, -2157147, 6780680, -2368675, +921271, -5509370, 5839545, 392453, -3964792, -1041530, 3381213, -7055021, 2390686, -2080912, +1585917, 1140851, -3235184, -2291365, -8397735, -2257542, -9457518, 1225676, 2126009, -1012539, +-1290101, -862215, 1422708, -3697967, -6743099, -3129958, -2483565, -1038845, 2469606, -1551020, +4007205, 1783485, 3069828, -4175245, -240518, -205622, -3498251, 971200, 2747169, -272194, +-1747515, -4093104, -3792456, 2551211, 3808562, -122943, 7546795, 5990943, -5415954, -1376537, +8053, -5708549, -6538014, 9872519, -167504, 271657, 3089692, -6273337, -2070711, -4064113, +9742060, 2634426, 499290, -7762617, -6171331, 828929, -2547453, 5037997, -2592013, -55298, +1374390, -3046743, 1098438, 3040837, -4574677, 50466, -7290707, 795106, 2734821, -2103997, +1057099, 875100, 3564823, -512175, 566936, -705448, -144955, 1546188, 1582159, 1484448, +-1106491, 474594, -77846, 666257, 42950, 652835, -1069984, 2298881, 13959, 659278, +341987, 725850, 534187, 664109, -619012, -596464, -525060, 506806, 1537061, 1817308, +317291, 824097, -1504312, -11388643, 5701569, 3231426, 5813775, -3117073, 3187940, 3334505, +5974837, 1418413, -11367168, 2843805, 493384, 4523675, 8256538, 438087, 3587908, 3144453, +-6805913, 2396055, 634045, 947040, -1847373, -942208, 4228932, 2804614, 175020, -4161823, +-47245, -1983738, -2153389, 6816113, 3150359, -281857, -909459, -8228084, -7058779, -8083129, +2154463, 2189897, -8380018, 599148, 570157, -8302709, 524523, 1286880, -1108638, 9551470, +-1175210, -4688494, -1178969, 5486821, -452045, -8501888, 9243843, 4792110, -5879274, 4501663, +897111, 867583, -151934, 521839, -2283312, -4268124, -4041564, 7391102, -490163, -2154463, +-343061, 5316633, -4922033, -8691940, 311922, 1983201, 1631014, -7597261, -3935801, 2929168, +-683437, 4251481, 1619740, -1347009, -1270237, -1158567, -603980, 150324, 6752763, 3937411, +2441689, 2163053, 2610266, 3934190, -1878511, -625992, -2129767, -646929, 748398, 195958, +-1178969, -1900523, 1984812, 304406, 894964, -31139, -1214402, 435402, 1048509, -2401424, +-408559, 1924145, 415538, 114354, -883153, -264141, -574452, -1042603, 257161, 975494, +777926, -703301, 793495, 68719, 3410204, 13167296, 3894462, 10564009, -11620571, 463320, +-5748277, 202400, 3829500, 4457639, -5981816, 2621004, -3474629, -3038689, -4165045, -6720550, +-1010928, -15852187, -173409, 5257040, -722091, -1064078, 1722819, -8309688, 2908230, -7924215, +-2528662, 8192650, 1634772, 2837900, 172336, 2421825, 6951942, 6324340, 12128451, 6326487, +-9210020, -751082, 10214506, -1418413, -7511898, -1124208, 928787, -3408057, 6837588, 5097590, +-5912560, -1706176, 6556805, 7015829, -2513093, -4434554, 11077794, -4558034, -14979235, -10093710, +3277597, -15032922, -318901, -4489315, 55298, -1381369, -4224637, 5652714, 1593970, -1456531, +-4936528, 4320200, -2964601, 7995619, 5434744, -2164127, -5307506, 1152662, 2069637, 759136, +282394, 1903207, -1118302, -5849746, -1715839, 8185134, -961536, -3304977, -899259, -1698660, +-4237522, -4083977, -2289755, -1953136, 469762, -20401, 4076998, -339302, -1490354, 592169, +1449015, -965294, 840203, -1389959, 2767570, -71404, 1694365, 273267, -2690260, -253403, +-304406, -2793339, -772557, -1692754, 1267015, 101469, -446677, 984084, 420370, -263604, +488553, -3126199, 670552, 915365, -12826920, 6088653, -1129040, 3261491, 4254165, 6956774, +1559073, -6072010, 8287140, -3058017, 3690451, -3678103, 3075734, -534187, -15067819, -3092377, +-2575370, -1743757, 1035087, -3588982, -2485176, 2045478, 3310883, 1172526, 8144869, 3788161, +-7866233, -547608, 20938, -4399121, 9370008, -5567888, -5410585, 9895605, 10391137, -1256278, +-117575, -6430103, 2336462, 1442035, -3367791, 1760937, 6437619, 4010426, 7740605, -1887101, +-6070937, 3816615, 907312, 1896228, -7237020, -3714073, -4250407, 1744831, 4148402, 1555315, +1112933, 7471633, 8913131, 1367947, -4231080, 5109401, 4157528, -6242735, 880468, 1127429, +-715112, 771484, -140123, 5357435, -578210, -4117263, 2121714, 7050189, 3120294, 4154844, +8691940, -5887327, 1061394, -1978906, 8248485, 4759898, 8834211, -4214974, -1127429, 1505386, +-3135863, 496069, 872415, -965294, 10737, 2083059, 2366527, -849867, 1294933, 954020, +3068217, 2739652, -359167, -192200, -1374390, 428423, -1384053, 768262, -2440078, 2459406, +-35433, -901406, -31675, -167504, 102542, -824634, -1897839, 2733210, -330712, 484794, +-3004867, -2432562, -658741, 2627983, -267362, -237297, 260919, -259309, 5373004, -11148124, +-6640557, 4408247, -2584497, -10414222, 5309654, -5457830, -4728222, 6688338, -2012729, -2238752, +-1641751, 1711545, 4989679, 2560874, 2695092, 2729452, -4113505, -2492155, -838592, 6024229, +3135863, -10641855, 3406983, 3294777, -4431333, 9976672, 9194988, 4917201, 380105, -3648038, +-2326799, 519691, -3091303, -3754338, -6128919, 877247, -7000797, 5084168, 1987496, 45634, +1139777, 2675228, 2356863, 5443871, 8549669, -3246995, -13471165, -2370822, -9164386, 3151969, +1304060, -12239583, 4466229, -5148592, 15381888, 5077188, -9635222, -349503, 9799505, 5073430, +-7970923, -4786204, 10251550, 5848672, -7057705, 8708046, -7243999, -9621264, 1523103, -14558329, +8813273, 9420474, -2126546, -8771397, -1530082, 3419868, 1819992, 1445793, 923418, 6744710, +-9464497, 3039763, 10632192, 156766, 409633, -9349607, 4687420, 2585034, -8566849, -2171106, +-4301947, -2082522, 386547, 2671470, 2204392, 281857, -2544231, 239981, -2728915, 1126355, +1703491, -379031, -1293859, -953483, 1747515, 512712, -493384, -1480153, -2721399, -344134, +-2655364, 5375689, -5012227, -43487, -483184, 2041720, 1452236, -2949569, 944893, -936303, +4651987, -610959, 1356136, 101469, -2585034, -296353, 2948495, -31675, -8721468, -6441914, +206158, -10472204, 31139, -24622510, -7750269, -2830920, -13455059, -4712116, -2818036, -5899675, +-4560719, 3211562, -6485938, -12313134, 3278671, 7727720, -12577812, -3476776, 3875671, 6314139, +10849087, 6927246, 6390375, 7011534, 2534031, 12426414, -7395397, -3164317, 2630131, -6148246, +2338610, 3522410, 6503654, 855772, 10635413, 2235531, 2621004, 7344931, -3246995, -6296959, +111132, -9654013, -6176163, -11143293, -469225, -512175, -14653355, 5283347, -6640557, 2998961, +-13841069, 1656784, -10475962, 15626165, 781147, -13928042, 16709570, 20473572, 5743445, -6862821, +-5090610, 5312338, -1789391, -676457, 6041945, -9778030, 6362457, -10099079, 5338645, -4027606, +-5698885, 2405182, 5361193, -2921652, -321586, 6299644, 1640678, -3115999, 3535295, -1563905, +-5791764, 752693, 5383742, -1045288, -2148021, 2136746, 1554778, 4388920, 864899, 141197, +1879048, -1485522, 3049964, 764504, 2522757, 867583, 2000381, 1619740, 1628330, 1311576, +-1900523, 2105071, -2550674, -2362769, 210453, 1376000, 436476, 681826, 1501628, 991064, +97711, -835908, -1924682, 6979, -2022930, 5326297, -2674691, 4798016, 7240241, 1066226, +6681896, -3778498, 10444824, -8122320, -7565585, -19903952, -4425427, -10321343, -24285356, 6091338, +-14005888, -8505109, -11294153, 3097745, -21879638, 5848672, 1773822, -4203163, -500364, -6293738, +-2237141, 5241471, -7469485, -5316633, 270046, 3994320, -6537477, -509491, 7459285, -12006044, +-2798708, 7000260, -6685117, -411243, 39192, -1902134, 10120554, -8875013, 6000606, -4039417, +8227547, 8702141, -8883066, -11833709, 11045582, -1199370, 2386928, 2891587, 970663, -2541547, +6209449, -3380676, -13707925, 3568581, 2762201, -11855183, -1349694, -4243965, 7099581, 8672613, +4269198, 1462436, -3437585, -8421894, 8593156, 5330055, 7683160, -528818, -12164958, -2837363, +-1856500, -5296769, -3018288, -1413044, 3482145, 5412196, -4714264, -3980898, -12087112, -5721434, +2303176, 4983773, 1320166, -1015223, 5500780, 5217312, 3092377, 6404870, -1989107, 5026186, +2251100, 3442953, 554588, 57982, -3350075, -2523830, -633508, 1633698, -814970, -2808909, +-3570729, -92342, -607738, 772020, -2436320, 599148, -2900714, 935229, 4786741, 1123671, +-2780455, -2794413, 6098854, 3526705, -781147, -326954, -7769059, -831613, -114354, -6511171, +144418, -2611340, -2056753, 1610613, 2017024, 545998, -776315, -5984500, 29561186, 17069810, +1137630, -9383967, -22384296, -2729452, 10408316, -4902169, -9043591, -16783658, -980863, -3622805, +542240, -5758478, 5382668, -95026, 14612016, 5792301, -6157910, -435939, -2657511, 1105954, +-3063922, 3025268, 9041980, -10644003, 2019708, -6416145, 4189204, -4571993, -7797513, -15166066, +-1264331, 8673150, 2869575, -1899449, 3162170, -1129576, 8237748, 13089450, -4609037, -2989834, +-15209553, -16451335, 4507032, 2435247, -6995428, -6019397, -13700409, -9394167, 5370857, -1776506, +-15569, 690953, -1098975, 6237903, 3529926, -11249593, 429497, -10252624, -933082, -5532455, +-3224447, 10880226, 22396106, 36958732, 1351304, 11886859, -11194295, -14207752, -20002200, -1054415, +-110059, 4044786, 4188130, -2731599, -25273736, 10472741, -4330938, -3484292, 1546188, -6616934, +719944, -3598109, -10321343, 128849, -4155918, 97174, 984621, 394063, 7257958, 1060320, +791348, -392453, 261456, -304943, 3093987, 6882685, 1995012, -242666, 1431835, 6241125, +130997, 80531, 2309082, -2064269, 736050, -5702106, 1912871, 2988760, -5400385, 5487895, +293132, 481036, -1625108, -5961952, -1959579, 2678986, -8590, -599685, -1525787, 214748, +10821707, 18009872, -8901320, 22549, 3475702, -14709726, 148176, -9501541, -9184788, 13834627, +-4063576, -3488050, -7430831, 15889232, 13985487, -16643, 22969486, 2570001, 7181186, 5039608, +-6389838, -7511898, -11940009, -6308233, 2809446, 96637, 10298795, 785442, -1112933, -1890323, +7279970, -10524817, -25669946, -9019968, 7582765, 2357400, -2100776, -7669201, 464930, -12373264, +-1847910, -11274826, -769873, -1429150, -7923141, 7582228, 3784403, 14419816, -11920145, 22348862, +6012954, -4373351, -7909719, -4087198, 3531537, 12882218, -3964255, 7361037, -11395085, 9191230, +-10347650, -11676405, 11497627, -16689706, 10930155, 9153649, 17735530, -18076444, 13725642, -1737314, +12236899, 4751308, -18965502, -3345243, -4452271, 5264020, -10061498, 29840360, -1465121, -10572062, +4240744, 13775571, 9380209, 6437082, 7131793, -971736, 3399467, -1251983, -3955128, -2550137, +1056025, -163746, -3923453, 1095754, -1150514, -6090801, -1255741, -2347200, 2551748, 3161096, +1743757, -871342, 5900212, -993211, 3267396, 1269163, 4176319, 1531156, -2103460, -2662880, +719944, -352724, 2881386, -1206349, 280784, 2400887, -1473174, 4140885, -1971927, -2352032, +1174137, -1775432, 4374961, 1535988, -1273458, 1286343, -12487617, -16750909, -34305516, -10536629, +-20145544, 5608154, -920734, -6870337, -9979893, -9505836, -8588324, -9312026, -9118752, 943819, +-7436199, -1351304, -16156593, -24792162, 30344480, -9476308, 16436303, -3162170, 4233227, 5221607, +8852464, 5827734, -1565516, -520228, -13124883, -2988224, -3138547, -8839043, -13766444, 5341866, +-1574106, 19401978, -13478681, 327491, 26851598, -6509023, -22362284, -7237020, 856309, -10156524, +15695421, 7192997, -8670465, 6344204, 8414378, -5245766, -209380, 4208531, 10476499, -432181, +-10397042, -10236518, 12543452, 8955544, -6656663, -14388140, 9108552, 10546829, -9501541, -12954158, +8996883, -16416439, 31271120, 6686727, -2611340, 1225139, 7607998, 1675037, -5570573, 452045, +2193655, 11191611, -7439420, 2194192, -22317724, -20106352, -2304250, 1135482, -2252174, -9792525, +7016903, 16489990, -530428, 4176856, -1624571, 3470871, 4933844, 5903433, -6473590, 7110319, +-3393024, -1981054, 4680978, 8766565, -2688113, -8948027, 2449742, -896038, 1399623, -886911, +-4841502, -1403381, -5003637, -3131031, -6157373, 6165426, 6309844, -3923990, -99321, 7603166, +2346663, -3347390, 1515587, 9543417, 6239514, 6855305, 6903086, 6092948, 2197950, 8734890, +4558034, 3582003, 3173444, 8264591, -12912819, 27917, 4774393, 3672197, -8462696, 20390358, +14376866, 29351270, 16209743, 10930155, 4247186, -25670482, -2120103, 3500935, -15137612, -4026532, +29021094, 2232309, -16850768, -16598975, 15022185, -22873922, -5960878, 1009854, 6100464, 2633352, +-4394826, 7433515, -10364830, -13422, -2128156, -6504191, -1474784, -4526896, -14984067, 7875360, +-12996034, 7596724, 6717329, 8841727, 1547262, 5860483, -5473936, 24154896, 3175592, -25650618, +-22624278, 2070174, 10047002, 19632832, -6554657, -15409269, -6914361, -2041720, 2124935, 11528766, +2413772, -9096204, 26466126, -32569810, -5527086, 6164889, -22767084, -11737609, -6074695, 3346853, +-36829344, -17388712, 26169772, -9970230, 7552163, -8551280, -29772714, -11227581, 14141180, -4387846, +5424544, 9069897, 18606336, -8950175, 1921461, -5622649, 11589969, 5298916, 4901632, 721018, +-624381, 274341, 10065793, 5209259, 5884642, -1628866, -399432, 3738232, -7030862, -6334540, +2553895, 11783243, 5375152, 4539244, -11745662, 6739878, 21447456, -177704, -431107, -8381629, +5661304, 882616, -5242008, -6828998, 695248, 6319508, 7296613, 5337571, -6922951, 4398584, +-4725001, 5002027, -8868571, -4871567, -1991254, -4671314, -5870684, -1844152, -14313515, -13485124, +1920387, -1107028, -2488934, 4602595, -456340, -1453846, -176094, 4552129, 15224585, -6714645, +-47055124, -12598213, 2956548, 12864501, 13244069, 11370389, 12129525, 20935818, 38648264, -22345642, +16353088, -5941551, -416612, -6021544, -31228708, -23920820, -4211753, -1797444, 7027640, 11979738, +16422881, -5454609, -279173, -8690329, 322123, -1857573, 90194, 16304233, 9166534, 5197448, +13064754, 14814953, -26378078, 12836047, -15230491, -19996294, -5570036, 12315819, 3882651, -13622026, +4612258, 1249299, 9717364, -1263257, -25640954, -18891950, -21227876, -21712134, 3016678, 17328046, +-3098282, 63722284, -41689100, -31935766, 19498614, -5999533, -12657269, -4683662, -3318399, 350040, +-39058968, 3789772, -2707440, 5043366, 30169998, -2446521, 10650982, 11247982, 14461155, 48959944, +-18165564, 62001612, 17482128, -2039573, 8341364, 3234110, -25482040, -23046258, -281857, -5914707, +3328600, 9288404, 7787850, -4787278, -21836150, -18455474, 7372312, -12568685, 8079371, 8329552, +19583440, 18516140, 17441862, 2996277, 6175626, -635118, -708670, 12379169, -1960653, -1504312, +4236449, -18851148, -4238596, 7406134, 147103, -2260764, 11930882, 4058744, -17029546, 11461120, +-9448928, -13822279, -7318625, -4562329, 3507915, 5179194, 6029061, -7575249, 8638253, 3150896, +5626944, 1960116, 7354595, -3380139, 4527970, -11554536, -2121177, -28176060, 10267119, 44988708, +1320703, 46948288, 24839944, -2930242, -18136036, 52952116, 7986492, -9029632, 6885907, -12190728, +-3537443, -1934346, -3238942, 6570763, 14823543, 10177999, 1971927, 6665253, -10634339, -10448582, +3232500, -3299072, 17450988, 18747532, 12048994, -5033702, 1203128, -23171348, -14421426, -4457103, +-15774878, -25062744, -14805289, 11646878, -14442364, -44069584, -20282446, 13182328, -17721572, -12729209, +627602, -3457449, 20635708, 30104500, 39873404, -21364242, 11336029, -555125, 1308891, -8840116, +-26374320, -52894668, -34653408, 17996450, -35115116, -18692234, 9578851, 17561048, -13007845, 19835770, +57707716, 11862163, 11181410, -43912820, -58496380, -12962748, -18212272, -31508954, -8913668, -26374858, +18611704, 10294500, 52310016, 21264384, -6063957, -10886668, -18177912, 12063489, 23766202, 47082504, +33141042, -23123568, -47892108, -23701240, -15288473, -28656558, -5301064, 23827942, 11563126, 29544544, +1261647, 20906290, 8438000, -7248831, -8973260, -10606422, 5742372, 12631499, 3195993, 16531866, +21023328, 12371116, 14974940, 6548215, 22702660, 19623168, 771484, -806917, 9917616, 22185654, +-2281702, -6441914, -3455301, 18853296, 5843840, 502511, -5806259, 11621645, 9162776, -3387656, +7587597, 9096741, 4638028, -2535641, 2007897, 6371047, 750546, -11464341, 24106040, 47805132, +-25517474, 36192080, 29050622, -4895726, -7565048, -16487306, 4835060, 32249298, 23928874, 37853696, +-16711181, -7744900, -7932268, -2594697, -10410464, 9717900, -12748537, 27700928, 11687143, -46186468, +-20023674, 124017, 6699612, 19556060, -9680319, -17644800, 4948876, 5144834, -7592429, -8851391, +4945655, -13326747, -20222854, -9348533, 43060804, 17655536, 7111392, -22226992, -7319698, -18900004, +10671920, 20727512, 6845104, 1131187, 12182138, -7618198, 27401354, 15426449, 1425929, 8919036, +-1226213, 54475216, 11096585, -23549306, 8697846, 9216463, 5246303, 12151536, 519691, -22478786, +26173530, 5580773, 4327180, 10118406, 4609037, -260919, -16540993, 18640694, 21296596, 10900627, +61481920, 43639016, -23853174, -47808356, -33501282, -3474629, 3970161, -5061082, -40652940, -20271172, +-14524506, -16847010, -16764331, 14871324, 11636140, -4423280, 2367601, -3791919, -22822920, 6388227, +-4312684, -1391033, -23375896, -22503482, -4140349, 9360344, 10995653, 1252520, 11734388, 4954245, +14834817, 2059974, 2894271, -25469156, -15162308, 10714870, 2871723, -7107634, 13238700, 5574868, +2313377, -12271795, 11760157, 16168404, 11371463, 11730093, 14843944, -3320010, 16457241, 32993402, +26022134, 5866926, 3605088, -4228396, -5755256, -16967806, -21448530, 5641977, -2357937, -8938901, +-55867324, -7334731, 13858786, 15622407, -12870943, 19532438, 5946919, -8077223, -21052320, 4483946, +-5286031, -31256624, -10151692, -11220602, 2017561, -42992084, -33784212, -5919002, 20724290, -3045669, +-6823093, -26112328, 161061, 21940840, 683437, -15621870, -9255118, -3562139, -9094056, 5252745, +6961068, -22181896, -24854438, 3543885, -1261110, 4990215, 39902932, -24944096, -2987687, -1846299, +-39735964, -12149926, -29194504, -4817880, -2856153, 27504970, 30911954, 38056632, 10560251, 6167036, +-15010911, -33942052, 918049, 13297219, -12096239, 46783468, 109790640, 105502112, 15014669, -68137512, +-62648540, -24790014, -39560408, 129475008, 79903032, 50057308, 65168612, -1476395, -35230008, -92965640, +-59742460, -23409182, -5399848, 36839544, 74978856, 66718560, -8426726, -55988120, -34078956, -50755776, +-39982388, 6535330, 54178328, 79152488, 30423938, -4829691, 4016331, -31077310, -36588828, -36477156, +12129525, 5071283, 8957691, 31439160, 16670379, -3815005, -20917028, -18349174, -12128451, -28679644, +-5996848, 11814918, -10852845, 123480, -4227859, 18875844, 14304389, -26737246, -16609712, -53397180, +-42813308, -38366944, 23790898, 42049340, 15903190, 10401337, -15835544, -28012314, -83099024, -61882964, +-37087580, 6427956, 22641456, 14055280, 3091303, -31093416, -25740812, -48826260, -80191872, -32101122, +8966818, 22689776, 40568112, 18256296, -338229, -23165442, -8599598, -15602542, 28831578, -28202366, +32521492, 6686191, 3249680, -51775292, -17261474, 46268072, -31066572, 13106630, -320512, -9896678, +13778255, 5738613, 24099062, 39135204, -23012972, -29812978, 7601019, -17955648, 23886460, -31166968, +-16982838, -19520626, 2020245, -4911295, -18684718, 8830453, 36524400, -28394028, -32298154, -23124104, +-7723425, -6424198, 49148384, 3512210, -1753957, -48176112, -12821551, 5047124, 41252088, 18508624, +-7625178, -69670272, -50451908, 48051556, 51667384, 50630148, -23201414, -116545552, -23204634, 52867288, +43682500, 6990060, -13635984, 7711614, -47302084, -27880780, 15904264, -13654775, 14395657, -8419747, +1917703, 49733036, -36817532, -19163608, 41056668, 32525788, 61951684, 26458610, -82691544, 26069378, +89352496, 19387482, 45256072, 11579232, -25060598, -566399, 56872884, 39257612, 75527000, -99027984, +13606456, -472983, -11203959, 39507256, 538482, -51380156, 4413079, -2063732, -10769630, 7809861, +-413391, -31352724, 27399206, -12828530, -992137, 1617055, -7721278, 1600412, 3895535, -8533026, +-11737072, -16968342, -25524454, 25059524, -1545115, 9383967, 20816632, -23858544, 11145440, -627602, +-44217764, 463856, 13217225, 47602196, -12948790, -65412888, -8260833, 31721554, 7872138, 28103044, +-22303766, -17915382, -24532854, 11478837, -4873714, 17412334, -25961466, 13110925, 5688684, 8169565, +-28858960, 3510062, 5194226, 20543366, -8775155, 4934381, -17972828, 7087770, -11120744, 17869748, +-4068945, 14529874, -5345087, 6612639, -58281096, 6585796, 10422812, 5555004, 57461832, 9678709, +-4313221, -36686536, -6272263, -3611531, -8596377, -368830, -6944425, 14698452, 6860137, -10818486, +-1853815, 22813792, 70330, -1289027, 2423435, -5717675, -9794673, 12799003, 11320460, 8586713, +-14267881, 7493108, 21346524, 8364986, -1227287, 13762686, -2508261, -16346646, 4319664, 4133369, +-13163001, -14312979, 14249091, 13868449, -13700946, 8770323, 8475044, -129923, -4991826, 92879, +10832444, -607738, -12103218, 6288906, 7379291, -22486302, 5745593, 16611323, 5434208, -14623290, +2273648, 10306311, -18937048, 5134097, 8869107, 3736622, -4928475, -18061948, 21246130, -23011362, +-2035815, 22126060, 355409, -3826816, 483184, -20813412, 9203041, -316217, 11878269, 22002580, +-9967008, -1594507, -12728672, 16825534, -3534221, -1891933, 17254494, -22550726, -9918690, 12503724, +10204305, 4470524, -18335216, 6325413, -4035659, -1162862, 8781061, 6670084, 1250372, -4677220, +-2355253, 839666, 4964446, -16011638, 11648488, 2367601, -2232846, 4505421, -2106682, 10110890, +-15060303, -2738579, 301185, 874563, 1492501, 6955163, 4602058, -25573310, 13508209, -2741263, +-2981781, -1074279, 5192079, 6979859, -6344741, -2567317, 11883638, -10184978, -1315871, -7793755, +5645735, 53852448, 4723391, -6572374, -18009334, -11969537, 6309307, -8026220, 6944962, -10712722, +-853088, 8532489, -4827543, 4011500, 3929358, -14929843, 4122095, -4890894, -3252901, -12305081, +3469797, -3486440, -7762617, -3620121, 5943161, -5372467, -5320928, 7589744, -8436390, 4266513, +7215545, -14959908, 14740865, -3736085, -17600240, 9335111, 9284109, -8208756, 2848637, 5322538, +-7437810, -6660421, 39728, 990527, 4787815, -2421825, -911607, -7405061, 6783901, -5801427, +-1882269, 8519605, -10300942, 2967286, -1877438, 26307, -4857071, -6641093, -2717104, 11583527, +-7933879, -3018288, 1859184, 2461553, 319438, -7020661, 5331665, -3146601, -6074695, -172872, +-11123965, 16242493, -7189239, 3292093, 3571802, -3339874, 5619428, -9660455, -7893613, 9891310, +-4871567, -6700149, 6611566, -439697, 1835562, -4464082, 1166621, -984621, 3017215, -3559454, +-2800319, 3754338, -2188286, -2592013, -709743, 2373506, -1551557, -209380, -1261110, 638876, +2245194, -3157875, -3199214, 9313637, -2747705, -3318399, 2907156, -1054951, 2702608, -7451232, +497679, -1227287, -232465, -1962263, 8722542, 132607, -7676181, 2534031, 849330, -309775, +67646, 3416647, -2188286, -2183991, -970126, -1966021, -994822, 989990, -2396055, -27917, +728534, -301721, -26739392, -43719544, 19992536, 150777504, 23133230, 75307960, -17661980, -76678048, +-27823872, -74729208, -49151068, -15658377, -8187819, 3504157, 44393320, 53282828, 74076376, 73485280, +23393076, -29124174, -47028820, -86385216, -66111356, -34844532, -13527536, -8881455, 26677116, 44685376, +34590592, 47084652, 45702212, 16784732, 14826764, 5535139, -33415920, -12473659, -28729574, -49810348, +-30063160, -29122026, -43118788, -9237938, 20173998, 15265924, 44015900, 57611616, 30034706, 38356744, +28922310, -4117800, -1243930, -2764348, -31003758, -38262788, -34055332, -51375324, -43698072, -15517180, +-2554432, 6142877, 35617628, 32708324, 31599686, 39724152, 29722784, 10146860, 18787798, 10229538, +-11570105, -5587753, -21398600, -45119704, -27084064, -25632364, -35471600, -17167522, -11361799, -20021526, +16876538, 31833224, 36849744, 58693948, 55381992, 23298586, 13754633, -849330, -20066088, -23904178, +-24569898, -35863512, -32764158, -30173756, -27583354, -17323750, -6845104, -140123, 13436268, 31406948, +39256000, 36418100, 44050260, 30415348, 14788109, 6150393, -5115843, -22700512, -25531970, -35694400, +-46444704, -46923592, -37205692, -31182536, -4738960, 18469970, 41553272, 55597276, 60287920, 46454904, +30328374, 13320841, -3651259, -23476828, -34227132, -46366320, -45914812, -32997160, -21588116, -6720550, +8288213, 16398722, 21910238, 27285928, 23644868, 14607184, 12456479, 4246112, -368830, -4604205, +-5756867, -7623030, -7311645, -10666014, -8605504, -6968048, -5687611, -5888400, -3838090, -3960497, +-1025960, 1182190, 5236102, 6003291, 8458401, 8270497, 7847979, 2549600, 786516, -1102196, +179852, -684510, 0, 0, 0, 0, 0, 0, }, { -1141388, -6170258, -3467112, 1032940, -5153961, 1443109, 580357, 7864622, -4709432, 15569, -2477123, -3941706, 4025458, -2567317, -488016, -2206540, -1264868, -2579128, -3210488, 2369748, 775778, --2099702, 4391604, 3998078, 6833830, -201863, 2589329, 1359357, -112206, -6172405, 1607928, -2572149, -2434710, 1545115, -1794223, -2091649, -3385508, 1760937, 4363687, 453656, 5091684, --2073932, -430034, 5135171, 2688650, 418759, -59593, 4878546, 7326141, -5439039, 1224603, --1874216, -839129, -8468602, -3003256, 3433290, -2627446, 2381559, 1102196, -1236951, -2050310, -1207960, -697932, 2652679, 1440425, 1241246, 1360431, -4389994, 173946, -2105071, 2714419, -4500052, 3156801, -628139, 4871567, 43487, 2071785, -632434, -1071058, 273267, 2448668, -2824478, -908922, -1904818, -3950296, -496606, -1736241, -1859721, -1045288, -1579474, -1129576, --1862405, -972810, -29528, -13422, 61203, 1574642, -1063004, 829466, -371515, -747861, -62814, 728534, 282931, 583042, 22012, -511101, 32212, 744640, 265214, -1062468, --811749, -27380, 35433, 450972, 89657, 815507, -1052804, 3673271, -4502737, -4709969, -178241, -6343130, 1164473, -1997160, 3082713, -1699196, -5031554, 572304, 4932770, -753767, -170188, 6868190, 8632884, -3725347, -3961034, -1125818, -6417218, 2741800, 586263, 1599875, --2256469, 3426310, -4471061, -814433, 3062312, -2516314, -916976, 469225, 5563057, 358093, -4025458, -5304822, 5212480, -568009, 754304, 3374234, -2910914, 2815351, -1321239, -1347009, -2425583, 3199751, -541166, 1830193, -7035157, 4255239, 4130685, -7458211, -6564321, -1854352, --5443871, -1525787, 2077690, 1354525, 1983738, 114354, -1813550, 4589710, -1535988, 168041, --1833414, 1081258, -2777770, 3905199, 958851, -3004867, -1678259, -1189706, -1739999, -1541356, -3956739, 5181878, -244813, -1056562, 203474, 1659468, -1075889, 3620121, 2057826, -1479616, --275952, -924492, 1576253, -1517734, -40265, -400506, 242666, 573378, -86436, -445066, -984621, -760209, -249645, 203474, 658204, 51540, -1311039, -907312, 257161, -865973, --722091, 868657, -456877, -1606855, -1030792, -1292785, -339302, 204548, 1549410, 11094974, -2119566, -4102768, 5143760, 654983, -3492345, 10134512, -6800544, -9741523, -5709086, -5906654, --1988570, 2882460, 3555159, -3366718, 5116380, -6419366, -3500398, -776315, 2128156, 1601486, --1955821, -2522757, 5724118, 1102196, -390305, -3208878, 4272956, -3125126, -723165, -6442, --362388, -448824, 1663763, 889058, -881542, 3568044, -1682554, 2175401, -153545, -5820218, --2283849, -2324651, 6189585, -3431142, -4172561, -7558606, -8832063, -1613834, 449361, -3526705, -6702297, 905164, 3600256, -2706903, 5801427, 2474438, -3364033, 9355513, -4239133, -4529580, -724239, 5864241, 8596377, 6087580, 2015413, -2994129, -6765647, 2695629, -83215, 6667400, -2681133, -1905355, -230854, 3400004, 2731062, 49929, -637266, 280247, -1331977, -2808372, --265751, 884226, 695785, 2427730, -86436, 1472100, -515396, 1161789, -295816, 221728, --250182, -1643362, 154082, -299574, -2107755, 1693291, -389231, 1037235, -572841, -1132798, -156766, 201327, -82141, -740882, 780610, 313533, -557272, -170188, -1621887, 210453, --915365, 817654, -304943, 1753420, -792421, -10478110, 1628330, -3794604, 2422362, 723702, -7532299, -9689446, -5557151, -7104413, 3806415, 3199751, 4571456, -5058935, 1738925, -1481227, -635655, -7895761, -6772627, -4929549, -4925791, 8039105, -3236795, -928787, -156766, 2762738, --1287417, -8390219, 3540664, -3315715, -1112397, 3934727, 2917357, 4511863, 277562, 2430415, --5914707, -2403034, 5283347, 8831527, 5148592, -343061, -6726456, 4828080, -2174864, -5760088, -8002598, 2420214, 2746632, -4888747, -2884071, 2792266, -1822140, -2702608, 4219269, -3288871, -1462436, 255014, -5593121, -1139777, -3703873, 5912560, 2980171, -768262, 993748, -2651606, -3468723, 629213, -106300, 1079111, -6691559, -3435437, 3766686, 1868311, -1096827, -813896, --4759361, 7843147, 9642202, 5376762, -4428648, 4005057, 676457, 3425773, -1476395, 2824478, --2126009, 1845762, 3520263, 1949378, 1685775, 1329292, 63888, -1138703, -401043, 3504693, -175557, 278099, -1302449, -199716, 720481, 2126546, -264141, 2490544, 397284, 110595, --94489, 2030446, 2433099, -1016834, -469762, -226560, 375810, 1789928, -103079, 517544, -127775, 464930, -877784, -15846819, 5287105, 804233, 3941706, 4268661, -3094524, -11207180, -8637179, 3669513, 8498667, -1562294, 4505421, -88047, -3058554, -209917, -7921531, 9693741, -2213519, 919123, -4989142, -2865817, -3379066, 2896419, -4449049, 7424388, 326418, 2556579, -4136054, 2286533, -476205, 2398202, 2290828, -1733556, 1927904, -8252780, 2146410, 3764002, -3850975, 7413651, 2574296, -4948876, 2481954, -2492692, 5041755, 979253, 3668976, 5645198, -925029, -1232119, 4422743, -3039763, -4805532, -1772748, 3085397, 7823820, -1853815, 497142, -140123, 940598, 1535988, 3281892, 1112933, -2050847, -368830, -2768107, 2014340, 656056, --4955856, -4356171, 1741609, 2759517, 2760053, 4920959, -7568269, -4063576, -5516886, 6500433, --2862596, -4019016, 2103997, -3703336, -5394479, -1938641, 150861, 5787469, -2041720, 1880122, --2299418, -1336272, -335544, 1773822, 764504, -1031329, -876710, 1123671, 2869038, 988379, -1654099, -779000, -545461, 1964948, -77309, 153008, 731218, -1336272, 2563022, -779537, --178778, -1177358, -3268470, -484794, -719944, -218506, -36507, -1204202, 128849, 2953864, --731218, -256624, -558883, -1056025, 3910031, 16094316, 8539469, 7646653, 11149198, 3034395, -2036888, -6818261, -223338, -12751221, -2297271, 4859756, 3526705, 2268280, 2950643, 3512210, --2752537, -1862942, 7311645, 6594923, 5656472, -425739, 794032, -9104794, -7888781, -2983929, -5765994, 1869921, -1196148, 3135863, -5305359, 506806, -2736968, 6346888, 4981625, 11143830, --1105417, 4207458, 3501472, -1787243, -5841156, 10485089, -6093485, -1377074, 4745939, 233002, -2697776, 7561290, -2412698, 2823941, -7305740, -15611669, -8661875, -5175973, -2097555, 730144, --623307, -4020626, -8394514, -1742683, -6027450, 1858110, -139050, 751082, -9466645, -4303021, -6138045, 2126546, -368293, -10487773, -9496173, 5659693, 1016834, 3448322, -6957310, -5545340, -374199, -2825552, -5935108, -4212289, 3336116, -1280437, 1537598, 446677, 4172024, 3063386, -1433445, -2113661, 1130113, -372052, -2525441, -2487323, 2402497, -1019518, 713501, -1606318, --2436857, -418759, -191663, 2174327, -236223, -2104534, 576599, 818728, 2403034, 476741, -584652, -1008244, 3007551, -1133335, 3423626, -1876901, 2542084, -2233920, 401579, 1333587, -128312, -157303, 559956, -507880, -891206, -8137890, 6157373, -3616899, -305480, -21188148, --5009543, -7829726, -5187247, 867047, 6991133, -1387274, 9245991, 4906464, -553514, -9108015, --3780645, 13570486, 2261300, -8111583, -5941014, -2673617, 6351720, -4950487, 68183, 4381404, -6911140, 7814693, -8567923, 5768141, 772020, 1637456, 2436857, 3171297, 2744484, 7835094, -206695, 2383707, -6868727, 9600863, -4829691, -2253247, 1602560, -7958038, 9842454, -1553704, --19267760, -6360847, -15473157, 951335, -236760, -4666482, 20956756, -3661997, -10394358, -3516505, --2565706, 9641665, -1333051, 4602595, 5636608, -3928285, 7182259, 9936944, -5060009, 3786551, --8841190, 4311074, -3179350, -2488934, 10183367, -3726958, -988916, -4527970, 258235, 179315, -3877282, 5763309, 6089727, -1621350, -1742683, 246424, 7892003, 3753802, 4097936, 164283, --6463926, 2598455, -3143916, -3505767, -1938104, -57982, -188442, 425739, 1427540, 1513439, --386010, 4301410, 689879, 1884417, 741956, 856846, -1205812, 1146219, 431107, -1261647, --1883880, -1213328, -3236795, -2520609, 2226404, 1804423, -2739116, 756988, -149250, 780610, -3092913, 668941, -1208496, 348966, 999117, 82141, -2498060, 1121523, 9632538, -13450764, -2685965, 2753074, -4261145, 1809255, 10137197, 10870025, 4029753, 3890167, 5182415, -8404177, --1464047, -8973260, -190052, 5739687, 3629784, -1885491, -7103339, -2295660, 4798552, -9301289, -315680, -658204, 4294431, 8870718, 838592, -4770098, -3641059, 9492415, -6096169, -2934537, -5458904, -3387119, -11212012, -4051765, 2552284, 1908039, -4482335, 1061931, 5841693, 4043712, -5634997, -648003, 4249334, 8076149, -3550864, 4031901, 3469797, -5495411, 11963631, -11477226, -6859063, 3037079, -15972447, 15313169, -9888088, 2194728, -1759326, 12226698, -5172215, -8627516, --1832340, 101469, 2223183, 9401683, -7958575, -363998, 580894, 577136, -1421634, 2805151, --6467684, -920197, -4607963, -8597451, -9546102, 5185100, 4191888, 4019016, 111132, 6087580, --2771865, -6959458, 1840394, -12351789, -10308995, -1907502, 3052111, -68183, -1886564, -1561758, -1512365, -6742562, -2232846, -1388885, -1069447, 3189013, -290984, 561030, 296890, -2186138, -1158567, -2461553, 235149, 1235340, -2665027, -535797, 2352032, -1748589, 69256, -1213328, --45097, 894427, 144418, -3675955, -520765, -4832, -114890, -597000, -2201708, -3784403, --841814, -193810, -449361, 3153580, 2391223, -10718628, 8497056, -24561844, 13445932, -9778030, --6720013, -12010339, 1316408, -1445793, 2076080, 8567923, -7242389, -2776696, 6791417, 6235219, --2101850, 2421288, -3363496, -11259257, -1140851, 2825552, -5840619, 9070434, 1450088, -1066763, --5479305, -5315559, 1142461, 13980655, 484794, -1972464, 3723200, -12098386, -2202245, 4411469, --8310762, 11746736, 7345468, -427886, -3722663, -3943317, -4656282, -8043937, -10062035, 8347806, -490163, 14833743, 1217623, -773094, -6799470, 1231582, -2744484, 3330210, -338766, -9351754, --7444789, -9529459, -16184511, -2235531, 14019310, -13531831, -964757, -14169097, 2130841, 3993783, -3163244, 10115722, -1243393, -14565308, 10324565, -1009317, -7182259, -5874979, -12721156, -4306779, --9703942, 5253819, -14831059, -2445984, 5650030, -107374, 991601, 7037304, 3454228, 8451422, --92342, -4563940, -1931662, -3125126, -281857, 3124589, -986769, 553514, 303869, 345745, --2578054, -3571802, 2133525, -2498597, 970126, 461709, -634581, 1130113, 252866, 481036, -4951561, 929860, -421981, 979789, 1482301, 1138703, -2676838, -370978, -5499706, 2035815, -2660195, 4228932, 1391033, 1469416, -207232, -2702071, 1512902, -100395, 10517301, -3825742, -9349070, -9119289, -4887136, 6454799, 2026151, -12318503, 772020, 16117939, -18545668, 1136019, -8625905, 20857434, -8922795, -5248987, -2302639, 16163573, 15802795, -16678969, -805843, -12801150, --6171868, 8420283, 8400956, 11074573, 6243272, -2135136, 7734699, -9531606, -5182952, -907849, --1487132, -13818520, 1216550, -261456, 18343268, -2781528, 9036611, 2241436, 5354751, 12347494, --7445326, -3258807, -18132278, 12546673, -15979963, -2780991, 3667365, -2101313, -9228811, -2258616, -2621541, -6505265, 1800665, -1013075, -1395328, -20313584, -14427869, 1069447, -10458782, -14243722, -2644626, -13163538, 4219806, 8669928, -7758859, 14846628, 3113851, 9552007, 10190347, 2677375, --7538205, -8887898, -11127187, 5792837, -11545409, 7022272, 8375723, 11597485, 2056216, -8142721, --5254356, 299574, 1139240, -15227807, -352187, -9834938, -1659468, -2729452, 644782, -7179038, -981400, -1584306, -76236, -4633196, -3405372, 1207423, 7665443, 888521, -697932, 1120987, --1054415, -2741800, -2747705, -2972117, -1309428, -3541738, 3976066, 2973728, -233539, -2910914, -4719632, 7110319, -1520418, -1116155, -1618129, -612033, -194884, 1834488, -2620467, 2899103, -2630668, 1890323, -2490007, -263067, 1505923, 2165737, 4877472, -9814537, 25395068, 10645613, -4378183, 13121125, -5030481, 2793339, -13533442, -17352204, 10937134, 22402550, 6634114, -63888, --22119082, 26709864, 3835943, 3324305, 3806952, 1029182, 4803384, 1562831, -3839164, -124554, -6716792, -4094715, 8445516, 1664837, -6680822, -9206262, -2541010, 8484708, -2330020, 2794950, --3835406, -3352759, 127775, 23965380, 3857418, 3497714, 3219078, 2055142, 14329085, -5309117, -4114579, -9233643, 17075716, 23835994, 6193343, -1339493, -8482560, 24903830, 11680164, 396748, --9633075, 3666828, -5781563, -863825, -11049340, -4121558, -7374996, -10099616, 16364899, -4886062, -12059194, 2554969, -9412421, -116501, -20136954, 19160386, -1390496, -9134322, -7153268, -11648488, --14381698, -7846369, 22269942, -6924024, 8022462, 10133975, -9000641, -8548596, -16068010, 2437394, -10834055, 3733400, 10359998, -2375654, -2044941, 477278, 2947421, -4408247, 1241782, -7992934, -2605435, -363998, 9091372, 6416681, -4907537, 500901, -262530, 5410585, -1829656, -7195681, -1605244, -222265, -576063, 2676838, 505196, -1128503, -3599183, -4039417, -766652, -965831, -4286914, -165356, 4300336, -5888400, 1435593, 4437238, -8335458, -6088116, 2212445, -2656974, -6269579, 7528541, -5606006, -5959267, 23675470, 23209466, 28672128, 17252884, 5694053, -7293392, --7569343, 4287988, 8330089, 10188199, -15234786, -453119, -1813550, 7640747, 6038187, -10576357, --13036299, -53150, -4937602, 12426951, 14629732, -8590, 7756711, 2550137, 3102577, 16889422, --10313290, -13676250, 10787347, -17909476, 1551020, -5521181, 9887552, 5041755, 185757, 11557757, -10615549, -9650255, 12027519, -28454, -5141613, 2842732, 13065827, -5051956, 5591511, 9683541, -4386772, -20875152, -12065637, 2054605, 1106491, -14193256, -9693204, 4712116, 6756521, 5738077, --19332184, -13507672, -13452374, -1069447, 8384850, 12221329, -30712774, -22577032, 3760244, 4718559, -17745732, 6254546, 6510097, 12916577, -1387274, -3316789, -4685810, 31712964, 10967199, -5005785, --16592532, 15160698, 9908490, -4960687, -4505421, 2339147, -4564477, 8097087, -2922188, -1736241, -4771172, -1183264, -1899449, -2501819, 5010616, 12998719, 93416, 922881, 457414, 5651103, -7262790, -1853815, -4568772, 1961190, -424665, 1458678, 853088, 1109175, -6164352, -3370476, -4371203, 438087, -2507724, 2126546, 6082748, 4728222, -8156680, -1839320, -5422396, -5230197, -3872987, -6243809, 2447058, -3371549, 6059662, -7225209, -10075456, -19494856, -18979460, -15596100, -6016713, -2006824, 8800925, -17195976, -2838437, 805306, -6639483, -8046085, 13977971, -5354214, -2827162, -210453, 969052, -14020384, -5164162, -11988864, 1591285, 1585380, 3111704, 33153390, --12918725, 9158481, 13951664, -7080791, -6687801, -10028212, -2030983, 15488189, -15804943, 10821170, --1040456, -2630668, 1448478, 1590212, 8485782, 956704, -16767015, 12825309, -10446434, -24054502, --19478214, -9752260, 32561220, 27635968, -15024869, -4319127, -20624970, -17204028, -6800007, 20123532, -518617, 13881871, 7248294, -9458055, 10573136, -7199439, -21467320, -1812476, -13019120, -2646774, --6979322, 42372000, 382252, -35062504, 27528056, -11104101, -7824357, 27825482, 28267864, 100932, --12386686, 5523865, 6908992, -38074348, -16391206, 1018981, -5604933, 19947438, 8434242, -28880970, --4329864, -2309619, 13091060, 8341900, 5695664, 5189394, -6022618, 1040456, 2291902, 12099460, --1503239, 1673427, 2368138, 2076080, 7102266, 3380676, 157840, -8244727, 10445897, -935229, --52076, 497142, 10737, -4449586, -6960532, -4757213, 944893, -1709934, 3039226, -462246, --3085397, 3333968, 7707856, -10245644, -3336653, -3118146, -1472100, 2935610, -199716, -2920041, --5783174, -2156074, -1494649, 5223754, -16862578, -10484552, 5126044, 4002373, 9173513, 28868086, -4981625, -731755, 6759205, 1515587, -11996917, -7365332, 6473053, 1494649, 23574002, 5575405, --1460826, 8536784, 12661027, 12836047, 13813689, 757525, -9674414, -2675228, -22111028, -2994129, --24967182, 13944685, -15190226, -5871757, 84826, 20237350, -11712913, 11267310, -8222178, 6833293, --10314364, 12921946, 19520626, 1343788, -4111358, -10482941, -15121506, 8484171, 9715753, 24752970, --3337727, 1255741, 10916196, 39637716, -9230958, 5953899, -6397354, -22054120, 15511274, -3145527, -11035382, -1354525, 2749316, -13281649, 36702108, -55004572, 40520332, -63114008, 27235998, -32552094, -10140955, -25522306, 9218074, 16940962, -4023311, 12590697, -6448357, 46057620, -27906550, 30583926, --47353088, 23912768, -18556944, 23005992, -15430744, -16719771, -8165270, -4228932, 11632382, -3177739, --2030446, 1162862, 727997, -5911486, 8279087, -8919573, 8748848, -6445672, 2689187, -10258529, --5731097, -7579007, 1371168, -6968585, 8638790, 9205726, -8711267, -138513, 3499325, 8448738, --1267015, 3030100, 6930467, -6487011, 11454141, -3184182, 15146202, -9023189, 18141942, -12936441, -4671314, -1063541, 10120554, 8395587, -1603633, 4915590, -13973139, 15932181, -10944650, 3871913, --11121281, 8053601, -14836428, 5098126, -1249299, -5439039, 5609228, 14039711, 11213623, 44458816, --30917322, 12972949, 8119636, -26612692, -748398, -5189394, -7585986, -13648332, -742493, 1627256, -17670570, 6646462, 9244380, 13340705, 10749229, 458488, 14733348, -16940424, -2455648, 20540682, -2275796, -28049358, -6468221, -36723044, -6882685, 6475737, -6823093, -8513699, -1607928, 32940252, -8304856, 2580739, 4009352, 8293045, -2486786, -18797998, -5782100, -2030446, 3497177, -4285841, --8817568, 23872502, 12811351, -4858145, -1138166, -5052492, -21534966, -17608292, -12917114, -10667625, -24024436, 5853504, 8864276, -14416595, -14068702, 4589173, 9776419, 9087077, -4074313, -2781528, --16335371, -10724533, 14254996, 710817, -39533028, 13970992, 21561272, 6968585, -17231946, -10530186, --8588324, 2899640, -12408697, 6190659, -29100550, -38823284, 16089484, 14093398, -7780334, -14232985, -10903848, -6337224, 2818036, 3441880, -5736466, 6287832, -3556770, -3595425, -2114735, 9410810, --6659347, -1903207, -7284802, -42950, 603443, 6310381, 6468221, -670015, 3809099, -4538707, -7559680, -5216775, 6174553, -14251775, -6519224, -1919850, 4126390, -4625143, -9338870, -7108171, -3405372, 7421167, -281320, 9573482, 2672544, 3813931, 581968, 6247030, -3512210, 5971079, --1433445, -11744051, -9069360, -3432753, 5365488, -6588480, 3899830, -36660232, 32088774, 39051452, --3675418, 28391882, 1136556, 4335233, 12350178, -25087440, 9102109, 18559090, 18297634, 7679939, -5654325, -18142478, 13248363, 7799124, -11023570, 5851356, -2207613, 21625160, 5944772, 5524402, -12765717, -5138929, -14752676, 4247723, 27538794, -9884330, -5383205, 24879134, -9165460, -11149198, --9088151, 8559333, 31995896, 44511968, -2789581, -28896004, 43656196, 15028627, -28782724, 32561220, -12457016, -8090645, -8370355, -12227772, -20285130, -1162862, 10632192, -17399450, -11398306, -36742372, --5000416, 21374442, -44508748, -24111410, 7019587, 7167764, 8772471, 26990112, 23884850, -39553964, -321586, 1511292, -27992986, 7812009, 13316009, -14364518, -10252624, -12128988, 8109972, 31078384, -9725953, 16161962, -21253646, 10829760, -24064702, 2104534, -16183974, -65751116, 50287088, 12923020, --18352396, 34039228, -11744051, -15510738, 9156870, 6956237, 8757975, 13310104, 5383205, -13371307, --4246649, 13058311, -429497, 5024575, 2105608, -2144263, 3205656, -5865315, 4343286, 12200391, -4404489, -7199439, -5326297, 3724811, -3267396, -6532109, 2489471, 7611219, 4423280, -22741314, --6877854, -16748225, -8689793, 9761387, -7467338, -9361418, 8909910, 5756867, -9816685, 12469364, --9210020, -4030290, 4478577, -7228967, 8196945, -3646427, -13492103, -20862266, 24039468, 79703856, --25447144, 702227, 6124624, 35986996, 31905164, -10442676, -13852880, -20099910, 855772, 15243376, --507880, -10276246, -10569378, 14384919, -7849590, -19335406, -17285632, -3491809, 29287918, 20542828, --23291608, 1564979, 423591, -10155450, 11545409, 4271882, -8312373, -2743947, -6538014, -3123515, -37387152, -13923210, -24831354, -17380658, -14113799, 33064268, 913754, -7667591, 30445950, 20928838, -8318278, 15493021, 29938070, -18210662, 4614406, 29127932, 17029546, 22251688, -25282324, -7129646, --948114, 10656351, 10038949, -23933168, 2279554, -31442918, -47288664, -2498597, -12514461, 21951578, -24413130, -6411850, -1944547, 4950487, -17199196, -45808512, 30817464, -22203908, 4758287, -8556649, --15496242, -8997956, -17969070, -36318780, 21432424, 19068582, 23142894, 4453344, -28864864, -50706920, --15063524, -14042932, -6214818, 16002511, -10384157, -2558727, 3045669, 2125472, -8080444, -3715147, --6495065, 754841, -2904472, 5326833, -3200288, -3969624, 5859946, 7611756, 6037651, -12306155, -3993783, 653909, -1132261, 99858, -26972394, 1254667, 3700651, 3911105, -17783312, 11500312, --2576444, -14846628, -12127377, 7115150, 9474161, -1849520, 5611375, -9193377, -6449431, -6296959, -683437, 10924786, 2749316, 10423886, -302258, 4771172, -15706695, -2544768, 3780108, 2078764, --12459163, -3775813, -39140036, -22436910, -18248242, -46079092, 53204444, -1219771, 28021978, -6394670, -1392643, -32116154, -17566416, -16571058, 3707094, 25164750, -1159104, -26201984, -19602230, -37455872, --41704132, 35763656, 13187160, -32457604, -10082436, 16014322, 29773788, 4172561, -36970004, -22473416, -7275675, 10340134, 9165460, 21577378, -22991496, -21808234, -3361349, -7739531, 3032247, 6426345, --44427140, -8185671, -30991410, -19839528, -41329396, -15661598, 56581364, 9760313, 1773285, 13883482, -14017163, 4435091, 42041288, 33298344, -11026255, 11313481, 56810068, -14885820, -13293998, -13571560, --42355892, -1631014, -23201414, -52585432, -55175296, -28913182, -28494960, 12885976, -21347062, 1866700, -11161009, -37470904, -13758391, 238908, -187905, 9674951, 24477018, 16295643, 29520384, 40018356, -29003378, -3574487, -21162914, -30655866, -2637110, 12688407, 3710315, -4313221, -409633, 8692477, -6993818, 18849000, -2148558, 3005403, 307627, -6280853, 6134824, 974421, -3063922, 16107201, -6939057, 3656628, -15127412, 10159208, -5449777, 7661685, -14359149, -39756900, -1898376, 15698105, --3002719, -21103322, -13581760, -15444702, -11686069, 5036386, 6892886, 7883413, 2110977, -1413044, -5873905, 15557982, 25927106, 24531242, 30456686, 26115012, -2550137, 17559436, 39727372, 2822867, --17523466, -24922622, -25156698, -34163244, -27809376, -13284871, -14970109, -2090039, 35221952, -23026394, -6957847, -26669062, -9042517, -29083908, 3735548, 35279400, -811212, 21805012, -43616468, 38343320, -12850005, -7857106, 30392262, 4261682, 13826573, -12155294, -14347338, -272730, 9312563, 7137162, --30455076, 27960238, -33749852, 4135517, 9446781, -11457362, 19894826, -20977694, -11916387, -2316061, --7484518, -10619307, -2342905, 4502200, -15583752, -18369038, -5950677, -3214246, -4508642, 11162620, -6067178, 4548907, -22282828, 5930813, 27114128, 35941360, -26511760, -13357885, 30561914, 41794864, --25338160, -15671262, 17627082, 7398081, -20122996, 16709570, -47270948, -9309342, 19267224, 37790880, -4920959, -23442468, -21195126, 5736466, 45296336, 3948686, 6794639, 1359357, 15035070, -2901251, -33666100, -368293, -37234144, 23502598, -24291798, -7450695, 10314364, -14219026, 3409130, -30316026, --11288248, 28111634, 12958990, -12594455, -17993766, -9851044, 2366527, -14615237, -4395362, -3222299, --8940511, -5491653, -4305168, -18975702, 12040941, -7092065, -8397735, -27485644, -6906308, 20219096, --13961865, -7721278, -7261716, -15697032, 30262340, 12410845, 1201517, -992674, -16749836, -25160456, -1660005, 22507240, 18526878, 6199249, -18866180, -11057930, -8391292, 10980621, 2075006, -16828756, --4099010, 1093606, 6710350, -14968498, -9996536, -8829379, 23551454, 12037720, 1604170, -14539001, --12512313, 13161390, 28309740, -282931, -12048994, -17365626, -5794985, 7849053, 716186, -4001836, -1104880, -3464428, -2565706, 2673080, -56834764, -15902653, 9708774, -19330574, 56313464, 41024992, -27085138, 14196478, 38018512, 26644366, 9004399, 18095770, -44542032, -60117732, -8256001, 404801, --15349676, 7850664, -2784750, -15832323, -19582904, -16209743, 31150324, 26865558, -21567178, -2957622, --2936684, -5614059, -7615514, -11460046, -16304770, -23124104, -4299799, 40349072, -12874701, -22687090, --10665478, 37860672, -17678086, -17655000, 58954332, 20772610, 10003516, -14487998, -32240172, -22748832, --33257006, 8855149, 27630062, 74175696, -65212636, -27864674, 38434588, 52910776, 9373229, -3277060, -68245960, 32516124, -21383568, 21586506, -7730405, 145492, -47068008, -23906324, -16372415, -77454368, --32689532, -12564390, 41769632, -22608170, -12914967, 30988190, -1947231, -4196720, 7556458, 21793200, --21012590, 15391015, 23779624, 493384, -4380867, -43728672, 20276004, 15615427, -50363324, -3686693, -5590437, 3246995, -4172024, -22436372, 6094022, 3790309, 6429029, -3561602, -6354404, 16134582, -3571802, -3379066, 11258183, 4607426, 29799020, -4069482, 9859634, 1869921, -23438710, -20536386, -14541149, -11433740, 8890582, 11078868, 7002944, 6840273, 324807, 19609210, -6130529, -4912369, --7608535, 5627481, 15408732, -23007066, -8429410, 11049340, 5266167, -13034689, -23336168, -5998996, -6577206, 49292264, 18099530, -4116189, 12794171, -2502355, -4552666, -18168786, 8727374, 7524246, --14321568, -6982006, -52141440, -2122251, 21483964, -5037460, -21738976, 9519795, -4878009, 23463944, -4696010, -11365020, -174483, 25119116, -14292577, 4042638, 9079561, -7641284, -215822, -13587666, -27741194, -1664837, 4132832, 445066, 13408888, -6068789, -5216238, -8669391, 5548561, 10425496, --4564477, 12385075, -5358509, 7632157, -13007845, -10248866, 15799574, 20259898, -26170310, 1224603, -39192, 2454574, 8253854, -16466368, 25266756, -22626424, 20337208, 2848100, -35321812, -1924682, -27576374, -35955856, 17162690, 158377, 4652524, -8631811, -5379984, 7268159, -10424959, 36826660, --27236536, 4074313, -7304666, -3302830, 9088151, 517544, -4464619, -843961, 11141682, -345745, --12773770, 3602941, 6491843, -21392158, 16648904, 7515119, 789200, 15346455, -5612449, -4745939, -7229504, 3353833, 4587025, 2609730, -4229469, 8664023, 3733937, 642635, -9356049, -1545115, -4575214, 8304320, -14202920, 7434052, 8853001, -12554726, 5958194, 1842541, 2139968, 6626061, --3733937, 1480153, -2340220, -18211198, -273804, -4403952, 7955353, -5130339, 3037616, 1997160, --751082, 2428267, 4609037, -3018825, 4295, 819265, -130997, 1315871, 5534066, -5647345, -5185100, -4125316, -26274462, -74187504, -105962208, 35633196, 94238560, 20808042, 261197360, 215122032, -145350288, 245979760, 128133368, -8739185, -30689152, -97119408, -224258496, -185192016, -180112672, -250465312, --185173216, -54378580, -40103184, -6555731, 87158312, 40580460, -10827076, 55288040, 91443608, 44781476, -42848204, 83224120, 49582712, 38241316, 75406744, 118406880, 49300320, 69510288, 111144624, 19077708, -7546258, 98209792, 58076012, -37649684, 47359532, 61028800, -63678260, -18997178, 70382168, -14176076, --42127724, 90914256, 48194364, -56398828, 48798344, 64725156, -86312200, -80798000, -34509524, -208447648, --276600736, -173480704, -244529136, -325952576, -227131296, -232436656, -300528000, -237652896, -164791456, -178677088, --106789528, 10205916, 66716412, 145021184, 237282992, 295772384, 364217536, 404668608, 442085824, 468772608, -420947072, 331012064, 305788800, 196009952, 59263568, 46551540, -31323196, -150494576, -118199648, -50157700, --111970336, -115118008, -24298240, -81093816, -155436480, -93868656, -68067712, -139036688, -118374664, -41826004, --105197704, -124978176, -9959492, -6238977, -56297356, 22367652, 13051332, -90618440, -67170064, -38986492, --129012768, -177761712, -145357264, -198545056, -246279872, -182703072, -146731120, -139179488, -60919816, 28548110, -74086576, 109913584, 151769648, 171272560, 153622384, 200292048, 256780528, 266178992, 248589488, 253168992, -244185536, 198255152, 223857984, 202116336, 86896312, 11434814, -49597208, -109308528, -115546968, -95266672, --112528144, -110007536, -95225864, -93947576, -100153808, -82252384, -73451456, -70123928, -66205848, -51005420, --48302812, -50069656, -39617852, -25890600, -23276038, -14841796, -1594507, 6151467, 6395743, 7705708, -2896419, 1775969, 0, 0, 0, 0, 0, 0, }, +6170258, -3467112, 1032940, -5153961, 1443109, 580357, 7864622, -4709432, 15569, -2477123, +3941706, 4025458, -2567317, -488016, -2206540, -1264868, -2579128, -3210488, 2369748, 775778, +-2099702, 4391604, 3998078, 6833830, -201863, 2589329, 1359357, -112206, -6172405, 1607928, +2572149, -2434710, 1545115, -1794223, -2091649, -3385508, 1760937, 4363687, 453656, 5091684, +-2073932, -430034, 5135171, 2688650, 418759, -59593, 4878546, 7326141, -5439039, 1224603, +-1874216, -839129, -8468602, -3003256, 3433290, -2627446, 2381559, 1102196, -1236951, -2050310, +1207960, -697932, 2652679, 1440425, 1241246, 1360431, -4389994, 173946, -2105071, 2714419, +4500052, 3156801, -628139, 4871567, 43487, 2071785, -632434, -1071058, 273267, 2448668, +2824478, -908922, -1904818, -3950296, -496606, -1736241, -1859721, -1045288, -1579474, -1129576, +-1862405, -972810, -29528, -13422, 61203, 1574642, -1063004, 829466, -371515, -747861, +62814, 728534, 282931, 583042, 22012, -511101, 32212, 744640, 265214, -1062468, +-811749, -27380, 35433, 450972, 89657, 815507, -1052804, 3673271, -4502737, -4709969, +178241, -6343130, 1164473, -1997160, 3082713, -1699196, -5031554, 572304, 4932770, -753767, +170188, 6868190, 8632884, -3725347, -3961034, -1125818, -6417218, 2741800, 586263, 1599875, +-2256469, 3426310, -4471061, -814433, 3062312, -2516314, -916976, 469225, 5563057, 358093, +4025458, -5304822, 5212480, -568009, 754304, 3374234, -2910914, 2815351, -1321239, -1347009, +2425583, 3199751, -541166, 1830193, -7035157, 4255239, 4130685, -7458211, -6564321, -1854352, +-5443871, -1525787, 2077690, 1354525, 1983738, 114354, -1813550, 4589710, -1535988, 168041, +-1833414, 1081258, -2777770, 3905199, 958851, -3004867, -1678259, -1189706, -1739999, -1541356, +3956739, 5181878, -244813, -1056562, 203474, 1659468, -1075889, 3620121, 2057826, -1479616, +-275952, -924492, 1576253, -1517734, -40265, -400506, 242666, 573378, -86436, -445066, +984621, -760209, -249645, 203474, 658204, 51540, -1311039, -907312, 257161, -865973, +-722091, 868657, -456877, -1606855, -1030792, -1292785, -339302, 204548, 1549410, 11094974, +2119566, -4102768, 5143760, 654983, -3492345, 10134512, -6800544, -9741523, -5709086, -5906654, +-1988570, 2882460, 3555159, -3366718, 5116380, -6419366, -3500398, -776315, 2128156, 1601486, +-1955821, -2522757, 5724118, 1102196, -390305, -3208878, 4272956, -3125126, -723165, -6442, +-362388, -448824, 1663763, 889058, -881542, 3568044, -1682554, 2175401, -153545, -5820218, +-2283849, -2324651, 6189585, -3431142, -4172561, -7558606, -8832063, -1613834, 449361, -3526705, +6702297, 905164, 3600256, -2706903, 5801427, 2474438, -3364033, 9355513, -4239133, -4529580, +724239, 5864241, 8596377, 6087580, 2015413, -2994129, -6765647, 2695629, -83215, 6667400, +2681133, -1905355, -230854, 3400004, 2731062, 49929, -637266, 280247, -1331977, -2808372, +-265751, 884226, 695785, 2427730, -86436, 1472100, -515396, 1161789, -295816, 221728, +-250182, -1643362, 154082, -299574, -2107755, 1693291, -389231, 1037235, -572841, -1132798, +156766, 201327, -82141, -740882, 780610, 313533, -557272, -170188, -1621887, 210453, +-915365, 817654, -304943, 1753420, -792421, -10478110, 1628330, -3794604, 2422362, 723702, +7532299, -9689446, -5557151, -7104413, 3806415, 3199751, 4571456, -5058935, 1738925, -1481227, +635655, -7895761, -6772627, -4929549, -4925791, 8039105, -3236795, -928787, -156766, 2762738, +-1287417, -8390219, 3540664, -3315715, -1112397, 3934727, 2917357, 4511863, 277562, 2430415, +-5914707, -2403034, 5283347, 8831527, 5148592, -343061, -6726456, 4828080, -2174864, -5760088, +8002598, 2420214, 2746632, -4888747, -2884071, 2792266, -1822140, -2702608, 4219269, -3288871, +1462436, 255014, -5593121, -1139777, -3703873, 5912560, 2980171, -768262, 993748, -2651606, +3468723, 629213, -106300, 1079111, -6691559, -3435437, 3766686, 1868311, -1096827, -813896, +-4759361, 7843147, 9642202, 5376762, -4428648, 4005057, 676457, 3425773, -1476395, 2824478, +-2126009, 1845762, 3520263, 1949378, 1685775, 1329292, 63888, -1138703, -401043, 3504693, +175557, 278099, -1302449, -199716, 720481, 2126546, -264141, 2490544, 397284, 110595, +-94489, 2030446, 2433099, -1016834, -469762, -226560, 375810, 1789928, -103079, 517544, +127775, 464930, -877784, -15846819, 5287105, 804233, 3941706, 4268661, -3094524, -11207180, +8637179, 3669513, 8498667, -1562294, 4505421, -88047, -3058554, -209917, -7921531, 9693741, +2213519, 919123, -4989142, -2865817, -3379066, 2896419, -4449049, 7424388, 326418, 2556579, +4136054, 2286533, -476205, 2398202, 2290828, -1733556, 1927904, -8252780, 2146410, 3764002, +3850975, 7413651, 2574296, -4948876, 2481954, -2492692, 5041755, 979253, 3668976, 5645198, +925029, -1232119, 4422743, -3039763, -4805532, -1772748, 3085397, 7823820, -1853815, 497142, +140123, 940598, 1535988, 3281892, 1112933, -2050847, -368830, -2768107, 2014340, 656056, +-4955856, -4356171, 1741609, 2759517, 2760053, 4920959, -7568269, -4063576, -5516886, 6500433, +-2862596, -4019016, 2103997, -3703336, -5394479, -1938641, 150861, 5787469, -2041720, 1880122, +-2299418, -1336272, -335544, 1773822, 764504, -1031329, -876710, 1123671, 2869038, 988379, +1654099, -779000, -545461, 1964948, -77309, 153008, 731218, -1336272, 2563022, -779537, +-178778, -1177358, -3268470, -484794, -719944, -218506, -36507, -1204202, 128849, 2953864, +-731218, -256624, -558883, -1056025, 3910031, 16094316, 8539469, 7646653, 11149198, 3034395, +2036888, -6818261, -223338, -12751221, -2297271, 4859756, 3526705, 2268280, 2950643, 3512210, +-2752537, -1862942, 7311645, 6594923, 5656472, -425739, 794032, -9104794, -7888781, -2983929, +5765994, 1869921, -1196148, 3135863, -5305359, 506806, -2736968, 6346888, 4981625, 11143830, +-1105417, 4207458, 3501472, -1787243, -5841156, 10485089, -6093485, -1377074, 4745939, 233002, +2697776, 7561290, -2412698, 2823941, -7305740, -15611669, -8661875, -5175973, -2097555, 730144, +-623307, -4020626, -8394514, -1742683, -6027450, 1858110, -139050, 751082, -9466645, -4303021, +6138045, 2126546, -368293, -10487773, -9496173, 5659693, 1016834, 3448322, -6957310, -5545340, +374199, -2825552, -5935108, -4212289, 3336116, -1280437, 1537598, 446677, 4172024, 3063386, +1433445, -2113661, 1130113, -372052, -2525441, -2487323, 2402497, -1019518, 713501, -1606318, +-2436857, -418759, -191663, 2174327, -236223, -2104534, 576599, 818728, 2403034, 476741, +584652, -1008244, 3007551, -1133335, 3423626, -1876901, 2542084, -2233920, 401579, 1333587, +128312, -157303, 559956, -507880, -891206, -8137890, 6157373, -3616899, -305480, -21188148, +-5009543, -7829726, -5187247, 867047, 6991133, -1387274, 9245991, 4906464, -553514, -9108015, +-3780645, 13570486, 2261300, -8111583, -5941014, -2673617, 6351720, -4950487, 68183, 4381404, +6911140, 7814693, -8567923, 5768141, 772020, 1637456, 2436857, 3171297, 2744484, 7835094, +206695, 2383707, -6868727, 9600863, -4829691, -2253247, 1602560, -7958038, 9842454, -1553704, +-19267760, -6360847, -15473157, 951335, -236760, -4666482, 20956756, -3661997, -10394358, -3516505, +-2565706, 9641665, -1333051, 4602595, 5636608, -3928285, 7182259, 9936944, -5060009, 3786551, +-8841190, 4311074, -3179350, -2488934, 10183367, -3726958, -988916, -4527970, 258235, 179315, +3877282, 5763309, 6089727, -1621350, -1742683, 246424, 7892003, 3753802, 4097936, 164283, +-6463926, 2598455, -3143916, -3505767, -1938104, -57982, -188442, 425739, 1427540, 1513439, +-386010, 4301410, 689879, 1884417, 741956, 856846, -1205812, 1146219, 431107, -1261647, +-1883880, -1213328, -3236795, -2520609, 2226404, 1804423, -2739116, 756988, -149250, 780610, +3092913, 668941, -1208496, 348966, 999117, 82141, -2498060, 1121523, 9632538, -13450764, +2685965, 2753074, -4261145, 1809255, 10137197, 10870025, 4029753, 3890167, 5182415, -8404177, +-1464047, -8973260, -190052, 5739687, 3629784, -1885491, -7103339, -2295660, 4798552, -9301289, +315680, -658204, 4294431, 8870718, 838592, -4770098, -3641059, 9492415, -6096169, -2934537, +5458904, -3387119, -11212012, -4051765, 2552284, 1908039, -4482335, 1061931, 5841693, 4043712, +5634997, -648003, 4249334, 8076149, -3550864, 4031901, 3469797, -5495411, 11963631, -11477226, +6859063, 3037079, -15972447, 15313169, -9888088, 2194728, -1759326, 12226698, -5172215, -8627516, +-1832340, 101469, 2223183, 9401683, -7958575, -363998, 580894, 577136, -1421634, 2805151, +-6467684, -920197, -4607963, -8597451, -9546102, 5185100, 4191888, 4019016, 111132, 6087580, +-2771865, -6959458, 1840394, -12351789, -10308995, -1907502, 3052111, -68183, -1886564, -1561758, +1512365, -6742562, -2232846, -1388885, -1069447, 3189013, -290984, 561030, 296890, -2186138, +1158567, -2461553, 235149, 1235340, -2665027, -535797, 2352032, -1748589, 69256, -1213328, +-45097, 894427, 144418, -3675955, -520765, -4832, -114890, -597000, -2201708, -3784403, +-841814, -193810, -449361, 3153580, 2391223, -10718628, 8497056, -24561844, 13445932, -9778030, +-6720013, -12010339, 1316408, -1445793, 2076080, 8567923, -7242389, -2776696, 6791417, 6235219, +-2101850, 2421288, -3363496, -11259257, -1140851, 2825552, -5840619, 9070434, 1450088, -1066763, +-5479305, -5315559, 1142461, 13980655, 484794, -1972464, 3723200, -12098386, -2202245, 4411469, +-8310762, 11746736, 7345468, -427886, -3722663, -3943317, -4656282, -8043937, -10062035, 8347806, +490163, 14833743, 1217623, -773094, -6799470, 1231582, -2744484, 3330210, -338766, -9351754, +-7444789, -9529459, -16184511, -2235531, 14019310, -13531831, -964757, -14169097, 2130841, 3993783, +3163244, 10115722, -1243393, -14565308, 10324565, -1009317, -7182259, -5874979, -12721156, -4306779, +-9703942, 5253819, -14831059, -2445984, 5650030, -107374, 991601, 7037304, 3454228, 8451422, +-92342, -4563940, -1931662, -3125126, -281857, 3124589, -986769, 553514, 303869, 345745, +-2578054, -3571802, 2133525, -2498597, 970126, 461709, -634581, 1130113, 252866, 481036, +4951561, 929860, -421981, 979789, 1482301, 1138703, -2676838, -370978, -5499706, 2035815, +2660195, 4228932, 1391033, 1469416, -207232, -2702071, 1512902, -100395, 10517301, -3825742, +9349070, -9119289, -4887136, 6454799, 2026151, -12318503, 772020, 16117939, -18545668, 1136019, +8625905, 20857434, -8922795, -5248987, -2302639, 16163573, 15802795, -16678969, -805843, -12801150, +-6171868, 8420283, 8400956, 11074573, 6243272, -2135136, 7734699, -9531606, -5182952, -907849, +-1487132, -13818520, 1216550, -261456, 18343268, -2781528, 9036611, 2241436, 5354751, 12347494, +-7445326, -3258807, -18132278, 12546673, -15979963, -2780991, 3667365, -2101313, -9228811, -2258616, +2621541, -6505265, 1800665, -1013075, -1395328, -20313584, -14427869, 1069447, -10458782, -14243722, +2644626, -13163538, 4219806, 8669928, -7758859, 14846628, 3113851, 9552007, 10190347, 2677375, +-7538205, -8887898, -11127187, 5792837, -11545409, 7022272, 8375723, 11597485, 2056216, -8142721, +-5254356, 299574, 1139240, -15227807, -352187, -9834938, -1659468, -2729452, 644782, -7179038, +981400, -1584306, -76236, -4633196, -3405372, 1207423, 7665443, 888521, -697932, 1120987, +-1054415, -2741800, -2747705, -2972117, -1309428, -3541738, 3976066, 2973728, -233539, -2910914, +4719632, 7110319, -1520418, -1116155, -1618129, -612033, -194884, 1834488, -2620467, 2899103, +2630668, 1890323, -2490007, -263067, 1505923, 2165737, 4877472, -9814537, 25395068, 10645613, +4378183, 13121125, -5030481, 2793339, -13533442, -17352204, 10937134, 22402550, 6634114, -63888, +-22119082, 26709864, 3835943, 3324305, 3806952, 1029182, 4803384, 1562831, -3839164, -124554, +6716792, -4094715, 8445516, 1664837, -6680822, -9206262, -2541010, 8484708, -2330020, 2794950, +-3835406, -3352759, 127775, 23965380, 3857418, 3497714, 3219078, 2055142, 14329085, -5309117, +4114579, -9233643, 17075716, 23835994, 6193343, -1339493, -8482560, 24903830, 11680164, 396748, +-9633075, 3666828, -5781563, -863825, -11049340, -4121558, -7374996, -10099616, 16364899, -4886062, +12059194, 2554969, -9412421, -116501, -20136954, 19160386, -1390496, -9134322, -7153268, -11648488, +-14381698, -7846369, 22269942, -6924024, 8022462, 10133975, -9000641, -8548596, -16068010, 2437394, +10834055, 3733400, 10359998, -2375654, -2044941, 477278, 2947421, -4408247, 1241782, -7992934, +2605435, -363998, 9091372, 6416681, -4907537, 500901, -262530, 5410585, -1829656, -7195681, +1605244, -222265, -576063, 2676838, 505196, -1128503, -3599183, -4039417, -766652, -965831, +4286914, -165356, 4300336, -5888400, 1435593, 4437238, -8335458, -6088116, 2212445, -2656974, +6269579, 7528541, -5606006, -5959267, 23675470, 23209466, 28672128, 17252884, 5694053, -7293392, +-7569343, 4287988, 8330089, 10188199, -15234786, -453119, -1813550, 7640747, 6038187, -10576357, +-13036299, -53150, -4937602, 12426951, 14629732, -8590, 7756711, 2550137, 3102577, 16889422, +-10313290, -13676250, 10787347, -17909476, 1551020, -5521181, 9887552, 5041755, 185757, 11557757, +10615549, -9650255, 12027519, -28454, -5141613, 2842732, 13065827, -5051956, 5591511, 9683541, +4386772, -20875152, -12065637, 2054605, 1106491, -14193256, -9693204, 4712116, 6756521, 5738077, +-19332184, -13507672, -13452374, -1069447, 8384850, 12221329, -30712774, -22577032, 3760244, 4718559, +17745732, 6254546, 6510097, 12916577, -1387274, -3316789, -4685810, 31712964, 10967199, -5005785, +-16592532, 15160698, 9908490, -4960687, -4505421, 2339147, -4564477, 8097087, -2922188, -1736241, +4771172, -1183264, -1899449, -2501819, 5010616, 12998719, 93416, 922881, 457414, 5651103, +7262790, -1853815, -4568772, 1961190, -424665, 1458678, 853088, 1109175, -6164352, -3370476, +4371203, 438087, -2507724, 2126546, 6082748, 4728222, -8156680, -1839320, -5422396, -5230197, +3872987, -6243809, 2447058, -3371549, 6059662, -7225209, -10075456, -19494856, -18979460, -15596100, +6016713, -2006824, 8800925, -17195976, -2838437, 805306, -6639483, -8046085, 13977971, -5354214, +2827162, -210453, 969052, -14020384, -5164162, -11988864, 1591285, 1585380, 3111704, 33153390, +-12918725, 9158481, 13951664, -7080791, -6687801, -10028212, -2030983, 15488189, -15804943, 10821170, +-1040456, -2630668, 1448478, 1590212, 8485782, 956704, -16767015, 12825309, -10446434, -24054502, +-19478214, -9752260, 32561220, 27635968, -15024869, -4319127, -20624970, -17204028, -6800007, 20123532, +518617, 13881871, 7248294, -9458055, 10573136, -7199439, -21467320, -1812476, -13019120, -2646774, +-6979322, 42372000, 382252, -35062504, 27528056, -11104101, -7824357, 27825482, 28267864, 100932, +-12386686, 5523865, 6908992, -38074348, -16391206, 1018981, -5604933, 19947438, 8434242, -28880970, +-4329864, -2309619, 13091060, 8341900, 5695664, 5189394, -6022618, 1040456, 2291902, 12099460, +-1503239, 1673427, 2368138, 2076080, 7102266, 3380676, 157840, -8244727, 10445897, -935229, +-52076, 497142, 10737, -4449586, -6960532, -4757213, 944893, -1709934, 3039226, -462246, +-3085397, 3333968, 7707856, -10245644, -3336653, -3118146, -1472100, 2935610, -199716, -2920041, +-5783174, -2156074, -1494649, 5223754, -16862578, -10484552, 5126044, 4002373, 9173513, 28868086, +4981625, -731755, 6759205, 1515587, -11996917, -7365332, 6473053, 1494649, 23574002, 5575405, +-1460826, 8536784, 12661027, 12836047, 13813689, 757525, -9674414, -2675228, -22111028, -2994129, +-24967182, 13944685, -15190226, -5871757, 84826, 20237350, -11712913, 11267310, -8222178, 6833293, +-10314364, 12921946, 19520626, 1343788, -4111358, -10482941, -15121506, 8484171, 9715753, 24752970, +-3337727, 1255741, 10916196, 39637716, -9230958, 5953899, -6397354, -22054120, 15511274, -3145527, +11035382, -1354525, 2749316, -13281649, 36702108, -55004572, 40520332, -63114008, 27235998, -32552094, +10140955, -25522306, 9218074, 16940962, -4023311, 12590697, -6448357, 46057620, -27906550, 30583926, +-47353088, 23912768, -18556944, 23005992, -15430744, -16719771, -8165270, -4228932, 11632382, -3177739, +-2030446, 1162862, 727997, -5911486, 8279087, -8919573, 8748848, -6445672, 2689187, -10258529, +-5731097, -7579007, 1371168, -6968585, 8638790, 9205726, -8711267, -138513, 3499325, 8448738, +-1267015, 3030100, 6930467, -6487011, 11454141, -3184182, 15146202, -9023189, 18141942, -12936441, +4671314, -1063541, 10120554, 8395587, -1603633, 4915590, -13973139, 15932181, -10944650, 3871913, +-11121281, 8053601, -14836428, 5098126, -1249299, -5439039, 5609228, 14039711, 11213623, 44458816, +-30917322, 12972949, 8119636, -26612692, -748398, -5189394, -7585986, -13648332, -742493, 1627256, +17670570, 6646462, 9244380, 13340705, 10749229, 458488, 14733348, -16940424, -2455648, 20540682, +2275796, -28049358, -6468221, -36723044, -6882685, 6475737, -6823093, -8513699, -1607928, 32940252, +8304856, 2580739, 4009352, 8293045, -2486786, -18797998, -5782100, -2030446, 3497177, -4285841, +-8817568, 23872502, 12811351, -4858145, -1138166, -5052492, -21534966, -17608292, -12917114, -10667625, +24024436, 5853504, 8864276, -14416595, -14068702, 4589173, 9776419, 9087077, -4074313, -2781528, +-16335371, -10724533, 14254996, 710817, -39533028, 13970992, 21561272, 6968585, -17231946, -10530186, +-8588324, 2899640, -12408697, 6190659, -29100550, -38823284, 16089484, 14093398, -7780334, -14232985, +10903848, -6337224, 2818036, 3441880, -5736466, 6287832, -3556770, -3595425, -2114735, 9410810, +-6659347, -1903207, -7284802, -42950, 603443, 6310381, 6468221, -670015, 3809099, -4538707, +7559680, -5216775, 6174553, -14251775, -6519224, -1919850, 4126390, -4625143, -9338870, -7108171, +3405372, 7421167, -281320, 9573482, 2672544, 3813931, 581968, 6247030, -3512210, 5971079, +-1433445, -11744051, -9069360, -3432753, 5365488, -6588480, 3899830, -36660232, 32088774, 39051452, +-3675418, 28391882, 1136556, 4335233, 12350178, -25087440, 9102109, 18559090, 18297634, 7679939, +5654325, -18142478, 13248363, 7799124, -11023570, 5851356, -2207613, 21625160, 5944772, 5524402, +12765717, -5138929, -14752676, 4247723, 27538794, -9884330, -5383205, 24879134, -9165460, -11149198, +-9088151, 8559333, 31995896, 44511968, -2789581, -28896004, 43656196, 15028627, -28782724, 32561220, +12457016, -8090645, -8370355, -12227772, -20285130, -1162862, 10632192, -17399450, -11398306, -36742372, +-5000416, 21374442, -44508748, -24111410, 7019587, 7167764, 8772471, 26990112, 23884850, -39553964, +321586, 1511292, -27992986, 7812009, 13316009, -14364518, -10252624, -12128988, 8109972, 31078384, +9725953, 16161962, -21253646, 10829760, -24064702, 2104534, -16183974, -65751116, 50287088, 12923020, +-18352396, 34039228, -11744051, -15510738, 9156870, 6956237, 8757975, 13310104, 5383205, -13371307, +-4246649, 13058311, -429497, 5024575, 2105608, -2144263, 3205656, -5865315, 4343286, 12200391, +4404489, -7199439, -5326297, 3724811, -3267396, -6532109, 2489471, 7611219, 4423280, -22741314, +-6877854, -16748225, -8689793, 9761387, -7467338, -9361418, 8909910, 5756867, -9816685, 12469364, +-9210020, -4030290, 4478577, -7228967, 8196945, -3646427, -13492103, -20862266, 24039468, 79703856, +-25447144, 702227, 6124624, 35986996, 31905164, -10442676, -13852880, -20099910, 855772, 15243376, +-507880, -10276246, -10569378, 14384919, -7849590, -19335406, -17285632, -3491809, 29287918, 20542828, +-23291608, 1564979, 423591, -10155450, 11545409, 4271882, -8312373, -2743947, -6538014, -3123515, +37387152, -13923210, -24831354, -17380658, -14113799, 33064268, 913754, -7667591, 30445950, 20928838, +8318278, 15493021, 29938070, -18210662, 4614406, 29127932, 17029546, 22251688, -25282324, -7129646, +-948114, 10656351, 10038949, -23933168, 2279554, -31442918, -47288664, -2498597, -12514461, 21951578, +24413130, -6411850, -1944547, 4950487, -17199196, -45808512, 30817464, -22203908, 4758287, -8556649, +-15496242, -8997956, -17969070, -36318780, 21432424, 19068582, 23142894, 4453344, -28864864, -50706920, +-15063524, -14042932, -6214818, 16002511, -10384157, -2558727, 3045669, 2125472, -8080444, -3715147, +-6495065, 754841, -2904472, 5326833, -3200288, -3969624, 5859946, 7611756, 6037651, -12306155, +3993783, 653909, -1132261, 99858, -26972394, 1254667, 3700651, 3911105, -17783312, 11500312, +-2576444, -14846628, -12127377, 7115150, 9474161, -1849520, 5611375, -9193377, -6449431, -6296959, +683437, 10924786, 2749316, 10423886, -302258, 4771172, -15706695, -2544768, 3780108, 2078764, +-12459163, -3775813, -39140036, -22436910, -18248242, -46079092, 53204444, -1219771, 28021978, -6394670, +1392643, -32116154, -17566416, -16571058, 3707094, 25164750, -1159104, -26201984, -19602230, -37455872, +-41704132, 35763656, 13187160, -32457604, -10082436, 16014322, 29773788, 4172561, -36970004, -22473416, +7275675, 10340134, 9165460, 21577378, -22991496, -21808234, -3361349, -7739531, 3032247, 6426345, +-44427140, -8185671, -30991410, -19839528, -41329396, -15661598, 56581364, 9760313, 1773285, 13883482, +14017163, 4435091, 42041288, 33298344, -11026255, 11313481, 56810068, -14885820, -13293998, -13571560, +-42355892, -1631014, -23201414, -52585432, -55175296, -28913182, -28494960, 12885976, -21347062, 1866700, +11161009, -37470904, -13758391, 238908, -187905, 9674951, 24477018, 16295643, 29520384, 40018356, +29003378, -3574487, -21162914, -30655866, -2637110, 12688407, 3710315, -4313221, -409633, 8692477, +6993818, 18849000, -2148558, 3005403, 307627, -6280853, 6134824, 974421, -3063922, 16107201, +6939057, 3656628, -15127412, 10159208, -5449777, 7661685, -14359149, -39756900, -1898376, 15698105, +-3002719, -21103322, -13581760, -15444702, -11686069, 5036386, 6892886, 7883413, 2110977, -1413044, +5873905, 15557982, 25927106, 24531242, 30456686, 26115012, -2550137, 17559436, 39727372, 2822867, +-17523466, -24922622, -25156698, -34163244, -27809376, -13284871, -14970109, -2090039, 35221952, -23026394, +6957847, -26669062, -9042517, -29083908, 3735548, 35279400, -811212, 21805012, -43616468, 38343320, +12850005, -7857106, 30392262, 4261682, 13826573, -12155294, -14347338, -272730, 9312563, 7137162, +-30455076, 27960238, -33749852, 4135517, 9446781, -11457362, 19894826, -20977694, -11916387, -2316061, +-7484518, -10619307, -2342905, 4502200, -15583752, -18369038, -5950677, -3214246, -4508642, 11162620, +6067178, 4548907, -22282828, 5930813, 27114128, 35941360, -26511760, -13357885, 30561914, 41794864, +-25338160, -15671262, 17627082, 7398081, -20122996, 16709570, -47270948, -9309342, 19267224, 37790880, +4920959, -23442468, -21195126, 5736466, 45296336, 3948686, 6794639, 1359357, 15035070, -2901251, +33666100, -368293, -37234144, 23502598, -24291798, -7450695, 10314364, -14219026, 3409130, -30316026, +-11288248, 28111634, 12958990, -12594455, -17993766, -9851044, 2366527, -14615237, -4395362, -3222299, +-8940511, -5491653, -4305168, -18975702, 12040941, -7092065, -8397735, -27485644, -6906308, 20219096, +-13961865, -7721278, -7261716, -15697032, 30262340, 12410845, 1201517, -992674, -16749836, -25160456, +1660005, 22507240, 18526878, 6199249, -18866180, -11057930, -8391292, 10980621, 2075006, -16828756, +-4099010, 1093606, 6710350, -14968498, -9996536, -8829379, 23551454, 12037720, 1604170, -14539001, +-12512313, 13161390, 28309740, -282931, -12048994, -17365626, -5794985, 7849053, 716186, -4001836, +1104880, -3464428, -2565706, 2673080, -56834764, -15902653, 9708774, -19330574, 56313464, 41024992, +27085138, 14196478, 38018512, 26644366, 9004399, 18095770, -44542032, -60117732, -8256001, 404801, +-15349676, 7850664, -2784750, -15832323, -19582904, -16209743, 31150324, 26865558, -21567178, -2957622, +-2936684, -5614059, -7615514, -11460046, -16304770, -23124104, -4299799, 40349072, -12874701, -22687090, +-10665478, 37860672, -17678086, -17655000, 58954332, 20772610, 10003516, -14487998, -32240172, -22748832, +-33257006, 8855149, 27630062, 74175696, -65212636, -27864674, 38434588, 52910776, 9373229, -3277060, +68245960, 32516124, -21383568, 21586506, -7730405, 145492, -47068008, -23906324, -16372415, -77454368, +-32689532, -12564390, 41769632, -22608170, -12914967, 30988190, -1947231, -4196720, 7556458, 21793200, +-21012590, 15391015, 23779624, 493384, -4380867, -43728672, 20276004, 15615427, -50363324, -3686693, +5590437, 3246995, -4172024, -22436372, 6094022, 3790309, 6429029, -3561602, -6354404, 16134582, +3571802, -3379066, 11258183, 4607426, 29799020, -4069482, 9859634, 1869921, -23438710, -20536386, +14541149, -11433740, 8890582, 11078868, 7002944, 6840273, 324807, 19609210, -6130529, -4912369, +-7608535, 5627481, 15408732, -23007066, -8429410, 11049340, 5266167, -13034689, -23336168, -5998996, +6577206, 49292264, 18099530, -4116189, 12794171, -2502355, -4552666, -18168786, 8727374, 7524246, +-14321568, -6982006, -52141440, -2122251, 21483964, -5037460, -21738976, 9519795, -4878009, 23463944, +4696010, -11365020, -174483, 25119116, -14292577, 4042638, 9079561, -7641284, -215822, -13587666, +27741194, -1664837, 4132832, 445066, 13408888, -6068789, -5216238, -8669391, 5548561, 10425496, +-4564477, 12385075, -5358509, 7632157, -13007845, -10248866, 15799574, 20259898, -26170310, 1224603, +39192, 2454574, 8253854, -16466368, 25266756, -22626424, 20337208, 2848100, -35321812, -1924682, +27576374, -35955856, 17162690, 158377, 4652524, -8631811, -5379984, 7268159, -10424959, 36826660, +-27236536, 4074313, -7304666, -3302830, 9088151, 517544, -4464619, -843961, 11141682, -345745, +-12773770, 3602941, 6491843, -21392158, 16648904, 7515119, 789200, 15346455, -5612449, -4745939, +7229504, 3353833, 4587025, 2609730, -4229469, 8664023, 3733937, 642635, -9356049, -1545115, +4575214, 8304320, -14202920, 7434052, 8853001, -12554726, 5958194, 1842541, 2139968, 6626061, +-3733937, 1480153, -2340220, -18211198, -273804, -4403952, 7955353, -5130339, 3037616, 1997160, +-751082, 2428267, 4609037, -3018825, 4295, 819265, -130997, 1315871, 5534066, -5647345, +5185100, -4125316, -26274462, -74187504, -105962208, 35633196, 94238560, 20808042, 261197360, 215122032, +145350288, 245979760, 128133368, -8739185, -30689152, -97119408, -224258496, -185192016, -180112672, -250465312, +-185173216, -54378580, -40103184, -6555731, 87158312, 40580460, -10827076, 55288040, 91443608, 44781476, +42848204, 83224120, 49582712, 38241316, 75406744, 118406880, 49300320, 69510288, 111144624, 19077708, +7546258, 98209792, 58076012, -37649684, 47359532, 61028800, -63678260, -18997178, 70382168, -14176076, +-42127724, 90914256, 48194364, -56398828, 48798344, 64725156, -86312200, -80798000, -34509524, -208447648, +-276600736, -173480704, -244529136, -325952576, -227131296, -232436656, -300528000, -237652896, -164791456, -178677088, +-106789528, 10205916, 66716412, 145021184, 237282992, 295772384, 364217536, 404668608, 442085824, 468772608, +420947072, 331012064, 305788800, 196009952, 59263568, 46551540, -31323196, -150494576, -118199648, -50157700, +-111970336, -115118008, -24298240, -81093816, -155436480, -93868656, -68067712, -139036688, -118374664, -41826004, +-105197704, -124978176, -9959492, -6238977, -56297356, 22367652, 13051332, -90618440, -67170064, -38986492, +-129012768, -177761712, -145357264, -198545056, -246279872, -182703072, -146731120, -139179488, -60919816, 28548110, +74086576, 109913584, 151769648, 171272560, 153622384, 200292048, 256780528, 266178992, 248589488, 253168992, +244185536, 198255152, 223857984, 202116336, 86896312, 11434814, -49597208, -109308528, -115546968, -95266672, +-112528144, -110007536, -95225864, -93947576, -100153808, -82252384, -73451456, -70123928, -66205848, -51005420, +-48302812, -50069656, -39617852, -25890600, -23276038, -14841796, -1594507, 6151467, 6395743, 7705708, +2896419, 1775969, 0, 0, 0, 0, 0, 0, }, }, { { 4054449, -9705015, 164283, 397821, -4638028, -3712999, 2798171, 1709934, 250719, 3958349, -5982890, --2035815, 9687299, 654446, 1883343, -2555506, -3277597, 4550518, 3805341, -1604707, 3745212, -151934, 605054, -3704409, 1323387, -3373697, -2634426, -3314104, 1117228, 125628, -1085016, --380105, 1123671, 2874407, -1386738, -5276904, 81604, -3764002, -4810900, -1267015, 2155537, --746251, 1923072, 1219771, 1762010, -764504, -685584, -910533, -787053, 1614908, -66035, -3328063, -458488, 4122632, 676994, 927713, 3919158, 1393717, 996432, 5076652, -2076617, -1675037, -1777043, -3600256, 3288871, -1197759, -1074, 1212255, -613643, -2990371, -931471, -2143189, -1402844, -81068, -2909304, 1394791, 181999, -1938641, 222265, -3090229, 451508, --2964064, -278636, -44560, -410169, 1708323, 812823, 446140, 928250, -325881, 1714229, -1251446, -156229, 383326, 370441, -64961, 46708, 572841, -740882, 396211, -942745, -791348, 69256, -146029, -57445, 655519, 151398, -605054, 191663, -31675, -367757, --913754, -12736726, -6614250, -2976412, -2764885, -13422, 31675, 945430, 179315, -715649, --5219459, -2368675, -5348845, -8376797, -6998113, 3947612, 4869419, 4925791, -1943473, -585726, --557272, -1102733, 1812476, 755914, -1784022, -3797825, 2732136, 2331630, 3413962, 891206, --1151588, -2080912, 967441, 1628866, -390842, 3467649, -1690070, -100395, 3370476, -2583960, --4097936, 323196, 5663988, 1298691, 1251983, 789737, 47782, 722628, -878321, 1004486, --4478041, 726386, 4643934, -1067836, 67109, 456877, -1586990, -891206, -645856, -759672, --1244467, 2837900, -2668785, 2785286, 2374580, 5213017, -363462, 2928631, 6659347, -1233193, --5369783, -6021544, -291521, -790811, 322659, -5111548, 1479616, -3589519, -2669322, 1222992, -3725347, -1538135, -2846490, -3409130, -667331, -377957, 936303, 296890, 2139968, 1263257, --121333, 1077500, 309238, 2109903, 1596654, 1001264, 456877, 457414, -373662, 1410360, -64961, 420370, -176631, 26307, -1069984, -4295, -209380, 8849780, 6982543, 2968359, -3580392, -2310693, 1621350, 6119255, 3008088, 6590628, -2557653, 2656974, 3788161, -191126, -4854387, -2507187, 3039763, 551366, -3084860, -788127, -571768, -194347, -865436, 361314, --1541356, 485868, -1124208, 6027987, -1373853, -333397, -2684, -2720862, -7652021, 4360466, --1805497, 1683090, -3031173, -2881386, -3243774, -2159832, 2004676, 5782637, 4575214, 1920387, --316754, -1243393, 1847373, 4155918, -911607, -1365800, 5160403, -2282238, 2476586, -2567317, --2001455, -1231045, 1927367, 2038499, -3607236, -2490544, 108985, 3868155, 5021891, 2719251, -3915937, -538482, 3668976, 1438277, 3852586, -2164664, 1549946, 8792335, 4105989, 3731253, --894964, -2473364, -5989332, 3480534, 1505923, -2474438, -2477659, -815507, 1836099, -1821603, --834834, -1639604, 61203, 1258425, -528818, -2468533, 719944, 851477, 1422708, 1462973, -205085, 2071785, 1025423, 861141, 645319, -678605, 1466195, 135828, 0, -710280, --1077500, -1185948, 293668, 851477, 356482, 54761, 267362, -71404, 1317481, -1795296, --423054, 543313, -712965, 717796, 2754685, 10166188, 1449015, 3689377, 7364795, 139586, --4208531, -1805497, -1262720, 290447, -2651069, -7227356, 2902324, 243739, 157840, 3020973, --4792647, -2215130, 7550553, -1850057, -2849174, -4472672, 155156, -4226248, -703838, -1410360, --1269700, 542240, 6101538, -196495, -1912334, 1789391, -4847408, 6505265, -827318, -1462973, -8135205, -4685810, 388695, -5537287, -2529736, 471373, 260382, 2128693, 2569464, -4940823, -1473711, 2070711, 1687385, 474057, 2335389, 1693291, 3409130, -3127810, -1668058, 6418292, --2667175, 2452963, 615254, 1844152, 1661079, -545998, -2171643, -336618, 4537633, -2698850, --296353, -1434519, 1054415, 4047470, -2270427, -5048734, -9748502, 609349, -397821, -839666, -42950, -3750580, -2623151, -5439576, -2138357, 2707977, -86436, 1685238, -642098, 3388729, -2352568, -31139, 1764695, -135828, -205085, 1176821, -2110977, -1129576, -1712081, -10737, --2044941, 1224066, -68183, 584652, -755377, -656593, -79994, -736050, 478889, 775242, --1892470, 909996, 776852, 450972, -1803886, 964757, 650688, 1717450, 1813550, -158377, --615791, -940061, 909996, -471373, -324270, 344671, -4330938, -10963978, 5577552, -3653407, --6138582, 209917, -11588359, 2443837, 3634079, -1358283, 8585103, -3333968, -10186052, 2385854, -3961034, -3644817, -7186554, 12322261, -710280, -817654, 3218541, -2818572, -1520418, 1189169, --6001680, 3480534, -577136, 1674500, -1204738, 5720360, -1400159, 3172370, 2923262, -5805722, --2743410, -3306588, 6020471, -3042984, -1714229, 4446365, -1513976, -3445101, 2688113, 8221105, --4152697, 3966939, -4292283, 5378373, -2947958, 2798171, 613107, -3012383, -8434242, 4674535, -6179384, -648540, -1893007, 3442416, 4348655, 4089346, -5788006, -740882, -5099737, -548145, -1872606, -3673271, 1442572, 3974992, -4251481, -163209, 882616, -4190814, -2952790, 3791919, --2707977, 2983929, -1745367, -5361193, 1126355, -5199595, 1379758, -2007360, 1841467, -5718749, -5259725, -4325032, 576599, -4024921, -93952, -303869, 1107565, -476741, 9664, -1296543, -1409286, -3888019, 1376537, -3193845, -2494839, 19327, 2337536, 1044214, 456877, 668404, -176094, 1326071, 2965138, -2515777, 2469069, -1641751, -305480, 1509681, 1263794, -1796907, -6979, -4398584, 5557151, -6121939, -6093485, -10421201, 4381404, 11029476, 1666447, -1970316, --964220, -1848983, 9587441, -5750425, -5257040, -1233193, -5794448, -1770063, -6294275, -2706366, --4421132, -8721468, -2460480, -1917166, -316754, -950798, 2255395, 5216238, 1850594, 2587718, --8028905, 1003412, -139050, -2501819, 2774549, 1494649, -2346663, -1022739, -5717139, -6319508, --932008, 7031935, -2064269, -3597035, -779537, -2327872, -4937065, 97711, -5154498, 10547903, -8879308, 2314451, -2718178, -2450279, 926102, 1602560, 1816234, 1752884, -643708, 3938485, --3721052, 1752884, -3273302, 120259, -39192, 2220498, 1539209, 4962835, -2142115, -3016141, --2769717, -11418707, 357019, 2405182, -1155346, 4169340, 1794760, -3419331, 996432, -5981816, --2231236, 521839, 4600447, 1983738, 6294812, 1289027, -752693, 61740, 2334315, -2580739, --328028, 627065, -1079111, 1636383, -2255395, 1212255, -1717450, -1378148, -278099, -1900523, --1886564, -2331094, -1239635, -660351, 1773285, 1501628, -1744831, -2469069, -755914, -1881196, -1330366, -2101313, 1052804, -1209033, -345208, 2159295, 155693, 1811939, -10768557, 1743757, -10979010, 10347650, -11121281, -10151155, 2622615, -8078297, -4290673, 1155346, -567473, -3306588, -8331163, 3680787, -11748346, -966368, 696322, -125091, 7501698, 2773475, -5460514, 7883950, -2942053, 1019518, -4239133, -4532801, 3377992, -2916820, -7959112, -1475321, -1040456, -3581466, --4750771, -6445136, 6830609, 452582, 1008780, -4474282, 109522, 4817343, -3820910, -8103530, --8184597, 8560407, 1930051, 8078834, -1291711, 2292976, 5973226, 12124693, 3924526, -1558536, --6204081, -2698313, -3092377, 1813013, 658741, -4874251, -1964948, 7034083, 4993437, 9568650, -4497368, -6678138, -6353867, 7909719, 4226785, -4214437, 49392, 8147553, 641024, -498753, --6356552, 6985765, 5266167, -1291175, 9780714, -1504849, -2816425, -10263361, -1347546, 466541, -5444945, -7099044, -433792, 3101503, -1720134, -5121749, -4759361, -690416, -471373, -977642, --5950141, -5314485, -3117610, 1850594, -108448, -2473901, -809064, -380105, 530428, 442382, -891206, -559420, 2012729, -1704565, -410169, -5369, -1177358, -3992172, 270583, 2231236, --705985, -3533148, 307627, -894427, 1248762, 147103, -429497, -367757, 1153736, -593242, -2126546, 1036698, -55835, -1982127, 1441498, -1575716, 1456531, 1793149, -4409321, 1745367, --1649804, -889058, 5393942, -8987756, 5403606, -5893232, 1062468, 4711579, -62277, -2396592, -1760937, -6171868, 245350, -4807679, -13950591, -4270808, 5899138, 3813931, 2146410, -3398393, -2841658, 1268626, 14886894, 2550137, -5051419, 5531381, 1081258, 1169305, 9892383, -2866891, --2800856, 3430068, -6997576, 8382703, 7740068, -202400, 4371203, -1654099, -4291209, -581431, --5389110, 425739, -5277441, 2028835, -91805, 1493038, 589484, -9051107, -1875827, -1190780, -483721, -4575214, 1951526, 1975685, -1751273, 11876121, -5217312, -10609106, 6298570, 10382010, -2345589, 2663417, -4613869, 8904004, -3064996, 1474784, 3995393, 1144609, -4065724, 4234301, -1828582, 484794, -44560, -8185671, -2898566, 3978750, 7231651, -2834679, -5377299, -7449621, --2435783, 2474438, 1355062, 3689914, -9172440, 1701344, 6155225, 790274, -367757, 2341831, --1921998, -1061394, -265751, -517544, 3226057, -929860, 1020055, -981937, -678605, -725313, --2349347, -1336809, 1104344, -1659468, 2221572, -370978, -406411, -1094143, -1321239, -6969658, -651224, 3702262, -190052, 1281511, -671626, 2289755, 774168, -1376537, -1605781, 1276142, -30389042, -8327405, 183073, -3066607, -1944010, -6772090, -153545, -17808008, 9247065, -6402723, --452582, 10300942, 5086852, -6842957, -7342247, -2752537, -6279242, 5659693, -14732812, 2712809, -6095096, 8419747, 1650878, 2503966, 332323, 1364189, -1955821, -4640176, -13470091, -1999844, -1694902, 6179384, -4862440, 5957657, 2314451, -2464774, -881005, 4609574, -4892505, -4625680, --2672544, -3540127, -544924, -11934104, -5596880, -2863670, -357019, 9421011, 2087354, 8986145, -3076270, -434865, -5684389, 667331, 533113, 1349157, 3089155, 12602508, 1447404, -11846057, -3022583, -4661114, -360240, -4485020, -5022428, -2365990, 4804458, 3102577, -20969640, -7886097, --6263136, 3936875, -935766, -4526359, -2920041, 11787538, -4890357, 9048959, -8593156, -6465537, --9302899, -5087926, -9887015, -1576790, 13116830, 3041374, -1627793, 1534377, 5551245, -153545, -6852084, -3923453, 2614025, 3812857, 4633196, 1803886, -871878, -9171366, -3431679, -4734128, -18790, 2908767, 2503966, -1896228, -708133, 3798899, 1548873, -3064459, -1316408, -2166274, --985695, 112743, 1931125, -1657321, -1622424, 4840428, 4076461, 1246077, -637803, 1713692, -3323231, 188979, -3059627, -358093, -3121904, 719944, -2809982, 1559073, -4690641, -5100811, -3808562, -9479530, 557809, -22160420, 5369246, -7236483, 2138894, -7522099, -16397648, -2490007, --3836480, 11651709, 4900021, 4218195, -417149, 15455440, -11613055, 2868501, 4356708, 11951820, --13748190, -7791608, -2740726, 1175210, -941135, -3854196, -1296543, 4160750, -7411503, 1556389, -4351876, -799401, 577136, -5916318, -6849936, -4179540, 18420040, 219043, -4499515, 7224672, --4444218, -9222369, -7614440, -4972499, -1345935, 3326989, 670552, 695785, 10226854, 9417790, --1699733, 3395709, 2249489, -11764989, -8126078, -450972, -953483, -3032784, -8074002, 9976135, -11966316, -9749039, 6459631, 6136435, -1921998, -9312563, -15145128, -14609868, -11322608, -6598681, --13069049, 1261647, -10698227, 6486475, 5773510, 1026497, 129386, -18187040, 1196148, 415001, -1347546, -9284109, 3147137, 10453950, 1400159, 2710661, -8266202, -5046587, -1009854, -8636642, -2035815, 5505075, -2566780, -3155727, -3997541, 3470334, 5534602, -9592809, -5288179, -393526, -6465537, 2477659, -2805151, 2352568, -328028, -17180, 2916283, -1772211, 3755949, -4203699, --1498407, 3224984, 2744484, -974421, 7267085, 558346, -4529043, -3766686, -632971, -3084324, --2856690, 487479, 2065879, -1250909, -9032853, -7677791, -5236102, -6020471, -1839320, -13604846, -635655, 14735496, -5182415, 7730941, -3085934, 14689862, 12526809, 5092758, -15308874, -4013647, -20509006, -5378910, 15208479, 2291902, -14539538, -7470022, 17179332, 277025, -11523934, 177167, --9823664, -1447941, 3496640, 1314797, -1955821, -17202954, -15184857, 4101157, 11007464, -9867150, --850940, 4193499, -724776, 1587527, 18276696, 3271155, 2669859, 1490891, 6047314, -8178155, --5723044, -4240744, -19245748, -6622303, -7218767, -5071820, 5087389, 3310883, -1212255, -2000918, --7611756, -11622718, 15069430, -3325915, -13233331, -6280316, 2695629, 10014790, -7994545, -2580202, --8485782, -1668595, -10139881, -2026151, -2159295, -20454782, 1872069, -6935836, 14121852, -3706020, --11474005, -21687974, -14256607, -2761127, 1795296, 7531762, -5592585, -5173288, -11780558, 10733123, -18228378, 1880122, -2160906, 6158446, -4761508, 6817187, -5141076, -2524904, 2346663, 5208185, -3783329, -6402723, 221728, 1296543, -84289, -484258, -1600412, 1696512, 6471442, -2736968, --5690295, -268972, -1276679, 2946885, -47245, 6277095, 435939, 2288681, 221191, -3867618, -1009854, -1552631, 6754373, 387084, -4308389, -818728, -1049046, 4519380, 442919, -4949413, --767189, 3487514, -1618666, 855235, 7036230, -24910810, -12749610, -8559333, -13653701, -7281044, --5600638, -14122389, 14839649, -4289599, 22408992, -11310260, -16947404, -3283503, -11385421, 19313394, --6666863, -10172093, -4737349, 5184026, 9791989, 8435853, -2061584, -2259153, -4448513, 2134062, -15889768, -418222, 1493575, -5119064, -2034741, -8329552, -2749853, 3701188, 2714419, -6885907, -304406, -10191957, 2019172, -3042448, -3078955, 4168803, 1911797, -4744328, -1931662, 8718247, -3246459, -7212861, -9526774, 15856482, -785979, -25239376, 13100187, -2796024, -10759430, 5090610, --1593970, 1162326, -2498060, 8785356, 3353833, 904628, 24206972, 23944442, -8494908, 2619393, --18044232, -3818763, -3510062, 7649337, -2807298, 1248225, 7336341, -5439576, 13794898, -5848672, -1464584, -18754512, 7732015, -4876936, -13192529, 6600828, -3101503, 26420492, 6224482, 5041755, -9705552, 1100049, -9290014, -727997, -3873524, -2260764, 2574833, -3263638, 5306969, 3307125, --4112968, 6739878, 3738232, -4408247, -1238561, 412317, 599685, -1802813, 1355062, 2370822, --720481, -1969243, 373662, 2109903, 1153736, 1601486, -4338454, 4324495, -8599061, 7570417, --5094368, -2910914, -674847, 3954591, 5529771, 1521492, -6562173, 78383, -2713883, -1534914, -1440962, -6193343, -11389716, 3335579, 29972966, -22464290, -7180112, -14201309, -9440875, 11394548, --12914967, 27544700, -3206730, 8453033, 1547799, 6733972, -17073032, 3189550, 4511863, -1208496, --2547453, -1446330, 5077188, -10448582, -6345278, -1434519, -2949569, -12928388, -11506754, -3039763, --5308043, 15735150, -4060355, -7383586, -5347235, 5442261, -8029978, -3361349, -13917305, 6577206, --5302674, 5801427, -4911295, 7363185, -3710852, -24004572, -12228846, 3594888, -1853278, -1429687, --7480223, -14281303, -802622, 6349036, 4262755, -3218541, 4741644, 7403987, 22825066, -9747428, -10823854, -25632364, 1636383, 3801046, -3031173, -7342784, 5223217, 993211, 1206886, 5791227, -18145700, 12327093, 9306657, -4836670, -5834176, 8995272, -10911901, 2711735, 9188009, -6477885, -22694608, -329639, 7053410, -6169184, 13094282, -12432320, -12250320, 416612, 4602595, -5609764, --1363115, 14180908, 139586, 12911745, 4722854, -1982127, -2032593, -7349226, -587874, -379568, -3644817, -469225, -5912023, 1035624, 2663954, 7320235, -10674067, 1847910, -5417028, 2260227, -6098854, -2083596, -165893, -5571647, 1837709, 2083059, -3611531, -12855374, -8049843, -5080947, -2495376, -6794102, -3859565, -4556961, -4082903, 2585570, 4967667, -142271, 4121558, 1582696, -2195802, 752693, -9295383, 7886097, -6860674, 12038256, 35474820, 25130390, -6750615, -15731928, --10660109, 21538724, -25599078, 1370632, -6489696, -6278169, 10467372, -18764712, 2501819, -9599789, --237297, -13057237, -10073309, 1522029, 683437, 524523, -12608950, 20099910, 4072703, -8993662, -3645354, -2656974, 1766842, 29968134, 9469866, -8367670, -7361574, 1453846, 9300215, 2507187, --22405234, -5517959, -15487652, -5174362, -7248294, 7568269, -4173635, -2129767, -143881, -773094, --10981158, -12758737, 8316668, -4833986, 2256469, -600759, 11162620, -9061307, -6470905, 2837363, -4669167, -11995844, 13396540, -8391829, -19522774, -18213346, -6500970, -5229660, -7888781, -4083440, --27757300, 9800042, -13166222, -4183298, -10989748, 15391552, 5010080, 7363185, 4295, -2365990, --13418015, -4064650, 18139794, -14931991, 21980032, 16769700, 5909875, -3960497, 776852, -3106872, -3176665, -9712532, -7786776, -4849018, 1360968, -1333587, 1417876, 4096325, -7026567, -1759863, -7125888, 7392176, -2881386, 4592394, -3900904, -6346888, -2765959, -2002529, 4734128, 1246077, -1806034, -6280853, -4066260, 2139968, -2278480, 1987496, 2656974, 4424890, 8847096, 3473018, -4991826, -5950677, -3346317, -2065342, 2655901, -2918430, 1258425, -2706903, 1316408, 8888972, -4296041, 2375117, -1628330, 5569499, 1872069, -2394981, -34999688, -4329864, 23318988, -28592134, --11374147, -688805, -8740258, 10372346, -5928666, 32329830, -3222299, -7023346, -5320391, -1424319, -9505299, -6419366, -6197638, 26382374, -19281182, -2346663, 6192269, -4268661, 16560320, 9310952, --1091459, -2068564, 7067906, 9379672, 10271414, 8369281, 17525078, 5564667, 7580618, 4544076, --5594732, 29214904, 3751654, 5452998, 7459822, 4344897, 21167746, -1512902, 5283347, 7263327, -6175089, 3438121, 13993540, -8248485, -6567542, 13841069, -2469069, -13997298, -3515431, -24464670, --8240432, -4708895, 23222888, -21925808, -2760053, 935766, -679142, -1277216, 13722421, 37376952, --6456410, 4672925, 4345433, 5653788, 17908404, -19351512, -19783694, -18060338, 31908922, 2339684, --11913702, 29220810, -11086384, 25473452, -13660680, 9763534, 1140314, -33916284, -4866198, -8492761, -9771587, -718870, -2861522, 201863, 6163278, -926639, -10223633, 5524402, 208843, -4814122, --39192, -9038759, 12187507, -1322313, 4410932, -5775658, -5147519, -5165235, -6834904, -665183, -249108, 11558294, -471910, 1267015, -4583804, 1277753, -10923712, 3481071, -10528039, -1970853, --2240362, -9457518, 5051419, -7489886, -7476465, 1644973, -10446434, 3216394, 8427263, 7821673, --3908957, -3698504, 2059974, 3170760, 7330436, 9298067, 20734492, 1889249, -20896626, -61448096, -12311524, -14756971, -23753854, 26623428, -15943992, -8203388, -23392002, 6077916, -4626754, -22852448, --7398081, -13566191, 6416681, -12562779, 645319, 4909685, 10313827, 5245229, 17447230, 2758443, --89121, -1792075, -14623290, -11238319, -10401337, 8463233, 13054016, 6071473, 4665945, -355945, -5066988, 10226854, 23836532, -11249056, -6227166, 4193499, -10770704, 11471858, 2530810, -10394895, -24260122, 8863202, -20342038, 8075076, -19566260, 2343442, 3790309, 10347113, -5529234, -6602439, -30835718, 11986180, -13195750, 8062728, 16334297, -12608413, -26801670, 14936286, -2111513, -277562, -2253247, 6568079, 41712184, -3842922, 5260798, 8017630, -82678, 9612674, 5647882, -22069152, -4744328, -11722576, -10229001, -6149857, 5092758, -35662188, -4292820, 11191074, 1820529, 17795660, --12991739, 12620761, -8468065, -3685619, -4744328, 5681168, 2524904, -4319664, 88047, 46708, --6273337, 5105106, -7933342, 8457327, 1178432, 5909338, 5035849, -3551401, -2915746, 1531693, --2172180, 1280974, 2001992, -3446175, -1214939, -3968550, -2774549, -2583960, -7106561, 194884, -1048509, 4225711, -2257542, 4072703, 9767293, -5033165, 1639604, -5050345, 2615635, 3144990, --8137353, 144955, 2674691, -7676181, -3799436, 6787122, 110059, 1395864, 1535988, 310848, --19010062, -21875880, 46920372, 10037339, -3032784, -5647882, 10582263, 42406360, 19449760, 5079336, --1229434, 14221710, 35408784, 8818642, 12206834, 11050414, 25244744, -16267726, 16350404, 7277822, --48476760, 14369350, -6857452, 14382235, -15097347, 11411728, 7567196, 15069430, -122407, 6399502, -2357937, -13744432, 6855842, 13651554, -11446625, 6868190, -11115375, -6671158, 34750580, 3565360, -30767536, -21883396, 9579388, -1107565, -4408247, -675384, -2678986, 4795331, 11274826, 7837779, --861678, 17596482, -28032178, -26405996, 19160922, -15023796, -3879966, -3507915, -18130668, 9148817, --4783520, 5168457, 2804614, 29795798, 14457934, 15706159, 5887864, 4221416, -27097486, -6228777, -13318694, -248034, 331786, -20938, -8700530, -23563264, 4502200, 2180233, -17651242, 2493766, --8486855, -6973417, 7396471, 4984310, 26723286, -3835406, 6787122, 6382859, -5159330, -6913287, --764504, -6572911, -2545305, 15739981, 6565932, 2838437, 770410, -306016, 358630, -215285, --957241, -10709501, -3288871, 6513855, -1891396, 638876, -3988951, -5420249, -2228551, 1714766, -12754979, -8540542, -8263517, 7495792, 3657165, -9592809, 6721624, 4048007, -6818261, 8513699, -673773, -5145908, -2420751, -3575560, -1644436, -1670742, 4203699, 2107755, 2081449, 4829154, -7025493, 5214627, -1414655, 12181064, -42531988, 36284956, -15293842, 7169374, 23478438, -34000036, --887985, -2732136, 8287140, 12954158, 14776835, 25667798, 4304094, -16168941, 9039296, 27325118, --38501696, -22428320, 25861072, 1556389, -199179, 1452773, 2215130, -464930, -665183, 13451838, -8108362, -18258980, 1174137, -4968741, 32160178, 19684908, -6576669, 2180233, 3864397, 4236449, --215822, 11924977, 1168768, 9217000, 32822140, 4768488, 3452617, -4727686, 8422968, -30983358, --13526999, -12888123, -1405528, 3536906, -27557584, 11044508, -24460912, 8450348, 25334402, -5383742, --22834194, -12093017, 9426379, -4337380, -46627776, 12857521, -32548872, -6999186, -4061429, 1149978, --13059922, 3375844, 16409459, -13438416, -30931818, -46416784, 36294084, 11078331, -5702106, 10386305, --10996190, 11097122, 20125680, -20912732, 36080948, 4978941, -3846143, 16765942, 9511742, -5814312, -9315247, 682363, 10055592, -9786083, -5213554, 2716030, 7265474, 12521440, 3721052, 11286637, --7473780, 6406481, 11726334, 10407243, -1745904, 9474161, -10183904, 4032974, 960462, 4359392, -19551764, -13064754, 7770670, 1063541, -745714, 15260019, 4166118, 19895362, -2624762, 9827422, -2599529, 7752416, 2216203, -4092567, 5951751, -10282152, 8870718, -3810710, 7344394, -1763084, -1967095, -834297, 1474784, -148176, 7689602, -1758252, -1918777, -1045825, 3274913, -383863, --862215, 359704, 1599875, 1101659, 1327682, -964220, 1326608, -1131724, 1253594, 881005, -1402844, -2665564, 51849920, -55794848, 22557706, 28368258, -34955664, -10785200, -18817862, -10368051, -51481624, -23176180, 36536212, -17150342, -4916664, -9289477, 11978127, 4466766, -44513040, -8513699, --11778948, 19084150, 1006633, 7926899, 15503758, -21889300, -4005594, -14048301, 7834557, 17969070, -11332271, -28268402, -4829154, 5411122, 3838627, -1978369, -13139916, -5692979, -25238302, -4868883, --3417183, 23096724, -20577726, 50705848, 11340324, -15112379, 22601728, 576063, 29320132, 15714212, -27836756, 6585259, 25446608, 20431696, 24902220, 25905096, 4122095, 25062744, -32196148, -5788006, -6958384, -21525302, -3532611, 13222057, -24932286, -36954436, 14950244, 23682450, 940061, 5331665, --25549686, -7089381, -21339546, -993748, 24780888, 1891933, 46139224, 20700668, -11410654, 48364016, -25862146, -14409078, -5339718, -10323491, -15190762, -9879499, 12099460, -7003481, -23635206, 3832185, -16938278, 549219, -7600482, -6337761, -4739497, -8083129, -14220637, 2483565, -3103651, -1959042, --10909217, -1071594, -3673808, 4863514, 8227547, -2456721, 1862405, -3238942, -8432095, 5634460, --2040110, -6771016, -16175921, 7628936, -22397718, -3192235, -15422691, -9616432, -12474733, -3329674, --1677185, -4666482, -8614631, -4429722, -9868224, -1910724, -814433, -785979, -6485401, 10416369, --7896834, 4930623, -72444824, 66055524, -14985141, -21896818, -19305342, 45788648, -34743600, -5507759, --9978283, -303332, 24504936, -27210766, -2507724, 10947335, -8248485, -3500398, 621697, -15336791, -21906480, 1441498, -35865124, -8838506, -8728447, 2416456, -39306468, -127775, 4617627, -7586523, -275952, 10936597, 24162412, -9818832, -6183143, 5389647, -16285442, -50299436, 4307852, 40317396, --20524038, -30874910, 2071785, 32571422, -15166603, -9434969, -41966124, -6585796, 788127, 30090004, -13792214, 4017942, -31664110, -17869748, 24807732, -29637958, 10474888, 49550500, 27864138, 38466264, --18524194, 22498650, 14165339, -42717208, -15808164, -22869628, -5694053, 25404194, -1215476, 27458262, -22151830, -42450384, 47469052, -28755880, -137976, 2567317, -21830782, 47036872, -3188476, -10773925, -37654516, -30516280, -5308580, -43592308, -14920716, 20081120, -6245956, 18177376, 19390704, -4416837, --7683697, 3409130, -10741713, -12288438, -3507378, -9024263, -5515812, -7294465, 3102577, -9094593, -1775969, -11497627, -11453067, -10056666, 8476655, -5900748, -1047972, 5995238, 1407676, -2010045, --12504260, -19389092, -12584791, -25303262, 18629958, 7809861, 16122770, 5878200, -13807783, -13962402, --7364795, -1902671, 20476794, -4225711, -141734, 2792803, -3307662, -3311957, -1770600, -7652558, -14258755, -8950175, 18296024, -94489, 43173548, 30640296, 4515621, -8260833, -22429392, 13139379, --1762010, -2000918, -1424855, -736050, 95026, -8570070, 10871636, -206158, -38528004, 9684614, -3453154, -13310104, 508954, 16663936, -5613523, 1134408, -27860380, 20307680, -9913858, -2983929, --2809446, 11570642, -15098958, -536334, 3433826, 481573, 3190624, -7138773, 20634096, -10790032, -36373004, -22355304, -23862838, 22515830, -25214680, 1355062, 18797998, -17377974, -7771207, 10054518, -11703786, 15535434, -55486144, 17707076, -527744, -12652437, 35184372, -17615808, 2158758, 224412, --29878476, 38338488, -1826972, -1625108, -20132122, -3584687, 31584116, -7317014, -1189706, 1305133, -9105868, 5301064, -39005820, 19284404, 34756484, -18206366, 13925358, -27152784, 45565308, 2103997, --42527692, 628676, 23722714, -2342368, -26419418, -5892159, 62081604, -9614284, -25572236, 4354023, -27387396, -7030325, -8560407, -3169686, -1214939, 1662152, 1235877, -6905771, 18079664, -2877091, --4247723, 1066226, 6175626, 15202037, -4522601, -7346542, 8346195, 1934883, -14010720, -5067525, -7520488, 1773285, -5852967, -3095598, 12079059, -10929618, -2209224, 1933272, 1738925, -10318659, --4187056, 13474386, -725850, -9607305, -4088272, 9780714, -2858301, -7201050, -6155225, 8553964, --24212342, -80252536, -121662464, 8208756, 105224552, 1657321, 275283776, 249527392, 149385936, 288067744, -189007552, -31211528, 10933913, -36941552, -226762464, -128756680, -99783904, -221475360, -182144192, -53716620, --106925360, -122781840, -10005663, 7328288, -51941724, 11409044, 46994460, -59993712, -51007568, 80447424, -16457241, -19468014, 56136296, 75351440, -95026, 77290624, 130810208, 46902652, 35880156, 133387728, -90148680, 10921565, 97915056, 144494512, 63469952, 73898136, 164641136, 62550828, 22469658, 157276864, -154773440, 47864728, 186415536, 265127264, 98820216, 108856480, 184854320, 56422448, -59852516, 10631118, --61479236, -222722512, -212468816, -226881648, -364529440, -393987552, -421357760, -498292448, -521311872, -509161408, --495585536, -436274176, -391560352, -320140960, -211549680, -150965952, -52153252, 143920592, 233397648, 230576928, -426933696, 455305728, 354357344, 431855200, 452352928, 242871808, 253343472, 310701152, 150802208, 122003376, -201604160, 146323632, 68690488, 95245192, 127449400, 54249196, 44214004, 128094176, 67640904, -11609297, -70111584, 54817740, -40045740, 5582921, 50444928, -33292438, -14607184, 94714232, 37373732, 3594888, -91035592, 59886340, -9008157, 4949950, -39962524, -134073848, -182550064, -201753936, -264710112, -283097408, --282916480, -306338528, -309315488, -323811552, -324899776, -296906784, -295007872, -247531312, -191290320, -151409952, --63475860, 55115168, 118241520, 197481520, 246926800, 261653696, 249303520, 227543616, 193117840, 156853824, -136414608, 119386136, 97623000, 88011400, 85248656, 77701864, 72557032, 75857712, 70376264, 58717036, -49600428, 38540352, 20977158, 8018704, -12636868, -28193776, -28339804, -18241262, -8790187, -2099165, -0, 0, 0, 0, 0, 0, 0, 0, }, +9705015, 164283, 397821, -4638028, -3712999, 2798171, 1709934, 250719, 3958349, -5982890, +-2035815, 9687299, 654446, 1883343, -2555506, -3277597, 4550518, 3805341, -1604707, 3745212, +151934, 605054, -3704409, 1323387, -3373697, -2634426, -3314104, 1117228, 125628, -1085016, +-380105, 1123671, 2874407, -1386738, -5276904, 81604, -3764002, -4810900, -1267015, 2155537, +-746251, 1923072, 1219771, 1762010, -764504, -685584, -910533, -787053, 1614908, -66035, +3328063, -458488, 4122632, 676994, 927713, 3919158, 1393717, 996432, 5076652, -2076617, +1675037, -1777043, -3600256, 3288871, -1197759, -1074, 1212255, -613643, -2990371, -931471, +2143189, -1402844, -81068, -2909304, 1394791, 181999, -1938641, 222265, -3090229, 451508, +-2964064, -278636, -44560, -410169, 1708323, 812823, 446140, 928250, -325881, 1714229, +1251446, -156229, 383326, 370441, -64961, 46708, 572841, -740882, 396211, -942745, +791348, 69256, -146029, -57445, 655519, 151398, -605054, 191663, -31675, -367757, +-913754, -12736726, -6614250, -2976412, -2764885, -13422, 31675, 945430, 179315, -715649, +-5219459, -2368675, -5348845, -8376797, -6998113, 3947612, 4869419, 4925791, -1943473, -585726, +-557272, -1102733, 1812476, 755914, -1784022, -3797825, 2732136, 2331630, 3413962, 891206, +-1151588, -2080912, 967441, 1628866, -390842, 3467649, -1690070, -100395, 3370476, -2583960, +-4097936, 323196, 5663988, 1298691, 1251983, 789737, 47782, 722628, -878321, 1004486, +-4478041, 726386, 4643934, -1067836, 67109, 456877, -1586990, -891206, -645856, -759672, +-1244467, 2837900, -2668785, 2785286, 2374580, 5213017, -363462, 2928631, 6659347, -1233193, +-5369783, -6021544, -291521, -790811, 322659, -5111548, 1479616, -3589519, -2669322, 1222992, +3725347, -1538135, -2846490, -3409130, -667331, -377957, 936303, 296890, 2139968, 1263257, +-121333, 1077500, 309238, 2109903, 1596654, 1001264, 456877, 457414, -373662, 1410360, +64961, 420370, -176631, 26307, -1069984, -4295, -209380, 8849780, 6982543, 2968359, +3580392, -2310693, 1621350, 6119255, 3008088, 6590628, -2557653, 2656974, 3788161, -191126, +4854387, -2507187, 3039763, 551366, -3084860, -788127, -571768, -194347, -865436, 361314, +-1541356, 485868, -1124208, 6027987, -1373853, -333397, -2684, -2720862, -7652021, 4360466, +-1805497, 1683090, -3031173, -2881386, -3243774, -2159832, 2004676, 5782637, 4575214, 1920387, +-316754, -1243393, 1847373, 4155918, -911607, -1365800, 5160403, -2282238, 2476586, -2567317, +-2001455, -1231045, 1927367, 2038499, -3607236, -2490544, 108985, 3868155, 5021891, 2719251, +3915937, -538482, 3668976, 1438277, 3852586, -2164664, 1549946, 8792335, 4105989, 3731253, +-894964, -2473364, -5989332, 3480534, 1505923, -2474438, -2477659, -815507, 1836099, -1821603, +-834834, -1639604, 61203, 1258425, -528818, -2468533, 719944, 851477, 1422708, 1462973, +205085, 2071785, 1025423, 861141, 645319, -678605, 1466195, 135828, 0, -710280, +-1077500, -1185948, 293668, 851477, 356482, 54761, 267362, -71404, 1317481, -1795296, +-423054, 543313, -712965, 717796, 2754685, 10166188, 1449015, 3689377, 7364795, 139586, +-4208531, -1805497, -1262720, 290447, -2651069, -7227356, 2902324, 243739, 157840, 3020973, +-4792647, -2215130, 7550553, -1850057, -2849174, -4472672, 155156, -4226248, -703838, -1410360, +-1269700, 542240, 6101538, -196495, -1912334, 1789391, -4847408, 6505265, -827318, -1462973, +8135205, -4685810, 388695, -5537287, -2529736, 471373, 260382, 2128693, 2569464, -4940823, +1473711, 2070711, 1687385, 474057, 2335389, 1693291, 3409130, -3127810, -1668058, 6418292, +-2667175, 2452963, 615254, 1844152, 1661079, -545998, -2171643, -336618, 4537633, -2698850, +-296353, -1434519, 1054415, 4047470, -2270427, -5048734, -9748502, 609349, -397821, -839666, +42950, -3750580, -2623151, -5439576, -2138357, 2707977, -86436, 1685238, -642098, 3388729, +2352568, -31139, 1764695, -135828, -205085, 1176821, -2110977, -1129576, -1712081, -10737, +-2044941, 1224066, -68183, 584652, -755377, -656593, -79994, -736050, 478889, 775242, +-1892470, 909996, 776852, 450972, -1803886, 964757, 650688, 1717450, 1813550, -158377, +-615791, -940061, 909996, -471373, -324270, 344671, -4330938, -10963978, 5577552, -3653407, +-6138582, 209917, -11588359, 2443837, 3634079, -1358283, 8585103, -3333968, -10186052, 2385854, +3961034, -3644817, -7186554, 12322261, -710280, -817654, 3218541, -2818572, -1520418, 1189169, +-6001680, 3480534, -577136, 1674500, -1204738, 5720360, -1400159, 3172370, 2923262, -5805722, +-2743410, -3306588, 6020471, -3042984, -1714229, 4446365, -1513976, -3445101, 2688113, 8221105, +-4152697, 3966939, -4292283, 5378373, -2947958, 2798171, 613107, -3012383, -8434242, 4674535, +6179384, -648540, -1893007, 3442416, 4348655, 4089346, -5788006, -740882, -5099737, -548145, +1872606, -3673271, 1442572, 3974992, -4251481, -163209, 882616, -4190814, -2952790, 3791919, +-2707977, 2983929, -1745367, -5361193, 1126355, -5199595, 1379758, -2007360, 1841467, -5718749, +5259725, -4325032, 576599, -4024921, -93952, -303869, 1107565, -476741, 9664, -1296543, +1409286, -3888019, 1376537, -3193845, -2494839, 19327, 2337536, 1044214, 456877, 668404, +176094, 1326071, 2965138, -2515777, 2469069, -1641751, -305480, 1509681, 1263794, -1796907, +6979, -4398584, 5557151, -6121939, -6093485, -10421201, 4381404, 11029476, 1666447, -1970316, +-964220, -1848983, 9587441, -5750425, -5257040, -1233193, -5794448, -1770063, -6294275, -2706366, +-4421132, -8721468, -2460480, -1917166, -316754, -950798, 2255395, 5216238, 1850594, 2587718, +-8028905, 1003412, -139050, -2501819, 2774549, 1494649, -2346663, -1022739, -5717139, -6319508, +-932008, 7031935, -2064269, -3597035, -779537, -2327872, -4937065, 97711, -5154498, 10547903, +8879308, 2314451, -2718178, -2450279, 926102, 1602560, 1816234, 1752884, -643708, 3938485, +-3721052, 1752884, -3273302, 120259, -39192, 2220498, 1539209, 4962835, -2142115, -3016141, +-2769717, -11418707, 357019, 2405182, -1155346, 4169340, 1794760, -3419331, 996432, -5981816, +-2231236, 521839, 4600447, 1983738, 6294812, 1289027, -752693, 61740, 2334315, -2580739, +-328028, 627065, -1079111, 1636383, -2255395, 1212255, -1717450, -1378148, -278099, -1900523, +-1886564, -2331094, -1239635, -660351, 1773285, 1501628, -1744831, -2469069, -755914, -1881196, +1330366, -2101313, 1052804, -1209033, -345208, 2159295, 155693, 1811939, -10768557, 1743757, +10979010, 10347650, -11121281, -10151155, 2622615, -8078297, -4290673, 1155346, -567473, -3306588, +8331163, 3680787, -11748346, -966368, 696322, -125091, 7501698, 2773475, -5460514, 7883950, +2942053, 1019518, -4239133, -4532801, 3377992, -2916820, -7959112, -1475321, -1040456, -3581466, +-4750771, -6445136, 6830609, 452582, 1008780, -4474282, 109522, 4817343, -3820910, -8103530, +-8184597, 8560407, 1930051, 8078834, -1291711, 2292976, 5973226, 12124693, 3924526, -1558536, +-6204081, -2698313, -3092377, 1813013, 658741, -4874251, -1964948, 7034083, 4993437, 9568650, +4497368, -6678138, -6353867, 7909719, 4226785, -4214437, 49392, 8147553, 641024, -498753, +-6356552, 6985765, 5266167, -1291175, 9780714, -1504849, -2816425, -10263361, -1347546, 466541, +5444945, -7099044, -433792, 3101503, -1720134, -5121749, -4759361, -690416, -471373, -977642, +-5950141, -5314485, -3117610, 1850594, -108448, -2473901, -809064, -380105, 530428, 442382, +891206, -559420, 2012729, -1704565, -410169, -5369, -1177358, -3992172, 270583, 2231236, +-705985, -3533148, 307627, -894427, 1248762, 147103, -429497, -367757, 1153736, -593242, +2126546, 1036698, -55835, -1982127, 1441498, -1575716, 1456531, 1793149, -4409321, 1745367, +-1649804, -889058, 5393942, -8987756, 5403606, -5893232, 1062468, 4711579, -62277, -2396592, +1760937, -6171868, 245350, -4807679, -13950591, -4270808, 5899138, 3813931, 2146410, -3398393, +2841658, 1268626, 14886894, 2550137, -5051419, 5531381, 1081258, 1169305, 9892383, -2866891, +-2800856, 3430068, -6997576, 8382703, 7740068, -202400, 4371203, -1654099, -4291209, -581431, +-5389110, 425739, -5277441, 2028835, -91805, 1493038, 589484, -9051107, -1875827, -1190780, +483721, -4575214, 1951526, 1975685, -1751273, 11876121, -5217312, -10609106, 6298570, 10382010, +2345589, 2663417, -4613869, 8904004, -3064996, 1474784, 3995393, 1144609, -4065724, 4234301, +1828582, 484794, -44560, -8185671, -2898566, 3978750, 7231651, -2834679, -5377299, -7449621, +-2435783, 2474438, 1355062, 3689914, -9172440, 1701344, 6155225, 790274, -367757, 2341831, +-1921998, -1061394, -265751, -517544, 3226057, -929860, 1020055, -981937, -678605, -725313, +-2349347, -1336809, 1104344, -1659468, 2221572, -370978, -406411, -1094143, -1321239, -6969658, +651224, 3702262, -190052, 1281511, -671626, 2289755, 774168, -1376537, -1605781, 1276142, +30389042, -8327405, 183073, -3066607, -1944010, -6772090, -153545, -17808008, 9247065, -6402723, +-452582, 10300942, 5086852, -6842957, -7342247, -2752537, -6279242, 5659693, -14732812, 2712809, +6095096, 8419747, 1650878, 2503966, 332323, 1364189, -1955821, -4640176, -13470091, -1999844, +1694902, 6179384, -4862440, 5957657, 2314451, -2464774, -881005, 4609574, -4892505, -4625680, +-2672544, -3540127, -544924, -11934104, -5596880, -2863670, -357019, 9421011, 2087354, 8986145, +3076270, -434865, -5684389, 667331, 533113, 1349157, 3089155, 12602508, 1447404, -11846057, +3022583, -4661114, -360240, -4485020, -5022428, -2365990, 4804458, 3102577, -20969640, -7886097, +-6263136, 3936875, -935766, -4526359, -2920041, 11787538, -4890357, 9048959, -8593156, -6465537, +-9302899, -5087926, -9887015, -1576790, 13116830, 3041374, -1627793, 1534377, 5551245, -153545, +6852084, -3923453, 2614025, 3812857, 4633196, 1803886, -871878, -9171366, -3431679, -4734128, +18790, 2908767, 2503966, -1896228, -708133, 3798899, 1548873, -3064459, -1316408, -2166274, +-985695, 112743, 1931125, -1657321, -1622424, 4840428, 4076461, 1246077, -637803, 1713692, +3323231, 188979, -3059627, -358093, -3121904, 719944, -2809982, 1559073, -4690641, -5100811, +3808562, -9479530, 557809, -22160420, 5369246, -7236483, 2138894, -7522099, -16397648, -2490007, +-3836480, 11651709, 4900021, 4218195, -417149, 15455440, -11613055, 2868501, 4356708, 11951820, +-13748190, -7791608, -2740726, 1175210, -941135, -3854196, -1296543, 4160750, -7411503, 1556389, +4351876, -799401, 577136, -5916318, -6849936, -4179540, 18420040, 219043, -4499515, 7224672, +-4444218, -9222369, -7614440, -4972499, -1345935, 3326989, 670552, 695785, 10226854, 9417790, +-1699733, 3395709, 2249489, -11764989, -8126078, -450972, -953483, -3032784, -8074002, 9976135, +11966316, -9749039, 6459631, 6136435, -1921998, -9312563, -15145128, -14609868, -11322608, -6598681, +-13069049, 1261647, -10698227, 6486475, 5773510, 1026497, 129386, -18187040, 1196148, 415001, +1347546, -9284109, 3147137, 10453950, 1400159, 2710661, -8266202, -5046587, -1009854, -8636642, +2035815, 5505075, -2566780, -3155727, -3997541, 3470334, 5534602, -9592809, -5288179, -393526, +6465537, 2477659, -2805151, 2352568, -328028, -17180, 2916283, -1772211, 3755949, -4203699, +-1498407, 3224984, 2744484, -974421, 7267085, 558346, -4529043, -3766686, -632971, -3084324, +-2856690, 487479, 2065879, -1250909, -9032853, -7677791, -5236102, -6020471, -1839320, -13604846, +635655, 14735496, -5182415, 7730941, -3085934, 14689862, 12526809, 5092758, -15308874, -4013647, +20509006, -5378910, 15208479, 2291902, -14539538, -7470022, 17179332, 277025, -11523934, 177167, +-9823664, -1447941, 3496640, 1314797, -1955821, -17202954, -15184857, 4101157, 11007464, -9867150, +-850940, 4193499, -724776, 1587527, 18276696, 3271155, 2669859, 1490891, 6047314, -8178155, +-5723044, -4240744, -19245748, -6622303, -7218767, -5071820, 5087389, 3310883, -1212255, -2000918, +-7611756, -11622718, 15069430, -3325915, -13233331, -6280316, 2695629, 10014790, -7994545, -2580202, +-8485782, -1668595, -10139881, -2026151, -2159295, -20454782, 1872069, -6935836, 14121852, -3706020, +-11474005, -21687974, -14256607, -2761127, 1795296, 7531762, -5592585, -5173288, -11780558, 10733123, +18228378, 1880122, -2160906, 6158446, -4761508, 6817187, -5141076, -2524904, 2346663, 5208185, +3783329, -6402723, 221728, 1296543, -84289, -484258, -1600412, 1696512, 6471442, -2736968, +-5690295, -268972, -1276679, 2946885, -47245, 6277095, 435939, 2288681, 221191, -3867618, +1009854, -1552631, 6754373, 387084, -4308389, -818728, -1049046, 4519380, 442919, -4949413, +-767189, 3487514, -1618666, 855235, 7036230, -24910810, -12749610, -8559333, -13653701, -7281044, +-5600638, -14122389, 14839649, -4289599, 22408992, -11310260, -16947404, -3283503, -11385421, 19313394, +-6666863, -10172093, -4737349, 5184026, 9791989, 8435853, -2061584, -2259153, -4448513, 2134062, +15889768, -418222, 1493575, -5119064, -2034741, -8329552, -2749853, 3701188, 2714419, -6885907, +304406, -10191957, 2019172, -3042448, -3078955, 4168803, 1911797, -4744328, -1931662, 8718247, +3246459, -7212861, -9526774, 15856482, -785979, -25239376, 13100187, -2796024, -10759430, 5090610, +-1593970, 1162326, -2498060, 8785356, 3353833, 904628, 24206972, 23944442, -8494908, 2619393, +-18044232, -3818763, -3510062, 7649337, -2807298, 1248225, 7336341, -5439576, 13794898, -5848672, +1464584, -18754512, 7732015, -4876936, -13192529, 6600828, -3101503, 26420492, 6224482, 5041755, +9705552, 1100049, -9290014, -727997, -3873524, -2260764, 2574833, -3263638, 5306969, 3307125, +-4112968, 6739878, 3738232, -4408247, -1238561, 412317, 599685, -1802813, 1355062, 2370822, +-720481, -1969243, 373662, 2109903, 1153736, 1601486, -4338454, 4324495, -8599061, 7570417, +-5094368, -2910914, -674847, 3954591, 5529771, 1521492, -6562173, 78383, -2713883, -1534914, +1440962, -6193343, -11389716, 3335579, 29972966, -22464290, -7180112, -14201309, -9440875, 11394548, +-12914967, 27544700, -3206730, 8453033, 1547799, 6733972, -17073032, 3189550, 4511863, -1208496, +-2547453, -1446330, 5077188, -10448582, -6345278, -1434519, -2949569, -12928388, -11506754, -3039763, +-5308043, 15735150, -4060355, -7383586, -5347235, 5442261, -8029978, -3361349, -13917305, 6577206, +-5302674, 5801427, -4911295, 7363185, -3710852, -24004572, -12228846, 3594888, -1853278, -1429687, +-7480223, -14281303, -802622, 6349036, 4262755, -3218541, 4741644, 7403987, 22825066, -9747428, +10823854, -25632364, 1636383, 3801046, -3031173, -7342784, 5223217, 993211, 1206886, 5791227, +18145700, 12327093, 9306657, -4836670, -5834176, 8995272, -10911901, 2711735, 9188009, -6477885, +22694608, -329639, 7053410, -6169184, 13094282, -12432320, -12250320, 416612, 4602595, -5609764, +-1363115, 14180908, 139586, 12911745, 4722854, -1982127, -2032593, -7349226, -587874, -379568, +3644817, -469225, -5912023, 1035624, 2663954, 7320235, -10674067, 1847910, -5417028, 2260227, +6098854, -2083596, -165893, -5571647, 1837709, 2083059, -3611531, -12855374, -8049843, -5080947, +2495376, -6794102, -3859565, -4556961, -4082903, 2585570, 4967667, -142271, 4121558, 1582696, +2195802, 752693, -9295383, 7886097, -6860674, 12038256, 35474820, 25130390, -6750615, -15731928, +-10660109, 21538724, -25599078, 1370632, -6489696, -6278169, 10467372, -18764712, 2501819, -9599789, +-237297, -13057237, -10073309, 1522029, 683437, 524523, -12608950, 20099910, 4072703, -8993662, +3645354, -2656974, 1766842, 29968134, 9469866, -8367670, -7361574, 1453846, 9300215, 2507187, +-22405234, -5517959, -15487652, -5174362, -7248294, 7568269, -4173635, -2129767, -143881, -773094, +-10981158, -12758737, 8316668, -4833986, 2256469, -600759, 11162620, -9061307, -6470905, 2837363, +4669167, -11995844, 13396540, -8391829, -19522774, -18213346, -6500970, -5229660, -7888781, -4083440, +-27757300, 9800042, -13166222, -4183298, -10989748, 15391552, 5010080, 7363185, 4295, -2365990, +-13418015, -4064650, 18139794, -14931991, 21980032, 16769700, 5909875, -3960497, 776852, -3106872, +3176665, -9712532, -7786776, -4849018, 1360968, -1333587, 1417876, 4096325, -7026567, -1759863, +7125888, 7392176, -2881386, 4592394, -3900904, -6346888, -2765959, -2002529, 4734128, 1246077, +1806034, -6280853, -4066260, 2139968, -2278480, 1987496, 2656974, 4424890, 8847096, 3473018, +4991826, -5950677, -3346317, -2065342, 2655901, -2918430, 1258425, -2706903, 1316408, 8888972, +4296041, 2375117, -1628330, 5569499, 1872069, -2394981, -34999688, -4329864, 23318988, -28592134, +-11374147, -688805, -8740258, 10372346, -5928666, 32329830, -3222299, -7023346, -5320391, -1424319, +9505299, -6419366, -6197638, 26382374, -19281182, -2346663, 6192269, -4268661, 16560320, 9310952, +-1091459, -2068564, 7067906, 9379672, 10271414, 8369281, 17525078, 5564667, 7580618, 4544076, +-5594732, 29214904, 3751654, 5452998, 7459822, 4344897, 21167746, -1512902, 5283347, 7263327, +6175089, 3438121, 13993540, -8248485, -6567542, 13841069, -2469069, -13997298, -3515431, -24464670, +-8240432, -4708895, 23222888, -21925808, -2760053, 935766, -679142, -1277216, 13722421, 37376952, +-6456410, 4672925, 4345433, 5653788, 17908404, -19351512, -19783694, -18060338, 31908922, 2339684, +-11913702, 29220810, -11086384, 25473452, -13660680, 9763534, 1140314, -33916284, -4866198, -8492761, +9771587, -718870, -2861522, 201863, 6163278, -926639, -10223633, 5524402, 208843, -4814122, +-39192, -9038759, 12187507, -1322313, 4410932, -5775658, -5147519, -5165235, -6834904, -665183, +249108, 11558294, -471910, 1267015, -4583804, 1277753, -10923712, 3481071, -10528039, -1970853, +-2240362, -9457518, 5051419, -7489886, -7476465, 1644973, -10446434, 3216394, 8427263, 7821673, +-3908957, -3698504, 2059974, 3170760, 7330436, 9298067, 20734492, 1889249, -20896626, -61448096, +12311524, -14756971, -23753854, 26623428, -15943992, -8203388, -23392002, 6077916, -4626754, -22852448, +-7398081, -13566191, 6416681, -12562779, 645319, 4909685, 10313827, 5245229, 17447230, 2758443, +-89121, -1792075, -14623290, -11238319, -10401337, 8463233, 13054016, 6071473, 4665945, -355945, +5066988, 10226854, 23836532, -11249056, -6227166, 4193499, -10770704, 11471858, 2530810, -10394895, +24260122, 8863202, -20342038, 8075076, -19566260, 2343442, 3790309, 10347113, -5529234, -6602439, +30835718, 11986180, -13195750, 8062728, 16334297, -12608413, -26801670, 14936286, -2111513, -277562, +2253247, 6568079, 41712184, -3842922, 5260798, 8017630, -82678, 9612674, 5647882, -22069152, +4744328, -11722576, -10229001, -6149857, 5092758, -35662188, -4292820, 11191074, 1820529, 17795660, +-12991739, 12620761, -8468065, -3685619, -4744328, 5681168, 2524904, -4319664, 88047, 46708, +-6273337, 5105106, -7933342, 8457327, 1178432, 5909338, 5035849, -3551401, -2915746, 1531693, +-2172180, 1280974, 2001992, -3446175, -1214939, -3968550, -2774549, -2583960, -7106561, 194884, +1048509, 4225711, -2257542, 4072703, 9767293, -5033165, 1639604, -5050345, 2615635, 3144990, +-8137353, 144955, 2674691, -7676181, -3799436, 6787122, 110059, 1395864, 1535988, 310848, +-19010062, -21875880, 46920372, 10037339, -3032784, -5647882, 10582263, 42406360, 19449760, 5079336, +-1229434, 14221710, 35408784, 8818642, 12206834, 11050414, 25244744, -16267726, 16350404, 7277822, +-48476760, 14369350, -6857452, 14382235, -15097347, 11411728, 7567196, 15069430, -122407, 6399502, +2357937, -13744432, 6855842, 13651554, -11446625, 6868190, -11115375, -6671158, 34750580, 3565360, +30767536, -21883396, 9579388, -1107565, -4408247, -675384, -2678986, 4795331, 11274826, 7837779, +-861678, 17596482, -28032178, -26405996, 19160922, -15023796, -3879966, -3507915, -18130668, 9148817, +-4783520, 5168457, 2804614, 29795798, 14457934, 15706159, 5887864, 4221416, -27097486, -6228777, +13318694, -248034, 331786, -20938, -8700530, -23563264, 4502200, 2180233, -17651242, 2493766, +-8486855, -6973417, 7396471, 4984310, 26723286, -3835406, 6787122, 6382859, -5159330, -6913287, +-764504, -6572911, -2545305, 15739981, 6565932, 2838437, 770410, -306016, 358630, -215285, +-957241, -10709501, -3288871, 6513855, -1891396, 638876, -3988951, -5420249, -2228551, 1714766, +12754979, -8540542, -8263517, 7495792, 3657165, -9592809, 6721624, 4048007, -6818261, 8513699, +673773, -5145908, -2420751, -3575560, -1644436, -1670742, 4203699, 2107755, 2081449, 4829154, +7025493, 5214627, -1414655, 12181064, -42531988, 36284956, -15293842, 7169374, 23478438, -34000036, +-887985, -2732136, 8287140, 12954158, 14776835, 25667798, 4304094, -16168941, 9039296, 27325118, +-38501696, -22428320, 25861072, 1556389, -199179, 1452773, 2215130, -464930, -665183, 13451838, +8108362, -18258980, 1174137, -4968741, 32160178, 19684908, -6576669, 2180233, 3864397, 4236449, +-215822, 11924977, 1168768, 9217000, 32822140, 4768488, 3452617, -4727686, 8422968, -30983358, +-13526999, -12888123, -1405528, 3536906, -27557584, 11044508, -24460912, 8450348, 25334402, -5383742, +-22834194, -12093017, 9426379, -4337380, -46627776, 12857521, -32548872, -6999186, -4061429, 1149978, +-13059922, 3375844, 16409459, -13438416, -30931818, -46416784, 36294084, 11078331, -5702106, 10386305, +-10996190, 11097122, 20125680, -20912732, 36080948, 4978941, -3846143, 16765942, 9511742, -5814312, +9315247, 682363, 10055592, -9786083, -5213554, 2716030, 7265474, 12521440, 3721052, 11286637, +-7473780, 6406481, 11726334, 10407243, -1745904, 9474161, -10183904, 4032974, 960462, 4359392, +19551764, -13064754, 7770670, 1063541, -745714, 15260019, 4166118, 19895362, -2624762, 9827422, +2599529, 7752416, 2216203, -4092567, 5951751, -10282152, 8870718, -3810710, 7344394, -1763084, +1967095, -834297, 1474784, -148176, 7689602, -1758252, -1918777, -1045825, 3274913, -383863, +-862215, 359704, 1599875, 1101659, 1327682, -964220, 1326608, -1131724, 1253594, 881005, +1402844, -2665564, 51849920, -55794848, 22557706, 28368258, -34955664, -10785200, -18817862, -10368051, +51481624, -23176180, 36536212, -17150342, -4916664, -9289477, 11978127, 4466766, -44513040, -8513699, +-11778948, 19084150, 1006633, 7926899, 15503758, -21889300, -4005594, -14048301, 7834557, 17969070, +11332271, -28268402, -4829154, 5411122, 3838627, -1978369, -13139916, -5692979, -25238302, -4868883, +-3417183, 23096724, -20577726, 50705848, 11340324, -15112379, 22601728, 576063, 29320132, 15714212, +27836756, 6585259, 25446608, 20431696, 24902220, 25905096, 4122095, 25062744, -32196148, -5788006, +6958384, -21525302, -3532611, 13222057, -24932286, -36954436, 14950244, 23682450, 940061, 5331665, +-25549686, -7089381, -21339546, -993748, 24780888, 1891933, 46139224, 20700668, -11410654, 48364016, +25862146, -14409078, -5339718, -10323491, -15190762, -9879499, 12099460, -7003481, -23635206, 3832185, +16938278, 549219, -7600482, -6337761, -4739497, -8083129, -14220637, 2483565, -3103651, -1959042, +-10909217, -1071594, -3673808, 4863514, 8227547, -2456721, 1862405, -3238942, -8432095, 5634460, +-2040110, -6771016, -16175921, 7628936, -22397718, -3192235, -15422691, -9616432, -12474733, -3329674, +-1677185, -4666482, -8614631, -4429722, -9868224, -1910724, -814433, -785979, -6485401, 10416369, +-7896834, 4930623, -72444824, 66055524, -14985141, -21896818, -19305342, 45788648, -34743600, -5507759, +-9978283, -303332, 24504936, -27210766, -2507724, 10947335, -8248485, -3500398, 621697, -15336791, +21906480, 1441498, -35865124, -8838506, -8728447, 2416456, -39306468, -127775, 4617627, -7586523, +275952, 10936597, 24162412, -9818832, -6183143, 5389647, -16285442, -50299436, 4307852, 40317396, +-20524038, -30874910, 2071785, 32571422, -15166603, -9434969, -41966124, -6585796, 788127, 30090004, +13792214, 4017942, -31664110, -17869748, 24807732, -29637958, 10474888, 49550500, 27864138, 38466264, +-18524194, 22498650, 14165339, -42717208, -15808164, -22869628, -5694053, 25404194, -1215476, 27458262, +22151830, -42450384, 47469052, -28755880, -137976, 2567317, -21830782, 47036872, -3188476, -10773925, +37654516, -30516280, -5308580, -43592308, -14920716, 20081120, -6245956, 18177376, 19390704, -4416837, +-7683697, 3409130, -10741713, -12288438, -3507378, -9024263, -5515812, -7294465, 3102577, -9094593, +1775969, -11497627, -11453067, -10056666, 8476655, -5900748, -1047972, 5995238, 1407676, -2010045, +-12504260, -19389092, -12584791, -25303262, 18629958, 7809861, 16122770, 5878200, -13807783, -13962402, +-7364795, -1902671, 20476794, -4225711, -141734, 2792803, -3307662, -3311957, -1770600, -7652558, +14258755, -8950175, 18296024, -94489, 43173548, 30640296, 4515621, -8260833, -22429392, 13139379, +-1762010, -2000918, -1424855, -736050, 95026, -8570070, 10871636, -206158, -38528004, 9684614, +3453154, -13310104, 508954, 16663936, -5613523, 1134408, -27860380, 20307680, -9913858, -2983929, +-2809446, 11570642, -15098958, -536334, 3433826, 481573, 3190624, -7138773, 20634096, -10790032, +36373004, -22355304, -23862838, 22515830, -25214680, 1355062, 18797998, -17377974, -7771207, 10054518, +11703786, 15535434, -55486144, 17707076, -527744, -12652437, 35184372, -17615808, 2158758, 224412, +-29878476, 38338488, -1826972, -1625108, -20132122, -3584687, 31584116, -7317014, -1189706, 1305133, +9105868, 5301064, -39005820, 19284404, 34756484, -18206366, 13925358, -27152784, 45565308, 2103997, +-42527692, 628676, 23722714, -2342368, -26419418, -5892159, 62081604, -9614284, -25572236, 4354023, +27387396, -7030325, -8560407, -3169686, -1214939, 1662152, 1235877, -6905771, 18079664, -2877091, +-4247723, 1066226, 6175626, 15202037, -4522601, -7346542, 8346195, 1934883, -14010720, -5067525, +7520488, 1773285, -5852967, -3095598, 12079059, -10929618, -2209224, 1933272, 1738925, -10318659, +-4187056, 13474386, -725850, -9607305, -4088272, 9780714, -2858301, -7201050, -6155225, 8553964, +-24212342, -80252536, -121662464, 8208756, 105224552, 1657321, 275283776, 249527392, 149385936, 288067744, +189007552, -31211528, 10933913, -36941552, -226762464, -128756680, -99783904, -221475360, -182144192, -53716620, +-106925360, -122781840, -10005663, 7328288, -51941724, 11409044, 46994460, -59993712, -51007568, 80447424, +16457241, -19468014, 56136296, 75351440, -95026, 77290624, 130810208, 46902652, 35880156, 133387728, +90148680, 10921565, 97915056, 144494512, 63469952, 73898136, 164641136, 62550828, 22469658, 157276864, +154773440, 47864728, 186415536, 265127264, 98820216, 108856480, 184854320, 56422448, -59852516, 10631118, +-61479236, -222722512, -212468816, -226881648, -364529440, -393987552, -421357760, -498292448, -521311872, -509161408, +-495585536, -436274176, -391560352, -320140960, -211549680, -150965952, -52153252, 143920592, 233397648, 230576928, +426933696, 455305728, 354357344, 431855200, 452352928, 242871808, 253343472, 310701152, 150802208, 122003376, +201604160, 146323632, 68690488, 95245192, 127449400, 54249196, 44214004, 128094176, 67640904, -11609297, +70111584, 54817740, -40045740, 5582921, 50444928, -33292438, -14607184, 94714232, 37373732, 3594888, +91035592, 59886340, -9008157, 4949950, -39962524, -134073848, -182550064, -201753936, -264710112, -283097408, +-282916480, -306338528, -309315488, -323811552, -324899776, -296906784, -295007872, -247531312, -191290320, -151409952, +-63475860, 55115168, 118241520, 197481520, 246926800, 261653696, 249303520, 227543616, 193117840, 156853824, +136414608, 119386136, 97623000, 88011400, 85248656, 77701864, 72557032, 75857712, 70376264, 58717036, +49600428, 38540352, 20977158, 8018704, -12636868, -28193776, -28339804, -18241262, -8790187, -2099165, +0, 0, 0, 0, 0, 0, 0, 0, }, { 2938295, -9543417, 2138357, 1384590, -2166274, -790274, -4711043, -202937, -1203128, 3533148, 3134253, --3160022, -2272038, -1909650, -1809255, -2250563, 246961, 2811593, -2234457, -2403034, -7866770, --5793374, -4255776, -199716, 423591, 5768678, -3178813, 2858838, 1768990, 1469416, 346819, --4310000, 1104880, -9188546, 1120987, 283468, 433792, -630823, -5666136, -2583423, -4884452, -299574, 314606, -2954401, -7584912, 5214091, -366146, -4439923, -20938, 2958696, 644245, --1531693, 1078037, -2528662, -1090385, -2386391, 1837172, -2539936, 3576097, 2891587, -573915, --5054103, 264141, 697395, -449361, -1852742, 1279900, 898185, -1152662, 2730526, 2974802, -2052458, 196495, 12885, 951335, -2745021, 380641, 4224637, 493921, 807454, 782221, -3121904, 1199907, 981400, 2801929, -692027, 2206003, -862752, 1439888, 1010928, -384400, -598074, 813359, -249108, 1029182, 1577327, 376883, 33823, 1118302, 1486596, 1187559, --178778, 451508, 487479, 580357, 170725, 93952, -114890, -370978, -1174674, 765578, -85899, -10144713, -11386495, -808528, -4500589, 3477850, -5578089, 1401770, 2582886, -3804267, -3113315, 11394548, 643171, -1048509, 6249715, 846645, 6275484, 97174, 2867428, -4484483, --5938329, -321586, 2261300, -4132832, -1324461, -419296, -1159641, 1131724, -1207960, -2182917, -2072322, -1029182, -858457, 4476430, 6391985, -1990717, -3423626, 1270774, 5117991, 1939178, -6557342, 273804, -910533, -168577, 5853504, 375273, -4168803, -2296197, 4598836, 3326989, -3580929, 970663, -2263448, -4721780, 947577, 2221572, 2772402, -1017907, -2458332, 5103495, -3445101, -847719, -2838974, 170188, -1969779, 5319317, 1651415, 974958, 1720671, 593779, -1126892, 3267933, 602369, 3282966, -610959, 5233418, 667867, -5180268, -2020245, -1805497, -2602750, 3197603, -483721, 853625, -3591667, -1319092, -3342558, -1027034, -2166811, -1876901, --759672, 1097901, 83752, 28991, 178241, 1447404, 266288, 328565, -143881, -1555315, --402653, 80531, -114890, 627065, 276489, 267899, -552977, 5978595, 4192962, 6295349, -6554657, -1571421, 3285113, -1404991, -3711926, -346282, 9709310, 4249334, 2170569, 3453691, --4043175, 6919729, 2972117, 4636417, -1362578, -7682086, 3234647, -11986180, 2438468, -3061775, -2416456, 1888712, -218506, -4126390, 1002875, 2691871, -1596117, 2524367, 6085432, -436476, --5029944, -6867653, 1081258, 3069291, -6312528, 3514894, -5931887, -3876745, 4322885, -2507187, --5012764, -2448668, -3533684, 5548024, 7627862, 4314295, -2731062, 32749, 4078608, 2430415, --336081, -3114388, -1469953, -2733210, 2909304, 9422085, -66572, -5111011, -4027069, 2185602, -775242, -1915555, -5571110, -103616, -4771172, -1877438, 759672, -819265, 3799436, 708133, -4769025, 5541582, -4854924, -1789928, 278636, -3794604, -4547834, -728534, 28454, -2787434, -2676838, -2532957, -309775, 2108829, 430034, 151398, 2089502, -2561948, -880468, 606664, -968515, -1160178, 835908, 454730, 943819, -142808, -16106, 960999, -1304596, 1675574, --1306744, 820339, 260382, -372052, -99858, 745714, -535797, -872415, -1476932, 925565, --1083942, 406948, 1414655, -194347, -900333, 13376139, -3593814, 1304060, 1909650, -8822937, --7517804, 195958, 8742406, 6670084, 10567767, 3485903, -2982855, -4547297, 779000, -2610266, -2083059, 1009854, 3570729, 6564858, 2091112, 4840428, -136365, 2870112, -2913062, -6114960, --3205119, -4680441, 63351, -1306744, 1427003, -7449621, -3719442, -996969, 2756295, -3682398, -7719130, -8698383, 1866163, -5477694, -4443144, 2529199, 2216203, 7447474, -827318, 1882269, --2126546, 5216238, 5512591, 1532767, -1188632, -5604933, -777926, 1934346, -4297652, 4307316, --4730907, 2029372, 7820062, 6554657, 96100, -2525978, 1224603, 7818451, -977642, 1921998, -1214402, 6388764, 62814, -1706176, -3968550, 2785823, -5980205, 2175938, 12436615, 3056943, -5855651, 579821, -8229694, 2974265, 1527398, -3248069, 3356517, -1043677, -897111, -4105452, -1714229, 4036733, 1801739, 775242, -1876901, -4041027, 932008, -805843, -631360, 258772, --206695, -765578, 1299765, -1379221, -1255204, -1188632, 1829656, 731218, 1439351, -814970, -1327145, 72478, -1313723, 1404991, 765041, -1166621, -2226941, -813896, 1827509, 111669, --484794, 917512, 828392, 1986422, -96637, -782221, -4876936, -8341900, 4207994, -5947993, --6132140, 1263794, -2972117, -19624242, 1901597, 3032247, 17962626, 5820218, 1329829, -8154533, -7485055, 3246459, -3260954, 3926137, -682900, 6531572, -3942780, -2018635, -1329292, -1730335, --2708514, -1168768, 4634807, 4062502, 7014219, 2514703, 3439195, -64425, -4571993, -4932770, -6643241, -3633006, 1472637, -591095, -4699768, 6752226, -1132261, -2913062, 1169305, 4918275, --3272765, 7463043, -9454297, -7807714, -9588514, 2330020, -5405217, -8191577, -1896228, 7674570, --3258270, 2309082, 4537633, -3288334, -4336307, 357019, 695248, 2572686, 456877, -2384244, --288300, 9885941, 4177393, -4020626, -12447889, -9927817, 3617973, 11758547, 9867687, -7704098, -181462, -5025112, 2210298, 1956358, -8442832, -667867, 1651952, 986232, -2305324, 504122, -485868, 256624, 2837900, 2614561, -1703491, -2055142, 1380295, -999654, 634045, -2940979, -1183800, 877247, -4714801, -1058173, 984621, 710280, 361851, 919660, -315143, 339302, -321049, 463856, -1739999, -243203, 574452, -549756, -2109903, -1045825, 251256, 320512, -2234457, -3506304, 5814312, -9774809, -1626719, -12113418, -3509525, 1795833, 4269735, -11041824, --2705293, 7562901, -867583, -11052025, 5772973, -3537979, -6276021, 3462281, 5844914, 1312113, -1260573, 1998234, 7622493, -3596498, -3102040, 1980517, -3710315, -1915019, 145492, -426812, -296890, 6073621, 3160022, -706522, -488016, 3549254, 1532230, 4359392, -337155, 4921496, -5251135, 2076617, -5646809, 821949, -757525, -4045859, 5514738, -3104725, 2332167, -3758633, --1343788, -13534516, 1275605, 10987063, 1006633, 11680164, -2120103, -2625299, -11992622, 14113263, -6683506, 8041790, 1350230, 6591701, -42413, -51540, 5532455, -3215320, 2021856, -22549, --13455059, 3094524, -3133716, 3563749, -2002529, 3216394, 12546136, 3775276, 3326989, -151934, --7574175, 5705327, -3059627, 1144609, 2889439, 3761855, -4160750, -1105954, -1708323, -2265595, -2467459, -1424855, -1069447, -1779727, 310848, 456877, 207232, -3501472, 1422708, 607201, --768262, 1010391, 505732, 881005, 746251, 1663763, 30602, 354335, -198642, -804770, -2110977, -394600, 2968896, 459025, 1243393, -910533, 1639067, 545461, -15541339, -512712, -11682848, -2560874, 6914361, -7457137, -5145371, -13425531, 7663833, 3978750, 8898635, 4160213, --4393752, 7503308, -1903744, 7179038, -4734665, -4372814, 536871, -1605244, 6210523, 1304596, -5235565, 5864241, -3523484, -2997350, -2085207, 3862249, -806917, -2492692, 783832, -5280663, -2715493, 1870458, -2792803, 3907883, 6849399, -2746095, -3130494, -827318, -5201206, -2517925, -7873749, 1073742, -4903242, 9592809, -10563472, 1671816, 5631776, -2413235, -3490198, -773631, -4486094, -8043937, 4013647, -3263102, -6929930, -5174362, -4195646, 157840, -1993939, -4397510, -1879585, 11915313, 6549289, -1606855, -4115116, -11503533, 1195075, 6417218, -3780108, -12713640, -314069, -1977296, 611496, 1628330, 5812165, -317291, -3000572, -1103807, -4679367, -2716567, --2229625, 3535295, -2917894, 3283503, -6818798, 604517, -3148211, -2040110, 4096862, -1932198, --1982664, -2335389, 810675, -4298189, -1767379, -957778, -204011, 969052, -3113315, 912681, --2477123, 1391033, 1577864, 3608310, 633508, 1332514, 1842004, 1481227, -1057636, 623307, -188442, 2697776, 1501091, -226023, 1555852, -86436, 106300, -1043677, 130460, 55298, --1912334, 603980, -1330366, -947577, 102005, 1455457, -428423, 5170604, -2277407, 1315334, -7642895, 496606, 8953933, 9706089, 21658984, 14770393, 9057549, -2302639, -11473468, -4002910, -10510859, 4544076, -11082626, 8267812, -1934883, -5501316, -6782827, 1008780, 18724984, -12695923, -13540421, 5281199, -2919504, 4443681, -3663070, 9686225, -3723200, 5113696, 1016834, -6731288, --4713727, -6558415, 248571, 5536750, -1604707, -3701188, 3568044, 454730, -1122597, -12674448, -3831111, -7103876, -5374078, 3487514, 8346732, -6174553, -8885214, 307627, 7534983, 614180, --5066988, -1895691, -3017752, 3429532, 2502892, -2922188, -4789426, -7198902, 4444755, 11527692, -7065221, 3636227, -6696391, 3462818, 7299297, -8202314, -10703595, 1865626, -8837969, -4233227, --17324824, 217433, -11897596, -6203544, 3198140, -1500554, -1145683, 5261335, 895501, -9711995, --6733972, 4371203, -1344862, 524523, -3022046, 280784, 2833605, -427886, 1877975, 1885491, -388158, 173409, 1393717, 1626182, 1082332, 122943, 335544, -984084, 2563559, 62814, -2359548, -426276, -1570884, 759672, 2196339, -2760053, -4049617, -2070174, -586263, -1273458, -4604742, 1728188, -1449015, 2041720, -1166621, 302795, -3710852, -338766, 269509, -1705102, -23699092, 530428, -9276592, 10445897, -11426224, 13224204, 1072668, -8055748, -13795435, -3344169, -6769942, -10969883, 9735617, -1555315, 6277095, 7473243, -6415071, -2672007, -3860102, -5113696, --1985886, -4777614, 798327, -5839008, 6075231, 3833258, 5099737, 10337986, 5325760, -1544578, -12336757, 6284074, 2282238, -6622303, -7215008, 3696893, -5522254, 1268089, 3901978, -8239358, -7056095, 18787798, 1437203, 13361106, 6331319, 6462852, 9546639, 552977, 5062156, 5337571, --12158516, -8253317, 8397735, 558346, 7926362, 1407139, 8321499, -1346472, 2997887, 2066416, --17418776, -1150514, 4485020, 11656541, 2611340, 10223096, 1047972, -2413235, 3364033, 4585952, --9772124, -16542603, -8719320, 2273112, 4082903, 551903, 12152610, 4279398, -19016504, 4842576, --2747705, 100395, 5489505, -7638063, -245887, -4115653, 3518652, 4920422, 316217, 1062468, -3578245, 144955, -13959, -1648731, -1804960, 647466, 380641, 122407, 2994666, 2158221, -772020, 1791538, 1178969, 85362, -2889976, 2334315, 1935420, -1141388, -226560, -396748, -173946, 1711008, 1447404, 4519916, -3753265, -1065689, 1729261, -913217, 2406256, -1867237, -3999152, -923955, -1162326, 580357, 2312303, 1631014, -507343, -232465, -11432129, -1044214, --10172093, -4860293, 4369593, -5224291, 2365990, 3445638, -6068252, -15291157, 4963909, -15149423, --17293686, 3725347, -8462159, 7620346, 11013907, -2844342, 12839805, -3134789, 12687333, 17131014, -112206, 967441, -17256642, -3326452, 1978369, 2922725, -1928440, -11476153, 898185, -9725417, -1336272, -2655901, 2739652, -3763465, -6308233, 1409823, -1038308, -3579855, 4174708, 360777, --2541010, 12365211, 4713727, 9272834, -5781563, 1673964, -4858145, 3506841, -1003412, 4838818, --1531156, -3722663, -4653597, -11021960, -6373195, 17671642, 7277285, 11706470, -13489419, 2822331, -10159208, -8606041, 184147, 6528351, -3452617, 6551436, 1047972, -11911555, -2979634, -18314814, --2153926, 7332583, 3917547, 12229383, 1495722, 8110509, 8799314, 2980707, -437013, 15856482, -1454383, 375273, -2616709, -1610613, 8527658, 4890894, 8162586, -998043, -1544041, -2103460, -5995775, 1152662, -1108638, 1544578, 4153770, -1012539, -2253247, -4726612, 289910, -3783866, --1527398, -3237332, 2811056, -441845, -5332739, -1079647, 544387, 329639, -126165, -2660732, -3864397, -3093987, 1096827, 1323387, -3977140, -854162, -2605972, 472446, 3456375, -3031173, --2240362, -1922535, -1637993, 1750199, -11148661, -10152229, -10554345, -15652471, 10706280, 6755447, -1047435, -10572599, 9551470, -203474, -13103408, -10914586, -3675418, -2811056, -8360154, -3452617, --4922570, -4373351, -3039226, -12332999, 6196027, 7024419, -552440, -1263794, -2146947, -4640176, --14420890, -15947750, 562641, 6733972, -4100083, -9875204, -5396627, 7282654, 5529771, 224412, --2973728, -4323959, -4167192, 9241159, -4703526, 6453189, -4447439, 52076, -15699179, -3579855, --1173063, 11759620, 3341485, -2935073, -8799314, -6314139, -12344273, 19880866, -9146133, 18872086, -2488934, -8351564, 12613782, 12203076, 21417928, -21100100, 8732205, 3325915, 2883534, -4319127, --5960878, 9096741, 4850092, -1758252, -9773735, 10757819, -5684389, 11576011, 9751723, 9018358, --8269423, 17966386, -13343927, 7282654, 11744588, -6914898, 1511829, 153545, 10209137, -2886755, -4563403, -5488432, 10904385, -535797, 1952063, -6426345, 5003100, -540629, 5158793, -1683627, -6936909, 3168612, 2218888, -4275640, 1347009, -3616363, 241055, -3113315, -3870839, -1001801, --3414499, -2523293, -326954, -1978369, -3403225, 2138894, 2910377, 3994320, 1024350, -4175782, -413391, -2897492, 2711735, 879931, -1896765, 280247, 1907502, 878321, -4400194, 623307, -4496294, 1499481, -660888, 1028645, 16922172, -28350542, -30653182, -19094888, -3302830, -13282723, -8122857, -10908143, 1043140, 5580237, -909996, 20215874, 14413910, 5230734, -5988258, -4390531, -13995688, -2261300, 2092723, -5673115, -12660490, 132607, 5000953, 3467649, -7000260, 6189048, -781684, -723165, 11843909, 16528108, 1089848, -10409390, -4613869, -20056960, -7900593, -5115306, --6141803, 1002338, 3435437, -7233799, -3022046, -10155987, 10951093, 13342316, 10951630, 12463995, -9634149, 16282221, 1890859, 5646809, 3748970, -2850785, 6145025, 9739375, -9780714, -33382634, --7890929, 11206107, -17442400, 8927090, 10833518, 4038880, -5378373, 923418, -4271882, -13357885, --3765613, 8830453, -10858751, -9016210, 3120831, -7306276, 21679922, 22242026, -8321499, 14348949, -3653944, -2020782, -9820443, 6897718, -13208098, -10751377, 11787538, 9067750, 6184216, -772020, --1272384, -15883863, -11593727, -2039036, -3754875, -2910377, -2514167, -4659503, -4037806, -4341675, --2333241, 632971, 3634616, 3027415, 4858682, -373125, -2509335, -2345052, -1762547, 7239704, -6549825, 3497177, -755914, -420907, -1675037, -2658048, -4325569, -1817308, 617938, -1210644, -2769180, -1518271, 952409, 1409823, 1089311, 2768643, -3349001, -43487, 502511, 2343442, --4009352, 6646999, -2901251, -1676111, 27279484, -22953378, -476205, 3941169, -22059488, -6452115, --9345312, 3360275, -6775848, 19145354, 2395518, -191126, 23776938, -1304060, -21210696, -16901234, --10453950, 8213051, -1320166, -20443508, 5155572, 5750961, 10667625, -12144020, 6084358, 10412074, -8910983, 7293392, -2615098, 12434467, 13264470, 4570919, -29956324, 21853868, -10828149, 8450885, --2309082, -3045132, 5575942, -13163538, -7697119, 14076218, -6561637, -1774358, 12527883, -14131516, -12597676, -4874251, 11682311, -15571941, 20690468, -9217000, 32097364, -4165582, 1853815, 8361765, --7320235, -5237713, -4108673, 2693481, -1845225, -16175921, -20600274, -5568425, 11644193, -6043019, --7619272, -20715164, 9366250, 2222109, -28627568, -329639, 156229, 4282083, 14387067, -9837086, -4334159, -12658342, -11391864, -16818556, -17110612, -2901787, -10115185, 12301323, -2287070, 12018392, --6073084, 6888054, -1221918, -7537668, -10888816, -1124208, 990527, 5288179, -2807835, 2383170, -758062, 4345970, -715649, -5540508, -1114544, -8433168, -696858, 1482301, 1583769, 580894, --3546569, -4038880, 4376572, 2273112, -1733556, 5437429, -7038915, -8840653, -498753, 8044474, --155156, 2404108, 2795487, 5535676, -28454, 6183143, -5310727, 2058900, 848256, 5047661, -8003135, -5104032, 971200, -1118839, 984084, 10377178, 31868658, 15681462, -9511742, 21720724, -7348152, -14096083, 5531918, 13991930, -2028835, -4939750, -19324132, -5408975, 12177843, 7727720, -5880347, 3414499, -3350075, -7938710, -18226230, 9671729, -6103686, 4762045, -13953812, -7758322, --183610, -2287070, 18255222, 5341329, 3054796, 13739600, 6821482, -21055540, -2275259, 7558069, --3752191, 333397, 18045842, 5780489, 20923470, -12176769, -7438884, -3502009, -7560753, 8044474, --7887171, 15531139, 15738371, -6934762, -15015743, 25368224, -12916577, -5380521, -2865817, 7494718, -4067334, -14288819, -4048007, 9002788, -6562710, 11443403, -5261335, 16250009, -8290898, 3605625, -25170656, -584116, 17792438, 30387430, 4054449, 14882062, -7527467, -36728412, -24632712, -4836133, --1359357, 20749524, -468151, 6888591, 1983201, -5255966, -16764868, -37898256, 28840706, 1903744, -1066763, 9288941, 4684199, -9296994, 21382494, 988916, 4693863, -332860, 1653562, -18723374, --6699075, -12366285, -7189239, -668941, -6700149, -7010997, 4569845, -1575179, -4534412, 13586055, --2301029, -13943611, -9679246, 3426310, 932008, -4085051, 21386790, 6323803, -6815040, -8225936, -2454574, -1953136, -4118337, 638876, 2210835, -4807679, 5286031, -207769, 7517804, 9357660, -2119030, -926102, -2556043, 6265821, 6394670, 5472325, -41344964, -9958419, 43298640, -16637093, --18471044, 38144680, -24419574, 21488258, 28833726, 11345156, 4041564, -21846888, 8454643, -38307352, --18767396, 8386461, 20025822, 2264522, 4712116, 14536854, 38871600, 26219164, 8319352, 1480153, -96100, 4353486, 3348464, -14986215, 475668, 9646497, 12284143, 51773684, 29315300, 19999516, -37515464, 15338402, -5164698, 11307575, -514859, 35871568, 13145284, -2817499, -5762236, 15060840, --2092186, 17285096, -53121768, 2432025, 18589692, -965831, 22459994, -8170639, 6111739, 11996381, --49417356, -19031000, -3642132, -15734613, -20316270, -24071682, 22957674, -14649060, 4797479, -4345970, -23051626, -37110664, -9961103, -5049271, 12001212, 44560, -3142842, 27737436, 48275968, -3758, -15230491, -8844948, 4347581, 33814276, -35388384, -20961052, -29563334, -37444060, -2978560, -1242319, --14536854, -15720654, -14799920, -14103062, -18198850, -26615376, -11402601, -17160004, -10342281, 4976794, -23983634, 7850664, 3921305, 3850438, -2005213, 5567888, 2640331, -16502875, -14788646, -4052302, --20975546, -8167954, -9055402, -7017977, -8054675, 10067940, -7415798, 921271, 1793149, 4534412, -12084427, 18238578, 136365, -4186519, 13348221, -6267968, 8631274, 3515431, 2151779, -3157875, -2710124, 1993402, -7307887, -9766756, -10598906, -1165547, 22807886, 19432580, -18272402, -66247188, --11587285, 26682484, 6460168, -7683160, -4984847, 1720671, -8887898, -12417824, 14754286, 10521596, -30190936, 10588168, 18238042, -7074348, 40101572, 6896107, 25505126, -3863323, 37011880, -14265197, -24192478, -23638964, 434865, 2294586, 17352204, -7028177, -12541305, -31165894, 17437030, 1986959, -3765613, -15207942, -27460410, -1973001, 3462818, -3685082, 8741332, 17571248, 2949569, 12490302, -45825152, -19441170, 4827007, -15273977, 23795192, 20164872, -22600654, 21338472, 24907052, -17856864, -6524056, 5557688, 17343078, 8196945, 34964792, 10697690, -12039330, 1851668, 45113800, 13984950, --51002736, 14908368, 9453223, -44346612, -11994770, -14348412, -30900142, 2041183, 19517942, 20890720, --12241731, 37736656, -9488656, -16668768, -8216273, 19870666, -74187504, -9277129, 1358283, 59880972, -8234526, 50750408, 24738474, 35571992, -730681, 12102144, -6573985, 30127584, 30999464, 27420682, --6400038, -18519898, -7237557, 30114700, -3284039, -19906636, -8315594, 35716948, 5276904, -22427782, --7349226, 32220844, 9526774, 13355738, -156766, 12112882, -8961986, -735513, -418759, 5202816, --581968, 5639292, -4213363, -10570451, -12143483, -15256798, -1721745, -11147588, 275952, -2028835, --4048544, 10689637, -11941083, -5032091, -11836930, -4512937, -21958020, -16586090, 22749368, 398895, --40840308, 33114198, 71446784, 4757750, -39609800, 61536680, -13791677, -920197, 8865886, 34893388, --19991462, 1476395, 69994008, -34677564, 16739098, 23535884, 22692460, -31015570, -3030636, 5539971, --15093052, 2635499, 7387344, -12615393, 12510703, -21381958, -5957120, -8567386, -1511829, -12840342, --11123428, -4153234, 6841346, -23315230, -21675626, 32747516, 6058052, -20523502, -5262946, 19477140, -47405164, -4127464, -22941030, 24669218, 36386428, -10540387, -2572686, 940598, 13253195, 98247, -158377, 16491064, -39934604, 27484032, -22983980, 295279, -32631014, 18387292, -2434710, -48932564, -24282672, -3492882, -18803904, 33022392, 4013647, 32652488, -27485644, -10576894, -11024107, -25546466, --39508332, -52441012, 44644576, 18196702, 32902134, 30215632, 18835042, 7294465, -18719614, 28611462, --14081050, -12040941, 38872676, 12935905, -7150047, -3474092, 11950747, -27456116, 7220377, -10850161, -18327162, -6984154, -11588359, 17346836, 3100430, -20409684, 1802276, -9671729, -5525476, 4317516, --4291746, 3733400, -949725, -14703284, -7262790, 6356552, -4720169, -9274982, 9365176, 14460618, -14386530, -11428371, -4494147, 16622597, -28021978, 8455717, 10524817, -12098923, -27838368, 14089103, -1958505, -12658342, 8968429, -13551159, -21616570, 5718749, 19788524, -16227460, -6780680, 6904697, -17307108, -4716411, -1907502, 931471, -11731703, 38742216, -15791521, 11476689, 8929774, -40184788, -36098664, 12632036, -10366440, 31018790, 2551748, 2064806, 15120969, -13485124, 39537860, -31793496, --17067126, 14745160, 13575318, 6720550, -29616484, -18015240, -32998234, 18177912, 4304094, 16598975, --47782, 17826262, 7125888, 5943698, 632434, 15185931, -6956774, 8339216, -15149960, 11243151, --14015552, -174483, -18475876, -13113072, 658741, -16406775, 7538742, 38893612, 9190156, -29275570, -15106474, 11645804, 20526722, 501437, 34216932, -29613800, 4367982, 13618804, -28646358, -6742562, -57328688, 32266478, -76258752, -32412508, 40296456, -11162620, -36288180, 14119705, -3890704, -27978490, -20229296, 34475704, -47119548, 9141838, 41442676, -28371480, -25560960, 33915748, 4333085, -28191628, -4738960, 21981106, -24755654, -3578782, 26604102, -4128537, -12243878, -19432042, 24300388, -6693707, -13417478, 2983392, 13624710, -9758703, 8704825, 24582246, 9471477, -18505940, 1165547, -13313862, --9193914, -18656802, -2018098, -5166309, -1667521, -12636331, 12279311, 10626823, -4703526, 28074590, --7570954, -30427158, 35878008, -4599373, -7315940, 6385543, 12280385, 1391033, -3806952, 30302068, -16383153, -21845278, 1359357, 8370355, -16087337, -13253732, 21665426, -11776800, -42505680, 40105868, -4654671, -41328860, -1723356, 21170430, -15918759, -34840776, 19323058, 26102126, -43011948, 5812702, -31408022, -19193672, -3855807, 34529928, -3174518, -14786499, 7616588, 14272713, -19772418, -5788006, -19931332, -5268851, 33157148, -72130752, -5623723, -12389370, -81151800, -13991393, -25345138, 8368207, -13424994, 24332064, -11101954, -31029528, -12344273, -44976896, 5639829, 16714402, 8964670, 7669738, --36980744, 22878218, 3121368, -43457016, 31644782, -46764140, -19746112, -17252346, 12393128, 34638376, -39209832, -2781528, -9341554, -75953272, 32403918, 77858096, 27797028, 2253784, -42926588, -61822832, --25999048, -4781909, 32136020, -38539816, -23717346, -39603356, -13175349, 72769632, 77541880, -13099113, --36334888, -30481382, -16888886, -7749195, 38865160, -18177376, 11354820, 8668855, 25726318, -6694781, --17989470, -45035416, -20135344, 69836704, 29317446, 46643880, -42712376, -22981296, -19984482, 47656956, -591095, -76229760, -74381856, 41947872, 70997424, 120196272, 20579872, -101145408, 16658031, -26336740, -34223372, 33849712, -124907312, -39190504, 23990076, 66180076, 15621333, -62846644, -14542759, -5777805, -36518496, 32032940, 8072928, -50202264, -8281234, 11745125, 22308060, 11884711, -13574781, 2806224, --28432684, -2916283, -809601, 27828166, -18935438, 36907728, -23460186, 11027865, 20699594, -7972533, -17114370, 16158204, 28114320, 2200097, -14136885, -15641197, 2236604, 2158221, 4481262, 3762928, --1279363, -1107565, -10631118, -10041634, -2498060, 18811420, -4959614, 1353989, -4088272, 6882685, -1021129, 10911364, -36348308, 30974230, -32389958, -7456063, 1527398, 7938174, -5862094, 7082938, -13024488, -21441014, -17808546, -758599, 5088463, 13176960, -14957760, 1789928, 11957726, -9413495, -7567733, -5064840, 35979476, -876710, -5102958, 20144470, 11517492, 17859010, -8941048, 11268384, --3427921, -864362, 15310485, 10314901, 2778844, 4111894, 20549272, -19287624, -5435281, 1648194, -27628988, -816044, -5884105, 25061672, -6190122, -11436961, -10730439, 20698522, -4720706, 8825084, -5920076, 2825552, -7118909, 3403225, 8505109, 2517925, 24095840, 11428908, 7060390, -10700374, --1248762, 8689256, -16676284, 5728950, 6781217, 17146584, 561030, -2479807, 10251013, 1792075, --19397682, 21800718, 7118909, -5585068, 18773838, -12922483, -1211718, -9749576, -7830799, 17736068, -13625247, -1671816, 6995965, -11259794, 2881386, -15037217, -1033477, -13809930, 3349001, 8210367, -3512210, 1175747, -2532957, -2292439, 2927557, -8443369, 2703145, -3918621, 4170950, -5727339, --1475858, -5339718, -5834176, 2541547, -693637, -891206, -1904281, 8117488, 3718905, -11382737, --10979010, -8255464, 2798708, 3064459, 8712341, 4428112, -10073846, -2057826, -3532074, 9123047, --1991254, 9874667, 4731980, -9017821, 493384, 4095251, -4414690, 6109591, -3456375, 6971806, --4823249, -2212982, 2877091, -4758824, 57496192, 4593468, -21199958, -17617418, 2882460, 12959527, --766115, 11827803, -4487167, -3211562, -15910169, -3538516, -11134166, 17706540, -11072963, -937377, --6982006, -3338800, -4086662, 1912334, -11766600, 1779727, -5056787, -8337606, 2464774, -1350230, -693100, -2275259, 4179540, 1978906, -9835475, -6359236, 20938, -6709813, -5790690, 4871567, --1568737, -10099616, 699006, -5623723, 4327717, -14907295, 7472170, -6488085, -11270531, 3420942, --5149129, -5872294, 1559610, -109522, 733903, -2488934, 2530810, -4564477, 5068599, -3135326, -565325, 8294656, -5961952, 2779381, -1546188, -886374, 2297808, -6870337, 6279779, -7221451, -6270653, -1511829, -265214, -4624606, 5931887, -6936372, 496606, 2446521, -9072582, 9088151, --5506685, 3855807, -4158602, 3684008, -3192771, -4028679, 6805913, -4242891, -785442, 6642167, --4237522, -63888, 606664, 1049583, -4687420, 376347, -363462, -2075543, -1267552, 1138166, --1423782, -2559264, -1199907, 2893734, -2575370, 2167885, -675384, -306553, -772020, -1966558, -1928977, -1329829, -1462436, 1986422, -1995012, 1570347, 820876, -1257889, 401579, -328028, -645319, -4016331, 3944391, -4131222, 813896, -613643, -2058900, 547608, -1085016, 2806224, --27634356, -44680008, 47362752, 164437648, 31579820, 49323940, -101259224, -140924864, -58798640, -73826728, -57007100, 132004208, 75981728, 50914152, 5156645, -72858752, -64381024, -64512020, -26299696, 36478232, -31237298, 33237678, 30000346, -1081258, -4791573, -7725573, -10326175, -15362024, -2006287, 20110648, --1735167, -11823508, -4540318, -17042968, -9474161, -3043521, -4154844, 32319628, 30198988, 17730162, -19196356, 883690, -23344758, -23968064, -43723304, -29271812, 4088272, 3470871, 9012989, 25737592, -36881420, 21985938, 18615462, -954557, -20762408, -29111826, -24955370, -21117280, 3092377, 7377680, -13568875, 9201431, 6281390, 1228361, -7501698, 2859911, 827318, 3054796, 18387828, -1835562, -8199093, 8196408, -13504988, -25853018, -26385594, -24012626, 6450504, 19454592, 14305462, 21297670, -19002546, -6471979, 4860829, 11548630, -7419019, -7198365, -16355772, -21368536, -8130910, -5158256, --2088428, 8843875, 4320200, 4707284, 14433238, 13460964, 14211510, 7890392, 3720516, -7206955, --8615704, -21964462, -23791434, -17112224, -12306155, 5242545, 15757161, 19505594, 26515518, 18693308, -12176232, 22012, -8036958, -13057774, -27117886, -29067802, -10052371, 5010080, 13991930, 10882910, -9791989, 10893648, 8153459, -693637, -1879585, 1011465, 482110, -4954782, -4115653, -14765024, --9398462, -560493, 5490042, 7046431, 5912560, -2326799, -29528, 5161477, 4407174, 176094, -3142842, 2426657, -1449015, -7011534, -5933498, -6081137, -1101659, -1687385, 172872, 1158567, -6395207, 6658273, 6322192, 2576981, 1786706, -2451353, -1755568, -1751810, 297963, -704912, -0, 0, 0, 0, 0, 0, 0, 0, }, +9543417, 2138357, 1384590, -2166274, -790274, -4711043, -202937, -1203128, 3533148, 3134253, +-3160022, -2272038, -1909650, -1809255, -2250563, 246961, 2811593, -2234457, -2403034, -7866770, +-5793374, -4255776, -199716, 423591, 5768678, -3178813, 2858838, 1768990, 1469416, 346819, +-4310000, 1104880, -9188546, 1120987, 283468, 433792, -630823, -5666136, -2583423, -4884452, +299574, 314606, -2954401, -7584912, 5214091, -366146, -4439923, -20938, 2958696, 644245, +-1531693, 1078037, -2528662, -1090385, -2386391, 1837172, -2539936, 3576097, 2891587, -573915, +-5054103, 264141, 697395, -449361, -1852742, 1279900, 898185, -1152662, 2730526, 2974802, +2052458, 196495, 12885, 951335, -2745021, 380641, 4224637, 493921, 807454, 782221, +3121904, 1199907, 981400, 2801929, -692027, 2206003, -862752, 1439888, 1010928, -384400, +598074, 813359, -249108, 1029182, 1577327, 376883, 33823, 1118302, 1486596, 1187559, +-178778, 451508, 487479, 580357, 170725, 93952, -114890, -370978, -1174674, 765578, +85899, -10144713, -11386495, -808528, -4500589, 3477850, -5578089, 1401770, 2582886, -3804267, +3113315, 11394548, 643171, -1048509, 6249715, 846645, 6275484, 97174, 2867428, -4484483, +-5938329, -321586, 2261300, -4132832, -1324461, -419296, -1159641, 1131724, -1207960, -2182917, +2072322, -1029182, -858457, 4476430, 6391985, -1990717, -3423626, 1270774, 5117991, 1939178, +6557342, 273804, -910533, -168577, 5853504, 375273, -4168803, -2296197, 4598836, 3326989, +3580929, 970663, -2263448, -4721780, 947577, 2221572, 2772402, -1017907, -2458332, 5103495, +3445101, -847719, -2838974, 170188, -1969779, 5319317, 1651415, 974958, 1720671, 593779, +1126892, 3267933, 602369, 3282966, -610959, 5233418, 667867, -5180268, -2020245, -1805497, +2602750, 3197603, -483721, 853625, -3591667, -1319092, -3342558, -1027034, -2166811, -1876901, +-759672, 1097901, 83752, 28991, 178241, 1447404, 266288, 328565, -143881, -1555315, +-402653, 80531, -114890, 627065, 276489, 267899, -552977, 5978595, 4192962, 6295349, +6554657, -1571421, 3285113, -1404991, -3711926, -346282, 9709310, 4249334, 2170569, 3453691, +-4043175, 6919729, 2972117, 4636417, -1362578, -7682086, 3234647, -11986180, 2438468, -3061775, +2416456, 1888712, -218506, -4126390, 1002875, 2691871, -1596117, 2524367, 6085432, -436476, +-5029944, -6867653, 1081258, 3069291, -6312528, 3514894, -5931887, -3876745, 4322885, -2507187, +-5012764, -2448668, -3533684, 5548024, 7627862, 4314295, -2731062, 32749, 4078608, 2430415, +-336081, -3114388, -1469953, -2733210, 2909304, 9422085, -66572, -5111011, -4027069, 2185602, +775242, -1915555, -5571110, -103616, -4771172, -1877438, 759672, -819265, 3799436, 708133, +4769025, 5541582, -4854924, -1789928, 278636, -3794604, -4547834, -728534, 28454, -2787434, +2676838, -2532957, -309775, 2108829, 430034, 151398, 2089502, -2561948, -880468, 606664, +968515, -1160178, 835908, 454730, 943819, -142808, -16106, 960999, -1304596, 1675574, +-1306744, 820339, 260382, -372052, -99858, 745714, -535797, -872415, -1476932, 925565, +-1083942, 406948, 1414655, -194347, -900333, 13376139, -3593814, 1304060, 1909650, -8822937, +-7517804, 195958, 8742406, 6670084, 10567767, 3485903, -2982855, -4547297, 779000, -2610266, +2083059, 1009854, 3570729, 6564858, 2091112, 4840428, -136365, 2870112, -2913062, -6114960, +-3205119, -4680441, 63351, -1306744, 1427003, -7449621, -3719442, -996969, 2756295, -3682398, +7719130, -8698383, 1866163, -5477694, -4443144, 2529199, 2216203, 7447474, -827318, 1882269, +-2126546, 5216238, 5512591, 1532767, -1188632, -5604933, -777926, 1934346, -4297652, 4307316, +-4730907, 2029372, 7820062, 6554657, 96100, -2525978, 1224603, 7818451, -977642, 1921998, +1214402, 6388764, 62814, -1706176, -3968550, 2785823, -5980205, 2175938, 12436615, 3056943, +5855651, 579821, -8229694, 2974265, 1527398, -3248069, 3356517, -1043677, -897111, -4105452, +1714229, 4036733, 1801739, 775242, -1876901, -4041027, 932008, -805843, -631360, 258772, +-206695, -765578, 1299765, -1379221, -1255204, -1188632, 1829656, 731218, 1439351, -814970, +1327145, 72478, -1313723, 1404991, 765041, -1166621, -2226941, -813896, 1827509, 111669, +-484794, 917512, 828392, 1986422, -96637, -782221, -4876936, -8341900, 4207994, -5947993, +-6132140, 1263794, -2972117, -19624242, 1901597, 3032247, 17962626, 5820218, 1329829, -8154533, +7485055, 3246459, -3260954, 3926137, -682900, 6531572, -3942780, -2018635, -1329292, -1730335, +-2708514, -1168768, 4634807, 4062502, 7014219, 2514703, 3439195, -64425, -4571993, -4932770, +6643241, -3633006, 1472637, -591095, -4699768, 6752226, -1132261, -2913062, 1169305, 4918275, +-3272765, 7463043, -9454297, -7807714, -9588514, 2330020, -5405217, -8191577, -1896228, 7674570, +-3258270, 2309082, 4537633, -3288334, -4336307, 357019, 695248, 2572686, 456877, -2384244, +-288300, 9885941, 4177393, -4020626, -12447889, -9927817, 3617973, 11758547, 9867687, -7704098, +181462, -5025112, 2210298, 1956358, -8442832, -667867, 1651952, 986232, -2305324, 504122, +485868, 256624, 2837900, 2614561, -1703491, -2055142, 1380295, -999654, 634045, -2940979, +1183800, 877247, -4714801, -1058173, 984621, 710280, 361851, 919660, -315143, 339302, +321049, 463856, -1739999, -243203, 574452, -549756, -2109903, -1045825, 251256, 320512, +2234457, -3506304, 5814312, -9774809, -1626719, -12113418, -3509525, 1795833, 4269735, -11041824, +-2705293, 7562901, -867583, -11052025, 5772973, -3537979, -6276021, 3462281, 5844914, 1312113, +1260573, 1998234, 7622493, -3596498, -3102040, 1980517, -3710315, -1915019, 145492, -426812, +296890, 6073621, 3160022, -706522, -488016, 3549254, 1532230, 4359392, -337155, 4921496, +5251135, 2076617, -5646809, 821949, -757525, -4045859, 5514738, -3104725, 2332167, -3758633, +-1343788, -13534516, 1275605, 10987063, 1006633, 11680164, -2120103, -2625299, -11992622, 14113263, +6683506, 8041790, 1350230, 6591701, -42413, -51540, 5532455, -3215320, 2021856, -22549, +-13455059, 3094524, -3133716, 3563749, -2002529, 3216394, 12546136, 3775276, 3326989, -151934, +-7574175, 5705327, -3059627, 1144609, 2889439, 3761855, -4160750, -1105954, -1708323, -2265595, +2467459, -1424855, -1069447, -1779727, 310848, 456877, 207232, -3501472, 1422708, 607201, +-768262, 1010391, 505732, 881005, 746251, 1663763, 30602, 354335, -198642, -804770, +2110977, -394600, 2968896, 459025, 1243393, -910533, 1639067, 545461, -15541339, -512712, +11682848, -2560874, 6914361, -7457137, -5145371, -13425531, 7663833, 3978750, 8898635, 4160213, +-4393752, 7503308, -1903744, 7179038, -4734665, -4372814, 536871, -1605244, 6210523, 1304596, +5235565, 5864241, -3523484, -2997350, -2085207, 3862249, -806917, -2492692, 783832, -5280663, +2715493, 1870458, -2792803, 3907883, 6849399, -2746095, -3130494, -827318, -5201206, -2517925, +7873749, 1073742, -4903242, 9592809, -10563472, 1671816, 5631776, -2413235, -3490198, -773631, +4486094, -8043937, 4013647, -3263102, -6929930, -5174362, -4195646, 157840, -1993939, -4397510, +1879585, 11915313, 6549289, -1606855, -4115116, -11503533, 1195075, 6417218, -3780108, -12713640, +314069, -1977296, 611496, 1628330, 5812165, -317291, -3000572, -1103807, -4679367, -2716567, +-2229625, 3535295, -2917894, 3283503, -6818798, 604517, -3148211, -2040110, 4096862, -1932198, +-1982664, -2335389, 810675, -4298189, -1767379, -957778, -204011, 969052, -3113315, 912681, +-2477123, 1391033, 1577864, 3608310, 633508, 1332514, 1842004, 1481227, -1057636, 623307, +188442, 2697776, 1501091, -226023, 1555852, -86436, 106300, -1043677, 130460, 55298, +-1912334, 603980, -1330366, -947577, 102005, 1455457, -428423, 5170604, -2277407, 1315334, +7642895, 496606, 8953933, 9706089, 21658984, 14770393, 9057549, -2302639, -11473468, -4002910, +10510859, 4544076, -11082626, 8267812, -1934883, -5501316, -6782827, 1008780, 18724984, -12695923, +13540421, 5281199, -2919504, 4443681, -3663070, 9686225, -3723200, 5113696, 1016834, -6731288, +-4713727, -6558415, 248571, 5536750, -1604707, -3701188, 3568044, 454730, -1122597, -12674448, +3831111, -7103876, -5374078, 3487514, 8346732, -6174553, -8885214, 307627, 7534983, 614180, +-5066988, -1895691, -3017752, 3429532, 2502892, -2922188, -4789426, -7198902, 4444755, 11527692, +7065221, 3636227, -6696391, 3462818, 7299297, -8202314, -10703595, 1865626, -8837969, -4233227, +-17324824, 217433, -11897596, -6203544, 3198140, -1500554, -1145683, 5261335, 895501, -9711995, +-6733972, 4371203, -1344862, 524523, -3022046, 280784, 2833605, -427886, 1877975, 1885491, +388158, 173409, 1393717, 1626182, 1082332, 122943, 335544, -984084, 2563559, 62814, +2359548, -426276, -1570884, 759672, 2196339, -2760053, -4049617, -2070174, -586263, -1273458, +4604742, 1728188, -1449015, 2041720, -1166621, 302795, -3710852, -338766, 269509, -1705102, +23699092, 530428, -9276592, 10445897, -11426224, 13224204, 1072668, -8055748, -13795435, -3344169, +6769942, -10969883, 9735617, -1555315, 6277095, 7473243, -6415071, -2672007, -3860102, -5113696, +-1985886, -4777614, 798327, -5839008, 6075231, 3833258, 5099737, 10337986, 5325760, -1544578, +12336757, 6284074, 2282238, -6622303, -7215008, 3696893, -5522254, 1268089, 3901978, -8239358, +7056095, 18787798, 1437203, 13361106, 6331319, 6462852, 9546639, 552977, 5062156, 5337571, +-12158516, -8253317, 8397735, 558346, 7926362, 1407139, 8321499, -1346472, 2997887, 2066416, +-17418776, -1150514, 4485020, 11656541, 2611340, 10223096, 1047972, -2413235, 3364033, 4585952, +-9772124, -16542603, -8719320, 2273112, 4082903, 551903, 12152610, 4279398, -19016504, 4842576, +-2747705, 100395, 5489505, -7638063, -245887, -4115653, 3518652, 4920422, 316217, 1062468, +3578245, 144955, -13959, -1648731, -1804960, 647466, 380641, 122407, 2994666, 2158221, +772020, 1791538, 1178969, 85362, -2889976, 2334315, 1935420, -1141388, -226560, -396748, +173946, 1711008, 1447404, 4519916, -3753265, -1065689, 1729261, -913217, 2406256, -1867237, +3999152, -923955, -1162326, 580357, 2312303, 1631014, -507343, -232465, -11432129, -1044214, +-10172093, -4860293, 4369593, -5224291, 2365990, 3445638, -6068252, -15291157, 4963909, -15149423, +-17293686, 3725347, -8462159, 7620346, 11013907, -2844342, 12839805, -3134789, 12687333, 17131014, +112206, 967441, -17256642, -3326452, 1978369, 2922725, -1928440, -11476153, 898185, -9725417, +1336272, -2655901, 2739652, -3763465, -6308233, 1409823, -1038308, -3579855, 4174708, 360777, +-2541010, 12365211, 4713727, 9272834, -5781563, 1673964, -4858145, 3506841, -1003412, 4838818, +-1531156, -3722663, -4653597, -11021960, -6373195, 17671642, 7277285, 11706470, -13489419, 2822331, +10159208, -8606041, 184147, 6528351, -3452617, 6551436, 1047972, -11911555, -2979634, -18314814, +-2153926, 7332583, 3917547, 12229383, 1495722, 8110509, 8799314, 2980707, -437013, 15856482, +1454383, 375273, -2616709, -1610613, 8527658, 4890894, 8162586, -998043, -1544041, -2103460, +5995775, 1152662, -1108638, 1544578, 4153770, -1012539, -2253247, -4726612, 289910, -3783866, +-1527398, -3237332, 2811056, -441845, -5332739, -1079647, 544387, 329639, -126165, -2660732, +3864397, -3093987, 1096827, 1323387, -3977140, -854162, -2605972, 472446, 3456375, -3031173, +-2240362, -1922535, -1637993, 1750199, -11148661, -10152229, -10554345, -15652471, 10706280, 6755447, +1047435, -10572599, 9551470, -203474, -13103408, -10914586, -3675418, -2811056, -8360154, -3452617, +-4922570, -4373351, -3039226, -12332999, 6196027, 7024419, -552440, -1263794, -2146947, -4640176, +-14420890, -15947750, 562641, 6733972, -4100083, -9875204, -5396627, 7282654, 5529771, 224412, +-2973728, -4323959, -4167192, 9241159, -4703526, 6453189, -4447439, 52076, -15699179, -3579855, +-1173063, 11759620, 3341485, -2935073, -8799314, -6314139, -12344273, 19880866, -9146133, 18872086, +2488934, -8351564, 12613782, 12203076, 21417928, -21100100, 8732205, 3325915, 2883534, -4319127, +-5960878, 9096741, 4850092, -1758252, -9773735, 10757819, -5684389, 11576011, 9751723, 9018358, +-8269423, 17966386, -13343927, 7282654, 11744588, -6914898, 1511829, 153545, 10209137, -2886755, +4563403, -5488432, 10904385, -535797, 1952063, -6426345, 5003100, -540629, 5158793, -1683627, +6936909, 3168612, 2218888, -4275640, 1347009, -3616363, 241055, -3113315, -3870839, -1001801, +-3414499, -2523293, -326954, -1978369, -3403225, 2138894, 2910377, 3994320, 1024350, -4175782, +413391, -2897492, 2711735, 879931, -1896765, 280247, 1907502, 878321, -4400194, 623307, +4496294, 1499481, -660888, 1028645, 16922172, -28350542, -30653182, -19094888, -3302830, -13282723, +8122857, -10908143, 1043140, 5580237, -909996, 20215874, 14413910, 5230734, -5988258, -4390531, +13995688, -2261300, 2092723, -5673115, -12660490, 132607, 5000953, 3467649, -7000260, 6189048, +781684, -723165, 11843909, 16528108, 1089848, -10409390, -4613869, -20056960, -7900593, -5115306, +-6141803, 1002338, 3435437, -7233799, -3022046, -10155987, 10951093, 13342316, 10951630, 12463995, +9634149, 16282221, 1890859, 5646809, 3748970, -2850785, 6145025, 9739375, -9780714, -33382634, +-7890929, 11206107, -17442400, 8927090, 10833518, 4038880, -5378373, 923418, -4271882, -13357885, +-3765613, 8830453, -10858751, -9016210, 3120831, -7306276, 21679922, 22242026, -8321499, 14348949, +3653944, -2020782, -9820443, 6897718, -13208098, -10751377, 11787538, 9067750, 6184216, -772020, +-1272384, -15883863, -11593727, -2039036, -3754875, -2910377, -2514167, -4659503, -4037806, -4341675, +-2333241, 632971, 3634616, 3027415, 4858682, -373125, -2509335, -2345052, -1762547, 7239704, +6549825, 3497177, -755914, -420907, -1675037, -2658048, -4325569, -1817308, 617938, -1210644, +2769180, -1518271, 952409, 1409823, 1089311, 2768643, -3349001, -43487, 502511, 2343442, +-4009352, 6646999, -2901251, -1676111, 27279484, -22953378, -476205, 3941169, -22059488, -6452115, +-9345312, 3360275, -6775848, 19145354, 2395518, -191126, 23776938, -1304060, -21210696, -16901234, +-10453950, 8213051, -1320166, -20443508, 5155572, 5750961, 10667625, -12144020, 6084358, 10412074, +8910983, 7293392, -2615098, 12434467, 13264470, 4570919, -29956324, 21853868, -10828149, 8450885, +-2309082, -3045132, 5575942, -13163538, -7697119, 14076218, -6561637, -1774358, 12527883, -14131516, +12597676, -4874251, 11682311, -15571941, 20690468, -9217000, 32097364, -4165582, 1853815, 8361765, +-7320235, -5237713, -4108673, 2693481, -1845225, -16175921, -20600274, -5568425, 11644193, -6043019, +-7619272, -20715164, 9366250, 2222109, -28627568, -329639, 156229, 4282083, 14387067, -9837086, +4334159, -12658342, -11391864, -16818556, -17110612, -2901787, -10115185, 12301323, -2287070, 12018392, +-6073084, 6888054, -1221918, -7537668, -10888816, -1124208, 990527, 5288179, -2807835, 2383170, +758062, 4345970, -715649, -5540508, -1114544, -8433168, -696858, 1482301, 1583769, 580894, +-3546569, -4038880, 4376572, 2273112, -1733556, 5437429, -7038915, -8840653, -498753, 8044474, +-155156, 2404108, 2795487, 5535676, -28454, 6183143, -5310727, 2058900, 848256, 5047661, +8003135, -5104032, 971200, -1118839, 984084, 10377178, 31868658, 15681462, -9511742, 21720724, +7348152, -14096083, 5531918, 13991930, -2028835, -4939750, -19324132, -5408975, 12177843, 7727720, +5880347, 3414499, -3350075, -7938710, -18226230, 9671729, -6103686, 4762045, -13953812, -7758322, +-183610, -2287070, 18255222, 5341329, 3054796, 13739600, 6821482, -21055540, -2275259, 7558069, +-3752191, 333397, 18045842, 5780489, 20923470, -12176769, -7438884, -3502009, -7560753, 8044474, +-7887171, 15531139, 15738371, -6934762, -15015743, 25368224, -12916577, -5380521, -2865817, 7494718, +4067334, -14288819, -4048007, 9002788, -6562710, 11443403, -5261335, 16250009, -8290898, 3605625, +25170656, -584116, 17792438, 30387430, 4054449, 14882062, -7527467, -36728412, -24632712, -4836133, +-1359357, 20749524, -468151, 6888591, 1983201, -5255966, -16764868, -37898256, 28840706, 1903744, +1066763, 9288941, 4684199, -9296994, 21382494, 988916, 4693863, -332860, 1653562, -18723374, +-6699075, -12366285, -7189239, -668941, -6700149, -7010997, 4569845, -1575179, -4534412, 13586055, +-2301029, -13943611, -9679246, 3426310, 932008, -4085051, 21386790, 6323803, -6815040, -8225936, +2454574, -1953136, -4118337, 638876, 2210835, -4807679, 5286031, -207769, 7517804, 9357660, +2119030, -926102, -2556043, 6265821, 6394670, 5472325, -41344964, -9958419, 43298640, -16637093, +-18471044, 38144680, -24419574, 21488258, 28833726, 11345156, 4041564, -21846888, 8454643, -38307352, +-18767396, 8386461, 20025822, 2264522, 4712116, 14536854, 38871600, 26219164, 8319352, 1480153, +96100, 4353486, 3348464, -14986215, 475668, 9646497, 12284143, 51773684, 29315300, 19999516, +37515464, 15338402, -5164698, 11307575, -514859, 35871568, 13145284, -2817499, -5762236, 15060840, +-2092186, 17285096, -53121768, 2432025, 18589692, -965831, 22459994, -8170639, 6111739, 11996381, +-49417356, -19031000, -3642132, -15734613, -20316270, -24071682, 22957674, -14649060, 4797479, -4345970, +23051626, -37110664, -9961103, -5049271, 12001212, 44560, -3142842, 27737436, 48275968, -3758, +15230491, -8844948, 4347581, 33814276, -35388384, -20961052, -29563334, -37444060, -2978560, -1242319, +-14536854, -15720654, -14799920, -14103062, -18198850, -26615376, -11402601, -17160004, -10342281, 4976794, +23983634, 7850664, 3921305, 3850438, -2005213, 5567888, 2640331, -16502875, -14788646, -4052302, +-20975546, -8167954, -9055402, -7017977, -8054675, 10067940, -7415798, 921271, 1793149, 4534412, +12084427, 18238578, 136365, -4186519, 13348221, -6267968, 8631274, 3515431, 2151779, -3157875, +2710124, 1993402, -7307887, -9766756, -10598906, -1165547, 22807886, 19432580, -18272402, -66247188, +-11587285, 26682484, 6460168, -7683160, -4984847, 1720671, -8887898, -12417824, 14754286, 10521596, +30190936, 10588168, 18238042, -7074348, 40101572, 6896107, 25505126, -3863323, 37011880, -14265197, +24192478, -23638964, 434865, 2294586, 17352204, -7028177, -12541305, -31165894, 17437030, 1986959, +3765613, -15207942, -27460410, -1973001, 3462818, -3685082, 8741332, 17571248, 2949569, 12490302, +45825152, -19441170, 4827007, -15273977, 23795192, 20164872, -22600654, 21338472, 24907052, -17856864, +6524056, 5557688, 17343078, 8196945, 34964792, 10697690, -12039330, 1851668, 45113800, 13984950, +-51002736, 14908368, 9453223, -44346612, -11994770, -14348412, -30900142, 2041183, 19517942, 20890720, +-12241731, 37736656, -9488656, -16668768, -8216273, 19870666, -74187504, -9277129, 1358283, 59880972, +8234526, 50750408, 24738474, 35571992, -730681, 12102144, -6573985, 30127584, 30999464, 27420682, +-6400038, -18519898, -7237557, 30114700, -3284039, -19906636, -8315594, 35716948, 5276904, -22427782, +-7349226, 32220844, 9526774, 13355738, -156766, 12112882, -8961986, -735513, -418759, 5202816, +-581968, 5639292, -4213363, -10570451, -12143483, -15256798, -1721745, -11147588, 275952, -2028835, +-4048544, 10689637, -11941083, -5032091, -11836930, -4512937, -21958020, -16586090, 22749368, 398895, +-40840308, 33114198, 71446784, 4757750, -39609800, 61536680, -13791677, -920197, 8865886, 34893388, +-19991462, 1476395, 69994008, -34677564, 16739098, 23535884, 22692460, -31015570, -3030636, 5539971, +-15093052, 2635499, 7387344, -12615393, 12510703, -21381958, -5957120, -8567386, -1511829, -12840342, +-11123428, -4153234, 6841346, -23315230, -21675626, 32747516, 6058052, -20523502, -5262946, 19477140, +47405164, -4127464, -22941030, 24669218, 36386428, -10540387, -2572686, 940598, 13253195, 98247, +158377, 16491064, -39934604, 27484032, -22983980, 295279, -32631014, 18387292, -2434710, -48932564, +24282672, -3492882, -18803904, 33022392, 4013647, 32652488, -27485644, -10576894, -11024107, -25546466, +-39508332, -52441012, 44644576, 18196702, 32902134, 30215632, 18835042, 7294465, -18719614, 28611462, +-14081050, -12040941, 38872676, 12935905, -7150047, -3474092, 11950747, -27456116, 7220377, -10850161, +18327162, -6984154, -11588359, 17346836, 3100430, -20409684, 1802276, -9671729, -5525476, 4317516, +-4291746, 3733400, -949725, -14703284, -7262790, 6356552, -4720169, -9274982, 9365176, 14460618, +14386530, -11428371, -4494147, 16622597, -28021978, 8455717, 10524817, -12098923, -27838368, 14089103, +1958505, -12658342, 8968429, -13551159, -21616570, 5718749, 19788524, -16227460, -6780680, 6904697, +17307108, -4716411, -1907502, 931471, -11731703, 38742216, -15791521, 11476689, 8929774, -40184788, +36098664, 12632036, -10366440, 31018790, 2551748, 2064806, 15120969, -13485124, 39537860, -31793496, +-17067126, 14745160, 13575318, 6720550, -29616484, -18015240, -32998234, 18177912, 4304094, 16598975, +-47782, 17826262, 7125888, 5943698, 632434, 15185931, -6956774, 8339216, -15149960, 11243151, +-14015552, -174483, -18475876, -13113072, 658741, -16406775, 7538742, 38893612, 9190156, -29275570, +15106474, 11645804, 20526722, 501437, 34216932, -29613800, 4367982, 13618804, -28646358, -6742562, +57328688, 32266478, -76258752, -32412508, 40296456, -11162620, -36288180, 14119705, -3890704, -27978490, +20229296, 34475704, -47119548, 9141838, 41442676, -28371480, -25560960, 33915748, 4333085, -28191628, +4738960, 21981106, -24755654, -3578782, 26604102, -4128537, -12243878, -19432042, 24300388, -6693707, +13417478, 2983392, 13624710, -9758703, 8704825, 24582246, 9471477, -18505940, 1165547, -13313862, +-9193914, -18656802, -2018098, -5166309, -1667521, -12636331, 12279311, 10626823, -4703526, 28074590, +-7570954, -30427158, 35878008, -4599373, -7315940, 6385543, 12280385, 1391033, -3806952, 30302068, +16383153, -21845278, 1359357, 8370355, -16087337, -13253732, 21665426, -11776800, -42505680, 40105868, +4654671, -41328860, -1723356, 21170430, -15918759, -34840776, 19323058, 26102126, -43011948, 5812702, +31408022, -19193672, -3855807, 34529928, -3174518, -14786499, 7616588, 14272713, -19772418, -5788006, +19931332, -5268851, 33157148, -72130752, -5623723, -12389370, -81151800, -13991393, -25345138, 8368207, +13424994, 24332064, -11101954, -31029528, -12344273, -44976896, 5639829, 16714402, 8964670, 7669738, +-36980744, 22878218, 3121368, -43457016, 31644782, -46764140, -19746112, -17252346, 12393128, 34638376, +39209832, -2781528, -9341554, -75953272, 32403918, 77858096, 27797028, 2253784, -42926588, -61822832, +-25999048, -4781909, 32136020, -38539816, -23717346, -39603356, -13175349, 72769632, 77541880, -13099113, +-36334888, -30481382, -16888886, -7749195, 38865160, -18177376, 11354820, 8668855, 25726318, -6694781, +-17989470, -45035416, -20135344, 69836704, 29317446, 46643880, -42712376, -22981296, -19984482, 47656956, +591095, -76229760, -74381856, 41947872, 70997424, 120196272, 20579872, -101145408, 16658031, -26336740, +34223372, 33849712, -124907312, -39190504, 23990076, 66180076, 15621333, -62846644, -14542759, -5777805, +36518496, 32032940, 8072928, -50202264, -8281234, 11745125, 22308060, 11884711, -13574781, 2806224, +-28432684, -2916283, -809601, 27828166, -18935438, 36907728, -23460186, 11027865, 20699594, -7972533, +17114370, 16158204, 28114320, 2200097, -14136885, -15641197, 2236604, 2158221, 4481262, 3762928, +-1279363, -1107565, -10631118, -10041634, -2498060, 18811420, -4959614, 1353989, -4088272, 6882685, +1021129, 10911364, -36348308, 30974230, -32389958, -7456063, 1527398, 7938174, -5862094, 7082938, +13024488, -21441014, -17808546, -758599, 5088463, 13176960, -14957760, 1789928, 11957726, -9413495, +7567733, -5064840, 35979476, -876710, -5102958, 20144470, 11517492, 17859010, -8941048, 11268384, +-3427921, -864362, 15310485, 10314901, 2778844, 4111894, 20549272, -19287624, -5435281, 1648194, +27628988, -816044, -5884105, 25061672, -6190122, -11436961, -10730439, 20698522, -4720706, 8825084, +5920076, 2825552, -7118909, 3403225, 8505109, 2517925, 24095840, 11428908, 7060390, -10700374, +-1248762, 8689256, -16676284, 5728950, 6781217, 17146584, 561030, -2479807, 10251013, 1792075, +-19397682, 21800718, 7118909, -5585068, 18773838, -12922483, -1211718, -9749576, -7830799, 17736068, +13625247, -1671816, 6995965, -11259794, 2881386, -15037217, -1033477, -13809930, 3349001, 8210367, +3512210, 1175747, -2532957, -2292439, 2927557, -8443369, 2703145, -3918621, 4170950, -5727339, +-1475858, -5339718, -5834176, 2541547, -693637, -891206, -1904281, 8117488, 3718905, -11382737, +-10979010, -8255464, 2798708, 3064459, 8712341, 4428112, -10073846, -2057826, -3532074, 9123047, +-1991254, 9874667, 4731980, -9017821, 493384, 4095251, -4414690, 6109591, -3456375, 6971806, +-4823249, -2212982, 2877091, -4758824, 57496192, 4593468, -21199958, -17617418, 2882460, 12959527, +-766115, 11827803, -4487167, -3211562, -15910169, -3538516, -11134166, 17706540, -11072963, -937377, +-6982006, -3338800, -4086662, 1912334, -11766600, 1779727, -5056787, -8337606, 2464774, -1350230, +693100, -2275259, 4179540, 1978906, -9835475, -6359236, 20938, -6709813, -5790690, 4871567, +-1568737, -10099616, 699006, -5623723, 4327717, -14907295, 7472170, -6488085, -11270531, 3420942, +-5149129, -5872294, 1559610, -109522, 733903, -2488934, 2530810, -4564477, 5068599, -3135326, +565325, 8294656, -5961952, 2779381, -1546188, -886374, 2297808, -6870337, 6279779, -7221451, +6270653, -1511829, -265214, -4624606, 5931887, -6936372, 496606, 2446521, -9072582, 9088151, +-5506685, 3855807, -4158602, 3684008, -3192771, -4028679, 6805913, -4242891, -785442, 6642167, +-4237522, -63888, 606664, 1049583, -4687420, 376347, -363462, -2075543, -1267552, 1138166, +-1423782, -2559264, -1199907, 2893734, -2575370, 2167885, -675384, -306553, -772020, -1966558, +1928977, -1329829, -1462436, 1986422, -1995012, 1570347, 820876, -1257889, 401579, -328028, +645319, -4016331, 3944391, -4131222, 813896, -613643, -2058900, 547608, -1085016, 2806224, +-27634356, -44680008, 47362752, 164437648, 31579820, 49323940, -101259224, -140924864, -58798640, -73826728, +57007100, 132004208, 75981728, 50914152, 5156645, -72858752, -64381024, -64512020, -26299696, 36478232, +31237298, 33237678, 30000346, -1081258, -4791573, -7725573, -10326175, -15362024, -2006287, 20110648, +-1735167, -11823508, -4540318, -17042968, -9474161, -3043521, -4154844, 32319628, 30198988, 17730162, +19196356, 883690, -23344758, -23968064, -43723304, -29271812, 4088272, 3470871, 9012989, 25737592, +36881420, 21985938, 18615462, -954557, -20762408, -29111826, -24955370, -21117280, 3092377, 7377680, +13568875, 9201431, 6281390, 1228361, -7501698, 2859911, 827318, 3054796, 18387828, -1835562, +8199093, 8196408, -13504988, -25853018, -26385594, -24012626, 6450504, 19454592, 14305462, 21297670, +19002546, -6471979, 4860829, 11548630, -7419019, -7198365, -16355772, -21368536, -8130910, -5158256, +-2088428, 8843875, 4320200, 4707284, 14433238, 13460964, 14211510, 7890392, 3720516, -7206955, +-8615704, -21964462, -23791434, -17112224, -12306155, 5242545, 15757161, 19505594, 26515518, 18693308, +12176232, 22012, -8036958, -13057774, -27117886, -29067802, -10052371, 5010080, 13991930, 10882910, +9791989, 10893648, 8153459, -693637, -1879585, 1011465, 482110, -4954782, -4115653, -14765024, +-9398462, -560493, 5490042, 7046431, 5912560, -2326799, -29528, 5161477, 4407174, 176094, +3142842, 2426657, -1449015, -7011534, -5933498, -6081137, -1101659, -1687385, 172872, 1158567, +6395207, 6658273, 6322192, 2576981, 1786706, -2451353, -1755568, -1751810, 297963, -704912, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 2178622, -6312528, 533113, 4223564, -972273, -621697, -2283312, 4503273, 2844342, -2654827, -3499862, -2265595, -896574, -5377836, -6229850, 1469953, 302795, -2107218, -2129767, -4195646, 2667175, --4934381, 1252520, -492848, 1107565, 398358, 1046898, -2221572, -332323, 866510, 1406602, --513249, 1722819, 1257352, -2197413, 1640141, -1334124, -4209605, 5954972, -1154809, 259846, -1413044, -760209, 3281892, 4194573, -911607, 1566053, 3153043, 252866, -3366181, -2583423, -832687, 1986959, -1028108, 1079647, 3871376, -3431679, -3089692, 3210488, 603980, -1294396, --2091112, -106300, 726386, 2430952, -3926674, 1909113, 986769, -3072512, -3315178, 2802466, --1808718, -4066797, -1740536, -399432, 6102612, 7040525, -619549, 1151588, -889058, 1064615, --1174137, 1854352, 1131187, -1187022, -401043, -1259499, 594853, -1672353, 1547262, 1364726, -307627, -1955821, 221728, -116501, 834834, -525060, 1299765, -704375, 226023, 57982, -804770, -207769, 275415, 209380, 831613, -69256, -7766912, -3353296, -5359583, 3512747, --2601677, -3635690, -2468533, -3260417, -652835, 1204738, 5868536, 1014686, -3142842, 4958540, -188979, 5111011, -4916664, 7915088, 3667365, 8586176, -1546188, -2923262, -595927, -4725538, --408022, -338229, -1717987, 1604170, 152471, -3753265, -916439, -15569, 1155346, 3723200, -852551, -5611912, -4679367, -1774895, 3143916, 206695, 147640, -2846490, 4663798, -130460, -334471, -2018098, 587337, -1220845, 2443300, -798864, 7779260, 61740, -1034013, 2946885, --1975685, -3508988, -1459752, 2632815, 4690105, 774168, 2868501, 702764, 475668, -2479807, --2426657, -3969087, -187905, -4114579, 1009317, 3338263, 3559454, 2502355, -1283658, -1828582, -3193845, -2283849, -963146, 1993939, -1843615, -330712, -965294, 2063732, 3673808, 1893544, -1067836, -941672, -427886, 656056, -381715, 2459943, 405338, -1214402, -728534, -562641, --180926, 336618, 292595, 30065, -397284, 1134945, 712428, 46171, 428960, -903017, --583042, -723165, -847719, -306553, -948114, -927176, -213675, 1161789, 5428302, 5872831, -3100430, 9664, 4788352, -2580202, -4074313, 3976603, 4126390, 5244692, 7707856, 751619, --4910758, 2876554, -4683662, -282931, 1567126, 1158567, 8584566, 716186, -6912213, -278099, -1233729, 2947958, -499290, -2301029, -7610145, -1447404, 6458557, 2282775, 4247723, 5026186, -4134980, 1204202, -719944, 4473746, -5653251, -120796, -3843459, 10366440, -559420, 340913, -4591320, -3773666, -601832, 1664837, -578747, 6203007, -950262, 1909113, 5886790, -1095217, -1845762, 538482, -285078, -9664, -774705, -1653562, 2544231, 3464428, -827318, 3448322, -1239635, 6776385, 7691213, -363998, 2056216, 1317481, -3884798, 3856881, -951335, -3195456, -1356136, 3798362, 1060320, -937914, 6815576, -927176, 1850594, 2086280, 1009317, -3420942, --200790, -667331, 549756, -1788854, -377420, 245350, 723702, 767725, 1254131, -404801, -613107, -1662152, -1153199, -2070174, 1603633, 565862, -313533, 672699, -290447, -1694365, -1086627, 199716, 787053, -496606, -605054, 334471, 2026151, -2071248, 8581345, 8387535, --3295314, -4818954, -4190814, -2895882, 2171106, -9192304, -876173, 1260573, -4374424, -8144332, -7918309, -1718524, -1962263, 1251446, 3666292, 3229816, -4000225, -1615445, -131533, -452045, -1933272, 2767033, -1493575, 3406446, -2522220, 5230197, -586263, 201327, -2639258, 2757906, -1067836, -808528, -2626909, 1260573, -1469416, -2349884, -1915019, 460635, 1779190, -4964982, -479963, -9361955, -5353677, 3360812, -1352378, 1114544, 2147484, 6158446, -1924682, -3105261, --155693, 194884, 2653753, 2493766, -2821794, -1266479, 6868727, 263067, 1103807, 582505, -3093987, -5670968, 258772, 2879776, 5356361, 1114544, 2341831, 8047695, -1908576, -751082, --4283156, 63888, 1395328, 2822867, 64425, -1727114, 2529736, -203474, 4538170, 52076, --105764, 558346, -5578089, -2901787, -3272228, 3159485, -477815, -898722, 9664, 428423, --162135, 1666984, -461172, -926102, -1180042, -595390, -1696512, -1124208, 1372242, 98784, --426812, -870805, 461709, 366683, 166430, -761820, 1506997, 644245, 966905, -193810, --41876, -995896, -1067299, 761283, -488016, 1021665, 1355062, -5434208, -8507256, 3651796, --2777770, 174483, -4379793, 3411815, -9820443, -8048232, -9261023, -3103651, -1960653, -6449967, -3305514, 8871255, -6513855, 1384590, 10402411, -2387465, -2829847, -4765266, 852551, -9127, -4614943, 1524713, 3320010, 2339684, -3375308, -6586869, -3134789, 3963181, -2230699, -4022237, -1029718, 1686312, 1308891, 856309, 9059160, -4254702, 4936528, -2340220, 2483565, -2617246, -7539278, -5587753, 3083250, -445066, -4465156, 4187593, -1651415, -1464584, 4498978, 2404645, --377420, -1966558, 4089883, 2027761, -4190278, -5015448, 3452617, 5579700, 3140695, 142808, --2414845, 295816, 3556770, -1517734, 4297115, -997506, -8730595, 287226, -3831111, 12451647, -4349728, -7068980, -3982509, -1386738, -3200825, 3218541, 3115999, 2367601, -1521492, 2736968, -2200634, 781147, -520765, -3646964, 726386, 1265405, -1042066, 849330, 1274532, -481573, --152471, 811212, -230854, -1078574, -906238, 94489, 956167, -984084, 904628, 1072131, --1368484, -1741072, -2202245, 77309, 1309965, -592706, 1163399, -940598, -90194, 890132, --625992, 376883, 3262565, -7239704, -8828842, 7606924, -1585380, -7203734, 652298, -1853278, -7438347, 3678640, -1824824, 1378685, -309775, -1096827, -1257889, 8589935, 1744831, 469762, --5793374, -2668785, -1304060, 3018825, 3839164, 11564199, 358630, 391916, -284542, 798864, --5010080, 242129, 2169495, -6303938, -4390531, -4078072, -448824, 8456791, -6799470, 1182727, -3925063, 1683627, -3142842, 3528316, -8504572, 7022272, -1449552, 11811, 3874061, -4325032, --5013301, -7866770, 1736777, -2567317, 7528541, 2603287, 249645, 1430761, 2334852, 5862631, --2524367, -1280437, 6177237, -1248762, -3424700, -121333, 6180995, 6207302, 5716602, 3067681, --3705483, 3637301, 5175973, -6038187, 7793755, -4723927, -4363687, 7016903, 791885, 10121627, --75699, -5675263, 2550137, -2526515, 6754373, 3201898, 1896765, 454730, 2347200, -1180579, -4261682, 1469953, 1721208, 1273458, 2513630, -197032, -164283, 1930588, -30065, 1417339, --715112, 2336462, 4817880, -2780991, -1236414, 841277, 638340, 306016, 1254131, -242129, -421444, 980863, 2379949, 169651, 4437238, 1046898, 549756, -1978369, 536334, 1453846, --1941325, 429497, 899796, -120259, 599685, -15849503, -10442139, 2807835, 5091684, 10837276, --6604586, 5815386, 1083406, 6124624, -312459, -2859911, -3722663, 3781182, 11228118, 947040, --983011, -10714333, -8960376, 54761, -6585796, -3878892, 384936, 1346472, -6749541, -2025077, -1640678, 3960497, 2118493, -4372277, -9664, 5034776, 4108673, 847182, -4136591, 760209, --2528125, 1215476, 1420560, 2305861, -3182571, 3995930, 9786620, -1000727, -720481, 1891396, --5442798, 2567854, 7885023, -7769059, -9146133, -4743255, 769336, -11862700, 307090, 332860, -1668595, 108985, -159451, -5635534, -3018288, -3662533, -482647, 8060580, 11926050, 331249, -802085, 5804649, -2415919, -1001801, 2716030, 13392782, 1713692, 4810364, 9430138, 1713692, --6084358, 2527588, 2834679, -2824478, 2917357, 2415382, -605590, -2920578, 1397475, 850940, --607201, -4985920, 2221572, 4564477, 1736777, 3324305, 1886564, 4013110, -841277, -1514513, -3728569, 3067681, -923418, -210453, -1075352, 2640868, 2901787, -2320356, 2883534, 762894, -384936, 712965, 1582159, 2137820, 312996, 1867774, -1232656, -680215, 25770, -337692, -801548, -1249299, 225486, -376883, 586263, -1682554, 8201240, 5070746, -7483981, -372052, -16224776, 14247480, 3077881, 8575976, 10722386, 2648921, -91805, 6959995, -3103114, 37581, --6289980, 5154498, -371515, 218506, 2403571, 2725694, 8859444, -7457137, -6706055, 6685654, -1436667, 3030636, -5222680, 912144, -1789391, 3418257, 107911, 4814122, 4828080, -4901095, -4096862, 3329674, -5531918, 14292041, 2561948, 2743947, -11068668, -3618510, -839666, 9244380, -8718247, -936840, -9494025, 6181532, -8248485, -2636573, 7326678, -270046, -5834176, 7042136, -8980777, -2334315, 3063386, -3654480, -12460774, 10201, 8078297, -3752728, -4226785, 5214627, --5949067, -9181029, 2319282, 6115497, 11317776, 5838471, -8386461, 3467649, -9861782, -11753715, -10837813, 5003100, 3999688, -7329899, -7785165, -1247151, 8182450, 2642479, 11667279, 5082557, -2983929, -12412992, 2047626, -3508452, 521302, -2951180, 2620467, 705985, 3161096, 5144834, -2772938, 394600, 2350421, -2124935, -967441, -2164127, 17180, -2030983, -537945, 701690, -3936875, 609885, -1578401, -767725, 1287417, 102542, -306016, -4041027, 258772, -2101850, -792421, -2895345, -3070902, 1998234, 2489471, 3810173, -3779571, 16782584, 10765872, -7274601, --1992865, -277025, 2934537, 2367064, -1063004, -6561100, 1586454, -4498442, 6977175, 217433, -2685965, -2283849, -1043677, -6847789, -3650722, 14426258, 4763119, -8798777, 4157528, -8595303, --6077379, -13444321, 5836861, 222801, 200253, 3183108, -382252, -6097780, 10125385, 5796595, --2248952, -10215580, 10214506, -7014219, 2684892, -266288, 3336116, 2017024, 6484864, 7494718, --1765768, 4149475, 11863773, 1522029, -3744138, -3401614, -2119566, 1843615, 7913477, -2181307, -3206193, 622770, -7282654, 277562, -1806571, 3542811, -10945187, -184684, -18234820, -11044508, --10182294, -2572686, -10062035, 6752763, -2528662, -8313446, -2254858, -934155, -6752226, -2924336, --258235, 676457, -4058207, -8734353, -8768176, 471910, -1919850, 2137820, 4886599, -781147, -2435247, 1223529, -59593, -142808, -4785131, -202937, -117575, -3825205, -334471, 3607773, -6912213, -1197222, -3335042, 2600066, -4311611, 3633542, -3602941, -1333587, 671626, -2605972, --3240016, -16643, -2029909, 505732, -769336, -3235184, 1575716, -126165, 4024384, 2729452, --2872796, 2448131, -1613834, 2277943, -1328219, 1551020, 1401770, 1111323, 62277, 1628866, --1908039, -1001801, -2118493, -4217658, 537408, 1548336, -462783, 933619, -3342022, -11431592, --14370961, -6723235, -9565966, 24769614, -11993159, 5669357, -11326366, -3177202, 1190243, -1760400, --16876538, -281320, -8021389, 671089, 19868518, -6287296, 8334921, 11009612, 3949223, 4518843, -11948062, 3629247, -4656819, 3469260, 4682051, 5115306, 2136746, -2413235, 13905493, 601832, --1122597, -2259690, 3767223, -1118302, -4846871, 4777078, -1797444, 3446175, -13479755, 631360, --2610266, 12259447, -4817343, 4001299, 18271864, -1525250, 376347, -4394826, -7560753, -367757, --1246077, -7664906, 9702868, -2027761, 7038378, 811212, 6646462, -3799436, -724776, 14671608, -7141457, -11287711, -5947456, 3150896, 3505230, 1794760, 3107409, -3260417, 4127464, 5412733, -12130061, -15538655, 930397, -6617471, 3171297, -237297, 1775432, 5783174, 8330089, -5525476, -5883032, -3991098, -2744484, -2213519, -2086280, 4735202, -10615012, -2051384, -4903779, 6115497, -4913443, 2128156, 2528125, -3527242, 4058207, 1889249, 2920578, -392453, 2315524, -3129958, --1773822, -3932580, -336081, -629213, -3552475, -46708, -369904, -943282, -49392, 4210142, -2579665, -2317135, -3799436, 1982127, 1439351, 4824859, -3723737, 290447, -1343251, 2164127, -2461016, -2024540, -3831111, -8199630, -7264937, -7932805, 8596377, -16594143, -4827007, -10411538, -5215701, 17124034, -9286256, 468688, 545998, -3397856, 6678138, -5559835, 2721399, -1749125, --7005092, 15276125, 825171, -5024575, 282394, -2269890, -6710887, 5313949, -5126581, 4987531, --9629854, -4531728, 6600291, 4776004, -16131360, -2930778, -13727252, 4088809, -2247879, -13282723, -16231218, -4540854, -255551, -12287365, -13397077, 768799, -12072616, -1597728, -10422275, -8960912, -10646687, 1160178, -13574781, 4466766, -12144020, 10872173, 3991635, -5279052, 475668, 3493956, -11487964, -8846022, -12452721, 12656732, -8781598, -5042829, 6692633, 9555765, -17672716, -8722542, -10139881, 7496329, 3968013, -928787, 1305670, -12736726, 4432406, 4247723, 7083475, -2241973, --13420162, -9769977, 4825933, -11627013, -10125385, 4291746, -618475, 159988, 4301410, 9821516, -68719, -411243, 9200894, 850940, -1434519, 1568200, -1192927, -1859184, 2024540, -2404108, --1644436, -4615479, -4365835, -3150896, 865436, -2621541, 91805, 1870458, 1542430, -255014, --2147, 2001992, -2261837, -3660923, 1156420, -119185, 3554086, -3372623, -909459, -3823595, -4495757, 4690641, 1066763, -232465, -2838974, -1172526, -4014721, 350577, 714575, -2279554, -765578, 928250, 8433705, -13015898, -21220896, -17139604, 7722351, -20492362, -991064, 15512885, --1374926, 1102733, 11139535, -7407745, -6301254, 24660628, -9772124, 5759015, 9388799, -1757715, --22368726, -1876901, 2359548, -5640903, -3100430, -5222680, 20871394, 182536, 236760, -1045825, --15034533, 2733210, -8656507, -4369056, 936303, 2494302, 4455492, 12099460, 2692408, -3144990, -23847806, 2488397, -5898064, -21829172, -3182571, 15973520, -3471944, -10030896, -13420699, -11844983, --10094247, -6376416, 16963510, 6570763, 975494, 9402220, 14172318, 7877507, -3087008, -2513630, -14649060, -2919504, -4492536, 4227859, 11202348, 1567663, -11511586, 2618320, -1161789, -17236778, --1300301, 13663902, -6782290, -7941395, -1925756, 18379238, -14652281, -2968359, -8176007, 8377871, -4879620, 3865471, 5887864, -2444910, -3157875, 6202470, 4975720, 3411278, -1005559, 737661, -3915937, -10848551, -1999844, 1386201, -5601174, 113280, 5913633, -629750, 1091459, -2356327, --674847, 3211025, 4176856, 6240051, 3520800, -1080721, 2228551, -3614752, -4573604, 1281511, --897648, -3746822, 4136054, 2173790, 3128347, 638876, 1513976, 3191161, 1778653, -954557, --2303176, -629750, 1301912, -16106, 1319629, 248034, 1636919, 973347, 2802466, 337692, --2698313, 5935645, 4871567, -4604742, -1555315, -2215130, 17365090, 1741072, -15501074, -578210, -4657355, -564251, -7062537, 6725919, -5223217, 13800804, -10613401, 9482751, 20744692, -5614059, --5515812, -4890894, -4305705, 18510772, -13710609, -15081241, -11495480, 4198868, -5992016, -9708774, --4454418, 6649146, -9293235, 5146445, 1232656, 7262790, 10798085, 1327145, -1364189, -2070711, -10644540, -2739116, 3771518, -13029320, -100395, -4640176, 10380399, -13845901, 11387032, -4782983, --7120519, 11449309, 19853486, -11149198, 5662915, -2461016, 4041564, -29782376, -23597624, -14324253, -2083596, -9086003, 3943317, 974421, -11046656, -8736500, 980326, 23745800, 5616207, -14790257, --22100292, -11666205, -8147016, 14555644, -10064719, -14402636, 3471944, 3170223, -13303124, -830002, --194884, -6600828, -1491427, -340913, -527207, 6533182, 1637993, -7648800, -6765647, -3723200, --9767293, -5323075, 1666984, 11054172, 1897302, 2086817, -3150896, -9038759, -1353989, 7440494, --301185, -4191351, 6875706, -10306848, -5020280, 1579474, 1697049, -143345, 1209033, 757525, --3427384, -7204271, -2535641, 5551782, -3142306, -2542084, -2822331, -6423124, -7072201, 2709051, --2491081, -1525250, -6653978, 1701881, 4499515, 5383742, -145492, -3173444, -3666828, 3892851, -3546569, 29823716, 19563576, -5156108, 2012729, 19283866, -7577933, 629750, 8342437, 20875688, -12313671, -3680787, -4611721, -7269232, 1931662, -4024384, 376347, 484794, 22073448, 36377300, --2079838, 25076704, 15924128, 3198140, 3995393, -17964774, -17710834, -2078227, 4762045, -1341104, -4413079, -6746857, -13247290, -22508850, -1876364, -14508400, -12162274, -8158827, -12591770, -9154186, --444529, 20770998, -609349, -15894600, -1278827, 4427038, 15525770, -4935991, -3875134, -9526774, -7074348, -28451474, -25440702, -12350178, -12665322, -13714904, -8217883, 8956081, -11417634, -15987479, --13321378, -23869280, 12243341, 6433324, -21082920, 10740639, 21400212, 41756208, 23139674, -363998, -7691750, -24190866, -9805410, 12861280, 11008538, -6280316, -16247324, 2010045, 3468186, 14702210, --1836635, -15325517, -2612414, 24141474, 15542413, 17445620, 14016626, 24349244, 23086522, 6793565, -6311992, -5511517, -9632001, -2820183, -795106, -8406325, 20938, -9697499, -7088844, 10982768, -4984847, -3149822, -9597104, -3806952, -1103270, -282931, -10688563, 10577431, 187905, -9114457, -5431523, -5669894, -4601521, -1506997, 3402688, 14639933, 7282117, 17541720, 129923, -3615289, -2072859, 6611566, 4551592, -2406256, 9382893, 319438, -2953864, 1251446, 7779260, -3932580, --3201898, 2747169, -590558, -31003222, -2796561, 49465676, -3496640, 1637456, 12520367, -18285286, -10293963, 35012572, 32605782, -32986960, -31322122, -199716, -33994128, -13112535, 59056, 3734474, -12548284, 18523658, 16630650, 29001766, 6998113, 11285027, 11733314, -5166309, -1996086, 2948495, -3941169, 8391292, -15590194, 34874596, 15145665, 16146930, -2983392, 35410396, 4495220, 21238614, -8977019, 6461242, -8335995, -5724118, 18245558, 6716255, 8510478, -19450296, -10200547, -16294032, --9296994, -11935714, -11274, -23503134, -25164214, -1779190, -9672266, -47854524, -35356708, -32360432, -9167608, 34331820, 44903348, -25120726, 30962420, 47779900, 8227547, 3723737, -3050501, 32764694, -2537252, 29603062, 12891344, 13669270, -19962472, -66432944, -52325048, -12187507, -1786706, 1024887, -2312840, 24037322, 23067196, 19705310, -12541305, 1209033, -6565932, -34473020, 3403762, 2292976, -17078938, 2225867, 25132002, 22320408, 5577015, 19350976, -8448738, 12952548, -11972221, -13846975, --5027259, 4842576, 21791590, -5410048, -6272800, 2734284, -10948409, -5807333, 10954851, -3664144, -7520488, -14319421, 18639084, 5152350, 32749, -1844689, 14281303, -4115653, 827855, 1785633, --483721, 9236327, -7304666, -4225174, -320512, 8829916, -14291504, 1252520, 4769025, -7499013, -792421, 1910187, 1473174, -3758633, 24251532, -5446556, -43361988, -3970161, 69448008, 12526809, --12780749, 17726404, -5531381, 11488501, -5347771, -7655779, -22613002, -8726837, -2280628, -3964792, --10718628, 16238198, -14595909, -16052977, -882079, 2392297, 14726906, 6376953, 4208531, 6042482, --5704791, -20938, 21889300, -11218991, -25601764, -5320928, 2492155, -8871255, 18260590, -9578851, --5847598, 15045270, 4502737, 11324218, -26452704, -30204358, 10231686, -5950677, -9982578, -13022341, --15634755, -33244658, 338766, -3052648, 11300059, -21340082, -43934832, 32950990, 9367861, 30963492, -3726958, -10189810, -9101573, 7949448, -16371342, 25647934, 5403606, 30814242, 21880710, 45824616, --4275103, -44306884, -34053184, -19672024, 25675314, 25373056, -19136764, 20114942, 40477920, -23854248, --3384971, 43067784, 6989523, 33042258, -4667019, -17141752, -44713832, -17660906, 5333813, 28525026, -25286620, -14960982, 12826383, 11638288, 23991688, 8005282, -23420994, -28189480, -10799695, 19166292, -41342280, -1229971, -3481071, 21195126, 11496554, 1752347, -3335579, -9197136, -10909217, -9165997, -7212861, 4103841, 13218299, -5658620, -1324997, 1041530, 8061117, 9955197, -12842489, 30602, -14906221, -1871532, -4125853, -16543140, 12030740, -225486, -6869264, -5217849, 16590385, -973347, --10396505, -5843303, -36529772, 37874096, 51391432, 8949101, 2333241, 11412802, -7844758, 22418656, -12541305, 23427972, -4752918, -24757802, 54984172, 306553, -20675436, 2532420, 37176164, 17012902, -7283728, -23573464, 2545842, -12629351, -9221295, 3670050, -17539036, 1462436, 4702453, 21115132, --30026116, -5130339, -3615289, 17826798, -6808060, -11113228, -10572062, -171262, 11358041, -23369990, -1677722, 6114960, -47771848, 6543920, -12969727, -33693480, 22094922, -24916716, -43661028, 57560076, --488553, 3284576, -4588636, -16077136, 34715148, -24650964, -2363306, 5114233, -15925739, -1365800, -43873092, 22644678, -38815232, -42008000, 41295036, -19821274, 24028194, 39621072, -35710504, -61422328, --42539504, 70717712, -4291209, -55629492, 50675244, -37131068, -70527120, -1231582, 60632052, -2753611, --73196440, -1180579, -24715926, 527207, 89997280, -13901199, -66475356, 9475772, 35182760, 590558, -41161892, 2239289, 678605, -13237626, 1535988, 9271224, 33190970, -7152195, -9148280, 32819456, --4571993, 7679402, 22959284, -4159676, -33833068, 21764210, 15755014, 25520158, -8158827, -818728, -8969502, -7634305, -24965034, -11152419, 10037339, 538482, -5070209, 32411970, -1177358, -36580236, -8287677, 29433410, 17010218, -12904766, 1423782, -14757508, -8286603, 35733592, 29991220, -8152385, --34840776, -11387032, 13991930, 11285027, 9206799, -6838662, -1504312, -24237038, 37248640, -7216619, -10973641, 24420110, 16769163, 18585934, 43892956, 19528142, -11373073, 7343857, 10446434, 14806363, --16566763, 42999600, 39825620, 5930813, 13459354, -9546102, -532039, -43249784, 19513110, -22687628, -15011984, -1460289, -16524350, 23928336, -9910100, -17307108, 8941585, -24570972, 16006806, 1024350, --5247377, 7193534, 9805410, 15770046, 15305116, 15375446, 44661216, -4116189, 4403415, 14605573, -29918742, -2667712, 7569880, 441845, 23284628, 28586228, -9732933, 7136088, -1781875, -4271345, --52151640, 4478041, 21482352, -11996917, -13158169, 11788075, -22038014, -31656594, 2327872, 18521510, -37613712, -48637284, 18224620, -2146410, -1901060, 585726, 18632642, 41437844, 200790, -29599304, -9410273, 33698852, -18586470, -25992606, 2019708, 14993731, -14664629, 26766774, -5669357, 20660940, -1232656, -19856170, 24350854, 20385526, 2866354, 16161962, -9436580, 10235444, -5377836, 5592048, -7602092, 24425480, -5645735, -28770376, -4297115, 34153044, 2069637, -3912178, 29470454, 6652368, --682900, 7606387, 20283520, 31353262, -20419886, 8023536, 3698504, -1086090, 14673219, -4036733, --23088134, 7806640, 20969104, -8805757, 5082020, 7719667, -7515656, 8773008, -14872398, 10624138, -8661338, -12093554, -27531814, 11938935, 14842333, -6706592, -10367514, 14760729, -1603633, -8295730, -23213224, -44100724, -34886944, -323733, -53669912, -18033494, -20048908, 41394896, -1491964, -14921253, -18613314, -9409736, 10184978, 2971044, -20671678, 24616068, -55305220, -4940823, 3047279, -13476534, -9851044, 2732673, -11025181, -1682554, 1329292, 14134737, 547608, -15854872, -53661860, -38655244, --29939680, -14476724, 32810328, -6431177, 969589, -53178136, 3732864, -3452080, -7509214, 1957431, --51944944, 27945742, -25352656, 13004624, -10529649, 35464620, -19473382, -33812668, -16648367, -22549, -25275346, 46810848, 48644800, -60065116, -44897440, -30531848, 20558934, 49848464, 59755344, -10188199, --15299747, -52538188, -19823422, 47291348, 28496572, -287763, -213138, -842350, -44847512, 30137248, --9181566, 29099478, 69561288, -77671264, 94272384, 26979910, -51383916, 14605573, -102807560, -99976104, -73813848, 31872416, 7108171, 22371948, -38160248, -17941690, 68790880, -2323041, 46209552, -4247186, --37461240, -11857868, 40810780, -13320304, -1060320, 13615046, -3444564, -23565948, 13162464, -19069118, -8829916, 26455388, -27300960, 26066694, 8518531, -3111704, 9626632, -1232656, -6219650, 4630512, --9524090, 5199595, -19385334, 17479980, 17775796, 4010426, 536334, -5569499, 9097814, 3725884, -3615826, 9238475, 17131550, -20895016, -7220377, -19360102, -15096273, 1969243, 768799, 17391396, --22034256, -16466905, -21221970, -12992276, -5665062, -44542568, 36820756, -22075596, 22588306, 12036109, -14204531, 8458938, -28632400, 31212602, -4771709, -11070815, -10366977, -12286828, 9398999, -6426882, -13431973, 8134131, -1929514, -3204583, -23998666, 13913547, 5495411, -6068789, 5155572, 12635257, --3741454, 7195144, -12276627, 14372571, -5494337, 1895154, 5658083, 6146098, -6537477, 22126060, --1025960, -20678120, -1543504, 9628780, 4551055, -15803869, 7544647, 18536542, -3643743, -8911520, --8933532, -1151588, 4916127, -2177549, 21527986, -14534706, -5757941, -5124433, -11070278, -864362, --3494493, 8013335, 5587753, -8910983, -1516660, 8400956, -8934606, -4452808, -2779918, 13474923, --8455180, 5812165, 8859444, -20735028, -8528731, 6717866, -21837224, 32952600, 8650064, 10525354, -15037217, -9570798, -392990, -2791729, -15074798, 3055869, 4802847, 12065637, -2507187, -4999879, -7202124, -7539278, -3240016, 7253663, -33823, -1719598, 5974300, 1907502, -3995930, -127775, --4398047, 9648107, -9184788, 14615237, 550830, 3254512, -6170258, -500901, -2301029, -4511863, --2482491, 3510062, 1673964, 4236449, -162672, -3389803, -2374043, -11241540, 11328513, -9018894, -5098663, -2110977, 6596533, -3684545, -10583336, 743029, 5419712, -8594230, 12919262, -10251550, -5636608, -3889093, 51510616, 6703370, -17445620, -13565654, -10151692, -998043, -1649268, 1114007, --1395328, -2008971, -29116658, 615254, -5791227, -6744710, 3705483, -11457362, -5180268, 5282273, --7964480, 2248416, 9048959, -12240657, 7712151, -4545149, -6471979, -1058173, -6472516, 3010235, --6005438, -3230352, -7077569, -1406065, -88047, -186294, -4242354, -4447439, 1361505, 2302103, --5073430, 6874632, -8465917, -772557, -3361886, -1101122, -1568200, -6756521, 9262634, 5648419, --9233106, 11252277, -1113470, 2388002, -5057324, 10797548, -10770167, 798327, 966368, 2844879, --1745904, -2811056, 8111583, -5364951, 1243930, 418222, -1596654, 2571612, -3463891, -495532, -4556961, -2273648, -2007360, 5101885, -1937030, -2234994, -4689031, 2462627, 2380486, -10519986, -12650289, -7110319, 2908230, 863825, 234076, -4076998, 1803886, 5177583, -3777961, -1949378, -2840584, -3872987, -181462, 3171297, -1239098, 1263257, 759672, -2870112, 569620, 370978, -2649458, -4660577, 454730, -525597, -1766305, 1948305, -2221035, 1122060, -1413044, -4076461, -2355253, -3533684, -1960116, 1312113, -2140504, 820339, 2127620, 228707, -3010772, 3278134, --554051, -2017024, -25169582, -40950364, 45730128, 153798480, 15653545, 35328252, -83669720, -127949760, --32150514, -66827544, 52081312, 107227080, 56507276, 35751308, -8010114, -41578504, -40898288, -30758946, --28565290, 10227391, 18294950, 10596221, 19691888, 2628520, 1580548, 7796977, 2236604, 8848706, -7039989, -5222144, -19582904, -14465987, -17258790, -23287850, -12305081, 13168370, 16972100, 31524524, -44500156, 16151225, 6449967, -14752139, -35255776, -34103116, -23822572, -16515223, 3403762, 13167296, -18895172, 20172388, 16996796, 11483132, 1347546, -1309428, -11193222, -7715372, -4930623, -5577552, --2168422, -6307160, -1806034, -7484518, -7322383, 2747169, -572304, 9772124, 16033113, 9547175, -23838142, 21247740, -10186589, -20888574, -20937966, -31170726, -8763344, -7478075, -1657321, 19235548, -17143362, -2988760, 14911590, 18602578, 6324876, 13007308, -1140314, -14951318, -10835666, -25690346, --16171089, -6067715, -1570884, -1874753, 4672388, 12171937, 19283330, 24317568, 20585778, 6887517, --11181947, -18344880, -17546552, -19585588, -8764955, -4963909, -1989107, 4359392, 9715216, 7704098, -13575318, 7413114, 8934606, 8097624, 118112, -6673306, -8691403, -10926397, -10706817, -9567040, --5032628, -5268851, 3118146, 5536213, 11178726, 16149614, 15633681, 5940477, 1159104, -8870718, --10735271, -12714177, -12694313, -3730716, -497679, -2449742, 3126199, 9918153, 13003013, 6391448, -1512365, -696858, 283468, -2609730, -2826625, -4890894, -2901787, -3724811, -2519535, -1631551, -183073, 1611, 3009162, 5558225, 5997385, 2678986, 1183264, -1540820, -776852, -1169842, -238908, -545461, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +6312528, 533113, 4223564, -972273, -621697, -2283312, 4503273, 2844342, -2654827, -3499862, +2265595, -896574, -5377836, -6229850, 1469953, 302795, -2107218, -2129767, -4195646, 2667175, +-4934381, 1252520, -492848, 1107565, 398358, 1046898, -2221572, -332323, 866510, 1406602, +-513249, 1722819, 1257352, -2197413, 1640141, -1334124, -4209605, 5954972, -1154809, 259846, +1413044, -760209, 3281892, 4194573, -911607, 1566053, 3153043, 252866, -3366181, -2583423, +832687, 1986959, -1028108, 1079647, 3871376, -3431679, -3089692, 3210488, 603980, -1294396, +-2091112, -106300, 726386, 2430952, -3926674, 1909113, 986769, -3072512, -3315178, 2802466, +-1808718, -4066797, -1740536, -399432, 6102612, 7040525, -619549, 1151588, -889058, 1064615, +-1174137, 1854352, 1131187, -1187022, -401043, -1259499, 594853, -1672353, 1547262, 1364726, +307627, -1955821, 221728, -116501, 834834, -525060, 1299765, -704375, 226023, 57982, +804770, -207769, 275415, 209380, 831613, -69256, -7766912, -3353296, -5359583, 3512747, +-2601677, -3635690, -2468533, -3260417, -652835, 1204738, 5868536, 1014686, -3142842, 4958540, +188979, 5111011, -4916664, 7915088, 3667365, 8586176, -1546188, -2923262, -595927, -4725538, +-408022, -338229, -1717987, 1604170, 152471, -3753265, -916439, -15569, 1155346, 3723200, +852551, -5611912, -4679367, -1774895, 3143916, 206695, 147640, -2846490, 4663798, -130460, +334471, -2018098, 587337, -1220845, 2443300, -798864, 7779260, 61740, -1034013, 2946885, +-1975685, -3508988, -1459752, 2632815, 4690105, 774168, 2868501, 702764, 475668, -2479807, +-2426657, -3969087, -187905, -4114579, 1009317, 3338263, 3559454, 2502355, -1283658, -1828582, +3193845, -2283849, -963146, 1993939, -1843615, -330712, -965294, 2063732, 3673808, 1893544, +1067836, -941672, -427886, 656056, -381715, 2459943, 405338, -1214402, -728534, -562641, +-180926, 336618, 292595, 30065, -397284, 1134945, 712428, 46171, 428960, -903017, +-583042, -723165, -847719, -306553, -948114, -927176, -213675, 1161789, 5428302, 5872831, +3100430, 9664, 4788352, -2580202, -4074313, 3976603, 4126390, 5244692, 7707856, 751619, +-4910758, 2876554, -4683662, -282931, 1567126, 1158567, 8584566, 716186, -6912213, -278099, +1233729, 2947958, -499290, -2301029, -7610145, -1447404, 6458557, 2282775, 4247723, 5026186, +4134980, 1204202, -719944, 4473746, -5653251, -120796, -3843459, 10366440, -559420, 340913, +4591320, -3773666, -601832, 1664837, -578747, 6203007, -950262, 1909113, 5886790, -1095217, +1845762, 538482, -285078, -9664, -774705, -1653562, 2544231, 3464428, -827318, 3448322, +1239635, 6776385, 7691213, -363998, 2056216, 1317481, -3884798, 3856881, -951335, -3195456, +1356136, 3798362, 1060320, -937914, 6815576, -927176, 1850594, 2086280, 1009317, -3420942, +-200790, -667331, 549756, -1788854, -377420, 245350, 723702, 767725, 1254131, -404801, +613107, -1662152, -1153199, -2070174, 1603633, 565862, -313533, 672699, -290447, -1694365, +1086627, 199716, 787053, -496606, -605054, 334471, 2026151, -2071248, 8581345, 8387535, +-3295314, -4818954, -4190814, -2895882, 2171106, -9192304, -876173, 1260573, -4374424, -8144332, +7918309, -1718524, -1962263, 1251446, 3666292, 3229816, -4000225, -1615445, -131533, -452045, +1933272, 2767033, -1493575, 3406446, -2522220, 5230197, -586263, 201327, -2639258, 2757906, +1067836, -808528, -2626909, 1260573, -1469416, -2349884, -1915019, 460635, 1779190, -4964982, +479963, -9361955, -5353677, 3360812, -1352378, 1114544, 2147484, 6158446, -1924682, -3105261, +-155693, 194884, 2653753, 2493766, -2821794, -1266479, 6868727, 263067, 1103807, 582505, +3093987, -5670968, 258772, 2879776, 5356361, 1114544, 2341831, 8047695, -1908576, -751082, +-4283156, 63888, 1395328, 2822867, 64425, -1727114, 2529736, -203474, 4538170, 52076, +-105764, 558346, -5578089, -2901787, -3272228, 3159485, -477815, -898722, 9664, 428423, +-162135, 1666984, -461172, -926102, -1180042, -595390, -1696512, -1124208, 1372242, 98784, +-426812, -870805, 461709, 366683, 166430, -761820, 1506997, 644245, 966905, -193810, +-41876, -995896, -1067299, 761283, -488016, 1021665, 1355062, -5434208, -8507256, 3651796, +-2777770, 174483, -4379793, 3411815, -9820443, -8048232, -9261023, -3103651, -1960653, -6449967, +3305514, 8871255, -6513855, 1384590, 10402411, -2387465, -2829847, -4765266, 852551, -9127, +4614943, 1524713, 3320010, 2339684, -3375308, -6586869, -3134789, 3963181, -2230699, -4022237, +1029718, 1686312, 1308891, 856309, 9059160, -4254702, 4936528, -2340220, 2483565, -2617246, +7539278, -5587753, 3083250, -445066, -4465156, 4187593, -1651415, -1464584, 4498978, 2404645, +-377420, -1966558, 4089883, 2027761, -4190278, -5015448, 3452617, 5579700, 3140695, 142808, +-2414845, 295816, 3556770, -1517734, 4297115, -997506, -8730595, 287226, -3831111, 12451647, +4349728, -7068980, -3982509, -1386738, -3200825, 3218541, 3115999, 2367601, -1521492, 2736968, +2200634, 781147, -520765, -3646964, 726386, 1265405, -1042066, 849330, 1274532, -481573, +-152471, 811212, -230854, -1078574, -906238, 94489, 956167, -984084, 904628, 1072131, +-1368484, -1741072, -2202245, 77309, 1309965, -592706, 1163399, -940598, -90194, 890132, +-625992, 376883, 3262565, -7239704, -8828842, 7606924, -1585380, -7203734, 652298, -1853278, +7438347, 3678640, -1824824, 1378685, -309775, -1096827, -1257889, 8589935, 1744831, 469762, +-5793374, -2668785, -1304060, 3018825, 3839164, 11564199, 358630, 391916, -284542, 798864, +-5010080, 242129, 2169495, -6303938, -4390531, -4078072, -448824, 8456791, -6799470, 1182727, +3925063, 1683627, -3142842, 3528316, -8504572, 7022272, -1449552, 11811, 3874061, -4325032, +-5013301, -7866770, 1736777, -2567317, 7528541, 2603287, 249645, 1430761, 2334852, 5862631, +-2524367, -1280437, 6177237, -1248762, -3424700, -121333, 6180995, 6207302, 5716602, 3067681, +-3705483, 3637301, 5175973, -6038187, 7793755, -4723927, -4363687, 7016903, 791885, 10121627, +-75699, -5675263, 2550137, -2526515, 6754373, 3201898, 1896765, 454730, 2347200, -1180579, +4261682, 1469953, 1721208, 1273458, 2513630, -197032, -164283, 1930588, -30065, 1417339, +-715112, 2336462, 4817880, -2780991, -1236414, 841277, 638340, 306016, 1254131, -242129, +421444, 980863, 2379949, 169651, 4437238, 1046898, 549756, -1978369, 536334, 1453846, +-1941325, 429497, 899796, -120259, 599685, -15849503, -10442139, 2807835, 5091684, 10837276, +-6604586, 5815386, 1083406, 6124624, -312459, -2859911, -3722663, 3781182, 11228118, 947040, +-983011, -10714333, -8960376, 54761, -6585796, -3878892, 384936, 1346472, -6749541, -2025077, +1640678, 3960497, 2118493, -4372277, -9664, 5034776, 4108673, 847182, -4136591, 760209, +-2528125, 1215476, 1420560, 2305861, -3182571, 3995930, 9786620, -1000727, -720481, 1891396, +-5442798, 2567854, 7885023, -7769059, -9146133, -4743255, 769336, -11862700, 307090, 332860, +1668595, 108985, -159451, -5635534, -3018288, -3662533, -482647, 8060580, 11926050, 331249, +802085, 5804649, -2415919, -1001801, 2716030, 13392782, 1713692, 4810364, 9430138, 1713692, +-6084358, 2527588, 2834679, -2824478, 2917357, 2415382, -605590, -2920578, 1397475, 850940, +-607201, -4985920, 2221572, 4564477, 1736777, 3324305, 1886564, 4013110, -841277, -1514513, +3728569, 3067681, -923418, -210453, -1075352, 2640868, 2901787, -2320356, 2883534, 762894, +384936, 712965, 1582159, 2137820, 312996, 1867774, -1232656, -680215, 25770, -337692, +801548, -1249299, 225486, -376883, 586263, -1682554, 8201240, 5070746, -7483981, -372052, +16224776, 14247480, 3077881, 8575976, 10722386, 2648921, -91805, 6959995, -3103114, 37581, +-6289980, 5154498, -371515, 218506, 2403571, 2725694, 8859444, -7457137, -6706055, 6685654, +1436667, 3030636, -5222680, 912144, -1789391, 3418257, 107911, 4814122, 4828080, -4901095, +4096862, 3329674, -5531918, 14292041, 2561948, 2743947, -11068668, -3618510, -839666, 9244380, +8718247, -936840, -9494025, 6181532, -8248485, -2636573, 7326678, -270046, -5834176, 7042136, +8980777, -2334315, 3063386, -3654480, -12460774, 10201, 8078297, -3752728, -4226785, 5214627, +-5949067, -9181029, 2319282, 6115497, 11317776, 5838471, -8386461, 3467649, -9861782, -11753715, +10837813, 5003100, 3999688, -7329899, -7785165, -1247151, 8182450, 2642479, 11667279, 5082557, +2983929, -12412992, 2047626, -3508452, 521302, -2951180, 2620467, 705985, 3161096, 5144834, +2772938, 394600, 2350421, -2124935, -967441, -2164127, 17180, -2030983, -537945, 701690, +3936875, 609885, -1578401, -767725, 1287417, 102542, -306016, -4041027, 258772, -2101850, +792421, -2895345, -3070902, 1998234, 2489471, 3810173, -3779571, 16782584, 10765872, -7274601, +-1992865, -277025, 2934537, 2367064, -1063004, -6561100, 1586454, -4498442, 6977175, 217433, +2685965, -2283849, -1043677, -6847789, -3650722, 14426258, 4763119, -8798777, 4157528, -8595303, +-6077379, -13444321, 5836861, 222801, 200253, 3183108, -382252, -6097780, 10125385, 5796595, +-2248952, -10215580, 10214506, -7014219, 2684892, -266288, 3336116, 2017024, 6484864, 7494718, +-1765768, 4149475, 11863773, 1522029, -3744138, -3401614, -2119566, 1843615, 7913477, -2181307, +3206193, 622770, -7282654, 277562, -1806571, 3542811, -10945187, -184684, -18234820, -11044508, +-10182294, -2572686, -10062035, 6752763, -2528662, -8313446, -2254858, -934155, -6752226, -2924336, +-258235, 676457, -4058207, -8734353, -8768176, 471910, -1919850, 2137820, 4886599, -781147, +2435247, 1223529, -59593, -142808, -4785131, -202937, -117575, -3825205, -334471, 3607773, +6912213, -1197222, -3335042, 2600066, -4311611, 3633542, -3602941, -1333587, 671626, -2605972, +-3240016, -16643, -2029909, 505732, -769336, -3235184, 1575716, -126165, 4024384, 2729452, +-2872796, 2448131, -1613834, 2277943, -1328219, 1551020, 1401770, 1111323, 62277, 1628866, +-1908039, -1001801, -2118493, -4217658, 537408, 1548336, -462783, 933619, -3342022, -11431592, +-14370961, -6723235, -9565966, 24769614, -11993159, 5669357, -11326366, -3177202, 1190243, -1760400, +-16876538, -281320, -8021389, 671089, 19868518, -6287296, 8334921, 11009612, 3949223, 4518843, +11948062, 3629247, -4656819, 3469260, 4682051, 5115306, 2136746, -2413235, 13905493, 601832, +-1122597, -2259690, 3767223, -1118302, -4846871, 4777078, -1797444, 3446175, -13479755, 631360, +-2610266, 12259447, -4817343, 4001299, 18271864, -1525250, 376347, -4394826, -7560753, -367757, +-1246077, -7664906, 9702868, -2027761, 7038378, 811212, 6646462, -3799436, -724776, 14671608, +7141457, -11287711, -5947456, 3150896, 3505230, 1794760, 3107409, -3260417, 4127464, 5412733, +12130061, -15538655, 930397, -6617471, 3171297, -237297, 1775432, 5783174, 8330089, -5525476, +5883032, -3991098, -2744484, -2213519, -2086280, 4735202, -10615012, -2051384, -4903779, 6115497, +4913443, 2128156, 2528125, -3527242, 4058207, 1889249, 2920578, -392453, 2315524, -3129958, +-1773822, -3932580, -336081, -629213, -3552475, -46708, -369904, -943282, -49392, 4210142, +2579665, -2317135, -3799436, 1982127, 1439351, 4824859, -3723737, 290447, -1343251, 2164127, +2461016, -2024540, -3831111, -8199630, -7264937, -7932805, 8596377, -16594143, -4827007, -10411538, +5215701, 17124034, -9286256, 468688, 545998, -3397856, 6678138, -5559835, 2721399, -1749125, +-7005092, 15276125, 825171, -5024575, 282394, -2269890, -6710887, 5313949, -5126581, 4987531, +-9629854, -4531728, 6600291, 4776004, -16131360, -2930778, -13727252, 4088809, -2247879, -13282723, +16231218, -4540854, -255551, -12287365, -13397077, 768799, -12072616, -1597728, -10422275, -8960912, +10646687, 1160178, -13574781, 4466766, -12144020, 10872173, 3991635, -5279052, 475668, 3493956, +11487964, -8846022, -12452721, 12656732, -8781598, -5042829, 6692633, 9555765, -17672716, -8722542, +10139881, 7496329, 3968013, -928787, 1305670, -12736726, 4432406, 4247723, 7083475, -2241973, +-13420162, -9769977, 4825933, -11627013, -10125385, 4291746, -618475, 159988, 4301410, 9821516, +68719, -411243, 9200894, 850940, -1434519, 1568200, -1192927, -1859184, 2024540, -2404108, +-1644436, -4615479, -4365835, -3150896, 865436, -2621541, 91805, 1870458, 1542430, -255014, +-2147, 2001992, -2261837, -3660923, 1156420, -119185, 3554086, -3372623, -909459, -3823595, +4495757, 4690641, 1066763, -232465, -2838974, -1172526, -4014721, 350577, 714575, -2279554, +765578, 928250, 8433705, -13015898, -21220896, -17139604, 7722351, -20492362, -991064, 15512885, +-1374926, 1102733, 11139535, -7407745, -6301254, 24660628, -9772124, 5759015, 9388799, -1757715, +-22368726, -1876901, 2359548, -5640903, -3100430, -5222680, 20871394, 182536, 236760, -1045825, +-15034533, 2733210, -8656507, -4369056, 936303, 2494302, 4455492, 12099460, 2692408, -3144990, +23847806, 2488397, -5898064, -21829172, -3182571, 15973520, -3471944, -10030896, -13420699, -11844983, +-10094247, -6376416, 16963510, 6570763, 975494, 9402220, 14172318, 7877507, -3087008, -2513630, +14649060, -2919504, -4492536, 4227859, 11202348, 1567663, -11511586, 2618320, -1161789, -17236778, +-1300301, 13663902, -6782290, -7941395, -1925756, 18379238, -14652281, -2968359, -8176007, 8377871, +4879620, 3865471, 5887864, -2444910, -3157875, 6202470, 4975720, 3411278, -1005559, 737661, +3915937, -10848551, -1999844, 1386201, -5601174, 113280, 5913633, -629750, 1091459, -2356327, +-674847, 3211025, 4176856, 6240051, 3520800, -1080721, 2228551, -3614752, -4573604, 1281511, +-897648, -3746822, 4136054, 2173790, 3128347, 638876, 1513976, 3191161, 1778653, -954557, +-2303176, -629750, 1301912, -16106, 1319629, 248034, 1636919, 973347, 2802466, 337692, +-2698313, 5935645, 4871567, -4604742, -1555315, -2215130, 17365090, 1741072, -15501074, -578210, +4657355, -564251, -7062537, 6725919, -5223217, 13800804, -10613401, 9482751, 20744692, -5614059, +-5515812, -4890894, -4305705, 18510772, -13710609, -15081241, -11495480, 4198868, -5992016, -9708774, +-4454418, 6649146, -9293235, 5146445, 1232656, 7262790, 10798085, 1327145, -1364189, -2070711, +10644540, -2739116, 3771518, -13029320, -100395, -4640176, 10380399, -13845901, 11387032, -4782983, +-7120519, 11449309, 19853486, -11149198, 5662915, -2461016, 4041564, -29782376, -23597624, -14324253, +2083596, -9086003, 3943317, 974421, -11046656, -8736500, 980326, 23745800, 5616207, -14790257, +-22100292, -11666205, -8147016, 14555644, -10064719, -14402636, 3471944, 3170223, -13303124, -830002, +-194884, -6600828, -1491427, -340913, -527207, 6533182, 1637993, -7648800, -6765647, -3723200, +-9767293, -5323075, 1666984, 11054172, 1897302, 2086817, -3150896, -9038759, -1353989, 7440494, +-301185, -4191351, 6875706, -10306848, -5020280, 1579474, 1697049, -143345, 1209033, 757525, +-3427384, -7204271, -2535641, 5551782, -3142306, -2542084, -2822331, -6423124, -7072201, 2709051, +-2491081, -1525250, -6653978, 1701881, 4499515, 5383742, -145492, -3173444, -3666828, 3892851, +3546569, 29823716, 19563576, -5156108, 2012729, 19283866, -7577933, 629750, 8342437, 20875688, +12313671, -3680787, -4611721, -7269232, 1931662, -4024384, 376347, 484794, 22073448, 36377300, +-2079838, 25076704, 15924128, 3198140, 3995393, -17964774, -17710834, -2078227, 4762045, -1341104, +4413079, -6746857, -13247290, -22508850, -1876364, -14508400, -12162274, -8158827, -12591770, -9154186, +-444529, 20770998, -609349, -15894600, -1278827, 4427038, 15525770, -4935991, -3875134, -9526774, +7074348, -28451474, -25440702, -12350178, -12665322, -13714904, -8217883, 8956081, -11417634, -15987479, +-13321378, -23869280, 12243341, 6433324, -21082920, 10740639, 21400212, 41756208, 23139674, -363998, +7691750, -24190866, -9805410, 12861280, 11008538, -6280316, -16247324, 2010045, 3468186, 14702210, +-1836635, -15325517, -2612414, 24141474, 15542413, 17445620, 14016626, 24349244, 23086522, 6793565, +6311992, -5511517, -9632001, -2820183, -795106, -8406325, 20938, -9697499, -7088844, 10982768, +4984847, -3149822, -9597104, -3806952, -1103270, -282931, -10688563, 10577431, 187905, -9114457, +5431523, -5669894, -4601521, -1506997, 3402688, 14639933, 7282117, 17541720, 129923, -3615289, +2072859, 6611566, 4551592, -2406256, 9382893, 319438, -2953864, 1251446, 7779260, -3932580, +-3201898, 2747169, -590558, -31003222, -2796561, 49465676, -3496640, 1637456, 12520367, -18285286, +10293963, 35012572, 32605782, -32986960, -31322122, -199716, -33994128, -13112535, 59056, 3734474, +12548284, 18523658, 16630650, 29001766, 6998113, 11285027, 11733314, -5166309, -1996086, 2948495, +3941169, 8391292, -15590194, 34874596, 15145665, 16146930, -2983392, 35410396, 4495220, 21238614, +8977019, 6461242, -8335995, -5724118, 18245558, 6716255, 8510478, -19450296, -10200547, -16294032, +-9296994, -11935714, -11274, -23503134, -25164214, -1779190, -9672266, -47854524, -35356708, -32360432, +9167608, 34331820, 44903348, -25120726, 30962420, 47779900, 8227547, 3723737, -3050501, 32764694, +2537252, 29603062, 12891344, 13669270, -19962472, -66432944, -52325048, -12187507, -1786706, 1024887, +2312840, 24037322, 23067196, 19705310, -12541305, 1209033, -6565932, -34473020, 3403762, 2292976, +17078938, 2225867, 25132002, 22320408, 5577015, 19350976, -8448738, 12952548, -11972221, -13846975, +-5027259, 4842576, 21791590, -5410048, -6272800, 2734284, -10948409, -5807333, 10954851, -3664144, +7520488, -14319421, 18639084, 5152350, 32749, -1844689, 14281303, -4115653, 827855, 1785633, +-483721, 9236327, -7304666, -4225174, -320512, 8829916, -14291504, 1252520, 4769025, -7499013, +792421, 1910187, 1473174, -3758633, 24251532, -5446556, -43361988, -3970161, 69448008, 12526809, +-12780749, 17726404, -5531381, 11488501, -5347771, -7655779, -22613002, -8726837, -2280628, -3964792, +-10718628, 16238198, -14595909, -16052977, -882079, 2392297, 14726906, 6376953, 4208531, 6042482, +-5704791, -20938, 21889300, -11218991, -25601764, -5320928, 2492155, -8871255, 18260590, -9578851, +-5847598, 15045270, 4502737, 11324218, -26452704, -30204358, 10231686, -5950677, -9982578, -13022341, +-15634755, -33244658, 338766, -3052648, 11300059, -21340082, -43934832, 32950990, 9367861, 30963492, +3726958, -10189810, -9101573, 7949448, -16371342, 25647934, 5403606, 30814242, 21880710, 45824616, +-4275103, -44306884, -34053184, -19672024, 25675314, 25373056, -19136764, 20114942, 40477920, -23854248, +-3384971, 43067784, 6989523, 33042258, -4667019, -17141752, -44713832, -17660906, 5333813, 28525026, +25286620, -14960982, 12826383, 11638288, 23991688, 8005282, -23420994, -28189480, -10799695, 19166292, +41342280, -1229971, -3481071, 21195126, 11496554, 1752347, -3335579, -9197136, -10909217, -9165997, +7212861, 4103841, 13218299, -5658620, -1324997, 1041530, 8061117, 9955197, -12842489, 30602, +14906221, -1871532, -4125853, -16543140, 12030740, -225486, -6869264, -5217849, 16590385, -973347, +-10396505, -5843303, -36529772, 37874096, 51391432, 8949101, 2333241, 11412802, -7844758, 22418656, +12541305, 23427972, -4752918, -24757802, 54984172, 306553, -20675436, 2532420, 37176164, 17012902, +7283728, -23573464, 2545842, -12629351, -9221295, 3670050, -17539036, 1462436, 4702453, 21115132, +-30026116, -5130339, -3615289, 17826798, -6808060, -11113228, -10572062, -171262, 11358041, -23369990, +1677722, 6114960, -47771848, 6543920, -12969727, -33693480, 22094922, -24916716, -43661028, 57560076, +-488553, 3284576, -4588636, -16077136, 34715148, -24650964, -2363306, 5114233, -15925739, -1365800, +43873092, 22644678, -38815232, -42008000, 41295036, -19821274, 24028194, 39621072, -35710504, -61422328, +-42539504, 70717712, -4291209, -55629492, 50675244, -37131068, -70527120, -1231582, 60632052, -2753611, +-73196440, -1180579, -24715926, 527207, 89997280, -13901199, -66475356, 9475772, 35182760, 590558, +41161892, 2239289, 678605, -13237626, 1535988, 9271224, 33190970, -7152195, -9148280, 32819456, +-4571993, 7679402, 22959284, -4159676, -33833068, 21764210, 15755014, 25520158, -8158827, -818728, +8969502, -7634305, -24965034, -11152419, 10037339, 538482, -5070209, 32411970, -1177358, -36580236, +8287677, 29433410, 17010218, -12904766, 1423782, -14757508, -8286603, 35733592, 29991220, -8152385, +-34840776, -11387032, 13991930, 11285027, 9206799, -6838662, -1504312, -24237038, 37248640, -7216619, +10973641, 24420110, 16769163, 18585934, 43892956, 19528142, -11373073, 7343857, 10446434, 14806363, +-16566763, 42999600, 39825620, 5930813, 13459354, -9546102, -532039, -43249784, 19513110, -22687628, +15011984, -1460289, -16524350, 23928336, -9910100, -17307108, 8941585, -24570972, 16006806, 1024350, +-5247377, 7193534, 9805410, 15770046, 15305116, 15375446, 44661216, -4116189, 4403415, 14605573, +29918742, -2667712, 7569880, 441845, 23284628, 28586228, -9732933, 7136088, -1781875, -4271345, +-52151640, 4478041, 21482352, -11996917, -13158169, 11788075, -22038014, -31656594, 2327872, 18521510, +37613712, -48637284, 18224620, -2146410, -1901060, 585726, 18632642, 41437844, 200790, -29599304, +9410273, 33698852, -18586470, -25992606, 2019708, 14993731, -14664629, 26766774, -5669357, 20660940, +1232656, -19856170, 24350854, 20385526, 2866354, 16161962, -9436580, 10235444, -5377836, 5592048, +7602092, 24425480, -5645735, -28770376, -4297115, 34153044, 2069637, -3912178, 29470454, 6652368, +-682900, 7606387, 20283520, 31353262, -20419886, 8023536, 3698504, -1086090, 14673219, -4036733, +-23088134, 7806640, 20969104, -8805757, 5082020, 7719667, -7515656, 8773008, -14872398, 10624138, +8661338, -12093554, -27531814, 11938935, 14842333, -6706592, -10367514, 14760729, -1603633, -8295730, +23213224, -44100724, -34886944, -323733, -53669912, -18033494, -20048908, 41394896, -1491964, -14921253, +18613314, -9409736, 10184978, 2971044, -20671678, 24616068, -55305220, -4940823, 3047279, -13476534, +9851044, 2732673, -11025181, -1682554, 1329292, 14134737, 547608, -15854872, -53661860, -38655244, +-29939680, -14476724, 32810328, -6431177, 969589, -53178136, 3732864, -3452080, -7509214, 1957431, +-51944944, 27945742, -25352656, 13004624, -10529649, 35464620, -19473382, -33812668, -16648367, -22549, +25275346, 46810848, 48644800, -60065116, -44897440, -30531848, 20558934, 49848464, 59755344, -10188199, +-15299747, -52538188, -19823422, 47291348, 28496572, -287763, -213138, -842350, -44847512, 30137248, +-9181566, 29099478, 69561288, -77671264, 94272384, 26979910, -51383916, 14605573, -102807560, -99976104, +73813848, 31872416, 7108171, 22371948, -38160248, -17941690, 68790880, -2323041, 46209552, -4247186, +-37461240, -11857868, 40810780, -13320304, -1060320, 13615046, -3444564, -23565948, 13162464, -19069118, +8829916, 26455388, -27300960, 26066694, 8518531, -3111704, 9626632, -1232656, -6219650, 4630512, +-9524090, 5199595, -19385334, 17479980, 17775796, 4010426, 536334, -5569499, 9097814, 3725884, +3615826, 9238475, 17131550, -20895016, -7220377, -19360102, -15096273, 1969243, 768799, 17391396, +-22034256, -16466905, -21221970, -12992276, -5665062, -44542568, 36820756, -22075596, 22588306, 12036109, +14204531, 8458938, -28632400, 31212602, -4771709, -11070815, -10366977, -12286828, 9398999, -6426882, +13431973, 8134131, -1929514, -3204583, -23998666, 13913547, 5495411, -6068789, 5155572, 12635257, +-3741454, 7195144, -12276627, 14372571, -5494337, 1895154, 5658083, 6146098, -6537477, 22126060, +-1025960, -20678120, -1543504, 9628780, 4551055, -15803869, 7544647, 18536542, -3643743, -8911520, +-8933532, -1151588, 4916127, -2177549, 21527986, -14534706, -5757941, -5124433, -11070278, -864362, +-3494493, 8013335, 5587753, -8910983, -1516660, 8400956, -8934606, -4452808, -2779918, 13474923, +-8455180, 5812165, 8859444, -20735028, -8528731, 6717866, -21837224, 32952600, 8650064, 10525354, +15037217, -9570798, -392990, -2791729, -15074798, 3055869, 4802847, 12065637, -2507187, -4999879, +7202124, -7539278, -3240016, 7253663, -33823, -1719598, 5974300, 1907502, -3995930, -127775, +-4398047, 9648107, -9184788, 14615237, 550830, 3254512, -6170258, -500901, -2301029, -4511863, +-2482491, 3510062, 1673964, 4236449, -162672, -3389803, -2374043, -11241540, 11328513, -9018894, +5098663, -2110977, 6596533, -3684545, -10583336, 743029, 5419712, -8594230, 12919262, -10251550, +5636608, -3889093, 51510616, 6703370, -17445620, -13565654, -10151692, -998043, -1649268, 1114007, +-1395328, -2008971, -29116658, 615254, -5791227, -6744710, 3705483, -11457362, -5180268, 5282273, +-7964480, 2248416, 9048959, -12240657, 7712151, -4545149, -6471979, -1058173, -6472516, 3010235, +-6005438, -3230352, -7077569, -1406065, -88047, -186294, -4242354, -4447439, 1361505, 2302103, +-5073430, 6874632, -8465917, -772557, -3361886, -1101122, -1568200, -6756521, 9262634, 5648419, +-9233106, 11252277, -1113470, 2388002, -5057324, 10797548, -10770167, 798327, 966368, 2844879, +-1745904, -2811056, 8111583, -5364951, 1243930, 418222, -1596654, 2571612, -3463891, -495532, +4556961, -2273648, -2007360, 5101885, -1937030, -2234994, -4689031, 2462627, 2380486, -10519986, +12650289, -7110319, 2908230, 863825, 234076, -4076998, 1803886, 5177583, -3777961, -1949378, +2840584, -3872987, -181462, 3171297, -1239098, 1263257, 759672, -2870112, 569620, 370978, +2649458, -4660577, 454730, -525597, -1766305, 1948305, -2221035, 1122060, -1413044, -4076461, +2355253, -3533684, -1960116, 1312113, -2140504, 820339, 2127620, 228707, -3010772, 3278134, +-554051, -2017024, -25169582, -40950364, 45730128, 153798480, 15653545, 35328252, -83669720, -127949760, +-32150514, -66827544, 52081312, 107227080, 56507276, 35751308, -8010114, -41578504, -40898288, -30758946, +-28565290, 10227391, 18294950, 10596221, 19691888, 2628520, 1580548, 7796977, 2236604, 8848706, +7039989, -5222144, -19582904, -14465987, -17258790, -23287850, -12305081, 13168370, 16972100, 31524524, +44500156, 16151225, 6449967, -14752139, -35255776, -34103116, -23822572, -16515223, 3403762, 13167296, +18895172, 20172388, 16996796, 11483132, 1347546, -1309428, -11193222, -7715372, -4930623, -5577552, +-2168422, -6307160, -1806034, -7484518, -7322383, 2747169, -572304, 9772124, 16033113, 9547175, +23838142, 21247740, -10186589, -20888574, -20937966, -31170726, -8763344, -7478075, -1657321, 19235548, +17143362, -2988760, 14911590, 18602578, 6324876, 13007308, -1140314, -14951318, -10835666, -25690346, +-16171089, -6067715, -1570884, -1874753, 4672388, 12171937, 19283330, 24317568, 20585778, 6887517, +-11181947, -18344880, -17546552, -19585588, -8764955, -4963909, -1989107, 4359392, 9715216, 7704098, +13575318, 7413114, 8934606, 8097624, 118112, -6673306, -8691403, -10926397, -10706817, -9567040, +-5032628, -5268851, 3118146, 5536213, 11178726, 16149614, 15633681, 5940477, 1159104, -8870718, +-10735271, -12714177, -12694313, -3730716, -497679, -2449742, 3126199, 9918153, 13003013, 6391448, +1512365, -696858, 283468, -2609730, -2826625, -4890894, -2901787, -3724811, -2519535, -1631551, +183073, 1611, 3009162, 5558225, 5997385, 2678986, 1183264, -1540820, -776852, -1169842, +238908, -545461, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 3988414, -6492380, 1704565, 5732708, 98784, -5909875, -4076461, -4303557, -669478, -2954401, 6932077, --5181341, -1316944, -2350958, -828392, -4154844, 3998615, -2448668, -1918777, 3365644, 5577552, -6313602, 973884, -448287, 1314260, 338229, 892816, -2851322, -3071975, 1507534, -2784750, --2786897, -3737695, -3927748, 1202054, -2599529, 3482682, -4335770, -587337, 1920924, 1825361, -1612223, -6729140, -1202591, -3730716, -643171, -1563368, -4099546, -79994, 4909685, 1496796, -2389076, 2260227, 2658585, 343061, 3333432, 2097555, 3719442, -2093797, 2486249, -1212255, -1720671, 203474, -3415036, 4013647, 4540854, -2420214, -3029563, 1345399, 4174708, 1001801, -1123671, -1385664, -261993, 2266669, 1423245, 373125, -812286, 285078, 1918777, 2330020, --268435, -3613141, -2204392, -1211718, -1529545, 849330, -333397, -321586, 1734093, -1260573, --411780, 537, 316217, -852014, -233539, 135828, -1359894, -150324, 1699733, -242129, -905701, -1213328, 718870, 366683, -69793, -795106, -10142565, -2664490, -4575214, 3356517, --9508521, 2083059, -4191888, -2215130, 1347009, 186831, 1061394, 1419487, 1069984, 4123706, --1836635, 428960, -419296, -5023501, 3698504, 6179921, -5034776, -4726612, 3586835, 919660, -4428648, 1401233, 5950141, -830002, 2003065, -3155190, -963146, 6066105, 481573, -3963181, --4888210, -5280126, 220117, 4366908, 2215130, -32212, 4969814, 3961034, 152471, -4070019, -6356552, 1620276, 4901632, 4983236, -876173, 3173981, 3751117, -458488, 2215130, 2570538, --2477123, 507880, -770410, 2442763, -5591511, -3580392, 1801202, -3461744, -1336809, 4789426, --1942399, 2630668, -1125818, -7523709, 1266479, -38118, 3950833, -6196564, -3333432, 2798708, -706522, -597000, 1596654, -2921652, 847182, 743566, -894964, -1842004, 2532420, 2302103, -1592359, 288300, -954557, 611496, -707059, -1116155, 833761, 716186, -1511292, 1089311, --845035, -642635, 1359894, -978179, -2011118, -30602, -750009, -246424, -952946, -1047435, -420907, -78383, 612570, -5369, 601295, -1482301, 430570, -431644, 6379100, 6734509, -2962991, 4981089, 3890167, 6744710, 7687455, -2860448, -825707, 2587181, -7681012, -258235, --2532957, -1466731, 3515968, -4472672, -523986, 5681705, 1049583, 3641596, -1802813, -1318555, --1915019, -7224135, -1184337, 489626, 3819300, -1163399, 6572911, 2588792, -1136556, 2626373, -1361505, 3376381, -2443837, -512175, 7675107, -1029182, 7250979, 3401614, -3183645, 759136, -6385006, 3322694, -4214437, 5819144, -1599339, 390842, 300648, -1178969, 1115081, 643171, --5266704, 3354906, 2452426, -458488, 188442, -1179505, -4758287, 0, 2670396, -550293, --563714, -3208341, -6995965, -2410014, 2600066, 5862631, -8920110, -4762582, 1664300, -3900367, -2281702, -189515, -44023, -5376226, -4075387, -2394981, -3488050, -1730872, 194884, 591632, --1252520, 2010045, 1606855, 317291, 1480690, -1644973, -606664, 26307, -2405719, -540629, -235686, -3064996, 1277216, 719944, -586800, 71404, 634045, 1446867, 162672, 187368, -23085, -1504312, -190589, -470836, 1085553, 731755, 1486059, -1079111, 9400073, 10040560, --2024540, -4172561, -4608500, 9628780, -8355322, 253940, -1381906, -3858491, -5297842, 1902671, --1471563, -7159174, -8764955, 359167, -678605, -4540854, 1633161, 2451353, -3235184, -4816269, --4539781, 6414534, -6913287, -804770, -8075076, 122407, 4467303, 1556926, 750009, -4489852, --4363687, 3983045, -3069828, -4589173, 557272, -1651415, 2810519, 86436, 1126892, -4575214, --1717450, -1269163, 4407174, 3061238, 3060701, -9087614, 1429150, 2571612, 2069637, 2600603, --2612414, -1630477, 315143, 1879048, 3595961, -594316, 2372433, -2607582, 7030325, -12740484, -4477504, 395674, -6804839, -260382, 7503308, -2241436, -3531537, -6816113, -2318746, 564788, --1910187, 24159, 3073586, 3952981, 3269007, -938450, -547608, -3996467, -827318, -1000191, --2033667, 588947, -828929, -767189, 1633161, -2006287, -946503, 1997160, -985158, 1300301, --303332, -781147, -710817, -512712, -2951716, -1813013, 1282048, 1476932, -1401770, -1102196, --954020, 1115618, -697395, -393526, -1159104, 785979, 804770, -1351304, 551903, -168041, --1256815, -271657, -711891, 836982, -417686, 1232119, 1705639, -4459787, -14147085, 2587718, --6456410, 1421097, 1170379, -810138, 10019622, 562641, -6430640, 8577587, 4116726, 2949569, --1302449, 1782411, -2624225, 6724845, -1130650, 770410, 10105521, 9884330, 4211753, 4529043, -4335233, 4922033, 3265786, -9759776, -3067681, -133681, -2586107, -8308078, -935229, -1969779, --2216203, -4464082, -107374, -1311576, 7126962, -2296734, 12512313, -78920, 1033477, -2326799, --1838783, 90194, -385473, -1009854, -2217277, -1476395, -6168647, 1487132, 979789, -742493, --3202972, 4279398, 3149285, 3707094, -1333051, -2702608, 44560, 3227131, 3480534, -2837900, --8053064, -4113505, 837519, 6673843, -954557, 5452461, -4374424, -6327561, 4681515, -2225867, --5213017, 2990908, 3110093, -5829881, -4626754, -6414534, -2158221, -2225330, 3636764, -2024003, -1082869, -436476, 2412161, 1487669, 1319092, -1235340, -719944, -3356517, -1709397, -919660, --78920, 1443646, -323196, 67646, 2725157, 1044751, -176631, -9127, 1735167, -1207423, -438624, 472446, -981400, 1029718, -876173, 662499, 506806, 743566, -548682, -2115272, -1962800, -3532611, 5196374, -6154152, -6729677, 3238942, -1927904, -563178, -3533148, -2019708, -3450469, 4904316, 2556579, -1102733, 751082, -552440, -1117765, -4620848, 1576790, -12507482, --3628711, -3958886, 3476239, 4341138, 375273, 2175938, -7794829, 2173254, 1220845, 2164127, --7024956, 13342853, -581431, 2514703, 1764695, -6244346, 1012002, -8971650, 5810554, -1877975, --7525857, 1566589, 598611, -3740917, 432718, 869731, 5983427, 10772852, 4667019, -2127620, -3497177, 4450660, -9962177, -3626563, -4552129, 2821794, 2307471, -1617055, 1604170, 3519726, -2237678, 4520990, 8391829, 236760, -3092913, -817654, -335544, 6614787, -4706748, 66035, -3053722, 8905615, 52613, -5858336, -5736466, -471373, -7050189, -922344, 2695629, 10896332, -9366787, -1052804, -4949950, 4037269, 311385, 1202591, 1025423, -342524, 1382980, -348966, --1361505, 1213865, 1569811, -1506460, 2194192, 2051384, 1981054, -545998, -1596654, 1285269, -1763084, -267362, 526134, -1340567, 217970, -281320, 2555506, 941135, 1595580, 1236951, -398895, 830002, -11274, 1003412, 2284923, 479963, 938450, 1631014, 2222109, -1065689, --558346, 530428, 660888, 1673427, 2609730, -13028783, -3544422, -4843113, 5573794, 159988, --2673617, -16741783, -2201708, -2273648, 6928319, 16506633, -4760971, 11076184, 1915555, -9822590, --9991168, 1698123, 2543695, -5726265, 6269042, -4534412, 5052492, -6263673, 3015604, 2108292, --5914170, -5018133, -3797288, 1928440, 6476274, -8477192, 316754, -8911520, -493384, -3412352, -2165737, 6441914, 682900, -2839510, -2478733, 6976101, -19864, 10653130, 3284576, -4065724, --3876745, -3130494, 1531693, 6672232, -137439, 11083163, -19796042, -14634027, -11813308, -2767570, --10075993, 620086, -3792456, 3550864, 8992051, 1581085, 3722126, 5732708, 9518184, 4860829, -1457068, -6598144, -16386911, -17302812, 9268539, 593779, 11765526, -8413841, -6032282, 5122822, --12129525, 208306, -4332549, -489626, -7822746, 276489, 2610266, 7036230, 1277753, 1112933, --2255395, 2517388, -516470, 812823, 1974074, 3170760, 4120484, -1146756, -1730335, 2972117, -1519345, -1169842, -2172717, 430034, -362388, -288837, -920197, 439160, 31675, -1203665, --401043, 1207960, 2228551, 1765232, 1531156, 777389, -5024038, -2786360, -1921461, -1806034, -2699387, -437550, -832150, 5369, 769873, 181999, 7848516, 3428995, -6251862, -170725, -14944876, 12669617, -1170916, -10951093, -18478024, -2108292, -6486475, 6609955, -5537287, -5450851, --20925080, -8978629, -18742164, 6917582, -612570, -4567161, 4995047, -656056, 115427, 1358283, --6014565, 532039, -6908992, -1226750, 4201552, 3125663, -7046968, 2541547, 7199439, 11715597, --1768990, -1636919, -3892851, 668404, 6086506, 8637179, -1234266, 1279363, -1855963, -1492501, -10293426, 7490423, 308701, 7726110, 2244121, -9458592, 1794760, -947040, 12251931, 4791573, -1551557, 5915244, 7953206, 2194192, -6978785, -11961484, -2752537, 2505040, 6431714, 3287798, -411780, 2516314, 9506373, 2101313, 3099893, 4383551, 2566780, -6092948, -6886443, -5984500, --6802155, -6228240, 10568304, 1497870, 8164733, -7156490, -6313065, -1206349, 6826314, -4254165, -3642669, 2096481, 1098438, -3611531, -2289218, -3336116, -2278480, -3803731, 1531693, 1241782, --1031329, 2517925, -1641751, 1191853, -656056, 285615, 1155883, -3365644, -2086817, -3377455, --2182917, -4116726, -1175747, -3411815, -1628330, -1973538, -2594697, -160524, 3002719, 987306, -1258425, -1062468, -281320, -364535, -702764, 2341294, -1093069, 26212186, 5743982, -8078297, -4683662, -4700305, -15537044, -3135326, -15240691, -8339753, 7893613, 10533944, 4070019, 2194728, -897648, 1982664, 9982041, -7036230, 14120242, -9069360, -9274445, 11325292, 5015985, -18104360, -7965554, 4721780, 5779416, 12070469, 5927055, 9007620, -588411, 4937065, -2828773, 7715909, -2016487, 1747515, 5095979, -10120017, -5516349, -3011846, 6586869, 2991445, 2378338, 5361730, -1544578, 1998234, -9233643, 244276, 10050223, -1643899, 1266479, 1425929, 1326608, 12150999, -4655745, 16293495, 3761855, -2127083, 15372225, -13016435, -1670205, -1909113, -5217312, -1023276, -3262565, 15380278, 1511292, -3037616, -5850283, 3332895, -6153078, -2461553, -3938485, -8122320, --1275605, 2427194, 13060996, -876710, -12495670, -3271155, -7474854, -3572876, 9142912, 7534983, -8570070, -6555194, 1472637, -7314866, -1068373, -2335925, -4468914, -2320356, -6153615, -3403225, --1093069, -2435247, -8096550, -3002719, -2266669, -1433445, -1769527, -2635499, 445603, -1144609, --6347962, -95563, -3009162, -1618666, -448824, 161598, 1229971, 27917, 2985539, 3073049, -591095, 747861, -1963337, -1564442, -378494, -1937030, 3062312, 2004139, 2884071, 2875481, -1239635, 3932580, 2553358, 1176821, 1828046, -248571, -1392643, 2864206, 3848828, -9395778, --14583025, -5211943, -14358613, 10322954, -12256763, -8952859, -7234336, 6539625, 16345572, -16584479, --5939403, -18695456, 5328444, 2654827, 1719061, -5342403, 1423782, 21133386, -11076184, -1813013, -7948374, 5495948, 4138738, 7460895, 4902169, -6898255, -11764452, -2150168, -6534256, -8809515, --10865194, 213675, -2566780, 2705830, 13897977, 8865886, -7870528, -4189741, -918049, -4003983, -3370476, 26549340, -9041443, 18532248, 5749351, 3148211, -1255741, -2957622, 3083787, -10114111, -4815195, 14433238, 564251, 2338610, 11474542, 7515119, 4412542, -9673340, 8078297, -5752572, --8699456, -23373748, -7414188, 15250355, -8695161, 3981972, -16524350, 11831561, -6249715, -6454799, -10257456, -16390669, -12190728, 18650896, -13309030, -12453795, 7425999, -8531416, 1692217, 67646, -5289789, -13438416, 4203163, 390842, 13405130, -9965935, 3304441, -1382980, -7634305, 10000294, -1989644, -8256538, -6041409, -5677410, 851477, 14496, -4199941, 147103, 5176510, -400506, -3663070, 4179540, 3269544, -7432978, 4132832, 3837553, 5978058, -118112, 427349, -5397700, --2183454, -2640868, -2828773, 1286343, -637803, 3505767, -4949950, -3085397, 1853815, -4749697, --4037269, 1730335, -10584947, -7891466, -1073742, 12032351, -5703180, 21150566, 19701014, 3858491, -6306086, -11460583, 1410897, -9285719, 14783277, -2986076, 4347581, -7093139, -4585415, 2487323, -1979443, -6817187, 11318313, -3242164, 2382633, 4191888, -7452842, 2771328, -9505299, -1611, -5359583, 6412923, 117038, 8490077, 10736881, -856309, -20221242, -3448859, -6015639, 14391899, --12239046, -15204721, -10855530, -7290707, 2050847, -8644159, -6796786, -4381941, -1298154, 2595771, --29641180, 18615462, 14501957, 21230560, -6832756, 3351685, 14206141, -13712220, -12707734, 2430952, -9255118, 6053757, -1676648, 2800856, -7547332, -8982924, -11445551, -3420405, 39268884, 3080565, --21886616, -3987877, -12029667, 7415798, 5798206, -13611825, 2812667, -4245039, 1030255, -6770479, -8329552, 8480413, -1369558, -4460324, -5254893, -17241610, 5070746, 2653216, -785442, 6964290, --3515968, 1015223, 2648921, -8248485, 3015067, 4734128, 11126113, 5842766, 597537, -9790378, --34897, 8676371, 409633, -142808, 6484864, -9127, 2141578, 6347962, 5394479, -1161789, -2900177, 5340255, 4966056, -2592550, 2105071, 6434398, 7976828, 5807333, -304943, -4435091, --1100049, 537, 4939213, -206695, -1591822, 143345, 1720671, -3383897, 1728188, 2939368, --3244848, 1798518, -5686537, -11259794, -21733072, 1755568, -18155900, 8551280, 2927557, -14614163, -8242579, 9483288, 13219909, 3823058, 5224291, -15167140, -310311, -3025268, 14119168, 6571837, -616328, 13206488, 14709189, -1773822, -7057168, 1680406, 18139794, -11819213, -9372156, 9350144, -5097053, -12023224, -2682744, -11125576, 20745228, -17720498, 4901095, 11036992, -6703907, 10143639, -3630858, -5069135, -5412196, -5455682, -8485245, 11613055, 15625628, 3116536, -12050068, 1236414, --13306882, -5068062, 8588324, -1655173, -6639483, -4855998, 2159832, -17663590, 471910, -1868311, --10242423, 13763223, -13642964, -935766, -3205119, -10062035, 10558103, -863288, 6069326, -5128728, --1139777, -625455, -6528887, 4931696, -6025839, -1122060, -5936719, 15915538, 6743636, -18949932, --4268124, -31210454, 17885318, -73551, -14181982, 12584254, 1234803, 1846836, 4480188, 204011, -7091528, 8813810, 1853278, -2310156, 4721780, 9480067, -5577015, -3365107, 3702799, 1358283, -2184528, 2782065, 4658966, 6457484, -4387846, 3365644, 1881196, -5126044, -4848481, 4099010, -686658, -537408, -3593814, -3112778, -5760625, 5526549, 5531918, 958315, -3911105, -11769821, -71941, 1058710, 3649649, -7559680, 647466, 5975374, -3461207, 6914361, 2936684, -456877, -1729261, 3760781, 137976, 1367410, 1891396, 4622459, 19021336, 716723, -14482630, -6225555, -8553964, 13855028, 14849313, 533650, -3494493, 20877836, 9081171, 23204634, 2818572, 1967632, --11189464, -4602058, -6641093, 6190122, 3344169, 12549894, -14399952, 971736, -8579197, 7697655, --12486007, 4735202, 13787382, -2080912, -440771, -7218230, 1931662, -7265474, -24820616, 3401077, --3839701, 1719061, -11104638, -2440615, 9651328, 18714784, -1973001, -6805913, 10865730, 5115306, -2626373, 12880070, 4458713, -6889665, -3318936, 8312373, -1173063, 7586523, -9090298, -8088497, -2779918, -7601555, -14565308, -6731288, -16585016, -3707094, 5565741, -13023415, -1883343, -14956687, --6550362, -114890, 5870684, -17822504, 7785702, 1315871, -10605885, 13269838, -4737349, 3510599, -23527294, 26637388, 1709934, 9364639, 19481972, 23296440, 23125178, -2283849, -15418396, -23638964, --8591545, -15673409, 14799384, -3190087, -6978785, 3784403, -379568, 1612223, -276489, -7008313, -7522099, 2120640, 2825015, 542240, 10170483, -5690832, -99321, -3125663, 7061463, -6548215, --2773475, -697932, 10049687, -2619393, 6078990, 8274255, -7577396, -1629940, -3187940, -8603893, --3451006, -1974611, 3741990, 294205, 11780022, 3187403, 7985955, -756451, -7530689, 2114735, -234613, 31835908, 36827196, 1775432, 11893301, 11099806, -1406602, -26541288, -559956, -1209033, --9872519, 7294465, 7040525, -14515379, 7963943, 9909026, 1797444, -3973382, 5599027, -3817152, -18817326, -3355980, -8617852, -26844, 4370666, -1907502, -1110249, -482647, -29667486, 8454106, --560493, -20723218, -8417599, 3415573, -1821066, -14166950, 4984310, -16693464, -1385127, 1486059, --26452704, -4892505, 11509439, -8666170, 1348083, 16618302, 10379325, 12681428, 4099546, -7354595, --12298102, 12621835, -6475737, 7013145, -11679090, -6289443, 8575976, 14194867, 2210298, 17030620, --11392401, 14717242, -12452721, -15259482, -10695542, 14669461, 15602006, -14433774, 7521562, -39634496, --3492882, 11489574, 3790846, -6323266, -15627775, 7129646, -22135724, 3469797, -11353209, 10432476, --17064978, -11087458, 17361868, 270046, 8792335, 1841467, 7682623, -3994857, 3253438, -2069101, --12745852, -2447058, -5869610, 3894462, -4013110, 2175401, 657667, 2029372, 1182190, -2951180, --3765613, 432718, -8002598, 2797098, 2471754, 4571456, -5066451, 4539781, 4490389, 2742874, -3888019, 2630668, -5444408, 484258, 2897492, -4253628, 7671886, -785979, -2729452, -4396973, -139586, 560493, 3751654, -2838437, 3570729, -2745558, 8074002, 3358128, -6456410, -1838246, --1460289, -3241090, -2604361, -28981902, 2132988, 35885524, -24260660, -2269890, -2106682, 1917166, --9600863, 4592394, -15306190, -15658914, -5173825, -4269735, 3784403, -3932043, 8159901, -11735998, -383863, 23087596, -18918794, -16681653, -4053912, 20204600, 2815351, -25275346, 10757819, -9372156, --10824391, 2523830, 34748432, -19543174, -10910828, 24753508, 18315888, 1604707, -10244034, 689879, --3817152, -7847442, 7067906, 6473590, -4226248, -20040318, 25672630, 12074764, 4846871, -27285390, --4194036, 8490613, 9430138, -3384971, 14338748, -2306934, 4866198, -6248641, -16457241, 10724533, --11747272, 7047505, 3635153, -14399415, 27199492, 4195110, 19583978, 19659676, 3491809, -29554744, --5684926, 288300, -11753178, -5947993, 1108638, -936303, 12831752, 24142548, -6982543, -2355253, --10657424, -4752382, 10023380, -6764037, 5823439, 17950816, -15693810, 17842368, -3507378, 5365488, --6784975, -3634079, -5695664, 774705, 3330210, 3940096, -2985002, 99858, 4071629, 2321430, -9430674, 4427038, -4759361, 405874, 860604, 8603893, -4766340, 2504503, 3974992, 1342714, --335007, 304943, -11218991, 5514738, -4129074, 5399311, 7040525, 946503, -1136556, 3581466, --367220, 2741800, 933082, -1167694, -4142496, -4214437, 8367133, 1431298, -1955821, 2349347, --5204964, -979253, 8530879, 11190537, 1545115, -10300405, -51554640, 3386582, -13435195, 1777580, -25844966, 2466385, -4955856, 4704600, 1023813, -17515414, -18874770, -17029546, -16316581, 21271362, --4229469, 25389162, 2286533, -23987392, -809601, 2645163, 20584168, 4045859, -3285650, -4085588, -5906117, -12917114, -4911832, 22726282, -4596152, -29515016, -22505092, 13471165, -2891050, -6135361, -6824703, -2118493, -15163919, 4584341, 8973797, 20463372, -4079682, -16988206, 277562, -21425982, -8289824, 24255290, -3835943, -29769492, 9419937, -340913, 1723893, 7175817, -9327058, 18321794, -1425929, -12359842, 9663676, -6691559, -4084514, 26181046, -13357885, -4502200, -4348655, 16496433, -6682969, -28956132, 14746770, -23333484, -5513128, -12588012, 3065533, -7675644, -7020124, -2405719, -13356275, -4318053, -8138963, 15744813, -9119826, 16163573, -26844, -8528194, -5077725, 4028679, -4507568, 3212099, -9651328, -3202435, 2448668, -530965, -6291054, 156229, 6056978, 9240085, -3908420, 4763119, 818728, 9086540, -5066988, 2966749, 7237557, -2699924, 968515, 2950106, --1723893, 1459752, 2910377, -8853001, 7575786, 3232500, -8866960, -7290707, 591632, -10475425, -988916, -7706245, 10108742, -18097918, 34897, -3788698, 1985886, -4667019, 5738613, -2962991, -2713883, 2098629, -25188372, 5157182, 41580116, 27087822, 12387223, -20632486, 15458124, 19551228, -28922846, 13972602, 3415573, 1029182, 18118856, 31284004, -7062537, -3808562, 17712446, -35019016, -12742631, 31251256, -6481643, -10817949, 8108899, 24267638, 19538344, -13056701, -22383222, -1307281, -11257109, -3782793, 2711198, 372052, 26249766, -14976551, 16816408, 25409564, -10163503, -3053722, -17927730, -2667175, 62862216, -26339424, 11319923, 43051140, -24775518, 8147016, 2881923, -34854196, --1079647, 6544994, -15380278, 34155728, 2585570, -4648229, 2658585, -14150843, 46786152, 12947716, --37491308, 36229660, -15117211, 1394791, 11108396, 13494250, 24017994, 11767137, -6479495, -23376970, --31523986, -11770895, -12631499, -2097018, -9667971, 19896972, -12048457, -20826834, 2350421, 5852967, -4268661, 7694434, -11818139, -11446625, -6984691, -7539815, -24842090, -10415296, -8446590, -17077326, --8235600, 6241661, -7283191, -16002511, -750546, 6360847, 10835666, -2442763, 5110474, 11885248, --653372, -7885023, -471373, -4735739, 6582038, 9511205, -13146895, 11711302, -6797860, 270583, -1768453, -5983963, 12205223, 4834523, -17074106, 10669773, 1628866, -5933498, 12664785, -14224932, -5799817, -2534568, 6208912, -3267396, -3962644, 2566243, -2315524, -1284195, 4482335, -2418604, --9765145, 4739497, -873489, 3188476, -390842, 8412230, 10298258, -48389248, 28187870, 1261110, -17042968, 28054190, -46380816, 10584410, 23885386, 5386963, 17825188, -17889076, 19622094, 5695664, --18176302, 244276, -11451993, -33996276, 18654654, 10555419, 31073552, -17213156, -22744536, -7987029, -7298760, -4764730, -38502236, -19044422, 11853573, -2913062, 5776194, -16298327, -5024575, 12771085, --10843719, -5466957, -16427713, -3898220, 6006512, -18269180, 1939178, -39844412, -32726040, 10066330, --34041912, 2907693, -35615480, -25041270, -17169668, 16702591, 33290292, 40888088, -9666898, 18131204, -22231824, 10678899, 9657771, -15968688, 45629196, 46405512, -31554050, 31601832, -24815784, 15860240, -32753420, 30988726, 37948720, 45122928, 32112396, -36063768, -25489020, -355409, 960999, 13517336, --8501351, -7004555, -21487722, -12038256, -31907312, 6937983, 26929444, -10935524, 6662031, 27944130, -13294534, -19289772, 21626770, -1416802, 7706245, -2197950, -3712462, 6127308, -6680822, 9443559, -8151311, -7242389, -8548596, 8136816, -5790153, 197569, 367757, -771484, 2463164, 720481, --11411728, 10636487, -4774393, 5035313, 6286759, -4377109, 6764037, -8330089, -5909875, 5357972, --6478422, -8601746, -3627637, 3279208, -3199751, 1999844, -7555921, 164283, 2966212, 6969658, -10746008, -2629057, 6117107, -7133941, 148176, -1418950, 3359738, 2330557, -486405, -5550172, -59872916, -43826384, -22296248, 23605678, -14051522, 22549116, -17580374, -19614578, 6621766, -46351824, --2098092, 31156766, -7524246, 16010564, -26585848, -6540699, -10499048, 1049583, 33238216, 10045929, -7384123, -5940477, 18242874, 5862631, 45413372, 11164767, 26511222, 1879585, -20739324, -19616190, -26422638, -12861280, 12215424, -265751, -34114924, 24581172, -30397094, 59008020, -44004088, 26845156, -24035174, -25272662, -21241834, -15696495, 21785148, -1678795, 22798224, -302795, 2962454, -40373228, --21701932, 9373229, -19852412, 6549825, -12113418, 11834782, 6714645, 30974768, -18438832, -6366216, --7875897, -15217606, 42003168, 7755101, 3933653, -39165808, -12701292, 21024938, 12400644, 13380434, -36375152, 23267448, 32162326, 37119256, -1112397, 16420197, -15480673, 49381388, 3688840, -8191577, -17975512, -4257387, 37888592, 651224, -7670275, -7871065, 4508105, 26625040, -20262582, 13734232, --6476274, -2233383, 7872138, 5255966, 10337986, -6568079, 6713571, 12396886, -3315178, -4792110, -8381092, -1432909, -1372779, -1013075, 2212982, 1310502, 4000225, -9122511, 11803107, -7066832, --3934727, -1996623, 7187091, -10326712, 964220, -7418483, 9844065, 17871896, -6090801, -5068599, --2471754, 12234751, 5980205, 12779675, -1127966, -7602092, 5797669, 6072547, -1946157, 6009733, -4682588, -17632988, 2605972, 19901804, -2794950, -90372552, 62827856, -38934952, -27227946, 699006, -12917114, 16255377, 2952790, -14426258, 48926656, 24847996, 6867116, -24415816, 16079821, -767189, -18277234, -23302882, -16105590, 12582644, 36602784, -41836740, 1767916, 13668197, 4512400, -10227928, --6140730, -5187784, 1744831, -2033130, 9529459, 46183248, 3036005, -20723754, 31061740, -7129109, --29888678, -38544648, 36886252, 12153147, -5039071, 13828184, 8587250, 30749282, -41489920, -4281009, --21061982, -5879810, 23841900, -17388176, 9341017, -20066624, 9831717, 63661616, 4889284, -36219996, --40731324, -2376728, 19520626, 19225884, -16280610, 4101694, 30993558, -12826920, -59771988, 34280820, --20561082, -33881924, 15017353, 56917980, -39143260, 28763396, 39644160, 13812615, -34206192, -28436442, --17549236, 14451491, 12444131, -11654931, 35587564, 17534204, -2160369, -812286, 2202781, -29438780, --11257109, -20764020, 10873783, 9816685, 7120519, 9924596, 7341710, 22114250, -10866804, -5063230, -4250407, 368830, -16818018, 14876156, -587337, 9452686, -4166655, 7215545, -10816875, -2981244, --6506876, 10641855, 1994476, 2501282, 331249, 6592238, 16075526, -5916855, -30582314, 2959769, --15087683, -2482491, 9171903, -12463458, -8405788, 17911624, -16258062, -3084324, 141197, 8915815, --17415018, 1831267, 52217140, 16742319, 3774740, -4136591, 8558259, 14265734, -4318053, 6478422, --7524783, -405874, -5877663, 24035174, -27014270, -3403225, 16677895, -38312720, 12621298, -9599789, -3190624, -4776541, -10304163, 6460705, -2610266, -15797963, 41941428, -32089848, -8613557, 29220810, --18617610, -3223373, -5653251, 6176700, 29553134, 1951526, -28200756, 38769596, -20803210, 13608604, -24676198, 10533944, -8785356, 1839857, -21163452, 4932233, -12695923, -10545755, 52665964, -12481712, --20564304, 6506339, -9440875, 12120398, -7831873, 13339632, 33995204, -18838800, 11457362, 25425132, --29952028, 13549548, 16768626, 7220914, 20911122, -23798950, -5885716, 35683664, -24538222, -5787469, -10581726, -10384694, 34644816, -34427384, 6103686, 11985106, -15458661, 11649562, 13430363, -32801738, -11870216, 27377196, 5906, -8646306, -1000727, 17497160, -3374234, -30822832, 25107306, 11441256, --13094282, 4761508, -7076496, 10678899, -3979824, -13975287, 16386911, 571768, -3183108, -12192338, -11485279, 1798518, -15500000, 5331128, 10922102, -2513630, -4854924, 1993402, 10124312, -1772748, --9852655, 10084583, 7139847, 950262, -184684, 8380555, 2008434, 2733210, -11763915, 15057082, --8130373, 16080894, -29304024, -78957072, -124177704, 11333882, 118946968, 9832254, 269277792, 278022368, -138430016, 291076928, 194143264, -40121436, -4071092, -63851668, -233445968, -204847936, -126589328, -238421152, --186597536, -54069880, -116843512, -97733592, 34941168, 58971512, -28166396, 15653545, 52679384, -40058088, --23347442, 74197168, 65900904, 7896834, 73643120, 125495184, 42152956, 90908352, 171538304, 82629800, -43786116, 153811904, 128603672, 17562658, 92493728, 180210928, 36024576, 42825120, 145635360, 63077500, --15236396, 103179608, 97373352, -8501888, 86041080, 110995376, -1336809, -80329312, -37193344, -189463888, --313381760, -278604320, -297155904, -454059648, -407854400, -381576160, -464255904, -451000032, -369962048, -333497760, --300032992, -173482848, -66462472, 59311888, 125695976, 240323280, 358060160, 390899456, 435348608, 567958976, -560492160, 441139328, 482507904, 426700704, 176867824, 192731824, 163821856, -6374805, -26262114, 47860968, --6117107, -72679440, 9965935, 49776524, -47006808, -18303540, 44027708, -22453552, -92481384, -30144228, --24634858, -134018552, -94858112, -25123412, -105031816, -118967912, -7724499, -41801844, -120361088, -57508000, --54153096, -169387072, -160614064, -145444240, -262729584, -284023488, -236774560, -252527440, -272568832, -195046816, --166292000, -144168096, -104231880, -55759948, -24739012, -6111739, 22801444, 94352376, 128515624, 197865392, -322125216, 364261536, 402918944, 470593120, 459937312, 405423968, 345721792, 243185344, 106091064, 28623810, --21842056, -74117712, -87450368, -85623392, -86521040, -88280904, -81964080, -73420320, -79135312, -80620832, --75550088, -80783504, -88265872, -82670608, -77054400, -70557184, -50822348, -23611582, -5479842, 1469416, -2094870, 474057, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +6492380, 1704565, 5732708, 98784, -5909875, -4076461, -4303557, -669478, -2954401, 6932077, +-5181341, -1316944, -2350958, -828392, -4154844, 3998615, -2448668, -1918777, 3365644, 5577552, +6313602, 973884, -448287, 1314260, 338229, 892816, -2851322, -3071975, 1507534, -2784750, +-2786897, -3737695, -3927748, 1202054, -2599529, 3482682, -4335770, -587337, 1920924, 1825361, +1612223, -6729140, -1202591, -3730716, -643171, -1563368, -4099546, -79994, 4909685, 1496796, +2389076, 2260227, 2658585, 343061, 3333432, 2097555, 3719442, -2093797, 2486249, -1212255, +1720671, 203474, -3415036, 4013647, 4540854, -2420214, -3029563, 1345399, 4174708, 1001801, +1123671, -1385664, -261993, 2266669, 1423245, 373125, -812286, 285078, 1918777, 2330020, +-268435, -3613141, -2204392, -1211718, -1529545, 849330, -333397, -321586, 1734093, -1260573, +-411780, 537, 316217, -852014, -233539, 135828, -1359894, -150324, 1699733, -242129, +905701, -1213328, 718870, 366683, -69793, -795106, -10142565, -2664490, -4575214, 3356517, +-9508521, 2083059, -4191888, -2215130, 1347009, 186831, 1061394, 1419487, 1069984, 4123706, +-1836635, 428960, -419296, -5023501, 3698504, 6179921, -5034776, -4726612, 3586835, 919660, +4428648, 1401233, 5950141, -830002, 2003065, -3155190, -963146, 6066105, 481573, -3963181, +-4888210, -5280126, 220117, 4366908, 2215130, -32212, 4969814, 3961034, 152471, -4070019, +6356552, 1620276, 4901632, 4983236, -876173, 3173981, 3751117, -458488, 2215130, 2570538, +-2477123, 507880, -770410, 2442763, -5591511, -3580392, 1801202, -3461744, -1336809, 4789426, +-1942399, 2630668, -1125818, -7523709, 1266479, -38118, 3950833, -6196564, -3333432, 2798708, +706522, -597000, 1596654, -2921652, 847182, 743566, -894964, -1842004, 2532420, 2302103, +1592359, 288300, -954557, 611496, -707059, -1116155, 833761, 716186, -1511292, 1089311, +-845035, -642635, 1359894, -978179, -2011118, -30602, -750009, -246424, -952946, -1047435, +420907, -78383, 612570, -5369, 601295, -1482301, 430570, -431644, 6379100, 6734509, +2962991, 4981089, 3890167, 6744710, 7687455, -2860448, -825707, 2587181, -7681012, -258235, +-2532957, -1466731, 3515968, -4472672, -523986, 5681705, 1049583, 3641596, -1802813, -1318555, +-1915019, -7224135, -1184337, 489626, 3819300, -1163399, 6572911, 2588792, -1136556, 2626373, +1361505, 3376381, -2443837, -512175, 7675107, -1029182, 7250979, 3401614, -3183645, 759136, +6385006, 3322694, -4214437, 5819144, -1599339, 390842, 300648, -1178969, 1115081, 643171, +-5266704, 3354906, 2452426, -458488, 188442, -1179505, -4758287, 0, 2670396, -550293, +-563714, -3208341, -6995965, -2410014, 2600066, 5862631, -8920110, -4762582, 1664300, -3900367, +2281702, -189515, -44023, -5376226, -4075387, -2394981, -3488050, -1730872, 194884, 591632, +-1252520, 2010045, 1606855, 317291, 1480690, -1644973, -606664, 26307, -2405719, -540629, +235686, -3064996, 1277216, 719944, -586800, 71404, 634045, 1446867, 162672, 187368, +23085, -1504312, -190589, -470836, 1085553, 731755, 1486059, -1079111, 9400073, 10040560, +-2024540, -4172561, -4608500, 9628780, -8355322, 253940, -1381906, -3858491, -5297842, 1902671, +-1471563, -7159174, -8764955, 359167, -678605, -4540854, 1633161, 2451353, -3235184, -4816269, +-4539781, 6414534, -6913287, -804770, -8075076, 122407, 4467303, 1556926, 750009, -4489852, +-4363687, 3983045, -3069828, -4589173, 557272, -1651415, 2810519, 86436, 1126892, -4575214, +-1717450, -1269163, 4407174, 3061238, 3060701, -9087614, 1429150, 2571612, 2069637, 2600603, +-2612414, -1630477, 315143, 1879048, 3595961, -594316, 2372433, -2607582, 7030325, -12740484, +4477504, 395674, -6804839, -260382, 7503308, -2241436, -3531537, -6816113, -2318746, 564788, +-1910187, 24159, 3073586, 3952981, 3269007, -938450, -547608, -3996467, -827318, -1000191, +-2033667, 588947, -828929, -767189, 1633161, -2006287, -946503, 1997160, -985158, 1300301, +-303332, -781147, -710817, -512712, -2951716, -1813013, 1282048, 1476932, -1401770, -1102196, +-954020, 1115618, -697395, -393526, -1159104, 785979, 804770, -1351304, 551903, -168041, +-1256815, -271657, -711891, 836982, -417686, 1232119, 1705639, -4459787, -14147085, 2587718, +-6456410, 1421097, 1170379, -810138, 10019622, 562641, -6430640, 8577587, 4116726, 2949569, +-1302449, 1782411, -2624225, 6724845, -1130650, 770410, 10105521, 9884330, 4211753, 4529043, +4335233, 4922033, 3265786, -9759776, -3067681, -133681, -2586107, -8308078, -935229, -1969779, +-2216203, -4464082, -107374, -1311576, 7126962, -2296734, 12512313, -78920, 1033477, -2326799, +-1838783, 90194, -385473, -1009854, -2217277, -1476395, -6168647, 1487132, 979789, -742493, +-3202972, 4279398, 3149285, 3707094, -1333051, -2702608, 44560, 3227131, 3480534, -2837900, +-8053064, -4113505, 837519, 6673843, -954557, 5452461, -4374424, -6327561, 4681515, -2225867, +-5213017, 2990908, 3110093, -5829881, -4626754, -6414534, -2158221, -2225330, 3636764, -2024003, +1082869, -436476, 2412161, 1487669, 1319092, -1235340, -719944, -3356517, -1709397, -919660, +-78920, 1443646, -323196, 67646, 2725157, 1044751, -176631, -9127, 1735167, -1207423, +438624, 472446, -981400, 1029718, -876173, 662499, 506806, 743566, -548682, -2115272, +1962800, -3532611, 5196374, -6154152, -6729677, 3238942, -1927904, -563178, -3533148, -2019708, +3450469, 4904316, 2556579, -1102733, 751082, -552440, -1117765, -4620848, 1576790, -12507482, +-3628711, -3958886, 3476239, 4341138, 375273, 2175938, -7794829, 2173254, 1220845, 2164127, +-7024956, 13342853, -581431, 2514703, 1764695, -6244346, 1012002, -8971650, 5810554, -1877975, +-7525857, 1566589, 598611, -3740917, 432718, 869731, 5983427, 10772852, 4667019, -2127620, +3497177, 4450660, -9962177, -3626563, -4552129, 2821794, 2307471, -1617055, 1604170, 3519726, +2237678, 4520990, 8391829, 236760, -3092913, -817654, -335544, 6614787, -4706748, 66035, +3053722, 8905615, 52613, -5858336, -5736466, -471373, -7050189, -922344, 2695629, 10896332, +9366787, -1052804, -4949950, 4037269, 311385, 1202591, 1025423, -342524, 1382980, -348966, +-1361505, 1213865, 1569811, -1506460, 2194192, 2051384, 1981054, -545998, -1596654, 1285269, +1763084, -267362, 526134, -1340567, 217970, -281320, 2555506, 941135, 1595580, 1236951, +398895, 830002, -11274, 1003412, 2284923, 479963, 938450, 1631014, 2222109, -1065689, +-558346, 530428, 660888, 1673427, 2609730, -13028783, -3544422, -4843113, 5573794, 159988, +-2673617, -16741783, -2201708, -2273648, 6928319, 16506633, -4760971, 11076184, 1915555, -9822590, +-9991168, 1698123, 2543695, -5726265, 6269042, -4534412, 5052492, -6263673, 3015604, 2108292, +-5914170, -5018133, -3797288, 1928440, 6476274, -8477192, 316754, -8911520, -493384, -3412352, +2165737, 6441914, 682900, -2839510, -2478733, 6976101, -19864, 10653130, 3284576, -4065724, +-3876745, -3130494, 1531693, 6672232, -137439, 11083163, -19796042, -14634027, -11813308, -2767570, +-10075993, 620086, -3792456, 3550864, 8992051, 1581085, 3722126, 5732708, 9518184, 4860829, +1457068, -6598144, -16386911, -17302812, 9268539, 593779, 11765526, -8413841, -6032282, 5122822, +-12129525, 208306, -4332549, -489626, -7822746, 276489, 2610266, 7036230, 1277753, 1112933, +-2255395, 2517388, -516470, 812823, 1974074, 3170760, 4120484, -1146756, -1730335, 2972117, +1519345, -1169842, -2172717, 430034, -362388, -288837, -920197, 439160, 31675, -1203665, +-401043, 1207960, 2228551, 1765232, 1531156, 777389, -5024038, -2786360, -1921461, -1806034, +2699387, -437550, -832150, 5369, 769873, 181999, 7848516, 3428995, -6251862, -170725, +14944876, 12669617, -1170916, -10951093, -18478024, -2108292, -6486475, 6609955, -5537287, -5450851, +-20925080, -8978629, -18742164, 6917582, -612570, -4567161, 4995047, -656056, 115427, 1358283, +-6014565, 532039, -6908992, -1226750, 4201552, 3125663, -7046968, 2541547, 7199439, 11715597, +-1768990, -1636919, -3892851, 668404, 6086506, 8637179, -1234266, 1279363, -1855963, -1492501, +10293426, 7490423, 308701, 7726110, 2244121, -9458592, 1794760, -947040, 12251931, 4791573, +1551557, 5915244, 7953206, 2194192, -6978785, -11961484, -2752537, 2505040, 6431714, 3287798, +411780, 2516314, 9506373, 2101313, 3099893, 4383551, 2566780, -6092948, -6886443, -5984500, +-6802155, -6228240, 10568304, 1497870, 8164733, -7156490, -6313065, -1206349, 6826314, -4254165, +3642669, 2096481, 1098438, -3611531, -2289218, -3336116, -2278480, -3803731, 1531693, 1241782, +-1031329, 2517925, -1641751, 1191853, -656056, 285615, 1155883, -3365644, -2086817, -3377455, +-2182917, -4116726, -1175747, -3411815, -1628330, -1973538, -2594697, -160524, 3002719, 987306, +1258425, -1062468, -281320, -364535, -702764, 2341294, -1093069, 26212186, 5743982, -8078297, +4683662, -4700305, -15537044, -3135326, -15240691, -8339753, 7893613, 10533944, 4070019, 2194728, +897648, 1982664, 9982041, -7036230, 14120242, -9069360, -9274445, 11325292, 5015985, -18104360, +7965554, 4721780, 5779416, 12070469, 5927055, 9007620, -588411, 4937065, -2828773, 7715909, +2016487, 1747515, 5095979, -10120017, -5516349, -3011846, 6586869, 2991445, 2378338, 5361730, +1544578, 1998234, -9233643, 244276, 10050223, -1643899, 1266479, 1425929, 1326608, 12150999, +4655745, 16293495, 3761855, -2127083, 15372225, -13016435, -1670205, -1909113, -5217312, -1023276, +3262565, 15380278, 1511292, -3037616, -5850283, 3332895, -6153078, -2461553, -3938485, -8122320, +-1275605, 2427194, 13060996, -876710, -12495670, -3271155, -7474854, -3572876, 9142912, 7534983, +8570070, -6555194, 1472637, -7314866, -1068373, -2335925, -4468914, -2320356, -6153615, -3403225, +-1093069, -2435247, -8096550, -3002719, -2266669, -1433445, -1769527, -2635499, 445603, -1144609, +-6347962, -95563, -3009162, -1618666, -448824, 161598, 1229971, 27917, 2985539, 3073049, +591095, 747861, -1963337, -1564442, -378494, -1937030, 3062312, 2004139, 2884071, 2875481, +1239635, 3932580, 2553358, 1176821, 1828046, -248571, -1392643, 2864206, 3848828, -9395778, +-14583025, -5211943, -14358613, 10322954, -12256763, -8952859, -7234336, 6539625, 16345572, -16584479, +-5939403, -18695456, 5328444, 2654827, 1719061, -5342403, 1423782, 21133386, -11076184, -1813013, +7948374, 5495948, 4138738, 7460895, 4902169, -6898255, -11764452, -2150168, -6534256, -8809515, +-10865194, 213675, -2566780, 2705830, 13897977, 8865886, -7870528, -4189741, -918049, -4003983, +3370476, 26549340, -9041443, 18532248, 5749351, 3148211, -1255741, -2957622, 3083787, -10114111, +4815195, 14433238, 564251, 2338610, 11474542, 7515119, 4412542, -9673340, 8078297, -5752572, +-8699456, -23373748, -7414188, 15250355, -8695161, 3981972, -16524350, 11831561, -6249715, -6454799, +10257456, -16390669, -12190728, 18650896, -13309030, -12453795, 7425999, -8531416, 1692217, 67646, +5289789, -13438416, 4203163, 390842, 13405130, -9965935, 3304441, -1382980, -7634305, 10000294, +1989644, -8256538, -6041409, -5677410, 851477, 14496, -4199941, 147103, 5176510, -400506, +3663070, 4179540, 3269544, -7432978, 4132832, 3837553, 5978058, -118112, 427349, -5397700, +-2183454, -2640868, -2828773, 1286343, -637803, 3505767, -4949950, -3085397, 1853815, -4749697, +-4037269, 1730335, -10584947, -7891466, -1073742, 12032351, -5703180, 21150566, 19701014, 3858491, +6306086, -11460583, 1410897, -9285719, 14783277, -2986076, 4347581, -7093139, -4585415, 2487323, +1979443, -6817187, 11318313, -3242164, 2382633, 4191888, -7452842, 2771328, -9505299, -1611, +5359583, 6412923, 117038, 8490077, 10736881, -856309, -20221242, -3448859, -6015639, 14391899, +-12239046, -15204721, -10855530, -7290707, 2050847, -8644159, -6796786, -4381941, -1298154, 2595771, +-29641180, 18615462, 14501957, 21230560, -6832756, 3351685, 14206141, -13712220, -12707734, 2430952, +9255118, 6053757, -1676648, 2800856, -7547332, -8982924, -11445551, -3420405, 39268884, 3080565, +-21886616, -3987877, -12029667, 7415798, 5798206, -13611825, 2812667, -4245039, 1030255, -6770479, +8329552, 8480413, -1369558, -4460324, -5254893, -17241610, 5070746, 2653216, -785442, 6964290, +-3515968, 1015223, 2648921, -8248485, 3015067, 4734128, 11126113, 5842766, 597537, -9790378, +-34897, 8676371, 409633, -142808, 6484864, -9127, 2141578, 6347962, 5394479, -1161789, +2900177, 5340255, 4966056, -2592550, 2105071, 6434398, 7976828, 5807333, -304943, -4435091, +-1100049, 537, 4939213, -206695, -1591822, 143345, 1720671, -3383897, 1728188, 2939368, +-3244848, 1798518, -5686537, -11259794, -21733072, 1755568, -18155900, 8551280, 2927557, -14614163, +8242579, 9483288, 13219909, 3823058, 5224291, -15167140, -310311, -3025268, 14119168, 6571837, +616328, 13206488, 14709189, -1773822, -7057168, 1680406, 18139794, -11819213, -9372156, 9350144, +5097053, -12023224, -2682744, -11125576, 20745228, -17720498, 4901095, 11036992, -6703907, 10143639, +3630858, -5069135, -5412196, -5455682, -8485245, 11613055, 15625628, 3116536, -12050068, 1236414, +-13306882, -5068062, 8588324, -1655173, -6639483, -4855998, 2159832, -17663590, 471910, -1868311, +-10242423, 13763223, -13642964, -935766, -3205119, -10062035, 10558103, -863288, 6069326, -5128728, +-1139777, -625455, -6528887, 4931696, -6025839, -1122060, -5936719, 15915538, 6743636, -18949932, +-4268124, -31210454, 17885318, -73551, -14181982, 12584254, 1234803, 1846836, 4480188, 204011, +7091528, 8813810, 1853278, -2310156, 4721780, 9480067, -5577015, -3365107, 3702799, 1358283, +2184528, 2782065, 4658966, 6457484, -4387846, 3365644, 1881196, -5126044, -4848481, 4099010, +686658, -537408, -3593814, -3112778, -5760625, 5526549, 5531918, 958315, -3911105, -11769821, +71941, 1058710, 3649649, -7559680, 647466, 5975374, -3461207, 6914361, 2936684, -456877, +1729261, 3760781, 137976, 1367410, 1891396, 4622459, 19021336, 716723, -14482630, -6225555, +8553964, 13855028, 14849313, 533650, -3494493, 20877836, 9081171, 23204634, 2818572, 1967632, +-11189464, -4602058, -6641093, 6190122, 3344169, 12549894, -14399952, 971736, -8579197, 7697655, +-12486007, 4735202, 13787382, -2080912, -440771, -7218230, 1931662, -7265474, -24820616, 3401077, +-3839701, 1719061, -11104638, -2440615, 9651328, 18714784, -1973001, -6805913, 10865730, 5115306, +2626373, 12880070, 4458713, -6889665, -3318936, 8312373, -1173063, 7586523, -9090298, -8088497, +2779918, -7601555, -14565308, -6731288, -16585016, -3707094, 5565741, -13023415, -1883343, -14956687, +-6550362, -114890, 5870684, -17822504, 7785702, 1315871, -10605885, 13269838, -4737349, 3510599, +23527294, 26637388, 1709934, 9364639, 19481972, 23296440, 23125178, -2283849, -15418396, -23638964, +-8591545, -15673409, 14799384, -3190087, -6978785, 3784403, -379568, 1612223, -276489, -7008313, +7522099, 2120640, 2825015, 542240, 10170483, -5690832, -99321, -3125663, 7061463, -6548215, +-2773475, -697932, 10049687, -2619393, 6078990, 8274255, -7577396, -1629940, -3187940, -8603893, +-3451006, -1974611, 3741990, 294205, 11780022, 3187403, 7985955, -756451, -7530689, 2114735, +234613, 31835908, 36827196, 1775432, 11893301, 11099806, -1406602, -26541288, -559956, -1209033, +-9872519, 7294465, 7040525, -14515379, 7963943, 9909026, 1797444, -3973382, 5599027, -3817152, +18817326, -3355980, -8617852, -26844, 4370666, -1907502, -1110249, -482647, -29667486, 8454106, +-560493, -20723218, -8417599, 3415573, -1821066, -14166950, 4984310, -16693464, -1385127, 1486059, +-26452704, -4892505, 11509439, -8666170, 1348083, 16618302, 10379325, 12681428, 4099546, -7354595, +-12298102, 12621835, -6475737, 7013145, -11679090, -6289443, 8575976, 14194867, 2210298, 17030620, +-11392401, 14717242, -12452721, -15259482, -10695542, 14669461, 15602006, -14433774, 7521562, -39634496, +-3492882, 11489574, 3790846, -6323266, -15627775, 7129646, -22135724, 3469797, -11353209, 10432476, +-17064978, -11087458, 17361868, 270046, 8792335, 1841467, 7682623, -3994857, 3253438, -2069101, +-12745852, -2447058, -5869610, 3894462, -4013110, 2175401, 657667, 2029372, 1182190, -2951180, +-3765613, 432718, -8002598, 2797098, 2471754, 4571456, -5066451, 4539781, 4490389, 2742874, +3888019, 2630668, -5444408, 484258, 2897492, -4253628, 7671886, -785979, -2729452, -4396973, +139586, 560493, 3751654, -2838437, 3570729, -2745558, 8074002, 3358128, -6456410, -1838246, +-1460289, -3241090, -2604361, -28981902, 2132988, 35885524, -24260660, -2269890, -2106682, 1917166, +-9600863, 4592394, -15306190, -15658914, -5173825, -4269735, 3784403, -3932043, 8159901, -11735998, +383863, 23087596, -18918794, -16681653, -4053912, 20204600, 2815351, -25275346, 10757819, -9372156, +-10824391, 2523830, 34748432, -19543174, -10910828, 24753508, 18315888, 1604707, -10244034, 689879, +-3817152, -7847442, 7067906, 6473590, -4226248, -20040318, 25672630, 12074764, 4846871, -27285390, +-4194036, 8490613, 9430138, -3384971, 14338748, -2306934, 4866198, -6248641, -16457241, 10724533, +-11747272, 7047505, 3635153, -14399415, 27199492, 4195110, 19583978, 19659676, 3491809, -29554744, +-5684926, 288300, -11753178, -5947993, 1108638, -936303, 12831752, 24142548, -6982543, -2355253, +-10657424, -4752382, 10023380, -6764037, 5823439, 17950816, -15693810, 17842368, -3507378, 5365488, +-6784975, -3634079, -5695664, 774705, 3330210, 3940096, -2985002, 99858, 4071629, 2321430, +9430674, 4427038, -4759361, 405874, 860604, 8603893, -4766340, 2504503, 3974992, 1342714, +-335007, 304943, -11218991, 5514738, -4129074, 5399311, 7040525, 946503, -1136556, 3581466, +-367220, 2741800, 933082, -1167694, -4142496, -4214437, 8367133, 1431298, -1955821, 2349347, +-5204964, -979253, 8530879, 11190537, 1545115, -10300405, -51554640, 3386582, -13435195, 1777580, +25844966, 2466385, -4955856, 4704600, 1023813, -17515414, -18874770, -17029546, -16316581, 21271362, +-4229469, 25389162, 2286533, -23987392, -809601, 2645163, 20584168, 4045859, -3285650, -4085588, +5906117, -12917114, -4911832, 22726282, -4596152, -29515016, -22505092, 13471165, -2891050, -6135361, +6824703, -2118493, -15163919, 4584341, 8973797, 20463372, -4079682, -16988206, 277562, -21425982, +8289824, 24255290, -3835943, -29769492, 9419937, -340913, 1723893, 7175817, -9327058, 18321794, +1425929, -12359842, 9663676, -6691559, -4084514, 26181046, -13357885, -4502200, -4348655, 16496433, +6682969, -28956132, 14746770, -23333484, -5513128, -12588012, 3065533, -7675644, -7020124, -2405719, +13356275, -4318053, -8138963, 15744813, -9119826, 16163573, -26844, -8528194, -5077725, 4028679, +4507568, 3212099, -9651328, -3202435, 2448668, -530965, -6291054, 156229, 6056978, 9240085, +3908420, 4763119, 818728, 9086540, -5066988, 2966749, 7237557, -2699924, 968515, 2950106, +-1723893, 1459752, 2910377, -8853001, 7575786, 3232500, -8866960, -7290707, 591632, -10475425, +988916, -7706245, 10108742, -18097918, 34897, -3788698, 1985886, -4667019, 5738613, -2962991, +2713883, 2098629, -25188372, 5157182, 41580116, 27087822, 12387223, -20632486, 15458124, 19551228, +28922846, 13972602, 3415573, 1029182, 18118856, 31284004, -7062537, -3808562, 17712446, -35019016, +12742631, 31251256, -6481643, -10817949, 8108899, 24267638, 19538344, -13056701, -22383222, -1307281, +11257109, -3782793, 2711198, 372052, 26249766, -14976551, 16816408, 25409564, -10163503, -3053722, +17927730, -2667175, 62862216, -26339424, 11319923, 43051140, -24775518, 8147016, 2881923, -34854196, +-1079647, 6544994, -15380278, 34155728, 2585570, -4648229, 2658585, -14150843, 46786152, 12947716, +-37491308, 36229660, -15117211, 1394791, 11108396, 13494250, 24017994, 11767137, -6479495, -23376970, +-31523986, -11770895, -12631499, -2097018, -9667971, 19896972, -12048457, -20826834, 2350421, 5852967, +4268661, 7694434, -11818139, -11446625, -6984691, -7539815, -24842090, -10415296, -8446590, -17077326, +-8235600, 6241661, -7283191, -16002511, -750546, 6360847, 10835666, -2442763, 5110474, 11885248, +-653372, -7885023, -471373, -4735739, 6582038, 9511205, -13146895, 11711302, -6797860, 270583, +1768453, -5983963, 12205223, 4834523, -17074106, 10669773, 1628866, -5933498, 12664785, -14224932, +5799817, -2534568, 6208912, -3267396, -3962644, 2566243, -2315524, -1284195, 4482335, -2418604, +-9765145, 4739497, -873489, 3188476, -390842, 8412230, 10298258, -48389248, 28187870, 1261110, +17042968, 28054190, -46380816, 10584410, 23885386, 5386963, 17825188, -17889076, 19622094, 5695664, +-18176302, 244276, -11451993, -33996276, 18654654, 10555419, 31073552, -17213156, -22744536, -7987029, +7298760, -4764730, -38502236, -19044422, 11853573, -2913062, 5776194, -16298327, -5024575, 12771085, +-10843719, -5466957, -16427713, -3898220, 6006512, -18269180, 1939178, -39844412, -32726040, 10066330, +-34041912, 2907693, -35615480, -25041270, -17169668, 16702591, 33290292, 40888088, -9666898, 18131204, +22231824, 10678899, 9657771, -15968688, 45629196, 46405512, -31554050, 31601832, -24815784, 15860240, +32753420, 30988726, 37948720, 45122928, 32112396, -36063768, -25489020, -355409, 960999, 13517336, +-8501351, -7004555, -21487722, -12038256, -31907312, 6937983, 26929444, -10935524, 6662031, 27944130, +13294534, -19289772, 21626770, -1416802, 7706245, -2197950, -3712462, 6127308, -6680822, 9443559, +8151311, -7242389, -8548596, 8136816, -5790153, 197569, 367757, -771484, 2463164, 720481, +-11411728, 10636487, -4774393, 5035313, 6286759, -4377109, 6764037, -8330089, -5909875, 5357972, +-6478422, -8601746, -3627637, 3279208, -3199751, 1999844, -7555921, 164283, 2966212, 6969658, +10746008, -2629057, 6117107, -7133941, 148176, -1418950, 3359738, 2330557, -486405, -5550172, +59872916, -43826384, -22296248, 23605678, -14051522, 22549116, -17580374, -19614578, 6621766, -46351824, +-2098092, 31156766, -7524246, 16010564, -26585848, -6540699, -10499048, 1049583, 33238216, 10045929, +7384123, -5940477, 18242874, 5862631, 45413372, 11164767, 26511222, 1879585, -20739324, -19616190, +26422638, -12861280, 12215424, -265751, -34114924, 24581172, -30397094, 59008020, -44004088, 26845156, +24035174, -25272662, -21241834, -15696495, 21785148, -1678795, 22798224, -302795, 2962454, -40373228, +-21701932, 9373229, -19852412, 6549825, -12113418, 11834782, 6714645, 30974768, -18438832, -6366216, +-7875897, -15217606, 42003168, 7755101, 3933653, -39165808, -12701292, 21024938, 12400644, 13380434, +36375152, 23267448, 32162326, 37119256, -1112397, 16420197, -15480673, 49381388, 3688840, -8191577, +17975512, -4257387, 37888592, 651224, -7670275, -7871065, 4508105, 26625040, -20262582, 13734232, +-6476274, -2233383, 7872138, 5255966, 10337986, -6568079, 6713571, 12396886, -3315178, -4792110, +8381092, -1432909, -1372779, -1013075, 2212982, 1310502, 4000225, -9122511, 11803107, -7066832, +-3934727, -1996623, 7187091, -10326712, 964220, -7418483, 9844065, 17871896, -6090801, -5068599, +-2471754, 12234751, 5980205, 12779675, -1127966, -7602092, 5797669, 6072547, -1946157, 6009733, +4682588, -17632988, 2605972, 19901804, -2794950, -90372552, 62827856, -38934952, -27227946, 699006, +12917114, 16255377, 2952790, -14426258, 48926656, 24847996, 6867116, -24415816, 16079821, -767189, +18277234, -23302882, -16105590, 12582644, 36602784, -41836740, 1767916, 13668197, 4512400, -10227928, +-6140730, -5187784, 1744831, -2033130, 9529459, 46183248, 3036005, -20723754, 31061740, -7129109, +-29888678, -38544648, 36886252, 12153147, -5039071, 13828184, 8587250, 30749282, -41489920, -4281009, +-21061982, -5879810, 23841900, -17388176, 9341017, -20066624, 9831717, 63661616, 4889284, -36219996, +-40731324, -2376728, 19520626, 19225884, -16280610, 4101694, 30993558, -12826920, -59771988, 34280820, +-20561082, -33881924, 15017353, 56917980, -39143260, 28763396, 39644160, 13812615, -34206192, -28436442, +-17549236, 14451491, 12444131, -11654931, 35587564, 17534204, -2160369, -812286, 2202781, -29438780, +-11257109, -20764020, 10873783, 9816685, 7120519, 9924596, 7341710, 22114250, -10866804, -5063230, +4250407, 368830, -16818018, 14876156, -587337, 9452686, -4166655, 7215545, -10816875, -2981244, +-6506876, 10641855, 1994476, 2501282, 331249, 6592238, 16075526, -5916855, -30582314, 2959769, +-15087683, -2482491, 9171903, -12463458, -8405788, 17911624, -16258062, -3084324, 141197, 8915815, +-17415018, 1831267, 52217140, 16742319, 3774740, -4136591, 8558259, 14265734, -4318053, 6478422, +-7524783, -405874, -5877663, 24035174, -27014270, -3403225, 16677895, -38312720, 12621298, -9599789, +3190624, -4776541, -10304163, 6460705, -2610266, -15797963, 41941428, -32089848, -8613557, 29220810, +-18617610, -3223373, -5653251, 6176700, 29553134, 1951526, -28200756, 38769596, -20803210, 13608604, +24676198, 10533944, -8785356, 1839857, -21163452, 4932233, -12695923, -10545755, 52665964, -12481712, +-20564304, 6506339, -9440875, 12120398, -7831873, 13339632, 33995204, -18838800, 11457362, 25425132, +-29952028, 13549548, 16768626, 7220914, 20911122, -23798950, -5885716, 35683664, -24538222, -5787469, +10581726, -10384694, 34644816, -34427384, 6103686, 11985106, -15458661, 11649562, 13430363, -32801738, +11870216, 27377196, 5906, -8646306, -1000727, 17497160, -3374234, -30822832, 25107306, 11441256, +-13094282, 4761508, -7076496, 10678899, -3979824, -13975287, 16386911, 571768, -3183108, -12192338, +11485279, 1798518, -15500000, 5331128, 10922102, -2513630, -4854924, 1993402, 10124312, -1772748, +-9852655, 10084583, 7139847, 950262, -184684, 8380555, 2008434, 2733210, -11763915, 15057082, +-8130373, 16080894, -29304024, -78957072, -124177704, 11333882, 118946968, 9832254, 269277792, 278022368, +138430016, 291076928, 194143264, -40121436, -4071092, -63851668, -233445968, -204847936, -126589328, -238421152, +-186597536, -54069880, -116843512, -97733592, 34941168, 58971512, -28166396, 15653545, 52679384, -40058088, +-23347442, 74197168, 65900904, 7896834, 73643120, 125495184, 42152956, 90908352, 171538304, 82629800, +43786116, 153811904, 128603672, 17562658, 92493728, 180210928, 36024576, 42825120, 145635360, 63077500, +-15236396, 103179608, 97373352, -8501888, 86041080, 110995376, -1336809, -80329312, -37193344, -189463888, +-313381760, -278604320, -297155904, -454059648, -407854400, -381576160, -464255904, -451000032, -369962048, -333497760, +-300032992, -173482848, -66462472, 59311888, 125695976, 240323280, 358060160, 390899456, 435348608, 567958976, +560492160, 441139328, 482507904, 426700704, 176867824, 192731824, 163821856, -6374805, -26262114, 47860968, +-6117107, -72679440, 9965935, 49776524, -47006808, -18303540, 44027708, -22453552, -92481384, -30144228, +-24634858, -134018552, -94858112, -25123412, -105031816, -118967912, -7724499, -41801844, -120361088, -57508000, +-54153096, -169387072, -160614064, -145444240, -262729584, -284023488, -236774560, -252527440, -272568832, -195046816, +-166292000, -144168096, -104231880, -55759948, -24739012, -6111739, 22801444, 94352376, 128515624, 197865392, +322125216, 364261536, 402918944, 470593120, 459937312, 405423968, 345721792, 243185344, 106091064, 28623810, +-21842056, -74117712, -87450368, -85623392, -86521040, -88280904, -81964080, -73420320, -79135312, -80620832, +-75550088, -80783504, -88265872, -82670608, -77054400, -70557184, -50822348, -23611582, -5479842, 1469416, +2094870, 474057, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 1627256, -6451578, -3213709, 1780801, -667331, 367220, 302258, -2611877, -2961380, 1931125, -542240, --2381559, -3036542, -1876364, 2673617, -286152, 3588982, 747324, -4556424, -4711579, -3341485, -1365263, 1162326, 2431488, -365609, 2783676, -2135136, -402653, -4927401, -765578, -919660, -1008780, 1852742, 1851668, 3637837, -1819992, -2436857, 1960116, 1110249, -2383707, -2423435, -104690, 1692217, 802085, 4039417, -1546725, -1280974, 4569309, 1399623, 8574365, 3648575, --2420214, -82678, -5295695, 98784, -6034966, -397284, -2265059, 4161823, 427349, 2233920, -3036542, 1649804, 2910914, 1944547, 402653, -5053566, -574452, -2532957, 3471407, 5085778, --3579855, -2539400, -1546725, -2058900, -2705293, -4332549, -996969, 1299228, -2566780, -2111513, --912681, -3561602, 400506, -716186, -2417530, 768262, 115427, -13959, -1196685, 212601, -210990, 1324461, -380641, 854699, -452582, 618475, -184684, -799938, 205622, 1040993, -163209, -933082, -973347, -98247, 1760937, 411780, -356482, 286152, -534187, -10131828, --10831371, -860604, -3106335, 417149, -2350421, -638340, 6026913, -1077500, 3240016, -1489280, --2896956, -4003983, 735513, -827855, -4782446, 5513128, 1656247, 379031, 2938831, 2804077, -4545686, 3202435, -301721, -3382287, 3157875, 736050, -4559645, -2014340, -2056216, -1365800, -4075924, -1395864, -6953552, -2354716, -795106, 1452236, -2161442, -4524211, 147640, -441308, -5255966, 779000, -42413, 1920387, -120796, 7092065, -1223529, 652835, -1567663, -2813741, -2684, 3045669, 1377074, 831076, 2878165, -2640331, -4400194, -3147137, -633508, 579284, --1026497, 126165, -3302830, -731218, 1730872, -1053341, 3445101, 1797981, -194347, 639413, --3230352, -2750927, 5346161, 1214939, 2277407, 1551020, -950262, -314069, -4060355, 286689, --2319819, 996969, -790811, 1034013, 1102196, 3143916, -326418, -1098975, 185757, 673773, -421444, 112743, 111669, -947040, -744640, 381715, -341450, -816044, 1278290, -646393, -657130, 972273, -919660, -274341, 736050, -277562, 1319092, -792958, 655519, -631897, --458488, -1647657, 1516660, 7004555, -387621, 3594351, 2110977, 4793184, 5873368, -1335198, -477815, 3622268, 3569655, 2395518, 6719477, 1369021, -2206540, 297963, 5877126, 2076617, -2770254, 5108864, 6852621, 4533875, -1569274, -4698158, 3296924, 2260764, -2734821, -4538170, -230318, -2648921, 1192390, 1742683, -1677722, -2263985, 2262374, 1807108, 4031364, -2710661, --5551245, -2771865, -2418604, -3684545, -1306744, -4209068, 2491081, -5762236, 2443300, 490700, -1298154, -2563022, 5466957, 4195646, -3928821, 4833986, 1778117, -716723, 1551557, -3506304, --1162862, 3304441, 1131187, 1383516, 820876, 3946538, 1553704, 4879620, -2444373, -296890, --366146, 1892470, 2777233, -1129576, 1830193, -2565706, 1244467, 1712081, 1489817, 5353677, -144955, 3994320, 4425427, 2511482, -4135517, -787053, -692027, -1071058, 307627, 2266132, --998580, 67109, -226560, 256087, 766115, -670015, 909996, 1560684, -1153736, -588411, -1428614, 48318, -45634, -79994, -908386, 367757, -472983, 118112, 1090922, 1879048, -19864, -260382, 888521, 723702, 236223, 432181, 300648, 456877, -133681, -266288, -773631, 1016834, -1009854, 532039, -405338, 19370302, 161598, 17151416, 1381369, 10863046, --2330557, -1870458, 2977486, -8108899, 8868571, -5040681, 5951751, 4385162, -3237869, 2588255, --229781, 328565, -1489817, 2465311, 3513283, 4343286, 7173133, 1744831, 2298344, -281857, -8435853, -9675488, 250719, -744103, 2337536, 4100083, -5071283, 1941862, 2315524, 1175747, -3387656, 1816234, -3907347, 1862942, 7557532, -1422171, 2327872, -1282585, -1149978, -372588, --5389110, 8331700, -105227, 797253, 6265821, -893890, 507880, 7722888, -11331197, 3096672, --185220, 3375844, 9220758, 2719251, 2251637, 3160022, -965831, -2597918, -1707786, 2217277, -871878, 4904316, -1751273, 4023848, 1927367, -1418950, 869731, -3281355, -2067490, 392453, --912681, -4517769, -2806224, -4621922, 2753074, 4002910, -1047972, 1202054, -905701, -3090766, --82678, 1627256, 1735704, -5509906, -176094, 457951, -787590, 256087, -1071058, 58519, --1153736, -2682207, 5369, -1793686, -1343788, -2226404, 154619, -2178622, -598074, -2114735, --1506997, -119185, -682363, -1150514, -52076, 224949, 1065689, -1157494, -7730405, -9527311, --3762928, -1442035, -3550327, 7602092, 3266860, -6092411, 6789807, -963683, -4930086, 1461363, -2964064, -2767570, -4504884, -4084514, -8576513, -4351339, 3720516, -5461051, -8709120, 2442226, -3541201, 683974, -3196530, 6517076, 819802, 6024229, -366683, -1410897, 3463891, 5705327, --8130910, -3900904, 2231773, -1848447, 2007897, -5349382, -375273, 1410897, 1941862, -4570919, --8257612, -2355790, 2426657, -1428077, -1029182, 473520, 2687039, -848256, 1497870, -2818036, -4810900, -6328098, -4694400, -1679332, -4598300, -1416266, -1232119, 1803886, -3369402, 2522220, -5223217, -486942, 1238561, 1367410, 2514703, 5049808, -1918240, -1014686, -948114, -2149631, -5311801, -2193655, -9204652, -5929203, -3878892, 8818642, 172336, 5040681, 2350958, 726386, -1392643, -657130, -178241, 4220879, -1396938, -1017907, 1402307, -794032, 708133, -1957968, --1136556, 929324, -235686, 1026497, -252329, 584652, 1623498, 1097364, 1519345, -41876, -1065689, -284005, 1556926, 1628330, 2757369, 1656247, 2194192, 459562, 1473174, 1189706, -923418, 1239635, 1823214, -870268, 166430, -408559, -739271, 686121, 1088774, -2210835, --8369818, -19458886, -1811403, 1348083, 212601, -6308770, -2788508, -7159711, -1839857, -8444443, --9666898, -7558606, -1745904, -5006858, -10894185, -6820945, 2265595, 3374234, -3002719, 6560026, -3638911, -2425583, 8099235, 1733556, 679679, 1301912, -11060078, -405338, 1855426, 4170950, --3468186, -3081639, 6609418, 12836584, -9589051, 3456912, -2811593, -493921, -8449274, -743566, --82678, -4313758, -5461588, -3974455, -4643934, -2477659, 2784213, 9426379, -4387846, 3537443, -6382859, 5767604, -1931125, 656056, -2048163, -1825898, -8672613, -4296578, 4939213, -3128347, -1083942, -2986076, 2498060, 1323387, -942745, -323196, -4037806, -3337190, 778463, -1200980, -1801202, -10274099, -10858214, -1162862, -1573032, -4664335, -6979, 3458523, -5328444, -4105989, --4540318, -7903277, 5614059, -563714, -1166084, 2159295, -289373, 1939178, 3712462, 1293322, -2072859, 1185948, 2734284, -798327, 510027, 454193, 642635, 913217, -682363, -657130, -177167, 854699, 1075352, -650688, 886911, -954020, -1832877, 1032940, 760746, -713501, -2458332, 1124745, 191663, 963146, -1443646, -1566053, -387621, -817118, -633508, -12083890, --2380486, -14550812, -3263638, -10307922, -1232119, 1946157, 2623688, 11195369, -6984154, 2507724, -3020436, -6067178, -2742337, 9009768, 954020, -2624225, 1130113, -7409356, 6727530, -9495636, --3139621, 4243965, 2635499, -981937, 1621887, -1869385, 3111704, -4047470, -7138773, 494458, -3452617, 2834679, -5709086, 1590749, 6414534, -6589017, -8363375, 6673843, -5703717, 4360466, --4105452, 2436857, -170188, -5925445, -7723425, -4746476, 2102387, -299574, 2883534, -4024921, --3936338, -9848360, 5137855, -7056632, -3232500, 3847217, 8746701, -1125818, -1817845, -12894566, --10168872, -3379603, -3626026, 4861903, -1377074, -7550016, -1213865, 408559, -4207458, -1024350, --9032316, 6026376, 2335925, 7597261, 9264244, 4893579, 376883, 4045859, 8263517, -678605, --1909650, -556198, -2531883, -8208220, 454193, 616865, 1766305, 4413079, -1794760, 983011, --8590, -3222836, -1755031, 3015604, 2886755, 2745558, -2110440, 835371, 1133871, 1054415, -1007170, 1214402, 391916, 2298344, 2267206, 1557463, -466004, 1065689, -394600, 915902, -1634772, 593779, 656056, 51540, -571768, -500901, -38118, -1415192, -667867, 7177427, -3761855, 20844014, 10084046, 13503914, -4178466, -513785, -225486, -20558398, 1077500, 8884140, --4076461, -1584843, 703838, 12976170, -2200097, 7522635, -1541893, 7204808, 3948149, 8895414, -12484396, 1617592, 8333847, -2571612, 7211787, -966905, 13360033, 7121593, -230318, 7614977, -6134824, -2241973, 5855651, 3537443, 5055177, -3992709, -3216931, -10794327, -668941, 7665980, -1465658, 981937, -2522757, -4034048, -3234110, -3556233, 18799608, -12091944, 4785668, 5719823, -3230352, 1630477, -7232188, -9599252, -2469069, -1427540, -458488, -16636019, -8267812, -8551280, -393526, -391916, 4930623, -545461, 4377646, 5897527, 10638097, 1956358, -2763812, 3583077, --6728603, 1832340, -4941897, 1789391, 4100620, 2327336, 6764574, -4590247, -5236102, 24410984, -3317862, 4423280, 3062312, 8278550, -5895380, -3044595, 5186173, -618475, -175557, 946503, -1682554, 4771172, -2412698, -381715, 864899, 2738042, 589484, -2543695, 4594542, 151934, --1138703, 84289, -583042, -2505577, -2373506, -1113470, -2636036, -32212, -1065689, 1101122, -3267933, -336618, -382252, -3686693, -828929, 1776506, -464930, 186294, 274341, 2845416, --1557463, -466541, 859530, 1049583, -3259880, 31934156, 3443490, 4751308, 3615826, -2004139, --12931073, 8730058, 9251896, -5184563, 4067871, 4141959, -7735773, -1098975, 7636452, 4356708, --13642427, 3469797, -3661997, -7016366, -73551, 4008815, 1182190, -140123, -156229, 5902359, --1741609, 3326452, -10578504, 4279935, -981937, 4203163, 2537789, -1949915, 7742216, -10390600, --4345970, -10260677, 9063992, 4230006, 14705431, 7208029, 96100, 3133716, -11668352, -97711, -3599720, 3771518, 3750580, 792421, 2238752, -3122978, 3526705, 10470057, 14256070, 6104223, --6247567, -3531537, -1277753, -2779381, 5421860, 7129109, -4759898, 4220342, 8058970, 2423972, --10671920, -21437792, -10392747, 4311074, 9585830, -4035659, 3023657, -804770, -1757715, -68719, -10009958, 1802813, -7853348, 13258027, 6230387, -15355582, 955093, -1839320, -4693326, -1713692, --2078764, -1074, 5589363, 2250563, -3873524, -2189360, 3428458, 5739687, -2263985, 4371203, -1416802, -3554086, -625455, 588947, 448287, -648003, 620623, -1748589, -974421, 1298154, -687195, -1546188, -1359894, 133681, -748935, -2580739, 1976759, -874563, -1009317, 783295, -3093450, -2885681, -4261145, 12885, -293132, -6749541, -783295, 1750199, 397821, -4048007, --77846, -1455457, 1737314, 1032940, 2574296, 1761474, -19536196, 5826660, 9364102, -10545755, -6846178, 11384885, -27827630, 5965710, 1265942, 6063420, -10331007, 15700253, -21937620, -254477, --1496796, -1864553, -2176475, -6471442, -8239895, -1428614, 7974681, 745177, 304943, -4264366, -5641440, -932008, -2629057, 4123169, 9829033, -6522445, 7116761, -1342714, 4360466, 2072322, -6694244, 10049150, -2235531, 2595771, -12996034, -6627672, -2597918, -5027259, -11822971, 1219234, --4232154, -7829189, 11576547, -10806138, -3460670, -5130876, -5683853, 7764227, -8764418, 4913980, --2979097, 7980049, -4110821, 8745627, -11493869, -3371549, 1646046, 10604811, -18638010, -7151658, -855235, -75162, -3177739, 7407208, -9579388, -19187230, 4320737, -16859894, 8686034, -6084358, -237834, -17625472, -6673843, 18800682, 10881300, -14329622, -11703786, -10184978, 786516, 5616207, --2282238, -6486475, 12492986, 4264903, -1960116, -2808909, -4413079, -1097364, 5029407, -4651450, -5393405, -758599, -3379066, 502511, -2530810, 1741609, 4595078, -2772938, 2159295, 3040837, -2494839, -558346, 5311801, -5015985, 5029944, -1541893, 4454418, -5811091, -2684892, 645856, -605590, 5632313, 2201708, 3303904, -1727114, -3547106, 2173790, -6643778, -379031, -14475114, --6213744, 18236432, 767189, -15037754, 14155138, -6626061, 937377, -15680926, 2406792, 6220187, --13841069, -3376918, -12371116, -85362, 779537, -4165582, -3441343, 12073690, 1848447, -8175470, -2041183, -17518634, 10519449, 16696148, -5409512, 6973417, 11832098, -883153, -2429878, 1458141, -1427003, 6938520, 1172526, 1604707, 3630858, -9793599, -717260, -11258720, -11516418, -4719096, -4824322, 6831683, -372588, -13546327, 2658048, 3551938, 6653978, 14482630, -14861124, 21734146, --18035104, 794032, -3642669, -3125663, -8727374, -16727287, -22575422, -8754754, -2594160, 5744519, --1722819, 932545, 3309809, -169114, 15881178, 7513509, -16314970, -2549600, -343597, 10398653, --11279658, 745714, -22721988, 4247723, 17732846, -15868294, -6238440, 2238752, -184147, 4429722, -24852828, 363462, -3292629, 1284732, 12647068, -8606041, 3377992, 4617090, -1891396, -930934, --179852, -346282, 5622112, -1856500, -1307818, -4892505, 8192113, -1793149, 2401424, 810138, -1430224, 2033130, 5952288, -4171487, -1082869, 6305549, -4604742, -6487548, 5319317, 238371, -2587718, 3576634, 2011118, 6519761, -5106179, 3021510, 3597572, -2289218, 9235790, 3150896, -5641977, 2048163, -5595269, -2064269, -966905, -999654, -1010391, -9310415, -18886044, 22574348, -9644886, -11063299, 14656039, 14664092, 20829518, -7683697, -7190849, 15202037, -2234994, -3010235, -5301601, 6758131, 2700998, 3231426, -20717312, -2202781, 66572, 170725, 1149441, -2346126, -8792335, 17037598, 1731946, 1161252, -283468, 810675, 15703474, 4165045, -1098975, -3433290, -4026532, 3466576, -2455111, 1795296, -8949638, -1876901, 13656922, -13553843, -6577206, -11690364, -15258408, -13985487, 7012071, -5732708, 4493073, -3048353, 3624416, -11241003, 2576981, 16938814, --11151346, 874026, -29584808, -1329829, -10451803, 785979, -27614492, -1238024, -1360968, -8535711, --5935645, 22523882, -24197308, 4016331, -6545530, -9048422, 6501507, -8209293, -18906446, -13280576, -1824824, 972273, 3890704, -9390946, -12737262, 7218767, 597537, 1386738, 8460012, -14141717, -10557566, -10297184, -4838281, -4446902, 2492155, 329639, 2994129, -1861868, -3628711, 840740, --2078227, 2930778, 6552510, 3792456, 2388539, 1814624, 1744294, 1695975, -751619, 7110319, -1310502, -1429150, 5294084, 5431523, 1999844, -3110630, -365072, -4511327, 7075422, 2465311, -5674189, -2881386, 5821828, 5176510, 7638600, 3714073, -2258616, -4110284, 6401112, 1232656, -5521718, 1184337, 1419487, 1384590, 1574106, 18934900, 6665789, -2500745, 4099010, -9484898, --9987410, -8194261, 18454400, -16483011, -20480552, 9823127, -19053548, 7082401, 762357, 5208722, --8501351, -2048163, -10352482, -4393752, -7983271, 3871913, 9516037, 6554120, -15372225, 17921824, -2207076, 6269042, 1672353, 8636105, -1816771, 8296266, 2071785, -3688840, 5328981, 1938641, -7050189, 4834523, -11651709, 4705674, -3386582, 3307125, -2340220, -4349192, -3575024, -8198019, -7691750, 8198019, 8606041, -1593970, 15709380, 18726058, 7533910, 2458332, 8540542, 19408958, -9621800, 21172042, 13642964, 15783468, -16914118, -17068200, 3516505, -3462818, -4552129, 1333051, --8501888, 7099581, 5352603, 3337727, 16161962, -3787624, -10386305, -8739722, -7669738, 1874753, --3636227, -34615824, -15017890, -13474923, -4855461, -6999186, -3595425, -5254356, -9787157, 357019, --5866926, -5662915, 2336999, -5681705, -1741609, -8732205, 558883, 448824, -1332514, -12441983, -5182952, -43487, 648540, -9362492, 2886218, 3313031, 3670587, 1010928, 10924786, -7030325, --2604898, 2203855, 1266479, -806380, 4556424, -4984310, -4133369, -921807, 7789997, -808528, -5695664, 6361921, -1271847, -8043400, -7084549, -892279, 8137353, 595390, -5642514, 788127, --1152662, -3939022, -2806761, -1271847, 576599, -6024229, -4969277, 15397458, 10457708, -33719788, --24904904, -7755101, -325344, 11113765, -4636954, -790811, -26848378, 3801583, -14069776, 10042707, --1969243, 13305272, -11425687, -2835752, -13557601, 2353105, 11004780, -5276368, 3183108, -7740605, -536871, -18116708, -5076652, -865973, 1246077, 13448616, 17425756, 617938, -16125455, -11287711, --5262946, 1660005, -4321811, 5123359, -18535468, -5715528, -2618856, -4776541, -10459856, -2415919, --4877472, 12581570, 18131742, 12320651, 4387846, 7535520, 7530689, -8770323, 30346092, 18496276, --24145770, -20752746, 22252762, -17571784, -10292889, 3481071, 2336999, -17054242, 16409996, 1111860, --51740936, 13845901, 32219770, -22373558, 22145926, 29894046, -10120017, -3055869, 15768436, -18604724, --12537010, 6260989, -10348187, -11621108, 13332652, -22580254, -7085623, 2944737, 308164, 1323387, --2398202, 8326868, -6146098, 3580392, 991601, -5973763, 11740293, 6150393, -629213, -7604240, -8997420, -5770289, 6885370, -6145562, 8426189, 927176, 1547262, 8812199, -7063074, -7621957, -2050310, -7031399, -4602595, -315680, 493384, -4678830, -8723615, 4024384, -20127828, -537, -8876087, -7326678, 5113159, -2243584, 2428804, -8318815, -82678, 4556961, -4181151, 2983392, -17542258, -7943005, -7765838, 17537426, -12981539, -2133525, 14445586, -10521059, -6655052, 11059004, -6828998, 7252589, -1789391, -10857140, -8667781, 10208064, -8152385, -775778, 3042448, -15352897, -9979893, 8121783, -6207302, -5050882, -11969537, 289373, -7406134, 10311143, -16807818, 1243393, -6440304, -933082, -7998303, -17460652, -3923453, -7621420, -1699196, -13524315, 18379238, -17999672, -3138011, -6575595, 4616553, -25475598, 26200374, 4932233, 2611877, -10539313, 5966247, 4216048, -1136019, 2328409, -4691715, -20120848, -3489661, -8745090, -12881144, -17299054, -6236830, -4409321, --17141752, -6621229, -820339, 11768210, 5433134, -15575162, -13575318, 8279087, -3585761, -19756312, --8521752, 4762045, 16168941, 16025060, 16334297, 26052734, -5062693, -17801566, -16977468, -1158567, -11434277, 20267414, 9102646, 4285841, -20806970, 11594801, 4298189, 19759534, 13734769, 8899172, -6743099, -96637, 1700270, 11581916, -2842195, 709207, 1999307, 3263638, 3943854, 3641059, -5569499, 13906567, 4332549, 889058, 4742718, -483721, 4414690, 1144609, 736050, 8556112, --10678899, -7692824, -2901787, 3760781, -5463199, 3287798, -2450279, 10778220, 295816, 1622961, --5850283, -7342247, 498216, 6170258, -6165426, -919123, 7287486, -6365679, -490700, 3224447, --10759967, 12696460, 6824703, -2592013, 2962454, -780610, -286152, -3422015, 7191923, 12145631, -32870996, -28993176, -838056, -11569031, -15337328, -9206799, 15042586, -8256001, -8928163, 7676717, -19372450, 12160663, -14533632, 9360881, -15250355, 11184632, 636729, -1754494, -7370164, -11418171, --9160092, 1890323, 2108292, -18037788, 11442867, 1845225, -1599339, -6875706, -7609609, 12739410, --17438640, -870268, 19044422, 22307524, -20000052, -1387811, -3941169, -13027710, -16741246, 18312130, -4227859, 11622182, -3549254, 1374390, -1532230, 11569031, -4469987, 574452, -14333916, 20588462, -17279728, -25224880, -30697742, -6579353, 441845, -10186052, 1110249, -7586523, 2438468, -15677704, -16642461, -20139638, -17493938, -6623377, 3002182, 13792214, -7134478, 20013474, 2229625, -7237557, --6745246, -5337034, -12515535, 12167105, 9268539, -3393024, 7864085, 6000070, -9753334, -9957882, --8238284, 15493558, 4270808, -11207717, 1642288, 4318590, 5476620, -16680579, 8797167, 6565395, -3464965, -244276, -4318590, 2142652, -4748087, -14849313, 3445638, -2037425, -2291902, -1801739, -1859721, -4551055, -5234492, -378494, -1627793, 7313793, -3508988, -2121714, 4706211, -2044941, --6513318, 5762773, -6483790, -2332167, -11624329, 6399502, 1771674, -1787780, 2639258, -5483600, -11263015, -741419, 2350421, 12093017, 9239012, -3418794, -3415573, 5799280, 3830574, -4210142, -2910377, -3862786, -2947421, -771484, 3321084, -44487808, 65910032, -45283988, -11583527, 11925514, -35582732, 28926604, -10704132, -11583527, 1859184, 1651952, 18330384, 6769406, -24335284, 7292855, --5297842, -8535174, 2335389, 9943386, -191663, -18210662, -16117939, 8503498, 6881612, 11260867, --6225555, 13939316, 3180423, 16348793, -1767916, -5570036, 12022687, -1457068, -13005698, 2261300, -14944876, -635655, -17224430, 8521752, 19888382, -18391586, 7182259, -19756312, 7741142, -24966108, --16401406, 27518930, 25563646, 12066174, 33314988, -6398428, 39786968, 14841259, 15288473, 21437256, --36197984, 30474404, 10312753, 12344273, 13968307, 3391951, -17719424, 2906619, 33554968, 38358352, --551366, -43346420, 21227338, 1219234, 8972724, -1454920, 925029, -9401683, -32810866, 6657736, --5544803, 7425999, -6208375, 16258599, -18500572, -19649476, -13990319, 2934537, -6103686, -8795556, -10425496, 4240207, -14249091, -14860050, -11952894, -8704825, -1721745, -2237678, 7649874, -96637, --12250320, 9693741, 1730335, -2846490, 360777, 4863514, -6206228, -2809446, 5822365, -10435160, --4696010, -7067369, 6026913, 8005819, -9100499, 2896419, -24083492, 752156, 973347, 1609539, --4870493, -4161287, -10986526, -7761006, 5260261, 3884798, 5032628, 8742406, -8174397, 1064615, -3016678, 2564096, -8021389, 498216, 1724966, 194884, -6631430, -440234, 43660492, -1674500, --51773684, -26273388, -30448096, -11724187, 346282, 17040282, -44117368, -9965935, 7031935, -20669530, --23643794, -21674016, -23603530, -3889093, 26223996, 13351980, -10283225, 12484933, 5230734, -12058121, -13569412, -15212237, -3270618, 6221260, 9006010, -30137786, 15174656, -14877230, 8682813, -6011344, --24058796, 6598681, 7574175, 3619584, 4041564, -10140955, -34187404, 1265942, 7143605, 7333657, -410169, 4139275, -14158897, -309238, -1153736, 30964566, -4732517, -51310900, -23064512, -5712844, --42456824, 9519258, -12943958, -11011759, -20448876, -9341554, -30565134, -30165166, -36766532, -3841848, -38754564, 5135707, -24492052, 11098195, 355409, -2915209, -13776108, -19579146, 8142185, 15740518, -12146704, 6382322, -7341710, -31598074, -22388590, -31814970, 4636954, 3216931, -1117228, 10981695, --16655346, -20382842, -2858301, -7743826, -20583094, 4176856, 11811160, 1312649, 4302484, 19429896, --3593277, -4456566, -3418257, 927713, -7132867, -4320200, 8786966, 13111998, 14717242, 9539122, --4140349, 244276, 2247879, -6601902, 13612899, -6046777, 19889456, -7474854, 9298067, -9989557, --2728915, 19783156, 6640020, 2288144, -181462, -8433705, 7893076, 1226213, -9955197, 3942243, --8535711, -11383811, 3039226, 2703145, -6805913, -7073275, 6805376, -194347, 9606768, 1519882, -6505802, -4193499, 2804077, 2143726, 28492276, -3134253, 22783190, 29993904, -25400974, -31233002, --33435246, 8996883, 11348377, -45185204, -26546656, 1204738, 1027034, 13995688, -53173844, 5957120, -11950747, 36988260, -42651172, 5324686, 6670621, -4973036, 23090282, -13143674, 40672804, -1939715, -3330747, 12664785, 15627775, -15161771, -33355252, 19593104, 23075786, 5706401, 29271812, 6057515, --4033511, -10725607, -25273198, 39018168, -17585744, 37000068, 14210973, -2375654, 10579041, -15164456, -19557134, 19945828, -13947369, 14927159, 7181186, -38088308, 27761594, 28876676, -3850975, -19238232, -3466576, -576063, 1007707, -6541235, 52697100, -600222, -30955440, -16820166, 5775658, -43937516, --58299348, 8358007, 72428184, 16472810, -5347771, -45977624, -11989401, -7276212, 49299784, -33428804, --21903796, -81117976, -12016245, -14475114, -19416474, -14832670, 29773788, 32474784, -32077500, -11895986, -10327249, 4932233, -6018323, 13652627, -5792837, -9546639, -10212895, 11859478, 4342212, 4226785, --4235912, 11661910, -11633456, -3316252, 9618579, 5111011, -816581, 163209, -8715562, 4767951, --5835250, 21785148, -5944235, -10838887, -9580461, -17416630, -6291590, 14646375, 15615964, 43717936, -16223702, -4153234, -32942400, -44612900, -21376590, 1448478, 18425410, 15804406, -12229383, -17253420, --9297530, -6571300, 11128797, 20369956, 4200478, 1975685, -2561948, -6069326, -6003828, -72405096, -21020644, 35044248, -46631532, -3986267, 26137560, -11042898, -20983062, 18959060, -20246476, -10854456, -1534914, -14998563, 24581708, -8058970, -11237245, -4058207, 12984223, 44719736, -6937446, -20252382, --22891102, 8486319, 21253646, 12956306, -20234664, -2943663, 24188718, 895501, -18343806, 6318434, --16376173, 41375568, -18626200, -44332116, 15363098, -7260642, 21240760, -29622390, -29407104, 29727080, --2412698, -37983080, -20357608, -36282272, 47240884, 23035520, 12704513, -49579492, 8804683, 20799452, --34988416, 2297808, -25154012, -18785650, 19448148, -16677358, 22323630, -13734769, -30419642, -6607271, --7594039, -4246649, 10355166, 3885335, -19044422, 59170152, -7350837, 26392574, 26679264, 16578574, --8144332, 6471979, -13501767, 33399814, 8027831, -8089571, 3817152, 14345728, 22842246, -5449240, --50164680, -3126199, 15417859, -4705674, 26228292, -10921565, 8924405, -3754338, 491774, 11142219, -2430415, 6884296, 13262322, 8244190, 15425375, -3502009, 4857071, 8525510, 852551, -15822660, -19016504, -7752953, -130997, 3215320, -9880572, 5187784, 732292, -2335389, 13128104, -5828271, -714038, 19566798, -480499, 10988674, -9745818, -5898601, 10154913, -2259690, -7495792, -9943923, -223875, 1555315, 2112050, -3216931, 2162516, 6194954, -2508798, 52382496, 10928007, 22605486, --1787243, 5345624, 8466454, -19258096, 8559333, 18182744, 324270, -22136798, -11613055, -16463683, --6534793, -22185654, -21120502, 2501282, -16804596, 24718610, 8207146, -5958731, -17864380, -8804683, --5774047, 13240310, -3983045, -20992190, -17041894, 4192962, 4631586, 11774116, 4689568, -4764730, -5705864, -18329310, -55143084, 2139968, 67267776, -2141578, -48619028, -8103530, 32105954, 8719320, -5382131, -1079111, -21020106, -26584236, -15620259, 5834176, -1446867, -24604258, 9199283, -49304076, --8607651, 45316736, 13576392, 58346056, -7508677, -23278186, -6780680, -5337034, 15867757, 3224984, --239444, -32105954, -15857556, -15451682, -1950989, 36863168, -4774930, -9246528, 12399034, 14820858, -2614561, -19905562, -30562450, -2413772, 12688407, -1558536, -15056545, -4103305, 8825621, -6666863, --5522791, -10268730, 18811420, 19423990, -9629317, -5361730, -8826695, 7784092, 11809013, -5560909, -1912871, -2252174, -1371168, -3862786, -14472429, 1422708, 8650064, -9120363, 2450816, -2345589, -914291, -8186745, -2437394, -3560528, -4984847, -6259915, -5970542, -1966558, 26540214, -13244069, -415001, -5334887, 1706176, 14345728, -9557376, -1572495, -2547453, 4392141, -413927, 3980361, --7275675, -23177254, -77510736, -119378616, 28063854, 107094472, 33621004, 261784160, 246326576, 109751448, -253993632, 107470816, -46210628, -639950, -76565848, -208953920, -114287472, -109355776, -214424624, -155889056, --89741192, -134854464, -90902984, 19876572, -8020315, -43067248, 51022600, 47952236, -354872, 51397872, -139037216, 58558656, 26063472, 133361416, 119061328, 40173512, 141861696, 173888736, -437013, 103062032, -175019920, 66469988, 69870528, 178709296, 106525928, -14016626, 139211696, 97948880, -38175280, 54832772, -110692048, -49526880, -88164944, -19764366, -186136896, -312066944, -302403808, -335934080, -537761024, -465206176, --384055968, -497368480, -426716800, -273993152, -325097888, -248219040, -68926712, -22103512, 104955040, 195820448, -322470976, 432388864, 471352256, 550111232, 597182976, 558135296, 528369024, 560839488, 426398976, 338322080, -401059744, 218930048, 34744136, 50596324, -81301048, -296434880, -249188640, -184152624, -266078592, -271801088, --169854688, -193007248, -243695904, -178406496, -162540352, -228993168, -205757920, -134005664, -170757168, -183092304, --60250876, -57679264, -108396384, -11425150, 40776420, -31009128, 5458367, 40754944, -58700928, -75530224, --72015864, -157022400, -173702432, -121460064, -91613800, -66606352, 22042310, 106140456, 144018304, 204564464, -261873280, 273772480, 290104640, 321181952, 304293056, 276854656, 288044128, 261059920, 193701952, 132891120, -34321084, -52053928, -133230424, -193299296, -216880272, -228179264, -204051744, -156315872, -137408896, -115732192, --95217816, -82114408, -72873248, -54766200, -43184284, -39674760, -39241504, -27759984, -21966610, -17820894, --8230768, 5494874, 16648367, 31831614, 31901406, 30655330, 27302034, 17678086, 6714645, 3770981, -200253, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +6451578, -3213709, 1780801, -667331, 367220, 302258, -2611877, -2961380, 1931125, -542240, +-2381559, -3036542, -1876364, 2673617, -286152, 3588982, 747324, -4556424, -4711579, -3341485, +1365263, 1162326, 2431488, -365609, 2783676, -2135136, -402653, -4927401, -765578, -919660, +1008780, 1852742, 1851668, 3637837, -1819992, -2436857, 1960116, 1110249, -2383707, -2423435, +104690, 1692217, 802085, 4039417, -1546725, -1280974, 4569309, 1399623, 8574365, 3648575, +-2420214, -82678, -5295695, 98784, -6034966, -397284, -2265059, 4161823, 427349, 2233920, +3036542, 1649804, 2910914, 1944547, 402653, -5053566, -574452, -2532957, 3471407, 5085778, +-3579855, -2539400, -1546725, -2058900, -2705293, -4332549, -996969, 1299228, -2566780, -2111513, +-912681, -3561602, 400506, -716186, -2417530, 768262, 115427, -13959, -1196685, 212601, +210990, 1324461, -380641, 854699, -452582, 618475, -184684, -799938, 205622, 1040993, +163209, -933082, -973347, -98247, 1760937, 411780, -356482, 286152, -534187, -10131828, +-10831371, -860604, -3106335, 417149, -2350421, -638340, 6026913, -1077500, 3240016, -1489280, +-2896956, -4003983, 735513, -827855, -4782446, 5513128, 1656247, 379031, 2938831, 2804077, +4545686, 3202435, -301721, -3382287, 3157875, 736050, -4559645, -2014340, -2056216, -1365800, +4075924, -1395864, -6953552, -2354716, -795106, 1452236, -2161442, -4524211, 147640, -441308, +5255966, 779000, -42413, 1920387, -120796, 7092065, -1223529, 652835, -1567663, -2813741, +2684, 3045669, 1377074, 831076, 2878165, -2640331, -4400194, -3147137, -633508, 579284, +-1026497, 126165, -3302830, -731218, 1730872, -1053341, 3445101, 1797981, -194347, 639413, +-3230352, -2750927, 5346161, 1214939, 2277407, 1551020, -950262, -314069, -4060355, 286689, +-2319819, 996969, -790811, 1034013, 1102196, 3143916, -326418, -1098975, 185757, 673773, +421444, 112743, 111669, -947040, -744640, 381715, -341450, -816044, 1278290, -646393, +657130, 972273, -919660, -274341, 736050, -277562, 1319092, -792958, 655519, -631897, +-458488, -1647657, 1516660, 7004555, -387621, 3594351, 2110977, 4793184, 5873368, -1335198, +477815, 3622268, 3569655, 2395518, 6719477, 1369021, -2206540, 297963, 5877126, 2076617, +2770254, 5108864, 6852621, 4533875, -1569274, -4698158, 3296924, 2260764, -2734821, -4538170, +230318, -2648921, 1192390, 1742683, -1677722, -2263985, 2262374, 1807108, 4031364, -2710661, +-5551245, -2771865, -2418604, -3684545, -1306744, -4209068, 2491081, -5762236, 2443300, 490700, +1298154, -2563022, 5466957, 4195646, -3928821, 4833986, 1778117, -716723, 1551557, -3506304, +-1162862, 3304441, 1131187, 1383516, 820876, 3946538, 1553704, 4879620, -2444373, -296890, +-366146, 1892470, 2777233, -1129576, 1830193, -2565706, 1244467, 1712081, 1489817, 5353677, +144955, 3994320, 4425427, 2511482, -4135517, -787053, -692027, -1071058, 307627, 2266132, +-998580, 67109, -226560, 256087, 766115, -670015, 909996, 1560684, -1153736, -588411, +1428614, 48318, -45634, -79994, -908386, 367757, -472983, 118112, 1090922, 1879048, +19864, -260382, 888521, 723702, 236223, 432181, 300648, 456877, -133681, -266288, +773631, 1016834, -1009854, 532039, -405338, 19370302, 161598, 17151416, 1381369, 10863046, +-2330557, -1870458, 2977486, -8108899, 8868571, -5040681, 5951751, 4385162, -3237869, 2588255, +-229781, 328565, -1489817, 2465311, 3513283, 4343286, 7173133, 1744831, 2298344, -281857, +8435853, -9675488, 250719, -744103, 2337536, 4100083, -5071283, 1941862, 2315524, 1175747, +3387656, 1816234, -3907347, 1862942, 7557532, -1422171, 2327872, -1282585, -1149978, -372588, +-5389110, 8331700, -105227, 797253, 6265821, -893890, 507880, 7722888, -11331197, 3096672, +-185220, 3375844, 9220758, 2719251, 2251637, 3160022, -965831, -2597918, -1707786, 2217277, +871878, 4904316, -1751273, 4023848, 1927367, -1418950, 869731, -3281355, -2067490, 392453, +-912681, -4517769, -2806224, -4621922, 2753074, 4002910, -1047972, 1202054, -905701, -3090766, +-82678, 1627256, 1735704, -5509906, -176094, 457951, -787590, 256087, -1071058, 58519, +-1153736, -2682207, 5369, -1793686, -1343788, -2226404, 154619, -2178622, -598074, -2114735, +-1506997, -119185, -682363, -1150514, -52076, 224949, 1065689, -1157494, -7730405, -9527311, +-3762928, -1442035, -3550327, 7602092, 3266860, -6092411, 6789807, -963683, -4930086, 1461363, +2964064, -2767570, -4504884, -4084514, -8576513, -4351339, 3720516, -5461051, -8709120, 2442226, +3541201, 683974, -3196530, 6517076, 819802, 6024229, -366683, -1410897, 3463891, 5705327, +-8130910, -3900904, 2231773, -1848447, 2007897, -5349382, -375273, 1410897, 1941862, -4570919, +-8257612, -2355790, 2426657, -1428077, -1029182, 473520, 2687039, -848256, 1497870, -2818036, +4810900, -6328098, -4694400, -1679332, -4598300, -1416266, -1232119, 1803886, -3369402, 2522220, +5223217, -486942, 1238561, 1367410, 2514703, 5049808, -1918240, -1014686, -948114, -2149631, +5311801, -2193655, -9204652, -5929203, -3878892, 8818642, 172336, 5040681, 2350958, 726386, +1392643, -657130, -178241, 4220879, -1396938, -1017907, 1402307, -794032, 708133, -1957968, +-1136556, 929324, -235686, 1026497, -252329, 584652, 1623498, 1097364, 1519345, -41876, +1065689, -284005, 1556926, 1628330, 2757369, 1656247, 2194192, 459562, 1473174, 1189706, +923418, 1239635, 1823214, -870268, 166430, -408559, -739271, 686121, 1088774, -2210835, +-8369818, -19458886, -1811403, 1348083, 212601, -6308770, -2788508, -7159711, -1839857, -8444443, +-9666898, -7558606, -1745904, -5006858, -10894185, -6820945, 2265595, 3374234, -3002719, 6560026, +3638911, -2425583, 8099235, 1733556, 679679, 1301912, -11060078, -405338, 1855426, 4170950, +-3468186, -3081639, 6609418, 12836584, -9589051, 3456912, -2811593, -493921, -8449274, -743566, +-82678, -4313758, -5461588, -3974455, -4643934, -2477659, 2784213, 9426379, -4387846, 3537443, +6382859, 5767604, -1931125, 656056, -2048163, -1825898, -8672613, -4296578, 4939213, -3128347, +1083942, -2986076, 2498060, 1323387, -942745, -323196, -4037806, -3337190, 778463, -1200980, +1801202, -10274099, -10858214, -1162862, -1573032, -4664335, -6979, 3458523, -5328444, -4105989, +-4540318, -7903277, 5614059, -563714, -1166084, 2159295, -289373, 1939178, 3712462, 1293322, +2072859, 1185948, 2734284, -798327, 510027, 454193, 642635, 913217, -682363, -657130, +177167, 854699, 1075352, -650688, 886911, -954020, -1832877, 1032940, 760746, -713501, +2458332, 1124745, 191663, 963146, -1443646, -1566053, -387621, -817118, -633508, -12083890, +-2380486, -14550812, -3263638, -10307922, -1232119, 1946157, 2623688, 11195369, -6984154, 2507724, +3020436, -6067178, -2742337, 9009768, 954020, -2624225, 1130113, -7409356, 6727530, -9495636, +-3139621, 4243965, 2635499, -981937, 1621887, -1869385, 3111704, -4047470, -7138773, 494458, +3452617, 2834679, -5709086, 1590749, 6414534, -6589017, -8363375, 6673843, -5703717, 4360466, +-4105452, 2436857, -170188, -5925445, -7723425, -4746476, 2102387, -299574, 2883534, -4024921, +-3936338, -9848360, 5137855, -7056632, -3232500, 3847217, 8746701, -1125818, -1817845, -12894566, +-10168872, -3379603, -3626026, 4861903, -1377074, -7550016, -1213865, 408559, -4207458, -1024350, +-9032316, 6026376, 2335925, 7597261, 9264244, 4893579, 376883, 4045859, 8263517, -678605, +-1909650, -556198, -2531883, -8208220, 454193, 616865, 1766305, 4413079, -1794760, 983011, +-8590, -3222836, -1755031, 3015604, 2886755, 2745558, -2110440, 835371, 1133871, 1054415, +1007170, 1214402, 391916, 2298344, 2267206, 1557463, -466004, 1065689, -394600, 915902, +1634772, 593779, 656056, 51540, -571768, -500901, -38118, -1415192, -667867, 7177427, +3761855, 20844014, 10084046, 13503914, -4178466, -513785, -225486, -20558398, 1077500, 8884140, +-4076461, -1584843, 703838, 12976170, -2200097, 7522635, -1541893, 7204808, 3948149, 8895414, +12484396, 1617592, 8333847, -2571612, 7211787, -966905, 13360033, 7121593, -230318, 7614977, +6134824, -2241973, 5855651, 3537443, 5055177, -3992709, -3216931, -10794327, -668941, 7665980, +1465658, 981937, -2522757, -4034048, -3234110, -3556233, 18799608, -12091944, 4785668, 5719823, +3230352, 1630477, -7232188, -9599252, -2469069, -1427540, -458488, -16636019, -8267812, -8551280, +393526, -391916, 4930623, -545461, 4377646, 5897527, 10638097, 1956358, -2763812, 3583077, +-6728603, 1832340, -4941897, 1789391, 4100620, 2327336, 6764574, -4590247, -5236102, 24410984, +3317862, 4423280, 3062312, 8278550, -5895380, -3044595, 5186173, -618475, -175557, 946503, +1682554, 4771172, -2412698, -381715, 864899, 2738042, 589484, -2543695, 4594542, 151934, +-1138703, 84289, -583042, -2505577, -2373506, -1113470, -2636036, -32212, -1065689, 1101122, +3267933, -336618, -382252, -3686693, -828929, 1776506, -464930, 186294, 274341, 2845416, +-1557463, -466541, 859530, 1049583, -3259880, 31934156, 3443490, 4751308, 3615826, -2004139, +-12931073, 8730058, 9251896, -5184563, 4067871, 4141959, -7735773, -1098975, 7636452, 4356708, +-13642427, 3469797, -3661997, -7016366, -73551, 4008815, 1182190, -140123, -156229, 5902359, +-1741609, 3326452, -10578504, 4279935, -981937, 4203163, 2537789, -1949915, 7742216, -10390600, +-4345970, -10260677, 9063992, 4230006, 14705431, 7208029, 96100, 3133716, -11668352, -97711, +3599720, 3771518, 3750580, 792421, 2238752, -3122978, 3526705, 10470057, 14256070, 6104223, +-6247567, -3531537, -1277753, -2779381, 5421860, 7129109, -4759898, 4220342, 8058970, 2423972, +-10671920, -21437792, -10392747, 4311074, 9585830, -4035659, 3023657, -804770, -1757715, -68719, +10009958, 1802813, -7853348, 13258027, 6230387, -15355582, 955093, -1839320, -4693326, -1713692, +-2078764, -1074, 5589363, 2250563, -3873524, -2189360, 3428458, 5739687, -2263985, 4371203, +1416802, -3554086, -625455, 588947, 448287, -648003, 620623, -1748589, -974421, 1298154, +687195, -1546188, -1359894, 133681, -748935, -2580739, 1976759, -874563, -1009317, 783295, +3093450, -2885681, -4261145, 12885, -293132, -6749541, -783295, 1750199, 397821, -4048007, +-77846, -1455457, 1737314, 1032940, 2574296, 1761474, -19536196, 5826660, 9364102, -10545755, +6846178, 11384885, -27827630, 5965710, 1265942, 6063420, -10331007, 15700253, -21937620, -254477, +-1496796, -1864553, -2176475, -6471442, -8239895, -1428614, 7974681, 745177, 304943, -4264366, +5641440, -932008, -2629057, 4123169, 9829033, -6522445, 7116761, -1342714, 4360466, 2072322, +6694244, 10049150, -2235531, 2595771, -12996034, -6627672, -2597918, -5027259, -11822971, 1219234, +-4232154, -7829189, 11576547, -10806138, -3460670, -5130876, -5683853, 7764227, -8764418, 4913980, +-2979097, 7980049, -4110821, 8745627, -11493869, -3371549, 1646046, 10604811, -18638010, -7151658, +855235, -75162, -3177739, 7407208, -9579388, -19187230, 4320737, -16859894, 8686034, -6084358, +237834, -17625472, -6673843, 18800682, 10881300, -14329622, -11703786, -10184978, 786516, 5616207, +-2282238, -6486475, 12492986, 4264903, -1960116, -2808909, -4413079, -1097364, 5029407, -4651450, +5393405, -758599, -3379066, 502511, -2530810, 1741609, 4595078, -2772938, 2159295, 3040837, +2494839, -558346, 5311801, -5015985, 5029944, -1541893, 4454418, -5811091, -2684892, 645856, +605590, 5632313, 2201708, 3303904, -1727114, -3547106, 2173790, -6643778, -379031, -14475114, +-6213744, 18236432, 767189, -15037754, 14155138, -6626061, 937377, -15680926, 2406792, 6220187, +-13841069, -3376918, -12371116, -85362, 779537, -4165582, -3441343, 12073690, 1848447, -8175470, +2041183, -17518634, 10519449, 16696148, -5409512, 6973417, 11832098, -883153, -2429878, 1458141, +1427003, 6938520, 1172526, 1604707, 3630858, -9793599, -717260, -11258720, -11516418, -4719096, +4824322, 6831683, -372588, -13546327, 2658048, 3551938, 6653978, 14482630, -14861124, 21734146, +-18035104, 794032, -3642669, -3125663, -8727374, -16727287, -22575422, -8754754, -2594160, 5744519, +-1722819, 932545, 3309809, -169114, 15881178, 7513509, -16314970, -2549600, -343597, 10398653, +-11279658, 745714, -22721988, 4247723, 17732846, -15868294, -6238440, 2238752, -184147, 4429722, +24852828, 363462, -3292629, 1284732, 12647068, -8606041, 3377992, 4617090, -1891396, -930934, +-179852, -346282, 5622112, -1856500, -1307818, -4892505, 8192113, -1793149, 2401424, 810138, +1430224, 2033130, 5952288, -4171487, -1082869, 6305549, -4604742, -6487548, 5319317, 238371, +2587718, 3576634, 2011118, 6519761, -5106179, 3021510, 3597572, -2289218, 9235790, 3150896, +5641977, 2048163, -5595269, -2064269, -966905, -999654, -1010391, -9310415, -18886044, 22574348, +9644886, -11063299, 14656039, 14664092, 20829518, -7683697, -7190849, 15202037, -2234994, -3010235, +5301601, 6758131, 2700998, 3231426, -20717312, -2202781, 66572, 170725, 1149441, -2346126, +8792335, 17037598, 1731946, 1161252, -283468, 810675, 15703474, 4165045, -1098975, -3433290, +4026532, 3466576, -2455111, 1795296, -8949638, -1876901, 13656922, -13553843, -6577206, -11690364, +15258408, -13985487, 7012071, -5732708, 4493073, -3048353, 3624416, -11241003, 2576981, 16938814, +-11151346, 874026, -29584808, -1329829, -10451803, 785979, -27614492, -1238024, -1360968, -8535711, +-5935645, 22523882, -24197308, 4016331, -6545530, -9048422, 6501507, -8209293, -18906446, -13280576, +1824824, 972273, 3890704, -9390946, -12737262, 7218767, 597537, 1386738, 8460012, -14141717, +10557566, -10297184, -4838281, -4446902, 2492155, 329639, 2994129, -1861868, -3628711, 840740, +-2078227, 2930778, 6552510, 3792456, 2388539, 1814624, 1744294, 1695975, -751619, 7110319, +1310502, -1429150, 5294084, 5431523, 1999844, -3110630, -365072, -4511327, 7075422, 2465311, +5674189, -2881386, 5821828, 5176510, 7638600, 3714073, -2258616, -4110284, 6401112, 1232656, +5521718, 1184337, 1419487, 1384590, 1574106, 18934900, 6665789, -2500745, 4099010, -9484898, +-9987410, -8194261, 18454400, -16483011, -20480552, 9823127, -19053548, 7082401, 762357, 5208722, +-8501351, -2048163, -10352482, -4393752, -7983271, 3871913, 9516037, 6554120, -15372225, 17921824, +2207076, 6269042, 1672353, 8636105, -1816771, 8296266, 2071785, -3688840, 5328981, 1938641, +7050189, 4834523, -11651709, 4705674, -3386582, 3307125, -2340220, -4349192, -3575024, -8198019, +7691750, 8198019, 8606041, -1593970, 15709380, 18726058, 7533910, 2458332, 8540542, 19408958, +9621800, 21172042, 13642964, 15783468, -16914118, -17068200, 3516505, -3462818, -4552129, 1333051, +-8501888, 7099581, 5352603, 3337727, 16161962, -3787624, -10386305, -8739722, -7669738, 1874753, +-3636227, -34615824, -15017890, -13474923, -4855461, -6999186, -3595425, -5254356, -9787157, 357019, +-5866926, -5662915, 2336999, -5681705, -1741609, -8732205, 558883, 448824, -1332514, -12441983, +5182952, -43487, 648540, -9362492, 2886218, 3313031, 3670587, 1010928, 10924786, -7030325, +-2604898, 2203855, 1266479, -806380, 4556424, -4984310, -4133369, -921807, 7789997, -808528, +5695664, 6361921, -1271847, -8043400, -7084549, -892279, 8137353, 595390, -5642514, 788127, +-1152662, -3939022, -2806761, -1271847, 576599, -6024229, -4969277, 15397458, 10457708, -33719788, +-24904904, -7755101, -325344, 11113765, -4636954, -790811, -26848378, 3801583, -14069776, 10042707, +-1969243, 13305272, -11425687, -2835752, -13557601, 2353105, 11004780, -5276368, 3183108, -7740605, +536871, -18116708, -5076652, -865973, 1246077, 13448616, 17425756, 617938, -16125455, -11287711, +-5262946, 1660005, -4321811, 5123359, -18535468, -5715528, -2618856, -4776541, -10459856, -2415919, +-4877472, 12581570, 18131742, 12320651, 4387846, 7535520, 7530689, -8770323, 30346092, 18496276, +-24145770, -20752746, 22252762, -17571784, -10292889, 3481071, 2336999, -17054242, 16409996, 1111860, +-51740936, 13845901, 32219770, -22373558, 22145926, 29894046, -10120017, -3055869, 15768436, -18604724, +-12537010, 6260989, -10348187, -11621108, 13332652, -22580254, -7085623, 2944737, 308164, 1323387, +-2398202, 8326868, -6146098, 3580392, 991601, -5973763, 11740293, 6150393, -629213, -7604240, +8997420, -5770289, 6885370, -6145562, 8426189, 927176, 1547262, 8812199, -7063074, -7621957, +2050310, -7031399, -4602595, -315680, 493384, -4678830, -8723615, 4024384, -20127828, -537, +8876087, -7326678, 5113159, -2243584, 2428804, -8318815, -82678, 4556961, -4181151, 2983392, +17542258, -7943005, -7765838, 17537426, -12981539, -2133525, 14445586, -10521059, -6655052, 11059004, +6828998, 7252589, -1789391, -10857140, -8667781, 10208064, -8152385, -775778, 3042448, -15352897, +9979893, 8121783, -6207302, -5050882, -11969537, 289373, -7406134, 10311143, -16807818, 1243393, +6440304, -933082, -7998303, -17460652, -3923453, -7621420, -1699196, -13524315, 18379238, -17999672, +3138011, -6575595, 4616553, -25475598, 26200374, 4932233, 2611877, -10539313, 5966247, 4216048, +1136019, 2328409, -4691715, -20120848, -3489661, -8745090, -12881144, -17299054, -6236830, -4409321, +-17141752, -6621229, -820339, 11768210, 5433134, -15575162, -13575318, 8279087, -3585761, -19756312, +-8521752, 4762045, 16168941, 16025060, 16334297, 26052734, -5062693, -17801566, -16977468, -1158567, +11434277, 20267414, 9102646, 4285841, -20806970, 11594801, 4298189, 19759534, 13734769, 8899172, +6743099, -96637, 1700270, 11581916, -2842195, 709207, 1999307, 3263638, 3943854, 3641059, +5569499, 13906567, 4332549, 889058, 4742718, -483721, 4414690, 1144609, 736050, 8556112, +-10678899, -7692824, -2901787, 3760781, -5463199, 3287798, -2450279, 10778220, 295816, 1622961, +-5850283, -7342247, 498216, 6170258, -6165426, -919123, 7287486, -6365679, -490700, 3224447, +-10759967, 12696460, 6824703, -2592013, 2962454, -780610, -286152, -3422015, 7191923, 12145631, +32870996, -28993176, -838056, -11569031, -15337328, -9206799, 15042586, -8256001, -8928163, 7676717, +19372450, 12160663, -14533632, 9360881, -15250355, 11184632, 636729, -1754494, -7370164, -11418171, +-9160092, 1890323, 2108292, -18037788, 11442867, 1845225, -1599339, -6875706, -7609609, 12739410, +-17438640, -870268, 19044422, 22307524, -20000052, -1387811, -3941169, -13027710, -16741246, 18312130, +4227859, 11622182, -3549254, 1374390, -1532230, 11569031, -4469987, 574452, -14333916, 20588462, +17279728, -25224880, -30697742, -6579353, 441845, -10186052, 1110249, -7586523, 2438468, -15677704, +16642461, -20139638, -17493938, -6623377, 3002182, 13792214, -7134478, 20013474, 2229625, -7237557, +-6745246, -5337034, -12515535, 12167105, 9268539, -3393024, 7864085, 6000070, -9753334, -9957882, +-8238284, 15493558, 4270808, -11207717, 1642288, 4318590, 5476620, -16680579, 8797167, 6565395, +3464965, -244276, -4318590, 2142652, -4748087, -14849313, 3445638, -2037425, -2291902, -1801739, +1859721, -4551055, -5234492, -378494, -1627793, 7313793, -3508988, -2121714, 4706211, -2044941, +-6513318, 5762773, -6483790, -2332167, -11624329, 6399502, 1771674, -1787780, 2639258, -5483600, +11263015, -741419, 2350421, 12093017, 9239012, -3418794, -3415573, 5799280, 3830574, -4210142, +2910377, -3862786, -2947421, -771484, 3321084, -44487808, 65910032, -45283988, -11583527, 11925514, +35582732, 28926604, -10704132, -11583527, 1859184, 1651952, 18330384, 6769406, -24335284, 7292855, +-5297842, -8535174, 2335389, 9943386, -191663, -18210662, -16117939, 8503498, 6881612, 11260867, +-6225555, 13939316, 3180423, 16348793, -1767916, -5570036, 12022687, -1457068, -13005698, 2261300, +14944876, -635655, -17224430, 8521752, 19888382, -18391586, 7182259, -19756312, 7741142, -24966108, +-16401406, 27518930, 25563646, 12066174, 33314988, -6398428, 39786968, 14841259, 15288473, 21437256, +-36197984, 30474404, 10312753, 12344273, 13968307, 3391951, -17719424, 2906619, 33554968, 38358352, +-551366, -43346420, 21227338, 1219234, 8972724, -1454920, 925029, -9401683, -32810866, 6657736, +-5544803, 7425999, -6208375, 16258599, -18500572, -19649476, -13990319, 2934537, -6103686, -8795556, +10425496, 4240207, -14249091, -14860050, -11952894, -8704825, -1721745, -2237678, 7649874, -96637, +-12250320, 9693741, 1730335, -2846490, 360777, 4863514, -6206228, -2809446, 5822365, -10435160, +-4696010, -7067369, 6026913, 8005819, -9100499, 2896419, -24083492, 752156, 973347, 1609539, +-4870493, -4161287, -10986526, -7761006, 5260261, 3884798, 5032628, 8742406, -8174397, 1064615, +3016678, 2564096, -8021389, 498216, 1724966, 194884, -6631430, -440234, 43660492, -1674500, +-51773684, -26273388, -30448096, -11724187, 346282, 17040282, -44117368, -9965935, 7031935, -20669530, +-23643794, -21674016, -23603530, -3889093, 26223996, 13351980, -10283225, 12484933, 5230734, -12058121, +13569412, -15212237, -3270618, 6221260, 9006010, -30137786, 15174656, -14877230, 8682813, -6011344, +-24058796, 6598681, 7574175, 3619584, 4041564, -10140955, -34187404, 1265942, 7143605, 7333657, +410169, 4139275, -14158897, -309238, -1153736, 30964566, -4732517, -51310900, -23064512, -5712844, +-42456824, 9519258, -12943958, -11011759, -20448876, -9341554, -30565134, -30165166, -36766532, -3841848, +38754564, 5135707, -24492052, 11098195, 355409, -2915209, -13776108, -19579146, 8142185, 15740518, +12146704, 6382322, -7341710, -31598074, -22388590, -31814970, 4636954, 3216931, -1117228, 10981695, +-16655346, -20382842, -2858301, -7743826, -20583094, 4176856, 11811160, 1312649, 4302484, 19429896, +-3593277, -4456566, -3418257, 927713, -7132867, -4320200, 8786966, 13111998, 14717242, 9539122, +-4140349, 244276, 2247879, -6601902, 13612899, -6046777, 19889456, -7474854, 9298067, -9989557, +-2728915, 19783156, 6640020, 2288144, -181462, -8433705, 7893076, 1226213, -9955197, 3942243, +-8535711, -11383811, 3039226, 2703145, -6805913, -7073275, 6805376, -194347, 9606768, 1519882, +6505802, -4193499, 2804077, 2143726, 28492276, -3134253, 22783190, 29993904, -25400974, -31233002, +-33435246, 8996883, 11348377, -45185204, -26546656, 1204738, 1027034, 13995688, -53173844, 5957120, +11950747, 36988260, -42651172, 5324686, 6670621, -4973036, 23090282, -13143674, 40672804, -1939715, +3330747, 12664785, 15627775, -15161771, -33355252, 19593104, 23075786, 5706401, 29271812, 6057515, +-4033511, -10725607, -25273198, 39018168, -17585744, 37000068, 14210973, -2375654, 10579041, -15164456, +19557134, 19945828, -13947369, 14927159, 7181186, -38088308, 27761594, 28876676, -3850975, -19238232, +3466576, -576063, 1007707, -6541235, 52697100, -600222, -30955440, -16820166, 5775658, -43937516, +-58299348, 8358007, 72428184, 16472810, -5347771, -45977624, -11989401, -7276212, 49299784, -33428804, +-21903796, -81117976, -12016245, -14475114, -19416474, -14832670, 29773788, 32474784, -32077500, -11895986, +10327249, 4932233, -6018323, 13652627, -5792837, -9546639, -10212895, 11859478, 4342212, 4226785, +-4235912, 11661910, -11633456, -3316252, 9618579, 5111011, -816581, 163209, -8715562, 4767951, +-5835250, 21785148, -5944235, -10838887, -9580461, -17416630, -6291590, 14646375, 15615964, 43717936, +16223702, -4153234, -32942400, -44612900, -21376590, 1448478, 18425410, 15804406, -12229383, -17253420, +-9297530, -6571300, 11128797, 20369956, 4200478, 1975685, -2561948, -6069326, -6003828, -72405096, +21020644, 35044248, -46631532, -3986267, 26137560, -11042898, -20983062, 18959060, -20246476, -10854456, +1534914, -14998563, 24581708, -8058970, -11237245, -4058207, 12984223, 44719736, -6937446, -20252382, +-22891102, 8486319, 21253646, 12956306, -20234664, -2943663, 24188718, 895501, -18343806, 6318434, +-16376173, 41375568, -18626200, -44332116, 15363098, -7260642, 21240760, -29622390, -29407104, 29727080, +-2412698, -37983080, -20357608, -36282272, 47240884, 23035520, 12704513, -49579492, 8804683, 20799452, +-34988416, 2297808, -25154012, -18785650, 19448148, -16677358, 22323630, -13734769, -30419642, -6607271, +-7594039, -4246649, 10355166, 3885335, -19044422, 59170152, -7350837, 26392574, 26679264, 16578574, +-8144332, 6471979, -13501767, 33399814, 8027831, -8089571, 3817152, 14345728, 22842246, -5449240, +-50164680, -3126199, 15417859, -4705674, 26228292, -10921565, 8924405, -3754338, 491774, 11142219, +2430415, 6884296, 13262322, 8244190, 15425375, -3502009, 4857071, 8525510, 852551, -15822660, +19016504, -7752953, -130997, 3215320, -9880572, 5187784, 732292, -2335389, 13128104, -5828271, +714038, 19566798, -480499, 10988674, -9745818, -5898601, 10154913, -2259690, -7495792, -9943923, +223875, 1555315, 2112050, -3216931, 2162516, 6194954, -2508798, 52382496, 10928007, 22605486, +-1787243, 5345624, 8466454, -19258096, 8559333, 18182744, 324270, -22136798, -11613055, -16463683, +-6534793, -22185654, -21120502, 2501282, -16804596, 24718610, 8207146, -5958731, -17864380, -8804683, +-5774047, 13240310, -3983045, -20992190, -17041894, 4192962, 4631586, 11774116, 4689568, -4764730, +5705864, -18329310, -55143084, 2139968, 67267776, -2141578, -48619028, -8103530, 32105954, 8719320, +5382131, -1079111, -21020106, -26584236, -15620259, 5834176, -1446867, -24604258, 9199283, -49304076, +-8607651, 45316736, 13576392, 58346056, -7508677, -23278186, -6780680, -5337034, 15867757, 3224984, +-239444, -32105954, -15857556, -15451682, -1950989, 36863168, -4774930, -9246528, 12399034, 14820858, +2614561, -19905562, -30562450, -2413772, 12688407, -1558536, -15056545, -4103305, 8825621, -6666863, +-5522791, -10268730, 18811420, 19423990, -9629317, -5361730, -8826695, 7784092, 11809013, -5560909, +1912871, -2252174, -1371168, -3862786, -14472429, 1422708, 8650064, -9120363, 2450816, -2345589, +914291, -8186745, -2437394, -3560528, -4984847, -6259915, -5970542, -1966558, 26540214, -13244069, +415001, -5334887, 1706176, 14345728, -9557376, -1572495, -2547453, 4392141, -413927, 3980361, +-7275675, -23177254, -77510736, -119378616, 28063854, 107094472, 33621004, 261784160, 246326576, 109751448, +253993632, 107470816, -46210628, -639950, -76565848, -208953920, -114287472, -109355776, -214424624, -155889056, +-89741192, -134854464, -90902984, 19876572, -8020315, -43067248, 51022600, 47952236, -354872, 51397872, +139037216, 58558656, 26063472, 133361416, 119061328, 40173512, 141861696, 173888736, -437013, 103062032, +175019920, 66469988, 69870528, 178709296, 106525928, -14016626, 139211696, 97948880, -38175280, 54832772, +110692048, -49526880, -88164944, -19764366, -186136896, -312066944, -302403808, -335934080, -537761024, -465206176, +-384055968, -497368480, -426716800, -273993152, -325097888, -248219040, -68926712, -22103512, 104955040, 195820448, +322470976, 432388864, 471352256, 550111232, 597182976, 558135296, 528369024, 560839488, 426398976, 338322080, +401059744, 218930048, 34744136, 50596324, -81301048, -296434880, -249188640, -184152624, -266078592, -271801088, +-169854688, -193007248, -243695904, -178406496, -162540352, -228993168, -205757920, -134005664, -170757168, -183092304, +-60250876, -57679264, -108396384, -11425150, 40776420, -31009128, 5458367, 40754944, -58700928, -75530224, +-72015864, -157022400, -173702432, -121460064, -91613800, -66606352, 22042310, 106140456, 144018304, 204564464, +261873280, 273772480, 290104640, 321181952, 304293056, 276854656, 288044128, 261059920, 193701952, 132891120, +34321084, -52053928, -133230424, -193299296, -216880272, -228179264, -204051744, -156315872, -137408896, -115732192, +-95217816, -82114408, -72873248, -54766200, -43184284, -39674760, -39241504, -27759984, -21966610, -17820894, +-8230768, 5494874, 16648367, 31831614, 31901406, 30655330, 27302034, 17678086, 6714645, 3770981, +200253, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -553514, -11153493, -5529771, 440234, -3299072, -253403, 4714264, 2237141, 2957622, -2580202, 3663607, --3787624, 4112968, 2056216, 4956929, 2093797, -943819, -5597416, 6019397, 4151086, 1525250, -708670, 557272, -2378338, -2726767, 3114388, 1904818, 2035278, 2986076, -3037079, -237297, -2806224, 3318399, -432181, -2484639, -4712116, 11274, 881542, -2855617, 1067299, 751082, --4247186, -2305324, -322123, 2150168, 49929, -2079301, 3968550, 730144, -1340030, -2947421, --651761, 336618, -5545877, 2549063, 3478387, -1942399, 4453881, 3631932, -574989, 3001109, -1785633, 5879274, 1860258, 1086627, -912681, 2203318, -4737349, 592706, 2279554, -2368675, -2609193, 3119757, 3454764, 2131378, 4538707, -994285, -2746095, -1451162, -1157494, 578747, --1041530, -3544959, 1677185, -1685775, -1846299, -2160906, 821413, -27380, -1074816, -879395, -1411971, 78383, -153008, -403727, -129386, 634581, 951335, -179852, -45634, -826244, -234076, -1465658, 148176, 933619, 1284732, -936840, -953483, 192200, 841814, -10582263, --7401303, -1053878, -4765266, -4078608, 2007360, -6026913, -5810554, 1671816, -2631741, -2362232, -2419677, -1903744, -4115653, -450435, -310311, -1165547, -1882269, -1114007, -4720169, -296890, --3403762, -2465848, -128312, 4218732, -936303, 6097780, -3169686, 3661997, 4212289, -4732517, -1650341, -1202054, 918586, -3352222, 1661079, 2160369, 3250753, -1673964, -3966402, -1387811, --2173790, 1264331, 1544041, -4820027, -601832, -3312494, -2651606, 896038, -3938485, -6322729, --1177895, 6192269, 1378148, 2161442, 344671, 1416266, 855772, 2273112, 2459406, 6944962, -530428, -3100430, -3981435, -868120, -1890323, -525060, -8060580, 1662152, -562104, 2565169, --1066763, 704375, -1913408, -957778, 7913477, 1571958, 7257958, -2471754, -1306744, 540092, -2075543, 688805, 2471754, -2423972, 2683281, -2823941, -1725503, 1425392, 1058710, -120259, -144418, 42950, -590021, 181999, -1053341, -115964, -349503, -192737, 489626, 531502, --573378, -1040456, -613643, 49392, 61740, 155693, 361314, -443992, -444529, -452045, -134218, -185220, 585189, 8590471, 9932649, 7619272, 5680094, 8010114, 3267933, 3473018, --718333, 2265059, 8458401, 886374, 2588792, -3153580, -2079301, 6456947, -4329864, -7933342, -2408403, -6630893, 5721970, 1330903, 6863358, -2197413, -418759, -1705102, 2262911, 2727304, --85899, -6755447, -1379758, 5757941, -3832722, 2587181, 1538135, -1318018, -1651415, 6400038, -4847408, 11176579, 4489315, 912681, 2689187, -963146, 688269, 3508988, 2109903, 9523016, --4078608, -2739652, 671626, 2439542, -1495722, 4404489, -4136054, 841277, -266825, -3198677, -994822, 939524, -4305705, -5850819, -3605088, 4599910, 2241973, 537, -371515, 3466576, -266825, 1136556, 6047851, 2963528, -1438814, -981937, 5376226, -4679904, 619012, -4220879, --1889786, -5449777, 1480153, -1149978, -3218541, -2129230, 3150896, 1922535, 563178, 1830730, --3015604, -526670, -257161, 2316061, 67646, 146029, 431644, 676994, 1718524, 1907502, -1520955, 97174, 812823, 1724429, 98247, -1607392, 1468342, -826244, -314069, 336618, --267362, 1261110, 1165547, 563178, -2684, -466541, -462246, 529892, 733903, 246961, -1120450, -2288144, -1449015, 1114007, -79994, 18690088, -331786, 9156333, -1661079, -1432372, -9819906, -9614284, -3331821, -750009, 4849018, 3368865, -2062121, 1869385, 904628, -8710194, -2198487, 4656282, 4132296, -9763534, -3438121, 1096827, -7005629, -1930588, 527744, 309238, -943819, -1083406, 4449049, -3161633, 3535295, 7308424, 7298760, -2134599, -4205847, -760746, -8221641, -483721, -457951, 47782, 793495, -4293357, 713501, 3449933, 500364, 805843, -3296924, -2215130, 2211908, 1278827, -929324, 5770826, 544924, 4583267, 883690, -1564442, -1982127, 3054796, 2625836, -157840, -4558571, -4147328, -5484137, -2455111, -225486, -22012, --672699, 4027606, 3449933, -2666638, -5385352, 140660, 2736431, 3308736, -3313031, -642098, -3115462, -317291, -482647, 4163434, 1919314, 1953136, -1614371, -1388348, -301185, 1770600, -2646237, 19864, 1988570, 693100, 112743, 350577, 621160, 2465848, 1825361, 2779381, --1496259, 1284195, 125628, 306016, -479426, 242666, 348966, 70867, 294742, -518617, -1275605, 1268089, -1308891, 266825, 673773, 771484, -487479, 2552821, -5022965, -13935558, --3653944, -4718022, 877247, 2324651, -2402497, -2791192, -26329224, 526670, 8410083, -6139119, --9884330, 7365332, -11182484, -1689533, -5032628, -5861557, -3692061, -3684008, 339302, 4461934, --878321, 2484102, -2907156, 3362423, -2647311, -3993783, 1687922, -1502165, -6357626, -8040179, -3768297, 374736, 3718905, 1152662, 8408472, 1190780, 2868501, -4082903, -7135552, -2056753, --3580929, 7045357, -3369402, 176094, 1755568, -3510599, 9787694, 6527814, 63351, -7866233, --10048613, -3391414, 3240016, -9002251, -304406, -4382478, -8640400, 788663, -13485124, -2971581, --1506460, -4991826, 8933532, -562641, -1500017, -152471, 5566278, 7200513, 2085744, -7217693, --2413235, -1829656, 3805341, 1816771, 2150705, -4055523, -5246840, 4050691, 2682207, 1016834, -1283658, -254477, 2236604, 643708, 3410204, 990527, 734976, -294205, -179852, 558346, -2172717, 3207804, 1892470, -781684, 1202591, -4005594, 1998234, 2390149, -745177, -331786, -664109, -900333, -323196, -217433, -1304596, -1291175, -776852, -376347, 686121, 1597728, --316217, -1842541, -77846, -2604898, 825707, 3589519, 1474248, 2123325, 1436130, 5578626, --15049029, -22181896, 2692408, -5082557, 4913980, -6227703, -11041287, 250182, 10096931, 2045478, -6184753, 4935991, 3816615, 2438468, -3576097, 2688113, 6703370, -10564009, -4959614, -3529926, --2385318, 3839164, -889595, 1306207, 6960532, 6059125, -2488397, -5966784, 1380295, -3350611, --2550674, -5783174, -4013647, -8795556, 2105071, -3299072, -75699, 7778723, -1560147, 1478543, -2060511, -5606006, 4700842, 4631586, 6500433, -5711233, 10263898, -1680943, -7503845, -6349573, --8208220, 7644505, -2887829, -8728447, 2653753, -1346472, -6145025, 6545530, 8798777, -3036542, --7341173, 5452998, 1732482, 4276714, -634581, 11834782, 6957847, -6897718, -3422015, -3250217, --2687576, 3958886, 5418638, 7030862, -9127, 941672, 2698313, -2773475, 2566780, -752156, -4539781, 6462852, -8741332, -3885872, -4406100, -2727841, -4501663, -325344, -3190624, 1500017, --193274, -253403, -392990, 1202054, -2172180, 5503464, -704375, 2368138, 803159, 1175747, --1090922, 256087, 125091, 369367, -1871532, 436476, -1227287, -1864016, -2911988, -795643, --201863, -418759, 77846, 406411, -616328, -322123, -1116155, -934692, 1684701, -20713554, --13959, -3762391, 1373316, -37581, 7816304, 5732708, 8096014, -1312649, 11043435, -5131949, -7510287, 9193377, 1695975, 9163313, 1980517, 2383170, -2566780, -935229, -3849901, 7265474, --446140, -824634, 10234907, 6183143, 100395, 2759517, -865973, -340913, 6658273, -3801583, --6577206, -3758, -907849, 3381750, -18609020, 11196980, 12080132, 4769025, 2355253, 322659, --5913633, -12410845, 8205535, -5000416, -5640366, -3777424, 7365332, -5180805, 4545686, 4612258, --4405563, -2917894, -10717554, 4938676, -6970732, 4140885, 694174, 3708168, 6519224, 10406706, -4465156, -4798016, -11443940, -2015950, 7004018, 11467563, 8608188, -1737314, -2275796, -7371238, --12257300, -1297617, 8477192, 3783866, 2672007, -2720325, 11250130, -383863, 3781182, 1088774, --2185602, 1063004, -5753646, -2799245, -2915746, 1911797, -1455457, -4106526, -2434710, -2838437, --3081639, 1225139, -4380330, -1820529, 825171, 749472, 3359738, 175557, 461709, 575526, --934692, 2750927, -889058, 3128884, 1112397, -904628, -2430415, -133144, 3001109, 2143189, --405874, -2954938, -803159, 2596308, 2308008, 322659, -562641, -366683, -1816234, 1995549, -7925289, 27070642, 14795089, -1302986, 2630668, 2419140, 6029597, 10715407, -1428077, 2122788, -18177912, 1872606, -719407, 10947335, 7693360, -7514046, 4570919, 1121523, 7361574, 5042292, --12503187, 9601936, -5748277, -800475, 1153199, 7523172, 1418413, 2059974, 5775121, 6568616, --6162741, 6746857, 20080582, -3499325, 9180493, 9372692, -4903242, 7357816, 2011655, -4783520, --5140002, 3584150, -4587562, -12414066, -1541356, -555125, 1347009, -15899432, -3822521, 4920422, --10010495, -6761353, -16531329, 5508833, 7697655, -11329050, -3987877, -5456756, 12071006, 305480, --6816650, -4799089, -7599408, 3856881, 10106058, -7135552, 3925063, -3030636, 4896263, 11373073, -4821638, 8959302, 9147743, 11354283, 1779190, -6363531, -6312528, 4550518, 7230578, 1036698, -4868346, -5093831, 2068027, -629213, -1549946, -5350456, 762357, -2380486, 332860, 4335233, -1864016, 1819992, 1492501, 4786204, -2959233, 156766, -787053, 1411434, -549219, 145492, -2063732, 521839, -1680943, 2548526, -554588, -3714610, 2302639, -2662880, -2108829, -2761664, --5537287, 2964601, -1269700, 2501282, -295279, -558883, 738198, 4083440, 2769717, 3637301, -1705102, -92342, 1498944, 4193499, -1735704, 27827630, 7488276, 1127966, -1559073, -4036733, -221728, 5203890, -3329137, -6440841, -9475772, 710280, 6854231, -8483097, 4221416, 5564667, --2335389, 18779208, 6696928, -4686346, -3153043, -1422708, 6804302, -2792803, -6209449, -6908992, -4377109, -15066208, 590558, -4263829, -5439576, 4797479, 1126355, -5538897, -3345243, -5324686, -7573638, -2502892, -11855720, -1474248, 338766, 860604, -6847789, -9755481, 985695, -1851131, --1253057, 3269544, -1993402, 9073655, 1950989, 5396627, -5746130, 13223667, 3922916, -6664716, -8850854, 16737488, -4742718, -4172024, 8670465, 7888245, 3382287, 4780836, -10276783, -2810519, --11116449, 3242164, 10580115, 4698694, -13044353, -2723546, 4242891, -13025562, -20258824, -1819992, -756451, 5721434, 18564460, 1416266, -2013803, -5830955, -4281546, 2833068, 4775467, 3870303, --192737, 2019172, 272194, -4145717, 2623688, 3122441, -5107253, -5040144, 5703180, -1947231, -3391951, 2433636, 1758252, -1483911, 1301912, -213138, 2039036, 397821, 3048353, 2684, -2705293, 1745904, 684510, -2481417, 5527086, 1646583, 5055714, -1124208, -1553704, 1723893, --3216394, -650151, 2461553, -3207267, 908922, 1714229, 1208496, 1090922, 2758980, -1133335, --4726075, -153545, -399969, -5216238, 861678, -2240899, -21597244, 10154376, 28708098, -11808476, -20148228, -4558034, -4341675, -6311992, -10407780, 7714835, 296353, 5264020, 5217849, -18865106, -251256, 8759049, -7642895, -4059281, -11874511, 20998632, -13105556, 10351945, 9787157, -12527883, --5151277, -4384088, 8820789, -10026064, -4078608, 10170483, -1770063, -2743947, -4956929, 12409234, -2196339, -2025614, -5102421, 314069, -9446781, 10229001, -1207960, 4698694, 25551834, 17132624, --14700062, -10416906, 4021163, -1336272, 10695005, -5883032, -8615704, -3071975, -16022375, -6193880, --1894618, -12315282, -7027104, 27303644, 6523519, 94489, -1331977, -302795, 8047158, 9620190, --2019172, 9503689, 774168, -5217312, 1040456, -14565845, -1084479, -13495861, -7276749, 8141111, -11933567, -17895518, 7279433, -4580583, -5667210, 8681203, -1254667, -8231305, -452045, -3219615, --6437619, 3321620, 2416456, -4493610, -11087995, -5339718, -1087164, -863825, 8812199, 2622078, -2229625, -4765803, 119185, -1952600, 4750234, 5285494, -2768643, 2269890, 4023848, 4352413, -3459059, 4947803, -1893007, 365609, -3325379, 293132, -3879966, -2077690, 1580011, -1067836, --3109020, -729071, 1772211, -5243082, -2506650, -2831457, -1489280, -1985349, -2296734, -22871238, -3881040, 21264920, -5629629, -5392869, 4541391, -6566468, -5428302, 6019397, -852551, -1168768, --315680, -14387067, 24401320, -25975962, -2564632, -570157, 8846022, 5385889, 254477, -9845676, --7162395, 3136400, 19036368, -1527398, -8491150, -5733782, -13627394, -898185, -8033737, -6310381, --2864206, 4277251, -525060, 662499, -9255118, 1872606, 2531883, 5896453, 4808753, 5937256, --12537010, 83752, -2620467, 8217883, 1997160, 16645146, 3513283, -3819300, 1389959, -9009231, --147640, 7287486, 9286256, -14233522, -11143830, -1006096, 14803142, -23251880, 6035503, 26917096, -14701136, -7150584, 2406256, -14409078, 6016713, 13321915, -22809498, 5127654, -11153493, -3082713, --30894774, 207232, -13060459, 12065100, 752156, -14267344, 9445170, -861678, -18546206, -2408940, --11755325, 7678328, -6582038, -9590125, 13063680, -2478196, 2257005, -4315906, -5767068, -1495186, -5543729, 4261682, -3224984, -732829, 169114, -3187403, 1974074, 3256122, 4577899, -4629975, -1786706, 2556579, -5640903, 418222, 2388002, -3929895, 321586, -2519535, 6107444, 3375844, -7446937, -3488050, -2867428, 2585034, -7217693, -689879, -2117419, -1052267, -436476, 1591285, --4077535, 330712, -599148, 1477469, 1316944, 326418, -4115116, -6231998, -17362406, 27469000, -8078297, 14367202, -16182363, -18261664, -3241090, 4803921, -4947266, -2471217, 9358734, 2500745, -3004867, 8118025, -20089172, -2248416, 411780, 5108327, -13927505, 1814087, 2538863, -9825811, --5260261, -13523241, -9994926, -110059, 4475356, -10953240, 958851, -4987531, -9561671, 3728569, -114354, 7705172, -21306796, -22435836, 4776004, -1971390, 8532489, 18728204, 2208150, -11868605, -16889422, -8422431, -15678241, -12209518, -5102421, 1286343, -16660715, -6533719, 16535087, 22278532, -9491878, 6191732, 4719096, -2648921, 14287746, 7978439, -16574816, -9138080, 130460, 1586990, -15625628, 9945534, 2529199, -2474975, -1904281, -7730941, 10374494, 8040716, 18020610, 4032974, -5260261, 2103997, 32339494, 3578782, 12532715, -13469017, 1158031, 12198781, -29294362, 2308008, -3873524, 8156680, -3043521, 4289599, -3835406, -1095217, 5017059, -2537252, 15516106, -6343130, -9063455, -2509872, -5529234, -3069828, -5981816, 49392, 2408403, 2924336, -1265942, -3128347, -6446209, -2074469, 4301947, -2442763, -2515240, -4866735, 4826470, 5165235, 1089311, 356482, --4020090, -7016903, 3146064, -761283, 156229, 7984881, -2365990, 6969122, -1177895, 3994857, -2749853, 5316096, 1157494, -5282810, -1056025, 18524730, 1234266, 23019414, -827855, -10707890, --11653320, -21792128, 3919695, -9266392, -668404, 1728188, 7727720, 11229729, 19123878, 19760070, --3147674, 17575006, -1388348, -1675037, 6625524, 14788109, 6425271, 4039954, -23823646, -12331388, --19385872, 9651328, 19278498, 3621194, -8428336, 13373991, 19339164, -2762201, 2945274, -4678830, -16249472, 13655312, 11637214, -7062000, -12373801, -2092723, -3259343, -27525908, 4714801, 3614215, -2377801, -7097971, -3699041, -30680026, -10873247, -27857694, -4915053, -20894480, -10823318, 19896972, -5254356, 20970178, 1344862, -17402134, -8460012, -18101676, -34395708, 4724464, -21274046, -6315750, -20208894, 8330626, 7925826, 1549946, -3888556, -1600949, 3951907, -14904073, 11832635, -25341380, --26026964, -1559073, -2232846, -3362960, -19116362, -4457639, 25270514, -1491964, 1586454, -6848862, --21834004, 11005854, -14667313, -5887327, -14598594, -9166534, -6795175, -4781909, -5224291, -3364033, -405874, 2492155, -13645111, -6009733, 2717641, 2354179, 7746511, 3488050, -4479651, -5879274, -5093295, -9366787, -1316408, 2772402, -7009924, 2156074, 2253784, 5070209, -4755603, -1781875, --2490544, -468151, 3534221, -2121177, -201327, -2813741, 5561983, 7453379, -2379412, -1302986, -2144263, 2445984, 4849018, 6596533, 1337882, -1222992, -1499481, 10827613, 21814676, 18986976, -20456930, -11790222, -20521890, 15783468, -9327058, 16312823, 4903779, -26205206, 6609955, 4881767, --29501594, 15863999, -13431436, -13735842, 8075613, 8979166, 1436667, 10658498, 835371, 532576, --6892886, -3997004, 6512244, -4098473, -10088341, 680215, -18984292, 6874632, -24141474, -14697915, -938987, 9596031, -3259343, -9995463, 3792993, 7569880, 5675263, 447213, 19519552, -44758392, --10118406, -12255152, -14819785, 19423990, -15608448, -2136746, -36056252, -10095858, -4237522, 1887638, -24129664, -5804112, 3099356, -14533632, 12267500, -18084496, -11659762, 9408126, -41864120, 6108517, -22467510, 29111826, 22291954, 14082661, 32792076, 18082886, -326954, -8089034, -8336532, -12651900, --28152974, -3052648, 2707977, -39905616, -15721191, -12059194, -8934606, 12784507, 33514166, 39072392, -25952876, -13100724, 10756209, -8442295, -1747515, 8854075, 6099391, -3397856, 2202781, 2920041, --685584, 1354525, -6046777, 3524558, 11067057, -5151277, 1566589, -9665824, 2483565, -4523675, --550293, -468688, 8583492, 15027017, -5273146, 948651, 3773129, 6124087, -8965744, -14054207, -391916, 10954314, 3310883, -8962523, 8534100, 4427038, -8978092, 6394670, 4222490, -3500935, --2651606, -966368, -1552631, 1657857, 3568044, -3190624, 6295349, -38429756, 52076, 6413460, -26948772, -8773544, 12455405, 11333345, 5961952, 6186901, -42038068, 33146410, 18051748, 41068476, -15065672, -1792612, -15291157, -9704479, -9589588, -14897094, 10586558, 7789997, -15150497, -17205638, -9038759, 12295418, 21408802, 5978058, -13383655, -19946902, 4159139, 3326989, 1311039, 2338073, -38035692, 12839268, 7208566, 12482786, 13706314, 15442555, 271657, -24254218, 16926466, 53067544, --5529234, -14900315, -32452236, -7056095, 42749956, 4901632, 17620104, 5822902, -59381144, 12102681, -10508174, 1116155, 5954972, -4282083, 766652, 11948062, -32051194, -13390634, 26916024, 9888625, -3547643, -24182814, 16994648, 6198712, -21823802, -23673322, -15955804, 21332028, 44552232, 41450728, -45671608, 46326056, 1651952, -20921860, -17251274, -40886480, -13553306, 12647068, -33231236, -514859, --27127014, 137976, 35919348, 13861470, 14653355, 17716740, 10958609, -11272142, -3921842, -13850733, -19391778, -12147241, -10763188, 3281355, -2560338, -7346005, -13286481, -4059818, 13094818, 12326019, --6194417, 19210852, -1219771, 190052, -9166534, 2565169, 9743670, -2869575, -8008504, -7776575, -4676146, -4461934, 10642392, 6590628, 8537858, 12638478, -13640816, 3003793, 757525, 5577552, --3161633, -6071473, 11278047, 2397129, 9115531, -5568962, 3042448, -8232379, -3031710, 18506478, -39304320, -79104704, -27183922, 5612449, -45367204, -42624328, -17676474, -26087632, 3467649, -19345070, -50361176, -5814312, -17083232, -7665443, -37550364, -11076721, -30185030, -13320304, 5966784, -40184252, --6053220, 30222612, -25134148, -7914551, 9473087, -655519, 13443248, 2189360, 670552, 10962367, -4882841, -20211042, -3058017, 17053168, -8230231, -25048250, -7421167, -30268246, -14009646, -52650392, -5749888, -36020280, 17826262, 5860483, -12355010, -46495704, 4943508, -5384279, 57388280, 22052510, -1742683, 30289720, 14041859, -191126, 25724706, -29986924, -13324599, 1733556, 22841172, -24916716, --14130979, 81717656, -7146826, 42104100, -32479080, -543850, -22997402, 17404818, -7701950, 27411556, -44479756, 705985, -30342334, 26135950, -32370094, -15459735, 11788075, -34744136, -22270480, -11383274, -25565792, 47102368, -55925844, 47225312, 10195715, 13495861, 5923297, 6254010, 5742372, -7475928, -9284646, 24259586, -11813308, 3903589, -1746441, 2797098, -26115012, -5238250, -7522635, 7659001, -8961986, 25959856, -15778099, -9969693, -12139725, 17890150, -22679038, 5218386, 9333501, 7531225, -9414568, -38922604, -8448738, 13487271, -5898601, -16860430, -1423245, 4148939, 1722819, 15931644, -9024263, 12569759, -12210592, -11953968, 13918378, 3483219, 9623948, -9053791, 9692131, 5696201, -2499134, 2945811, -2809446, -4368519, 1028108, -29680908, 61337500, -35249332, 22557706, 20098300, --31913754, 17479444, 9641665, 6868727, -5671505, 24203214, 12526272, -30871152, 21869436, 25410638, -4945655, 4269735, 15387257, -452582, -30671436, 39799852, -22766012, 8959302, -16937204, -3965866, -4992900, -7532836, 32456530, 7228430, -4317516, -7886097, -1728188, 6283001, -33088428, 10395431, --17173426, -11668889, -7974144, -170188, -16263967, -7813620, 3891777, 34215320, 316217, -7301982, --21922050, 9025337, 5979132, 902480, 26571888, -6596533, -2839510, 31562104, 9898289, 1718524, --30642444, -16131360, 19659140, 10899016, -28714004, 772557, -65161096, -32382980, 58272504, -13823889, -31484258, 41191956, 11683385, 6874095, 18635864, -8151848, -22938884, 12104292, 3764002, -1663226, -26243324, 16935592, -19002546, -45628120, -9494562, 18320720, 5811091, -1301912, 14642617, -17374216, -25400436, -12702366, 9448928, 11681774, 5123359, 17268990, 13179644, 20976620, 2316061, -5744519, -7584912, 20320028, -5480379, 17758080, 10705743, -11890617, 3539590, 9319542, 6350646, 3694746, -12824235, 10557566, 4645544, 21310554, -6926172, 2226941, -3199214, -1634772, -5570036, 18888730, -15734076, 12454331, -6069863, 2189897, 22462142, -6106907, 16445430, 14614163, -44560, 25635586, --23467164, 3084860, 35392680, 4341138, 9975598, -7570954, 24894168, 4635344, 34817152, -10747082, --58195732, 9895605, -7023882, 20044612, 6117107, -19729470, 10212895, 12011413, -22508312, -24697136, --16550120, -41238664, -41522672, 28557238, -6638409, -42649024, -13100724, 4364761, 14085882, 13500693, --26151518, -28333900, 2755759, 39402568, -18881214, 15198279, -26550414, 9408663, -29949880, 19463718, -20532628, -14691473, -30823370, -21211232, -3466039, 12053826, -13250511, -8746701, -11037529, -39209292, --33886756, 17708150, -28455232, -5858873, 10095858, -23521388, -37936908, 14419279, 19859392, -2597382, --45664092, 20352776, 17879948, 57647588, 239444, 15086073, 11271605, -24718074, 9415105, -7732015, --49902688, -7713225, 30466350, 7181186, -25256556, -62668940, 39507256, 50442244, -15044734, 40782324, -47543140, 2365453, 2130304, 37502580, -24372328, 1798518, 62941136, -46510200, 26975078, -39855684, --10936597, -3330210, 27095338, -9299141, 3921842, 15114527, -491774, -35291208, 38757248, -7132330, --4560182, 5862631, 16180752, -26554172, 11578158, 6713571, -3997004, 7969312, 9423695, -24617142, --3323768, 5623723, 12886513, 26679264, -2258079, -23589572, 11948062, 27384174, -21862458, 26707718, --12692702, -2950106, -9419400, 30129196, -20893942, 7066832, 18897320, -13168370, 4753992, 3227668, --17411798, 3704946, 7532836, -3423089, -13214541, 8490613, 10998338, -6270116, 21855478, -32947768, -8114804, 9451612, 479963, 1843078, 22563610, -5069672, 12657269, -26199300, -82958368, 22434224, --9587978, 61962956, -21329882, -13605383, -24897388, -70965208, 32439352, -41350872, -24209120, 1274532, --116501, 54758148, -39202852, -27409408, 36019208, 21478058, 18760418, -6782827, 17922362, -12677133, --18096308, -16605954, 42241540, 35188668, 54930484, -17467632, -20617990, 998580, -3673271, 20211580, --33140504, 7125888, -34831112, 18615998, 34078420, 11746199, -28144384, 19184546, -24816322, 55819544, -28362890, 7931194, 7473780, -8582955, -43789340, 24760486, -59385440, 12433930, 11016054, 29033442, -22980222, -51228224, 15430207, -32255742, -19198504, 14000520, -5116380, 19171660, 12230993, -46832860, -19138912, 43101608, 56913148, -16477642, 16809428, -23204098, 39943732, -56719340, -3005403, -10296110, -17919678, 37389300, 53625888, -42883636, 10692858, -57398480, 36928664, 75728328, -19220516, -51527796, --4144644, -38849588, 49700288, 12663711, -25367150, -7126962, 2895882, -8446590, 35501124, 13418552, --20044612, 19153406, -28385438, 1903744, 26653494, -5506685, -32715840, 36341864, -52207476, 15192910, --7863548, 20931524, -1293322, 13023951, -12016782, -6388227, 5339181, 4643397, 5568962, 24828670, --25310242, -21232170, 1212791, 5774047, -5821292, -26372172, -19295140, 38765836, 10475962, -17149804, --19804094, -44125956, 52938692, 41467372, -16082505, -14120779, -30808338, 1226750, 39571144, -65168076, -46535972, -6029597, -1832340, 15484968, 12962748, 18437758, 5099200, 9034464, -22964116, 21797496, -5909875, -23331336, 15726560, -9244917, -431107, 21314848, 12249784, -33216204, 18631032, -15684147, -27653146, -20119238, 6947110, -10245644, 12831215, -9760850, 5859409, -14568529, 31811750, -2743410, -794569, 9570798, 10612327, -16065325, -3444027, 7380365, 10554882, 9806484, -11294153, 4141959, -381715, -32292786, -2780455, 8512088, 11829951, 5298916, 7549479, -29033442, 4549981, -1575179, -2847563, 6830609, -5864241, 6468221, 4767414, 2878165, -7144678, -6452115, -2346663, 33879240, --11963095, 6852084, 12443057, -6927246, 11834782, -13424457, 11401528, 6113349, -9184788, -13504988, -8478802, -8243116, 6627135, -12131135, -10700911, -4716411, 15403900, -3862786, 1388885, 3237869, --1226213, 3828427, -12387223, 9426379, -8029978, 20545512, -19097036, 8999030, -11435350, 10276783, --9358197, 8242042, 125091, 13912473, -12050604, 6555194, -6215892, 801548, 2338610, 8239895, --8681740, 2103997, -9360344, 13187697, -11085311, -2977486, 6534256, 2785823, -5459441, -1520955, -7393786, 5019206, -18207976, 10189810, 802085, 170188, -2005750, 3723737, -2354179, 1992865, --1494649, 2407866, 514859, 4782446, -5214627, 13001940, -16545825, 51849920, -3747896, -16776679, --25608742, -11626476, -14381161, 18817862, 10864120, -13663902, 1125818, 1620813, 6129455, 852014, -13008382, 4502737, 10241886, -3510599, -384936, -3071439, 4792110, 11125039, -10340671, -60666, --5126581, 367757, 13538274, -7685307, 1303523, -3470871, 5323075, 2760590, -7456063, -2753611, -7960722, -2448668, 12991202, 9256728, -13595182, 4354023, 2859375, 7124277, 2991982, -12830141, -8665633, -2401961, 8426726, 6757594, -15337865, 4202626, 24696, 3448322, -1730335, -6729677, -10900627, -2685965, 4935991, 259846, -3301756, 5054103, -6542846, -918049, 9086540, -6260989, --7532836, 15180562, -9826885, 14161581, -1498944, -11477226, 23453206, -21559126, 18716930, -6649146, --11257109, 11868605, -11060615, 3266860, 3799972, -10804527, 9069360, -1949915, -722628, 5802501, --7536594, 9821516, -3211562, -762357, 2394444, -1683627, 3424163, -1653026, 527207, 2859375, --2796561, 4575214, -565862, -2619393, 5607080, -8749922, 4613869, -3897146, -1826972, 5440113, -423054, -1654099, 2795487, -2086817, 2774549, 1420024, -4085588, 2700461, 515396, -933619, --726923, 2436857, 490700, 4511327, -3606162, 1271847, 542777, -2574296, 4977330, -1470489, --835908, -25397216, -43562780, 54951424, 157414304, 24879672, 15255724, -115089016, -142278304, -45605572, --27970438, 96225520, 146793936, 75520024, 21888228, -49427556, -106209176, -96898224, -81145352, 6397354, -121610392, 101683352, 58327268, 19775640, -52042656, -67532992, -53611392, -51851528, -18273476, 24542516, -33777232, 69821672, 50016504, 12097849, -16935056, -10004589, -56225416, -27357868, -28411208, -38532300, -22922240, 43156904, 24987582, 62845036, 16710644, -14973867, -24150064, -41849088, -33033668, -5214627, --10208064, 12797929, 26032870, 23144506, 16578574, 11244224, -5708012, -22995254, -16218870, -19131394, -6162741, 22230750, 7362111, 5432060, -9651328, -20007032, -3718368, -86436, -273267, 16134045, -14504641, 16172162, 6418829, -5624260, -17357574, -25213068, -25744034, -16796006, 17878876, 26396332, -32813550, 22639310, -5685463, -12861816, -13588203, -27021250, -11897596, 9809705, 5207648, 4850092, -7888245, 3741454, 3037616, -4217121, -5394479, 4221953, 9392557, -233539, -790274, -6490233, --8856759, -4651450, -5372467, -3205119, 6969122, -1260573, 14554570, 17908404, 10395431, -6248641, --10171556, -11458973, -14414447, -10586021, -14265197, 7611756, 19707458, 17926656, 10654203, 11185169, -4268661, -11062762, -21550536, -22101902, -11191611, -2306934, 7006166, 15702937, 23120882, 18925236, -3592203, -12224014, -20303384, -14921253, -4921496, 124017, 5583995, 3523484, 8735963, 11130408, -3325379, -4839355, -6562173, -3712462, -2729452, -2689723, -744640, 784905, 5194763, 3124589, -372052, -63888, -309238, -997506, -2262911, -2369748, 716186, 729608, 443992, -177704, -214748, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +11153493, -5529771, 440234, -3299072, -253403, 4714264, 2237141, 2957622, -2580202, 3663607, +-3787624, 4112968, 2056216, 4956929, 2093797, -943819, -5597416, 6019397, 4151086, 1525250, +708670, 557272, -2378338, -2726767, 3114388, 1904818, 2035278, 2986076, -3037079, -237297, +2806224, 3318399, -432181, -2484639, -4712116, 11274, 881542, -2855617, 1067299, 751082, +-4247186, -2305324, -322123, 2150168, 49929, -2079301, 3968550, 730144, -1340030, -2947421, +-651761, 336618, -5545877, 2549063, 3478387, -1942399, 4453881, 3631932, -574989, 3001109, +1785633, 5879274, 1860258, 1086627, -912681, 2203318, -4737349, 592706, 2279554, -2368675, +2609193, 3119757, 3454764, 2131378, 4538707, -994285, -2746095, -1451162, -1157494, 578747, +-1041530, -3544959, 1677185, -1685775, -1846299, -2160906, 821413, -27380, -1074816, -879395, +1411971, 78383, -153008, -403727, -129386, 634581, 951335, -179852, -45634, -826244, +234076, -1465658, 148176, 933619, 1284732, -936840, -953483, 192200, 841814, -10582263, +-7401303, -1053878, -4765266, -4078608, 2007360, -6026913, -5810554, 1671816, -2631741, -2362232, +2419677, -1903744, -4115653, -450435, -310311, -1165547, -1882269, -1114007, -4720169, -296890, +-3403762, -2465848, -128312, 4218732, -936303, 6097780, -3169686, 3661997, 4212289, -4732517, +1650341, -1202054, 918586, -3352222, 1661079, 2160369, 3250753, -1673964, -3966402, -1387811, +-2173790, 1264331, 1544041, -4820027, -601832, -3312494, -2651606, 896038, -3938485, -6322729, +-1177895, 6192269, 1378148, 2161442, 344671, 1416266, 855772, 2273112, 2459406, 6944962, +530428, -3100430, -3981435, -868120, -1890323, -525060, -8060580, 1662152, -562104, 2565169, +-1066763, 704375, -1913408, -957778, 7913477, 1571958, 7257958, -2471754, -1306744, 540092, +2075543, 688805, 2471754, -2423972, 2683281, -2823941, -1725503, 1425392, 1058710, -120259, +144418, 42950, -590021, 181999, -1053341, -115964, -349503, -192737, 489626, 531502, +-573378, -1040456, -613643, 49392, 61740, 155693, 361314, -443992, -444529, -452045, +134218, -185220, 585189, 8590471, 9932649, 7619272, 5680094, 8010114, 3267933, 3473018, +-718333, 2265059, 8458401, 886374, 2588792, -3153580, -2079301, 6456947, -4329864, -7933342, +2408403, -6630893, 5721970, 1330903, 6863358, -2197413, -418759, -1705102, 2262911, 2727304, +-85899, -6755447, -1379758, 5757941, -3832722, 2587181, 1538135, -1318018, -1651415, 6400038, +4847408, 11176579, 4489315, 912681, 2689187, -963146, 688269, 3508988, 2109903, 9523016, +-4078608, -2739652, 671626, 2439542, -1495722, 4404489, -4136054, 841277, -266825, -3198677, +994822, 939524, -4305705, -5850819, -3605088, 4599910, 2241973, 537, -371515, 3466576, +266825, 1136556, 6047851, 2963528, -1438814, -981937, 5376226, -4679904, 619012, -4220879, +-1889786, -5449777, 1480153, -1149978, -3218541, -2129230, 3150896, 1922535, 563178, 1830730, +-3015604, -526670, -257161, 2316061, 67646, 146029, 431644, 676994, 1718524, 1907502, +1520955, 97174, 812823, 1724429, 98247, -1607392, 1468342, -826244, -314069, 336618, +-267362, 1261110, 1165547, 563178, -2684, -466541, -462246, 529892, 733903, 246961, +1120450, -2288144, -1449015, 1114007, -79994, 18690088, -331786, 9156333, -1661079, -1432372, +9819906, -9614284, -3331821, -750009, 4849018, 3368865, -2062121, 1869385, 904628, -8710194, +2198487, 4656282, 4132296, -9763534, -3438121, 1096827, -7005629, -1930588, 527744, 309238, +943819, -1083406, 4449049, -3161633, 3535295, 7308424, 7298760, -2134599, -4205847, -760746, +8221641, -483721, -457951, 47782, 793495, -4293357, 713501, 3449933, 500364, 805843, +3296924, -2215130, 2211908, 1278827, -929324, 5770826, 544924, 4583267, 883690, -1564442, +1982127, 3054796, 2625836, -157840, -4558571, -4147328, -5484137, -2455111, -225486, -22012, +-672699, 4027606, 3449933, -2666638, -5385352, 140660, 2736431, 3308736, -3313031, -642098, +3115462, -317291, -482647, 4163434, 1919314, 1953136, -1614371, -1388348, -301185, 1770600, +2646237, 19864, 1988570, 693100, 112743, 350577, 621160, 2465848, 1825361, 2779381, +-1496259, 1284195, 125628, 306016, -479426, 242666, 348966, 70867, 294742, -518617, +1275605, 1268089, -1308891, 266825, 673773, 771484, -487479, 2552821, -5022965, -13935558, +-3653944, -4718022, 877247, 2324651, -2402497, -2791192, -26329224, 526670, 8410083, -6139119, +-9884330, 7365332, -11182484, -1689533, -5032628, -5861557, -3692061, -3684008, 339302, 4461934, +-878321, 2484102, -2907156, 3362423, -2647311, -3993783, 1687922, -1502165, -6357626, -8040179, +3768297, 374736, 3718905, 1152662, 8408472, 1190780, 2868501, -4082903, -7135552, -2056753, +-3580929, 7045357, -3369402, 176094, 1755568, -3510599, 9787694, 6527814, 63351, -7866233, +-10048613, -3391414, 3240016, -9002251, -304406, -4382478, -8640400, 788663, -13485124, -2971581, +-1506460, -4991826, 8933532, -562641, -1500017, -152471, 5566278, 7200513, 2085744, -7217693, +-2413235, -1829656, 3805341, 1816771, 2150705, -4055523, -5246840, 4050691, 2682207, 1016834, +1283658, -254477, 2236604, 643708, 3410204, 990527, 734976, -294205, -179852, 558346, +2172717, 3207804, 1892470, -781684, 1202591, -4005594, 1998234, 2390149, -745177, -331786, +664109, -900333, -323196, -217433, -1304596, -1291175, -776852, -376347, 686121, 1597728, +-316217, -1842541, -77846, -2604898, 825707, 3589519, 1474248, 2123325, 1436130, 5578626, +-15049029, -22181896, 2692408, -5082557, 4913980, -6227703, -11041287, 250182, 10096931, 2045478, +6184753, 4935991, 3816615, 2438468, -3576097, 2688113, 6703370, -10564009, -4959614, -3529926, +-2385318, 3839164, -889595, 1306207, 6960532, 6059125, -2488397, -5966784, 1380295, -3350611, +-2550674, -5783174, -4013647, -8795556, 2105071, -3299072, -75699, 7778723, -1560147, 1478543, +2060511, -5606006, 4700842, 4631586, 6500433, -5711233, 10263898, -1680943, -7503845, -6349573, +-8208220, 7644505, -2887829, -8728447, 2653753, -1346472, -6145025, 6545530, 8798777, -3036542, +-7341173, 5452998, 1732482, 4276714, -634581, 11834782, 6957847, -6897718, -3422015, -3250217, +-2687576, 3958886, 5418638, 7030862, -9127, 941672, 2698313, -2773475, 2566780, -752156, +4539781, 6462852, -8741332, -3885872, -4406100, -2727841, -4501663, -325344, -3190624, 1500017, +-193274, -253403, -392990, 1202054, -2172180, 5503464, -704375, 2368138, 803159, 1175747, +-1090922, 256087, 125091, 369367, -1871532, 436476, -1227287, -1864016, -2911988, -795643, +-201863, -418759, 77846, 406411, -616328, -322123, -1116155, -934692, 1684701, -20713554, +-13959, -3762391, 1373316, -37581, 7816304, 5732708, 8096014, -1312649, 11043435, -5131949, +7510287, 9193377, 1695975, 9163313, 1980517, 2383170, -2566780, -935229, -3849901, 7265474, +-446140, -824634, 10234907, 6183143, 100395, 2759517, -865973, -340913, 6658273, -3801583, +-6577206, -3758, -907849, 3381750, -18609020, 11196980, 12080132, 4769025, 2355253, 322659, +-5913633, -12410845, 8205535, -5000416, -5640366, -3777424, 7365332, -5180805, 4545686, 4612258, +-4405563, -2917894, -10717554, 4938676, -6970732, 4140885, 694174, 3708168, 6519224, 10406706, +4465156, -4798016, -11443940, -2015950, 7004018, 11467563, 8608188, -1737314, -2275796, -7371238, +-12257300, -1297617, 8477192, 3783866, 2672007, -2720325, 11250130, -383863, 3781182, 1088774, +-2185602, 1063004, -5753646, -2799245, -2915746, 1911797, -1455457, -4106526, -2434710, -2838437, +-3081639, 1225139, -4380330, -1820529, 825171, 749472, 3359738, 175557, 461709, 575526, +-934692, 2750927, -889058, 3128884, 1112397, -904628, -2430415, -133144, 3001109, 2143189, +-405874, -2954938, -803159, 2596308, 2308008, 322659, -562641, -366683, -1816234, 1995549, +7925289, 27070642, 14795089, -1302986, 2630668, 2419140, 6029597, 10715407, -1428077, 2122788, +18177912, 1872606, -719407, 10947335, 7693360, -7514046, 4570919, 1121523, 7361574, 5042292, +-12503187, 9601936, -5748277, -800475, 1153199, 7523172, 1418413, 2059974, 5775121, 6568616, +-6162741, 6746857, 20080582, -3499325, 9180493, 9372692, -4903242, 7357816, 2011655, -4783520, +-5140002, 3584150, -4587562, -12414066, -1541356, -555125, 1347009, -15899432, -3822521, 4920422, +-10010495, -6761353, -16531329, 5508833, 7697655, -11329050, -3987877, -5456756, 12071006, 305480, +-6816650, -4799089, -7599408, 3856881, 10106058, -7135552, 3925063, -3030636, 4896263, 11373073, +4821638, 8959302, 9147743, 11354283, 1779190, -6363531, -6312528, 4550518, 7230578, 1036698, +4868346, -5093831, 2068027, -629213, -1549946, -5350456, 762357, -2380486, 332860, 4335233, +1864016, 1819992, 1492501, 4786204, -2959233, 156766, -787053, 1411434, -549219, 145492, +2063732, 521839, -1680943, 2548526, -554588, -3714610, 2302639, -2662880, -2108829, -2761664, +-5537287, 2964601, -1269700, 2501282, -295279, -558883, 738198, 4083440, 2769717, 3637301, +1705102, -92342, 1498944, 4193499, -1735704, 27827630, 7488276, 1127966, -1559073, -4036733, +221728, 5203890, -3329137, -6440841, -9475772, 710280, 6854231, -8483097, 4221416, 5564667, +-2335389, 18779208, 6696928, -4686346, -3153043, -1422708, 6804302, -2792803, -6209449, -6908992, +4377109, -15066208, 590558, -4263829, -5439576, 4797479, 1126355, -5538897, -3345243, -5324686, +7573638, -2502892, -11855720, -1474248, 338766, 860604, -6847789, -9755481, 985695, -1851131, +-1253057, 3269544, -1993402, 9073655, 1950989, 5396627, -5746130, 13223667, 3922916, -6664716, +8850854, 16737488, -4742718, -4172024, 8670465, 7888245, 3382287, 4780836, -10276783, -2810519, +-11116449, 3242164, 10580115, 4698694, -13044353, -2723546, 4242891, -13025562, -20258824, -1819992, +756451, 5721434, 18564460, 1416266, -2013803, -5830955, -4281546, 2833068, 4775467, 3870303, +-192737, 2019172, 272194, -4145717, 2623688, 3122441, -5107253, -5040144, 5703180, -1947231, +3391951, 2433636, 1758252, -1483911, 1301912, -213138, 2039036, 397821, 3048353, 2684, +2705293, 1745904, 684510, -2481417, 5527086, 1646583, 5055714, -1124208, -1553704, 1723893, +-3216394, -650151, 2461553, -3207267, 908922, 1714229, 1208496, 1090922, 2758980, -1133335, +-4726075, -153545, -399969, -5216238, 861678, -2240899, -21597244, 10154376, 28708098, -11808476, +20148228, -4558034, -4341675, -6311992, -10407780, 7714835, 296353, 5264020, 5217849, -18865106, +251256, 8759049, -7642895, -4059281, -11874511, 20998632, -13105556, 10351945, 9787157, -12527883, +-5151277, -4384088, 8820789, -10026064, -4078608, 10170483, -1770063, -2743947, -4956929, 12409234, +2196339, -2025614, -5102421, 314069, -9446781, 10229001, -1207960, 4698694, 25551834, 17132624, +-14700062, -10416906, 4021163, -1336272, 10695005, -5883032, -8615704, -3071975, -16022375, -6193880, +-1894618, -12315282, -7027104, 27303644, 6523519, 94489, -1331977, -302795, 8047158, 9620190, +-2019172, 9503689, 774168, -5217312, 1040456, -14565845, -1084479, -13495861, -7276749, 8141111, +11933567, -17895518, 7279433, -4580583, -5667210, 8681203, -1254667, -8231305, -452045, -3219615, +-6437619, 3321620, 2416456, -4493610, -11087995, -5339718, -1087164, -863825, 8812199, 2622078, +2229625, -4765803, 119185, -1952600, 4750234, 5285494, -2768643, 2269890, 4023848, 4352413, +3459059, 4947803, -1893007, 365609, -3325379, 293132, -3879966, -2077690, 1580011, -1067836, +-3109020, -729071, 1772211, -5243082, -2506650, -2831457, -1489280, -1985349, -2296734, -22871238, +3881040, 21264920, -5629629, -5392869, 4541391, -6566468, -5428302, 6019397, -852551, -1168768, +-315680, -14387067, 24401320, -25975962, -2564632, -570157, 8846022, 5385889, 254477, -9845676, +-7162395, 3136400, 19036368, -1527398, -8491150, -5733782, -13627394, -898185, -8033737, -6310381, +-2864206, 4277251, -525060, 662499, -9255118, 1872606, 2531883, 5896453, 4808753, 5937256, +-12537010, 83752, -2620467, 8217883, 1997160, 16645146, 3513283, -3819300, 1389959, -9009231, +-147640, 7287486, 9286256, -14233522, -11143830, -1006096, 14803142, -23251880, 6035503, 26917096, +14701136, -7150584, 2406256, -14409078, 6016713, 13321915, -22809498, 5127654, -11153493, -3082713, +-30894774, 207232, -13060459, 12065100, 752156, -14267344, 9445170, -861678, -18546206, -2408940, +-11755325, 7678328, -6582038, -9590125, 13063680, -2478196, 2257005, -4315906, -5767068, -1495186, +5543729, 4261682, -3224984, -732829, 169114, -3187403, 1974074, 3256122, 4577899, -4629975, +1786706, 2556579, -5640903, 418222, 2388002, -3929895, 321586, -2519535, 6107444, 3375844, +7446937, -3488050, -2867428, 2585034, -7217693, -689879, -2117419, -1052267, -436476, 1591285, +-4077535, 330712, -599148, 1477469, 1316944, 326418, -4115116, -6231998, -17362406, 27469000, +8078297, 14367202, -16182363, -18261664, -3241090, 4803921, -4947266, -2471217, 9358734, 2500745, +3004867, 8118025, -20089172, -2248416, 411780, 5108327, -13927505, 1814087, 2538863, -9825811, +-5260261, -13523241, -9994926, -110059, 4475356, -10953240, 958851, -4987531, -9561671, 3728569, +114354, 7705172, -21306796, -22435836, 4776004, -1971390, 8532489, 18728204, 2208150, -11868605, +16889422, -8422431, -15678241, -12209518, -5102421, 1286343, -16660715, -6533719, 16535087, 22278532, +9491878, 6191732, 4719096, -2648921, 14287746, 7978439, -16574816, -9138080, 130460, 1586990, +15625628, 9945534, 2529199, -2474975, -1904281, -7730941, 10374494, 8040716, 18020610, 4032974, +5260261, 2103997, 32339494, 3578782, 12532715, -13469017, 1158031, 12198781, -29294362, 2308008, +3873524, 8156680, -3043521, 4289599, -3835406, -1095217, 5017059, -2537252, 15516106, -6343130, +9063455, -2509872, -5529234, -3069828, -5981816, 49392, 2408403, 2924336, -1265942, -3128347, +6446209, -2074469, 4301947, -2442763, -2515240, -4866735, 4826470, 5165235, 1089311, 356482, +-4020090, -7016903, 3146064, -761283, 156229, 7984881, -2365990, 6969122, -1177895, 3994857, +2749853, 5316096, 1157494, -5282810, -1056025, 18524730, 1234266, 23019414, -827855, -10707890, +-11653320, -21792128, 3919695, -9266392, -668404, 1728188, 7727720, 11229729, 19123878, 19760070, +-3147674, 17575006, -1388348, -1675037, 6625524, 14788109, 6425271, 4039954, -23823646, -12331388, +-19385872, 9651328, 19278498, 3621194, -8428336, 13373991, 19339164, -2762201, 2945274, -4678830, +16249472, 13655312, 11637214, -7062000, -12373801, -2092723, -3259343, -27525908, 4714801, 3614215, +2377801, -7097971, -3699041, -30680026, -10873247, -27857694, -4915053, -20894480, -10823318, 19896972, +5254356, 20970178, 1344862, -17402134, -8460012, -18101676, -34395708, 4724464, -21274046, -6315750, +20208894, 8330626, 7925826, 1549946, -3888556, -1600949, 3951907, -14904073, 11832635, -25341380, +-26026964, -1559073, -2232846, -3362960, -19116362, -4457639, 25270514, -1491964, 1586454, -6848862, +-21834004, 11005854, -14667313, -5887327, -14598594, -9166534, -6795175, -4781909, -5224291, -3364033, +405874, 2492155, -13645111, -6009733, 2717641, 2354179, 7746511, 3488050, -4479651, -5879274, +5093295, -9366787, -1316408, 2772402, -7009924, 2156074, 2253784, 5070209, -4755603, -1781875, +-2490544, -468151, 3534221, -2121177, -201327, -2813741, 5561983, 7453379, -2379412, -1302986, +2144263, 2445984, 4849018, 6596533, 1337882, -1222992, -1499481, 10827613, 21814676, 18986976, +20456930, -11790222, -20521890, 15783468, -9327058, 16312823, 4903779, -26205206, 6609955, 4881767, +-29501594, 15863999, -13431436, -13735842, 8075613, 8979166, 1436667, 10658498, 835371, 532576, +-6892886, -3997004, 6512244, -4098473, -10088341, 680215, -18984292, 6874632, -24141474, -14697915, +938987, 9596031, -3259343, -9995463, 3792993, 7569880, 5675263, 447213, 19519552, -44758392, +-10118406, -12255152, -14819785, 19423990, -15608448, -2136746, -36056252, -10095858, -4237522, 1887638, +24129664, -5804112, 3099356, -14533632, 12267500, -18084496, -11659762, 9408126, -41864120, 6108517, +22467510, 29111826, 22291954, 14082661, 32792076, 18082886, -326954, -8089034, -8336532, -12651900, +-28152974, -3052648, 2707977, -39905616, -15721191, -12059194, -8934606, 12784507, 33514166, 39072392, +25952876, -13100724, 10756209, -8442295, -1747515, 8854075, 6099391, -3397856, 2202781, 2920041, +-685584, 1354525, -6046777, 3524558, 11067057, -5151277, 1566589, -9665824, 2483565, -4523675, +-550293, -468688, 8583492, 15027017, -5273146, 948651, 3773129, 6124087, -8965744, -14054207, +391916, 10954314, 3310883, -8962523, 8534100, 4427038, -8978092, 6394670, 4222490, -3500935, +-2651606, -966368, -1552631, 1657857, 3568044, -3190624, 6295349, -38429756, 52076, 6413460, +26948772, -8773544, 12455405, 11333345, 5961952, 6186901, -42038068, 33146410, 18051748, 41068476, +15065672, -1792612, -15291157, -9704479, -9589588, -14897094, 10586558, 7789997, -15150497, -17205638, +9038759, 12295418, 21408802, 5978058, -13383655, -19946902, 4159139, 3326989, 1311039, 2338073, +38035692, 12839268, 7208566, 12482786, 13706314, 15442555, 271657, -24254218, 16926466, 53067544, +-5529234, -14900315, -32452236, -7056095, 42749956, 4901632, 17620104, 5822902, -59381144, 12102681, +10508174, 1116155, 5954972, -4282083, 766652, 11948062, -32051194, -13390634, 26916024, 9888625, +3547643, -24182814, 16994648, 6198712, -21823802, -23673322, -15955804, 21332028, 44552232, 41450728, +45671608, 46326056, 1651952, -20921860, -17251274, -40886480, -13553306, 12647068, -33231236, -514859, +-27127014, 137976, 35919348, 13861470, 14653355, 17716740, 10958609, -11272142, -3921842, -13850733, +19391778, -12147241, -10763188, 3281355, -2560338, -7346005, -13286481, -4059818, 13094818, 12326019, +-6194417, 19210852, -1219771, 190052, -9166534, 2565169, 9743670, -2869575, -8008504, -7776575, +4676146, -4461934, 10642392, 6590628, 8537858, 12638478, -13640816, 3003793, 757525, 5577552, +-3161633, -6071473, 11278047, 2397129, 9115531, -5568962, 3042448, -8232379, -3031710, 18506478, +39304320, -79104704, -27183922, 5612449, -45367204, -42624328, -17676474, -26087632, 3467649, -19345070, +50361176, -5814312, -17083232, -7665443, -37550364, -11076721, -30185030, -13320304, 5966784, -40184252, +-6053220, 30222612, -25134148, -7914551, 9473087, -655519, 13443248, 2189360, 670552, 10962367, +4882841, -20211042, -3058017, 17053168, -8230231, -25048250, -7421167, -30268246, -14009646, -52650392, +5749888, -36020280, 17826262, 5860483, -12355010, -46495704, 4943508, -5384279, 57388280, 22052510, +1742683, 30289720, 14041859, -191126, 25724706, -29986924, -13324599, 1733556, 22841172, -24916716, +-14130979, 81717656, -7146826, 42104100, -32479080, -543850, -22997402, 17404818, -7701950, 27411556, +44479756, 705985, -30342334, 26135950, -32370094, -15459735, 11788075, -34744136, -22270480, -11383274, +25565792, 47102368, -55925844, 47225312, 10195715, 13495861, 5923297, 6254010, 5742372, -7475928, +9284646, 24259586, -11813308, 3903589, -1746441, 2797098, -26115012, -5238250, -7522635, 7659001, +8961986, 25959856, -15778099, -9969693, -12139725, 17890150, -22679038, 5218386, 9333501, 7531225, +9414568, -38922604, -8448738, 13487271, -5898601, -16860430, -1423245, 4148939, 1722819, 15931644, +9024263, 12569759, -12210592, -11953968, 13918378, 3483219, 9623948, -9053791, 9692131, 5696201, +2499134, 2945811, -2809446, -4368519, 1028108, -29680908, 61337500, -35249332, 22557706, 20098300, +-31913754, 17479444, 9641665, 6868727, -5671505, 24203214, 12526272, -30871152, 21869436, 25410638, +4945655, 4269735, 15387257, -452582, -30671436, 39799852, -22766012, 8959302, -16937204, -3965866, +4992900, -7532836, 32456530, 7228430, -4317516, -7886097, -1728188, 6283001, -33088428, 10395431, +-17173426, -11668889, -7974144, -170188, -16263967, -7813620, 3891777, 34215320, 316217, -7301982, +-21922050, 9025337, 5979132, 902480, 26571888, -6596533, -2839510, 31562104, 9898289, 1718524, +-30642444, -16131360, 19659140, 10899016, -28714004, 772557, -65161096, -32382980, 58272504, -13823889, +31484258, 41191956, 11683385, 6874095, 18635864, -8151848, -22938884, 12104292, 3764002, -1663226, +26243324, 16935592, -19002546, -45628120, -9494562, 18320720, 5811091, -1301912, 14642617, -17374216, +25400436, -12702366, 9448928, 11681774, 5123359, 17268990, 13179644, 20976620, 2316061, -5744519, +7584912, 20320028, -5480379, 17758080, 10705743, -11890617, 3539590, 9319542, 6350646, 3694746, +12824235, 10557566, 4645544, 21310554, -6926172, 2226941, -3199214, -1634772, -5570036, 18888730, +15734076, 12454331, -6069863, 2189897, 22462142, -6106907, 16445430, 14614163, -44560, 25635586, +-23467164, 3084860, 35392680, 4341138, 9975598, -7570954, 24894168, 4635344, 34817152, -10747082, +-58195732, 9895605, -7023882, 20044612, 6117107, -19729470, 10212895, 12011413, -22508312, -24697136, +-16550120, -41238664, -41522672, 28557238, -6638409, -42649024, -13100724, 4364761, 14085882, 13500693, +-26151518, -28333900, 2755759, 39402568, -18881214, 15198279, -26550414, 9408663, -29949880, 19463718, +20532628, -14691473, -30823370, -21211232, -3466039, 12053826, -13250511, -8746701, -11037529, -39209292, +-33886756, 17708150, -28455232, -5858873, 10095858, -23521388, -37936908, 14419279, 19859392, -2597382, +-45664092, 20352776, 17879948, 57647588, 239444, 15086073, 11271605, -24718074, 9415105, -7732015, +-49902688, -7713225, 30466350, 7181186, -25256556, -62668940, 39507256, 50442244, -15044734, 40782324, +47543140, 2365453, 2130304, 37502580, -24372328, 1798518, 62941136, -46510200, 26975078, -39855684, +-10936597, -3330210, 27095338, -9299141, 3921842, 15114527, -491774, -35291208, 38757248, -7132330, +-4560182, 5862631, 16180752, -26554172, 11578158, 6713571, -3997004, 7969312, 9423695, -24617142, +-3323768, 5623723, 12886513, 26679264, -2258079, -23589572, 11948062, 27384174, -21862458, 26707718, +-12692702, -2950106, -9419400, 30129196, -20893942, 7066832, 18897320, -13168370, 4753992, 3227668, +-17411798, 3704946, 7532836, -3423089, -13214541, 8490613, 10998338, -6270116, 21855478, -32947768, +8114804, 9451612, 479963, 1843078, 22563610, -5069672, 12657269, -26199300, -82958368, 22434224, +-9587978, 61962956, -21329882, -13605383, -24897388, -70965208, 32439352, -41350872, -24209120, 1274532, +-116501, 54758148, -39202852, -27409408, 36019208, 21478058, 18760418, -6782827, 17922362, -12677133, +-18096308, -16605954, 42241540, 35188668, 54930484, -17467632, -20617990, 998580, -3673271, 20211580, +-33140504, 7125888, -34831112, 18615998, 34078420, 11746199, -28144384, 19184546, -24816322, 55819544, +28362890, 7931194, 7473780, -8582955, -43789340, 24760486, -59385440, 12433930, 11016054, 29033442, +22980222, -51228224, 15430207, -32255742, -19198504, 14000520, -5116380, 19171660, 12230993, -46832860, +19138912, 43101608, 56913148, -16477642, 16809428, -23204098, 39943732, -56719340, -3005403, -10296110, +17919678, 37389300, 53625888, -42883636, 10692858, -57398480, 36928664, 75728328, -19220516, -51527796, +-4144644, -38849588, 49700288, 12663711, -25367150, -7126962, 2895882, -8446590, 35501124, 13418552, +-20044612, 19153406, -28385438, 1903744, 26653494, -5506685, -32715840, 36341864, -52207476, 15192910, +-7863548, 20931524, -1293322, 13023951, -12016782, -6388227, 5339181, 4643397, 5568962, 24828670, +-25310242, -21232170, 1212791, 5774047, -5821292, -26372172, -19295140, 38765836, 10475962, -17149804, +-19804094, -44125956, 52938692, 41467372, -16082505, -14120779, -30808338, 1226750, 39571144, -65168076, +46535972, -6029597, -1832340, 15484968, 12962748, 18437758, 5099200, 9034464, -22964116, 21797496, +5909875, -23331336, 15726560, -9244917, -431107, 21314848, 12249784, -33216204, 18631032, -15684147, +27653146, -20119238, 6947110, -10245644, 12831215, -9760850, 5859409, -14568529, 31811750, -2743410, +794569, 9570798, 10612327, -16065325, -3444027, 7380365, 10554882, 9806484, -11294153, 4141959, +381715, -32292786, -2780455, 8512088, 11829951, 5298916, 7549479, -29033442, 4549981, -1575179, +2847563, 6830609, -5864241, 6468221, 4767414, 2878165, -7144678, -6452115, -2346663, 33879240, +-11963095, 6852084, 12443057, -6927246, 11834782, -13424457, 11401528, 6113349, -9184788, -13504988, +8478802, -8243116, 6627135, -12131135, -10700911, -4716411, 15403900, -3862786, 1388885, 3237869, +-1226213, 3828427, -12387223, 9426379, -8029978, 20545512, -19097036, 8999030, -11435350, 10276783, +-9358197, 8242042, 125091, 13912473, -12050604, 6555194, -6215892, 801548, 2338610, 8239895, +-8681740, 2103997, -9360344, 13187697, -11085311, -2977486, 6534256, 2785823, -5459441, -1520955, +7393786, 5019206, -18207976, 10189810, 802085, 170188, -2005750, 3723737, -2354179, 1992865, +-1494649, 2407866, 514859, 4782446, -5214627, 13001940, -16545825, 51849920, -3747896, -16776679, +-25608742, -11626476, -14381161, 18817862, 10864120, -13663902, 1125818, 1620813, 6129455, 852014, +13008382, 4502737, 10241886, -3510599, -384936, -3071439, 4792110, 11125039, -10340671, -60666, +-5126581, 367757, 13538274, -7685307, 1303523, -3470871, 5323075, 2760590, -7456063, -2753611, +7960722, -2448668, 12991202, 9256728, -13595182, 4354023, 2859375, 7124277, 2991982, -12830141, +8665633, -2401961, 8426726, 6757594, -15337865, 4202626, 24696, 3448322, -1730335, -6729677, +10900627, -2685965, 4935991, 259846, -3301756, 5054103, -6542846, -918049, 9086540, -6260989, +-7532836, 15180562, -9826885, 14161581, -1498944, -11477226, 23453206, -21559126, 18716930, -6649146, +-11257109, 11868605, -11060615, 3266860, 3799972, -10804527, 9069360, -1949915, -722628, 5802501, +-7536594, 9821516, -3211562, -762357, 2394444, -1683627, 3424163, -1653026, 527207, 2859375, +-2796561, 4575214, -565862, -2619393, 5607080, -8749922, 4613869, -3897146, -1826972, 5440113, +423054, -1654099, 2795487, -2086817, 2774549, 1420024, -4085588, 2700461, 515396, -933619, +-726923, 2436857, 490700, 4511327, -3606162, 1271847, 542777, -2574296, 4977330, -1470489, +-835908, -25397216, -43562780, 54951424, 157414304, 24879672, 15255724, -115089016, -142278304, -45605572, +-27970438, 96225520, 146793936, 75520024, 21888228, -49427556, -106209176, -96898224, -81145352, 6397354, +121610392, 101683352, 58327268, 19775640, -52042656, -67532992, -53611392, -51851528, -18273476, 24542516, +33777232, 69821672, 50016504, 12097849, -16935056, -10004589, -56225416, -27357868, -28411208, -38532300, +22922240, 43156904, 24987582, 62845036, 16710644, -14973867, -24150064, -41849088, -33033668, -5214627, +-10208064, 12797929, 26032870, 23144506, 16578574, 11244224, -5708012, -22995254, -16218870, -19131394, +6162741, 22230750, 7362111, 5432060, -9651328, -20007032, -3718368, -86436, -273267, 16134045, +14504641, 16172162, 6418829, -5624260, -17357574, -25213068, -25744034, -16796006, 17878876, 26396332, +32813550, 22639310, -5685463, -12861816, -13588203, -27021250, -11897596, 9809705, 5207648, 4850092, +7888245, 3741454, 3037616, -4217121, -5394479, 4221953, 9392557, -233539, -790274, -6490233, +-8856759, -4651450, -5372467, -3205119, 6969122, -1260573, 14554570, 17908404, 10395431, -6248641, +-10171556, -11458973, -14414447, -10586021, -14265197, 7611756, 19707458, 17926656, 10654203, 11185169, +4268661, -11062762, -21550536, -22101902, -11191611, -2306934, 7006166, 15702937, 23120882, 18925236, +3592203, -12224014, -20303384, -14921253, -4921496, 124017, 5583995, 3523484, 8735963, 11130408, +3325379, -4839355, -6562173, -3712462, -2729452, -2689723, -744640, 784905, 5194763, 3124589, +372052, -63888, -309238, -997506, -2262911, -2369748, 716186, 729608, 443992, -177704, +214748, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -2868501, -10933913, 1274532, 2968359, 1044751, 1568737, -2637647, -6599754, -1277753, 3503083, 1244467, --3261491, -461709, 2681670, -691490, -3928821, 1185948, -4530117, -2815888, -130460, 1247151, --1280974, -1028108, 2824478, -3917547, -83215, 494458, 1903744, 1498944, 1451162, 4781373, -2170032, -5949604, -1506997, -2706903, 762357, -157840, -440771, -3748433, -4872104, 6461779, --2976412, 1576790, 1890323, 1615982, -6127845, -3492345, -1599339, 672162, -472983, -196495, --556198, 1029182, 2347200, -3213709, -1074, 1714766, 2008971, 2384244, 886374, 38655, -2319282, 815507, -998580, -300648, 3761318, -2793339, -2944200, -1597191, -1178969, 3202972, -1900523, 758062, -1195075, 3085934, -1376000, 1596117, -3653407, -355409, 282931, 753230, -759672, -2958696, 799401, 2081985, 1051730, 346282, -265751, 2725694, 1301912, -283468, -1751810, 1033477, 454730, -408559, 587337, 462783, 380105, -529892, 665183, 179852, --550830, -445603, 946503, 199716, -93416, 2684, 36507, 149787, -883690, 622770, --248571, 486942, -695785, -6215355, -3741990, 2647847, -6080063, -8597451, 1672353, 738734, -1060857, 1256815, 1210644, -7391102, -1206886, 2146410, -4686346, 4924717, 4787815, 4108136, --1661079, 377420, 1112397, 3146064, 717796, -106837, 619549, -2138894, 1985886, -772557, --778463, -1005559, 6073084, -3623342, 2102387, -2287070, -1969243, -2054068, 1611687, 3321084, --3543885, -1767379, -1919850, 2430415, 2289218, 3692598, 2510409, 492848, 3236258, -2756295, -1945620, 739271, 845572, 6776922, 1603633, 3350611, -5561446, -1502165, 2294050, -2783139, -2639258, -1203128, -2046552, 724239, 4067334, 2742337, 1876364, -995359, 833224, 3030636, --3667365, 4837744, -659278, 3964792, -1610613, 3271155, 3906273, 3288871, -1836635, -4880157, --7202660, -4866198, 470299, -2553358, 4758824, 788663, 745714, 1272384, -3395709, -1052267, --1527398, 1708323, -918586, -654446, 2096481, -2560338, -903554, 1013075, -1420560, 117575, --1585380, -1267552, -1003949, -285078, -1690607, 10443750, 7504382, 6148783, 5117454, 5767068, -2436320, -454730, -127238, -2141578, -638340, 7587597, -3311420, -3413425, 5236102, 3886946, -5034239, -3518652, 1524713, -1330366, 1138166, 2243047, 3143379, 460098, -2293513, -1704565, --2951180, -1054415, -1823214, -5381594, -651761, 4531728, -3526168, -613643, 1676648, -2772402, --2510409, 2563559, -1382980, -3594351, -1924682, 2048699, -3069828, -3954054, -1801202, -1173600, -1336809, -2758443, -5714991, 406411, -938987, -799401, 1660005, -4691715, -2281165, 88047, --1953673, 2589329, -651224, 1118839, -8416525, -2551211, 4778688, -1875290, -4628364, 1385664, -834297, 1311039, -1713692, -6677601, -3019362, 7523172, 526670, 2776160, 1606318, -1074816, -2308545, 3138547, 1334661, -1549946, -3579318, -1074, 916439, -2718178, 1253057, -3524558, --340376, -2245194, -1079111, -2974265, -544387, -1697049, -2139968, -1662689, 355409, -735513, -410706, -806917, 324270, -1495722, 1104344, 586800, -383326, -267899, 1429687, -24159, --471373, -1328219, -653909, -597537, -67109, 136902, 68183, 14810121, 9098351, 8611946, -158377, 865973, 693100, -3520800, -7835631, -2953327, 5924371, -4465156, 2684892, 8012799, -650151, -2524904, -996969, -1608465, -844498, 3249143, 4604742, 178778, 1359357, 1893007, -3002182, 196495, -4210142, 1315334, -6786049, -2028298, -857383, -1870458, -1233729, 864362, --1625108, -3543885, -2778307, -1263257, 290984, -1509144, -4119948, 4914517, -1841467, 377420, --1278290, -3186866, 4010426, 11205570, 2684355, -3867081, 6599754, 1536525, -2054605, 2039036, --1163936, -4283156, -2147, -1781338, 1646583, -3707094, -6485938, 279173, 1047972, -7812009, -2313914, 1645509, 4350265, 2511482, 5757941, -1936493, -3935801, -2269890, -1246077, 2842195, --1062468, -5014911, 3404299, -2434173, -4615479, 3151969, -4610648, -2484102, 1414655, -1634235, -1553168, -1070521, -1923072, 1540283, 3852586, -877784, -1946694, -675384, -36507, 1381906, -2697776, 804770, -830539, -999654, -1034013, -314606, 614180, -1959579, -726386, -565862, -2960843, 1538672, 2085207, -340913, 131533, 1654636, 1068373, 806380, -125628, 290447, --7620883, -12045773, -3698504, -6026913, 8631274, -1969779, -1056562, 3232500, -7967701, -5613523, -4781909, -3860102, -3585224, -198105, -325881, 849867, 3150359, -1324461, 1433445, -2076617, --1545115, -147103, -1367410, -3490735, -314069, -749472, 3645890, 3692598, 3237869, -4323959, -2007360, 1465658, 6047851, -3047279, -226023, -2072322, -4628364, 6592238, -6252936, -3067681, --2435247, 1557463, 5468567, -5059472, 5657009, -609885, 3049427, 4719096, 765041, 3639448, --6735583, 1489817, -2540473, 354335, -7133941, 141197, -2458869, -6380174, -4907537, 391379, -4713727, 256624, -3434900, 5375152, -1843078, 3115462, -421981, -6620692, 9280887, -5782100, --1147293, -3284576, 2320893, 3777961, 2496987, 3486440, 7516193, 5746130, -955630, 1210644, -3551401, 2248416, -2670933, 3828963, 2977486, -549219, 1694902, -3731253, -5158793, -539018, --1658931, 2914135, -3021510, -616328, -2903935, -659278, -1330366, -419833, 878858, 1091995, -601295, -114890, -724239, 1757179, 893890, -1787780, 1311039, 98784, -4463008, -385473, --1599875, 2571075, -673773, -288300, 942745, -476205, 899796, 2019708, -123480, 1315334, -1399623, -255014, 529892, 2842732, 3246995, -8528731, -12162811, 1367947, 1023813, 688805, -7844758, -2533494, -8531953, 910533, 999654, -2245194, -484258, -7499013, -1474784, 945430, -1124745, 8412767, -1460826, 7540889, -1809255, -1930588, 641024, -7458748, 3201361, -2802466, -4564477, -1245004, -1909113, -2761127, -1342714, 282394, -5571647, 9677635, -6680285, -10846940, -3264175, 516470, -7612830, -2237141, -14624901, 271120, -5196911, -52076, -5643587, -4573604, -813359, 539555, 2542084, -4610648, 3717294, -5204964, -10089952, 1226213, 2820183, -3042448, -3334505, -1711545, -5588826, -4919348, -6799470, -3215320, -704375, 1141388, -2018635, 6354404, -42950, -1952600, 573378, 406948, 1341104, 1009854, 767725, -6048925, -5654862, 1229434, -4049617, 2403034, 691490, -1314797, 5025112, 2775086, -2304250, -1694365, -5569499, -2286533, -2523830, 1201517, -3023120, 1253594, -822486, -879931, -1402307, -1745367, -581968, -2310156, --1738925, 981400, 492848, 1415729, 2434710, 208306, 2140504, 122407, -1358820, 2014340, -1283658, -387621, 325881, -1126892, -1108102, -16643, 137976, -1264868, 94489, -377420, --22549, 0, -240518, 1313723, -2052458, -321586, -584116, 118112, 763967, 1344862, --18781356, -4739497, 763967, -4818954, -3489124, -6023692, 1564979, 2085207, 4292820, -3253975, --3995393, -4561792, 2280628, 5031018, -2505040, -2188823, -1274532, -802622, 2411087, -10507637, --2576444, 5898064, 1942936, -3095061, 1133335, 5222144, -504122, -1362578, 1846836, -354335, -12878459, -5559835, 3158949, 1012539, -5407901, 1760400, 1221381, -6186901, 4363687, -8781598, --840740, 7730941, 1714766, -245887, -1621350, -6008659, -5160940, 1362042, 3343632, -2273112, -1633698, 6404870, 3193845, -2684892, 3969624, -5718212, -13400835, -1791001, -5880347, 3714610, --3763465, 9510131, 4779225, -452582, -1553704, -12363600, 3905199, 4707821, -3778498, 7535520, --5854041, 2291902, -9817221, 4549981, 3457986, -11201275, -7111392, -2304250, 2776160, 3709778, -8168491, -1138703, -381178, 5288716, 1241246, 22549, -2349347, 1208496, 1241782, 1587527, -1751273, 431107, -201327, -1019518, -1142461, -3019362, -2491618, 2010045, 1443109, 1035624, -2512556, -1009854, 1222992, 1272384, -616328, 2149631, -267899, -17180, -492311, -2426120, --511101, 2800319, 649614, 2081449, -751082, 768799, -1078574, 3330747, 338766, 2795487, -1254131, -1359894, 751082, 4720706, 7927436, 18341658, 19556596, 3929358, 5861020, 63888, -2795487, 184147, 2064269, -5224291, 2431488, -3245922, 4336307, 4109747, 10071698, 1559610, --2032593, 6317897, 4555887, 7597261, 379031, 4728759, 2749853, -2335925, 2366527, 11304354, -1801202, -4873714, -2627446, 8366597, 5173825, 4027069, 7777649, -5976447, 2336462, 9270687, --9230422, -11031087, 3649649, 5919539, 9624485, -4167192, -7179575, 5827197, 2113661, -870268, -3619584, -1457068, -878321, -52613, 13696651, -4951561, 2777233, -3302830, -2122251, -1612760, -7141457, -944893, 15939697, 7645042, -7654169, 8909373, 1941862, 4153234, 1914482, 1935957, -2171643, -2917894, 5376762, -12609487, -3333432, 5770826, -12845173, 4398047, -10380399, 2437931, -11452530, 2832531, -79994, 3148211, 1087701, -3083787, 769336, -3277597, 373125, 2639794, --7723425, 4423280, -1409286, -1837172, 513785, 2394444, -2031520, -3077881, 1030792, 2781528, --1479079, -2604361, -2571612, -1506460, 1061394, -1840394, -1657857, 1731946, 2410551, 1130113, --1292785, 1576790, -1155346, -3980361, -1813013, -64961, -2038499, 1131724, 808528, 1661616, -2692945, 3967476, -1897302, 5597416, -1981054, -3280281, -1135482, 1980517, 408022, -3335579, --2182917, 30239790, 5273146, 4748623, -8848170, 13032005, -4322348, -580357, -3419331, 715112, --8469139, -654446, 4021700, 941672, -6896644, 8595303, -2058363, -4480188, 1262184, 2684892, --8880919, -12520903, 5211406, -5179731, -7364795, 1438277, -13959, -3811247, 6543920, -6581501, -2193655, 6326487, -1094680, 9225053, 2940979, -11724724, -12208981, -5249524, 824634, 2212445, --9640054, 3481608, 3553012, 1824824, 3147137, 4254702, -10019622, -5032091, 2952253, -11226508, --4019016, -282931, -11573326, -6235219, -3932580, 2337536, -5908802, -12635794, -5945309, -6758668, -14664092, 7050189, -1152662, 1988033, -3876745, 11614128, 13996762, 1555315, 9396315, 6808060, -2738042, 1669669, -5354214, -1184337, -4723927, 6765647, -8877697, 290984, -2105071, -13700409, --4106526, -1983201, 7473243, -6784438, 3767760, 3190087, 1434519, 707059, 3263638, -3280281, -2612414, -1980517, 2895882, -730681, 4264366, 1230508, 401043, -2222109, -784368, -5353677, -2904472, -746787, 4582730, -4369056, 28454, -455267, 2746632, -479963, 2457795, 1025423, -1354525, 1288490, 719944, -2927557, 3419331, 4303557, -2153926, -3103651, -3599183, -1508070, --201863, -1307281, 405338, -20629802, 13928042, 22355304, -16768626, -9987410, 4606353, 4010963, --3401614, 7346005, 1998234, -6250251, -7636989, -156229, -2452963, -5452998, 2793339, -2506114, -359704, 6184753, -8315057, 1753957, 1119376, -4936528, 712965, -7841537, 1537598, 11520713, -5880884, -1148904, -3693672, -938987, -6566468, -6992744, 3452080, 5831492, -1828046, -3215857, --2283849, 3491809, 5815386, 2794950, 10646150, -5713917, 4389994, -2748242, 1062468, 6645925, --2370285, -2087354, -12639552, -1927367, -9782325, 4940823, 3383361, 12618077, -10783589, -3968013, --10436234, -17194902, -2870649, 7195681, -11865384, 2652679, -1294933, -8657043, -10203769, -12873628, -17330730, 670015, 10303090, 7574175, 8756901, -3935801, -11488501, -8697846, -10749229, 3782793, -8471286, -8049843, 3835943, 9028021, -6069863, 1051730, 7333120, 8414378, 2047089, -2987150, -3629247, -1484448, 1952600, -8928163, -787053, 3455301, -3003256, 1167694, 591095, 404801, -2037962, 3393561, -3504157, -1244467, 2092186, 3025805, 883153, 1480690, 2976412, -612570, -3213709, -2652679, 2215130, 3229816, 3621731, 416612, -1312113, 2814814, -2233383, 711891, --471373, -1920387, -914828, -1894081, -473520, 916439, -2318209, -6519761, 2353105, 3587908, --16137803, 11657078, -1468342, -6052146, 9983115, 3525631, -9722195, -13922136, -5378910, 35970, -284005, 666257, -4963372, 15816754, 6555194, 4773856, 3651259, 4968204, -4816269, 1189706, -3142842, 2304250, 14212047, 1471563, -21182242, 2597918, 8813273, -7912404, -11909944, -2533494, --6467684, -3833258, 990527, 14963666, 8968965, -1531693, -344671, -4530117, -13116830, -4450660, --10834592, 7719667, 10581189, 120259, -5877663, -2157147, -2429878, 4836133, 6737730, 7132330, --16522202, 3171833, 572841, 1444183, 11492259, -6719477, 4708358, -6133214, -4405026, 1197759, -7523172, 13517873, -2141578, -8766565, 2840047, -15769509, 12591770, 6780143, -1551557, -6521908, -3409667, -3652333, -7770133, -6481106, -7042673, -3376918, -1470489, 468151, 6676527, -5101348, -18344880, 762357, -2771865, 1050656, 5484673, 246424, -192737, 5945309, 4109747, 3067144, -246424, -2883534, -2211908, -685584, -384936, -2659659, -7415798, 3940096, 3768297, -2808909, -1064615, -4125853, -3051038, -1423245, -767725, -103079, 6602439, -1345399, -2010582, -1058173, --333397, 4036733, 7355132, -2376728, 4149475, -1097364, -4508642, 5291400, -4885526, -3986804, --2577517, -4023311, 926639, 3124052, 1656247, 3203509, 119185, -1179505, -222265, -3251290, -2036888, -1855426, -6988986, -1709934, 7741142, -13870060, -3935801, 8979703, -11275363, -1156957, --1119376, -1501628, -13132399, 13056701, 5661841, -9087077, -1561758, -3894462, -3328063, -19956566, --2797634, -9115531, -22526030, 4818954, 3489661, -10242960, -8470749, -12071542, -13744432, 11724187, -6617471, 12342662, 442382, 25894358, 1222992, 13528610, 18614388, -2150168, 5695127, 19177566, --12908524, 5919539, -7776039, 13195213, -4136591, 25691420, 11676942, -7989176, -12070469, 2012192, -5960878, 10720238, 2886218, -9283572, -2136209, 8511015, 19092740, -7965554, 12806519, -4656819, -7817914, -14937896, 5905043, -8118562, 5915244, 983011, 1973538, -2705293, 11802570, 16478716, --29925184, 9090298, 6238977, 4456029, -5456219, 3948686, -21468930, 1840930, 385473, -3337727, --8200167, -7119445, -7092602, -2056753, 15321222, -8813273, -5178120, -12402255, 456340, 11018202, --5510980, -6148246, 8530879, -303332, 6196564, 1381369, -1510755, 156766, 2736968, -5922223, -3008088, 1201517, -5093295, -4263829, -2488397, 1498944, 3457986, 3558917, 10385768, -1095217, -7867843, 3870303, 2567317, -5182415, -1609002, -7828652, -3532074, -1300301, -2619930, -3714073, -4358318, 2529199, 5206037, 6671158, 1256278, -1500554, -841277, -4257923, 2596845, 14920180, -15857019, -3458523, 16487306, -846109, -3438658, 1302986, 9270687, -3470871, -4198868, -1925219, --11718818, 1924682, -3358128, 18461916, 12152610, -8798777, -9322763, -17526150, -6416681, 12729209, -22930294, -10434623, 7083475, 1537061, 3017752, 12492986, 8940511, -17955110, 3566970, -6409165, --3649112, -7406134, -4048544, -7816304, -17307644, 3034931, 11573863, 4439923, 27108760, -6586869, --3739306, 18837726, -6867653, -1046898, -4204236, 4993437, -20686710, -13272523, 7186554, 15477988, -22548578, 26919782, -19782082, -10257993, -1040456, 9008694, -890132, 30544734, 8497056, 4570382, --23698018, 1650341, 170725, 11464341, 14950244, -11136850, -3696893, 4679904, -4860293, 5906, -16986596, 6135898, -16797618, 4389994, 8857833, -8057896, 26418344, -9129490, -14128832, -19824496, -14658723, -3165928, -16646756, -13186623, -3023120, -606127, -6624450, 404264, -7211787, 1414118, --10040560, 714038, 4904853, -3450469, 3862786, 781147, -6072547, 693637, -96100, -1149978, -647466, -4107063, 4987531, 68719, -2546379, 5723581, 5791227, 282394, -1598265, 2572686, --5458367, -2245194, -4385699, -800475, 4504884, -3520800, 1971390, 4470524, -8209830, -2905546, --1692754, 1385664, -1552094, 3572339, 7949448, -2210298, -4752382, -2279554, 5133560, 1496796, -483184, 4156455, -2386391, -1664837, -1498407, 3672734, 31316218, 14855218, -8227010, -2637647, --28894392, 2261300, 7649337, 2028298, 43103220, -5435281, -3260954, -18917184, -16356846, 6732361, --13373991, -8152385, -8968429, -6015639, 10710575, -6972880, -12295418, -10586021, 963146, 10829223, --13904957, 3158412, 6291590, 1422171, 15554224, -1776506, 1224066, -15776489, -22244172, -9131100, -10198400, -12242267, 2981781, -10273025, -38836704, -20879984, 11647414, 866510, -22252226, 3466576, -31008054, -1396401, -799938, -12069395, 6788733, -13321915, -23939610, 641024, 3644817, -9253507, -4603668, 9051644, -2212445, -7790534, 6468221, 8422431, 15564425, -8909373, 11700028, 15025943, -6324340, 26102664, 2937221, -16159814, 19017042, 1193464, 3196530, -3416647, -3809099, 11791833, --11602317, -1616518, 28933584, 22732188, -14013941, 14572287, -4168803, 26892400, 11330124, -9242770, --21404506, -868657, -7809325, -9236864, 6074158, -8313983, -222265, -2073932, -7457674, -12474733, --2422362, 10699837, -11393474, 142808, -7060926, 1173063, 4515085, -4538170, -13332115, -2267743, --6288369, 8237211, 4975183, -3163244, -8804683, -3576634, -9474698, 5834713, -4628364, 3219078, -3791919, 5571110, 4414690, -7291781, -5191542, -8202851, 2517388, 5456756, 757525, 10748693, -11335492, 6245956, 4645544, -22498650, -23877870, -28525026, 39322036, -21771726, 5166309, -1205812, --12511240, 19969450, -23490250, 10159208, 41813656, 25741350, 5959267, -33907156, -1919850, -22371948, --11365020, -20429548, -1957431, 5806796, -3695283, 16065325, -7740068, 2672007, 7924215, 22451942, -3105261, 3099893, 27156542, -17889612, -2554969, 11985106, -5262409, -13874892, -9241159, 13692356, --11958263, 5742372, 23240068, -6474663, -41962368, -2563559, 10473815, -51515984, 31060130, 23970212, --19569482, 31947578, 21626234, 14256070, 33112588, 712428, 16997334, 1962800, 1974074, 11938398, --21103858, 21019034, 28515362, 21973052, -22719304, -4438849, 31341450, -15235860, 24840480, 22814866, -53289808, 32174674, 1782948, 3689377, -6950331, 6690486, 9235253, -30920006, -44302588, -15411953, -3787088, 1650341, -6423124, 34622268, 16256451, 6522445, -15293305, 13728863, -10859825, -13677323, --7059853, 15673946, 18185428, 3521873, -3365107, -3517578, 466541, -21451214, -5162551, -5540508, -6853694, 3985730, -11218991, -8480950, -611496, 16909824, -4807142, -6518150, 351650, -6750615, --17235704, 8575976, -3798362, -6704981, -10154913, 59056, 5581847, 1119376, -30578020, -1727651, -14895483, -2280628, 481573, 2506650, 4229469, 12776991, 10040023, 446140, -271120, -4907537, --1715839, 24009940, 29700236, -58271968, -53360672, 23273354, -15335181, -16805134, -6995428, -20308752, -7216082, -32898912, 41539848, 15617038, -17307108, -372052, -16929688, -12733504, -13645648, -15623480, --10123775, -39684424, -35655208, -6651831, -8095477, 2268280, 3390340, 6899328, -2501282, 5061619, -6649683, 17656610, 19559818, -7377680, -9875740, -11581916, -9816685, -22458920, 33427730, -11805791, -8158827, 24814710, 23466628, -8907225, -10043244, -18701362, -12270722, -15357192, 25693568, 2731599, -3176128, -31793496, -11268920, 45938972, -4451197, 42768212, -8637179, -16035260, -10104984, -18126372, --18551574, -3413962, 207232, -25523380, 2145336, 12183748, -1031866, 9573482, -58887224, -23810224, --16486232, 31259846, -7472706, 5135171, 10683194, 49080740, 13928042, -4537633, -5001490, 42261404, -25534118, 6222871, 8247411, -2177012, 33564632, -14004815, -19142132, 10334765, 15775415, 28003186, -26064546, -15289547, 17688286, 13217762, 14253923, 4227322, -10193568, -20143934, -17093970, 10632728, -14751602, 7866770, 5302137, 17407502, -1721208, -4836670, -1001264, -1469416, 9069360, 5432060, -11836393, 20682416, 14607721, 23660974, 6387153, -21314312, 6752763, 5668820, 18501108, -369904, -14496051, 6167036, 13939853, 301185, -26785564, -3482682, -5893232, -1820529, -30786862, 63946696, --20648592, -12836047, 37896644, -24022826, -36273148, 33646236, -48828408, -14120242, 11511586, 8386461, --34059628, -13357348, 29237452, 190589, -5761162, -19013284, 22948548, -22762252, 1509681, 18067854, --6027450, 16589848, 119185, -8189966, 5557688, 3943317, -9889699, 15774878, -8677445, -3514894, -4712116, -308701, 982474, -2960306, 4684736, 10012106, 16183974, 23295902, 11427834, -9619116, --2682207, -14773614, 13659607, -4912369, -21345988, 5015448, 91805, -12160663, -29180544, 20550882, -1560147, -13503914, 32991254, 1899449, -10205379, -5949604, 48863308, -45703284, -49195628, 30003568, -46837156, -86405616, 428423, -31983548, -29031832, -12853227, 31449362, -24286430, 41618232, -5889474, --1019518, 55919400, -15781857, -43290584, 53761180, 63311040, -61478700, 68732360, -23152022, 1693828, -56829396, -19017042, -21735756, 15581068, 15282031, -7307887, -2860985, 10545218, 2111513, 1345399, --13512504, 18687402, 121870, -1222992, 372052, 2507724, 8458401, 5106716, -6801081, -7454453, -7878581, 18633178, -16115254, -14958834, -3998078, 19510962, -659814, 10421201, -2801929, 4342749, -108985, 4444218, -2192581, -3431679, -23021024, -9687836, 5816997, -8335458, -2281165, -8201777, --12412455, 19476066, 12228309, -33921116, 13589813, 17575006, -3391414, -148713, -11884711, 17394618, -38050188, -17785460, -24105504, -6626598, 6039798, 38674032, 28889024, -10097468, -3077344, 12076911, -31471372, -10482941, -1763084, 19302120, -24736328, -21269752, 16958142, -11293617, -8426189, -10400800, --935766, -17135846, 1374926, 11746736, -7198902, 9070971, -8058433, -5069135, -5075041, -23701778, -3547643, -9602473, 14549202, 31022548, 1734630, 15457050, 12850005, 1176821, 5889474, 9702331, -32948304, -23301272, 15936476, 13982266, -16833050, 11272679, 11014444, 3494493, -14936286, -29933238, --30234422, 9970230, 10878615, -11437498, -50545860, 41115720, -13824426, -22165790, -12774843, 41359460, --19437412, 45229764, 24159, 15187004, -42562052, 40240084, -18420040, 17823040, -5429913, -58272504, --18344880, 11468100, -35974648, 36999532, 3990025, -53426172, -60051696, -30914638, 41766408, 10306311, --37273872, 45449880, -48877264, -2412698, 88286808, 13205414, 5028333, 8773544, 6701760, -23175106, -24138254, 1786170, 12338904, -15555835, 23202488, -12817793, -12207371, -10239202, -1293322, -641561, -7033009, -2332167, -3403762, 4549981, -8077223, -16724066, 15217069, -5619428, -2609730, -19845434, -9072045, 4403415, 8610336, 2354179, 9934259, -7368017, 2345589, 27445914, -3192235, 285615, -14552423, -15604153, -3285113, 802085, -1561221, 10673531, -11041287, 11983496, -4191888, -31039728, -2005750, -8117488, 9125195, -10331544, 12004970, -19273666, -36839544, 155156, -39133056, 10743861, --3497177, -6998649, 13070659, 21617108, -13874355, 3105798, 23742042, -18612240, 32206350, -4294431, --35455492, 30411590, -14638859, -6500433, 27066348, -34686156, 9135932, 594316, 12579422, -5443871, --12743705, -52939232, 12135430, -21845814, -53192096, 64297272, -43289512, -18022220, -8601209, -14628122, --32676112, 18341120, 44362180, -27451820, 12446278, -39824548, -22540526, -22686554, 20045150, 3621194, -58214524, -10005663, -4864051, -17358648, -50228568, 68719, 24410984, -18551038, 20490216, 24661702, --20807506, 2090039, -17744658, -74177840, -38924752, -22820234, -77961176, 49844168, 65639448, 30890478, --66104380, -53117472, -118581896, 17160542, 140966192, 65222300, 24903830, -37044092, -130065032, -29527900, -30109868, 88916024, 89147952, -60568704, -51250772, -23785528, 11633993, 6155762, 96846680, 1641751, --11803644, 7897371, -9600863, -23633594, 34070364, 6129992, -7305740, 18867254, -15446850, -26361436, -18700288, 16195248, -44914084, 30264488, -6719477, -9883257, -23929948, 25419764, -24179056, 29092498, --14308684, 29777008, -35100084, 14052596, -9810242, 472446, 25376814, 41511396, 11761231, -15420543, --10966125, -2581275, 22942104, -3663607, 32989106, -25796648, -20305532, 9495099, 32703492, 3846680, -19938848, -55810952, 40487048, -7945690, -8863202, 1005022, 18234284, 345745, -3493956, 13492640, -4639102, 4494147, 21510270, -13631689, -151934, 11170136, -3894999, -2030446, 13562433, -12593381, --3056943, 3814468, 21319144, -14095546, -10006737, 11934640, -566936, 6699075, -21124796, 27702540, --6608344, 9347459, -6060199, 3567507, 15090904, 6642167, -3554622, 12986370, -4957466, 13125420, --10358387, -776852, 13534516, -3125126, -5653251, -27354110, 2752537, 21137144, 2189360, 9904731, --13872207, -4398047, -8319889, -8702141, -3599720, 15289547, -5617817, 9315784, -12087649, -14403710, --6218039, 3419331, 27925878, -10732586, 12676059, 835371, 2739116, -13676250, 7425999, 14512694, -735513, -13222057, 10167261, -8812199, 6798933, -5378373, -3940096, -5145908, 1844152, 10178536, --5181878, -2617246, 4656282, -613643, -7789997, -1660542, 7543037, 6443525, -6763500, 1134408, -6887517, 281857, -4278861, 1114544, -6807523, 5050882, -475131, 2579128, -3121904, 1312113, -4365835, -2214056, 5124970, 984084, 4669703, 3597572, -7684770, -7755101, -2675765, 13538811, --8674760, 9403294, 7482907, -5510980, -14035953, 10593537, -9028558, 11970074, -1165547, -1999307, --4974646, 1984812, 1949378, -740882, -1642825, 1003412, 53126060, 10568304, -28496034, -20215338, --31471910, -9958419, 6036577, 16723529, -5236639, -6734509, -5835250, -5586679, -5319317, 7654706, --3896609, -1047972, -1703491, -5514738, -1343251, 8413841, 1180042, -2405719, -8410620, 9654013, --12513924, 7366943, -4484483, -12235288, 27917, 5614596, 6261526, 4946192, -7268696, 1642288, --2348810, -3937411, 14738180, -13117904, -2427194, -503585, -936840, 1416802, -2228551, -7689602, -6471979, -12205223, 11643656, -1673964, -8229158, 2869575, -4260071, 10423886, -6104223, -3631932, -11181947, -10006737, 3465502, -4766877, -1135482, 8644159, -6171868, -2395518, 7678865, -5243618, -1998770, 842350, -6288906, 15275051, -13326747, -1083942, 5832566, -3330747, 9701794, -4360466, --2173790, 2598992, 3185792, -995359, 2131915, -806917, -4335770, 3921842, -26307, 433255, -2098629, -221191, 3016141, -3008625, 871342, 666794, 663572, -321049, -1913408, 2541010, --375810, -598611, -1815161, 2253247, 3561602, -1156957, -1849520, 1173063, 2075543, -2580202, -2166811, -1932735, -1730335, 5786395, -891743, 2171106, 3005940, -3908420, 9734007, -3145527, --523449, -436476, -5637145, 5876052, -3646427, -5775658, -25152402, -37796784, 49539764, 154542592, -13232794, 13455059, -105353400, -133264784, -27765890, -28225452, 78500728, 133611600, 68563784, 13200045, --48343080, -94068376, -66399120, -47472812, -2462627, 65096136, 95122792, 51408076, 11780558, -33348810, --59278064, -33192044, -31935230, -29908542, 18905372, 38758320, 38200512, 38485056, 9254044, -16681116, --6844568, -25353728, -39690328, -4395899, -11834246, -8008504, 35840964, 20709796, 29942902, 18161806, --13572634, -32659468, -7864085, -21226802, -3277060, 14849313, 4552666, 8024073, 16199006, -8208756, --11488501, -2643552, -6749004, 6538551, 10460393, 569083, 12912819, 7662222, -13550085, -13035763, --20772072, -17764522, 792421, 21435644, 32492502, 15651935, 4112968, -7550553, -21744346, -3730179, --24518358, -15043660, 11550241, 9060234, 27470074, 9254581, -6986301, 8094403, -14235669, -24707874, -4353486, 6267431, 8288750, 7658464, -1542430, -3087545, -2360085, -10273562, -7870528, 5388574, -8386461, 8431558, 8557722, -2370822, -8266739, -5481452, -3172907, 218506, -170188, -9354439, -2397129, 11777874, 6357626, 7328825, -2181844, -11855183, -6885907, -7000260, 2737505, 8310225, -5484137, 5132486, 2222646, -1700807, -8991514, -11849278, -5422933, 719407, 7320772, 11674795, -7150584, 7191923, 4540854, -7441031, -13795972, -17713518, -11482595, 4935991, 9909026, 12851079, -17835926, 5404143, -5371394, -9043591, -7332583, -5459441, -5149666, -5248450, -1543504, 3941169, -7832947, 6881612, 5398774, 3718905, 799938, -5079336, -8754754, -8478265, -4339528, -273267, -3159485, 3179350, 1852742, 339302, 267362, -92879, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +10933913, 1274532, 2968359, 1044751, 1568737, -2637647, -6599754, -1277753, 3503083, 1244467, +-3261491, -461709, 2681670, -691490, -3928821, 1185948, -4530117, -2815888, -130460, 1247151, +-1280974, -1028108, 2824478, -3917547, -83215, 494458, 1903744, 1498944, 1451162, 4781373, +2170032, -5949604, -1506997, -2706903, 762357, -157840, -440771, -3748433, -4872104, 6461779, +-2976412, 1576790, 1890323, 1615982, -6127845, -3492345, -1599339, 672162, -472983, -196495, +-556198, 1029182, 2347200, -3213709, -1074, 1714766, 2008971, 2384244, 886374, 38655, +2319282, 815507, -998580, -300648, 3761318, -2793339, -2944200, -1597191, -1178969, 3202972, +1900523, 758062, -1195075, 3085934, -1376000, 1596117, -3653407, -355409, 282931, 753230, +759672, -2958696, 799401, 2081985, 1051730, 346282, -265751, 2725694, 1301912, -283468, +1751810, 1033477, 454730, -408559, 587337, 462783, 380105, -529892, 665183, 179852, +-550830, -445603, 946503, 199716, -93416, 2684, 36507, 149787, -883690, 622770, +-248571, 486942, -695785, -6215355, -3741990, 2647847, -6080063, -8597451, 1672353, 738734, +1060857, 1256815, 1210644, -7391102, -1206886, 2146410, -4686346, 4924717, 4787815, 4108136, +-1661079, 377420, 1112397, 3146064, 717796, -106837, 619549, -2138894, 1985886, -772557, +-778463, -1005559, 6073084, -3623342, 2102387, -2287070, -1969243, -2054068, 1611687, 3321084, +-3543885, -1767379, -1919850, 2430415, 2289218, 3692598, 2510409, 492848, 3236258, -2756295, +1945620, 739271, 845572, 6776922, 1603633, 3350611, -5561446, -1502165, 2294050, -2783139, +2639258, -1203128, -2046552, 724239, 4067334, 2742337, 1876364, -995359, 833224, 3030636, +-3667365, 4837744, -659278, 3964792, -1610613, 3271155, 3906273, 3288871, -1836635, -4880157, +-7202660, -4866198, 470299, -2553358, 4758824, 788663, 745714, 1272384, -3395709, -1052267, +-1527398, 1708323, -918586, -654446, 2096481, -2560338, -903554, 1013075, -1420560, 117575, +-1585380, -1267552, -1003949, -285078, -1690607, 10443750, 7504382, 6148783, 5117454, 5767068, +2436320, -454730, -127238, -2141578, -638340, 7587597, -3311420, -3413425, 5236102, 3886946, +5034239, -3518652, 1524713, -1330366, 1138166, 2243047, 3143379, 460098, -2293513, -1704565, +-2951180, -1054415, -1823214, -5381594, -651761, 4531728, -3526168, -613643, 1676648, -2772402, +-2510409, 2563559, -1382980, -3594351, -1924682, 2048699, -3069828, -3954054, -1801202, -1173600, +1336809, -2758443, -5714991, 406411, -938987, -799401, 1660005, -4691715, -2281165, 88047, +-1953673, 2589329, -651224, 1118839, -8416525, -2551211, 4778688, -1875290, -4628364, 1385664, +834297, 1311039, -1713692, -6677601, -3019362, 7523172, 526670, 2776160, 1606318, -1074816, +2308545, 3138547, 1334661, -1549946, -3579318, -1074, 916439, -2718178, 1253057, -3524558, +-340376, -2245194, -1079111, -2974265, -544387, -1697049, -2139968, -1662689, 355409, -735513, +410706, -806917, 324270, -1495722, 1104344, 586800, -383326, -267899, 1429687, -24159, +-471373, -1328219, -653909, -597537, -67109, 136902, 68183, 14810121, 9098351, 8611946, +158377, 865973, 693100, -3520800, -7835631, -2953327, 5924371, -4465156, 2684892, 8012799, +650151, -2524904, -996969, -1608465, -844498, 3249143, 4604742, 178778, 1359357, 1893007, +3002182, 196495, -4210142, 1315334, -6786049, -2028298, -857383, -1870458, -1233729, 864362, +-1625108, -3543885, -2778307, -1263257, 290984, -1509144, -4119948, 4914517, -1841467, 377420, +-1278290, -3186866, 4010426, 11205570, 2684355, -3867081, 6599754, 1536525, -2054605, 2039036, +-1163936, -4283156, -2147, -1781338, 1646583, -3707094, -6485938, 279173, 1047972, -7812009, +2313914, 1645509, 4350265, 2511482, 5757941, -1936493, -3935801, -2269890, -1246077, 2842195, +-1062468, -5014911, 3404299, -2434173, -4615479, 3151969, -4610648, -2484102, 1414655, -1634235, +1553168, -1070521, -1923072, 1540283, 3852586, -877784, -1946694, -675384, -36507, 1381906, +2697776, 804770, -830539, -999654, -1034013, -314606, 614180, -1959579, -726386, -565862, +2960843, 1538672, 2085207, -340913, 131533, 1654636, 1068373, 806380, -125628, 290447, +-7620883, -12045773, -3698504, -6026913, 8631274, -1969779, -1056562, 3232500, -7967701, -5613523, +4781909, -3860102, -3585224, -198105, -325881, 849867, 3150359, -1324461, 1433445, -2076617, +-1545115, -147103, -1367410, -3490735, -314069, -749472, 3645890, 3692598, 3237869, -4323959, +2007360, 1465658, 6047851, -3047279, -226023, -2072322, -4628364, 6592238, -6252936, -3067681, +-2435247, 1557463, 5468567, -5059472, 5657009, -609885, 3049427, 4719096, 765041, 3639448, +-6735583, 1489817, -2540473, 354335, -7133941, 141197, -2458869, -6380174, -4907537, 391379, +4713727, 256624, -3434900, 5375152, -1843078, 3115462, -421981, -6620692, 9280887, -5782100, +-1147293, -3284576, 2320893, 3777961, 2496987, 3486440, 7516193, 5746130, -955630, 1210644, +3551401, 2248416, -2670933, 3828963, 2977486, -549219, 1694902, -3731253, -5158793, -539018, +-1658931, 2914135, -3021510, -616328, -2903935, -659278, -1330366, -419833, 878858, 1091995, +601295, -114890, -724239, 1757179, 893890, -1787780, 1311039, 98784, -4463008, -385473, +-1599875, 2571075, -673773, -288300, 942745, -476205, 899796, 2019708, -123480, 1315334, +1399623, -255014, 529892, 2842732, 3246995, -8528731, -12162811, 1367947, 1023813, 688805, +7844758, -2533494, -8531953, 910533, 999654, -2245194, -484258, -7499013, -1474784, 945430, +1124745, 8412767, -1460826, 7540889, -1809255, -1930588, 641024, -7458748, 3201361, -2802466, +4564477, -1245004, -1909113, -2761127, -1342714, 282394, -5571647, 9677635, -6680285, -10846940, +3264175, 516470, -7612830, -2237141, -14624901, 271120, -5196911, -52076, -5643587, -4573604, +813359, 539555, 2542084, -4610648, 3717294, -5204964, -10089952, 1226213, 2820183, -3042448, +3334505, -1711545, -5588826, -4919348, -6799470, -3215320, -704375, 1141388, -2018635, 6354404, +42950, -1952600, 573378, 406948, 1341104, 1009854, 767725, -6048925, -5654862, 1229434, +4049617, 2403034, 691490, -1314797, 5025112, 2775086, -2304250, -1694365, -5569499, -2286533, +2523830, 1201517, -3023120, 1253594, -822486, -879931, -1402307, -1745367, -581968, -2310156, +-1738925, 981400, 492848, 1415729, 2434710, 208306, 2140504, 122407, -1358820, 2014340, +1283658, -387621, 325881, -1126892, -1108102, -16643, 137976, -1264868, 94489, -377420, +-22549, 0, -240518, 1313723, -2052458, -321586, -584116, 118112, 763967, 1344862, +-18781356, -4739497, 763967, -4818954, -3489124, -6023692, 1564979, 2085207, 4292820, -3253975, +-3995393, -4561792, 2280628, 5031018, -2505040, -2188823, -1274532, -802622, 2411087, -10507637, +-2576444, 5898064, 1942936, -3095061, 1133335, 5222144, -504122, -1362578, 1846836, -354335, +12878459, -5559835, 3158949, 1012539, -5407901, 1760400, 1221381, -6186901, 4363687, -8781598, +-840740, 7730941, 1714766, -245887, -1621350, -6008659, -5160940, 1362042, 3343632, -2273112, +1633698, 6404870, 3193845, -2684892, 3969624, -5718212, -13400835, -1791001, -5880347, 3714610, +-3763465, 9510131, 4779225, -452582, -1553704, -12363600, 3905199, 4707821, -3778498, 7535520, +-5854041, 2291902, -9817221, 4549981, 3457986, -11201275, -7111392, -2304250, 2776160, 3709778, +8168491, -1138703, -381178, 5288716, 1241246, 22549, -2349347, 1208496, 1241782, 1587527, +1751273, 431107, -201327, -1019518, -1142461, -3019362, -2491618, 2010045, 1443109, 1035624, +2512556, -1009854, 1222992, 1272384, -616328, 2149631, -267899, -17180, -492311, -2426120, +-511101, 2800319, 649614, 2081449, -751082, 768799, -1078574, 3330747, 338766, 2795487, +1254131, -1359894, 751082, 4720706, 7927436, 18341658, 19556596, 3929358, 5861020, 63888, +2795487, 184147, 2064269, -5224291, 2431488, -3245922, 4336307, 4109747, 10071698, 1559610, +-2032593, 6317897, 4555887, 7597261, 379031, 4728759, 2749853, -2335925, 2366527, 11304354, +1801202, -4873714, -2627446, 8366597, 5173825, 4027069, 7777649, -5976447, 2336462, 9270687, +-9230422, -11031087, 3649649, 5919539, 9624485, -4167192, -7179575, 5827197, 2113661, -870268, +3619584, -1457068, -878321, -52613, 13696651, -4951561, 2777233, -3302830, -2122251, -1612760, +7141457, -944893, 15939697, 7645042, -7654169, 8909373, 1941862, 4153234, 1914482, 1935957, +2171643, -2917894, 5376762, -12609487, -3333432, 5770826, -12845173, 4398047, -10380399, 2437931, +11452530, 2832531, -79994, 3148211, 1087701, -3083787, 769336, -3277597, 373125, 2639794, +-7723425, 4423280, -1409286, -1837172, 513785, 2394444, -2031520, -3077881, 1030792, 2781528, +-1479079, -2604361, -2571612, -1506460, 1061394, -1840394, -1657857, 1731946, 2410551, 1130113, +-1292785, 1576790, -1155346, -3980361, -1813013, -64961, -2038499, 1131724, 808528, 1661616, +2692945, 3967476, -1897302, 5597416, -1981054, -3280281, -1135482, 1980517, 408022, -3335579, +-2182917, 30239790, 5273146, 4748623, -8848170, 13032005, -4322348, -580357, -3419331, 715112, +-8469139, -654446, 4021700, 941672, -6896644, 8595303, -2058363, -4480188, 1262184, 2684892, +-8880919, -12520903, 5211406, -5179731, -7364795, 1438277, -13959, -3811247, 6543920, -6581501, +2193655, 6326487, -1094680, 9225053, 2940979, -11724724, -12208981, -5249524, 824634, 2212445, +-9640054, 3481608, 3553012, 1824824, 3147137, 4254702, -10019622, -5032091, 2952253, -11226508, +-4019016, -282931, -11573326, -6235219, -3932580, 2337536, -5908802, -12635794, -5945309, -6758668, +14664092, 7050189, -1152662, 1988033, -3876745, 11614128, 13996762, 1555315, 9396315, 6808060, +2738042, 1669669, -5354214, -1184337, -4723927, 6765647, -8877697, 290984, -2105071, -13700409, +-4106526, -1983201, 7473243, -6784438, 3767760, 3190087, 1434519, 707059, 3263638, -3280281, +2612414, -1980517, 2895882, -730681, 4264366, 1230508, 401043, -2222109, -784368, -5353677, +2904472, -746787, 4582730, -4369056, 28454, -455267, 2746632, -479963, 2457795, 1025423, +1354525, 1288490, 719944, -2927557, 3419331, 4303557, -2153926, -3103651, -3599183, -1508070, +-201863, -1307281, 405338, -20629802, 13928042, 22355304, -16768626, -9987410, 4606353, 4010963, +-3401614, 7346005, 1998234, -6250251, -7636989, -156229, -2452963, -5452998, 2793339, -2506114, +359704, 6184753, -8315057, 1753957, 1119376, -4936528, 712965, -7841537, 1537598, 11520713, +5880884, -1148904, -3693672, -938987, -6566468, -6992744, 3452080, 5831492, -1828046, -3215857, +-2283849, 3491809, 5815386, 2794950, 10646150, -5713917, 4389994, -2748242, 1062468, 6645925, +-2370285, -2087354, -12639552, -1927367, -9782325, 4940823, 3383361, 12618077, -10783589, -3968013, +-10436234, -17194902, -2870649, 7195681, -11865384, 2652679, -1294933, -8657043, -10203769, -12873628, +17330730, 670015, 10303090, 7574175, 8756901, -3935801, -11488501, -8697846, -10749229, 3782793, +8471286, -8049843, 3835943, 9028021, -6069863, 1051730, 7333120, 8414378, 2047089, -2987150, +3629247, -1484448, 1952600, -8928163, -787053, 3455301, -3003256, 1167694, 591095, 404801, +2037962, 3393561, -3504157, -1244467, 2092186, 3025805, 883153, 1480690, 2976412, -612570, +3213709, -2652679, 2215130, 3229816, 3621731, 416612, -1312113, 2814814, -2233383, 711891, +-471373, -1920387, -914828, -1894081, -473520, 916439, -2318209, -6519761, 2353105, 3587908, +-16137803, 11657078, -1468342, -6052146, 9983115, 3525631, -9722195, -13922136, -5378910, 35970, +284005, 666257, -4963372, 15816754, 6555194, 4773856, 3651259, 4968204, -4816269, 1189706, +3142842, 2304250, 14212047, 1471563, -21182242, 2597918, 8813273, -7912404, -11909944, -2533494, +-6467684, -3833258, 990527, 14963666, 8968965, -1531693, -344671, -4530117, -13116830, -4450660, +-10834592, 7719667, 10581189, 120259, -5877663, -2157147, -2429878, 4836133, 6737730, 7132330, +-16522202, 3171833, 572841, 1444183, 11492259, -6719477, 4708358, -6133214, -4405026, 1197759, +7523172, 13517873, -2141578, -8766565, 2840047, -15769509, 12591770, 6780143, -1551557, -6521908, +3409667, -3652333, -7770133, -6481106, -7042673, -3376918, -1470489, 468151, 6676527, -5101348, +18344880, 762357, -2771865, 1050656, 5484673, 246424, -192737, 5945309, 4109747, 3067144, +246424, -2883534, -2211908, -685584, -384936, -2659659, -7415798, 3940096, 3768297, -2808909, +1064615, -4125853, -3051038, -1423245, -767725, -103079, 6602439, -1345399, -2010582, -1058173, +-333397, 4036733, 7355132, -2376728, 4149475, -1097364, -4508642, 5291400, -4885526, -3986804, +-2577517, -4023311, 926639, 3124052, 1656247, 3203509, 119185, -1179505, -222265, -3251290, +2036888, -1855426, -6988986, -1709934, 7741142, -13870060, -3935801, 8979703, -11275363, -1156957, +-1119376, -1501628, -13132399, 13056701, 5661841, -9087077, -1561758, -3894462, -3328063, -19956566, +-2797634, -9115531, -22526030, 4818954, 3489661, -10242960, -8470749, -12071542, -13744432, 11724187, +6617471, 12342662, 442382, 25894358, 1222992, 13528610, 18614388, -2150168, 5695127, 19177566, +-12908524, 5919539, -7776039, 13195213, -4136591, 25691420, 11676942, -7989176, -12070469, 2012192, +5960878, 10720238, 2886218, -9283572, -2136209, 8511015, 19092740, -7965554, 12806519, -4656819, +7817914, -14937896, 5905043, -8118562, 5915244, 983011, 1973538, -2705293, 11802570, 16478716, +-29925184, 9090298, 6238977, 4456029, -5456219, 3948686, -21468930, 1840930, 385473, -3337727, +-8200167, -7119445, -7092602, -2056753, 15321222, -8813273, -5178120, -12402255, 456340, 11018202, +-5510980, -6148246, 8530879, -303332, 6196564, 1381369, -1510755, 156766, 2736968, -5922223, +3008088, 1201517, -5093295, -4263829, -2488397, 1498944, 3457986, 3558917, 10385768, -1095217, +7867843, 3870303, 2567317, -5182415, -1609002, -7828652, -3532074, -1300301, -2619930, -3714073, +4358318, 2529199, 5206037, 6671158, 1256278, -1500554, -841277, -4257923, 2596845, 14920180, +15857019, -3458523, 16487306, -846109, -3438658, 1302986, 9270687, -3470871, -4198868, -1925219, +-11718818, 1924682, -3358128, 18461916, 12152610, -8798777, -9322763, -17526150, -6416681, 12729209, +22930294, -10434623, 7083475, 1537061, 3017752, 12492986, 8940511, -17955110, 3566970, -6409165, +-3649112, -7406134, -4048544, -7816304, -17307644, 3034931, 11573863, 4439923, 27108760, -6586869, +-3739306, 18837726, -6867653, -1046898, -4204236, 4993437, -20686710, -13272523, 7186554, 15477988, +22548578, 26919782, -19782082, -10257993, -1040456, 9008694, -890132, 30544734, 8497056, 4570382, +-23698018, 1650341, 170725, 11464341, 14950244, -11136850, -3696893, 4679904, -4860293, 5906, +16986596, 6135898, -16797618, 4389994, 8857833, -8057896, 26418344, -9129490, -14128832, -19824496, +14658723, -3165928, -16646756, -13186623, -3023120, -606127, -6624450, 404264, -7211787, 1414118, +-10040560, 714038, 4904853, -3450469, 3862786, 781147, -6072547, 693637, -96100, -1149978, +647466, -4107063, 4987531, 68719, -2546379, 5723581, 5791227, 282394, -1598265, 2572686, +-5458367, -2245194, -4385699, -800475, 4504884, -3520800, 1971390, 4470524, -8209830, -2905546, +-1692754, 1385664, -1552094, 3572339, 7949448, -2210298, -4752382, -2279554, 5133560, 1496796, +483184, 4156455, -2386391, -1664837, -1498407, 3672734, 31316218, 14855218, -8227010, -2637647, +-28894392, 2261300, 7649337, 2028298, 43103220, -5435281, -3260954, -18917184, -16356846, 6732361, +-13373991, -8152385, -8968429, -6015639, 10710575, -6972880, -12295418, -10586021, 963146, 10829223, +-13904957, 3158412, 6291590, 1422171, 15554224, -1776506, 1224066, -15776489, -22244172, -9131100, +10198400, -12242267, 2981781, -10273025, -38836704, -20879984, 11647414, 866510, -22252226, 3466576, +31008054, -1396401, -799938, -12069395, 6788733, -13321915, -23939610, 641024, 3644817, -9253507, +4603668, 9051644, -2212445, -7790534, 6468221, 8422431, 15564425, -8909373, 11700028, 15025943, +6324340, 26102664, 2937221, -16159814, 19017042, 1193464, 3196530, -3416647, -3809099, 11791833, +-11602317, -1616518, 28933584, 22732188, -14013941, 14572287, -4168803, 26892400, 11330124, -9242770, +-21404506, -868657, -7809325, -9236864, 6074158, -8313983, -222265, -2073932, -7457674, -12474733, +-2422362, 10699837, -11393474, 142808, -7060926, 1173063, 4515085, -4538170, -13332115, -2267743, +-6288369, 8237211, 4975183, -3163244, -8804683, -3576634, -9474698, 5834713, -4628364, 3219078, +3791919, 5571110, 4414690, -7291781, -5191542, -8202851, 2517388, 5456756, 757525, 10748693, +11335492, 6245956, 4645544, -22498650, -23877870, -28525026, 39322036, -21771726, 5166309, -1205812, +-12511240, 19969450, -23490250, 10159208, 41813656, 25741350, 5959267, -33907156, -1919850, -22371948, +-11365020, -20429548, -1957431, 5806796, -3695283, 16065325, -7740068, 2672007, 7924215, 22451942, +3105261, 3099893, 27156542, -17889612, -2554969, 11985106, -5262409, -13874892, -9241159, 13692356, +-11958263, 5742372, 23240068, -6474663, -41962368, -2563559, 10473815, -51515984, 31060130, 23970212, +-19569482, 31947578, 21626234, 14256070, 33112588, 712428, 16997334, 1962800, 1974074, 11938398, +-21103858, 21019034, 28515362, 21973052, -22719304, -4438849, 31341450, -15235860, 24840480, 22814866, +53289808, 32174674, 1782948, 3689377, -6950331, 6690486, 9235253, -30920006, -44302588, -15411953, +3787088, 1650341, -6423124, 34622268, 16256451, 6522445, -15293305, 13728863, -10859825, -13677323, +-7059853, 15673946, 18185428, 3521873, -3365107, -3517578, 466541, -21451214, -5162551, -5540508, +6853694, 3985730, -11218991, -8480950, -611496, 16909824, -4807142, -6518150, 351650, -6750615, +-17235704, 8575976, -3798362, -6704981, -10154913, 59056, 5581847, 1119376, -30578020, -1727651, +14895483, -2280628, 481573, 2506650, 4229469, 12776991, 10040023, 446140, -271120, -4907537, +-1715839, 24009940, 29700236, -58271968, -53360672, 23273354, -15335181, -16805134, -6995428, -20308752, +7216082, -32898912, 41539848, 15617038, -17307108, -372052, -16929688, -12733504, -13645648, -15623480, +-10123775, -39684424, -35655208, -6651831, -8095477, 2268280, 3390340, 6899328, -2501282, 5061619, +6649683, 17656610, 19559818, -7377680, -9875740, -11581916, -9816685, -22458920, 33427730, -11805791, +8158827, 24814710, 23466628, -8907225, -10043244, -18701362, -12270722, -15357192, 25693568, 2731599, +3176128, -31793496, -11268920, 45938972, -4451197, 42768212, -8637179, -16035260, -10104984, -18126372, +-18551574, -3413962, 207232, -25523380, 2145336, 12183748, -1031866, 9573482, -58887224, -23810224, +-16486232, 31259846, -7472706, 5135171, 10683194, 49080740, 13928042, -4537633, -5001490, 42261404, +25534118, 6222871, 8247411, -2177012, 33564632, -14004815, -19142132, 10334765, 15775415, 28003186, +26064546, -15289547, 17688286, 13217762, 14253923, 4227322, -10193568, -20143934, -17093970, 10632728, +14751602, 7866770, 5302137, 17407502, -1721208, -4836670, -1001264, -1469416, 9069360, 5432060, +11836393, 20682416, 14607721, 23660974, 6387153, -21314312, 6752763, 5668820, 18501108, -369904, +14496051, 6167036, 13939853, 301185, -26785564, -3482682, -5893232, -1820529, -30786862, 63946696, +-20648592, -12836047, 37896644, -24022826, -36273148, 33646236, -48828408, -14120242, 11511586, 8386461, +-34059628, -13357348, 29237452, 190589, -5761162, -19013284, 22948548, -22762252, 1509681, 18067854, +-6027450, 16589848, 119185, -8189966, 5557688, 3943317, -9889699, 15774878, -8677445, -3514894, +4712116, -308701, 982474, -2960306, 4684736, 10012106, 16183974, 23295902, 11427834, -9619116, +-2682207, -14773614, 13659607, -4912369, -21345988, 5015448, 91805, -12160663, -29180544, 20550882, +1560147, -13503914, 32991254, 1899449, -10205379, -5949604, 48863308, -45703284, -49195628, 30003568, +46837156, -86405616, 428423, -31983548, -29031832, -12853227, 31449362, -24286430, 41618232, -5889474, +-1019518, 55919400, -15781857, -43290584, 53761180, 63311040, -61478700, 68732360, -23152022, 1693828, +56829396, -19017042, -21735756, 15581068, 15282031, -7307887, -2860985, 10545218, 2111513, 1345399, +-13512504, 18687402, 121870, -1222992, 372052, 2507724, 8458401, 5106716, -6801081, -7454453, +7878581, 18633178, -16115254, -14958834, -3998078, 19510962, -659814, 10421201, -2801929, 4342749, +108985, 4444218, -2192581, -3431679, -23021024, -9687836, 5816997, -8335458, -2281165, -8201777, +-12412455, 19476066, 12228309, -33921116, 13589813, 17575006, -3391414, -148713, -11884711, 17394618, +38050188, -17785460, -24105504, -6626598, 6039798, 38674032, 28889024, -10097468, -3077344, 12076911, +31471372, -10482941, -1763084, 19302120, -24736328, -21269752, 16958142, -11293617, -8426189, -10400800, +-935766, -17135846, 1374926, 11746736, -7198902, 9070971, -8058433, -5069135, -5075041, -23701778, +3547643, -9602473, 14549202, 31022548, 1734630, 15457050, 12850005, 1176821, 5889474, 9702331, +32948304, -23301272, 15936476, 13982266, -16833050, 11272679, 11014444, 3494493, -14936286, -29933238, +-30234422, 9970230, 10878615, -11437498, -50545860, 41115720, -13824426, -22165790, -12774843, 41359460, +-19437412, 45229764, 24159, 15187004, -42562052, 40240084, -18420040, 17823040, -5429913, -58272504, +-18344880, 11468100, -35974648, 36999532, 3990025, -53426172, -60051696, -30914638, 41766408, 10306311, +-37273872, 45449880, -48877264, -2412698, 88286808, 13205414, 5028333, 8773544, 6701760, -23175106, +24138254, 1786170, 12338904, -15555835, 23202488, -12817793, -12207371, -10239202, -1293322, -641561, +7033009, -2332167, -3403762, 4549981, -8077223, -16724066, 15217069, -5619428, -2609730, -19845434, +9072045, 4403415, 8610336, 2354179, 9934259, -7368017, 2345589, 27445914, -3192235, 285615, +14552423, -15604153, -3285113, 802085, -1561221, 10673531, -11041287, 11983496, -4191888, -31039728, +2005750, -8117488, 9125195, -10331544, 12004970, -19273666, -36839544, 155156, -39133056, 10743861, +-3497177, -6998649, 13070659, 21617108, -13874355, 3105798, 23742042, -18612240, 32206350, -4294431, +-35455492, 30411590, -14638859, -6500433, 27066348, -34686156, 9135932, 594316, 12579422, -5443871, +-12743705, -52939232, 12135430, -21845814, -53192096, 64297272, -43289512, -18022220, -8601209, -14628122, +-32676112, 18341120, 44362180, -27451820, 12446278, -39824548, -22540526, -22686554, 20045150, 3621194, +58214524, -10005663, -4864051, -17358648, -50228568, 68719, 24410984, -18551038, 20490216, 24661702, +-20807506, 2090039, -17744658, -74177840, -38924752, -22820234, -77961176, 49844168, 65639448, 30890478, +-66104380, -53117472, -118581896, 17160542, 140966192, 65222300, 24903830, -37044092, -130065032, -29527900, +30109868, 88916024, 89147952, -60568704, -51250772, -23785528, 11633993, 6155762, 96846680, 1641751, +-11803644, 7897371, -9600863, -23633594, 34070364, 6129992, -7305740, 18867254, -15446850, -26361436, +18700288, 16195248, -44914084, 30264488, -6719477, -9883257, -23929948, 25419764, -24179056, 29092498, +-14308684, 29777008, -35100084, 14052596, -9810242, 472446, 25376814, 41511396, 11761231, -15420543, +-10966125, -2581275, 22942104, -3663607, 32989106, -25796648, -20305532, 9495099, 32703492, 3846680, +19938848, -55810952, 40487048, -7945690, -8863202, 1005022, 18234284, 345745, -3493956, 13492640, +4639102, 4494147, 21510270, -13631689, -151934, 11170136, -3894999, -2030446, 13562433, -12593381, +-3056943, 3814468, 21319144, -14095546, -10006737, 11934640, -566936, 6699075, -21124796, 27702540, +-6608344, 9347459, -6060199, 3567507, 15090904, 6642167, -3554622, 12986370, -4957466, 13125420, +-10358387, -776852, 13534516, -3125126, -5653251, -27354110, 2752537, 21137144, 2189360, 9904731, +-13872207, -4398047, -8319889, -8702141, -3599720, 15289547, -5617817, 9315784, -12087649, -14403710, +-6218039, 3419331, 27925878, -10732586, 12676059, 835371, 2739116, -13676250, 7425999, 14512694, +735513, -13222057, 10167261, -8812199, 6798933, -5378373, -3940096, -5145908, 1844152, 10178536, +-5181878, -2617246, 4656282, -613643, -7789997, -1660542, 7543037, 6443525, -6763500, 1134408, +6887517, 281857, -4278861, 1114544, -6807523, 5050882, -475131, 2579128, -3121904, 1312113, +4365835, -2214056, 5124970, 984084, 4669703, 3597572, -7684770, -7755101, -2675765, 13538811, +-8674760, 9403294, 7482907, -5510980, -14035953, 10593537, -9028558, 11970074, -1165547, -1999307, +-4974646, 1984812, 1949378, -740882, -1642825, 1003412, 53126060, 10568304, -28496034, -20215338, +-31471910, -9958419, 6036577, 16723529, -5236639, -6734509, -5835250, -5586679, -5319317, 7654706, +-3896609, -1047972, -1703491, -5514738, -1343251, 8413841, 1180042, -2405719, -8410620, 9654013, +-12513924, 7366943, -4484483, -12235288, 27917, 5614596, 6261526, 4946192, -7268696, 1642288, +-2348810, -3937411, 14738180, -13117904, -2427194, -503585, -936840, 1416802, -2228551, -7689602, +6471979, -12205223, 11643656, -1673964, -8229158, 2869575, -4260071, 10423886, -6104223, -3631932, +11181947, -10006737, 3465502, -4766877, -1135482, 8644159, -6171868, -2395518, 7678865, -5243618, +1998770, 842350, -6288906, 15275051, -13326747, -1083942, 5832566, -3330747, 9701794, -4360466, +-2173790, 2598992, 3185792, -995359, 2131915, -806917, -4335770, 3921842, -26307, 433255, +2098629, -221191, 3016141, -3008625, 871342, 666794, 663572, -321049, -1913408, 2541010, +-375810, -598611, -1815161, 2253247, 3561602, -1156957, -1849520, 1173063, 2075543, -2580202, +2166811, -1932735, -1730335, 5786395, -891743, 2171106, 3005940, -3908420, 9734007, -3145527, +-523449, -436476, -5637145, 5876052, -3646427, -5775658, -25152402, -37796784, 49539764, 154542592, +13232794, 13455059, -105353400, -133264784, -27765890, -28225452, 78500728, 133611600, 68563784, 13200045, +-48343080, -94068376, -66399120, -47472812, -2462627, 65096136, 95122792, 51408076, 11780558, -33348810, +-59278064, -33192044, -31935230, -29908542, 18905372, 38758320, 38200512, 38485056, 9254044, -16681116, +-6844568, -25353728, -39690328, -4395899, -11834246, -8008504, 35840964, 20709796, 29942902, 18161806, +-13572634, -32659468, -7864085, -21226802, -3277060, 14849313, 4552666, 8024073, 16199006, -8208756, +-11488501, -2643552, -6749004, 6538551, 10460393, 569083, 12912819, 7662222, -13550085, -13035763, +-20772072, -17764522, 792421, 21435644, 32492502, 15651935, 4112968, -7550553, -21744346, -3730179, +-24518358, -15043660, 11550241, 9060234, 27470074, 9254581, -6986301, 8094403, -14235669, -24707874, +4353486, 6267431, 8288750, 7658464, -1542430, -3087545, -2360085, -10273562, -7870528, 5388574, +8386461, 8431558, 8557722, -2370822, -8266739, -5481452, -3172907, 218506, -170188, -9354439, +2397129, 11777874, 6357626, 7328825, -2181844, -11855183, -6885907, -7000260, 2737505, 8310225, +5484137, 5132486, 2222646, -1700807, -8991514, -11849278, -5422933, 719407, 7320772, 11674795, +7150584, 7191923, 4540854, -7441031, -13795972, -17713518, -11482595, 4935991, 9909026, 12851079, +17835926, 5404143, -5371394, -9043591, -7332583, -5459441, -5149666, -5248450, -1543504, 3941169, +7832947, 6881612, 5398774, 3718905, 799938, -5079336, -8754754, -8478265, -4339528, -273267, +3159485, 3179350, 1852742, 339302, 267362, -92879, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 1260573, -3418794, 2694018, -905701, 2068027, 963146, 5925981, -1047972, -141734, 727997, 4341675, --872415, -4496294, -2115808, -4315369, 1037235, -1525787, -380641, -530965, 1027034, 434329, -860067, 2525978, 4592931, -2033667, -1154273, 937377, -2197413, -284005, 3578245, -1938104, -4427575, 475131, -1617592, 2971044, -4054449, -1016297, -2831457, 3960497, -139586, -1438814, --1094680, 64961, 3642669, 165893, 4388920, 1712618, -3648575, 2954938, -1607928, -2690260, --2235531, 3036542, -651761, 9637907, 998580, 2436857, 1728188, -4465156, 44560, -643171, -1151588, -2527588, -1742683, 5031018, 4085588, 389768, 1685775, -441308, 2535105, -4118337, -401579, 3123515, 1937567, 333397, -338766, 2230699, -3527779, -1600412, 3717294, -2439542, -776852, 1835025, 2191507, 694711, -2822867, -1854889, 1461900, 341450, 1449552, -430570, -405874, -1386738, -95026, -683974, -427886, 812286, 1522566, 660351, -908386, -334471, --619012, 374736, 926639, -544924, 680752, 520765, 965294, -128312, 1161252, -466004, -281857, 730144, 907849, -7336341, -6628209, -4118337, -3757023, -3248606, 1245004, 4636417, -9438728, 1816234, 2433099, -13422, -6740415, -2814277, -2503966, -6047314, 9420474, 2511482, -3741990, 2594697, -2083059, 967978, 9020505, 3609383, -2121177, -164283, -2186675, 199716, --4173098, 2522220, -1314260, -1859184, 360240, 4805532, 510564, 1685238, 3008088, 4169340, --7441031, 111132, 1897302, 4348655, 6665789, -3688840, -744103, -1777580, 5562520, 3026341, -3590593, -573915, 1670742, 11127723, -7006166, 1428077, 665720, -4669167, 2010582, -6531035, --868657, 1705639, -1404454, -9856950, 2785823, 709207, -2656437, -2711735, -441308, -1458141, -3353833, -3105261, -1371168, 1003412, -86973, -3018825, -129386, 2531346, -4119411, 400506, --1110249, -957778, -1269163, -693637, 650688, -2376191, -1797981, 395674, -1424319, -1869921, --1943473, -632971, -1283658, 2441152, -2094870, -555661, 360777, 1249836, -118112, 126702, --715649, 191663, -1246077, 1000727, -1787780, 9912785, 914291, 3528853, -375810, -2715493, -251792, 6950868, 3616899, 4468914, 7267085, -3239479, 109522, 6973953, 2280628, 3037079, -435402, 816044, 4149475, -3772055, -1061931, 5171678, -3518652, 1990717, 3006477, -2275796, -2218888, 6949257, -3283503, 2533494, 590558, 219580, 124554, -1511292, -4742181, -1534377, --3968013, -477278, 1709397, 3295851, 3579318, -695785, -5958194, -608275, 8785356, -3305514, -1802276, -1633698, -9170292, 5312875, 1387811, 3926674, -631897, 4479651, 4468377, -7902740, -3165928, 165356, 2974265, -655519, -5454072, -339302, -734976, -1088237, -995359, 3425237, -24696, 602906, 7153805, 1294933, 5696737, 98247, 593242, 998043, -3056943, -4970351, -3389803, -3783329, 2244657, 1284195, -144955, 2240899, -2420214, -1493575, 1612223, -9127, --4669167, 1429687, 606127, 519691, -905701, 1954210, 244276, -909996, 2328409, -614180, --147640, -1992328, 727997, -1042603, 377420, -82141, -230854, 357556, -671626, 1132798, -333934, -583579, 405874, -390305, 184147, -157303, -707059, 16291885, 9166534, 13938243, -4534412, -5795522, 2971044, -2603287, 401579, 1340030, -11883101, -3185792, -3266323, 3054259, -4680978, -1943473, -266288, 1552631, 383863, 8492224, -932008, -8944269, 2913062, -5180268, -3971234, 4503273, 3614752, 5248987, -1263257, -1844152, 2142115, -1601486, -2072322, 1495722, --1383516, 3140695, 4532264, -1979443, -6870874, 2192044, -6683506, -4328254, -841814, -13927505, -135291, -2370822, 5450851, 5178120, 2511482, 8494372, 8568460, 3773666, 1905355, -644782, -412854, 459025, -3892314, 7931194, -1067299, 2741800, -2529736, -3058017, -1101659, -4570919, -4002373, -2127620, -1691143, 7777112, -6508486, -2019172, 1642825, -3005403, -913217, -264677, -2723546, 3202972, 2156074, 5531381, -1831267, -1535988, -819265, -3520263, 1835025, 3544959, -4886062, -111669, -754304, -1060857, 46708, 1037772, 1019518, -1489280, 1615445, -38118, -1160715, 981400, -213138, -402653, 2090039, -622770, 1048509, 850404, 963146, 855772, --617402, 774705, 3539590, -277562, 161598, 404801, 2608656, 457951, -603443, -1879585, --6206228, -14286135, -5110474, -1483911, 2021856, -1764158, 4315369, -939524, 6973417, -6280853, -3680250, -1541356, 12836584, 5408975, -2844879, -5489505, 2938831, -7817914, -4234838, 3046206, --2807835, -4652524, 8858907, 3738769, -564251, -4083440, -5617817, 3804804, 2847563, 2849711, --302795, -1350767, -3497177, 5276368, -6903086, -2896419, -383326, 4902169, 3654480, -308701, -5293547, 718870, -2578591, 1134945, -2568927, -2557116, -3090766, 3823058, -2843268, -41339, -4918812, 7505456, 7556995, 3178813, 2628520, -441308, 4246112, -1679332, 6139656, -1020055, -3886409, 3118146, -2638721, 383326, -2883534, 3089692, 2559801, 1125281, -1040456, -5158793, -3612604, -5619428, -761283, -6085432, 2188286, -381715, -663036, 1247151, -5299990, 319438, -1291711, 8571144, 2687576, 1511829, 1946694, 3396782, 1394254, 1806034, -2596308, 1993939, -1379221, -3389266, -359704, 280784, 675921, 1583232, -1783485, 1200443, -1178432, 337692, --277562, 2245731, 158914, 372052, 191663, 825707, -513249, 2049236, -1129576, 835371, -689342, 1980517, 826244, 2708514, -1948305, 1076426, -510027, 3107409, 1085553, 1178432, --453656, -310848, 169651, -474594, -2021856, -6649146, -14017163, -11288785, 688805, -9644349, --4773856, -13665512, -7299834, -8326331, 3299609, -4445291, -5943698, -2021856, 306016, -3511136, --13302587, 3572876, -2369748, 1339493, -6033892, 5998996, 2199560, 139586, -5371931, -2379412, -6774774, 4638028, 277562, -1010391, -4585415, 2845416, 1449552, 2945811, -5486284, -507880, --4462471, -3980361, -4366908, 449898, 8778913, -7185481, 125628, -6846178, 671089, 3183108, -3964792, -7220377, 7227356, 8807367, -2937758, -2101850, -1571958, -354335, 2767033, 3549254, -845572, 2411624, -4332012, -844498, -1632625, 7572028, -2413235, 8380018, -254477, -2588255, -6654515, -712965, -4046396, 1416266, 7211787, 8337606, -670552, -2632815, -4594542, 2858838, --6118718, -623307, 4018479, -3133716, 1783485, -238908, -86436, -2526515, 4832, -1966021, --3090229, -338766, 2518462, 1328756, 2507724, -1178969, -883153, -2084133, 746251, -1692754, -2610803, 1318018, 3668976, 311922, -926102, -374199, -717796, -1364189, 1648731, -1214402, --731218, 650151, 513249, -1887638, -700080, 437013, -3758, -1069984, -1838246, -170188, --1700807, -1194538, -749472, 2080912, -220654, 674310, 579821, 19864, -1347009, -459025, --10846403, -10730439, -12461311, 3687230, -10097468, -4160213, 9649718, 4751308, -10956462, -702227, -79457, 4835597, 7118909, 12240657, -3329137, -4354023, -12027519, -14696304, -8730595, -2928631, -5979668, -5940477, 2863670, -8451959, 8796630, -6332930, 7058779, -3249680, 965831, 1887101, --1452236, -6244346, 9926743, -8555038, -464393, -4545149, 1187022, -5301601, 1197222, -21484500, -315680, 10064182, -12847321, 2973728, 8719320, 3192771, -6709276, -691490, 10501732, -12934831, --82141, 5370320, 5060545, 5052492, -1915019, -1822677, -8440148, -4109747, 3401077, 5791227, -9084393, 11191074, -16432545, 6297496, -4989142, 1263794, -11599096, -4635344, 9473624, 2388539, -1264331, -6282464, -36507, 6204617, 4423280, 2805688, -5766531, -3630858, 5912560, -1513976, --2568927, -1219771, -4257923, 3660923, -741956, -3259343, -1322313, -1071594, 811749, -2080912, --2338073, 863825, 765041, 989990, -1354525, -1828582, 1574106, -1141924, -4403952, -308701, --1349694, 2713346, -2074469, 213138, 153008, 1132261, -2781528, -1452236, -1043677, 368830, -2830384, -258772, -751082, 1862405, -30602, 1833414, -892279, -1855963, -797253, -3202972, -675384, 56371, -2355253, 1309965, 12831752, 21485038, 11905649, 14014478, 2099165, 4993973, -18786724, -562104, 532576, 12907450, -6327561, 57982, 3673808, 6448357, 10595684, -8619999, --12359842, 6824703, 3746285, -7131793, 1506997, 4425427, -2774549, 2554969, -6666326, -1472637, --7780870, 2413772, 8423505, 2655901, 7376070, 5751498, 5997922, -14635101, 744103, 17098264, --2055142, -274878, 15883863, -2066416, -585189, 2386928, -2119030, -436476, 8783745, 13862007, --13608067, -2183991, 2692408, -4139812, 6396280, -2128693, 613107, 1038845, -2979097, 12207908, --1575716, -4403952, 4548371, -4567698, -7610682, 2651606, 8284455, 3168075, -934155, 1712618, -7927973, 4179003, 7102266, 2177549, 876173, -49392, -6984691, -1412507, -5472862, -1219234, --2301029, -12396886, -5386963, 833224, 8012262, -3262565, 3096672, -2099165, -6573448, 2947958, -713501, -2058900, 1032403, -3971771, 201863, 1026497, 2458332, 3528316, -834297, 2284386, --3013457, -4438849, -5345087, -535797, 4844186, -843424, -376883, 1647657, 268972, 564788, -2610803, -1232656, -477815, -1392643, 3753802, 117575, -552440, 470836, -943819, -1968706, --2396592, 1022739, 2135136, 2682744, 1468879, 1081795, -462246, -140660, 46171, -835908, --3684545, 36210332, 5020280, -772557, -219043, -17377974, -5083631, 1678259, -4053376, 7668664, -3373697, 12429635, -1582159, 20401, -2681133, -5253282, 8338679, 1568737, 3190624, 4683125, -6528351, -6138045, -6182069, -7144678, -4972499, -4092567, -1793686, -9815611, -1925756, 15853798, -7474317, -3015067, -1071058, -1862942, 1323924, 5616207, -2745558, 22655416, -3937411, -616328, --10282152, 4109747, 9884330, -1699196, -7565585, -981400, 3808026, 7587597, 3278134, 10666014, -15932181, 5190468, -338229, 9463960, 7732552, 2891050, 5976984, -19857782, 4610648, 525060, --17569638, 6454799, -409633, -7570417, 4954782, -8028368, -7810398, 9319542, 7334731, -4139275, --15544024, -7035694, 3739306, -8936216, -1817308, 3909494, 15278809, -2475512, 3094524, -7959648, --16772384, -9009231, -8032663, -3641059, 8025147, 1098438, -5558225, -1685775, -3460670, -3383897, -5139465, 4270271, 1660542, 3647501, 4340065, -3637837, -2658585, -2702071, 599685, -2963528, --4389994, -4274566, 1879048, -1447404, -610422, 610422, 1607392, -3629247, 2087354, -778463, --412317, -1605781, -561567, -2280628, 5754720, -3532074, -1204202, 1021129, -3646427, -3537979, --2665027, 224412, 2945811, -19191524, 12086575, -2223719, -12400107, -491237, 11242614, -12862890, --2732673, -10370735, 6854768, 2230162, -3841312, -4415764, -1615445, 6905771, 5253819, 2966212, -7153805, 6307160, 610422, 7616588, 8703751, 3615289, 4799089, -8907225, -4399657, -6201933, -5468030, 7185481, 2520609, 2222646, -4275103, -3098282, -2641405, -2298344, -7618198, 6925098, -1534377, 449898, -8152385, -2418604, 12799539, -9259949, -9943923, -15155866, 5228049, -11367705, -16429324, 19085760, 13080323, 7696582, 662499, 14918032, -7964480, 11724187, -1606318, -8366060, -535260, 682363, -18034030, -7990787, 6648073, 1024350, -3130494, 2707977, 14961519, 10291279, --17396766, -4382478, -359167, -465467, 4884989, 7357279, -456877, -13884019, 5471789, -8061654, --25848724, -7500087, -5352066, 7976828, 12879533, 4377109, 528818, 652298, 272194, 1147830, -9135932, 21475, 1254131, 1179505, 4553202, -8201240, -558883, 2503429, 5982890, 7344931, -2480344, 4356171, 6389838, 8579734, 10953240, 4218732, 5357972, 5402532, 145492, -517007, --2137820, -1378685, -73551, 2248416, -6609955, -1614371, 3644817, 6062347, -784368, 1693828, --965294, 2540473, -93416, 3885335, -765041, 3725347, -2918967, 4773856, -44560, 4508642, --16095390, 1604170, 1789928, 10067403, 2168422, 25721486, 4093641, -10616085, -3435974, -8938901, -16252693, -20852066, -1864553, 14412837, -31498216, -12431246, -10631118, -11012296, -20892868, 1974074, --3664681, -8960912, -1144609, 9881109, 1240709, 1309428, -6165426, 2448668, -2088428, 2433636, -9127, 1561221, 8054138, -1959042, -502511, 16389058, -10604811, -2136746, 2828236, 14115947, --7415798, 20156282, -6106370, -8144869, -17261474, -22457848, -6555731, -16716013, 8149701, -5073430, --12553653, 1712081, 2024003, 9244380, 7816841, 3266860, -1592359, 28526636, 15785079, -1803349, -2779381, 9767829, 7300371, 4743255, -3866544, -558883, -5122822, -6652905, -6156299, 4298189, -22245784, -15557445, -3813394, -8861054, 16030429, -4226785, 4965519, -2290291, 7525320, -17621178, --13181255, -4553202, 7485591, 2370822, 6463389, -3900904, 3986267, 6028524, 5294084, 2508798, --1053878, -7519951, 4730370, 1762547, -6381248, -4480725, 3991098, -4201552, -3180423, -139586, -4297652, -4003447, 5179194, -3251290, 7399155, -4128001, 827855, 2573222, 1345935, -3577171, --6761353, 5230197, -2030983, -1531693, -528281, -716723, -2137283, 4958540, 6204081, 4292283, -3796214, -753230, 2189897, 7104413, -3838090, 2797634, 1236951, -185757, 1568737, -479426, -385473, -2594160, -12823162, -12326556, 6950331, -5527086, -23089208, 11432666, -6877854, 9128953, --6635188, 11490648, 7839389, 9552007, 15322296, 2470143, 12968117, 5194763, 3364033, 8779450, -3055869, 2395518, 650688, -384936, -8205535, 7312719, -16683800, 7291244, 1772748, -4807142, --8977019, -257161, 6488622, -7482370, -3085934, -11178189, -4290136, -13755707, 903554, 7536594, --102005, -1802813, -8678518, -15185931, -10972568, 11829951, 3998615, -4962298, -8667781, -2156611, --651224, -14847165, 12600897, 11403138, -14553497, -14212584, -23203560, -3561065, -27770722, 7475928, -10893648, 5681168, -1675037, -3573413, -2811593, 11399380, 11610907, 13300977, -8608725, -6920266, -8979703, -3868155, -4083440, -16337519, 7322383, 13310641, 15344308, -3617973, 8442295, -4716411, -2595771, 8330089, 4395362, -5904507, 2853469, -10093710, -6039261, -4198868, 1592896, 4232691, -3746822, -4011500, -3557844, -1508070, -4410932, -911070, -6113349, -7767449, -3956739, -3249143, --2262374, -1052267, -2137820, -3100430, 797253, -162135, 4614943, -1574106, 5863704, -1530619, -4711043, 289910, -2452963, 1149441, 11735998, 3571802, 6055904, -2692945, -4541928, 935229, -4369056, -4071092, 8562017, 8433705, 2576981, 3949759, 1922535, -9691057, -4928475, 22184580, -25709674, -10188199, -537408, 6895033, -20735028, -3888019, 25865366, 868120, -28098750, 3055869, -8685498, -705985, 9812927, 23078470, -9441412, 20857434, 11355357, 17799418, 5034776, -13676786, --14507863, 11633456, -13161390, -20750060, -5983963, -24648280, 5456756, -1677185, 8781598, 7499013, -5413807, 2763812, -956167, 678605, 12552042, 6096169, -24108726, -2837900, 8123931, 15512348, -8687108, 19221590, 17383344, 13578002, -6386617, -2326262, 3631395, 35006132, -14624364, 2561948, -7458211, 13730474, -5622649, -19464254, -4046933, -4908611, -11681774, -21526376, -23469848, 6454799, --13147432, -9951976, 6120866, 18512920, 22844394, 433255, -1251983, -274878, 17556752, -11880416, --6033356, 20738250, -22563074, 2510945, -17816598, -11973832, 1372242, 24049132, -3860102, -16443819, -21488258, -21949430, 936840, -26497800, -2292976, -3323231, 7851737, 14746770, -10864120, -6198175, --7665980, 1990181, 594316, -8203388, 4714264, -2421825, -2265595, -3494493, -2774549, -9713605, -2245731, -4673998, 3505767, 2632815, -648003, -2139431, 5968394, 14496, 153545, -11454678, -1785096, -964757, -311922, 10709501, 1145683, 3034931, -4393215, 1743220, -2502892, -6216429, -2809982, -12685186, 4318053, -4363687, 9597641, -7541963, -942208, 1771674, -971736, -1960116, --3864397, 7081864, -4575214, 7710003, -2633352, 4552129, 12068321, -14183593, -31756452, -7492571, --11081016, -10463077, -6570226, 1474784, -10888816, -9210020, 3029563, 7074885, -6841346, 16811576, --1834488, 11263015, -5700496, -671089, 9687299, -13858786, -8689793, -4718559, 14456860, -3490735, --15904801, -6003828, 2385854, -7708930, 6584185, -10656888, -10729365, 15569793, 4508642, -12342662, -7477538, -1490891, -9741523, -947040, -16141561, -13870060, 2734821, 24174760, 9731859, 7530689, --19394462, 14923938, -1731946, 11433203, -6770479, -13493714, 6542846, -24887188, 20769388, -33694556, --21370146, 7800735, 18532784, 1433445, 22194244, -9719511, 5808944, -15416248, 20818780, 6695854, -15479599, 7131793, 3623879, -4893042, -5206574, -10176925, -3568044, -612033, -17969606, -10722923, -1556926, -27217208, 1517197, 30562450, 9097278, 11005854, 2929168, -13866839, -10451266, -2828773, --3360275, -986232, -5403606, -7295539, 6074695, 3996467, 5510980, 8633958, -8735963, 5667210, --3326989, -4712653, -3570192, 7688529, -2613488, -8390219, -12720619, -88584, -7664369, -3604015, --7857106, -2180233, -5155572, -3092377, 11950747, -6534793, 2723546, 3706557, -9610526, 10948409, -90194, 6546067, 8612483, -4011500, 4253628, 1931662, -398358, 2663954, 7206419, -4184372, --4100083, 6644852, 558883, 5282810, -23865522, -22257058, 2196876, 9173513, -11253888, -50353124, --10525354, -257161, 6581501, -17031692, 1472637, -9496710, -1979980, -13568875, -15151571, 13460428, --14734422, -18078054, -3057480, -12652974, -13916231, 4793184, -20215874, -6689949, 12197707, 27935542, -22562000, -1075889, -13764833, 4830228, 20308216, -936303, 13506062, -3874597, 17013440, 9568650, --17476222, 27816356, -21199958, -11193222, 18721762, -20627118, 6226092, -4736812, -15527381, 1834488, -23533736, -4878546, -13833016, 8817568, 11548093, -325881, 4779762, -33839512, 8172786, 1422708, -17076254, 8276402, -14846091, 14754286, -7909719, -1275068, -13758928, 7321846, 19832548, -4074313, --3923990, -20315732, -28749438, 16368657, -2079838, 13191455, -15722802, 11978664, 9560597, -20447802, -1180579, 18234284, 10407780, -9538049, -16450798, 14916958, 2429878, -12767327, 12133819, 2021856, -5410048, 1461363, 5027796, 963683, 13557601, 210453, 4668630, -894964, 563714, 12061342, --3878892, 322659, 2739116, -3131568, 2197950, 1102196, 8316131, -403727, -9252970, -1115081, -1178969, -5481452, -1638530, 617402, -3694746, 12489228, -2939905, -7128035, 792958, 7954280, -3730179, -402116, 4522064, 657667, -5187247, -631360, 13100187, 8962523, -8857833, -6469295, -1893007, 18979460, 19041738, -51345796, 19358492, 26025354, -6622840, 18103824, -183073, 9381819, --4168266, -10560251, -6820408, 10918881, 2576444, -14834280, -9635222, -1373853, -6956774, -3800509, --1593970, 31758598, 6385543, 7030325, -19649476, 13673028, -13991930, 204011, 2461016, -21474836, -10027675, -7963406, 1119376, -8696772, -15523622, 419296, 10304700, 29427506, 10584947, 3055332, -18204756, 7703024, -2197413, 2987687, 459025, 5134634, 2982855, 19959250, 8737574, 6030134, -3294240, -2564096, -6205154, -19658602, -16500727, 2287070, -2359011, -12131135, 1722819, 14737107, --22487912, 21721260, 5599027, -8007430, -903017, -5822902, -1802813, 13154411, 5754183, 4281546, --15280957, -3113851, -20885890, -6449967, 5816460, 7628936, 7609609, -9051644, -7260642, 16179142, --1908576, -26244398, 3769908, -488016, -286152, -15501611, 5078799, 11575474, -1599875, 16665547, -11243688, -5619965, -308701, -7245610, 9006546, -791885, 2968359, 1352915, -3791919, -3184718, --695248, -3301219, 3652870, -7203197, -704912, 405874, 3885335, -3723200, -4310537, -5151277, -280247, -1273458, 2861522, 1625645, -151934, -3228742, 3473555, 2603824, 512712, 3777961, -692564, 2693481, 2516851, 3582540, -999117, -13187160, -498216, -3781182, -45634028, 70723080, --69924216, -31622770, -15978889, -4773320, 40907952, 12021077, 45795624, 11434814, -9364102, 36082020, -15612743, -12218108, 16915192, 15308337, 8560407, 14322105, 13890461, -12385612, -19997904, -14241038, -2304250, -13096966, 6906308, 4101157, 8955007, -1402844, 6186901, 2084133, 22480932, 5323612, -2108829, 6911676, -5251672, -327491, 7927436, -14121852, -20074140, -13654775, -11684459, 1981591, -5939403, -14161581, -2315524, -8528731, -34795676, 17500918, -6301254, 8848170, -18309982, -6234145, --16961900, -23244900, 8759586, 6138582, 22585622, -994822, 19897510, -8451422, 16664473, 1945083, -23790898, -16884054, 14714558, 17673254, 9774809, 10242960, 853625, -7252589, 27860380, 18631568, --1866163, 33606508, 8038568, 3914863, 14380624, 21654688, 245350, 9943923, 12498892, 5696201, -5447629, -2538326, 1083942, -19681688, -5051956, -2677375, 3100430, 4098473, 3861713, 13042205, -5750425, 6635188, -5150203, -744640, 5104569, 514859, 396211, -4702453, 5338108, 4526896, -2548526, -3678103, 6790344, -1071058, 1175210, -5330592, -4963909, -2008971, 493921, 574452, --3270081, -10844792, 2455648, 2313377, -2983392, -574989, -2829847, 783832, -4019016, 2631741, --3874597, 132607, 9631464, -2787971, -9673340, 6207839, 4451197, 3765613, -2384244, -1313186, -43176768, 3740917, -26011396, -38210176, -20270636, -15940234, 5127117, 31641560, -524523, -13367549, -28294708, 2341294, -22870164, 20582558, 22315040, -4076998, -422517, -2152852, -20245402, 22509924, -1264868, 12788802, -7140383, -17992692, -31481574, 5750425, 3972845, 4884452, -4444755, 9911711, --10469520, -108985, -20177220, -25124484, 8828305, -3165391, 8002061, -3615289, -9327058, -22747758, --35334160, 18138720, -19746112, 8122320, 16995186, -1170916, -9096204, -17330730, -12501039, 40705016, -9247601, -1835562, 5289252, -5355288, -16445967, -5377836, 23594402, -22792854, -38379292, -13389024, --12181064, -53763328, -42018200, -22608708, -23365696, 5793911, -242129, -18698676, -35874788, -14179298, --16952772, -12161200, -9810779, -7211787, -21456046, -20556788, 16276315, -18254684, 1162326, 2785823, --22479858, -3924526, -16401406, -20548198, -4982699, -3335579, 9555765, 4025458, 12847321, -13121662, -3399467, 7568806, -32212, -17655000, -9972377, -11840151, -1120987, 5784784, -5975374, -8582418, -15358803, 9143449, 11068131, -18047990, 3120831, -8772471, -954020, 784368, 1859184, -2143726, -18315352, 1460289, -3146064, 2331094, 6467684, 9238475, 7654169, -1182727, 10895795, -7765301, --4068408, -3330210, -14057428, -378494, -4226248, -18161270, -15120432, 2655364, 865973, -278099, --4551592, -3978750, 29667486, -3526705, 28262496, 41829224, -7705708, -45412836, -43940200, -9514963, -21079162, 2825552, -34482680, 27012660, -5892159, -22675280, 27796492, -52298744, -10961830, 164819, --9233106, -8119099, 63356672, -26667988, 59373628, -3065533, 12510166, -4527433, -23421530, 37877852, -10117869, 39386996, -27057220, -26843546, 8662412, -43211128, -12869333, -7079180, -29908004, 62126164, --5390184, -64796024, -946503, -28986734, 8456254, 15732465, 25948044, 20856362, -25486872, -16166257, --39677444, -11831024, -18355616, 16821776, 11289858, -2359011, 11749420, -8155606, -28134184, -11749420, --32838784, 33506650, -25380036, -17787070, 30313342, 6942815, 51216412, 24589762, 4531728, 26792542, --36134632, -13727789, -37309844, -36532456, -5535139, -5504001, -45528264, 46784540, -8202314, -36696200, --54235236, 3339874, -10698227, 39573292, -2456185, 1850057, 5426691, -7346542, 7631620, 8739722, -18767934, -12723841, -12517145, -8276402, 656593, -2499671, -2527588, -12028593, 13280039, 7946763, -15823733, -3907347, -8420283, -7493108, -2696166, 2747169, 21161840, 22189412, -3561065, 1034550, -12255689, -3586835, -27967216, -13815299, 1837709, 3667902, -2119030, -18070538, 6349573, -2306934, --4173098, -20661478, 8105677, 6760816, 24481314, 3828963, 6089190, -1363115, 10113574, 1606855, --5742372, -84701584, 43760348, 10011032, -18227842, -13848585, 27057758, 14794015, -16292422, -4533875, --39785356, -16750372, 17002164, -34524020, 1388885, 6097243, -10455024, -23058606, -15606301, 30844308, -12497281, -6305012, -44392244, 14963129, 28057948, 16056198, -34354368, -23036594, 224412, 37376416, -3422015, -9166534, 5989332, 1108638, 19235548, -50039052, -43112344, 53368188, 8385924, 22268332, --50765976, 10979547, -2195265, 37182604, -33331094, -6489159, -50886236, 17739288, 36852432, 8523899, --22545358, 14516989, 53444964, -23992224, -25325812, -20046760, 7700340, 2139431, 46905876, -14055817, -3714073, -25308632, 8408472, -27743342, -773094, 17681306, -34418796, 32968706, 10174241, -24076512, --37237368, -22768696, -1734630, 33266132, -60151016, -13204877, 54744728, 7126962, -24447490, -11637214, --17186312, 51347944, -5512591, -53940496, -6067178, -80531, -13085692, 21912924, -3561065, -7610682, -16882980, -1556926, -10831371, -14177687, -1249299, -12505334, 4022774, 9102109, 12350715, -10885058, --7725036, 11163157, -7086159, 10572062, -5359046, -10848014, 15093052, -8169565, 13627931, 18333068, -1477469, -26656178, -1513976, -15899969, 6913287, 9802726, 6735583, -18629958, 512175, -14071923, -13465259, -3969087, -7714835, -5381594, 3192771, 4492536, 55988120, 28586766, 13028246, 12884365, -13590350, -8952322, -8645769, -18926848, 2538863, 6014028, 5102421, -1181653, -31994822, 15328201, -6483790, -22429930, -18797998, -9766219, -10916196, 8247411, -8107825, -9565966, 2943663, -868657, --16888886, 21805548, -15516643, -5167920, -16128139, -14894410, 10853919, -6397891, -1939715, 5420249, -7162932, -1873680, -21519396, 5094905, 34121368, 7152731, -52947820, -3449933, -11313481, -16614544, -11433740, 11910481, 27762132, 13169443, -34445100, 37535328, -9075803, -26156888, 78588240, -15868294, --6454262, -25918518, -62027916, 28447716, 31889596, 10364293, 12199855, -53314504, 15737834, -4229469, --12643847, -9439264, 2392834, -5120675, 8595303, 10082973, 2464238, -7947837, -14976551, 16107738, -20553566, 28214714, -13707388, -2900714, 6272263, -4189741, 15079093, -36574332, 3808562, 6443525, --16858820, 2815351, -13999983, 5581310, 528818, 4478041, -2090039, 1005022, 1677722, -738198, --222265, -4863514, -3520263, 9769977, -5129265, -355945, 7492571, 1619203, 599148, 11957726, --9575093, 7337952, 8847096, -502511, -1444720, -10074920, 8460012, -18860812, -5029407, 12380780, -3839701, -5104569, -12507482, 3927748, -2692945, 15414638, -31584652, -76201848, -128408784, 10289668, -130941208, 12390444, 278156576, 280774912, 102083856, 281765408, 163556656, -47663936, -4332549, -25672094, --213511952, -177250080, -124206696, -221905920, -211710752, -60574072, -133194456, -116287848, 26462368, 36965708, --28595892, 41084048, 60687352, -244813, 4424353, 120390616, 80583248, 30535070, 89302568, 166571712, -78663936, 91740504, 206434912, 81456736, 37279244, 178235232, 172160544, 7387881, 110191680, 194452496, -573915, 49251464, 115574352, -4691178, -94101120, 46541340, -19474992, -181646512, -169031120, -155659280, --302008672, -446889728, -310791360, -434803712, -578893440, -408809472, -331022272, -447922688, -285800000, -137820672, --132487392, -25393458, 133590128, 268937440, 304902400, 407628352, 555155648, 545121024, 516071456, 580908288, -580420288, 473622144, 381617504, 408232896, 271632512, 96346856, 129574328, 31514860, -238117280, -153473136, --161822016, -332800384, -280714752, -202219408, -236321456, -273893824, -170152640, -149067584, -206835424, -171030960, --88569208, -142349168, -186926640, -112752016, -79222280, -148663856, -83610664, 19250580, -46332496, -53366580, -59635620, -2390686, -75184480, -9943386, -47316580, -170468864, -118286080, -89816896, -157783680, -70967352, -39364448, 75255880, 139774880, 232244448, 270479328, 283416288, 318271584, 338409600, 333651840, 307201280, -286277824, 242683376, 193212320, 118089592, 88774824, 9987410, -76047768, -133461280, -212672288, -306159232, --297311584, -253665056, -229517680, -199735312, -136616464, -115801448, -103142032, -75254808, -49491444, -45008036, --19389092, -13026636, -9327058, -2040646, 16123844, 27232778, 36182952, 42131480, 49587544, 45695768, -41121092, 24771224, 17101486, 3621194, 4120484, -1491427, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +3418794, 2694018, -905701, 2068027, 963146, 5925981, -1047972, -141734, 727997, 4341675, +-872415, -4496294, -2115808, -4315369, 1037235, -1525787, -380641, -530965, 1027034, 434329, +860067, 2525978, 4592931, -2033667, -1154273, 937377, -2197413, -284005, 3578245, -1938104, +4427575, 475131, -1617592, 2971044, -4054449, -1016297, -2831457, 3960497, -139586, -1438814, +-1094680, 64961, 3642669, 165893, 4388920, 1712618, -3648575, 2954938, -1607928, -2690260, +-2235531, 3036542, -651761, 9637907, 998580, 2436857, 1728188, -4465156, 44560, -643171, +1151588, -2527588, -1742683, 5031018, 4085588, 389768, 1685775, -441308, 2535105, -4118337, +401579, 3123515, 1937567, 333397, -338766, 2230699, -3527779, -1600412, 3717294, -2439542, +776852, 1835025, 2191507, 694711, -2822867, -1854889, 1461900, 341450, 1449552, -430570, +405874, -1386738, -95026, -683974, -427886, 812286, 1522566, 660351, -908386, -334471, +-619012, 374736, 926639, -544924, 680752, 520765, 965294, -128312, 1161252, -466004, +281857, 730144, 907849, -7336341, -6628209, -4118337, -3757023, -3248606, 1245004, 4636417, +9438728, 1816234, 2433099, -13422, -6740415, -2814277, -2503966, -6047314, 9420474, 2511482, +3741990, 2594697, -2083059, 967978, 9020505, 3609383, -2121177, -164283, -2186675, 199716, +-4173098, 2522220, -1314260, -1859184, 360240, 4805532, 510564, 1685238, 3008088, 4169340, +-7441031, 111132, 1897302, 4348655, 6665789, -3688840, -744103, -1777580, 5562520, 3026341, +3590593, -573915, 1670742, 11127723, -7006166, 1428077, 665720, -4669167, 2010582, -6531035, +-868657, 1705639, -1404454, -9856950, 2785823, 709207, -2656437, -2711735, -441308, -1458141, +3353833, -3105261, -1371168, 1003412, -86973, -3018825, -129386, 2531346, -4119411, 400506, +-1110249, -957778, -1269163, -693637, 650688, -2376191, -1797981, 395674, -1424319, -1869921, +-1943473, -632971, -1283658, 2441152, -2094870, -555661, 360777, 1249836, -118112, 126702, +-715649, 191663, -1246077, 1000727, -1787780, 9912785, 914291, 3528853, -375810, -2715493, +251792, 6950868, 3616899, 4468914, 7267085, -3239479, 109522, 6973953, 2280628, 3037079, +435402, 816044, 4149475, -3772055, -1061931, 5171678, -3518652, 1990717, 3006477, -2275796, +2218888, 6949257, -3283503, 2533494, 590558, 219580, 124554, -1511292, -4742181, -1534377, +-3968013, -477278, 1709397, 3295851, 3579318, -695785, -5958194, -608275, 8785356, -3305514, +1802276, -1633698, -9170292, 5312875, 1387811, 3926674, -631897, 4479651, 4468377, -7902740, +3165928, 165356, 2974265, -655519, -5454072, -339302, -734976, -1088237, -995359, 3425237, +24696, 602906, 7153805, 1294933, 5696737, 98247, 593242, 998043, -3056943, -4970351, +3389803, -3783329, 2244657, 1284195, -144955, 2240899, -2420214, -1493575, 1612223, -9127, +-4669167, 1429687, 606127, 519691, -905701, 1954210, 244276, -909996, 2328409, -614180, +-147640, -1992328, 727997, -1042603, 377420, -82141, -230854, 357556, -671626, 1132798, +333934, -583579, 405874, -390305, 184147, -157303, -707059, 16291885, 9166534, 13938243, +4534412, -5795522, 2971044, -2603287, 401579, 1340030, -11883101, -3185792, -3266323, 3054259, +4680978, -1943473, -266288, 1552631, 383863, 8492224, -932008, -8944269, 2913062, -5180268, +3971234, 4503273, 3614752, 5248987, -1263257, -1844152, 2142115, -1601486, -2072322, 1495722, +-1383516, 3140695, 4532264, -1979443, -6870874, 2192044, -6683506, -4328254, -841814, -13927505, +135291, -2370822, 5450851, 5178120, 2511482, 8494372, 8568460, 3773666, 1905355, -644782, +412854, 459025, -3892314, 7931194, -1067299, 2741800, -2529736, -3058017, -1101659, -4570919, +4002373, -2127620, -1691143, 7777112, -6508486, -2019172, 1642825, -3005403, -913217, -264677, +2723546, 3202972, 2156074, 5531381, -1831267, -1535988, -819265, -3520263, 1835025, 3544959, +4886062, -111669, -754304, -1060857, 46708, 1037772, 1019518, -1489280, 1615445, -38118, +1160715, 981400, -213138, -402653, 2090039, -622770, 1048509, 850404, 963146, 855772, +-617402, 774705, 3539590, -277562, 161598, 404801, 2608656, 457951, -603443, -1879585, +-6206228, -14286135, -5110474, -1483911, 2021856, -1764158, 4315369, -939524, 6973417, -6280853, +3680250, -1541356, 12836584, 5408975, -2844879, -5489505, 2938831, -7817914, -4234838, 3046206, +-2807835, -4652524, 8858907, 3738769, -564251, -4083440, -5617817, 3804804, 2847563, 2849711, +-302795, -1350767, -3497177, 5276368, -6903086, -2896419, -383326, 4902169, 3654480, -308701, +5293547, 718870, -2578591, 1134945, -2568927, -2557116, -3090766, 3823058, -2843268, -41339, +4918812, 7505456, 7556995, 3178813, 2628520, -441308, 4246112, -1679332, 6139656, -1020055, +3886409, 3118146, -2638721, 383326, -2883534, 3089692, 2559801, 1125281, -1040456, -5158793, +3612604, -5619428, -761283, -6085432, 2188286, -381715, -663036, 1247151, -5299990, 319438, +1291711, 8571144, 2687576, 1511829, 1946694, 3396782, 1394254, 1806034, -2596308, 1993939, +1379221, -3389266, -359704, 280784, 675921, 1583232, -1783485, 1200443, -1178432, 337692, +-277562, 2245731, 158914, 372052, 191663, 825707, -513249, 2049236, -1129576, 835371, +689342, 1980517, 826244, 2708514, -1948305, 1076426, -510027, 3107409, 1085553, 1178432, +-453656, -310848, 169651, -474594, -2021856, -6649146, -14017163, -11288785, 688805, -9644349, +-4773856, -13665512, -7299834, -8326331, 3299609, -4445291, -5943698, -2021856, 306016, -3511136, +-13302587, 3572876, -2369748, 1339493, -6033892, 5998996, 2199560, 139586, -5371931, -2379412, +6774774, 4638028, 277562, -1010391, -4585415, 2845416, 1449552, 2945811, -5486284, -507880, +-4462471, -3980361, -4366908, 449898, 8778913, -7185481, 125628, -6846178, 671089, 3183108, +3964792, -7220377, 7227356, 8807367, -2937758, -2101850, -1571958, -354335, 2767033, 3549254, +845572, 2411624, -4332012, -844498, -1632625, 7572028, -2413235, 8380018, -254477, -2588255, +6654515, -712965, -4046396, 1416266, 7211787, 8337606, -670552, -2632815, -4594542, 2858838, +-6118718, -623307, 4018479, -3133716, 1783485, -238908, -86436, -2526515, 4832, -1966021, +-3090229, -338766, 2518462, 1328756, 2507724, -1178969, -883153, -2084133, 746251, -1692754, +2610803, 1318018, 3668976, 311922, -926102, -374199, -717796, -1364189, 1648731, -1214402, +-731218, 650151, 513249, -1887638, -700080, 437013, -3758, -1069984, -1838246, -170188, +-1700807, -1194538, -749472, 2080912, -220654, 674310, 579821, 19864, -1347009, -459025, +-10846403, -10730439, -12461311, 3687230, -10097468, -4160213, 9649718, 4751308, -10956462, -702227, +79457, 4835597, 7118909, 12240657, -3329137, -4354023, -12027519, -14696304, -8730595, -2928631, +5979668, -5940477, 2863670, -8451959, 8796630, -6332930, 7058779, -3249680, 965831, 1887101, +-1452236, -6244346, 9926743, -8555038, -464393, -4545149, 1187022, -5301601, 1197222, -21484500, +315680, 10064182, -12847321, 2973728, 8719320, 3192771, -6709276, -691490, 10501732, -12934831, +-82141, 5370320, 5060545, 5052492, -1915019, -1822677, -8440148, -4109747, 3401077, 5791227, +9084393, 11191074, -16432545, 6297496, -4989142, 1263794, -11599096, -4635344, 9473624, 2388539, +1264331, -6282464, -36507, 6204617, 4423280, 2805688, -5766531, -3630858, 5912560, -1513976, +-2568927, -1219771, -4257923, 3660923, -741956, -3259343, -1322313, -1071594, 811749, -2080912, +-2338073, 863825, 765041, 989990, -1354525, -1828582, 1574106, -1141924, -4403952, -308701, +-1349694, 2713346, -2074469, 213138, 153008, 1132261, -2781528, -1452236, -1043677, 368830, +2830384, -258772, -751082, 1862405, -30602, 1833414, -892279, -1855963, -797253, -3202972, +675384, 56371, -2355253, 1309965, 12831752, 21485038, 11905649, 14014478, 2099165, 4993973, +18786724, -562104, 532576, 12907450, -6327561, 57982, 3673808, 6448357, 10595684, -8619999, +-12359842, 6824703, 3746285, -7131793, 1506997, 4425427, -2774549, 2554969, -6666326, -1472637, +-7780870, 2413772, 8423505, 2655901, 7376070, 5751498, 5997922, -14635101, 744103, 17098264, +-2055142, -274878, 15883863, -2066416, -585189, 2386928, -2119030, -436476, 8783745, 13862007, +-13608067, -2183991, 2692408, -4139812, 6396280, -2128693, 613107, 1038845, -2979097, 12207908, +-1575716, -4403952, 4548371, -4567698, -7610682, 2651606, 8284455, 3168075, -934155, 1712618, +7927973, 4179003, 7102266, 2177549, 876173, -49392, -6984691, -1412507, -5472862, -1219234, +-2301029, -12396886, -5386963, 833224, 8012262, -3262565, 3096672, -2099165, -6573448, 2947958, +713501, -2058900, 1032403, -3971771, 201863, 1026497, 2458332, 3528316, -834297, 2284386, +-3013457, -4438849, -5345087, -535797, 4844186, -843424, -376883, 1647657, 268972, 564788, +2610803, -1232656, -477815, -1392643, 3753802, 117575, -552440, 470836, -943819, -1968706, +-2396592, 1022739, 2135136, 2682744, 1468879, 1081795, -462246, -140660, 46171, -835908, +-3684545, 36210332, 5020280, -772557, -219043, -17377974, -5083631, 1678259, -4053376, 7668664, +3373697, 12429635, -1582159, 20401, -2681133, -5253282, 8338679, 1568737, 3190624, 4683125, +6528351, -6138045, -6182069, -7144678, -4972499, -4092567, -1793686, -9815611, -1925756, 15853798, +7474317, -3015067, -1071058, -1862942, 1323924, 5616207, -2745558, 22655416, -3937411, -616328, +-10282152, 4109747, 9884330, -1699196, -7565585, -981400, 3808026, 7587597, 3278134, 10666014, +15932181, 5190468, -338229, 9463960, 7732552, 2891050, 5976984, -19857782, 4610648, 525060, +-17569638, 6454799, -409633, -7570417, 4954782, -8028368, -7810398, 9319542, 7334731, -4139275, +-15544024, -7035694, 3739306, -8936216, -1817308, 3909494, 15278809, -2475512, 3094524, -7959648, +-16772384, -9009231, -8032663, -3641059, 8025147, 1098438, -5558225, -1685775, -3460670, -3383897, +5139465, 4270271, 1660542, 3647501, 4340065, -3637837, -2658585, -2702071, 599685, -2963528, +-4389994, -4274566, 1879048, -1447404, -610422, 610422, 1607392, -3629247, 2087354, -778463, +-412317, -1605781, -561567, -2280628, 5754720, -3532074, -1204202, 1021129, -3646427, -3537979, +-2665027, 224412, 2945811, -19191524, 12086575, -2223719, -12400107, -491237, 11242614, -12862890, +-2732673, -10370735, 6854768, 2230162, -3841312, -4415764, -1615445, 6905771, 5253819, 2966212, +7153805, 6307160, 610422, 7616588, 8703751, 3615289, 4799089, -8907225, -4399657, -6201933, +5468030, 7185481, 2520609, 2222646, -4275103, -3098282, -2641405, -2298344, -7618198, 6925098, +1534377, 449898, -8152385, -2418604, 12799539, -9259949, -9943923, -15155866, 5228049, -11367705, +16429324, 19085760, 13080323, 7696582, 662499, 14918032, -7964480, 11724187, -1606318, -8366060, +535260, 682363, -18034030, -7990787, 6648073, 1024350, -3130494, 2707977, 14961519, 10291279, +-17396766, -4382478, -359167, -465467, 4884989, 7357279, -456877, -13884019, 5471789, -8061654, +-25848724, -7500087, -5352066, 7976828, 12879533, 4377109, 528818, 652298, 272194, 1147830, +9135932, 21475, 1254131, 1179505, 4553202, -8201240, -558883, 2503429, 5982890, 7344931, +2480344, 4356171, 6389838, 8579734, 10953240, 4218732, 5357972, 5402532, 145492, -517007, +-2137820, -1378685, -73551, 2248416, -6609955, -1614371, 3644817, 6062347, -784368, 1693828, +-965294, 2540473, -93416, 3885335, -765041, 3725347, -2918967, 4773856, -44560, 4508642, +-16095390, 1604170, 1789928, 10067403, 2168422, 25721486, 4093641, -10616085, -3435974, -8938901, +16252693, -20852066, -1864553, 14412837, -31498216, -12431246, -10631118, -11012296, -20892868, 1974074, +-3664681, -8960912, -1144609, 9881109, 1240709, 1309428, -6165426, 2448668, -2088428, 2433636, +9127, 1561221, 8054138, -1959042, -502511, 16389058, -10604811, -2136746, 2828236, 14115947, +-7415798, 20156282, -6106370, -8144869, -17261474, -22457848, -6555731, -16716013, 8149701, -5073430, +-12553653, 1712081, 2024003, 9244380, 7816841, 3266860, -1592359, 28526636, 15785079, -1803349, +2779381, 9767829, 7300371, 4743255, -3866544, -558883, -5122822, -6652905, -6156299, 4298189, +22245784, -15557445, -3813394, -8861054, 16030429, -4226785, 4965519, -2290291, 7525320, -17621178, +-13181255, -4553202, 7485591, 2370822, 6463389, -3900904, 3986267, 6028524, 5294084, 2508798, +-1053878, -7519951, 4730370, 1762547, -6381248, -4480725, 3991098, -4201552, -3180423, -139586, +4297652, -4003447, 5179194, -3251290, 7399155, -4128001, 827855, 2573222, 1345935, -3577171, +-6761353, 5230197, -2030983, -1531693, -528281, -716723, -2137283, 4958540, 6204081, 4292283, +3796214, -753230, 2189897, 7104413, -3838090, 2797634, 1236951, -185757, 1568737, -479426, +385473, -2594160, -12823162, -12326556, 6950331, -5527086, -23089208, 11432666, -6877854, 9128953, +-6635188, 11490648, 7839389, 9552007, 15322296, 2470143, 12968117, 5194763, 3364033, 8779450, +3055869, 2395518, 650688, -384936, -8205535, 7312719, -16683800, 7291244, 1772748, -4807142, +-8977019, -257161, 6488622, -7482370, -3085934, -11178189, -4290136, -13755707, 903554, 7536594, +-102005, -1802813, -8678518, -15185931, -10972568, 11829951, 3998615, -4962298, -8667781, -2156611, +-651224, -14847165, 12600897, 11403138, -14553497, -14212584, -23203560, -3561065, -27770722, 7475928, +10893648, 5681168, -1675037, -3573413, -2811593, 11399380, 11610907, 13300977, -8608725, -6920266, +8979703, -3868155, -4083440, -16337519, 7322383, 13310641, 15344308, -3617973, 8442295, -4716411, +2595771, 8330089, 4395362, -5904507, 2853469, -10093710, -6039261, -4198868, 1592896, 4232691, +3746822, -4011500, -3557844, -1508070, -4410932, -911070, -6113349, -7767449, -3956739, -3249143, +-2262374, -1052267, -2137820, -3100430, 797253, -162135, 4614943, -1574106, 5863704, -1530619, +4711043, 289910, -2452963, 1149441, 11735998, 3571802, 6055904, -2692945, -4541928, 935229, +4369056, -4071092, 8562017, 8433705, 2576981, 3949759, 1922535, -9691057, -4928475, 22184580, +25709674, -10188199, -537408, 6895033, -20735028, -3888019, 25865366, 868120, -28098750, 3055869, +8685498, -705985, 9812927, 23078470, -9441412, 20857434, 11355357, 17799418, 5034776, -13676786, +-14507863, 11633456, -13161390, -20750060, -5983963, -24648280, 5456756, -1677185, 8781598, 7499013, +5413807, 2763812, -956167, 678605, 12552042, 6096169, -24108726, -2837900, 8123931, 15512348, +8687108, 19221590, 17383344, 13578002, -6386617, -2326262, 3631395, 35006132, -14624364, 2561948, +7458211, 13730474, -5622649, -19464254, -4046933, -4908611, -11681774, -21526376, -23469848, 6454799, +-13147432, -9951976, 6120866, 18512920, 22844394, 433255, -1251983, -274878, 17556752, -11880416, +-6033356, 20738250, -22563074, 2510945, -17816598, -11973832, 1372242, 24049132, -3860102, -16443819, +21488258, -21949430, 936840, -26497800, -2292976, -3323231, 7851737, 14746770, -10864120, -6198175, +-7665980, 1990181, 594316, -8203388, 4714264, -2421825, -2265595, -3494493, -2774549, -9713605, +2245731, -4673998, 3505767, 2632815, -648003, -2139431, 5968394, 14496, 153545, -11454678, +1785096, -964757, -311922, 10709501, 1145683, 3034931, -4393215, 1743220, -2502892, -6216429, +2809982, -12685186, 4318053, -4363687, 9597641, -7541963, -942208, 1771674, -971736, -1960116, +-3864397, 7081864, -4575214, 7710003, -2633352, 4552129, 12068321, -14183593, -31756452, -7492571, +-11081016, -10463077, -6570226, 1474784, -10888816, -9210020, 3029563, 7074885, -6841346, 16811576, +-1834488, 11263015, -5700496, -671089, 9687299, -13858786, -8689793, -4718559, 14456860, -3490735, +-15904801, -6003828, 2385854, -7708930, 6584185, -10656888, -10729365, 15569793, 4508642, -12342662, +7477538, -1490891, -9741523, -947040, -16141561, -13870060, 2734821, 24174760, 9731859, 7530689, +-19394462, 14923938, -1731946, 11433203, -6770479, -13493714, 6542846, -24887188, 20769388, -33694556, +-21370146, 7800735, 18532784, 1433445, 22194244, -9719511, 5808944, -15416248, 20818780, 6695854, +15479599, 7131793, 3623879, -4893042, -5206574, -10176925, -3568044, -612033, -17969606, -10722923, +1556926, -27217208, 1517197, 30562450, 9097278, 11005854, 2929168, -13866839, -10451266, -2828773, +-3360275, -986232, -5403606, -7295539, 6074695, 3996467, 5510980, 8633958, -8735963, 5667210, +-3326989, -4712653, -3570192, 7688529, -2613488, -8390219, -12720619, -88584, -7664369, -3604015, +-7857106, -2180233, -5155572, -3092377, 11950747, -6534793, 2723546, 3706557, -9610526, 10948409, +90194, 6546067, 8612483, -4011500, 4253628, 1931662, -398358, 2663954, 7206419, -4184372, +-4100083, 6644852, 558883, 5282810, -23865522, -22257058, 2196876, 9173513, -11253888, -50353124, +-10525354, -257161, 6581501, -17031692, 1472637, -9496710, -1979980, -13568875, -15151571, 13460428, +-14734422, -18078054, -3057480, -12652974, -13916231, 4793184, -20215874, -6689949, 12197707, 27935542, +22562000, -1075889, -13764833, 4830228, 20308216, -936303, 13506062, -3874597, 17013440, 9568650, +-17476222, 27816356, -21199958, -11193222, 18721762, -20627118, 6226092, -4736812, -15527381, 1834488, +23533736, -4878546, -13833016, 8817568, 11548093, -325881, 4779762, -33839512, 8172786, 1422708, +17076254, 8276402, -14846091, 14754286, -7909719, -1275068, -13758928, 7321846, 19832548, -4074313, +-3923990, -20315732, -28749438, 16368657, -2079838, 13191455, -15722802, 11978664, 9560597, -20447802, +1180579, 18234284, 10407780, -9538049, -16450798, 14916958, 2429878, -12767327, 12133819, 2021856, +5410048, 1461363, 5027796, 963683, 13557601, 210453, 4668630, -894964, 563714, 12061342, +-3878892, 322659, 2739116, -3131568, 2197950, 1102196, 8316131, -403727, -9252970, -1115081, +1178969, -5481452, -1638530, 617402, -3694746, 12489228, -2939905, -7128035, 792958, 7954280, +3730179, -402116, 4522064, 657667, -5187247, -631360, 13100187, 8962523, -8857833, -6469295, +1893007, 18979460, 19041738, -51345796, 19358492, 26025354, -6622840, 18103824, -183073, 9381819, +-4168266, -10560251, -6820408, 10918881, 2576444, -14834280, -9635222, -1373853, -6956774, -3800509, +-1593970, 31758598, 6385543, 7030325, -19649476, 13673028, -13991930, 204011, 2461016, -21474836, +10027675, -7963406, 1119376, -8696772, -15523622, 419296, 10304700, 29427506, 10584947, 3055332, +18204756, 7703024, -2197413, 2987687, 459025, 5134634, 2982855, 19959250, 8737574, 6030134, +3294240, -2564096, -6205154, -19658602, -16500727, 2287070, -2359011, -12131135, 1722819, 14737107, +-22487912, 21721260, 5599027, -8007430, -903017, -5822902, -1802813, 13154411, 5754183, 4281546, +-15280957, -3113851, -20885890, -6449967, 5816460, 7628936, 7609609, -9051644, -7260642, 16179142, +-1908576, -26244398, 3769908, -488016, -286152, -15501611, 5078799, 11575474, -1599875, 16665547, +11243688, -5619965, -308701, -7245610, 9006546, -791885, 2968359, 1352915, -3791919, -3184718, +-695248, -3301219, 3652870, -7203197, -704912, 405874, 3885335, -3723200, -4310537, -5151277, +280247, -1273458, 2861522, 1625645, -151934, -3228742, 3473555, 2603824, 512712, 3777961, +692564, 2693481, 2516851, 3582540, -999117, -13187160, -498216, -3781182, -45634028, 70723080, +-69924216, -31622770, -15978889, -4773320, 40907952, 12021077, 45795624, 11434814, -9364102, 36082020, +15612743, -12218108, 16915192, 15308337, 8560407, 14322105, 13890461, -12385612, -19997904, -14241038, +2304250, -13096966, 6906308, 4101157, 8955007, -1402844, 6186901, 2084133, 22480932, 5323612, +2108829, 6911676, -5251672, -327491, 7927436, -14121852, -20074140, -13654775, -11684459, 1981591, +5939403, -14161581, -2315524, -8528731, -34795676, 17500918, -6301254, 8848170, -18309982, -6234145, +-16961900, -23244900, 8759586, 6138582, 22585622, -994822, 19897510, -8451422, 16664473, 1945083, +23790898, -16884054, 14714558, 17673254, 9774809, 10242960, 853625, -7252589, 27860380, 18631568, +-1866163, 33606508, 8038568, 3914863, 14380624, 21654688, 245350, 9943923, 12498892, 5696201, +5447629, -2538326, 1083942, -19681688, -5051956, -2677375, 3100430, 4098473, 3861713, 13042205, +5750425, 6635188, -5150203, -744640, 5104569, 514859, 396211, -4702453, 5338108, 4526896, +2548526, -3678103, 6790344, -1071058, 1175210, -5330592, -4963909, -2008971, 493921, 574452, +-3270081, -10844792, 2455648, 2313377, -2983392, -574989, -2829847, 783832, -4019016, 2631741, +-3874597, 132607, 9631464, -2787971, -9673340, 6207839, 4451197, 3765613, -2384244, -1313186, +43176768, 3740917, -26011396, -38210176, -20270636, -15940234, 5127117, 31641560, -524523, -13367549, +28294708, 2341294, -22870164, 20582558, 22315040, -4076998, -422517, -2152852, -20245402, 22509924, +1264868, 12788802, -7140383, -17992692, -31481574, 5750425, 3972845, 4884452, -4444755, 9911711, +-10469520, -108985, -20177220, -25124484, 8828305, -3165391, 8002061, -3615289, -9327058, -22747758, +-35334160, 18138720, -19746112, 8122320, 16995186, -1170916, -9096204, -17330730, -12501039, 40705016, +9247601, -1835562, 5289252, -5355288, -16445967, -5377836, 23594402, -22792854, -38379292, -13389024, +-12181064, -53763328, -42018200, -22608708, -23365696, 5793911, -242129, -18698676, -35874788, -14179298, +-16952772, -12161200, -9810779, -7211787, -21456046, -20556788, 16276315, -18254684, 1162326, 2785823, +-22479858, -3924526, -16401406, -20548198, -4982699, -3335579, 9555765, 4025458, 12847321, -13121662, +3399467, 7568806, -32212, -17655000, -9972377, -11840151, -1120987, 5784784, -5975374, -8582418, +15358803, 9143449, 11068131, -18047990, 3120831, -8772471, -954020, 784368, 1859184, -2143726, +18315352, 1460289, -3146064, 2331094, 6467684, 9238475, 7654169, -1182727, 10895795, -7765301, +-4068408, -3330210, -14057428, -378494, -4226248, -18161270, -15120432, 2655364, 865973, -278099, +-4551592, -3978750, 29667486, -3526705, 28262496, 41829224, -7705708, -45412836, -43940200, -9514963, +21079162, 2825552, -34482680, 27012660, -5892159, -22675280, 27796492, -52298744, -10961830, 164819, +-9233106, -8119099, 63356672, -26667988, 59373628, -3065533, 12510166, -4527433, -23421530, 37877852, +10117869, 39386996, -27057220, -26843546, 8662412, -43211128, -12869333, -7079180, -29908004, 62126164, +-5390184, -64796024, -946503, -28986734, 8456254, 15732465, 25948044, 20856362, -25486872, -16166257, +-39677444, -11831024, -18355616, 16821776, 11289858, -2359011, 11749420, -8155606, -28134184, -11749420, +-32838784, 33506650, -25380036, -17787070, 30313342, 6942815, 51216412, 24589762, 4531728, 26792542, +-36134632, -13727789, -37309844, -36532456, -5535139, -5504001, -45528264, 46784540, -8202314, -36696200, +-54235236, 3339874, -10698227, 39573292, -2456185, 1850057, 5426691, -7346542, 7631620, 8739722, +18767934, -12723841, -12517145, -8276402, 656593, -2499671, -2527588, -12028593, 13280039, 7946763, +15823733, -3907347, -8420283, -7493108, -2696166, 2747169, 21161840, 22189412, -3561065, 1034550, +12255689, -3586835, -27967216, -13815299, 1837709, 3667902, -2119030, -18070538, 6349573, -2306934, +-4173098, -20661478, 8105677, 6760816, 24481314, 3828963, 6089190, -1363115, 10113574, 1606855, +-5742372, -84701584, 43760348, 10011032, -18227842, -13848585, 27057758, 14794015, -16292422, -4533875, +-39785356, -16750372, 17002164, -34524020, 1388885, 6097243, -10455024, -23058606, -15606301, 30844308, +12497281, -6305012, -44392244, 14963129, 28057948, 16056198, -34354368, -23036594, 224412, 37376416, +3422015, -9166534, 5989332, 1108638, 19235548, -50039052, -43112344, 53368188, 8385924, 22268332, +-50765976, 10979547, -2195265, 37182604, -33331094, -6489159, -50886236, 17739288, 36852432, 8523899, +-22545358, 14516989, 53444964, -23992224, -25325812, -20046760, 7700340, 2139431, 46905876, -14055817, +3714073, -25308632, 8408472, -27743342, -773094, 17681306, -34418796, 32968706, 10174241, -24076512, +-37237368, -22768696, -1734630, 33266132, -60151016, -13204877, 54744728, 7126962, -24447490, -11637214, +-17186312, 51347944, -5512591, -53940496, -6067178, -80531, -13085692, 21912924, -3561065, -7610682, +16882980, -1556926, -10831371, -14177687, -1249299, -12505334, 4022774, 9102109, 12350715, -10885058, +-7725036, 11163157, -7086159, 10572062, -5359046, -10848014, 15093052, -8169565, 13627931, 18333068, +1477469, -26656178, -1513976, -15899969, 6913287, 9802726, 6735583, -18629958, 512175, -14071923, +13465259, -3969087, -7714835, -5381594, 3192771, 4492536, 55988120, 28586766, 13028246, 12884365, +13590350, -8952322, -8645769, -18926848, 2538863, 6014028, 5102421, -1181653, -31994822, 15328201, +6483790, -22429930, -18797998, -9766219, -10916196, 8247411, -8107825, -9565966, 2943663, -868657, +-16888886, 21805548, -15516643, -5167920, -16128139, -14894410, 10853919, -6397891, -1939715, 5420249, +7162932, -1873680, -21519396, 5094905, 34121368, 7152731, -52947820, -3449933, -11313481, -16614544, +11433740, 11910481, 27762132, 13169443, -34445100, 37535328, -9075803, -26156888, 78588240, -15868294, +-6454262, -25918518, -62027916, 28447716, 31889596, 10364293, 12199855, -53314504, 15737834, -4229469, +-12643847, -9439264, 2392834, -5120675, 8595303, 10082973, 2464238, -7947837, -14976551, 16107738, +20553566, 28214714, -13707388, -2900714, 6272263, -4189741, 15079093, -36574332, 3808562, 6443525, +-16858820, 2815351, -13999983, 5581310, 528818, 4478041, -2090039, 1005022, 1677722, -738198, +-222265, -4863514, -3520263, 9769977, -5129265, -355945, 7492571, 1619203, 599148, 11957726, +-9575093, 7337952, 8847096, -502511, -1444720, -10074920, 8460012, -18860812, -5029407, 12380780, +3839701, -5104569, -12507482, 3927748, -2692945, 15414638, -31584652, -76201848, -128408784, 10289668, +130941208, 12390444, 278156576, 280774912, 102083856, 281765408, 163556656, -47663936, -4332549, -25672094, +-213511952, -177250080, -124206696, -221905920, -211710752, -60574072, -133194456, -116287848, 26462368, 36965708, +-28595892, 41084048, 60687352, -244813, 4424353, 120390616, 80583248, 30535070, 89302568, 166571712, +78663936, 91740504, 206434912, 81456736, 37279244, 178235232, 172160544, 7387881, 110191680, 194452496, +573915, 49251464, 115574352, -4691178, -94101120, 46541340, -19474992, -181646512, -169031120, -155659280, +-302008672, -446889728, -310791360, -434803712, -578893440, -408809472, -331022272, -447922688, -285800000, -137820672, +-132487392, -25393458, 133590128, 268937440, 304902400, 407628352, 555155648, 545121024, 516071456, 580908288, +580420288, 473622144, 381617504, 408232896, 271632512, 96346856, 129574328, 31514860, -238117280, -153473136, +-161822016, -332800384, -280714752, -202219408, -236321456, -273893824, -170152640, -149067584, -206835424, -171030960, +-88569208, -142349168, -186926640, -112752016, -79222280, -148663856, -83610664, 19250580, -46332496, -53366580, +59635620, -2390686, -75184480, -9943386, -47316580, -170468864, -118286080, -89816896, -157783680, -70967352, +39364448, 75255880, 139774880, 232244448, 270479328, 283416288, 318271584, 338409600, 333651840, 307201280, +286277824, 242683376, 193212320, 118089592, 88774824, 9987410, -76047768, -133461280, -212672288, -306159232, +-297311584, -253665056, -229517680, -199735312, -136616464, -115801448, -103142032, -75254808, -49491444, -45008036, +-19389092, -13026636, -9327058, -2040646, 16123844, 27232778, 36182952, 42131480, 49587544, 45695768, +41121092, 24771224, 17101486, 3621194, 4120484, -1491427, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 10251550, --424128, -542777, 3265786, -1328219, 3730179, -1974074, -4786741, 1686848, 4809290, 712965, --746251, 6389301, 217433, 266825, -2178622, -1212255, 9953587, 1387274, -6755447, -4993973, -7020661, -637266, 7280507, 513249, -1382980, -682900, 5499169, 1090385, 11543798, 5085242, -3178813, -619549, 2565169, 5223754, -1283122, -3890167, -4887673, -935229, 4408784, 3791919, -5881958, 1653562, -3287261, -3418794, -1422708, 2457795, -786516, 1352378, -668404, -5232881, --4038880, 1603097, 3823058, 2353105, -1891933, -2158758, -144418, 5708012, 2905009, -625455, --1275605, 2646774, 1787243, 1136019, -2909304, 1464047, 2737505, -351114, 4180614, 4932770, --8614631, 3164854, 1762010, 5624260, 1698123, 447750, 2567854, -1139777, -4015795, -1492501, --2419140, -807454, -497679, 2445984, -122943, -1957968, 30602, 288300, 1461363, -1271847, -237834, -246424, 522912, 747324, 523449, 964757, 97711, 595927, 2881923, 4487167, -9698036, -7882876, 1774895, -1730335, 110059, -10129143, 1016297, 6094022, -9011378, -1867237, -6018860, 15976741, 2288681, -107374, 1134945, -10005126, -323733, 7377680, 6546067, 181462, --209380, 609349, 3435437, 5756330, 6063420, 6557878, -2929705, 1420024, -399969, 2530810, -707596, 1633161, -10154913, -2779381, 1582696, 833224, -5616744, -176094, 3830574, -4463008, -3526705, 3260417, 6010270, 2819646, -2299418, 3005403, 6717329, -3757023, -6067715, 2041183, -1406602, 1190780, 3183645, -2683818, -4906464, -7306276, 5905043, -1081258, -1383516, -2372433, -2591476, -83752, 3829500, 7579007, 1532230, 522375, -408022, -1820529, -5906654, 9193377, -2260227, -1088237, 4747550, -737661, -5444945, -4778688, -1063541, 1816234, -7940858, 663572, --4707821, -879395, 2422899, -128312, 1273995, -1410897, -2596845, -541166, 1312113, 1809792, -1333051, -265751, -796716, -35970, 1297617, -673236, -1322313, -976568, -4754529, -4126927, --5158256, -7329899, 4102768, -95563, -3502009, -1394791, -1789928, 1590212, -2909304, -5033165, -1145146, -3273302, 8596914, 11426760, 9037685, -6254010, -240518, -413391, 2417530, -3471944, -7090454, 4445291, -1011465, 3432753, 5377836, 434329, 1304060, 1875827, 5225365, -500364, -1944547, 6251862, 637803, -71941, -2729989, 4498442, -6793565, 2744484, -949725, -1396938, -4530117, -4375498, -550830, 154082, -5904507, 2454037, -1189169, 2735894, -188442, -2552821, -1796370, 1879585, -308701, 5247913, -372052, 6054294, -87510, -4023848, -1787780, 233002, --2744484, 5399311, 2820720, 4635344, 5259725, -2296734, -5199595, -3398930, -2147, -964220, --1104880, 4285304, 5410048, -806917, -2957085, 1882806, 1480153, -2069101, -2821257, 972273, --4054449, 992137, -72478, -125091, -1081258, -3841312, 875100, -1511292, 165356, 1722819, -6442, -1961190, 992674, -2690260, -40265, 175557, -609885, 228707, 525597, -1469953, -35433, 182536, -1735167, 372588, -514322, -104690, -906775, -22012, 498753, -15112916, --3567507, -4704600, -8178155, 2790118, 2137820, -970663, 3798362, -522375, 3205119, 4535486, --1995012, -5282273, -6665789, -2537252, -6207839, 490700, 683437, -2698850, 3520263, -3033321, -1887101, -1384053, -3542811, -9405978, -3664144, 841814, 1477469, 2476049, -3500935, 2501282, -3780645, 1254667, 8582418, 2138357, -221728, 6649146, -4699768, 3841312, 629750, -2233920, --3183108, 4288525, 574452, 1356673, -10136123, -1867237, -3351148, 10183367, 4362076, 3668439, -4130148, 4675072, 3696893, 5184026, -2745021, -1111323, 3175055, 5092221, -687732, 5946919, --3204046, 1300838, -1293322, 5036923, 7540889, -11785927, 3085397, -2916820, 373125, -5561446, --2862596, 927713, -1692217, -2390686, -4722317, -2129767, 2216203, -117575, 5040144, -535260, -1939715, 4369056, 6944425, -265214, 1829656, -819265, 3228742, 512712, 1567126, -2164127, --766115, 223338, 1471026, -971200, -1584306, 68719, 78920, -1228898, 176631, 697395, -19864, 2017024, -900333, -957241, 220654, 1755568, -725313, 28454, -652298, 1040456, -1615982, -239444, 1545115, 1689533, -424665, -746251, 5900212, 3622805, 2138894, -1119913, -485331, 644245, 7620883, -6049999, 7645042, -1012002, 4166655, 7838852, -4904316, 6074695, --3794604, 3119757, 1188632, 9215926, 4075387, -5124433, -8441221, 1928440, -6328098, 5212480, --1296006, 6791417, -5054103, -816581, -4046396, 2346126, 1510755, 1947231, -503048, -715112, --7366406, -3226057, 6065031, -4822712, -976568, 3947612, 191663, -3773666, 1239098, 348429, --841814, -3270081, 6631430, 2121714, -9426916, -4248260, -7608535, -1323387, -6725919, -11602317, --2636573, 5078799, 14316200, 3139621, 1191853, 6753836, -166967, -5265093, -4601521, 3777424, -1480690, 2555506, 4143033, -10107132, -2473364, -9294846, -2028835, 2627446, -3672197, -8588861, -890132, 3744138, -1821066, -3180423, -1495186, 1517197, -1256278, -339302, 1910187, -1158031, --1247688, -1712618, -1236414, -3917547, 1441498, -1002338, 1847910, -641561, 1096827, 2516851, -386547, -644782, -193810, -2073932, -1353452, -3300682, -2983929, 492848, 409096, 31675, -1234803, 1982127, 1413581, 33823, 1293859, 1084479, -855235, 799401, 850940, -1700807, -16449725, 3915400, 11910481, -5584531, -774705, -3973382, -916976, 12654047, -10794863, 3622268, -1225676, 16571594, 8824547, 10996727, 2009508, -2736431, 5191005, -3619047, -13740137, 2612414, -781684, 1610613, 10829223, 1028108, -6362457, -562641, 285078, 3432753, 3748433, -326954, --1417876, 4418448, -5176510, -1428614, -2621004, -1330903, 1336809, 195958, 9539659, 1371168, -7490960, 8631811, 2390686, 7612830, -564251, 2517388, 4630512, -5002027, -7464117, 932545, -7518877, -12014634, 3576097, -9220758, -8610873, -5287105, -2386391, -8114267, -7853348, -8319889, --4262755, -2075006, 5582384, 129923, 6688338, 1006633, -5507222, 8427263, -8767102, -3332358, --3628711, -3608310, -4647155, -6128382, 8753680, 6802692, -3825205, 3337190, 2756295, 6911676, -28454, 4990215, -2454574, 6274411, 3175055, -3714073, 216896, -3356517, 4002910, -3828963, -427349, 3084860, 238908, 2358474, -670015, 373662, 1649268, -558883, -1676111, 1552631, --446140, 263604, -3226057, -2687576, -2572686, -2024540, -333397, -1134408, -2226941, -110595, -475668, -1058173, 271120, -83752, -8826695, -8984535, -5206037, -5535139, -2872796, -2308008, --10597832, -8609262, -7184407, -1155346, -572304, -1387274, 7440494, 697932, 3866544, 5624797, -6684580, 998580, 13018583, 16191490, -286689, 4656819, 3712999, -2017561, 7150584, 3805341, --14544907, -533113, -5000953, 798864, 11333345, 4444755, -11621645, -3146064, 5240397, 5105643, -761283, 14893336, -6142877, 5977521, 6143414, 6607807, 3941169, 7704635, -13101798, 4769561, --5085242, 7763691, 337155, 3317325, -9825275, 7199976, 5296232, -1322850, 5129802, -901406, -1465121, -146029, -5102958, 1289564, -3245922, 3173444, -4015258, 5004174, 1635846, 12606803, -9510668, -3034931, 3427921, -10489921, 9134859, -2908230, 5621039, 9761924, 9692667, 396211, -9899363, 6746857, 4707284, 4938676, 9100499, 835908, 2003065, -7455527, -1234266, -2186675, -1746978, -5397700, 848256, -3952444, 1260573, -3937948, 1235340, -1491964, -2370822, -2353642, -1650341, 95563, -1169842, -986232, -3090229, -1090385, 607201, -989453, -2213519, 261456, -2401961, -5471789, -3285113, -3054796, 2231236, -3386582, 2088428, -54761, 1222992, -2819646, --3984656, -989453, 799938, 8543764, -7612830, -2025077, 6843494, -3664144, 11708081, -3759707, --8244190, 15507516, 21132850, 4663798, -8323110, 5801427, -4383551, 8642548, 5058935, -1924682, --8829916, -5818070, -15023796, 3901978, 6419366, -13298829, -1570884, 7672959, 2018635, -680752, -322123, -1663763, -7175817, 1706713, 8912594, 324270, 1931125, 3183108, 12621298, -8353175, --221728, 9124658, -8374650, 12269111, 652835, 17259862, -14384382, -13018583, 7153805, 597537, --1712081, 3675955, -1174674, 4773320, 2974802, 9577777, 9185861, -7621957, 1404991, -4997195, --2969433, 5713380, -696322, -3009162, -1261110, 227633, 8629663, -16489453, 12553116, -3973382, --5575405, 9250286, -7482370, 7406134, -10074920, -5720897, -1849520, -7548942, -2568391, -5345087, --8372502, -5705864, 1860795, -1964411, -1991791, -173409, -3884261, -1301912, -554051, 5153424, --239981, 702227, 2124935, -2248416, -827855, -1912871, 1292785, 2491081, 727460, -1105417, -6148783, -23085, 4570382, -4988605, -3154117, -2987150, -2075006, 2274185, 1168231, 105764, -3592203, -2712272, 2750927, 1012002, 2561948, 1367410, 391379, -3192235, -10470057, -7973070, --3517578, -7476465, -11413339, -2385318, 4136591, 14014478, 2263448, -8439074, -15668578, -3255048, -4844723, -2725694, 16799764, 5302674, -5959267, -11877195, -14872935, -28135258, -2311229, -3092377, -10771241, 7992398, -5778879, 746251, -4474282, -2421825, 10108206, -252329, 525597, -1218697, -11469710, 1959579, -3457449, -555661, -437013, 3122441, -10460930, -3275986, -4121558, 16547972, -3843459, -17372068, 4473209, -9008157, -5090610, 2576981, -16193637, 5051956, 11654394, 10362682, -8056822, 1987496, 3248069, -505732, 1707250, -10187126, 3696356, -15959025, -3077881, 9169218, -3333432, 9393630, 9235790, 7664369, -5243618, -11772505, -10326175, -7956427, 2580202, 3213709, -5447629, 5449240, 1165547, 3650185, 11521787, 16175384, -3888019, 5781563, -4034048, -4318053, -4923643, -7060926, -2523293, 319975, -4511327, 4233227, -3922916, -3369402, -1893544, 1041530, --1046361, 2321967, 18254, 3346317, -806917, -1976222, -952946, -1933272, -5129265, 1401770, -2717641, -209917, 1777043, -455803, 2440078, 4742181, 4481799, 3548717, -3639985, -1791001, -3440269, -1014686, -1416802, 369367, -612570, 3530463, -818191, -155693, -568546, 8240969, -14570140, 16887812, 12199855, 20875152, -9774809, 14837501, -12718472, -9959492, 10975252, 14049912, -16574279, -17112760, -113280, 4318590, -12695923, 6010807, -5591511, -8980240, 10226854, -13324599, -14443975, -13697188, 13529147, -9830643, -3644280, -897111, -17942226, -2484639, 19735912, -5050345, --14145475, 3024194, 9149354, -10294500, 5075041, 21368000, 11461120, 4327717, 9423158, -11299522, -7516730, -6787122, -19495930, -5902896, -5124970, 1445793, 8790724, 10905459, -4867272, -8533563, -7731478, 54224, 5907191, 3713536, -3214246, 1062468, -7786776, 1175747, 2415382, -107374, -2492155, 17571784, -2228014, 1733019, 4975183, 1041530, 2108829, -8948027, -9837623, 6787659, --11701638, -15832860, -16654273, 12896713, 8300561, 2473901, -956167, -1934346, 6105833, -992137, --4715874, 5898601, 16195785, 10970420, -4359929, -2783139, 4971962, 2889439, -1204738, -2598992, -1773285, 2268280, -748935, 639950, 8757438, 2084670, 1192927, 3429532, -2941516, 614180, -2736968, 5851893, -639950, 389231, -5827197, 1830193, -3070902, -2222646, 5931350, 4787815, -233002, 3743064, -3345243, -1615445, 1721208, -6979, -1817845, -3358128, -3668976, 2245194, -939524, -1603097, 1964948, -13536663, -21455510, 7627862, 27899034, 13638132, -5213554, -21576842, --7478075, 1364189, 3024731, -4201015, 10602127, 7133404, -7820062, -4062502, -1036161, -14277545, -19840064, -9038222, 7077569, -1662152, -4658429, -17391396, 5712307, 3606162, -2151779, 2097555, -7804493, -2843268, 19405200, -4344360, -2939905, 16168941, -1786170, -11609833, -10361072, -20054812, -2778307, -4452271, -6208375, -4371740, -14689325, -6160594, -13754096, 1473174, -12102144, 10962367, --6827925, -222265, 3436511, 1365263, 6359236, -5819144, -14858439, 6487548, -1683627, 3711926, --3296924, -1493575, 475131, 14351633, 21494164, 5842766, -6700149, 7431367, 7828652, 8541616, --3466576, -7155416, 10983305, 5202279, 14665703, 3425773, 3949759, 441308, 4442607, 13196287, -18026514, 8878234, 3084860, 6789270, 2893197, -3721589, -12265890, -7772817, 1452773, 6009196, -993748, -266288, -4559645, -1664837, 2582349, 1764695, -9680856, -1795296, 2254321, -353261, --4792110, -3996467, -5362804, 1088237, -897648, 3759707, 6956774, 4124242, 286152, -2228014, -4280472, 5148055, 399969, 1770063, -6735583, -175020, -2240362, -6890202, 1530082, 1348620, --6161668, -559420, -1394254, 2431488, -2354179, 5942624, 96100, 8131447, 41477572, 1202054, --11297911, 34826816, 17395154, 15510201, 29985852, 30183956, 8435316, 9746891, 7388418, 32788854, -1520418, -11274826, 13911936, 3227668, -12885976, -14097693, 12368969, 12373801, 23246510, -2065879, -1530619, 545461, 3036005, -13678934, 15482820, 11124502, 4633196, -10571525, 16394964, -4788889, --1056025, -21772262, -4985920, -1429687, -1580548, -11371463, 7416872, -10560251, -6362994, -6087580, -2952790, -7242389, -10324028, -13810467, 14653892, -10454487, 15596100, 7218767, 12773770, 4241817, --13385266, -430034, -21403432, -9592273, -11758010, 4664335, -14927696, -7809861, -2879239, 317828, -15073188, 1788854, -2599529, -24262270, 9482751, 8464844, -789200, -55298, -12589623, 9651865, -816581, -10464688, 28735478, 6663105, -3991635, -201863, -11891154, 2080375, 14281840, -3694209, --1429687, -15953656, -9764608, 5983963, -2489471, -7505992, 9157944, 5886790, -9824738, 8673150, --3561602, 2843805, -3453691, 8493835, 1555315, -1174674, -16106, 2163590, -11797201, 265751, --4518843, 3564286, 3702799, 5788006, -4998805, 4261682, 2841121, 2618856, 3978750, 5140002, --625992, 3994857, -5823439, 9906879, -4686883, 8405788, -5986648, 3803731, -12678743, -23251880, -7140920, 7002944, -7194607, 15134928, -16735340, 18178450, -13114146, -7638063, 5851356, 4206921, -46916612, 18331994, 7028177, -29278256, -779000, -6949257, -15518254, -4509179, -5672041, -5136781, --1737314, -24347632, -468688, -9212168, 301721, 11853036, -12915504, 15381352, -5042829, -17023640, --15188078, 12185359, 9347459, -3807489, -8385924, 15542413, -8386998, -7920994, 12215961, -348966, -3758633, -12586402, -425202, -7400229, 15668578, -2362232, 22476638, -8407398, 3376918, 6773701, --643708, 860067, 6855842, -14492830, -2325725, 18471580, 1496259, 5070746, -173946, -14977625, -6400038, -10455024, 5322002, 16149077, 20946556, 22848152, 24050206, -5188321, 8438000, -191663, -12903692, 29154238, -32022740, 24894704, -14807437, 6692633, 20006494, -12624519, 1282585, 6287296, -5450851, -1490891, 13922136, -5393405, -4412542, 5895380, -3349001, 13424994, -1999307, 5093295, --10825465, -1750736, -333397, -8704825, -3675955, -10981695, 103616, 3188476, 1056025, 12214887, --4041564, 836445, 1302449, 5201743, 1260573, 5247913, -7249368, 5459977, 1655173, -288300, -3860102, 5356361, -6101538, 5565204, -11716134, -10311680, 7191386, -3439195, -8320426, -1165010, -3371013, -5301601, 9389872, -11156178, -24824374, -4734128, 4915590, 418222, 5713380, -18303540, --2580739, -3693672, -26239566, -20177756, 10313290, 10924249, 4936528, 7550016, -13475997, -6507949, --9577240, 28653874, 6782827, 845572, 21339008, 12379169, 10689637, 9745281, 8341900, -15049565, -10777684, 4446902, -4719096, 8571144, -7692287, -7483444, 14860587, -6458557, 9336722, 19752554, -615254, 3805878, -423054, 1304596, -4365835, -11548630, -14689325, -23737748, 9664750, -20105816, -7485055, 7847979, 10056129, 82678, 545461, -2806224, -15555298, -7339562, 7795903, -5360656, -8046621, 19743964, -6138045, 15104326, 6847789, 1681480, -932008, -5381057, -14412837, -602369, --19452444, -6730751, 20691542, -11095511, 3221226, -34255584, 16183437, -6346351, 5162551, -26434450, --23590108, 2219424, 6228777, 12089796, -27365920, -2893734, 263067, 18591840, 15153181, 17206176, --5571647, 358630, 2529199, 8994198, 2057826, 4943508, 14138495, 8070781, -5513128, 5153961, -1297080, 1009854, -401579, -3031173, -11839077, 4117800, -5783711, 1748052, 4557497, -157840, -947040, -166967, 4565550, -2907156, 19080392, 5202279, -860604, 10691247, 6374805, 882616, -3102577, -335007, -8674223, 11238856, -3799436, 1505386, 13330505, 7464117, -4316979, 45634, --5481989, 8850854, 6011881, 7396471, 6784975, 20326470, -48289392, -12014097, -28639916, 9594957, --25709674, -8761196, -29151016, 7722888, -15151034, -11806865, -2393908, -24950002, -8930311, -26723824, --13339632, -30925376, 6754910, -28618440, -11170136, -14914811, -8196945, -7928510, -6554120, -27318676, --15459735, -20804284, -10520522, -6072547, 11865921, -1791538, 8885750, -17031156, -2647847, 892279, --19413252, 3692061, -1256815, 1574642, 5225902, -19842212, -1004486, 7212861, -2331094, 8142185, -16524887, 29660508, -24585466, 1447941, 33164664, 91268, 16338056, -11651173, 20596516, 3678640, --4773856, -27542552, -16064251, 22756884, 14204531, 22223234, 933619, -15600395, 5796059, 7996692, -16054051, -29933774, 333934, 5610301, -16374563, -5545340, -7009924, -10049150, -23826332, 36990944, --6683506, -11940009, -7479149, 7639673, 9014063, -20966956, -19333796, -805843, 6320045, 940061, -186831, -4110821, -6946573, -115964, 18783502, 11539503, 1611, -15388331, -10512469, 1709397, --5805722, 4057670, 5049271, 2500745, -1497333, -7934952, 3364570, 3925063, -2071248, 5948530, --3339337, -13644574, -6362994, -773094, 4082903, -1003949, -4271882, -19954954, -7867307, -4555350, -1624571, 2528125, -8517457, -15441481, 6170258, 9321690, -8097624, 407485, -7108171, 7865159, --2482491, -13771813, 20636780, -34804804, -321049, -6941204, 15067819, -7705708, -21376590, 18653580, --37557340, -32478542, -26720602, 15285789, -7923141, 802085, -14557255, -13874892, -16104517, 9009231, -7889855, 26153666, 12373264, 5244155, 24441586, -6550899, 8883603, -8862665, 7663833, 4354560, -14573361, 23447838, 12309913, -4953171, -14350023, -8642011, -2909304, 13138842, -4329327, 3617973, -523986, -6134824, 12510703, -858993, 10273562, 7540889, -19997904, 16440598, 30353608, 4654134, -25392384, 24489904, 11156178, 8058433, 72478, 12903155, -8070244, -29579440, -9594957, 21832930, -224412, -10928544, 11294153, 31036508, -7098507, 2299955, -22513144, 22099754, 19892678, -1530619, -6403260, -10249403, 51063940, -32131188, -27821188, -26346404, 2226404, 843424, -7729331, 22674206, --31971736, -638340, -20437066, 7719667, 9055402, -1532230, 22183506, 5019743, -1880659, -12108050, --149787, 5505611, 16161962, -11177116, -14265734, 5851893, -8502962, -2334315, 1973001, 3779571, -1316408, -6442, -1073742, -13513041, 1269163, 3119220, 9208410, -8039105, -4511327, 5098126, -2438468, 3515431, 307627, -8869107, -1011465, -10054518, -7602629, 9912785, 5054103, 5537287, -3889093, -443992, 1910724, -2817499, 6030134, 729071, -2767033, -693100, -8791261, -3391414, --5859409, 3425237, 55830280, -12306692, 31096636, 53647900, -18298172, 25722022, 11345693, -33786896, -30842160, 4692252, -14806900, 22763864, 9660992, 21388938, -219580, -18034568, 17028472, 5879810, -51003, 5385352, -5204427, -19075560, -11420318, -9127342, -16558173, -12248710, -3166465, 12709882, --11410117, -6816650, -16308528, 3460670, 1358283, 2621004, 22299470, -13353053, 5349382, -12386149, --7042136, 12838194, -10271951, -22900228, -29481730, 33932924, 15035070, -8392366, 23349590, -21481816, --18869402, -11426224, -1918777, 3462281, 127775, -19990388, -14754286, -15624017, -34454228, -21472688, --18577344, 6682969, 11516955, -911070, 19954954, 3838627, -20626580, -17723182, 26934276, -23079006, -3212636, 23676544, -3152506, -40632000, 28368796, -14948634, 4459250, 1890859, 23454280, -5592048, --9139154, -1128503, -13598940, 7131793, -23374822, 7984881, -30025042, -19073412, 11442867, -12599823, --3794604, -1553168, -17889076, 5912560, -10510859, 8602283, -2857764, -221728, 756988, 11176579, --8144869, -6248104, 1792075, -11104638, -5115843, 1831267, -7490960, -7733626, -5568425, -3210488, --8714489, -4640176, 11906186, -9675488, 4493073, 7436199, -1937030, 7947300, -10561861, 1311039, --7477538, 15351824, 2669859, 5636608, -10806138, 13515188, 8988293, 10394895, 4131222, 1501628, -3084860, 7626252, -7476465, 1007707, -26993332, 16175921, -7554311, 27379342, 18999862, -43814036, --5378373, 4625143, -26528940, -4364224, -4235375, 32318556, 23466628, 21583822, 27042724, -1025960, --18742700, -14629732, -14896557, 687732, -41671384, 4990752, 35899484, -32649268, -58775016, 5967857, --21926344, 43412456, -183610, 1392106, 29231548, -13383118, 6085969, -1387811, -7814156, 25255482, --7202660, 12754442, 42620572, -31343060, -17769354, -28573344, 14288819, 2314987, 28557238, -16383153, -11300059, 1459215, 26011932, 15213311, -12604118, -8506183, 9885404, -4760435, -1083942, -18392660, --17999672, 9405978, -3968013, -5408438, -10211822, 23396298, -8848706, -9522479, 39442296, 42013908, -27328340, -35878008, -3125663, -11345156, 13950591, 52334176, -6589017, -40063992, -2576981, -16568373, -23578834, 10424422, -26747446, 13996762, 10433012, 13648869, -25813290, -9426916, 1944010, 22771916, -1434519, -3803731, 3773666, -7968775, 1820529, 22750978, 11123428, -9655623, -11438572, -2733747, -7215008, 9016747, 12087649, -11559904, -4342212, -21077552, -4399657, 13116830, -13160854, -2208687, --8138426, -7672422, -12372727, -2733210, 8383776, -2030446, -927176, 1957431, 5322002, -5706938, --15801185, -16497506, 9814537, 7433515, 13727252, -7039989, 10052908, 29454348, 1484448, -17878876, --2927020, 1446867, -1674500, -11247446, -25740276, 3888019, -21129092, 19460496, 11157788, -20614770, -35159676, 53355840, 1484448, -2455648, -18278844, -18434000, 3076807, 3106335, -9026948, 48265232, --4383551, 36006860, 28797756, -36313412, -1182190, -12155294, -38916160, 9834938, 8970039, 21265456, -36339180, -1073742, -10437307, 11995307, 13145821, 28668370, 11947525, 2653753, 23526220, 24839944, -8487392, -5683853, 21568788, 9659918, 25929254, 5585068, 7438347, 16275779, 27464168, -4574140, --21873194, -25201794, -8288213, -8754217, 43229384, 23736136, 66759360, -3104725, -33742872, 29662118, --10238128, -11531987, -10160282, -22726282, 3294777, 12773233, -555125, -12731357, 47412144, -9476308, -55959664, -15341623, 30084636, 2637647, -9524090, -30573188, -43716324, 40931040, -4023848, -6993281, --12606803, 38037840, -79994, -39920648, 73123968, 23007066, 7905424, -8405251, -30790084, 15386183, -756988, 15486578, -14353244, 11044508, 5490042, -6912750, -10628970, 1887638, -12833899, -5994164, --14570140, 1685238, -2632815, -202400, 4713190, 11943767, -12258910, 4665945, -6038724, -379031, -15963857, 10691784, -5853504, -20131048, -753767, -1219234, 2561411, 18334678, -12029667, -7074885, -4491462, 11486353, -16847010, 1072131, 10895795, -304406, -1419487, -17519708, 8920647, -615791, -8108362, -18314278, 1925756, 7664369, 5969468, 8950175, -17655000, -18492518, 11992086, 49593452, --29471528, -18967650, 4029216, 8934069, -5608691, 35086124, 27346056, 27593554, 9336185, 13608067, -23240604, 14317273, -8401493, -13874892, -31182536, -5084168, 17157320, 5829345, 3720516, -11659226, --29489782, -8653822, -4119411, 30049202, 437550, -3636227, 22843858, -3666828, 6337761, 4827543, --50794432, 12992276, 13755707, -8920647, -21698712, 4090420, -28631862, -14630806, -43868796, 13232794, --36621576, -72698760, 8466991, -1036161, 51198156, -1800128, 17412872, 42205032, -6890738, -10993506, -18803366, -414464, -36831492, -12922483, 4876936, 6098854, 27229556, 11281268, 24251532, 20942798, --15057082, -11330661, 10351408, 30838402, -12827457, -6515466, -28320478, -19615652, 7557532, -38313792, -11129334, -43028592, 8199630, -11376295, 30546344, -13367549, 21660594, -46112380, -9357660, 6252399, --27388470, 6885907, 4887673, 4694936, -20651814, 10817412, -20221780, 5733782, -1520418, -8670465, --3672734, -2075543, 6505802, -7105487, -3200288, -5708549, 13211319, -8626442, 7733089, -19502910, -10277857, -1176284, -1532767, 2740726, 18879066, 6504191, 8086887, -22601728, 2969970, -9298604, --27820650, 11135240, -8891656, -7141457, -10259603, 10324565, -4986457, 4949413, 5872294, -2750927, -1254131, -6890202, 1989644, 5639292, -1306744, -907849, -10611254, 38970924, 41536092, 97071096, -11441793, -54326504, -40790380, -30024506, -34657700, 67949600, 90689848, 30753040, -8650601, -28513214, -1010928, -34508452, 37988984, 35920960, 10660109, 5207648, -22495428, -3251827, 41803452, 9752797, -16798154, 14157286, 43865576, 36909876, -14221710, -32611150, -43116104, -29058674, -4319127, 12022150, -39436388, 23655070, -8226473, 21375516, -29925722, -10186052, -67299456, -10628433, 66248796, 51200844, --10305237, 134233296, 42111616, 3938485, -73592120, -12541305, -6310381, -17264694, 18801756, 10436234, -15931644, 28171764, -60050624, -64691872, -32500554, -43643312, -6225555, 14779519, 54339388, -32500554, -19883014, 84688704, 42344084, 14741938, 23748484, 17279190, -51151988, -84672592, 43312060, -20951388, -18652506, 45334452, 50169512, 4419522, -30332132, -39986144, -32586454, 35038344, 20272246, 6094559, -34993784, -34892852, -6055367, -5605469, -15433965, -18072148, -1537061, -542240, 11353746, 3497714, --5004174, 68183, -439697, 548682, 2995740, 6448357, 10106595, -10149008, -13808857, -47424492, --25933012, -23468238, 27966680, 16504486, 9993315, -38849588, -37995428, -61266636, -16708497, 23989540, -30746598, 39954472, 15688979, 11625940, 4655745, 3787624, -1163936, 8892193, -2167348, 28573344, -20281910, 3965866, 201327, 86436, -4956393, -187368, -20646444, -88874144, -21176874, 49544596, -94871536, 83583824, 200390288, 104882568, 71168144, 62617940, 28500866, -11206107, -101227544, -127078952, --189579312, -145178480, -148927456, -56657060, 753767, 57038240, 106115224, 87538952, 90471872, 62354872, -85127328, 66636416, 94253592, 44887240, 35160748, 16816408, -24217710, -37271728, -57085484, -34511672, --124022552, -52383568, -117383064, -84693536, -134352480, -79866528, -125057096, -44408888, -61977988, -20175072, -9610526, 63513440, 166544336, 158587376, 222207648, 150402240, 102614288, 133222904, 181965952, 160133568, -134514080, 93855776, 11358041, -90945936, -90268400, -111922016, -213010512, -235181664, -256151312, -255803952, --280874208, -242930336, -204622448, -180476144, -117492592, 13542032, 133772128, 232641200, 307534688, 383323680, -426546624, 297359904, 283619232, 184056528, 111552112, 105392592, -6248104, -34780644, -163318272, -313109568, --337186080, -273754240, -211555600, -124652832, -100818448, -102707704, -56598544, -88200912, -35631584, -9789304, -67833640, 128674000, 105763568, 137546320, 147887536, 157692944, 139343232, 185904432, 138229760, 113206744, -58567784, 12033425, -31302796, -143992000, -127455840, -170948832, -226579920, -205357952, -235316432, -241932816, --70449272, 7923141, 123055104, 150504240, 160395024, 186043488, 194426720, 164846752, 143498608, 109957608, -83495240, 30157112, -21370684, -64116344, -115519048, -169909440, -159030832, -142096304, -106151728, -50050864, --21888228, -10467909, -6097243, 15657840, 32884954, 39683888, 42875584, 35240744, 28387050, 30558692, -25065966, 18533858, 34237868, 38134476, 29416768, 13982803, 7261179, 11187316, 14527190, 3441880, --623307, -1331977, -4027069, -6428493, -2675228, -1762547, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-424128, -542777, 3265786, -1328219, 3730179, -1974074, -4786741, 1686848, 4809290, 712965, +-746251, 6389301, 217433, 266825, -2178622, -1212255, 9953587, 1387274, -6755447, -4993973, +7020661, -637266, 7280507, 513249, -1382980, -682900, 5499169, 1090385, 11543798, 5085242, +3178813, -619549, 2565169, 5223754, -1283122, -3890167, -4887673, -935229, 4408784, 3791919, +5881958, 1653562, -3287261, -3418794, -1422708, 2457795, -786516, 1352378, -668404, -5232881, +-4038880, 1603097, 3823058, 2353105, -1891933, -2158758, -144418, 5708012, 2905009, -625455, +-1275605, 2646774, 1787243, 1136019, -2909304, 1464047, 2737505, -351114, 4180614, 4932770, +-8614631, 3164854, 1762010, 5624260, 1698123, 447750, 2567854, -1139777, -4015795, -1492501, +-2419140, -807454, -497679, 2445984, -122943, -1957968, 30602, 288300, 1461363, -1271847, +237834, -246424, 522912, 747324, 523449, 964757, 97711, 595927, 2881923, 4487167, +9698036, -7882876, 1774895, -1730335, 110059, -10129143, 1016297, 6094022, -9011378, -1867237, +6018860, 15976741, 2288681, -107374, 1134945, -10005126, -323733, 7377680, 6546067, 181462, +-209380, 609349, 3435437, 5756330, 6063420, 6557878, -2929705, 1420024, -399969, 2530810, +707596, 1633161, -10154913, -2779381, 1582696, 833224, -5616744, -176094, 3830574, -4463008, +3526705, 3260417, 6010270, 2819646, -2299418, 3005403, 6717329, -3757023, -6067715, 2041183, +1406602, 1190780, 3183645, -2683818, -4906464, -7306276, 5905043, -1081258, -1383516, -2372433, +2591476, -83752, 3829500, 7579007, 1532230, 522375, -408022, -1820529, -5906654, 9193377, +2260227, -1088237, 4747550, -737661, -5444945, -4778688, -1063541, 1816234, -7940858, 663572, +-4707821, -879395, 2422899, -128312, 1273995, -1410897, -2596845, -541166, 1312113, 1809792, +1333051, -265751, -796716, -35970, 1297617, -673236, -1322313, -976568, -4754529, -4126927, +-5158256, -7329899, 4102768, -95563, -3502009, -1394791, -1789928, 1590212, -2909304, -5033165, +1145146, -3273302, 8596914, 11426760, 9037685, -6254010, -240518, -413391, 2417530, -3471944, +7090454, 4445291, -1011465, 3432753, 5377836, 434329, 1304060, 1875827, 5225365, -500364, +1944547, 6251862, 637803, -71941, -2729989, 4498442, -6793565, 2744484, -949725, -1396938, +4530117, -4375498, -550830, 154082, -5904507, 2454037, -1189169, 2735894, -188442, -2552821, +1796370, 1879585, -308701, 5247913, -372052, 6054294, -87510, -4023848, -1787780, 233002, +-2744484, 5399311, 2820720, 4635344, 5259725, -2296734, -5199595, -3398930, -2147, -964220, +-1104880, 4285304, 5410048, -806917, -2957085, 1882806, 1480153, -2069101, -2821257, 972273, +-4054449, 992137, -72478, -125091, -1081258, -3841312, 875100, -1511292, 165356, 1722819, +6442, -1961190, 992674, -2690260, -40265, 175557, -609885, 228707, 525597, -1469953, +35433, 182536, -1735167, 372588, -514322, -104690, -906775, -22012, 498753, -15112916, +-3567507, -4704600, -8178155, 2790118, 2137820, -970663, 3798362, -522375, 3205119, 4535486, +-1995012, -5282273, -6665789, -2537252, -6207839, 490700, 683437, -2698850, 3520263, -3033321, +1887101, -1384053, -3542811, -9405978, -3664144, 841814, 1477469, 2476049, -3500935, 2501282, +3780645, 1254667, 8582418, 2138357, -221728, 6649146, -4699768, 3841312, 629750, -2233920, +-3183108, 4288525, 574452, 1356673, -10136123, -1867237, -3351148, 10183367, 4362076, 3668439, +4130148, 4675072, 3696893, 5184026, -2745021, -1111323, 3175055, 5092221, -687732, 5946919, +-3204046, 1300838, -1293322, 5036923, 7540889, -11785927, 3085397, -2916820, 373125, -5561446, +-2862596, 927713, -1692217, -2390686, -4722317, -2129767, 2216203, -117575, 5040144, -535260, +1939715, 4369056, 6944425, -265214, 1829656, -819265, 3228742, 512712, 1567126, -2164127, +-766115, 223338, 1471026, -971200, -1584306, 68719, 78920, -1228898, 176631, 697395, +19864, 2017024, -900333, -957241, 220654, 1755568, -725313, 28454, -652298, 1040456, +1615982, -239444, 1545115, 1689533, -424665, -746251, 5900212, 3622805, 2138894, -1119913, +485331, 644245, 7620883, -6049999, 7645042, -1012002, 4166655, 7838852, -4904316, 6074695, +-3794604, 3119757, 1188632, 9215926, 4075387, -5124433, -8441221, 1928440, -6328098, 5212480, +-1296006, 6791417, -5054103, -816581, -4046396, 2346126, 1510755, 1947231, -503048, -715112, +-7366406, -3226057, 6065031, -4822712, -976568, 3947612, 191663, -3773666, 1239098, 348429, +-841814, -3270081, 6631430, 2121714, -9426916, -4248260, -7608535, -1323387, -6725919, -11602317, +-2636573, 5078799, 14316200, 3139621, 1191853, 6753836, -166967, -5265093, -4601521, 3777424, +1480690, 2555506, 4143033, -10107132, -2473364, -9294846, -2028835, 2627446, -3672197, -8588861, +890132, 3744138, -1821066, -3180423, -1495186, 1517197, -1256278, -339302, 1910187, -1158031, +-1247688, -1712618, -1236414, -3917547, 1441498, -1002338, 1847910, -641561, 1096827, 2516851, +386547, -644782, -193810, -2073932, -1353452, -3300682, -2983929, 492848, 409096, 31675, +1234803, 1982127, 1413581, 33823, 1293859, 1084479, -855235, 799401, 850940, -1700807, +16449725, 3915400, 11910481, -5584531, -774705, -3973382, -916976, 12654047, -10794863, 3622268, +1225676, 16571594, 8824547, 10996727, 2009508, -2736431, 5191005, -3619047, -13740137, 2612414, +781684, 1610613, 10829223, 1028108, -6362457, -562641, 285078, 3432753, 3748433, -326954, +-1417876, 4418448, -5176510, -1428614, -2621004, -1330903, 1336809, 195958, 9539659, 1371168, +7490960, 8631811, 2390686, 7612830, -564251, 2517388, 4630512, -5002027, -7464117, 932545, +7518877, -12014634, 3576097, -9220758, -8610873, -5287105, -2386391, -8114267, -7853348, -8319889, +-4262755, -2075006, 5582384, 129923, 6688338, 1006633, -5507222, 8427263, -8767102, -3332358, +-3628711, -3608310, -4647155, -6128382, 8753680, 6802692, -3825205, 3337190, 2756295, 6911676, +28454, 4990215, -2454574, 6274411, 3175055, -3714073, 216896, -3356517, 4002910, -3828963, +427349, 3084860, 238908, 2358474, -670015, 373662, 1649268, -558883, -1676111, 1552631, +-446140, 263604, -3226057, -2687576, -2572686, -2024540, -333397, -1134408, -2226941, -110595, +475668, -1058173, 271120, -83752, -8826695, -8984535, -5206037, -5535139, -2872796, -2308008, +-10597832, -8609262, -7184407, -1155346, -572304, -1387274, 7440494, 697932, 3866544, 5624797, +6684580, 998580, 13018583, 16191490, -286689, 4656819, 3712999, -2017561, 7150584, 3805341, +-14544907, -533113, -5000953, 798864, 11333345, 4444755, -11621645, -3146064, 5240397, 5105643, +761283, 14893336, -6142877, 5977521, 6143414, 6607807, 3941169, 7704635, -13101798, 4769561, +-5085242, 7763691, 337155, 3317325, -9825275, 7199976, 5296232, -1322850, 5129802, -901406, +1465121, -146029, -5102958, 1289564, -3245922, 3173444, -4015258, 5004174, 1635846, 12606803, +9510668, -3034931, 3427921, -10489921, 9134859, -2908230, 5621039, 9761924, 9692667, 396211, +9899363, 6746857, 4707284, 4938676, 9100499, 835908, 2003065, -7455527, -1234266, -2186675, +1746978, -5397700, 848256, -3952444, 1260573, -3937948, 1235340, -1491964, -2370822, -2353642, +1650341, 95563, -1169842, -986232, -3090229, -1090385, 607201, -989453, -2213519, 261456, +2401961, -5471789, -3285113, -3054796, 2231236, -3386582, 2088428, -54761, 1222992, -2819646, +-3984656, -989453, 799938, 8543764, -7612830, -2025077, 6843494, -3664144, 11708081, -3759707, +-8244190, 15507516, 21132850, 4663798, -8323110, 5801427, -4383551, 8642548, 5058935, -1924682, +-8829916, -5818070, -15023796, 3901978, 6419366, -13298829, -1570884, 7672959, 2018635, -680752, +322123, -1663763, -7175817, 1706713, 8912594, 324270, 1931125, 3183108, 12621298, -8353175, +-221728, 9124658, -8374650, 12269111, 652835, 17259862, -14384382, -13018583, 7153805, 597537, +-1712081, 3675955, -1174674, 4773320, 2974802, 9577777, 9185861, -7621957, 1404991, -4997195, +-2969433, 5713380, -696322, -3009162, -1261110, 227633, 8629663, -16489453, 12553116, -3973382, +-5575405, 9250286, -7482370, 7406134, -10074920, -5720897, -1849520, -7548942, -2568391, -5345087, +-8372502, -5705864, 1860795, -1964411, -1991791, -173409, -3884261, -1301912, -554051, 5153424, +-239981, 702227, 2124935, -2248416, -827855, -1912871, 1292785, 2491081, 727460, -1105417, +6148783, -23085, 4570382, -4988605, -3154117, -2987150, -2075006, 2274185, 1168231, 105764, +3592203, -2712272, 2750927, 1012002, 2561948, 1367410, 391379, -3192235, -10470057, -7973070, +-3517578, -7476465, -11413339, -2385318, 4136591, 14014478, 2263448, -8439074, -15668578, -3255048, +4844723, -2725694, 16799764, 5302674, -5959267, -11877195, -14872935, -28135258, -2311229, -3092377, +10771241, 7992398, -5778879, 746251, -4474282, -2421825, 10108206, -252329, 525597, -1218697, +11469710, 1959579, -3457449, -555661, -437013, 3122441, -10460930, -3275986, -4121558, 16547972, +3843459, -17372068, 4473209, -9008157, -5090610, 2576981, -16193637, 5051956, 11654394, 10362682, +8056822, 1987496, 3248069, -505732, 1707250, -10187126, 3696356, -15959025, -3077881, 9169218, +3333432, 9393630, 9235790, 7664369, -5243618, -11772505, -10326175, -7956427, 2580202, 3213709, +5447629, 5449240, 1165547, 3650185, 11521787, 16175384, -3888019, 5781563, -4034048, -4318053, +4923643, -7060926, -2523293, 319975, -4511327, 4233227, -3922916, -3369402, -1893544, 1041530, +-1046361, 2321967, 18254, 3346317, -806917, -1976222, -952946, -1933272, -5129265, 1401770, +2717641, -209917, 1777043, -455803, 2440078, 4742181, 4481799, 3548717, -3639985, -1791001, +3440269, -1014686, -1416802, 369367, -612570, 3530463, -818191, -155693, -568546, 8240969, +14570140, 16887812, 12199855, 20875152, -9774809, 14837501, -12718472, -9959492, 10975252, 14049912, +16574279, -17112760, -113280, 4318590, -12695923, 6010807, -5591511, -8980240, 10226854, -13324599, +14443975, -13697188, 13529147, -9830643, -3644280, -897111, -17942226, -2484639, 19735912, -5050345, +-14145475, 3024194, 9149354, -10294500, 5075041, 21368000, 11461120, 4327717, 9423158, -11299522, +7516730, -6787122, -19495930, -5902896, -5124970, 1445793, 8790724, 10905459, -4867272, -8533563, +7731478, 54224, 5907191, 3713536, -3214246, 1062468, -7786776, 1175747, 2415382, -107374, +2492155, 17571784, -2228014, 1733019, 4975183, 1041530, 2108829, -8948027, -9837623, 6787659, +-11701638, -15832860, -16654273, 12896713, 8300561, 2473901, -956167, -1934346, 6105833, -992137, +-4715874, 5898601, 16195785, 10970420, -4359929, -2783139, 4971962, 2889439, -1204738, -2598992, +1773285, 2268280, -748935, 639950, 8757438, 2084670, 1192927, 3429532, -2941516, 614180, +2736968, 5851893, -639950, 389231, -5827197, 1830193, -3070902, -2222646, 5931350, 4787815, +233002, 3743064, -3345243, -1615445, 1721208, -6979, -1817845, -3358128, -3668976, 2245194, +939524, -1603097, 1964948, -13536663, -21455510, 7627862, 27899034, 13638132, -5213554, -21576842, +-7478075, 1364189, 3024731, -4201015, 10602127, 7133404, -7820062, -4062502, -1036161, -14277545, +19840064, -9038222, 7077569, -1662152, -4658429, -17391396, 5712307, 3606162, -2151779, 2097555, +7804493, -2843268, 19405200, -4344360, -2939905, 16168941, -1786170, -11609833, -10361072, -20054812, +2778307, -4452271, -6208375, -4371740, -14689325, -6160594, -13754096, 1473174, -12102144, 10962367, +-6827925, -222265, 3436511, 1365263, 6359236, -5819144, -14858439, 6487548, -1683627, 3711926, +-3296924, -1493575, 475131, 14351633, 21494164, 5842766, -6700149, 7431367, 7828652, 8541616, +-3466576, -7155416, 10983305, 5202279, 14665703, 3425773, 3949759, 441308, 4442607, 13196287, +18026514, 8878234, 3084860, 6789270, 2893197, -3721589, -12265890, -7772817, 1452773, 6009196, +993748, -266288, -4559645, -1664837, 2582349, 1764695, -9680856, -1795296, 2254321, -353261, +-4792110, -3996467, -5362804, 1088237, -897648, 3759707, 6956774, 4124242, 286152, -2228014, +4280472, 5148055, 399969, 1770063, -6735583, -175020, -2240362, -6890202, 1530082, 1348620, +-6161668, -559420, -1394254, 2431488, -2354179, 5942624, 96100, 8131447, 41477572, 1202054, +-11297911, 34826816, 17395154, 15510201, 29985852, 30183956, 8435316, 9746891, 7388418, 32788854, +1520418, -11274826, 13911936, 3227668, -12885976, -14097693, 12368969, 12373801, 23246510, -2065879, +1530619, 545461, 3036005, -13678934, 15482820, 11124502, 4633196, -10571525, 16394964, -4788889, +-1056025, -21772262, -4985920, -1429687, -1580548, -11371463, 7416872, -10560251, -6362994, -6087580, +2952790, -7242389, -10324028, -13810467, 14653892, -10454487, 15596100, 7218767, 12773770, 4241817, +-13385266, -430034, -21403432, -9592273, -11758010, 4664335, -14927696, -7809861, -2879239, 317828, +15073188, 1788854, -2599529, -24262270, 9482751, 8464844, -789200, -55298, -12589623, 9651865, +816581, -10464688, 28735478, 6663105, -3991635, -201863, -11891154, 2080375, 14281840, -3694209, +-1429687, -15953656, -9764608, 5983963, -2489471, -7505992, 9157944, 5886790, -9824738, 8673150, +-3561602, 2843805, -3453691, 8493835, 1555315, -1174674, -16106, 2163590, -11797201, 265751, +-4518843, 3564286, 3702799, 5788006, -4998805, 4261682, 2841121, 2618856, 3978750, 5140002, +-625992, 3994857, -5823439, 9906879, -4686883, 8405788, -5986648, 3803731, -12678743, -23251880, +7140920, 7002944, -7194607, 15134928, -16735340, 18178450, -13114146, -7638063, 5851356, 4206921, +46916612, 18331994, 7028177, -29278256, -779000, -6949257, -15518254, -4509179, -5672041, -5136781, +-1737314, -24347632, -468688, -9212168, 301721, 11853036, -12915504, 15381352, -5042829, -17023640, +-15188078, 12185359, 9347459, -3807489, -8385924, 15542413, -8386998, -7920994, 12215961, -348966, +3758633, -12586402, -425202, -7400229, 15668578, -2362232, 22476638, -8407398, 3376918, 6773701, +-643708, 860067, 6855842, -14492830, -2325725, 18471580, 1496259, 5070746, -173946, -14977625, +6400038, -10455024, 5322002, 16149077, 20946556, 22848152, 24050206, -5188321, 8438000, -191663, +12903692, 29154238, -32022740, 24894704, -14807437, 6692633, 20006494, -12624519, 1282585, 6287296, +5450851, -1490891, 13922136, -5393405, -4412542, 5895380, -3349001, 13424994, -1999307, 5093295, +-10825465, -1750736, -333397, -8704825, -3675955, -10981695, 103616, 3188476, 1056025, 12214887, +-4041564, 836445, 1302449, 5201743, 1260573, 5247913, -7249368, 5459977, 1655173, -288300, +3860102, 5356361, -6101538, 5565204, -11716134, -10311680, 7191386, -3439195, -8320426, -1165010, +3371013, -5301601, 9389872, -11156178, -24824374, -4734128, 4915590, 418222, 5713380, -18303540, +-2580739, -3693672, -26239566, -20177756, 10313290, 10924249, 4936528, 7550016, -13475997, -6507949, +-9577240, 28653874, 6782827, 845572, 21339008, 12379169, 10689637, 9745281, 8341900, -15049565, +10777684, 4446902, -4719096, 8571144, -7692287, -7483444, 14860587, -6458557, 9336722, 19752554, +615254, 3805878, -423054, 1304596, -4365835, -11548630, -14689325, -23737748, 9664750, -20105816, +7485055, 7847979, 10056129, 82678, 545461, -2806224, -15555298, -7339562, 7795903, -5360656, +8046621, 19743964, -6138045, 15104326, 6847789, 1681480, -932008, -5381057, -14412837, -602369, +-19452444, -6730751, 20691542, -11095511, 3221226, -34255584, 16183437, -6346351, 5162551, -26434450, +-23590108, 2219424, 6228777, 12089796, -27365920, -2893734, 263067, 18591840, 15153181, 17206176, +-5571647, 358630, 2529199, 8994198, 2057826, 4943508, 14138495, 8070781, -5513128, 5153961, +1297080, 1009854, -401579, -3031173, -11839077, 4117800, -5783711, 1748052, 4557497, -157840, +947040, -166967, 4565550, -2907156, 19080392, 5202279, -860604, 10691247, 6374805, 882616, +3102577, -335007, -8674223, 11238856, -3799436, 1505386, 13330505, 7464117, -4316979, 45634, +-5481989, 8850854, 6011881, 7396471, 6784975, 20326470, -48289392, -12014097, -28639916, 9594957, +-25709674, -8761196, -29151016, 7722888, -15151034, -11806865, -2393908, -24950002, -8930311, -26723824, +-13339632, -30925376, 6754910, -28618440, -11170136, -14914811, -8196945, -7928510, -6554120, -27318676, +-15459735, -20804284, -10520522, -6072547, 11865921, -1791538, 8885750, -17031156, -2647847, 892279, +-19413252, 3692061, -1256815, 1574642, 5225902, -19842212, -1004486, 7212861, -2331094, 8142185, +16524887, 29660508, -24585466, 1447941, 33164664, 91268, 16338056, -11651173, 20596516, 3678640, +-4773856, -27542552, -16064251, 22756884, 14204531, 22223234, 933619, -15600395, 5796059, 7996692, +16054051, -29933774, 333934, 5610301, -16374563, -5545340, -7009924, -10049150, -23826332, 36990944, +-6683506, -11940009, -7479149, 7639673, 9014063, -20966956, -19333796, -805843, 6320045, 940061, +186831, -4110821, -6946573, -115964, 18783502, 11539503, 1611, -15388331, -10512469, 1709397, +-5805722, 4057670, 5049271, 2500745, -1497333, -7934952, 3364570, 3925063, -2071248, 5948530, +-3339337, -13644574, -6362994, -773094, 4082903, -1003949, -4271882, -19954954, -7867307, -4555350, +1624571, 2528125, -8517457, -15441481, 6170258, 9321690, -8097624, 407485, -7108171, 7865159, +-2482491, -13771813, 20636780, -34804804, -321049, -6941204, 15067819, -7705708, -21376590, 18653580, +-37557340, -32478542, -26720602, 15285789, -7923141, 802085, -14557255, -13874892, -16104517, 9009231, +7889855, 26153666, 12373264, 5244155, 24441586, -6550899, 8883603, -8862665, 7663833, 4354560, +14573361, 23447838, 12309913, -4953171, -14350023, -8642011, -2909304, 13138842, -4329327, 3617973, +523986, -6134824, 12510703, -858993, 10273562, 7540889, -19997904, 16440598, 30353608, 4654134, +25392384, 24489904, 11156178, 8058433, 72478, 12903155, -8070244, -29579440, -9594957, 21832930, +224412, -10928544, 11294153, 31036508, -7098507, 2299955, -22513144, 22099754, 19892678, -1530619, +6403260, -10249403, 51063940, -32131188, -27821188, -26346404, 2226404, 843424, -7729331, 22674206, +-31971736, -638340, -20437066, 7719667, 9055402, -1532230, 22183506, 5019743, -1880659, -12108050, +-149787, 5505611, 16161962, -11177116, -14265734, 5851893, -8502962, -2334315, 1973001, 3779571, +1316408, -6442, -1073742, -13513041, 1269163, 3119220, 9208410, -8039105, -4511327, 5098126, +2438468, 3515431, 307627, -8869107, -1011465, -10054518, -7602629, 9912785, 5054103, 5537287, +3889093, -443992, 1910724, -2817499, 6030134, 729071, -2767033, -693100, -8791261, -3391414, +-5859409, 3425237, 55830280, -12306692, 31096636, 53647900, -18298172, 25722022, 11345693, -33786896, +30842160, 4692252, -14806900, 22763864, 9660992, 21388938, -219580, -18034568, 17028472, 5879810, +51003, 5385352, -5204427, -19075560, -11420318, -9127342, -16558173, -12248710, -3166465, 12709882, +-11410117, -6816650, -16308528, 3460670, 1358283, 2621004, 22299470, -13353053, 5349382, -12386149, +-7042136, 12838194, -10271951, -22900228, -29481730, 33932924, 15035070, -8392366, 23349590, -21481816, +-18869402, -11426224, -1918777, 3462281, 127775, -19990388, -14754286, -15624017, -34454228, -21472688, +-18577344, 6682969, 11516955, -911070, 19954954, 3838627, -20626580, -17723182, 26934276, -23079006, +3212636, 23676544, -3152506, -40632000, 28368796, -14948634, 4459250, 1890859, 23454280, -5592048, +-9139154, -1128503, -13598940, 7131793, -23374822, 7984881, -30025042, -19073412, 11442867, -12599823, +-3794604, -1553168, -17889076, 5912560, -10510859, 8602283, -2857764, -221728, 756988, 11176579, +-8144869, -6248104, 1792075, -11104638, -5115843, 1831267, -7490960, -7733626, -5568425, -3210488, +-8714489, -4640176, 11906186, -9675488, 4493073, 7436199, -1937030, 7947300, -10561861, 1311039, +-7477538, 15351824, 2669859, 5636608, -10806138, 13515188, 8988293, 10394895, 4131222, 1501628, +3084860, 7626252, -7476465, 1007707, -26993332, 16175921, -7554311, 27379342, 18999862, -43814036, +-5378373, 4625143, -26528940, -4364224, -4235375, 32318556, 23466628, 21583822, 27042724, -1025960, +-18742700, -14629732, -14896557, 687732, -41671384, 4990752, 35899484, -32649268, -58775016, 5967857, +-21926344, 43412456, -183610, 1392106, 29231548, -13383118, 6085969, -1387811, -7814156, 25255482, +-7202660, 12754442, 42620572, -31343060, -17769354, -28573344, 14288819, 2314987, 28557238, -16383153, +11300059, 1459215, 26011932, 15213311, -12604118, -8506183, 9885404, -4760435, -1083942, -18392660, +-17999672, 9405978, -3968013, -5408438, -10211822, 23396298, -8848706, -9522479, 39442296, 42013908, +27328340, -35878008, -3125663, -11345156, 13950591, 52334176, -6589017, -40063992, -2576981, -16568373, +23578834, 10424422, -26747446, 13996762, 10433012, 13648869, -25813290, -9426916, 1944010, 22771916, +1434519, -3803731, 3773666, -7968775, 1820529, 22750978, 11123428, -9655623, -11438572, -2733747, +7215008, 9016747, 12087649, -11559904, -4342212, -21077552, -4399657, 13116830, -13160854, -2208687, +-8138426, -7672422, -12372727, -2733210, 8383776, -2030446, -927176, 1957431, 5322002, -5706938, +-15801185, -16497506, 9814537, 7433515, 13727252, -7039989, 10052908, 29454348, 1484448, -17878876, +-2927020, 1446867, -1674500, -11247446, -25740276, 3888019, -21129092, 19460496, 11157788, -20614770, +35159676, 53355840, 1484448, -2455648, -18278844, -18434000, 3076807, 3106335, -9026948, 48265232, +-4383551, 36006860, 28797756, -36313412, -1182190, -12155294, -38916160, 9834938, 8970039, 21265456, +36339180, -1073742, -10437307, 11995307, 13145821, 28668370, 11947525, 2653753, 23526220, 24839944, +8487392, -5683853, 21568788, 9659918, 25929254, 5585068, 7438347, 16275779, 27464168, -4574140, +-21873194, -25201794, -8288213, -8754217, 43229384, 23736136, 66759360, -3104725, -33742872, 29662118, +-10238128, -11531987, -10160282, -22726282, 3294777, 12773233, -555125, -12731357, 47412144, -9476308, +55959664, -15341623, 30084636, 2637647, -9524090, -30573188, -43716324, 40931040, -4023848, -6993281, +-12606803, 38037840, -79994, -39920648, 73123968, 23007066, 7905424, -8405251, -30790084, 15386183, +756988, 15486578, -14353244, 11044508, 5490042, -6912750, -10628970, 1887638, -12833899, -5994164, +-14570140, 1685238, -2632815, -202400, 4713190, 11943767, -12258910, 4665945, -6038724, -379031, +15963857, 10691784, -5853504, -20131048, -753767, -1219234, 2561411, 18334678, -12029667, -7074885, +4491462, 11486353, -16847010, 1072131, 10895795, -304406, -1419487, -17519708, 8920647, -615791, +8108362, -18314278, 1925756, 7664369, 5969468, 8950175, -17655000, -18492518, 11992086, 49593452, +-29471528, -18967650, 4029216, 8934069, -5608691, 35086124, 27346056, 27593554, 9336185, 13608067, +23240604, 14317273, -8401493, -13874892, -31182536, -5084168, 17157320, 5829345, 3720516, -11659226, +-29489782, -8653822, -4119411, 30049202, 437550, -3636227, 22843858, -3666828, 6337761, 4827543, +-50794432, 12992276, 13755707, -8920647, -21698712, 4090420, -28631862, -14630806, -43868796, 13232794, +-36621576, -72698760, 8466991, -1036161, 51198156, -1800128, 17412872, 42205032, -6890738, -10993506, +18803366, -414464, -36831492, -12922483, 4876936, 6098854, 27229556, 11281268, 24251532, 20942798, +-15057082, -11330661, 10351408, 30838402, -12827457, -6515466, -28320478, -19615652, 7557532, -38313792, +11129334, -43028592, 8199630, -11376295, 30546344, -13367549, 21660594, -46112380, -9357660, 6252399, +-27388470, 6885907, 4887673, 4694936, -20651814, 10817412, -20221780, 5733782, -1520418, -8670465, +-3672734, -2075543, 6505802, -7105487, -3200288, -5708549, 13211319, -8626442, 7733089, -19502910, +10277857, -1176284, -1532767, 2740726, 18879066, 6504191, 8086887, -22601728, 2969970, -9298604, +-27820650, 11135240, -8891656, -7141457, -10259603, 10324565, -4986457, 4949413, 5872294, -2750927, +1254131, -6890202, 1989644, 5639292, -1306744, -907849, -10611254, 38970924, 41536092, 97071096, +11441793, -54326504, -40790380, -30024506, -34657700, 67949600, 90689848, 30753040, -8650601, -28513214, +1010928, -34508452, 37988984, 35920960, 10660109, 5207648, -22495428, -3251827, 41803452, 9752797, +16798154, 14157286, 43865576, 36909876, -14221710, -32611150, -43116104, -29058674, -4319127, 12022150, +39436388, 23655070, -8226473, 21375516, -29925722, -10186052, -67299456, -10628433, 66248796, 51200844, +-10305237, 134233296, 42111616, 3938485, -73592120, -12541305, -6310381, -17264694, 18801756, 10436234, +15931644, 28171764, -60050624, -64691872, -32500554, -43643312, -6225555, 14779519, 54339388, -32500554, +19883014, 84688704, 42344084, 14741938, 23748484, 17279190, -51151988, -84672592, 43312060, -20951388, +18652506, 45334452, 50169512, 4419522, -30332132, -39986144, -32586454, 35038344, 20272246, 6094559, +34993784, -34892852, -6055367, -5605469, -15433965, -18072148, -1537061, -542240, 11353746, 3497714, +-5004174, 68183, -439697, 548682, 2995740, 6448357, 10106595, -10149008, -13808857, -47424492, +-25933012, -23468238, 27966680, 16504486, 9993315, -38849588, -37995428, -61266636, -16708497, 23989540, +30746598, 39954472, 15688979, 11625940, 4655745, 3787624, -1163936, 8892193, -2167348, 28573344, +20281910, 3965866, 201327, 86436, -4956393, -187368, -20646444, -88874144, -21176874, 49544596, +94871536, 83583824, 200390288, 104882568, 71168144, 62617940, 28500866, -11206107, -101227544, -127078952, +-189579312, -145178480, -148927456, -56657060, 753767, 57038240, 106115224, 87538952, 90471872, 62354872, +85127328, 66636416, 94253592, 44887240, 35160748, 16816408, -24217710, -37271728, -57085484, -34511672, +-124022552, -52383568, -117383064, -84693536, -134352480, -79866528, -125057096, -44408888, -61977988, -20175072, +9610526, 63513440, 166544336, 158587376, 222207648, 150402240, 102614288, 133222904, 181965952, 160133568, +134514080, 93855776, 11358041, -90945936, -90268400, -111922016, -213010512, -235181664, -256151312, -255803952, +-280874208, -242930336, -204622448, -180476144, -117492592, 13542032, 133772128, 232641200, 307534688, 383323680, +426546624, 297359904, 283619232, 184056528, 111552112, 105392592, -6248104, -34780644, -163318272, -313109568, +-337186080, -273754240, -211555600, -124652832, -100818448, -102707704, -56598544, -88200912, -35631584, -9789304, +67833640, 128674000, 105763568, 137546320, 147887536, 157692944, 139343232, 185904432, 138229760, 113206744, +58567784, 12033425, -31302796, -143992000, -127455840, -170948832, -226579920, -205357952, -235316432, -241932816, +-70449272, 7923141, 123055104, 150504240, 160395024, 186043488, 194426720, 164846752, 143498608, 109957608, +83495240, 30157112, -21370684, -64116344, -115519048, -169909440, -159030832, -142096304, -106151728, -50050864, +-21888228, -10467909, -6097243, 15657840, 32884954, 39683888, 42875584, 35240744, 28387050, 30558692, +25065966, 18533858, 34237868, 38134476, 29416768, 13982803, 7261179, 11187316, 14527190, 3441880, +-623307, -1331977, -4027069, -6428493, -2675228, -1762547, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 12924630, -582505, 2175938, 1815161, -5267241, -2720325, 7160784, 12469364, 2010045, 6646999, -2693481, -1263794, -342524, 5630166, -4454418, -10153840, 4110821, 4764730, -5923834, 6877854, 3383897, -6274947, 1984275, 1498407, -2736431, -869194, 328028, 4184909, 377957, -6283537, 277562, --502511, 1361505, -869731, 1121523, 1515587, 3749507, 2726767, 895501, 1178969, 372052, -1844689, -1937567, -3132642, -6969658, 1351304, 1531156, 568546, 5337034, -1886564, 4146791, -1150514, -1658931, -3287798, -2134062, 7480760, 1597191, 4175245, 690953, 1647657, -1440425, -257161, 494995, 2150705, -652298, -2785286, -1514513, -5799280, 637266, 1132798, 4952098, --1594507, 3782793, -661962, 2472828, 41876, 2225867, 1733019, 1031866, -933082, 2559801, -3543348, 2465311, 2311766, -93952, 495532, 565325, -1965484, 807991, 434329, 1708323, -880468, 693637, 907849, 1216013, -705985, 726923, -542240, -89121, 4791036, 4626754, -2111513, 1891933, 2525978, 3058554, 4522601, -1974074, 4692789, 51003, 5014375, -1101659, -8928700, 3033321, 2947421, -6089727, -857920, -1382980, -7924752, 4326106, 3642132, -2503966, --10380399, -4727686, -1565516, 5052492, 6947647, 4382478, -2789045, 1480690, -4457103, 207232, -376347, -3626026, -1812476, -9389872, 764504, -1182727, -3939559, 402653, 530428, -1278827, --308701, 8975945, -2171106, 7309498, 1412507, -5663452, 407485, 541166, 4102231, -1856500, -1154809, 965294, 302795, 5592048, 1931662, 5740761, 4217121, -2963528, 5230734, 2541547, -3815542, 347355, 1236951, -1356673, -2509872, -4750234, -5847061, 6060199, -6074695, -4690641, --5027796, 2792803, 2521683, 1100049, 1083942, 3542811, -2311766, 2661806, -1750199, -2444910, -3869229, -3597572, 584652, 1800128, -3033321, 709207, 417686, -490163, -492311, -287226, -2019708, -691490, 739808, -927713, 1545651, -461172, 855772, -1108638, -8093866, -7525320, -1620813, 150324, -1632088, 4510253, -594316, -784368, 4679367, -5152887, 1008244, -4497905, --2914672, -1623498, 48318, 7648800, 8685498, -4034585, 3402688, -6256694, -599685, -2449205, -8438537, -2495376, -479426, 883690, -11885785, -2066953, -5870147, -1934346, -1457605, 4427575, -5880884, 2410014, 7948911, -1017370, -3620121, -3672734, 4590783, 11930345, 8339753, -4651987, --5440113, 5969468, -5353140, 1021129, 1904818, 9776956, -3596498, -4813585, 1066763, -2984466, -1870995, 2495376, 6215355, -6800007, -4412005, 3996467, 7508677, -683437, -3482682, -4415227, --10611254, 4037806, -17180, 3174518, 498216, 287763, -1666984, 1961190, -2707977, 1695438, -2295123, 2327336, -3765613, 2782602, -688269, -2629594, 256624, -5557688, 3496104, 543850, -445066, -2197413, -758599, -1855963, -3884261, -2932389, 2070174, 213138, 839666, -704375, -275952, -197569, -1108638, -854699, -1620813, 193274, -928787, -671626, -224949, 391379, --284005, 559420, -296353, 1981591, 759136, -1105417, 1332514, 832150, -1523640, -19680614, --6484864, -1042603, 3353833, 2253784, 4891431, -9403831, -2821794, -432718, -9756018, -6972343, -2439005, 5887327, 3449396, 6496675, -843961, 3725884, 8650601, 7633768, 7170448, 4128537, --2785823, -2218351, -4469451, -1986959, -4490925, 9231495, 4280472, -1437203, -4119948, -2516851, --4207458, -6113349, -6599218, -8280160, 4954782, 3547643, -9196062, 2140504, -513249, 6307160, -929860, 3093450, 4061965, -8688182, -1394254, -342524, 1100049, 4522601, 6854231, -2790655, --1052804, -2053531, -5510443, 1650878, 1032940, -601832, -1547799, 5208722, 225486, -2920578, --1041530, 2455111, 3284039, -1378685, -215285, 847719, -4809827, 3491809, -434329, -7157026, -751082, -8729521, 1312649, 6438693, -2230699, -291521, -9844602, -4801237, -7334731, -4438312, --678605, -783295, 4432943, 846645, 5216238, -3209951, 1703491, 2841658, 876173, 2795487, -243203, -1933809, 1009854, -882079, 820876, 52613, 287226, -388695, -1435056, -526134, -1098975, -1323387, 791885, 2209224, 1044751, 548145, -45097, 43487, -579284, -900869, --1556926, 1046898, 1320166, -879931, 827318, -928250, 10799695, 4080219, 1822140, -2691871, -7955890, 3094524, 4495220, 12621298, 13654775, 532576, -2220498, -4831838, -7426536, 2738042, -5395553, -2780991, -555661, 784368, -1301375, -4347044, 5120138, -4995584, 2362769, -14441828, --2087354, -3504157, -3511673, -7128035, -1489817, -908386, 111132, -3644817, -5229123, -4103841, -573915, -2712809, -5546951, 3336116, 4769025, 408022, -4549981, -5090073, 1879048, -3914863, -4497905, -5603859, 3627637, 1331440, -66572, -7992398, -7415798, 1739999, -5372467, 8744553, -1561758, 7341173, -3790309, 7389491, 1439351, 4764193, 1618129, 4515085, -4135517, -5901822, --117038, 9496173, -922344, -6365679, -3381213, 4149475, -2646237, -3630858, 965294, -10160282, -6879464, 8297877, -511101, -7046431, -8908299, -257698, 7502771, 5431523, -4241280, 5769215, -604517, -823560, -1116155, -581431, -477278, 1597728, -2509872, -2162516, 198105, 871878, --1884954, 702227, -880468, -252866, 1995549, -787590, -427349, 333934, -3136937, 1676111, -420907, 299574, 731755, 1007170, -131533, 279173, -612033, -597000, -467615, -350577, -15533286, 3183645, 8539469, -3347927, 6401112, 4764193, 9961103, -7358890, -5244692, -1675574, -593242, 7084549, -3306588, 10749766, -780610, 6114960, 5289252, -2990908, 2187212, 6196027, -5738077, 1476932, 1600412, 5645735, -11623792, 1916092, 9026411, 7050189, -6274411, 7870528, --9263171, 5650030, -8168491, -4122095, -2134599, 8537321, -1729261, 8938901, 1994476, 1931662, -450972, -294205, 3541738, 5248450, 11640435, 1835025, 10046465, -4934381, 7344931, 9669582, --299574, -1728724, -3482145, 3741990, -13805099, -1142461, 1365263, -5167383, -8190503, -456877, --517007, -1103807, 3621194, -8433168, 4271882, 3724811, 5367099, -13299903, 4584878, 3202972, --7859790, -920734, 4341138, 9795210, -12399571, -1533840, 958315, -11721503, -1025423, 1726040, --3246995, 7709467, -1714229, 673236, 2178622, -1347009, -374736, -523449, 1388885, -3032784, -469762, -1572495, 949725, 279173, -1708860, -186831, 2152316, -943819, -405874, 54761, --2456721, -940061, 508417, -950262, -1104344, -354335, 501974, -1372779, -550830, 1734093, -2365990, -3003793, -46171, 491774, -13803488, -16917876, -13545790, -12233141, -420370, 8618389, --17856864, 12711493, 8214125, -20049444, 12620761, 5358509, 4311611, 1992865, 1932198, 4543539, --3161633, -3266323, -6601365, -188979, 7681549, 6511171, 3777961, -11412265, 7791071, -8154533, -209917, -7169911, 8943196, -4738960, -3718905, 2835752, -13443785, 1348620, -4464082, -4007741, --1447941, 969052, 13191992, -6221797, -2039036, -5020280, 10028212, -6102612, -3310883, 3102577, -3002719, 2838974, 3536369, -4162897, 4825933, 1241246, -11035918, 15149423, 6003828, 2451890, -1557999, -72478, -7078643, 8672076, 7239704, 3038153, 9693741, 1038308, 4252018, 9771051, -4948339, 2103997, -6760816, 8050916, -3563212, 15378130, -1707786, 409633, -4230543, -16130823, -2071785, -3912178, -1957431, 8278013, -744640, -8751533, -5027796, 7114614, 5908802, 927713, -6852621, 1816771, -5118528, 2404645, -539018, -1698660, -1462973, 558883, 4028679, -1933272, -447213, 722628, 2238215, 869194, -1918240, 2982318, 371515, 792421, -242666, 769336, -301721, -1170916, 1639067, -1183264, 1335735, 1098438, -944893, 3359738, -533650, 826244, --1222455, -765041, 9861245, 6709276, -1136556, -6189585, 16200617, 25745108, -3397856, -3584687, -12455942, 3019899, 4109210, 3293703, -18547816, 2032056, -11993696, 9583683, 13681618, -3603478, --6610492, 2222646, 8664023, -5215701, 10465762, -4123706, 20200842, -5923834, 3905199, -1007707, -5478231, 14375792, -5440650, 1399086, -1277216, 4143570, -5345087, -2597918, 8185134, 17635672, -1466731, 12904229, -4795868, 1759326, -2441689, 4285304, 9438191, 14064944, 10973641, 10409390, -10838350, 6836514, -1995012, 1646046, -1507534, 243739, 2141041, -7079180, -2046015, 11322071, --9989557, 3942780, -4402342, -2661269, -5201206, -20586316, 2280628, 11110544, 7035694, -2570001, --9766219, -23725400, -3835406, 9604621, -2012192, 3767760, -7403987, 5473399, -6830072, 6218576, -13413183, -5936719, -7283728, -13444858, 4024384, 1614371, 2181844, -10640245, 745714, 20938, --3229279, 566399, 4981089, 175020, 3418257, 1478543, 2207076, 2674691, -489626, 4232691, -1003949, 384400, -908386, -1442572, -1199907, 4027069, 1357210, -196495, 2720862, 1382443, -1959042, -439160, 2249489, 2702071, 3724811, -1627256, 382252, -1588601, -17794050, -13981729, -1735704, 8384850, -8049843, -5126044, 943282, -4191888, -26593364, -22773528, 9879499, 9278203, -1607392, 1446867, -9788767, 15302968, 18396956, 11491185, -9609452, 8994735, 12052752, -1791538, --15466177, -6843494, 21192980, -6218576, 2058363, 1394791, 11875048, -9485435, -17155710, 3809636, -7777649, -4099010, 4952098, 11171210, -5442261, -4148402, -573378, -23757074, -6980933, 8313446, --4603131, -15838766, 2817499, -317291, -5085778, 3275986, -1575179, -15010374, -12883291, -22520124, --18053358, 3617436, 7860864, 849330, -5451924, -7442105, 118648, -5053566, 4760435, -10759967, -303332, -3738232, -3205119, -3569118, -1048509, 4362076, -5007932, -21592948, 3194382, -3008625, -5296769, 6069326, 344671, 4254165, 4967130, 1719598, -1304596, 2767570, -3149285, 1343788, --6831146, -3459059, -3098819, -3593277, 1478543, 6110128, -3192235, 1075352, -7755101, 1020592, --831613, -5564130, 2428267, -1677185, 1379221, 2475512, 1279363, 1183264, 4788352, 1202054, -570694, 1762010, -47782, 811212, 610959, -1237488, -3729105, -579821, -3774203, 1905892, --2885681, 4316979, -15569, 6121402, 2689723, -3437048, -2433099, -1800665, -279710, 8654359, -27779848, 24691230, 19286550, -2054068, 18855444, 6122476, 26316338, 11154567, -543313, 32117766, --6687264, -1675574, -20452098, -5388574, -420907, -14416058, 8626979, 12892955, -4196183, -176631, --11616813, -19907710, -11757473, -15177878, -4439386, -9168681, -2898029, -1442035, 9110699, 2315524, --1911797, -8204998, -2849174, -5477694, 2896419, 214212, -8149701, 4295504, 5385889, 2134062, --6306086, -8258149, 2732673, 7626788, -1112933, -288300, -14622753, 26174068, 4364224, -4982699, --744103, 2317672, 11173894, 9508521, -9880035, 5544266, -3885872, 1182727, -1699196, -2495913, --15002321, -13366475, -17959406, 2699924, -795106, -3799972, 11201275, -3597035, 31706522, -3150359, --1765232, -7845832, -3549254, 4095788, 5406290, 3810710, -325344, 13637595, 9737765, -2053531, --6673843, 1777043, -4007205, -53150, 1219234, -4438849, -1522029, 77309, -1548873, 2107218, --5484137, 3178813, 5973226, -1896228, 3096672, -1915019, -1569811, -2492692, 915902, 3297998, --1506997, 4441533, 767189, 1527935, 6128382, 2613488, -914291, 6457484, 2852932, 4453881, -5794985, 4461934, 409096, -95026, 4264366, -4090420, 38655, 2570538, 1358820, 2951180, -2717641, 1424855, 3513820, -17089674, -23978802, -13571023, 18076980, 13961865, -12192875, -12916040, -19373524, 11450920, -12047920, -16793858, -2621004, 2641942, 1938641, 2161979, -9599789, 9946607, --7140920, 19655918, -3007014, -14155138, 3321620, 4881767, -52613, 1321776, -6083821, -9273908, --442919, 7873749, -4888210, 5949067, -9702868, -26267484, -21098490, 13195213, -16424492, 13008382, -3902515, 1343251, -5463199, 7558606, 2530273, -2266132, -3738232, 3432753, 7981123, -7368017, -22102976, -5771363, 7461432, -6857452, 1980517, -2073396, -8613020, 21097416, -16635482, 22968412, --805306, -11729019, -17486422, 8748848, 3171833, 2698850, 1061931, 9212168, 6346351, 8328479, --18003430, -5676873, 514859, 36507, 4583804, -13877576, -6590628, -4726612, -2309082, -17322140, --3459596, -5974837, -19207630, -1289564, -10877542, 2541010, -5086315, 1190243, 2516851, 8155606, -5021354, -3496104, -503048, -7353521, 3936338, -785979, 3420942, -8588861, 491237, -3624416, -2043868, -7945690, 1540283, 1432372, 418222, -2014340, 2711735, -4806069, 3461207, -7323993, -2718178, -5345087, 2483028, 996969, 3468186, -2939368, 8830453, 3120831, 163209, -5648419, --4344897, -1184874, 5903433, -1564442, -2848100, -3100430, 4051228, 3535295, 41260140, 13748190, --9190693, 21177946, 19744502, -10225243, -13001940, 31846646, -2854543, 6985765, -18902152, 46363636, -1614908, -13018046, 6726993, 2289755, 22515292, 357556, 28435368, -20479478, 425202, -22369800, -1705639, 15660525, 711891, -13725105, 19370302, 10320806, 5687611, 4622459, -6803228, -6586333, -1736777, -9736154, 12665859, -11375758, -15127949, 13269301, 5012227, -17569638, 9468792, 1088237, --12773233, -7207492, -4301410, 6622840, -1554241, -7744900, 9295920, -11397233, -4547834, -3964792, -15589658, -10362682, 7499013, 11930882, 5496485, -7203734, -14695767, 9174050, -12580496, 16810502, --21381958, 27996744, -8399882, -4060355, -4080219, 12683038, -1012539, 4526896, 7556995, 4486094, -10776073, -10736881, -20310900, 1290638, 17072496, -11593190, -5535139, -12115029, -7299297, 3020973, --1299765, -3588445, 7312719, 5202279, 3806952, -2037425, 11202885, 6783901, -5389110, -2928631, -2101850, 444529, 9456444, 5916318, -918049, -3289945, -2575907, 10301479, 824097, -5545340, -6483253, 1808181, 122943, 5348845, 2353642, -1164473, -5807333, 1383516, 6719477, -5306432, --1443109, 7642895, -679679, -1827509, -2151779, 4419522, 716186, -84289, -2253247, -24482924, --3240016, 22750978, -6772090, -13877576, 6058052, -6412386, -1386738, 10423349, -24675124, -14199699, -9305047, 12807056, 17027398, -1017370, -3409667, 7129646, -1819992, -24024436, -16750372, 28700582, --2320356, -24760486, -14650133, -9840307, -8411157, 2527052, 8231842, 663572, -4318053, -12248710, --19205484, 2778307, 2390149, -454193, 15440944, -10421738, -30037928, 12340515, 8655970, -34701188, -20714090, -5430986, -17769890, -14311368, -1447404, 20092930, 4619774, -6361921, -7329362, 5896990, -10316511, -14483167, 11130408, 2036888, 8167954, -6143951, -15420543, 13794898, -77846, 15444166, --47379932, 6233072, 7181186, -6764574, 13019656, 15481746, 44815836, 1500554, -29777546, -13449690, --7858717, -28605020, -28411746, 1698123, -16178068, 437550, -10782515, 10818486, -10968810, -10454487, -18864034, 4884989, -733903, -812823, 11038603, -2121177, -1196685, 6674379, 5210332, -3861713, -3538516, -9908490, -2308008, 3056406, -1985886, -2714956, -4952634, -4967667, -2730526, -6179921, -2509872, -7916162, 1706713, -1178969, 7585986, -1569811, -4041564, -3159485, -4645544, -4687420, --1362578, -3206193, -6026913, -4191351, 4344897, -5692443, -3088082, -10363756, 3240553, 4494684, -10918881, 2706903, -1427003, 589484, -20609400, 3279208, 12723304, 11319923, -18289582, 32553704, -22706418, -10468983, 13582834, -26394722, -5847061, -8861054, 41643468, 26652956, -9907416, -15910169, --19428822, -4342749, 1113470, 7626252, 27941984, 5919002, 4757750, 6019934, 784368, -9234180, -1137093, -1766305, 12885976, 17350058, 22040698, 14314589, 9358734, -2186138, -4049617, 3482145, -19987168, 3142842, 3566970, -20314658, -10292889, 34264712, 13941464, 10294500, 284005, 20528334, -11001022, 43269648, -2391760, 44613972, 3203509, -13845901, 14478335, -12052752, -8975945, -1575179, --8198019, 498753, 8323647, 17858474, 3146601, -3790846, -19505594, 6320581, 1663226, 12911745, --15285252, 4106526, -6721624, 2331630, -19451370, 9925669, -17106854, -2061584, -23302882, -32105418, --5298379, -4993973, 26521960, 7156490, -755377, 4986457, 8324184, 10341744, 1821066, -363462, -506269, -18588618, 5983427, 299037, 17441326, -7012608, -756988, -4606353, 12428025, 2492692, -11365557, -97174, -12985834, 6420439, -569083, 4369593, -9836012, -4465156, 2510945, 2785286, --7271917, 748935, 6916508, 4261682, -6371047, -7194070, 12895102, -12798466, 5499706, -3922916, --10311143, 3354906, 2559801, 3382287, 4525285, -4758824, -428423, 6158446, 680215, 4297115, --1614908, -4865124, -4792647, -10887742, -16693464, 5105643, -19147502, -10201, 23054848, 7271917, -19644644, -22833120, -10597295, 11225434, 2243047, 32730872, -16683800, 19581830, -7463043, -9879499, --24442122, -9449465, -13171054, 16369194, 3754338, -21698712, 27143120, -14046154, -13161927, 2661806, -10530186, -7934415, 18748606, -9111236, -13158706, -6723772, 6174016, -2283312, -3671660, 2054068, -18684182, -12701829, 34262564, -13319230, -524523, 31832686, -6471442, 5613523, -43482784, 1939178, -7675644, -9787157, 19061602, -34812856, -42681236, 16176457, -7645579, 23564874, -17674328, -16601122, -1808181, -5457830, 36122284, -4403415, -1749662, 8072928, -33731600, 1919314, -34086472, -13615583, -1865626, 8126615, -42533600, -18943490, -5304285, -2070711, 13643500, -18206904, 21635898, -8923868, -2347737, -27884538, -1506460, -24636470, 9214852, 5334887, 18243410, 23374286, -8801999, 15330349, -1980517, -5012764, 7742753, 4905390, -7618735, -7615514, -13568339, -478352, -8109972, -8373039, -2811056, -1966021, 11522324, -15585899, -2812667, -9791989, 3774740, 5702106, -5514738, -703301, --8398809, -8265128, 9217537, 15308337, 17101486, 3563749, 1015223, -4590783, 3165928, 2882460, --6599218, -10314364, 3447248, -5410585, -7690676, 11677479, 8005282, 6842957, -10739029, -12244415, --26271242, 21422224, -18779744, -5392332, 17201344, 39302172, -11093901, 32214402, 11571716, 8318815, --14846091, 35689032, 5738613, 16661252, 1708860, -20908974, 7771207, -20995948, -20759188, 13083007, --20678656, -4468914, -4713190, 21163452, 1982664, -7072201, 7021735, 9429601, -4182761, -19912006, --4501663, 15359877, 37317896, 8581882, -20745766, 2324114, -3839701, 8924405, 11454678, 18850612, --8145943, 448287, 12371653, 2823941, -459562, 24857124, 22618372, 26732414, 9396315, 22461068, -3251290, 13469554, -10391673, -1894081, 3160022, -20900384, 1753957, 35316980, -4311611, -7766912, -7613367, -560493, 9678172, -21081846, 28024662, -17516488, -7630010, -4829154, 1600949, 3229279, -3755412, -30660160, 38785164, -8432095, -12184822, -4640176, 32959042, -3802657, 6995428, -26006026, --17879412, 452582, 13813689, 12465069, 21133386, -33774012, -10383083, 32170378, -11419244, 3474092, -27770722, 6484864, 6204081, -1891396, 1113470, -10638097, -658204, 2536715, 8039105, -4871030, -6717329, -12266427, -6678674, 551366, -3281355, -2205466, -28149216, -22039624, 1942936, 14123463, --13215077, -22987738, -9203578, -18909130, 5405217, 679679, -7056095, 17848274, -5054103, 7196218, -8368207, -9965935, -6790344, -1810329, 2332167, -904628, 13711683, -389768, 977105, -6769942, --1369558, -10551124, 63107564, -3704409, 12639552, -526670, -6502581, 1784022, -29207926, -12459700, --8989903, 11353209, 8086887, 14286135, 1620813, -15358266, 16084116, -13043816, 18545668, 13662828, --15034533, -16090558, 1899986, 22708566, -23295902, 9754408, 10714333, -13297219, 5908265, -1715839, -8114267, -1030255, -33955476, 19039054, 11683922, -28597502, 34493420, -18287434, -4406100, -11319923, -27843200, -5519033, -23704462, -39728, 350577, 23028540, 23406498, 1561221, -18059800, 26261578, --4240744, 4648765, -33300492, 26237956, 10696079, 1601486, -19100256, -14454176, -2024540, 9147743, --15343234, -27422830, -11668889, 21715354, 13460428, -3175592, 35228932, 2136209, -5688684, -25352656, -31099322, -28827284, -9277666, 31766652, 10072772, 4161287, -11878269, 4980552, 31333398, 6999186, -13778255, 19862614, -51099912, -11147051, -8423505, -4170413, -21138218, -3690988, -2423435, 31163208, -8523899, 2181307, 15908559, 22297322, 15670188, -10917807, 6048925, 13387950, -2506650, 5242008, -5869073, 7205345, 4733591, 22189412, 12101607, 1493575, -6269579, -9820443, -18956912, 2920041, -193274, 5306969, 6457484, 3133716, 33421824, -4405026, 12216498, 7367480, -8842801, -26209502, --4055523, -9589588, -16210817, -17529910, 3286724, -2731599, -21150030, 272730, 8398809, -1901060, --1834488, 7693360, -5003637, -16127602, -25305410, 802622, -28329604, 26497800, 41407244, 19223736, -23553064, -36156108, -32230508, -25332254, 2415919, 44800804, -8317741, 16643535, 29115046, 14665703, --16121160, 940061, 21246666, -27473832, -22971096, -19712290, 22262426, 15514496, -28816546, -40666360, -55066848, 33957084, -39348344, 17758080, -4647692, 16265578, 1688996, -11926050, -27350352, 24890410, --727997, -20271708, -30350924, 7715909, 7023882, -7692824, 745177, -2841121, -15008763, -6606734, --7935489, 14021994, -26607322, 29251948, -20091320, 1045825, 46021112, -44488344, -10791642, 41929080, -3004330, 9781251, -6288906, -13175886, 13115220, -4919348, -18554796, 2359011, -42246372, 71503688, --7087233, -78959216, 29817274, 77783472, 45880452, -96259880, -28030030, 18143552, 6914898, -14713484, --22223234, 11939472, 29365766, -36266704, -10026601, -63227288, -10925860, 21740050, 7931731, -19375134, --31634582, 12360379, 27683212, -667867, -8558259, -15228343, 22002580, 13011603, 8938364, -1935957, --6657736, 2540473, 12288975, 9475772, -2253784, -25393994, -15776489, 26249230, 11273752, -13657996, --9212705, 18806052, 6311992, -2729452, -38398620, -17692044, -19151260, 21461414, 5905043, 4620311, --3988951, 452582, 20963736, -4356708, -3725884, -18394808, 3629247, -6015102, 29271812, 6116034, --6548752, 3463354, 29552596, -3943854, -19952270, 4591857, 19639274, 45867028, -19213000, 14944876, --24252070, -64328408, 34746824, -16205985, -35156456, -24392730, -35939748, 17241072, 12030740, -48404820, -31118648, -16879222, -1165547, -602906, -24783036, 19145890, 19148574, 16819628, -1529008, 22006876, -11577084, -13372918, 1288490, -27612882, -9920301, -24501714, -16998944, -1223529, 39875012, -33261838, --7014219, -7189239, -29697014, 17437030, -33506650, 17379586, 15184857, -22832046, 18073222, -36688148, -10628433, -31903554, 20782274, -11973295, -16746614, -17506286, -25875568, -7042136, 13188771, 22610318, --26262652, 17584670, 9982578, 27540940, 34029024, 19619948, -28075128, -13136694, -52896280, -13446469, --15277199, 17580374, -61750892, -11790222, -36678484, -3250217, 37033356, 33914136, 22448720, 7847442, -49826988, 54377508, 48583060, -16714402, -21659520, 18355080, 47561932, 87650616, 6463926, 20468204, -10823318, -4767414, 16341814, -15884400, 9689446, -4185446, -102542, -10266046, 16580184, 18954228, --6512244, -15817828, -11809013, 14336601, 6507949, 16267189, -8835285, 6255083, -3115462, -7334194, --4544076, 16151761, 32224066, 15247671, -16520055, 8375186, -5625871, 11400454, 5273683, 5588290, -15827491, -10210211, -21001854, 1657857, 16378321, 12642773, 4506495, -3257733, -7149510, -29131690, -28651190, 7871065, -6589017, -30285426, -6928856, -20841866, 10472204, -10135049, 7466264, 57370564, --33879240, 21373368, 26214332, -12205223, 2467459, 9884330, -3114925, 27758910, 1516124, 20060718, --25731686, -3781182, 22526030, 3565897, -34950832, 22541062, -13916231, -11539503, -13305809, -3615826, --12979391, 13141526, 18622442, 8896488, -3182034, -9890773, 16158741, -5394479, -25676926, 20924006, --43389908, -11089606, -8901857, -9692131, 24823300, 26980448, 48690972, -14419816, 20847234, -920197, -9411884, 31751082, -2302103, 3262028, -21250962, -67168456, 33202782, 6243809, -32341104, -22322556, -3287798, 17373680, -3074660, -19138374, 9859634, -19621022, 25617870, 14136885, -11158862, -23506356, -46427524, 4955319, 2467996, -4410395, 6438693, 3126199, 2026151, -15763604, -32995012, 8968965, --4833986, -11898670, -30411590, -7637526, -905164, 26963804, 11180337, -34328064, 19913616, 3393024, --1308354, -3949759, 11101954, 14079977, -2834142, -6546604, -2438468, -6205154, 5243082, 8301098, --392453, 4691178, 9478993, -3669513, 13692893, 5667746, 4189204, 7042673, -3888019, 17009144, -2873333, -3802657, 11184632, -13724031, 4334696, 7634305, -3243774, -5965173, 15436112, 22123914, --19987168, -3862249, -7067906, -7005629, 7931731, 6739878, -12575664, 6773701, 5531381, 4803921, -5789616, -11421392, 7997229, -1029182, 4694936, -3716757, 3206193, 63839856, 32560148, 64239288, --59319404, 5129265, 30833570, -11959873, 35119948, 67781024, 37195492, 2161442, -18263812, -18833432, -3513820, 29375966, 31457414, 7147363, -78920, -46780784, -9642202, 46133856, 15262703, -12868259, -25479356, -21677236, -30323006, -8329552, -2024540, 35668628, 46585900, 41851236, 15857556, -16225313, --24941948, -46271832, -46010376, 40074728, 16806744, 3284039, 61892628, 3749507, -18951544, -25327960, --25733834, 12517682, 26443040, 21044802, 40598716, 2882997, 29212756, -1915555, -5250598, 14798847, -27047556, 19786378, 17188996, -15428059, -5844377, -12168716, -27435178, -21980568, -39983460, -13383118, -10719701, -6564321, 29088740, 34969088, -569620, 331786, -14317273, -25561498, 5273683, 33790120, --1946694, 18702972, 8203388, -2452963, -10584947, -4866735, 3092913, 11798812, 9199283, -9029095, --18913962, -23381266, -21939766, -8500277, 8915815, -2281702, -13786308, -7052873, -9564892, -8085813, -4529580, -1219234, 12958453, 18538690, 4167729, -22535156, -11579769, -13498545, -3058017, 15210627, -3679713, 3745212, -18423262, -17454210, -19886236, -10210748, 17382270, 11839614, 15007689, 8062191, --7240241, -8974871, 6381248, 5761699, -1534377, 3908420, -7587597, -6115497, 4542465, 3183108, -6285148, -3657702, -7537131, -3480534, -5768678, -1090385, -33910916, -66134444, 26095148, 107843408, -109653200, 92815320, 67252744, -41511932, -47341276, -51159504, -68038184, -104120208, -83875880, -72855528, -33817500, 78255912, 58200564, 125858112, 97275640, 50713900, -18721762, -33934536, -84619984, -66070556, --65416648, -13388487, -40088152, -32566052, 9695889, 17690970, 35639640, 35762584, 49079128, 48673792, -62807992, 36617280, 16100759, -9165460, -10624138, -27668180, -41843720, -50535660, -61763240, -40470940, --75856104, -50557672, -37941740, 37927784, 71951440, 77581072, 53672060, 36550172, 57283052, 43812424, -54974508, 43184824, 15129022, -20452634, -96331288, -68146632, -69452304, -107778984, -67620504, -58540404, --56804164, 20594906, 57084948, 90651728, 74645992, 106577464, 95655368, 93523448, 66672388, -36457828, --32996086, -74947176, -99089192, -109189880, -89558120, -43022688, -12247099, -22676890, 29482266, 78036336, -55006720, 37131604, 62583044, 52578452, 18759344, -12465069, -12555800, -4138738, -15393163, -42106248, --26477400, -30112016, -16299401, -13556527, -31383326, -11688753, 10714870, -10591389, 34605088, 45687176, -50202264, 53104048, 3228742, 15780247, 15439334, -4645007, -72967736, -58252640, -45535780, -40685152, --32058172, -30416958, 33442226, 49999324, 54350664, 52010980, 42861628, 29352880, 26404386, -529355, --7988639, -42276972, -57024280, -51077900, -42633456, -27248346, -17794586, 1903207, 25476672, 51852068, -38766376, 24608016, 17751100, 4735739, -548682, -166430, -10603201, -13758928, -11458436, -13467407, -2892124, -5226975, -18506478, 2125472, 8365523, -3543885, -4925254, -4093104, 1682017, 3077344, --4189204, 799938, 4656282, 1343251, 504659, 18254, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +582505, 2175938, 1815161, -5267241, -2720325, 7160784, 12469364, 2010045, 6646999, -2693481, +1263794, -342524, 5630166, -4454418, -10153840, 4110821, 4764730, -5923834, 6877854, 3383897, +6274947, 1984275, 1498407, -2736431, -869194, 328028, 4184909, 377957, -6283537, 277562, +-502511, 1361505, -869731, 1121523, 1515587, 3749507, 2726767, 895501, 1178969, 372052, +1844689, -1937567, -3132642, -6969658, 1351304, 1531156, 568546, 5337034, -1886564, 4146791, +1150514, -1658931, -3287798, -2134062, 7480760, 1597191, 4175245, 690953, 1647657, -1440425, +257161, 494995, 2150705, -652298, -2785286, -1514513, -5799280, 637266, 1132798, 4952098, +-1594507, 3782793, -661962, 2472828, 41876, 2225867, 1733019, 1031866, -933082, 2559801, +3543348, 2465311, 2311766, -93952, 495532, 565325, -1965484, 807991, 434329, 1708323, +880468, 693637, 907849, 1216013, -705985, 726923, -542240, -89121, 4791036, 4626754, +2111513, 1891933, 2525978, 3058554, 4522601, -1974074, 4692789, 51003, 5014375, -1101659, +8928700, 3033321, 2947421, -6089727, -857920, -1382980, -7924752, 4326106, 3642132, -2503966, +-10380399, -4727686, -1565516, 5052492, 6947647, 4382478, -2789045, 1480690, -4457103, 207232, +376347, -3626026, -1812476, -9389872, 764504, -1182727, -3939559, 402653, 530428, -1278827, +-308701, 8975945, -2171106, 7309498, 1412507, -5663452, 407485, 541166, 4102231, -1856500, +1154809, 965294, 302795, 5592048, 1931662, 5740761, 4217121, -2963528, 5230734, 2541547, +3815542, 347355, 1236951, -1356673, -2509872, -4750234, -5847061, 6060199, -6074695, -4690641, +-5027796, 2792803, 2521683, 1100049, 1083942, 3542811, -2311766, 2661806, -1750199, -2444910, +3869229, -3597572, 584652, 1800128, -3033321, 709207, 417686, -490163, -492311, -287226, +2019708, -691490, 739808, -927713, 1545651, -461172, 855772, -1108638, -8093866, -7525320, +1620813, 150324, -1632088, 4510253, -594316, -784368, 4679367, -5152887, 1008244, -4497905, +-2914672, -1623498, 48318, 7648800, 8685498, -4034585, 3402688, -6256694, -599685, -2449205, +8438537, -2495376, -479426, 883690, -11885785, -2066953, -5870147, -1934346, -1457605, 4427575, +5880884, 2410014, 7948911, -1017370, -3620121, -3672734, 4590783, 11930345, 8339753, -4651987, +-5440113, 5969468, -5353140, 1021129, 1904818, 9776956, -3596498, -4813585, 1066763, -2984466, +1870995, 2495376, 6215355, -6800007, -4412005, 3996467, 7508677, -683437, -3482682, -4415227, +-10611254, 4037806, -17180, 3174518, 498216, 287763, -1666984, 1961190, -2707977, 1695438, +2295123, 2327336, -3765613, 2782602, -688269, -2629594, 256624, -5557688, 3496104, 543850, +445066, -2197413, -758599, -1855963, -3884261, -2932389, 2070174, 213138, 839666, -704375, +275952, -197569, -1108638, -854699, -1620813, 193274, -928787, -671626, -224949, 391379, +-284005, 559420, -296353, 1981591, 759136, -1105417, 1332514, 832150, -1523640, -19680614, +-6484864, -1042603, 3353833, 2253784, 4891431, -9403831, -2821794, -432718, -9756018, -6972343, +2439005, 5887327, 3449396, 6496675, -843961, 3725884, 8650601, 7633768, 7170448, 4128537, +-2785823, -2218351, -4469451, -1986959, -4490925, 9231495, 4280472, -1437203, -4119948, -2516851, +-4207458, -6113349, -6599218, -8280160, 4954782, 3547643, -9196062, 2140504, -513249, 6307160, +929860, 3093450, 4061965, -8688182, -1394254, -342524, 1100049, 4522601, 6854231, -2790655, +-1052804, -2053531, -5510443, 1650878, 1032940, -601832, -1547799, 5208722, 225486, -2920578, +-1041530, 2455111, 3284039, -1378685, -215285, 847719, -4809827, 3491809, -434329, -7157026, +751082, -8729521, 1312649, 6438693, -2230699, -291521, -9844602, -4801237, -7334731, -4438312, +-678605, -783295, 4432943, 846645, 5216238, -3209951, 1703491, 2841658, 876173, 2795487, +243203, -1933809, 1009854, -882079, 820876, 52613, 287226, -388695, -1435056, -526134, +1098975, -1323387, 791885, 2209224, 1044751, 548145, -45097, 43487, -579284, -900869, +-1556926, 1046898, 1320166, -879931, 827318, -928250, 10799695, 4080219, 1822140, -2691871, +7955890, 3094524, 4495220, 12621298, 13654775, 532576, -2220498, -4831838, -7426536, 2738042, +5395553, -2780991, -555661, 784368, -1301375, -4347044, 5120138, -4995584, 2362769, -14441828, +-2087354, -3504157, -3511673, -7128035, -1489817, -908386, 111132, -3644817, -5229123, -4103841, +573915, -2712809, -5546951, 3336116, 4769025, 408022, -4549981, -5090073, 1879048, -3914863, +4497905, -5603859, 3627637, 1331440, -66572, -7992398, -7415798, 1739999, -5372467, 8744553, +1561758, 7341173, -3790309, 7389491, 1439351, 4764193, 1618129, 4515085, -4135517, -5901822, +-117038, 9496173, -922344, -6365679, -3381213, 4149475, -2646237, -3630858, 965294, -10160282, +6879464, 8297877, -511101, -7046431, -8908299, -257698, 7502771, 5431523, -4241280, 5769215, +604517, -823560, -1116155, -581431, -477278, 1597728, -2509872, -2162516, 198105, 871878, +-1884954, 702227, -880468, -252866, 1995549, -787590, -427349, 333934, -3136937, 1676111, +420907, 299574, 731755, 1007170, -131533, 279173, -612033, -597000, -467615, -350577, +15533286, 3183645, 8539469, -3347927, 6401112, 4764193, 9961103, -7358890, -5244692, -1675574, +593242, 7084549, -3306588, 10749766, -780610, 6114960, 5289252, -2990908, 2187212, 6196027, +5738077, 1476932, 1600412, 5645735, -11623792, 1916092, 9026411, 7050189, -6274411, 7870528, +-9263171, 5650030, -8168491, -4122095, -2134599, 8537321, -1729261, 8938901, 1994476, 1931662, +450972, -294205, 3541738, 5248450, 11640435, 1835025, 10046465, -4934381, 7344931, 9669582, +-299574, -1728724, -3482145, 3741990, -13805099, -1142461, 1365263, -5167383, -8190503, -456877, +-517007, -1103807, 3621194, -8433168, 4271882, 3724811, 5367099, -13299903, 4584878, 3202972, +-7859790, -920734, 4341138, 9795210, -12399571, -1533840, 958315, -11721503, -1025423, 1726040, +-3246995, 7709467, -1714229, 673236, 2178622, -1347009, -374736, -523449, 1388885, -3032784, +469762, -1572495, 949725, 279173, -1708860, -186831, 2152316, -943819, -405874, 54761, +-2456721, -940061, 508417, -950262, -1104344, -354335, 501974, -1372779, -550830, 1734093, +2365990, -3003793, -46171, 491774, -13803488, -16917876, -13545790, -12233141, -420370, 8618389, +-17856864, 12711493, 8214125, -20049444, 12620761, 5358509, 4311611, 1992865, 1932198, 4543539, +-3161633, -3266323, -6601365, -188979, 7681549, 6511171, 3777961, -11412265, 7791071, -8154533, +209917, -7169911, 8943196, -4738960, -3718905, 2835752, -13443785, 1348620, -4464082, -4007741, +-1447941, 969052, 13191992, -6221797, -2039036, -5020280, 10028212, -6102612, -3310883, 3102577, +3002719, 2838974, 3536369, -4162897, 4825933, 1241246, -11035918, 15149423, 6003828, 2451890, +1557999, -72478, -7078643, 8672076, 7239704, 3038153, 9693741, 1038308, 4252018, 9771051, +4948339, 2103997, -6760816, 8050916, -3563212, 15378130, -1707786, 409633, -4230543, -16130823, +2071785, -3912178, -1957431, 8278013, -744640, -8751533, -5027796, 7114614, 5908802, 927713, +6852621, 1816771, -5118528, 2404645, -539018, -1698660, -1462973, 558883, 4028679, -1933272, +447213, 722628, 2238215, 869194, -1918240, 2982318, 371515, 792421, -242666, 769336, +301721, -1170916, 1639067, -1183264, 1335735, 1098438, -944893, 3359738, -533650, 826244, +-1222455, -765041, 9861245, 6709276, -1136556, -6189585, 16200617, 25745108, -3397856, -3584687, +12455942, 3019899, 4109210, 3293703, -18547816, 2032056, -11993696, 9583683, 13681618, -3603478, +-6610492, 2222646, 8664023, -5215701, 10465762, -4123706, 20200842, -5923834, 3905199, -1007707, +5478231, 14375792, -5440650, 1399086, -1277216, 4143570, -5345087, -2597918, 8185134, 17635672, +1466731, 12904229, -4795868, 1759326, -2441689, 4285304, 9438191, 14064944, 10973641, 10409390, +10838350, 6836514, -1995012, 1646046, -1507534, 243739, 2141041, -7079180, -2046015, 11322071, +-9989557, 3942780, -4402342, -2661269, -5201206, -20586316, 2280628, 11110544, 7035694, -2570001, +-9766219, -23725400, -3835406, 9604621, -2012192, 3767760, -7403987, 5473399, -6830072, 6218576, +13413183, -5936719, -7283728, -13444858, 4024384, 1614371, 2181844, -10640245, 745714, 20938, +-3229279, 566399, 4981089, 175020, 3418257, 1478543, 2207076, 2674691, -489626, 4232691, +1003949, 384400, -908386, -1442572, -1199907, 4027069, 1357210, -196495, 2720862, 1382443, +1959042, -439160, 2249489, 2702071, 3724811, -1627256, 382252, -1588601, -17794050, -13981729, +1735704, 8384850, -8049843, -5126044, 943282, -4191888, -26593364, -22773528, 9879499, 9278203, +1607392, 1446867, -9788767, 15302968, 18396956, 11491185, -9609452, 8994735, 12052752, -1791538, +-15466177, -6843494, 21192980, -6218576, 2058363, 1394791, 11875048, -9485435, -17155710, 3809636, +7777649, -4099010, 4952098, 11171210, -5442261, -4148402, -573378, -23757074, -6980933, 8313446, +-4603131, -15838766, 2817499, -317291, -5085778, 3275986, -1575179, -15010374, -12883291, -22520124, +-18053358, 3617436, 7860864, 849330, -5451924, -7442105, 118648, -5053566, 4760435, -10759967, +303332, -3738232, -3205119, -3569118, -1048509, 4362076, -5007932, -21592948, 3194382, -3008625, +5296769, 6069326, 344671, 4254165, 4967130, 1719598, -1304596, 2767570, -3149285, 1343788, +-6831146, -3459059, -3098819, -3593277, 1478543, 6110128, -3192235, 1075352, -7755101, 1020592, +-831613, -5564130, 2428267, -1677185, 1379221, 2475512, 1279363, 1183264, 4788352, 1202054, +570694, 1762010, -47782, 811212, 610959, -1237488, -3729105, -579821, -3774203, 1905892, +-2885681, 4316979, -15569, 6121402, 2689723, -3437048, -2433099, -1800665, -279710, 8654359, +27779848, 24691230, 19286550, -2054068, 18855444, 6122476, 26316338, 11154567, -543313, 32117766, +-6687264, -1675574, -20452098, -5388574, -420907, -14416058, 8626979, 12892955, -4196183, -176631, +-11616813, -19907710, -11757473, -15177878, -4439386, -9168681, -2898029, -1442035, 9110699, 2315524, +-1911797, -8204998, -2849174, -5477694, 2896419, 214212, -8149701, 4295504, 5385889, 2134062, +-6306086, -8258149, 2732673, 7626788, -1112933, -288300, -14622753, 26174068, 4364224, -4982699, +-744103, 2317672, 11173894, 9508521, -9880035, 5544266, -3885872, 1182727, -1699196, -2495913, +-15002321, -13366475, -17959406, 2699924, -795106, -3799972, 11201275, -3597035, 31706522, -3150359, +-1765232, -7845832, -3549254, 4095788, 5406290, 3810710, -325344, 13637595, 9737765, -2053531, +-6673843, 1777043, -4007205, -53150, 1219234, -4438849, -1522029, 77309, -1548873, 2107218, +-5484137, 3178813, 5973226, -1896228, 3096672, -1915019, -1569811, -2492692, 915902, 3297998, +-1506997, 4441533, 767189, 1527935, 6128382, 2613488, -914291, 6457484, 2852932, 4453881, +5794985, 4461934, 409096, -95026, 4264366, -4090420, 38655, 2570538, 1358820, 2951180, +2717641, 1424855, 3513820, -17089674, -23978802, -13571023, 18076980, 13961865, -12192875, -12916040, +19373524, 11450920, -12047920, -16793858, -2621004, 2641942, 1938641, 2161979, -9599789, 9946607, +-7140920, 19655918, -3007014, -14155138, 3321620, 4881767, -52613, 1321776, -6083821, -9273908, +-442919, 7873749, -4888210, 5949067, -9702868, -26267484, -21098490, 13195213, -16424492, 13008382, +3902515, 1343251, -5463199, 7558606, 2530273, -2266132, -3738232, 3432753, 7981123, -7368017, +22102976, -5771363, 7461432, -6857452, 1980517, -2073396, -8613020, 21097416, -16635482, 22968412, +-805306, -11729019, -17486422, 8748848, 3171833, 2698850, 1061931, 9212168, 6346351, 8328479, +-18003430, -5676873, 514859, 36507, 4583804, -13877576, -6590628, -4726612, -2309082, -17322140, +-3459596, -5974837, -19207630, -1289564, -10877542, 2541010, -5086315, 1190243, 2516851, 8155606, +5021354, -3496104, -503048, -7353521, 3936338, -785979, 3420942, -8588861, 491237, -3624416, +2043868, -7945690, 1540283, 1432372, 418222, -2014340, 2711735, -4806069, 3461207, -7323993, +2718178, -5345087, 2483028, 996969, 3468186, -2939368, 8830453, 3120831, 163209, -5648419, +-4344897, -1184874, 5903433, -1564442, -2848100, -3100430, 4051228, 3535295, 41260140, 13748190, +-9190693, 21177946, 19744502, -10225243, -13001940, 31846646, -2854543, 6985765, -18902152, 46363636, +1614908, -13018046, 6726993, 2289755, 22515292, 357556, 28435368, -20479478, 425202, -22369800, +1705639, 15660525, 711891, -13725105, 19370302, 10320806, 5687611, 4622459, -6803228, -6586333, +1736777, -9736154, 12665859, -11375758, -15127949, 13269301, 5012227, -17569638, 9468792, 1088237, +-12773233, -7207492, -4301410, 6622840, -1554241, -7744900, 9295920, -11397233, -4547834, -3964792, +15589658, -10362682, 7499013, 11930882, 5496485, -7203734, -14695767, 9174050, -12580496, 16810502, +-21381958, 27996744, -8399882, -4060355, -4080219, 12683038, -1012539, 4526896, 7556995, 4486094, +10776073, -10736881, -20310900, 1290638, 17072496, -11593190, -5535139, -12115029, -7299297, 3020973, +-1299765, -3588445, 7312719, 5202279, 3806952, -2037425, 11202885, 6783901, -5389110, -2928631, +2101850, 444529, 9456444, 5916318, -918049, -3289945, -2575907, 10301479, 824097, -5545340, +6483253, 1808181, 122943, 5348845, 2353642, -1164473, -5807333, 1383516, 6719477, -5306432, +-1443109, 7642895, -679679, -1827509, -2151779, 4419522, 716186, -84289, -2253247, -24482924, +-3240016, 22750978, -6772090, -13877576, 6058052, -6412386, -1386738, 10423349, -24675124, -14199699, +9305047, 12807056, 17027398, -1017370, -3409667, 7129646, -1819992, -24024436, -16750372, 28700582, +-2320356, -24760486, -14650133, -9840307, -8411157, 2527052, 8231842, 663572, -4318053, -12248710, +-19205484, 2778307, 2390149, -454193, 15440944, -10421738, -30037928, 12340515, 8655970, -34701188, +20714090, -5430986, -17769890, -14311368, -1447404, 20092930, 4619774, -6361921, -7329362, 5896990, +10316511, -14483167, 11130408, 2036888, 8167954, -6143951, -15420543, 13794898, -77846, 15444166, +-47379932, 6233072, 7181186, -6764574, 13019656, 15481746, 44815836, 1500554, -29777546, -13449690, +-7858717, -28605020, -28411746, 1698123, -16178068, 437550, -10782515, 10818486, -10968810, -10454487, +18864034, 4884989, -733903, -812823, 11038603, -2121177, -1196685, 6674379, 5210332, -3861713, +3538516, -9908490, -2308008, 3056406, -1985886, -2714956, -4952634, -4967667, -2730526, -6179921, +2509872, -7916162, 1706713, -1178969, 7585986, -1569811, -4041564, -3159485, -4645544, -4687420, +-1362578, -3206193, -6026913, -4191351, 4344897, -5692443, -3088082, -10363756, 3240553, 4494684, +10918881, 2706903, -1427003, 589484, -20609400, 3279208, 12723304, 11319923, -18289582, 32553704, +22706418, -10468983, 13582834, -26394722, -5847061, -8861054, 41643468, 26652956, -9907416, -15910169, +-19428822, -4342749, 1113470, 7626252, 27941984, 5919002, 4757750, 6019934, 784368, -9234180, +1137093, -1766305, 12885976, 17350058, 22040698, 14314589, 9358734, -2186138, -4049617, 3482145, +19987168, 3142842, 3566970, -20314658, -10292889, 34264712, 13941464, 10294500, 284005, 20528334, +11001022, 43269648, -2391760, 44613972, 3203509, -13845901, 14478335, -12052752, -8975945, -1575179, +-8198019, 498753, 8323647, 17858474, 3146601, -3790846, -19505594, 6320581, 1663226, 12911745, +-15285252, 4106526, -6721624, 2331630, -19451370, 9925669, -17106854, -2061584, -23302882, -32105418, +-5298379, -4993973, 26521960, 7156490, -755377, 4986457, 8324184, 10341744, 1821066, -363462, +506269, -18588618, 5983427, 299037, 17441326, -7012608, -756988, -4606353, 12428025, 2492692, +11365557, -97174, -12985834, 6420439, -569083, 4369593, -9836012, -4465156, 2510945, 2785286, +-7271917, 748935, 6916508, 4261682, -6371047, -7194070, 12895102, -12798466, 5499706, -3922916, +-10311143, 3354906, 2559801, 3382287, 4525285, -4758824, -428423, 6158446, 680215, 4297115, +-1614908, -4865124, -4792647, -10887742, -16693464, 5105643, -19147502, -10201, 23054848, 7271917, +19644644, -22833120, -10597295, 11225434, 2243047, 32730872, -16683800, 19581830, -7463043, -9879499, +-24442122, -9449465, -13171054, 16369194, 3754338, -21698712, 27143120, -14046154, -13161927, 2661806, +10530186, -7934415, 18748606, -9111236, -13158706, -6723772, 6174016, -2283312, -3671660, 2054068, +18684182, -12701829, 34262564, -13319230, -524523, 31832686, -6471442, 5613523, -43482784, 1939178, +7675644, -9787157, 19061602, -34812856, -42681236, 16176457, -7645579, 23564874, -17674328, -16601122, +1808181, -5457830, 36122284, -4403415, -1749662, 8072928, -33731600, 1919314, -34086472, -13615583, +1865626, 8126615, -42533600, -18943490, -5304285, -2070711, 13643500, -18206904, 21635898, -8923868, +2347737, -27884538, -1506460, -24636470, 9214852, 5334887, 18243410, 23374286, -8801999, 15330349, +1980517, -5012764, 7742753, 4905390, -7618735, -7615514, -13568339, -478352, -8109972, -8373039, +2811056, -1966021, 11522324, -15585899, -2812667, -9791989, 3774740, 5702106, -5514738, -703301, +-8398809, -8265128, 9217537, 15308337, 17101486, 3563749, 1015223, -4590783, 3165928, 2882460, +-6599218, -10314364, 3447248, -5410585, -7690676, 11677479, 8005282, 6842957, -10739029, -12244415, +-26271242, 21422224, -18779744, -5392332, 17201344, 39302172, -11093901, 32214402, 11571716, 8318815, +-14846091, 35689032, 5738613, 16661252, 1708860, -20908974, 7771207, -20995948, -20759188, 13083007, +-20678656, -4468914, -4713190, 21163452, 1982664, -7072201, 7021735, 9429601, -4182761, -19912006, +-4501663, 15359877, 37317896, 8581882, -20745766, 2324114, -3839701, 8924405, 11454678, 18850612, +-8145943, 448287, 12371653, 2823941, -459562, 24857124, 22618372, 26732414, 9396315, 22461068, +3251290, 13469554, -10391673, -1894081, 3160022, -20900384, 1753957, 35316980, -4311611, -7766912, +7613367, -560493, 9678172, -21081846, 28024662, -17516488, -7630010, -4829154, 1600949, 3229279, +3755412, -30660160, 38785164, -8432095, -12184822, -4640176, 32959042, -3802657, 6995428, -26006026, +-17879412, 452582, 13813689, 12465069, 21133386, -33774012, -10383083, 32170378, -11419244, 3474092, +27770722, 6484864, 6204081, -1891396, 1113470, -10638097, -658204, 2536715, 8039105, -4871030, +6717329, -12266427, -6678674, 551366, -3281355, -2205466, -28149216, -22039624, 1942936, 14123463, +-13215077, -22987738, -9203578, -18909130, 5405217, 679679, -7056095, 17848274, -5054103, 7196218, +8368207, -9965935, -6790344, -1810329, 2332167, -904628, 13711683, -389768, 977105, -6769942, +-1369558, -10551124, 63107564, -3704409, 12639552, -526670, -6502581, 1784022, -29207926, -12459700, +-8989903, 11353209, 8086887, 14286135, 1620813, -15358266, 16084116, -13043816, 18545668, 13662828, +-15034533, -16090558, 1899986, 22708566, -23295902, 9754408, 10714333, -13297219, 5908265, -1715839, +8114267, -1030255, -33955476, 19039054, 11683922, -28597502, 34493420, -18287434, -4406100, -11319923, +27843200, -5519033, -23704462, -39728, 350577, 23028540, 23406498, 1561221, -18059800, 26261578, +-4240744, 4648765, -33300492, 26237956, 10696079, 1601486, -19100256, -14454176, -2024540, 9147743, +-15343234, -27422830, -11668889, 21715354, 13460428, -3175592, 35228932, 2136209, -5688684, -25352656, +31099322, -28827284, -9277666, 31766652, 10072772, 4161287, -11878269, 4980552, 31333398, 6999186, +13778255, 19862614, -51099912, -11147051, -8423505, -4170413, -21138218, -3690988, -2423435, 31163208, +8523899, 2181307, 15908559, 22297322, 15670188, -10917807, 6048925, 13387950, -2506650, 5242008, +5869073, 7205345, 4733591, 22189412, 12101607, 1493575, -6269579, -9820443, -18956912, 2920041, +193274, 5306969, 6457484, 3133716, 33421824, -4405026, 12216498, 7367480, -8842801, -26209502, +-4055523, -9589588, -16210817, -17529910, 3286724, -2731599, -21150030, 272730, 8398809, -1901060, +-1834488, 7693360, -5003637, -16127602, -25305410, 802622, -28329604, 26497800, 41407244, 19223736, +23553064, -36156108, -32230508, -25332254, 2415919, 44800804, -8317741, 16643535, 29115046, 14665703, +-16121160, 940061, 21246666, -27473832, -22971096, -19712290, 22262426, 15514496, -28816546, -40666360, +55066848, 33957084, -39348344, 17758080, -4647692, 16265578, 1688996, -11926050, -27350352, 24890410, +-727997, -20271708, -30350924, 7715909, 7023882, -7692824, 745177, -2841121, -15008763, -6606734, +-7935489, 14021994, -26607322, 29251948, -20091320, 1045825, 46021112, -44488344, -10791642, 41929080, +3004330, 9781251, -6288906, -13175886, 13115220, -4919348, -18554796, 2359011, -42246372, 71503688, +-7087233, -78959216, 29817274, 77783472, 45880452, -96259880, -28030030, 18143552, 6914898, -14713484, +-22223234, 11939472, 29365766, -36266704, -10026601, -63227288, -10925860, 21740050, 7931731, -19375134, +-31634582, 12360379, 27683212, -667867, -8558259, -15228343, 22002580, 13011603, 8938364, -1935957, +-6657736, 2540473, 12288975, 9475772, -2253784, -25393994, -15776489, 26249230, 11273752, -13657996, +-9212705, 18806052, 6311992, -2729452, -38398620, -17692044, -19151260, 21461414, 5905043, 4620311, +-3988951, 452582, 20963736, -4356708, -3725884, -18394808, 3629247, -6015102, 29271812, 6116034, +-6548752, 3463354, 29552596, -3943854, -19952270, 4591857, 19639274, 45867028, -19213000, 14944876, +-24252070, -64328408, 34746824, -16205985, -35156456, -24392730, -35939748, 17241072, 12030740, -48404820, +31118648, -16879222, -1165547, -602906, -24783036, 19145890, 19148574, 16819628, -1529008, 22006876, +11577084, -13372918, 1288490, -27612882, -9920301, -24501714, -16998944, -1223529, 39875012, -33261838, +-7014219, -7189239, -29697014, 17437030, -33506650, 17379586, 15184857, -22832046, 18073222, -36688148, +10628433, -31903554, 20782274, -11973295, -16746614, -17506286, -25875568, -7042136, 13188771, 22610318, +-26262652, 17584670, 9982578, 27540940, 34029024, 19619948, -28075128, -13136694, -52896280, -13446469, +-15277199, 17580374, -61750892, -11790222, -36678484, -3250217, 37033356, 33914136, 22448720, 7847442, +49826988, 54377508, 48583060, -16714402, -21659520, 18355080, 47561932, 87650616, 6463926, 20468204, +10823318, -4767414, 16341814, -15884400, 9689446, -4185446, -102542, -10266046, 16580184, 18954228, +-6512244, -15817828, -11809013, 14336601, 6507949, 16267189, -8835285, 6255083, -3115462, -7334194, +-4544076, 16151761, 32224066, 15247671, -16520055, 8375186, -5625871, 11400454, 5273683, 5588290, +15827491, -10210211, -21001854, 1657857, 16378321, 12642773, 4506495, -3257733, -7149510, -29131690, +28651190, 7871065, -6589017, -30285426, -6928856, -20841866, 10472204, -10135049, 7466264, 57370564, +-33879240, 21373368, 26214332, -12205223, 2467459, 9884330, -3114925, 27758910, 1516124, 20060718, +-25731686, -3781182, 22526030, 3565897, -34950832, 22541062, -13916231, -11539503, -13305809, -3615826, +-12979391, 13141526, 18622442, 8896488, -3182034, -9890773, 16158741, -5394479, -25676926, 20924006, +-43389908, -11089606, -8901857, -9692131, 24823300, 26980448, 48690972, -14419816, 20847234, -920197, +9411884, 31751082, -2302103, 3262028, -21250962, -67168456, 33202782, 6243809, -32341104, -22322556, +3287798, 17373680, -3074660, -19138374, 9859634, -19621022, 25617870, 14136885, -11158862, -23506356, +46427524, 4955319, 2467996, -4410395, 6438693, 3126199, 2026151, -15763604, -32995012, 8968965, +-4833986, -11898670, -30411590, -7637526, -905164, 26963804, 11180337, -34328064, 19913616, 3393024, +-1308354, -3949759, 11101954, 14079977, -2834142, -6546604, -2438468, -6205154, 5243082, 8301098, +-392453, 4691178, 9478993, -3669513, 13692893, 5667746, 4189204, 7042673, -3888019, 17009144, +2873333, -3802657, 11184632, -13724031, 4334696, 7634305, -3243774, -5965173, 15436112, 22123914, +-19987168, -3862249, -7067906, -7005629, 7931731, 6739878, -12575664, 6773701, 5531381, 4803921, +5789616, -11421392, 7997229, -1029182, 4694936, -3716757, 3206193, 63839856, 32560148, 64239288, +-59319404, 5129265, 30833570, -11959873, 35119948, 67781024, 37195492, 2161442, -18263812, -18833432, +3513820, 29375966, 31457414, 7147363, -78920, -46780784, -9642202, 46133856, 15262703, -12868259, +25479356, -21677236, -30323006, -8329552, -2024540, 35668628, 46585900, 41851236, 15857556, -16225313, +-24941948, -46271832, -46010376, 40074728, 16806744, 3284039, 61892628, 3749507, -18951544, -25327960, +-25733834, 12517682, 26443040, 21044802, 40598716, 2882997, 29212756, -1915555, -5250598, 14798847, +27047556, 19786378, 17188996, -15428059, -5844377, -12168716, -27435178, -21980568, -39983460, -13383118, +10719701, -6564321, 29088740, 34969088, -569620, 331786, -14317273, -25561498, 5273683, 33790120, +-1946694, 18702972, 8203388, -2452963, -10584947, -4866735, 3092913, 11798812, 9199283, -9029095, +-18913962, -23381266, -21939766, -8500277, 8915815, -2281702, -13786308, -7052873, -9564892, -8085813, +4529580, -1219234, 12958453, 18538690, 4167729, -22535156, -11579769, -13498545, -3058017, 15210627, +3679713, 3745212, -18423262, -17454210, -19886236, -10210748, 17382270, 11839614, 15007689, 8062191, +-7240241, -8974871, 6381248, 5761699, -1534377, 3908420, -7587597, -6115497, 4542465, 3183108, +6285148, -3657702, -7537131, -3480534, -5768678, -1090385, -33910916, -66134444, 26095148, 107843408, +109653200, 92815320, 67252744, -41511932, -47341276, -51159504, -68038184, -104120208, -83875880, -72855528, +33817500, 78255912, 58200564, 125858112, 97275640, 50713900, -18721762, -33934536, -84619984, -66070556, +-65416648, -13388487, -40088152, -32566052, 9695889, 17690970, 35639640, 35762584, 49079128, 48673792, +62807992, 36617280, 16100759, -9165460, -10624138, -27668180, -41843720, -50535660, -61763240, -40470940, +-75856104, -50557672, -37941740, 37927784, 71951440, 77581072, 53672060, 36550172, 57283052, 43812424, +54974508, 43184824, 15129022, -20452634, -96331288, -68146632, -69452304, -107778984, -67620504, -58540404, +-56804164, 20594906, 57084948, 90651728, 74645992, 106577464, 95655368, 93523448, 66672388, -36457828, +-32996086, -74947176, -99089192, -109189880, -89558120, -43022688, -12247099, -22676890, 29482266, 78036336, +55006720, 37131604, 62583044, 52578452, 18759344, -12465069, -12555800, -4138738, -15393163, -42106248, +-26477400, -30112016, -16299401, -13556527, -31383326, -11688753, 10714870, -10591389, 34605088, 45687176, +50202264, 53104048, 3228742, 15780247, 15439334, -4645007, -72967736, -58252640, -45535780, -40685152, +-32058172, -30416958, 33442226, 49999324, 54350664, 52010980, 42861628, 29352880, 26404386, -529355, +-7988639, -42276972, -57024280, -51077900, -42633456, -27248346, -17794586, 1903207, 25476672, 51852068, +38766376, 24608016, 17751100, 4735739, -548682, -166430, -10603201, -13758928, -11458436, -13467407, +2892124, -5226975, -18506478, 2125472, 8365523, -3543885, -4925254, -4093104, 1682017, 3077344, +-4189204, 799938, 4656282, 1343251, 504659, 18254, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -3324305, -3346317, 2889976, 6421513, -8774618, 1864016, 5806796, 10568304, -1130650, 5942088, -237834, -5392332, 1321776, 8284992, -155693, -2724620, 5610838, 7937637, 7559680, 4425427, 1229971, --3105261, -2411624, 716186, 3863860, -1990181, 1802813, 441308, 4391067, -2152852, -108985, -1056562, -5212480, -3074123, -1523103, -5494337, 1320703, -1579474, -31675, -782221, -4527433, -3495567, 5431523, -1161789, 450972, 455803, -848793, 5704254, -6957310, -66035, 2902861, -727460, 938450, -1722282, -5759015, -1524177, 2264522, 2608119, 2971581, -574989, 120259, --12885, 1189706, -1033477, 6068252, 115964, -512712, -4019016, 556198, -2894808, -2169495, -2330557, 2620467, 6179384, 241055, 6074158, 717796, 605590, 433792, -3300146, 221728, --1212791, -1626719, 602369, 1984275, -1300301, 814433, -1343788, 1580011, -1688996, -482110, --898722, 923955, -583579, 864362, -791348, 1014686, 1678795, 892279, -917512, -205622, --504122, -401579, 432181, 395674, 6939594, 11257109, 1504312, 5604396, -2035815, 3329137, -4342749, -1335735, -3485903, 5902896, 10177462, -1995549, 1127966, 3939022, -4875862, 3034931, -4343823, -8898635, 2501282, 870268, -2004139, 2147, -9269076, 378494, 2594160, -4404489, -813359, 156766, 5934571, 4241817, -2230699, -632971, -565862, -6308233, -4244502, 695248, -2546916, 571768, 2829847, -4167192, 627602, 2083059, 428423, -3857954, -2827699, -854162, -1341104, 3123515, 3227668, 2155537, 3768297, 3691525, -4144107, -1266479, 165893, 5246840, --800475, 3765076, -2477659, -2560874, -795106, -4712653, -2177549, 967441, 2748779, -4022237, -3936338, -1112933, -1177895, -784905, -1597191, -2033667, 812286, 3064459, 1140314, 5114769, --7095823, -5717675, -1261647, 2120640, -77846, -1165010, 1082332, 160524, 1313186, 2159295, -3612604, 66035, -215285, 857383, -337692, -51003, 555125, -1649804, -889058, -3424163, -1351304, 6541772, 9217000, 5365488, -2332704, 3974455, -2429878, -1613297, -7904888, -6270653, -2834142, 6054830, 5900748, 6172405, 1364189, 344134, 3806415, -5076652, 5108864, 4157528, -373125, 3572876, 9138080, 6234145, 1734630, -6562173, 181999, 2221035, 1409286, 1095754, --7211250, 1735704, 1316408, 4831302, 5311801, -1661079, 3408057, -2580202, -2885144, 3884798, -2188823, -6884296, -6534256, -2848637, -3675955, -2719251, -2922188, -7955353, -7217693, -643708, -2592013, -37581, -770947, -5358509, 704912, 6378027, -1797981, -2004676, 2389076, -5369, -4596689, 2323041, 2343442, -2965138, -3679713, 6847252, 3118683, -2731599, 4495220, -593779, -3501472, -2965138, 541703, 5055714, -1930051, -1631014, 3628711, 451508, 1437740, 2172717, --2525441, 2837363, -1194001, 2325188, 2323577, 1811939, -1625645, 594853, -817654, -1366337, --1768990, 101469, 193274, 1144609, 963146, 268435, -106837, 898722, 261993, 625992, --12756590, -7500624, -2357400, 2422362, -5263483, 1607928, -1446867, 3673808, -899796, -7135015, --5687074, 4942971, 4032974, 10218801, 9011915, -1368484, 6517076, -9818832, -1608465, 7635915, -2289755, 1772211, -1017370, -3207804, -1507534, 1056025, -887985, -298500, 3852049, -4816269, -1061931, 1748589, -128312, 3038153, -3322694, -2714956, 1735704, -2112587, 2704219, -5385889, -878858, -3237332, -1286343, -3605625, -2710124, -4095788, -6081674, 3713536, -54761, 6334540, --5945846, -5083631, -58519, 1207423, -713501, -1226750, 401579, 3811247, 1811403, 813359, --2626909, -2526515, -1446330, -4746476, 733903, -1238024, 535797, -234613, -5119064, -440234, --425202, -5412196, 127775, -1031866, 605590, -924492, -6034966, 528818, 2679523, -1209570, -3949223, 1083406, -2148558, 1657857, 4144107, 1355599, 694711, 926639, -908386, 500901, -3235721, -272730, -543313, 1182190, 1313723, 499290, 1053878, 212601, 426276, -2201708, -214748, -194884, -1097364, -806380, -816044, -1134945, 141734, -936840, 4430796, -6810745, -2770254, -7617125, -1333587, 414464, -5653788, 5357435, 4054986, -11330124, -1152662, 1947231, --1053341, -4938139, -6669548, 1409286, -3359201, -5513665, -2740189, 3321084, 2911988, 8093866, -10481331, -880468, 9365176, -5717139, 3679176, 4112968, -840740, 4051228, -2314451, 117038, --621160, -1901060, -1013075, -2132451, 7795903, -409096, -5833103, -1362042, 3896609, 2458869, -3112241, 651761, -2736431, 5733245, 11608223, 752156, 1154809, 708133, -883690, 1867237, --800475, 6668474, -5099737, 6379100, 4383551, -4013110, 2048163, 4161823, 2810519, -4816269, --5264556, -10335302, -1717987, -958315, 1289027, 4023311, -1000191, 2625836, -907312, -2734284, --2769717, 5365488, -1248225, 5689221, -8398272, -3287798, 1895154, -5293547, 1350767, 5720360, -512175, -27917, 389231, 1229971, 753767, -3204046, -1060857, -512712, 436476, -560493, -1014686, 1474248, 721555, -921807, -2195802, 2375654, 877784, 929860, 582505, 695785, -134755, 67646, -1082332, 993748, 425739, 391916, 130997, 1042066, 652835, 1247151, --1485522, -874563, -1737314, -1570884, -464393, 1247151, -1035087, 117038, 3010235, 1332514, -153008, 4044786, 11738682, 13835700, -3592203, -321586, 2917357, -2094870, 8964134, 8744017, --5505611, 8571144, 6741488, 2592550, 3910568, 3490198, 1788317, -757525, 625992, 1145683, --4729833, -5796059, 1520418, -1627793, -70867, 993211, -5116380, 5155035, 10367514, -332860, --6220187, 10126996, 1232119, 300111, 3978750, -1792075, -3041374, 1462436, -3814468, 1508070, -10349261, 4420595, -78920, 3685082, 5622649, 14593225, -2393908, 6286222, -1259499, -6371047, -4168803, 358093, -2119030, 2851858, 8950712, 2275796, 1584306, -156766, 3579318, 12905840, -5790153, 1588064, 1302986, 3374234, -3739306, 6584722, -1716913, -12834436, 1549410, -1408749, -7701950, 9046275, 3919158, -3923453, -3541201, -3354370, -468688, 2783139, 252329, 1868311, -1290638, 1958505, 5777805, 2456721, -4610648, -2046552, 620086, 1547262, 277562, -171799, -154082, -2581275, 2648921, 567473, 520228, 226023, 518617, 180389, 1974074, -882616, -1431298, -1526861, -455803, -2371359, 434865, -958315, -155156, 773094, -15583752, -1796907, --6591164, -7866233, -2035815, -5622112, 304406, 4756677, -7298223, 7558069, -16190416, 2263448, --4765266, -8690866, -11567958, 12070469, 6088116, 735513, -10245108, -6771553, 3881577, -13401909, --9298067, 3125663, 2878165, 13521631, -1719061, 1085016, 10094247, -6023692, 9916543, 3343095, -3661460, -1968706, -5902896, -739808, 8266202, -4478041, 744103, 10284299, -3724811, -3085934, --4952098, -6174016, -5257577, -4015258, -8294119, -1058173, 2551748, -2893734, 1880659, -2768107, --4221953, 5769215, -7399155, 4493073, -6282464, -8010114, 433255, 6534793, 474594, -2005213, -2652142, -5350456, -2636573, -7483981, -13248363, -6306086, 1938641, -4053376, 15234249, 6019934, --10553272, -5363878, -1525250, -3841312, 4924180, 10280541, 6813966, -5000416, 4813048, -5925445, -3604551, 521839, 4825396, -5245229, -1192927, 456340, -2256469, -4472135, -3688840, 690416, --195958, -1040993, 2393908, 899259, 414464, -1475858, 1452773, -286152, -1098975, -3243237, --22012, -1660542, 336081, 1459215, -1018444, -3599183, -367220, -1517197, 16913044, 11003169, -11574400, -3393024, -16451872, -1330903, -8431558, 2089502, 3640522, 8825084, -4163434, 3855270, --6772090, 1127966, -5974837, -15316390, -8260296, 5823439, -5594195, -12142946, -11408507, -10619307, --16559783, 2032056, -5810017, -12619688, -11347304, 1962800, 15914464, -2156074, -2673080, -5352603, --9673877, 1967632, -3858491, 1031866, -12064026, 743566, -12565464, 1726577, -1033477, 6719477, -5214627, 5588826, 2874944, -500901, 4651450, -3105798, 9160628, 2554432, 4633733, 2759517, --3005940, 3241090, 9232569, -1230508, 5155572, -1335735, 14525043, 1847910, 5456219, 687732, --8148090, -6256157, 286689, -2909840, 1879048, -2129767, 4816269, 4272419, 5599027, -2593624, -3195993, -11165841, 5936719, 16276852, -7852811, -1672890, 4338991, -9401147, -633508, 5854578, --3674345, -598074, -1938104, 5092221, -5228049, -1261647, 1433982, -2938831, 1434519, -1026497, -2171106, -2718714, -2687039, 3000572, -1338956, -2984466, 2123861, -1182190, 83752, -4211216, -3235721, 1072668, -675921, -700080, 1854352, 649077, 1799054, 1293322, 341450, -1802813, --3153580, -927176, -8148090, -23716272, -3899294, -8296803, -12445205, 6684043, -23773718, -3117073, --8443369, -4640712, 6891812, -7607461, 10084583, 8645769, 1402307, 7792682, 712428, 4103841, --6184216, -10980084, -12034498, -6777459, -11027865, 8575976, 11299522, -520228, -5927055, 3221762, -3269544, -4190278, 846109, -18855980, -9936944, 8715026, -4782446, 216896, 8603356, -853625, -5327907, 4507568, -2435247, 5163088, -47245, -10071161, 11183021, -7891466, 551903, 577136, --6149320, 4065187, 6672769, -3966939, 7621957, 817118, -580894, -6994354, 8608725, -85899, --6951405, -2343979, -13938779, -5889474, -7952669, -1044214, 9605694, 2733747, -900333, 124554, --9016747, 1996623, 6956237, -9141838, 535797, 13914083, -5729487, 1336272, 1069447, -9947144, --5952825, 6313602, 5326833, -16164646, 3263102, 12036109, -47782, 1410897, 84289, 2879776, --908386, 7588671, -1731409, -343061, 988379, 1436667, -3441880, 850404, 2696166, 802085, -4540318, 1639067, -83215, -1686312, -3551938, -1053878, 1708323, -2230699, 1616518, -2286533, --50466, 3115462, 1699733, -2231236, -2983392, 136902, 118112, 6656126, -2676302, 528818, -3671123, 1459752, 3586835, 42191612, 9388799, -5535139, -8465381, -829466, -2677375, 7467875, --1666984, 6309844, 11965242, -4841502, 601832, -7935489, -5422396, 2527588, -1306744, 6130529, --11828877, -6953015, 5583458, 11833172, 7826504, -391379, 2808909, -2930242, -7123204, 5123359, -9266929, 9690520, 11727945, -9741523, -2300492, -5601174, -12046310, -1553168, 626528, -2671470, -5538361, 7273527, -15569, 3572876, -2160369, -12834436, -6964827, -17154636, -17370458, -5106179, -5822902, -2576444, -7691213, 14524506, 5511517, -630823, -13650480, -662499, -4200478, -9804873, -128849, -4507568, -6320045, -13563507, -1725503, -5036386, -14859513, -44560, 11385958, -7684770, --3613678, 4159676, -6382859, 2502355, -6323266, 9222369, -2950106, -8995809, -13881871, -22871238, -4530654, 3815542, 17471390, 6980933, 6069863, -127238, 5326833, -4150012, 5645198, -561567, -2014340, 2750390, 6694244, 3004330, 310311, -1262184, -287226, 2593624, 1693291, 6873559, -5476620, 3587372, 1232656, -1452236, -3602404, 1952600, 4542465, 357019, 345208, -885837, --3173444, -601832, -415538, -1595044, -1085553, -2541547, 2151242, 3008625, -2787434, -2956548, --87510, -425202, 1678795, 9491878, -33430952, -19048716, 17723182, -4604742, 1139777, -9182640, -7733089, -3167539, -12898324, 6202470, 17916992, 2303713, -15675020, 4428648, -3411815, -3580392, -10317048, 10704132, -1440962, -2169495, 22561464, 5048734, -3241090, -13856638, 6142877, -19876034, --16361678, -15073725, 6123013, -2844342, -1613297, 12970264, 5173825, -13156022, -10997801, 2873870, -12805982, 4392678, -1457068, 737661, 8540006, -6157910, -13899588, 18154290, -5327370, 1893007, -7331509, 1141388, 2519535, 18669150, 329639, 11895449, 542777, -12495670, 1815697, 2679523, --2586107, 2391760, 8497593, -6316287, -1915019, 2177549, -24712704, 6562173, 5058398, -138513, -5935108, 4625680, -9168145, 4349728, 33949568, 14594299, 8389145, 2462090, 8246874, -26099980, --12371116, 13208098, 529355, -121870, -10014253, 8825621, 10684268, 8944806, 1490891, 1873143, --3584687, 141197, -6211060, -2259690, 4900558, -1109712, -3133716, 2543695, 197032, 2440078, --3624953, -1541356, 1210644, -667867, 2468533, -4340065, -1504849, 3074123, -3465502, 2483028, -894964, 308164, 83752, 15032, -2814814, 1383516, 2571612, -1316408, -1319629, -3020973, -1297617, -205085, -22415972, 15753940, 16830366, 5448703, 9277666, -6209449, 26872536, -3142306, -10241350, 7035157, -12416750, -5064840, -5738077, 15647103, -9306120, -2866891, 9826348, 8304856, --9147207, -2449205, -26415660, 4966056, -2944200, -7720204, 2268817, 746251, 1932198, 2459943, -8921184, 398358, 9773735, 1198833, 4755066, -2495376, -8523363, -9035537, 17041356, -6042482, --12371116, -10364293, -4732517, -5686537, 7383049, 4626754, 5681705, 7579544, 2244121, -9314710, -5339718, -15212237, -5009006, -13288092, 9148280, -16045998, -11560978, -3378529, -5435281, 4838281, -10798622, -8562017, 10193568, 16848082, 8329552, 16231218, -6812892, 21776558, 1970853, 18454400, -10427644, 2327872, -9839233, -24668682, -16704202, -13536126, -7722351, -7572564, -2434710, -11469173, -8658654, 14479945, -5568425, -11042361, -10111964, -7960722, -15040439, 9499931, 6838662, -3962107, --3882114, -5805722, 765041, -3275986, 8095477, 53150, 2072322, -4288525, -3710852, -6059125, --1125281, -7263864, -7006703, 7209103, -507880, 906238, 177167, 2661269, -2865280, -242666, --4304094, 172872, 25233, -160524, 2216203, 262530, -3522410, -2287070, -2527588, 734439, --3784940, -4095788, -5204964, 1433982, 12482249, 6362994, -7102266, 21017422, 2376728, -20511690, -25618406, 1719598, -10910291, 9044127, -21038360, -4024921, -13393856, -4179540, -2369748, -4107063, --9572945, 2687039, -18175228, -7027104, -6550899, -24526410, 2984466, -17785460, -12640626, -19953882, -4010426, -15053860, -4540318, -4984310, 169651, 7597261, -6113886, 10692858, 560493, 14187351, --3294777, 12341052, 15551540, -18648212, -270046, 5011153, 11419781, 452582, 13729937, 4602058, -13239237, -270046, -10096931, -6347425, -960999, 8568997, -1959042, -3929895, -847182, 15862925, -10022306, -3761318, -13054553, 4388383, 7191923, 5113159, 14071923, -18821084, -13915694, -3970697, -1341104, -5293011, 165893, -5397164, -11758547, 33042794, -16301548, -18927384, 14150843, 8150238, -12295954, 3776887, 4531728, 2549600, 7196755, -6776922, 18992882, -3310346, 4672388, -3660386, -2558727, 1146756, -1021129, 12105902, 1534377, 1066763, -11907797, 5408975, 1803886, -1743220, --9693741, -987306, -1989107, 264141, -3073049, 8723079, 2036351, 2443300, -6999723, 4802311, --3315715, 983548, 4223564, -167504, -2055679, -2247342, -6226092, 3640522, 6405944, -3031173, --686658, -2247879, 969589, -3617436, -8388071, -2535105, -263604, -5751498, 5989869, -510027, --794032, 2026688, -5635534, -6391448, 2623688, -4400731, -5602785, 16653736, 12264279, 19691888, --6556268, -4876399, -27045410, 31403190, 14394046, -41827612, -22386444, 13401372, 18618146, 18728742, --12031277, -9767293, 22662394, 5373541, 5201206, 15709917, 12700218, -23130010, 7087233, 9743670, --1731946, 10911901, 2099165, -2975339, 2261837, -7534983, 38612292, 10104984, 5029944, -1067299, --4774930, -2602213, -21901648, 4192425, 6437082, -5164698, -7180649, -35464080, -16939352, 7412577, -6182606, -11646341, -11381663, -1617592, -16879758, 6971269, 6267431, -2469606, 7051263, 13966697, -702764, -742493, -4477504, -7487739, -2441152, 1238024, -26132192, -3496640, 6140193, 15916612, --28283434, 6264747, 10139881, -2244657, -13314935, -12041478, 21358872, 21089900, -3087008, -13200582, --25006374, 5244692, 10030896, 5228586, 417149, -27287000, 11503533, 24794310, -8400956, 2778844, -7798050, -10235444, -16289200, -8638790, 2486249, -5080947, -1293322, -7707856, -6616934, -5638755, --2376728, -2239826, 3317862, -628676, -496606, -7030325, 2886218, -3322157, 1504849, 16106, -2263448, 4203163, 4944044, -7854422, 3140695, -6080600, -10166188, -5383742, 1460289, -1072668, -4443681, -1032403, 2894271, 5956046, 301721, -325881, -5270462, -2991982, 7950522, 3981972, --3326452, -2085744, 12441983, -9162776, 3395172, -7635915, -6732898, 1169305, 8434779, 16833588, --31005906, -40464496, -28118078, -36200668, 31436476, -20968568, 12662100, -3545496, -25420838, 4548907, --6891812, -9450539, -33003602, -30245160, -22572738, -8619462, 1193464, -17500382, -5052492, 4622996, -14236206, 1127429, -8825621, 35970, -9438191, 13643500, -17140140, 23721104, 20461224, -4887673, --6480569, -28125594, -16380468, -17103096, 2084133, 3784940, -4557497, 22990960, 6577743, 18638548, -3702262, -2190433, -8424578, 16770774, 11608223, 5269925, -16804596, 9026948, -28439126, -3167539, --2989297, -18888730, -3076270, 249108, 21809308, 14443438, 452582, 10088878, -360777, -21446920, -10976326, 3056943, 17947594, -10116795, -20614770, 12345883, -37077916, -8491687, 13182328, -5548024, --5865852, 9119826, -2374580, -7291781, 6921877, -3066607, -23772644, -20914344, -3417183, 9836549, -15895674, 22328998, 22383222, -9431211, -7541963, 4436165, 8149164, 7345468, 3105261, -9880572, -8781061, 213138, -1788854, 1176821, 5470178, 9111236, -2585034, 1585917, 8628052, -1926830, --105764, -8580808, 4385699, -1818919, -529355, 7195681, -1323387, -3112241, 3274376, -9751723, --3557844, 10072235, 2942590, 3323768, -3449933, -2244121, -1391033, -7745974, -944356, -4272419, -6039261, -16936666, -40449464, -3780645, -25750476, 1571958, -18962818, 17254494, -13540958, -1455457, -3408057, 6429566, 20827908, 6963753, -9412958, 22462678, 7016903, -38289096, 6332930, -22985054, --1603097, 4346507, -3174518, 18862960, -5566815, 3404835, 4816806, 1634772, -12236899, 19142132, --11063836, -1087701, -22388054, -53150, 3842922, -3584150, -7850127, -10327786, -11676942, 29027000, -1204738, 15008763, -25846040, 2876018, -284542, 8838506, 15491410, -17853642, 31659814, 45471356, --2039573, 4333622, -15854335, 7221988, 10635413, -8864276, 2307471, 8498130, 17706540, -657130, -1077500, -5564667, -15335181, -23180476, 11798812, -17411798, -7284265, -11443403, 5046050, 15444702, -13977971, -2872260, 5268315, -31452046, 20735028, -3979287, 4534412, -9330280, 20257750, -28254980, -33574296, 24274082, 27975270, -11441793, -649614, -27713814, -14928769, -10410464, 9074192, 7492571, --22807350, -16913044, 645319, -6002754, -16642461, -257698, -11519639, -13892609, -5119064, -2274722, -1051730, -9273908, 1612223, 2807298, 13817984, 12122545, -1932735, 11406359, -5755793, -14835891, --8075076, -3401614, -7361037, -1411971, -5477694, 7943005, 2476049, 31513786, 4188667, -11283953, --3785477, 2517388, -16654809, -10732586, 3936875, 307090, -4334696, 1289564, -14496, -18547816, --1931662, 11759620, -8990977, 50797116, 14543296, 36935108, 11821897, -38556460, 15507516, 10678899, --12800076, 2581275, 24916180, 1061394, 23849416, 21053392, -24706262, 13572097, -24716464, -16770774, --2314987, 49706192, 15328201, -22518514, 21242372, 13600014, -27356794, -12149389, -1838783, 27788438, -4149475, -25546466, -14297409, -863288, -6942278, 15394773, 22345642, -8135742, 19659676, -12709345, --17064978, -661425, 40460740, 3688840, -23167054, 13131326, -1046898, -2382096, 11358578, -26417270, --22718766, -21690658, 15887621, -14231911, 5157719, 6665789, 24215026, 11879343, 24893630, 2570538, --1021129, 20182588, 37248104, 22028350, -36734320, 685047, 3634079, -6311455, 7157026, 10125385, --28351080, -4365835, 5690832, 4837744, -33776696, -32161252, -17918066, -19577534, 33670396, 12338904, -1630477, 14731201, -27341762, 11220602, 7667591, 4912369, -2346663, -6378564, 23295366, 13844290, --9205189, 3856344, -6919193, 15037217, -4283693, 942208, 3273302, 2120640, 11389180, -1921998, --18252000, -909459, 3539590, 4670240, 9540196, -2709588, 949188, 6908992, -14116484, -8591545, --1210644, -26045756, -3855270, 6995428, -1798518, 2619930, 14930917, -2307471, -10205379, 2007897, -3716757, 9413495, 11613055, -11294690, -6705518, -964757, -9278203, -6369974, -17904108, -21727702, -6105296, 82678, -9534827, -8381629, -9730248, -19330574, 14476187, -38626788, 27954332, 31219044, -8655433, 33997352, -34842924, -17059074, -9424232, -50085224, 28221156, 2811593, 17473538, 22952842, -22468584, 1716913, -696322, 22816476, -3604015, -27134530, -28142236, 17022030, -31798328, 31022548, --8899172, 6783901, 30764850, 27713814, -13948980, 42212548, -24475944, 2710661, -25450902, 4090420, --8693014, 16601659, 5659693, -18090940, 16212428, 24601572, 36191004, -20950314, 7748121, 22181358, --30511984, 1374926, -12258374, -44168368, -18981608, 11747272, -24233816, 8597451, -20343650, -528818, -29726006, -14143327, 12595528, 34203508, 24461450, 9121974, 45536316, -70967352, -13362717, 23635206, --2729989, 13754096, -21962316, -38376068, 46562276, -717796, -23455890, 9998684, 29465624, 73065448, -27689118, -55350316, -30186104, 18786186, 20447266, 8812199, -38626788, -3425237, 8465917, -11996381, -26074746, 9269613, 16641925, 19753628, 14859513, -10208064, 11471321, -30752502, 4404489, 16320876, --1989107, -16358457, 9491878, -10022306, 16251619, 17901424, -7722888, -15073725, -4064650, 33111514, --5975374, -4000762, -13048648, 14905147, -12960064, -8087961, 9558987, -6328098, 31243740, -2524367, --7798050, 31323196, -2864743, 7196218, 19217294, -1628866, -1703491, 1674500, 2803540, -14984067, -6666326, 620086, -21532818, 14392972, -6725382, 27464168, -15079093, 8664560, 2580739, 37442988, --32917704, -2981244, -15734613, -19508278, 30005178, -11678553, 39397200, -3911105, -30403000, 47262356, -68317896, -9756018, -21829172, -33013802, 7836705, 36290864, 7128035, -7660074, -22656490, 5366025, -5332202, -5029407, 5580773, -3249143, -11147588, -11377368, 10439455, 14894410, -1171989, 20138028, --19471234, 41326712, 31128850, 17928268, -1538672, 2418067, 5855114, -21929030, -19192062, -21261162, --11191074, -5862094, 13209172, 11586748, 22399866, -10894721, -2721399, -9664750, 25485262, 49776524, --11815455, -32129040, -20691004, -1378685, -43453256, 33669324, -59005872, 16925930, 24930674, 25577068, --25752624, 5902896, 25959856, -59794536, -28281822, 12147778, -6379100, -30027726, -26471494, -3541201, --13903346, 44267692, 18973554, -16394964, -15033996, -24790014, 67938864, 14469745, 35458176, -2707440, -10303090, 12692165, 15174119, -22420266, -2927557, 28063854, 19388020, 11457899, -9416179, -12322798, --83752, 8593693, 12937515, 8612483, -17641042, 2266669, 86436, 4293894, 12542378, 12414066, --18478024, 8276402, -11432666, -14186814, 1345935, 14058502, 5723581, -8988830, 1854889, -1597728, --2753074, -7771744, 27026618, -8442295, -62814, -16681116, 3672734, -6467147, 17758080, 5313412, --3992709, -10077604, 10020159, 7922067, -12671227, 312459, -20527260, -8594766, 4628364, 7771207, -11290932, -758599, -25681220, 7734699, 39410084, 1304060, -13455059, 33083596, 23506892, -6737193, --21288006, -31996432, 6028524, 63225676, 13766981, 32468342, -2951180, 2930778, -2666638, -7316477, --118112, 3002182, 15167140, 5157719, -12389370, 10612327, -10864120, -11700565, -13492640, 440771, -12524662, 2856690, 9980430, 10976863, 8627516, -8766028, -15822123, 5078799, -11018739, -27027156, --8211441, 6272800, -9647033, 31826782, -32912872, 26757110, -8640937, 317291, 39217884, -6064494, --1286880, 51604568, -8122320, -20834350, 3562675, -17834852, -4304094, -16831976, 57111252, -16100222, -13591424, -13657996, -6426345, -7738994, 9270150, -14310294, -35415228, 15640660, -4301410, -38873212, -20132122, -10094784, 21430276, 49104896, -24826522, -401043, -2806224, -7118909, -26699128, -4475356, -23887534, 9840307, 14540075, -22091164, 6294275, 4093641, -21790516, -5698885, 4476967, 11206107, -13475997, 1294933, 2320356, 9160628, -2469069, -10526428, 15226196, -5972152, -5038534, 14313515, -1584306, -3736085, 20746302, -1241246, -1937030, 344134, 6540699, -6160057, 10295037, -8046085, --4464619, -6322729, 5185100, -6979, -1130650, 3228742, 9426916, -11468100, 2163053, -1395864, -6658273, 2258616, -2609730, 12181064, -7688529, 6649683, -2441152, 3722126, 459562, 9160628, --13980119, 40265, 65739308, 33405182, 68971272, -38569880, -10020696, 22825604, -21573084, 16539919, -70950176, 16891570, 10260677, -18645526, -17644800, 20414516, -10750840, 28834262, -4720169, -6471979, --8341900, -40686764, 9823127, 49148920, -25905632, 29765198, 25873420, -16495359, -4999342, 20518132, --32588064, 16372952, -2304787, 24693914, 8329016, -20277614, -6564858, -40904732, -21032454, 19338628, -14471892, 31982474, 49737868, 5417028, 793495, -42960948, -26312044, -25612500, -21176874, 11380590, --17568564, -4925254, -4034048, 12998182, -32895154, -5214091, 17035988, 8889509, 27123256, -3536906, --12991739, 27073326, -4890357, 16629040, -20780662, -12451647, -3220152, -6851547, 13226889, 19717122, -27740656, 7923141, 2277943, -19082002, -5405753, -9756555, 23224498, 333934, 34809636, 6128382, -26214332, -25442312, -9165460, -111669, -646393, 19059454, -3044595, -9381282, -5163625, 4725001, -1289027, 4995584, 8752070, 7907035, -4857608, -5631239, 326418, -3313031, 7368554, 7954280, -1814087, -6578816, 245887, -8642011, -3682935, -1868848, 14921790, 5395016, -2004139, 3926137, --10071698, -11809013, -8062191, 3770445, 8157217, -7031935, -759672, 138513, 6062347, 3417720, --1004486, 6538551, 953483, -329639, -6519761, 3097745, 1813550, -2632815, -18079664, -67524936, -1752347, 108659992, 97988608, 92165168, 39050916, -39142184, -54268524, -53801444, -48118668, -88320096, --63079648, -61475476, 47531328, 73056856, 59576028, 95081984, 79076792, 16786880, -3704946, -34017752, --66315904, -39555040, -69683160, -37821484, -23352810, 384400, -9350681, 17483738, 29851634, 50814832, -31916976, 53389664, 40582608, 42422464, 3244311, -34907348, -15963857, 1229434, -38211788, -50378892, --65593816, -64403572, -45761264, -6416681, 31907848, 12654047, 46452220, 32930588, 52988084, 47267188, -51376936, 59711320, 32040456, -4565014, -9720585, -38954280, -31981400, -105214352, -84272088, -67448704, --52822728, 6162741, -23112292, 1515050, 71785008, 88787712, 121346248, 76819784, 46072116, 31439160, -7233262, -46508052, -42750492, -64845952, -83967144, -71009232, -66367984, -31074088, 4648765, 33590404, -55068460, 54523000, 46261092, 29273960, 31002684, 13387950, 8255464, -1484448, -25905096, -22432614, --20644298, -22826678, -12303471, -25514254, -18409840, 6337224, 2033130, -14825690, 7912941, 21053930, -11791833, 24020142, 37248640, 38939784, 17005386, -24040006, -10578504, -3348464, -49256832, -51750060, --45331232, -18820010, 13822279, 22193706, 18297098, 31113816, 34957276, 43404404, 28573880, 17772038, --6861747, -29052770, -29781840, -32909114, -44574244, -31455266, -17709760, 15184857, 23820426, 15628312, -9210020, 28147068, 18712636, 11580306, 2381559, -4144107, -9283572, 970663, -11103027, -12775917, --5059472, 4378719, -7834021, -5544803, 814970, 5854578, 321586, -2796561, -4303021, 4425964, --463320, -1953673, -4393752, 1906429, 1319629, 2702071, -1252520, 1613297, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +3346317, 2889976, 6421513, -8774618, 1864016, 5806796, 10568304, -1130650, 5942088, -237834, +5392332, 1321776, 8284992, -155693, -2724620, 5610838, 7937637, 7559680, 4425427, 1229971, +-3105261, -2411624, 716186, 3863860, -1990181, 1802813, 441308, 4391067, -2152852, -108985, +1056562, -5212480, -3074123, -1523103, -5494337, 1320703, -1579474, -31675, -782221, -4527433, +3495567, 5431523, -1161789, 450972, 455803, -848793, 5704254, -6957310, -66035, 2902861, +727460, 938450, -1722282, -5759015, -1524177, 2264522, 2608119, 2971581, -574989, 120259, +-12885, 1189706, -1033477, 6068252, 115964, -512712, -4019016, 556198, -2894808, -2169495, +2330557, 2620467, 6179384, 241055, 6074158, 717796, 605590, 433792, -3300146, 221728, +-1212791, -1626719, 602369, 1984275, -1300301, 814433, -1343788, 1580011, -1688996, -482110, +-898722, 923955, -583579, 864362, -791348, 1014686, 1678795, 892279, -917512, -205622, +-504122, -401579, 432181, 395674, 6939594, 11257109, 1504312, 5604396, -2035815, 3329137, +4342749, -1335735, -3485903, 5902896, 10177462, -1995549, 1127966, 3939022, -4875862, 3034931, +4343823, -8898635, 2501282, 870268, -2004139, 2147, -9269076, 378494, 2594160, -4404489, +813359, 156766, 5934571, 4241817, -2230699, -632971, -565862, -6308233, -4244502, 695248, +2546916, 571768, 2829847, -4167192, 627602, 2083059, 428423, -3857954, -2827699, -854162, +1341104, 3123515, 3227668, 2155537, 3768297, 3691525, -4144107, -1266479, 165893, 5246840, +-800475, 3765076, -2477659, -2560874, -795106, -4712653, -2177549, 967441, 2748779, -4022237, +3936338, -1112933, -1177895, -784905, -1597191, -2033667, 812286, 3064459, 1140314, 5114769, +-7095823, -5717675, -1261647, 2120640, -77846, -1165010, 1082332, 160524, 1313186, 2159295, +3612604, 66035, -215285, 857383, -337692, -51003, 555125, -1649804, -889058, -3424163, +1351304, 6541772, 9217000, 5365488, -2332704, 3974455, -2429878, -1613297, -7904888, -6270653, +2834142, 6054830, 5900748, 6172405, 1364189, 344134, 3806415, -5076652, 5108864, 4157528, +373125, 3572876, 9138080, 6234145, 1734630, -6562173, 181999, 2221035, 1409286, 1095754, +-7211250, 1735704, 1316408, 4831302, 5311801, -1661079, 3408057, -2580202, -2885144, 3884798, +2188823, -6884296, -6534256, -2848637, -3675955, -2719251, -2922188, -7955353, -7217693, -643708, +2592013, -37581, -770947, -5358509, 704912, 6378027, -1797981, -2004676, 2389076, -5369, +4596689, 2323041, 2343442, -2965138, -3679713, 6847252, 3118683, -2731599, 4495220, -593779, +3501472, -2965138, 541703, 5055714, -1930051, -1631014, 3628711, 451508, 1437740, 2172717, +-2525441, 2837363, -1194001, 2325188, 2323577, 1811939, -1625645, 594853, -817654, -1366337, +-1768990, 101469, 193274, 1144609, 963146, 268435, -106837, 898722, 261993, 625992, +-12756590, -7500624, -2357400, 2422362, -5263483, 1607928, -1446867, 3673808, -899796, -7135015, +-5687074, 4942971, 4032974, 10218801, 9011915, -1368484, 6517076, -9818832, -1608465, 7635915, +2289755, 1772211, -1017370, -3207804, -1507534, 1056025, -887985, -298500, 3852049, -4816269, +1061931, 1748589, -128312, 3038153, -3322694, -2714956, 1735704, -2112587, 2704219, -5385889, +878858, -3237332, -1286343, -3605625, -2710124, -4095788, -6081674, 3713536, -54761, 6334540, +-5945846, -5083631, -58519, 1207423, -713501, -1226750, 401579, 3811247, 1811403, 813359, +-2626909, -2526515, -1446330, -4746476, 733903, -1238024, 535797, -234613, -5119064, -440234, +-425202, -5412196, 127775, -1031866, 605590, -924492, -6034966, 528818, 2679523, -1209570, +3949223, 1083406, -2148558, 1657857, 4144107, 1355599, 694711, 926639, -908386, 500901, +3235721, -272730, -543313, 1182190, 1313723, 499290, 1053878, 212601, 426276, -2201708, +214748, -194884, -1097364, -806380, -816044, -1134945, 141734, -936840, 4430796, -6810745, +2770254, -7617125, -1333587, 414464, -5653788, 5357435, 4054986, -11330124, -1152662, 1947231, +-1053341, -4938139, -6669548, 1409286, -3359201, -5513665, -2740189, 3321084, 2911988, 8093866, +10481331, -880468, 9365176, -5717139, 3679176, 4112968, -840740, 4051228, -2314451, 117038, +-621160, -1901060, -1013075, -2132451, 7795903, -409096, -5833103, -1362042, 3896609, 2458869, +3112241, 651761, -2736431, 5733245, 11608223, 752156, 1154809, 708133, -883690, 1867237, +-800475, 6668474, -5099737, 6379100, 4383551, -4013110, 2048163, 4161823, 2810519, -4816269, +-5264556, -10335302, -1717987, -958315, 1289027, 4023311, -1000191, 2625836, -907312, -2734284, +-2769717, 5365488, -1248225, 5689221, -8398272, -3287798, 1895154, -5293547, 1350767, 5720360, +512175, -27917, 389231, 1229971, 753767, -3204046, -1060857, -512712, 436476, -560493, +1014686, 1474248, 721555, -921807, -2195802, 2375654, 877784, 929860, 582505, 695785, +134755, 67646, -1082332, 993748, 425739, 391916, 130997, 1042066, 652835, 1247151, +-1485522, -874563, -1737314, -1570884, -464393, 1247151, -1035087, 117038, 3010235, 1332514, +153008, 4044786, 11738682, 13835700, -3592203, -321586, 2917357, -2094870, 8964134, 8744017, +-5505611, 8571144, 6741488, 2592550, 3910568, 3490198, 1788317, -757525, 625992, 1145683, +-4729833, -5796059, 1520418, -1627793, -70867, 993211, -5116380, 5155035, 10367514, -332860, +-6220187, 10126996, 1232119, 300111, 3978750, -1792075, -3041374, 1462436, -3814468, 1508070, +10349261, 4420595, -78920, 3685082, 5622649, 14593225, -2393908, 6286222, -1259499, -6371047, +4168803, 358093, -2119030, 2851858, 8950712, 2275796, 1584306, -156766, 3579318, 12905840, +5790153, 1588064, 1302986, 3374234, -3739306, 6584722, -1716913, -12834436, 1549410, -1408749, +7701950, 9046275, 3919158, -3923453, -3541201, -3354370, -468688, 2783139, 252329, 1868311, +1290638, 1958505, 5777805, 2456721, -4610648, -2046552, 620086, 1547262, 277562, -171799, +154082, -2581275, 2648921, 567473, 520228, 226023, 518617, 180389, 1974074, -882616, +1431298, -1526861, -455803, -2371359, 434865, -958315, -155156, 773094, -15583752, -1796907, +-6591164, -7866233, -2035815, -5622112, 304406, 4756677, -7298223, 7558069, -16190416, 2263448, +-4765266, -8690866, -11567958, 12070469, 6088116, 735513, -10245108, -6771553, 3881577, -13401909, +-9298067, 3125663, 2878165, 13521631, -1719061, 1085016, 10094247, -6023692, 9916543, 3343095, +3661460, -1968706, -5902896, -739808, 8266202, -4478041, 744103, 10284299, -3724811, -3085934, +-4952098, -6174016, -5257577, -4015258, -8294119, -1058173, 2551748, -2893734, 1880659, -2768107, +-4221953, 5769215, -7399155, 4493073, -6282464, -8010114, 433255, 6534793, 474594, -2005213, +2652142, -5350456, -2636573, -7483981, -13248363, -6306086, 1938641, -4053376, 15234249, 6019934, +-10553272, -5363878, -1525250, -3841312, 4924180, 10280541, 6813966, -5000416, 4813048, -5925445, +3604551, 521839, 4825396, -5245229, -1192927, 456340, -2256469, -4472135, -3688840, 690416, +-195958, -1040993, 2393908, 899259, 414464, -1475858, 1452773, -286152, -1098975, -3243237, +-22012, -1660542, 336081, 1459215, -1018444, -3599183, -367220, -1517197, 16913044, 11003169, +11574400, -3393024, -16451872, -1330903, -8431558, 2089502, 3640522, 8825084, -4163434, 3855270, +-6772090, 1127966, -5974837, -15316390, -8260296, 5823439, -5594195, -12142946, -11408507, -10619307, +-16559783, 2032056, -5810017, -12619688, -11347304, 1962800, 15914464, -2156074, -2673080, -5352603, +-9673877, 1967632, -3858491, 1031866, -12064026, 743566, -12565464, 1726577, -1033477, 6719477, +5214627, 5588826, 2874944, -500901, 4651450, -3105798, 9160628, 2554432, 4633733, 2759517, +-3005940, 3241090, 9232569, -1230508, 5155572, -1335735, 14525043, 1847910, 5456219, 687732, +-8148090, -6256157, 286689, -2909840, 1879048, -2129767, 4816269, 4272419, 5599027, -2593624, +3195993, -11165841, 5936719, 16276852, -7852811, -1672890, 4338991, -9401147, -633508, 5854578, +-3674345, -598074, -1938104, 5092221, -5228049, -1261647, 1433982, -2938831, 1434519, -1026497, +2171106, -2718714, -2687039, 3000572, -1338956, -2984466, 2123861, -1182190, 83752, -4211216, +3235721, 1072668, -675921, -700080, 1854352, 649077, 1799054, 1293322, 341450, -1802813, +-3153580, -927176, -8148090, -23716272, -3899294, -8296803, -12445205, 6684043, -23773718, -3117073, +-8443369, -4640712, 6891812, -7607461, 10084583, 8645769, 1402307, 7792682, 712428, 4103841, +-6184216, -10980084, -12034498, -6777459, -11027865, 8575976, 11299522, -520228, -5927055, 3221762, +3269544, -4190278, 846109, -18855980, -9936944, 8715026, -4782446, 216896, 8603356, -853625, +5327907, 4507568, -2435247, 5163088, -47245, -10071161, 11183021, -7891466, 551903, 577136, +-6149320, 4065187, 6672769, -3966939, 7621957, 817118, -580894, -6994354, 8608725, -85899, +-6951405, -2343979, -13938779, -5889474, -7952669, -1044214, 9605694, 2733747, -900333, 124554, +-9016747, 1996623, 6956237, -9141838, 535797, 13914083, -5729487, 1336272, 1069447, -9947144, +-5952825, 6313602, 5326833, -16164646, 3263102, 12036109, -47782, 1410897, 84289, 2879776, +-908386, 7588671, -1731409, -343061, 988379, 1436667, -3441880, 850404, 2696166, 802085, +4540318, 1639067, -83215, -1686312, -3551938, -1053878, 1708323, -2230699, 1616518, -2286533, +-50466, 3115462, 1699733, -2231236, -2983392, 136902, 118112, 6656126, -2676302, 528818, +3671123, 1459752, 3586835, 42191612, 9388799, -5535139, -8465381, -829466, -2677375, 7467875, +-1666984, 6309844, 11965242, -4841502, 601832, -7935489, -5422396, 2527588, -1306744, 6130529, +-11828877, -6953015, 5583458, 11833172, 7826504, -391379, 2808909, -2930242, -7123204, 5123359, +9266929, 9690520, 11727945, -9741523, -2300492, -5601174, -12046310, -1553168, 626528, -2671470, +5538361, 7273527, -15569, 3572876, -2160369, -12834436, -6964827, -17154636, -17370458, -5106179, +5822902, -2576444, -7691213, 14524506, 5511517, -630823, -13650480, -662499, -4200478, -9804873, +128849, -4507568, -6320045, -13563507, -1725503, -5036386, -14859513, -44560, 11385958, -7684770, +-3613678, 4159676, -6382859, 2502355, -6323266, 9222369, -2950106, -8995809, -13881871, -22871238, +4530654, 3815542, 17471390, 6980933, 6069863, -127238, 5326833, -4150012, 5645198, -561567, +2014340, 2750390, 6694244, 3004330, 310311, -1262184, -287226, 2593624, 1693291, 6873559, +5476620, 3587372, 1232656, -1452236, -3602404, 1952600, 4542465, 357019, 345208, -885837, +-3173444, -601832, -415538, -1595044, -1085553, -2541547, 2151242, 3008625, -2787434, -2956548, +-87510, -425202, 1678795, 9491878, -33430952, -19048716, 17723182, -4604742, 1139777, -9182640, +7733089, -3167539, -12898324, 6202470, 17916992, 2303713, -15675020, 4428648, -3411815, -3580392, +10317048, 10704132, -1440962, -2169495, 22561464, 5048734, -3241090, -13856638, 6142877, -19876034, +-16361678, -15073725, 6123013, -2844342, -1613297, 12970264, 5173825, -13156022, -10997801, 2873870, +12805982, 4392678, -1457068, 737661, 8540006, -6157910, -13899588, 18154290, -5327370, 1893007, +7331509, 1141388, 2519535, 18669150, 329639, 11895449, 542777, -12495670, 1815697, 2679523, +-2586107, 2391760, 8497593, -6316287, -1915019, 2177549, -24712704, 6562173, 5058398, -138513, +5935108, 4625680, -9168145, 4349728, 33949568, 14594299, 8389145, 2462090, 8246874, -26099980, +-12371116, 13208098, 529355, -121870, -10014253, 8825621, 10684268, 8944806, 1490891, 1873143, +-3584687, 141197, -6211060, -2259690, 4900558, -1109712, -3133716, 2543695, 197032, 2440078, +-3624953, -1541356, 1210644, -667867, 2468533, -4340065, -1504849, 3074123, -3465502, 2483028, +894964, 308164, 83752, 15032, -2814814, 1383516, 2571612, -1316408, -1319629, -3020973, +1297617, -205085, -22415972, 15753940, 16830366, 5448703, 9277666, -6209449, 26872536, -3142306, +10241350, 7035157, -12416750, -5064840, -5738077, 15647103, -9306120, -2866891, 9826348, 8304856, +-9147207, -2449205, -26415660, 4966056, -2944200, -7720204, 2268817, 746251, 1932198, 2459943, +8921184, 398358, 9773735, 1198833, 4755066, -2495376, -8523363, -9035537, 17041356, -6042482, +-12371116, -10364293, -4732517, -5686537, 7383049, 4626754, 5681705, 7579544, 2244121, -9314710, +5339718, -15212237, -5009006, -13288092, 9148280, -16045998, -11560978, -3378529, -5435281, 4838281, +10798622, -8562017, 10193568, 16848082, 8329552, 16231218, -6812892, 21776558, 1970853, 18454400, +10427644, 2327872, -9839233, -24668682, -16704202, -13536126, -7722351, -7572564, -2434710, -11469173, +8658654, 14479945, -5568425, -11042361, -10111964, -7960722, -15040439, 9499931, 6838662, -3962107, +-3882114, -5805722, 765041, -3275986, 8095477, 53150, 2072322, -4288525, -3710852, -6059125, +-1125281, -7263864, -7006703, 7209103, -507880, 906238, 177167, 2661269, -2865280, -242666, +-4304094, 172872, 25233, -160524, 2216203, 262530, -3522410, -2287070, -2527588, 734439, +-3784940, -4095788, -5204964, 1433982, 12482249, 6362994, -7102266, 21017422, 2376728, -20511690, +25618406, 1719598, -10910291, 9044127, -21038360, -4024921, -13393856, -4179540, -2369748, -4107063, +-9572945, 2687039, -18175228, -7027104, -6550899, -24526410, 2984466, -17785460, -12640626, -19953882, +4010426, -15053860, -4540318, -4984310, 169651, 7597261, -6113886, 10692858, 560493, 14187351, +-3294777, 12341052, 15551540, -18648212, -270046, 5011153, 11419781, 452582, 13729937, 4602058, +13239237, -270046, -10096931, -6347425, -960999, 8568997, -1959042, -3929895, -847182, 15862925, +10022306, -3761318, -13054553, 4388383, 7191923, 5113159, 14071923, -18821084, -13915694, -3970697, +1341104, -5293011, 165893, -5397164, -11758547, 33042794, -16301548, -18927384, 14150843, 8150238, +12295954, 3776887, 4531728, 2549600, 7196755, -6776922, 18992882, -3310346, 4672388, -3660386, +2558727, 1146756, -1021129, 12105902, 1534377, 1066763, -11907797, 5408975, 1803886, -1743220, +-9693741, -987306, -1989107, 264141, -3073049, 8723079, 2036351, 2443300, -6999723, 4802311, +-3315715, 983548, 4223564, -167504, -2055679, -2247342, -6226092, 3640522, 6405944, -3031173, +-686658, -2247879, 969589, -3617436, -8388071, -2535105, -263604, -5751498, 5989869, -510027, +-794032, 2026688, -5635534, -6391448, 2623688, -4400731, -5602785, 16653736, 12264279, 19691888, +-6556268, -4876399, -27045410, 31403190, 14394046, -41827612, -22386444, 13401372, 18618146, 18728742, +-12031277, -9767293, 22662394, 5373541, 5201206, 15709917, 12700218, -23130010, 7087233, 9743670, +-1731946, 10911901, 2099165, -2975339, 2261837, -7534983, 38612292, 10104984, 5029944, -1067299, +-4774930, -2602213, -21901648, 4192425, 6437082, -5164698, -7180649, -35464080, -16939352, 7412577, +6182606, -11646341, -11381663, -1617592, -16879758, 6971269, 6267431, -2469606, 7051263, 13966697, +702764, -742493, -4477504, -7487739, -2441152, 1238024, -26132192, -3496640, 6140193, 15916612, +-28283434, 6264747, 10139881, -2244657, -13314935, -12041478, 21358872, 21089900, -3087008, -13200582, +-25006374, 5244692, 10030896, 5228586, 417149, -27287000, 11503533, 24794310, -8400956, 2778844, +7798050, -10235444, -16289200, -8638790, 2486249, -5080947, -1293322, -7707856, -6616934, -5638755, +-2376728, -2239826, 3317862, -628676, -496606, -7030325, 2886218, -3322157, 1504849, 16106, +2263448, 4203163, 4944044, -7854422, 3140695, -6080600, -10166188, -5383742, 1460289, -1072668, +4443681, -1032403, 2894271, 5956046, 301721, -325881, -5270462, -2991982, 7950522, 3981972, +-3326452, -2085744, 12441983, -9162776, 3395172, -7635915, -6732898, 1169305, 8434779, 16833588, +-31005906, -40464496, -28118078, -36200668, 31436476, -20968568, 12662100, -3545496, -25420838, 4548907, +-6891812, -9450539, -33003602, -30245160, -22572738, -8619462, 1193464, -17500382, -5052492, 4622996, +14236206, 1127429, -8825621, 35970, -9438191, 13643500, -17140140, 23721104, 20461224, -4887673, +-6480569, -28125594, -16380468, -17103096, 2084133, 3784940, -4557497, 22990960, 6577743, 18638548, +3702262, -2190433, -8424578, 16770774, 11608223, 5269925, -16804596, 9026948, -28439126, -3167539, +-2989297, -18888730, -3076270, 249108, 21809308, 14443438, 452582, 10088878, -360777, -21446920, +10976326, 3056943, 17947594, -10116795, -20614770, 12345883, -37077916, -8491687, 13182328, -5548024, +-5865852, 9119826, -2374580, -7291781, 6921877, -3066607, -23772644, -20914344, -3417183, 9836549, +15895674, 22328998, 22383222, -9431211, -7541963, 4436165, 8149164, 7345468, 3105261, -9880572, +8781061, 213138, -1788854, 1176821, 5470178, 9111236, -2585034, 1585917, 8628052, -1926830, +-105764, -8580808, 4385699, -1818919, -529355, 7195681, -1323387, -3112241, 3274376, -9751723, +-3557844, 10072235, 2942590, 3323768, -3449933, -2244121, -1391033, -7745974, -944356, -4272419, +6039261, -16936666, -40449464, -3780645, -25750476, 1571958, -18962818, 17254494, -13540958, -1455457, +3408057, 6429566, 20827908, 6963753, -9412958, 22462678, 7016903, -38289096, 6332930, -22985054, +-1603097, 4346507, -3174518, 18862960, -5566815, 3404835, 4816806, 1634772, -12236899, 19142132, +-11063836, -1087701, -22388054, -53150, 3842922, -3584150, -7850127, -10327786, -11676942, 29027000, +1204738, 15008763, -25846040, 2876018, -284542, 8838506, 15491410, -17853642, 31659814, 45471356, +-2039573, 4333622, -15854335, 7221988, 10635413, -8864276, 2307471, 8498130, 17706540, -657130, +1077500, -5564667, -15335181, -23180476, 11798812, -17411798, -7284265, -11443403, 5046050, 15444702, +13977971, -2872260, 5268315, -31452046, 20735028, -3979287, 4534412, -9330280, 20257750, -28254980, +33574296, 24274082, 27975270, -11441793, -649614, -27713814, -14928769, -10410464, 9074192, 7492571, +-22807350, -16913044, 645319, -6002754, -16642461, -257698, -11519639, -13892609, -5119064, -2274722, +1051730, -9273908, 1612223, 2807298, 13817984, 12122545, -1932735, 11406359, -5755793, -14835891, +-8075076, -3401614, -7361037, -1411971, -5477694, 7943005, 2476049, 31513786, 4188667, -11283953, +-3785477, 2517388, -16654809, -10732586, 3936875, 307090, -4334696, 1289564, -14496, -18547816, +-1931662, 11759620, -8990977, 50797116, 14543296, 36935108, 11821897, -38556460, 15507516, 10678899, +-12800076, 2581275, 24916180, 1061394, 23849416, 21053392, -24706262, 13572097, -24716464, -16770774, +-2314987, 49706192, 15328201, -22518514, 21242372, 13600014, -27356794, -12149389, -1838783, 27788438, +4149475, -25546466, -14297409, -863288, -6942278, 15394773, 22345642, -8135742, 19659676, -12709345, +-17064978, -661425, 40460740, 3688840, -23167054, 13131326, -1046898, -2382096, 11358578, -26417270, +-22718766, -21690658, 15887621, -14231911, 5157719, 6665789, 24215026, 11879343, 24893630, 2570538, +-1021129, 20182588, 37248104, 22028350, -36734320, 685047, 3634079, -6311455, 7157026, 10125385, +-28351080, -4365835, 5690832, 4837744, -33776696, -32161252, -17918066, -19577534, 33670396, 12338904, +1630477, 14731201, -27341762, 11220602, 7667591, 4912369, -2346663, -6378564, 23295366, 13844290, +-9205189, 3856344, -6919193, 15037217, -4283693, 942208, 3273302, 2120640, 11389180, -1921998, +-18252000, -909459, 3539590, 4670240, 9540196, -2709588, 949188, 6908992, -14116484, -8591545, +-1210644, -26045756, -3855270, 6995428, -1798518, 2619930, 14930917, -2307471, -10205379, 2007897, +3716757, 9413495, 11613055, -11294690, -6705518, -964757, -9278203, -6369974, -17904108, -21727702, +6105296, 82678, -9534827, -8381629, -9730248, -19330574, 14476187, -38626788, 27954332, 31219044, +8655433, 33997352, -34842924, -17059074, -9424232, -50085224, 28221156, 2811593, 17473538, 22952842, +22468584, 1716913, -696322, 22816476, -3604015, -27134530, -28142236, 17022030, -31798328, 31022548, +-8899172, 6783901, 30764850, 27713814, -13948980, 42212548, -24475944, 2710661, -25450902, 4090420, +-8693014, 16601659, 5659693, -18090940, 16212428, 24601572, 36191004, -20950314, 7748121, 22181358, +-30511984, 1374926, -12258374, -44168368, -18981608, 11747272, -24233816, 8597451, -20343650, -528818, +29726006, -14143327, 12595528, 34203508, 24461450, 9121974, 45536316, -70967352, -13362717, 23635206, +-2729989, 13754096, -21962316, -38376068, 46562276, -717796, -23455890, 9998684, 29465624, 73065448, +27689118, -55350316, -30186104, 18786186, 20447266, 8812199, -38626788, -3425237, 8465917, -11996381, +26074746, 9269613, 16641925, 19753628, 14859513, -10208064, 11471321, -30752502, 4404489, 16320876, +-1989107, -16358457, 9491878, -10022306, 16251619, 17901424, -7722888, -15073725, -4064650, 33111514, +-5975374, -4000762, -13048648, 14905147, -12960064, -8087961, 9558987, -6328098, 31243740, -2524367, +-7798050, 31323196, -2864743, 7196218, 19217294, -1628866, -1703491, 1674500, 2803540, -14984067, +6666326, 620086, -21532818, 14392972, -6725382, 27464168, -15079093, 8664560, 2580739, 37442988, +-32917704, -2981244, -15734613, -19508278, 30005178, -11678553, 39397200, -3911105, -30403000, 47262356, +68317896, -9756018, -21829172, -33013802, 7836705, 36290864, 7128035, -7660074, -22656490, 5366025, +5332202, -5029407, 5580773, -3249143, -11147588, -11377368, 10439455, 14894410, -1171989, 20138028, +-19471234, 41326712, 31128850, 17928268, -1538672, 2418067, 5855114, -21929030, -19192062, -21261162, +-11191074, -5862094, 13209172, 11586748, 22399866, -10894721, -2721399, -9664750, 25485262, 49776524, +-11815455, -32129040, -20691004, -1378685, -43453256, 33669324, -59005872, 16925930, 24930674, 25577068, +-25752624, 5902896, 25959856, -59794536, -28281822, 12147778, -6379100, -30027726, -26471494, -3541201, +-13903346, 44267692, 18973554, -16394964, -15033996, -24790014, 67938864, 14469745, 35458176, -2707440, +10303090, 12692165, 15174119, -22420266, -2927557, 28063854, 19388020, 11457899, -9416179, -12322798, +-83752, 8593693, 12937515, 8612483, -17641042, 2266669, 86436, 4293894, 12542378, 12414066, +-18478024, 8276402, -11432666, -14186814, 1345935, 14058502, 5723581, -8988830, 1854889, -1597728, +-2753074, -7771744, 27026618, -8442295, -62814, -16681116, 3672734, -6467147, 17758080, 5313412, +-3992709, -10077604, 10020159, 7922067, -12671227, 312459, -20527260, -8594766, 4628364, 7771207, +11290932, -758599, -25681220, 7734699, 39410084, 1304060, -13455059, 33083596, 23506892, -6737193, +-21288006, -31996432, 6028524, 63225676, 13766981, 32468342, -2951180, 2930778, -2666638, -7316477, +-118112, 3002182, 15167140, 5157719, -12389370, 10612327, -10864120, -11700565, -13492640, 440771, +12524662, 2856690, 9980430, 10976863, 8627516, -8766028, -15822123, 5078799, -11018739, -27027156, +-8211441, 6272800, -9647033, 31826782, -32912872, 26757110, -8640937, 317291, 39217884, -6064494, +-1286880, 51604568, -8122320, -20834350, 3562675, -17834852, -4304094, -16831976, 57111252, -16100222, +13591424, -13657996, -6426345, -7738994, 9270150, -14310294, -35415228, 15640660, -4301410, -38873212, +20132122, -10094784, 21430276, 49104896, -24826522, -401043, -2806224, -7118909, -26699128, -4475356, +23887534, 9840307, 14540075, -22091164, 6294275, 4093641, -21790516, -5698885, 4476967, 11206107, +13475997, 1294933, 2320356, 9160628, -2469069, -10526428, 15226196, -5972152, -5038534, 14313515, +1584306, -3736085, 20746302, -1241246, -1937030, 344134, 6540699, -6160057, 10295037, -8046085, +-4464619, -6322729, 5185100, -6979, -1130650, 3228742, 9426916, -11468100, 2163053, -1395864, +6658273, 2258616, -2609730, 12181064, -7688529, 6649683, -2441152, 3722126, 459562, 9160628, +-13980119, 40265, 65739308, 33405182, 68971272, -38569880, -10020696, 22825604, -21573084, 16539919, +70950176, 16891570, 10260677, -18645526, -17644800, 20414516, -10750840, 28834262, -4720169, -6471979, +-8341900, -40686764, 9823127, 49148920, -25905632, 29765198, 25873420, -16495359, -4999342, 20518132, +-32588064, 16372952, -2304787, 24693914, 8329016, -20277614, -6564858, -40904732, -21032454, 19338628, +14471892, 31982474, 49737868, 5417028, 793495, -42960948, -26312044, -25612500, -21176874, 11380590, +-17568564, -4925254, -4034048, 12998182, -32895154, -5214091, 17035988, 8889509, 27123256, -3536906, +-12991739, 27073326, -4890357, 16629040, -20780662, -12451647, -3220152, -6851547, 13226889, 19717122, +27740656, 7923141, 2277943, -19082002, -5405753, -9756555, 23224498, 333934, 34809636, 6128382, +26214332, -25442312, -9165460, -111669, -646393, 19059454, -3044595, -9381282, -5163625, 4725001, +1289027, 4995584, 8752070, 7907035, -4857608, -5631239, 326418, -3313031, 7368554, 7954280, +1814087, -6578816, 245887, -8642011, -3682935, -1868848, 14921790, 5395016, -2004139, 3926137, +-10071698, -11809013, -8062191, 3770445, 8157217, -7031935, -759672, 138513, 6062347, 3417720, +-1004486, 6538551, 953483, -329639, -6519761, 3097745, 1813550, -2632815, -18079664, -67524936, +1752347, 108659992, 97988608, 92165168, 39050916, -39142184, -54268524, -53801444, -48118668, -88320096, +-63079648, -61475476, 47531328, 73056856, 59576028, 95081984, 79076792, 16786880, -3704946, -34017752, +-66315904, -39555040, -69683160, -37821484, -23352810, 384400, -9350681, 17483738, 29851634, 50814832, +31916976, 53389664, 40582608, 42422464, 3244311, -34907348, -15963857, 1229434, -38211788, -50378892, +-65593816, -64403572, -45761264, -6416681, 31907848, 12654047, 46452220, 32930588, 52988084, 47267188, +51376936, 59711320, 32040456, -4565014, -9720585, -38954280, -31981400, -105214352, -84272088, -67448704, +-52822728, 6162741, -23112292, 1515050, 71785008, 88787712, 121346248, 76819784, 46072116, 31439160, +7233262, -46508052, -42750492, -64845952, -83967144, -71009232, -66367984, -31074088, 4648765, 33590404, +55068460, 54523000, 46261092, 29273960, 31002684, 13387950, 8255464, -1484448, -25905096, -22432614, +-20644298, -22826678, -12303471, -25514254, -18409840, 6337224, 2033130, -14825690, 7912941, 21053930, +11791833, 24020142, 37248640, 38939784, 17005386, -24040006, -10578504, -3348464, -49256832, -51750060, +-45331232, -18820010, 13822279, 22193706, 18297098, 31113816, 34957276, 43404404, 28573880, 17772038, +-6861747, -29052770, -29781840, -32909114, -44574244, -31455266, -17709760, 15184857, 23820426, 15628312, +9210020, 28147068, 18712636, 11580306, 2381559, -4144107, -9283572, 970663, -11103027, -12775917, +-5059472, 4378719, -7834021, -5544803, 814970, 5854578, 321586, -2796561, -4303021, 4425964, +-463320, -1953673, -4393752, 1906429, 1319629, 2702071, -1252520, 1613297, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 1097901, --1261647, 4443144, 4995047, 2682744, -1933272, -7547868, -6924024, 2508798, 3972308, -1468342, -7419019, -1438814, 4425427, -5273683, -4651987, 2025614, 181462, -1371168, 1959042, 4809290, --2097555, 664646, -2753611, -278099, 252866, 1968706, 1832340, 2467996, 406411, 1467805, -5493263, -2124935, -2575370, -2780455, -4983236, 1428614, -1050656, 9104257, 1767379, -689879, -713501, 5521718, -513785, -1209033, -1412507, -3245922, -597537, 4244502, -656593, 1757715, -4293894, -1353452, -312459, -6916508, -4065724, -6307697, -1236414, -1836099, 927713, 338229, -905164, 2242510, -1514513, 1080721, 67109, 550830, 957241, -2306398, 2172180, -751082, --2623688, -339302, -2645700, -811749, 243739, -4124779, 1087701, 179315, 3170760, 326418, --58519, -1899449, 421444, 3156801, 1543504, -796180, 348966, 695785, 766115, 2405719, -285078, 142271, -586800, -371515, 238908, 86973, -251256, 1584843, 865436, 937914, -670015, 488016, 201327, 471910, 5119064, 12112345, 4767951, 2874944, 3352222, -7099044, --846109, 3080029, -973347, 1211718, -6497749, 6389301, 8629663, 1501628, 3849365, -1808181, --5071820, -7830263, -8595840, -5697274, 6795175, -6412923, -4092567, -5425618, 1733019, 4532264, -843424, 623307, 2517388, -245350, 1586454, 5582384, -792958, 4642860, -4422743, 4236985, -2930778, 2697776, -2334852, -7196218, -1544041, 4136054, 2433099, -2004139, -251256, 1437203, --315143, -3467649, -739271, 2958159, -1022202, 336081, -1728188, -371515, 204011, 994285, -5079336, 2137283, -2618320, 448824, 411243, -1719598, 918049, -2508798, -304943, 4137127, -1333587, 4640712, -3318936, -2831994, -1708860, -724239, 2347737, 5259188, -3039226, -3791383, -4510253, -417149, -97174, 164283, 1549946, 1125281, 3789235, -1061931, 1760937, -2309082, --2179696, 178241, 1016834, -152471, 67646, 879931, 940598, 734439, -1966021, 2207613, --461172, 3546569, 1509144, -3982509, -3751654, -4267587, -664109, -3483755, -7330973, -6988449, -7218767, -158377, 1524713, -54224, 4399657, -6499896, 9663676, 8576513, 450435, 457414, -19327, 255014, -947577, 3358665, 2619393, 212601, -5490579, 2382633, -1699196, 2643552, --760209, 5857262, -1358283, -3408594, -1538672, -919123, 2176475, -36507, 3628174, -5815386, -3141769, 1014149, -3221762, 9152038, -1447404, -1310502, -186294, -142808, -2406792, -779000, -4890894, 3998615, -8571144, -4046396, 4366908, 1255741, -2045478, 7463043, 279173, 1672890, -7354595, 3034395, 5775121, 1629940, -2209224, -2996277, -5765994, -5593121, 819265, 2976949, -7157563, 272730, -2909304, -3648575, 1250909, -67109, -1990717, 2320893, -799401, -1835025, -1680406, 3875671, 1263257, -1943473, 1949915, 2018635, 2538326, 1624035, 135291, 241592, --2393908, -504659, -25770, 1230508, 1044751, 1974074, 1916629, 1585917, 609885, -155693, --9784472, -3417183, -4757750, 4440996, -3248069, 2882997, -3512747, -1459752, 8306467, 4052839, --5506148, 2508798, 7922604, 1155346, -2771865, -5565741, -6675990, -4584878, -6713034, 4454418, -1017907, 2448668, -1285806, -3045132, -3204046, -5922223, 310848, -188442, 1408749, -1447941, --5378373, 82678, 5750425, -1278827, 68719, -2869038, -5729487, -8485782, -727997, 6107444, -2223183, 638876, -2874407, 777926, -4600447, -1511829, -3461207, 436476, 783295, -5244692, -5916855, -3335042, 7528541, 2843268, 716186, -3424163, -1794760, 1930588, -430570, 1826435, -4041564, 817654, 1603633, -4476430, 2641405, -2252174, 6920266, 8566849, 3932043, 5756330, -2681670, -882079, -6011344, -3885335, 496069, 4427575, 4465692, -3575560, 469225, 4207458, --5505611, 5434744, 348966, -2792266, 1792612, -1173600, -263604, -3105261, 609349, 877247, -535797, -2491618, 659814, -1761474, -2335925, -818191, 165893, 1029182, -1524177, 374736, --660888, -2167348, 231928, 1782948, 748398, -1552094, 1003412, -1168231, 3275986, -7900593, -1037772, -8448201, -37581, 1298691, 785979, 3816079, 382252, 609885, 14949171, -1869385, --6602976, -7115150, 7509214, 5037460, -5665062, 1376537, -6317897, -2700461, 212064, 7158637, --8864812, 2593087, -345208, 1422171, -674847, 9087614, -4693326, 2570001, -1418413, -2392834, -1382443, -425202, 2724620, -2767033, -2576444, -7670275, 1207960, -2538863, -1649804, 621160, --2716030, 2279017, -4329327, -2565169, -7619809, -215822, -6764574, -2842732, -8046085, 5997922, -1221918, -2453500, 5267241, -6084895, -22549, -11609297, -616865, 4038343, -307627, 3465502, -7408819, -2576981, -1030792, 9278740, 3918621, 3596498, 5665599, -2902861, -8543227, -883690, --5108864, 3764539, 8540006, -1508607, 2517388, 4564477, 3835943, -425202, -697932, 1085553, -183610, -1545651, 2318209, 2090039, -3527242, 1214402, 3022583, -1472100, -1056025, -5237713, --1196148, -2181844, -700080, -2264522, 494995, -519154, 445603, -197032, 393526, 1402844, --1517197, 593779, -600222, -1540283, -173946, -223875, -439697, 164819, 946503, 1544041, --1428077, 566399, -1200443, 271657, -97174, -1603633, -607738, -1076426, 4223027, 4776004, -1727114, -2874944, 2066416, 1255204, 9092983, -1377074, -1955821, -12259447, -3469260, 9233643, -9004399, 5803575, 4562329, 13140452, 807454, -15670188, -4024921, -2602213, -3803194, 8370892, --1330903, -3030100, 9740986, 1534377, -4024384, -1384053, 3885335, -3448859, -1372779, 1200443, --1251983, -5451924, -2483565, -246424, -5285494, -2408403, -2223183, 3695819, -2484639, 7109782, -6895570, 681289, 6558952, 4616553, -2971581, -999117, -2257005, -10180683, 1140314, 2115808, --9701257, -1380832, -2754148, 3484292, 8853538, 1361505, -8989367, 1333051, -3468723, -6041409, -4897874, -1402844, -6439767, 2933463, 2473364, 7128572, -571768, -864362, 5236639, 6214281, -6811818, -6978785, 4937602, -873489, -1191317, 1860795, 7354058, -306553, -1967095, 2352032, -1118302, -6213744, -825707, 8594766, 1887638, -521302, -1077500, -3837553, 2757906, -1388348, --1760937, 325344, -256624, 2018635, -132607, -2621541, -1909650, 3609383, -445066, 1450625, --1612760, 1770600, -1331977, -948114, -1317481, 947040, 1902671, 6259915, -16042240, 6675453, --1748052, -3659312, -3292629, 2753074, -1519882, -9512816, -10129680, 1239098, 15810848, 4358318, --11494943, 2597382, 9383967, -6744710, 1222455, -1701344, 5597953, -33286, 5166309, 13830332, -10074920, 6289980, -229244, -1139240, -6385543, -6843494, 2731599, -17909476, -2826625, 8496519, -956704, -900869, -8573292, -3054259, -359167, -383863, -4162897, -8865886, 9947144, -3430605, --2173254, -1597728, -8212515, -9238475, -284005, -4505958, 648003, 4405563, 3375308, 3729105, --7330436, -1901060, -3598646, -2288681, 11806328, -1240709, -5382131, 383326, 15138686, -8069707, -2549063, 11143293, 352724, -2554432, -5609764, 3393561, 648540, 8026220, -4310000, 6791954, -5515275, 10512469, 5091684, 7874286, 839666, -5150740, 1113470, -209380, -2967823, 4759361, -6778532, -5615670, 3702262, 2029372, -5046050, 665720, 1800128, 1418950, 1842004, -2884071, -1644436, -3161633, -948651, -873489, 227633, 593779, 1366873, 1732482, -352187, 2594697, --187368, -1155883, 904091, 1727114, -579821, 1048509, -2697776, 1074816, 9222369, 13238700, -8085276, 1350767, -2843268, -4953708, -10998874, -3182034, 7249368, -14955613, -6142340, 13626321, --18886044, -3415573, 10546829, 13255343, -1371168, -13310641, 1833951, -5093295, 17792438, 7893076, --12241194, -7873749, -1893544, -7548405, -15402826, -7703561, -6841883, -5574331, -12476343, 6266358, -2199560, 7693360, -4758287, -2305861, -10976863, -1128503, -9526237, 985695, -6337224, 1394791, -3313567, -14694694, -4836670, -5598490, -3911642, 3158949, 3123515, -4696547, 14467597, -945967, --3798899, -2724083, 1386201, -3406983, -1207960, 5379984, 4578435, 6023692, 7934415, 7532299, -585726, 4937065, -2423435, 11288248, 12073153, -6085969, -3171833, 7407745, -223338, -18336290, -832687, -9316321, 5672041, 5788006, 10354629, -7872138, 4402342, -11042898, -1082332, 6297496, --2703682, 9841381, -2575370, -1207960, 1969243, 638340, 1373853, -659814, 571768, 4181151, --3112241, -800475, 4019553, -626528, 3155190, -4719096, -4102768, 2767033, -664646, 863825, -433255, -567473, 721018, -2824478, -741419, -494458, -1230508, -1910187, -666257, 1493038, -1794760, -92342, -10160819, -12294881, -6022081, -11878269, -16950088, 11992086, 1185948, 6710350, --9367861, -9747428, -13442711, -9094056, 4149475, -9970230, -8952859, 12193949, -3053722, 573378, -2948495, 6965900, -5417028, -4109210, 2011118, -3291019, 1905355, -621160, -6020471, -11523934, --18037788, 5957657, -12956306, -11883101, 624381, -3134789, -833224, -6691022, 3023120, 3433290, --14703821, -326418, -3229279, -5761162, -8175470, 4642323, 993748, 14688251, 1752347, -8252780, --513249, 1357747, 6060736, 2529736, 13030394, -1127429, -14179835, 6060736, -3009162, 6396280, --8478802, 1840394, 4811437, -25080998, -11909407, 8854612, -770410, -2700461, 3850975, -1285269, -15833397, -566936, 10027675, 8704288, -12834436, -14904610, 867047, -16510928, -379568, -824634, -333934, 2389076, 10342281, -372052, -6495065, 5919539, 7782481, -7274064, 1275068, 2330020, -7828652, -3836480, 274878, -3890167, 2647847, -224949, 1657857, 2593087, 4218195, 4258997, --129386, -4112431, 183610, 3025268, 952946, 626528, -3747896, 397821, -3753802, -560493, -2032056, -613107, 3688303, 2728915, -157840, 770410, 2986613, -2782065, 5267241, -118648, --2309082, 2355790, 8559870, 35158604, -8695698, -23583128, -2152852, -10304163, 25499220, 1992865, -14262513, 7750269, -4498442, -11282342, -5114769, -12294344, -3213709, 17214766, -19205484, 831076, --15676631, 4262218, 1255204, 7653632, 1721745, -7478612, -12712566, -14747307, -2783676, -14467060, --11384885, 1874753, 3332358, 10790568, -10115185, -20985748, -4440460, -7275138, 2481954, -9856950, --6709276, 3046743, -5294084, -8338142, -606127, 930934, -4308926, 20487530, -4231617, -3340948, -5136781, 5366562, -6106370, -2562485, 15113990, 12721693, 8308614, 15992848, 12482249, 44560, -5214091, 9094056, -6771553, -6324340, 1843615, 6558952, 10606422, 4376572, 21544092, 2384781, -14443438, -4078072, -8359617, -5359583, 30586072, 5456756, -3978214, -3670050, -10991895, -10493679, --7577396, -7352447, -8798777, 3533684, 7049652, -7473243, 2408940, 7625715, 3779571, -6898791, -1403917, 7778186, -1941325, 4313221, -3872987, -1069447, 1737851, -1297080, -869194, -2310156, --4946729, -755377, -4480188, 2391223, 3753265, 1930051, -3735011, 4980015, 3225521, -2732136, --3263102, -5051419, -1505386, -1384053, 1336809, -1091459, 2363843, 1772748, 443992, -478352, -89121, -4026532, 1690607, 6812355, -30944702, -11268920, 15279346, -3518652, -15878494, -14592688, --5120138, 16877074, 8762807, -13286481, 7306813, -17734456, -7480760, -2004139, -11887396, -15917149, -13370770, 7563975, -14442364, -4904316, 30726196, 7302518, -13759465, -18648748, 264141, 10244571, -1666447, 1862942, -21562346, -511101, -2471217, -15336254, -9043591, -6119255, -12403329, -5749888, -3570729, 590558, -13086765, -12960601, 1657321, 8315057, -224412, 11106785, 18422726, -12859669, -11416023, 8710731, 3629247, 2580202, 13889924, 4422206, 8565239, 5817533, 7720204, -2514703, --1671279, 15939161, 24795920, 4186519, -5766531, 3118683, -3564286, -9315247, 15782394, -7637526, --13298292, -20956756, -7225746, -24432996, 12257300, -9923522, -4225711, -1359357, -3520800, -8741332, --1462436, 9824201, -11150809, -919123, 5157719, -3141232, -10872173, 5527623, 901406, 3103114, --711891, -1227824, -3879966, -363998, -2004676, 5895380, 1549410, 1676648, 963146, 1970316, -95563, 3034931, 2030446, 5234492, -7219303, -784905, 616865, 4862977, -1962263, 4064113, --4342749, 1574642, 1087164, -877784, -2392834, 4262755, -1886028, -263067, 2441689, 817118, -261456, -5805185, -13565117, 11527692, 6928319, -2055679, 7719667, 5714454, 16422881, 12638478, --26656714, -8862128, 29672318, -23380192, -6886980, -14168023, 21150566, 9400610, 9758166, 4093104, -3118683, 8450885, 22437446, 10661183, -9848897, -202400, 765578, -634581, 8897025, 9968619, -1236951, 5896990, 5667210, -5149129, 6969122, 4167192, 13874892, -6655052, -13295608, -11443940, --8888435, 2635499, -1135482, 5286031, 6030671, 6036040, 12222403, -5350456, 2598992, -5392869, --9486509, -3853660, 1035624, -10964515, 14031658, 16949552, -18396418, 6277095, -12736726, 10420664, --2062121, 4050154, -1376000, -10198937, -2462090, 11727945, -9154186, -2825015, 2097018, -18808736, --7169374, 3939022, -14529874, -1012002, 23293218, 11573863, -1553168, -5329518, 18588618, 4876399, -13390097, -4208531, -5989332, 19390704, -6571300, 6051609, 2592013, 2753074, -3985193, -2927020, --3562139, -2472291, -6519761, -4032974, -4541928, 650688, 4202626, -1547799, -9160628, -2947958, --1260036, 1032940, -277025, -2285460, 42950, 2583423, 4478577, -3576097, -106837, -9888088, -1675037, -1235877, -1866700, 6665789, -117038, -646393, -3935264, 4075924, 1120450, 6037114, --2063732, -357019, -4051228, -447213, 18521510, -1506997, -4325569, -15394773, 652835, 1467805, --4153770, -325881, -7161321, 2708514, -22139482, 20195474, -4100620, -7141994, -14021458, -15804943, --1655173, 19266686, -3515431, 5342940, -11926587, -6871948, -3345780, -11583527, -14010183, 12790949, --7925289, -6432788, 11310796, 11026792, -15611132, 5436355, 5870684, 13502840, 11125039, -4068408, --9889699, -6219650, -15181099, 16680579, 10945187, 5539971, 11870753, -12314745, 8410083, -1785096, -7707319, 8571144, -8091719, -634581, 27118424, 22754200, -17226040, 6890738, 14067092, -10828149, -3330210, -25365540, 7575249, -13724031, 11320997, -7961796, -8795019, -6199786, 30258044, 1731946, --8846559, 2686502, 10160819, 1339493, 6034966, -16317654, -1880659, 27197344, -915902, -10681047, --16655883, 514322, -12334609, 7686918, 7822746, 9506373, -17011292, -17743584, -4758287, 2987150, -5814312, 1852742, 70867, 435402, 6446746, -4353486, -1767379, -1348083, -2881386, 3187403, -2680060, -5427228, -3759170, -8337069, 5077188, -3058017, 2206540, 3651259, 5345624, 4267587, -1821066, 8375723, 510564, -1952063, 3989488, -6223945, 3454764, 2410551, 1682017, 5543729, -5918465, 1100049, -845572, 3503083, 377420, -537945, -6575058, -8588861, -1648194, -663036, --1087701, -16742856, -868657, -1991791, 4880157, -24310588, -11260331, -13619878, 11486890, -5768141, -17092896, 10424959, 21763136, -10776610, -913754, -17056388, 14504641, 26466126, -8246874, -20946018, -2043868, -4242891, 32416266, -7939247, -12734578, 12412455, 6802155, 5228049, 12202539, 4212289, --40770512, 205622, -2747169, 15976205, 28619514, -26985816, 1060320, 8174397, -12983686, -2566780, --36968932, -8303783, 18838264, -30351998, -18211736, -9271224, -11911018, 12191802, -7377680, -10772315, -16279537, 5018133, 5931350, 16858284, 1840394, -5713380, 11939472, 17686676, -17149268, -12706661, -26209502, 18095770, 6077379, 8396661, 6188511, -11733314, -17044578, 46708, 219580, -3435974, -5361730, -10245644, 7315940, -14215805, 5789079, 33410014, -15524696, -12753369, 18332532, 5354214, --6249178, 11672110, 16112570, 12050068, 14238890, 7128035, -7243463, 5946919, -17581448, 9468792, -3980361, 5039608, -8922258, -2591476, 1864553, -757525, -1783485, -2603824, 5769215, 11367168, --4414153, -10835129, 6919193, 13135621, 6820408, 5211943, -15465640, 9441412, 1005022, 5143224, --2480344, -5218922, -1235877, 7971996, 719407, -1382443, -6673306, -471910, -3891240, -1845225, --3084324, 3590593, 7460895, -4411469, 295279, 4786741, -1844152, -742493, -4076461, 821413, --2731599, -2965675, 9670656, 8733279, 14242112, -32988570, -60928408, -28082644, -4271345, 20737712, -1468342, 22868554, 21125334, -6389838, 3424163, -5175436, -11587822, -19051402, -11087458, -13752485, --7998840, 21725018, -28238336, -4909685, -23535348, -29190746, -5112085, -29460254, -23703388, 2902324, --6201396, -3400004, 5360656, 25853556, 1804960, -18762028, 1069447, -2250563, -5645198, -24363738, --1597191, 29041496, 2686502, -495532, 11766600, 22561464, 15187541, 3946001, -9188009, 7866770, --7718056, -20679730, -37922952, 36074504, -4566624, 30051350, -2530273, 399969, -10799158, -17364552, -31679142, -18000744, -14626511, -1520955, -23082228, -21686364, 18031346, 13224204, 6940667, -2301566, -9185861, -16013786, 6231461, -12995497, -18344880, -20022600, -15614890, -6438156, 15515032, 987843, -5576478, -9262634, 5494337, -12119324, 8833137, 6860674, 6293738, -3946538, -497679, 7817378, --2118493, -9453223, -7124277, -9357123, -799401, -6905234, -1588601, -2423435, -2505040, 2767570, -1147293, -3710852, 1619203, 4923107, -1277753, -3118146, -7314866, -47782, -5018670, -680215, --795106, -3471944, 8587787, -8027831, -7507603, -3543348, 4575751, -7104413, -7137699, 1040993, --5959804, -27380, -1031866, 3370476, -743029, 1145146, -4796405, 1972464, -9982578, -5036386, --1467805, -21164526, -15495705, -23486492, -242129, -22465364, -26086558, -4413616, -11917461, -28652264, --39670464, 4494684, -15010374, 7315940, -2858301, 14875619, 33423972, 1688459, 3463891, -16959216, --18142478, 15108084, 8449274, -12283070, 74088, 9853192, -22597434, -17393544, -1207423, 28680718, --24647744, 320512, 609885, 13198971, -21046950, 21949430, 11552925, 6213744, -548682, -9155260, --24424942, -258235, -5822902, 8833137, -13239774, -32455458, 26767846, -19559282, -8682813, -1372779, -26197690, -19908248, 9214852, -16354162, 10167261, -5929739, -24021752, 11502459, -30616674, -6774237, --8756365, 10703595, 25174950, -14546517, 9351218, 25458956, -20341502, 3360812, 6201933, 5979132, -7577396, -37153076, -11069204, -6292127, 13429826, 2808372, -1074, 6784438, -6470905, 14826227, --2641405, 3375844, -14221174, 12374338, 3245385, -22900228, -10378252, 10784663, 13569949, -1910724, --3356517, -8957154, 12724914, 1596654, 292058, -23818278, 3974992, -11457362, -17942762, -5453535, --3539053, -2320356, -10513006, -13662291, 5012764, -3142842, -6620155, 3936875, -1267552, -1952600, -908386, -3652870, 1415192, 7379828, -13774497, 1410360, 2734821, -4567161, 10136123, 9336185, -10736344, 4275103, 6532109, -6674379, 2911451, 361314, 3177202, -3024731, 272194, -186294, -4576288, -2682744, -6071473, 43771084, 4236449, 18607946, 49758268, -23159000, -13325136, -19375672, --7500624, 23212688, 1309965, 28543816, 7420093, -847182, -10788958, 21608518, -13561359, 5046587, --9130027, 9017284, -14354854, 16500191, -8156680, -3652333, -9537512, 12720083, 8404714, -13676786, --3495030, 13381507, 3793530, -8728447, 682900, -11271068, -37734508, 16422344, -19922206, -28722594, -17638894, 8043400, 19093278, -1680406, -18995566, -6901476, -5233955, 11330661, 14774151, 16771310, -27578522, 27523224, -12359842, 3896072, -29207926, 408022, -21321292, -37629820, -3912715, -30661234, -9783936, -24467354, -16375637, -16171626, -23243826, 2382633, -5659693, 2037962, -7054484, -2816425, --2204392, -39818104, 6184753, 6154688, 8917426, 19245212, -3805341, -31646930, 18194018, -20469278, -11697343, 11791833, 25740812, -13992467, -13059922, -8449811, -5199058, -18351322, 7231115, 4326643, -2183991, -4342212, 6381248, -9129490, 9206799, -1466195, 1813013, 2836826, -11500312, 8590, -4345433, 11335492, -3067144, -6717329, 4846334, 7871065, 9565966, -5971615, -16106, 5471252, --734439, -978179, -3659849, -7104950, 4992900, -74088, 3169686, -3942780, -615791, 6646462, --4420058, -6681359, -3921842, 1120987, -2920578, -11787001, 19014894, -4784594, -3966402, 1709397, -3612068, -3132105, 3470871, 4625680, -1901597, -470836, -2617246, -3830037, 31152472, 58289148, --31998580, -25845502, -45173928, -91829088, -22741852, -9621800, 20497732, 12404402, -7974144, -17723182, -25060598, 30662308, 2624762, -1484448, 141734, -24228448, -14318884, -17184164, -13228499, -25628070, --381715, -6475737, -3129421, 17579838, -24101208, 19286014, 18060338, -5648419, 9281961, -1059246, --42859480, -30514132, -17062832, -15599321, -7218767, 3381213, 16472810, 5349919, 8839043, 41352480, -37568080, 8515310, -27975270, -14535243, -1253594, -14365055, -26530012, -66125852, -55605868, -24996710, --5994164, 2729452, 14439680, -45870788, -26468272, 23790360, 27567784, 33143188, -30238718, -36666136, -11915850, -22365506, 54385024, -27431420, -3157338, -16139413, -8761196, 7524783, 16073378, -8019778, --21530672, 19987704, 19356344, -4378719, 22177064, 19739132, -43123620, 38585448, -25010132, 134218, --7369627, -25753698, -7245073, 13065827, 9715753, -2077690, 5029944, -15697569, 353798, 7919920, -10653666, 16839494, -12637941, 2575907, -3616899, -6838662, -17890686, -2174327, -17235166, 15220827, --2809446, -18289582, 2912525, -20952998, -1409823, 2553895, -4875862, -9050033, 614180, 1704565, -2193118, 6868727, -1301375, -298500, 12233141, 4014721, -12348031, -14127221, 3855807, -9363029, --19967840, -6830072, -18784040, 6199786, 5935108, 14779519, 2004676, -15200963, -10908680, 10790032, -54786064, -18260590, 17663054, -770947, -24383066, 3764002, -49229452, -11090142, 10584410, 966905, --28655484, 16961362, 50190452, 35205848, -15529528, -31428424, -13381507, 3530463, 52741124, 7093676, -1330903, 199716, 24387362, 25071334, 6556805, 19167366, 15547782, 29473676, -8398272, 3363496, -18833432, -17188996, -26161182, 14694157, 43274480, 9375377, 20972326, 2007360, 12875775, -57930520, -10721312, -2268817, 13084081, 56785372, 22915798, 7674033, -5640366, 25445534, -5814849, -11940009, -8992051, 15810311, 33421288, -10780368, 20770998, 3777424, 5759551, 13145284, 16908750, -534723, --22141094, -13745506, 5170067, 42828340, 29335700, 22785876, 24674588, 20656108, -5931350, -53048752, --38113004, -72768560, -1030255, 22178138, 41872172, 6513855, -30569966, 10085657, -18927920, 6062883, -14447196, 4367445, -8880382, -4922033, 128849, -4111358, 11707007, -8053601, -21189222, 396748, -7012071, 9404368, -13721347, -6219113, -25491168, 6302328, 11033771, -9785546, -8825621, 6358162, --5037460, -6297496, -5559835, -19791746, -4306242, 20402706, 12720083, 18472654, -10027675, -20919176, --15575699, 13568875, 10634339, -4930623, -1006096, -1278290, 3717831, -5888937, 12168716, -13958644, --7978976, 969052, 2218888, 8035347, -17350058, 3561065, -12778601, 33640332, -9990631, 7335268, --11106785, 3878892, -20858508, -8732205, 44769128, -1823751, -20946556, 5119064, -4068408, -17020418, --13842680, 2493229, 23553064, 64255396, 28704340, 56952340, 29635274, 25293062, 23938000, -16954920, --14346265, -16224239, 6949257, 46664820, 14841259, -39041788, 16640314, -41975252, 20802674, -26634702, --5847061, -23387708, -25300578, -1243930, 3030636, -411780, -31607202, 40862856, -8514773, 15325517, --39922256, 10584947, -9443559, -12283070, 20379082, -16916802, 40968620, 4799089, -16454020, 2063195, --12450573, -16928614, 11370389, -27965068, -6212134, 35014184, -7881802, 14297946, -2121177, -25472378, -27632208, -15067819, -58098024, 7154342, 4110821, -283468, 6141267, -8029978, -11513734, -3288871, -25956098, -49784576, 29148870, -11778411, -7166153, 32670206, -20382842, 9567040, 11826192, 47452948, -16291885, 20944944, -3620121, 28333900, -22932978, 22462142, 3445638, -8759586, 5778879, 1296006, -681289, -12326556, -3437048, 2128693, -5477694, -9244917, 19054622, 259846, -1636383, -5760088, -6185290, -7643431, 16958678, 9935333, 9002251, 2056753, -334471, -1715303, 14153528, -11623255, --15038828, 5603859, 7301982, -795106, 12681965, -5642514, -2844342, 558346, -4653597, -14486925, --14642617, -1460826, 4576825, -7259032, 2251100, 4492536, 4898410, -3997541, -585726, 9319542, --13623099, -24177444, 39688184, 36976448, 128737352, 52049100, -70138960, -32889786, -34357592, -53830436, -37567544, 115807888, 46342160, 22031034, -29013040, -7915088, -1941862, -1292248, 55576340, 38143068, -24253144, 83699784, -100140384, 6597607, 52366388, -12608413, 10777684, 54943368, 9632001, -15581604, -29603598, -55146308, -110787608, -10485626, 10902238, -42881492, -4858682, 59466508, 10028212, 3588982, -22584012, -46783468, -95454040, -87126096, -39672612, 28950228, 56761752, 125801200, 31594316, -15969762, --15792058, -33964600, -75163000, -22742926, 55020680, 55458764, 58083528, 56726856, 35562328, 29591788, -8554501, 12994424, -48297980, -29582124, 7194607, 13612362, 24776056, 30447560, 74711496, 19653234, -43486544, -28527710, -28229746, -50608672, -11020349, -38687456, -9250823, 77973520, 100024416, 2240362, --4054449, -62228172, -71832256, -40390948, -17080548, 39961448, 21242372, -4318053, 14816563, -5479842, --10284299, -18753438, -17803176, -2348273, 4505421, 3718368, 21965000, -1571958, -496606, -11232950, -356482, -13991393, -4730370, 51540, -20671140, -9294309, 411780, -5637145, -1481764, 12079596, -10704669, 25223270, -11143830, -4583267, -25596394, -20706574, -15734076, 26125750, 16543140, 8188892, -8652748, -8114804, -22742926, -18330384, 789737, -12926778, 22186190, 32952600, -8517457, -91468304, --57002804, 33371896, 86161872, 101055208, 209268528, 128189208, 86421720, 77004472, 59290412, -10017474, --91162832, -99053760, -193261184, -204773840, -194810048, -123944704, -43750148, 43570296, 74320648, 124753232, -121874528, 86133960, 84371408, 108649784, 103573672, 93591632, 58783068, 41459320, 35929548, -3372086, --6679211, -119639000, -85850488, -107017160, -130326488, -54338852, -127279744, -102146136, -187348624, -163325264, --116372136, -77200960, -11916387, 97542464, 117423872, 99558416, 105678744, 98485744, 181598736, 237217488, -211356416, 210297712, 184953632, 179213952, 132652216, 133264784, 28134720, -89485640, -187132800, -178376432, --267623712, -222709088, -324954016, -386380096, -343978016, -326083040, -196828688, -136566544, 24632712, 65036544, -152207200, 227101760, 349377344, 303155424, 436951168, 377958208, 270214112, 266318576, 120735288, 8944269, --24729884, -94681480, -165959680, -197671568, -236801408, -204694928, -186028448, -178929408, -145939760, -149774096, --123605936, -108258408, -33475512, -23013508, 29337310, 69844224, 79685600, 104644728, 148240800, 180031072, -191355296, 200879920, 146976464, 122148872, 117831888, 43910136, 28419262, -66788888, -160451392, -212955216, --218491424, -243868784, -155523984, -176704080, -118485264, -85106928, -24205898, 42155104, 82562160, 126500744, -130667400, 197745120, 202465840, 195067744, 164701792, 148314880, 58227408, 14848776, -37970732, -84294104, --161159520, -189090768, -157872256, -106834088, -95185600, -66264904, -61289720, -32001264, -5160403, 7349763, -4319127, 27973122, 31084826, 50520088, 42119132, 39662948, 36180268, 42039140, 28331752, 27146340, -29990146, 30527016, 11153493, 3393561, -7248831, -1510218, -4686883, 2255932, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-1261647, 4443144, 4995047, 2682744, -1933272, -7547868, -6924024, 2508798, 3972308, -1468342, +7419019, -1438814, 4425427, -5273683, -4651987, 2025614, 181462, -1371168, 1959042, 4809290, +-2097555, 664646, -2753611, -278099, 252866, 1968706, 1832340, 2467996, 406411, 1467805, +5493263, -2124935, -2575370, -2780455, -4983236, 1428614, -1050656, 9104257, 1767379, -689879, +713501, 5521718, -513785, -1209033, -1412507, -3245922, -597537, 4244502, -656593, 1757715, +4293894, -1353452, -312459, -6916508, -4065724, -6307697, -1236414, -1836099, 927713, 338229, +905164, 2242510, -1514513, 1080721, 67109, 550830, 957241, -2306398, 2172180, -751082, +-2623688, -339302, -2645700, -811749, 243739, -4124779, 1087701, 179315, 3170760, 326418, +-58519, -1899449, 421444, 3156801, 1543504, -796180, 348966, 695785, 766115, 2405719, +285078, 142271, -586800, -371515, 238908, 86973, -251256, 1584843, 865436, 937914, +670015, 488016, 201327, 471910, 5119064, 12112345, 4767951, 2874944, 3352222, -7099044, +-846109, 3080029, -973347, 1211718, -6497749, 6389301, 8629663, 1501628, 3849365, -1808181, +-5071820, -7830263, -8595840, -5697274, 6795175, -6412923, -4092567, -5425618, 1733019, 4532264, +843424, 623307, 2517388, -245350, 1586454, 5582384, -792958, 4642860, -4422743, 4236985, +2930778, 2697776, -2334852, -7196218, -1544041, 4136054, 2433099, -2004139, -251256, 1437203, +-315143, -3467649, -739271, 2958159, -1022202, 336081, -1728188, -371515, 204011, 994285, +5079336, 2137283, -2618320, 448824, 411243, -1719598, 918049, -2508798, -304943, 4137127, +1333587, 4640712, -3318936, -2831994, -1708860, -724239, 2347737, 5259188, -3039226, -3791383, +4510253, -417149, -97174, 164283, 1549946, 1125281, 3789235, -1061931, 1760937, -2309082, +-2179696, 178241, 1016834, -152471, 67646, 879931, 940598, 734439, -1966021, 2207613, +-461172, 3546569, 1509144, -3982509, -3751654, -4267587, -664109, -3483755, -7330973, -6988449, +7218767, -158377, 1524713, -54224, 4399657, -6499896, 9663676, 8576513, 450435, 457414, +19327, 255014, -947577, 3358665, 2619393, 212601, -5490579, 2382633, -1699196, 2643552, +-760209, 5857262, -1358283, -3408594, -1538672, -919123, 2176475, -36507, 3628174, -5815386, +3141769, 1014149, -3221762, 9152038, -1447404, -1310502, -186294, -142808, -2406792, -779000, +4890894, 3998615, -8571144, -4046396, 4366908, 1255741, -2045478, 7463043, 279173, 1672890, +7354595, 3034395, 5775121, 1629940, -2209224, -2996277, -5765994, -5593121, 819265, 2976949, +7157563, 272730, -2909304, -3648575, 1250909, -67109, -1990717, 2320893, -799401, -1835025, +1680406, 3875671, 1263257, -1943473, 1949915, 2018635, 2538326, 1624035, 135291, 241592, +-2393908, -504659, -25770, 1230508, 1044751, 1974074, 1916629, 1585917, 609885, -155693, +-9784472, -3417183, -4757750, 4440996, -3248069, 2882997, -3512747, -1459752, 8306467, 4052839, +-5506148, 2508798, 7922604, 1155346, -2771865, -5565741, -6675990, -4584878, -6713034, 4454418, +1017907, 2448668, -1285806, -3045132, -3204046, -5922223, 310848, -188442, 1408749, -1447941, +-5378373, 82678, 5750425, -1278827, 68719, -2869038, -5729487, -8485782, -727997, 6107444, +2223183, 638876, -2874407, 777926, -4600447, -1511829, -3461207, 436476, 783295, -5244692, +5916855, -3335042, 7528541, 2843268, 716186, -3424163, -1794760, 1930588, -430570, 1826435, +4041564, 817654, 1603633, -4476430, 2641405, -2252174, 6920266, 8566849, 3932043, 5756330, +2681670, -882079, -6011344, -3885335, 496069, 4427575, 4465692, -3575560, 469225, 4207458, +-5505611, 5434744, 348966, -2792266, 1792612, -1173600, -263604, -3105261, 609349, 877247, +535797, -2491618, 659814, -1761474, -2335925, -818191, 165893, 1029182, -1524177, 374736, +-660888, -2167348, 231928, 1782948, 748398, -1552094, 1003412, -1168231, 3275986, -7900593, +1037772, -8448201, -37581, 1298691, 785979, 3816079, 382252, 609885, 14949171, -1869385, +-6602976, -7115150, 7509214, 5037460, -5665062, 1376537, -6317897, -2700461, 212064, 7158637, +-8864812, 2593087, -345208, 1422171, -674847, 9087614, -4693326, 2570001, -1418413, -2392834, +1382443, -425202, 2724620, -2767033, -2576444, -7670275, 1207960, -2538863, -1649804, 621160, +-2716030, 2279017, -4329327, -2565169, -7619809, -215822, -6764574, -2842732, -8046085, 5997922, +1221918, -2453500, 5267241, -6084895, -22549, -11609297, -616865, 4038343, -307627, 3465502, +7408819, -2576981, -1030792, 9278740, 3918621, 3596498, 5665599, -2902861, -8543227, -883690, +-5108864, 3764539, 8540006, -1508607, 2517388, 4564477, 3835943, -425202, -697932, 1085553, +183610, -1545651, 2318209, 2090039, -3527242, 1214402, 3022583, -1472100, -1056025, -5237713, +-1196148, -2181844, -700080, -2264522, 494995, -519154, 445603, -197032, 393526, 1402844, +-1517197, 593779, -600222, -1540283, -173946, -223875, -439697, 164819, 946503, 1544041, +-1428077, 566399, -1200443, 271657, -97174, -1603633, -607738, -1076426, 4223027, 4776004, +1727114, -2874944, 2066416, 1255204, 9092983, -1377074, -1955821, -12259447, -3469260, 9233643, +9004399, 5803575, 4562329, 13140452, 807454, -15670188, -4024921, -2602213, -3803194, 8370892, +-1330903, -3030100, 9740986, 1534377, -4024384, -1384053, 3885335, -3448859, -1372779, 1200443, +-1251983, -5451924, -2483565, -246424, -5285494, -2408403, -2223183, 3695819, -2484639, 7109782, +6895570, 681289, 6558952, 4616553, -2971581, -999117, -2257005, -10180683, 1140314, 2115808, +-9701257, -1380832, -2754148, 3484292, 8853538, 1361505, -8989367, 1333051, -3468723, -6041409, +4897874, -1402844, -6439767, 2933463, 2473364, 7128572, -571768, -864362, 5236639, 6214281, +6811818, -6978785, 4937602, -873489, -1191317, 1860795, 7354058, -306553, -1967095, 2352032, +1118302, -6213744, -825707, 8594766, 1887638, -521302, -1077500, -3837553, 2757906, -1388348, +-1760937, 325344, -256624, 2018635, -132607, -2621541, -1909650, 3609383, -445066, 1450625, +-1612760, 1770600, -1331977, -948114, -1317481, 947040, 1902671, 6259915, -16042240, 6675453, +-1748052, -3659312, -3292629, 2753074, -1519882, -9512816, -10129680, 1239098, 15810848, 4358318, +-11494943, 2597382, 9383967, -6744710, 1222455, -1701344, 5597953, -33286, 5166309, 13830332, +10074920, 6289980, -229244, -1139240, -6385543, -6843494, 2731599, -17909476, -2826625, 8496519, +956704, -900869, -8573292, -3054259, -359167, -383863, -4162897, -8865886, 9947144, -3430605, +-2173254, -1597728, -8212515, -9238475, -284005, -4505958, 648003, 4405563, 3375308, 3729105, +-7330436, -1901060, -3598646, -2288681, 11806328, -1240709, -5382131, 383326, 15138686, -8069707, +2549063, 11143293, 352724, -2554432, -5609764, 3393561, 648540, 8026220, -4310000, 6791954, +5515275, 10512469, 5091684, 7874286, 839666, -5150740, 1113470, -209380, -2967823, 4759361, +6778532, -5615670, 3702262, 2029372, -5046050, 665720, 1800128, 1418950, 1842004, -2884071, +1644436, -3161633, -948651, -873489, 227633, 593779, 1366873, 1732482, -352187, 2594697, +-187368, -1155883, 904091, 1727114, -579821, 1048509, -2697776, 1074816, 9222369, 13238700, +8085276, 1350767, -2843268, -4953708, -10998874, -3182034, 7249368, -14955613, -6142340, 13626321, +-18886044, -3415573, 10546829, 13255343, -1371168, -13310641, 1833951, -5093295, 17792438, 7893076, +-12241194, -7873749, -1893544, -7548405, -15402826, -7703561, -6841883, -5574331, -12476343, 6266358, +2199560, 7693360, -4758287, -2305861, -10976863, -1128503, -9526237, 985695, -6337224, 1394791, +3313567, -14694694, -4836670, -5598490, -3911642, 3158949, 3123515, -4696547, 14467597, -945967, +-3798899, -2724083, 1386201, -3406983, -1207960, 5379984, 4578435, 6023692, 7934415, 7532299, +585726, 4937065, -2423435, 11288248, 12073153, -6085969, -3171833, 7407745, -223338, -18336290, +832687, -9316321, 5672041, 5788006, 10354629, -7872138, 4402342, -11042898, -1082332, 6297496, +-2703682, 9841381, -2575370, -1207960, 1969243, 638340, 1373853, -659814, 571768, 4181151, +-3112241, -800475, 4019553, -626528, 3155190, -4719096, -4102768, 2767033, -664646, 863825, +433255, -567473, 721018, -2824478, -741419, -494458, -1230508, -1910187, -666257, 1493038, +1794760, -92342, -10160819, -12294881, -6022081, -11878269, -16950088, 11992086, 1185948, 6710350, +-9367861, -9747428, -13442711, -9094056, 4149475, -9970230, -8952859, 12193949, -3053722, 573378, +2948495, 6965900, -5417028, -4109210, 2011118, -3291019, 1905355, -621160, -6020471, -11523934, +-18037788, 5957657, -12956306, -11883101, 624381, -3134789, -833224, -6691022, 3023120, 3433290, +-14703821, -326418, -3229279, -5761162, -8175470, 4642323, 993748, 14688251, 1752347, -8252780, +-513249, 1357747, 6060736, 2529736, 13030394, -1127429, -14179835, 6060736, -3009162, 6396280, +-8478802, 1840394, 4811437, -25080998, -11909407, 8854612, -770410, -2700461, 3850975, -1285269, +15833397, -566936, 10027675, 8704288, -12834436, -14904610, 867047, -16510928, -379568, -824634, +333934, 2389076, 10342281, -372052, -6495065, 5919539, 7782481, -7274064, 1275068, 2330020, +7828652, -3836480, 274878, -3890167, 2647847, -224949, 1657857, 2593087, 4218195, 4258997, +-129386, -4112431, 183610, 3025268, 952946, 626528, -3747896, 397821, -3753802, -560493, +2032056, -613107, 3688303, 2728915, -157840, 770410, 2986613, -2782065, 5267241, -118648, +-2309082, 2355790, 8559870, 35158604, -8695698, -23583128, -2152852, -10304163, 25499220, 1992865, +14262513, 7750269, -4498442, -11282342, -5114769, -12294344, -3213709, 17214766, -19205484, 831076, +-15676631, 4262218, 1255204, 7653632, 1721745, -7478612, -12712566, -14747307, -2783676, -14467060, +-11384885, 1874753, 3332358, 10790568, -10115185, -20985748, -4440460, -7275138, 2481954, -9856950, +-6709276, 3046743, -5294084, -8338142, -606127, 930934, -4308926, 20487530, -4231617, -3340948, +5136781, 5366562, -6106370, -2562485, 15113990, 12721693, 8308614, 15992848, 12482249, 44560, +5214091, 9094056, -6771553, -6324340, 1843615, 6558952, 10606422, 4376572, 21544092, 2384781, +14443438, -4078072, -8359617, -5359583, 30586072, 5456756, -3978214, -3670050, -10991895, -10493679, +-7577396, -7352447, -8798777, 3533684, 7049652, -7473243, 2408940, 7625715, 3779571, -6898791, +1403917, 7778186, -1941325, 4313221, -3872987, -1069447, 1737851, -1297080, -869194, -2310156, +-4946729, -755377, -4480188, 2391223, 3753265, 1930051, -3735011, 4980015, 3225521, -2732136, +-3263102, -5051419, -1505386, -1384053, 1336809, -1091459, 2363843, 1772748, 443992, -478352, +89121, -4026532, 1690607, 6812355, -30944702, -11268920, 15279346, -3518652, -15878494, -14592688, +-5120138, 16877074, 8762807, -13286481, 7306813, -17734456, -7480760, -2004139, -11887396, -15917149, +13370770, 7563975, -14442364, -4904316, 30726196, 7302518, -13759465, -18648748, 264141, 10244571, +1666447, 1862942, -21562346, -511101, -2471217, -15336254, -9043591, -6119255, -12403329, -5749888, +3570729, 590558, -13086765, -12960601, 1657321, 8315057, -224412, 11106785, 18422726, -12859669, +11416023, 8710731, 3629247, 2580202, 13889924, 4422206, 8565239, 5817533, 7720204, -2514703, +-1671279, 15939161, 24795920, 4186519, -5766531, 3118683, -3564286, -9315247, 15782394, -7637526, +-13298292, -20956756, -7225746, -24432996, 12257300, -9923522, -4225711, -1359357, -3520800, -8741332, +-1462436, 9824201, -11150809, -919123, 5157719, -3141232, -10872173, 5527623, 901406, 3103114, +-711891, -1227824, -3879966, -363998, -2004676, 5895380, 1549410, 1676648, 963146, 1970316, +95563, 3034931, 2030446, 5234492, -7219303, -784905, 616865, 4862977, -1962263, 4064113, +-4342749, 1574642, 1087164, -877784, -2392834, 4262755, -1886028, -263067, 2441689, 817118, +261456, -5805185, -13565117, 11527692, 6928319, -2055679, 7719667, 5714454, 16422881, 12638478, +-26656714, -8862128, 29672318, -23380192, -6886980, -14168023, 21150566, 9400610, 9758166, 4093104, +3118683, 8450885, 22437446, 10661183, -9848897, -202400, 765578, -634581, 8897025, 9968619, +1236951, 5896990, 5667210, -5149129, 6969122, 4167192, 13874892, -6655052, -13295608, -11443940, +-8888435, 2635499, -1135482, 5286031, 6030671, 6036040, 12222403, -5350456, 2598992, -5392869, +-9486509, -3853660, 1035624, -10964515, 14031658, 16949552, -18396418, 6277095, -12736726, 10420664, +-2062121, 4050154, -1376000, -10198937, -2462090, 11727945, -9154186, -2825015, 2097018, -18808736, +-7169374, 3939022, -14529874, -1012002, 23293218, 11573863, -1553168, -5329518, 18588618, 4876399, +13390097, -4208531, -5989332, 19390704, -6571300, 6051609, 2592013, 2753074, -3985193, -2927020, +-3562139, -2472291, -6519761, -4032974, -4541928, 650688, 4202626, -1547799, -9160628, -2947958, +-1260036, 1032940, -277025, -2285460, 42950, 2583423, 4478577, -3576097, -106837, -9888088, +1675037, -1235877, -1866700, 6665789, -117038, -646393, -3935264, 4075924, 1120450, 6037114, +-2063732, -357019, -4051228, -447213, 18521510, -1506997, -4325569, -15394773, 652835, 1467805, +-4153770, -325881, -7161321, 2708514, -22139482, 20195474, -4100620, -7141994, -14021458, -15804943, +-1655173, 19266686, -3515431, 5342940, -11926587, -6871948, -3345780, -11583527, -14010183, 12790949, +-7925289, -6432788, 11310796, 11026792, -15611132, 5436355, 5870684, 13502840, 11125039, -4068408, +-9889699, -6219650, -15181099, 16680579, 10945187, 5539971, 11870753, -12314745, 8410083, -1785096, +7707319, 8571144, -8091719, -634581, 27118424, 22754200, -17226040, 6890738, 14067092, -10828149, +3330210, -25365540, 7575249, -13724031, 11320997, -7961796, -8795019, -6199786, 30258044, 1731946, +-8846559, 2686502, 10160819, 1339493, 6034966, -16317654, -1880659, 27197344, -915902, -10681047, +-16655883, 514322, -12334609, 7686918, 7822746, 9506373, -17011292, -17743584, -4758287, 2987150, +5814312, 1852742, 70867, 435402, 6446746, -4353486, -1767379, -1348083, -2881386, 3187403, +2680060, -5427228, -3759170, -8337069, 5077188, -3058017, 2206540, 3651259, 5345624, 4267587, +1821066, 8375723, 510564, -1952063, 3989488, -6223945, 3454764, 2410551, 1682017, 5543729, +5918465, 1100049, -845572, 3503083, 377420, -537945, -6575058, -8588861, -1648194, -663036, +-1087701, -16742856, -868657, -1991791, 4880157, -24310588, -11260331, -13619878, 11486890, -5768141, +17092896, 10424959, 21763136, -10776610, -913754, -17056388, 14504641, 26466126, -8246874, -20946018, +2043868, -4242891, 32416266, -7939247, -12734578, 12412455, 6802155, 5228049, 12202539, 4212289, +-40770512, 205622, -2747169, 15976205, 28619514, -26985816, 1060320, 8174397, -12983686, -2566780, +-36968932, -8303783, 18838264, -30351998, -18211736, -9271224, -11911018, 12191802, -7377680, -10772315, +16279537, 5018133, 5931350, 16858284, 1840394, -5713380, 11939472, 17686676, -17149268, -12706661, +26209502, 18095770, 6077379, 8396661, 6188511, -11733314, -17044578, 46708, 219580, -3435974, +5361730, -10245644, 7315940, -14215805, 5789079, 33410014, -15524696, -12753369, 18332532, 5354214, +-6249178, 11672110, 16112570, 12050068, 14238890, 7128035, -7243463, 5946919, -17581448, 9468792, +3980361, 5039608, -8922258, -2591476, 1864553, -757525, -1783485, -2603824, 5769215, 11367168, +-4414153, -10835129, 6919193, 13135621, 6820408, 5211943, -15465640, 9441412, 1005022, 5143224, +-2480344, -5218922, -1235877, 7971996, 719407, -1382443, -6673306, -471910, -3891240, -1845225, +-3084324, 3590593, 7460895, -4411469, 295279, 4786741, -1844152, -742493, -4076461, 821413, +-2731599, -2965675, 9670656, 8733279, 14242112, -32988570, -60928408, -28082644, -4271345, 20737712, +1468342, 22868554, 21125334, -6389838, 3424163, -5175436, -11587822, -19051402, -11087458, -13752485, +-7998840, 21725018, -28238336, -4909685, -23535348, -29190746, -5112085, -29460254, -23703388, 2902324, +-6201396, -3400004, 5360656, 25853556, 1804960, -18762028, 1069447, -2250563, -5645198, -24363738, +-1597191, 29041496, 2686502, -495532, 11766600, 22561464, 15187541, 3946001, -9188009, 7866770, +-7718056, -20679730, -37922952, 36074504, -4566624, 30051350, -2530273, 399969, -10799158, -17364552, +31679142, -18000744, -14626511, -1520955, -23082228, -21686364, 18031346, 13224204, 6940667, -2301566, +9185861, -16013786, 6231461, -12995497, -18344880, -20022600, -15614890, -6438156, 15515032, 987843, +5576478, -9262634, 5494337, -12119324, 8833137, 6860674, 6293738, -3946538, -497679, 7817378, +-2118493, -9453223, -7124277, -9357123, -799401, -6905234, -1588601, -2423435, -2505040, 2767570, +1147293, -3710852, 1619203, 4923107, -1277753, -3118146, -7314866, -47782, -5018670, -680215, +-795106, -3471944, 8587787, -8027831, -7507603, -3543348, 4575751, -7104413, -7137699, 1040993, +-5959804, -27380, -1031866, 3370476, -743029, 1145146, -4796405, 1972464, -9982578, -5036386, +-1467805, -21164526, -15495705, -23486492, -242129, -22465364, -26086558, -4413616, -11917461, -28652264, +-39670464, 4494684, -15010374, 7315940, -2858301, 14875619, 33423972, 1688459, 3463891, -16959216, +-18142478, 15108084, 8449274, -12283070, 74088, 9853192, -22597434, -17393544, -1207423, 28680718, +-24647744, 320512, 609885, 13198971, -21046950, 21949430, 11552925, 6213744, -548682, -9155260, +-24424942, -258235, -5822902, 8833137, -13239774, -32455458, 26767846, -19559282, -8682813, -1372779, +26197690, -19908248, 9214852, -16354162, 10167261, -5929739, -24021752, 11502459, -30616674, -6774237, +-8756365, 10703595, 25174950, -14546517, 9351218, 25458956, -20341502, 3360812, 6201933, 5979132, +7577396, -37153076, -11069204, -6292127, 13429826, 2808372, -1074, 6784438, -6470905, 14826227, +-2641405, 3375844, -14221174, 12374338, 3245385, -22900228, -10378252, 10784663, 13569949, -1910724, +-3356517, -8957154, 12724914, 1596654, 292058, -23818278, 3974992, -11457362, -17942762, -5453535, +-3539053, -2320356, -10513006, -13662291, 5012764, -3142842, -6620155, 3936875, -1267552, -1952600, +908386, -3652870, 1415192, 7379828, -13774497, 1410360, 2734821, -4567161, 10136123, 9336185, +10736344, 4275103, 6532109, -6674379, 2911451, 361314, 3177202, -3024731, 272194, -186294, +4576288, -2682744, -6071473, 43771084, 4236449, 18607946, 49758268, -23159000, -13325136, -19375672, +-7500624, 23212688, 1309965, 28543816, 7420093, -847182, -10788958, 21608518, -13561359, 5046587, +-9130027, 9017284, -14354854, 16500191, -8156680, -3652333, -9537512, 12720083, 8404714, -13676786, +-3495030, 13381507, 3793530, -8728447, 682900, -11271068, -37734508, 16422344, -19922206, -28722594, +17638894, 8043400, 19093278, -1680406, -18995566, -6901476, -5233955, 11330661, 14774151, 16771310, +27578522, 27523224, -12359842, 3896072, -29207926, 408022, -21321292, -37629820, -3912715, -30661234, +9783936, -24467354, -16375637, -16171626, -23243826, 2382633, -5659693, 2037962, -7054484, -2816425, +-2204392, -39818104, 6184753, 6154688, 8917426, 19245212, -3805341, -31646930, 18194018, -20469278, +11697343, 11791833, 25740812, -13992467, -13059922, -8449811, -5199058, -18351322, 7231115, 4326643, +2183991, -4342212, 6381248, -9129490, 9206799, -1466195, 1813013, 2836826, -11500312, 8590, +4345433, 11335492, -3067144, -6717329, 4846334, 7871065, 9565966, -5971615, -16106, 5471252, +-734439, -978179, -3659849, -7104950, 4992900, -74088, 3169686, -3942780, -615791, 6646462, +-4420058, -6681359, -3921842, 1120987, -2920578, -11787001, 19014894, -4784594, -3966402, 1709397, +3612068, -3132105, 3470871, 4625680, -1901597, -470836, -2617246, -3830037, 31152472, 58289148, +-31998580, -25845502, -45173928, -91829088, -22741852, -9621800, 20497732, 12404402, -7974144, -17723182, +25060598, 30662308, 2624762, -1484448, 141734, -24228448, -14318884, -17184164, -13228499, -25628070, +-381715, -6475737, -3129421, 17579838, -24101208, 19286014, 18060338, -5648419, 9281961, -1059246, +-42859480, -30514132, -17062832, -15599321, -7218767, 3381213, 16472810, 5349919, 8839043, 41352480, +37568080, 8515310, -27975270, -14535243, -1253594, -14365055, -26530012, -66125852, -55605868, -24996710, +-5994164, 2729452, 14439680, -45870788, -26468272, 23790360, 27567784, 33143188, -30238718, -36666136, +11915850, -22365506, 54385024, -27431420, -3157338, -16139413, -8761196, 7524783, 16073378, -8019778, +-21530672, 19987704, 19356344, -4378719, 22177064, 19739132, -43123620, 38585448, -25010132, 134218, +-7369627, -25753698, -7245073, 13065827, 9715753, -2077690, 5029944, -15697569, 353798, 7919920, +10653666, 16839494, -12637941, 2575907, -3616899, -6838662, -17890686, -2174327, -17235166, 15220827, +-2809446, -18289582, 2912525, -20952998, -1409823, 2553895, -4875862, -9050033, 614180, 1704565, +2193118, 6868727, -1301375, -298500, 12233141, 4014721, -12348031, -14127221, 3855807, -9363029, +-19967840, -6830072, -18784040, 6199786, 5935108, 14779519, 2004676, -15200963, -10908680, 10790032, +54786064, -18260590, 17663054, -770947, -24383066, 3764002, -49229452, -11090142, 10584410, 966905, +-28655484, 16961362, 50190452, 35205848, -15529528, -31428424, -13381507, 3530463, 52741124, 7093676, +1330903, 199716, 24387362, 25071334, 6556805, 19167366, 15547782, 29473676, -8398272, 3363496, +18833432, -17188996, -26161182, 14694157, 43274480, 9375377, 20972326, 2007360, 12875775, -57930520, +10721312, -2268817, 13084081, 56785372, 22915798, 7674033, -5640366, 25445534, -5814849, -11940009, +8992051, 15810311, 33421288, -10780368, 20770998, 3777424, 5759551, 13145284, 16908750, -534723, +-22141094, -13745506, 5170067, 42828340, 29335700, 22785876, 24674588, 20656108, -5931350, -53048752, +-38113004, -72768560, -1030255, 22178138, 41872172, 6513855, -30569966, 10085657, -18927920, 6062883, +14447196, 4367445, -8880382, -4922033, 128849, -4111358, 11707007, -8053601, -21189222, 396748, +7012071, 9404368, -13721347, -6219113, -25491168, 6302328, 11033771, -9785546, -8825621, 6358162, +-5037460, -6297496, -5559835, -19791746, -4306242, 20402706, 12720083, 18472654, -10027675, -20919176, +-15575699, 13568875, 10634339, -4930623, -1006096, -1278290, 3717831, -5888937, 12168716, -13958644, +-7978976, 969052, 2218888, 8035347, -17350058, 3561065, -12778601, 33640332, -9990631, 7335268, +-11106785, 3878892, -20858508, -8732205, 44769128, -1823751, -20946556, 5119064, -4068408, -17020418, +-13842680, 2493229, 23553064, 64255396, 28704340, 56952340, 29635274, 25293062, 23938000, -16954920, +-14346265, -16224239, 6949257, 46664820, 14841259, -39041788, 16640314, -41975252, 20802674, -26634702, +-5847061, -23387708, -25300578, -1243930, 3030636, -411780, -31607202, 40862856, -8514773, 15325517, +-39922256, 10584947, -9443559, -12283070, 20379082, -16916802, 40968620, 4799089, -16454020, 2063195, +-12450573, -16928614, 11370389, -27965068, -6212134, 35014184, -7881802, 14297946, -2121177, -25472378, +27632208, -15067819, -58098024, 7154342, 4110821, -283468, 6141267, -8029978, -11513734, -3288871, +25956098, -49784576, 29148870, -11778411, -7166153, 32670206, -20382842, 9567040, 11826192, 47452948, +16291885, 20944944, -3620121, 28333900, -22932978, 22462142, 3445638, -8759586, 5778879, 1296006, +681289, -12326556, -3437048, 2128693, -5477694, -9244917, 19054622, 259846, -1636383, -5760088, +6185290, -7643431, 16958678, 9935333, 9002251, 2056753, -334471, -1715303, 14153528, -11623255, +-15038828, 5603859, 7301982, -795106, 12681965, -5642514, -2844342, 558346, -4653597, -14486925, +-14642617, -1460826, 4576825, -7259032, 2251100, 4492536, 4898410, -3997541, -585726, 9319542, +-13623099, -24177444, 39688184, 36976448, 128737352, 52049100, -70138960, -32889786, -34357592, -53830436, +37567544, 115807888, 46342160, 22031034, -29013040, -7915088, -1941862, -1292248, 55576340, 38143068, +24253144, 83699784, -100140384, 6597607, 52366388, -12608413, 10777684, 54943368, 9632001, -15581604, +29603598, -55146308, -110787608, -10485626, 10902238, -42881492, -4858682, 59466508, 10028212, 3588982, +22584012, -46783468, -95454040, -87126096, -39672612, 28950228, 56761752, 125801200, 31594316, -15969762, +-15792058, -33964600, -75163000, -22742926, 55020680, 55458764, 58083528, 56726856, 35562328, 29591788, +8554501, 12994424, -48297980, -29582124, 7194607, 13612362, 24776056, 30447560, 74711496, 19653234, +43486544, -28527710, -28229746, -50608672, -11020349, -38687456, -9250823, 77973520, 100024416, 2240362, +-4054449, -62228172, -71832256, -40390948, -17080548, 39961448, 21242372, -4318053, 14816563, -5479842, +-10284299, -18753438, -17803176, -2348273, 4505421, 3718368, 21965000, -1571958, -496606, -11232950, +356482, -13991393, -4730370, 51540, -20671140, -9294309, 411780, -5637145, -1481764, 12079596, +10704669, 25223270, -11143830, -4583267, -25596394, -20706574, -15734076, 26125750, 16543140, 8188892, +8652748, -8114804, -22742926, -18330384, 789737, -12926778, 22186190, 32952600, -8517457, -91468304, +-57002804, 33371896, 86161872, 101055208, 209268528, 128189208, 86421720, 77004472, 59290412, -10017474, +-91162832, -99053760, -193261184, -204773840, -194810048, -123944704, -43750148, 43570296, 74320648, 124753232, +121874528, 86133960, 84371408, 108649784, 103573672, 93591632, 58783068, 41459320, 35929548, -3372086, +-6679211, -119639000, -85850488, -107017160, -130326488, -54338852, -127279744, -102146136, -187348624, -163325264, +-116372136, -77200960, -11916387, 97542464, 117423872, 99558416, 105678744, 98485744, 181598736, 237217488, +211356416, 210297712, 184953632, 179213952, 132652216, 133264784, 28134720, -89485640, -187132800, -178376432, +-267623712, -222709088, -324954016, -386380096, -343978016, -326083040, -196828688, -136566544, 24632712, 65036544, +152207200, 227101760, 349377344, 303155424, 436951168, 377958208, 270214112, 266318576, 120735288, 8944269, +-24729884, -94681480, -165959680, -197671568, -236801408, -204694928, -186028448, -178929408, -145939760, -149774096, +-123605936, -108258408, -33475512, -23013508, 29337310, 69844224, 79685600, 104644728, 148240800, 180031072, +191355296, 200879920, 146976464, 122148872, 117831888, 43910136, 28419262, -66788888, -160451392, -212955216, +-218491424, -243868784, -155523984, -176704080, -118485264, -85106928, -24205898, 42155104, 82562160, 126500744, +130667400, 197745120, 202465840, 195067744, 164701792, 148314880, 58227408, 14848776, -37970732, -84294104, +-161159520, -189090768, -157872256, -106834088, -95185600, -66264904, -61289720, -32001264, -5160403, 7349763, +4319127, 27973122, 31084826, 50520088, 42119132, 39662948, 36180268, 42039140, 28331752, 27146340, +29990146, 30527016, 11153493, 3393561, -7248831, -1510218, -4686883, 2255932, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -5173288, --13850196, -1168231, -2212982, -1891933, 205622, -2310693, 863288, 1357210, 5676336, -1917166, --228170, -5236102, 386010, 5262409, 366683, 3803194, -1122597, 1596117, -2198487, -3307125, -111669, 3615289, -463856, -4532264, -186294, 4386236, 1431298, -1881196, -1564979, -208306, --601832, -1027034, 54761, -744103, -1506997, -194347, 904091, 612033, -196495, -3453691, -5136244, 6989523, 230318, 811749, -2819646, -1607392, 561567, -3653407, -4043712, 2419140, --3282966, 2390686, 3110630, 3086471, 1168768, -470299, 847719, 643708, 2344515, -5027259, -447213, -651224, -3643206, -4951024, 160524, 2469606, -1868311, -264141, -557272, -351114, -3506841, 1727651, 486942, 1364189, -1117765, -4074313, 1604707, 658204, 3510599, -4188667, --3149285, 2361158, -1848983, -873489, -3093450, 705448, -1806571, -1703491, 69793, -1365800, --1457605, 408022, -774705, -376883, -1662152, 1044214, -179852, 98247, -420907, 853088, --129923, 276489, -270046, -266825, -12686797, -2997887, 4943508, -763430, -3901441, 1595580, --9404905, -3697967, -1354525, -1771137, -4859219, -5214627, 2791729, 4199941, 3682398, -4881767, --7074885, 731218, -4137664, -7637526, 1743757, -552440, 2153926, 8432631, -2787971, -969589, --5359046, 7276749, 579821, 3595425, 2544768, 5961952, 3080029, 1794760, -5974837, -749472, --5492727, -1588601, 252329, -2381559, 1861332, 1492501, -2592550, -5178657, 3266323, 5258114, -1510218, -2604898, -3934190, -2514703, 1275068, -4507032, -5614596, -1665374, 2795487, -1617055, -1384053, 3475166, 2245194, -2688113, 5138929, 400506, 4378719, -3716221, -3068754, -1840394, --2139968, 2994666, -1704565, 128312, 5188321, 1790465, 141197, -4949950, 1347009, -2003602, -3643206, 5227512, -897648, 390305, -2395518, 1954747, 4655208, -1690070, 2906082, 1272384, -628139, 2350958, 965831, 78920, 1921461, 687195, -138513, -23622, 858457, 738198, --844498, 609885, 658741, 947577, -2592013, 3271691, 4522601, 1822140, -2815888, 1967095, --1316944, 1361505, 8497593, 5231807, -7159711, 4862977, -3935801, -1950452, -1028108, 139586, -3617973, 132070, 9936407, 2864743, -3801583, -2507187, -2464238, 6987375, 1653026, 6729140, -2216740, 4529043, 7031935, 8051990, 3071975, -914828, -798864, 1210644, -6451041, -6013491, -1925756, -4566624, 2597918, 1240172, -1540820, -679142, 1898912, 6717329, -2198487, -2291365, --3452617, 8582418, -1157494, -10719165, -5339718, -4254702, -3892314, 4417374, 4257387, 3731790, -5602785, 2476586, 3513283, -164819, -332323, -166967, 5634460, 1821066, 3307662, -7464653, -492311, 334471, 408022, 483184, 3248069, 2262911, 944356, -3622268, -3593814, 2081449, -1745367, -1073742, -220654, -2920041, -3694746, -3033321, 2062121, 3570729, 442382, 197032, -1253594, -1047435, -125628, -830539, 653372, 622770, 379031, -505196, 1080184, 1708860, --248034, 160524, 385473, -284542, 460098, -719944, 1260036, -1074, -236760, -820339, -1114007, -2172180, 1224066, 345745, 922881, -169651, 18855980, 4178466, 2876554, -2253247, --1306744, 1875290, 1321239, 5076652, 6655052, -258235, 9797894, 3955665, -3455301, -3186866, --247497, 4736275, -552977, -2508798, 5185100, 778463, 14128832, 3750580, 2796561, 633508, --1365263, 718333, 2137283, 2792803, -642635, 82141, 7580081, 1114544, 8344585, -4143033, --4013647, 2808909, 12530030, 3686693, 3025805, -1029718, -5422396, -2072859, 1692217, 430570, --126702, 518080, -7693897, 603980, -3387119, 3140158, 2423435, -2975876, 1766305, 2759517, -1809792, -3551401, -3715147, 947577, 1309428, 75699, -4775467, 1313186, -1861332, 3127810, --444529, 663036, 1939178, -667331, 1069984, -1633698, 520228, 11070815, 1242319, 3969087, -127775, -2957622, 1803886, 729608, 3404299, -6044630, -4267587, 2167348, -900869, 1333051, --1596654, 2407329, 1951526, 324270, -2712809, -945967, -3689914, -576599, -850940, 2450816, --1703491, -368830, 398895, -242666, -889595, -802622, 686658, -856846, -1241246, 73014, -43487, 753230, -2499134, -880468, 628139, 453119, -2720325, -568009, -185220, -3400004, --397284, 2777233, -4158065, -721555, 4229469, -2142652, -6557878, -42950, 10821170, -752693, -8495982, 4348118, 11752641, 1410897, 1100049, 4266513, -3300146, -7017440, -9210557, 2159295, --4686883, 10821707, 6204617, 7640210, -1428614, -3202435, 970663, 1700270, 3595425, 10123238, -1230508, 4205310, -4619238, 3208878, -3273302, 1362042, -1757715, 3313031, 5823439, 756988, -5564667, 2005213, 2793339, -1637993, -1324997, 7385733, -1717450, -1892470, 5604933, -3382287, --300648, 759136, -2433099, -3285650, 2488397, -3763465, -698469, -4794257, -10122701, -1183264, --1529008, -314069, -10549513, -4083977, -3213173, -2789045, 3979824, 10349797, -2642479, 3286724, -5449777, -1577864, 1030792, 858993, 624381, -3854196, 4144107, -4873714, 1260573, 3388192, -9754944, 2978560, 2890513, 815507, -126165, 2868501, -3524558, -105227, 2012192, 876173, -172872, -4027606, 2354179, 2796024, 2890513, -631360, 2150705, 1087164, 604517, 1874216, -1130113, 144955, 1105417, -364535, 855772, 461709, 719407, 1038308, 1412507, 1580548, -1156420, 1025960, 1253057, -850404, 1131724, -13722957, 1202054, 7348689, 3891777, -7707856, --566399, 340376, 1826435, 2795487, -429497, -6008123, -5720897, 864899, 9724343, 4590783, -5770826, 9745281, -6605660, 6943352, 12911745, -1222455, 2917357, -7357279, 2521146, 2598455, --6270116, -3426310, -1346472, 2922188, -6335614, -8425115, 1612760, 861141, -7170985, 507343, -2278480, -1535451, 15305116, -945967, -10823854, -820339, 3758097, 8526047, 3190624, 3771518, --6934762, 1825361, 2209224, -6296959, -391916, -1159104, 10633802, 6391985, -1748589, -3758633, --8211441, 3430605, 3312494, -4975720, -152471, 1850057, 3233037, 3182034, -4175782, -243203, --900869, 9835475, -8361228, 898722, -2169495, 8840116, -632971, -2328946, -3752191, 987306, --3883724, -9276592, 263604, 6808060, 2089502, 4213363, 1095217, -3436511, -1299765, -1806571, -5925445, 2202781, -1600412, -369367, 5381057, 3867618, -1510218, 424665, 852551, 1005022, --98247, 1998770, 1496796, 1160715, 141197, -909459, -340376, 270046, -768262, 97711, --1072668, -515933, 881005, 5214091, 4747013, 1668058, -3483755, 965831, 2272038, 16044924, -10657961, 7970923, 11303280, 4550518, -981400, 1582159, 4177930, -11433203, 5841156, 132607, -6279779, -4636417, -2338610, -7391639, 2074469, 12901545, -12679817, -8088497, -13480292, 6771553, --3090766, 374736, -6149857, 734439, -2308545, -6190659, 2317135, 2945811, -9598715, -1367947, -1703491, -2171643, 5024575, -13942538, -6753299, 14140106, 1391569, -309238, -1439351, 442382, --7249368, -7719130, 416612, -11203422, -2609193, 1065152, 2949032, -4849555, -1140314, 13778792, --930397, 4800700, 10256919, -9644886, -3370476, 2198487, 2401961, 1793149, -2975876, -6906845, -7824357, -919660, -7348152, 5324149, -1345399, 1210644, 2020245, -3996467, -2415919, -1720134, --3009162, -4326106, -5168457, -4991826, -6331856, -1956358, -2685428, -670015, -828392, -122407, -826781, -2639794, -2066416, 1450088, 1756105, 2850248, -157303, -1212255, -3715684, -1090922, --4293894, -2782602, -567473, 810675, -296890, 552977, -1069447, -666257, 3226057, 1213328, -2248416, -2181844, 598074, 505196, 872952, -4393215, 365072, 1292785, 49392, 2325188, --26616986, -14918569, 12118787, -4723391, -5605469, 7218230, 6423124, -11487427, -15331423, -5024038, --5429376, -5881421, -963683, -10689637, -7559143, 3787088, 500901, -14351096, -15631533, -8902393, --4220879, -891206, 8139500, -677531, -5781563, 4321274, -12994960, 295816, -520765, 456340, -4663261, 2408940, -9440875, -7276212, 5816460, 1898376, 21369610, 5112085, -6986838, 852014, -791348, 102542, 5717675, 957241, 2448668, -2306398, -4571456, 1265405, -12127377, -2410014, --5225365, -6597070, 1521492, -9862856, 11455215, -1589675, 4854924, 7985955, 2522757, 4172561, --412854, -5397164, -104153, -807991, -6427419, 8385924, -3404835, 15025406, -372052, -479426, -835371, -4067334, -8076149, 2425046, -6307160, -2745021, 9016210, -11599633, -11132555, 7421704, -7330436, 6032282, -9408126, 6759742, 3022046, 3886409, -138513, 1627793, 2030446, 5228049, -2445984, 1185948, 4138201, -659814, -81604, -3390340, -2367601, -652298, 2877091, -3630321, -652835, -530428, -1882806, -1395864, 1078037, -4634270, -2570001, -3488587, -404264, 1328756, -166967, 3216931, -926102, 3371549, 501437, 1175747, 754841, 2583960, -1899986, -1826435, -5506148, 19712826, -10964515, 9351218, 3972845, 6951942, -2716567, -10838887, 1632088, -2887292, --9976672, 20339892, -1345399, -5731097, -20018306, 12300786, 3524558, -284542, -7423851, -8759049, -321586, 20654498, 7800198, -867583, -1957431, -8951249, -7152731, 5917928, 2729989, -7016366, --4811974, 7165079, 1887638, -363998, 6292127, 9498320, 1581085, 12559021, 14397267, 8624831, --3229279, 3087545, 1241782, 2294050, 7542500, -10685342, 11235634, -842887, -5611375, -8679592, -116501, 7256347, 5198521, -10232760, 2287607, 7946227, 1293322, -7435662, -15806553, -14513231, -3861713, 6298033, 1129040, -5681705, -690953, 11439645, -5235565, -8787503, -16702054, 1681480, -3303904, -12591770, 4745939, 12402792, -5636608, 9624485, 3426310, -11673721, -8534100, 798864, -11935714, -1337346, 12534862, -2273648, -4334159, 2522220, 6410776, 1586990, -2091649, -3466039, -2180770, 5529771, 4620311, 657667, 7455527, 1254131, 5357435, 1199370, 7312182, 972810, -4526359, -202937, 3621731, 1803349, -1767916, -5455682, 484258, -6359773, -845572, -2687576, -998043, -958315, -218506, -5671505, -499290, 2434710, -2683818, 207232, -639950, 236760, --353798, -4154844, 621160, 23737210, 15847892, 3418794, -4641249, -2713883, -3200288, -16558173, --6491306, -372052, 10610180, -7699803, -4080756, -3687766, 315143, 17112224, -13296145, -3762391, --612033, 7945690, -2677912, -10085657, -16480326, 5777805, -11349451, -5417028, -7034620, -7912404, -2556043, -13175349, -6200322, 11372000, 17399450, 627065, -10703059, -9810242, 16051903, -1946694, --8524973, 16475495, 624918, 858993, 808528, -18312130, 7489886, -6888054, 6701223, 5936719, --12237436, -1508607, -12416750, 4700305, -12040404, -2230699, 5181341, 6737730, -3961571, 4030290, --14637249, 9975062, -1055488, 6752763, 5895917, 4035122, -3184182, -3249680, 14766098, -10320270, -7373922, -2658585, -12422119, -7708393, -756988, 13031468, -7478075, 6019397, 1846836, -4230006, -239981, -14865419, 18658412, 11266773, -2129767, -5218386, 9175124, 3790846, -2619393, -4929012, -1090922, -3338800, 4753455, -1136019, 2525441, 7558069, 2828236, 5951214, 43487, 2012192, -957778, -1292248, 211527, -722628, 5327907, 1928440, 7373385, 1076963, -4065187, 5192616, --2099165, -305480, 4051765, -4013647, -1239098, -2190433, -1611687, 3158949, 2053531, 1568200, -6854768, -2195802, -2332704, 9341554, 1786706, -6183679, -14185740, -775242, -18437220, 3173981, -1642825, 9018894, -7363185, -1758789, 4782446, 3980898, 5260798, -12475806, 17645336, 12517145, -2306398, 9255655, -4170950, -17772038, 4197257, -7481296, -8324721, 8381092, 20451024, 3584687, --5639829, -7409356, -16403017, 41876, 764504, 25231322, -9926743, -387084, 756988, -756988, --15193984, -17136920, 13575318, 545461, 7715909, -2193118, -19420232, -11172284, 1552631, -3234647, --4106526, -5530844, 12712566, -2668249, 8258685, -8891656, 17707076, -20891258, 10352482, 10861972, -6470368, 5754183, 5243082, 16563541, 8501888, -1178969, 3531537, 153008, 16346646, 24588150, --2831994, 1988033, -7218230, 10305237, 16494822, -11254425, 3466576, -28396714, 18578954, 19218368, -12804371, 17882634, -8137353, -14213657, -1023276, -2030983, -4211216, -2950106, -8547522, -5897527, --3160559, -703838, -4780836, 2915209, 5222680, 2083059, -8032126, 1662689, -4462471, -4633196, --2966749, 3416647, 3092377, -1335198, -2000381, -627065, -1394254, 950798, -7772280, 2676838, -1124745, 5128191, 1124745, -235686, -227096, 1209033, 4403415, 1631551, -4023311, 3324305, -2684, 584652, -20667382, -3076270, -26437672, -13589813, 10413685, -10846940, -23511188, 2165737, --12674985, 564788, 463856, -15104326, -14329622, 6463389, 13855028, 4158065, -16093779, 7682086, --18103824, -6371584, -6664716, 5647882, -7434589, -3414499, 8712341, 1465658, -5952825, -12916040, -13660680, 13215077, 17213156, 2223719, -1905892, 585726, 5522254, -1324461, 7064685, -7786776, -9286793, -3677029, 10696616, 8546448, 6461242, -3131031, 454193, -16653199, 5669894, -4212826, -12517145, 2247879, -29060822, 4438312, 14339822, 19246822, -11077258, -15175730, 18139258, 8200703, -12756053, -22736484, 11236708, 28395102, 29950954, 1874753, 721018, 17005924, -11782706, -15745887, -10075456, -17430588, 6541235, -8136816, -6837588, -3877819, -37464464, -21675090, -18241800, 13426605, -5116380, 3747896, -13304198, -5453535, -10049687, -1943473, -5395553, 14674293, 3504157, -5894306, --13067975, -2954401, 8472360, -1395864, -3609920, 2554432, 8868034, -3202435, -5231270, -2559264, --1937567, -652835, 6897181, 6872485, 6021008, -6132140, 7889855, -456340, 2257542, 8957154, --4047470, -4125316, 7862475, 14048301, -3297461, -4670240, -2245194, 1632088, -2542621, -9788230, -1569811, 7028177, 1914482, -9861245, -9375377, 4345433, 3177202, -602906, -602369, -1793149, --6973953, -4754529, -15586973, -29882772, 22846542, 2407329, 7666517, -3862249, 16178605, 440771, --13810467, 10692321, 4341675, -4877472, -8337069, -6519224, 2053531, 3912715, 14331769, -8150238, -11246909, 3595425, 20438138, -29316374, -7873212, -4634807, 3775813, 11988327, 17373680, 3960497, --14110041, 9543417, 13669807, 11522860, -3216931, 4031364, 830002, -4800700, -1970316, 850404, -4425964, 1609539, 10109279, 1684701, -12745852, 11929272, -13215077, -16857210, 2626909, 12220256, --5930276, -4359392, 4439386, 5974837, 10522670, -5986648, 4992363, 23775866, -9474161, -25222196, --32690606, -16502875, -22147536, 10084583, 19234474, 12319577, 4707821, 11589969, 6806450, 12807592, --10936597, 14474577, 7517267, 5886790, 15069430, 19594178, -6080063, -4345970, 5359046, -1261647, -17626008, 6846715, -2678986, 2995203, -21476984, -15005542, 2990908, -824097, 3834869, 1473174, -4530654, -3993783, 11341398, -5960878, -6898255, -6655052, -11286100, -4076998, -2218351, 3737159, -3035468, -1667521, -9689446, -540629, 3235184, 1107565, -3875134, 2325188, 158377, 3779034, --4038343, 1697049, 807991, 4553739, -2134599, 6993818, -4282083, -4935991, 1507534, -814433, --3599720, 1184874, 4849018, 443992, -702764, 29956324, 2857764, 4731980, -6241661, 10905459, --34251292, -15067819, -23417772, -24099598, 9557376, -21024938, 20682416, 23612120, 1010391, 5152350, --3651796, 4355097, -22402550, 9240622, 24748138, -14068702, -28833190, 3853660, -10853919, -9148817, --28122372, 4909148, 10307922, -69256, -3826816, 9080635, -16041703, -2629594, 10417980, -5710696, --14216879, 1759863, -7100118, 14725832, -9736691, -5361730, 13747653, 11973295, 25391310, 3403762, -6127845, -2297271, 6816650, 9085466, 15687905, -4483409, -515396, -9712532, 20699058, -26048976, -28028956, 1038845, -11171210, 13173202, -10184978, -7460358, 25782152, -37174016, 6075231, -7810935, -7286412, -14396194, 6958921, 14805289, -7639673, -1322313, -3921842, -6121402, -3299072, 27475442, --31109522, -10583873, 52319680, -19648938, -23080618, 22689776, 13557601, 15160698, -13164075, 1088774, --13084081, -7282654, -2045478, -14904610, 3285113, 2070711, -3886946, 5439576, 4828080, -6721624, --12710956, -3215857, -1058710, 5058935, -11215770, -7822209, 310311, -1063004, 2848100, 7069516, -16673063, -7512972, -361851, -1757179, -1723893, 4858682, 1899986, -9838159, -7456600, 8032126, --6431177, 3082176, 2077690, -5957120, 2322504, -1304596, -10107132, -8225936, 4997732, 3351148, --1505386, -98247, 6359773, -14866492, -23005456, 2250563, -8738111, -7767449, -12963822, -16190953, -20411832, 8812736, 1268626, 9611600, 24179592, 14326400, -1692754, 4959614, 16243029, 20790862, --18473192, 8630200, 17352742, 7586523, 6335077, 24006720, 11523934, 5024575, -768799, 10813117, --1245004, 12233141, 10053445, 5542119, -11272142, 21237002, -17482128, -2163053, 26519812, 26281442, --6295349, -23265838, 8723079, -338229, 22744536, 39235064, 8719857, -5991480, 2729989, -22486838, --2702608, -5931350, -4882841, 466541, 19968376, -8573828, 8761733, 24096378, 4042638, -22263500, -14692546, -1125281, 9327595, 22640920, 31816580, -8977019, -8500814, -2721399, -25294674, -36949604, -959388, -16798690, -2772938, -20368346, -2144799, 666794, 2724083, 15137612, -477278, -10524280, --17565880, 12807592, -5455146, 10959683, 352724, 20405926, 7512972, 7536594, 24696, -6333466, -11405823, -8733279, -10176388, -3044058, -7664369, -2941516, 532039, 817118, -2786360, 3145527, -4444755, 380105, -1208496, 5945846, -5156108, -7229504, 4372814, 5236639, 993748, -6249715, --7576859, -4383014, 6010807, 8163659, 1017370, -1144609, 8982924, 2481417, 4258460, 3755412, -6407555, 1826972, -1243930, -4765803, 2542621, 5152887, -10643466, 24938728, -46798500, 25739740, --19685982, -46212236, -13635447, -11667816, -1594507, -10681584, 5650567, -12799003, -28562606, -17307108, --8505109, -2633889, 3332358, -11800960, 11569568, 22400402, 889595, -1426466, 6205691, 1362042, --4121021, -8337069, -4629975, 6053757, 6731825, -2000918, 6406481, 27533424, 7652558, -8060580, --27254252, -4369593, 19375672, -23510650, -10980084, -8956617, 357556, -1796370, 14904073, -4892505, -1853815, 20414516, 7364795, 22647900, -3108483, -10683731, -4829691, -5801427, -5791227, 10932302, -1266479, 7397545, 13884019, -24257438, 3649112, -6409165, -15021111, -11377905, 23795192, 17099338, -951872, -11557757, 4885526, 10034654, 1132798, 6953552, -16199543, -40240084, -18556944, -14713484, -14847165, 1528472, -1751810, -6765647, 2996277, -4502737, -12615930, -13154948, -6766184, 16341277, -12428562, -18143552, -22611392, -8833674, 1713155, 13853417, 5718212, -4344897, -5965710, -4616016, -3354370, -10019622, 1648194, -6818798, 726923, 10484552, 11263552, 3022583, -5597416, 3667365, -8166344, -178778, -1560147, 6022081, -7997229, 11458973, 10359998, 4063039, -16643, -367220, --969589, 9637370, -3558917, -4917201, -5561446, -8056822, -7834557, 2704756, -2769717, 3594351, --2106682, 1864553, 6212670, -2811593, -5596343, -8284992, -2132451, 4063576, -5783174, 13517873, --18470506, 22223234, -1764695, -35128000, 7190849, -16930224, -3486440, -2532420, -4134980, -22357990, -7065221, 1187559, 17759690, -38233800, 649614, 18884434, 2303176, -9051644, -19324668, -1476932, -11137924, 16544751, -13677323, -4855998, 8953396, 18908594, 17270600, -16594143, -3355443, -26924614, -12611098, 13737990, 8517994, -7634841, -2068564, -7284802, -2826089, -8934069, 2638184, 19732154, --7249905, -7684770, -6709276, -11090679, 22374632, 19264538, -1832340, 27102854, -1183264, 9680856, --23822572, 19670414, 8750996, -26763014, -8638253, 30812096, 12785581, 8407935, 6019934, -14381161, --11355894, -15424301, 26723286, -13721347, 20651814, 21416318, -24162412, 56078316, -11956115, 34814468, -1554778, -7776575, -14962592, 26179974, 10107669, -20154134, -12335683, -43412456, 17435420, -5883569, -20043538, -26691074, 29967598, -22852448, 8866423, -8804683, -6836514, 19785840, 1872069, 1926830, -10996190, 7773354, -5014375, 13013751, -1564979, 3884261, -8996883, 1852742, -1219234, -5614059, --9044127, 420370, -10040023, 4914517, 4342212, -2254321, 8702677, -3020973, -5214091, -7191386, -5133560, 1170379, -1202054, -14304389, 6540699, -2757906, -17351132, -5406290, 4993437, -4799626, --8974334, 6141267, -4868883, 5095442, -9133248, 4447439, -9307194, -1481764, -1394254, 5190468, --2188823, 1065152, -3018288, -3065533, 13429826, 23036058, 1910187, -19317152, 9359271, -37305548, --9893457, -33889440, -46876884, 1611687, -17996986, 6045167, -3437048, -7343321, -17804786, -12266427, -10537702, 28257126, -23489714, -5039608, -40503688, -35591856, 9868224, 14281303, -22217866, -23297514, -1517734, 5178657, -37624988, 2021856, 858993, 19595788, -16859894, 756988, 16284905, -10564009, --19563576, -21932788, -10556493, -20000588, -16353625, -20880520, 29296508, -37171332, -23007066, 33614024, --1035624, 9478993, -28099286, -4920422, -7985955, 732292, 47422880, -6730751, -899259, 4664872, -22231824, 498216, -20963198, -9324374, -15110769, 5077725, 56725780, 11000485, -19968376, 42703788, -30892626, -27466852, 31860068, 52230560, 457414, -20437602, 35576288, -6224482, 37425808, 33675764, -2834679, -1804960, -10051834, 23490250, 19143206, 10842108, -19981798, -6713034, -12901545, 29756070, --3785477, -20584168, -9993852, -20696910, -8880382, 20319490, 2311229, -10852845, -3664681, -13268228, --2219424, 18141404, -8810589, 4374424, -1835562, -17535278, 18853296, 2154463, 7562901, 9019968, --12161200, 3624953, 17322676, -3234647, 682900, -9440338, -38655, 1275605, -5706401, -5391795, -3273839, 12729746, -8266739, 4947266, -11038066, -5410585, 654446, -3823058, 12655121, -5019206, -542240, 1058173, 4619774, 261993, -6048925, 26369488, -67005784, -40488656, -43492448, -14959371, --28926068, 36040680, 13800267, 29551522, -4242891, -57256744, -8566312, 9225053, 39520140, -1671279, -9317932, 36101884, -13333726, -26197690, 2866354, -1780264, 45870252, 29698626, -14716169, -20748450, -48724256, 3404299, 24486146, 11702175, 45475112, 39106216, 30361660, 3195993, -25347824, -13903883, --19315542, 37842956, -17961016, -25836912, -13903346, 1400696, -879931, 16760573, -16240882, 6049462, --76694160, 8673150, 12119861, 12692165, -31977642, -29755534, 9363029, 27145804, -33015414, 12991739, --18699214, -14639396, -22114786, -1924145, 23810762, -15758235, 26146150, -6522982, 10355166, -47846472, --30633854, -1117228, 25660818, 17903034, -34672196, -37485400, -17251274, 3636227, 40057548, 16523276, --3629784, -27880780, -32091996, -10865730, 6960532, 28314572, -2266669, 9476845, 19107236, -7088844, -7047505, -18548354, 11819750, 6800544, -11320460, -9453223, 1267552, 14643691, -13657459, -383863, -23313620, 3795677, 3633006, 189515, -6305549, -15487115, 4291746, -17215840, 20730196, 17735530, -13617194, 1786170, -1328219, -20182052, 13205951, -3902515, 24152748, -5551245, -26616986, -16370268, --3008625, 26463440, 7730405, -5383742, -2323041, -20879446, -9830106, -8267275, -898185, 12104828, -11802033, -21050708, -11360188, -12792560, -12359305, -4377646, 4414153, -1547262, -6855842, -12727599, --12887586, 2030446, -255014, -6504728, -6391448, 11878806, 86785184, 8770323, -46380816, -104252816, --9488120, 61783640, 15496779, 26940182, -2898029, 37571836, -6378564, 16505559, -8773544, 21280490, -29998200, 16002511, -14622753, -34433828, 40446780, 45948632, -10392747, -45546516, -27751394, 4736275, -26466662, 8786429, 9465571, 1662689, 6742025, 3018825, 6682969, -8975408, -52755620, -333397, -32597728, 25045564, -10384157, 2507724, 20069846, 43918724, 27000848, 21517786, -25890062, -18124762, --4409321, -4807679, -39286604, 27804008, 16556562, 28885802, 59111636, -30421790, -19435800, -2755759, --16315507, -14221174, -25748328, 45765560, -27692876, -29985852, -30709016, -10769094, 58609124, 14935749, -22910966, -1280974, -4778688, -13567802, 36510980, 29362008, -14910516, -34189552, 11982422, -4497905, -14273250, -32056026, -12283070, -18656802, -24071682, 14772540, 24367496, 4493610, 1160715, -12921946, -7431904, -5061619, 22682260, 1780264, -7427072, -4457103, 7745437, 14382235, 16119012, -9209484, -10127533, 5133560, 5402532, -737661, -16557099, -2214593, -13366475, -5457830, 1126355, 2290828, -4971425, 4896800, 6009733, 14708652, 22100828, 19459960, -1381906, -4786741, 2892124, -9522479, -12389907, -13385802, -1174674, 10902238, -207769, -2636036, -21297670, 10901164, -21240224, 7267085, --4399657, 3480534, -1419487, 2529736, -541703, -13433047, 8040179, 6744710, -639413, 4586488, --281857, 3951370, -1297617, -3422015, -172336, -1005022, 1242319, -542777, 1272921, 690953, --4089883, -1752347, -420907, 3235184, 1342714, -843424, -2201171, -1486596, -25388088, 2558727, -66215512, 51577724, 7667591, 4229469, -36512052, -69332048, -61297772, -29513404, 49622980, 54983096, -56402048, 31751620, -8699456, -35864052, -33777772, -21657372, 13908715, 22440130, 38474316, 3819837, --29937532, -24762634, -5844914, -24812026, -12046846, 5711770, 39851392, 57629872, 36811628, 17959942, -15903190, -35756140, -4647692, -72111424, -81236088, -50437412, -24782498, -22001506, 37401112, 59403156, -65227132, 59512140, 50987704, 21476448, 3068217, -24628416, -7226820, -39790724, -71269080, -5693516, -6206765, 7060926, 23130010, 14193256, 23470922, -79211008, -43770012, -28221156, -46375984, -19369228, -33660196, -20173998, 22543746, 3304977, -21337934, 17044578, -17893370, 19143206, 21771190, -16764331, --34448324, -70183520, -68517080, -50746648, 24537686, 8883066, -10122701, 13243532, 3304441, 338766, --32900524, -22767084, -60900488, -19992000, -22686018, -2355790, 43884364, 47406776, 6556268, 24513526, --15031312, -32743220, -59256592, -38735772, -36749352, -1212791, 17635672, 10357314, 14305999, 15848429, --11218455, 9627706, -10601590, 9986336, 2124935, -308701, -2509872, 8258149, 6894497, 15712064, --3922379, -3645354, 14318884, 11638288, -119188024, -60955248, -31728534, 40125732, 9317395, 152951840, -156783488, 118181392, 152860032, 160154496, 145531744, 104460584, 94839856, 105214888, 41909216, -6241125, --65066072, -100603704, -139003936, -135078336, -201327136, -122180544, -79442936, -63131188, -89737440, -47238196, --12901008, -67286568, -52195128, -55180128, -12418898, -33139968, -11743514, -44866304, -22721988, 26733488, -27756226, 8265665, -8217883, 29133836, 23672786, -67884640, 14182519, 45878304, 100553240, 73687680, -95739656, 39223788, 38096896, 159353488, 86382528, 163068640, 54702316, 152937344, 105701832, 133520872, -180215760, 170591808, 138453632, 155343056, 172707616, 187822672, 160545872, 185144224, 126454040, 187798512, -150929984, 133781248, 142798000, 77869368, 159854928, 77257872, 47036872, -58789512, 4012573, -86831888, --97406640, -149234544, -175992192, -270794464, -264223696, -249788320, -233374032, -220191168, -185868464, -227027680, --279189504, -275581760, -228361264, -241985968, -227316512, -228361264, -194655440, -212261040, -203266848, -151865744, --167440368, -128891432, -120099096, -110990008, -70514776, -91454352, -20642686, -34062312, 15850577, 21065740, -66728224, 98288712, 103332616, 118985624, 105979928, 159287984, 180908320, 178919744, 207125872, 215965984, -214331760, 163141648, 146004736, 127811784, 118857848, 115367656, 118808456, 111309984, 85127328, 54579908, -62406948, 47911972, 37671160, 24845848, -18876382, -25119116, -25985090, -32317482, -39075076, -44471700, --30838402, -34409668, -27037892, -28014998, -23817742, -17382270, -20411832, -16988206, -16018617, -20175072, --18025978, -20480552, -15482820, -12837657, -16935056, -19777788, -6792491, -1621350, -1369558, -512175, -1505923, 8590, 653909, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-13850196, -1168231, -2212982, -1891933, 205622, -2310693, 863288, 1357210, 5676336, -1917166, +-228170, -5236102, 386010, 5262409, 366683, 3803194, -1122597, 1596117, -2198487, -3307125, +111669, 3615289, -463856, -4532264, -186294, 4386236, 1431298, -1881196, -1564979, -208306, +-601832, -1027034, 54761, -744103, -1506997, -194347, 904091, 612033, -196495, -3453691, +5136244, 6989523, 230318, 811749, -2819646, -1607392, 561567, -3653407, -4043712, 2419140, +-3282966, 2390686, 3110630, 3086471, 1168768, -470299, 847719, 643708, 2344515, -5027259, +447213, -651224, -3643206, -4951024, 160524, 2469606, -1868311, -264141, -557272, -351114, +3506841, 1727651, 486942, 1364189, -1117765, -4074313, 1604707, 658204, 3510599, -4188667, +-3149285, 2361158, -1848983, -873489, -3093450, 705448, -1806571, -1703491, 69793, -1365800, +-1457605, 408022, -774705, -376883, -1662152, 1044214, -179852, 98247, -420907, 853088, +-129923, 276489, -270046, -266825, -12686797, -2997887, 4943508, -763430, -3901441, 1595580, +-9404905, -3697967, -1354525, -1771137, -4859219, -5214627, 2791729, 4199941, 3682398, -4881767, +-7074885, 731218, -4137664, -7637526, 1743757, -552440, 2153926, 8432631, -2787971, -969589, +-5359046, 7276749, 579821, 3595425, 2544768, 5961952, 3080029, 1794760, -5974837, -749472, +-5492727, -1588601, 252329, -2381559, 1861332, 1492501, -2592550, -5178657, 3266323, 5258114, +1510218, -2604898, -3934190, -2514703, 1275068, -4507032, -5614596, -1665374, 2795487, -1617055, +1384053, 3475166, 2245194, -2688113, 5138929, 400506, 4378719, -3716221, -3068754, -1840394, +-2139968, 2994666, -1704565, 128312, 5188321, 1790465, 141197, -4949950, 1347009, -2003602, +3643206, 5227512, -897648, 390305, -2395518, 1954747, 4655208, -1690070, 2906082, 1272384, +628139, 2350958, 965831, 78920, 1921461, 687195, -138513, -23622, 858457, 738198, +-844498, 609885, 658741, 947577, -2592013, 3271691, 4522601, 1822140, -2815888, 1967095, +-1316944, 1361505, 8497593, 5231807, -7159711, 4862977, -3935801, -1950452, -1028108, 139586, +3617973, 132070, 9936407, 2864743, -3801583, -2507187, -2464238, 6987375, 1653026, 6729140, +2216740, 4529043, 7031935, 8051990, 3071975, -914828, -798864, 1210644, -6451041, -6013491, +1925756, -4566624, 2597918, 1240172, -1540820, -679142, 1898912, 6717329, -2198487, -2291365, +-3452617, 8582418, -1157494, -10719165, -5339718, -4254702, -3892314, 4417374, 4257387, 3731790, +5602785, 2476586, 3513283, -164819, -332323, -166967, 5634460, 1821066, 3307662, -7464653, +492311, 334471, 408022, 483184, 3248069, 2262911, 944356, -3622268, -3593814, 2081449, +1745367, -1073742, -220654, -2920041, -3694746, -3033321, 2062121, 3570729, 442382, 197032, +1253594, -1047435, -125628, -830539, 653372, 622770, 379031, -505196, 1080184, 1708860, +-248034, 160524, 385473, -284542, 460098, -719944, 1260036, -1074, -236760, -820339, +1114007, -2172180, 1224066, 345745, 922881, -169651, 18855980, 4178466, 2876554, -2253247, +-1306744, 1875290, 1321239, 5076652, 6655052, -258235, 9797894, 3955665, -3455301, -3186866, +-247497, 4736275, -552977, -2508798, 5185100, 778463, 14128832, 3750580, 2796561, 633508, +-1365263, 718333, 2137283, 2792803, -642635, 82141, 7580081, 1114544, 8344585, -4143033, +-4013647, 2808909, 12530030, 3686693, 3025805, -1029718, -5422396, -2072859, 1692217, 430570, +-126702, 518080, -7693897, 603980, -3387119, 3140158, 2423435, -2975876, 1766305, 2759517, +1809792, -3551401, -3715147, 947577, 1309428, 75699, -4775467, 1313186, -1861332, 3127810, +-444529, 663036, 1939178, -667331, 1069984, -1633698, 520228, 11070815, 1242319, 3969087, +127775, -2957622, 1803886, 729608, 3404299, -6044630, -4267587, 2167348, -900869, 1333051, +-1596654, 2407329, 1951526, 324270, -2712809, -945967, -3689914, -576599, -850940, 2450816, +-1703491, -368830, 398895, -242666, -889595, -802622, 686658, -856846, -1241246, 73014, +43487, 753230, -2499134, -880468, 628139, 453119, -2720325, -568009, -185220, -3400004, +-397284, 2777233, -4158065, -721555, 4229469, -2142652, -6557878, -42950, 10821170, -752693, +8495982, 4348118, 11752641, 1410897, 1100049, 4266513, -3300146, -7017440, -9210557, 2159295, +-4686883, 10821707, 6204617, 7640210, -1428614, -3202435, 970663, 1700270, 3595425, 10123238, +1230508, 4205310, -4619238, 3208878, -3273302, 1362042, -1757715, 3313031, 5823439, 756988, +5564667, 2005213, 2793339, -1637993, -1324997, 7385733, -1717450, -1892470, 5604933, -3382287, +-300648, 759136, -2433099, -3285650, 2488397, -3763465, -698469, -4794257, -10122701, -1183264, +-1529008, -314069, -10549513, -4083977, -3213173, -2789045, 3979824, 10349797, -2642479, 3286724, +5449777, -1577864, 1030792, 858993, 624381, -3854196, 4144107, -4873714, 1260573, 3388192, +9754944, 2978560, 2890513, 815507, -126165, 2868501, -3524558, -105227, 2012192, 876173, +172872, -4027606, 2354179, 2796024, 2890513, -631360, 2150705, 1087164, 604517, 1874216, +1130113, 144955, 1105417, -364535, 855772, 461709, 719407, 1038308, 1412507, 1580548, +1156420, 1025960, 1253057, -850404, 1131724, -13722957, 1202054, 7348689, 3891777, -7707856, +-566399, 340376, 1826435, 2795487, -429497, -6008123, -5720897, 864899, 9724343, 4590783, +5770826, 9745281, -6605660, 6943352, 12911745, -1222455, 2917357, -7357279, 2521146, 2598455, +-6270116, -3426310, -1346472, 2922188, -6335614, -8425115, 1612760, 861141, -7170985, 507343, +2278480, -1535451, 15305116, -945967, -10823854, -820339, 3758097, 8526047, 3190624, 3771518, +-6934762, 1825361, 2209224, -6296959, -391916, -1159104, 10633802, 6391985, -1748589, -3758633, +-8211441, 3430605, 3312494, -4975720, -152471, 1850057, 3233037, 3182034, -4175782, -243203, +-900869, 9835475, -8361228, 898722, -2169495, 8840116, -632971, -2328946, -3752191, 987306, +-3883724, -9276592, 263604, 6808060, 2089502, 4213363, 1095217, -3436511, -1299765, -1806571, +5925445, 2202781, -1600412, -369367, 5381057, 3867618, -1510218, 424665, 852551, 1005022, +-98247, 1998770, 1496796, 1160715, 141197, -909459, -340376, 270046, -768262, 97711, +-1072668, -515933, 881005, 5214091, 4747013, 1668058, -3483755, 965831, 2272038, 16044924, +10657961, 7970923, 11303280, 4550518, -981400, 1582159, 4177930, -11433203, 5841156, 132607, +6279779, -4636417, -2338610, -7391639, 2074469, 12901545, -12679817, -8088497, -13480292, 6771553, +-3090766, 374736, -6149857, 734439, -2308545, -6190659, 2317135, 2945811, -9598715, -1367947, +1703491, -2171643, 5024575, -13942538, -6753299, 14140106, 1391569, -309238, -1439351, 442382, +-7249368, -7719130, 416612, -11203422, -2609193, 1065152, 2949032, -4849555, -1140314, 13778792, +-930397, 4800700, 10256919, -9644886, -3370476, 2198487, 2401961, 1793149, -2975876, -6906845, +7824357, -919660, -7348152, 5324149, -1345399, 1210644, 2020245, -3996467, -2415919, -1720134, +-3009162, -4326106, -5168457, -4991826, -6331856, -1956358, -2685428, -670015, -828392, -122407, +826781, -2639794, -2066416, 1450088, 1756105, 2850248, -157303, -1212255, -3715684, -1090922, +-4293894, -2782602, -567473, 810675, -296890, 552977, -1069447, -666257, 3226057, 1213328, +2248416, -2181844, 598074, 505196, 872952, -4393215, 365072, 1292785, 49392, 2325188, +-26616986, -14918569, 12118787, -4723391, -5605469, 7218230, 6423124, -11487427, -15331423, -5024038, +-5429376, -5881421, -963683, -10689637, -7559143, 3787088, 500901, -14351096, -15631533, -8902393, +-4220879, -891206, 8139500, -677531, -5781563, 4321274, -12994960, 295816, -520765, 456340, +4663261, 2408940, -9440875, -7276212, 5816460, 1898376, 21369610, 5112085, -6986838, 852014, +791348, 102542, 5717675, 957241, 2448668, -2306398, -4571456, 1265405, -12127377, -2410014, +-5225365, -6597070, 1521492, -9862856, 11455215, -1589675, 4854924, 7985955, 2522757, 4172561, +-412854, -5397164, -104153, -807991, -6427419, 8385924, -3404835, 15025406, -372052, -479426, +835371, -4067334, -8076149, 2425046, -6307160, -2745021, 9016210, -11599633, -11132555, 7421704, +7330436, 6032282, -9408126, 6759742, 3022046, 3886409, -138513, 1627793, 2030446, 5228049, +2445984, 1185948, 4138201, -659814, -81604, -3390340, -2367601, -652298, 2877091, -3630321, +652835, -530428, -1882806, -1395864, 1078037, -4634270, -2570001, -3488587, -404264, 1328756, +166967, 3216931, -926102, 3371549, 501437, 1175747, 754841, 2583960, -1899986, -1826435, +5506148, 19712826, -10964515, 9351218, 3972845, 6951942, -2716567, -10838887, 1632088, -2887292, +-9976672, 20339892, -1345399, -5731097, -20018306, 12300786, 3524558, -284542, -7423851, -8759049, +321586, 20654498, 7800198, -867583, -1957431, -8951249, -7152731, 5917928, 2729989, -7016366, +-4811974, 7165079, 1887638, -363998, 6292127, 9498320, 1581085, 12559021, 14397267, 8624831, +-3229279, 3087545, 1241782, 2294050, 7542500, -10685342, 11235634, -842887, -5611375, -8679592, +116501, 7256347, 5198521, -10232760, 2287607, 7946227, 1293322, -7435662, -15806553, -14513231, +3861713, 6298033, 1129040, -5681705, -690953, 11439645, -5235565, -8787503, -16702054, 1681480, +3303904, -12591770, 4745939, 12402792, -5636608, 9624485, 3426310, -11673721, -8534100, 798864, +11935714, -1337346, 12534862, -2273648, -4334159, 2522220, 6410776, 1586990, -2091649, -3466039, +2180770, 5529771, 4620311, 657667, 7455527, 1254131, 5357435, 1199370, 7312182, 972810, +4526359, -202937, 3621731, 1803349, -1767916, -5455682, 484258, -6359773, -845572, -2687576, +998043, -958315, -218506, -5671505, -499290, 2434710, -2683818, 207232, -639950, 236760, +-353798, -4154844, 621160, 23737210, 15847892, 3418794, -4641249, -2713883, -3200288, -16558173, +-6491306, -372052, 10610180, -7699803, -4080756, -3687766, 315143, 17112224, -13296145, -3762391, +-612033, 7945690, -2677912, -10085657, -16480326, 5777805, -11349451, -5417028, -7034620, -7912404, +2556043, -13175349, -6200322, 11372000, 17399450, 627065, -10703059, -9810242, 16051903, -1946694, +-8524973, 16475495, 624918, 858993, 808528, -18312130, 7489886, -6888054, 6701223, 5936719, +-12237436, -1508607, -12416750, 4700305, -12040404, -2230699, 5181341, 6737730, -3961571, 4030290, +-14637249, 9975062, -1055488, 6752763, 5895917, 4035122, -3184182, -3249680, 14766098, -10320270, +7373922, -2658585, -12422119, -7708393, -756988, 13031468, -7478075, 6019397, 1846836, -4230006, +239981, -14865419, 18658412, 11266773, -2129767, -5218386, 9175124, 3790846, -2619393, -4929012, +1090922, -3338800, 4753455, -1136019, 2525441, 7558069, 2828236, 5951214, 43487, 2012192, +957778, -1292248, 211527, -722628, 5327907, 1928440, 7373385, 1076963, -4065187, 5192616, +-2099165, -305480, 4051765, -4013647, -1239098, -2190433, -1611687, 3158949, 2053531, 1568200, +6854768, -2195802, -2332704, 9341554, 1786706, -6183679, -14185740, -775242, -18437220, 3173981, +1642825, 9018894, -7363185, -1758789, 4782446, 3980898, 5260798, -12475806, 17645336, 12517145, +2306398, 9255655, -4170950, -17772038, 4197257, -7481296, -8324721, 8381092, 20451024, 3584687, +-5639829, -7409356, -16403017, 41876, 764504, 25231322, -9926743, -387084, 756988, -756988, +-15193984, -17136920, 13575318, 545461, 7715909, -2193118, -19420232, -11172284, 1552631, -3234647, +-4106526, -5530844, 12712566, -2668249, 8258685, -8891656, 17707076, -20891258, 10352482, 10861972, +6470368, 5754183, 5243082, 16563541, 8501888, -1178969, 3531537, 153008, 16346646, 24588150, +-2831994, 1988033, -7218230, 10305237, 16494822, -11254425, 3466576, -28396714, 18578954, 19218368, +12804371, 17882634, -8137353, -14213657, -1023276, -2030983, -4211216, -2950106, -8547522, -5897527, +-3160559, -703838, -4780836, 2915209, 5222680, 2083059, -8032126, 1662689, -4462471, -4633196, +-2966749, 3416647, 3092377, -1335198, -2000381, -627065, -1394254, 950798, -7772280, 2676838, +1124745, 5128191, 1124745, -235686, -227096, 1209033, 4403415, 1631551, -4023311, 3324305, +2684, 584652, -20667382, -3076270, -26437672, -13589813, 10413685, -10846940, -23511188, 2165737, +-12674985, 564788, 463856, -15104326, -14329622, 6463389, 13855028, 4158065, -16093779, 7682086, +-18103824, -6371584, -6664716, 5647882, -7434589, -3414499, 8712341, 1465658, -5952825, -12916040, +13660680, 13215077, 17213156, 2223719, -1905892, 585726, 5522254, -1324461, 7064685, -7786776, +9286793, -3677029, 10696616, 8546448, 6461242, -3131031, 454193, -16653199, 5669894, -4212826, +12517145, 2247879, -29060822, 4438312, 14339822, 19246822, -11077258, -15175730, 18139258, 8200703, +12756053, -22736484, 11236708, 28395102, 29950954, 1874753, 721018, 17005924, -11782706, -15745887, +10075456, -17430588, 6541235, -8136816, -6837588, -3877819, -37464464, -21675090, -18241800, 13426605, +5116380, 3747896, -13304198, -5453535, -10049687, -1943473, -5395553, 14674293, 3504157, -5894306, +-13067975, -2954401, 8472360, -1395864, -3609920, 2554432, 8868034, -3202435, -5231270, -2559264, +-1937567, -652835, 6897181, 6872485, 6021008, -6132140, 7889855, -456340, 2257542, 8957154, +-4047470, -4125316, 7862475, 14048301, -3297461, -4670240, -2245194, 1632088, -2542621, -9788230, +1569811, 7028177, 1914482, -9861245, -9375377, 4345433, 3177202, -602906, -602369, -1793149, +-6973953, -4754529, -15586973, -29882772, 22846542, 2407329, 7666517, -3862249, 16178605, 440771, +-13810467, 10692321, 4341675, -4877472, -8337069, -6519224, 2053531, 3912715, 14331769, -8150238, +11246909, 3595425, 20438138, -29316374, -7873212, -4634807, 3775813, 11988327, 17373680, 3960497, +-14110041, 9543417, 13669807, 11522860, -3216931, 4031364, 830002, -4800700, -1970316, 850404, +4425964, 1609539, 10109279, 1684701, -12745852, 11929272, -13215077, -16857210, 2626909, 12220256, +-5930276, -4359392, 4439386, 5974837, 10522670, -5986648, 4992363, 23775866, -9474161, -25222196, +-32690606, -16502875, -22147536, 10084583, 19234474, 12319577, 4707821, 11589969, 6806450, 12807592, +-10936597, 14474577, 7517267, 5886790, 15069430, 19594178, -6080063, -4345970, 5359046, -1261647, +17626008, 6846715, -2678986, 2995203, -21476984, -15005542, 2990908, -824097, 3834869, 1473174, +4530654, -3993783, 11341398, -5960878, -6898255, -6655052, -11286100, -4076998, -2218351, 3737159, +3035468, -1667521, -9689446, -540629, 3235184, 1107565, -3875134, 2325188, 158377, 3779034, +-4038343, 1697049, 807991, 4553739, -2134599, 6993818, -4282083, -4935991, 1507534, -814433, +-3599720, 1184874, 4849018, 443992, -702764, 29956324, 2857764, 4731980, -6241661, 10905459, +-34251292, -15067819, -23417772, -24099598, 9557376, -21024938, 20682416, 23612120, 1010391, 5152350, +-3651796, 4355097, -22402550, 9240622, 24748138, -14068702, -28833190, 3853660, -10853919, -9148817, +-28122372, 4909148, 10307922, -69256, -3826816, 9080635, -16041703, -2629594, 10417980, -5710696, +-14216879, 1759863, -7100118, 14725832, -9736691, -5361730, 13747653, 11973295, 25391310, 3403762, +6127845, -2297271, 6816650, 9085466, 15687905, -4483409, -515396, -9712532, 20699058, -26048976, +28028956, 1038845, -11171210, 13173202, -10184978, -7460358, 25782152, -37174016, 6075231, -7810935, +7286412, -14396194, 6958921, 14805289, -7639673, -1322313, -3921842, -6121402, -3299072, 27475442, +-31109522, -10583873, 52319680, -19648938, -23080618, 22689776, 13557601, 15160698, -13164075, 1088774, +-13084081, -7282654, -2045478, -14904610, 3285113, 2070711, -3886946, 5439576, 4828080, -6721624, +-12710956, -3215857, -1058710, 5058935, -11215770, -7822209, 310311, -1063004, 2848100, 7069516, +16673063, -7512972, -361851, -1757179, -1723893, 4858682, 1899986, -9838159, -7456600, 8032126, +-6431177, 3082176, 2077690, -5957120, 2322504, -1304596, -10107132, -8225936, 4997732, 3351148, +-1505386, -98247, 6359773, -14866492, -23005456, 2250563, -8738111, -7767449, -12963822, -16190953, +20411832, 8812736, 1268626, 9611600, 24179592, 14326400, -1692754, 4959614, 16243029, 20790862, +-18473192, 8630200, 17352742, 7586523, 6335077, 24006720, 11523934, 5024575, -768799, 10813117, +-1245004, 12233141, 10053445, 5542119, -11272142, 21237002, -17482128, -2163053, 26519812, 26281442, +-6295349, -23265838, 8723079, -338229, 22744536, 39235064, 8719857, -5991480, 2729989, -22486838, +-2702608, -5931350, -4882841, 466541, 19968376, -8573828, 8761733, 24096378, 4042638, -22263500, +14692546, -1125281, 9327595, 22640920, 31816580, -8977019, -8500814, -2721399, -25294674, -36949604, +959388, -16798690, -2772938, -20368346, -2144799, 666794, 2724083, 15137612, -477278, -10524280, +-17565880, 12807592, -5455146, 10959683, 352724, 20405926, 7512972, 7536594, 24696, -6333466, +11405823, -8733279, -10176388, -3044058, -7664369, -2941516, 532039, 817118, -2786360, 3145527, +4444755, 380105, -1208496, 5945846, -5156108, -7229504, 4372814, 5236639, 993748, -6249715, +-7576859, -4383014, 6010807, 8163659, 1017370, -1144609, 8982924, 2481417, 4258460, 3755412, +6407555, 1826972, -1243930, -4765803, 2542621, 5152887, -10643466, 24938728, -46798500, 25739740, +-19685982, -46212236, -13635447, -11667816, -1594507, -10681584, 5650567, -12799003, -28562606, -17307108, +-8505109, -2633889, 3332358, -11800960, 11569568, 22400402, 889595, -1426466, 6205691, 1362042, +-4121021, -8337069, -4629975, 6053757, 6731825, -2000918, 6406481, 27533424, 7652558, -8060580, +-27254252, -4369593, 19375672, -23510650, -10980084, -8956617, 357556, -1796370, 14904073, -4892505, +1853815, 20414516, 7364795, 22647900, -3108483, -10683731, -4829691, -5801427, -5791227, 10932302, +1266479, 7397545, 13884019, -24257438, 3649112, -6409165, -15021111, -11377905, 23795192, 17099338, +951872, -11557757, 4885526, 10034654, 1132798, 6953552, -16199543, -40240084, -18556944, -14713484, +14847165, 1528472, -1751810, -6765647, 2996277, -4502737, -12615930, -13154948, -6766184, 16341277, +12428562, -18143552, -22611392, -8833674, 1713155, 13853417, 5718212, -4344897, -5965710, -4616016, +3354370, -10019622, 1648194, -6818798, 726923, 10484552, 11263552, 3022583, -5597416, 3667365, +8166344, -178778, -1560147, 6022081, -7997229, 11458973, 10359998, 4063039, -16643, -367220, +-969589, 9637370, -3558917, -4917201, -5561446, -8056822, -7834557, 2704756, -2769717, 3594351, +-2106682, 1864553, 6212670, -2811593, -5596343, -8284992, -2132451, 4063576, -5783174, 13517873, +-18470506, 22223234, -1764695, -35128000, 7190849, -16930224, -3486440, -2532420, -4134980, -22357990, +7065221, 1187559, 17759690, -38233800, 649614, 18884434, 2303176, -9051644, -19324668, -1476932, +11137924, 16544751, -13677323, -4855998, 8953396, 18908594, 17270600, -16594143, -3355443, -26924614, +12611098, 13737990, 8517994, -7634841, -2068564, -7284802, -2826089, -8934069, 2638184, 19732154, +-7249905, -7684770, -6709276, -11090679, 22374632, 19264538, -1832340, 27102854, -1183264, 9680856, +-23822572, 19670414, 8750996, -26763014, -8638253, 30812096, 12785581, 8407935, 6019934, -14381161, +-11355894, -15424301, 26723286, -13721347, 20651814, 21416318, -24162412, 56078316, -11956115, 34814468, +1554778, -7776575, -14962592, 26179974, 10107669, -20154134, -12335683, -43412456, 17435420, -5883569, +20043538, -26691074, 29967598, -22852448, 8866423, -8804683, -6836514, 19785840, 1872069, 1926830, +10996190, 7773354, -5014375, 13013751, -1564979, 3884261, -8996883, 1852742, -1219234, -5614059, +-9044127, 420370, -10040023, 4914517, 4342212, -2254321, 8702677, -3020973, -5214091, -7191386, +5133560, 1170379, -1202054, -14304389, 6540699, -2757906, -17351132, -5406290, 4993437, -4799626, +-8974334, 6141267, -4868883, 5095442, -9133248, 4447439, -9307194, -1481764, -1394254, 5190468, +-2188823, 1065152, -3018288, -3065533, 13429826, 23036058, 1910187, -19317152, 9359271, -37305548, +-9893457, -33889440, -46876884, 1611687, -17996986, 6045167, -3437048, -7343321, -17804786, -12266427, +10537702, 28257126, -23489714, -5039608, -40503688, -35591856, 9868224, 14281303, -22217866, -23297514, +1517734, 5178657, -37624988, 2021856, 858993, 19595788, -16859894, 756988, 16284905, -10564009, +-19563576, -21932788, -10556493, -20000588, -16353625, -20880520, 29296508, -37171332, -23007066, 33614024, +-1035624, 9478993, -28099286, -4920422, -7985955, 732292, 47422880, -6730751, -899259, 4664872, +22231824, 498216, -20963198, -9324374, -15110769, 5077725, 56725780, 11000485, -19968376, 42703788, +30892626, -27466852, 31860068, 52230560, 457414, -20437602, 35576288, -6224482, 37425808, 33675764, +2834679, -1804960, -10051834, 23490250, 19143206, 10842108, -19981798, -6713034, -12901545, 29756070, +-3785477, -20584168, -9993852, -20696910, -8880382, 20319490, 2311229, -10852845, -3664681, -13268228, +-2219424, 18141404, -8810589, 4374424, -1835562, -17535278, 18853296, 2154463, 7562901, 9019968, +-12161200, 3624953, 17322676, -3234647, 682900, -9440338, -38655, 1275605, -5706401, -5391795, +3273839, 12729746, -8266739, 4947266, -11038066, -5410585, 654446, -3823058, 12655121, -5019206, +542240, 1058173, 4619774, 261993, -6048925, 26369488, -67005784, -40488656, -43492448, -14959371, +-28926068, 36040680, 13800267, 29551522, -4242891, -57256744, -8566312, 9225053, 39520140, -1671279, +9317932, 36101884, -13333726, -26197690, 2866354, -1780264, 45870252, 29698626, -14716169, -20748450, +48724256, 3404299, 24486146, 11702175, 45475112, 39106216, 30361660, 3195993, -25347824, -13903883, +-19315542, 37842956, -17961016, -25836912, -13903346, 1400696, -879931, 16760573, -16240882, 6049462, +-76694160, 8673150, 12119861, 12692165, -31977642, -29755534, 9363029, 27145804, -33015414, 12991739, +-18699214, -14639396, -22114786, -1924145, 23810762, -15758235, 26146150, -6522982, 10355166, -47846472, +-30633854, -1117228, 25660818, 17903034, -34672196, -37485400, -17251274, 3636227, 40057548, 16523276, +-3629784, -27880780, -32091996, -10865730, 6960532, 28314572, -2266669, 9476845, 19107236, -7088844, +7047505, -18548354, 11819750, 6800544, -11320460, -9453223, 1267552, 14643691, -13657459, -383863, +23313620, 3795677, 3633006, 189515, -6305549, -15487115, 4291746, -17215840, 20730196, 17735530, +13617194, 1786170, -1328219, -20182052, 13205951, -3902515, 24152748, -5551245, -26616986, -16370268, +-3008625, 26463440, 7730405, -5383742, -2323041, -20879446, -9830106, -8267275, -898185, 12104828, +11802033, -21050708, -11360188, -12792560, -12359305, -4377646, 4414153, -1547262, -6855842, -12727599, +-12887586, 2030446, -255014, -6504728, -6391448, 11878806, 86785184, 8770323, -46380816, -104252816, +-9488120, 61783640, 15496779, 26940182, -2898029, 37571836, -6378564, 16505559, -8773544, 21280490, +29998200, 16002511, -14622753, -34433828, 40446780, 45948632, -10392747, -45546516, -27751394, 4736275, +26466662, 8786429, 9465571, 1662689, 6742025, 3018825, 6682969, -8975408, -52755620, -333397, +32597728, 25045564, -10384157, 2507724, 20069846, 43918724, 27000848, 21517786, -25890062, -18124762, +-4409321, -4807679, -39286604, 27804008, 16556562, 28885802, 59111636, -30421790, -19435800, -2755759, +-16315507, -14221174, -25748328, 45765560, -27692876, -29985852, -30709016, -10769094, 58609124, 14935749, +22910966, -1280974, -4778688, -13567802, 36510980, 29362008, -14910516, -34189552, 11982422, -4497905, +14273250, -32056026, -12283070, -18656802, -24071682, 14772540, 24367496, 4493610, 1160715, -12921946, +7431904, -5061619, 22682260, 1780264, -7427072, -4457103, 7745437, 14382235, 16119012, -9209484, +10127533, 5133560, 5402532, -737661, -16557099, -2214593, -13366475, -5457830, 1126355, 2290828, +4971425, 4896800, 6009733, 14708652, 22100828, 19459960, -1381906, -4786741, 2892124, -9522479, +12389907, -13385802, -1174674, 10902238, -207769, -2636036, -21297670, 10901164, -21240224, 7267085, +-4399657, 3480534, -1419487, 2529736, -541703, -13433047, 8040179, 6744710, -639413, 4586488, +-281857, 3951370, -1297617, -3422015, -172336, -1005022, 1242319, -542777, 1272921, 690953, +-4089883, -1752347, -420907, 3235184, 1342714, -843424, -2201171, -1486596, -25388088, 2558727, +66215512, 51577724, 7667591, 4229469, -36512052, -69332048, -61297772, -29513404, 49622980, 54983096, +56402048, 31751620, -8699456, -35864052, -33777772, -21657372, 13908715, 22440130, 38474316, 3819837, +-29937532, -24762634, -5844914, -24812026, -12046846, 5711770, 39851392, 57629872, 36811628, 17959942, +15903190, -35756140, -4647692, -72111424, -81236088, -50437412, -24782498, -22001506, 37401112, 59403156, +65227132, 59512140, 50987704, 21476448, 3068217, -24628416, -7226820, -39790724, -71269080, -5693516, +6206765, 7060926, 23130010, 14193256, 23470922, -79211008, -43770012, -28221156, -46375984, -19369228, +33660196, -20173998, 22543746, 3304977, -21337934, 17044578, -17893370, 19143206, 21771190, -16764331, +-34448324, -70183520, -68517080, -50746648, 24537686, 8883066, -10122701, 13243532, 3304441, 338766, +-32900524, -22767084, -60900488, -19992000, -22686018, -2355790, 43884364, 47406776, 6556268, 24513526, +-15031312, -32743220, -59256592, -38735772, -36749352, -1212791, 17635672, 10357314, 14305999, 15848429, +-11218455, 9627706, -10601590, 9986336, 2124935, -308701, -2509872, 8258149, 6894497, 15712064, +-3922379, -3645354, 14318884, 11638288, -119188024, -60955248, -31728534, 40125732, 9317395, 152951840, +156783488, 118181392, 152860032, 160154496, 145531744, 104460584, 94839856, 105214888, 41909216, -6241125, +-65066072, -100603704, -139003936, -135078336, -201327136, -122180544, -79442936, -63131188, -89737440, -47238196, +-12901008, -67286568, -52195128, -55180128, -12418898, -33139968, -11743514, -44866304, -22721988, 26733488, +27756226, 8265665, -8217883, 29133836, 23672786, -67884640, 14182519, 45878304, 100553240, 73687680, +95739656, 39223788, 38096896, 159353488, 86382528, 163068640, 54702316, 152937344, 105701832, 133520872, +180215760, 170591808, 138453632, 155343056, 172707616, 187822672, 160545872, 185144224, 126454040, 187798512, +150929984, 133781248, 142798000, 77869368, 159854928, 77257872, 47036872, -58789512, 4012573, -86831888, +-97406640, -149234544, -175992192, -270794464, -264223696, -249788320, -233374032, -220191168, -185868464, -227027680, +-279189504, -275581760, -228361264, -241985968, -227316512, -228361264, -194655440, -212261040, -203266848, -151865744, +-167440368, -128891432, -120099096, -110990008, -70514776, -91454352, -20642686, -34062312, 15850577, 21065740, +66728224, 98288712, 103332616, 118985624, 105979928, 159287984, 180908320, 178919744, 207125872, 215965984, +214331760, 163141648, 146004736, 127811784, 118857848, 115367656, 118808456, 111309984, 85127328, 54579908, +62406948, 47911972, 37671160, 24845848, -18876382, -25119116, -25985090, -32317482, -39075076, -44471700, +-30838402, -34409668, -27037892, -28014998, -23817742, -17382270, -20411832, -16988206, -16018617, -20175072, +-18025978, -20480552, -15482820, -12837657, -16935056, -19777788, -6792491, -1621350, -1369558, -512175, +1505923, 8590, 653909, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -7687455, --15177341, -2673617, 219043, -3496104, -7132867, -2373506, 5257040, -8422431, -4627828, -2797634, --1629403, 2656974, -1183264, 2959769, 1378148, 2590939, -272194, 3210488, -2793876, 511638, --1215476, 597000, 8129300, -1738925, -480499, -4032974, 5032628, 3099893, 2431488, 6243272, --3178813, -1829656, 2159295, 5589363, -1490891, -384936, -4501126, -4964982, -3292629, 3526168, --4376572, -3781719, -454730, 5027796, -6796786, -1460289, -5674726, -2772938, -1607928, 774705, --490700, -4092567, 5258651, 884763, 4735202, -1913408, -1170916, -5878200, -103616, -2066416, --2189360, 3375844, 1926293, -1058173, 1845762, 3737159, -1040993, 1602560, -2655901, -1553704, --623307, -2534568, 2271501, 776852, 1736241, -4016331, 2906082, 1653562, 6522445, 3859565, --1036698, -4131759, -309238, 896038, 541166, 1280437, -162672, -1401233, 84826, -952946, -36507, -1152125, 439160, -1120450, -45097, 1249836, 452045, 644782, -770410, -563178, -623307, 859530, 421444, -127775, -12489228, -4502200, 3614752, -3322157, -1472100, -1413044, -1713692, -650688, -3281892, 5193153, 4673462, 1541356, -568009, 2399813, -6402723, -953483, --6327024, -3209414, 4696547, -794569, 852014, -653909, -710280, 92879, 9808095, 8950712, -4021163, 4772246, 5689221, -1107565, -635655, -1966021, 5021891, -500364, -1881733, 1394254, --2898566, 1988570, 3619584, -1853815, 4078072, 4576288, 8968965, -3514357, -4206384, 3821984, --2296734, 117038, 1903207, -5215164, 329639, -2733747, -3036542, 6885907, 4069482, 4953708, --2821257, -3752728, 2644626, -4366908, 3075197, 13298292, 767725, 904091, 3005403, 1290638, -1242319, 7566122, -4038880, -1036698, 1404991, 979789, -3759170, -2780455, -3837553, -1837172, --1394791, 3474629, -580357, 3490198, 3597572, -3605625, -3837017, -999654, 2441689, 3365644, --4023848, -792421, -1188095, -2780455, -326954, -2634426, 694711, -181999, 1414655, -810138, -549219, -1026497, -249108, -790274, -3657165, 3959423, 6368363, -3056943, 3149285, 10035191, -3343095, 2297808, -7030325, 5816460, 1515050, -9028558, 3814468, -2533494, -5436355, 2185065, --769336, 2105608, 5230734, -5509906, -5805722, -2575370, 7857106, 222265, 3891240, 8152922, --12140262, -9777493, 1574642, 5975374, -4398047, 388695, 8077760, 2089502, -1060857, -2430952, -9669582, 1189169, -2372433, 1359894, -8800388, 1003412, -4859756, 4480725, 769336, 4759361, --2407329, -1185948, 2135673, 149787, 612033, 280784, 4548907, 3679176, -5017059, 2872796, -4024921, -6862284, 806380, -3088618, 1277753, -1568200, -5322002, 93416, 4566624, 3986267, -8822400, -5464272, 6828998, -4516158, -921271, 4065187, -4438849, -6591164, -2396592, 321049, --427349, -328028, -723702, 1317481, 2805688, -3829500, -59593, 1838246, -362925, 1580011, --3156264, -1795833, -1257352, -2302639, 669478, -490163, -1821603, 1005022, 1018981, -1506460, --2332167, -111669, -549756, 2406792, -128849, -380105, 429497, 526134, -426812, -705985, -1602023, 547608, -1297080, -639413, -995359, 157303, 20176682, 9045201, 12222403, -989453, --3381750, -4407710, -4421132, 2404108, -3713536, 5626944, -639950, 7721815, 464930, 4084514, -5068062, 3919158, 3353296, 4443681, -14992120, -4432943, -1412507, -3160559, -2777233, -4719632, --10681047, 479426, 7311108, -4503810, 4387846, -3617436, -5333276, -4022774, 602369, -3395709, --1265942, -3482145, -248034, 8821863, 464393, 3964792, 5570573, 7252589, -3414499, 1698123, --1629403, -5599027, 6350109, -3558381, -266825, -5542119, 4043175, -55835, 84826, -1531156, --2587718, 1874216, 5671505, -2385318, 3191698, 3028489, 2539400, 9763534, -9836549, -4157528, -228170, -5415417, -7023346, -2786360, -8594230, 1282585, 10051834, -6947647, -3324305, -7933879, -499290, -2502355, -3805878, -9300752, 5448703, 7125888, 2807835, 4977330, -2546379, 795106, --1891933, 2059437, 70867, 4925791, -1294933, 2115272, -118648, -1271847, 1699196, 1171452, -2241436, 1887638, -344134, 444529, 1215476, 490700, 943282, -92342, -966905, -1792612, -862752, 454193, -1245004, 867583, 944893, -313533, 396748, 1160178, -384936, -1072668, --389231, 6270653, 8941585, -4954245, 4647692, -4043712, -1975685, -1604707, -11108933, 8065949, --2365990, -1180579, 12783433, 7963406, 8537858, -3477850, 308701, 1529008, -1991254, 2850785, --6548215, -171262, -4487167, 5228049, -5100811, -3498251, -555125, 892816, -6294275, 1209570, -642098, 8240432, 35433, -11256572, 6463389, 6080063, 8635569, -1374390, 2155537, -6225018, --4720706, -1964411, -4583804, 1791001, 1165547, -1698660, -710280, 4711579, 7311108, -10043781, --2196876, -3758, -4145180, -4290136, 6611029, -5342940, 2479270, -5243618, -6974490, -5171678, --3459059, 2400887, 949188, 12423730, -2128693, -3333432, 3677566, -3730716, -1117228, -3311957, -3437048, -3064459, 4437238, -2230699, -2079301, 3069291, 7436736, 2075543, -7030862, 42950, --3477313, -7103876, 1991791, 5031018, -1695438, 1165547, 1728724, 249645, -789200, 2590939, -28454, -2878702, -2147, -1035624, -561567, -1495722, 2338610, -556735, -1963337, -2075543, -265751, 2187212, -1003949, -146029, -2937221, 274878, 498216, 986232, -552977, -2463164, --1309965, 2166811, -909459, -2658585, 1049583, -15432354, 14843944, 7967701, -8856759, -8931921, -3661997, 11783780, -170725, 3456912, 13722421, 4602058, 4131222, -2318746, 7152195, 6536940, -7533910, -13582834, -8342974, -8240432, 6506876, 5614596, 7156490, 343061, -8291435, 3409667, --1257889, 3752191, -11919071, 4606890, 7220914, -5589900, 3122978, 5843840, 1636383, -173409, -1252520, -1872069, 10434623, 7092602, 5582921, 210990, 3626026, 8055748, -7189776, -3866008, -354872, 10651519, 6813429, 4193499, -8022462, 299574, 5452998, 6362994, -2238215, 1975148, -6211597, 7696045, 2428267, 7116761, 2822867, -790274, -6564321, -36507, -10932302, -4472672, --5244692, 921807, 3604551, -6325950, -2565706, -11555610, 5029407, -3203509, -84289, 6142340, -8943196, 10814728, 1342177, -1115618, -6704981, -1994476, 3424700, 3701188, -7114077, 2243584, --3201361, 2617783, 477278, -2392297, 45634, 1280974, -2254858, 1020055, -595390, -2682207, --1383516, -1684164, 1698123, 2080912, -361851, -1551557, 1117765, -1189706, -861678, -2083596, --288300, -438624, -2437931, 2027225, 13076565, 4100083, -2217814, -5925981, -15495168, -7510287, -9509058, -3320010, -14240501, -3792993, -2247342, 2192044, 7896298, 12056510, -688269, 3561602, --2739652, 6018323, -6700686, -7136088, -7681012, -13664438, 7329899, 4185983, -11411728, 373662, --8327942, -3163780, 7394860, 4198331, 6038724, -1669669, -1563368, -1939178, 13019656, 10145786, -10744934, -4852240, -9152038, 7279433, -1217623, -3223910, 9261023, 1672890, 9111236, -263067, -5100274, -6365142, -320512, 4599910, -19484656, -2914672, 950798, -14246943, 3714610, -3610994, -13331578, 8520678, -8153459, 672699, 12171400, -1232656, 6204617, -4056597, 8367133, -3859028, -1655710, -3198140, 208306, 5884105, -7920457, 8579734, 4385699, 4940286, 1398549, 11393474, --4463008, -12971875, 2250563, 9048422, -4269198, -8043937, -5832566, -4092030, 9325448, 234613, --4001299, 422517, 221728, -1778653, -1792075, 620623, 1790465, -1007170, -1228361, -642635, -1993402, -1007707, -3513283, 1018981, -3889093, 3589519, 2301029, -6979, -405874, 987306, --1139240, 1613834, 143345, 1130113, 197569, 525597, 4112968, 1482301, -2175938, 1207960, --31410706, -6636798, 16843252, -13594645, -4930623, 14319958, 5389647, -4530654, 1512902, -11841762, -10573673, -1331977, -19102404, 1377611, -1001801, 7231651, 7086696, -3784403, -14963129, -6400038, --5712844, 329639, -7977902, -4372277, -10173167, -2911988, 11092827, -9095130, -4571993, -3488587, --5920613, -6241125, -8487392, 5812702, 1182190, 7226283, 1265405, -5305359, -8223252, -8106751, --1667521, 5424544, 7988103, -2802466, -7267085, 7656316, 3185255, -11420318, -12738336, -25972740, --2290828, -8284992, -5015448, 3872987, 3959423, 2399813, 11684995, -1196685, -5566815, -682363, --5999533, 13336410, 7087770, -2567317, 7126962, -7469485, 3744138, 3087008, -7311645, -3193845, --6555731, 4718559, 3313031, -12065637, 7985955, 12253542, -789737, -562104, -12366285, -4795331, -5464272, -3819837, 3614215, 12149926, -4044786, 2694018, 1239098, 969589, -3825205, 741419, --610422, -5034776, -3036542, -432181, 1813550, 324270, 1430761, -5250598, 643708, -2796561, -1356673, -3025805, -2940979, -1766842, -164283, 701690, -2244121, 732829, 1312649, -279173, -557272, 2287070, 1285806, -4158065, -2742874, -1272921, 467078, 1606318, -648003, 1629403, -5607617, 20832738, -9722732, 7917236, -5092758, -48855, 11955041, -3446175, -5306969, -2816425, --1099512, 2101313, 8132521, 27451284, -1497870, 1656784, 7630010, 1778117, 141734, -12841415, --13348221, 2057826, 1842004, -8396124, -4271345, -1936493, 7621420, -3372623, 1490891, -175020, -3335579, -3438121, 16042240, 8900246, -7474317, 8814347, 7997766, -9699647, 1709397, 4126927, -3224447, -2699924, -3272228, 13346611, -11674795, 4942971, 14779519, -5152350, 1851668, 9458592, --1019518, 8223252, 4542465, 116501, 4538170, 7052337, 9731322, 6097780, 804770, -372588, --6684043, -7431367, 293132, 804233, -23284092, 15195594, -3562675, -7227356, -8084202, -17105780, --19286550, -12557411, 2354716, 9528385, -3487514, 1154273, -1548336, 9465034, -3533684, -7714298, -4377646, 2250026, -3194382, 1134945, 6482717, -6296422, 1256815, -7998303, -2661269, -3612604, -1915019, -970126, 4098473, 2498597, 871342, -1197759, 2087891, 2747169, -62277, -5819144, -3236795, -339839, 4926865, 4642860, 2347737, -2427730, 4268661, 863288, -670015, -221728, -254477, -3929895, 4282620, -475668, -2831457, 4034048, 8230768, -1720134, -1754494, 4131222, --1664300, -3042984, -1098975, 28195386, 28336584, -816581, -23424752, 4566087, 4821638, -2705293, -6165426, 3510599, 2075006, -281320, -3937948, 22874458, 4263829, -3691525, -25458956, -14341433, -6059662, -1593433, -8824010, -15297063, 2181307, 2583423, 3974455, -3819837, -16711718, -17890150, -19434728, 18339510, 5779416, 16842178, -14347875, 1953136, 7605314, -3041374, -9073655, -16428250, --8061654, 2898566, -632971, -7711614, 7994008, 144955, 7762080, 6236830, 496606, -17661980, --10195179, -8308614, -1355062, 1813013, 2406256, -3007014, -4925791, 1212255, 2924336, -15793668, --3904662, 2579128, 3624953, -7172596, -19679004, -4614943, -4890894, 14583561, -492311, 6561637, --6529424, -5013838, -8766565, -9883793, -5712307, 1592896, -664109, 12242804, -7200513, 2122251, -14228153, -988916, 7146289, 6331319, 13824963, 3052111, -3915400, -7043210, -6111739, -2426120, -8390755, 1283658, 8458401, 4453344, -577136, -227096, 491237, 676457, -3655017, -4687957, -95563, -1163936, -367220, 1356673, -824634, 1061931, -5357972, -1270774, 3428458, -201863, -2200634, -9322227, -957241, -381715, -1731409, 1897839, 1541893, 1187559, 1713155, 2119030, --4275103, 5094905, -3276523, 12281459, -6314139, 2145873, -4756677, 950798, 3227668, -7728794, --5229123, -13798119, -15256261, -10020159, -3923453, -699006, 382252, -8442295, -7821673, -15820512, -7611756, -15855409, -20403780, 13179644, -12230993, -15570330, 14504641, 2755222, -3269007, 15556372, -8982387, -12087112, 11180337, -30819612, -2079301, -7920457, -3284576, -14489609, 25368762, 11877195, --7421167, 3723737, 8001524, -5309117, 8833137, 133144, 400506, -7247221, 8579197, 9874130, -13357885, -20908438, -716186, -144955, 6202470, -9480067, -3605625, -9649181, -9471477, 16618302, -5385889, -12450036, 6429029, -7702487, -8156143, -13369696, -24285356, 6345278, 16069083, 1088774, -16186658, 21961242, -1294396, -8997956, -20807506, 1621887, -2654827, 1330366, -5184026, 4300336, --9137543, 19661824, 10899553, 17199196, 3498788, -2121714, -5220533, 7021198, 8130910, 3659849, --1471026, -2461016, 781684, 9254581, -1620813, 3880503, -5825050, 2520072, -9634149, 940598, -1201517, -4243428, 9103720, 5262946, -2328946, -5980742, -5223754, -1725503, -476205, 2922725, --6117644, 1584306, 1103807, -447750, -4226248, 1603633, -9176198, -1858647, -2173254, -2562485, -1591285, -166967, -17593796, 2357400, -39244728, -26365730, -18900540, 10227928, 19465328, -27764280, -6441377, 19682762, 12157442, -281320, 7204808, 18558016, -8524973, -1109712, -5406290, 547071, --12059731, 8573292, 177704, 1013612, 3167539, 24875914, -1261110, -10975789, -10691247, 5929739, -18313204, -7397545, -18551038, 5505611, 18583786, 10849624, -2509872, 9024263, 6094022, 8694624, -1930051, 7364795, 12604655, -1574642, -21261162, 1064615, 6551973, -19922206, -14548128, 19486266, -15286325, -15047418, -9862856, 4759361, -1013612, 9557913, 23694260, -5095442, -4592394, 4505421, --1231045, 8773008, 4378183, -8639864, -6792491, -3261491, 6935299, 6305549, -6314139, -17176112, --3037616, -25846576, 24448028, 4123169, -4495757, 2326799, 10125385, -526134, -11368778, 4218195, --4948876, -7369627, 5746130, -1546725, -11251204, -18489834, -6048925, -7540352, 15257871, -2436857, -5027796, 2903935, 1856500, -1438277, -1337882, 2380486, -4110821, 664109, 5517959, -668941, --2904472, -1657857, -12617003, -3894462, -350040, -2369211, -9188546, -8242579, -3470871, -1887638, --836982, -2699387, -497142, 152471, 6902013, 2443300, -1147830, -2810519, 1076426, -2486249, --2103460, 4481799, -2270427, -5364951, -1582696, -4043712, 474594, -4973036, 132070, 3280281, -1027571, -4772246, -1591822, -15162845, -656056, 2622615, -18586470, -4884452, 13973676, 18176302, -12863964, 33918432, 20459614, 30734786, 11473468, 8098698, -15880642, 17249126, -5807870, -1944010, --12717398, -8469139, 16666621, -5459977, 37801080, 17586280, 10907606, -2025614, 8740258, -5952288, --17648020, -8929774, -10954851, 7961796, -10329933, -240518, -11054172, 6462852, 15375983, 13875429, --917512, 20068234, 16767552, 776852, -5844914, -7678865, -13762149, -4740570, 31645320, 12263742, -36429376, -11755862, 178778, -1249836, 8490077, 29227790, 10013716, 685584, 18793166, 21525840, -22746684, -2079838, -13453448, -4963372, -3721052, -3903052, 15076409, 10272488, 14307610, 21824876, --13634911, 33022392, -22205518, -41686416, -6451041, -13026636, 8483097, 20070382, 9831717, -11284490, --1157494, -12253005, -9141301, -6086506, 146029, 16591459, 2797634, -4753455, 2595234, 1198296, -4977330, 5256503, 3610457, 6459631, 1759863, 4041564, 1486596, 4487167, 281320, -13478144, --5193153, -203474, -12532715, 1315871, -13085155, -6942278, -7946763, -7408819, -6205154, -4610648, --1757715, 686658, 3749507, 13699872, 1863479, -8791798, 3986267, 739271, 12447889, -2435783, -5368172, -183073, 152471, -6765111, 1567663, 19730542, 32081258, -15973520, -12649216, 11539503, --9678172, -1759863, -4604205, 4307316, 13931800, 15108084, 22198538, -24516748, 27394376, -9978820, -2238752, -12761958, 11186779, 20806432, 8209293, 3804267, 1101659, 25347824, 5884105, -907312, --8772471, -3947075, -26498874, -3599720, -13099113, -31496606, 2261837, -1967095, 12401181, -32803886, --6856379, 7595650, 11649025, 27161374, -7959112, 7848516, 14397804, 2156074, -4278325, 7612830, --7733089, -1954747, -41375568, 3495030, -17905718, -20571820, -23301808, 9123047, -37110664, 11976516, --14190572, -18493056, -25390236, 22433152, 24042690, 23934778, 4673462, 4292283, 22550188, -31660352, --3110093, -9846749, 12774843, -37597068, -12916577, -3998078, 12001749, 9401147, 7701413, 15008763, --14020384, 5413807, -16923244, -5115843, -10146323, -4095788, -3449933, 339302, -16036334, 7198902, -10072772, -1859184, 708670, -7982734, -2457795, 7590818, -10342818, -330176, 5087926, -12929462, -5879810, -11598022, 161598, 7072201, 1734093, -9529459, -6155762, 3522947, -5207648, 5723581, -4128001, 6620692, -831076, -8361765, 15768972, -7585986, -3729642, -10286447, 7064685, -3578245, -1049583, -9552544, 1315334, -11581379, -1762010, 8296803, -2597382, -4982162, -11967926, 1278827, -1671279, -1708860, -15724949, -29685204, -508954, -10645076, 35097936, 7238631, 24832964, -8207146, -33889440, -21368536, -39864276, 8912057, 6784975, 4458176, -19804632, -22680648, -17671642, 6529961, --17798344, 7742216, -9429064, 26486526, -8644695, -4107063, 19191524, 502511, -47707424, -19927038, --618475, 31363462, -3586835, -9955734, -27341224, 4662724, -6725382, -23638964, -27862526, -3320547, -5139465, -9686762, -10590852, -27994060, 18308908, -7005092, 6600828, -13974750, 645319, 8204462, -5087926, 24563992, 282931, -8551817, -31996432, -11366631, 15516643, -21997212, -11142756, 8054138, -17660906, 13689135, 35170952, 26749594, 545998, 20287278, 20901996, 7049652, 867583, 12153147, --10367514, 52977884, -24337970, -57962196, 15452755, -49343268, -1852205, -38631084, -208843, 47165720, -5975910, -22531936, 7546258, 7988639, -14630269, -12110734, -16559783, 3577708, -4956929, 15097884, --11873437, 10084046, -19931870, 5571110, -594316, -3299072, -4466766, 13688598, 26311506, 8188892, -10746008, 18114562, 5619428, -18118856, 5374078, -6723235, 12215961, -3775813, -5533529, -699006, --1116692, -4869956, -14800457, -9791989, -6487011, -821413, 2255395, -1079647, -9324911, -21337398, --13205951, 3221226, -3616363, -363998, -8010651, 2889439, 15586973, 22196390, -33643016, -22378390, --13894756, -11812234, 13532368, 21005074, -12352326, 1401233, 18748070, -37948184, 2807835, 8895414, --28625420, 14829985, -9529459, 13083544, 4926328, 14744623, 1601486, -18551038, 19217294, -24177982, --5263483, 46826416, -19209778, 17155710, -11143830, 19280646, 17578764, -6142877, -20535312, 21822192, -56761752, -31099858, 8083129, -41275708, 20882668, 12561706, -22362284, 24776592, 2326262, -49561776, -7115150, 2437931, 22624814, -6068789, -3517041, -26039850, -25353192, -13006772, 61872224, -9445170, -31392990, -27589260, 20635708, 10126459, -5737540, -21209086, -3994320, 17467096, 34744136, -12600360, --11752104, -3676492, 6750615, 30302604, -7772280, -7151121, -22580790, 6922414, -33956548, -15060303, -24060406, 29272886, 3183645, -2407866, -16000364, -26006564, -75670880, 47162500, 17790292, 27098022, -2528125, -24554328, 26897232, -15198816, 11291469, 16125455, 15526307, 36418640, -847182, 8532489, -9896678, -4041564, -16102369, -5248987, 26419418, 16446504, -15081241, -3214783, -10317048, -2556579, -12238509, 3727495, -17627620, -11221676, 16503412, 3945464, -5461588, 8711804, -14943265, -8936216, --3258270, 7350837, 11587822, 7709467, 2061047, 9363566, -7693897, -9805410, 1564979, -897648, --13457743, 1679332, -13877576, -437550, -8571681, -1910187, 1918777, -6945499, -13305272, 4551055, --31807990, 22220550, 21751862, -43097312, 4054449, -22642530, 2678986, -47445968, 47571056, 41485624, --4387309, -21644488, -7651484, -8674223, 23008676, -23731304, 29713120, -39672076, -23148264, 11316702, -13903883, 3226057, 13415867, 37796248, 10726144, 17438640, 4473746, 18121540, 12714714, -8483634, -3597572, 15348603, -1249299, -1291175, 29995514, 13561359, 39421356, -3609920, 22382148, 76773, --29171954, 29642790, -15525233, -3309809, 8916889, -27454504, -18797998, 10682121, 42872900, 23561654, -15326054, -55531780, -13184476, -38933880, -643708, 62310848, 40700184, 47144784, 3403225, -45712948, -13918915, 46402288, 9426379, -11597485, 40969692, 4475893, 27273042, -71105328, -59337656, 42417632, --3412889, -19128710, -45552424, -9834938, -17335024, 19345070, 17545478, 21181168, 21359946, -8960376, -6391448, 39303244, 35907536, 37963752, 2749316, 54546084, 26808112, -9649181, -22009560, 356482, --11060615, 3264712, 27307938, -4347581, 783295, 20216412, 21825414, 2170569, -335007, 8651675, -24212878, 8710731, 11110007, 16809428, 5526549, 13085155, -1091459, -7335804, -3681324, -2784750, -560493, 17379048, -7113540, 3092377, -14690399, 21027086, 9691594, 9207873, -744103, 10626286, --492848, 36010616, 8745627, 36971080, -10502806, 32345936, 14306536, 4809290, 13544716, 13940390, -15251429, -4179003, -3431679, 22141630, 7098507, 18557480, -41175316, 24273008, 32386200, 2456721, -11021423, -29346974, 22852448, -13363791, 10912975, 1036698, 19327, 19361176, -6084358, 12590160, --4152160, -23579908, 6185290, -1675037, 26213796, 22939958, 32615444, 10851772, -25177098, -20745766, -21117280, 23796804, 10908143, 2024540, 7403450, -6601902, -20691542, 3406983, -7768522, 28973850, -20142860, 17634598, 22867480, 23528368, -32815698, 35817880, 35139276, 25769266, -17738214, -15741055, --22891102, 31170188, 18099530, 51268488, -31512712, -31134754, -24165096, -45616848, -12074764, 48965312, -7594039, 38413112, -41380400, -44177496, 9360881, 27761058, -38723964, 5842230, -30897458, 12018929, --35630512, -2998961, 16548509, 17570174, -32432372, 12471511, -24741160, -48967460, -1893544, 57471496, -29600378, 23128936, -16416439, -41552196, 62444528, 50470160, 13957033, -56674776, -2509872, -13545253, -39873940, 20218022, 24595130, -29634738, 21718576, -13487271, 14112726, -20644298, 6862821, -23065048, -32503238, -6865505, 5064304, -39576512, 11009612, 4498442, -2161979, -9210557, 7613367, 3672197, -3745212, -24717536, 9851581, 24244016, 1200443, 14372571, 12229383, 9848897, 1277753, 4352413, -145492, 781684, 715112, -8305930, -1256815, 7190849, -510027, 14938433, 12799003, -7672959, --1752884, 6525129, 2703145, 11332271, -22984518, -694174, -79154640, -16244640, -1588064, 929324, -28145458, -73983496, -7981660, 33414308, -54089744, 12233141, -11969537, 63461900, 34058552, -38953744, -10023380, 42640972, 4799089, -17157858, 14532022, 10115185, 6061810, -978716, -3820910, 3113315, -7431904, 14463302, 44455596, 35030292, 38927972, 26049514, 48906792, 23327042, 49993956, 20117626, -44395468, 308701, 27731530, 24234352, 27482958, 20365662, -1562294, 7747584, -33315524, -20480014, -64636036, 454730, -25248502, -7547868, 20571282, 33472828, 69519952, -9709310, -37630356, -19524384, --27636504, 38994544, 45439680, 50070728, 16064788, -2220498, 34537444, -58406724, 53204980, 19619410, --27460948, -916976, -89874872, 1739462, -59278064, -83143584, -20219632, -49039400, -20733418, 93315680, -85899880, 80006648, -62914292, -6905234, -6849399, 62816580, 99470904, -22505628, -27606440, 54484880, -56768732, 48099876, -5412196, -8247948, -27082990, -34965864, 5380521, -13127568, 15557445, 23420994, -21088290, 13959717, 1753420, 8894877, 26866094, 4118337, 478889, -7937637, 1828582, 1387274, -7537131, 5037997, 5732171, 27032524, -2090039, -16770774, 17119202, 19532438, 4969277, 31452046, -7836705, 15003931, 35155380, 46214384, 34398392, 24540906, 10384694, 4293357, 13889924, 31556736, -14361834, 32364726, 24591372, 15343234, 23153632, 8039105, 31336618, 26750666, 22392348, 33341294, -19667728, 5961415, 9709310, -2107755, -22002580, 56847112, 69080256, -57219164, -52486648, 17656610, -60392072, 1500554, -28310276, 198105, 16386374, 18122614, -49956376, 18570364, -6671695, 26362510, --27431420, -13207024, -32142998, 33925408, -4631049, -15008763, -30055108, 22009024, 12994960, -5214091, --25402048, 11867532, 11246372, 5983427, -22446036, -3255048, -1127429, 25933012, -19564112, -4788889, --28610388, -7552163, 9898826, 22755810, -29768418, -11396696, 31729070, 27133992, -8332774, -19236622, --117575, -9833328, 26509612, -15188078, -8351564, 12783433, 9634149, 16147466, -14537391, 4549981, --20034412, 23108534, 27416924, 12940736, 4297652, -21497386, 24371256, -17301738, 37715720, -27625230, -30324616, -47564080, 32136556, 3982509, -2681133, -33478734, -9868761, 10799695, -8426189, 3176128, --8140574, 9375914, -4048544, 10499048, -10262824, -14388677, -8955544, 9967008, 907312, -1335735, --2332167, -8002061, 5114233, 11665668, -5901822, -1598802, 928787, 1498944, -416075, 1983201, --1862405, 8404177, 494458, 10920491, -9787694, 1720671, -4374424, 11011222, -11770358, 10837276, --12136504, 7205882, 3956202, 13742822, -2973728, 12987981, -11793980, -9912248, -1642288, 21188148, --10055055, 16264504, -5548561, 1988570, 2758443, 11350525, -4669703, 5546951, 2703145, -340913, --303869, 3527779, -753230, -7945690, 15497853, -9450002, 3040837, -7713225, 5412733, -7363185, -8406325, -10912438, 12682502, -10239739, 10908143, -13741748, 12432857, -17282948, 16669842, -10912438, -12116103, -12826383, 12898861, -13064217, 13468481, -12328704, 12906377, -1834488, -12327630, 55091544, -58628452, -34500400, -20433844, 11623255, 55989732, 34782256, 20864952, 20065550, -8914205, -23431194, --7089918, 13153874, -201863, -5521718, 16703665, 287763, 11773042, 1440425, -6261526, -20995410, --5571647, -1232119, 1549946, -834834, -17056926, 19036906, 3177202, -7669201, -431107, -593242, -267899, 12286828, 22577032, 9623948, 2281702, -8135742, -11688217, -3038153, 7333657, 15127949, -20376936, -11381663, -11236708, 2535105, 20598126, 9284646, 4589710, -9316858, -18702972, 15938624, --3294777, 439160, 1076963, 5127117, 4919885, -2278480, -689879, -12202539, 1863479, 10739029, --5116380, 6410776, -3613678, -8699993, 5507222, -1663226, 2973728, -677531, 9336185, 6327024, --13952201, 4097936, 652298, -25302190, -33618320, 947577, 1952063, 7640747, 20444582, 2226404, --9027484, -8836358, 8041253, 8783745, 13336947, 9087614, 550830, 3866544, -1452236, -10162966, --4238059, 1527398, -13945759, -13342853, 8559333, 9092983, -239444, 10229538, -14554570, -2658585, --706522, 702764, -4516158, 2281702, 7823283, 10872710, 5285494, 9152575, -5833103, -11419781, -6654515, 1043140, -2829847, -19475530, -72702520, 30869540, 112121728, 103376640, 88251376, 35198332, --83727168, -52414708, -75270376, -84359064, -75414792, -21974664, 16316044, 63572496, 66234300, 79306032, -52545704, 52977348, 1327145, -55736328, -53213036, -65630320, -51317344, -28585692, -1910724, -18420040, -19964618, 24577414, 39879844, 43765716, 44487808, 26479010, 2260227, 11756399, -9773735, 6290517, --30415348, -22144314, -28126130, -46028092, -36479840, -27997818, -19729470, -32735166, 4567698, 55819004, -63122596, 35201552, 66001836, 16328392, 38527468, 19775640, 11336029, -16616155, -35194572, -48300664, --67775656, -52025476, -77321224, -32064616, -34410204, 22165790, 22261352, 64661808, 74585864, 66357780, -59155660, 57766772, 36196372, 4397510, -20207822, -61877056, -38763152, -80816256, -68845640, -95841120, --15478525, -8628052, 23637890, 30262876, 54630372, 64190972, 53781580, 47953308, 35622996, 20949776, -2993055, -17894982, -25680146, -34675420, -53434224, -37612640, -46520940, -32430224, -16580184, -4850092, -10570988, 10211285, 51095616, 47026672, 46680388, 36334348, 26716308, 3124589, 16617228, -18558554, --30644054, -23951958, -66360464, -77450608, -14915885, -5276368, -3333968, 37687264, 30925912, 41136124, -28893318, 37585796, 11504607, 9670119, -2896956, -16013249, -20494510, -26574574, -29343216, -18138184, --3783866, -22975928, -12064026, 18245022, 26132192, 17448842, 22638772, 15371151, 11236171, 2847027, --2025614, -8031052, -11204496, -8782134, -14011257, -7438347, -2748242, -5360119, -7111929, 1508607, -5422396, 1076963, 8237211, 10339597, 7846905, 5226975, 4565014, 1374390, -846109, -2950643, --749472, -1116692, 394063, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-15177341, -2673617, 219043, -3496104, -7132867, -2373506, 5257040, -8422431, -4627828, -2797634, +-1629403, 2656974, -1183264, 2959769, 1378148, 2590939, -272194, 3210488, -2793876, 511638, +-1215476, 597000, 8129300, -1738925, -480499, -4032974, 5032628, 3099893, 2431488, 6243272, +-3178813, -1829656, 2159295, 5589363, -1490891, -384936, -4501126, -4964982, -3292629, 3526168, +-4376572, -3781719, -454730, 5027796, -6796786, -1460289, -5674726, -2772938, -1607928, 774705, +-490700, -4092567, 5258651, 884763, 4735202, -1913408, -1170916, -5878200, -103616, -2066416, +-2189360, 3375844, 1926293, -1058173, 1845762, 3737159, -1040993, 1602560, -2655901, -1553704, +-623307, -2534568, 2271501, 776852, 1736241, -4016331, 2906082, 1653562, 6522445, 3859565, +-1036698, -4131759, -309238, 896038, 541166, 1280437, -162672, -1401233, 84826, -952946, +36507, -1152125, 439160, -1120450, -45097, 1249836, 452045, 644782, -770410, -563178, +623307, 859530, 421444, -127775, -12489228, -4502200, 3614752, -3322157, -1472100, -1413044, +1713692, -650688, -3281892, 5193153, 4673462, 1541356, -568009, 2399813, -6402723, -953483, +-6327024, -3209414, 4696547, -794569, 852014, -653909, -710280, 92879, 9808095, 8950712, +4021163, 4772246, 5689221, -1107565, -635655, -1966021, 5021891, -500364, -1881733, 1394254, +-2898566, 1988570, 3619584, -1853815, 4078072, 4576288, 8968965, -3514357, -4206384, 3821984, +-2296734, 117038, 1903207, -5215164, 329639, -2733747, -3036542, 6885907, 4069482, 4953708, +-2821257, -3752728, 2644626, -4366908, 3075197, 13298292, 767725, 904091, 3005403, 1290638, +1242319, 7566122, -4038880, -1036698, 1404991, 979789, -3759170, -2780455, -3837553, -1837172, +-1394791, 3474629, -580357, 3490198, 3597572, -3605625, -3837017, -999654, 2441689, 3365644, +-4023848, -792421, -1188095, -2780455, -326954, -2634426, 694711, -181999, 1414655, -810138, +549219, -1026497, -249108, -790274, -3657165, 3959423, 6368363, -3056943, 3149285, 10035191, +3343095, 2297808, -7030325, 5816460, 1515050, -9028558, 3814468, -2533494, -5436355, 2185065, +-769336, 2105608, 5230734, -5509906, -5805722, -2575370, 7857106, 222265, 3891240, 8152922, +-12140262, -9777493, 1574642, 5975374, -4398047, 388695, 8077760, 2089502, -1060857, -2430952, +9669582, 1189169, -2372433, 1359894, -8800388, 1003412, -4859756, 4480725, 769336, 4759361, +-2407329, -1185948, 2135673, 149787, 612033, 280784, 4548907, 3679176, -5017059, 2872796, +4024921, -6862284, 806380, -3088618, 1277753, -1568200, -5322002, 93416, 4566624, 3986267, +8822400, -5464272, 6828998, -4516158, -921271, 4065187, -4438849, -6591164, -2396592, 321049, +-427349, -328028, -723702, 1317481, 2805688, -3829500, -59593, 1838246, -362925, 1580011, +-3156264, -1795833, -1257352, -2302639, 669478, -490163, -1821603, 1005022, 1018981, -1506460, +-2332167, -111669, -549756, 2406792, -128849, -380105, 429497, 526134, -426812, -705985, +1602023, 547608, -1297080, -639413, -995359, 157303, 20176682, 9045201, 12222403, -989453, +-3381750, -4407710, -4421132, 2404108, -3713536, 5626944, -639950, 7721815, 464930, 4084514, +5068062, 3919158, 3353296, 4443681, -14992120, -4432943, -1412507, -3160559, -2777233, -4719632, +-10681047, 479426, 7311108, -4503810, 4387846, -3617436, -5333276, -4022774, 602369, -3395709, +-1265942, -3482145, -248034, 8821863, 464393, 3964792, 5570573, 7252589, -3414499, 1698123, +-1629403, -5599027, 6350109, -3558381, -266825, -5542119, 4043175, -55835, 84826, -1531156, +-2587718, 1874216, 5671505, -2385318, 3191698, 3028489, 2539400, 9763534, -9836549, -4157528, +228170, -5415417, -7023346, -2786360, -8594230, 1282585, 10051834, -6947647, -3324305, -7933879, +499290, -2502355, -3805878, -9300752, 5448703, 7125888, 2807835, 4977330, -2546379, 795106, +-1891933, 2059437, 70867, 4925791, -1294933, 2115272, -118648, -1271847, 1699196, 1171452, +2241436, 1887638, -344134, 444529, 1215476, 490700, 943282, -92342, -966905, -1792612, +862752, 454193, -1245004, 867583, 944893, -313533, 396748, 1160178, -384936, -1072668, +-389231, 6270653, 8941585, -4954245, 4647692, -4043712, -1975685, -1604707, -11108933, 8065949, +-2365990, -1180579, 12783433, 7963406, 8537858, -3477850, 308701, 1529008, -1991254, 2850785, +-6548215, -171262, -4487167, 5228049, -5100811, -3498251, -555125, 892816, -6294275, 1209570, +642098, 8240432, 35433, -11256572, 6463389, 6080063, 8635569, -1374390, 2155537, -6225018, +-4720706, -1964411, -4583804, 1791001, 1165547, -1698660, -710280, 4711579, 7311108, -10043781, +-2196876, -3758, -4145180, -4290136, 6611029, -5342940, 2479270, -5243618, -6974490, -5171678, +-3459059, 2400887, 949188, 12423730, -2128693, -3333432, 3677566, -3730716, -1117228, -3311957, +3437048, -3064459, 4437238, -2230699, -2079301, 3069291, 7436736, 2075543, -7030862, 42950, +-3477313, -7103876, 1991791, 5031018, -1695438, 1165547, 1728724, 249645, -789200, 2590939, +28454, -2878702, -2147, -1035624, -561567, -1495722, 2338610, -556735, -1963337, -2075543, +265751, 2187212, -1003949, -146029, -2937221, 274878, 498216, 986232, -552977, -2463164, +-1309965, 2166811, -909459, -2658585, 1049583, -15432354, 14843944, 7967701, -8856759, -8931921, +3661997, 11783780, -170725, 3456912, 13722421, 4602058, 4131222, -2318746, 7152195, 6536940, +7533910, -13582834, -8342974, -8240432, 6506876, 5614596, 7156490, 343061, -8291435, 3409667, +-1257889, 3752191, -11919071, 4606890, 7220914, -5589900, 3122978, 5843840, 1636383, -173409, +1252520, -1872069, 10434623, 7092602, 5582921, 210990, 3626026, 8055748, -7189776, -3866008, +354872, 10651519, 6813429, 4193499, -8022462, 299574, 5452998, 6362994, -2238215, 1975148, +6211597, 7696045, 2428267, 7116761, 2822867, -790274, -6564321, -36507, -10932302, -4472672, +-5244692, 921807, 3604551, -6325950, -2565706, -11555610, 5029407, -3203509, -84289, 6142340, +8943196, 10814728, 1342177, -1115618, -6704981, -1994476, 3424700, 3701188, -7114077, 2243584, +-3201361, 2617783, 477278, -2392297, 45634, 1280974, -2254858, 1020055, -595390, -2682207, +-1383516, -1684164, 1698123, 2080912, -361851, -1551557, 1117765, -1189706, -861678, -2083596, +-288300, -438624, -2437931, 2027225, 13076565, 4100083, -2217814, -5925981, -15495168, -7510287, +9509058, -3320010, -14240501, -3792993, -2247342, 2192044, 7896298, 12056510, -688269, 3561602, +-2739652, 6018323, -6700686, -7136088, -7681012, -13664438, 7329899, 4185983, -11411728, 373662, +-8327942, -3163780, 7394860, 4198331, 6038724, -1669669, -1563368, -1939178, 13019656, 10145786, +10744934, -4852240, -9152038, 7279433, -1217623, -3223910, 9261023, 1672890, 9111236, -263067, +5100274, -6365142, -320512, 4599910, -19484656, -2914672, 950798, -14246943, 3714610, -3610994, +13331578, 8520678, -8153459, 672699, 12171400, -1232656, 6204617, -4056597, 8367133, -3859028, +1655710, -3198140, 208306, 5884105, -7920457, 8579734, 4385699, 4940286, 1398549, 11393474, +-4463008, -12971875, 2250563, 9048422, -4269198, -8043937, -5832566, -4092030, 9325448, 234613, +-4001299, 422517, 221728, -1778653, -1792075, 620623, 1790465, -1007170, -1228361, -642635, +1993402, -1007707, -3513283, 1018981, -3889093, 3589519, 2301029, -6979, -405874, 987306, +-1139240, 1613834, 143345, 1130113, 197569, 525597, 4112968, 1482301, -2175938, 1207960, +-31410706, -6636798, 16843252, -13594645, -4930623, 14319958, 5389647, -4530654, 1512902, -11841762, +10573673, -1331977, -19102404, 1377611, -1001801, 7231651, 7086696, -3784403, -14963129, -6400038, +-5712844, 329639, -7977902, -4372277, -10173167, -2911988, 11092827, -9095130, -4571993, -3488587, +-5920613, -6241125, -8487392, 5812702, 1182190, 7226283, 1265405, -5305359, -8223252, -8106751, +-1667521, 5424544, 7988103, -2802466, -7267085, 7656316, 3185255, -11420318, -12738336, -25972740, +-2290828, -8284992, -5015448, 3872987, 3959423, 2399813, 11684995, -1196685, -5566815, -682363, +-5999533, 13336410, 7087770, -2567317, 7126962, -7469485, 3744138, 3087008, -7311645, -3193845, +-6555731, 4718559, 3313031, -12065637, 7985955, 12253542, -789737, -562104, -12366285, -4795331, +5464272, -3819837, 3614215, 12149926, -4044786, 2694018, 1239098, 969589, -3825205, 741419, +-610422, -5034776, -3036542, -432181, 1813550, 324270, 1430761, -5250598, 643708, -2796561, +1356673, -3025805, -2940979, -1766842, -164283, 701690, -2244121, 732829, 1312649, -279173, +557272, 2287070, 1285806, -4158065, -2742874, -1272921, 467078, 1606318, -648003, 1629403, +5607617, 20832738, -9722732, 7917236, -5092758, -48855, 11955041, -3446175, -5306969, -2816425, +-1099512, 2101313, 8132521, 27451284, -1497870, 1656784, 7630010, 1778117, 141734, -12841415, +-13348221, 2057826, 1842004, -8396124, -4271345, -1936493, 7621420, -3372623, 1490891, -175020, +3335579, -3438121, 16042240, 8900246, -7474317, 8814347, 7997766, -9699647, 1709397, 4126927, +3224447, -2699924, -3272228, 13346611, -11674795, 4942971, 14779519, -5152350, 1851668, 9458592, +-1019518, 8223252, 4542465, 116501, 4538170, 7052337, 9731322, 6097780, 804770, -372588, +-6684043, -7431367, 293132, 804233, -23284092, 15195594, -3562675, -7227356, -8084202, -17105780, +-19286550, -12557411, 2354716, 9528385, -3487514, 1154273, -1548336, 9465034, -3533684, -7714298, +4377646, 2250026, -3194382, 1134945, 6482717, -6296422, 1256815, -7998303, -2661269, -3612604, +1915019, -970126, 4098473, 2498597, 871342, -1197759, 2087891, 2747169, -62277, -5819144, +3236795, -339839, 4926865, 4642860, 2347737, -2427730, 4268661, 863288, -670015, -221728, +254477, -3929895, 4282620, -475668, -2831457, 4034048, 8230768, -1720134, -1754494, 4131222, +-1664300, -3042984, -1098975, 28195386, 28336584, -816581, -23424752, 4566087, 4821638, -2705293, +6165426, 3510599, 2075006, -281320, -3937948, 22874458, 4263829, -3691525, -25458956, -14341433, +6059662, -1593433, -8824010, -15297063, 2181307, 2583423, 3974455, -3819837, -16711718, -17890150, +19434728, 18339510, 5779416, 16842178, -14347875, 1953136, 7605314, -3041374, -9073655, -16428250, +-8061654, 2898566, -632971, -7711614, 7994008, 144955, 7762080, 6236830, 496606, -17661980, +-10195179, -8308614, -1355062, 1813013, 2406256, -3007014, -4925791, 1212255, 2924336, -15793668, +-3904662, 2579128, 3624953, -7172596, -19679004, -4614943, -4890894, 14583561, -492311, 6561637, +-6529424, -5013838, -8766565, -9883793, -5712307, 1592896, -664109, 12242804, -7200513, 2122251, +14228153, -988916, 7146289, 6331319, 13824963, 3052111, -3915400, -7043210, -6111739, -2426120, +8390755, 1283658, 8458401, 4453344, -577136, -227096, 491237, 676457, -3655017, -4687957, +95563, -1163936, -367220, 1356673, -824634, 1061931, -5357972, -1270774, 3428458, -201863, +2200634, -9322227, -957241, -381715, -1731409, 1897839, 1541893, 1187559, 1713155, 2119030, +-4275103, 5094905, -3276523, 12281459, -6314139, 2145873, -4756677, 950798, 3227668, -7728794, +-5229123, -13798119, -15256261, -10020159, -3923453, -699006, 382252, -8442295, -7821673, -15820512, +7611756, -15855409, -20403780, 13179644, -12230993, -15570330, 14504641, 2755222, -3269007, 15556372, +8982387, -12087112, 11180337, -30819612, -2079301, -7920457, -3284576, -14489609, 25368762, 11877195, +-7421167, 3723737, 8001524, -5309117, 8833137, 133144, 400506, -7247221, 8579197, 9874130, +13357885, -20908438, -716186, -144955, 6202470, -9480067, -3605625, -9649181, -9471477, 16618302, +5385889, -12450036, 6429029, -7702487, -8156143, -13369696, -24285356, 6345278, 16069083, 1088774, +16186658, 21961242, -1294396, -8997956, -20807506, 1621887, -2654827, 1330366, -5184026, 4300336, +-9137543, 19661824, 10899553, 17199196, 3498788, -2121714, -5220533, 7021198, 8130910, 3659849, +-1471026, -2461016, 781684, 9254581, -1620813, 3880503, -5825050, 2520072, -9634149, 940598, +1201517, -4243428, 9103720, 5262946, -2328946, -5980742, -5223754, -1725503, -476205, 2922725, +-6117644, 1584306, 1103807, -447750, -4226248, 1603633, -9176198, -1858647, -2173254, -2562485, +1591285, -166967, -17593796, 2357400, -39244728, -26365730, -18900540, 10227928, 19465328, -27764280, +6441377, 19682762, 12157442, -281320, 7204808, 18558016, -8524973, -1109712, -5406290, 547071, +-12059731, 8573292, 177704, 1013612, 3167539, 24875914, -1261110, -10975789, -10691247, 5929739, +18313204, -7397545, -18551038, 5505611, 18583786, 10849624, -2509872, 9024263, 6094022, 8694624, +1930051, 7364795, 12604655, -1574642, -21261162, 1064615, 6551973, -19922206, -14548128, 19486266, +15286325, -15047418, -9862856, 4759361, -1013612, 9557913, 23694260, -5095442, -4592394, 4505421, +-1231045, 8773008, 4378183, -8639864, -6792491, -3261491, 6935299, 6305549, -6314139, -17176112, +-3037616, -25846576, 24448028, 4123169, -4495757, 2326799, 10125385, -526134, -11368778, 4218195, +-4948876, -7369627, 5746130, -1546725, -11251204, -18489834, -6048925, -7540352, 15257871, -2436857, +5027796, 2903935, 1856500, -1438277, -1337882, 2380486, -4110821, 664109, 5517959, -668941, +-2904472, -1657857, -12617003, -3894462, -350040, -2369211, -9188546, -8242579, -3470871, -1887638, +-836982, -2699387, -497142, 152471, 6902013, 2443300, -1147830, -2810519, 1076426, -2486249, +-2103460, 4481799, -2270427, -5364951, -1582696, -4043712, 474594, -4973036, 132070, 3280281, +1027571, -4772246, -1591822, -15162845, -656056, 2622615, -18586470, -4884452, 13973676, 18176302, +12863964, 33918432, 20459614, 30734786, 11473468, 8098698, -15880642, 17249126, -5807870, -1944010, +-12717398, -8469139, 16666621, -5459977, 37801080, 17586280, 10907606, -2025614, 8740258, -5952288, +-17648020, -8929774, -10954851, 7961796, -10329933, -240518, -11054172, 6462852, 15375983, 13875429, +-917512, 20068234, 16767552, 776852, -5844914, -7678865, -13762149, -4740570, 31645320, 12263742, +36429376, -11755862, 178778, -1249836, 8490077, 29227790, 10013716, 685584, 18793166, 21525840, +22746684, -2079838, -13453448, -4963372, -3721052, -3903052, 15076409, 10272488, 14307610, 21824876, +-13634911, 33022392, -22205518, -41686416, -6451041, -13026636, 8483097, 20070382, 9831717, -11284490, +-1157494, -12253005, -9141301, -6086506, 146029, 16591459, 2797634, -4753455, 2595234, 1198296, +4977330, 5256503, 3610457, 6459631, 1759863, 4041564, 1486596, 4487167, 281320, -13478144, +-5193153, -203474, -12532715, 1315871, -13085155, -6942278, -7946763, -7408819, -6205154, -4610648, +-1757715, 686658, 3749507, 13699872, 1863479, -8791798, 3986267, 739271, 12447889, -2435783, +5368172, -183073, 152471, -6765111, 1567663, 19730542, 32081258, -15973520, -12649216, 11539503, +-9678172, -1759863, -4604205, 4307316, 13931800, 15108084, 22198538, -24516748, 27394376, -9978820, +2238752, -12761958, 11186779, 20806432, 8209293, 3804267, 1101659, 25347824, 5884105, -907312, +-8772471, -3947075, -26498874, -3599720, -13099113, -31496606, 2261837, -1967095, 12401181, -32803886, +-6856379, 7595650, 11649025, 27161374, -7959112, 7848516, 14397804, 2156074, -4278325, 7612830, +-7733089, -1954747, -41375568, 3495030, -17905718, -20571820, -23301808, 9123047, -37110664, 11976516, +-14190572, -18493056, -25390236, 22433152, 24042690, 23934778, 4673462, 4292283, 22550188, -31660352, +-3110093, -9846749, 12774843, -37597068, -12916577, -3998078, 12001749, 9401147, 7701413, 15008763, +-14020384, 5413807, -16923244, -5115843, -10146323, -4095788, -3449933, 339302, -16036334, 7198902, +10072772, -1859184, 708670, -7982734, -2457795, 7590818, -10342818, -330176, 5087926, -12929462, +5879810, -11598022, 161598, 7072201, 1734093, -9529459, -6155762, 3522947, -5207648, 5723581, +4128001, 6620692, -831076, -8361765, 15768972, -7585986, -3729642, -10286447, 7064685, -3578245, +1049583, -9552544, 1315334, -11581379, -1762010, 8296803, -2597382, -4982162, -11967926, 1278827, +1671279, -1708860, -15724949, -29685204, -508954, -10645076, 35097936, 7238631, 24832964, -8207146, +33889440, -21368536, -39864276, 8912057, 6784975, 4458176, -19804632, -22680648, -17671642, 6529961, +-17798344, 7742216, -9429064, 26486526, -8644695, -4107063, 19191524, 502511, -47707424, -19927038, +-618475, 31363462, -3586835, -9955734, -27341224, 4662724, -6725382, -23638964, -27862526, -3320547, +5139465, -9686762, -10590852, -27994060, 18308908, -7005092, 6600828, -13974750, 645319, 8204462, +5087926, 24563992, 282931, -8551817, -31996432, -11366631, 15516643, -21997212, -11142756, 8054138, +17660906, 13689135, 35170952, 26749594, 545998, 20287278, 20901996, 7049652, 867583, 12153147, +-10367514, 52977884, -24337970, -57962196, 15452755, -49343268, -1852205, -38631084, -208843, 47165720, +5975910, -22531936, 7546258, 7988639, -14630269, -12110734, -16559783, 3577708, -4956929, 15097884, +-11873437, 10084046, -19931870, 5571110, -594316, -3299072, -4466766, 13688598, 26311506, 8188892, +10746008, 18114562, 5619428, -18118856, 5374078, -6723235, 12215961, -3775813, -5533529, -699006, +-1116692, -4869956, -14800457, -9791989, -6487011, -821413, 2255395, -1079647, -9324911, -21337398, +-13205951, 3221226, -3616363, -363998, -8010651, 2889439, 15586973, 22196390, -33643016, -22378390, +-13894756, -11812234, 13532368, 21005074, -12352326, 1401233, 18748070, -37948184, 2807835, 8895414, +-28625420, 14829985, -9529459, 13083544, 4926328, 14744623, 1601486, -18551038, 19217294, -24177982, +-5263483, 46826416, -19209778, 17155710, -11143830, 19280646, 17578764, -6142877, -20535312, 21822192, +56761752, -31099858, 8083129, -41275708, 20882668, 12561706, -22362284, 24776592, 2326262, -49561776, +7115150, 2437931, 22624814, -6068789, -3517041, -26039850, -25353192, -13006772, 61872224, -9445170, +31392990, -27589260, 20635708, 10126459, -5737540, -21209086, -3994320, 17467096, 34744136, -12600360, +-11752104, -3676492, 6750615, 30302604, -7772280, -7151121, -22580790, 6922414, -33956548, -15060303, +24060406, 29272886, 3183645, -2407866, -16000364, -26006564, -75670880, 47162500, 17790292, 27098022, +2528125, -24554328, 26897232, -15198816, 11291469, 16125455, 15526307, 36418640, -847182, 8532489, +9896678, -4041564, -16102369, -5248987, 26419418, 16446504, -15081241, -3214783, -10317048, -2556579, +12238509, 3727495, -17627620, -11221676, 16503412, 3945464, -5461588, 8711804, -14943265, -8936216, +-3258270, 7350837, 11587822, 7709467, 2061047, 9363566, -7693897, -9805410, 1564979, -897648, +-13457743, 1679332, -13877576, -437550, -8571681, -1910187, 1918777, -6945499, -13305272, 4551055, +-31807990, 22220550, 21751862, -43097312, 4054449, -22642530, 2678986, -47445968, 47571056, 41485624, +-4387309, -21644488, -7651484, -8674223, 23008676, -23731304, 29713120, -39672076, -23148264, 11316702, +13903883, 3226057, 13415867, 37796248, 10726144, 17438640, 4473746, 18121540, 12714714, -8483634, +3597572, 15348603, -1249299, -1291175, 29995514, 13561359, 39421356, -3609920, 22382148, 76773, +-29171954, 29642790, -15525233, -3309809, 8916889, -27454504, -18797998, 10682121, 42872900, 23561654, +15326054, -55531780, -13184476, -38933880, -643708, 62310848, 40700184, 47144784, 3403225, -45712948, +13918915, 46402288, 9426379, -11597485, 40969692, 4475893, 27273042, -71105328, -59337656, 42417632, +-3412889, -19128710, -45552424, -9834938, -17335024, 19345070, 17545478, 21181168, 21359946, -8960376, +6391448, 39303244, 35907536, 37963752, 2749316, 54546084, 26808112, -9649181, -22009560, 356482, +-11060615, 3264712, 27307938, -4347581, 783295, 20216412, 21825414, 2170569, -335007, 8651675, +24212878, 8710731, 11110007, 16809428, 5526549, 13085155, -1091459, -7335804, -3681324, -2784750, +560493, 17379048, -7113540, 3092377, -14690399, 21027086, 9691594, 9207873, -744103, 10626286, +-492848, 36010616, 8745627, 36971080, -10502806, 32345936, 14306536, 4809290, 13544716, 13940390, +15251429, -4179003, -3431679, 22141630, 7098507, 18557480, -41175316, 24273008, 32386200, 2456721, +11021423, -29346974, 22852448, -13363791, 10912975, 1036698, 19327, 19361176, -6084358, 12590160, +-4152160, -23579908, 6185290, -1675037, 26213796, 22939958, 32615444, 10851772, -25177098, -20745766, +21117280, 23796804, 10908143, 2024540, 7403450, -6601902, -20691542, 3406983, -7768522, 28973850, +20142860, 17634598, 22867480, 23528368, -32815698, 35817880, 35139276, 25769266, -17738214, -15741055, +-22891102, 31170188, 18099530, 51268488, -31512712, -31134754, -24165096, -45616848, -12074764, 48965312, +7594039, 38413112, -41380400, -44177496, 9360881, 27761058, -38723964, 5842230, -30897458, 12018929, +-35630512, -2998961, 16548509, 17570174, -32432372, 12471511, -24741160, -48967460, -1893544, 57471496, +29600378, 23128936, -16416439, -41552196, 62444528, 50470160, 13957033, -56674776, -2509872, -13545253, +39873940, 20218022, 24595130, -29634738, 21718576, -13487271, 14112726, -20644298, 6862821, -23065048, +32503238, -6865505, 5064304, -39576512, 11009612, 4498442, -2161979, -9210557, 7613367, 3672197, +3745212, -24717536, 9851581, 24244016, 1200443, 14372571, 12229383, 9848897, 1277753, 4352413, +145492, 781684, 715112, -8305930, -1256815, 7190849, -510027, 14938433, 12799003, -7672959, +-1752884, 6525129, 2703145, 11332271, -22984518, -694174, -79154640, -16244640, -1588064, 929324, +28145458, -73983496, -7981660, 33414308, -54089744, 12233141, -11969537, 63461900, 34058552, -38953744, +10023380, 42640972, 4799089, -17157858, 14532022, 10115185, 6061810, -978716, -3820910, 3113315, +7431904, 14463302, 44455596, 35030292, 38927972, 26049514, 48906792, 23327042, 49993956, 20117626, +44395468, 308701, 27731530, 24234352, 27482958, 20365662, -1562294, 7747584, -33315524, -20480014, +64636036, 454730, -25248502, -7547868, 20571282, 33472828, 69519952, -9709310, -37630356, -19524384, +-27636504, 38994544, 45439680, 50070728, 16064788, -2220498, 34537444, -58406724, 53204980, 19619410, +-27460948, -916976, -89874872, 1739462, -59278064, -83143584, -20219632, -49039400, -20733418, 93315680, +85899880, 80006648, -62914292, -6905234, -6849399, 62816580, 99470904, -22505628, -27606440, 54484880, +56768732, 48099876, -5412196, -8247948, -27082990, -34965864, 5380521, -13127568, 15557445, 23420994, +21088290, 13959717, 1753420, 8894877, 26866094, 4118337, 478889, -7937637, 1828582, 1387274, +7537131, 5037997, 5732171, 27032524, -2090039, -16770774, 17119202, 19532438, 4969277, 31452046, +7836705, 15003931, 35155380, 46214384, 34398392, 24540906, 10384694, 4293357, 13889924, 31556736, +14361834, 32364726, 24591372, 15343234, 23153632, 8039105, 31336618, 26750666, 22392348, 33341294, +19667728, 5961415, 9709310, -2107755, -22002580, 56847112, 69080256, -57219164, -52486648, 17656610, +60392072, 1500554, -28310276, 198105, 16386374, 18122614, -49956376, 18570364, -6671695, 26362510, +-27431420, -13207024, -32142998, 33925408, -4631049, -15008763, -30055108, 22009024, 12994960, -5214091, +-25402048, 11867532, 11246372, 5983427, -22446036, -3255048, -1127429, 25933012, -19564112, -4788889, +-28610388, -7552163, 9898826, 22755810, -29768418, -11396696, 31729070, 27133992, -8332774, -19236622, +-117575, -9833328, 26509612, -15188078, -8351564, 12783433, 9634149, 16147466, -14537391, 4549981, +-20034412, 23108534, 27416924, 12940736, 4297652, -21497386, 24371256, -17301738, 37715720, -27625230, +30324616, -47564080, 32136556, 3982509, -2681133, -33478734, -9868761, 10799695, -8426189, 3176128, +-8140574, 9375914, -4048544, 10499048, -10262824, -14388677, -8955544, 9967008, 907312, -1335735, +-2332167, -8002061, 5114233, 11665668, -5901822, -1598802, 928787, 1498944, -416075, 1983201, +-1862405, 8404177, 494458, 10920491, -9787694, 1720671, -4374424, 11011222, -11770358, 10837276, +-12136504, 7205882, 3956202, 13742822, -2973728, 12987981, -11793980, -9912248, -1642288, 21188148, +-10055055, 16264504, -5548561, 1988570, 2758443, 11350525, -4669703, 5546951, 2703145, -340913, +-303869, 3527779, -753230, -7945690, 15497853, -9450002, 3040837, -7713225, 5412733, -7363185, +8406325, -10912438, 12682502, -10239739, 10908143, -13741748, 12432857, -17282948, 16669842, -10912438, +12116103, -12826383, 12898861, -13064217, 13468481, -12328704, 12906377, -1834488, -12327630, 55091544, +58628452, -34500400, -20433844, 11623255, 55989732, 34782256, 20864952, 20065550, -8914205, -23431194, +-7089918, 13153874, -201863, -5521718, 16703665, 287763, 11773042, 1440425, -6261526, -20995410, +-5571647, -1232119, 1549946, -834834, -17056926, 19036906, 3177202, -7669201, -431107, -593242, +267899, 12286828, 22577032, 9623948, 2281702, -8135742, -11688217, -3038153, 7333657, 15127949, +20376936, -11381663, -11236708, 2535105, 20598126, 9284646, 4589710, -9316858, -18702972, 15938624, +-3294777, 439160, 1076963, 5127117, 4919885, -2278480, -689879, -12202539, 1863479, 10739029, +-5116380, 6410776, -3613678, -8699993, 5507222, -1663226, 2973728, -677531, 9336185, 6327024, +-13952201, 4097936, 652298, -25302190, -33618320, 947577, 1952063, 7640747, 20444582, 2226404, +-9027484, -8836358, 8041253, 8783745, 13336947, 9087614, 550830, 3866544, -1452236, -10162966, +-4238059, 1527398, -13945759, -13342853, 8559333, 9092983, -239444, 10229538, -14554570, -2658585, +-706522, 702764, -4516158, 2281702, 7823283, 10872710, 5285494, 9152575, -5833103, -11419781, +6654515, 1043140, -2829847, -19475530, -72702520, 30869540, 112121728, 103376640, 88251376, 35198332, +-83727168, -52414708, -75270376, -84359064, -75414792, -21974664, 16316044, 63572496, 66234300, 79306032, +52545704, 52977348, 1327145, -55736328, -53213036, -65630320, -51317344, -28585692, -1910724, -18420040, +19964618, 24577414, 39879844, 43765716, 44487808, 26479010, 2260227, 11756399, -9773735, 6290517, +-30415348, -22144314, -28126130, -46028092, -36479840, -27997818, -19729470, -32735166, 4567698, 55819004, +63122596, 35201552, 66001836, 16328392, 38527468, 19775640, 11336029, -16616155, -35194572, -48300664, +-67775656, -52025476, -77321224, -32064616, -34410204, 22165790, 22261352, 64661808, 74585864, 66357780, +59155660, 57766772, 36196372, 4397510, -20207822, -61877056, -38763152, -80816256, -68845640, -95841120, +-15478525, -8628052, 23637890, 30262876, 54630372, 64190972, 53781580, 47953308, 35622996, 20949776, +2993055, -17894982, -25680146, -34675420, -53434224, -37612640, -46520940, -32430224, -16580184, -4850092, +10570988, 10211285, 51095616, 47026672, 46680388, 36334348, 26716308, 3124589, 16617228, -18558554, +-30644054, -23951958, -66360464, -77450608, -14915885, -5276368, -3333968, 37687264, 30925912, 41136124, +28893318, 37585796, 11504607, 9670119, -2896956, -16013249, -20494510, -26574574, -29343216, -18138184, +-3783866, -22975928, -12064026, 18245022, 26132192, 17448842, 22638772, 15371151, 11236171, 2847027, +-2025614, -8031052, -11204496, -8782134, -14011257, -7438347, -2748242, -5360119, -7111929, 1508607, +5422396, 1076963, 8237211, 10339597, 7846905, 5226975, 4565014, 1374390, -846109, -2950643, +-749472, -1116692, 394063, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { -5164698, --5280663, -4364224, 1209033, -2503966, -403727, -715649, 2529199, 10109279, -2704756, 1017907, --9630927, -5260261, 2934537, -4578435, -3572876, -1351304, -4069482, -1078037, 8386998, -3602941, --5373541, 9064528, 7254737, -2560338, -1684164, 8297340, 2359011, 3218004, 1600412, 406411, --2125472, -3496640, 3287261, -2604898, 2456185, 892816, 944893, -1161252, -2853469, -2236604, -2024540, -2574833, -4070019, -1833951, -1820529, -5180805, 5861557, 9061307, -5214091, 2957622, -249108, -2033667, 1434519, -224412, 73014, -3033858, 5602785, -3324305, -4108673, 4664335, -1422171, -243739, -525060, 2563022, 161061, -72478, -1610613, -806917, 4923107, -7191923, -2446521, 1323924, -1751273, -1719061, -2513630, -3659849, 26307, 3533148, 3607236, 1052267, --71404, 818191, -2007897, 2629594, -999117, 1547799, -1121523, -719944, -543850, -654446, --526134, 1214402, -60666, 501974, 730681, 446677, 1257352, 1592896, -529355, -365609, --716723, -491237, -1016297, -297963, -679679, -553514, -1034013, -404264, -120796, -15923591, --2515240, -5817533, -1432372, 1287953, -4342212, -9705552, 7114077, -2382633, 1655710, 4764193, --1515050, -484258, -594853, 2194192, -1686312, 8014409, -334471, 6182606, 9060770, -10877005, -2276870, 7559143, 517007, 1507534, 5228049, 9669045, 1378148, -2173790, 4861903, -1293859, --2525978, 2180770, 1714766, 2157147, -2729452, 9852655, -4554813, 2486249, 3668439, -44560, --489626, -4807679, 774168, -5570573, 4669703, -5690832, -4379256, 3150896, -5315559, 3637837, --3714610, 1527398, -3001645, 2021319, 4275103, 8393977, 2563559, 949188, 4071629, 61203, --7271380, 961536, 2022393, 2759517, -1843078, 378494, -1017907, 1377611, 4027069, 2439005, -5508296, 1905892, 712965, -3372086, -1745367, 3255585, 2514167, -3229279, 3841312, 1887101, -4202089, -1324997, -1045288, -1329292, 164283, -823560, -3426847, -629750, 524523, 561567, -2156074, 239444, -689879, -840740, 887985, 462783, -1699196, -253403, -166430, 9664, -624918, 177167, -814433, -112206, -774705, -5814312, 4338991, 2779918, 909996, 5433134, --250719, 3033858, 7473243, 4580046, 9787694, 1858647, -1396401, -10006200, 1614908, -6145025, --2001992, 744640, 2294586, -3857418, 43487, 9574556, -4866198, -281320, -4858682, 2309082, -92879, 1840394, 3964255, 4598300, -2864743, 3444564, 3626026, 6920803, 309238, -6834904, -705448, 7337952, -680215, -482110, -973884, 4927401, -5719823, 463856, 3823058, 4931696, -5974300, -2253784, -3844533, -517544, 8568460, 777389, 3119757, -6955700, -3063922, 1665911, -1470489, -1204202, 4556961, -328565, -900869, 2520072, -4327180, 261993, -649614, 2965675, -4611721, -6755984, -1479079, 2169495, 4545686, -2900177, -2738579, 1858647, 5379447, -484258, -3623879, 2540473, 3714610, 1539209, 4140349, 6189048, 268435, 1728188, -1686312, 2516314, -1829119, -1189169, -2768107, -532576, -1955284, 644245, -1786706, 780610, -802085, 431644, --1446330, 33286, -122943, 303869, -861678, 1378148, -1296543, -574989, -569083, -708133, -188979, 775778, 824097, 443992, -379031, -293132, -598074, 1865090, 17311940, 8404714, -6822556, -6437619, -1139777, -8984535, -6423661, 9649718, 870268, -6069863, -2829847, 2077690, --5754183, -504659, 9802189, 3937948, -407485, 3163780, 14374719, -9554155, 2294050, -1775969, --4651450, 8284992, 4198868, 4308389, -3220689, 3723200, 4744328, -1439888, 3044058, -948651, --4101694, 875636, 1537598, -690416, 4865661, 1224603, -1761474, 5410048, -2463701, -2514167, --3123515, 1537061, 2062658, 417149, 3864934, 543850, 12164958, 824634, -10737, -2801393, --2543695, 2944737, -9060770, 401579, 5428302, 4342749, -4894115, 7196755, 117038, 3234110, -5724655, -1598802, 4430796, 3469260, -1580011, -5140002, -3949759, 3266860, 8138426, 2349884, --3546569, -1714766, -2012192, 5631239, -4754529, -243203, 4618164, 5389110, 736050, 701690, --1488743, -2218351, 91268, -496606, -1889786, -364535, -863825, -909996, -1454383, -704912, -1898912, 1318018, -386010, 2492155, 724776, 1020055, -323733, 864899, -438624, -192737, --103616, 308701, 302258, 714038, 1339493, 363998, 152471, -387621, 4168266, 1124208, -11323144, 2839510, 6747931, -285615, 1494112, 1918240, 1879048, -1853278, 6899865, -2887292, -7465727, -3646964, -2896419, 1982664, -4941897, -1387811, -1559073, 2131378, 3102040, -1952063, --7233799, 3316789, -8745627, -3498251, -1490891, -170725, -1377074, 1742683, 7825431, 4459250, -524523, -8110509, -7833484, 304943, 5274757, -2754148, 819265, -964220, -3478924, -5196911, -533650, 3579855, 7546258, 6851547, -881542, 2225867, -9480067, 3272765, 6285685, 7184944, --890132, 6554120, 1387811, 9525164, 5606006, 1848447, 4285841, -399432, -2490007, -1656247, --972273, 5987185, -2294586, -3342558, -4163971, 5974300, -1450088, -10421201, 2066416, 3974992, -5840619, 7590281, 12934294, -5417028, -4456029, 7670275, 8082055, 6387690, 2721936, -1342177, --1489817, -5053566, -5680094, -1588601, -2062121, 1684701, -248571, -1664300, -248571, -3152506, -656056, -442919, 1454383, 173409, -2415919, -227096, 233002, -433255, -240518, 1097364, -2097555, 2097018, 1723893, 424128, 413391, -3248606, 122407, 2185065, -1479079, 1174674, -244276, -959388, -792421, -464393, 2178085, 1589138, 307627, -273804, 1178432, 27917, --15039365, 7305740, 10304700, 1391569, 8577050, 1213865, -7689065, -693100, -3589519, -1860795, -7918309, -10275172, -2876554, 3640522, 4048007, 9364102, -1840930, 4071629, -14623290, -7401840, -3741454, 8688719, -5695127, -4047470, -6104759, -7319161, 3848828, -869731, 73551, 2781528, -1335735, 2900714, 11344619, -6832219, 11009612, -573378, 2251637, 2478196, 2393371, -3285650, -3829500, -7754564, -1482301, -4207994, -821949, -5750961, 7014756, 1275605, 19427748, 658204, --1245004, -4881231, 859530, -4081830, 10153303, -6230387, 1345399, -11327976, 8524436, 7881802, --9410810, 5788006, 5840082, 2471754, -5100274, -5148055, 8552890, 2252710, -12378633, 5975910, --5877663, -3145527, 2798171, -3044595, 1105954, 2550674, 3334505, -6396280, -15683610, 2332704, -3517041, -431644, -3372623, 6241125, -2672544, -1954210, -2906082, 4170413, -5077725, -1949378, --2887829, -2078227, 1272384, -1877438, 2687576, 448824, -4516158, 3367791, 430570, -2252174, --143881, 3042984, 965831, 207232, -406948, -754304, -2397666, 266288, 656056, 369904, --248571, 1436130, -2713346, 363998, 504659, -2941516, -2690260, 6612102, 1274532, -119722, --5582384, -9362492, 3314641, -5018133, -2030446, 9084930, -12360379, -5135707, -9107478, -914291, -7807177, -711891, -6442988, -8927090, -10039486, 3926137, 10618770, -3029563, 6634651, 10001905, --2765422, -2290828, 3911642, 5568425, 11857331, -1704565, 6666326, 980863, 14098767, 10380936, -2838974, -3304977, 1425392, -7799661, 13688598, 3195993, -6035503, -6686191, 7895761, 6681896, -4801237, 3433290, 2346126, 7102266, -3060164, 3142306, -4685273, 692564, 386547, -7100655, --9505299, -3357591, -6712497, 4333622, -4095788, -3029026, -10366977, -6509023, 1992328, -3527779, --1238561, 5000953, 10394358, 13119514, 6818261, 5440113, -4825396, -10653130, 191126, -7451232, --17244294, 167504, -1206886, 6452115, 4346507, -4205310, -9605157, -5207111, 4655208, -212064, --1064615, -3961571, 2134062, 2211371, 1743757, -1006096, -5465346, 1172526, 727460, 553514, --1229971, -654983, -732292, 702764, -2670933, -2738042, -281320, 354872, -2218888, 215285, --436476, 2080375, 2761664, -2954401, -98247, 2177549, -355409, -1228361, 513249, 333397, -2995203, -905701, 1930588, 1529008, -1272384, -19889456, -6159520, 1097901, 9682467, -6976101, -4719632, 3107946, -425202, 14606110, -1981591, 13746043, -8120173, 4037269, 4322885, 172336, --12585328, -5190468, -4717485, -14260365, 4838281, -3547106, 2997887, -890669, 5143224, -18254, --5609228, 2976949, -9208410, 6774774, 3934190, 15636365, -694174, 472983, 14251238, -12618614, -11056320, 13591424, -8531416, 8753680, -3686693, -4105452, -7165616, 1801739, 1609002, 9666361, -6178848, -2490544, -4061965, -8215736, 4461934, 5127117, -9469329, -4237522, 8773544, -15460272, -1395328, -11942157, 6694781, 660888, -284542, 3613141, -4109747, 1374390, 14190572, -5872294, -3059091, 6936372, 4316979, 763967, -7569343, 3322157, 2727304, -4369593, -12232067, 133681, --2835752, -9647570, 7261716, -2626909, 2643016, -384400, 1338956, 3073586, 2940979, -5389647, -1317481, -536871, 1190780, -430034, 3598109, 1821603, -941135, -666794, -5297306, -205085, --3633542, 632434, 558346, 3815005, -5597416, 2071248, 2968359, -2103460, -3488050, 1242856, --534723, -2035815, 1637993, -435402, -2189897, 775242, -759672, -2489471, -726386, -1608465, --3372086, 1588601, -1048509, 318901, -1857037, -375810, -1897302, 903554, 3562139, -462246, --8130910, 23639500, -8790724, 4570382, 3400004, 8419210, 2654290, 5099200, 11809549, -9150965, --5607617, -773631, 16428787, -6362457, -6991133, -8174397, 4060892, 2719788, 8990977, -18778670, -177704, 372588, -1273995, 9614821, -2339684, 7408819, 13788456, -10047002, -4498442, 3905199, --7522635, -9483288, 6360310, -8811125, 12965433, -2238215, -13352516, -1788854, -7668127, 4217121, -10574209, -227633, 5346698, -678605, 2052994, 12578349, 383863, 9117142, 3606699, -6868190, -7128035, 6080063, 837519, 5104032, 18076980, -3021510, -8139500, 4275640, -10300942, 784905, -17265232, 5844914, 2717104, -3312494, -4956929, -3350075, -6121402, 10394358, -6852084, -1843615, --4275640, 11798275, -21734682, 7412040, 7646116, 13055090, 3090766, 976568, 11508365, -3277060, --4993973, -6540699, 152471, -5443334, -554051, -4685810, 3768834, 332860, -4172024, -4401805, --3684008, 1382443, 4495220, 3598109, 767725, 248571, -1930588, -4763119, -1593970, -1242319, -1947768, 1985886, -804233, -1186485, 922344, -2862596, -17717, -2778307, -1403381, -3652333, --4912369, -1381369, 1669132, 5435818, 869731, -1530082, -1464047, 2123325, -534187, 5212480, -2355790, 895501, 725313, 34939560, 10427107, -6367826, -8485782, -7148436, 25313464, -21814676, -1736241, 8544837, 1263794, -11826729, -2675228, 5937793, -1267015, 1379758, 10500658, -10865730, --9128416, 4481262, 13687524, 8437463, 3535295, -6630356, -6481106, -6238440, -7269232, 6780680, -2692945, 9716290, 7793218, 4442070, -10310069, -4900021, -10983305, -2176475, -7205345, -16588237, --3091303, 7419019, 1648731, -7692287, -7758859, 200790, 4014721, 10392210, 1321239, 5272609, -1505386, 20076288, -17413944, 11400991, 2137820, -17765058, -3208878, -5350456, -4395362, 2737505, --7778186, 4702989, 3416110, 7965554, -9700184, 3445101, 15538655, 7285875, 24688008, -5513128, --612570, -6058588, -3103114, 680752, -490163, -23398982, 10436234, -974421, -1369021, 6361384, -6286759, -6626598, -9969156, -10900090, -4052839, 7755637, 3302830, -2535105, -6440304, 5695664, --10128070, 5316096, -1657857, -4576288, -5724118, -6206228, -2240362, -2061584, 987306, -2585034, --1751810, 1296006, -1858110, -1729798, 1079111, -5070746, -2312303, -344134, -1725503, -2898566, --1293859, -5149666, 733903, 3871376, 5210869, 6117644, -4432406, -5425618, -3849365, -4905390, -189515, -3221, -3009162, -3422015, 1322313, -449361, 3399467, -1048509, -244276, 2638184, -2640868, -2114735, -11694659, 2843805, 6362994, -243203, -7185481, -4986457, -15532749, -18456548, -3832185, -8178692, -3895535, 2718714, -154082, -1928977, -8236137, -4085051, -78920, 6484864, -6908992, -10136660, -5816460, 6388227, -9084930, -4459250, -14879377, 14408542, -1874753, 12981002, -1136019, 4871567, 13790066, 10425496, -6122476, 3144453, 7012071, -7361574, -2997350, 6833830, --2533494, -16526497, -3071975, -11578695, 16992502, -1793149, -4510253, -9711458, -14173392, 5083094, -3005940, 3346317, 6994891, 165893, -2583423, 7320772, 1869921, -1395864, 2575370, -4088272, -11229729, -2650532, 7085623, 20964272, 4675072, 3940096, 4909685, 7736847, -18246632, -14768245, -5623186, -16119012, 11164231, -2274722, 12790949, 3379603, 24937654, 9793599, 1698123, -7245610, --3214783, -12823162, -864362, 4001836, 2505040, 2726767, 4408247, 11380590, -4733054, -9228811, --3208341, -2564632, 3582003, 10326712, 3652333, -2489471, 2977486, 3029026, -532039, -2386928, --6010807, 404264, 677531, -2933463, -3977677, -758062, -6374269, 4471061, 2538326, -2997350, --971736, -6331856, -3103651, 2927020, 5541582, -2783676, -2572686, -117038, -5087926, 5395016, --255551, 3885872, -5263483, 2147, -5453535, 3192235, -6471442, -1468342, -29772714, -20850456, -7736310, -8304856, -17219060, -26137024, -636729, 2084670, -5068062, -4174708, 24928528, 6541235, --18026514, 3772055, -11000485, -9253507, -8932995, -16099148, -2659122, 1484448, -22169548, -20992726, --7975218, 3473018, 2067490, 12719546, 10765872, 6688875, -5337571, -207232, 4920422, -11369852, --6338298, -3879429, 3765613, -10681584, -6524056, 7300371, 4422743, -289373, -1639067, -1995012, -6086506, -15381888, -8764418, -7573101, 10205379, -11923366, 8106214, 13665512, 18722300, -1245004, -5389110, -4438849, -8930311, -11724724, -3157875, 11559368, 4350802, -20989506, 932545, 21721798, --14421963, 702227, -3074660, 1158031, 5168457, 11077794, -2291365, 3519726, 13302051, 9145596, -5862094, -10174241, -12241194, 8949638, -8856223, -16772384, -16106664, 17553532, 6687801, 9696426, -4167729, -2764348, -3377992, 8375186, 5939403, 1578937, 8072928, -3217468, -10566693, -5459977, --7362111, 2961380, 10699300, 5208722, 1300838, 6330782, 3520263, 5902896, -1120987, -3029026, -3640522, -1319629, -4087198, -3486440, 2825015, -9766756, 2155537, 5728413, -3436511, 7086696, -4866198, -408559, -765041, 6680822, 835371, -1545115, -4248797, -4181151, 1176821, 3521873, -810138, 2835752, -4233764, -17400524, 9601936, -14085882, -25107842, 4529580, -15264851, -8873402, -29669634, 2012192, 22216792, 19985556, -4006668, 21046950, 29132226, 20708184, -26051124, -3484829, --12106439, -12274480, -7500624, 515396, -10737955, 22725208, 6759205, 12466679, -10641318, 11932493, -9197672, 3048353, -13553843, -10558103, 21646098, -3964255, -20181514, -1387811, -23359254, -3383361, -6509560, -8392903, 530965, -19084688, 8774081, 17273284, 9382356, -2563022, -9338870, -3512210, --2334315, -3262565, -8744553, -23447300, 15851651, 8881455, 8294656, 9895605, -13285944, 20645908, -2627983, -6268505, -4575751, -16509854, -7232725, 10650445, 6643778, 17648558, -1871532, -20278688, --35497904, -2130841, -212601, 100932, -12767864, -17945984, -3372086, 11805791, -6208375, -7289633, -4751308, -1646583, 18090940, -3612068, -16012175, -5797132, 16850230, 1021665, 3237869, -16410533, --5769752, -3142306, 6805376, 8696772, -4284230, 2986076, 712428, 6495601, 4323422, -723702, -2961380, 8722005, 2180233, -216359, -2881923, 927713, 5840619, -260919, 2986076, 9979357, -1510755, -3520263, -7405598, -883690, 5425081, -5223754, 2783676, -2385854, -1562831, -3504693, --4445291, -3450469, 93952, 6280316, 4969814, -6806450, -12377559, -3730179, 4645007, 1607392, -1684701, 37877852, 23890218, -3391414, -22062174, 4642323, 11000485, 6338298, 16076599, 24128590, --10647224, 1986422, -21566104, 6106370, 1780264, -8370892, 38863548, 14725295, 33534030, 13840532, -8651675, -29221884, 453119, 16292422, 2973191, -15559056, 6578280, -23782308, -9280351, 1627793, -7168838, -7129109, -4619238, 5145371, 4206384, 1707786, 21058224, 13070659, 3469260, -8439074, -14505178, -9439801, -6766184, -13874355, -4610648, 18073222, -28563680, -449898, 12827457, -14266271, --4476430, 5426691, 4828080, 26370026, -1513976, -310311, -12306692, 25781614, -11483132, 3244311, -2716030, 17848274, -4158065, -6463926, 17011292, -28702192, 7487202, 2734821, -11882564, 22923852, --28660316, -3653944, -9574019, -19267224, -9622874, -1725503, 8173860, 18004502, 29734058, 14484240, -19653234, 29898342, -12160126, 5496485, 7538205, -12801150, 17311940, 325344, -22891638, 11998528, -6367826, -8407935, 818728, 17670032, 13395466, 3924526, 10576357, 3118683, 3469260, 9690520, --1710471, 4107063, 8705899, -2138894, 1941862, -1613834, -450435, 6095096, 1254667, 624918, --5310727, -3214246, -3661997, -7601019, 1700270, -4211216, -12054899, 4617627, 7326678, -2537789, --66035, 3217468, -4123169, -179852, 12861280, -1973001, -3508452, -8126615, -36710696, 10171556, -1933809, 44338020, 10126459, 8335458, -1217086, 21625160, 5837935, -32502702, -4989679, 34774740, --10302553, -7322383, 2934000, -2404645, 790274, -6331856, 36215164, 41199472, -22152904, 10001368, -11093901, 6024229, 11705396, -18133352, -25047176, 19280646, 5299990, -13853954, -23944980, -7188702, --8129836, 21905944, 17905718, 10049687, -20271708, 11151346, -8780524, 7110319, 1222992, 9411884, -20657718, 4754529, -46166604, -14148159, 8488466, -18496276, 5632313, 19593640, 6591701, 34118684, --11280195, -51246476, -1175210, -20428476, 17841832, 15477988, -5579700, -10898480, 15847356, -24609088, --4381941, -13295608, 11635066, 16027744, 13698798, 14891188, -11087458, -20853140, -62065500, -29677150, --36113160, 5710696, -24471114, -11863237, -4971425, -26927298, 14452028, -48480516, 15113453, -34861712, --25249576, 24869472, 29388850, -9023189, -1177895, 15917149, 20725364, -28452548, 632434, 4664872, --4079145, 5025649, 15312632, -1948305, 6779606, -1288490, 5992553, -12577275, -6581501, -5733245, --8267275, -1796907, 12020003, 4991289, 10822781, 409633, -11414949, -10379325, 1824287, 6305012, --2348810, 6695317, 6998649, 16860968, 1670742, 5803575, 1850594, 4022237, -7407745, -2270427, -3103114, -6027987, 324270, -2760590, 727460, 3132642, 17623862, -1617055, -10432476, -11577621, -1161252, -654983, -18408230, -10794863, 7621420, -12106439, -596464, -156229, -48012364, -7062000, -31971736, -37949796, 3831648, 14191646, 513249, 9953587, -2724620, -30061550, -2397666, 16397111, -5628555, 24423868, 16665010, -25784836, -27793270, -3701725, -11957726, -3958349, -45888504, 17212618, -18356690, 32192390, 14751065, 29302414, -12561169, 4027069, 30209190, -9505836, 32866700, 9124658, -17428440, 5860483, -8250096, 16200617, -19801410, 970663, 41504416, -32154810, 3044058, -41823856, --18763102, -30079266, -20387136, -5272073, 2263448, -9893457, -31819266, -5771899, -52893060, 59782188, -21026012, 335544, -8057896, -14475650, 3353296, -26339960, 4893579, -39461624, 925565, 1983738, -8833137, 25245280, 36420784, 1227287, -61062624, -28090696, 26176216, -13350369, -12199318, -14823543, --8126615, 30103962, 6258304, -16962974, 12640089, -28330142, 4910758, -5402532, -12584254, -28603946, --16201690, 18023294, -8630200, -6966974, 9686762, -10672457, -3350075, 17931488, -21079700, -14323179, --6190122, -4446365, 22535694, 10470593, 6077379, 13298829, 5190468, -2282238, 10362682, -307090, -7587060, 10835129, 16944182, -6706055, -202400, -1986959, 12472048, 18976776, 6998649, -4677757, --1449552, -5891085, -13921063, 24271934, -7232188, 12452721, -7285339, 3755412, -7740605, -5648956, -6139656, 11019275, -23813446, 16870632, 27314382, 10059350, -12475806, -16615618, 7963406, -21450678, -33951716, 28268938, 43029668, -30693446, -37789808, -9505299, -860067, -19135690, 25312926, 30682710, --22688702, -96100, -40464496, -11968463, -19153944, -36564668, 11578695, 30144228, 18297634, -23775328, --9181566, 2764885, 20360830, 3022046, -1426466, 7614977, -2244657, -10299868, -32695976, -22230214, -8505646, -3078418, -17753248, 19326816, 17277580, 10951093, -33451352, -30587684, 29000156, 17449378, -21584358, -21837224, -55770688, -10562398, 23620710, 23345832, -5617817, 56500296, -6912213, 56797184, --85290000, -105902080, -43386148, -63807108, 875636, 24849608, 13223667, 68977176, -7704098, -4530654, -12991739, -13806172, -54291608, -48511656, -53821844, 43117176, 35483408, -13383118, -3497177, -90292024, -25307022, -1211181, -40127880, 16687022, 25985090, 39846560, 31456878, 14419816, -2608119, -26865558, -972810, 1273995, -7335804, -11595338, 32024886, 19575388, 12576738, 32408212, -24830280, 5915781, --6824703, -15564425, 20513300, -3256659, -35323960, -305480, 11375758, -12796855, 17024714, -6825240, -4684736, -7913477, 39586176, 30712774, 36688148, -30840550, -6812355, 37755448, 28139552, -26879516, --16406238, -27073326, -15752866, 22012782, 25238302, -8858907, -2379949, 42107324, 1942936, 3870839, --5374078, 7490960, 7435662, 6911676, 12130061, -40904196, 35690640, 27307938, 11113228, 33791192, --19881404, 12508555, -55881284, -26883274, 14597520, 20697984, 9382356, 7291781, 6860137, 14533096, --6864969, 63592360, 5640903, 39638252, 11272142, -18977850, 48298516, -6484327, 18911278, 1105954, -17250200, -1728724, -1136019, 10727755, 24185498, 7176891, 17641578, 1347546, -3755949, 38299832, -4248260, -7952132, 557272, -2905546, -19331110, -5403606, 10657424, 7203734, -43203612, -10433549, -5341866, 10067403, 44964012, 36821292, -44671956, -24469502, 3578245, -9774809, 49524196, 4932233, -45670536, -32140314, 22941568, 4731980, 2440078, 21342230, 46940772, 30606474, 6180995, 41668164, -16247861, -19504520, -42031088, 36837936, -33538862, 22298934, -44137232, 247497, -69940320, 72538240, --18022756, 2537789, -49000744, 44040596, -17169132, 13955959, -35976792, 42534136, -22251152, -19976966, --14627585, -26721140, 8227010, -14974403, 12597139, -13886703, 23209466, -26106958, 23255100, -27489402, -15067282, -32189170, 25649544, -11136313, 28478854, -9993852, 14898168, -12174085, 9595494, -13887240, -450972, -15177341, 17273284, 7036767, 4858682, -6087043, 1629403, -12139188, 9273908, -12473122, -21810380, -18148922, -21587580, -9779641, 8683887, -25661356, 19734300, -6396280, 10830834, -7355132, -6159520, -11854647, 5494337, -6161668, 6586869, -2030446, -69959648, -17481054, -5423470, 7377143, -6280316, -43545600, -25300578, 39353176, -15261629, 14516453, -17413944, 3847217, 49437220, 79685064, -5526013, -2837363, 40025872, 17437568, 16579111, 49334140, 1111860, 29862908, 36239860, 34775812, --13634911, 15024869, 31327492, 43588548, 35692788, 53609780, 30296700, 68462856, 72685344, 52494700, -57957364, 39460548, -4317516, 19306952, 10282152, -15044734, -14824616, 11349988, 33843268, 7661148, -1567126, -246961, 16729971, 50302120, 39168492, 84515832, 17067664, -43992812, 17541720, 770410, -17935784, -22649510, 33627984, -61435212, -79102560, 22014392, 79542256, 34493956, 15892990, -98717672, -569620, 37351720, 59565292, 79878872, -34011848, 4813048, -137941472, -91093568, 36843840, 51518668, --76838576, -65705484, -40889700, 75249976, 50280108, -90382216, -116525144, -23755464, 47414828, -55947316, -26495654, -8759586, -20204600, -30343944, 4111358, 11723650, 19552838, -3762391, -48289928, -41973104, -5063767, -13276281, 20141786, 2452963, -5114769, -18652506, -12259447, 7282654, -1210107, -40427452, --20327006, -30702574, -15854872, 5092221, -15647103, -11768210, -36083632, -48142288, -65935264, -66071092, --55643984, -47536700, -52207476, -52105468, -39735964, -54952496, -58031452, -49638548, -55778204, -36383204, --9934796, -32364190, -46662136, -31232466, 1142461, -17441326, -9554692, -11639361, 23698556, 25040196, -464393, 10836739, 12772159, 6851547, 7050189, -721555, 5334887, 3546569, -26832272, 66924716, -73720968, -83197808, -35548908, 33078228, -24147916, 16941498, -31431108, 28802588, -26725970, 7348689, --761283, -11534135, 5674726, 2480881, -8715026, -4887136, -21520470, -4489852, 3799972, 3595425, --21921514, 21182778, -20176146, -5640903, -17603460, 2993055, -16887812, 33927020, -1552631, 9757629, --9704479, 9730248, -10269267, 10424959, 19203872, 28381680, -8300561, 10233833, 9182103, 25043418, --15888158, 16487843, -14277545, 29874182, -8553964, -15360414, 8411157, -6183143, -9682467, 4290136, --3505767, 13379897, -7570954, -15469398, -16954920, 3473018, 2113661, -27666568, 7727183, -3479461, --3853123, 5896990, -9079561, -3933653, 1909113, -3633542, 2935610, -14471892, 17034914, -50247360, -25985626, -20885352, 33252174, -22040162, 29650844, 562104, 15607911, 10631655, 12477417, 7191386, -1176284, 6870337, -2205466, -20586852, -5639829, 2003065, -9874130, -3063386, -5733782, -1281511, -31675, -7158637, -1869921, 4156455, -1998770, -12339978, 13188234, -1280974, 6449967, -13164075, -5649493, -7670812, 4615479, -9127879, 10597295, -13894219, 20170240, -2819109, 1624035, -20899310, -14015015, 244813, 9783936, -19717658, 3899294, -7415261, 1806034, -2887292, 503585, -12394202, -5332202, -1301375, -10181220, 2428804, 15556372, -17833242, -470299, -5937256, 8320963, -11896523, -11062762, -9127879, 1496796, -5953362, 7838316, -1698660, 3164854, -2026688, 3651796, -5495948, -1864553, -1134408, -4429722, 1763621, 558883, 1500554, -1970316, 5234492, -1410360, 1239098, --4015795, 7402376, -9881109, 3321620, -13566728, 63551556, 38538740, -20952462, -24102820, -2110977, -78964048, 32992328, 11072426, 21859236, -19147502, -24171002, 6736120, 15329812, 3999152, 1391033, --8408472, -6551973, 7430294, 7575786, 18383534, 8181913, -9911174, -4369593, -4900558, -9990094, --111132, 1762547, 4896800, 6233608, 190589, -2652142, 7336878, -21195126, -8055211, 9429064, -13519483, 16762720, -9436043, -5490042, -10031970, 17145510, 11860552, -3246459, 5447093, -19815368, --17149268, 15821586, 12304008, 3881040, -30031486, -15439871, 1232119, 5002563, 19763292, 14129906, --2221572, 5811091, 7019587, -9388262, 8580271, 9309878, -2756832, -5729487, 5529771, -10052371, -937914, -1720671, -7056632, -10769094, 14936823, 3052111, 3304977, 20577188, 25031070, 8860518, -20255602, 18962818, -3000035, -5127654, -5709086, -3663070, 7902740, 12934294, -5031018, 3977677, --11625940, -4230006, -580894, 2756832, -6345814, -7573638, 7818988, 14970645, 6468758, 4148402, -6264747, -7205345, 578210, 7119982, 1388348, -2244657, 1789391, -739808, -8732205, 17752710, -5779952, -14215805, -13427678, 5395553, -2667175, 13997835, 7406671, -1797444, 5226439, 1792612, --2901787, -652835, -4051228, 4097399, 6420439, 991064, -1686312, -5567352, 4757213, -1108638, --22798224, -62870804, 21777632, 115624280, 90913184, 87067040, 27836220, -80922016, -48547088, -71734008, --71970232, -65578780, -22892176, 35391604, 45601280, 71744208, 64250028, 38718592, 6505802, 6344741, --31079994, -49118856, -70338144, -27018566, -19088446, 6362457, -3955665, 35748088, 24126978, 10302553, -47747152, 26851062, 20444582, -4118337, 17942226, -32363652, -24422258, -20158966, -23587960, -31040802, --18719078, -12353400, -31609886, -21826486, 8416525, 46592344, 44944684, 51084340, 40099964, 58400280, -10115722, 14999636, -38766376, -28661390, -24604794, -58137216, -57931056, -51942260, -24558622, -30415348, -7168838, 22622130, 32510218, 65351148, 64165200, 61452392, 55104968, 48260936, 10320806, -28279138, --46134392, -82390896, -70807368, -51601348, -70377336, -32615982, -14673219, 3161096, 69107096, 54202488, -79492328, 78556024, 57380764, 16109885, -15825344, -23417772, -27187142, -24218784, -46749644, -57812408, --40397924, -27568322, -24387362, 3126199, 16289200, 25919590, 22317724, 46600396, 50925428, 38513508, -30630096, 5166309, -10724533, -21898428, -35871028, -30802968, -21850110, -34409132, -46649252, -4879083, -2746632, -7626788, 40273372, 53151832, 34029564, 29905320, 2279017, 8497593, -5473399, -9287867, --23160074, -27224724, -17851494, -20332912, 2971044, -8076149, 2704756, 469762, 18398566, 9927817, -9543954, 17205638, 17582522, 109522, -4488241, -12349105, -12289512, -3447248, -2666638, -5901822, --5779952, 1298154, 1684701, -1341640, 3221226, 3459596, 3337727, 1105417, 11629698, 4390531, -126165, 2072322, 37581, -3620121, -3052111, -3062312, -1673964, -1042603, 250719, -383863, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-5280663, -4364224, 1209033, -2503966, -403727, -715649, 2529199, 10109279, -2704756, 1017907, +-9630927, -5260261, 2934537, -4578435, -3572876, -1351304, -4069482, -1078037, 8386998, -3602941, +-5373541, 9064528, 7254737, -2560338, -1684164, 8297340, 2359011, 3218004, 1600412, 406411, +-2125472, -3496640, 3287261, -2604898, 2456185, 892816, 944893, -1161252, -2853469, -2236604, +2024540, -2574833, -4070019, -1833951, -1820529, -5180805, 5861557, 9061307, -5214091, 2957622, +249108, -2033667, 1434519, -224412, 73014, -3033858, 5602785, -3324305, -4108673, 4664335, +1422171, -243739, -525060, 2563022, 161061, -72478, -1610613, -806917, 4923107, -7191923, +2446521, 1323924, -1751273, -1719061, -2513630, -3659849, 26307, 3533148, 3607236, 1052267, +-71404, 818191, -2007897, 2629594, -999117, 1547799, -1121523, -719944, -543850, -654446, +-526134, 1214402, -60666, 501974, 730681, 446677, 1257352, 1592896, -529355, -365609, +-716723, -491237, -1016297, -297963, -679679, -553514, -1034013, -404264, -120796, -15923591, +-2515240, -5817533, -1432372, 1287953, -4342212, -9705552, 7114077, -2382633, 1655710, 4764193, +-1515050, -484258, -594853, 2194192, -1686312, 8014409, -334471, 6182606, 9060770, -10877005, +2276870, 7559143, 517007, 1507534, 5228049, 9669045, 1378148, -2173790, 4861903, -1293859, +-2525978, 2180770, 1714766, 2157147, -2729452, 9852655, -4554813, 2486249, 3668439, -44560, +-489626, -4807679, 774168, -5570573, 4669703, -5690832, -4379256, 3150896, -5315559, 3637837, +-3714610, 1527398, -3001645, 2021319, 4275103, 8393977, 2563559, 949188, 4071629, 61203, +-7271380, 961536, 2022393, 2759517, -1843078, 378494, -1017907, 1377611, 4027069, 2439005, +5508296, 1905892, 712965, -3372086, -1745367, 3255585, 2514167, -3229279, 3841312, 1887101, +4202089, -1324997, -1045288, -1329292, 164283, -823560, -3426847, -629750, 524523, 561567, +2156074, 239444, -689879, -840740, 887985, 462783, -1699196, -253403, -166430, 9664, +624918, 177167, -814433, -112206, -774705, -5814312, 4338991, 2779918, 909996, 5433134, +-250719, 3033858, 7473243, 4580046, 9787694, 1858647, -1396401, -10006200, 1614908, -6145025, +-2001992, 744640, 2294586, -3857418, 43487, 9574556, -4866198, -281320, -4858682, 2309082, +92879, 1840394, 3964255, 4598300, -2864743, 3444564, 3626026, 6920803, 309238, -6834904, +705448, 7337952, -680215, -482110, -973884, 4927401, -5719823, 463856, 3823058, 4931696, +5974300, -2253784, -3844533, -517544, 8568460, 777389, 3119757, -6955700, -3063922, 1665911, +1470489, -1204202, 4556961, -328565, -900869, 2520072, -4327180, 261993, -649614, 2965675, +4611721, -6755984, -1479079, 2169495, 4545686, -2900177, -2738579, 1858647, 5379447, -484258, +3623879, 2540473, 3714610, 1539209, 4140349, 6189048, 268435, 1728188, -1686312, 2516314, +1829119, -1189169, -2768107, -532576, -1955284, 644245, -1786706, 780610, -802085, 431644, +-1446330, 33286, -122943, 303869, -861678, 1378148, -1296543, -574989, -569083, -708133, +188979, 775778, 824097, 443992, -379031, -293132, -598074, 1865090, 17311940, 8404714, +6822556, -6437619, -1139777, -8984535, -6423661, 9649718, 870268, -6069863, -2829847, 2077690, +-5754183, -504659, 9802189, 3937948, -407485, 3163780, 14374719, -9554155, 2294050, -1775969, +-4651450, 8284992, 4198868, 4308389, -3220689, 3723200, 4744328, -1439888, 3044058, -948651, +-4101694, 875636, 1537598, -690416, 4865661, 1224603, -1761474, 5410048, -2463701, -2514167, +-3123515, 1537061, 2062658, 417149, 3864934, 543850, 12164958, 824634, -10737, -2801393, +-2543695, 2944737, -9060770, 401579, 5428302, 4342749, -4894115, 7196755, 117038, 3234110, +5724655, -1598802, 4430796, 3469260, -1580011, -5140002, -3949759, 3266860, 8138426, 2349884, +-3546569, -1714766, -2012192, 5631239, -4754529, -243203, 4618164, 5389110, 736050, 701690, +-1488743, -2218351, 91268, -496606, -1889786, -364535, -863825, -909996, -1454383, -704912, +1898912, 1318018, -386010, 2492155, 724776, 1020055, -323733, 864899, -438624, -192737, +-103616, 308701, 302258, 714038, 1339493, 363998, 152471, -387621, 4168266, 1124208, +11323144, 2839510, 6747931, -285615, 1494112, 1918240, 1879048, -1853278, 6899865, -2887292, +7465727, -3646964, -2896419, 1982664, -4941897, -1387811, -1559073, 2131378, 3102040, -1952063, +-7233799, 3316789, -8745627, -3498251, -1490891, -170725, -1377074, 1742683, 7825431, 4459250, +524523, -8110509, -7833484, 304943, 5274757, -2754148, 819265, -964220, -3478924, -5196911, +533650, 3579855, 7546258, 6851547, -881542, 2225867, -9480067, 3272765, 6285685, 7184944, +-890132, 6554120, 1387811, 9525164, 5606006, 1848447, 4285841, -399432, -2490007, -1656247, +-972273, 5987185, -2294586, -3342558, -4163971, 5974300, -1450088, -10421201, 2066416, 3974992, +5840619, 7590281, 12934294, -5417028, -4456029, 7670275, 8082055, 6387690, 2721936, -1342177, +-1489817, -5053566, -5680094, -1588601, -2062121, 1684701, -248571, -1664300, -248571, -3152506, +656056, -442919, 1454383, 173409, -2415919, -227096, 233002, -433255, -240518, 1097364, +2097555, 2097018, 1723893, 424128, 413391, -3248606, 122407, 2185065, -1479079, 1174674, +244276, -959388, -792421, -464393, 2178085, 1589138, 307627, -273804, 1178432, 27917, +-15039365, 7305740, 10304700, 1391569, 8577050, 1213865, -7689065, -693100, -3589519, -1860795, +7918309, -10275172, -2876554, 3640522, 4048007, 9364102, -1840930, 4071629, -14623290, -7401840, +3741454, 8688719, -5695127, -4047470, -6104759, -7319161, 3848828, -869731, 73551, 2781528, +1335735, 2900714, 11344619, -6832219, 11009612, -573378, 2251637, 2478196, 2393371, -3285650, +3829500, -7754564, -1482301, -4207994, -821949, -5750961, 7014756, 1275605, 19427748, 658204, +-1245004, -4881231, 859530, -4081830, 10153303, -6230387, 1345399, -11327976, 8524436, 7881802, +-9410810, 5788006, 5840082, 2471754, -5100274, -5148055, 8552890, 2252710, -12378633, 5975910, +-5877663, -3145527, 2798171, -3044595, 1105954, 2550674, 3334505, -6396280, -15683610, 2332704, +3517041, -431644, -3372623, 6241125, -2672544, -1954210, -2906082, 4170413, -5077725, -1949378, +-2887829, -2078227, 1272384, -1877438, 2687576, 448824, -4516158, 3367791, 430570, -2252174, +-143881, 3042984, 965831, 207232, -406948, -754304, -2397666, 266288, 656056, 369904, +-248571, 1436130, -2713346, 363998, 504659, -2941516, -2690260, 6612102, 1274532, -119722, +-5582384, -9362492, 3314641, -5018133, -2030446, 9084930, -12360379, -5135707, -9107478, -914291, +7807177, -711891, -6442988, -8927090, -10039486, 3926137, 10618770, -3029563, 6634651, 10001905, +-2765422, -2290828, 3911642, 5568425, 11857331, -1704565, 6666326, 980863, 14098767, 10380936, +2838974, -3304977, 1425392, -7799661, 13688598, 3195993, -6035503, -6686191, 7895761, 6681896, +4801237, 3433290, 2346126, 7102266, -3060164, 3142306, -4685273, 692564, 386547, -7100655, +-9505299, -3357591, -6712497, 4333622, -4095788, -3029026, -10366977, -6509023, 1992328, -3527779, +-1238561, 5000953, 10394358, 13119514, 6818261, 5440113, -4825396, -10653130, 191126, -7451232, +-17244294, 167504, -1206886, 6452115, 4346507, -4205310, -9605157, -5207111, 4655208, -212064, +-1064615, -3961571, 2134062, 2211371, 1743757, -1006096, -5465346, 1172526, 727460, 553514, +-1229971, -654983, -732292, 702764, -2670933, -2738042, -281320, 354872, -2218888, 215285, +-436476, 2080375, 2761664, -2954401, -98247, 2177549, -355409, -1228361, 513249, 333397, +2995203, -905701, 1930588, 1529008, -1272384, -19889456, -6159520, 1097901, 9682467, -6976101, +4719632, 3107946, -425202, 14606110, -1981591, 13746043, -8120173, 4037269, 4322885, 172336, +-12585328, -5190468, -4717485, -14260365, 4838281, -3547106, 2997887, -890669, 5143224, -18254, +-5609228, 2976949, -9208410, 6774774, 3934190, 15636365, -694174, 472983, 14251238, -12618614, +11056320, 13591424, -8531416, 8753680, -3686693, -4105452, -7165616, 1801739, 1609002, 9666361, +6178848, -2490544, -4061965, -8215736, 4461934, 5127117, -9469329, -4237522, 8773544, -15460272, +1395328, -11942157, 6694781, 660888, -284542, 3613141, -4109747, 1374390, 14190572, -5872294, +3059091, 6936372, 4316979, 763967, -7569343, 3322157, 2727304, -4369593, -12232067, 133681, +-2835752, -9647570, 7261716, -2626909, 2643016, -384400, 1338956, 3073586, 2940979, -5389647, +1317481, -536871, 1190780, -430034, 3598109, 1821603, -941135, -666794, -5297306, -205085, +-3633542, 632434, 558346, 3815005, -5597416, 2071248, 2968359, -2103460, -3488050, 1242856, +-534723, -2035815, 1637993, -435402, -2189897, 775242, -759672, -2489471, -726386, -1608465, +-3372086, 1588601, -1048509, 318901, -1857037, -375810, -1897302, 903554, 3562139, -462246, +-8130910, 23639500, -8790724, 4570382, 3400004, 8419210, 2654290, 5099200, 11809549, -9150965, +-5607617, -773631, 16428787, -6362457, -6991133, -8174397, 4060892, 2719788, 8990977, -18778670, +177704, 372588, -1273995, 9614821, -2339684, 7408819, 13788456, -10047002, -4498442, 3905199, +-7522635, -9483288, 6360310, -8811125, 12965433, -2238215, -13352516, -1788854, -7668127, 4217121, +10574209, -227633, 5346698, -678605, 2052994, 12578349, 383863, 9117142, 3606699, -6868190, +7128035, 6080063, 837519, 5104032, 18076980, -3021510, -8139500, 4275640, -10300942, 784905, +17265232, 5844914, 2717104, -3312494, -4956929, -3350075, -6121402, 10394358, -6852084, -1843615, +-4275640, 11798275, -21734682, 7412040, 7646116, 13055090, 3090766, 976568, 11508365, -3277060, +-4993973, -6540699, 152471, -5443334, -554051, -4685810, 3768834, 332860, -4172024, -4401805, +-3684008, 1382443, 4495220, 3598109, 767725, 248571, -1930588, -4763119, -1593970, -1242319, +1947768, 1985886, -804233, -1186485, 922344, -2862596, -17717, -2778307, -1403381, -3652333, +-4912369, -1381369, 1669132, 5435818, 869731, -1530082, -1464047, 2123325, -534187, 5212480, +2355790, 895501, 725313, 34939560, 10427107, -6367826, -8485782, -7148436, 25313464, -21814676, +1736241, 8544837, 1263794, -11826729, -2675228, 5937793, -1267015, 1379758, 10500658, -10865730, +-9128416, 4481262, 13687524, 8437463, 3535295, -6630356, -6481106, -6238440, -7269232, 6780680, +2692945, 9716290, 7793218, 4442070, -10310069, -4900021, -10983305, -2176475, -7205345, -16588237, +-3091303, 7419019, 1648731, -7692287, -7758859, 200790, 4014721, 10392210, 1321239, 5272609, +1505386, 20076288, -17413944, 11400991, 2137820, -17765058, -3208878, -5350456, -4395362, 2737505, +-7778186, 4702989, 3416110, 7965554, -9700184, 3445101, 15538655, 7285875, 24688008, -5513128, +-612570, -6058588, -3103114, 680752, -490163, -23398982, 10436234, -974421, -1369021, 6361384, +6286759, -6626598, -9969156, -10900090, -4052839, 7755637, 3302830, -2535105, -6440304, 5695664, +-10128070, 5316096, -1657857, -4576288, -5724118, -6206228, -2240362, -2061584, 987306, -2585034, +-1751810, 1296006, -1858110, -1729798, 1079111, -5070746, -2312303, -344134, -1725503, -2898566, +-1293859, -5149666, 733903, 3871376, 5210869, 6117644, -4432406, -5425618, -3849365, -4905390, +189515, -3221, -3009162, -3422015, 1322313, -449361, 3399467, -1048509, -244276, 2638184, +2640868, -2114735, -11694659, 2843805, 6362994, -243203, -7185481, -4986457, -15532749, -18456548, +3832185, -8178692, -3895535, 2718714, -154082, -1928977, -8236137, -4085051, -78920, 6484864, +6908992, -10136660, -5816460, 6388227, -9084930, -4459250, -14879377, 14408542, -1874753, 12981002, +1136019, 4871567, 13790066, 10425496, -6122476, 3144453, 7012071, -7361574, -2997350, 6833830, +-2533494, -16526497, -3071975, -11578695, 16992502, -1793149, -4510253, -9711458, -14173392, 5083094, +3005940, 3346317, 6994891, 165893, -2583423, 7320772, 1869921, -1395864, 2575370, -4088272, +11229729, -2650532, 7085623, 20964272, 4675072, 3940096, 4909685, 7736847, -18246632, -14768245, +5623186, -16119012, 11164231, -2274722, 12790949, 3379603, 24937654, 9793599, 1698123, -7245610, +-3214783, -12823162, -864362, 4001836, 2505040, 2726767, 4408247, 11380590, -4733054, -9228811, +-3208341, -2564632, 3582003, 10326712, 3652333, -2489471, 2977486, 3029026, -532039, -2386928, +-6010807, 404264, 677531, -2933463, -3977677, -758062, -6374269, 4471061, 2538326, -2997350, +-971736, -6331856, -3103651, 2927020, 5541582, -2783676, -2572686, -117038, -5087926, 5395016, +-255551, 3885872, -5263483, 2147, -5453535, 3192235, -6471442, -1468342, -29772714, -20850456, +7736310, -8304856, -17219060, -26137024, -636729, 2084670, -5068062, -4174708, 24928528, 6541235, +-18026514, 3772055, -11000485, -9253507, -8932995, -16099148, -2659122, 1484448, -22169548, -20992726, +-7975218, 3473018, 2067490, 12719546, 10765872, 6688875, -5337571, -207232, 4920422, -11369852, +-6338298, -3879429, 3765613, -10681584, -6524056, 7300371, 4422743, -289373, -1639067, -1995012, +6086506, -15381888, -8764418, -7573101, 10205379, -11923366, 8106214, 13665512, 18722300, -1245004, +5389110, -4438849, -8930311, -11724724, -3157875, 11559368, 4350802, -20989506, 932545, 21721798, +-14421963, 702227, -3074660, 1158031, 5168457, 11077794, -2291365, 3519726, 13302051, 9145596, +5862094, -10174241, -12241194, 8949638, -8856223, -16772384, -16106664, 17553532, 6687801, 9696426, +4167729, -2764348, -3377992, 8375186, 5939403, 1578937, 8072928, -3217468, -10566693, -5459977, +-7362111, 2961380, 10699300, 5208722, 1300838, 6330782, 3520263, 5902896, -1120987, -3029026, +3640522, -1319629, -4087198, -3486440, 2825015, -9766756, 2155537, 5728413, -3436511, 7086696, +4866198, -408559, -765041, 6680822, 835371, -1545115, -4248797, -4181151, 1176821, 3521873, +810138, 2835752, -4233764, -17400524, 9601936, -14085882, -25107842, 4529580, -15264851, -8873402, +29669634, 2012192, 22216792, 19985556, -4006668, 21046950, 29132226, 20708184, -26051124, -3484829, +-12106439, -12274480, -7500624, 515396, -10737955, 22725208, 6759205, 12466679, -10641318, 11932493, +9197672, 3048353, -13553843, -10558103, 21646098, -3964255, -20181514, -1387811, -23359254, -3383361, +6509560, -8392903, 530965, -19084688, 8774081, 17273284, 9382356, -2563022, -9338870, -3512210, +-2334315, -3262565, -8744553, -23447300, 15851651, 8881455, 8294656, 9895605, -13285944, 20645908, +2627983, -6268505, -4575751, -16509854, -7232725, 10650445, 6643778, 17648558, -1871532, -20278688, +-35497904, -2130841, -212601, 100932, -12767864, -17945984, -3372086, 11805791, -6208375, -7289633, +4751308, -1646583, 18090940, -3612068, -16012175, -5797132, 16850230, 1021665, 3237869, -16410533, +-5769752, -3142306, 6805376, 8696772, -4284230, 2986076, 712428, 6495601, 4323422, -723702, +2961380, 8722005, 2180233, -216359, -2881923, 927713, 5840619, -260919, 2986076, 9979357, +1510755, -3520263, -7405598, -883690, 5425081, -5223754, 2783676, -2385854, -1562831, -3504693, +-4445291, -3450469, 93952, 6280316, 4969814, -6806450, -12377559, -3730179, 4645007, 1607392, +1684701, 37877852, 23890218, -3391414, -22062174, 4642323, 11000485, 6338298, 16076599, 24128590, +-10647224, 1986422, -21566104, 6106370, 1780264, -8370892, 38863548, 14725295, 33534030, 13840532, +8651675, -29221884, 453119, 16292422, 2973191, -15559056, 6578280, -23782308, -9280351, 1627793, +7168838, -7129109, -4619238, 5145371, 4206384, 1707786, 21058224, 13070659, 3469260, -8439074, +14505178, -9439801, -6766184, -13874355, -4610648, 18073222, -28563680, -449898, 12827457, -14266271, +-4476430, 5426691, 4828080, 26370026, -1513976, -310311, -12306692, 25781614, -11483132, 3244311, +2716030, 17848274, -4158065, -6463926, 17011292, -28702192, 7487202, 2734821, -11882564, 22923852, +-28660316, -3653944, -9574019, -19267224, -9622874, -1725503, 8173860, 18004502, 29734058, 14484240, +19653234, 29898342, -12160126, 5496485, 7538205, -12801150, 17311940, 325344, -22891638, 11998528, +6367826, -8407935, 818728, 17670032, 13395466, 3924526, 10576357, 3118683, 3469260, 9690520, +-1710471, 4107063, 8705899, -2138894, 1941862, -1613834, -450435, 6095096, 1254667, 624918, +-5310727, -3214246, -3661997, -7601019, 1700270, -4211216, -12054899, 4617627, 7326678, -2537789, +-66035, 3217468, -4123169, -179852, 12861280, -1973001, -3508452, -8126615, -36710696, 10171556, +1933809, 44338020, 10126459, 8335458, -1217086, 21625160, 5837935, -32502702, -4989679, 34774740, +-10302553, -7322383, 2934000, -2404645, 790274, -6331856, 36215164, 41199472, -22152904, 10001368, +11093901, 6024229, 11705396, -18133352, -25047176, 19280646, 5299990, -13853954, -23944980, -7188702, +-8129836, 21905944, 17905718, 10049687, -20271708, 11151346, -8780524, 7110319, 1222992, 9411884, +20657718, 4754529, -46166604, -14148159, 8488466, -18496276, 5632313, 19593640, 6591701, 34118684, +-11280195, -51246476, -1175210, -20428476, 17841832, 15477988, -5579700, -10898480, 15847356, -24609088, +-4381941, -13295608, 11635066, 16027744, 13698798, 14891188, -11087458, -20853140, -62065500, -29677150, +-36113160, 5710696, -24471114, -11863237, -4971425, -26927298, 14452028, -48480516, 15113453, -34861712, +-25249576, 24869472, 29388850, -9023189, -1177895, 15917149, 20725364, -28452548, 632434, 4664872, +-4079145, 5025649, 15312632, -1948305, 6779606, -1288490, 5992553, -12577275, -6581501, -5733245, +-8267275, -1796907, 12020003, 4991289, 10822781, 409633, -11414949, -10379325, 1824287, 6305012, +-2348810, 6695317, 6998649, 16860968, 1670742, 5803575, 1850594, 4022237, -7407745, -2270427, +3103114, -6027987, 324270, -2760590, 727460, 3132642, 17623862, -1617055, -10432476, -11577621, +1161252, -654983, -18408230, -10794863, 7621420, -12106439, -596464, -156229, -48012364, -7062000, +31971736, -37949796, 3831648, 14191646, 513249, 9953587, -2724620, -30061550, -2397666, 16397111, +5628555, 24423868, 16665010, -25784836, -27793270, -3701725, -11957726, -3958349, -45888504, 17212618, +18356690, 32192390, 14751065, 29302414, -12561169, 4027069, 30209190, -9505836, 32866700, 9124658, +17428440, 5860483, -8250096, 16200617, -19801410, 970663, 41504416, -32154810, 3044058, -41823856, +-18763102, -30079266, -20387136, -5272073, 2263448, -9893457, -31819266, -5771899, -52893060, 59782188, +21026012, 335544, -8057896, -14475650, 3353296, -26339960, 4893579, -39461624, 925565, 1983738, +8833137, 25245280, 36420784, 1227287, -61062624, -28090696, 26176216, -13350369, -12199318, -14823543, +-8126615, 30103962, 6258304, -16962974, 12640089, -28330142, 4910758, -5402532, -12584254, -28603946, +-16201690, 18023294, -8630200, -6966974, 9686762, -10672457, -3350075, 17931488, -21079700, -14323179, +-6190122, -4446365, 22535694, 10470593, 6077379, 13298829, 5190468, -2282238, 10362682, -307090, +7587060, 10835129, 16944182, -6706055, -202400, -1986959, 12472048, 18976776, 6998649, -4677757, +-1449552, -5891085, -13921063, 24271934, -7232188, 12452721, -7285339, 3755412, -7740605, -5648956, +6139656, 11019275, -23813446, 16870632, 27314382, 10059350, -12475806, -16615618, 7963406, -21450678, +33951716, 28268938, 43029668, -30693446, -37789808, -9505299, -860067, -19135690, 25312926, 30682710, +-22688702, -96100, -40464496, -11968463, -19153944, -36564668, 11578695, 30144228, 18297634, -23775328, +-9181566, 2764885, 20360830, 3022046, -1426466, 7614977, -2244657, -10299868, -32695976, -22230214, +8505646, -3078418, -17753248, 19326816, 17277580, 10951093, -33451352, -30587684, 29000156, 17449378, +21584358, -21837224, -55770688, -10562398, 23620710, 23345832, -5617817, 56500296, -6912213, 56797184, +-85290000, -105902080, -43386148, -63807108, 875636, 24849608, 13223667, 68977176, -7704098, -4530654, +12991739, -13806172, -54291608, -48511656, -53821844, 43117176, 35483408, -13383118, -3497177, -90292024, +25307022, -1211181, -40127880, 16687022, 25985090, 39846560, 31456878, 14419816, -2608119, -26865558, +972810, 1273995, -7335804, -11595338, 32024886, 19575388, 12576738, 32408212, -24830280, 5915781, +-6824703, -15564425, 20513300, -3256659, -35323960, -305480, 11375758, -12796855, 17024714, -6825240, +4684736, -7913477, 39586176, 30712774, 36688148, -30840550, -6812355, 37755448, 28139552, -26879516, +-16406238, -27073326, -15752866, 22012782, 25238302, -8858907, -2379949, 42107324, 1942936, 3870839, +-5374078, 7490960, 7435662, 6911676, 12130061, -40904196, 35690640, 27307938, 11113228, 33791192, +-19881404, 12508555, -55881284, -26883274, 14597520, 20697984, 9382356, 7291781, 6860137, 14533096, +-6864969, 63592360, 5640903, 39638252, 11272142, -18977850, 48298516, -6484327, 18911278, 1105954, +17250200, -1728724, -1136019, 10727755, 24185498, 7176891, 17641578, 1347546, -3755949, 38299832, +4248260, -7952132, 557272, -2905546, -19331110, -5403606, 10657424, 7203734, -43203612, -10433549, +5341866, 10067403, 44964012, 36821292, -44671956, -24469502, 3578245, -9774809, 49524196, 4932233, +45670536, -32140314, 22941568, 4731980, 2440078, 21342230, 46940772, 30606474, 6180995, 41668164, +16247861, -19504520, -42031088, 36837936, -33538862, 22298934, -44137232, 247497, -69940320, 72538240, +-18022756, 2537789, -49000744, 44040596, -17169132, 13955959, -35976792, 42534136, -22251152, -19976966, +-14627585, -26721140, 8227010, -14974403, 12597139, -13886703, 23209466, -26106958, 23255100, -27489402, +15067282, -32189170, 25649544, -11136313, 28478854, -9993852, 14898168, -12174085, 9595494, -13887240, +450972, -15177341, 17273284, 7036767, 4858682, -6087043, 1629403, -12139188, 9273908, -12473122, +21810380, -18148922, -21587580, -9779641, 8683887, -25661356, 19734300, -6396280, 10830834, -7355132, +6159520, -11854647, 5494337, -6161668, 6586869, -2030446, -69959648, -17481054, -5423470, 7377143, +6280316, -43545600, -25300578, 39353176, -15261629, 14516453, -17413944, 3847217, 49437220, 79685064, +5526013, -2837363, 40025872, 17437568, 16579111, 49334140, 1111860, 29862908, 36239860, 34775812, +-13634911, 15024869, 31327492, 43588548, 35692788, 53609780, 30296700, 68462856, 72685344, 52494700, +57957364, 39460548, -4317516, 19306952, 10282152, -15044734, -14824616, 11349988, 33843268, 7661148, +1567126, -246961, 16729971, 50302120, 39168492, 84515832, 17067664, -43992812, 17541720, 770410, +17935784, -22649510, 33627984, -61435212, -79102560, 22014392, 79542256, 34493956, 15892990, -98717672, +569620, 37351720, 59565292, 79878872, -34011848, 4813048, -137941472, -91093568, 36843840, 51518668, +-76838576, -65705484, -40889700, 75249976, 50280108, -90382216, -116525144, -23755464, 47414828, -55947316, +26495654, -8759586, -20204600, -30343944, 4111358, 11723650, 19552838, -3762391, -48289928, -41973104, +5063767, -13276281, 20141786, 2452963, -5114769, -18652506, -12259447, 7282654, -1210107, -40427452, +-20327006, -30702574, -15854872, 5092221, -15647103, -11768210, -36083632, -48142288, -65935264, -66071092, +-55643984, -47536700, -52207476, -52105468, -39735964, -54952496, -58031452, -49638548, -55778204, -36383204, +-9934796, -32364190, -46662136, -31232466, 1142461, -17441326, -9554692, -11639361, 23698556, 25040196, +464393, 10836739, 12772159, 6851547, 7050189, -721555, 5334887, 3546569, -26832272, 66924716, +73720968, -83197808, -35548908, 33078228, -24147916, 16941498, -31431108, 28802588, -26725970, 7348689, +-761283, -11534135, 5674726, 2480881, -8715026, -4887136, -21520470, -4489852, 3799972, 3595425, +-21921514, 21182778, -20176146, -5640903, -17603460, 2993055, -16887812, 33927020, -1552631, 9757629, +-9704479, 9730248, -10269267, 10424959, 19203872, 28381680, -8300561, 10233833, 9182103, 25043418, +-15888158, 16487843, -14277545, 29874182, -8553964, -15360414, 8411157, -6183143, -9682467, 4290136, +-3505767, 13379897, -7570954, -15469398, -16954920, 3473018, 2113661, -27666568, 7727183, -3479461, +-3853123, 5896990, -9079561, -3933653, 1909113, -3633542, 2935610, -14471892, 17034914, -50247360, +25985626, -20885352, 33252174, -22040162, 29650844, 562104, 15607911, 10631655, 12477417, 7191386, +1176284, 6870337, -2205466, -20586852, -5639829, 2003065, -9874130, -3063386, -5733782, -1281511, +31675, -7158637, -1869921, 4156455, -1998770, -12339978, 13188234, -1280974, 6449967, -13164075, +5649493, -7670812, 4615479, -9127879, 10597295, -13894219, 20170240, -2819109, 1624035, -20899310, +14015015, 244813, 9783936, -19717658, 3899294, -7415261, 1806034, -2887292, 503585, -12394202, +5332202, -1301375, -10181220, 2428804, 15556372, -17833242, -470299, -5937256, 8320963, -11896523, +11062762, -9127879, 1496796, -5953362, 7838316, -1698660, 3164854, -2026688, 3651796, -5495948, +1864553, -1134408, -4429722, 1763621, 558883, 1500554, -1970316, 5234492, -1410360, 1239098, +-4015795, 7402376, -9881109, 3321620, -13566728, 63551556, 38538740, -20952462, -24102820, -2110977, +78964048, 32992328, 11072426, 21859236, -19147502, -24171002, 6736120, 15329812, 3999152, 1391033, +-8408472, -6551973, 7430294, 7575786, 18383534, 8181913, -9911174, -4369593, -4900558, -9990094, +-111132, 1762547, 4896800, 6233608, 190589, -2652142, 7336878, -21195126, -8055211, 9429064, +13519483, 16762720, -9436043, -5490042, -10031970, 17145510, 11860552, -3246459, 5447093, -19815368, +-17149268, 15821586, 12304008, 3881040, -30031486, -15439871, 1232119, 5002563, 19763292, 14129906, +-2221572, 5811091, 7019587, -9388262, 8580271, 9309878, -2756832, -5729487, 5529771, -10052371, +937914, -1720671, -7056632, -10769094, 14936823, 3052111, 3304977, 20577188, 25031070, 8860518, +20255602, 18962818, -3000035, -5127654, -5709086, -3663070, 7902740, 12934294, -5031018, 3977677, +-11625940, -4230006, -580894, 2756832, -6345814, -7573638, 7818988, 14970645, 6468758, 4148402, +6264747, -7205345, 578210, 7119982, 1388348, -2244657, 1789391, -739808, -8732205, 17752710, +5779952, -14215805, -13427678, 5395553, -2667175, 13997835, 7406671, -1797444, 5226439, 1792612, +-2901787, -652835, -4051228, 4097399, 6420439, 991064, -1686312, -5567352, 4757213, -1108638, +-22798224, -62870804, 21777632, 115624280, 90913184, 87067040, 27836220, -80922016, -48547088, -71734008, +-71970232, -65578780, -22892176, 35391604, 45601280, 71744208, 64250028, 38718592, 6505802, 6344741, +-31079994, -49118856, -70338144, -27018566, -19088446, 6362457, -3955665, 35748088, 24126978, 10302553, +47747152, 26851062, 20444582, -4118337, 17942226, -32363652, -24422258, -20158966, -23587960, -31040802, +-18719078, -12353400, -31609886, -21826486, 8416525, 46592344, 44944684, 51084340, 40099964, 58400280, +10115722, 14999636, -38766376, -28661390, -24604794, -58137216, -57931056, -51942260, -24558622, -30415348, +7168838, 22622130, 32510218, 65351148, 64165200, 61452392, 55104968, 48260936, 10320806, -28279138, +-46134392, -82390896, -70807368, -51601348, -70377336, -32615982, -14673219, 3161096, 69107096, 54202488, +79492328, 78556024, 57380764, 16109885, -15825344, -23417772, -27187142, -24218784, -46749644, -57812408, +-40397924, -27568322, -24387362, 3126199, 16289200, 25919590, 22317724, 46600396, 50925428, 38513508, +30630096, 5166309, -10724533, -21898428, -35871028, -30802968, -21850110, -34409132, -46649252, -4879083, +2746632, -7626788, 40273372, 53151832, 34029564, 29905320, 2279017, 8497593, -5473399, -9287867, +-23160074, -27224724, -17851494, -20332912, 2971044, -8076149, 2704756, 469762, 18398566, 9927817, +9543954, 17205638, 17582522, 109522, -4488241, -12349105, -12289512, -3447248, -2666638, -5901822, +-5779952, 1298154, 1684701, -1341640, 3221226, 3459596, 3337727, 1105417, 11629698, 4390531, +126165, 2072322, 37581, -3620121, -3052111, -3062312, -1673964, -1042603, 250719, -383863, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { -3353833, --4174171, -6163278, 2082522, -3011846, -6083821, -3896609, 2767570, -7686381, -4258997, -9400610, -3266860, 4199405, 5347235, 2915209, -3289945, 7120519, -4875325, 1437203, 149250, -1025960, --5151814, -2640331, -5666136, 219580, -2408403, 3170760, 2100776, -2705830, -863825, -620086, --5200669, -219580, -1155883, 2308545, -92342, 4701379, -1673964, 5949067, -2576981, 73014, -958315, -4350265, 3022046, -1337882, -1668595, 486942, -1175747, 2273112, -9109626, 4215511, -5487895, 760746, 3119757, 1662689, -4031364, -573378, -4374961, 5931350, -1574642, -3770981, -3605088, -5532992, 245887, 2059974, -6214281, 675384, -1447941, -2442763, 2155537, 389231, -586263, -3024194, -1861332, -10088341, -1197759, 2073396, -1568737, 390842, 1290101, 5232344, -4606353, 168041, 1570884, 541166, -780610, -845572, -1255741, -816044, -338229, -1125818, --827318, -146029, 1069447, 539555, 754841, -1654636, 98784, -159988, -329639, -216896, -477815, -331786, 163209, -856309, -481573, -776852, 81068, -736587, 1043140, -14274324, --8556112, 1568200, -4616016, 865973, -4762582, -8206609, -5439576, 9281424, 5425081, -1457068, -6311992, 1466195, 1562294, 1750736, -3036542, -846645, 5133560, -4137664, 2339684, 3718368, --3979287, -6334003, 2910914, -5180268, 590558, 2944737, 7602092, -1724966, -3641596, -3215320, -1198296, 4111894, -5587753, -60666, 4628901, 1802276, 503585, -318901, -413391, 5976447, --209917, 5473936, 3625489, -1406602, 3612604, -1278290, -307627, -573915, -9998147, 3454228, -5682242, -3290482, -1847910, 1367410, 1561221, 1595044, 905164, -557809, -1188632, 325881, --2499134, 6846178, -3054796, 784905, 3746822, 2964601, -2430952, 2695629, 878321, 1751810, -3784940, 3308199, -4953708, 5140002, 5732171, -1948841, 119722, -372052, 3752191, -4575751, --2351495, 992137, 676994, 165356, 271120, -980326, -1509144, 909996, -700080, -399432, -292058, 1300838, -943282, -235149, 56908, -1796370, 638876, -1067299, -1071594, -865973, -699006, 92342, -485331, -1074279, 284542, -5602785, 7177427, 4774930, 11129871, -1809255, -1154809, 3468186, -5476620, -1081258, 2120103, -2199560, -7422777, -394600, 750546, 4994510, --6004901, -14516989, -11801496, -7199439, 2754685, 6963216, -7014756, 3959423, -3464428, 5388037, -4108673, 3663607, 6363531, 3608846, -5077188, -4605279, 819802, 3464965, -316754, 327491, -8917963, -36507, 1507534, 4499515, 4658966, 814433, 77309, 11123428, -834834, -4136054, --1312649, 2549063, 3175055, -2123325, 5901285, 1196685, 3138547, -4241280, -3845606, -1431835, --2565169, 1468879, -2049236, 6517613, -7562901, -6669548, 8036421, -829466, -409096, -9402220, -2857227, -4551055, 5011690, -3903052, -10509248, -462783, 5293547, -4452808, 6862821, -4160750, -3117610, 6496138, -1914482, 2724083, 6444062, -416612, -4902169, 413391, 3103114, 1486059, --2419677, 4502200, 209917, 2376191, 802085, 650151, 1609002, 311922, -773094, -45634, -139586, 687732, -1912334, -923955, -1046361, 1724429, 106300, 1756105, 1727651, -1708323, -312996, 439160, -1090385, -738198, -460635, 321049, -1003949, 351650, 17353278, 4138201, -4598836, 2032056, -4012036, 8388608, -3986804, -2322504, 10583336, -758062, 8504572, -860604, --9800578, 3495030, -3346853, 10814728, 5638219, -710817, -9679783, -6705518, 8878771, 10609643, --12370043, 6222871, 4913980, 3757560, -839666, 1238561, 996432, -896574, 12184822, -515396, --2126546, -3329137, -4131222, -5189931, -1757715, -238908, -7074348, -2467996, 1803886, -4866735, -239444, 321049, 7277822, -2703682, 195421, 3439732, 255014, 7027640, 3121904, 7305203, -3560528, 2251100, -7718593, 845572, -5727876, -5287105, 1241246, 7448010, -322123, 6401649, --2700461, -4776004, -1149978, 341450, 1841467, 4406100, -2051921, -4832, -2422362, 2476049, -1640141, -6233608, 1188632, 1334661, 801548, -1731409, 6527277, -663572, -1312113, 734439, -3047279, 1382443, -2183991, -666257, -902480, -1546725, 1258425, -1855426, 3064459, -1837709, --396748, 404264, -1491427, -392453, 1691680, -1998770, -490700, -2154463, 819802, 936840, -1728188, -2356863, 446677, -950798, 1178969, -790274, -2876554, -894427, 4908611, 3436511, -3948686, 11185169, 5856188, -4855461, -4336843, -12039867, -777389, -266825, -6420439, 2443837, -9667971, 1173063, -7606387, 7071664, 6724308, -697395, 2692945, 6811818, 1621350, -6181532, --945967, 14430016, 7105487, 1497333, -9506373, -3400004, 8691940, 2993055, -1285269, 4895189, -4381941, 4584341, -24696, 8961986, -68183, -1139240, 2269890, -4438849, -5814312, -284542, -1000727, 3339337, 1843615, -5435281, 5546951, 9720048, 4999879, -254477, 7226820, -8196408, -4699768, -4877472, 5162551, -1357210, -5888400, -286152, -7676181, -12582644, -4578972, -4990215, --593779, -37044, -6574521, 1296006, -2005750, 3843996, 2546916, 4549981, -700080, 1843078, --6327561, 1120987, 1030255, 8871255, -3394635, -257161, -3047279, 1891933, 7986492, 4114579, --4595615, -7369090, 2365453, -2932389, -985695, 3874061, -514859, 1320166, 935229, -4374961, -241592, -3330747, 987306, -3161633, -2116345, -1131724, -99858, -397821, 616328, -2011118, --176094, -654446, -1593433, -1341104, 529355, -322123, -805843, 256087, 797790, 2487323, --825171, 1472637, -1016834, -2424509, 1872606, -2655364, 2639258, -200253, -1694365, -249645, --11778948, -7809861, 16695612, -3662533, -3646964, 968515, -571231, 17875118, -5214627, -9660455, -249645, -9529996, 2387465, 7582765, 8176544, 2571612, -16586627, 13637595, -10727755, 5698885, --7329362, -5589900, -4096862, 6805913, 7340636, -10991895, 883690, 4790499, -3395172, 2193118, -3238405, -3977140, 521839, -9053254, -6066105, -13969918, 8282845, -1959042, 14090714, -6563247, -3068754, 9395241, -2335389, -2796561, -4148402, 10769630, 7879118, -13232257, 3787088, -7485591, --2499134, -2909304, -7416872, 4459787, 2379412, 11647414, 8211978, -14636175, -2386391, -6287832, -8561480, 2973728, 747324, -8540542, 1290638, -899796, 7196755, -1202054, 911070, -9821516, --213138, 6971806, -6419903, 1078574, -2018635, -1917703, -5186710, 1044751, -673773, 12360916, -5461051, 5653251, -2253784, -1381369, -2138894, -3367791, -1797981, 2757906, -3774740, -1203665, --3702799, 2806224, 2363843, -2018098, -1128503, 2609730, -3486977, 1733556, 538482, -938450, --1103807, 938450, -91268, -315680, -664646, 2283312, -3365644, 450435, 308164, 1710471, -1851131, 1851668, -1707250, 510027, -1204202, 2473364, 578747, 1813550, 4061429, -4477504, -297427, -9448391, -1192927, -10904385, 1695975, -2729452, 6250251, -438624, 5300527, -7470559, --14081050, 2986613, 9452149, 1236951, -1155883, 7382512, 4953708, -11505681, -200253, -4338454, -14548128, -649077, 1679332, 1142461, 131533, -457951, -5243618, 11540040, -999654, -16364899, --3091840, 9912785, -6409165, 1650341, -281857, 1321776, -2070711, 1575179, -3033321, 3906273, --6299644, 5905580, 8267275, -6505802, -1683090, -3853660, -11420318, 4555350, -8116952, 7034083, --7138773, -12302397, -3389266, 7299834, -2313377, -4400194, 4853313, 6749004, 3833258, 7397008, -12636331, 10195715, -692027, 1976759, 1692754, -6808060, 1260036, -7118909, -7783018, 4216048, --5946919, 1911261, -389768, 4444218, 4487167, -5890548, 6788196, -1881733, -2843805, -1272921, -4759361, -896574, -4480725, -3038153, -6327561, 7166153, -3651259, -958315, 1189169, -312996, --2710661, -2281165, 431644, 934692, 261993, -1272384, 1604707, 1202591, -1467268, 111669, -1010928, 635118, -918049, -39192, -1213865, 432181, -1994476, -1800128, 1032940, 534187, -2326799, 2595771, 159451, 1779190, -42413, -16176457, -13372381, 7764227, 14508936, -77309, --745177, 2673080, -6817187, -3430605, -16536698, -8936216, -4606353, -230318, -11996381, 17243220, -3554086, 9562745, -10925323, -13245679, -9793062, -3934190, 2751464, -15025943, -6577743, 6846178, --2848100, -18260054, -6048925, 2371359, 311922, 11199664, 3913252, -3622805, -8500814, 10649908, --6104759, -705448, 8209293, 2314451, -8681203, -4598836, -558883, -14795089, 3832185, 11369315, --4855461, -6391985, 1797444, -7522635, -2622078, 1408212, -4618164, -3700114, 4010426, -5622649, --11608760, 5737540, -6562710, -8822400, -11897059, -6078453, 1334124, -4866735, 2136209, 14739254, -8497056, -1858647, 14246943, 14273250, -6063420, 1940788, 4122095, -7474317, -4674535, -15771120, -1765768, -5082557, -12565464, -172336, 6842957, 11788611, 7431904, 3433826, 1472637, -10723460, --1186485, -2473364, 2955474, -4075387, -311385, 219580, 4295, 2544768, 658204, -994822, -2456185, -974958, -3206193, 2689187, -2094333, -3042984, 624918, 1092532, 1180042, 223875, -3449396, -348429, 2269353, 1218160, 420907, 652298, 153008, -2560338, 748398, -3514894, -989453, -5608691, -1218697, -250182, -3516505, -4392678, -396748, -4341138, -627602, -923955, --10186052, 26036092, -971200, 15943992, -7992398, -22892712, 6580964, 1925219, -845035, -10753524, --991601, -7096360, 18153216, 13214004, 11900281, 8619999, -14131516, -122943, 2006824, 12559021, --21482890, -2483028, -5215701, -6333466, 3292093, -7135015, 2822331, 4758824, 3623879, 3795141, -5049808, -1537061, -2062121, -10514080, -2437394, -1639067, 10345502, -40265, -9358734, -2254321, -11252814, -1343251, 6571837, 8329552, -6008123, -3630321, -13815836, -8104604, 27215598, 7113540, -12145094, 6454799, 1634235, 981937, -17149268, 10161356, 1673964, 2955474, 8847096, 9544491, -14981920, -17213156, -7031399, -9569187, -1142998, 2344515, -2207076, -4851166, -2757369, -14440754, --18041546, -11792906, -16904992, -2238215, -11027865, -19031536, -7968775, 6138582, 10466298, -3991098, --16185584, -610422, -2393371, 3816079, -4407174, 1014149, 9398462, 399432, -627065, -609349, -1247151, 1614371, -2701535, -2509872, -6471442, -7345468, 3955665, -2034741, 3545496, 3131031, --1134945, 2125472, 2932926, 5237176, 3786551, -2309619, 1210107, 6681896, 1344325, -6798933, --5553393, -3080565, -1364726, 492311, -2334852, 3864397, 4330401, -1045825, 6509023, 836982, --1756642, -1399623, 1546188, 35039952, 7927436, -5056250, -7277285, 1125818, -11251741, -21974664, -16168404, 70330, 10402948, -7872675, 7523172, 17985712, -1788317, 2004139, -4539781, 15652471, -13171591, 5109938, -21226266, 1529008, 3109556, 13103945, 19068044, -5641977, -3919695, -2533494, -5101348, 6802155, 5648956, -9662603, 4392678, -11137387, 8491150, 11345693, -5450314, -11267310, -7081864, -12259984, -11223286, -489626, 3228205, 15929497, 1899986, -2208150, 13562433, -2544768, -12177843, 22530324, 11275900, 230318, -14353781, -1391033, -8282845, -6716792, 14377403, 5599564, --14559939, -202400, -11140608, -2849174, 19067508, 8752070, 2746632, 8143258, 11467026, 5927592, --15445776, 7900056, 12810814, 4365298, -10570988, 4298189, 1176821, 2159295, -8284455, 12660490, --3545496, -3100967, 15229417, 16145319, 2338073, 4558571, 17554606, 984084, 8639864, -6227166, --242129, 10087804, 5820755, -4547297, 5179194, 9097278, -2535641, 16106, 11611444, 2351495, -4909685, -3513820, -5891622, -1831267, 3198677, 1633698, 2626373, 2695092, -1968169, -1888175, --1576253, 834834, 3437585, 4161823, -2899103, -920734, 7210713, 999117, 9687836, -1821603, -2593087, -1392106, 1186485, 4322348, 2618856, 286689, -130460, -4198868, -2961380, -2158758, --4479114, 5595269, 5106716, -8550206, -396211, -10910291, -25550224, 8809515, -10152766, 2801929, -949188, 17910014, -12312061, -10954851, -4544076, -5024575, -6555731, 13228499, -11689827, -16595754, -5010080, -30994094, 964757, -5850283, -13043816, 16648904, -1006633, -996969, 7074348, -6613713, -5334887, -1682554, -18432926, -20200842, -132607, 4262218, 11909407, 5718212, -1274532, -2126546, --11558831, -5505611, 11760157, -18261664, 25288230, 14982457, 3451543, 18654654, -12358232, -5314485, --11304891, -11630235, -4948876, 8534637, 23895588, 237834, -12205760, -2042257, 1255204, -1298691, --1176821, -7528541, 6518150, 5934034, 16149077, -254477, 18248242, 9395778, 5091147, -406948, -3977677, -27052388, 14401025, -3394635, -15749645, 11375221, 98247, 14959371, 6725919, -25050396, -19604916, 15284178, -13023951, 21228950, 8262980, 15882789, 6388764, -2116345, -755914, -577673, --2833605, -5441187, -1567126, 2435247, -5403606, -8316668, 210453, -5384279, -9754944, -5793374, --7270306, 4816269, -4413079, 5901285, 1687922, 6025302, 2934000, -510027, -3006477, 1161252, -712965, -293132, 976031, -1581622, -3949223, 2150705, -216896, 2595771, 2774549, 297427, -2372970, 1229434, 3975529, 3482145, -5788542, -3355443, -9680319, -7333120, -47755740, -3896072, -28542742, -5433134, 992137, 24598352, -5611912, 79994, 3178276, 6407018, -7311645, 6391985, --2416993, -8492224, 8145943, 9213779, -27844810, 3093987, -24763708, -890132, -12756590, -14290430, --2936147, -4446365, -13518946, 6633577, 2413235, 8423505, 11937862, -17206712, 21531744, 1260573, --19845434, 1427003, -13649943, -7192997, -14692546, -13741211, -5673115, 13952738, -12042015, 6532646, -14511621, -8820252, -15130633, -14334453, -20517058, -22536230, -12932147, -6576132, 1915019, -3598109, -6327024, 4002910, -13050258, -1193464, 15064061, 8322036, -21807160, 8408472, -1487669, -6351720, --20189568, 13528073, -7123740, 18757196, 24199994, 401579, 23028004, -12795781, 13437342, -10120554, -14436996, 17907330, 1766842, -24103356, -541703, -32810866, 10748693, 6825777, 13138842, 5909338, --12566001, -11331734, -2684, -7676717, 7578470, -8286066, -61203, -734439, -7792682, -6507413, -5725729, -3374771, -8837969, -1098975, 3054796, 6520297, 3860639, 14418742, -1280437, 997506, --4118337, 10042170, -1205275, -2466922, 9273371, -736050, 1608465, 1906429, 12421582, -2194728, --4678293, 1020592, 8669928, 7694434, -7713762, -1017907, 5829881, -9498857, 5462662, -1735704, -6922951, 150861, -7575786, -22575958, 18204218, -43256764, -2794950, -3952981, -3853660, 4215511, --25177636, 1924682, -5150203, -1960116, 11150272, 4648765, 13008919, -10074920, 9131637, -4729833, --22411140, -8778376, -16519518, -9968619, 10473815, -19213000, 2278480, -7031399, -14918032, -2480881, -14072460, -19111530, -18772228, 7705708, 10855530, -498753, -9025337, 10496900, 10695005, 13541495, -11295227, 4907000, 15560130, 18875844, -10362145, 2917357, -9175124, 23646480, -2198487, -16196859, -19347218, 8707509, 4423280, -9242770, -12694313, 2978560, 7171522, 7598334, -973347, -10178536, -7476465, -11869142, 20938, -11716134, 36048196, 5674726, -10790032, 29931090, -3995930, 9190693, --8086887, 15051713, 21961242, -13817984, 20957830, 22655952, 29171418, 22711788, 1750199, 16870632, --13575318, -2583960, 2789581, -7299834, 12651900, 598074, -1236414, -1294933, -4200478, 6356015, -2798171, 17894982, -6287296, 6605660, -4364224, 100932, 2938295, 5260798, -7985955, 2760053, -7041599, -3281355, -8925479, -1676111, -14049912, 4662724, 3755949, 3641059, -4065724, 2202245, -6636262, 3970697, -2226404, 6789270, 2563022, -4520990, -2793876, -1495722, 10657961, 14487462, -7207492, 3288871, 2067490, 4902705, 8088497, -5869610, -2901787, 3824132, -1495186, 705985, -3396782, 44707924, 11780558, -7710540, -6438156, 10326175, 3099356, 4356171, -944893, -17978734, -15176804, -40944460, 4631049, 8897025, -1645509, -7548942, -15502684, -7277285, 2043331, 12037183, -18706194, -11051488, -23617488, -19315004, -2560874, 623844, -13852343, 28754270, -13282723, -8898098, -12077985, -4140885, 2312303, -2674154, 24917790, 4042638, -24645060, 9741523, 3313567, 17082696, --5963562, 1769527, -10095858, 8440148, 3947075, 21558052, -5110474, 9678172, 10434623, -13178570, --14264123, 934692, 13307956, -25577604, -29979408, -8964670, -12218108, -1722282, -4211753, 2903935, -6995428, -6206228, 1192390, -34900904, -29406568, 23416698, 25132538, -30243550, -23015120, -29111826, --15033996, -12110734, 15190762, -15937550, -27828166, 724239, 1355062, -17214228, -3500398, 24270860, --3532611, 1257352, 7976291, -346819, 1530619, -1171452, -8494372, -10799158, -447213, -3134253, -7137699, -1225139, -553514, -7844221, 4002373, -12082280, -170188, 3568581, 4086125, 5669894, -6631967, 1118302, 3797288, -2761127, 712428, -6196564, 2309619, 521839, -6807523, 6973953, -7141994, -11181947, 758062, 8003672, 6753299, 12420509, -2534031, -14635638, 4096862, 4660040, --7130720, 4525285, -7952132, -3855270, -1209570, -2621541, -6766184, 2374043, -24939264, -3034931, --6041409, 7509751, -11818139, -3206193, -38778184, 34339336, 22052510, -3717294, 47071232, -4613869, --25831008, -2369748, 10558103, -15950435, -21071110, -4415764, -14388140, -665720, 3990025, -21625160, -31738198, 1069984, 3399467, -19950124, -5771899, 2163053, -5724655, 5103495, 7211787, 26112328, -4654671, -1323924, 21071110, 17413944, -6190659, 10274099, -13348221, 3767760, 11774653, 11481521, -29485488, -29169808, 17906256, 54130548, 365609, 8893804, 18488760, 2124398, 3651796, 8751533, -6707665, -18080738, -21590800, -7831873, 17301738, 5174362, -22437982, -12130598, -1019518, -10756209, -19880330, 1833414, 15343234, -34166464, -21211232, 9967545, 23393076, 14359149, 9396315, 32494648, -18931678, -13644574, 22332220, -16863652, -3486977, -2423972, 12528420, -2651069, -14024679, 12131135, -5219996, 1160178, -16080358, 11094974, -311922, 215285, -7219303, 9350144, -7703561, -6159520, --5927592, 4456029, -6185290, -11735461, 3853660, 823023, -169114, -6388227, -1332514, -7999914, --6942278, -6398965, -4132296, -2470680, -3106872, -2436857, 1027571, 226560, -15260556, 10179072, -3900367, -4792647, -11326366, -15976205, -506269, -8704288, -5985037, 5767068, -4336307, 9893457, -4807679, -3492882, 1596654, 9252433, -4294431, -1545115, -4582193, 7795903, 1704028, 3235721, --8036958, 15736760, -44826572, 674310, -28991, -1732482, -5452461, 20777442, 1932198, -12411919, --22352084, 22603876, -20075214, 236760, 14943265, 11532524, -15738371, -4573067, -25497610, -407485, -7593502, 8684424, 10638634, 2445447, -16537772, -21184390, 17391396, 8572218, 8763344, 3067681, -8908836, 2310693, 12852690, -22829362, -37933152, 10271414, -5566278, -8424041, 21458730, -4034585, --11154567, 18497888, 17919140, 14420890, -1181116, -9903121, -16227997, -4554276, -21523154, 50678468, --4179540, 18043158, 4108673, -17259326, 14069776, -6804839, -16072841, 15602006, 12806519, -28385438, -19720880, -3326452, 27292370, -27788976, -20562692, 27342836, -980326, -22759568, 23047332, -8749922, -39257612, -16954920, -13289166, -23967528, 15143518, 2415919, -19064286, 7301445, -24823838, -18595598, -1791538, 15826954, -14176613, -9137006, -28219546, -26084948, 30324080, -3860639, 13300977, 20789252, -28780038, -246424, -2743947, -2609193, 7715909, 11103564, 2302103, 4879620, 17785460, 7326141, -9874130, 5362267, 4583267, -3857954, -1472100, 10436234, 8427263, 13801341, -6562710, 8951249, -10060961, -15942382, 4128537, 3475702, -8285529, -4758287, 148713, 3468723, -6699075, 10738492, -790274, -3032784, -3016678, 9035537, 534187, 2499671, 1041530, 2194728, 2328409, -9161165, --4146254, 6160057, -5499706, -12939126, 33475512, -7656316, 22681722, -35447440, -6193343, -844498, --42237244, -9315247, 6155762, 20748988, -10366440, -9931038, 959925, -3275986, 29715268, -2837363, --14875619, 31460636, -3857954, -1628330, 5987722, -12571906, 27250494, 1801739, -5494337, 13037910, -11222750, -14830522, -5025112, -6870874, 21244518, -42309724, -654446, -8184060, -14867029, 7278359, --15113990, 24680492, -6382322, -30465814, -3080565, 46389940, -28023588, 20356534, -31249646, -8970576, -31307628, 22864796, -16729971, 7980586, -20422570, -26917096, 5859409, -11795054, 11882564, 3476239, --1764158, 4673998, -39398808, -15369004, -20019380, -28798830, 13557064, -10870562, -7907035, -15916612, --27941446, -23505820, 18647138, -3580392, 57854820, 10240276, 5481452, 20735028, 36448168, 4882841, --26022134, 31981400, 24259586, -20217484, 5555540, -5010616, -20114406, -15829639, -13533979, -1412507, --12336757, 4868883, 8675834, 3133716, -9566503, 17123498, 2827162, 8005819, -2132451, -2781528, -8223252, 5101885, -7929047, -7118372, -6823630, 7975218, 3908957, 9602473, 10171556, 590558, --5137318, 7777112, -4102231, 16448114, 7908109, -19271518, -3630321, -14150843, 1964411, -4478577, --6722161, 20562156, -857920, -6088653, 5440113, 6622303, -7166153, -1251983, -9943386, 4778688, -7607461, -1163936, -2967286, 9713605, 22195854, -13040594, -17223892, 19311246, -30534534, -3309809, --6471979, 2032593, 21121038, -13726715, 23465016, 10398116, 5162551, 7325067, -38888780, 26517128, -4685273, -26946624, 10427107, -28598040, 4704063, 38954816, -5018670, -22666154, -24600498, 10656888, -17369384, 14444512, 7356742, -25285546, -17696876, -7664906, -4949950, 33309082, -21138218, -12317966, -49032956, -27118960, -2306398, 19755238, -99858, 20797306, -3191698, -16343961, -11300059, -29896730, -15204721, 21664888, -32328756, 48302276, 15827491, -36018668, -33239826, -31299038, -37956236, -30332132, -1408749, 15321222, 2803540, -25239912, -9797357, 17219060, -613643, -15733539, 17401596, -34057480, -2032056, -7677254, -31831076, -29361470, 4978404, -11559368, 22222160, -40800040, -5657546, -14323716, --30165166, 2250026, 48206712, 12592844, -21529598, 10582263, -26474178, 10877005, -10832981, 1115618, -1315334, 13869523, -1596117, 4859756, 17099876, 355409, -9669045, -4221953, 13688061, 9946071, -6240588, 3543348, -27249956, -2600603, 1937030, 15354508, 7485055, -13910325, -376347, 1759863, -23593866, 1467805, 7506529, -7187628, -4772246, 3632469, 7634841, -841814, -7094749, -13176960, -1858110, -4919348, -9291088, 4649839, -6506876, -6461242, 9091372, -7264937, -10698227, -14583561, --13064217, -2308008, 3747896, 136902, -11365020, 23485954, -58794344, -54376972, -47129748, -30462592, -12326556, -12874164, 60627220, 16004659, -6460705, -13909252, -7647190, 17150878, -39416524, 46153180, -61091076, 24266028, -3668439, 48269528, -15299210, 29185376, 55529632, -10148471, 3090766, 10380399, -73896520, -18750216, -4626754, 43879532, 16692927, 14094472, -12064563, -45038636, 3150896, -35699768, -17073568, -44231720, -51726440, -638340, -2913062, -36166844, -1861868, -17599702, -36998460, -29633126, --48290464, -2321430, 49409304, -15764141, -9392020, -45519136, -24320252, -16776679, -15548855, 15380278, --11084774, 82144472, -19377282, -1157494, -29926258, 61991412, 51029044, -36051956, 41518376, -14514842, --60149408, -10787884, -5698348, 12658879, -13906567, -13694503, -7468412, -24445880, 7179038, 30210264, --35611720, -5096516, 10466835, 6251862, -41362684, 26986890, 19204946, 62299036, -26380762, 17095580, -26506390, -1557463, 7477538, -797790, 9366250, -6897718, 20527796, 8585103, 16726213, 13999446, -1637456, 14422500, 5000416, -5335423, 15697032, -853625, 3133716, 1716913, 11188927, 7876433, --10514617, -8660802, -13493714, 21721798, -13923747, 3321084, 14013405, 5703717, 24837260, 20786032, -36672580, 24671902, 21223580, 1553168, 14303852, -18670760, 18236968, 13101261, -3263638, -17913234, --33101850, -13095892, 10963441, -18771692, -6029061, -13547401, -32282584, -28696288, -12540231, -21267068, --11651173, -18241800, -22384832, -24683714, -6502044, -6825777, -9855339, -17978734, -18128520, 24444270, -104953432, 11767674, -65037616, -16661252, -22679574, 4643934, 33114198, 58265528, 17264158, -49568216, --425739, 33724084, 7929584, 421444, -991601, 8582418, -4156992, -6273874, 41044320, 25095494, -23182086, -34687228, -21759914, 23175106, 9645423, 13594108, -11350525, 4088809, 45713484, 851477, -38860864, 19906100, 21485038, 37201932, 6041409, -20019380, 5225365, -22887344, 6340983, 15684684, -4669703, 61005180, -19757924, -39534100, -37337760, 47114180, 22441204, 25057912, 17859010, -27133992, --33286534, -20758650, -492311, 10232223, -6746857, 16629576, 31976568, -2180770, 23379118, 20604032, --31012348, -6279779, 9720048, -14847165, -12721693, -15572478, -51592756, -8804683, 23312008, 2042257, -46339476, 30493194, -21446920, 16227460, 944893, -15087683, -12125766, -25182466, -55802364, -30015916, -3002719, 1165547, -11812234, -3214246, -5180805, 18264348, 19568944, 9977209, -2733210, 1599339, -15002321, -6864432, 9672266, -25213068, -11409581, -3072512, 14328548, -3242700, 6062883, 9237938, -9476308, 1493575, 25068650, -19237696, -17025788, -17425220, 13370233, -11149198, -17823040, -17786534, -13514651, -5600101, -12831752, -6542846, 10294500, 2949569, 14779519, -23283554, -15073725, -2231773, --990527, 5294621, 11579769, -4631586, -8906688, 16627429, -7861938, -9318468, -8329552, 16182363, --3675418, -7420630, 4983236, -156229, -8071318, 1010928, -10945724, -6163815, -4802847, 316217, --3374771, 3669513, -2793339, 2523830, -1095217, 3383897, -6021544, 2586644, -2631741, 3051038, --4184909, 3944391, -6660421, -5881421, -25411174, 2840584, 82349016, 21170968, 34595960, -17229262, --75185016, -38147900, -55374476, -18682034, 37109056, 85262080, 37982008, 9449465, -40638444, -38254200, -26800596, 42398844, 20957830, 51498804, -2276870, -33743948, -49428096, -24045374, -7713762, 38254736, -4591320, 22102976, 19614042, 3311957, 51043540, 35850092, -4056060, -4917738, -47267188, -11503533, --1119376, 957241, 26897232, 48240000, 29415694, 23155242, 45187352, 26154740, -47141024, -37813964, --11926050, -29640106, 31307090, 21340618, 46377592, 36216776, 41010496, 12163884, 7165079, -33779380, --35443680, -33171106, 11596949, 16896402, -191663, -4501663, 73222216, 18569828, -5143224, -6923488, -50109384, -53500796, 11167452, -101871792, -22874458, 25500294, -35729832, 33272038, 18735722, 528281, -73136312, 34744676, -41660108, -82677048, -39875012, -37442988, -20441360, -13904957, -10781442, 36168456, -22868016, 48785996, 5771899, -35888748, -24831354, -37659884, -35161824, -34843996, 15308337, 3282429, -15139223, 20804284, -9903121, 19241990, 10084046, -13412646, -1667521, -14860587, -4883915, -32129040, --34109020, -12729209, -14870251, 587337, -31959926, 16979080, -2374580, 5905580, 8857296, -21290690, --44185012, -39924944, -2216740, 8752606, 9065602, 26242250, 6464463, -13187697, -24899000, 8244727, -5826660, -118897576, -72671920, -39620536, 35030292, 10004589, 162220912, 173107584, 105195024, 191960336, -156860800, 166039136, 114993456, 140487840, 113949240, 2132988, -54354420, -77442016, -74491912, -155588416, --186796720, -195092976, -136268032, -107092328, -42184096, 7495255, -55185496, 33758980, -69548408, -25094958, --4786204, -21454436, 16460462, -63753420, 87706456, 15042049, 79955112, 51446192, 29886530, 20960514, -44235480, 28907814, 45368276, 104502456, 99227704, 79223360, 96973384, 122803312, 111686328, 105432320, -193216080, 67902360, 135947520, 177297328, 121739240, 161067184, 85433344, 114815752, 89635432, 107793480, -116473608, 43298104, 75413184, 57360900, 70583496, 68472520, 18655728, -13179644, -74035576, -27205934, --98775656, -86102816, -146102976, -165154384, -166577088, -351179616, -297622976, -319242240, -317061472, -369621120, --374219968, -230485664, -268580960, -199622032, -236978576, -179799680, -170652480, -148185504, -149100320, -85328112, --37919728, -54152560, -55202676, -44676788, 8507256, 71534288, 37153616, 148728272, 127667904, 187929520, -192691568, 178250800, 222058944, 206208896, 238320224, 186738736, 228009072, 242057920, 270083648, 236674704, -141070352, 141555680, 140898016, 143583440, 132002600, 93261992, 86850144, 36521716, 25468620, -2702071, -4138738, 18002356, -48973900, -71785544, -78185048, -47844324, -42722576, -80002896, -93439160, -108674480, --79120280, -100603704, -93316752, -78420200, -84495432, -85924040, -86137176, -22252226, -20294794, -10461467, --19361176, 11321534, -2672007, -1993402, -18178986, -6362994, 6412386, 11666205, 4030290, 16151225, -11121818, 19476602, 642098, 3317325, -2473364, 8277476, -2481954, 4155918, -3249143, 3853123, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +-4174171, -6163278, 2082522, -3011846, -6083821, -3896609, 2767570, -7686381, -4258997, -9400610, +3266860, 4199405, 5347235, 2915209, -3289945, 7120519, -4875325, 1437203, 149250, -1025960, +-5151814, -2640331, -5666136, 219580, -2408403, 3170760, 2100776, -2705830, -863825, -620086, +-5200669, -219580, -1155883, 2308545, -92342, 4701379, -1673964, 5949067, -2576981, 73014, +958315, -4350265, 3022046, -1337882, -1668595, 486942, -1175747, 2273112, -9109626, 4215511, +5487895, 760746, 3119757, 1662689, -4031364, -573378, -4374961, 5931350, -1574642, -3770981, +3605088, -5532992, 245887, 2059974, -6214281, 675384, -1447941, -2442763, 2155537, 389231, +586263, -3024194, -1861332, -10088341, -1197759, 2073396, -1568737, 390842, 1290101, 5232344, +4606353, 168041, 1570884, 541166, -780610, -845572, -1255741, -816044, -338229, -1125818, +-827318, -146029, 1069447, 539555, 754841, -1654636, 98784, -159988, -329639, -216896, +477815, -331786, 163209, -856309, -481573, -776852, 81068, -736587, 1043140, -14274324, +-8556112, 1568200, -4616016, 865973, -4762582, -8206609, -5439576, 9281424, 5425081, -1457068, +6311992, 1466195, 1562294, 1750736, -3036542, -846645, 5133560, -4137664, 2339684, 3718368, +-3979287, -6334003, 2910914, -5180268, 590558, 2944737, 7602092, -1724966, -3641596, -3215320, +1198296, 4111894, -5587753, -60666, 4628901, 1802276, 503585, -318901, -413391, 5976447, +-209917, 5473936, 3625489, -1406602, 3612604, -1278290, -307627, -573915, -9998147, 3454228, +5682242, -3290482, -1847910, 1367410, 1561221, 1595044, 905164, -557809, -1188632, 325881, +-2499134, 6846178, -3054796, 784905, 3746822, 2964601, -2430952, 2695629, 878321, 1751810, +3784940, 3308199, -4953708, 5140002, 5732171, -1948841, 119722, -372052, 3752191, -4575751, +-2351495, 992137, 676994, 165356, 271120, -980326, -1509144, 909996, -700080, -399432, +292058, 1300838, -943282, -235149, 56908, -1796370, 638876, -1067299, -1071594, -865973, +699006, 92342, -485331, -1074279, 284542, -5602785, 7177427, 4774930, 11129871, -1809255, +1154809, 3468186, -5476620, -1081258, 2120103, -2199560, -7422777, -394600, 750546, 4994510, +-6004901, -14516989, -11801496, -7199439, 2754685, 6963216, -7014756, 3959423, -3464428, 5388037, +4108673, 3663607, 6363531, 3608846, -5077188, -4605279, 819802, 3464965, -316754, 327491, +8917963, -36507, 1507534, 4499515, 4658966, 814433, 77309, 11123428, -834834, -4136054, +-1312649, 2549063, 3175055, -2123325, 5901285, 1196685, 3138547, -4241280, -3845606, -1431835, +-2565169, 1468879, -2049236, 6517613, -7562901, -6669548, 8036421, -829466, -409096, -9402220, +2857227, -4551055, 5011690, -3903052, -10509248, -462783, 5293547, -4452808, 6862821, -4160750, +3117610, 6496138, -1914482, 2724083, 6444062, -416612, -4902169, 413391, 3103114, 1486059, +-2419677, 4502200, 209917, 2376191, 802085, 650151, 1609002, 311922, -773094, -45634, +139586, 687732, -1912334, -923955, -1046361, 1724429, 106300, 1756105, 1727651, -1708323, +312996, 439160, -1090385, -738198, -460635, 321049, -1003949, 351650, 17353278, 4138201, +4598836, 2032056, -4012036, 8388608, -3986804, -2322504, 10583336, -758062, 8504572, -860604, +-9800578, 3495030, -3346853, 10814728, 5638219, -710817, -9679783, -6705518, 8878771, 10609643, +-12370043, 6222871, 4913980, 3757560, -839666, 1238561, 996432, -896574, 12184822, -515396, +-2126546, -3329137, -4131222, -5189931, -1757715, -238908, -7074348, -2467996, 1803886, -4866735, +239444, 321049, 7277822, -2703682, 195421, 3439732, 255014, 7027640, 3121904, 7305203, +3560528, 2251100, -7718593, 845572, -5727876, -5287105, 1241246, 7448010, -322123, 6401649, +-2700461, -4776004, -1149978, 341450, 1841467, 4406100, -2051921, -4832, -2422362, 2476049, +1640141, -6233608, 1188632, 1334661, 801548, -1731409, 6527277, -663572, -1312113, 734439, +3047279, 1382443, -2183991, -666257, -902480, -1546725, 1258425, -1855426, 3064459, -1837709, +-396748, 404264, -1491427, -392453, 1691680, -1998770, -490700, -2154463, 819802, 936840, +1728188, -2356863, 446677, -950798, 1178969, -790274, -2876554, -894427, 4908611, 3436511, +3948686, 11185169, 5856188, -4855461, -4336843, -12039867, -777389, -266825, -6420439, 2443837, +9667971, 1173063, -7606387, 7071664, 6724308, -697395, 2692945, 6811818, 1621350, -6181532, +-945967, 14430016, 7105487, 1497333, -9506373, -3400004, 8691940, 2993055, -1285269, 4895189, +4381941, 4584341, -24696, 8961986, -68183, -1139240, 2269890, -4438849, -5814312, -284542, +1000727, 3339337, 1843615, -5435281, 5546951, 9720048, 4999879, -254477, 7226820, -8196408, +4699768, -4877472, 5162551, -1357210, -5888400, -286152, -7676181, -12582644, -4578972, -4990215, +-593779, -37044, -6574521, 1296006, -2005750, 3843996, 2546916, 4549981, -700080, 1843078, +-6327561, 1120987, 1030255, 8871255, -3394635, -257161, -3047279, 1891933, 7986492, 4114579, +-4595615, -7369090, 2365453, -2932389, -985695, 3874061, -514859, 1320166, 935229, -4374961, +241592, -3330747, 987306, -3161633, -2116345, -1131724, -99858, -397821, 616328, -2011118, +-176094, -654446, -1593433, -1341104, 529355, -322123, -805843, 256087, 797790, 2487323, +-825171, 1472637, -1016834, -2424509, 1872606, -2655364, 2639258, -200253, -1694365, -249645, +-11778948, -7809861, 16695612, -3662533, -3646964, 968515, -571231, 17875118, -5214627, -9660455, +249645, -9529996, 2387465, 7582765, 8176544, 2571612, -16586627, 13637595, -10727755, 5698885, +-7329362, -5589900, -4096862, 6805913, 7340636, -10991895, 883690, 4790499, -3395172, 2193118, +3238405, -3977140, 521839, -9053254, -6066105, -13969918, 8282845, -1959042, 14090714, -6563247, +3068754, 9395241, -2335389, -2796561, -4148402, 10769630, 7879118, -13232257, 3787088, -7485591, +-2499134, -2909304, -7416872, 4459787, 2379412, 11647414, 8211978, -14636175, -2386391, -6287832, +8561480, 2973728, 747324, -8540542, 1290638, -899796, 7196755, -1202054, 911070, -9821516, +-213138, 6971806, -6419903, 1078574, -2018635, -1917703, -5186710, 1044751, -673773, 12360916, +5461051, 5653251, -2253784, -1381369, -2138894, -3367791, -1797981, 2757906, -3774740, -1203665, +-3702799, 2806224, 2363843, -2018098, -1128503, 2609730, -3486977, 1733556, 538482, -938450, +-1103807, 938450, -91268, -315680, -664646, 2283312, -3365644, 450435, 308164, 1710471, +1851131, 1851668, -1707250, 510027, -1204202, 2473364, 578747, 1813550, 4061429, -4477504, +297427, -9448391, -1192927, -10904385, 1695975, -2729452, 6250251, -438624, 5300527, -7470559, +-14081050, 2986613, 9452149, 1236951, -1155883, 7382512, 4953708, -11505681, -200253, -4338454, +14548128, -649077, 1679332, 1142461, 131533, -457951, -5243618, 11540040, -999654, -16364899, +-3091840, 9912785, -6409165, 1650341, -281857, 1321776, -2070711, 1575179, -3033321, 3906273, +-6299644, 5905580, 8267275, -6505802, -1683090, -3853660, -11420318, 4555350, -8116952, 7034083, +-7138773, -12302397, -3389266, 7299834, -2313377, -4400194, 4853313, 6749004, 3833258, 7397008, +12636331, 10195715, -692027, 1976759, 1692754, -6808060, 1260036, -7118909, -7783018, 4216048, +-5946919, 1911261, -389768, 4444218, 4487167, -5890548, 6788196, -1881733, -2843805, -1272921, +4759361, -896574, -4480725, -3038153, -6327561, 7166153, -3651259, -958315, 1189169, -312996, +-2710661, -2281165, 431644, 934692, 261993, -1272384, 1604707, 1202591, -1467268, 111669, +1010928, 635118, -918049, -39192, -1213865, 432181, -1994476, -1800128, 1032940, 534187, +2326799, 2595771, 159451, 1779190, -42413, -16176457, -13372381, 7764227, 14508936, -77309, +-745177, 2673080, -6817187, -3430605, -16536698, -8936216, -4606353, -230318, -11996381, 17243220, +3554086, 9562745, -10925323, -13245679, -9793062, -3934190, 2751464, -15025943, -6577743, 6846178, +-2848100, -18260054, -6048925, 2371359, 311922, 11199664, 3913252, -3622805, -8500814, 10649908, +-6104759, -705448, 8209293, 2314451, -8681203, -4598836, -558883, -14795089, 3832185, 11369315, +-4855461, -6391985, 1797444, -7522635, -2622078, 1408212, -4618164, -3700114, 4010426, -5622649, +-11608760, 5737540, -6562710, -8822400, -11897059, -6078453, 1334124, -4866735, 2136209, 14739254, +8497056, -1858647, 14246943, 14273250, -6063420, 1940788, 4122095, -7474317, -4674535, -15771120, +1765768, -5082557, -12565464, -172336, 6842957, 11788611, 7431904, 3433826, 1472637, -10723460, +-1186485, -2473364, 2955474, -4075387, -311385, 219580, 4295, 2544768, 658204, -994822, +2456185, -974958, -3206193, 2689187, -2094333, -3042984, 624918, 1092532, 1180042, 223875, +3449396, -348429, 2269353, 1218160, 420907, 652298, 153008, -2560338, 748398, -3514894, +989453, -5608691, -1218697, -250182, -3516505, -4392678, -396748, -4341138, -627602, -923955, +-10186052, 26036092, -971200, 15943992, -7992398, -22892712, 6580964, 1925219, -845035, -10753524, +-991601, -7096360, 18153216, 13214004, 11900281, 8619999, -14131516, -122943, 2006824, 12559021, +-21482890, -2483028, -5215701, -6333466, 3292093, -7135015, 2822331, 4758824, 3623879, 3795141, +5049808, -1537061, -2062121, -10514080, -2437394, -1639067, 10345502, -40265, -9358734, -2254321, +11252814, -1343251, 6571837, 8329552, -6008123, -3630321, -13815836, -8104604, 27215598, 7113540, +12145094, 6454799, 1634235, 981937, -17149268, 10161356, 1673964, 2955474, 8847096, 9544491, +14981920, -17213156, -7031399, -9569187, -1142998, 2344515, -2207076, -4851166, -2757369, -14440754, +-18041546, -11792906, -16904992, -2238215, -11027865, -19031536, -7968775, 6138582, 10466298, -3991098, +-16185584, -610422, -2393371, 3816079, -4407174, 1014149, 9398462, 399432, -627065, -609349, +1247151, 1614371, -2701535, -2509872, -6471442, -7345468, 3955665, -2034741, 3545496, 3131031, +-1134945, 2125472, 2932926, 5237176, 3786551, -2309619, 1210107, 6681896, 1344325, -6798933, +-5553393, -3080565, -1364726, 492311, -2334852, 3864397, 4330401, -1045825, 6509023, 836982, +-1756642, -1399623, 1546188, 35039952, 7927436, -5056250, -7277285, 1125818, -11251741, -21974664, +16168404, 70330, 10402948, -7872675, 7523172, 17985712, -1788317, 2004139, -4539781, 15652471, +13171591, 5109938, -21226266, 1529008, 3109556, 13103945, 19068044, -5641977, -3919695, -2533494, +5101348, 6802155, 5648956, -9662603, 4392678, -11137387, 8491150, 11345693, -5450314, -11267310, +7081864, -12259984, -11223286, -489626, 3228205, 15929497, 1899986, -2208150, 13562433, -2544768, +12177843, 22530324, 11275900, 230318, -14353781, -1391033, -8282845, -6716792, 14377403, 5599564, +-14559939, -202400, -11140608, -2849174, 19067508, 8752070, 2746632, 8143258, 11467026, 5927592, +-15445776, 7900056, 12810814, 4365298, -10570988, 4298189, 1176821, 2159295, -8284455, 12660490, +-3545496, -3100967, 15229417, 16145319, 2338073, 4558571, 17554606, 984084, 8639864, -6227166, +-242129, 10087804, 5820755, -4547297, 5179194, 9097278, -2535641, 16106, 11611444, 2351495, +4909685, -3513820, -5891622, -1831267, 3198677, 1633698, 2626373, 2695092, -1968169, -1888175, +-1576253, 834834, 3437585, 4161823, -2899103, -920734, 7210713, 999117, 9687836, -1821603, +2593087, -1392106, 1186485, 4322348, 2618856, 286689, -130460, -4198868, -2961380, -2158758, +-4479114, 5595269, 5106716, -8550206, -396211, -10910291, -25550224, 8809515, -10152766, 2801929, +949188, 17910014, -12312061, -10954851, -4544076, -5024575, -6555731, 13228499, -11689827, -16595754, +5010080, -30994094, 964757, -5850283, -13043816, 16648904, -1006633, -996969, 7074348, -6613713, +5334887, -1682554, -18432926, -20200842, -132607, 4262218, 11909407, 5718212, -1274532, -2126546, +-11558831, -5505611, 11760157, -18261664, 25288230, 14982457, 3451543, 18654654, -12358232, -5314485, +-11304891, -11630235, -4948876, 8534637, 23895588, 237834, -12205760, -2042257, 1255204, -1298691, +-1176821, -7528541, 6518150, 5934034, 16149077, -254477, 18248242, 9395778, 5091147, -406948, +3977677, -27052388, 14401025, -3394635, -15749645, 11375221, 98247, 14959371, 6725919, -25050396, +19604916, 15284178, -13023951, 21228950, 8262980, 15882789, 6388764, -2116345, -755914, -577673, +-2833605, -5441187, -1567126, 2435247, -5403606, -8316668, 210453, -5384279, -9754944, -5793374, +-7270306, 4816269, -4413079, 5901285, 1687922, 6025302, 2934000, -510027, -3006477, 1161252, +712965, -293132, 976031, -1581622, -3949223, 2150705, -216896, 2595771, 2774549, 297427, +2372970, 1229434, 3975529, 3482145, -5788542, -3355443, -9680319, -7333120, -47755740, -3896072, +28542742, -5433134, 992137, 24598352, -5611912, 79994, 3178276, 6407018, -7311645, 6391985, +-2416993, -8492224, 8145943, 9213779, -27844810, 3093987, -24763708, -890132, -12756590, -14290430, +-2936147, -4446365, -13518946, 6633577, 2413235, 8423505, 11937862, -17206712, 21531744, 1260573, +-19845434, 1427003, -13649943, -7192997, -14692546, -13741211, -5673115, 13952738, -12042015, 6532646, +14511621, -8820252, -15130633, -14334453, -20517058, -22536230, -12932147, -6576132, 1915019, -3598109, +6327024, 4002910, -13050258, -1193464, 15064061, 8322036, -21807160, 8408472, -1487669, -6351720, +-20189568, 13528073, -7123740, 18757196, 24199994, 401579, 23028004, -12795781, 13437342, -10120554, +14436996, 17907330, 1766842, -24103356, -541703, -32810866, 10748693, 6825777, 13138842, 5909338, +-12566001, -11331734, -2684, -7676717, 7578470, -8286066, -61203, -734439, -7792682, -6507413, +5725729, -3374771, -8837969, -1098975, 3054796, 6520297, 3860639, 14418742, -1280437, 997506, +-4118337, 10042170, -1205275, -2466922, 9273371, -736050, 1608465, 1906429, 12421582, -2194728, +-4678293, 1020592, 8669928, 7694434, -7713762, -1017907, 5829881, -9498857, 5462662, -1735704, +6922951, 150861, -7575786, -22575958, 18204218, -43256764, -2794950, -3952981, -3853660, 4215511, +-25177636, 1924682, -5150203, -1960116, 11150272, 4648765, 13008919, -10074920, 9131637, -4729833, +-22411140, -8778376, -16519518, -9968619, 10473815, -19213000, 2278480, -7031399, -14918032, -2480881, +14072460, -19111530, -18772228, 7705708, 10855530, -498753, -9025337, 10496900, 10695005, 13541495, +11295227, 4907000, 15560130, 18875844, -10362145, 2917357, -9175124, 23646480, -2198487, -16196859, +19347218, 8707509, 4423280, -9242770, -12694313, 2978560, 7171522, 7598334, -973347, -10178536, +7476465, -11869142, 20938, -11716134, 36048196, 5674726, -10790032, 29931090, -3995930, 9190693, +-8086887, 15051713, 21961242, -13817984, 20957830, 22655952, 29171418, 22711788, 1750199, 16870632, +-13575318, -2583960, 2789581, -7299834, 12651900, 598074, -1236414, -1294933, -4200478, 6356015, +2798171, 17894982, -6287296, 6605660, -4364224, 100932, 2938295, 5260798, -7985955, 2760053, +7041599, -3281355, -8925479, -1676111, -14049912, 4662724, 3755949, 3641059, -4065724, 2202245, +6636262, 3970697, -2226404, 6789270, 2563022, -4520990, -2793876, -1495722, 10657961, 14487462, +7207492, 3288871, 2067490, 4902705, 8088497, -5869610, -2901787, 3824132, -1495186, 705985, +3396782, 44707924, 11780558, -7710540, -6438156, 10326175, 3099356, 4356171, -944893, -17978734, +15176804, -40944460, 4631049, 8897025, -1645509, -7548942, -15502684, -7277285, 2043331, 12037183, +18706194, -11051488, -23617488, -19315004, -2560874, 623844, -13852343, 28754270, -13282723, -8898098, +12077985, -4140885, 2312303, -2674154, 24917790, 4042638, -24645060, 9741523, 3313567, 17082696, +-5963562, 1769527, -10095858, 8440148, 3947075, 21558052, -5110474, 9678172, 10434623, -13178570, +-14264123, 934692, 13307956, -25577604, -29979408, -8964670, -12218108, -1722282, -4211753, 2903935, +6995428, -6206228, 1192390, -34900904, -29406568, 23416698, 25132538, -30243550, -23015120, -29111826, +-15033996, -12110734, 15190762, -15937550, -27828166, 724239, 1355062, -17214228, -3500398, 24270860, +-3532611, 1257352, 7976291, -346819, 1530619, -1171452, -8494372, -10799158, -447213, -3134253, +7137699, -1225139, -553514, -7844221, 4002373, -12082280, -170188, 3568581, 4086125, 5669894, +6631967, 1118302, 3797288, -2761127, 712428, -6196564, 2309619, 521839, -6807523, 6973953, +7141994, -11181947, 758062, 8003672, 6753299, 12420509, -2534031, -14635638, 4096862, 4660040, +-7130720, 4525285, -7952132, -3855270, -1209570, -2621541, -6766184, 2374043, -24939264, -3034931, +-6041409, 7509751, -11818139, -3206193, -38778184, 34339336, 22052510, -3717294, 47071232, -4613869, +-25831008, -2369748, 10558103, -15950435, -21071110, -4415764, -14388140, -665720, 3990025, -21625160, +31738198, 1069984, 3399467, -19950124, -5771899, 2163053, -5724655, 5103495, 7211787, 26112328, +4654671, -1323924, 21071110, 17413944, -6190659, 10274099, -13348221, 3767760, 11774653, 11481521, +29485488, -29169808, 17906256, 54130548, 365609, 8893804, 18488760, 2124398, 3651796, 8751533, +6707665, -18080738, -21590800, -7831873, 17301738, 5174362, -22437982, -12130598, -1019518, -10756209, +19880330, 1833414, 15343234, -34166464, -21211232, 9967545, 23393076, 14359149, 9396315, 32494648, +18931678, -13644574, 22332220, -16863652, -3486977, -2423972, 12528420, -2651069, -14024679, 12131135, +5219996, 1160178, -16080358, 11094974, -311922, 215285, -7219303, 9350144, -7703561, -6159520, +-5927592, 4456029, -6185290, -11735461, 3853660, 823023, -169114, -6388227, -1332514, -7999914, +-6942278, -6398965, -4132296, -2470680, -3106872, -2436857, 1027571, 226560, -15260556, 10179072, +3900367, -4792647, -11326366, -15976205, -506269, -8704288, -5985037, 5767068, -4336307, 9893457, +4807679, -3492882, 1596654, 9252433, -4294431, -1545115, -4582193, 7795903, 1704028, 3235721, +-8036958, 15736760, -44826572, 674310, -28991, -1732482, -5452461, 20777442, 1932198, -12411919, +-22352084, 22603876, -20075214, 236760, 14943265, 11532524, -15738371, -4573067, -25497610, -407485, +7593502, 8684424, 10638634, 2445447, -16537772, -21184390, 17391396, 8572218, 8763344, 3067681, +8908836, 2310693, 12852690, -22829362, -37933152, 10271414, -5566278, -8424041, 21458730, -4034585, +-11154567, 18497888, 17919140, 14420890, -1181116, -9903121, -16227997, -4554276, -21523154, 50678468, +-4179540, 18043158, 4108673, -17259326, 14069776, -6804839, -16072841, 15602006, 12806519, -28385438, +19720880, -3326452, 27292370, -27788976, -20562692, 27342836, -980326, -22759568, 23047332, -8749922, +39257612, -16954920, -13289166, -23967528, 15143518, 2415919, -19064286, 7301445, -24823838, -18595598, +1791538, 15826954, -14176613, -9137006, -28219546, -26084948, 30324080, -3860639, 13300977, 20789252, +28780038, -246424, -2743947, -2609193, 7715909, 11103564, 2302103, 4879620, 17785460, 7326141, +9874130, 5362267, 4583267, -3857954, -1472100, 10436234, 8427263, 13801341, -6562710, 8951249, +10060961, -15942382, 4128537, 3475702, -8285529, -4758287, 148713, 3468723, -6699075, 10738492, +790274, -3032784, -3016678, 9035537, 534187, 2499671, 1041530, 2194728, 2328409, -9161165, +-4146254, 6160057, -5499706, -12939126, 33475512, -7656316, 22681722, -35447440, -6193343, -844498, +-42237244, -9315247, 6155762, 20748988, -10366440, -9931038, 959925, -3275986, 29715268, -2837363, +-14875619, 31460636, -3857954, -1628330, 5987722, -12571906, 27250494, 1801739, -5494337, 13037910, +11222750, -14830522, -5025112, -6870874, 21244518, -42309724, -654446, -8184060, -14867029, 7278359, +-15113990, 24680492, -6382322, -30465814, -3080565, 46389940, -28023588, 20356534, -31249646, -8970576, +31307628, 22864796, -16729971, 7980586, -20422570, -26917096, 5859409, -11795054, 11882564, 3476239, +-1764158, 4673998, -39398808, -15369004, -20019380, -28798830, 13557064, -10870562, -7907035, -15916612, +-27941446, -23505820, 18647138, -3580392, 57854820, 10240276, 5481452, 20735028, 36448168, 4882841, +-26022134, 31981400, 24259586, -20217484, 5555540, -5010616, -20114406, -15829639, -13533979, -1412507, +-12336757, 4868883, 8675834, 3133716, -9566503, 17123498, 2827162, 8005819, -2132451, -2781528, +8223252, 5101885, -7929047, -7118372, -6823630, 7975218, 3908957, 9602473, 10171556, 590558, +-5137318, 7777112, -4102231, 16448114, 7908109, -19271518, -3630321, -14150843, 1964411, -4478577, +-6722161, 20562156, -857920, -6088653, 5440113, 6622303, -7166153, -1251983, -9943386, 4778688, +7607461, -1163936, -2967286, 9713605, 22195854, -13040594, -17223892, 19311246, -30534534, -3309809, +-6471979, 2032593, 21121038, -13726715, 23465016, 10398116, 5162551, 7325067, -38888780, 26517128, +4685273, -26946624, 10427107, -28598040, 4704063, 38954816, -5018670, -22666154, -24600498, 10656888, +17369384, 14444512, 7356742, -25285546, -17696876, -7664906, -4949950, 33309082, -21138218, -12317966, +49032956, -27118960, -2306398, 19755238, -99858, 20797306, -3191698, -16343961, -11300059, -29896730, +15204721, 21664888, -32328756, 48302276, 15827491, -36018668, -33239826, -31299038, -37956236, -30332132, +1408749, 15321222, 2803540, -25239912, -9797357, 17219060, -613643, -15733539, 17401596, -34057480, +2032056, -7677254, -31831076, -29361470, 4978404, -11559368, 22222160, -40800040, -5657546, -14323716, +-30165166, 2250026, 48206712, 12592844, -21529598, 10582263, -26474178, 10877005, -10832981, 1115618, +1315334, 13869523, -1596117, 4859756, 17099876, 355409, -9669045, -4221953, 13688061, 9946071, +6240588, 3543348, -27249956, -2600603, 1937030, 15354508, 7485055, -13910325, -376347, 1759863, +23593866, 1467805, 7506529, -7187628, -4772246, 3632469, 7634841, -841814, -7094749, -13176960, +1858110, -4919348, -9291088, 4649839, -6506876, -6461242, 9091372, -7264937, -10698227, -14583561, +-13064217, -2308008, 3747896, 136902, -11365020, 23485954, -58794344, -54376972, -47129748, -30462592, +12326556, -12874164, 60627220, 16004659, -6460705, -13909252, -7647190, 17150878, -39416524, 46153180, +61091076, 24266028, -3668439, 48269528, -15299210, 29185376, 55529632, -10148471, 3090766, 10380399, +73896520, -18750216, -4626754, 43879532, 16692927, 14094472, -12064563, -45038636, 3150896, -35699768, +17073568, -44231720, -51726440, -638340, -2913062, -36166844, -1861868, -17599702, -36998460, -29633126, +-48290464, -2321430, 49409304, -15764141, -9392020, -45519136, -24320252, -16776679, -15548855, 15380278, +-11084774, 82144472, -19377282, -1157494, -29926258, 61991412, 51029044, -36051956, 41518376, -14514842, +-60149408, -10787884, -5698348, 12658879, -13906567, -13694503, -7468412, -24445880, 7179038, 30210264, +-35611720, -5096516, 10466835, 6251862, -41362684, 26986890, 19204946, 62299036, -26380762, 17095580, +26506390, -1557463, 7477538, -797790, 9366250, -6897718, 20527796, 8585103, 16726213, 13999446, +1637456, 14422500, 5000416, -5335423, 15697032, -853625, 3133716, 1716913, 11188927, 7876433, +-10514617, -8660802, -13493714, 21721798, -13923747, 3321084, 14013405, 5703717, 24837260, 20786032, +36672580, 24671902, 21223580, 1553168, 14303852, -18670760, 18236968, 13101261, -3263638, -17913234, +-33101850, -13095892, 10963441, -18771692, -6029061, -13547401, -32282584, -28696288, -12540231, -21267068, +-11651173, -18241800, -22384832, -24683714, -6502044, -6825777, -9855339, -17978734, -18128520, 24444270, +104953432, 11767674, -65037616, -16661252, -22679574, 4643934, 33114198, 58265528, 17264158, -49568216, +-425739, 33724084, 7929584, 421444, -991601, 8582418, -4156992, -6273874, 41044320, 25095494, +23182086, -34687228, -21759914, 23175106, 9645423, 13594108, -11350525, 4088809, 45713484, 851477, +38860864, 19906100, 21485038, 37201932, 6041409, -20019380, 5225365, -22887344, 6340983, 15684684, +4669703, 61005180, -19757924, -39534100, -37337760, 47114180, 22441204, 25057912, 17859010, -27133992, +-33286534, -20758650, -492311, 10232223, -6746857, 16629576, 31976568, -2180770, 23379118, 20604032, +-31012348, -6279779, 9720048, -14847165, -12721693, -15572478, -51592756, -8804683, 23312008, 2042257, +46339476, 30493194, -21446920, 16227460, 944893, -15087683, -12125766, -25182466, -55802364, -30015916, +3002719, 1165547, -11812234, -3214246, -5180805, 18264348, 19568944, 9977209, -2733210, 1599339, +15002321, -6864432, 9672266, -25213068, -11409581, -3072512, 14328548, -3242700, 6062883, 9237938, +9476308, 1493575, 25068650, -19237696, -17025788, -17425220, 13370233, -11149198, -17823040, -17786534, +13514651, -5600101, -12831752, -6542846, 10294500, 2949569, 14779519, -23283554, -15073725, -2231773, +-990527, 5294621, 11579769, -4631586, -8906688, 16627429, -7861938, -9318468, -8329552, 16182363, +-3675418, -7420630, 4983236, -156229, -8071318, 1010928, -10945724, -6163815, -4802847, 316217, +-3374771, 3669513, -2793339, 2523830, -1095217, 3383897, -6021544, 2586644, -2631741, 3051038, +-4184909, 3944391, -6660421, -5881421, -25411174, 2840584, 82349016, 21170968, 34595960, -17229262, +-75185016, -38147900, -55374476, -18682034, 37109056, 85262080, 37982008, 9449465, -40638444, -38254200, +26800596, 42398844, 20957830, 51498804, -2276870, -33743948, -49428096, -24045374, -7713762, 38254736, +4591320, 22102976, 19614042, 3311957, 51043540, 35850092, -4056060, -4917738, -47267188, -11503533, +-1119376, 957241, 26897232, 48240000, 29415694, 23155242, 45187352, 26154740, -47141024, -37813964, +-11926050, -29640106, 31307090, 21340618, 46377592, 36216776, 41010496, 12163884, 7165079, -33779380, +-35443680, -33171106, 11596949, 16896402, -191663, -4501663, 73222216, 18569828, -5143224, -6923488, +50109384, -53500796, 11167452, -101871792, -22874458, 25500294, -35729832, 33272038, 18735722, 528281, +73136312, 34744676, -41660108, -82677048, -39875012, -37442988, -20441360, -13904957, -10781442, 36168456, +22868016, 48785996, 5771899, -35888748, -24831354, -37659884, -35161824, -34843996, 15308337, 3282429, +15139223, 20804284, -9903121, 19241990, 10084046, -13412646, -1667521, -14860587, -4883915, -32129040, +-34109020, -12729209, -14870251, 587337, -31959926, 16979080, -2374580, 5905580, 8857296, -21290690, +-44185012, -39924944, -2216740, 8752606, 9065602, 26242250, 6464463, -13187697, -24899000, 8244727, +5826660, -118897576, -72671920, -39620536, 35030292, 10004589, 162220912, 173107584, 105195024, 191960336, +156860800, 166039136, 114993456, 140487840, 113949240, 2132988, -54354420, -77442016, -74491912, -155588416, +-186796720, -195092976, -136268032, -107092328, -42184096, 7495255, -55185496, 33758980, -69548408, -25094958, +-4786204, -21454436, 16460462, -63753420, 87706456, 15042049, 79955112, 51446192, 29886530, 20960514, +44235480, 28907814, 45368276, 104502456, 99227704, 79223360, 96973384, 122803312, 111686328, 105432320, +193216080, 67902360, 135947520, 177297328, 121739240, 161067184, 85433344, 114815752, 89635432, 107793480, +116473608, 43298104, 75413184, 57360900, 70583496, 68472520, 18655728, -13179644, -74035576, -27205934, +-98775656, -86102816, -146102976, -165154384, -166577088, -351179616, -297622976, -319242240, -317061472, -369621120, +-374219968, -230485664, -268580960, -199622032, -236978576, -179799680, -170652480, -148185504, -149100320, -85328112, +-37919728, -54152560, -55202676, -44676788, 8507256, 71534288, 37153616, 148728272, 127667904, 187929520, +192691568, 178250800, 222058944, 206208896, 238320224, 186738736, 228009072, 242057920, 270083648, 236674704, +141070352, 141555680, 140898016, 143583440, 132002600, 93261992, 86850144, 36521716, 25468620, -2702071, +4138738, 18002356, -48973900, -71785544, -78185048, -47844324, -42722576, -80002896, -93439160, -108674480, +-79120280, -100603704, -93316752, -78420200, -84495432, -85924040, -86137176, -22252226, -20294794, -10461467, +-19361176, 11321534, -2672007, -1993402, -18178986, -6362994, 6412386, 11666205, 4030290, 16151225, +11121818, 19476602, 642098, 3317325, -2473364, 8277476, -2481954, 4155918, -3249143, 3853123, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 5507222, -95026, -2029909, -478889, -4906464, -3393561, 2198487, 179852, -3085397, 3838627, 2594697, --850940, 245350, -538482, 3112778, -4320200, 1626719, 3208878, 2856690, -6210523, -4330401, --3093987, 4172024, 991064, 1369558, -1742146, 4449049, 1650341, -1090922, 100395, -1254131, -853625, 1672890, -1003412, -1266479, -3747359, 3979287, 6593312, 791348, 4181151, -769873, -827318, 1516660, 1807644, -5006858, 334471, -5231270, -1221918, -735513, 1629403, -2636036, --106837, 1153199, 506806, -3049427, 99321, 351114, 2478733, -3243237, -4096325, -545461, -5507222, 8872866, -4295, 1454920, 593779, -1899986, -5353140, -1356673, 3695283, -1701881, -3680787, 1434519, 3748433, -206158, 1443646, 1333587, -3206193, -4307316, -476205, 1623498, -2449205, 1195612, 1082332, 736050, 808528, -1480153, -2374580, -1606855, -1303523, -620086, -20938, -891206, -144955, 781684, 1246614, 1115618, -201863, 71941, 729071, -25233, --956167, 2522220, -5564130, -1262720, -5277441, 3051038, 341450, -2432562, 11248519, -4396973, --8061654, 613643, 3732327, -681826, -6067178, -1729261, -2637647, -994822, -2878165, -948114, -4170950, -294742, -2724083, 4784594, 701690, 4647692, -1239098, -1145146, 1786706, 117575, -2081449, -875100, 4386236, 7167227, -1978369, -4825933, -3535295, 2953864, -11274, -11047193, --1051730, -4405026, -1641214, 5401995, -3776887, -2872260, 3725884, -2442226, -535797, 4953708, -1707786, -3914326, 1749125, -2820720, -6525666, 2081449, 2556579, -4956929, -2869038, -1435593, --2084670, -49392, 2120640, 3379066, 5119064, 5724118, -1370095, 583579, -2263448, 2467459, -1570347, -1275068, 2394981, 3676492, -3517041, -1794760, 590558, 68719, 1414118, 4224101, --536334, -1133871, 3828427, 560493, -2660195, -1665374, -204548, -1633161, 1169842, -679142, --1472100, 599685, -1669669, -1315334, 825171, -1677185, -1136556, 46708, 1108638, -2075006, -236223, -505732, -725313, -1001264, -96100, -1619203, -462783, -1550483, -9055939, -4599373, -2782065, 4012036, 1562831, 4352413, -3724274, 4555350, 5587753, -1570347, 6183679, -843961, -4554276, -2165737, 137439, -1942399, 5824513, 2274722, -239444, 5206574, -2775623, -2201708, -3806952, -9043591, -1578401, 495532, -1928977, -8059506, -4927938, 3345243, -3162707, -2100776, -111132, 6307697, -1519882, -4413079, -353261, 1624035, 3561065, -541166, -5724118, -3685619, --1057636, -2929168, 944893, -4977330, 2465848, -4683125, -6890738, 221191, 2407866, 2800856, --2209224, -1581085, -4525285, 5845988, 3373160, 816581, 52613, -162135, -1991791, -1063004, -1969779, 2496987, 8812736, -992674, 2212982, 580357, -272194, -4317516, -3289408, 5979668, --2578591, 588947, 1476395, 866510, -947040, 4519916, 231391, 165893, -4912369, 4740034, -2649995, -1831267, -1099512, -530965, -1433445, 655519, 3408594, -46708, 1348083, 1035087, --489626, 792958, 1756105, -184147, -8053, 543313, 812286, 707596, 998580, 1826972, -673236, -1341104, 1394254, 651224, -998043, -773631, -171262, 208843, 2193118, 2699387, -2410551, 5767068, -3825742, -5709086, -4613332, 2891050, 6372658, -1191317, 4880157, -4350802, --5291937, 4364761, -2206540, 445066, 1624035, 5471789, 2026688, 8692477, -3797288, -4645007, -2024540, -2576444, -2430952, 4924180, -7699803, -4750771, 765041, -1493575, 3498788, -2617783, -959388, 6180458, -5765457, 4296041, -3481071, 2781528, -3261491, -930934, -530428, 6405944, -1202054, 223875, -4696547, 227096, -5587216, 2091112, 1375463, -3734474, -92342, -1547799, -9669582, 1299228, 617402, -8396124, -4923107, -7081328, 5527623, -3608846, -399432, 2913062, -12337830, 8709657, -3483219, -7592429, -3161633, -6591701, 6970732, -1337882, -1925756, -3050501, --2023467, -571768, -3183108, -2110440, -526134, -2583423, 1861868, -1807108, 2609730, -9595494, -662499, -791348, -3023120, -1421634, -3209951, -644782, -5024575, 412317, -2073932, -168041, -3074123, -966905, -1060320, -2150705, -2374043, -670552, 705985, -133681, -181999, -855772, --344671, -1012539, -136902, 246961, 624918, -716723, -817654, -1140851, -1007707, -872952, --1531156, -4867272, 3497714, -5036386, -8943733, 9124121, 4140885, -9587978, 9588514, -1545115, --548682, -13470091, 8027294, 5336497, -10875931, 3232500, -1783485, 4118337, 967978, 4747013, -3063922, 1206349, -5049271, 466004, 1881196, -6702297, -2836289, -7907572, -1336809, -4918275, --2610266, 891206, -6167573, -2285996, -9097278, 3441880, 927713, 780610, 824097, -3927748, --7915625, -2484639, 2816425, -1291711, -663036, 8308078, -12305618, 5177046, 6324340, -918049, -421981, -2403571, -949188, -4001299, -6065568, -4158602, -4773320, -3214783, 3087545, 1688459, -2752000, 4156992, -964757, -2222109, 5964636, 11337103, 8027831, -174483, -9626632, 2649458, --1453310, 1416266, 10255845, -70330, 10331007, 9190693, -1233729, -3087008, -2443837, 716186, -916439, 3423089, 10475425, 2781528, 443992, -1079111, -6448357, 764504, 2026688, -2199023, --290447, 324807, -55835, 1197759, 938450, 732292, -784368, 1258425, 1188632, 1124208, -1316408, -3514894, -533113, -2527052, 1031866, -1975685, 858457, -568546, -875636, -2114198, -428423, 519691, -3043521, -985695, 748935, 14532022, 3717294, -2581275, -703301, 4471061, --1526324, 14077292, -1494112, -2161979, 17838072, 112206, 9019968, -3352759, 248571, -777389, -1468879, -2281165, 1239098, -278636, -509491, -9678172, -925565, -2305861, -1731946, -4032974, -6195491, 2898029, 3686693, -5428839, -601832, -8579734, -3434900, 1612223, -698469, -5215701, --1607392, 2867965, 6473053, 3918084, -2052994, -7976828, -280247, 2271501, -1340567, 4226785, -2807835, 5730023, 7897908, -2568391, -52613, -8518531, -10356777, 9774272, 5246840, -353261, --435939, -323733, -3778498, -4141422, -82678, 7824357, 4520453, 1420560, 9545565, -7318088, -2144263, -6002217, -4633196, 4107599, 4217658, 3475166, 14378477, -518617, -6500433, 1129576, --6372658, 2886218, 1675037, 5252745, -2838974, 83752, 645319, -4830228, -865973, 3380676, --508417, 876710, -2101850, -1069447, -318901, 2341831, -1240172, 1479616, -2229625, 210453, --2882460, 922881, -1533303, -985158, 455803, 1455994, -1786170, 1929514, 1227824, 2354716, -139050, 1398012, -606664, 855772, 421981, 865973, -900333, -13422, -843424, -114354, -417686, 1221918, -7977902, -10713259, 4159676, -10012643, 3221, 11145440, -11661910, 4268124, -5235565, -3129421, -14394046, 189515, 8420820, -9314173, 5792837, -652835, -4127464, -12077985, --338766, -8714489, 1544578, -4425427, -6788733, -8477729, 3486440, -1203665, -494458, 8056285, --4874251, 6796249, -5160403, -2067490, 10417980, 3568044, -5554467, 4274566, 2517925, -4821101, -2544768, 2618320, -1844689, -2059974, 420907, -2324651, -2741800, 1704028, 1911797, 14172855, --13340705, 2156611, 857383, -4785131, 9601399, 5459441, -3287261, -10349261, 927176, -1050120, --3117073, -6532646, -7643431, 9331890, 6059662, 772020, -926102, 4970351, 2530810, -2262374, -3985193, 2856153, -2581812, 9928891, -3680250, 6073084, -4059281, 3020436, 3130494, 2236604, --293132, -5528160, 5288716, -4304631, -4470524, -3075734, 1546725, -11811, 663572, -5243618, -2856690, 2201171, -3309809, 339839, -121333, -1660005, 321586, -1100585, 2544231, -733366, -397821, 2119030, -952946, -1613297, 1418950, -1838783, 1494649, -331786, -9664, -2116882, --935766, -74088, -2298881, 2276870, 1302986, 512712, 1524713, -491774, 1042603, 4728222, --10803990, 7928510, -4522064, -1981591, -6202470, -4449049, 3775276, -3547106, 3087545, 12111271, -4141959, 6659884, -15439334, -10204305, -5503464, -3681861, 1668058, -60130, 2659659, -12945031, -6931541, 2900177, 1728724, 12370580, 205085, -6996502, 11599633, 4575214, -5181878, 2379949, --6659347, 6107444, 2870649, 8136279, -6971806, -4938676, 2054605, -7036230, 8879845, -8139500, --147103, 7902740, 7268159, -15031312, -430034, 741419, 1744831, 2492692, 16423955, 3798362, -1022739, -5023501, -4158065, -8877161, -4814122, 12148852, 289910, -14494441, 215285, 3360275, --8238284, -9059160, 1072668, -5874979, 2406792, 13313325, 6527814, 5604396, -5465346, -14221710, -1142461, -2432562, 6524056, -1277216, -11917997, -1447404, 3103651, 3283503, 3212099, -1004486, -10082436, 1905355, -6421513, 8323110, -619549, 4981089, -171262, -1242319, -4335770, 6150393, -4225711, 2405182, -3148748, -1228361, -831613, -2076617, 1163399, -13422, -2677375, 1330366, -805306, -1503239, -1993939, -829466, -1508070, -220117, 1865626, -1913408, 959388, 2352032, -2812667, -725313, 1197222, -1500017, -19041738, -5662915, 5376226, 14719927, 2092186, 7642895, -26109644, 4358318, 4450660, -4019553, -12525198, 7116224, -6076842, 6558952, -1580011, 17297444, -12586402, -6643778, -14149233, -11225434, 8528731, -7469485, 10456098, 4620848, 3403762, -3591667, --1383516, 12455942, -2458332, 10995653, 10977936, 5698885, 7699266, -8516920, 8338142, 4520990, --4476967, 12174622, -5359583, 11063299, 826244, 1272384, -16203301, 9788230, 889058, -3020436, -7999377, -11265699, -4483946, 6791954, 5526549, -10377178, 1672890, -6628209, -3828963, 10331544, -1381369, 3137474, -1092532, -11839614, 7963406, 7591892, 514859, 6008659, 2680597, -5228049, --5524939, -417149, 6327024, -10717017, -390305, 721018, 464393, -69793, 4704063, 6213207, -12693239, 7157563, 419833, -17805860, -5866389, -6645388, -598074, 1354525, -5011690, -10539850, --3331284, -4729296, 2789581, 446140, -3013457, 1167694, -3089692, 4954782, -1767379, -2067490, --2914135, 93416, 1421634, -6320045, 3991098, -4050691, 1660005, -1011465, -2345589, 152471, --3915400, 1307818, -3531537, -2533494, -502511, -1998770, -1877975, 2226941, 3762928, 2296734, -3623342, 4755603, -973347, 745177, 23540716, 6939594, 3105261, -8698919, -21263846, 15403900, -4763656, -14039711, 4180077, -1479079, 3591667, 3031710, -10200010, -21719112, -17062294, 5800890, -13326210, -2596845, 13993540, -6443525, 10916196, 13395466, 18065706, -3934727, 13348758, -11806865, -4514548, -6415071, 1601486, 7261179, -316754, -3796214, 3248606, 9105868, -6453189, -11966853, --12175159, 25556666, 44023, -1206886, -11504607, 11888469, 3844533, -23458574, -13625784, 5346698, --3310883, -4095788, 9188009, 3181497, 22767622, 12645457, -806917, -13156559, -12983686, -7296613, --5336497, -14934138, 13879187, -10188736, 10984379, 9516037, -9499394, -12173548, -11838004, -17206712, -4214974, -207769, -6208375, -7740605, -12677133, -4460324, -12485470, 2713883, 1519345, -4167729, -1710471, 10324565, -26134340, -10068477, -21325050, 10858751, 7514046, -9071508, -3078418, 4472135, --4014184, -43487, 5068062, -3869229, -8530342, -862752, -2450279, -2603287, -95563, -1020592, --3619047, 233002, 767725, 4652524, -6286759, 1762010, 3470871, -297963, -2595234, -3942243, --1163399, -522375, 908386, -1297080, -331786, -2351495, 1216550, -884226, -4008815, 7256884, -754304, 2261837, -12658879, -24401856, -5420249, -6332393, 1352915, -5662915, 1061394, 2580202, --2621004, 10487236, -13511430, -4091493, -12822625, -620086, -6380711, 14863808, 16616155, 13282723, --18524194, 13149042, -6686727, 9989020, -3827353, 7377680, -6146098, -7912404, 2858838, -10223633, -6586869, 7937100, -979789, 4769025, -9372156, -1175747, 15876347, -12618077, 606664, -3742527, --5173825, -10173167, -566399, 15683610, 20667382, -13037910, 6249178, -1636919, -12538083, -12822625, --13771813, -6305012, 26161720, 15792595, -4889821, 8396124, -5552856, 7270843, -14314589, 8403104, --431107, -7835631, 19913616, 10253161, 4065724, 6496138, 5698885, 18628884, 2469606, -15844671, -6437619, 12049531, 9454834, -27642946, 16859358, -11751567, -10430328, -5190468, 1714766, -10869488, -11928198, 26433914, -4603131, 3750043, 13523241, 2261837, -2220498, 3180423, 1376537, 7678328, -6931004, 4133369, 12684112, 6465537, -3541738, 8592619, 5359583, -3862786, -7732552, 4310000, --1078574, 4668093, -2224793, 1359357, 3827353, 1457605, -1115081, -1007170, 1721208, 5887327, -1283122, -1460289, 1299765, 4505421, -2027761, 180926, 7677791, 2907156, -2068027, 4144107, -1302986, 1051193, 3144453, -151934, 2588255, -1282585, -4932233, -4532801, 3793530, 16977468, -11176579, 46139224, 12991202, -7795903, 3042448, 7739531, 269509, 15349676, 11525008, 10623602, --13657459, -22973244, 23023710, -13027173, 2261837, 7906498, 25258166, 10067940, -15163919, 13725105, --13707388, -2892124, -18877456, -24937116, -2704756, 6676527, 6793565, 4964982, 6431177, -2017024, --17006460, -6364605, 5572720, 5724118, -8967892, 18919330, 12113418, -11418171, 6370510, 9394704, -3780645, 528818, -10412611, -1351304, -7280507, -4391604, 1152125, 11750494, 29443612, -8023536, -2745558, 4278861, 11024644, -10561325, 37299108, -3269544, 3673808, 3060164, -16831440, -16619913, --26676578, -11411191, 14701673, -5179731, 7422777, 5874979, 25679072, 4044249, 4655745, 1302449, -20245938, 9697499, -8388071, 18475876, -16815870, 2653216, 17125646, 21967684, 20311974, 7938174, --11506754, -18894634, -8092256, -6076305, -13721347, -7715372, -7792145, -2226941, -11519639, 2866354, --3944928, -1948841, -10043244, -1239098, -6254546, 9902584, 1051193, 2122251, -8939438, -1783485, --12286828, 799401, 5273683, -450435, 9007620, 5620502, 27380, 3664144, -1861868, -5606006, --3255585, -2550137, -10541460, 915902, 2105608, 2454574, 3141769, -5270462, 7437810, 8005282, -3548180, -6314139, -4217658, -2149631, 1799054, 4394826, 2401961, -4252018, -2174864, -4858145, --19223736, 10827613, 5136244, 13291313, -3578245, -29396904, 2333778, -19725712, -17494476, 5167920, -4169876, 8166881, -5120138, 5867999, -1051193, -10082973, 16002511, -2618856, -5317170, -6452115, --11253351, -9673877, 5815386, -12184285, 2954938, -7814156, -5352603, -3403225, 15704548, -3137474, -16858820, 10492068, -4434017, 5543192, 5829345, 11924440, -8283382, -11369315, 1695438, 6998113, -9199283, 15761993, -17463874, -17002702, 7260642, 5582384, 19516868, -9670656, -1395864, 9644349, -57445, 2673617, -3605088, 12733504, 16048145, 7329362, -2040646, 10043781, 33658584, -7466801, --9822053, 12476880, -1381906, 19640886, 4726612, 9157944, 11080479, -3610994, 7756174, 22736484, --6208912, -27338540, 19226958, 5611375, -9006546, 2619393, -41653668, 27780386, -277025, 17222818, --10938745, 8986145, 1269700, -16607565, -15830176, -2178085, 3072512, -12272869, 65498, 1885491, --2254858, -4082903, -2557653, -13423920, -2230162, -8058433, 115427, -4213363, -1217623, -4825933, -8078297, -5994164, -4576288, -8660802, -4187593, -9882183, -1823214, 2216203, -5499169, -621697, --4503810, -4912906, -5321465, -325344, -4405563, -3282429, 1589675, -1413581, 4298726, -3063922, --6313065, -6908992, 45097, 1198833, -4349728, -886911, -1957968, 2122788, -9286256, -17807472, --879395, 27736362, 13615046, -35723392, 5468567, -6445672, 2980707, 5841693, -1865626, -18416282, -2440615, -2849711, 15864535, 31029528, -5266167, 9992778, 20310900, -912681, -5884642, -5247377, -7947300, 30990336, -781684, -2144799, 25328496, -10363219, 6714645, 71941, -580357, -6640557, -9426379, -28428926, 725850, 9013526, 20617454, 22106734, -18347564, 784368, 19805168, -1189169, -37005440, -13469554, -18368502, 2521683, 26844620, 4793721, -20875688, -9690520, 6003291, -42413, -11613592, -30155502, 3557844, 1399623, -6442988, -21857088, -19547470, 5211406, -6025302, -1291711, -970126, -22743462, -24043226, 5153424, 3637837, -24104430, -8294656, -15638513, 13974213, -38141992, --14564234, 12628278, -23298050, 12793634, -6357089, -9235253, 12580496, -3823595, 18947786, 18152142, -3985730, 11296301, -5162014, 2359548, -13554917, 14662481, -10525891, 8759586, -14191646, 10520522, -648003, 4736275, -1280437, 148713, -8173860, 9735080, -10696079, 1923072, 1166621, 5513128, --11727408, 6152004, -4769025, -3188476, 3645354, -2398202, -5519570, 7945153, 3279208, 8486855, -3676492, -781147, -3983045, -3923990, -1087164, 1659468, -5575942, 2052458, -4071092, 2058363, --11215770, -5761162, -4597226, 5840619, 6630356, -3590056, 1491964, -1568737, -9321153, 20170778, -24159, 11156178, -21056614, -1587527, -19929186, 20900384, 9290014, 27347668, 19311246, -9713069, -3728569, 21600464, 11138998, 10991895, 7093139, -18364744, -5206037, 9016210, 1500554, 10650445, --23360864, -17381732, 10635413, 35049080, 4830765, -11604465, 22207128, 6300180, 13902272, 3650185, -2768107, -19798726, -20092394, 342524, 395674, -34660924, 2863670, -7134478, -1721208, 10945724, --13458280, 8268886, 27276264, 2840047, -44303660, -31919660, -5139465, -9838696, -10971494, -351114, -8137890, 7009924, -10817412, 12273943, 11718281, 10544682, -6802155, 9072582, -4946192, -11566347, --2669322, 10132902, -33050848, -7584912, -14889578, -17289390, -6811282, 4635344, -8732205, -934692, -36527088, 20714628, -13952201, 97711, 474057, -6314139, -6436009, 3176665, 24521578, 8913668, -3770981, -7612293, -5439039, -12718472, -14562087, -15622407, -3506304, 1974074, 4910222, -5489505, -4395362, -1325534, -3489661, -1377611, -4107599, -13721884, -3340948, -151398, -3389803, -11872900, -1575179, -4316442, 12988518, -6551973, 4451197, -1339493, 5409512, -88047, -10368051, 868120, -12613245, 1893544, 11355357, -3128347, 5855651, -3628174, 3750043, -796180, -7668664, -3462281, --737124, -1405528, -1443109, -71404, 7482370, 14288282, -19891604, -5077725, -8443369, 5253819, -41523744, 6526203, -20464982, 5366562, 18330920, -3980898, 17126182, 21787832, -11292006, 5116917, -11001022, 7477538, 468688, -3260954, -6773701, 3210488, 12930536, 6630356, 12075837, -18174154, --27954332, -3018288, 12449500, 10945187, 8934606, -3224447, -25788058, 8258685, 5703180, 38562900, -40577776, 9602473, -30213484, 21805012, -11513197, -30909270, -7226283, -36572184, -27841052, -12327630, --13419088, -28369870, 4927938, -11457899, -32447404, -29721710, 8568997, 19233400, -3187403, -25096030, -7439420, 679142, 8010114, 15735150, 15365246, -19425600, 25016038, 17154100, 2179696, 6874632, -17406428, -947577, 45532024, -32506996, -15527917, -1126355, -37047852, 30367566, 2215666, 38182796, -11797201, 8514773, -1935957, 7536594, 16196322, 599685, -15083388, -279173, -8052527, 6027450, -5833640, 10894185, -4585952, -13991930, -93952, 12934831, 6135898, -8311836, -4141959, 6788196, --9299678, -73014, 200253, 11882027, 4660040, -6519761, -2825015, -7402913, -11944304, -10364830, --573915, 2245194, -5921686, -4363687, 1389422, -5980742, 9357123, 4554813, -112206, 5616207, -18898392, -7196755, -3597035, 2127620, 5075041, -10196789, 11076721, -3732864, -341987, 1890859, -8283382, 13939316, -20240570, 5311264, -40421012, -10954314, -2504503, -9948755, 44377212, 13982803, --11787538, -27884002, -14134201, -11480984, -17661442, -12967043, 6787659, -40705552, -8760660, 29867740, --3534221, -3362960, -31095026, 29655138, 14704357, 660888, -11791296, 12633646, 6274411, -7092065, -13543106, -21024938, -5572720, -10743324, 6030671, -4918275, -13237626, 15024869, -11290932, 6260452, -438087, -20429012, -12710956, -3198140, -25550760, -25103546, -33590940, -8685498, 15413564, -11294153, --6150393, 19369766, -23638426, -19452980, 20959978, -184147, -1207960, 18855444, 282394, -16164646, --9269613, 6352257, 13656385, -20881058, -6546067, 25373594, 10982231, 24482924, 12709345, -5034239, -12915504, -1005022, -33172716, 10405632, -25092272, 18175228, 3194382, 6652905, -10552198, -28722594, -6056441, -4303021, -24893630, -10006200, 11196443, -12664248, 541166, 3904125, 8159364, -8134131, -459562, 1187022, -2124935, 5178657, -3711926, 2890513, 10241886, -1911797, 3526168, 2661269, --6600828, 2066416, 4929549, 2768643, -4922570, 6703370, 4693863, -516470, -6901476, -14190572, -2945811, -11234024, 9137006, -11469710, 7538742, 9346923, 475131, 518617, 304406, 5302137, -863288, -4902169, 11060078, 8794482, -4332549, -6929930, -11546483, 30285962, 10573673, 1117765, -3697967, -7909719, 12008192, 18662706, 47278464, 41293964, 3570729, -18179522, 8410083, 23943906, -6843494, 18540836, 13372381, 8978629, -14013405, -17995376, -21626770, -1507534, 8034810, 15232102, -30713848, 16253767, 19697794, 11454141, 18262738, 9215389, 17592186, -11748883, 3316789, 33205466, --892816, 25545928, 6771016, 20659866, -32779728, -5331128, -9662603, -9658845, 7645042, 12767327, -23741506, 38408280, 32172526, -11404212, 5713380, -42652248, 10361072, 9821516, 37580428, -29875256, -23767812, -7756711, -20943334, 16049219, 4952634, 13394392, 23541252, -7659538, -30149060, 15604690, --19382650, -26578868, -12633646, 35560720, -30868466, -43815644, -22111566, -7260106, 23110682, -2412698, --15756624, -30240864, -22830972, 14461155, -2065879, -565862, 19588272, -21336860, 6101001, 21908628, -8533563, 14666776, 21220360, -14371497, -7241315, -12146168, 16230145, 3603478, 8356933, 5915781, --14605036, 18138184, 4482872, 2874407, -7154879, -26519812, -25333864, 2524904, -12057047, -5004174, --11436424, -9946607, -4365835, 4672925, -151934, -11186242, 14283987, 11970611, -1611150, -12698071, -2081449, 7646653, -9074192, -4111358, -5211406, 105764, 6172942, -2850785, -6272800, -5078799, -4340602, 3631395, 6963216, 8684961, -4553739, 4962298, 5374078, 29707752, -9371082, -32829120, -2303713, -13711683, -46932720, -23738284, 61550640, 8608188, -27799176, -30521648, 3434900, 544924, -12710419, 15979963, -21530672, -14294725, -34346852, 7996692, -12463458, -8244727, 52476448, 11270531, --7266011, -54169740, -3506304, -28924458, 28660316, 35413080, 3704946, 27551678, -32466194, -12768938, --20516522, -4842576, 53586160, 66748624, 10649908, -17814988, -23848880, -48189532, 648003, 6236830, -58254252, 32518808, -8527658, -95784752, -49629420, 8249559, -9208410, 84136800, 28187870, -40377524, --16813186, -72086192, -22827214, 2542084, 47140488, 48652852, 54608360, 2605972, 12931073, -5740224, -4707821, 67189928, -24802900, 49356152, -11960410, -50673096, -15181099, -53717156, -17264158, 70350488, -31978716, 50233400, -16654273, 39395052, -44109316, -7026030, 10481331, 21001316, 41777684, -14097156, --912144, 2639794, -3962644, 6460168, 11143293, -11950747, 1816771, -12566537, -22738630, 10226317, -18471044, 10305237, -2400887, -13648869, -30422328, -29955250, -15804406, 10142028, 27996208, 15780784, -21655762, -29446832, -38612292, -29778618, 3344169, 33823940, 37554656, 28855738, -17244294, -73536816, --47265580, 1433982, 37015100, 79915920, 30961346, 6571300, -36389648, -47936128, -16660715, -15253576, -41878616, 46286324, 17299592, -2743410, -40172440, -30128122, 9175124, 13839995, 34061240, 16557099, --17607218, -12319577, -21082384, -10031970, 9893994, 9047885, -42673720, 47327856, 79994, -12333535, --73531984, -19794430, -19857244, -33175938, 71185328, 762894, 31891742, -48657148, 27015882, 22687090, --21895744, 14247480, -4211216, 12736726, -11274, 36422396, 12858058, -35328792, 21334176, 17614734, --125628, 24596740, -18190260, -9327058, 30848602, 21643950, 20540144, 10279467, 17868674, -53243636, -46468324, -26714160, -17028472, 10190884, -37363532, 54575612, -15540802, 5504538, 39363912, 1418950, --6029597, 21474836, 21863532, 38676716, -9465571, -35785132, -36576480, 4131222, -13237089, 17001628, --22143778, -10671383, -15008763, 11014444, -68702832, 1200443, 50918448, 14187351, 20697984, -1837172, --5666136, 13513578, -18181670, -20659866, 12731357, 7177427, -22406308, -24761560, 94551024, -10151155, --30826590, 8679592, 44281648, -1154809, -35003448, 14464913, -6626061, -13152264, 28478318, 36318780, --26598732, -43331388, 9740449, 10521059, -10088341, -25891136, 1218160, 13160317, -4068945, -4154307, --1796907, -4415764, 6888054, 7795366, -8993662, 1037772, 3818226, 2001455, -5440650, 2049773, --375273, -11969537, 8580808, 3749507, 16675747, 8359617, -6437082, 6887517, -3389803, 9914395, --782221, -2523830, 13587129, -3347927, 9285719, -2698313, -10821170, -893353, 12223477, -3416647, -13924821, -13224204, 17503066, 4168803, -12706661, 5348308, 207232, 6502044, -2196339, -5051419, --1344862, 13749801, -36681168, 13063680, 57882200, 91163904, -40308268, 29716342, -60186988, -17737142, --36666136, -4995584, 56018720, 59456308, 47245712, -1477469, -37729676, -22809498, 20542292, 1552094, -10303627, 31079994, -570694, 15476378, -39549668, -10077604, -22877144, -27851790, 15291157, 12749074, -862752, 27875948, -23661512, -837519, 6276558, -33347736, -921271, 2350958, -21088290, -7948374, -7907572, -14076755, 31412318, -10264435, 47582868, 35996120, -23460186, -6575058, -32610612, -37262600, --48400524, 15486041, 22308598, 64698852, 49334680, 23060216, 31351650, 6012954, -35638564, -23551990, --19966766, -24257976, -5161477, 13584445, -1313723, -16669305, 4335770, -16819092, 10569915, 24103356, -4692252, -25144886, 19643032, -12057047, -12808666, -25164750, 13012140, 11156714, 5700496, 3081639, -57028040, 43589088, 35642860, 6047851, -8293045, -48324824, -10136123, -5061082, 47498580, 27214524, -12364137, 14347338, 41133440, -6578816, -16415902, -22254910, -18644990, -8791261, -4198331, 3717831, -470836, 261993, 21325050, -2521683, -12791486, -7861401, -4416300, 405338, 10522670, 18998250, -8295730, -2470680, 11745125, -19793356, 7657390, 18059264, 7340099, 35661112, -14717779, 151398, -6039798, -15005005, 3818226, -23820426, -1304596, 8193724, 202400, 9552007, -6873559, -98972152, --57332444, -33006824, 56899728, 26718454, 151434640, 142380848, 147048400, 148809872, 159362080, 112170048, -58497456, 84954456, 50984484, -25337086, -47205448, -72698224, -141491248, -127397856, -132189968, -95741264, --97126392, -71905808, -59697360, -31661962, 3192235, -55934968, -28683940, -11565273, -8892193, -30245696, -7758322, 37929928, 42469172, 15897285, 50184544, 64004140, 15795279, 12648679, 12600360, 62896576, -65410204, 82695304, 92433600, 81021872, 91796336, 139584288, 56501904, 109003584, 148580640, 95664488, -112772960, 88794152, 44378288, 53079892, 58562416, 52206940, 70757976, 69860328, 43251932, 8553964, -21483426, 41210212, -2618856, 4862977, -19811074, -22673132, -70164200, -31477278, -121568512, -152609312, --122353952, -139229424, -189642128, -182987616, -108608448, -204403936, -185615072, -169261984, -191619968, -161540704, --123368640, -154789552, -114045880, -31465468, -75756240, -93522376, -37067716, -36899136, -30486214, -33470680, --14964740, 9385577, 19228032, 37520836, 48399988, 55624120, 62513248, 64763812, 91183232, 56041272, -107426792, 120423904, 57272316, 111874768, 106249976, 67575408, 81439024, 118371448, 80400176, 133591736, -100753488, 126689184, 88607320, 80711024, 83516712, 78212432, 61304216, 70387536, 61072824, 48525076, -36436356, 35748624, 28918552, 12790949, -8905078, -6702297, -5021891, -41681048, -68319504, -65333968, --67308576, -73023568, -67900208, -75548472, -54877336, -56453052, -46395312, -33914672, -26711476, -30027726, --29898342, -22257058, -15744813, -16895328, -22944790, -11113765, -5379447, -12097849, -19443854, -9938017, --6550362, -8323110, -9280351, 1234803, 3693672, 5188321, 603980, 1806571, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +95026, -2029909, -478889, -4906464, -3393561, 2198487, 179852, -3085397, 3838627, 2594697, +-850940, 245350, -538482, 3112778, -4320200, 1626719, 3208878, 2856690, -6210523, -4330401, +-3093987, 4172024, 991064, 1369558, -1742146, 4449049, 1650341, -1090922, 100395, -1254131, +853625, 1672890, -1003412, -1266479, -3747359, 3979287, 6593312, 791348, 4181151, -769873, +827318, 1516660, 1807644, -5006858, 334471, -5231270, -1221918, -735513, 1629403, -2636036, +-106837, 1153199, 506806, -3049427, 99321, 351114, 2478733, -3243237, -4096325, -545461, +5507222, 8872866, -4295, 1454920, 593779, -1899986, -5353140, -1356673, 3695283, -1701881, +3680787, 1434519, 3748433, -206158, 1443646, 1333587, -3206193, -4307316, -476205, 1623498, +2449205, 1195612, 1082332, 736050, 808528, -1480153, -2374580, -1606855, -1303523, -620086, +20938, -891206, -144955, 781684, 1246614, 1115618, -201863, 71941, 729071, -25233, +-956167, 2522220, -5564130, -1262720, -5277441, 3051038, 341450, -2432562, 11248519, -4396973, +-8061654, 613643, 3732327, -681826, -6067178, -1729261, -2637647, -994822, -2878165, -948114, +4170950, -294742, -2724083, 4784594, 701690, 4647692, -1239098, -1145146, 1786706, 117575, +2081449, -875100, 4386236, 7167227, -1978369, -4825933, -3535295, 2953864, -11274, -11047193, +-1051730, -4405026, -1641214, 5401995, -3776887, -2872260, 3725884, -2442226, -535797, 4953708, +1707786, -3914326, 1749125, -2820720, -6525666, 2081449, 2556579, -4956929, -2869038, -1435593, +-2084670, -49392, 2120640, 3379066, 5119064, 5724118, -1370095, 583579, -2263448, 2467459, +1570347, -1275068, 2394981, 3676492, -3517041, -1794760, 590558, 68719, 1414118, 4224101, +-536334, -1133871, 3828427, 560493, -2660195, -1665374, -204548, -1633161, 1169842, -679142, +-1472100, 599685, -1669669, -1315334, 825171, -1677185, -1136556, 46708, 1108638, -2075006, +236223, -505732, -725313, -1001264, -96100, -1619203, -462783, -1550483, -9055939, -4599373, +2782065, 4012036, 1562831, 4352413, -3724274, 4555350, 5587753, -1570347, 6183679, -843961, +4554276, -2165737, 137439, -1942399, 5824513, 2274722, -239444, 5206574, -2775623, -2201708, +3806952, -9043591, -1578401, 495532, -1928977, -8059506, -4927938, 3345243, -3162707, -2100776, +111132, 6307697, -1519882, -4413079, -353261, 1624035, 3561065, -541166, -5724118, -3685619, +-1057636, -2929168, 944893, -4977330, 2465848, -4683125, -6890738, 221191, 2407866, 2800856, +-2209224, -1581085, -4525285, 5845988, 3373160, 816581, 52613, -162135, -1991791, -1063004, +1969779, 2496987, 8812736, -992674, 2212982, 580357, -272194, -4317516, -3289408, 5979668, +-2578591, 588947, 1476395, 866510, -947040, 4519916, 231391, 165893, -4912369, 4740034, +2649995, -1831267, -1099512, -530965, -1433445, 655519, 3408594, -46708, 1348083, 1035087, +-489626, 792958, 1756105, -184147, -8053, 543313, 812286, 707596, 998580, 1826972, +673236, -1341104, 1394254, 651224, -998043, -773631, -171262, 208843, 2193118, 2699387, +2410551, 5767068, -3825742, -5709086, -4613332, 2891050, 6372658, -1191317, 4880157, -4350802, +-5291937, 4364761, -2206540, 445066, 1624035, 5471789, 2026688, 8692477, -3797288, -4645007, +2024540, -2576444, -2430952, 4924180, -7699803, -4750771, 765041, -1493575, 3498788, -2617783, +959388, 6180458, -5765457, 4296041, -3481071, 2781528, -3261491, -930934, -530428, 6405944, +1202054, 223875, -4696547, 227096, -5587216, 2091112, 1375463, -3734474, -92342, -1547799, +9669582, 1299228, 617402, -8396124, -4923107, -7081328, 5527623, -3608846, -399432, 2913062, +12337830, 8709657, -3483219, -7592429, -3161633, -6591701, 6970732, -1337882, -1925756, -3050501, +-2023467, -571768, -3183108, -2110440, -526134, -2583423, 1861868, -1807108, 2609730, -9595494, +662499, -791348, -3023120, -1421634, -3209951, -644782, -5024575, 412317, -2073932, -168041, +3074123, -966905, -1060320, -2150705, -2374043, -670552, 705985, -133681, -181999, -855772, +-344671, -1012539, -136902, 246961, 624918, -716723, -817654, -1140851, -1007707, -872952, +-1531156, -4867272, 3497714, -5036386, -8943733, 9124121, 4140885, -9587978, 9588514, -1545115, +-548682, -13470091, 8027294, 5336497, -10875931, 3232500, -1783485, 4118337, 967978, 4747013, +3063922, 1206349, -5049271, 466004, 1881196, -6702297, -2836289, -7907572, -1336809, -4918275, +-2610266, 891206, -6167573, -2285996, -9097278, 3441880, 927713, 780610, 824097, -3927748, +-7915625, -2484639, 2816425, -1291711, -663036, 8308078, -12305618, 5177046, 6324340, -918049, +421981, -2403571, -949188, -4001299, -6065568, -4158602, -4773320, -3214783, 3087545, 1688459, +2752000, 4156992, -964757, -2222109, 5964636, 11337103, 8027831, -174483, -9626632, 2649458, +-1453310, 1416266, 10255845, -70330, 10331007, 9190693, -1233729, -3087008, -2443837, 716186, +916439, 3423089, 10475425, 2781528, 443992, -1079111, -6448357, 764504, 2026688, -2199023, +-290447, 324807, -55835, 1197759, 938450, 732292, -784368, 1258425, 1188632, 1124208, +1316408, -3514894, -533113, -2527052, 1031866, -1975685, 858457, -568546, -875636, -2114198, +428423, 519691, -3043521, -985695, 748935, 14532022, 3717294, -2581275, -703301, 4471061, +-1526324, 14077292, -1494112, -2161979, 17838072, 112206, 9019968, -3352759, 248571, -777389, +1468879, -2281165, 1239098, -278636, -509491, -9678172, -925565, -2305861, -1731946, -4032974, +6195491, 2898029, 3686693, -5428839, -601832, -8579734, -3434900, 1612223, -698469, -5215701, +-1607392, 2867965, 6473053, 3918084, -2052994, -7976828, -280247, 2271501, -1340567, 4226785, +2807835, 5730023, 7897908, -2568391, -52613, -8518531, -10356777, 9774272, 5246840, -353261, +-435939, -323733, -3778498, -4141422, -82678, 7824357, 4520453, 1420560, 9545565, -7318088, +2144263, -6002217, -4633196, 4107599, 4217658, 3475166, 14378477, -518617, -6500433, 1129576, +-6372658, 2886218, 1675037, 5252745, -2838974, 83752, 645319, -4830228, -865973, 3380676, +-508417, 876710, -2101850, -1069447, -318901, 2341831, -1240172, 1479616, -2229625, 210453, +-2882460, 922881, -1533303, -985158, 455803, 1455994, -1786170, 1929514, 1227824, 2354716, +139050, 1398012, -606664, 855772, 421981, 865973, -900333, -13422, -843424, -114354, +417686, 1221918, -7977902, -10713259, 4159676, -10012643, 3221, 11145440, -11661910, 4268124, +5235565, -3129421, -14394046, 189515, 8420820, -9314173, 5792837, -652835, -4127464, -12077985, +-338766, -8714489, 1544578, -4425427, -6788733, -8477729, 3486440, -1203665, -494458, 8056285, +-4874251, 6796249, -5160403, -2067490, 10417980, 3568044, -5554467, 4274566, 2517925, -4821101, +2544768, 2618320, -1844689, -2059974, 420907, -2324651, -2741800, 1704028, 1911797, 14172855, +-13340705, 2156611, 857383, -4785131, 9601399, 5459441, -3287261, -10349261, 927176, -1050120, +-3117073, -6532646, -7643431, 9331890, 6059662, 772020, -926102, 4970351, 2530810, -2262374, +3985193, 2856153, -2581812, 9928891, -3680250, 6073084, -4059281, 3020436, 3130494, 2236604, +-293132, -5528160, 5288716, -4304631, -4470524, -3075734, 1546725, -11811, 663572, -5243618, +2856690, 2201171, -3309809, 339839, -121333, -1660005, 321586, -1100585, 2544231, -733366, +397821, 2119030, -952946, -1613297, 1418950, -1838783, 1494649, -331786, -9664, -2116882, +-935766, -74088, -2298881, 2276870, 1302986, 512712, 1524713, -491774, 1042603, 4728222, +-10803990, 7928510, -4522064, -1981591, -6202470, -4449049, 3775276, -3547106, 3087545, 12111271, +4141959, 6659884, -15439334, -10204305, -5503464, -3681861, 1668058, -60130, 2659659, -12945031, +6931541, 2900177, 1728724, 12370580, 205085, -6996502, 11599633, 4575214, -5181878, 2379949, +-6659347, 6107444, 2870649, 8136279, -6971806, -4938676, 2054605, -7036230, 8879845, -8139500, +-147103, 7902740, 7268159, -15031312, -430034, 741419, 1744831, 2492692, 16423955, 3798362, +1022739, -5023501, -4158065, -8877161, -4814122, 12148852, 289910, -14494441, 215285, 3360275, +-8238284, -9059160, 1072668, -5874979, 2406792, 13313325, 6527814, 5604396, -5465346, -14221710, +1142461, -2432562, 6524056, -1277216, -11917997, -1447404, 3103651, 3283503, 3212099, -1004486, +10082436, 1905355, -6421513, 8323110, -619549, 4981089, -171262, -1242319, -4335770, 6150393, +4225711, 2405182, -3148748, -1228361, -831613, -2076617, 1163399, -13422, -2677375, 1330366, +805306, -1503239, -1993939, -829466, -1508070, -220117, 1865626, -1913408, 959388, 2352032, +2812667, -725313, 1197222, -1500017, -19041738, -5662915, 5376226, 14719927, 2092186, 7642895, +26109644, 4358318, 4450660, -4019553, -12525198, 7116224, -6076842, 6558952, -1580011, 17297444, +12586402, -6643778, -14149233, -11225434, 8528731, -7469485, 10456098, 4620848, 3403762, -3591667, +-1383516, 12455942, -2458332, 10995653, 10977936, 5698885, 7699266, -8516920, 8338142, 4520990, +-4476967, 12174622, -5359583, 11063299, 826244, 1272384, -16203301, 9788230, 889058, -3020436, +7999377, -11265699, -4483946, 6791954, 5526549, -10377178, 1672890, -6628209, -3828963, 10331544, +1381369, 3137474, -1092532, -11839614, 7963406, 7591892, 514859, 6008659, 2680597, -5228049, +-5524939, -417149, 6327024, -10717017, -390305, 721018, 464393, -69793, 4704063, 6213207, +12693239, 7157563, 419833, -17805860, -5866389, -6645388, -598074, 1354525, -5011690, -10539850, +-3331284, -4729296, 2789581, 446140, -3013457, 1167694, -3089692, 4954782, -1767379, -2067490, +-2914135, 93416, 1421634, -6320045, 3991098, -4050691, 1660005, -1011465, -2345589, 152471, +-3915400, 1307818, -3531537, -2533494, -502511, -1998770, -1877975, 2226941, 3762928, 2296734, +3623342, 4755603, -973347, 745177, 23540716, 6939594, 3105261, -8698919, -21263846, 15403900, +4763656, -14039711, 4180077, -1479079, 3591667, 3031710, -10200010, -21719112, -17062294, 5800890, +13326210, -2596845, 13993540, -6443525, 10916196, 13395466, 18065706, -3934727, 13348758, -11806865, +4514548, -6415071, 1601486, 7261179, -316754, -3796214, 3248606, 9105868, -6453189, -11966853, +-12175159, 25556666, 44023, -1206886, -11504607, 11888469, 3844533, -23458574, -13625784, 5346698, +-3310883, -4095788, 9188009, 3181497, 22767622, 12645457, -806917, -13156559, -12983686, -7296613, +-5336497, -14934138, 13879187, -10188736, 10984379, 9516037, -9499394, -12173548, -11838004, -17206712, +4214974, -207769, -6208375, -7740605, -12677133, -4460324, -12485470, 2713883, 1519345, -4167729, +1710471, 10324565, -26134340, -10068477, -21325050, 10858751, 7514046, -9071508, -3078418, 4472135, +-4014184, -43487, 5068062, -3869229, -8530342, -862752, -2450279, -2603287, -95563, -1020592, +-3619047, 233002, 767725, 4652524, -6286759, 1762010, 3470871, -297963, -2595234, -3942243, +-1163399, -522375, 908386, -1297080, -331786, -2351495, 1216550, -884226, -4008815, 7256884, +754304, 2261837, -12658879, -24401856, -5420249, -6332393, 1352915, -5662915, 1061394, 2580202, +-2621004, 10487236, -13511430, -4091493, -12822625, -620086, -6380711, 14863808, 16616155, 13282723, +-18524194, 13149042, -6686727, 9989020, -3827353, 7377680, -6146098, -7912404, 2858838, -10223633, +6586869, 7937100, -979789, 4769025, -9372156, -1175747, 15876347, -12618077, 606664, -3742527, +-5173825, -10173167, -566399, 15683610, 20667382, -13037910, 6249178, -1636919, -12538083, -12822625, +-13771813, -6305012, 26161720, 15792595, -4889821, 8396124, -5552856, 7270843, -14314589, 8403104, +-431107, -7835631, 19913616, 10253161, 4065724, 6496138, 5698885, 18628884, 2469606, -15844671, +6437619, 12049531, 9454834, -27642946, 16859358, -11751567, -10430328, -5190468, 1714766, -10869488, +11928198, 26433914, -4603131, 3750043, 13523241, 2261837, -2220498, 3180423, 1376537, 7678328, +6931004, 4133369, 12684112, 6465537, -3541738, 8592619, 5359583, -3862786, -7732552, 4310000, +-1078574, 4668093, -2224793, 1359357, 3827353, 1457605, -1115081, -1007170, 1721208, 5887327, +1283122, -1460289, 1299765, 4505421, -2027761, 180926, 7677791, 2907156, -2068027, 4144107, +1302986, 1051193, 3144453, -151934, 2588255, -1282585, -4932233, -4532801, 3793530, 16977468, +11176579, 46139224, 12991202, -7795903, 3042448, 7739531, 269509, 15349676, 11525008, 10623602, +-13657459, -22973244, 23023710, -13027173, 2261837, 7906498, 25258166, 10067940, -15163919, 13725105, +-13707388, -2892124, -18877456, -24937116, -2704756, 6676527, 6793565, 4964982, 6431177, -2017024, +-17006460, -6364605, 5572720, 5724118, -8967892, 18919330, 12113418, -11418171, 6370510, 9394704, +3780645, 528818, -10412611, -1351304, -7280507, -4391604, 1152125, 11750494, 29443612, -8023536, +2745558, 4278861, 11024644, -10561325, 37299108, -3269544, 3673808, 3060164, -16831440, -16619913, +-26676578, -11411191, 14701673, -5179731, 7422777, 5874979, 25679072, 4044249, 4655745, 1302449, +20245938, 9697499, -8388071, 18475876, -16815870, 2653216, 17125646, 21967684, 20311974, 7938174, +-11506754, -18894634, -8092256, -6076305, -13721347, -7715372, -7792145, -2226941, -11519639, 2866354, +-3944928, -1948841, -10043244, -1239098, -6254546, 9902584, 1051193, 2122251, -8939438, -1783485, +-12286828, 799401, 5273683, -450435, 9007620, 5620502, 27380, 3664144, -1861868, -5606006, +-3255585, -2550137, -10541460, 915902, 2105608, 2454574, 3141769, -5270462, 7437810, 8005282, +3548180, -6314139, -4217658, -2149631, 1799054, 4394826, 2401961, -4252018, -2174864, -4858145, +-19223736, 10827613, 5136244, 13291313, -3578245, -29396904, 2333778, -19725712, -17494476, 5167920, +4169876, 8166881, -5120138, 5867999, -1051193, -10082973, 16002511, -2618856, -5317170, -6452115, +-11253351, -9673877, 5815386, -12184285, 2954938, -7814156, -5352603, -3403225, 15704548, -3137474, +16858820, 10492068, -4434017, 5543192, 5829345, 11924440, -8283382, -11369315, 1695438, 6998113, +9199283, 15761993, -17463874, -17002702, 7260642, 5582384, 19516868, -9670656, -1395864, 9644349, +57445, 2673617, -3605088, 12733504, 16048145, 7329362, -2040646, 10043781, 33658584, -7466801, +-9822053, 12476880, -1381906, 19640886, 4726612, 9157944, 11080479, -3610994, 7756174, 22736484, +-6208912, -27338540, 19226958, 5611375, -9006546, 2619393, -41653668, 27780386, -277025, 17222818, +-10938745, 8986145, 1269700, -16607565, -15830176, -2178085, 3072512, -12272869, 65498, 1885491, +-2254858, -4082903, -2557653, -13423920, -2230162, -8058433, 115427, -4213363, -1217623, -4825933, +8078297, -5994164, -4576288, -8660802, -4187593, -9882183, -1823214, 2216203, -5499169, -621697, +-4503810, -4912906, -5321465, -325344, -4405563, -3282429, 1589675, -1413581, 4298726, -3063922, +-6313065, -6908992, 45097, 1198833, -4349728, -886911, -1957968, 2122788, -9286256, -17807472, +-879395, 27736362, 13615046, -35723392, 5468567, -6445672, 2980707, 5841693, -1865626, -18416282, +2440615, -2849711, 15864535, 31029528, -5266167, 9992778, 20310900, -912681, -5884642, -5247377, +7947300, 30990336, -781684, -2144799, 25328496, -10363219, 6714645, 71941, -580357, -6640557, +9426379, -28428926, 725850, 9013526, 20617454, 22106734, -18347564, 784368, 19805168, -1189169, +37005440, -13469554, -18368502, 2521683, 26844620, 4793721, -20875688, -9690520, 6003291, -42413, +11613592, -30155502, 3557844, 1399623, -6442988, -21857088, -19547470, 5211406, -6025302, -1291711, +970126, -22743462, -24043226, 5153424, 3637837, -24104430, -8294656, -15638513, 13974213, -38141992, +-14564234, 12628278, -23298050, 12793634, -6357089, -9235253, 12580496, -3823595, 18947786, 18152142, +3985730, 11296301, -5162014, 2359548, -13554917, 14662481, -10525891, 8759586, -14191646, 10520522, +648003, 4736275, -1280437, 148713, -8173860, 9735080, -10696079, 1923072, 1166621, 5513128, +-11727408, 6152004, -4769025, -3188476, 3645354, -2398202, -5519570, 7945153, 3279208, 8486855, +3676492, -781147, -3983045, -3923990, -1087164, 1659468, -5575942, 2052458, -4071092, 2058363, +-11215770, -5761162, -4597226, 5840619, 6630356, -3590056, 1491964, -1568737, -9321153, 20170778, +24159, 11156178, -21056614, -1587527, -19929186, 20900384, 9290014, 27347668, 19311246, -9713069, +3728569, 21600464, 11138998, 10991895, 7093139, -18364744, -5206037, 9016210, 1500554, 10650445, +-23360864, -17381732, 10635413, 35049080, 4830765, -11604465, 22207128, 6300180, 13902272, 3650185, +2768107, -19798726, -20092394, 342524, 395674, -34660924, 2863670, -7134478, -1721208, 10945724, +-13458280, 8268886, 27276264, 2840047, -44303660, -31919660, -5139465, -9838696, -10971494, -351114, +8137890, 7009924, -10817412, 12273943, 11718281, 10544682, -6802155, 9072582, -4946192, -11566347, +-2669322, 10132902, -33050848, -7584912, -14889578, -17289390, -6811282, 4635344, -8732205, -934692, +36527088, 20714628, -13952201, 97711, 474057, -6314139, -6436009, 3176665, 24521578, 8913668, +3770981, -7612293, -5439039, -12718472, -14562087, -15622407, -3506304, 1974074, 4910222, -5489505, +4395362, -1325534, -3489661, -1377611, -4107599, -13721884, -3340948, -151398, -3389803, -11872900, +1575179, -4316442, 12988518, -6551973, 4451197, -1339493, 5409512, -88047, -10368051, 868120, +12613245, 1893544, 11355357, -3128347, 5855651, -3628174, 3750043, -796180, -7668664, -3462281, +-737124, -1405528, -1443109, -71404, 7482370, 14288282, -19891604, -5077725, -8443369, 5253819, +41523744, 6526203, -20464982, 5366562, 18330920, -3980898, 17126182, 21787832, -11292006, 5116917, +11001022, 7477538, 468688, -3260954, -6773701, 3210488, 12930536, 6630356, 12075837, -18174154, +-27954332, -3018288, 12449500, 10945187, 8934606, -3224447, -25788058, 8258685, 5703180, 38562900, +40577776, 9602473, -30213484, 21805012, -11513197, -30909270, -7226283, -36572184, -27841052, -12327630, +-13419088, -28369870, 4927938, -11457899, -32447404, -29721710, 8568997, 19233400, -3187403, -25096030, +7439420, 679142, 8010114, 15735150, 15365246, -19425600, 25016038, 17154100, 2179696, 6874632, +17406428, -947577, 45532024, -32506996, -15527917, -1126355, -37047852, 30367566, 2215666, 38182796, +11797201, 8514773, -1935957, 7536594, 16196322, 599685, -15083388, -279173, -8052527, 6027450, +5833640, 10894185, -4585952, -13991930, -93952, 12934831, 6135898, -8311836, -4141959, 6788196, +-9299678, -73014, 200253, 11882027, 4660040, -6519761, -2825015, -7402913, -11944304, -10364830, +-573915, 2245194, -5921686, -4363687, 1389422, -5980742, 9357123, 4554813, -112206, 5616207, +18898392, -7196755, -3597035, 2127620, 5075041, -10196789, 11076721, -3732864, -341987, 1890859, +8283382, 13939316, -20240570, 5311264, -40421012, -10954314, -2504503, -9948755, 44377212, 13982803, +-11787538, -27884002, -14134201, -11480984, -17661442, -12967043, 6787659, -40705552, -8760660, 29867740, +-3534221, -3362960, -31095026, 29655138, 14704357, 660888, -11791296, 12633646, 6274411, -7092065, +13543106, -21024938, -5572720, -10743324, 6030671, -4918275, -13237626, 15024869, -11290932, 6260452, +438087, -20429012, -12710956, -3198140, -25550760, -25103546, -33590940, -8685498, 15413564, -11294153, +-6150393, 19369766, -23638426, -19452980, 20959978, -184147, -1207960, 18855444, 282394, -16164646, +-9269613, 6352257, 13656385, -20881058, -6546067, 25373594, 10982231, 24482924, 12709345, -5034239, +12915504, -1005022, -33172716, 10405632, -25092272, 18175228, 3194382, 6652905, -10552198, -28722594, +6056441, -4303021, -24893630, -10006200, 11196443, -12664248, 541166, 3904125, 8159364, -8134131, +459562, 1187022, -2124935, 5178657, -3711926, 2890513, 10241886, -1911797, 3526168, 2661269, +-6600828, 2066416, 4929549, 2768643, -4922570, 6703370, 4693863, -516470, -6901476, -14190572, +2945811, -11234024, 9137006, -11469710, 7538742, 9346923, 475131, 518617, 304406, 5302137, +863288, -4902169, 11060078, 8794482, -4332549, -6929930, -11546483, 30285962, 10573673, 1117765, +3697967, -7909719, 12008192, 18662706, 47278464, 41293964, 3570729, -18179522, 8410083, 23943906, +6843494, 18540836, 13372381, 8978629, -14013405, -17995376, -21626770, -1507534, 8034810, 15232102, +30713848, 16253767, 19697794, 11454141, 18262738, 9215389, 17592186, -11748883, 3316789, 33205466, +-892816, 25545928, 6771016, 20659866, -32779728, -5331128, -9662603, -9658845, 7645042, 12767327, +23741506, 38408280, 32172526, -11404212, 5713380, -42652248, 10361072, 9821516, 37580428, -29875256, +23767812, -7756711, -20943334, 16049219, 4952634, 13394392, 23541252, -7659538, -30149060, 15604690, +-19382650, -26578868, -12633646, 35560720, -30868466, -43815644, -22111566, -7260106, 23110682, -2412698, +-15756624, -30240864, -22830972, 14461155, -2065879, -565862, 19588272, -21336860, 6101001, 21908628, +8533563, 14666776, 21220360, -14371497, -7241315, -12146168, 16230145, 3603478, 8356933, 5915781, +-14605036, 18138184, 4482872, 2874407, -7154879, -26519812, -25333864, 2524904, -12057047, -5004174, +-11436424, -9946607, -4365835, 4672925, -151934, -11186242, 14283987, 11970611, -1611150, -12698071, +2081449, 7646653, -9074192, -4111358, -5211406, 105764, 6172942, -2850785, -6272800, -5078799, +4340602, 3631395, 6963216, 8684961, -4553739, 4962298, 5374078, 29707752, -9371082, -32829120, +2303713, -13711683, -46932720, -23738284, 61550640, 8608188, -27799176, -30521648, 3434900, 544924, +12710419, 15979963, -21530672, -14294725, -34346852, 7996692, -12463458, -8244727, 52476448, 11270531, +-7266011, -54169740, -3506304, -28924458, 28660316, 35413080, 3704946, 27551678, -32466194, -12768938, +-20516522, -4842576, 53586160, 66748624, 10649908, -17814988, -23848880, -48189532, 648003, 6236830, +58254252, 32518808, -8527658, -95784752, -49629420, 8249559, -9208410, 84136800, 28187870, -40377524, +-16813186, -72086192, -22827214, 2542084, 47140488, 48652852, 54608360, 2605972, 12931073, -5740224, +4707821, 67189928, -24802900, 49356152, -11960410, -50673096, -15181099, -53717156, -17264158, 70350488, +31978716, 50233400, -16654273, 39395052, -44109316, -7026030, 10481331, 21001316, 41777684, -14097156, +-912144, 2639794, -3962644, 6460168, 11143293, -11950747, 1816771, -12566537, -22738630, 10226317, +18471044, 10305237, -2400887, -13648869, -30422328, -29955250, -15804406, 10142028, 27996208, 15780784, +21655762, -29446832, -38612292, -29778618, 3344169, 33823940, 37554656, 28855738, -17244294, -73536816, +-47265580, 1433982, 37015100, 79915920, 30961346, 6571300, -36389648, -47936128, -16660715, -15253576, +41878616, 46286324, 17299592, -2743410, -40172440, -30128122, 9175124, 13839995, 34061240, 16557099, +-17607218, -12319577, -21082384, -10031970, 9893994, 9047885, -42673720, 47327856, 79994, -12333535, +-73531984, -19794430, -19857244, -33175938, 71185328, 762894, 31891742, -48657148, 27015882, 22687090, +-21895744, 14247480, -4211216, 12736726, -11274, 36422396, 12858058, -35328792, 21334176, 17614734, +-125628, 24596740, -18190260, -9327058, 30848602, 21643950, 20540144, 10279467, 17868674, -53243636, +46468324, -26714160, -17028472, 10190884, -37363532, 54575612, -15540802, 5504538, 39363912, 1418950, +-6029597, 21474836, 21863532, 38676716, -9465571, -35785132, -36576480, 4131222, -13237089, 17001628, +-22143778, -10671383, -15008763, 11014444, -68702832, 1200443, 50918448, 14187351, 20697984, -1837172, +-5666136, 13513578, -18181670, -20659866, 12731357, 7177427, -22406308, -24761560, 94551024, -10151155, +-30826590, 8679592, 44281648, -1154809, -35003448, 14464913, -6626061, -13152264, 28478318, 36318780, +-26598732, -43331388, 9740449, 10521059, -10088341, -25891136, 1218160, 13160317, -4068945, -4154307, +-1796907, -4415764, 6888054, 7795366, -8993662, 1037772, 3818226, 2001455, -5440650, 2049773, +-375273, -11969537, 8580808, 3749507, 16675747, 8359617, -6437082, 6887517, -3389803, 9914395, +-782221, -2523830, 13587129, -3347927, 9285719, -2698313, -10821170, -893353, 12223477, -3416647, +13924821, -13224204, 17503066, 4168803, -12706661, 5348308, 207232, 6502044, -2196339, -5051419, +-1344862, 13749801, -36681168, 13063680, 57882200, 91163904, -40308268, 29716342, -60186988, -17737142, +-36666136, -4995584, 56018720, 59456308, 47245712, -1477469, -37729676, -22809498, 20542292, 1552094, +10303627, 31079994, -570694, 15476378, -39549668, -10077604, -22877144, -27851790, 15291157, 12749074, +862752, 27875948, -23661512, -837519, 6276558, -33347736, -921271, 2350958, -21088290, -7948374, +7907572, -14076755, 31412318, -10264435, 47582868, 35996120, -23460186, -6575058, -32610612, -37262600, +-48400524, 15486041, 22308598, 64698852, 49334680, 23060216, 31351650, 6012954, -35638564, -23551990, +-19966766, -24257976, -5161477, 13584445, -1313723, -16669305, 4335770, -16819092, 10569915, 24103356, +4692252, -25144886, 19643032, -12057047, -12808666, -25164750, 13012140, 11156714, 5700496, 3081639, +57028040, 43589088, 35642860, 6047851, -8293045, -48324824, -10136123, -5061082, 47498580, 27214524, +12364137, 14347338, 41133440, -6578816, -16415902, -22254910, -18644990, -8791261, -4198331, 3717831, +470836, 261993, 21325050, -2521683, -12791486, -7861401, -4416300, 405338, 10522670, 18998250, +8295730, -2470680, 11745125, -19793356, 7657390, 18059264, 7340099, 35661112, -14717779, 151398, +6039798, -15005005, 3818226, -23820426, -1304596, 8193724, 202400, 9552007, -6873559, -98972152, +-57332444, -33006824, 56899728, 26718454, 151434640, 142380848, 147048400, 148809872, 159362080, 112170048, +58497456, 84954456, 50984484, -25337086, -47205448, -72698224, -141491248, -127397856, -132189968, -95741264, +-97126392, -71905808, -59697360, -31661962, 3192235, -55934968, -28683940, -11565273, -8892193, -30245696, +7758322, 37929928, 42469172, 15897285, 50184544, 64004140, 15795279, 12648679, 12600360, 62896576, +65410204, 82695304, 92433600, 81021872, 91796336, 139584288, 56501904, 109003584, 148580640, 95664488, +112772960, 88794152, 44378288, 53079892, 58562416, 52206940, 70757976, 69860328, 43251932, 8553964, +21483426, 41210212, -2618856, 4862977, -19811074, -22673132, -70164200, -31477278, -121568512, -152609312, +-122353952, -139229424, -189642128, -182987616, -108608448, -204403936, -185615072, -169261984, -191619968, -161540704, +-123368640, -154789552, -114045880, -31465468, -75756240, -93522376, -37067716, -36899136, -30486214, -33470680, +-14964740, 9385577, 19228032, 37520836, 48399988, 55624120, 62513248, 64763812, 91183232, 56041272, +107426792, 120423904, 57272316, 111874768, 106249976, 67575408, 81439024, 118371448, 80400176, 133591736, +100753488, 126689184, 88607320, 80711024, 83516712, 78212432, 61304216, 70387536, 61072824, 48525076, +36436356, 35748624, 28918552, 12790949, -8905078, -6702297, -5021891, -41681048, -68319504, -65333968, +-67308576, -73023568, -67900208, -75548472, -54877336, -56453052, -46395312, -33914672, -26711476, -30027726, +-29898342, -22257058, -15744813, -16895328, -22944790, -11113765, -5379447, -12097849, -19443854, -9938017, +-6550362, -8323110, -9280351, 1234803, 3693672, 5188321, 603980, 1806571, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 10777147, -565325, -710817, -370978, -846109, -5516886, -5599027, 5360656, 1287417, -3201898, -4889821, --2353642, -3695283, -6370510, 8149701, 987843, 2952253, 4065187, 11740830, -299574, 1874753, --2827699, -1044214, -2174864, -7653632, 1708860, -2341831, 756988, 5318780, -2099702, -523449, -1158567, 562104, -1263794, 248034, -7070053, 1466195, -169651, -2538863, 2211908, 1013075, --4758824, 7509751, 263604, 1077500, 6990060, -2716567, -3019362, -6895033, -3491809, 4756140, -298500, 5069672, -2485712, -5641440, 2451890, -5259188, -2351495, -10147397, 4169340, 3542274, -2161979, 3045669, 6957847, 1796907, -3055869, 3746285, 5778879, -3791383, 2860985, -32212, --1220845, -1973001, -1557999, 3882114, -789200, 4308926, -2186138, 1720671, -1349694, 1554241, -3149285, -1726040, 1147293, -1198296, 2544768, 2047626, 1743220, -897111, 603443, 46171, --1419487, 685047, 2486249, 415001, 842887, -1496259, 976568, -828929, 578210, -1155883, -246961, 1439351, -4263292, 1148904, -2638721, -5406827, -526670, -6386617, -7740605, -4894652, --3707094, -8543764, 345745, -3088082, -1716376, 2624225, 9100499, 829466, -2160369, -1046898, -1464584, -180926, 3781182, 6455336, -544924, 7248831, -833761, -477815, -867583, 4127464, --5459441, 847182, 662499, -1343788, -310848, -3264175, -5425618, 7451769, -2536178, -557809, --1328756, 3286187, -3546032, -3055332, 1299228, 1102733, 5207648, -3575024, 4289062, -2509335, --4294431, -341450, -1774358, 1162326, 2336999, -96637, 3032784, 1439888, 2210835, -2877628, --3377455, -5599564, -4112431, 521302, 6681896, 840203, 5427228, 1404991, -2794413, 3728032, -1772211, -4035659, 7071127, 1175210, -6658810, 1731409, 3018288, 594853, 2004676, 1728188, --4717485, 1716376, 1652489, 1159641, -271120, 3469260, 1168231, -892279, -1139240, -27917, -1389422, -43487, 1886564, -62814, 91805, 1084479, -450972, -1038845, -666257, 184147, --921271, -988379, 1214402, -119185, 1165547, 1020592, -284005, -105227, -7925826, -7044283, -1493575, 792421, 5896990, -4567161, 6066105, -3098282, -1376000, -9556302, -635118, 608812, --3299609, -598611, 5092221, 4796405, 7220914, -1804423, -1134945, 4485557, 2093797, 4023311, --9865003, 9699647, -2131915, -180389, 1511292, -1237488, -110595, -921807, -708133, 5994164, --212601, 7884486, -1402307, -3304441, -6638946, 715112, -3027415, -2676302, 4524748, 3469797, -4732517, 100395, 551903, -7090991, -5110474, -136902, 6361921, 2152316, -864362, 2080375, --2708514, 6755447, -405338, -5951751, -7515656, -2733210, 8337069, 6265821, 6430103, 2943663, -204548, -7072738, -3171833, -1051730, -4138738, 4261145, -774168, -2022393, 3659849, -10044855, -2955474, -1336272, 2339684, -823023, -2889439, 4495757, 1690607, -4779225, -5060009, 2518462, --1334661, 2944200, 783832, -2180770, 1529008, 1863479, -104690, 701690, -15569, 191663, --858457, -38655, -1403381, -8053, -1224066, 1960653, 1071058, -1527935, 744640, -406411, -515933, 512175, 682363, -1140314, -983548, 336618, 729071, -2079301, 1998770, -2255932, --4347044, -718333, -3367791, 1539746, 5449240, 2134062, 191663, -2223183, -12671227, -8353712, --275415, 3665755, 4435091, 253403, 893890, -1790465, 4396973, 1946694, 3522410, -5526013, -5233955, 3003793, -5957120, 2228014, 5456756, -302795, 1762010, 885837, 4947803, -3852586, -2935073, -506269, -671626, -4738960, 285615, 5064840, -3237332, -2345589, -4439386, 5945309, --585726, 1154273, -4670240, -13304735, -3882651, 1950452, 1222455, 4910758, -3543885, -2189360, --2022930, -892816, -4280472, 129923, -3865471, 8712341, 3061238, 7106561, -7205882, -1422171, --2992519, 6658810, -2034204, -1232119, -5551245, 3438658, -120796, -3711389, 5666673, 1753957, -686658, 6502581, 1386201, -5708549, -804233, 687195, -1557999, -1929514, 34897, -4849018, -9607305, 3958349, 1390496, 5988258, 2593087, 2364380, 4395362, -1264331, 3718368, -2139968, -634581, 381178, 216359, -1116155, 665720, 284542, -360777, -654446, -629750, 457951, --499290, 38655, 3181497, 330712, -100932, -57982, -49929, -434329, 2523293, 650151, -3537443, -2817499, 2245194, 212601, -1456531, 6012954, 4573604, -463320, -8202314, -10941966, --8458938, 3131568, 2147, -4726075, -1237488, 554588, -1080721, 12313671, 2121177, -8896488, --2370822, -2659122, 442382, -4187593, 6958921, -5204964, -6828461, 6375879, -2687039, 1750736, -1686848, -2916283, -8038568, 1070521, -4287451, -3781719, -3941169, -490700, 6245420, -864899, --1425392, 9240085, 1687385, 1414655, -11931956, -1331440, 6349573, 7443179, -4126927, 2018635, -1008244, -11766600, -1585380, -723165, -1211181, 2961380, 120796, -6602976, 846645, -5281199, -5046587, -1800128, 6498823, 1294396, -7490423, 3306588, 14011794, -5455682, 105764, -10463077, -2514167, 8785356, -15782931, 2240362, -1142461, -1377074, 3896072, -2556579, -4139275, 7384123, -7047505, -6127845, -768799, 4617090, -2088965, 1077500, 2153926, 1355062, 418222, -1801739, -3913252, -121870, 2546379, 90731, 3491272, 2381023, 2188823, -206695, 724239, 3904125, -386010, -828929, 1340030, 1198833, 426276, 3237869, -1850594, 1012539, 478352, -751082, -192737, 1150514, 773631, 368293, -357556, 10545755, 1312113, 4729296, 7472706, -9213779, --2827699, -7031399, 3537443, 4080219, 8115341, 15709380, 2473364, -11980811, -1119913, -3011846, --1242856, -5181341, 19327, -579821, 5938866, 4727686, 1721208, -424665, 237834, -1845225, --1370632, 6804302, -2219424, -911607, 5085242, -638876, 2996277, -507880, 6472516, -4941897, --9785009, 12170864, -717260, 2889439, -9159555, 674847, -2786897, 13503914, 2127620, 6112812, --1278827, 5420786, 3648038, -12222403, -1926830, -6863358, -5900748, 823560, 8613020, 1080721, --1730872, 13370233, -1416802, -7556458, -5770289, -3954054, 6562173, 20201378, -41876, 5605469, -1449015, -6439767, -1414118, 110595, 5994164, 9183177, 844498, 7380902, 6585259, -12097312, -400506, -2161979, -308164, 6061273, -2705830, 1574642, 2862596, -933082, -6212134, -4313221, --9073655, 2170032, 3616899, -457951, 1396401, 1334124, 1102733, -111669, -2817499, 595390, -1336809, -161061, 1238024, -1473711, 2416993, -210453, 1214402, -670552, -434865, -1170379, -307090, -629750, 425202, 1995549, 3209414, 2651069, 402116, 690953, 1966021, 1089848, -61740, 1107028, -3595961, -15602006, 3535832, -1578937, 5350456, 3427384, 14518600, 2919504, --2752000, 3476776, 11107859, 12294881, 5073967, 8657580, 8855686, -6877854, -5345624, -11141682, --12038793, 1308354, 5182952, -10187126, -7247758, -562104, -11782706, -9769977, 4940823, 1574642, --5240934, -3494493, -7734699, 6403260, 4674535, 10535555, 20037634, -2236604, -5697811, -2153926, --9894531, -130460, -7713225, -8533563, 10260140, 1158031, 1399086, -13215614, 13617731, 2695092, --8506183, -2742337, 7001871, 456340, 1504312, -246424, 1125281, 3974992, -6519761, 7614440, -151934, -5370857, -1512902, -9192841, 1410897, -9438191, -8380018, 7211787, 7444789, -7509751, --11927661, 3016678, -5761162, -876173, -3193845, 3989488, -3428995, 5269925, 1673964, 6383395, --1469416, 4763119, 2445447, -10707890, -3758633, 2610803, 1387274, 173409, -5303748, -3001645, --1598265, 3514894, -2059974, -1792612, 139586, 2811593, 2184528, -141734, -168577, -3084324, --1665374, 570157, -738198, -328028, 2500208, 255551, -187905, -2270964, 2157684, 675384, --832687, -454730, -1526324, -306016, -1687922, 2272038, -574989, 1036698, -671089, -5950141, --6492917, 7844758, -2418604, -1865090, 4541391, -6562173, -6891812, 7908109, 10597295, 156229, --647466, 3563212, -9122511, 15533823, -9554155, 1101122, 7441568, -3567507, 6942278, 8364986, -2761664, -8844411, 9496173, -1446330, 3564823, -6941741, -1299228, -13173202, 4515085, -7838316, -3003256, -13557064, 7932805, -9918153, -6914361, 5629092, 7830263, 2609730, 857383, 300648, --8515846, -7917236, -5054640, 20558398, 11280195, -3259880, -19086834, -2710661, 5343476, 11081016, --6300717, 886911, -13201656, -4544613, -1656247, 3415573, 1904281, -2968359, -267362, 5774584, --6553583, -365609, -7466801, 4042638, 4829154, 14220100, 6005438, -6909529, 2899103, -3844533, --10779831, -1352915, 6178311, 890669, 17669496, -10124312, -4980015, 2747705, -9261023, 4723391, -1441498, -1725503, 8959302, 2243584, 3937948, 88047, 292058, -1381906, 4413079, 6648610, -1566053, -1886028, 4827007, -2508261, 1494112, -4545686, -1559610, 18790, -6048925, -74625, --2371896, -1037235, -2367064, -3873524, -1835025, 1373316, 1493038, 1085016, -1296543, -157303, -2632278, -4362613, 431644, 417149, -13570486, -1995012, 2784750, 8011188, 3901978, 10459319, -1907502, -12502650, 7962870, -10576894, -11319386, 316754, -1024887, 8618389, 10716480, 9855339, -14375256, 3517041, -14821395, 16237661, 8883603, -6554120, 12497818, -1608465, 1533840, -10947872, --3779034, -3151432, -4844186, 10478646, -17576080, -3969087, -8249559, -7847979, 1469416, 8490077, --3997541, -10140955, -10750303, -14012331, -14158360, -7192460, -2392297, 6127845, -11108933, -14416058, --8506720, -3622805, -7059316, -4721243, 12593381, -7055021, 1205812, 6684580, -11381126, -6763500, --7662222, 12394739, -5257577, 8077760, 17764522, -1710471, 4006131, 1747515, -5410048, -7113540, --4846871, 8394514, -1222992, 9609452, 603443, 7258495, 1714229, -12169253, 15118285, -6496138, --1899449, -12928388, 7967701, 16992502, 2893734, -2309082, 4532264, 1982127, -10844256, -5055714, -667331, -2554969, -1145146, -4667556, -4559645, -740345, 833224, 694174, 7915625, -897648, -1025423, -3894462, 3021510, 339302, 5953899, 2591476, 2698313, 1137093, -692027, -2538863, --2133525, -3531537, -752693, -2656437, 1797981, 926102, -41339, -1846836, -1559073, -1349694, --525597, 632434, -620086, 3264712, 25151866, 15858093, 11541114, -8339753, -18103824, -4887136, -11023570, -17148730, -9342628, 330712, 13471165, 9654013, 7827578, -9936407, 7499013, -2677375, -7496866, -1966021, 19477140, 11673721, -960462, -17914308, -1842541, 13576392, 11553999, 478889, -23611046, 10676752, -4741107, -11274, 1634235, -2794413, -6589017, -9094593, -1425392, -25530896, -7237557, -8759586, 1218160, -900869, 6671695, 9496710, 244276, 2526515, -11388643, 8116952, --4136054, 16902306, 390842, 2413235, -41176924, -1771674, 10990821, 5671505, 11689827, -4008278, --11527692, 6405944, 2239289, -9446244, 8995809, 1823214, -9052180, 132607, 390842, 3158949, --3324842, -15074798, -15101105, -620086, -5431523, 5064304, 5326833, 2240362, 5669357, -18458158, --6325950, 951335, 4095788, 4457639, -7348689, 5798743, 1354525, -2641405, 1953136, 5231270, --3476239, 703301, -1121523, 2164127, -3536906, -5531918, -1867237, 6581501, -4975183, 702227, --3717831, 2637110, -1538135, 2334852, 3792993, -456340, -3773666, 3089155, -638876, -4412542, --2815888, 1587527, 2040110, 243739, -1784022, 879395, -360240, 2723546, -1286880, 5278515, --1805497, -338766, -17376900, -27957016, 4509179, 9677098, 10051834, 234613, 23232014, -16529719, -5446556, 3175592, -4715337, -14674293, -6182606, -8348880, 9849971, -4332012, -9039296, -14936286, --1385127, -5524939, -2858301, -11268384, 5998459, -715112, -5276904, 6056441, 7714298, 9128953, --11872363, 21665426, 1310502, -3126736, -13320841, -12525735, -2552821, -1655173, -12993887, -13547401, --10397579, 8717173, -6026376, 14463302, 4626217, 24142012, 8279623, 9154723, -3110630, 12936978, --2264522, 3099893, 18344880, -5612986, 6648610, -22091164, -28115392, 6105296, -1340030, -17862232, -1100585, 416075, -24268712, 6801081, -7158100, -4825933, -9486509, 9125195, -8864812, 475668, --991064, 4383551, 10201, -13307419, 7777649, -1945620, 3088618, -16776679, -23128936, -20609938, -1129576, -4911832, -23419382, -4959077, 22472342, 11819213, 5201743, 4257387, -10406706, 313533, --2399813, 975494, -3435974, -2799782, -134218, -285078, 882616, -62277, -7270306, -1775969, -1901060, -1392106, 3484829, 5705327, 4792647, -81068, -818191, -2521683, 7605314, 4359392, -5002563, 4150549, 3061775, -592706, -2911988, -2636036, 5932961, -4625143, 3535832, 4973572, -1946157, 2441152, 398895, 1452773, -4019553, 342524, -1163399, -3464428, 1655173, 4502200, -17013440, 22207666, -609885, 5915244, 14047227, 11515344, -1154273, -28256590, 19372986, -1897839, -5290863, -5753109, 9942312, -688269, -12208981, 3455301, 22258132, 3417183, -14577656, 12876312, -9211094, 6034966, -10961830, 11849815, 8789651, 1059246, 14148159, -5618354, 3795141, 22789634, -16604344, 692027, 5258114, 11207180, -21488258, -4309463, -1371168, -3334505, -18830748, 4853850, -5690295, 1117765, -14606110, -193810, -25002078, 1371705, -17870286, -3498251, 9190156, -7589207, --10824928, -8662412, 5292474, 4399121, -9991168, 3986804, -3618510, 12357158, -6432788, -7212324, -6405944, 11547020, -1131724, 5045513, 4429185, -27272506, -653372, -1990717, -13942001, 1463510, -17747342, 5434208, -5013838, -2178622, 12960601, 9126269, 5649493, -3660386, 20578798, 215285, --17133162, 2302103, 20594368, 10698227, 10449119, 6193343, 1111860, -5087926, -5848135, 3718905, -3339337, 4894652, 7726646, -1924145, 6099391, 3716221, 595390, -1059783, -640487, 2727841, --2798171, -1088237, -2775086, -79994, -1316408, 3003256, -6227703, 1049046, 2109366, 649614, -4734665, -8426189, -3519189, 1399623, 1598802, -867583, 4845260, -1814624, -1625645, -2360622, -545998, 3094524, 3670587, -4711043, 680215, 2130304, -4300336, -2760053, -2381023, 10858214, --24999930, 10623602, -25888990, -30714922, -19870130, 1301912, -16953846, 16509317, -5198521, -20650202, --718870, -5247377, 2784213, 3854196, -4838281, -2660732, 13602698, -4061429, 5177046, -7419019, --7413651, 21684216, -7320235, -2482491, -671089, 4947803, 13340705, -27210228, -1862405, 14588393, -14052596, 13207024, 1721208, -4919348, 27983860, 9512279, 8803609, 10951093, 4952634, -3930432, -173409, 16513612, 5310190, -11636677, 6145562, 30393872, -16061567, 21014202, 7673496, -32036698, -7738994, 21563420, -2359011, 9717900, -139050, -24270324, 12265890, 30292942, 1695975, 20613696, --12475806, 18243410, 15049565, -448824, -2733210, 16751983, 8845485, -21932250, 21966610, -5388574, --5021354, 13378823, -6460168, -7856032, -9805410, 3475702, 1141388, 3710852, -921807, -4400194, -16507707, -14699526, 2546379, -3001645, -4816269, -12002823, -11434277, 6792491, -865436, -7376607, --10200010, -8520678, -14532022, -10282152, -565862, -7103876, -4271345, -1016834, -7528541, 3219078, --6624987, -6803228, -1839320, 1730872, 2432025, -3401077, -414464, -10677289, 4288525, -11201812, -8606578, -2839510, -696322, -4888747, -2665564, -511101, 12885439, 6487011, -1297080, 3105798, -8879308, 4852240, -4823249, -2263985, 3504157, -4363687, 7255811, 1659468, -2751464, -9733470, --17276506, 41490456, 20529406, -48380660, -19943680, 5135171, -8019778, 13976897, 16455093, 17657148, -20198158, -12408697, 38267084, -5759015, 966905, -12525198, 14421426, 19216758, -13847511, -15796353, --3321620, -9097278, 1703491, 7664369, 1187022, -9943923, -3753802, 15758772, -1251446, 7963406, -1928440, 18963354, 28427852, 10781979, -13657996, -32020054, -2677912, -5435818, 3614752, -7410966, -10574746, 17748416, 1617055, -6579353, -14616847, 35007204, 30626874, -4062502, 14962592, -8333311, --11172821, -33723008, 18655728, -15736223, -3610994, -1009317, -10524280, 5906654, 20729122, 3166465, --9123047, 9830106, -4212289, -13922136, 21197274, 4300336, -29335164, 37610492, -25462176, -13650480, -14563160, 14927159, 12528956, 211527, -31333934, -2699387, 2771865, -1823214, -10283225, 6072010, --5368709, 2219424, 3911642, -13015362, 15054934, 10473815, 5058398, 2019708, -6152004, -4570919, --287763, 5305895, 479426, 4092567, -2443837, -10081899, 3063386, -14777372, -4672388, 4699768, --4357245, 8082055, -6839199, -1012539, -5810554, 6439767, 570157, 7920457, 9215389, 6330782, -272730, -6976101, 5067525, 8566849, -1691680, -1002338, -9176734, -4050691, 10659035, -3643743, -7198902, -625455, -4006668, 3777424, 3577708, -220117, -6046240, 11009612, -13350369, 1488743, -19088446, 5660767, -25897580, -20773146, -4972499, 32402308, 3388729, -15560667, -41794328, -11627013, --1897302, 9924059, 28767690, 22038550, -3075734, 273267, 18925774, 15400679, 718870, 4223027, --56398288, -35560180, -17326972, -27866284, 2423435, -15544024, 24958592, -5713380, -1955821, -121870, --10050760, -11476689, 18085034, 11269457, 6401649, -2557116, -8611409, -7713225, 9009768, -20211042, --7572564, 3575560, -7006703, -9842991, 8429947, -29213294, -40877352, 9722195, 12773233, 15865072, --23870354, -12692702, 13218299, 5018670, -39848708, -34999152, 2127083, -16938278, -17521320, 6517613, --32193464, 16337519, -12453258, 13426605, 12884365, -7986492, -18144626, -41929080, -14698989, -12596602, -23536420, -20343112, -13267691, 7176354, 24059870, 14025216, 134755, -8189429, -2694555, 7198902, --7215008, 24314346, -15066208, -11809013, -5706938, -2113124, 6685117, -17911624, 10549513, 8086887, --7503308, -12542378, 2917894, -726923, 12212203, -15664819, -20432770, -5183489, 3233574, -11303817, --1701881, -13669270, 591632, 3334505, -6150930, 9537512, -2569464, -6759205, 2962454, -4568772, -2782602, -3892851, -14200236, -624381, 1042603, 13556527, 10633265, -6525129, 48855, -730681, --8017094, -10256919, 4974646, -2605972, 16578574, 22886270, -3692061, -30660160, 13882408, -4548907, --12843026, -26422102, 7880728, 11391327, -39294120, 14899778, 13943611, 35492536, 3193308, -8806294, -2186675, -43276092, -12596602, -5193153, 561567, 8008504, -14820322, 26643830, 10639171, 32916092, --6595996, 28962576, 18548890, 11494406, 26331370, 13402982, 17376900, 22443352, 979789, -29222958, --27638114, 5697811, 31644246, 22919556, -42161008, -1154809, -7140920, -5870147, -4425427, -29152628, -7481833, -20750598, 18728204, -13863081, 42258720, -11057930, -60625612, -6389301, -20892332, 12115566, -9003325, 17330194, 39346196, 8854075, -5344013, 21606906, -12717398, 44028248, 7401840, 29479044, -13830868, 2748779, -11143293, -10016937, 72156528, 499827, -49803904, -9943386, 39811124, -23718956, -5226439, -10902238, 17481590, 36625332, 21109228, -42098196, -2716567, -41441604, 5776731, -5648956, --24572044, -2823404, -6636798, -10808822, -51540, -21182242, -23331872, 8162049, 8832600, -1073742, --26111790, 18964428, -23133230, -35760436, -15251429, 9017821, -8870181, -15883863, -20550344, 3874061, -8719320, -18568218, -14231374, 7015292, -8236137, -14959908, 12331388, 9922448, -863288, -1781875, -733366, -3338263, -6132140, -6456410, 2426657, -13791677, 8188355, -4853850, 3129421, -17563196, -19862614, 8601746, -41219340, -15463493, -46809236, 7136088, 41261212, -30403000, -28509992, 27263378, -12817793, -46663208, -44222056, 14179298, 2340757, 6492917, 15054934, -1842004, -13276818, -6750615, -28258738, -20231444, 34893924, 5688148, -8170639, 7460358, 20160040, -66035, -6035503, -37338836, --16387448, 4151623, -20010790, 17273284, 25791816, 1869385, 4271345, -26709864, 31865436, -11181410, --14242112, 25995826, -9982041, 63888, -18635326, -1882806, -13100187, -45913736, 15767899, -5132486, -34142304, 43797392, -636192, -7803956, -27747636, -8760123, -7719667, 41678900, -39604432, -27948962, --65650724, 1553168, -27175868, 7553237, 22786948, -12267500, -3419868, 44805100, 28895466, 20443508, -3535832, 2065342, 34000036, -36841692, -1599339, 10486700, -4348655, 20357608, 9764608, 86453400, -13671955, -23593330, -1321776, -16160351, -42596412, -16866336, 1589675, 7254737, -8201777, -8815957, --8061654, -30419642, -380641, -2487860, -16158204, 4329864, 10854456, -26075820, 1714229, -17685064, -6940131, -1188632, -6142877, -3491809, 1520418, 15397995, 8981313, 712428, 17038672, -10439455, --2198487, -4952634, 16037945, 10751914, 7636989, 16508244, 7682086, -11731703, -5632313, -1896228, -8182450, -14766098, -3795677, 511101, -16674137, -5153424, 3046743, 39967356, -29358786, 10187126, --10080288, -14249628, -13894756, 60410864, -8102993, 29662118, -23952496, 41220948, -14300094, 619012, -22200686, 23814520, 56834764, 2729989, 9287867, 8366060, -24148990, 29367376, 9083856, -17220672, -28592672, -11921219, 36013300, 27555974, -8522289, 23985244, 1105417, 22402550, 4494147, 37963752, --23156316, 18978386, -38318088, -9519258, 12867722, 41161356, -1799591, 3412352, 17701170, -33823, --13842680, -49345952, -30565672, 8572218, -21226802, -814433, 15631533, -42968464, 26382910, -1753957, -31374200, -14782204, -29316374, -4968741, 81069656, 18556406, -73726872, 13147969, 18796388, 4758824, -80268640, -4679904, -59086400, 61500712, -20658256, -3779034, 67184024, -7036767, 44205952, 7305203, --39879844, 1889249, 68692096, -55832964, 29460792, -34133716, -38674568, 28916404, 17336636, -35212828, --12924093, -21783538, -11882564, -12636331, 6479495, -21457656, -4380867, 8898098, -22167400, -15715822, -11656004, -25834766, -6252399, 9485972, 3726421, -5734855, 19696720, -8184597, -6503118, -9164923, --17583596, 8910983, -11285027, -12857521, -2964064, 2612414, 26276610, 448824, 7557532, -21226266, -2385854, 28039158, -4991289, -2930242, -2004139, 1730335, 2128693, 19714436, -10024454, -11496017, --5719286, -18080202, -21735218, 6255083, -10706280, 4831302, 7155416, -2831457, -59272160, -4502737, -9341017, -22149684, -6276558, -62209380, 39604968, 60552060, -26386132, 8626442, -45832668, -134351408, --25496536, 6305012, 68467144, 57360900, -55874304, -49930068, -50170048, -41327784, -28981366, 35647692, --5895380, 78442208, 53333292, -15690052, -64530272, -161987920, -104619496, 7413651, 180211456, 137005696, -25395604, -70498664, -176747024, -181269088, -12873091, 105720080, 163697312, 179224160, 18813568, -57812944, --72967736, -97120488, -87207704, 5997922, 60911228, 112878184, 78005736, 62162672, -80438296, -98913096, --115971096, -139978352, 16073915, 168083008, 165907600, 33821256, -59391880, -157364912, -206188496, -69681016, -16271484, 76959912, 188817504, 69573640, -120796, -103770704, -84727896, -35640712, 43162812, 73891688, -129699960, 34027952, 67864776, -5279052, -86502248, -71621800, 4298726, 83715888, 91382408, -41357852, --79054240, -97001840, -24165634, 16066399, 23223426, 15007153, -48373680, -41856068, -17251810, 31224412, -122943, 667867, 7054484, 25016574, 20189568, 15680389, -8432631, -58986008, -39224864, 4601521, -30595736, 56680684, 27466852, -15790984, -37396280, -49383532, -30944702, -19737522, -25875568, 56848188, -59322088, 65154116, 54059680, -24903294, -103533944, -87678000, -47266116, 40143984, 131068984, 127107408, -7181186, -80014704, -125314800, -112710680, -7301982, 62820876, 59038620, 28792388, 25959320, 1650341, --33602212, -40205724, -50968376, -7521562, 47725676, 58698780, -15966541, 28918014, 22234508, -50995756, -556735, 26229366, -21069498, 28992102, -1177358, -5317170, -2079838, 5842766, 22042310, -8664023, -25974888, 17655536, 10581726, 11747272, 8925479, -2257005, -14860050, 24277302, -318901, 14809584, --8828305, 13185013, -4528506, -1902134, 8979703, -12024835, -12657805, 1853278, -5434208, 19648938, -19447076, -17819820, 8906688, -10619844, 12240120, 242666, 8045011, 3038153, 10436771, -12695386, -8816494, -14608794, -6305012, -2041720, -1619203, 11767674, -22232898, -4416300, -9158481, -19836844, --1723893, -7810398, 4771172, 18854370, -5638755, -26197690, 4243428, 16218333, 31729608, -1415192, -2827162, -17111150, -12948253, 14730664, 1374926, -5624797, 479426, 25844966, 11486890, 8135742, -14006962, 23812372, -26989574, 10754061, -4582730, -40346924, -4668093, 31160524, -5753646, 27719182, --1212255, 17201344, -20373714, 12578349, -13850733, -4159139, 27357868, -7894150, 2544768, 536334, --95026, 9953587, -19327, -4132832, -2304250, -796180, -1913408, 4961224, 7856569, 11409044, -1311576, -9845139, -4406100, -12717398, 4774930, -13185013, 7102266, 5351530, -4054986, 7299297, -2342905, -13675176, 213675, -76236, 4335233, -23445690, 8156143, 5124970, 2024540, -702764, --6482180, 7585986, -11853573, 11857868, -962610, -1513976, 3175055, -5789079, 10041097, -11388106, -3120294, 5666673, -18602578, 47546360, 81918984, 7001334, -53594748, 17987324, -4036196, 66428648, -31203474, 65299072, -6147172, -31010200, -8445516, 14497662, 27434640, 21486648, -12107513, 2127083, -11644193, 8481487, 25916370, -18101676, 4362076, -24417962, -3969624, 375810, 6269579, 12771085, -2782602, -10392747, 19841676, -1796907, -17564806, 23981486, -4110821, -8528194, 6340983, -3521873, -18622978, 29777008, 711891, 7809325, -10021769, -6200859, 17184702, 12502113, 14227616, 2869575, --9052717, -18654654, -19214074, -20816096, 16675747, 18391586, 17963700, 26867168, 28713466, 12473122, -1501628, -25042880, 15365782, -2641405, -22793928, 28186260, -2081985, 18554258, 9683004, -28148678, -7787850, -8326868, 6015102, 19123342, 3551938, -23519778, -16756278, -13851270, -24720758, 15097884, --1529545, 26015690, -278636, 4284767, 506806, -13981729, -9044127, 4971962, -21210160, 6448894, --230854, -4076998, 7630547, -11741904, 7159174, 4694400, -964757, -9938554, 13069585, -3272765, -11591580, -19562502, -14445049, -8491150, -7606924, 9283035, -3913252, -2398739, -2508261, -9782862, --5340255, -6004901, 5369, 18176838, 2413235, -4599910, -304406, -10551661, 7688529, -5866926, --1044751, -4017405, 8615704, -741419, 1133871, -1828046, -6256157, -4242891, -28952374, -64612416, -4344360, 89608584, 118366616, 101700528, 70055208, -2914672, 4304094, -51729660, -61686468, -103484552, --78303160, -83074328, -26999776, 7085086, 27022860, 45565844, 112878720, 94036160, 63225140, 20563230, --10024991, -40764072, -30468498, -42386496, -54056460, -29969208, -30943628, -37946036, -17762374, -24944634, -5234492, 17736604, 14780593, 48179332, 44348220, 39479340, 25711284, 29920352, 18719078, 35820564, -8548596, 31002684, 1305133, -8011188, -54050016, -23408646, -65131568, -75568872, -84667224, -66250944, --49894100, -17588428, 12695923, 48693656, 51729124, 40917080, 83977888, 68207840, 72732584, 67517424, -62844500, 25343528, 40615360, -16246788, -40565428, -42363948, -100017440, -99781216, -96569120, -102589048, --84755272, -28858960, -14339822, 22893786, 57223460, 62527744, 76206680, 91983704, 81889992, 63985884, -57964880, 42847668, 15886010, -1489280, -34487512, -50524384, -51147692, -58143656, -48959404, -54687820, --57213260, -48105780, -37660420, -18705656, 2109903, 24988656, 47800840, 44987100, 44140988, 52310016, -57549876, 44773960, 44595720, 20092930, -21121038, -15204184, -37029596, -46794204, -39329552, -32074278, --22808960, -28344636, -20791400, 2631204, 5814849, 10131291, 25145960, 22437982, 13969381, 3660923, -9356586, 9878962, 2691334, 12460237, -7876433, -8296803, -7046968, 4810900, -1621350, 408022, --920197, -1432909, -9473087, -6236293, -2992519, 9042517, -363462, 4274030, 986232, -4624069, --6285148, -2857227, -4555350, 1460826, -666794, 1704565, 460635, 2238752, -2809982, 2257542, --2128693, 613643, 453656, 4232691, -520765, 2398739, -1600412, 1698660, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +565325, -710817, -370978, -846109, -5516886, -5599027, 5360656, 1287417, -3201898, -4889821, +-2353642, -3695283, -6370510, 8149701, 987843, 2952253, 4065187, 11740830, -299574, 1874753, +-2827699, -1044214, -2174864, -7653632, 1708860, -2341831, 756988, 5318780, -2099702, -523449, +1158567, 562104, -1263794, 248034, -7070053, 1466195, -169651, -2538863, 2211908, 1013075, +-4758824, 7509751, 263604, 1077500, 6990060, -2716567, -3019362, -6895033, -3491809, 4756140, +298500, 5069672, -2485712, -5641440, 2451890, -5259188, -2351495, -10147397, 4169340, 3542274, +2161979, 3045669, 6957847, 1796907, -3055869, 3746285, 5778879, -3791383, 2860985, -32212, +-1220845, -1973001, -1557999, 3882114, -789200, 4308926, -2186138, 1720671, -1349694, 1554241, +3149285, -1726040, 1147293, -1198296, 2544768, 2047626, 1743220, -897111, 603443, 46171, +-1419487, 685047, 2486249, 415001, 842887, -1496259, 976568, -828929, 578210, -1155883, +246961, 1439351, -4263292, 1148904, -2638721, -5406827, -526670, -6386617, -7740605, -4894652, +-3707094, -8543764, 345745, -3088082, -1716376, 2624225, 9100499, 829466, -2160369, -1046898, +1464584, -180926, 3781182, 6455336, -544924, 7248831, -833761, -477815, -867583, 4127464, +-5459441, 847182, 662499, -1343788, -310848, -3264175, -5425618, 7451769, -2536178, -557809, +-1328756, 3286187, -3546032, -3055332, 1299228, 1102733, 5207648, -3575024, 4289062, -2509335, +-4294431, -341450, -1774358, 1162326, 2336999, -96637, 3032784, 1439888, 2210835, -2877628, +-3377455, -5599564, -4112431, 521302, 6681896, 840203, 5427228, 1404991, -2794413, 3728032, +1772211, -4035659, 7071127, 1175210, -6658810, 1731409, 3018288, 594853, 2004676, 1728188, +-4717485, 1716376, 1652489, 1159641, -271120, 3469260, 1168231, -892279, -1139240, -27917, +1389422, -43487, 1886564, -62814, 91805, 1084479, -450972, -1038845, -666257, 184147, +-921271, -988379, 1214402, -119185, 1165547, 1020592, -284005, -105227, -7925826, -7044283, +1493575, 792421, 5896990, -4567161, 6066105, -3098282, -1376000, -9556302, -635118, 608812, +-3299609, -598611, 5092221, 4796405, 7220914, -1804423, -1134945, 4485557, 2093797, 4023311, +-9865003, 9699647, -2131915, -180389, 1511292, -1237488, -110595, -921807, -708133, 5994164, +-212601, 7884486, -1402307, -3304441, -6638946, 715112, -3027415, -2676302, 4524748, 3469797, +4732517, 100395, 551903, -7090991, -5110474, -136902, 6361921, 2152316, -864362, 2080375, +-2708514, 6755447, -405338, -5951751, -7515656, -2733210, 8337069, 6265821, 6430103, 2943663, +204548, -7072738, -3171833, -1051730, -4138738, 4261145, -774168, -2022393, 3659849, -10044855, +2955474, -1336272, 2339684, -823023, -2889439, 4495757, 1690607, -4779225, -5060009, 2518462, +-1334661, 2944200, 783832, -2180770, 1529008, 1863479, -104690, 701690, -15569, 191663, +-858457, -38655, -1403381, -8053, -1224066, 1960653, 1071058, -1527935, 744640, -406411, +515933, 512175, 682363, -1140314, -983548, 336618, 729071, -2079301, 1998770, -2255932, +-4347044, -718333, -3367791, 1539746, 5449240, 2134062, 191663, -2223183, -12671227, -8353712, +-275415, 3665755, 4435091, 253403, 893890, -1790465, 4396973, 1946694, 3522410, -5526013, +5233955, 3003793, -5957120, 2228014, 5456756, -302795, 1762010, 885837, 4947803, -3852586, +2935073, -506269, -671626, -4738960, 285615, 5064840, -3237332, -2345589, -4439386, 5945309, +-585726, 1154273, -4670240, -13304735, -3882651, 1950452, 1222455, 4910758, -3543885, -2189360, +-2022930, -892816, -4280472, 129923, -3865471, 8712341, 3061238, 7106561, -7205882, -1422171, +-2992519, 6658810, -2034204, -1232119, -5551245, 3438658, -120796, -3711389, 5666673, 1753957, +686658, 6502581, 1386201, -5708549, -804233, 687195, -1557999, -1929514, 34897, -4849018, +9607305, 3958349, 1390496, 5988258, 2593087, 2364380, 4395362, -1264331, 3718368, -2139968, +634581, 381178, 216359, -1116155, 665720, 284542, -360777, -654446, -629750, 457951, +-499290, 38655, 3181497, 330712, -100932, -57982, -49929, -434329, 2523293, 650151, +3537443, -2817499, 2245194, 212601, -1456531, 6012954, 4573604, -463320, -8202314, -10941966, +-8458938, 3131568, 2147, -4726075, -1237488, 554588, -1080721, 12313671, 2121177, -8896488, +-2370822, -2659122, 442382, -4187593, 6958921, -5204964, -6828461, 6375879, -2687039, 1750736, +1686848, -2916283, -8038568, 1070521, -4287451, -3781719, -3941169, -490700, 6245420, -864899, +-1425392, 9240085, 1687385, 1414655, -11931956, -1331440, 6349573, 7443179, -4126927, 2018635, +1008244, -11766600, -1585380, -723165, -1211181, 2961380, 120796, -6602976, 846645, -5281199, +5046587, -1800128, 6498823, 1294396, -7490423, 3306588, 14011794, -5455682, 105764, -10463077, +2514167, 8785356, -15782931, 2240362, -1142461, -1377074, 3896072, -2556579, -4139275, 7384123, +7047505, -6127845, -768799, 4617090, -2088965, 1077500, 2153926, 1355062, 418222, -1801739, +3913252, -121870, 2546379, 90731, 3491272, 2381023, 2188823, -206695, 724239, 3904125, +386010, -828929, 1340030, 1198833, 426276, 3237869, -1850594, 1012539, 478352, -751082, +192737, 1150514, 773631, 368293, -357556, 10545755, 1312113, 4729296, 7472706, -9213779, +-2827699, -7031399, 3537443, 4080219, 8115341, 15709380, 2473364, -11980811, -1119913, -3011846, +-1242856, -5181341, 19327, -579821, 5938866, 4727686, 1721208, -424665, 237834, -1845225, +-1370632, 6804302, -2219424, -911607, 5085242, -638876, 2996277, -507880, 6472516, -4941897, +-9785009, 12170864, -717260, 2889439, -9159555, 674847, -2786897, 13503914, 2127620, 6112812, +-1278827, 5420786, 3648038, -12222403, -1926830, -6863358, -5900748, 823560, 8613020, 1080721, +-1730872, 13370233, -1416802, -7556458, -5770289, -3954054, 6562173, 20201378, -41876, 5605469, +1449015, -6439767, -1414118, 110595, 5994164, 9183177, 844498, 7380902, 6585259, -12097312, +400506, -2161979, -308164, 6061273, -2705830, 1574642, 2862596, -933082, -6212134, -4313221, +-9073655, 2170032, 3616899, -457951, 1396401, 1334124, 1102733, -111669, -2817499, 595390, +1336809, -161061, 1238024, -1473711, 2416993, -210453, 1214402, -670552, -434865, -1170379, +307090, -629750, 425202, 1995549, 3209414, 2651069, 402116, 690953, 1966021, 1089848, +61740, 1107028, -3595961, -15602006, 3535832, -1578937, 5350456, 3427384, 14518600, 2919504, +-2752000, 3476776, 11107859, 12294881, 5073967, 8657580, 8855686, -6877854, -5345624, -11141682, +-12038793, 1308354, 5182952, -10187126, -7247758, -562104, -11782706, -9769977, 4940823, 1574642, +-5240934, -3494493, -7734699, 6403260, 4674535, 10535555, 20037634, -2236604, -5697811, -2153926, +-9894531, -130460, -7713225, -8533563, 10260140, 1158031, 1399086, -13215614, 13617731, 2695092, +-8506183, -2742337, 7001871, 456340, 1504312, -246424, 1125281, 3974992, -6519761, 7614440, +151934, -5370857, -1512902, -9192841, 1410897, -9438191, -8380018, 7211787, 7444789, -7509751, +-11927661, 3016678, -5761162, -876173, -3193845, 3989488, -3428995, 5269925, 1673964, 6383395, +-1469416, 4763119, 2445447, -10707890, -3758633, 2610803, 1387274, 173409, -5303748, -3001645, +-1598265, 3514894, -2059974, -1792612, 139586, 2811593, 2184528, -141734, -168577, -3084324, +-1665374, 570157, -738198, -328028, 2500208, 255551, -187905, -2270964, 2157684, 675384, +-832687, -454730, -1526324, -306016, -1687922, 2272038, -574989, 1036698, -671089, -5950141, +-6492917, 7844758, -2418604, -1865090, 4541391, -6562173, -6891812, 7908109, 10597295, 156229, +-647466, 3563212, -9122511, 15533823, -9554155, 1101122, 7441568, -3567507, 6942278, 8364986, +2761664, -8844411, 9496173, -1446330, 3564823, -6941741, -1299228, -13173202, 4515085, -7838316, +3003256, -13557064, 7932805, -9918153, -6914361, 5629092, 7830263, 2609730, 857383, 300648, +-8515846, -7917236, -5054640, 20558398, 11280195, -3259880, -19086834, -2710661, 5343476, 11081016, +-6300717, 886911, -13201656, -4544613, -1656247, 3415573, 1904281, -2968359, -267362, 5774584, +-6553583, -365609, -7466801, 4042638, 4829154, 14220100, 6005438, -6909529, 2899103, -3844533, +-10779831, -1352915, 6178311, 890669, 17669496, -10124312, -4980015, 2747705, -9261023, 4723391, +1441498, -1725503, 8959302, 2243584, 3937948, 88047, 292058, -1381906, 4413079, 6648610, +1566053, -1886028, 4827007, -2508261, 1494112, -4545686, -1559610, 18790, -6048925, -74625, +-2371896, -1037235, -2367064, -3873524, -1835025, 1373316, 1493038, 1085016, -1296543, -157303, +2632278, -4362613, 431644, 417149, -13570486, -1995012, 2784750, 8011188, 3901978, 10459319, +1907502, -12502650, 7962870, -10576894, -11319386, 316754, -1024887, 8618389, 10716480, 9855339, +14375256, 3517041, -14821395, 16237661, 8883603, -6554120, 12497818, -1608465, 1533840, -10947872, +-3779034, -3151432, -4844186, 10478646, -17576080, -3969087, -8249559, -7847979, 1469416, 8490077, +-3997541, -10140955, -10750303, -14012331, -14158360, -7192460, -2392297, 6127845, -11108933, -14416058, +-8506720, -3622805, -7059316, -4721243, 12593381, -7055021, 1205812, 6684580, -11381126, -6763500, +-7662222, 12394739, -5257577, 8077760, 17764522, -1710471, 4006131, 1747515, -5410048, -7113540, +-4846871, 8394514, -1222992, 9609452, 603443, 7258495, 1714229, -12169253, 15118285, -6496138, +-1899449, -12928388, 7967701, 16992502, 2893734, -2309082, 4532264, 1982127, -10844256, -5055714, +667331, -2554969, -1145146, -4667556, -4559645, -740345, 833224, 694174, 7915625, -897648, +1025423, -3894462, 3021510, 339302, 5953899, 2591476, 2698313, 1137093, -692027, -2538863, +-2133525, -3531537, -752693, -2656437, 1797981, 926102, -41339, -1846836, -1559073, -1349694, +-525597, 632434, -620086, 3264712, 25151866, 15858093, 11541114, -8339753, -18103824, -4887136, +11023570, -17148730, -9342628, 330712, 13471165, 9654013, 7827578, -9936407, 7499013, -2677375, +7496866, -1966021, 19477140, 11673721, -960462, -17914308, -1842541, 13576392, 11553999, 478889, +23611046, 10676752, -4741107, -11274, 1634235, -2794413, -6589017, -9094593, -1425392, -25530896, +7237557, -8759586, 1218160, -900869, 6671695, 9496710, 244276, 2526515, -11388643, 8116952, +-4136054, 16902306, 390842, 2413235, -41176924, -1771674, 10990821, 5671505, 11689827, -4008278, +-11527692, 6405944, 2239289, -9446244, 8995809, 1823214, -9052180, 132607, 390842, 3158949, +-3324842, -15074798, -15101105, -620086, -5431523, 5064304, 5326833, 2240362, 5669357, -18458158, +-6325950, 951335, 4095788, 4457639, -7348689, 5798743, 1354525, -2641405, 1953136, 5231270, +-3476239, 703301, -1121523, 2164127, -3536906, -5531918, -1867237, 6581501, -4975183, 702227, +-3717831, 2637110, -1538135, 2334852, 3792993, -456340, -3773666, 3089155, -638876, -4412542, +-2815888, 1587527, 2040110, 243739, -1784022, 879395, -360240, 2723546, -1286880, 5278515, +-1805497, -338766, -17376900, -27957016, 4509179, 9677098, 10051834, 234613, 23232014, -16529719, +5446556, 3175592, -4715337, -14674293, -6182606, -8348880, 9849971, -4332012, -9039296, -14936286, +-1385127, -5524939, -2858301, -11268384, 5998459, -715112, -5276904, 6056441, 7714298, 9128953, +-11872363, 21665426, 1310502, -3126736, -13320841, -12525735, -2552821, -1655173, -12993887, -13547401, +-10397579, 8717173, -6026376, 14463302, 4626217, 24142012, 8279623, 9154723, -3110630, 12936978, +-2264522, 3099893, 18344880, -5612986, 6648610, -22091164, -28115392, 6105296, -1340030, -17862232, +1100585, 416075, -24268712, 6801081, -7158100, -4825933, -9486509, 9125195, -8864812, 475668, +-991064, 4383551, 10201, -13307419, 7777649, -1945620, 3088618, -16776679, -23128936, -20609938, +1129576, -4911832, -23419382, -4959077, 22472342, 11819213, 5201743, 4257387, -10406706, 313533, +-2399813, 975494, -3435974, -2799782, -134218, -285078, 882616, -62277, -7270306, -1775969, +1901060, -1392106, 3484829, 5705327, 4792647, -81068, -818191, -2521683, 7605314, 4359392, +5002563, 4150549, 3061775, -592706, -2911988, -2636036, 5932961, -4625143, 3535832, 4973572, +1946157, 2441152, 398895, 1452773, -4019553, 342524, -1163399, -3464428, 1655173, 4502200, +17013440, 22207666, -609885, 5915244, 14047227, 11515344, -1154273, -28256590, 19372986, -1897839, +5290863, -5753109, 9942312, -688269, -12208981, 3455301, 22258132, 3417183, -14577656, 12876312, +9211094, 6034966, -10961830, 11849815, 8789651, 1059246, 14148159, -5618354, 3795141, 22789634, +16604344, 692027, 5258114, 11207180, -21488258, -4309463, -1371168, -3334505, -18830748, 4853850, +5690295, 1117765, -14606110, -193810, -25002078, 1371705, -17870286, -3498251, 9190156, -7589207, +-10824928, -8662412, 5292474, 4399121, -9991168, 3986804, -3618510, 12357158, -6432788, -7212324, +6405944, 11547020, -1131724, 5045513, 4429185, -27272506, -653372, -1990717, -13942001, 1463510, +17747342, 5434208, -5013838, -2178622, 12960601, 9126269, 5649493, -3660386, 20578798, 215285, +-17133162, 2302103, 20594368, 10698227, 10449119, 6193343, 1111860, -5087926, -5848135, 3718905, +3339337, 4894652, 7726646, -1924145, 6099391, 3716221, 595390, -1059783, -640487, 2727841, +-2798171, -1088237, -2775086, -79994, -1316408, 3003256, -6227703, 1049046, 2109366, 649614, +4734665, -8426189, -3519189, 1399623, 1598802, -867583, 4845260, -1814624, -1625645, -2360622, +545998, 3094524, 3670587, -4711043, 680215, 2130304, -4300336, -2760053, -2381023, 10858214, +-24999930, 10623602, -25888990, -30714922, -19870130, 1301912, -16953846, 16509317, -5198521, -20650202, +-718870, -5247377, 2784213, 3854196, -4838281, -2660732, 13602698, -4061429, 5177046, -7419019, +-7413651, 21684216, -7320235, -2482491, -671089, 4947803, 13340705, -27210228, -1862405, 14588393, +14052596, 13207024, 1721208, -4919348, 27983860, 9512279, 8803609, 10951093, 4952634, -3930432, +173409, 16513612, 5310190, -11636677, 6145562, 30393872, -16061567, 21014202, 7673496, -32036698, +7738994, 21563420, -2359011, 9717900, -139050, -24270324, 12265890, 30292942, 1695975, 20613696, +-12475806, 18243410, 15049565, -448824, -2733210, 16751983, 8845485, -21932250, 21966610, -5388574, +-5021354, 13378823, -6460168, -7856032, -9805410, 3475702, 1141388, 3710852, -921807, -4400194, +16507707, -14699526, 2546379, -3001645, -4816269, -12002823, -11434277, 6792491, -865436, -7376607, +-10200010, -8520678, -14532022, -10282152, -565862, -7103876, -4271345, -1016834, -7528541, 3219078, +-6624987, -6803228, -1839320, 1730872, 2432025, -3401077, -414464, -10677289, 4288525, -11201812, +8606578, -2839510, -696322, -4888747, -2665564, -511101, 12885439, 6487011, -1297080, 3105798, +8879308, 4852240, -4823249, -2263985, 3504157, -4363687, 7255811, 1659468, -2751464, -9733470, +-17276506, 41490456, 20529406, -48380660, -19943680, 5135171, -8019778, 13976897, 16455093, 17657148, +20198158, -12408697, 38267084, -5759015, 966905, -12525198, 14421426, 19216758, -13847511, -15796353, +-3321620, -9097278, 1703491, 7664369, 1187022, -9943923, -3753802, 15758772, -1251446, 7963406, +1928440, 18963354, 28427852, 10781979, -13657996, -32020054, -2677912, -5435818, 3614752, -7410966, +10574746, 17748416, 1617055, -6579353, -14616847, 35007204, 30626874, -4062502, 14962592, -8333311, +-11172821, -33723008, 18655728, -15736223, -3610994, -1009317, -10524280, 5906654, 20729122, 3166465, +-9123047, 9830106, -4212289, -13922136, 21197274, 4300336, -29335164, 37610492, -25462176, -13650480, +14563160, 14927159, 12528956, 211527, -31333934, -2699387, 2771865, -1823214, -10283225, 6072010, +-5368709, 2219424, 3911642, -13015362, 15054934, 10473815, 5058398, 2019708, -6152004, -4570919, +-287763, 5305895, 479426, 4092567, -2443837, -10081899, 3063386, -14777372, -4672388, 4699768, +-4357245, 8082055, -6839199, -1012539, -5810554, 6439767, 570157, 7920457, 9215389, 6330782, +272730, -6976101, 5067525, 8566849, -1691680, -1002338, -9176734, -4050691, 10659035, -3643743, +7198902, -625455, -4006668, 3777424, 3577708, -220117, -6046240, 11009612, -13350369, 1488743, +19088446, 5660767, -25897580, -20773146, -4972499, 32402308, 3388729, -15560667, -41794328, -11627013, +-1897302, 9924059, 28767690, 22038550, -3075734, 273267, 18925774, 15400679, 718870, 4223027, +-56398288, -35560180, -17326972, -27866284, 2423435, -15544024, 24958592, -5713380, -1955821, -121870, +-10050760, -11476689, 18085034, 11269457, 6401649, -2557116, -8611409, -7713225, 9009768, -20211042, +-7572564, 3575560, -7006703, -9842991, 8429947, -29213294, -40877352, 9722195, 12773233, 15865072, +-23870354, -12692702, 13218299, 5018670, -39848708, -34999152, 2127083, -16938278, -17521320, 6517613, +-32193464, 16337519, -12453258, 13426605, 12884365, -7986492, -18144626, -41929080, -14698989, -12596602, +23536420, -20343112, -13267691, 7176354, 24059870, 14025216, 134755, -8189429, -2694555, 7198902, +-7215008, 24314346, -15066208, -11809013, -5706938, -2113124, 6685117, -17911624, 10549513, 8086887, +-7503308, -12542378, 2917894, -726923, 12212203, -15664819, -20432770, -5183489, 3233574, -11303817, +-1701881, -13669270, 591632, 3334505, -6150930, 9537512, -2569464, -6759205, 2962454, -4568772, +2782602, -3892851, -14200236, -624381, 1042603, 13556527, 10633265, -6525129, 48855, -730681, +-8017094, -10256919, 4974646, -2605972, 16578574, 22886270, -3692061, -30660160, 13882408, -4548907, +-12843026, -26422102, 7880728, 11391327, -39294120, 14899778, 13943611, 35492536, 3193308, -8806294, +2186675, -43276092, -12596602, -5193153, 561567, 8008504, -14820322, 26643830, 10639171, 32916092, +-6595996, 28962576, 18548890, 11494406, 26331370, 13402982, 17376900, 22443352, 979789, -29222958, +-27638114, 5697811, 31644246, 22919556, -42161008, -1154809, -7140920, -5870147, -4425427, -29152628, +7481833, -20750598, 18728204, -13863081, 42258720, -11057930, -60625612, -6389301, -20892332, 12115566, +9003325, 17330194, 39346196, 8854075, -5344013, 21606906, -12717398, 44028248, 7401840, 29479044, +13830868, 2748779, -11143293, -10016937, 72156528, 499827, -49803904, -9943386, 39811124, -23718956, +5226439, -10902238, 17481590, 36625332, 21109228, -42098196, -2716567, -41441604, 5776731, -5648956, +-24572044, -2823404, -6636798, -10808822, -51540, -21182242, -23331872, 8162049, 8832600, -1073742, +-26111790, 18964428, -23133230, -35760436, -15251429, 9017821, -8870181, -15883863, -20550344, 3874061, +8719320, -18568218, -14231374, 7015292, -8236137, -14959908, 12331388, 9922448, -863288, -1781875, +733366, -3338263, -6132140, -6456410, 2426657, -13791677, 8188355, -4853850, 3129421, -17563196, +19862614, 8601746, -41219340, -15463493, -46809236, 7136088, 41261212, -30403000, -28509992, 27263378, +12817793, -46663208, -44222056, 14179298, 2340757, 6492917, 15054934, -1842004, -13276818, -6750615, +28258738, -20231444, 34893924, 5688148, -8170639, 7460358, 20160040, -66035, -6035503, -37338836, +-16387448, 4151623, -20010790, 17273284, 25791816, 1869385, 4271345, -26709864, 31865436, -11181410, +-14242112, 25995826, -9982041, 63888, -18635326, -1882806, -13100187, -45913736, 15767899, -5132486, +34142304, 43797392, -636192, -7803956, -27747636, -8760123, -7719667, 41678900, -39604432, -27948962, +-65650724, 1553168, -27175868, 7553237, 22786948, -12267500, -3419868, 44805100, 28895466, 20443508, +3535832, 2065342, 34000036, -36841692, -1599339, 10486700, -4348655, 20357608, 9764608, 86453400, +13671955, -23593330, -1321776, -16160351, -42596412, -16866336, 1589675, 7254737, -8201777, -8815957, +-8061654, -30419642, -380641, -2487860, -16158204, 4329864, 10854456, -26075820, 1714229, -17685064, +6940131, -1188632, -6142877, -3491809, 1520418, 15397995, 8981313, 712428, 17038672, -10439455, +-2198487, -4952634, 16037945, 10751914, 7636989, 16508244, 7682086, -11731703, -5632313, -1896228, +8182450, -14766098, -3795677, 511101, -16674137, -5153424, 3046743, 39967356, -29358786, 10187126, +-10080288, -14249628, -13894756, 60410864, -8102993, 29662118, -23952496, 41220948, -14300094, 619012, +22200686, 23814520, 56834764, 2729989, 9287867, 8366060, -24148990, 29367376, 9083856, -17220672, +28592672, -11921219, 36013300, 27555974, -8522289, 23985244, 1105417, 22402550, 4494147, 37963752, +-23156316, 18978386, -38318088, -9519258, 12867722, 41161356, -1799591, 3412352, 17701170, -33823, +-13842680, -49345952, -30565672, 8572218, -21226802, -814433, 15631533, -42968464, 26382910, -1753957, +31374200, -14782204, -29316374, -4968741, 81069656, 18556406, -73726872, 13147969, 18796388, 4758824, +80268640, -4679904, -59086400, 61500712, -20658256, -3779034, 67184024, -7036767, 44205952, 7305203, +-39879844, 1889249, 68692096, -55832964, 29460792, -34133716, -38674568, 28916404, 17336636, -35212828, +-12924093, -21783538, -11882564, -12636331, 6479495, -21457656, -4380867, 8898098, -22167400, -15715822, +11656004, -25834766, -6252399, 9485972, 3726421, -5734855, 19696720, -8184597, -6503118, -9164923, +-17583596, 8910983, -11285027, -12857521, -2964064, 2612414, 26276610, 448824, 7557532, -21226266, +2385854, 28039158, -4991289, -2930242, -2004139, 1730335, 2128693, 19714436, -10024454, -11496017, +-5719286, -18080202, -21735218, 6255083, -10706280, 4831302, 7155416, -2831457, -59272160, -4502737, +9341017, -22149684, -6276558, -62209380, 39604968, 60552060, -26386132, 8626442, -45832668, -134351408, +-25496536, 6305012, 68467144, 57360900, -55874304, -49930068, -50170048, -41327784, -28981366, 35647692, +-5895380, 78442208, 53333292, -15690052, -64530272, -161987920, -104619496, 7413651, 180211456, 137005696, +25395604, -70498664, -176747024, -181269088, -12873091, 105720080, 163697312, 179224160, 18813568, -57812944, +-72967736, -97120488, -87207704, 5997922, 60911228, 112878184, 78005736, 62162672, -80438296, -98913096, +-115971096, -139978352, 16073915, 168083008, 165907600, 33821256, -59391880, -157364912, -206188496, -69681016, +16271484, 76959912, 188817504, 69573640, -120796, -103770704, -84727896, -35640712, 43162812, 73891688, +129699960, 34027952, 67864776, -5279052, -86502248, -71621800, 4298726, 83715888, 91382408, -41357852, +-79054240, -97001840, -24165634, 16066399, 23223426, 15007153, -48373680, -41856068, -17251810, 31224412, +122943, 667867, 7054484, 25016574, 20189568, 15680389, -8432631, -58986008, -39224864, 4601521, +30595736, 56680684, 27466852, -15790984, -37396280, -49383532, -30944702, -19737522, -25875568, 56848188, +59322088, 65154116, 54059680, -24903294, -103533944, -87678000, -47266116, 40143984, 131068984, 127107408, +7181186, -80014704, -125314800, -112710680, -7301982, 62820876, 59038620, 28792388, 25959320, 1650341, +-33602212, -40205724, -50968376, -7521562, 47725676, 58698780, -15966541, 28918014, 22234508, -50995756, +556735, 26229366, -21069498, 28992102, -1177358, -5317170, -2079838, 5842766, 22042310, -8664023, +25974888, 17655536, 10581726, 11747272, 8925479, -2257005, -14860050, 24277302, -318901, 14809584, +-8828305, 13185013, -4528506, -1902134, 8979703, -12024835, -12657805, 1853278, -5434208, 19648938, +19447076, -17819820, 8906688, -10619844, 12240120, 242666, 8045011, 3038153, 10436771, -12695386, +8816494, -14608794, -6305012, -2041720, -1619203, 11767674, -22232898, -4416300, -9158481, -19836844, +-1723893, -7810398, 4771172, 18854370, -5638755, -26197690, 4243428, 16218333, 31729608, -1415192, +2827162, -17111150, -12948253, 14730664, 1374926, -5624797, 479426, 25844966, 11486890, 8135742, +14006962, 23812372, -26989574, 10754061, -4582730, -40346924, -4668093, 31160524, -5753646, 27719182, +-1212255, 17201344, -20373714, 12578349, -13850733, -4159139, 27357868, -7894150, 2544768, 536334, +-95026, 9953587, -19327, -4132832, -2304250, -796180, -1913408, 4961224, 7856569, 11409044, +1311576, -9845139, -4406100, -12717398, 4774930, -13185013, 7102266, 5351530, -4054986, 7299297, +2342905, -13675176, 213675, -76236, 4335233, -23445690, 8156143, 5124970, 2024540, -702764, +-6482180, 7585986, -11853573, 11857868, -962610, -1513976, 3175055, -5789079, 10041097, -11388106, +3120294, 5666673, -18602578, 47546360, 81918984, 7001334, -53594748, 17987324, -4036196, 66428648, +31203474, 65299072, -6147172, -31010200, -8445516, 14497662, 27434640, 21486648, -12107513, 2127083, +11644193, 8481487, 25916370, -18101676, 4362076, -24417962, -3969624, 375810, 6269579, 12771085, +2782602, -10392747, 19841676, -1796907, -17564806, 23981486, -4110821, -8528194, 6340983, -3521873, +18622978, 29777008, 711891, 7809325, -10021769, -6200859, 17184702, 12502113, 14227616, 2869575, +-9052717, -18654654, -19214074, -20816096, 16675747, 18391586, 17963700, 26867168, 28713466, 12473122, +1501628, -25042880, 15365782, -2641405, -22793928, 28186260, -2081985, 18554258, 9683004, -28148678, +7787850, -8326868, 6015102, 19123342, 3551938, -23519778, -16756278, -13851270, -24720758, 15097884, +-1529545, 26015690, -278636, 4284767, 506806, -13981729, -9044127, 4971962, -21210160, 6448894, +-230854, -4076998, 7630547, -11741904, 7159174, 4694400, -964757, -9938554, 13069585, -3272765, +11591580, -19562502, -14445049, -8491150, -7606924, 9283035, -3913252, -2398739, -2508261, -9782862, +-5340255, -6004901, 5369, 18176838, 2413235, -4599910, -304406, -10551661, 7688529, -5866926, +-1044751, -4017405, 8615704, -741419, 1133871, -1828046, -6256157, -4242891, -28952374, -64612416, +4344360, 89608584, 118366616, 101700528, 70055208, -2914672, 4304094, -51729660, -61686468, -103484552, +-78303160, -83074328, -26999776, 7085086, 27022860, 45565844, 112878720, 94036160, 63225140, 20563230, +-10024991, -40764072, -30468498, -42386496, -54056460, -29969208, -30943628, -37946036, -17762374, -24944634, +5234492, 17736604, 14780593, 48179332, 44348220, 39479340, 25711284, 29920352, 18719078, 35820564, +8548596, 31002684, 1305133, -8011188, -54050016, -23408646, -65131568, -75568872, -84667224, -66250944, +-49894100, -17588428, 12695923, 48693656, 51729124, 40917080, 83977888, 68207840, 72732584, 67517424, +62844500, 25343528, 40615360, -16246788, -40565428, -42363948, -100017440, -99781216, -96569120, -102589048, +-84755272, -28858960, -14339822, 22893786, 57223460, 62527744, 76206680, 91983704, 81889992, 63985884, +57964880, 42847668, 15886010, -1489280, -34487512, -50524384, -51147692, -58143656, -48959404, -54687820, +-57213260, -48105780, -37660420, -18705656, 2109903, 24988656, 47800840, 44987100, 44140988, 52310016, +57549876, 44773960, 44595720, 20092930, -21121038, -15204184, -37029596, -46794204, -39329552, -32074278, +-22808960, -28344636, -20791400, 2631204, 5814849, 10131291, 25145960, 22437982, 13969381, 3660923, +9356586, 9878962, 2691334, 12460237, -7876433, -8296803, -7046968, 4810900, -1621350, 408022, +-920197, -1432909, -9473087, -6236293, -2992519, 9042517, -363462, 4274030, 986232, -4624069, +-6285148, -2857227, -4555350, 1460826, -666794, 1704565, 460635, 2238752, -2809982, 2257542, +-2128693, 613643, 453656, 4232691, -520765, 2398739, -1600412, 1698660, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, { { 10392210, -5522254, -621697, 3624953, 906775, 827318, -11378442, -4951561, -5636071, 4433480, -609885, --3697430, 4030827, 4161287, 273267, 3995393, -1669132, -137439, -234613, -2466922, -1284195, --5468567, 2826089, -8085276, 3376381, -4217658, 3442416, 6427956, 2934537, -1225139, -1817845, -4749697, -766115, 219580, 4495757, -4817343, -140660, -1630477, -2774012, 588947, -674847, -994822, 4607963, 7593502, -2413235, 135828, 6307160, 478352, 1658931, -2324114, -3534758, --520765, 1059783, -5959267, -1564442, 3112778, 404801, 1123671, 1848983, -856309, -1862405, --1762547, -2088965, 2303713, 1887638, -1099512, -3414499, -4198868, 2074469, 36507, -3484829, -3675955, -803159, -245350, 560493, 1037235, -1738925, 2198487, -2341294, -792421, 2876554, --1988033, 1146219, -3364570, -2572686, -1239635, -833224, -216359, 454730, -1357747, -1698660, --171799, -967441, 378494, -358630, -309238, -463320, 358093, 99858, -357019, -693637, --419833, -258235, -65498, -375810, -242129, -530428, 484794, -777389, -482647, -3735011, --1026497, 29528, -3537979, -3579318, -2147484, 8588861, -6032819, -2480344, -4212826, -7670812, -2864743, 1315334, 298500, 6585259, 6234682, 6248104, 2017561, -1168768, 966368, 4709969, --2014877, 2031520, 2379412, -5556614, 7911867, 1534914, 2460480, 5851356, -2251100, -5838471, -393526, 3965329, -2795487, -1268089, -3726958, 3946538, -102542, -402116, -6477348, -280784, --788127, 3987877, 2035815, -3551938, 7084012, 2614561, 1473174, 2481954, -1156957, 3972308, --1548873, 195958, -4946192, -5907191, 4734128, 3708168, 6558952, 640487, 1768453, -5080947, --7865696, -3861176, -2361158, -2291365, -3635153, -3130494, 1619740, -911070, 2384781, -2952790, --1132798, 1296006, 1466195, -887985, 4000762, 1215476, -3007551, 6041409, -2371359, 1858110, -7621957, 1625645, 1044214, -2364380, 104690, -2596308, -3103114, -500364, 1752884, -35970, -223875, 94489, -842350, -270046, 74625, -762357, 1786170, 1145146, -670552, -165356, -49929, 468688, 251792, -1188632, -643171, -286689, 130460, 528818, -554588, -855235, -733903, -440234, 562641, -306553, -474594, -594853, -7397545, -6890738, 4037806, 923418, -5655935, -8740795, -1234803, -3472481, 938450, 10416906, 5942624, -9100499, 3445101, 869731, --3796751, -4218195, -5163625, -8378408, 299037, 1012002, -3108483, 1497333, -1791538, 328565, -2529199, 1962263, 5405753, -4719632, 8511015, -5179731, 4942971, 3930432, -3186866, 2304250, -413391, 3547106, -1415192, 1859184, 3246459, 1095217, 506269, -1288490, 2530810, 771484, --1128503, 6067178, -7913477, 557809, -4792647, 9545565, 3368865, -8307004, 3237332, 10912438, --10240276, -4869956, 1237488, -826781, -3880503, 3263638, -1356673, 7271917, -6100464, -593242, --2014340, -408559, -365072, 7027640, -6501507, -2147484, -700080, -6708202, 3629784, 2815351, -7256347, 2964064, 6179384, 5575942, 922344, -2234457, 1755031, -185220, -766652, -1662689, --151398, -2552284, -1016834, -568546, -3579855, 2290291, 199179, -2493229, -415001, -2019708, -197569, -78383, 1389422, -474594, -802085, 179852, -1145146, -31675, 1200980, 447213, --251792, -802085, 3296388, -5092758, 646929, -3200288, 3375308, 1202591, -5126044, 14813342, --9423695, 2960843, 16047072, -11346767, 5281199, -311385, 5247913, -1407676, -9698573, -2138357, -8009041, 7163469, 1985886, -83752, 4054986, 1973001, 146566, 3340948, 3372086, -2800319, -4296578, -1207423, 6772090, -5470715, -8420820, 1783485, -7351374, 2523830, 137976, -2116345, --2353105, -3370476, -5003100, 958315, 1763621, 165356, 1272384, 1444183, -3084860, -6468221, -5076115, 1124745, 832687, -328028, 7459285, 1489817, 3123515, 7870528, -4842039, 1898912, -315143, 2367601, 5519033, 4314832, -7193534, -6312528, -1625108, -3610994, -828929, 247497, --3098282, 1636383, -5752572, 273267, -5535139, 2728378, 2709588, -3211562, -4210679, 461709, -2310156, 423054, -4866735, 680752, -2786360, 2087891, 1733556, 775242, -913217, -1369021, -967441, -144418, -523986, -34360, -1255204, -1057636, -3339874, -828929, 3043521, 1330903, --873489, -605590, 2124935, -732292, 638340, -942208, 38118, -236760, 113817, -1210107, --803696, -461709, -345745, -436476, -503585, 101469, -332323, -763967, -627065, 402653, -4677220, -1999844, 4235375, -798864, 2111513, -2433636, 289910, -1598265, 1406602, -769336, --9246528, 7022272, 4505958, 11582453, -7600482, 4742718, -9403294, -1615982, 5735929, 6206765, --6599754, 1888175, -7645579, 564788, -8964670, 2935610, -6715718, -8334384, -7456600, 3742527, --6024766, 259309, -7065758, 916976, 1037772, -1066763, -5172751, 3245922, 4540318, 2703145, -2114198, -5530308, 3007014, -5799817, -1833951, 3555696, 114890, -806380, -1561758, -226560, -3678103, -4279398, -8246337, -1745904, 2537789, -1745367, -6114423, -6185290, -8768713, 2093260, --2529199, -8213051, 5869610, -5265630, -5160403, 9916543, -3586298, -1962800, 811212, -1802276, --3236258, 796180, -5443871, -2702608, -4580046, -3617436, -1503239, 2949569, 7511361, 375273, -4514548, 370441, 3368865, 2333778, 6068252, -450972, -136365, 615791, 2243584, -1245004, -259846, -605054, 4437775, -185220, 2143726, 307627, 855235, -772557, 992137, -2736968, -2974802, 54224, 59056, -2241973, -564788, -3023657, 1427540, -1555315, 1022739, -424665, -3001109, -1482838, 594316, -2636036, -2096481, -218506, -911607, 704912, 7662222, -11038066, -1987496, 9656160, -3582003, 10575283, 2946348, 666794, -3067144, -7385733, -4858682, 12589623, --6763500, -59056, -2337536, 983548, 7577933, 6807523, -4125853, 9834401, 9819906, -4629975, --2421288, 5980742, -5053566, -4424353, -317291, -6795712, -153008, -2006287, 876710, 11798812, -4028143, 636192, -5408975, -15696495, -1912871, 8818105, 2164664, -5883569, 4512400, 7167764, -6263136, 7573101, -12403329, 2506114, 602906, -6156299, 3337190, -5541045, 3946001, -3126736, -4894115, 11000485, 14541149, 9177271, 4217121, -6033356, -1664837, -7201050, -7568806, -1594507, -8526047, 2096481, 134218, 2006287, -8345659, 2167348, 1038308, -76773, -4224101, 2259690, -4567161, -4829154, -9100499, 20725364, 2677912, -3713536, 1278827, 2230162, 9443559, -1902671, -2598455, 3218541, 4687420, -3262028, -1599339, -3521873, 1672353, -976031, 1844152, 1718524, --1223529, -1928440, 3514894, 467615, 929324, -671089, 2124398, -3646964, -2601140, -1755568, --646929, 4050691, 1491964, 2707977, 2066953, 2122788, 150324, 470299, -901943, -2555506, -2498597, 601832, 1056562, -1781338, -5709622, -1603633, -3503083, -1331977, 2653753, -3595425, -16345572, -1606318, 4605279, 11740830, 1534377, -1739462, -7679402, 4325569, -4147865, -5170604, --15518254, -6922414, 3117073, -805843, -3007014, -11180874, 3907883, 6199249, -8824010, -4583267, --2374580, -9203578, 3673271, 686121, -4889284, -3980361, -1687922, -12443057, -4451734, 6219650, -10365904, -7819525, -9823664, -2812667, -579821, -7936563, -6560563, 2538863, 4364224, -8696772, -17497696, 131533, 7113003, -3935264, 6683506, -4480188, 2010582, -12372727, -2621004, 5124433, --12430172, 3467112, -2812667, -6271726, -14114336, -251256, 7825968, 178778, -14887430, -2181844, -2702071, 6056441, 10912975, -3946538, 4881231, 12824772, 4252555, 1634772, -5806259, -1022202, --3624953, 839129, -4319664, 1072668, -8154533, -993748, 6239514, 1872606, 1209570, -3456912, --6323266, 3601867, -1171989, 3715684, -1349157, 570694, -824097, -1727651, -1684701, 2451353, -912144, -369904, -837519, 179315, -2458869, 1253057, -2510945, -3029563, -1975685, 1211718, -147103, 120259, -2370285, 1968169, -299037, -1114007, -3349001, -942745, 208843, 554051, -1357210, 3671123, 1127966, 940061, 1791001, 4835060, -1583769, -4825933, 5883032, 1079111, --9099962, -14207215, -11664057, -14704894, 12655658, -7672959, -1937567, 4207458, -13989245, -5749888, --9747428, -4282083, -3149822, 6350646, -12265353, -6480032, 3840238, 4878546, 6993818, -69256, -181999, -2140504, -78920, -2830384, 1692754, -9647570, -5268851, -8479876, 5855651, 2975876, -4522601, 5977521, -11837467, -809601, -1329292, 10755672, -4087735, 3412889, 5776731, -2157684, -6189048, -4055523, 6907381, 9814000, -3882651, -637266, 8327942, -7135015, 11538967, -4931696, --18510236, 2903935, 9494025, -3615289, 1039382, -284542, 7269769, 9222905, -9383967, -4031364, -2117956, 6359773, -11027329, -8295193, -6719477, 13318694, -375273, -15211164, -3366718, -6313065, -5149129, 712965, 3874597, -5696201, 9361955, 425202, 1629940, 2741263, -8771397, -2942053, -591632, -1067836, -2252174, -2511482, 2382096, -2391760, -2410551, 1866163, 2723009, 1448478, --5175973, -440234, -2097018, -1475321, 2067490, 1906966, 4244502, -571768, -2169495, 1665374, --4863514, -549219, -92342, -3119757, 375810, 314069, -1243393, 615254, -5520644, -978179, --708133, 633508, 648003, 2311766, -340913, 2593624, 1415729, 1344325, 125628, -8558796, --3464428, 5878737, 2176475, 8422431, 2888903, 4120484, -16540993, -6481643, 6454262, -4357781, --3120831, -5510980, 1694365, 8617852, 2260764, 2053531, -11082089, -3747896, -2022930, 4108136, -9731322, -11819750, 5572183, -9635222, -2562485, -8863739, 1137093, 1227824, -452045, 3702262, --8276402, -2384781, -7756174, -3189550, 139050, -358630, -9740449, 5581847, 6250788, -2330020, -7417946, 14590541, 1494649, 11052025, 14175003, 1114544, 456877, 3418794, -2982318, 4698158, -959388, -3104725, -4780299, 17806398, -1854352, 10405095, 4599910, -5251672, -6096169, -4244502, -4973572, -4069482, 6464463, 15683610, 7947300, -2085744, 249645, -13155485, -9067213, -8026757, -12341589, 19376208, -8511015, -78383, -7875360, -1301912, 11845520, -3752191, -726386, -18698140, --2507187, -3411278, -1989644, 7089381, 496069, 1467805, 2154463, -3758633, 2968896, 1578401, -2644626, -2247879, 3836480, -1858647, -435402, -4745402, -1129576, 4111358, -1529545, -134218, --817654, 3946001, -1016834, -2881923, 1663226, 1745367, 995896, 1370632, 1446867, -1568737, -387621, 2779381, 4824322, 4175782, 2703682, 1454383, 285078, 351114, -3033321, -290447, -1896765, -1871532, 1998234, -700617, 685584, 2609193, -1150514, 11188927, 31024160, 13522168, --4216584, -1076963, -5763846, 14298483, -14324790, -8140574, -21900576, -252329, 10799158, 13434658, -2419677, -5334350, -13129715, -9608379, 9675488, -1966558, 15367393, -46171, -4935991, 7250979, -2642479, -134218, -3821984, 10029286, -1865626, 8663486, -138513, -4727686, 18906446, -4525822, -7668127, 18582176, 6534256, -789200, -9085466, -1716376, -14798310, -17340930, 3773129, 11096585, --2666101, 1549946, -18923090, -7201587, 10959146, 5931350, -4905927, 3615289, -5615670, -2732136, --8631274, -14511621, 872952, -3433290, -10244034, -16748762, -14438606, -4712653, -13263396, 6088653, --5940477, 2089502, 1712618, -116501, 315680, -2163053, -2974265, 8569533, 17062832, -11521787, -2081449, -4853313, 6168110, -6440841, -256624, -4656819, -2098092, 15682536, 11409044, 2551748, --1770063, 137976, -6424198, 2198487, 6393596, -1239635, -5556614, -3195993, 5535676, -6732361, -611496, 2837363, 2683281, -2383707, -2143726, 2375117, 3016141, -2336462, 3592740, 2051921, -2979634, -345745, 3934727, -447213, 2488397, 1196148, 1463510, 875636, -870268, 4598836, --4552129, -707059, 991064, -1400159, -1158031, -2176475, 2059974, 149250, -3925063, -1511292, -2561948, -2858301, -12782360, -14460081, 3753802, 5553393, 17353816, -14662481, 4687957, 4510790, --24423332, -1123134, 182536, -20402706, -11110007, -7208029, 5222144, -1619203, 1249299, -5746666, -8617315, 13543642, 7148436, -1907502, -20707112, -9010305, -11247982, 4225174, 1293322, -9074729, --682900, 7158100, -6010807, 12354473, -11093364, -311385, -6456947, -20699594, 3558917, -8800925, --9921911, 7734163, 11467563, -12821551, 4992363, 15171972, -4926328, 6658810, 5219996, -3534221, -2085744, -16804060, 25485262, 10043244, 6051072, 24338506, -29659970, -2207076, -4088272, 3167002, -12130598, 12599287, 4850092, 6017786, 15569256, -1467268, -10554345, -18343806, 7124277, -6928856, -699543, 4981625, -3658775, 7518877, 19937776, -12281996, 9296994, -5948530, -5701032, 15079630, -1147830, 4710506, 14619532, 12072079, -5304822, -6099928, -12861280, -3237869, 63888, 6714108, -7032472, 25233, 1667521, 1020055, -257698, 1411971, 1616518, 551903, 3969087, -1975148, -592706, 2867428, 1582159, 843424, -1787780, 3855807, 2499671, 595927, -2197413, -3064459, --7295539, 4365298, -300111, -647466, 2197413, -3484292, -430570, 2449742, 3333968, 5054640, -2823941, 1405528, 1377611, -31675, 3642669, 15959562, 18682034, 4722854, 11509439, -7474854, -5399311, 5340792, -30771830, 8739185, 9921374, 2146410, -9830106, -179852, -19006304, 22367652, -13410499, -6964290, -7545184, -11044508, -5829881, 16203838, -16381005, -9309878, -2484102, -2670933, --3555159, 2413235, -10855530, -10982768, -6535867, -8442832, -2327872, -10999411, -1551020, -7356742, --24317568, -15431281, -6017249, -3780645, 3380139, 4139812, -146566, 796716, 7031399, 3473555, -3599183, 17192218, 3571802, 5872831, 10672457, 23066122, 19641422, 1135482, -7761006, -14969572, -13733695, -3269544, 37093484, 7594576, 16639777, -1702955, 2135673, -14618995, -563178, 12982612, -7462506, 9872519, -11106785, -7239168, -14278619, -27031988, 15714212, -23839216, -2888366, 31737660, -2151242, 12801150, 6081674, 9454297, 332323, -16924318, 16644609, -140660, -14932528, -13265543, -551903, 5371931, 11223286, 3146064, -13077102, 845572, -2540473, 2823941, -5103495, -4149475, -2401424, 2280628, -3994857, 564788, -1234266, -206158, -5280663, -1795833, -1624035, 2668249, --1338956, -3106335, 4396973, -2469606, -957778, -7415261, -7951595, 206695, 296890, -3133716, --2001455, 2829310, 2088965, -3181497, -5271536, -134755, 3604015, -22033720, 6556268, 8189966, --14646375, -11459510, 302258, 8992588, 21531744, -1176821, -16472810, -16777216, -806917, -9528922, -2871186, 2961917, -18401788, -16016470, -30109868, -8997420, -8685498, -20628728, -13856101, -219043, --9489730, -6086506, -5344550, -1763621, -20244328, -10982231, -12422119, -6267431, 6318971, -17360258, -1348083, 14296872, 17174500, -4101694, 4736812, 9709847, -16886200, 9488656, -7285875, 14977088, --7242926, 1289564, -7810398, -1796370, 29952028, -6231461, 11301133, -21941378, -3574487, -98784, --20698522, 19277424, 777926, -7175280, 13931800, -5775121, 3608310, 27377196, -10862509, -15115064, -10382010, -2948495, -30819612, 12457553, -40867152, -22031034, 16432545, 12728136, 2653216, 8591008, -71941, -297427, -30827664, -16663399, -7245073, 2743410, -17514876, 4238596, 2451890, 7156490, --11432666, 605590, 8864812, 6645925, 5103495, 510564, 4202089, -10125385, -6416681, -6860674, --1884954, -1477469, -882079, 8021389, -4153770, 4168803, 8099772, -4069482, 2506114, -6524056, --4898410, -392990, 2087354, -5873368, 2537789, -7340636, 6358162, -2646237, -1277753, 181462, -5703717, -1894618, 2277943, -5189394, 4565550, 3362960, 10537165, 2383170, 8653822, -8647380, --2870112, -10269804, -5290863, -5088463, 41455024, 22702124, 32212, -21343304, 10965052, -22256520, --18108118, 3293703, 18411988, 36403068, -5731634, 18405546, -6585259, 13065827, 22059488, 12342125, -14096620, 7565585, -4139812, -18056042, -18693846, -5653251, -17667884, -5193153, -3253975, -3973382, -14105209, -2404108, -36287104, 2130304, 8735963, 8380555, 21681532, -2238752, -43305080, 24617678, --19390704, 6338835, -4259534, 14565845, 21189222, -23602456, -1676648, -11793443, -20605106, 14898705, --10261751, -25345676, 9919764, 14803679, 24335822, 6452115, -3828963, 2664490, 19916838, -16052440, -31457414, -9900436, -8808978, -2834679, 19154480, -19963008, 1802813, 2435783, -55599964, -8240969, -17162690, -8000987, 2845953, 7714835, 3995393, -2728378, 4482335, 19055160, 22721450, -18025978, -6460168, -13205951, -2294586, 22526030, -523986, -2348273, 788127, -1526861, -11724724, 3213173, -734976, -6823630, -17345762, 227096, -4182225, 5282810, -8039105, -7474317, -9449465, 7959112, -1787780, 4876936, 3871913, 325344, 2843268, -3839164, -7978439, 12108050, -1274532, -5879810, --243739, -4241280, -2710661, -4896263, 561030, 1484448, -773631, 3349001, 8764418, -341987, --2211371, -3615289, 738734, -4494147, -2608656, 5037997, -3929895, -3227668, -4796405, -11689827, --6605660, 1611150, 7490960, -6149320, -1620813, 23759222, 15761456, -44174276, -25113748, 30255360, -35066260, -18848464, -6386617, -49708340, -27475442, 7159711, -2254858, 6610492, -26422638, -16558173, --18108656, 26825292, 39862128, -1940788, 10762114, -6491306, -3491272, -508954, 9155797, 17271138, -4204773, -6154688, -3304977, -4059818, -23810762, -13509283, -24207510, -3224984, 7485055, -10183904, -14939507, -11068668, -4140885, 23173496, -11233487, 13019656, 9057012, -4259534, -22323630, -16172699, --13307419, 4012573, 41748692, 7336878, 22450868, 26443040, 20712480, 15316390, 13727252, -23044110, -557272, -3783866, 30906048, 14667850, 18079128, 32246078, -15833397, -21718576, 7973070, 27270358, --46231028, -850940, 3696356, 21490406, -37384468, -56369300, -10014790, 15775952, 3955128, 6372121, -17681306, 1113470, -12483859, -18513994, 629750, 2525978, 3675418, 17046726, 25308632, 11949136, -1895154, 75162, -257161, 2072322, 2562485, -6398428, 9350144, 1152125, -8513162, -15032922, -1881196, -6413997, 3245385, 1628866, -1334661, 943282, -6201933, 6460168, -3319473, 4334696, --6669011, -4336307, -11913702, -11782706, 580894, 6192806, -5259725, 12406013, 354872, 3690988, --3721052, 13260175, 1130650, 6075231, -6542846, -3592203, -2071785, -8256538, -1600412, 8939438, --15462419, 11917997, -596464, -11344619, -20089710, 7569880, -9793062, -19589882, 14097156, 27195196, -8301635, -10292352, 16095390, 27361626, 10059887, 5752035, 1898912, -2889439, 12796318, -22608708, -1321776, -32577326, 17467096, -26257282, -2249489, 14390825, 7828115, -14896020, 3157338, -17259326, -35744864, 4825933, 11580306, 18846854, 39439076, -16088411, 12796318, -18672908, 6804302, 14410689, -31707596, 7711077, -6462852, 32742146, 4380867, -2047089, -18720152, 1480153, 20369956, -6652368, -19581292, -23859618, 37152540, 38789996, -46324980, -949725, -2922725, 10384157, -7890929, -5810554, -19931870, -16546362, -49412524, 863288, 43948788, -34395172, 17418240, -7738994, -4385699, -20841328, -48520244, -2856690, 8043937, 4738960, -32610076, 42531988, 3323231, 37859064, -74320648, 7368554, --6967511, -22133040, -5995775, 13345000, -17284560, 11923366, -15574625, -10101763, -20505784, 26207890, --9925669, 2060511, -21864604, 1236414, -16052977, -5199595, 7510824, -10808822, 5219996, 979253, --14808510, 13704167, -6047314, 2209761, -6309844, 12466679, -9116605, 2202245, 891206, -3102577, -16174847, -9028021, -11249593, -6249715, -12612171, -17340394, -8805757, 1996623, 1151588, -12404402, --7154879, -8236137, -12230456, -9430138, 4307852, 3156801, -322659, 31423592, 3623879, -23854786, -2324651, -48631376, -11252814, 2573222, -9577777, -38744364, -4443144, -25395604, -6479495, 23511188, -5282273, 30788474, 12581570, 11690364, 7039452, -10356777, 24448028, -12377022, -411243, 11735461, -5184563, -14969035, 12046846, 5113696, 28954522, 12102144, -5416491, 17726940, -14194330, 23897198, -7969312, -26008174, -27096948, 14028437, 17266842, 7389491, 2630668, -12566001, -17427904, 5389647, --17155174, -25451440, -8080981, -4191351, -23746874, -8613020, 8559333, -15958488, -26758184, 7614977, -9582609, 1063541, -3504157, -1409286, -4762582, 9658845, 44889924, 9344775, -1739999, -1575179, --16224776, -25622702, -11704860, 37314140, 39652212, 20608864, 3513283, 36392868, 17147120, -8051453, --50709068, -38298760, -31942208, -60081760, -35391604, 8677445, 48642116, -21529598, 16255914, -24089934, -7627862, -1827509, 16510391, -7698729, -3147137, -21474836, -12730820, -5105106, -19609746, 24811490, --4160213, -12663711, -6416145, 2726767, -14281840, 10199474, 7051263, 16135655, 3339874, 4707284, --16000364, -18096844, -2454574, -13309030, -8860518, -15546171, -23046258, 1415729, -6273337, 1647120, -1299228, 17631378, 17052094, -6250788, -3804804, -7474317, 16457778, 11368242, 6960532, 2846490, --3774203, 9842454, -13647795, -5070746, -2519535, -14995878, -29844118, 15709380, -903017, -9256728, --4327180, 11241540, 20809654, -8856759, 26845156, -30748208, 24797530, -3078955, 33138358, -21462488, -19086298, -31688268, 27536110, -25590488, -10979547, 38607996, 8742406, 31031676, 44069048, 4640176, --3712999, -18345416, -1623498, 28175522, 6924024, -9837623, -31235686, 2772938, 5998996, 14811732, -8836358, 12355010, 7494718, -18010946, -29070486, -12142946, 27879706, 10874857, 89247808, -28248536, --24012088, 29298120, 45759120, 9785009, -907312, 12234214, 2916820, 14903537, -13605383, 5497558, -21339008, 23886998, 15714212, 69562904, -8913131, -8756901, -4610648, 36002028, 21299816, -17926120, -18656802, -164819, 6026913, -14702747, 31681290, -31439698, 2128156, 49242872, -36148592, 105441448, --48360260, 50614044, 46093052, -45030584, -41500660, 47106128, 1951526, -26674968, -11483132, 26190710, --71077416, 11497091, -8406862, -45336064, 29875256, -35396972, 2793876, 3105798, -14466524, -34901976, -9557913, -2261837, -1618666, 7305203, -7329362, -11155104, 6315213, 15366319, -5650567, 2806224, -11512123, -10246718, 16031502, 12949863, -25584046, 4266513, -14373108, 7132867, -1023276, 2709051, --13089987, 6082211, 3422015, 591095, -6563247, 20447802, 4465692, -23622, 18881214, -12627741, --12181064, 2760590, 8159364, 2802466, 9092983, 5477157, -26304528, -12828530, 6803765, -14626511, -22668838, -8334921, 17365626, 23416698, -54388244, -22512608, 32749126, -69270304, -43543988, -28705950, -48386564, 104359656, 28368796, -81051400, -18752364, -82812336, -43826920, 68365144, 40215928, 64305324, -34746824, -47802988, -76973864, -57917096, -14361834, 35061964, 38951060, 24137180, 12911745, -19762218, --84104048, -100249368, -22148610, 77622944, 137204880, 93750544, -17912162, -64039572, -92938264, -68208912, --55897924, 536871, 21867826, 75608064, 79867064, -42942692, -27513024, -100368016, -94087704, -33239826, -8920647, 97843112, 143433648, 64282776, -42763916, -150174064, -112003624, -81438488, 39250632, 86288040, -53218404, 34382824, 28488518, -89395448, -16840566, -50761680, 18729278, -6604586, 52916680, 84186728, -66115116, -77612744, -157918432, -117950000, 12825309, 92641368, -2596845, 128265976, 4997195, -32371168, --38754028, -27695560, 46171, 92826592, 79344152, 15161771, -32029718, -10801843, -6158446, 48981416, -53142704, 6958921, 2012729, -7789460, -1727651, -9720048, -13347685, -8048232, -5052492, 19104552, -28598576, 24233816, -35183836, -38967164, -15545097, -15812459, -15970299, 36617280, 29138668, 38483444, -10830297, -15658377, -28761248, -54448376, -35383552, 23714126, 48309256, 74257304, 50142668, 4832912, --113850992, -99198712, -34306588, 41661720, 63581084, 86042688, 64103460, -4369593, -64869576, -94489280, --92136176, -16065862, 99686192, 104180336, 52334712, -24212878, -69352984, -47449724, -32668058, 3652870, --18343268, 36658084, 11662447, -30030412, -27979028, -99858, -45192184, -5798743, 6902013, 5000953, --3766686, 943819, -15080704, -2094333, -1615982, 7636989, -5088463, 20720532, -5377299, -4220342, --5665599, -6762963, 13211856, 3533684, -6116571, 20057498, 1454383, -36208184, -17809082, 9718974, -17793512, -6199249, 2317672, 24473260, -438624, 3164317, -20016158, -9221295, 6383395, -4594542, --4318053, -2887292, 16492674, 5701569, -6226092, -19527068, -7526930, -1345399, -17450988, 1473174, --19955492, -13680008, -9200357, -18097382, 28196998, -5268851, -12523051, 11640435, -32749, -27776090, --1451162, 27304718, 22485228, -13013751, 17446158, 2683818, 16651588, -18631568, -26987964, 10184441, -12127377, 10320270, 9292699, -10477573, 10240813, -20478404, 13871134, -27852862, -24160264, 17733920, --14071923, 12028056, 16976932, 992137, -12853763, 3950833, 4910222, -1331440, -913217, -680752, -11112691, -9436043, 7269769, -9853192, 12998719, -11491185, -5982353, 4486094, -3740917, -654446, -5227512, 977642, 3542811, 9652939, -7752416, -4944044, 5823976, 3157875, 11465952, -9443559, -3294240, -1365800, -6926709, -7369627, 3058017, 1559073, -6849399, -10676752, 3155190, -129386, --1799591, 6377490, -9803263, 11251741, 3605625, -10240276, -10946261, 8999567, -15444166, 10402411, --1590749, 7114077, -632971, 2251100, 13797582, -22073984, 44296684, 67837400, -8949101, -24950538, --21620866, 62552976, 28133110, 60542932, 32499480, 199179, -28156732, -6153078, 15327128, 28496572, -13487808, -13035763, -3334505, 13675176, 19892142, 2587718, 4388920, -13870597, 2452426, -6640020, -9009768, 10327786, 26342108, 22887880, -12205223, 2087891, -13688598, 3648575, 11959336, 18133888, -1224603, -8468602, -144418, -15389405, 12819941, -3466039, 5218922, 12183748, 132070, 16193637, --8045011, -4307316, -3893388, -16443282, -10045929, -25135222, -4910758, -28676960, 1831804, -9796284, -23547158, 3626026, 6833293, -22149684, 9259413, 265751, -10052371, 16422344, -8956081, -4475356, -3896072, 10896332, -1460289, -5806796, 36522792, 12045236, 8316131, 13886703, -10104984, -379568, --3487514, 19290308, 26477400, 25719874, -15460809, -16596291, -2464238, -6533719, 6511708, 17372068, -17740362, 904628, 9855339, -1091995, -2941516, 5982890, 11231876, -977642, 8777839, -7410429, -1414118, 246961, 2918430, -2467996, 9841918, 5963025, -1290101, -2698313, 2815351, 1898376, -10707353, 734976, -6713034, -6908992, -4284767, 3206193, 3473555, 7137162, -8770860, 1311576, --2596845, 5763846, -4447439, 8083666, -2964601, 3103651, -4753455, -3578245, 2235531, -6794639, --257698, 7823820, 1622424, -3014530, 407485, -25323128, -54880020, -7439420, 72568840, 111815176, -93918584, 74171400, -4971962, 8696772, -54465556, -61829812, -100730944, -58034136, -63427540, -20010790, -8018704, 43852688, 31273268, 95498600, 83205864, 27451284, 5848672, -14845554, -32417340, -51346872, --18752900, -52631604, -13973139, -25620016, -16510928, -12295418, 2820183, 884226, 17891760, 25799332, -39293044, 42504608, 51103132, 44050796, -5253819, 4270271, -492848, 8262980, -25221122, 10198400, --26960584, -67563592, -33109902, -50574312, -84902376, -24919400, -7330973, -34438660, 11716134, 26110716, -59379532, 69900056, 103255848, 65157340, 53180284, 52785148, 32907502, -10234907, 5427765, -52074332, --44785772, -75412112, -89569392, -103521600, -75307960, -58087824, -5986111, -2818036, 8280697, 30244086, -51274392, 92231736, 91291680, 90814400, 72895792, 31228708, 47057808, 7371775, -23517094, -35527432, --83923128, -76384920, -67572720, -58339616, -46645492, -28248000, -17079474, -5851893, 4276714, 28294170, -33622076, 44224204, 36689220, 52422224, 47517908, 31071940, 35840428, 24063628, -6462315, -19399294, --22342420, -53430468, -46277736, -41712184, -31204012, -17013976, -563714, -2029909, 13735305, 21064668, -16441672, 19546934, 12535936, 3952444, -333397, 5696737, 1409823, -6507413, 7129646, 8545911, -682363, 4620848, -1197759, -1849520, 878858, 3223910, -33286, -7184944, -9549323, -9382356, --10842108, -7331509, -2103460, -2444373, 3313031, 1362578, 1064078, 3798362, 4400194, 3513820, -4752382, 7309498, 6298570, 3618510, 4395362, 1596654, -1280437, -325881, -1672353, -2568391, --923418, -1391033, -412854, -525597, 149787, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +5522254, -621697, 3624953, 906775, 827318, -11378442, -4951561, -5636071, 4433480, -609885, +-3697430, 4030827, 4161287, 273267, 3995393, -1669132, -137439, -234613, -2466922, -1284195, +-5468567, 2826089, -8085276, 3376381, -4217658, 3442416, 6427956, 2934537, -1225139, -1817845, +4749697, -766115, 219580, 4495757, -4817343, -140660, -1630477, -2774012, 588947, -674847, +994822, 4607963, 7593502, -2413235, 135828, 6307160, 478352, 1658931, -2324114, -3534758, +-520765, 1059783, -5959267, -1564442, 3112778, 404801, 1123671, 1848983, -856309, -1862405, +-1762547, -2088965, 2303713, 1887638, -1099512, -3414499, -4198868, 2074469, 36507, -3484829, +3675955, -803159, -245350, 560493, 1037235, -1738925, 2198487, -2341294, -792421, 2876554, +-1988033, 1146219, -3364570, -2572686, -1239635, -833224, -216359, 454730, -1357747, -1698660, +-171799, -967441, 378494, -358630, -309238, -463320, 358093, 99858, -357019, -693637, +-419833, -258235, -65498, -375810, -242129, -530428, 484794, -777389, -482647, -3735011, +-1026497, 29528, -3537979, -3579318, -2147484, 8588861, -6032819, -2480344, -4212826, -7670812, +2864743, 1315334, 298500, 6585259, 6234682, 6248104, 2017561, -1168768, 966368, 4709969, +-2014877, 2031520, 2379412, -5556614, 7911867, 1534914, 2460480, 5851356, -2251100, -5838471, +393526, 3965329, -2795487, -1268089, -3726958, 3946538, -102542, -402116, -6477348, -280784, +-788127, 3987877, 2035815, -3551938, 7084012, 2614561, 1473174, 2481954, -1156957, 3972308, +-1548873, 195958, -4946192, -5907191, 4734128, 3708168, 6558952, 640487, 1768453, -5080947, +-7865696, -3861176, -2361158, -2291365, -3635153, -3130494, 1619740, -911070, 2384781, -2952790, +-1132798, 1296006, 1466195, -887985, 4000762, 1215476, -3007551, 6041409, -2371359, 1858110, +7621957, 1625645, 1044214, -2364380, 104690, -2596308, -3103114, -500364, 1752884, -35970, +223875, 94489, -842350, -270046, 74625, -762357, 1786170, 1145146, -670552, -165356, +49929, 468688, 251792, -1188632, -643171, -286689, 130460, 528818, -554588, -855235, +733903, -440234, 562641, -306553, -474594, -594853, -7397545, -6890738, 4037806, 923418, +5655935, -8740795, -1234803, -3472481, 938450, 10416906, 5942624, -9100499, 3445101, 869731, +-3796751, -4218195, -5163625, -8378408, 299037, 1012002, -3108483, 1497333, -1791538, 328565, +2529199, 1962263, 5405753, -4719632, 8511015, -5179731, 4942971, 3930432, -3186866, 2304250, +413391, 3547106, -1415192, 1859184, 3246459, 1095217, 506269, -1288490, 2530810, 771484, +-1128503, 6067178, -7913477, 557809, -4792647, 9545565, 3368865, -8307004, 3237332, 10912438, +-10240276, -4869956, 1237488, -826781, -3880503, 3263638, -1356673, 7271917, -6100464, -593242, +-2014340, -408559, -365072, 7027640, -6501507, -2147484, -700080, -6708202, 3629784, 2815351, +7256347, 2964064, 6179384, 5575942, 922344, -2234457, 1755031, -185220, -766652, -1662689, +-151398, -2552284, -1016834, -568546, -3579855, 2290291, 199179, -2493229, -415001, -2019708, +197569, -78383, 1389422, -474594, -802085, 179852, -1145146, -31675, 1200980, 447213, +-251792, -802085, 3296388, -5092758, 646929, -3200288, 3375308, 1202591, -5126044, 14813342, +-9423695, 2960843, 16047072, -11346767, 5281199, -311385, 5247913, -1407676, -9698573, -2138357, +8009041, 7163469, 1985886, -83752, 4054986, 1973001, 146566, 3340948, 3372086, -2800319, +4296578, -1207423, 6772090, -5470715, -8420820, 1783485, -7351374, 2523830, 137976, -2116345, +-2353105, -3370476, -5003100, 958315, 1763621, 165356, 1272384, 1444183, -3084860, -6468221, +5076115, 1124745, 832687, -328028, 7459285, 1489817, 3123515, 7870528, -4842039, 1898912, +315143, 2367601, 5519033, 4314832, -7193534, -6312528, -1625108, -3610994, -828929, 247497, +-3098282, 1636383, -5752572, 273267, -5535139, 2728378, 2709588, -3211562, -4210679, 461709, +2310156, 423054, -4866735, 680752, -2786360, 2087891, 1733556, 775242, -913217, -1369021, +967441, -144418, -523986, -34360, -1255204, -1057636, -3339874, -828929, 3043521, 1330903, +-873489, -605590, 2124935, -732292, 638340, -942208, 38118, -236760, 113817, -1210107, +-803696, -461709, -345745, -436476, -503585, 101469, -332323, -763967, -627065, 402653, +4677220, -1999844, 4235375, -798864, 2111513, -2433636, 289910, -1598265, 1406602, -769336, +-9246528, 7022272, 4505958, 11582453, -7600482, 4742718, -9403294, -1615982, 5735929, 6206765, +-6599754, 1888175, -7645579, 564788, -8964670, 2935610, -6715718, -8334384, -7456600, 3742527, +-6024766, 259309, -7065758, 916976, 1037772, -1066763, -5172751, 3245922, 4540318, 2703145, +2114198, -5530308, 3007014, -5799817, -1833951, 3555696, 114890, -806380, -1561758, -226560, +3678103, -4279398, -8246337, -1745904, 2537789, -1745367, -6114423, -6185290, -8768713, 2093260, +-2529199, -8213051, 5869610, -5265630, -5160403, 9916543, -3586298, -1962800, 811212, -1802276, +-3236258, 796180, -5443871, -2702608, -4580046, -3617436, -1503239, 2949569, 7511361, 375273, +4514548, 370441, 3368865, 2333778, 6068252, -450972, -136365, 615791, 2243584, -1245004, +259846, -605054, 4437775, -185220, 2143726, 307627, 855235, -772557, 992137, -2736968, +2974802, 54224, 59056, -2241973, -564788, -3023657, 1427540, -1555315, 1022739, -424665, +3001109, -1482838, 594316, -2636036, -2096481, -218506, -911607, 704912, 7662222, -11038066, +1987496, 9656160, -3582003, 10575283, 2946348, 666794, -3067144, -7385733, -4858682, 12589623, +-6763500, -59056, -2337536, 983548, 7577933, 6807523, -4125853, 9834401, 9819906, -4629975, +-2421288, 5980742, -5053566, -4424353, -317291, -6795712, -153008, -2006287, 876710, 11798812, +4028143, 636192, -5408975, -15696495, -1912871, 8818105, 2164664, -5883569, 4512400, 7167764, +6263136, 7573101, -12403329, 2506114, 602906, -6156299, 3337190, -5541045, 3946001, -3126736, +4894115, 11000485, 14541149, 9177271, 4217121, -6033356, -1664837, -7201050, -7568806, -1594507, +8526047, 2096481, 134218, 2006287, -8345659, 2167348, 1038308, -76773, -4224101, 2259690, +4567161, -4829154, -9100499, 20725364, 2677912, -3713536, 1278827, 2230162, 9443559, -1902671, +2598455, 3218541, 4687420, -3262028, -1599339, -3521873, 1672353, -976031, 1844152, 1718524, +-1223529, -1928440, 3514894, 467615, 929324, -671089, 2124398, -3646964, -2601140, -1755568, +-646929, 4050691, 1491964, 2707977, 2066953, 2122788, 150324, 470299, -901943, -2555506, +2498597, 601832, 1056562, -1781338, -5709622, -1603633, -3503083, -1331977, 2653753, -3595425, +16345572, -1606318, 4605279, 11740830, 1534377, -1739462, -7679402, 4325569, -4147865, -5170604, +-15518254, -6922414, 3117073, -805843, -3007014, -11180874, 3907883, 6199249, -8824010, -4583267, +-2374580, -9203578, 3673271, 686121, -4889284, -3980361, -1687922, -12443057, -4451734, 6219650, +10365904, -7819525, -9823664, -2812667, -579821, -7936563, -6560563, 2538863, 4364224, -8696772, +17497696, 131533, 7113003, -3935264, 6683506, -4480188, 2010582, -12372727, -2621004, 5124433, +-12430172, 3467112, -2812667, -6271726, -14114336, -251256, 7825968, 178778, -14887430, -2181844, +2702071, 6056441, 10912975, -3946538, 4881231, 12824772, 4252555, 1634772, -5806259, -1022202, +-3624953, 839129, -4319664, 1072668, -8154533, -993748, 6239514, 1872606, 1209570, -3456912, +-6323266, 3601867, -1171989, 3715684, -1349157, 570694, -824097, -1727651, -1684701, 2451353, +912144, -369904, -837519, 179315, -2458869, 1253057, -2510945, -3029563, -1975685, 1211718, +147103, 120259, -2370285, 1968169, -299037, -1114007, -3349001, -942745, 208843, 554051, +1357210, 3671123, 1127966, 940061, 1791001, 4835060, -1583769, -4825933, 5883032, 1079111, +-9099962, -14207215, -11664057, -14704894, 12655658, -7672959, -1937567, 4207458, -13989245, -5749888, +-9747428, -4282083, -3149822, 6350646, -12265353, -6480032, 3840238, 4878546, 6993818, -69256, +181999, -2140504, -78920, -2830384, 1692754, -9647570, -5268851, -8479876, 5855651, 2975876, +4522601, 5977521, -11837467, -809601, -1329292, 10755672, -4087735, 3412889, 5776731, -2157684, +6189048, -4055523, 6907381, 9814000, -3882651, -637266, 8327942, -7135015, 11538967, -4931696, +-18510236, 2903935, 9494025, -3615289, 1039382, -284542, 7269769, 9222905, -9383967, -4031364, +2117956, 6359773, -11027329, -8295193, -6719477, 13318694, -375273, -15211164, -3366718, -6313065, +5149129, 712965, 3874597, -5696201, 9361955, 425202, 1629940, 2741263, -8771397, -2942053, +591632, -1067836, -2252174, -2511482, 2382096, -2391760, -2410551, 1866163, 2723009, 1448478, +-5175973, -440234, -2097018, -1475321, 2067490, 1906966, 4244502, -571768, -2169495, 1665374, +-4863514, -549219, -92342, -3119757, 375810, 314069, -1243393, 615254, -5520644, -978179, +-708133, 633508, 648003, 2311766, -340913, 2593624, 1415729, 1344325, 125628, -8558796, +-3464428, 5878737, 2176475, 8422431, 2888903, 4120484, -16540993, -6481643, 6454262, -4357781, +-3120831, -5510980, 1694365, 8617852, 2260764, 2053531, -11082089, -3747896, -2022930, 4108136, +9731322, -11819750, 5572183, -9635222, -2562485, -8863739, 1137093, 1227824, -452045, 3702262, +-8276402, -2384781, -7756174, -3189550, 139050, -358630, -9740449, 5581847, 6250788, -2330020, +7417946, 14590541, 1494649, 11052025, 14175003, 1114544, 456877, 3418794, -2982318, 4698158, +959388, -3104725, -4780299, 17806398, -1854352, 10405095, 4599910, -5251672, -6096169, -4244502, +4973572, -4069482, 6464463, 15683610, 7947300, -2085744, 249645, -13155485, -9067213, -8026757, +12341589, 19376208, -8511015, -78383, -7875360, -1301912, 11845520, -3752191, -726386, -18698140, +-2507187, -3411278, -1989644, 7089381, 496069, 1467805, 2154463, -3758633, 2968896, 1578401, +2644626, -2247879, 3836480, -1858647, -435402, -4745402, -1129576, 4111358, -1529545, -134218, +-817654, 3946001, -1016834, -2881923, 1663226, 1745367, 995896, 1370632, 1446867, -1568737, +387621, 2779381, 4824322, 4175782, 2703682, 1454383, 285078, 351114, -3033321, -290447, +1896765, -1871532, 1998234, -700617, 685584, 2609193, -1150514, 11188927, 31024160, 13522168, +-4216584, -1076963, -5763846, 14298483, -14324790, -8140574, -21900576, -252329, 10799158, 13434658, +2419677, -5334350, -13129715, -9608379, 9675488, -1966558, 15367393, -46171, -4935991, 7250979, +2642479, -134218, -3821984, 10029286, -1865626, 8663486, -138513, -4727686, 18906446, -4525822, +7668127, 18582176, 6534256, -789200, -9085466, -1716376, -14798310, -17340930, 3773129, 11096585, +-2666101, 1549946, -18923090, -7201587, 10959146, 5931350, -4905927, 3615289, -5615670, -2732136, +-8631274, -14511621, 872952, -3433290, -10244034, -16748762, -14438606, -4712653, -13263396, 6088653, +-5940477, 2089502, 1712618, -116501, 315680, -2163053, -2974265, 8569533, 17062832, -11521787, +2081449, -4853313, 6168110, -6440841, -256624, -4656819, -2098092, 15682536, 11409044, 2551748, +-1770063, 137976, -6424198, 2198487, 6393596, -1239635, -5556614, -3195993, 5535676, -6732361, +611496, 2837363, 2683281, -2383707, -2143726, 2375117, 3016141, -2336462, 3592740, 2051921, +2979634, -345745, 3934727, -447213, 2488397, 1196148, 1463510, 875636, -870268, 4598836, +-4552129, -707059, 991064, -1400159, -1158031, -2176475, 2059974, 149250, -3925063, -1511292, +2561948, -2858301, -12782360, -14460081, 3753802, 5553393, 17353816, -14662481, 4687957, 4510790, +-24423332, -1123134, 182536, -20402706, -11110007, -7208029, 5222144, -1619203, 1249299, -5746666, +8617315, 13543642, 7148436, -1907502, -20707112, -9010305, -11247982, 4225174, 1293322, -9074729, +-682900, 7158100, -6010807, 12354473, -11093364, -311385, -6456947, -20699594, 3558917, -8800925, +-9921911, 7734163, 11467563, -12821551, 4992363, 15171972, -4926328, 6658810, 5219996, -3534221, +2085744, -16804060, 25485262, 10043244, 6051072, 24338506, -29659970, -2207076, -4088272, 3167002, +12130598, 12599287, 4850092, 6017786, 15569256, -1467268, -10554345, -18343806, 7124277, -6928856, +699543, 4981625, -3658775, 7518877, 19937776, -12281996, 9296994, -5948530, -5701032, 15079630, +1147830, 4710506, 14619532, 12072079, -5304822, -6099928, -12861280, -3237869, 63888, 6714108, +7032472, 25233, 1667521, 1020055, -257698, 1411971, 1616518, 551903, 3969087, -1975148, +592706, 2867428, 1582159, 843424, -1787780, 3855807, 2499671, 595927, -2197413, -3064459, +-7295539, 4365298, -300111, -647466, 2197413, -3484292, -430570, 2449742, 3333968, 5054640, +2823941, 1405528, 1377611, -31675, 3642669, 15959562, 18682034, 4722854, 11509439, -7474854, +5399311, 5340792, -30771830, 8739185, 9921374, 2146410, -9830106, -179852, -19006304, 22367652, +13410499, -6964290, -7545184, -11044508, -5829881, 16203838, -16381005, -9309878, -2484102, -2670933, +-3555159, 2413235, -10855530, -10982768, -6535867, -8442832, -2327872, -10999411, -1551020, -7356742, +-24317568, -15431281, -6017249, -3780645, 3380139, 4139812, -146566, 796716, 7031399, 3473555, +3599183, 17192218, 3571802, 5872831, 10672457, 23066122, 19641422, 1135482, -7761006, -14969572, +13733695, -3269544, 37093484, 7594576, 16639777, -1702955, 2135673, -14618995, -563178, 12982612, +7462506, 9872519, -11106785, -7239168, -14278619, -27031988, 15714212, -23839216, -2888366, 31737660, +2151242, 12801150, 6081674, 9454297, 332323, -16924318, 16644609, -140660, -14932528, -13265543, +551903, 5371931, 11223286, 3146064, -13077102, 845572, -2540473, 2823941, -5103495, -4149475, +2401424, 2280628, -3994857, 564788, -1234266, -206158, -5280663, -1795833, -1624035, 2668249, +-1338956, -3106335, 4396973, -2469606, -957778, -7415261, -7951595, 206695, 296890, -3133716, +-2001455, 2829310, 2088965, -3181497, -5271536, -134755, 3604015, -22033720, 6556268, 8189966, +-14646375, -11459510, 302258, 8992588, 21531744, -1176821, -16472810, -16777216, -806917, -9528922, +2871186, 2961917, -18401788, -16016470, -30109868, -8997420, -8685498, -20628728, -13856101, -219043, +-9489730, -6086506, -5344550, -1763621, -20244328, -10982231, -12422119, -6267431, 6318971, -17360258, +1348083, 14296872, 17174500, -4101694, 4736812, 9709847, -16886200, 9488656, -7285875, 14977088, +-7242926, 1289564, -7810398, -1796370, 29952028, -6231461, 11301133, -21941378, -3574487, -98784, +-20698522, 19277424, 777926, -7175280, 13931800, -5775121, 3608310, 27377196, -10862509, -15115064, +10382010, -2948495, -30819612, 12457553, -40867152, -22031034, 16432545, 12728136, 2653216, 8591008, +71941, -297427, -30827664, -16663399, -7245073, 2743410, -17514876, 4238596, 2451890, 7156490, +-11432666, 605590, 8864812, 6645925, 5103495, 510564, 4202089, -10125385, -6416681, -6860674, +-1884954, -1477469, -882079, 8021389, -4153770, 4168803, 8099772, -4069482, 2506114, -6524056, +-4898410, -392990, 2087354, -5873368, 2537789, -7340636, 6358162, -2646237, -1277753, 181462, +5703717, -1894618, 2277943, -5189394, 4565550, 3362960, 10537165, 2383170, 8653822, -8647380, +-2870112, -10269804, -5290863, -5088463, 41455024, 22702124, 32212, -21343304, 10965052, -22256520, +-18108118, 3293703, 18411988, 36403068, -5731634, 18405546, -6585259, 13065827, 22059488, 12342125, +14096620, 7565585, -4139812, -18056042, -18693846, -5653251, -17667884, -5193153, -3253975, -3973382, +14105209, -2404108, -36287104, 2130304, 8735963, 8380555, 21681532, -2238752, -43305080, 24617678, +-19390704, 6338835, -4259534, 14565845, 21189222, -23602456, -1676648, -11793443, -20605106, 14898705, +-10261751, -25345676, 9919764, 14803679, 24335822, 6452115, -3828963, 2664490, 19916838, -16052440, +31457414, -9900436, -8808978, -2834679, 19154480, -19963008, 1802813, 2435783, -55599964, -8240969, +17162690, -8000987, 2845953, 7714835, 3995393, -2728378, 4482335, 19055160, 22721450, -18025978, +6460168, -13205951, -2294586, 22526030, -523986, -2348273, 788127, -1526861, -11724724, 3213173, +734976, -6823630, -17345762, 227096, -4182225, 5282810, -8039105, -7474317, -9449465, 7959112, +1787780, 4876936, 3871913, 325344, 2843268, -3839164, -7978439, 12108050, -1274532, -5879810, +-243739, -4241280, -2710661, -4896263, 561030, 1484448, -773631, 3349001, 8764418, -341987, +-2211371, -3615289, 738734, -4494147, -2608656, 5037997, -3929895, -3227668, -4796405, -11689827, +-6605660, 1611150, 7490960, -6149320, -1620813, 23759222, 15761456, -44174276, -25113748, 30255360, +35066260, -18848464, -6386617, -49708340, -27475442, 7159711, -2254858, 6610492, -26422638, -16558173, +-18108656, 26825292, 39862128, -1940788, 10762114, -6491306, -3491272, -508954, 9155797, 17271138, +4204773, -6154688, -3304977, -4059818, -23810762, -13509283, -24207510, -3224984, 7485055, -10183904, +14939507, -11068668, -4140885, 23173496, -11233487, 13019656, 9057012, -4259534, -22323630, -16172699, +-13307419, 4012573, 41748692, 7336878, 22450868, 26443040, 20712480, 15316390, 13727252, -23044110, +557272, -3783866, 30906048, 14667850, 18079128, 32246078, -15833397, -21718576, 7973070, 27270358, +-46231028, -850940, 3696356, 21490406, -37384468, -56369300, -10014790, 15775952, 3955128, 6372121, +17681306, 1113470, -12483859, -18513994, 629750, 2525978, 3675418, 17046726, 25308632, 11949136, +1895154, 75162, -257161, 2072322, 2562485, -6398428, 9350144, 1152125, -8513162, -15032922, +1881196, -6413997, 3245385, 1628866, -1334661, 943282, -6201933, 6460168, -3319473, 4334696, +-6669011, -4336307, -11913702, -11782706, 580894, 6192806, -5259725, 12406013, 354872, 3690988, +-3721052, 13260175, 1130650, 6075231, -6542846, -3592203, -2071785, -8256538, -1600412, 8939438, +-15462419, 11917997, -596464, -11344619, -20089710, 7569880, -9793062, -19589882, 14097156, 27195196, +8301635, -10292352, 16095390, 27361626, 10059887, 5752035, 1898912, -2889439, 12796318, -22608708, +1321776, -32577326, 17467096, -26257282, -2249489, 14390825, 7828115, -14896020, 3157338, -17259326, +35744864, 4825933, 11580306, 18846854, 39439076, -16088411, 12796318, -18672908, 6804302, 14410689, +31707596, 7711077, -6462852, 32742146, 4380867, -2047089, -18720152, 1480153, 20369956, -6652368, +19581292, -23859618, 37152540, 38789996, -46324980, -949725, -2922725, 10384157, -7890929, -5810554, +19931870, -16546362, -49412524, 863288, 43948788, -34395172, 17418240, -7738994, -4385699, -20841328, +48520244, -2856690, 8043937, 4738960, -32610076, 42531988, 3323231, 37859064, -74320648, 7368554, +-6967511, -22133040, -5995775, 13345000, -17284560, 11923366, -15574625, -10101763, -20505784, 26207890, +-9925669, 2060511, -21864604, 1236414, -16052977, -5199595, 7510824, -10808822, 5219996, 979253, +-14808510, 13704167, -6047314, 2209761, -6309844, 12466679, -9116605, 2202245, 891206, -3102577, +16174847, -9028021, -11249593, -6249715, -12612171, -17340394, -8805757, 1996623, 1151588, -12404402, +-7154879, -8236137, -12230456, -9430138, 4307852, 3156801, -322659, 31423592, 3623879, -23854786, +2324651, -48631376, -11252814, 2573222, -9577777, -38744364, -4443144, -25395604, -6479495, 23511188, +5282273, 30788474, 12581570, 11690364, 7039452, -10356777, 24448028, -12377022, -411243, 11735461, +5184563, -14969035, 12046846, 5113696, 28954522, 12102144, -5416491, 17726940, -14194330, 23897198, +7969312, -26008174, -27096948, 14028437, 17266842, 7389491, 2630668, -12566001, -17427904, 5389647, +-17155174, -25451440, -8080981, -4191351, -23746874, -8613020, 8559333, -15958488, -26758184, 7614977, +9582609, 1063541, -3504157, -1409286, -4762582, 9658845, 44889924, 9344775, -1739999, -1575179, +-16224776, -25622702, -11704860, 37314140, 39652212, 20608864, 3513283, 36392868, 17147120, -8051453, +-50709068, -38298760, -31942208, -60081760, -35391604, 8677445, 48642116, -21529598, 16255914, -24089934, +7627862, -1827509, 16510391, -7698729, -3147137, -21474836, -12730820, -5105106, -19609746, 24811490, +-4160213, -12663711, -6416145, 2726767, -14281840, 10199474, 7051263, 16135655, 3339874, 4707284, +-16000364, -18096844, -2454574, -13309030, -8860518, -15546171, -23046258, 1415729, -6273337, 1647120, +1299228, 17631378, 17052094, -6250788, -3804804, -7474317, 16457778, 11368242, 6960532, 2846490, +-3774203, 9842454, -13647795, -5070746, -2519535, -14995878, -29844118, 15709380, -903017, -9256728, +-4327180, 11241540, 20809654, -8856759, 26845156, -30748208, 24797530, -3078955, 33138358, -21462488, +19086298, -31688268, 27536110, -25590488, -10979547, 38607996, 8742406, 31031676, 44069048, 4640176, +-3712999, -18345416, -1623498, 28175522, 6924024, -9837623, -31235686, 2772938, 5998996, 14811732, +8836358, 12355010, 7494718, -18010946, -29070486, -12142946, 27879706, 10874857, 89247808, -28248536, +-24012088, 29298120, 45759120, 9785009, -907312, 12234214, 2916820, 14903537, -13605383, 5497558, +21339008, 23886998, 15714212, 69562904, -8913131, -8756901, -4610648, 36002028, 21299816, -17926120, +18656802, -164819, 6026913, -14702747, 31681290, -31439698, 2128156, 49242872, -36148592, 105441448, +-48360260, 50614044, 46093052, -45030584, -41500660, 47106128, 1951526, -26674968, -11483132, 26190710, +-71077416, 11497091, -8406862, -45336064, 29875256, -35396972, 2793876, 3105798, -14466524, -34901976, +9557913, -2261837, -1618666, 7305203, -7329362, -11155104, 6315213, 15366319, -5650567, 2806224, +11512123, -10246718, 16031502, 12949863, -25584046, 4266513, -14373108, 7132867, -1023276, 2709051, +-13089987, 6082211, 3422015, 591095, -6563247, 20447802, 4465692, -23622, 18881214, -12627741, +-12181064, 2760590, 8159364, 2802466, 9092983, 5477157, -26304528, -12828530, 6803765, -14626511, +22668838, -8334921, 17365626, 23416698, -54388244, -22512608, 32749126, -69270304, -43543988, -28705950, +48386564, 104359656, 28368796, -81051400, -18752364, -82812336, -43826920, 68365144, 40215928, 64305324, +34746824, -47802988, -76973864, -57917096, -14361834, 35061964, 38951060, 24137180, 12911745, -19762218, +-84104048, -100249368, -22148610, 77622944, 137204880, 93750544, -17912162, -64039572, -92938264, -68208912, +-55897924, 536871, 21867826, 75608064, 79867064, -42942692, -27513024, -100368016, -94087704, -33239826, +8920647, 97843112, 143433648, 64282776, -42763916, -150174064, -112003624, -81438488, 39250632, 86288040, +53218404, 34382824, 28488518, -89395448, -16840566, -50761680, 18729278, -6604586, 52916680, 84186728, +66115116, -77612744, -157918432, -117950000, 12825309, 92641368, -2596845, 128265976, 4997195, -32371168, +-38754028, -27695560, 46171, 92826592, 79344152, 15161771, -32029718, -10801843, -6158446, 48981416, +53142704, 6958921, 2012729, -7789460, -1727651, -9720048, -13347685, -8048232, -5052492, 19104552, +28598576, 24233816, -35183836, -38967164, -15545097, -15812459, -15970299, 36617280, 29138668, 38483444, +10830297, -15658377, -28761248, -54448376, -35383552, 23714126, 48309256, 74257304, 50142668, 4832912, +-113850992, -99198712, -34306588, 41661720, 63581084, 86042688, 64103460, -4369593, -64869576, -94489280, +-92136176, -16065862, 99686192, 104180336, 52334712, -24212878, -69352984, -47449724, -32668058, 3652870, +-18343268, 36658084, 11662447, -30030412, -27979028, -99858, -45192184, -5798743, 6902013, 5000953, +-3766686, 943819, -15080704, -2094333, -1615982, 7636989, -5088463, 20720532, -5377299, -4220342, +-5665599, -6762963, 13211856, 3533684, -6116571, 20057498, 1454383, -36208184, -17809082, 9718974, +17793512, -6199249, 2317672, 24473260, -438624, 3164317, -20016158, -9221295, 6383395, -4594542, +-4318053, -2887292, 16492674, 5701569, -6226092, -19527068, -7526930, -1345399, -17450988, 1473174, +-19955492, -13680008, -9200357, -18097382, 28196998, -5268851, -12523051, 11640435, -32749, -27776090, +-1451162, 27304718, 22485228, -13013751, 17446158, 2683818, 16651588, -18631568, -26987964, 10184441, +12127377, 10320270, 9292699, -10477573, 10240813, -20478404, 13871134, -27852862, -24160264, 17733920, +-14071923, 12028056, 16976932, 992137, -12853763, 3950833, 4910222, -1331440, -913217, -680752, +11112691, -9436043, 7269769, -9853192, 12998719, -11491185, -5982353, 4486094, -3740917, -654446, +5227512, 977642, 3542811, 9652939, -7752416, -4944044, 5823976, 3157875, 11465952, -9443559, +3294240, -1365800, -6926709, -7369627, 3058017, 1559073, -6849399, -10676752, 3155190, -129386, +-1799591, 6377490, -9803263, 11251741, 3605625, -10240276, -10946261, 8999567, -15444166, 10402411, +-1590749, 7114077, -632971, 2251100, 13797582, -22073984, 44296684, 67837400, -8949101, -24950538, +-21620866, 62552976, 28133110, 60542932, 32499480, 199179, -28156732, -6153078, 15327128, 28496572, +13487808, -13035763, -3334505, 13675176, 19892142, 2587718, 4388920, -13870597, 2452426, -6640020, +9009768, 10327786, 26342108, 22887880, -12205223, 2087891, -13688598, 3648575, 11959336, 18133888, +1224603, -8468602, -144418, -15389405, 12819941, -3466039, 5218922, 12183748, 132070, 16193637, +-8045011, -4307316, -3893388, -16443282, -10045929, -25135222, -4910758, -28676960, 1831804, -9796284, +23547158, 3626026, 6833293, -22149684, 9259413, 265751, -10052371, 16422344, -8956081, -4475356, +3896072, 10896332, -1460289, -5806796, 36522792, 12045236, 8316131, 13886703, -10104984, -379568, +-3487514, 19290308, 26477400, 25719874, -15460809, -16596291, -2464238, -6533719, 6511708, 17372068, +17740362, 904628, 9855339, -1091995, -2941516, 5982890, 11231876, -977642, 8777839, -7410429, +1414118, 246961, 2918430, -2467996, 9841918, 5963025, -1290101, -2698313, 2815351, 1898376, +10707353, 734976, -6713034, -6908992, -4284767, 3206193, 3473555, 7137162, -8770860, 1311576, +-2596845, 5763846, -4447439, 8083666, -2964601, 3103651, -4753455, -3578245, 2235531, -6794639, +-257698, 7823820, 1622424, -3014530, 407485, -25323128, -54880020, -7439420, 72568840, 111815176, +93918584, 74171400, -4971962, 8696772, -54465556, -61829812, -100730944, -58034136, -63427540, -20010790, +8018704, 43852688, 31273268, 95498600, 83205864, 27451284, 5848672, -14845554, -32417340, -51346872, +-18752900, -52631604, -13973139, -25620016, -16510928, -12295418, 2820183, 884226, 17891760, 25799332, +39293044, 42504608, 51103132, 44050796, -5253819, 4270271, -492848, 8262980, -25221122, 10198400, +-26960584, -67563592, -33109902, -50574312, -84902376, -24919400, -7330973, -34438660, 11716134, 26110716, +59379532, 69900056, 103255848, 65157340, 53180284, 52785148, 32907502, -10234907, 5427765, -52074332, +-44785772, -75412112, -89569392, -103521600, -75307960, -58087824, -5986111, -2818036, 8280697, 30244086, +51274392, 92231736, 91291680, 90814400, 72895792, 31228708, 47057808, 7371775, -23517094, -35527432, +-83923128, -76384920, -67572720, -58339616, -46645492, -28248000, -17079474, -5851893, 4276714, 28294170, +33622076, 44224204, 36689220, 52422224, 47517908, 31071940, 35840428, 24063628, -6462315, -19399294, +-22342420, -53430468, -46277736, -41712184, -31204012, -17013976, -563714, -2029909, 13735305, 21064668, +16441672, 19546934, 12535936, 3952444, -333397, 5696737, 1409823, -6507413, 7129646, 8545911, +682363, 4620848, -1197759, -1849520, 878858, 3223910, -33286, -7184944, -9549323, -9382356, +-10842108, -7331509, -2103460, -2444373, 3313031, 1362578, 1064078, 3798362, 4400194, 3513820, +4752382, 7309498, 6298570, 3618510, 4395362, 1596654, -1280437, -325881, -1672353, -2568391, +-923418, -1391033, -412854, -525597, 149787, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, { 7398618, -2813204, -3714073, -630286, 2575907, -455267, 2740726, -6771016, -4831838, -1181653, -5706938, -2391760, -1274532, -627602, -3857418, -1717450, 3578782, 3580929, -1407676, -1089311, -2382633, --5472325, 6096706, 3630858, 150861, 643171, -341450, 178778, 4908074, -2490544, 894964, --7861401, -6454262, -1612760, 576063, -5478231, -1026497, 1949378, 462246, 99858, -2760590, --2114735, 5132486, -2380486, -2204392, -721555, -737124, 2267206, -1200443, -3367254, -130997, -2955474, -4220879, 183073, -4520990, 317828, -3315178, 5005785, -299037, -5273146, -782221, --511638, 613107, -7530689, -927176, 627065, -5051956, 2318209, 91268, -5801964, 2622078, -3568044, -3114925, -3554086, -6396280, 3340411, 1908039, 5917928, 2898566, -879931, 1127966, --821413, 1771137, 1881733, 4059281, 1039382, -1803349, -63351, 453119, -133681, 2307471, -604517, -831076, -1134408, 1107565, 907312, 1720671, 873489, 650688, 1046898, 920734, -391916, 558346, -111132, -332860, 373125, 215822, 443992, -279710, 523986, -54224, --5474473, 2469606, -6828998, -1914482, -948651, -3466039, 3300682, 7637526, -3120294, -1031866, -369367, -3177202, 2207613, -490700, -2563559, -4384088, -2313914, 6886980, 6673306, 3731253, -7750806, 4542465, 2473901, 7275138, -4518843, 1589675, 3128347, -159451, 1268626, -2181307, -1409823, -10103374, 228170, -602906, 3656091, -2300492, -1268626, -721018, 2804614, -3210488, --501437, 891206, 1979980, 1896228, -522375, -3442416, 663572, 1181653, 2486249, 1848447, -2889439, -3237332, -1896228, -606664, -5696737, -693100, 1534377, 4894115, 5500780, -768262, -3041374, 2235531, -391379, 2020245, 2445447, 3528316, -1402307, -63351, -2637110, 443992, --2269353, 1560147, -3369402, -3216931, 1941862, -34360, -6310381, -607738, -4720169, -1300301, --652298, -813896, -6272263, 594316, 2243047, -1868311, -1773822, 1075352, 817118, 446140, --1224066, -3392487, -151934, -1490891, 1308354, 38655, 113280, -385473, -1375463, -1559073, --1733556, 119185, -736587, 757525, -1076963, 431107, 289373, -1008244, 3221, -1121523, --378494, 62277, 31675, -996969, -215285, -170188, -6911676, -6536404, 2436320, -779000, -5430450, 5437966, 459562, 115427, 10492068, -2851322, -238908, 8788040, 374736, -5109938, --7445326, 5390721, -2171643, 13422, -4607963, 1410360, -3288334, 3652870, 16378321, -5999533, --4799626, -5927592, -6377490, 1142461, -5199058, -12923557, -315143, 1266479, 41339, -5156108, --1069447, 4161823, -5258114, -3136400, 7660074, 2488934, -1938641, -1854352, 4935991, -2474975, -3536369, 3190624, -6974490, -4664872, -4125853, 4534949, -3533148, -2141041, -1916092, -2360085, --357019, -4745402, 48318, -1458678, 1173600, -689342, -10219875, 4705674, -5710696, 4473209, -853088, -8447664, 1716913, 5576478, 1742683, 9313637, -3948149, 467615, 1103270, 2142652, -3359201, -3740380, 1408749, 1184337, -5430450, 7405598, 545461, -1111323, 3174518, -1126355, -1427540, -1419487, -2834142, -256087, -1822140, 2390149, -630286, 404264, 2914672, 944893, -1112397, -710280, 1586990, 216896, -423591, 979253, 2118493, -1597191, 139050, -1682554, -1009317, -595390, 3058554, -4300873, 2004139, 2246268, -2377801, 1107028, -1190243, -9346923, -2860985, 8866960, 7308424, 8319352, 1417876, -1732482, -7130183, -3670050, -3367254, -2624762, -7308424, 10249403, 702764, -636729, 7237557, -11733851, 199179, -887985, -244813, -3778498, --3999688, 4365298, 5270999, 242129, -1213865, 2191507, -5770289, -4268124, 4354560, -4711579, -9117679, 8373039, 1347546, 5185636, 4275103, 951335, -3790846, 1377074, -246961, -6389838, -6229850, -478889, 2888903, 5182415, -6117644, -2278480, -7261179, -1552094, 1602023, 6849399, --6998649, -2680597, 5022965, -987843, -4496294, 7507066, -6237367, -12916577, 2137820, -7239704, --3323768, 3618510, -3195456, 708133, 721555, -3090766, 5494874, -4997732, -5817533, -6842957, --821413, -2922188, 402116, 1922535, -4289599, 1202054, 1158567, 394600, -2073932, 1203128, -848256, 2979634, 379031, -849330, -2042794, -1196685, -938987, -436476, -759672, -1150514, -318901, 647466, 782221, 345745, -443992, -903554, -450972, 1523640, -1527398, -1452236, --512712, 41339, -192200, 1185948, 1248225, 1305133, -818191, 513785, 207232, 566936, -2841121, -1412507, 181999, -11762842, 2518998, 11068131, 907312, 1724429, 3380676, 10368051, -1440425, -9990094, 11094437, 4859219, 4020626, 6736120, 5871757, 40802, -2050310, 6354404, -4887673, 1658931, -4551592, 5527086, 2629594, 8185134, 9579925, 3631932, -2328946, 216359, --41339, 3980898, 12155831, 7204808, -6700149, 11737609, 501437, -1444720, 1583232, -8654359, -9651865, -1279900, 207232, -1147830, 2487323, -1297617, 5002027, -6977711, 9862319, 8382703, --276489, -1561758, -5426691, -10408853, -3534758, 4135517, -2385318, -3901978, 5562520, 6486475, --4350802, -3905199, -13313862, -4627828, -1611150, -646393, -14901926, 7614440, 878321, -8894340, --7272990, 2458869, -3427384, 913754, -2166274, 485331, -3889630, -861141, -3464428, 2541547, -5034776, -1403917, 3841848, 457414, -1534377, 4477504, 1602560, 233002, 3729105, -418222, --1635309, -2308008, -2567854, -2717641, -2546379, -3178276, -2285460, 175020, -1241246, -2981244, --1432909, 314606, -592706, -1100049, 687732, 1228361, 632434, -1351841, -1903207, -2405182, -307627, -2280091, 2167348, -1245004, -1276142, -1228361, 91805, -871342, 5510980, -6960532, --55835, 71941, 258235, 11242614, 6184753, -97711, 14018773, 6475200, 12658342, 3018825, -4289062, 13502840, -5328981, -8999567, -5679021, 12625593, 3105798, -7122667, 9648644, -2635499, --5602785, 8607651, 20452634, -5272609, 1051193, 3264712, 3933653, -5313412, 703838, 11249056, -1238561, 13832479, -2978560, 14854144, 10544682, 3559454, 8847633, 5580237, -5247377, 3694746, --1315871, -1321776, 1463510, 1009854, -914291, 3919695, 2764348, 9598178, 6519761, -8021925, -2855617, 3614215, -5865852, 354335, -13913010, -18104898, 7311108, -4637491, -11766600, -2537789, --6302328, 7799661, 1782411, -3675955, -8859444, 6997039, -6388227, 4269198, -7176354, 1067299, --2840047, 10972031, 2128693, -4281546, 4310000, -9354439, 8608188, 1389422, -7955890, 368830, --740345, -2308008, -872415, 1147830, 2474438, -2339684, 4021163, -869194, -1444720, -1781338, --1285269, -3463891, -179852, -1229971, -3255048, -1240172, 1313186, -2081985, 2254858, 332323, --1086627, 571768, -2122251, -413927, -1446867, -192200, 44560, 107911, 1218697, 1344325, -1615982, 71941, 879931, -70867, -7922604, 1064078, 321049, 2102387, -4827007, 5466420, -6038724, -651224, -4014721, -13911399, -11913702, -9175661, 4292283, 1243930, 2233920, -11404212, -7247221, 5103495, 9015136, -9776419, 9297530, 7135552, -5594732, -4655745, -2815351, 9450002, -6540699, -4150549, 959388, 14297946, 7268159, 3695283, 8308614, 5698348, 2254321, -4725538, -1098438, 665183, -1985886, -5245766, 12724914, 5937256, -11786464, 7996692, 7975755, 7920457, -6233072, 1682554, -7333120, 236223, -948651, 11083700, 1505386, 4962835, 10088878, -1787243, --10938208, 2454574, 5947993, 11201275, -14872935, -8392366, 4127464, 176094, 1417876, -8813273, --2139968, -8545374, -1146756, 4093104, -2773475, -4662187, -5649493, 2439005, -1365263, -2820183, --6995428, 285078, -9381282, -148176, -865973, -4750771, -5264020, 6082748, -2032593, -1480690, --2959233, -5779952, 2108829, 2829847, 1992865, 2222109, 1644973, -3179350, -1689533, -947040, --734439, -2986076, -5604396, -2481417, -87510, -1890323, -111669, -3002182, 321586, -1614908, --1098975, -2173254, -2417530, -1268089, 2536178, -1758789, -803159, 404264, 1063004, 686658, --1144609, 1914482, 2885144, 2882460, -724776, 5284958, 686658, -9248138, 9418863, 6054294, --2816962, 3745748, 5673652, -6251325, -2115808, 24105504, -789737, 9405978, 6573985, -20106890, --10696616, -1123671, -848793, -225486, 11422466, 2575370, -5562520, 11818139, 7251516, -1465658, --1941325, 3781182, -1924145, -4159139, -8966818, -10610180, 5876589, -2314451, -5007932, -503048, --16554415, -3060164, 1091459, 9152575, -10938208, -3143916, 1415192, 755914, 2384781, 837519, -11672647, -13580150, -4529580, 3051038, -443455, -8002598, -1695438, 10617159, 9104794, 7903277, --2171643, -13518410, -6183679, 4934918, -1544041, 9131100, -532039, -142808, -6755984, -4150549, -7943542, -9679246, 6652905, 5239860, -7006166, -3436511, -1629403, 1167157, -7543037, 3717831, -2612414, -3656628, -1154809, -10241886, 3730716, 8013872, 11384348, 1053341, 3061775, 5451924, -1673964, -8934606, 6178848, -2095944, 1027034, 89121, -2879776, -3037616, -1654099, 4250944, -758599, 3564823, -368830, 642098, -4985920, -1635309, -2283849, 3848828, -364535, -1555315, -2633889, -1851131, 2069101, -1151051, 357556, -4060355, 991601, -888521, -835371, -2576444, -974958, -343597, -2309082, -4196720, -930934, 502511, -1692754, 1810329, -419833, -18180596, --1197759, 2569464, 12206834, 1600412, -567473, 7492571, -5442798, 16170552, -16139413, -1471026, --3506841, 2764348, -847719, -1242319, 4068408, -2954401, -5526549, -3578782, -3290482, -9576703, --1585917, 6928319, -1634235, -4216048, 10147934, -87510, 12218645, -11936251, -6935299, 15265388, --1601486, -854162, 850940, -9494025, -1163936, -11870216, 3447248, -14262513, -410706, 10726681, --3526705, 7333657, 9503689, 5623186, 7474317, -9621800, 9616969, 1146756, -25310242, -4173635, -3636227, -1990181, -2851322, -10758356, 8505109, -9157944, -1853278, -10395431, -9862319, -15130633, -13530221, 174483, 15776489, -7794829, 11884711, 15880642, -10414222, 12956306, -15870441, -13090523, --14368276, -4904853, -10131828, 3325379, 4738423, -470299, -1892470, 4295, -11365557, 976031, -104153, 6640557, 2570001, 2656437, 4640712, 2728378, -2485712, -4832, -4634807, -2656437, -106300, 1984275, 67109, 2231773, -1530082, 2392834, -705985, 1315334, -7039989, 531502, -2676302, 2148021, 3904662, -2115808, -3106335, -4014184, -99321, -241592, -3290482, -3471407, -374199, -467078, 606127, 137439, -1041530, 1984275, 5607617, -1252520, -1299228, -590021, --1517197, 5153961, 215285, 729608, -1724966, 3114388, -3245922, 11993696, 20028506, 2945811, --5415954, -10795400, 6681359, 18581640, 106300, 5370857, 886374, 7451769, 5025649, 5732708, -10017474, -12103755, -1040993, -4459787, 15827491, 11863773, -657667, 18370648, 9598178, 1700807, --17302812, -8478802, -13214541, -6011344, 1249299, 5012764, -4796405, 763967, 18533320, -3420405, --72478, 1022202, 19043884, -11623255, -4800163, -4691715, -1969779, -11372000, 13087302, 955093, -8746164, -13656922, 1775432, -1423245, -8272107, -3179350, -15247671, 4823785, 188979, 3260954, --1960653, -849330, -17687750, -5908802, 6769942, 11247982, -3345780, 2993592, 23278186, -1450625, -1251446, 4361540, 10435697, -9841381, 2168422, 11912629, -7131793, 8676908, 2420214, 9039832, --12039867, -6008659, 1512902, 2794950, 5938866, 6905771, 6445672, -4436165, 1791001, 4098473, -7820599, 12406550, 5616207, -5819144, -2843268, -4570919, 1884954, 2653753, 5273683, 4935455, -2847027, 5210332, -5680094, -1081258, -5791227, 4926865, -6619082, 6626598, 4633733, -4909685, -2808372, -573378, -3126199, 760209, 884763, -1753420, 1393180, 8210904, -363998, 4295, --5146982, 2596845, -333934, -147640, -4683662, 4702989, -4000225, 1476395, 1912334, 3726421, --521839, -1767379, -10999948, -16581795, 4552129, -1715303, -16881906, 4677220, 1620813, 15308337, -13403519, -12427488, -15064598, 3427921, -11517492, -5960878, 405338, 22770842, 256624, -2822867, --20361366, -10101226, -1819456, -15075335, -23065584, 15842524, -5993090, -7202124, -1382980, 17176112, --5414343, 1933272, -3488587, -3375844, -10000294, -5243618, 1616518, -23967528, -15505906, -4381941, --8819715, -8077760, -2858301, -9368934, 8121783, 3799972, 2573222, -5690295, 4088809, -34624952, -32208496, 18988050, -3309809, -4342749, 18103824, 1151588, -10894185, -15399605, -2005213, -5366562, --6471979, -9242770, -9533754, 11924977, 11041824, -4961761, 24297166, -13474386, -11141682, -9973988, -32749, 8002061, -28521804, 8476118, -9035001, 14947023, -16170015, 7137162, -1485522, -5415954, -11130945, -20936354, 19710142, 1171989, -277025, -4396436, 570157, -239981, -9972914, 2005213, --2764348, 5252208, 6631967, -6043019, 3032247, 4286378, 9312563, 382252, -3040837, -473520, --832150, -3656628, 2730526, -1400696, -2230699, 2428267, -3695819, -1129040, 906775, 2727841, -3200288, -7396471, -5692979, -4888210, 848256, 3095061, 4832, 2057826, 1742146, 5035313, -2610266, -3996467, 3762928, 794032, 16538845, 1338956, 38529076, 12519830, -760746, 1628866, --14881525, -19330038, 24067386, -7153268, 2741800, 31899796, -8306467, -1573569, -6818798, 24867324, -4799089, -10327249, 14707579, -5379984, 21840982, 11426224, 5444408, 3198140, -2415382, -8396661, --2724083, -2306398, -23408646, -5920613, -3773666, 12909061, -7254200, 2400887, 4300873, -16813186, --24991878, -934692, 21563958, -1484985, 19153944, -3364033, -26796300, -10417980, 1206349, 6024229, -4831302, -21835076, 168577, -6285685, 15806017, -16216723, 19984482, 29532732, 19161460, -6071473, -3554622, 11883638, -4280472, 23127862, 26796300, 23600308, 7701950, 25882546, -914291, -10501732, -3321084, -13615046, -17154636, 9290551, -7383049, 21140366, 10915123, 5566278, -7318088, -26153130, --23701778, 16550656, -10518912, -21174188, 14054207, 28098750, 16879222, -9087077, 13391171, 8195872, --2977486, -6713571, 7924752, -10069014, -3096135, -1133871, -6956237, 853625, -1549410, 5735929, -3447248, -1406065, -9246528, 5060009, 4594005, 3152506, -2057289, 237297, -8654896, 630286, --164283, 2165201, 1935957, 159451, 5028870, -1846836, 6987375, 7923141, 1977833, 6422050, -500901, -5196374, -12269648, 2691334, 195958, 2556579, -8739185, -19440632, 11376831, 14249628, --226560, 6978785, 4683125, 6906845, 5720897, 2640868, -1551557, 3381213, -4082903, 7413114, --13218836, -36822904, -14781130, 20212652, 1165547, -5989869, -12335146, -48855, 16984448, 21711060, -4622459, -13285944, -2347737, 17376364, -20996484, 2033130, -2616172, 15556372, 17717276, -14171245, -26881126, 5252208, 1070521, 38012072, 186831, -11866995, 13296145, -6294275, 1896228, -8061654, -2820720, 25285010, 2910377, 32197760, 13566191, -28009630, -30719754, -6656126, 7989713, 17226576, --23819888, -8364986, -3442953, 28999082, 26505316, -22632868, -875100, -13785771, 8751533, -4716411, -30305290, 457414, -6654515, 19951734, -4038880, -23456428, -11859478, -3790309, 24443196, -21597780, -13128641, 38024420, 17992154, 25543782, -6802155, 10424959, -6852084, -15698642, -15131707, 8032663, --10749766, -658204, -3843996, 6997576, -150861, 15489800, -3435974, -7026567, -2491618, -3019362, -3823595, -2374043, 5970542, -10502806, 7847442, -6919729, -3157875, 2257542, -2741263, -3217468, -4976257, -4563403, -1717987, -1297080, -3787088, -12921409, -7282654, -1177358, -1467805, -3754875, --5036386, -1109175, 3937948, -2175938, 2349347, -1911261, -48855, 3045132, -9907416, 1202591, --1323924, -7447474, -17706540, 13146895, 19843822, 16188805, -28328530, -13806709, 18223010, 54374284, -3524558, 11644730, -15629386, 4714801, -564251, -2777233, -14659797, 4283156, -5008469, 25975962, -21001854, -27604292, -11901891, 28723668, 14928769, 10177999, 3313031, 15414638, 18474802, 5581310, -11147588, 9820443, -12970264, 1717987, -12693776, -6036040, 3821984, -2775623, 2462627, -11403675, --9755481, 7524783, -1789391, 10465225, 8708583, -25547540, 19199040, 3548180, 15517717, -17320530, -10096931, 15140833, -11615739, -19748260, -19352586, -21846888, -21328270, -18146236, 6762426, 31751620, -8811125, 9626632, 15506979, 832150, 80531, -12704513, 21788906, -27391154, -54125716, 18441516, --12057584, 2142652, -45846628, 11192685, 15124727, 2291902, 9683541, 7556995, -6382859, -12055973, --17862768, 5582384, 4575214, -14222784, 10740103, -5556077, -23147190, -13154948, 270583, -4474282, -3052648, 1358820, 7583302, 3033858, 1840930, -702227, 6148246, -3668439, -6978785, -13674102, --7472170, -8926553, -2421825, -5041755, 5560909, 7340099, 6284611, -10956462, -269509, -4762045, -690416, 5903433, 2501282, -9721658, -16885128, -1766305, 1374926, 1189169, -5597953, -2913062, --5875516, -1598802, -7871065, -9251360, 6471442, -9050570, 4286378, 1190243, -3856344, -2076617, -6243809, -5339718, 2815351, -6425808, 12955232, 9335111, 12373801, -17663590, -9186935, -2483028, -11310796, -23572928, 39220032, 18641232, -3214246, 21401286, 12845710, 20395190, -10735808, -13726179, --13350369, 24702504, 8761196, 4461934, 22265648, -19505058, -63164472, -4206921, 4205310, 7514046, --35561256, 27550068, 20020990, -38170448, -29395830, 941672, 15718507, 1335735, 8924405, 20235738, --5377836, 12564927, -18450106, -21112448, -16843252, -21932250, -34155192, 9514963, 3531000, -22924924, -30259118, 11765526, -7399692, -7213935, -17869212, -13380434, -31133144, -16909286, 11068668, 27624156, --10525354, 2771328, 11363410, -24500640, 17680232, 23939074, 3529390, -6134824, 20459614, 5603322, -2304787, -14666240, -17151952, -1257889, 30589830, -9407052, -28225452, -496069, -35967128, -37468220, --39023000, -18714246, -20589000, -13150653, 16783122, -2357937, 15087683, -3118683, -4981625, -14121852, --3795677, -4162897, 8103530, -6207839, -9025337, -1788317, -3542274, 1322313, -13158706, 2486249, --6066642, -5273683, 6960532, -6310381, -2102387, 2272038, -4685810, 10243497, -6499896, 1526861, -16632798, 2032056, 9716827, -3725884, -5842766, 16851304, 2524904, -8943196, 325881, 159451, -1309428, 2381023, -4785668, 10519449, 638876, -810138, -5092221, -5299990, -13875429, -23840290, --12567074, -12778065, 15522012, 30690226, 11274289, -13899051, -29560112, 31750546, 17027934, -15205795, --8256538, -8075076, 1763621, 7540352, -9771051, 16550656, 15305116, 949725, -10292889, -9657771, --9183177, -1079111, 5959267, -4523138, -10158135, -24086714, 7467338, 21381420, -12200928, 18919868, -591632, 12738873, -10528575, 14154065, 40736156, -15138686, 17794050, 35489316, 6168110, -6068252, --9789841, 10383083, 797253, 18179522, -13775571, 48664128, -14984604, -32457068, 7524783, -14716705, -38448548, 12723841, -11969000, 2341294, -23126252, -31649078, 39046084, 4596152, -10449119, 38668664, --19907174, 5161477, -11220602, 22471806, -28434294, -31832686, -22764938, 7237020, 13805636, 25717190, -10983842, 27173184, 42429980, -5071820, 8588861, -5450851, 5419712, -1207423, 1775432, -30998926, -1231582, -42861088, -14289356, -8331700, 7686381, -1306744, 9491341, -3260417, -12789339, -13367549, --3021510, -8786966, -9838159, -16993574, 71404, -1640141, 13100187, 5711770, -10484015, 9805410, -4594005, 8121247, 10595684, -13542569, 3916473, -5526013, -2513630, 13915157, -4498978, 7023882, -9374303, -5369783, -14806363, -7420093, 5553393, -24347632, -7553774, 745714, -3357591, -5348845, -11200201, -11392938, -12699681, 9190693, 15025943, -6623914, 12574591, 29877940, -4532264, 991601, -35536024, 4003447, -19628000, -22526566, -20145008, 36733780, -24728274, 14656576, 17016660, -11629698, -3352222, -19990926, -4752918, 16481937, -14785425, 11943767, -5097053, -25145422, -55720220, -4811437, -49689012, 21070036, 4876399, -9701794, -15259482, -2533494, -19949050, 6592775, -28023050, 33472828, -2208150, 4249334, 2476049, -10977936, -33741264, -12559021, 26640608, -21705154, -5879274, -14934138, -11766600, -10619307, 36964636, -5727876, 7432978, -13288092, -34977140, 7981123, -26759256, -5687074, --2563559, -48351668, -41267120, -38490424, 12656732, -6849399, -21226802, -13350906, -13655849, -12075301, --18961744, -12327093, -3463891, -43352864, 11997991, 5214091, 15904801, -9352291, 37757596, -3638374, -7130720, -12834436, -5415417, 20799452, -40695888, 17546552, 26377542, -26908506, -17811230, 1986422, -4131759, -6863895, -13260175, -20995948, -1468342, 830539, -13012140, 11280195, -9633075, -16652662, --9534827, -6959995, 10626823, 41339, 228170, -46708, 7908109, -20578262, -6120329, -2177549, --4191351, -1109175, 236760, -24732032, 678605, -7779260, -6727530, -1816234, -11340861, 3418794, --3296924, 2597918, 356482, -1842541, -2891587, -5918465, -1125818, -4799626, -1291175, 3838090, --5774584, -8848706, 193810, -1879048, -2137820, -5409512, -10257993, -6585259, -2696166, -959388, --7306276, -8523899, 15101642, 9137006, 18274012, -6885370, -37983616, 10957535, 547071, 63074280, -64555504, 7809861, 638340, 15210090, 7630547, 16247861, 27861990, 10386305, 28930900, 43713640, --10875931, 5745056, -35893580, -5079336, 4712653, -4630512, -10671383, -21758842, -18297098, 10155450, -10094247, -47696148, 34062848, 9213779, 48064980, -2913062, -9487583, 15726023, -3299609, 50594176, -12910135, -2574833, 9759239, 10023380, -13534516, -30871152, -24184424, -12126303, 37795712, 520765, -41540924, 5119064, 40614820, -11687143, -55794308, -20871394, -16171089, 28922310, 3556770, -27109834, --39269960, -27438398, -5438503, 33962992, -29502668, -25703232, -16914654, 30313880, -14892262, -8810052, --39094940, -38916160, 12319577, 6593849, 52465172, 13494250, -5510443, -14170708, 16480863, 17037062, -56013352, 1029718, -18096844, -24230594, -1519882, -2484102, 1318018, 8719320, 8097624, -13026636, --2909304, 4235912, 11705396, -12509629, -10132365, 15741055, 23200876, 10779831, 7122667, 9018358, --9742596, -4151086, -6127308, -1267552, -1287953, 5097053, 85899, 30245160, 6361921, -1289027, --9226127, -15870441, 15187541, 24546274, -8871255, 406411, 972273, 3073049, 14066018, 6128382, -10452340, 10663867, 2725157, 8301098, 2735894, -521839, 2747169, -7472706, -2521146, 1833951, --4502737, 3000035, 834297, 38602092, 14665166, -18761490, 36384280, -2258616, -71459128, -21762600, -45081052, 50075560, -35225176, -35275104, -35851164, 20013474, 30675194, 61288648, 18563386, 7913477, --34941168, -3547106, -2142115, 13787382, 30690226, 22279070, 1821066, -37072012, -72007272, -19088982, --36420248, 54196580, 57408680, 100153272, -29974576, -96321624, -20967494, -33091650, 74884904, 25467008, -75950592, 19563576, -25353192, -73385960, -49598820, 2676302, 9162239, 82287280, 33450816, -2855080, --67693520, -118132536, -30859340, 2531883, 54611584, 124311384, 27124866, 37490768, -80071072, -122729224, -5336497, 28198070, 97774392, 57475252, 41108204, -22666154, -79050480, -64680060, -586800, 18269718, --1653562, 49363132, -40691592, -38103340, -9395778, -87188376, 13684303, 4220879, 23860154, -17491254, --35190816, -18927920, -14832670, -39857832, 9250823, 11718818, -12674448, -1951526, -37356016, 5402532, -10960757, 12402255, 17563196, 5640366, -19050328, 6805913, -5920076, -3223373, 2971581, 30514668, -5404680, -855772, -7584912, -23023172, -4338991, -9116068, 9148817, -4061965, 10135049, 6593312, --20958366, -47856672, -23409720, -35104916, 29070486, 29211146, 34749508, 19983410, -44502840, -40161704, --62154084, -14856829, 50918984, 56259240, 54912768, 2928631, -59928752, -44844292, -34774740, -459025, -90200216, 62625456, 25804700, -47888884, -55661164, -41700912, 21055540, 21694954, 31549756, 16687022, --40980968, 54459648, -1176821, 7904351, -22922240, -51873004, 30904974, -52236464, 55338508, 7938174, -4949950, 11547020, -33254322, 32855426, 3244848, 22789634, -31886374, 11112691, 288300, 39460012, --15760919, 9568113, 26436598, -30236032, -17331266, 2706903, -27411556, 44295072, -9966472, -18569292, -40039832, 45774688, -12285217, -34279744, -8369818, -30247844, -5507759, 18283676, -2859911, -37618008, -4498978, 19845434, -13111998, 22414360, -18752900, 8483097, 24357834, -10032507, 16071231, -42824044, --42765528, 43270184, 24326158, 66935456, -2711198, -17383344, 57126288, -32897838, -28928752, 19666656, -19335406, 32005560, -29309930, -14392972, 8774618, -6622840, 32405528, -26225070, -79995376, 20433844, -44885092, 198642, -37009732, 6621229, 22899692, -9356586, -9599252, -30296162, -9541270, -25084220, -24934432, 5625871, -17315698, -5140002, 29758218, -21465710, -7372312, -19445464, -2120103, 13947369, --20779588, 10721312, 31092878, 11436424, -318364, -9274982, -1622961, -11913166, -14329622, 22974854, --9671729, 10188736, -3175055, -12416214, 15569, 2090039, 2326799, 8078297, 10429791, -18347564, --5348845, 8441758, 7560216, 17296908, -2259153, -15844134, 6171331, -18377628, 8650601, -16787416, --9089761, -167504, -3445101, -11410117, 25222196, -11448772, 5239323, 10506027, 2426120, 8137890, -16754131, -773094, -2921652, 352187, -1607392, -21079700, -13284871, 81321448, 22005264, 22775138, --68911680, -16933446, -54024784, -45222784, 40838696, 43418900, 85287848, 39750460, -11553999, -16203838, --10047539, 27310086, 18688476, 923418, 41450192, 8454643, -16617228, -19274740, -15882252, 30211874, -537, 26470420, 12175695, 16123307, 3930969, -6199249, 3040300, 184684, 3921842, -6441377, --1726577, 8913131, 7199439, 56337624, 45061188, 37189584, -3230352, 10423886, -22807350, -3418794, --14185203, -25347824, -26795764, 8446053, 14618995, 21635360, 26090316, 21866216, -13463112, -34010772, -52285320, -36996312, -16338056, -9218074, 17958332, 2678986, 25611964, 27006754, 23386634, -31127776, --11247446, 4600984, -12330851, -50409496, 33964600, -11593190, -9107478, 19479288, 39417064, 44989244, -32638530, 32206350, 27600534, -29097866, 3864397, -7241852, -9100499, 17056388, 13354127, 18152680, -8719857, -7904888, -14619532, -20953534, -22922778, -45823008, -18379776, 7046431, -2600066, 28324236, --15569, -12572980, -4249870, -18112414, 6997039, 2361158, -1322313, -25233, 11963095, 26539140, --3195456, 1519882, 14541149, 1259499, 206695, -5070746, -1683090, -6060736, -5986648, 1770600, --12498892, 5774047, 7218767, -9040369, -13606456, 3961571, 2796024, -4775467, 13439490, 18158048, --2401424, 2889976, -5794985, -17967996, -7601019, 3164854, -104804720, -52287468, -71967544, 51963200, -11526618, 148824912, 153889216, 153271808, 175218560, 172485344, 123980136, 77103792, 96706024, 42728484, -9036611, -81594712, -70970040, -178185840, -155754848, -139895136, -82375328, -104020888, -79207784, -6532109, --25288768, -10247255, -12466143, 610959, -164283, 4695473, 20350092, 21786222, 20860656, 61398704, -63075888, 66788352, 47769164, 133620192, 34977676, 56150792, 93598608, 104272144, 38807176, 104938400, -126357400, 99567008, 86523192, 87900264, 9714679, 52613888, 106351984, 105009264, 67740760, 88117696, -77115064, -1087164, -28503550, -20133732, -52526376, -64896420, -8314520, -72931768, -111143016, -86681032, --103520520, -153177856, -70061120, -103588168, -114740592, -162576864, -132140040, -149934080, -171213504, -114138752, --193598336, -229101072, -229861280, -125153200, -155537952, -196093168, -38527468, -87366616, -40964324, -22058416, -64251636, 28524488, 94267552, 49984292, 89045944, 84693536, 55737940, 43862352, 69034616, 127794064, -130100464, 130478424, 133336720, 138471888, 168346608, 150315264, 124852016, 153456496, 173228384, 138369888, -104129872, 124190056, 104545944, 67436352, 85270672, 57565448, 28636158, 12200928, 26324392, 7577933, --10816875, -7602629, -13939316, -33470144, -50770272, -50589884, -55022288, -47156592, -58822260, -92619360, --83197272, -95718712, -107834816, -125735704, -125299232, -103914048, -104274824, -85602992, -54360328, -61403000, --41811508, -29585882, 2995740, -794569, 15032, 4616553, 18418968, 21089900, 6938520, 16508781, -26843008, 21064130, 9148280, 10420128, 19699404, 11069741, 4416300, 7269769, 10666551, 8989367, -5246840, 4539244, 3424163, 1444720, 352724, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, }, +2813204, -3714073, -630286, 2575907, -455267, 2740726, -6771016, -4831838, -1181653, -5706938, +2391760, -1274532, -627602, -3857418, -1717450, 3578782, 3580929, -1407676, -1089311, -2382633, +-5472325, 6096706, 3630858, 150861, 643171, -341450, 178778, 4908074, -2490544, 894964, +-7861401, -6454262, -1612760, 576063, -5478231, -1026497, 1949378, 462246, 99858, -2760590, +-2114735, 5132486, -2380486, -2204392, -721555, -737124, 2267206, -1200443, -3367254, -130997, +2955474, -4220879, 183073, -4520990, 317828, -3315178, 5005785, -299037, -5273146, -782221, +-511638, 613107, -7530689, -927176, 627065, -5051956, 2318209, 91268, -5801964, 2622078, +3568044, -3114925, -3554086, -6396280, 3340411, 1908039, 5917928, 2898566, -879931, 1127966, +-821413, 1771137, 1881733, 4059281, 1039382, -1803349, -63351, 453119, -133681, 2307471, +604517, -831076, -1134408, 1107565, 907312, 1720671, 873489, 650688, 1046898, 920734, +391916, 558346, -111132, -332860, 373125, 215822, 443992, -279710, 523986, -54224, +-5474473, 2469606, -6828998, -1914482, -948651, -3466039, 3300682, 7637526, -3120294, -1031866, +369367, -3177202, 2207613, -490700, -2563559, -4384088, -2313914, 6886980, 6673306, 3731253, +7750806, 4542465, 2473901, 7275138, -4518843, 1589675, 3128347, -159451, 1268626, -2181307, +1409823, -10103374, 228170, -602906, 3656091, -2300492, -1268626, -721018, 2804614, -3210488, +-501437, 891206, 1979980, 1896228, -522375, -3442416, 663572, 1181653, 2486249, 1848447, +2889439, -3237332, -1896228, -606664, -5696737, -693100, 1534377, 4894115, 5500780, -768262, +3041374, 2235531, -391379, 2020245, 2445447, 3528316, -1402307, -63351, -2637110, 443992, +-2269353, 1560147, -3369402, -3216931, 1941862, -34360, -6310381, -607738, -4720169, -1300301, +-652298, -813896, -6272263, 594316, 2243047, -1868311, -1773822, 1075352, 817118, 446140, +-1224066, -3392487, -151934, -1490891, 1308354, 38655, 113280, -385473, -1375463, -1559073, +-1733556, 119185, -736587, 757525, -1076963, 431107, 289373, -1008244, 3221, -1121523, +-378494, 62277, 31675, -996969, -215285, -170188, -6911676, -6536404, 2436320, -779000, +5430450, 5437966, 459562, 115427, 10492068, -2851322, -238908, 8788040, 374736, -5109938, +-7445326, 5390721, -2171643, 13422, -4607963, 1410360, -3288334, 3652870, 16378321, -5999533, +-4799626, -5927592, -6377490, 1142461, -5199058, -12923557, -315143, 1266479, 41339, -5156108, +-1069447, 4161823, -5258114, -3136400, 7660074, 2488934, -1938641, -1854352, 4935991, -2474975, +3536369, 3190624, -6974490, -4664872, -4125853, 4534949, -3533148, -2141041, -1916092, -2360085, +-357019, -4745402, 48318, -1458678, 1173600, -689342, -10219875, 4705674, -5710696, 4473209, +853088, -8447664, 1716913, 5576478, 1742683, 9313637, -3948149, 467615, 1103270, 2142652, +3359201, -3740380, 1408749, 1184337, -5430450, 7405598, 545461, -1111323, 3174518, -1126355, +1427540, -1419487, -2834142, -256087, -1822140, 2390149, -630286, 404264, 2914672, 944893, +1112397, -710280, 1586990, 216896, -423591, 979253, 2118493, -1597191, 139050, -1682554, +1009317, -595390, 3058554, -4300873, 2004139, 2246268, -2377801, 1107028, -1190243, -9346923, +2860985, 8866960, 7308424, 8319352, 1417876, -1732482, -7130183, -3670050, -3367254, -2624762, +7308424, 10249403, 702764, -636729, 7237557, -11733851, 199179, -887985, -244813, -3778498, +-3999688, 4365298, 5270999, 242129, -1213865, 2191507, -5770289, -4268124, 4354560, -4711579, +9117679, 8373039, 1347546, 5185636, 4275103, 951335, -3790846, 1377074, -246961, -6389838, +6229850, -478889, 2888903, 5182415, -6117644, -2278480, -7261179, -1552094, 1602023, 6849399, +-6998649, -2680597, 5022965, -987843, -4496294, 7507066, -6237367, -12916577, 2137820, -7239704, +-3323768, 3618510, -3195456, 708133, 721555, -3090766, 5494874, -4997732, -5817533, -6842957, +-821413, -2922188, 402116, 1922535, -4289599, 1202054, 1158567, 394600, -2073932, 1203128, +848256, 2979634, 379031, -849330, -2042794, -1196685, -938987, -436476, -759672, -1150514, +318901, 647466, 782221, 345745, -443992, -903554, -450972, 1523640, -1527398, -1452236, +-512712, 41339, -192200, 1185948, 1248225, 1305133, -818191, 513785, 207232, 566936, +2841121, -1412507, 181999, -11762842, 2518998, 11068131, 907312, 1724429, 3380676, 10368051, +1440425, -9990094, 11094437, 4859219, 4020626, 6736120, 5871757, 40802, -2050310, 6354404, +4887673, 1658931, -4551592, 5527086, 2629594, 8185134, 9579925, 3631932, -2328946, 216359, +-41339, 3980898, 12155831, 7204808, -6700149, 11737609, 501437, -1444720, 1583232, -8654359, +9651865, -1279900, 207232, -1147830, 2487323, -1297617, 5002027, -6977711, 9862319, 8382703, +-276489, -1561758, -5426691, -10408853, -3534758, 4135517, -2385318, -3901978, 5562520, 6486475, +-4350802, -3905199, -13313862, -4627828, -1611150, -646393, -14901926, 7614440, 878321, -8894340, +-7272990, 2458869, -3427384, 913754, -2166274, 485331, -3889630, -861141, -3464428, 2541547, +5034776, -1403917, 3841848, 457414, -1534377, 4477504, 1602560, 233002, 3729105, -418222, +-1635309, -2308008, -2567854, -2717641, -2546379, -3178276, -2285460, 175020, -1241246, -2981244, +-1432909, 314606, -592706, -1100049, 687732, 1228361, 632434, -1351841, -1903207, -2405182, +307627, -2280091, 2167348, -1245004, -1276142, -1228361, 91805, -871342, 5510980, -6960532, +-55835, 71941, 258235, 11242614, 6184753, -97711, 14018773, 6475200, 12658342, 3018825, +4289062, 13502840, -5328981, -8999567, -5679021, 12625593, 3105798, -7122667, 9648644, -2635499, +-5602785, 8607651, 20452634, -5272609, 1051193, 3264712, 3933653, -5313412, 703838, 11249056, +1238561, 13832479, -2978560, 14854144, 10544682, 3559454, 8847633, 5580237, -5247377, 3694746, +-1315871, -1321776, 1463510, 1009854, -914291, 3919695, 2764348, 9598178, 6519761, -8021925, +2855617, 3614215, -5865852, 354335, -13913010, -18104898, 7311108, -4637491, -11766600, -2537789, +-6302328, 7799661, 1782411, -3675955, -8859444, 6997039, -6388227, 4269198, -7176354, 1067299, +-2840047, 10972031, 2128693, -4281546, 4310000, -9354439, 8608188, 1389422, -7955890, 368830, +-740345, -2308008, -872415, 1147830, 2474438, -2339684, 4021163, -869194, -1444720, -1781338, +-1285269, -3463891, -179852, -1229971, -3255048, -1240172, 1313186, -2081985, 2254858, 332323, +-1086627, 571768, -2122251, -413927, -1446867, -192200, 44560, 107911, 1218697, 1344325, +1615982, 71941, 879931, -70867, -7922604, 1064078, 321049, 2102387, -4827007, 5466420, +6038724, -651224, -4014721, -13911399, -11913702, -9175661, 4292283, 1243930, 2233920, -11404212, +7247221, 5103495, 9015136, -9776419, 9297530, 7135552, -5594732, -4655745, -2815351, 9450002, +6540699, -4150549, 959388, 14297946, 7268159, 3695283, 8308614, 5698348, 2254321, -4725538, +1098438, 665183, -1985886, -5245766, 12724914, 5937256, -11786464, 7996692, 7975755, 7920457, +6233072, 1682554, -7333120, 236223, -948651, 11083700, 1505386, 4962835, 10088878, -1787243, +-10938208, 2454574, 5947993, 11201275, -14872935, -8392366, 4127464, 176094, 1417876, -8813273, +-2139968, -8545374, -1146756, 4093104, -2773475, -4662187, -5649493, 2439005, -1365263, -2820183, +-6995428, 285078, -9381282, -148176, -865973, -4750771, -5264020, 6082748, -2032593, -1480690, +-2959233, -5779952, 2108829, 2829847, 1992865, 2222109, 1644973, -3179350, -1689533, -947040, +-734439, -2986076, -5604396, -2481417, -87510, -1890323, -111669, -3002182, 321586, -1614908, +-1098975, -2173254, -2417530, -1268089, 2536178, -1758789, -803159, 404264, 1063004, 686658, +-1144609, 1914482, 2885144, 2882460, -724776, 5284958, 686658, -9248138, 9418863, 6054294, +-2816962, 3745748, 5673652, -6251325, -2115808, 24105504, -789737, 9405978, 6573985, -20106890, +-10696616, -1123671, -848793, -225486, 11422466, 2575370, -5562520, 11818139, 7251516, -1465658, +-1941325, 3781182, -1924145, -4159139, -8966818, -10610180, 5876589, -2314451, -5007932, -503048, +-16554415, -3060164, 1091459, 9152575, -10938208, -3143916, 1415192, 755914, 2384781, 837519, +11672647, -13580150, -4529580, 3051038, -443455, -8002598, -1695438, 10617159, 9104794, 7903277, +-2171643, -13518410, -6183679, 4934918, -1544041, 9131100, -532039, -142808, -6755984, -4150549, +7943542, -9679246, 6652905, 5239860, -7006166, -3436511, -1629403, 1167157, -7543037, 3717831, +2612414, -3656628, -1154809, -10241886, 3730716, 8013872, 11384348, 1053341, 3061775, 5451924, +1673964, -8934606, 6178848, -2095944, 1027034, 89121, -2879776, -3037616, -1654099, 4250944, +758599, 3564823, -368830, 642098, -4985920, -1635309, -2283849, 3848828, -364535, -1555315, +2633889, -1851131, 2069101, -1151051, 357556, -4060355, 991601, -888521, -835371, -2576444, +974958, -343597, -2309082, -4196720, -930934, 502511, -1692754, 1810329, -419833, -18180596, +-1197759, 2569464, 12206834, 1600412, -567473, 7492571, -5442798, 16170552, -16139413, -1471026, +-3506841, 2764348, -847719, -1242319, 4068408, -2954401, -5526549, -3578782, -3290482, -9576703, +-1585917, 6928319, -1634235, -4216048, 10147934, -87510, 12218645, -11936251, -6935299, 15265388, +-1601486, -854162, 850940, -9494025, -1163936, -11870216, 3447248, -14262513, -410706, 10726681, +-3526705, 7333657, 9503689, 5623186, 7474317, -9621800, 9616969, 1146756, -25310242, -4173635, +3636227, -1990181, -2851322, -10758356, 8505109, -9157944, -1853278, -10395431, -9862319, -15130633, +13530221, 174483, 15776489, -7794829, 11884711, 15880642, -10414222, 12956306, -15870441, -13090523, +-14368276, -4904853, -10131828, 3325379, 4738423, -470299, -1892470, 4295, -11365557, 976031, +104153, 6640557, 2570001, 2656437, 4640712, 2728378, -2485712, -4832, -4634807, -2656437, +106300, 1984275, 67109, 2231773, -1530082, 2392834, -705985, 1315334, -7039989, 531502, +2676302, 2148021, 3904662, -2115808, -3106335, -4014184, -99321, -241592, -3290482, -3471407, +374199, -467078, 606127, 137439, -1041530, 1984275, 5607617, -1252520, -1299228, -590021, +-1517197, 5153961, 215285, 729608, -1724966, 3114388, -3245922, 11993696, 20028506, 2945811, +-5415954, -10795400, 6681359, 18581640, 106300, 5370857, 886374, 7451769, 5025649, 5732708, +10017474, -12103755, -1040993, -4459787, 15827491, 11863773, -657667, 18370648, 9598178, 1700807, +-17302812, -8478802, -13214541, -6011344, 1249299, 5012764, -4796405, 763967, 18533320, -3420405, +-72478, 1022202, 19043884, -11623255, -4800163, -4691715, -1969779, -11372000, 13087302, 955093, +8746164, -13656922, 1775432, -1423245, -8272107, -3179350, -15247671, 4823785, 188979, 3260954, +-1960653, -849330, -17687750, -5908802, 6769942, 11247982, -3345780, 2993592, 23278186, -1450625, +1251446, 4361540, 10435697, -9841381, 2168422, 11912629, -7131793, 8676908, 2420214, 9039832, +-12039867, -6008659, 1512902, 2794950, 5938866, 6905771, 6445672, -4436165, 1791001, 4098473, +7820599, 12406550, 5616207, -5819144, -2843268, -4570919, 1884954, 2653753, 5273683, 4935455, +2847027, 5210332, -5680094, -1081258, -5791227, 4926865, -6619082, 6626598, 4633733, -4909685, +2808372, -573378, -3126199, 760209, 884763, -1753420, 1393180, 8210904, -363998, 4295, +-5146982, 2596845, -333934, -147640, -4683662, 4702989, -4000225, 1476395, 1912334, 3726421, +-521839, -1767379, -10999948, -16581795, 4552129, -1715303, -16881906, 4677220, 1620813, 15308337, +13403519, -12427488, -15064598, 3427921, -11517492, -5960878, 405338, 22770842, 256624, -2822867, +-20361366, -10101226, -1819456, -15075335, -23065584, 15842524, -5993090, -7202124, -1382980, 17176112, +-5414343, 1933272, -3488587, -3375844, -10000294, -5243618, 1616518, -23967528, -15505906, -4381941, +-8819715, -8077760, -2858301, -9368934, 8121783, 3799972, 2573222, -5690295, 4088809, -34624952, +32208496, 18988050, -3309809, -4342749, 18103824, 1151588, -10894185, -15399605, -2005213, -5366562, +-6471979, -9242770, -9533754, 11924977, 11041824, -4961761, 24297166, -13474386, -11141682, -9973988, +32749, 8002061, -28521804, 8476118, -9035001, 14947023, -16170015, 7137162, -1485522, -5415954, +11130945, -20936354, 19710142, 1171989, -277025, -4396436, 570157, -239981, -9972914, 2005213, +-2764348, 5252208, 6631967, -6043019, 3032247, 4286378, 9312563, 382252, -3040837, -473520, +-832150, -3656628, 2730526, -1400696, -2230699, 2428267, -3695819, -1129040, 906775, 2727841, +3200288, -7396471, -5692979, -4888210, 848256, 3095061, 4832, 2057826, 1742146, 5035313, +2610266, -3996467, 3762928, 794032, 16538845, 1338956, 38529076, 12519830, -760746, 1628866, +-14881525, -19330038, 24067386, -7153268, 2741800, 31899796, -8306467, -1573569, -6818798, 24867324, +4799089, -10327249, 14707579, -5379984, 21840982, 11426224, 5444408, 3198140, -2415382, -8396661, +-2724083, -2306398, -23408646, -5920613, -3773666, 12909061, -7254200, 2400887, 4300873, -16813186, +-24991878, -934692, 21563958, -1484985, 19153944, -3364033, -26796300, -10417980, 1206349, 6024229, +4831302, -21835076, 168577, -6285685, 15806017, -16216723, 19984482, 29532732, 19161460, -6071473, +3554622, 11883638, -4280472, 23127862, 26796300, 23600308, 7701950, 25882546, -914291, -10501732, +3321084, -13615046, -17154636, 9290551, -7383049, 21140366, 10915123, 5566278, -7318088, -26153130, +-23701778, 16550656, -10518912, -21174188, 14054207, 28098750, 16879222, -9087077, 13391171, 8195872, +-2977486, -6713571, 7924752, -10069014, -3096135, -1133871, -6956237, 853625, -1549410, 5735929, +3447248, -1406065, -9246528, 5060009, 4594005, 3152506, -2057289, 237297, -8654896, 630286, +-164283, 2165201, 1935957, 159451, 5028870, -1846836, 6987375, 7923141, 1977833, 6422050, +500901, -5196374, -12269648, 2691334, 195958, 2556579, -8739185, -19440632, 11376831, 14249628, +-226560, 6978785, 4683125, 6906845, 5720897, 2640868, -1551557, 3381213, -4082903, 7413114, +-13218836, -36822904, -14781130, 20212652, 1165547, -5989869, -12335146, -48855, 16984448, 21711060, +4622459, -13285944, -2347737, 17376364, -20996484, 2033130, -2616172, 15556372, 17717276, -14171245, +26881126, 5252208, 1070521, 38012072, 186831, -11866995, 13296145, -6294275, 1896228, -8061654, +2820720, 25285010, 2910377, 32197760, 13566191, -28009630, -30719754, -6656126, 7989713, 17226576, +-23819888, -8364986, -3442953, 28999082, 26505316, -22632868, -875100, -13785771, 8751533, -4716411, +30305290, 457414, -6654515, 19951734, -4038880, -23456428, -11859478, -3790309, 24443196, -21597780, +13128641, 38024420, 17992154, 25543782, -6802155, 10424959, -6852084, -15698642, -15131707, 8032663, +-10749766, -658204, -3843996, 6997576, -150861, 15489800, -3435974, -7026567, -2491618, -3019362, +3823595, -2374043, 5970542, -10502806, 7847442, -6919729, -3157875, 2257542, -2741263, -3217468, +4976257, -4563403, -1717987, -1297080, -3787088, -12921409, -7282654, -1177358, -1467805, -3754875, +-5036386, -1109175, 3937948, -2175938, 2349347, -1911261, -48855, 3045132, -9907416, 1202591, +-1323924, -7447474, -17706540, 13146895, 19843822, 16188805, -28328530, -13806709, 18223010, 54374284, +3524558, 11644730, -15629386, 4714801, -564251, -2777233, -14659797, 4283156, -5008469, 25975962, +21001854, -27604292, -11901891, 28723668, 14928769, 10177999, 3313031, 15414638, 18474802, 5581310, +11147588, 9820443, -12970264, 1717987, -12693776, -6036040, 3821984, -2775623, 2462627, -11403675, +-9755481, 7524783, -1789391, 10465225, 8708583, -25547540, 19199040, 3548180, 15517717, -17320530, +10096931, 15140833, -11615739, -19748260, -19352586, -21846888, -21328270, -18146236, 6762426, 31751620, +8811125, 9626632, 15506979, 832150, 80531, -12704513, 21788906, -27391154, -54125716, 18441516, +-12057584, 2142652, -45846628, 11192685, 15124727, 2291902, 9683541, 7556995, -6382859, -12055973, +-17862768, 5582384, 4575214, -14222784, 10740103, -5556077, -23147190, -13154948, 270583, -4474282, +3052648, 1358820, 7583302, 3033858, 1840930, -702227, 6148246, -3668439, -6978785, -13674102, +-7472170, -8926553, -2421825, -5041755, 5560909, 7340099, 6284611, -10956462, -269509, -4762045, +690416, 5903433, 2501282, -9721658, -16885128, -1766305, 1374926, 1189169, -5597953, -2913062, +-5875516, -1598802, -7871065, -9251360, 6471442, -9050570, 4286378, 1190243, -3856344, -2076617, +6243809, -5339718, 2815351, -6425808, 12955232, 9335111, 12373801, -17663590, -9186935, -2483028, +11310796, -23572928, 39220032, 18641232, -3214246, 21401286, 12845710, 20395190, -10735808, -13726179, +-13350369, 24702504, 8761196, 4461934, 22265648, -19505058, -63164472, -4206921, 4205310, 7514046, +-35561256, 27550068, 20020990, -38170448, -29395830, 941672, 15718507, 1335735, 8924405, 20235738, +-5377836, 12564927, -18450106, -21112448, -16843252, -21932250, -34155192, 9514963, 3531000, -22924924, +30259118, 11765526, -7399692, -7213935, -17869212, -13380434, -31133144, -16909286, 11068668, 27624156, +-10525354, 2771328, 11363410, -24500640, 17680232, 23939074, 3529390, -6134824, 20459614, 5603322, +2304787, -14666240, -17151952, -1257889, 30589830, -9407052, -28225452, -496069, -35967128, -37468220, +-39023000, -18714246, -20589000, -13150653, 16783122, -2357937, 15087683, -3118683, -4981625, -14121852, +-3795677, -4162897, 8103530, -6207839, -9025337, -1788317, -3542274, 1322313, -13158706, 2486249, +-6066642, -5273683, 6960532, -6310381, -2102387, 2272038, -4685810, 10243497, -6499896, 1526861, +16632798, 2032056, 9716827, -3725884, -5842766, 16851304, 2524904, -8943196, 325881, 159451, +1309428, 2381023, -4785668, 10519449, 638876, -810138, -5092221, -5299990, -13875429, -23840290, +-12567074, -12778065, 15522012, 30690226, 11274289, -13899051, -29560112, 31750546, 17027934, -15205795, +-8256538, -8075076, 1763621, 7540352, -9771051, 16550656, 15305116, 949725, -10292889, -9657771, +-9183177, -1079111, 5959267, -4523138, -10158135, -24086714, 7467338, 21381420, -12200928, 18919868, +591632, 12738873, -10528575, 14154065, 40736156, -15138686, 17794050, 35489316, 6168110, -6068252, +-9789841, 10383083, 797253, 18179522, -13775571, 48664128, -14984604, -32457068, 7524783, -14716705, +38448548, 12723841, -11969000, 2341294, -23126252, -31649078, 39046084, 4596152, -10449119, 38668664, +-19907174, 5161477, -11220602, 22471806, -28434294, -31832686, -22764938, 7237020, 13805636, 25717190, +10983842, 27173184, 42429980, -5071820, 8588861, -5450851, 5419712, -1207423, 1775432, -30998926, +1231582, -42861088, -14289356, -8331700, 7686381, -1306744, 9491341, -3260417, -12789339, -13367549, +-3021510, -8786966, -9838159, -16993574, 71404, -1640141, 13100187, 5711770, -10484015, 9805410, +4594005, 8121247, 10595684, -13542569, 3916473, -5526013, -2513630, 13915157, -4498978, 7023882, +9374303, -5369783, -14806363, -7420093, 5553393, -24347632, -7553774, 745714, -3357591, -5348845, +11200201, -11392938, -12699681, 9190693, 15025943, -6623914, 12574591, 29877940, -4532264, 991601, +35536024, 4003447, -19628000, -22526566, -20145008, 36733780, -24728274, 14656576, 17016660, -11629698, +3352222, -19990926, -4752918, 16481937, -14785425, 11943767, -5097053, -25145422, -55720220, -4811437, +49689012, 21070036, 4876399, -9701794, -15259482, -2533494, -19949050, 6592775, -28023050, 33472828, +2208150, 4249334, 2476049, -10977936, -33741264, -12559021, 26640608, -21705154, -5879274, -14934138, +11766600, -10619307, 36964636, -5727876, 7432978, -13288092, -34977140, 7981123, -26759256, -5687074, +-2563559, -48351668, -41267120, -38490424, 12656732, -6849399, -21226802, -13350906, -13655849, -12075301, +-18961744, -12327093, -3463891, -43352864, 11997991, 5214091, 15904801, -9352291, 37757596, -3638374, +7130720, -12834436, -5415417, 20799452, -40695888, 17546552, 26377542, -26908506, -17811230, 1986422, +4131759, -6863895, -13260175, -20995948, -1468342, 830539, -13012140, 11280195, -9633075, -16652662, +-9534827, -6959995, 10626823, 41339, 228170, -46708, 7908109, -20578262, -6120329, -2177549, +-4191351, -1109175, 236760, -24732032, 678605, -7779260, -6727530, -1816234, -11340861, 3418794, +-3296924, 2597918, 356482, -1842541, -2891587, -5918465, -1125818, -4799626, -1291175, 3838090, +-5774584, -8848706, 193810, -1879048, -2137820, -5409512, -10257993, -6585259, -2696166, -959388, +-7306276, -8523899, 15101642, 9137006, 18274012, -6885370, -37983616, 10957535, 547071, 63074280, +64555504, 7809861, 638340, 15210090, 7630547, 16247861, 27861990, 10386305, 28930900, 43713640, +-10875931, 5745056, -35893580, -5079336, 4712653, -4630512, -10671383, -21758842, -18297098, 10155450, +10094247, -47696148, 34062848, 9213779, 48064980, -2913062, -9487583, 15726023, -3299609, 50594176, +12910135, -2574833, 9759239, 10023380, -13534516, -30871152, -24184424, -12126303, 37795712, 520765, +41540924, 5119064, 40614820, -11687143, -55794308, -20871394, -16171089, 28922310, 3556770, -27109834, +-39269960, -27438398, -5438503, 33962992, -29502668, -25703232, -16914654, 30313880, -14892262, -8810052, +-39094940, -38916160, 12319577, 6593849, 52465172, 13494250, -5510443, -14170708, 16480863, 17037062, +56013352, 1029718, -18096844, -24230594, -1519882, -2484102, 1318018, 8719320, 8097624, -13026636, +-2909304, 4235912, 11705396, -12509629, -10132365, 15741055, 23200876, 10779831, 7122667, 9018358, +-9742596, -4151086, -6127308, -1267552, -1287953, 5097053, 85899, 30245160, 6361921, -1289027, +-9226127, -15870441, 15187541, 24546274, -8871255, 406411, 972273, 3073049, 14066018, 6128382, +10452340, 10663867, 2725157, 8301098, 2735894, -521839, 2747169, -7472706, -2521146, 1833951, +-4502737, 3000035, 834297, 38602092, 14665166, -18761490, 36384280, -2258616, -71459128, -21762600, +45081052, 50075560, -35225176, -35275104, -35851164, 20013474, 30675194, 61288648, 18563386, 7913477, +-34941168, -3547106, -2142115, 13787382, 30690226, 22279070, 1821066, -37072012, -72007272, -19088982, +-36420248, 54196580, 57408680, 100153272, -29974576, -96321624, -20967494, -33091650, 74884904, 25467008, +75950592, 19563576, -25353192, -73385960, -49598820, 2676302, 9162239, 82287280, 33450816, -2855080, +-67693520, -118132536, -30859340, 2531883, 54611584, 124311384, 27124866, 37490768, -80071072, -122729224, +5336497, 28198070, 97774392, 57475252, 41108204, -22666154, -79050480, -64680060, -586800, 18269718, +-1653562, 49363132, -40691592, -38103340, -9395778, -87188376, 13684303, 4220879, 23860154, -17491254, +-35190816, -18927920, -14832670, -39857832, 9250823, 11718818, -12674448, -1951526, -37356016, 5402532, +10960757, 12402255, 17563196, 5640366, -19050328, 6805913, -5920076, -3223373, 2971581, 30514668, +5404680, -855772, -7584912, -23023172, -4338991, -9116068, 9148817, -4061965, 10135049, 6593312, +-20958366, -47856672, -23409720, -35104916, 29070486, 29211146, 34749508, 19983410, -44502840, -40161704, +-62154084, -14856829, 50918984, 56259240, 54912768, 2928631, -59928752, -44844292, -34774740, -459025, +90200216, 62625456, 25804700, -47888884, -55661164, -41700912, 21055540, 21694954, 31549756, 16687022, +-40980968, 54459648, -1176821, 7904351, -22922240, -51873004, 30904974, -52236464, 55338508, 7938174, +4949950, 11547020, -33254322, 32855426, 3244848, 22789634, -31886374, 11112691, 288300, 39460012, +-15760919, 9568113, 26436598, -30236032, -17331266, 2706903, -27411556, 44295072, -9966472, -18569292, +40039832, 45774688, -12285217, -34279744, -8369818, -30247844, -5507759, 18283676, -2859911, -37618008, +4498978, 19845434, -13111998, 22414360, -18752900, 8483097, 24357834, -10032507, 16071231, -42824044, +-42765528, 43270184, 24326158, 66935456, -2711198, -17383344, 57126288, -32897838, -28928752, 19666656, +19335406, 32005560, -29309930, -14392972, 8774618, -6622840, 32405528, -26225070, -79995376, 20433844, +44885092, 198642, -37009732, 6621229, 22899692, -9356586, -9599252, -30296162, -9541270, -25084220, +24934432, 5625871, -17315698, -5140002, 29758218, -21465710, -7372312, -19445464, -2120103, 13947369, +-20779588, 10721312, 31092878, 11436424, -318364, -9274982, -1622961, -11913166, -14329622, 22974854, +-9671729, 10188736, -3175055, -12416214, 15569, 2090039, 2326799, 8078297, 10429791, -18347564, +-5348845, 8441758, 7560216, 17296908, -2259153, -15844134, 6171331, -18377628, 8650601, -16787416, +-9089761, -167504, -3445101, -11410117, 25222196, -11448772, 5239323, 10506027, 2426120, 8137890, +16754131, -773094, -2921652, 352187, -1607392, -21079700, -13284871, 81321448, 22005264, 22775138, +-68911680, -16933446, -54024784, -45222784, 40838696, 43418900, 85287848, 39750460, -11553999, -16203838, +-10047539, 27310086, 18688476, 923418, 41450192, 8454643, -16617228, -19274740, -15882252, 30211874, +537, 26470420, 12175695, 16123307, 3930969, -6199249, 3040300, 184684, 3921842, -6441377, +-1726577, 8913131, 7199439, 56337624, 45061188, 37189584, -3230352, 10423886, -22807350, -3418794, +-14185203, -25347824, -26795764, 8446053, 14618995, 21635360, 26090316, 21866216, -13463112, -34010772, +52285320, -36996312, -16338056, -9218074, 17958332, 2678986, 25611964, 27006754, 23386634, -31127776, +-11247446, 4600984, -12330851, -50409496, 33964600, -11593190, -9107478, 19479288, 39417064, 44989244, +32638530, 32206350, 27600534, -29097866, 3864397, -7241852, -9100499, 17056388, 13354127, 18152680, +8719857, -7904888, -14619532, -20953534, -22922778, -45823008, -18379776, 7046431, -2600066, 28324236, +-15569, -12572980, -4249870, -18112414, 6997039, 2361158, -1322313, -25233, 11963095, 26539140, +-3195456, 1519882, 14541149, 1259499, 206695, -5070746, -1683090, -6060736, -5986648, 1770600, +-12498892, 5774047, 7218767, -9040369, -13606456, 3961571, 2796024, -4775467, 13439490, 18158048, +-2401424, 2889976, -5794985, -17967996, -7601019, 3164854, -104804720, -52287468, -71967544, 51963200, +11526618, 148824912, 153889216, 153271808, 175218560, 172485344, 123980136, 77103792, 96706024, 42728484, +9036611, -81594712, -70970040, -178185840, -155754848, -139895136, -82375328, -104020888, -79207784, -6532109, +-25288768, -10247255, -12466143, 610959, -164283, 4695473, 20350092, 21786222, 20860656, 61398704, +63075888, 66788352, 47769164, 133620192, 34977676, 56150792, 93598608, 104272144, 38807176, 104938400, +126357400, 99567008, 86523192, 87900264, 9714679, 52613888, 106351984, 105009264, 67740760, 88117696, +77115064, -1087164, -28503550, -20133732, -52526376, -64896420, -8314520, -72931768, -111143016, -86681032, +-103520520, -153177856, -70061120, -103588168, -114740592, -162576864, -132140040, -149934080, -171213504, -114138752, +-193598336, -229101072, -229861280, -125153200, -155537952, -196093168, -38527468, -87366616, -40964324, -22058416, +64251636, 28524488, 94267552, 49984292, 89045944, 84693536, 55737940, 43862352, 69034616, 127794064, +130100464, 130478424, 133336720, 138471888, 168346608, 150315264, 124852016, 153456496, 173228384, 138369888, +104129872, 124190056, 104545944, 67436352, 85270672, 57565448, 28636158, 12200928, 26324392, 7577933, +-10816875, -7602629, -13939316, -33470144, -50770272, -50589884, -55022288, -47156592, -58822260, -92619360, +-83197272, -95718712, -107834816, -125735704, -125299232, -103914048, -104274824, -85602992, -54360328, -61403000, +-41811508, -29585882, 2995740, -794569, 15032, 4616553, 18418968, 21089900, 6938520, 16508781, +26843008, 21064130, 9148280, 10420128, 19699404, 11069741, 4416300, 7269769, 10666551, 8989367, +5246840, 4539244, 3424163, 1444720, 352724, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, }, }, }; const Word32 CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774] ={ { { 5815386, -1455994, -2240362, 100932, -1137093, 1463510, 5843840, -490700, -3820374, -5774584, 630286, --4339528, -1251983, -1309965, 1000727, 3101503, -4463008, -2168959, -1370632, 244276, -2636036, --4633733, -1809792, -3896609, -2077154, 841814, -190052, -1798518, -345208, -493921, 500901, --4146791, -1033477, 1678259, 3571265, 1837172, -529355, -505196, 171799, -3932043, -2672544, -870805, 260919, 1046898, -1050120, 864899, -852551, 1567126, -818728, 2932389, 2979634, --273804, -67109, 2286533, 889595, -158914, 220654, -4801237, -3017752, -729071, 1796907, --1975148, -4236985, -2667175, -2019172, -2979634, 1803349, -5478231, 1680406, 5598490, -2954938, --1404991, -2715493, 3122441, -1240172, -3447248, 913217, -4941897, 4958003, -1909113, -63888, -4645544, -2752000, 1786706, -420907, 616328, -3272765, -6712497, -1464047, 2591476, -1807644, -1569274, 2216740, 1942936, -1569811, 1095217, -4239133, -771484, 921271, 1699733, -258235, --98784, 389768, 1019518, -3588445, -2868501, 1076963, 2401961, -1335735, 2518998, 4634807, --6406481, 761820, -3049964, -2241436, 1464584, -963683, 3983582, -1395328, 3597035, 1690607, -628676, -440234, 1953673, -79457, -329639, -2204929, 5829345, -4211216, -1141924, 1807644, -2317135, -329102, -1862942, 869194, -2062121, 1985886, 531502, 551903, 63888, -1039919, --594316, 2697776, -7567733, 1501091, -855772, -4786204, -613643, 3422552, 1972464, 1978369, --3203509, 2334315, -9340480, 6575058, -3736085, 1165010, 910533, -175020, -2306398, -542777, --5420249, -6655589, 1323924, -1591822, 1567663, 1584843, 5257040, -5009543, 283468, 3449933, -3328600, -4142496, -4392141, -2514703, -3867081, -74625, -1559073, -3098819, -2480881, -383863, --6739341, -6452115, -1682554, 801011, -956704, 93952, -1136556, 962073, -3745212, 3424163, --1775969, 1761474, -903017, 1112397, -3469260, 588947, 1668595, 2089502, 654446, 25233, -454193, -1562294, -2983392, 4632659, 3393561, 1120450, -2406792, 5829345, 3792993, -2347200, -3518652, -887985, -3705483, -1369558, -1709934, -3446711, 1239635, 1450088, 384400, -2881386, -3810173, -3746822, 1896765, 2922725, -1532767, -616865, -6481106, -3740380, -6877317, 200253, -7478612, 3416647, -2929705, 1264868, 934155, 11962558, -3585224, 3423089, 5779952, -1132261, -5247913, 2166811, 3544422, -4735739, -1833951, -5545340, -2653753, 3759707, -198105, -2622615, -536334, -3869766, -409633, -2520072, 3446175, -1526324, -610959, -1366337, 1762010, 876710, --97174, -406948, 1404991, -5799280, -4669703, 2072859, 367220, -504659, -3149285, 7039989, -1808181, -824634, 2097555, 2839510, -214748, 1450088, 420370, -3355980, 2872796, -4006131, --3369402, 3779034, -4663261, 3884261, 1386201, -3193845, 5352066, 3189013, 1827509, -1422171, -4764193, 1336809, -1123134, -1351304, 1109175, 758062, -1408749, -5905580, -1451162, -998043, -1201517, -3354906, 4038880, -1420024, 2953327, -3744138, 12374338, -10511932, -9244380, -3066607, -9443559, -1466195, -5321465, 6428493, -4500589, 2970507, -370978, -7262790, -4985384, 5894843, --4029216, 2860448, -4197794, 3857954, -1898376, -1219234, -578747, -4048007, 1954747, 2771865, --4074850, 863288, -2127620, 713501, 1693828, -675921, 2481417, 689879, 2014340, 3269007, --4411469, -3253438, 3797288, 122407, 2932926, 2878165, -2818572, -4136591, -1697049, 647466, -5291400, -5837398, 2332167, -6504191, -7924752, -1883880, -4541391, -774168, -5361193, -10161356, --5388574, 4715874, 4408784, 2873870, -3356517, 9750650, -2944200, 1686848, -5301601, -5004174, -1439888, 84826, -350577, -6291054, -1898376, -233539, -1034550, -1082332, -3091840, -2585570, -1214402, -682900, -1133871, 16124381, -5162551, 7605314, -1914482, 10193031, -1878511, -1435056, -1771137, 2165737, -1643899, -11446088, 1195075, -972273, -3037616, -22549, -517007, 4285304, --1294396, 10033580, -1284195, 1297617, -696858, 5774047, -1096827, 2131915, -4621385, 42413, --3188476, -3075197, -976031, -714575, -2147, 3833258, -6385543, -1610613, 2080912, -455267, -4297652, 1294933, -1204738, -2601677, -2997350, -2764348, -5917391, 2521683, 2309619, 2525441, --10255308, -1100585, 6943352, 4408784, -1820529, 117575, -3352759, -6465000, -7602629, 7832947, --2546379, -4384088, -3064459, 4569309, 2823404, 1001801, 3166465, 2172717, 3000572, -924492, --7703024, -1591822, -3815005, -2698313, 4642860, 4633733, -1371705, 7234873, 7857643, -24428700, -12734578, 4349192, -1551020, -1519882, -377420, -4106526, -7119982, -1908039, 2829310, 9692667, -6388764, -9713069, -2195265, -5966784, 3339874, -933082, -12918725, -4151623, 7255274, 4274566, -2212445, 6039261, 3534758, -1130650, -1222455, 1454920, -5152350, -3278134, 707596, 5206574, --2771328, -5238787, -7281580, -3944928, 3082176, 10710575, 417686, -2422899, 2019172, -2767570, --8628052, 154619, -6180995, -5064840, -5779416, 2942053, -641024, -8228084, 1156420, 2487860, -2758443, -8859981, -4927938, -3581466, -2332704, -1363652, -3331284, -1946157, -4214974, -8597451, --1120450, -7362111, -8451422, -5581310, -1558536, 1016297, -4984310, -7720204, 2194192, 5464272, --177704, -1474248, -443992, 3861176, -5959804, 4266513, -10272488, 3375844, -5246840, -1225676, -966368, 2536178, -725850, 4724464, -177167, -1449552, -14203994, 6019397, -2863670, -3398930, -4727149, -8520678, -11340861, 4055523, -4124242, -5682779, -1867237, 9513889, 6083821, -4175782, --2359011, 4130685, -1570884, -1042066, 1178969, 3988414, 8189429, 4737886, 6612102, -1626719, --415001, -444529, -4554813, 508954, -1963337, 10713796, -8756901, -5699959, -4646618, -4989679, -2699924, 828392, 4057134, -1413581, -5728950, -8447664, -2191507, -10359998, -13271449, -3500935, -440234, 9485972, 2158221, -9117679, -1973538, 6801618, -3126199, 1580548, 2533494, 3263638, --5935645, -10434623, -3820374, -6015639, 15242839, 186831, -4425964, 1502702, 2903398, -3316789, -2341294, 117038, 8715026, 2856153, -527207, 6051072, -929324, -7220914, -1166621, -528818, -7458211, -3978214, -751619, -2112050, 1410360, -2151242, 700080, 2451890, 3690451, 5016522, -3518652, 1631014, 13007308, 5068599, 4492536, -494995, -9692131, 696858, -7999377, 2579128, --5291937, 1406065, 412854, 3239479, 16045461, 4443681, -1995012, 5616207, -3962107, 4775467, --2258616, 8128763, -3940096, -77309, -5585605, 3685619, 6782827, -7324530, 15313706, -3670050, -1738925, -2331630, -3245385, 1499481, -3653407, -12686260, 2951716, -3254512, 182536, -7882876, -2800319, -2862059, -11937862, -5986648, -2498060, -11584601, 7739531, 16404628, 21383032, -19204946, --13064754, -8198556, 2504503, 4645007, -3965329, 2648384, -4486094, 1752347, 11400454, 8051453, --12760885, 20572894, 1232119, 12402255, 4996658, -3201361, -3386045, 11567421, -5510980, 7631620, -9129490, -201327, -5083631, 1214939, 9401147, 5749888, 5200669, 4749697, -12885, 2292976, -3649649, 11851962, 8446053, -4925791, -4257923, 35970, -1808718, -277025, -5030481, -2885144, -6193880, 10601053, 3153043, 15517180, -3386045, 16888348, 1384590, 8478802, 18178986, 13412646, -4612258, 4593468, 8537321, -707596, -6491306, 996432, 8031052, -3242164, -7579007, 1379758, --767189, 17126182, 13372381, 965294, 18581102, -454730, 10164577, 6337224, 8084202, 227633, --5925445, 9420474, -1371168, 10867878, 6706592, 21545704, -11141145, -382252, -22719840, 6534256, --11348914, 419833, 9997610, -1948305, 3317325, -12981539, -9463424, 4895726, -7592429, 4598836, --4480188, 1406065, 12342125, -1970316, -11155641, 3157875, -4516158, 11697343, -11900818, -8489003, -5283347, 5621576, 8842264, 288300, -489089, 5456756, -2966749, -8397198, 5578089, -3505767, --6241125, 1898912, 6955163, -4896263, 12714177, 4826470, 34360, 1452236, 6505802, 2447058, --20405926, 8354785, -1595580, -2433099, -3037616, 10892574, 666794, 11593190, 1124208, 754841, -1964411, -3438658, -583042, 5432597, -5979668, 1242319, 19790136, 1305133, 14795625, 694174, --1998234, -1946157, -8526047, -20003810, -13300440, 6020471, 10001368, -4346507, 16072841, 5918465, --9507984, -6722161, 15022185, 9261023, 10558640, 2334852, -2513630, -239981, 1331440, -8548596, -228707, -4151086, 6726993, 13425531, 5674189, 5107253, 15273977, 12926778, 10930692, 1309428, -4633196, 1690070, -1434519, -1889249, 3253438, -229781, -7713762, 2797634, 9339406, 814433, --1542967, 3526168, -20147692, 7916162, -7492034, 6135898, 8013872, 7347616, -7016366, 5175436, -68719, 745177, 13338021, 10029822, 1002875, 5801964, 4491999, -763967, -6235219, 2661806, -6959995, 1049583, 9753871, 3592203, 8907762, 16760573, 1708323, 7326141, 7661685, 9427453, -531502, -4489315, 14566918, -4342749, 11940009, -12049531, -9780177, 15942382, 172336, 5915244, -9778030, 14045617, 17878876, 8109972, 3327526, -7265474, 4766877, -682363, -14012868, 13866839, -9190693, -11300059, 597537, 1914482, -13960791, 6484864, 14217415, 8896488, 2310156, -35291748, --22091702, 6622840, 7020661, 13841606, 23310398, -7024956, -4065187, -8071854, -7329899, -9451612, --9855876, 200253, 3519189, 2399276, 14660871, 27917, 14398341, -1392643, 4795331, 6110665, -4980015, 10210748, 7562901, -182536, 9411884, -884226, -1324461, -6332393, 6334540, -1700807, --14475114, -13241921, 7634841, -2685428, 16954384, 9271224, 10873247, 3100967, -21581136, 4176856, -13429826, -3114388, 3863860, -4375498, 2627983, 15843597, -630286, 13050258, 23680840, 112743, --8963060, -1524713, 246961, -16204912, 20135344, 8210904, -2651069, -2583423, 14614163, 5378373, --17629768, -15945066, 5723044, -7874823, 8508867, 4432943, 2743947, -8699456, -12484396, -2310693, -3249143, 737661, 13630616, -19542102, 2581812, -1220845, 24898462, -29229936, -8048769, -14150307, --424665, 4856535, 955630, 19918984, -20178830, 9824201, -2605972, 4134980, -2292976, 11039140, --5801964, -9865003, -673236, -2718714, 7824357, -413927, 5344013, 11703249, -2220498, -8364986, --983011, 13144747, -7424388, 3324305, 3071439, 767189, -1002875, 13078175, -314069, -3035468, --21233782, 7165079, -5123359, -13231184, -11587285, -2826089, -12861816, -7374459, -11143293, 5691906, --13179644, 13666049, -12077985, 8612483, -6146635, 16525424, -15463493, -8721468, -2157684, 9758703, -4064113, 489626, -6230387, -12401181, 1526861, 5465883, 18551574, 10079215, 4240744, -9978820, -6486475, -8769786, -10217727, 9699110, -9900436, 5428839, 12154757, 10510859, -2364380, -3162707, --8329016, 14904073, 1592359, 11919608, 17426830, 23727010, -22931368, 18688476, 13334263, 1664300, -9887015, 31188978, -7437810, -7606924, 3886946, 9935333, 13529684, 5191542, -10743324, 14375792, --3882651, 27681064, 297963, -3326452, 9601399, 8058970, 7902740, 776852, 25952876, -19695646, -6023692, 678068, 7805030, -7606924, -16346109, 9642202, 7693897, 8051453, -5150203, -3566970, -21760452, 8857833, 27099096, 3415573, -8876624, -37044, 6635725, -1287953, 28013388, -2447058, -15568720, -1675037, 25137906, 9862319, 7241852, -5000416, -780610, 14365055, 782221, 15291157, -11332271, 13584445, -16542067, 3529390, 12340515, 15298137, 10975252, 9032853, 19515258, 24637544, --18552648, -1647657, 35944044, -8357470, -10785737, 23809152, 30368104, 447213, -2609730, -18178450, -11432129, 23976654, 15569, 8515846, -17878876, 19846508, -8425115, -4458176, -15545634, -9335648, -35792648, 2102923, -23075786, -9182640, 482110, 1795296, -2030983, 28438590, 13620415, -498216, --10025527, 764504, 8120710, -1435593, 36638756, 9478993, 16689169, 7359964, -6980396, -18117246, -5745593, 1845762, 4146791, -13468481, -678605, -8341900, 12951474, 2333241, 2913062, 14778982, --10336376, -5856725, 3384434, 3031710, 4621385, -14660871, -12617003, -26860726, -14518600, 4032974, --15925202, 5134097, -11281805, -4335770, 22903450, 10020696, -9645423, 9842991, 3556233, 3357054, -22231288, 30065, 26787712, 13652090, -9627706, -27029840, 6990060, 9477382, 19083614, -4373888, --20215338, -2391760, 9272298, 7687992, -1566053, -7640210, 15752329, -18369576, -1542967, 26866094, --6353867, 7685307, 2331094, 3244311, -26084948, 20879984, -2668785, -20788178, -12563853, 10420664, --3665755, 5079336, -762357, -8757975, -6985228, 3425773, -7021735, -1717450, -1075889, -29879014, --8501888, -20092930, 3621194, 6873559, -986769, -8933532, 2679523, -4354023, 10758893, -26394184, -850940, 4437238, 14070850, -11551851, 13005698, -11367705, 7876433, 2282775, 9814537, -17220672, -4128001, -8563091, -19385872, 11777874, -15967078, -29672856, 3064459, -2817499, 22001506, -11301133, -1838783, 10716480, 13982266, 17536352, 280247, -6009733, -12767327, 361851, 6505265, 11571716, --25095494, 25890600, -2410014, -17439178, -15524696, -23212688, 6637872, 5666673, 5884105, 4134980, -20292646, -8492224, 19376208, -23054310, -1165547, 11023034, -5890011, -24896314, -4858145, -35883916, -15782394, -39550208, 21883932, -27699854, -24239722, 5467494, 18855980, 13714904, -14253386, 12783970, -24001888, 3273839, 2704756, 4701379, 1226750, -15962246, 16936666, -31369904, -19753628, 454730, --2884608, -3192771, -5020280, -8790724, 3017215, 26445724, 6173479, 2530810, 1604170, -14408542, -15122580, -4298189, -28900298, -5718212, -376347, -857920, -20067698, -14995878, 13734232, -6340983, -24264418, 3068754, -925029, -22195318, -12182675, 5813775, 2334852, -7434589, 20695300, -19045496, --11286100, -2818036, -2147484, 18165564, 790811, 21437792, -842887, -22149146, 4024384, -19586662, -11856257, -5718749, 16476568, 28665686, -50982336, 12237972, 6263136, 2739652, 18357764, -5946382, -2934000, 39476656, 33937220, -11823508, -15308337, -2493766, -28572806, 14081587, -3064459, 4229469, -605054, -15412490, 39538932, -19393924, -73793984, -12382928, 13010530, -50520088, -9749039, 13399761, --42633992, 3858491, 25505664, -20854750, 25467008, -27646168, 21717502, 26621282, -19522236, 5811628, --3884798, -1372779, -8955007, -13321378, -3282429, 15531675, -12502650, -20939040, -11446088, -17296370, --2720862, -14060649, -3031173, 4128001, -3888556, 14966887, -16172162, -20855288, 13848048, -21969294, --30165166, -39776764, -13967234, -3255048, 6405944, 18460844, -9559523, 6890738, 8978092, -9395778, --3989488, 31801548, -23458574, -3549254, 22866942, 4533875, 17882634, -7505992, 6169184, 23088134, -12898324, -4646081, -3658775, -19620484, 6164889, 22186190, -25219512, -11884711, -8573828, 36042292, -24260660, -34878892, -7301982, 31105226, -9793599, -19226422, -13973139, -19251118, -11831024, 31525596, -18679886, -2377801, 13727252, -3237869, 16793322, -10704132, -6721624, 35169340, -15236396, 6614787, --10874857, -3427384, -1238024, 9928354, 27485644, 11362873, -20227686, -5185636, -1944547, -2418604, -14846628, 2672007, 27373438, -7854959, 3632469, -2338073, 6945499, -23319524, 12903155, -21421150, -13364328, -441845, 20252918, -4961761, 14448807, -6702834, 3150359, 10204842, -11614665, 10586021, -19896972, 28651726, -17144972, 29382946, 9266929, 34724812, -12568148, 7447474, -4415227, -2992519, --9918690, -1105417, -14973867, -53919556, -39025148, -9308805, -5517959, 9340480, -1683627, 14415521, -14084272, -28534152, -10628433, -10430328, 26574036, -40381820, 36454072, -11653857, -11957726, 8833674, -16506633, -31753766, -7066295, -189515, 5322002, 949188, -1773285, 14847702, -10339060, 1303523, -7256884, 8375186, 12038256, 10069014, 2637110, -17667348, -4394826, 22505092, -23463944, -19847044, -22983444, 7580081, 15928423, 25623774, 39618388, -9799505, -26906896, 33826088, -14957760, -6354404, -34760244, 10731513, -14258755, -37918120, -25812754, -4253092, -14951318, 17117592, 34173444, 17648558, --13296145, 35851704, 11020349, -13559749, 8807904, 40107480, 10502806, 7488813, -9772124, -32769526, --44790604, -34909496, -3743064, 25995826, 6779606, 16383690, 60844116, 30455614, -38375532, -25087440, -15298674, -51392504, -24726126, 44559212, 14910516, -56735444, -48324288, -21364242, -36389648, -33055678, --17236778, -54029076, 39786968, 17926656, 13775571, 16906066, -4630512, 20441896, 16841640, 23738284, --2960306, 32017908, -17915382, 24697672, -7226820, -16065862, -4457103, -27361626, 4138738, -8958765, -11349988, -5629092, -10182831, 29620242, -30967788, 22457310, -110059, -12077985, -4636954, 14241575, -14861661, 12029667, 27229556, 23250806, -14431627, -1127966, -12864501, 13960254, -11355357, 11418171, -13400298, 8061117, 7779797, 7044820, -6910066, 31501974, -2177012, 11145440, 3395709, 16003048, -7865696, -32088238, 2614561, -17984638, 5594195, 18331458, -2644089, -11605539, -13391171, 35745404, --34253976, -24177982, 50784768, -17817672, 12967580, 9184251, 15957414, -3152506, 7978976, -30367030, -1617055, 40157944, -19539416, -7102802, 28102508, 6546067, -26805428, 12505334, -37677600, -137980112, --148366960, -10197863, -87148648, 67864240, 258684272, 109803520, 154139936, 195629856, -80527416, -58699856, --26026428, -185362736, -130713568, -46006080, -202247328, -91289528, -22140556, -85962160, 14756434, 180355344, -164109632, 177214112, 232043120, 137261792, -17148194, 47930760, -57269092, -215591248, -118496536, -89798640, --178929408, -125079648, 2631741, -139810320, -48264160, 24486146, -138337680, -74164424, 96845072, 33843268, -105463992, 266627808, 217437552, 173556944, 318101920, 228274832, -7155416, 28579786, -63073744, -292923744, --278069056, -288776416, -444851776, -304239904, -187310496, -185640304, 514322, 139642816, 160726800, 223222880, -343002528, 314833440, 268950848, 262911056, 153861296, 52892524, 12884365, -14259291, -112143208, -200613088, --239049824, -256209824, -335403136, -255880736, -100100120, 29174102, 28749974, 0, 0, 0, -0, 0, 0, }, +1455994, -2240362, 100932, -1137093, 1463510, 5843840, -490700, -3820374, -5774584, 630286, +-4339528, -1251983, -1309965, 1000727, 3101503, -4463008, -2168959, -1370632, 244276, -2636036, +-4633733, -1809792, -3896609, -2077154, 841814, -190052, -1798518, -345208, -493921, 500901, +-4146791, -1033477, 1678259, 3571265, 1837172, -529355, -505196, 171799, -3932043, -2672544, +870805, 260919, 1046898, -1050120, 864899, -852551, 1567126, -818728, 2932389, 2979634, +-273804, -67109, 2286533, 889595, -158914, 220654, -4801237, -3017752, -729071, 1796907, +-1975148, -4236985, -2667175, -2019172, -2979634, 1803349, -5478231, 1680406, 5598490, -2954938, +-1404991, -2715493, 3122441, -1240172, -3447248, 913217, -4941897, 4958003, -1909113, -63888, +4645544, -2752000, 1786706, -420907, 616328, -3272765, -6712497, -1464047, 2591476, -1807644, +1569274, 2216740, 1942936, -1569811, 1095217, -4239133, -771484, 921271, 1699733, -258235, +-98784, 389768, 1019518, -3588445, -2868501, 1076963, 2401961, -1335735, 2518998, 4634807, +-6406481, 761820, -3049964, -2241436, 1464584, -963683, 3983582, -1395328, 3597035, 1690607, +628676, -440234, 1953673, -79457, -329639, -2204929, 5829345, -4211216, -1141924, 1807644, +2317135, -329102, -1862942, 869194, -2062121, 1985886, 531502, 551903, 63888, -1039919, +-594316, 2697776, -7567733, 1501091, -855772, -4786204, -613643, 3422552, 1972464, 1978369, +-3203509, 2334315, -9340480, 6575058, -3736085, 1165010, 910533, -175020, -2306398, -542777, +-5420249, -6655589, 1323924, -1591822, 1567663, 1584843, 5257040, -5009543, 283468, 3449933, +3328600, -4142496, -4392141, -2514703, -3867081, -74625, -1559073, -3098819, -2480881, -383863, +-6739341, -6452115, -1682554, 801011, -956704, 93952, -1136556, 962073, -3745212, 3424163, +-1775969, 1761474, -903017, 1112397, -3469260, 588947, 1668595, 2089502, 654446, 25233, +454193, -1562294, -2983392, 4632659, 3393561, 1120450, -2406792, 5829345, 3792993, -2347200, +3518652, -887985, -3705483, -1369558, -1709934, -3446711, 1239635, 1450088, 384400, -2881386, +3810173, -3746822, 1896765, 2922725, -1532767, -616865, -6481106, -3740380, -6877317, 200253, +7478612, 3416647, -2929705, 1264868, 934155, 11962558, -3585224, 3423089, 5779952, -1132261, +5247913, 2166811, 3544422, -4735739, -1833951, -5545340, -2653753, 3759707, -198105, -2622615, +536334, -3869766, -409633, -2520072, 3446175, -1526324, -610959, -1366337, 1762010, 876710, +-97174, -406948, 1404991, -5799280, -4669703, 2072859, 367220, -504659, -3149285, 7039989, +1808181, -824634, 2097555, 2839510, -214748, 1450088, 420370, -3355980, 2872796, -4006131, +-3369402, 3779034, -4663261, 3884261, 1386201, -3193845, 5352066, 3189013, 1827509, -1422171, +4764193, 1336809, -1123134, -1351304, 1109175, 758062, -1408749, -5905580, -1451162, -998043, +1201517, -3354906, 4038880, -1420024, 2953327, -3744138, 12374338, -10511932, -9244380, -3066607, +9443559, -1466195, -5321465, 6428493, -4500589, 2970507, -370978, -7262790, -4985384, 5894843, +-4029216, 2860448, -4197794, 3857954, -1898376, -1219234, -578747, -4048007, 1954747, 2771865, +-4074850, 863288, -2127620, 713501, 1693828, -675921, 2481417, 689879, 2014340, 3269007, +-4411469, -3253438, 3797288, 122407, 2932926, 2878165, -2818572, -4136591, -1697049, 647466, +5291400, -5837398, 2332167, -6504191, -7924752, -1883880, -4541391, -774168, -5361193, -10161356, +-5388574, 4715874, 4408784, 2873870, -3356517, 9750650, -2944200, 1686848, -5301601, -5004174, +1439888, 84826, -350577, -6291054, -1898376, -233539, -1034550, -1082332, -3091840, -2585570, +1214402, -682900, -1133871, 16124381, -5162551, 7605314, -1914482, 10193031, -1878511, -1435056, +1771137, 2165737, -1643899, -11446088, 1195075, -972273, -3037616, -22549, -517007, 4285304, +-1294396, 10033580, -1284195, 1297617, -696858, 5774047, -1096827, 2131915, -4621385, 42413, +-3188476, -3075197, -976031, -714575, -2147, 3833258, -6385543, -1610613, 2080912, -455267, +4297652, 1294933, -1204738, -2601677, -2997350, -2764348, -5917391, 2521683, 2309619, 2525441, +-10255308, -1100585, 6943352, 4408784, -1820529, 117575, -3352759, -6465000, -7602629, 7832947, +-2546379, -4384088, -3064459, 4569309, 2823404, 1001801, 3166465, 2172717, 3000572, -924492, +-7703024, -1591822, -3815005, -2698313, 4642860, 4633733, -1371705, 7234873, 7857643, -24428700, +12734578, 4349192, -1551020, -1519882, -377420, -4106526, -7119982, -1908039, 2829310, 9692667, +6388764, -9713069, -2195265, -5966784, 3339874, -933082, -12918725, -4151623, 7255274, 4274566, +2212445, 6039261, 3534758, -1130650, -1222455, 1454920, -5152350, -3278134, 707596, 5206574, +-2771328, -5238787, -7281580, -3944928, 3082176, 10710575, 417686, -2422899, 2019172, -2767570, +-8628052, 154619, -6180995, -5064840, -5779416, 2942053, -641024, -8228084, 1156420, 2487860, +2758443, -8859981, -4927938, -3581466, -2332704, -1363652, -3331284, -1946157, -4214974, -8597451, +-1120450, -7362111, -8451422, -5581310, -1558536, 1016297, -4984310, -7720204, 2194192, 5464272, +-177704, -1474248, -443992, 3861176, -5959804, 4266513, -10272488, 3375844, -5246840, -1225676, +966368, 2536178, -725850, 4724464, -177167, -1449552, -14203994, 6019397, -2863670, -3398930, +4727149, -8520678, -11340861, 4055523, -4124242, -5682779, -1867237, 9513889, 6083821, -4175782, +-2359011, 4130685, -1570884, -1042066, 1178969, 3988414, 8189429, 4737886, 6612102, -1626719, +-415001, -444529, -4554813, 508954, -1963337, 10713796, -8756901, -5699959, -4646618, -4989679, +2699924, 828392, 4057134, -1413581, -5728950, -8447664, -2191507, -10359998, -13271449, -3500935, +440234, 9485972, 2158221, -9117679, -1973538, 6801618, -3126199, 1580548, 2533494, 3263638, +-5935645, -10434623, -3820374, -6015639, 15242839, 186831, -4425964, 1502702, 2903398, -3316789, +2341294, 117038, 8715026, 2856153, -527207, 6051072, -929324, -7220914, -1166621, -528818, +7458211, -3978214, -751619, -2112050, 1410360, -2151242, 700080, 2451890, 3690451, 5016522, +3518652, 1631014, 13007308, 5068599, 4492536, -494995, -9692131, 696858, -7999377, 2579128, +-5291937, 1406065, 412854, 3239479, 16045461, 4443681, -1995012, 5616207, -3962107, 4775467, +-2258616, 8128763, -3940096, -77309, -5585605, 3685619, 6782827, -7324530, 15313706, -3670050, +1738925, -2331630, -3245385, 1499481, -3653407, -12686260, 2951716, -3254512, 182536, -7882876, +2800319, -2862059, -11937862, -5986648, -2498060, -11584601, 7739531, 16404628, 21383032, -19204946, +-13064754, -8198556, 2504503, 4645007, -3965329, 2648384, -4486094, 1752347, 11400454, 8051453, +-12760885, 20572894, 1232119, 12402255, 4996658, -3201361, -3386045, 11567421, -5510980, 7631620, +9129490, -201327, -5083631, 1214939, 9401147, 5749888, 5200669, 4749697, -12885, 2292976, +3649649, 11851962, 8446053, -4925791, -4257923, 35970, -1808718, -277025, -5030481, -2885144, +6193880, 10601053, 3153043, 15517180, -3386045, 16888348, 1384590, 8478802, 18178986, 13412646, +4612258, 4593468, 8537321, -707596, -6491306, 996432, 8031052, -3242164, -7579007, 1379758, +-767189, 17126182, 13372381, 965294, 18581102, -454730, 10164577, 6337224, 8084202, 227633, +-5925445, 9420474, -1371168, 10867878, 6706592, 21545704, -11141145, -382252, -22719840, 6534256, +-11348914, 419833, 9997610, -1948305, 3317325, -12981539, -9463424, 4895726, -7592429, 4598836, +-4480188, 1406065, 12342125, -1970316, -11155641, 3157875, -4516158, 11697343, -11900818, -8489003, +5283347, 5621576, 8842264, 288300, -489089, 5456756, -2966749, -8397198, 5578089, -3505767, +-6241125, 1898912, 6955163, -4896263, 12714177, 4826470, 34360, 1452236, 6505802, 2447058, +-20405926, 8354785, -1595580, -2433099, -3037616, 10892574, 666794, 11593190, 1124208, 754841, +1964411, -3438658, -583042, 5432597, -5979668, 1242319, 19790136, 1305133, 14795625, 694174, +-1998234, -1946157, -8526047, -20003810, -13300440, 6020471, 10001368, -4346507, 16072841, 5918465, +-9507984, -6722161, 15022185, 9261023, 10558640, 2334852, -2513630, -239981, 1331440, -8548596, +228707, -4151086, 6726993, 13425531, 5674189, 5107253, 15273977, 12926778, 10930692, 1309428, +4633196, 1690070, -1434519, -1889249, 3253438, -229781, -7713762, 2797634, 9339406, 814433, +-1542967, 3526168, -20147692, 7916162, -7492034, 6135898, 8013872, 7347616, -7016366, 5175436, +68719, 745177, 13338021, 10029822, 1002875, 5801964, 4491999, -763967, -6235219, 2661806, +6959995, 1049583, 9753871, 3592203, 8907762, 16760573, 1708323, 7326141, 7661685, 9427453, +531502, -4489315, 14566918, -4342749, 11940009, -12049531, -9780177, 15942382, 172336, 5915244, +9778030, 14045617, 17878876, 8109972, 3327526, -7265474, 4766877, -682363, -14012868, 13866839, +9190693, -11300059, 597537, 1914482, -13960791, 6484864, 14217415, 8896488, 2310156, -35291748, +-22091702, 6622840, 7020661, 13841606, 23310398, -7024956, -4065187, -8071854, -7329899, -9451612, +-9855876, 200253, 3519189, 2399276, 14660871, 27917, 14398341, -1392643, 4795331, 6110665, +4980015, 10210748, 7562901, -182536, 9411884, -884226, -1324461, -6332393, 6334540, -1700807, +-14475114, -13241921, 7634841, -2685428, 16954384, 9271224, 10873247, 3100967, -21581136, 4176856, +13429826, -3114388, 3863860, -4375498, 2627983, 15843597, -630286, 13050258, 23680840, 112743, +-8963060, -1524713, 246961, -16204912, 20135344, 8210904, -2651069, -2583423, 14614163, 5378373, +-17629768, -15945066, 5723044, -7874823, 8508867, 4432943, 2743947, -8699456, -12484396, -2310693, +3249143, 737661, 13630616, -19542102, 2581812, -1220845, 24898462, -29229936, -8048769, -14150307, +-424665, 4856535, 955630, 19918984, -20178830, 9824201, -2605972, 4134980, -2292976, 11039140, +-5801964, -9865003, -673236, -2718714, 7824357, -413927, 5344013, 11703249, -2220498, -8364986, +-983011, 13144747, -7424388, 3324305, 3071439, 767189, -1002875, 13078175, -314069, -3035468, +-21233782, 7165079, -5123359, -13231184, -11587285, -2826089, -12861816, -7374459, -11143293, 5691906, +-13179644, 13666049, -12077985, 8612483, -6146635, 16525424, -15463493, -8721468, -2157684, 9758703, +4064113, 489626, -6230387, -12401181, 1526861, 5465883, 18551574, 10079215, 4240744, -9978820, +6486475, -8769786, -10217727, 9699110, -9900436, 5428839, 12154757, 10510859, -2364380, -3162707, +-8329016, 14904073, 1592359, 11919608, 17426830, 23727010, -22931368, 18688476, 13334263, 1664300, +9887015, 31188978, -7437810, -7606924, 3886946, 9935333, 13529684, 5191542, -10743324, 14375792, +-3882651, 27681064, 297963, -3326452, 9601399, 8058970, 7902740, 776852, 25952876, -19695646, +6023692, 678068, 7805030, -7606924, -16346109, 9642202, 7693897, 8051453, -5150203, -3566970, +21760452, 8857833, 27099096, 3415573, -8876624, -37044, 6635725, -1287953, 28013388, -2447058, +15568720, -1675037, 25137906, 9862319, 7241852, -5000416, -780610, 14365055, 782221, 15291157, +11332271, 13584445, -16542067, 3529390, 12340515, 15298137, 10975252, 9032853, 19515258, 24637544, +-18552648, -1647657, 35944044, -8357470, -10785737, 23809152, 30368104, 447213, -2609730, -18178450, +11432129, 23976654, 15569, 8515846, -17878876, 19846508, -8425115, -4458176, -15545634, -9335648, +35792648, 2102923, -23075786, -9182640, 482110, 1795296, -2030983, 28438590, 13620415, -498216, +-10025527, 764504, 8120710, -1435593, 36638756, 9478993, 16689169, 7359964, -6980396, -18117246, +5745593, 1845762, 4146791, -13468481, -678605, -8341900, 12951474, 2333241, 2913062, 14778982, +-10336376, -5856725, 3384434, 3031710, 4621385, -14660871, -12617003, -26860726, -14518600, 4032974, +-15925202, 5134097, -11281805, -4335770, 22903450, 10020696, -9645423, 9842991, 3556233, 3357054, +22231288, 30065, 26787712, 13652090, -9627706, -27029840, 6990060, 9477382, 19083614, -4373888, +-20215338, -2391760, 9272298, 7687992, -1566053, -7640210, 15752329, -18369576, -1542967, 26866094, +-6353867, 7685307, 2331094, 3244311, -26084948, 20879984, -2668785, -20788178, -12563853, 10420664, +-3665755, 5079336, -762357, -8757975, -6985228, 3425773, -7021735, -1717450, -1075889, -29879014, +-8501888, -20092930, 3621194, 6873559, -986769, -8933532, 2679523, -4354023, 10758893, -26394184, +850940, 4437238, 14070850, -11551851, 13005698, -11367705, 7876433, 2282775, 9814537, -17220672, +4128001, -8563091, -19385872, 11777874, -15967078, -29672856, 3064459, -2817499, 22001506, -11301133, +1838783, 10716480, 13982266, 17536352, 280247, -6009733, -12767327, 361851, 6505265, 11571716, +-25095494, 25890600, -2410014, -17439178, -15524696, -23212688, 6637872, 5666673, 5884105, 4134980, +20292646, -8492224, 19376208, -23054310, -1165547, 11023034, -5890011, -24896314, -4858145, -35883916, +15782394, -39550208, 21883932, -27699854, -24239722, 5467494, 18855980, 13714904, -14253386, 12783970, +24001888, 3273839, 2704756, 4701379, 1226750, -15962246, 16936666, -31369904, -19753628, 454730, +-2884608, -3192771, -5020280, -8790724, 3017215, 26445724, 6173479, 2530810, 1604170, -14408542, +15122580, -4298189, -28900298, -5718212, -376347, -857920, -20067698, -14995878, 13734232, -6340983, +24264418, 3068754, -925029, -22195318, -12182675, 5813775, 2334852, -7434589, 20695300, -19045496, +-11286100, -2818036, -2147484, 18165564, 790811, 21437792, -842887, -22149146, 4024384, -19586662, +11856257, -5718749, 16476568, 28665686, -50982336, 12237972, 6263136, 2739652, 18357764, -5946382, +2934000, 39476656, 33937220, -11823508, -15308337, -2493766, -28572806, 14081587, -3064459, 4229469, +605054, -15412490, 39538932, -19393924, -73793984, -12382928, 13010530, -50520088, -9749039, 13399761, +-42633992, 3858491, 25505664, -20854750, 25467008, -27646168, 21717502, 26621282, -19522236, 5811628, +-3884798, -1372779, -8955007, -13321378, -3282429, 15531675, -12502650, -20939040, -11446088, -17296370, +-2720862, -14060649, -3031173, 4128001, -3888556, 14966887, -16172162, -20855288, 13848048, -21969294, +-30165166, -39776764, -13967234, -3255048, 6405944, 18460844, -9559523, 6890738, 8978092, -9395778, +-3989488, 31801548, -23458574, -3549254, 22866942, 4533875, 17882634, -7505992, 6169184, 23088134, +12898324, -4646081, -3658775, -19620484, 6164889, 22186190, -25219512, -11884711, -8573828, 36042292, +24260660, -34878892, -7301982, 31105226, -9793599, -19226422, -13973139, -19251118, -11831024, 31525596, +18679886, -2377801, 13727252, -3237869, 16793322, -10704132, -6721624, 35169340, -15236396, 6614787, +-10874857, -3427384, -1238024, 9928354, 27485644, 11362873, -20227686, -5185636, -1944547, -2418604, +14846628, 2672007, 27373438, -7854959, 3632469, -2338073, 6945499, -23319524, 12903155, -21421150, +13364328, -441845, 20252918, -4961761, 14448807, -6702834, 3150359, 10204842, -11614665, 10586021, +19896972, 28651726, -17144972, 29382946, 9266929, 34724812, -12568148, 7447474, -4415227, -2992519, +-9918690, -1105417, -14973867, -53919556, -39025148, -9308805, -5517959, 9340480, -1683627, 14415521, +14084272, -28534152, -10628433, -10430328, 26574036, -40381820, 36454072, -11653857, -11957726, 8833674, +16506633, -31753766, -7066295, -189515, 5322002, 949188, -1773285, 14847702, -10339060, 1303523, +7256884, 8375186, 12038256, 10069014, 2637110, -17667348, -4394826, 22505092, -23463944, -19847044, +22983444, 7580081, 15928423, 25623774, 39618388, -9799505, -26906896, 33826088, -14957760, -6354404, +34760244, 10731513, -14258755, -37918120, -25812754, -4253092, -14951318, 17117592, 34173444, 17648558, +-13296145, 35851704, 11020349, -13559749, 8807904, 40107480, 10502806, 7488813, -9772124, -32769526, +-44790604, -34909496, -3743064, 25995826, 6779606, 16383690, 60844116, 30455614, -38375532, -25087440, +15298674, -51392504, -24726126, 44559212, 14910516, -56735444, -48324288, -21364242, -36389648, -33055678, +-17236778, -54029076, 39786968, 17926656, 13775571, 16906066, -4630512, 20441896, 16841640, 23738284, +-2960306, 32017908, -17915382, 24697672, -7226820, -16065862, -4457103, -27361626, 4138738, -8958765, +11349988, -5629092, -10182831, 29620242, -30967788, 22457310, -110059, -12077985, -4636954, 14241575, +14861661, 12029667, 27229556, 23250806, -14431627, -1127966, -12864501, 13960254, -11355357, 11418171, +13400298, 8061117, 7779797, 7044820, -6910066, 31501974, -2177012, 11145440, 3395709, 16003048, +7865696, -32088238, 2614561, -17984638, 5594195, 18331458, -2644089, -11605539, -13391171, 35745404, +-34253976, -24177982, 50784768, -17817672, 12967580, 9184251, 15957414, -3152506, 7978976, -30367030, +1617055, 40157944, -19539416, -7102802, 28102508, 6546067, -26805428, 12505334, -37677600, -137980112, +-148366960, -10197863, -87148648, 67864240, 258684272, 109803520, 154139936, 195629856, -80527416, -58699856, +-26026428, -185362736, -130713568, -46006080, -202247328, -91289528, -22140556, -85962160, 14756434, 180355344, +164109632, 177214112, 232043120, 137261792, -17148194, 47930760, -57269092, -215591248, -118496536, -89798640, +-178929408, -125079648, 2631741, -139810320, -48264160, 24486146, -138337680, -74164424, 96845072, 33843268, +105463992, 266627808, 217437552, 173556944, 318101920, 228274832, -7155416, 28579786, -63073744, -292923744, +-278069056, -288776416, -444851776, -304239904, -187310496, -185640304, 514322, 139642816, 160726800, 223222880, +343002528, 314833440, 268950848, 262911056, 153861296, 52892524, 12884365, -14259291, -112143208, -200613088, +-239049824, -256209824, -335403136, -255880736, -100100120, 29174102, 28749974, 0, 0, 0, +0, 0, 0, }, { 8801462, -1883343, -196495, -1462973, -2813204, -2139431, 2573222, 3369939, 1700270, 2755222, 520228, --1939715, -264141, 151398, -2012192, -2039573, -3981435, 5708549, -2593624, 4967130, -3507378, --4341138, 590021, 6983080, -468688, 2850248, -793495, 1972464, 2929168, 2231236, 3717294, -2377801, -6961605, 403727, -3833795, 1169305, -1810329, -858993, -1358820, 253403, -590558, --1314797, 52076, -687732, 3553549, 1048509, 379031, 2974265, 2844879, 546535, -1574642, --1372242, -1493575, 1649804, -103079, 222801, -2730526, 7178501, 3269544, 1732482, -1275605, --1525787, 3157875, 827318, -269509, 975494, -1576790, 907312, -2250026, 74088, 1873680, --3071439, -2076617, -1116155, 148176, 403190, 1709934, -7948374, 3591667, -9015673, 1557463, -460635, 381178, -6212670, -2307471, 1474248, -1489817, 1777580, 2974265, 1707250, -245350, -2284386, -6976101, -26844, -424128, -361314, 3588445, 5501316, -6128382, -1537061, -3775276, --1379221, 1978906, 3709778, 488016, 769336, -1613834, -2148021, -1723893, -1411434, -2854543, -1283122, -2872260, -2056216, 2993055, -2870112, 2116882, 163209, -6862284, -2493766, -3829500, --1099512, 2758980, -2203318, -690416, -2170569, -2122251, -1627793, 2715493, 4051228, 707596, -2160369, 1814624, -2469069, -4345433, 2097018, 1852742, -1140314, -3717831, -3279208, 2772402, -367220, 2095944, 801011, -5626944, -2056216, -2022930, 2958696, 1415729, -5865852, 1745904, --3164317, -505732, -10730439, 7495255, -4997732, 955630, -447750, -1778653, 5821292, -4675609, --2989834, 209917, 6150930, -1974611, -60666, -428423, 5148055, -2736431, -7503308, -1538672, --3710315, -5260261, 510564, -250182, 1216550, 3330210, 5513665, 3410741, 833224, 8107825, -3430605, 433255, 6010270, 6098854, -119722, -3044595, 592706, 2774012, 2474438, 99858, --757525, -4467840, -3665755, -1859721, 4952634, 2012729, 8246337, 4556961, 85899, 2741263, -3637837, 1184337, -4398047, 5378910, -1605244, 2862596, 293132, 1772748, -5273683, -823023, --1293859, 2151242, -1192390, -2090575, 6663642, -319975, -3892314, 1897302, -2757369, 2933463, --1188632, 4659503, 4754529, 4507568, 2428267, -3955665, 3458523, -165893, 3766686, 2091112, -2367064, 19864, -2226941, 2187749, 810138, 579821, 1006096, -8803609, 2734821, -5660767, -843424, 1657321, 1814087, -2678449, 4544076, 584652, -1768990, -948114, 5323612, 3703336, --2396592, -3178813, -2521683, 1909113, 3773129, -2488934, -2564096, 558883, -9877351, -219580, --4231080, -1861868, -4204236, -5689758, -694711, 4766340, 1357747, -4692789, -1196148, 4031901, -1286343, -2986613, 4831302, -2359011, -6730751, -2274185, 3795677, -1949378, 4495757, 8266202, -6946573, 656056, -61740, 2103997, -1008244, -5378373, 103616, 1559073, -3556770, 2688113, --7102266, -1451162, 528818, -3442416, -2245194, 2707977, 6368363, -5337034, -4981625, 2726231, -3362423, 5428302, 2097018, -3860102, 4960151, 3913789, 14904073, -5622649, -2410014, -825707, -10777147, -938987, 8178692, -5739687, 7219840, -6908992, -6053757, 1605244, 3477313, -4029753, --908386, 2241973, -433255, 2885681, -4173098, 5061082, 1891396, -5178120, -99321, 2245731, -1758252, 1066226, 10122701, 8109972, 6344204, 117038, 4145717, 497142, 1253594, 3118683, --9175661, -1300301, 5711770, 3783329, 4443144, 8590, -1580548, 2153926, -312996, 11420318, --1668595, 2017024, 1169842, 662499, -3321084, 6891812, -757525, 7161321, -3884261, -3963718, -2909304, -2602213, -9441412, -4221953, 1850594, -775242, -6797860, 2005213, -67109, 8897025, -656056, 909459, -2818036, 3360275, 3063922, -516470, -716723, 7948374, 5420249, 5954436, --3954591, -4792110, -4576825, 10654203, -8818105, -441308, -9205726, -6151467, -3699041, 7571491, -4402879, -11134703, -15051176, -5988258, 5084168, 3462818, -2387465, 4815732, -100395, -1559073, -437550, -8125005, 2222109, -1343788, 527744, 2147484, 411780, -364535, 3177202, 2536178, --5297842, -5543729, 5825050, -2248952, -2993592, 3235184, -10250476, 2022393, 2060511, -9796284, -3358128, 9270687, 5834713, 6209449, 1332514, 3205119, 9192841, 1239098, 1745367, -11083163, -5583995, 7434052, 6535330, 692564, 6652905, -8120710, 7462506, -2844879, -7348689, -12071006, --32212, -7952669, -5757941, -3243774, -6834904, -18136574, 907849, 70867, -391916, 1804423, -8773008, 2237678, 3736085, 1210107, -5828808, -280247, 3403762, 1128503, 2962991, -23587960, -11426760, 1363652, -9243843, 2090575, -1132798, -2814277, -1992328, -5287642, 2640868, -2770791, -411243, 3258807, 2983392, 10043781, -4243965, -9833328, 5149129, -12436078, -5447093, 1891933, -1557463, 1287953, 3852586, 4827543, 4121021, -204011, 5498632, 253940, -2376191, 7373922, -4502200, -2390686, 4316979, -7852274, 14496588, 445066, 2589865, -1478543, -12690555, -2280091, --4801774, -4503810, 1826972, 10366977, 178778, 338766, -1461900, -2987150, -6884296, 2048163, --1214939, 3652870, -8628589, 2788508, 4479651, 1911261, -6385006, -2337536, 1633698, 729608, -5120675, 922881, 17815524, -5158793, -7507066, -8693014, -2467996, 114890, 6582575, -8632347, --737661, -3690451, 4545149, -12437152, 601832, -2719788, -3322694, 10277320, -3720516, -2855617, -1973538, 2794413, -8853001, -8965207, -8189966, -7761006, -12426414, 7295002, -7390565, 1788317, -2658585, 10661719, -2107218, -2991445, 8356396, 1623498, 1533840, -10524280, -6914898, 4594005, -1898912, 3565360, 5701569, -11087458, -137976, 4146254, 9942849, -527207, 717796, -1967095, --233539, -7409356, -1554778, -2616172, -13191455, -1500017, 3740917, -7909183, 2971581, -8573292, --252866, -6091338, -1349694, -2251100, 542240, 9937481, -3228205, -391916, 5188858, -3541738, -2981244, -9237401, -15606837, -8979166, -4816269, -2786360, 1535451, 9700184, -4942434, 2131378, -2445984, -8077760, 2472291, -6389301, -2010045, 3092377, 10515154, -2285996, -449361, 2723009, --30602, -10191421, 10588705, 11098195, -3041911, 1269163, 11639361, -11297911, -10002442, 8950175, --1796370, 1440962, 8184060, -1310502, -1865090, 8131984, -14308684, 6467147, -355409, 2713346, -7418483, 7570954, -7866770, 1786170, -10921028, 3690451, -3060164, -972810, -7493644, -171799, --10878615, 1313186, -9380209, 7030862, -3067144, 1512365, 12474196, 5849209, 5781563, -9457518, -2140504, 11467563, -2297808, -15754477, 8943196, -1725503, 1935957, -2916820, -7034083, 10786273, -4174708, 8835285, 2531883, 1484448, -6711424, -8966281, 3703336, 4562329, 5005248, 6387153, -14521821, -199179, -10594074, -6854231, 8872329, -926639, -9088688, -2158221, -275415, -2225330, --11676942, 562104, 1795296, 3381213, -4308926, 7288560, -635655, 1068373, 8588324, 8034810, --10187126, 11531450, -2817499, 12206297, -10300405, 8983998, 834297, -1162326, 15266461, -8260296, -754304, -8025147, -2499671, 23332410, 11192148, 4796405, 3244311, 6491306, -3917547, -234076, --20047834, 3491272, -981937, -8808441, 9390946, 6949794, -442382, 1491964, -11637214, 9922448, --5506685, 10550050, 6914898, 5535676, -8378408, -1659468, -7061463, 10122701, 2257005, -3968550, -18192408, 8546448, -2178085, 758599, -15276662, 2375117, 601832, 11852499, -5508296, -15619722, --2743947, -4453344, -3081639, -21981642, -10940355, -23390392, -11895986, -8451422, 2681670, -5971615, -10927471, 1260573, -12561706, 7492034, -8390755, 11830487, -10546292, -8537858, 6244346, 10697153, -10526965, 329639, -9549860, -7174206, 5122822, -15169824, -17877264, -12092480, -2405719, -963683, --3003256, 3329674, 5397164, 3565897, -806917, 1577327, -6246493, 2840584, -11851425, -16088411, --358093, 11064909, 1207960, -4864588, 8558259, 4866198, 8239358, 14648523, 1090385, -5457293, --10712722, -8552354, 3546032, -9700184, -7195681, 1595044, -8099235, -16394427, -9606231, -1591822, --2860448, 2935073, -4595615, 7945690, 1419487, 2550137, 10879152, -2678449, 250182, 2022393, --10807748, 10537702, 599685, -11253351, -18433462, 3549254, 168041, -13267691, 11732777, 7697119, --13037373, 3023657, 9482214, 5312338, 1289564, 8234526, -5990943, -4717485, -1214402, -6165963, --10208600, 12787728, -14677514, -2659122, 2732673, -234076, 18907520, -20478940, 2547989, -4450123, --3968550, 3050501, -1646046, 2463701, -4757213, -11759620, 9257265, -20785494, -14919106, 10040560, --1072131, -18988588, 8858370, -11361262, 20248086, 3559991, -27966680, -4093104, 1927367, -7530152, -1501091, 4166118, 9168145, 7716983, -16470126, -1308354, 938450, -3911642, -15133317, -2865280, --3571265, -5618891, -4990215, -817654, 541703, 11810623, 13066364, -4816806, 6792491, 5731097, -5653788, 12964896, -357556, 3062312, -16142635, -5941551, 4975720, -3652333, 7012071, 18054432, -2214056, -16824460, -36824512, -603980, -11722576, 9804873, -7398081, -4174708, -7676181, -20055350, -7980586, 25799868, 969052, 6503118, -21145198, 3948686, -2935610, -9494025, 1730335, 9921911, -4564477, 8125005, -9552544, 13238700, 6906308, -14565308, -23190140, -118648, -16962436, -39697844, --25130390, 17860622, 14298483, 23447838, -262530, 9220758, 2095407, 7401840, -522375, 4788889, --10665478, -12466143, -8023536, -11134703, -7508677, -7895224, 9251896, 22701050, 4597763, -27461484, --6916508, 4981089, -7714298, 6911676, -16182363, -1076963, -973884, 1144609, 7218767, 6083821, -583579, -1613834, -4048544, 6736120, 11921755, -9652939, -16103443, 10703595, 4293894, 13955959, -5526013, 20136418, -14309220, -4286378, 11835856, 19302120, 15533823, 10233296, 3773129, -3397319, -372052, -1684701, -841814, 7241315, -25487410, 13981192, -2956548, 4440996, -2705830, 19567872, --6832756, 759136, -5304822, 12947179, 8731132, -19661824, 13638669, -16393353, -2338610, -7445863, --10431402, 9924596, 60130, -25675852, -3426847, -143345, 22280680, -24150602, -248034, -13606993, --38875896, -4353486, -14135274, -30666604, 6525666, 66035, -5660767, 2203855, 16991428, -824097, --17201880, 6276558, 1096290, -5411122, -3830037, -2903935, 1300301, 19385334, -3875134, -489626, -9140764, 6638946, -2303176, 9480067, 8963060, -3899294, -3534758, -7513509, 11171747, -2371896, --17832168, 2971581, -665720, 6467684, 24634858, -15912317, -25161530, -16110959, -6896644, 3686156, -9251896, 4677757, 19006304, 9247601, -12179990, -7376070, -16837882, 15300821, 10193031, 1730335, -4101694, -10094247, 1986422, -10712185, 19450296, 18053896, 2356863, -8546985, -3540127, 1626719, -18067854, 33313914, 22035866, -3488050, -5932961, 47782, 12462384, 4094715, 11966316, 12914967, --10797548, -1349157, -21802328, -14087493, 8704288, 10142565, -17408040, -501974, -8182987, 16160351, --14177687, 4843113, 3119757, 29945048, -15707232, -3331284, -16205985, -2093260, -15988016, -13087302, --9022116, 7356205, -17329120, -12002823, -18993956, -3462818, -1400696, -4498442, -7641821, -21227876, -7751342, -14446123, 8313983, -15232102, 22821308, 5153961, 11182484, -2148558, -18172544, 12607876, -7908646, -4729296, 12397960, 16906066, -6311455, -19419694, -9729175, 30800284, -10517301, 1154809, -2516314, -2744484, 8106751, 20804822, 5106716, 10149008, -4182225, 15608985, 2022393, 12843563, -5056250, 5982353, 1556926, 3580392, 24703578, 9512816, 56512644, -30579630, 23255638, 32778116, --5852967, 3747896, 17541184, -7857106, -1067299, 28723130, 12241194, 113280, 15738908, -82141, -29037738, 32646046, -871878, 23256712, 22988812, -2528662, 9546639, -25665114, -9070434, 20626580, -557809, 20395190, 28451474, 23710366, -6563247, 15167677, -26779658, -40115532, -18464064, -15533286, -7712151, -751619, 8323110, 10162966, 21790516, 17568026, 4490925, -19362250, -4211753, 18075370, -4021700, -9735080, 9975062, 25271050, -5014911, 8528194, -23208930, 9690520, -18847928, -4813048, --12856985, -22049826, 10982768, 1349694, 4051765, 26035018, -16678432, -15862388, 6779069, 27171036, --24004036, -14003741, 5952288, -6521371, 35265976, 28773596, -29964376, -9520869, -24458766, 1951526, -19981798, -9802726, -19681150, -6120329, -2214056, 7181186, -23200340, 6586333, 34968548, 5262946, --30212410, -36642512, 27807766, -34165392, -36450852, -12618077, 4695473, -8589935, 4379793, 1587527, --37418828, -22740778, -28578712, 4802847, 12928388, 2904472, 20892868, 18038326, 27038966, 6532109, -29741038, 11582990, 18640158, -12501576, -5540508, -12602508, -25795036, -20031728, -38995080, -24939264, --8644159, -24604794, 3454764, -3650722, -1874753, 6101001, 6134824, 481573, 16995722, -7553237, --16137266, 18669686, 1004486, -31889596, -13316546, -6326487, -35377644, -29528438, -26217018, -1039382, -11699491, -158914, -13775034, -5287105, 14061186, 5159867, 34141768, 2539400, -46352896, -19443854, --7937100, 3180423, 7462506, -9724343, -11824582, 12495134, -24945170, -9677098, -19604916, 10299332, --39129300, -30706332, -31328566, -32706712, 3276523, -21937082, -9004399, -34676492, 16458852, 37723772, -2510409, 17250736, -13398687, -9883257, 25905096, 10404558, 26076358, -43882756, 18227842, 32416266, --3899294, 37442988, -20746840, -57641144, -30587146, -504659, -6640557, 6305012, -21559662, 19891068, -27047020, -25190520, 21205328, -13689135, -18118320, -39900248, -17621178, -22757422, -16532940, -18066780, -16727287, 3158412, -37410240, -45509472, 33260764, 8490613, 10867341, -10059350, 1104344, -11664057, --1437740, 11472931, 14194330, 15541339, 36998460, 2348273, -30001420, 38989712, -6153615, -8487929, --19807316, 17398376, -33463700, -19283866, 15122580, -14430016, -26860188, -28489054, -29424820, -3620121, -585189, 5136244, -11381126, 35229468, 24511916, 18254, -19517406, -24411520, -35344360, 11059004, -2391223, -2512556, -7721815, 49095236, -2127620, -8439074, 13621489, 14622216, -36165772, 27870042, -18311594, 54825256, 24395952, 1727114, -17644800, 26397406, 140123, 2294586, -11869142, 24082956, --26867168, 20435992, 19921668, 20669530, 10492068, -7117298, 27622008, 34089156, -6182606, 14239427, --20210506, 34245384, 15263777, 11609297, -20891258, -47169480, 10251550, -14335527, -9987410, -19069118, --23361938, 14766634, 7464653, -11677479, 3634079, 1203128, -11846057, -57884348, -2626373, -12310450, --4919885, -948114, 41869488, 27759984, -12517682, 10361072, -25759066, 2788508, 21298206, -31005368, --27288612, -23784456, 38212860, -26986354, 9006010, 29141890, -38611220, -37782292, 35667020, 26466126, -30249454, 37476276, 15805480, -50180788, 12792560, 13221520, -2498060, 78604344, -6289443, -14182519, --34020436, -33870112, 18698676, -32354526, 21883932, 1163936, 25046638, -7883950, 13600551, 41763724, -4947266, -32806570, 50597400, 13395466, -1646583, 36403068, 18945638, 29713658, 12208445, -40563280, --7574175, -14282377, 21451214, 50349900, -29329794, 9292162, -13181255, 23161148, 26774290, -31685584, -29309394, -25211458, -22107808, 13430363, 24465744, 2230699, 9323837, 18909130, -24931212, 24808804, -3681324, 29976188, -3264175, -6480569, 11259257, 43746928, -17268990, 35506496, -14776835, 7938174, -10936597, 35377644, -81604, -1364726, 13816373, 52719648, 5407901, -39852464, -1287953, -48213156, -31376884, 653909, 82158432, 17585206, -21324512, -6800544, 19834158, -17570174, 30296700, 52240224, -38001872, 531502, 17479980, 22108344, -234613, -25222196, -900869, -6915434, -81031000, 50061064, -41704668, 32771674, 11785390, -40563820, 32202592, -18741090, 32720134, -28560458, 5573257, 16143708, --14481019, 2996277, 6586333, -7140920, -15214385, -28748364, 45683956, -9172976, -8442295, -14081587, --2103460, -5189931, 15086073, -29313152, -8399882, -17899276, 6862284, -17956184, 18657874, 1081258, -9734007, -19832012, -38165616, 3110630, -27856622, -27990838, 13484587, -21111374, -18871012, 38565584, --13590887, -20221780, 2908230, -20784420, 10581726, 15608448, -3996467, -16593069, -5247913, 12319577, -9415105, -6547141, -734439, 34533148, -5789616, -18357228, -25618944, -1793149, -11200201, -36684928, -36315024, 14530948, -44270376, 29351806, -1842541, -16530792, 85505280, 50136764, 39565240, 22942642, -12405476, -18194556, 3776350, 11351062, 10992969, 5586142, 38842612, 9705552, -8486855, -18103824, --68838128, -38284800, 66773856, 9198209, 22436910, 12569759, -15531675, 13040058, 19417010, 5396627, --1045288, -15187541, -1938641, 5248450, -6587943, -4923107, 3644280, 8137353, 20080582, -12570832, -8972187, 1493038, 16227460, -4708358, 3957276, 5737003, -16660715, 14986752, 3263102, 4210142, -6095633, 5941551, -10177462, 12530030, -8625368, 3062849, 12386149, -5588290, 12178380, -4224637, -15101105, 11491722, 7395397, -16889422, 14114873, 10448582, 9026948, 22260278, -19799800, -1339493, -938450, -3984119, 7549479, -10370199, -16145319, 12283606, 14643154, 7102266, -424128, 3175055, --599148, 7263864, -4778151, 3056406, -11528766, 11865921, -18596134, 18937048, 11943767, -6340446, -1195075, 7719667, 2094870, 6803228, 1759863, 552977, 1149441, 12639552, -52721796, -122738352, --19666118, 71656696, 65118684, 160322544, 83769576, -43326556, -13273060, -89010512, -150811872, -10590852, --68512784, -9746355, 109944720, 46716896, 84972168, 130108520, -15077483, -19344532, -66100084, -112850800, --89385248, -6057515, -33487324, -13050795, 93700080, 29335164, 61030948, 110219064, 18326626, -818191, -11682311, -67638752, -101563088, 17085380, -104933568, -69267088, 23667418, -11036455, 17445620, 134941968, -15909096, 51410760, 110976584, -22559852, 3867618, 24100136, -106128640, -89481888, -30991410, -121936272, --46433964, 14818174, 23050016, 82888040, 118359632, 83191904, 59947544, 50856172, -18800146, -71845136, --57461292, -88676576, -91294896, -40419400, -22210886, -261456, 78885664, 91531120, 30698278, 71353368, -23435490, -23566486, 18785650, -49638012, -52439404, -7990787, -8610336, 0, 0, 0, -0, 0, 0, }, +1883343, -196495, -1462973, -2813204, -2139431, 2573222, 3369939, 1700270, 2755222, 520228, +-1939715, -264141, 151398, -2012192, -2039573, -3981435, 5708549, -2593624, 4967130, -3507378, +-4341138, 590021, 6983080, -468688, 2850248, -793495, 1972464, 2929168, 2231236, 3717294, +2377801, -6961605, 403727, -3833795, 1169305, -1810329, -858993, -1358820, 253403, -590558, +-1314797, 52076, -687732, 3553549, 1048509, 379031, 2974265, 2844879, 546535, -1574642, +-1372242, -1493575, 1649804, -103079, 222801, -2730526, 7178501, 3269544, 1732482, -1275605, +-1525787, 3157875, 827318, -269509, 975494, -1576790, 907312, -2250026, 74088, 1873680, +-3071439, -2076617, -1116155, 148176, 403190, 1709934, -7948374, 3591667, -9015673, 1557463, +460635, 381178, -6212670, -2307471, 1474248, -1489817, 1777580, 2974265, 1707250, -245350, +2284386, -6976101, -26844, -424128, -361314, 3588445, 5501316, -6128382, -1537061, -3775276, +-1379221, 1978906, 3709778, 488016, 769336, -1613834, -2148021, -1723893, -1411434, -2854543, +1283122, -2872260, -2056216, 2993055, -2870112, 2116882, 163209, -6862284, -2493766, -3829500, +-1099512, 2758980, -2203318, -690416, -2170569, -2122251, -1627793, 2715493, 4051228, 707596, +2160369, 1814624, -2469069, -4345433, 2097018, 1852742, -1140314, -3717831, -3279208, 2772402, +367220, 2095944, 801011, -5626944, -2056216, -2022930, 2958696, 1415729, -5865852, 1745904, +-3164317, -505732, -10730439, 7495255, -4997732, 955630, -447750, -1778653, 5821292, -4675609, +-2989834, 209917, 6150930, -1974611, -60666, -428423, 5148055, -2736431, -7503308, -1538672, +-3710315, -5260261, 510564, -250182, 1216550, 3330210, 5513665, 3410741, 833224, 8107825, +3430605, 433255, 6010270, 6098854, -119722, -3044595, 592706, 2774012, 2474438, 99858, +-757525, -4467840, -3665755, -1859721, 4952634, 2012729, 8246337, 4556961, 85899, 2741263, +3637837, 1184337, -4398047, 5378910, -1605244, 2862596, 293132, 1772748, -5273683, -823023, +-1293859, 2151242, -1192390, -2090575, 6663642, -319975, -3892314, 1897302, -2757369, 2933463, +-1188632, 4659503, 4754529, 4507568, 2428267, -3955665, 3458523, -165893, 3766686, 2091112, +2367064, 19864, -2226941, 2187749, 810138, 579821, 1006096, -8803609, 2734821, -5660767, +843424, 1657321, 1814087, -2678449, 4544076, 584652, -1768990, -948114, 5323612, 3703336, +-2396592, -3178813, -2521683, 1909113, 3773129, -2488934, -2564096, 558883, -9877351, -219580, +-4231080, -1861868, -4204236, -5689758, -694711, 4766340, 1357747, -4692789, -1196148, 4031901, +1286343, -2986613, 4831302, -2359011, -6730751, -2274185, 3795677, -1949378, 4495757, 8266202, +6946573, 656056, -61740, 2103997, -1008244, -5378373, 103616, 1559073, -3556770, 2688113, +-7102266, -1451162, 528818, -3442416, -2245194, 2707977, 6368363, -5337034, -4981625, 2726231, +3362423, 5428302, 2097018, -3860102, 4960151, 3913789, 14904073, -5622649, -2410014, -825707, +10777147, -938987, 8178692, -5739687, 7219840, -6908992, -6053757, 1605244, 3477313, -4029753, +-908386, 2241973, -433255, 2885681, -4173098, 5061082, 1891396, -5178120, -99321, 2245731, +1758252, 1066226, 10122701, 8109972, 6344204, 117038, 4145717, 497142, 1253594, 3118683, +-9175661, -1300301, 5711770, 3783329, 4443144, 8590, -1580548, 2153926, -312996, 11420318, +-1668595, 2017024, 1169842, 662499, -3321084, 6891812, -757525, 7161321, -3884261, -3963718, +2909304, -2602213, -9441412, -4221953, 1850594, -775242, -6797860, 2005213, -67109, 8897025, +656056, 909459, -2818036, 3360275, 3063922, -516470, -716723, 7948374, 5420249, 5954436, +-3954591, -4792110, -4576825, 10654203, -8818105, -441308, -9205726, -6151467, -3699041, 7571491, +4402879, -11134703, -15051176, -5988258, 5084168, 3462818, -2387465, 4815732, -100395, -1559073, +437550, -8125005, 2222109, -1343788, 527744, 2147484, 411780, -364535, 3177202, 2536178, +-5297842, -5543729, 5825050, -2248952, -2993592, 3235184, -10250476, 2022393, 2060511, -9796284, +3358128, 9270687, 5834713, 6209449, 1332514, 3205119, 9192841, 1239098, 1745367, -11083163, +5583995, 7434052, 6535330, 692564, 6652905, -8120710, 7462506, -2844879, -7348689, -12071006, +-32212, -7952669, -5757941, -3243774, -6834904, -18136574, 907849, 70867, -391916, 1804423, +8773008, 2237678, 3736085, 1210107, -5828808, -280247, 3403762, 1128503, 2962991, -23587960, +11426760, 1363652, -9243843, 2090575, -1132798, -2814277, -1992328, -5287642, 2640868, -2770791, +411243, 3258807, 2983392, 10043781, -4243965, -9833328, 5149129, -12436078, -5447093, 1891933, +1557463, 1287953, 3852586, 4827543, 4121021, -204011, 5498632, 253940, -2376191, 7373922, +4502200, -2390686, 4316979, -7852274, 14496588, 445066, 2589865, -1478543, -12690555, -2280091, +-4801774, -4503810, 1826972, 10366977, 178778, 338766, -1461900, -2987150, -6884296, 2048163, +-1214939, 3652870, -8628589, 2788508, 4479651, 1911261, -6385006, -2337536, 1633698, 729608, +5120675, 922881, 17815524, -5158793, -7507066, -8693014, -2467996, 114890, 6582575, -8632347, +-737661, -3690451, 4545149, -12437152, 601832, -2719788, -3322694, 10277320, -3720516, -2855617, +1973538, 2794413, -8853001, -8965207, -8189966, -7761006, -12426414, 7295002, -7390565, 1788317, +2658585, 10661719, -2107218, -2991445, 8356396, 1623498, 1533840, -10524280, -6914898, 4594005, +1898912, 3565360, 5701569, -11087458, -137976, 4146254, 9942849, -527207, 717796, -1967095, +-233539, -7409356, -1554778, -2616172, -13191455, -1500017, 3740917, -7909183, 2971581, -8573292, +-252866, -6091338, -1349694, -2251100, 542240, 9937481, -3228205, -391916, 5188858, -3541738, +2981244, -9237401, -15606837, -8979166, -4816269, -2786360, 1535451, 9700184, -4942434, 2131378, +2445984, -8077760, 2472291, -6389301, -2010045, 3092377, 10515154, -2285996, -449361, 2723009, +-30602, -10191421, 10588705, 11098195, -3041911, 1269163, 11639361, -11297911, -10002442, 8950175, +-1796370, 1440962, 8184060, -1310502, -1865090, 8131984, -14308684, 6467147, -355409, 2713346, +7418483, 7570954, -7866770, 1786170, -10921028, 3690451, -3060164, -972810, -7493644, -171799, +-10878615, 1313186, -9380209, 7030862, -3067144, 1512365, 12474196, 5849209, 5781563, -9457518, +2140504, 11467563, -2297808, -15754477, 8943196, -1725503, 1935957, -2916820, -7034083, 10786273, +4174708, 8835285, 2531883, 1484448, -6711424, -8966281, 3703336, 4562329, 5005248, 6387153, +14521821, -199179, -10594074, -6854231, 8872329, -926639, -9088688, -2158221, -275415, -2225330, +-11676942, 562104, 1795296, 3381213, -4308926, 7288560, -635655, 1068373, 8588324, 8034810, +-10187126, 11531450, -2817499, 12206297, -10300405, 8983998, 834297, -1162326, 15266461, -8260296, +754304, -8025147, -2499671, 23332410, 11192148, 4796405, 3244311, 6491306, -3917547, -234076, +-20047834, 3491272, -981937, -8808441, 9390946, 6949794, -442382, 1491964, -11637214, 9922448, +-5506685, 10550050, 6914898, 5535676, -8378408, -1659468, -7061463, 10122701, 2257005, -3968550, +18192408, 8546448, -2178085, 758599, -15276662, 2375117, 601832, 11852499, -5508296, -15619722, +-2743947, -4453344, -3081639, -21981642, -10940355, -23390392, -11895986, -8451422, 2681670, -5971615, +10927471, 1260573, -12561706, 7492034, -8390755, 11830487, -10546292, -8537858, 6244346, 10697153, +10526965, 329639, -9549860, -7174206, 5122822, -15169824, -17877264, -12092480, -2405719, -963683, +-3003256, 3329674, 5397164, 3565897, -806917, 1577327, -6246493, 2840584, -11851425, -16088411, +-358093, 11064909, 1207960, -4864588, 8558259, 4866198, 8239358, 14648523, 1090385, -5457293, +-10712722, -8552354, 3546032, -9700184, -7195681, 1595044, -8099235, -16394427, -9606231, -1591822, +-2860448, 2935073, -4595615, 7945690, 1419487, 2550137, 10879152, -2678449, 250182, 2022393, +-10807748, 10537702, 599685, -11253351, -18433462, 3549254, 168041, -13267691, 11732777, 7697119, +-13037373, 3023657, 9482214, 5312338, 1289564, 8234526, -5990943, -4717485, -1214402, -6165963, +-10208600, 12787728, -14677514, -2659122, 2732673, -234076, 18907520, -20478940, 2547989, -4450123, +-3968550, 3050501, -1646046, 2463701, -4757213, -11759620, 9257265, -20785494, -14919106, 10040560, +-1072131, -18988588, 8858370, -11361262, 20248086, 3559991, -27966680, -4093104, 1927367, -7530152, +1501091, 4166118, 9168145, 7716983, -16470126, -1308354, 938450, -3911642, -15133317, -2865280, +-3571265, -5618891, -4990215, -817654, 541703, 11810623, 13066364, -4816806, 6792491, 5731097, +5653788, 12964896, -357556, 3062312, -16142635, -5941551, 4975720, -3652333, 7012071, 18054432, +2214056, -16824460, -36824512, -603980, -11722576, 9804873, -7398081, -4174708, -7676181, -20055350, +7980586, 25799868, 969052, 6503118, -21145198, 3948686, -2935610, -9494025, 1730335, 9921911, +4564477, 8125005, -9552544, 13238700, 6906308, -14565308, -23190140, -118648, -16962436, -39697844, +-25130390, 17860622, 14298483, 23447838, -262530, 9220758, 2095407, 7401840, -522375, 4788889, +-10665478, -12466143, -8023536, -11134703, -7508677, -7895224, 9251896, 22701050, 4597763, -27461484, +-6916508, 4981089, -7714298, 6911676, -16182363, -1076963, -973884, 1144609, 7218767, 6083821, +583579, -1613834, -4048544, 6736120, 11921755, -9652939, -16103443, 10703595, 4293894, 13955959, +5526013, 20136418, -14309220, -4286378, 11835856, 19302120, 15533823, 10233296, 3773129, -3397319, +372052, -1684701, -841814, 7241315, -25487410, 13981192, -2956548, 4440996, -2705830, 19567872, +-6832756, 759136, -5304822, 12947179, 8731132, -19661824, 13638669, -16393353, -2338610, -7445863, +-10431402, 9924596, 60130, -25675852, -3426847, -143345, 22280680, -24150602, -248034, -13606993, +-38875896, -4353486, -14135274, -30666604, 6525666, 66035, -5660767, 2203855, 16991428, -824097, +-17201880, 6276558, 1096290, -5411122, -3830037, -2903935, 1300301, 19385334, -3875134, -489626, +9140764, 6638946, -2303176, 9480067, 8963060, -3899294, -3534758, -7513509, 11171747, -2371896, +-17832168, 2971581, -665720, 6467684, 24634858, -15912317, -25161530, -16110959, -6896644, 3686156, +9251896, 4677757, 19006304, 9247601, -12179990, -7376070, -16837882, 15300821, 10193031, 1730335, +4101694, -10094247, 1986422, -10712185, 19450296, 18053896, 2356863, -8546985, -3540127, 1626719, +18067854, 33313914, 22035866, -3488050, -5932961, 47782, 12462384, 4094715, 11966316, 12914967, +-10797548, -1349157, -21802328, -14087493, 8704288, 10142565, -17408040, -501974, -8182987, 16160351, +-14177687, 4843113, 3119757, 29945048, -15707232, -3331284, -16205985, -2093260, -15988016, -13087302, +-9022116, 7356205, -17329120, -12002823, -18993956, -3462818, -1400696, -4498442, -7641821, -21227876, +7751342, -14446123, 8313983, -15232102, 22821308, 5153961, 11182484, -2148558, -18172544, 12607876, +7908646, -4729296, 12397960, 16906066, -6311455, -19419694, -9729175, 30800284, -10517301, 1154809, +2516314, -2744484, 8106751, 20804822, 5106716, 10149008, -4182225, 15608985, 2022393, 12843563, +5056250, 5982353, 1556926, 3580392, 24703578, 9512816, 56512644, -30579630, 23255638, 32778116, +-5852967, 3747896, 17541184, -7857106, -1067299, 28723130, 12241194, 113280, 15738908, -82141, +29037738, 32646046, -871878, 23256712, 22988812, -2528662, 9546639, -25665114, -9070434, 20626580, +557809, 20395190, 28451474, 23710366, -6563247, 15167677, -26779658, -40115532, -18464064, -15533286, +7712151, -751619, 8323110, 10162966, 21790516, 17568026, 4490925, -19362250, -4211753, 18075370, +4021700, -9735080, 9975062, 25271050, -5014911, 8528194, -23208930, 9690520, -18847928, -4813048, +-12856985, -22049826, 10982768, 1349694, 4051765, 26035018, -16678432, -15862388, 6779069, 27171036, +-24004036, -14003741, 5952288, -6521371, 35265976, 28773596, -29964376, -9520869, -24458766, 1951526, +19981798, -9802726, -19681150, -6120329, -2214056, 7181186, -23200340, 6586333, 34968548, 5262946, +-30212410, -36642512, 27807766, -34165392, -36450852, -12618077, 4695473, -8589935, 4379793, 1587527, +-37418828, -22740778, -28578712, 4802847, 12928388, 2904472, 20892868, 18038326, 27038966, 6532109, +29741038, 11582990, 18640158, -12501576, -5540508, -12602508, -25795036, -20031728, -38995080, -24939264, +-8644159, -24604794, 3454764, -3650722, -1874753, 6101001, 6134824, 481573, 16995722, -7553237, +-16137266, 18669686, 1004486, -31889596, -13316546, -6326487, -35377644, -29528438, -26217018, -1039382, +11699491, -158914, -13775034, -5287105, 14061186, 5159867, 34141768, 2539400, -46352896, -19443854, +-7937100, 3180423, 7462506, -9724343, -11824582, 12495134, -24945170, -9677098, -19604916, 10299332, +-39129300, -30706332, -31328566, -32706712, 3276523, -21937082, -9004399, -34676492, 16458852, 37723772, +2510409, 17250736, -13398687, -9883257, 25905096, 10404558, 26076358, -43882756, 18227842, 32416266, +-3899294, 37442988, -20746840, -57641144, -30587146, -504659, -6640557, 6305012, -21559662, 19891068, +27047020, -25190520, 21205328, -13689135, -18118320, -39900248, -17621178, -22757422, -16532940, -18066780, +16727287, 3158412, -37410240, -45509472, 33260764, 8490613, 10867341, -10059350, 1104344, -11664057, +-1437740, 11472931, 14194330, 15541339, 36998460, 2348273, -30001420, 38989712, -6153615, -8487929, +-19807316, 17398376, -33463700, -19283866, 15122580, -14430016, -26860188, -28489054, -29424820, -3620121, +585189, 5136244, -11381126, 35229468, 24511916, 18254, -19517406, -24411520, -35344360, 11059004, +2391223, -2512556, -7721815, 49095236, -2127620, -8439074, 13621489, 14622216, -36165772, 27870042, +18311594, 54825256, 24395952, 1727114, -17644800, 26397406, 140123, 2294586, -11869142, 24082956, +-26867168, 20435992, 19921668, 20669530, 10492068, -7117298, 27622008, 34089156, -6182606, 14239427, +-20210506, 34245384, 15263777, 11609297, -20891258, -47169480, 10251550, -14335527, -9987410, -19069118, +-23361938, 14766634, 7464653, -11677479, 3634079, 1203128, -11846057, -57884348, -2626373, -12310450, +-4919885, -948114, 41869488, 27759984, -12517682, 10361072, -25759066, 2788508, 21298206, -31005368, +-27288612, -23784456, 38212860, -26986354, 9006010, 29141890, -38611220, -37782292, 35667020, 26466126, +30249454, 37476276, 15805480, -50180788, 12792560, 13221520, -2498060, 78604344, -6289443, -14182519, +-34020436, -33870112, 18698676, -32354526, 21883932, 1163936, 25046638, -7883950, 13600551, 41763724, +4947266, -32806570, 50597400, 13395466, -1646583, 36403068, 18945638, 29713658, 12208445, -40563280, +-7574175, -14282377, 21451214, 50349900, -29329794, 9292162, -13181255, 23161148, 26774290, -31685584, +29309394, -25211458, -22107808, 13430363, 24465744, 2230699, 9323837, 18909130, -24931212, 24808804, +3681324, 29976188, -3264175, -6480569, 11259257, 43746928, -17268990, 35506496, -14776835, 7938174, +10936597, 35377644, -81604, -1364726, 13816373, 52719648, 5407901, -39852464, -1287953, -48213156, +31376884, 653909, 82158432, 17585206, -21324512, -6800544, 19834158, -17570174, 30296700, 52240224, +38001872, 531502, 17479980, 22108344, -234613, -25222196, -900869, -6915434, -81031000, 50061064, +41704668, 32771674, 11785390, -40563820, 32202592, -18741090, 32720134, -28560458, 5573257, 16143708, +-14481019, 2996277, 6586333, -7140920, -15214385, -28748364, 45683956, -9172976, -8442295, -14081587, +-2103460, -5189931, 15086073, -29313152, -8399882, -17899276, 6862284, -17956184, 18657874, 1081258, +9734007, -19832012, -38165616, 3110630, -27856622, -27990838, 13484587, -21111374, -18871012, 38565584, +-13590887, -20221780, 2908230, -20784420, 10581726, 15608448, -3996467, -16593069, -5247913, 12319577, +9415105, -6547141, -734439, 34533148, -5789616, -18357228, -25618944, -1793149, -11200201, -36684928, +36315024, 14530948, -44270376, 29351806, -1842541, -16530792, 85505280, 50136764, 39565240, 22942642, +12405476, -18194556, 3776350, 11351062, 10992969, 5586142, 38842612, 9705552, -8486855, -18103824, +-68838128, -38284800, 66773856, 9198209, 22436910, 12569759, -15531675, 13040058, 19417010, 5396627, +-1045288, -15187541, -1938641, 5248450, -6587943, -4923107, 3644280, 8137353, 20080582, -12570832, +8972187, 1493038, 16227460, -4708358, 3957276, 5737003, -16660715, 14986752, 3263102, 4210142, +6095633, 5941551, -10177462, 12530030, -8625368, 3062849, 12386149, -5588290, 12178380, -4224637, +15101105, 11491722, 7395397, -16889422, 14114873, 10448582, 9026948, 22260278, -19799800, -1339493, +938450, -3984119, 7549479, -10370199, -16145319, 12283606, 14643154, 7102266, -424128, 3175055, +-599148, 7263864, -4778151, 3056406, -11528766, 11865921, -18596134, 18937048, 11943767, -6340446, +1195075, 7719667, 2094870, 6803228, 1759863, 552977, 1149441, 12639552, -52721796, -122738352, +-19666118, 71656696, 65118684, 160322544, 83769576, -43326556, -13273060, -89010512, -150811872, -10590852, +-68512784, -9746355, 109944720, 46716896, 84972168, 130108520, -15077483, -19344532, -66100084, -112850800, +-89385248, -6057515, -33487324, -13050795, 93700080, 29335164, 61030948, 110219064, 18326626, -818191, +11682311, -67638752, -101563088, 17085380, -104933568, -69267088, 23667418, -11036455, 17445620, 134941968, +15909096, 51410760, 110976584, -22559852, 3867618, 24100136, -106128640, -89481888, -30991410, -121936272, +-46433964, 14818174, 23050016, 82888040, 118359632, 83191904, 59947544, 50856172, -18800146, -71845136, +-57461292, -88676576, -91294896, -40419400, -22210886, -261456, 78885664, 91531120, 30698278, 71353368, +23435490, -23566486, 18785650, -49638012, -52439404, -7990787, -8610336, 0, 0, 0, +0, 0, 0, }, }, { { 7561827, -1618666, -2086280, -746787, -6973417, -3740917, 1630477, -356482, -369367, 6088116, 5115306, -1120987, -1479616, -1249299, -3369402, 3058017, 338766, -2038499, -1047972, -1949915, -907312, --500901, -4602595, -4224101, 3770981, 3504693, 1509681, -4344897, -2013266, -1016297, 1904281, --1606855, -2148558, -381715, 188442, 901406, 2044404, 410706, 2925410, -3751654, -3474629, --4669703, -3411815, -1887101, 437550, -613107, -647466, -1973538, 718333, -550293, 396748, -3310346, 2478196, -1255204, -2485712, -1812476, 970663, 764504, 326418, -275952, 6504728, -3992172, 630823, -1284732, 319975, -3777961, 233539, -250182, 1034013, -593779, -2095944, -3583613, -4563403, 215822, 440234, -448824, -4526359, 4527433, 1053878, -2632815, -1228361, --5730023, -1608465, 4591857, -2592550, -1927904, 1347009, -849330, -278636, 180926, -1602023, --1324461, 5603322, 2654827, -794032, 158377, -947577, -1825898, 686658, 1913408, 3040300, --928250, 1102196, 1319629, -5147519, -1680406, -108448, -1137093, 2997887, 143881, -1161789, -2646237, -2225867, 797253, 4225174, -2548526, 172336, 426812, 3180423, -1423245, 4424353, --6585796, -2452426, 2626909, -1385127, -5618354, 274878, 912681, 1693291, 1674500, -712965, --2542084, 71404, -2334315, -1584306, 417149, 2550137, 2252174, -3784940, 2949569, -4139812, -3285113, 17180, 2826625, -1417339, -2887829, -1375463, 1741609, -676994, -935766, -955093, -2390686, -3439195, -15290084, 5016522, -5557151, -2218888, -4547834, -4678293, 2660195, -1566589, --3939022, -2129230, 5374615, 7964480, -4351339, -1635846, -374736, -5757941, -5382131, 389768, --527744, 3492882, 1203128, 2596308, -2279017, -1460289, -2957085, 820876, 5177046, 2214056, -1033477, -3340948, 2552821, 738198, 1580548, -2190433, 235149, 736050, 1204202, -2968896, --2101313, 779537, -4006668, -4181151, 1844152, 3124052, -3475166, -1810329, -1292248, 226560, -3221762, 2504503, 1183800, 448824, 8220568, 3161633, -2461016, 3134789, 2369211, -2285996, -3965866, -1458141, -821949, -48855, -1516124, 3384434, -1743757, 870805, 2257005, 1624571, --2805151, 1174674, 838592, 594853, -733366, -1524177, -216359, 4741107, 894964, 2075543, -11718818, 4722317, -727460, 611496, 2749316, 1478006, -703838, -4943508, 245887, 4546223, --4493610, -426276, -8506183, 2340220, 3581466, 319975, -1962800, 6366216, 4497905, -3958886, -2040110, 325881, -3463891, 5691906, 3173981, -275415, 2348810, 5428839, -1568737, -1012539, -444529, 122943, 216359, 1373853, 6645925, 1413044, 1069447, -10507101, -468151, 576063, -1360968, -4702989, 1206349, -3775276, -2871723, -3998615, -2573759, 117575, 1334124, -2407866, -2605435, -5997922, -3389803, -281320, 31139, 2042257, -2325188, -482110, -2091112, 1404991, -3420942, -1917703, 481036, -1657857, -183610, 5172215, 4139275, -1571958, 3889093, -1778117, --3066070, -4014184, -172336, -453119, 18713710, -7641284, 1861332, -322123, -3035468, 3266323, -5501853, -2994129, 5890548, 44560, 6260989, 1985349, 2444373, -2194728, 3709241, 1643899, -3791919, -6874632, 4239670, -3920768, 1709934, -3234647, 4909685, -882616, 4946729, -2327336, -2066416, -1400159, -5906, 159451, -64425, 2159832, 9892920, 787590, 3195993, -2254858, --3980898, 561567, 512175, 566936, 1881733, -2661806, 6673306, -2147, 5679021, 763967, --1781875, -2445447, -7337952, 4264903, 3059091, -3229816, 938450, 3581466, 2221572, -8657580, -6028524, 173409, 4487704, -4971962, -5240397, -2327336, -5038534, -480499, 7406134, 2006287, --1698660, 1091459, 4705674, -468151, -1916092, -617402, -2055679, 3634616, -3393024, 885837, --1075352, 4844186, -11213623, 2333241, -3497714, -10256382, -7873212, 4244502, 4765266, 6212134, --2994666, -1573569, 4334696, 2050310, 6446746, 2083059, -624918, 656593, 4155381, 7918846, --1930051, 2304250, 6979, 6407555, 1585917, -404801, -1170379, -4913443, -7320772, 59056, --939524, 2211908, -283468, 1722819, 1450088, 419833, 631897, 1443646, -2379412, 242129, -3711926, 5491116, -2529736, 606664, -2197950, -3237869, 4777078, -3571802, -8533026, -3502546, --2016487, 4134443, 587337, 4564477, 4489315, -2322504, 452582, -3708704, -222801, -1641214, -5729487, -6925098, 122407, 2215130, -6898791, -8243116, 495532, 2425583, 5562520, -3691525, --8185134, 4412542, -7472170, 9227737, 5803038, 1502165, 4613869, 186294, -1809792, -25173878, -4872104, 1001801, -12775380, -16048145, -2804077, -12446815, 9645960, 2585034, -7616588, 208306, --3688303, 853088, -5287105, 395674, -556735, -186294, 6716255, -2739652, -1901060, -3153580, --2843805, -6826314, -4691178, 6378564, -3004330, 3951370, -3956739, 1583232, -164283, 3555696, --4121021, 2644089, -4138738, 1472637, -1755568, -2617246, 2114198, -6361384, 2089502, -3330210, --1405528, -4664335, 10543071, 4974109, 9209484, -4212826, 3722126, 3064459, -2163590, 1545115, --4773856, 4639102, 10123238, 8114267, -6010807, -1626719, 2155537, -4215511, -3069291, -7301982, --13875429, -4613332, 6684580, 2549063, -3641059, 1479616, 426276, -3524558, -6747394, -6225555, -4340602, 1005559, -10281615, 1839320, 712965, 1120450, -9660455, -3973919, -2429878, 7460358, --1833951, 1832877, -7484518, -7860864, 524523, 2372433, -4508642, -2597918, -4215511, 9090298, -2145336, -2975876, -6430640, -6458557, -6191732, -1730872, 3230889, 9102109, 3125663, 5149666, --3882651, 9675488, 5713380, 1787243, 312996, 9934796, -5593121, 940061, 3364570, 6710350, --10654740, -5558225, 4978941, 1883343, -1262184, 11303817, -4710506, 3163780, 7094749, 2072859, -1412507, 4933307, 2301029, 2412698, 2823404, 999654, 3219078, -263604, 4614943, -1111323, -10897943, -7827041, 9030169, 6795175, -5719823, 6712497, 1596654, 5667210, 6241125, -13139916, -8590, -720481, -3533684, 1853278, -3129421, 3354906, -1048509, 8008504, -419296, 1034013, -3986804, 2057289, 13139916, -3268470, -1861332, -3013993, 9392557, 5029407, 1129576, 3708704, --6117644, 14014478, 4711579, -897648, 5345624, 6880538, -11167989, -548682, 2788508, 1537061, -96637, 9778030, -4486630, -5567888, 13249974, 2229088, -835371, -1055488, 6963753, 788127, --908922, -1017370, -3107409, 3710315, -1898912, 4866198, 3291556, -7973607, -7778186, 1308354, -15586973, 155693, 3231426, -9216463, 4785668, 6749004, -3906810, 5121212, 5914707, -9288404, --5879810, -776315, -12392591, -6128919, -7384123, 2685428, -2510409, -2219424, -1335735, 9325985, --11964705, 5927055, 2627983, -3202972, 7339026, -3929358, 718333, -9228274, -199179, 7042673, -5480915, 12561706, -13538811, -2065879, -15029701, -1614908, -282394, -1399086, 1862942, 9161165, --9638980, 635655, -5794448, 17329120, -6899865, -3816079, 15040975, 11441256, 2346663, -20249160, --4734128, 9793062, 1045288, -656593, -2655901, -1285269, -1335198, 1777043, 3450469, 3249680, -3023120, 18575734, -3551401, -2293513, 261456, 2735894, -5193689, 3563749, 2167885, -316217, --5756330, -3389803, 6798933, 7424388, 13551159, 3792456, -5297842, 3759170, 10737, 3811247, -417686, 7806103, -6016176, -8795556, -9351218, 6630356, -2588792, 1726577, 2564096, -2951716, --562641, 16292958, 5444945, -12894029, 9502615, 3522410, 15994995, -7835094, -7959648, 5172215, -8473970, 6527814, 3086471, -875636, 163209, 4776004, -5699959, -786516, -484258, 7618735, --5862094, 14638859, -1859184, 1047435, -9335648, -5848135, -12484396, -10629507, -4317516, 3514357, -3590056, 18570902, 17982492, -2382633, 1168231, 561567, -175020, -447750, -4100083, -12505871, --9738301, -5087926, 4015258, -3640522, -11011759, -3234647, 1689533, -993748, -16711718, -5004174, -3277597, -1858110, 1199370, 955630, 4566087, 7042136, 810138, -5376762, 4955319, 5393405, -3532074, -348429, 6811282, -14473503, 4448513, -12824235, 15490873, -11341398, 3970697, -12012487, --2338073, -13396540, -7403987, -8355322, -9345312, 6141267, -8254391, -1533303, 2444910, -84289, --4544076, -2995740, -1698660, -12974559, 129923, 954020, 6193343, -20223390, 231391, -345745, -9284646, 11657078, -7917772, -4449586, 334471, 9185324, -16833588, 11353209, -7406671, -4189741, -1294933, -15042049, 2277943, -10454487, -25972204, -10862509, -5549635, 3589519, 6068252, -9085466, --3862249, -11229192, -9902047, 4005057, -8777303, 7461969, 2681670, 5109938, -1688996, -9054328, -13615583, 4798016, 7334194, -11120207, 3671123, 957778, -15554224, 8289824, 4871567, -387084, --10777684, -4851703, 4378183, 4348655, -858457, 857920, 6621766, -8063801, -5821292, 7510287, --17545478, -17751100, -22555020, -5972152, 6516003, -20354924, -16646219, -10842108, -200253, 5858336, -1709934, 853088, -151934, -6711424, -8167417, -19374598, 9176734, 1544041, 21675090, -6481643, -186294, -14906758, -16726750, 818728, 10229538, -570157, -10626823, 5469641, 2491081, 13666586, -1246077, 428423, -7485055, -2943126, 6231461, -16471736, -27733678, -9644886, -6885907, -23087060, --17648558, -7806640, 12925167, -523986, 21775484, 4803921, -1429150, -11360188, 4656282, 22622666, --22640920, -20047834, -6498823, -2747705, -14110041, 14397804, 4301410, 8163659, 9121437, -13669807, --1475858, 6618545, -8888435, 17903034, 443455, 4720706, -4798016, 5129802, -11129871, -5471252, --3761855, 7409356, 3128884, 11403675, -16937204, 2600603, -105764, -11538430, 13819057, -7095286, --20253456, 5215701, 7215545, 2742874, -6142877, -141197, -8560407, 2776160, 6709813, 4379256, --14038637, 6931541, -3413425, -13758391, -9384504, -17187386, 55298, -1178969, -925029, 4299799, -11080479, 16336982, 11395622, -4046396, -11090679, 5651103, -3422015, 584652, -8971650, 17460116, -11272679, 537, 21613886, -11873437, 5832566, 16989280, 8714489, -20347944, 2677375, 348429, --12851616, 1999307, -28695214, -24756192, -5895917, -90731, 1122597, -492311, -10187126, -219043, --2896419, 9345312, 1811403, -430034, 1730335, -21576306, 7502771, 4214437, 12037720, 5170604, -5184026, 14339285, 7000260, 2224793, 35376572, 7761006, 13544716, 18993420, 763430, 13452374, -3185255, -7180112, 8450348, 801548, 3955665, -7022272, 316754, -4486094, 2752000, -4468914, -9680856, 1401770, -6536940, -7552163, 689342, -20833812, 11798812, 8454106, -1560684, -1701881, -4250407, -5390184, -5274220, -6702834, -9058086, 7149510, -7482370, 11680164, 12405476, 13282186, -12807592, -3077881, -22462142, 463856, 7304129, 21374442, -6929930, -823560, 7550553, 14596983, -18445810, -3862249, 3992172, 18296560, 23477364, -15819975, -16567836, -22237730, 21878564, -1250372, --7409356, 8191577, 8053601, 20476794, 17342542, 2010045, 18928458, 26304528, 8331700, -11957189, -13291313, -10999948, -5523328, -1522029, -7171522, -9089225, 6420439, -4117800, -3747359, -11170136, -28841780, 4398584, -13399224, 944356, -681826, 13300977, 14396194, 6099391, -7232188, 14120242, --2185602, 9076340, -23810224, 2267206, 11943767, -9883793, 5115843, -10823854, -8067023, 26993332, -12386149, 8798241, -213138, -22142168, -3955128, 7620346, 6677601, 4672388, -3713536, 19301584, --11089069, 11138461, -4173635, 7679402, 9415105, 15472083, 21734146, -21926344, 1590749, 12632036, -8036421, 17362942, 18522584, -21965536, 2854006, -5594732, -8576513, -227633, -8148090, 5378910, -17432198, 34793532, 1430224, -16668231, 4629975, -11143293, 7121593, -9673340, -10524280, 31636730, --24113558, 39731668, 24199994, -5812702, 7876433, 19248432, 2644626, -29851096, 11609833, -24142548, -5613523, 2277943, -12144557, 649077, -1814624, 17470854, -8859981, -697395, -876710, -5081483, -36364952, -1894618, -5737003, 4941360, 12069395, -12224014, -26599270, 21043730, -3610457, -1302449, -23382876, -13621489, -4174171, -16254304, 4097399, -11237782, 13019656, 12714714, 24828670, -6822556, -6646462, 17271138, -24321326, 3389266, -15676094, -23560580, -31218506, -15650324, -33748244, -36825048, --5775658, 3019362, -18181670, -18286898, 11083163, -631897, -11330661, -19653770, 13920526, -10073846, -2887829, 19439558, -36078264, -9011378, -8042327, 16811038, 38653632, 1810329, -10536092, 10860899, --5412733, -16538845, -24306294, -18519362, 19733228, -16807280, 7743289, 18775450, 7792682, 11922829, --23223962, 32455458, 20244328, 17523466, -13627931, 23136988, -3016141, 15157476, 9772124, 3044595, -8012799, 10992969, 6466610, -4281546, -6365679, -5701569, 1834488, -16298327, -19214610, 9989557, -4043175, 5562520, -15964393, 3624416, 4015258, 10903311, 16433619, 25143276, -15285789, 3241627, -35876936, 7206419, 3107946, 2798708, -8429947, 1894618, 35567160, 9735080, 22650046, 5821292, --26351772, -11527692, -19548006, 51921324, 20329154, -21652004, -14114336, -19548006, 1720134, -13396003, --30251602, 5052492, -23347442, 30703648, -3887482, -28841242, 33724084, 26395796, 2516314, -10481331, -3589519, -19653770, 21769042, -25654376, 9453223, -4006668, 24412594, -52680460, -36208720, 20001662, -9419937, 6826851, 17084844, -18429704, -23560044, -13435731, -19446002, 10083509, -20809654, 5250061, -13291313, 21589190, 467078, 17949742, 10658498, 2286533, -6181532, -20395190, -13993540, 10572599, --24086714, 11327439, 2713883, 19509888, 15498926, -8542153, -29826938, -20316270, -1780264, -2455648, --7813083, 19406272, -35910760, -3817152, 1430224, -38784092, -500901, -5733782, -2720862, 2916820, -22448184, -22682796, -58875412, 20942260, 24678346, 13168907, 46857556, -39365524, -4192425, 24369108, -20465520, -25284472, -10177462, -8031589, 37507412, 5675263, 36011152, -51874080, 8757975, -61641908, --34314640, -36467492, 43143484, 11381663, -24443732, 22612466, 5265093, -24522116, 26060788, -33004140, -18403934, 45081052, 16787954, -16028281, -10353019, 6267968, -11237782, -13363254, -1387811, 20946018, --3405909, 3906273, -22000434, -4628901, 31005368, -22477712, 17293148, 40066676, 20384452, -1800665, --7326141, -13318694, -25314000, -19019726, 22495428, -12770012, 21153788, 14766634, 7543037, 761820, -8544837, -6644315, -32182726, -11595338, 23844048, 18214420, 19922742, -20978768, 36177584, -9528385, -14416595, -26728656, 24713242, 41128068, -7754027, -15233175, -904628, 1056025, -8584029, 8579197, -18843096, -34607236, 23070416, 21146272, -4591857, 24575266, 14079440, 10249939, -15192910, 2669322, -23287312, -48164300, -41529648, -18274012, 12016245, -22508312, -63534916, 26371100, 18426484, -8842264, --10205916, 179315, -3206730, -21945136, -58888296, -2376191, -1149441, 21820044, 28942174, 588411, --32752884, 43236900, -12222403, -30290256, 27023398, -4417911, -16508781, 20859582, 5535139, -4460861, -17585744, -24297704, 22884660, -8300561, 687732, -7144678, -6105296, -33867964, 13267154, -13012140, -5210869, -13672492, -1231582, -10244571, 9539659, -6083821, 36342404, 6253473, 23716810, -9499394, -5807333, 14847702, -6579890, 10161893, -2256469, 17927730, -1120987, -6449967, 28584618, -26103738, -14120242, 19283330, -11818139, 21832392, -13926968, -1058173, 11154030, -9280351, 25855704, 22826140, -4508642, 38326140, -24457154, -55904904, -9717900, -34971236, -23033910, 79471928, -2592013, 23533736, --4365835, -35304632, -1569811, 32258962, 47074988, 27271968, 47252156, -28194312, -9041980, -14494978, --29418916, 14117021, 25186226, -25196426, 31679142, -18055506, 4887136, 647466, 3818226, -23130010, --3109556, -20826834, -17288854, 844498, -6484864, -15474230, -5953362, 12776454, -13371844, 11870216, --6046777, 34283504, -14949707, 10905459, 2530810, -7330973, -26307212, -8826158, 20913270, 4737349, --6193343, 27859306, -19320374, -18859202, -2244121, 26747446, -22766012, -2012192, 5042292, 8232379, --25406880, 9149891, 9479530, -7832947, -26580478, 1983201, -20522428, 10483478, 5292474, 9727564, --40855876, -15928960, 24145770, 65531000, -28259274, -1995549, 5721434, -8625368, -17352204, 1920924, -53852448, 14709189, -4702453, -2014340, -13277355, -361314, -9905268, 23835994, 2042794, -9590125, --13058311, 4814122, 10789495, -16441672, 18015240, 10768020, 19731616, 8785356, 24208046, -39771936, -54405424, 8107288, 12904766, 13585518, -11740293, -13606456, 1178969, -4809290, 8300561, 18407692, --24201066, 8943733, -4591320, 7184944, 6695854, 4940286, 14808510, 11822971, -9960029, 10712185, -9298604, -7844221, -14211510, 5301601, -4639639, -11536282, 7997766, 6840809, -421444, -7251516, -844498, -5057324, -2238752, 1392106, 3810173, 6492917, -10494753, -796180, 9493488, -3097745, -8578660, 2416456, 6352794, 12581033, 4044786, -10984379, 1836099, 12096239, -5737540, 404801, -5976984, -17924510, -577136, -3625489, -17092896, 25527674, -5652177, 135291, 15046881, 3704409, --10359461, 5596343, -9892383, -714575, 8569533, -8256001, -3053185, 19728396, -18737332, 3947075, -2107755, 8807367, -8213588, 8681740, -2601677, 10290205, -3661997, 12674985, -53131968, -108212240, --13854491, 67985040, 52344912, 150028032, 72284296, -34963720, -30429844, -71128416, -124426280, -15766288, --48140676, -15018427, 88115016, 56022480, 60028612, 114415784, -3816615, -25409026, -42969000, -113292112, --62266824, -20202990, -20795694, 3040300, 51791936, 39788576, 42639900, 79759152, 47040628, -29529510, -42902428, -44923212, -104092288, 13175886, -69734160, -97704064, 38394324, -8592619, -17680232, 119651344, -39683888, 31613644, 103768560, -11369315, -19867982, 31153008, -68764576, -86369104, -22625350, -74026448, --65298536, 13583371, 14863271, 29368986, 90790776, 79415552, 49054968, 56803088, 11821361, -45678588, --47828756, -60763588, -81847048, -39247412, -19972134, -28785944, 26220776, 79008072, 53544820, 50583976, -44249436, -30819612, 2747705, 6346351, -50838456, -14061723, -7513509, 0, 0, 0, -0, 0, 0, }, +1618666, -2086280, -746787, -6973417, -3740917, 1630477, -356482, -369367, 6088116, 5115306, +1120987, -1479616, -1249299, -3369402, 3058017, 338766, -2038499, -1047972, -1949915, -907312, +-500901, -4602595, -4224101, 3770981, 3504693, 1509681, -4344897, -2013266, -1016297, 1904281, +-1606855, -2148558, -381715, 188442, 901406, 2044404, 410706, 2925410, -3751654, -3474629, +-4669703, -3411815, -1887101, 437550, -613107, -647466, -1973538, 718333, -550293, 396748, +3310346, 2478196, -1255204, -2485712, -1812476, 970663, 764504, 326418, -275952, 6504728, +3992172, 630823, -1284732, 319975, -3777961, 233539, -250182, 1034013, -593779, -2095944, +3583613, -4563403, 215822, 440234, -448824, -4526359, 4527433, 1053878, -2632815, -1228361, +-5730023, -1608465, 4591857, -2592550, -1927904, 1347009, -849330, -278636, 180926, -1602023, +-1324461, 5603322, 2654827, -794032, 158377, -947577, -1825898, 686658, 1913408, 3040300, +-928250, 1102196, 1319629, -5147519, -1680406, -108448, -1137093, 2997887, 143881, -1161789, +2646237, -2225867, 797253, 4225174, -2548526, 172336, 426812, 3180423, -1423245, 4424353, +-6585796, -2452426, 2626909, -1385127, -5618354, 274878, 912681, 1693291, 1674500, -712965, +-2542084, 71404, -2334315, -1584306, 417149, 2550137, 2252174, -3784940, 2949569, -4139812, +3285113, 17180, 2826625, -1417339, -2887829, -1375463, 1741609, -676994, -935766, -955093, +2390686, -3439195, -15290084, 5016522, -5557151, -2218888, -4547834, -4678293, 2660195, -1566589, +-3939022, -2129230, 5374615, 7964480, -4351339, -1635846, -374736, -5757941, -5382131, 389768, +-527744, 3492882, 1203128, 2596308, -2279017, -1460289, -2957085, 820876, 5177046, 2214056, +1033477, -3340948, 2552821, 738198, 1580548, -2190433, 235149, 736050, 1204202, -2968896, +-2101313, 779537, -4006668, -4181151, 1844152, 3124052, -3475166, -1810329, -1292248, 226560, +3221762, 2504503, 1183800, 448824, 8220568, 3161633, -2461016, 3134789, 2369211, -2285996, +3965866, -1458141, -821949, -48855, -1516124, 3384434, -1743757, 870805, 2257005, 1624571, +-2805151, 1174674, 838592, 594853, -733366, -1524177, -216359, 4741107, 894964, 2075543, +11718818, 4722317, -727460, 611496, 2749316, 1478006, -703838, -4943508, 245887, 4546223, +-4493610, -426276, -8506183, 2340220, 3581466, 319975, -1962800, 6366216, 4497905, -3958886, +2040110, 325881, -3463891, 5691906, 3173981, -275415, 2348810, 5428839, -1568737, -1012539, +444529, 122943, 216359, 1373853, 6645925, 1413044, 1069447, -10507101, -468151, 576063, +1360968, -4702989, 1206349, -3775276, -2871723, -3998615, -2573759, 117575, 1334124, -2407866, +2605435, -5997922, -3389803, -281320, 31139, 2042257, -2325188, -482110, -2091112, 1404991, +3420942, -1917703, 481036, -1657857, -183610, 5172215, 4139275, -1571958, 3889093, -1778117, +-3066070, -4014184, -172336, -453119, 18713710, -7641284, 1861332, -322123, -3035468, 3266323, +5501853, -2994129, 5890548, 44560, 6260989, 1985349, 2444373, -2194728, 3709241, 1643899, +3791919, -6874632, 4239670, -3920768, 1709934, -3234647, 4909685, -882616, 4946729, -2327336, +2066416, -1400159, -5906, 159451, -64425, 2159832, 9892920, 787590, 3195993, -2254858, +-3980898, 561567, 512175, 566936, 1881733, -2661806, 6673306, -2147, 5679021, 763967, +-1781875, -2445447, -7337952, 4264903, 3059091, -3229816, 938450, 3581466, 2221572, -8657580, +6028524, 173409, 4487704, -4971962, -5240397, -2327336, -5038534, -480499, 7406134, 2006287, +-1698660, 1091459, 4705674, -468151, -1916092, -617402, -2055679, 3634616, -3393024, 885837, +-1075352, 4844186, -11213623, 2333241, -3497714, -10256382, -7873212, 4244502, 4765266, 6212134, +-2994666, -1573569, 4334696, 2050310, 6446746, 2083059, -624918, 656593, 4155381, 7918846, +-1930051, 2304250, 6979, 6407555, 1585917, -404801, -1170379, -4913443, -7320772, 59056, +-939524, 2211908, -283468, 1722819, 1450088, 419833, 631897, 1443646, -2379412, 242129, +3711926, 5491116, -2529736, 606664, -2197950, -3237869, 4777078, -3571802, -8533026, -3502546, +-2016487, 4134443, 587337, 4564477, 4489315, -2322504, 452582, -3708704, -222801, -1641214, +5729487, -6925098, 122407, 2215130, -6898791, -8243116, 495532, 2425583, 5562520, -3691525, +-8185134, 4412542, -7472170, 9227737, 5803038, 1502165, 4613869, 186294, -1809792, -25173878, +4872104, 1001801, -12775380, -16048145, -2804077, -12446815, 9645960, 2585034, -7616588, 208306, +-3688303, 853088, -5287105, 395674, -556735, -186294, 6716255, -2739652, -1901060, -3153580, +-2843805, -6826314, -4691178, 6378564, -3004330, 3951370, -3956739, 1583232, -164283, 3555696, +-4121021, 2644089, -4138738, 1472637, -1755568, -2617246, 2114198, -6361384, 2089502, -3330210, +-1405528, -4664335, 10543071, 4974109, 9209484, -4212826, 3722126, 3064459, -2163590, 1545115, +-4773856, 4639102, 10123238, 8114267, -6010807, -1626719, 2155537, -4215511, -3069291, -7301982, +-13875429, -4613332, 6684580, 2549063, -3641059, 1479616, 426276, -3524558, -6747394, -6225555, +4340602, 1005559, -10281615, 1839320, 712965, 1120450, -9660455, -3973919, -2429878, 7460358, +-1833951, 1832877, -7484518, -7860864, 524523, 2372433, -4508642, -2597918, -4215511, 9090298, +2145336, -2975876, -6430640, -6458557, -6191732, -1730872, 3230889, 9102109, 3125663, 5149666, +-3882651, 9675488, 5713380, 1787243, 312996, 9934796, -5593121, 940061, 3364570, 6710350, +-10654740, -5558225, 4978941, 1883343, -1262184, 11303817, -4710506, 3163780, 7094749, 2072859, +1412507, 4933307, 2301029, 2412698, 2823404, 999654, 3219078, -263604, 4614943, -1111323, +10897943, -7827041, 9030169, 6795175, -5719823, 6712497, 1596654, 5667210, 6241125, -13139916, +8590, -720481, -3533684, 1853278, -3129421, 3354906, -1048509, 8008504, -419296, 1034013, +3986804, 2057289, 13139916, -3268470, -1861332, -3013993, 9392557, 5029407, 1129576, 3708704, +-6117644, 14014478, 4711579, -897648, 5345624, 6880538, -11167989, -548682, 2788508, 1537061, +96637, 9778030, -4486630, -5567888, 13249974, 2229088, -835371, -1055488, 6963753, 788127, +-908922, -1017370, -3107409, 3710315, -1898912, 4866198, 3291556, -7973607, -7778186, 1308354, +15586973, 155693, 3231426, -9216463, 4785668, 6749004, -3906810, 5121212, 5914707, -9288404, +-5879810, -776315, -12392591, -6128919, -7384123, 2685428, -2510409, -2219424, -1335735, 9325985, +-11964705, 5927055, 2627983, -3202972, 7339026, -3929358, 718333, -9228274, -199179, 7042673, +5480915, 12561706, -13538811, -2065879, -15029701, -1614908, -282394, -1399086, 1862942, 9161165, +-9638980, 635655, -5794448, 17329120, -6899865, -3816079, 15040975, 11441256, 2346663, -20249160, +-4734128, 9793062, 1045288, -656593, -2655901, -1285269, -1335198, 1777043, 3450469, 3249680, +3023120, 18575734, -3551401, -2293513, 261456, 2735894, -5193689, 3563749, 2167885, -316217, +-5756330, -3389803, 6798933, 7424388, 13551159, 3792456, -5297842, 3759170, 10737, 3811247, +417686, 7806103, -6016176, -8795556, -9351218, 6630356, -2588792, 1726577, 2564096, -2951716, +-562641, 16292958, 5444945, -12894029, 9502615, 3522410, 15994995, -7835094, -7959648, 5172215, +8473970, 6527814, 3086471, -875636, 163209, 4776004, -5699959, -786516, -484258, 7618735, +-5862094, 14638859, -1859184, 1047435, -9335648, -5848135, -12484396, -10629507, -4317516, 3514357, +3590056, 18570902, 17982492, -2382633, 1168231, 561567, -175020, -447750, -4100083, -12505871, +-9738301, -5087926, 4015258, -3640522, -11011759, -3234647, 1689533, -993748, -16711718, -5004174, +3277597, -1858110, 1199370, 955630, 4566087, 7042136, 810138, -5376762, 4955319, 5393405, +3532074, -348429, 6811282, -14473503, 4448513, -12824235, 15490873, -11341398, 3970697, -12012487, +-2338073, -13396540, -7403987, -8355322, -9345312, 6141267, -8254391, -1533303, 2444910, -84289, +-4544076, -2995740, -1698660, -12974559, 129923, 954020, 6193343, -20223390, 231391, -345745, +9284646, 11657078, -7917772, -4449586, 334471, 9185324, -16833588, 11353209, -7406671, -4189741, +1294933, -15042049, 2277943, -10454487, -25972204, -10862509, -5549635, 3589519, 6068252, -9085466, +-3862249, -11229192, -9902047, 4005057, -8777303, 7461969, 2681670, 5109938, -1688996, -9054328, +13615583, 4798016, 7334194, -11120207, 3671123, 957778, -15554224, 8289824, 4871567, -387084, +-10777684, -4851703, 4378183, 4348655, -858457, 857920, 6621766, -8063801, -5821292, 7510287, +-17545478, -17751100, -22555020, -5972152, 6516003, -20354924, -16646219, -10842108, -200253, 5858336, +1709934, 853088, -151934, -6711424, -8167417, -19374598, 9176734, 1544041, 21675090, -6481643, +186294, -14906758, -16726750, 818728, 10229538, -570157, -10626823, 5469641, 2491081, 13666586, +1246077, 428423, -7485055, -2943126, 6231461, -16471736, -27733678, -9644886, -6885907, -23087060, +-17648558, -7806640, 12925167, -523986, 21775484, 4803921, -1429150, -11360188, 4656282, 22622666, +-22640920, -20047834, -6498823, -2747705, -14110041, 14397804, 4301410, 8163659, 9121437, -13669807, +-1475858, 6618545, -8888435, 17903034, 443455, 4720706, -4798016, 5129802, -11129871, -5471252, +-3761855, 7409356, 3128884, 11403675, -16937204, 2600603, -105764, -11538430, 13819057, -7095286, +-20253456, 5215701, 7215545, 2742874, -6142877, -141197, -8560407, 2776160, 6709813, 4379256, +-14038637, 6931541, -3413425, -13758391, -9384504, -17187386, 55298, -1178969, -925029, 4299799, +11080479, 16336982, 11395622, -4046396, -11090679, 5651103, -3422015, 584652, -8971650, 17460116, +11272679, 537, 21613886, -11873437, 5832566, 16989280, 8714489, -20347944, 2677375, 348429, +-12851616, 1999307, -28695214, -24756192, -5895917, -90731, 1122597, -492311, -10187126, -219043, +-2896419, 9345312, 1811403, -430034, 1730335, -21576306, 7502771, 4214437, 12037720, 5170604, +5184026, 14339285, 7000260, 2224793, 35376572, 7761006, 13544716, 18993420, 763430, 13452374, +3185255, -7180112, 8450348, 801548, 3955665, -7022272, 316754, -4486094, 2752000, -4468914, +9680856, 1401770, -6536940, -7552163, 689342, -20833812, 11798812, 8454106, -1560684, -1701881, +4250407, -5390184, -5274220, -6702834, -9058086, 7149510, -7482370, 11680164, 12405476, 13282186, +12807592, -3077881, -22462142, 463856, 7304129, 21374442, -6929930, -823560, 7550553, 14596983, +18445810, -3862249, 3992172, 18296560, 23477364, -15819975, -16567836, -22237730, 21878564, -1250372, +-7409356, 8191577, 8053601, 20476794, 17342542, 2010045, 18928458, 26304528, 8331700, -11957189, +13291313, -10999948, -5523328, -1522029, -7171522, -9089225, 6420439, -4117800, -3747359, -11170136, +28841780, 4398584, -13399224, 944356, -681826, 13300977, 14396194, 6099391, -7232188, 14120242, +-2185602, 9076340, -23810224, 2267206, 11943767, -9883793, 5115843, -10823854, -8067023, 26993332, +12386149, 8798241, -213138, -22142168, -3955128, 7620346, 6677601, 4672388, -3713536, 19301584, +-11089069, 11138461, -4173635, 7679402, 9415105, 15472083, 21734146, -21926344, 1590749, 12632036, +8036421, 17362942, 18522584, -21965536, 2854006, -5594732, -8576513, -227633, -8148090, 5378910, +17432198, 34793532, 1430224, -16668231, 4629975, -11143293, 7121593, -9673340, -10524280, 31636730, +-24113558, 39731668, 24199994, -5812702, 7876433, 19248432, 2644626, -29851096, 11609833, -24142548, +5613523, 2277943, -12144557, 649077, -1814624, 17470854, -8859981, -697395, -876710, -5081483, +36364952, -1894618, -5737003, 4941360, 12069395, -12224014, -26599270, 21043730, -3610457, -1302449, +23382876, -13621489, -4174171, -16254304, 4097399, -11237782, 13019656, 12714714, 24828670, -6822556, +6646462, 17271138, -24321326, 3389266, -15676094, -23560580, -31218506, -15650324, -33748244, -36825048, +-5775658, 3019362, -18181670, -18286898, 11083163, -631897, -11330661, -19653770, 13920526, -10073846, +2887829, 19439558, -36078264, -9011378, -8042327, 16811038, 38653632, 1810329, -10536092, 10860899, +-5412733, -16538845, -24306294, -18519362, 19733228, -16807280, 7743289, 18775450, 7792682, 11922829, +-23223962, 32455458, 20244328, 17523466, -13627931, 23136988, -3016141, 15157476, 9772124, 3044595, +8012799, 10992969, 6466610, -4281546, -6365679, -5701569, 1834488, -16298327, -19214610, 9989557, +4043175, 5562520, -15964393, 3624416, 4015258, 10903311, 16433619, 25143276, -15285789, 3241627, +35876936, 7206419, 3107946, 2798708, -8429947, 1894618, 35567160, 9735080, 22650046, 5821292, +-26351772, -11527692, -19548006, 51921324, 20329154, -21652004, -14114336, -19548006, 1720134, -13396003, +-30251602, 5052492, -23347442, 30703648, -3887482, -28841242, 33724084, 26395796, 2516314, -10481331, +3589519, -19653770, 21769042, -25654376, 9453223, -4006668, 24412594, -52680460, -36208720, 20001662, +9419937, 6826851, 17084844, -18429704, -23560044, -13435731, -19446002, 10083509, -20809654, 5250061, +13291313, 21589190, 467078, 17949742, 10658498, 2286533, -6181532, -20395190, -13993540, 10572599, +-24086714, 11327439, 2713883, 19509888, 15498926, -8542153, -29826938, -20316270, -1780264, -2455648, +-7813083, 19406272, -35910760, -3817152, 1430224, -38784092, -500901, -5733782, -2720862, 2916820, +22448184, -22682796, -58875412, 20942260, 24678346, 13168907, 46857556, -39365524, -4192425, 24369108, +20465520, -25284472, -10177462, -8031589, 37507412, 5675263, 36011152, -51874080, 8757975, -61641908, +-34314640, -36467492, 43143484, 11381663, -24443732, 22612466, 5265093, -24522116, 26060788, -33004140, +18403934, 45081052, 16787954, -16028281, -10353019, 6267968, -11237782, -13363254, -1387811, 20946018, +-3405909, 3906273, -22000434, -4628901, 31005368, -22477712, 17293148, 40066676, 20384452, -1800665, +-7326141, -13318694, -25314000, -19019726, 22495428, -12770012, 21153788, 14766634, 7543037, 761820, +8544837, -6644315, -32182726, -11595338, 23844048, 18214420, 19922742, -20978768, 36177584, -9528385, +14416595, -26728656, 24713242, 41128068, -7754027, -15233175, -904628, 1056025, -8584029, 8579197, +18843096, -34607236, 23070416, 21146272, -4591857, 24575266, 14079440, 10249939, -15192910, 2669322, +23287312, -48164300, -41529648, -18274012, 12016245, -22508312, -63534916, 26371100, 18426484, -8842264, +-10205916, 179315, -3206730, -21945136, -58888296, -2376191, -1149441, 21820044, 28942174, 588411, +-32752884, 43236900, -12222403, -30290256, 27023398, -4417911, -16508781, 20859582, 5535139, -4460861, +17585744, -24297704, 22884660, -8300561, 687732, -7144678, -6105296, -33867964, 13267154, -13012140, +5210869, -13672492, -1231582, -10244571, 9539659, -6083821, 36342404, 6253473, 23716810, -9499394, +5807333, 14847702, -6579890, 10161893, -2256469, 17927730, -1120987, -6449967, 28584618, -26103738, +14120242, 19283330, -11818139, 21832392, -13926968, -1058173, 11154030, -9280351, 25855704, 22826140, +4508642, 38326140, -24457154, -55904904, -9717900, -34971236, -23033910, 79471928, -2592013, 23533736, +-4365835, -35304632, -1569811, 32258962, 47074988, 27271968, 47252156, -28194312, -9041980, -14494978, +-29418916, 14117021, 25186226, -25196426, 31679142, -18055506, 4887136, 647466, 3818226, -23130010, +-3109556, -20826834, -17288854, 844498, -6484864, -15474230, -5953362, 12776454, -13371844, 11870216, +-6046777, 34283504, -14949707, 10905459, 2530810, -7330973, -26307212, -8826158, 20913270, 4737349, +-6193343, 27859306, -19320374, -18859202, -2244121, 26747446, -22766012, -2012192, 5042292, 8232379, +-25406880, 9149891, 9479530, -7832947, -26580478, 1983201, -20522428, 10483478, 5292474, 9727564, +-40855876, -15928960, 24145770, 65531000, -28259274, -1995549, 5721434, -8625368, -17352204, 1920924, +53852448, 14709189, -4702453, -2014340, -13277355, -361314, -9905268, 23835994, 2042794, -9590125, +-13058311, 4814122, 10789495, -16441672, 18015240, 10768020, 19731616, 8785356, 24208046, -39771936, +54405424, 8107288, 12904766, 13585518, -11740293, -13606456, 1178969, -4809290, 8300561, 18407692, +-24201066, 8943733, -4591320, 7184944, 6695854, 4940286, 14808510, 11822971, -9960029, 10712185, +9298604, -7844221, -14211510, 5301601, -4639639, -11536282, 7997766, 6840809, -421444, -7251516, +844498, -5057324, -2238752, 1392106, 3810173, 6492917, -10494753, -796180, 9493488, -3097745, +8578660, 2416456, 6352794, 12581033, 4044786, -10984379, 1836099, 12096239, -5737540, 404801, +5976984, -17924510, -577136, -3625489, -17092896, 25527674, -5652177, 135291, 15046881, 3704409, +-10359461, 5596343, -9892383, -714575, 8569533, -8256001, -3053185, 19728396, -18737332, 3947075, +2107755, 8807367, -8213588, 8681740, -2601677, 10290205, -3661997, 12674985, -53131968, -108212240, +-13854491, 67985040, 52344912, 150028032, 72284296, -34963720, -30429844, -71128416, -124426280, -15766288, +-48140676, -15018427, 88115016, 56022480, 60028612, 114415784, -3816615, -25409026, -42969000, -113292112, +-62266824, -20202990, -20795694, 3040300, 51791936, 39788576, 42639900, 79759152, 47040628, -29529510, +42902428, -44923212, -104092288, 13175886, -69734160, -97704064, 38394324, -8592619, -17680232, 119651344, +39683888, 31613644, 103768560, -11369315, -19867982, 31153008, -68764576, -86369104, -22625350, -74026448, +-65298536, 13583371, 14863271, 29368986, 90790776, 79415552, 49054968, 56803088, 11821361, -45678588, +-47828756, -60763588, -81847048, -39247412, -19972134, -28785944, 26220776, 79008072, 53544820, 50583976, +44249436, -30819612, 2747705, 6346351, -50838456, -14061723, -7513509, 0, 0, 0, +0, 0, 0, }, { 5649493, -661962, -4917201, -1250372, -1280437, -550293, -1284195, 2446521, 5765994, 878858, 4686346, -1743757, -1127429, -2554969, 2191507, -775778, 4634270, 3273302, -1581622, -2910914, -3406983, -1711545, -1139777, 398358, -2471217, -1035624, -631360, 1984275, -2419140, 1961726, -776852, --2707977, 3482145, 3521336, 576063, 1317481, 699543, -690416, -2273112, -7385197, 2042794, --2382633, 2250026, -2359011, -2858838, 2126546, -2518998, 1229434, 1348620, -5202279, 216359, -781147, 1294396, -2047089, 2754685, -2732673, -1758789, -915902, -1242856, 1814624, -301721, -876710, 1561221, 2297271, -404801, -2460480, -2486786, 162135, -5215164, -2262374, -481573, -4718022, 1422708, 1893544, 1471563, 2643016, -1112933, 2631741, 4597226, -3535832, -3068217, --4711043, 4155918, 2042794, 307627, 6177237, -683974, -135828, -1968169, -1600949, 1291711, --1725503, -3311420, 1770063, 464930, 5149129, 7052873, -1911261, -4251481, -5217312, -390305, --3008625, -2909304, -2009508, -464393, -4168803, 3888019, -1532230, -1623498, -2778844, -2076617, -696858, 4371740, -525597, -1359894, 1280437, -4447439, 3213173, -2806761, -9860708, 4773320, -3162707, 5308043, 5530844, 972810, 2878702, -3020973, 759672, 4138738, 257698, -161598, --1097364, -682363, 2197413, -2198487, -1576253, -35433, 2076080, -1953673, -2331094, -3453691, -4088809, 1460826, 401043, -1261110, -4330938, -435939, 2967286, 1578401, -829466, -1297617, -2745558, -1151051, -14701136, 7648800, -734976, 202937, 2653753, 3738769, -5483063, -712965, --992674, 3104188, 1177895, -3368328, 10437844, -1141388, -656593, 4625143, 3807489, 1222992, -2639794, 8501351, -4229469, 239981, -2159832, 824634, -2632815, 181999, 258772, 925565, --4742181, 372052, -1144609, -1818919, -210990, 2935610, -1648731, 2724083, 4019016, -6995428, -927176, -2874944, -779000, -4332549, 2122788, -2597382, -448824, -1496259, -4362076, 1593433, --2934000, 1909650, 1070521, -2230699, -3187940, 13959, 2911988, 2115808, 5309117, 2363843, --2347737, -6675453, -487479, 1026497, 8213588, -2711198, -1328756, -257698, -1704565, -4502737, --2178622, -4238059, -709207, 3059091, -1001801, 3621194, 2133525, 1560684, 1803886, -2474438, -11052025, 5917391, -1407139, -3996467, 6468221, -6846715, -864899, 4306779, -2627983, -1815161, --2753074, 7401840, -2161442, 2506114, 929324, 2479807, 10012643, -9402757, 3232500, 5186173, --2898029, -8678518, -4346507, -297427, 911070, -957778, -1276142, 4089346, 5836861, -131533, --3525631, 615254, -4558034, 1790465, -2721399, 2063732, 6231461, 2473901, -5499706, 175020, -751082, 9099425, 2039573, 4724464, -851477, 2286533, 1957431, -10253161, 605054, 5370857, -2774012, 5970005, -4508642, -2695629, -4469451, 1710471, 3680250, -639413, 1611150, 654983, --1926293, 1333051, -1271310, 2087354, 2236067, 47782, 3296388, 959925, 398358, 1591822, -7204808, 1635309, 4384625, 4638565, 22447646, -5383742, -1750736, -3020436, 4835060, 3363496, -7830799, 3337190, -817654, 3963181, 126165, 4396973, 1839320, 5976984, 386547, 5080947, -6384469, -6415071, 1468879, 2142115, 1374390, 1461900, 1749125, -3642132, 210990, -4248260, --461709, 241592, -7681549, -4939750, 2161979, 388158, -99858, 3566434, 3240553, -1168231, --6644315, 2479807, 6263136, 4483409, 5835787, -1082869, 3194382, 6132677, -9353902, 3466576, -4223564, -4187593, 5893232, -3581466, -826781, 1073205, 1155883, -2638184, 2741800, -313533, --1116155, -2744484, -2755759, 3812320, 3167539, 2035278, 3073586, 5605469, 2545842, 7590281, --1748589, -7269769, 7281044, 1890859, 3304977, 2277407, -1858647, 2762738, 728534, 1277753, -4260071, 9385040, -11660299, 7050726, 1185948, 7218767, 1392643, -4774393, 1045825, 5435281, --7412040, -1974611, 462246, -8448201, -1905892, -6620155, -4062502, -4974646, -5193689, 1540283, --7891466, -5265630, -6334003, -2106145, 5579163, 1531693, -7534983, -3428458, -7854959, -2491081, -1438277, 10311143, -9015136, 2970507, -2433636, -3887482, -6738804, -370441, 962610, 6314139, -3547106, 165893, -6069863, -11071352, -248571, 2269353, 8042863, 2046015, 2554969, -6810208, -2167348, 4250944, 402653, -72478, -3168612, -4078608, -993211, 2032593, 654983, -3025805, -237297, -7602092, -709207, -6607807, 3812857, -2261837, 3900904, -6596533, -4102768, -8709657, --206695, -6098854, -1194538, 577673, -6053757, -4538707, 2715493, 2735357, -4769561, -27430346, -4311611, 3038689, -7995082, -1832340, -142271, 205622, -1627256, -2684892, -2143189, -8180302, -6125697, -3984119, 727460, -6808597, -2548526, 9757629, 8723615, -5653788, -3552475, 264141, --319975, -4630512, -5555540, -3823058, 464930, 422517, -18790, -545461, 2094870, -6653978, -1888712, 253940, -11971684, -1380832, -3729642, 5422396, 7649874, 1276679, -1603097, 431644, --7122667, -8575976, 4402342, 8617852, 9283035, -2488934, 1497333, 5637682, 5486821, -2875481, -5040144, 8711267, -608275, 7354595, 5897527, -7115150, 2117956, 531502, 7525320, -4649302, --5318244, 4592394, 5659157, -1701344, 310311, -8412230, 5798206, -4677757, 6165426, -10530723, -1040993, 2530810, 5027259, 296890, -4336307, -8930311, -10832444, 3515968, -9597104, 11605539, -11164231, 103616, -15663746, 6142877, 651224, -3131568, 10430865, -209917, -9416179, -1237488, -11365557, -14788109, 248034, -3899830, -11673184, -3457449, 3758, -2529199, -6073621, 3105261, --5062693, 3675418, -4338991, -8050916, 3948686, -868120, 5761162, -11857331, 4534949, 8806294, --3841312, 448287, 8971650, 13075491, -3733400, -3041911, -11446625, 345208, -9469866, -1079111, --6638946, -3221, 747861, 5075041, 2436320, 4603131, -3715684, 564788, 2916820, -937914, -12210055, -8556649, -4182225, 15880105, 16193637, -3598646, -1147293, -10630044, -5343476, 120796, --2937221, -7191386, 9779104, 2611877, -2622615, 14022531, 2783676, -7394860, -156229, -13743358, --6533182, -7968238, 13070122, -3550864, -193810, 8971650, -2198487, 5270462, -2961917, -11546483, --768262, -70867, -2375654, -6887517, -7595113, 3848828, -6012954, 10509785, -3264712, -7820062, -6575058, 13200045, -3301756, 3599720, -3568581, 7553774, 190052, -16353625, 5793911, 8828305, -927713, -2877628, -9383430, 7704635, 5325760, 4878546, 1081258, 2983929, 10620917, -7700877, -1374390, 1813013, -5823439, -11661910, 10910291, 5738613, 20254528, -1347009, 8976482, -3310346, --6269579, 707596, -915902, -687195, -1727651, -7012608, 14576045, -137439, 1212255, 1535451, --1943473, 11360725, 1591285, 9360881, 4239670, 985695, 10736881, -5815386, -11924977, -3244848, -2228551, 537408, -4980552, 4670777, -3659849, -18155364, 1220845, 1617592, -9954124, 11162620, --17095580, 3428995, 8421894, 12290049, -11819213, -1237488, 8891656, 6377490, 7662222, 1810329, -15593953, 3347390, 6767795, -1316944, 1407676, 6782290, 3925063, 7747584, 1081795, -9396852, --14034343, 8292508, 4243965, -2184528, 2219424, 4930623, -13101798, 726386, -8081518, 4625680, -38118, 9536975, -2354716, 4611185, -1556926, 2947421, 1723356, 270046, 5524939, 7366406, -2903398, 4558571, -10162429, 5104569, -1379758, -17884780, -11855720, 3896609, -13081397, -183073, -11718281, -7410966, 22788022, 8866423, -3997541, 12940200, 1057636, -3081639, -8509404, -7984881, --11893301, -941135, 7721815, -7805030, -616328, 9170829, 4153770, 5783174, 16828756, 3408594, -11193759, 1674500, 2667712, -15646566, 5601174, 3483219, -9258339, -329639, 5708012, -125091, -3974992, -9458055, 7230578, -607201, 2027761, 6799470, -12831215, -8759586, 2181307, -183610, -6836514, 14387067, -1490891, 3587908, 15289547, -5740224, -10662256, -597537, 11125576, -2447058, --13261785, 1055488, 4582193, -2554969, -4335233, -950262, 16491064, -3184718, 14136348, 10907606, -12849468, 728534, 734439, 7690676, 2215666, -2677375, 2319819, -10437844, 7435662, 13164075, -7820599, 1099512, 6868190, -5829881, 5122822, -5688148, 7694434, -7531225, -473520, -695248, --1248225, 23329188, -4234838, -1469953, -2831457, 3063386, 5606543, 12107513, 13157095, -8007430, -2337536, 13662291, -9029632, -10242960, 4578435, -4852776, 4577362, 26015690, -14399415, 760209, -350577, -8509404, -1814087, -9332964, -14591078, -11262478, -15183783, -5968931, 1377611, 11711302, -8530342, 2994666, 12244415, 3582003, 7344394, 6879464, -3748433, 10722923, 11456825, 8179229, --16304770, -9082245, -9608916, 3340948, -6755447, 318901, 4138201, -4743792, -11662984, 7179575, --5760625, 2499134, 1978906, 11406359, -12421582, 18552112, -18848464, 18968186, -526670, 9511742, --9724343, 3346853, -21062520, -11434277, -10531797, 9081708, 3617436, 13174275, -1880122, 15032, --7260106, -16388521, 10136660, -8891119, -5316633, 7961259, 18015240, 18226768, 7783555, -1030255, --12957379, 7398081, -19542102, -1231582, -11458436, 6311992, 19444390, -19166828, 6231461, 9349607, --12996571, -857383, -2989834, 7133941, -8939438, -11251741, 1498407, -4706748, -16996796, -14662481, --16968342, -5482526, 9286793, -13189308, 7067369, -17746804, -4035122, -7394860, -6967511, -14240501, --2250026, -5878200, -9078487, 5516886, -10006737, 8724152, 927713, 6635725, -12901545, -22896470, --2962454, 3711926, -10377715, -7580081, 2443837, 2071248, -11977053, -5913096, 14163728, 6686727, --3240016, 7650411, 20824686, 49929, 1540820, 1545651, -2954401, -1056025, 1948841, 2283312, --18281528, -6811818, -22072374, -7169374, -20707112, -9700721, -369904, 22009560, 9076877, -11699491, --14618995, 7925289, 16281147, 10823318, -9574019, 13266080, -6860674, -1373316, -25659208, -7395397, --4891968, -3152506, -18272938, -26332982, 6386617, -46708, -21360482, 5058935, 27655294, 4296041, -758599, -18272402, -4772783, 938987, 292058, -18730352, 12074227, -18465138, -3807489, 4240207, --8869644, 20973400, -17463338, -18152680, -14599131, 20226074, 9164923, -12097312, -10630581, -7403450, --2151779, -6726993, -6508486, 672699, 7758859, 19837918, -2087891, 8212515, 7669738, 6857452, --13289166, -17294760, -11871826, 13630616, -2196876, 16632798, 5978058, -2465311, -23163296, -19742354, --1641751, 912681, -13244069, -9203578, -5993627, -7265474, -30353608, -7469485, -7049115, -11924977, --4926328, -8138963, -13583371, 8997420, 19801946, 9680856, 1168231, 10281078, 15112916, -6278706, -5313949, 2452963, 2227478, -1906429, -2806224, 8710194, 5022965, 15443092, -2910914, 8053, -7194607, 31586264, 882616, 15721191, 23930484, -4278325, -17892296, -1008780, 21613886, -418759, --13877039, -19387482, -14272176, 20463372, 15347529, -30067456, 11651709, 14211510, -3930432, 10749766, -31708670, 4045859, 8332237, -8941048, 8618926, -9542880, -5439039, -4359392, 3877819, 9294309, -12502650, -2147, 6154152, -1727651, -135828, -4263829, 9686225, 29935386, -7536594, -7615514, -11935714, 8717710, 2799245, -19114752, 15178951, -14928233, 11260331, 13386339, 3155190, 4547297, --1546188, 21072184, 16676284, 1714766, 11868068, -6271189, 14497662, 3651259, 16156593, 22243636, -1575716, 6812892, -615791, -6049462, 1610076, 10605885, 12365748, -18156438, -9737228, 6258841, -23818814, -8749922, 16696148, 11232950, 5328981, -21292300, 5492727, 5379984, -24601572, 18064632, --12301860, -16285979, -31422518, 10622528, 24793772, -7137699, -15175193, 6852084, 28440736, 18253612, -7455527, 21554294, 15493558, -5696201, -42977592, 4807142, 20947630, 10009421, 4219269, -18839338, --563178, -13022341, 2518462, -1332514, 3017752, 6359236, 8386461, 3782793, -23757612, 13420162, --3845606, 4091493, 16941498, 6833293, 2597382, -6218039, 21098490, -660888, 20927766, -26222386, --8562017, 8575439, -16214575, -13079786, 35970, -3245922, -12961674, 1658394, 18192408, -361314, -244813, -9772124, -22034792, -13027173, -7114077, 9046275, -3484829, 2411087, -11538967, -10794327, --6785512, 17117592, -12814035, 10075456, 5047661, 5905043, 388158, -16723529, -26134340, -1451162, -14850923, -19859928, 8183524, -17001628, 9251360, -17904644, -2788508, -17643188, 23928874, -23029078, --16152298, 6645388, 2102923, 12294344, 7648263, -5876052, -4972499, 7158637, -35811436, -4606890, -11433203, 3208341, -8112657, -12432320, 1755031, -11791296, -591632, -18504330, 18400714, -6584185, -11733851, -24221468, -13479218, 38655, 30941482, -24295556, -1569811, -18894098, -14878304, -4169340, -19628538, -3860102, 9060234, 9468792, -9470940, -20999706, 31038118, 13812078, -16736414, 3956739, -2907693, 8980777, -16230681, 15778099, -630823, -31173410, 4096862, 6987375, 8959302, -25700548, --5516886, 3970697, 24022826, 5079336, 13784698, -33298344, -19758460, 11118060, 942208, 22886270, --4949950, -3015604, 2747705, 12017855, 11439645, 4704063, -42013908, 12949326, -3755949, 10676752, -24401320, -6489696, -553514, -25526602, 10179072, 12657805, -12017318, -7534447, 25885232, 38136088, -12220793, 6192806, -7803419, -31644246, -20854750, -7474854, -773094, -18214956, 13661217, -37307696, -1345935, -23070416, 11297375, -8825621, -25598006, -2655364, -7217693, -9286256, -29088202, -21328270, -5553393, 22179212, -15595026, 27483496, -24186572, -16021839, 4678830, -2711735, 12252468, -8280697, --8691403, -11900281, -3616363, -39505648, -11650636, 789737, -2073932, -6853694, -15770583, 11983496, --13981729, 20618528, -6808060, -2876018, -15136538, -13897440, -26222922, -11505681, 9310952, 3760781, --1803349, 1557463, -9535364, -7150584, -12200928, -10155450, 5141613, 7682623, 3511673, -22490596, -25698400, 3583077, -11210402, 20781736, 14763950, 24820080, -4596152, 14681272, -33538862, -17748952, --31607738, 32980516, -10158135, -21795348, -21348134, -45093400, -18815714, 33240900, -1534914, -14906758, -7975218, 39975408, 51306068, -5216238, -23150410, -5790153, -8883603, -23505820, 9761924, 265751, --16958678, 48888004, 16933446, -12094628, -34322696, -3501472, 8110509, 8531416, 9898826, 23094040, --6877854, -12160663, 10997801, -43294880, -28639378, -11720966, -3111167, 4016868, -22863722, -21457656, -21988622, 16874390, -13445932, -26531086, 16451872, -186294, 29020020, -24286430, -5365488, -8766028, --1401770, -19396072, -27707908, 22571664, -17139604, -11685532, -21133386, -5577552, 14140106, 12327093, --8442832, 976031, 2593087, 16709570, 27099096, 18934900, -34444564, -17561048, -20396262, -6102612, -11886322, 3331284, -23570244, -34959960, 28814398, 849330, -28289338, -47790636, 23449984, -6961605, -12355010, 11056320, 11768210, 1340567, 7939784, -17758616, -9484898, 4880157, 18388902, 22695144, --27498528, -23041426, 66575216, -5064840, -6174016, -9669045, -20603494, -2006824, 24234890, 38694436, --17361868, -10417443, -3555696, -17210470, -3998615, -9584220, 15636902, -15524159, 17858474, 8613020, --5611912, -21754546, -1212791, -8791261, 33493228, -17879412, -10737, 354335, -2846490, 15271830, --9061844, -929860, 7366406, -4196720, -31791884, 16824460, -14207215, -16697222, -3375844, -17811766, --9995463, -32654100, 32244466, 1899986, -20447802, -38268696, 23223962, -22334366, -21625160, 875100, --16654809, 8474507, 15078020, 44776644, -11723650, 18045306, -2858838, -20422032, -17208324, -4271882, -67260264, -57307212, -3272765, 62278100, -54654532, -19481434, 32498406, -2608119, -24012626, 61428232, --27926414, -8799314, 32470490, -38736848, 37004364, -4942434, -21082384, 20439750, 7950522, -2398739, -5228049, 3800509, -3110093, 8212515, -6503654, -8791261, -3333968, -12631499, -10304163, -24769614, --8713952, 23570780, 22315576, -31069256, 12064563, 18393198, 15641197, -4292820, -30602716, -1610076, --14477261, -36048736, 24887188, 61125976, -32974612, -2383707, 43885440, -10710575, -13744432, 35905388, -27074936, 14064407, -12444668, -26361972, 10801843, -9842454, -16012175, 64085744, 47651052, -36160404, --26116086, 35416836, -59885264, -19991462, -15644955, -8875550, 44969920, 30479772, 20822538, 22611392, --70308616, -23236846, 71208408, 42119672, 10552735, -16117939, 26330298, -21817360, -46394236, -30084636, -27100170, -14926622, -336618, 31337692, 55737400, -1968169, -23890756, 9678172, 27738510, -60724932, -27099634, 878858, -5710159, 31989990, -4772246, -23130010, 12492986, 11455752, 31281320, 17993766, --16042777, 1487132, 5315022, 21641804, 5446019, -23619636, -367220, -777926, 5506148, -21918292, --24009404, 36230196, -12268037, -36610840, 19719806, 33689724, -18034030, -5683853, 2732673, 23313620, --26477400, -34844532, 10304163, 30663920, -5944235, -12095702, -6859600, -6605660, 13597330, 6281927, -8340827, 76328008, 4716411, -8895951, 1564979, 3163780, 41350336, 2110977, -13995151, 10050760, --31409632, -17850420, 8764418, 1101659, 35554812, 28849296, -17583060, -4217121, -16628503, 1951526, -12955769, 4433480, 4227859, 13951128, -8781061, -35633196, 9623411, 26826366, -11825119, 24178518, --34562140, 18680960, 9935870, -26993332, 4298189, 4563403, -11828877, 19072876, -41609108, -132249024, --156103808, -15899432, -108874200, 39936216, 258542528, 138103056, 209625536, 220959968, -26219164, -66328792, -17098264, -164495104, -200507856, -63406604, -220512752, -177529248, 42584064, -128276176, -36294084, 249559072, -89212376, 175844016, 305456992, 180872880, 79977656, 60243360, 19978040, -138905152, -172205632, -58226872, --234518096, -234904640, 28994788, -176140368, -144628736, 84031032, -148201072, -152600192, 112219976, 44402984, --22305912, 266836656, 250093792, 158907888, 339659968, 319740448, 108533824, 126389616, 98557152, -163208224, --163197488, -206366736, -406961024, -480461888, -345406112, -344069824, -253527088, 8209830, 23448374, 167160672, -289638112, 356904256, 325891904, 378216416, 325039360, 193135552, 131750272, 47417512, -57416732, -134692864, --192677600, -159542464, -232629392, -248321056, -149541104, -71778568, -35441532, 0, 0, 0, -0, 0, 0, }, +661962, -4917201, -1250372, -1280437, -550293, -1284195, 2446521, 5765994, 878858, 4686346, +1743757, -1127429, -2554969, 2191507, -775778, 4634270, 3273302, -1581622, -2910914, -3406983, +1711545, -1139777, 398358, -2471217, -1035624, -631360, 1984275, -2419140, 1961726, -776852, +-2707977, 3482145, 3521336, 576063, 1317481, 699543, -690416, -2273112, -7385197, 2042794, +-2382633, 2250026, -2359011, -2858838, 2126546, -2518998, 1229434, 1348620, -5202279, 216359, +781147, 1294396, -2047089, 2754685, -2732673, -1758789, -915902, -1242856, 1814624, -301721, +876710, 1561221, 2297271, -404801, -2460480, -2486786, 162135, -5215164, -2262374, -481573, +4718022, 1422708, 1893544, 1471563, 2643016, -1112933, 2631741, 4597226, -3535832, -3068217, +-4711043, 4155918, 2042794, 307627, 6177237, -683974, -135828, -1968169, -1600949, 1291711, +-1725503, -3311420, 1770063, 464930, 5149129, 7052873, -1911261, -4251481, -5217312, -390305, +-3008625, -2909304, -2009508, -464393, -4168803, 3888019, -1532230, -1623498, -2778844, -2076617, +696858, 4371740, -525597, -1359894, 1280437, -4447439, 3213173, -2806761, -9860708, 4773320, +3162707, 5308043, 5530844, 972810, 2878702, -3020973, 759672, 4138738, 257698, -161598, +-1097364, -682363, 2197413, -2198487, -1576253, -35433, 2076080, -1953673, -2331094, -3453691, +4088809, 1460826, 401043, -1261110, -4330938, -435939, 2967286, 1578401, -829466, -1297617, +2745558, -1151051, -14701136, 7648800, -734976, 202937, 2653753, 3738769, -5483063, -712965, +-992674, 3104188, 1177895, -3368328, 10437844, -1141388, -656593, 4625143, 3807489, 1222992, +2639794, 8501351, -4229469, 239981, -2159832, 824634, -2632815, 181999, 258772, 925565, +-4742181, 372052, -1144609, -1818919, -210990, 2935610, -1648731, 2724083, 4019016, -6995428, +927176, -2874944, -779000, -4332549, 2122788, -2597382, -448824, -1496259, -4362076, 1593433, +-2934000, 1909650, 1070521, -2230699, -3187940, 13959, 2911988, 2115808, 5309117, 2363843, +-2347737, -6675453, -487479, 1026497, 8213588, -2711198, -1328756, -257698, -1704565, -4502737, +-2178622, -4238059, -709207, 3059091, -1001801, 3621194, 2133525, 1560684, 1803886, -2474438, +11052025, 5917391, -1407139, -3996467, 6468221, -6846715, -864899, 4306779, -2627983, -1815161, +-2753074, 7401840, -2161442, 2506114, 929324, 2479807, 10012643, -9402757, 3232500, 5186173, +-2898029, -8678518, -4346507, -297427, 911070, -957778, -1276142, 4089346, 5836861, -131533, +-3525631, 615254, -4558034, 1790465, -2721399, 2063732, 6231461, 2473901, -5499706, 175020, +751082, 9099425, 2039573, 4724464, -851477, 2286533, 1957431, -10253161, 605054, 5370857, +2774012, 5970005, -4508642, -2695629, -4469451, 1710471, 3680250, -639413, 1611150, 654983, +-1926293, 1333051, -1271310, 2087354, 2236067, 47782, 3296388, 959925, 398358, 1591822, +7204808, 1635309, 4384625, 4638565, 22447646, -5383742, -1750736, -3020436, 4835060, 3363496, +7830799, 3337190, -817654, 3963181, 126165, 4396973, 1839320, 5976984, 386547, 5080947, +6384469, -6415071, 1468879, 2142115, 1374390, 1461900, 1749125, -3642132, 210990, -4248260, +-461709, 241592, -7681549, -4939750, 2161979, 388158, -99858, 3566434, 3240553, -1168231, +-6644315, 2479807, 6263136, 4483409, 5835787, -1082869, 3194382, 6132677, -9353902, 3466576, +4223564, -4187593, 5893232, -3581466, -826781, 1073205, 1155883, -2638184, 2741800, -313533, +-1116155, -2744484, -2755759, 3812320, 3167539, 2035278, 3073586, 5605469, 2545842, 7590281, +-1748589, -7269769, 7281044, 1890859, 3304977, 2277407, -1858647, 2762738, 728534, 1277753, +4260071, 9385040, -11660299, 7050726, 1185948, 7218767, 1392643, -4774393, 1045825, 5435281, +-7412040, -1974611, 462246, -8448201, -1905892, -6620155, -4062502, -4974646, -5193689, 1540283, +-7891466, -5265630, -6334003, -2106145, 5579163, 1531693, -7534983, -3428458, -7854959, -2491081, +1438277, 10311143, -9015136, 2970507, -2433636, -3887482, -6738804, -370441, 962610, 6314139, +3547106, 165893, -6069863, -11071352, -248571, 2269353, 8042863, 2046015, 2554969, -6810208, +2167348, 4250944, 402653, -72478, -3168612, -4078608, -993211, 2032593, 654983, -3025805, +237297, -7602092, -709207, -6607807, 3812857, -2261837, 3900904, -6596533, -4102768, -8709657, +-206695, -6098854, -1194538, 577673, -6053757, -4538707, 2715493, 2735357, -4769561, -27430346, +4311611, 3038689, -7995082, -1832340, -142271, 205622, -1627256, -2684892, -2143189, -8180302, +6125697, -3984119, 727460, -6808597, -2548526, 9757629, 8723615, -5653788, -3552475, 264141, +-319975, -4630512, -5555540, -3823058, 464930, 422517, -18790, -545461, 2094870, -6653978, +1888712, 253940, -11971684, -1380832, -3729642, 5422396, 7649874, 1276679, -1603097, 431644, +-7122667, -8575976, 4402342, 8617852, 9283035, -2488934, 1497333, 5637682, 5486821, -2875481, +5040144, 8711267, -608275, 7354595, 5897527, -7115150, 2117956, 531502, 7525320, -4649302, +-5318244, 4592394, 5659157, -1701344, 310311, -8412230, 5798206, -4677757, 6165426, -10530723, +1040993, 2530810, 5027259, 296890, -4336307, -8930311, -10832444, 3515968, -9597104, 11605539, +11164231, 103616, -15663746, 6142877, 651224, -3131568, 10430865, -209917, -9416179, -1237488, +11365557, -14788109, 248034, -3899830, -11673184, -3457449, 3758, -2529199, -6073621, 3105261, +-5062693, 3675418, -4338991, -8050916, 3948686, -868120, 5761162, -11857331, 4534949, 8806294, +-3841312, 448287, 8971650, 13075491, -3733400, -3041911, -11446625, 345208, -9469866, -1079111, +-6638946, -3221, 747861, 5075041, 2436320, 4603131, -3715684, 564788, 2916820, -937914, +12210055, -8556649, -4182225, 15880105, 16193637, -3598646, -1147293, -10630044, -5343476, 120796, +-2937221, -7191386, 9779104, 2611877, -2622615, 14022531, 2783676, -7394860, -156229, -13743358, +-6533182, -7968238, 13070122, -3550864, -193810, 8971650, -2198487, 5270462, -2961917, -11546483, +-768262, -70867, -2375654, -6887517, -7595113, 3848828, -6012954, 10509785, -3264712, -7820062, +6575058, 13200045, -3301756, 3599720, -3568581, 7553774, 190052, -16353625, 5793911, 8828305, +927713, -2877628, -9383430, 7704635, 5325760, 4878546, 1081258, 2983929, 10620917, -7700877, +1374390, 1813013, -5823439, -11661910, 10910291, 5738613, 20254528, -1347009, 8976482, -3310346, +-6269579, 707596, -915902, -687195, -1727651, -7012608, 14576045, -137439, 1212255, 1535451, +-1943473, 11360725, 1591285, 9360881, 4239670, 985695, 10736881, -5815386, -11924977, -3244848, +2228551, 537408, -4980552, 4670777, -3659849, -18155364, 1220845, 1617592, -9954124, 11162620, +-17095580, 3428995, 8421894, 12290049, -11819213, -1237488, 8891656, 6377490, 7662222, 1810329, +15593953, 3347390, 6767795, -1316944, 1407676, 6782290, 3925063, 7747584, 1081795, -9396852, +-14034343, 8292508, 4243965, -2184528, 2219424, 4930623, -13101798, 726386, -8081518, 4625680, +38118, 9536975, -2354716, 4611185, -1556926, 2947421, 1723356, 270046, 5524939, 7366406, +2903398, 4558571, -10162429, 5104569, -1379758, -17884780, -11855720, 3896609, -13081397, -183073, +11718281, -7410966, 22788022, 8866423, -3997541, 12940200, 1057636, -3081639, -8509404, -7984881, +-11893301, -941135, 7721815, -7805030, -616328, 9170829, 4153770, 5783174, 16828756, 3408594, +11193759, 1674500, 2667712, -15646566, 5601174, 3483219, -9258339, -329639, 5708012, -125091, +3974992, -9458055, 7230578, -607201, 2027761, 6799470, -12831215, -8759586, 2181307, -183610, +6836514, 14387067, -1490891, 3587908, 15289547, -5740224, -10662256, -597537, 11125576, -2447058, +-13261785, 1055488, 4582193, -2554969, -4335233, -950262, 16491064, -3184718, 14136348, 10907606, +12849468, 728534, 734439, 7690676, 2215666, -2677375, 2319819, -10437844, 7435662, 13164075, +7820599, 1099512, 6868190, -5829881, 5122822, -5688148, 7694434, -7531225, -473520, -695248, +-1248225, 23329188, -4234838, -1469953, -2831457, 3063386, 5606543, 12107513, 13157095, -8007430, +2337536, 13662291, -9029632, -10242960, 4578435, -4852776, 4577362, 26015690, -14399415, 760209, +350577, -8509404, -1814087, -9332964, -14591078, -11262478, -15183783, -5968931, 1377611, 11711302, +8530342, 2994666, 12244415, 3582003, 7344394, 6879464, -3748433, 10722923, 11456825, 8179229, +-16304770, -9082245, -9608916, 3340948, -6755447, 318901, 4138201, -4743792, -11662984, 7179575, +-5760625, 2499134, 1978906, 11406359, -12421582, 18552112, -18848464, 18968186, -526670, 9511742, +-9724343, 3346853, -21062520, -11434277, -10531797, 9081708, 3617436, 13174275, -1880122, 15032, +-7260106, -16388521, 10136660, -8891119, -5316633, 7961259, 18015240, 18226768, 7783555, -1030255, +-12957379, 7398081, -19542102, -1231582, -11458436, 6311992, 19444390, -19166828, 6231461, 9349607, +-12996571, -857383, -2989834, 7133941, -8939438, -11251741, 1498407, -4706748, -16996796, -14662481, +-16968342, -5482526, 9286793, -13189308, 7067369, -17746804, -4035122, -7394860, -6967511, -14240501, +-2250026, -5878200, -9078487, 5516886, -10006737, 8724152, 927713, 6635725, -12901545, -22896470, +-2962454, 3711926, -10377715, -7580081, 2443837, 2071248, -11977053, -5913096, 14163728, 6686727, +-3240016, 7650411, 20824686, 49929, 1540820, 1545651, -2954401, -1056025, 1948841, 2283312, +-18281528, -6811818, -22072374, -7169374, -20707112, -9700721, -369904, 22009560, 9076877, -11699491, +-14618995, 7925289, 16281147, 10823318, -9574019, 13266080, -6860674, -1373316, -25659208, -7395397, +-4891968, -3152506, -18272938, -26332982, 6386617, -46708, -21360482, 5058935, 27655294, 4296041, +758599, -18272402, -4772783, 938987, 292058, -18730352, 12074227, -18465138, -3807489, 4240207, +-8869644, 20973400, -17463338, -18152680, -14599131, 20226074, 9164923, -12097312, -10630581, -7403450, +-2151779, -6726993, -6508486, 672699, 7758859, 19837918, -2087891, 8212515, 7669738, 6857452, +-13289166, -17294760, -11871826, 13630616, -2196876, 16632798, 5978058, -2465311, -23163296, -19742354, +-1641751, 912681, -13244069, -9203578, -5993627, -7265474, -30353608, -7469485, -7049115, -11924977, +-4926328, -8138963, -13583371, 8997420, 19801946, 9680856, 1168231, 10281078, 15112916, -6278706, +5313949, 2452963, 2227478, -1906429, -2806224, 8710194, 5022965, 15443092, -2910914, 8053, +7194607, 31586264, 882616, 15721191, 23930484, -4278325, -17892296, -1008780, 21613886, -418759, +-13877039, -19387482, -14272176, 20463372, 15347529, -30067456, 11651709, 14211510, -3930432, 10749766, +31708670, 4045859, 8332237, -8941048, 8618926, -9542880, -5439039, -4359392, 3877819, 9294309, +12502650, -2147, 6154152, -1727651, -135828, -4263829, 9686225, 29935386, -7536594, -7615514, +11935714, 8717710, 2799245, -19114752, 15178951, -14928233, 11260331, 13386339, 3155190, 4547297, +-1546188, 21072184, 16676284, 1714766, 11868068, -6271189, 14497662, 3651259, 16156593, 22243636, +1575716, 6812892, -615791, -6049462, 1610076, 10605885, 12365748, -18156438, -9737228, 6258841, +23818814, -8749922, 16696148, 11232950, 5328981, -21292300, 5492727, 5379984, -24601572, 18064632, +-12301860, -16285979, -31422518, 10622528, 24793772, -7137699, -15175193, 6852084, 28440736, 18253612, +7455527, 21554294, 15493558, -5696201, -42977592, 4807142, 20947630, 10009421, 4219269, -18839338, +-563178, -13022341, 2518462, -1332514, 3017752, 6359236, 8386461, 3782793, -23757612, 13420162, +-3845606, 4091493, 16941498, 6833293, 2597382, -6218039, 21098490, -660888, 20927766, -26222386, +-8562017, 8575439, -16214575, -13079786, 35970, -3245922, -12961674, 1658394, 18192408, -361314, +244813, -9772124, -22034792, -13027173, -7114077, 9046275, -3484829, 2411087, -11538967, -10794327, +-6785512, 17117592, -12814035, 10075456, 5047661, 5905043, 388158, -16723529, -26134340, -1451162, +14850923, -19859928, 8183524, -17001628, 9251360, -17904644, -2788508, -17643188, 23928874, -23029078, +-16152298, 6645388, 2102923, 12294344, 7648263, -5876052, -4972499, 7158637, -35811436, -4606890, +11433203, 3208341, -8112657, -12432320, 1755031, -11791296, -591632, -18504330, 18400714, -6584185, +11733851, -24221468, -13479218, 38655, 30941482, -24295556, -1569811, -18894098, -14878304, -4169340, +19628538, -3860102, 9060234, 9468792, -9470940, -20999706, 31038118, 13812078, -16736414, 3956739, +2907693, 8980777, -16230681, 15778099, -630823, -31173410, 4096862, 6987375, 8959302, -25700548, +-5516886, 3970697, 24022826, 5079336, 13784698, -33298344, -19758460, 11118060, 942208, 22886270, +-4949950, -3015604, 2747705, 12017855, 11439645, 4704063, -42013908, 12949326, -3755949, 10676752, +24401320, -6489696, -553514, -25526602, 10179072, 12657805, -12017318, -7534447, 25885232, 38136088, +12220793, 6192806, -7803419, -31644246, -20854750, -7474854, -773094, -18214956, 13661217, -37307696, +1345935, -23070416, 11297375, -8825621, -25598006, -2655364, -7217693, -9286256, -29088202, -21328270, +5553393, 22179212, -15595026, 27483496, -24186572, -16021839, 4678830, -2711735, 12252468, -8280697, +-8691403, -11900281, -3616363, -39505648, -11650636, 789737, -2073932, -6853694, -15770583, 11983496, +-13981729, 20618528, -6808060, -2876018, -15136538, -13897440, -26222922, -11505681, 9310952, 3760781, +-1803349, 1557463, -9535364, -7150584, -12200928, -10155450, 5141613, 7682623, 3511673, -22490596, +25698400, 3583077, -11210402, 20781736, 14763950, 24820080, -4596152, 14681272, -33538862, -17748952, +-31607738, 32980516, -10158135, -21795348, -21348134, -45093400, -18815714, 33240900, -1534914, -14906758, +7975218, 39975408, 51306068, -5216238, -23150410, -5790153, -8883603, -23505820, 9761924, 265751, +-16958678, 48888004, 16933446, -12094628, -34322696, -3501472, 8110509, 8531416, 9898826, 23094040, +-6877854, -12160663, 10997801, -43294880, -28639378, -11720966, -3111167, 4016868, -22863722, -21457656, +21988622, 16874390, -13445932, -26531086, 16451872, -186294, 29020020, -24286430, -5365488, -8766028, +-1401770, -19396072, -27707908, 22571664, -17139604, -11685532, -21133386, -5577552, 14140106, 12327093, +-8442832, 976031, 2593087, 16709570, 27099096, 18934900, -34444564, -17561048, -20396262, -6102612, +11886322, 3331284, -23570244, -34959960, 28814398, 849330, -28289338, -47790636, 23449984, -6961605, +12355010, 11056320, 11768210, 1340567, 7939784, -17758616, -9484898, 4880157, 18388902, 22695144, +-27498528, -23041426, 66575216, -5064840, -6174016, -9669045, -20603494, -2006824, 24234890, 38694436, +-17361868, -10417443, -3555696, -17210470, -3998615, -9584220, 15636902, -15524159, 17858474, 8613020, +-5611912, -21754546, -1212791, -8791261, 33493228, -17879412, -10737, 354335, -2846490, 15271830, +-9061844, -929860, 7366406, -4196720, -31791884, 16824460, -14207215, -16697222, -3375844, -17811766, +-9995463, -32654100, 32244466, 1899986, -20447802, -38268696, 23223962, -22334366, -21625160, 875100, +-16654809, 8474507, 15078020, 44776644, -11723650, 18045306, -2858838, -20422032, -17208324, -4271882, +67260264, -57307212, -3272765, 62278100, -54654532, -19481434, 32498406, -2608119, -24012626, 61428232, +-27926414, -8799314, 32470490, -38736848, 37004364, -4942434, -21082384, 20439750, 7950522, -2398739, +5228049, 3800509, -3110093, 8212515, -6503654, -8791261, -3333968, -12631499, -10304163, -24769614, +-8713952, 23570780, 22315576, -31069256, 12064563, 18393198, 15641197, -4292820, -30602716, -1610076, +-14477261, -36048736, 24887188, 61125976, -32974612, -2383707, 43885440, -10710575, -13744432, 35905388, +27074936, 14064407, -12444668, -26361972, 10801843, -9842454, -16012175, 64085744, 47651052, -36160404, +-26116086, 35416836, -59885264, -19991462, -15644955, -8875550, 44969920, 30479772, 20822538, 22611392, +-70308616, -23236846, 71208408, 42119672, 10552735, -16117939, 26330298, -21817360, -46394236, -30084636, +27100170, -14926622, -336618, 31337692, 55737400, -1968169, -23890756, 9678172, 27738510, -60724932, +27099634, 878858, -5710159, 31989990, -4772246, -23130010, 12492986, 11455752, 31281320, 17993766, +-16042777, 1487132, 5315022, 21641804, 5446019, -23619636, -367220, -777926, 5506148, -21918292, +-24009404, 36230196, -12268037, -36610840, 19719806, 33689724, -18034030, -5683853, 2732673, 23313620, +-26477400, -34844532, 10304163, 30663920, -5944235, -12095702, -6859600, -6605660, 13597330, 6281927, +8340827, 76328008, 4716411, -8895951, 1564979, 3163780, 41350336, 2110977, -13995151, 10050760, +-31409632, -17850420, 8764418, 1101659, 35554812, 28849296, -17583060, -4217121, -16628503, 1951526, +12955769, 4433480, 4227859, 13951128, -8781061, -35633196, 9623411, 26826366, -11825119, 24178518, +-34562140, 18680960, 9935870, -26993332, 4298189, 4563403, -11828877, 19072876, -41609108, -132249024, +-156103808, -15899432, -108874200, 39936216, 258542528, 138103056, 209625536, 220959968, -26219164, -66328792, +17098264, -164495104, -200507856, -63406604, -220512752, -177529248, 42584064, -128276176, -36294084, 249559072, +89212376, 175844016, 305456992, 180872880, 79977656, 60243360, 19978040, -138905152, -172205632, -58226872, +-234518096, -234904640, 28994788, -176140368, -144628736, 84031032, -148201072, -152600192, 112219976, 44402984, +-22305912, 266836656, 250093792, 158907888, 339659968, 319740448, 108533824, 126389616, 98557152, -163208224, +-163197488, -206366736, -406961024, -480461888, -345406112, -344069824, -253527088, 8209830, 23448374, 167160672, +289638112, 356904256, 325891904, 378216416, 325039360, 193135552, 131750272, 47417512, -57416732, -134692864, +-192677600, -159542464, -232629392, -248321056, -149541104, -71778568, -35441532, 0, 0, 0, +0, 0, 0, }, }, { { -207769, -2129230, 2378338, 6924561, -845035, 1109712, 818191, -422517, 3914863, 2948495, -5400922, --3054796, -4917201, -2898566, -550830, -3492345, 56371, 377957, 250182, -486942, -312459, --4798016, -762894, 1109175, 1853278, -2304787, 2971581, 912144, -2384244, -1576790, 545461, -2966749, -988379, -1027571, -1480153, -3993783, 802085, -5181878, -431644, -2572149, -2367064, --1709397, 1088774, -1753420, -2943126, -2068027, -301721, -1503239, -4112431, -1752347, -1159104, --1043140, -3055332, 427886, -1483374, 3561602, 711354, -4119411, -2372433, 5035849, -1497870, -1408212, -2736431, 1346472, 2304250, 2122251, -3716757, 1923072, 2672544, 1945620, -186831, --2221572, -1426466, -2022393, 1388348, -625992, 1056562, -9175124, -10882910, 5218922, 67109, -8002598, 2720862, 3404835, 2065342, 3117610, -373662, -333934, -2141041, -5625334, -3409667, -1220308, -565862, -1209570, -944356, 2666101, 1928440, -171799, 2277943, -2623151, -6467147, -1763084, -1758252, 498216, -3469260, 2273648, -2908230, -1466195, -1364189, 4228932, -1396938, --222801, -2204929, -675384, -5349919, 1512365, -1225139, 2527588, -2757906, 162135, -1519882, --4145717, 855235, -543850, -1503239, 1636919, 2849711, -816581, -2461016, -5972689, 71404, --3598109, 1136556, -61740, -2742337, -205085, -1475858, -925029, -4744328, 2622615, -4289599, -1965484, -2049773, -2591476, -2734284, -4584878, 1826972, 128312, 539555, 2581275, -3627637, --4775467, 2138357, -15545097, 0, -1905355, 4300336, 266288, 1751273, -1105417, 2211908, -601832, 1949915, -1610613, 10295037, -1991791, -1286880, -4134443, 1597191, -5031018, -1555852, -632434, -2428804, 211527, 3848291, 2388539, 1535451, 2773475, 3733400, -4129074, -1568737, -198105, 2407329, -3860639, 4155918, -3171833, -1653026, 3561602, -518080, 1078574, -2487323, -3339337, 3227668, 3721589, -5082557, -1207423, 5670431, 312459, -761283, -848793, 6167573, -4393215, 4786204, 526670, -1030792, -944893, -266288, 360777, 758062, 2336999, -5823439, -12348, -2680060, -2902324, -394063, 1618666, -2993055, 1475858, -2271501, -143881, -876173, -702227, 2115808, 2738579, -969052, 253403, -1190780, -3687766, -844498, 5527623, 6513318, --4220342, 752693, -3573950, 5986111, 1245004, -2208150, -3219078, -2815351, -450435, 928787, -1716376, 7911330, -4410395, -531502, -1643899, 3224984, -8437463, -804233, 5675263, 55835, -4799089, 2253784, 3886946, 4070555, 1861868, -532576, -3857954, 1561758, -941135, 745714, -6620692, 1858647, 5712844, -2651606, -1304060, 673773, -7209103, 1130113, 5757941, -1358283, -739271, -4355634, 3732327, 214748, 1794760, -5182952, 3479997, -3366718, -1793149, -3514894, --4246649, 2961380, 1178969, -1090922, -2003065, -1791001, -1275068, -666257, 2924336, -2073932, --4198868, -6573448, 6988449, 5587753, 761283, -6452115, 2707440, -2669322, 3432216, -1425392, -1270774, -3233574, -1790465, -4048544, -1263794, 2767570, 26732414, -9929428, 11976516, -9518184, -816581, 2838437, 2811056, -7860864, -2667175, -2645700, -13152800, -80531, 695785, -4751308, --767189, -70330, 9403831, 1722819, -6560563, 4771172, 5228049, 1145683, 9532143, -7114077, --2596845, -3817152, 2010045, 7604240, -558346, 444529, 2836289, -1407676, 3406446, 1494649, -8718247, -1369558, 3411278, -5774584, 5205501, -4067871, 5811091, -177704, -6103149, -996432, -8780524, -480499, 5933498, 3470871, 5703180, 395674, -4553739, -3812857, 68183, -2881923, -4669167, 2956011, -4684736, 461172, -3672197, 5999533, -1730335, 4745402, 5893232, 775778, -6069863, -588411, -3033858, -1367410, -3859028, -252866, 7962333, -5571110, -5273683, -2634426, -2152316, -2723546, -22313428, 2387465, -6603512, -4740034, -7236483, -8768713, 3393024, 7741142, --1218697, 2976949, 1191853, 3947612, 866510, 237834, 2376191, -4828080, 11023570, -632434, --6477348, 7202660, -2255395, 3023657, -7293928, -4575751, -5177046, 2168422, 1320166, 5622112, -142271, -3588982, 565325, -3211025, -3491809, -3903052, -1361505, -5410585, -2736431, 4929012, --4664872, -386547, -3652870, -5735929, -2549600, 655519, 1802276, 3550864, -2876554, -2675228, -3548180, 571231, 1327145, 897648, 2192581, 3297461, -5449777, -1862942, -566399, -7657927, -2003602, -570157, 4443144, -4494684, -3436511, -4195110, 687732, 4716411, 3613678, 8340290, -5531918, -5133560, 1999307, -2292439, 3800509, 2547453, -5811091, -28714004, 7418483, -8818642, --7410966, -5429913, 587874, -1837172, 16330539, 1283122, 3624953, -2223183, -308701, -7221988, -6437619, 1627256, -1370632, 1005559, 8513699, -4820027, -1923609, 1687922, 228170, 4097936, --4278861, -2117956, 4511327, 1429687, 4120484, 165356, -5203353, -3521336, 2295660, -850940, --2044941, -3384434, -2151242, -591095, 8003672, 1729261, -1957968, -229781, 184147, -2972654, -5628555, 4225711, -1900523, -6815040, 1137093, -3824132, 5311264, 4029753, -4980552, 1283122, --6317360, -5690832, -5065914, -6249715, -2488397, 726923, -3966939, -283468, -4337917, -3832722, -6116034, 3585224, -6193343, -8319889, 288300, 5710696, -5590974, -4590247, 4879083, 3294240, -5625871, -15015743, -1568737, 2431488, 7168301, -1492501, -3900367, 1627793, 10570451, -13507672, -3012920, -2792803, -2600066, -6110665, 3527242, -10825465, -7121056, 3650185, -5743982, 3358665, -15226196, -2756832, 6083285, -7252053, 7288560, -1956895, 2087891, -6497212, 2898029, 1817845, --3593277, 1511292, -825707, -3336116, -348966, 4212826, 6477348, -5166309, -8376797, -6524056, --6183143, 804233, 4715874, 12857521, -273267, 8675297, 8899172, -8352638, 6332393, -12296491, --4635344, 842887, -5609764, -5049271, 3311957, -11878806, -2471217, 8409546, -3691525, -3029563, -1003949, -3543348, 3315178, -3503620, 5759015, 7670812, -2153389, 2487323, 261456, -7475391, -618475, -4767414, -3433290, -5835250, 3400004, 2873333, -5888937, 1001264, 3106872, 35542464, --1558536, -13825500, -1609002, -438087, 1476395, 4640712, 1945083, -1430761, -1335198, -6849399, --3229279, 4154844, 8744017, -6873559, -4368519, 5989869, 547071, -1853278, 2379412, -333397, --8146479, -8114804, 11408507, -816044, -694711, -1650341, 5852967, -198105, 615254, 3977140, --6243809, 6871411, 2712809, 1347546, 2468533, 6878390, -15955267, -6828461, -3961034, 14918569, -1766305, 1384053, -4656819, -4673462, 4199941, -363998, 4864051, -1509681, -10401337, 1388885, -945430, -1235340, 4589173, 2516851, 926639, 8413841, 19313932, -1266479, -2208150, 7825431, -1663226, -2049236, 4441533, 15663746, -2593624, 3202972, 4537096, 4709969, 2744484, 4278861, -2999498, 3644280, -6125697, 6131066, 8011188, -2915746, 6999186, 7818451, -10280541, -3066070, --8758512, 8397735, 15787226, -7750806, -1968169, -8868034, -3993783, -10700911, 7370164, -6561637, --2833068, -763967, -132607, -4291209, -5412733, 9462887, -8868571, -3245922, 755377, 6455873, -6697465, -9997073, -3179350, 3807489, -8829379, 4854387, -7066832, -2774012, 2227478, 207232, --4007205, -1017370, 1750736, 11161546, 1068910, 2554432, -315680, -9466645, 10070625, -5037460, --8139500, 6318434, -5912023, -6199786, 7832410, -3604015, 671089, -1694365, 709743, 10908680, --2250026, 2565169, -9842991, -573378, 10530186, 2637647, 10412074, 9507447, -3535295, -2157684, --13131863, 2187212, -2635499, 8649527, 9739375, -5610301, 2011118, -18250926, -5636071, 6489696, --6970732, 9936407, 6554657, -7991861, 2947421, -7468948, -663572, -10144713, 17063368, -4840428, -1328219, -5206574, -15220827, 9002788, 3303367, -11382737, 7318625, -5070209, -3607236, 4126390, -16201154, -7880728, 15665356, -210453, -10626823, 544387, 3845070, -9469329, 10788421, -5454609, -8060580, 17041894, 1922535, -7861938, -1946157, -845035, 4173098, -6688875, -3389266, -862752, -8669928, -2945274, -3042984, -11074573, -47245, -13106630, -2077154, 14905147, -2979634, 8490077, -1181653, 2268817, -19110456, 268972, -12064563, 10048613, 17920752, 5379984, 4860829, 1065152, -3119220, -10222022, 4129611, 5412733, -3962107, -1311039, -3393561, -2607582, 8577050, 136902, -10341208, 29250338, 11601780, 2914135, -8968429, -9295383, -4631586, 5975910, -7492034, -4449586, -29820494, -17353278, -1225139, -9020505, -16296180, -21516176, 4976257, -7442105, 5319854, -20413980, -3092377, 6185290, 5539434, -9048422, -18748606, -14991583, -12645457, -670015, -7661148, -13962402, --9773735, -5425618, -11453604, -8316131, 1061394, 12714714, -1084479, 1092532, -1209033, -12765717, -6623914, -1927367, 1444183, -3503083, -8587250, 5872831, -10522670, -14591078, 11643656, -14250701, -1989107, -952946, -19449760, -12057047, 6720550, -1153736, 8431558, -6815040, -20551418, -876710, -133144, 6669548, 7428146, 17894982, -11309186, -39182988, -13902809, -13827110, 8191577, -25728464, --8833137, -4819490, -23254026, -8241506, -617402, -4893042, -4442607, 4581657, -6213207, -845572, --5681168, 5296769, -13160317, 5131949, 11555610, -12300786, -17294760, 7419019, 9229348, -2547453, --2919504, -8489003, -9225590, 22854594, 8769249, -20735028, 7874286, -11188927, -463320, -10168335, --20941724, 6562710, -10560251, -4522064, 1629940, 797790, -4727149, -18136574, -10519449, 9080098, --10352482, -221191, -9018358, -15147276, -4985384, 16925392, 3689377, 3017752, -13697724, -4954245, --1938641, -1962800, 7114077, 7332583, 10725607, 11713986, -4526896, 6530498, 3627637, -6979322, -5552856, -11652783, -8558796, -8853538, 5228586, -10226854, 2063732, -15285789, -11490111, -7099581, -17311940, 11789148, 13677323, 12639015, -10032507, 15892990, 2638721, 7032472, 24696598, -5167383, --1741072, 3043521, -8236674, 3769371, -2281702, -14751065, 4893579, 10508174, -10067403, -10691247, -2306398, 10951093, -5041218, -8860518, -20164872, 22266722, -18059800, 23069344, 12751221, 8551280, -4647155, 8830990, 9633075, 8866423, 24823838, -9210557, 1400159, -2078227, -4727686, -1163936, -2741800, -2745558, 4461934, -2045478, 7491497, 6194417, -1814624, -4789963, -25516400, -9381282, --18624588, -1283658, 9192304, 9237938, 2662343, 4473746, 6812892, 5508296, 6581501, 17500918, -26382374, 17498234, 3171297, -3930432, -5654862, -8238821, 8902393, 9006546, 10219875, -8548596, --6801081, -10488310, -2171106, 12450036, -431644, 15014669, -10083509, 7707319, 4445291, 13339095, --30034170, -21813066, -9299678, -12625593, -12806519, 2759517, -5706401, 17566416, 4657355, -21640192, --2609193, 32263258, -12252468, 9167608, -6157373, 12302397, -7639136, -5838471, -862752, -14925548, --7694971, 11576547, 4799626, 8429947, 22657026, 1550483, 14985141, 22151830, 15215459, -10634339, --23426362, -1187022, -11013370, 24349780, 6649146, 18939732, -3248606, -10766946, -4312684, -11706470, -3968013, -9092446, 545998, -10077067, 4536023, -7458211, -3499862, -15938087, -15957414, -1888712, --22640384, 11757473, 7800198, -6955163, 10770704, -5718212, 3843459, 12283606, -14545980, -18626200, -2678449, -4294431, 30166240, 12790949, -34357592, -9372692, -10198937, -17653926, -19065896, -37921340, -5998996, -13702556, -4203699, 5242545, 686121, 7634305, -2203855, -4550518, -29310468, 3357591, --13754096, 3528316, 15960098, 3615826, 10399726, -16849156, -23488102, 4860293, 13065827, 9880035, -4239133, 9624485, 13442711, 19195820, 17467632, 40411884, 26544508, 37056440, 2005213, -7800735, --25876642, -7872138, 3805341, 5545877, -6529961, -20009178, -7585986, 32011464, 12881681, -4807679, -9396315, -1055488, -12416214, -3790309, -8303783, 21747030, -2261300, 988916, 8935143, 325881, -10197863, -407485, 14665703, -14363981, 16971026, 3281892, -8882529, -5248450, -9791989, 15629386, --22771916, -24082418, 14296872, 24618752, 380105, 16909824, 22813256, -26889716, 8000451, 5160403, --2356863, -522375, 3015067, -10272488, 17575544, -11550241, -9982041, 7202124, -139050, -2315524, --5459977, -5861557, 1467268, -17904644, -6548752, 13814762, -18710488, -4357781, -13181255, 51540, -33508262, -11446088, 529892, 8923868, -1731946, -8610873, -24067386, 20780662, 7484518, -45023068, -7757248, 9016747, -18375480, -43844636, 38738456, 23026394, 12186433, 8513699, 19065360, -44261784, -17963700, 20193326, 8574365, -28413894, 15556372, 28346784, 13068512, 31262530, 11311333, 312996, --1427540, -1230508, -5550709, 13070659, 22155588, 21008296, 7224672, -6857989, -11345156, 2312303, --10370199, -12215961, 12176232, 8152922, 2067490, -12318503, -11877732, -3034395, -10400263, 4571993, -25301652, -5173288, -8744553, 8006893, 4179003, 6876243, 8448738, -2784213, -5766531, 19739670, -13020730, 5739150, 8402567, -2794413, -21306796, 3492345, 12783970, 343061, -16253767, 18820010, -4226248, 26585848, -191126, 23439784, 1312649, -10829760, -4353486, 3249680, 34479460, -8033200, -10829223, 4770098, 14468134, 3712462, -3342022, -8158827, 6584185, 41151156, -5718212, -5542119, --27847494, 31870804, 143881, 28300076, 1284732, 2560874, -24501714, -7009924, -10718091, 19890530, -5432060, 9235253, 5605469, -18509162, 2430415, 2319819, -16411607, -23426362, -24256902, 9193914, --8726837, 23374286, 1753957, -6302328, -5412196, 5730023, -8306467, 2341831, 7014219, -8579734, -5714991, 8523363, 2959769, 3114925, 17403208, 29632054, -5284958, 751082, 14717779, 12793097, -17546552, -11784853, -4746476, 6232535, -16906066, 2726231, 1720134, -21715354, 29575682, -355409, -15006079, 13896367, 9133248, -16218333, 1774895, 15939161, -11946988, 27498528, 7315940, -8498667, -21841520, 17572322, 11471858, -35582732, -7515119, 8392366, -12618614, 2994129, -20613696, -4229469, --31238370, -8213051, -5055177, -8382166, -34825204, -4414690, -9382356, 37820408, 18111340, 16165720, -12542915, -5589900, 8589398, 19696184, 19024020, 9568650, -18556406, -21756156, 12586939, -1174137, -9645423, -2269353, 22216256, -12970264, -1155346, -3066070, 19609746, -11111617, 32894618, 40212168, -40741524, 4567161, -5270999, 8487929, -3126736, 11691975, 249108, 1990717, -9478993, -28932510, --8496519, -27608050, 18966038, 18323942, -16531866, -11526082, -16593069, -6376416, -843424, 42908872, -2277943, -18509698, -20512764, 890669, 30195768, 15817828, -55268712, -9413495, -8371965, 9697499, -23099944, -22582938, -6204617, -12605192, 8068096, -31694174, 18339510, -3613678, 704912, 11304891, -2772938, -14742475, 34609384, -1715303, 16966732, 37078988, 74048456, 44902272, -557809, 25115358, -37250788, 47551732, 50864224, 12671227, 27404038, 10897943, -5196911, -14398341, 20973400, -21842594, -41923712, -2866354, -5033702, 2497524, 33960844, -19430968, -1347009, 718333, 2880313, 13060996, --5669894, 18074832, 8338679, -1662152, 6506876, 3289408, 15744276, -38491496, -9743133, 37044, -7104950, -2752000, -26040924, 24925842, 1738388, 4297652, 11770895, -17965848, -5387500, -43039332, -14977088, -9489730, 11862163, 32789928, -5245229, 7350837, -461709, 15823196, -22429392, -34661996, -34678104, -2566243, 6729677, 5413807, 35171488, 22617834, 31266826, -511101, -31295280, 21123722, -14857902, -8835821, -7612293, 19857782, 1648731, 25055766, 48322140, 32212792, 11722576, 1731409, -37968584, -7631620, 16725140, 24136106, -9872519, 27827630, 26933740, 8189429, -11311333, -13280576, --16461536, -2871186, -1857573, -55399172, 12306155, -9322227, -2541010, 42928736, 18095234, -13602698, --10924249, -211527, -28372554, -34132640, 2332167, 348966, -19805168, 20484846, 1827509, -19545860, -11764989, 37260452, -5696201, -21083458, 12629351, -12250857, -14522895, 7293392, 29225104, -9359807, -3493419, 8752070, -10241350, -21839908, -15707232, 30346628, 9400073, -28599650, 23957864, 10600516, --21233782, -9649718, 40066676, -12502113, -32934346, -15271293, 53544820, -53066468, -26470420, 33317136, --15970836, -16139413, -53092240, 41636488, -34591128, 13315472, 104153, -4600447, -59955060, -15509127, -48132088, 33295660, -41248328, -8823473, -18971944, -5971079, 6105296, 13074417, 10922639, -66486092, -35508104, 31317828, 28064926, 2888903, 13547937, -31603980, -32279900, 59446104, 22142704, -45158896, -8211978, 57163868, 18069464, 6461779, 1851668, 4643934, 24647206, 33743412, -7360500, 6630893, -8881992, -5331665, 20360830, -10184441, -2622078, -7591892, 15670725, 11926587, -6116571, 11013907, --14971719, -11878269, 15606301, -9439801, 17118130, -10811506, -4882304, 179315, 9398462, -55835, -7010461, 3331821, 17372606, -11810623, -2392297, 869194, -6809134, 17262548, 14521821, -11361262, --4208531, -6737193, 3854733, -14797773, 8326331, 5402532, 7628399, -5502927, -4703526, 19670414, --22861038, -3249680, 9576166, -5473936, -4216048, 10674604, -28123982, 7535520, -10237055, 2469069, --10030896, 25077240, -7984344, -9614821, 9881109, -4596689, -15949361, 31830540, -848793, 4256313, --6781217, -10576894, -13658533, 17329120, -16597364, -5357435, 14087493, -43122008, -120503360, -99128384, -51227684, 14159433, 118231856, 211882544, 30799748, 66290136, 23603530, -170343232, -54419384, -115794464, --139828032, 3170760, 21411486, -58730456, 83249888, 109271488, 60945584, 174712288, 100379288, -23290534, --42439108, -82122992, -159248256, -125839320, -37679748, -112284944, -16345572, 95580736, 15283641, 21722334, -144758656, 73570640, 45144400, 151080304, 22599582, -42555608, 58552216, -80128520, -158189008, -66517232, --133572944, -166848736, -3173981, -35321812, -44481904, 110115448, 121291488, 77071040, 183387056, 147987392, -69406672, 62867048, 36066452, -123453464, -113726440, -143680080, -189709248, -152004256, -64444912, -44166760, -3559991, 108737832, 132098696, 138666784, 132798240, 123593592, 26701812, 3552475, -19709604, -91211144, --99941744, -53811108, -97657896, -22536768, 11902965, 1081258, 0, 0, 0, 0, -0, 0, 0, }, +2129230, 2378338, 6924561, -845035, 1109712, 818191, -422517, 3914863, 2948495, -5400922, +-3054796, -4917201, -2898566, -550830, -3492345, 56371, 377957, 250182, -486942, -312459, +-4798016, -762894, 1109175, 1853278, -2304787, 2971581, 912144, -2384244, -1576790, 545461, +2966749, -988379, -1027571, -1480153, -3993783, 802085, -5181878, -431644, -2572149, -2367064, +-1709397, 1088774, -1753420, -2943126, -2068027, -301721, -1503239, -4112431, -1752347, -1159104, +-1043140, -3055332, 427886, -1483374, 3561602, 711354, -4119411, -2372433, 5035849, -1497870, +1408212, -2736431, 1346472, 2304250, 2122251, -3716757, 1923072, 2672544, 1945620, -186831, +-2221572, -1426466, -2022393, 1388348, -625992, 1056562, -9175124, -10882910, 5218922, 67109, +8002598, 2720862, 3404835, 2065342, 3117610, -373662, -333934, -2141041, -5625334, -3409667, +1220308, -565862, -1209570, -944356, 2666101, 1928440, -171799, 2277943, -2623151, -6467147, +1763084, -1758252, 498216, -3469260, 2273648, -2908230, -1466195, -1364189, 4228932, -1396938, +-222801, -2204929, -675384, -5349919, 1512365, -1225139, 2527588, -2757906, 162135, -1519882, +-4145717, 855235, -543850, -1503239, 1636919, 2849711, -816581, -2461016, -5972689, 71404, +-3598109, 1136556, -61740, -2742337, -205085, -1475858, -925029, -4744328, 2622615, -4289599, +1965484, -2049773, -2591476, -2734284, -4584878, 1826972, 128312, 539555, 2581275, -3627637, +-4775467, 2138357, -15545097, 0, -1905355, 4300336, 266288, 1751273, -1105417, 2211908, +601832, 1949915, -1610613, 10295037, -1991791, -1286880, -4134443, 1597191, -5031018, -1555852, +632434, -2428804, 211527, 3848291, 2388539, 1535451, 2773475, 3733400, -4129074, -1568737, +198105, 2407329, -3860639, 4155918, -3171833, -1653026, 3561602, -518080, 1078574, -2487323, +3339337, 3227668, 3721589, -5082557, -1207423, 5670431, 312459, -761283, -848793, 6167573, +4393215, 4786204, 526670, -1030792, -944893, -266288, 360777, 758062, 2336999, -5823439, +12348, -2680060, -2902324, -394063, 1618666, -2993055, 1475858, -2271501, -143881, -876173, +702227, 2115808, 2738579, -969052, 253403, -1190780, -3687766, -844498, 5527623, 6513318, +-4220342, 752693, -3573950, 5986111, 1245004, -2208150, -3219078, -2815351, -450435, 928787, +1716376, 7911330, -4410395, -531502, -1643899, 3224984, -8437463, -804233, 5675263, 55835, +4799089, 2253784, 3886946, 4070555, 1861868, -532576, -3857954, 1561758, -941135, 745714, +6620692, 1858647, 5712844, -2651606, -1304060, 673773, -7209103, 1130113, 5757941, -1358283, +739271, -4355634, 3732327, 214748, 1794760, -5182952, 3479997, -3366718, -1793149, -3514894, +-4246649, 2961380, 1178969, -1090922, -2003065, -1791001, -1275068, -666257, 2924336, -2073932, +-4198868, -6573448, 6988449, 5587753, 761283, -6452115, 2707440, -2669322, 3432216, -1425392, +1270774, -3233574, -1790465, -4048544, -1263794, 2767570, 26732414, -9929428, 11976516, -9518184, +816581, 2838437, 2811056, -7860864, -2667175, -2645700, -13152800, -80531, 695785, -4751308, +-767189, -70330, 9403831, 1722819, -6560563, 4771172, 5228049, 1145683, 9532143, -7114077, +-2596845, -3817152, 2010045, 7604240, -558346, 444529, 2836289, -1407676, 3406446, 1494649, +8718247, -1369558, 3411278, -5774584, 5205501, -4067871, 5811091, -177704, -6103149, -996432, +8780524, -480499, 5933498, 3470871, 5703180, 395674, -4553739, -3812857, 68183, -2881923, +4669167, 2956011, -4684736, 461172, -3672197, 5999533, -1730335, 4745402, 5893232, 775778, +6069863, -588411, -3033858, -1367410, -3859028, -252866, 7962333, -5571110, -5273683, -2634426, +2152316, -2723546, -22313428, 2387465, -6603512, -4740034, -7236483, -8768713, 3393024, 7741142, +-1218697, 2976949, 1191853, 3947612, 866510, 237834, 2376191, -4828080, 11023570, -632434, +-6477348, 7202660, -2255395, 3023657, -7293928, -4575751, -5177046, 2168422, 1320166, 5622112, +142271, -3588982, 565325, -3211025, -3491809, -3903052, -1361505, -5410585, -2736431, 4929012, +-4664872, -386547, -3652870, -5735929, -2549600, 655519, 1802276, 3550864, -2876554, -2675228, +3548180, 571231, 1327145, 897648, 2192581, 3297461, -5449777, -1862942, -566399, -7657927, +2003602, -570157, 4443144, -4494684, -3436511, -4195110, 687732, 4716411, 3613678, 8340290, +5531918, -5133560, 1999307, -2292439, 3800509, 2547453, -5811091, -28714004, 7418483, -8818642, +-7410966, -5429913, 587874, -1837172, 16330539, 1283122, 3624953, -2223183, -308701, -7221988, +6437619, 1627256, -1370632, 1005559, 8513699, -4820027, -1923609, 1687922, 228170, 4097936, +-4278861, -2117956, 4511327, 1429687, 4120484, 165356, -5203353, -3521336, 2295660, -850940, +-2044941, -3384434, -2151242, -591095, 8003672, 1729261, -1957968, -229781, 184147, -2972654, +5628555, 4225711, -1900523, -6815040, 1137093, -3824132, 5311264, 4029753, -4980552, 1283122, +-6317360, -5690832, -5065914, -6249715, -2488397, 726923, -3966939, -283468, -4337917, -3832722, +6116034, 3585224, -6193343, -8319889, 288300, 5710696, -5590974, -4590247, 4879083, 3294240, +5625871, -15015743, -1568737, 2431488, 7168301, -1492501, -3900367, 1627793, 10570451, -13507672, +3012920, -2792803, -2600066, -6110665, 3527242, -10825465, -7121056, 3650185, -5743982, 3358665, +15226196, -2756832, 6083285, -7252053, 7288560, -1956895, 2087891, -6497212, 2898029, 1817845, +-3593277, 1511292, -825707, -3336116, -348966, 4212826, 6477348, -5166309, -8376797, -6524056, +-6183143, 804233, 4715874, 12857521, -273267, 8675297, 8899172, -8352638, 6332393, -12296491, +-4635344, 842887, -5609764, -5049271, 3311957, -11878806, -2471217, 8409546, -3691525, -3029563, +1003949, -3543348, 3315178, -3503620, 5759015, 7670812, -2153389, 2487323, 261456, -7475391, +618475, -4767414, -3433290, -5835250, 3400004, 2873333, -5888937, 1001264, 3106872, 35542464, +-1558536, -13825500, -1609002, -438087, 1476395, 4640712, 1945083, -1430761, -1335198, -6849399, +-3229279, 4154844, 8744017, -6873559, -4368519, 5989869, 547071, -1853278, 2379412, -333397, +-8146479, -8114804, 11408507, -816044, -694711, -1650341, 5852967, -198105, 615254, 3977140, +-6243809, 6871411, 2712809, 1347546, 2468533, 6878390, -15955267, -6828461, -3961034, 14918569, +1766305, 1384053, -4656819, -4673462, 4199941, -363998, 4864051, -1509681, -10401337, 1388885, +945430, -1235340, 4589173, 2516851, 926639, 8413841, 19313932, -1266479, -2208150, 7825431, +1663226, -2049236, 4441533, 15663746, -2593624, 3202972, 4537096, 4709969, 2744484, 4278861, +2999498, 3644280, -6125697, 6131066, 8011188, -2915746, 6999186, 7818451, -10280541, -3066070, +-8758512, 8397735, 15787226, -7750806, -1968169, -8868034, -3993783, -10700911, 7370164, -6561637, +-2833068, -763967, -132607, -4291209, -5412733, 9462887, -8868571, -3245922, 755377, 6455873, +6697465, -9997073, -3179350, 3807489, -8829379, 4854387, -7066832, -2774012, 2227478, 207232, +-4007205, -1017370, 1750736, 11161546, 1068910, 2554432, -315680, -9466645, 10070625, -5037460, +-8139500, 6318434, -5912023, -6199786, 7832410, -3604015, 671089, -1694365, 709743, 10908680, +-2250026, 2565169, -9842991, -573378, 10530186, 2637647, 10412074, 9507447, -3535295, -2157684, +-13131863, 2187212, -2635499, 8649527, 9739375, -5610301, 2011118, -18250926, -5636071, 6489696, +-6970732, 9936407, 6554657, -7991861, 2947421, -7468948, -663572, -10144713, 17063368, -4840428, +1328219, -5206574, -15220827, 9002788, 3303367, -11382737, 7318625, -5070209, -3607236, 4126390, +16201154, -7880728, 15665356, -210453, -10626823, 544387, 3845070, -9469329, 10788421, -5454609, +8060580, 17041894, 1922535, -7861938, -1946157, -845035, 4173098, -6688875, -3389266, -862752, +8669928, -2945274, -3042984, -11074573, -47245, -13106630, -2077154, 14905147, -2979634, 8490077, +1181653, 2268817, -19110456, 268972, -12064563, 10048613, 17920752, 5379984, 4860829, 1065152, +3119220, -10222022, 4129611, 5412733, -3962107, -1311039, -3393561, -2607582, 8577050, 136902, +10341208, 29250338, 11601780, 2914135, -8968429, -9295383, -4631586, 5975910, -7492034, -4449586, +29820494, -17353278, -1225139, -9020505, -16296180, -21516176, 4976257, -7442105, 5319854, -20413980, +3092377, 6185290, 5539434, -9048422, -18748606, -14991583, -12645457, -670015, -7661148, -13962402, +-9773735, -5425618, -11453604, -8316131, 1061394, 12714714, -1084479, 1092532, -1209033, -12765717, +6623914, -1927367, 1444183, -3503083, -8587250, 5872831, -10522670, -14591078, 11643656, -14250701, +1989107, -952946, -19449760, -12057047, 6720550, -1153736, 8431558, -6815040, -20551418, -876710, +133144, 6669548, 7428146, 17894982, -11309186, -39182988, -13902809, -13827110, 8191577, -25728464, +-8833137, -4819490, -23254026, -8241506, -617402, -4893042, -4442607, 4581657, -6213207, -845572, +-5681168, 5296769, -13160317, 5131949, 11555610, -12300786, -17294760, 7419019, 9229348, -2547453, +-2919504, -8489003, -9225590, 22854594, 8769249, -20735028, 7874286, -11188927, -463320, -10168335, +-20941724, 6562710, -10560251, -4522064, 1629940, 797790, -4727149, -18136574, -10519449, 9080098, +-10352482, -221191, -9018358, -15147276, -4985384, 16925392, 3689377, 3017752, -13697724, -4954245, +-1938641, -1962800, 7114077, 7332583, 10725607, 11713986, -4526896, 6530498, 3627637, -6979322, +5552856, -11652783, -8558796, -8853538, 5228586, -10226854, 2063732, -15285789, -11490111, -7099581, +17311940, 11789148, 13677323, 12639015, -10032507, 15892990, 2638721, 7032472, 24696598, -5167383, +-1741072, 3043521, -8236674, 3769371, -2281702, -14751065, 4893579, 10508174, -10067403, -10691247, +2306398, 10951093, -5041218, -8860518, -20164872, 22266722, -18059800, 23069344, 12751221, 8551280, +4647155, 8830990, 9633075, 8866423, 24823838, -9210557, 1400159, -2078227, -4727686, -1163936, +2741800, -2745558, 4461934, -2045478, 7491497, 6194417, -1814624, -4789963, -25516400, -9381282, +-18624588, -1283658, 9192304, 9237938, 2662343, 4473746, 6812892, 5508296, 6581501, 17500918, +26382374, 17498234, 3171297, -3930432, -5654862, -8238821, 8902393, 9006546, 10219875, -8548596, +-6801081, -10488310, -2171106, 12450036, -431644, 15014669, -10083509, 7707319, 4445291, 13339095, +-30034170, -21813066, -9299678, -12625593, -12806519, 2759517, -5706401, 17566416, 4657355, -21640192, +-2609193, 32263258, -12252468, 9167608, -6157373, 12302397, -7639136, -5838471, -862752, -14925548, +-7694971, 11576547, 4799626, 8429947, 22657026, 1550483, 14985141, 22151830, 15215459, -10634339, +-23426362, -1187022, -11013370, 24349780, 6649146, 18939732, -3248606, -10766946, -4312684, -11706470, +3968013, -9092446, 545998, -10077067, 4536023, -7458211, -3499862, -15938087, -15957414, -1888712, +-22640384, 11757473, 7800198, -6955163, 10770704, -5718212, 3843459, 12283606, -14545980, -18626200, +2678449, -4294431, 30166240, 12790949, -34357592, -9372692, -10198937, -17653926, -19065896, -37921340, +5998996, -13702556, -4203699, 5242545, 686121, 7634305, -2203855, -4550518, -29310468, 3357591, +-13754096, 3528316, 15960098, 3615826, 10399726, -16849156, -23488102, 4860293, 13065827, 9880035, +4239133, 9624485, 13442711, 19195820, 17467632, 40411884, 26544508, 37056440, 2005213, -7800735, +-25876642, -7872138, 3805341, 5545877, -6529961, -20009178, -7585986, 32011464, 12881681, -4807679, +9396315, -1055488, -12416214, -3790309, -8303783, 21747030, -2261300, 988916, 8935143, 325881, +10197863, -407485, 14665703, -14363981, 16971026, 3281892, -8882529, -5248450, -9791989, 15629386, +-22771916, -24082418, 14296872, 24618752, 380105, 16909824, 22813256, -26889716, 8000451, 5160403, +-2356863, -522375, 3015067, -10272488, 17575544, -11550241, -9982041, 7202124, -139050, -2315524, +-5459977, -5861557, 1467268, -17904644, -6548752, 13814762, -18710488, -4357781, -13181255, 51540, +33508262, -11446088, 529892, 8923868, -1731946, -8610873, -24067386, 20780662, 7484518, -45023068, +7757248, 9016747, -18375480, -43844636, 38738456, 23026394, 12186433, 8513699, 19065360, -44261784, +17963700, 20193326, 8574365, -28413894, 15556372, 28346784, 13068512, 31262530, 11311333, 312996, +-1427540, -1230508, -5550709, 13070659, 22155588, 21008296, 7224672, -6857989, -11345156, 2312303, +-10370199, -12215961, 12176232, 8152922, 2067490, -12318503, -11877732, -3034395, -10400263, 4571993, +25301652, -5173288, -8744553, 8006893, 4179003, 6876243, 8448738, -2784213, -5766531, 19739670, +13020730, 5739150, 8402567, -2794413, -21306796, 3492345, 12783970, 343061, -16253767, 18820010, +4226248, 26585848, -191126, 23439784, 1312649, -10829760, -4353486, 3249680, 34479460, -8033200, +10829223, 4770098, 14468134, 3712462, -3342022, -8158827, 6584185, 41151156, -5718212, -5542119, +-27847494, 31870804, 143881, 28300076, 1284732, 2560874, -24501714, -7009924, -10718091, 19890530, +5432060, 9235253, 5605469, -18509162, 2430415, 2319819, -16411607, -23426362, -24256902, 9193914, +-8726837, 23374286, 1753957, -6302328, -5412196, 5730023, -8306467, 2341831, 7014219, -8579734, +5714991, 8523363, 2959769, 3114925, 17403208, 29632054, -5284958, 751082, 14717779, 12793097, +17546552, -11784853, -4746476, 6232535, -16906066, 2726231, 1720134, -21715354, 29575682, -355409, +15006079, 13896367, 9133248, -16218333, 1774895, 15939161, -11946988, 27498528, 7315940, -8498667, +21841520, 17572322, 11471858, -35582732, -7515119, 8392366, -12618614, 2994129, -20613696, -4229469, +-31238370, -8213051, -5055177, -8382166, -34825204, -4414690, -9382356, 37820408, 18111340, 16165720, +12542915, -5589900, 8589398, 19696184, 19024020, 9568650, -18556406, -21756156, 12586939, -1174137, +9645423, -2269353, 22216256, -12970264, -1155346, -3066070, 19609746, -11111617, 32894618, 40212168, +40741524, 4567161, -5270999, 8487929, -3126736, 11691975, 249108, 1990717, -9478993, -28932510, +-8496519, -27608050, 18966038, 18323942, -16531866, -11526082, -16593069, -6376416, -843424, 42908872, +2277943, -18509698, -20512764, 890669, 30195768, 15817828, -55268712, -9413495, -8371965, 9697499, +23099944, -22582938, -6204617, -12605192, 8068096, -31694174, 18339510, -3613678, 704912, 11304891, +2772938, -14742475, 34609384, -1715303, 16966732, 37078988, 74048456, 44902272, -557809, 25115358, +37250788, 47551732, 50864224, 12671227, 27404038, 10897943, -5196911, -14398341, 20973400, -21842594, +41923712, -2866354, -5033702, 2497524, 33960844, -19430968, -1347009, 718333, 2880313, 13060996, +-5669894, 18074832, 8338679, -1662152, 6506876, 3289408, 15744276, -38491496, -9743133, 37044, +7104950, -2752000, -26040924, 24925842, 1738388, 4297652, 11770895, -17965848, -5387500, -43039332, +14977088, -9489730, 11862163, 32789928, -5245229, 7350837, -461709, 15823196, -22429392, -34661996, +34678104, -2566243, 6729677, 5413807, 35171488, 22617834, 31266826, -511101, -31295280, 21123722, +14857902, -8835821, -7612293, 19857782, 1648731, 25055766, 48322140, 32212792, 11722576, 1731409, +37968584, -7631620, 16725140, 24136106, -9872519, 27827630, 26933740, 8189429, -11311333, -13280576, +-16461536, -2871186, -1857573, -55399172, 12306155, -9322227, -2541010, 42928736, 18095234, -13602698, +-10924249, -211527, -28372554, -34132640, 2332167, 348966, -19805168, 20484846, 1827509, -19545860, +11764989, 37260452, -5696201, -21083458, 12629351, -12250857, -14522895, 7293392, 29225104, -9359807, +3493419, 8752070, -10241350, -21839908, -15707232, 30346628, 9400073, -28599650, 23957864, 10600516, +-21233782, -9649718, 40066676, -12502113, -32934346, -15271293, 53544820, -53066468, -26470420, 33317136, +-15970836, -16139413, -53092240, 41636488, -34591128, 13315472, 104153, -4600447, -59955060, -15509127, +48132088, 33295660, -41248328, -8823473, -18971944, -5971079, 6105296, 13074417, 10922639, -66486092, +35508104, 31317828, 28064926, 2888903, 13547937, -31603980, -32279900, 59446104, 22142704, -45158896, +8211978, 57163868, 18069464, 6461779, 1851668, 4643934, 24647206, 33743412, -7360500, 6630893, +8881992, -5331665, 20360830, -10184441, -2622078, -7591892, 15670725, 11926587, -6116571, 11013907, +-14971719, -11878269, 15606301, -9439801, 17118130, -10811506, -4882304, 179315, 9398462, -55835, +7010461, 3331821, 17372606, -11810623, -2392297, 869194, -6809134, 17262548, 14521821, -11361262, +-4208531, -6737193, 3854733, -14797773, 8326331, 5402532, 7628399, -5502927, -4703526, 19670414, +-22861038, -3249680, 9576166, -5473936, -4216048, 10674604, -28123982, 7535520, -10237055, 2469069, +-10030896, 25077240, -7984344, -9614821, 9881109, -4596689, -15949361, 31830540, -848793, 4256313, +-6781217, -10576894, -13658533, 17329120, -16597364, -5357435, 14087493, -43122008, -120503360, -99128384, +51227684, 14159433, 118231856, 211882544, 30799748, 66290136, 23603530, -170343232, -54419384, -115794464, +-139828032, 3170760, 21411486, -58730456, 83249888, 109271488, 60945584, 174712288, 100379288, -23290534, +-42439108, -82122992, -159248256, -125839320, -37679748, -112284944, -16345572, 95580736, 15283641, 21722334, +144758656, 73570640, 45144400, 151080304, 22599582, -42555608, 58552216, -80128520, -158189008, -66517232, +-133572944, -166848736, -3173981, -35321812, -44481904, 110115448, 121291488, 77071040, 183387056, 147987392, +69406672, 62867048, 36066452, -123453464, -113726440, -143680080, -189709248, -152004256, -64444912, -44166760, +3559991, 108737832, 132098696, 138666784, 132798240, 123593592, 26701812, 3552475, -19709604, -91211144, +-99941744, -53811108, -97657896, -22536768, 11902965, 1081258, 0, 0, 0, 0, +0, 0, 0, }, { -713501, -1232656, 3558381, 4639639, 60666, -2546379, 3241627, 1820529, 3834869, 4727686, -1896765, --543850, -3818226, 2133525, 667331, -1609002, -4565014, 1530082, 2323577, 3124589, 180389, --4326643, -2462627, 2504503, -2974265, 2615635, -644245, 876173, 1027034, 984084, -4387846, -1372779, 1608465, -3016141, -5083094, -4860829, 263604, 388158, 1000191, -291521, 37581, --1410360, 2350958, -417149, 2052458, -3111704, -389768, 3265786, 6025302, 472446, -126702, -781684, 3526705, 2279017, -4315369, 1129576, 2113661, 1340567, 10737, 2299955, 2078227, -1320166, 1343788, 825171, -1111323, -2521146, 3261491, 1413044, -2014877, -386547, -1651415, -2185065, -43487, -1498944, 1830193, 1222455, 899259, -10684268, -12977781, 6375879, -2462627, -5558762, -2923262, -3002719, -5858336, 1235340, 1121523, -381715, -3221, -772020, -4497368, --641024, -2609730, -3027952, -2833605, -240518, 244813, -357019, -579284, 2043868, -687195, --6805376, 4066797, 1914482, -2344515, 516470, -136902, -81068, 866510, 4127464, -2452963, -94489, -7612830, 3600793, 683437, 1533840, 2553895, 4071092, -2422899, -1975685, -906238, --3973382, 259846, -752156, 3241090, -1949915, -260919, -2027225, -2136746, 3802120, -3038689, --1656247, 353798, -2939368, 2266669, -312996, -1294396, 2253784, 4530654, 59056, -173409, --870268, 3886409, -4095788, 51003, -857383, 2052458, -1218697, -1736777, 3925600, -49392, -560493, -1182190, -15477452, 2473364, 1681480, 5240934, -2238215, 1490354, 6124624, -2563559, -1582159, -3937411, -5692979, 1890859, -3914863, -4474282, -4464082, 1154809, 1532230, -7558606, -4230543, 2728378, -1381369, -2871723, 1611150, -837519, -1807108, 369367, 2333778, 1644973, -3799972, 582505, -1314797, 3857954, -2151242, 8621073, 1860258, 5237713, 1967632, 4568235, -1995012, 3085397, 1650341, 193274, 55835, 6457484, 1000727, -1277753, 309238, 3303904, -2470680, 163746, -436476, -1594507, 600222, 7894687, 2183454, 3517041, -4079682, -2266669, --4300873, -2872796, -4187593, 2756295, 1729261, -2842195, -2019172, 1525250, -2117956, 1722819, --1120987, -922344, -3021510, -5020280, 1749125, -7973070, -1385664, -2021856, 8812736, 12074227, --3468186, 3373160, -5732171, -140660, 534723, 15375983, -1371168, -3845606, -6366752, 324807, -4551592, 7165079, -1385127, -9006010, -2445447, -3327526, -2308545, 3291019, -471910, 6011344, -856846, -3131031, -7213398, 2399813, -481573, 1898376, -676457, 1012539, 3862249, 1509681, --9110163, 1300838, 6244883, 3132642, 981937, 1617055, -1250372, 4343286, -5264020, -357556, -4822712, -2959233, 277562, 7585986, -3131568, -163209, -2209224, 4742181, -4476967, -3363496, -2543158, -4773856, -2105071, 6656663, 4161287, -5579163, -1746978, -670552, -1026497, -2435783, -2509335, -2063732, 2845953, 121333, 857920, 1227287, 5425081, -383863, 7322919, 3621194, --4508105, -2283849, -1812476, 4027606, 1824287, -49929, 28144920, -10735271, 5516886, -8257612, --1074816, 34897, -825171, -4495220, 2085207, 3017752, 554588, -3339337, -6816113, -498216, -3780645, 2602213, -3129421, -5206574, -635655, 4177930, 7863012, -4627291, -822486, -3558917, --7322919, 530965, -3799436, 1886564, -2872796, 5246840, -9910637, 6265284, -659278, -6036577, -1174674, 2149094, -910533, -3333432, -37044, 7285339, -510027, 955630, -1292248, 2601140, -1116155, -2091649, -3060164, -6536940, 3822521, -1624035, -2041720, 2062658, -163209, -10807748, -7841000, -11620571, -6693170, -8352101, 1533840, -1332514, 4604205, -3034931, 2377265, -5257040, -2157147, -1751810, -2099702, -5845988, 3129958, 3110093, 6288369, -2270964, -665720, 856309, --1959579, -371515, -22382686, 2310156, 243739, -1868848, -3454228, 3958349, -3045132, 2653216, --818728, 12348, 3599183, 4771709, -2928631, 3535295, -1049583, -1845762, -6328098, -233539, --8542690, -6152541, 7409356, 2752537, -2965138, -966905, -957778, 5282273, 2645163, -2565169, -4626754, 3252364, 1741609, 1747515, 1888712, 3718368, 2963528, 3180960, 8205535, 7645579, -3085397, 964757, -5368709, 5917391, -7906498, 1666447, -2357400, 6407555, -4946192, -5989869, -10309532, -2303713, -5920076, -4883378, 7566659, 4986457, -24696, 4206384, 5361193, 2787434, -8850854, -374736, -1859721, 5411122, 2757369, 490163, -277562, -4609574, 2344515, 3186866, -6856916, 3236795, 3988414, -2626909, -4527970, -7818451, -2563559, -30273614, 7591892, -6803228, --9833864, -9754408, 5376226, -7359964, 4708358, -9138617, 4391067, 3626026, 2126009, -9611063, -5885179, -585726, 3419331, -8058970, 3852586, 8472360, 6490770, -251256, -3564823, 752693, --2283849, -10180146, -2298344, -5170604, 1877438, -6614787, 4892505, 4572530, -2342368, -782758, -6870337, -2144263, 4568772, -4502737, -6557342, 2668249, -396748, 2767570, 8556112, 4754529, --599685, -16043313, -7646116, -2794950, 1888712, -3044595, 8246337, -14077829, 4010963, 1100585, --346819, 3455301, -1930588, 5733782, -14209362, -7345468, 5276368, -14930917, -2750927, 5712844, -2247879, -4026532, -9480603, 2529736, 6038187, 3430068, -1650341, -10967736, -730144, -1124208, --840203, -13679471, 1863479, 2704756, 11337103, -10011569, 12341052, 3786014, -641561, -2428804, --974958, 1515587, -8465917, -1268626, 3121368, -2461016, -4851166, -957778, 8601209, -8131984, --1575179, 9054328, 325881, -2934537, 3313567, -3693135, 6604049, 3282429, 195421, 3680250, --3397856, -5245766, -142271, 992674, 5002027, -9565429, -5196374, -3883724, -2862596, -2392834, --2802466, 2153389, 768262, 1500017, -7289097, -7084012, -5888400, 935229, -9431211, -4625143, -6111202, -3160559, 1588064, 1431298, 132070, 3280281, 3782793, 4185983, 4259534, 6680822, --636729, 7208566, 12348, 4209605, -67109, -2829310, 268435, -5173825, 4544076, -6147709, -7688529, -6861211, 670552, -6902550, 1801739, -6589017, -7117298, 6898791, 11481521, 39616240, -1055488, -10672994, 2364916, -5531381, 16155519, -1970316, 4975720, 1712618, 1355062, -13103408, --6404870, 8153459, 7272454, -10208064, -1281511, 238371, 10205916, 5280126, 4269198, 9965398, -2103997, 1177358, 8791798, -2295660, -11797738, 2396592, 10145250, 6184216, -2954938, 745177, -7278896, 4596689, 2469069, 199179, -6311455, 3946538, -6915434, 1307281, -13604309, 4296041, -5085778, -605054, -5876052, 9618042, 5476084, -1329292, 7771207, 3802120, -5214627, 11436961, -1919850, -3309272, 3289408, 11713986, 2517388, 262530, -8514236, -4882304, 2129230, 4335233, -13573170, -3644817, -4160750, 1651952, 7864085, -3941706, -4552129, 42413, 10266046, 7147900, --1222455, -6595459, 776315, 8530879, -2079838, 16925930, 8275328, 4159676, -14418205, -1947768, --7571491, 13447006, -5801427, 6011344, 664109, 8254927, 2853469, 826781, -1321239, 3091840, --4603668, -6369974, -17041356, -12579959, 3375844, 10385768, 13852343, -5747203, -7749732, -6631967, -2559801, -3802657, -1429150, -959388, 1251446, 1848983, 8969502, -5506685, 180926, 2053531, -3987877, -5002563, -4233764, -8033737, -6009196, -5678484, -9986336, -23622320, -1073205, -3387656, --10851772, 2008434, -1967632, -12890271, 3401077, -10948409, 1882269, -1496259, -1771137, 5274757, -6144488, -356482, -11407970, 2950643, -7533910, -7364795, 9092983, 9017284, 9135932, -3376381, -592169, 1311039, -6273337, 794569, -3626563, 15923591, -3816079, -1589675, -2821794, -47245, --11008538, -12022687, 4591320, -15224585, 5720897, 1897302, 16225313, -10836739, -6038187, -3601867, -8739185, -8234526, -7758322, 7109245, 4962298, -8359617, -8213588, -8271570, -18188112, 11993696, -11538967, 11924977, -4944044, 3695283, 12168716, -17395154, 290984, 11206107, 10801843, 4620311, -280247, -5698348, 1484448, -2848637, -14596983, 1693291, 4469451, 1974074, 10311680, -8977019, -1364189, -16589311, -1622961, 2949032, -8494908, 3168612, 3264175, 6980933, 9469866, 12074764, --1966558, -5252745, -14384919, -11107322, 5279052, 21598316, -6139119, -1385127, -9407589, -5886790, --7252589, 4196720, 5749351, -2294050, 1664300, -16784196, -1095754, 10181757, -7573638, -8376260, -7747584, -3858491, 10923176, 1213865, -5264020, -309775, -8433168, -5105106, 81068, -9881646, -21577916, -11212549, -5960878, -826781, -1114544, -15979963, 614717, -11870216, 7908646, -21968758, --3536369, -7288023, 6973953, -7813620, -7864085, -18651432, 11908334, -7900056, 4657892, -6268505, -3278134, 9326521, -7468412, -12373264, -4431333, 7791071, 16589848, 5056787, 6701760, 430570, --17546016, -9587441, -9659381, -5171678, 2559801, 15091978, 6248641, 8600672, 8028368, -2824478, --4075924, -5683316, -14784351, 303869, -10471130, 15009837, -7582228, 10170483, 1776506, -6106907, -3052111, -4259534, -5399311, -9004936, 12164421, 2745558, 20917564, 4089883, -23775328, -6428493, -6765111, 5326297, 2686502, -2055142, 1300838, 23423142, 11298985, -4974109, 1701344, -7490423, -16528645, -1748052, -1918240, 5626944, -17147656, -7981660, -13616120, 7778723, 17666274, -1989107, --1006633, -644245, 16402480, 4922033, 3754875, 2610266, 1732482, 2596845, -6789270, 986769, --20847234, 2721936, -10169946, 8373576, 20839182, -2978023, 1294396, -16871168, 21978422, 10536629, -9196062, -3009698, -12466679, 1227824, -4419522, 11031623, 7834021, -10346576, 282394, 5704791, -3944391, -8063801, -7208566, 32312112, -7821673, -5919002, 6586333, -8531416, -6329171, 10111427, -9849434, 162135, 3601330, 3450469, -12913356, -6501507, -862752, 4065187, 10692321, 2504503, -2247879, -14448807, -1722819, 3994320, -19831474, 4066260, -5838471, -2139968, -4056060, 5557151, --6300717, -10675678, -11860015, -17934710, 1582696, -7265474, -4284230, 11487427, -4875325, 3936338, --21514564, 617938, 15771120, -10256919, -10306311, 24613384, -14685030, 3886409, -9386114, 29026462, -6163278, 5426691, -9257265, -10876468, 1052804, 8366060, -8888972, -14059039, -8429410, -20478404, --8040179, -11964168, -41876, -27536110, 1915019, 15146202, 9205189, 12422656, -8581882, 3380676, -13274133, -1340030, 9615358, 3807489, 15002321, -7304129, 12505871, 10232223, 7096897, 16576426, --9157944, 10012643, -5017059, -5462662, -3874061, 3961571, -31620086, -9714679, -19660212, 23154168, --14341970, -15716359, -3469797, 13322452, 357556, -5244692, 17890150, -5809480, -5647345, -12345347, --31919660, 2239826, 3027952, 14070313, -13318157, 861141, -8056285, -9879499, 17246442, -2462627, -8773008, -17498234, -17805860, -10088341, 14650670, -151934, -8436926, -8146479, 548145, -12429635, --640487, 15389942, 1523640, -5348845, 7641284, -13464722, 25177098, 15659988, -752693, -12288438, --13937706, 5064304, -3977677, -1693291, -1335198, 23024246, -12181064, -34360, -8680666, 8190503, --15266461, -13838385, -27022324, 5666136, -11394548, -15244450, -2506114, -25476136, -13020193, 6661495, -4618701, -3838627, 12308303, 826244, 15061377, -7361037, -22555558, -3681324, -16744467, -3403225, --5592048, -21242908, 1918777, 16687559, -48766132, 5747203, -732829, 11576547, -3252901, -15220290, --29340532, 11052025, -4413079, 10322954, 5397700, -3728569, 15621333, -20897700, 27936614, -7497939, -15101642, 33553896, 12429635, 23822572, 8321499, 6109054, -4451734, 12367358, -5878200, -13306882, --18930606, -11583527, -1763084, 9822053, -2447595, 41070624, 33576980, 30345018, -6126771, 758599, --24574192, 19525996, 23966454, 8654896, 23159000, 9730248, 8253854, 8654359, -3416110, 3868155, -6800544, -4993973, -23730768, -13964549, -367757, -15341086, -18279380, -43342124, 10201084, 8442832, -11994233, -7624641, -2546379, -5031554, 768262, -12948253, 44560, -9646497, 12643847, 11060078, --5900212, -7654706, -22891638, 40126804, -11878269, 8679055, 326418, 3479997, 6576669, -15233712, -19843822, -8868571, 6947647, 5393942, -14376866, -14024679, -2590402, -265751, 9240085, 42453604, --3346317, 7248294, 1429150, 13596793, 8874476, 10435160, -7399155, -1023276, 3389803, -18823768, -3745748, -15924665, -27828166, 10721849, 121870, 3357591, -21136608, -46938624, 19027778, 22792318, -11884175, -25841208, -23998666, -47596828, 38950520, 6023692, 6659347, -16041166, -11658689, -50603304, -13594645, 35717484, 10714333, -32140314, -16273094, 4915590, -12737799, -8133058, 14416058, -16844862, -8930311, 8021389, 6499360, -18715856, 6255620, 5477694, -9016210, -17524540, -10358387, -6889665, --4827007, -16724603, -14578193, -8056285, -17361332, 13178033, -6706055, -22180822, -7937637, 13226889, --3143379, -15460272, -8735963, -8015483, -410169, -12321187, -7631083, -20259898, -19345070, 7801808, --7105487, 24631638, 16048682, 1268626, 14547054, -22172768, 13767518, -21110302, 17071422, -3452080, -8585640, -9775882, 30604864, -8347269, 17020418, -5194763, 25148644, 9302899, 5930276, -27404576, -28223304, 21281562, 9706626, 8581882, -20646444, -6754373, 8263517, 9386651, -3826279, -6298570, --30620970, 30246770, -1010391, 15669114, -15841450, -3632469, -2194192, -1972464, -1894618, 18583786, -2838437, -11363410, 13329968, 4119411, 10302553, 16080894, 16396038, 2962991, -9626632, 51760800, --11115912, 40321152, 2798708, 4512937, -19033684, -7197292, 6149857, 20685636, 11725261, -3745212, -17741436, 5344013, -18168786, 5760088, 5767604, 23739894, 1964948, 15144055, -13015898, 2323577, -17359720, 9557376, 15036681, 34576096, 28752658, -1647120, 16383690, 389231, 28399934, -17896592, -20057498, 9345849, 2290291, 17706540, -4721243, 42010684, -3432216, 21660594, -10871636, -10118943, -4245575, 44746580, 17413408, -36246840, 38470024, 2158221, 16178605, -26481158, 14268418, 6416681, --54393612, 27832462, 49884436, 20417738, -13502303, -8763344, 15642808, 42370388, 10035191, 11850889, -7774428, -8734353, -4330938, -15661061, 20325396, 3478387, 13525926, -10449119, 27028230, -8996346, -12565464, 4702453, 5551245, 4518306, 2257542, -27659590, -16523813, 822486, 2356327, 20007568, -15700790, -22320408, 2048163, -11922292, -11895449, 6511171, 1005022, -7028714, 9062381, 38224672, --25263534, -1003949, 56544320, -33761664, 3426847, 21470542, -11205570, -7290707, 11031623, 20023138, --21418466, 11353209, -38213396, -2716030, 54508504, 3796214, 14594836, -4451197, 29118268, 32015760, --9788767, 1038845, -15899969, 5156645, -12277164, -25388088, -19193136, -30552250, -25807384, 37820944, -12312061, 12554726, 45458472, -31952410, -22764400, 8109972, 14875619, -11324755, 5186710, -12378096, -22287660, 17451526, 3881577, 19770808, 61022360, 6657736, -6986838, -15814070, 14712410, -3089155, -32337882, -27515172, 8199093, -1100049, -8118562, -7333120, -3091840, 10560788, 6950331, 7481296, --463856, 18486612, 4127464, -21977884, -16994112, -1532230, -9532143, -12229919, 4105452, 15462419, --926102, -2324651, -19897510, 11329050, -2228014, 22494354, -6157373, -40399000, 6246493, -11278584, --5035313, 1061931, -32343788, -16649978, -27588722, 1535451, -827318, -7067369, -36879272, -14493904, --2012729, 21003464, 23420994, 2827699, 3074660, 11815992, 3868155, -25154550, 24466282, 32407138, --12083354, 5836324, -12060805, 6765647, 1506460, 24974698, -25103546, -18325552, -59506772, -20638928, -17296908, 25746718, 19535122, 16916802, -12971338, -4198331, 14558329, 12192875, 29236380, 12205760, -14436996, 16616692, 6793028, -48041892, 21561272, -13609141, 2771865, 35948340, 30102352, -10468983, --4006668, 19092204, -10333691, -10624138, -8977555, 3606162, -2566243, -90731, 4951561, -2580739, -17947594, 42275364, -16571594, -30767536, 32763622, -23492934, -6038187, 1656247, 40660456, 4559645, --11485279, 13291850, 11746736, -40291624, -11743514, 8532489, -1096290, -18191334, -1002338, 9620727, --61027728, -26622892, 30878130, -28425168, -33389076, -18854370, 25208774, -30206504, -50285476, 53121228, --14765561, -29538638, -1694365, 22344568, -19411642, -31595390, -852014, 18343268, -1868311, -41035728, -10129143, 2535105, -20069308, 49692236, 43031276, 413927, -18513456, -30275224, 52041044, 11858942, -7892003, 23300734, -15159087, -45977624, 20185272, 45679124, 26869852, -12450573, 3253975, -49767932, -6580427, 48853104, 27060442, 7685307, 386010, -7677254, 13442711, -15894600, 40757628, -2055142, -11609297, 15659451, -12662637, 1506997, -702764, -14176076, 972273, 6715182, 23341000, 888521, --12788802, 7845832, 19005768, -2004676, 29514478, -21125870, 5699422, 7374996, 8521215, 25623238, --12394202, 3137474, 197032, -31212602, 5715528, -9555228, -16418049, 8489003, -5507222, 26257282, -19427748, -12294881, -27624156, 14681272, 4052302, 6755984, 17412872, 36078800, -4656282, 8258149, --12884365, 21134998, 15837155, 16058883, -15252503, 24080808, -6372658, -9052717, -18556406, -771484, --6237903, 30931818, -20397336, 2698313, 9429064, -5682779, -11326903, 42908332, 762357, 11212549, --759136, 6574521, 435939, 13864691, 4226785, -321586, 15974057, -45090716, -125306744, -119127896, -50711752, 4373351, 113089712, 240564336, 52023864, 96584152, 51048908, -179543056, -80914496, -120932856, --177569520, -12421045, 20023674, -84041232, 73319920, 125690608, 76395656, 216861488, 132497056, 739808, --21040508, -77377592, -192943360, -155971200, -67986648, -147741504, -44455596, 83851720, 24038396, 20968568, -198094624, 76493904, 47467440, 183994256, 7677791, -9571871, 83896816, -42530912, -153009280, -73740832, --152907808, -221903248, -25665114, -100833488, -83349208, 70953400, 136555808, 63708860, 242152944, 193902736, -111284752, 147360864, 48788144, -71893992, -112257560, -147853168, -238436720, -189816080, -128677224, -108103792, --34723200, 83632144, 124881544, 141281344, 187714768, 160256512, 74254080, 29701310, 41678900, -59262496, --94543504, -61268244, -134350864, -72863048, -1661616, -9522479, 0, 0, 0, 0, -0, 0, 0, }, +1232656, 3558381, 4639639, 60666, -2546379, 3241627, 1820529, 3834869, 4727686, -1896765, +-543850, -3818226, 2133525, 667331, -1609002, -4565014, 1530082, 2323577, 3124589, 180389, +-4326643, -2462627, 2504503, -2974265, 2615635, -644245, 876173, 1027034, 984084, -4387846, +1372779, 1608465, -3016141, -5083094, -4860829, 263604, 388158, 1000191, -291521, 37581, +-1410360, 2350958, -417149, 2052458, -3111704, -389768, 3265786, 6025302, 472446, -126702, +781684, 3526705, 2279017, -4315369, 1129576, 2113661, 1340567, 10737, 2299955, 2078227, +1320166, 1343788, 825171, -1111323, -2521146, 3261491, 1413044, -2014877, -386547, -1651415, +2185065, -43487, -1498944, 1830193, 1222455, 899259, -10684268, -12977781, 6375879, -2462627, +5558762, -2923262, -3002719, -5858336, 1235340, 1121523, -381715, -3221, -772020, -4497368, +-641024, -2609730, -3027952, -2833605, -240518, 244813, -357019, -579284, 2043868, -687195, +-6805376, 4066797, 1914482, -2344515, 516470, -136902, -81068, 866510, 4127464, -2452963, +94489, -7612830, 3600793, 683437, 1533840, 2553895, 4071092, -2422899, -1975685, -906238, +-3973382, 259846, -752156, 3241090, -1949915, -260919, -2027225, -2136746, 3802120, -3038689, +-1656247, 353798, -2939368, 2266669, -312996, -1294396, 2253784, 4530654, 59056, -173409, +-870268, 3886409, -4095788, 51003, -857383, 2052458, -1218697, -1736777, 3925600, -49392, +560493, -1182190, -15477452, 2473364, 1681480, 5240934, -2238215, 1490354, 6124624, -2563559, +1582159, -3937411, -5692979, 1890859, -3914863, -4474282, -4464082, 1154809, 1532230, -7558606, +4230543, 2728378, -1381369, -2871723, 1611150, -837519, -1807108, 369367, 2333778, 1644973, +3799972, 582505, -1314797, 3857954, -2151242, 8621073, 1860258, 5237713, 1967632, 4568235, +1995012, 3085397, 1650341, 193274, 55835, 6457484, 1000727, -1277753, 309238, 3303904, +2470680, 163746, -436476, -1594507, 600222, 7894687, 2183454, 3517041, -4079682, -2266669, +-4300873, -2872796, -4187593, 2756295, 1729261, -2842195, -2019172, 1525250, -2117956, 1722819, +-1120987, -922344, -3021510, -5020280, 1749125, -7973070, -1385664, -2021856, 8812736, 12074227, +-3468186, 3373160, -5732171, -140660, 534723, 15375983, -1371168, -3845606, -6366752, 324807, +4551592, 7165079, -1385127, -9006010, -2445447, -3327526, -2308545, 3291019, -471910, 6011344, +856846, -3131031, -7213398, 2399813, -481573, 1898376, -676457, 1012539, 3862249, 1509681, +-9110163, 1300838, 6244883, 3132642, 981937, 1617055, -1250372, 4343286, -5264020, -357556, +4822712, -2959233, 277562, 7585986, -3131568, -163209, -2209224, 4742181, -4476967, -3363496, +2543158, -4773856, -2105071, 6656663, 4161287, -5579163, -1746978, -670552, -1026497, -2435783, +2509335, -2063732, 2845953, 121333, 857920, 1227287, 5425081, -383863, 7322919, 3621194, +-4508105, -2283849, -1812476, 4027606, 1824287, -49929, 28144920, -10735271, 5516886, -8257612, +-1074816, 34897, -825171, -4495220, 2085207, 3017752, 554588, -3339337, -6816113, -498216, +3780645, 2602213, -3129421, -5206574, -635655, 4177930, 7863012, -4627291, -822486, -3558917, +-7322919, 530965, -3799436, 1886564, -2872796, 5246840, -9910637, 6265284, -659278, -6036577, +1174674, 2149094, -910533, -3333432, -37044, 7285339, -510027, 955630, -1292248, 2601140, +1116155, -2091649, -3060164, -6536940, 3822521, -1624035, -2041720, 2062658, -163209, -10807748, +7841000, -11620571, -6693170, -8352101, 1533840, -1332514, 4604205, -3034931, 2377265, -5257040, +2157147, -1751810, -2099702, -5845988, 3129958, 3110093, 6288369, -2270964, -665720, 856309, +-1959579, -371515, -22382686, 2310156, 243739, -1868848, -3454228, 3958349, -3045132, 2653216, +-818728, 12348, 3599183, 4771709, -2928631, 3535295, -1049583, -1845762, -6328098, -233539, +-8542690, -6152541, 7409356, 2752537, -2965138, -966905, -957778, 5282273, 2645163, -2565169, +4626754, 3252364, 1741609, 1747515, 1888712, 3718368, 2963528, 3180960, 8205535, 7645579, +3085397, 964757, -5368709, 5917391, -7906498, 1666447, -2357400, 6407555, -4946192, -5989869, +10309532, -2303713, -5920076, -4883378, 7566659, 4986457, -24696, 4206384, 5361193, 2787434, +8850854, -374736, -1859721, 5411122, 2757369, 490163, -277562, -4609574, 2344515, 3186866, +6856916, 3236795, 3988414, -2626909, -4527970, -7818451, -2563559, -30273614, 7591892, -6803228, +-9833864, -9754408, 5376226, -7359964, 4708358, -9138617, 4391067, 3626026, 2126009, -9611063, +5885179, -585726, 3419331, -8058970, 3852586, 8472360, 6490770, -251256, -3564823, 752693, +-2283849, -10180146, -2298344, -5170604, 1877438, -6614787, 4892505, 4572530, -2342368, -782758, +6870337, -2144263, 4568772, -4502737, -6557342, 2668249, -396748, 2767570, 8556112, 4754529, +-599685, -16043313, -7646116, -2794950, 1888712, -3044595, 8246337, -14077829, 4010963, 1100585, +-346819, 3455301, -1930588, 5733782, -14209362, -7345468, 5276368, -14930917, -2750927, 5712844, +2247879, -4026532, -9480603, 2529736, 6038187, 3430068, -1650341, -10967736, -730144, -1124208, +-840203, -13679471, 1863479, 2704756, 11337103, -10011569, 12341052, 3786014, -641561, -2428804, +-974958, 1515587, -8465917, -1268626, 3121368, -2461016, -4851166, -957778, 8601209, -8131984, +-1575179, 9054328, 325881, -2934537, 3313567, -3693135, 6604049, 3282429, 195421, 3680250, +-3397856, -5245766, -142271, 992674, 5002027, -9565429, -5196374, -3883724, -2862596, -2392834, +-2802466, 2153389, 768262, 1500017, -7289097, -7084012, -5888400, 935229, -9431211, -4625143, +6111202, -3160559, 1588064, 1431298, 132070, 3280281, 3782793, 4185983, 4259534, 6680822, +-636729, 7208566, 12348, 4209605, -67109, -2829310, 268435, -5173825, 4544076, -6147709, +7688529, -6861211, 670552, -6902550, 1801739, -6589017, -7117298, 6898791, 11481521, 39616240, +1055488, -10672994, 2364916, -5531381, 16155519, -1970316, 4975720, 1712618, 1355062, -13103408, +-6404870, 8153459, 7272454, -10208064, -1281511, 238371, 10205916, 5280126, 4269198, 9965398, +2103997, 1177358, 8791798, -2295660, -11797738, 2396592, 10145250, 6184216, -2954938, 745177, +7278896, 4596689, 2469069, 199179, -6311455, 3946538, -6915434, 1307281, -13604309, 4296041, +5085778, -605054, -5876052, 9618042, 5476084, -1329292, 7771207, 3802120, -5214627, 11436961, +1919850, -3309272, 3289408, 11713986, 2517388, 262530, -8514236, -4882304, 2129230, 4335233, +13573170, -3644817, -4160750, 1651952, 7864085, -3941706, -4552129, 42413, 10266046, 7147900, +-1222455, -6595459, 776315, 8530879, -2079838, 16925930, 8275328, 4159676, -14418205, -1947768, +-7571491, 13447006, -5801427, 6011344, 664109, 8254927, 2853469, 826781, -1321239, 3091840, +-4603668, -6369974, -17041356, -12579959, 3375844, 10385768, 13852343, -5747203, -7749732, -6631967, +2559801, -3802657, -1429150, -959388, 1251446, 1848983, 8969502, -5506685, 180926, 2053531, +3987877, -5002563, -4233764, -8033737, -6009196, -5678484, -9986336, -23622320, -1073205, -3387656, +-10851772, 2008434, -1967632, -12890271, 3401077, -10948409, 1882269, -1496259, -1771137, 5274757, +6144488, -356482, -11407970, 2950643, -7533910, -7364795, 9092983, 9017284, 9135932, -3376381, +592169, 1311039, -6273337, 794569, -3626563, 15923591, -3816079, -1589675, -2821794, -47245, +-11008538, -12022687, 4591320, -15224585, 5720897, 1897302, 16225313, -10836739, -6038187, -3601867, +8739185, -8234526, -7758322, 7109245, 4962298, -8359617, -8213588, -8271570, -18188112, 11993696, +11538967, 11924977, -4944044, 3695283, 12168716, -17395154, 290984, 11206107, 10801843, 4620311, +280247, -5698348, 1484448, -2848637, -14596983, 1693291, 4469451, 1974074, 10311680, -8977019, +1364189, -16589311, -1622961, 2949032, -8494908, 3168612, 3264175, 6980933, 9469866, 12074764, +-1966558, -5252745, -14384919, -11107322, 5279052, 21598316, -6139119, -1385127, -9407589, -5886790, +-7252589, 4196720, 5749351, -2294050, 1664300, -16784196, -1095754, 10181757, -7573638, -8376260, +7747584, -3858491, 10923176, 1213865, -5264020, -309775, -8433168, -5105106, 81068, -9881646, +21577916, -11212549, -5960878, -826781, -1114544, -15979963, 614717, -11870216, 7908646, -21968758, +-3536369, -7288023, 6973953, -7813620, -7864085, -18651432, 11908334, -7900056, 4657892, -6268505, +3278134, 9326521, -7468412, -12373264, -4431333, 7791071, 16589848, 5056787, 6701760, 430570, +-17546016, -9587441, -9659381, -5171678, 2559801, 15091978, 6248641, 8600672, 8028368, -2824478, +-4075924, -5683316, -14784351, 303869, -10471130, 15009837, -7582228, 10170483, 1776506, -6106907, +3052111, -4259534, -5399311, -9004936, 12164421, 2745558, 20917564, 4089883, -23775328, -6428493, +6765111, 5326297, 2686502, -2055142, 1300838, 23423142, 11298985, -4974109, 1701344, -7490423, +16528645, -1748052, -1918240, 5626944, -17147656, -7981660, -13616120, 7778723, 17666274, -1989107, +-1006633, -644245, 16402480, 4922033, 3754875, 2610266, 1732482, 2596845, -6789270, 986769, +-20847234, 2721936, -10169946, 8373576, 20839182, -2978023, 1294396, -16871168, 21978422, 10536629, +9196062, -3009698, -12466679, 1227824, -4419522, 11031623, 7834021, -10346576, 282394, 5704791, +3944391, -8063801, -7208566, 32312112, -7821673, -5919002, 6586333, -8531416, -6329171, 10111427, +9849434, 162135, 3601330, 3450469, -12913356, -6501507, -862752, 4065187, 10692321, 2504503, +2247879, -14448807, -1722819, 3994320, -19831474, 4066260, -5838471, -2139968, -4056060, 5557151, +-6300717, -10675678, -11860015, -17934710, 1582696, -7265474, -4284230, 11487427, -4875325, 3936338, +-21514564, 617938, 15771120, -10256919, -10306311, 24613384, -14685030, 3886409, -9386114, 29026462, +6163278, 5426691, -9257265, -10876468, 1052804, 8366060, -8888972, -14059039, -8429410, -20478404, +-8040179, -11964168, -41876, -27536110, 1915019, 15146202, 9205189, 12422656, -8581882, 3380676, +13274133, -1340030, 9615358, 3807489, 15002321, -7304129, 12505871, 10232223, 7096897, 16576426, +-9157944, 10012643, -5017059, -5462662, -3874061, 3961571, -31620086, -9714679, -19660212, 23154168, +-14341970, -15716359, -3469797, 13322452, 357556, -5244692, 17890150, -5809480, -5647345, -12345347, +-31919660, 2239826, 3027952, 14070313, -13318157, 861141, -8056285, -9879499, 17246442, -2462627, +8773008, -17498234, -17805860, -10088341, 14650670, -151934, -8436926, -8146479, 548145, -12429635, +-640487, 15389942, 1523640, -5348845, 7641284, -13464722, 25177098, 15659988, -752693, -12288438, +-13937706, 5064304, -3977677, -1693291, -1335198, 23024246, -12181064, -34360, -8680666, 8190503, +-15266461, -13838385, -27022324, 5666136, -11394548, -15244450, -2506114, -25476136, -13020193, 6661495, +4618701, -3838627, 12308303, 826244, 15061377, -7361037, -22555558, -3681324, -16744467, -3403225, +-5592048, -21242908, 1918777, 16687559, -48766132, 5747203, -732829, 11576547, -3252901, -15220290, +-29340532, 11052025, -4413079, 10322954, 5397700, -3728569, 15621333, -20897700, 27936614, -7497939, +15101642, 33553896, 12429635, 23822572, 8321499, 6109054, -4451734, 12367358, -5878200, -13306882, +-18930606, -11583527, -1763084, 9822053, -2447595, 41070624, 33576980, 30345018, -6126771, 758599, +-24574192, 19525996, 23966454, 8654896, 23159000, 9730248, 8253854, 8654359, -3416110, 3868155, +6800544, -4993973, -23730768, -13964549, -367757, -15341086, -18279380, -43342124, 10201084, 8442832, +11994233, -7624641, -2546379, -5031554, 768262, -12948253, 44560, -9646497, 12643847, 11060078, +-5900212, -7654706, -22891638, 40126804, -11878269, 8679055, 326418, 3479997, 6576669, -15233712, +19843822, -8868571, 6947647, 5393942, -14376866, -14024679, -2590402, -265751, 9240085, 42453604, +-3346317, 7248294, 1429150, 13596793, 8874476, 10435160, -7399155, -1023276, 3389803, -18823768, +3745748, -15924665, -27828166, 10721849, 121870, 3357591, -21136608, -46938624, 19027778, 22792318, +11884175, -25841208, -23998666, -47596828, 38950520, 6023692, 6659347, -16041166, -11658689, -50603304, +13594645, 35717484, 10714333, -32140314, -16273094, 4915590, -12737799, -8133058, 14416058, -16844862, +8930311, 8021389, 6499360, -18715856, 6255620, 5477694, -9016210, -17524540, -10358387, -6889665, +-4827007, -16724603, -14578193, -8056285, -17361332, 13178033, -6706055, -22180822, -7937637, 13226889, +-3143379, -15460272, -8735963, -8015483, -410169, -12321187, -7631083, -20259898, -19345070, 7801808, +-7105487, 24631638, 16048682, 1268626, 14547054, -22172768, 13767518, -21110302, 17071422, -3452080, +8585640, -9775882, 30604864, -8347269, 17020418, -5194763, 25148644, 9302899, 5930276, -27404576, +28223304, 21281562, 9706626, 8581882, -20646444, -6754373, 8263517, 9386651, -3826279, -6298570, +-30620970, 30246770, -1010391, 15669114, -15841450, -3632469, -2194192, -1972464, -1894618, 18583786, +2838437, -11363410, 13329968, 4119411, 10302553, 16080894, 16396038, 2962991, -9626632, 51760800, +-11115912, 40321152, 2798708, 4512937, -19033684, -7197292, 6149857, 20685636, 11725261, -3745212, +17741436, 5344013, -18168786, 5760088, 5767604, 23739894, 1964948, 15144055, -13015898, 2323577, +17359720, 9557376, 15036681, 34576096, 28752658, -1647120, 16383690, 389231, 28399934, -17896592, +20057498, 9345849, 2290291, 17706540, -4721243, 42010684, -3432216, 21660594, -10871636, -10118943, +4245575, 44746580, 17413408, -36246840, 38470024, 2158221, 16178605, -26481158, 14268418, 6416681, +-54393612, 27832462, 49884436, 20417738, -13502303, -8763344, 15642808, 42370388, 10035191, 11850889, +7774428, -8734353, -4330938, -15661061, 20325396, 3478387, 13525926, -10449119, 27028230, -8996346, +12565464, 4702453, 5551245, 4518306, 2257542, -27659590, -16523813, 822486, 2356327, 20007568, +15700790, -22320408, 2048163, -11922292, -11895449, 6511171, 1005022, -7028714, 9062381, 38224672, +-25263534, -1003949, 56544320, -33761664, 3426847, 21470542, -11205570, -7290707, 11031623, 20023138, +-21418466, 11353209, -38213396, -2716030, 54508504, 3796214, 14594836, -4451197, 29118268, 32015760, +-9788767, 1038845, -15899969, 5156645, -12277164, -25388088, -19193136, -30552250, -25807384, 37820944, +12312061, 12554726, 45458472, -31952410, -22764400, 8109972, 14875619, -11324755, 5186710, -12378096, +22287660, 17451526, 3881577, 19770808, 61022360, 6657736, -6986838, -15814070, 14712410, -3089155, +32337882, -27515172, 8199093, -1100049, -8118562, -7333120, -3091840, 10560788, 6950331, 7481296, +-463856, 18486612, 4127464, -21977884, -16994112, -1532230, -9532143, -12229919, 4105452, 15462419, +-926102, -2324651, -19897510, 11329050, -2228014, 22494354, -6157373, -40399000, 6246493, -11278584, +-5035313, 1061931, -32343788, -16649978, -27588722, 1535451, -827318, -7067369, -36879272, -14493904, +-2012729, 21003464, 23420994, 2827699, 3074660, 11815992, 3868155, -25154550, 24466282, 32407138, +-12083354, 5836324, -12060805, 6765647, 1506460, 24974698, -25103546, -18325552, -59506772, -20638928, +17296908, 25746718, 19535122, 16916802, -12971338, -4198331, 14558329, 12192875, 29236380, 12205760, +14436996, 16616692, 6793028, -48041892, 21561272, -13609141, 2771865, 35948340, 30102352, -10468983, +-4006668, 19092204, -10333691, -10624138, -8977555, 3606162, -2566243, -90731, 4951561, -2580739, +17947594, 42275364, -16571594, -30767536, 32763622, -23492934, -6038187, 1656247, 40660456, 4559645, +-11485279, 13291850, 11746736, -40291624, -11743514, 8532489, -1096290, -18191334, -1002338, 9620727, +-61027728, -26622892, 30878130, -28425168, -33389076, -18854370, 25208774, -30206504, -50285476, 53121228, +-14765561, -29538638, -1694365, 22344568, -19411642, -31595390, -852014, 18343268, -1868311, -41035728, +10129143, 2535105, -20069308, 49692236, 43031276, 413927, -18513456, -30275224, 52041044, 11858942, +7892003, 23300734, -15159087, -45977624, 20185272, 45679124, 26869852, -12450573, 3253975, -49767932, +6580427, 48853104, 27060442, 7685307, 386010, -7677254, 13442711, -15894600, 40757628, -2055142, +11609297, 15659451, -12662637, 1506997, -702764, -14176076, 972273, 6715182, 23341000, 888521, +-12788802, 7845832, 19005768, -2004676, 29514478, -21125870, 5699422, 7374996, 8521215, 25623238, +-12394202, 3137474, 197032, -31212602, 5715528, -9555228, -16418049, 8489003, -5507222, 26257282, +19427748, -12294881, -27624156, 14681272, 4052302, 6755984, 17412872, 36078800, -4656282, 8258149, +-12884365, 21134998, 15837155, 16058883, -15252503, 24080808, -6372658, -9052717, -18556406, -771484, +-6237903, 30931818, -20397336, 2698313, 9429064, -5682779, -11326903, 42908332, 762357, 11212549, +-759136, 6574521, 435939, 13864691, 4226785, -321586, 15974057, -45090716, -125306744, -119127896, +50711752, 4373351, 113089712, 240564336, 52023864, 96584152, 51048908, -179543056, -80914496, -120932856, +-177569520, -12421045, 20023674, -84041232, 73319920, 125690608, 76395656, 216861488, 132497056, 739808, +-21040508, -77377592, -192943360, -155971200, -67986648, -147741504, -44455596, 83851720, 24038396, 20968568, +198094624, 76493904, 47467440, 183994256, 7677791, -9571871, 83896816, -42530912, -153009280, -73740832, +-152907808, -221903248, -25665114, -100833488, -83349208, 70953400, 136555808, 63708860, 242152944, 193902736, +111284752, 147360864, 48788144, -71893992, -112257560, -147853168, -238436720, -189816080, -128677224, -108103792, +-34723200, 83632144, 124881544, 141281344, 187714768, 160256512, 74254080, 29701310, 41678900, -59262496, +-94543504, -61268244, -134350864, -72863048, -1661616, -9522479, 0, 0, 0, 0, +0, 0, 0, }, }, { { -1440962, -20401, 2159295, -4076998, -1202054, -2580739, -3591130, -315143, 4429185, 767725, -2393908, --2267206, 6123013, -2767033, 584652, -1990717, -2043331, -3163780, -776852, 7668664, 504122, --382252, 1437203, 1978369, 652298, -2481417, 4250407, 131533, -148713, -1906429, 536334, --1441498, 634581, 2820183, 207769, -115964, -159988, -200253, -666794, -3753802, 876710, -3172370, -945967, -1850594, 2961380, -3440269, -263604, -1462436, 2172180, -5546414, 2048163, --421444, 833761, -1253594, -1153736, -153008, -1565516, 224949, 1675574, 1235340, -340913, -1093606, 4946729, -3124589, -2483028, 253403, -1171989, -2353105, 652835, -2532957, 1389422, --3048890, 315143, -1552631, -2566780, -373125, -4971425, -1869921, 1250909, -870268, -2827699, --147640, 6809671, -3394098, 868657, -1399086, 10737, -2518462, 4932233, -2459943, -2585034, --2974802, 5866389, -3383897, -799401, -1576790, 1725503, 2705830, 3483219, -4725538, 98784, -4597226, 2131915, 813896, -133681, -539555, 2182380, 4677757, 1249299, -5947456, -2946885, --3192235, 5350456, -516470, 4120484, -2486786, 1991791, 5226975, -2388002, -3923453, 1557463, --1468879, -95026, -3519189, -1243393, -2636036, 1184337, -4781373, -1378148, -1240172, 53150, -6424734, -1887638, -1005022, 2147, -1734630, -420907, -662499, 4171487, 1955821, 2682744, --3435437, 2775623, 2490007, -1940788, 951872, 1919314, -1873680, -1903207, 2556043, -3585761, -2644089, -440771, -54224, -217433, -3240553, 3271691, 322659, -1527935, -2230162, -674310, --1165010, -81604, -2741800, -2144799, 1454920, -512712, -1088774, -4769561, -756988, 4259534, --2988760, -827318, 3226594, -1986422, -3559454, -2775623, 2190433, -79457, -383863, -775242, --3403762, 1031866, -1532230, -893353, 3777424, -2197950, -5181341, -1643362, 267899, 1438277, -1343251, 333934, -3923453, -1014686, -4771172, -4449049, -1158567, 4431333, -767725, -9097278, --375273, 2908767, 2667175, -1972464, 1820529, 1811939, 248571, 2549063, -4753992, -3549791, --350040, 1277216, 350577, 870805, -363462, 1132261, 1342714, 1731409, -41876, 1010928, -1399086, -1048509, 2247879, -606664, -4185446, -4003447, -1699733, -500364, 4276714, 2470680, -6319508, 584652, -1058173, -581431, 4509179, -1007170, 2484102, -3806952, -283468, 81604, -2425583, 1785096, 4043175, 2949032, -1883880, -3739843, -3095061, 2403571, -1254131, 3213173, -2002529, 613107, -86973, 2714956, 1862405, -1597191, 2156611, -4014721, -497679, -3700651, --3279208, -4494684, 1460826, 2937758, -425739, 3998078, -2848100, 3728032, -6977175, 2964601, -1256278, 5471252, 1576253, 2141578, 2851858, 152471, -1760937, 2231236, 4571993, 1839857, -2219424, -431644, -71941, -6133750, -431644, 1347546, 1225139, -613107, 3408057, 6804839, --2208687, -4291209, 3026341, 1057099, -3390877, 334471, -1661079, -2913062, 222265, 5069135, -896574, 2124398, 373125, 3518652, 3393561, -3028489, 5112085, -1646046, -3162707, -4765266, -1280437, -6344204, -253403, 784368, 1942936, -4009889, 2823404, 41339, 758599, 1830193, -1231582, 1562294, -5384279, -273267, -1075889, -3530463, 2310156, 1163399, 1029182, 3207267, -11158325, -715112, 773094, 1652489, 2924873, 1161252, -8766565, 1956895, -1259499, -945430, -5168993, 231928, 2704219, 3639448, -4173098, -2390149, -1005559, -4218732, -8943733, 522375, --3180960, -468688, -492848, -100932, -1813550, -4425964, 1624571, -4228932, -1013612, 1070521, --4440996, 5088463, 2120640, 1523103, -1603097, -258235, -340376, 1110249, -1075352, 2688650, --3438658, 1452236, 6568079, 5132486, -1125281, 2705830, -1667521, 1280974, -3615289, 175557, -7297687, -9322227, 366146, -5753646, 2901251, 4190278, 5124970, -835371, -4917738, 86436, -5049808, 1040993, 947040, -3859565, -534187, -6727530, 8857296, -520765, -6859600, 7350300, -1831804, 2137820, -504659, -2730526, -895501, -3590593, -3501472, 2667175, 3859028, -864362, -3639448, -3097745, -1910724, -83752, 5087389, 4749697, -1384053, -2825015, 3952981, 2435783, -344671, 3257733, 772020, -4081293, 4134443, 2469069, -346819, -1518271, 1114007, -4423280, -11332808, -757525, -448824, 8289287, -816044, -5386963, -2861522, -835371, 2011118, -5635534, -3627637, 836982, 61740, -5203353, -4196183, -8999567, -847719, 3626563, 1910724, 4414153, --2826089, -2494839, 10100152, -3569655, 1523103, -2423435, -4486094, -9607842, 62277, -3948686, --4475356, 1566589, -5406827, 309775, 4001836, 2229088, 8188892, -13206488, 8761733, -1283122, -3941706, -2423972, -1715839, -6886443, 6449431, 5636071, 1591285, -6117107, -134218, -3493419, --216896, 6601902, 4739497, 1098438, 6411313, 8590, 547071, 697932, 18254, -4245575, -9490804, -849867, 331786, 10820633, -6684580, 2634426, -3049964, -643171, 3662533, -1420560, --5198521, 10385231, 8347269, -262530, 2908767, 4354560, 11475616, -1442572, -1705102, -6073084, -1384053, 2099702, -6083821, -6885907, -5672578, 7158100, 531502, -3047816, 5345087, 3412889, -472983, -1866163, 2051384, -4095251, -524523, -4500589, -437550, 3667902, -7262790, 1388348, --980863, -6117644, 4146791, -2192581, 1226750, -1936493, -987306, 1247688, 7147363, 7568269, -1093069, -6958384, -1121523, -6628209, 2467996, 16542067, 3952444, 11376831, 4084514, -120259, --11045582, -2944200, 1597728, 10222559, -4838818, -2612951, -4239670, 699006, 8254927, -6505802, -3940633, 6976101, 1425929, 2340757, -4986994, 8668855, -2143726, 11383811, -324807, -4000225, --11263015, 930934, -187905, 12725451, -4212826, -1542967, 8102993, -434865, 843961, -3241627, --8912057, 366146, 4678830, -6797860, -5203890, 652298, -10693395, 4996658, 5383205, -2488397, --1072131, 2115808, 5425081, -1377074, -4094178, -1106491, 8065412, -2177549, -1942399, -4470524, -10431402, 9896142, -82141, -3675955, 723165, -2456185, 1600412, 2674691, -2408403, 3568044, --6753836, 1582696, 366683, -7248294, 7678865, 5865852, 616865, -4764730, -5338645, -2257542, --10778757, 12870406, 9762998, -1918240, 3740380, 1278290, -1896765, 9777493, -576063, -4370666, -14491757, -15370614, 4205310, 6777459, 156766, -6231461, 7023882, 1146219, 10065256, -3723200, --837519, 2704756, 4159676, 737124, -1117228, 14390288, 6413460, -6495601, -9655623, 6926172, --9656160, -2838437, -11149735, -1453846, 17303886, 6988449, 8495982, 56371, -8796093, -1525250, --4166118, -2001992, 13015898, -2042257, -13797582, -1211181, 3022583, -9045738, -1220308, 5638219, -4803384, -6176700, -2878165, 5954972, 8413841, -2626909, 8748312, -170725, 2381023, 2771865, -950798, 2813204, 5304285, 4235375, 4978941, -3505230, -10022843, -12599287, 6366752, -699006, -5944235, -11599096, 4286378, 3425773, 1810329, -7557532, -6317897, -8054675, 6452115, 3418794, --5740761, -5708012, 8088497, 2716030, -549756, -4779762, -8002061, -3180423, 3383897, -5055714, -711891, -9586904, -2624762, 1269163, 3426847, 6487011, -923418, 4193499, 5637682, -5496485, --13395466, 9445170, 542240, -1992328, 8971113, -1210644, 482647, -5801964, 7917236, -4802311, --6163278, -2293513, 6540699, 9859097, 8309688, 2717641, 1835562, -16882442, 7981123, -830539, -3507378, -5684389, -845572, -6375342, -1990181, -1378148, -8431558, -4164508, -3204046, -4531728, -9548249, -2634426, 12356084, -1096290, -46708, 7771207, 9207873, 14659260, 10692321, 264141, --3479461, 56371, 1538672, -5838471, 3715147, -3512210, -4891968, -18486612, 3705483, -12822088, --7797513, 11507291, 8887361, -21061982, -19327352, 323196, 7810935, -5142687, 4706748, -7164006, --1067836, -12356621, -3440806, -11183558, -1068910, -3286724, 63351, 3868155, 3144453, 6462852, --1112397, -6073084, 4751308, -7180112, -3015604, 1917703, 188442, 3223373, 6946036, -1439888, -680752, 1380832, -3127810, -1025960, -10720775, -12717935, -12248173, -233002, -12303471, 3833258, -1450625, -5018670, -5770826, -2638184, -2121714, -1238561, -7299297, -11592654, -690953, 17957796, -9977746, -2697776, -10791642, -11300596, 12587475, -11836393, -3736622, -2156074, -7632157, -5979668, --7700877, -9343701, -12618077, -17545478, -2012729, -2730526, -1819992, 6070400, 6496138, 1728724, -6161668, -3299072, 1609539, -14516453, 2133525, 7900593, 8609262, 7941395, 3654480, 15291157, --5430986, -10543608, -2363306, 2234994, -1705639, 5057861, 10457172, 20365124, 13156559, 7635915, -9897752, -7492034, -14260902, -4845260, -10525354, 12817793, 3446711, -2452426, -8392903, 14485851, -12910135, -4376035, -263604, 95026, -6743636, -6039261, -10459319, 3435437, 4547297, 6454262, --9806484, 1057636, 3757560, -4716411, -9459129, 365609, 6754373, 7911867, 2160369, -20003274, --6300180, -9869835, 4993437, 11944304, 915365, -11258183, 3637837, -10882910, 7010997, -2682207, -2001992, -7757785, 17246442, 12687870, -2865817, -3824132, -8136279, -723702, 14174466, 2873870, -17206176, 15216532, 14177687, 7428683, 4151623, -10251013, -3981972, -13513578, 17565880, -8533563, --1107028, 8607114, 14026289, -11905649, -14690936, -12569222, 16707423, -5025112, 11651173, 1153199, -1609002, 25912612, -1509144, 3102040, -9417790, -15699716, 5739687, -1254667, 6101538, 4261145, -180926, -8446590, 4316442, 4898410, 3294777, -7909719, 7691750, 5684389, 19598472, -7017440, -2901787, 11076721, 11739756, 1654099, 11870216, -1293859, 2173254, 10325101, 9456444, 3322694, --2110440, -13174812, -9074729, 9760850, 1692754, -2020245, -892279, 3445638, 21441550, 105764, --4689568, 11196443, -2611340, 10664941, 4471598, 29335700, -3196530, 443992, 2308545, 5520644, -12037720, -496069, -675384, 7610145, -10428181, 12109123, 22564684, 7230041, -1106491, 12377022, --970126, 755377, 25729538, -11637751, 8521215, 10087268, 592169, 1417339, 1874753, 3898757, --14902463, -4975183, 8707509, -5628555, -8177081, -7518877, -7546258, 193274, 8803609, -2253784, --22228066, -1031329, -17075180, 5261872, 6199786, -951335, 2523293, -8262980, -1687922, 7515656, --21267068, 4060892, -5225365, 10264435, 7188702, 3939559, 170725, -9413495, -19233400, -2252174, --16893180, 8706972, -565325, -6220724, 16350404, 7473780, -7487202, -6800007, -4233764, -4045322, --5444408, -10669773, 976031, 1099512, 23966454, -2415919, -18311594, -1649804, 11348914, -809601, --9776956, 3966402, -14405857, 7314330, -6518150, 4152697, -8728984, 1692217, -14790794, 34782256, -567473, 23279260, -3342022, -9298604, 5675800, -10670846, -9092446, 11588896, 12689481, -14874009, --33315524, 27598386, -12037720, -11470784, -5828271, -1981591, -15940771, -5762236, -4994510, -13699335, --24059334, -6032819, 149250, -12800613, 5954972, -5543729, 10350871, -9250286, -4083440, -13120051, -30760018, 26162256, -6174553, 5779416, 17736068, -19022410, 18919868, -8046085, -8329016, 6895033, -2211371, 3265786, -3165391, -4184909, 194347, 6234145, 5019743, -8403640, 9291088, -9041443, --15491410, 11027329, 9264781, -12509629, -16035797, -17980880, -3056943, -2877628, 4641249, -11667816, --15221901, -7393786, 24319178, 8851391, 7973070, -10392747, 9089225, 13271986, -10642929, 24598352, -4031364, -8395050, -11904039, 6859063, -10091026, -20409148, 4541391, 206695, -73551, 11876121, -10031433, -8562554, 1157494, -25985626, -3920768, -9709847, 21413096, 2317672, 2386928, -11496554, -9536975, -19882478, -4589173, -11622182, 14543296, 15302432, 13872207, 9293772, -175020, 12647068, -11525545, 1808181, -2233383, 5005248, -1074, -13164075, -1578401, 4778151, -10198400, 14356465, --15170898, 11944304, 13201119, -4006668, -2990371, 5381594, 17627620, 12973486, -15938087, -3733937, --4263292, -1545115, 3987877, -7728257, -7778186, 16983374, 442382, 24503326, -16214038, -15751256, -12516608, -8678518, 4520453, -10172630, 8358007, 9074729, 6295349, -4384088, -14252849, 879931, -4740034, -12432320, -21787832, -1378148, 1970316, -13538274, 23505282, -3431679, -6710350, 30443266, -29387776, 2034741, -4173635, -2105608, -6395207, 5960341, -15591805, 13197361, 1711545, -9860171, -17211544, 1104344, 3167539, -7014756, -10029286, -25979720, 4348655, -11266236, -5459977, -26071526, --60029684, 19758998, 18711562, -6955163, 3970161, -14663555, 25521232, 16216186, -14886357, 3888556, -3243237, 90731, -6844568, -5024038, -31085900, 12753369, 14951318, -3802120, -274878, -2016487, -9973988, -8018704, 19275276, 5498095, -23496156, -13459891, 29228326, 19066434, -19495930, -4825396, --7108171, -12077985, 1561221, -5011690, 3925600, 38008848, 10161893, 39835284, 22647900, 25555056, -23287850, 45921252, -3337190, -4624606, 10751377, -3605625, -39115876, 31106838, -13960791, 17683454, --25992068, -20754356, -38667592, 7233799, -3914863, -13245679, 8932458, -18408230, -375810, -26146688, --26171920, 6749541, 14470819, -21371220, -6134824, -15028627, -20782274, -23209466, -17024176, 11560978, --10799695, -29199336, 39106752, 23843510, 38533908, -8257612, -22469658, -57770532, 24003498, 28791850, --14060649, -6550899, -2175938, 32684164, 387621, 6400575, 6366216, -8615704, 5959804, 14803142, --3802657, -15750719, 3051574, 27637578, -15745887, -10227391, 5546951, -4784594, 20596516, -6158446, -8906152, -11813308, -13864154, -14018773, 13253195, -5080947, 11680700, 13538274, -4440460, 983011, --631897, -12736189, 3178276, -11663521, 11886322, 29947734, 50054084, -1649804, -2228551, -22564148, -10826539, 15549392, -1326071, 17562122, 25851946, 10080825, 14296872, -24618752, -14997489, 18230526, -49793168, -10581726, -30842160, 6263673, -11017665, -1925219, 12565464, -1188632, -14907295, -8013872, --8475581, -36115308, -16087874, -1433982, 3804267, 10300942, -4303557, -15112916, -10598369, 1326608, --9477919, -15312095, 6870874, 18088254, 5978595, 9475772, 3666828, 27303108, -8676371, -3429532, --10807748, 6345814, -6748468, 6028524, 30907122, 6154688, -32935420, -7968775, -9682467, -28035936, -17744658, 8504572, -3367254, 4058744, 1632088, -12509629, -238908, -772557, -12652974, -3615289, -26924076, 39929776, 18630494, -13681081, -22056268, 10554882, 18039400, 2265059, 14405320, -9857487, --7141994, 15231565, 4591857, 543313, -33498060, -43141872, -1522566, -25029996, -14882062, 9571871, -36316096, 8420283, 1728188, -9960029, -12657805, -17580912, -16086800, 3741990, 10972568, -3041911, --18059264, -28148142, 11645267, 1879585, -16081431, -25855704, -18173080, -28372018, -53609244, -30754114, --4416837, -4295504, 65461744, -5238250, -1524177, 40843528, 5704254, 7010997, 24382530, -5043902, --15404437, 20564304, -28987272, 7413651, 4706748, -12592307, -40674416, 27802398, 8334384, -2559801, --41174776, 11045045, 6518150, -21740588, 3763465, 19177566, 11876658, 5623186, -18555332, -3754875, --6835441, 3348464, -6889128, 1786170, -14321032, -20764020, 23001160, -15712064, 34877280, -21347062, --19216220, -13066364, -24194624, 2222109, -279173, 36545340, -26818312, -28394566, 14892262, 9495636, --23378580, -31245888, -3267396, -17536352, 20542828, 4488241, -25753160, 17041894, -4219806, -39711268, -26425324, -17561048, 17314086, -29416232, -7080254, -489089, -12321724, -4721780, 3560528, 37970196, --10027138, -2940979, -10750303, 11396159, -17814450, 14723148, 29095182, -757525, 29043642, 24459302, --4276177, 48936856, -4109210, 7759932, -3929895, 16563005, 40672804, 349503, 27348742, -54434416, -1473174, -61190936, -20896626, -10887205, 17852568, 55363204, 46967616, 16916802, 27481348, -18855980, --15981573, 2091649, -4741644, 12329240, 3482682, -13286481, 18140332, 26999238, 22327924, 16515760, -13859323, -1145146, 1914482, -10093710, 25470230, 11509975, -5721434, -16854526, 4662187, 9995463, --3613141, 33478196, 34978212, -21470542, -16113107, -46708, 26935350, 16486232, 3565897, 2541010, --7567196, -13426068, 5945309, 41786812, -18329846, -22115860, -24102282, 21310018, 7963943, -13865228, --21135534, -33009508, -39093868, 2980707, 6861747, 5589900, -9865540, -4095251, -12062953, 6070937, --31962072, -50990924, -24343338, -5053566, -10685879, -21085606, 22201222, 39454108, -12293270, 19144816, -42146516, 27191438, 6037114, -34978752, -2248952, -33930780, 27925878, -3202435, 24041080, 14690936, -869194, 16029355, -6576669, -1475858, 13877576, 16892644, 2892124, 366683, -208306, -14841796, --9481140, 4313221, -20730196, 833761, -7575249, 772557, -17517560, 3300682, 1350767, -16010027, -13932874, 6015639, 9549323, -20182588, -5148055, 4078072, -703301, 1698660, 12081743, 2804614, -3652333, -2139431, -4151623, -3001109, -1298691, 7747584, -3042448, -12859132, 10940892, -17760226, --5246840, -5994701, 2534568, -8632347, -10013179, 13779329, -1354525, -13579076, 8754754, -19000398, -15681999, 4833986, 1102196, 15806553, 17912698, 2457258, 5366025, -13179644, 17366700, -8381629, --11299522, -1118839, 2824478, 31963146, -14192719, -24057722, 20518670, -8238284, 20342576, -4262755, -1098975, -9961640, 9313637, 14603963, -9563818, -91423208, -172334496, -62763432, -135378976, -154059408, -35110820, -7331509, 48903036, 194666704, 211407424, 148510848, 212960592, 174477680, 56670484, 59675888, -43840340, -120837296, -124071944, -70152920, -120445376, -130364072, -44746044, -39942660, -109801912, -83541944, --14896557, -50335408, -60606820, -16726750, -46683072, -81887848, -46926276, 12902619, -33386392, -41407780, -45697380, -9824201, -45521284, 38705708, 73985104, -19010062, 17943836, 114594560, 15403363, -38654704, -76701136, 66092568, -66883380, 37200324, 85140208, -27284854, 9844065, 146701056, 113302848, 56461104, -208277456, 230522176, 119902600, 212926224, 276783808, 173523120, 166246368, 227798624, 150298624, 96195992, -109529720, 59180892, -51406464, -110622792, -147495088, -263307808, -314878560, -359921472, -394814336, -381344256, --317797504, -149840128, -94480152, }, +20401, 2159295, -4076998, -1202054, -2580739, -3591130, -315143, 4429185, 767725, -2393908, +-2267206, 6123013, -2767033, 584652, -1990717, -2043331, -3163780, -776852, 7668664, 504122, +-382252, 1437203, 1978369, 652298, -2481417, 4250407, 131533, -148713, -1906429, 536334, +-1441498, 634581, 2820183, 207769, -115964, -159988, -200253, -666794, -3753802, 876710, +3172370, -945967, -1850594, 2961380, -3440269, -263604, -1462436, 2172180, -5546414, 2048163, +-421444, 833761, -1253594, -1153736, -153008, -1565516, 224949, 1675574, 1235340, -340913, +1093606, 4946729, -3124589, -2483028, 253403, -1171989, -2353105, 652835, -2532957, 1389422, +-3048890, 315143, -1552631, -2566780, -373125, -4971425, -1869921, 1250909, -870268, -2827699, +-147640, 6809671, -3394098, 868657, -1399086, 10737, -2518462, 4932233, -2459943, -2585034, +-2974802, 5866389, -3383897, -799401, -1576790, 1725503, 2705830, 3483219, -4725538, 98784, +4597226, 2131915, 813896, -133681, -539555, 2182380, 4677757, 1249299, -5947456, -2946885, +-3192235, 5350456, -516470, 4120484, -2486786, 1991791, 5226975, -2388002, -3923453, 1557463, +-1468879, -95026, -3519189, -1243393, -2636036, 1184337, -4781373, -1378148, -1240172, 53150, +6424734, -1887638, -1005022, 2147, -1734630, -420907, -662499, 4171487, 1955821, 2682744, +-3435437, 2775623, 2490007, -1940788, 951872, 1919314, -1873680, -1903207, 2556043, -3585761, +2644089, -440771, -54224, -217433, -3240553, 3271691, 322659, -1527935, -2230162, -674310, +-1165010, -81604, -2741800, -2144799, 1454920, -512712, -1088774, -4769561, -756988, 4259534, +-2988760, -827318, 3226594, -1986422, -3559454, -2775623, 2190433, -79457, -383863, -775242, +-3403762, 1031866, -1532230, -893353, 3777424, -2197950, -5181341, -1643362, 267899, 1438277, +1343251, 333934, -3923453, -1014686, -4771172, -4449049, -1158567, 4431333, -767725, -9097278, +-375273, 2908767, 2667175, -1972464, 1820529, 1811939, 248571, 2549063, -4753992, -3549791, +-350040, 1277216, 350577, 870805, -363462, 1132261, 1342714, 1731409, -41876, 1010928, +1399086, -1048509, 2247879, -606664, -4185446, -4003447, -1699733, -500364, 4276714, 2470680, +6319508, 584652, -1058173, -581431, 4509179, -1007170, 2484102, -3806952, -283468, 81604, +2425583, 1785096, 4043175, 2949032, -1883880, -3739843, -3095061, 2403571, -1254131, 3213173, +2002529, 613107, -86973, 2714956, 1862405, -1597191, 2156611, -4014721, -497679, -3700651, +-3279208, -4494684, 1460826, 2937758, -425739, 3998078, -2848100, 3728032, -6977175, 2964601, +1256278, 5471252, 1576253, 2141578, 2851858, 152471, -1760937, 2231236, 4571993, 1839857, +2219424, -431644, -71941, -6133750, -431644, 1347546, 1225139, -613107, 3408057, 6804839, +-2208687, -4291209, 3026341, 1057099, -3390877, 334471, -1661079, -2913062, 222265, 5069135, +896574, 2124398, 373125, 3518652, 3393561, -3028489, 5112085, -1646046, -3162707, -4765266, +1280437, -6344204, -253403, 784368, 1942936, -4009889, 2823404, 41339, 758599, 1830193, +1231582, 1562294, -5384279, -273267, -1075889, -3530463, 2310156, 1163399, 1029182, 3207267, +11158325, -715112, 773094, 1652489, 2924873, 1161252, -8766565, 1956895, -1259499, -945430, +5168993, 231928, 2704219, 3639448, -4173098, -2390149, -1005559, -4218732, -8943733, 522375, +-3180960, -468688, -492848, -100932, -1813550, -4425964, 1624571, -4228932, -1013612, 1070521, +-4440996, 5088463, 2120640, 1523103, -1603097, -258235, -340376, 1110249, -1075352, 2688650, +-3438658, 1452236, 6568079, 5132486, -1125281, 2705830, -1667521, 1280974, -3615289, 175557, +7297687, -9322227, 366146, -5753646, 2901251, 4190278, 5124970, -835371, -4917738, 86436, +5049808, 1040993, 947040, -3859565, -534187, -6727530, 8857296, -520765, -6859600, 7350300, +1831804, 2137820, -504659, -2730526, -895501, -3590593, -3501472, 2667175, 3859028, -864362, +3639448, -3097745, -1910724, -83752, 5087389, 4749697, -1384053, -2825015, 3952981, 2435783, +344671, 3257733, 772020, -4081293, 4134443, 2469069, -346819, -1518271, 1114007, -4423280, +11332808, -757525, -448824, 8289287, -816044, -5386963, -2861522, -835371, 2011118, -5635534, +3627637, 836982, 61740, -5203353, -4196183, -8999567, -847719, 3626563, 1910724, 4414153, +-2826089, -2494839, 10100152, -3569655, 1523103, -2423435, -4486094, -9607842, 62277, -3948686, +-4475356, 1566589, -5406827, 309775, 4001836, 2229088, 8188892, -13206488, 8761733, -1283122, +3941706, -2423972, -1715839, -6886443, 6449431, 5636071, 1591285, -6117107, -134218, -3493419, +-216896, 6601902, 4739497, 1098438, 6411313, 8590, 547071, 697932, 18254, -4245575, +9490804, -849867, 331786, 10820633, -6684580, 2634426, -3049964, -643171, 3662533, -1420560, +-5198521, 10385231, 8347269, -262530, 2908767, 4354560, 11475616, -1442572, -1705102, -6073084, +1384053, 2099702, -6083821, -6885907, -5672578, 7158100, 531502, -3047816, 5345087, 3412889, +472983, -1866163, 2051384, -4095251, -524523, -4500589, -437550, 3667902, -7262790, 1388348, +-980863, -6117644, 4146791, -2192581, 1226750, -1936493, -987306, 1247688, 7147363, 7568269, +1093069, -6958384, -1121523, -6628209, 2467996, 16542067, 3952444, 11376831, 4084514, -120259, +-11045582, -2944200, 1597728, 10222559, -4838818, -2612951, -4239670, 699006, 8254927, -6505802, +3940633, 6976101, 1425929, 2340757, -4986994, 8668855, -2143726, 11383811, -324807, -4000225, +-11263015, 930934, -187905, 12725451, -4212826, -1542967, 8102993, -434865, 843961, -3241627, +-8912057, 366146, 4678830, -6797860, -5203890, 652298, -10693395, 4996658, 5383205, -2488397, +-1072131, 2115808, 5425081, -1377074, -4094178, -1106491, 8065412, -2177549, -1942399, -4470524, +10431402, 9896142, -82141, -3675955, 723165, -2456185, 1600412, 2674691, -2408403, 3568044, +-6753836, 1582696, 366683, -7248294, 7678865, 5865852, 616865, -4764730, -5338645, -2257542, +-10778757, 12870406, 9762998, -1918240, 3740380, 1278290, -1896765, 9777493, -576063, -4370666, +14491757, -15370614, 4205310, 6777459, 156766, -6231461, 7023882, 1146219, 10065256, -3723200, +-837519, 2704756, 4159676, 737124, -1117228, 14390288, 6413460, -6495601, -9655623, 6926172, +-9656160, -2838437, -11149735, -1453846, 17303886, 6988449, 8495982, 56371, -8796093, -1525250, +-4166118, -2001992, 13015898, -2042257, -13797582, -1211181, 3022583, -9045738, -1220308, 5638219, +4803384, -6176700, -2878165, 5954972, 8413841, -2626909, 8748312, -170725, 2381023, 2771865, +950798, 2813204, 5304285, 4235375, 4978941, -3505230, -10022843, -12599287, 6366752, -699006, +5944235, -11599096, 4286378, 3425773, 1810329, -7557532, -6317897, -8054675, 6452115, 3418794, +-5740761, -5708012, 8088497, 2716030, -549756, -4779762, -8002061, -3180423, 3383897, -5055714, +711891, -9586904, -2624762, 1269163, 3426847, 6487011, -923418, 4193499, 5637682, -5496485, +-13395466, 9445170, 542240, -1992328, 8971113, -1210644, 482647, -5801964, 7917236, -4802311, +-6163278, -2293513, 6540699, 9859097, 8309688, 2717641, 1835562, -16882442, 7981123, -830539, +3507378, -5684389, -845572, -6375342, -1990181, -1378148, -8431558, -4164508, -3204046, -4531728, +9548249, -2634426, 12356084, -1096290, -46708, 7771207, 9207873, 14659260, 10692321, 264141, +-3479461, 56371, 1538672, -5838471, 3715147, -3512210, -4891968, -18486612, 3705483, -12822088, +-7797513, 11507291, 8887361, -21061982, -19327352, 323196, 7810935, -5142687, 4706748, -7164006, +-1067836, -12356621, -3440806, -11183558, -1068910, -3286724, 63351, 3868155, 3144453, 6462852, +-1112397, -6073084, 4751308, -7180112, -3015604, 1917703, 188442, 3223373, 6946036, -1439888, +680752, 1380832, -3127810, -1025960, -10720775, -12717935, -12248173, -233002, -12303471, 3833258, +1450625, -5018670, -5770826, -2638184, -2121714, -1238561, -7299297, -11592654, -690953, 17957796, +9977746, -2697776, -10791642, -11300596, 12587475, -11836393, -3736622, -2156074, -7632157, -5979668, +-7700877, -9343701, -12618077, -17545478, -2012729, -2730526, -1819992, 6070400, 6496138, 1728724, +6161668, -3299072, 1609539, -14516453, 2133525, 7900593, 8609262, 7941395, 3654480, 15291157, +-5430986, -10543608, -2363306, 2234994, -1705639, 5057861, 10457172, 20365124, 13156559, 7635915, +9897752, -7492034, -14260902, -4845260, -10525354, 12817793, 3446711, -2452426, -8392903, 14485851, +12910135, -4376035, -263604, 95026, -6743636, -6039261, -10459319, 3435437, 4547297, 6454262, +-9806484, 1057636, 3757560, -4716411, -9459129, 365609, 6754373, 7911867, 2160369, -20003274, +-6300180, -9869835, 4993437, 11944304, 915365, -11258183, 3637837, -10882910, 7010997, -2682207, +2001992, -7757785, 17246442, 12687870, -2865817, -3824132, -8136279, -723702, 14174466, 2873870, +17206176, 15216532, 14177687, 7428683, 4151623, -10251013, -3981972, -13513578, 17565880, -8533563, +-1107028, 8607114, 14026289, -11905649, -14690936, -12569222, 16707423, -5025112, 11651173, 1153199, +1609002, 25912612, -1509144, 3102040, -9417790, -15699716, 5739687, -1254667, 6101538, 4261145, +180926, -8446590, 4316442, 4898410, 3294777, -7909719, 7691750, 5684389, 19598472, -7017440, +2901787, 11076721, 11739756, 1654099, 11870216, -1293859, 2173254, 10325101, 9456444, 3322694, +-2110440, -13174812, -9074729, 9760850, 1692754, -2020245, -892279, 3445638, 21441550, 105764, +-4689568, 11196443, -2611340, 10664941, 4471598, 29335700, -3196530, 443992, 2308545, 5520644, +12037720, -496069, -675384, 7610145, -10428181, 12109123, 22564684, 7230041, -1106491, 12377022, +-970126, 755377, 25729538, -11637751, 8521215, 10087268, 592169, 1417339, 1874753, 3898757, +-14902463, -4975183, 8707509, -5628555, -8177081, -7518877, -7546258, 193274, 8803609, -2253784, +-22228066, -1031329, -17075180, 5261872, 6199786, -951335, 2523293, -8262980, -1687922, 7515656, +-21267068, 4060892, -5225365, 10264435, 7188702, 3939559, 170725, -9413495, -19233400, -2252174, +-16893180, 8706972, -565325, -6220724, 16350404, 7473780, -7487202, -6800007, -4233764, -4045322, +-5444408, -10669773, 976031, 1099512, 23966454, -2415919, -18311594, -1649804, 11348914, -809601, +-9776956, 3966402, -14405857, 7314330, -6518150, 4152697, -8728984, 1692217, -14790794, 34782256, +567473, 23279260, -3342022, -9298604, 5675800, -10670846, -9092446, 11588896, 12689481, -14874009, +-33315524, 27598386, -12037720, -11470784, -5828271, -1981591, -15940771, -5762236, -4994510, -13699335, +-24059334, -6032819, 149250, -12800613, 5954972, -5543729, 10350871, -9250286, -4083440, -13120051, +30760018, 26162256, -6174553, 5779416, 17736068, -19022410, 18919868, -8046085, -8329016, 6895033, +2211371, 3265786, -3165391, -4184909, 194347, 6234145, 5019743, -8403640, 9291088, -9041443, +-15491410, 11027329, 9264781, -12509629, -16035797, -17980880, -3056943, -2877628, 4641249, -11667816, +-15221901, -7393786, 24319178, 8851391, 7973070, -10392747, 9089225, 13271986, -10642929, 24598352, +4031364, -8395050, -11904039, 6859063, -10091026, -20409148, 4541391, 206695, -73551, 11876121, +10031433, -8562554, 1157494, -25985626, -3920768, -9709847, 21413096, 2317672, 2386928, -11496554, +9536975, -19882478, -4589173, -11622182, 14543296, 15302432, 13872207, 9293772, -175020, 12647068, +11525545, 1808181, -2233383, 5005248, -1074, -13164075, -1578401, 4778151, -10198400, 14356465, +-15170898, 11944304, 13201119, -4006668, -2990371, 5381594, 17627620, 12973486, -15938087, -3733937, +-4263292, -1545115, 3987877, -7728257, -7778186, 16983374, 442382, 24503326, -16214038, -15751256, +12516608, -8678518, 4520453, -10172630, 8358007, 9074729, 6295349, -4384088, -14252849, 879931, +4740034, -12432320, -21787832, -1378148, 1970316, -13538274, 23505282, -3431679, -6710350, 30443266, +29387776, 2034741, -4173635, -2105608, -6395207, 5960341, -15591805, 13197361, 1711545, -9860171, +17211544, 1104344, 3167539, -7014756, -10029286, -25979720, 4348655, -11266236, -5459977, -26071526, +-60029684, 19758998, 18711562, -6955163, 3970161, -14663555, 25521232, 16216186, -14886357, 3888556, +3243237, 90731, -6844568, -5024038, -31085900, 12753369, 14951318, -3802120, -274878, -2016487, +9973988, -8018704, 19275276, 5498095, -23496156, -13459891, 29228326, 19066434, -19495930, -4825396, +-7108171, -12077985, 1561221, -5011690, 3925600, 38008848, 10161893, 39835284, 22647900, 25555056, +23287850, 45921252, -3337190, -4624606, 10751377, -3605625, -39115876, 31106838, -13960791, 17683454, +-25992068, -20754356, -38667592, 7233799, -3914863, -13245679, 8932458, -18408230, -375810, -26146688, +-26171920, 6749541, 14470819, -21371220, -6134824, -15028627, -20782274, -23209466, -17024176, 11560978, +-10799695, -29199336, 39106752, 23843510, 38533908, -8257612, -22469658, -57770532, 24003498, 28791850, +-14060649, -6550899, -2175938, 32684164, 387621, 6400575, 6366216, -8615704, 5959804, 14803142, +-3802657, -15750719, 3051574, 27637578, -15745887, -10227391, 5546951, -4784594, 20596516, -6158446, +8906152, -11813308, -13864154, -14018773, 13253195, -5080947, 11680700, 13538274, -4440460, 983011, +-631897, -12736189, 3178276, -11663521, 11886322, 29947734, 50054084, -1649804, -2228551, -22564148, +10826539, 15549392, -1326071, 17562122, 25851946, 10080825, 14296872, -24618752, -14997489, 18230526, +49793168, -10581726, -30842160, 6263673, -11017665, -1925219, 12565464, -1188632, -14907295, -8013872, +-8475581, -36115308, -16087874, -1433982, 3804267, 10300942, -4303557, -15112916, -10598369, 1326608, +-9477919, -15312095, 6870874, 18088254, 5978595, 9475772, 3666828, 27303108, -8676371, -3429532, +-10807748, 6345814, -6748468, 6028524, 30907122, 6154688, -32935420, -7968775, -9682467, -28035936, +17744658, 8504572, -3367254, 4058744, 1632088, -12509629, -238908, -772557, -12652974, -3615289, +26924076, 39929776, 18630494, -13681081, -22056268, 10554882, 18039400, 2265059, 14405320, -9857487, +-7141994, 15231565, 4591857, 543313, -33498060, -43141872, -1522566, -25029996, -14882062, 9571871, +36316096, 8420283, 1728188, -9960029, -12657805, -17580912, -16086800, 3741990, 10972568, -3041911, +-18059264, -28148142, 11645267, 1879585, -16081431, -25855704, -18173080, -28372018, -53609244, -30754114, +-4416837, -4295504, 65461744, -5238250, -1524177, 40843528, 5704254, 7010997, 24382530, -5043902, +-15404437, 20564304, -28987272, 7413651, 4706748, -12592307, -40674416, 27802398, 8334384, -2559801, +-41174776, 11045045, 6518150, -21740588, 3763465, 19177566, 11876658, 5623186, -18555332, -3754875, +-6835441, 3348464, -6889128, 1786170, -14321032, -20764020, 23001160, -15712064, 34877280, -21347062, +-19216220, -13066364, -24194624, 2222109, -279173, 36545340, -26818312, -28394566, 14892262, 9495636, +-23378580, -31245888, -3267396, -17536352, 20542828, 4488241, -25753160, 17041894, -4219806, -39711268, +26425324, -17561048, 17314086, -29416232, -7080254, -489089, -12321724, -4721780, 3560528, 37970196, +-10027138, -2940979, -10750303, 11396159, -17814450, 14723148, 29095182, -757525, 29043642, 24459302, +-4276177, 48936856, -4109210, 7759932, -3929895, 16563005, 40672804, 349503, 27348742, -54434416, +1473174, -61190936, -20896626, -10887205, 17852568, 55363204, 46967616, 16916802, 27481348, -18855980, +-15981573, 2091649, -4741644, 12329240, 3482682, -13286481, 18140332, 26999238, 22327924, 16515760, +13859323, -1145146, 1914482, -10093710, 25470230, 11509975, -5721434, -16854526, 4662187, 9995463, +-3613141, 33478196, 34978212, -21470542, -16113107, -46708, 26935350, 16486232, 3565897, 2541010, +-7567196, -13426068, 5945309, 41786812, -18329846, -22115860, -24102282, 21310018, 7963943, -13865228, +-21135534, -33009508, -39093868, 2980707, 6861747, 5589900, -9865540, -4095251, -12062953, 6070937, +-31962072, -50990924, -24343338, -5053566, -10685879, -21085606, 22201222, 39454108, -12293270, 19144816, +42146516, 27191438, 6037114, -34978752, -2248952, -33930780, 27925878, -3202435, 24041080, 14690936, +869194, 16029355, -6576669, -1475858, 13877576, 16892644, 2892124, 366683, -208306, -14841796, +-9481140, 4313221, -20730196, 833761, -7575249, 772557, -17517560, 3300682, 1350767, -16010027, +13932874, 6015639, 9549323, -20182588, -5148055, 4078072, -703301, 1698660, 12081743, 2804614, +3652333, -2139431, -4151623, -3001109, -1298691, 7747584, -3042448, -12859132, 10940892, -17760226, +-5246840, -5994701, 2534568, -8632347, -10013179, 13779329, -1354525, -13579076, 8754754, -19000398, +15681999, 4833986, 1102196, 15806553, 17912698, 2457258, 5366025, -13179644, 17366700, -8381629, +-11299522, -1118839, 2824478, 31963146, -14192719, -24057722, 20518670, -8238284, 20342576, -4262755, +1098975, -9961640, 9313637, 14603963, -9563818, -91423208, -172334496, -62763432, -135378976, -154059408, +35110820, -7331509, 48903036, 194666704, 211407424, 148510848, 212960592, 174477680, 56670484, 59675888, +43840340, -120837296, -124071944, -70152920, -120445376, -130364072, -44746044, -39942660, -109801912, -83541944, +-14896557, -50335408, -60606820, -16726750, -46683072, -81887848, -46926276, 12902619, -33386392, -41407780, +45697380, -9824201, -45521284, 38705708, 73985104, -19010062, 17943836, 114594560, 15403363, -38654704, +76701136, 66092568, -66883380, 37200324, 85140208, -27284854, 9844065, 146701056, 113302848, 56461104, +208277456, 230522176, 119902600, 212926224, 276783808, 173523120, 166246368, 227798624, 150298624, 96195992, +109529720, 59180892, -51406464, -110622792, -147495088, -263307808, -314878560, -359921472, -394814336, -381344256, +-317797504, -149840128, -94480152, }, { 976031, -1103807, 2146947, 2560874, 2877091, 2073932, 436476, -99321, -2056753, 2018635, -3248606, --2457795, 1020592, 904628, -3114925, 5828808, -1801739, 1736241, -1864553, -1691680, 1253594, --514859, -1008780, -564251, 361314, -1848983, -861141, -3647501, 2195802, 1664300, -2878702, --1264868, -1255204, -3185792, 1018444, 560493, -125628, 726923, 1198833, 242129, 1040993, -3312494, -4687957, 895501, -739271, 3169686, 2712272, -2182917, 6245956, -3831648, -4067871, -1019518, 2785823, 1735704, -712428, -912144, -646393, 904091, 1036698, -353798, -2431488, --2031520, -1283122, -3136937, 408022, 1988570, 609349, -724776, -475131, 3759707, 1663226, -1451699, 2830920, 1035624, 1073205, 1397475, -4356171, 3650722, 3905736, -1825898, 3918621, --2334315, -499827, 5216238, -2112587, 2493766, 1522029, -5734318, -2583960, 4349728, -1671279, --798864, 2733210, 1828582, 1950452, 548145, 6668474, 1166621, -1700807, 1523640, -2291902, -4156992, -1178969, -2235531, -978179, -5356898, -1819456, -3936338, 1308891, -32212, 1462973, --1553704, 2264522, 1106491, -244813, 732292, 363998, 563714, 729608, -2807298, 7117835, -1096290, -2597918, 5322538, -1273995, -4502737, -4999342, 4922570, -978716, -332323, 3210488, -422517, -852551, 2583960, -286689, 1529008, 402116, 1930588, -986769, 2102387, -932008, -2491081, 3463891, 1998234, -2082522, -2001455, -1058173, 1073205, -2208150, 1718524, -1061394, -2148558, -16643, 4582730, 914291, 1056562, 3847754, 65498, 2780991, 1334124, -296890, -312459, -2977486, 1417876, 255014, 4712653, 1676111, 1558536, 224412, 1406602, 5162014, --4842039, 2762738, 745714, -3198140, -1418950, -1979443, -632434, -1837172, 1321239, 5952825, -3758633, 4446365, 3542811, 6065031, 4429722, -5497022, -9963250, -1262184, 478889, -2433636, -5266167, -226023, 7880728, -3681324, -3683471, 3387119, 187905, 272730, 3115462, -5763846, -1471563, -4133369, 5439576, 3192771, -34897, 8257612, 347355, -816044, -1054415, -1481764, --2091649, 3889093, 2046015, -2050847, -723165, -5801427, -2614025, -802085, 5940477, 4081293, -607201, 2992519, -61740, 3183108, -237297, 1261647, -3822521, 3396246, 8018704, 2186675, -136902, 21475, 2100776, 1928977, 271120, 1060857, 1648194, -371515, -391916, 2110440, -9116068, 2870112, 7066295, -4382478, -3580392, -1626182, -4585415, -5384279, -2255932, 3520263, --6526740, -1156957, -952409, -10213432, 1789928, -10320270, -3544422, -1626182, 2177549, -262530, -1886028, -2260227, -307627, -7081864, 2281702, -2560338, -3995393, 392990, 1692217, -645319, -281320, 2559801, 4918275, -8998493, 2142652, 229781, -2786360, -3124052, -796180, 814970, --1403381, -5597416, -1481764, 1010391, 2443837, -779000, 6173479, 132607, -16643, 2184528, --4464082, 5640366, 1591822, 3138547, 1223529, 2522757, -1089311, -1122597, 1282585, 501974, --1490891, -2411087, -2338073, 4915590, 5369783, -173946, 5922223, 373125, -783832, 730681, -483721, -1093069, -71941, -4131222, -2378338, 3707094, 4329864, -5077188, -1235340, 2131915, --3417183, -9722195, 2398202, 3623342, 4205310, -2214593, -2614025, -3448322, 5277441, 6084895, -999654, 2419677, -4799626, -3820374, 4454418, 1734093, -3616363, 6287832, -6324340, 1078037, -538482, 5900748, 2089502, -1259499, 885837, -1993402, 3140695, -7610145, -2350958, -10981158, --4903242, 5619965, -566936, 8596377, -1277216, -7106561, 4402342, 1031866, -3055332, -305480, -197569, -2863133, 1730872, 5149666, 5585605, 175020, 2543695, -260382, 6318971, -3357054, -2544231, -653372, -477278, 140123, 1815161, -807991, 7597261, 569083, -234076, -1893007, -6259915, -7926899, -884226, -5293547, -5506148, 2305861, 1360968, 12144557, 867047, 4626754, --9683541, -2127620, 2441152, -4910758, 3658775, 1244467, 1090385, 3152506, 3609383, 8056285, -3726421, -983548, 2721936, -3637837, 1386738, 3402688, 37044, 906775, 3715147, 4729296, -11052561, 2367064, -1352378, -7133941, -56908, 5866926, -8490613, 1224603, -386547, 3007014, --4126927, -4909685, 9611063, -5718212, 2189897, -119185, -5595269, 13772350, 3752728, 7341710, -4083977, 8002598, -1155883, -2663954, 5210332, -4304094, 4070019, -3384434, 2342368, 5579700, -3229279, -2164664, -125091, 2948495, -4439923, -3294240, 566399, -376347, 8295193, -4243428, --7177427, -1014149, 4476967, 6765111, -3811784, -7213398, -962610, -3491809, 3252901, -13280039, -7000260, 1808181, -3222299, 3584150, -10897406, -9177808, 824634, -4714264, 9691594, 8529805, -9138617, -6672769, 3366181, -227096, 9116605, 295816, 6359773, 2294050, -3115462, -8857296, --7980586, 2072322, -10533407, -537945, -2704756, -5364951, -7123204, -4409858, -217433, 7848516, --243203, 2816962, -11988864, -6944962, -1511292, -7749732, 249645, 6949794, -8213588, 2878702, --352187, -3129958, -991064, -2117956, 7850664, 3932580, 3791919, -2360085, -2707440, 10734734, --3611531, -3461744, -9431748, 6294275, -13288629, 1365800, -4526359, 1617055, 4404489, -3565897, --7201587, -4728759, 237297, 9044127, -5001490, -1464047, -6399502, -5363341, 2782065, 2872260, -7151121, -9145059, -542777, 2067490, 1105417, -12633109, 2629594, 555125, 1404991, -17154636, -14218489, -228170, -965294, -814433, -6043556, 1236414, -471373, 4819490, -5328444, 5476620, -1015223, -4183298, -7094749, -8455717, 3300682, 266825, -1417876, 119722, -5353140, 4568235, -2968359, 8795019, 4697084, 3251827, 4290673, -1567126, -5874442, -4154844, -510564, -3007014, -3144990, -4804458, -7643968, -7745974, -432181, -10466298, 3764539, 5078799, -7001334, 5985037, --8287677, 3490198, -11807402, 1283658, -2971581, 644782, -3888556, -280247, -11126113, -1772211, --4534412, -6447820, -2808372, -5001490, 467615, -4456029, -3760244, -6361384, 1660542, -6008659, --1699196, 10193031, -2980171, 667867, 1895154, -1695975, -11418707, -10777684, -3117073, -6785512, -792958, 4662724, 3144453, -10423886, -490700, 1737851, -9777493, -11007464, 5779416, -10791642, -1870995, 7102266, -5426691, -12360379, -5523328, 277562, 7878581, -3299609, 14078366, -968515, --1421097, -8246337, -6192806, -923418, 2573759, 881005, -3306588, -2399813, -1034013, -2982855, --6533182, 5190468, -5500243, -2978023, 4958540, 1759326, -9127342, -9050570, -8967892, 7551626, --8398272, -8304320, 13400298, -8489003, 5594195, -944893, 3179350, -12260521, 5137855, 1048509, --2685428, -261993, -3129958, 4446365, 2261300, 12255152, -3736622, -1791538, 4823249, 11934104, -2309082, 2845416, -6300180, -2988760, -10362682, -1359894, -1226750, 607738, 5790690, -1367410, -2556579, 12854300, -2986613, 556198, -2547453, 936303, -13152800, -12253005, 5003637, -957241, -5944235, -1023276, -2663417, -3799436, 5025649, 3067681, -2962991, 2232309, 5114233, -2835752, --17869212, -7825431, -3595961, -2074469, 7819525, -14021994, -10334765, 8446590, 5184026, 21406118, -5943698, 4859756, 5791227, 2629594, -3978750, 333397, -4188667, 6754373, 173409, 6820408, -70330, -291521, -9584220, 4801774, -6555194, 4879620, -1142998, 5123896, 1898376, 6910603, --11099806, 1191317, -7765838, 9029095, 356482, -9226663, 11872900, 8862128, 5510443, -5551782, --18659486, 5234492, -2270964, -2343979, 8722005, -924492, 3845070, 8675297, -2294050, -11094437, --506806, 4935455, 2753611, -2983929, -1780801, -8110509, 2363843, 1111323, 926639, -1219771, -159451, 6931004, -5650030, 2931852, -2962991, 4899484, -4757750, -19732154, 4403415, 5201206, -20626580, -3935801, -2960843, 9944460, 12927315, -20250234, -11442867, 11582990, -5546951, 717260, -4904853, -12768401, -28432684, -10930155, 16608639, 13330505, 11262478, -2983392, 6431714, -2995740, -5939403, -5625334, 2259153, -14127758, 3805878, -4747013, 7676717, 7591892, 492848, -6466610, -6994891, 4642323, 11899207, -825707, -7038915, -3221762, -18200460, -9014599, 4696547, -834297, --12155294, 8768176, 11617887, -15842524, 15847356, -1086090, -1620813, 10304700, 2115272, 9773735, --1177895, 3780645, -3542274, -1450625, 4700305, 19237696, -6874095, 12430709, -1153736, 1611150, -4264903, 10924786, -9967008, 1658931, 14762339, 5126044, -7706782, 4686346, 4960151, 2098092, -10259066, 9404368, -1133335, -13254806, -3548180, 13314399, 8334921, 10011032, -6844031, -3468723, --1322850, -1548873, 14166413, 1755031, -15157476, -6721624, -4858145, 9452686, 1530619, 1986422, -7748121, 17678086, -26574036, 17346300, -3840238, -3118146, -7182796, 5171141, 4917738, 10231686, -1137093, 9770514, -1483374, -2544768, 2522220, -1553704, 4450123, 9047349, 508954, -556198, -11191611, -8611409, -2237678, 3040837, -1668595, 10571525, -12926778, 1341640, -11196980, 1962263, --11868068, -1276142, -455803, 6426882, 14205067, -8404714, -5737003, -8676908, -1486596, -12822625, --9666361, -8199630, 4814122, 11496017, -1032940, 22255446, -14916958, 20078436, -14931454, -2196876, -4464082, 5544803, 17482128, 12434467, -15990700, 9331353, -7671349, -17027934, -858457, -12211129, --7330973, 1112397, 17885854, -1812476, 8666170, 16729971, -11635066, 6978248, -19419694, 13922673, --11404212, -4855998, 21435108, 8199093, 23002234, -7887171, 1465658, -8436926, 7585986, 29198798, -8458401, 10822781, -12737799, -1292785, 2005213, 12114492, 10766409, 19222126, -13168370, -3600256, --14446123, -11922292, 2302639, 2549600, 10640245, -7650411, 7843147, -19903952, 14724222, 11689827, -6143414, -2101850, -1224066, 2936147, 7673496, 3674882, 3101503, 1487132, 15858093, 14093935, -6696928, 2777770, -9707163, -9148280, 31334470, 2856153, 5053029, 18532248, 8709657, -2885681, --2243047, 12571906, 22902914, -13662828, -5266704, -15549929, -15183246, 23389856, 10636487, 2620467, --3084324, 9639517, 16954920, 13224741, 16982838, 8070781, -6343667, 568546, -905701, 6248104, --14203994, -10743324, -4272419, -13335337, 14527190, -1979443, -3864934, -12754979, -2164127, -11920682, --28686086, 4579509, -3572339, -9438728, 6445672, -15608448, -916976, -8748312, -22907208, -5732708, --9893457, -11366094, 18417894, -5428839, -6504728, -3879429, -279710, -5220533, -6302865, -1632088, -5040681, 14897631, 11927661, -1085553, -634045, -26702886, 1894081, 2860985, 11011759, -6733435, --5035849, 38748660, -6374805, -20092394, -18313740, 15569793, -10482405, 3882114, -21708912, 4650913, --5668283, -12822625, -9675488, -26263188, 4719096, 6243809, 18685256, 4212289, -9004399, 13021267, -2449742, 12087649, 15622407, 41336376, 12266963, 1431835, -15810848, -20386600, -4283693, -182536, --1865090, -19729470, 7500624, 15076409, 3588445, -5522791, -17055852, -7242389, -2492155, 5554467, --6139119, 10507101, -5172751, -6795175, 20061256, 10640781, 22782654, 590558, -6460705, -8621073, -24125906, -20290500, -7597797, 28384366, -16821240, 5980205, 5914707, 7670275, 1718524, 16170015, --4851166, 14616847, -5323075, 3565897, 3433826, -6800544, 10568304, -15440944, -11079405, -9811853, --4737349, -13611825, -26125212, -4158065, -7817914, 4792647, -6731825, -34068756, 9657771, 22527104, --1262184, -3896609, 34147676, -41518376, -9162239, 24437828, -5790690, 19205484, -13458280, -7399692, -6354941, -39362840, 13066901, -12659416, 20205136, 16014322, -21444234, 43655120, 6294275, 3649649, --2108292, 18251464, -30564062, 14300094, -1298154, -2857227, 8438537, -17430588, 28413894, 28423556, --46390480, 9864466, 9279814, 2321430, 26962194, -10606422, -32422708, -32560148, 3700651, 5167383, --13709536, 9764071, -17616882, 6995428, -7398081, 18271328, 23206246, 1721745, 22498650, 20475182, --9721658, 726923, -12730820, -2473364, -2119030, 8525510, -210990, -1127966, -1155883, -21415244, --32732482, -12618077, 18905910, 14709726, -13326747, -15711527, 11026792, 10945187, -20783884, 12177843, --13373991, -1673964, 18401788, 24773372, 1535451, -12956843, 10476499, 2915209, 16213502, 3688303, -13811004, 13874355, -2058363, -47423420, 7094749, 2484639, 21312164, -5914707, 21767432, 21166672, --11512660, -64521148, -6963216, 4097399, -5948530, 41086196, 43632036, 30560840, 43493524, -8990977, -21760988, -14436459, 30107184, 21431886, -29839286, 43540232, -39639864, -33030446, -30161408, -24848534, --48029544, 11589432, 19429896, -1436130, 26249766, 10771241, -29796336, -6645925, 7914551, 8838506, -9878962, -5100811, 15747498, 2403034, -7917236, -3083250, 6509023, 21664888, 28147068, 21378736, -33499134, -29685204, -7118909, -6845641, -30084636, -6407555, 6924024, 2767570, 5034239, -11412265, --12676596, 17209934, 37633576, -15890842, 20225000, -10997801, 6490233, -10040560, -238371, -26898306, --8508867, -386547, -37164352, -21525840, -36290328, -30906048, 23177254, 51532092, 41997800, 2501819, --562641, 1502165, -7019587, -15858630, -58846956, -18882824, -6601902, 6529961, 4811974, -19843286, --12750147, 9674414, 29155848, 17920214, 11057930, 19659676, 32549410, 14172318, -27572616, 25807384, --15298674, -6001680, 20260972, 44328356, 10619844, 55238648, -21123186, -34502548, 21144660, -3439732, --20921860, 9935870, 22405234, 19468550, -40354976, -34770980, 8471286, -16176457, 3903589, 19607062, --10905996, -7903277, 32240708, 8803609, -4775467, -10327249, -9483825, 12209518, -7586523, -1397475, --1250909, -13168370, -5419175, -21930104, -29613800, 10547366, 15649787, -18391050, 13165685, 9375914, --6763500, -12684649, 1585917, 23323820, 12922483, 4366908, -23596550, -25692494, -13076565, 7253663, -28543278, -21463562, -12008729, -9572408, 16804596, 47095928, 11820287, -45329620, -10746545, -4948876, -22852448, 1007170, 11489038, -5441724, -11571179, -9541270, -26680874, 24782498, 24689620, 11032160, -26050050, -7640747, 16367583, -7167227, -20804284, -20520816, -24646670, 5339718, -45193256, 46868832, --4808753, -15064598, -28314572, 31556198, 22803056, 6562710, 1676111, 13005698, 11414949, -27292906, --37852620, 8179229, 23229330, 34841312, -3370476, -12080132, -27548458, -17577690, 12481175, -3975529, --24088860, -44742820, -44883480, 5150203, -16091632, 19566798, -51208360, -19248432, 5471252, 3251827, -5242008, -18631032, 3064459, -4904853, -12788802, -5426691, -26192858, 16867948, 21402358, 15123117, --34004868, -19801410, -4774930, 6363531, 10974715, 12290586, 8779450, -7314330, -6377490, -8053064, -17150878, 55479704, 33216204, -35156992, -34973380, -23642184, -43859668, 41914584, 20009178, -18845242, --45552424, -43709884, 39484708, 22473416, 880468, 29104310, -40723808, -9264244, -3195456, -14816027, --2110977, -19317690, -41648836, 2286533, -33273648, 29356102, 29090888, -21547850, -10274636, -9168145, --12032351, 23686744, -37677064, 33557116, 49495740, 53464288, -59426780, 11253888, -1311039, -4955856, -25993678, -10678362, -17164836, 17680232, 9638443, 36510444, -3000035, -28846610, 1628330, -13200582, -22333830, -33237142, -10906533, -15705622, -21218212, 30109868, -21226266, -3359738, 21809844, 11847667, --6352794, -11887396, -29994978, 3661997, 41959148, 24502788, -640487, 11717208, -8065949, 32905892, --21313776, 14893873, -11192685, 20167556, 35737348, -8277476, -21092048, 10394895, -29205240, 49876920, -7289633, -27576374, -7808251, -42644192, 6740951, 59192164, -9512279, -36099736, -23240604, 35964984, -12380780, -20103668, 382252, 8724152, 21936008, 49866180, -40036076, 17827872, 42462196, -6597070, --48194364, -47374564, -27380416, 83682608, -60834992, 22150756, -60921964, -22340272, 21578452, -56521232, -9662603, -50788524, 22124450, 23774254, 47029892, 20772610, 10588168, 12231530, -14998026, -36259724, --25417080, -23840290, 9842454, 5792837, -6464463, 21528524, 33017562, -14986215, -21275658, 23097798, -3768297, -30881888, -7457137, 13941464, -25820270, -4507568, 5229660, 12956306, 6498286, 18338436, -30985504, 5581310, -20462298, -2262374, 5600638, -15838766, -7575786, 14770393, -11634530, -20034948, -27519466, -6633040, -7449621, -11001022, -11536819, 18329846, 4086125, 4344360, 23621784, -11337103, --19249506, -838056, 1213865, -7646653, 5583995, -1008244, -7262790, -861141, -24174224, 5633387, -3989488, -3585224, 12073153, 9039296, 3835406, 6193880, -24883966, 29377040, -11242614, -9805410, -8602819, -25726854, 8969502, -19304804, 4638565, -25692494, 42807404, -1687385, 24432458, -21230024, -3155727, -3414499, 8020315, 7373385, 13283260, -6015102, 9880572, -5323612, 5626407, -382252, -4527433, 10780905, -869194, 16415365, -5978595, 12556337, 999117, 98247, -4118874, 8276939, --5755256, 7548942, -3743064, 1126355, -3062849, 4444755, -2457258, 9674414, -2523293, -5624260, -14704357, -9282498, 7800198, 6793028, 2455111, 7732015, -8633421, -5388037, 6818261, 6972880, --3723737, -31139, 7208566, 191663, -9731322, 5185636, -4920422, 5949067, 6908455, 4150549, -2357400, 3178276, -10636487, 6181532, 2896419, -2149631, 3726421, -3879966, 2192581, -1301375, --799938, -67646, 3269007, 8511551, -10464688, 10337986, -2522757, -1793686, 4008278, -4977867, -1751810, 6673843, -1817308, 10722923, -35477504, -111029200, -16143171, 54188528, 28155658, 131448008, -24639154, 28388124, 17997524, -35213364, -49570364, -35344360, -63605244, -54742580, -30872762, -12642236, -36810556, 99817728, 79352208, 68219648, 38998840, -30584462, -49636400, -36647884, -68507416, -65093452, --19681150, -9077413, -14899242, 25327960, 39834212, 26189100, 48518100, 37283000, 11733851, 34287796, -7329899, -5072893, 3514357, -20641612, -53967876, -46189152, -38873212, -55089400, -22679574, 16072304, -11462731, 35243964, 40349608, 34869764, 36253284, 36542656, 23630910, 22622130, 2943663, -20382304, --37493452, -25983478, -35247184, -47312284, -22750442, -21736830, -17103634, 6636262, 18506478, 17113834, -34025268, 41733660, 20869782, 29452738, 25858388, -6898255, 3727495, 11418707, -13035226, -13003013, --19846508, -18107046, -9757629, }, +1103807, 2146947, 2560874, 2877091, 2073932, 436476, -99321, -2056753, 2018635, -3248606, +-2457795, 1020592, 904628, -3114925, 5828808, -1801739, 1736241, -1864553, -1691680, 1253594, +-514859, -1008780, -564251, 361314, -1848983, -861141, -3647501, 2195802, 1664300, -2878702, +-1264868, -1255204, -3185792, 1018444, 560493, -125628, 726923, 1198833, 242129, 1040993, +3312494, -4687957, 895501, -739271, 3169686, 2712272, -2182917, 6245956, -3831648, -4067871, +1019518, 2785823, 1735704, -712428, -912144, -646393, 904091, 1036698, -353798, -2431488, +-2031520, -1283122, -3136937, 408022, 1988570, 609349, -724776, -475131, 3759707, 1663226, +1451699, 2830920, 1035624, 1073205, 1397475, -4356171, 3650722, 3905736, -1825898, 3918621, +-2334315, -499827, 5216238, -2112587, 2493766, 1522029, -5734318, -2583960, 4349728, -1671279, +-798864, 2733210, 1828582, 1950452, 548145, 6668474, 1166621, -1700807, 1523640, -2291902, +4156992, -1178969, -2235531, -978179, -5356898, -1819456, -3936338, 1308891, -32212, 1462973, +-1553704, 2264522, 1106491, -244813, 732292, 363998, 563714, 729608, -2807298, 7117835, +1096290, -2597918, 5322538, -1273995, -4502737, -4999342, 4922570, -978716, -332323, 3210488, +422517, -852551, 2583960, -286689, 1529008, 402116, 1930588, -986769, 2102387, -932008, +2491081, 3463891, 1998234, -2082522, -2001455, -1058173, 1073205, -2208150, 1718524, -1061394, +2148558, -16643, 4582730, 914291, 1056562, 3847754, 65498, 2780991, 1334124, -296890, +312459, -2977486, 1417876, 255014, 4712653, 1676111, 1558536, 224412, 1406602, 5162014, +-4842039, 2762738, 745714, -3198140, -1418950, -1979443, -632434, -1837172, 1321239, 5952825, +3758633, 4446365, 3542811, 6065031, 4429722, -5497022, -9963250, -1262184, 478889, -2433636, +5266167, -226023, 7880728, -3681324, -3683471, 3387119, 187905, 272730, 3115462, -5763846, +1471563, -4133369, 5439576, 3192771, -34897, 8257612, 347355, -816044, -1054415, -1481764, +-2091649, 3889093, 2046015, -2050847, -723165, -5801427, -2614025, -802085, 5940477, 4081293, +607201, 2992519, -61740, 3183108, -237297, 1261647, -3822521, 3396246, 8018704, 2186675, +136902, 21475, 2100776, 1928977, 271120, 1060857, 1648194, -371515, -391916, 2110440, +9116068, 2870112, 7066295, -4382478, -3580392, -1626182, -4585415, -5384279, -2255932, 3520263, +-6526740, -1156957, -952409, -10213432, 1789928, -10320270, -3544422, -1626182, 2177549, -262530, +1886028, -2260227, -307627, -7081864, 2281702, -2560338, -3995393, 392990, 1692217, -645319, +281320, 2559801, 4918275, -8998493, 2142652, 229781, -2786360, -3124052, -796180, 814970, +-1403381, -5597416, -1481764, 1010391, 2443837, -779000, 6173479, 132607, -16643, 2184528, +-4464082, 5640366, 1591822, 3138547, 1223529, 2522757, -1089311, -1122597, 1282585, 501974, +-1490891, -2411087, -2338073, 4915590, 5369783, -173946, 5922223, 373125, -783832, 730681, +483721, -1093069, -71941, -4131222, -2378338, 3707094, 4329864, -5077188, -1235340, 2131915, +-3417183, -9722195, 2398202, 3623342, 4205310, -2214593, -2614025, -3448322, 5277441, 6084895, +999654, 2419677, -4799626, -3820374, 4454418, 1734093, -3616363, 6287832, -6324340, 1078037, +538482, 5900748, 2089502, -1259499, 885837, -1993402, 3140695, -7610145, -2350958, -10981158, +-4903242, 5619965, -566936, 8596377, -1277216, -7106561, 4402342, 1031866, -3055332, -305480, +197569, -2863133, 1730872, 5149666, 5585605, 175020, 2543695, -260382, 6318971, -3357054, +2544231, -653372, -477278, 140123, 1815161, -807991, 7597261, 569083, -234076, -1893007, +6259915, -7926899, -884226, -5293547, -5506148, 2305861, 1360968, 12144557, 867047, 4626754, +-9683541, -2127620, 2441152, -4910758, 3658775, 1244467, 1090385, 3152506, 3609383, 8056285, +3726421, -983548, 2721936, -3637837, 1386738, 3402688, 37044, 906775, 3715147, 4729296, +11052561, 2367064, -1352378, -7133941, -56908, 5866926, -8490613, 1224603, -386547, 3007014, +-4126927, -4909685, 9611063, -5718212, 2189897, -119185, -5595269, 13772350, 3752728, 7341710, +4083977, 8002598, -1155883, -2663954, 5210332, -4304094, 4070019, -3384434, 2342368, 5579700, +3229279, -2164664, -125091, 2948495, -4439923, -3294240, 566399, -376347, 8295193, -4243428, +-7177427, -1014149, 4476967, 6765111, -3811784, -7213398, -962610, -3491809, 3252901, -13280039, +7000260, 1808181, -3222299, 3584150, -10897406, -9177808, 824634, -4714264, 9691594, 8529805, +9138617, -6672769, 3366181, -227096, 9116605, 295816, 6359773, 2294050, -3115462, -8857296, +-7980586, 2072322, -10533407, -537945, -2704756, -5364951, -7123204, -4409858, -217433, 7848516, +-243203, 2816962, -11988864, -6944962, -1511292, -7749732, 249645, 6949794, -8213588, 2878702, +-352187, -3129958, -991064, -2117956, 7850664, 3932580, 3791919, -2360085, -2707440, 10734734, +-3611531, -3461744, -9431748, 6294275, -13288629, 1365800, -4526359, 1617055, 4404489, -3565897, +-7201587, -4728759, 237297, 9044127, -5001490, -1464047, -6399502, -5363341, 2782065, 2872260, +7151121, -9145059, -542777, 2067490, 1105417, -12633109, 2629594, 555125, 1404991, -17154636, +14218489, -228170, -965294, -814433, -6043556, 1236414, -471373, 4819490, -5328444, 5476620, +1015223, -4183298, -7094749, -8455717, 3300682, 266825, -1417876, 119722, -5353140, 4568235, +2968359, 8795019, 4697084, 3251827, 4290673, -1567126, -5874442, -4154844, -510564, -3007014, +3144990, -4804458, -7643968, -7745974, -432181, -10466298, 3764539, 5078799, -7001334, 5985037, +-8287677, 3490198, -11807402, 1283658, -2971581, 644782, -3888556, -280247, -11126113, -1772211, +-4534412, -6447820, -2808372, -5001490, 467615, -4456029, -3760244, -6361384, 1660542, -6008659, +-1699196, 10193031, -2980171, 667867, 1895154, -1695975, -11418707, -10777684, -3117073, -6785512, +792958, 4662724, 3144453, -10423886, -490700, 1737851, -9777493, -11007464, 5779416, -10791642, +1870995, 7102266, -5426691, -12360379, -5523328, 277562, 7878581, -3299609, 14078366, -968515, +-1421097, -8246337, -6192806, -923418, 2573759, 881005, -3306588, -2399813, -1034013, -2982855, +-6533182, 5190468, -5500243, -2978023, 4958540, 1759326, -9127342, -9050570, -8967892, 7551626, +-8398272, -8304320, 13400298, -8489003, 5594195, -944893, 3179350, -12260521, 5137855, 1048509, +-2685428, -261993, -3129958, 4446365, 2261300, 12255152, -3736622, -1791538, 4823249, 11934104, +2309082, 2845416, -6300180, -2988760, -10362682, -1359894, -1226750, 607738, 5790690, -1367410, +2556579, 12854300, -2986613, 556198, -2547453, 936303, -13152800, -12253005, 5003637, -957241, +5944235, -1023276, -2663417, -3799436, 5025649, 3067681, -2962991, 2232309, 5114233, -2835752, +-17869212, -7825431, -3595961, -2074469, 7819525, -14021994, -10334765, 8446590, 5184026, 21406118, +5943698, 4859756, 5791227, 2629594, -3978750, 333397, -4188667, 6754373, 173409, 6820408, +70330, -291521, -9584220, 4801774, -6555194, 4879620, -1142998, 5123896, 1898376, 6910603, +-11099806, 1191317, -7765838, 9029095, 356482, -9226663, 11872900, 8862128, 5510443, -5551782, +-18659486, 5234492, -2270964, -2343979, 8722005, -924492, 3845070, 8675297, -2294050, -11094437, +-506806, 4935455, 2753611, -2983929, -1780801, -8110509, 2363843, 1111323, 926639, -1219771, +159451, 6931004, -5650030, 2931852, -2962991, 4899484, -4757750, -19732154, 4403415, 5201206, +20626580, -3935801, -2960843, 9944460, 12927315, -20250234, -11442867, 11582990, -5546951, 717260, +4904853, -12768401, -28432684, -10930155, 16608639, 13330505, 11262478, -2983392, 6431714, -2995740, +5939403, -5625334, 2259153, -14127758, 3805878, -4747013, 7676717, 7591892, 492848, -6466610, +6994891, 4642323, 11899207, -825707, -7038915, -3221762, -18200460, -9014599, 4696547, -834297, +-12155294, 8768176, 11617887, -15842524, 15847356, -1086090, -1620813, 10304700, 2115272, 9773735, +-1177895, 3780645, -3542274, -1450625, 4700305, 19237696, -6874095, 12430709, -1153736, 1611150, +4264903, 10924786, -9967008, 1658931, 14762339, 5126044, -7706782, 4686346, 4960151, 2098092, +10259066, 9404368, -1133335, -13254806, -3548180, 13314399, 8334921, 10011032, -6844031, -3468723, +-1322850, -1548873, 14166413, 1755031, -15157476, -6721624, -4858145, 9452686, 1530619, 1986422, +7748121, 17678086, -26574036, 17346300, -3840238, -3118146, -7182796, 5171141, 4917738, 10231686, +1137093, 9770514, -1483374, -2544768, 2522220, -1553704, 4450123, 9047349, 508954, -556198, +11191611, -8611409, -2237678, 3040837, -1668595, 10571525, -12926778, 1341640, -11196980, 1962263, +-11868068, -1276142, -455803, 6426882, 14205067, -8404714, -5737003, -8676908, -1486596, -12822625, +-9666361, -8199630, 4814122, 11496017, -1032940, 22255446, -14916958, 20078436, -14931454, -2196876, +4464082, 5544803, 17482128, 12434467, -15990700, 9331353, -7671349, -17027934, -858457, -12211129, +-7330973, 1112397, 17885854, -1812476, 8666170, 16729971, -11635066, 6978248, -19419694, 13922673, +-11404212, -4855998, 21435108, 8199093, 23002234, -7887171, 1465658, -8436926, 7585986, 29198798, +8458401, 10822781, -12737799, -1292785, 2005213, 12114492, 10766409, 19222126, -13168370, -3600256, +-14446123, -11922292, 2302639, 2549600, 10640245, -7650411, 7843147, -19903952, 14724222, 11689827, +6143414, -2101850, -1224066, 2936147, 7673496, 3674882, 3101503, 1487132, 15858093, 14093935, +6696928, 2777770, -9707163, -9148280, 31334470, 2856153, 5053029, 18532248, 8709657, -2885681, +-2243047, 12571906, 22902914, -13662828, -5266704, -15549929, -15183246, 23389856, 10636487, 2620467, +-3084324, 9639517, 16954920, 13224741, 16982838, 8070781, -6343667, 568546, -905701, 6248104, +-14203994, -10743324, -4272419, -13335337, 14527190, -1979443, -3864934, -12754979, -2164127, -11920682, +-28686086, 4579509, -3572339, -9438728, 6445672, -15608448, -916976, -8748312, -22907208, -5732708, +-9893457, -11366094, 18417894, -5428839, -6504728, -3879429, -279710, -5220533, -6302865, -1632088, +5040681, 14897631, 11927661, -1085553, -634045, -26702886, 1894081, 2860985, 11011759, -6733435, +-5035849, 38748660, -6374805, -20092394, -18313740, 15569793, -10482405, 3882114, -21708912, 4650913, +-5668283, -12822625, -9675488, -26263188, 4719096, 6243809, 18685256, 4212289, -9004399, 13021267, +2449742, 12087649, 15622407, 41336376, 12266963, 1431835, -15810848, -20386600, -4283693, -182536, +-1865090, -19729470, 7500624, 15076409, 3588445, -5522791, -17055852, -7242389, -2492155, 5554467, +-6139119, 10507101, -5172751, -6795175, 20061256, 10640781, 22782654, 590558, -6460705, -8621073, +24125906, -20290500, -7597797, 28384366, -16821240, 5980205, 5914707, 7670275, 1718524, 16170015, +-4851166, 14616847, -5323075, 3565897, 3433826, -6800544, 10568304, -15440944, -11079405, -9811853, +-4737349, -13611825, -26125212, -4158065, -7817914, 4792647, -6731825, -34068756, 9657771, 22527104, +-1262184, -3896609, 34147676, -41518376, -9162239, 24437828, -5790690, 19205484, -13458280, -7399692, +6354941, -39362840, 13066901, -12659416, 20205136, 16014322, -21444234, 43655120, 6294275, 3649649, +-2108292, 18251464, -30564062, 14300094, -1298154, -2857227, 8438537, -17430588, 28413894, 28423556, +-46390480, 9864466, 9279814, 2321430, 26962194, -10606422, -32422708, -32560148, 3700651, 5167383, +-13709536, 9764071, -17616882, 6995428, -7398081, 18271328, 23206246, 1721745, 22498650, 20475182, +-9721658, 726923, -12730820, -2473364, -2119030, 8525510, -210990, -1127966, -1155883, -21415244, +-32732482, -12618077, 18905910, 14709726, -13326747, -15711527, 11026792, 10945187, -20783884, 12177843, +-13373991, -1673964, 18401788, 24773372, 1535451, -12956843, 10476499, 2915209, 16213502, 3688303, +13811004, 13874355, -2058363, -47423420, 7094749, 2484639, 21312164, -5914707, 21767432, 21166672, +-11512660, -64521148, -6963216, 4097399, -5948530, 41086196, 43632036, 30560840, 43493524, -8990977, +21760988, -14436459, 30107184, 21431886, -29839286, 43540232, -39639864, -33030446, -30161408, -24848534, +-48029544, 11589432, 19429896, -1436130, 26249766, 10771241, -29796336, -6645925, 7914551, 8838506, +9878962, -5100811, 15747498, 2403034, -7917236, -3083250, 6509023, 21664888, 28147068, 21378736, +33499134, -29685204, -7118909, -6845641, -30084636, -6407555, 6924024, 2767570, 5034239, -11412265, +-12676596, 17209934, 37633576, -15890842, 20225000, -10997801, 6490233, -10040560, -238371, -26898306, +-8508867, -386547, -37164352, -21525840, -36290328, -30906048, 23177254, 51532092, 41997800, 2501819, +-562641, 1502165, -7019587, -15858630, -58846956, -18882824, -6601902, 6529961, 4811974, -19843286, +-12750147, 9674414, 29155848, 17920214, 11057930, 19659676, 32549410, 14172318, -27572616, 25807384, +-15298674, -6001680, 20260972, 44328356, 10619844, 55238648, -21123186, -34502548, 21144660, -3439732, +-20921860, 9935870, 22405234, 19468550, -40354976, -34770980, 8471286, -16176457, 3903589, 19607062, +-10905996, -7903277, 32240708, 8803609, -4775467, -10327249, -9483825, 12209518, -7586523, -1397475, +-1250909, -13168370, -5419175, -21930104, -29613800, 10547366, 15649787, -18391050, 13165685, 9375914, +-6763500, -12684649, 1585917, 23323820, 12922483, 4366908, -23596550, -25692494, -13076565, 7253663, +28543278, -21463562, -12008729, -9572408, 16804596, 47095928, 11820287, -45329620, -10746545, -4948876, +22852448, 1007170, 11489038, -5441724, -11571179, -9541270, -26680874, 24782498, 24689620, 11032160, +26050050, -7640747, 16367583, -7167227, -20804284, -20520816, -24646670, 5339718, -45193256, 46868832, +-4808753, -15064598, -28314572, 31556198, 22803056, 6562710, 1676111, 13005698, 11414949, -27292906, +-37852620, 8179229, 23229330, 34841312, -3370476, -12080132, -27548458, -17577690, 12481175, -3975529, +-24088860, -44742820, -44883480, 5150203, -16091632, 19566798, -51208360, -19248432, 5471252, 3251827, +5242008, -18631032, 3064459, -4904853, -12788802, -5426691, -26192858, 16867948, 21402358, 15123117, +-34004868, -19801410, -4774930, 6363531, 10974715, 12290586, 8779450, -7314330, -6377490, -8053064, +17150878, 55479704, 33216204, -35156992, -34973380, -23642184, -43859668, 41914584, 20009178, -18845242, +-45552424, -43709884, 39484708, 22473416, 880468, 29104310, -40723808, -9264244, -3195456, -14816027, +-2110977, -19317690, -41648836, 2286533, -33273648, 29356102, 29090888, -21547850, -10274636, -9168145, +-12032351, 23686744, -37677064, 33557116, 49495740, 53464288, -59426780, 11253888, -1311039, -4955856, +25993678, -10678362, -17164836, 17680232, 9638443, 36510444, -3000035, -28846610, 1628330, -13200582, +22333830, -33237142, -10906533, -15705622, -21218212, 30109868, -21226266, -3359738, 21809844, 11847667, +-6352794, -11887396, -29994978, 3661997, 41959148, 24502788, -640487, 11717208, -8065949, 32905892, +-21313776, 14893873, -11192685, 20167556, 35737348, -8277476, -21092048, 10394895, -29205240, 49876920, +7289633, -27576374, -7808251, -42644192, 6740951, 59192164, -9512279, -36099736, -23240604, 35964984, +12380780, -20103668, 382252, 8724152, 21936008, 49866180, -40036076, 17827872, 42462196, -6597070, +-48194364, -47374564, -27380416, 83682608, -60834992, 22150756, -60921964, -22340272, 21578452, -56521232, +9662603, -50788524, 22124450, 23774254, 47029892, 20772610, 10588168, 12231530, -14998026, -36259724, +-25417080, -23840290, 9842454, 5792837, -6464463, 21528524, 33017562, -14986215, -21275658, 23097798, +3768297, -30881888, -7457137, 13941464, -25820270, -4507568, 5229660, 12956306, 6498286, 18338436, +30985504, 5581310, -20462298, -2262374, 5600638, -15838766, -7575786, 14770393, -11634530, -20034948, +27519466, -6633040, -7449621, -11001022, -11536819, 18329846, 4086125, 4344360, 23621784, -11337103, +-19249506, -838056, 1213865, -7646653, 5583995, -1008244, -7262790, -861141, -24174224, 5633387, +3989488, -3585224, 12073153, 9039296, 3835406, 6193880, -24883966, 29377040, -11242614, -9805410, +8602819, -25726854, 8969502, -19304804, 4638565, -25692494, 42807404, -1687385, 24432458, -21230024, +3155727, -3414499, 8020315, 7373385, 13283260, -6015102, 9880572, -5323612, 5626407, -382252, +4527433, 10780905, -869194, 16415365, -5978595, 12556337, 999117, 98247, -4118874, 8276939, +-5755256, 7548942, -3743064, 1126355, -3062849, 4444755, -2457258, 9674414, -2523293, -5624260, +14704357, -9282498, 7800198, 6793028, 2455111, 7732015, -8633421, -5388037, 6818261, 6972880, +-3723737, -31139, 7208566, 191663, -9731322, 5185636, -4920422, 5949067, 6908455, 4150549, +2357400, 3178276, -10636487, 6181532, 2896419, -2149631, 3726421, -3879966, 2192581, -1301375, +-799938, -67646, 3269007, 8511551, -10464688, 10337986, -2522757, -1793686, 4008278, -4977867, +1751810, 6673843, -1817308, 10722923, -35477504, -111029200, -16143171, 54188528, 28155658, 131448008, +24639154, 28388124, 17997524, -35213364, -49570364, -35344360, -63605244, -54742580, -30872762, -12642236, +36810556, 99817728, 79352208, 68219648, 38998840, -30584462, -49636400, -36647884, -68507416, -65093452, +-19681150, -9077413, -14899242, 25327960, 39834212, 26189100, 48518100, 37283000, 11733851, 34287796, +7329899, -5072893, 3514357, -20641612, -53967876, -46189152, -38873212, -55089400, -22679574, 16072304, +11462731, 35243964, 40349608, 34869764, 36253284, 36542656, 23630910, 22622130, 2943663, -20382304, +-37493452, -25983478, -35247184, -47312284, -22750442, -21736830, -17103634, 6636262, 18506478, 17113834, +34025268, 41733660, 20869782, 29452738, 25858388, -6898255, 3727495, 11418707, -13035226, -13003013, +-19846508, -18107046, -9757629, }, }, { { 1566589, -2699924, 383326, 1531693, 3398393, -1061931, 3617436, 936840, 667331, -4192425, -1037235, --4155381, -501437, 4171487, 3026878, -299037, 1903207, -598074, 1583232, -520765, 1980517, -1675574, 2143189, 5126581, 2151779, -3779571, -343061, -4280472, 2205466, 1586990, -646929, -434329, 476205, -927713, -1342177, 2562485, -1171452, 828392, 2291365, -2279554, 3849901, --901943, -1611, 1830730, -824634, 601832, 433792, 1934883, 3019899, 59056, 462246, --1103807, -146029, 181999, -1702418, -1613297, 1910724, 5183489, -474594, -2897492, -2598992, -1632088, 2559801, 2950643, 1667521, 4212289, 246424, 3053722, -2422362, -1606855, 1927367, --621160, 2571612, -158377, -846109, 1377074, -3542811, 2703145, 1701881, -3491272, -608812, -4500052, 1336809, 1127966, 2476049, -561030, 679142, -1139777, -4684199, -1814087, -233539, --1003949, 1343788, -1418413, -459562, -3935264, -12348, 719944, -2812130, -572304, -3549791, --1218697, -1141924, -4240207, -1983738, 1407676, 1846299, 4845797, 2818572, 6179921, -691490, --949725, 869194, -2063195, 5299453, 368293, 2483565, 4283156, 703838, -1653562, 1688996, --2198487, -3047816, -693100, -1345935, -1599875, -5597953, -1730335, -27380, 932545, 1598802, -530965, 2761127, -3078418, 2426657, 49929, 554588, 1831804, -2256469, -4832375, -2180770, -2160369, 2998961, 2395518, 133681, 2436857, 1744831, 3281355, 1589675, 1429687, -2101850, -146029, -129386, -2658048, 2359548, -4042638, -2514703, 6279779, -1114544, 5540508, -2961380, -456340, 2704756, 1147293, 107911, -3872987, -5438503, -5687611, 527207, 48855, -1657321, -663036, -5023501, 9764608, 1044751, -5583995, 1391033, -2973728, -3195993, 2840584, 4116726, --165356, 878321, 1892470, -362925, -84826, 3225521, -1908039, -857383, 86436, 5926518, --230854, -748398, -2374580, -3578245, 1724429, -913754, -3746822, -1676648, -4489852, 551366, --4088272, 60130, -3131568, -1014686, -2775623, -5506685, -2394981, -357019, 5028870, 758062, --1660542, 2829310, 4572530, 730681, -6646462, 3002182, -219043, 1248762, 1899986, -1443646, -3844533, -1961190, -3946538, -3699041, -7096897, 789200, -2737505, -2171106, -3601330, -5191005, -8047158, -2310693, -7765301, 352187, 2326262, 19327, 2120640, 1718524, -6211060, 1918777, --1643899, -446677, -17717, -1290638, 4284767, -1603097, -3226057, -452582, 3359738, 2099165, -1067836, 1951526, 8526047, 2143189, -3321084, 3801583, -3995930, 1045825, -3291019, 8113730, -971736, -2869575, -1954210, -2873333, -1277216, 5332739, -4739497, -3863860, -1488743, 4393752, -2237678, -4370666, 804233, 794569, -2866891, -31139, -9443022, 2853469, -2512556, -1872069, --6174553, 8530879, 12885, -4667019, -4051765, -4579509, -180926, -1095754, -66035, -161061, --5788006, 6739341, -4501663, -3687766, 2056753, 609349, 1986959, -2053531, -1182727, -4357781, --474057, 778463, -6339372, -4210679, -739271, 7188165, 214212, 1552631, -5963025, 1829119, -3404835, 2496987, -266825, -2980707, 7716446, 1350767, -1564979, 3719442, 3005403, -3606162, -4711043, -3174518, 7784628, 1123671, 6941204, -744103, 1190243, -2717104, -7945153, 876173, -113280, 294205, -1418413, 1650878, 4114042, -1020592, -4119948, -2658048, -5839008, -1566053, --2914672, -3021510, 453119, 2021319, 3049964, -3677029, 2498597, -2448668, -3184182, -381178, -2544231, 533113, 544387, -5733782, -5689221, -1018444, -1782411, -4182761, 9053791, 4304094, --735513, 1807644, 3528316, -9244380, -4875862, 6251862, -3668976, 5861020, 1103270, -1197759, --6471979, -4587025, 7125351, 3915937, 6681896, -7381438, -883153, -5166309, -858993, 1668595, --3288871, 437550, 714575, -12092480, 667867, -1532767, 3302830, -7307350, 2366527, -2448131, -12268574, -3223910, -6325950, -2297808, -5303748, 1685775, 4566624, -1423782, 8580271, 904091, --2507187, 2091649, 1062468, 2259153, -3014530, -504659, 3205656, 5056250, 2008434, -971200, -2431488, -4454418, -1380295, 6354404, 4538707, 7457137, 5287105, -86973, -3754875, -7875897, -5485210, -824097, -5749888, 3040837, -1501628, -8819178, 256624, -7341710, -560493, 6735046, --1107028, -4913980, -2259690, 6442988, -5499706, -8986682, 9223979, -1659468, -2195802, 2233383, -1208496, 1176284, 2257005, 2312840, 1276679, -6560026, -2473364, 5282810, -624918, -1828046, -1644436, 9030706, -4383014, -4681515, -2110440, 3936875, 2016487, -7468412, -3278671, -10549513, --150324, 2915209, 10304700, 10642929, -3329674, 5335423, -6722161, 2307471, 4573604, 6859063, --1901060, 10252087, -1837172, 8704825, -4642860, 7302518, -3559454, -11974369, -2654827, 3068217, --4075924, 4707821, -2527588, -2833605, 1381906, -13138842, -4187056, -218506, -2215130, -741956, --6299107, -2153926, -2197413, 2144799, 13529684, 7796977, -7744900, 4318053, 10835129, 2705293, --3696356, 2715493, -2762201, -3172907, 7820599, 5415417, -5309117, -701153, 5597416, 11557757, --3638374, 6290517, 17206712, 7379291, -7820599, 3191698, 2064806, -9551470, 1501628, -7903277, -3594351, -8621610, -1957968, 317291, 4129074, -5665599, -1493038, -2858838, -5047124, 6482717, -5704254, -467078, -3714073, 770410, 4417911, -2561948, -11000485, 2237141, -8887898, 1153736, --3114388, 10929618, -5923834, 1340567, 2682744, 875636, 3797825, -1870458, 11966853, 732829, --8184597, -1697049, -6103149, -1154809, -2159832, -5686537, -7128572, -1973538, -4682051, -2296197, -7565585, 2707977, -6866042, 2385318, -8148627, -1686312, 5495411, -10961293, -9761387, 5236639, -4842576, 2464774, -564788, -6711424, 2356863, -3387119, -6413460, -3009698, 109522, 1811939, -10017474, -4172561, -1366873, 413391, 4574677, 2393908, -3731253, -4686883, -8376797, -2605435, --1970853, -4605816, -5393942, 3273302, 6736656, -104690, -4440460, 7510824, 1429150, -3791919, -957778, -1158031, -884763, -2662343, -1278290, 4840965, -3563212, -6005438, -2776696, 2692945, --3177202, 5653788, 10692321, -7812546, -208843, 7341710, -3402151, -5061082, 6690486, -10347650, --608275, 2088965, -1343251, -3749507, -4606890, -2045478, 1811939, -376347, 5005248, 2728915, --1706713, -3782793, -2957085, 8488466, 269509, -9862319, 4643397, -6136972, -6344204, 4106526, -7181722, 7699803, 5521181, 118648, 3681324, 2902324, 3453154, -2981244, -322659, -2638184, --7445326, 3424163, -2066953, -12885, -1811403, 1114007, -1428614, 8462696, 14701136, 2914135, --2859911, 433792, -10967736, 10867341, -7595113, -4188130, -7346542, -8013872, 14162118, 1403381, --8473970, -2273112, 9596031, 5872294, -8064875, -4916664, 10988674, 1765232, 642098, 15789910, --7686918, 5138392, -5966247, -13506598, 6250251, 8656507, 469225, -6111202, 4640712, 6040872, -11522860, 10525891, -827318, 8920110, 3786014, 9105331, 8768176, -15612206, 5120138, -5304285, --6991670, -5181341, -1843615, -10087268, -2442763, 2006287, -8716636, -17419314, 3486440, -1566053, --15777562, -11639898, -10482405, -5986111, 125091, -3248069, 3222836, -2389613, 5677947, 11551851, --7253663, 3692061, -3118683, -5817533, -4413616, 367220, -1614908, -853088, 8423505, -727460, -8489540, 11231339, 3001109, 4628901, 7205882, -1369558, 1078574, -11813308, 10218801, -9705015, --3776350, -3347390, 448824, -2957622, -9417790, -8232379, -17731772, 15205795, -18115636, -17439178, -2332704, 15947214, 5236102, -2533494, -4700305, 7084549, -8864276, 8947491, -3386045, 704375, -297963, -6784975, 5846524, -8007430, -6767258, 1772748, 7544110, 9722195, 9692667, 10550050, -24237574, 11155641, 14012868, -6280853, 22447646, -12139188, 974421, 5339718, 259309, -7818988, -3107409, -1801739, -18473728, 7633768, -4406100, 2534031, -1438277, -5711233, 327491, 6129992, --7291781, -3400540, -887448, 4980015, -11190537, 7838852, 3023120, -9943923, -555125, 4879083, --9276592, 4172561, -11187853, 5890011, -747324, -3073586, -223875, -6830609, 9812390, 12002286, --10628970, -5519570, 5086315, -3175592, 3180960, 3431679, 869194, 1071594, 13218299, -2581812, --8658117, 8846559, -263604, -6142877, -5750425, -10121090, 2098629, 3739843, 5394479, 6002217, --5136244, -7680476, 4545686, 3125126, 16073915, 2444910, -2496987, 1039919, 338229, -4416837, --3503083, -12709882, -14299020, 24309514, 17018272, 21742736, 1562831, -13707388, 5071820, 11407970, -8216273, -3401614, -8566849, -2453500, -3018288, -4135517, -7338489, -2917357, -6126234, 16201690, -2790118, 2752537, 342524, 1023813, 1933809, -5875516, 10882910, 6083821, -405874, 3932043, --1285806, 11014981, 2255932, -935229, -17708688, -1302986, 1364726, 1722819, -3122978, 2245194, --8262980, 14553497, 12036109, 11361262, 10175314, -7857643, -10588705, 8245801, 2788508, 3984656, --488016, -12693239, -8895414, 611496, -6896107, -56371, -5769752, -2763275, 7740068, 2206003, --5231807, 1695438, -13788993, 145492, -23505820, -12337830, -22243636, 18852222, 17373142, 18019536, -22393422, 10214506, -3894999, -10871099, -3373160, -1940252, 2604898, 14784351, -8440148, -11391327, -10280541, 13333189, -6369437, 12400107, 1826972, -5033702, 5015985, -17570712, -5423470, 5194763, --5579163, -10683194, -20445118, 10292352, -8753143, 2600066, 13343390, 3430605, 15542950, 12109660, -6780680, 2815888, -9114457, -2396592, -4759898, 1145146, 8654359, 4823785, 1801202, 7712688, -21081310, -732829, -17906792, -7477538, 2901251, 4716948, -1023813, 886911, 1695438, -7170985, -467615, -16360067, 3787624, -17102560, -6440304, -13082470, 6717866, -6192806, -11217918, 17776332, -4789963, 2120640, -7704098, -9472550, 2560338, 4929012, 1510218, 6520297, -8736500, 20277614, --23330262, 7242926, -9700721, -12854300, -7893076, 13749801, 3754875, -11519639, 9472014, -8447127, -26030186, 308164, -2809982, -8651138, 1082332, 24345486, 25051470, 23629836, 4998268, -6396280, --4016868, -15299747, 12328704, 321586, 7208029, -4605816, 2273648, -5617281, -4356708, -8858370, -4698694, -9220758, 15013595, -39399884, -11533598, 250182, -11985643, 8430484, -12320651, 2489471, --4810900, 12353400, 2120640, 11892228, 778463, -2837363, -279710, 4339528, -13882945, -9929964, --10823318, -1539209, 13324062, -26497264, 9084393, 23008676, 2723009, -16959216, -780610, -14286135, --13798119, 9455371, -1917703, -11673721, 6347425, 951872, -4487167, -6605123, 3617973, 9552007, -5652714, -13564044, -10062035, 7715372, 11479911, -9570261, -12812424, 6159520, 12836584, -15974057, --829466, -14297409, -19819126, 23038742, -4260071, 3350075, -4858682, 13969381, -4068945, 2717641, --8647380, 10086731, -6092948, -1946157, -20402706, -10338523, -5896453, -17535814, -24515136, -5845988, --9239548, 20058572, 4919348, 30583388, 4226785, -10800232, 2659659, 4530117, -27868970, -69256, -21466246, 13073880, -16918414, 514859, 9911711, -22696754, -5013838, -12164421, 7329899, -9876277, -4260608, -185220, -5833640, -483721, -1730872, -8429410, 5498095, -15997143, -7315940, -7831873, --19741280, -5473936, -4134443, -1427540, -494458, -6645925, -7491497, 31074088, 8023536, -14545444, --25136832, -10252087, 419833, 21874806, -7742753, -4991289, -15314780, -5486821, -11449309, 17460652, --18014166, 15299747, 19732690, -24381992, 12308839, 3325915, -11944304, -10736881, 2738579, 7837242, --51364052, -9071508, -3122441, -9548786, 9506373, -9813463, -39820252, -18052284, -13959717, -6905234, -5454609, 32274532, -1041530, -37574520, -21149492, -23206246, -4493073, -12771622, -700617, -18963892, -31144956, 18799072, -3567507, 24851754, 488553, 26814554, 6107444, -15052787, -21199958, -12858595, --17187922, -7177964, 3776887, 11861626, -4111358, 4195646, -14337675, 2871186, -20533702, -1284732, --1611150, 7487202, -8039642, 32840394, 3641596, -154082, 20826296, -7558606, -15732465, -8091719, -12496744, -136365, -9239548, 4523138, -781147, 28410134, 6072547, 1172526, -11354820, -15362561, --42533060, 3980898, -33973728, 18198314, 56129852, -39190504, -9543417, 10858214, -7877507, -5381057, --12293807, 11482595, -12616466, -37208376, -11388643, -36865316, -9140227, 1505386, -25518548, -510027, --36265092, 18716930, -4244502, -18692234, 55031416, 8337606, 23633058, -12176232, -66677756, -7355132, --17381196, -18975702, 23667418, 18690624, -23667418, -18788872, 45025752, -5593658, 14296872, 1909113, --2838974, -5680631, -5408438, -15204721, -628676, 4821638, 7679402, 5071283, 15793132, -13201119, --779000, -12874701, -7887171, 4617627, 22601192, 14409615, 19902342, 17855790, -4572530, 6195491, -10493142, -389231, -19170050, -3820374, 25439092, -5050882, -37471980, -16719771, 3593814, -31774168, --14024679, -32552094, -22541062, -20500416, 29245506, 19893752, -6897181, 19910394, 7385197, 28256052, -18848464, 8798241, -50861540, -11695196, 1889786, -44781476, -32789390, -12898861, -8937290, -52386788, -10935524, 28271086, 38316476, 45683956, -15627775, -30528090, -323733, -30780420, -22414360, -42522324, --46538120, -33319820, -27537720, 31556736, -18921478, -48002164, 20943872, 3990025, -32111860, 33107218, -17287244, 11308112, -5706938, -28562070, -5909875, 2501819, 31078384, 40662068, 4010426, 12170327, -4270271, 2833605, -81068, 6894497, -14566918, 56599080, 14999636, -16336445, -16150688, -6376416, -4253092, 28493886, -11164231, -2457795, 1869921, 15226196, -11175505, 8795019, 2821794, -1400696, --43484932, -12588012, 16510928, 25184078, 10330470, -3407520, -11106249, -28308666, -1259499, 6586333, --5089000, 2224256, -5764920, -17605608, 21547850, -2749853, 9064528, -18897320, -2212445, 54663124, -6111202, -4033511, 8326331, 8769786, 7143068, 28537910, -7602092, -10069551, 21998286, -211527, -13882945, 9473087, 19342922, -4454418, -17739826, 12330851, -7396471, 4205310, 75893144, 75022344, -31416612, 16039555, 32433446, 664109, -42848204, -14467597, 4421132, 1435056, -13404056, 24828132, -10405632, 6952479, -13747117, 29712046, -6120329, -3641596, -13232794, 13683229, 8043937, -30734786, --42200740, -15311022, 2415919, -2468533, -11276974, -39831528, -7464653, 7742753, -1097901, -16670379, --8777839, -15480673, -17394080, 3251827, 6114960, -27592480, -29084444, -13935021, -35133368, 3239479, -23622320, -29433410, 22578644, -17875118, -18343268, -32603096, -41390064, -48071960, -43801688, -26484916, --3744138, 9188009, 3312494, 8964670, -24814174, -53564148, -22272090, -51920248, -83198888, -37067180, -60530048, 102837624, 60830696, -34172372, -25126096, -105145096, -91063504, 53070228, 7310571, 71790376, -79722112, 77495168, 25962004, -43654584, -45555644, -57359288, -56828860, -15223512, -4490389, 6665789, --25883084, 33961380, 15939161, 30010010, -69111928, 14395120, 8439074, -22118008, 14555107, -16860430, --8465917, -5871221, -10433549, 28195386, 53560928, -16985522, 10306311, -8820252, 12444131, 26257282, --8923868, -6354404, -15450071, 6567542, -9917079, -31268436, 21479132, 35456564, -5143760, -20721606, --17918604, -40269076, -10864657, 27972048, 19883014, 8777839, -42803108, -26308286, -18621368, 36333276, -32935420, 27289686, -83308408, -57068304, -6505802, 39777840, 88476864, -1127429, -105567072, -40386652, -4064650, 34331284, -2292976, 18259516, 15571404, -47584480, -19414326, -13998909, -26765162, 858457, --50975356, 7262253, 21984864, -63672892, -38771744, -19998978, -6215355, 69831336, 1835025, -106290240, -13180181, 16836272, 20555176, 45490148, 27966142, 23477902, -56667260, 7907035, -41712724, 7496866, -34891240, 31112206, 9835475, -20131048, 3633542, -11893301, -3424700, -14729053, -11502459, 7841537, -1495186, -21401822, -3110630, 11574937, -3077881, 1636383, 3352222, -13390634, -14468671, 124017, -8207146, 1746441, -22928146, 2444910, 10321343, 4221416, 1586454, 23780160, -3647501, -5325760, -7076496, 9713069, -16840030, -16304770, 11471321, 3536906, -14694157, 10056666, 2339147, 5560909, --10899553, 5087389, 8717173, 2719788, -14901926, 19301046, -4119411, -18150532, -1507534, 17404818, -2584497, -10976863, 9392020, 6125697, -20759188, 9865540, -1931662, 21157008, -19905026, 4441533, -9294846, -26103200, -2913062, 16355235, -4844723, 12985297, -9917616, -13906030, -3516505, -14002130, -11109470, -27322972, 46426448, 7099581, 21332028, -17185238, 8528731, -3211562, 6148246, 5667210, --7037841, 3746822, 9000641, -4151623, 18869402, 1512365, 1202591, 6910066, 6576132, 28454, --4052302, 8513699, -611496, -4658429, -511638, 8568460, -7864622, 2555506, 4413079, -10001368, -14027900, -1905355, -5897527, 21422224, -7922604, -11361799, 10052908, 6050535, -5134634, 9772661, -7723962, -1654636, -2352032, -758062, 3237332, 6011344, 3554086, 843961, -3032247, 11523397, --10798622, 11099806, 2108829, -318901, 3350611, 4169876, 3803194, 1418413, -9593883, 3803194, -9160628, -5193153, 430570, 1014149, 7062537, 355409, -2142115, 11029476, -4668630, 6404870, --9966472, -2809982, 10405095, -8578660, 10001368, -1716376, 6728067, 10613938, -37866580, -120941984, --6208912, 65025268, 29184840, 138629200, 11800960, 29175712, 1199907, -40593348, -50971600, -34666292, --62102004, -43610560, -27310086, 820339, 47453484, 93237832, 68794104, 59644748, 19547470, -32721208, --47693464, -43154756, -50528144, -56356412, -22650584, -10997264, -4786741, 27149026, 36492188, 27165132, -50979652, 32555316, 12344273, 33831456, 984084, -15103252, -9592273, -30913564, -62561568, -38471096, --36509908, -37791416, 2233383, 17144436, 12367358, 45823008, 38167228, 25755308, 37575596, 39251708, -11606075, 11541114, -3787088, -34405908, -46904264, -36512052, -46960636, -34056408, -11204496, -8611946, -3595425, 25649544, 21011516, 18137646, 37420440, 30168388, 23301272, 37890740, 11773042, -7218230, -449361, -14010720, -29520384, -16951700, -28831042, -18379238, -7886634, 0, 0, 0, -0, 0, 0, }, +2699924, 383326, 1531693, 3398393, -1061931, 3617436, 936840, 667331, -4192425, -1037235, +-4155381, -501437, 4171487, 3026878, -299037, 1903207, -598074, 1583232, -520765, 1980517, +1675574, 2143189, 5126581, 2151779, -3779571, -343061, -4280472, 2205466, 1586990, -646929, +434329, 476205, -927713, -1342177, 2562485, -1171452, 828392, 2291365, -2279554, 3849901, +-901943, -1611, 1830730, -824634, 601832, 433792, 1934883, 3019899, 59056, 462246, +-1103807, -146029, 181999, -1702418, -1613297, 1910724, 5183489, -474594, -2897492, -2598992, +1632088, 2559801, 2950643, 1667521, 4212289, 246424, 3053722, -2422362, -1606855, 1927367, +-621160, 2571612, -158377, -846109, 1377074, -3542811, 2703145, 1701881, -3491272, -608812, +4500052, 1336809, 1127966, 2476049, -561030, 679142, -1139777, -4684199, -1814087, -233539, +-1003949, 1343788, -1418413, -459562, -3935264, -12348, 719944, -2812130, -572304, -3549791, +-1218697, -1141924, -4240207, -1983738, 1407676, 1846299, 4845797, 2818572, 6179921, -691490, +-949725, 869194, -2063195, 5299453, 368293, 2483565, 4283156, 703838, -1653562, 1688996, +-2198487, -3047816, -693100, -1345935, -1599875, -5597953, -1730335, -27380, 932545, 1598802, +530965, 2761127, -3078418, 2426657, 49929, 554588, 1831804, -2256469, -4832375, -2180770, +2160369, 2998961, 2395518, 133681, 2436857, 1744831, 3281355, 1589675, 1429687, -2101850, +146029, -129386, -2658048, 2359548, -4042638, -2514703, 6279779, -1114544, 5540508, -2961380, +456340, 2704756, 1147293, 107911, -3872987, -5438503, -5687611, 527207, 48855, -1657321, +663036, -5023501, 9764608, 1044751, -5583995, 1391033, -2973728, -3195993, 2840584, 4116726, +-165356, 878321, 1892470, -362925, -84826, 3225521, -1908039, -857383, 86436, 5926518, +-230854, -748398, -2374580, -3578245, 1724429, -913754, -3746822, -1676648, -4489852, 551366, +-4088272, 60130, -3131568, -1014686, -2775623, -5506685, -2394981, -357019, 5028870, 758062, +-1660542, 2829310, 4572530, 730681, -6646462, 3002182, -219043, 1248762, 1899986, -1443646, +3844533, -1961190, -3946538, -3699041, -7096897, 789200, -2737505, -2171106, -3601330, -5191005, +8047158, -2310693, -7765301, 352187, 2326262, 19327, 2120640, 1718524, -6211060, 1918777, +-1643899, -446677, -17717, -1290638, 4284767, -1603097, -3226057, -452582, 3359738, 2099165, +1067836, 1951526, 8526047, 2143189, -3321084, 3801583, -3995930, 1045825, -3291019, 8113730, +971736, -2869575, -1954210, -2873333, -1277216, 5332739, -4739497, -3863860, -1488743, 4393752, +2237678, -4370666, 804233, 794569, -2866891, -31139, -9443022, 2853469, -2512556, -1872069, +-6174553, 8530879, 12885, -4667019, -4051765, -4579509, -180926, -1095754, -66035, -161061, +-5788006, 6739341, -4501663, -3687766, 2056753, 609349, 1986959, -2053531, -1182727, -4357781, +-474057, 778463, -6339372, -4210679, -739271, 7188165, 214212, 1552631, -5963025, 1829119, +3404835, 2496987, -266825, -2980707, 7716446, 1350767, -1564979, 3719442, 3005403, -3606162, +4711043, -3174518, 7784628, 1123671, 6941204, -744103, 1190243, -2717104, -7945153, 876173, +113280, 294205, -1418413, 1650878, 4114042, -1020592, -4119948, -2658048, -5839008, -1566053, +-2914672, -3021510, 453119, 2021319, 3049964, -3677029, 2498597, -2448668, -3184182, -381178, +2544231, 533113, 544387, -5733782, -5689221, -1018444, -1782411, -4182761, 9053791, 4304094, +-735513, 1807644, 3528316, -9244380, -4875862, 6251862, -3668976, 5861020, 1103270, -1197759, +-6471979, -4587025, 7125351, 3915937, 6681896, -7381438, -883153, -5166309, -858993, 1668595, +-3288871, 437550, 714575, -12092480, 667867, -1532767, 3302830, -7307350, 2366527, -2448131, +12268574, -3223910, -6325950, -2297808, -5303748, 1685775, 4566624, -1423782, 8580271, 904091, +-2507187, 2091649, 1062468, 2259153, -3014530, -504659, 3205656, 5056250, 2008434, -971200, +2431488, -4454418, -1380295, 6354404, 4538707, 7457137, 5287105, -86973, -3754875, -7875897, +5485210, -824097, -5749888, 3040837, -1501628, -8819178, 256624, -7341710, -560493, 6735046, +-1107028, -4913980, -2259690, 6442988, -5499706, -8986682, 9223979, -1659468, -2195802, 2233383, +1208496, 1176284, 2257005, 2312840, 1276679, -6560026, -2473364, 5282810, -624918, -1828046, +1644436, 9030706, -4383014, -4681515, -2110440, 3936875, 2016487, -7468412, -3278671, -10549513, +-150324, 2915209, 10304700, 10642929, -3329674, 5335423, -6722161, 2307471, 4573604, 6859063, +-1901060, 10252087, -1837172, 8704825, -4642860, 7302518, -3559454, -11974369, -2654827, 3068217, +-4075924, 4707821, -2527588, -2833605, 1381906, -13138842, -4187056, -218506, -2215130, -741956, +-6299107, -2153926, -2197413, 2144799, 13529684, 7796977, -7744900, 4318053, 10835129, 2705293, +-3696356, 2715493, -2762201, -3172907, 7820599, 5415417, -5309117, -701153, 5597416, 11557757, +-3638374, 6290517, 17206712, 7379291, -7820599, 3191698, 2064806, -9551470, 1501628, -7903277, +3594351, -8621610, -1957968, 317291, 4129074, -5665599, -1493038, -2858838, -5047124, 6482717, +5704254, -467078, -3714073, 770410, 4417911, -2561948, -11000485, 2237141, -8887898, 1153736, +-3114388, 10929618, -5923834, 1340567, 2682744, 875636, 3797825, -1870458, 11966853, 732829, +-8184597, -1697049, -6103149, -1154809, -2159832, -5686537, -7128572, -1973538, -4682051, -2296197, +7565585, 2707977, -6866042, 2385318, -8148627, -1686312, 5495411, -10961293, -9761387, 5236639, +4842576, 2464774, -564788, -6711424, 2356863, -3387119, -6413460, -3009698, 109522, 1811939, +10017474, -4172561, -1366873, 413391, 4574677, 2393908, -3731253, -4686883, -8376797, -2605435, +-1970853, -4605816, -5393942, 3273302, 6736656, -104690, -4440460, 7510824, 1429150, -3791919, +957778, -1158031, -884763, -2662343, -1278290, 4840965, -3563212, -6005438, -2776696, 2692945, +-3177202, 5653788, 10692321, -7812546, -208843, 7341710, -3402151, -5061082, 6690486, -10347650, +-608275, 2088965, -1343251, -3749507, -4606890, -2045478, 1811939, -376347, 5005248, 2728915, +-1706713, -3782793, -2957085, 8488466, 269509, -9862319, 4643397, -6136972, -6344204, 4106526, +7181722, 7699803, 5521181, 118648, 3681324, 2902324, 3453154, -2981244, -322659, -2638184, +-7445326, 3424163, -2066953, -12885, -1811403, 1114007, -1428614, 8462696, 14701136, 2914135, +-2859911, 433792, -10967736, 10867341, -7595113, -4188130, -7346542, -8013872, 14162118, 1403381, +-8473970, -2273112, 9596031, 5872294, -8064875, -4916664, 10988674, 1765232, 642098, 15789910, +-7686918, 5138392, -5966247, -13506598, 6250251, 8656507, 469225, -6111202, 4640712, 6040872, +11522860, 10525891, -827318, 8920110, 3786014, 9105331, 8768176, -15612206, 5120138, -5304285, +-6991670, -5181341, -1843615, -10087268, -2442763, 2006287, -8716636, -17419314, 3486440, -1566053, +-15777562, -11639898, -10482405, -5986111, 125091, -3248069, 3222836, -2389613, 5677947, 11551851, +-7253663, 3692061, -3118683, -5817533, -4413616, 367220, -1614908, -853088, 8423505, -727460, +8489540, 11231339, 3001109, 4628901, 7205882, -1369558, 1078574, -11813308, 10218801, -9705015, +-3776350, -3347390, 448824, -2957622, -9417790, -8232379, -17731772, 15205795, -18115636, -17439178, +2332704, 15947214, 5236102, -2533494, -4700305, 7084549, -8864276, 8947491, -3386045, 704375, +297963, -6784975, 5846524, -8007430, -6767258, 1772748, 7544110, 9722195, 9692667, 10550050, +24237574, 11155641, 14012868, -6280853, 22447646, -12139188, 974421, 5339718, 259309, -7818988, +3107409, -1801739, -18473728, 7633768, -4406100, 2534031, -1438277, -5711233, 327491, 6129992, +-7291781, -3400540, -887448, 4980015, -11190537, 7838852, 3023120, -9943923, -555125, 4879083, +-9276592, 4172561, -11187853, 5890011, -747324, -3073586, -223875, -6830609, 9812390, 12002286, +-10628970, -5519570, 5086315, -3175592, 3180960, 3431679, 869194, 1071594, 13218299, -2581812, +-8658117, 8846559, -263604, -6142877, -5750425, -10121090, 2098629, 3739843, 5394479, 6002217, +-5136244, -7680476, 4545686, 3125126, 16073915, 2444910, -2496987, 1039919, 338229, -4416837, +-3503083, -12709882, -14299020, 24309514, 17018272, 21742736, 1562831, -13707388, 5071820, 11407970, +8216273, -3401614, -8566849, -2453500, -3018288, -4135517, -7338489, -2917357, -6126234, 16201690, +2790118, 2752537, 342524, 1023813, 1933809, -5875516, 10882910, 6083821, -405874, 3932043, +-1285806, 11014981, 2255932, -935229, -17708688, -1302986, 1364726, 1722819, -3122978, 2245194, +-8262980, 14553497, 12036109, 11361262, 10175314, -7857643, -10588705, 8245801, 2788508, 3984656, +-488016, -12693239, -8895414, 611496, -6896107, -56371, -5769752, -2763275, 7740068, 2206003, +-5231807, 1695438, -13788993, 145492, -23505820, -12337830, -22243636, 18852222, 17373142, 18019536, +22393422, 10214506, -3894999, -10871099, -3373160, -1940252, 2604898, 14784351, -8440148, -11391327, +10280541, 13333189, -6369437, 12400107, 1826972, -5033702, 5015985, -17570712, -5423470, 5194763, +-5579163, -10683194, -20445118, 10292352, -8753143, 2600066, 13343390, 3430605, 15542950, 12109660, +6780680, 2815888, -9114457, -2396592, -4759898, 1145146, 8654359, 4823785, 1801202, 7712688, +21081310, -732829, -17906792, -7477538, 2901251, 4716948, -1023813, 886911, 1695438, -7170985, +467615, -16360067, 3787624, -17102560, -6440304, -13082470, 6717866, -6192806, -11217918, 17776332, +4789963, 2120640, -7704098, -9472550, 2560338, 4929012, 1510218, 6520297, -8736500, 20277614, +-23330262, 7242926, -9700721, -12854300, -7893076, 13749801, 3754875, -11519639, 9472014, -8447127, +26030186, 308164, -2809982, -8651138, 1082332, 24345486, 25051470, 23629836, 4998268, -6396280, +-4016868, -15299747, 12328704, 321586, 7208029, -4605816, 2273648, -5617281, -4356708, -8858370, +4698694, -9220758, 15013595, -39399884, -11533598, 250182, -11985643, 8430484, -12320651, 2489471, +-4810900, 12353400, 2120640, 11892228, 778463, -2837363, -279710, 4339528, -13882945, -9929964, +-10823318, -1539209, 13324062, -26497264, 9084393, 23008676, 2723009, -16959216, -780610, -14286135, +-13798119, 9455371, -1917703, -11673721, 6347425, 951872, -4487167, -6605123, 3617973, 9552007, +5652714, -13564044, -10062035, 7715372, 11479911, -9570261, -12812424, 6159520, 12836584, -15974057, +-829466, -14297409, -19819126, 23038742, -4260071, 3350075, -4858682, 13969381, -4068945, 2717641, +-8647380, 10086731, -6092948, -1946157, -20402706, -10338523, -5896453, -17535814, -24515136, -5845988, +-9239548, 20058572, 4919348, 30583388, 4226785, -10800232, 2659659, 4530117, -27868970, -69256, +21466246, 13073880, -16918414, 514859, 9911711, -22696754, -5013838, -12164421, 7329899, -9876277, +4260608, -185220, -5833640, -483721, -1730872, -8429410, 5498095, -15997143, -7315940, -7831873, +-19741280, -5473936, -4134443, -1427540, -494458, -6645925, -7491497, 31074088, 8023536, -14545444, +-25136832, -10252087, 419833, 21874806, -7742753, -4991289, -15314780, -5486821, -11449309, 17460652, +-18014166, 15299747, 19732690, -24381992, 12308839, 3325915, -11944304, -10736881, 2738579, 7837242, +-51364052, -9071508, -3122441, -9548786, 9506373, -9813463, -39820252, -18052284, -13959717, -6905234, +5454609, 32274532, -1041530, -37574520, -21149492, -23206246, -4493073, -12771622, -700617, -18963892, +31144956, 18799072, -3567507, 24851754, 488553, 26814554, 6107444, -15052787, -21199958, -12858595, +-17187922, -7177964, 3776887, 11861626, -4111358, 4195646, -14337675, 2871186, -20533702, -1284732, +-1611150, 7487202, -8039642, 32840394, 3641596, -154082, 20826296, -7558606, -15732465, -8091719, +12496744, -136365, -9239548, 4523138, -781147, 28410134, 6072547, 1172526, -11354820, -15362561, +-42533060, 3980898, -33973728, 18198314, 56129852, -39190504, -9543417, 10858214, -7877507, -5381057, +-12293807, 11482595, -12616466, -37208376, -11388643, -36865316, -9140227, 1505386, -25518548, -510027, +-36265092, 18716930, -4244502, -18692234, 55031416, 8337606, 23633058, -12176232, -66677756, -7355132, +-17381196, -18975702, 23667418, 18690624, -23667418, -18788872, 45025752, -5593658, 14296872, 1909113, +-2838974, -5680631, -5408438, -15204721, -628676, 4821638, 7679402, 5071283, 15793132, -13201119, +-779000, -12874701, -7887171, 4617627, 22601192, 14409615, 19902342, 17855790, -4572530, 6195491, +10493142, -389231, -19170050, -3820374, 25439092, -5050882, -37471980, -16719771, 3593814, -31774168, +-14024679, -32552094, -22541062, -20500416, 29245506, 19893752, -6897181, 19910394, 7385197, 28256052, +18848464, 8798241, -50861540, -11695196, 1889786, -44781476, -32789390, -12898861, -8937290, -52386788, +10935524, 28271086, 38316476, 45683956, -15627775, -30528090, -323733, -30780420, -22414360, -42522324, +-46538120, -33319820, -27537720, 31556736, -18921478, -48002164, 20943872, 3990025, -32111860, 33107218, +17287244, 11308112, -5706938, -28562070, -5909875, 2501819, 31078384, 40662068, 4010426, 12170327, +4270271, 2833605, -81068, 6894497, -14566918, 56599080, 14999636, -16336445, -16150688, -6376416, +4253092, 28493886, -11164231, -2457795, 1869921, 15226196, -11175505, 8795019, 2821794, -1400696, +-43484932, -12588012, 16510928, 25184078, 10330470, -3407520, -11106249, -28308666, -1259499, 6586333, +-5089000, 2224256, -5764920, -17605608, 21547850, -2749853, 9064528, -18897320, -2212445, 54663124, +6111202, -4033511, 8326331, 8769786, 7143068, 28537910, -7602092, -10069551, 21998286, -211527, +13882945, 9473087, 19342922, -4454418, -17739826, 12330851, -7396471, 4205310, 75893144, 75022344, +31416612, 16039555, 32433446, 664109, -42848204, -14467597, 4421132, 1435056, -13404056, 24828132, +10405632, 6952479, -13747117, 29712046, -6120329, -3641596, -13232794, 13683229, 8043937, -30734786, +-42200740, -15311022, 2415919, -2468533, -11276974, -39831528, -7464653, 7742753, -1097901, -16670379, +-8777839, -15480673, -17394080, 3251827, 6114960, -27592480, -29084444, -13935021, -35133368, 3239479, +23622320, -29433410, 22578644, -17875118, -18343268, -32603096, -41390064, -48071960, -43801688, -26484916, +-3744138, 9188009, 3312494, 8964670, -24814174, -53564148, -22272090, -51920248, -83198888, -37067180, +60530048, 102837624, 60830696, -34172372, -25126096, -105145096, -91063504, 53070228, 7310571, 71790376, +79722112, 77495168, 25962004, -43654584, -45555644, -57359288, -56828860, -15223512, -4490389, 6665789, +-25883084, 33961380, 15939161, 30010010, -69111928, 14395120, 8439074, -22118008, 14555107, -16860430, +-8465917, -5871221, -10433549, 28195386, 53560928, -16985522, 10306311, -8820252, 12444131, 26257282, +-8923868, -6354404, -15450071, 6567542, -9917079, -31268436, 21479132, 35456564, -5143760, -20721606, +-17918604, -40269076, -10864657, 27972048, 19883014, 8777839, -42803108, -26308286, -18621368, 36333276, +32935420, 27289686, -83308408, -57068304, -6505802, 39777840, 88476864, -1127429, -105567072, -40386652, +4064650, 34331284, -2292976, 18259516, 15571404, -47584480, -19414326, -13998909, -26765162, 858457, +-50975356, 7262253, 21984864, -63672892, -38771744, -19998978, -6215355, 69831336, 1835025, -106290240, +13180181, 16836272, 20555176, 45490148, 27966142, 23477902, -56667260, 7907035, -41712724, 7496866, +34891240, 31112206, 9835475, -20131048, 3633542, -11893301, -3424700, -14729053, -11502459, 7841537, +1495186, -21401822, -3110630, 11574937, -3077881, 1636383, 3352222, -13390634, -14468671, 124017, +8207146, 1746441, -22928146, 2444910, 10321343, 4221416, 1586454, 23780160, -3647501, -5325760, +7076496, 9713069, -16840030, -16304770, 11471321, 3536906, -14694157, 10056666, 2339147, 5560909, +-10899553, 5087389, 8717173, 2719788, -14901926, 19301046, -4119411, -18150532, -1507534, 17404818, +2584497, -10976863, 9392020, 6125697, -20759188, 9865540, -1931662, 21157008, -19905026, 4441533, +9294846, -26103200, -2913062, 16355235, -4844723, 12985297, -9917616, -13906030, -3516505, -14002130, +11109470, -27322972, 46426448, 7099581, 21332028, -17185238, 8528731, -3211562, 6148246, 5667210, +-7037841, 3746822, 9000641, -4151623, 18869402, 1512365, 1202591, 6910066, 6576132, 28454, +-4052302, 8513699, -611496, -4658429, -511638, 8568460, -7864622, 2555506, 4413079, -10001368, +14027900, -1905355, -5897527, 21422224, -7922604, -11361799, 10052908, 6050535, -5134634, 9772661, +7723962, -1654636, -2352032, -758062, 3237332, 6011344, 3554086, 843961, -3032247, 11523397, +-10798622, 11099806, 2108829, -318901, 3350611, 4169876, 3803194, 1418413, -9593883, 3803194, +9160628, -5193153, 430570, 1014149, 7062537, 355409, -2142115, 11029476, -4668630, 6404870, +-9966472, -2809982, 10405095, -8578660, 10001368, -1716376, 6728067, 10613938, -37866580, -120941984, +-6208912, 65025268, 29184840, 138629200, 11800960, 29175712, 1199907, -40593348, -50971600, -34666292, +-62102004, -43610560, -27310086, 820339, 47453484, 93237832, 68794104, 59644748, 19547470, -32721208, +-47693464, -43154756, -50528144, -56356412, -22650584, -10997264, -4786741, 27149026, 36492188, 27165132, +50979652, 32555316, 12344273, 33831456, 984084, -15103252, -9592273, -30913564, -62561568, -38471096, +-36509908, -37791416, 2233383, 17144436, 12367358, 45823008, 38167228, 25755308, 37575596, 39251708, +11606075, 11541114, -3787088, -34405908, -46904264, -36512052, -46960636, -34056408, -11204496, -8611946, +3595425, 25649544, 21011516, 18137646, 37420440, 30168388, 23301272, 37890740, 11773042, -7218230, +449361, -14010720, -29520384, -16951700, -28831042, -18379238, -7886634, 0, 0, 0, +0, 0, 0, }, { -522912, --292058, -565325, 4009352, 2597918, 440771, -1506997, 2077154, 3594888, -1101659, 3978214, --2531346, -810675, 2589865, 882616, -4480725, 1421097, 2778844, -6218576, -113280, 5133023, --3015067, -4310000, 4304631, -3466576, 875636, -2539936, 370978, 334471, 381178, -228170, --3140158, 4502737, -2037425, -1030792, -2770254, -2889976, 176631, -618475, -2095944, -3569118, --2871723, 5473399, -601295, 2137283, 1509144, -349503, 4178466, 1117228, 2911988, -325881, --2171106, 2853469, -4024384, -2179159, 36507, -428960, 409096, 973884, 3021510, -1032403, --602369, -1225139, 843424, -418222, -747324, 1876901, -62814, 2343979, -440234, -1940788, --1645509, -7516, 475131, -737124, 981937, -2665027, 764504, 3340411, -183073, 392453, --4699231, -2312303, 811749, 6468758, -4001836, 1433445, -6507949, 6890738, 551903, 2593087, --674847, 1182190, -1167694, -2222109, -5640903, 2543158, -5654325, -2582349, -3141232, 3384971, -2712809, 1367947, 2823941, 5230734, 450435, -4521527, 3171297, 621160, -97711, 2627446, --799401, -1555315, -6659347, 1233193, -1815697, 1620276, 2982318, -3541738, -1330903, 3496640, -1191853, 547608, -3313031, 8869107, 5398774, 1015223, 4368519, 3634616, 3520263, -7787313, -661962, -586263, -1937030, 2151779, 1501628, -1066763, -1297617, -200790, -2182380, 2596308, --685047, 4904316, 59593, -884763, -1948841, -3714610, -466004, 3523484, 171799, 1216550, -4008815, 1739999, 527744, 1751273, 494995, 2195265, 7337952, -3376918, 2528662, -1867237, --3012383, -1158031, -2050847, 4071092, -3141769, -5915244, -1429150, 1723356, -4923643, -2911451, -5803575, 9965398, -1543504, 3894462, -3258270, -3410204, -44023, 1178432, -319438, 42950, -3761855, -6085969, 2147484, -309775, -1191853, -5101885, 572304, 279173, 3076270, 1045825, --3995393, 5586679, -4198868, 5227512, -449361, 1089311, 2178622, -419833, -2408940, 4137127, -1097901, 5472325, 933619, -4471598, 8586713, 6917582, -2206540, -486405, -1486059, -5666136, --3027952, -750009, -853625, 2598992, -3064996, 495532, 2501819, 255014, 115427, -119185, --323196, -2941516, 5385889, 442382, 229781, -1329292, -99321, -4422743, -3206193, -7954817, -8840116, -2449742, -1516124, 6191196, -3015067, 2983392, 14289356, -2199023, 12885, -6063957, --4971962, -7449084, 3639448, -3333968, 1560147, 3425773, -4842576, -4212826, -3192771, -125628, -1023813, -5896453, -2564632, 1937567, 1616518, -2609730, -1316408, 2882460, -3868155, 86436, --2139431, -1073205, -2826625, 1588601, -2630668, 451508, 1518271, -1357747, 5748277, -198105, --1279900, -5033702, 102005, 6152004, 467078, 1768453, -6504728, -9110163, -3596498, -7904888, --7029251, -643708, -3301756, -731218, -8442295, 6339909, -7860327, 607738, 4560719, -5043902, --8215199, -5962489, -2142652, 4636954, 3998615, 6367826, -4603131, -4024921, -3442953, -2915209, -4297115, 787053, -2790118, -1589675, 1473174, 8005819, 810675, -3233574, 424665, -2669859, --631897, 5621576, 9372156, -3203509, -3345243, -8519605, 1024350, 2178622, 4798016, -3179350, -5172215, 882616, 7997229, -6415608, 956704, -12159589, -1434519, 1545115, -3082713, -2656974, --1178969, 4614406, -3796214, -6311992, 1715839, -9302899, -2170569, -4387309, 1963337, -845035, -3069291, 594853, -7318625, -7577933, 83752, 4345970, 7559143, -1301375, -3265249, 6688338, --7241852, -3597035, 3289408, 3352759, 4951024, -4544076, 41339, 2310693, -3204046, -660888, -2870112, -4006131, 5613523, -2058363, -1195075, -5648419, -5214091, 2993592, -118112, 702764, --954020, -3109556, 3496640, -1629403, 4400731, 767189, -5822902, -5148592, 2374043, -1852742, -1401770, -6833293, 5281199, -12599823, 3514894, -5215164, 5294084, 5945846, -5680631, -11009075, -2115808, -1088237, 7772817, -3925600, 11034308, -3998615, 7486128, -8181913, -2650532, 4010963, -5719286, 1859721, 519154, -4874251, -127238, -3755412, -4615479, 3270618, -3843996, 2119030, -1615982, 2515777, -1908576, 5265630, -295279, 4577362, -313533, -7701950, -694174, -2225867, -1481227, 8396124, 1190243, -353798, 281857, -2931852, 3505767, -2753074, 4992363, 4914517, -2435247, 2075006, 8900783, -1712618, -648003, -6204081, 5470178, 4350265, 1742146, 1309428, -1777043, 584116, 3343095, 5168457, 4323959, 2089502, 2884071, -1080184, 7603166, 2343979, --78383, -4851703, 3883724, -1430224, 10936060, 5295158, 2933463, -4505421, 310848, -16558710, --8857296, 3651259, -2989834, 7030325, 7065221, 10445360, 4537096, 4361540, 2842732, -12047383, --2410551, -1484985, 1445793, -1029182, 4173098, 2900177, -4353486, -3592203, 3524558, 6136972, -7920457, 6646999, 8954470, -4560182, -4283156, -6105296, 7013145, -3716221, 5876052, -1294933, -146566, -5759015, -3051574, -3282966, 5406290, 6140193, 1539746, 6118718, 9212168, -3482145, -2693481, 10225243, -4663261, 3273839, 3985730, 303332, 8232379, 9774272, 8048232, 17002164, -3731253, -2606508, -2612951, -3147674, 390305, 2767570, 5790153, -1242856, -1069447, -2159295, --3965866, 1525787, 3130494, 3971771, -10031433, -2018098, 3398930, 6454262, 5666673, -9904731, --6034966, 806917, 2451890, 6264210, 4179540, 8259759, -945430, 1797444, 7052337, 10355703, -5839545, -11111617, 118648, -11821897, -8429410, -4971962, -931471, -7146826, 8814884, 3439732, -5232344, -14701673, -1029182, 9978820, 4993973, -4139275, -6244346, -3578782, 3821447, -11145440, --655519, -7053410, 11230266, -1185411, -3287261, 1506460, -412317, -1598265, 1963874, -2622078, -5188858, 4071629, 7462506, -171799, 344671, 11972758, -3703336, 8171712, -1306744, -906238, -20323248, 2909840, -2243047, -4089346, -15823733, 2207613, -16218333, -2135673, 16944720, -4175245, --3371549, -11147051, -3528316, 1149978, -6410239, 4211753, -664646, -7789997, 9174587, 4263292, -2990908, 3625489, -6378564, 8286066, -10895795, 4661114, 4412542, 2303713, -1063541, -1924145, --2460480, 1271847, 6999186, -13029320, 6131066, -4367445, -6409165, -6097243, 5446556, 6853694, -4149475, 11623792, 8675297, 2032593, 3752728, -8485245, 2152852, 4326643, 9102109, 2037962, --3833258, 3537979, 4444218, -7577396, 1516660, -7783555, 6698539, 6114960, 7795903, -6894497, -4776541, 8296803, -3243237, 2383170, 10928007, -537, -6189048, -4890357, 2711198, -1433982, --6299107, -2425583, 476741, 1856500, 3961571, -4285304, 7723962, 4778151, -1343788, 9190156, --760209, 3654480, 12007118, -12137041, 23222888, -10278930, 3469797, 7150047, -2075543, -1043140, -3202435, 15724949, -554588, -1945620, -187905, -3500398, 7787850, 8609262, -2480344, 3745212, -3191161, 2850785, 5303748, 6707665, 586263, 7187091, 1408212, -6274411, 7902740, 10320270, -6445672, -10333154, 20680268, -6099391, 4137664, -14644765, 6210523, -12906377, 10504953, 1401770, --2606508, -7144678, 9926206, 1650341, 6407018, 6747394, 3488050, -10785200, 5902359, -6378564, --1046898, 5408438, 5652177, 1656784, -1905355, -10784663, 1715303, 10686416, 1297080, 7062000, -7587060, -11264089, 6549825, -5524402, -5746130, 9021579, 9635759, 5371394, 5452998, 1906966, -5217849, -11602854, -5305359, -3415573, 392453, 13228499, 6178311, 5500243, -925565, 6056441, --278636, 14529337, 5201743, 5775121, 2143189, -363462, -20884816, 8156680, 4905927, -1513439, --1505386, -15167140, 123480, -5550172, 3721589, 13965623, -2243047, -7377143, 15927886, -325881, -9169755, -4878546, 520228, -9349070, -260382, -3968013, 3854733, -533113, 12984760, -11951820, -1319092, 4398047, 5701032, -20455856, 12930536, 3205656, -14514842, -9602473, 7450695, 17258790, --6552510, -3798899, -12566001, 24897388, 9642202, 975494, 4001836, -14017700, -8894340, -1225139, -895501, 12528420, 2663954, 9470940, 11266773, -1250372, 534187, 7196218, -2266669, -9329743, --8289824, -2925947, 11205033, -7022272, 14224932, -7592429, 20960514, 8388608, 16899086, -5633387, -2668785, 12554726, -10682121, 5216775, 6105296, 4581120, -6112276, 5990406, 1744831, 967978, -6207302, 11535745, 10935524, -12593918, -2530273, 4063039, -10703059, -8615168, -2718714, -23989540, -6096169, -12984223, -6590091, -129923, -2374043, 5065914, 14618458, 6244346, 6559489, -10711112, --122407, -15686831, -23258858, 12936441, -9334575, 10648298, 3637837, 5272609, 6400038, -15550466, --28476170, 2771328, 4383551, 16404628, -15717433, -17257716, 15323370, -5798206, 7096897, -3068754, -3826816, 2623151, 4212826, -7734163, 4080756, -918049, -2259690, 10202695, 3958886, -1202054, --12715788, -1535451, -135291, -2151779, -381715, -6773701, -16941498, -7399155, 12847321, -5133023, -6455336, -9498857, 7452842, 3959423, 108448, -4659503, -21069498, 12025908, 11671037, 14951318, --10044855, -4104378, 20217484, 17918066, 8394514, 4058207, 11525008, 4421132, 10376641, -5175436, -9039296, -16570521, -850404, 4982699, -4173098, 20337744, 985695, 11257109, -6345278, -10478110, -23350664, -91268, 9360881, -2774012, 486942, -26982596, -2013803, 6190122, -12296491, -15942382, --5006322, -4123706, -26949310, -25283398, -7031399, -376883, 18107046, 14681809, 14465450, -6291054, --2969970, -4235375, 15472083, 6419903, -7293928, -1651952, -5928666, 11142219, 8422968, -7139310, --9957345, -9040906, -18161806, 6911140, -104153, 78920, 3236258, -3037079, 6059125, 24314346, --14678588, 7063611, 857920, -9900973, -6077379, -11673184, 3660386, -5376226, -6316287, 12461848, -931471, -4587562, 12275017, -2058900, -6356552, 4214437, 8769249, -5450314, 9467719, 17960480, -16881368, -12206297, -841277, 4205847, 9211631, -15335181, -3847754, -4295504, 18246632, 8018167, --2723009, -11498164, -13452374, -11263015, 16436303, 14363981, -27714888, -22236120, -17710834, -11469710, -3626026, -9863929, 6387153, 3762928, 2738579, 21510270, 16865800, 10372883, 1294396, -14557792, --7795903, -2478196, 5464809, 8811125, -13049721, 3045669, 340376, -11006927, -5569499, 8485245, --6899865, 6718940, 2461016, 7952132, -10606959, -197032, -23049478, 3230889, -29030758, 11578695, -10950019, -11155104, 12414603, 15480673, -214748, 4360466, -19043348, 10761577, 341987, -7649337, -9169218, -2365990, -666794, -177704, 369367, 19182934, -3055332, 7516, 22576496, -178778, --11846594, -30983894, -26586384, 28491740, 16576963, 7121056, 5978595, -11728482, -25178708, -11585674, -2468533, -8994198, 17301202, -777389, 959925, 20446728, -5804649, -6001143, -6360310, -12433393, --23629300, -16863652, 46551540, -23444078, -13401372, 14220100, -27962922, -17790828, 13520020, 24373402, -1933272, -6425271, 2197950, 5615133, -20404316, -15137612, -10683194, -18685256, -2013803, 17059074, --1625645, 3251827, 8187819, 5360656, -15150497, -7468412, -12592307, -6849399, 15268072, -5092758, --2105071, -2452426, 9089761, 9167071, 27846420, 4204773, 20380156, -1509144, 6588480, -11620571, --8975408, 7168838, -14871861, -16311749, 59056, 4772783, -8707509, 6308770, -10127533, 2670933, --25856776, 13884019, 7386270, 11312407, 889595, -10559177, -21810918, -7821673, -2496450, 17264694, --13969381, -8128763, 4221953, 39807904, -11776263, 40480068, -25726318, 9647033, -10020696, 17657684, --7965554, 30688616, -30010010, 44045428, -5251135, 8930848, 17940078, -32943472, 27866284, -35154308, -22024056, -57171920, 28965260, -29384018, 23427436, -38238632, 29894046, 1304060, 13910325, -17215302, --15572478, 18901078, 32309428, -26106422, 40856952, -1967632, 315143, -1165010, 7347079, -11660299, --8562017, -17661442, -3754338, 989453, 313533, 319975, 16189342, 3146064, 17709224, 17517560, --10644540, 6716792, 36637144, 12329777, 7996692, 5894843, -31419296, 2042257, -4966593, -3526168, --28843926, -5695127, 16761110, 5137318, 5619428, 8807367, 21151640, 5935108, -6487548, -1735167, --1830730, 8336532, -14409078, -8418673, 21692806, 13930726, 10004053, 17241610, 12246026, -6938520, --3930432, -24743306, -11360188, 10583336, 7657390, 19313394, -14171781, -6491306, -5408438, 14230837, -7412577, 12763032, 4247723, -9724343, -10340671, 31477278, -11025181, -30480310, 5204964, 21867290, -12645994, -898722, -6175626, 1525250, -869194, -686658, 8924405, -11874511, -63551020, 18248242, --7231651, -3557307, 16325171, -10371809, 17491254, -1793149, -27153856, -4604205, 3348464, 10199474, -13072807, 3315715, -19008452, 19898046, -6945499, -1379221, -11383811, -5066451, 11184632, -1730872, -10074920, 16053514, -2865280, -19969988, 5294084, 22572738, -19923280, 7913477, 18118856, -2878165, --12862353, -25343528, -16392816, 18279918, 47162500, -14038101, -17536352, 52315388, -2461553, -7338489, -38486128, 21989696, 19638202, 15189689, 7208029, -10925323, 20115480, 17835388, 13320304, 5724655, --33372970, 21585432, 20231980, -36401996, -19859392, -13089987, -8951249, -10059887, 41043244, 19795504, --21364778, 21174188, -6985765, -21337398, 10761577, 10700374, -7781407, -9145596, -31597000, 3553549, -7638063, 24029268, 14090714, 1838246, -17193828, -69881800, 21294448, 39254928, -24582246, -5161477, --19182934, 40428528, 26991722, 17049946, -3495030, -14191109, 2615098, 16305843, 7275138, -7044283, --1904281, 22341884, -1857573, -8198019, -30341260, -14143327, 24778204, 14726369, -16419123, 12818330, --12068858, -3577171, 6986301, 7192997, -7576859, 4686883, -26910118, 7617125, 34720516, -4388383, --7703561, -34718904, -21800718, 17037062, -28408524, -14790794, 5291400, 7139847, -9577240, 22992570, -20390894, -22032646, 7029788, 12539694, 34367792, 32905892, -6653978, 10888279, -2480881, 37607272, -14510547, 15367393, 33539400, -15637439, -25274808, -11665131, -31983010, 25219512, 9215389, 12440373, -3611531, 42681776, -31345208, -6285148, 14442901, -9677635, 15910706, -474057, -2389076, 10248329, --28508920, 17644262, 29002840, 25465934, 26246008, 33292976, -16879222, 26502632, -47598976, -20095616, -20100984, 5757404, 37395744, 17697950, 32137092, -11996917, 5624260, -25252798, 19615116, 31023622, -28675350, 3990025, 20817706, -45906220, -29042032, 30503932, 10213969, -28172838, -13468481, 4798552, -44989784, 14543296, -15830176, -21035676, 6203544, -5323612, 28433220, 29866128, -972810, -3535832, -7606387, -7029251, 36346696, 10996190, -6177237, 8028368, -14345728, -8630200, -75011600, -25123948, -15878494, -10982231, -9339943, 700617, -11640435, -12842489, 37680820, 24740622, -15359340, 33345052, -69337416, 14893336, 50244676, 7795903, 12488154, 36211944, 26062398, -17352204, -18072686, -35865660, --19745576, -448287, -32948304, 16356309, 462783, -32020054, -18836116, -18626200, 1216013, 32364190, --1497333, 27800786, -14949171, 8833137, -55649892, 18138184, -6966974, 31508416, -5608691, -32337346, -36251136, -10937671, 6976638, 21731460, 16368657, 33721936, -3182571, 6949257, -4396973, 38211252, --6060736, 9042517, 26678726, -26697516, 26306674, -4973572, 16674137, 26312580, -4953171, 7732552, -5507759, 4860829, -6276021, 13119514, 11828877, -1764695, -12681428, -94489, -15039902, -2831457, --1741609, 16052977, -5539434, -23541790, -15881715, 30254824, 29226178, -23631446, -20748988, 35794796, -40145596, -12186433, -2549600, 30850750, 2417530, 17326434, 21634288, -44014288, -12637404, -124017, -46803868, 7328288, -1997697, -41554884, 10125385, 20964272, 12753905, 5124433, 13248900, 8426726, -7350300, 61419108, -822486, 8718247, 33249490, 32693828, -56260852, -4246112, -47610248, -44300976, -10797011, 8791798, 7843684, 600759, 41590316, 23246510, 53629648, 58236000, -6547141, -29553670, -6107444, -8525510, -5371931, 12029667, 5738613, -5477157, -26993870, -30421790, 32214940, 13972602, --3484829, 4008815, 5426691, 1986959, 6162205, -4048007, -7388955, -44851268, 1298691, 23991688, --6983617, -34940096, -10640245, 26439282, -50921668, -19010062, 33027224, 18265422, 39390756, -2601677, -3463354, -37348500, -35451196, -47167332, 39076688, 52550000, -70683888, -37448892, -2872260, 34379604, --27426050, -6659347, 66566088, 24510842, 17712446, 41104984, 32869922, 45201308, -15953119, 44762688, --5862631, -39945880, -53173844, -15823196, 22535156, -46552076, -6692096, 5758478, -7087233, -19094350, -11799349, -41660644, 31770410, -2887292, 9583683, 12192875, 11785390, 220654, -14175003, 22494892, -5484673, 21709986, -4908611, -46568720, -4420595, 13238700, -15466714, -17146046, -10613938, -15812996, -18689550, -5008469, -16714939, -1083942, 17365090, -23781770, 16333761, -8340290, 8582418, -23420994, --6033356, 9310415, -2231773, -2269353, 2638721, 12955769, -2555506, -2223719, -16517907, 8011725, --4716411, 2527588, 4780299, 1632625, 11803644, -17728552, -13756780, 18440978, 15674483, -22218940, -10290742, -17949206, 20375324, -17325362, 7487739, 5349382, -14988362, 32530082, 2814277, -36083092, -16295643, 4485557, -28355910, 15848429, -10693932, 16936130, -24713242, 12760885, -26203596, 12242804, -17681306, -15879568, 8820252, -16553878, -111132, 2373506, 1103270, 7594039, -22601192, -124107912, --213919440, -79428440, -168589808, -166905648, 70738112, 4860829, 103264432, 249003952, 223143952, 180752096, -223514928, 132008504, 19923816, 33092186, -45854680, -187386736, -185332672, -141735536, -180371440, -127469264, --36002028, -89917288, -119440360, -58614492, -25385942, -67730560, -38420628, -12904766, -39664560, -61377232, --1182190, 31345746, -26019448, 48134772, 77632072, -9063455, 6043019, 109237128, 48708152, -10100152, -102061848, 81604912, -31990528, 33381560, 95217280, -11922292, -1014686, 139039360, 70638792, 24177444, -171037952, 189527248, 89452896, 179970400, 226323840, 54425824, 25365004, 89392232, -42613056, -117115168, --68761352, -149234544, -261180176, -259831568, -292604832, -389377440, -388820704, -370920896, -374593632, -330299616, --272114080, -205460496, -105280920, 922881, 173103824, 205873344, 138525040, 0, 0, 0, -0, 0, 0, }, +-292058, -565325, 4009352, 2597918, 440771, -1506997, 2077154, 3594888, -1101659, 3978214, +-2531346, -810675, 2589865, 882616, -4480725, 1421097, 2778844, -6218576, -113280, 5133023, +-3015067, -4310000, 4304631, -3466576, 875636, -2539936, 370978, 334471, 381178, -228170, +-3140158, 4502737, -2037425, -1030792, -2770254, -2889976, 176631, -618475, -2095944, -3569118, +-2871723, 5473399, -601295, 2137283, 1509144, -349503, 4178466, 1117228, 2911988, -325881, +-2171106, 2853469, -4024384, -2179159, 36507, -428960, 409096, 973884, 3021510, -1032403, +-602369, -1225139, 843424, -418222, -747324, 1876901, -62814, 2343979, -440234, -1940788, +-1645509, -7516, 475131, -737124, 981937, -2665027, 764504, 3340411, -183073, 392453, +-4699231, -2312303, 811749, 6468758, -4001836, 1433445, -6507949, 6890738, 551903, 2593087, +-674847, 1182190, -1167694, -2222109, -5640903, 2543158, -5654325, -2582349, -3141232, 3384971, +2712809, 1367947, 2823941, 5230734, 450435, -4521527, 3171297, 621160, -97711, 2627446, +-799401, -1555315, -6659347, 1233193, -1815697, 1620276, 2982318, -3541738, -1330903, 3496640, +1191853, 547608, -3313031, 8869107, 5398774, 1015223, 4368519, 3634616, 3520263, -7787313, +661962, -586263, -1937030, 2151779, 1501628, -1066763, -1297617, -200790, -2182380, 2596308, +-685047, 4904316, 59593, -884763, -1948841, -3714610, -466004, 3523484, 171799, 1216550, +4008815, 1739999, 527744, 1751273, 494995, 2195265, 7337952, -3376918, 2528662, -1867237, +-3012383, -1158031, -2050847, 4071092, -3141769, -5915244, -1429150, 1723356, -4923643, -2911451, +5803575, 9965398, -1543504, 3894462, -3258270, -3410204, -44023, 1178432, -319438, 42950, +3761855, -6085969, 2147484, -309775, -1191853, -5101885, 572304, 279173, 3076270, 1045825, +-3995393, 5586679, -4198868, 5227512, -449361, 1089311, 2178622, -419833, -2408940, 4137127, +1097901, 5472325, 933619, -4471598, 8586713, 6917582, -2206540, -486405, -1486059, -5666136, +-3027952, -750009, -853625, 2598992, -3064996, 495532, 2501819, 255014, 115427, -119185, +-323196, -2941516, 5385889, 442382, 229781, -1329292, -99321, -4422743, -3206193, -7954817, +8840116, -2449742, -1516124, 6191196, -3015067, 2983392, 14289356, -2199023, 12885, -6063957, +-4971962, -7449084, 3639448, -3333968, 1560147, 3425773, -4842576, -4212826, -3192771, -125628, +1023813, -5896453, -2564632, 1937567, 1616518, -2609730, -1316408, 2882460, -3868155, 86436, +-2139431, -1073205, -2826625, 1588601, -2630668, 451508, 1518271, -1357747, 5748277, -198105, +-1279900, -5033702, 102005, 6152004, 467078, 1768453, -6504728, -9110163, -3596498, -7904888, +-7029251, -643708, -3301756, -731218, -8442295, 6339909, -7860327, 607738, 4560719, -5043902, +-8215199, -5962489, -2142652, 4636954, 3998615, 6367826, -4603131, -4024921, -3442953, -2915209, +4297115, 787053, -2790118, -1589675, 1473174, 8005819, 810675, -3233574, 424665, -2669859, +-631897, 5621576, 9372156, -3203509, -3345243, -8519605, 1024350, 2178622, 4798016, -3179350, +5172215, 882616, 7997229, -6415608, 956704, -12159589, -1434519, 1545115, -3082713, -2656974, +-1178969, 4614406, -3796214, -6311992, 1715839, -9302899, -2170569, -4387309, 1963337, -845035, +3069291, 594853, -7318625, -7577933, 83752, 4345970, 7559143, -1301375, -3265249, 6688338, +-7241852, -3597035, 3289408, 3352759, 4951024, -4544076, 41339, 2310693, -3204046, -660888, +2870112, -4006131, 5613523, -2058363, -1195075, -5648419, -5214091, 2993592, -118112, 702764, +-954020, -3109556, 3496640, -1629403, 4400731, 767189, -5822902, -5148592, 2374043, -1852742, +1401770, -6833293, 5281199, -12599823, 3514894, -5215164, 5294084, 5945846, -5680631, -11009075, +2115808, -1088237, 7772817, -3925600, 11034308, -3998615, 7486128, -8181913, -2650532, 4010963, +5719286, 1859721, 519154, -4874251, -127238, -3755412, -4615479, 3270618, -3843996, 2119030, +1615982, 2515777, -1908576, 5265630, -295279, 4577362, -313533, -7701950, -694174, -2225867, +1481227, 8396124, 1190243, -353798, 281857, -2931852, 3505767, -2753074, 4992363, 4914517, +2435247, 2075006, 8900783, -1712618, -648003, -6204081, 5470178, 4350265, 1742146, 1309428, +1777043, 584116, 3343095, 5168457, 4323959, 2089502, 2884071, -1080184, 7603166, 2343979, +-78383, -4851703, 3883724, -1430224, 10936060, 5295158, 2933463, -4505421, 310848, -16558710, +-8857296, 3651259, -2989834, 7030325, 7065221, 10445360, 4537096, 4361540, 2842732, -12047383, +-2410551, -1484985, 1445793, -1029182, 4173098, 2900177, -4353486, -3592203, 3524558, 6136972, +7920457, 6646999, 8954470, -4560182, -4283156, -6105296, 7013145, -3716221, 5876052, -1294933, +146566, -5759015, -3051574, -3282966, 5406290, 6140193, 1539746, 6118718, 9212168, -3482145, +2693481, 10225243, -4663261, 3273839, 3985730, 303332, 8232379, 9774272, 8048232, 17002164, +3731253, -2606508, -2612951, -3147674, 390305, 2767570, 5790153, -1242856, -1069447, -2159295, +-3965866, 1525787, 3130494, 3971771, -10031433, -2018098, 3398930, 6454262, 5666673, -9904731, +-6034966, 806917, 2451890, 6264210, 4179540, 8259759, -945430, 1797444, 7052337, 10355703, +5839545, -11111617, 118648, -11821897, -8429410, -4971962, -931471, -7146826, 8814884, 3439732, +5232344, -14701673, -1029182, 9978820, 4993973, -4139275, -6244346, -3578782, 3821447, -11145440, +-655519, -7053410, 11230266, -1185411, -3287261, 1506460, -412317, -1598265, 1963874, -2622078, +5188858, 4071629, 7462506, -171799, 344671, 11972758, -3703336, 8171712, -1306744, -906238, +20323248, 2909840, -2243047, -4089346, -15823733, 2207613, -16218333, -2135673, 16944720, -4175245, +-3371549, -11147051, -3528316, 1149978, -6410239, 4211753, -664646, -7789997, 9174587, 4263292, +2990908, 3625489, -6378564, 8286066, -10895795, 4661114, 4412542, 2303713, -1063541, -1924145, +-2460480, 1271847, 6999186, -13029320, 6131066, -4367445, -6409165, -6097243, 5446556, 6853694, +4149475, 11623792, 8675297, 2032593, 3752728, -8485245, 2152852, 4326643, 9102109, 2037962, +-3833258, 3537979, 4444218, -7577396, 1516660, -7783555, 6698539, 6114960, 7795903, -6894497, +4776541, 8296803, -3243237, 2383170, 10928007, -537, -6189048, -4890357, 2711198, -1433982, +-6299107, -2425583, 476741, 1856500, 3961571, -4285304, 7723962, 4778151, -1343788, 9190156, +-760209, 3654480, 12007118, -12137041, 23222888, -10278930, 3469797, 7150047, -2075543, -1043140, +3202435, 15724949, -554588, -1945620, -187905, -3500398, 7787850, 8609262, -2480344, 3745212, +3191161, 2850785, 5303748, 6707665, 586263, 7187091, 1408212, -6274411, 7902740, 10320270, +6445672, -10333154, 20680268, -6099391, 4137664, -14644765, 6210523, -12906377, 10504953, 1401770, +-2606508, -7144678, 9926206, 1650341, 6407018, 6747394, 3488050, -10785200, 5902359, -6378564, +-1046898, 5408438, 5652177, 1656784, -1905355, -10784663, 1715303, 10686416, 1297080, 7062000, +7587060, -11264089, 6549825, -5524402, -5746130, 9021579, 9635759, 5371394, 5452998, 1906966, +5217849, -11602854, -5305359, -3415573, 392453, 13228499, 6178311, 5500243, -925565, 6056441, +-278636, 14529337, 5201743, 5775121, 2143189, -363462, -20884816, 8156680, 4905927, -1513439, +-1505386, -15167140, 123480, -5550172, 3721589, 13965623, -2243047, -7377143, 15927886, -325881, +9169755, -4878546, 520228, -9349070, -260382, -3968013, 3854733, -533113, 12984760, -11951820, +1319092, 4398047, 5701032, -20455856, 12930536, 3205656, -14514842, -9602473, 7450695, 17258790, +-6552510, -3798899, -12566001, 24897388, 9642202, 975494, 4001836, -14017700, -8894340, -1225139, +895501, 12528420, 2663954, 9470940, 11266773, -1250372, 534187, 7196218, -2266669, -9329743, +-8289824, -2925947, 11205033, -7022272, 14224932, -7592429, 20960514, 8388608, 16899086, -5633387, +2668785, 12554726, -10682121, 5216775, 6105296, 4581120, -6112276, 5990406, 1744831, 967978, +6207302, 11535745, 10935524, -12593918, -2530273, 4063039, -10703059, -8615168, -2718714, -23989540, +6096169, -12984223, -6590091, -129923, -2374043, 5065914, 14618458, 6244346, 6559489, -10711112, +-122407, -15686831, -23258858, 12936441, -9334575, 10648298, 3637837, 5272609, 6400038, -15550466, +-28476170, 2771328, 4383551, 16404628, -15717433, -17257716, 15323370, -5798206, 7096897, -3068754, +3826816, 2623151, 4212826, -7734163, 4080756, -918049, -2259690, 10202695, 3958886, -1202054, +-12715788, -1535451, -135291, -2151779, -381715, -6773701, -16941498, -7399155, 12847321, -5133023, +6455336, -9498857, 7452842, 3959423, 108448, -4659503, -21069498, 12025908, 11671037, 14951318, +-10044855, -4104378, 20217484, 17918066, 8394514, 4058207, 11525008, 4421132, 10376641, -5175436, +9039296, -16570521, -850404, 4982699, -4173098, 20337744, 985695, 11257109, -6345278, -10478110, +23350664, -91268, 9360881, -2774012, 486942, -26982596, -2013803, 6190122, -12296491, -15942382, +-5006322, -4123706, -26949310, -25283398, -7031399, -376883, 18107046, 14681809, 14465450, -6291054, +-2969970, -4235375, 15472083, 6419903, -7293928, -1651952, -5928666, 11142219, 8422968, -7139310, +-9957345, -9040906, -18161806, 6911140, -104153, 78920, 3236258, -3037079, 6059125, 24314346, +-14678588, 7063611, 857920, -9900973, -6077379, -11673184, 3660386, -5376226, -6316287, 12461848, +931471, -4587562, 12275017, -2058900, -6356552, 4214437, 8769249, -5450314, 9467719, 17960480, +16881368, -12206297, -841277, 4205847, 9211631, -15335181, -3847754, -4295504, 18246632, 8018167, +-2723009, -11498164, -13452374, -11263015, 16436303, 14363981, -27714888, -22236120, -17710834, -11469710, +3626026, -9863929, 6387153, 3762928, 2738579, 21510270, 16865800, 10372883, 1294396, -14557792, +-7795903, -2478196, 5464809, 8811125, -13049721, 3045669, 340376, -11006927, -5569499, 8485245, +-6899865, 6718940, 2461016, 7952132, -10606959, -197032, -23049478, 3230889, -29030758, 11578695, +10950019, -11155104, 12414603, 15480673, -214748, 4360466, -19043348, 10761577, 341987, -7649337, +9169218, -2365990, -666794, -177704, 369367, 19182934, -3055332, 7516, 22576496, -178778, +-11846594, -30983894, -26586384, 28491740, 16576963, 7121056, 5978595, -11728482, -25178708, -11585674, +2468533, -8994198, 17301202, -777389, 959925, 20446728, -5804649, -6001143, -6360310, -12433393, +-23629300, -16863652, 46551540, -23444078, -13401372, 14220100, -27962922, -17790828, 13520020, 24373402, +1933272, -6425271, 2197950, 5615133, -20404316, -15137612, -10683194, -18685256, -2013803, 17059074, +-1625645, 3251827, 8187819, 5360656, -15150497, -7468412, -12592307, -6849399, 15268072, -5092758, +-2105071, -2452426, 9089761, 9167071, 27846420, 4204773, 20380156, -1509144, 6588480, -11620571, +-8975408, 7168838, -14871861, -16311749, 59056, 4772783, -8707509, 6308770, -10127533, 2670933, +-25856776, 13884019, 7386270, 11312407, 889595, -10559177, -21810918, -7821673, -2496450, 17264694, +-13969381, -8128763, 4221953, 39807904, -11776263, 40480068, -25726318, 9647033, -10020696, 17657684, +-7965554, 30688616, -30010010, 44045428, -5251135, 8930848, 17940078, -32943472, 27866284, -35154308, +22024056, -57171920, 28965260, -29384018, 23427436, -38238632, 29894046, 1304060, 13910325, -17215302, +-15572478, 18901078, 32309428, -26106422, 40856952, -1967632, 315143, -1165010, 7347079, -11660299, +-8562017, -17661442, -3754338, 989453, 313533, 319975, 16189342, 3146064, 17709224, 17517560, +-10644540, 6716792, 36637144, 12329777, 7996692, 5894843, -31419296, 2042257, -4966593, -3526168, +-28843926, -5695127, 16761110, 5137318, 5619428, 8807367, 21151640, 5935108, -6487548, -1735167, +-1830730, 8336532, -14409078, -8418673, 21692806, 13930726, 10004053, 17241610, 12246026, -6938520, +-3930432, -24743306, -11360188, 10583336, 7657390, 19313394, -14171781, -6491306, -5408438, 14230837, +7412577, 12763032, 4247723, -9724343, -10340671, 31477278, -11025181, -30480310, 5204964, 21867290, +12645994, -898722, -6175626, 1525250, -869194, -686658, 8924405, -11874511, -63551020, 18248242, +-7231651, -3557307, 16325171, -10371809, 17491254, -1793149, -27153856, -4604205, 3348464, 10199474, +13072807, 3315715, -19008452, 19898046, -6945499, -1379221, -11383811, -5066451, 11184632, -1730872, +10074920, 16053514, -2865280, -19969988, 5294084, 22572738, -19923280, 7913477, 18118856, -2878165, +-12862353, -25343528, -16392816, 18279918, 47162500, -14038101, -17536352, 52315388, -2461553, -7338489, +38486128, 21989696, 19638202, 15189689, 7208029, -10925323, 20115480, 17835388, 13320304, 5724655, +-33372970, 21585432, 20231980, -36401996, -19859392, -13089987, -8951249, -10059887, 41043244, 19795504, +-21364778, 21174188, -6985765, -21337398, 10761577, 10700374, -7781407, -9145596, -31597000, 3553549, +7638063, 24029268, 14090714, 1838246, -17193828, -69881800, 21294448, 39254928, -24582246, -5161477, +-19182934, 40428528, 26991722, 17049946, -3495030, -14191109, 2615098, 16305843, 7275138, -7044283, +-1904281, 22341884, -1857573, -8198019, -30341260, -14143327, 24778204, 14726369, -16419123, 12818330, +-12068858, -3577171, 6986301, 7192997, -7576859, 4686883, -26910118, 7617125, 34720516, -4388383, +-7703561, -34718904, -21800718, 17037062, -28408524, -14790794, 5291400, 7139847, -9577240, 22992570, +20390894, -22032646, 7029788, 12539694, 34367792, 32905892, -6653978, 10888279, -2480881, 37607272, +14510547, 15367393, 33539400, -15637439, -25274808, -11665131, -31983010, 25219512, 9215389, 12440373, +3611531, 42681776, -31345208, -6285148, 14442901, -9677635, 15910706, -474057, -2389076, 10248329, +-28508920, 17644262, 29002840, 25465934, 26246008, 33292976, -16879222, 26502632, -47598976, -20095616, +20100984, 5757404, 37395744, 17697950, 32137092, -11996917, 5624260, -25252798, 19615116, 31023622, +28675350, 3990025, 20817706, -45906220, -29042032, 30503932, 10213969, -28172838, -13468481, 4798552, +44989784, 14543296, -15830176, -21035676, 6203544, -5323612, 28433220, 29866128, -972810, -3535832, +7606387, -7029251, 36346696, 10996190, -6177237, 8028368, -14345728, -8630200, -75011600, -25123948, +15878494, -10982231, -9339943, 700617, -11640435, -12842489, 37680820, 24740622, -15359340, 33345052, +69337416, 14893336, 50244676, 7795903, 12488154, 36211944, 26062398, -17352204, -18072686, -35865660, +-19745576, -448287, -32948304, 16356309, 462783, -32020054, -18836116, -18626200, 1216013, 32364190, +-1497333, 27800786, -14949171, 8833137, -55649892, 18138184, -6966974, 31508416, -5608691, -32337346, +36251136, -10937671, 6976638, 21731460, 16368657, 33721936, -3182571, 6949257, -4396973, 38211252, +-6060736, 9042517, 26678726, -26697516, 26306674, -4973572, 16674137, 26312580, -4953171, 7732552, +5507759, 4860829, -6276021, 13119514, 11828877, -1764695, -12681428, -94489, -15039902, -2831457, +-1741609, 16052977, -5539434, -23541790, -15881715, 30254824, 29226178, -23631446, -20748988, 35794796, +40145596, -12186433, -2549600, 30850750, 2417530, 17326434, 21634288, -44014288, -12637404, -124017, +46803868, 7328288, -1997697, -41554884, 10125385, 20964272, 12753905, 5124433, 13248900, 8426726, +7350300, 61419108, -822486, 8718247, 33249490, 32693828, -56260852, -4246112, -47610248, -44300976, +10797011, 8791798, 7843684, 600759, 41590316, 23246510, 53629648, 58236000, -6547141, -29553670, +6107444, -8525510, -5371931, 12029667, 5738613, -5477157, -26993870, -30421790, 32214940, 13972602, +-3484829, 4008815, 5426691, 1986959, 6162205, -4048007, -7388955, -44851268, 1298691, 23991688, +-6983617, -34940096, -10640245, 26439282, -50921668, -19010062, 33027224, 18265422, 39390756, -2601677, +3463354, -37348500, -35451196, -47167332, 39076688, 52550000, -70683888, -37448892, -2872260, 34379604, +-27426050, -6659347, 66566088, 24510842, 17712446, 41104984, 32869922, 45201308, -15953119, 44762688, +-5862631, -39945880, -53173844, -15823196, 22535156, -46552076, -6692096, 5758478, -7087233, -19094350, +11799349, -41660644, 31770410, -2887292, 9583683, 12192875, 11785390, 220654, -14175003, 22494892, +5484673, 21709986, -4908611, -46568720, -4420595, 13238700, -15466714, -17146046, -10613938, -15812996, +18689550, -5008469, -16714939, -1083942, 17365090, -23781770, 16333761, -8340290, 8582418, -23420994, +-6033356, 9310415, -2231773, -2269353, 2638721, 12955769, -2555506, -2223719, -16517907, 8011725, +-4716411, 2527588, 4780299, 1632625, 11803644, -17728552, -13756780, 18440978, 15674483, -22218940, +10290742, -17949206, 20375324, -17325362, 7487739, 5349382, -14988362, 32530082, 2814277, -36083092, +16295643, 4485557, -28355910, 15848429, -10693932, 16936130, -24713242, 12760885, -26203596, 12242804, +17681306, -15879568, 8820252, -16553878, -111132, 2373506, 1103270, 7594039, -22601192, -124107912, +-213919440, -79428440, -168589808, -166905648, 70738112, 4860829, 103264432, 249003952, 223143952, 180752096, +223514928, 132008504, 19923816, 33092186, -45854680, -187386736, -185332672, -141735536, -180371440, -127469264, +-36002028, -89917288, -119440360, -58614492, -25385942, -67730560, -38420628, -12904766, -39664560, -61377232, +-1182190, 31345746, -26019448, 48134772, 77632072, -9063455, 6043019, 109237128, 48708152, -10100152, +102061848, 81604912, -31990528, 33381560, 95217280, -11922292, -1014686, 139039360, 70638792, 24177444, +171037952, 189527248, 89452896, 179970400, 226323840, 54425824, 25365004, 89392232, -42613056, -117115168, +-68761352, -149234544, -261180176, -259831568, -292604832, -389377440, -388820704, -370920896, -374593632, -330299616, +-272114080, -205460496, -105280920, 922881, 173103824, 205873344, 138525040, 0, 0, 0, +0, 0, 0, }, }, { { 7273527, --3756486, 1766305, -492311, 683437, -1034013, 3728032, 5650567, -2708514, 1975148, -641024, -1970316, -2550674, -298500, 1482838, -3415036, -3418257, 1109175, 1793686, -4001836, 1832877, --2221035, -3002182, 195958, -1574106, -2990371, -3769371, -674310, 3165391, -683437, 1203665, -2091649, 1171452, 1504312, 1778117, 1533303, 3668439, -5411122, 1407676, -3522947, 1968706, -3813931, 230318, -816044, -3289408, 1298691, -556198, 578210, 1159641, 636192, -1294933, --2845416, -2114735, -3673808, 779000, 3758, 449898, 1728724, 2381559, 707059, 4234301, -242129, -2643016, 2880849, -812823, -537408, -900869, -3913252, 3384971, 1664300, 2967823, --3499325, -5673115, -1708323, 2509335, 1876364, -2925947, -8451959, 966368, 5605469, 1938641, -3659849, -5272073, -2886218, 274878, -920734, 1458678, 4436701, -10589779, -60130, 3535295, -2110977, 3263638, -3067144, -4250407, 4653060, -30602, 1300301, 2945811, 3846680, 1469953, -802622, 3512210, -513249, -1050120, -2992519, 1669132, -848793, -424128, -1562294, 2052458, -5042829, 89121, -1068373, 2450279, -3256122, -4765803, -2700461, -903554, -3168612, 363998, --760209, 2117419, -1998234, 653909, -3972308, -284005, -3280818, -55298, -1537061, -1171452, -1578937, -1753420, -264141, 2775623, -1482301, 3294777, 3745748, 412317, 5082557, -2513630, --305480, 2637110, -1048509, 1842541, 2181844, 1458141, -2949569, 1276679, 974958, 1101659, --205622, -2037962, 13946833, -4137127, 1202591, -3228742, -409633, -1437740, 1464584, 942745, -4673998, 1334124, 682363, 1721208, -1335735, -9896678, -9494562, -3064459, 1076426, 2705293, --2538863, 382252, -3206730, -1231045, -25233, 1503775, -4318053, -4653597, -1516124, -435939, -2242510, 651224, -1203665, -3400004, 378494, -1939178, -107911, 2128693, -3503620, 1437203, -2721936, -2437394, -6271189, -1728724, 1980517, -508417, 1560147, -443992, 1313186, -430034, -1458141, 182536, -5903970, 963146, 2050310, -1043677, 1293859, 114354, -614180, -1272921, --244813, -3484292, -616865, -1071594, -4545149, -869731, -499290, 3567507, -4092030, 5967857, -6703907, 5436355, -2929705, -1345399, -1864553, 2485712, -1716913, -1867774, 717796, -13207024, -12885, -1949915, 1016834, -355409, -6793028, -1212255, -1358820, 2261300, 3443490, -4502737, -3778498, -1061931, 2631741, 2663954, -1293859, 5658083, 428960, 366146, -870805, 1085553, --1284732, 1148904, -1454383, 336618, -3527779, 522375, 4083977, 137439, 1774895, 4345433, --4037806, -4210142, 1915019, -1828046, 3462281, -3245922, -925565, -6951942, -5379984, -4586488, -2181844, 785442, 2639258, -2405182, -1724966, -351114, 4583267, -4744865, 2164127, 1063004, -498753, 2714419, -1585380, -2042257, -2825552, 2046015, 1121523, -4126927, -4648765, -5345087, -16106, -934155, 2018098, 30065, -847182, 826781, 983548, 2827699, -6438693, 1174137, -4095251, 6026913, 6130529, 5196911, -448287, -3111704, -7060926, 5536750, -3408057, 6462315, -8199630, 5380521, 631897, 2935610, 1224603, 6846715, -2629057, -2643016, 2474975, -216359, -3231426, 5437966, -6022618, 2865280, 6775848, 3578245, 286152, 675384, 1459215, -2085744, -683437, -1927904, -2978023, -233539, 6469295, -1415192, 3401077, -1246614, -2764885, 7616588, --5246303, 5363878, 5790690, 1756105, 3948686, -3672734, -459025, -985695, -640487, 3981972, -1734093, -3983045, 1549410, 336618, 1684164, -219580, 2506114, 2473364, 6518687, -5149666, -3689914, 3132642, 213138, 3138011, 1461900, 4420595, 4139812, 3016141, -1072131, 3767223, -5838471, 877247, 3813931, -1044214, 6818798, 7180649, 7645579, -710817, -3600793, 2819109, -532576, 3830037, 3271155, 10885058, -999654, -3437585, 10386305, -4145717, 4692252, -2559264, --9855339, 1684164, -2780455, 213138, 11964168, -4717485, -5519033, 319975, 6365679, -10200547, --3588982, 7362648, -2492155, 2241436, 3738232, -2903935, 3435974, -2338073, -3269007, 442382, --750546, -1502702, -1039919, 3895535, -3098819, 7850127, 2326262, -179315, -4383551, -1774358, -5328981, -6151467, 1570884, 1546188, -524523, -8478265, 5869073, 946503, 1765232, 162672, --658741, 3542811, -1981591, 5016522, 3714610, -2875481, -9224516, 3607236, 3178813, -1034550, --2165201, 1497333, 6933688, 5460514, -19864, 2761127, -5021354, 3053722, -232465, -3235184, -3341485, 3541738, -2538326, 3289945, 1920387, -3957276, -533650, 1670205, -1899449, 6131066, -4050154, 3677566, 10673531, 1795833, -2146410, -12639552, 4481799, 7874286, 4878009, 3355980, --669478, 4233227, 14674293, -1272921, 7013682, 1105417, 4114042, 1867237, 693637, 3323231, --759136, -5612986, -1268626, -4048544, -745177, -5901285, 2733210, 670015, 7903277, 1952063, --3044058, 2962454, -628139, -1328756, 5221070, 2222646, 4012036, 2600066, -1634235, -7818988, -950798, 5372467, 105764, -1066763, 2614025, -3864397, -1432909, -7216082, -9176734, 5545877, -5996848, 4907000, -909459, -994822, 527744, 437013, 3300146, 124554, 3577171, 3418794, -383863, 3524021, -2186138, 1449552, -911070, 2405719, 2604898, 9770514, 561567, 8164196, --2212445, -6795175, -85362, -175557, -2225867, 6908992, 360777, 4758287, -11557220, -345208, -11887396, 16284905, -6685654, 1843615, 2659122, -5639829, -3208878, 637803, -4617090, -4920959, -11483669, 1570884, -7438347, -1234266, -4808216, -2848100, 7530152, -2378875, -3146064, 6656663, -4294968, 6715182, -2730526, 1314260, 6786585, 197569, -3807489, 1708323, -396211, 708133, --8199630, -5849746, 2706903, -741956, 2206540, -7883950, 3846680, 2651606, 2036888, -13807246, --7731478, -3658239, -1449552, 1711545, -5690295, -4227322, 1611150, 10172093, 7166690, 3409667, --1546725, -1457605, -3630858, 2674691, -813359, -8092256, -5553930, -1120450, 243203, 10486700, -6437619, -5914170, -5652177, 7000260, 1930051, -5199595, 485331, 6036040, 3034395, -711354, --8351564, 8531953, -2938831, 4633733, 2043868, 2436320, -2947421, 5022428, -5953362, 7236483, --442919, -1695438, 3940633, -6889128, 2625299, 4075924, 978716, 2913062, 3551401, -1706713, -8036421, -3471944, -13166222, -7736847, -1554778, 743029, -2627446, -5490579, -6041409, -4015795, -13339632, -3418794, -827318, 2124935, -2517925, 1800128, 10987063, -4947803, 5330055, -3120831, --6706592, 6448357, 4705137, 3110093, 9882720, 469225, 4779762, -164819, 1391033, -114354, --2926483, 2397129, -482110, 7271380, 1660005, -4533875, -966905, -1095754, -44560, -7550016, -3459596, -7425999, 2203318, 10754598, -6451041, -12674448, 3398393, 2181844, 6387153, -2234994, -343597, 6541235, -3223910, 3485903, 5140002, 1837172, -1909113, 6714645, 2476049, 8625905, --10002442, 24328842, -5224828, 11145977, 1373316, 4883378, 3604015, 335007, -13074954, 11825656, --16393353, 5823976, 4347044, 15496779, -6744710, 7216082, -10328323, 7377143, -3135326, -11034845, --5193689, 3135326, 3227668, 4629975, 2413772, 6470905, 4217121, 9584756, -2568927, -7019051, --6487548, 3091303, 158377, -3222299, 6338835, 3146064, -1038308, 4129611, 7766912, -204548, -2145873, -630286, 3913252, 2710124, -9529459, -3696356, -12552042, -2396055, -2035815, 242129, -6190659, 5967857, 883153, -2947958, -18790, -1341104, -2990908, 2275796, 17847200, 2201171, --433792, 6285685, -510564, 7129646, -2919504, 725313, -4419522, 18572512, 3984656, -6689949, --8734890, -4947803, 321586, 297963, -11883101, 1261110, 2308008, 1001801, 12365748, 935229, -10252624, 6194954, 10036265, 3306588, -10555956, 10041097, -6845641, 17463338, -11588896, -3444027, --15955267, -3390877, -1940252, 6915434, -7596724, 10188199, 7946763, -5020280, 246424, 11676405, -16128139, -5281199, 33823, -2174327, 4760435, 64425, -2361695, 2384244, 4057134, -7858180, -5433671, 1133335, 6270116, 2605972, 479426, -13400835, -2763275, 15593953, -2497524, 5238787, -11259794, 3476776, -1650878, -4132296, -6273337, -3256122, -284005, -5079873, -3962644, 9064528, -7384660, 2656437, 12821551, 9241696, -4025995, -1353452, 674310, 3233574, -5574868, -11038066, -12935905, 6337224, -4597763, 13157632, 11949136, 15302432, 4565014, 2197950, -8018704, 179315, --10734197, -6633040, -7694434, -16207059, 13504451, 589484, 2282775, -2279554, 904628, -1977833, --21032992, 2194728, -440771, -3954591, -1796907, -10438381, 11476689, 11812234, 13190381, -22045530, -6779069, 4291209, 270046, 21300890, 8551817, -10938745, -1545115, 21016886, 2201708, 3549254, -4018479, -6495065, 3217468, 4121558, 12851079, 6428493, -10453414, -16882980, 5902896, 3639985, --8762807, -1885491, 392990, -10536629, 726923, 12109660, 4847408, 6609955, 9636833, 15991774, -1037772, 14006425, 2309082, -6201933, -1412507, -9055939, -5089000, 3018288, 4230543, 3126199, -6550899, -10958609, -5407364, 17637284, -2190433, -4821101, -11190000, 7737384, 6906845, 1590212, -2185065, -1502165, 3797825, -9650792, 11643656, -8699993, -9689446, -9177271, -6898255, 13562970, -244276, -5158256, 19280646, 22716082, -6007049, 6292664, -1830730, -6801081, 1149978, -15418933, --9638980, -773631, -3271155, 30560302, -13990856, 3844533, -19682224, -2930242, 11669963, -5054103, --11066520, -11421392, -4394826, 4652524, 5811091, -787590, -1229971, -12797929, 2749853, 8946954, -4243428, 5497022, 1349694, 2024540, -7762080, -2406792, 4693326, 1887101, -337155, 631360, --9342091, 4092567, -9829033, -1438814, -620623, 2870649, -10908680, -950798, 4749160, 7701950, --12415677, -6115497, 20831666, -7984881, -17258790, 14319421, -14161044, -4061429, -6582575, -2181307, --11062762, -6969658, -2830384, -10224707, -15757161, 24675660, 12653511, 11249056, 6563784, -8970039, --4664872, -5830955, 5667210, -10809359, 6633040, -5323075, 1385664, -1897839, 31182536, -15318001, -13023415, -29631516, 6951942, -19169512, -4370666, 9259949, -1863479, 5609228, 9699647, 7593502, --13488345, 8427800, 954557, 5994164, -3670050, 8672076, 7897371, -2864206, 874563, 4853850, -5500243, -10124849, -4168266, -14349486, -2674154, 10948945, -698469, -6536940, 196495, 3481071, --204011, -5796059, -10627897, 1535988, -7533373, 5296232, -7184944, 21945136, -3215857, -13328357, --15103252, 2257542, -8792335, 6288906, -16829292, -13212930, -17091286, 2767570, -14620606, -4129074, --20503100, 12921946, 1683627, 8388071, 4576825, -21816286, 424665, -2813741, -9007083, -12636331, --4381941, -10931229, -13720810, -7948374, 4642860, 7169374, 10893111, -8118025, 639413, 3856881, --18398566, 6375342, -12400107, -26419954, -7409356, 30431454, 26906360, 15344308, -12572443, 13595182, -20161650, -12716861, 17820894, -13700409, 16451335, 4314832, -879395, 5857799, -164283, 9071508, --12655658, -3085934, -5646809, 7082938, -12041478, -10313290, 17170742, -1018981, -3505767, 2267206, --16486769, 311385, 26564372, 15191836, 2989834, 480499, 5597953, 25896506, 10632192, 1175747, -4106526, -6131603, -3150896, -5129265, 10595684, -4705674, 6969658, 2292976, 12613782, -14310294, --650688, 99321, 16643, -3240016, 6771016, 12708808, -3212099, -2109903, 11151346, 2599529, -846645, 27834072, 3497177, 1800128, -12882754, 6918656, -9851044, 13977434, -15093589, -10667625, -931471, -10214506, -14322105, -17657148, 4248260, -3559454, 9203041, 972810, 4636417, -21522618, -21570400, -35108672, 13651017, 14286135, -25199646, -3225521, -21712134, -7633231, -19581292, -9218074, -20692078, -8071318, -2384244, -15821049, -3753802, 2770791, -23234700, -1567663, 13469017, -28351616, -162135, -19571092, -11062225, -298500, 1160178, -13181792, -10937671, -11149198, -3923990, -9674414, --1496259, 4141959, -3649649, 6363531, -14439143, -9255655, 17068200, -9083319, 8786966, -11374684, -9163313, 8650601, 573915, 1836099, 8428336, -197032, 12428025, 16415365, -4296041, 1875827, -24245090, 848793, 11891691, -1581085, -11258720, -20664698, 2149094, 13187697, -23307176, -425202, --14274861, -7559143, -29969208, 11572789, 17420388, -5772973, 7540889, -5548561, 18838264, 21684754, --3689914, -23689966, -23969138, 29687888, -26732414, 7064148, 1132261, 6497749, 37493992, 42267312, --2321967, -31483184, 31470300, -34423628, 5013838, 14972256, 3753802, -3425773, -15906948, 18319110, --7991324, -6132677, -16236050, -9134322, -5042292, -19975356, -11170673, -8709120, -5086315, -2940979, -14103599, 214748, 12168716, 533650, -5334887, -17349520, -19594178, -4442070, -812286, 248034, --3084860, -6761889, -8575439, 9896678, 22310208, -11628087, 7550016, -7012608, -8077223, 9571335, --8951786, -13433047, 31283468, -2780991, 2598455, 2287070, -17967458, -3102577, -4069482, 9752797, --23187454, -9231495, 23643258, 4777078, -10743324, 14047764, 23935852, -12921409, -17861696, 10030359, --15307263, 1375463, -28137404, 10049150, 22386980, -1081258, 11114838, 8478802, 2854543, 28176060, -6862821, 1413581, 13268765, 615254, -51831128, -36516348, 14307073, -15867220, -14953466, -44219372, --13195750, 8592619, 2973728, -9274982, -24824910, -1020592, 11666742, -1615445, 1068910, 11988864, -21990232, -20323248, 50825032, -13979045, -17645336, -5954972, -3456375, -537408, -20906290, -318901, --4133906, 10062572, -7415261, 14558865, -6900402, -13907104, 4835060, 5493263, -12202002, 11888469, --39669928, -570694, -3637301, 14724759, 18400714, -14616847, 17135308, -7719667, 4562866, -9409200, --3292629, -6198712, 13642427, -2942053, 18116708, 27904402, -25678536, -8201777, 13183939, -18207976, -9874667, -20585778, -11074036, -10961293, -11724724, -21158082, -10523207, 7638600, 7087770, 13429826, -19187766, 12375411, -24283746, 823560, 3765613, 3122441, 3843459, 12010339, -9385040, 5934571, --11864847, -36053568, 25066502, -45804216, 30103962, -5673652, -21222508, -18194018, -20287814, -14026826, --11315091, -186294, 21679384, -2996277, -20596516, 19349364, 27673012, -45639396, -13247827, 2003065, --5057324, -8038568, -3620121, -7260106, -9321690, -14016089, 15093589, -6855842, -13805636, -22238804, --22521198, 19705310, 3920232, -4830765, -3798362, -1004486, -6169721, -6663642, 3026341, -19641422, -8586713, 20217484, 14244259, 8894340, 18638548, 22593138, -15187541, 4060892, -21165598, 20134270, --13760001, -4406637, -1840930, -31678606, 8232916, 24415816, 2534568, -11297375, -10266046, 32243930, --15159087, -15127949, 7441031, -34559456, -5809480, -17480516, -1136019, -33659120, 11967389, 5244692, -11779485, -53813792, -47462072, 7801808, -16821776, -9199820, 5233955, 41652056, -52712132, 58042188, -18653580, 252329, 6871948, -38226284, 10620380, 21065204, -4784594, 49703508, -11225434, 22678502, --14391362, 54520316, 517544, -5000416, -17615272, -5282273, 10130754, -3238942, 23780160, 18556944, --3030636, 3457449, -18045842, 9905268, 23685670, 23368918, -20580410, 11766063, -1897839, 24821152, --3434363, 16856672, -10974715, -8741869, -28162638, 4150549, -16756278, -26947162, 44121124, -16182363, --639413, -5747203, -6828461, 7700877, 6532109, 16724066, -3688303, 24574730, 5371394, 42855184, -18945638, 47259672, 41634340, -1422171, 29073170, 21990770, -3086471, 25551834, 34964792, -10658498, --27287000, 20685100, 15526307, 28709708, 17276506, 1046898, 4046933, -29217052, 1421634, -4750234, --7139847, 51606716, 2075543, 18502182, 17965312, -37463924, 74563320, -9068823, -7329899, -3758097, -54459112, -31962072, 27726698, -35070020, 34974992, 7898982, -5850819, 1875827, 20797842, -7576859, -19430432, -7632694, 599685, 38704096, 12299713, -8579734, 588411, 10479183, 8105677, -35432944, -10441065, -12195560, -2638721, -18124762, 19274202, 18836116, 3398930, 9545565, 32063542, -9261560, --49435612, 13152800, 33364380, -11501922, -32327682, 9956808, 24032490, 9170829, 566399, -38176892, --18373334, -22090090, 22431540, 10146323, 23089208, -46190764, 3554622, -7483981, -51921324, -12324409, -8244190, 25017648, 33578592, -16326781, 62272732, 13238700, 1688459, -11528766, -24222542, -16088411, -12397960, -27533962, 59062244, -17681306, 3477850, 35187592, -21274584, 21521008, -20163260, -12465069, -51504176, -17483738, -43212204, 24842090, 15902116, 24866250, -9806484, -6869800, 10059887, 244813, -2877091, 1117228, 4896263, 1379221, -6824703, 32221918, -7496866, -21807696, 9277666, -310311, --19493246, 7052873, 4399121, 13514115, -9070434, -14365055, 15672873, -12353400, -1886564, -3409130, -12801150, -21974664, 7445326, -13457743, 11127187, -19262392, 6772090, -6138045, 3138547, 43698608, --29986924, 6155762, 9210020, -26226680, 9398999, 12925167, -20182052, -3522410, -7959112, 36575940, -2647311, -40878960, 24484534, -32877974, 5694053, 18148384, -16556025, 20693152, -24518894, -19001472, -26866632, -3745748, 11148661, -39985608, 7205882, 9882720, -2626373, -5202279, -765578, 17835926, -262530, -53099216, 32746978, -1871532, 12699145, -12367358, -15867757, 55006720, 2809982, 18293876, --9295920, -109274704, -229992816, -93104152, -173680432, -211110528, 71850504, -3059091, 73774120, 286434048, -249981056, 141203488, 274163328, 151832992, 15359877, 93270048, 56729000, -106656920, -75816912, -23904178, --117736328, -142184352, -48491256, -73019272, -112675248, -29928406, -6787122, -143178096, -98934032, -16718160, --87383792, -112985560, -33870112, -56360708, -122130080, -24956444, 11028402, -69390032, -52749716, 49488760, --19320910, -74051144, 14484777, 46786152, -36357972, 28368258, 105465608, -16425029, -28170690, 104006392, -56266220, -26467200, 174636592, 236275808, 148412064, 249600416, 374640864, 287713952, 275608064, 400419264, -349428352, 257099424, 317266560, 287695168, 187473712, 165366448, 95411624, -21500606, -111418968, -210987584, --297894624, -359043168, -444289664, -476471872, -485214272, -545162880, -419987136, -176518320, -128365832, 0, -0, 0, 0, }, +-3756486, 1766305, -492311, 683437, -1034013, 3728032, 5650567, -2708514, 1975148, -641024, +1970316, -2550674, -298500, 1482838, -3415036, -3418257, 1109175, 1793686, -4001836, 1832877, +-2221035, -3002182, 195958, -1574106, -2990371, -3769371, -674310, 3165391, -683437, 1203665, +2091649, 1171452, 1504312, 1778117, 1533303, 3668439, -5411122, 1407676, -3522947, 1968706, +3813931, 230318, -816044, -3289408, 1298691, -556198, 578210, 1159641, 636192, -1294933, +-2845416, -2114735, -3673808, 779000, 3758, 449898, 1728724, 2381559, 707059, 4234301, +242129, -2643016, 2880849, -812823, -537408, -900869, -3913252, 3384971, 1664300, 2967823, +-3499325, -5673115, -1708323, 2509335, 1876364, -2925947, -8451959, 966368, 5605469, 1938641, +3659849, -5272073, -2886218, 274878, -920734, 1458678, 4436701, -10589779, -60130, 3535295, +2110977, 3263638, -3067144, -4250407, 4653060, -30602, 1300301, 2945811, 3846680, 1469953, +802622, 3512210, -513249, -1050120, -2992519, 1669132, -848793, -424128, -1562294, 2052458, +5042829, 89121, -1068373, 2450279, -3256122, -4765803, -2700461, -903554, -3168612, 363998, +-760209, 2117419, -1998234, 653909, -3972308, -284005, -3280818, -55298, -1537061, -1171452, +1578937, -1753420, -264141, 2775623, -1482301, 3294777, 3745748, 412317, 5082557, -2513630, +-305480, 2637110, -1048509, 1842541, 2181844, 1458141, -2949569, 1276679, 974958, 1101659, +-205622, -2037962, 13946833, -4137127, 1202591, -3228742, -409633, -1437740, 1464584, 942745, +4673998, 1334124, 682363, 1721208, -1335735, -9896678, -9494562, -3064459, 1076426, 2705293, +-2538863, 382252, -3206730, -1231045, -25233, 1503775, -4318053, -4653597, -1516124, -435939, +2242510, 651224, -1203665, -3400004, 378494, -1939178, -107911, 2128693, -3503620, 1437203, +2721936, -2437394, -6271189, -1728724, 1980517, -508417, 1560147, -443992, 1313186, -430034, +1458141, 182536, -5903970, 963146, 2050310, -1043677, 1293859, 114354, -614180, -1272921, +-244813, -3484292, -616865, -1071594, -4545149, -869731, -499290, 3567507, -4092030, 5967857, +6703907, 5436355, -2929705, -1345399, -1864553, 2485712, -1716913, -1867774, 717796, -13207024, +12885, -1949915, 1016834, -355409, -6793028, -1212255, -1358820, 2261300, 3443490, -4502737, +3778498, -1061931, 2631741, 2663954, -1293859, 5658083, 428960, 366146, -870805, 1085553, +-1284732, 1148904, -1454383, 336618, -3527779, 522375, 4083977, 137439, 1774895, 4345433, +-4037806, -4210142, 1915019, -1828046, 3462281, -3245922, -925565, -6951942, -5379984, -4586488, +2181844, 785442, 2639258, -2405182, -1724966, -351114, 4583267, -4744865, 2164127, 1063004, +498753, 2714419, -1585380, -2042257, -2825552, 2046015, 1121523, -4126927, -4648765, -5345087, +16106, -934155, 2018098, 30065, -847182, 826781, 983548, 2827699, -6438693, 1174137, +4095251, 6026913, 6130529, 5196911, -448287, -3111704, -7060926, 5536750, -3408057, 6462315, +8199630, 5380521, 631897, 2935610, 1224603, 6846715, -2629057, -2643016, 2474975, -216359, +3231426, 5437966, -6022618, 2865280, 6775848, 3578245, 286152, 675384, 1459215, -2085744, +683437, -1927904, -2978023, -233539, 6469295, -1415192, 3401077, -1246614, -2764885, 7616588, +-5246303, 5363878, 5790690, 1756105, 3948686, -3672734, -459025, -985695, -640487, 3981972, +1734093, -3983045, 1549410, 336618, 1684164, -219580, 2506114, 2473364, 6518687, -5149666, +3689914, 3132642, 213138, 3138011, 1461900, 4420595, 4139812, 3016141, -1072131, 3767223, +5838471, 877247, 3813931, -1044214, 6818798, 7180649, 7645579, -710817, -3600793, 2819109, +532576, 3830037, 3271155, 10885058, -999654, -3437585, 10386305, -4145717, 4692252, -2559264, +-9855339, 1684164, -2780455, 213138, 11964168, -4717485, -5519033, 319975, 6365679, -10200547, +-3588982, 7362648, -2492155, 2241436, 3738232, -2903935, 3435974, -2338073, -3269007, 442382, +-750546, -1502702, -1039919, 3895535, -3098819, 7850127, 2326262, -179315, -4383551, -1774358, +5328981, -6151467, 1570884, 1546188, -524523, -8478265, 5869073, 946503, 1765232, 162672, +-658741, 3542811, -1981591, 5016522, 3714610, -2875481, -9224516, 3607236, 3178813, -1034550, +-2165201, 1497333, 6933688, 5460514, -19864, 2761127, -5021354, 3053722, -232465, -3235184, +3341485, 3541738, -2538326, 3289945, 1920387, -3957276, -533650, 1670205, -1899449, 6131066, +4050154, 3677566, 10673531, 1795833, -2146410, -12639552, 4481799, 7874286, 4878009, 3355980, +-669478, 4233227, 14674293, -1272921, 7013682, 1105417, 4114042, 1867237, 693637, 3323231, +-759136, -5612986, -1268626, -4048544, -745177, -5901285, 2733210, 670015, 7903277, 1952063, +-3044058, 2962454, -628139, -1328756, 5221070, 2222646, 4012036, 2600066, -1634235, -7818988, +950798, 5372467, 105764, -1066763, 2614025, -3864397, -1432909, -7216082, -9176734, 5545877, +5996848, 4907000, -909459, -994822, 527744, 437013, 3300146, 124554, 3577171, 3418794, +383863, 3524021, -2186138, 1449552, -911070, 2405719, 2604898, 9770514, 561567, 8164196, +-2212445, -6795175, -85362, -175557, -2225867, 6908992, 360777, 4758287, -11557220, -345208, +11887396, 16284905, -6685654, 1843615, 2659122, -5639829, -3208878, 637803, -4617090, -4920959, +11483669, 1570884, -7438347, -1234266, -4808216, -2848100, 7530152, -2378875, -3146064, 6656663, +4294968, 6715182, -2730526, 1314260, 6786585, 197569, -3807489, 1708323, -396211, 708133, +-8199630, -5849746, 2706903, -741956, 2206540, -7883950, 3846680, 2651606, 2036888, -13807246, +-7731478, -3658239, -1449552, 1711545, -5690295, -4227322, 1611150, 10172093, 7166690, 3409667, +-1546725, -1457605, -3630858, 2674691, -813359, -8092256, -5553930, -1120450, 243203, 10486700, +6437619, -5914170, -5652177, 7000260, 1930051, -5199595, 485331, 6036040, 3034395, -711354, +-8351564, 8531953, -2938831, 4633733, 2043868, 2436320, -2947421, 5022428, -5953362, 7236483, +-442919, -1695438, 3940633, -6889128, 2625299, 4075924, 978716, 2913062, 3551401, -1706713, +8036421, -3471944, -13166222, -7736847, -1554778, 743029, -2627446, -5490579, -6041409, -4015795, +13339632, -3418794, -827318, 2124935, -2517925, 1800128, 10987063, -4947803, 5330055, -3120831, +-6706592, 6448357, 4705137, 3110093, 9882720, 469225, 4779762, -164819, 1391033, -114354, +-2926483, 2397129, -482110, 7271380, 1660005, -4533875, -966905, -1095754, -44560, -7550016, +3459596, -7425999, 2203318, 10754598, -6451041, -12674448, 3398393, 2181844, 6387153, -2234994, +343597, 6541235, -3223910, 3485903, 5140002, 1837172, -1909113, 6714645, 2476049, 8625905, +-10002442, 24328842, -5224828, 11145977, 1373316, 4883378, 3604015, 335007, -13074954, 11825656, +-16393353, 5823976, 4347044, 15496779, -6744710, 7216082, -10328323, 7377143, -3135326, -11034845, +-5193689, 3135326, 3227668, 4629975, 2413772, 6470905, 4217121, 9584756, -2568927, -7019051, +-6487548, 3091303, 158377, -3222299, 6338835, 3146064, -1038308, 4129611, 7766912, -204548, +2145873, -630286, 3913252, 2710124, -9529459, -3696356, -12552042, -2396055, -2035815, 242129, +6190659, 5967857, 883153, -2947958, -18790, -1341104, -2990908, 2275796, 17847200, 2201171, +-433792, 6285685, -510564, 7129646, -2919504, 725313, -4419522, 18572512, 3984656, -6689949, +-8734890, -4947803, 321586, 297963, -11883101, 1261110, 2308008, 1001801, 12365748, 935229, +10252624, 6194954, 10036265, 3306588, -10555956, 10041097, -6845641, 17463338, -11588896, -3444027, +-15955267, -3390877, -1940252, 6915434, -7596724, 10188199, 7946763, -5020280, 246424, 11676405, +16128139, -5281199, 33823, -2174327, 4760435, 64425, -2361695, 2384244, 4057134, -7858180, +5433671, 1133335, 6270116, 2605972, 479426, -13400835, -2763275, 15593953, -2497524, 5238787, +11259794, 3476776, -1650878, -4132296, -6273337, -3256122, -284005, -5079873, -3962644, 9064528, +7384660, 2656437, 12821551, 9241696, -4025995, -1353452, 674310, 3233574, -5574868, -11038066, +12935905, 6337224, -4597763, 13157632, 11949136, 15302432, 4565014, 2197950, -8018704, 179315, +-10734197, -6633040, -7694434, -16207059, 13504451, 589484, 2282775, -2279554, 904628, -1977833, +-21032992, 2194728, -440771, -3954591, -1796907, -10438381, 11476689, 11812234, 13190381, -22045530, +6779069, 4291209, 270046, 21300890, 8551817, -10938745, -1545115, 21016886, 2201708, 3549254, +4018479, -6495065, 3217468, 4121558, 12851079, 6428493, -10453414, -16882980, 5902896, 3639985, +-8762807, -1885491, 392990, -10536629, 726923, 12109660, 4847408, 6609955, 9636833, 15991774, +1037772, 14006425, 2309082, -6201933, -1412507, -9055939, -5089000, 3018288, 4230543, 3126199, +6550899, -10958609, -5407364, 17637284, -2190433, -4821101, -11190000, 7737384, 6906845, 1590212, +2185065, -1502165, 3797825, -9650792, 11643656, -8699993, -9689446, -9177271, -6898255, 13562970, +244276, -5158256, 19280646, 22716082, -6007049, 6292664, -1830730, -6801081, 1149978, -15418933, +-9638980, -773631, -3271155, 30560302, -13990856, 3844533, -19682224, -2930242, 11669963, -5054103, +-11066520, -11421392, -4394826, 4652524, 5811091, -787590, -1229971, -12797929, 2749853, 8946954, +4243428, 5497022, 1349694, 2024540, -7762080, -2406792, 4693326, 1887101, -337155, 631360, +-9342091, 4092567, -9829033, -1438814, -620623, 2870649, -10908680, -950798, 4749160, 7701950, +-12415677, -6115497, 20831666, -7984881, -17258790, 14319421, -14161044, -4061429, -6582575, -2181307, +-11062762, -6969658, -2830384, -10224707, -15757161, 24675660, 12653511, 11249056, 6563784, -8970039, +-4664872, -5830955, 5667210, -10809359, 6633040, -5323075, 1385664, -1897839, 31182536, -15318001, +13023415, -29631516, 6951942, -19169512, -4370666, 9259949, -1863479, 5609228, 9699647, 7593502, +-13488345, 8427800, 954557, 5994164, -3670050, 8672076, 7897371, -2864206, 874563, 4853850, +5500243, -10124849, -4168266, -14349486, -2674154, 10948945, -698469, -6536940, 196495, 3481071, +-204011, -5796059, -10627897, 1535988, -7533373, 5296232, -7184944, 21945136, -3215857, -13328357, +-15103252, 2257542, -8792335, 6288906, -16829292, -13212930, -17091286, 2767570, -14620606, -4129074, +-20503100, 12921946, 1683627, 8388071, 4576825, -21816286, 424665, -2813741, -9007083, -12636331, +-4381941, -10931229, -13720810, -7948374, 4642860, 7169374, 10893111, -8118025, 639413, 3856881, +-18398566, 6375342, -12400107, -26419954, -7409356, 30431454, 26906360, 15344308, -12572443, 13595182, +20161650, -12716861, 17820894, -13700409, 16451335, 4314832, -879395, 5857799, -164283, 9071508, +-12655658, -3085934, -5646809, 7082938, -12041478, -10313290, 17170742, -1018981, -3505767, 2267206, +-16486769, 311385, 26564372, 15191836, 2989834, 480499, 5597953, 25896506, 10632192, 1175747, +4106526, -6131603, -3150896, -5129265, 10595684, -4705674, 6969658, 2292976, 12613782, -14310294, +-650688, 99321, 16643, -3240016, 6771016, 12708808, -3212099, -2109903, 11151346, 2599529, +846645, 27834072, 3497177, 1800128, -12882754, 6918656, -9851044, 13977434, -15093589, -10667625, +931471, -10214506, -14322105, -17657148, 4248260, -3559454, 9203041, 972810, 4636417, -21522618, +21570400, -35108672, 13651017, 14286135, -25199646, -3225521, -21712134, -7633231, -19581292, -9218074, +20692078, -8071318, -2384244, -15821049, -3753802, 2770791, -23234700, -1567663, 13469017, -28351616, +162135, -19571092, -11062225, -298500, 1160178, -13181792, -10937671, -11149198, -3923990, -9674414, +-1496259, 4141959, -3649649, 6363531, -14439143, -9255655, 17068200, -9083319, 8786966, -11374684, +9163313, 8650601, 573915, 1836099, 8428336, -197032, 12428025, 16415365, -4296041, 1875827, +24245090, 848793, 11891691, -1581085, -11258720, -20664698, 2149094, 13187697, -23307176, -425202, +-14274861, -7559143, -29969208, 11572789, 17420388, -5772973, 7540889, -5548561, 18838264, 21684754, +-3689914, -23689966, -23969138, 29687888, -26732414, 7064148, 1132261, 6497749, 37493992, 42267312, +-2321967, -31483184, 31470300, -34423628, 5013838, 14972256, 3753802, -3425773, -15906948, 18319110, +-7991324, -6132677, -16236050, -9134322, -5042292, -19975356, -11170673, -8709120, -5086315, -2940979, +14103599, 214748, 12168716, 533650, -5334887, -17349520, -19594178, -4442070, -812286, 248034, +-3084860, -6761889, -8575439, 9896678, 22310208, -11628087, 7550016, -7012608, -8077223, 9571335, +-8951786, -13433047, 31283468, -2780991, 2598455, 2287070, -17967458, -3102577, -4069482, 9752797, +-23187454, -9231495, 23643258, 4777078, -10743324, 14047764, 23935852, -12921409, -17861696, 10030359, +-15307263, 1375463, -28137404, 10049150, 22386980, -1081258, 11114838, 8478802, 2854543, 28176060, +6862821, 1413581, 13268765, 615254, -51831128, -36516348, 14307073, -15867220, -14953466, -44219372, +-13195750, 8592619, 2973728, -9274982, -24824910, -1020592, 11666742, -1615445, 1068910, 11988864, +21990232, -20323248, 50825032, -13979045, -17645336, -5954972, -3456375, -537408, -20906290, -318901, +-4133906, 10062572, -7415261, 14558865, -6900402, -13907104, 4835060, 5493263, -12202002, 11888469, +-39669928, -570694, -3637301, 14724759, 18400714, -14616847, 17135308, -7719667, 4562866, -9409200, +-3292629, -6198712, 13642427, -2942053, 18116708, 27904402, -25678536, -8201777, 13183939, -18207976, +9874667, -20585778, -11074036, -10961293, -11724724, -21158082, -10523207, 7638600, 7087770, 13429826, +19187766, 12375411, -24283746, 823560, 3765613, 3122441, 3843459, 12010339, -9385040, 5934571, +-11864847, -36053568, 25066502, -45804216, 30103962, -5673652, -21222508, -18194018, -20287814, -14026826, +-11315091, -186294, 21679384, -2996277, -20596516, 19349364, 27673012, -45639396, -13247827, 2003065, +-5057324, -8038568, -3620121, -7260106, -9321690, -14016089, 15093589, -6855842, -13805636, -22238804, +-22521198, 19705310, 3920232, -4830765, -3798362, -1004486, -6169721, -6663642, 3026341, -19641422, +8586713, 20217484, 14244259, 8894340, 18638548, 22593138, -15187541, 4060892, -21165598, 20134270, +-13760001, -4406637, -1840930, -31678606, 8232916, 24415816, 2534568, -11297375, -10266046, 32243930, +-15159087, -15127949, 7441031, -34559456, -5809480, -17480516, -1136019, -33659120, 11967389, 5244692, +11779485, -53813792, -47462072, 7801808, -16821776, -9199820, 5233955, 41652056, -52712132, 58042188, +18653580, 252329, 6871948, -38226284, 10620380, 21065204, -4784594, 49703508, -11225434, 22678502, +-14391362, 54520316, 517544, -5000416, -17615272, -5282273, 10130754, -3238942, 23780160, 18556944, +-3030636, 3457449, -18045842, 9905268, 23685670, 23368918, -20580410, 11766063, -1897839, 24821152, +-3434363, 16856672, -10974715, -8741869, -28162638, 4150549, -16756278, -26947162, 44121124, -16182363, +-639413, -5747203, -6828461, 7700877, 6532109, 16724066, -3688303, 24574730, 5371394, 42855184, +18945638, 47259672, 41634340, -1422171, 29073170, 21990770, -3086471, 25551834, 34964792, -10658498, +-27287000, 20685100, 15526307, 28709708, 17276506, 1046898, 4046933, -29217052, 1421634, -4750234, +-7139847, 51606716, 2075543, 18502182, 17965312, -37463924, 74563320, -9068823, -7329899, -3758097, +54459112, -31962072, 27726698, -35070020, 34974992, 7898982, -5850819, 1875827, 20797842, -7576859, +19430432, -7632694, 599685, 38704096, 12299713, -8579734, 588411, 10479183, 8105677, -35432944, +10441065, -12195560, -2638721, -18124762, 19274202, 18836116, 3398930, 9545565, 32063542, -9261560, +-49435612, 13152800, 33364380, -11501922, -32327682, 9956808, 24032490, 9170829, 566399, -38176892, +-18373334, -22090090, 22431540, 10146323, 23089208, -46190764, 3554622, -7483981, -51921324, -12324409, +8244190, 25017648, 33578592, -16326781, 62272732, 13238700, 1688459, -11528766, -24222542, -16088411, +12397960, -27533962, 59062244, -17681306, 3477850, 35187592, -21274584, 21521008, -20163260, -12465069, +51504176, -17483738, -43212204, 24842090, 15902116, 24866250, -9806484, -6869800, 10059887, 244813, +2877091, 1117228, 4896263, 1379221, -6824703, 32221918, -7496866, -21807696, 9277666, -310311, +-19493246, 7052873, 4399121, 13514115, -9070434, -14365055, 15672873, -12353400, -1886564, -3409130, +12801150, -21974664, 7445326, -13457743, 11127187, -19262392, 6772090, -6138045, 3138547, 43698608, +-29986924, 6155762, 9210020, -26226680, 9398999, 12925167, -20182052, -3522410, -7959112, 36575940, +2647311, -40878960, 24484534, -32877974, 5694053, 18148384, -16556025, 20693152, -24518894, -19001472, +26866632, -3745748, 11148661, -39985608, 7205882, 9882720, -2626373, -5202279, -765578, 17835926, +262530, -53099216, 32746978, -1871532, 12699145, -12367358, -15867757, 55006720, 2809982, 18293876, +-9295920, -109274704, -229992816, -93104152, -173680432, -211110528, 71850504, -3059091, 73774120, 286434048, +249981056, 141203488, 274163328, 151832992, 15359877, 93270048, 56729000, -106656920, -75816912, -23904178, +-117736328, -142184352, -48491256, -73019272, -112675248, -29928406, -6787122, -143178096, -98934032, -16718160, +-87383792, -112985560, -33870112, -56360708, -122130080, -24956444, 11028402, -69390032, -52749716, 49488760, +-19320910, -74051144, 14484777, 46786152, -36357972, 28368258, 105465608, -16425029, -28170690, 104006392, +56266220, -26467200, 174636592, 236275808, 148412064, 249600416, 374640864, 287713952, 275608064, 400419264, +349428352, 257099424, 317266560, 287695168, 187473712, 165366448, 95411624, -21500606, -111418968, -210987584, +-297894624, -359043168, -444289664, -476471872, -485214272, -545162880, -419987136, -176518320, -128365832, 0, +0, 0, 0, }, { 8273718, --2595771, 1931662, 1451162, -2772402, 3333968, 2580739, -845035, 4555887, -33286, 1936493, --6468221, 2427730, 2448668, -3367791, 6817187, 846645, 3335579, -469225, -832150, 406411, -4708895, 5187247, -5184026, -1624035, -2317135, 3388192, -1610613, -1233729, 746251, -2787434, --4301410, 2321967, -4068945, 2324114, 2290291, 2280628, -90194, 1279900, -45634, 3339337, --1170379, 514859, -3358665, -835371, -6404333, -3007014, 807454, 2289755, -277562, 3205119, --303332, 1631014, -3988951, 1114007, 1969243, 2333778, 587874, -1815161, 158914, -874563, -1504849, 1756642, 754304, -155156, -1414655, -818728, 3273839, -850940, 1464047, 2817499, -1774895, -1525250, 3287798, 69793, 1025960, -1014686, -7168301, 204548, 5684389, 3911642, -3922916, 2477659, 1548336, -2237678, 68183, -2544768, 6071473, 3741454, 1439888, 898722, -854699, -55298, -1954747, 3015604, 4161287, 4056597, 2435783, -3036005, -4459250, -4807679, --4634807, -442919, 2362769, -4689568, 3911105, -902480, 6864969, -1096290, 4344360, 119185, --5773510, 1706713, -783295, 4707821, 272730, -460635, -2385854, -3834332, 304406, 2312840, --5079873, -6771016, 4753992, -3867081, -3721052, -3337727, 2658048, -2593624, 1103807, -1068910, --385473, -3881577, -1267015, -2569464, -4067334, 1533303, 3091303, -930934, -4457639, -607201, --921271, -1932198, -3832722, 36507, -3097208, -3284576, -613107, 706522, 970663, -695785, -763967, 4295, 13517336, -4686883, -3054259, -4177930, -2852932, 336618, -8988830, 1543504, --4438312, -8818105, -1845225, 7589207, -5400922, 1490354, -594316, 2552821, 3878356, 4102768, -6671158, -1409286, -3731790, 1692754, 1660542, -3035468, -372052, -2051921, -1265405, 812823, --3397319, -2173790, -425202, -4377109, -5047124, 2615635, 4057134, -2362232, -5802501, -1045288, --1282048, 821413, 4871567, 299574, -1860795, -335544, 6498823, 774168, -3776350, -3787624, -1786706, 1181116, 5235029, 2860985, -181462, -4895726, 433792, -324807, 4350802, -4518306, --1320166, 2408403, 5050882, -1425392, 637803, -3743064, -1846836, 2180770, 372588, 389231, -1564442, -1532230, 2025614, 401579, 2427194, 1177895, 1090922, 8232916, 2658585, -9942849, --2370285, -4713190, 4488241, 1108638, 63888, 3186866, -1961190, -7689602, -4084514, 5051956, --328028, 5207111, -441308, -2997350, 5753646, 2151779, 12674448, -2425583, 5468567, 778463, --6059125, 1482838, -5158793, 3272228, 1101122, 1271310, -5515275, 2697776, -1022739, -1950989, -2156074, 8639864, 3139621, -76773, -7042136, 6003291, -1363652, -1611, 4168803, -6356552, --1287417, 4331475, -2699387, -2291365, -7260106, -7835631, -721555, 4683125, 2643552, -3172907, --235686, 3027415, 3693135, 1479616, -969052, -1566589, -7036767, 3144453, 8297877, 3784940, --2696166, -1304060, 2422362, 3936875, -631897, -1422708, 648540, -5827734, -1481764, -4204773, --2390686, -724776, -3149822, 5934571, 4565014, -2663954, -7636452, 8121247, -7358353, 7399155, --263067, -6248104, -14470819, -5816997, -4289062, 1946694, 7296613, 5667210, -1990717, -1339493, --1927367, -4287451, -1365263, -4793721, 1394791, 1504849, 2654290, 4518843, 2610803, 8817568, --150324, 1632625, -3348464, -927176, -2322504, 3125126, 829466, -4371740, -6227703, 68183, --4515621, 366683, 3955665, -7033546, 4673462, -11711839, -3328600, -8731132, 1316944, -697395, -4295, -3521873, -4658429, 1435056, 3960497, 2769717, 959388, -7035157, 1983738, -4903779, --1915555, -1512365, -9470403, -3802120, 2719251, 3488587, -399432, -6585796, 1046361, 2330020, --1301375, -1395328, 736050, 5520644, 1993939, -1349694, -1815697, 917512, -13364328, 903554, -3357054, 3118683, 8958765, 9590662, -2385854, 185757, 6331319, -3193845, -3007551, 9477919, --7153268, -16910896, -11126113, -6492380, 10210211, 4417374, 1416802, -9751723, 10405632, -4402342, -2909304, -2602213, 4072703, 5107253, -434865, 230318, -121870, -1584843, -5418101, -4228396, --1366337, 682900, 4672925, 2800319, 7320235, 3652333, -3291019, -1586990, 6491306, -4594005, -7973607, -6307160, 1635309, 3686693, 2176475, -5078799, 6985765, -536871, 7502771, 10224707, -1396401, -3854733, -4058744, 4424353, -5015985, -10050760, -2829847, 2326262, -6774774, 3928285, -2804077, -1992328, -4339528, -1550483, -1847910, 2162516, -1109175, -5559835, -2552821, 10144713, -7584376, 4508642, -12319040, -11424076, -6917045, 11390253, 4972499, -609885, 640487, -4931160, -1258425, 4396436, 6654515, -782221, 2319282, -11482595, -4146254, 1429687, 3391951, -14142254, --1929514, 5541582, -4553739, -9330280, 5166846, -10787884, -8051990, -4502200, 494995, -4151623, --2988224, -707059, 7318088, -6940667, 1293859, -2448131, -3159485, -5894306, -1956895, -8435316, --2838437, -593242, 1108102, -5998459, -1629403, -3910031, 73014, -2160369, -2949569, 1145683, -5920613, 1285806, -3768834, 2837363, -5316633, -1530082, 1403917, -2166811, 2707977, -1344862, --828929, -22712860, 1009854, -8061654, 3306588, 2957085, 4454418, -12608950, -13093745, 1436130, --86436, 2690797, -464930, 6474663, -3295851, 3433290, 3899830, -2340220, 9859097, -3452617, --7613904, -1580548, -6572374, -266825, -12381854, 129923, 3819300, 8800388, -17391934, 4819490, -844498, 5002563, 7130720, 1432372, -6715718, -14742475, 1123134, -5849746, 11371463, -4422206, -2371359, 1023276, 2440615, 8754754, -3766150, -39192, -3971234, -1999844, 2209761, -1910724, -7978976, 6227166, 1660005, -1432909, 41339, 5645735, -638340, 2881923, -227633, -4121021, -3788161, -822486, -3455301, 5066451, 7865159, 361314, 2953864, 913754, -5535676, -2958159, -9514963, -4332012, 4402879, 7491497, -9710384, 7124814, 3273302, 3830037, -4538170, 7324530, -1591285, -744103, 8379481, 788663, -592169, -3652333, -2891587, 491237, -4459250, -8915815, --3157875, 10163503, 6498823, 8476655, -1758789, -7780870, 2455111, 10704669, -3087008, -6520297, --1843078, -4364761, -3263638, 1611, -8160438, -2297808, -13252658, -3759707, -7631083, -9002251, --8553964, -2912525, 11818139, 12887586, 17648558, 4089883, -6569153, -3940633, 14617384, 122407, --3278134, 11292543, -1066226, 666257, -17272748, 8035884, 4451197, -11401528, 16131360, -2050847, -7280507, -1762010, 3830574, 7325604, 66035, 12806519, 4879620, 3769371, -1429687, -4285841, -1232656, 7832410, -2039036, 2457258, 3581466, 10309532, -485331, -2882460, 6503118, -7488813, --4854387, 3642132, 11124502, -4785131, -6055904, -1728724, 9127342, 238371, 1203128, -3296388, --1691143, 3436511, 4719632, 547608, -4133906, -12637941, 1326071, 3829500, 11914776, 3572876, --1219234, 9327058, 16369731, -3460670, 5523328, 3831648, 6554120, -1536525, -6218576, 2997350, --14797773, 21623550, -10346039, 5213017, -431107, -6927782, 16539919, 4221416, 2349884, -16695612, -4775467, -6396817, -7464117, 2341831, -7284265, 9110699, 5552856, -992137, 2041720, -3717294, --1593433, -5731097, -3704946, -6968048, -11246372, -2325725, -7788387, -1635846, 4669703, -2715493, --4071629, 9697499, 6008659, 9748502, -7253126, -249645, -1250372, -7640210, 337155, -3752191, --20304458, 2459943, 620623, -2495913, 7379291, -37581, 8113193, 7400766, 2703145, 13130789, -11245835, -10073846, -2737505, 916439, -159988, 4728759, 1722819, 11414412, -1999844, 17736068, -228170, -8920110, -7780870, 2318746, 3299609, 4519380, 12491912, 4343286, 3361886, 12662100, -15622407, 1847373, -8980240, -7669738, -337155, -1943473, -1361505, 16207059, 13205951, 1444720, -9046275, -8927090, 4657892, 1232119, -248571, 6158446, 13922673, -3224447, -781147, 12908524, --15967615, -8636642, -6726993, -18277770, 4130685, -5432597, -2210835, 2797098, -12391518, 14609331, -11039677, 15497316, 7138236, -8716636, 1319092, 1191317, 11615202, -1453846, 85362, 195421, --6487548, 1207960, -3624416, 6919193, -6897718, -2086817, -2012192, -2457795, -8139500, 4809290, --12149926, -1142461, -384936, 8766565, 5223754, 1924682, 678605, -1301375, 1490891, 1087164, -7186554, 2553358, 2540473, 43487, -19120658, -8024073, 3017752, 9478993, 10621454, -14114336, -11243688, 4611185, -5132486, 3200825, 4472135, -1738925, 16333224, 2381023, 4482335, -867583, --18861886, -3827890, -6599754, 2095944, 18852222, 2544231, 7288560, -12229919, -11138998, 5545340, -9509058, 643708, -4128001, 18089328, 5290326, -454193, -5728950, 3529926, -2018098, -2579665, --1270774, -3716757, 288837, -6705518, -15352361, 4363687, 933619, 4005594, 879931, 7719130, -1910724, -9320079, -18571976, -5906, 753230, -1911261, -16329466, -8136279, -2962454, 3960497, --4031364, 1326608, -14359686, 245887, -3671123, -323196, 784905, 3423089, -2078227, -13333726, --12504260, -7788387, 4415764, 3352759, -3758097, -3013457, -21343304, -12051141, -988379, -20522964, -18082350, -19359566, -5795522, -12582644, 19468550, 6252936, -14581414, 6978248, -2095944, 7518341, --12410845, -3934727, 185220, 8270497, -11618423, -4294431, -3912715, -11179800, 1148904, 8171712, -62814, -2117419, 16080358, 36358508, -6022081, -12695923, -11906723, -10695542, -14806900, 1217086, --24514062, -1292785, -19158238, -9521942, 4671851, 10306848, 5624797, -9335648, -2044941, 9711995, --1656247, 11368242, -8378945, -8752606, -7553237, 4694936, -5273146, -6975564, 1136019, -8138426, --7863548, 7211250, 19229642, 6256694, 7738994, 2452426, -12677133, -4188130, -10441602, -10489921, --2279017, -3094524, -8377871, -13566728, -25096030, -3796214, -9640054, 1572495, -5313412, 7472706, -7595650, 3116536, 7984344, 4483946, -1777580, 15209016, 23390928, 3944928, -29263760, 3850438, --5977521, -18646064, 1398549, 6005438, 3082176, -1520955, 6796786, -2861522, -14602889, -1756105, -5242008, -16392280, -8437463, -15894063, -25093346, 14771466, 617938, -856846, 26884884, -21044802, -23127862, -2617246, -3574487, -12731357, -5216775, -12636331, -10997264, 12152610, -12102144, 6020471, -27761594, 10078678, -5065914, -13424457, -11683922, 12226161, -11306501, -18138184, -8182450, 1313186, -732292, -20615844, 442382, -6583648, 9477382, -6827388, -1356136, 1873143, 28934120, -7718056, --10742787, 14122389, -12794708, 17059074, -11484206, 12373801, 844498, -9701794, -9839770, 15826418, --22449258, 15559593, -10567767, 1185948, -6623377, 8280697, -8951249, -4190278, -2071785, -6970195, -28735478, -9330280, 18874770, 7558606, 7405598, -741956, 5554467, 12765717, 12465069, -4843113, --17389248, -734439, 9293772, 4057134, -5717675, -19462108, 20500416, -6535330, -20952998, -6350109, --15785615, 4963372, 2663417, -31549220, -13641890, 18881214, -4089883, -8140574, 21984326, 1851668, --11879880, 8172249, 11827803, 10012643, 1302986, -19502910, -8250096, 2668249, 2532420, 9785546, -6342056, 11075110, -10134512, -8016020, 3493419, -2923262, 8977555, -18333604, -3380139, -19807852, --6646462, 3295314, -3023120, -2698850, 20593294, 4119948, -15845208, -2588792, 901943, -16078747, --2497524, 547608, 9167608, 23834922, -8904004, 7819525, -13804025, 1800665, -8286066, -10392747, -9412421, 20824148, -17085916, 1394254, 18324478, -8684424, -2168959, -7255274, 11814918, 2740726, --15717970, -409096, -5826123, -5172751, -2044941, -7719130, 10796474, -27188216, 5109938, 2011118, --11978127, 14838575, 22457310, 16073378, 43353400, 13094282, -12107513, -15927349, -13743358, -7311645, -19598472, -53734336, -4365835, 26951994, -41360000, -4142496, 5371931, -42715060, 15752866, 2522757, -30021284, -5644124, 9118216, 7096360, -37799472, -31848794, -13755707, -5333276, -20083268, -24360518, --13883482, 17641042, 11816529, 9650255, -1046898, -343061, 4010963, -1407139, -28153510, -12350715, --35486092, -13322452, 16065325, 2696703, 10036802, 38735772, 8329016, 12791486, -3182571, 5324686, -34071976, 24474872, 5069135, 14912663, 13928042, 33296198, 27308476, -43201464, 22151294, -5714991, -21000242, 20677046, 7160248, 40111772, 35706748, -25316684, 16001438, -4425964, 14956687, -36455144, --373662, -1207423, -2505577, -12276090, 16366510, 16551730, -25588342, -13220983, -17203492, 981400, --22906672, -29774324, 14598594, 25603910, 5660230, 23516556, -19508816, -16047608, 24192478, 43322800, --5545340, -58223112, -18435610, 6421513, -4304631, -9252433, -12616466, 707596, -33306398, -19567334, --27633282, -3910031, -7936026, 9914395, -19697256, -5046050, 5531918, 10031970, -74625, 11126650, -20409148, 4999879, 29368986, -17973364, 7164006, 2092723, 27999428, 8291435, -5374615, -27062052, -18758270, -3736085, 25520158, -20196010, -16902844, -14937896, -8573292, -24559160, -3512747, -3054259, --24330990, 14950781, 27790586, -11792906, 4146254, -34285112, 34673808, -9045738, -18845242, 17852032, -13852880, -18411988, 1806034, -10461467, 4532264, -6811282, 43350180, 1247688, -3764002, -7550016, -76472968, 5449777, -10540387, 36725728, 26072598, -23349590, 21264384, -28882582, -19768660, -29365228, -25589416, -16546898, 9281424, -17470316, -79812304, 4688494, 49704044, -31556736, -21400748, 39766028, --30598958, -2843805, -9408663, 38145216, -68088120, 36592584, 21239688, -19830400, 5976984, 35741644, -25125558, -13717052, 13925895, 5838471, -11274289, 16352551, -1434519, 9574019, 14782741, -7631620, -2747169, -2575370, 6469295, -10568304, -8920110, -1480153, 12494060, -40634684, -20817170, 18928458, --5604933, -27230092, -32298154, 4537096, 37601364, -17675402, -25930866, 18194556, 27732604, -7194607, -6080063, -5988795, 25730076, -15515569, 39170640, -6366752, -1141388, 21202106, -756451, 4145717, --29913374, 44094280, -24537686, -29246580, 20164872, -30959198, -11118060, 3919158, 13673565, 40430676, --15999827, 24646670, -6497749, 12137041, -71725416, -55576876, -11108933, -22818088, 9442486, -8220568, --28844464, -14833206, 16718697, -35268124, 29520920, -30371862, -37665788, 17396766, -19605988, -13846975, -17547626, -17590576, 14175003, -14319958, 5086852, 37127308, -38141456, -4882841, -8260296, 30944166, -1583769, 838592, -34565360, -31955630, -13550622, -10933376, -7665443, -11815992, 2764885, -496606, --6392522, 2712272, 3915937, 1226213, 2260764, -8278550, 12207908, -12248710, 11469710, -30253750, --2482491, -24895778, -33088428, -19515258, 35622460, -19005768, -21009906, -14902463, 5188858, -9868761, -13529147, 23434952, -30779884, 21913460, 76773, -38904888, -22852984, 74364136, 35057672, -59796684, --15623480, 34827352, -23602456, -23036058, 9556839, -20174536, -45554572, 26752278, 7093139, -56418692, -15808164, 25257628, -39423504, -24079198, 23270670, -13219909, 49299244, 69224672, -25769804, 77299744, --4572530, -19575388, -14631880, -24543054, -663572, 13931263, 46388332, 2667712, 15393700, -10302553, --37060736, 1780264, 3080565, 26506928, 6549825, -28266254, 56116432, -22290344, 11951283, 25324738, --25252260, -21144660, -36774584, -16127602, 25827786, 30535070, 38766912, -13160317, -87936768, 20630876, -49086108, 60865056, 53932980, -215822, -23539642, -31385474, 13171591, 31204548, -17243220, -9934259, --77296528, -48467096, 45354316, 72424960, 17375828, -1719061, -14830522, -31347892, -4625143, 20137492, --25046638, 11004780, -980863, 45574436, 1162862, 17685064, -85895584, -11518565, 4518306, 54460184, -46052788, -1582159, -22860500, -7961796, 69280504, 28643136, -71961104, -95806224, -31981938, 17599702, -152848224, 14198088, -18853296, 19127100, 7221451, -12622372, 31053150, -36381056, 791885, -14755897, -7996692, -22572738, 20631412, 5643050, -12320114, -22716618, -11513197, -4399121, 6128919, -30897994, -6641630, -15152108, -6361921, -24159192, -11871826, 19549080, -21110838, -7252589, -3386045, 9612674, -5887327, -7931194, 10473815, -17540646, -2030983, 367757, 8828842, -11381126, 16101296, 12749610, --13466333, -14513768, -6378564, 24164560, -17940078, 7880728, 16940962, 4342749, -18099530, -6181532, -6586869, -10361609, 7168301, 1327145, 2974802, -15363098, 2394444, -12320114, -1566589, 12793634, -14189498, 12662637, -9913858, 12200391, 278099, -13215077, -3322694, 1044214, 15666430, -3452617, -2211371, 16083579, -4624606, -17676474, 25289304, -9154186, 14285061, 13673565, 1257889, 6251325, --11555073, -8796630, -28560996, 55121612, 5561983, 3552475, -21407728, 13210246, -1218697, 14859513, -11560978, 17284560, 2515240, 4787278, -8744553, 3220152, 16048145, -1014149, 9111773, -858457, -3400540, 3860102, 6969122, -6058052, 12379706, -7481833, 1843615, -857383, 4734128, -635655, -3147137, 9224516, 10522670, -4313221, 5124433, 2244121, -1303523, -3828427, 13796509, -3651259, -3638374, -3373697, 7679939, 238908, -5235565, 13236552, -7092602, -2554432, 4441533, -5890011, --2667712, -1705639, 1595044, -2173254, 1309428, -1109712, -2229625, 4514548, -7190849, 5337571, -4778688, -2828773, 6793028, -4223564, 7870528, -3448322, 2639258, 1151051, -2487323, 6245956, -1573032, 574989, -330176, 8217346, -8399882, 10279467, -5480379, 104690, 5028870, 10259603, --49938660, -124109520, 19110994, 94195072, 87552368, 151929632, -38958576, -40933724, -103700376, -141643184, --29268592, 50913616, 54628764, 102832256, 55902220, 4169876, -26845156, -72219336, -51225000, -9104257, --8065949, 25362318, 23738822, 13461501, 8740795, 6614787, -3820910, -17991082, -1386738, 20107964, -151934, 3970697, -1162326, -15654082, -11708081, -26396870, -25491168, 11218991, 10723996, 23310398, -36058396, 26603028, 13247827, 4388383, -38781944, -27874874, -21170968, -21701396, -23657216, 4565550, -15283641, 25951804, 33807300, 27448062, 6231461, -3692061, -22148072, -23193360, -13343390, -6988986, -2418067, 3384971, 7813083, 320512, -6987912, 2171106, -11278047, 5841693, 10340671, 1020055, -20393042, 24049670, 8260296, -3959960, -24847460, -32131724, -8114804, -99858, -733366, 0, -0, 0, 0, }, +-2595771, 1931662, 1451162, -2772402, 3333968, 2580739, -845035, 4555887, -33286, 1936493, +-6468221, 2427730, 2448668, -3367791, 6817187, 846645, 3335579, -469225, -832150, 406411, +4708895, 5187247, -5184026, -1624035, -2317135, 3388192, -1610613, -1233729, 746251, -2787434, +-4301410, 2321967, -4068945, 2324114, 2290291, 2280628, -90194, 1279900, -45634, 3339337, +-1170379, 514859, -3358665, -835371, -6404333, -3007014, 807454, 2289755, -277562, 3205119, +-303332, 1631014, -3988951, 1114007, 1969243, 2333778, 587874, -1815161, 158914, -874563, +1504849, 1756642, 754304, -155156, -1414655, -818728, 3273839, -850940, 1464047, 2817499, +1774895, -1525250, 3287798, 69793, 1025960, -1014686, -7168301, 204548, 5684389, 3911642, +3922916, 2477659, 1548336, -2237678, 68183, -2544768, 6071473, 3741454, 1439888, 898722, +854699, -55298, -1954747, 3015604, 4161287, 4056597, 2435783, -3036005, -4459250, -4807679, +-4634807, -442919, 2362769, -4689568, 3911105, -902480, 6864969, -1096290, 4344360, 119185, +-5773510, 1706713, -783295, 4707821, 272730, -460635, -2385854, -3834332, 304406, 2312840, +-5079873, -6771016, 4753992, -3867081, -3721052, -3337727, 2658048, -2593624, 1103807, -1068910, +-385473, -3881577, -1267015, -2569464, -4067334, 1533303, 3091303, -930934, -4457639, -607201, +-921271, -1932198, -3832722, 36507, -3097208, -3284576, -613107, 706522, 970663, -695785, +763967, 4295, 13517336, -4686883, -3054259, -4177930, -2852932, 336618, -8988830, 1543504, +-4438312, -8818105, -1845225, 7589207, -5400922, 1490354, -594316, 2552821, 3878356, 4102768, +6671158, -1409286, -3731790, 1692754, 1660542, -3035468, -372052, -2051921, -1265405, 812823, +-3397319, -2173790, -425202, -4377109, -5047124, 2615635, 4057134, -2362232, -5802501, -1045288, +-1282048, 821413, 4871567, 299574, -1860795, -335544, 6498823, 774168, -3776350, -3787624, +1786706, 1181116, 5235029, 2860985, -181462, -4895726, 433792, -324807, 4350802, -4518306, +-1320166, 2408403, 5050882, -1425392, 637803, -3743064, -1846836, 2180770, 372588, 389231, +1564442, -1532230, 2025614, 401579, 2427194, 1177895, 1090922, 8232916, 2658585, -9942849, +-2370285, -4713190, 4488241, 1108638, 63888, 3186866, -1961190, -7689602, -4084514, 5051956, +-328028, 5207111, -441308, -2997350, 5753646, 2151779, 12674448, -2425583, 5468567, 778463, +-6059125, 1482838, -5158793, 3272228, 1101122, 1271310, -5515275, 2697776, -1022739, -1950989, +2156074, 8639864, 3139621, -76773, -7042136, 6003291, -1363652, -1611, 4168803, -6356552, +-1287417, 4331475, -2699387, -2291365, -7260106, -7835631, -721555, 4683125, 2643552, -3172907, +-235686, 3027415, 3693135, 1479616, -969052, -1566589, -7036767, 3144453, 8297877, 3784940, +-2696166, -1304060, 2422362, 3936875, -631897, -1422708, 648540, -5827734, -1481764, -4204773, +-2390686, -724776, -3149822, 5934571, 4565014, -2663954, -7636452, 8121247, -7358353, 7399155, +-263067, -6248104, -14470819, -5816997, -4289062, 1946694, 7296613, 5667210, -1990717, -1339493, +-1927367, -4287451, -1365263, -4793721, 1394791, 1504849, 2654290, 4518843, 2610803, 8817568, +-150324, 1632625, -3348464, -927176, -2322504, 3125126, 829466, -4371740, -6227703, 68183, +-4515621, 366683, 3955665, -7033546, 4673462, -11711839, -3328600, -8731132, 1316944, -697395, +4295, -3521873, -4658429, 1435056, 3960497, 2769717, 959388, -7035157, 1983738, -4903779, +-1915555, -1512365, -9470403, -3802120, 2719251, 3488587, -399432, -6585796, 1046361, 2330020, +-1301375, -1395328, 736050, 5520644, 1993939, -1349694, -1815697, 917512, -13364328, 903554, +3357054, 3118683, 8958765, 9590662, -2385854, 185757, 6331319, -3193845, -3007551, 9477919, +-7153268, -16910896, -11126113, -6492380, 10210211, 4417374, 1416802, -9751723, 10405632, -4402342, +2909304, -2602213, 4072703, 5107253, -434865, 230318, -121870, -1584843, -5418101, -4228396, +-1366337, 682900, 4672925, 2800319, 7320235, 3652333, -3291019, -1586990, 6491306, -4594005, +7973607, -6307160, 1635309, 3686693, 2176475, -5078799, 6985765, -536871, 7502771, 10224707, +1396401, -3854733, -4058744, 4424353, -5015985, -10050760, -2829847, 2326262, -6774774, 3928285, +2804077, -1992328, -4339528, -1550483, -1847910, 2162516, -1109175, -5559835, -2552821, 10144713, +7584376, 4508642, -12319040, -11424076, -6917045, 11390253, 4972499, -609885, 640487, -4931160, +1258425, 4396436, 6654515, -782221, 2319282, -11482595, -4146254, 1429687, 3391951, -14142254, +-1929514, 5541582, -4553739, -9330280, 5166846, -10787884, -8051990, -4502200, 494995, -4151623, +-2988224, -707059, 7318088, -6940667, 1293859, -2448131, -3159485, -5894306, -1956895, -8435316, +-2838437, -593242, 1108102, -5998459, -1629403, -3910031, 73014, -2160369, -2949569, 1145683, +5920613, 1285806, -3768834, 2837363, -5316633, -1530082, 1403917, -2166811, 2707977, -1344862, +-828929, -22712860, 1009854, -8061654, 3306588, 2957085, 4454418, -12608950, -13093745, 1436130, +-86436, 2690797, -464930, 6474663, -3295851, 3433290, 3899830, -2340220, 9859097, -3452617, +-7613904, -1580548, -6572374, -266825, -12381854, 129923, 3819300, 8800388, -17391934, 4819490, +844498, 5002563, 7130720, 1432372, -6715718, -14742475, 1123134, -5849746, 11371463, -4422206, +2371359, 1023276, 2440615, 8754754, -3766150, -39192, -3971234, -1999844, 2209761, -1910724, +7978976, 6227166, 1660005, -1432909, 41339, 5645735, -638340, 2881923, -227633, -4121021, +3788161, -822486, -3455301, 5066451, 7865159, 361314, 2953864, 913754, -5535676, -2958159, +9514963, -4332012, 4402879, 7491497, -9710384, 7124814, 3273302, 3830037, -4538170, 7324530, +1591285, -744103, 8379481, 788663, -592169, -3652333, -2891587, 491237, -4459250, -8915815, +-3157875, 10163503, 6498823, 8476655, -1758789, -7780870, 2455111, 10704669, -3087008, -6520297, +-1843078, -4364761, -3263638, 1611, -8160438, -2297808, -13252658, -3759707, -7631083, -9002251, +-8553964, -2912525, 11818139, 12887586, 17648558, 4089883, -6569153, -3940633, 14617384, 122407, +-3278134, 11292543, -1066226, 666257, -17272748, 8035884, 4451197, -11401528, 16131360, -2050847, +7280507, -1762010, 3830574, 7325604, 66035, 12806519, 4879620, 3769371, -1429687, -4285841, +1232656, 7832410, -2039036, 2457258, 3581466, 10309532, -485331, -2882460, 6503118, -7488813, +-4854387, 3642132, 11124502, -4785131, -6055904, -1728724, 9127342, 238371, 1203128, -3296388, +-1691143, 3436511, 4719632, 547608, -4133906, -12637941, 1326071, 3829500, 11914776, 3572876, +-1219234, 9327058, 16369731, -3460670, 5523328, 3831648, 6554120, -1536525, -6218576, 2997350, +-14797773, 21623550, -10346039, 5213017, -431107, -6927782, 16539919, 4221416, 2349884, -16695612, +4775467, -6396817, -7464117, 2341831, -7284265, 9110699, 5552856, -992137, 2041720, -3717294, +-1593433, -5731097, -3704946, -6968048, -11246372, -2325725, -7788387, -1635846, 4669703, -2715493, +-4071629, 9697499, 6008659, 9748502, -7253126, -249645, -1250372, -7640210, 337155, -3752191, +-20304458, 2459943, 620623, -2495913, 7379291, -37581, 8113193, 7400766, 2703145, 13130789, +11245835, -10073846, -2737505, 916439, -159988, 4728759, 1722819, 11414412, -1999844, 17736068, +228170, -8920110, -7780870, 2318746, 3299609, 4519380, 12491912, 4343286, 3361886, 12662100, +15622407, 1847373, -8980240, -7669738, -337155, -1943473, -1361505, 16207059, 13205951, 1444720, +9046275, -8927090, 4657892, 1232119, -248571, 6158446, 13922673, -3224447, -781147, 12908524, +-15967615, -8636642, -6726993, -18277770, 4130685, -5432597, -2210835, 2797098, -12391518, 14609331, +11039677, 15497316, 7138236, -8716636, 1319092, 1191317, 11615202, -1453846, 85362, 195421, +-6487548, 1207960, -3624416, 6919193, -6897718, -2086817, -2012192, -2457795, -8139500, 4809290, +-12149926, -1142461, -384936, 8766565, 5223754, 1924682, 678605, -1301375, 1490891, 1087164, +7186554, 2553358, 2540473, 43487, -19120658, -8024073, 3017752, 9478993, 10621454, -14114336, +11243688, 4611185, -5132486, 3200825, 4472135, -1738925, 16333224, 2381023, 4482335, -867583, +-18861886, -3827890, -6599754, 2095944, 18852222, 2544231, 7288560, -12229919, -11138998, 5545340, +9509058, 643708, -4128001, 18089328, 5290326, -454193, -5728950, 3529926, -2018098, -2579665, +-1270774, -3716757, 288837, -6705518, -15352361, 4363687, 933619, 4005594, 879931, 7719130, +1910724, -9320079, -18571976, -5906, 753230, -1911261, -16329466, -8136279, -2962454, 3960497, +-4031364, 1326608, -14359686, 245887, -3671123, -323196, 784905, 3423089, -2078227, -13333726, +-12504260, -7788387, 4415764, 3352759, -3758097, -3013457, -21343304, -12051141, -988379, -20522964, +18082350, -19359566, -5795522, -12582644, 19468550, 6252936, -14581414, 6978248, -2095944, 7518341, +-12410845, -3934727, 185220, 8270497, -11618423, -4294431, -3912715, -11179800, 1148904, 8171712, +62814, -2117419, 16080358, 36358508, -6022081, -12695923, -11906723, -10695542, -14806900, 1217086, +-24514062, -1292785, -19158238, -9521942, 4671851, 10306848, 5624797, -9335648, -2044941, 9711995, +-1656247, 11368242, -8378945, -8752606, -7553237, 4694936, -5273146, -6975564, 1136019, -8138426, +-7863548, 7211250, 19229642, 6256694, 7738994, 2452426, -12677133, -4188130, -10441602, -10489921, +-2279017, -3094524, -8377871, -13566728, -25096030, -3796214, -9640054, 1572495, -5313412, 7472706, +7595650, 3116536, 7984344, 4483946, -1777580, 15209016, 23390928, 3944928, -29263760, 3850438, +-5977521, -18646064, 1398549, 6005438, 3082176, -1520955, 6796786, -2861522, -14602889, -1756105, +5242008, -16392280, -8437463, -15894063, -25093346, 14771466, 617938, -856846, 26884884, -21044802, +23127862, -2617246, -3574487, -12731357, -5216775, -12636331, -10997264, 12152610, -12102144, 6020471, +27761594, 10078678, -5065914, -13424457, -11683922, 12226161, -11306501, -18138184, -8182450, 1313186, +732292, -20615844, 442382, -6583648, 9477382, -6827388, -1356136, 1873143, 28934120, -7718056, +-10742787, 14122389, -12794708, 17059074, -11484206, 12373801, 844498, -9701794, -9839770, 15826418, +-22449258, 15559593, -10567767, 1185948, -6623377, 8280697, -8951249, -4190278, -2071785, -6970195, +28735478, -9330280, 18874770, 7558606, 7405598, -741956, 5554467, 12765717, 12465069, -4843113, +-17389248, -734439, 9293772, 4057134, -5717675, -19462108, 20500416, -6535330, -20952998, -6350109, +-15785615, 4963372, 2663417, -31549220, -13641890, 18881214, -4089883, -8140574, 21984326, 1851668, +-11879880, 8172249, 11827803, 10012643, 1302986, -19502910, -8250096, 2668249, 2532420, 9785546, +6342056, 11075110, -10134512, -8016020, 3493419, -2923262, 8977555, -18333604, -3380139, -19807852, +-6646462, 3295314, -3023120, -2698850, 20593294, 4119948, -15845208, -2588792, 901943, -16078747, +-2497524, 547608, 9167608, 23834922, -8904004, 7819525, -13804025, 1800665, -8286066, -10392747, +9412421, 20824148, -17085916, 1394254, 18324478, -8684424, -2168959, -7255274, 11814918, 2740726, +-15717970, -409096, -5826123, -5172751, -2044941, -7719130, 10796474, -27188216, 5109938, 2011118, +-11978127, 14838575, 22457310, 16073378, 43353400, 13094282, -12107513, -15927349, -13743358, -7311645, +19598472, -53734336, -4365835, 26951994, -41360000, -4142496, 5371931, -42715060, 15752866, 2522757, +30021284, -5644124, 9118216, 7096360, -37799472, -31848794, -13755707, -5333276, -20083268, -24360518, +-13883482, 17641042, 11816529, 9650255, -1046898, -343061, 4010963, -1407139, -28153510, -12350715, +-35486092, -13322452, 16065325, 2696703, 10036802, 38735772, 8329016, 12791486, -3182571, 5324686, +34071976, 24474872, 5069135, 14912663, 13928042, 33296198, 27308476, -43201464, 22151294, -5714991, +21000242, 20677046, 7160248, 40111772, 35706748, -25316684, 16001438, -4425964, 14956687, -36455144, +-373662, -1207423, -2505577, -12276090, 16366510, 16551730, -25588342, -13220983, -17203492, 981400, +-22906672, -29774324, 14598594, 25603910, 5660230, 23516556, -19508816, -16047608, 24192478, 43322800, +-5545340, -58223112, -18435610, 6421513, -4304631, -9252433, -12616466, 707596, -33306398, -19567334, +-27633282, -3910031, -7936026, 9914395, -19697256, -5046050, 5531918, 10031970, -74625, 11126650, +20409148, 4999879, 29368986, -17973364, 7164006, 2092723, 27999428, 8291435, -5374615, -27062052, +18758270, -3736085, 25520158, -20196010, -16902844, -14937896, -8573292, -24559160, -3512747, -3054259, +-24330990, 14950781, 27790586, -11792906, 4146254, -34285112, 34673808, -9045738, -18845242, 17852032, +13852880, -18411988, 1806034, -10461467, 4532264, -6811282, 43350180, 1247688, -3764002, -7550016, +76472968, 5449777, -10540387, 36725728, 26072598, -23349590, 21264384, -28882582, -19768660, -29365228, +25589416, -16546898, 9281424, -17470316, -79812304, 4688494, 49704044, -31556736, -21400748, 39766028, +-30598958, -2843805, -9408663, 38145216, -68088120, 36592584, 21239688, -19830400, 5976984, 35741644, +25125558, -13717052, 13925895, 5838471, -11274289, 16352551, -1434519, 9574019, 14782741, -7631620, +2747169, -2575370, 6469295, -10568304, -8920110, -1480153, 12494060, -40634684, -20817170, 18928458, +-5604933, -27230092, -32298154, 4537096, 37601364, -17675402, -25930866, 18194556, 27732604, -7194607, +6080063, -5988795, 25730076, -15515569, 39170640, -6366752, -1141388, 21202106, -756451, 4145717, +-29913374, 44094280, -24537686, -29246580, 20164872, -30959198, -11118060, 3919158, 13673565, 40430676, +-15999827, 24646670, -6497749, 12137041, -71725416, -55576876, -11108933, -22818088, 9442486, -8220568, +-28844464, -14833206, 16718697, -35268124, 29520920, -30371862, -37665788, 17396766, -19605988, -13846975, +17547626, -17590576, 14175003, -14319958, 5086852, 37127308, -38141456, -4882841, -8260296, 30944166, +1583769, 838592, -34565360, -31955630, -13550622, -10933376, -7665443, -11815992, 2764885, -496606, +-6392522, 2712272, 3915937, 1226213, 2260764, -8278550, 12207908, -12248710, 11469710, -30253750, +-2482491, -24895778, -33088428, -19515258, 35622460, -19005768, -21009906, -14902463, 5188858, -9868761, +13529147, 23434952, -30779884, 21913460, 76773, -38904888, -22852984, 74364136, 35057672, -59796684, +-15623480, 34827352, -23602456, -23036058, 9556839, -20174536, -45554572, 26752278, 7093139, -56418692, +15808164, 25257628, -39423504, -24079198, 23270670, -13219909, 49299244, 69224672, -25769804, 77299744, +-4572530, -19575388, -14631880, -24543054, -663572, 13931263, 46388332, 2667712, 15393700, -10302553, +-37060736, 1780264, 3080565, 26506928, 6549825, -28266254, 56116432, -22290344, 11951283, 25324738, +-25252260, -21144660, -36774584, -16127602, 25827786, 30535070, 38766912, -13160317, -87936768, 20630876, +49086108, 60865056, 53932980, -215822, -23539642, -31385474, 13171591, 31204548, -17243220, -9934259, +-77296528, -48467096, 45354316, 72424960, 17375828, -1719061, -14830522, -31347892, -4625143, 20137492, +-25046638, 11004780, -980863, 45574436, 1162862, 17685064, -85895584, -11518565, 4518306, 54460184, +46052788, -1582159, -22860500, -7961796, 69280504, 28643136, -71961104, -95806224, -31981938, 17599702, +152848224, 14198088, -18853296, 19127100, 7221451, -12622372, 31053150, -36381056, 791885, -14755897, +7996692, -22572738, 20631412, 5643050, -12320114, -22716618, -11513197, -4399121, 6128919, -30897994, +6641630, -15152108, -6361921, -24159192, -11871826, 19549080, -21110838, -7252589, -3386045, 9612674, +5887327, -7931194, 10473815, -17540646, -2030983, 367757, 8828842, -11381126, 16101296, 12749610, +-13466333, -14513768, -6378564, 24164560, -17940078, 7880728, 16940962, 4342749, -18099530, -6181532, +6586869, -10361609, 7168301, 1327145, 2974802, -15363098, 2394444, -12320114, -1566589, 12793634, +14189498, 12662637, -9913858, 12200391, 278099, -13215077, -3322694, 1044214, 15666430, -3452617, +2211371, 16083579, -4624606, -17676474, 25289304, -9154186, 14285061, 13673565, 1257889, 6251325, +-11555073, -8796630, -28560996, 55121612, 5561983, 3552475, -21407728, 13210246, -1218697, 14859513, +11560978, 17284560, 2515240, 4787278, -8744553, 3220152, 16048145, -1014149, 9111773, -858457, +3400540, 3860102, 6969122, -6058052, 12379706, -7481833, 1843615, -857383, 4734128, -635655, +3147137, 9224516, 10522670, -4313221, 5124433, 2244121, -1303523, -3828427, 13796509, -3651259, +3638374, -3373697, 7679939, 238908, -5235565, 13236552, -7092602, -2554432, 4441533, -5890011, +-2667712, -1705639, 1595044, -2173254, 1309428, -1109712, -2229625, 4514548, -7190849, 5337571, +4778688, -2828773, 6793028, -4223564, 7870528, -3448322, 2639258, 1151051, -2487323, 6245956, +1573032, 574989, -330176, 8217346, -8399882, 10279467, -5480379, 104690, 5028870, 10259603, +-49938660, -124109520, 19110994, 94195072, 87552368, 151929632, -38958576, -40933724, -103700376, -141643184, +-29268592, 50913616, 54628764, 102832256, 55902220, 4169876, -26845156, -72219336, -51225000, -9104257, +-8065949, 25362318, 23738822, 13461501, 8740795, 6614787, -3820910, -17991082, -1386738, 20107964, +151934, 3970697, -1162326, -15654082, -11708081, -26396870, -25491168, 11218991, 10723996, 23310398, +36058396, 26603028, 13247827, 4388383, -38781944, -27874874, -21170968, -21701396, -23657216, 4565550, +15283641, 25951804, 33807300, 27448062, 6231461, -3692061, -22148072, -23193360, -13343390, -6988986, +2418067, 3384971, 7813083, 320512, -6987912, 2171106, -11278047, 5841693, 10340671, 1020055, +20393042, 24049670, 8260296, -3959960, -24847460, -32131724, -8114804, -99858, -733366, 0, +0, 0, 0, }, }, { { 7204808, --112206, 2781528, 3014530, 1069447, 1095217, 1584306, 2418604, 4501663, 2129230, -317828, --1715839, 302258, -2369211, -2297808, 426812, -415538, 963146, -445066, -933619, -2509872, -3289408, 670015, -118648, -4460861, 390305, 3133179, 4474282, -2950643, -650151, -817118, -2281165, -329102, -152471, 1020055, 359167, -621697, 1668058, -1816771, 807991, -4531191, --3287798, 1495186, 1793149, 6454799, -2423435, -2421825, -1366873, 2668785, -2049773, -3800509, --2625836, -4480725, 494458, -2971581, 2694018, 3472481, 849867, 1490891, -2051384, 1344862, --309775, -5009006, 5896990, 3970161, 2848100, 1022739, -1912334, -848256, 2512019, -1515050, -765578, 284542, 177167, -436476, -1467805, -4156992, -5884105, -124554, 1229434, 925565, -4115116, 505196, -562104, -2726767, 6068252, 3742527, 144418, -791348, 6024766, 2028835, --2000381, -5366562, 3344706, -1568200, 2582886, -5105643, 265751, -1241782, -3834332, -1048509, --1962263, -725850, 222801, 3221, -2816962, -1707786, -505732, -546535, -1780264, 1817308, --247497, -1841467, 3187403, -5433134, -2648384, 2584497, -3333968, 446677, -2100776, -2976412, -1944547, 1844152, -1680943, 2046552, 3839164, 2224256, -2123861, -2362769, 337692, 796716, --2494839, 2631741, 4230006, -3653407, -1283658, 2177549, 1484448, -822486, -1247151, -1734093, -2259153, 810138, -2997887, 3355980, 1426466, -2538326, -2185602, 3593814, -2806224, -3047279, --6527277, -4979478, 2285460, 7984881, -558883, -1377611, -3003793, 5187784, -2471754, -79457, --3871913, -4116189, -5260798, -2346663, 4438849, -4197794, -1478543, -1331977, 1647120, -873489, --5892159, 3387656, 1681480, 12014097, -1041530, 5752035, -940061, -44023, -376347, 862215, --2328946, 4821638, -1045288, -651761, -2602750, -229244, -835908, 7351911, 1458678, -423591, --6480569, -375810, -1131724, 2310156, -4069482, -843424, 1278827, 1284195, -1027034, -363462, --2480344, -623307, -3010235, -1037772, 6235756, -1401233, 2063195, 3821984, -695248, -2880849, --4225174, 1592359, 1147830, 1804960, 2830384, 3731253, 2763275, 2090575, -1090385, -562104, --1284732, -5459441, -1357747, 119722, 3063922, 3373160, -1449552, 838592, -10471667, -2663954, --354872, -2349884, -1682554, 3474629, -7407208, -6216965, -3716221, -2509872, 872415, 8017094, --1931662, -149250, 816581, -5973226, -1694902, -5006322, -922881, 8512088, -835371, -4319127, --2901787, -5906, 1590749, 1619203, -2594697, -11043435, -5407901, -1565516, -4394826, 292058, -25233, 4338454, -3032247, 3848828, 787590, -2104534, -6030671, -4978941, 6610492, -5672041, -3555159, 1031329, -3764539, -1398012, -3378529, -2345589, 3026878, -6053220, 2949032, 1036698, --258772, 998580, 263067, -598611, -20938, -3036005, -4336307, 330712, -1422171, -3041911, --1390496, -4710506, 5419175, 3893925, 832150, 4664872, 419833, -1783485, 5534602, -2784213, --1966558, -1656784, 4214974, -3796751, -6864432, 8580808, 9738838, 2712272, 2688650, -2701535, -4601521, 2313914, -5536213, 1818382, 3747896, -6696928, -5765994, 5962489, -5029407, -712428, --3188476, 5998459, 1449015, -656593, -2042257, -23085, -3706020, 3608846, -1760937, 2187212, --752693, -24159, 4069482, 1528472, 742493, -1506460, 4008815, 2408403, 1347009, -339302, -4158602, -324270, 953483, -2505040, 5040681, 1051193, 2167885, 3479461, -9367861, -3165928, --1621350, -3490735, -3063386, 932545, 5680094, -2370822, -1115618, -2998424, -983011, 1102196, -2716030, -6694781, -29528, 2248416, 659278, -598611, 3292629, 1799591, -5780489, -1821603, --889058, 3760244, -3593814, 5342940, 6411850, 2982318, 1792075, -2840584, 494995, 374199, -10348187, -2325725, -493384, 3561602, 2187212, 1549410, 3264712, 9150428, -2988760, -1214939, --9487583, -163209, -8200703, -10316511, 14496, 3902515, -13219372, 4024384, 3870839, 1961190, --4252555, -3441343, -4607963, -1969779, -95563, -81604, 3751117, 5054640, -1086090, -5682779, --3577708, 3644817, -6070400, -3210488, -5185636, 678068, -8167417, 3526705, 267362, -901943, -904628, -629213, -2142652, -375273, 4677757, -6197101, 6679211, -5737003, -982474, 897111, --3906273, -3304977, 2389076, 938987, -1489280, -3144453, 4880694, 1750736, -4034048, -7786776, -472446, 1227287, 3909494, -668404, -2285460, -144418, 1879048, -2291902, 9795747, -4000225, --2075543, -7917772, -5262946, 10783589, 4173635, -3410204, -1358820, -1163399, 2556579, 6507949, --9584756, -5798743, 6031208, -5178657, -5533529, -5987185, -7141994, 4491462, -2115808, -541703, --1968706, -80531, -7915625, -1821603, 2997887, 3429532, 417149, -4265440, -6188511, -5072357, --6510097, 937377, 6787659, 691490, 1888712, 2206540, 1957431, -4516695, 3998615, 2522220, --3649649, -2804077, -10289668, 1282048, 1720671, -7930120, -1087164, 2170032, -1926293, 765578, --1176821, -8448738, 6556268, -7865696, 5579163, 189515, 2570538, -8796093, -5340792, -7867307, --6612102, 1058710, -2668785, -2807835, -3934190, -42950, 3390340, -7175280, -592706, 2138357, --2783139, -7923141, -5467494, -1535451, 1083406, 4090956, 1293322, -6332930, 6700686, -1920387, --1786170, 7441031, -9164923, -2641942, 14674830, -12155831, -6152004, -7948911, 6607271, 2749853, --3760781, 3303367, 486942, 8870181, 1100585, 507880, -7552700, 6157910, 9917616, 10172093, -8744553, -4139812, -56371, 1635309, -4537633, -3183645, 2042257, 952409, -6787122, -3315715, --2434173, 4003447, 177704, -5318244, -1832877, 2189360, 5293547, 878858, -745714, 388695, --3123515, 199716, 635655, 918586, -7646653, 5302674, 6845641, 1515050, 4028143, 3808026, --5901822, 10217190, 10012106, 1951526, -5047661, 3847217, -1006096, -8861591, -1093606, -2580739, -1165010, 884226, 1206886, -5210332, -3483219, -11050414, -7937100, 496069, 7432441, -4833986, -4235912, 1160178, -1550483, -8831527, 1263794, 5935645, -1134945, 5447629, 12472048, 3576097, --278636, -13079249, 1865090, -4615479, -17659294, -13497472, 3926137, 552977, -2672007, 3647501, -9160092, -964757, 5675800, 5040681, 3150896, -971200, -4241817, 4263292, -3537443, 900869, --2964064, 5856725, 10444824, -8539469, -2083596, 971200, 4122095, 1382443, -2277943, -1211181, --2816425, 159451, -3600793, 5682779, 1695975, -5875516, 7554848, -6600291, -1687922, 9025874, -8149701, 6822556, -6721087, -4362076, -5947993, 8019241, 10888816, 286152, -1508070, 8599598, --11375758, 1926830, 3874597, -705448, -9420474, 9543417, 3877282, 5083631, 9243306, 929324, --11436424, 3681324, 5771363, -2625836, -104153, 8895951, -7864622, -7659001, -6172405, 1368484, -11740830, 6368363, -599685, 12899934, -15493021, -5612449, 1128503, 8115878, -14280229, 14985678, -6248641, -79994, -1228898, 1518808, 2790118, 8253317, -1253057, 1166084, -2294586, -1552094, -4746476, 2607045, 5465346, 2588792, 3255048, -9648644, -3884798, 16973710, 1919314, 5251672, -7232725, 2925947, -5436355, -10193031, 3475702, -4081830, 598074, 3981972, -5024575, -5847061, -7667054, 9069360, -4395362, -2961380, 6969122, -8069707, 3818226, -6147709, 3043521, -5943698, -9171366, 1535451, -1072131, 3451006, 15634218, 4549444, 6110665, -1490354, 871342, 2902324, -11528229, -744103, 16476568, 730681, 7832410, -48855, 14835891, 5477157, 11048266, 8619999, --1916092, -4749697, -1421097, -5460514, -6376953, 8904004, -1927367, -3180960, 1112933, 371515, --4783520, -1852742, 831076, 4374424, -16106, 16619376, -4907537, -607738, -21442088, -1221381, -10838350, -6373195, 9379672, -13880797, 1570884, 823023, -744103, -18274012, -1141924, -30107184, -1066763, -3828963, -12690555, -2745558, 1360968, -7089918, 842887, 6849399, 883153, -7405598, -1007170, -2753611, 6321118, -7952132, 207232, 8779987, 1937567, 66572, -1593433, 6524056, --4836133, 537, -169114, 4790499, 958851, -10783052, -5409512, -7869454, 8173323, -19543712, -8993662, 6546604, 6364605, 2648384, 1398012, -9129490, 5862094, -13096966, -2801393, -3569118, --2410014, -1599875, 908386, 2781528, -9131100, -4815732, 15946677, 5374078, -5440650, -7932268, -2064269, -4106526, 5224828, -4610648, -431644, -6588480, 14927696, 5657009, -3983045, -817654, --5860483, -163746, 11052025, 11154567, 6585796, 5876052, -5074504, 6503118, 10771241, -7629473, --16106, -20104206, 11890080, 8088497, -2607045, 4845797, -1014149, 1757715, 7532836, -4415764, -11623255, -10090489, 1301912, 12840342, 5906654, 870268, 10168872, -3405909, 4861366, 2651069, -5621039, 8748848, -4782983, -1014149, 16425029, 8040179, 26307, 2212982, -10492605, 14754823, --12046310, -823023, 13341242, 3958886, 14340896, -8820252, 2652679, -663572, -2982318, 1749125, --13021267, -9582072, 13127568, -6484864, -2264522, -4482872, -13849122, 9942312, -2903398, -2619930, --5859946, 5970542, 15031849, -11778948, -1831267, 9451612, -10252087, -5091147, 9292699, 11783780, --19648938, -5878200, -1148367, 8074539, 329102, 9459129, -1703491, 10324028, 22167936, 4070555, --13470091, -4991826, 4184909, -29671244, 725850, -114890, -4791036, -1748589, 13398150, -22498112, -4712653, 10038949, -8310225, 8847633, 17002164, 3896609, -15967615, 3922379, -4102768, -665720, --15628312, -5081483, 14077292, -1995549, 12914967, -3835943, -4609574, 1693828, -11032160, -6624987, --7937637, -6328098, -4333085, 10122164, -11700565, 1412507, 20482700, 13303124, 4658429, -21320218, -3521873, 13101261, 5797132, 249108, -7306813, -9612674, -22065932, -15941845, 3332895, -8217346, --7398618, -1090385, 9708774, 6038187, -6415071, -418222, 13795435, -5937256, -1938104, -163746, -18142478, -140123, -429497, 8167417, 3365107, -21092048, 6296422, 4910222, 651224, -17679696, -7956427, 8913131, -6301254, -5398237, -6444062, 23307714, 1445257, -4518843, -137439, 10375030, --4744865, 2955474, -2295123, 2542621, 8975945, -15881715, 17105780, 19245748, 5599564, 8195335, --6268505, 10937671, 25425132, 891743, -2660732, -4581657, 10958072, -3754338, -5866926, -2093260, -4038343, -12533788, 5820755, -11055246, 12883828, 2859375, 12972412, -8027831, 11843372, 3401614, -15427523, 2439542, 3429532, -5541582, 9688372, 2241973, -2780455, 13492640, -5104032, -9915469, -19516868, 15178414, 5888937, 14296336, 21314848, 25301652, -7789997, -8377871, -8878771, 2800856, --11621645, 13415867, -1599875, -1791001, -19598472, 3976066, 22400402, 22069690, -857920, -3765076, --15638513, -657667, 14753213, -8621073, -9395778, 7161321, 1089311, -9547175, 2527588, -3046206, --31339302, -22196390, 10095321, 3317325, -16943110, 645319, 5959267, -15472083, -10194105, -7221988, -16181826, 6779069, 4418985, -6444599, -5335960, -5306432, -11887933, -15283641, -26422638, 12253005, -10126996, -6269042, 27384712, 12824772, 26235808, 17933636, 566399, -9645423, 6065568, 2514703, -11256036, 13482976, 14605036, -3103651, -4020090, 5930813, -8404714, -2460480, -7568806, -12627741, --20730196, -6450504, 18523120, -5674726, -9211631, -11968463, 6568079, 11254962, 6658273, 60130, -10337449, 22043382, -14924474, -6895570, -11808476, -8271034, -23296440, -6040335, 4172561, -10642929, --9183714, -25906706, -37340444, 3303367, -25065430, -37917580, -28335510, -11971684, 22811646, 7727183, -13450227, 10420664, -26060250, -11148661, 1091459, 11742977, 2432025, -58782532, -10126459, 17395154, --20685636, 6897718, -8684424, -32466732, -10762651, 32293322, 41192496, -23629300, -193274, -8970576, --35380868, -28691456, -26844620, -28949690, -15702400, -19383188, -2393908, 4551592, -5697811, 5665599, -5632313, -12730283, -3948686, -16972638, 5688684, -25923886, -22842784, 3779034, 3001645, -8201777, --8856759, 17606682, -6412386, 25026774, 5142687, 23044648, -17442936, 9068287, 6266894, 28183038, -15288473, 8718784, 2181844, 2714956, -4204773, 6928856, 11676942, -11581379, -14123463, 18973018, --3506304, -28286654, -50997368, -62699008, -44290776, 5106716, -644245, -58655832, 17779554, 7332583, -13578539, -21587580, 1890859, 4254165, 1957431, 26559540, 28943248, 56655988, 19008452, -33475512, --40960568, -25614648, -10871636, -5327370, 31766652, -9302899, -61653720, -18134426, 49786188, -7658464, -10725607, 6459631, 8926016, 16891570, 13987635, 4288525, -10381473, -4466766, 2115272, -11659762, --2886218, 17681844, -16866874, -10664941, -16877074, -4802311, 2593087, 1284195, 4165582, 7786776, --12807056, 10376104, 27387396, -1372779, -16197395, 584652, -10602127, -4517232, 16294569, -18131742, -1947231, 4548907, 20019916, 28038620, -18318572, -11399917, 11340861, 651224, 3343632, 2473364, --11975979, -32054952, -5287642, -15369540, 28714004, -54707684, -35020628, -15380815, -5404680, 14812268, -3797825, -19715510, -2593624, -22529788, -22975390, -8983461, -16332687, 2760053, 14925011, 64623688, -12985834, -9461276, -40586368, -33590404, 11337103, 519691, -38021196, 24607478, 20038706, -23132694, --74254080, 8606578, 9416179, -4109747, -3031710, -7264401, -22758494, 6530498, -6534256, 35327180, --40123048, -9394704, 36915244, -3383897, -28401008, -4803921, 20856362, 26397942, 14991583, -6546067, -17772574, -16627429, 11229192, -7629473, -7518341, -14551349, 19512036, 13460964, -16777216, -8021389, --4630512, 20810190, -4714801, 955630, -16973174, 13589813, 6950331, -17846662, 27004606, -31675, --29830696, 22373558, -32254668, -16743393, 23396834, -58061516, -39458940, 29514478, -23032836, 21544630, --39556112, 6704444, 9432822, -21086678, -3194919, -2872796, -41288056, -9933186, 33911452, 39131984, --50754164, -16629040, 8971650, -38284800, 42135776, 46309412, 747324, -69804496, -42710764, 71041984, --46331424, -9471477, 49183280, -36859408, -83799104, -19746112, -10308458, -39837432, -37553584, -932545, --47378320, -13984414, -20122458, -19001472, -14273250, 30843770, -3306588, -9846749, -12911745, 6040872, --16521665, -39528196, 30778272, 9649181, 26636850, 8296266, 27571542, -10879689, -16662862, 6070937, --28336046, 22232898, -25603374, -5479305, 17432198, -19659676, -3761318, -11932493, -30949534, 4745939, --23220740, -17073568, -20156282, -15283641, -8884677, -20991116, 4329864, 23400056, -15112379, -5528697, -3609920, 21619254, -9008157, 7768522, -21194590, 35997732, 12121471, 15592879, 10801843, 34637836, --946503, -39997956, 10060424, 15105937, -9970230, 420907, 22597434, -27394912, -26382910, -31738734, -29728154, 9398462, -38343856, 16963510, -24541444, -3422015, -35264904, 18900540, 29030220, 8841190, --38408820, 28485834, 35479116, 66463008, -15730855, 33053532, 6616934, -15467251, -29387776, -17082158, -38776040, -12458626, 7397545, 15124190, -3650722, 35686884, -4978941, 28033788, 29393682, -35623532, -18690088, -9228274, 1127966, 13252122, 11148661, -1093606, 6075768, 10739566, 35940288, 36798208, -28566902, -20607790, -6802692, -48661444, -1209033, 11615739, 22267258, 5171141, -40094056, 17766132, --23972896, 31391916, -28039158, -19689740, 2263448, -23577760, -3854733, -13576928, 48371532, -26250304, --12738336, -50415400, -16307454, -26419418, 71393632, 43459700, -15000173, -47925928, -51549808, -30478162, -35352948, 46446312, 23240068, 7007239, -62186296, -28488518, 19750408, 17598092, 1856500, 22650584, --14041859, -40368936, 17459042, -68720016, 72318656, -6886980, -53119080, 112036904, 7449084, 2794413, --28978144, 20222316, -41081900, 26015154, -16655346, 42458972, -18571438, -1648731, 24453396, 4565014, -2574833, -10580652, -8916889, 1362578, -15629386, 18030272, -1544041, 19115826, -14253386, -14373645, -5539434, 949188, -14413910, 9648107, -1272921, 8427263, -3962644, -3903589, 8562017, -7393786, -89121, 5997922, -2325725, -3498788, 30663920, -1981591, -9206799, -5306432, 15040439, -1274532, --15396921, 8638253, 18429168, 3498251, 1406602, -10428181, 4723391, -8499203, 9132711, 21097954, --6359773, 9508521, -6742025, -2660732, -7408282, -4496294, 7092602, 6444062, -10799158, 6948720, -4009352, -2250026, -10431402, 1290638, 6757594, -10270341, 15916612, 9829033, -19437412, 3928285, --16994648, -25865366, 20564304, -11812234, 25107306, -23795192, 52173652, 10334228, 13291850, -5957120, -5348308, -908922, 10407243, 3665755, 22619446, 2089502, -11266236, 7808251, -7116761, 3954591, -5170604, -9522479, 1213328, 2990908, -10212895, 10490994, 3246459, -3926137, 14071387, -4235375, -5996848, -3550864, 3213709, 3082176, 1955821, -1152125, -3207804, -1300838, 2626373, 849867, --1459752, -5986648, 5633387, -3856881, 3215320, 4773320, -3639448, 1444183, -3330747, 1685775, --5749351, -10195179, 11891154, -5443334, -1980517, 5158256, 3053722, -1414118, 2179159, 9946607, --9505299, 4978941, -2959233, 8660802, -7770133, 5434744, 3524558, -1129040, 3035468, 611496, -1294933, 4402879, -4298189, 3483755, 4128537, -1196685, 1000191, 7425999, 730144, 2587718, --5856725, 11105175, 9595494, -45953464, -113883744, 24428700, 94386736, 63797980, 133190696, -43737800, --37487548, -76841256, -122850560, -12215961, 38009924, 50306952, 65538516, 33083060, 3400004, -10813654, --28681792, -40606768, -6401649, -10872710, 3726421, 9281424, -760209, 2323041, 4616016, 2171643, -15763067, 19079318, 11543798, -2165737, 1884417, -14078903, -29942902, -31509490, -15815680, -20636244, -16694001, 31496068, 32983738, 36703716, 19690278, -5812702, -14844481, -26782880, -28825674, -19608674, --11524471, -1114007, 6757594, 13990856, 14387604, 12676059, 10297721, -1607392, 2433636, -2910914, -961536, -2086817, -1940252, -512712, -10555956, -10171556, -8129836, -15466714, -452045, -2456185, -1549946, 27749784, 35264364, 12904766, 11763379, -8578660, -19718732, -11546483, -22576496, -11243151, -2200634, -286152, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-112206, 2781528, 3014530, 1069447, 1095217, 1584306, 2418604, 4501663, 2129230, -317828, +-1715839, 302258, -2369211, -2297808, 426812, -415538, 963146, -445066, -933619, -2509872, +3289408, 670015, -118648, -4460861, 390305, 3133179, 4474282, -2950643, -650151, -817118, +2281165, -329102, -152471, 1020055, 359167, -621697, 1668058, -1816771, 807991, -4531191, +-3287798, 1495186, 1793149, 6454799, -2423435, -2421825, -1366873, 2668785, -2049773, -3800509, +-2625836, -4480725, 494458, -2971581, 2694018, 3472481, 849867, 1490891, -2051384, 1344862, +-309775, -5009006, 5896990, 3970161, 2848100, 1022739, -1912334, -848256, 2512019, -1515050, +765578, 284542, 177167, -436476, -1467805, -4156992, -5884105, -124554, 1229434, 925565, +4115116, 505196, -562104, -2726767, 6068252, 3742527, 144418, -791348, 6024766, 2028835, +-2000381, -5366562, 3344706, -1568200, 2582886, -5105643, 265751, -1241782, -3834332, -1048509, +-1962263, -725850, 222801, 3221, -2816962, -1707786, -505732, -546535, -1780264, 1817308, +-247497, -1841467, 3187403, -5433134, -2648384, 2584497, -3333968, 446677, -2100776, -2976412, +1944547, 1844152, -1680943, 2046552, 3839164, 2224256, -2123861, -2362769, 337692, 796716, +-2494839, 2631741, 4230006, -3653407, -1283658, 2177549, 1484448, -822486, -1247151, -1734093, +2259153, 810138, -2997887, 3355980, 1426466, -2538326, -2185602, 3593814, -2806224, -3047279, +-6527277, -4979478, 2285460, 7984881, -558883, -1377611, -3003793, 5187784, -2471754, -79457, +-3871913, -4116189, -5260798, -2346663, 4438849, -4197794, -1478543, -1331977, 1647120, -873489, +-5892159, 3387656, 1681480, 12014097, -1041530, 5752035, -940061, -44023, -376347, 862215, +-2328946, 4821638, -1045288, -651761, -2602750, -229244, -835908, 7351911, 1458678, -423591, +-6480569, -375810, -1131724, 2310156, -4069482, -843424, 1278827, 1284195, -1027034, -363462, +-2480344, -623307, -3010235, -1037772, 6235756, -1401233, 2063195, 3821984, -695248, -2880849, +-4225174, 1592359, 1147830, 1804960, 2830384, 3731253, 2763275, 2090575, -1090385, -562104, +-1284732, -5459441, -1357747, 119722, 3063922, 3373160, -1449552, 838592, -10471667, -2663954, +-354872, -2349884, -1682554, 3474629, -7407208, -6216965, -3716221, -2509872, 872415, 8017094, +-1931662, -149250, 816581, -5973226, -1694902, -5006322, -922881, 8512088, -835371, -4319127, +-2901787, -5906, 1590749, 1619203, -2594697, -11043435, -5407901, -1565516, -4394826, 292058, +25233, 4338454, -3032247, 3848828, 787590, -2104534, -6030671, -4978941, 6610492, -5672041, +3555159, 1031329, -3764539, -1398012, -3378529, -2345589, 3026878, -6053220, 2949032, 1036698, +-258772, 998580, 263067, -598611, -20938, -3036005, -4336307, 330712, -1422171, -3041911, +-1390496, -4710506, 5419175, 3893925, 832150, 4664872, 419833, -1783485, 5534602, -2784213, +-1966558, -1656784, 4214974, -3796751, -6864432, 8580808, 9738838, 2712272, 2688650, -2701535, +4601521, 2313914, -5536213, 1818382, 3747896, -6696928, -5765994, 5962489, -5029407, -712428, +-3188476, 5998459, 1449015, -656593, -2042257, -23085, -3706020, 3608846, -1760937, 2187212, +-752693, -24159, 4069482, 1528472, 742493, -1506460, 4008815, 2408403, 1347009, -339302, +4158602, -324270, 953483, -2505040, 5040681, 1051193, 2167885, 3479461, -9367861, -3165928, +-1621350, -3490735, -3063386, 932545, 5680094, -2370822, -1115618, -2998424, -983011, 1102196, +2716030, -6694781, -29528, 2248416, 659278, -598611, 3292629, 1799591, -5780489, -1821603, +-889058, 3760244, -3593814, 5342940, 6411850, 2982318, 1792075, -2840584, 494995, 374199, +10348187, -2325725, -493384, 3561602, 2187212, 1549410, 3264712, 9150428, -2988760, -1214939, +-9487583, -163209, -8200703, -10316511, 14496, 3902515, -13219372, 4024384, 3870839, 1961190, +-4252555, -3441343, -4607963, -1969779, -95563, -81604, 3751117, 5054640, -1086090, -5682779, +-3577708, 3644817, -6070400, -3210488, -5185636, 678068, -8167417, 3526705, 267362, -901943, +904628, -629213, -2142652, -375273, 4677757, -6197101, 6679211, -5737003, -982474, 897111, +-3906273, -3304977, 2389076, 938987, -1489280, -3144453, 4880694, 1750736, -4034048, -7786776, +472446, 1227287, 3909494, -668404, -2285460, -144418, 1879048, -2291902, 9795747, -4000225, +-2075543, -7917772, -5262946, 10783589, 4173635, -3410204, -1358820, -1163399, 2556579, 6507949, +-9584756, -5798743, 6031208, -5178657, -5533529, -5987185, -7141994, 4491462, -2115808, -541703, +-1968706, -80531, -7915625, -1821603, 2997887, 3429532, 417149, -4265440, -6188511, -5072357, +-6510097, 937377, 6787659, 691490, 1888712, 2206540, 1957431, -4516695, 3998615, 2522220, +-3649649, -2804077, -10289668, 1282048, 1720671, -7930120, -1087164, 2170032, -1926293, 765578, +-1176821, -8448738, 6556268, -7865696, 5579163, 189515, 2570538, -8796093, -5340792, -7867307, +-6612102, 1058710, -2668785, -2807835, -3934190, -42950, 3390340, -7175280, -592706, 2138357, +-2783139, -7923141, -5467494, -1535451, 1083406, 4090956, 1293322, -6332930, 6700686, -1920387, +-1786170, 7441031, -9164923, -2641942, 14674830, -12155831, -6152004, -7948911, 6607271, 2749853, +-3760781, 3303367, 486942, 8870181, 1100585, 507880, -7552700, 6157910, 9917616, 10172093, +8744553, -4139812, -56371, 1635309, -4537633, -3183645, 2042257, 952409, -6787122, -3315715, +-2434173, 4003447, 177704, -5318244, -1832877, 2189360, 5293547, 878858, -745714, 388695, +-3123515, 199716, 635655, 918586, -7646653, 5302674, 6845641, 1515050, 4028143, 3808026, +-5901822, 10217190, 10012106, 1951526, -5047661, 3847217, -1006096, -8861591, -1093606, -2580739, +1165010, 884226, 1206886, -5210332, -3483219, -11050414, -7937100, 496069, 7432441, -4833986, +4235912, 1160178, -1550483, -8831527, 1263794, 5935645, -1134945, 5447629, 12472048, 3576097, +-278636, -13079249, 1865090, -4615479, -17659294, -13497472, 3926137, 552977, -2672007, 3647501, +9160092, -964757, 5675800, 5040681, 3150896, -971200, -4241817, 4263292, -3537443, 900869, +-2964064, 5856725, 10444824, -8539469, -2083596, 971200, 4122095, 1382443, -2277943, -1211181, +-2816425, 159451, -3600793, 5682779, 1695975, -5875516, 7554848, -6600291, -1687922, 9025874, +8149701, 6822556, -6721087, -4362076, -5947993, 8019241, 10888816, 286152, -1508070, 8599598, +-11375758, 1926830, 3874597, -705448, -9420474, 9543417, 3877282, 5083631, 9243306, 929324, +-11436424, 3681324, 5771363, -2625836, -104153, 8895951, -7864622, -7659001, -6172405, 1368484, +11740830, 6368363, -599685, 12899934, -15493021, -5612449, 1128503, 8115878, -14280229, 14985678, +6248641, -79994, -1228898, 1518808, 2790118, 8253317, -1253057, 1166084, -2294586, -1552094, +4746476, 2607045, 5465346, 2588792, 3255048, -9648644, -3884798, 16973710, 1919314, 5251672, +7232725, 2925947, -5436355, -10193031, 3475702, -4081830, 598074, 3981972, -5024575, -5847061, +7667054, 9069360, -4395362, -2961380, 6969122, -8069707, 3818226, -6147709, 3043521, -5943698, +9171366, 1535451, -1072131, 3451006, 15634218, 4549444, 6110665, -1490354, 871342, 2902324, +11528229, -744103, 16476568, 730681, 7832410, -48855, 14835891, 5477157, 11048266, 8619999, +-1916092, -4749697, -1421097, -5460514, -6376953, 8904004, -1927367, -3180960, 1112933, 371515, +-4783520, -1852742, 831076, 4374424, -16106, 16619376, -4907537, -607738, -21442088, -1221381, +10838350, -6373195, 9379672, -13880797, 1570884, 823023, -744103, -18274012, -1141924, -30107184, +1066763, -3828963, -12690555, -2745558, 1360968, -7089918, 842887, 6849399, 883153, -7405598, +1007170, -2753611, 6321118, -7952132, 207232, 8779987, 1937567, 66572, -1593433, 6524056, +-4836133, 537, -169114, 4790499, 958851, -10783052, -5409512, -7869454, 8173323, -19543712, +8993662, 6546604, 6364605, 2648384, 1398012, -9129490, 5862094, -13096966, -2801393, -3569118, +-2410014, -1599875, 908386, 2781528, -9131100, -4815732, 15946677, 5374078, -5440650, -7932268, +2064269, -4106526, 5224828, -4610648, -431644, -6588480, 14927696, 5657009, -3983045, -817654, +-5860483, -163746, 11052025, 11154567, 6585796, 5876052, -5074504, 6503118, 10771241, -7629473, +-16106, -20104206, 11890080, 8088497, -2607045, 4845797, -1014149, 1757715, 7532836, -4415764, +11623255, -10090489, 1301912, 12840342, 5906654, 870268, 10168872, -3405909, 4861366, 2651069, +5621039, 8748848, -4782983, -1014149, 16425029, 8040179, 26307, 2212982, -10492605, 14754823, +-12046310, -823023, 13341242, 3958886, 14340896, -8820252, 2652679, -663572, -2982318, 1749125, +-13021267, -9582072, 13127568, -6484864, -2264522, -4482872, -13849122, 9942312, -2903398, -2619930, +-5859946, 5970542, 15031849, -11778948, -1831267, 9451612, -10252087, -5091147, 9292699, 11783780, +-19648938, -5878200, -1148367, 8074539, 329102, 9459129, -1703491, 10324028, 22167936, 4070555, +-13470091, -4991826, 4184909, -29671244, 725850, -114890, -4791036, -1748589, 13398150, -22498112, +4712653, 10038949, -8310225, 8847633, 17002164, 3896609, -15967615, 3922379, -4102768, -665720, +-15628312, -5081483, 14077292, -1995549, 12914967, -3835943, -4609574, 1693828, -11032160, -6624987, +-7937637, -6328098, -4333085, 10122164, -11700565, 1412507, 20482700, 13303124, 4658429, -21320218, +3521873, 13101261, 5797132, 249108, -7306813, -9612674, -22065932, -15941845, 3332895, -8217346, +-7398618, -1090385, 9708774, 6038187, -6415071, -418222, 13795435, -5937256, -1938104, -163746, +18142478, -140123, -429497, 8167417, 3365107, -21092048, 6296422, 4910222, 651224, -17679696, +7956427, 8913131, -6301254, -5398237, -6444062, 23307714, 1445257, -4518843, -137439, 10375030, +-4744865, 2955474, -2295123, 2542621, 8975945, -15881715, 17105780, 19245748, 5599564, 8195335, +-6268505, 10937671, 25425132, 891743, -2660732, -4581657, 10958072, -3754338, -5866926, -2093260, +4038343, -12533788, 5820755, -11055246, 12883828, 2859375, 12972412, -8027831, 11843372, 3401614, +15427523, 2439542, 3429532, -5541582, 9688372, 2241973, -2780455, 13492640, -5104032, -9915469, +19516868, 15178414, 5888937, 14296336, 21314848, 25301652, -7789997, -8377871, -8878771, 2800856, +-11621645, 13415867, -1599875, -1791001, -19598472, 3976066, 22400402, 22069690, -857920, -3765076, +-15638513, -657667, 14753213, -8621073, -9395778, 7161321, 1089311, -9547175, 2527588, -3046206, +-31339302, -22196390, 10095321, 3317325, -16943110, 645319, 5959267, -15472083, -10194105, -7221988, +16181826, 6779069, 4418985, -6444599, -5335960, -5306432, -11887933, -15283641, -26422638, 12253005, +10126996, -6269042, 27384712, 12824772, 26235808, 17933636, 566399, -9645423, 6065568, 2514703, +11256036, 13482976, 14605036, -3103651, -4020090, 5930813, -8404714, -2460480, -7568806, -12627741, +-20730196, -6450504, 18523120, -5674726, -9211631, -11968463, 6568079, 11254962, 6658273, 60130, +10337449, 22043382, -14924474, -6895570, -11808476, -8271034, -23296440, -6040335, 4172561, -10642929, +-9183714, -25906706, -37340444, 3303367, -25065430, -37917580, -28335510, -11971684, 22811646, 7727183, +13450227, 10420664, -26060250, -11148661, 1091459, 11742977, 2432025, -58782532, -10126459, 17395154, +-20685636, 6897718, -8684424, -32466732, -10762651, 32293322, 41192496, -23629300, -193274, -8970576, +-35380868, -28691456, -26844620, -28949690, -15702400, -19383188, -2393908, 4551592, -5697811, 5665599, +5632313, -12730283, -3948686, -16972638, 5688684, -25923886, -22842784, 3779034, 3001645, -8201777, +-8856759, 17606682, -6412386, 25026774, 5142687, 23044648, -17442936, 9068287, 6266894, 28183038, +15288473, 8718784, 2181844, 2714956, -4204773, 6928856, 11676942, -11581379, -14123463, 18973018, +-3506304, -28286654, -50997368, -62699008, -44290776, 5106716, -644245, -58655832, 17779554, 7332583, +13578539, -21587580, 1890859, 4254165, 1957431, 26559540, 28943248, 56655988, 19008452, -33475512, +-40960568, -25614648, -10871636, -5327370, 31766652, -9302899, -61653720, -18134426, 49786188, -7658464, +10725607, 6459631, 8926016, 16891570, 13987635, 4288525, -10381473, -4466766, 2115272, -11659762, +-2886218, 17681844, -16866874, -10664941, -16877074, -4802311, 2593087, 1284195, 4165582, 7786776, +-12807056, 10376104, 27387396, -1372779, -16197395, 584652, -10602127, -4517232, 16294569, -18131742, +1947231, 4548907, 20019916, 28038620, -18318572, -11399917, 11340861, 651224, 3343632, 2473364, +-11975979, -32054952, -5287642, -15369540, 28714004, -54707684, -35020628, -15380815, -5404680, 14812268, +3797825, -19715510, -2593624, -22529788, -22975390, -8983461, -16332687, 2760053, 14925011, 64623688, +12985834, -9461276, -40586368, -33590404, 11337103, 519691, -38021196, 24607478, 20038706, -23132694, +-74254080, 8606578, 9416179, -4109747, -3031710, -7264401, -22758494, 6530498, -6534256, 35327180, +-40123048, -9394704, 36915244, -3383897, -28401008, -4803921, 20856362, 26397942, 14991583, -6546067, +17772574, -16627429, 11229192, -7629473, -7518341, -14551349, 19512036, 13460964, -16777216, -8021389, +-4630512, 20810190, -4714801, 955630, -16973174, 13589813, 6950331, -17846662, 27004606, -31675, +-29830696, 22373558, -32254668, -16743393, 23396834, -58061516, -39458940, 29514478, -23032836, 21544630, +-39556112, 6704444, 9432822, -21086678, -3194919, -2872796, -41288056, -9933186, 33911452, 39131984, +-50754164, -16629040, 8971650, -38284800, 42135776, 46309412, 747324, -69804496, -42710764, 71041984, +-46331424, -9471477, 49183280, -36859408, -83799104, -19746112, -10308458, -39837432, -37553584, -932545, +-47378320, -13984414, -20122458, -19001472, -14273250, 30843770, -3306588, -9846749, -12911745, 6040872, +-16521665, -39528196, 30778272, 9649181, 26636850, 8296266, 27571542, -10879689, -16662862, 6070937, +-28336046, 22232898, -25603374, -5479305, 17432198, -19659676, -3761318, -11932493, -30949534, 4745939, +-23220740, -17073568, -20156282, -15283641, -8884677, -20991116, 4329864, 23400056, -15112379, -5528697, +3609920, 21619254, -9008157, 7768522, -21194590, 35997732, 12121471, 15592879, 10801843, 34637836, +-946503, -39997956, 10060424, 15105937, -9970230, 420907, 22597434, -27394912, -26382910, -31738734, +29728154, 9398462, -38343856, 16963510, -24541444, -3422015, -35264904, 18900540, 29030220, 8841190, +-38408820, 28485834, 35479116, 66463008, -15730855, 33053532, 6616934, -15467251, -29387776, -17082158, +38776040, -12458626, 7397545, 15124190, -3650722, 35686884, -4978941, 28033788, 29393682, -35623532, +18690088, -9228274, 1127966, 13252122, 11148661, -1093606, 6075768, 10739566, 35940288, 36798208, +28566902, -20607790, -6802692, -48661444, -1209033, 11615739, 22267258, 5171141, -40094056, 17766132, +-23972896, 31391916, -28039158, -19689740, 2263448, -23577760, -3854733, -13576928, 48371532, -26250304, +-12738336, -50415400, -16307454, -26419418, 71393632, 43459700, -15000173, -47925928, -51549808, -30478162, +35352948, 46446312, 23240068, 7007239, -62186296, -28488518, 19750408, 17598092, 1856500, 22650584, +-14041859, -40368936, 17459042, -68720016, 72318656, -6886980, -53119080, 112036904, 7449084, 2794413, +-28978144, 20222316, -41081900, 26015154, -16655346, 42458972, -18571438, -1648731, 24453396, 4565014, +2574833, -10580652, -8916889, 1362578, -15629386, 18030272, -1544041, 19115826, -14253386, -14373645, +5539434, 949188, -14413910, 9648107, -1272921, 8427263, -3962644, -3903589, 8562017, -7393786, +89121, 5997922, -2325725, -3498788, 30663920, -1981591, -9206799, -5306432, 15040439, -1274532, +-15396921, 8638253, 18429168, 3498251, 1406602, -10428181, 4723391, -8499203, 9132711, 21097954, +-6359773, 9508521, -6742025, -2660732, -7408282, -4496294, 7092602, 6444062, -10799158, 6948720, +4009352, -2250026, -10431402, 1290638, 6757594, -10270341, 15916612, 9829033, -19437412, 3928285, +-16994648, -25865366, 20564304, -11812234, 25107306, -23795192, 52173652, 10334228, 13291850, -5957120, +5348308, -908922, 10407243, 3665755, 22619446, 2089502, -11266236, 7808251, -7116761, 3954591, +5170604, -9522479, 1213328, 2990908, -10212895, 10490994, 3246459, -3926137, 14071387, -4235375, +5996848, -3550864, 3213709, 3082176, 1955821, -1152125, -3207804, -1300838, 2626373, 849867, +-1459752, -5986648, 5633387, -3856881, 3215320, 4773320, -3639448, 1444183, -3330747, 1685775, +-5749351, -10195179, 11891154, -5443334, -1980517, 5158256, 3053722, -1414118, 2179159, 9946607, +-9505299, 4978941, -2959233, 8660802, -7770133, 5434744, 3524558, -1129040, 3035468, 611496, +1294933, 4402879, -4298189, 3483755, 4128537, -1196685, 1000191, 7425999, 730144, 2587718, +-5856725, 11105175, 9595494, -45953464, -113883744, 24428700, 94386736, 63797980, 133190696, -43737800, +-37487548, -76841256, -122850560, -12215961, 38009924, 50306952, 65538516, 33083060, 3400004, -10813654, +-28681792, -40606768, -6401649, -10872710, 3726421, 9281424, -760209, 2323041, 4616016, 2171643, +15763067, 19079318, 11543798, -2165737, 1884417, -14078903, -29942902, -31509490, -15815680, -20636244, +16694001, 31496068, 32983738, 36703716, 19690278, -5812702, -14844481, -26782880, -28825674, -19608674, +-11524471, -1114007, 6757594, 13990856, 14387604, 12676059, 10297721, -1607392, 2433636, -2910914, +961536, -2086817, -1940252, -512712, -10555956, -10171556, -8129836, -15466714, -452045, -2456185, +1549946, 27749784, 35264364, 12904766, 11763379, -8578660, -19718732, -11546483, -22576496, -11243151, +2200634, -286152, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, { 6260452, -49392, 8157217, 379568, -2594160, -643708, 55835, 751619, 3802657, -1575716, 1945083, --3844533, 1293859, -403727, 2646774, -1793149, 3823595, 978179, -1950452, 274878, -3888556, -4334696, -404264, -886911, -2147, 639413, 909996, 661425, 3200288, -5628555, 420907, -3550327, 702764, -279710, -625455, -325344, -130460, -465467, -5762236, -478352, 1702955, --2002529, 1939715, -4516158, 22549, 2531883, -2654827, 5084705, 4920959, 3670050, 3128347, -4027069, 497679, 2022393, -1910187, -810138, -3316252, -1329829, -183610, -2893197, -971736, --4112968, 578747, -3486977, -4562329, 864899, -3337727, 2522757, 367757, -3713536, 2554969, -1621887, -4126390, 1232656, 89121, 4827543, 1418950, -6394133, 849867, 2075543, 2015950, -10150618, 2787971, 2167885, -2957085, 417149, -5089536, 1232656, 4756677, -2363306, 270583, --968515, -2478196, -4041564, 3189550, -6779069, -3382287, -3391414, 3742527, 4063576, 2185602, -988379, 2985002, 2436857, 4894652, -1661079, 1756105, 3025268, 704375, 1007707, -3456375, --1503239, -1401770, -1312113, 3344169, -6243272, 1126355, -2155000, 6641630, 169114, -1093069, --1633698, -2610803, -890669, -2724083, -8244727, -2509335, -1609539, -1224603, -1846299, 969052, --1544041, -266288, -532039, 3020436, 1289027, -234076, 1838246, -1467268, 3529926, -2160369, --3862786, 3886946, 3860102, -1489280, -3736622, 568009, 1951526, 1767916, 1647120, -1461900, --169651, 1793686, 1486059, 9223979, -1644436, -805306, 1050120, 2597918, -6679748, 4274566, --7941932, -286689, -3811784, -493921, -2499134, -527207, -561567, 4103841, -3330747, 4439923, --4483946, -4881231, 2163590, 6747394, -7794829, -2094870, -3740917, 144418, -1919314, 2214593, -2873333, 1518271, 2924873, -4467840, 220654, 6504728, 2569464, 918049, -4597763, -6538014, --3946538, 1127966, -3348464, -1806571, 1347009, 4430259, -3840775, -3709778, 1598802, -2675765, -4998805, 1789391, -467078, 3629247, 3358665, 137439, 5607080, 2903398, 1779727, 1632088, -3683471, 5912560, -3755412, 1273995, 1604707, -3855270, 379568, 3482682, -1263794, 8516383, --2558727, -1968169, -1734630, 3319473, 4202089, -5095979, -2239289, 1787243, -11702175, -1845762, --2565706, -2036888, -998580, -1379221, 6308770, 7538742, -1656784, 6162741, 2377801, -3312494, -1637993, -5050882, 947040, 1142998, -6829535, -956167, 1108102, 1262184, 4791036, -854699, -4163971, -2707440, -5240397, -5507222, -1564442, -2758980, -4197794, 4427038, -1692754, -790274, --749472, 965831, 2390149, -6692633, 32212, 988379, -3195993, 8080444, 623307, -1941325, --1755031, 8616778, -634045, 1121523, 5046050, 176094, 3062849, 1226213, 237297, 4744865, --89121, -3313031, 4173635, 2268817, 2637647, 3826816, 1161789, -3171297, 2092723, 3096135, -2907693, 4650913, -166967, -4518843, -3748433, 5390721, 7450695, -7297687, 1056025, -2189360, --1713692, 1167694, 2313377, 2127620, -8694088, 9193914, 8508867, 6413997, -4538707, 5010080, -9051107, -2313914, 7059316, 2653216, 1015223, -1127429, 7781407, 3687230, -1895691, -5637682, -3195993, -2343442, -3075197, 3163780, 3677029, 1635309, -5659693, 897648, 4927938, -2451353, -1610613, -10982768, 1487132, -886911, 5188858, 1291711, -2384244, -3310883, 6655589, -5826660, -351114, -4704600, 421444, -1439351, 3643743, -784905, -1379221, -5762773, -1540283, -1012539, -6992744, 361851, -6730751, -236760, -556198, 2244657, 3214783, -2908767, -213675, -3713536, -3723737, -865436, 4529043, -2583960, 6847789, 3551938, -8210904, 8357470, -1570884, -5769215, -567473, 7636452, 1072131, 1177895, -6742025, -398358, -3095061, -3324842, -4173098, 331249, -9855339, -3541738, -7328288, -486942, -10934987, -123480, -9413495, -3345243, 6277632, -6746320, --7437273, 2079838, 489626, 542240, -1835562, -2513630, -5420786, 3470334, -10493142, -3306588, -925029, 6308770, 249645, 6400575, 2187749, 14206141, 5355288, -276489, 493384, 6695854, --1771137, -2175401, -1427003, 994822, -4665408, -2384781, -7768522, -679142, -3656628, -2249489, -9215926, -6979, 5698348, -2518462, 2216740, -768799, 3317325, -1358283, 3067681, -3422015, --4191888, -856309, 917512, -4258997, -4250944, 105227, 1836099, 4085051, -879395, -2341294, --1157494, 3797825, 6760816, 5906, -5119601, -7308961, -250719, 1374390, 328565, 8761733, --6325950, -1083406, 3664681, -2563022, -5597416, 5082557, 1992865, 1185411, 630286, 8918500, --6827388, -1385127, 581968, -525060, -237297, -5625334, -4316442, -603443, 3758633, 1363652, -1524713, 1578401, 3955128, -801011, 3623342, 2917894, -9231495, -3553012, -10835666, 2829310, --3786551, 5481989, -3475702, -4792110, -3467649, 2856153, -7187628, -6012418, 8489540, -4584878, -9205726, -2142115, 2829310, -3196530, -6059662, 6798933, -5116380, -5832566, -475668, -3157338, --6759205, -5267778, -8541616, 395674, 5730560, 3253438, -3204046, 9686762, 3722663, -3490198, --4268661, -6915971, 540629, -2547453, -4612795, -2386391, -1767379, -3353296, 2181844, 7806103, --68183, 612033, -4759361, 2574833, 3163244, -4406637, -2937758, 2006287, 10220412, 3933653, --1196148, -977105, -253940, -9035537, 13316009, -1905892, 501974, -1587527, 8857833, 8404714, -3261491, -12656732, -1649804, -15483894, 10008884, 4495757, 814970, 17002164, 8364986, -958851, --6835441, 7292318, -2597918, 2173254, 2883534, 1554778, 5987722, -4329327, 9831717, 3993246, -1490354, -2330020, -4108673, 6738267, 5890011, -556735, 4046933, -7414724, 2091649, -10059350, -4908611, 1041530, 5990943, -8188355, 2426120, -2380486, 2549600, 10255845, 8971113, 821413, -3063922, -5682242, 8686571, 643708, 17745732, 18458158, -1717450, -4413079, -4230543, -3514357, --9769977, -2543158, -12963822, 1200980, -432181, -399432, -2069101, 5147519, 8804146, 12989592, -12496744, 9369471, -14175540, -10353556, 251792, 987306, 16317654, -10821707, 8970039, -434865, --3186866, -4583804, 9241696, 2007897, -6717329, -3726421, 17328582, 16976932, 19101868, -1864016, --700080, -3244848, 3313031, 9283035, 10827613, 3078418, -4458713, -9192304, -18464602, 5470178, --10849624, -2477123, -946503, -2455648, 1447404, -639413, -3211562, -506269, -10572599, -4383551, -882079, -2117419, -11812771, -5220533, 1296543, 8617852, -2197413, 92879, -9307194, -3413425, -428423, 6170795, -3567507, 3704946, -10386305, -3210488, 2862596, 3833258, -2556043, 14155138, --2557116, -2106682, -7079180, -2777233, 6253473, 1649268, -184684, 7166153, 10915123, 11764452, --1612760, -6504191, -6336688, -366683, 2035278, 2333778, -4258460, 3337190, 5858336, 3684008, -4992900, 11360725, 9027484, 4452808, 303869, 1431835, -10864120, -4221953, -18210662, 21363704, --1195075, 2646237, 11422466, -367220, -4786204, 47782, -21985400, -13610751, -6700686, 2835215, --4796942, 1858110, -10593000, 6339909, -4081293, -687732, 12622372, -13479218, -9159018, 11755862, --4466766, -18720688, 687732, -11783243, 1706713, -1551557, 6178311, 2289218, 2809446, 738734, --2803540, 7399155, -1520418, 9680856, 5692443, -4352413, -6843494, -6506876, 2169495, -3563749, -2177012, 1278827, 5421860, 1035624, -12109660, -89121, 3190624, -4741107, -223338, -8703214, --2477659, -158377, -231928, 17205638, -3932580, 11919608, 14592688, -5232344, 7407745, -3600793, --1323387, -9713605, 4519916, 11834246, 8171176, 638876, 2539400, 6533182, -1692754, 4877472, --4059281, -6026376, -8141111, 482110, 13915157, 20851530, 2864743, 5068062, -5181878, -2690260, -14071387, -9591199, -2406256, -18712636, 17148730, 8940511, 1002338, -6440841, -17782238, 1646583, --4936528, 2027225, -19932944, 6896107, 10074920, -11520176, -3046206, 1611687, 878321, 3709778, -10916196, 13776108, -318364, -106300, 2217277, 458488, -8799851, -9673340, -6784975, -12721693, --6669548, 10736344, 4561792, -4083977, -5832029, -3580929, -22767622, 4795868, 4805532, -10455024, -16481937, 579284, 12114492, -4610648, 7608535, -2750927, -11689290, 967978, 9404905, -5613523, -4784057, 6481106, 17276506, 4992363, 4789426, 17337172, 8931384, 6547141, -25089052, 4941897, -2501819, 4624606, -815507, -9842454, 15940234, -12976170, 8240969, 10372883, -17675402, -3414499, -18864570, -18540836, 948114, 691490, -11790222, -17394618, -8098161, -7694434, -23102092, 14468134, -1621350, 15496242, 164283, 1602560, -8499203, -4751845, 7140920, -1321776, 7406134, -8840653, --3367254, 743566, -4452808, -7366943, 8966818, -10653666, 10827076, -4779762, 2986613, -3221762, --8686034, -7803419, 2583960, -3285113, -901406, 5266167, 22425634, 947040, -3805341, -8569533, -2502892, 18037788, -4300873, -3796751, -11784317, -4507032, 699543, -11074036, -4660040, -15490336, -8590471, -18803904, -33558728, -4175782, 117038, 14806363, -17066590, 14175003, 8764955, -8441221, --16217797, -3233037, 1471563, 3633006, -517544, 8612483, -7427072, -3228742, -33387466, -5207111, -32042604, 2313914, -6900402, -5417565, -18656802, 11901891, -7059853, 16885664, 15234249, -2999498, --4242891, 54761, -20777442, 16050293, -12621298, -10135586, -7565048, 6936909, 3641059, 14996952, -3051574, -5976984, -7290707, -7539815, 8381092, -2009508, -3427384, 13848585, 15236933, 6166500, --7923678, 12886513, 19815368, -5572183, -2629594, 17416092, 5507222, 4665408, -8982924, 1460826, -16577500, -20878910, 16825534, -1860258, 3524021, 10729365, 12589623, 1410360, 7027104, -9024263, --7125888, 7306276, 22680112, 7202124, 6682432, 9552544, -9153112, 3782256, 10971494, 6982543, --162672, 9116605, 6345278, -11159936, 12008729, -10837276, 4526359, 10599442, -8032663, 9026411, --10116795, -3265249, 4197257, 1923072, 9811316, -3489124, 8905615, -3700651, 3513820, 3586298, -766115, -4262218, -5886790, 24777130, -14712947, 15366856, -5829881, -15343234, -19984482, -5575405, --2208687, 11639361, -17663590, -2781528, -2295123, 9228274, 17059074, 14445049, 8639327, 1487132, --4765266, -2522757, -2130304, 12385075, 9644349, -2135136, 1185948, -2396592, 7423314, -18651970, -10854993, 6572374, 8372502, 3387119, 1534377, 16760036, -6971269, -13431436, -483184, -4056060, -363998, -18713172, -11290395, -507343, 15475841, -10206990, -4116189, 3400540, -1353989, 1285806, -15109158, 7271380, -3222836, 2370285, 6955163, 6182606, 17629768, -4265440, 7570417, 10668699, -4126927, -1584843, 2093797, -18538152, 7630010, -2026688, -77309, -2669322, -12075301, -12661564, -1988570, -4552666, -21225192, 7831336, -18156438, -9000641, -3853660, -21241298, -16200617, 10368588, --25184078, -27985470, 18312666, 16521665, 6270116, 17803714, 29224032, 8990977, -9637370, 10055592, --3166465, -6984691, 13991930, 1871532, -10388989, 8005819, 10415833, 3055332, 4426501, 1607392, -2612951, 26656714, 644245, 6387690, 3618510, 16845936, 2177012, 26401164, 1133335, -10432476, -21722334, 4981625, -7748121, -2412698, 12144557, -1482301, 1151588, 9214315, -14179298, 16231218, --1882269, -22029424, -4938139, 2897492, -21257940, -1907502, -878321, 10598369, 11190000, 17664126, --10406169, 3148211, 4348118, 4054449, 8988830, -10428717, -10515154, 6832756, 1523103, 13403519, -12535936, 3551938, 29306710, -4367445, -2044404, -18577344, 30152282, 4858145, 21839372, 11580306, --28265716, 3937411, 6034966, 18087718, -6254010, 6262063, 16757352, -36595804, 21087216, 21545704, --9791989, 4890357, 2563022, 5638755, -357556, 17169668, -13241921, -2969970, -14195941, -310311, --8299488, 1060857, 3035468, -20010252, 8282845, 21488258, -15547245, -14310831, -15256798, 28709708, --13313325, -7063611, 1890323, -9822590, -30609158, 5301601, 20777978, -29596082, -14339822, 10399190, -15014132, 4502737, -5471252, 7095286, -11528229, -4676146, -1580548, 15013058, -21276732, -15714748, -10297184, 18876382, 6121402, -22619446, -8666707, 1091995, -2311229, -3429532, 10762651, -2929705, -16852914, -14078366, -4617090, 785442, -18390514, 11651709, -21225728, -12554726, 4748623, -7682086, -17579838, 29032906, 14715095, -16874926, 8024073, -3688840, -7220914, -10928544, -5732171, -18617610, -14576582, 15217606, 6123013, 20490216, 34523484, -801011, -27090506, 5072357, -32219770, 4871567, -13843753, 6205154, 1366873, 18484466, 13538274, -1416266, -3450469, -26756036, -14663555, -184147, --12809740, 34897148, -7028177, -8624294, -15876883, 1323924, 12775917, 8745090, -1058710, 6263136, -9813463, -16335908, 4796405, 29831770, 10179609, -21498458, -15336254, 9270150, -10952703, -2029909, -6777459, -5252208, -17894444, -4743255, 1420024, 28373090, -6971806, 5812702, -8435853, -24064702, -3353833, 28791850, -8693014, -18264886, 4324495, -11422466, 6343667, -6783901, -8088497, 19622632, --6139119, -2882997, 8854075, -17971754, 5168993, 20892868, -10079215, 1394254, -13895830, 37264212, --8364449, 4250407, 10471130, -8785892, -4145180, -9787157, 2757906, -10563472, -12625593, -9796820, --57626648, -19915764, -635118, 18972482, -9319005, -28627568, -10531797, -3830574, 14641007, 4130685, --3471407, -13940390, 15579457, 27371290, -11829414, 20796232, 5508833, -38144680, 14785425, 18532248, --5961952, -15257871, -2550674, 24196772, 25754772, -1677185, -18855444, 1766305, -1818919, -2067490, --15658914, 4381404, 7683160, -25021406, 17921288, 15335718, -17581448, 3732864, -19774566, 7532299, -49536004, -43551504, 45817636, 20968030, 2388002, 28201292, 14150307, -28072444, 17420388, -21023864, --4489852, 23735064, 1393180, 7046431, -11661373, -20500416, 63652488, -14570140, 1177358, 25275346, --11818139, 5160403, 2135136, 15697032, 35910760, 34178812, 32300838, 2245731, -453119, -4911295, -1803349, -8362838, 2631741, 27770722, -6749004, -8085276, 15330886, -3433826, -42374684, 19969988, --30683246, 44292388, 5571647, -37482716, 8969502, 927713, 18232136, 9043591, -8863202, 33017024, -8230231, 2314987, 21927956, -16585016, -23745264, 1514513, 12856448, 44392244, -5884105, 906775, --4333085, 32273994, 3644280, -24111946, -14561013, 5632313, -2580202, 14865956, -24103894, 12648679, -4112431, 8223252, -2035815, -8401493, 5641440, 10892037, 200253, 30407294, -47022912, 5371394, --16547435, -9008157, -6026913, -33055142, -50016504, -50343460, -37643240, 5549635, 198642, -28406376, --248034, -3727495, 3226594, -16785806, -48242684, 49512920, -872415, -4881767, 9669045, -44841608, --3230889, -9246528, 8898635, 16559783, 64865816, 51219632, -5124433, 2696166, -932545, 16392816, -20871394, 16013786, -11276974, 59825672, -55239720, 10600516, -9881109, 3167002, 24712168, -16342351, -6879464, 1925219, -59853592, 2549063, -5879810, 4016331, 7972533, -26069914, -9175124, -43844100, --10630044, -1046898, 3427921, -15837692, -11811697, -18366890, -7170448, 20689932, 5245229, 40549324, -10638097, -11920682, -12875775, 25522306, -25756382, 47630652, -34978212, 12035572, -27981176, 2201708, -28924994, -48771500, 48715128, 10162429, 6715182, -32780802, -5666136, -4599910, 1304596, 18719078, -17943300, 23154706, -38601556, 1367410, -14276471, -11079405, -13888314, -18820010, -13343927, 3722663, -24550034, -21240224, 8297877, -41517300, -13296145, 15294915, 15268609, 6782827, -49335216, -22836342, --16284369, -20500952, -19611894, 8385387, -15037754, 35208532, 10089415, 23722714, -7073275, 25072946, --47991428, 72500656, -55070072, -5950677, -33396592, 6362994, 304943, -20076288, -28696824, 32975686, -21721798, 10344966, -14946486, 14585709, 3959423, 31249108, -25304336, -16236587, 18742700, 32566590, --42087996, 16878684, -2231236, 19880330, -15720117, 6002217, -19194208, 4065187, -35270272, 11612518, -35902168, -843961, -3843996, 46244448, 6906308, -20621212, -45876692, 38826504, -21427054, 17886928, --17697412, 46444164, 18831820, -4252018, 3269007, -25615184, 2012192, 12343736, -14412837, 13835163, --57087096, 22891102, 48354888, 40553080, -23716272, -21109228, -24800214, 27009438, -258235, -6268505, --459025, 66842040, -34389268, -12510703, 22067542, -19027778, -61940408, 27824408, 9234717, -38381976, -18993420, 44681080, 30317100, -5679021, -23199802, -47500728, 24456618, -3321084, 5922760, -17755932, -14388677, -233002, 7596187, 1961190, 2077690, -10298795, 6808597, 24881820, -33091650, 27365920, --5450851, -17597554, 5024038, -12111271, 6823630, -12381317, -10536092, 7802345, -26601416, -3080029, -33673080, -50131396, 13247290, 1977296, -9114457, -15658914, -18889266, -12114492, 35304632, -30092688, --5108327, 11365020, -31097174, 7380902, 15709917, 10833518, 4777078, 4991289, -17983028, 13219909, --45427868, 447750, 37960532, -16422344, -5382668, -8836895, -12023224, -365609, -32552630, 16681116, -11541114, -25975426, 23270670, 6925098, -30872224, 12408697, -7013145, 21823266, 17452600, -27181774, -8264591, 31229244, -30321396, 16936130, -22070764, 17263622, 17223356, -27784680, 15125264, 326954, --15935402, 26377004, 7494718, -24980604, -122997664, -251165936, -108801720, -172081088, -228745120, 65336116, -13429289, 54343148, 302281952, 249196144, 159163440, 257382896, 170131168, 6822019, 30957050, 18137110, --160544272, -109034728, -79650704, -181531632, -184757680, -62083752, -62337692, -120524296, -46225124, -37615860, --141715664, -124048320, -49999324, -74748000, -134336384, -43758736, -34285652, -108287400, -24822226, 51373176, --42058468, -36701032, 83191904, 45777908, -52475372, 72443752, 128463008, 3049427, 67160944, 160996320, -73006928, 32131188, 175762416, 125666448, 91253560, 216750896, 297444192, 233663408, 273540576, 357499648, -231496048, 149834224, 199367008, 127576632, -40175124, -10940355, -91579976, -223825248, -315535136, -336593888, --450576416, -509102880, -538365568, -513171296, -487514752, -472316480, -378379104, -252343280, -194695696, 20937428, -161597072, 105515000, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +49392, 8157217, 379568, -2594160, -643708, 55835, 751619, 3802657, -1575716, 1945083, +-3844533, 1293859, -403727, 2646774, -1793149, 3823595, 978179, -1950452, 274878, -3888556, +4334696, -404264, -886911, -2147, 639413, 909996, 661425, 3200288, -5628555, 420907, +3550327, 702764, -279710, -625455, -325344, -130460, -465467, -5762236, -478352, 1702955, +-2002529, 1939715, -4516158, 22549, 2531883, -2654827, 5084705, 4920959, 3670050, 3128347, +4027069, 497679, 2022393, -1910187, -810138, -3316252, -1329829, -183610, -2893197, -971736, +-4112968, 578747, -3486977, -4562329, 864899, -3337727, 2522757, 367757, -3713536, 2554969, +1621887, -4126390, 1232656, 89121, 4827543, 1418950, -6394133, 849867, 2075543, 2015950, +10150618, 2787971, 2167885, -2957085, 417149, -5089536, 1232656, 4756677, -2363306, 270583, +-968515, -2478196, -4041564, 3189550, -6779069, -3382287, -3391414, 3742527, 4063576, 2185602, +988379, 2985002, 2436857, 4894652, -1661079, 1756105, 3025268, 704375, 1007707, -3456375, +-1503239, -1401770, -1312113, 3344169, -6243272, 1126355, -2155000, 6641630, 169114, -1093069, +-1633698, -2610803, -890669, -2724083, -8244727, -2509335, -1609539, -1224603, -1846299, 969052, +-1544041, -266288, -532039, 3020436, 1289027, -234076, 1838246, -1467268, 3529926, -2160369, +-3862786, 3886946, 3860102, -1489280, -3736622, 568009, 1951526, 1767916, 1647120, -1461900, +-169651, 1793686, 1486059, 9223979, -1644436, -805306, 1050120, 2597918, -6679748, 4274566, +-7941932, -286689, -3811784, -493921, -2499134, -527207, -561567, 4103841, -3330747, 4439923, +-4483946, -4881231, 2163590, 6747394, -7794829, -2094870, -3740917, 144418, -1919314, 2214593, +2873333, 1518271, 2924873, -4467840, 220654, 6504728, 2569464, 918049, -4597763, -6538014, +-3946538, 1127966, -3348464, -1806571, 1347009, 4430259, -3840775, -3709778, 1598802, -2675765, +4998805, 1789391, -467078, 3629247, 3358665, 137439, 5607080, 2903398, 1779727, 1632088, +3683471, 5912560, -3755412, 1273995, 1604707, -3855270, 379568, 3482682, -1263794, 8516383, +-2558727, -1968169, -1734630, 3319473, 4202089, -5095979, -2239289, 1787243, -11702175, -1845762, +-2565706, -2036888, -998580, -1379221, 6308770, 7538742, -1656784, 6162741, 2377801, -3312494, +1637993, -5050882, 947040, 1142998, -6829535, -956167, 1108102, 1262184, 4791036, -854699, +4163971, -2707440, -5240397, -5507222, -1564442, -2758980, -4197794, 4427038, -1692754, -790274, +-749472, 965831, 2390149, -6692633, 32212, 988379, -3195993, 8080444, 623307, -1941325, +-1755031, 8616778, -634045, 1121523, 5046050, 176094, 3062849, 1226213, 237297, 4744865, +-89121, -3313031, 4173635, 2268817, 2637647, 3826816, 1161789, -3171297, 2092723, 3096135, +2907693, 4650913, -166967, -4518843, -3748433, 5390721, 7450695, -7297687, 1056025, -2189360, +-1713692, 1167694, 2313377, 2127620, -8694088, 9193914, 8508867, 6413997, -4538707, 5010080, +9051107, -2313914, 7059316, 2653216, 1015223, -1127429, 7781407, 3687230, -1895691, -5637682, +3195993, -2343442, -3075197, 3163780, 3677029, 1635309, -5659693, 897648, 4927938, -2451353, +1610613, -10982768, 1487132, -886911, 5188858, 1291711, -2384244, -3310883, 6655589, -5826660, +351114, -4704600, 421444, -1439351, 3643743, -784905, -1379221, -5762773, -1540283, -1012539, +6992744, 361851, -6730751, -236760, -556198, 2244657, 3214783, -2908767, -213675, -3713536, +3723737, -865436, 4529043, -2583960, 6847789, 3551938, -8210904, 8357470, -1570884, -5769215, +567473, 7636452, 1072131, 1177895, -6742025, -398358, -3095061, -3324842, -4173098, 331249, +9855339, -3541738, -7328288, -486942, -10934987, -123480, -9413495, -3345243, 6277632, -6746320, +-7437273, 2079838, 489626, 542240, -1835562, -2513630, -5420786, 3470334, -10493142, -3306588, +925029, 6308770, 249645, 6400575, 2187749, 14206141, 5355288, -276489, 493384, 6695854, +-1771137, -2175401, -1427003, 994822, -4665408, -2384781, -7768522, -679142, -3656628, -2249489, +9215926, -6979, 5698348, -2518462, 2216740, -768799, 3317325, -1358283, 3067681, -3422015, +-4191888, -856309, 917512, -4258997, -4250944, 105227, 1836099, 4085051, -879395, -2341294, +-1157494, 3797825, 6760816, 5906, -5119601, -7308961, -250719, 1374390, 328565, 8761733, +-6325950, -1083406, 3664681, -2563022, -5597416, 5082557, 1992865, 1185411, 630286, 8918500, +-6827388, -1385127, 581968, -525060, -237297, -5625334, -4316442, -603443, 3758633, 1363652, +1524713, 1578401, 3955128, -801011, 3623342, 2917894, -9231495, -3553012, -10835666, 2829310, +-3786551, 5481989, -3475702, -4792110, -3467649, 2856153, -7187628, -6012418, 8489540, -4584878, +9205726, -2142115, 2829310, -3196530, -6059662, 6798933, -5116380, -5832566, -475668, -3157338, +-6759205, -5267778, -8541616, 395674, 5730560, 3253438, -3204046, 9686762, 3722663, -3490198, +-4268661, -6915971, 540629, -2547453, -4612795, -2386391, -1767379, -3353296, 2181844, 7806103, +-68183, 612033, -4759361, 2574833, 3163244, -4406637, -2937758, 2006287, 10220412, 3933653, +-1196148, -977105, -253940, -9035537, 13316009, -1905892, 501974, -1587527, 8857833, 8404714, +3261491, -12656732, -1649804, -15483894, 10008884, 4495757, 814970, 17002164, 8364986, -958851, +-6835441, 7292318, -2597918, 2173254, 2883534, 1554778, 5987722, -4329327, 9831717, 3993246, +1490354, -2330020, -4108673, 6738267, 5890011, -556735, 4046933, -7414724, 2091649, -10059350, +4908611, 1041530, 5990943, -8188355, 2426120, -2380486, 2549600, 10255845, 8971113, 821413, +3063922, -5682242, 8686571, 643708, 17745732, 18458158, -1717450, -4413079, -4230543, -3514357, +-9769977, -2543158, -12963822, 1200980, -432181, -399432, -2069101, 5147519, 8804146, 12989592, +12496744, 9369471, -14175540, -10353556, 251792, 987306, 16317654, -10821707, 8970039, -434865, +-3186866, -4583804, 9241696, 2007897, -6717329, -3726421, 17328582, 16976932, 19101868, -1864016, +-700080, -3244848, 3313031, 9283035, 10827613, 3078418, -4458713, -9192304, -18464602, 5470178, +-10849624, -2477123, -946503, -2455648, 1447404, -639413, -3211562, -506269, -10572599, -4383551, +882079, -2117419, -11812771, -5220533, 1296543, 8617852, -2197413, 92879, -9307194, -3413425, +428423, 6170795, -3567507, 3704946, -10386305, -3210488, 2862596, 3833258, -2556043, 14155138, +-2557116, -2106682, -7079180, -2777233, 6253473, 1649268, -184684, 7166153, 10915123, 11764452, +-1612760, -6504191, -6336688, -366683, 2035278, 2333778, -4258460, 3337190, 5858336, 3684008, +4992900, 11360725, 9027484, 4452808, 303869, 1431835, -10864120, -4221953, -18210662, 21363704, +-1195075, 2646237, 11422466, -367220, -4786204, 47782, -21985400, -13610751, -6700686, 2835215, +-4796942, 1858110, -10593000, 6339909, -4081293, -687732, 12622372, -13479218, -9159018, 11755862, +-4466766, -18720688, 687732, -11783243, 1706713, -1551557, 6178311, 2289218, 2809446, 738734, +-2803540, 7399155, -1520418, 9680856, 5692443, -4352413, -6843494, -6506876, 2169495, -3563749, +2177012, 1278827, 5421860, 1035624, -12109660, -89121, 3190624, -4741107, -223338, -8703214, +-2477659, -158377, -231928, 17205638, -3932580, 11919608, 14592688, -5232344, 7407745, -3600793, +-1323387, -9713605, 4519916, 11834246, 8171176, 638876, 2539400, 6533182, -1692754, 4877472, +-4059281, -6026376, -8141111, 482110, 13915157, 20851530, 2864743, 5068062, -5181878, -2690260, +14071387, -9591199, -2406256, -18712636, 17148730, 8940511, 1002338, -6440841, -17782238, 1646583, +-4936528, 2027225, -19932944, 6896107, 10074920, -11520176, -3046206, 1611687, 878321, 3709778, +10916196, 13776108, -318364, -106300, 2217277, 458488, -8799851, -9673340, -6784975, -12721693, +-6669548, 10736344, 4561792, -4083977, -5832029, -3580929, -22767622, 4795868, 4805532, -10455024, +16481937, 579284, 12114492, -4610648, 7608535, -2750927, -11689290, 967978, 9404905, -5613523, +4784057, 6481106, 17276506, 4992363, 4789426, 17337172, 8931384, 6547141, -25089052, 4941897, +2501819, 4624606, -815507, -9842454, 15940234, -12976170, 8240969, 10372883, -17675402, -3414499, +18864570, -18540836, 948114, 691490, -11790222, -17394618, -8098161, -7694434, -23102092, 14468134, +1621350, 15496242, 164283, 1602560, -8499203, -4751845, 7140920, -1321776, 7406134, -8840653, +-3367254, 743566, -4452808, -7366943, 8966818, -10653666, 10827076, -4779762, 2986613, -3221762, +-8686034, -7803419, 2583960, -3285113, -901406, 5266167, 22425634, 947040, -3805341, -8569533, +2502892, 18037788, -4300873, -3796751, -11784317, -4507032, 699543, -11074036, -4660040, -15490336, +8590471, -18803904, -33558728, -4175782, 117038, 14806363, -17066590, 14175003, 8764955, -8441221, +-16217797, -3233037, 1471563, 3633006, -517544, 8612483, -7427072, -3228742, -33387466, -5207111, +32042604, 2313914, -6900402, -5417565, -18656802, 11901891, -7059853, 16885664, 15234249, -2999498, +-4242891, 54761, -20777442, 16050293, -12621298, -10135586, -7565048, 6936909, 3641059, 14996952, +3051574, -5976984, -7290707, -7539815, 8381092, -2009508, -3427384, 13848585, 15236933, 6166500, +-7923678, 12886513, 19815368, -5572183, -2629594, 17416092, 5507222, 4665408, -8982924, 1460826, +16577500, -20878910, 16825534, -1860258, 3524021, 10729365, 12589623, 1410360, 7027104, -9024263, +-7125888, 7306276, 22680112, 7202124, 6682432, 9552544, -9153112, 3782256, 10971494, 6982543, +-162672, 9116605, 6345278, -11159936, 12008729, -10837276, 4526359, 10599442, -8032663, 9026411, +-10116795, -3265249, 4197257, 1923072, 9811316, -3489124, 8905615, -3700651, 3513820, 3586298, +766115, -4262218, -5886790, 24777130, -14712947, 15366856, -5829881, -15343234, -19984482, -5575405, +-2208687, 11639361, -17663590, -2781528, -2295123, 9228274, 17059074, 14445049, 8639327, 1487132, +-4765266, -2522757, -2130304, 12385075, 9644349, -2135136, 1185948, -2396592, 7423314, -18651970, +10854993, 6572374, 8372502, 3387119, 1534377, 16760036, -6971269, -13431436, -483184, -4056060, +363998, -18713172, -11290395, -507343, 15475841, -10206990, -4116189, 3400540, -1353989, 1285806, +15109158, 7271380, -3222836, 2370285, 6955163, 6182606, 17629768, -4265440, 7570417, 10668699, +4126927, -1584843, 2093797, -18538152, 7630010, -2026688, -77309, -2669322, -12075301, -12661564, +1988570, -4552666, -21225192, 7831336, -18156438, -9000641, -3853660, -21241298, -16200617, 10368588, +-25184078, -27985470, 18312666, 16521665, 6270116, 17803714, 29224032, 8990977, -9637370, 10055592, +-3166465, -6984691, 13991930, 1871532, -10388989, 8005819, 10415833, 3055332, 4426501, 1607392, +2612951, 26656714, 644245, 6387690, 3618510, 16845936, 2177012, 26401164, 1133335, -10432476, +21722334, 4981625, -7748121, -2412698, 12144557, -1482301, 1151588, 9214315, -14179298, 16231218, +-1882269, -22029424, -4938139, 2897492, -21257940, -1907502, -878321, 10598369, 11190000, 17664126, +-10406169, 3148211, 4348118, 4054449, 8988830, -10428717, -10515154, 6832756, 1523103, 13403519, +12535936, 3551938, 29306710, -4367445, -2044404, -18577344, 30152282, 4858145, 21839372, 11580306, +-28265716, 3937411, 6034966, 18087718, -6254010, 6262063, 16757352, -36595804, 21087216, 21545704, +-9791989, 4890357, 2563022, 5638755, -357556, 17169668, -13241921, -2969970, -14195941, -310311, +-8299488, 1060857, 3035468, -20010252, 8282845, 21488258, -15547245, -14310831, -15256798, 28709708, +-13313325, -7063611, 1890323, -9822590, -30609158, 5301601, 20777978, -29596082, -14339822, 10399190, +15014132, 4502737, -5471252, 7095286, -11528229, -4676146, -1580548, 15013058, -21276732, -15714748, +10297184, 18876382, 6121402, -22619446, -8666707, 1091995, -2311229, -3429532, 10762651, -2929705, +16852914, -14078366, -4617090, 785442, -18390514, 11651709, -21225728, -12554726, 4748623, -7682086, +17579838, 29032906, 14715095, -16874926, 8024073, -3688840, -7220914, -10928544, -5732171, -18617610, +14576582, 15217606, 6123013, 20490216, 34523484, -801011, -27090506, 5072357, -32219770, 4871567, +13843753, 6205154, 1366873, 18484466, 13538274, -1416266, -3450469, -26756036, -14663555, -184147, +-12809740, 34897148, -7028177, -8624294, -15876883, 1323924, 12775917, 8745090, -1058710, 6263136, +9813463, -16335908, 4796405, 29831770, 10179609, -21498458, -15336254, 9270150, -10952703, -2029909, +6777459, -5252208, -17894444, -4743255, 1420024, 28373090, -6971806, 5812702, -8435853, -24064702, +3353833, 28791850, -8693014, -18264886, 4324495, -11422466, 6343667, -6783901, -8088497, 19622632, +-6139119, -2882997, 8854075, -17971754, 5168993, 20892868, -10079215, 1394254, -13895830, 37264212, +-8364449, 4250407, 10471130, -8785892, -4145180, -9787157, 2757906, -10563472, -12625593, -9796820, +-57626648, -19915764, -635118, 18972482, -9319005, -28627568, -10531797, -3830574, 14641007, 4130685, +-3471407, -13940390, 15579457, 27371290, -11829414, 20796232, 5508833, -38144680, 14785425, 18532248, +-5961952, -15257871, -2550674, 24196772, 25754772, -1677185, -18855444, 1766305, -1818919, -2067490, +-15658914, 4381404, 7683160, -25021406, 17921288, 15335718, -17581448, 3732864, -19774566, 7532299, +49536004, -43551504, 45817636, 20968030, 2388002, 28201292, 14150307, -28072444, 17420388, -21023864, +-4489852, 23735064, 1393180, 7046431, -11661373, -20500416, 63652488, -14570140, 1177358, 25275346, +-11818139, 5160403, 2135136, 15697032, 35910760, 34178812, 32300838, 2245731, -453119, -4911295, +1803349, -8362838, 2631741, 27770722, -6749004, -8085276, 15330886, -3433826, -42374684, 19969988, +-30683246, 44292388, 5571647, -37482716, 8969502, 927713, 18232136, 9043591, -8863202, 33017024, +8230231, 2314987, 21927956, -16585016, -23745264, 1514513, 12856448, 44392244, -5884105, 906775, +-4333085, 32273994, 3644280, -24111946, -14561013, 5632313, -2580202, 14865956, -24103894, 12648679, +4112431, 8223252, -2035815, -8401493, 5641440, 10892037, 200253, 30407294, -47022912, 5371394, +-16547435, -9008157, -6026913, -33055142, -50016504, -50343460, -37643240, 5549635, 198642, -28406376, +-248034, -3727495, 3226594, -16785806, -48242684, 49512920, -872415, -4881767, 9669045, -44841608, +-3230889, -9246528, 8898635, 16559783, 64865816, 51219632, -5124433, 2696166, -932545, 16392816, +20871394, 16013786, -11276974, 59825672, -55239720, 10600516, -9881109, 3167002, 24712168, -16342351, +6879464, 1925219, -59853592, 2549063, -5879810, 4016331, 7972533, -26069914, -9175124, -43844100, +-10630044, -1046898, 3427921, -15837692, -11811697, -18366890, -7170448, 20689932, 5245229, 40549324, +10638097, -11920682, -12875775, 25522306, -25756382, 47630652, -34978212, 12035572, -27981176, 2201708, +28924994, -48771500, 48715128, 10162429, 6715182, -32780802, -5666136, -4599910, 1304596, 18719078, +17943300, 23154706, -38601556, 1367410, -14276471, -11079405, -13888314, -18820010, -13343927, 3722663, +24550034, -21240224, 8297877, -41517300, -13296145, 15294915, 15268609, 6782827, -49335216, -22836342, +-16284369, -20500952, -19611894, 8385387, -15037754, 35208532, 10089415, 23722714, -7073275, 25072946, +-47991428, 72500656, -55070072, -5950677, -33396592, 6362994, 304943, -20076288, -28696824, 32975686, +21721798, 10344966, -14946486, 14585709, 3959423, 31249108, -25304336, -16236587, 18742700, 32566590, +-42087996, 16878684, -2231236, 19880330, -15720117, 6002217, -19194208, 4065187, -35270272, 11612518, +35902168, -843961, -3843996, 46244448, 6906308, -20621212, -45876692, 38826504, -21427054, 17886928, +-17697412, 46444164, 18831820, -4252018, 3269007, -25615184, 2012192, 12343736, -14412837, 13835163, +-57087096, 22891102, 48354888, 40553080, -23716272, -21109228, -24800214, 27009438, -258235, -6268505, +-459025, 66842040, -34389268, -12510703, 22067542, -19027778, -61940408, 27824408, 9234717, -38381976, +18993420, 44681080, 30317100, -5679021, -23199802, -47500728, 24456618, -3321084, 5922760, -17755932, +14388677, -233002, 7596187, 1961190, 2077690, -10298795, 6808597, 24881820, -33091650, 27365920, +-5450851, -17597554, 5024038, -12111271, 6823630, -12381317, -10536092, 7802345, -26601416, -3080029, +33673080, -50131396, 13247290, 1977296, -9114457, -15658914, -18889266, -12114492, 35304632, -30092688, +-5108327, 11365020, -31097174, 7380902, 15709917, 10833518, 4777078, 4991289, -17983028, 13219909, +-45427868, 447750, 37960532, -16422344, -5382668, -8836895, -12023224, -365609, -32552630, 16681116, +11541114, -25975426, 23270670, 6925098, -30872224, 12408697, -7013145, 21823266, 17452600, -27181774, +8264591, 31229244, -30321396, 16936130, -22070764, 17263622, 17223356, -27784680, 15125264, 326954, +-15935402, 26377004, 7494718, -24980604, -122997664, -251165936, -108801720, -172081088, -228745120, 65336116, +13429289, 54343148, 302281952, 249196144, 159163440, 257382896, 170131168, 6822019, 30957050, 18137110, +-160544272, -109034728, -79650704, -181531632, -184757680, -62083752, -62337692, -120524296, -46225124, -37615860, +-141715664, -124048320, -49999324, -74748000, -134336384, -43758736, -34285652, -108287400, -24822226, 51373176, +-42058468, -36701032, 83191904, 45777908, -52475372, 72443752, 128463008, 3049427, 67160944, 160996320, +73006928, 32131188, 175762416, 125666448, 91253560, 216750896, 297444192, 233663408, 273540576, 357499648, +231496048, 149834224, 199367008, 127576632, -40175124, -10940355, -91579976, -223825248, -315535136, -336593888, +-450576416, -509102880, -538365568, -513171296, -487514752, -472316480, -378379104, -252343280, -194695696, 20937428, +161597072, 105515000, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, }, { { 11677479, --721555, -141734, 1270774, -1389959, -1471563, -1053341, 2721399, -7006703, 2644089, -1918777, -4832, 372052, -279173, -894964, 426276, 1571958, 2938295, -1367947, 3275450, -2646237, --2936147, -2094333, 1474784, -2743947, -1764158, 2119030, 412854, -886374, 2610266, -599148, -3758, 1705639, 921807, -1284732, -1789928, -1931662, -2195802, -4995584, 1326071, -1185411, --395137, 7590818, 661962, -1540283, 4350802, -1591822, 75162, -1959579, -3619584, 4491999, --1444183, -741419, 51003, -3106335, 995896, -136365, 2281165, -457414, 2287070, 889595, --629213, 2748779, -356482, 1005559, 1341104, -80531, -6255083, -71941, -914291, -2363306, -1582696, -525597, -1345935, -744640, -3873524, 2535641, 3999152, -1262720, 3567507, -455267, -3760244, 1938641, -685584, -1325534, 3809636, 412317, 854699, -4099546, -554051, -205622, --67646, 5834176, 2925410, -117575, -4184372, -3042448, -1729798, 612033, 24696, 1326608, -2762738, 883690, 1097901, -4269198, -543850, -4156992, 295816, -2269890, 2895882, 2830920, --977105, -2222109, 3022583, 674847, -959925, -3861176, -404264, -2464774, 828929, 2428804, --3841312, -1907502, -537408, -1531156, 10253161, 2425046, 5971615, 427349, 2041183, -53687, --2804614, -2738042, -3335579, 1593433, -2733747, 1994476, 177167, 2426120, 2668785, 6116571, -1977296, -648003, -224412, -3862249, 6098317, 5329518, 1020592, 1445793, 1575716, 1413044, -13799730, -3500935, -3128884, -1321776, -2978023, 462246, -6865505, 344134, 1107565, 168041, -4299263, 352187, -1162862, -4155918, 2323577, -5788006, -5097053, 1602560, -2615635, -1278290, --1093606, 798327, 3535295, 5060009, 122407, -936303, 5900212, 2101313, -642635, 105227, --2816425, -36507, 6478958, -105764, -3460670, -2651606, -1051193, 2203318, -3467112, -3957812, --4290673, -3316252, 2741263, -3118146, 791885, -3764539, 921271, 4410395, -102005, 3124052, --1762010, -2567854, -1676648, 2169495, -583042, 3387119, 4519916, 718333, -2006824, -2582349, --655519, -367220, -331249, 190589, -5000953, -412854, -2705293, -2163053, 1423245, 556198, -580357, 1759863, -6134287, -2735357, 1100049, -738734, 2367601, -10449655, -5397700, -2619930, --7298760, -2833068, -7028714, 1458678, -1064615, -4540854, -5193153, -1162326, -4335770, -552977, -2692408, -697932, -6343667, -2623151, -419833, -2736968, -2402497, 1241246, 4990752, 6607807, --1653026, -2326262, 3442416, 4065724, -1927904, -1481227, -1424319, -3614215, 438624, 1039382, --3401077, -2572686, -1205275, 2298881, 5479842, -23622, -2574833, -410169, -3586835, -1528472, --5382668, -2676838, -2701535, -8034810, -1376000, -3861176, -2975339, -8772471, 4629438, -4033511, --3815542, 1112933, -1106491, -974421, 507343, -7327214, -2405719, -2849711, -1154273, -4364224, --1157494, -2223183, 1232119, 2106682, -2887292, -1498407, -3953518, 928250, -1123671, -872415, --614717, -5223217, -748398, -4232154, -18380312, -1363115, -8993125, 8270497, -4613332, 14806363, --9281961, 9350144, -8198019, -449898, 45097, -6398428, 5191005, 213675, -2204392, 1526324, --1893007, -837519, -6052146, -63888, -4499515, 3731253, 1557463, 4559645, -2430952, 6804302, -6436009, -6036040, 1971927, -5153424, 5716602, -30602, -3464428, 222801, -198642, -304406, -4321811, 459562, -5538361, 2298344, 4632659, -434865, 5419175, -2504503, 4510790, -6310381, --2677375, 3810173, -3063386, 791348, 5883032, -5163088, 8485782, 2890513, -7359964, 1626719, --7044820, 2416993, 4814659, 2519535, 4687957, 5492190, 2622615, -1129040, 206695, -57445, -2581275, 3725884, -682363, 7423851, 2382096, 4852776, 3884798, 897648, 1433982, 11991549, --150861, -3548180, -1331440, -4781909, -5653788, 8689793, -1943473, -1530082, 7975218, -868657, --1788317, 3382824, 6164352, 1576790, 2961380, -406411, -7151658, -2088965, 5028333, -8174397, --8041790, -3197066, 1527935, -5845451, -3547106, -151398, -969589, 5223217, -2301029, -1475321, -5608154, 7776575, -7156490, 1543504, -1838783, 2652142, 630823, -3388729, -843424, 3051574, -4969277, -1683090, -7408819, -1942399, -797790, -2231236, -3771518, 199716, -610959, 986232, --1144609, 664109, 6630893, -5361730, 512712, -4179003, -3221762, -5619428, -1703491, -3418794, --7362111, -663036, 392453, -3240553, -647466, -3422015, 2720862, 3070365, -607738, 582505, --2632278, -1194538, 8783208, -1584306, -3485903, -11769284, 16247861, 18202608, 3806415, -6064494, -4478577, 7417946, 7466264, 4369056, 5749888, 2774549, 9141301, -491774, -620623, -3162707, -5910949, -2821257, -7205882, -10180146, 1675037, -4692252, -3892314, 4099010, -639950, -2448131, -9360344, -284005, 11518565, 464930, -3877282, -2642479, 4363687, 2906619, -1679332, -8412230, -13105019, 7607998, 577673, 7145752, 4589710, 4747550, -3619584, 5311801, 3078418, 1294933, --1000727, -1974611, -5032628, -7579007, 2748242, 4049617, -5578089, 2692945, 5816460, 8099772, -2624225, 7322383, 3842922, 6250251, -8367133, 2815351, 1358820, 1933272, 758062, -494995, -4306779, 3516505, 3848828, 4893579, -1125281, 2339147, 1828582, 6895033, 8905615, -4520453, --4910758, 14810658, 4880157, 6683506, -5022965, 2361695, -12853763, 953483, -9189083, 7437810, -5178120, -3781182, 6407555, 3660923, -6082748, -1392643, 9680856, -108448, 6794639, -1570347, -1685238, 7602629, -8826158, -545461, 1937030, 2871723, 1057099, 3133716, 842887, 9145059, --3706020, -2460480, -2236604, 6929393, 1366873, -3089692, 4654134, 11585674, -7483981, 1510755, -2100239, -614717, 5210332, -2248416, 9368397, 3015604, 2837363, -7135552, -73014, -1855426, -4734128, 3105261, 5087389, -4900558, -2503429, 4217658, -7861938, -4789963, 2747705, 9305584, -6451041, 8239358, -8057359, -2775086, -8148090, -2277943, 3755949, -666794, -7488276, 1287417, --4063576, 179315, -8039642, -10948409, -3060164, -7453379, 2560338, -17775260, -16087337, -11763379, -2750390, 2772938, 12191265, -6334003, 11551315, -5650567, -20725902, -2470143, -2492155, -8463233, --13621489, -5441724, -898185, -8715562, -678068, -13038447, 297963, -13712220, 6846715, -3990562, -4830765, -3273839, -819802, -4770635, -5276368, 7293928, 996432, -3081102, 8536248, 271120, -899796, 2373506, 7822746, 6602439, 5061082, -625455, -10469520, -1809255, 4228396, 665720, -5551245, -3702262, 2187749, -15362561, 4094178, 7990250, -11538967, 5692443, 1778117, 9587978, -7471633, -837519, -3213709, -1079647, 6604049, 2652679, -9735080, -8396124, -13273596, -7055558, --9022116, -2785823, -11038603, -3099893, -3903589, 10066330, -5349382, 4574140, -3028489, -2380486, --3670050, -8304856, -4064650, -21606370, 18331994, -3872450, 11227045, 6995428, 539555, -13909252, -12724377, 2662343, -107374, 8515310, 6192269, -5085778, 796716, 13795972, 5098663, -4609037, -9881646, -3789235, -3100967, -1560147, 3741990, 1240172, -804233, 2421825, 4692252, 4675609, -4371203, -8098698, 6583648, -6493991, 11363410, -5276368, 11304891, 4704063, 1784559, -8964134, --9707163, -2097018, -2726767, 13644037, 4217121, 11228655, 4855461, -7262253, 1079647, -471910, -4937065, 1798518, 4431870, 511638, -5148055, -1790465, 6942815, 17211544, 11911555, 3021510, -4575751, 703838, -1435593, 9855339, 7420093, -868120, 10579041, 15932181, 20146080, 2602213, --10293426, -11055246, 5523865, 4908611, 386547, 6056441, 1198833, -1299228, 1158567, 14964740, -10210211, -15610596, 12621298, 5057861, -10782515, 24293946, 3372086, -12752832, 2573222, 6618545, -310848, 4732517, 17248052, -17030620, 10617159, -6990596, 9358197, -3885335, 1673964, -15758772, -2226941, -1843078, 5826660, -6121402, 408559, 1064615, -322123, -9283572, 8280160, 806917, --1484985, 4028679, -2311766, 3972308, -2764885, 12284680, 9162776, 12161200, 11556683, -2073396, -3586298, 5186710, -170725, -6511171, 7879655, -10336376, 2369748, 10035191, -6867653, 5255966, --12218108, 3490198, -1923072, -2845953, -1973001, 699543, 2444910, 3174518, 10810433, -8067559, --1596117, 7623567, 15705622, -15425375, 2445447, -4127464, 3618510, -3301756, 23135378, -15969225, -3539590, -9400073, -6910603, 1046898, 71404, -244276, -24182814, 10991358, -15600395, -3695819, -20865488, -6901476, -927713, 10958609, 2185065, 6577743, -16449188, 14812805, 486405, 660888, --4560719, -10072235, -1838246, -1963874, -10795400, -6677601, 10865194, -4099010, 1655173, -6068789, --25586730, 8005819, 593779, -8211441, 4232154, 9229348, -1468879, 600759, -2527588, 1969779, -5997385, 1623498, 9977209, 6767258, 1053878, 8769249, -8055748, -7796977, -11066520, 3477850, -5389647, 1291175, -17220672, 4232691, -14831059, 20038170, -5567352, 6826851, 16754667, -7349226, -10346576, 2320356, 11296838, 4422206, -6681896, -18398566, -13780403, -10484552, -2338073, -10977936, --3133716, -9643812, -7103339, 17638894, 2675765, -8105677, -8231305, 3249143, 5087389, -1949378, -651224, -33215666, 10614475, 1520955, 6424198, -21045340, -25613038, 14247480, -12948790, -15002858, --4789963, 8630737, 18702436, -13596256, 325881, 8420283, -3492345, -4870493, 4294431, 2391223, -13903346, 4010426, -14741938, -1429150, -7818451, -1399086, -9036611, -11938398, 1005559, 10050223, --1494649, 3927748, -9817221, 1669669, 10200547, 7401303, 590558, -206695, 6114423, 5356361, -3422552, 8826158, -13297756, 12642236, 9237401, 2188286, -11124502, -490700, 7311645, -9540733, -8600672, -7896298, 9825275, -4231080, 13039521, -23153632, 22239340, 3850438, 20906828, -221191, --5414343, -3221762, 6986838, -1285269, -19009526, -1196685, -2222109, -20825760, 4946192, 11198053, --18909668, 12552579, -16873316, 2410014, 4754529, 594316, -21175262, -12306692, -11578695, -857383, --1846299, -11474005, -11162083, 17796734, 3873524, 11831561, 11479911, 3473555, -8238821, 2241436, -29795262, -19907710, 5221607, -3222299, -10712185, 994285, 4298189, 5085242, 200790, 401043, --5464809, -8181376, -12905840, -6372658, 10328859, -8075613, -12979928, 7956964, -4452271, 3235184, --1452773, 6237903, -5364414, 12814035, -4231080, 1633161, -6979, 1592896, 11809013, 4185446, --5109401, 6401649, -4671314, 9692667, -5475010, 4099546, -13345000, -9692131, -7082938, 2551211, --6624450, -11643119, 5081483, 8898098, 2638721, -6162741, 4071092, 6273874, 7002944, 18983218, -26031260, 35505420, -3754875, 5631239, 8344585, 4937065, 4456566, 5559299, -7727183, 13857175, --2640331, 18059800, 21776022, 16192564, 5461051, 8754754, 1198833, 30881352, 5191542, -7800198, -448287, 36171140, 29051696, -11610907, -5035313, -13971529, 9128416, 4948876, 17956722, -2225867, --6946573, -2546379, -10703595, 3416647, 950262, 17279728, -5638755, 7039452, -21573084, 13105019, --1291175, 9537512, 301185, 8765491, 1700807, -11491722, -6123550, -9677098, -7852274, 10181220, -22138408, 10670309, -2343979, -5588290, -75699, -612033, 5633924, 8647917, -13828184, 1030255, --4767414, -3324842, -15112379, -10320270, -24575266, 1900523, -1271310, 10364293, -7461432, 17322676, --12124156, -3649112, 31336618, 32937568, -21895206, 6593849, 17752174, -8666707, -5478768, 11260331, --4049081, -11166915, 34404300, -6583648, -54148800, 20017768, -1700270, -25064892, 19788524, 25018184, --9495099, 18440978, 18037788, -6605660, -1843078, 15366319, -16749299, 6757594, -14143864, -7499013, -1608465, 5268851, 10915123, 4754529, -10384157, -2768107, 7881802, -11034845, 9205726, -6036040, --13627931, 10466298, 5161477, 4650913, -3987877, -4344360, -5302674, -1768990, 8960376, -21219822, -9243306, -1605781, 16027207, -11764989, -649614, -14354318, 5055177, -22613002, 1723356, -311922, --9113921, -7724499, 2838974, -15691663, -25418690, 13736916, -1929514, 3183645, -15205795, 7647190, --2852932, 8297877, 9942312, 3742527, -10768020, 7140383, -5331128, -3729105, -19523310, 1286880, --13934485, -16501801, -22087944, -10514617, 3367791, 4510253, -22651120, -12751758, 1246077, -9705552, --30201674, -25706454, -24466282, -6810208, -14353244, 11384885, 19112068, 3300682, -17313550, -23021562, --23261542, -4231617, 587337, 10867878, -14171781, 28211492, 31251792, -5813238, 21561272, -4367982, --6393059, -6500970, 21082384, -15756088, -2371359, -6831683, 32607392, 2451890, 12956843, 5340255, --1269163, 16726750, 10337986, 13901199, 5701032, -761820, -3693135, 13315472, -249108, -10718628, -16647830, 748935, 14837501, -13398150, 12008729, 4712116, -12869870, -10317048, 28928752, 18587008, -333397, 10720238, 10114648, -16130287, -9175124, 6675453, 6437619, 12971875, 3664144, 3585761, -6902550, 15566572, 8297877, 4660577, -12264279, 41225780, 29470992, 3966402, -15708843, 9857487, --3603478, 5832029, -1584843, 9426379, -3300146, 2126546, 24976308, -14679124, -4655745, -19996294, -8651675, -4908074, -718333, 19710678, 8929237, 3234110, 4566087, -6803228, -12749610, 12780212, --8927626, -20243254, 55493124, -60555280, -6344204, -31446140, 40416180, 11589969, 7716983, -14502494, -4413079, -11639361, 36219996, -5287105, -1626182, 4664872, -1126892, -12852153, 5928666, 9154723, -11344619, -22890028, -12024298, -11224897, 5477694, -6103149, -5927055, 419833, 289910, 16966732, --7632694, 2031520, 12367895, -201327, -15378130, 3303904, 12950400, -155156, -24543054, 20025286, -2629057, 1749662, 327491, -9092446, 8572755, -44700408, -31914828, -2994666, -11244761, 3635690, -3808562, -20053202, 34251828, -11863773, 47063716, -4975720, -16200617, 17707076, 2850785, 16009491, -21824340, 8594230, -22183506, -4445828, 25089052, 59854128, 1918240, -13146895, 24126442, 3761855, -28344636, 6179921, 38237556, -8643085, -2405719, -129923, 7118372, 1540283, 79226040, 23972896, -8027831, -3417183, -9417790, -12415140, 25333864, 23032298, -28423020, 15426986, 11653320, 1829119, --9125732, -15710990, -38454452, -15200963, 11272679, 2805151, -12892418, 21601538, -8165807, 8022462, -8331163, -6727530, -6112812, 22475564, -166967, -10356240, 14027363, -14300630, 28326920, -15706159, --9509594, -3064459, 10514080, 4493610, 28601260, -10672994, -18534932, -7945690, 6856379, 267362, -14818711, 2494302, 366146, -8359617, 11654394, 53294640, 22386980, -22721988, 16544214, -13072807, --18096844, 11221676, -2013803, 1386738, -2646237, 7052337, -16352551, -25303262, -60999808, -18822158, -18965502, -11382737, -22731652, 4919885, -7584912, 4402879, -27114128, -25826712, -14067092, 2918430, -3751117, 20696374, -3451006, -13291313, -32837172, -11796128, 18494666, -13482976, 49625124, 41770704, -19971598, -10469520, -16445430, 30064234, 25892748, -32210108, -5921686, -19453518, 29080686, -4064113, --39419208, -16776679, 15080704, 25859462, -45700064, 19369766, -31413928, 12635794, -18249316, -4203699, -23092428, -6828998, 4128537, 14974940, 30499636, -18818400, -32020592, 7991861, -1904818, 4212826, -31186294, 8327405, 23411330, -28267864, -4742181, 9855876, -25213606, 42668888, -4399657, 25764436, --3053722, -5417565, 21114596, 21150030, -11543798, 46786688, -10573136, -19825570, 22582402, 40139152, -2374043, 7434589, 1932198, 17695266, -18883360, 14099841, 60180544, 27671938, -2391760, 26073136, -31795106, -24723980, -75068512, 4616016, 43123620, 48872968, 11725798, -7392176, -24698210, 21677774, -51570748, 14193256, 4184372, 32744294, -68387152, 50054624, 9512279, -32097902, -674310, 27369142, --20165408, -548682, 14891188, -21407728, 715112, -19418084, -12366821, 17521856, -17225504, -10794327, --35137128, 13277355, 32467268, 7762617, -15768972, -27067958, -4813585, 17412872, 9628780, -23447300, --1238024, 24380382, -4076998, -44023, -9488656, -8278013, 60950956, -31428424, -7991861, -8834211, -9922448, 26515518, -30698278, -19130322, 40157408, -6935299, -2815888, -50624244, -40164388, 14456860, -27127550, 12501039, -49555332, 31539018, -806917, -10110890, 7305740, -38057704, -9505836, -7311645, --17121888, 29061360, -24302536, -16772921, -26004416, -18548890, -34328600, 7395934, -53971096, -18925236, -7989176, -31182000, 8714489, 11236708, 9208410, -4934918, -6504191, -25176024, 34280820, -12871480, -3645354, -38524784, 23554138, -552440, 30428232, -6062883, 31442918, 4151623, -3987877, 14282914, -36416492, 17715666, 9299141, 7575786, 4585952, 14651207, -18433462, -1139240, -13881871, -14065481, -22235046, 14340896, 8370892, -6019397, -5869073, -2201708, 23153632, 4068408, -10687489, -16433619, --1128503, -3472481, 17223892, 3242700, 14295262, 28272160, -8203388, -69504920, 4068408, 57638996, -5356361, -41126460, -6059662, 16810502, 11940009, 23128398, 19588272, -892279, -14060112, -12754979, -16914118, -10000831, 1011465, 7106561, -73883640, -11721503, -15156940, 12501039, 55979528, -74088, -3236258, -12273406, 2408940, 12848395, 22393422, 13622026, -15965467, -6348499, -37314676, -994822, -22119082, -9550934, -7529615, 10129143, 21772262, 21088826, -9261560, 5425618, -16581258, -129274224, --230552768, -101205000, -160648416, -182510880, 90360744, 22304838, 81888384, 274791456, 174985552, 138440224, -214620048, 100026568, -6750615, 76334992, 8448738, -105668544, -78368656, -87021408, -181626112, -150184800, --72756208, -135877728, -148222000, -69413112, -96462280, -152519664, -85368920, -2920041, -100809328, -93402656, -4201552, -30700964, -92856120, 75932336, 45098232, -79912696, 53222696, 87503520, 2485712, 44757856, -189183648, 83421152, 48255568, 225193184, 154351456, 84588848, 222359584, 302291616, 183049888, 270444960, -353622912, 250164672, 162716448, 218194000, 110683992, -124140664, -84353160, -160112624, -363330080, -363053600, --367307200, -550160640, -542817856, -543141568, -565110336, -530449920, -514880672, -400015008, -316757600, -230056160, --81302656, 63319628, 121521264, 280087168, 421957440, 299317888, 219650000, 0, 0, 0, -0, 0, 0, }, +-721555, -141734, 1270774, -1389959, -1471563, -1053341, 2721399, -7006703, 2644089, -1918777, +4832, 372052, -279173, -894964, 426276, 1571958, 2938295, -1367947, 3275450, -2646237, +-2936147, -2094333, 1474784, -2743947, -1764158, 2119030, 412854, -886374, 2610266, -599148, +3758, 1705639, 921807, -1284732, -1789928, -1931662, -2195802, -4995584, 1326071, -1185411, +-395137, 7590818, 661962, -1540283, 4350802, -1591822, 75162, -1959579, -3619584, 4491999, +-1444183, -741419, 51003, -3106335, 995896, -136365, 2281165, -457414, 2287070, 889595, +-629213, 2748779, -356482, 1005559, 1341104, -80531, -6255083, -71941, -914291, -2363306, +1582696, -525597, -1345935, -744640, -3873524, 2535641, 3999152, -1262720, 3567507, -455267, +3760244, 1938641, -685584, -1325534, 3809636, 412317, 854699, -4099546, -554051, -205622, +-67646, 5834176, 2925410, -117575, -4184372, -3042448, -1729798, 612033, 24696, 1326608, +2762738, 883690, 1097901, -4269198, -543850, -4156992, 295816, -2269890, 2895882, 2830920, +-977105, -2222109, 3022583, 674847, -959925, -3861176, -404264, -2464774, 828929, 2428804, +-3841312, -1907502, -537408, -1531156, 10253161, 2425046, 5971615, 427349, 2041183, -53687, +-2804614, -2738042, -3335579, 1593433, -2733747, 1994476, 177167, 2426120, 2668785, 6116571, +1977296, -648003, -224412, -3862249, 6098317, 5329518, 1020592, 1445793, 1575716, 1413044, +13799730, -3500935, -3128884, -1321776, -2978023, 462246, -6865505, 344134, 1107565, 168041, +4299263, 352187, -1162862, -4155918, 2323577, -5788006, -5097053, 1602560, -2615635, -1278290, +-1093606, 798327, 3535295, 5060009, 122407, -936303, 5900212, 2101313, -642635, 105227, +-2816425, -36507, 6478958, -105764, -3460670, -2651606, -1051193, 2203318, -3467112, -3957812, +-4290673, -3316252, 2741263, -3118146, 791885, -3764539, 921271, 4410395, -102005, 3124052, +-1762010, -2567854, -1676648, 2169495, -583042, 3387119, 4519916, 718333, -2006824, -2582349, +-655519, -367220, -331249, 190589, -5000953, -412854, -2705293, -2163053, 1423245, 556198, +580357, 1759863, -6134287, -2735357, 1100049, -738734, 2367601, -10449655, -5397700, -2619930, +-7298760, -2833068, -7028714, 1458678, -1064615, -4540854, -5193153, -1162326, -4335770, -552977, +2692408, -697932, -6343667, -2623151, -419833, -2736968, -2402497, 1241246, 4990752, 6607807, +-1653026, -2326262, 3442416, 4065724, -1927904, -1481227, -1424319, -3614215, 438624, 1039382, +-3401077, -2572686, -1205275, 2298881, 5479842, -23622, -2574833, -410169, -3586835, -1528472, +-5382668, -2676838, -2701535, -8034810, -1376000, -3861176, -2975339, -8772471, 4629438, -4033511, +-3815542, 1112933, -1106491, -974421, 507343, -7327214, -2405719, -2849711, -1154273, -4364224, +-1157494, -2223183, 1232119, 2106682, -2887292, -1498407, -3953518, 928250, -1123671, -872415, +-614717, -5223217, -748398, -4232154, -18380312, -1363115, -8993125, 8270497, -4613332, 14806363, +-9281961, 9350144, -8198019, -449898, 45097, -6398428, 5191005, 213675, -2204392, 1526324, +-1893007, -837519, -6052146, -63888, -4499515, 3731253, 1557463, 4559645, -2430952, 6804302, +6436009, -6036040, 1971927, -5153424, 5716602, -30602, -3464428, 222801, -198642, -304406, +4321811, 459562, -5538361, 2298344, 4632659, -434865, 5419175, -2504503, 4510790, -6310381, +-2677375, 3810173, -3063386, 791348, 5883032, -5163088, 8485782, 2890513, -7359964, 1626719, +-7044820, 2416993, 4814659, 2519535, 4687957, 5492190, 2622615, -1129040, 206695, -57445, +2581275, 3725884, -682363, 7423851, 2382096, 4852776, 3884798, 897648, 1433982, 11991549, +-150861, -3548180, -1331440, -4781909, -5653788, 8689793, -1943473, -1530082, 7975218, -868657, +-1788317, 3382824, 6164352, 1576790, 2961380, -406411, -7151658, -2088965, 5028333, -8174397, +-8041790, -3197066, 1527935, -5845451, -3547106, -151398, -969589, 5223217, -2301029, -1475321, +5608154, 7776575, -7156490, 1543504, -1838783, 2652142, 630823, -3388729, -843424, 3051574, +4969277, -1683090, -7408819, -1942399, -797790, -2231236, -3771518, 199716, -610959, 986232, +-1144609, 664109, 6630893, -5361730, 512712, -4179003, -3221762, -5619428, -1703491, -3418794, +-7362111, -663036, 392453, -3240553, -647466, -3422015, 2720862, 3070365, -607738, 582505, +-2632278, -1194538, 8783208, -1584306, -3485903, -11769284, 16247861, 18202608, 3806415, -6064494, +4478577, 7417946, 7466264, 4369056, 5749888, 2774549, 9141301, -491774, -620623, -3162707, +5910949, -2821257, -7205882, -10180146, 1675037, -4692252, -3892314, 4099010, -639950, -2448131, +9360344, -284005, 11518565, 464930, -3877282, -2642479, 4363687, 2906619, -1679332, -8412230, +13105019, 7607998, 577673, 7145752, 4589710, 4747550, -3619584, 5311801, 3078418, 1294933, +-1000727, -1974611, -5032628, -7579007, 2748242, 4049617, -5578089, 2692945, 5816460, 8099772, +2624225, 7322383, 3842922, 6250251, -8367133, 2815351, 1358820, 1933272, 758062, -494995, +4306779, 3516505, 3848828, 4893579, -1125281, 2339147, 1828582, 6895033, 8905615, -4520453, +-4910758, 14810658, 4880157, 6683506, -5022965, 2361695, -12853763, 953483, -9189083, 7437810, +5178120, -3781182, 6407555, 3660923, -6082748, -1392643, 9680856, -108448, 6794639, -1570347, +1685238, 7602629, -8826158, -545461, 1937030, 2871723, 1057099, 3133716, 842887, 9145059, +-3706020, -2460480, -2236604, 6929393, 1366873, -3089692, 4654134, 11585674, -7483981, 1510755, +2100239, -614717, 5210332, -2248416, 9368397, 3015604, 2837363, -7135552, -73014, -1855426, +4734128, 3105261, 5087389, -4900558, -2503429, 4217658, -7861938, -4789963, 2747705, 9305584, +6451041, 8239358, -8057359, -2775086, -8148090, -2277943, 3755949, -666794, -7488276, 1287417, +-4063576, 179315, -8039642, -10948409, -3060164, -7453379, 2560338, -17775260, -16087337, -11763379, +2750390, 2772938, 12191265, -6334003, 11551315, -5650567, -20725902, -2470143, -2492155, -8463233, +-13621489, -5441724, -898185, -8715562, -678068, -13038447, 297963, -13712220, 6846715, -3990562, +4830765, -3273839, -819802, -4770635, -5276368, 7293928, 996432, -3081102, 8536248, 271120, +899796, 2373506, 7822746, 6602439, 5061082, -625455, -10469520, -1809255, 4228396, 665720, +5551245, -3702262, 2187749, -15362561, 4094178, 7990250, -11538967, 5692443, 1778117, 9587978, +7471633, -837519, -3213709, -1079647, 6604049, 2652679, -9735080, -8396124, -13273596, -7055558, +-9022116, -2785823, -11038603, -3099893, -3903589, 10066330, -5349382, 4574140, -3028489, -2380486, +-3670050, -8304856, -4064650, -21606370, 18331994, -3872450, 11227045, 6995428, 539555, -13909252, +12724377, 2662343, -107374, 8515310, 6192269, -5085778, 796716, 13795972, 5098663, -4609037, +9881646, -3789235, -3100967, -1560147, 3741990, 1240172, -804233, 2421825, 4692252, 4675609, +4371203, -8098698, 6583648, -6493991, 11363410, -5276368, 11304891, 4704063, 1784559, -8964134, +-9707163, -2097018, -2726767, 13644037, 4217121, 11228655, 4855461, -7262253, 1079647, -471910, +4937065, 1798518, 4431870, 511638, -5148055, -1790465, 6942815, 17211544, 11911555, 3021510, +4575751, 703838, -1435593, 9855339, 7420093, -868120, 10579041, 15932181, 20146080, 2602213, +-10293426, -11055246, 5523865, 4908611, 386547, 6056441, 1198833, -1299228, 1158567, 14964740, +10210211, -15610596, 12621298, 5057861, -10782515, 24293946, 3372086, -12752832, 2573222, 6618545, +310848, 4732517, 17248052, -17030620, 10617159, -6990596, 9358197, -3885335, 1673964, -15758772, +2226941, -1843078, 5826660, -6121402, 408559, 1064615, -322123, -9283572, 8280160, 806917, +-1484985, 4028679, -2311766, 3972308, -2764885, 12284680, 9162776, 12161200, 11556683, -2073396, +3586298, 5186710, -170725, -6511171, 7879655, -10336376, 2369748, 10035191, -6867653, 5255966, +-12218108, 3490198, -1923072, -2845953, -1973001, 699543, 2444910, 3174518, 10810433, -8067559, +-1596117, 7623567, 15705622, -15425375, 2445447, -4127464, 3618510, -3301756, 23135378, -15969225, +3539590, -9400073, -6910603, 1046898, 71404, -244276, -24182814, 10991358, -15600395, -3695819, +20865488, -6901476, -927713, 10958609, 2185065, 6577743, -16449188, 14812805, 486405, 660888, +-4560719, -10072235, -1838246, -1963874, -10795400, -6677601, 10865194, -4099010, 1655173, -6068789, +-25586730, 8005819, 593779, -8211441, 4232154, 9229348, -1468879, 600759, -2527588, 1969779, +5997385, 1623498, 9977209, 6767258, 1053878, 8769249, -8055748, -7796977, -11066520, 3477850, +5389647, 1291175, -17220672, 4232691, -14831059, 20038170, -5567352, 6826851, 16754667, -7349226, +10346576, 2320356, 11296838, 4422206, -6681896, -18398566, -13780403, -10484552, -2338073, -10977936, +-3133716, -9643812, -7103339, 17638894, 2675765, -8105677, -8231305, 3249143, 5087389, -1949378, +651224, -33215666, 10614475, 1520955, 6424198, -21045340, -25613038, 14247480, -12948790, -15002858, +-4789963, 8630737, 18702436, -13596256, 325881, 8420283, -3492345, -4870493, 4294431, 2391223, +13903346, 4010426, -14741938, -1429150, -7818451, -1399086, -9036611, -11938398, 1005559, 10050223, +-1494649, 3927748, -9817221, 1669669, 10200547, 7401303, 590558, -206695, 6114423, 5356361, +3422552, 8826158, -13297756, 12642236, 9237401, 2188286, -11124502, -490700, 7311645, -9540733, +8600672, -7896298, 9825275, -4231080, 13039521, -23153632, 22239340, 3850438, 20906828, -221191, +-5414343, -3221762, 6986838, -1285269, -19009526, -1196685, -2222109, -20825760, 4946192, 11198053, +-18909668, 12552579, -16873316, 2410014, 4754529, 594316, -21175262, -12306692, -11578695, -857383, +-1846299, -11474005, -11162083, 17796734, 3873524, 11831561, 11479911, 3473555, -8238821, 2241436, +29795262, -19907710, 5221607, -3222299, -10712185, 994285, 4298189, 5085242, 200790, 401043, +-5464809, -8181376, -12905840, -6372658, 10328859, -8075613, -12979928, 7956964, -4452271, 3235184, +-1452773, 6237903, -5364414, 12814035, -4231080, 1633161, -6979, 1592896, 11809013, 4185446, +-5109401, 6401649, -4671314, 9692667, -5475010, 4099546, -13345000, -9692131, -7082938, 2551211, +-6624450, -11643119, 5081483, 8898098, 2638721, -6162741, 4071092, 6273874, 7002944, 18983218, +26031260, 35505420, -3754875, 5631239, 8344585, 4937065, 4456566, 5559299, -7727183, 13857175, +-2640331, 18059800, 21776022, 16192564, 5461051, 8754754, 1198833, 30881352, 5191542, -7800198, +448287, 36171140, 29051696, -11610907, -5035313, -13971529, 9128416, 4948876, 17956722, -2225867, +-6946573, -2546379, -10703595, 3416647, 950262, 17279728, -5638755, 7039452, -21573084, 13105019, +-1291175, 9537512, 301185, 8765491, 1700807, -11491722, -6123550, -9677098, -7852274, 10181220, +22138408, 10670309, -2343979, -5588290, -75699, -612033, 5633924, 8647917, -13828184, 1030255, +-4767414, -3324842, -15112379, -10320270, -24575266, 1900523, -1271310, 10364293, -7461432, 17322676, +-12124156, -3649112, 31336618, 32937568, -21895206, 6593849, 17752174, -8666707, -5478768, 11260331, +-4049081, -11166915, 34404300, -6583648, -54148800, 20017768, -1700270, -25064892, 19788524, 25018184, +-9495099, 18440978, 18037788, -6605660, -1843078, 15366319, -16749299, 6757594, -14143864, -7499013, +1608465, 5268851, 10915123, 4754529, -10384157, -2768107, 7881802, -11034845, 9205726, -6036040, +-13627931, 10466298, 5161477, 4650913, -3987877, -4344360, -5302674, -1768990, 8960376, -21219822, +9243306, -1605781, 16027207, -11764989, -649614, -14354318, 5055177, -22613002, 1723356, -311922, +-9113921, -7724499, 2838974, -15691663, -25418690, 13736916, -1929514, 3183645, -15205795, 7647190, +-2852932, 8297877, 9942312, 3742527, -10768020, 7140383, -5331128, -3729105, -19523310, 1286880, +-13934485, -16501801, -22087944, -10514617, 3367791, 4510253, -22651120, -12751758, 1246077, -9705552, +-30201674, -25706454, -24466282, -6810208, -14353244, 11384885, 19112068, 3300682, -17313550, -23021562, +-23261542, -4231617, 587337, 10867878, -14171781, 28211492, 31251792, -5813238, 21561272, -4367982, +-6393059, -6500970, 21082384, -15756088, -2371359, -6831683, 32607392, 2451890, 12956843, 5340255, +-1269163, 16726750, 10337986, 13901199, 5701032, -761820, -3693135, 13315472, -249108, -10718628, +16647830, 748935, 14837501, -13398150, 12008729, 4712116, -12869870, -10317048, 28928752, 18587008, +333397, 10720238, 10114648, -16130287, -9175124, 6675453, 6437619, 12971875, 3664144, 3585761, +6902550, 15566572, 8297877, 4660577, -12264279, 41225780, 29470992, 3966402, -15708843, 9857487, +-3603478, 5832029, -1584843, 9426379, -3300146, 2126546, 24976308, -14679124, -4655745, -19996294, +8651675, -4908074, -718333, 19710678, 8929237, 3234110, 4566087, -6803228, -12749610, 12780212, +-8927626, -20243254, 55493124, -60555280, -6344204, -31446140, 40416180, 11589969, 7716983, -14502494, +4413079, -11639361, 36219996, -5287105, -1626182, 4664872, -1126892, -12852153, 5928666, 9154723, +11344619, -22890028, -12024298, -11224897, 5477694, -6103149, -5927055, 419833, 289910, 16966732, +-7632694, 2031520, 12367895, -201327, -15378130, 3303904, 12950400, -155156, -24543054, 20025286, +2629057, 1749662, 327491, -9092446, 8572755, -44700408, -31914828, -2994666, -11244761, 3635690, +3808562, -20053202, 34251828, -11863773, 47063716, -4975720, -16200617, 17707076, 2850785, 16009491, +21824340, 8594230, -22183506, -4445828, 25089052, 59854128, 1918240, -13146895, 24126442, 3761855, +28344636, 6179921, 38237556, -8643085, -2405719, -129923, 7118372, 1540283, 79226040, 23972896, +8027831, -3417183, -9417790, -12415140, 25333864, 23032298, -28423020, 15426986, 11653320, 1829119, +-9125732, -15710990, -38454452, -15200963, 11272679, 2805151, -12892418, 21601538, -8165807, 8022462, +8331163, -6727530, -6112812, 22475564, -166967, -10356240, 14027363, -14300630, 28326920, -15706159, +-9509594, -3064459, 10514080, 4493610, 28601260, -10672994, -18534932, -7945690, 6856379, 267362, +14818711, 2494302, 366146, -8359617, 11654394, 53294640, 22386980, -22721988, 16544214, -13072807, +-18096844, 11221676, -2013803, 1386738, -2646237, 7052337, -16352551, -25303262, -60999808, -18822158, +18965502, -11382737, -22731652, 4919885, -7584912, 4402879, -27114128, -25826712, -14067092, 2918430, +3751117, 20696374, -3451006, -13291313, -32837172, -11796128, 18494666, -13482976, 49625124, 41770704, +19971598, -10469520, -16445430, 30064234, 25892748, -32210108, -5921686, -19453518, 29080686, -4064113, +-39419208, -16776679, 15080704, 25859462, -45700064, 19369766, -31413928, 12635794, -18249316, -4203699, +23092428, -6828998, 4128537, 14974940, 30499636, -18818400, -32020592, 7991861, -1904818, 4212826, +31186294, 8327405, 23411330, -28267864, -4742181, 9855876, -25213606, 42668888, -4399657, 25764436, +-3053722, -5417565, 21114596, 21150030, -11543798, 46786688, -10573136, -19825570, 22582402, 40139152, +2374043, 7434589, 1932198, 17695266, -18883360, 14099841, 60180544, 27671938, -2391760, 26073136, +31795106, -24723980, -75068512, 4616016, 43123620, 48872968, 11725798, -7392176, -24698210, 21677774, +51570748, 14193256, 4184372, 32744294, -68387152, 50054624, 9512279, -32097902, -674310, 27369142, +-20165408, -548682, 14891188, -21407728, 715112, -19418084, -12366821, 17521856, -17225504, -10794327, +-35137128, 13277355, 32467268, 7762617, -15768972, -27067958, -4813585, 17412872, 9628780, -23447300, +-1238024, 24380382, -4076998, -44023, -9488656, -8278013, 60950956, -31428424, -7991861, -8834211, +9922448, 26515518, -30698278, -19130322, 40157408, -6935299, -2815888, -50624244, -40164388, 14456860, +27127550, 12501039, -49555332, 31539018, -806917, -10110890, 7305740, -38057704, -9505836, -7311645, +-17121888, 29061360, -24302536, -16772921, -26004416, -18548890, -34328600, 7395934, -53971096, -18925236, +7989176, -31182000, 8714489, 11236708, 9208410, -4934918, -6504191, -25176024, 34280820, -12871480, +3645354, -38524784, 23554138, -552440, 30428232, -6062883, 31442918, 4151623, -3987877, 14282914, +36416492, 17715666, 9299141, 7575786, 4585952, 14651207, -18433462, -1139240, -13881871, -14065481, +22235046, 14340896, 8370892, -6019397, -5869073, -2201708, 23153632, 4068408, -10687489, -16433619, +-1128503, -3472481, 17223892, 3242700, 14295262, 28272160, -8203388, -69504920, 4068408, 57638996, +5356361, -41126460, -6059662, 16810502, 11940009, 23128398, 19588272, -892279, -14060112, -12754979, +16914118, -10000831, 1011465, 7106561, -73883640, -11721503, -15156940, 12501039, 55979528, -74088, +3236258, -12273406, 2408940, 12848395, 22393422, 13622026, -15965467, -6348499, -37314676, -994822, +22119082, -9550934, -7529615, 10129143, 21772262, 21088826, -9261560, 5425618, -16581258, -129274224, +-230552768, -101205000, -160648416, -182510880, 90360744, 22304838, 81888384, 274791456, 174985552, 138440224, +214620048, 100026568, -6750615, 76334992, 8448738, -105668544, -78368656, -87021408, -181626112, -150184800, +-72756208, -135877728, -148222000, -69413112, -96462280, -152519664, -85368920, -2920041, -100809328, -93402656, +4201552, -30700964, -92856120, 75932336, 45098232, -79912696, 53222696, 87503520, 2485712, 44757856, +189183648, 83421152, 48255568, 225193184, 154351456, 84588848, 222359584, 302291616, 183049888, 270444960, +353622912, 250164672, 162716448, 218194000, 110683992, -124140664, -84353160, -160112624, -363330080, -363053600, +-367307200, -550160640, -542817856, -543141568, -565110336, -530449920, -514880672, -400015008, -316757600, -230056160, +-81302656, 63319628, 121521264, 280087168, 421957440, 299317888, 219650000, 0, 0, 0, +0, 0, 0, }, { 12633646, -1332514, 2347737, 4104378, -5537287, -1505923, -3160022, -670552, -1440425, -3429532, -386010, --508417, -3372086, 4203699, -2761664, -1741072, -284542, -1544578, 3635690, -1651415, -2587718, -1075889, 1333587, 3838627, -387621, 816044, -2459406, -484258, 279710, 1143535, 260382, --103079, 3945464, -2310156, 889058, 238908, -2445447, -5657546, -2268280, 1213328, 1976222, -2039036, -5528160, 4306242, -2130304, -2319819, 2320893, 932545, -4861903, 1867774, -4975183, --1459752, 2103997, -3885872, -1548336, 3351685, -1257352, -2206540, -2840584, -5541045, 4292283, -1531156, -1764695, -1698123, -3736622, -4242891, -4867272, -1057636, -3209951, -52076, -222801, --271120, 305480, -307627, -3107409, -7095286, -796716, 6358699, -5968931, 2101850, -9950365, --36507, -3712999, 3800509, -3482682, 766115, -2423972, -4217121, -1240172, -510564, 2777233, -3604551, -3727495, -6260989, 3018825, 994822, 2043331, 1258425, 2331630, -3658775, -2898566, -549219, -908386, 3122978, 2075006, -2804614, -829466, 2371359, 4285304, 2724083, -222265, --3620658, 1648194, -666794, -2168422, 2452963, 801011, -3311957, -3026341, -2255932, 1525787, --3231963, -2033667, 2667175, 714038, -112743, -3687230, 1225676, -3230889, -7430294, 369367, --2520609, -5175973, 2220498, -1764695, -1342714, -2065342, 140123, 3208341, 2248416, 756988, -1722819, 2249489, -5530844, 2364380, -2153389, -2753074, -1161789, 1183800, 421444, 3149822, -14850923, -1255741, 2726767, 3262565, -1512365, 1530082, 5927592, -4626217, -800475, 1675037, --2275259, -471910, 4369056, -1427003, -952409, -328565, 1715839, -861141, 2128693, -1502165, --1404454, -702227, -3326989, -5798206, -1036161, -1890859, -718870, 3343632, -6040872, 7446400, -108448, 76236, 326418, 1357747, -107374, -2943126, 533113, 2246268, 5742908, 214212, -50466, -933082, -1809255, 3686693, 1891396, -1452236, 2187749, -3827890, 759672, 1110786, --2705830, -9828496, -2911451, -334471, -425202, -557809, -698469, -1337346, -535260, -1950989, -2571075, 7075959, 4266513, 211527, 203474, -296353, 2745558, -1573569, -6283537, -333934, --3115462, 2033130, -3528316, 2058363, -9019968, -262530, -487479, -12950937, -12485470, -4618164, --1744831, -1670205, 132070, 3320547, 881005, 2724620, -5803038, 3064459, 3806952, 3703873, -4297652, -3093987, 1013612, 9983115, -5972689, -68719, -4223027, -6138582, -641024, -294205, -5561983, -2488934, 682900, -4537633, 3119220, 2043331, 2470680, -10362145, 1729261, -1754494, --3588445, -818728, 52076, -7631083, -4956393, -4176856, -251256, 6717866, 2362769, 2359548, -3232500, -2716030, 1940252, -2408403, 5672041, 8804683, -715649, -562104, 2526515, 838056, -2301029, 5071283, -2188286, 5249524, -712965, 117038, 3012920, 4326643, -1482301, -5541582, --5339718, 2389613, -721555, -671626, -2382633, 3000035, -4528506, 2028298, 3238942, 6041409, --3512210, 5796059, 3122978, 1990717, -14343043, 6150930, -6445136, 11455752, -10744934, 8373039, -4240744, -4476430, -5603322, -3121904, 2144799, 1950452, -3049427, 6754910, -2487323, -6495601, --1371168, 6994354, 4754529, -7101192, 1083942, -894964, -7477538, -3078955, -4828080, -1114544, --5737003, -1503775, -2422362, -7821136, -2843805, 3997541, 5657546, -1075352, -6764574, -1324461, -4711043, -1421097, 117575, 375273, 60130, -6616934, -244813, -729071, -1740536, -231391, -1132798, -4687420, 2685428, -5011153, -157840, 89121, 60130, 3940633, 32212, -1604170, -1501628, 2818572, 6230387, 3077344, 1377611, -1577327, -3946538, -3391951, -1584306, -3686156, --2942053, 2738579, 4037806, -2579128, -5151277, -2925947, 1496796, 1556389, -4905390, 17923436, -7387344, -730681, 4389457, -2363843, 10223633, 4596152, 18073760, 792421, -16671989, 4846334, -10770704, -5689221, 2220498, 7611756, -5082557, 5515812, -4049081, -472446, -5089000, -4721780, --1263794, 1958505, -182536, 2881923, -1968169, 8096014, -4150012, 2672544, 1770600, 5468030, --8658117, -4155381, -3192771, -506269, -2833068, 1423782, 5871757, 4517232, 9109626, -685047, --295279, -4378719, -1287417, 6146098, -5040681, 5199595, -4694936, -1465658, 8379481, 12272869, -8659728, 2150705, -5777268, 5006322, 3533148, -2521146, 7097434, -3690451, 1676648, 1865090, --11993159, 726923, -11346767, -3829500, 2221035, -2161979, -5218922, -3769908, 1352378, 9120900, -2398739, -2084133, -3663070, -2237141, 1246614, 2705293, 11054172, 22185116, -9373229, -6897181, --1736777, -2362769, 7844221, -7090991, -13152264, -4390531, 1103807, -3028489, 3993783, 2052994, -6802692, 3034395, -2506650, 9812927, 9105868, -3865471, 792958, -5893769, -911070, 617938, --3665755, -450435, 6810745, 9888625, 504659, 1882806, 4061429, 2836826, 1653026, 978179, --3526168, -6560563, 893890, -9571871, 453119, 2631204, -3068754, 4259534, -2425583, -5104032, --345745, 5726802, 2439542, -1987496, 16267189, 372052, 5295158, -9203578, -2080375, 7067369, --3032247, -6663105, 4263829, -7866770, -7436199, 2232309, 9251360, -6963753, -4159139, -1631551, -455803, -2770254, -3306588, 13084081, 7351374, -355945, 823560, -4959077, -3990025, -1323924, -4037269, 8571144, -15732465, -2232846, -11847130, -6809134, -10741713, -2838974, -1754494, -1733556, --4203163, 4604742, -15078020, 7552163, -5218922, 4433480, 1884954, 6101001, 238371, 2447595, --6139656, -2700998, 2687576, -6149320, -4463545, 7208029, 1926830, 3184718, 2856153, -897648, -1882806, 10798085, -4014721, 907849, -5021891, 8654359, -5399311, -19696720, 5972689, 2930778, -8151848, 4303557, 11267310, -7804493, -3104188, 6701223, -2909840, -6693170, -3154654, 3419331, --9555765, 9247601, -379568, 6118181, -8066486, -3658775, -2951716, -8831527, -1803886, -7045894, --3178813, 608275, 9992778, 7941932, -925565, -12394739, -7010997, -2364380, 9719511, 7958038, -5852967, 5358509, -3463354, -14231374, -3690451, -317828, 3140695, -21105470, -25367150, -14604499, -9495636, 188979, -5266167, -5862094, -8555575, -1453846, 2018635, -14405320, -1983738, 8105140, --5993090, -4388920, 9059160, 1964411, -7093676, 1862942, -6891275, 13852880, -5349382, -4013110, -3980898, -8083666, -5402532, -4972499, 1743757, -5777268, -2658585, 1861332, 1033477, -17503602, -6863895, 6844568, -5606543, 12591770, 4316442, 724776, 11853573, 6666863, 1504849, 1253057, -12859132, -1857573, -3082713, -1408212, 7592966, 4199941, -13116293, 4313758, 3070902, -545461, --7377680, -20343112, 7960722, -1731409, -5742372, -12883291, -7906498, 7293392, -2513093, -3980898, --9227737, -16495896, 687732, -2497524, -9590125, -3804267, -16362215, -2532420, -4576825, -2824478, --1898912, 5829345, 10361609, -21072720, 17119740, 1070521, 8778913, -1424855, -649077, 1747515, -9450539, 1092532, -1136019, -12612708, 4573604, -1210107, -9874667, 2794413, -6462852, -4736812, -18324478, 5459441, 5616744, -3695819, 6525129, 8211978, 7608535, -4150012, 6622303, 3793530, --7807177, 5370320, -7609072, -2234994, 4685810, 2654290, -903017, -3764539, -4056597, 12624519, --3704409, -4907000, -3599720, 2967823, 2465311, -5327370, -10041634, -187905, -10777147, -688269, --9756018, -3003793, -2515240, 2494302, -5126044, -7584912, 10115722, -3609383, -11782706, 8067023, -11897059, -5148055, -4286378, 7015829, 4104378, 13002477, 7424925, 2152852, -571231, -11489574, -2519535, 12990129, 9074729, -7388955, 8569533, 11078331, -7309498, -17315698, -6791417, -15087146, -4434017, -33394444, 16539919, 4936528, -1217086, 23119272, -970663, 11873437, -9798431, -2037962, -2178622, 486405, 13400835, 8614094, -17284560, 11369315, 1226213, 6954626, -15523086, -300111, -9599789, -15311022, 19957102, 5607617, 198105, -6682432, 1580011, 8764955, -13605383, 1580548, -4000762, 2758443, -8221641, -2932389, 8607651, 4887136, -447213, 1464047, -5248450, -9491878, -4466229, -16222091, -234076, 23759222, 23449984, -7175817, 3310883, -847719, 7049652, 16689706, -1868311, 8027294, 3112241, -8617315, -160524, -1621350, -24474872, -11287711, 15977815, 653909, -5299453, -6158446, -981400, 5293547, 8060580, -986232, 19849192, -156766, 15660525, 1262720, -3885335, 1115081, -8983998, -13539884, 16300475, 1772748, -6173479, 11644193, -24252606, 10215043, -15849503, -1821066, 4967130, 7290170, -3398393, -2073932, 9932649, -3303367, 14887430, -13523778, -7928510, 18223546, -18844170, 1050120, -8756901, 11594801, 5174899, 9650792, -9334038, -7360500, -287763, 24475408, 681826, 12483859, -5036923, 945430, -1261110, -1965484, -10353019, -241592, --2608119, 5098663, -4392141, -6839199, -5450314, -318901, -1628330, 11062225, 2299418, -5969468, --5077725, -5509370, -1626182, -2611877, 18295486, 799401, 9392557, 609349, -3885872, -3947075, -15278809, 11032160, -3878892, -14108968, 8312909, 5309117, -30491584, 1619203, 17821966, 16777216, -4356708, 13246216, -18239652, 30209190, 3086471, 5455146, 6477885, 14110041, -638340, -13577465, --3306588, -15958488, 18637474, -7713225, 9160092, -18491444, -14874009, 12814572, 10667625, 26596048, --9783399, -7273527, -5118528, 4890894, -11738682, -1509681, 4068408, -915365, 14003741, 9188546, --11957189, 977642, 2934537, 8284455, -13596256, 13784698, -711354, 6128919, -2827699, -6248641, --14295799, 4942971, -2924336, -5703180, 2216203, -8311836, -8798241, -1662689, 3726421, 16940962, --25503516, -14794015, -14060649, -14772003, -4935991, 17696876, -10933376, -63351, 16367047, -2037425, --8424578, -14267881, -4745402, -5776194, -31384400, -23081154, -7507066, 6129455, -3753802, 6209986, --7658464, -3934727, 13646722, 9867687, -16229071, -6673306, -18089866, -5411659, 405874, 8450348, --4112431, 3668439, -15707769, -9570261, -11819213, 2185602, 1299228, 3857418, -15034533, 3892314, -17846662, 9912785, -13196824, 2417530, -1511829, 30107184, 3231963, 14433238, -12656195, -8690866, --3148748, -14375256, -9083319, -13905493, -6436009, -9085466, 16353088, 3923990, 4099010, 16679505, --487479, -1199370, 7594576, 14944876, 23727546, 17098802, -3613141, -6754910, -27416386, 7212861, -8526047, 2981244, -17128330, 19342922, 7799124, 11170673, -3318936, 638340, 11116986, 24150602, -23890218, 13302051, 2771865, 25042344, 510027, -8284992, 8139500, 14851997, 12415677, 22302692, -11934640, -296890, 2491618, -14795089, 5702106, -35730908, -6344204, -4545686, 7262790, 26175142, -14856829, 2764348, 19250044, -15817291, -13783624, 1262184, -34578780, -9792525, 410169, 4528506, -6648610, 6708739, -3432753, 12237972, 147640, 4574677, 25263534, -20795694, -11012833, -10520522, --22996866, -7028177, 4505958, 17940616, 32600412, -12652974, 803696, 5717675, -5718749, 30372934, -5509906, -14358076, 26444114, -4984310, -8660265, 19257022, -16928076, -9503152, 1262720, 2145873, -2436857, 12836584, 6662568, 10538776, -3005940, 5869073, 15093052, 1511292, 10280004, 2500745, -384936, 17283486, -21766894, -7230578, -7425999, 15181099, -11157788, -2155537, -6629282, 15100568, --6213744, 32701344, 23190140, -20926692, 10479720, -25274808, 3550327, 10331007, 4858682, 6578280, --33553358, -5488432, -32397476, 5279589, 2339684, 4985920, -5412196, -4696547, 14992120, -26547730, -9137543, -10750840, -52679384, -18223010, -17565880, 10035191, -8109435, 9502078, 25618406, 29578366, -15230491, 16564615, 13021804, 6135898, -21429740, 24367496, -1233729, 9028558, -40540196, -18375480, --13487271, 8523899, -30695058, 12186433, -17972828, 27758910, -30496416, -39002600, -7687455, -4889821, -32220308, 16120086, 14898168, -7169911, 4635344, -18470506, -14524506, 4467303, 7585449, -24052890, --22116934, -15388331, -995359, 13421773, 10143102, -16625818, -20939576, -11926050, -11871826, -29040958, --16086800, 14123463, -7108708, 697395, -2858838, 10614475, 16733729, -3153580, -43466144, 19830938, -38885560, 14905684, 635655, -44033616, -9208947, 20568062, -4006131, 51221244, -3699041, -39555576, -8443369, -5857799, 5208722, 2093260, -6141803, 11858942, 15563351, -41778220, -9174587, 3304441, -17563196, -7021198, -19145890, 20267414, 4846334, -13748190, -39363376, -48870284, -21741124, -3010772, -7992398, 38835096, 61212948, 24683714, 2781528, 74553120, 68386616, -29767882, 35132832, 31135292, --9640054, -5965173, -17219060, -9494562, -20130512, -14183593, 56532508, -3660923, 32597192, -122943, -823560, -67646, -23433878, 4898410, 3843996, -50178640, 6542846, 11576011, -27033598, -5909338, --8966818, -3990025, 6427956, -1887638, 564251, 21507048, 7898982, -11016054, 5741835, 34557308, --457414, 15767362, -1927904, 12836584, -20342038, -23489714, -14147085, -42878804, 10229538, 4589710, --20189030, -51981452, -35143032, -48564268, 33962992, -25218974, 4107063, 8738111, 6545530, 6790880, -36112084, -36119064, -1444183, -20111722, 38103340, -89159224, 16441672, 7312182, 26527866, 26561688, --2176475, -7590818, -16292422, -3129421, -29004988, 20080582, 49082888, -2922725, 6314139, 33849712, --23132156, -21792128, 33530810, -59344636, 45911052, -22762790, -14958297, -8376260, 6920266, -15120432, --11007464, 22434224, -2942590, -39681740, 17771500, 301721, 10642392, -6673843, 40999220, -27970438, -4480725, 18653042, -7525857, 14853608, -21974126, 5041218, -18415746, -8004746, 26917634, 6036040, -12825846, -10371272, 26230440, -3504693, -7166690, 11846594, -10430328, -8489003, -3861713, -4503810, --19877646, -28310814, -5031554, 20796232, 4108673, -6525129, -27572616, 4634807, -20873004, 1842541, -14154065, -21038898, -1816234, 21827024, 22787486, 17178796, -26045218, -10524817, 25760676, 10965588, -4283693, 21364778, -95249488, -18698676, -5862631, -40796284, 10095321, 17645874, 3272765, 13963476, -27880780, -6278706, -14401025, 12369506, -11563663, 2427194, 31143344, 168577, 66728224, -9290014, --19255950, 1758789, -8058433, 32530082, 5779416, -3735011, 31248034, 31205622, 10157598, 11435350, -17285632, -40706628, -22231288, 31771484, -4749697, -33714420, -16672526, -15996069, 22282828, 10732050, --12031814, -48342540, 14589467, 5968394, 6275484, 6245956, -5563594, 3232500, -35074312, 29912836, -22137872, 9945534, -17331804, -16759499, 346819, 13937706, -2946885, 14477798, 7754564, -39205000, --15829639, 3744675, -36603860, -24696, 8104067, -35297116, -45301704, -9004936, 15250892, -29633126, --54905788, -27513024, -13119514, 33524368, -20350628, 37986300, -6368363, -1614371, 20097762, -1473711, --60268592, -8507256, 5985037, 24670292, -52204792, -83146272, 10457172, -11485279, -43425876, 20185810, -21221970, -11664057, 11894912, 32464584, -30597884, 6584185, 34684008, 15504295, 77468328, -27990838, --29451128, -10270341, 1821066, 73888472, -6681359, 61789548, -37895572, -12758737, 27836220, -41231688, --11623255, -38555920, 10027675, 46145128, -55581172, -17987860, -1921461, 21362630, 2626909, 10145786, -19384798, -468688, -34080028, -30631706, 4872104, 28075664, 68379640, -10613401, 20859046, -14820858, -35385700, 5119064, 6975564, -4905390, -35265976, 5485210, 38765300, -1782948, 1218697, -8817031, --30246234, 48791364, 20228760, 34207268, 42968464, 2905009, 5836324, 29557964, -59546500, 27027156, --28185722, 80160192, -3242164, 13011067, 15181636, -15882789, -17875118, 13747117, -27421218, 54026932, --23063438, -27918898, -30291330, 57149908, 22454626, 36957120, 103616, 37818796, 37060200, -19238770, -2490544, -13561896, 10941966, 6487548, -55586004, 37833832, -39520140, 4619774, -18200460, 14448270, --1508607, 20642686, -3302293, -18340584, 31208306, -11235098, -4226785, 4444755, -12901008, -11726871, -36119064, -8885750, -4701916, -4650376, -1576790, 16004659, -12264279, 3369939, -8856223, 7680476, --7651484, -6703370, -18852758, 27562952, -16951700, 8690866, 5015448, 18833432, -21401822, 4180077, --8395050, 21382494, 3525631, 956167, 18186502, 4379256, -28346784, -5177583, -4233227, 7150584, -13511430, 9672803, -25572236, 10311143, -19067508, 13073344, -10444287, 1926830, -5551245, 12822625, --4431333, 2898566, -28480466, 5818607, 15457050, -14722074, 14571750, 651224, 6104759, 7206419, --10741713, 19319836, 9198746, -2109366, -5400385, 9268003, -5496485, 18591302, -15675557, -2433099, --14768245, -23328114, 46493020, 3688840, 5657546, -18888192, -13980119, -29866128, 19661824, -8528731, --6283001, -13095892, -737124, -11696270, -1664837, -1722282, 4975720, 5626407, -1155883, -1581622, --8676908, 7657927, 7098507, -7192460, 3045132, -16073915, 6073084, 2889976, -3037616, -2661269, --5559299, 4862440, 849867, -11497091, -3303367, -3505767, -9652402, 15203110, 1342714, -10017474, -1229434, -4037806, 13132936, -4834523, -6551436, 2421288, -8284992, 15475841, 163746, -8829379, -2187212, -3699578, 7359964, -10041097, -2258616, 3090229, -3894999, 6714645, -4230006, 1833414, -2797634, -9058623, 913217, 8704288, -13877039, -1025423, 3739306, -12679280, 22483616, -21028160, -10012106, 3730179, -12458090, 23684598, -16716013, 4035122, 2153389, 10735808, -50200652, -115650584, -30124364, 106738528, 90195384, 121121296, -59973848, -77625088, -116703928, -119228296, 7996156, 88647592, -97827544, 107252312, 35510788, -23493472, -85400592, -141167520, -77484432, 35767952, 55377696, 93963680, -71091912, 19382114, -12856448, -29807610, -70875016, -45867028, -43787728, -8065949, 37002752, 57000660, -29815662, 38035692, 19042274, -21526912, -3582003, -45959372, -64139432, -10979010, -15140297, 11234024, -60054916, 34714072, 29691646, 8822400, -22819698, -23263154, -20272246, -33094870, -8902393, 1478006, -13968844, 17339320, 28616830, 8258685, -1225139, -14507326, -27043798, -2225867, 9494025, 10016401, -16771310, -4188667, -13572634, -6306086, -13514115, -10366440, 2985002, 7934952, 21983790, 18887118, -18289044, 1978906, -7678328, -32321240, -22062174, -2129767, -1344325, 0, 0, 0, -0, 0, 0, }, +1332514, 2347737, 4104378, -5537287, -1505923, -3160022, -670552, -1440425, -3429532, -386010, +-508417, -3372086, 4203699, -2761664, -1741072, -284542, -1544578, 3635690, -1651415, -2587718, +1075889, 1333587, 3838627, -387621, 816044, -2459406, -484258, 279710, 1143535, 260382, +-103079, 3945464, -2310156, 889058, 238908, -2445447, -5657546, -2268280, 1213328, 1976222, +2039036, -5528160, 4306242, -2130304, -2319819, 2320893, 932545, -4861903, 1867774, -4975183, +-1459752, 2103997, -3885872, -1548336, 3351685, -1257352, -2206540, -2840584, -5541045, 4292283, +1531156, -1764695, -1698123, -3736622, -4242891, -4867272, -1057636, -3209951, -52076, -222801, +-271120, 305480, -307627, -3107409, -7095286, -796716, 6358699, -5968931, 2101850, -9950365, +-36507, -3712999, 3800509, -3482682, 766115, -2423972, -4217121, -1240172, -510564, 2777233, +3604551, -3727495, -6260989, 3018825, 994822, 2043331, 1258425, 2331630, -3658775, -2898566, +549219, -908386, 3122978, 2075006, -2804614, -829466, 2371359, 4285304, 2724083, -222265, +-3620658, 1648194, -666794, -2168422, 2452963, 801011, -3311957, -3026341, -2255932, 1525787, +-3231963, -2033667, 2667175, 714038, -112743, -3687230, 1225676, -3230889, -7430294, 369367, +-2520609, -5175973, 2220498, -1764695, -1342714, -2065342, 140123, 3208341, 2248416, 756988, +1722819, 2249489, -5530844, 2364380, -2153389, -2753074, -1161789, 1183800, 421444, 3149822, +14850923, -1255741, 2726767, 3262565, -1512365, 1530082, 5927592, -4626217, -800475, 1675037, +-2275259, -471910, 4369056, -1427003, -952409, -328565, 1715839, -861141, 2128693, -1502165, +-1404454, -702227, -3326989, -5798206, -1036161, -1890859, -718870, 3343632, -6040872, 7446400, +108448, 76236, 326418, 1357747, -107374, -2943126, 533113, 2246268, 5742908, 214212, +50466, -933082, -1809255, 3686693, 1891396, -1452236, 2187749, -3827890, 759672, 1110786, +-2705830, -9828496, -2911451, -334471, -425202, -557809, -698469, -1337346, -535260, -1950989, +2571075, 7075959, 4266513, 211527, 203474, -296353, 2745558, -1573569, -6283537, -333934, +-3115462, 2033130, -3528316, 2058363, -9019968, -262530, -487479, -12950937, -12485470, -4618164, +-1744831, -1670205, 132070, 3320547, 881005, 2724620, -5803038, 3064459, 3806952, 3703873, +4297652, -3093987, 1013612, 9983115, -5972689, -68719, -4223027, -6138582, -641024, -294205, +5561983, -2488934, 682900, -4537633, 3119220, 2043331, 2470680, -10362145, 1729261, -1754494, +-3588445, -818728, 52076, -7631083, -4956393, -4176856, -251256, 6717866, 2362769, 2359548, +3232500, -2716030, 1940252, -2408403, 5672041, 8804683, -715649, -562104, 2526515, 838056, +2301029, 5071283, -2188286, 5249524, -712965, 117038, 3012920, 4326643, -1482301, -5541582, +-5339718, 2389613, -721555, -671626, -2382633, 3000035, -4528506, 2028298, 3238942, 6041409, +-3512210, 5796059, 3122978, 1990717, -14343043, 6150930, -6445136, 11455752, -10744934, 8373039, +4240744, -4476430, -5603322, -3121904, 2144799, 1950452, -3049427, 6754910, -2487323, -6495601, +-1371168, 6994354, 4754529, -7101192, 1083942, -894964, -7477538, -3078955, -4828080, -1114544, +-5737003, -1503775, -2422362, -7821136, -2843805, 3997541, 5657546, -1075352, -6764574, -1324461, +4711043, -1421097, 117575, 375273, 60130, -6616934, -244813, -729071, -1740536, -231391, +1132798, -4687420, 2685428, -5011153, -157840, 89121, 60130, 3940633, 32212, -1604170, +1501628, 2818572, 6230387, 3077344, 1377611, -1577327, -3946538, -3391951, -1584306, -3686156, +-2942053, 2738579, 4037806, -2579128, -5151277, -2925947, 1496796, 1556389, -4905390, 17923436, +7387344, -730681, 4389457, -2363843, 10223633, 4596152, 18073760, 792421, -16671989, 4846334, +10770704, -5689221, 2220498, 7611756, -5082557, 5515812, -4049081, -472446, -5089000, -4721780, +-1263794, 1958505, -182536, 2881923, -1968169, 8096014, -4150012, 2672544, 1770600, 5468030, +-8658117, -4155381, -3192771, -506269, -2833068, 1423782, 5871757, 4517232, 9109626, -685047, +-295279, -4378719, -1287417, 6146098, -5040681, 5199595, -4694936, -1465658, 8379481, 12272869, +8659728, 2150705, -5777268, 5006322, 3533148, -2521146, 7097434, -3690451, 1676648, 1865090, +-11993159, 726923, -11346767, -3829500, 2221035, -2161979, -5218922, -3769908, 1352378, 9120900, +2398739, -2084133, -3663070, -2237141, 1246614, 2705293, 11054172, 22185116, -9373229, -6897181, +-1736777, -2362769, 7844221, -7090991, -13152264, -4390531, 1103807, -3028489, 3993783, 2052994, +6802692, 3034395, -2506650, 9812927, 9105868, -3865471, 792958, -5893769, -911070, 617938, +-3665755, -450435, 6810745, 9888625, 504659, 1882806, 4061429, 2836826, 1653026, 978179, +-3526168, -6560563, 893890, -9571871, 453119, 2631204, -3068754, 4259534, -2425583, -5104032, +-345745, 5726802, 2439542, -1987496, 16267189, 372052, 5295158, -9203578, -2080375, 7067369, +-3032247, -6663105, 4263829, -7866770, -7436199, 2232309, 9251360, -6963753, -4159139, -1631551, +455803, -2770254, -3306588, 13084081, 7351374, -355945, 823560, -4959077, -3990025, -1323924, +4037269, 8571144, -15732465, -2232846, -11847130, -6809134, -10741713, -2838974, -1754494, -1733556, +-4203163, 4604742, -15078020, 7552163, -5218922, 4433480, 1884954, 6101001, 238371, 2447595, +-6139656, -2700998, 2687576, -6149320, -4463545, 7208029, 1926830, 3184718, 2856153, -897648, +1882806, 10798085, -4014721, 907849, -5021891, 8654359, -5399311, -19696720, 5972689, 2930778, +8151848, 4303557, 11267310, -7804493, -3104188, 6701223, -2909840, -6693170, -3154654, 3419331, +-9555765, 9247601, -379568, 6118181, -8066486, -3658775, -2951716, -8831527, -1803886, -7045894, +-3178813, 608275, 9992778, 7941932, -925565, -12394739, -7010997, -2364380, 9719511, 7958038, +5852967, 5358509, -3463354, -14231374, -3690451, -317828, 3140695, -21105470, -25367150, -14604499, +9495636, 188979, -5266167, -5862094, -8555575, -1453846, 2018635, -14405320, -1983738, 8105140, +-5993090, -4388920, 9059160, 1964411, -7093676, 1862942, -6891275, 13852880, -5349382, -4013110, +3980898, -8083666, -5402532, -4972499, 1743757, -5777268, -2658585, 1861332, 1033477, -17503602, +6863895, 6844568, -5606543, 12591770, 4316442, 724776, 11853573, 6666863, 1504849, 1253057, +12859132, -1857573, -3082713, -1408212, 7592966, 4199941, -13116293, 4313758, 3070902, -545461, +-7377680, -20343112, 7960722, -1731409, -5742372, -12883291, -7906498, 7293392, -2513093, -3980898, +-9227737, -16495896, 687732, -2497524, -9590125, -3804267, -16362215, -2532420, -4576825, -2824478, +-1898912, 5829345, 10361609, -21072720, 17119740, 1070521, 8778913, -1424855, -649077, 1747515, +9450539, 1092532, -1136019, -12612708, 4573604, -1210107, -9874667, 2794413, -6462852, -4736812, +18324478, 5459441, 5616744, -3695819, 6525129, 8211978, 7608535, -4150012, 6622303, 3793530, +-7807177, 5370320, -7609072, -2234994, 4685810, 2654290, -903017, -3764539, -4056597, 12624519, +-3704409, -4907000, -3599720, 2967823, 2465311, -5327370, -10041634, -187905, -10777147, -688269, +-9756018, -3003793, -2515240, 2494302, -5126044, -7584912, 10115722, -3609383, -11782706, 8067023, +11897059, -5148055, -4286378, 7015829, 4104378, 13002477, 7424925, 2152852, -571231, -11489574, +2519535, 12990129, 9074729, -7388955, 8569533, 11078331, -7309498, -17315698, -6791417, -15087146, +4434017, -33394444, 16539919, 4936528, -1217086, 23119272, -970663, 11873437, -9798431, -2037962, +2178622, 486405, 13400835, 8614094, -17284560, 11369315, 1226213, 6954626, -15523086, -300111, +9599789, -15311022, 19957102, 5607617, 198105, -6682432, 1580011, 8764955, -13605383, 1580548, +4000762, 2758443, -8221641, -2932389, 8607651, 4887136, -447213, 1464047, -5248450, -9491878, +4466229, -16222091, -234076, 23759222, 23449984, -7175817, 3310883, -847719, 7049652, 16689706, +1868311, 8027294, 3112241, -8617315, -160524, -1621350, -24474872, -11287711, 15977815, 653909, +5299453, -6158446, -981400, 5293547, 8060580, -986232, 19849192, -156766, 15660525, 1262720, +3885335, 1115081, -8983998, -13539884, 16300475, 1772748, -6173479, 11644193, -24252606, 10215043, +15849503, -1821066, 4967130, 7290170, -3398393, -2073932, 9932649, -3303367, 14887430, -13523778, +7928510, 18223546, -18844170, 1050120, -8756901, 11594801, 5174899, 9650792, -9334038, -7360500, +287763, 24475408, 681826, 12483859, -5036923, 945430, -1261110, -1965484, -10353019, -241592, +-2608119, 5098663, -4392141, -6839199, -5450314, -318901, -1628330, 11062225, 2299418, -5969468, +-5077725, -5509370, -1626182, -2611877, 18295486, 799401, 9392557, 609349, -3885872, -3947075, +15278809, 11032160, -3878892, -14108968, 8312909, 5309117, -30491584, 1619203, 17821966, 16777216, +4356708, 13246216, -18239652, 30209190, 3086471, 5455146, 6477885, 14110041, -638340, -13577465, +-3306588, -15958488, 18637474, -7713225, 9160092, -18491444, -14874009, 12814572, 10667625, 26596048, +-9783399, -7273527, -5118528, 4890894, -11738682, -1509681, 4068408, -915365, 14003741, 9188546, +-11957189, 977642, 2934537, 8284455, -13596256, 13784698, -711354, 6128919, -2827699, -6248641, +-14295799, 4942971, -2924336, -5703180, 2216203, -8311836, -8798241, -1662689, 3726421, 16940962, +-25503516, -14794015, -14060649, -14772003, -4935991, 17696876, -10933376, -63351, 16367047, -2037425, +-8424578, -14267881, -4745402, -5776194, -31384400, -23081154, -7507066, 6129455, -3753802, 6209986, +-7658464, -3934727, 13646722, 9867687, -16229071, -6673306, -18089866, -5411659, 405874, 8450348, +-4112431, 3668439, -15707769, -9570261, -11819213, 2185602, 1299228, 3857418, -15034533, 3892314, +17846662, 9912785, -13196824, 2417530, -1511829, 30107184, 3231963, 14433238, -12656195, -8690866, +-3148748, -14375256, -9083319, -13905493, -6436009, -9085466, 16353088, 3923990, 4099010, 16679505, +-487479, -1199370, 7594576, 14944876, 23727546, 17098802, -3613141, -6754910, -27416386, 7212861, +8526047, 2981244, -17128330, 19342922, 7799124, 11170673, -3318936, 638340, 11116986, 24150602, +23890218, 13302051, 2771865, 25042344, 510027, -8284992, 8139500, 14851997, 12415677, 22302692, +11934640, -296890, 2491618, -14795089, 5702106, -35730908, -6344204, -4545686, 7262790, 26175142, +14856829, 2764348, 19250044, -15817291, -13783624, 1262184, -34578780, -9792525, 410169, 4528506, +6648610, 6708739, -3432753, 12237972, 147640, 4574677, 25263534, -20795694, -11012833, -10520522, +-22996866, -7028177, 4505958, 17940616, 32600412, -12652974, 803696, 5717675, -5718749, 30372934, +5509906, -14358076, 26444114, -4984310, -8660265, 19257022, -16928076, -9503152, 1262720, 2145873, +2436857, 12836584, 6662568, 10538776, -3005940, 5869073, 15093052, 1511292, 10280004, 2500745, +384936, 17283486, -21766894, -7230578, -7425999, 15181099, -11157788, -2155537, -6629282, 15100568, +-6213744, 32701344, 23190140, -20926692, 10479720, -25274808, 3550327, 10331007, 4858682, 6578280, +-33553358, -5488432, -32397476, 5279589, 2339684, 4985920, -5412196, -4696547, 14992120, -26547730, +9137543, -10750840, -52679384, -18223010, -17565880, 10035191, -8109435, 9502078, 25618406, 29578366, +15230491, 16564615, 13021804, 6135898, -21429740, 24367496, -1233729, 9028558, -40540196, -18375480, +-13487271, 8523899, -30695058, 12186433, -17972828, 27758910, -30496416, -39002600, -7687455, -4889821, +32220308, 16120086, 14898168, -7169911, 4635344, -18470506, -14524506, 4467303, 7585449, -24052890, +-22116934, -15388331, -995359, 13421773, 10143102, -16625818, -20939576, -11926050, -11871826, -29040958, +-16086800, 14123463, -7108708, 697395, -2858838, 10614475, 16733729, -3153580, -43466144, 19830938, +38885560, 14905684, 635655, -44033616, -9208947, 20568062, -4006131, 51221244, -3699041, -39555576, +8443369, -5857799, 5208722, 2093260, -6141803, 11858942, 15563351, -41778220, -9174587, 3304441, +17563196, -7021198, -19145890, 20267414, 4846334, -13748190, -39363376, -48870284, -21741124, -3010772, +7992398, 38835096, 61212948, 24683714, 2781528, 74553120, 68386616, -29767882, 35132832, 31135292, +-9640054, -5965173, -17219060, -9494562, -20130512, -14183593, 56532508, -3660923, 32597192, -122943, +823560, -67646, -23433878, 4898410, 3843996, -50178640, 6542846, 11576011, -27033598, -5909338, +-8966818, -3990025, 6427956, -1887638, 564251, 21507048, 7898982, -11016054, 5741835, 34557308, +-457414, 15767362, -1927904, 12836584, -20342038, -23489714, -14147085, -42878804, 10229538, 4589710, +-20189030, -51981452, -35143032, -48564268, 33962992, -25218974, 4107063, 8738111, 6545530, 6790880, +36112084, -36119064, -1444183, -20111722, 38103340, -89159224, 16441672, 7312182, 26527866, 26561688, +-2176475, -7590818, -16292422, -3129421, -29004988, 20080582, 49082888, -2922725, 6314139, 33849712, +-23132156, -21792128, 33530810, -59344636, 45911052, -22762790, -14958297, -8376260, 6920266, -15120432, +-11007464, 22434224, -2942590, -39681740, 17771500, 301721, 10642392, -6673843, 40999220, -27970438, +4480725, 18653042, -7525857, 14853608, -21974126, 5041218, -18415746, -8004746, 26917634, 6036040, +12825846, -10371272, 26230440, -3504693, -7166690, 11846594, -10430328, -8489003, -3861713, -4503810, +-19877646, -28310814, -5031554, 20796232, 4108673, -6525129, -27572616, 4634807, -20873004, 1842541, +14154065, -21038898, -1816234, 21827024, 22787486, 17178796, -26045218, -10524817, 25760676, 10965588, +4283693, 21364778, -95249488, -18698676, -5862631, -40796284, 10095321, 17645874, 3272765, 13963476, +27880780, -6278706, -14401025, 12369506, -11563663, 2427194, 31143344, 168577, 66728224, -9290014, +-19255950, 1758789, -8058433, 32530082, 5779416, -3735011, 31248034, 31205622, 10157598, 11435350, +17285632, -40706628, -22231288, 31771484, -4749697, -33714420, -16672526, -15996069, 22282828, 10732050, +-12031814, -48342540, 14589467, 5968394, 6275484, 6245956, -5563594, 3232500, -35074312, 29912836, +22137872, 9945534, -17331804, -16759499, 346819, 13937706, -2946885, 14477798, 7754564, -39205000, +-15829639, 3744675, -36603860, -24696, 8104067, -35297116, -45301704, -9004936, 15250892, -29633126, +-54905788, -27513024, -13119514, 33524368, -20350628, 37986300, -6368363, -1614371, 20097762, -1473711, +-60268592, -8507256, 5985037, 24670292, -52204792, -83146272, 10457172, -11485279, -43425876, 20185810, +21221970, -11664057, 11894912, 32464584, -30597884, 6584185, 34684008, 15504295, 77468328, -27990838, +-29451128, -10270341, 1821066, 73888472, -6681359, 61789548, -37895572, -12758737, 27836220, -41231688, +-11623255, -38555920, 10027675, 46145128, -55581172, -17987860, -1921461, 21362630, 2626909, 10145786, +19384798, -468688, -34080028, -30631706, 4872104, 28075664, 68379640, -10613401, 20859046, -14820858, +35385700, 5119064, 6975564, -4905390, -35265976, 5485210, 38765300, -1782948, 1218697, -8817031, +-30246234, 48791364, 20228760, 34207268, 42968464, 2905009, 5836324, 29557964, -59546500, 27027156, +-28185722, 80160192, -3242164, 13011067, 15181636, -15882789, -17875118, 13747117, -27421218, 54026932, +-23063438, -27918898, -30291330, 57149908, 22454626, 36957120, 103616, 37818796, 37060200, -19238770, +2490544, -13561896, 10941966, 6487548, -55586004, 37833832, -39520140, 4619774, -18200460, 14448270, +-1508607, 20642686, -3302293, -18340584, 31208306, -11235098, -4226785, 4444755, -12901008, -11726871, +36119064, -8885750, -4701916, -4650376, -1576790, 16004659, -12264279, 3369939, -8856223, 7680476, +-7651484, -6703370, -18852758, 27562952, -16951700, 8690866, 5015448, 18833432, -21401822, 4180077, +-8395050, 21382494, 3525631, 956167, 18186502, 4379256, -28346784, -5177583, -4233227, 7150584, +13511430, 9672803, -25572236, 10311143, -19067508, 13073344, -10444287, 1926830, -5551245, 12822625, +-4431333, 2898566, -28480466, 5818607, 15457050, -14722074, 14571750, 651224, 6104759, 7206419, +-10741713, 19319836, 9198746, -2109366, -5400385, 9268003, -5496485, 18591302, -15675557, -2433099, +-14768245, -23328114, 46493020, 3688840, 5657546, -18888192, -13980119, -29866128, 19661824, -8528731, +-6283001, -13095892, -737124, -11696270, -1664837, -1722282, 4975720, 5626407, -1155883, -1581622, +-8676908, 7657927, 7098507, -7192460, 3045132, -16073915, 6073084, 2889976, -3037616, -2661269, +-5559299, 4862440, 849867, -11497091, -3303367, -3505767, -9652402, 15203110, 1342714, -10017474, +1229434, -4037806, 13132936, -4834523, -6551436, 2421288, -8284992, 15475841, 163746, -8829379, +2187212, -3699578, 7359964, -10041097, -2258616, 3090229, -3894999, 6714645, -4230006, 1833414, +2797634, -9058623, 913217, 8704288, -13877039, -1025423, 3739306, -12679280, 22483616, -21028160, +10012106, 3730179, -12458090, 23684598, -16716013, 4035122, 2153389, 10735808, -50200652, -115650584, +30124364, 106738528, 90195384, 121121296, -59973848, -77625088, -116703928, -119228296, 7996156, 88647592, +97827544, 107252312, 35510788, -23493472, -85400592, -141167520, -77484432, 35767952, 55377696, 93963680, +71091912, 19382114, -12856448, -29807610, -70875016, -45867028, -43787728, -8065949, 37002752, 57000660, +29815662, 38035692, 19042274, -21526912, -3582003, -45959372, -64139432, -10979010, -15140297, 11234024, +60054916, 34714072, 29691646, 8822400, -22819698, -23263154, -20272246, -33094870, -8902393, 1478006, +13968844, 17339320, 28616830, 8258685, -1225139, -14507326, -27043798, -2225867, 9494025, 10016401, +16771310, -4188667, -13572634, -6306086, -13514115, -10366440, 2985002, 7934952, 21983790, 18887118, +18289044, 1978906, -7678328, -32321240, -22062174, -2129767, -1344325, 0, 0, 0, +0, 0, 0, }, }, { { 10871099, -4711579, 5091684, 39192, -2043331, -4964446, -1811403, -3577171, -3725884, 773094, -3032784, --1884954, -511101, 3035468, -222801, 1024887, -3275450, -1678795, -3889093, -6316823, 3422015, -2469606, -2666638, 1373853, -1632625, -334471, 3979824, -2336462, -464393, -3007014, -1876364, -1577327, 2162516, 3046206, 2671470, -4293894, 592169, 2261300, 68183, 3236258, 416075, -1008244, -3397856, -1817308, 586263, -960999, 813896, 270046, -2039573, 3583613, 2485176, --4343286, -184684, -236760, 1103807, 3747896, 1523103, -4109747, 595927, 1422171, -3065533, -1148904, 1420560, -567473, 1628330, -434329, -827855, -345208, -2459406, -520765, -998580, --1880122, -345208, 35433, -302258, -652298, -1038845, -5580237, -4926865, 6039798, -1286343, -4816269, 1370632, 7182259, -1729261, -3767760, -2620467, 4377646, 73014, -1635309, -478889, -4958003, -1380295, 878321, 1695438, -3375308, -2605972, -1115081, 862215, -3498251, 824634, -687195, -4090420, -1327682, -2473901, 324807, -1826972, 631360, 6503118, 3358128, -1991791, -304406, -3193308, 2389613, -914828, 3881577, -8136279, -883690, 1165547, -2863133, 431644, -3914863, 2893734, -3614215, -2774549, -2897492, -637803, -2287070, -1273995, -3510599, 1245004, --277562, -4207458, -2079301, -1773822, -157303, 714575, -835908, -566399, 1830193, 542240, --1852205, 840203, 4454418, -2434710, -472983, -4917738, -1672890, -638340, 2055679, -2327336, -630286, 328028, 299574, 7813620, -2538326, 2734821, 6574521, -4822712, -5488968, -556735, --1168231, 224412, 3477313, 2085207, -7744363, 1553168, -4332012, -6018860, -145492, 2627983, -2768643, -1750736, -9664, -359704, 3698504, -392990, 3085397, -998043, 582505, 950798, -1113470, -3670050, 1934883, 3437048, -1203665, 4293357, -1939178, -79994, -4687957, 3864397, -1130113, -940061, -3582003, -3421478, -1478006, -917512, 2158221, -32749, 1895691, 2030446, --3152506, 2517925, -4318590, 2044941, 2895882, 5457830, 5087926, -3741454, 2311229, 181999, --864362, 3411278, -2008434, -2203318, -1778653, 2902324, 1437740, 3652333, -2873333, 5260798, --1289027, 332860, 1659468, 1383516, 3000035, -1460826, 4159676, 5626407, 8862665, 4472135, --9212705, -9908490, 1138703, -788127, 2361158, 2236604, 6550362, 3005403, 3118146, 1633161, --3228205, 1289564, 8255464, -5476620, -656593, 321586, 6606197, 4072166, 875100, 3027415, --586263, 2363306, 2995740, 6905771, 3697967, 3924526, 1968706, 1744831, 3223373, 1315871, --4859219, 3034931, 3802657, -1270237, 2720325, 3898757, -1458678, 1326071, 4544613, 1887101, --1306744, 1847373, 4610648, -79457, -258235, -770947, 1093069, 4682051, -1573032, -2340757, -1033477, -1351841, 2086817, 3041374, -3664681, 951335, -2509872, 421444, 990527, 4049617, -2695629, -7677254, -479426, 4209605, -2541010, -2979634, -127775, 986232, 3271155, 96637, --9240622, -3223910, 1880122, -1773285, 2956548, -339839, -17015050, 2141041, 1515050, 7624641, --525597, 5909875, 2913599, 1352378, -10073846, -190589, -382789, -7840463, 987306, 5509370, -845035, -309238, -965294, -3244848, -3743064, 1362578, 1999844, -466004, 1245004, 1561221, -6596533, 592706, 2769180, 3009698, -3874597, 584116, -1130113, -1186485, -748398, 2333241, --687195, -1914482, -3053185, -1842541, 569083, -5082557, -3790309, 1858110, -4214974, 1067299, --6722161, -7851200, -2298881, 9241696, -2859911, -775242, 5207648, 1644973, 26307, 5735392, --1245541, 423054, -1173063, 1493038, 3402151, -1774358, -6422587, 3520263, -3956739, -6942815, --3143379, -2204392, -543850, 2040646, 6597607, -405874, -698469, -3346853, -963146, 3560528, --2812667, -3106872, 3905199, 15028627, 556198, -838592, -5610301, -3192771, 7958038, -3122441, -6225555, 5380521, -5962489, -902480, 4682051, -3289945, -1568200, -1491427, -2124935, 1079647, -1717450, 374736, 2945274, -1218697, 512175, 1187559, -1150514, -2728915, -2892661, -3229279, -326954, 4006131, 1757715, -3177202, 371515, 1659468, 7496866, -2071785, 6720013, -5921686, -2813741, 4938676, -3090229, -1781338, -6101538, 3075197, 20401, -4170950, 4384625, -5202816, -6123550, -144418, 8634495, 2158221, 1037235, 2272575, 3670050, 2117419, -2633352, 4446902, --645856, -4242354, -6880001, -1642825, 3154654, -3229816, -2093797, 3067681, -3711926, 8070781, --7162395, 363998, 5269388, -3779034, -1304596, -7242389, -96100, -2365990, -1017907, -1217623, -7192460, 12750684, -3760244, -5596880, 1443646, -2306934, 3506304, 11596412, 56371, -2718714, -3678640, 1957968, 3433290, 2041183, -6341519, 185757, -5658620, 3094524, 2727841, 1605244, -10633265, -573915, 7928510, -278636, -195958, 2338073, -65498, 8264054, 1106491, 5166309, --1937567, 7023346, -3204583, 3692061, 14111115, -2420214, -3552475, 9820980, 2102923, 6345278, --146566, -6327561, 1941325, -3723737, 4278861, -7619272, -977642, -4056060, 4224101, -832687, -892279, 7464653, -3703336, -7961259, 2199560, -926102, -321049, 5964099, 1260573, 578210, --2753611, -5423470, -5305895, -2179696, -4346507, -3780108, 4732517, -2787971, -271120, -2210835, -767189, -574452, 4429722, 1884954, -4211753, -7595650, 17916992, -8825621, 6529424, 624918, -3405909, -3848291, -2950106, -1538135, 4180614, 5307506, 1407676, -2292439, -4737349, 3069828, -5208722, -540092, 1880122, -2181844, 5641977, 2377265, -9580998, -2839510, 3550327, -150861, --3872450, 235149, 4869419, -2876554, 1882806, -6012418, 4117800, 8623757, -3034395, 9102646, -641024, -1105954, 6104223, 227633, 792421, 5691369, -10896332, 2182380, 3760244, 5287105, -3586835, 4250407, -4690641, -3389266, 182536, 2328409, -5101885, 2354716, 5681168, 5331665, -2142652, 15139760, -4202626, -1230508, -6197638, -2210298, -3914326, -5424007, 7927436, 3793530, -7772280, -452045, -11258720, 7559143, -3636227, 4531728, 3915400, 2483028, 2646774, -8315594, -11716671, 3533148, -21971442, -18640694, -17271138, 2702071, 2390149, 432718, -235149, -2093260, --2244657, -486942, -3764002, -6839736, -5103495, -11278584, -5573794, -5941551, 5191005, -8873402, --4537633, -5412733, 317828, -809601, -3095061, 1427003, -1728724, -9164923, -1214402, 6698002, --76236, -8267275, -7589207, 1963337, -3716221, 5484137, 3388192, -7855495, 5778342, 9979357, --10223096, -10211822, -6119255, 2542621, 7489349, -7037304, -7524246, 2380486, -4853850, -217970, --2018098, -1686848, -11127723, 992674, 4753455, -3986267, 2164127, -5842766, -7156490, -6743099, --4210142, -10961293, 15788837, -4599910, -2570538, 2010045, 402116, 2637647, 809601, 4295504, -837519, 3536906, 8907225, -14886894, 7727183, -4540854, -4721243, -1845762, -20683488, 15814606, -4207994, 3403225, -3798362, 15437723, -2392297, 7215008, 47245, 6461242, -9142375, 3519189, -3730179, 1255741, -4413079, 13627394, -3594351, 4007205, 3345780, 14104136, -9478456, -877247, -4196720, -2763812, -6862284, 3984119, -6419903, 1402844, 2101850, -8185671, 3330210, 264677, -714038, 15353971, 10197326, -1755568, -6081674, -5507222, 3909494, -1338419, -9033390, 2148021, --386547, 2212445, 7589744, 9873056, -6696391, 6476811, 4102768, -5421860, 3973382, 1997160, --6843494, -4826470, -4028143, 6648610, -7432441, -7813620, -17869748, -14622216, 4555350, -3639448, --1839320, -8341900, -13526999, 4239670, 2092186, -1867237, 8144869, 4392141, 9697499, 3161633, -3411278, -2524367, 2935073, 6583648, -5362804, 5995775, -24565066, 23534810, 17033304, -6360310, --5288716, 6652905, 489626, 975494, 11470247, 8213588, 762357, -1222992, 4888747, -2165201, --1146756, 3510062, -4490925, 6605660, 4716411, -4770635, 7160784, -330712, 2275796, -99858, --10537165, -229244, 8498130, 8691403, 3749507, 3939022, 4949950, -4753992, -5988258, 3176665, -5503464, 162672, -1987496, -5291400, 2879239, -1296006, 7616588, 8694624, -382789, 9964324, --4438312, 11059004, 6374805, 13251585, 1519345, 2224793, -3111704, -4939750, -377420, 10230612, -16818018, 1297617, 12996034, -5009006, -11130945, 1876901, 5195837, -10059887, 11547020, -3301756, -4631586, -22538914, -8908836, 63351, -4499515, 4589173, 8626442, 15968152, 4568235, 281857, --6193880, -12885439, 7154342, -8702141, 17670032, -6138582, 2993592, 13488882, 13883482, 79994, --6433861, -2934000, -2957622, 2007360, -8612483, -6539625, 8990440, 3088618, 6121402, 7371775, -8391292, -2228551, 5777805, -715112, 6727530, 25169582, 6617471, -10457708, 12211129, 14079977, -1515587, -967441, 1636383, -5213554, -7863012, -3413962, 14142790, 10076530, 8261907, 12456479, -3237869, -667867, -4185983, -12955769, 7577933, 8828305, 5156108, -913754, -768799, -3538516, -2988760, 13006772, 9012452, -11836930, 9816148, -9707700, 12870406, 4066260, 5506148, 6883759, --861678, -4660040, -775778, 6507949, 21629456, -1401233, 11457899, -2561948, -7920457, 12990129, -11178726, 4840965, 3768297, 12528420, 5150203, 3801046, 861141, 8639327, -4141422, 8762270, -11209865, -12562779, 8712878, 5021891, -2862059, 859530, 6084358, -5246840, -10955925, 16843252, -3881577, 3237869, 3406446, 9978820, 3189550, -10053982, 11025181, -14429480, -16502875, 1445257, -2357400, -9356586, -2692408, -27596238, -19108310, -14775224, -4567698, -15217606, -7023882, 5577015, --13139916, 9351754, 9203041, -11241003, 14733885, 7397545, -2304787, -1673964, -6875706, 56371, --12655658, 28643136, 9012989, 4188130, -13867376, 3165928, -3860639, 18802294, -3236795, -922344, --16864190, 16675211, 1820529, 6204617, 6262599, 9438191, 6393059, -4494147, 6487011, -9212705, -9448928, -3886946, 5921686, -14507326, 31786516, 3761318, -13469017, 6684580, 9941239, 5772973, -11461120, 7420630, -12974559, -21304648, 7340636, -2004676, -1105954, 14334453, -1367410, -1210107, -2368675, 12939126, -2010582, 7982734, -4714801, -5796595, -7650948, -10044318, 20368346, 11089606, -8100845, -5007932, -16525960, -20607790, 11551315, 8225936, -6547141, 6203007, -4075924, 1559073, -20328080, 9418863, -4267050, 11385958, -2311229, 6411850, -5193689, 7537131, -12952011, -19763828, --6865505, -8233453, -339302, 25409026, -18569828, 12520367, 7864085, 6036577, -3083787, 10649908, -5602785, -17969606, -22865870, -7546258, -9667435, 28493350, 21284248, -5558225, -10783052, 69793, --11063299, -1554241, 21488796, 19590420, 12070469, -15187004, 5167383, -11603391, 21726092, 10657424, --311385, 1257889, 8647380, -10571525, 4704063, 19031000, 11821361, -14217952, 19884088, -4958540, -11633456, -17007534, -6172405, 30506616, 14593762, 17872970, 5023501, -24029806, 8506720, -19385334, -14086419, 37856916, 14143864, 23976654, -9561134, 7356742, 11818139, -521839, 3804804, -8964670, -3470871, 15188078, 1844152, -3359738, -12100533, 7793218, 6598681, -12953621, 8201777, -4625143, -11520713, 15171972, 16895864, 19284404, 3201361, -14173392, 5310190, 9314710, 1245004, 26041998, -3721052, -29093034, -16972638, 8753680, -5914707, -34435436, 2916820, 15163919, 7201050, 1877438, --1354525, 18633178, -12495670, -17552458, -1445793, -6102612, -15260556, -682900, 3514894, -9841918, --12569759, -8881455, 3302293, 2458332, -18842558, 6771016, -5991480, 5616207, 28281822, -2966212, --4933844, 17973902, 1278290, 15353971, -8559870, 10927471, 7288560, -11236171, -3642669, 24768540, -2874407, -34876744, -15984258, 20980916, -31217432, 17109540, -29557964, 1957968, -5034239, -42616276, --5928666, 18577344, 38478612, 11950747, -5996311, 9008694, -15243376, -5417028, -34221764, -2306934, --23344220, -3735548, -5361730, -16326244, -17191144, -6023692, 9393630, -15702937, 10237591, 18984830, --20279762, 6839199, 6177237, 3027952, -21545166, -3648038, -480499, -22680648, 5561446, 28002650, --2397666, -41591928, 14363444, -25261924, -63774896, 17563732, -26500486, -33029372, 1529008, -15300284, -4328254, 10914586, -6469832, 16428787, -14197014, 14327474, -11757473, -28715078, -62814, 20092930, -19257560, -37199784, 5146982, -4650376, -27860380, -7582228, -7255811, 47645684, 23318452, 27828704, -11977590, 11887933, 28394566, 42065448, -11802033, -21050708, -8188355, 54160076, 58725624, -36939404, --15489263, 25288230, -13654775, 9220758, -18207440, 3370476, -18639622, -33964600, 42631308, 4722854, -12479027, 9602473, 2812667, 4045322, 46708, 7161321, 9691594, -33024004, -26968636, -24365350, --22478786, -17777944, -11192148, -10173167, -17845052, -11345156, -15247671, 14273250, 11271605, 4316442, --8782671, 1370632, -33972116, -18540836, 8138426, -31994286, -3577708, 12661564, 25201258, 1820529, -4351876, -13096966, -20010252, -24902220, 17855252, -4519380, 17753784, -66216584, 3648575, -9520869, -7126962, 37166500, 4668630, 4469451, 4400194, -13577465, -13103408, -1721745, -2332704, -38096896, -8197482, -15254113, 33012192, 173409, -34430604, -50066972, -28617368, -7737921, -32061930, -34342020, --18248242, 23234700, -4818417, -8994198, -14936286, 64441688, -34896608, 25589952, 45885820, -19471772, -7682086, 37452652, -43634184, 3819300, 6318434, 23990076, -49221400, 4999879, 4556424, 18869938, --20913806, 2655364, 10074383, -27197344, 5392869, 315680, -4628901, 19007914, -4052302, -1695438, -7697655, -994285, -4315906, 19039054, -14302241, 7561827, -5563057, 7374459, -9049496, -1891396, --11220065, 3747896, 2690260, 35101156, 10772315, 19164680, -2889976, 4479651, 23450522, 3353296, --8651138, 17603460, 9673877, -5646809, -30429306, 32995012, -30404610, 10398116, 14395120, 24912958, --30085710, 38092064, 50903416, -21319144, -52492552, 76946488, 24116242, -26492432, 15290620, -24385750, --41890428, -10728291, -8433705, -31832686, 33646772, -46858632, 16428250, 44674104, -26287884, -56195352, -59880972, -14544370, 35530652, -22362284, -17701708, -36091684, -16199543, 22408454, 17646410, -9218074, --11480984, 12174622, 29671244, -11892764, 22584548, 26640072, -17757542, -2167885, 16756815, -3659312, -717260, -4824859, 2206540, -26256746, 8139500, -5510443, 1745367, 6815576, -4510790, 5870147, --10201621, -22012244, -9687299, -38602628, 5775658, 208843, -4882841, 7489349, 4650376, -2291902, --7912404, 15865609, 25697326, -25783762, 38978976, -4113505, 6083821, 5648956, 34607236, 15527917, -25618944, -30738008, -6578280, -5710696, 44857176, -40793600, -12846247, 20003810, -343597, -47143172, -4347044, -9707163, -6890202, 21570936, 24806658, 1729261, -16473347, 38257420, -14766634, 63839856, -2206003, -28962576, 1466195, -4123169, -31549756, 65850440, 15600932, -4965519, -54742044, 15275588, -20387672, 12794171, 49112416, -8256538, 12026982, -3643206, -23578296, 13329431, -14561013, -8011725, -11157788, 22375706, -21407728, 25617870, 4185983, -472983, 51948704, -9531069, -4204773, 38611756, --22779970, 34154116, 15951509, -7308961, 14902463, 14694157, 32838246, 33030982, 11083163, -25872346, -56894896, -54916524, 3621194, 50799800, -25307558, 11520713, -4101157, -6220724, -56426208, 39895952, -12514461, 17792976, 20704964, -11996381, -26854284, -21786758, -15400142, 2755222, 57892936, 285078, -46060840, -14652281, -30783642, 1567126, 15384036, -27885076, 47719236, 17658222, 25248502, 43453796, -32146756, -47973176, 21944062, -68647000, -79207248, 561030, 75374528, 42701100, 11471858, -51566452, --170944528, -34881040, 63880124, 60076392, 101814888, -9392557, 7224672, -43581032, 36612984, -27366994, --4781909, -17678086, 16962974, -19844360, -932545, -1971927, -5518496, 4242891, 18626200, -19638202, -8564702, 1754494, -4763656, 500901, 13027173, -16497506, -4804995, -2178085, 27224188, -27516244, -7106561, -11861626, 17907866, -19951734, -6098854, 7351911, -4280472, 4272956, -13511967, -1876364, -11482595, -3129421, 4163971, 4282620, 2032056, 15410880, -14253386, 9910100, 10204842, 13890998, --2408403, -30120606, 3365107, 4366371, 11924977, 12207371, -2894271, 3874597, -5879810, -13139916, --3120831, 7331509, -3424700, 19677392, -16063715, -3988951, -31278636, 10203769, 2307471, -3559991, -5721434, 7278359, -1619740, -14181445, 3546032, 17060146, -4576825, -151934, 3992172, -3416647, -8390219, -2328946, -24713778, 60436632, 16589848, 15042586, -7813083, -19157164, -18405008, 5411659, -11872363, 1984275, -517007, 69793, -8631811, -1471026, 4413079, -2206003, 2006287, -817118, --8635032, -336618, 4562866, 7006166, -5944235, 1808181, 4613332, -8678518, 14638322, -8650064, --7434052, -7486128, 2189360, 4327180, 6918119, -7203197, 9569724, -13357348, 9153112, 8055748, --5687074, -513785, -182536, -1451162, 7204808, -7391102, 2443300, -2299955, -9416716, 13813689, --7391102, -170188, -5395553, -1688996, 9861245, -12402792, 5388574, 3546569, -5138392, 4670777, --10326175, 3172370, 4776541, -7837242, 550830, 4329327, -6942815, 7423314, -9706626, 2872260, -10782515, -15102179, 4816269, -5751498, 1529008, 5965710, -4029216, -2348810, 8896488, -46728708, --109448648, 30798674, 106858784, 73448776, 116210544, -64918432, -69098504, -94162864, -108986408, 2201171, -83832392, 86625736, 90436440, 17648558, -30079266, -59530396, -85397912, -72388992, 5481989, 55999932, -66432944, 59776816, 14186277, -16683264, -10487236, -46905876, -52469468, -22199612, -1574106, 20000588, -43970800, 21426518, 15854872, 21975738, -11183558, -26363046, -4444755, -42072424, -19828254, 343597, -6512244, 31857384, 37083820, 3189550, -5785858, -3609383, -27617176, -7552700, -525597, -5822365, -9373766, 18295486, -4056597, -1555852, -7349226, -11577084, 2234994, 1053878, -1366337, 20688320, -13952738, 5138929, -611496, -19605988, -28362354, -22376780, 1596654, 21132850, 18128520, 23909546, -3385508, 1022202, 5804112, -28398860, -15374372, -7304666, 374736, 1276679, 0, 0, -0, 0, 0, }, +4711579, 5091684, 39192, -2043331, -4964446, -1811403, -3577171, -3725884, 773094, -3032784, +-1884954, -511101, 3035468, -222801, 1024887, -3275450, -1678795, -3889093, -6316823, 3422015, +2469606, -2666638, 1373853, -1632625, -334471, 3979824, -2336462, -464393, -3007014, -1876364, +1577327, 2162516, 3046206, 2671470, -4293894, 592169, 2261300, 68183, 3236258, 416075, +1008244, -3397856, -1817308, 586263, -960999, 813896, 270046, -2039573, 3583613, 2485176, +-4343286, -184684, -236760, 1103807, 3747896, 1523103, -4109747, 595927, 1422171, -3065533, +1148904, 1420560, -567473, 1628330, -434329, -827855, -345208, -2459406, -520765, -998580, +-1880122, -345208, 35433, -302258, -652298, -1038845, -5580237, -4926865, 6039798, -1286343, +4816269, 1370632, 7182259, -1729261, -3767760, -2620467, 4377646, 73014, -1635309, -478889, +4958003, -1380295, 878321, 1695438, -3375308, -2605972, -1115081, 862215, -3498251, 824634, +687195, -4090420, -1327682, -2473901, 324807, -1826972, 631360, 6503118, 3358128, -1991791, +304406, -3193308, 2389613, -914828, 3881577, -8136279, -883690, 1165547, -2863133, 431644, +3914863, 2893734, -3614215, -2774549, -2897492, -637803, -2287070, -1273995, -3510599, 1245004, +-277562, -4207458, -2079301, -1773822, -157303, 714575, -835908, -566399, 1830193, 542240, +-1852205, 840203, 4454418, -2434710, -472983, -4917738, -1672890, -638340, 2055679, -2327336, +630286, 328028, 299574, 7813620, -2538326, 2734821, 6574521, -4822712, -5488968, -556735, +-1168231, 224412, 3477313, 2085207, -7744363, 1553168, -4332012, -6018860, -145492, 2627983, +2768643, -1750736, -9664, -359704, 3698504, -392990, 3085397, -998043, 582505, 950798, +1113470, -3670050, 1934883, 3437048, -1203665, 4293357, -1939178, -79994, -4687957, 3864397, +1130113, -940061, -3582003, -3421478, -1478006, -917512, 2158221, -32749, 1895691, 2030446, +-3152506, 2517925, -4318590, 2044941, 2895882, 5457830, 5087926, -3741454, 2311229, 181999, +-864362, 3411278, -2008434, -2203318, -1778653, 2902324, 1437740, 3652333, -2873333, 5260798, +-1289027, 332860, 1659468, 1383516, 3000035, -1460826, 4159676, 5626407, 8862665, 4472135, +-9212705, -9908490, 1138703, -788127, 2361158, 2236604, 6550362, 3005403, 3118146, 1633161, +-3228205, 1289564, 8255464, -5476620, -656593, 321586, 6606197, 4072166, 875100, 3027415, +-586263, 2363306, 2995740, 6905771, 3697967, 3924526, 1968706, 1744831, 3223373, 1315871, +-4859219, 3034931, 3802657, -1270237, 2720325, 3898757, -1458678, 1326071, 4544613, 1887101, +-1306744, 1847373, 4610648, -79457, -258235, -770947, 1093069, 4682051, -1573032, -2340757, +1033477, -1351841, 2086817, 3041374, -3664681, 951335, -2509872, 421444, 990527, 4049617, +2695629, -7677254, -479426, 4209605, -2541010, -2979634, -127775, 986232, 3271155, 96637, +-9240622, -3223910, 1880122, -1773285, 2956548, -339839, -17015050, 2141041, 1515050, 7624641, +-525597, 5909875, 2913599, 1352378, -10073846, -190589, -382789, -7840463, 987306, 5509370, +845035, -309238, -965294, -3244848, -3743064, 1362578, 1999844, -466004, 1245004, 1561221, +6596533, 592706, 2769180, 3009698, -3874597, 584116, -1130113, -1186485, -748398, 2333241, +-687195, -1914482, -3053185, -1842541, 569083, -5082557, -3790309, 1858110, -4214974, 1067299, +-6722161, -7851200, -2298881, 9241696, -2859911, -775242, 5207648, 1644973, 26307, 5735392, +-1245541, 423054, -1173063, 1493038, 3402151, -1774358, -6422587, 3520263, -3956739, -6942815, +-3143379, -2204392, -543850, 2040646, 6597607, -405874, -698469, -3346853, -963146, 3560528, +-2812667, -3106872, 3905199, 15028627, 556198, -838592, -5610301, -3192771, 7958038, -3122441, +6225555, 5380521, -5962489, -902480, 4682051, -3289945, -1568200, -1491427, -2124935, 1079647, +1717450, 374736, 2945274, -1218697, 512175, 1187559, -1150514, -2728915, -2892661, -3229279, +326954, 4006131, 1757715, -3177202, 371515, 1659468, 7496866, -2071785, 6720013, -5921686, +2813741, 4938676, -3090229, -1781338, -6101538, 3075197, 20401, -4170950, 4384625, -5202816, +6123550, -144418, 8634495, 2158221, 1037235, 2272575, 3670050, 2117419, -2633352, 4446902, +-645856, -4242354, -6880001, -1642825, 3154654, -3229816, -2093797, 3067681, -3711926, 8070781, +-7162395, 363998, 5269388, -3779034, -1304596, -7242389, -96100, -2365990, -1017907, -1217623, +7192460, 12750684, -3760244, -5596880, 1443646, -2306934, 3506304, 11596412, 56371, -2718714, +3678640, 1957968, 3433290, 2041183, -6341519, 185757, -5658620, 3094524, 2727841, 1605244, +10633265, -573915, 7928510, -278636, -195958, 2338073, -65498, 8264054, 1106491, 5166309, +-1937567, 7023346, -3204583, 3692061, 14111115, -2420214, -3552475, 9820980, 2102923, 6345278, +-146566, -6327561, 1941325, -3723737, 4278861, -7619272, -977642, -4056060, 4224101, -832687, +892279, 7464653, -3703336, -7961259, 2199560, -926102, -321049, 5964099, 1260573, 578210, +-2753611, -5423470, -5305895, -2179696, -4346507, -3780108, 4732517, -2787971, -271120, -2210835, +767189, -574452, 4429722, 1884954, -4211753, -7595650, 17916992, -8825621, 6529424, 624918, +3405909, -3848291, -2950106, -1538135, 4180614, 5307506, 1407676, -2292439, -4737349, 3069828, +5208722, -540092, 1880122, -2181844, 5641977, 2377265, -9580998, -2839510, 3550327, -150861, +-3872450, 235149, 4869419, -2876554, 1882806, -6012418, 4117800, 8623757, -3034395, 9102646, +641024, -1105954, 6104223, 227633, 792421, 5691369, -10896332, 2182380, 3760244, 5287105, +3586835, 4250407, -4690641, -3389266, 182536, 2328409, -5101885, 2354716, 5681168, 5331665, +2142652, 15139760, -4202626, -1230508, -6197638, -2210298, -3914326, -5424007, 7927436, 3793530, +7772280, -452045, -11258720, 7559143, -3636227, 4531728, 3915400, 2483028, 2646774, -8315594, +11716671, 3533148, -21971442, -18640694, -17271138, 2702071, 2390149, 432718, -235149, -2093260, +-2244657, -486942, -3764002, -6839736, -5103495, -11278584, -5573794, -5941551, 5191005, -8873402, +-4537633, -5412733, 317828, -809601, -3095061, 1427003, -1728724, -9164923, -1214402, 6698002, +-76236, -8267275, -7589207, 1963337, -3716221, 5484137, 3388192, -7855495, 5778342, 9979357, +-10223096, -10211822, -6119255, 2542621, 7489349, -7037304, -7524246, 2380486, -4853850, -217970, +-2018098, -1686848, -11127723, 992674, 4753455, -3986267, 2164127, -5842766, -7156490, -6743099, +-4210142, -10961293, 15788837, -4599910, -2570538, 2010045, 402116, 2637647, 809601, 4295504, +837519, 3536906, 8907225, -14886894, 7727183, -4540854, -4721243, -1845762, -20683488, 15814606, +4207994, 3403225, -3798362, 15437723, -2392297, 7215008, 47245, 6461242, -9142375, 3519189, +3730179, 1255741, -4413079, 13627394, -3594351, 4007205, 3345780, 14104136, -9478456, -877247, +4196720, -2763812, -6862284, 3984119, -6419903, 1402844, 2101850, -8185671, 3330210, 264677, +714038, 15353971, 10197326, -1755568, -6081674, -5507222, 3909494, -1338419, -9033390, 2148021, +-386547, 2212445, 7589744, 9873056, -6696391, 6476811, 4102768, -5421860, 3973382, 1997160, +-6843494, -4826470, -4028143, 6648610, -7432441, -7813620, -17869748, -14622216, 4555350, -3639448, +-1839320, -8341900, -13526999, 4239670, 2092186, -1867237, 8144869, 4392141, 9697499, 3161633, +3411278, -2524367, 2935073, 6583648, -5362804, 5995775, -24565066, 23534810, 17033304, -6360310, +-5288716, 6652905, 489626, 975494, 11470247, 8213588, 762357, -1222992, 4888747, -2165201, +-1146756, 3510062, -4490925, 6605660, 4716411, -4770635, 7160784, -330712, 2275796, -99858, +-10537165, -229244, 8498130, 8691403, 3749507, 3939022, 4949950, -4753992, -5988258, 3176665, +5503464, 162672, -1987496, -5291400, 2879239, -1296006, 7616588, 8694624, -382789, 9964324, +-4438312, 11059004, 6374805, 13251585, 1519345, 2224793, -3111704, -4939750, -377420, 10230612, +16818018, 1297617, 12996034, -5009006, -11130945, 1876901, 5195837, -10059887, 11547020, -3301756, +4631586, -22538914, -8908836, 63351, -4499515, 4589173, 8626442, 15968152, 4568235, 281857, +-6193880, -12885439, 7154342, -8702141, 17670032, -6138582, 2993592, 13488882, 13883482, 79994, +-6433861, -2934000, -2957622, 2007360, -8612483, -6539625, 8990440, 3088618, 6121402, 7371775, +8391292, -2228551, 5777805, -715112, 6727530, 25169582, 6617471, -10457708, 12211129, 14079977, +1515587, -967441, 1636383, -5213554, -7863012, -3413962, 14142790, 10076530, 8261907, 12456479, +3237869, -667867, -4185983, -12955769, 7577933, 8828305, 5156108, -913754, -768799, -3538516, +2988760, 13006772, 9012452, -11836930, 9816148, -9707700, 12870406, 4066260, 5506148, 6883759, +-861678, -4660040, -775778, 6507949, 21629456, -1401233, 11457899, -2561948, -7920457, 12990129, +11178726, 4840965, 3768297, 12528420, 5150203, 3801046, 861141, 8639327, -4141422, 8762270, +11209865, -12562779, 8712878, 5021891, -2862059, 859530, 6084358, -5246840, -10955925, 16843252, +3881577, 3237869, 3406446, 9978820, 3189550, -10053982, 11025181, -14429480, -16502875, 1445257, +2357400, -9356586, -2692408, -27596238, -19108310, -14775224, -4567698, -15217606, -7023882, 5577015, +-13139916, 9351754, 9203041, -11241003, 14733885, 7397545, -2304787, -1673964, -6875706, 56371, +-12655658, 28643136, 9012989, 4188130, -13867376, 3165928, -3860639, 18802294, -3236795, -922344, +-16864190, 16675211, 1820529, 6204617, 6262599, 9438191, 6393059, -4494147, 6487011, -9212705, +9448928, -3886946, 5921686, -14507326, 31786516, 3761318, -13469017, 6684580, 9941239, 5772973, +11461120, 7420630, -12974559, -21304648, 7340636, -2004676, -1105954, 14334453, -1367410, -1210107, +2368675, 12939126, -2010582, 7982734, -4714801, -5796595, -7650948, -10044318, 20368346, 11089606, +8100845, -5007932, -16525960, -20607790, 11551315, 8225936, -6547141, 6203007, -4075924, 1559073, +20328080, 9418863, -4267050, 11385958, -2311229, 6411850, -5193689, 7537131, -12952011, -19763828, +-6865505, -8233453, -339302, 25409026, -18569828, 12520367, 7864085, 6036577, -3083787, 10649908, +5602785, -17969606, -22865870, -7546258, -9667435, 28493350, 21284248, -5558225, -10783052, 69793, +-11063299, -1554241, 21488796, 19590420, 12070469, -15187004, 5167383, -11603391, 21726092, 10657424, +-311385, 1257889, 8647380, -10571525, 4704063, 19031000, 11821361, -14217952, 19884088, -4958540, +11633456, -17007534, -6172405, 30506616, 14593762, 17872970, 5023501, -24029806, 8506720, -19385334, +14086419, 37856916, 14143864, 23976654, -9561134, 7356742, 11818139, -521839, 3804804, -8964670, +3470871, 15188078, 1844152, -3359738, -12100533, 7793218, 6598681, -12953621, 8201777, -4625143, +11520713, 15171972, 16895864, 19284404, 3201361, -14173392, 5310190, 9314710, 1245004, 26041998, +3721052, -29093034, -16972638, 8753680, -5914707, -34435436, 2916820, 15163919, 7201050, 1877438, +-1354525, 18633178, -12495670, -17552458, -1445793, -6102612, -15260556, -682900, 3514894, -9841918, +-12569759, -8881455, 3302293, 2458332, -18842558, 6771016, -5991480, 5616207, 28281822, -2966212, +-4933844, 17973902, 1278290, 15353971, -8559870, 10927471, 7288560, -11236171, -3642669, 24768540, +2874407, -34876744, -15984258, 20980916, -31217432, 17109540, -29557964, 1957968, -5034239, -42616276, +-5928666, 18577344, 38478612, 11950747, -5996311, 9008694, -15243376, -5417028, -34221764, -2306934, +-23344220, -3735548, -5361730, -16326244, -17191144, -6023692, 9393630, -15702937, 10237591, 18984830, +-20279762, 6839199, 6177237, 3027952, -21545166, -3648038, -480499, -22680648, 5561446, 28002650, +-2397666, -41591928, 14363444, -25261924, -63774896, 17563732, -26500486, -33029372, 1529008, -15300284, +4328254, 10914586, -6469832, 16428787, -14197014, 14327474, -11757473, -28715078, -62814, 20092930, +19257560, -37199784, 5146982, -4650376, -27860380, -7582228, -7255811, 47645684, 23318452, 27828704, +11977590, 11887933, 28394566, 42065448, -11802033, -21050708, -8188355, 54160076, 58725624, -36939404, +-15489263, 25288230, -13654775, 9220758, -18207440, 3370476, -18639622, -33964600, 42631308, 4722854, +12479027, 9602473, 2812667, 4045322, 46708, 7161321, 9691594, -33024004, -26968636, -24365350, +-22478786, -17777944, -11192148, -10173167, -17845052, -11345156, -15247671, 14273250, 11271605, 4316442, +-8782671, 1370632, -33972116, -18540836, 8138426, -31994286, -3577708, 12661564, 25201258, 1820529, +4351876, -13096966, -20010252, -24902220, 17855252, -4519380, 17753784, -66216584, 3648575, -9520869, +7126962, 37166500, 4668630, 4469451, 4400194, -13577465, -13103408, -1721745, -2332704, -38096896, +8197482, -15254113, 33012192, 173409, -34430604, -50066972, -28617368, -7737921, -32061930, -34342020, +-18248242, 23234700, -4818417, -8994198, -14936286, 64441688, -34896608, 25589952, 45885820, -19471772, +7682086, 37452652, -43634184, 3819300, 6318434, 23990076, -49221400, 4999879, 4556424, 18869938, +-20913806, 2655364, 10074383, -27197344, 5392869, 315680, -4628901, 19007914, -4052302, -1695438, +7697655, -994285, -4315906, 19039054, -14302241, 7561827, -5563057, 7374459, -9049496, -1891396, +-11220065, 3747896, 2690260, 35101156, 10772315, 19164680, -2889976, 4479651, 23450522, 3353296, +-8651138, 17603460, 9673877, -5646809, -30429306, 32995012, -30404610, 10398116, 14395120, 24912958, +-30085710, 38092064, 50903416, -21319144, -52492552, 76946488, 24116242, -26492432, 15290620, -24385750, +-41890428, -10728291, -8433705, -31832686, 33646772, -46858632, 16428250, 44674104, -26287884, -56195352, +59880972, -14544370, 35530652, -22362284, -17701708, -36091684, -16199543, 22408454, 17646410, -9218074, +-11480984, 12174622, 29671244, -11892764, 22584548, 26640072, -17757542, -2167885, 16756815, -3659312, +717260, -4824859, 2206540, -26256746, 8139500, -5510443, 1745367, 6815576, -4510790, 5870147, +-10201621, -22012244, -9687299, -38602628, 5775658, 208843, -4882841, 7489349, 4650376, -2291902, +-7912404, 15865609, 25697326, -25783762, 38978976, -4113505, 6083821, 5648956, 34607236, 15527917, +25618944, -30738008, -6578280, -5710696, 44857176, -40793600, -12846247, 20003810, -343597, -47143172, +4347044, -9707163, -6890202, 21570936, 24806658, 1729261, -16473347, 38257420, -14766634, 63839856, +2206003, -28962576, 1466195, -4123169, -31549756, 65850440, 15600932, -4965519, -54742044, 15275588, +20387672, 12794171, 49112416, -8256538, 12026982, -3643206, -23578296, 13329431, -14561013, -8011725, +11157788, 22375706, -21407728, 25617870, 4185983, -472983, 51948704, -9531069, -4204773, 38611756, +-22779970, 34154116, 15951509, -7308961, 14902463, 14694157, 32838246, 33030982, 11083163, -25872346, +56894896, -54916524, 3621194, 50799800, -25307558, 11520713, -4101157, -6220724, -56426208, 39895952, +12514461, 17792976, 20704964, -11996381, -26854284, -21786758, -15400142, 2755222, 57892936, 285078, +46060840, -14652281, -30783642, 1567126, 15384036, -27885076, 47719236, 17658222, 25248502, 43453796, +32146756, -47973176, 21944062, -68647000, -79207248, 561030, 75374528, 42701100, 11471858, -51566452, +-170944528, -34881040, 63880124, 60076392, 101814888, -9392557, 7224672, -43581032, 36612984, -27366994, +-4781909, -17678086, 16962974, -19844360, -932545, -1971927, -5518496, 4242891, 18626200, -19638202, +8564702, 1754494, -4763656, 500901, 13027173, -16497506, -4804995, -2178085, 27224188, -27516244, +7106561, -11861626, 17907866, -19951734, -6098854, 7351911, -4280472, 4272956, -13511967, -1876364, +11482595, -3129421, 4163971, 4282620, 2032056, 15410880, -14253386, 9910100, 10204842, 13890998, +-2408403, -30120606, 3365107, 4366371, 11924977, 12207371, -2894271, 3874597, -5879810, -13139916, +-3120831, 7331509, -3424700, 19677392, -16063715, -3988951, -31278636, 10203769, 2307471, -3559991, +5721434, 7278359, -1619740, -14181445, 3546032, 17060146, -4576825, -151934, 3992172, -3416647, +8390219, -2328946, -24713778, 60436632, 16589848, 15042586, -7813083, -19157164, -18405008, 5411659, +11872363, 1984275, -517007, 69793, -8631811, -1471026, 4413079, -2206003, 2006287, -817118, +-8635032, -336618, 4562866, 7006166, -5944235, 1808181, 4613332, -8678518, 14638322, -8650064, +-7434052, -7486128, 2189360, 4327180, 6918119, -7203197, 9569724, -13357348, 9153112, 8055748, +-5687074, -513785, -182536, -1451162, 7204808, -7391102, 2443300, -2299955, -9416716, 13813689, +-7391102, -170188, -5395553, -1688996, 9861245, -12402792, 5388574, 3546569, -5138392, 4670777, +-10326175, 3172370, 4776541, -7837242, 550830, 4329327, -6942815, 7423314, -9706626, 2872260, +10782515, -15102179, 4816269, -5751498, 1529008, 5965710, -4029216, -2348810, 8896488, -46728708, +-109448648, 30798674, 106858784, 73448776, 116210544, -64918432, -69098504, -94162864, -108986408, 2201171, +83832392, 86625736, 90436440, 17648558, -30079266, -59530396, -85397912, -72388992, 5481989, 55999932, +66432944, 59776816, 14186277, -16683264, -10487236, -46905876, -52469468, -22199612, -1574106, 20000588, +43970800, 21426518, 15854872, 21975738, -11183558, -26363046, -4444755, -42072424, -19828254, 343597, +6512244, 31857384, 37083820, 3189550, -5785858, -3609383, -27617176, -7552700, -525597, -5822365, +9373766, 18295486, -4056597, -1555852, -7349226, -11577084, 2234994, 1053878, -1366337, 20688320, +13952738, 5138929, -611496, -19605988, -28362354, -22376780, 1596654, 21132850, 18128520, 23909546, +3385508, 1022202, 5804112, -28398860, -15374372, -7304666, 374736, 1276679, 0, 0, +0, 0, 0, }, { 10924786, -6826851, 2576981, -311922, 5572183, 409096, 82141, -1086090, 2179159, 4372277, 619012, --2878702, 3926674, 2895882, -1643899, 409096, 923955, -2917357, -1707250, 1961190, 632971, -3770445, -2250563, 2246805, -3097208, -137439, 827855, -3096135, 965831, -1439888, 2833068, --3769908, 5240397, -729071, -2787434, -5018133, 1829656, 4124779, -1475858, 904091, -2236604, -1057099, 2969433, -147640, -1038845, -1052267, -1012002, 2515777, -2498060, -2246268, 671626, -1196685, 1803886, 217970, -1911261, 5364951, 634581, 682363, 3292629, -1029718, 1573032, --31139, -943282, -509491, -445603, 1829656, 3636764, -610422, 921271, 622233, 4495220, --869731, -1659468, -938450, -1498407, -2046552, -388158, -4283156, -2802466, 1347546, -1003412, --1276142, -2016487, 633508, 4391067, -1258425, 151398, 542240, 7432978, -38655, 1538135, --2897492, -1939178, -644245, -1813550, -2010582, -1825898, -1247688, -1722819, -2388539, 2254858, -3562675, -1735704, 622233, 315680, -3841312, 292058, 5369, -2605972, 5360656, -2499134, -3088082, 1342177, -716186, -2816425, -2700998, 2925410, -1318018, -797790, -4069482, -828392, --292058, -1722282, 5652714, -962073, -251256, 2585570, -304406, -4355634, -2275259, -3793530, --2633889, 6638409, -1666984, 7364795, 90194, 46171, -1150514, 1178432, 432718, -3808026, --4317516, 3659849, 533113, 2648921, -118112, 3048353, 1785633, -3546032, 208843, 1910187, -2459943, 588411, 2073932, 9867687, -512175, -925565, -2226404, -5027796, -6255083, -5706401, -903554, 5531381, 2095944, 7305203, 2673080, -2975876, 1098438, -8185134, -6885907, 3543348, --2260764, 4895726, -192737, -3512747, -1619203, 9494025, 2313914, 4143570, 66035, 3223373, --1137630, -917512, 2080375, -1057636, -3802657, -81068, 1727114, -257161, 2147, 6107444, -3891777, -6127845, 389768, -3814468, 6923488, 4151623, 523449, -2174327, -2195802, 3267396, -1956895, 5172215, -4387309, 8093329, 9946071, -2499134, 9694278, 153008, 5190468, 3236795, --1519345, 1782948, 7804493, -758062, -4898947, 4491462, 1620813, 30602, -395674, -843961, -497142, 4438849, -2699924, 1562294, 1279900, 2204929, -3658775, 3866008, 788663, -1063004, --8578123, -6753299, 1810866, -3918084, 2390149, -4835597, -6806987, -6274947, 590021, -4736812, -3884261, 2833605, -6083285, -1396938, 2098092, 360777, 2637647, -1904818, 2733210, 3527779, --5449777, 1473174, 1410360, -4323422, 2142652, 256087, -5194226, 3467112, 3197603, -1901060, -3516505, 393526, 2807298, 2677375, 858993, -1988033, -787053, -6010807, -2105071, -3055869, -2747169, 3118146, 934692, -9532680, 1440425, 3833795, -2487860, 6484864, -5775121, -7292318, -168577, -2247342, 1907502, -5238250, 8942122, -609349, -3527242, 795643, -295816, 5194763, --725313, -3226594, -639950, -2239289, -3315178, -3778498, 1248762, -6730751, 198105, 46171, -1430761, 4147865, 913754, 2803003, 4241280, -3783329, -20647518, -995896, -3097745, 13405130, --345208, 169651, 2354716, -2649458, 6448357, 1057099, -8223252, -4777614, -9532143, 873489, --1255741, -3767223, -3202972, -3979287, -2702071, 10227928, -5660767, -3223910, -3470871, -9089761, --969052, -2800319, 2240899, 3383897, -1961190, -823023, 1838783, -3335579, -1295470, -1874753, --3616363, 2552284, 6160594, -1614371, -1702418, 4519380, -7642895, 3757560, -6215892, -12214350, --7780870, -12181601, -2293513, -7326678, -4903242, 309238, 3960497, 1394254, 2675228, -2587718, -3366718, -5749351, -1633698, 3147137, -559956, 4717485, -2920041, 744103, -4536023, -4067871, -2426120, -8011725, 1315871, 4058744, -7293392, -499827, -2345589, -4419522, -5014911, -5415417, --1988570, -3425773, 28454, 12932147, 204548, -6997039, -6754910, -2196876, -4909685, -1760937, --3679176, 1160178, 692564, -5451924, -3259880, -5993627, 11809013, 5209259, 1125281, -428960, -6405407, -9263708, -131533, 66035, -6004901, -7723962, 7165079, 445066, 5100811, -7715372, --3537979, -2464238, 2756832, 67109, 3387119, -5168993, 1618666, 2661269, -6063420, -5356361, --5295158, 1685238, -1806571, -1154809, 4969277, -1000191, 453119, 604517, -1118302, -5187784, --3619584, -89121, -8744017, -5020817, -4681515, 3033858, 1491427, 4117263, -1015223, 2224256, --270046, -115427, 3824669, -2291365, 6790344, 1856500, 1921461, 27380, -2495913, 3804804, -1968169, 6637872, -1844152, 2116345, 3204046, -563714, -53687, -5586142, 3385508, -3192235, -14835354, 14030584, 10398653, -3890167, 3628174, 5129265, 2885681, 2776160, -5600638, -4910758, --7244536, 5916855, -6818798, -1075352, -5044439, 7941932, -9415642, -7075422, -3702262, -1742146, --5330055, -7815230, 1836099, 126165, 120259, -9415642, -5366562, 2120640, 1585380, 2329483, --2817499, -3899830, -55835, 2486786, 3163244, -2837363, 2983929, -5115843, -1655710, -12142946, -3981435, 1175747, -2432025, -2505577, -9162239, -4254165, 695248, -2370822, -12732431, 6404333, -2303176, -248034, -3780645, -2809982, -5684389, 1375463, -2347737, 3342022, -1300838, -1960653, --7558606, -1528472, -1298691, -4009352, 7044820, -5698348, -598074, 4482335, -2696703, -6055367, --4275640, 5245229, 6473590, 3914326, -1875290, 267899, 18212272, 6053220, -2749316, -2219424, -6349036, -12447352, -2397129, 9915469, 4949950, -7073275, -220117, -4834523, 1869921, 7591892, -18843632, 6131066, 14665703, -5331128, -1151051, -14446123, 4808216, -4304094, 3980361, -6404870, --382252, 470299, -2284386, 5002563, -2354179, 2309619, 6280853, -5003637, 2807835, 7925289, --2253247, 2537789, -40265, 3076270, 4377109, 4369593, -24357834, 8698919, -2863670, -11579769, --2046552, 6745246, 2065879, -9007620, 4678830, 6707665, -14385456, 915902, -4118337, 8178692, -1837709, 6703370, -1796370, -5275294, -10160282, 338229, -6203544, 18686328, 3365107, -3423626, -6159520, 476741, 5924371, -15268609, -2204392, 1951526, 4332012, 730144, -7371775, -1482301, -1998770, 6279242, -21910776, -24011014, -8354249, -2060511, 235149, 4855998, -10370735, 3004867, -11784853, -7081864, 6177774, 8093329, -5986111, -27917, -3019899, 9941776, 13953275, -6991133, --8197482, 6908455, 479426, -7009924, 3012383, -101469, 1568200, 1807108, -3841848, -2867965, --15336791, -1001801, -4536559, -575526, -658741, 10053445, 2841658, -18699750, 96637, 8660802, --10312216, 2410551, 10645076, -2644626, 3606162, -43487, -3068217, -7289633, 13741748, 11465952, --9157944, 4382478, -3548180, -773094, 4117800, -3426847, 3414499, -5874442, -863288, 11427297, --3586298, 2100239, 5332202, -4456566, -9936944, -884226, 3084860, 1202054, -4905390, 27917, -2366527, 3515968, 8382166, 4528506, 9259949, 3999152, 1637456, 3001109, -22655416, 26811870, --788663, 17511656, 2005750, -9004399, -2193118, -4904316, -6111739, -152471, 1188632, 12877923, --1199370, 9083319, -7669738, 303332, 2792803, 2676302, 1676111, 11301133, 11238319, 4604205, -2397129, -564788, -1328756, 164819, -1032403, -16797080, -5271536, 8874476, 5948530, -1176284, -1607928, -7528541, 4922033, -9404905, 2939368, 17002164, 2465848, 4322885, -12778065, 8009041, -6969122, 2549600, -8361228, -3128884, -3546032, 1576790, -7461432, 9140764, 10773925, 6972880, --277562, 16056198, 5982353, 23110146, 9255655, -5053566, 19051402, 1325534, -6271726, 14330695, --1761474, 5364951, 8795556, -5147519, -4983773, 13369159, 13428215, 8850317, -10929081, 5072357, --537408, -4098473, -9859097, 7228967, 9886478, 6553583, -11737072, 17482128, -3988951, -10198400, -4522601, 8017094, -6411313, -2948495, -14486925, 7166153, -4733054, -1141924, -13169980, -5494874, --3838090, -1724429, -5393405, 3999152, -1869921, -2810519, 4318590, 5305895, 9232032, 8680666, --2431488, -2281165, -10285373, 5091147, 1313723, 8080444, 3173981, 2596845, -1426466, 3575024, --5924371, -5440650, 4545149, 2266132, 4626754, -13300440, 5903433, 9605157, 1269700, -11668352, --11404749, -9405978, -28004798, 4666482, -1971390, 14723148, -5504538, 12307766, 5292474, 1288490, -16780438, 2793339, -158914, 11408507, 5707475, -14479408, -5708012, 2217277, -2988224, -8058970, --3317325, 19633906, 10751377, -8705899, 855235, -4792110, -497142, 3009698, 15548318, 234076, --2014877, 17043504, 8029978, -11319923, -2308008, -2469069, -868120, -59593, 32775432, 6046240, -12416214, -4881231, 10919417, 21492016, -17047262, 27690192, 16572668, -6326487, 885300, 2501819, --9021042, -15302432, 1737314, -8479339, -13837311, -5548024, 1884954, 973347, -1185948, -5524402, --507880, -5330055, 127238, -6293201, 23085, 6055367, -10810970, 7311108, 10095858, -6342056, --6400038, 6070400, 4236449, 520228, 29291676, 3747359, 19675246, -12555263, -878321, -15443629, --11842835, 4298726, -11899744, -15524696, -10881300, -11397233, -2429878, -1903207, -13927505, -13914083, -20542292, 4858145, 1532230, -963146, 10685879, 7717520, 12772696, 783832, 11977590, -4471061, -2602213, -19925964, 17925582, 11579232, 712965, -9071508, -2393908, 14218489, -7774965, -6616397, -16054588, -16109885, -12579422, -4182225, -10282152, -2873333, -18853296, 2457795, -12129525, 6784438, --195421, 1325534, 8638253, 1366337, 5701032, 8169028, 7849590, 6058052, 11543261, -27917, -7415261, 6278169, -10756746, 14681272, 2638184, 5904507, -10135049, 11060615, 4372277, 7252053, -900869, 1486596, -3013457, -13444858, 1611687, 4870493, 6433861, 6745783, 445603, -16076599, --10414759, 8388608, 4160750, 427349, -6851547, 5145908, -6636798, -16284905, 19493246, 10750840, -7856032, -10189273, -5513128, -12827994, -34740380, -3269544, -6259915, 1925756, -9436043, -10785200, --16387448, 2147, 2830384, 15824270, -16620450, 3013457, -1882806, 5374615, -15293305, -19331648, --12448963, 6170795, -493384, -25748866, 16405164, 17445084, -7150047, 15059766, 5773510, -21473762, --3049427, 30845382, -3304441, -18577344, -2192044, -694174, -16292422, 13251048, 3343632, -7393786, -13773960, 9886478, 31421444, 19272592, 1247151, 3607773, 29635812, -6023692, 8029978, -10383083, --16298327, -3610994, -10879689, 4090956, -210990, 7351911, -281857, -504659, -4318590, 24382530, -1640678, -16293495, -13736379, -1543504, -3227131, 1107028, 7864085, 22585622, 13672492, 6249715, --12269111, 18087182, 29846802, -4263292, 13671418, 14620069, 35800164, 8914205, 6928319, 13000866, -15251429, 10751914, -12216498, -9296457, 8120710, -19236622, -13309567, -12887586, 14575508, 15937550, -8696235, -343061, 10433549, 26377004, -13671418, 22183506, 17384418, 2270964, 17292076, -10133438, --2823404, 6198175, 20744156, 36719824, 4234301, -3556233, 4209068, -1763621, -5631776, 1254667, -4211216, -8761733, -11440719, 4148939, -5707475, -3268470, 9778030, -394600, 18770080, -9565429, -18440442, 8809515, 2333241, -10404558, 3982509, 17811230, 5801964, -9140227, 4193499, -2259153, -1200980, 10354092, -13797582, -7849053, 16976932, 146029, -3207804, 13845364, 137976, 4712653, -4070019, -13782013, -23654532, -5548561, 9468255, 15353971, 4392141, -12514461, 16752520, -5631776, -32968706, -16678969, 22582938, -13123809, 8852464, 17765596, -25972740, -28812788, 1090385, -8726300, -8605504, 8121783, 2698313, -5060545, -15153181, 10202158, -853625, 18854370, 10666551, 17381196, -6827388, 9514426, -2626909, 12883828, 7318625, -9920838, 4572530, -1271847, -28319940, 22484154, -29471528, -8048769, -2510409, 9529996, 39416524, -194884, -25409564, -10981695, 3586835, 3289408, --8931384, 6436546, -6814503, 11266773, -21747030, -287226, 11415486, -9900436, -10532870, 403190, --21515638, -7605314, -7899519, -33546916, -28478318, -17131550, 10525891, 12545599, -3779034, -24297704, -1237488, -607738, -2156074, 3157338, -12847858, 26036628, -9210020, 2051921, 29061360, -28105730, -11454678, 3037616, -10706280, 9591736, -8631274, -23097260, -1005559, 17190070, -9844602, -15089294, -6274411, 992137, 16275242, -1406065, -29061896, 643708, -17882096, 25496000, -11519102, 2505577, -4882304, 1640678, -5748277, -19196894, 5368172, 16783658, 3249680, 17340930, -30133490, -17049946, --7095286, -2033667, 209917, -23445152, 16226923, -5410048, -20845086, 31319976, 1197222, -52970904, -21649856, -7108708, 4511863, 5606006, 7535520, 13210246, 5180805, -9509594, -1879585, 13247827, -9367861, -10496363, -62277, -8342437, -3813931, -26121992, -2774012, 12557948, 16209207, 3461744, --5578626, 17222282, -17172352, 19603842, -10676752, -6523519, 3063922, -6293738, 6003291, -15937550, --20451560, -24007794, -6789270, 12022150, -3899294, -200253, 15362561, 3658239, 3459059, -856846, -1462973, -5451924, 1209033, 15103252, 10661183, 15916612, 15067819, 15916612, 12395276, -10470593, --5048734, 3342558, 218506, -19755238, 14092861, -4286914, -16525960, 21571474, 1222992, 2636036, -935229, -9306120, -1045288, 8220568, 15458661, 10035191, 2247879, 5494337, -20904680, -4845797, --5947456, 11025181, 6238440, -6113349, -8010651, 72411536, -71111240, -3572339, -77308336, -11978127, --29384556, -3590593, 18898392, -9596568, -21366926, 33728916, -9082782, -5883032, 1173063, 10398116, --1135482, 28044526, 18649822, 11138461, -16449725, 1123671, -11170673, -11458973, -7537131, 459562, --3367254, -3044058, -9156333, -2012729, 15720654, 1995549, 10509785, 10348187, -539555, 13801341, -20244866, 1223529, -3719979, -10214506, -12013024, 5180805, 5899138, -10052371, 17398376, -22020298, --21997748, 2828773, -7255274, 12466143, -20205136, 9387725, -39434780, -20925080, -31307628, -2190433, --14876693, -744103, -8548596, -11296301, -9218074, -22549, 4223027, -30379378, 5300527, -5600101, -5587753, 1682554, -12250857, -23751706, 20419348, -13118978, 485331, 18792092, 2291365, -424128, -14294725, -5675263, 60202020, 31048856, 15763604, -12590160, -5862631, -29003378, 8204998, 26203596, --3369939, -4182761, 41622528, -5535139, -7586523, 21602612, 30774514, 6797323, 31322122, -5802501, -5617281, 19463182, 21229486, 33363842, 26726508, 393526, -10314364, 11258720, 12570832, 12651900, -14539538, 25422986, 12502113, 31857920, -10807748, 973884, 9590662, 9942312, 26198764, 16589848, -27950574, -17908940, -5632850, 12676059, -20741470, 18911278, 17779554, 18443664, 7374996, -19614578, --7650948, 42318848, 10479183, 29099478, 22585622, 26621818, -5353677, 34708168, 51199768, 19510426, -3947612, 37936908, 24197308, -12218645, -9650792, -15809775, -15375983, 16969416, 16013786, 3287261, --17054242, 2105608, -16027207, 1265942, -9424769, 10783052, -36165772, -1588601, -4840428, -19029390, -8815957, -22909356, 38852276, 55040544, 32122060, -14947023, -30783104, -12004970, 27368606, -8967355, --22879290, 40585292, -28777354, 23802708, 14008036, -33624764, -13419625, -4547834, -53633940, 927713, -6380174, -27230092, 53238804, -19586662, 49520972, -38339024, 5840619, 795643, 36404144, 51323784, --3880503, 16225850, 25562572, -31178242, 20257750, -41652056, -10289131, 73251208, -3543348, -23026394, --3320010, -44542568, 2625836, -15786689, 48005388, 15274514, 22848152, -10044855, -11519639, -26462904, --20739324, 2297271, 4022774, -3250217, 32436666, -11213623, 7049115, -36407900, -15826418, 17670032, --47478716, -23521926, -13583908, -21320218, 46250892, -1819992, 49758268, 29524678, 16168941, 12641699, --10846403, -32729262, 21230560, -43116640, -24174224, 32753420, 35794796, -58097484, 62792960, -1045825, -5231270, -19436874, 50746112, 12372190, 32800666, 12821551, -20892332, 7834021, 18336290, -30206504, -21858700, 1002875, 14576045, -40490804, -2965138, 10735808, 38075420, -15127949, -31057982, -687732, -37799472, 20572356, -14285061, -31752694, -1538672, 27923194, 3578245, 2644089, 7512972, 20535850, -49838264, -69575784, -11731703, 7604777, 38953204, 9586367, -21565030, -4435091, 14598594, 36687072, --4001299, 2635499, -67946384, 20456392, 9992778, 19355806, -49619756, 44281648, 36516348, 15054397, --23051626, -1195075, -25559888, 19426674, 30708480, 14563697, 13513041, -1548873, 22529250, -33949568, -31465468, -8450885, -14289356, 40936408, 29545616, 3963718, -15771120, -30055644, 19159312, 28877212, --75369696, -1035087, -50801948, 27045410, 6389838, 17796196, 21051246, 30077656, 11542725, 10765336, --12181601, 16326781, 4099010, 35484484, -2518998, -8407398, 27936614, 22128208, -3136400, 3517578, --10051834, 2143189, 9716290, -797253, -5514201, 17023102, -10821170, 3459059, 21767432, -2499671, -13067438, -18953154, -3068754, 4811974, -7439957, -1276679, 3554622, 17069274, -2669859, -22876070, -2101313, 52113524, 11442330, -24781424, 9162239, -25252260, -17823040, -11848204, -2825015, 34312492, --2442226, -22835268, 52503292, -53099216, 10443213, 59602872, 6979322, 42807940, -29615410, -54086524, -19327352, 5016522, 46345920, 5618891, -24733642, 24495272, -4866198, -1102733, -10034654, 2090039, --15080167, 12267500, 3116536, 17034378, -18460844, -10870562, -5263483, 28085864, 11039677, -21225728, --117632176, -255214480, -108173584, -158138544, -226404368, 104097120, 20326470, 55109800, 294330880, 224537136, -125950456, 240619104, 176296064, 20933134, 50495392, 40572944, -130976104, -113184200, -61652108, -193517808, --186158912, -77745352, -101275328, -137444320, -64509336, -56203944, -140421264, -118189448, -20431160, -71780712, --115947472, -46265388, 21941378, -86136640, 11537893, 102900976, -19838990, -26097832, 142307296, 112828792, --16371342, 169779520, 196864656, 75127568, 184477440, 264907136, 152902976, 133325448, 318408480, 254056448, -187261648, 226001712, 300491488, 103623064, 34864396, 123229592, -110948672, -299609408, -220846688, -329764896, --533160608, -474892928, -505987936, -583672128, -597064320, -511007168, -447137248, -443189088, -312575904, -131227360, --87682296, 1000191, 168455056, 310556736, 328255776, 392185824, 330019392, 215854848, 0, 0, -0, 0, 0, }, +6826851, 2576981, -311922, 5572183, 409096, 82141, -1086090, 2179159, 4372277, 619012, +-2878702, 3926674, 2895882, -1643899, 409096, 923955, -2917357, -1707250, 1961190, 632971, +3770445, -2250563, 2246805, -3097208, -137439, 827855, -3096135, 965831, -1439888, 2833068, +-3769908, 5240397, -729071, -2787434, -5018133, 1829656, 4124779, -1475858, 904091, -2236604, +1057099, 2969433, -147640, -1038845, -1052267, -1012002, 2515777, -2498060, -2246268, 671626, +1196685, 1803886, 217970, -1911261, 5364951, 634581, 682363, 3292629, -1029718, 1573032, +-31139, -943282, -509491, -445603, 1829656, 3636764, -610422, 921271, 622233, 4495220, +-869731, -1659468, -938450, -1498407, -2046552, -388158, -4283156, -2802466, 1347546, -1003412, +-1276142, -2016487, 633508, 4391067, -1258425, 151398, 542240, 7432978, -38655, 1538135, +-2897492, -1939178, -644245, -1813550, -2010582, -1825898, -1247688, -1722819, -2388539, 2254858, +3562675, -1735704, 622233, 315680, -3841312, 292058, 5369, -2605972, 5360656, -2499134, +3088082, 1342177, -716186, -2816425, -2700998, 2925410, -1318018, -797790, -4069482, -828392, +-292058, -1722282, 5652714, -962073, -251256, 2585570, -304406, -4355634, -2275259, -3793530, +-2633889, 6638409, -1666984, 7364795, 90194, 46171, -1150514, 1178432, 432718, -3808026, +-4317516, 3659849, 533113, 2648921, -118112, 3048353, 1785633, -3546032, 208843, 1910187, +2459943, 588411, 2073932, 9867687, -512175, -925565, -2226404, -5027796, -6255083, -5706401, +903554, 5531381, 2095944, 7305203, 2673080, -2975876, 1098438, -8185134, -6885907, 3543348, +-2260764, 4895726, -192737, -3512747, -1619203, 9494025, 2313914, 4143570, 66035, 3223373, +-1137630, -917512, 2080375, -1057636, -3802657, -81068, 1727114, -257161, 2147, 6107444, +3891777, -6127845, 389768, -3814468, 6923488, 4151623, 523449, -2174327, -2195802, 3267396, +1956895, 5172215, -4387309, 8093329, 9946071, -2499134, 9694278, 153008, 5190468, 3236795, +-1519345, 1782948, 7804493, -758062, -4898947, 4491462, 1620813, 30602, -395674, -843961, +497142, 4438849, -2699924, 1562294, 1279900, 2204929, -3658775, 3866008, 788663, -1063004, +-8578123, -6753299, 1810866, -3918084, 2390149, -4835597, -6806987, -6274947, 590021, -4736812, +3884261, 2833605, -6083285, -1396938, 2098092, 360777, 2637647, -1904818, 2733210, 3527779, +-5449777, 1473174, 1410360, -4323422, 2142652, 256087, -5194226, 3467112, 3197603, -1901060, +3516505, 393526, 2807298, 2677375, 858993, -1988033, -787053, -6010807, -2105071, -3055869, +2747169, 3118146, 934692, -9532680, 1440425, 3833795, -2487860, 6484864, -5775121, -7292318, +168577, -2247342, 1907502, -5238250, 8942122, -609349, -3527242, 795643, -295816, 5194763, +-725313, -3226594, -639950, -2239289, -3315178, -3778498, 1248762, -6730751, 198105, 46171, +1430761, 4147865, 913754, 2803003, 4241280, -3783329, -20647518, -995896, -3097745, 13405130, +-345208, 169651, 2354716, -2649458, 6448357, 1057099, -8223252, -4777614, -9532143, 873489, +-1255741, -3767223, -3202972, -3979287, -2702071, 10227928, -5660767, -3223910, -3470871, -9089761, +-969052, -2800319, 2240899, 3383897, -1961190, -823023, 1838783, -3335579, -1295470, -1874753, +-3616363, 2552284, 6160594, -1614371, -1702418, 4519380, -7642895, 3757560, -6215892, -12214350, +-7780870, -12181601, -2293513, -7326678, -4903242, 309238, 3960497, 1394254, 2675228, -2587718, +3366718, -5749351, -1633698, 3147137, -559956, 4717485, -2920041, 744103, -4536023, -4067871, +2426120, -8011725, 1315871, 4058744, -7293392, -499827, -2345589, -4419522, -5014911, -5415417, +-1988570, -3425773, 28454, 12932147, 204548, -6997039, -6754910, -2196876, -4909685, -1760937, +-3679176, 1160178, 692564, -5451924, -3259880, -5993627, 11809013, 5209259, 1125281, -428960, +6405407, -9263708, -131533, 66035, -6004901, -7723962, 7165079, 445066, 5100811, -7715372, +-3537979, -2464238, 2756832, 67109, 3387119, -5168993, 1618666, 2661269, -6063420, -5356361, +-5295158, 1685238, -1806571, -1154809, 4969277, -1000191, 453119, 604517, -1118302, -5187784, +-3619584, -89121, -8744017, -5020817, -4681515, 3033858, 1491427, 4117263, -1015223, 2224256, +-270046, -115427, 3824669, -2291365, 6790344, 1856500, 1921461, 27380, -2495913, 3804804, +1968169, 6637872, -1844152, 2116345, 3204046, -563714, -53687, -5586142, 3385508, -3192235, +14835354, 14030584, 10398653, -3890167, 3628174, 5129265, 2885681, 2776160, -5600638, -4910758, +-7244536, 5916855, -6818798, -1075352, -5044439, 7941932, -9415642, -7075422, -3702262, -1742146, +-5330055, -7815230, 1836099, 126165, 120259, -9415642, -5366562, 2120640, 1585380, 2329483, +-2817499, -3899830, -55835, 2486786, 3163244, -2837363, 2983929, -5115843, -1655710, -12142946, +3981435, 1175747, -2432025, -2505577, -9162239, -4254165, 695248, -2370822, -12732431, 6404333, +2303176, -248034, -3780645, -2809982, -5684389, 1375463, -2347737, 3342022, -1300838, -1960653, +-7558606, -1528472, -1298691, -4009352, 7044820, -5698348, -598074, 4482335, -2696703, -6055367, +-4275640, 5245229, 6473590, 3914326, -1875290, 267899, 18212272, 6053220, -2749316, -2219424, +6349036, -12447352, -2397129, 9915469, 4949950, -7073275, -220117, -4834523, 1869921, 7591892, +18843632, 6131066, 14665703, -5331128, -1151051, -14446123, 4808216, -4304094, 3980361, -6404870, +-382252, 470299, -2284386, 5002563, -2354179, 2309619, 6280853, -5003637, 2807835, 7925289, +-2253247, 2537789, -40265, 3076270, 4377109, 4369593, -24357834, 8698919, -2863670, -11579769, +-2046552, 6745246, 2065879, -9007620, 4678830, 6707665, -14385456, 915902, -4118337, 8178692, +1837709, 6703370, -1796370, -5275294, -10160282, 338229, -6203544, 18686328, 3365107, -3423626, +6159520, 476741, 5924371, -15268609, -2204392, 1951526, 4332012, 730144, -7371775, -1482301, +1998770, 6279242, -21910776, -24011014, -8354249, -2060511, 235149, 4855998, -10370735, 3004867, +11784853, -7081864, 6177774, 8093329, -5986111, -27917, -3019899, 9941776, 13953275, -6991133, +-8197482, 6908455, 479426, -7009924, 3012383, -101469, 1568200, 1807108, -3841848, -2867965, +-15336791, -1001801, -4536559, -575526, -658741, 10053445, 2841658, -18699750, 96637, 8660802, +-10312216, 2410551, 10645076, -2644626, 3606162, -43487, -3068217, -7289633, 13741748, 11465952, +-9157944, 4382478, -3548180, -773094, 4117800, -3426847, 3414499, -5874442, -863288, 11427297, +-3586298, 2100239, 5332202, -4456566, -9936944, -884226, 3084860, 1202054, -4905390, 27917, +2366527, 3515968, 8382166, 4528506, 9259949, 3999152, 1637456, 3001109, -22655416, 26811870, +-788663, 17511656, 2005750, -9004399, -2193118, -4904316, -6111739, -152471, 1188632, 12877923, +-1199370, 9083319, -7669738, 303332, 2792803, 2676302, 1676111, 11301133, 11238319, 4604205, +2397129, -564788, -1328756, 164819, -1032403, -16797080, -5271536, 8874476, 5948530, -1176284, +1607928, -7528541, 4922033, -9404905, 2939368, 17002164, 2465848, 4322885, -12778065, 8009041, +6969122, 2549600, -8361228, -3128884, -3546032, 1576790, -7461432, 9140764, 10773925, 6972880, +-277562, 16056198, 5982353, 23110146, 9255655, -5053566, 19051402, 1325534, -6271726, 14330695, +-1761474, 5364951, 8795556, -5147519, -4983773, 13369159, 13428215, 8850317, -10929081, 5072357, +-537408, -4098473, -9859097, 7228967, 9886478, 6553583, -11737072, 17482128, -3988951, -10198400, +4522601, 8017094, -6411313, -2948495, -14486925, 7166153, -4733054, -1141924, -13169980, -5494874, +-3838090, -1724429, -5393405, 3999152, -1869921, -2810519, 4318590, 5305895, 9232032, 8680666, +-2431488, -2281165, -10285373, 5091147, 1313723, 8080444, 3173981, 2596845, -1426466, 3575024, +-5924371, -5440650, 4545149, 2266132, 4626754, -13300440, 5903433, 9605157, 1269700, -11668352, +-11404749, -9405978, -28004798, 4666482, -1971390, 14723148, -5504538, 12307766, 5292474, 1288490, +16780438, 2793339, -158914, 11408507, 5707475, -14479408, -5708012, 2217277, -2988224, -8058970, +-3317325, 19633906, 10751377, -8705899, 855235, -4792110, -497142, 3009698, 15548318, 234076, +-2014877, 17043504, 8029978, -11319923, -2308008, -2469069, -868120, -59593, 32775432, 6046240, +12416214, -4881231, 10919417, 21492016, -17047262, 27690192, 16572668, -6326487, 885300, 2501819, +-9021042, -15302432, 1737314, -8479339, -13837311, -5548024, 1884954, 973347, -1185948, -5524402, +-507880, -5330055, 127238, -6293201, 23085, 6055367, -10810970, 7311108, 10095858, -6342056, +-6400038, 6070400, 4236449, 520228, 29291676, 3747359, 19675246, -12555263, -878321, -15443629, +-11842835, 4298726, -11899744, -15524696, -10881300, -11397233, -2429878, -1903207, -13927505, -13914083, +20542292, 4858145, 1532230, -963146, 10685879, 7717520, 12772696, 783832, 11977590, -4471061, +2602213, -19925964, 17925582, 11579232, 712965, -9071508, -2393908, 14218489, -7774965, -6616397, +16054588, -16109885, -12579422, -4182225, -10282152, -2873333, -18853296, 2457795, -12129525, 6784438, +-195421, 1325534, 8638253, 1366337, 5701032, 8169028, 7849590, 6058052, 11543261, -27917, +7415261, 6278169, -10756746, 14681272, 2638184, 5904507, -10135049, 11060615, 4372277, 7252053, +900869, 1486596, -3013457, -13444858, 1611687, 4870493, 6433861, 6745783, 445603, -16076599, +-10414759, 8388608, 4160750, 427349, -6851547, 5145908, -6636798, -16284905, 19493246, 10750840, +7856032, -10189273, -5513128, -12827994, -34740380, -3269544, -6259915, 1925756, -9436043, -10785200, +-16387448, 2147, 2830384, 15824270, -16620450, 3013457, -1882806, 5374615, -15293305, -19331648, +-12448963, 6170795, -493384, -25748866, 16405164, 17445084, -7150047, 15059766, 5773510, -21473762, +-3049427, 30845382, -3304441, -18577344, -2192044, -694174, -16292422, 13251048, 3343632, -7393786, +13773960, 9886478, 31421444, 19272592, 1247151, 3607773, 29635812, -6023692, 8029978, -10383083, +-16298327, -3610994, -10879689, 4090956, -210990, 7351911, -281857, -504659, -4318590, 24382530, +1640678, -16293495, -13736379, -1543504, -3227131, 1107028, 7864085, 22585622, 13672492, 6249715, +-12269111, 18087182, 29846802, -4263292, 13671418, 14620069, 35800164, 8914205, 6928319, 13000866, +15251429, 10751914, -12216498, -9296457, 8120710, -19236622, -13309567, -12887586, 14575508, 15937550, +8696235, -343061, 10433549, 26377004, -13671418, 22183506, 17384418, 2270964, 17292076, -10133438, +-2823404, 6198175, 20744156, 36719824, 4234301, -3556233, 4209068, -1763621, -5631776, 1254667, +4211216, -8761733, -11440719, 4148939, -5707475, -3268470, 9778030, -394600, 18770080, -9565429, +18440442, 8809515, 2333241, -10404558, 3982509, 17811230, 5801964, -9140227, 4193499, -2259153, +1200980, 10354092, -13797582, -7849053, 16976932, 146029, -3207804, 13845364, 137976, 4712653, +4070019, -13782013, -23654532, -5548561, 9468255, 15353971, 4392141, -12514461, 16752520, -5631776, +32968706, -16678969, 22582938, -13123809, 8852464, 17765596, -25972740, -28812788, 1090385, -8726300, +8605504, 8121783, 2698313, -5060545, -15153181, 10202158, -853625, 18854370, 10666551, 17381196, +6827388, 9514426, -2626909, 12883828, 7318625, -9920838, 4572530, -1271847, -28319940, 22484154, +29471528, -8048769, -2510409, 9529996, 39416524, -194884, -25409564, -10981695, 3586835, 3289408, +-8931384, 6436546, -6814503, 11266773, -21747030, -287226, 11415486, -9900436, -10532870, 403190, +-21515638, -7605314, -7899519, -33546916, -28478318, -17131550, 10525891, 12545599, -3779034, -24297704, +1237488, -607738, -2156074, 3157338, -12847858, 26036628, -9210020, 2051921, 29061360, -28105730, +11454678, 3037616, -10706280, 9591736, -8631274, -23097260, -1005559, 17190070, -9844602, -15089294, +6274411, 992137, 16275242, -1406065, -29061896, 643708, -17882096, 25496000, -11519102, 2505577, +4882304, 1640678, -5748277, -19196894, 5368172, 16783658, 3249680, 17340930, -30133490, -17049946, +-7095286, -2033667, 209917, -23445152, 16226923, -5410048, -20845086, 31319976, 1197222, -52970904, +21649856, -7108708, 4511863, 5606006, 7535520, 13210246, 5180805, -9509594, -1879585, 13247827, +9367861, -10496363, -62277, -8342437, -3813931, -26121992, -2774012, 12557948, 16209207, 3461744, +-5578626, 17222282, -17172352, 19603842, -10676752, -6523519, 3063922, -6293738, 6003291, -15937550, +-20451560, -24007794, -6789270, 12022150, -3899294, -200253, 15362561, 3658239, 3459059, -856846, +1462973, -5451924, 1209033, 15103252, 10661183, 15916612, 15067819, 15916612, 12395276, -10470593, +-5048734, 3342558, 218506, -19755238, 14092861, -4286914, -16525960, 21571474, 1222992, 2636036, +935229, -9306120, -1045288, 8220568, 15458661, 10035191, 2247879, 5494337, -20904680, -4845797, +-5947456, 11025181, 6238440, -6113349, -8010651, 72411536, -71111240, -3572339, -77308336, -11978127, +-29384556, -3590593, 18898392, -9596568, -21366926, 33728916, -9082782, -5883032, 1173063, 10398116, +-1135482, 28044526, 18649822, 11138461, -16449725, 1123671, -11170673, -11458973, -7537131, 459562, +-3367254, -3044058, -9156333, -2012729, 15720654, 1995549, 10509785, 10348187, -539555, 13801341, +20244866, 1223529, -3719979, -10214506, -12013024, 5180805, 5899138, -10052371, 17398376, -22020298, +-21997748, 2828773, -7255274, 12466143, -20205136, 9387725, -39434780, -20925080, -31307628, -2190433, +-14876693, -744103, -8548596, -11296301, -9218074, -22549, 4223027, -30379378, 5300527, -5600101, +5587753, 1682554, -12250857, -23751706, 20419348, -13118978, 485331, 18792092, 2291365, -424128, +14294725, -5675263, 60202020, 31048856, 15763604, -12590160, -5862631, -29003378, 8204998, 26203596, +-3369939, -4182761, 41622528, -5535139, -7586523, 21602612, 30774514, 6797323, 31322122, -5802501, +5617281, 19463182, 21229486, 33363842, 26726508, 393526, -10314364, 11258720, 12570832, 12651900, +14539538, 25422986, 12502113, 31857920, -10807748, 973884, 9590662, 9942312, 26198764, 16589848, +27950574, -17908940, -5632850, 12676059, -20741470, 18911278, 17779554, 18443664, 7374996, -19614578, +-7650948, 42318848, 10479183, 29099478, 22585622, 26621818, -5353677, 34708168, 51199768, 19510426, +3947612, 37936908, 24197308, -12218645, -9650792, -15809775, -15375983, 16969416, 16013786, 3287261, +-17054242, 2105608, -16027207, 1265942, -9424769, 10783052, -36165772, -1588601, -4840428, -19029390, +8815957, -22909356, 38852276, 55040544, 32122060, -14947023, -30783104, -12004970, 27368606, -8967355, +-22879290, 40585292, -28777354, 23802708, 14008036, -33624764, -13419625, -4547834, -53633940, 927713, +6380174, -27230092, 53238804, -19586662, 49520972, -38339024, 5840619, 795643, 36404144, 51323784, +-3880503, 16225850, 25562572, -31178242, 20257750, -41652056, -10289131, 73251208, -3543348, -23026394, +-3320010, -44542568, 2625836, -15786689, 48005388, 15274514, 22848152, -10044855, -11519639, -26462904, +-20739324, 2297271, 4022774, -3250217, 32436666, -11213623, 7049115, -36407900, -15826418, 17670032, +-47478716, -23521926, -13583908, -21320218, 46250892, -1819992, 49758268, 29524678, 16168941, 12641699, +-10846403, -32729262, 21230560, -43116640, -24174224, 32753420, 35794796, -58097484, 62792960, -1045825, +5231270, -19436874, 50746112, 12372190, 32800666, 12821551, -20892332, 7834021, 18336290, -30206504, +21858700, 1002875, 14576045, -40490804, -2965138, 10735808, 38075420, -15127949, -31057982, -687732, +37799472, 20572356, -14285061, -31752694, -1538672, 27923194, 3578245, 2644089, 7512972, 20535850, +49838264, -69575784, -11731703, 7604777, 38953204, 9586367, -21565030, -4435091, 14598594, 36687072, +-4001299, 2635499, -67946384, 20456392, 9992778, 19355806, -49619756, 44281648, 36516348, 15054397, +-23051626, -1195075, -25559888, 19426674, 30708480, 14563697, 13513041, -1548873, 22529250, -33949568, +31465468, -8450885, -14289356, 40936408, 29545616, 3963718, -15771120, -30055644, 19159312, 28877212, +-75369696, -1035087, -50801948, 27045410, 6389838, 17796196, 21051246, 30077656, 11542725, 10765336, +-12181601, 16326781, 4099010, 35484484, -2518998, -8407398, 27936614, 22128208, -3136400, 3517578, +-10051834, 2143189, 9716290, -797253, -5514201, 17023102, -10821170, 3459059, 21767432, -2499671, +13067438, -18953154, -3068754, 4811974, -7439957, -1276679, 3554622, 17069274, -2669859, -22876070, +2101313, 52113524, 11442330, -24781424, 9162239, -25252260, -17823040, -11848204, -2825015, 34312492, +-2442226, -22835268, 52503292, -53099216, 10443213, 59602872, 6979322, 42807940, -29615410, -54086524, +19327352, 5016522, 46345920, 5618891, -24733642, 24495272, -4866198, -1102733, -10034654, 2090039, +-15080167, 12267500, 3116536, 17034378, -18460844, -10870562, -5263483, 28085864, 11039677, -21225728, +-117632176, -255214480, -108173584, -158138544, -226404368, 104097120, 20326470, 55109800, 294330880, 224537136, +125950456, 240619104, 176296064, 20933134, 50495392, 40572944, -130976104, -113184200, -61652108, -193517808, +-186158912, -77745352, -101275328, -137444320, -64509336, -56203944, -140421264, -118189448, -20431160, -71780712, +-115947472, -46265388, 21941378, -86136640, 11537893, 102900976, -19838990, -26097832, 142307296, 112828792, +-16371342, 169779520, 196864656, 75127568, 184477440, 264907136, 152902976, 133325448, 318408480, 254056448, +187261648, 226001712, 300491488, 103623064, 34864396, 123229592, -110948672, -299609408, -220846688, -329764896, +-533160608, -474892928, -505987936, -583672128, -597064320, -511007168, -447137248, -443189088, -312575904, -131227360, +-87682296, 1000191, 168455056, 310556736, 328255776, 392185824, 330019392, 215854848, 0, 0, +0, 0, 0, }, }, { { -132070, --67109, 317828, -6643241, 1188632, -184147, 210990, -4071092, 1222455, -7295002, -3908957, -1842004, -1560684, 2344515, 3863860, -2347737, 2735894, -3688303, -402116, 3347927, -998580, -2068564, -5641440, 687732, -12885, 1688459, -1324997, 1964948, -2812130, -1526861, 1977296, --4854387, 1438277, 1396401, -1577864, -2652679, 7001334, -1620276, 1882269, -2807298, -977105, -943819, -5814312, -3759707, -3112241, -2216203, -2803003, -2863670, -52613, 143881, -2734284, -956704, 194884, 2765959, -2286533, -1091459, -261993, 1220308, -1404454, -3934190, 4258997, -3278671, 1841467, -1231045, 1731409, 383326, 2673617, -3260954, -6189048, -5268315, 694711, --3234110, 2296197, 5021354, 1111323, 3317325, -8733816, 4890894, -6681896, 613643, -2925947, --1042066, 2370285, -4221416, -7497939, -2062121, 462783, -4395899, -2580202, 3366718, -2263448, -1452236, -9335648, -986232, 6070400, 3110093, -10420128, -3743601, -2835215, -2937758, 3336116, --1709934, -5485210, -3576097, -3955128, -4111894, 6649683, 1898912, 4242891, -3048890, 5615133, -4983773, 3600793, -2289755, -4969277, -4051765, 302258, 735513, 7698729, 2525978, 1392106, --3913789, 761283, 91805, 811749, 2840584, 1755568, -5546414, -4568772, -2583423, 2786897, -400506, -1053341, -5927055, -1779190, 1945083, 2519535, -2565169, -900333, -164283, 2681670, --886911, -3023657, -311922, 401579, -4194036, 8180302, 156229, -5648419, -415538, -1014149, --5553930, -5021891, 5897527, 5401995, -4195646, 3282429, 431644, 1726040, -14009110, 5534602, --1978906, -9579388, -12451647, 401579, 9225053, 607201, 6032819, 272194, -11233487, -3877819, -1459215, 4021700, -1850057, -935766, -4630512, 667331, -704912, 8067023, 4257923, 1730335, -1619740, 2200097, 2975339, 7340099, 4632659, -6473053, -353261, 1502702, 1770600, -7713225, -2716567, -2308008, -4655208, -1403917, 18790, 5236639, 1588064, -2986613, 5578089, 8267812, --1512902, -3216394, 2270427, -667331, 4816806, 4553739, 3909494, -5659157, -3944928, 3876745, --1382980, -1527935, -3952444, 308164, -6008659, 3591130, 3744138, 4246649, 1510755, 4918275, --5229660, -3879429, 7710540, -106300, 3178276, 7823820, 7046968, 498753, 2638184, -6185290, --5288716, 2813204, -1577864, -2339684, -2968359, -2752000, 2022930, -7121593, -4179540, -8763344, --10558640, -2034741, 8474507, 5468030, -3671123, -1078037, -1384590, -2114198, -7671349, 5293547, --2071785, -2015413, 274341, 3434363, -1890859, 227633, -469762, 5021891, -4934381, 5041755, -2569464, 6064494, -2324651, 4679904, 1870995, -2999498, 4031901, -2961917, 2206540, 4496294, --3700651, 4730370, -3131568, -2345589, -1013075, -1450625, 2101850, -1422171, -3952981, 1436667, --3490735, 674847, 74625, 481573, 6828461, 1398012, -2057826, 47245, -3384434, -4107063, -1665911, -968515, 6372121, 7047505, 2287070, -1904818, -1706176, -2147, -3476239, -3151969, -2698313, 5574868, 13794361, -5727339, 5705864, -6919729, -5794448, 97711, -1541893, -1421097, -2005750, -2877628, 6030134, 5848135, 5061619, -1429150, -538482, -2525978, -6216965, 1044751, --3684008, -650151, 818728, -2068564, 3737159, 1414655, -296353, -10400800, -4218732, -6538014, -397821, -4262218, -6465537, -2857764, -3494493, -4003983, 6768332, -5224291, 4831302, 447213, --1677722, 2647311, 2440615, -4678830, -1079111, 142271, 5319854, -439697, -6721624, -8786966, --8939974, 2439542, -3087545, 250719, -439697, 1380295, 3417183, 5162551, -3199214, -1815697, -2039573, 1814624, 1041530, 6469295, -3164317, 4025995, -6899328, 14497125, 2290291, -1468879, -3389266, 1450088, 3434363, -3947612, 104690, 1142998, 599148, -882616, -5621039, -6550362, -1132798, 1404991, 601295, -898185, -3862249, 2552821, 2065879, -5897527, 7269232, -8712878, -11099806, -909996, 3801046, 1779190, -80531, -1015223, 2393908, 10428717, 11651173, -2043331, -2207613, -1225139, -1503775, 1688459, 2572149, 8056285, -878321, 2552284, -3875671, 4487704, -1076426, 6382322, 3125663, 5986648, -8301098, 3699578, 3164854, -2494302, 7516, 6479495, -116501, 642635, 2007897, 3994320, -1232119, -408559, 12276090, 5944772, 1138703, 1240709, --2505577, 5666136, -7343857, -10698764, -13067438, -700617, 6890202, -117575, 3423089, 9387188, -3651259, -1582696, -3320547, 5007395, -1034550, 11987791, 5279589, 1764695, 1541893, -6584722, -1220308, 4810364, -2719788, -7599945, 1056562, 1917703, -15349139, 2314451, -609885, 11551315, --7598871, 5418638, -16301012, 7270306, -1010391, -7978439, -8876624, -5979668, 5619965, 4583267, -13393319, 2352568, 4842039, 12929999, -1562831, -8259222, 1908576, -6201933, 2248416, 10691247, -2426120, -2108292, -626528, -1207423, 3505767, 4593468, -260919, 3320547, 5719286, -2474975, -2197413, -5293547, 97174, -6801081, -619012, 1818919, -3019899, 6389301, 4390531, 5581310, -10071698, 1445793, 12072616, 9654550, 4845260, -5092758, 13775034, 6576132, 2925410, 12480638, --642635, 1222455, 1602023, 4830228, -1748589, -2335389, -7227893, -6575058, -5532992, 1203665, --4174708, 11329587, -5298379, 5467494, 7206955, -2175938, 1312113, -1394254, -549219, -8244727, --9960029, 7266548, 146566, 13385266, 551366, 188979, -1183800, -2589329, 2458332, 568546, --6743099, -8723079, -11752641, -6199786, -12290049, -7876433, -4116726, -9170829, -5682242, -4021700, --4638565, -12402792, 8630200, 5297842, 463320, 4450123, 2219424, -3469260, 15552077, 912681, --5120138, -2825015, -10213432, -4518843, 11675869, 520765, -9363029, -9639517, 1663763, -9754408, -3400004, 3378529, -7266011, 273267, 2696166, 517007, 11623792, 3362423, -4764730, 1134945, --5759551, 5697274, 1251446, 2542084, -13304735, 9543954, -4223027, 4022237, 872952, 1932198, -2861522, 476205, -3363496, -156766, -4673462, 221191, -10089415, 212064, -10865730, 15803869, --1675574, 10288057, -6152541, -2779918, -304943, -6651831, -2654827, 7176891, 1811939, 1619203, --6932077, -122407, 4966056, -13259101, -66572, -5802501, -4604205, 9187472, -15214922, -14471355, -3703336, 18958522, 467615, 1653026, 1457068, -3090229, 10460930, 9969693, 5876052, 2676838, --2740189, -15754477, 9232569, -157840, -12411919, -4268124, 2928631, -898722, 155693, 984084, --2936684, -12562779, -621160, 172872, -2161979, -5470178, 3765076, 10255845, -13616657, 8133058, --5035313, -3008625, 930397, 6314676, 22407918, -14898705, -3497714, 891206, -1284195, -3200288, -891206, -6131066, 2087891, -5644124, 15496779, 4558034, 3058017, 3454764, -3038153, -1730872, -8322573, -2207076, 3751654, -7778186, 12002823, -638340, -8066486, 15129559, -10202158, 6047851, -2461553, 1924145, 12298639, -7011534, 5471252, -3636764, 248034, 16313896, 1293322, 4261682, -4859756, -2720325, -9353902, -7352984, 1161252, 16304770, 9281424, 2004676, -14535243, 2095944, --7968238, 39192, 16369731, 15677168, 7988103, 10590316, -9497783, -19832548, -10298258, -14301704, -8003672, -164819, -2321430, -80531, -10706280, -3237869, 3453691, -2062658, -3986804, -4029753, -11689827, -784368, 3287261, -3325915, 7733089, 1563368, -4204773, -9238475, -6878927, 20874614, --702764, -4784057, 6900939, -12013560, 3984656, -6904160, -20635170, -4752382, -2439005, 6252936, -2727841, 5478768, 2098629, 8184060, 677531, 484258, 4982162, -20517596, -2776160, -5595269, --957241, 1859721, 12286291, 12814572, 5302674, -3547643, -8210367, -11913702, -3108483, -7103339, -2445447, -3620658, -2542084, -7740068, -23117124, -14952392, -3076270, -5145371, 12565464, 8753680, --1464047, 21232170, -20467130, -4436165, -7388955, 22636088, 11185705, -6842420, 8732205, 3555159, --8068096, 15759309, -16318728, 8800388, -7190312, 1752884, 2447595, -5211943, 15413564, -9972914, -9720585, -3908957, -21112448, -3192771, 15876347, -8789651, -14169634, 615791, -1140314, -21826486, --3422015, 9330280, 4544613, 12264279, 9509058, -2109366, 22206592, -4718022, -5736466, -10121627, --8908299, -9078487, 6797323, 8380018, -5914707, -7377143, 3583613, -6350646, 10045929, -2087891, -6010807, -3264712, -4342749, -3897146, 1183264, -12222403, 4819490, 9432285, -584116, 4268124, -7151121, 6769942, 13521094, -8017094, 5916855, 9319005, 1416266, -19118510, 18173618, -9428527, --25674240, 1376537, 20451024, 25772488, 5835250, -7765838, -5523865, 3796751, -3115999, -2585034, -12033425, 12220793, -4087198, 11848741, -12090333, -316754, 10924249, -3373160, 12965969, 6842420, --322123, -14701673, 7454453, -2378875, -2497524, 2223719, 134218, -290447, 23390392, -9392557, -12615930, 20357608, 14485314, 8391292, 1651415, -10956462, 13917842, -5428839, 13354127, -5114233, -4233227, -11484743, -1010391, -10718628, -6592775, 3613141, -9950365, -1405528, -2383707, 1378148, -11972221, -10183904, -8665097, -1792075, -4163434, -351650, -8429410, -11123428, -14710800, 4037269, -15047418, 1611687, -6006512, 4092567, 5141613, 13243532, -8748312, -3211025, -781684, 3425773, -10911901, 4522064, 5937256, -2174864, 2213519, 13330505, -45433776, -21731460, 14798310, -37137508, --25844428, -1897839, -15331960, -10562398, 10965588, 12632573, 3646964, -2600603, 4358318, 36603320, --4826470, 5666136, 13861470, 15937550, -17125108, -8937290, -8290361, 13382044, 14502494, 7242389, -2381023, 13688598, -4445828, -7180649, 9394704, 18602040, 962073, 5866389, 18750754, 13901735, -11115375, -8808441, 3220152, 5575942, -451508, -542240, 11859478, -4261682, -627602, -1485522, -7760469, 54224, -13888314, -9258339, 2233383, -18525268, 13351980, -4353486, 30061012, 892816, -16266115, 2970507, -1217623, -10232760, -959925, 3489661, -13396540, -7122667, -15556908, -2441689, -7269232, 9903121, -4995584, -25255482, 8552354, -4726612, 8154533, -9784472, -10512469, 6522445, --15413027, -13569412, 25604984, 18931142, -7735236, -20578798, 9709310, -10455561, 5259725, 330712, --9920301, 20114942, -25444460, -460098, -30840550, 1388348, 26094074, 36219996, 17500918, -5483600, -17128330, -613643, -1598265, 2413235, -2092186, 9404905, -368830, -15998753, 1706176, -22479858, -8900783, -6481106, -4393215, 16222628, 476741, -17090748, -19086298, 5342403, 3593277, -9171366, --7388418, 15673409, -20667382, 672699, -3406983, 8428336, -4802847, -3838090, -16224239, -6464463, --6529961, -2314451, 13593035, -13813689, 6533182, -810138, -1258425, 2976949, 6758131, -23889144, --1154273, 4549444, -572841, 10481868, -6080600, -9714142, -3051574, -26524644, -10107132, -10624138, -3123515, 13666049, 20933134, -6553047, 17160004, -21048024, 41865192, 5370320, -460098, 24080272, --7657927, 22936736, 1318018, -16354699, -344671, -2465848, 10655814, 7017977, -9958955, 11541651, -241592, -25756918, -28020366, -2681133, -8413304, 7004555, -1163399, -9905268, -25241522, -22058416, -12080669, -18771154, -4158602, 1184337, 5998459, 1397475, 18092012, 1503239, -9047885, 12068321, --1532230, 1751273, 11232950, -14716705, -879395, 3162170, -14906758, 9065065, 12561706, 5396627, -11196980, 5747203, 17291538, 4634270, 12629888, -17632988, -5348308, -2881386, -23432268, -220117, --2388539, 9759776, -1402844, 11181947, -1694365, -13847511, -9109626, -899259, -21582748, 9330816, -852014, -4520990, 13026636, 7731478, 10892574, 10562398, 3688303, -1864553, 9599789, -30275224, -9337259, 2793339, 13604309, -6525129, -20588462, 11162083, -3233574, 18130130, -29671782, 15650861, -14513231, 53097608, 40128416, 5420249, 11637214, 3349001, 30836254, 823023, 15014132, -14035953, -36524940, -14502494, 33125472, -1532767, 21164526, -2513630, 14940044, -14907831, 3588445, 7390565, --8130373, -2738579, -4364224, -3513283, 9886478, 140660, -8517994, -11849815, -17718350, -22659174, --10836202, -3929895, 136365, 6943352, -18992882, 7882876, -10457708, -16306380, -3364033, -11985643, -5365488, -3100967, -24729348, -6135361, -12589086, -15175730, -15668041, 13881871, 18932216, -40033928, -8953396, 3126736, 11086384, 3483755, -5072357, 23498840, 13421236, 11986180, -33305860, -15517717, --558346, 7428683, 27343372, 143881, -3903589, 279173, 23054310, 19643032, -20134806, 20778514, -1238561, 2878165, -4403415, 9927817, -29248190, -16459925, 12683038, -7663833, 10803990, 17869212, --24232206, 5043902, -14666240, 35345432, -23962696, 19148038, 17469780, -9271224, -36713916, -22137872, --4230006, -11150809, -2978023, -17847200, -27291832, -35618164, -21283710, -24357296, 7720204, -21115132, -6017786, 361851, -4197257, -3916473, -17813376, -6830072, -18257906, 2814814, 12487617, 17044040, --1695975, -7322383, -18732500, -5977521, -414464, -11940009, 738734, -15727096, -11027329, -4037806, --15714748, 8632347, -14151917, -37569152, -869194, -3300682, -13908178, 12830678, 9579388, 14867029, -4318053, 11117523, 25055766, 2089502, -29606284, -8856759, 10391673, -8786966, -25129316, 9655623, -15378667, 2791729, -2791192, -34230352, 24568824, -5405753, 19373524, -23371064, 19414862, 49353468, --8498130, -10142028, -43192340, 15142981, -56737056, 38054484, 13967771, -9494562, 40711460, -3631932, --19969988, 35874788, -13186623, -1788317, 8128763, 12593918, 33600068, 1415192, -2033130, 23314156, -10568304, 19537806, 24654722, 17692580, 2388539, 12299176, 2742874, -1410360, -12297028, 8174934, -13404056, 2765959, 120259, -14478872, 7698729, -13645648, 16893180, 15295452, 3706020, 18085570, --10460930, 11692512, 20322174, 11641509, -24977382, -28732258, 33972656, -4022774, 21685826, 31003222, -1902671, -1000191, -2150705, 5135171, 19651086, 16260209, 3057480, 13154948, 1260036, -18173618, --19463182, -32454384, 1833951, -14413910, 1749662, 15231565, 17623324, -31200254, 3786551, 8329016, --23897198, 916439, 36330592, -19089520, -16325708, 14028974, -19340774, -1767379, -6295885, 3587908, --20526186, 3860102, -23678154, 46930032, 11120744, -26003342, 9130564, -6526740, -23116050, -27274116, --27530204, 7340636, -1823751, 23172422, 34884260, 16309065, 8098161, -4986457, 11284490, 405874, --44956496, 18788334, 45786500, -31012886, -32245004, -28239946, -39309152, 27345520, -38707320, 16441672, --173409, -5594732, -667867, -13255343, -15224585, 18165564, -39795556, 39638252, 22813792, 4515085, --26329224, -20451024, -17585744, 2746095, 6329171, -17655000, -2767033, -13277355, 27415850, 11730629, --5517423, -1753957, 10953240, 1664837, 12539694, -23703388, -9619653, -3081102, -4687957, -22083648, --15645492, 11749957, -41147936, -24591908, 2126546, 46432356, 21641266, -14954002, -2302103, -36203352, -15784542, 54769424, -192737, -10688026, -11108933, -21068962, -903554, -23097260, -16187732, -45213656, -8735427, -33585572, -49640696, 10440529, 26043072, 5611375, 6351183, -21654688, -26662620, -7744900, --39068096, -19834696, 9154186, -33048162, 49580564, 8741332, -13172128, 9758166, -24918864, -48814988, --16758962, -37596532, 5068599, 9569187, -14095009, -27065274, -13846975, -17123498, 13350906, -20154134, --7576859, -3579318, 20967494, -16703128, -3417183, -8397198, 4976257, 7915625, 1141924, -7536594, -21786758, 28018756, 18183818, -15957414, -12586402, -43831216, -24148454, -10792179, 11053098, 70928704, --12512850, -78383, 31844498, -3766686, 13533442, -17134236, -17051558, -14437533, 15247134, -41115720, -461172, -5702643, -250182, 35093104, -15039365, 53563612, 5289789, 41341744, -50523848, -13259101, -16151761, 3177202, -19063212, -3236795, -44744968, 20428476, 31712964, -24036248, -19988240, -7132867, --21917218, -26053272, 6071473, 7062000, 19061602, 401043, 16523813, 30400316, 31343598, 20928838, -6504728, -24027658, 1392643, 11870216, 15316390, 24640764, -747324, -13335337, -19904490, -7488276, -24282672, -10773389, 8833137, 21705154, 969052, 42994232, 3737695, -27999966, 22590992, 23272818, -5434208, 9844065, 20467666, 3162707, 350577, -25730612, 53264572, -58814744, -44633836, -50235012, --18248242, 9938554, -31141734, 14658723, 30786862, -10128607, 1178432, 28382218, 7074885, -31751620, --13115220, -24734180, -5873905, 1196685, -971200, 27216670, 24676734, -7050726, -9871445, 16684337, -39027296, 6403260, 31242666, -30294552, 27001386, -14551886, 5833640, -6892886, -24943560, -12400107, --24815784, -50064824, -50411640, -36417028, 7634841, 94085552, 23852100, -12761422, -28281822, -67652712, --95346128, 21769042, 39628052, 47690244, -9896678, 4363150, -27904940, -48425756, 14117558, 9125732, -15917686, 2593624, -40766756, -12152610, 10042170, -7864622, -1549946, -7357279, 53265648, 47115792, -31561568, -2463701, -22784264, -38340636, -25622702, -22733262, 36397164, -5512591, 26647050, 12572980, -12507482, -15767362, -88356608, -60245508, 30112016, -47227996, -16289737, 102720048, 70194800, 53469660, --39887360, 29692720, -27605366, 2915209, 2092723, 15765214, 43337292, 77292232, -29123636, -1595580, --50206556, -39405252, -66468912, 8545911, -2676302, -70208216, -17100950, 47716548, 17294222, 33906084, -43679280, 80481248, -57353920, -32587528, 4408784, -45462764, 18736258, -42266236, -129439576, -120819040, --71211632, -77146736, -22548042, 115772992, 56724708, 119227216, 105480640, 167622912, 118631832, 101180840, -12719009, -50583440, -108174120, -171073920, -145617648, -147006528, -78655880, -40407052, -12624519, -3526168, --113817, 24652576, 35100084, 94291176, 56014964, 112112608, 72047000, 95407328, 32202592, 92010008, -29635274, 18871012, 18968186, -10587631, -31060130, -70377872, -79441864, -145251504, -99919192, -182777168, --144417200, -220810176, -131583840, -106485664, -27976880, 54411868, 28213104, 395674, 56031068, 121660856, -166094976, 216791152, 261487280, 221213904, 162636448, 201089824, 167722224, 90364504, 40964860, -15470472, --72275712, -168841600, -195497792, -265582528, -336538080, -394280160, -350017280, -314129600, -216494272, -153952560, -55143084, 144438672, 201697040, 252096320, 160200128, 106504992, 0, 0, 0, 0, -0, 0, 0, }, +-67109, 317828, -6643241, 1188632, -184147, 210990, -4071092, 1222455, -7295002, -3908957, +1842004, -1560684, 2344515, 3863860, -2347737, 2735894, -3688303, -402116, 3347927, -998580, +2068564, -5641440, 687732, -12885, 1688459, -1324997, 1964948, -2812130, -1526861, 1977296, +-4854387, 1438277, 1396401, -1577864, -2652679, 7001334, -1620276, 1882269, -2807298, -977105, +943819, -5814312, -3759707, -3112241, -2216203, -2803003, -2863670, -52613, 143881, -2734284, +956704, 194884, 2765959, -2286533, -1091459, -261993, 1220308, -1404454, -3934190, 4258997, +3278671, 1841467, -1231045, 1731409, 383326, 2673617, -3260954, -6189048, -5268315, 694711, +-3234110, 2296197, 5021354, 1111323, 3317325, -8733816, 4890894, -6681896, 613643, -2925947, +-1042066, 2370285, -4221416, -7497939, -2062121, 462783, -4395899, -2580202, 3366718, -2263448, +1452236, -9335648, -986232, 6070400, 3110093, -10420128, -3743601, -2835215, -2937758, 3336116, +-1709934, -5485210, -3576097, -3955128, -4111894, 6649683, 1898912, 4242891, -3048890, 5615133, +4983773, 3600793, -2289755, -4969277, -4051765, 302258, 735513, 7698729, 2525978, 1392106, +-3913789, 761283, 91805, 811749, 2840584, 1755568, -5546414, -4568772, -2583423, 2786897, +400506, -1053341, -5927055, -1779190, 1945083, 2519535, -2565169, -900333, -164283, 2681670, +-886911, -3023657, -311922, 401579, -4194036, 8180302, 156229, -5648419, -415538, -1014149, +-5553930, -5021891, 5897527, 5401995, -4195646, 3282429, 431644, 1726040, -14009110, 5534602, +-1978906, -9579388, -12451647, 401579, 9225053, 607201, 6032819, 272194, -11233487, -3877819, +1459215, 4021700, -1850057, -935766, -4630512, 667331, -704912, 8067023, 4257923, 1730335, +1619740, 2200097, 2975339, 7340099, 4632659, -6473053, -353261, 1502702, 1770600, -7713225, +2716567, -2308008, -4655208, -1403917, 18790, 5236639, 1588064, -2986613, 5578089, 8267812, +-1512902, -3216394, 2270427, -667331, 4816806, 4553739, 3909494, -5659157, -3944928, 3876745, +-1382980, -1527935, -3952444, 308164, -6008659, 3591130, 3744138, 4246649, 1510755, 4918275, +-5229660, -3879429, 7710540, -106300, 3178276, 7823820, 7046968, 498753, 2638184, -6185290, +-5288716, 2813204, -1577864, -2339684, -2968359, -2752000, 2022930, -7121593, -4179540, -8763344, +-10558640, -2034741, 8474507, 5468030, -3671123, -1078037, -1384590, -2114198, -7671349, 5293547, +-2071785, -2015413, 274341, 3434363, -1890859, 227633, -469762, 5021891, -4934381, 5041755, +2569464, 6064494, -2324651, 4679904, 1870995, -2999498, 4031901, -2961917, 2206540, 4496294, +-3700651, 4730370, -3131568, -2345589, -1013075, -1450625, 2101850, -1422171, -3952981, 1436667, +-3490735, 674847, 74625, 481573, 6828461, 1398012, -2057826, 47245, -3384434, -4107063, +1665911, -968515, 6372121, 7047505, 2287070, -1904818, -1706176, -2147, -3476239, -3151969, +2698313, 5574868, 13794361, -5727339, 5705864, -6919729, -5794448, 97711, -1541893, -1421097, +2005750, -2877628, 6030134, 5848135, 5061619, -1429150, -538482, -2525978, -6216965, 1044751, +-3684008, -650151, 818728, -2068564, 3737159, 1414655, -296353, -10400800, -4218732, -6538014, +397821, -4262218, -6465537, -2857764, -3494493, -4003983, 6768332, -5224291, 4831302, 447213, +-1677722, 2647311, 2440615, -4678830, -1079111, 142271, 5319854, -439697, -6721624, -8786966, +-8939974, 2439542, -3087545, 250719, -439697, 1380295, 3417183, 5162551, -3199214, -1815697, +2039573, 1814624, 1041530, 6469295, -3164317, 4025995, -6899328, 14497125, 2290291, -1468879, +3389266, 1450088, 3434363, -3947612, 104690, 1142998, 599148, -882616, -5621039, -6550362, +1132798, 1404991, 601295, -898185, -3862249, 2552821, 2065879, -5897527, 7269232, -8712878, +11099806, -909996, 3801046, 1779190, -80531, -1015223, 2393908, 10428717, 11651173, -2043331, +2207613, -1225139, -1503775, 1688459, 2572149, 8056285, -878321, 2552284, -3875671, 4487704, +1076426, 6382322, 3125663, 5986648, -8301098, 3699578, 3164854, -2494302, 7516, 6479495, +116501, 642635, 2007897, 3994320, -1232119, -408559, 12276090, 5944772, 1138703, 1240709, +-2505577, 5666136, -7343857, -10698764, -13067438, -700617, 6890202, -117575, 3423089, 9387188, +3651259, -1582696, -3320547, 5007395, -1034550, 11987791, 5279589, 1764695, 1541893, -6584722, +1220308, 4810364, -2719788, -7599945, 1056562, 1917703, -15349139, 2314451, -609885, 11551315, +-7598871, 5418638, -16301012, 7270306, -1010391, -7978439, -8876624, -5979668, 5619965, 4583267, +13393319, 2352568, 4842039, 12929999, -1562831, -8259222, 1908576, -6201933, 2248416, 10691247, +2426120, -2108292, -626528, -1207423, 3505767, 4593468, -260919, 3320547, 5719286, -2474975, +2197413, -5293547, 97174, -6801081, -619012, 1818919, -3019899, 6389301, 4390531, 5581310, +10071698, 1445793, 12072616, 9654550, 4845260, -5092758, 13775034, 6576132, 2925410, 12480638, +-642635, 1222455, 1602023, 4830228, -1748589, -2335389, -7227893, -6575058, -5532992, 1203665, +-4174708, 11329587, -5298379, 5467494, 7206955, -2175938, 1312113, -1394254, -549219, -8244727, +-9960029, 7266548, 146566, 13385266, 551366, 188979, -1183800, -2589329, 2458332, 568546, +-6743099, -8723079, -11752641, -6199786, -12290049, -7876433, -4116726, -9170829, -5682242, -4021700, +-4638565, -12402792, 8630200, 5297842, 463320, 4450123, 2219424, -3469260, 15552077, 912681, +-5120138, -2825015, -10213432, -4518843, 11675869, 520765, -9363029, -9639517, 1663763, -9754408, +3400004, 3378529, -7266011, 273267, 2696166, 517007, 11623792, 3362423, -4764730, 1134945, +-5759551, 5697274, 1251446, 2542084, -13304735, 9543954, -4223027, 4022237, 872952, 1932198, +2861522, 476205, -3363496, -156766, -4673462, 221191, -10089415, 212064, -10865730, 15803869, +-1675574, 10288057, -6152541, -2779918, -304943, -6651831, -2654827, 7176891, 1811939, 1619203, +-6932077, -122407, 4966056, -13259101, -66572, -5802501, -4604205, 9187472, -15214922, -14471355, +3703336, 18958522, 467615, 1653026, 1457068, -3090229, 10460930, 9969693, 5876052, 2676838, +-2740189, -15754477, 9232569, -157840, -12411919, -4268124, 2928631, -898722, 155693, 984084, +-2936684, -12562779, -621160, 172872, -2161979, -5470178, 3765076, 10255845, -13616657, 8133058, +-5035313, -3008625, 930397, 6314676, 22407918, -14898705, -3497714, 891206, -1284195, -3200288, +891206, -6131066, 2087891, -5644124, 15496779, 4558034, 3058017, 3454764, -3038153, -1730872, +8322573, -2207076, 3751654, -7778186, 12002823, -638340, -8066486, 15129559, -10202158, 6047851, +2461553, 1924145, 12298639, -7011534, 5471252, -3636764, 248034, 16313896, 1293322, 4261682, +4859756, -2720325, -9353902, -7352984, 1161252, 16304770, 9281424, 2004676, -14535243, 2095944, +-7968238, 39192, 16369731, 15677168, 7988103, 10590316, -9497783, -19832548, -10298258, -14301704, +8003672, -164819, -2321430, -80531, -10706280, -3237869, 3453691, -2062658, -3986804, -4029753, +11689827, -784368, 3287261, -3325915, 7733089, 1563368, -4204773, -9238475, -6878927, 20874614, +-702764, -4784057, 6900939, -12013560, 3984656, -6904160, -20635170, -4752382, -2439005, 6252936, +2727841, 5478768, 2098629, 8184060, 677531, 484258, 4982162, -20517596, -2776160, -5595269, +-957241, 1859721, 12286291, 12814572, 5302674, -3547643, -8210367, -11913702, -3108483, -7103339, +2445447, -3620658, -2542084, -7740068, -23117124, -14952392, -3076270, -5145371, 12565464, 8753680, +-1464047, 21232170, -20467130, -4436165, -7388955, 22636088, 11185705, -6842420, 8732205, 3555159, +-8068096, 15759309, -16318728, 8800388, -7190312, 1752884, 2447595, -5211943, 15413564, -9972914, +9720585, -3908957, -21112448, -3192771, 15876347, -8789651, -14169634, 615791, -1140314, -21826486, +-3422015, 9330280, 4544613, 12264279, 9509058, -2109366, 22206592, -4718022, -5736466, -10121627, +-8908299, -9078487, 6797323, 8380018, -5914707, -7377143, 3583613, -6350646, 10045929, -2087891, +6010807, -3264712, -4342749, -3897146, 1183264, -12222403, 4819490, 9432285, -584116, 4268124, +7151121, 6769942, 13521094, -8017094, 5916855, 9319005, 1416266, -19118510, 18173618, -9428527, +-25674240, 1376537, 20451024, 25772488, 5835250, -7765838, -5523865, 3796751, -3115999, -2585034, +12033425, 12220793, -4087198, 11848741, -12090333, -316754, 10924249, -3373160, 12965969, 6842420, +-322123, -14701673, 7454453, -2378875, -2497524, 2223719, 134218, -290447, 23390392, -9392557, +12615930, 20357608, 14485314, 8391292, 1651415, -10956462, 13917842, -5428839, 13354127, -5114233, +4233227, -11484743, -1010391, -10718628, -6592775, 3613141, -9950365, -1405528, -2383707, 1378148, +11972221, -10183904, -8665097, -1792075, -4163434, -351650, -8429410, -11123428, -14710800, 4037269, +15047418, 1611687, -6006512, 4092567, 5141613, 13243532, -8748312, -3211025, -781684, 3425773, +10911901, 4522064, 5937256, -2174864, 2213519, 13330505, -45433776, -21731460, 14798310, -37137508, +-25844428, -1897839, -15331960, -10562398, 10965588, 12632573, 3646964, -2600603, 4358318, 36603320, +-4826470, 5666136, 13861470, 15937550, -17125108, -8937290, -8290361, 13382044, 14502494, 7242389, +2381023, 13688598, -4445828, -7180649, 9394704, 18602040, 962073, 5866389, 18750754, 13901735, +11115375, -8808441, 3220152, 5575942, -451508, -542240, 11859478, -4261682, -627602, -1485522, +7760469, 54224, -13888314, -9258339, 2233383, -18525268, 13351980, -4353486, 30061012, 892816, +16266115, 2970507, -1217623, -10232760, -959925, 3489661, -13396540, -7122667, -15556908, -2441689, +7269232, 9903121, -4995584, -25255482, 8552354, -4726612, 8154533, -9784472, -10512469, 6522445, +-15413027, -13569412, 25604984, 18931142, -7735236, -20578798, 9709310, -10455561, 5259725, 330712, +-9920301, 20114942, -25444460, -460098, -30840550, 1388348, 26094074, 36219996, 17500918, -5483600, +17128330, -613643, -1598265, 2413235, -2092186, 9404905, -368830, -15998753, 1706176, -22479858, +8900783, -6481106, -4393215, 16222628, 476741, -17090748, -19086298, 5342403, 3593277, -9171366, +-7388418, 15673409, -20667382, 672699, -3406983, 8428336, -4802847, -3838090, -16224239, -6464463, +-6529961, -2314451, 13593035, -13813689, 6533182, -810138, -1258425, 2976949, 6758131, -23889144, +-1154273, 4549444, -572841, 10481868, -6080600, -9714142, -3051574, -26524644, -10107132, -10624138, +3123515, 13666049, 20933134, -6553047, 17160004, -21048024, 41865192, 5370320, -460098, 24080272, +-7657927, 22936736, 1318018, -16354699, -344671, -2465848, 10655814, 7017977, -9958955, 11541651, +241592, -25756918, -28020366, -2681133, -8413304, 7004555, -1163399, -9905268, -25241522, -22058416, +12080669, -18771154, -4158602, 1184337, 5998459, 1397475, 18092012, 1503239, -9047885, 12068321, +-1532230, 1751273, 11232950, -14716705, -879395, 3162170, -14906758, 9065065, 12561706, 5396627, +11196980, 5747203, 17291538, 4634270, 12629888, -17632988, -5348308, -2881386, -23432268, -220117, +-2388539, 9759776, -1402844, 11181947, -1694365, -13847511, -9109626, -899259, -21582748, 9330816, +852014, -4520990, 13026636, 7731478, 10892574, 10562398, 3688303, -1864553, 9599789, -30275224, +9337259, 2793339, 13604309, -6525129, -20588462, 11162083, -3233574, 18130130, -29671782, 15650861, +14513231, 53097608, 40128416, 5420249, 11637214, 3349001, 30836254, 823023, 15014132, -14035953, +36524940, -14502494, 33125472, -1532767, 21164526, -2513630, 14940044, -14907831, 3588445, 7390565, +-8130373, -2738579, -4364224, -3513283, 9886478, 140660, -8517994, -11849815, -17718350, -22659174, +-10836202, -3929895, 136365, 6943352, -18992882, 7882876, -10457708, -16306380, -3364033, -11985643, +5365488, -3100967, -24729348, -6135361, -12589086, -15175730, -15668041, 13881871, 18932216, -40033928, +8953396, 3126736, 11086384, 3483755, -5072357, 23498840, 13421236, 11986180, -33305860, -15517717, +-558346, 7428683, 27343372, 143881, -3903589, 279173, 23054310, 19643032, -20134806, 20778514, +1238561, 2878165, -4403415, 9927817, -29248190, -16459925, 12683038, -7663833, 10803990, 17869212, +-24232206, 5043902, -14666240, 35345432, -23962696, 19148038, 17469780, -9271224, -36713916, -22137872, +-4230006, -11150809, -2978023, -17847200, -27291832, -35618164, -21283710, -24357296, 7720204, -21115132, +6017786, 361851, -4197257, -3916473, -17813376, -6830072, -18257906, 2814814, 12487617, 17044040, +-1695975, -7322383, -18732500, -5977521, -414464, -11940009, 738734, -15727096, -11027329, -4037806, +-15714748, 8632347, -14151917, -37569152, -869194, -3300682, -13908178, 12830678, 9579388, 14867029, +4318053, 11117523, 25055766, 2089502, -29606284, -8856759, 10391673, -8786966, -25129316, 9655623, +15378667, 2791729, -2791192, -34230352, 24568824, -5405753, 19373524, -23371064, 19414862, 49353468, +-8498130, -10142028, -43192340, 15142981, -56737056, 38054484, 13967771, -9494562, 40711460, -3631932, +-19969988, 35874788, -13186623, -1788317, 8128763, 12593918, 33600068, 1415192, -2033130, 23314156, +10568304, 19537806, 24654722, 17692580, 2388539, 12299176, 2742874, -1410360, -12297028, 8174934, +13404056, 2765959, 120259, -14478872, 7698729, -13645648, 16893180, 15295452, 3706020, 18085570, +-10460930, 11692512, 20322174, 11641509, -24977382, -28732258, 33972656, -4022774, 21685826, 31003222, +1902671, -1000191, -2150705, 5135171, 19651086, 16260209, 3057480, 13154948, 1260036, -18173618, +-19463182, -32454384, 1833951, -14413910, 1749662, 15231565, 17623324, -31200254, 3786551, 8329016, +-23897198, 916439, 36330592, -19089520, -16325708, 14028974, -19340774, -1767379, -6295885, 3587908, +-20526186, 3860102, -23678154, 46930032, 11120744, -26003342, 9130564, -6526740, -23116050, -27274116, +-27530204, 7340636, -1823751, 23172422, 34884260, 16309065, 8098161, -4986457, 11284490, 405874, +-44956496, 18788334, 45786500, -31012886, -32245004, -28239946, -39309152, 27345520, -38707320, 16441672, +-173409, -5594732, -667867, -13255343, -15224585, 18165564, -39795556, 39638252, 22813792, 4515085, +-26329224, -20451024, -17585744, 2746095, 6329171, -17655000, -2767033, -13277355, 27415850, 11730629, +-5517423, -1753957, 10953240, 1664837, 12539694, -23703388, -9619653, -3081102, -4687957, -22083648, +-15645492, 11749957, -41147936, -24591908, 2126546, 46432356, 21641266, -14954002, -2302103, -36203352, +15784542, 54769424, -192737, -10688026, -11108933, -21068962, -903554, -23097260, -16187732, -45213656, +8735427, -33585572, -49640696, 10440529, 26043072, 5611375, 6351183, -21654688, -26662620, -7744900, +-39068096, -19834696, 9154186, -33048162, 49580564, 8741332, -13172128, 9758166, -24918864, -48814988, +-16758962, -37596532, 5068599, 9569187, -14095009, -27065274, -13846975, -17123498, 13350906, -20154134, +-7576859, -3579318, 20967494, -16703128, -3417183, -8397198, 4976257, 7915625, 1141924, -7536594, +21786758, 28018756, 18183818, -15957414, -12586402, -43831216, -24148454, -10792179, 11053098, 70928704, +-12512850, -78383, 31844498, -3766686, 13533442, -17134236, -17051558, -14437533, 15247134, -41115720, +461172, -5702643, -250182, 35093104, -15039365, 53563612, 5289789, 41341744, -50523848, -13259101, +16151761, 3177202, -19063212, -3236795, -44744968, 20428476, 31712964, -24036248, -19988240, -7132867, +-21917218, -26053272, 6071473, 7062000, 19061602, 401043, 16523813, 30400316, 31343598, 20928838, +6504728, -24027658, 1392643, 11870216, 15316390, 24640764, -747324, -13335337, -19904490, -7488276, +24282672, -10773389, 8833137, 21705154, 969052, 42994232, 3737695, -27999966, 22590992, 23272818, +5434208, 9844065, 20467666, 3162707, 350577, -25730612, 53264572, -58814744, -44633836, -50235012, +-18248242, 9938554, -31141734, 14658723, 30786862, -10128607, 1178432, 28382218, 7074885, -31751620, +-13115220, -24734180, -5873905, 1196685, -971200, 27216670, 24676734, -7050726, -9871445, 16684337, +39027296, 6403260, 31242666, -30294552, 27001386, -14551886, 5833640, -6892886, -24943560, -12400107, +-24815784, -50064824, -50411640, -36417028, 7634841, 94085552, 23852100, -12761422, -28281822, -67652712, +-95346128, 21769042, 39628052, 47690244, -9896678, 4363150, -27904940, -48425756, 14117558, 9125732, +15917686, 2593624, -40766756, -12152610, 10042170, -7864622, -1549946, -7357279, 53265648, 47115792, +31561568, -2463701, -22784264, -38340636, -25622702, -22733262, 36397164, -5512591, 26647050, 12572980, +12507482, -15767362, -88356608, -60245508, 30112016, -47227996, -16289737, 102720048, 70194800, 53469660, +-39887360, 29692720, -27605366, 2915209, 2092723, 15765214, 43337292, 77292232, -29123636, -1595580, +-50206556, -39405252, -66468912, 8545911, -2676302, -70208216, -17100950, 47716548, 17294222, 33906084, +43679280, 80481248, -57353920, -32587528, 4408784, -45462764, 18736258, -42266236, -129439576, -120819040, +-71211632, -77146736, -22548042, 115772992, 56724708, 119227216, 105480640, 167622912, 118631832, 101180840, +12719009, -50583440, -108174120, -171073920, -145617648, -147006528, -78655880, -40407052, -12624519, -3526168, +-113817, 24652576, 35100084, 94291176, 56014964, 112112608, 72047000, 95407328, 32202592, 92010008, +29635274, 18871012, 18968186, -10587631, -31060130, -70377872, -79441864, -145251504, -99919192, -182777168, +-144417200, -220810176, -131583840, -106485664, -27976880, 54411868, 28213104, 395674, 56031068, 121660856, +166094976, 216791152, 261487280, 221213904, 162636448, 201089824, 167722224, 90364504, 40964860, -15470472, +-72275712, -168841600, -195497792, -265582528, -336538080, -394280160, -350017280, -314129600, -216494272, -153952560, +55143084, 144438672, 201697040, 252096320, 160200128, 106504992, 0, 0, 0, 0, +0, 0, 0, }, { 4442070, --1763621, 2601677, -6839736, -655519, -2604361, 3244848, 589484, -2800856, 4190278, -3695819, --930934, 3333968, -1308891, 1451162, -5663452, -995359, -713501, -5924908, 752156, 81068, --200253, 1653562, -2985002, 703301, -1089311, -380105, 6172405, -674310, -4259534, -2035278, -409633, 1458141, -4109747, 1070521, -3109020, -68719, -1196148, -1873680, 3390340, 3307125, --2367064, 4380867, 4456029, -5549635, -933082, -586263, -5206037, -2241436, -3605088, -4102768, -912144, 989453, -512712, 469225, 1952063, 2110440, -1163399, 671089, 1888712, 5239860, -3013457, 2350421, -2647847, 233002, -1479616, 3271155, -3713536, -2676838, 2877091, -1714229, -3119220, -3618510, -1782411, -1217623, -2197950, -12145094, 4277788, -6987912, 3518115, -4013110, --8071318, -13798119, 2222646, 246961, 3249143, 2863670, -1135482, -1152125, 843961, 8098698, --6042482, -10588705, 3272765, -4459250, -7192460, -9664, -1238561, 4197257, 1346472, 2962991, --3343095, -898185, -2261837, 6912750, -2115808, -2944200, -2703145, -1336272, -1899986, -2910377, --2695629, -1810866, 1185411, 522375, 712965, 175557, 1621887, 2928094, 1307281, -2695629, --8137353, -107911, -5720360, 787053, -579821, -2510945, 3344706, 260919, -176631, -7861401, --3427384, 1122060, -814433, 2852395, 11811, 2581275, -2477123, 1182190, -1169305, 5086315, --1889786, 2837363, -4506495, -3996467, -5609228, 721018, -1381369, -1007707, 27917, -1096290, --8615168, -1817845, -1160715, -2482491, -1127429, -2987150, 2816425, -1222455, -1016297, -313533, -49929, -248034, -2071248, 7518877, 4888747, 7856569, -3712462, 7813620, -4671314, -3384434, -3092377, 8651138, -169114, -5419712, -7807177, -5748277, -1047972, 6118181, 2493766, 1982664, -2817499, -2880849, 4301947, 397284, 3234110, -1699196, -7074885, 1786706, -4868346, -3548180, --3387656, -995359, -8980240, -597000, 521302, -3972845, 8571144, -1797444, -2629057, -3602404, -32212, 730144, -3503620, -86436, -4315906, -1891933, 268435, -2057826, 6246493, -39192, --1471563, 3180423, 2371359, 5406290, 2467459, 6545530, 1890859, 5310190, -6078453, 1414118, -5340255, -1944010, -4175782, -6402186, 337155, -589484, 9738838, -4378183, -3364570, 1005022, --2136209, -1576253, 4896263, -3754875, 4714264, 2187212, 127775, 2430415, -3118146, -2955474, --5488968, -5898601, 7842074, 3738232, 2770254, 4224101, -2719788, -1784559, -1998770, 9921911, --3809636, 10857140, -353798, -2707440, -2595234, -5680631, -6153615, -7425999, -459562, -1834488, -1350767, 7269769, -620623, -3334505, -10080288, 401579, 7985418, 11796128, -5532992, 3084860, -2135673, -2934000, -2692945, 3118146, 11082626, -2599529, 1697049, -897648, -1690607, -984621, -5257577, 7762617, -5930813, -3105798, 2272575, 10161356, 1545115, 7215545, -6015639, -5359583, --504659, -836982, 1792075, 1589675, -450435, 680215, 638340, -2603287, 681289, 3255048, -1724429, -2112050, 15670725, -11256572, -2711735, -4844723, 958851, 3963718, 7374459, -7947837, -4962298, -2287607, -8400956, -13400835, -2983392, -5858873, 632971, -1539746, -5847061, -3121904, -2754148, 2947958, 9945534, 5398774, 4905927, 245350, 1309428, -5607617, -3914863, 7941932, -5986648, 3983045, 1658394, 3649112, 514322, -272194, -7218230, -10046465, 6169721, -2913599, --6902550, -3448322, -4476967, 3150896, -3993783, 7932268, 1534377, -5118528, -2709588, -4013647, --3563212, 3666828, 5666673, -911607, 3671123, -3411815, -3792993, -404801, 360777, -3655554, --1728724, 4294431, -452582, -2490007, -2891587, 2040110, 2319282, -986769, 2873333, -204548, --3184182, 7459285, -1976222, -33286, -559956, -11128797, 2619930, 1434519, 2905546, -10460393, -3233574, 537408, -2796561, -5540508, 2922188, -5277441, -614180, 10267119, 15355045, 7764227, -8638253, -199179, -3704409, 6580427, 5960878, 2742337, 3390340, 7764227, -639413, 5756867, -5635534, 8038032, 7765838, -5585068, 5357435, 17180, 2178085, -5179194, 2161442, -347892, -5464809, -1539209, -946503, -3545496, 4112968, -5717139, -4485557, 883690, 5738613, 3256659, --2673617, -1257889, -475668, -1714766, 3682935, -6974490, 7282117, 339302, 8943733, -11578695, -1385664, -10397579, -2839510, -3076270, 3507378, -781684, -1859721, 2695092, 1502165, 3220152, -5284421, 7930657, -279710, -5845988, 2017561, 10530186, 2838437, -2766496, 33823, 6482180, --2505577, 3891777, -2349347, -11174431, 7175280, 5856188, -16491064, 173409, -3750043, 1409823, --9298604, 1028645, 1382980, 12076911, -9871445, 44560, -13201656, 2902861, -8043400, -1988570, -317291, -4334159, 3603478, 1618129, -7014756, 80531, -292058, 6280316, -4328254, 10146860, --329639, -8853001, -4719632, 10812580, -1267552, 4321274, 2648921, -1799054, 6234145, -7175280, --7041062, -5278515, 474594, -6860674, 7021735, -4009889, 4392678, -6632503, -380105, -8057359, -4992363, 738198, 6029061, 5712844, -5726265, 10718628, 8749922, 8642011, 1324997, 9076340, -7027104, -7613367, 6163278, 3195456, 169651, -7057705, 2816962, -5995238, 5513128, -2541547, --5299990, -519154, 8392903, 3249143, -10928544, 9889162, -1499481, -3428995, -6694244, 10041097, -7636452, -7522635, 5492727, 23822572, 4419522, -490700, -7612830, -14704357, 4318053, -1791001, --21775484, 19941534, -8990440, -13668733, 3443490, -462246, 3094524, -472446, 4252555, 6063957, -552440, 82141, -10877005, -501974, -587874, 13839458, -1949915, 794032, 5435818, -1902671, --1135482, -5000416, 11962021, -8128226, 8798777, -1581622, -6309844, 1744831, -7106024, -3428995, --11874511, 2663954, 6298570, -2887292, -5608154, -4430259, 8141648, -11173894, -2119566, -5252745, -498216, -1163399, 2204392, -9600863, 10572062, -13285944, -8704288, 4292283, 2447595, 35970, -4510253, -6589017, -9445707, 1877438, -1882806, 151934, 6048925, -5508833, 5654862, 3890167, -12538620, -2405182, 2922725, -57982, 1631551, 16701517, 3063922, 16745004, -1469953, -4104378, --17732846, -2819109, -4076461, -14479408, -24554864, 6832219, 11839614, -9329206, -4833449, 6497212, --3203509, 14393509, -2290291, -8500814, -5388574, -22848690, 6904697, 2011118, -2689723, -16188269, -3044595, -9218610, -2974802, -8145406, -4606890, 10670309, -11397769, 4143033, -16553878, 9681930, -1294933, -251256, -5312338, 753230, -2827699, -9291088, -17457432, 2812130, -767725, 3156264, -6175626, -4458176, -2178622, -11124502, -6387153, -3257733, 3646427, 2701535, 6979322, 12272332, -8909373, 4736812, 6525666, 1961190, 6795712, 6754373, -8003135, 7801271, 7963943, -2153926, -10988137, -1526324, 13015898, -6579890, -16916266, -2709588, 8231305, 10700374, 10649908, -2486786, --23612120, -2160369, -3571265, 964757, -3718905, -4843113, -955093, 22950694, -5051419, -5491116, -7635915, 12381854, -914828, 5788542, 14264660, 10384157, -23541252, -21523154, 108985, -2006824, -3084324, -9569187, -17230872, 4154307, 13626321, 9169755, -10073309, 16262894, 12914430, 12367895, --20745766, 5948530, 10619844, 681826, 1447404, 9325448, 20995410, -3957276, -9929428, 6583111, -4552666, -2733210, 11186779, 17278654, 2895882, 17900886, 7425999, -13132936, 1148904, 14886894, --1967095, -5848672, 7207492, 1425392, 2456185, 15634755, 9433896, 5459441, 1318018, -17702782, --18807124, -1303523, 2295123, 4999342, -6279779, -554051, -5421323, 1854889, 1513439, -6570226, -1755031, -3911642, -1983201, -5497558, -361851, 11755325, -7885560, -16064788, -3876745, -13501767, -1552094, -4297115, -2267206, -695248, -39738112, -25316148, -8667781, 5553930, -3790309, -10968810, -263067, -10721849, 25366076, -12263742, 15739445, 25078850, 12871480, 11649025, -11853573, 7986492, --6648610, -13674102, 9170292, 11091753, 6738804, 16443282, -1444720, -2325188, -9450539, -9470403, --8485782, -12513924, -12431246, -8830453, 2535641, 91805, -1734630, -8398272, -5465346, -12190191, -2819646, -10726144, -10153840, -5208722, 2801393, -1488743, -7444789, -17119202, 122407, -6091338, -3898757, -19949050, -16124918, 14740865, -4315906, -4622459, -9373229, -6102075, 10249939, 2421288, --4459250, 5127117, -3801583, 5377836, 3479461, 6334540, -7745974, -10933913, -25631828, 4295, --24976308, -3205656, -21529598, -4463545, 15978352, -3985730, 940061, -14641007, 26851598, 958851, --18617072, -15786152, 17067126, 13370233, -11693585, -11450920, 22754736, 14442901, 1399086, -12859669, -2198487, -5253282, 11155104, -7916162, 1903744, -3233037, -1749125, 23148800, -2549063, -6076842, -4974109, 4047470, 7600482, 7200513, 1539746, -8977019, 7636989, 3515431, 8657580, 17761838, -8948027, -25579752, -6474663, -4227859, -18705120, 7474854, -2519535, 259309, -10009958, 9032853, --3325915, 1533303, -13252658, 9340480, -10609106, 620086, 12339978, -2211908, 12976170, -9820980, -15954193, -19710678, 10573136, -361314, -5937256, 24463596, 7676181, -5966784, -14017163, 5677947, --2141041, 1116155, -1379221, 8111046, 14539538, 17235704, -10955925, 6883759, -4063039, 14863271, -6354941, 384936, -1731946, 7408282, 0, -9709310, -38216620, -24671902, 20824148, -14958297, --14086956, 8177081, 18220862, -29573534, -4836133, 7364795, 2025077, -15287936, -23242216, 44109316, --18814642, 6267968, -21416318, 12174085, -7434589, 20841866, 18234284, 2216740, 3244848, -23935852, --27380, 11927661, -9869835, -14064944, 11511049, 3733937, 12399034, 10378252, -2115808, 4669703, --2802466, -1002338, 18260590, -15014669, -9256191, 15317464, -707059, -11130945, 15452219, 201863, --3555696, -9811316, -4793184, 6497212, -8381092, -146029, 5304822, -9604084, -10891500, -6074695, -7687992, -21722334, 10605885, -35433, 21320754, -19187230, 6488085, -14259828, 5421860, -8016557, --12081206, 20774756, -11044508, -3278671, -10775536, 10004053, -12292196, 8853538, -4393752, 16214575, -14330158, 411243, -22090628, 18528488, 8612483, -22514756, 6648610, 22591528, -2818572, -747861, -10036802, -7805566, 15643882, 14012868, -20364050, -12866648, -4364224, 9507984, 17974976, 2457258, -9200357, 20246476, 15065672, -23132156, -3141769, 34393560, 7963406, -3299072, -4933844, -7616588, --11143293, 2118493, 7879118, 8620536, 8192650, -7371775, -15875810, 2967286, -8647380, 7158637, -23562728, -7647190, -25311852, 28091770, -9681393, -17402134, 22869628, -5594195, -7967701, -26782880, --5488968, 9063455, 4066260, -7037841, -11705396, 8214662, 27917, -13471702, 9031242, -4171487, -22050362, -18985902, 1241246, -5417028, 25288768, 6782290, -39045012, 9349070, -17212618, -9342091, --15086073, 13266080, 52155936, 16267189, 1022739, 8507256, 13100724, -24617678, -12135967, -11542725, --18232674, 1578937, -8247411, -28573344, -12178917, 1953136, -11628624, -35951024, 31143344, -5980742, -14012331, 2668249, -16531329, -28345174, -27383638, 30680562, 18612240, 7067906, -10871099, -20463372, --15428059, -24298778, -6329708, 9136469, -3866008, 2054068, 3802120, -3922379, -12702903, -12044162, --20792474, -7333120, -4076998, 10282689, 6997039, 11306501, -5662915, -9135932, -4002373, 14768245, -1955284, 13106630, -43409236, -10022843, -199716, 9686762, -13958644, -399969, -16143171, 12750684, -10852845, 2356327, 53270480, 1118839, 16506633, 22294102, 739808, 7430831, 102005, -3490198, --6680822, 11480448, 16000901, 21720186, -774168, -3533148, 1141924, 14529337, 12363063, 1074279, -9939628, 9618042, 6571300, -1989107, 20607790, -4970888, 26693758, -25281252, -12634183, 21793200, --2239826, 2401424, 6841346, -26256208, 2659122, 5497022, 18969796, 28177670, -21203180, 6543920, --12821014, 20524574, 18712098, 3703336, 34556768, 11842835, 14647986, -10531797, -467615, -19587198, -34516504, -17679696, 6628209, 21750252, -3352759, -11477226, 11668352, -1445793, 6618008, 23235774, -2009508, -5357435, -557809, 5593658, 751082, -11360725, 10972031, 282931, -2228551, 38570952, --27062052, 28315646, 18726058, 34954056, 15041512, -22179212, 19709604, 1834488, 18405546, 45512156, --30404610, -11747809, -2720862, 2251100, 31316754, -16413754, 2898566, -17770428, 2817499, 35044248, --2514167, 36250596, 11137387, 7099581, 17145510, -20432234, -2407866, 16229608, 22844932, -34877820, --416612, -30194694, 14122926, -16363825, -755914, 4440996, -6881612, -22272090, 5163625, -38339564, --34005404, -265214, -481573, -21741124, 16094316, 4249334, -6741488, -20164872, 25494388, -6814503, -38422240, -6369437, 7385197, 13684840, -20392504, -6959458, 4822712, -23430120, -14146012, -20522428, -15937013, -16505022, -5684389, -5688148, 13550622, -13919989, -24266028, -32246078, -2379949, 26207354, -96637, -14908368, -7763691, -18765786, -7784628, -60130, 9436580, -21034066, -4004520, -4691715, --16586627, -20605106, -788127, 3349538, 11435887, 4502737, 20904680, 6311992, 26814018, -11958263, -21744346, -5983963, -20575578, -4733591, 36468568, -16534550, 15382962, -12055436, 26014080, -14789183, -7136625, 18174154, -3640522, -7195144, 654446, -10043781, 22671522, -23445690, -12475806, 25720412, --7735773, -21833466, -34378528, 40499932, -11716671, 34652868, -5603322, 28063316, 3650722, -7166153, --16910360, -11762305, -964220, 1587527, 21196200, -6336688, 9664, 6801081, -16369194, 30090004, -12419972, 2196876, -22193170, 17452600, 10292889, -17928804, 20330228, 2696166, -1144609, 5753109, -1252520, 25488484, -3717294, -29693794, 35138740, -16103443, -707059, 25692494, -8848170, -4401805, --12642236, 39948028, -15284178, -3845070, -22122840, -3775813, 5302137, 35782448, -13901199, 7495255, -13598403, 21642878, -2842732, -21174188, 26794154, 15524159, 22387518, -8634495, -1703491, 3366718, -24794310, -11119133, -22082574, -27466852, 18627274, -18985366, 8863202, 22039624, 23752242, -13019120, --270046, 29313152, -40489732, -335007, 12022687, 16415365, 4967130, -15828565, 7624641, 14169097, --7047505, -8139500, -49744848, 17650704, 10366440, 45369888, 39897024, -5322002, -13919989, -45749456, -1963337, 15947214, -19176492, 15573551, 27698244, 26780732, -11570105, 32133334, 28985124, 1779190, --16449725, -17918066, 29598768, 25142738, -34495568, -47568372, 64411088, 3678103, -3826279, 8722542, -5415417, 23982560, 24205362, -9134859, -7337415, 33503430, 16505022, -5669894, -21360482, 13638669, -3380676, 2013266, 12556874, 1852742, -307090, -13094818, 8172249, -3845070, -15507516, 29904784, --46731928, 33140504, 28199682, -44969920, -2400887, 22839562, 6506339, 25997438, -5415954, 3439732, -24651502, -3495030, 12913356, -22629646, -34454228, 98229664, -39808980, -57671748, -11855720, 108995536, -48041892, -48391396, -10208064, 17453136, 13739600, -3260954, 5078799, -21767968, -14567455, 22674206, -40689984, 940598, 68997040, -33596844, -14368276, 39323108, -207769, -4291209, -23516556, -44348220, -32974612, -23985244, -26381300, 16472273, -29049548, 11476689, -27682674, -29810832, -7093139, 4454418, -1599875, -8255464, 31341986, 6862284, 18164490, 8339753, -1843078, -958315, -17670032, -33818036, -7921531, 30942556, -28834262, 21265994, -29351270, -4024384, -3935264, -42753716, 27157616, -15483894, -9076340, -155693, -14696304, -160524, -32532766, 30150670, -24210730, 9694278, -37431712, -21786222, --48317308, 17022566, -23803246, -24321862, -21791590, -9997610, -2152852, 49192408, 15426449, 24754580, --8609799, -21960704, -30651034, 8977019, 360777, -47995184, -24179592, -85119808, -41544680, -30404610, --4114579, -35276176, -28342490, -12128451, -50575388, 11518029, 17185238, -43621300, 23469312, 4661650, --13267691, 2541010, -13025562, -1192390, 8513699, 12773770, 21306260, -25968446, 1554778, 30412664, --4424890, -14030584, 25957708, -11490111, 653909, -15544024, -7852274, -31461710, 6932614, 1465658, -16594143, -11867532, -274341, 23406498, -12381317, 1343788, 21416854, -44537736, 1032940, -51033876, --18667002, -33681672, 25763362, 11308112, -4350265, 13276818, -12686797, 14477798, 32920924, 11384885, -52384644, -28727426, -38147900, 34628712, 5750961, -21494164, -25661356, -6600828, 16845936, -16812112, --4509179, -13924284, -25878788, 16092706, 11700028, -28991030, -23645406, 31950262, -5626407, 14265734, --11708618, 20253456, 549219, 33840584, -23523536, -5762773, -941672, 14271103, -17768816, -19808390, --33610268, -68267432, -33965676, -12776454, 30289720, 39353712, -74512848, 13173738, -29392072, -40307196, --7985955, 47108812, 30302604, 25795574, -15786689, -17814450, -21217138, 23867134, 17050484, 36695128, -5146445, -47156056, -18161806, 35827008, -5063767, 10655277, 32313724, -15047418, -21659520, -34455840, --34266324, 408559, 23065048, 49016852, 36618356, 24154896, 10288057, -49778136, -52737904, 18782428, --36223216, 8842801, 47403556, 18820010, 3703336, -23498840, -41911364, -7113003, -17741436, 14406931, -11656541, 8118562, 29978334, -4428112, -5089536, 7880191, 21951040, 34743600, 36472864, 12302397, -32568200, 10880226, 12138651, -6876243, -35048008, -13889387, -14788646, -29164976, 22798224, 20768852, -16071768, 15403363, -6103686, -35037268, 6367826, 10772315, 22659174, -58883464, -119946624, -61222612, -13183402, 48826260, 116933704, 114446384, 48501992, 49521508, 35940824, 3310883, -56119652, -96050504, --145488800, -42412264, -60047936, -9261560, 61351996, 108294376, 91242288, 80778672, 45124000, 457414, --26587458, -36093832, -6642704, -63561220, -50235548, -47605956, -30758946, -24950538, -10870025, -883690, -23743116, 54107460, 55613920, 54740968, 40393092, 52207476, 28286654, 30449708, -8179229, -746787, --22662932, -61596812, -89894736, -108844672, -52094732, -20172388, 18412524, -1558536, 12882754, 26862336, -34716756, 72668160, 83598320, 110351128, 70810592, 8066486, 32920924, -15590194, -59322088, -52022792, --104138464, -122025392, -90854664, -56443924, -23813984, -19519016, 44277356, 48636208, 137714912, 110370456, -80819472, 74236896, 30403000, -27915676, -35465156, -21523692, 0, 0, 0, 0, -0, 0, 0, }, +-1763621, 2601677, -6839736, -655519, -2604361, 3244848, 589484, -2800856, 4190278, -3695819, +-930934, 3333968, -1308891, 1451162, -5663452, -995359, -713501, -5924908, 752156, 81068, +-200253, 1653562, -2985002, 703301, -1089311, -380105, 6172405, -674310, -4259534, -2035278, +409633, 1458141, -4109747, 1070521, -3109020, -68719, -1196148, -1873680, 3390340, 3307125, +-2367064, 4380867, 4456029, -5549635, -933082, -586263, -5206037, -2241436, -3605088, -4102768, +912144, 989453, -512712, 469225, 1952063, 2110440, -1163399, 671089, 1888712, 5239860, +3013457, 2350421, -2647847, 233002, -1479616, 3271155, -3713536, -2676838, 2877091, -1714229, +3119220, -3618510, -1782411, -1217623, -2197950, -12145094, 4277788, -6987912, 3518115, -4013110, +-8071318, -13798119, 2222646, 246961, 3249143, 2863670, -1135482, -1152125, 843961, 8098698, +-6042482, -10588705, 3272765, -4459250, -7192460, -9664, -1238561, 4197257, 1346472, 2962991, +-3343095, -898185, -2261837, 6912750, -2115808, -2944200, -2703145, -1336272, -1899986, -2910377, +-2695629, -1810866, 1185411, 522375, 712965, 175557, 1621887, 2928094, 1307281, -2695629, +-8137353, -107911, -5720360, 787053, -579821, -2510945, 3344706, 260919, -176631, -7861401, +-3427384, 1122060, -814433, 2852395, 11811, 2581275, -2477123, 1182190, -1169305, 5086315, +-1889786, 2837363, -4506495, -3996467, -5609228, 721018, -1381369, -1007707, 27917, -1096290, +-8615168, -1817845, -1160715, -2482491, -1127429, -2987150, 2816425, -1222455, -1016297, -313533, +49929, -248034, -2071248, 7518877, 4888747, 7856569, -3712462, 7813620, -4671314, -3384434, +3092377, 8651138, -169114, -5419712, -7807177, -5748277, -1047972, 6118181, 2493766, 1982664, +2817499, -2880849, 4301947, 397284, 3234110, -1699196, -7074885, 1786706, -4868346, -3548180, +-3387656, -995359, -8980240, -597000, 521302, -3972845, 8571144, -1797444, -2629057, -3602404, +32212, 730144, -3503620, -86436, -4315906, -1891933, 268435, -2057826, 6246493, -39192, +-1471563, 3180423, 2371359, 5406290, 2467459, 6545530, 1890859, 5310190, -6078453, 1414118, +5340255, -1944010, -4175782, -6402186, 337155, -589484, 9738838, -4378183, -3364570, 1005022, +-2136209, -1576253, 4896263, -3754875, 4714264, 2187212, 127775, 2430415, -3118146, -2955474, +-5488968, -5898601, 7842074, 3738232, 2770254, 4224101, -2719788, -1784559, -1998770, 9921911, +-3809636, 10857140, -353798, -2707440, -2595234, -5680631, -6153615, -7425999, -459562, -1834488, +1350767, 7269769, -620623, -3334505, -10080288, 401579, 7985418, 11796128, -5532992, 3084860, +2135673, -2934000, -2692945, 3118146, 11082626, -2599529, 1697049, -897648, -1690607, -984621, +5257577, 7762617, -5930813, -3105798, 2272575, 10161356, 1545115, 7215545, -6015639, -5359583, +-504659, -836982, 1792075, 1589675, -450435, 680215, 638340, -2603287, 681289, 3255048, +1724429, -2112050, 15670725, -11256572, -2711735, -4844723, 958851, 3963718, 7374459, -7947837, +4962298, -2287607, -8400956, -13400835, -2983392, -5858873, 632971, -1539746, -5847061, -3121904, +2754148, 2947958, 9945534, 5398774, 4905927, 245350, 1309428, -5607617, -3914863, 7941932, +5986648, 3983045, 1658394, 3649112, 514322, -272194, -7218230, -10046465, 6169721, -2913599, +-6902550, -3448322, -4476967, 3150896, -3993783, 7932268, 1534377, -5118528, -2709588, -4013647, +-3563212, 3666828, 5666673, -911607, 3671123, -3411815, -3792993, -404801, 360777, -3655554, +-1728724, 4294431, -452582, -2490007, -2891587, 2040110, 2319282, -986769, 2873333, -204548, +-3184182, 7459285, -1976222, -33286, -559956, -11128797, 2619930, 1434519, 2905546, -10460393, +3233574, 537408, -2796561, -5540508, 2922188, -5277441, -614180, 10267119, 15355045, 7764227, +8638253, -199179, -3704409, 6580427, 5960878, 2742337, 3390340, 7764227, -639413, 5756867, +5635534, 8038032, 7765838, -5585068, 5357435, 17180, 2178085, -5179194, 2161442, -347892, +5464809, -1539209, -946503, -3545496, 4112968, -5717139, -4485557, 883690, 5738613, 3256659, +-2673617, -1257889, -475668, -1714766, 3682935, -6974490, 7282117, 339302, 8943733, -11578695, +1385664, -10397579, -2839510, -3076270, 3507378, -781684, -1859721, 2695092, 1502165, 3220152, +5284421, 7930657, -279710, -5845988, 2017561, 10530186, 2838437, -2766496, 33823, 6482180, +-2505577, 3891777, -2349347, -11174431, 7175280, 5856188, -16491064, 173409, -3750043, 1409823, +-9298604, 1028645, 1382980, 12076911, -9871445, 44560, -13201656, 2902861, -8043400, -1988570, +317291, -4334159, 3603478, 1618129, -7014756, 80531, -292058, 6280316, -4328254, 10146860, +-329639, -8853001, -4719632, 10812580, -1267552, 4321274, 2648921, -1799054, 6234145, -7175280, +-7041062, -5278515, 474594, -6860674, 7021735, -4009889, 4392678, -6632503, -380105, -8057359, +4992363, 738198, 6029061, 5712844, -5726265, 10718628, 8749922, 8642011, 1324997, 9076340, +7027104, -7613367, 6163278, 3195456, 169651, -7057705, 2816962, -5995238, 5513128, -2541547, +-5299990, -519154, 8392903, 3249143, -10928544, 9889162, -1499481, -3428995, -6694244, 10041097, +7636452, -7522635, 5492727, 23822572, 4419522, -490700, -7612830, -14704357, 4318053, -1791001, +-21775484, 19941534, -8990440, -13668733, 3443490, -462246, 3094524, -472446, 4252555, 6063957, +552440, 82141, -10877005, -501974, -587874, 13839458, -1949915, 794032, 5435818, -1902671, +-1135482, -5000416, 11962021, -8128226, 8798777, -1581622, -6309844, 1744831, -7106024, -3428995, +-11874511, 2663954, 6298570, -2887292, -5608154, -4430259, 8141648, -11173894, -2119566, -5252745, +498216, -1163399, 2204392, -9600863, 10572062, -13285944, -8704288, 4292283, 2447595, 35970, +4510253, -6589017, -9445707, 1877438, -1882806, 151934, 6048925, -5508833, 5654862, 3890167, +12538620, -2405182, 2922725, -57982, 1631551, 16701517, 3063922, 16745004, -1469953, -4104378, +-17732846, -2819109, -4076461, -14479408, -24554864, 6832219, 11839614, -9329206, -4833449, 6497212, +-3203509, 14393509, -2290291, -8500814, -5388574, -22848690, 6904697, 2011118, -2689723, -16188269, +3044595, -9218610, -2974802, -8145406, -4606890, 10670309, -11397769, 4143033, -16553878, 9681930, +1294933, -251256, -5312338, 753230, -2827699, -9291088, -17457432, 2812130, -767725, 3156264, +6175626, -4458176, -2178622, -11124502, -6387153, -3257733, 3646427, 2701535, 6979322, 12272332, +8909373, 4736812, 6525666, 1961190, 6795712, 6754373, -8003135, 7801271, 7963943, -2153926, +10988137, -1526324, 13015898, -6579890, -16916266, -2709588, 8231305, 10700374, 10649908, -2486786, +-23612120, -2160369, -3571265, 964757, -3718905, -4843113, -955093, 22950694, -5051419, -5491116, +7635915, 12381854, -914828, 5788542, 14264660, 10384157, -23541252, -21523154, 108985, -2006824, +3084324, -9569187, -17230872, 4154307, 13626321, 9169755, -10073309, 16262894, 12914430, 12367895, +-20745766, 5948530, 10619844, 681826, 1447404, 9325448, 20995410, -3957276, -9929428, 6583111, +4552666, -2733210, 11186779, 17278654, 2895882, 17900886, 7425999, -13132936, 1148904, 14886894, +-1967095, -5848672, 7207492, 1425392, 2456185, 15634755, 9433896, 5459441, 1318018, -17702782, +-18807124, -1303523, 2295123, 4999342, -6279779, -554051, -5421323, 1854889, 1513439, -6570226, +1755031, -3911642, -1983201, -5497558, -361851, 11755325, -7885560, -16064788, -3876745, -13501767, +1552094, -4297115, -2267206, -695248, -39738112, -25316148, -8667781, 5553930, -3790309, -10968810, +263067, -10721849, 25366076, -12263742, 15739445, 25078850, 12871480, 11649025, -11853573, 7986492, +-6648610, -13674102, 9170292, 11091753, 6738804, 16443282, -1444720, -2325188, -9450539, -9470403, +-8485782, -12513924, -12431246, -8830453, 2535641, 91805, -1734630, -8398272, -5465346, -12190191, +2819646, -10726144, -10153840, -5208722, 2801393, -1488743, -7444789, -17119202, 122407, -6091338, +3898757, -19949050, -16124918, 14740865, -4315906, -4622459, -9373229, -6102075, 10249939, 2421288, +-4459250, 5127117, -3801583, 5377836, 3479461, 6334540, -7745974, -10933913, -25631828, 4295, +-24976308, -3205656, -21529598, -4463545, 15978352, -3985730, 940061, -14641007, 26851598, 958851, +-18617072, -15786152, 17067126, 13370233, -11693585, -11450920, 22754736, 14442901, 1399086, -12859669, +2198487, -5253282, 11155104, -7916162, 1903744, -3233037, -1749125, 23148800, -2549063, -6076842, +4974109, 4047470, 7600482, 7200513, 1539746, -8977019, 7636989, 3515431, 8657580, 17761838, +8948027, -25579752, -6474663, -4227859, -18705120, 7474854, -2519535, 259309, -10009958, 9032853, +-3325915, 1533303, -13252658, 9340480, -10609106, 620086, 12339978, -2211908, 12976170, -9820980, +15954193, -19710678, 10573136, -361314, -5937256, 24463596, 7676181, -5966784, -14017163, 5677947, +-2141041, 1116155, -1379221, 8111046, 14539538, 17235704, -10955925, 6883759, -4063039, 14863271, +6354941, 384936, -1731946, 7408282, 0, -9709310, -38216620, -24671902, 20824148, -14958297, +-14086956, 8177081, 18220862, -29573534, -4836133, 7364795, 2025077, -15287936, -23242216, 44109316, +-18814642, 6267968, -21416318, 12174085, -7434589, 20841866, 18234284, 2216740, 3244848, -23935852, +-27380, 11927661, -9869835, -14064944, 11511049, 3733937, 12399034, 10378252, -2115808, 4669703, +-2802466, -1002338, 18260590, -15014669, -9256191, 15317464, -707059, -11130945, 15452219, 201863, +-3555696, -9811316, -4793184, 6497212, -8381092, -146029, 5304822, -9604084, -10891500, -6074695, +7687992, -21722334, 10605885, -35433, 21320754, -19187230, 6488085, -14259828, 5421860, -8016557, +-12081206, 20774756, -11044508, -3278671, -10775536, 10004053, -12292196, 8853538, -4393752, 16214575, +14330158, 411243, -22090628, 18528488, 8612483, -22514756, 6648610, 22591528, -2818572, -747861, +10036802, -7805566, 15643882, 14012868, -20364050, -12866648, -4364224, 9507984, 17974976, 2457258, +9200357, 20246476, 15065672, -23132156, -3141769, 34393560, 7963406, -3299072, -4933844, -7616588, +-11143293, 2118493, 7879118, 8620536, 8192650, -7371775, -15875810, 2967286, -8647380, 7158637, +23562728, -7647190, -25311852, 28091770, -9681393, -17402134, 22869628, -5594195, -7967701, -26782880, +-5488968, 9063455, 4066260, -7037841, -11705396, 8214662, 27917, -13471702, 9031242, -4171487, +22050362, -18985902, 1241246, -5417028, 25288768, 6782290, -39045012, 9349070, -17212618, -9342091, +-15086073, 13266080, 52155936, 16267189, 1022739, 8507256, 13100724, -24617678, -12135967, -11542725, +-18232674, 1578937, -8247411, -28573344, -12178917, 1953136, -11628624, -35951024, 31143344, -5980742, +14012331, 2668249, -16531329, -28345174, -27383638, 30680562, 18612240, 7067906, -10871099, -20463372, +-15428059, -24298778, -6329708, 9136469, -3866008, 2054068, 3802120, -3922379, -12702903, -12044162, +-20792474, -7333120, -4076998, 10282689, 6997039, 11306501, -5662915, -9135932, -4002373, 14768245, +1955284, 13106630, -43409236, -10022843, -199716, 9686762, -13958644, -399969, -16143171, 12750684, +10852845, 2356327, 53270480, 1118839, 16506633, 22294102, 739808, 7430831, 102005, -3490198, +-6680822, 11480448, 16000901, 21720186, -774168, -3533148, 1141924, 14529337, 12363063, 1074279, +9939628, 9618042, 6571300, -1989107, 20607790, -4970888, 26693758, -25281252, -12634183, 21793200, +-2239826, 2401424, 6841346, -26256208, 2659122, 5497022, 18969796, 28177670, -21203180, 6543920, +-12821014, 20524574, 18712098, 3703336, 34556768, 11842835, 14647986, -10531797, -467615, -19587198, +34516504, -17679696, 6628209, 21750252, -3352759, -11477226, 11668352, -1445793, 6618008, 23235774, +2009508, -5357435, -557809, 5593658, 751082, -11360725, 10972031, 282931, -2228551, 38570952, +-27062052, 28315646, 18726058, 34954056, 15041512, -22179212, 19709604, 1834488, 18405546, 45512156, +-30404610, -11747809, -2720862, 2251100, 31316754, -16413754, 2898566, -17770428, 2817499, 35044248, +-2514167, 36250596, 11137387, 7099581, 17145510, -20432234, -2407866, 16229608, 22844932, -34877820, +-416612, -30194694, 14122926, -16363825, -755914, 4440996, -6881612, -22272090, 5163625, -38339564, +-34005404, -265214, -481573, -21741124, 16094316, 4249334, -6741488, -20164872, 25494388, -6814503, +38422240, -6369437, 7385197, 13684840, -20392504, -6959458, 4822712, -23430120, -14146012, -20522428, +15937013, -16505022, -5684389, -5688148, 13550622, -13919989, -24266028, -32246078, -2379949, 26207354, +96637, -14908368, -7763691, -18765786, -7784628, -60130, 9436580, -21034066, -4004520, -4691715, +-16586627, -20605106, -788127, 3349538, 11435887, 4502737, 20904680, 6311992, 26814018, -11958263, +21744346, -5983963, -20575578, -4733591, 36468568, -16534550, 15382962, -12055436, 26014080, -14789183, +7136625, 18174154, -3640522, -7195144, 654446, -10043781, 22671522, -23445690, -12475806, 25720412, +-7735773, -21833466, -34378528, 40499932, -11716671, 34652868, -5603322, 28063316, 3650722, -7166153, +-16910360, -11762305, -964220, 1587527, 21196200, -6336688, 9664, 6801081, -16369194, 30090004, +12419972, 2196876, -22193170, 17452600, 10292889, -17928804, 20330228, 2696166, -1144609, 5753109, +1252520, 25488484, -3717294, -29693794, 35138740, -16103443, -707059, 25692494, -8848170, -4401805, +-12642236, 39948028, -15284178, -3845070, -22122840, -3775813, 5302137, 35782448, -13901199, 7495255, +13598403, 21642878, -2842732, -21174188, 26794154, 15524159, 22387518, -8634495, -1703491, 3366718, +24794310, -11119133, -22082574, -27466852, 18627274, -18985366, 8863202, 22039624, 23752242, -13019120, +-270046, 29313152, -40489732, -335007, 12022687, 16415365, 4967130, -15828565, 7624641, 14169097, +-7047505, -8139500, -49744848, 17650704, 10366440, 45369888, 39897024, -5322002, -13919989, -45749456, +1963337, 15947214, -19176492, 15573551, 27698244, 26780732, -11570105, 32133334, 28985124, 1779190, +-16449725, -17918066, 29598768, 25142738, -34495568, -47568372, 64411088, 3678103, -3826279, 8722542, +5415417, 23982560, 24205362, -9134859, -7337415, 33503430, 16505022, -5669894, -21360482, 13638669, +3380676, 2013266, 12556874, 1852742, -307090, -13094818, 8172249, -3845070, -15507516, 29904784, +-46731928, 33140504, 28199682, -44969920, -2400887, 22839562, 6506339, 25997438, -5415954, 3439732, +24651502, -3495030, 12913356, -22629646, -34454228, 98229664, -39808980, -57671748, -11855720, 108995536, +48041892, -48391396, -10208064, 17453136, 13739600, -3260954, 5078799, -21767968, -14567455, 22674206, +40689984, 940598, 68997040, -33596844, -14368276, 39323108, -207769, -4291209, -23516556, -44348220, +32974612, -23985244, -26381300, 16472273, -29049548, 11476689, -27682674, -29810832, -7093139, 4454418, +1599875, -8255464, 31341986, 6862284, 18164490, 8339753, -1843078, -958315, -17670032, -33818036, +7921531, 30942556, -28834262, 21265994, -29351270, -4024384, -3935264, -42753716, 27157616, -15483894, +9076340, -155693, -14696304, -160524, -32532766, 30150670, -24210730, 9694278, -37431712, -21786222, +-48317308, 17022566, -23803246, -24321862, -21791590, -9997610, -2152852, 49192408, 15426449, 24754580, +-8609799, -21960704, -30651034, 8977019, 360777, -47995184, -24179592, -85119808, -41544680, -30404610, +-4114579, -35276176, -28342490, -12128451, -50575388, 11518029, 17185238, -43621300, 23469312, 4661650, +-13267691, 2541010, -13025562, -1192390, 8513699, 12773770, 21306260, -25968446, 1554778, 30412664, +-4424890, -14030584, 25957708, -11490111, 653909, -15544024, -7852274, -31461710, 6932614, 1465658, +16594143, -11867532, -274341, 23406498, -12381317, 1343788, 21416854, -44537736, 1032940, -51033876, +-18667002, -33681672, 25763362, 11308112, -4350265, 13276818, -12686797, 14477798, 32920924, 11384885, +52384644, -28727426, -38147900, 34628712, 5750961, -21494164, -25661356, -6600828, 16845936, -16812112, +-4509179, -13924284, -25878788, 16092706, 11700028, -28991030, -23645406, 31950262, -5626407, 14265734, +-11708618, 20253456, 549219, 33840584, -23523536, -5762773, -941672, 14271103, -17768816, -19808390, +-33610268, -68267432, -33965676, -12776454, 30289720, 39353712, -74512848, 13173738, -29392072, -40307196, +-7985955, 47108812, 30302604, 25795574, -15786689, -17814450, -21217138, 23867134, 17050484, 36695128, +5146445, -47156056, -18161806, 35827008, -5063767, 10655277, 32313724, -15047418, -21659520, -34455840, +-34266324, 408559, 23065048, 49016852, 36618356, 24154896, 10288057, -49778136, -52737904, 18782428, +-36223216, 8842801, 47403556, 18820010, 3703336, -23498840, -41911364, -7113003, -17741436, 14406931, +11656541, 8118562, 29978334, -4428112, -5089536, 7880191, 21951040, 34743600, 36472864, 12302397, +32568200, 10880226, 12138651, -6876243, -35048008, -13889387, -14788646, -29164976, 22798224, 20768852, +16071768, 15403363, -6103686, -35037268, 6367826, 10772315, 22659174, -58883464, -119946624, -61222612, +13183402, 48826260, 116933704, 114446384, 48501992, 49521508, 35940824, 3310883, -56119652, -96050504, +-145488800, -42412264, -60047936, -9261560, 61351996, 108294376, 91242288, 80778672, 45124000, 457414, +-26587458, -36093832, -6642704, -63561220, -50235548, -47605956, -30758946, -24950538, -10870025, -883690, +23743116, 54107460, 55613920, 54740968, 40393092, 52207476, 28286654, 30449708, -8179229, -746787, +-22662932, -61596812, -89894736, -108844672, -52094732, -20172388, 18412524, -1558536, 12882754, 26862336, +34716756, 72668160, 83598320, 110351128, 70810592, 8066486, 32920924, -15590194, -59322088, -52022792, +-104138464, -122025392, -90854664, -56443924, -23813984, -19519016, 44277356, 48636208, 137714912, 110370456, +80819472, 74236896, 30403000, -27915676, -35465156, -21523692, 0, 0, 0, 0, +0, 0, 0, }, }, { { 9789841, --1864016, 2947421, -306553, 3818763, 4725538, 3293166, 5990406, -3674882, 6475200, -2181307, -875636, -6014028, 281320, -6265821, 1365263, 1100049, 522375, 174483, 2330020, -3340948, --3968013, 3262028, -300111, 2494839, 1482838, -551366, -2729989, 521839, 4961761, 3034931, -1607928, 1927367, 1483911, 545998, 1794760, -394063, 240518, -393526, 5630166, -1161252, -2926483, -2091112, 2488934, 6615860, -1755031, 6193343, 947577, -2611877, 1844689, 2766496, --891743, -1075352, 175020, 4693326, -1481764, 1498407, -869731, 2983929, 1248762, 4070019, --1354525, -280784, 1573569, -1611687, -3324305, 630823, -1086627, -423054, -1306744, 2673617, -426276, 1686848, -788127, 3610457, 1846299, -4569845, -7105487, -5182952, 1995012, -814970, --12140262, -6931541, -526134, 1693291, -3725884, 1229971, -4490925, 826781, -3235721, 8457864, --6913287, -3111704, -3018288, 5356898, 3788161, 8596377, 2335389, 1721745, -3911642, 4005057, -583042, 1017370, -415001, 3186329, 4577899, 233002, 4570919, 4151086, -1979443, 2268280, --2431488, -2942053, 426812, -2431488, 1563368, -3749507, -6425271, 1632625, 2480344, -1768453, -1975148, -3277060, 3113851, 3868155, -6749004, 1193464, -194884, 2441152, 2428267, 194347, --6616934, -2224256, -2770254, 2085744, 170725, 500364, -1921998, 1073742, -3210488, -28991, -4124779, 2224256, 610422, -2153926, 1649804, -5806259, -2698850, -4330401, 1250372, 468151, -274341, -13818520, -255014, 932545, 387621, 2494302, -4759361, 3826816, 2222646, -2398739, --8167417, 5690295, 5812165, -1125281, 4865661, 3586298, -4450660, 9401147, 2091112, -3955128, -5116917, 565862, 4791573, 891206, -7838316, 3259880, -1347546, -2746632, -2940442, -2210835, -5414343, 4290673, 498216, 4482335, 1708323, -3788161, -4809290, -217433, -994822, 2383170, -1625108, -3669513, 1104344, 2289218, 2097018, -3186329, -2714419, -4299263, -1427003, -870268, -1090385, -842887, 6300180, 2902861, -767189, -2812130, 1332514, 2848100, 1509681, 6900939, --904628, 3641596, -190589, -1832877, -3795677, 3173981, -687732, -1488743, 4096862, -801548, -1532230, -443992, -541703, -3992172, 1241782, -758599, 5433671, 6923488, -1174137, -2627983, --4140885, -9513353, -5695664, -2055679, 6832219, 898722, 1264331, 4209605, 1113470, 1830193, --10000831, -9133785, -5863704, -1500017, -64961, 4263292, -3027952, 3349001, -1748589, -6111739, -1883880, -849330, -4262218, -9127, 5866389, 8665633, 3847754, -3865471, 2253784, 355945, -6140193, 60666, -4996658, -70867, -2945811, 6203544, 2596845, 2976949, 6097243, -937377, -375273, 8422431, 7157026, -117575, -117575, 738198, -546535, 2388539, 513785, -5830955, --8108899, -2604361, -1120450, 270583, -2763812, -8657043, -1063541, 2772402, -4984310, -2040646, --3295851, -2334852, 810138, 1562294, 2800856, -5746666, -5134634, 5349919, -2197413, -434329, -809064, 434329, 2928094, -4901632, 12635794, -5000416, -3981972, -731755, 112206, -4879083, --62277, -3449933, 6026376, -1617055, -7683697, -10677289, -2813741, -7115687, 9643812, 667331, -6815040, 5699959, -9341554, -649077, 3779034, 2673617, 4812511, 779537, -694711, -976568, -2204392, -3204583, 3428995, 1804423, -3396782, 1890859, 48855, 2229088, 5197448, -3017752, -2002529, -498753, 2924336, 2440615, -1189706, 3421478, -1123671, 2949032, -2495376, 2668785, --7595650, -3367254, -2845953, 1915019, 6358699, -4951561, -3259880, -1957431, 273804, -2381023, --2992519, -1733019, 2493229, 1905355, 3612068, -1465121, 1996623, -2430952, -2466385, -442919, --1544041, 2371359, -187368, -4114042, 2041720, -2450279, -4008278, -1512365, -2538326, 1838783, --2742337, 1909113, 3089692, -1550483, 4817343, -8179765, 3308199, -4989679, -5470715, 7422777, -2619393, -9302362, 708670, -194884, 2496450, -6768332, -4400731, -824634, -5507222, -9880572, --9545565, -6409165, -9526237, 3732327, -1195612, 1145683, 4811437, -8435316, 5157719, -2580739, -2296734, 1382980, -1052804, 562641, -1401770, -1460826, -5543192, -3481071, 6736120, -2863133, --6002754, -5627481, -735513, -2702608, 1950989, -5408438, -8093329, 876173, 7108171, -1454920, -4225174, -2885681, 2207613, -4300873, 2775086, 840203, -5593121, 7515656, 1204202, -2088428, -1647120, 6831683, 6518687, 3051574, -908922, -8638253, -1549410, -7334194, 1787243, -2115272, -993748, 455803, 1797981, -7000260, -52613, -1541356, 3178813, 4478041, -9588514, -9213779, --6179921, -10092636, -11841225, -11330124, 3996467, 4395362, -7472706, -2415919, -6814503, -10807211, -4922033, -3272228, -9409736, 2449205, -1146219, -149250, 361851, 2406256, 452582, -927713, -1752347, 2455111, -5625334, -5514738, -1843615, -6592238, -943819, -6988986, -11534672, -1501091, -6158446, -8607651, -6624987, 3690988, -4714801, -136365, 1194538, -4750234, -3813931, -4127464, --12366821, -5790153, 2057826, -4044786, -4424890, -8134668, 2852932, 6025839, -2902324, 9646497, --6189048, -3342558, -534187, -3139084, -9194988, -1264868, 1501628, -936303, -2332167, -8244727, --1760937, 6844031, 3249143, 1576790, 3335042, 2154463, -2551748, 13700946, -5138392, -6152004, --6036577, -6934225, 1567663, 7526930, 16297790, 11161009, -212601, 10201621, -539555, 1688459, -2217277, -5227512, 9404905, 300648, 8348880, 7867307, -5858873, 10147397, 516470, -7446400, --12170864, 11599633, 5941551, 11509975, -9138617, 6650220, 3958349, -10409390, -9950902, -6065568, --2507724, 11031623, -9993852, 9296457, -431644, -1010928, 7143068, 6292127, 9056475, 3137474, --4179540, 4151623, 8568997, -4933844, 8581345, 12167105, 5750425, 7333120, 3644817, 1981054, -2659659, 174483, -6078990, 2299955, 1279900, 302795, 6236293, -4180614, 3986804, 3515968, --975494, 10423886, -5598490, -4096862, -1726577, 8913668, -972810, 7278896, 4582730, 4780299, -5376762, 497142, -12262132, -2441689, -9635759, -6100464, 14470282, 6711424, -5043902, -507343, --14057965, 8912057, 8549669, 25281788, 1002875, 2214056, -1260036, -3434363, -1647120, 8576513, -7783555, 6819871, 9812927, 4021700, 15495705, 4579509, -6158446, 1526324, 13496398, 5382668, -1349157, 2146947, -6976638, -9949829, 6380174, -4916664, -9826885, -20691004, -366146, 8303246, --673236, 4918812, -7225746, -3749507, -2728915, 1603097, -2321430, -6164889, -3083787, -16650514, --4409858, -14125611, 1146756, -7423314, 5647882, -8086887, 3047816, -7775502, -2763275, -454730, -191663, 1240172, 1544578, -10329933, 4972499, -1544578, 2268280, -5406827, 127238, 8257075, -3323768, 11397769, 6409702, -3539053, -647466, -2437394, -1112933, -2801929, -3553012, -350040, -4812511, 2797634, 3648575, 1912334, -16167331, 10358387, 27681064, 10270341, -4088272, 13901735, --8370892, 9832791, 6700149, -12359305, 3197603, -15665893, 795643, -5023501, -10881837, 6526740, -676457, 5102421, 7129646, 8711804, 13728863, 5988258, -463320, -2965675, -8542690, -15796353, -6252399, 6827388, 2254858, -5213554, 9276592, 1608465, 9776956, 5983963, -16454020, -5971615, -2788508, -12009265, 1152662, -426812, -1854889, 4143033, 3275986, -2467459, 13027710, -6747394, -1029182, 7487202, -5620502, 5295695, -2141041, -7095823, 5641440, 428960, -411780, 7697119, -5345087, 769873, -3147674, 15416248, 1272921, 8904004, 1467805, -4114042, -4526359, -11953431, --4163971, 5775658, 360240, 5027796, -691490, -9141838, 4653060, 3834869, -13462038, 4785131, -8238821, -3202435, -27837830, -8932458, 29995514, 8675834, 5144834, -3969087, -381715, -4052839, -6431177, -9055402, 13313325, 7907035, 6438156, 6750615, -4210142, 87510, -177704, 4702989, -9040906, -12530030, -7438884, -3611531, 10262287, 4174171, 5850819, 6565395, -1075889, -8776766, -3351148, 1353989, 18316962, 14845018, 3979287, 11440719, 816581, -4539244, 2447058, -813359, --2285996, 7652021, 8725226, 7753490, 17624936, 9172976, 6986301, 8427800, -7815767, -12206297, --6003828, 6718403, -11011222, -4648765, 10790568, 12331925, 6292664, -4296578, 10118406, -3064459, -1034550, 3412352, 5717139, -1946694, -6496675, 4740034, -5930276, -16704202, 494458, 7112466, --10124849, 2765422, -2224793, -788663, -2391760, -3629784, 13734232, 1529545, 6779606, 14075682, -22425098, -34235184, -5238787, 1489280, -707059, -4581120, -8845485, 8682813, -11215770, -17728014, --2149094, 16171089, -2786897, -10396505, 2740726, -14321032, -7798050, -86973, 8462159, -15013595, -1278827, 15012521, 15787763, -263604, 5418101, 13353590, -8293582, -13269838, -17785460, 966905, --17707614, -4490389, 7174206, 6153615, -15646029, -15399068, -9019968, 5475547, -4226248, -3565897, --4148939, 13093745, -20786568, -6951942, 3207804, -12095165, -3838090, -905701, -13022341, -369367, -5484137, -1725503, 17302812, -2215130, -6736120, 355409, -593779, -6786049, 3638911, 7222525, --7372848, 10741713, -5403606, -23796266, 1724966, -10260677, -3959423, -2310693, -1334661, -31500900, --3579318, 11191074, 13600551, 4996658, 20577726, 12120398, -1787780, -32168232, 9126269, -5924371, -11128260, -10261214, 32749, 16921634, -5491116, 24007256, 5677410, 4637491, -10132365, 4536559, -12070469, -7337952, -1292248, 15472620, 10197863, 11620571, 1866163, -17993766, 11623792, -11661373, --847719, -7084549, 2017561, -9037148, 5434744, -2472291, 5310727, 4639102, 8840653, 8500814, -9921374, -11662984, 3010772, 18025440, 4184372, -3557844, -3376918, -9483288, -7108708, -377957, -969589, 2915209, 15670725, 914828, 8777303, 7770133, -285615, -4412542, -3451543, 13411572, --16014322, -4139275, -14149770, -12532178, -3081102, -613643, -23958938, 5506148, -7394860, 13957570, --2891050, -303869, 10418517, 1054415, 24920474, 19362250, 29589640, 9918153, 1138166, -4804995, --3313567, -6249715, -8935143, 13275744, -3216394, -2234457, 30227980, -5570573, -6044630, 33627448, -11811, 19396610, 14350559, 1709397, 8250632, -3821984, 6560563, 6369974, 4086662, 5305359, -15711527, -9865540, 18836116, -9454297, 108985, 4474282, -2073932, -12626667, -11516955, 388695, --18956376, -5419175, -20751134, -668404, -12173011, -8582955, -6494528, -5195837, 3534758, -16133508, -20118164, 4006668, -12447889, -8629126, -237297, -1499481, -2769180, 6133750, 3082713, 20486458, -2601677, 906238, -9541270, 2821257, 4405026, 523986, -10188199, -3256659, 12585865, 14697378, --367220, -9770514, 5058935, -589484, 17801028, 21073258, -7020124, -3042448, -2988760, 4364224, --6749541, 10266582, -23224498, 619549, 29392072, -22103512, -11228118, -1165547, -3198677, 2415919, --16920024, -9085466, -2333241, 13786308, 16502875, 11463805, -9907953, -25944824, 45978700, 11891154, --28284508, -28309204, -3962644, 7378754, 19766514, -24566676, -4084514, 5097590, -40802, -3159485, -26458610, 6048925, -15044197, 8638253, 1376000, -287763, 14053133, -2061584, 7802345, -16587164, --5503464, 30401390, 11322071, 24074366, 7701950, 21813066, 3972308, -7373922, 15239618, 14151917, -21660594, 11034308, -24011552, -8705362, 5430450, 12999255, -9548249, 4177930, -9206799, -15169288, -1735167, -1315871, -9231495, 7784628, 10269267, 9315247, 6542846, 6553047, -4525822, 16731045, --52076, -15565498, -11630235, 15131707, 7952132, -24707874, 11038603, 5112085, 8170102, -21409338, --15050639, 15016279, 22067006, 13430363, -4471061, 11529840, 21931176, 8823473, 23131084, 4371740, -10983842, 8269960, 38117836, 51502564, 4686346, 10755135, -31692026, -9749576, 20336670, -15981573, -39298412, -7152731, 6837588, 10888816, 23353348, 13012140, -4589710, -15884937, -18369038, -5870147, --2335925, -23601920, -10562935, -9143449, 16273094, -8540542, 5455146, -15031312, 2929705, -5693516, --21607980, 23730768, 17121350, 19151796, 9208947, -11172284, -10184441, -25901338, 1428614, -23343148, --6212670, -1779190, 4081830, 12281996, 10506027, -7492571, -4446365, 10143639, 23106388, 6035503, -9451612, 16192027, -19569482, 14576045, -10695005, -10849624, -19796042, -9218074, 10429254, 7825968, -2203318, 23970212, -4523675, -9447317, 4367445, 5718749, 33757908, -11894375, 13349832, 11720966, -31660352, -7801808, 4412005, -14493904, -4347044, -19238232, 14842870, -27574764, 979253, -22238804, -4073240, 9236327, 3126736, -13379360, 44891000, -3360275, -6396817, 3925600, -26050588, 1304060, --17718888, 430570, 4536559, -5372467, -951335, 10488310, -9815611, 255014, 13297219, 970663, -3067144, -22277458, 2412698, -2010582, -1798518, -5742908, -27890980, -15416248, 6342056, 2114735, -11734924, -31947040, 2998424, -29739964, 14531485, -20321638, -32807644, 16239271, 29276108, 5015448, -14124537, -22432078, 21553220, -5595269, 2741263, -13799193, 17831630, 7305740, 18523658, 5900748, -22587234, -21092048, 3400540, 1095754, -4221953, -16681653, -14207752, -15614890, 17149804, -4572530, -23552526, -14610942, -12058658, 3615826, 2799782, -11038603, 6558952, -53259740, 6030671, -17324824, -48413944, -9654013, -25128780, 9352828, -1867237, -25047176, -4661650, 3629247, -15258408, 36426692, -4782983, 3070902, 16284905, -21218212, -32391570, -20156282, 44565116, -4071092, -10040560, 29272886, -16312286, -14677514, -14583561, -8440148, 35223564, 4510790, -9196062, -14462229, -7231115, -28392956, -18322330, -3759170, 7129646, 17425220, -6844031, -29404956, -4041027, 36719824, -2105608, -9826885, -17440788, -8702141, 21762600, 14071387, -2408940, -28087476, -14545980, -4348118, -26001732, -15534897, --15203647, 1398549, -4023848, 20896090, -15491410, -5816997, -618475, 54651312, 18695992, -10186589, -10666551, 5828808, -3777424, 27360016, 13135084, -11391864, 3901978, 21880174, 25203942, -16586090, --11462731, -38712152, -29777546, -979253, -4214437, -4119411, -58133992, 22054120, -11239929, 33332168, -33819108, -17126182, 16775605, -30355756, -46455440, 2787971, -32216550, 6069326, -2691334, 27758910, --17847736, 20297478, 17528298, 27876486, -38317552, 6062883, -22840100, -20624970, 3993246, -27103928, --17034378, 27998354, -6045704, 11776800, 32220844, -4207458, 11719892, -23313082, 4569309, -25858388, -27469000, -21058224, -13573707, -14975477, 30511448, 25128780, -14698452, 33652680, 22713934, -4450660, -33166274, 543313, -31118648, -6775848, -1870458, -23321672, 7912404, -51982528, 7669201, -11207717, --23874650, -18341658, 26803818, -11615202, 53118008, 40682468, -53755272, 3352759, 1502165, 6294275, -29391534, -40465572, -27284854, 34830036, -21218750, -26896696, -31493384, 8230231, 81992536, -6060199, --17694728, -16972638, 7233799, 28412282, -30907122, 15931644, -52130164, -7668664, -20045150, -17603998, -28193240, -35678832, -55521044, 32863480, 49682572, 12096775, -9059160, -44558676, 3542811, 17645336, -18038862, -7369627, -17360258, 2356863, -3828427, -5754720, 6328635, -6504191, -14344117, -29212756, -4420058, -17564268, 5118528, -15755014, -32596654, 20777978, 16119549, 25525528, 1803349, 27588722, -16428787, 4132832, -7912941, -14139569, -21880710, -16458852, -8050916, 6453725, 17150878, -10728828, --3787624, -38180112, 37249716, 42179800, 25218974, -21753472, 24427626, -29679298, 1557463, 6523519, --62179852, 4954782, 8941048, 30073898, -35570384, 49158048, 22827214, -36159868, -16223702, 14163728, --1440962, -27154930, -25900800, -36109400, -38504920, -5172751, -49177912, -6669011, 17754322, -23162222, --21577916, 20136418, 20426328, 4051228, -19499152, -66521528, -9871445, 12862353, 7810398, 28667832, --734976, 16610786, -4431333, -552440, -8454643, 1108102, 17488034, 1892470, 632971, 16937204, --4639639, -4264903, -22523346, -2219424, -3679713, -2666638, 3799972, 13468481, 18561238, -3816079, --38118, 14439143, -3338263, -28310814, -1954747, -25158844, 3631395, 3218541, -32743756, 23557896, --45100376, 9899900, 12468827, -20008642, -1320166, 58289684, -16466368, 19506130, -12221329, 10184978, --43658344, 4428112, 25878788, -1020055, 22419192, -5530308, 2660732, -1863479, 28745142, -18721762, --21294984, 24480776, -22442814, -29431800, 638876, -46790984, 31940062, 23889682, -6993818, 7487202, -8075076, -4494684, -25497610, -74591232, -35720708, -12721693, 22726820, 52801792, -50736984, 9583146, --15559593, -51158428, -8215736, 43624520, 10848551, 35720168, -32413044, 8044474, -12016245, 951872, -20599736, 2462090, 10644003, -8288750, -64826088, 17639968, 1925756, -28229210, 26532698, 19948512, --20420422, 18351322, 1163399, -21932250, 5169530, -14011794, 38614440, 3679713, 14941654, -428423, --41996728, -33891588, -12184822, -25417080, 25406342, 36992552, 38085624, 30415884, -12087112, 3246459, --33237678, -5989332, -4378719, -14641544, -18056580, 1608465, 1954210, -45197552, -14058502, -18317498, --2353105, 18705120, -22837952, -6012418, 6490233, -903554, 21563420, -26024818, -2161979, -29253560, --16116865, -21652004, 10449655, 7279433, 21481278, -2794413, -3708704, -25053082, -10319733, 20130512, --29841970, -120640800, -63213864, 14271639, 52133388, 115727896, 88446264, 50498076, 17467632, 26938572, --7336341, -46941844, -92414808, -122707752, -30617212, -34617436, 2576981, 61747136, 86816320, 59153512, -77815144, 19196894, 16952236, -7561827, -38495792, -42719892, -35253092, -36458904, -46524160, -36095444, --15691126, -797253, -209380, 31784368, 39398808, 76432168, 35572528, 13379897, 30887258, 49488760, -15350213, 10948409, -38395932, -50771884, -86069000, -37834368, -45210436, -30672508, -19592030, -13209709, -6142340, 12723841, 35863512, 76292576, 59180356, 67311264, 47605956, 61343944, 43209520, -33127082, --33443836, -79582520, -64638720, -43979928, -105840344, -78230680, -51138564, 6545530, 61172144, 62970128, -68470368, 91634200, 72222024, 42875584, 42804716, -396748, -32700270, -33023466, -18997714, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-1864016, 2947421, -306553, 3818763, 4725538, 3293166, 5990406, -3674882, 6475200, -2181307, +875636, -6014028, 281320, -6265821, 1365263, 1100049, 522375, 174483, 2330020, -3340948, +-3968013, 3262028, -300111, 2494839, 1482838, -551366, -2729989, 521839, 4961761, 3034931, +1607928, 1927367, 1483911, 545998, 1794760, -394063, 240518, -393526, 5630166, -1161252, +2926483, -2091112, 2488934, 6615860, -1755031, 6193343, 947577, -2611877, 1844689, 2766496, +-891743, -1075352, 175020, 4693326, -1481764, 1498407, -869731, 2983929, 1248762, 4070019, +-1354525, -280784, 1573569, -1611687, -3324305, 630823, -1086627, -423054, -1306744, 2673617, +426276, 1686848, -788127, 3610457, 1846299, -4569845, -7105487, -5182952, 1995012, -814970, +-12140262, -6931541, -526134, 1693291, -3725884, 1229971, -4490925, 826781, -3235721, 8457864, +-6913287, -3111704, -3018288, 5356898, 3788161, 8596377, 2335389, 1721745, -3911642, 4005057, +583042, 1017370, -415001, 3186329, 4577899, 233002, 4570919, 4151086, -1979443, 2268280, +-2431488, -2942053, 426812, -2431488, 1563368, -3749507, -6425271, 1632625, 2480344, -1768453, +1975148, -3277060, 3113851, 3868155, -6749004, 1193464, -194884, 2441152, 2428267, 194347, +-6616934, -2224256, -2770254, 2085744, 170725, 500364, -1921998, 1073742, -3210488, -28991, +4124779, 2224256, 610422, -2153926, 1649804, -5806259, -2698850, -4330401, 1250372, 468151, +274341, -13818520, -255014, 932545, 387621, 2494302, -4759361, 3826816, 2222646, -2398739, +-8167417, 5690295, 5812165, -1125281, 4865661, 3586298, -4450660, 9401147, 2091112, -3955128, +5116917, 565862, 4791573, 891206, -7838316, 3259880, -1347546, -2746632, -2940442, -2210835, +5414343, 4290673, 498216, 4482335, 1708323, -3788161, -4809290, -217433, -994822, 2383170, +1625108, -3669513, 1104344, 2289218, 2097018, -3186329, -2714419, -4299263, -1427003, -870268, +1090385, -842887, 6300180, 2902861, -767189, -2812130, 1332514, 2848100, 1509681, 6900939, +-904628, 3641596, -190589, -1832877, -3795677, 3173981, -687732, -1488743, 4096862, -801548, +1532230, -443992, -541703, -3992172, 1241782, -758599, 5433671, 6923488, -1174137, -2627983, +-4140885, -9513353, -5695664, -2055679, 6832219, 898722, 1264331, 4209605, 1113470, 1830193, +-10000831, -9133785, -5863704, -1500017, -64961, 4263292, -3027952, 3349001, -1748589, -6111739, +1883880, -849330, -4262218, -9127, 5866389, 8665633, 3847754, -3865471, 2253784, 355945, +6140193, 60666, -4996658, -70867, -2945811, 6203544, 2596845, 2976949, 6097243, -937377, +375273, 8422431, 7157026, -117575, -117575, 738198, -546535, 2388539, 513785, -5830955, +-8108899, -2604361, -1120450, 270583, -2763812, -8657043, -1063541, 2772402, -4984310, -2040646, +-3295851, -2334852, 810138, 1562294, 2800856, -5746666, -5134634, 5349919, -2197413, -434329, +809064, 434329, 2928094, -4901632, 12635794, -5000416, -3981972, -731755, 112206, -4879083, +-62277, -3449933, 6026376, -1617055, -7683697, -10677289, -2813741, -7115687, 9643812, 667331, +6815040, 5699959, -9341554, -649077, 3779034, 2673617, 4812511, 779537, -694711, -976568, +2204392, -3204583, 3428995, 1804423, -3396782, 1890859, 48855, 2229088, 5197448, -3017752, +2002529, -498753, 2924336, 2440615, -1189706, 3421478, -1123671, 2949032, -2495376, 2668785, +-7595650, -3367254, -2845953, 1915019, 6358699, -4951561, -3259880, -1957431, 273804, -2381023, +-2992519, -1733019, 2493229, 1905355, 3612068, -1465121, 1996623, -2430952, -2466385, -442919, +-1544041, 2371359, -187368, -4114042, 2041720, -2450279, -4008278, -1512365, -2538326, 1838783, +-2742337, 1909113, 3089692, -1550483, 4817343, -8179765, 3308199, -4989679, -5470715, 7422777, +2619393, -9302362, 708670, -194884, 2496450, -6768332, -4400731, -824634, -5507222, -9880572, +-9545565, -6409165, -9526237, 3732327, -1195612, 1145683, 4811437, -8435316, 5157719, -2580739, +2296734, 1382980, -1052804, 562641, -1401770, -1460826, -5543192, -3481071, 6736120, -2863133, +-6002754, -5627481, -735513, -2702608, 1950989, -5408438, -8093329, 876173, 7108171, -1454920, +4225174, -2885681, 2207613, -4300873, 2775086, 840203, -5593121, 7515656, 1204202, -2088428, +1647120, 6831683, 6518687, 3051574, -908922, -8638253, -1549410, -7334194, 1787243, -2115272, +993748, 455803, 1797981, -7000260, -52613, -1541356, 3178813, 4478041, -9588514, -9213779, +-6179921, -10092636, -11841225, -11330124, 3996467, 4395362, -7472706, -2415919, -6814503, -10807211, +4922033, -3272228, -9409736, 2449205, -1146219, -149250, 361851, 2406256, 452582, -927713, +1752347, 2455111, -5625334, -5514738, -1843615, -6592238, -943819, -6988986, -11534672, -1501091, +6158446, -8607651, -6624987, 3690988, -4714801, -136365, 1194538, -4750234, -3813931, -4127464, +-12366821, -5790153, 2057826, -4044786, -4424890, -8134668, 2852932, 6025839, -2902324, 9646497, +-6189048, -3342558, -534187, -3139084, -9194988, -1264868, 1501628, -936303, -2332167, -8244727, +-1760937, 6844031, 3249143, 1576790, 3335042, 2154463, -2551748, 13700946, -5138392, -6152004, +-6036577, -6934225, 1567663, 7526930, 16297790, 11161009, -212601, 10201621, -539555, 1688459, +2217277, -5227512, 9404905, 300648, 8348880, 7867307, -5858873, 10147397, 516470, -7446400, +-12170864, 11599633, 5941551, 11509975, -9138617, 6650220, 3958349, -10409390, -9950902, -6065568, +-2507724, 11031623, -9993852, 9296457, -431644, -1010928, 7143068, 6292127, 9056475, 3137474, +-4179540, 4151623, 8568997, -4933844, 8581345, 12167105, 5750425, 7333120, 3644817, 1981054, +2659659, 174483, -6078990, 2299955, 1279900, 302795, 6236293, -4180614, 3986804, 3515968, +-975494, 10423886, -5598490, -4096862, -1726577, 8913668, -972810, 7278896, 4582730, 4780299, +5376762, 497142, -12262132, -2441689, -9635759, -6100464, 14470282, 6711424, -5043902, -507343, +-14057965, 8912057, 8549669, 25281788, 1002875, 2214056, -1260036, -3434363, -1647120, 8576513, +7783555, 6819871, 9812927, 4021700, 15495705, 4579509, -6158446, 1526324, 13496398, 5382668, +1349157, 2146947, -6976638, -9949829, 6380174, -4916664, -9826885, -20691004, -366146, 8303246, +-673236, 4918812, -7225746, -3749507, -2728915, 1603097, -2321430, -6164889, -3083787, -16650514, +-4409858, -14125611, 1146756, -7423314, 5647882, -8086887, 3047816, -7775502, -2763275, -454730, +191663, 1240172, 1544578, -10329933, 4972499, -1544578, 2268280, -5406827, 127238, 8257075, +3323768, 11397769, 6409702, -3539053, -647466, -2437394, -1112933, -2801929, -3553012, -350040, +4812511, 2797634, 3648575, 1912334, -16167331, 10358387, 27681064, 10270341, -4088272, 13901735, +-8370892, 9832791, 6700149, -12359305, 3197603, -15665893, 795643, -5023501, -10881837, 6526740, +676457, 5102421, 7129646, 8711804, 13728863, 5988258, -463320, -2965675, -8542690, -15796353, +6252399, 6827388, 2254858, -5213554, 9276592, 1608465, 9776956, 5983963, -16454020, -5971615, +2788508, -12009265, 1152662, -426812, -1854889, 4143033, 3275986, -2467459, 13027710, -6747394, +1029182, 7487202, -5620502, 5295695, -2141041, -7095823, 5641440, 428960, -411780, 7697119, +5345087, 769873, -3147674, 15416248, 1272921, 8904004, 1467805, -4114042, -4526359, -11953431, +-4163971, 5775658, 360240, 5027796, -691490, -9141838, 4653060, 3834869, -13462038, 4785131, +8238821, -3202435, -27837830, -8932458, 29995514, 8675834, 5144834, -3969087, -381715, -4052839, +6431177, -9055402, 13313325, 7907035, 6438156, 6750615, -4210142, 87510, -177704, 4702989, +9040906, -12530030, -7438884, -3611531, 10262287, 4174171, 5850819, 6565395, -1075889, -8776766, +3351148, 1353989, 18316962, 14845018, 3979287, 11440719, 816581, -4539244, 2447058, -813359, +-2285996, 7652021, 8725226, 7753490, 17624936, 9172976, 6986301, 8427800, -7815767, -12206297, +-6003828, 6718403, -11011222, -4648765, 10790568, 12331925, 6292664, -4296578, 10118406, -3064459, +1034550, 3412352, 5717139, -1946694, -6496675, 4740034, -5930276, -16704202, 494458, 7112466, +-10124849, 2765422, -2224793, -788663, -2391760, -3629784, 13734232, 1529545, 6779606, 14075682, +22425098, -34235184, -5238787, 1489280, -707059, -4581120, -8845485, 8682813, -11215770, -17728014, +-2149094, 16171089, -2786897, -10396505, 2740726, -14321032, -7798050, -86973, 8462159, -15013595, +1278827, 15012521, 15787763, -263604, 5418101, 13353590, -8293582, -13269838, -17785460, 966905, +-17707614, -4490389, 7174206, 6153615, -15646029, -15399068, -9019968, 5475547, -4226248, -3565897, +-4148939, 13093745, -20786568, -6951942, 3207804, -12095165, -3838090, -905701, -13022341, -369367, +5484137, -1725503, 17302812, -2215130, -6736120, 355409, -593779, -6786049, 3638911, 7222525, +-7372848, 10741713, -5403606, -23796266, 1724966, -10260677, -3959423, -2310693, -1334661, -31500900, +-3579318, 11191074, 13600551, 4996658, 20577726, 12120398, -1787780, -32168232, 9126269, -5924371, +11128260, -10261214, 32749, 16921634, -5491116, 24007256, 5677410, 4637491, -10132365, 4536559, +12070469, -7337952, -1292248, 15472620, 10197863, 11620571, 1866163, -17993766, 11623792, -11661373, +-847719, -7084549, 2017561, -9037148, 5434744, -2472291, 5310727, 4639102, 8840653, 8500814, +9921374, -11662984, 3010772, 18025440, 4184372, -3557844, -3376918, -9483288, -7108708, -377957, +969589, 2915209, 15670725, 914828, 8777303, 7770133, -285615, -4412542, -3451543, 13411572, +-16014322, -4139275, -14149770, -12532178, -3081102, -613643, -23958938, 5506148, -7394860, 13957570, +-2891050, -303869, 10418517, 1054415, 24920474, 19362250, 29589640, 9918153, 1138166, -4804995, +-3313567, -6249715, -8935143, 13275744, -3216394, -2234457, 30227980, -5570573, -6044630, 33627448, +11811, 19396610, 14350559, 1709397, 8250632, -3821984, 6560563, 6369974, 4086662, 5305359, +15711527, -9865540, 18836116, -9454297, 108985, 4474282, -2073932, -12626667, -11516955, 388695, +-18956376, -5419175, -20751134, -668404, -12173011, -8582955, -6494528, -5195837, 3534758, -16133508, +20118164, 4006668, -12447889, -8629126, -237297, -1499481, -2769180, 6133750, 3082713, 20486458, +2601677, 906238, -9541270, 2821257, 4405026, 523986, -10188199, -3256659, 12585865, 14697378, +-367220, -9770514, 5058935, -589484, 17801028, 21073258, -7020124, -3042448, -2988760, 4364224, +-6749541, 10266582, -23224498, 619549, 29392072, -22103512, -11228118, -1165547, -3198677, 2415919, +-16920024, -9085466, -2333241, 13786308, 16502875, 11463805, -9907953, -25944824, 45978700, 11891154, +-28284508, -28309204, -3962644, 7378754, 19766514, -24566676, -4084514, 5097590, -40802, -3159485, +26458610, 6048925, -15044197, 8638253, 1376000, -287763, 14053133, -2061584, 7802345, -16587164, +-5503464, 30401390, 11322071, 24074366, 7701950, 21813066, 3972308, -7373922, 15239618, 14151917, +21660594, 11034308, -24011552, -8705362, 5430450, 12999255, -9548249, 4177930, -9206799, -15169288, +1735167, -1315871, -9231495, 7784628, 10269267, 9315247, 6542846, 6553047, -4525822, 16731045, +-52076, -15565498, -11630235, 15131707, 7952132, -24707874, 11038603, 5112085, 8170102, -21409338, +-15050639, 15016279, 22067006, 13430363, -4471061, 11529840, 21931176, 8823473, 23131084, 4371740, +10983842, 8269960, 38117836, 51502564, 4686346, 10755135, -31692026, -9749576, 20336670, -15981573, +39298412, -7152731, 6837588, 10888816, 23353348, 13012140, -4589710, -15884937, -18369038, -5870147, +-2335925, -23601920, -10562935, -9143449, 16273094, -8540542, 5455146, -15031312, 2929705, -5693516, +-21607980, 23730768, 17121350, 19151796, 9208947, -11172284, -10184441, -25901338, 1428614, -23343148, +-6212670, -1779190, 4081830, 12281996, 10506027, -7492571, -4446365, 10143639, 23106388, 6035503, +9451612, 16192027, -19569482, 14576045, -10695005, -10849624, -19796042, -9218074, 10429254, 7825968, +2203318, 23970212, -4523675, -9447317, 4367445, 5718749, 33757908, -11894375, 13349832, 11720966, +31660352, -7801808, 4412005, -14493904, -4347044, -19238232, 14842870, -27574764, 979253, -22238804, +4073240, 9236327, 3126736, -13379360, 44891000, -3360275, -6396817, 3925600, -26050588, 1304060, +-17718888, 430570, 4536559, -5372467, -951335, 10488310, -9815611, 255014, 13297219, 970663, +3067144, -22277458, 2412698, -2010582, -1798518, -5742908, -27890980, -15416248, 6342056, 2114735, +11734924, -31947040, 2998424, -29739964, 14531485, -20321638, -32807644, 16239271, 29276108, 5015448, +14124537, -22432078, 21553220, -5595269, 2741263, -13799193, 17831630, 7305740, 18523658, 5900748, +22587234, -21092048, 3400540, 1095754, -4221953, -16681653, -14207752, -15614890, 17149804, -4572530, +23552526, -14610942, -12058658, 3615826, 2799782, -11038603, 6558952, -53259740, 6030671, -17324824, +48413944, -9654013, -25128780, 9352828, -1867237, -25047176, -4661650, 3629247, -15258408, 36426692, +4782983, 3070902, 16284905, -21218212, -32391570, -20156282, 44565116, -4071092, -10040560, 29272886, +16312286, -14677514, -14583561, -8440148, 35223564, 4510790, -9196062, -14462229, -7231115, -28392956, +18322330, -3759170, 7129646, 17425220, -6844031, -29404956, -4041027, 36719824, -2105608, -9826885, +17440788, -8702141, 21762600, 14071387, -2408940, -28087476, -14545980, -4348118, -26001732, -15534897, +-15203647, 1398549, -4023848, 20896090, -15491410, -5816997, -618475, 54651312, 18695992, -10186589, +10666551, 5828808, -3777424, 27360016, 13135084, -11391864, 3901978, 21880174, 25203942, -16586090, +-11462731, -38712152, -29777546, -979253, -4214437, -4119411, -58133992, 22054120, -11239929, 33332168, +33819108, -17126182, 16775605, -30355756, -46455440, 2787971, -32216550, 6069326, -2691334, 27758910, +-17847736, 20297478, 17528298, 27876486, -38317552, 6062883, -22840100, -20624970, 3993246, -27103928, +-17034378, 27998354, -6045704, 11776800, 32220844, -4207458, 11719892, -23313082, 4569309, -25858388, +27469000, -21058224, -13573707, -14975477, 30511448, 25128780, -14698452, 33652680, 22713934, -4450660, +33166274, 543313, -31118648, -6775848, -1870458, -23321672, 7912404, -51982528, 7669201, -11207717, +-23874650, -18341658, 26803818, -11615202, 53118008, 40682468, -53755272, 3352759, 1502165, 6294275, +29391534, -40465572, -27284854, 34830036, -21218750, -26896696, -31493384, 8230231, 81992536, -6060199, +-17694728, -16972638, 7233799, 28412282, -30907122, 15931644, -52130164, -7668664, -20045150, -17603998, +28193240, -35678832, -55521044, 32863480, 49682572, 12096775, -9059160, -44558676, 3542811, 17645336, +18038862, -7369627, -17360258, 2356863, -3828427, -5754720, 6328635, -6504191, -14344117, -29212756, +4420058, -17564268, 5118528, -15755014, -32596654, 20777978, 16119549, 25525528, 1803349, 27588722, +16428787, 4132832, -7912941, -14139569, -21880710, -16458852, -8050916, 6453725, 17150878, -10728828, +-3787624, -38180112, 37249716, 42179800, 25218974, -21753472, 24427626, -29679298, 1557463, 6523519, +-62179852, 4954782, 8941048, 30073898, -35570384, 49158048, 22827214, -36159868, -16223702, 14163728, +-1440962, -27154930, -25900800, -36109400, -38504920, -5172751, -49177912, -6669011, 17754322, -23162222, +-21577916, 20136418, 20426328, 4051228, -19499152, -66521528, -9871445, 12862353, 7810398, 28667832, +-734976, 16610786, -4431333, -552440, -8454643, 1108102, 17488034, 1892470, 632971, 16937204, +-4639639, -4264903, -22523346, -2219424, -3679713, -2666638, 3799972, 13468481, 18561238, -3816079, +-38118, 14439143, -3338263, -28310814, -1954747, -25158844, 3631395, 3218541, -32743756, 23557896, +-45100376, 9899900, 12468827, -20008642, -1320166, 58289684, -16466368, 19506130, -12221329, 10184978, +-43658344, 4428112, 25878788, -1020055, 22419192, -5530308, 2660732, -1863479, 28745142, -18721762, +-21294984, 24480776, -22442814, -29431800, 638876, -46790984, 31940062, 23889682, -6993818, 7487202, +8075076, -4494684, -25497610, -74591232, -35720708, -12721693, 22726820, 52801792, -50736984, 9583146, +-15559593, -51158428, -8215736, 43624520, 10848551, 35720168, -32413044, 8044474, -12016245, 951872, +20599736, 2462090, 10644003, -8288750, -64826088, 17639968, 1925756, -28229210, 26532698, 19948512, +-20420422, 18351322, 1163399, -21932250, 5169530, -14011794, 38614440, 3679713, 14941654, -428423, +-41996728, -33891588, -12184822, -25417080, 25406342, 36992552, 38085624, 30415884, -12087112, 3246459, +-33237678, -5989332, -4378719, -14641544, -18056580, 1608465, 1954210, -45197552, -14058502, -18317498, +-2353105, 18705120, -22837952, -6012418, 6490233, -903554, 21563420, -26024818, -2161979, -29253560, +-16116865, -21652004, 10449655, 7279433, 21481278, -2794413, -3708704, -25053082, -10319733, 20130512, +-29841970, -120640800, -63213864, 14271639, 52133388, 115727896, 88446264, 50498076, 17467632, 26938572, +-7336341, -46941844, -92414808, -122707752, -30617212, -34617436, 2576981, 61747136, 86816320, 59153512, +77815144, 19196894, 16952236, -7561827, -38495792, -42719892, -35253092, -36458904, -46524160, -36095444, +-15691126, -797253, -209380, 31784368, 39398808, 76432168, 35572528, 13379897, 30887258, 49488760, +15350213, 10948409, -38395932, -50771884, -86069000, -37834368, -45210436, -30672508, -19592030, -13209709, +6142340, 12723841, 35863512, 76292576, 59180356, 67311264, 47605956, 61343944, 43209520, -33127082, +-33443836, -79582520, -64638720, -43979928, -105840344, -78230680, -51138564, 6545530, 61172144, 62970128, +68470368, 91634200, 72222024, 42875584, 42804716, -396748, -32700270, -33023466, -18997714, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, { 8451959, --1050656, 4005057, -1381906, -127775, 7632694, -4049081, -380105, 2151242, -797790, 2536178, -2909304, -6616397, 2668785, 2490544, 1421634, -319438, -2156074, 4530117, -5764920, -4878546, --1060857, 125628, 2349347, -4952098, -3628174, -526670, -3215320, 5291400, 282394, -2252174, -4214974, -3853660, 467615, -863288, -2269890, -351114, 3287798, 3337190, 1994476, 5168457, -4294431, -389768, 1335198, -2173254, 5496485, 3415573, -2423972, 563178, 770947, 543313, --3294240, 2905546, 1016834, -513249, 5833640, -3114925, -3484829, -482110, 1784022, 363998, --705985, -2178085, -1389422, 1809792, -1567663, -386547, -1182727, 1895691, -774705, 4364761, -2157684, -2896419, -1624571, 2457795, -2684355, -1497333, -2153389, -4194036, 2537789, 4019553, -7099581, 1950452, -4884989, -8747775, 1969779, -4063039, 412317, 2805688, 1138166, 7159711, --5819681, -1408212, -732829, -426276, -4983236, 3151969, 1389959, 687732, 209917, -2430952, --1822677, -1751810, -498753, 281857, 1270237, -1828046, 2793339, 6403796, -118648, 2862059, --4430259, -2592550, -5316633, -2579665, 5836861, 303332, -1075352, 1049046, 6192269, 684510, -3167539, -743029, -2752000, -869731, 3588982, -2962454, 5573794, 3388192, 6274947, 3065533, -517007, -1855426, -3948686, -2231773, -3409130, -514859, -2442763, 1059783, 382789, -1352915, -1067299, -1148904, 2379949, -489626, -412317, 3190624, -94489, -110595, 659814, -2837900, -1650341, -12275553, -2781528, 5029407, 882079, 6856916, 3661460, -5656472, 1491964, -131533, -2252174, -2033130, -9417790, 5428839, 3339874, 6220724, 7799661, 6694244, 2362232, 75162, --9587978, -1006633, 4423280, -4395899, -3781182, -10044855, -653909, -1698123, -1137630, -2573759, -1212791, -6007586, 2757369, -1073742, 2564096, 719944, -3988951, 3078418, 2629594, 6925635, --767189, -5599027, -2830384, 2984466, 1263794, -1425392, 345208, 2186675, 351650, -4103305, -31139, 822486, -357019, 222265, -2484102, -1162862, -3326989, -741956, 4316442, 1467268, --1322313, 1760400, -415001, -256087, 789737, -4925791, -275952, -280247, 2936684, 5255966, --1321239, -565325, -3110630, -2667712, 1753957, 6010270, -4706211, -855235, 445603, -411780, --1437740, 1032940, -1431298, 6769942, 2534031, 2275796, -2288681, 160524, 627602, 631897, --11664594, -6321118, -536334, -2917894, -3614215, -197032, -3041911, -11877732, 7065758, 1609539, -3198677, -1263794, 2435783, -3150359, 153545, 412854, 6117107, -2185602, -1278827, -1032940, --1022202, -987306, -418222, 6614787, -1264868, -105227, -3751654, -215822, -1796907, 2150705, -1117228, -6416145, 5007932, -6491306, -87510, 5702106, -774705, 223338, 479426, -117575, --3929358, -2809446, 6595459, 3805341, -8042863, -4301410, 1349157, -4721780, -3380676, 3513283, --5754720, 1187022, 1494649, 3398930, 7050726, 5413270, 3351685, 2581275, -4668093, -4852240, --4183835, 1473711, 6044093, 2384781, 8946954, -2146410, -2235531, -2638721, 2557653, -2959769, -4405026, -8425652, -1030255, 6290517, 3337727, -6336688, 4762582, 7734699, 7349226, 4658966, -959388, -279710, -4691715, -6136972, 2683281, -586800, 6240051, -482110, 3769371, -3839701, --2462627, -2063732, 706522, 1955284, -246424, -7512435, 1691143, 2587181, 2001992, 3220152, -2105608, -4089346, -9898289, -3248069, 1603633, 1911797, 615254, -454193, 2054068, -4140349, -93416, -7499013, 3662533, -7738458, -1850594, -3300682, -4878009, 3666828, 1843615, 1533840, --4206384, -2190433, -1064078, -4479114, 678605, -415001, 2654290, -1942399, -3433290, -2892124, --8534100, 2782065, 1405528, 3776350, 6047314, 7145215, 3297998, -2857227, -3630858, -2007360, -4552666, 4534412, 4194573, -631897, 2991445, -8531953, 1096290, -4032438, 534723, 1363652, --5331128, 2057826, 15927349, 1814624, -1316944, -8835821, 12838194, 56371, 5441187, 719944, --181462, -6844568, 6817187, 1816771, -3635690, 970663, 595390, -2675765, 2808909, 7189776, --1977296, 7641284, -2145873, 3325379, -31139, 5076115, 4510790, 5058398, 145492, -2594697, -3974992, -2736431, 3513820, -865973, 3543348, 3468723, 3310346, -296353, -886911, 1414655, --2684355, -3898757, -10197326, 6874095, -6550899, 4808216, 712965, 2120103, -1076963, -12121471, --2528662, -3134789, -5843303, 1015223, 3883724, -7672422, -2321430, 3814468, 858457, 5873905, -9985262, 76236, -2349884, -1908039, -9756555, 3675955, 2516851, -1219234, -4633196, -5568962, --663036, 2785286, -1874753, -2760053, -4093104, 1017370, 7065758, 3090229, 1000191, -16507170, --7645042, -2420751, 3218004, -2093260, 5408438, 18541374, 5682779, -6998113, 941135, -8254391, --2753611, 5548561, -6582575, -1780264, 8215199, 1871532, -2201171, 1045288, 4601521, -2974802, -2178085, 2336999, 2343442, -4777614, 2020245, -2312303, -2742874, -6992744, -2754148, -4148939, --7710540, 3191161, 190589, -667867, 7639136, 5475010, 1920387, 6031745, -6979, -7991861, -6565932, -907849, -5384279, -4397510, -7793755, 183073, 9400610, 462783, -4092030, 3800509, --6921877, -4574140, 3715684, -5869610, -7386270, -4189204, -2180233, 3973919, -6387153, -2373506, --2731599, 8142721, 1757179, -3579318, 5452998, 3866008, -10851235, 9821516, -4022237, 670015, --4861903, 8362838, -1437203, -6085432, -19165754, -2807835, 9640054, 2152852, -14972793, 6448357, --194347, -3323231, -4916127, -4143570, -1627793, -9100499, -1641751, 6793028, 9105868, 10692858, -6546604, 9715753, -3420405, 7576859, 3693672, -15954193, -476205, 3716221, 5448703, 2349347, --5467494, -56371, -1195075, 5140002, -9415642, -3744675, 6915971, -2685428, 3886946, 1656247, --6242198, -7333657, -3564823, -10797011, -2922188, -3620658, 4314295, 1097901, -5923834, -1843615, --12713103, -3715147, 5369783, -4252555, -12497818, -722628, 7401303, -15935939, 4705674, 1946694, -5178657, -7955353, -3044595, -7675644, 930934, -2953864, -7409356, -3148211, -882616, 3207267, --11293617, 3095061, 9923522, 12612708, 9561134, 9700184, 4088272, -5977521, 7006703, 11660299, --16084116, 8756901, 8888435, -17399450, -4107599, 4776004, 19784230, -1107565, -629213, -4195646, --4774393, 24132348, 12403329, 3666292, 3609920, 12676059, 428960, -1533840, -3935801, 2173790, --9998147, -9327595, -1494112, 3298535, 7879655, 3546032, 2373506, -3351685, 1465658, -7567733, -4063576, -11361799, 12219182, -1018981, -4824322, -6441377, -6746857, -11500312, 2943663, -11137924, --2867965, 8001524, -821413, -3698504, -2706366, -1642288, -8634495, -6590091, -3247532, -3998615, --1030255, 3692598, 3245922, 689879, 1843078, -8511015, 16184511, 8535174, 1707786, -1082332, -21042118, -2384244, -1640141, -4872641, -8039105, -2890513, 21776558, 7364795, 4509179, 10518375, --12122545, -7321309, 6726456, 7198365, 16112033, 2256469, 4387846, -11032697, -775778, 5312875, --14499810, -4711043, 5604933, -4875862, 28991, 3848291, 10455561, -3678640, 3983045, 2097018, -2162516, 8988830, 7713225, 9586367, -7794292, -5158793, 10268193, -13349295, -4617090, -4474282, --1107028, -3665755, -8712878, 8186745, -533113, -9229885, 185757, -3682398, -9801115, -11962021, --6883759, -7202660, 13765907, -4553739, -3872450, -8405251, -1001801, -4322348, 1846836, 16479790, --3448322, -5513128, 2458332, -1083942, 9176198, -11203422, 18369576, 3643206, -18497350, -13269301, -4301947, -12315819, -298500, -13200045, -482110, 2571075, -2263448, 13807246, 16957068, -8705362, -1364189, -3905736, -17972290, 8464307, 40892920, -5654862, 764504, -16159814, -6083285, 12994960, --486942, 23966992, 14901389, 13842143, 1325534, 10960757, -17379048, 18161806, 10033044, 2024003, -3473555, -9572945, 5958731, 1067836, 18548890, 10868952, 12795244, -2949032, 2418067, 4247723, --10295037, -8112657, -2943126, 6557878, 21483964, -4321274, -5451387, -5586142, -2470680, 3904125, --11425150, -2422899, 559956, -5547487, -12132209, -1541356, -15749645, -4913980, 11607686, -10603201, --3712999, -975494, 2513630, -17981418, -10101226, -1094143, -394063, -2234994, 13909788, 6881612, -2549063, 8923868, 14392972, -6155225, -1342177, -8916352, 6764574, -6585796, 9126806, 9956808, -11922829, 19704774, 7303592, -11287174, 213138, 32093606, 12188580, 19475530, 10287520, 20185810, -22172768, -22948010, 5315559, 16283295, 9824738, -6668474, -12236362, -10801306, 23211078, 1512902, -8652748, 11831024, -7102266, 3002719, 5035313, -14792404, -15279346, 11843909, 4149475, -22681186, --5138929, 28200756, 13791677, -664646, -16399796, 4744328, 4357781, 16821776, 5848135, -9246528, -11541651, 1273995, -4706748, -2457795, -3324305, -14489072, -6287832, 1206349, 2550137, -17229798, --17365626, -11398306, -4794257, -20397336, 11785927, -2318209, -13426605, 1444183, 681826, -7215008, --1272384, 2819646, 323196, 2945811, 5553393, 6265821, -7125888, -10730976, 12575127, 22536230, -11650636, 4691715, 18444200, -5475547, 10443213, 21259552, 15316390, -460098, 3595425, -10480257, --13404593, 10415296, -12586939, 1658931, -4197794, -1895691, -4649839, -21268142, 5929739, -10270341, --4752382, -7945690, -1364726, 18147310, 17976048, -36458368, 11241540, 11529303, -11344619, -18562312, --24189256, 4232691, -7125351, 4444218, -8458938, -6662031, -3947075, 22521734, 5688148, -1988570, --408559, -3615289, -6758131, 5682242, 3735548, -124017, 9033390, 1950452, -1916629, 3209951, -8205535, 23262080, 2340220, 2859375, -11494406, -4924717, -5433134, -5787469, -687195, -1930588, -7733089, 11145977, 561567, 12880607, -2945274, -2149094, -2581812, -1399623, -22490060, 25483114, -738734, 1855426, -1770600, -6548752, 6876780, -1665374, 10481331, 680752, -9687836, 2789581, -11186242, -7647726, 10467372, 2650532, -15173583, -2428267, -2822331, -27984934, -8971650, 7703024, -8301635, -10651519, -6985228, 17437030, 4248260, 4590783, -14682346, 8998493, -6522445, 8508330, --8665633, 11293080, -12411919, -10430865, 16063715, 937914, 3323231, -11413339, -23871428, -3415573, -5624260, 523986, 8753680, -9419400, 233539, -1400696, -18067316, -13594108, 4619774, -20579336, --13626321, 4780299, -929324, -21507048, -3883724, -11438572, 11824582, 6251325, 1318018, -6167036, --13597866, -28297928, 8459475, -13548474, 13677860, -6014565, -5881958, -4119411, -8086887, 2390149, -2864206, -23156854, -10424422, 19272592, 17464410, -20918638, 23771570, -680215, 17251274, -6419366, --5337034, -4459250, -8152385, 7175817, -8046085, -22422950, -11568494, 21100638, -6272800, -7649874, --2279554, 4160213, 3767223, 8360154, -28190018, 3748970, 17729624, 9107478, 12858058, 9977746, --9597104, -16441672, -13732621, -8100309, -15912317, -888521, 7692287, 17566954, -2911451, -859530, --29270202, 17590038, 22109954, -3520800, -11745662, -12174622, -7307350, 32969242, -19888920, -140123, --2127620, 8838506, -1211181, 37966976, 1220308, -20799990, -5134634, -19777250, 26030724, 22235046, --17656610, 20906828, 5662915, 16807280, 6757058, -31873490, 10426033, 16886200, -21505438, -6212670, --24432458, -12581033, 1437740, -23098334, -19010062, -651224, -15240691, -303332, 6298033, -5757941, --15010911, 12903692, 12557948, -25987774, -18966038, 10865730, 5531918, 7028177, 14197551, 17304424, --5206037, -9165460, 694174, -5791227, 1025960, -1545115, -7202124, 4018479, -34339336, 13113609, -19523310, -17299592, -12883828, 13928042, -8058970, 9393093, 21336860, 38994544, 60745868, 3099356, --22794466, -29632590, -6031745, 2560338, -6174016, 30230128, 22857280, 16339129, 26286810, 19640348, -15934866, 2375117, 13049184, -14072460, 22879290, 26559004, 2819109, 27588186, -9682467, 3581466, -7146289, -22963042, -15353971, -4323959, -13480829, -15631533, -1516124, 28389734, 634581, -3675418, -4328254, 7279433, -2690797, -34914328, -4066260, 11108396, -4476430, -9582609, 5377299, 15715285, -25884694, 7812009, 13579613, 19380504, 22611930, -28460064, -20162188, 13574781, -8055748, 40103184, --3314641, 34762928, -25971668, 17557826, 27453430, 2892124, 4893579, 18051748, -28616830, -11525545, -1158567, 18671296, 798864, 21272436, 8010651, 9459665, 19674172, 9458055, -2409477, -5590437, -42235636, 13817984, 14554034, 30732102, -2724620, 6260452, 13064754, 19662360, -22706956, -18105434, --8092792, -19811610, -3972845, -26506928, 12929999, 20733954, 14711337, 20607790, -14659260, -7982197, -15426986, 12321724, -9486509, 20953534, 11962021, -5000953, -26590680, 14223321, 14913200, -13249974, --2801393, 7437273, 2835752, -20915416, 23072028, 6338835, 24792698, 14001593, 9078487, -14050449, -10954851, -7478075, 38156488, -30973694, 2223719, 11830487, -7096360, -19996294, 11475616, 12492986, --3788698, 12291123, -13369159, 32006096, -16301012, 8416525, 5440650, -20369420, -10414759, -28129888, -10275709, 8144869, -22622130, 19390166, 14870787, -14604499, 10088341, -1765232, 30564062, 10329396, --18207440, -12315282, -13548474, 9660992, -8450348, 7858180, -4532264, -36711232, 17929878, -31152472, -34447784, 41177464, -1061931, 8111583, -31522912, 810138, -6211597, 4440996, 20010790, 20517058, --4682051, 11184095, 16815334, 3629247, 7677254, 5683316, 7592966, -2983929, 24030342, -2059974, -6286222, -11658689, 26914412, 6756521, -1347009, 316217, 24337970, 10082973, 12067247, 26895086, --4637491, -14694157, 32668594, -32347010, -13384192, -4601521, 8556112, 23443006, 6291590, -7881802, --8249022, -14943802, 806917, -1677185, 7606924, 36912560, 35777076, 23319524, 32403380, -1487669, -48206712, -14312979, 14326400, -9714142, 2354716, 16297790, -5976447, 3321620, -12820477, -16533477, -1640678, -9648107, 10990821, -13589277, 24669218, -15272904, -26581016, -9090835, -5506685, 600759, -35863512, -16127065, -2071248, 10774462, 9165997, -1466731, -14870251, 56870736, 79799952, 23205708, -61911416, -15641734, -45500884, -32698660, -22987738, 8834211, 10288594, -16600049, -25008520, 18555870, -26280368, 14107894, 26243324, 19163608, 3987340, 6322192, 2929168, -3563749, -19315542, 5743982, --22642530, 12808666, -1023276, -22470732, 22143778, 11625940, 10016401, 37681360, 23613194, -14151917, --8854075, -17184164, -18235358, -23813446, -9354976, -2068027, -17672180, -8162586, 33703144, 49585396, -37790344, 2076617, 25468620, 24894168, 42184096, 16276315, -23925652, -41263900, -24479166, -27828704, -13157632, 7897371, -52451752, -39490612, -10151155, 17193290, 45667312, -39780524, -2535641, -35471060, --5162014, 32793686, -22349936, 8513699, -31977106, -11441256, -10814728, 18580028, -30768072, -2827162, --6183679, -23607288, -45337136, 4906464, 24258512, -21239150, 37920268, -15906948, 14666776, -5639829, --45257144, -23310934, -2863670, -26685168, -60890824, -17318918, 20971788, 32964948, -17052094, -26159036, --54469312, -16335371, 15053860, -11021960, -16377784, -26999238, 5496485, -6315750, -5383205, -5267778, -9965935, 21346524, -17691508, 16488916, 13278428, -17103634, -49970332, 3905199, 2973728, 12598213, -4884452, 32061394, 2174864, -48663592, -781147, -53537304, -1395864, 18804978, 21263846, -3908420, -1720671, 25265682, -14360223, -9076340, -18197776, 16666084, 10265509, -7081864, 17659832, -5220533, -6402186, 9899363, 29651380, 5332739, -13194140, -32343788, -13838921, 19164144, 12700218, 28839632, -36204428, 70160976, 30447560, 19836306, -20942260, 3683471, -43650828, -13222057, 30419106, -14867029, --12541841, -3118146, -9807021, -34893924, -38969312, -56822416, -18020610, 292595, -4454955, 37504728, -10207527, 48947056, 29990146, 15338939, -6883759, -17726404, -3445101, 68624984, 4145180, 20021526, -10993506, -8220568, 33928632, -13816910, 27357332, -29587492, -3108483, -21172042, 25728464, -35945656, --7808788, 11657615, 11335492, 12257300, -31978716, 23266374, -36581312, 8058970, -17991082, -11521250, -36134096, 2908230, 2256469, 13308493, -13886166, 83215, 9367861, -43257836, 1094680, 11260867, --6518150, 29652992, -12815646, -4296041, 47886200, -16738024, -39893268, 1691143, -15042586, 5028870, --2957085, -20401, -31891206, 19564650, -5020280, -40658844, 26588532, -50195820, 11048803, -6836514, --19999516, -23545010, -19953344, -67781560, -69590816, -59609316, -30511984, 119918712, 36913632, -16234976, --16755741, -61025580, -127769912, -15463493, 33113660, 41325640, 17326434, -20732880, -15533823, -38619808, --42073500, 29683056, -30547418, 75022344, 56337088, -90324232, 27922656, 10347650, -19498614, 5549635, -63082332, 7756711, 43291124, 86062552, -19818052, -73271072, 2629057, -13713294, -67652712, -19745576, -31675920, -4460324, 39187820, 62776316, 5165772, -57321708, -109691856, -95320896, -84256520, -10429254, -80771152, 21488258, 21316996, 10518375, -22342420, -111145704, -68651832, -36815924, -13439490, 4904316, -24737938, 22167400, 30989800, 29719564, 39586712, -49110268, -16549046, -40630392, -2661806, -44309032, -27115740, 24116778, 54941760, 57648124, 30118996, -904628, -13580150, -11682848, -68886440, 15736223, --16117939, -128925792, -143614048, -99853696, -102725416, -32651952, 99187440, 64714420, 107572288, 121130424, -187188640, 122314760, 126241440, 79387640, -14328011, -103234904, -174217296, -203526160, -178469856, -141460656, --105233680, -30314952, -12814572, -20751672, -2947421, 35744328, 61795452, 90229208, 76147088, 108240696, -102761928, 136818336, 122899952, 30600032, 79841296, -25115896, 15991237, 11803107, -3085397, -17910550, --135643120, -158732320, -203862768, -235060336, -216877600, -121230280, -111196168, -89771792, -114315384, -127633008, --34331820, 25818122, 69330976, 109303696, 156022208, 192342592, 243605184, 328796928, 314514016, 242500288, -191211408, 164025872, 80542984, 138817632, -62445068, -111236968, -275958624, -305650816, -389216928, -362261696, --340122208, -306928576, -307014464, -165308992, -104239928, -2929705, 216135632, 169441824, 112524920, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-1050656, 4005057, -1381906, -127775, 7632694, -4049081, -380105, 2151242, -797790, 2536178, +2909304, -6616397, 2668785, 2490544, 1421634, -319438, -2156074, 4530117, -5764920, -4878546, +-1060857, 125628, 2349347, -4952098, -3628174, -526670, -3215320, 5291400, 282394, -2252174, +4214974, -3853660, 467615, -863288, -2269890, -351114, 3287798, 3337190, 1994476, 5168457, +4294431, -389768, 1335198, -2173254, 5496485, 3415573, -2423972, 563178, 770947, 543313, +-3294240, 2905546, 1016834, -513249, 5833640, -3114925, -3484829, -482110, 1784022, 363998, +-705985, -2178085, -1389422, 1809792, -1567663, -386547, -1182727, 1895691, -774705, 4364761, +2157684, -2896419, -1624571, 2457795, -2684355, -1497333, -2153389, -4194036, 2537789, 4019553, +7099581, 1950452, -4884989, -8747775, 1969779, -4063039, 412317, 2805688, 1138166, 7159711, +-5819681, -1408212, -732829, -426276, -4983236, 3151969, 1389959, 687732, 209917, -2430952, +-1822677, -1751810, -498753, 281857, 1270237, -1828046, 2793339, 6403796, -118648, 2862059, +-4430259, -2592550, -5316633, -2579665, 5836861, 303332, -1075352, 1049046, 6192269, 684510, +3167539, -743029, -2752000, -869731, 3588982, -2962454, 5573794, 3388192, 6274947, 3065533, +517007, -1855426, -3948686, -2231773, -3409130, -514859, -2442763, 1059783, 382789, -1352915, +1067299, -1148904, 2379949, -489626, -412317, 3190624, -94489, -110595, 659814, -2837900, +1650341, -12275553, -2781528, 5029407, 882079, 6856916, 3661460, -5656472, 1491964, -131533, +2252174, -2033130, -9417790, 5428839, 3339874, 6220724, 7799661, 6694244, 2362232, 75162, +-9587978, -1006633, 4423280, -4395899, -3781182, -10044855, -653909, -1698123, -1137630, -2573759, +1212791, -6007586, 2757369, -1073742, 2564096, 719944, -3988951, 3078418, 2629594, 6925635, +-767189, -5599027, -2830384, 2984466, 1263794, -1425392, 345208, 2186675, 351650, -4103305, +31139, 822486, -357019, 222265, -2484102, -1162862, -3326989, -741956, 4316442, 1467268, +-1322313, 1760400, -415001, -256087, 789737, -4925791, -275952, -280247, 2936684, 5255966, +-1321239, -565325, -3110630, -2667712, 1753957, 6010270, -4706211, -855235, 445603, -411780, +-1437740, 1032940, -1431298, 6769942, 2534031, 2275796, -2288681, 160524, 627602, 631897, +-11664594, -6321118, -536334, -2917894, -3614215, -197032, -3041911, -11877732, 7065758, 1609539, +3198677, -1263794, 2435783, -3150359, 153545, 412854, 6117107, -2185602, -1278827, -1032940, +-1022202, -987306, -418222, 6614787, -1264868, -105227, -3751654, -215822, -1796907, 2150705, +1117228, -6416145, 5007932, -6491306, -87510, 5702106, -774705, 223338, 479426, -117575, +-3929358, -2809446, 6595459, 3805341, -8042863, -4301410, 1349157, -4721780, -3380676, 3513283, +-5754720, 1187022, 1494649, 3398930, 7050726, 5413270, 3351685, 2581275, -4668093, -4852240, +-4183835, 1473711, 6044093, 2384781, 8946954, -2146410, -2235531, -2638721, 2557653, -2959769, +4405026, -8425652, -1030255, 6290517, 3337727, -6336688, 4762582, 7734699, 7349226, 4658966, +959388, -279710, -4691715, -6136972, 2683281, -586800, 6240051, -482110, 3769371, -3839701, +-2462627, -2063732, 706522, 1955284, -246424, -7512435, 1691143, 2587181, 2001992, 3220152, +2105608, -4089346, -9898289, -3248069, 1603633, 1911797, 615254, -454193, 2054068, -4140349, +93416, -7499013, 3662533, -7738458, -1850594, -3300682, -4878009, 3666828, 1843615, 1533840, +-4206384, -2190433, -1064078, -4479114, 678605, -415001, 2654290, -1942399, -3433290, -2892124, +-8534100, 2782065, 1405528, 3776350, 6047314, 7145215, 3297998, -2857227, -3630858, -2007360, +4552666, 4534412, 4194573, -631897, 2991445, -8531953, 1096290, -4032438, 534723, 1363652, +-5331128, 2057826, 15927349, 1814624, -1316944, -8835821, 12838194, 56371, 5441187, 719944, +-181462, -6844568, 6817187, 1816771, -3635690, 970663, 595390, -2675765, 2808909, 7189776, +-1977296, 7641284, -2145873, 3325379, -31139, 5076115, 4510790, 5058398, 145492, -2594697, +3974992, -2736431, 3513820, -865973, 3543348, 3468723, 3310346, -296353, -886911, 1414655, +-2684355, -3898757, -10197326, 6874095, -6550899, 4808216, 712965, 2120103, -1076963, -12121471, +-2528662, -3134789, -5843303, 1015223, 3883724, -7672422, -2321430, 3814468, 858457, 5873905, +9985262, 76236, -2349884, -1908039, -9756555, 3675955, 2516851, -1219234, -4633196, -5568962, +-663036, 2785286, -1874753, -2760053, -4093104, 1017370, 7065758, 3090229, 1000191, -16507170, +-7645042, -2420751, 3218004, -2093260, 5408438, 18541374, 5682779, -6998113, 941135, -8254391, +-2753611, 5548561, -6582575, -1780264, 8215199, 1871532, -2201171, 1045288, 4601521, -2974802, +2178085, 2336999, 2343442, -4777614, 2020245, -2312303, -2742874, -6992744, -2754148, -4148939, +-7710540, 3191161, 190589, -667867, 7639136, 5475010, 1920387, 6031745, -6979, -7991861, +6565932, -907849, -5384279, -4397510, -7793755, 183073, 9400610, 462783, -4092030, 3800509, +-6921877, -4574140, 3715684, -5869610, -7386270, -4189204, -2180233, 3973919, -6387153, -2373506, +-2731599, 8142721, 1757179, -3579318, 5452998, 3866008, -10851235, 9821516, -4022237, 670015, +-4861903, 8362838, -1437203, -6085432, -19165754, -2807835, 9640054, 2152852, -14972793, 6448357, +-194347, -3323231, -4916127, -4143570, -1627793, -9100499, -1641751, 6793028, 9105868, 10692858, +6546604, 9715753, -3420405, 7576859, 3693672, -15954193, -476205, 3716221, 5448703, 2349347, +-5467494, -56371, -1195075, 5140002, -9415642, -3744675, 6915971, -2685428, 3886946, 1656247, +-6242198, -7333657, -3564823, -10797011, -2922188, -3620658, 4314295, 1097901, -5923834, -1843615, +-12713103, -3715147, 5369783, -4252555, -12497818, -722628, 7401303, -15935939, 4705674, 1946694, +5178657, -7955353, -3044595, -7675644, 930934, -2953864, -7409356, -3148211, -882616, 3207267, +-11293617, 3095061, 9923522, 12612708, 9561134, 9700184, 4088272, -5977521, 7006703, 11660299, +-16084116, 8756901, 8888435, -17399450, -4107599, 4776004, 19784230, -1107565, -629213, -4195646, +-4774393, 24132348, 12403329, 3666292, 3609920, 12676059, 428960, -1533840, -3935801, 2173790, +-9998147, -9327595, -1494112, 3298535, 7879655, 3546032, 2373506, -3351685, 1465658, -7567733, +4063576, -11361799, 12219182, -1018981, -4824322, -6441377, -6746857, -11500312, 2943663, -11137924, +-2867965, 8001524, -821413, -3698504, -2706366, -1642288, -8634495, -6590091, -3247532, -3998615, +-1030255, 3692598, 3245922, 689879, 1843078, -8511015, 16184511, 8535174, 1707786, -1082332, +21042118, -2384244, -1640141, -4872641, -8039105, -2890513, 21776558, 7364795, 4509179, 10518375, +-12122545, -7321309, 6726456, 7198365, 16112033, 2256469, 4387846, -11032697, -775778, 5312875, +-14499810, -4711043, 5604933, -4875862, 28991, 3848291, 10455561, -3678640, 3983045, 2097018, +2162516, 8988830, 7713225, 9586367, -7794292, -5158793, 10268193, -13349295, -4617090, -4474282, +-1107028, -3665755, -8712878, 8186745, -533113, -9229885, 185757, -3682398, -9801115, -11962021, +-6883759, -7202660, 13765907, -4553739, -3872450, -8405251, -1001801, -4322348, 1846836, 16479790, +-3448322, -5513128, 2458332, -1083942, 9176198, -11203422, 18369576, 3643206, -18497350, -13269301, +4301947, -12315819, -298500, -13200045, -482110, 2571075, -2263448, 13807246, 16957068, -8705362, +1364189, -3905736, -17972290, 8464307, 40892920, -5654862, 764504, -16159814, -6083285, 12994960, +-486942, 23966992, 14901389, 13842143, 1325534, 10960757, -17379048, 18161806, 10033044, 2024003, +3473555, -9572945, 5958731, 1067836, 18548890, 10868952, 12795244, -2949032, 2418067, 4247723, +-10295037, -8112657, -2943126, 6557878, 21483964, -4321274, -5451387, -5586142, -2470680, 3904125, +-11425150, -2422899, 559956, -5547487, -12132209, -1541356, -15749645, -4913980, 11607686, -10603201, +-3712999, -975494, 2513630, -17981418, -10101226, -1094143, -394063, -2234994, 13909788, 6881612, +2549063, 8923868, 14392972, -6155225, -1342177, -8916352, 6764574, -6585796, 9126806, 9956808, +11922829, 19704774, 7303592, -11287174, 213138, 32093606, 12188580, 19475530, 10287520, 20185810, +22172768, -22948010, 5315559, 16283295, 9824738, -6668474, -12236362, -10801306, 23211078, 1512902, +8652748, 11831024, -7102266, 3002719, 5035313, -14792404, -15279346, 11843909, 4149475, -22681186, +-5138929, 28200756, 13791677, -664646, -16399796, 4744328, 4357781, 16821776, 5848135, -9246528, +11541651, 1273995, -4706748, -2457795, -3324305, -14489072, -6287832, 1206349, 2550137, -17229798, +-17365626, -11398306, -4794257, -20397336, 11785927, -2318209, -13426605, 1444183, 681826, -7215008, +-1272384, 2819646, 323196, 2945811, 5553393, 6265821, -7125888, -10730976, 12575127, 22536230, +11650636, 4691715, 18444200, -5475547, 10443213, 21259552, 15316390, -460098, 3595425, -10480257, +-13404593, 10415296, -12586939, 1658931, -4197794, -1895691, -4649839, -21268142, 5929739, -10270341, +-4752382, -7945690, -1364726, 18147310, 17976048, -36458368, 11241540, 11529303, -11344619, -18562312, +-24189256, 4232691, -7125351, 4444218, -8458938, -6662031, -3947075, 22521734, 5688148, -1988570, +-408559, -3615289, -6758131, 5682242, 3735548, -124017, 9033390, 1950452, -1916629, 3209951, +8205535, 23262080, 2340220, 2859375, -11494406, -4924717, -5433134, -5787469, -687195, -1930588, +7733089, 11145977, 561567, 12880607, -2945274, -2149094, -2581812, -1399623, -22490060, 25483114, +738734, 1855426, -1770600, -6548752, 6876780, -1665374, 10481331, 680752, -9687836, 2789581, +11186242, -7647726, 10467372, 2650532, -15173583, -2428267, -2822331, -27984934, -8971650, 7703024, +8301635, -10651519, -6985228, 17437030, 4248260, 4590783, -14682346, 8998493, -6522445, 8508330, +-8665633, 11293080, -12411919, -10430865, 16063715, 937914, 3323231, -11413339, -23871428, -3415573, +5624260, 523986, 8753680, -9419400, 233539, -1400696, -18067316, -13594108, 4619774, -20579336, +-13626321, 4780299, -929324, -21507048, -3883724, -11438572, 11824582, 6251325, 1318018, -6167036, +-13597866, -28297928, 8459475, -13548474, 13677860, -6014565, -5881958, -4119411, -8086887, 2390149, +2864206, -23156854, -10424422, 19272592, 17464410, -20918638, 23771570, -680215, 17251274, -6419366, +-5337034, -4459250, -8152385, 7175817, -8046085, -22422950, -11568494, 21100638, -6272800, -7649874, +-2279554, 4160213, 3767223, 8360154, -28190018, 3748970, 17729624, 9107478, 12858058, 9977746, +-9597104, -16441672, -13732621, -8100309, -15912317, -888521, 7692287, 17566954, -2911451, -859530, +-29270202, 17590038, 22109954, -3520800, -11745662, -12174622, -7307350, 32969242, -19888920, -140123, +-2127620, 8838506, -1211181, 37966976, 1220308, -20799990, -5134634, -19777250, 26030724, 22235046, +-17656610, 20906828, 5662915, 16807280, 6757058, -31873490, 10426033, 16886200, -21505438, -6212670, +-24432458, -12581033, 1437740, -23098334, -19010062, -651224, -15240691, -303332, 6298033, -5757941, +-15010911, 12903692, 12557948, -25987774, -18966038, 10865730, 5531918, 7028177, 14197551, 17304424, +-5206037, -9165460, 694174, -5791227, 1025960, -1545115, -7202124, 4018479, -34339336, 13113609, +19523310, -17299592, -12883828, 13928042, -8058970, 9393093, 21336860, 38994544, 60745868, 3099356, +-22794466, -29632590, -6031745, 2560338, -6174016, 30230128, 22857280, 16339129, 26286810, 19640348, +15934866, 2375117, 13049184, -14072460, 22879290, 26559004, 2819109, 27588186, -9682467, 3581466, +7146289, -22963042, -15353971, -4323959, -13480829, -15631533, -1516124, 28389734, 634581, -3675418, +4328254, 7279433, -2690797, -34914328, -4066260, 11108396, -4476430, -9582609, 5377299, 15715285, +25884694, 7812009, 13579613, 19380504, 22611930, -28460064, -20162188, 13574781, -8055748, 40103184, +-3314641, 34762928, -25971668, 17557826, 27453430, 2892124, 4893579, 18051748, -28616830, -11525545, +1158567, 18671296, 798864, 21272436, 8010651, 9459665, 19674172, 9458055, -2409477, -5590437, +42235636, 13817984, 14554034, 30732102, -2724620, 6260452, 13064754, 19662360, -22706956, -18105434, +-8092792, -19811610, -3972845, -26506928, 12929999, 20733954, 14711337, 20607790, -14659260, -7982197, +15426986, 12321724, -9486509, 20953534, 11962021, -5000953, -26590680, 14223321, 14913200, -13249974, +-2801393, 7437273, 2835752, -20915416, 23072028, 6338835, 24792698, 14001593, 9078487, -14050449, +10954851, -7478075, 38156488, -30973694, 2223719, 11830487, -7096360, -19996294, 11475616, 12492986, +-3788698, 12291123, -13369159, 32006096, -16301012, 8416525, 5440650, -20369420, -10414759, -28129888, +10275709, 8144869, -22622130, 19390166, 14870787, -14604499, 10088341, -1765232, 30564062, 10329396, +-18207440, -12315282, -13548474, 9660992, -8450348, 7858180, -4532264, -36711232, 17929878, -31152472, +34447784, 41177464, -1061931, 8111583, -31522912, 810138, -6211597, 4440996, 20010790, 20517058, +-4682051, 11184095, 16815334, 3629247, 7677254, 5683316, 7592966, -2983929, 24030342, -2059974, +6286222, -11658689, 26914412, 6756521, -1347009, 316217, 24337970, 10082973, 12067247, 26895086, +-4637491, -14694157, 32668594, -32347010, -13384192, -4601521, 8556112, 23443006, 6291590, -7881802, +-8249022, -14943802, 806917, -1677185, 7606924, 36912560, 35777076, 23319524, 32403380, -1487669, +48206712, -14312979, 14326400, -9714142, 2354716, 16297790, -5976447, 3321620, -12820477, -16533477, +1640678, -9648107, 10990821, -13589277, 24669218, -15272904, -26581016, -9090835, -5506685, 600759, +35863512, -16127065, -2071248, 10774462, 9165997, -1466731, -14870251, 56870736, 79799952, 23205708, +61911416, -15641734, -45500884, -32698660, -22987738, 8834211, 10288594, -16600049, -25008520, 18555870, +26280368, 14107894, 26243324, 19163608, 3987340, 6322192, 2929168, -3563749, -19315542, 5743982, +-22642530, 12808666, -1023276, -22470732, 22143778, 11625940, 10016401, 37681360, 23613194, -14151917, +-8854075, -17184164, -18235358, -23813446, -9354976, -2068027, -17672180, -8162586, 33703144, 49585396, +37790344, 2076617, 25468620, 24894168, 42184096, 16276315, -23925652, -41263900, -24479166, -27828704, +13157632, 7897371, -52451752, -39490612, -10151155, 17193290, 45667312, -39780524, -2535641, -35471060, +-5162014, 32793686, -22349936, 8513699, -31977106, -11441256, -10814728, 18580028, -30768072, -2827162, +-6183679, -23607288, -45337136, 4906464, 24258512, -21239150, 37920268, -15906948, 14666776, -5639829, +-45257144, -23310934, -2863670, -26685168, -60890824, -17318918, 20971788, 32964948, -17052094, -26159036, +-54469312, -16335371, 15053860, -11021960, -16377784, -26999238, 5496485, -6315750, -5383205, -5267778, +9965935, 21346524, -17691508, 16488916, 13278428, -17103634, -49970332, 3905199, 2973728, 12598213, +4884452, 32061394, 2174864, -48663592, -781147, -53537304, -1395864, 18804978, 21263846, -3908420, +1720671, 25265682, -14360223, -9076340, -18197776, 16666084, 10265509, -7081864, 17659832, -5220533, +6402186, 9899363, 29651380, 5332739, -13194140, -32343788, -13838921, 19164144, 12700218, 28839632, +36204428, 70160976, 30447560, 19836306, -20942260, 3683471, -43650828, -13222057, 30419106, -14867029, +-12541841, -3118146, -9807021, -34893924, -38969312, -56822416, -18020610, 292595, -4454955, 37504728, +10207527, 48947056, 29990146, 15338939, -6883759, -17726404, -3445101, 68624984, 4145180, 20021526, +10993506, -8220568, 33928632, -13816910, 27357332, -29587492, -3108483, -21172042, 25728464, -35945656, +-7808788, 11657615, 11335492, 12257300, -31978716, 23266374, -36581312, 8058970, -17991082, -11521250, +36134096, 2908230, 2256469, 13308493, -13886166, 83215, 9367861, -43257836, 1094680, 11260867, +-6518150, 29652992, -12815646, -4296041, 47886200, -16738024, -39893268, 1691143, -15042586, 5028870, +-2957085, -20401, -31891206, 19564650, -5020280, -40658844, 26588532, -50195820, 11048803, -6836514, +-19999516, -23545010, -19953344, -67781560, -69590816, -59609316, -30511984, 119918712, 36913632, -16234976, +-16755741, -61025580, -127769912, -15463493, 33113660, 41325640, 17326434, -20732880, -15533823, -38619808, +-42073500, 29683056, -30547418, 75022344, 56337088, -90324232, 27922656, 10347650, -19498614, 5549635, +63082332, 7756711, 43291124, 86062552, -19818052, -73271072, 2629057, -13713294, -67652712, -19745576, +31675920, -4460324, 39187820, 62776316, 5165772, -57321708, -109691856, -95320896, -84256520, -10429254, +80771152, 21488258, 21316996, 10518375, -22342420, -111145704, -68651832, -36815924, -13439490, 4904316, +24737938, 22167400, 30989800, 29719564, 39586712, -49110268, -16549046, -40630392, -2661806, -44309032, +27115740, 24116778, 54941760, 57648124, 30118996, -904628, -13580150, -11682848, -68886440, 15736223, +-16117939, -128925792, -143614048, -99853696, -102725416, -32651952, 99187440, 64714420, 107572288, 121130424, +187188640, 122314760, 126241440, 79387640, -14328011, -103234904, -174217296, -203526160, -178469856, -141460656, +-105233680, -30314952, -12814572, -20751672, -2947421, 35744328, 61795452, 90229208, 76147088, 108240696, +102761928, 136818336, 122899952, 30600032, 79841296, -25115896, 15991237, 11803107, -3085397, -17910550, +-135643120, -158732320, -203862768, -235060336, -216877600, -121230280, -111196168, -89771792, -114315384, -127633008, +-34331820, 25818122, 69330976, 109303696, 156022208, 192342592, 243605184, 328796928, 314514016, 242500288, +191211408, 164025872, 80542984, 138817632, -62445068, -111236968, -275958624, -305650816, -389216928, -362261696, +-340122208, -306928576, -307014464, -165308992, -104239928, -2929705, 216135632, 169441824, 112524920, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, }, { { -6926172, -11555073, -3087008, 1925219, -3746822, 1478543, -8167954, 453119, -2434710, 2946885, -4432406, --3198677, -853088, 3000572, -613107, -497142, -1694365, -2312840, -5465883, -1149978, -4561792, --2443300, -3861176, 1732482, -814970, 300648, 1947768, 1156420, -2690797, 1243393, -944893, --223875, -1005022, -857383, -2404645, 176094, -4378719, 5513128, -1662689, -1314797, -850404, -348966, -37044, 655519, -5102421, 378494, 2211908, 176094, 957778, -111669, 1155346, -4165045, -1309965, 2567317, 2994666, -4387846, -1378685, -1044214, 4114042, -770410, 1263794, -4692252, 31675, -1297080, 1014149, 1377074, 1369558, 401579, 2407866, 30065, -733903, -1975685, -2028835, 630286, -108448, -3620121, 13587129, 1753957, -5662378, 2247879, -3496640, -1206349, -2197950, -1301375, -3015604, 2529199, 4195646, 1381906, 1464047, -7058779, 1660542, -361314, 2496987, 3016141, 1755031, 4423280, -656056, -2107218, 670015, 5242008, 258235, --3597572, -159451, 4499515, 2541547, 698469, 266825, 1439888, 115964, 567473, 1048509, -107374, -1299228, 64425, 258235, 1919850, -2276870, -5622112, 4548907, 4576288, 3996467, -3793530, 28991, 2186138, 3591130, -3304441, -596464, 164819, -4536023, 1330903, 542777, -4551592, 632971, 2670933, 252866, 5662915, 2908767, -513249, 3947612, 2572686, -1083942, --4116726, 1229971, 1442035, -1056025, 629213, -2418067, -350040, 2311229, 1873680, 1918777, -4709432, 11413876, -7476465, 2639258, 6470905, 1573569, 4592394, 5521181, -4842039, 1116155, --344671, 2192044, -6158983, -4904853, -812823, 4945655, 6727530, -2465311, -2064806, 3234110, --5237176, -7111929, -1191853, -8376260, 3027415, 2860448, 906775, -5183489, -5187247, 1954747, --2952790, 779000, 0, 5618354, 6034429, 5359046, -692564, 3773129, -5633924, 2586644, --3243774, -255014, 496069, 4599373, -4704063, -4287451, 235149, 6036577, 2670396, 2403571, --3397319, 2099165, 1705639, -1676111, -7225209, -1117765, -2286533, -3176128, -2697240, 3535295, --2874407, -885300, 1053341, 2273648, 5645198, -1879048, 173409, -3833795, -1646046, 1089848, --5275294, -32212, 1860795, 4240744, -886911, -2325725, -1169305, -4734665, -4351339, -7599945, --2158221, 890669, -2585034, -4025995, -2381023, -7583302, -4414690, 7270306, -652835, -3751117, -3702799, -6484864, -1745367, -7999914, -1928977, -6386617, -3485366, 6682969, 29528, -1820529, --8308614, -5356361, -2137283, -3804804, 1009854, -4636954, 77846, 2240362, 8111046, 3740380, -2832531, 3249680, 6503118, -6159520, -401579, -2141041, -4763656, 1402844, -1239098, -2157684, --4969277, 1978369, 4542465, 63351, -3872450, -2725694, 12145631, -413391, -3917010, -5471789, --7813620, -10461467, -1576253, -5675263, 864362, -1534914, 2450816, -23085, 1010391, -5145908, -344134, 157840, 5690832, 1415729, -4871567, -412854, -1774895, -2062121, -1470489, 1362578, -2801929, 2262374, -3474629, -17268990, 7063074, -2947421, 3074123, -7039452, -2752000, -5468030, --5017596, 537408, -1481764, -3348464, 9023189, 2499134, -686121, -5185100, -1569811, 2706366, --6040335, -3053722, -5749888, -3051038, 8612483, 1052804, 5779952, -309775, 59056, -1187559, -1717450, 1814087, -4393752, 308164, 1456531, 2798171, 9316858, -4549981, -5480915, -830539, -10290205, 3488050, 10943040, 1248762, 1095217, -1619203, 5452461, -624381, 7992934, -488016, --825171, -1096290, -3191698, 3690451, 1115618, -2476049, 2394444, 3327526, 5586142, -2807835, --171262, -612033, 4996658, -1614371, -703838, -1448478, -1120450, 1574106, -1457605, 971736, -983548, -787053, 1387274, -7691213, 979789, 5633924, 2081985, 7351911, 849867, 889058, -2204929, -3906810, -2015413, -255551, -8791261, -1617592, -89657, -4468377, -15423764, -3877819, --3457449, -6827388, -1462973, -1889786, 9388262, -3495030, 7062000, 3202435, 5050882, -9990094, --4565014, -10093173, -9364102, -190052, 1579474, 5584531, -2931852, -4515085, -2812130, -6885370, -1289027, 2868501, 3366718, 1979980, -2171106, 2317135, -4607963, 302258, -8199630, 2734284, --2209224, 926639, 1653562, 2837900, 3095598, -3257196, 5369, 7641284, -4300336, 3617973, -3867618, -426276, 2277943, 3681324, -1684164, 1355599, 3695283, 54224, 6592238, -3644817, --4704600, -2376191, 2108829, -147640, -8948564, -4621385, -9900973, -10807748, -1882269, 2820720, --8778913, 3847754, -1464584, -145492, -3031173, 3027952, -5224291, -524523, 4747013, -14382772, --854699, 4218732, 2621004, -7735773, -1073205, -5002563, 1085553, 1225676, 890132, -8453033, --11150809, -7740605, 1165547, -6241661, 6454799, 1835025, -10718091, 7413114, 6621229, 5057324, -4671851, -5541045, 8557722, 2004676, -138513, -3648575, 2855617, 4883915, -4799626, -7270843, -2533494, -2940442, -8669928, -1473711, -8357470, -3368328, 15079093, -4365835, -6784438, -8761733, -480499, 1015223, 6027987, 2021319, -5490042, 4647155, -592169, -4735202, -5681705, -6507949, -9379135, 3744138, 5957120, -4858682, -5949067, 2296734, 1638530, -6695317, -161598, -4293357, -6189048, -1635846, 737661, -7859790, 4938676, 3457986, -3939022, -3175055, -2318209, 7914014, -411243, 898185, -2101313, 5722507, -5661304, -7341173, -56371, 2162516, -1639604, -5806796, --8771934, -6955163, 7554848, 1138166, 9197672, 10964515, 10617159, 1865626, 14474577, 3711389, --1335198, 6878927, 5262946, 13447543, 2130841, 7863012, -10143639, 17382806, 12788265, 6381248, --4964446, -3801046, 6382859, 1735704, 4632659, -2226941, 7564511, -1886564, -1718524, 6937446, -5566815, -6431177, 4719632, -1492501, 7341173, 8102456, -15123654, -2509335, 9574556, 3148211, -5272609, 4343286, 9459665, -4209605, 3860639, 466541, -7750806, -3546569, -126702, 1912334, --11462194, -715112, 7347616, -5517423, 12275553, 9403831, -3695819, 90194, 2319819, 4755603, -7081328, -2658585, -2430952, 11623792, -2930242, -312459, 4744328, -26307, 6301791, 4745402, -1386738, 1766842, 30563524, -14653892, 3023657, 13133473, -327491, 1341640, 17048336, 18678812, -2943126, -430570, 4563940, 83215, 4833986, 6055367, -5683853, -1026497, 11294153, 10241886, --3532074, -7452305, -8241506, -8363912, -4278325, 8814347, -5221070, 4457103, 1188095, -9896678, -25770, -6205691, -117038, 4233227, 5559299, -13093208, -5927592, -10177999, -2769180, 18292266, -3211025, -368293, 2261300, -352724, 1583769, 6288906, 3707631, 9810779, 279173, 7677254, -4549981, -4652524, 4530117, -7732015, 1009854, -7736310, -8746701, 5017059, -9687836, 5866389, -670015, 6840809, 5054103, 5406827, -4741644, 8131447, -8603356, 1485522, -3431142, 274878, -12931073, 2257542, 7095286, 7820599, 95563, -282394, 6207302, -7898445, 6050535, -18308372, -2735894, 3687230, -12524662, 4799089, -613643, 11927124, -3831111, -7028177, 4810900, -16178068, --5823976, 12409771, 5270462, -8662949, -19620484, 7817378, -3106872, 3952444, -12651900, -16958678, --11405823, 13249437, 757525, 6942815, -1722819, -8239358, -11377368, 4363150, -3280281, -10446434, --11536819, -67646, -10315438, -8600135, -4488778, -2907693, -11114302, 5122286, 6999723, 8826158, --4922033, 7707856, -7231651, 12755516, -2755222, -1809255, 10344429, 4301410, -2746095, -8212515, --3657702, 8961986, 2257005, -8774081, 3544422, 9497246, 10165114, 3042448, -12448426, -15161771, --1181116, 1192390, 952946, -11475079, 3121368, 9247065, 3385508, -6484864, -17313550, 2690797, --7250979, -19492710, 1095754, -1900523, -9004936, 9513353, -22628572, 13070659, 9945534, 10982768, -1003412, 11636140, 612033, -8642548, -9790378, 651224, 9291625, -7581154, 1702418, -15549392, -9558987, 9997610, -5994701, -3831648, 1926830, 10995116, 8049306, -6889128, -5975374, 7243999, --10191957, 2521146, -13730474, -853625, -4391067, -18578954, -18764712, 2687039, 10100689, 4016331, --16064788, -9320616, 11519102, -14154065, -5907191, 9680319, -3260417, 12314208, -5052492, -10240276, -3115999, -14472966, 15152108, -2674154, 2396055, -8317741, -4032438, -1714766, -14892799, -10008884, -839666, -3519726, 1126892, -5910949, -15772731, 1664300, -13115756, 4413079, -3555159, 7872675, --15761993, 5496485, 2267743, -5934034, 11076184, -3132642, -8394514, -17030620, -2691334, 1117228, --13206488, 6073084, -10030896, -3287798, 6784975, -7310571, 1986422, 8201777, 12173011, -3629784, -965831, -4751845, -17255568, -3854196, -4064113, 7058242, -15246597, -267899, -9018358, 8958765, --10845866, -14265197, 8831527, 4140349, 5540508, 19258096, -3768834, -5677410, 4884989, -12516072, --15096273, 1126355, 17939004, 5604396, 9779641, -7421704, -9771587, -14747307, 2272038, 18887656, --9143449, 9921911, 1548336, 14756434, -23155780, -6993281, -1131187, 2803540, 11995307, 6366752, --17882096, -4381941, -8746701, -389768, -20511154, -2760590, -7940321, 1741609, -11234024, -252329, -1503775, -28228136, 2371896, -8447127, 826244, -10737955, -1570347, 7776575, 2650532, -3060164, --4591320, -14231374, 14310294, 15675557, 4002910, 4839892, -13715441, 21385180, 7199976, 10886131, -27707908, 10084583, 19139984, -17585206, 4740570, 19441706, -5145908, -6394670, 3257733, -11308112, -9552544, 2682744, -13101261, -17554068, -725850, 15600932, 244276, -868120, 10615549, -14532559, --3118146, -11922292, 7565048, -20563230, 1049046, -4180077, 8310225, -21531744, -14316200, -9285182, -7143605, 7226820, 5629092, -6879464, 6088116, -5095442, 7271917, -4177930, -1078574, -1393717, --5270462, 4221416, 10512469, 5783711, 10597295, -794032, -8508867, 1308354, -8448201, 24904368, --5364414, -24700356, -6686191, 6537477, 22335440, -21604222, -7798587, -1700807, 14754286, 491237, --29188060, -4192425, 15016279, 28228672, 2141578, 19342922, 29984240, -3030636, 10382010, 12576738, --2719788, 23295902, -2292439, 28082106, 5662378, -10225243, -24865714, 11411728, 13829258, -23790360, --23114440, 6081137, -5385889, 682363, -9179956, 21511880, -9658845, -6260452, 7536594, 5328981, -261456, -9943386, -7152731, -12090333, 4916664, -791348, -5710696, -1061394, 14450417, 21426518, --23169202, -1605244, -22582938, -2545305, -5717675, 22393422, -9337796, -9227200, -4184372, 13566191, -4763656, 3635153, 5980742, 5333813, -3814468, 115427, -2669859, 3503620, -2384244, 20927766, --5159867, 5438503, 15211700, -7889318, -16643535, 3638911, 6241661, -6141267, -6060199, -1561758, -4025995, 10572599, -14024142, 19458886, 29403882, 19250580, -7374996, -11686069, -25857850, -34372088, --11768210, -57445, -5218922, -1569811, -2758980, 8538932, 651761, -12726525, 8643085, -4927938, -908922, 14365055, 24283746, -11950747, 23438174, 10708427, 13462575, 20063402, 30829812, -11428371, -16096464, -31133144, -3573413, -13796509, -30596274, 12811351, 7612830, 9717364, 4427575, 12556337, -4032974, -21922586, 19019188, 33390150, -4654671, -5008469, 8395587, 3600793, -6614250, -29174640, -2711735, 419833, -2385318, 715649, 10329933, -20764020, 4862440, 6307160, -4036733, -11839077, --5626944, -13230110, 14106283, -29948270, -4082367, -19144816, 11125576, 4705674, 11282879, -3521336, -3308199, -7405598, 18855980, 5916855, 15546171, -13493714, 15297063, 10737, -14278082, 30593052, --4636954, 4070019, 20812338, -19241990, 23303418, 14076218, -17497696, 7989713, -6382322, 10512469, --24334210, 18671834, 3148748, 6972343, -1693291, 6632503, -19476066, 14012868, 23620710, -41516228, -4712653, 18628346, -10965052, -13261785, -220654, -12698071, -5632850, -33837364, -28792388, -3860102, --16410533, -19844896, -14165339, 9000104, -4872104, -9998147, -15972447, 15113453, 1294396, -24441586, --3570729, -47782, -11366094, -3591130, 10290205, 7235946, -1382443, 158914, 825707, -6098317, -5612986, 11513197, -3903052, -2685965, 18003966, -33007360, -4953708, 9338333, 35692252, -14562623, --8670465, -13123273, -17389248, 7820062, 37915436, 6959995, 23709830, 4794257, -3231963, -1948305, --2165201, -18041010, 4590783, 4085051, -14018773, 3256659, 29920890, -4736275, -8252780, 4903242, --9681930, -2394981, 26630944, 38114612, 11213086, 22907208, 27445378, -9315247, -9923522, 3119220, --7486665, 1677722, -24715390, 56371, -18659486, 6697465, 6497212, 12980465, 27364310, 30877056, --11955578, 69464120, -9202504, 1912334, -12500502, 8475044, -5126581, 8374113, 18035104, 5375689, --16291885, -8646843, -17042968, 64425, -11496017, -21081310, 3121368, 14269492, -2116882, 4411469, -6826851, 8523899, 88584, -5813775, -7878044, 4480725, 135828, -10310606, 4369593, 30102352, -21166672, 12324946, -25065430, 18484466, 14271639, -6260989, -7591892, -7325604, -10007274, -3952444, -8219494, -17861696, 1764695, 2660195, 10937134, 28719910, 5419175, 6254010, 1443109, -3015604, --5884105, 12657269, -7661685, 28972238, 8922258, -2423435, 12165495, 2704756, -19758460, -13579613, -15665893, 19010062, 6206228, -4494684, 11496554, 13531831, 17852568, 37344740, 2335389, -10946798, --21522082, -13383118, 6208912, 803159, 7063611, 11259794, -10695005, 49486612, -7305740, 2143189, -5528697, -3687766, -637803, 12445741, -9141838, -10824928, -5651103, 16048682, 14348412, -38160248, -7435662, 6604049, 15703474, -9706089, -15008763, -14294725, 11014444, 9971303, -15325517, -8338679, --6234145, 25810070, 13044353, 7322383, -4877472, -26547192, 7671349, 6805376, 13868986, -3203509, -7445863, -7295539, 2756832, -23055384, 9788230, 9554692, 532039, -5660767, -14304925, -28721520, -18904836, -12075301, 9861245, 9881109, 16785270, 2307471, -17217450, 29169808, 6084358, -28613608, --12830141, 16953310, 4528506, 22157200, 9986336, 3384971, -19740744, -10493142, 12048994, -36010616, -38907572, -28108414, 2481954, 21572010, -5029944, 43401720, 8135742, 5166846, -14798310, 47212964, -7035694, 13622563, -8250632, 15217069, 38650948, 11399917, 23492398, 30487826, -3499862, 35269196, --30929670, -12486007, -12946105, -11700565, 1918240, 3938485, -4553202, -14917495, -26877368, 21606370, -20383378, 7333657, 18213882, -35442608, -30851286, 7494181, 11679627, -17585744, -23644332, 11563663, --8869107, -33219424, -13450227, -8147553, 13270375, -30742840, 13713294, 8438000, 10444824, -15603616, --2838437, -15470472, -7823283, -40246528, -11273752, 16079284, -62151396, -21384642, -4310000, -3691525, -88047, -38537132, -10981158, -56860000, -6503118, 8374650, -17457968, -19457276, -8973797, 13963476, --7432978, -22089554, -24267102, -59310276, -22098680, 24131274, -26942866, -40755480, 30311732, -12563853, --44670344, 10502806, 37302864, -23283554, -10836739, 2204392, -29396904, 32452772, 48059612, 66020088, --9165997, -1157494, -24437290, -24850144, -43113420, 19512036, -6346888, 65737160, -12517682, -27492622, --37902012, 2850248, 13492640, -13956496, 13635984, 42991548, -15453292, -7183333, -28252294, -13179644, -30269318, 33449206, -31871878, -9267466, 18705120, -7081328, 9210557, -9914395, 43466680, 33484102, -72958072, 23133768, 33297270, -14165876, 24443732, 47925392, 17542258, -3377455, 13208098, -2010045, -33427730, 15946677, 47878148, 12337830, -43997644, 15563888, 20074140, 37279244, -18967112, -18979460, -24437290, 22921166, -8904004, 37136972, -10805064, 14448270, -39362300, 25224342, -7093676, 13052406, -17827336, 31810138, 32015224, -25022480, -21045340, -9910637, 38322384, 33093796, -10138270, -22541598, --34566972, -7676181, 29779692, 25742960, 21635360, -13237089, -50087908, 6408628, 83737904, 51058572, --8514236, -115997936, -14163728, -9398462, 12111271, -10867341, 5101348, 15001247, -1654099, 7957501, --22910966, 19094350, 22776748, 39276404, -23550916, -30913028, 37668472, 57490820, 16877610, -21814676, --29430726, -4398584, 11280732, 5662915, 11833709, 2800319, 15278809, 7468412, 39084204, -8838506, --45939508, -18709952, 19172198, 8434242, -13629005, -18888730, 6323266, 25898652, 44754096, 40543956, -2780991, 3372623, 19189378, -11854110, -38731480, 15728170, -22655952, 53879828, 59901908, 1788317, -19869592, 10990284, 15357729, -21671868, 785979, 56353192, -15525233, 3758097, -67561984, -6205154, -13125957, 20274930, 20974472, 18711562, -12288975, -7271380, 38828652, 52158084, -1570347, 2469606, -13111461, 4646081, -7066832, -54323284, -22900766, 41609108, 46235860, 43539696, 59810640, 9229885, --26749056, -81123344, -61284352, -12734578, 16325708, 49241264, 54520316, 24581708, 707596, -28367186, --23695872, -11941083, 16750372, 45530412, 26433914, -8060043, 1338419, -5785321, -26306138, -37554120, --29393682, 3294777, 43219184, 30411052, 65164856, 40149356, 41886668, 56749404, -17513266, -43679280, --46839840, -64775088, -76448808, -31821412, -9192304, 19408958, 41786812, 57178364, 56466472, 42364484, -28944322, 54318452, -11577621, -41014252, -1919850, -13878650, 15210090, 12781823, 69310032, 55484000, --22808424, 5228586, -16065862, -52650932, -13994077, 5593658, -28284508, 35767412, -17621714, 6088116, -3363496, -14231374, 37114424, 41347112, 41303628, 16900160, -21365852, -65760244, 28614682, 8571144, --113195472, -119373784, -124563176, -127673808, -170967616, -12829604, -43992276, -5721434, 22600654, 87104088, -97692792, 101225936, 138636720, 189878352, 181632560, 179155440, 144543904, 106608608, 78473344, 28202366, --78244104, -33931316, -44117368, -24447490, -95349888, -10570988, -36575940, -39815956, -78340200, -58018028, --60381872, -53123912, -57105884, -102511744, -91585880, -51014548, -47166792, -58877024, -85312544, -8396661, --74589624, -142775456, -123586608, -106487808, -56058452, -71206264, -11475616, -148966112, -66236984, -64295124, --30500710, -19963008, -78677896, 5680631, -79725864, -8126078, 10333691, 37372656, 67646, 37189584, -51870320, 86833504, 88219168, 126453504, 76083200, 198264288, 116953032, 228322608, 145057696, 222231264, -251893392, 303824928, 234061760, 232163376, 243998704, 160720368, 68846712, 44360568, 0, 0, -0, 0, 0, }, +11555073, -3087008, 1925219, -3746822, 1478543, -8167954, 453119, -2434710, 2946885, -4432406, +-3198677, -853088, 3000572, -613107, -497142, -1694365, -2312840, -5465883, -1149978, -4561792, +-2443300, -3861176, 1732482, -814970, 300648, 1947768, 1156420, -2690797, 1243393, -944893, +-223875, -1005022, -857383, -2404645, 176094, -4378719, 5513128, -1662689, -1314797, -850404, +348966, -37044, 655519, -5102421, 378494, 2211908, 176094, 957778, -111669, 1155346, +4165045, -1309965, 2567317, 2994666, -4387846, -1378685, -1044214, 4114042, -770410, 1263794, +4692252, 31675, -1297080, 1014149, 1377074, 1369558, 401579, 2407866, 30065, -733903, +1975685, -2028835, 630286, -108448, -3620121, 13587129, 1753957, -5662378, 2247879, -3496640, +1206349, -2197950, -1301375, -3015604, 2529199, 4195646, 1381906, 1464047, -7058779, 1660542, +361314, 2496987, 3016141, 1755031, 4423280, -656056, -2107218, 670015, 5242008, 258235, +-3597572, -159451, 4499515, 2541547, 698469, 266825, 1439888, 115964, 567473, 1048509, +107374, -1299228, 64425, 258235, 1919850, -2276870, -5622112, 4548907, 4576288, 3996467, +3793530, 28991, 2186138, 3591130, -3304441, -596464, 164819, -4536023, 1330903, 542777, +4551592, 632971, 2670933, 252866, 5662915, 2908767, -513249, 3947612, 2572686, -1083942, +-4116726, 1229971, 1442035, -1056025, 629213, -2418067, -350040, 2311229, 1873680, 1918777, +4709432, 11413876, -7476465, 2639258, 6470905, 1573569, 4592394, 5521181, -4842039, 1116155, +-344671, 2192044, -6158983, -4904853, -812823, 4945655, 6727530, -2465311, -2064806, 3234110, +-5237176, -7111929, -1191853, -8376260, 3027415, 2860448, 906775, -5183489, -5187247, 1954747, +-2952790, 779000, 0, 5618354, 6034429, 5359046, -692564, 3773129, -5633924, 2586644, +-3243774, -255014, 496069, 4599373, -4704063, -4287451, 235149, 6036577, 2670396, 2403571, +-3397319, 2099165, 1705639, -1676111, -7225209, -1117765, -2286533, -3176128, -2697240, 3535295, +-2874407, -885300, 1053341, 2273648, 5645198, -1879048, 173409, -3833795, -1646046, 1089848, +-5275294, -32212, 1860795, 4240744, -886911, -2325725, -1169305, -4734665, -4351339, -7599945, +-2158221, 890669, -2585034, -4025995, -2381023, -7583302, -4414690, 7270306, -652835, -3751117, +3702799, -6484864, -1745367, -7999914, -1928977, -6386617, -3485366, 6682969, 29528, -1820529, +-8308614, -5356361, -2137283, -3804804, 1009854, -4636954, 77846, 2240362, 8111046, 3740380, +2832531, 3249680, 6503118, -6159520, -401579, -2141041, -4763656, 1402844, -1239098, -2157684, +-4969277, 1978369, 4542465, 63351, -3872450, -2725694, 12145631, -413391, -3917010, -5471789, +-7813620, -10461467, -1576253, -5675263, 864362, -1534914, 2450816, -23085, 1010391, -5145908, +344134, 157840, 5690832, 1415729, -4871567, -412854, -1774895, -2062121, -1470489, 1362578, +2801929, 2262374, -3474629, -17268990, 7063074, -2947421, 3074123, -7039452, -2752000, -5468030, +-5017596, 537408, -1481764, -3348464, 9023189, 2499134, -686121, -5185100, -1569811, 2706366, +-6040335, -3053722, -5749888, -3051038, 8612483, 1052804, 5779952, -309775, 59056, -1187559, +1717450, 1814087, -4393752, 308164, 1456531, 2798171, 9316858, -4549981, -5480915, -830539, +10290205, 3488050, 10943040, 1248762, 1095217, -1619203, 5452461, -624381, 7992934, -488016, +-825171, -1096290, -3191698, 3690451, 1115618, -2476049, 2394444, 3327526, 5586142, -2807835, +-171262, -612033, 4996658, -1614371, -703838, -1448478, -1120450, 1574106, -1457605, 971736, +983548, -787053, 1387274, -7691213, 979789, 5633924, 2081985, 7351911, 849867, 889058, +2204929, -3906810, -2015413, -255551, -8791261, -1617592, -89657, -4468377, -15423764, -3877819, +-3457449, -6827388, -1462973, -1889786, 9388262, -3495030, 7062000, 3202435, 5050882, -9990094, +-4565014, -10093173, -9364102, -190052, 1579474, 5584531, -2931852, -4515085, -2812130, -6885370, +1289027, 2868501, 3366718, 1979980, -2171106, 2317135, -4607963, 302258, -8199630, 2734284, +-2209224, 926639, 1653562, 2837900, 3095598, -3257196, 5369, 7641284, -4300336, 3617973, +3867618, -426276, 2277943, 3681324, -1684164, 1355599, 3695283, 54224, 6592238, -3644817, +-4704600, -2376191, 2108829, -147640, -8948564, -4621385, -9900973, -10807748, -1882269, 2820720, +-8778913, 3847754, -1464584, -145492, -3031173, 3027952, -5224291, -524523, 4747013, -14382772, +-854699, 4218732, 2621004, -7735773, -1073205, -5002563, 1085553, 1225676, 890132, -8453033, +-11150809, -7740605, 1165547, -6241661, 6454799, 1835025, -10718091, 7413114, 6621229, 5057324, +4671851, -5541045, 8557722, 2004676, -138513, -3648575, 2855617, 4883915, -4799626, -7270843, +2533494, -2940442, -8669928, -1473711, -8357470, -3368328, 15079093, -4365835, -6784438, -8761733, +480499, 1015223, 6027987, 2021319, -5490042, 4647155, -592169, -4735202, -5681705, -6507949, +9379135, 3744138, 5957120, -4858682, -5949067, 2296734, 1638530, -6695317, -161598, -4293357, +6189048, -1635846, 737661, -7859790, 4938676, 3457986, -3939022, -3175055, -2318209, 7914014, +411243, 898185, -2101313, 5722507, -5661304, -7341173, -56371, 2162516, -1639604, -5806796, +-8771934, -6955163, 7554848, 1138166, 9197672, 10964515, 10617159, 1865626, 14474577, 3711389, +-1335198, 6878927, 5262946, 13447543, 2130841, 7863012, -10143639, 17382806, 12788265, 6381248, +-4964446, -3801046, 6382859, 1735704, 4632659, -2226941, 7564511, -1886564, -1718524, 6937446, +5566815, -6431177, 4719632, -1492501, 7341173, 8102456, -15123654, -2509335, 9574556, 3148211, +5272609, 4343286, 9459665, -4209605, 3860639, 466541, -7750806, -3546569, -126702, 1912334, +-11462194, -715112, 7347616, -5517423, 12275553, 9403831, -3695819, 90194, 2319819, 4755603, +7081328, -2658585, -2430952, 11623792, -2930242, -312459, 4744328, -26307, 6301791, 4745402, +1386738, 1766842, 30563524, -14653892, 3023657, 13133473, -327491, 1341640, 17048336, 18678812, +2943126, -430570, 4563940, 83215, 4833986, 6055367, -5683853, -1026497, 11294153, 10241886, +-3532074, -7452305, -8241506, -8363912, -4278325, 8814347, -5221070, 4457103, 1188095, -9896678, +25770, -6205691, -117038, 4233227, 5559299, -13093208, -5927592, -10177999, -2769180, 18292266, +3211025, -368293, 2261300, -352724, 1583769, 6288906, 3707631, 9810779, 279173, 7677254, +4549981, -4652524, 4530117, -7732015, 1009854, -7736310, -8746701, 5017059, -9687836, 5866389, +670015, 6840809, 5054103, 5406827, -4741644, 8131447, -8603356, 1485522, -3431142, 274878, +12931073, 2257542, 7095286, 7820599, 95563, -282394, 6207302, -7898445, 6050535, -18308372, +2735894, 3687230, -12524662, 4799089, -613643, 11927124, -3831111, -7028177, 4810900, -16178068, +-5823976, 12409771, 5270462, -8662949, -19620484, 7817378, -3106872, 3952444, -12651900, -16958678, +-11405823, 13249437, 757525, 6942815, -1722819, -8239358, -11377368, 4363150, -3280281, -10446434, +-11536819, -67646, -10315438, -8600135, -4488778, -2907693, -11114302, 5122286, 6999723, 8826158, +-4922033, 7707856, -7231651, 12755516, -2755222, -1809255, 10344429, 4301410, -2746095, -8212515, +-3657702, 8961986, 2257005, -8774081, 3544422, 9497246, 10165114, 3042448, -12448426, -15161771, +-1181116, 1192390, 952946, -11475079, 3121368, 9247065, 3385508, -6484864, -17313550, 2690797, +-7250979, -19492710, 1095754, -1900523, -9004936, 9513353, -22628572, 13070659, 9945534, 10982768, +1003412, 11636140, 612033, -8642548, -9790378, 651224, 9291625, -7581154, 1702418, -15549392, +9558987, 9997610, -5994701, -3831648, 1926830, 10995116, 8049306, -6889128, -5975374, 7243999, +-10191957, 2521146, -13730474, -853625, -4391067, -18578954, -18764712, 2687039, 10100689, 4016331, +-16064788, -9320616, 11519102, -14154065, -5907191, 9680319, -3260417, 12314208, -5052492, -10240276, +3115999, -14472966, 15152108, -2674154, 2396055, -8317741, -4032438, -1714766, -14892799, -10008884, +839666, -3519726, 1126892, -5910949, -15772731, 1664300, -13115756, 4413079, -3555159, 7872675, +-15761993, 5496485, 2267743, -5934034, 11076184, -3132642, -8394514, -17030620, -2691334, 1117228, +-13206488, 6073084, -10030896, -3287798, 6784975, -7310571, 1986422, 8201777, 12173011, -3629784, +965831, -4751845, -17255568, -3854196, -4064113, 7058242, -15246597, -267899, -9018358, 8958765, +-10845866, -14265197, 8831527, 4140349, 5540508, 19258096, -3768834, -5677410, 4884989, -12516072, +-15096273, 1126355, 17939004, 5604396, 9779641, -7421704, -9771587, -14747307, 2272038, 18887656, +-9143449, 9921911, 1548336, 14756434, -23155780, -6993281, -1131187, 2803540, 11995307, 6366752, +-17882096, -4381941, -8746701, -389768, -20511154, -2760590, -7940321, 1741609, -11234024, -252329, +1503775, -28228136, 2371896, -8447127, 826244, -10737955, -1570347, 7776575, 2650532, -3060164, +-4591320, -14231374, 14310294, 15675557, 4002910, 4839892, -13715441, 21385180, 7199976, 10886131, +27707908, 10084583, 19139984, -17585206, 4740570, 19441706, -5145908, -6394670, 3257733, -11308112, +9552544, 2682744, -13101261, -17554068, -725850, 15600932, 244276, -868120, 10615549, -14532559, +-3118146, -11922292, 7565048, -20563230, 1049046, -4180077, 8310225, -21531744, -14316200, -9285182, +7143605, 7226820, 5629092, -6879464, 6088116, -5095442, 7271917, -4177930, -1078574, -1393717, +-5270462, 4221416, 10512469, 5783711, 10597295, -794032, -8508867, 1308354, -8448201, 24904368, +-5364414, -24700356, -6686191, 6537477, 22335440, -21604222, -7798587, -1700807, 14754286, 491237, +-29188060, -4192425, 15016279, 28228672, 2141578, 19342922, 29984240, -3030636, 10382010, 12576738, +-2719788, 23295902, -2292439, 28082106, 5662378, -10225243, -24865714, 11411728, 13829258, -23790360, +-23114440, 6081137, -5385889, 682363, -9179956, 21511880, -9658845, -6260452, 7536594, 5328981, +261456, -9943386, -7152731, -12090333, 4916664, -791348, -5710696, -1061394, 14450417, 21426518, +-23169202, -1605244, -22582938, -2545305, -5717675, 22393422, -9337796, -9227200, -4184372, 13566191, +4763656, 3635153, 5980742, 5333813, -3814468, 115427, -2669859, 3503620, -2384244, 20927766, +-5159867, 5438503, 15211700, -7889318, -16643535, 3638911, 6241661, -6141267, -6060199, -1561758, +4025995, 10572599, -14024142, 19458886, 29403882, 19250580, -7374996, -11686069, -25857850, -34372088, +-11768210, -57445, -5218922, -1569811, -2758980, 8538932, 651761, -12726525, 8643085, -4927938, +908922, 14365055, 24283746, -11950747, 23438174, 10708427, 13462575, 20063402, 30829812, -11428371, +16096464, -31133144, -3573413, -13796509, -30596274, 12811351, 7612830, 9717364, 4427575, 12556337, +4032974, -21922586, 19019188, 33390150, -4654671, -5008469, 8395587, 3600793, -6614250, -29174640, +2711735, 419833, -2385318, 715649, 10329933, -20764020, 4862440, 6307160, -4036733, -11839077, +-5626944, -13230110, 14106283, -29948270, -4082367, -19144816, 11125576, 4705674, 11282879, -3521336, +3308199, -7405598, 18855980, 5916855, 15546171, -13493714, 15297063, 10737, -14278082, 30593052, +-4636954, 4070019, 20812338, -19241990, 23303418, 14076218, -17497696, 7989713, -6382322, 10512469, +-24334210, 18671834, 3148748, 6972343, -1693291, 6632503, -19476066, 14012868, 23620710, -41516228, +4712653, 18628346, -10965052, -13261785, -220654, -12698071, -5632850, -33837364, -28792388, -3860102, +-16410533, -19844896, -14165339, 9000104, -4872104, -9998147, -15972447, 15113453, 1294396, -24441586, +-3570729, -47782, -11366094, -3591130, 10290205, 7235946, -1382443, 158914, 825707, -6098317, +5612986, 11513197, -3903052, -2685965, 18003966, -33007360, -4953708, 9338333, 35692252, -14562623, +-8670465, -13123273, -17389248, 7820062, 37915436, 6959995, 23709830, 4794257, -3231963, -1948305, +-2165201, -18041010, 4590783, 4085051, -14018773, 3256659, 29920890, -4736275, -8252780, 4903242, +-9681930, -2394981, 26630944, 38114612, 11213086, 22907208, 27445378, -9315247, -9923522, 3119220, +-7486665, 1677722, -24715390, 56371, -18659486, 6697465, 6497212, 12980465, 27364310, 30877056, +-11955578, 69464120, -9202504, 1912334, -12500502, 8475044, -5126581, 8374113, 18035104, 5375689, +-16291885, -8646843, -17042968, 64425, -11496017, -21081310, 3121368, 14269492, -2116882, 4411469, +6826851, 8523899, 88584, -5813775, -7878044, 4480725, 135828, -10310606, 4369593, 30102352, +21166672, 12324946, -25065430, 18484466, 14271639, -6260989, -7591892, -7325604, -10007274, -3952444, +8219494, -17861696, 1764695, 2660195, 10937134, 28719910, 5419175, 6254010, 1443109, -3015604, +-5884105, 12657269, -7661685, 28972238, 8922258, -2423435, 12165495, 2704756, -19758460, -13579613, +15665893, 19010062, 6206228, -4494684, 11496554, 13531831, 17852568, 37344740, 2335389, -10946798, +-21522082, -13383118, 6208912, 803159, 7063611, 11259794, -10695005, 49486612, -7305740, 2143189, +5528697, -3687766, -637803, 12445741, -9141838, -10824928, -5651103, 16048682, 14348412, -38160248, +7435662, 6604049, 15703474, -9706089, -15008763, -14294725, 11014444, 9971303, -15325517, -8338679, +-6234145, 25810070, 13044353, 7322383, -4877472, -26547192, 7671349, 6805376, 13868986, -3203509, +7445863, -7295539, 2756832, -23055384, 9788230, 9554692, 532039, -5660767, -14304925, -28721520, +18904836, -12075301, 9861245, 9881109, 16785270, 2307471, -17217450, 29169808, 6084358, -28613608, +-12830141, 16953310, 4528506, 22157200, 9986336, 3384971, -19740744, -10493142, 12048994, -36010616, +38907572, -28108414, 2481954, 21572010, -5029944, 43401720, 8135742, 5166846, -14798310, 47212964, +7035694, 13622563, -8250632, 15217069, 38650948, 11399917, 23492398, 30487826, -3499862, 35269196, +-30929670, -12486007, -12946105, -11700565, 1918240, 3938485, -4553202, -14917495, -26877368, 21606370, +20383378, 7333657, 18213882, -35442608, -30851286, 7494181, 11679627, -17585744, -23644332, 11563663, +-8869107, -33219424, -13450227, -8147553, 13270375, -30742840, 13713294, 8438000, 10444824, -15603616, +-2838437, -15470472, -7823283, -40246528, -11273752, 16079284, -62151396, -21384642, -4310000, -3691525, +88047, -38537132, -10981158, -56860000, -6503118, 8374650, -17457968, -19457276, -8973797, 13963476, +-7432978, -22089554, -24267102, -59310276, -22098680, 24131274, -26942866, -40755480, 30311732, -12563853, +-44670344, 10502806, 37302864, -23283554, -10836739, 2204392, -29396904, 32452772, 48059612, 66020088, +-9165997, -1157494, -24437290, -24850144, -43113420, 19512036, -6346888, 65737160, -12517682, -27492622, +-37902012, 2850248, 13492640, -13956496, 13635984, 42991548, -15453292, -7183333, -28252294, -13179644, +30269318, 33449206, -31871878, -9267466, 18705120, -7081328, 9210557, -9914395, 43466680, 33484102, +72958072, 23133768, 33297270, -14165876, 24443732, 47925392, 17542258, -3377455, 13208098, -2010045, +33427730, 15946677, 47878148, 12337830, -43997644, 15563888, 20074140, 37279244, -18967112, -18979460, +24437290, 22921166, -8904004, 37136972, -10805064, 14448270, -39362300, 25224342, -7093676, 13052406, +17827336, 31810138, 32015224, -25022480, -21045340, -9910637, 38322384, 33093796, -10138270, -22541598, +-34566972, -7676181, 29779692, 25742960, 21635360, -13237089, -50087908, 6408628, 83737904, 51058572, +-8514236, -115997936, -14163728, -9398462, 12111271, -10867341, 5101348, 15001247, -1654099, 7957501, +-22910966, 19094350, 22776748, 39276404, -23550916, -30913028, 37668472, 57490820, 16877610, -21814676, +-29430726, -4398584, 11280732, 5662915, 11833709, 2800319, 15278809, 7468412, 39084204, -8838506, +-45939508, -18709952, 19172198, 8434242, -13629005, -18888730, 6323266, 25898652, 44754096, 40543956, +2780991, 3372623, 19189378, -11854110, -38731480, 15728170, -22655952, 53879828, 59901908, 1788317, +19869592, 10990284, 15357729, -21671868, 785979, 56353192, -15525233, 3758097, -67561984, -6205154, +13125957, 20274930, 20974472, 18711562, -12288975, -7271380, 38828652, 52158084, -1570347, 2469606, +13111461, 4646081, -7066832, -54323284, -22900766, 41609108, 46235860, 43539696, 59810640, 9229885, +-26749056, -81123344, -61284352, -12734578, 16325708, 49241264, 54520316, 24581708, 707596, -28367186, +-23695872, -11941083, 16750372, 45530412, 26433914, -8060043, 1338419, -5785321, -26306138, -37554120, +-29393682, 3294777, 43219184, 30411052, 65164856, 40149356, 41886668, 56749404, -17513266, -43679280, +-46839840, -64775088, -76448808, -31821412, -9192304, 19408958, 41786812, 57178364, 56466472, 42364484, +28944322, 54318452, -11577621, -41014252, -1919850, -13878650, 15210090, 12781823, 69310032, 55484000, +-22808424, 5228586, -16065862, -52650932, -13994077, 5593658, -28284508, 35767412, -17621714, 6088116, +3363496, -14231374, 37114424, 41347112, 41303628, 16900160, -21365852, -65760244, 28614682, 8571144, +-113195472, -119373784, -124563176, -127673808, -170967616, -12829604, -43992276, -5721434, 22600654, 87104088, +97692792, 101225936, 138636720, 189878352, 181632560, 179155440, 144543904, 106608608, 78473344, 28202366, +-78244104, -33931316, -44117368, -24447490, -95349888, -10570988, -36575940, -39815956, -78340200, -58018028, +-60381872, -53123912, -57105884, -102511744, -91585880, -51014548, -47166792, -58877024, -85312544, -8396661, +-74589624, -142775456, -123586608, -106487808, -56058452, -71206264, -11475616, -148966112, -66236984, -64295124, +-30500710, -19963008, -78677896, 5680631, -79725864, -8126078, 10333691, 37372656, 67646, 37189584, +51870320, 86833504, 88219168, 126453504, 76083200, 198264288, 116953032, 228322608, 145057696, 222231264, +251893392, 303824928, 234061760, 232163376, 243998704, 160720368, 68846712, 44360568, 0, 0, +0, 0, 0, }, { -9471477, -10372883, -6034966, 430034, -5037460, 2355253, 1140314, 1713155, -5577015, -3837553, 120796, --3586298, -407485, 2319282, -438087, -1240709, -635118, 2598455, -1077500, -1749662, 7144141, --17180, -5595269, -2598455, 2393371, 570157, 2228014, -4943508, 539555, -5198521, 784905, -4361540, -545461, 2752537, 2852932, 2631204, -2928094, -1270774, -1711008, 943819, -739808, -1838246, -4839892, -2312840, -2051921, 247497, -1221381, 2700998, 3520800, 5583995, -2215130, --3022046, -1438814, 1378685, 3658775, 4175782, 3382824, -759136, -4900021, 6252936, -4102768, -2231236, -4314832, 3594888, -2860448, 2152852, -2602213, 195421, -2763812, -1953136, -203474, --1003412, 2152316, 1381369, -365072, -4466766, 17122960, 2335925, -5506148, 2735357, 3099893, -1123671, -6992207, 3316252, 5121749, -5334350, -1525250, -6555731, -1358283, -2741800, -2328946, --879931, 471910, -156229, 782221, 2458332, -2844879, 1393180, -6682969, 2410014, 4292820, -958315, -1666984, -5441724, 3724811, -2353105, 5952288, 5036386, -83215, -2246805, 4884452, -5602248, 4593468, 4568772, 1264331, -3388729, 1232656, 4325032, -1631551, -3542811, 3403762, -5202279, -2086280, 2749316, -5668283, -413927, -4941360, 3569655, -6628745, -1770063, -1064615, -2414309, 3623342, 2494302, 41339, -3527779, 699006, -4905390, -3024731, 1028645, -311385, --2887292, 1996086, 1851131, 828929, 3351148, -2340220, 1610076, -3209951, -1157494, -812286, -2650532, 9663676, -9846749, 316754, 120796, -2534568, -2990908, -3186329, 963683, -5575405, --5494337, 712965, 2595771, -259309, 3086471, 2385318, -3040300, 1175747, -10788421, -2686502, --2445447, -2558190, -3430068, -3794067, -9510131, -7414724, 968515, 2157684, -548682, 5066988, -4060892, 1665911, -1861332, -1080721, 4765803, -1912871, 560493, -758599, -5077188, 1629403, --1721208, -3494493, -1359357, 4066260, 9933186, -3857418, 1082869, 2368138, -1872069, 3080029, -1373316, -3539053, 2000918, -8290898, -3841848, 36507, 3337190, 5174362, -3238942, -1542967, --394063, -11989401, 1998234, 6114960, 286689, 841814, 3320547, -1995012, 5202279, 7055021, --984084, 1974074, 4162360, 4021163, 666257, 220117, -2148558, -2725157, -2707440, -8527121, -1809792, 164819, -8244727, 1097901, 4418448, 6544457, 1592896, -4964446, 11217918, -1676111, --2355790, 5174362, -3414499, -3369939, 428960, -4305705, 4939213, 4884989, -2158221, -7802345, --3882651, 3621194, -5023501, 10608569, 9201967, -7628399, -9214852, 135828, 1596654, -8862665, --672699, 3379603, 2325725, -4450123, -2572149, 9733470, -1159641, 6626061, -783295, -2452426, --2416456, -5360119, 788127, -974421, 5262409, -4837207, 1136019, -1468342, 889058, -2978023, --465467, 4233764, 3483755, -5980742, 8713952, 400506, -166967, -492311, -944893, 2018098, --1364726, -8319352, -1285806, -4628364, 6702834, 2379412, -38655, 7882339, -4948876, 4973572, -5217312, -346282, -4622996, -20413442, 4439923, 887985, 14200772, -972273, 5581310, -7939784, -1457605, -5995775, -1603633, -3032247, -1133335, 2461553, -1779190, 2288144, 4629975, 3526705, -13446469, 9259413, -6442988, 2958159, -571768, 2348273, 1370095, -1919850, -13837311, 3267933, --949188, -303869, 4896263, -979789, -4058207, -2805151, -916976, -4387846, -2551211, -11025181, --2838974, 120259, -4136054, -846109, 4191351, 6277632, -2404108, 7796440, -6286759, 1147830, -2374043, 880468, -2207076, -4351339, 2588792, -1213865, 1432909, -3273302, -4843113, 667867, -2144263, -4629975, 3804804, -3212099, 9669045, 10626286, -3802120, 3786014, 3573413, -703838, --2011655, -1583769, -13839458, 5378373, 4612258, 51540, -3034395, -5609764, -315680, -2077154, --6645925, -4148402, -6430640, 6775848, 3930969, -390305, 7793218, -3900367, 7006166, -7511898, --7227893, 3792456, -11636140, -3984656, 3135863, 7380902, 9545028, -1438814, 7161321, -41339, -6824166, 2672544, 1232119, -890669, 508954, 6869800, -3034395, -488016, 1348083, 792958, --6430103, -599148, -3432216, 13789529, -6361921, -6350646, -1476395, 6621229, 6550899, 5755256, -7504382, -1047972, 1463510, -1405528, -3569655, 3036542, -236760, -458488, -4108673, 10887742, -6644315, -3040837, 2102923, 3397319, -5546414, 1447941, 4196183, -787590, 8033737, -2959233, --994285, -8409009, -3242164, -7104950, 351114, 10455561, -3994857, 3155727, 1742683, 635655, --2789045, -661425, 71941, -2224256, 4872104, -4828617, -2319282, -580894, -2021856, -18861886, -14011257, 1658394, -6828461, -16625282, -1496796, 640487, -9783936, -680215, 4809290, 4176856, -532039, -2648384, 3835943, 12268574, 12366285, -4986457, -5580773, -12985834, 2799782, -2128156, -13009456, -4974646, -136365, -2743410, 4985384, -1160715, -13037373, 4619774, -477815, -7510824, -146566, 1544578, -933082, -1009854, -5281736, -7210713, 4720169, 1479616, 6129992, -4854924, -10225780, 5162551, -1953673, -8556649, -1644436, 3635153, 10002442, 3481608, -5451924, -2107755, -4718559, 3420942, -2735894, -918049, 4968204, 4466766, 5238250, 10315975, 11052025, 5900212, -5948530, 7311645, -3795677, 1613834, -7092602, 7911867, 1270237, 4387846, -5040681, -7237557, -1937030, -9428527, -3642132, -3699041, 7433515, -6904160, -455803, 12776454, 7836705, 10794327, -2014877, -11913166, -3959423, 12545063, -3680787, -8027294, -8360691, -8233453, -8707509, 4714264, -4790499, 3058554, 2797634, 2891050, 12069395, -1544578, 5211406, -10452877, -11758010, 7797513, --464393, -6435472, 410169, -16355772, -5375152, -5537287, 1955284, -613643, -1554778, -11515344, --7562364, 1236951, 7875360, 12845173, -5159330, -5084705, 6810208, -8872866, -689342, -477278, -2903398, 5614059, 4537633, 8911520, -4855998, 12932683, 6037114, -13989245, 6913287, -7769059, --9359807, -7701950, -11315628, 10183904, 2279017, -11919608, 1241246, 2584497, 957778, 1979443, --2380486, 8539469, -5126044, 6634114, -10721312, 8112120, -5717675, -4497905, 368293, 3984656, --1597728, 6534793, 27433030, -23126252, 11931956, 12407087, -9924596, -1105954, 16757889, 6604049, -10956462, 3856881, -2643016, 24764244, -100932, -3643743, 838056, 913754, 12353400, 18832894, -7686381, 708133, 1236951, 3534758, 7064685, 746787, 4166118, -11747809, 6846715, 10641318, --1161252, 4836133, 902480, 2659122, -7202660, -5488968, 1371705, 564251, 12030203, 6332393, -5525476, -3828427, -4813048, -4892505, 7343321, 10152766, 1039382, -2121714, 19123878, 10276246, -13115756, -5652714, -12539694, -1682554, -13161390, -8420820, -3232500, -4987531, 248571, 11562589, --2268280, 1380295, -7561827, -8271570, 11739219, 504659, 6143414, 6368900, -4248260, 11311870, -3994320, 2143189, -2075543, -5461588, 9593883, -947577, -12224014, 9831717, 9619653, -18932752, -1954210, 5766531, -9439264, 7224672, -16064788, 3194919, 4536023, -2503966, -6501507, -8463233, --9583146, -16292958, 1802276, 17505750, -6120329, 8167954, 4644471, 12848932, 6947110, -5615133, --11635603, 5340255, -3026341, -4691715, -12015708, -2411624, -1686312, -5409512, -5167383, -3424163, --8417062, -11709155, 12797392, -2004139, -7450695, 9287867, 3564823, -9588514, 1354525, -1489817, -5781026, -12547747, 3364033, 3087008, -17128866, 4788889, 5747740, -9883793, 2695092, -391379, --2619930, 5247377, 781147, -2381023, 977642, 3064996, 11862700, 7926899, 12125230, 6781754, -4516695, -4581120, 17969606, -6116034, -8703751, 17813914, 1670205, 9894531, 2935073, -5953362, --17766132, -19246822, -3759170, -1775432, -6325413, -6454799, -32050120, 14019847, 25552372, 731755, --16228534, 5767604, -3891240, -2193118, 3277060, 1434519, 5771899, -9222369, -155693, 22726282, -17267916, 14879914, -18605262, -1925219, 3222299, 7974681, -9489193, -10620380, -3481608, 1807108, -7220914, 2898566, -23615878, -26815628, 6872485, -2101313, 13326210, 13502303, -10620380, 10940355, -8750459, 11756399, -1985349, -9105868, -9201967, 4900021, -9685151, -4653060, -1114544, -1754494, -6695317, 15191836, 8212515, -5982890, -5050882, -9688909, -3237332, -769336, 3342022, -3308199, --4087198, 6582038, 3966939, -14163728, -1351841, -1156420, 13877039, -9320079, -9860171, -18238578, --6794102, 935229, -118648, 6518687, -3046743, 41876, -8546448, -13144747, -11042361, -12420509, --6737193, 2051921, -20866024, 4255776, 3914863, 3409667, 5444945, 16080894, 1655710, 14041322, --1490891, 18096308, 9101573, 14251775, 8737037, 4570382, -6483790, -81604, -3967476, 10015864, -3021510, 8898635, -7635915, -695248, 14778446, -17244294, -9841918, 14730664, -23510114, -9673877, -1914482, -3723200, -11599096, 24678346, -4159139, 17337172, 6688875, -13453985, -2141041, -4462471, --17323750, -21566104, 18008262, 853088, -6583111, 5515275, 275952, -1882806, 6476274, 3735548, --2436320, -7073811, 1447404, 18289582, 14241575, -10547366, 4503810, 2356863, 13197898, -4617627, -8819715, -17738214, -5027259, 14914274, 4038343, -2590939, 15302432, -3027415, 10527502, -19304268, --25350508, -6533182, -194347, -14851460, 18173080, 16472273, 18356690, -5099200, -7515656, -1816234, -21561272, 15500537, 24295556, -21627308, -16276852, -37030672, 15905875, -4136054, -31674846, -6146635, -2948495, 4648229, -11875585, 12867185, 10814728, 1216013, -212601, 2005750, -5316633, -11016054, -2345052, -6265821, -10396505, -136902, 23881092, 742493, -3744138, -19176492, 7975755, 15138686, --7956427, -23139674, -4329327, 7792145, 2624225, -4918812, 4888747, 1636919, 8157754, -2354179, -13548474, 20957292, 7744900, -13972602, 15603616, 7087233, -18086644, -19049254, 20425790, 9948218, --8306467, -9333501, -739808, -16918950, 12028593, 16170015, -722628, 820876, 3722663, -2193655, -17374754, 5848672, 4164508, -7527467, 2353105, 5829881, 21362094, -5472862, 7707319, -17241610, --20244328, 17037062, -3706020, -1870995, 270046, 16214575, -2189360, -4095788, -5692443, -7866770, --25631828, -2669859, -16967268, -33857764, -34838092, -15426986, -26729192, -12482786, -4786741, 4074313, -14078366, 15693810, 1123671, -9468255, 17041356, -9580461, 8131447, -33472290, -3757560, -23170812, --15635828, 14596446, 10194105, 9757092, 2957622, 21297132, -2720862, -2047626, -16314433, -6163815, --3672197, -11453604, -11353746, -27666568, -11077794, -3677029, -4811974, -17394618, 14303852, 5164162, -8359617, -8069170, -3268470, -41665476, -12230456, -12023224, 9054865, 20229296, -13343927, -2744484, --24262270, -2497524, 11864847, -4699768, -8462159, 4556961, 17194364, 29209536, 5898064, 98784, --2091649, -8942659, -12481712, 7112466, -8427800, 26281442, 4771709, 10705206, 54830088, -12165495, --10501195, -15246597, -21267068, -27149026, 16419660, 26682484, -14769856, 1464584, 6438156, -8300025, --1582696, -18742164, 161598, -10193568, 28794534, 717796, -4804995, 23412940, -5258651, 7337952, --25538412, 14254460, 4486094, 18354542, -7771744, 13873818, 23538032, 25627532, 14335527, 23189602, -11844446, -2761127, 22112102, -9725417, -14009110, -3773666, 9035537, 15584289, -35154844, -1587527, --22658100, 19010062, 8444979, 391916, 6442451, 26297548, 1249299, 23565412, 9830106, 35252556, -3192235, -3059091, 15130096, 5838471, -17506824, 4630512, -2049236, -22670448, 16470126, -13336410, --23041962, -46112916, 3531000, -4947803, 27466852, -14552960, 36769216, 13020193, -854699, -4847408, -14140643, 15991774, -27359478, -10781979, -20351166, 7710540, -9468255, 21002926, 5703717, 7008313, -6076842, 19133006, -10639171, -12115029, -11815455, 18393198, 10268193, 23555212, 7595113, 70351568, --19131932, 1509681, 1966558, 33316062, 14811732, 15995532, -19618874, 10334228, -6790880, 1627256, --8200703, 3151969, 24881820, -5151814, 9022116, 45923400, 15794742, -19455128, -22141630, 3662533, -31083216, 16156056, 7364259, -10522670, 26801670, 5036386, -1831804, -26675506, 10307385, -3628174, -13791677, -24212342, -13188771, 1961726, -4268661, 3904662, -21103858, -213138, -11984569, 7129646, -22843858, 16967806, 7706245, -31413390, 2661269, 3559991, -26247618, -25296820, -14437533, -13728326, --11341398, 22963580, 7962870, -494458, 17714592, 23710366, 9337796, 20447802, 3744675, 13418015, -93765040, -20885352, 18491444, 9992778, -12009265, 2960843, -55941948, 1926293, 16113644, 39275864, --14397267, 1842004, -21961778, -15088757, 8378408, 18818936, -17774722, 27072252, 12687333, -28976534, -22077742, -9992778, -13296145, 1621887, -16618839, 7470022, -6105833, 27639726, -11768210, 1955284, -15944529, -44387412, 9185861, 17928268, -11975443, 14937896, -26361972, 31995896, 5473399, 8301635, --52007224, 52458732, 23338852, 19595788, 3380676, -27413702, 30692374, 1831267, -11789148, 53874996, --7708930, -18200998, -9329206, 9973451, 16780438, 17761300, 5924908, -4319127, -56777320, -2410551, -17037598, 5255966, 23948200, -26449482, 34261492, 7956427, 13094282, -26610544, -6822556, 10168872, -43056512, -11625403, 11809549, -23586350, 28082106, 20379620, 26586384, -3121904, 12918188, 10908143, --30015916, -23292682, 18027052, 21156472, 6707129, -2270964, -43421584, 44522168, -6564858, -7441031, --13902272, -2049773, -33802468, -64847028, 25747792, 22254910, -608275, -11043972, -25198036, -1586990, --6207302, -11617350, 28973850, -57370564, -23527830, -28740848, -7211250, -42776800, -1935957, -3573950, -659278, -4253628, -7022809, 10984379, 1870458, -16705275, -4041564, 3334505, -25528212, -10974178, --5839008, 6101001, 23894514, -6800007, 45499808, -18102750, -709207, 22659710, -16620450, 16430397, -5090610, -24522116, -41407244, -5601174, 14094472, 45736032, 20397336, -25046638, -9968619, -82390896, --26383984, 131533, 22060026, 55037320, 1126892, -43994424, 6830609, 36099736, -5956046, 6472516, -34455300, 41089952, 77020576, -67956048, -9062918, 24137716, 27579596, -9376450, -19865834, -21920440, --25816512, 10727755, -26642220, 5619428, -11205570, -63369560, 13478681, -11314554, 17800492, -17901424, --18636936, 805843, -27059368, 3977140, -27304718, -1001264, -5471789, -10813654, 11850352, -20160576, --26683022, -23895050, -31202938, -5395553, -4281009, 33253784, 6419903, -24728274, -37419904, 4570919, --1837172, 8504035, -8191040, 20221242, -25066502, -9563282, -34781720, -21503828, -10883447, 1181653, --15454366, 35143568, -13552232, -29711510, 7924752, 36629628, 24938728, 11150809, -27190364, -16251083, --4187056, 33589864, 61527552, 143345, 10696079, -11255499, -63657856, -12562779, 3656628, 24509768, -50652160, -27820650, -38046432, 22620520, 7486665, -10519449, -1057099, -17432736, 9092446, -49641768, --9497783, 6085432, 8599061, -27817966, 31307628, -46654084, -64932928, -48282412, 37720012, 11806328, --66121020, -11429445, -45447196, 20867098, 4359929, -91208464, 6803765, -27835146, -58712204, -45823544, --67041756, 42214696, -19956566, -52966072, -23201414, 17627620, -30953292, -27098022, -20521890, -12380780, --22647362, -23095112, -42230804, -30943092, -58233852, -33106144, -29007672, -9585830, -26679800, -5319317, --11711302, -360777, 3740380, 8374113, 18220326, -15857019, 15541876, 2234994, 32307280, 13870597, -21010980, 19852412, -53500260, -13927505, 46983720, -6907381, -25191594, -30379914, -20435454, 18791556, -74991736, -3806952, 2046015, -47298864, -45957760, -9249749, 13865228, 44384728, 1042066, 40696964, -18932216, -45959372, 90575488, 3372086, 72052368, 2108292, -11125039, 38044820, -41412612, -59501404, --32273994, -134386848, -74958992, -23296440, 70308616, -23045720, -56486872, 66381940, 63308892, -39460548, --51641612, 268435, 56703768, -5566278, -3271155, -17005924, 49470508, -4789963, -13324062, -440234, -13503914, 26254062, 446677, -18191334, -22027276, 31520228, 1904281, -12094628, -33107218, 19687056, -9753871, -2536178, -26322244, 9352291, 10444287, 10528039, -16999480, -8368744, 2094333, 26695370, --8274255, 10624675, -38021196, -8664023, -958315, 26166552, -52723408, -7386807, 3833795, 39088496, --19137838, 7792682, -27750858, 5730560, 9447317, -15900506, -15409269, 206158, 4347581, 13808320, --13572634, 3398393, -47938816, 27632208, -9758166, 45973328, -28936268, 22245784, -20556250, 23156854, -1203128, 16719234, 8655970, -30039538, 34978752, 11025181, 18788334, -33425582, 7111392, -6153078, -2836289, -19522236, -43176768, -57362508, 41519448, 27471684, -32780802, -46661060, -22940494, 21315386, -11115912, 28415504, 30642982, 5828808, -15698105, -4741107, 10618233, -10812580, -1024887, 6151467, -1593433, 17019344, 11905649, 4996121, -15671262, -813896, -9758166, 9762998, -16405701, -14340896, -11669963, -4011500, -6757594, -6766721, -11440719, -15773267, 1054951, 12380780, 11425150, 9397388, --3804267, -13079786, -11223823, -8072391, 13689671, 18461380, -8865886, -13455059, -5786932, 15242302, -7945153, 20494510, -14835891, -5972152, 8143258, -4310537, 600222, -2629594, 7320772, 4026532, -5907191, 829466, -14161581, 5397164, 2579128, -976031, 10899016, -6138582, -2786897, 1418413, --1966558, 943282, -3963718, 18085034, 4921496, -1845225, 18312130, 16797618, 20016696, -47216188, --124995896, -45676440, 22888418, 65663608, 138170176, 92634392, 24114094, 35385160, -18035104, -55633784, --92765928, -80581104, -64062660, -18117246, 2836826, 45294188, 49767396, 105676056, 51412908, 34162168, --2306934, -21926882, -50308564, -25785910, -40627168, -46699180, -28766080, -23808614, -1519882, 13699335, -39643084, 24889336, 28523952, 26255136, 26216480, 39634496, 3614215, 27663884, -4788889, -11509975, --32737852, -18971408, -48945984, -71640592, -63031868, 1467268, -10607495, 20594368, 34093988, 19435264, -52497924, 46621868, 66292820, 38622492, 44930728, 3205656, 2160906, -34361884, -57990112, -66472136, --81380504, -52074868, -66624068, -4115116, -628139, 33633352, 33014340, 82209432, 62353260, 92045448, -35477504, 45042932, 16193100, 3987877, -55673512, -70020312, -29356102, -19980188, 0, 0, -0, 0, 0, }, +10372883, -6034966, 430034, -5037460, 2355253, 1140314, 1713155, -5577015, -3837553, 120796, +-3586298, -407485, 2319282, -438087, -1240709, -635118, 2598455, -1077500, -1749662, 7144141, +-17180, -5595269, -2598455, 2393371, 570157, 2228014, -4943508, 539555, -5198521, 784905, +4361540, -545461, 2752537, 2852932, 2631204, -2928094, -1270774, -1711008, 943819, -739808, +1838246, -4839892, -2312840, -2051921, 247497, -1221381, 2700998, 3520800, 5583995, -2215130, +-3022046, -1438814, 1378685, 3658775, 4175782, 3382824, -759136, -4900021, 6252936, -4102768, +2231236, -4314832, 3594888, -2860448, 2152852, -2602213, 195421, -2763812, -1953136, -203474, +-1003412, 2152316, 1381369, -365072, -4466766, 17122960, 2335925, -5506148, 2735357, 3099893, +1123671, -6992207, 3316252, 5121749, -5334350, -1525250, -6555731, -1358283, -2741800, -2328946, +-879931, 471910, -156229, 782221, 2458332, -2844879, 1393180, -6682969, 2410014, 4292820, +958315, -1666984, -5441724, 3724811, -2353105, 5952288, 5036386, -83215, -2246805, 4884452, +5602248, 4593468, 4568772, 1264331, -3388729, 1232656, 4325032, -1631551, -3542811, 3403762, +5202279, -2086280, 2749316, -5668283, -413927, -4941360, 3569655, -6628745, -1770063, -1064615, +2414309, 3623342, 2494302, 41339, -3527779, 699006, -4905390, -3024731, 1028645, -311385, +-2887292, 1996086, 1851131, 828929, 3351148, -2340220, 1610076, -3209951, -1157494, -812286, +2650532, 9663676, -9846749, 316754, 120796, -2534568, -2990908, -3186329, 963683, -5575405, +-5494337, 712965, 2595771, -259309, 3086471, 2385318, -3040300, 1175747, -10788421, -2686502, +-2445447, -2558190, -3430068, -3794067, -9510131, -7414724, 968515, 2157684, -548682, 5066988, +4060892, 1665911, -1861332, -1080721, 4765803, -1912871, 560493, -758599, -5077188, 1629403, +-1721208, -3494493, -1359357, 4066260, 9933186, -3857418, 1082869, 2368138, -1872069, 3080029, +1373316, -3539053, 2000918, -8290898, -3841848, 36507, 3337190, 5174362, -3238942, -1542967, +-394063, -11989401, 1998234, 6114960, 286689, 841814, 3320547, -1995012, 5202279, 7055021, +-984084, 1974074, 4162360, 4021163, 666257, 220117, -2148558, -2725157, -2707440, -8527121, +1809792, 164819, -8244727, 1097901, 4418448, 6544457, 1592896, -4964446, 11217918, -1676111, +-2355790, 5174362, -3414499, -3369939, 428960, -4305705, 4939213, 4884989, -2158221, -7802345, +-3882651, 3621194, -5023501, 10608569, 9201967, -7628399, -9214852, 135828, 1596654, -8862665, +-672699, 3379603, 2325725, -4450123, -2572149, 9733470, -1159641, 6626061, -783295, -2452426, +-2416456, -5360119, 788127, -974421, 5262409, -4837207, 1136019, -1468342, 889058, -2978023, +-465467, 4233764, 3483755, -5980742, 8713952, 400506, -166967, -492311, -944893, 2018098, +-1364726, -8319352, -1285806, -4628364, 6702834, 2379412, -38655, 7882339, -4948876, 4973572, +5217312, -346282, -4622996, -20413442, 4439923, 887985, 14200772, -972273, 5581310, -7939784, +1457605, -5995775, -1603633, -3032247, -1133335, 2461553, -1779190, 2288144, 4629975, 3526705, +13446469, 9259413, -6442988, 2958159, -571768, 2348273, 1370095, -1919850, -13837311, 3267933, +-949188, -303869, 4896263, -979789, -4058207, -2805151, -916976, -4387846, -2551211, -11025181, +-2838974, 120259, -4136054, -846109, 4191351, 6277632, -2404108, 7796440, -6286759, 1147830, +2374043, 880468, -2207076, -4351339, 2588792, -1213865, 1432909, -3273302, -4843113, 667867, +2144263, -4629975, 3804804, -3212099, 9669045, 10626286, -3802120, 3786014, 3573413, -703838, +-2011655, -1583769, -13839458, 5378373, 4612258, 51540, -3034395, -5609764, -315680, -2077154, +-6645925, -4148402, -6430640, 6775848, 3930969, -390305, 7793218, -3900367, 7006166, -7511898, +-7227893, 3792456, -11636140, -3984656, 3135863, 7380902, 9545028, -1438814, 7161321, -41339, +6824166, 2672544, 1232119, -890669, 508954, 6869800, -3034395, -488016, 1348083, 792958, +-6430103, -599148, -3432216, 13789529, -6361921, -6350646, -1476395, 6621229, 6550899, 5755256, +7504382, -1047972, 1463510, -1405528, -3569655, 3036542, -236760, -458488, -4108673, 10887742, +6644315, -3040837, 2102923, 3397319, -5546414, 1447941, 4196183, -787590, 8033737, -2959233, +-994285, -8409009, -3242164, -7104950, 351114, 10455561, -3994857, 3155727, 1742683, 635655, +-2789045, -661425, 71941, -2224256, 4872104, -4828617, -2319282, -580894, -2021856, -18861886, +14011257, 1658394, -6828461, -16625282, -1496796, 640487, -9783936, -680215, 4809290, 4176856, +532039, -2648384, 3835943, 12268574, 12366285, -4986457, -5580773, -12985834, 2799782, -2128156, +13009456, -4974646, -136365, -2743410, 4985384, -1160715, -13037373, 4619774, -477815, -7510824, +146566, 1544578, -933082, -1009854, -5281736, -7210713, 4720169, 1479616, 6129992, -4854924, +10225780, 5162551, -1953673, -8556649, -1644436, 3635153, 10002442, 3481608, -5451924, -2107755, +4718559, 3420942, -2735894, -918049, 4968204, 4466766, 5238250, 10315975, 11052025, 5900212, +5948530, 7311645, -3795677, 1613834, -7092602, 7911867, 1270237, 4387846, -5040681, -7237557, +1937030, -9428527, -3642132, -3699041, 7433515, -6904160, -455803, 12776454, 7836705, 10794327, +2014877, -11913166, -3959423, 12545063, -3680787, -8027294, -8360691, -8233453, -8707509, 4714264, +4790499, 3058554, 2797634, 2891050, 12069395, -1544578, 5211406, -10452877, -11758010, 7797513, +-464393, -6435472, 410169, -16355772, -5375152, -5537287, 1955284, -613643, -1554778, -11515344, +-7562364, 1236951, 7875360, 12845173, -5159330, -5084705, 6810208, -8872866, -689342, -477278, +2903398, 5614059, 4537633, 8911520, -4855998, 12932683, 6037114, -13989245, 6913287, -7769059, +-9359807, -7701950, -11315628, 10183904, 2279017, -11919608, 1241246, 2584497, 957778, 1979443, +-2380486, 8539469, -5126044, 6634114, -10721312, 8112120, -5717675, -4497905, 368293, 3984656, +-1597728, 6534793, 27433030, -23126252, 11931956, 12407087, -9924596, -1105954, 16757889, 6604049, +10956462, 3856881, -2643016, 24764244, -100932, -3643743, 838056, 913754, 12353400, 18832894, +7686381, 708133, 1236951, 3534758, 7064685, 746787, 4166118, -11747809, 6846715, 10641318, +-1161252, 4836133, 902480, 2659122, -7202660, -5488968, 1371705, 564251, 12030203, 6332393, +5525476, -3828427, -4813048, -4892505, 7343321, 10152766, 1039382, -2121714, 19123878, 10276246, +13115756, -5652714, -12539694, -1682554, -13161390, -8420820, -3232500, -4987531, 248571, 11562589, +-2268280, 1380295, -7561827, -8271570, 11739219, 504659, 6143414, 6368900, -4248260, 11311870, +3994320, 2143189, -2075543, -5461588, 9593883, -947577, -12224014, 9831717, 9619653, -18932752, +1954210, 5766531, -9439264, 7224672, -16064788, 3194919, 4536023, -2503966, -6501507, -8463233, +-9583146, -16292958, 1802276, 17505750, -6120329, 8167954, 4644471, 12848932, 6947110, -5615133, +-11635603, 5340255, -3026341, -4691715, -12015708, -2411624, -1686312, -5409512, -5167383, -3424163, +-8417062, -11709155, 12797392, -2004139, -7450695, 9287867, 3564823, -9588514, 1354525, -1489817, +5781026, -12547747, 3364033, 3087008, -17128866, 4788889, 5747740, -9883793, 2695092, -391379, +-2619930, 5247377, 781147, -2381023, 977642, 3064996, 11862700, 7926899, 12125230, 6781754, +4516695, -4581120, 17969606, -6116034, -8703751, 17813914, 1670205, 9894531, 2935073, -5953362, +-17766132, -19246822, -3759170, -1775432, -6325413, -6454799, -32050120, 14019847, 25552372, 731755, +-16228534, 5767604, -3891240, -2193118, 3277060, 1434519, 5771899, -9222369, -155693, 22726282, +17267916, 14879914, -18605262, -1925219, 3222299, 7974681, -9489193, -10620380, -3481608, 1807108, +7220914, 2898566, -23615878, -26815628, 6872485, -2101313, 13326210, 13502303, -10620380, 10940355, +8750459, 11756399, -1985349, -9105868, -9201967, 4900021, -9685151, -4653060, -1114544, -1754494, +6695317, 15191836, 8212515, -5982890, -5050882, -9688909, -3237332, -769336, 3342022, -3308199, +-4087198, 6582038, 3966939, -14163728, -1351841, -1156420, 13877039, -9320079, -9860171, -18238578, +-6794102, 935229, -118648, 6518687, -3046743, 41876, -8546448, -13144747, -11042361, -12420509, +-6737193, 2051921, -20866024, 4255776, 3914863, 3409667, 5444945, 16080894, 1655710, 14041322, +-1490891, 18096308, 9101573, 14251775, 8737037, 4570382, -6483790, -81604, -3967476, 10015864, +3021510, 8898635, -7635915, -695248, 14778446, -17244294, -9841918, 14730664, -23510114, -9673877, +1914482, -3723200, -11599096, 24678346, -4159139, 17337172, 6688875, -13453985, -2141041, -4462471, +-17323750, -21566104, 18008262, 853088, -6583111, 5515275, 275952, -1882806, 6476274, 3735548, +-2436320, -7073811, 1447404, 18289582, 14241575, -10547366, 4503810, 2356863, 13197898, -4617627, +8819715, -17738214, -5027259, 14914274, 4038343, -2590939, 15302432, -3027415, 10527502, -19304268, +-25350508, -6533182, -194347, -14851460, 18173080, 16472273, 18356690, -5099200, -7515656, -1816234, +21561272, 15500537, 24295556, -21627308, -16276852, -37030672, 15905875, -4136054, -31674846, -6146635, +2948495, 4648229, -11875585, 12867185, 10814728, 1216013, -212601, 2005750, -5316633, -11016054, +2345052, -6265821, -10396505, -136902, 23881092, 742493, -3744138, -19176492, 7975755, 15138686, +-7956427, -23139674, -4329327, 7792145, 2624225, -4918812, 4888747, 1636919, 8157754, -2354179, +13548474, 20957292, 7744900, -13972602, 15603616, 7087233, -18086644, -19049254, 20425790, 9948218, +-8306467, -9333501, -739808, -16918950, 12028593, 16170015, -722628, 820876, 3722663, -2193655, +17374754, 5848672, 4164508, -7527467, 2353105, 5829881, 21362094, -5472862, 7707319, -17241610, +-20244328, 17037062, -3706020, -1870995, 270046, 16214575, -2189360, -4095788, -5692443, -7866770, +-25631828, -2669859, -16967268, -33857764, -34838092, -15426986, -26729192, -12482786, -4786741, 4074313, +14078366, 15693810, 1123671, -9468255, 17041356, -9580461, 8131447, -33472290, -3757560, -23170812, +-15635828, 14596446, 10194105, 9757092, 2957622, 21297132, -2720862, -2047626, -16314433, -6163815, +-3672197, -11453604, -11353746, -27666568, -11077794, -3677029, -4811974, -17394618, 14303852, 5164162, +8359617, -8069170, -3268470, -41665476, -12230456, -12023224, 9054865, 20229296, -13343927, -2744484, +-24262270, -2497524, 11864847, -4699768, -8462159, 4556961, 17194364, 29209536, 5898064, 98784, +-2091649, -8942659, -12481712, 7112466, -8427800, 26281442, 4771709, 10705206, 54830088, -12165495, +-10501195, -15246597, -21267068, -27149026, 16419660, 26682484, -14769856, 1464584, 6438156, -8300025, +-1582696, -18742164, 161598, -10193568, 28794534, 717796, -4804995, 23412940, -5258651, 7337952, +-25538412, 14254460, 4486094, 18354542, -7771744, 13873818, 23538032, 25627532, 14335527, 23189602, +11844446, -2761127, 22112102, -9725417, -14009110, -3773666, 9035537, 15584289, -35154844, -1587527, +-22658100, 19010062, 8444979, 391916, 6442451, 26297548, 1249299, 23565412, 9830106, 35252556, +3192235, -3059091, 15130096, 5838471, -17506824, 4630512, -2049236, -22670448, 16470126, -13336410, +-23041962, -46112916, 3531000, -4947803, 27466852, -14552960, 36769216, 13020193, -854699, -4847408, +14140643, 15991774, -27359478, -10781979, -20351166, 7710540, -9468255, 21002926, 5703717, 7008313, +6076842, 19133006, -10639171, -12115029, -11815455, 18393198, 10268193, 23555212, 7595113, 70351568, +-19131932, 1509681, 1966558, 33316062, 14811732, 15995532, -19618874, 10334228, -6790880, 1627256, +-8200703, 3151969, 24881820, -5151814, 9022116, 45923400, 15794742, -19455128, -22141630, 3662533, +31083216, 16156056, 7364259, -10522670, 26801670, 5036386, -1831804, -26675506, 10307385, -3628174, +13791677, -24212342, -13188771, 1961726, -4268661, 3904662, -21103858, -213138, -11984569, 7129646, +22843858, 16967806, 7706245, -31413390, 2661269, 3559991, -26247618, -25296820, -14437533, -13728326, +-11341398, 22963580, 7962870, -494458, 17714592, 23710366, 9337796, 20447802, 3744675, 13418015, +93765040, -20885352, 18491444, 9992778, -12009265, 2960843, -55941948, 1926293, 16113644, 39275864, +-14397267, 1842004, -21961778, -15088757, 8378408, 18818936, -17774722, 27072252, 12687333, -28976534, +22077742, -9992778, -13296145, 1621887, -16618839, 7470022, -6105833, 27639726, -11768210, 1955284, +15944529, -44387412, 9185861, 17928268, -11975443, 14937896, -26361972, 31995896, 5473399, 8301635, +-52007224, 52458732, 23338852, 19595788, 3380676, -27413702, 30692374, 1831267, -11789148, 53874996, +-7708930, -18200998, -9329206, 9973451, 16780438, 17761300, 5924908, -4319127, -56777320, -2410551, +17037598, 5255966, 23948200, -26449482, 34261492, 7956427, 13094282, -26610544, -6822556, 10168872, +43056512, -11625403, 11809549, -23586350, 28082106, 20379620, 26586384, -3121904, 12918188, 10908143, +-30015916, -23292682, 18027052, 21156472, 6707129, -2270964, -43421584, 44522168, -6564858, -7441031, +-13902272, -2049773, -33802468, -64847028, 25747792, 22254910, -608275, -11043972, -25198036, -1586990, +-6207302, -11617350, 28973850, -57370564, -23527830, -28740848, -7211250, -42776800, -1935957, -3573950, +659278, -4253628, -7022809, 10984379, 1870458, -16705275, -4041564, 3334505, -25528212, -10974178, +-5839008, 6101001, 23894514, -6800007, 45499808, -18102750, -709207, 22659710, -16620450, 16430397, +5090610, -24522116, -41407244, -5601174, 14094472, 45736032, 20397336, -25046638, -9968619, -82390896, +-26383984, 131533, 22060026, 55037320, 1126892, -43994424, 6830609, 36099736, -5956046, 6472516, +34455300, 41089952, 77020576, -67956048, -9062918, 24137716, 27579596, -9376450, -19865834, -21920440, +-25816512, 10727755, -26642220, 5619428, -11205570, -63369560, 13478681, -11314554, 17800492, -17901424, +-18636936, 805843, -27059368, 3977140, -27304718, -1001264, -5471789, -10813654, 11850352, -20160576, +-26683022, -23895050, -31202938, -5395553, -4281009, 33253784, 6419903, -24728274, -37419904, 4570919, +-1837172, 8504035, -8191040, 20221242, -25066502, -9563282, -34781720, -21503828, -10883447, 1181653, +-15454366, 35143568, -13552232, -29711510, 7924752, 36629628, 24938728, 11150809, -27190364, -16251083, +-4187056, 33589864, 61527552, 143345, 10696079, -11255499, -63657856, -12562779, 3656628, 24509768, +50652160, -27820650, -38046432, 22620520, 7486665, -10519449, -1057099, -17432736, 9092446, -49641768, +-9497783, 6085432, 8599061, -27817966, 31307628, -46654084, -64932928, -48282412, 37720012, 11806328, +-66121020, -11429445, -45447196, 20867098, 4359929, -91208464, 6803765, -27835146, -58712204, -45823544, +-67041756, 42214696, -19956566, -52966072, -23201414, 17627620, -30953292, -27098022, -20521890, -12380780, +-22647362, -23095112, -42230804, -30943092, -58233852, -33106144, -29007672, -9585830, -26679800, -5319317, +-11711302, -360777, 3740380, 8374113, 18220326, -15857019, 15541876, 2234994, 32307280, 13870597, +21010980, 19852412, -53500260, -13927505, 46983720, -6907381, -25191594, -30379914, -20435454, 18791556, +74991736, -3806952, 2046015, -47298864, -45957760, -9249749, 13865228, 44384728, 1042066, 40696964, +18932216, -45959372, 90575488, 3372086, 72052368, 2108292, -11125039, 38044820, -41412612, -59501404, +-32273994, -134386848, -74958992, -23296440, 70308616, -23045720, -56486872, 66381940, 63308892, -39460548, +-51641612, 268435, 56703768, -5566278, -3271155, -17005924, 49470508, -4789963, -13324062, -440234, +13503914, 26254062, 446677, -18191334, -22027276, 31520228, 1904281, -12094628, -33107218, 19687056, +9753871, -2536178, -26322244, 9352291, 10444287, 10528039, -16999480, -8368744, 2094333, 26695370, +-8274255, 10624675, -38021196, -8664023, -958315, 26166552, -52723408, -7386807, 3833795, 39088496, +-19137838, 7792682, -27750858, 5730560, 9447317, -15900506, -15409269, 206158, 4347581, 13808320, +-13572634, 3398393, -47938816, 27632208, -9758166, 45973328, -28936268, 22245784, -20556250, 23156854, +1203128, 16719234, 8655970, -30039538, 34978752, 11025181, 18788334, -33425582, 7111392, -6153078, +2836289, -19522236, -43176768, -57362508, 41519448, 27471684, -32780802, -46661060, -22940494, 21315386, +11115912, 28415504, 30642982, 5828808, -15698105, -4741107, 10618233, -10812580, -1024887, 6151467, +1593433, 17019344, 11905649, 4996121, -15671262, -813896, -9758166, 9762998, -16405701, -14340896, +11669963, -4011500, -6757594, -6766721, -11440719, -15773267, 1054951, 12380780, 11425150, 9397388, +-3804267, -13079786, -11223823, -8072391, 13689671, 18461380, -8865886, -13455059, -5786932, 15242302, +7945153, 20494510, -14835891, -5972152, 8143258, -4310537, 600222, -2629594, 7320772, 4026532, +5907191, 829466, -14161581, 5397164, 2579128, -976031, 10899016, -6138582, -2786897, 1418413, +-1966558, 943282, -3963718, 18085034, 4921496, -1845225, 18312130, 16797618, 20016696, -47216188, +-124995896, -45676440, 22888418, 65663608, 138170176, 92634392, 24114094, 35385160, -18035104, -55633784, +-92765928, -80581104, -64062660, -18117246, 2836826, 45294188, 49767396, 105676056, 51412908, 34162168, +-2306934, -21926882, -50308564, -25785910, -40627168, -46699180, -28766080, -23808614, -1519882, 13699335, +39643084, 24889336, 28523952, 26255136, 26216480, 39634496, 3614215, 27663884, -4788889, -11509975, +-32737852, -18971408, -48945984, -71640592, -63031868, 1467268, -10607495, 20594368, 34093988, 19435264, +52497924, 46621868, 66292820, 38622492, 44930728, 3205656, 2160906, -34361884, -57990112, -66472136, +-81380504, -52074868, -66624068, -4115116, -628139, 33633352, 33014340, 82209432, 62353260, 92045448, +35477504, 45042932, 16193100, 3987877, -55673512, -70020312, -29356102, -19980188, 0, 0, +0, 0, 0, }, }, { { -6253473, -6058052, -4815732, 7134478, -1403381, -4489315, 1406602, 3631395, -1666447, 892816, 3344706, --4984847, -3398930, -931471, -3041374, 9645960, -3819837, 9485435, 2748242, 3217468, -1248225, --2049236, -3347927, -4402342, 122943, 4133369, 345208, 535260, -2499671, 2736968, 3787088, -324270, -2057826, -4986457, 3352759, -925565, 3842922, -1635846, 697395, 1720134, -2787434, -17717, -4901095, 6687264, -70867, 988916, -612570, -5857262, -1512365, -1727114, 472446, -944893, 3424163, 1539209, -2306934, -3564823, 1728188, -2137283, -1110786, 4239133, -2357937, -3000572, -4167729, 2270427, -4828080, 2415919, -3235184, -1720671, 4893579, 2246268, 2660195, --718870, 383326, 1079111, 1206349, 1720134, 7618198, 784905, -2103460, -2191507, 1294933, --3721589, -94489, -7224672, 5126044, 6533182, 4533875, 6432251, -7781944, 613107, 1721745, --2769180, -2174327, -1894081, -9114457, -1529008, 5332202, -9278740, -7597261, 4389457, 3915937, --5956583, -2143189, 3953518, 439160, 4808216, 1985349, 5011690, -3211562, 974421, 615791, --1305670, 2246268, 1855426, 3307125, 1454383, -1586990, 360777, 3696356, -984621, -1821603, --595927, -4686346, -10063645, 5905043, 2976949, -3280281, 4502737, -1899449, 564251, -285615, -2143726, -2808372, -602369, 5827734, -5524939, -2416993, 2072322, 802622, -737124, -466004, -2774012, 93416, 2500208, -4239670, 4297652, 1845762, -4963372, 3878356, 714575, 1176284, --136902, -1998770, 12009802, -6819871, 2157684, -7545721, 975494, 1828046, -7596187, -9637370, -2486249, -10462003, 2386391, -2694555, -652298, -6400575, -857383, -7194070, -3639985, 72478, --7573101, 8180839, 2954938, -12658879, 1300301, -658204, -2201171, -5395553, 2836289, 6630356, -241592, -444529, 6302328, -3592740, 202400, -2272038, 4230006, -4759361, 1547262, 5825050, --4884989, 5100811, 1935420, 5514738, -302258, 1288490, -648540, -2260764, 7357279, -8842264, -2258616, -3882114, -1487132, -1102733, -2996814, -2332167, -6827925, -4388920, -821949, 4689568, --79457, 1814087, 6806450, -61203, -5215701, -619549, 636192, 1868848, -2240362, 143881, --4937065, 278636, -1564442, 2021319, 3697430, 4476967, 2585034, -1975685, -1489280, -3120831, --10141492, -360777, -6209986, -2125472, -1218160, -7198365, -1199370, -1861868, 3205119, 7871602, -7912404, 730144, -3733937, 3024194, -8149701, -1366873, -3270618, 2519535, -12022687, 3924526, -1750199, -662499, -3632469, -5307506, -2563559, -4417374, -3843996, 1976222, -1027034, -4738960, --1553704, 692027, 7456063, -517007, -8000451, 390842, 3118146, -311385, -2668785, 433792, -2706903, -8650064, -870268, -3874597, 5724655, 3412352, 806380, -7999377, 692027, 2816962, -4605279, 4295504, -5298916, -2588255, 77846, -1771137, -1746441, 4013647, -2706366, 2407329, -607201, -3411815, -802085, -4620311, 5405753, 1949378, -5335423, -3754875, 1003412, 2841121, --4059281, -5290863, -563714, 503048, -2933463, -16972638, 5300527, 4741107, 8003135, -2236067, -4961761, -14634564, -4138201, 4445291, 364535, -7279970, -2054068, -2479807, -12911209, -5236102, -1092532, -656056, -9274445, 5602785, 7838852, -8321499, 6055904, -10871636, -3910031, -1005559, -3492882, -82141, -4632122, 2957622, 1231582, -725313, 4581657, -2331630, -3381213, -950798, --2050847, -3169149, 4480725, -3608846, 1061931, 3626563, -1018981, -2753611, -5618354, -551366, --4102768, -1047435, -4730907, -1064078, 9495636, 351114, 5638755, -5308580, 4669703, -1369558, --8372502, -4511327, 4085588, -2663954, -4446902, 3216931, -5173288, 4321274, 690416, -1104880, -4830228, 5142687, 1678795, -4689568, -6277632, 173946, 7397545, 2254858, 785442, -3532074, -840740, -9888088, -9447854, -6535330, 173409, -2315524, 2614561, -3970697, -893353, -241592, --3460133, -1829119, 1249299, -3388192, 9105868, -7424388, 3719442, -2572686, -1612760, -5509906, --2216740, -1486596, 6366752, -5829345, -292595, 580357, -8120173, -5214627, -5856725, -4991826, --9276056, -3690451, 2013266, 4809827, 2586644, -7455527, -10348724, -2874407, -712965, -5581310, --135291, -4051765, -5899675, -12394739, -6850473, -8928700, 3639985, -2908230, 2752000, -5470178, --12355010, -6793028, -516470, -3104188, -4794257, -2487323, -5550709, 5230734, -579284, 2711735, -3560528, 390842, -1353989, -4714801, -1007707, 4308926, -2088965, -4575751, -6476811, 7614440, --8260833, -10545218, -8198556, -4735739, -6757058, 5386426, 8421357, -8386998, 2489471, -18321256, -5899675, -1174674, 3488050, 10245108, 4216048, -2417530, 3688840, -7556995, 4995584, 5579163, --9765145, -2126546, -4775467, 5679021, 5282273, 7683160, 9300752, -11656541, -5596343, 1845762, -10383083, -3877819, 5068062, -11218991, -2901251, -4037269, -1879585, -6891275, 2165201, -11188927, -8140574, -2384244, -1400696, 5309117, 243739, 984084, 6517076, -158377, 5472325, 2889439, --709207, -2297808, 38118, -8145943, -4933307, -7521562, 313533, 14147622, 4200478, 2274185, -490163, -2661806, 754304, 8090645, -951335, 2006824, -15932181, 14749455, -2740726, -3666828, -1986422, 8544301, 4633733, -2690797, -4543539, 15433965, -1854352, -1613297, 6836514, -5872831, -1654636, 381178, -1802276, 649077, 5502390, 240518, -750546, 8281771, 4795331, 9175661, --3241627, -1847910, 5455146, -7948911, 7726646, 8686034, -3880503, -466541, -12898861, 864362, -4926328, 3919158, -2433099, -8799851, -17910550, 503048, -2716567, -8483634, 2428267, 6025839, --7529078, -3206193, -8238284, 4551055, 933082, -1133335, -2433099, -3611531, 9799505, 11030550, -4710506, 5312875, -1942399, -5366025, 15697032, 3870839, -2076080, -8849243, 7109245, 333397, -9287330, -730144, 11366631, 5423470, 8144869, 6392522, 3869229, 8383240, 11127723, -352187, -2602750, -3432216, 586263, 5609764, 3126736, 2957622, -8507793, -3610457, -1137630, -8339753, --6847789, -5417565, 5279052, 8505646, 12706124, 14734959, 4572530, 666257, 13667123, -5754183, -14341433, -13157095, -6080063, -1560147, 5616744, -12278238, 8119099, -12085501, 6264747, 223338, -6628209, 10471667, -3999688, 9595494, 10359998, 9973988, -5455146, 8465917, -8647380, -6715718, --945430, -5113696, 51003, -4345433, 8135742, -5600638, 1881733, -5515812, -10161893, -4443681, --2061047, 12771622, -10317048, 10145250, 4389994, -14045617, 16616692, 4461398, 1912334, 12014634, -2120640, 932545, -6531035, 389231, -3635153, 13680545, 5624260, 9734007, -3595961, -1727114, -6404333, 11512660, -11528766, 11929809, 2085207, -1342714, -2159832, -10328323, 5223217, -4568235, -2196876, 1066763, -9860171, 3938485, 8337069, -6928856, 5308580, 4149475, 11731166, 1972464, --653372, 7873749, 10488847, 1693291, -5245229, 7820599, -6054294, -11440182, -8185134, 12367358, --15910169, 3956202, -8465917, 9387725, -10093173, 15363098, 5367636, 1416266, -13361106, 6738267, -11374684, 2900177, -6832756, -4580046, -3877819, 10408853, 5797669, -14810658, 2164127, -10524280, --474057, 1045288, -8767639, 11487964, 11812234, -5470715, 2703145, 7752416, -9526237, -1660542, --2809446, -8215736, 17237852, -6407555, -3607236, -8810052, -14116484, -2512019, 511638, -5206574, -2399813, -12134893, 1340030, 557809, -2058900, 9086003, -1605781, -7613367, 4182761, -338766, --5043366, 4332549, 20673826, -4418985, 5322002, 703838, -13163001, -2656974, 12882218, 5070209, -12872554, -1729261, 7841537, -10204305, 5285494, 3730179, 2537252, -8822400, 8959302, 2072322, --19636054, 1034013, -1373316, 13603235, -24564528, 28616830, 3724274, 11533061, -20078972, 11571179, -14947560, -16377247, 6789270, 8690866, 6824166, -10447508, 1823751, 2297808, -3254512, 6710350, -13434658, -10079751, -8302172, -2804077, 11450920, 9932112, 13914620, -274878, 6111202, -9693741, --2233383, -2243584, 2613488, 6720550, 17672716, 10650445, 6681359, 3649112, -170188, 8612483, --2651606, -14458471, -2476586, 4714264, 5133560, -8318278, -6169184, -10388452, 2472291, -504122, -4167729, -6694781, 13003013, 12670154, -10280541, 25719874, 1555315, -1993939, 245350, -4947803, --754304, -1292785, -9875740, 499290, 417686, 7063074, -20968568, 5552856, -7179038, 15826954, -19133542, 8412230, 8199630, 3782256, 1699733, 17152488, -2652679, -12371653, 11396159, -5804112, -4251481, 9862856, 1576790, -7562901, 6280316, 9560597, 8314520, 5034239, 10002979, -13050258, --8369818, 929860, -11714523, -3328600, -2250563, 2006287, -3251827, -7910793, -9578851, -6119792, -4272956, 7255811, -13974213, 2318209, -1705102, -963146, -16748225, -15428059, -2820720, -12119324, -5202279, -13747653, 639413, 6351183, 9899900, -9612137, 11818139, 2364380, -1330366, -3354370, -17649094, -5682242, -981937, -15027017, -8101919, 10874857, -934692, 3621731, -13763223, -15852724, --4105989, -9317932, -1440962, -192200, -5480915, -7989713, 4340065, -7502771, 726386, -10657961, --5078799, -1196685, -15817828, 502511, 10839961, 1010391, 5875516, 10471130, 20091858, -20081120, -3890704, -12814572, -10964515, -7457137, -8268349, -6564858, -5031554, 18670222, 19026168, 20208894, -22310208, -18080738, 437013, 11595875, 9017821, -10953240, -20032264, -3154117, -3653407, -16057809, --9522479, 27770184, 1496796, 1003949, 9993852, -2218351, 3854196, -4948339, -12120398, 6497749, -5555004, -16442209, -22623740, -18023294, -14193256, -13914083, 548682, 2660195, 5844914, -9648107, -7711614, 888521, -4850629, -10189810, -950262, -661425, -14603426, -12125230, 977105, -3740917, -1289564, -9709310, 6234682, 853625, -8567923, -18401250, -7348152, -7115150, -23315766, -8550206, -1548336, 9807558, -1658931, 11828340, -2914672, -2649995, -19931870, -5709622, 7055558, 1968706, --32971390, 7541426, 2246268, -10891500, -6068252, -11415486, -11232413, -2594697, -136365, -12716324, --4004520, 3674345, 8657043, 10965052, -12084427, 7827041, -6871948, 22452478, -19452444, -11975979, --4087198, -36578624, -19244138, -164819, -23461796, 18015240, -8393977, -7581154, 1840394, 41344964, -19720880, 1263257, 8231842, -1928440, -11387032, -1098975, -17482664, -12416750, 5592585, 6032282, -7080254, -11901354, 14930917, 9410273, 16917876, -17526688, 2414845, 25715042, 1961726, 1129576, -4598836, -24506546, 5788542, -6119255, 3526705, -9798431, -23768350, -1309965, 8802535, 11555610, -2345589, -3502009, 1034013, -933082, 7002944, -17399450, -26252450, 4704063, -10094247, 15374909, --6925098, -6199786, 19015430, 4620848, 7616588, 1727114, -17826798, -6767258, -3087545, 9202504, -25093346, 20312510, -7267622, -23104240, -1813013, -2581812, 7161858, -14207215, -19448686, -9972377, -6919729, -17236778, -40375912, 17186312, 14303852, -4936528, -26298622, -4891431, -9425843, -9955734, -13255880, 16139950, -377957, 5281736, -30027726, 12190728, -37868728, -8658117, -2213519, 9010305, -20826834, 32444720, 14143864, -16789028, 5408438, 23082764, 4124242, 7939784, 13065827, -17022030, --5826123, -1538672, 6845641, -11544872, -5656472, -2504503, -8389682, -5959267, 14601278, 14492293, -4721780, 2611877, 23846196, -2644626, 11928735, -23734526, 18314278, 6492917, -21449604, 4095251, -8966281, -19797652, -1131187, -19242528, 8800388, 10893648, 11304354, -12139188, 676457, 16426639, --9837623, 2527588, 222265, 25988848, -11602854, 20024212, 11224897, -18846854, 21891986, -12743705, -15359877, 20080582, -12999255, 13754096, -9944997, -11871826, -21068962, -14080513, -15017890, 12852153, -8156680, -31462782, -14137422, -14760729, 30162482, 2288144, 12147241, -3259880, 42176040, 7858180, --25857850, 3414499, 31344134, -9681930, 8044474, -3533148, 3958886, -16101832, -22278532, 38897908, -28020366, -8859981, 21807160, 9451076, 27954332, 31684510, -7552700, -5763309, 28219008, 21124796, -3457449, -7145752, -12137578, -12687870, 13698261, 25099788, 12372190, -3003793, 17147120, -7084012, -16307454, -5483063, 23220740, 40422620, 30895848, -30629560, 15618112, -4207994, -11984032, 773094, -12062416, 11892764, 72401872, -6098854, 84289, -10564009, -11936788, 14953466, 26500486, -5362267, -20199768, 17663054, -1818919, 1404991, -13647795, 14884746, 11976516, 38625716, 38468412, 47416976, -18901614, -11742441, -10960220, -21525840, 18715856, -31882616, 17228188, -21940840, 14886357, 12424804, --12621298, 3308736, 7092602, -6474663, 21662742, 4629438, -53408992, 11666205, 6012418, -39469676, -1372242, -7019587, 632434, 14062260, -2947421, -36380520, -7532299, -11711302, -3200825, 25451440, -29487634, -17595408, -5717139, -14745696, 6185827, -27725624, -55184424, -19238770, -17760764, 2872796, --734976, 24524264, -38434052, 17631914, -10339597, -3892851, 13191992, 7293392, 23546084, 6069326, -7723962, 27613956, -33459942, 39291972, 28579786, 16495359, 26520350, -10869488, 8368207, -26744762, --8229158, -13205414, 21042118, -20792474, 1938641, -45203992, -60176788, 38477000, -5443871, 25074020, --21220896, 16848082, -15588047, 4214974, -11193222, -36439040, -16980690, -24077586, -17640504, 14275934, -48468168, 20526186, -56511032, -10274099, 1743220, -15333033, 2083059, 1538672, -34004328, 15358266, -15345381, 28545426, -16442745, 9381282, -18651432, -21421686, 7093139, 38433516, 63362580, -5791764, --6026376, -383863, -3168612, -30764314, 43789876, 20078972, 22463216, 16856136, -14957760, 13969918, --27459336, -38811472, -8201240, 25768730, 16143171, -15152108, -10415296, -3805878, 20468204, -1069447, -14362908, 13921063, 24508158, 6719477, -18722836, -18013092, 13056164, -20070920, -15454903, 5531381, -26887032, 24439438, -32973000, -26221850, 13430900, 16267726, 54747948, -16013249, -33763812, -35169340, -24662240, -23703388, 22965190, 25994752, 55841016, 121526096, -31206696, -19656992, -50348292, -78626352, --27602682, -42040212, 86436, 46792060, -12347494, 21650394, 33735356, 18753974, -20907900, -54916524, --83727704, 29606820, -14806900, 15127412, -27528056, 2385854, -25283398, -65756488, 13700409, -28843926, -24068996, 1514513, 12451647, 10509785, -60266444, -43505336, -22592602, -15198816, -15710990, -26150446, --9592273, -41857140, -27306328, 16473884, -27861452, 46328200, -38533372, 1209033, 7864622, -6418829, -2095944, -4680978, 9467719, -13940390, -14410152, -4761508, 6533719, -4221416, 18726058, -22487912, -2231236, 27841052, 7562364, 1785633, 13320841, -918049, -14749991, -10839961, 22519050, 2616172, --41598368, -20414516, -34240016, -17574470, 39760124, 36211408, -43170328, -7720204, -48824652, -14449881, --6548752, 7257958, 20335596, -41379324, 22243636, -35871568, -8704288, -25613574, 45033804, -13758391, -30277908, 27936614, 66721244, -37214280, 23837606, 172872, 20784958, 4807142, 11185705, -41130756, --49798536, 34864932, 8507793, -53399864, -21517250, -31614180, 5564667, -4438312, -73642048, -31173410, --16733193, -37208912, -22157736, -73832096, -62259308, -8004209, 31291522, -38837240, -22323092, -2274722, --33272574, -4378183, 162135, -31219580, -6383932, 11250667, 4690641, -42684460, -23721642, -22573812, --12011950, -12435004, -2044941, -28309204, 29709362, 21808234, 41194104, 60369524, 51335596, 16694538, -54040352, 24940338, 11487964, -18703508, 20263656, 23084376, 16933446, -1707250, -15775415, -3910568, -14715095, 27275726, 119731344, 20318416, 25781614, 21658984, 49550500, 22981834, 43449500, 81487344, --36497020, -71404368, 9871445, 52487720, 86417424, 42343544, -74897248, 14042932, -19487878, 112687592, -78547432, 100952136, 86836720, -74532712, -55001352, 66044784, 70883600, -18937048, -55786792, 89573688, -72593000, -62817656, 14298483, -1698123, 10470057, -2783139, -5715528, 22643604, -22617834, 22012244, --8519605, -544387, 9678172, 6544994, 8904541, -885837, -12190728, -9321690, 15469935, -12867185, --373662, 12791486, -6347425, -9145596, -9705015, -21536576, -18873696, 13451838, -5869073, 4026532, --11130945, 944356, -25351044, -6608881, 9282498, 15626165, -9121974, 1880122, 14038637, 17070348, --2385318, 13671955, -10534481, 48139068, -16283832, 15008226, 4878546, 7359427, -6753836, 10766409, --2534031, 33203856, -2900714, 8307004, -21970368, 30029338, -14070313, -4357245, -1457068, 1702418, --6255083, 16639240, -19080392, 15430207, -17000018, 24053428, -24304146, 31507880, -18596134, -14911053, --9798431, -8932995, 6635725, -22195854, -45638324, -50194208, 42279660, 10522133, -13364864, -67944232, --27434640, 37520296, 7487202, 27041114, 30194156, -11184632, -19298898, 692564, 7011534, 5383205, -4853850, -12183748, -8983998, -6852621, -139050, 18130668, 9738301, -1076963, 3966402, -5462662, --9007620, -5833103, -4773856, 166967, 5290863, -4319127, 6876243, 7196755, -24968256, -11175505, --11084774, 13174812, 9180493, -923418, -11621108, -15722802, 13619878, 2972117, 9148817, 12717398, --23041426, -15331423, 4262218, 18641232, 9463424, -26142392, -16062641, -21167210, -10022843, 5707475, -5007395, -8495982, 9882720, -3593814, -8916889, 4584341, 9138080, -5978058, 2506114, 485868, --7724499, 185220, -2301029, -17433272, -18066780, 421444, -19082002, -12827994, 2241973, 10336376, -3527779, 17151952, -44362716, -120027160, -45952392, 26822070, 57088168, 135442336, 79306568, 21346524, -27883464, -23881628, -44532368, -96532072, -65457448, -50038516, -16882442, 19446538, 52324512, 40898288, -50758460, 49436148, 33005214, -11555610, -39882528, -34117608, -35578436, -28183038, -41150620, 12298639, --26302380, 1790465, 18034030, 34688304, 18826452, 32500018, 42087996, 818728, 11967389, 1003949, --1513439, -23876796, -4045859, -21191906, -42526620, -65543348, -37519224, -19815906, 4373351, 5296232, -38133404, 54597088, 51195472, 62503048, 8067023, 41247792, 15169288, -3067681, -39173324, -36709084, --51768852, -65841848, -46416248, -50662896, -33625300, 1422708, 15202574, 38641284, 59321552, 90254976, -70397736, 66618164, 34821984, -9830643, -11987791, -29533806, -70190504, -47001976, -64996812, -17580374, --9045738, 0, 0, }, +6058052, -4815732, 7134478, -1403381, -4489315, 1406602, 3631395, -1666447, 892816, 3344706, +-4984847, -3398930, -931471, -3041374, 9645960, -3819837, 9485435, 2748242, 3217468, -1248225, +-2049236, -3347927, -4402342, 122943, 4133369, 345208, 535260, -2499671, 2736968, 3787088, +324270, -2057826, -4986457, 3352759, -925565, 3842922, -1635846, 697395, 1720134, -2787434, +17717, -4901095, 6687264, -70867, 988916, -612570, -5857262, -1512365, -1727114, 472446, +944893, 3424163, 1539209, -2306934, -3564823, 1728188, -2137283, -1110786, 4239133, -2357937, +3000572, -4167729, 2270427, -4828080, 2415919, -3235184, -1720671, 4893579, 2246268, 2660195, +-718870, 383326, 1079111, 1206349, 1720134, 7618198, 784905, -2103460, -2191507, 1294933, +-3721589, -94489, -7224672, 5126044, 6533182, 4533875, 6432251, -7781944, 613107, 1721745, +-2769180, -2174327, -1894081, -9114457, -1529008, 5332202, -9278740, -7597261, 4389457, 3915937, +-5956583, -2143189, 3953518, 439160, 4808216, 1985349, 5011690, -3211562, 974421, 615791, +-1305670, 2246268, 1855426, 3307125, 1454383, -1586990, 360777, 3696356, -984621, -1821603, +-595927, -4686346, -10063645, 5905043, 2976949, -3280281, 4502737, -1899449, 564251, -285615, +2143726, -2808372, -602369, 5827734, -5524939, -2416993, 2072322, 802622, -737124, -466004, +2774012, 93416, 2500208, -4239670, 4297652, 1845762, -4963372, 3878356, 714575, 1176284, +-136902, -1998770, 12009802, -6819871, 2157684, -7545721, 975494, 1828046, -7596187, -9637370, +2486249, -10462003, 2386391, -2694555, -652298, -6400575, -857383, -7194070, -3639985, 72478, +-7573101, 8180839, 2954938, -12658879, 1300301, -658204, -2201171, -5395553, 2836289, 6630356, +241592, -444529, 6302328, -3592740, 202400, -2272038, 4230006, -4759361, 1547262, 5825050, +-4884989, 5100811, 1935420, 5514738, -302258, 1288490, -648540, -2260764, 7357279, -8842264, +2258616, -3882114, -1487132, -1102733, -2996814, -2332167, -6827925, -4388920, -821949, 4689568, +-79457, 1814087, 6806450, -61203, -5215701, -619549, 636192, 1868848, -2240362, 143881, +-4937065, 278636, -1564442, 2021319, 3697430, 4476967, 2585034, -1975685, -1489280, -3120831, +-10141492, -360777, -6209986, -2125472, -1218160, -7198365, -1199370, -1861868, 3205119, 7871602, +7912404, 730144, -3733937, 3024194, -8149701, -1366873, -3270618, 2519535, -12022687, 3924526, +1750199, -662499, -3632469, -5307506, -2563559, -4417374, -3843996, 1976222, -1027034, -4738960, +-1553704, 692027, 7456063, -517007, -8000451, 390842, 3118146, -311385, -2668785, 433792, +2706903, -8650064, -870268, -3874597, 5724655, 3412352, 806380, -7999377, 692027, 2816962, +4605279, 4295504, -5298916, -2588255, 77846, -1771137, -1746441, 4013647, -2706366, 2407329, +607201, -3411815, -802085, -4620311, 5405753, 1949378, -5335423, -3754875, 1003412, 2841121, +-4059281, -5290863, -563714, 503048, -2933463, -16972638, 5300527, 4741107, 8003135, -2236067, +4961761, -14634564, -4138201, 4445291, 364535, -7279970, -2054068, -2479807, -12911209, -5236102, +1092532, -656056, -9274445, 5602785, 7838852, -8321499, 6055904, -10871636, -3910031, -1005559, +3492882, -82141, -4632122, 2957622, 1231582, -725313, 4581657, -2331630, -3381213, -950798, +-2050847, -3169149, 4480725, -3608846, 1061931, 3626563, -1018981, -2753611, -5618354, -551366, +-4102768, -1047435, -4730907, -1064078, 9495636, 351114, 5638755, -5308580, 4669703, -1369558, +-8372502, -4511327, 4085588, -2663954, -4446902, 3216931, -5173288, 4321274, 690416, -1104880, +4830228, 5142687, 1678795, -4689568, -6277632, 173946, 7397545, 2254858, 785442, -3532074, +840740, -9888088, -9447854, -6535330, 173409, -2315524, 2614561, -3970697, -893353, -241592, +-3460133, -1829119, 1249299, -3388192, 9105868, -7424388, 3719442, -2572686, -1612760, -5509906, +-2216740, -1486596, 6366752, -5829345, -292595, 580357, -8120173, -5214627, -5856725, -4991826, +-9276056, -3690451, 2013266, 4809827, 2586644, -7455527, -10348724, -2874407, -712965, -5581310, +-135291, -4051765, -5899675, -12394739, -6850473, -8928700, 3639985, -2908230, 2752000, -5470178, +-12355010, -6793028, -516470, -3104188, -4794257, -2487323, -5550709, 5230734, -579284, 2711735, +3560528, 390842, -1353989, -4714801, -1007707, 4308926, -2088965, -4575751, -6476811, 7614440, +-8260833, -10545218, -8198556, -4735739, -6757058, 5386426, 8421357, -8386998, 2489471, -18321256, +5899675, -1174674, 3488050, 10245108, 4216048, -2417530, 3688840, -7556995, 4995584, 5579163, +-9765145, -2126546, -4775467, 5679021, 5282273, 7683160, 9300752, -11656541, -5596343, 1845762, +10383083, -3877819, 5068062, -11218991, -2901251, -4037269, -1879585, -6891275, 2165201, -11188927, +8140574, -2384244, -1400696, 5309117, 243739, 984084, 6517076, -158377, 5472325, 2889439, +-709207, -2297808, 38118, -8145943, -4933307, -7521562, 313533, 14147622, 4200478, 2274185, +490163, -2661806, 754304, 8090645, -951335, 2006824, -15932181, 14749455, -2740726, -3666828, +1986422, 8544301, 4633733, -2690797, -4543539, 15433965, -1854352, -1613297, 6836514, -5872831, +1654636, 381178, -1802276, 649077, 5502390, 240518, -750546, 8281771, 4795331, 9175661, +-3241627, -1847910, 5455146, -7948911, 7726646, 8686034, -3880503, -466541, -12898861, 864362, +4926328, 3919158, -2433099, -8799851, -17910550, 503048, -2716567, -8483634, 2428267, 6025839, +-7529078, -3206193, -8238284, 4551055, 933082, -1133335, -2433099, -3611531, 9799505, 11030550, +4710506, 5312875, -1942399, -5366025, 15697032, 3870839, -2076080, -8849243, 7109245, 333397, +9287330, -730144, 11366631, 5423470, 8144869, 6392522, 3869229, 8383240, 11127723, -352187, +2602750, -3432216, 586263, 5609764, 3126736, 2957622, -8507793, -3610457, -1137630, -8339753, +-6847789, -5417565, 5279052, 8505646, 12706124, 14734959, 4572530, 666257, 13667123, -5754183, +14341433, -13157095, -6080063, -1560147, 5616744, -12278238, 8119099, -12085501, 6264747, 223338, +6628209, 10471667, -3999688, 9595494, 10359998, 9973988, -5455146, 8465917, -8647380, -6715718, +-945430, -5113696, 51003, -4345433, 8135742, -5600638, 1881733, -5515812, -10161893, -4443681, +-2061047, 12771622, -10317048, 10145250, 4389994, -14045617, 16616692, 4461398, 1912334, 12014634, +2120640, 932545, -6531035, 389231, -3635153, 13680545, 5624260, 9734007, -3595961, -1727114, +6404333, 11512660, -11528766, 11929809, 2085207, -1342714, -2159832, -10328323, 5223217, -4568235, +2196876, 1066763, -9860171, 3938485, 8337069, -6928856, 5308580, 4149475, 11731166, 1972464, +-653372, 7873749, 10488847, 1693291, -5245229, 7820599, -6054294, -11440182, -8185134, 12367358, +-15910169, 3956202, -8465917, 9387725, -10093173, 15363098, 5367636, 1416266, -13361106, 6738267, +11374684, 2900177, -6832756, -4580046, -3877819, 10408853, 5797669, -14810658, 2164127, -10524280, +-474057, 1045288, -8767639, 11487964, 11812234, -5470715, 2703145, 7752416, -9526237, -1660542, +-2809446, -8215736, 17237852, -6407555, -3607236, -8810052, -14116484, -2512019, 511638, -5206574, +2399813, -12134893, 1340030, 557809, -2058900, 9086003, -1605781, -7613367, 4182761, -338766, +-5043366, 4332549, 20673826, -4418985, 5322002, 703838, -13163001, -2656974, 12882218, 5070209, +12872554, -1729261, 7841537, -10204305, 5285494, 3730179, 2537252, -8822400, 8959302, 2072322, +-19636054, 1034013, -1373316, 13603235, -24564528, 28616830, 3724274, 11533061, -20078972, 11571179, +14947560, -16377247, 6789270, 8690866, 6824166, -10447508, 1823751, 2297808, -3254512, 6710350, +13434658, -10079751, -8302172, -2804077, 11450920, 9932112, 13914620, -274878, 6111202, -9693741, +-2233383, -2243584, 2613488, 6720550, 17672716, 10650445, 6681359, 3649112, -170188, 8612483, +-2651606, -14458471, -2476586, 4714264, 5133560, -8318278, -6169184, -10388452, 2472291, -504122, +4167729, -6694781, 13003013, 12670154, -10280541, 25719874, 1555315, -1993939, 245350, -4947803, +-754304, -1292785, -9875740, 499290, 417686, 7063074, -20968568, 5552856, -7179038, 15826954, +19133542, 8412230, 8199630, 3782256, 1699733, 17152488, -2652679, -12371653, 11396159, -5804112, +4251481, 9862856, 1576790, -7562901, 6280316, 9560597, 8314520, 5034239, 10002979, -13050258, +-8369818, 929860, -11714523, -3328600, -2250563, 2006287, -3251827, -7910793, -9578851, -6119792, +4272956, 7255811, -13974213, 2318209, -1705102, -963146, -16748225, -15428059, -2820720, -12119324, +5202279, -13747653, 639413, 6351183, 9899900, -9612137, 11818139, 2364380, -1330366, -3354370, +17649094, -5682242, -981937, -15027017, -8101919, 10874857, -934692, 3621731, -13763223, -15852724, +-4105989, -9317932, -1440962, -192200, -5480915, -7989713, 4340065, -7502771, 726386, -10657961, +-5078799, -1196685, -15817828, 502511, 10839961, 1010391, 5875516, 10471130, 20091858, -20081120, +3890704, -12814572, -10964515, -7457137, -8268349, -6564858, -5031554, 18670222, 19026168, 20208894, +22310208, -18080738, 437013, 11595875, 9017821, -10953240, -20032264, -3154117, -3653407, -16057809, +-9522479, 27770184, 1496796, 1003949, 9993852, -2218351, 3854196, -4948339, -12120398, 6497749, +5555004, -16442209, -22623740, -18023294, -14193256, -13914083, 548682, 2660195, 5844914, -9648107, +7711614, 888521, -4850629, -10189810, -950262, -661425, -14603426, -12125230, 977105, -3740917, +1289564, -9709310, 6234682, 853625, -8567923, -18401250, -7348152, -7115150, -23315766, -8550206, +1548336, 9807558, -1658931, 11828340, -2914672, -2649995, -19931870, -5709622, 7055558, 1968706, +-32971390, 7541426, 2246268, -10891500, -6068252, -11415486, -11232413, -2594697, -136365, -12716324, +-4004520, 3674345, 8657043, 10965052, -12084427, 7827041, -6871948, 22452478, -19452444, -11975979, +-4087198, -36578624, -19244138, -164819, -23461796, 18015240, -8393977, -7581154, 1840394, 41344964, +19720880, 1263257, 8231842, -1928440, -11387032, -1098975, -17482664, -12416750, 5592585, 6032282, +7080254, -11901354, 14930917, 9410273, 16917876, -17526688, 2414845, 25715042, 1961726, 1129576, +4598836, -24506546, 5788542, -6119255, 3526705, -9798431, -23768350, -1309965, 8802535, 11555610, +2345589, -3502009, 1034013, -933082, 7002944, -17399450, -26252450, 4704063, -10094247, 15374909, +-6925098, -6199786, 19015430, 4620848, 7616588, 1727114, -17826798, -6767258, -3087545, 9202504, +25093346, 20312510, -7267622, -23104240, -1813013, -2581812, 7161858, -14207215, -19448686, -9972377, +6919729, -17236778, -40375912, 17186312, 14303852, -4936528, -26298622, -4891431, -9425843, -9955734, +13255880, 16139950, -377957, 5281736, -30027726, 12190728, -37868728, -8658117, -2213519, 9010305, +20826834, 32444720, 14143864, -16789028, 5408438, 23082764, 4124242, 7939784, 13065827, -17022030, +-5826123, -1538672, 6845641, -11544872, -5656472, -2504503, -8389682, -5959267, 14601278, 14492293, +4721780, 2611877, 23846196, -2644626, 11928735, -23734526, 18314278, 6492917, -21449604, 4095251, +8966281, -19797652, -1131187, -19242528, 8800388, 10893648, 11304354, -12139188, 676457, 16426639, +-9837623, 2527588, 222265, 25988848, -11602854, 20024212, 11224897, -18846854, 21891986, -12743705, +15359877, 20080582, -12999255, 13754096, -9944997, -11871826, -21068962, -14080513, -15017890, 12852153, +8156680, -31462782, -14137422, -14760729, 30162482, 2288144, 12147241, -3259880, 42176040, 7858180, +-25857850, 3414499, 31344134, -9681930, 8044474, -3533148, 3958886, -16101832, -22278532, 38897908, +28020366, -8859981, 21807160, 9451076, 27954332, 31684510, -7552700, -5763309, 28219008, 21124796, +3457449, -7145752, -12137578, -12687870, 13698261, 25099788, 12372190, -3003793, 17147120, -7084012, +16307454, -5483063, 23220740, 40422620, 30895848, -30629560, 15618112, -4207994, -11984032, 773094, +12062416, 11892764, 72401872, -6098854, 84289, -10564009, -11936788, 14953466, 26500486, -5362267, +20199768, 17663054, -1818919, 1404991, -13647795, 14884746, 11976516, 38625716, 38468412, 47416976, +18901614, -11742441, -10960220, -21525840, 18715856, -31882616, 17228188, -21940840, 14886357, 12424804, +-12621298, 3308736, 7092602, -6474663, 21662742, 4629438, -53408992, 11666205, 6012418, -39469676, +1372242, -7019587, 632434, 14062260, -2947421, -36380520, -7532299, -11711302, -3200825, 25451440, +29487634, -17595408, -5717139, -14745696, 6185827, -27725624, -55184424, -19238770, -17760764, 2872796, +-734976, 24524264, -38434052, 17631914, -10339597, -3892851, 13191992, 7293392, 23546084, 6069326, +7723962, 27613956, -33459942, 39291972, 28579786, 16495359, 26520350, -10869488, 8368207, -26744762, +-8229158, -13205414, 21042118, -20792474, 1938641, -45203992, -60176788, 38477000, -5443871, 25074020, +-21220896, 16848082, -15588047, 4214974, -11193222, -36439040, -16980690, -24077586, -17640504, 14275934, +48468168, 20526186, -56511032, -10274099, 1743220, -15333033, 2083059, 1538672, -34004328, 15358266, +15345381, 28545426, -16442745, 9381282, -18651432, -21421686, 7093139, 38433516, 63362580, -5791764, +-6026376, -383863, -3168612, -30764314, 43789876, 20078972, 22463216, 16856136, -14957760, 13969918, +-27459336, -38811472, -8201240, 25768730, 16143171, -15152108, -10415296, -3805878, 20468204, -1069447, +14362908, 13921063, 24508158, 6719477, -18722836, -18013092, 13056164, -20070920, -15454903, 5531381, +26887032, 24439438, -32973000, -26221850, 13430900, 16267726, 54747948, -16013249, -33763812, -35169340, +24662240, -23703388, 22965190, 25994752, 55841016, 121526096, -31206696, -19656992, -50348292, -78626352, +-27602682, -42040212, 86436, 46792060, -12347494, 21650394, 33735356, 18753974, -20907900, -54916524, +-83727704, 29606820, -14806900, 15127412, -27528056, 2385854, -25283398, -65756488, 13700409, -28843926, +24068996, 1514513, 12451647, 10509785, -60266444, -43505336, -22592602, -15198816, -15710990, -26150446, +-9592273, -41857140, -27306328, 16473884, -27861452, 46328200, -38533372, 1209033, 7864622, -6418829, +2095944, -4680978, 9467719, -13940390, -14410152, -4761508, 6533719, -4221416, 18726058, -22487912, +2231236, 27841052, 7562364, 1785633, 13320841, -918049, -14749991, -10839961, 22519050, 2616172, +-41598368, -20414516, -34240016, -17574470, 39760124, 36211408, -43170328, -7720204, -48824652, -14449881, +-6548752, 7257958, 20335596, -41379324, 22243636, -35871568, -8704288, -25613574, 45033804, -13758391, +30277908, 27936614, 66721244, -37214280, 23837606, 172872, 20784958, 4807142, 11185705, -41130756, +-49798536, 34864932, 8507793, -53399864, -21517250, -31614180, 5564667, -4438312, -73642048, -31173410, +-16733193, -37208912, -22157736, -73832096, -62259308, -8004209, 31291522, -38837240, -22323092, -2274722, +-33272574, -4378183, 162135, -31219580, -6383932, 11250667, 4690641, -42684460, -23721642, -22573812, +-12011950, -12435004, -2044941, -28309204, 29709362, 21808234, 41194104, 60369524, 51335596, 16694538, +54040352, 24940338, 11487964, -18703508, 20263656, 23084376, 16933446, -1707250, -15775415, -3910568, +14715095, 27275726, 119731344, 20318416, 25781614, 21658984, 49550500, 22981834, 43449500, 81487344, +-36497020, -71404368, 9871445, 52487720, 86417424, 42343544, -74897248, 14042932, -19487878, 112687592, +78547432, 100952136, 86836720, -74532712, -55001352, 66044784, 70883600, -18937048, -55786792, 89573688, +72593000, -62817656, 14298483, -1698123, 10470057, -2783139, -5715528, 22643604, -22617834, 22012244, +-8519605, -544387, 9678172, 6544994, 8904541, -885837, -12190728, -9321690, 15469935, -12867185, +-373662, 12791486, -6347425, -9145596, -9705015, -21536576, -18873696, 13451838, -5869073, 4026532, +-11130945, 944356, -25351044, -6608881, 9282498, 15626165, -9121974, 1880122, 14038637, 17070348, +-2385318, 13671955, -10534481, 48139068, -16283832, 15008226, 4878546, 7359427, -6753836, 10766409, +-2534031, 33203856, -2900714, 8307004, -21970368, 30029338, -14070313, -4357245, -1457068, 1702418, +-6255083, 16639240, -19080392, 15430207, -17000018, 24053428, -24304146, 31507880, -18596134, -14911053, +-9798431, -8932995, 6635725, -22195854, -45638324, -50194208, 42279660, 10522133, -13364864, -67944232, +-27434640, 37520296, 7487202, 27041114, 30194156, -11184632, -19298898, 692564, 7011534, 5383205, +4853850, -12183748, -8983998, -6852621, -139050, 18130668, 9738301, -1076963, 3966402, -5462662, +-9007620, -5833103, -4773856, 166967, 5290863, -4319127, 6876243, 7196755, -24968256, -11175505, +-11084774, 13174812, 9180493, -923418, -11621108, -15722802, 13619878, 2972117, 9148817, 12717398, +-23041426, -15331423, 4262218, 18641232, 9463424, -26142392, -16062641, -21167210, -10022843, 5707475, +5007395, -8495982, 9882720, -3593814, -8916889, 4584341, 9138080, -5978058, 2506114, 485868, +-7724499, 185220, -2301029, -17433272, -18066780, 421444, -19082002, -12827994, 2241973, 10336376, +3527779, 17151952, -44362716, -120027160, -45952392, 26822070, 57088168, 135442336, 79306568, 21346524, +27883464, -23881628, -44532368, -96532072, -65457448, -50038516, -16882442, 19446538, 52324512, 40898288, +50758460, 49436148, 33005214, -11555610, -39882528, -34117608, -35578436, -28183038, -41150620, 12298639, +-26302380, 1790465, 18034030, 34688304, 18826452, 32500018, 42087996, 818728, 11967389, 1003949, +-1513439, -23876796, -4045859, -21191906, -42526620, -65543348, -37519224, -19815906, 4373351, 5296232, +38133404, 54597088, 51195472, 62503048, 8067023, 41247792, 15169288, -3067681, -39173324, -36709084, +-51768852, -65841848, -46416248, -50662896, -33625300, 1422708, 15202574, 38641284, 59321552, 90254976, +70397736, 66618164, 34821984, -9830643, -11987791, -29533806, -70190504, -47001976, -64996812, -17580374, +-9045738, 0, 0, }, { -6189585, -5708549, -5827734, 4446902, -2529736, 1142461, -8290898, 4577899, 1128503, -279173, -1499481, -3481071, -4316442, -924492, -1751810, 3629784, -9207336, -2603287, -5244692, -2419677, 1912871, -1406602, 4478041, -7128035, 2143726, 754304, 408559, -2933463, -799938, -3810710, -486942, --5206574, 1706713, -5771363, -512175, -4916664, -3936875, 806917, -4359392, -5549098, -6791417, -1804960, -791348, -1369021, 2682744, 1993402, -2641405, 55835, 7233799, -3696356, -2362232, --5546414, -1621350, 3125126, 1724966, 1770600, -2612414, 2251100, -3163244, 360240, -3856881, --432718, 253403, -4028679, -1493038, 584116, -585726, -4527970, -8455717, -3602941, -3030636, --1060857, -237297, -1986959, -2407866, -574989, 8009041, 5094905, 83215, 188442, 6310381, -1492501, -3209414, 2062121, 4198331, -2253784, -3537979, -12737799, 654446, -4372277, 8416525, --4318053, 4223027, 3259880, -433792, 2597382, 4676683, 1107565, 1111860, -2476586, -2741263, --2334315, -3453691, 2845953, 1861868, -1858110, 2798708, -2117956, -2727841, -3567507, -1536525, --2880313, 305480, -217970, -400506, 5499706, -3240553, 4434017, -1597728, -1505923, 3288334, --2284923, 1118302, -2302103, 3612604, -1382980, -9716290, 2556043, 502511, 812286, 5129265, -2143189, 536334, -1571421, -3073049, 7971996, -4265440, 2782065, 1930588, -4027069, 3778498, -1013075, -3891777, 2664490, -4008815, -408559, -180389, 3025805, 882616, 3149285, -1238024, --9478456, -1779190, 15497853, -7443715, 990527, -324270, -308164, 3628174, -2621541, -10895795, --10021232, 4916127, -3070902, -811212, 2742337, 693100, 2711198, 2988760, -4691178, 2743410, -1957968, -3302830, 4171487, 6176700, -3791383, -1171989, 461172, -6401649, -2787434, 783295, -7967165, -1132798, -267899, -6374805, 4022237, 129923, -5650030, -2363843, 2214056, -755914, -1325534, -4911832, 78383, 477278, -1847373, 5524939, 1581085, 1349157, 5432597, -398358, -6999723, -2124398, -8339216, 3623879, 3632469, -2866354, -1032940, -887448, 1373316, 558883, -2726231, -1783485, 1944010, -4489315, 181999, 3293703, -4051228, -292595, 3118683, 1097901, --1803349, 1837172, -1158031, 828392, 5115843, 2000381, -5203890, 7905424, 3719979, -3568581, --8815420, -930934, 1110786, 10026601, -3619584, 8611409, 2276870, -155693, 680752, 7715372, --1604707, -1944010, -2032593, 5473936, 11021960, 2972117, -7315403, -10030896, -14276471, 2020782, --3595425, -5949067, -3149822, -9294309, 145492, -4246112, 906775, 4649839, 4967667, -5244692, --4600984, -3289945, 821413, -7865696, -647466, 2615098, -3386045, -1187022, 1083406, 3355980, --4237522, 1308354, 10830297, -299574, -236223, -3752728, 4690641, -1814624, 694174, 3508988, -4697621, 6656663, -697395, 1122597, -1596654, 83752, -726386, 1040993, 10563472, -11084774, -694711, 2401961, 6477348, -2265595, -2462627, -407485, -2244121, 8402567, -3831111, -10287520, --18790, -2746095, -3628174, 3215320, -9535364, -16432545, 6243809, -5088463, 6999186, -6145562, --484258, 4863514, -9467182, -1567663, 2994129, -2527588, 13996225, -5766531, -1677722, -5498632, --4569845, 7217693, 8038032, 3146601, -9275519, -11234561, 10544145, 1822140, -10500658, 4026532, -484258, 5082020, -3045669, 4852776, -6240051, 3160559, 10333154, 4298726, 4486630, 2394981, -286152, -2532420, 2247342, 872415, -6869264, 192737, -2097555, -5051956, -4998268, -1864016, -4169340, -7278896, 1136019, -5239323, -409096, -722628, 2573759, 4463008, 9397925, 3367791, -107911, 4084514, -4769025, -7150584, 56908, 1828046, 959925, 8935679, -1773285, -901943, --2555506, -1042066, 1542430, 4507032, -808528, 2081985, -3920768, 7495255, -1267015, -1952063, --664109, -8627516, -2298881, -5733245, -918586, 10581726, 6635188, 4514011, -1202591, -10030896, -977642, -6733972, -10593000, -3783866, 6991670, -6168110, -9433896, 1971927, 410706, -4917201, -601295, 4755066, 1052804, -12494597, -3794067, 7180112, 8575976, 4041564, -10386305, -4059281, -4191888, -2138894, -2530273, 209917, 2976949, 92879, 860604, 9822590, -361851, 5753109, -4434017, -552977, -5016522, -598611, -3123515, 5630702, -3901978, -6356015, -389768, 9089225, -129923, 9009768, 4730907, 366683, 5745593, -1621887, 12825846, 465467, 6113886, 6842420, -232465, -6842420, -1423245, -8092256, 3280818, -6039261, -3488050, -5675800, -3766686, -3195993, -1846299, -104153, 3021510, -1170916, -4934381, -4825933, 500364, 5342940, 9993852, -14965814, --2756832, 12495134, -6210523, 2257005, -9649718, 4216048, 17633526, -2430952, 957241, -801011, --12410845, 940598, -751082, 18617610, -5848672, -995896, 8227547, -5240934, 11649562, -7909183, --1093606, -11916924, 13434121, 66572, -5163625, 42413, 4991826, -6345278, 9392020, -1134408, -8346195, -217433, 4439923, -13076565, -8165807, -6203007, -1781875, 7587597, -11531987, 6047314, -5010080, 1412507, -4650376, -7286412, 16291885, 2947421, -1599339, 5975374, -5439576, 3101503, --7301982, -7729331, -2809446, -5307506, 17683990, 4849018, -3107409, -5523865, -6246493, 5076115, -4933844, 1232119, -5636071, -1183800, -1933272, 6957847, 1303523, 5514201, -13267691, 7123204, --274341, -117575, -244813, 2091112, -3854196, -311385, -1649804, 5861557, 2653753, 4745939, -1081795, -416612, -2447595, -8488466, -2953327, -5649493, 2688650, -790811, 11576011, -10612864, --13496935, -3799436, 3587908, -4578972, -3626026, 9727027, 1581085, -6189585, -7001871, -7299297, -10727218, -6193343, 7093139, -4206384, 7804493, -8829379, 1334661, 12153684, 3867618, -17917530, -3500935, -200790, -2714419, -2144799, 1283122, -2684355, 1183264, -3454228, 885300, -1341104, --8255464, 7110319, 7450158, -3039226, 8304320, -8206072, -1823214, -2867428, -4108136, 8988293, --7517267, -13124346, -7474854, 1560684, -10640245, -10208064, -5251672, -4012573, -7022809, -1417339, -7723962, 7793755, 772557, 8405251, 2379949, 165356, 6583111, -8866960, -1833414, -1488206, -19488414, -9390409, -9020505, 6370510, 15882789, 3193845, 14328011, 8207146, 13035763, 5818070, --2209761, -5716602, 4801774, -9494025, -7100118, 10824391, 9180493, 22500260, -359704, 3202972, --8075613, 8731669, 4151086, -9918690, -2131378, 12749074, 200253, -13931800, -5399848, -7851200, --2423972, 7828652, 7423851, -5283884, -2305324, 9736691, -9154186, 4326643, 8476118, 9781788, --4944044, 8405251, -3271155, -12775917, 4798016, 11636140, -2819646, 3307125, 3169686, -4046933, -1750736, 3402688, -3303904, 1185948, 9805410, -5712307, -2600066, 8579734, -1520418, -1946157, --14125611, -5333813, -8375186, -14610942, -9298604, 6953552, -4314295, -6446209, 12873091, 12116103, --2707977, 13008919, 5837398, 8356933, -1978906, -7428146, 5977521, -9786083, -10461467, 14105209, --2373506, 32260036, -13316546, -6302328, -751619, 7827578, -4509179, -4461398, -13309030, -15467251, -6955163, 1257889, 21259552, 6798397, -2164127, -2524904, 14126684, 14305462, -11902428, 8531416, --11368778, 2858838, -4892505, -6010807, -3485366, 2260764, -1846299, 7311108, 3754338, 8185134, --1046361, -4209068, -7873749, -1752884, 9142912, 569083, -12186970, -1804423, 2929705, -5494337, -9596031, 7817378, 1639604, 2477659, -26636314, -10565083, 9194451, -1048509, 14799384, 3693135, -16669305, -2404645, -9262097, 8402567, -5291400, 5484673, 839666, 23772644, 19942606, 1584843, -5355824, -4256850, 7594039, 7479686, 8671002, 8734890, 15538118, -1804960, 2035278, -8116952, --6539088, 2536178, -8998493, -22841172, -28036472, 22135188, -637266, 2531883, -7772280, 12427488, --26629870, -17035450, -5390721, -6797860, -656056, -23820962, 4661114, 548682, -652298, -10829760, --11103564, 4598300, 15204184, 2454037, -20302848, -4287451, -16619376, 13259101, 8483634, 805843, --7342784, -3316252, -3731253, 11005854, -1505923, -11274, -2293513, -14476187, 7707856, 10567230, --6083285, -3007014, 8121783, -15693274, -11542188, -17313014, -5834713, 4828080, -11085847, -4955319, --265214, -17821430, 5842766, 11799886, 20271708, 3446175, -1632088, 1857037, -12724377, -9604621, -15775952, -316754, -5243082, -2751464, -22737556, -11598559, 5382668, -3863323, -1773285, -598611, -16475495, -1252520, -13138842, 2798708, 13116830, 1642288, -4858145, 2232309, 3840775, -2914135, --6191732, 3593814, 15702937, 14514305, 5795522, 23993834, -9487583, -3905736, 4573604, -5122286, --959925, 8486319, 25559888, -3032784, 5834176, 823023, -721018, 586800, 28084792, -12209518, -14951855, 888521, -17109002, 6987912, -16969416, -9771051, 11039677, -8250632, 8038568, 1517734, -1762547, 13381507, 10577431, -13523241, -15884400, -11315091, -3411278, 6007586, 5603322, 3071975, -4096862, -18717468, 3870839, -9406515, -24409910, 18562848, -4142496, 17580912, 18100602, 2471754, -7301982, -7694434, -10360535, -18284212, 5456219, 19848654, 4132832, -6288369, 2030446, -2244657, -3782793, -8835821, -7714835, -8725226, 2942590, 770410, -2318746, 13928042, 11809549, 8701067, -18459770, 4464082, -16469052, 26023744, -15284715, -2057289, -2369748, -297963, 22138408, 24900610, -6554120, -43995496, 2588792, 13716515, -13888850, 10060424, 18959060, 1909650, 5848672, 12397423, -9693204, 4435628, 17126718, 4727149, -1291711, 31453120, 12256226, 5056250, 14083735, -8943196, -17060146, -10180146, -40265, -149787, -2781528, -15523622, 6527277, -10637023, 22588306, -761820, --3318936, 33003602, 5187247, 5851893, 11526082, 2413772, 7039452, -5909875, -12932683, -331786, -10296110, -15159624, 19997368, 18486612, 13638669, 4628901, 8503498, -10029822, -10845329, -17362406, --7313256, -8728984, -8664560, 5840082, -857920, -16900160, -7162395, 17557290, 690953, -13630616, -9533217, 681826, -9334575, -22972170, 2650532, -35570384, 22513144, -10981158, 20454782, 2709051, -6037651, 2488397, -7384660, 11767137, 30517890, 11869142, 8711804, 23960012, -34206732, 12717935, --20222854, 16234976, -8841727, -14772540, -4504884, -16937204, -7280507, -4288525, 5489505, 6847252, --5136781, 22877144, -1461900, -4750771, -3491809, -22046068, -2665027, -631360, -18231062, 5027259, --15559593, -20045150, -6466074, 10871636, -32154272, -22461068, -14658723, 875636, -22533546, -19813222, --15505906, -8530879, -6300180, -3731253, -15151571, 15398531, 2813741, -2372433, -11218455, -12421582, -22031034, -19847580, -12839805, 4959614, 6086506, 7080791, -10752987, -16172162, -6114960, -3626563, -7631620, -11808476, -3886409, -5259188, -12554189, -23219666, -27697170, 26240640, -28604482, -2279554, -3111704, -5737540, -4267050, -26897770, 11586211, -6780680, -26059714, -998043, -4211216, 25782152, -8640400, 18530636, -30390114, 34283504, 5124970, 3055332, -6364068, 17147656, -107374, 28512140, --8214125, 19372450, 10446971, -29175712, 12141336, 4097936, 13342316, -2969970, -7845832, -12062416, --4401805, 13272523, 30565672, 2511482, -4669167, -20241644, 7186554, -21870510, -3476239, 20375324, --19325206, -881005, 1227287, -4272956, -7356205, -9172976, 33982856, -8425115, -8470212, -5249524, -7637526, 10258529, 4194573, -672699, -7038915, -1404991, 5005785, 19334332, -4857608, 28176596, -17202418, 7295539, -7255274, 24203752, 29194504, -4132832, -7959112, -3359201, -9762998, 984621, --9720585, 12739410, 4706748, 19120658, 16057809, -28489054, -29964914, 32742684, 25543782, 1398549, --5883032, -17019344, -20566450, -10896332, 18257906, -22382686, -22568980, -6995428, -9146133, -31875636, -14430016, -13521094, -5011153, -3581466, 2103460, -448287, -19852950, -55756192, 26537530, -27295590, -9814537, 38193532, 5044976, -17326972, 10361609, 12704513, -6622303, -13335873, -3505230, -27941984, -7988103, -29007672, -17977122, 10332081, 234613, 3918621, -26292716, -6109591, -19236622, -16496969, --23517630, -8841190, 6816650, -14418205, -14578193, 12306155, 917512, -2091649, 3309272, -26974542, --2507187, -21208548, 16404628, 3764539, -50362248, 11436424, 25627532, -6704981, 14943265, 12250857, -8125005, 6123013, 24480776, 18747532, -86436, -19252728, -4622459, 18898930, 12263742, -17999672, -494458, -20870320, -6984691, 15569, 13634911, 17678086, -35505420, -29130078, -15896748, 1385664, --10682121, -5529771, 32423782, 3544959, 7670812, 23548232, -11014444, 5651640, 19289234, 18664854, --29474750, 7497403, -5435818, -6976638, -5938329, 21599390, 12103755, -13935558, -7334194, 16704738, --26927298, 2615635, 11499775, 16706886, -2069637, 4467303, -31568546, 855772, -13240847, 11959873, -5381594, 19195820, -27539330, -13635984, -2816962, 4499515, -1075352, 6568616, 3505767, 16680579, -31180926, -17908940, -22810572, 7299834, -23804856, -6579353, 12160126, -17530982, -16301012, 2367601, -12640626, 16335908, 12632036, -6048925, 139050, -31390842, -20008642, 29483876, -18092012, 39498128, --14562623, 8717173, 7534447, 543850, -26472568, 36435280, -14584098, -2522220, -4341138, 14747307, -28937342, -26255136, -13199508, 32687386, -21234318, 819265, -6449967, 7375533, 39430484, 1083942, -91268, -21912386, 31288836, -8286603, 10663867, 7905961, 1970853, 18016850, -19694036, 6047314, -16967806, 16915728, 37611028, -23201414, 34547644, -5501316, -22177064, -21393232, 5873905, 14907295, --9715753, -3954591, -15268609, -5698348, 29177324, -19787988, -1780264, 24067922, -7453379, 14695231, --9256728, -3641596, 24779814, -31139, 1261110, 24767466, 16517370, 6776922, -3011309, 21147882, -27426050, -27029302, 25730076, -23702314, 12929462, -16750909, 3516505, 22536230, 7027104, -47170552, -21191906, 15105400, -522912, 25996900, -38871600, -5895380, 25680684, 23900956, 3191698, 36748276, --19204946, 2314987, -5140002, -3329674, 14263586, 8474507, 25385942, 24351390, -17299592, 17291538, --31431644, -6260452, 1304060, 2081985, -3611531, -687732, -48980880, -21124260, -38271380, -18468896, -25765508, -8110509, -4491462, 16559246, -11991012, 11466489, 29496224, -16365436, 11338714, 14542759, --21375516, 2684892, -26279294, 9916006, -2893197, -14012868, 20646982, 556198, 32253056, -2043868, --24358370, 40909028, -7509214, 4018479, 5495948, -38533372, 11401528, 33013802, 11610907, -14490146, --25393458, 2509872, 5907728, 28181428, 18000744, -9370545, -5785858, -22214644, -93952, 31847720, --43866112, 13008919, 30072824, -27611808, 9654013, 2583960, 10122164, 31745178, 10232223, 12034498, --6441377, -31833760, 32021666, -6469295, -17253420, 67826120, 32955284, 16887274, 2281702, 939524, --32911798, -27048094, -12789876, 19292456, -1587527, -19548544, -14147622, 24298240, -16531329, 16258062, -8765491, -13889387, 17441862, 6918656, -28275918, -15431817, -17001628, 2150168, 16235513, -36690832, -11680700, 41966664, 69909720, -11537356, -2172717, -57137024, -19027242, -42008540, -27848568, 39034812, -2985002, 10624675, -32145146, 10513006, -28171228, -64019172, 9628243, 30736934, -2214593, 3944928, -33463164, -43943956, 50485728, 24907590, 16052977, -24915106, 34132640, 64856692, -12435004, 19965156, -49844708, 41522672, 74056512, 15826954, 26985280, 19840602, 18537078, 62957780, -15735686, -7687455, -24012626, 13623099, -6059662, 34505768, 2954938, 7086159, -19672024, -56622700, 3192235, 37366216, -6813429, 22520124, -39517996, 2250563, -52832928, -192737, -56757456, 3691525, 42324756, -5508296, --15644955, -55813636, 74512312, 12802761, 6990060, 74778064, 1503775, -17702244, -9910637, 3271691, -18346490, -4945655, 4308389, -7099044, -34540664, 21650930, 16773458, -19714436, -70648456, 5870147, -101004744, 16697759, -17743046, -16714939, -42546484, -27023934, 3744138, 63936492, 13265543, -38787848, --530428, 19127636, 6485938, 3582540, -1595044, 13065291, -26917634, -8672076, 17513802, 36484672, -36936720, -30128658, -9955197, 4847945, 7147900, 11046656, -34790844, 5985574, 8696235, -7452842, -29497298, 2114735, 33656976, 49103824, 25019796, 12093554, 23030688, -24068996, 26806502, -18954764, -38778184, 66123704, 23735600, -31896574, -26855894, 31365610, 13377749, 56795572, 43671764, 15033459, --7248831, -9569724, 4648229, 5455682, -15853261, 23757074, 21552682, 6210523, 52170432, 36295160, --1289027, 26695370, 29963302, 15234249, 30054034, 3949223, -43125768, -2972654, -7610682, -8048232, -56817048, 26955752, 12765717, -3056943, -17034378, -72025528, -17470854, 36042828, 18516678, 81993608, -2257005, -15111842, -40312028, -77270760, -83981104, -16562468, 32985348, 36553928, 23181012, -44372916, --56673168, -3569655, -8781061, 18498424, 54831164, 25610354, -7357279, -37557340, -48256104, -32630478, --37044, -32139240, 9211631, -27598386, -13632226, 34053720, 29554744, 23917062, 9132174, -43095164, --12605729, -41541996, -30374008, -19408958, 20334522, -8727374, 21731460, 52776020, 58409944, -29980482, -5328444, -49459768, -31852552, -26536456, -5380521, 2640331, 33280628, 31222264, 49670224, 30175904, -11542188, -31909996, -24899536, -12560095, 14865419, -49233748, 1383516, 40904196, 37197100, -18855980, -50847044, 37692632, 24301462, 38758320, -96273840, 10248866, -30537218, -42780560, 9419937, -30746060, --15760919, 37589016, 15997143, -105924632, -122119344, -132191576, -133933720, -186293664, 1904818, -57659936, --9482751, 40709848, 80600432, 108095736, 110452064, 212178896, 225792336, 186988912, 141905712, 150296480, -143065360, 64088428, -6324340, -75322456, -76608256, -123379376, -31955630, -60589104, -43015172, 8506720, --104301672, -19936702, -92111480, -14891725, -107905688, -99478960, -40687300, -80014704, 1505923, -34174516, --32833414, -57033944, -35903244, -92840552, -64632816, -27576912, -27099096, -44121124, -25638270, 6895033, --37329708, 25552372, 74017320, -42673184, 85280872, 56556668, 110681848, 114527984, 96151968, 121487984, -98255432, 165320272, 158137472, 130129456, 166019280, 146389136, 215013584, 216574256, 245936272, 194102992, -197500320, 222690832, 184506432, 232209024, 144846704, 237232512, 146835808, 4883915, -65832720, -116003848, --93619016, 0, 0, }, +5708549, -5827734, 4446902, -2529736, 1142461, -8290898, 4577899, 1128503, -279173, -1499481, +3481071, -4316442, -924492, -1751810, 3629784, -9207336, -2603287, -5244692, -2419677, 1912871, +1406602, 4478041, -7128035, 2143726, 754304, 408559, -2933463, -799938, -3810710, -486942, +-5206574, 1706713, -5771363, -512175, -4916664, -3936875, 806917, -4359392, -5549098, -6791417, +1804960, -791348, -1369021, 2682744, 1993402, -2641405, 55835, 7233799, -3696356, -2362232, +-5546414, -1621350, 3125126, 1724966, 1770600, -2612414, 2251100, -3163244, 360240, -3856881, +-432718, 253403, -4028679, -1493038, 584116, -585726, -4527970, -8455717, -3602941, -3030636, +-1060857, -237297, -1986959, -2407866, -574989, 8009041, 5094905, 83215, 188442, 6310381, +1492501, -3209414, 2062121, 4198331, -2253784, -3537979, -12737799, 654446, -4372277, 8416525, +-4318053, 4223027, 3259880, -433792, 2597382, 4676683, 1107565, 1111860, -2476586, -2741263, +-2334315, -3453691, 2845953, 1861868, -1858110, 2798708, -2117956, -2727841, -3567507, -1536525, +-2880313, 305480, -217970, -400506, 5499706, -3240553, 4434017, -1597728, -1505923, 3288334, +-2284923, 1118302, -2302103, 3612604, -1382980, -9716290, 2556043, 502511, 812286, 5129265, +2143189, 536334, -1571421, -3073049, 7971996, -4265440, 2782065, 1930588, -4027069, 3778498, +1013075, -3891777, 2664490, -4008815, -408559, -180389, 3025805, 882616, 3149285, -1238024, +-9478456, -1779190, 15497853, -7443715, 990527, -324270, -308164, 3628174, -2621541, -10895795, +-10021232, 4916127, -3070902, -811212, 2742337, 693100, 2711198, 2988760, -4691178, 2743410, +1957968, -3302830, 4171487, 6176700, -3791383, -1171989, 461172, -6401649, -2787434, 783295, +7967165, -1132798, -267899, -6374805, 4022237, 129923, -5650030, -2363843, 2214056, -755914, +1325534, -4911832, 78383, 477278, -1847373, 5524939, 1581085, 1349157, 5432597, -398358, +6999723, -2124398, -8339216, 3623879, 3632469, -2866354, -1032940, -887448, 1373316, 558883, +2726231, -1783485, 1944010, -4489315, 181999, 3293703, -4051228, -292595, 3118683, 1097901, +-1803349, 1837172, -1158031, 828392, 5115843, 2000381, -5203890, 7905424, 3719979, -3568581, +-8815420, -930934, 1110786, 10026601, -3619584, 8611409, 2276870, -155693, 680752, 7715372, +-1604707, -1944010, -2032593, 5473936, 11021960, 2972117, -7315403, -10030896, -14276471, 2020782, +-3595425, -5949067, -3149822, -9294309, 145492, -4246112, 906775, 4649839, 4967667, -5244692, +-4600984, -3289945, 821413, -7865696, -647466, 2615098, -3386045, -1187022, 1083406, 3355980, +-4237522, 1308354, 10830297, -299574, -236223, -3752728, 4690641, -1814624, 694174, 3508988, +4697621, 6656663, -697395, 1122597, -1596654, 83752, -726386, 1040993, 10563472, -11084774, +694711, 2401961, 6477348, -2265595, -2462627, -407485, -2244121, 8402567, -3831111, -10287520, +-18790, -2746095, -3628174, 3215320, -9535364, -16432545, 6243809, -5088463, 6999186, -6145562, +-484258, 4863514, -9467182, -1567663, 2994129, -2527588, 13996225, -5766531, -1677722, -5498632, +-4569845, 7217693, 8038032, 3146601, -9275519, -11234561, 10544145, 1822140, -10500658, 4026532, +484258, 5082020, -3045669, 4852776, -6240051, 3160559, 10333154, 4298726, 4486630, 2394981, +286152, -2532420, 2247342, 872415, -6869264, 192737, -2097555, -5051956, -4998268, -1864016, +4169340, -7278896, 1136019, -5239323, -409096, -722628, 2573759, 4463008, 9397925, 3367791, +107911, 4084514, -4769025, -7150584, 56908, 1828046, 959925, 8935679, -1773285, -901943, +-2555506, -1042066, 1542430, 4507032, -808528, 2081985, -3920768, 7495255, -1267015, -1952063, +-664109, -8627516, -2298881, -5733245, -918586, 10581726, 6635188, 4514011, -1202591, -10030896, +977642, -6733972, -10593000, -3783866, 6991670, -6168110, -9433896, 1971927, 410706, -4917201, +601295, 4755066, 1052804, -12494597, -3794067, 7180112, 8575976, 4041564, -10386305, -4059281, +4191888, -2138894, -2530273, 209917, 2976949, 92879, 860604, 9822590, -361851, 5753109, +4434017, -552977, -5016522, -598611, -3123515, 5630702, -3901978, -6356015, -389768, 9089225, +129923, 9009768, 4730907, 366683, 5745593, -1621887, 12825846, 465467, 6113886, 6842420, +232465, -6842420, -1423245, -8092256, 3280818, -6039261, -3488050, -5675800, -3766686, -3195993, +1846299, -104153, 3021510, -1170916, -4934381, -4825933, 500364, 5342940, 9993852, -14965814, +-2756832, 12495134, -6210523, 2257005, -9649718, 4216048, 17633526, -2430952, 957241, -801011, +-12410845, 940598, -751082, 18617610, -5848672, -995896, 8227547, -5240934, 11649562, -7909183, +-1093606, -11916924, 13434121, 66572, -5163625, 42413, 4991826, -6345278, 9392020, -1134408, +8346195, -217433, 4439923, -13076565, -8165807, -6203007, -1781875, 7587597, -11531987, 6047314, +5010080, 1412507, -4650376, -7286412, 16291885, 2947421, -1599339, 5975374, -5439576, 3101503, +-7301982, -7729331, -2809446, -5307506, 17683990, 4849018, -3107409, -5523865, -6246493, 5076115, +4933844, 1232119, -5636071, -1183800, -1933272, 6957847, 1303523, 5514201, -13267691, 7123204, +-274341, -117575, -244813, 2091112, -3854196, -311385, -1649804, 5861557, 2653753, 4745939, +1081795, -416612, -2447595, -8488466, -2953327, -5649493, 2688650, -790811, 11576011, -10612864, +-13496935, -3799436, 3587908, -4578972, -3626026, 9727027, 1581085, -6189585, -7001871, -7299297, +10727218, -6193343, 7093139, -4206384, 7804493, -8829379, 1334661, 12153684, 3867618, -17917530, +3500935, -200790, -2714419, -2144799, 1283122, -2684355, 1183264, -3454228, 885300, -1341104, +-8255464, 7110319, 7450158, -3039226, 8304320, -8206072, -1823214, -2867428, -4108136, 8988293, +-7517267, -13124346, -7474854, 1560684, -10640245, -10208064, -5251672, -4012573, -7022809, -1417339, +7723962, 7793755, 772557, 8405251, 2379949, 165356, 6583111, -8866960, -1833414, -1488206, +19488414, -9390409, -9020505, 6370510, 15882789, 3193845, 14328011, 8207146, 13035763, 5818070, +-2209761, -5716602, 4801774, -9494025, -7100118, 10824391, 9180493, 22500260, -359704, 3202972, +-8075613, 8731669, 4151086, -9918690, -2131378, 12749074, 200253, -13931800, -5399848, -7851200, +-2423972, 7828652, 7423851, -5283884, -2305324, 9736691, -9154186, 4326643, 8476118, 9781788, +-4944044, 8405251, -3271155, -12775917, 4798016, 11636140, -2819646, 3307125, 3169686, -4046933, +1750736, 3402688, -3303904, 1185948, 9805410, -5712307, -2600066, 8579734, -1520418, -1946157, +-14125611, -5333813, -8375186, -14610942, -9298604, 6953552, -4314295, -6446209, 12873091, 12116103, +-2707977, 13008919, 5837398, 8356933, -1978906, -7428146, 5977521, -9786083, -10461467, 14105209, +-2373506, 32260036, -13316546, -6302328, -751619, 7827578, -4509179, -4461398, -13309030, -15467251, +6955163, 1257889, 21259552, 6798397, -2164127, -2524904, 14126684, 14305462, -11902428, 8531416, +-11368778, 2858838, -4892505, -6010807, -3485366, 2260764, -1846299, 7311108, 3754338, 8185134, +-1046361, -4209068, -7873749, -1752884, 9142912, 569083, -12186970, -1804423, 2929705, -5494337, +9596031, 7817378, 1639604, 2477659, -26636314, -10565083, 9194451, -1048509, 14799384, 3693135, +16669305, -2404645, -9262097, 8402567, -5291400, 5484673, 839666, 23772644, 19942606, 1584843, +5355824, -4256850, 7594039, 7479686, 8671002, 8734890, 15538118, -1804960, 2035278, -8116952, +-6539088, 2536178, -8998493, -22841172, -28036472, 22135188, -637266, 2531883, -7772280, 12427488, +-26629870, -17035450, -5390721, -6797860, -656056, -23820962, 4661114, 548682, -652298, -10829760, +-11103564, 4598300, 15204184, 2454037, -20302848, -4287451, -16619376, 13259101, 8483634, 805843, +-7342784, -3316252, -3731253, 11005854, -1505923, -11274, -2293513, -14476187, 7707856, 10567230, +-6083285, -3007014, 8121783, -15693274, -11542188, -17313014, -5834713, 4828080, -11085847, -4955319, +-265214, -17821430, 5842766, 11799886, 20271708, 3446175, -1632088, 1857037, -12724377, -9604621, +15775952, -316754, -5243082, -2751464, -22737556, -11598559, 5382668, -3863323, -1773285, -598611, +16475495, -1252520, -13138842, 2798708, 13116830, 1642288, -4858145, 2232309, 3840775, -2914135, +-6191732, 3593814, 15702937, 14514305, 5795522, 23993834, -9487583, -3905736, 4573604, -5122286, +-959925, 8486319, 25559888, -3032784, 5834176, 823023, -721018, 586800, 28084792, -12209518, +14951855, 888521, -17109002, 6987912, -16969416, -9771051, 11039677, -8250632, 8038568, 1517734, +1762547, 13381507, 10577431, -13523241, -15884400, -11315091, -3411278, 6007586, 5603322, 3071975, +4096862, -18717468, 3870839, -9406515, -24409910, 18562848, -4142496, 17580912, 18100602, 2471754, +7301982, -7694434, -10360535, -18284212, 5456219, 19848654, 4132832, -6288369, 2030446, -2244657, +3782793, -8835821, -7714835, -8725226, 2942590, 770410, -2318746, 13928042, 11809549, 8701067, +18459770, 4464082, -16469052, 26023744, -15284715, -2057289, -2369748, -297963, 22138408, 24900610, +6554120, -43995496, 2588792, 13716515, -13888850, 10060424, 18959060, 1909650, 5848672, 12397423, +9693204, 4435628, 17126718, 4727149, -1291711, 31453120, 12256226, 5056250, 14083735, -8943196, +17060146, -10180146, -40265, -149787, -2781528, -15523622, 6527277, -10637023, 22588306, -761820, +-3318936, 33003602, 5187247, 5851893, 11526082, 2413772, 7039452, -5909875, -12932683, -331786, +10296110, -15159624, 19997368, 18486612, 13638669, 4628901, 8503498, -10029822, -10845329, -17362406, +-7313256, -8728984, -8664560, 5840082, -857920, -16900160, -7162395, 17557290, 690953, -13630616, +9533217, 681826, -9334575, -22972170, 2650532, -35570384, 22513144, -10981158, 20454782, 2709051, +6037651, 2488397, -7384660, 11767137, 30517890, 11869142, 8711804, 23960012, -34206732, 12717935, +-20222854, 16234976, -8841727, -14772540, -4504884, -16937204, -7280507, -4288525, 5489505, 6847252, +-5136781, 22877144, -1461900, -4750771, -3491809, -22046068, -2665027, -631360, -18231062, 5027259, +-15559593, -20045150, -6466074, 10871636, -32154272, -22461068, -14658723, 875636, -22533546, -19813222, +-15505906, -8530879, -6300180, -3731253, -15151571, 15398531, 2813741, -2372433, -11218455, -12421582, +22031034, -19847580, -12839805, 4959614, 6086506, 7080791, -10752987, -16172162, -6114960, -3626563, +7631620, -11808476, -3886409, -5259188, -12554189, -23219666, -27697170, 26240640, -28604482, -2279554, +3111704, -5737540, -4267050, -26897770, 11586211, -6780680, -26059714, -998043, -4211216, 25782152, +8640400, 18530636, -30390114, 34283504, 5124970, 3055332, -6364068, 17147656, -107374, 28512140, +-8214125, 19372450, 10446971, -29175712, 12141336, 4097936, 13342316, -2969970, -7845832, -12062416, +-4401805, 13272523, 30565672, 2511482, -4669167, -20241644, 7186554, -21870510, -3476239, 20375324, +-19325206, -881005, 1227287, -4272956, -7356205, -9172976, 33982856, -8425115, -8470212, -5249524, +7637526, 10258529, 4194573, -672699, -7038915, -1404991, 5005785, 19334332, -4857608, 28176596, +17202418, 7295539, -7255274, 24203752, 29194504, -4132832, -7959112, -3359201, -9762998, 984621, +-9720585, 12739410, 4706748, 19120658, 16057809, -28489054, -29964914, 32742684, 25543782, 1398549, +-5883032, -17019344, -20566450, -10896332, 18257906, -22382686, -22568980, -6995428, -9146133, -31875636, +14430016, -13521094, -5011153, -3581466, 2103460, -448287, -19852950, -55756192, 26537530, -27295590, +9814537, 38193532, 5044976, -17326972, 10361609, 12704513, -6622303, -13335873, -3505230, -27941984, +7988103, -29007672, -17977122, 10332081, 234613, 3918621, -26292716, -6109591, -19236622, -16496969, +-23517630, -8841190, 6816650, -14418205, -14578193, 12306155, 917512, -2091649, 3309272, -26974542, +-2507187, -21208548, 16404628, 3764539, -50362248, 11436424, 25627532, -6704981, 14943265, 12250857, +8125005, 6123013, 24480776, 18747532, -86436, -19252728, -4622459, 18898930, 12263742, -17999672, +494458, -20870320, -6984691, 15569, 13634911, 17678086, -35505420, -29130078, -15896748, 1385664, +-10682121, -5529771, 32423782, 3544959, 7670812, 23548232, -11014444, 5651640, 19289234, 18664854, +-29474750, 7497403, -5435818, -6976638, -5938329, 21599390, 12103755, -13935558, -7334194, 16704738, +-26927298, 2615635, 11499775, 16706886, -2069637, 4467303, -31568546, 855772, -13240847, 11959873, +5381594, 19195820, -27539330, -13635984, -2816962, 4499515, -1075352, 6568616, 3505767, 16680579, +31180926, -17908940, -22810572, 7299834, -23804856, -6579353, 12160126, -17530982, -16301012, 2367601, +12640626, 16335908, 12632036, -6048925, 139050, -31390842, -20008642, 29483876, -18092012, 39498128, +-14562623, 8717173, 7534447, 543850, -26472568, 36435280, -14584098, -2522220, -4341138, 14747307, +28937342, -26255136, -13199508, 32687386, -21234318, 819265, -6449967, 7375533, 39430484, 1083942, +91268, -21912386, 31288836, -8286603, 10663867, 7905961, 1970853, 18016850, -19694036, 6047314, +16967806, 16915728, 37611028, -23201414, 34547644, -5501316, -22177064, -21393232, 5873905, 14907295, +-9715753, -3954591, -15268609, -5698348, 29177324, -19787988, -1780264, 24067922, -7453379, 14695231, +-9256728, -3641596, 24779814, -31139, 1261110, 24767466, 16517370, 6776922, -3011309, 21147882, +27426050, -27029302, 25730076, -23702314, 12929462, -16750909, 3516505, 22536230, 7027104, -47170552, +21191906, 15105400, -522912, 25996900, -38871600, -5895380, 25680684, 23900956, 3191698, 36748276, +-19204946, 2314987, -5140002, -3329674, 14263586, 8474507, 25385942, 24351390, -17299592, 17291538, +-31431644, -6260452, 1304060, 2081985, -3611531, -687732, -48980880, -21124260, -38271380, -18468896, +25765508, -8110509, -4491462, 16559246, -11991012, 11466489, 29496224, -16365436, 11338714, 14542759, +-21375516, 2684892, -26279294, 9916006, -2893197, -14012868, 20646982, 556198, 32253056, -2043868, +-24358370, 40909028, -7509214, 4018479, 5495948, -38533372, 11401528, 33013802, 11610907, -14490146, +-25393458, 2509872, 5907728, 28181428, 18000744, -9370545, -5785858, -22214644, -93952, 31847720, +-43866112, 13008919, 30072824, -27611808, 9654013, 2583960, 10122164, 31745178, 10232223, 12034498, +-6441377, -31833760, 32021666, -6469295, -17253420, 67826120, 32955284, 16887274, 2281702, 939524, +-32911798, -27048094, -12789876, 19292456, -1587527, -19548544, -14147622, 24298240, -16531329, 16258062, +8765491, -13889387, 17441862, 6918656, -28275918, -15431817, -17001628, 2150168, 16235513, -36690832, +11680700, 41966664, 69909720, -11537356, -2172717, -57137024, -19027242, -42008540, -27848568, 39034812, +2985002, 10624675, -32145146, 10513006, -28171228, -64019172, 9628243, 30736934, -2214593, 3944928, +33463164, -43943956, 50485728, 24907590, 16052977, -24915106, 34132640, 64856692, -12435004, 19965156, +49844708, 41522672, 74056512, 15826954, 26985280, 19840602, 18537078, 62957780, -15735686, -7687455, +24012626, 13623099, -6059662, 34505768, 2954938, 7086159, -19672024, -56622700, 3192235, 37366216, +6813429, 22520124, -39517996, 2250563, -52832928, -192737, -56757456, 3691525, 42324756, -5508296, +-15644955, -55813636, 74512312, 12802761, 6990060, 74778064, 1503775, -17702244, -9910637, 3271691, +18346490, -4945655, 4308389, -7099044, -34540664, 21650930, 16773458, -19714436, -70648456, 5870147, +101004744, 16697759, -17743046, -16714939, -42546484, -27023934, 3744138, 63936492, 13265543, -38787848, +-530428, 19127636, 6485938, 3582540, -1595044, 13065291, -26917634, -8672076, 17513802, 36484672, +36936720, -30128658, -9955197, 4847945, 7147900, 11046656, -34790844, 5985574, 8696235, -7452842, +29497298, 2114735, 33656976, 49103824, 25019796, 12093554, 23030688, -24068996, 26806502, -18954764, +38778184, 66123704, 23735600, -31896574, -26855894, 31365610, 13377749, 56795572, 43671764, 15033459, +-7248831, -9569724, 4648229, 5455682, -15853261, 23757074, 21552682, 6210523, 52170432, 36295160, +-1289027, 26695370, 29963302, 15234249, 30054034, 3949223, -43125768, -2972654, -7610682, -8048232, +56817048, 26955752, 12765717, -3056943, -17034378, -72025528, -17470854, 36042828, 18516678, 81993608, +2257005, -15111842, -40312028, -77270760, -83981104, -16562468, 32985348, 36553928, 23181012, -44372916, +-56673168, -3569655, -8781061, 18498424, 54831164, 25610354, -7357279, -37557340, -48256104, -32630478, +-37044, -32139240, 9211631, -27598386, -13632226, 34053720, 29554744, 23917062, 9132174, -43095164, +-12605729, -41541996, -30374008, -19408958, 20334522, -8727374, 21731460, 52776020, 58409944, -29980482, +5328444, -49459768, -31852552, -26536456, -5380521, 2640331, 33280628, 31222264, 49670224, 30175904, +11542188, -31909996, -24899536, -12560095, 14865419, -49233748, 1383516, 40904196, 37197100, -18855980, +50847044, 37692632, 24301462, 38758320, -96273840, 10248866, -30537218, -42780560, 9419937, -30746060, +-15760919, 37589016, 15997143, -105924632, -122119344, -132191576, -133933720, -186293664, 1904818, -57659936, +-9482751, 40709848, 80600432, 108095736, 110452064, 212178896, 225792336, 186988912, 141905712, 150296480, +143065360, 64088428, -6324340, -75322456, -76608256, -123379376, -31955630, -60589104, -43015172, 8506720, +-104301672, -19936702, -92111480, -14891725, -107905688, -99478960, -40687300, -80014704, 1505923, -34174516, +-32833414, -57033944, -35903244, -92840552, -64632816, -27576912, -27099096, -44121124, -25638270, 6895033, +-37329708, 25552372, 74017320, -42673184, 85280872, 56556668, 110681848, 114527984, 96151968, 121487984, +98255432, 165320272, 158137472, 130129456, 166019280, 146389136, 215013584, 216574256, 245936272, 194102992, +197500320, 222690832, 184506432, 232209024, 144846704, 237232512, 146835808, 4883915, -65832720, -116003848, +-93619016, 0, 0, }, }, { { -3456375, --2316598, -3061238, -3729642, -3496640, 3483755, -8136279, 923418, -1453310, -2848637, 7288560, --2356863, -2164127, 4657892, 719407, -3473018, 1116155, -1416266, 1225676, 949188, -588411, -3830037, -1297617, -4027069, -345208, 1193464, 1972464, 2501819, 62814, 1534914, -1029718, -5698348, 3857418, -4274030, -2419677, -2046552, 1655710, -3001109, -3505230, 4099546, -1772748, --69256, -380641, 1111323, 3718368, 3384434, -1574642, -996969, 2645163, 1229434, 806917, -283468, 2208687, -3189013, -2115808, 200790, 1901060, -2298344, 1586990, -4053912, -265751, -2793339, 2028298, -1389959, 2391223, 278099, 3365644, 1217086, -1560147, 4572530, 6152004, -2249489, -1038845, -477815, -2959233, 5129265, -333397, 2035815, 711891, -4708895, -3576634, -1081258, -3235721, -4732517, 2507187, -661962, 560493, -2763812, 1818919, 74625, -4219269, --298500, 4589710, 3723737, -3068754, -5286031, -4849555, 584116, -1221918, -1033477, -4150012, -4258460, -1300301, 1123134, -1970853, -1218160, -542777, 1550483, -1332514, -2404645, -8955544, -2891050, -818728, 2742874, 1537061, 1093606, -383863, 5770826, 944893, 1072131, 657130, --3105798, -2087891, -379031, 260919, -3107946, -886911, 1071058, -593779, -2942590, -1682554, -3758, 2586644, -4453881, -6103686, -7419019, 2379949, 4083977, 202400, 3353833, 2306934, -366146, -6961605, -310311, -2038499, -2513630, -209917, 164819, 2367601, -918049, 3085934, -4058744, -1040456, -147103, -6015639, 5197448, -6876243, 2528662, 11365557, -2551748, -4337917, -547071, 5895917, 529892, -1772748, -935229, -1783485, -1193464, -5448703, -2207613, 2583423, --4386772, -2508798, 124554, -301185, 4599373, -2943663, 758599, -1175210, 905701, -657667, --2885144, 5171141, 8758512, 2199023, -639950, -1717450, 9483825, 399969, -4162360, 223338, --7316477, -16643, 3600256, -5546951, -846645, 1144072, -4547834, -1358283, 4914517, 689342, --697932, 4860293, -3408594, -5167383, 2753074, 1907502, -3748433, -1799054, -4002373, -4522064, --5003637, -2694555, -2923799, 3921842, 2651069, 765578, -242129, -2726767, 2420214, -585726, --1925756, 3341485, 3699041, 5826123, -8546448, -5646272, -2054068, -1257352, 261993, 1080721, --8155606, 5630702, -2596845, 1832877, 1132261, 1868848, 3517578, -32749, -1211181, -2710124, -5814849, -465467, 3765613, 7225209, -1607392, 6146098, 5199595, -4538170, 2994129, 3080565, -3252364, -8005819, -842887, 492848, -2567854, -5025112, 28454, 5904507, -1432909, -2495376, --2032593, 1828046, 5399848, 2727304, -2844879, -8590, -2358474, 274878, -794032, -2670396, -5029407, -6529961, -5509370, -4935991, 1473174, -633508, -256087, -6065568, -6568079, 1666984, --223875, 464930, -733366, -234613, -4944581, -2740726, -5407364, 1181653, 4411469, -1247688, -3881577, 950798, 3409667, -7493644, -173409, 1421097, -2843268, -737661, 678605, -2716567, -922344, -379568, 5217849, 8192113, 702227, -2824478, -6595459, 3319473, 2206003, 2098629, -8642548, -5311264, 377957, 1248225, -1353989, -2545842, 1425929, 754304, 5267778, 11469173, --824097, 2170032, 4863514, -1814624, 4350802, 7534983, -4951024, 35970, -1756105, 120796, -3398930, -5467494, 6283537, 1598802, 196495, 3469797, -416612, 4716948, -2325725, -809601, --1164473, 7278359, 3377992, 4715337, -772020, 3922379, -6779069, 8132521, -3008625, 3326989, --7166153, 3118683, 5259725, 9851044, 3552475, 1999844, -6355478, -2241436, 1724966, -4626217, --5767068, -1190243, 11319923, 13346611, 2424509, 3229279, -3906273, -1582159, 7202660, 1482301, -3011309, -477815, 1981054, 1819992, 5907728, 504659, 1027571, 8167954, -6251862, -7376070, -12388833, -2749316, -1620276, 8279087, 5029944, 981400, -13547401, 15367930, -2445984, -1470489, --1282585, -383326, 877784, 1368484, 4955856, 7435126, 4871030, -530965, 8098698, 5451924, -2780991, 2607045, -2619393, 4089883, -5370857, 5027259, -603980, 2431488, -4512400, -6356552, -1139777, -288300, 2790655, 4785668, -1807644, -5997385, -3617973, 2287607, -7703024, 5824513, -1852742, -11975979, 5990406, 1617055, 3542274, 1595580, 2244121, 2963528, -236760, -2727841, --2812667, -7763691, -6051609, -2589865, -4091493, 25233, 872952, -5273683, -8578660, -199179, -6268505, 11275900, -17717, -5366025, 1688996, -9075803, 1416266, 877247, -3269544, 10642929, --13427142, 7191386, -2430952, -4665945, -3673271, -4454418, -6301791, 12630962, -15704548, 3919695, -3991635, 5371394, 7909183, 1457068, 2309619, 3106335, 2255395, 1805497, 2780991, 7015829, -1385664, -3558381, 147103, -457951, -4730370, -4212826, 2415382, 4779762, 5073967, 881005, -3662533, -8046085, -804233, 106300, -296890, -7602629, -4530654, -2584497, 5282273, 4836133, -84826, -8323110, 216896, -4386772, -3149285, -1421097, -2127083, 5657546, 7511361, 2507724, -7814156, -11899744, -8317204, 4364224, 2703145, 737124, 1839320, 1137630, -3710852, -7310035, --5037997, 4451197, -3148211, 6633577, 6439767, -1776506, 6156836, -8724152, -4158602, -2017024, --2638721, 1366873, 17391934, -1532230, 5517423, -1379758, 14082124, -2492155, 555125, 6040872, --13064217, 9287330, 4782446, -7267085, 8446590, 9462350, 3272765, -14088566, 8994198, 590021, --1191853, 7444789, 7968238, -228170, -2157147, 448824, -5398774, 5416491, -2887829, -5053029, --10975789, 2834679, -11944841, 3489124, -2825552, -1100049, 3617973, -9586904, -3915400, 8453569, --587874, -3546032, 5134634, 617938, -4175782, 4003447, 1462436, 671089, -1727651, 3146601, --5882495, -296353, -8644695, 8629663, 8385387, -9944997, 6991133, -6971806, -2678449, 7521562, -10048076, -294742, -4868883, 3463891, -540092, 1921998, -12085501, -9096204, 1997697, 2294586, --2559264, -1879585, 3222299, 311385, -4251481, 5912023, -4914517, 2616709, 3775276, 163746, -5895917, -4629975, 3947075, 1779190, -4967667, 9867150, -3250217, 4858682, -9768903, -586263, --2516851, -8832600, 393526, 6440841, 11314018, 14823006, -8296266, -106300, -10362145, -648003, --6576132, 6070937, -6155762, -12164421, 861141, -7740605, -677531, 10355166, -5990943, -5878737, -11006391, 500901, 1934883, -977105, -6389301, 2908767, 2383707, 13377213, -9060770, 6659347, --7680476, 2119566, 2601677, -7418483, -4655208, 12882218, 3499862, -9206799, -2401961, -3220689, --7538205, -80531, 12448963, 6903623, 8669391, 2237141, 3480534, -11062225, -1617055, 14706505, -1165010, -8654896, 4818417, 5090073, -6549289, -5382668, -3137474, -14443438, -2240899, 4794257, -7382512, 13433584, -3155727, -6643778, -1873680, -3901441, 10936597, -3319473, 5551245, -22728430, --15906948, -10473815, 383863, -19170050, 1974611, 12899397, 3747896, 13303661, -8333847, -4263292, --2310693, -8099235, -3522947, -11770358, 18739480, 10361072, 6994354, -17288854, -3984119, -6105833, --11533598, 2911451, -1934346, 2674691, -14142790, -1729798, -2011655, -10394895, 4745402, 757525, -8952322, 3099893, -9023726, 12045773, -6946573, 4376035, 1853815, -976568, 9328132, 8600672, -1504849, -13196824, 14104673, -8507793, 9841918, 3976603, -6504728, -7141457, 11107859, 799938, --2387465, 2144799, -11200738, -4677757, 4837207, -1909650, 9593346, -7261716, -10766409, 2818572, -1558536, -857383, 9376450, 3330210, 842350, -8081518, 6301791, 1635846, -7485591, -2305861, --2421288, -5013838, -4650376, -4619238, 1335735, -13412109, 19075024, 8190503, 21737366, -9079561, --11030550, 20793010, 1089311, -1596654, 4839355, 2068027, 12260521, 16358457, 2424509, -14181445, --23218594, 3847754, -6178311, 1988570, 973884, -9640591, -364535, 13401372, 10763188, 8826158, -16772921, -3153043, 14226542, -9250823, 12600360, 4672388, 9781788, -5845988, 17072496, 10344429, -12475806, -19014894, -10737, 18451716, 10210748, 3847217, -4222490, 27451820, 11302206, -9920838, --6563247, 7148973, -10365904, -399432, -5097053, 1974611, 22298934, 24190330, 16831440, 6863895, --199179, 9437654, -8328479, -1453310, 9069360, -9524627, 23131084, 15343234, 10810433, 5030481, --2034741, -10921565, 12778601, 782221, 10582799, -5367636, 2441152, -7953743, -7920457, -413927, -683437, -9491878, 22990424, -1362578, -11428908, -5132486, -8986682, -326954, -14392435, 3745212, --12427488, 7033009, 1478543, -3257733, -9827422, -11502996, -17714056, -18118320, -5559299, 15948824, --1340567, -10159745, 4090420, -9657234, 7371775, -8200167, 14630269, -14990510, 3366718, -10539850, --11248519, -1745904, 1677185, -2911988, 6788196, -21560198, 8612483, 2485712, -5487895, -1107028, --1662689, -10394358, -17586818, -18144090, 13202729, 7153268, -7477538, 12172474, 189515, -4221416, --13874892, -28134184, -23867670, 14162655, -4270808, 1092532, -2944737, -497142, -1430224, -18577344, -7410966, -22030498, -12240657, 2171106, -591095, -3705483, -2864206, -1719061, 24142548, -5851356, --7202124, -4757213, 25679072, -2553895, -8802535, 18024904, -10524817, -5110474, -6893960, -4039417, --34293704, -25977036, -14979235, 29360396, -1800665, -5270999, -3907347, -2671470, -10053982, 10165114, -7853348, 26216480, -24770688, -5129802, 7298223, -18288508, -7419019, -6708202, 30360586, -818191, -6826314, 15198279, 1190780, 14607184, -16394427, -20731270, -13815299, -4137664, -3653944, 2029372, -9376450, -874026, -17311402, -12232604, -1044214, -9562208, -19382650, 16740709, -3017752, -10011569, --261993, 5083631, 5319854, 2776160, -8809515, 1318018, -17990008, -8261370, -26616450, 12022150, -7913477, -3572339, -8411693, 9363029, -13289166, -3810173, 28528784, -3442953, 24173150, 10418517, -6438693, -6762963, -30500174, -13062069, -5911486, -16768626, -12312597, -8156143, 13562433, -6513318, -230854, -12406550, 25848724, -9207873, 10539313, 8121783, -17507360, 19730006, 1251446, -7897908, -12957916, 8374650, 38915624, 3442416, 2492692, 15176804, -14532022, -9247065, -1223529, 5264556, -8031052, -2206540, 17648558, -7283728, 4234301, 16958142, 8662412, 7764764, 7495792, -8459475, -4112431, 2065879, -3226594, 4668630, -5784784, -11508902, -5224291, 3599720, -11682311, 20321638, -780073, 4358855, -357556, 14864345, 15896748, 66572, -8093329, 1792612, -1144072, 19073950, -23021562, -12010339, -8079371, -4592931, 7378754, 18524730, -11716671, 7725036, 1581622, 6438693, --5005785, -6383932, 5277978, 13645111, 4185983, -9110163, 13783087, 37355480, -8516383, 10158671, --95563, 6720550, 15515569, 8067023, 17950816, 17539036, -581431, 24799678, 38716444, 7209640, --9721122, 41508712, 3848291, 39932460, 424128, 8360154, -21597780, -6005975, 37648072, 7457137, --15073188, 6356015, -10995116, 6030671, 8591008, -1608465, -17381732, -5891622, -26792006, 13102335, -11579232, -9747965, 12448963, 17767742, 5279052, -3291556, -14758581, 4929549, 28625958, -11665668, -18006650, 16346646, 4463008, 12526809, 12754442, 1492501, 15439334, 9827959, -23203560, -2672007, --7984344, 26850524, 19527068, -17249126, 13511430, -1261110, 16138340, 44071196, -1588601, -6571837, -6903623, 39670464, 18650358, -1720134, 7720204, 7697655, 25315074, 20450486, -10652056, 24394878, -13959717, 22622666, -12493523, 2879239, 7712688, 5181341, 17086454, 20732344, -9589588, -10027675, -19860466, 8500277, -1409823, -5209796, 4403952, 24982214, -41136124, 11710228, -10998338, -10558640, --8827232, -8426189, 6084895, 7978976, 8300561, -9947144, -12093017, -31148176, 1489817, -17239998, -28618978, 3805341, -7421704, -3904662, 17127256, 5312338, 27799712, 11642046, -7323993, 1583232, -5760088, 13137768, 20799990, -22966264, -20489678, -3751654, 35017944, -10324565, 4234301, 10616085, -15140833, 19322520, 26447334, 23758148, 1652489, -4872104, 24593520, 2617246, -16413754, 9183177, --15308874, 11414949, 2099702, -12426414, 11446625, 47841640, 25543244, -15805480, -13310641, -870268, --13839995, -12067784, -12031814, 8979703, -7284802, -10081899, 1465658, 13903883, 6680285, 5277978, -17352742, 5974300, -5698348, 20573430, 15136538, -13034689, 8174934, -14813879, -13958107, -12956306, --1654636, -32869384, -11834782, 25156160, 15643882, -6278706, -11911555, 11500312, 9446244, -15358266, --6065031, -34460672, -1930051, 30441118, 1252520, -20680268, 4380867, 1966021, -13631689, 20633560, -12267500, -6930467, 6495065, 9902584, 13041131, 7750806, 3003256, -7718593, 5662915, 8031589, -19706920, 29146184, -6806450, -17850420, -9046275, 6444599, 6773164, 24229522, -7909183, -16987670, --13167833, -13342853, 28937880, 52461416, 19600620, 3776350, 57253524, 4617090, 24340654, 14577656, --3694209, -10492068, 11071889, -14625974, -9540196, 12794708, 1916092, -32456530, -33914136, -7283728, -15921981, -16751446, -21652540, -11008001, -15603079, -12271795, 13374528, -7914014, -24417962, 13682692, -2821257, -5464809, 8089571, -3530463, 15397995, 55414204, -29703994, 29650844, -33577516, -17144436, --8048769, -3298535, 26949310, 1219234, 29003378, 18789408, 17006996, 24739012, -27954332, 11316165, --29292750, -807991, 39336532, 34949224, 15205795, 901406, 7201050, 4746476, -10668162, 9353365, -11680700, -48654464, 3496104, 7521562, 15395310, -17643188, -27078696, 20527796, 10081362, 5429376, --11275900, 24265492, -2854006, 18907520, 16022912, -1612223, 2892124, -5199595, 19420232, -11006927, -6298033, 11551851, -458488, 24307904, 14512158, -1208496, 12919262, 14195404, -195421, -10803453, --36217312, -6709276, 4449049, -21723944, 2622078, 17366700, -32884954, -14852534, 5618891, -14435385, --1846299, 17492328, 1477469, -12660490, -15847356, 6977175, 7441568, -34120832, -10939282, -3282966, -368830, 20565378, 10482405, 1505386, 36917392, -5874442, -1734093, -293668, -22560390, -8826695, --34178276, -29754460, 6045704, -15102716, -4344897, -22849762, -28470264, -30100742, -19504520, 22181896, -30292404, 1190780, -23885386, 2320893, 1744831, 695785, 11915313, 19318762, 19600084, 807991, --11647951, -30141544, -16804060, -26362510, -5046587, 399432, 2941516, 3018288, 4457103, 7591355, -10241886, 18172006, -27442694, 12571369, 5671505, 6399502, 15874736, 26884884, 30783104, -17160542, -14157286, -23796804, -6671695, -21614422, -1311576, -8417062, 50705848, 17701170, 36761700, 1471026, --18460306, -8373576, 23842438, 24775518, -13822279, 45829984, -18471580, 2603824, 2819109, 7646116, -17675402, 50760608, -2857764, 11972758, 29174102, 5790690, -22033182, 13431973, 52799108, -10776073, --12529493, -32547800, -2878702, 16942036, 10662793, -2404108, -26386132, -4393215, -5581310, 9771051, -46251964, -2764885, -555661, 19390704, 3554086, -64617248, -20458540, 45242112, 14928769, -13778255, --25827248, -3991098, -17125108, 23124104, 12023224, 4009352, -13738527, -30823906, 6366216, -52799644, --6536940, 25198036, 34853660, -4459250, -29778618, -20646444, -61366492, 17574470, -10675678, 23589572, -18147848, -17841832, -12646531, -54817740, -40793064, 20865488, 58081916, 22745610, 27688044, -19705310, --34260416, -33453500, -13613973, 48899276, 66678292, 34257196, -76775224, -28624346, -58678380, -31933618, -73803104, 17566954, 16854526, -10005126, -69876968, -58034672, -57175680, -10993506, 6571837, 36375688, --12461311, 27666568, -54666880, 34691524, 15476378, 4151623, 72258528, 4392141, -4133906, -3676492, --92309048, -30176440, -1595580, 2339684, -29548838, 51047832, 20735028, 22397718, -67610840, 11309186, --93420904, -22014392, -2359011, 11111617, 3113851, -60325500, 29535954, -17999134, -12764106, -12763032, --14715632, -16071231, -20408610, 36639292, -13311714, -34612068, 8129300, -10971494, 1599875, 16870632, --39677980, -14903000, -4822175, 14042396, -978716, 40650792, -6220724, -25627532, 52991308, -48587892, -24786794, -45130980, -17275970, 19931870, -38392712, 1245541, 22769232, -14740865, -6114960, -3908957, -29999810, 49349176, 26014616, -18178986, -10355703, -9012452, -267362, 15197742, -10314901, -11034308, -6065568, 4315906, -95627984, -4496831, -7554848, 12646531, 6978785, 27917, -4574140, 25667262, --33967824, -7632694, -8434779, 19921668, -79947056, -9904195, 59010704, -16047072, -36714992, 1995549, -24655796, -13925358, -24046986, -68793032, -56909392, 46551004, 39276940, 2157147, 42053100, -49677204, --4786204, -94290640, -34936876, -18044768, 42790224, 39238284, 22932442, -38854960, -14959908, -3171833, --19942606, 7300908, 14032732, 19618336, 25914758, -22870164, 13519483, -41441604, -27637040, -7668127, --10832981, -209917, 24187108, -32865090, 24958054, -13400298, -19971062, -8113193, 155693, -40783936, --3317862, -36965172, -15891916, -14906758, -36673116, 46129560, 19069654, 9877351, 8954470, -9810779, --50496468, -71667968, -44097504, -42315092, 25757456, 6347425, 27947890, 42312408, 32498944, -11684459, -5793374, -24562918, -21486648, -22264574, 14950244, -23394686, -3752728, -22050898, -26039850, -13796509, -25132538, -20888574, -8754754, 4268124, -5605469, -29144574, -37287296, -15729244, 31261994, -6642167, --91781840, -127464432, -119808112, -113805360, -137735840, -16505559, -32066762, 33761128, 49643916, 138522896, -92348776, 118535728, 161130528, 175563760, 123045448, 153419984, 91435024, 46099496, 2529199, -20140176, --28879896, -54481124, -52150028, -76576584, -27040040, -23901494, -70369816, -52030844, -48015052, -57438208, --95891048, -64557116, -46489264, -37724844, -72099080, -5319317, -16132971, -27713814, -69819528, -66328792, --51490216, -45528800, -29301340, -10335839, -42168524, 18414672, 32423782, -34920232, 49780820, 63210644, -63860796, 107268952, 90803128, 67314488, 77254648, 73461120, 76421960, 109945792, 127446712, 120297736, -85701776, 128239136, 130627672, 129950680, 136406544, 148163488, 134858752, 134708432, 186687200, 82171312, -86702504, 76345728, 70924944, -44443784, -7704635, -34548180, -97089880, -62141196, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-2316598, -3061238, -3729642, -3496640, 3483755, -8136279, 923418, -1453310, -2848637, 7288560, +-2356863, -2164127, 4657892, 719407, -3473018, 1116155, -1416266, 1225676, 949188, -588411, +3830037, -1297617, -4027069, -345208, 1193464, 1972464, 2501819, 62814, 1534914, -1029718, +5698348, 3857418, -4274030, -2419677, -2046552, 1655710, -3001109, -3505230, 4099546, -1772748, +-69256, -380641, 1111323, 3718368, 3384434, -1574642, -996969, 2645163, 1229434, 806917, +283468, 2208687, -3189013, -2115808, 200790, 1901060, -2298344, 1586990, -4053912, -265751, +2793339, 2028298, -1389959, 2391223, 278099, 3365644, 1217086, -1560147, 4572530, 6152004, +2249489, -1038845, -477815, -2959233, 5129265, -333397, 2035815, 711891, -4708895, -3576634, +1081258, -3235721, -4732517, 2507187, -661962, 560493, -2763812, 1818919, 74625, -4219269, +-298500, 4589710, 3723737, -3068754, -5286031, -4849555, 584116, -1221918, -1033477, -4150012, +4258460, -1300301, 1123134, -1970853, -1218160, -542777, 1550483, -1332514, -2404645, -8955544, +2891050, -818728, 2742874, 1537061, 1093606, -383863, 5770826, 944893, 1072131, 657130, +-3105798, -2087891, -379031, 260919, -3107946, -886911, 1071058, -593779, -2942590, -1682554, +3758, 2586644, -4453881, -6103686, -7419019, 2379949, 4083977, 202400, 3353833, 2306934, +366146, -6961605, -310311, -2038499, -2513630, -209917, 164819, 2367601, -918049, 3085934, +4058744, -1040456, -147103, -6015639, 5197448, -6876243, 2528662, 11365557, -2551748, -4337917, +547071, 5895917, 529892, -1772748, -935229, -1783485, -1193464, -5448703, -2207613, 2583423, +-4386772, -2508798, 124554, -301185, 4599373, -2943663, 758599, -1175210, 905701, -657667, +-2885144, 5171141, 8758512, 2199023, -639950, -1717450, 9483825, 399969, -4162360, 223338, +-7316477, -16643, 3600256, -5546951, -846645, 1144072, -4547834, -1358283, 4914517, 689342, +-697932, 4860293, -3408594, -5167383, 2753074, 1907502, -3748433, -1799054, -4002373, -4522064, +-5003637, -2694555, -2923799, 3921842, 2651069, 765578, -242129, -2726767, 2420214, -585726, +-1925756, 3341485, 3699041, 5826123, -8546448, -5646272, -2054068, -1257352, 261993, 1080721, +-8155606, 5630702, -2596845, 1832877, 1132261, 1868848, 3517578, -32749, -1211181, -2710124, +5814849, -465467, 3765613, 7225209, -1607392, 6146098, 5199595, -4538170, 2994129, 3080565, +3252364, -8005819, -842887, 492848, -2567854, -5025112, 28454, 5904507, -1432909, -2495376, +-2032593, 1828046, 5399848, 2727304, -2844879, -8590, -2358474, 274878, -794032, -2670396, +5029407, -6529961, -5509370, -4935991, 1473174, -633508, -256087, -6065568, -6568079, 1666984, +-223875, 464930, -733366, -234613, -4944581, -2740726, -5407364, 1181653, 4411469, -1247688, +3881577, 950798, 3409667, -7493644, -173409, 1421097, -2843268, -737661, 678605, -2716567, +922344, -379568, 5217849, 8192113, 702227, -2824478, -6595459, 3319473, 2206003, 2098629, +8642548, -5311264, 377957, 1248225, -1353989, -2545842, 1425929, 754304, 5267778, 11469173, +-824097, 2170032, 4863514, -1814624, 4350802, 7534983, -4951024, 35970, -1756105, 120796, +3398930, -5467494, 6283537, 1598802, 196495, 3469797, -416612, 4716948, -2325725, -809601, +-1164473, 7278359, 3377992, 4715337, -772020, 3922379, -6779069, 8132521, -3008625, 3326989, +-7166153, 3118683, 5259725, 9851044, 3552475, 1999844, -6355478, -2241436, 1724966, -4626217, +-5767068, -1190243, 11319923, 13346611, 2424509, 3229279, -3906273, -1582159, 7202660, 1482301, +3011309, -477815, 1981054, 1819992, 5907728, 504659, 1027571, 8167954, -6251862, -7376070, +12388833, -2749316, -1620276, 8279087, 5029944, 981400, -13547401, 15367930, -2445984, -1470489, +-1282585, -383326, 877784, 1368484, 4955856, 7435126, 4871030, -530965, 8098698, 5451924, +2780991, 2607045, -2619393, 4089883, -5370857, 5027259, -603980, 2431488, -4512400, -6356552, +1139777, -288300, 2790655, 4785668, -1807644, -5997385, -3617973, 2287607, -7703024, 5824513, +1852742, -11975979, 5990406, 1617055, 3542274, 1595580, 2244121, 2963528, -236760, -2727841, +-2812667, -7763691, -6051609, -2589865, -4091493, 25233, 872952, -5273683, -8578660, -199179, +6268505, 11275900, -17717, -5366025, 1688996, -9075803, 1416266, 877247, -3269544, 10642929, +-13427142, 7191386, -2430952, -4665945, -3673271, -4454418, -6301791, 12630962, -15704548, 3919695, +3991635, 5371394, 7909183, 1457068, 2309619, 3106335, 2255395, 1805497, 2780991, 7015829, +1385664, -3558381, 147103, -457951, -4730370, -4212826, 2415382, 4779762, 5073967, 881005, +3662533, -8046085, -804233, 106300, -296890, -7602629, -4530654, -2584497, 5282273, 4836133, +84826, -8323110, 216896, -4386772, -3149285, -1421097, -2127083, 5657546, 7511361, 2507724, +7814156, -11899744, -8317204, 4364224, 2703145, 737124, 1839320, 1137630, -3710852, -7310035, +-5037997, 4451197, -3148211, 6633577, 6439767, -1776506, 6156836, -8724152, -4158602, -2017024, +-2638721, 1366873, 17391934, -1532230, 5517423, -1379758, 14082124, -2492155, 555125, 6040872, +-13064217, 9287330, 4782446, -7267085, 8446590, 9462350, 3272765, -14088566, 8994198, 590021, +-1191853, 7444789, 7968238, -228170, -2157147, 448824, -5398774, 5416491, -2887829, -5053029, +-10975789, 2834679, -11944841, 3489124, -2825552, -1100049, 3617973, -9586904, -3915400, 8453569, +-587874, -3546032, 5134634, 617938, -4175782, 4003447, 1462436, 671089, -1727651, 3146601, +-5882495, -296353, -8644695, 8629663, 8385387, -9944997, 6991133, -6971806, -2678449, 7521562, +10048076, -294742, -4868883, 3463891, -540092, 1921998, -12085501, -9096204, 1997697, 2294586, +-2559264, -1879585, 3222299, 311385, -4251481, 5912023, -4914517, 2616709, 3775276, 163746, +5895917, -4629975, 3947075, 1779190, -4967667, 9867150, -3250217, 4858682, -9768903, -586263, +-2516851, -8832600, 393526, 6440841, 11314018, 14823006, -8296266, -106300, -10362145, -648003, +-6576132, 6070937, -6155762, -12164421, 861141, -7740605, -677531, 10355166, -5990943, -5878737, +11006391, 500901, 1934883, -977105, -6389301, 2908767, 2383707, 13377213, -9060770, 6659347, +-7680476, 2119566, 2601677, -7418483, -4655208, 12882218, 3499862, -9206799, -2401961, -3220689, +-7538205, -80531, 12448963, 6903623, 8669391, 2237141, 3480534, -11062225, -1617055, 14706505, +1165010, -8654896, 4818417, 5090073, -6549289, -5382668, -3137474, -14443438, -2240899, 4794257, +7382512, 13433584, -3155727, -6643778, -1873680, -3901441, 10936597, -3319473, 5551245, -22728430, +-15906948, -10473815, 383863, -19170050, 1974611, 12899397, 3747896, 13303661, -8333847, -4263292, +-2310693, -8099235, -3522947, -11770358, 18739480, 10361072, 6994354, -17288854, -3984119, -6105833, +-11533598, 2911451, -1934346, 2674691, -14142790, -1729798, -2011655, -10394895, 4745402, 757525, +8952322, 3099893, -9023726, 12045773, -6946573, 4376035, 1853815, -976568, 9328132, 8600672, +1504849, -13196824, 14104673, -8507793, 9841918, 3976603, -6504728, -7141457, 11107859, 799938, +-2387465, 2144799, -11200738, -4677757, 4837207, -1909650, 9593346, -7261716, -10766409, 2818572, +1558536, -857383, 9376450, 3330210, 842350, -8081518, 6301791, 1635846, -7485591, -2305861, +-2421288, -5013838, -4650376, -4619238, 1335735, -13412109, 19075024, 8190503, 21737366, -9079561, +-11030550, 20793010, 1089311, -1596654, 4839355, 2068027, 12260521, 16358457, 2424509, -14181445, +-23218594, 3847754, -6178311, 1988570, 973884, -9640591, -364535, 13401372, 10763188, 8826158, +16772921, -3153043, 14226542, -9250823, 12600360, 4672388, 9781788, -5845988, 17072496, 10344429, +12475806, -19014894, -10737, 18451716, 10210748, 3847217, -4222490, 27451820, 11302206, -9920838, +-6563247, 7148973, -10365904, -399432, -5097053, 1974611, 22298934, 24190330, 16831440, 6863895, +-199179, 9437654, -8328479, -1453310, 9069360, -9524627, 23131084, 15343234, 10810433, 5030481, +-2034741, -10921565, 12778601, 782221, 10582799, -5367636, 2441152, -7953743, -7920457, -413927, +683437, -9491878, 22990424, -1362578, -11428908, -5132486, -8986682, -326954, -14392435, 3745212, +-12427488, 7033009, 1478543, -3257733, -9827422, -11502996, -17714056, -18118320, -5559299, 15948824, +-1340567, -10159745, 4090420, -9657234, 7371775, -8200167, 14630269, -14990510, 3366718, -10539850, +-11248519, -1745904, 1677185, -2911988, 6788196, -21560198, 8612483, 2485712, -5487895, -1107028, +-1662689, -10394358, -17586818, -18144090, 13202729, 7153268, -7477538, 12172474, 189515, -4221416, +-13874892, -28134184, -23867670, 14162655, -4270808, 1092532, -2944737, -497142, -1430224, -18577344, +7410966, -22030498, -12240657, 2171106, -591095, -3705483, -2864206, -1719061, 24142548, -5851356, +-7202124, -4757213, 25679072, -2553895, -8802535, 18024904, -10524817, -5110474, -6893960, -4039417, +-34293704, -25977036, -14979235, 29360396, -1800665, -5270999, -3907347, -2671470, -10053982, 10165114, +7853348, 26216480, -24770688, -5129802, 7298223, -18288508, -7419019, -6708202, 30360586, -818191, +6826314, 15198279, 1190780, 14607184, -16394427, -20731270, -13815299, -4137664, -3653944, 2029372, +9376450, -874026, -17311402, -12232604, -1044214, -9562208, -19382650, 16740709, -3017752, -10011569, +-261993, 5083631, 5319854, 2776160, -8809515, 1318018, -17990008, -8261370, -26616450, 12022150, +7913477, -3572339, -8411693, 9363029, -13289166, -3810173, 28528784, -3442953, 24173150, 10418517, +6438693, -6762963, -30500174, -13062069, -5911486, -16768626, -12312597, -8156143, 13562433, -6513318, +230854, -12406550, 25848724, -9207873, 10539313, 8121783, -17507360, 19730006, 1251446, -7897908, +12957916, 8374650, 38915624, 3442416, 2492692, 15176804, -14532022, -9247065, -1223529, 5264556, +8031052, -2206540, 17648558, -7283728, 4234301, 16958142, 8662412, 7764764, 7495792, -8459475, +4112431, 2065879, -3226594, 4668630, -5784784, -11508902, -5224291, 3599720, -11682311, 20321638, +780073, 4358855, -357556, 14864345, 15896748, 66572, -8093329, 1792612, -1144072, 19073950, +23021562, -12010339, -8079371, -4592931, 7378754, 18524730, -11716671, 7725036, 1581622, 6438693, +-5005785, -6383932, 5277978, 13645111, 4185983, -9110163, 13783087, 37355480, -8516383, 10158671, +-95563, 6720550, 15515569, 8067023, 17950816, 17539036, -581431, 24799678, 38716444, 7209640, +-9721122, 41508712, 3848291, 39932460, 424128, 8360154, -21597780, -6005975, 37648072, 7457137, +-15073188, 6356015, -10995116, 6030671, 8591008, -1608465, -17381732, -5891622, -26792006, 13102335, +11579232, -9747965, 12448963, 17767742, 5279052, -3291556, -14758581, 4929549, 28625958, -11665668, +18006650, 16346646, 4463008, 12526809, 12754442, 1492501, 15439334, 9827959, -23203560, -2672007, +-7984344, 26850524, 19527068, -17249126, 13511430, -1261110, 16138340, 44071196, -1588601, -6571837, +6903623, 39670464, 18650358, -1720134, 7720204, 7697655, 25315074, 20450486, -10652056, 24394878, +13959717, 22622666, -12493523, 2879239, 7712688, 5181341, 17086454, 20732344, -9589588, -10027675, +19860466, 8500277, -1409823, -5209796, 4403952, 24982214, -41136124, 11710228, -10998338, -10558640, +-8827232, -8426189, 6084895, 7978976, 8300561, -9947144, -12093017, -31148176, 1489817, -17239998, +28618978, 3805341, -7421704, -3904662, 17127256, 5312338, 27799712, 11642046, -7323993, 1583232, +5760088, 13137768, 20799990, -22966264, -20489678, -3751654, 35017944, -10324565, 4234301, 10616085, +15140833, 19322520, 26447334, 23758148, 1652489, -4872104, 24593520, 2617246, -16413754, 9183177, +-15308874, 11414949, 2099702, -12426414, 11446625, 47841640, 25543244, -15805480, -13310641, -870268, +-13839995, -12067784, -12031814, 8979703, -7284802, -10081899, 1465658, 13903883, 6680285, 5277978, +17352742, 5974300, -5698348, 20573430, 15136538, -13034689, 8174934, -14813879, -13958107, -12956306, +-1654636, -32869384, -11834782, 25156160, 15643882, -6278706, -11911555, 11500312, 9446244, -15358266, +-6065031, -34460672, -1930051, 30441118, 1252520, -20680268, 4380867, 1966021, -13631689, 20633560, +12267500, -6930467, 6495065, 9902584, 13041131, 7750806, 3003256, -7718593, 5662915, 8031589, +19706920, 29146184, -6806450, -17850420, -9046275, 6444599, 6773164, 24229522, -7909183, -16987670, +-13167833, -13342853, 28937880, 52461416, 19600620, 3776350, 57253524, 4617090, 24340654, 14577656, +-3694209, -10492068, 11071889, -14625974, -9540196, 12794708, 1916092, -32456530, -33914136, -7283728, +15921981, -16751446, -21652540, -11008001, -15603079, -12271795, 13374528, -7914014, -24417962, 13682692, +2821257, -5464809, 8089571, -3530463, 15397995, 55414204, -29703994, 29650844, -33577516, -17144436, +-8048769, -3298535, 26949310, 1219234, 29003378, 18789408, 17006996, 24739012, -27954332, 11316165, +-29292750, -807991, 39336532, 34949224, 15205795, 901406, 7201050, 4746476, -10668162, 9353365, +11680700, -48654464, 3496104, 7521562, 15395310, -17643188, -27078696, 20527796, 10081362, 5429376, +-11275900, 24265492, -2854006, 18907520, 16022912, -1612223, 2892124, -5199595, 19420232, -11006927, +6298033, 11551851, -458488, 24307904, 14512158, -1208496, 12919262, 14195404, -195421, -10803453, +-36217312, -6709276, 4449049, -21723944, 2622078, 17366700, -32884954, -14852534, 5618891, -14435385, +-1846299, 17492328, 1477469, -12660490, -15847356, 6977175, 7441568, -34120832, -10939282, -3282966, +368830, 20565378, 10482405, 1505386, 36917392, -5874442, -1734093, -293668, -22560390, -8826695, +-34178276, -29754460, 6045704, -15102716, -4344897, -22849762, -28470264, -30100742, -19504520, 22181896, +30292404, 1190780, -23885386, 2320893, 1744831, 695785, 11915313, 19318762, 19600084, 807991, +-11647951, -30141544, -16804060, -26362510, -5046587, 399432, 2941516, 3018288, 4457103, 7591355, +10241886, 18172006, -27442694, 12571369, 5671505, 6399502, 15874736, 26884884, 30783104, -17160542, +14157286, -23796804, -6671695, -21614422, -1311576, -8417062, 50705848, 17701170, 36761700, 1471026, +-18460306, -8373576, 23842438, 24775518, -13822279, 45829984, -18471580, 2603824, 2819109, 7646116, +17675402, 50760608, -2857764, 11972758, 29174102, 5790690, -22033182, 13431973, 52799108, -10776073, +-12529493, -32547800, -2878702, 16942036, 10662793, -2404108, -26386132, -4393215, -5581310, 9771051, +46251964, -2764885, -555661, 19390704, 3554086, -64617248, -20458540, 45242112, 14928769, -13778255, +-25827248, -3991098, -17125108, 23124104, 12023224, 4009352, -13738527, -30823906, 6366216, -52799644, +-6536940, 25198036, 34853660, -4459250, -29778618, -20646444, -61366492, 17574470, -10675678, 23589572, +18147848, -17841832, -12646531, -54817740, -40793064, 20865488, 58081916, 22745610, 27688044, -19705310, +-34260416, -33453500, -13613973, 48899276, 66678292, 34257196, -76775224, -28624346, -58678380, -31933618, +73803104, 17566954, 16854526, -10005126, -69876968, -58034672, -57175680, -10993506, 6571837, 36375688, +-12461311, 27666568, -54666880, 34691524, 15476378, 4151623, 72258528, 4392141, -4133906, -3676492, +-92309048, -30176440, -1595580, 2339684, -29548838, 51047832, 20735028, 22397718, -67610840, 11309186, +-93420904, -22014392, -2359011, 11111617, 3113851, -60325500, 29535954, -17999134, -12764106, -12763032, +-14715632, -16071231, -20408610, 36639292, -13311714, -34612068, 8129300, -10971494, 1599875, 16870632, +-39677980, -14903000, -4822175, 14042396, -978716, 40650792, -6220724, -25627532, 52991308, -48587892, +24786794, -45130980, -17275970, 19931870, -38392712, 1245541, 22769232, -14740865, -6114960, -3908957, +29999810, 49349176, 26014616, -18178986, -10355703, -9012452, -267362, 15197742, -10314901, -11034308, +6065568, 4315906, -95627984, -4496831, -7554848, 12646531, 6978785, 27917, -4574140, 25667262, +-33967824, -7632694, -8434779, 19921668, -79947056, -9904195, 59010704, -16047072, -36714992, 1995549, +24655796, -13925358, -24046986, -68793032, -56909392, 46551004, 39276940, 2157147, 42053100, -49677204, +-4786204, -94290640, -34936876, -18044768, 42790224, 39238284, 22932442, -38854960, -14959908, -3171833, +-19942606, 7300908, 14032732, 19618336, 25914758, -22870164, 13519483, -41441604, -27637040, -7668127, +-10832981, -209917, 24187108, -32865090, 24958054, -13400298, -19971062, -8113193, 155693, -40783936, +-3317862, -36965172, -15891916, -14906758, -36673116, 46129560, 19069654, 9877351, 8954470, -9810779, +-50496468, -71667968, -44097504, -42315092, 25757456, 6347425, 27947890, 42312408, 32498944, -11684459, +5793374, -24562918, -21486648, -22264574, 14950244, -23394686, -3752728, -22050898, -26039850, -13796509, +25132538, -20888574, -8754754, 4268124, -5605469, -29144574, -37287296, -15729244, 31261994, -6642167, +-91781840, -127464432, -119808112, -113805360, -137735840, -16505559, -32066762, 33761128, 49643916, 138522896, +92348776, 118535728, 161130528, 175563760, 123045448, 153419984, 91435024, 46099496, 2529199, -20140176, +-28879896, -54481124, -52150028, -76576584, -27040040, -23901494, -70369816, -52030844, -48015052, -57438208, +-95891048, -64557116, -46489264, -37724844, -72099080, -5319317, -16132971, -27713814, -69819528, -66328792, +-51490216, -45528800, -29301340, -10335839, -42168524, 18414672, 32423782, -34920232, 49780820, 63210644, +63860796, 107268952, 90803128, 67314488, 77254648, 73461120, 76421960, 109945792, 127446712, 120297736, +85701776, 128239136, 130627672, 129950680, 136406544, 148163488, 134858752, 134708432, 186687200, 82171312, +86702504, 76345728, 70924944, -44443784, -7704635, -34548180, -97089880, -62141196, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, { 1824824, -1520418, 1184874, 2761664, -888521, 255551, -1235877, -4140885, -7766375, 1602560, -2968896, --4188130, -5618354, 1364189, 1056025, 4163971, 1150514, 4949950, -716723, -7343321, 2747169, --3877282, -484258, 1573032, -3115999, -4798552, 642635, -3138547, -478352, -1585917, 2860985, -2870112, 916976, -6844568, -1481227, -2626373, 5280126, 1101659, 1585380, 6161668, 2937758, -2764885, -98247, 1667521, 9698573, 4763656, -1661616, 461709, -4668630, 3338263, -275952, -527207, -5748814, -761820, -3052111, -3914326, -1592359, 4333085, 3333432, 49929, 18790, --3757023, -3528853, -1305133, -3597035, -7394323, 3778498, -3084324, -670015, -6961068, -1855963, -4182225, 2106145, -312459, -6386617, 7894150, -692027, 3128347, 1542967, 3696356, -6840809, --3745748, 4275640, 2008971, -20401, -3860102, 706522, -10600516, -6822556, -467078, -4088272, --4663261, 1817308, 8100845, 1326071, 6141267, -1494649, 6065568, -3731253, -3404835, -450435, --5689758, 1072131, 2654290, -2044941, -253940, 1422171, 141197, 2495913, -421981, -5980742, -2010045, -3707094, -2915209, 1671816, -3803194, -5563594, 5408975, -5830418, 5140002, 4940286, -3107409, -239444, -6988449, -3953518, 635655, -1249836, 8683350, -5344550, 2008434, -628139, -1028645, -6592238, -11283953, -1865626, -3482682, -3597572, -1012002, 4858682, -1153199, -4845260, -4283156, 2094870, -2354179, 3959960, -825707, 1460826, -5213554, 61203, -1300838, 4174708, -4161823, 500901, 7590281, -188979, 3212099, 4038880, -165356, -3855807, 275952, -5434744, --6959458, -2688113, -7916162, -8134131, -2744484, 5201743, -2016487, -1916092, -4317516, -1141388, --7454453, 3502009, -2183454, 1733556, 4263829, 1418950, -1677185, 2953327, 2730526, -3641059, -2346126, 267362, 525060, 2620467, -6529424, -2813204, 4386236, -2953864, -352187, -1894081, -4882304, -6482180, -676994, -5432597, 3354906, -357556, -536334, 4837744, -2245194, -2370285, --1821603, -4578435, 189515, -2084133, -494995, 282931, 2968896, 3133179, 935766, -1411434, --5492190, -8803072, -2835215, -622770, -2270427, 4710506, -1988033, -2732673, 3714073, -2467459, --3795141, 8274792, -1778117, 9217537, -5408975, -2396055, -3841848, 3608846, 909459, -105227, -6709813, 1851131, 2148021, -9038222, 1978906, -4045859, -4820027, -6271726, 140123, 564251, -8070244, -6062883, 3200825, -2342905, 9913321, -3143916, -2973728, 7238094, -2403571, 2736431, -1264331, -89121, 1359357, -4241280, 968515, 601832, 2166811, 9488120, 3380676, 1251446, --3676492, 3594351, -6864432, -1538672, -1153736, 4305168, 3505230, 5941551, 3797288, -3660923, --5870684, -2170569, 4816806, -77846, 2587181, -466541, -488553, 9773735, 2359011, -152471, --10861435, -4348655, 461172, 4442607, 6077916, 8946417, 4827007, -1331440, 1664837, -1313186, --2644626, 6743636, -3568044, 6996502, 487479, -4578972, 2243584, -1722819, 5128728, 1082332, -4656819, -1166084, -808528, -1779727, -5502390, 156766, 3930969, 3862249, 7340099, 3296388, --9636833, -8129836, -6977175, 207232, -1163936, 423591, -3779571, -2460480, -556198, 2826089, -5369, -6285148, 6728603, -1067836, -6139119, 1149441, 1537598, -253940, -513249, 2550137, -3627637, -2352568, 5506148, 120796, 3280281, -7522099, 5369246, 1702955, 3162707, -5239860, --403190, 3531000, 3341485, 7862475, -116501, -11303817, -2837900, -5522791, 2823404, 1590749, --221191, -3185255, 1109175, -4784594, -1330366, -8534637, -4573604, -527207, 4960687, 4898410, --3350075, -3456375, -2852395, 5018670, -1356136, -946503, -7465190, 4496294, -7303055, -3051038, -287226, -1995549, -1433982, 8020852, -678068, 2021856, -3103651, 3893925, -3503083, -211527, -5468567, 10100689, 6942278, 1311039, -8273181, -6286759, 1976759, -1614371, -5370857, -1931662, --6861747, -3104188, 13226352, 1312649, -1611150, -2739652, -172872, -3366181, -2336462, 8818642, --9585830, -1363115, 754841, -2270427, 2189360, 5222680, -2690797, -3364033, 1218160, -4124779, --3927748, -9024800, -3405909, 2076080, -7996156, -1599339, 3724811, 5608691, 1938641, -12583717, --3866544, 2165737, 6034966, -5130339, 10530723, -1561758, -5581310, -3349538, -2469606, -4553202, -5653788, -4682051, -1314797, -6081137, -4658966, -2455111, -4736275, 5789616, -2421825, -12673912, -4540854, 7907035, -57982, 2636036, -15142444, 11350525, 32212, -10101763, 812286, -6798397, --11470784, 2103460, -8544837, 8320426, 1837172, -3714610, -6965900, -11937862, -5391795, -8755828, -2513093, 15734076, 2386928, -4592931, -607201, -2614025, -2842195, -7673496, -5136244, -7890929, -1678259, -971200, 1297617, -3030100, 900333, -8323647, -881542, 1394791, -5715528, -2399813, -345745, -3354370, 446140, -3122978, 11587822, -14987288, -2918967, 753230, 3594351, -1933272, --6303938, -9363566, -6655589, 4357781, -1593433, 4880157, -4851166, 13370233, 1493575, -3112778, --450972, -8636105, -10801843, -5729487, 3660386, -9380745, -861141, 10089952, -614717, -5395016, --10307922, -17277042, 365072, 8270497, -2745021, 9574556, -1264868, -3432753, -6624450, -5768678, -537408, 3797825, -3673808, 14464913, 3752728, -4095251, 9564892, -4073777, -10856067, -2917894, --8076686, -4187593, -3442416, 11668889, -2798171, -3827890, -4774393, 7510287, 6832756, 5965173, -16504486, 17186312, 8081518, 10689637, -3869766, -4911832, 7242926, 10531797, -4411469, 4629975, -3409130, -9137543, -8481487, 5094905, -1096290, -132607, -8453569, -10990284, -2428804, -8923868, -10242423, 18751828, 4072166, 7361574, 2355253, -2279554, 6913824, -12920872, -3231963, 2581275, -7359964, -4330401, -10166188, 15031312, 178241, -4777078, -3492882, 6076305, -1648731, 5388574, --3579855, 8529805, -523449, -407485, 10943577, 3144453, 5151814, 1720134, -1447941, 7797513, --12039867, -5142687, 4742718, 13571023, -8252243, -1248225, -1564442, -2225330, -5603322, -1536525, --2747705, -4131222, 7078106, -6485401, -2378338, 6419366, -4590783, 2916283, 4880694, -8924405, --9563282, 3044058, 7722888, -2296197, 7066832, -4721780, -1982664, 13306882, -14571213, 9183714, --3995393, 377957, 613107, 16383690, -3368865, 3463891, 5333276, 9161702, 5401458, 8067023, --1083406, -950798, 2746632, 1556389, 1501091, -7463580, 12291660, -15799574, -3343095, -3917547, -9210020, -1481764, 11179263, -162672, 1241782, -18829136, -5055177, 12052215, 20087562, 188442, --9654013, -7930657, 8379481, 6959995, 5156645, 5090610, -8234526, -3451543, -4668630, 3017752, -593779, -4745402, 3301756, 3140695, -2178085, -2171643, -11319923, -2541010, -3987877, 17076790, -1775432, 3673271, 6519224, 1065689, -12751221, 1200443, -7750269, 6883759, 6176700, -12823162, --5436355, -5325760, 1472637, -1496796, 17062294, -3050501, -197569, 10546829, -10948945, -8155606, --10320806, -10741713, -3247532, -1170916, 3622268, 18318036, -2601140, -11818139, 18949396, -485868, -4677220, 12722230, 8464307, 11815455, -4184909, 9157944, -7334194, 12398497, 10666551, -3968550, -5118528, -6162741, -5860483, 4149475, 14208289, 5962489, 5043902, 1280437, -5783174, -9237401, --9479530, 497142, 9427990, -6954626, -8286603, -9867687, -4413079, -18680960, -5193689, 2459406, --14093935, 5344013, -139050, -6939057, -16411607, -11257646, -1092532, -21368000, 5237713, 3423626, --1612760, 4548371, 2492155, -3145527, -11811697, -7632157, -2452426, -7992398, 4957466, -8392903, -15475304, -12787191, -863288, 5855114, -1379221, -24619290, 8904541, 11547020, 20116016, 166967, --14646912, 4418448, 7286949, -15083925, -15808164, -9703405, -267899, 8790187, -326954, -5958194, --226023, -5164698, -3592203, -9572408, 16581795, 13221520, 4914517, -19903416, -6020471, 3610457, --1121523, -4139812, 25642028, 9772124, 8053064, 7939784, 12148315, 9538585, 2190433, 9982578, --701690, -15465640, 8541079, -15905875, 4913443, -15726023, 13578002, -3790309, 16396038, -8505109, -3863860, -6761889, 5779952, 10219875, 25020332, 5907191, -32306208, -1100585, -4727149, 7511898, -13718126, -2185602, -6565395, 10981695, -2197950, -4342749, 13380434, 1626719, -1093606, 1493575, -5367099, 11882564, 8122320, -8601209, -7773354, -5041218, -10463077, 3259343, -1869385, 11939472, -6746320, -13820668, 27065810, -10198400, -17981418, -5683853, 7059316, -4398047, 13003013, 18853832, --7553237, 17300666, 11087458, 8732742, -2862596, -2005750, -3499325, 16793322, 3019899, 2090575, --9783936, 4314832, -5150203, -347892, -16153909, 10972568, -14845018, 144955, -10514617, 17516488, --9040369, 463320, 17086454, 13169443, 8689793, -988379, -7026567, 8069707, -460635, -1495722, --22239878, -6491306, -13552769, -10765336, -8719320, -3952444, 11120207, 7197829, 6316287, 18254, -16445967, -8949101, 17383344, 15613817, 16326244, 29322278, -11901354, -8986145, 12336757, 2279554, --12065637, 17539036, -6568616, -8828305, 4938139, -2529199, -7074885, -5504001, 6573448, -10832444, -3462818, -7072201, 14882062, -7841537, -1466731, 3534758, 9600863, 14392435, -2989297, -15273977, --26382910, -22468584, -2219424, 3331284, -15754477, -485331, 66572, 22317186, -16521665, -18589692, -4415764, -8457327, -1296006, -13850733, 10888279, -14040248, -18694918, -11566347, 18783502, -14740328, --12538620, -3594351, 6807523, -7008313, -15791521, 3492882, -7231651, -878858, 5149666, -19965156, --2866354, 9605157, 15473157, -3481071, 24397562, 10455561, -4450123, 281857, 10241350, -5692443, --12074227, 1173600, 12437152, 764504, 5119064, -455803, -13120051, 3226057, -26874684, 1584306, --344134, -3883724, -16595754, -14107894, -162135, -6736120, -12037720, -7366406, -10106595, 9161702, --18560702, -9889162, -6820945, 6884296, -11883638, 20109036, -5281736, -17228188, -3822521, -10157061, --29635274, -7892003, -928250, -326418, -20716238, -8477729, -7882876, 19789598, 17717276, 5728413, -35702988, -5942624, -11842299, -10393821, -4730907, -18313204, 26036628, -14666776, -5227512, -11718281, --6066642, -5097053, 3347927, -17260936, 577673, 1022739, -2220498, 5976984, -18832894, -3962107, -13296145, -12068858, 897648, -15851651, 16287590, 1091459, -28533616, -13835700, -5094905, 461172, -8033200, -16287590, -9728101, 13114683, -2045478, 9464497, 7558606, 8752070, -10516227, 2473364, -12567611, 6047851, -23807540, 16670379, 10822244, -11309723, 36100812, 897648, -26363046, 8844411, -7904888, 1118839, 18999862, -4167729, -32854890, 10998874, 4120484, 11660299, 10893648, -12760885, -22744000, 10980621, 6483790, -3297998, 34564824, -320512, -481573, 26774290, -5429913, 13756780, -17640504, 9451076, 1044751, -1650878, 7088307, 7321846, -24896314, -24438900, 50813220, 16531866, --31361314, -15678241, -14254996, -28727426, -1908039, -15067282, 21315386, -11712913, 354872, 26474178, -821413, 4557497, -19092204, 24418500, 18323942, -130460, -5574331, -1707786, -14768782, 1321776, -2194192, 3250217, -20387136, -2835215, -903017, -6049462, -4304094, -14079440, 13807783, 26920318, -32443110, -2444373, -12697534, -5257040, -6331856, -4328790, -19390704, 6885907, 8041790, 7252589, --20209968, -27249420, 29998200, 11385421, 16957604, 21731460, 20551956, -8555575, -13452374, 19698868, --19476602, 10282152, -14489609, -11155104, -6272800, 23439784, -7351374, 4982699, 8289824, -3932580, --18469434, 39102456, -23213224, 2769180, 28237800, -25021942, -11503533, 3446711, 10008348, 29384018, -13582297, -7990787, 8674760, 34136936, 20734492, -2611877, -21169894, 2692408, 34974992, 27952184, -6201396, -26929982, -10139881, -23193360, -1372242, 18910742, 23217520, -1255204, 9052180, 27557048, -29247116, 45231376, 45468672, -22127134, 10154376, -23933706, -4077535, -19337016, -6778532, 15924665, --3190624, 7170985, 6386080, -13663365, -10012643, 11779485, 12991202, 16873316, 11975979, -257161, -12315282, 18553722, -9515500, 9513889, 10904922, 3445101, 10620917, 35167728, -26210038, -22439594, --5069135, 21745956, 20681878, -12192875, -220117, 33248952, 26726508, -18791018, -12710419, 11363410, --23194434, 6284074, -11346767, -21011516, 6362994, -24743306, 24978992, 8973797, 27626840, -12325482, --17123498, -32477468, -7648263, 9535901, -28765544, -25009058, -15302432, 13777718, 34321620, -1678259, --10063645, 22281216, 4875862, -700617, -31871878, 28905666, -13622563, -30050812, -10070625, 2694018, -35649840, 4025995, 25617870, 10928007, -29700772, -5832566, -26300232, 4973036, -26234734, -18307298, --11145440, 2086817, 5769752, -19744502, 20322174, -5699422, 12402792, 13980119, 13166759, 25279640, -44696116, 27023398, -8396124, -21029770, -674847, 47847548, 29312614, -15035607, 23423142, -8032663, -28584082, -13182865, 2804614, -9592809, -5243618, -550830, -8005282, 71606232, -13408888, -18364744, --22497038, -30515206, -12166569, -23229330, -1067836, 28452548, -10819023, 9280351, -9009231, -12643310, -24908126, -5587216, 41952704, 9103720, 33695628, -39382704, 17250736, 73246912, 26783416, -38262252, -24941948, 23925116, 2971044, -1137630, 46691128, 20536922, 3131031, -3903589, -55861956, 22562536, -31298500, -26632556, -19949050, 39119100, 24775518, -35696548, -37620156, -1218697, -22944790, 6503118, -1118839, 6077916, -35486092, 6161668, -8746164, -19063212, 27200028, -4602058, -7201587, 7347616, -22438520, 19636590, 12912282, -31008590, -1676111, -16486232, -32574642, 8385387, 6264210, 15982110, --8710194, -16806208, 36416492, -30521112, 9946607, 10728291, 8597988, 5570573, -7177964, 20132660, --23620172, -39457328, -8569533, -44804024, 34442952, 19864224, 33718716, -5723581, 4612795, -32008244, -27834072, 35560180, 11135240, -19020800, -45635640, -12529493, -59428924, -1695438, -13415330, -40771588, --35591320, 12903155, -740345, 22147536, -21588116, 26565446, 19302120, -30754650, 3064459, -4585415, --32618130, 16088947, 12438762, -14606647, 6680285, -6857452, -49778136, -12071006, 13616120, -4489315, -6607271, -26844620, 37928856, -47130824, 4768488, -34068756, 25651156, 28927678, 9763534, 24526410, -3346317, -21767968, 40860708, -16929150, 4953708, 2464238, -22378928, 39947492, 3286724, 11842835, -8930848, 13920526, 6880538, 30625802, 34100968, 13551159, 39705364, -31811750, -2225330, 2410014, -50525460, -7100655, 40291088, 24945170, 55196236, 13541495, -12331925, -14684493, 21912386, -38122668, -38778184, -20262582, -13952738, -3188476, 7607998, 32925220, -7219303, -49566072, -15286325, 90366648, -5772973, -50050864, 12626667, -31302796, 9672266, 90272160, -24722368, -17465484, 57370564, -57008176, -29979408, 22697828, 16248398, 65965328, 30629022, -31223876, 43523588, 21523692, 29282014, 55790552, -27815282, -26820460, 35735740, 10628970, 32261646, -9368397, -59547576, 60508572, 52727704, 32217086, -99485400, -9417253, -83253112, -43278236, -39203388, 87951264, 64958696, 15454903, -5414880, -16342351, --58088896, -27947890, -18657874, -33780992, 89950040, 72468984, 101441760, 1549410, -115429392, -180585120, --87567944, 100036232, 135862704, 137968848, 56164212, -115144312, -210333136, -129701032, -64778308, 96728032, -165792720, 93353264, 51570748, 13089450, -74022688, -100818992, -74407624, -6302865, 58762132, 117176912, -141568560, 24322936, 28272696, -112610288, -184599840, -99661496, 93188440, 154194160, 147858544, 90866472, --53012244, -181281984, -115792856, -152224912, 1564979, 101556648, 111921480, 54525684, -43077448, -95905008, --83486112, -66998268, 19372450, -13599477, -33390150, 36410584, 4372277, -55133960, 5967320, -15054934, --22742388, 15350750, -17658222, -7562901, -29977798, 759672, -12059731, -22553948, 7694971, -3339337, -6286222, 2629594, 17028472, -18531710, -6921340, 4598836, 996969, 7528541, -8511015, 17322676, --13768591, 11702712, 4938139, -6624450, -14441828, -6523519, -26191248, 26692684, -3510599, 254477, --5812702, -7175817, 441845, -1406602, -384400, 10011569, 5191542, -852551, 14203994, -13783087, -3535832, -13069585, 12552579, 8031589, -11758010, 6986838, -14134201, -14627048, -13101798, -22323630, --4002373, 16539382, -16899622, -30075508, -22522808, 1962800, 16248935, 725313, 11324218, -28036472, --10231686, -2408403, -5792301, -26592826, -10924786, 3082176, -1079647, -6409702, 21068426, 20542828, --23868208, -29835528, -48579300, -75934488, 2131378, 61623652, -24423868, -38719132, -41452876, -39085812, -7386807, 7476465, 70993664, -10878078, -10985989, -32384054, 2860985, 9220758, 21840446, -24439974, -11396696, -17890150, 27302570, 8507256, 8408472, 2948495, -18269180, -9920838, -12204686, -4168266, -9320079, -10929618, -10140418, 19407346, -18960670, -11660299, 15457050, -15949361, -6650757, -13737990, --22763326, 7347616, 13346611, 2270964, 12497818, -20876762, -6238440, -967978, 10863046, 14371497, -17201344, 906775, -2990908, -31236224, -32806034, -12125230, -11398843, -7358890, 13427142, 19495930, -27020714, 2615098, -14006962, 27685896, -21320218, -9645960, 11437498, -9575093, 35989680, 1003949, --7184407, 5176510, -14397267, 9304510, 25143812, 18997714, -7453916, 4184909, 18347026, -49836652, --114763136, -88017304, -11290932, 36240936, 96627640, 81349368, 77650864, 79280264, 51926156, 21086142, --30303678, -52849572, -99597072, -73795592, -72449120, -72326712, -45391360, 41511396, 56517476, 83517248, -63934884, 53245784, 16811038, 35077536, -9375914, -10752987, -12608950, -21235928, -38408280, -31829466, --63881196, -24158118, -50954956, -25035902, -12898324, 15032922, 2167885, 22079354, 4326106, 31450434, -22988276, 38330972, 51550880, 64124400, 40779104, 26913338, 45450956, 2476586, -16720308, -58385784, --68112816, -93472984, -83266528, -77978352, -30285426, -51379084, -27139898, 2455648, 13401372, 32191316, -61901752, 66176856, 74020000, 112215688, 63218160, 86481312, 60106992, 14897094, -7863012, -32706176, --87242064, -93488016, -88557392, -94190240, -63826972, -19724100, -1180042, 2333778, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +1520418, 1184874, 2761664, -888521, 255551, -1235877, -4140885, -7766375, 1602560, -2968896, +-4188130, -5618354, 1364189, 1056025, 4163971, 1150514, 4949950, -716723, -7343321, 2747169, +-3877282, -484258, 1573032, -3115999, -4798552, 642635, -3138547, -478352, -1585917, 2860985, +2870112, 916976, -6844568, -1481227, -2626373, 5280126, 1101659, 1585380, 6161668, 2937758, +2764885, -98247, 1667521, 9698573, 4763656, -1661616, 461709, -4668630, 3338263, -275952, +527207, -5748814, -761820, -3052111, -3914326, -1592359, 4333085, 3333432, 49929, 18790, +-3757023, -3528853, -1305133, -3597035, -7394323, 3778498, -3084324, -670015, -6961068, -1855963, +4182225, 2106145, -312459, -6386617, 7894150, -692027, 3128347, 1542967, 3696356, -6840809, +-3745748, 4275640, 2008971, -20401, -3860102, 706522, -10600516, -6822556, -467078, -4088272, +-4663261, 1817308, 8100845, 1326071, 6141267, -1494649, 6065568, -3731253, -3404835, -450435, +-5689758, 1072131, 2654290, -2044941, -253940, 1422171, 141197, 2495913, -421981, -5980742, +2010045, -3707094, -2915209, 1671816, -3803194, -5563594, 5408975, -5830418, 5140002, 4940286, +3107409, -239444, -6988449, -3953518, 635655, -1249836, 8683350, -5344550, 2008434, -628139, +1028645, -6592238, -11283953, -1865626, -3482682, -3597572, -1012002, 4858682, -1153199, -4845260, +4283156, 2094870, -2354179, 3959960, -825707, 1460826, -5213554, 61203, -1300838, 4174708, +4161823, 500901, 7590281, -188979, 3212099, 4038880, -165356, -3855807, 275952, -5434744, +-6959458, -2688113, -7916162, -8134131, -2744484, 5201743, -2016487, -1916092, -4317516, -1141388, +-7454453, 3502009, -2183454, 1733556, 4263829, 1418950, -1677185, 2953327, 2730526, -3641059, +2346126, 267362, 525060, 2620467, -6529424, -2813204, 4386236, -2953864, -352187, -1894081, +4882304, -6482180, -676994, -5432597, 3354906, -357556, -536334, 4837744, -2245194, -2370285, +-1821603, -4578435, 189515, -2084133, -494995, 282931, 2968896, 3133179, 935766, -1411434, +-5492190, -8803072, -2835215, -622770, -2270427, 4710506, -1988033, -2732673, 3714073, -2467459, +-3795141, 8274792, -1778117, 9217537, -5408975, -2396055, -3841848, 3608846, 909459, -105227, +6709813, 1851131, 2148021, -9038222, 1978906, -4045859, -4820027, -6271726, 140123, 564251, +8070244, -6062883, 3200825, -2342905, 9913321, -3143916, -2973728, 7238094, -2403571, 2736431, +1264331, -89121, 1359357, -4241280, 968515, 601832, 2166811, 9488120, 3380676, 1251446, +-3676492, 3594351, -6864432, -1538672, -1153736, 4305168, 3505230, 5941551, 3797288, -3660923, +-5870684, -2170569, 4816806, -77846, 2587181, -466541, -488553, 9773735, 2359011, -152471, +-10861435, -4348655, 461172, 4442607, 6077916, 8946417, 4827007, -1331440, 1664837, -1313186, +-2644626, 6743636, -3568044, 6996502, 487479, -4578972, 2243584, -1722819, 5128728, 1082332, +4656819, -1166084, -808528, -1779727, -5502390, 156766, 3930969, 3862249, 7340099, 3296388, +-9636833, -8129836, -6977175, 207232, -1163936, 423591, -3779571, -2460480, -556198, 2826089, +5369, -6285148, 6728603, -1067836, -6139119, 1149441, 1537598, -253940, -513249, 2550137, +3627637, -2352568, 5506148, 120796, 3280281, -7522099, 5369246, 1702955, 3162707, -5239860, +-403190, 3531000, 3341485, 7862475, -116501, -11303817, -2837900, -5522791, 2823404, 1590749, +-221191, -3185255, 1109175, -4784594, -1330366, -8534637, -4573604, -527207, 4960687, 4898410, +-3350075, -3456375, -2852395, 5018670, -1356136, -946503, -7465190, 4496294, -7303055, -3051038, +287226, -1995549, -1433982, 8020852, -678068, 2021856, -3103651, 3893925, -3503083, -211527, +5468567, 10100689, 6942278, 1311039, -8273181, -6286759, 1976759, -1614371, -5370857, -1931662, +-6861747, -3104188, 13226352, 1312649, -1611150, -2739652, -172872, -3366181, -2336462, 8818642, +-9585830, -1363115, 754841, -2270427, 2189360, 5222680, -2690797, -3364033, 1218160, -4124779, +-3927748, -9024800, -3405909, 2076080, -7996156, -1599339, 3724811, 5608691, 1938641, -12583717, +-3866544, 2165737, 6034966, -5130339, 10530723, -1561758, -5581310, -3349538, -2469606, -4553202, +5653788, -4682051, -1314797, -6081137, -4658966, -2455111, -4736275, 5789616, -2421825, -12673912, +4540854, 7907035, -57982, 2636036, -15142444, 11350525, 32212, -10101763, 812286, -6798397, +-11470784, 2103460, -8544837, 8320426, 1837172, -3714610, -6965900, -11937862, -5391795, -8755828, +2513093, 15734076, 2386928, -4592931, -607201, -2614025, -2842195, -7673496, -5136244, -7890929, +1678259, -971200, 1297617, -3030100, 900333, -8323647, -881542, 1394791, -5715528, -2399813, +345745, -3354370, 446140, -3122978, 11587822, -14987288, -2918967, 753230, 3594351, -1933272, +-6303938, -9363566, -6655589, 4357781, -1593433, 4880157, -4851166, 13370233, 1493575, -3112778, +-450972, -8636105, -10801843, -5729487, 3660386, -9380745, -861141, 10089952, -614717, -5395016, +-10307922, -17277042, 365072, 8270497, -2745021, 9574556, -1264868, -3432753, -6624450, -5768678, +537408, 3797825, -3673808, 14464913, 3752728, -4095251, 9564892, -4073777, -10856067, -2917894, +-8076686, -4187593, -3442416, 11668889, -2798171, -3827890, -4774393, 7510287, 6832756, 5965173, +16504486, 17186312, 8081518, 10689637, -3869766, -4911832, 7242926, 10531797, -4411469, 4629975, +3409130, -9137543, -8481487, 5094905, -1096290, -132607, -8453569, -10990284, -2428804, -8923868, +10242423, 18751828, 4072166, 7361574, 2355253, -2279554, 6913824, -12920872, -3231963, 2581275, +7359964, -4330401, -10166188, 15031312, 178241, -4777078, -3492882, 6076305, -1648731, 5388574, +-3579855, 8529805, -523449, -407485, 10943577, 3144453, 5151814, 1720134, -1447941, 7797513, +-12039867, -5142687, 4742718, 13571023, -8252243, -1248225, -1564442, -2225330, -5603322, -1536525, +-2747705, -4131222, 7078106, -6485401, -2378338, 6419366, -4590783, 2916283, 4880694, -8924405, +-9563282, 3044058, 7722888, -2296197, 7066832, -4721780, -1982664, 13306882, -14571213, 9183714, +-3995393, 377957, 613107, 16383690, -3368865, 3463891, 5333276, 9161702, 5401458, 8067023, +-1083406, -950798, 2746632, 1556389, 1501091, -7463580, 12291660, -15799574, -3343095, -3917547, +9210020, -1481764, 11179263, -162672, 1241782, -18829136, -5055177, 12052215, 20087562, 188442, +-9654013, -7930657, 8379481, 6959995, 5156645, 5090610, -8234526, -3451543, -4668630, 3017752, +593779, -4745402, 3301756, 3140695, -2178085, -2171643, -11319923, -2541010, -3987877, 17076790, +1775432, 3673271, 6519224, 1065689, -12751221, 1200443, -7750269, 6883759, 6176700, -12823162, +-5436355, -5325760, 1472637, -1496796, 17062294, -3050501, -197569, 10546829, -10948945, -8155606, +-10320806, -10741713, -3247532, -1170916, 3622268, 18318036, -2601140, -11818139, 18949396, -485868, +4677220, 12722230, 8464307, 11815455, -4184909, 9157944, -7334194, 12398497, 10666551, -3968550, +5118528, -6162741, -5860483, 4149475, 14208289, 5962489, 5043902, 1280437, -5783174, -9237401, +-9479530, 497142, 9427990, -6954626, -8286603, -9867687, -4413079, -18680960, -5193689, 2459406, +-14093935, 5344013, -139050, -6939057, -16411607, -11257646, -1092532, -21368000, 5237713, 3423626, +-1612760, 4548371, 2492155, -3145527, -11811697, -7632157, -2452426, -7992398, 4957466, -8392903, +15475304, -12787191, -863288, 5855114, -1379221, -24619290, 8904541, 11547020, 20116016, 166967, +-14646912, 4418448, 7286949, -15083925, -15808164, -9703405, -267899, 8790187, -326954, -5958194, +-226023, -5164698, -3592203, -9572408, 16581795, 13221520, 4914517, -19903416, -6020471, 3610457, +-1121523, -4139812, 25642028, 9772124, 8053064, 7939784, 12148315, 9538585, 2190433, 9982578, +-701690, -15465640, 8541079, -15905875, 4913443, -15726023, 13578002, -3790309, 16396038, -8505109, +3863860, -6761889, 5779952, 10219875, 25020332, 5907191, -32306208, -1100585, -4727149, 7511898, +13718126, -2185602, -6565395, 10981695, -2197950, -4342749, 13380434, 1626719, -1093606, 1493575, +5367099, 11882564, 8122320, -8601209, -7773354, -5041218, -10463077, 3259343, -1869385, 11939472, +6746320, -13820668, 27065810, -10198400, -17981418, -5683853, 7059316, -4398047, 13003013, 18853832, +-7553237, 17300666, 11087458, 8732742, -2862596, -2005750, -3499325, 16793322, 3019899, 2090575, +-9783936, 4314832, -5150203, -347892, -16153909, 10972568, -14845018, 144955, -10514617, 17516488, +-9040369, 463320, 17086454, 13169443, 8689793, -988379, -7026567, 8069707, -460635, -1495722, +-22239878, -6491306, -13552769, -10765336, -8719320, -3952444, 11120207, 7197829, 6316287, 18254, +16445967, -8949101, 17383344, 15613817, 16326244, 29322278, -11901354, -8986145, 12336757, 2279554, +-12065637, 17539036, -6568616, -8828305, 4938139, -2529199, -7074885, -5504001, 6573448, -10832444, +3462818, -7072201, 14882062, -7841537, -1466731, 3534758, 9600863, 14392435, -2989297, -15273977, +-26382910, -22468584, -2219424, 3331284, -15754477, -485331, 66572, 22317186, -16521665, -18589692, +4415764, -8457327, -1296006, -13850733, 10888279, -14040248, -18694918, -11566347, 18783502, -14740328, +-12538620, -3594351, 6807523, -7008313, -15791521, 3492882, -7231651, -878858, 5149666, -19965156, +-2866354, 9605157, 15473157, -3481071, 24397562, 10455561, -4450123, 281857, 10241350, -5692443, +-12074227, 1173600, 12437152, 764504, 5119064, -455803, -13120051, 3226057, -26874684, 1584306, +-344134, -3883724, -16595754, -14107894, -162135, -6736120, -12037720, -7366406, -10106595, 9161702, +-18560702, -9889162, -6820945, 6884296, -11883638, 20109036, -5281736, -17228188, -3822521, -10157061, +-29635274, -7892003, -928250, -326418, -20716238, -8477729, -7882876, 19789598, 17717276, 5728413, +35702988, -5942624, -11842299, -10393821, -4730907, -18313204, 26036628, -14666776, -5227512, -11718281, +-6066642, -5097053, 3347927, -17260936, 577673, 1022739, -2220498, 5976984, -18832894, -3962107, +13296145, -12068858, 897648, -15851651, 16287590, 1091459, -28533616, -13835700, -5094905, 461172, +8033200, -16287590, -9728101, 13114683, -2045478, 9464497, 7558606, 8752070, -10516227, 2473364, +12567611, 6047851, -23807540, 16670379, 10822244, -11309723, 36100812, 897648, -26363046, 8844411, +7904888, 1118839, 18999862, -4167729, -32854890, 10998874, 4120484, 11660299, 10893648, -12760885, +22744000, 10980621, 6483790, -3297998, 34564824, -320512, -481573, 26774290, -5429913, 13756780, +17640504, 9451076, 1044751, -1650878, 7088307, 7321846, -24896314, -24438900, 50813220, 16531866, +-31361314, -15678241, -14254996, -28727426, -1908039, -15067282, 21315386, -11712913, 354872, 26474178, +821413, 4557497, -19092204, 24418500, 18323942, -130460, -5574331, -1707786, -14768782, 1321776, +2194192, 3250217, -20387136, -2835215, -903017, -6049462, -4304094, -14079440, 13807783, 26920318, +32443110, -2444373, -12697534, -5257040, -6331856, -4328790, -19390704, 6885907, 8041790, 7252589, +-20209968, -27249420, 29998200, 11385421, 16957604, 21731460, 20551956, -8555575, -13452374, 19698868, +-19476602, 10282152, -14489609, -11155104, -6272800, 23439784, -7351374, 4982699, 8289824, -3932580, +-18469434, 39102456, -23213224, 2769180, 28237800, -25021942, -11503533, 3446711, 10008348, 29384018, +13582297, -7990787, 8674760, 34136936, 20734492, -2611877, -21169894, 2692408, 34974992, 27952184, +6201396, -26929982, -10139881, -23193360, -1372242, 18910742, 23217520, -1255204, 9052180, 27557048, +29247116, 45231376, 45468672, -22127134, 10154376, -23933706, -4077535, -19337016, -6778532, 15924665, +-3190624, 7170985, 6386080, -13663365, -10012643, 11779485, 12991202, 16873316, 11975979, -257161, +12315282, 18553722, -9515500, 9513889, 10904922, 3445101, 10620917, 35167728, -26210038, -22439594, +-5069135, 21745956, 20681878, -12192875, -220117, 33248952, 26726508, -18791018, -12710419, 11363410, +-23194434, 6284074, -11346767, -21011516, 6362994, -24743306, 24978992, 8973797, 27626840, -12325482, +-17123498, -32477468, -7648263, 9535901, -28765544, -25009058, -15302432, 13777718, 34321620, -1678259, +-10063645, 22281216, 4875862, -700617, -31871878, 28905666, -13622563, -30050812, -10070625, 2694018, +35649840, 4025995, 25617870, 10928007, -29700772, -5832566, -26300232, 4973036, -26234734, -18307298, +-11145440, 2086817, 5769752, -19744502, 20322174, -5699422, 12402792, 13980119, 13166759, 25279640, +44696116, 27023398, -8396124, -21029770, -674847, 47847548, 29312614, -15035607, 23423142, -8032663, +28584082, -13182865, 2804614, -9592809, -5243618, -550830, -8005282, 71606232, -13408888, -18364744, +-22497038, -30515206, -12166569, -23229330, -1067836, 28452548, -10819023, 9280351, -9009231, -12643310, +24908126, -5587216, 41952704, 9103720, 33695628, -39382704, 17250736, 73246912, 26783416, -38262252, +24941948, 23925116, 2971044, -1137630, 46691128, 20536922, 3131031, -3903589, -55861956, 22562536, +31298500, -26632556, -19949050, 39119100, 24775518, -35696548, -37620156, -1218697, -22944790, 6503118, +1118839, 6077916, -35486092, 6161668, -8746164, -19063212, 27200028, -4602058, -7201587, 7347616, +22438520, 19636590, 12912282, -31008590, -1676111, -16486232, -32574642, 8385387, 6264210, 15982110, +-8710194, -16806208, 36416492, -30521112, 9946607, 10728291, 8597988, 5570573, -7177964, 20132660, +-23620172, -39457328, -8569533, -44804024, 34442952, 19864224, 33718716, -5723581, 4612795, -32008244, +27834072, 35560180, 11135240, -19020800, -45635640, -12529493, -59428924, -1695438, -13415330, -40771588, +-35591320, 12903155, -740345, 22147536, -21588116, 26565446, 19302120, -30754650, 3064459, -4585415, +-32618130, 16088947, 12438762, -14606647, 6680285, -6857452, -49778136, -12071006, 13616120, -4489315, +6607271, -26844620, 37928856, -47130824, 4768488, -34068756, 25651156, 28927678, 9763534, 24526410, +3346317, -21767968, 40860708, -16929150, 4953708, 2464238, -22378928, 39947492, 3286724, 11842835, +8930848, 13920526, 6880538, 30625802, 34100968, 13551159, 39705364, -31811750, -2225330, 2410014, +50525460, -7100655, 40291088, 24945170, 55196236, 13541495, -12331925, -14684493, 21912386, -38122668, +38778184, -20262582, -13952738, -3188476, 7607998, 32925220, -7219303, -49566072, -15286325, 90366648, +5772973, -50050864, 12626667, -31302796, 9672266, 90272160, -24722368, -17465484, 57370564, -57008176, +29979408, 22697828, 16248398, 65965328, 30629022, -31223876, 43523588, 21523692, 29282014, 55790552, +27815282, -26820460, 35735740, 10628970, 32261646, -9368397, -59547576, 60508572, 52727704, 32217086, +99485400, -9417253, -83253112, -43278236, -39203388, 87951264, 64958696, 15454903, -5414880, -16342351, +-58088896, -27947890, -18657874, -33780992, 89950040, 72468984, 101441760, 1549410, -115429392, -180585120, +-87567944, 100036232, 135862704, 137968848, 56164212, -115144312, -210333136, -129701032, -64778308, 96728032, +165792720, 93353264, 51570748, 13089450, -74022688, -100818992, -74407624, -6302865, 58762132, 117176912, +141568560, 24322936, 28272696, -112610288, -184599840, -99661496, 93188440, 154194160, 147858544, 90866472, +-53012244, -181281984, -115792856, -152224912, 1564979, 101556648, 111921480, 54525684, -43077448, -95905008, +-83486112, -66998268, 19372450, -13599477, -33390150, 36410584, 4372277, -55133960, 5967320, -15054934, +-22742388, 15350750, -17658222, -7562901, -29977798, 759672, -12059731, -22553948, 7694971, -3339337, +6286222, 2629594, 17028472, -18531710, -6921340, 4598836, 996969, 7528541, -8511015, 17322676, +-13768591, 11702712, 4938139, -6624450, -14441828, -6523519, -26191248, 26692684, -3510599, 254477, +-5812702, -7175817, 441845, -1406602, -384400, 10011569, 5191542, -852551, 14203994, -13783087, +3535832, -13069585, 12552579, 8031589, -11758010, 6986838, -14134201, -14627048, -13101798, -22323630, +-4002373, 16539382, -16899622, -30075508, -22522808, 1962800, 16248935, 725313, 11324218, -28036472, +-10231686, -2408403, -5792301, -26592826, -10924786, 3082176, -1079647, -6409702, 21068426, 20542828, +-23868208, -29835528, -48579300, -75934488, 2131378, 61623652, -24423868, -38719132, -41452876, -39085812, +7386807, 7476465, 70993664, -10878078, -10985989, -32384054, 2860985, 9220758, 21840446, -24439974, +11396696, -17890150, 27302570, 8507256, 8408472, 2948495, -18269180, -9920838, -12204686, -4168266, +9320079, -10929618, -10140418, 19407346, -18960670, -11660299, 15457050, -15949361, -6650757, -13737990, +-22763326, 7347616, 13346611, 2270964, 12497818, -20876762, -6238440, -967978, 10863046, 14371497, +17201344, 906775, -2990908, -31236224, -32806034, -12125230, -11398843, -7358890, 13427142, 19495930, +27020714, 2615098, -14006962, 27685896, -21320218, -9645960, 11437498, -9575093, 35989680, 1003949, +-7184407, 5176510, -14397267, 9304510, 25143812, 18997714, -7453916, 4184909, 18347026, -49836652, +-114763136, -88017304, -11290932, 36240936, 96627640, 81349368, 77650864, 79280264, 51926156, 21086142, +-30303678, -52849572, -99597072, -73795592, -72449120, -72326712, -45391360, 41511396, 56517476, 83517248, +63934884, 53245784, 16811038, 35077536, -9375914, -10752987, -12608950, -21235928, -38408280, -31829466, +-63881196, -24158118, -50954956, -25035902, -12898324, 15032922, 2167885, 22079354, 4326106, 31450434, +22988276, 38330972, 51550880, 64124400, 40779104, 26913338, 45450956, 2476586, -16720308, -58385784, +-68112816, -93472984, -83266528, -77978352, -30285426, -51379084, -27139898, 2455648, 13401372, 32191316, +61901752, 66176856, 74020000, 112215688, 63218160, 86481312, 60106992, 14897094, -7863012, -32706176, +-87242064, -93488016, -88557392, -94190240, -63826972, -19724100, -1180042, 2333778, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, }, { { 2484102, --669478, 1698123, 1275068, 2346663, -433255, -1897839, 3670050, -516470, -5807333, -1687385, --6451041, 4508105, 867583, -973347, 906775, -1239098, 862752, -5407364, 4455492, -544387, -1574106, -5060545, -1840394, -1856500, -7013145, -2695629, -594316, -89121, -454193, 2633889, --999117, -2592013, -2026151, -5426691, -499290, -5418101, -318364, 1212255, 1358283, -1422708, -129923, -987306, -183610, -1873680, -1769527, 1171452, -1134408, -1350230, 2147484, 7158100, -343597, 3140158, 5743982, -535797, -1183264, 5374078, -2950106, -405874, -1194001, 248034, -2247342, 962610, -2411087, -2822331, 3053722, 1730335, 3431142, -2044941, -1890323, -2705830, --1158567, -1047972, -1282585, -1843078, 635118, -9339943, 7177964, 325881, 3278671, 3257196, -9297530, 4361003, -3482145, -4381404, -6109054, 4323422, -5350456, -3890167, 828392, 1309965, -533650, 5447629, -1831804, 5090073, -1355599, 4566087, -4396973, 1986422, -1971390, -4677220, --380105, -8895951, 1275605, 2144799, 3907347, -3271155, -112743, 3425237, -2609730, 3849901, -3591667, -2235531, 2557116, -2985002, -1443646, -2221035, -3257733, -4088809, 3535832, 5291937, --4085588, 2314451, 4206384, 3415036, 5165235, 591632, -891206, 2986613, 2218351, -5647882, --325344, 547071, 234613, 1656784, 3478924, 684510, 1172526, -2073932, -1365263, 2384781, -3430605, 1800128, -2059974, -3560528, 3521873, -3293703, -1158031, 1688459, -817654, -653909, -1379758, -361851, 3693672, -1944010, 2706366, 269509, -223338, -7493108, 1208496, 6408091, --3922916, 2658048, -7969312, -8046621, -2658048, -6538014, -5725192, -839666, 1180579, 4530117, -714038, -2143726, 1016297, 3096135, -3969087, 5525476, -3727495, -3990562, 4648229, -2278480, -5355288, 6855305, 936840, -4871567, 3431679, 2295660, 1370632, -2449742, -1821603, 2918430, -2381559, 547071, -5564667, -1537598, -5140539, 4707284, -4640176, -2943663, 3405909, 245887, -2956548, 940061, 1133335, 5145908, 852551, 5768678, -7293392, -3623879, -1680406, 3750043, -5123359, 5993090, 7968238, 1032403, -2237678, -569083, -1027571, -23622, -5111011, -2006287, --2168422, -322659, 911607, -3810710, -2317135, -442919, -1539209, -2516314, 4241280, 8414378, --6449431, -2496450, -1367947, 5126581, 4617627, -4903779, -554588, -8999030, -2057289, 10640781, -3937948, -4452808, 7611219, 2399276, 2856153, 666257, -2706903, -8594766, 1023813, -3938485, --2528662, -1670742, -5276368, -1950452, -4109210, 2666638, -1920924, -2461553, 4723391, -9240085, -8279623, -3078955, 1083942, -2976949, 2510945, -461172, -944893, -346282, 3465502, 56908, -2153389, -3377992, 6182069, -5005248, 7217693, 1442572, -823560, -4212289, -4903779, 9834938, -1620813, -9434969, 9445707, 8882529, -4968741, -1890859, 2740189, -3777424, -763430, -2357400, -2186138, 5653788, -3550327, 1243393, -2663954, -2438468, 902480, 7690676, -7094749, 4297652, --7280507, -5560909, -5198521, -806917, 350577, 348966, 1670742, 3245385, -2456721, 1199370, --5644124, 7028177, -8260833, 1184874, 10377715, -16456704, 12907450, 5642514, -3720516, 4619774, -531502, 11319386, -206695, -7850127, -5165772, 4355097, 4971962, 1997697, 1201517, 5287105, -2258079, 1563905, 6980933, 3307662, 2673080, 5192079, 4089883, 15783468, -3143379, 4814659, -763967, -1616518, 4871567, 3250217, 2523830, 2739116, -1429687, -3295851, 1309428, 839129, -1265942, 3011309, 5632850, -3803194, -3852049, 2989297, -70867, -1033477, -1821066, 6945499, --3200288, 9659381, 5330055, 1260573, 3299609, 1620276, 3681861, 12055973, 10714870, 1605781, -1921998, 3046743, -777926, 5089536, 648540, 4687957, 2869038, 1171452, 1918777, -3832185, -6835978, 4434554, -795106, 2536178, -723165, 5191005, 394600, 5954436, -1874216, 5338108, --3501472, 10768557, -7699266, -2551211, -3567507, 11124502, 6257768, 4376572, 6977711, -5676336, --1071058, 10349261, 5755793, 5128728, 4930086, 3071975, 3413962, -599148, 9570798, -433255, --4271882, -2669859, 3388729, -2980707, 2221572, -8341900, 3350611, -1083942, 192200, -8964670, -4146254, -1385127, 9009768, -769873, 2818036, 3207804, -3866008, -188442, 4034048, 1353989, -2720325, -1216550, 4886599, 7955353, 754304, -4061965, 1736241, 5928666, 3382824, 1643362, --3605088, -5945846, 5619428, -6675453, -3541201, 5530844, -10579578, -1100585, 6111202, -3390340, -1058173, 1607928, -852551, 346819, 2381023, -3089692, 215285, -5889474, -3869766, -5168993, --3598109, 2274185, -19508816, 2783676, -6535330, -4003447, 3777961, 2768643, 1739999, 307090, --14506789, -1992328, 3749507, -8000987, -2554969, -10748693, -5812702, 1772748, -1825898, -9926743, -9196062, 5421860, -3626026, 562641, 7088844, -5481452, 1435056, -3901441, -6033356, -4156992, --10397042, -4114042, 6684043, 2990371, 8716636, -5219459, -16044924, -7100655, 3063922, -5384279, --10715407, -2139968, -2597382, 8702677, 3935801, -11089606, 6380174, -7965017, -1215476, -5858873, --6021544, -5388574, -12579959, -7363722, 61203, 7220377, 10620917, 6988449, 1294396, 4237522, --6084895, -9049496, -6286759, 5281199, -3582540, 5757404, -2733210, -5732708, -1231582, 416075, --3678103, -6259915, -652835, 4908611, -16480326, -9588514, 12553653, 7547868, 86436, 3983045, --4692789, 3974455, -6527277, -134755, 12042015, -5199595, 11375758, 11669426, 14147622, 3870839, -5781563, 12412455, 9597104, 7336878, -9130564, 1643362, 3111704, 8500277, -1432909, -6447820, -9081708, 9543954, -2448668, 6533182, -2901251, -2652142, 5780489, 5434208, -611496, 6366752, -575526, -8971650, -7572028, 8813273, 11981885, -348429, -4129611, 3135326, 359704, -5069135, --10711648, 6227166, -10150081, -4248797, 7658464, 2327336, 6745783, 1006096, 10832444, 2258616, -11883101, -13214541, 12521977, -1670742, -665183, 4643397, 6490233, -4521527, -11812234, -2390686, -10334228, -1131724, -12692165, -6335077, -7936026, 3087008, 4088272, -9683541, 5007932, 7421167, -10689637, 4731444, 2889976, 3564286, 11861089, 1345935, 4852776, 14115947, 15264314, 4387846, -3719442, -11630235, -5915781, 12378096, -9509594, 12647605, 3498251, -300111, -2699387, -4762582, --7572564, 1099512, 5591511, -14137959, -6388764, -6181532, 2971581, 2488934, 2939368, 122407, -2262374, -823560, 4090956, 3067681, -3760244, -6841883, -12065100, 1760400, -6550362, 10455561, -363462, -6387153, -7609072, -2699387, 4961224, -9819906, 5828808, -3572876, 1882269, -549219, --6763500, 6199249, 8367670, -6255083, 7030325, 1526861, -606664, 19693498, -5149666, -13652090, -2414309, 4363150, -3356517, 500364, -5794985, 13100724, 7879118, -2018635, -3059091, 9055939, -9161165, -2676838, -8133595, -6529961, 18836116, -2545305, -2997887, -8465381, 4498442, -11009612, --3452080, -3794067, 408559, 4002910, 9918690, 8591545, -14968498, -153545, 1243393, -1958505, --4788889, -10485089, -1481227, 2873870, 5481452, 4328790, -9629317, -2104534, -12083354, 10388452, -24696, -1597191, 4786741, -5702106, -1399086, -12913893, 1628330, -7929047, 4656282, -1509681, --2524367, -4738423, -8671539, -8553427, -1398012, -10429254, -16527034, -3567507, -7776575, -16042777, --1705102, -1931125, -8905615, 4922570, 8039642, -1686312, 3598109, -1719598, -1790465, 1633161, -2062121, -13205951, -4132296, 6148246, -6469295, 14224395, 2270964, 3214246, -10086731, -914291, --4779225, -10728291, -1454920, 12963285, 6060736, 9548249, 5510443, -5715528, -11509975, -18769008, -11541651, 10588168, -1447404, 4433480, -12719546, -27453968, -7132330, 21216064, 6849936, 8457327, --5977521, 8549669, 14663018, 779537, -2904472, -25358560, -6222334, -1493575, 13966697, 3725347, -5360119, -19068582, -5452461, -7283728, -4875325, 11355357, -6998113, -2587181, 1598265, 3037079, --6356015, -2890513, 2572686, -5541045, 11017128, -13152800, 936840, 8170639, -11480448, 8739722, -14895483, 17593796, 8111583, 8453569, 11255499, -8363375, -15273977, 5583995, 5910949, 9450539, -7250979, -17022030, -5281199, 8440148, 4530654, 2845953, 9929964, 1995549, 11647951, -4914517, --3197603, 6591164, 5880884, 1531156, -11335492, -6192269, -12139188, -13706314, -1360968, -14987288, -175557, -8994198, 11811, -8295193, -5106179, -19295140, 12253542, 2579128, -3322157, -4225174, --2710661, 1493038, 16714402, -8579734, -7372312, -6583648, 11429982, 14556181, -9603010, 23539106, -4742181, -10517301, 11949136, 3154654, -10191957, -12009802, -9674414, -1099512, -5302674, -3813931, --15793132, 5892159, 6258304, 21163452, 2699387, -4030290, -9917079, -10536629, 2381023, -1571421, --13794361, 2041720, -5221070, 278099, 10348187, -8509404, 13751412, -12582644, -10386842, -1078037, --16080358, -19485730, 2997887, -2579665, -22123914, 1132261, 190052, -10884521, 5464272, -5493263, -2763275, -15294915, -24312736, 15567109, -14844481, 24336358, 13573170, -18083422, -2162516, -18318036, --4686346, -2671470, 7628936, -6848862, 11597485, 13923210, 13901199, -10178536, -7597797, 927713, --11528766, -1415729, -3286724, -16065862, 10322954, 7048578, -7274064, 13069049, -16226386, -13933948, --10488310, 7738994, 9219684, 10200547, 16793858, -5449777, 30487826, -341987, -15089294, 7396471, -15240155, 4687420, 8207146, -5926518, -16230681, 25712358, 14309757, 10958072, 5257577, -7948911, -8449811, 21594022, -7290170, 5240397, 156229, 5184026, 3946538, 15675557, -3933653, 5900212, --4908611, 5395553, -1087164, 110059, 9543417, 2901787, -18107582, -11382737, -16957604, -10816338, --8859444, -3502009, -12924630, -6389301, -6204617, -10325101, -7681549, 6240588, -11684995, -2889976, --9010841, 23505282, 11574400, 20695300, -17237852, -214748, -15721191, -1871532, 18231600, 11471321, -21443162, 11786464, 13414793, -12060805, 6649683, 8145406, 19996830, 22032646, 6462852, 20374788, --14837501, -4680441, 12409771, -37403260, 2119566, 17664664, 11545946, -11294690, 22542136, 13430363, --950262, -5433134, -2628520, 13571023, 33221036, 17783848, 4936528, 1503775, 11040750, -2538326, -26854820, 15180562, 16843252, 772020, -8306467, 5734855, 2188286, -14111652, -3319473, -838056, --3180960, -3998615, 5577552, 2981244, -11479374, -5561983, -20413442, -2108292, -6257768, -26467736, --11760157, 772020, 10003516, -13663902, 17110612, -4784594, -4002910, -2409477, -4118337, 12269648, --8324721, 8516383, -27146878, 8225399, 11768747, 8929774, 17963164, -18080738, 15311558, -16292422, --12196633, 13079249, -8156680, -2743410, 10832981, -18584860, 15584826, 25350508, -1209033, -4307852, -32072668, -7741142, 5194763, 17822504, -41137732, -21180632, -744103, 95026, 2351495, 8061117, -14353244, 8967355, -21549462, -5966784, -31390842, -18896782, 23164906, 22983980, 2518998, -5468030, -19562502, -31549220, -16845398, -34146064, 14995341, 4072703, 1609539, 6532646, -15405511, 7764764, -10910291, 14043469, 24107114, 24523190, 20842940, -967978, 4836670, 125091, -8840653, -2022393, --7341173, -4060355, 28765006, -6863895, -26064010, -6847252, -5185636, 2125472, 41399728, -15124727, --14511084, 13671418, -22033182, 7429757, -24463060, 32017370, 9421548, -1226750, 8595840, -12815109, --15459198, 21772800, -26591216, -21910238, -18996640, 4939750, 8465381, 9616969, -17558900, 17926656, --5270999, 853088, 28826746, -2520072, -4351876, 7719130, 23415088, -15532749, 38540888, 617938, --43161736, -6234145, -989453, -15695421, -3392487, -1365263, -3027415, -13857175, -8345659, 17492864, -8007967, -6314676, -1478543, 44339632, 27329414, -31111132, -24633784, 36193688, 34637300, 22630182, -25628070, -37520836, -6199249, -8470212, 13191992, 6484327, -13564044, -27020176, -42226508, 15732465, -14492293, 6097243, 15007689, -3497714, 433792, -8004209, 11614665, 18187576, 16668231, 6317897, -21274046, 8634495, 684510, -4836133, -24457692, 1270237, -8625905, -6747394, 12372190, -26467200, -5550709, 4001836, -10674604, 14805289, 13982803, 8309151, -16596827, -15376520, -45103064, -9296457, -3578245, -12418361, 6048388, 13302051, 13580150, 30167850, 16786342, -8659728, -4679367, -14570677, -26542362, -6062347, 43328704, 36456756, 13378286, -17177184, 47956532, 23987392, -12608413, 7022809, -27282706, 55225764, -14609331, -33152316, -12372190, 7245610, -2193118, 18779208, 7837242, -9129490, -10143639, 922344, -7731478, 17211008, 6162205, -5242545, -16037408, 14207752, -27340152, -24675660, --9091909, 20437066, -11289858, -13607530, -205085, 23549306, 2275259, 24365886, -8013335, 29280402, -3026878, 16223165, -10206990, -5482526, 8585640, -27943058, -8552354, 12286828, -5683316, -2556579, --24020142, -20721070, 9668508, -11995307, -10409390, 19793894, 24149528, -1963337, 15528991, -27692876, -841814, -6109054, 37241660, -13790066, 11589969, 25591562, 21065204, 8784282, -16987132, 12319040, -5593121, 9323300, 10675141, -35030828, 67766528, 25137906, -8174934, 6744173, 5524402, 22641456, --7925289, 18447958, 37724308, 1553168, -53472880, 25216290, 13695040, -13142063, 19138374, 86973, --15933255, -20787104, 45022532, -19213536, 46641196, -20296942, -8302709, 47775604, 5717675, 25935696, -13239237, -26289494, 1649268, 15581068, -4686346, -22907744, -4379793, -49945100, -13973139, -18632106, --10768020, 10851235, -1469416, 17809618, -8771934, 1866163, 17385490, -15595563, 1650878, 9825275, --1013075, -17137456, -71404, -11828877, 34391952, -6197638, 19902342, 3051038, -405338, 35109748, -25363930, -15788300, -18342732, 8684961, 15890842, 19077708, 23431194, -783295, 8189966, 21927418, --1333051, -9426379, 6864432, 277562, -19912542, -1020592, 12908524, -20111722, -26350162, -3209414, --1698660, -3636227, -8894877, -10410464, -31310848, -1082869, 30666066, 8231305, 17122960, 8679592, --3961571, -42021960, -29311542, 6034966, 26676042, 6226092, 14101451, 50219440, 56551296, 42986716, --1324461, 18129594, -11250667, -41430328, -12513924, -28809030, 11126650, -16311212, 11366631, -5713917, --19774030, -4362076, 2051384, 13386876, -7128035, 8079907, -30145838, 32791538, -65553012, -4138738, --14818711, -11181410, 11136850, 41466836, 8269423, 16846472, -31307628, 10322954, 14287746, 29533268, --11873974, -18569292, -13003550, -4262755, 912681, 2544231, 18008262, 14915348, -7609072, -45600740, --21350282, -36384816, 6452652, 73555608, -47777752, -16087874, -5836861, 44174276, -11787538, 20905216, --11216844, 23425826, -6032282, -7796977, -23500988, 17160542, -27540940, 31323196, 50310712, 10770704, --7458748, -4416837, 41884520, 15625091, 1028645, 26492968, 8315594, 13099650, -6593312, 52376588, --72422272, 59130424, -43932148, 27502824, 53038552, -35573604, 85165440, 64849712, -22929756, -483184, -52582212, 10427644, -1819456, 49515604, 47280612, -40470940, 39404716, 36080948, -33980708, -51576116, --75854488, 17479980, 114150032, 46601468, 357556, 23259396, -108829104, -45330696, -3646427, 16282758, -82269024, 79885320, 14143327, -31326418, -60071024, -35826468, 4464082, 25467008, 39623220, 62625992, -38553236, -51353852, -119683560, -98488968, -9075266, 108454368, 119198224, 74342128, 23548768, -25802552, --47702056, -73814920, -40949292, -45182520, 88082800, 71890240, 46770048, 39872864, -60738352, -87229176, --99286760, -90647432, 35748088, 120885072, 151079232, 49818400, -44083544, -107556720, -126545304, -35707820, -22132504, 12317966, 81728392, 30499636, -28472948, -18853296, -59732256, -14364518, -68441912, 29630442, -85649168, 155424128, -7383586, -84310208, -179678352, -7825968, -60879552, 709207, -10483478, 51368884, -29966524, -4529043, 10808285, 5589363, -36745056, -3774740, -3145527, 4064650, 944893, 3024731, --13609141, -5235029, -5191005, -3227131, -6372121, 22072374, -8183524, 9603010, -16834124, -1443646, -6428493, -537408, -5424007, 38103340, 4785131, -21122112, -25380572, 5560372, 4700842, -14271639, -3482682, 19392314, 9247065, 18308372, -18980534, 5998996, -1376000, 4792647, -13673565, 2987150, -13449153, 20824686, 4206921, -4646081, 4942434, 2966212, -5792837, 14537391, -21561810, 5400385, --34487512, -9536975, 12334609, -10332081, -14865419, 19091130, -13183402, -29874182, -25834766, 22508850, --4685810, -2826625, 2615635, 12326019, 24374476, -15803869, -25809532, 2990908, -6576132, 20608326, --4078608, 13589277, -1009854, 2337536, -30821222, -33906620, -79672720, 22098144, 21817896, -2318746, --67296768, -43715252, -7096360, -11606075, 43687332, 29312078, 13646722, -30123290, -12941810, -8461086, -27052388, 2416993, -8724152, -17913772, 10622528, 4461398, 13054553, -1350767, -6455336, -7647726, --16724603, -8502962, -10436234, 26067768, 13419088, 2628520, 3191698, -17989470, -1731946, 1682554, -23490250, -2168959, 10531797, -9402220, -7068443, 4609037, -10780368, 6318971, 2141041, 6868190, -22931904, -2263985, 20044612, -403190, 12621835, -10382547, 169114, -15159624, -20343650, -20562692, --18363132, 6059662, 2438468, 1881733, -26664230, 13395466, -23241142, -1854352, 682363, -13266080, --15824807, -6873022, -63888, -25426206, -18562848, 19097036, -8240432, 18857590, 2741800, 16105590, --39820252, -96227672, -92380448, -15345381, 25716654, 89699320, 77120968, 72816336, 78090560, 42960948, -8966818, -41781980, -42320460, -85619096, -67212480, -58720792, -38221988, -47107200, 61097520, 50477676, -66293892, 38030860, 53811108, -3291019, 12722230, -10189273, -23733990, -13634374, -28012850, -31404264, --32165546, -30837866, -37244344, -26830660, -23001698, -3396782, 3440269, 48476224, 39378408, 20952462, -21359410, 31758062, 28112172, 13780939, 68213744, 8424578, -1277216, 12552042, -28508382, -81340240, --25330106, -65220688, -71667432, -73731704, -54124104, -46457052, 95563, 38241852, 36912024, 47859896, -84735944, 62863824, 74178384, 75566728, 45872936, 52449068, 15830176, -16471736, -60059748, -74523048, --88713088, -53304304, -78396040, -59574956, -71856952, -28498718, 16186658, 28952912, 19346680, 0, -0, 0, 0, }, +-669478, 1698123, 1275068, 2346663, -433255, -1897839, 3670050, -516470, -5807333, -1687385, +-6451041, 4508105, 867583, -973347, 906775, -1239098, 862752, -5407364, 4455492, -544387, +1574106, -5060545, -1840394, -1856500, -7013145, -2695629, -594316, -89121, -454193, 2633889, +-999117, -2592013, -2026151, -5426691, -499290, -5418101, -318364, 1212255, 1358283, -1422708, +129923, -987306, -183610, -1873680, -1769527, 1171452, -1134408, -1350230, 2147484, 7158100, +343597, 3140158, 5743982, -535797, -1183264, 5374078, -2950106, -405874, -1194001, 248034, +2247342, 962610, -2411087, -2822331, 3053722, 1730335, 3431142, -2044941, -1890323, -2705830, +-1158567, -1047972, -1282585, -1843078, 635118, -9339943, 7177964, 325881, 3278671, 3257196, +9297530, 4361003, -3482145, -4381404, -6109054, 4323422, -5350456, -3890167, 828392, 1309965, +533650, 5447629, -1831804, 5090073, -1355599, 4566087, -4396973, 1986422, -1971390, -4677220, +-380105, -8895951, 1275605, 2144799, 3907347, -3271155, -112743, 3425237, -2609730, 3849901, +3591667, -2235531, 2557116, -2985002, -1443646, -2221035, -3257733, -4088809, 3535832, 5291937, +-4085588, 2314451, 4206384, 3415036, 5165235, 591632, -891206, 2986613, 2218351, -5647882, +-325344, 547071, 234613, 1656784, 3478924, 684510, 1172526, -2073932, -1365263, 2384781, +3430605, 1800128, -2059974, -3560528, 3521873, -3293703, -1158031, 1688459, -817654, -653909, +1379758, -361851, 3693672, -1944010, 2706366, 269509, -223338, -7493108, 1208496, 6408091, +-3922916, 2658048, -7969312, -8046621, -2658048, -6538014, -5725192, -839666, 1180579, 4530117, +714038, -2143726, 1016297, 3096135, -3969087, 5525476, -3727495, -3990562, 4648229, -2278480, +5355288, 6855305, 936840, -4871567, 3431679, 2295660, 1370632, -2449742, -1821603, 2918430, +2381559, 547071, -5564667, -1537598, -5140539, 4707284, -4640176, -2943663, 3405909, 245887, +2956548, 940061, 1133335, 5145908, 852551, 5768678, -7293392, -3623879, -1680406, 3750043, +5123359, 5993090, 7968238, 1032403, -2237678, -569083, -1027571, -23622, -5111011, -2006287, +-2168422, -322659, 911607, -3810710, -2317135, -442919, -1539209, -2516314, 4241280, 8414378, +-6449431, -2496450, -1367947, 5126581, 4617627, -4903779, -554588, -8999030, -2057289, 10640781, +3937948, -4452808, 7611219, 2399276, 2856153, 666257, -2706903, -8594766, 1023813, -3938485, +-2528662, -1670742, -5276368, -1950452, -4109210, 2666638, -1920924, -2461553, 4723391, -9240085, +8279623, -3078955, 1083942, -2976949, 2510945, -461172, -944893, -346282, 3465502, 56908, +2153389, -3377992, 6182069, -5005248, 7217693, 1442572, -823560, -4212289, -4903779, 9834938, +1620813, -9434969, 9445707, 8882529, -4968741, -1890859, 2740189, -3777424, -763430, -2357400, +2186138, 5653788, -3550327, 1243393, -2663954, -2438468, 902480, 7690676, -7094749, 4297652, +-7280507, -5560909, -5198521, -806917, 350577, 348966, 1670742, 3245385, -2456721, 1199370, +-5644124, 7028177, -8260833, 1184874, 10377715, -16456704, 12907450, 5642514, -3720516, 4619774, +531502, 11319386, -206695, -7850127, -5165772, 4355097, 4971962, 1997697, 1201517, 5287105, +2258079, 1563905, 6980933, 3307662, 2673080, 5192079, 4089883, 15783468, -3143379, 4814659, +763967, -1616518, 4871567, 3250217, 2523830, 2739116, -1429687, -3295851, 1309428, 839129, +1265942, 3011309, 5632850, -3803194, -3852049, 2989297, -70867, -1033477, -1821066, 6945499, +-3200288, 9659381, 5330055, 1260573, 3299609, 1620276, 3681861, 12055973, 10714870, 1605781, +1921998, 3046743, -777926, 5089536, 648540, 4687957, 2869038, 1171452, 1918777, -3832185, +6835978, 4434554, -795106, 2536178, -723165, 5191005, 394600, 5954436, -1874216, 5338108, +-3501472, 10768557, -7699266, -2551211, -3567507, 11124502, 6257768, 4376572, 6977711, -5676336, +-1071058, 10349261, 5755793, 5128728, 4930086, 3071975, 3413962, -599148, 9570798, -433255, +-4271882, -2669859, 3388729, -2980707, 2221572, -8341900, 3350611, -1083942, 192200, -8964670, +4146254, -1385127, 9009768, -769873, 2818036, 3207804, -3866008, -188442, 4034048, 1353989, +2720325, -1216550, 4886599, 7955353, 754304, -4061965, 1736241, 5928666, 3382824, 1643362, +-3605088, -5945846, 5619428, -6675453, -3541201, 5530844, -10579578, -1100585, 6111202, -3390340, +1058173, 1607928, -852551, 346819, 2381023, -3089692, 215285, -5889474, -3869766, -5168993, +-3598109, 2274185, -19508816, 2783676, -6535330, -4003447, 3777961, 2768643, 1739999, 307090, +-14506789, -1992328, 3749507, -8000987, -2554969, -10748693, -5812702, 1772748, -1825898, -9926743, +9196062, 5421860, -3626026, 562641, 7088844, -5481452, 1435056, -3901441, -6033356, -4156992, +-10397042, -4114042, 6684043, 2990371, 8716636, -5219459, -16044924, -7100655, 3063922, -5384279, +-10715407, -2139968, -2597382, 8702677, 3935801, -11089606, 6380174, -7965017, -1215476, -5858873, +-6021544, -5388574, -12579959, -7363722, 61203, 7220377, 10620917, 6988449, 1294396, 4237522, +-6084895, -9049496, -6286759, 5281199, -3582540, 5757404, -2733210, -5732708, -1231582, 416075, +-3678103, -6259915, -652835, 4908611, -16480326, -9588514, 12553653, 7547868, 86436, 3983045, +-4692789, 3974455, -6527277, -134755, 12042015, -5199595, 11375758, 11669426, 14147622, 3870839, +5781563, 12412455, 9597104, 7336878, -9130564, 1643362, 3111704, 8500277, -1432909, -6447820, +9081708, 9543954, -2448668, 6533182, -2901251, -2652142, 5780489, 5434208, -611496, 6366752, +575526, -8971650, -7572028, 8813273, 11981885, -348429, -4129611, 3135326, 359704, -5069135, +-10711648, 6227166, -10150081, -4248797, 7658464, 2327336, 6745783, 1006096, 10832444, 2258616, +11883101, -13214541, 12521977, -1670742, -665183, 4643397, 6490233, -4521527, -11812234, -2390686, +10334228, -1131724, -12692165, -6335077, -7936026, 3087008, 4088272, -9683541, 5007932, 7421167, +10689637, 4731444, 2889976, 3564286, 11861089, 1345935, 4852776, 14115947, 15264314, 4387846, +3719442, -11630235, -5915781, 12378096, -9509594, 12647605, 3498251, -300111, -2699387, -4762582, +-7572564, 1099512, 5591511, -14137959, -6388764, -6181532, 2971581, 2488934, 2939368, 122407, +2262374, -823560, 4090956, 3067681, -3760244, -6841883, -12065100, 1760400, -6550362, 10455561, +363462, -6387153, -7609072, -2699387, 4961224, -9819906, 5828808, -3572876, 1882269, -549219, +-6763500, 6199249, 8367670, -6255083, 7030325, 1526861, -606664, 19693498, -5149666, -13652090, +2414309, 4363150, -3356517, 500364, -5794985, 13100724, 7879118, -2018635, -3059091, 9055939, +9161165, -2676838, -8133595, -6529961, 18836116, -2545305, -2997887, -8465381, 4498442, -11009612, +-3452080, -3794067, 408559, 4002910, 9918690, 8591545, -14968498, -153545, 1243393, -1958505, +-4788889, -10485089, -1481227, 2873870, 5481452, 4328790, -9629317, -2104534, -12083354, 10388452, +24696, -1597191, 4786741, -5702106, -1399086, -12913893, 1628330, -7929047, 4656282, -1509681, +-2524367, -4738423, -8671539, -8553427, -1398012, -10429254, -16527034, -3567507, -7776575, -16042777, +-1705102, -1931125, -8905615, 4922570, 8039642, -1686312, 3598109, -1719598, -1790465, 1633161, +2062121, -13205951, -4132296, 6148246, -6469295, 14224395, 2270964, 3214246, -10086731, -914291, +-4779225, -10728291, -1454920, 12963285, 6060736, 9548249, 5510443, -5715528, -11509975, -18769008, +11541651, 10588168, -1447404, 4433480, -12719546, -27453968, -7132330, 21216064, 6849936, 8457327, +-5977521, 8549669, 14663018, 779537, -2904472, -25358560, -6222334, -1493575, 13966697, 3725347, +5360119, -19068582, -5452461, -7283728, -4875325, 11355357, -6998113, -2587181, 1598265, 3037079, +-6356015, -2890513, 2572686, -5541045, 11017128, -13152800, 936840, 8170639, -11480448, 8739722, +14895483, 17593796, 8111583, 8453569, 11255499, -8363375, -15273977, 5583995, 5910949, 9450539, +7250979, -17022030, -5281199, 8440148, 4530654, 2845953, 9929964, 1995549, 11647951, -4914517, +-3197603, 6591164, 5880884, 1531156, -11335492, -6192269, -12139188, -13706314, -1360968, -14987288, +175557, -8994198, 11811, -8295193, -5106179, -19295140, 12253542, 2579128, -3322157, -4225174, +-2710661, 1493038, 16714402, -8579734, -7372312, -6583648, 11429982, 14556181, -9603010, 23539106, +4742181, -10517301, 11949136, 3154654, -10191957, -12009802, -9674414, -1099512, -5302674, -3813931, +-15793132, 5892159, 6258304, 21163452, 2699387, -4030290, -9917079, -10536629, 2381023, -1571421, +-13794361, 2041720, -5221070, 278099, 10348187, -8509404, 13751412, -12582644, -10386842, -1078037, +-16080358, -19485730, 2997887, -2579665, -22123914, 1132261, 190052, -10884521, 5464272, -5493263, +2763275, -15294915, -24312736, 15567109, -14844481, 24336358, 13573170, -18083422, -2162516, -18318036, +-4686346, -2671470, 7628936, -6848862, 11597485, 13923210, 13901199, -10178536, -7597797, 927713, +-11528766, -1415729, -3286724, -16065862, 10322954, 7048578, -7274064, 13069049, -16226386, -13933948, +-10488310, 7738994, 9219684, 10200547, 16793858, -5449777, 30487826, -341987, -15089294, 7396471, +15240155, 4687420, 8207146, -5926518, -16230681, 25712358, 14309757, 10958072, 5257577, -7948911, +8449811, 21594022, -7290170, 5240397, 156229, 5184026, 3946538, 15675557, -3933653, 5900212, +-4908611, 5395553, -1087164, 110059, 9543417, 2901787, -18107582, -11382737, -16957604, -10816338, +-8859444, -3502009, -12924630, -6389301, -6204617, -10325101, -7681549, 6240588, -11684995, -2889976, +-9010841, 23505282, 11574400, 20695300, -17237852, -214748, -15721191, -1871532, 18231600, 11471321, +21443162, 11786464, 13414793, -12060805, 6649683, 8145406, 19996830, 22032646, 6462852, 20374788, +-14837501, -4680441, 12409771, -37403260, 2119566, 17664664, 11545946, -11294690, 22542136, 13430363, +-950262, -5433134, -2628520, 13571023, 33221036, 17783848, 4936528, 1503775, 11040750, -2538326, +26854820, 15180562, 16843252, 772020, -8306467, 5734855, 2188286, -14111652, -3319473, -838056, +-3180960, -3998615, 5577552, 2981244, -11479374, -5561983, -20413442, -2108292, -6257768, -26467736, +-11760157, 772020, 10003516, -13663902, 17110612, -4784594, -4002910, -2409477, -4118337, 12269648, +-8324721, 8516383, -27146878, 8225399, 11768747, 8929774, 17963164, -18080738, 15311558, -16292422, +-12196633, 13079249, -8156680, -2743410, 10832981, -18584860, 15584826, 25350508, -1209033, -4307852, +32072668, -7741142, 5194763, 17822504, -41137732, -21180632, -744103, 95026, 2351495, 8061117, +14353244, 8967355, -21549462, -5966784, -31390842, -18896782, 23164906, 22983980, 2518998, -5468030, +19562502, -31549220, -16845398, -34146064, 14995341, 4072703, 1609539, 6532646, -15405511, 7764764, +10910291, 14043469, 24107114, 24523190, 20842940, -967978, 4836670, 125091, -8840653, -2022393, +-7341173, -4060355, 28765006, -6863895, -26064010, -6847252, -5185636, 2125472, 41399728, -15124727, +-14511084, 13671418, -22033182, 7429757, -24463060, 32017370, 9421548, -1226750, 8595840, -12815109, +-15459198, 21772800, -26591216, -21910238, -18996640, 4939750, 8465381, 9616969, -17558900, 17926656, +-5270999, 853088, 28826746, -2520072, -4351876, 7719130, 23415088, -15532749, 38540888, 617938, +-43161736, -6234145, -989453, -15695421, -3392487, -1365263, -3027415, -13857175, -8345659, 17492864, +8007967, -6314676, -1478543, 44339632, 27329414, -31111132, -24633784, 36193688, 34637300, 22630182, +25628070, -37520836, -6199249, -8470212, 13191992, 6484327, -13564044, -27020176, -42226508, 15732465, +14492293, 6097243, 15007689, -3497714, 433792, -8004209, 11614665, 18187576, 16668231, 6317897, +21274046, 8634495, 684510, -4836133, -24457692, 1270237, -8625905, -6747394, 12372190, -26467200, +5550709, 4001836, -10674604, 14805289, 13982803, 8309151, -16596827, -15376520, -45103064, -9296457, +3578245, -12418361, 6048388, 13302051, 13580150, 30167850, 16786342, -8659728, -4679367, -14570677, +26542362, -6062347, 43328704, 36456756, 13378286, -17177184, 47956532, 23987392, -12608413, 7022809, +27282706, 55225764, -14609331, -33152316, -12372190, 7245610, -2193118, 18779208, 7837242, -9129490, +10143639, 922344, -7731478, 17211008, 6162205, -5242545, -16037408, 14207752, -27340152, -24675660, +-9091909, 20437066, -11289858, -13607530, -205085, 23549306, 2275259, 24365886, -8013335, 29280402, +3026878, 16223165, -10206990, -5482526, 8585640, -27943058, -8552354, 12286828, -5683316, -2556579, +-24020142, -20721070, 9668508, -11995307, -10409390, 19793894, 24149528, -1963337, 15528991, -27692876, +841814, -6109054, 37241660, -13790066, 11589969, 25591562, 21065204, 8784282, -16987132, 12319040, +5593121, 9323300, 10675141, -35030828, 67766528, 25137906, -8174934, 6744173, 5524402, 22641456, +-7925289, 18447958, 37724308, 1553168, -53472880, 25216290, 13695040, -13142063, 19138374, 86973, +-15933255, -20787104, 45022532, -19213536, 46641196, -20296942, -8302709, 47775604, 5717675, 25935696, +13239237, -26289494, 1649268, 15581068, -4686346, -22907744, -4379793, -49945100, -13973139, -18632106, +-10768020, 10851235, -1469416, 17809618, -8771934, 1866163, 17385490, -15595563, 1650878, 9825275, +-1013075, -17137456, -71404, -11828877, 34391952, -6197638, 19902342, 3051038, -405338, 35109748, +25363930, -15788300, -18342732, 8684961, 15890842, 19077708, 23431194, -783295, 8189966, 21927418, +-1333051, -9426379, 6864432, 277562, -19912542, -1020592, 12908524, -20111722, -26350162, -3209414, +-1698660, -3636227, -8894877, -10410464, -31310848, -1082869, 30666066, 8231305, 17122960, 8679592, +-3961571, -42021960, -29311542, 6034966, 26676042, 6226092, 14101451, 50219440, 56551296, 42986716, +-1324461, 18129594, -11250667, -41430328, -12513924, -28809030, 11126650, -16311212, 11366631, -5713917, +-19774030, -4362076, 2051384, 13386876, -7128035, 8079907, -30145838, 32791538, -65553012, -4138738, +-14818711, -11181410, 11136850, 41466836, 8269423, 16846472, -31307628, 10322954, 14287746, 29533268, +-11873974, -18569292, -13003550, -4262755, 912681, 2544231, 18008262, 14915348, -7609072, -45600740, +-21350282, -36384816, 6452652, 73555608, -47777752, -16087874, -5836861, 44174276, -11787538, 20905216, +-11216844, 23425826, -6032282, -7796977, -23500988, 17160542, -27540940, 31323196, 50310712, 10770704, +-7458748, -4416837, 41884520, 15625091, 1028645, 26492968, 8315594, 13099650, -6593312, 52376588, +-72422272, 59130424, -43932148, 27502824, 53038552, -35573604, 85165440, 64849712, -22929756, -483184, +52582212, 10427644, -1819456, 49515604, 47280612, -40470940, 39404716, 36080948, -33980708, -51576116, +-75854488, 17479980, 114150032, 46601468, 357556, 23259396, -108829104, -45330696, -3646427, 16282758, +82269024, 79885320, 14143327, -31326418, -60071024, -35826468, 4464082, 25467008, 39623220, 62625992, +38553236, -51353852, -119683560, -98488968, -9075266, 108454368, 119198224, 74342128, 23548768, -25802552, +-47702056, -73814920, -40949292, -45182520, 88082800, 71890240, 46770048, 39872864, -60738352, -87229176, +-99286760, -90647432, 35748088, 120885072, 151079232, 49818400, -44083544, -107556720, -126545304, -35707820, +22132504, 12317966, 81728392, 30499636, -28472948, -18853296, -59732256, -14364518, -68441912, 29630442, +85649168, 155424128, -7383586, -84310208, -179678352, -7825968, -60879552, 709207, -10483478, 51368884, +29966524, -4529043, 10808285, 5589363, -36745056, -3774740, -3145527, 4064650, 944893, 3024731, +-13609141, -5235029, -5191005, -3227131, -6372121, 22072374, -8183524, 9603010, -16834124, -1443646, +6428493, -537408, -5424007, 38103340, 4785131, -21122112, -25380572, 5560372, 4700842, -14271639, +3482682, 19392314, 9247065, 18308372, -18980534, 5998996, -1376000, 4792647, -13673565, 2987150, +13449153, 20824686, 4206921, -4646081, 4942434, 2966212, -5792837, 14537391, -21561810, 5400385, +-34487512, -9536975, 12334609, -10332081, -14865419, 19091130, -13183402, -29874182, -25834766, 22508850, +-4685810, -2826625, 2615635, 12326019, 24374476, -15803869, -25809532, 2990908, -6576132, 20608326, +-4078608, 13589277, -1009854, 2337536, -30821222, -33906620, -79672720, 22098144, 21817896, -2318746, +-67296768, -43715252, -7096360, -11606075, 43687332, 29312078, 13646722, -30123290, -12941810, -8461086, +27052388, 2416993, -8724152, -17913772, 10622528, 4461398, 13054553, -1350767, -6455336, -7647726, +-16724603, -8502962, -10436234, 26067768, 13419088, 2628520, 3191698, -17989470, -1731946, 1682554, +23490250, -2168959, 10531797, -9402220, -7068443, 4609037, -10780368, 6318971, 2141041, 6868190, +22931904, -2263985, 20044612, -403190, 12621835, -10382547, 169114, -15159624, -20343650, -20562692, +-18363132, 6059662, 2438468, 1881733, -26664230, 13395466, -23241142, -1854352, 682363, -13266080, +-15824807, -6873022, -63888, -25426206, -18562848, 19097036, -8240432, 18857590, 2741800, 16105590, +-39820252, -96227672, -92380448, -15345381, 25716654, 89699320, 77120968, 72816336, 78090560, 42960948, +8966818, -41781980, -42320460, -85619096, -67212480, -58720792, -38221988, -47107200, 61097520, 50477676, +66293892, 38030860, 53811108, -3291019, 12722230, -10189273, -23733990, -13634374, -28012850, -31404264, +-32165546, -30837866, -37244344, -26830660, -23001698, -3396782, 3440269, 48476224, 39378408, 20952462, +21359410, 31758062, 28112172, 13780939, 68213744, 8424578, -1277216, 12552042, -28508382, -81340240, +-25330106, -65220688, -71667432, -73731704, -54124104, -46457052, 95563, 38241852, 36912024, 47859896, +84735944, 62863824, 74178384, 75566728, 45872936, 52449068, 15830176, -16471736, -60059748, -74523048, +-88713088, -53304304, -78396040, -59574956, -71856952, -28498718, 16186658, 28952912, 19346680, 0, +0, 0, 0, }, { -945967, --1034550, -2892124, -6316287, 275415, -507880, -4354560, 922344, -187905, -1166084, -1078574, -4333085, 4241280, 1076426, 6105296, -4664872, 4355634, 2791192, -4049617, 3409130, -7570417, --1985886, -12191265, -1796907, 2594697, -2512556, 1838246, 1763084, 657667, -362925, -1176284, --2354179, -614717, 2034204, 2259690, 260382, 2935073, -1170916, -2332167, 2440615, 2957622, -1954210, -4855461, -4516158, -3167539, -2853469, -3075734, 3448322, 2338610, -2646774, -4559645, --7634841, -834834, -2736431, 1909650, 3505230, 1001264, -1701344, 129386, 3291019, -2840584, -3651259, 152471, -479426, -9095667, -1916092, -3704946, -955630, 4604742, -626528, -2391760, --380105, 3975529, -2802466, 251256, 332860, -4474819, 7359964, 2530810, -1413581, 1825898, -2321967, 4395899, 7366943, -3622268, 2402497, -3092913, -2431488, 1440962, -52613, 569620, --5318244, -2599529, 1778117, 3651796, -567473, 3070365, -5701569, -5039071, 3066070, 1962800, -785979, 2240899, -2000381, 3986267, 4431870, 4335233, 6201396, -3529390, -2962454, 180389, -714575, -6068252, -465467, -566399, 1569274, 549219, -3855270, -972273, 5044976, -2785286, -919123, -3189013, 1421097, 1540283, 941135, -4730907, 3696893, 297963, 769873, -695248, --1620276, -1995012, -3272228, 6742562, -1269700, -1310502, -1588601, 2957085, 649077, -6493991, -1591822, -3007551, -4434017, 2525978, -2724083, -7039989, 2817499, 941672, 406411, -6460168, --7568269, -2878165, 4576288, 744640, 605590, 4093641, -5539434, 1191317, -4582193, -5873905, -1995012, 5941551, -3299072, 2936147, -2422362, -1067299, 1394254, 504122, -2588255, -8192650, --8105140, 363462, -1867774, 135291, 4616016, 909459, 5597953, 7432441, -3556770, 6445136, -1033477, 6535867, 656593, 7715372, 1215476, -4009352, -896038, 616328, 3686156, -736587, --864899, 932545, 2865817, -2941516, 80531, -786516, 2571612, 2973191, 430570, -2678986, -77309, -354335, 1926830, 3095598, 5556077, -1692217, 3709778, -1403381, -4291746, -3966939, --2470143, 2710124, 3118146, -1447404, 4865661, 234613, 1966558, 301185, 5856725, 3712999, -4398047, 1663763, 2711198, 1444183, 2511482, 4421669, -771484, -461709, 5981279, 6169184, --6897718, -4758824, -3941706, -5662915, 1414655, 1984812, -4572530, 668941, 8573292, -6774237, -4224637, 7275675, 7286949, -5000953, -1514513, 3373697, 481573, 788663, -3609920, 1477469, --11687143, 8617315, 13896367, 2101850, 4548371, -2698850, -387621, 7076496, -4126390, -9475772, --1685238, -301185, -198642, -7758859, 378494, 1359357, -8843875, -4554813, 3886409, 883690, --3228205, -1303523, 2883534, -4750771, 8878771, 2279017, 307627, -6320045, -668941, 2541010, --2048699, -390305, -2139431, -719407, -926102, -5252208, 234613, -5124970, 6709813, -7200513, --4372814, -2168959, -7831336, 4495757, -4211216, -11652246, -2000381, -5509906, 1329292, 4132296, --5095442, -286689, -3520800, 2584497, 221728, -4445828, 177704, 1679869, -4780836, 3515431, -148176, -721555, 4143570, -3371013, -12477954, -2233920, -476741, 5844377, 8226473, 7261716, -3690451, -2505040, -538482, -7641821, -6354941, 2542621, 9321690, -2344515, 9545565, 6081674, --5342403, 3271691, -529355, 3404299, -6002754, -4082367, 1401233, 4782446, -222265, 2921652, -4184372, -7003481, -1074279, -3143916, -9408663, 6242735, 1345935, 2360085, 4621385, 7897371, -3091840, 494458, 6476811, -1303523, -2714419, 6363531, -2891587, 10667625, 5282810, 4283693, -636729, -2979097, -3277060, 5229660, 7474854, -5208722, 1710471, 6733972, -749472, 2172717, -15315317, -4532801, -1326608, 2825015, -6977175, -390842, 1815697, -3434900, 4105452, -2530273, -2696703, 7291244, -2187749, -134755, 1269700, -2810519, -17898740, -1023813, 4832, -3189013, --5296769, -1374926, 10188736, -6465000, -10059350, 4420595, -3886946, 2011118, 2185602, 7124277, --4178466, -809064, 1602560, 6688338, -2574833, -3448859, -925565, -2873333, 4781373, 8875013, -4414690, 691490, -447213, -4107063, -62277, 13662828, 2496987, -950798, 15228880, -216896, -11358041, -2677912, 245887, 8311836, 2442226, 2630131, 2826625, 2096481, 4272956, 3221226, --7067906, 14092325, 8120173, 11746199, 7335804, 5687611, -7270306, 4121021, 3666292, 1506460, --4523675, 13317083, 7356742, 12175695, 1835025, -1123671, -2941516, 9365176, -4253092, -7221988, -9637370, 4463008, -5885179, -1701344, -41339, -923418, 239444, 693100, 284005, -831076, --4472672, -484794, -11839077, -4545686, -13269301, -8990440, 1127429, -8500277, -6728603, 1038308, --1411434, 9223979, -5870147, 10208064, 12315282, 1518808, -10297721, -7021198, 11049340, -5283347, --2940442, 6457484, -7986492, -13958107, 5758478, 12641699, -6308770, 3484829, -214212, 5723581, --14883672, 3333968, -5990943, 3977140, 277562, -5851356, 10343892, 5153961, 4334159, 14246943, -6379100, 3296924, 7752953, 2025614, 2441689, 4420595, 1207423, 1122597, 2010045, 2399276, -15596637, 9383967, -201327, 13760538, 8087424, 10325638, 15037217, -7192997, -6739878, 13981192, --4911832, 143345, -8213588, -2665027, 4437775, 7816841, -6385543, 67109, 1634235, -870268, -3260954, -5473399, -1672353, -6335614, 13812615, -3255585, 6743636, 4571456, -4837207, 1583769, -730144, 1566589, -6951405, 9089761, 5306432, 12341589, 2428267, -1669669, -13881871, -7446937, --5174899, 3546032, -7186554, -12069932, -3309272, 3069828, 1392643, -13489419, 10980084, 807991, --764504, -11507828, -6542309, 2658048, 1469416, -12796318, -3906810, 4592394, 571231, 1212255, -6585796, 7546795, 4511327, -2065879, 3898220, 1085016, -4521527, -9547712, 16295106, -4210142, --7871602, 9664, 4067871, 5090073, 12178917, 1817845, -199179, -4765266, -125091, 6516539, --854162, 8173323, 16114180, 1083406, -3537443, 185757, 13824426, 17032766, -8756365, 2044404, -2284923, 8964134, 4766877, 1170916, 2614561, -7472706, 3926674, 3835406, 3925063, -3750580, --570694, 2481954, 3758097, -4016331, 6907918, -5196374, -9822053, 7665443, -312996, -2021319, -3258270, 6591164, -16814796, 1556389, 13849659, -1059783, 24486146, 11919071, -6746857, -4887136, --1674500, -6440304, -2494839, 11154567, -3526705, -3038689, 11301133, 9153649, 3471944, 5442798, -10619844, 7078643, 8111046, -5037460, -3121368, 9950902, -1223529, 9047349, 710817, -9831180, --5937256, 3220689, 8801462, -10736881, 1393717, -5530844, 3840775, -6384469, 10224707, 9903121, --8499740, -551903, 3467649, 132607, -11715597, -5172215, 2956011, 8726837, 14481019, 5078262, --9241159, -1785096, -1560147, -732829, 9517111, 1829119, 7853885, -9855876, 5667210, 1211718, --7116224, 10250476, 5272073, -715112, -953483, 2362769, 942208, -7507603, 11593190, -13121662, --1660542, -3821984, 14499810, -5706401, 12025908, -3040837, 11250130, 15165530, -5998459, 5181878, --3250217, 8902393, -2706366, 7519951, 6193343, 6023155, -805843, 6313602, -2451353, -6616934, --3064996, 8722542, -9058623, 2142652, 358630, 7860327, 14968498, -12682502, 839666, 13750875, -38118, 12640626, 1977833, 5951751, -1317481, -303869, 3544959, -17717276, 2120640, 291521, --7047505, 5625871, 3292629, 14142790, 6914898, -555661, 25652230, 7121056, -13176960, 4347044, -1480690, 9695352, -5601174, 2541547, 7643431, 1447404, 4682051, -458488, -14548665, -14083735, -68183, -4139275, 12027519, -19405736, 26108032, 840740, 14419816, 17716204, 3732327, -3302830, --3798899, -6605660, -11205570, 557809, 1542967, -24159728, -1645509, 8287677, 1437740, -9062381, --22397718, 12348, 2673080, -3932580, -824097, -6621229, 3615826, -5521718, 11727945, 4070019, --6744710, -8657043, -14609868, 11034845, -4527433, 714575, 14615774, 19767586, 12304008, -1897302, -1278290, -13653701, -5552319, -5534602, 3929358, -19356880, 5338645, 5188321, 1425392, -9997073, -9863392, 14718316, -2018098, -348966, 2120640, -8683887, -8662949, 5135707, 4029216, 11106785, --11831024, 13271986, -6523519, 7278896, -10848551, -9078487, -3919158, -363998, -717796, 4817880, --1778653, -19972672, -14212584, -4227859, 1324997, -19974282, 1143535, 9931038, -4340602, -2208150, -4079145, 8580808, -16404628, 9266929, -1745367, -2202245, 1504849, 7888245, 10961293, -9349607, --2552284, -4121558, 21521008, 301721, -4635881, 16683800, -3917010, -7110319, -2039573, -1789928, -20756504, 23750632, -3341485, 4862440, 5895380, -3309809, -11609833, 5357435, 22085258, 16757889, -14326400, -5543192, 6081674, 11710765, -15772731, -11851962, 13349295, -7209640, -7842074, -810675, -16736951, -2851322, 15381888, 723702, 13771276, -8706972, 19008988, 5542656, -6245956, -10158135, -3240553, -14244259, 1380832, -16848620, -5931887, -6274947, 9129490, -9813463, 15230491, -19428284, --33320356, 20218558, 8843875, -4439923, -227096, 22327924, 10240276, 1407139, -6426345, 4511327, --3146601, -119185, -15311558, -15358266, 8218957, -5381057, 4211216, 27904940, -8117488, 5840619, --19247896, 21704618, -8243116, -9591199, -5763846, -2426120, 7800735, -16699907, 13581760, -24655796, --18303004, -17758616, 24958592, 886911, 10767483, 6408628, -21815750, -19120120, 12991202, -34151432, -10107669, 10182831, -2068564, -13578002, -12370580, 21318608, -11303280, -1489280, -3418257, -11027865, -16376710, 5166846, 14847702, 8528731, 10318122, -3204583, 16678432, -1516124, -10522670, -12677133, --2659659, 7136088, -9330280, 12770548, 8502962, -9643812, -34289944, -2918967, -2498597, -870805, -25520696, 554588, -19299436, -11705396, -11615202, 10307385, -7128572, -16427176, -17806934, -11415486, --8360691, -40840844, 1566053, 5055714, 14045080, -21360482, 7672959, -17666812, -13655312, -5000416, -17889612, 4277788, 16745541, 29791504, 10004589, 6709813, 20621212, -15416248, -688269, -7521562, --6924024, 15185394, 16068010, 22276384, 13053479, 13198435, -9430138, -21248276, 7656853, 1136019, -971200, 2308545, 4566087, 6301254, 11350525, 4735202, 9767829, 6127308, 11311333, 27259084, -2223719, -32001264, -10925323, 10050760, 1686312, -5406827, -20203526, -12611098, 5887864, 19082540, -8121783, -15076946, 10290205, 8742943, -17540646, -1890859, -22007950, 20045686, -8376260, -10453950, -18302466, -14641007, 5955509, 37101000, -2761664, 7585449, 11812234, 1816771, 6548752, -18764712, -6458020, 5632313, 4794794, 48416092, 32874754, -1363115, -14679124, -8537321, 16111496, 19161996, --17011828, -8018704, -23318988, 42036456, 12601971, 7153268, -4616553, -1606318, -6978248, -2007360, -30437896, -4527433, 9816685, 31792958, 7087770, -4320737, -18524194, 4738960, 11447162, -37451040, -12979928, 11705396, 30207042, -5838471, -27050778, -3822521, 18787798, 10542534, -30301532, -40023728, -4712653, 27239220, 11107859, 16651588, -9337259, 12855911, 2268280, 347355, -14427332, -5210869, --22530862, 33621540, 11395622, -27347130, -18619220, 12177843, 1417876, 6674379, -8058433, 16699370, -9917079, 11451993, 22129818, 19386946, 4123169, 18931142, -9942312, 10786810, 33286, 13123273, -6189048, -3406983, -7960722, 8949101, -11868068, 31119186, -8406325, -6231461, 6439767, 15186467, -15317464, -10756209, 26977764, 26388816, 15485505, 6038724, 2105071, -9107478, -20560008, -35373888, --5928129, 11798275, -1102733, 14512694, 16067473, 17002702, 5578626, 9088151, 57081188, -29306172, --13434658, 4782446, 9824201, -2507724, -47048144, 9460739, -9830106, 5577552, 3140695, 18915572, --5295158, -9130027, 3176128, 14959371, 14666240, -8393977, -11439645, 3160559, -11021960, -34579320, -35290136, -10534481, 9685688, 3153580, 29504814, 23658290, 14588393, -14374182, -2750927, 20279224, -10406169, 23890756, 63588600, -4108673, -25742960, -6729677, 18614388, -3016678, -30394410, 45394584, -22990960, -16246788, -25631828, -3277597, 4880694, -8152922, 17324824, 15134391, 16924856, 33742872, -4798016, 9304510, 5111548, -13520020, -32709934, 18226230, -22678502, -16629040, 23765128, 12594455, -12764643, 6818798, 3697967, -2097555, -32849520, -28522878, -1217623, 15709917, -22579716, 18540836, --11282342, -24406152, 4959077, 18894634, -6402723, 2180233, 17202418, 17798344, 17210470, -1096290, --16694001, 8438000, 44137768, 1451699, 13475460, 21461952, -9206262, -22352620, 18043158, 14874545, -381715, -11799349, -17552994, -30882426, 5491116, 19156628, 25970594, -21990770, -23691576, 29122026, -12890271, -944356, -3073586, -11791833, 5350993, -5356898, -12726525, 13543106, 15968688, 11492796, -832150, -2040646, -9329206, 2290291, 6497212, 4487167, -10561861, -35747548, 7703024, -7790534, --11243688, 2471217, -5103495, 3525095, -36487896, 17324288, 12670154, -25373594, 17617418, 24710020, -19596326, -4766340, 2764348, -2534568, 12489765, -2234994, -786516, 65187940, -20104206, 6202470, --18089328, -9112847, 35478040, 14284524, 11458973, 24320252, -30658550, -23374286, 35427576, -21906480, -17411260, 24444806, 819265, 7653632, 7225209, 43139188, -15887084, -13985487, -40177272, -6045167, --19000398, 15326591, -27344446, 43139724, 16375637, 23687282, -9824201, 27180700, -14879914, 14624901, -45820320, 23016730, 17682918, -24770688, 7686381, 25735980, -20985210, 36207648, 13347148, 19601156, -17641578, -10486163, 18249852, 15730318, 6957847, 35846332, 27348742, -1589675, -60026464, -6673843, -28638306, 27543626, 28390270, 7067906, 16052440, 1733556, 8305930, -1677722, -18300856, 39071856, --580894, 37208912, 17050484, 26889180, -36908264, 25492778, 12969191, 11534135, -9445707, 8889509, --6649146, 8435853, 37392524, 14791867, 48671108, 2319282, 10901164, 28160490, -5573257, 44263932, -22028888, 3574487, -29419990, -18857590, 16222091, 1306744, -4971425, 267899, -5142150, 2609193, --21635898, 13252658, -23069344, -35424352, -12973486, -3634616, -11583527, -10989748, 28755880, -6369437, -26512834, -29101624, 29703456, -1606855, -9347459, -27965606, -26849452, -11314018, -12250857, 20015622, --34908420, -42974368, -46939160, -56132000, 23536958, 26354994, -2794413, -5204964, -1423782, -13876502, -1916092, 6191196, -12989592, 37009732, 34104724, 22567906, 23970212, -23939074, 14083735, 744640, -17008070, -7786776, -11049340, -35003448, 29341606, -31634044, -39414916, -10314901, -9589051, 40239012, --23985244, 5160403, -22778896, -6135898, 37347424, 7054484, 10559177, 19217832, 34066068, 2109903, --5931350, -43940736, -10053982, -3507378, -3244311, 24124832, 10888816, 81883016, 2010045, -2309082, --29235306, -1877975, 30333744, 30203820, -4878009, -13857712, -42600708, 10735271, 23344758, -12282533, --31659814, -11442330, 23045720, -6346888, 16468515, -56693032, -34514356, -44128640, -13878650, 23242752, -9969693, -4099010, -13769128, -5874442, 42324220, 3927211, 2782065, 73017128, 9503689, -49471580, --37504728, 52015812, 46313168, 5463736, -32229434, -40432824, -22260816, 11318849, 45070848, 40715752, -27894202, -12736189, 7460895, -12793634, 16349330, 35109748, 52262772, 57259432, -4402342, -26212186, --43553652, -65808024, 1662152, 39537320, 151162992, -16508244, -5609764, -68970736, -27442156, 9021042, -19459960, 91528976, 66160212, 42449848, -42776800, -22517976, -41776072, 315143, 76350560, 71518720, -85745800, -20171850, -80246096, -57047904, -81090592, 23670102, 78267728, 69878048, 125590752, -56281788, --69981120, -60265908, -8722542, 57330836, 74590160, 104458976, 47715476, -19024558, -38241852, 11597485, --1800665, 30933428, 82536920, -16434692, 51304460, -17312476, -46792596, -5764920, -35693324, 48163228, --10327786, 56705916, -51021528, 969052, -21781390, -53517440, 40293772, -28040768, 37439228, -28754270, --10081362, -2539936, 19899658, 4161287, -19419694, -11112691, 384936, 28964186, -25745644, 33171644, -25418690, -18584860, 5689758, -23329188, -21447456, 38417944, -36762236, -19987704, 27599996, 58779848, -1393717, 7238631, -3553012, -26967026, -5295695, 23260470, -6339372, -40441412, 7729331, -9849434, --4392141, 10477573, -33478196, 16542067, 2348810, 10717017, 30184494, -64276332, -43574592, -17297444, -1376000, 62172872, -31229244, 20969640, 53570592, -30310122, -13287555, -4544613, 30676268, 36902360, --18475876, 8177618, -4546760, 12079059, 65865472, -27304718, -66442608, 10181757, 35908612, 2891587, --33784748, 16934520, 13060459, 15062987, -10817412, -8177618, -75790064, -26295938, 27710056, 39275328, -31945966, -39401492, 8098161, -104110544, -69021736, -58972048, -12336757, 43967044, 26890790, -5356361, --25677462, -30594126, 9836012, -19954418, -5262946, 32909114, 6260452, -1483911, -39346196, -20369956, --7263327, -20065014, 7274601, -6110665, 15704548, -8189429, -3900904, -9440338, -4888747, -7689065, --24177444, -18501108, -38058244, -27218818, 13655849, 30518964, 32650342, 17341468, 27911918, -7801271, -23117662, -9258876, -16416976, -45675904, -5720360, -26501558, 14173392, 4164508, 49884436, -46491412, -11210938, 27553826, -21123722, -25950730, -17999134, -13518410, -15797963, 1274532, 33516852, 22097070, --15421080, -3978750, 22022982, -34401616, -41392212, 12144020, -47971564, -33922188, -36197984, 30782030, --1711545, -78597904, -120146344, -148846384, -116412408, -176777632, -25374130, -59462212, 27621472, 46845208, -140762192, 86220928, 145448528, 149030000, 199630624, 148996704, 149768736, 113708720, 11104101, -22142704, --49377092, -25877714, -108869368, -70201240, -56553444, -55512988, -57426396, -54674932, -55624660, -57633092, --67127656, -45543832, -79168592, -60451664, -55098524, -18348638, -66133908, -13232257, 30783104, -44066900, --21145734, 22911504, 15624554, -36007396, 40927816, 56508348, 63897304, 90801512, 86407760, 1923609, -52009368, 89183384, 116437640, 98599568, 181735632, 177670448, 150125216, 129126048, 153055984, 83625160, -120544696, 155788128, 111449568, 79443472, 119329224, 45448808, 34274912, 80129056, 65934192, 56032144, -325881, 42689292, -37689412, -5543729, 2031520, -71586904, -172790832, -139353968, -97657896, 0, -0, 0, 0, }, +-1034550, -2892124, -6316287, 275415, -507880, -4354560, 922344, -187905, -1166084, -1078574, +4333085, 4241280, 1076426, 6105296, -4664872, 4355634, 2791192, -4049617, 3409130, -7570417, +-1985886, -12191265, -1796907, 2594697, -2512556, 1838246, 1763084, 657667, -362925, -1176284, +-2354179, -614717, 2034204, 2259690, 260382, 2935073, -1170916, -2332167, 2440615, 2957622, +1954210, -4855461, -4516158, -3167539, -2853469, -3075734, 3448322, 2338610, -2646774, -4559645, +-7634841, -834834, -2736431, 1909650, 3505230, 1001264, -1701344, 129386, 3291019, -2840584, +3651259, 152471, -479426, -9095667, -1916092, -3704946, -955630, 4604742, -626528, -2391760, +-380105, 3975529, -2802466, 251256, 332860, -4474819, 7359964, 2530810, -1413581, 1825898, +2321967, 4395899, 7366943, -3622268, 2402497, -3092913, -2431488, 1440962, -52613, 569620, +-5318244, -2599529, 1778117, 3651796, -567473, 3070365, -5701569, -5039071, 3066070, 1962800, +785979, 2240899, -2000381, 3986267, 4431870, 4335233, 6201396, -3529390, -2962454, 180389, +714575, -6068252, -465467, -566399, 1569274, 549219, -3855270, -972273, 5044976, -2785286, +919123, -3189013, 1421097, 1540283, 941135, -4730907, 3696893, 297963, 769873, -695248, +-1620276, -1995012, -3272228, 6742562, -1269700, -1310502, -1588601, 2957085, 649077, -6493991, +1591822, -3007551, -4434017, 2525978, -2724083, -7039989, 2817499, 941672, 406411, -6460168, +-7568269, -2878165, 4576288, 744640, 605590, 4093641, -5539434, 1191317, -4582193, -5873905, +1995012, 5941551, -3299072, 2936147, -2422362, -1067299, 1394254, 504122, -2588255, -8192650, +-8105140, 363462, -1867774, 135291, 4616016, 909459, 5597953, 7432441, -3556770, 6445136, +1033477, 6535867, 656593, 7715372, 1215476, -4009352, -896038, 616328, 3686156, -736587, +-864899, 932545, 2865817, -2941516, 80531, -786516, 2571612, 2973191, 430570, -2678986, +77309, -354335, 1926830, 3095598, 5556077, -1692217, 3709778, -1403381, -4291746, -3966939, +-2470143, 2710124, 3118146, -1447404, 4865661, 234613, 1966558, 301185, 5856725, 3712999, +4398047, 1663763, 2711198, 1444183, 2511482, 4421669, -771484, -461709, 5981279, 6169184, +-6897718, -4758824, -3941706, -5662915, 1414655, 1984812, -4572530, 668941, 8573292, -6774237, +4224637, 7275675, 7286949, -5000953, -1514513, 3373697, 481573, 788663, -3609920, 1477469, +-11687143, 8617315, 13896367, 2101850, 4548371, -2698850, -387621, 7076496, -4126390, -9475772, +-1685238, -301185, -198642, -7758859, 378494, 1359357, -8843875, -4554813, 3886409, 883690, +-3228205, -1303523, 2883534, -4750771, 8878771, 2279017, 307627, -6320045, -668941, 2541010, +-2048699, -390305, -2139431, -719407, -926102, -5252208, 234613, -5124970, 6709813, -7200513, +-4372814, -2168959, -7831336, 4495757, -4211216, -11652246, -2000381, -5509906, 1329292, 4132296, +-5095442, -286689, -3520800, 2584497, 221728, -4445828, 177704, 1679869, -4780836, 3515431, +148176, -721555, 4143570, -3371013, -12477954, -2233920, -476741, 5844377, 8226473, 7261716, +3690451, -2505040, -538482, -7641821, -6354941, 2542621, 9321690, -2344515, 9545565, 6081674, +-5342403, 3271691, -529355, 3404299, -6002754, -4082367, 1401233, 4782446, -222265, 2921652, +4184372, -7003481, -1074279, -3143916, -9408663, 6242735, 1345935, 2360085, 4621385, 7897371, +3091840, 494458, 6476811, -1303523, -2714419, 6363531, -2891587, 10667625, 5282810, 4283693, +636729, -2979097, -3277060, 5229660, 7474854, -5208722, 1710471, 6733972, -749472, 2172717, +15315317, -4532801, -1326608, 2825015, -6977175, -390842, 1815697, -3434900, 4105452, -2530273, +2696703, 7291244, -2187749, -134755, 1269700, -2810519, -17898740, -1023813, 4832, -3189013, +-5296769, -1374926, 10188736, -6465000, -10059350, 4420595, -3886946, 2011118, 2185602, 7124277, +-4178466, -809064, 1602560, 6688338, -2574833, -3448859, -925565, -2873333, 4781373, 8875013, +4414690, 691490, -447213, -4107063, -62277, 13662828, 2496987, -950798, 15228880, -216896, +11358041, -2677912, 245887, 8311836, 2442226, 2630131, 2826625, 2096481, 4272956, 3221226, +-7067906, 14092325, 8120173, 11746199, 7335804, 5687611, -7270306, 4121021, 3666292, 1506460, +-4523675, 13317083, 7356742, 12175695, 1835025, -1123671, -2941516, 9365176, -4253092, -7221988, +9637370, 4463008, -5885179, -1701344, -41339, -923418, 239444, 693100, 284005, -831076, +-4472672, -484794, -11839077, -4545686, -13269301, -8990440, 1127429, -8500277, -6728603, 1038308, +-1411434, 9223979, -5870147, 10208064, 12315282, 1518808, -10297721, -7021198, 11049340, -5283347, +-2940442, 6457484, -7986492, -13958107, 5758478, 12641699, -6308770, 3484829, -214212, 5723581, +-14883672, 3333968, -5990943, 3977140, 277562, -5851356, 10343892, 5153961, 4334159, 14246943, +6379100, 3296924, 7752953, 2025614, 2441689, 4420595, 1207423, 1122597, 2010045, 2399276, +15596637, 9383967, -201327, 13760538, 8087424, 10325638, 15037217, -7192997, -6739878, 13981192, +-4911832, 143345, -8213588, -2665027, 4437775, 7816841, -6385543, 67109, 1634235, -870268, +3260954, -5473399, -1672353, -6335614, 13812615, -3255585, 6743636, 4571456, -4837207, 1583769, +730144, 1566589, -6951405, 9089761, 5306432, 12341589, 2428267, -1669669, -13881871, -7446937, +-5174899, 3546032, -7186554, -12069932, -3309272, 3069828, 1392643, -13489419, 10980084, 807991, +-764504, -11507828, -6542309, 2658048, 1469416, -12796318, -3906810, 4592394, 571231, 1212255, +6585796, 7546795, 4511327, -2065879, 3898220, 1085016, -4521527, -9547712, 16295106, -4210142, +-7871602, 9664, 4067871, 5090073, 12178917, 1817845, -199179, -4765266, -125091, 6516539, +-854162, 8173323, 16114180, 1083406, -3537443, 185757, 13824426, 17032766, -8756365, 2044404, +2284923, 8964134, 4766877, 1170916, 2614561, -7472706, 3926674, 3835406, 3925063, -3750580, +-570694, 2481954, 3758097, -4016331, 6907918, -5196374, -9822053, 7665443, -312996, -2021319, +3258270, 6591164, -16814796, 1556389, 13849659, -1059783, 24486146, 11919071, -6746857, -4887136, +-1674500, -6440304, -2494839, 11154567, -3526705, -3038689, 11301133, 9153649, 3471944, 5442798, +10619844, 7078643, 8111046, -5037460, -3121368, 9950902, -1223529, 9047349, 710817, -9831180, +-5937256, 3220689, 8801462, -10736881, 1393717, -5530844, 3840775, -6384469, 10224707, 9903121, +-8499740, -551903, 3467649, 132607, -11715597, -5172215, 2956011, 8726837, 14481019, 5078262, +-9241159, -1785096, -1560147, -732829, 9517111, 1829119, 7853885, -9855876, 5667210, 1211718, +-7116224, 10250476, 5272073, -715112, -953483, 2362769, 942208, -7507603, 11593190, -13121662, +-1660542, -3821984, 14499810, -5706401, 12025908, -3040837, 11250130, 15165530, -5998459, 5181878, +-3250217, 8902393, -2706366, 7519951, 6193343, 6023155, -805843, 6313602, -2451353, -6616934, +-3064996, 8722542, -9058623, 2142652, 358630, 7860327, 14968498, -12682502, 839666, 13750875, +38118, 12640626, 1977833, 5951751, -1317481, -303869, 3544959, -17717276, 2120640, 291521, +-7047505, 5625871, 3292629, 14142790, 6914898, -555661, 25652230, 7121056, -13176960, 4347044, +1480690, 9695352, -5601174, 2541547, 7643431, 1447404, 4682051, -458488, -14548665, -14083735, +68183, -4139275, 12027519, -19405736, 26108032, 840740, 14419816, 17716204, 3732327, -3302830, +-3798899, -6605660, -11205570, 557809, 1542967, -24159728, -1645509, 8287677, 1437740, -9062381, +-22397718, 12348, 2673080, -3932580, -824097, -6621229, 3615826, -5521718, 11727945, 4070019, +-6744710, -8657043, -14609868, 11034845, -4527433, 714575, 14615774, 19767586, 12304008, -1897302, +1278290, -13653701, -5552319, -5534602, 3929358, -19356880, 5338645, 5188321, 1425392, -9997073, +9863392, 14718316, -2018098, -348966, 2120640, -8683887, -8662949, 5135707, 4029216, 11106785, +-11831024, 13271986, -6523519, 7278896, -10848551, -9078487, -3919158, -363998, -717796, 4817880, +-1778653, -19972672, -14212584, -4227859, 1324997, -19974282, 1143535, 9931038, -4340602, -2208150, +4079145, 8580808, -16404628, 9266929, -1745367, -2202245, 1504849, 7888245, 10961293, -9349607, +-2552284, -4121558, 21521008, 301721, -4635881, 16683800, -3917010, -7110319, -2039573, -1789928, +20756504, 23750632, -3341485, 4862440, 5895380, -3309809, -11609833, 5357435, 22085258, 16757889, +14326400, -5543192, 6081674, 11710765, -15772731, -11851962, 13349295, -7209640, -7842074, -810675, +16736951, -2851322, 15381888, 723702, 13771276, -8706972, 19008988, 5542656, -6245956, -10158135, +3240553, -14244259, 1380832, -16848620, -5931887, -6274947, 9129490, -9813463, 15230491, -19428284, +-33320356, 20218558, 8843875, -4439923, -227096, 22327924, 10240276, 1407139, -6426345, 4511327, +-3146601, -119185, -15311558, -15358266, 8218957, -5381057, 4211216, 27904940, -8117488, 5840619, +-19247896, 21704618, -8243116, -9591199, -5763846, -2426120, 7800735, -16699907, 13581760, -24655796, +-18303004, -17758616, 24958592, 886911, 10767483, 6408628, -21815750, -19120120, 12991202, -34151432, +10107669, 10182831, -2068564, -13578002, -12370580, 21318608, -11303280, -1489280, -3418257, -11027865, +16376710, 5166846, 14847702, 8528731, 10318122, -3204583, 16678432, -1516124, -10522670, -12677133, +-2659659, 7136088, -9330280, 12770548, 8502962, -9643812, -34289944, -2918967, -2498597, -870805, +25520696, 554588, -19299436, -11705396, -11615202, 10307385, -7128572, -16427176, -17806934, -11415486, +-8360691, -40840844, 1566053, 5055714, 14045080, -21360482, 7672959, -17666812, -13655312, -5000416, +17889612, 4277788, 16745541, 29791504, 10004589, 6709813, 20621212, -15416248, -688269, -7521562, +-6924024, 15185394, 16068010, 22276384, 13053479, 13198435, -9430138, -21248276, 7656853, 1136019, +971200, 2308545, 4566087, 6301254, 11350525, 4735202, 9767829, 6127308, 11311333, 27259084, +2223719, -32001264, -10925323, 10050760, 1686312, -5406827, -20203526, -12611098, 5887864, 19082540, +8121783, -15076946, 10290205, 8742943, -17540646, -1890859, -22007950, 20045686, -8376260, -10453950, +18302466, -14641007, 5955509, 37101000, -2761664, 7585449, 11812234, 1816771, 6548752, -18764712, +6458020, 5632313, 4794794, 48416092, 32874754, -1363115, -14679124, -8537321, 16111496, 19161996, +-17011828, -8018704, -23318988, 42036456, 12601971, 7153268, -4616553, -1606318, -6978248, -2007360, +30437896, -4527433, 9816685, 31792958, 7087770, -4320737, -18524194, 4738960, 11447162, -37451040, +12979928, 11705396, 30207042, -5838471, -27050778, -3822521, 18787798, 10542534, -30301532, -40023728, +4712653, 27239220, 11107859, 16651588, -9337259, 12855911, 2268280, 347355, -14427332, -5210869, +-22530862, 33621540, 11395622, -27347130, -18619220, 12177843, 1417876, 6674379, -8058433, 16699370, +9917079, 11451993, 22129818, 19386946, 4123169, 18931142, -9942312, 10786810, 33286, 13123273, +6189048, -3406983, -7960722, 8949101, -11868068, 31119186, -8406325, -6231461, 6439767, 15186467, +15317464, -10756209, 26977764, 26388816, 15485505, 6038724, 2105071, -9107478, -20560008, -35373888, +-5928129, 11798275, -1102733, 14512694, 16067473, 17002702, 5578626, 9088151, 57081188, -29306172, +-13434658, 4782446, 9824201, -2507724, -47048144, 9460739, -9830106, 5577552, 3140695, 18915572, +-5295158, -9130027, 3176128, 14959371, 14666240, -8393977, -11439645, 3160559, -11021960, -34579320, +35290136, -10534481, 9685688, 3153580, 29504814, 23658290, 14588393, -14374182, -2750927, 20279224, +10406169, 23890756, 63588600, -4108673, -25742960, -6729677, 18614388, -3016678, -30394410, 45394584, +22990960, -16246788, -25631828, -3277597, 4880694, -8152922, 17324824, 15134391, 16924856, 33742872, +4798016, 9304510, 5111548, -13520020, -32709934, 18226230, -22678502, -16629040, 23765128, 12594455, +12764643, 6818798, 3697967, -2097555, -32849520, -28522878, -1217623, 15709917, -22579716, 18540836, +-11282342, -24406152, 4959077, 18894634, -6402723, 2180233, 17202418, 17798344, 17210470, -1096290, +-16694001, 8438000, 44137768, 1451699, 13475460, 21461952, -9206262, -22352620, 18043158, 14874545, +381715, -11799349, -17552994, -30882426, 5491116, 19156628, 25970594, -21990770, -23691576, 29122026, +12890271, -944356, -3073586, -11791833, 5350993, -5356898, -12726525, 13543106, 15968688, 11492796, +832150, -2040646, -9329206, 2290291, 6497212, 4487167, -10561861, -35747548, 7703024, -7790534, +-11243688, 2471217, -5103495, 3525095, -36487896, 17324288, 12670154, -25373594, 17617418, 24710020, +19596326, -4766340, 2764348, -2534568, 12489765, -2234994, -786516, 65187940, -20104206, 6202470, +-18089328, -9112847, 35478040, 14284524, 11458973, 24320252, -30658550, -23374286, 35427576, -21906480, +17411260, 24444806, 819265, 7653632, 7225209, 43139188, -15887084, -13985487, -40177272, -6045167, +-19000398, 15326591, -27344446, 43139724, 16375637, 23687282, -9824201, 27180700, -14879914, 14624901, +45820320, 23016730, 17682918, -24770688, 7686381, 25735980, -20985210, 36207648, 13347148, 19601156, +17641578, -10486163, 18249852, 15730318, 6957847, 35846332, 27348742, -1589675, -60026464, -6673843, +28638306, 27543626, 28390270, 7067906, 16052440, 1733556, 8305930, -1677722, -18300856, 39071856, +-580894, 37208912, 17050484, 26889180, -36908264, 25492778, 12969191, 11534135, -9445707, 8889509, +-6649146, 8435853, 37392524, 14791867, 48671108, 2319282, 10901164, 28160490, -5573257, 44263932, +22028888, 3574487, -29419990, -18857590, 16222091, 1306744, -4971425, 267899, -5142150, 2609193, +-21635898, 13252658, -23069344, -35424352, -12973486, -3634616, -11583527, -10989748, 28755880, -6369437, +26512834, -29101624, 29703456, -1606855, -9347459, -27965606, -26849452, -11314018, -12250857, 20015622, +-34908420, -42974368, -46939160, -56132000, 23536958, 26354994, -2794413, -5204964, -1423782, -13876502, +1916092, 6191196, -12989592, 37009732, 34104724, 22567906, 23970212, -23939074, 14083735, 744640, +17008070, -7786776, -11049340, -35003448, 29341606, -31634044, -39414916, -10314901, -9589051, 40239012, +-23985244, 5160403, -22778896, -6135898, 37347424, 7054484, 10559177, 19217832, 34066068, 2109903, +-5931350, -43940736, -10053982, -3507378, -3244311, 24124832, 10888816, 81883016, 2010045, -2309082, +-29235306, -1877975, 30333744, 30203820, -4878009, -13857712, -42600708, 10735271, 23344758, -12282533, +-31659814, -11442330, 23045720, -6346888, 16468515, -56693032, -34514356, -44128640, -13878650, 23242752, +9969693, -4099010, -13769128, -5874442, 42324220, 3927211, 2782065, 73017128, 9503689, -49471580, +-37504728, 52015812, 46313168, 5463736, -32229434, -40432824, -22260816, 11318849, 45070848, 40715752, +27894202, -12736189, 7460895, -12793634, 16349330, 35109748, 52262772, 57259432, -4402342, -26212186, +-43553652, -65808024, 1662152, 39537320, 151162992, -16508244, -5609764, -68970736, -27442156, 9021042, +19459960, 91528976, 66160212, 42449848, -42776800, -22517976, -41776072, 315143, 76350560, 71518720, +85745800, -20171850, -80246096, -57047904, -81090592, 23670102, 78267728, 69878048, 125590752, -56281788, +-69981120, -60265908, -8722542, 57330836, 74590160, 104458976, 47715476, -19024558, -38241852, 11597485, +-1800665, 30933428, 82536920, -16434692, 51304460, -17312476, -46792596, -5764920, -35693324, 48163228, +-10327786, 56705916, -51021528, 969052, -21781390, -53517440, 40293772, -28040768, 37439228, -28754270, +-10081362, -2539936, 19899658, 4161287, -19419694, -11112691, 384936, 28964186, -25745644, 33171644, +25418690, -18584860, 5689758, -23329188, -21447456, 38417944, -36762236, -19987704, 27599996, 58779848, +1393717, 7238631, -3553012, -26967026, -5295695, 23260470, -6339372, -40441412, 7729331, -9849434, +-4392141, 10477573, -33478196, 16542067, 2348810, 10717017, 30184494, -64276332, -43574592, -17297444, +1376000, 62172872, -31229244, 20969640, 53570592, -30310122, -13287555, -4544613, 30676268, 36902360, +-18475876, 8177618, -4546760, 12079059, 65865472, -27304718, -66442608, 10181757, 35908612, 2891587, +-33784748, 16934520, 13060459, 15062987, -10817412, -8177618, -75790064, -26295938, 27710056, 39275328, +31945966, -39401492, 8098161, -104110544, -69021736, -58972048, -12336757, 43967044, 26890790, -5356361, +-25677462, -30594126, 9836012, -19954418, -5262946, 32909114, 6260452, -1483911, -39346196, -20369956, +-7263327, -20065014, 7274601, -6110665, 15704548, -8189429, -3900904, -9440338, -4888747, -7689065, +-24177444, -18501108, -38058244, -27218818, 13655849, 30518964, 32650342, 17341468, 27911918, -7801271, +23117662, -9258876, -16416976, -45675904, -5720360, -26501558, 14173392, 4164508, 49884436, -46491412, +11210938, 27553826, -21123722, -25950730, -17999134, -13518410, -15797963, 1274532, 33516852, 22097070, +-15421080, -3978750, 22022982, -34401616, -41392212, 12144020, -47971564, -33922188, -36197984, 30782030, +-1711545, -78597904, -120146344, -148846384, -116412408, -176777632, -25374130, -59462212, 27621472, 46845208, +140762192, 86220928, 145448528, 149030000, 199630624, 148996704, 149768736, 113708720, 11104101, -22142704, +-49377092, -25877714, -108869368, -70201240, -56553444, -55512988, -57426396, -54674932, -55624660, -57633092, +-67127656, -45543832, -79168592, -60451664, -55098524, -18348638, -66133908, -13232257, 30783104, -44066900, +-21145734, 22911504, 15624554, -36007396, 40927816, 56508348, 63897304, 90801512, 86407760, 1923609, +52009368, 89183384, 116437640, 98599568, 181735632, 177670448, 150125216, 129126048, 153055984, 83625160, +120544696, 155788128, 111449568, 79443472, 119329224, 45448808, 34274912, 80129056, 65934192, 56032144, +325881, 42689292, -37689412, -5543729, 2031520, -71586904, -172790832, -139353968, -97657896, 0, +0, 0, 0, }, }, }; const Word32 CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1774] ={ { { -2848100, --4996121, -2501819, 178778, -1384590, 3234110, -3849365, -6403260, -5370320, 883690, 0, --1796907, 2643016, -185757, 2986076, -4163434, -3251290, 912144, -12885, -562641, -3524558, -877247, 576063, 872415, 3602941, 2280091, -505732, 1189706, 1094680, 1391569, -843961, -188979, 4723927, 2952253, 1245541, -2436320, -1349157, -585726, -1560147, -1996086, 3809099, -1480690, 1563368, -492311, 772020, 365072, 855772, 782758, 405338, 2534031, -2726767, --1814087, -331249, -390842, -3704409, -1619203, -4740570, -2827162, 858457, 1508070, -1408212, --3979824, -1078037, 1160178, -315680, 2673617, 134755, -540092, 7708393, -3829500, -2741800, --691490, 1606318, 1019518, -4606353, 1345399, -206158, 5018670, 2812667, -3750043, 5525476, --3332895, -854699, -143881, -1605244, -2269353, -3904662, 759136, 6459631, 412317, 1331977, -2425046, 855772, -2447058, -477815, -1549946, -1117228, 3553012, 1251446, 261993, -1079111, -461709, 54761, -1678259, -2145336, 3428458, 3036542, 280247, -568009, 4009889, -5709086, --2456185, 2738042, -2706903, 5315559, 266288, 3817152, 203474, 635655, 2066416, -1820529, --1118302, 153545, -330176, -1367410, -1553168, 2479807, -396748, -5230197, 4833986, -483184, -573378, -4372814, 1885491, -1795833, 1498407, 394063, -489089, -1471563, -523449, -2397129, -2392297, -4905927, -971736, 4092567, -3421478, 1729798, 5208185, 2059437, 54224, -2459943, --324807, 1869385, 10871099, 2074469, -1596654, 3390340, -1724429, -1323924, -1829119, -674310, --4189741, 5841693, 3265786, 2533494, 2603287, 2587718, -2797098, -3616363, 4780836, -1044751, --3912178, -7224672, 1059246, -2145336, 2136746, 33286, -751082, -1636383, 2128693, -2702608, --1505386, 3539053, 6623914, 1728188, 2918430, 541703, 3235184, -760746, 3444564, 2228551, -215822, 1960653, -23085, 518617, -26307, 4871567, 826244, 1209033, -1354525, 629213, --597537, -809064, 3764539, 4479651, -1928440, -1833414, 641024, 4088272, -7202660, -526134, --2195265, -5286031, -2419677, 513249, -2542084, 2053531, 1447941, -88047, -3537443, 1180579, --1125818, -3282429, 3308736, -5625871, -3074123, -6050535, -3468186, -1366337, -70867, 2916283, -1844152, -7045894, -235686, 598611, 5129265, -1815161, -7864085, 6265821, -7407745, 25233, --3007551, -3094524, -7875360, -5893232, -2822331, -2480344, 3818763, 761283, -5038534, 377420, --2499134, -354872, 228707, 1846299, 883690, -2782602, 818191, 177167, 1772211, -2091649, --725850, -917512, -2254858, -4514548, 5995775, 2149631, 1206349, -1193464, 5186710, 3650185, --4194573, 862215, 920734, -1341104, -2232846, 154619, -4323959, 609885, -412854, -4420058, -5374078, -416612, 149787, 5567888, -4743255, 4250944, 2325188, -1267552, -3339874, 555125, -31139, -4753455, -2828236, -622770, -860067, -2561948, -5035849, -502511, 1946694, 1827509, --884763, 1515050, 1598265, -2189360, 121870, -4880157, -12334609, -11577084, 4437775, 7732552, -4580583, -10443750, 7369627, -2514703, -1052267, 668404, -4959614, -3683471, 8679055, -133681, --145492, 648003, -351650, 2842195, -4530117, 2617783, -2484102, 2332167, 3849365, -2729989, --915365, 2262911, -876173, 4118337, -1528472, 1733019, 129923, -530965, 101469, -3694746, --5245229, 4573604, 329639, -1044751, -262530, -4819490, -6132140, -328565, -232465, 2844342, --5766531, -4799626, -1373853, -9808095, 3307125, -987843, 1510755, -987843, -2787971, 1196148, -11780558, 6528887, 3016678, -4004520, 4250407, -404264, -6957847, -362925, -7290707, 5181341, -4832, 199179, -4600984, -478352, 2889439, 826244, -298500, -176631, -797790, 3355980, -1412507, -370978, 947040, -17770428, -1202591, -4377109, -475131, -3080029, -9860171, -556735, --2545842, -4251481, -9232032, -1281511, 6804839, -4774930, 4527433, -893890, 6323266, -2206540, -5166309, -1764158, -4818954, -1439888, 683437, -2281165, -4317516, -3686156, -4241817, 51003, --3857954, 1374926, 621697, 321586, 2043331, -3086471, -3890167, 5759551, -386010, 1670205, -204011, -4621385, -2758980, -3267396, 296890, -2346126, 4198331, 4110821, 816581, -5606006, --1704028, 10313290, 2691871, -4333622, -3343095, -2164664, -3700114, -1956895, 8165270, 4983236, --5734855, 3686156, 4851703, 7150047, -1712081, 3024194, -341987, 278636, -2757906, -5569499, --985695, 4637491, 504122, 8754217, 5968394, 920734, 1976222, 7722351, -5567352, 22699440, -15058692, -4584341, -975494, 133144, -752156, -2520072, 3007014, 7788923, 6369437, 3432216, --12031277, -5241471, 1336272, 703838, 4836670, -8922258, 1588601, 12090870, 7915625, -1412507, -2658048, -1099512, -4344360, -5629092, 37581, -4817343, -3063386, 1314260, 3452080, -3576634, --6811818, -3191161, 776315, 5837398, 7964480, -1722282, -9177808, -2016487, -3543885, -9002251, --950262, -456340, -4679367, 1253057, 1915019, 4933844, -7896834, 2777770, 3302293, 562104, --7710540, -5616207, 1860258, -8053, 1243930, -1131187, -1356673, -630823, -4671851, 1538672, -1319629, -3233574, 4156455, 5370857, 7152195, 1358820, -381715, 6925098, 11244224, 1209033, -404801, 1166621, 5692443, -450435, 2150168, 9822590, 11489574, 656056, 2062658, 3273839, -5308580, -1867237, 3213709, -2733747, -2421825, -9453760, 3449396, 7028714, -6535330, 5401995, --2993055, -8278550, 8447127, 5603322, -2099702, 5648419, 9954660, 7612293, -5932961, -2756295, -4736812, 1915555, -1746978, 4296578, 3163780, 5654325, -234613, -2185602, -5262409, -8116415, --877784, -6726456, 228707, -2104534, 3213173, -5359583, -13239774, 2862596, -3786014, 5879274, -787053, 496069, -4179540, -7408282, -6936372, -609349, -1366873, -5651640, 7129109, 10097468, -9811853, 4138738, -8369281, -854162, 9210557, 722628, -2570538, 4363150, -2181307, -2904472, --10419054, 4780299, 1821066, 13230110, 5399848, -10057740, 2124398, 2689187, -2065879, -1182190, -2226941, -3447785, -4018479, -5763309, -2011118, -1219771, -10918881, 862215, 918586, 5607617, --2378875, -4226248, 1502702, 889058, 2098092, 388158, 5325760, 2600603, 3544422, 966368, --864899, 3689914, 1562294, -10113574, -3650185, -14584098, 223338, -2510945, 1257352, 2881386, --270046, 7337415, 1326608, 10363756, 754304, -11829414, -258235, -4640176, -2510409, -376883, --2339147, -437013, -10099079, 2247879, -5162551, 11660836, -12528420, 6766184, -3199751, -10085120, --2536178, -7075422, -2197950, -2105608, -11541114, 3172370, 2607582, -1958505, -2555506, -691490, -3035468, -8654896, -645319, 8020852, 558346, 11143293, 17347372, 7436736, -17783312, -22417582, -9469866, 4554276, 15053324, -3777961, 6059125, 1287417, 5311801, 10627360, 9529996, -20206748, -15076409, 2937758, -2776160, -134755, -9284646, -7365332, 7860327, -1930051, -2634963, 8435853, --6149857, -6341519, 341450, 8428336, 3467112, -2359011, 245350, -4377109, -614180, 965831, -4410932, 538482, -10349261, -9962177, 2377265, -992137, 2556043, -617402, 4229469, 8468602, -15058155, 232465, 9385577, -1790465, 2732136, 6926172, -6109054, 12776991, -1628330, -7008850, --10594074, -1429687, -8756901, -10571525, -2953327, 5871757, -3309272, -7984881, 4526359, 7000797, -9893457, 13385266, -10056129, 4789426, -2666101, -8470749, 3723200, -9514426, -1742146, -16101832, -7060926, -3957812, 2740726, -1828046, 2899103, -17098802, -18242874, -9661529, -4160213, 11914776, --9768903, 21319144, -6725382, 4137127, -1695975, -2069101, 16455630, 1712618, 5772436, 5233955, -1102733, 10719701, 675921, -13293461, 6046777, 2726767, 5743445, 81604, -11075110, 15562814, -7327214, 6816650, -2103997, -3782256, 1211718, -361851, -8927626, 6052146, 3022583, -3856344, -5267778, 10168872, -447213, 4279935, 8705362, -9514963, 1758789, -2725694, 3521873, -18533858, -5183489, 9990631, -3934190, 3189550, 8588324, 5686537, -550830, 3788698, -10341208, 3200288, --6375879, 1148904, 2091649, 2241436, -5106179, 19158238, -4025458, -2790655, -5026186, -15390478, --7253663, -9164386, -12157442, -1511829, 15119895, 18086108, -2466922, 6045167, 6195491, -13886703, --5493263, 12450036, 8934606, -5164698, -4944581, -13743358, -5585605, -4886062, -7923141, -7603166, -1040456, -13785771, 4165582, -1719598, -5218922, 3245385, 1116155, -7311108, -10422812, -11561515, --4318590, -11287711, -4378719, -4607963, 481573, -10706280, 2711198, 4463545, 843961, -12177306, -4156455, -15086073, 5060009, 8464307, 657130, 13156559, 838592, -3823595, -1926293, 8931921, --2688650, 12278238, 4846334, -4071092, -3624953, 2300492, -5629629, -3169149, 1059783, 11703249, -245350, 6302865, 4120484, 1289027, 8764955, -3351685, -6672232, 3570192, -4538707, -2148021, --13659607, 8476118, -4246112, -3918621, -2058363, -15562277, 19979114, 5340255, -1313723, 8716099, -3723200, 4469987, -7381975, -12252468, -13320841, -6531035, 1937030, -14158360, 6701760, 10969883, --15014669, -5654325, 7460895, -7374459, 5550172, 17980344, 2372970, -4125316, -3109020, 12329240, -28142236, 31091268, 8449811, 19586662, -13623099, -12261058, -3755949, -1148904, 376883, 5056787, -8965744, 18202608, 4998805, 16910896, 1073205, 5677410, 1689533, -3646964, 6647536, 620086, -2224793, 2065342, -8917426, -194884, -5110474, -8068633, -6248104, 975494, 184147, -10961293, --5563594, 15713675, 10013179, 8580271, 11893301, -6947110, -613643, -20754356, 310311, 19426674, --4315369, -2818572, 1538135, -1107028, 13834090, -260382, -3112241, 12101607, -14052059, -20739324, --9418326, 2861522, -12335683, 9549860, 11356430, -16095927, -7157563, 1119376, -1026497, -23470922, --16305306, 8875550, 2645163, -760746, 7110855, -9558987, -7362648, -13921063, 2719788, 6154152, -275415, 2512019, -11202348, -14900315, 12257300, -19990388, -28567974, -19876572, 13652090, -2530810, -25141128, -5823976, 20630876, -16503949, 125628, 7961796, -2057289, 1321776, 2084670, -896574, --13071733, 4877472, 4388920, 5986111, 5936719, -3463891, 10041097, -9030706, -7387881, -4962835, -14277008, -7633231, -3124052, 1789391, -704375, -7131257, 6140193, -8000987, -10521059, -18559090, -1331440, 4020090, -13363791, -5501853, 5821828, -2063195, 2913062, 1613297, 14635101, 1647120, -10905459, 5677947, 54761, 9732396, 1626719, 3824132, -17522392, 18303540, 5789616, 14531485, --8819178, 4447439, -9608916, 15133854, 10414222, 18332532, 2355790, -3622805, -13091060, 226560, -1853278, -9699647, 14992120, 3658239, 2110977, 17799418, 3528853, -3551938, -6580427, 938450, -10126996, 13180181, -3392487, 12432857, 13180718, -30792232, -1169842, 15824807, -9942312, -3508452, -12048994, -12826383, -25581898, 5109401, 4756140, 4003983, -2990371, -15300284, 4289599, 4405026, -1612760, 8587787, -26961120, 12710419, -5850283, 6699612, -15080167, 12903155, -19194746, -12436615, -8323110, -4949950, -1627793, -14780593, 12540231, 15863462, 715112, 2066953, -6361384, 23709294, -6632503, 6763500, -3352222, -19768660, -3409130, 11622718, -1049046, 17197586, 1174137, -5516886, -5115306, -596464, 11613055, -19379430, -1218697, -14685567, 17831630, -5492727, 6874095, 253940, -789737, -17357574, -4913980, 16710107, 6603512, 2260764, -3199751, 1348620, 3707094, -22294638, --22280680, 26563836, -9516574, -26776974, 13250511, 14222784, -20338818, -28078886, -18256296, -18128520, -13223131, -18006650, -8124468, -18753974, -366146, 2415382, -22310208, 2608656, -10243497, 31649614, -3032247, -30647812, -5462125, 13194676, 10088878, 5883032, 16221018, 13867913, -19931870, -6490233, --6856916, 18941342, -5623186, 22312892, 1381369, -14453639, -9302899, -21804476, -22462142, 488553, -4237522, -4811974, -10849087, -6118718, 3092913, 2949032, 9701257, -12496207, 7446937, -14514305, --14650133, 2435783, -1918240, -4983236, -15322833, -16618839, -6147709, -5507759, 24468428, 1613834, -9264244, 12438762, 1174137, 28449864, 13247290, -9866077, 3058017, 14668387, -4230006, 18736794, --3382287, 2456721, 2834142, -25214680, -24581708, 4347581, 19701552, 1162326, -4287451, -27362700, -3139621, 11437498, 7293392, -7210177, -6942815, -1321776, -12800613, -14295799, 28685550, -9826885, --8713415, -2804077, -6115497, -19950660, 1820529, 11505144, -30465276, -1903744, 9729175, 8827232, --9411347, 5874979, -16780438, 46708, -3209951, 4355634, -14834280, 8821863, -26308286, 3200288, -2337536, 14410689, 16443282, 6013491, -8774618, 10217190, -1731409, 11569031, -12407624, 835908, -18254148, 11690364, -5974300, 1278827, 2244121, -5083631, 9895068, -4551055, -7674570, -12167105, -9649718, -20827370, 14875082, 1504312, -18593988, 18058726, 20992190, 16091632, 8734890, -10710575, -25169582, 1138166, 12395276, -15538655, -9241696, -15004468, 7190312, 3456912, 11430519, -20488068, -5450851, 11912629, -31876710, -599685, -7198902, 20442970, 19888920, 9058086, 3342022, 12414066, --5589900, -3727495, 3338800, 23400056, 5471252, 11658689, -33908228, 15472083, -18842558, 25490094, --2291365, 9638980, 19915226, -21674016, 38063072, 26607860, 20701742, -9828496, 5759015, 25343528, --6267431, -8934606, -5823976, -2002529, -19371914, 4515085, -10225780, -24452322, 23172422, 6869800, -6482717, 2108292, 5479305, 8093329, 24335284, 4237522, -14972793, -2177549, -15557445, 2171106, -2355790, -28515898, -1093069, 13980655, 1158031, -3035468, -8354785, 28165858, 6073621, 11302206, -6474663, -17032766, -11278584, -9925669, 18200998, 9388262, -3647501, 9614284, -1634772, -21451214, -19333796, 754841, 22162568, 750009, 2267743, -1383516, -29446296, 2048163, 794032, 1120987, -18348638, -9592809, 28904056, -46422692, -7585986, 29587492, -12862890, 7067369, -14155138, -27970438, -16349330, 7134478, -36538360, -41454488, -4886599, -18967650, 1505386, 12940736, -18207440, 5775658, --27207544, 12054899, -15611669, -70148624, -5947456, 43929464, -20074678, -7371775, 41961832, -9597641, -801548, 52607980, -14053670, 12017855, 3213709, -7141994, 40205724, -33340758, -6133750, -556198, --7779260, -6475737, -8817568, -570694, 11675869, -7465727, -24924768, 425739, -1672353, 6874632, -6127308, 1574642, 16524350, -715112, 6267431, -5190468, -25192668, 15709380, -5395016, -23538032, --1832877, 13242458, 38428148, 20586852, 31700616, 360240, 5368172, 16127602, 547071, -2543158, -28861644, -2306398, -16488379, 37307696, 2481954, 5947456, -4264366, -6216965, 16676284, -959925, --18311594, -15302968, -9598715, -3970161, 24596740, -23474144, -9517648, 470299, 25756382, 17813914, --38075420, -21041044, 32217086, -7220377, -28094992, -1857037, 2311766, 9216463, 34011848, 27172648, --15972983, 3774740, -2285460, -1275068, 1440425, -20118700, 29779692, -9822053, -16610786, 5053566, --11414412, 14453102, 3183108, 21189222, -5176510, -22925462, -17602386, 15731928, -6430640, 20927766, --4154844, 13074954, -12832825, -12799539, -5113696, 237834, -16550120, 3175592, 2881386, -1027034, -19947976, -1521492, 7963943, -13817447, 10896869, -21040508, 23137526, -20272782, 14579803, 5145908, -19812148, -30982820, 3071439, 1291175, -6908992, -22697828, -34303904, -7282654, -28925530, -13129715, --22676890, -12761422, -43210592, -15305116, 22923852, 24921010, 16585553, 13963476, -12348, 15167140, --29883308, -9097278, 7401840, 17032766, -52539260, 15430207, 8004209, -27465242, 10625212, 10314901, --20295332, -15320148, 23207318, 2938831, 12171400, -6339372, 15152108, -4990215, -2901787, 12185896, -5438503, 3925600, -191663, -8394514, -14798847, -8811662, 21621940, -8014946, -19979114, 32608466, -19532974, 2374580, 14173392, 4196720, -17807472, -50371376, 19593104, -1968169, -28072444, 22408454, --3479997, -36868000, -31875100, -16342887, 22727894, 9220221, 23507966, 30882426, 7910793, -25770878, -6452115, 8607114, -33909840, -5734318, 16344498, -10631118, -37089728, -27255326, -44952740, -27954332, --8524436, 26341034, 36610300, 18096844, -5404680, 26120918, -9848360, -67065916, -55911884, 10466835, --30339648, -32535988, 40442484, 4556961, -65672196, -48361332, 9644349, 754841, 2230699, 19838990, -41181756, 48706540, 48919140, -15892453, 17626546, -20444044, 12964896, -35433, 7921531, -24161338, -2857764, -20703890, -16892106, -404801, -40331892, 479426, -16528645, 4104378, 13284871, -791885, -15245523, -20776904, 32014150, -15642808, 659278, 20963736, -18841484, 7523172, 16666621, 18632642, -4032974, 6586333, 6026913, -29929480, -15167140, -4956929, 5800354, 4481262, -2972117, 19647328, --4868883, -286689, -2231773, -8500814, 8545374, 4010426, -21890912, 7061463, -17227114, 5373004, --43676060, -1939715, 636192, 225486, 20361366, -7080254, -14667850, -6914361, 18971944, 518080, --41866804, 62067108, -3295314, -10931766, 15515569, -1714766, -6829535, -10346039, -9958419, -11736535, -44418552, -14491220, -22058952, 23231478, 4313758, -29830696, -5899675, -37685116, -59234040, -54272816, -120955944, 102823128, 113995952, 262840192, 66394824, -65113852, 18334142, -209863376, -225466992, -55032488, --142878000, -108393704, 63241244, -34746284, 10564009, 166465952, 79409648, 123025040, 234027392, 157464768, -37460704, 33223182, -74300784, -217947584, -169887968, -128355632, -260513920, -105530568, 1046898, -47619376, --25778930, 126701536, 28554554, 14376329, 154111472, 16492138, 31809064, 223884832, 160408432, 101797704, -207801248, 102584224, -45685032, -8369281, -76588928, -340910880, -301647360, -242662960, -377166304, -286881280, --109767552, -140354704, 18412524, 246475296, 215295968, 305671744, 384367360, 285343136, 215829088, 212392576, -107342504, -56225952, -99315752, -199178576, -282984672, -275589248, -247752512, -277487648, -290987808, -237598128, --154757328, -120460944, -16268799, 156988032, 192766192, 123452392, 10576894, 0, 0, 0, -0, 0, 0, }, +-4996121, -2501819, 178778, -1384590, 3234110, -3849365, -6403260, -5370320, 883690, 0, +-1796907, 2643016, -185757, 2986076, -4163434, -3251290, 912144, -12885, -562641, -3524558, +877247, 576063, 872415, 3602941, 2280091, -505732, 1189706, 1094680, 1391569, -843961, +188979, 4723927, 2952253, 1245541, -2436320, -1349157, -585726, -1560147, -1996086, 3809099, +1480690, 1563368, -492311, 772020, 365072, 855772, 782758, 405338, 2534031, -2726767, +-1814087, -331249, -390842, -3704409, -1619203, -4740570, -2827162, 858457, 1508070, -1408212, +-3979824, -1078037, 1160178, -315680, 2673617, 134755, -540092, 7708393, -3829500, -2741800, +-691490, 1606318, 1019518, -4606353, 1345399, -206158, 5018670, 2812667, -3750043, 5525476, +-3332895, -854699, -143881, -1605244, -2269353, -3904662, 759136, 6459631, 412317, 1331977, +2425046, 855772, -2447058, -477815, -1549946, -1117228, 3553012, 1251446, 261993, -1079111, +461709, 54761, -1678259, -2145336, 3428458, 3036542, 280247, -568009, 4009889, -5709086, +-2456185, 2738042, -2706903, 5315559, 266288, 3817152, 203474, 635655, 2066416, -1820529, +-1118302, 153545, -330176, -1367410, -1553168, 2479807, -396748, -5230197, 4833986, -483184, +573378, -4372814, 1885491, -1795833, 1498407, 394063, -489089, -1471563, -523449, -2397129, +2392297, -4905927, -971736, 4092567, -3421478, 1729798, 5208185, 2059437, 54224, -2459943, +-324807, 1869385, 10871099, 2074469, -1596654, 3390340, -1724429, -1323924, -1829119, -674310, +-4189741, 5841693, 3265786, 2533494, 2603287, 2587718, -2797098, -3616363, 4780836, -1044751, +-3912178, -7224672, 1059246, -2145336, 2136746, 33286, -751082, -1636383, 2128693, -2702608, +-1505386, 3539053, 6623914, 1728188, 2918430, 541703, 3235184, -760746, 3444564, 2228551, +215822, 1960653, -23085, 518617, -26307, 4871567, 826244, 1209033, -1354525, 629213, +-597537, -809064, 3764539, 4479651, -1928440, -1833414, 641024, 4088272, -7202660, -526134, +-2195265, -5286031, -2419677, 513249, -2542084, 2053531, 1447941, -88047, -3537443, 1180579, +-1125818, -3282429, 3308736, -5625871, -3074123, -6050535, -3468186, -1366337, -70867, 2916283, +1844152, -7045894, -235686, 598611, 5129265, -1815161, -7864085, 6265821, -7407745, 25233, +-3007551, -3094524, -7875360, -5893232, -2822331, -2480344, 3818763, 761283, -5038534, 377420, +-2499134, -354872, 228707, 1846299, 883690, -2782602, 818191, 177167, 1772211, -2091649, +-725850, -917512, -2254858, -4514548, 5995775, 2149631, 1206349, -1193464, 5186710, 3650185, +-4194573, 862215, 920734, -1341104, -2232846, 154619, -4323959, 609885, -412854, -4420058, +5374078, -416612, 149787, 5567888, -4743255, 4250944, 2325188, -1267552, -3339874, 555125, +31139, -4753455, -2828236, -622770, -860067, -2561948, -5035849, -502511, 1946694, 1827509, +-884763, 1515050, 1598265, -2189360, 121870, -4880157, -12334609, -11577084, 4437775, 7732552, +4580583, -10443750, 7369627, -2514703, -1052267, 668404, -4959614, -3683471, 8679055, -133681, +-145492, 648003, -351650, 2842195, -4530117, 2617783, -2484102, 2332167, 3849365, -2729989, +-915365, 2262911, -876173, 4118337, -1528472, 1733019, 129923, -530965, 101469, -3694746, +-5245229, 4573604, 329639, -1044751, -262530, -4819490, -6132140, -328565, -232465, 2844342, +-5766531, -4799626, -1373853, -9808095, 3307125, -987843, 1510755, -987843, -2787971, 1196148, +11780558, 6528887, 3016678, -4004520, 4250407, -404264, -6957847, -362925, -7290707, 5181341, +4832, 199179, -4600984, -478352, 2889439, 826244, -298500, -176631, -797790, 3355980, +1412507, -370978, 947040, -17770428, -1202591, -4377109, -475131, -3080029, -9860171, -556735, +-2545842, -4251481, -9232032, -1281511, 6804839, -4774930, 4527433, -893890, 6323266, -2206540, +5166309, -1764158, -4818954, -1439888, 683437, -2281165, -4317516, -3686156, -4241817, 51003, +-3857954, 1374926, 621697, 321586, 2043331, -3086471, -3890167, 5759551, -386010, 1670205, +204011, -4621385, -2758980, -3267396, 296890, -2346126, 4198331, 4110821, 816581, -5606006, +-1704028, 10313290, 2691871, -4333622, -3343095, -2164664, -3700114, -1956895, 8165270, 4983236, +-5734855, 3686156, 4851703, 7150047, -1712081, 3024194, -341987, 278636, -2757906, -5569499, +-985695, 4637491, 504122, 8754217, 5968394, 920734, 1976222, 7722351, -5567352, 22699440, +15058692, -4584341, -975494, 133144, -752156, -2520072, 3007014, 7788923, 6369437, 3432216, +-12031277, -5241471, 1336272, 703838, 4836670, -8922258, 1588601, 12090870, 7915625, -1412507, +2658048, -1099512, -4344360, -5629092, 37581, -4817343, -3063386, 1314260, 3452080, -3576634, +-6811818, -3191161, 776315, 5837398, 7964480, -1722282, -9177808, -2016487, -3543885, -9002251, +-950262, -456340, -4679367, 1253057, 1915019, 4933844, -7896834, 2777770, 3302293, 562104, +-7710540, -5616207, 1860258, -8053, 1243930, -1131187, -1356673, -630823, -4671851, 1538672, +1319629, -3233574, 4156455, 5370857, 7152195, 1358820, -381715, 6925098, 11244224, 1209033, +404801, 1166621, 5692443, -450435, 2150168, 9822590, 11489574, 656056, 2062658, 3273839, +5308580, -1867237, 3213709, -2733747, -2421825, -9453760, 3449396, 7028714, -6535330, 5401995, +-2993055, -8278550, 8447127, 5603322, -2099702, 5648419, 9954660, 7612293, -5932961, -2756295, +4736812, 1915555, -1746978, 4296578, 3163780, 5654325, -234613, -2185602, -5262409, -8116415, +-877784, -6726456, 228707, -2104534, 3213173, -5359583, -13239774, 2862596, -3786014, 5879274, +787053, 496069, -4179540, -7408282, -6936372, -609349, -1366873, -5651640, 7129109, 10097468, +9811853, 4138738, -8369281, -854162, 9210557, 722628, -2570538, 4363150, -2181307, -2904472, +-10419054, 4780299, 1821066, 13230110, 5399848, -10057740, 2124398, 2689187, -2065879, -1182190, +2226941, -3447785, -4018479, -5763309, -2011118, -1219771, -10918881, 862215, 918586, 5607617, +-2378875, -4226248, 1502702, 889058, 2098092, 388158, 5325760, 2600603, 3544422, 966368, +-864899, 3689914, 1562294, -10113574, -3650185, -14584098, 223338, -2510945, 1257352, 2881386, +-270046, 7337415, 1326608, 10363756, 754304, -11829414, -258235, -4640176, -2510409, -376883, +-2339147, -437013, -10099079, 2247879, -5162551, 11660836, -12528420, 6766184, -3199751, -10085120, +-2536178, -7075422, -2197950, -2105608, -11541114, 3172370, 2607582, -1958505, -2555506, -691490, +3035468, -8654896, -645319, 8020852, 558346, 11143293, 17347372, 7436736, -17783312, -22417582, +9469866, 4554276, 15053324, -3777961, 6059125, 1287417, 5311801, 10627360, 9529996, -20206748, +15076409, 2937758, -2776160, -134755, -9284646, -7365332, 7860327, -1930051, -2634963, 8435853, +-6149857, -6341519, 341450, 8428336, 3467112, -2359011, 245350, -4377109, -614180, 965831, +4410932, 538482, -10349261, -9962177, 2377265, -992137, 2556043, -617402, 4229469, 8468602, +15058155, 232465, 9385577, -1790465, 2732136, 6926172, -6109054, 12776991, -1628330, -7008850, +-10594074, -1429687, -8756901, -10571525, -2953327, 5871757, -3309272, -7984881, 4526359, 7000797, +9893457, 13385266, -10056129, 4789426, -2666101, -8470749, 3723200, -9514426, -1742146, -16101832, +7060926, -3957812, 2740726, -1828046, 2899103, -17098802, -18242874, -9661529, -4160213, 11914776, +-9768903, 21319144, -6725382, 4137127, -1695975, -2069101, 16455630, 1712618, 5772436, 5233955, +1102733, 10719701, 675921, -13293461, 6046777, 2726767, 5743445, 81604, -11075110, 15562814, +7327214, 6816650, -2103997, -3782256, 1211718, -361851, -8927626, 6052146, 3022583, -3856344, +5267778, 10168872, -447213, 4279935, 8705362, -9514963, 1758789, -2725694, 3521873, -18533858, +5183489, 9990631, -3934190, 3189550, 8588324, 5686537, -550830, 3788698, -10341208, 3200288, +-6375879, 1148904, 2091649, 2241436, -5106179, 19158238, -4025458, -2790655, -5026186, -15390478, +-7253663, -9164386, -12157442, -1511829, 15119895, 18086108, -2466922, 6045167, 6195491, -13886703, +-5493263, 12450036, 8934606, -5164698, -4944581, -13743358, -5585605, -4886062, -7923141, -7603166, +1040456, -13785771, 4165582, -1719598, -5218922, 3245385, 1116155, -7311108, -10422812, -11561515, +-4318590, -11287711, -4378719, -4607963, 481573, -10706280, 2711198, 4463545, 843961, -12177306, +4156455, -15086073, 5060009, 8464307, 657130, 13156559, 838592, -3823595, -1926293, 8931921, +-2688650, 12278238, 4846334, -4071092, -3624953, 2300492, -5629629, -3169149, 1059783, 11703249, +245350, 6302865, 4120484, 1289027, 8764955, -3351685, -6672232, 3570192, -4538707, -2148021, +-13659607, 8476118, -4246112, -3918621, -2058363, -15562277, 19979114, 5340255, -1313723, 8716099, +3723200, 4469987, -7381975, -12252468, -13320841, -6531035, 1937030, -14158360, 6701760, 10969883, +-15014669, -5654325, 7460895, -7374459, 5550172, 17980344, 2372970, -4125316, -3109020, 12329240, +28142236, 31091268, 8449811, 19586662, -13623099, -12261058, -3755949, -1148904, 376883, 5056787, +8965744, 18202608, 4998805, 16910896, 1073205, 5677410, 1689533, -3646964, 6647536, 620086, +2224793, 2065342, -8917426, -194884, -5110474, -8068633, -6248104, 975494, 184147, -10961293, +-5563594, 15713675, 10013179, 8580271, 11893301, -6947110, -613643, -20754356, 310311, 19426674, +-4315369, -2818572, 1538135, -1107028, 13834090, -260382, -3112241, 12101607, -14052059, -20739324, +-9418326, 2861522, -12335683, 9549860, 11356430, -16095927, -7157563, 1119376, -1026497, -23470922, +-16305306, 8875550, 2645163, -760746, 7110855, -9558987, -7362648, -13921063, 2719788, 6154152, +275415, 2512019, -11202348, -14900315, 12257300, -19990388, -28567974, -19876572, 13652090, -2530810, +25141128, -5823976, 20630876, -16503949, 125628, 7961796, -2057289, 1321776, 2084670, -896574, +-13071733, 4877472, 4388920, 5986111, 5936719, -3463891, 10041097, -9030706, -7387881, -4962835, +14277008, -7633231, -3124052, 1789391, -704375, -7131257, 6140193, -8000987, -10521059, -18559090, +1331440, 4020090, -13363791, -5501853, 5821828, -2063195, 2913062, 1613297, 14635101, 1647120, +10905459, 5677947, 54761, 9732396, 1626719, 3824132, -17522392, 18303540, 5789616, 14531485, +-8819178, 4447439, -9608916, 15133854, 10414222, 18332532, 2355790, -3622805, -13091060, 226560, +1853278, -9699647, 14992120, 3658239, 2110977, 17799418, 3528853, -3551938, -6580427, 938450, +10126996, 13180181, -3392487, 12432857, 13180718, -30792232, -1169842, 15824807, -9942312, -3508452, +12048994, -12826383, -25581898, 5109401, 4756140, 4003983, -2990371, -15300284, 4289599, 4405026, +1612760, 8587787, -26961120, 12710419, -5850283, 6699612, -15080167, 12903155, -19194746, -12436615, +8323110, -4949950, -1627793, -14780593, 12540231, 15863462, 715112, 2066953, -6361384, 23709294, +6632503, 6763500, -3352222, -19768660, -3409130, 11622718, -1049046, 17197586, 1174137, -5516886, +5115306, -596464, 11613055, -19379430, -1218697, -14685567, 17831630, -5492727, 6874095, 253940, +789737, -17357574, -4913980, 16710107, 6603512, 2260764, -3199751, 1348620, 3707094, -22294638, +-22280680, 26563836, -9516574, -26776974, 13250511, 14222784, -20338818, -28078886, -18256296, -18128520, +13223131, -18006650, -8124468, -18753974, -366146, 2415382, -22310208, 2608656, -10243497, 31649614, +3032247, -30647812, -5462125, 13194676, 10088878, 5883032, 16221018, 13867913, -19931870, -6490233, +-6856916, 18941342, -5623186, 22312892, 1381369, -14453639, -9302899, -21804476, -22462142, 488553, +4237522, -4811974, -10849087, -6118718, 3092913, 2949032, 9701257, -12496207, 7446937, -14514305, +-14650133, 2435783, -1918240, -4983236, -15322833, -16618839, -6147709, -5507759, 24468428, 1613834, +9264244, 12438762, 1174137, 28449864, 13247290, -9866077, 3058017, 14668387, -4230006, 18736794, +-3382287, 2456721, 2834142, -25214680, -24581708, 4347581, 19701552, 1162326, -4287451, -27362700, +3139621, 11437498, 7293392, -7210177, -6942815, -1321776, -12800613, -14295799, 28685550, -9826885, +-8713415, -2804077, -6115497, -19950660, 1820529, 11505144, -30465276, -1903744, 9729175, 8827232, +-9411347, 5874979, -16780438, 46708, -3209951, 4355634, -14834280, 8821863, -26308286, 3200288, +2337536, 14410689, 16443282, 6013491, -8774618, 10217190, -1731409, 11569031, -12407624, 835908, +18254148, 11690364, -5974300, 1278827, 2244121, -5083631, 9895068, -4551055, -7674570, -12167105, +9649718, -20827370, 14875082, 1504312, -18593988, 18058726, 20992190, 16091632, 8734890, -10710575, +25169582, 1138166, 12395276, -15538655, -9241696, -15004468, 7190312, 3456912, 11430519, -20488068, +5450851, 11912629, -31876710, -599685, -7198902, 20442970, 19888920, 9058086, 3342022, 12414066, +-5589900, -3727495, 3338800, 23400056, 5471252, 11658689, -33908228, 15472083, -18842558, 25490094, +-2291365, 9638980, 19915226, -21674016, 38063072, 26607860, 20701742, -9828496, 5759015, 25343528, +-6267431, -8934606, -5823976, -2002529, -19371914, 4515085, -10225780, -24452322, 23172422, 6869800, +6482717, 2108292, 5479305, 8093329, 24335284, 4237522, -14972793, -2177549, -15557445, 2171106, +2355790, -28515898, -1093069, 13980655, 1158031, -3035468, -8354785, 28165858, 6073621, 11302206, +6474663, -17032766, -11278584, -9925669, 18200998, 9388262, -3647501, 9614284, -1634772, -21451214, +19333796, 754841, 22162568, 750009, 2267743, -1383516, -29446296, 2048163, 794032, 1120987, +18348638, -9592809, 28904056, -46422692, -7585986, 29587492, -12862890, 7067369, -14155138, -27970438, +16349330, 7134478, -36538360, -41454488, -4886599, -18967650, 1505386, 12940736, -18207440, 5775658, +-27207544, 12054899, -15611669, -70148624, -5947456, 43929464, -20074678, -7371775, 41961832, -9597641, +801548, 52607980, -14053670, 12017855, 3213709, -7141994, 40205724, -33340758, -6133750, -556198, +-7779260, -6475737, -8817568, -570694, 11675869, -7465727, -24924768, 425739, -1672353, 6874632, +6127308, 1574642, 16524350, -715112, 6267431, -5190468, -25192668, 15709380, -5395016, -23538032, +-1832877, 13242458, 38428148, 20586852, 31700616, 360240, 5368172, 16127602, 547071, -2543158, +28861644, -2306398, -16488379, 37307696, 2481954, 5947456, -4264366, -6216965, 16676284, -959925, +-18311594, -15302968, -9598715, -3970161, 24596740, -23474144, -9517648, 470299, 25756382, 17813914, +-38075420, -21041044, 32217086, -7220377, -28094992, -1857037, 2311766, 9216463, 34011848, 27172648, +-15972983, 3774740, -2285460, -1275068, 1440425, -20118700, 29779692, -9822053, -16610786, 5053566, +-11414412, 14453102, 3183108, 21189222, -5176510, -22925462, -17602386, 15731928, -6430640, 20927766, +-4154844, 13074954, -12832825, -12799539, -5113696, 237834, -16550120, 3175592, 2881386, -1027034, +19947976, -1521492, 7963943, -13817447, 10896869, -21040508, 23137526, -20272782, 14579803, 5145908, +19812148, -30982820, 3071439, 1291175, -6908992, -22697828, -34303904, -7282654, -28925530, -13129715, +-22676890, -12761422, -43210592, -15305116, 22923852, 24921010, 16585553, 13963476, -12348, 15167140, +-29883308, -9097278, 7401840, 17032766, -52539260, 15430207, 8004209, -27465242, 10625212, 10314901, +-20295332, -15320148, 23207318, 2938831, 12171400, -6339372, 15152108, -4990215, -2901787, 12185896, +5438503, 3925600, -191663, -8394514, -14798847, -8811662, 21621940, -8014946, -19979114, 32608466, +19532974, 2374580, 14173392, 4196720, -17807472, -50371376, 19593104, -1968169, -28072444, 22408454, +-3479997, -36868000, -31875100, -16342887, 22727894, 9220221, 23507966, 30882426, 7910793, -25770878, +6452115, 8607114, -33909840, -5734318, 16344498, -10631118, -37089728, -27255326, -44952740, -27954332, +-8524436, 26341034, 36610300, 18096844, -5404680, 26120918, -9848360, -67065916, -55911884, 10466835, +-30339648, -32535988, 40442484, 4556961, -65672196, -48361332, 9644349, 754841, 2230699, 19838990, +41181756, 48706540, 48919140, -15892453, 17626546, -20444044, 12964896, -35433, 7921531, -24161338, +2857764, -20703890, -16892106, -404801, -40331892, 479426, -16528645, 4104378, 13284871, -791885, +15245523, -20776904, 32014150, -15642808, 659278, 20963736, -18841484, 7523172, 16666621, 18632642, +4032974, 6586333, 6026913, -29929480, -15167140, -4956929, 5800354, 4481262, -2972117, 19647328, +-4868883, -286689, -2231773, -8500814, 8545374, 4010426, -21890912, 7061463, -17227114, 5373004, +-43676060, -1939715, 636192, 225486, 20361366, -7080254, -14667850, -6914361, 18971944, 518080, +-41866804, 62067108, -3295314, -10931766, 15515569, -1714766, -6829535, -10346039, -9958419, -11736535, +44418552, -14491220, -22058952, 23231478, 4313758, -29830696, -5899675, -37685116, -59234040, -54272816, +120955944, 102823128, 113995952, 262840192, 66394824, -65113852, 18334142, -209863376, -225466992, -55032488, +-142878000, -108393704, 63241244, -34746284, 10564009, 166465952, 79409648, 123025040, 234027392, 157464768, +37460704, 33223182, -74300784, -217947584, -169887968, -128355632, -260513920, -105530568, 1046898, -47619376, +-25778930, 126701536, 28554554, 14376329, 154111472, 16492138, 31809064, 223884832, 160408432, 101797704, +207801248, 102584224, -45685032, -8369281, -76588928, -340910880, -301647360, -242662960, -377166304, -286881280, +-109767552, -140354704, 18412524, 246475296, 215295968, 305671744, 384367360, 285343136, 215829088, 212392576, +107342504, -56225952, -99315752, -199178576, -282984672, -275589248, -247752512, -277487648, -290987808, -237598128, +-154757328, -120460944, -16268799, 156988032, 192766192, 123452392, 10576894, 0, 0, 0, +0, 0, 0, }, { -3461744, --7253126, -2795487, -4082367, 81068, 1404454, 4320737, -2083059, 347892, -3197603, -2488397, --3400540, 1675037, -3912178, 884763, -3293703, 6473053, -366146, 511101, -306016, -4567161, -2915209, 6880001, 111669, -1712081, 355409, -1312649, 2218351, -814433, -1169842, -1206886, --8152922, -2587718, 659278, -1212791, 2113124, -2427730, 1825361, -496606, 2205466, -1386201, -2369211, 446140, 3339874, 1639067, -1064078, 1348620, 854162, -1751810, -3197066, -1368484, --555125, 1919850, 805306, 178778, -592169, 3748970, 4085588, -4485020, -1616518, -4090956, -2371896, -314069, -2329483, -1136556, -1515050, -1649268, -221728, -2482491, 2707977, -3387119, --1540283, 298500, 1855426, 684510, 1488206, -570157, 9018894, -1265405, 789737, 6932614, --833761, -429497, -1981591, 7559680, 508417, 3614215, 2319282, 2136746, -3117073, 1464584, --4859219, -665720, 3833795, 631897, 2252710, 3433290, -6029597, -4377109, 1454920, -458488, -4497905, 2570538, -232465, -2662880, -1574642, -3260417, -505196, -595927, -484258, 663036, -1144609, -2881923, 4463545, -1240172, -747861, 1324461, -5791227, -1546188, 2419677, 647466, -5589363, -260919, -496606, 856846, 293132, 2098092, 3816079, 4715337, -403727, -795106, --38118, -3161096, -3780645, 1702418, 3095061, -2603824, -2360085, -1818382, 3957276, 2082522, --777389, 264141, -5114233, -1818382, 2294050, 1662152, 3347390, -5746666, 911070, 1434519, --1366337, 3074123, 11439645, 3419868, -2871186, 6155225, -3083787, 6402723, -2247342, -2589865, -2956548, 6011881, -358630, -2619930, 1367947, 1455994, -406411, -7980586, 1764158, 2662880, -503048, 5396627, 6767795, 3976066, 6668474, 4899484, 4013647, -835371, 4479651, 2498597, --3619047, 1592359, 2013803, -4213900, -5824513, -585189, 2153389, 388158, -2154463, -2460480, --2774549, -1025960, 3011846, 6497212, 5173825, 2297808, 3970697, -6165426, 368830, -1323924, -34897, -7113540, 2748779, -372052, -1757179, 60130, -2006824, -3328063, -2554969, 2974802, -679142, 2371896, -2640868, 5455682, 1408212, -5509906, 2563022, 1126892, 1802276, 3605625, -1185411, 6294812, -1630477, 1009317, -6591701, 1634772, 1065689, 383863, 639950, 877784, --2656437, -2072859, -1066226, 2462090, -4285304, 1462973, -8174397, 1775969, 1191317, -618475, -5332739, 657130, -922344, 807454, 2685428, -4526359, 394600, 1783485, 2789045, -6563247, --3774740, -2283849, 2224256, 1341640, -2450816, -6628209, 1388348, -6589017, -717796, 3060701, --1574106, 2411624, -1488206, 4980552, 6604586, 3978750, -3866544, 1007707, 4933307, 3574487, --3529926, 3067144, 513249, -5022965, 1596117, 7764764, 3172370, 2857764, 7953743, 1129040, --3428458, -5912023, -573378, -3126736, -4548907, -1578937, 4238596, -3850438, 1204202, -2088428, --2704219, 5801427, -993748, 1429150, 3911642, 6345278, -2859375, -4606353, 6389838, 5905043, -2942590, 1200443, -4434017, 1750736, 4708895, -3824132, -15714212, -5590437, -2506114, 8666707, --3334505, -1144609, -5129802, -4120484, -805843, -11096585, 6238977, 2250026, -379031, -3981435, -6159520, -1562831, 3112241, -2319819, 1960116, 4165045, -4970351, 738734, 5446019, 3313567, -2195265, 6078453, 5229123, -3026878, -4163434, -4951024, -60130, -6579353, 1673427, -8764955, --1685238, 6970195, 3566434, -1979443, -632971, -6479495, 3178276, -2564096, 6101538, -3093450, --6051072, -882616, -2413235, -4660040, 2104534, -736050, -3062849, -2837363, -10737418, 1964411, --3074123, -7590818, -1929514, 5518496, 2807835, -3621731, 3735011, 5046050, 4606353, 2238752, --5226975, -236760, -835371, 4618164, -3455838, -685047, 2587181, 2978023, -5433671, -6253473, --12175695, -1049046, -6029597, -13441100, -5570036, -2296734, -4160750, 4755066, 5900748, 5827734, --11477226, -8333847, 3121368, 13943074, 8027294, 121333, 1826972, 4060892, -5104569, 3400540, --4742181, 3445101, 4769025, 876173, 3800509, 1344862, -411243, 2156611, 1078037, -3593277, --4822175, 6587943, 2497524, -4628364, 4514011, -2480344, -602906, 11238856, -5439039, 6402186, -12338904, 5174362, -823560, 567473, -4599910, 5908265, -6050535, -3171833, -10094784, 1961726, -7624104, -119185, -7158100, -2450816, -10105521, -5026723, -1922535, -14206141, -7814156, -1343788, -1480690, -6181532, 3150896, -1584843, -4930623, 5420786, 15805480, 1556389, 8096550, 5564130, -4815732, -4858145, 2227478, -8323647, 1087164, 2723546, 2149094, -2858301, 376347, 20920248, -13687524, -7587060, 3000035, 6527277, -2543158, 3602941, -1057099, 6057515, 3455301, 1722282, -6037114, 2945274, 3113851, -2129230, -13940927, 6460705, -2170569, -3571802, 11345693, 6524592, -4075387, 4765266, 4036196, 2462090, -1942399, 1273458, 676994, -4013110, 3156801, 4413616, --7788387, 1134408, -4968204, 3421478, 4641249, -12934294, -1074, -15324443, 455803, 1418413, -1459215, 3609920, 10351408, -1712081, -5080947, -3066070, -2646774, -4417374, 3099893, 2631204, -1153199, -2190970, -1663763, 9315784, -3119757, -2558190, -5242545, 8163659, -1191317, 6735046, --3337727, 7210177, -7464653, -16655883, -4630512, 258772, 3328600, 4612795, -5285494, -4822175, -2260764, 589484, -2419140, -4996121, 10095858, -4515085, 9780714, -3651259, -6744710, -168041, -894427, -9296457, -7530152, -2224793, 2401961, -1286343, 12073690, 7459822, 151934, 11796665, -4039417, 3523484, -10198400, 9496173, -1943473, -2266669, -8638790, -3730716, 7307350, 7488276, --2309619, 4988068, -10361609, -1358283, 6620155, 5203890, -4006668, -7155416, -4263829, -4404489, --5781026, -4583804, 893890, -7539815, -951335, 10519449, -5267241, 1243930, -617402, -2384244, -3866008, -1649268, 6629282, 26307, 9442486, -2467996, -6300180, 3500935, -5016522, -4763656, --5009006, -13717052, 1404454, 5670431, 7994545, 5874979, 10581189, -1116155, -4248797, 6183143, --7707319, 1750736, 1153199, -1172526, 7009387, 6455336, -1493038, -8332237, 2030983, -4372814, --7152731, -7597797, 2285996, -11780558, -7352447, 1567663, -7179038, -17571784, 13259101, 1074, --1167694, 2015950, 794569, -11514270, 7991861, -12014097, 827318, 5945846, -1889249, 2367064, -1721745, -12940200, -4727149, -5586142, -1489280, 3045669, -4616553, -2435783, -795643, -446140, -958851, 5885179, 2716567, 12271258, -4582730, 16720308, -1398549, 794569, -10958072, -1235340, -7708393, -1222992, -16718160, 7011534, 7407745, -4536559, 3802120, -5784784, 11164767, 6685654, --573378, -298500, -7574712, -4297115, -8266202, 7884486, 7155953, 3636227, 591095, 3760244, --6717866, -16618839, -6473590, 6331856, 2349347, -12239046, 53687, 1846836, 1457068, -5709622, -4064113, 9258876, 4347581, 427349, 3348464, 6270653, -3750580, 8901857, -148176, -18527416, -9816148, -2275259, 3407520, -5287642, -3376381, 8199093, -9503689, 9178345, -5891085, -10421738, -4481799, -5502390, 22410066, 3630321, -8342974, -10830297, -2377801, -13496935, -6709276, -14562623, --1283658, 10096931, -7433515, 6301791, 9540196, -9052180, -418222, -10606959, 5592585, 2307471, --873489, 6529424, -7221988, -9521942, -8682276, 708670, 1303523, 8268886, -12247636, 8462159, -1078037, -17180406, -10087804, -13857175, -6324876, 5392869, -5318244, -4583804, -27203250, -495532, --6491306, -2391223, -17724794, -5910412, -2962991, 1322850, 13160317, 12645457, 9950365, 6119255, -12597139, -14500346, 10407243, 1446330, 4374424, 3616899, -11201812, 15800648, 9002788, 6016713, --7983808, -9882720, -7715909, 8644695, 364535, -1005559, 7307350, 13036299, 14505178, 5672578, -10198937, 7928510, 5022965, -2814814, 1244467, -4105452, 501974, -1546725, -8492224, 10827613, -17654464, 6771553, -4624606, 7639136, 7611756, -508417, 4785131, -8455717, -15751256, -10788421, --7088307, 4396436, -1775969, -8517457, 6361384, -3062849, -7289097, -298500, 13033615, 6291590, -9693741, 3143379, 7174206, 7610682, -1643362, 6958384, -2636036, -8362838, 3596498, -9648107, -3682398, 3597572, -13775571, -9206799, 5863704, 14284524, -7322383, 9928891, 14197551, -11708618, -648540, 12718472, 1561758, -4723927, -889595, -6569153, -11271605, 187368, -3265249, -5902896, -8121783, 603443, -12868259, 17160542, -6661495, 14157823, -15819975, -10267119, 8245264, -8717173, -5776194, -4632122, -1686312, 1163936, -12829604, 8497593, -6050535, -12095702, 17661980, 10380399, --14010183, 10094247, 7438884, 3254512, 14668924, -31301722, 1306744, 13980119, 3495567, 1960116, -12938589, 1307818, 6568616, -17824652, -3638911, 5786395, -933082, -8580808, 2419677, 8172249, -2371359, 4224637, 8613020, 8905615, 11826729, 10995116, -5430450, -3584150, 8757975, -5631239, -5667746, -10910291, -7790534, -14143327, -8307004, 8727910, 1190780, -2822331, 10407243, -13816373, --21226802, -30902826, 7889855, 11417634, 6549289, 7194070, -9491341, 5537824, -6488085, 12414603, -29436096, -4416837, -9143985, -13281649, -6997039, 12426951, -10905459, 7371775, 8679592, 2506114, --3554622, -8559870, -6289443, 5159330, -26021596, -19267224, -2484639, 4508642, -12589086, 2682207, -48217988, 26272852, 17768816, -5040681, -4240744, -1247151, -3454228, -5559835, -6790880, -9566503, --14688251, -2684, -506269, 3044058, 7222525, 11993159, 19743428, -3266323, -24424406, -10470057, -21959094, -4058744, 8548596, -3502546, 144955, 13538811, 5435281, 10094247, 6854768, -1203665, --182536, -968515, 7653632, 8430484, -3146064, -14854681, 18825378, 12394202, 9764608, 2632815, -5142150, -8311299, -13596256, 18347564, 11026792, 4073240, -8624294, -10799158, -13655849, -9476308, --2260227, -9638443, 4989679, -18758270, 2582886, 12125230, -8473970, 3587908, 795643, 835908, --20382304, 6053757, -8891119, 13610214, -32899450, 4318053, -8961986, -12377559, 2059437, -8110509, -5780489, 4788352, -22626962, -1400696, 12586939, 813359, -29348048, -14916958, 2062658, -25587804, -5800354, 18772228, -9067750, 22798760, 26514980, 3511673, 13209172, 16538308, 7281044, -15604153, -10201084, 12661027, -681289, 3311957, 8771934, 7962870, 18719614, 3361886, -7285339, 12149926, -4256313, -1694365, 237834, 8211441, -11001559, -4780299, -4664335, 6893960, 3463891, -15280420, -4567161, 13133473, 350577, 15795279, -14723685, -27619860, 2251100, 12724914, 18927920, 17763984, -9094593, 8567923, 6726993, -18652506, -5454609, -512175, 14294725, 22735410, -7634841, 5144297, --8114267, 5636608, 3741990, 14009110, 21361556, -7785165, -9026411, -1447404, 11883638, 15312095, -21203716, 966368, -22103512, -20765094, -2928094, 3281892, 772557, -9158481, 1203665, -24954296, --14977625, -14218489, -13561896, 8924942, 12704513, -27642410, 2850785, -5721970, 15404437, -8242042, --784905, 4462471, 11859478, -15394773, -25141128, -4552666, -9469866, 674310, -10949482, 6825240, -7436199, 715112, -13118441, 8741869, 1661079, 23289998, -2851858, 12861280, -9801652, 24143622, -7854422, 15201500, 11040750, 16610249, 25025700, -5460514, 10435160, -16324634, 18877992, 17663590, -882079, 6129455, 18656264, -10465762, -9265855, -1090385, 36348844, 6408628, -8135205, 18117246, -3964255, 14165876, 20875152, 6547678, 623307, 2875481, 5010080, 13766444, -2238215, 14790257, --7006166, 14592688, -4820027, 31292058, -1666447, 27284316, -20331302, -23575612, 38542500, -27572616, --12498892, 3541201, -5835250, -15781857, 20346870, 831076, -18097918, -7385197, -6090264, -29693794, -5254893, -24707874, -13632226, 2655901, -28371480, -19357418, -19260244, -23113904, 27395986, -2588255, -2392297, 5699422, -6079526, -35038880, -23264228, -26274462, -47917876, 1404454, 6922414, 19085224, -13729937, 5108864, 11862163, 5039071, 3492345, -17954574, -21721798, -15630997, 18855444, -4782983, --12335146, -8009041, 18386218, -23736136, -12654584, -24392730, -9880572, -4712116, -19934016, 4753455, --16481937, 15567109, 13738527, -6073621, 13487271, -15983184, -25553982, 7949985, 15628312, -17045652, --29584272, 18781356, -1721745, 12381854, 13812615, -46935940, -30427158, -4103305, -7122667, 23189602, --16336982, -23465016, -5527086, 4893579, 759672, -8430484, -10819023, 30542586, -19648938, -37345816, --42740292, 20929376, -9686762, -43407088, 11859478, 3286187, -7861401, -4075387, 2863670, -25913686, --12169790, 13683229, 19053548, 42781632, 5324686, 22796612, 9000641, 11431592, -11184632, -2237678, --9846749, -22163104, -28712930, -37116032, -15621333, -33437394, -15319075, -17280264, -8662412, 18773838, -2420751, 12854837, 19366544, 358630, 12307229, 4480725, -1571421, -322659, -5237713, -28639916, -7975755, -3583613, -35033512, -20185272, 6816650, -21010444, -10755672, 7304666, 20702280, 28210956, -6978785, -6442451, 853625, 18524730, 7043747, 3288334, -3892851, -57513908, -14881525, 11482058, -10767483, 4517232, -5924371, -20504710, 9317395, -18664854, -16942036, -5238787, -820876, -11657615, --34752728, 13619878, -8611946, 34632468, 9325448, 9291088, 9225053, 23314156, 56604984, -4525285, --4307852, -9814000, -21225192, 29459718, -2090039, 3503620, -32498406, -14009646, 42769820, -29367912, --5268851, -25762824, -67157184, -12178380, 23302346, 15165530, 5396090, 2651606, -1740536, 36397164, --39843336, -2470680, -10093710, -30414274, -21757230, -6007586, 9827959, 4458176, 11210938, 22517440, -18077518, -20307142, -16260209, 47241420, 42472932, -5899675, 6487011, -8123931, 14955076, -2886755, -30704184, 7854422, 17050484, 1586454, 3809099, -54334020, 22874996, -5063230, -28222766, -18007724, -4351876, -10942503, -28190554, 25445534, -3728032, -24096914, -3173981, -29528, 26364656, 25017648, -22544820, 4969814, 26132192, 23431730, -19284940, -25638270, -13312251, -7378217, 26728118, 30806190, -6522445, 8167417, 33819108, 15131170, -31024696, 17287244, 8638253, -14576582, 1690607, 50896972, -28792924, -18375480, -27845884, -43876312, 8343511, -7981123, -14577656, -17414482, 9413495, -10341744, --5541582, 29758218, -9511205, -1051193, -23281944, 2474438, 14245333, -31453656, -20601884, -18549426, --9773735, 12329777, -43568684, -23382338, -62718332, 11561515, -898722, -15138149, -7201050, -8476655, -13125420, 20810190, -22363358, 1621887, -7901129, -6696391, -39129836, 9416179, 29843580, 8783208, -22589380, 29326036, 25451440, -33272038, -10441065, -9370008, -15952045, 29765734, -29291140, -15916612, -1197759, 42861088, 9665824, -13532905, 42391864, -22477174, -21865678, 51480016, 48547088, 5984500, -12809740, -12225624, -44884556, -12457553, 46723876, -20536386, 42601780, -13099650, -64262912, -15097884, --29098940, 37459096, 2270427, 10918881, 33862060, -946503, 28398860, 12467216, 22647362, 2259690, --42067056, 25129316, 27910308, -33795488, 18442590, 453656, -12785581, -14040785, -49936512, -21181704, -17169132, 3893388, 45312980, -35787280, -20883204, 9390409, -5193153, 30070140, -40714680, 951335, -4082367, -33360622, 34261492, 19791210, 10466298, -15068893, 23529442, -26751740, 15447924, 13043816, -7349226, -848256, -15371151, 7609072, 31405874, -15209553, -5727876, 7335268, -24143622, 26188564, -1310502, 7825431, -33101850, 19383188, 4857608, 7484518, -78101296, 12142946, -21819508, 38103340, -30969936, 33666640, 17103096, -62514860, -10573136, 15076946, 2044941, 5597416, 45717780, -5405753, --26371100, -31278100, 2041720, -35057672, -31018254, -27220966, 14171781, -52203716, 37973416, 71612136, --18625126, -9939091, -56607132, -16937204, -49818400, 12492449, -21022254, -16729434, 17043504, -13977971, --16551730, 12861280, -22219476, -2854543, -25527674, 37637336, 2188823, -29903172, -6913824, -708133, --1350230, 7724499, -17532056, -14539538, 5811091, 6537477, 6118718, 2515240, 16355235, -18457622, --5036386, -40751724, 16207059, 2423435, -10492605, 27258010, 17164836, -12930536, 45221172, 8447664, --25851408, 19503446, 5170604, 12291660, 30409442, -3852586, -5461588, 3357591, 25353728, 12301323, -2146947, -3508452, 27015344, -3300682, -27885612, -6104759, 7065758, 22356916, -8714489, 39236136, -45935748, -28957744, 24749212, 49088792, -11856257, 75017512, 44282724, -19457812, -15672873, -28876138, --30750892, -18427020, 11524471, -5608154, -4388383, -668941, -3732864, -52153252, -19607062, -50984484, -12059194, 67464808, 16966732, -23203560, 2021319, -30672508, -4745939, 11765526, -13651554, -15915001, --19202262, -6255620, 6582575, -3286724, -6538551, 9331353, 4350802, 12372190, -12396886, -6554120, -8049306, -2151779, 1033477, -16399796, 11294153, -19332184, 9286256, 7721815, -4828617, 134755, -308164, -10715407, 1555852, 3514894, -9810779, 18134426, -9535901, 5295695, -289373, 1813013, -8215736, -7118372, -13390634, -2608119, 19285476, -13214541, 9281424, -25309168, -16212428, 6527814, --6091338, 1090922, -2069101, -14504105, 16767552, 15273441, 962073, -10053445, -850940, -5355288, -3257196, -7037304, -521302, -6571837, 6207839, -238371, 1481227, 23889682, -18442590, 903554, -3132105, 4028143, -4008278, 3568581, -8610336, 4117800, -7173669, -31237298, -48108464, 33758980, -150781264, 67173288, 68679752, 325881, -141077872, -100767984, -53613004, -109789568, 52883932, 66735200, -33494840, 143756320, 63494648, -5431523, 46614892, -91746408, -118776784, -66561256, -83453896, -17039746, -63085552, 66214436, 26592826, 110709224, 53745612, -6866579, 52058224, -47881368, -84322560, -47101832, --63642288, -97799624, 35474820, -61203, -36228588, 106965624, 63090384, 36785860, 107843944, 27092654, --56047176, 54349588, -79554608, -88912264, -19219442, -93557808, -96620120, 38710540, -16697222, 23999204, -119894552, 83562880, 85245976, 82080584, 9014063, -44677324, -53461068, -87240984, -116417240, -59766080, --33745560, -23053774, 43366820, 69708392, 63908576, 92433064, 82012400, -11800960, -15156403, -13768591, --85184232, -23875186, -41391136, -57782880, 14991583, 15187004, -727460, 0, 0, 0, -0, 0, 0, }, +-7253126, -2795487, -4082367, 81068, 1404454, 4320737, -2083059, 347892, -3197603, -2488397, +-3400540, 1675037, -3912178, 884763, -3293703, 6473053, -366146, 511101, -306016, -4567161, +2915209, 6880001, 111669, -1712081, 355409, -1312649, 2218351, -814433, -1169842, -1206886, +-8152922, -2587718, 659278, -1212791, 2113124, -2427730, 1825361, -496606, 2205466, -1386201, +2369211, 446140, 3339874, 1639067, -1064078, 1348620, 854162, -1751810, -3197066, -1368484, +-555125, 1919850, 805306, 178778, -592169, 3748970, 4085588, -4485020, -1616518, -4090956, +2371896, -314069, -2329483, -1136556, -1515050, -1649268, -221728, -2482491, 2707977, -3387119, +-1540283, 298500, 1855426, 684510, 1488206, -570157, 9018894, -1265405, 789737, 6932614, +-833761, -429497, -1981591, 7559680, 508417, 3614215, 2319282, 2136746, -3117073, 1464584, +-4859219, -665720, 3833795, 631897, 2252710, 3433290, -6029597, -4377109, 1454920, -458488, +4497905, 2570538, -232465, -2662880, -1574642, -3260417, -505196, -595927, -484258, 663036, +1144609, -2881923, 4463545, -1240172, -747861, 1324461, -5791227, -1546188, 2419677, 647466, +5589363, -260919, -496606, 856846, 293132, 2098092, 3816079, 4715337, -403727, -795106, +-38118, -3161096, -3780645, 1702418, 3095061, -2603824, -2360085, -1818382, 3957276, 2082522, +-777389, 264141, -5114233, -1818382, 2294050, 1662152, 3347390, -5746666, 911070, 1434519, +-1366337, 3074123, 11439645, 3419868, -2871186, 6155225, -3083787, 6402723, -2247342, -2589865, +2956548, 6011881, -358630, -2619930, 1367947, 1455994, -406411, -7980586, 1764158, 2662880, +503048, 5396627, 6767795, 3976066, 6668474, 4899484, 4013647, -835371, 4479651, 2498597, +-3619047, 1592359, 2013803, -4213900, -5824513, -585189, 2153389, 388158, -2154463, -2460480, +-2774549, -1025960, 3011846, 6497212, 5173825, 2297808, 3970697, -6165426, 368830, -1323924, +34897, -7113540, 2748779, -372052, -1757179, 60130, -2006824, -3328063, -2554969, 2974802, +679142, 2371896, -2640868, 5455682, 1408212, -5509906, 2563022, 1126892, 1802276, 3605625, +1185411, 6294812, -1630477, 1009317, -6591701, 1634772, 1065689, 383863, 639950, 877784, +-2656437, -2072859, -1066226, 2462090, -4285304, 1462973, -8174397, 1775969, 1191317, -618475, +5332739, 657130, -922344, 807454, 2685428, -4526359, 394600, 1783485, 2789045, -6563247, +-3774740, -2283849, 2224256, 1341640, -2450816, -6628209, 1388348, -6589017, -717796, 3060701, +-1574106, 2411624, -1488206, 4980552, 6604586, 3978750, -3866544, 1007707, 4933307, 3574487, +-3529926, 3067144, 513249, -5022965, 1596117, 7764764, 3172370, 2857764, 7953743, 1129040, +-3428458, -5912023, -573378, -3126736, -4548907, -1578937, 4238596, -3850438, 1204202, -2088428, +-2704219, 5801427, -993748, 1429150, 3911642, 6345278, -2859375, -4606353, 6389838, 5905043, +2942590, 1200443, -4434017, 1750736, 4708895, -3824132, -15714212, -5590437, -2506114, 8666707, +-3334505, -1144609, -5129802, -4120484, -805843, -11096585, 6238977, 2250026, -379031, -3981435, +6159520, -1562831, 3112241, -2319819, 1960116, 4165045, -4970351, 738734, 5446019, 3313567, +2195265, 6078453, 5229123, -3026878, -4163434, -4951024, -60130, -6579353, 1673427, -8764955, +-1685238, 6970195, 3566434, -1979443, -632971, -6479495, 3178276, -2564096, 6101538, -3093450, +-6051072, -882616, -2413235, -4660040, 2104534, -736050, -3062849, -2837363, -10737418, 1964411, +-3074123, -7590818, -1929514, 5518496, 2807835, -3621731, 3735011, 5046050, 4606353, 2238752, +-5226975, -236760, -835371, 4618164, -3455838, -685047, 2587181, 2978023, -5433671, -6253473, +-12175695, -1049046, -6029597, -13441100, -5570036, -2296734, -4160750, 4755066, 5900748, 5827734, +-11477226, -8333847, 3121368, 13943074, 8027294, 121333, 1826972, 4060892, -5104569, 3400540, +-4742181, 3445101, 4769025, 876173, 3800509, 1344862, -411243, 2156611, 1078037, -3593277, +-4822175, 6587943, 2497524, -4628364, 4514011, -2480344, -602906, 11238856, -5439039, 6402186, +12338904, 5174362, -823560, 567473, -4599910, 5908265, -6050535, -3171833, -10094784, 1961726, +7624104, -119185, -7158100, -2450816, -10105521, -5026723, -1922535, -14206141, -7814156, -1343788, +1480690, -6181532, 3150896, -1584843, -4930623, 5420786, 15805480, 1556389, 8096550, 5564130, +4815732, -4858145, 2227478, -8323647, 1087164, 2723546, 2149094, -2858301, 376347, 20920248, +13687524, -7587060, 3000035, 6527277, -2543158, 3602941, -1057099, 6057515, 3455301, 1722282, +6037114, 2945274, 3113851, -2129230, -13940927, 6460705, -2170569, -3571802, 11345693, 6524592, +4075387, 4765266, 4036196, 2462090, -1942399, 1273458, 676994, -4013110, 3156801, 4413616, +-7788387, 1134408, -4968204, 3421478, 4641249, -12934294, -1074, -15324443, 455803, 1418413, +1459215, 3609920, 10351408, -1712081, -5080947, -3066070, -2646774, -4417374, 3099893, 2631204, +1153199, -2190970, -1663763, 9315784, -3119757, -2558190, -5242545, 8163659, -1191317, 6735046, +-3337727, 7210177, -7464653, -16655883, -4630512, 258772, 3328600, 4612795, -5285494, -4822175, +2260764, 589484, -2419140, -4996121, 10095858, -4515085, 9780714, -3651259, -6744710, -168041, +894427, -9296457, -7530152, -2224793, 2401961, -1286343, 12073690, 7459822, 151934, 11796665, +4039417, 3523484, -10198400, 9496173, -1943473, -2266669, -8638790, -3730716, 7307350, 7488276, +-2309619, 4988068, -10361609, -1358283, 6620155, 5203890, -4006668, -7155416, -4263829, -4404489, +-5781026, -4583804, 893890, -7539815, -951335, 10519449, -5267241, 1243930, -617402, -2384244, +3866008, -1649268, 6629282, 26307, 9442486, -2467996, -6300180, 3500935, -5016522, -4763656, +-5009006, -13717052, 1404454, 5670431, 7994545, 5874979, 10581189, -1116155, -4248797, 6183143, +-7707319, 1750736, 1153199, -1172526, 7009387, 6455336, -1493038, -8332237, 2030983, -4372814, +-7152731, -7597797, 2285996, -11780558, -7352447, 1567663, -7179038, -17571784, 13259101, 1074, +-1167694, 2015950, 794569, -11514270, 7991861, -12014097, 827318, 5945846, -1889249, 2367064, +1721745, -12940200, -4727149, -5586142, -1489280, 3045669, -4616553, -2435783, -795643, -446140, +958851, 5885179, 2716567, 12271258, -4582730, 16720308, -1398549, 794569, -10958072, -1235340, +7708393, -1222992, -16718160, 7011534, 7407745, -4536559, 3802120, -5784784, 11164767, 6685654, +-573378, -298500, -7574712, -4297115, -8266202, 7884486, 7155953, 3636227, 591095, 3760244, +-6717866, -16618839, -6473590, 6331856, 2349347, -12239046, 53687, 1846836, 1457068, -5709622, +4064113, 9258876, 4347581, 427349, 3348464, 6270653, -3750580, 8901857, -148176, -18527416, +9816148, -2275259, 3407520, -5287642, -3376381, 8199093, -9503689, 9178345, -5891085, -10421738, +4481799, -5502390, 22410066, 3630321, -8342974, -10830297, -2377801, -13496935, -6709276, -14562623, +-1283658, 10096931, -7433515, 6301791, 9540196, -9052180, -418222, -10606959, 5592585, 2307471, +-873489, 6529424, -7221988, -9521942, -8682276, 708670, 1303523, 8268886, -12247636, 8462159, +1078037, -17180406, -10087804, -13857175, -6324876, 5392869, -5318244, -4583804, -27203250, -495532, +-6491306, -2391223, -17724794, -5910412, -2962991, 1322850, 13160317, 12645457, 9950365, 6119255, +12597139, -14500346, 10407243, 1446330, 4374424, 3616899, -11201812, 15800648, 9002788, 6016713, +-7983808, -9882720, -7715909, 8644695, 364535, -1005559, 7307350, 13036299, 14505178, 5672578, +10198937, 7928510, 5022965, -2814814, 1244467, -4105452, 501974, -1546725, -8492224, 10827613, +17654464, 6771553, -4624606, 7639136, 7611756, -508417, 4785131, -8455717, -15751256, -10788421, +-7088307, 4396436, -1775969, -8517457, 6361384, -3062849, -7289097, -298500, 13033615, 6291590, +9693741, 3143379, 7174206, 7610682, -1643362, 6958384, -2636036, -8362838, 3596498, -9648107, +3682398, 3597572, -13775571, -9206799, 5863704, 14284524, -7322383, 9928891, 14197551, -11708618, +648540, 12718472, 1561758, -4723927, -889595, -6569153, -11271605, 187368, -3265249, -5902896, +8121783, 603443, -12868259, 17160542, -6661495, 14157823, -15819975, -10267119, 8245264, -8717173, +5776194, -4632122, -1686312, 1163936, -12829604, 8497593, -6050535, -12095702, 17661980, 10380399, +-14010183, 10094247, 7438884, 3254512, 14668924, -31301722, 1306744, 13980119, 3495567, 1960116, +12938589, 1307818, 6568616, -17824652, -3638911, 5786395, -933082, -8580808, 2419677, 8172249, +2371359, 4224637, 8613020, 8905615, 11826729, 10995116, -5430450, -3584150, 8757975, -5631239, +5667746, -10910291, -7790534, -14143327, -8307004, 8727910, 1190780, -2822331, 10407243, -13816373, +-21226802, -30902826, 7889855, 11417634, 6549289, 7194070, -9491341, 5537824, -6488085, 12414603, +29436096, -4416837, -9143985, -13281649, -6997039, 12426951, -10905459, 7371775, 8679592, 2506114, +-3554622, -8559870, -6289443, 5159330, -26021596, -19267224, -2484639, 4508642, -12589086, 2682207, +48217988, 26272852, 17768816, -5040681, -4240744, -1247151, -3454228, -5559835, -6790880, -9566503, +-14688251, -2684, -506269, 3044058, 7222525, 11993159, 19743428, -3266323, -24424406, -10470057, +21959094, -4058744, 8548596, -3502546, 144955, 13538811, 5435281, 10094247, 6854768, -1203665, +-182536, -968515, 7653632, 8430484, -3146064, -14854681, 18825378, 12394202, 9764608, 2632815, +5142150, -8311299, -13596256, 18347564, 11026792, 4073240, -8624294, -10799158, -13655849, -9476308, +-2260227, -9638443, 4989679, -18758270, 2582886, 12125230, -8473970, 3587908, 795643, 835908, +-20382304, 6053757, -8891119, 13610214, -32899450, 4318053, -8961986, -12377559, 2059437, -8110509, +5780489, 4788352, -22626962, -1400696, 12586939, 813359, -29348048, -14916958, 2062658, -25587804, +5800354, 18772228, -9067750, 22798760, 26514980, 3511673, 13209172, 16538308, 7281044, -15604153, +10201084, 12661027, -681289, 3311957, 8771934, 7962870, 18719614, 3361886, -7285339, 12149926, +4256313, -1694365, 237834, 8211441, -11001559, -4780299, -4664335, 6893960, 3463891, -15280420, +4567161, 13133473, 350577, 15795279, -14723685, -27619860, 2251100, 12724914, 18927920, 17763984, +9094593, 8567923, 6726993, -18652506, -5454609, -512175, 14294725, 22735410, -7634841, 5144297, +-8114267, 5636608, 3741990, 14009110, 21361556, -7785165, -9026411, -1447404, 11883638, 15312095, +21203716, 966368, -22103512, -20765094, -2928094, 3281892, 772557, -9158481, 1203665, -24954296, +-14977625, -14218489, -13561896, 8924942, 12704513, -27642410, 2850785, -5721970, 15404437, -8242042, +-784905, 4462471, 11859478, -15394773, -25141128, -4552666, -9469866, 674310, -10949482, 6825240, +7436199, 715112, -13118441, 8741869, 1661079, 23289998, -2851858, 12861280, -9801652, 24143622, +7854422, 15201500, 11040750, 16610249, 25025700, -5460514, 10435160, -16324634, 18877992, 17663590, +882079, 6129455, 18656264, -10465762, -9265855, -1090385, 36348844, 6408628, -8135205, 18117246, +3964255, 14165876, 20875152, 6547678, 623307, 2875481, 5010080, 13766444, -2238215, 14790257, +-7006166, 14592688, -4820027, 31292058, -1666447, 27284316, -20331302, -23575612, 38542500, -27572616, +-12498892, 3541201, -5835250, -15781857, 20346870, 831076, -18097918, -7385197, -6090264, -29693794, +5254893, -24707874, -13632226, 2655901, -28371480, -19357418, -19260244, -23113904, 27395986, -2588255, +2392297, 5699422, -6079526, -35038880, -23264228, -26274462, -47917876, 1404454, 6922414, 19085224, +13729937, 5108864, 11862163, 5039071, 3492345, -17954574, -21721798, -15630997, 18855444, -4782983, +-12335146, -8009041, 18386218, -23736136, -12654584, -24392730, -9880572, -4712116, -19934016, 4753455, +-16481937, 15567109, 13738527, -6073621, 13487271, -15983184, -25553982, 7949985, 15628312, -17045652, +-29584272, 18781356, -1721745, 12381854, 13812615, -46935940, -30427158, -4103305, -7122667, 23189602, +-16336982, -23465016, -5527086, 4893579, 759672, -8430484, -10819023, 30542586, -19648938, -37345816, +-42740292, 20929376, -9686762, -43407088, 11859478, 3286187, -7861401, -4075387, 2863670, -25913686, +-12169790, 13683229, 19053548, 42781632, 5324686, 22796612, 9000641, 11431592, -11184632, -2237678, +-9846749, -22163104, -28712930, -37116032, -15621333, -33437394, -15319075, -17280264, -8662412, 18773838, +2420751, 12854837, 19366544, 358630, 12307229, 4480725, -1571421, -322659, -5237713, -28639916, +7975755, -3583613, -35033512, -20185272, 6816650, -21010444, -10755672, 7304666, 20702280, 28210956, +6978785, -6442451, 853625, 18524730, 7043747, 3288334, -3892851, -57513908, -14881525, 11482058, +10767483, 4517232, -5924371, -20504710, 9317395, -18664854, -16942036, -5238787, -820876, -11657615, +-34752728, 13619878, -8611946, 34632468, 9325448, 9291088, 9225053, 23314156, 56604984, -4525285, +-4307852, -9814000, -21225192, 29459718, -2090039, 3503620, -32498406, -14009646, 42769820, -29367912, +-5268851, -25762824, -67157184, -12178380, 23302346, 15165530, 5396090, 2651606, -1740536, 36397164, +-39843336, -2470680, -10093710, -30414274, -21757230, -6007586, 9827959, 4458176, 11210938, 22517440, +18077518, -20307142, -16260209, 47241420, 42472932, -5899675, 6487011, -8123931, 14955076, -2886755, +30704184, 7854422, 17050484, 1586454, 3809099, -54334020, 22874996, -5063230, -28222766, -18007724, +4351876, -10942503, -28190554, 25445534, -3728032, -24096914, -3173981, -29528, 26364656, 25017648, +22544820, 4969814, 26132192, 23431730, -19284940, -25638270, -13312251, -7378217, 26728118, 30806190, +6522445, 8167417, 33819108, 15131170, -31024696, 17287244, 8638253, -14576582, 1690607, 50896972, +28792924, -18375480, -27845884, -43876312, 8343511, -7981123, -14577656, -17414482, 9413495, -10341744, +-5541582, 29758218, -9511205, -1051193, -23281944, 2474438, 14245333, -31453656, -20601884, -18549426, +-9773735, 12329777, -43568684, -23382338, -62718332, 11561515, -898722, -15138149, -7201050, -8476655, +13125420, 20810190, -22363358, 1621887, -7901129, -6696391, -39129836, 9416179, 29843580, 8783208, +22589380, 29326036, 25451440, -33272038, -10441065, -9370008, -15952045, 29765734, -29291140, -15916612, +1197759, 42861088, 9665824, -13532905, 42391864, -22477174, -21865678, 51480016, 48547088, 5984500, +12809740, -12225624, -44884556, -12457553, 46723876, -20536386, 42601780, -13099650, -64262912, -15097884, +-29098940, 37459096, 2270427, 10918881, 33862060, -946503, 28398860, 12467216, 22647362, 2259690, +-42067056, 25129316, 27910308, -33795488, 18442590, 453656, -12785581, -14040785, -49936512, -21181704, +17169132, 3893388, 45312980, -35787280, -20883204, 9390409, -5193153, 30070140, -40714680, 951335, +4082367, -33360622, 34261492, 19791210, 10466298, -15068893, 23529442, -26751740, 15447924, 13043816, +7349226, -848256, -15371151, 7609072, 31405874, -15209553, -5727876, 7335268, -24143622, 26188564, +1310502, 7825431, -33101850, 19383188, 4857608, 7484518, -78101296, 12142946, -21819508, 38103340, +30969936, 33666640, 17103096, -62514860, -10573136, 15076946, 2044941, 5597416, 45717780, -5405753, +-26371100, -31278100, 2041720, -35057672, -31018254, -27220966, 14171781, -52203716, 37973416, 71612136, +-18625126, -9939091, -56607132, -16937204, -49818400, 12492449, -21022254, -16729434, 17043504, -13977971, +-16551730, 12861280, -22219476, -2854543, -25527674, 37637336, 2188823, -29903172, -6913824, -708133, +-1350230, 7724499, -17532056, -14539538, 5811091, 6537477, 6118718, 2515240, 16355235, -18457622, +-5036386, -40751724, 16207059, 2423435, -10492605, 27258010, 17164836, -12930536, 45221172, 8447664, +-25851408, 19503446, 5170604, 12291660, 30409442, -3852586, -5461588, 3357591, 25353728, 12301323, +2146947, -3508452, 27015344, -3300682, -27885612, -6104759, 7065758, 22356916, -8714489, 39236136, +45935748, -28957744, 24749212, 49088792, -11856257, 75017512, 44282724, -19457812, -15672873, -28876138, +-30750892, -18427020, 11524471, -5608154, -4388383, -668941, -3732864, -52153252, -19607062, -50984484, +12059194, 67464808, 16966732, -23203560, 2021319, -30672508, -4745939, 11765526, -13651554, -15915001, +-19202262, -6255620, 6582575, -3286724, -6538551, 9331353, 4350802, 12372190, -12396886, -6554120, +8049306, -2151779, 1033477, -16399796, 11294153, -19332184, 9286256, 7721815, -4828617, 134755, +308164, -10715407, 1555852, 3514894, -9810779, 18134426, -9535901, 5295695, -289373, 1813013, +8215736, -7118372, -13390634, -2608119, 19285476, -13214541, 9281424, -25309168, -16212428, 6527814, +-6091338, 1090922, -2069101, -14504105, 16767552, 15273441, 962073, -10053445, -850940, -5355288, +3257196, -7037304, -521302, -6571837, 6207839, -238371, 1481227, 23889682, -18442590, 903554, +3132105, 4028143, -4008278, 3568581, -8610336, 4117800, -7173669, -31237298, -48108464, 33758980, +150781264, 67173288, 68679752, 325881, -141077872, -100767984, -53613004, -109789568, 52883932, 66735200, +33494840, 143756320, 63494648, -5431523, 46614892, -91746408, -118776784, -66561256, -83453896, -17039746, +63085552, 66214436, 26592826, 110709224, 53745612, -6866579, 52058224, -47881368, -84322560, -47101832, +-63642288, -97799624, 35474820, -61203, -36228588, 106965624, 63090384, 36785860, 107843944, 27092654, +-56047176, 54349588, -79554608, -88912264, -19219442, -93557808, -96620120, 38710540, -16697222, 23999204, +119894552, 83562880, 85245976, 82080584, 9014063, -44677324, -53461068, -87240984, -116417240, -59766080, +-33745560, -23053774, 43366820, 69708392, 63908576, 92433064, 82012400, -11800960, -15156403, -13768591, +-85184232, -23875186, -41391136, -57782880, 14991583, 15187004, -727460, 0, 0, 0, +0, 0, 0, }, }, { { -3161633, --7335268, -2953327, -4199405, -2286533, 5206574, 2805151, 404264, 4345970, 2943126, -3470334, --4744328, -2906082, -2251637, 567473, 1776506, -4748623, -664109, -1881733, -74625, -561030, --1050120, -2517925, 5964636, 3493419, -426812, -4907537, -1965484, 1066226, 2006824, -151934, --1964411, 882616, 1709934, 592169, 1597728, -1355599, -231391, -3757560, -4873178, -1030792, --461172, 2405719, 2901251, 2079838, 576599, 698469, 1660542, 2501282, 708133, 3333432, -1329829, -2103997, -2516851, -22549, 2368675, 2256469, 957778, 520228, 3595425, 2430952, --4287988, -3681324, -2237678, -2025614, -1838246, 2463164, -1668595, 1176284, -4060892, 2962454, --2884071, -2058363, 2066416, -1300301, -1811403, 4696547, 2877628, -4475893, -886374, -1729798, --31675, 6410776, 481036, -2916283, 3547106, 576599, 455803, 1021665, 825707, -71404, -5014375, 2637110, -3223910, -1417339, -281857, -1306744, 1476932, 1955284, 1506997, -1569811, --2026151, 667867, -4181688, -2098629, 3309809, 125091, 2683818, 1162326, -1991254, 1415192, -124017, -2014340, 4607963, -3195993, -1322850, 392990, 1649268, -2253784, -445066, -3161633, --5768678, 5284421, -1000727, -3273839, 425202, 4822712, 109522, 1717987, -2401424, -1713692, --924492, 1289564, -1869385, 3758097, 758062, 3344706, -5159867, 1916629, -1239098, 536871, -2390686, -1293322, -430570, -4332012, 202937, 1628330, 678605, -1655710, 48855, 1180042, --699543, -2048699, 13666586, 4842576, -1209033, 3849365, 72478, 6918119, 4154844, -837519, -3376918, 6223408, 7867307, -4597763, -4735202, 2079838, -1983201, -1424855, 5589363, 4734665, -4273493, 3257733, 467078, -60130, -2119566, 2300492, 1395328, 7398618, 608275, -34360, --3347390, 1640141, 2000381, -287763, -1124208, -1009854, 1839320, -157840, -1308354, -2531346, -2688650, -812286, -1095754, 4158065, 5559299, -1326608, -842887, 3444564, 2803540, 5376226, -3086471, 1594507, 384936, 4612795, 2360622, -5958194, -153545, 2063732, -3696893, 284542, -408559, -4168803, 2051921, -1904281, 3097745, -469762, -756451, 2024540, 366683, -2729989, --483721, 1998770, -825707, -374199, -1133871, 768799, 3197066, 1176284, -3799436, 4766340, --370441, -9005473, -4190278, -1750199, -1949378, -4904853, -4503273, -2831457, 4875862, -5367099, --2508261, -2552284, 975494, 8132521, -1229971, -653372, 1981054, 4650913, -7134478, -1169842, -1440425, -3153043, 2499671, 3973919, -4410395, -280247, 545998, -2563559, -6488622, 1115618, --2748242, 867047, -2535641, 3690451, -4496294, -4177393, -10297721, -2776160, 3487514, -583042, --3983045, -1950989, -546535, -4138201, 151398, -707059, 2772402, 2231236, -1132798, 117038, --1127966, -4368519, 5233955, 915365, 3499325, -1331440, -95026, 924492, 1435056, 4110821, --1457068, -1005022, 1065152, -124017, 4325032, 2400350, -4089346, -1543504, -1199907, -6149857, --959925, -557809, 3345780, -2309619, -19718732, -6285685, -1656784, -1679332, -1557463, 7571491, --6950331, 3324842, -1535988, 1487132, -1899449, -1699733, -5558762, 874026, -1942936, 375273, --8112120, 115427, -702227, -1523103, 13959, 1508070, 1404454, -818728, -402653, -3339874, -1189706, -2683281, 1922535, -27380, 1674500, 5131412, -1158031, -5916318, -2325725, -6920266, -1162862, 1241246, -412317, 1197759, -2190970, 2321967, 1421634, -3048890, 505196, -8288750, --1521492, -5531381, 3300146, 5525476, -4569845, -340376, 1855963, 889595, -7633768, 1377611, -4376572, -3740380, -1497333, -8967892, 3395709, -1220845, 4077535, 6800544, 4171487, -5267241, -1505923, 1411971, 672162, -5822902, 1931662, -2354179, 4372814, -1366873, 171262, 2172180, -1802276, -11871290, 964220, 2579128, -4780299, -158914, 11596412, 9694278, 4663261, -956167, --2567854, 6346888, 3346317, 2292439, 1862405, -4427575, 1246614, 847719, 5232881, -4997195, --2865280, -644245, 298500, -717796, -6622303, -3825205, -4788352, -4777614, 2433636, 3848828, -1794760, 1923609, -325344, 1890323, -1225676, -278636, -59593, -1483374, -999654, 3117073, -1648731, -3818226, -5189931, -34360, -5217312, 3234647, -1944547, -7567733, 437013, 4478577, -5204964, 4406100, -344134, 4195646, -6288906, -1384590, -3167539, 58519, -257698, 3026341, --2665027, -4726612, 5596880, -5252745, -3583613, 4469451, 8276402, 2749853, 794569, -8335995, -8520141, 1868311, 5344013, 11244761, -4107063, 2183454, -1401770, -2419140, 1991254, 18580028, -13009993, -4619774, -6859063, 10324028, 6650220, 10858751, 15843597, -7998840, 5446556, 2680597, -4546223, 2095944, 2696703, 6597070, 1553168, 6731288, 130997, -4286378, 1706713, -1384053, -2160369, -802622, 12230456, 2075543, 2597918, 1657857, 357019, 4298726, 1695438, 226023, --943282, 3059091, -2546916, 5867999, -4774393, 7066832, -3540127, 4250944, 2059974, 2573222, -1884954, 10378788, 7767985, 434329, -2473901, -5733245, 5947993, -6978248, 1480690, -3101503, -2777770, 6447283, 505196, -11035382, -9177271, 818191, -5840619, -6095633, -3790846, -7017440, -2107755, 11861089, 5628018, -4528506, -132070, 1260036, -3580929, -3655017, -1068373, 5752572, -5999533, -7070590, 2659122, 7543573, 702764, 2435783, 7866233, 1857573, 11526618, -732829, --426276, -3609383, -3445638, 4284767, 8670465, -2282775, 2105608, 973347, 9430138, 4349192, --4762582, -3819300, 390842, 2385318, 8567923, 8992588, 12913893, 2756295, 3437585, -1931662, -5146982, 6474127, -2566780, -2626909, 4530117, -3226594, -5216238, 5135171, 1255741, -5415954, --7308961, 11291469, 5303211, 65498, 6799470, 1795296, -4989679, 10770704, -2524904, 774705, --341450, 3148748, -3831648, 3158949, -3818226, 3098282, -3528853, 3663070, -2866891, 4815732, --3585761, -3136400, 9664750, -11494943, 766115, 1986959, -4002373, 1380832, -13342853, -6053757, -6711424, -4777078, 4297652, -796716, 3108483, 1848447, 2867428, 2132451, -5353677, 4048007, --2427194, 354872, -9480603, -8393440, 85899, 3463354, 6843494, -7961796, 2367601, -7170448, -5925981, 4322885, -9571335, -2141578, 1142998, -11487427, -6356015, 6767258, -799938, -637803, -1726040, -864899, -11796665, 10711648, 780610, -7853348, -3670587, 1283658, -927176, -7563438, --2153926, -4422206, 1285269, -547071, -2309082, 2190433, -10261751, -4767414, 2693481, 13276818, --2231773, -8119636, -5589900, -4619774, 9167608, -9989557, -1970853, -909459, -10472741, -13253195, -3149822, -9274982, -1505386, 1073742, 6764037, 3543885, 440771, 1171989, 8036421, -3878892, --2746632, 11766600, -8343511, 5908265, -3069291, -3503083, -1586990, -2003065, 12524662, -329102, -4498442, -14101451, -10365367, -644782, -2842195, 13582297, -811749, 8082592, 1983201, -15834471, -1401770, -1444720, 10787347, 1393717, -11700565, 13944148, 4323422, -7971460, -17900350, -7264937, -17449916, 1021129, -2343979, -2785823, 1699196, 740345, 5310727, 3037079, 5701032, -1086090, -10266582, -5172215, -12317429, 705985, 471910, -2713883, -536334, 4783520, -3227131, -1656784, --1152125, 9992778, 7500624, 4158065, -804770, -13065291, -338766, -442919, -636729, -1948841, --297427, -5548024, -10935524, -1412507, 7380365, 7565048, -2821257, 8120710, -2610803, 3705483, -8477729, 8557185, -18221398, 6587406, 6418829, 3109020, -4546223, -15460809, 9490267, 6145025, -2912525, -5174362, -3362960, -5881421, 3330747, -6529424, -1597728, 788127, 6145025, -3266860, -2872796, 2691334, -12185896, -469225, -8614631, 14236206, 1522029, 9586904, 12512313, 12082817, -9881646, 11829951, -15036681, -10452877, -4981625, -5400385, -7048578, -6062883, -12033961, -4616553, -1119376, 6910066, 269509, -7512972, -65498, 6884833, 612033, -6567005, -2617783, 16231218, -1851131, 5789079, 2142652, 6402723, 1608465, 1724966, -10096394, 5207111, 555661, 1834488, --10622528, 3175592, -16414291, -573378, -5115843, 3524558, -1414655, -12684112, -212064, -12640089, -2265595, -10618770, 9168681, -5812702, 14368276, -195421, -279173, 6577206, 1511292, -2945274, --2187749, 2243584, -5018133, 2692408, 8706436, 3820374, -6788733, -4174171, 18734110, 718333, -14829448, -14784888, -3342558, -2240362, 10532334, -13004087, 1123671, 5126581, -12961674, 7805030, --8696235, 1612223, -4848481, -15177878, 2091649, 15122043, 10950556, 12361990, -4336843, -3037079, -2766496, -2041183, 14821395, 5125507, 6870337, 12789876, -1289564, 4782446, -9055402, 12684649, -5935108, -3245922, -8232379, -7324530, 8060580, -14851997, 5267778, 8352101, -6680822, -8401493, --5248450, 7715372, 2385854, -3226057, -6008659, -165893, -9726490, -13975824, 1818382, -13466870, --20251308, -2851322, 20401, 19370302, -9315784, -7239704, 8014409, 14056891, 13764833, 7188165, --1771674, 2735357, -7223062, 410169, -7568269, 15527381, 13384192, 8465381, -1721745, -17637284, --1211718, -15301895, 14558865, 11047730, 6369974, -13123273, 8483097, 4108136, 5420786, -3846143, --11421392, -9156870, -9463960, 548145, -12732431, -23264764, 2681133, 10616085, 6621766, 6963216, -13364328, 26006026, 12822088, 8518531, 9630927, -17493402, -1719598, -6934225, 22160420, -22444426, --19582366, 5038534, 14791330, -1217623, 17892834, 14576582, 191126, 5114233, -9250286, -8150774, -17078400, -7156490, 12037720, 3139621, -6221260, -4524211, -2215666, -4319664, -6513318, 5517423, -7681012, 4859756, 1519882, -9104257, -9766756, 13239237, -12700218, 10107669, 2029372, -17585744, -9570261, 15463493, 736050, -5012764, -964220, 697932, 2028835, 10410464, 544387, -8826158, --2299418, 8829379, -15874199, 3622805, -1647657, 13409962, 15879031, 9356049, 12748537, 14715095, -12188580, 3641059, -8373576, -11272679, 6849936, 7212324, 1090922, 6333466, 10453950, 23067732, --11004780, 14794552, -6377490, -5056787, 18456012, 2838437, -17373680, -3697967, 10934450, -13339632, -943819, -8566312, -13584445, 20077362, 18129594, 14223858, 7534447, 3371013, 6364605, 14639396, -8930848, 15028091, -5120675, 12523588, -9140227, 15266461, 21714280, 12797929, 11187853, 4954245, -11550241, 10560251, -2573759, 21420612, 5939940, -13547937, 6961605, -13704704, -8423505, -3106335, --19960324, -13422, -3637301, -5980205, -9269613, -5594195, -2065879, -994822, -1190243, 558883, -1748052, -12225088, -6943352, 2140504, -5337034, 4624606, 21384106, -10592463, 185220, -2231773, -1811403, -10033044, 6359773, -4947803, 16950088, 3120831, 10646687, 14557792, 3798899, -1159104, --8390755, -21819508, 4304631, 16088411, 13268765, -3002182, -12770012, 12416750, 3154117, 7919383, --16343424, -11881490, -9074729, 9100499, -30776662, -19549080, -9411884, 22051436, 15925739, -11758010, -13655312, 12496744, 10518375, 10471667, -10300942, 1214402, 5965173, -10066330, -30902290, -5461051, --8536248, -18767934, 1779727, -6263673, -4769025, 6015102, 3553549, -3994320, 1035087, 14731201, -15651398, -28271086, 6948184, 1702418, 13383118, 4748623, 936840, -17492864, 5664525, -4283156, --4661114, -11936788, -8782671, 23125714, -10038949, -126702, 3088618, -5752572, 25671020, 12286291, --10806138, -6516539, -19284404, -2566780, 19436874, 5830955, 6311455, -5929203, 12203076, -2454037, --4251481, 10882910, -5478768, 17857400, -3222299, 13335337, -25720412, -8898635, 16534013, 3883187, --1060320, 4350265, -27930710, -14081050, 6595996, -12079596, 7317551, 589484, 7589744, 16123307, -6878927, -14683956, -37129456, -4573604, -3336116, -5482526, 7182259, -16660178, 31416076, -6828998, -2622615, 31893354, -37829000, -5409512, -6375342, -5077188, -43516072, 1143535, -5662915, -10022843, -16457778, -16750909, 3626563, 1556389, 8509941, -2798708, -15055471, 9768366, -9451612, 21867826, --2736431, -27813134, -671626, -2324114, -12040941, -28037546, 13225278, 12076911, -20973936, 16703665, --18837190, -17152488, -8329552, 246424, 2934000, 1469953, 14184666, -3987877, -10916733, -30561914, -7271380, -40785008, -19451906, -15089831, -30010010, -20240570, -7624104, -3588982, -13278428, 20768852, -24613920, 3428458, -5388037, 23785528, 13154948, -4641786, -3995393, 16642998, 15453829, -7948374, -26433376, -21963926, -7907572, 25246354, 15867757, 36624260, -14024679, -12659416, 8124468, -1542430, --14170171, -7099044, 3636764, 29962228, 17075180, -2691871, 40534828, -4560182, 16713328, -18973554, -23739894, 22409528, -1877438, -17683990, 2059437, 6663642, -9779104, 10794327, -14334453, 25770, --4223564, -4486630, -16264504, -11777337, -7219840, -656593, -5020280, -12609487, 19675246, 13670881, -3984656, -4935991, 3729105, 19086298, 9226127, 14199162, 9108015, -9584220, -15181636, 32410360, --3566434, -16691317, -6600291, -6728603, -3460670, 23788214, 1735704, -16876538, -5965173, -43149924, --9980967, -4177393, 28092844, 19815906, -52536040, -21914534, -11918534, 977642, 3899830, -20026896, -17068736, 9890773, 15156940, 28458454, -33530272, 36100812, 26454314, -9327058, -21649856, 3389266, --3819300, 10773389, 33036888, 27666032, 4153770, 10132902, -21547850, -35031364, 50321448, 24568286, -2592013, 2791192, -10939819, -29943438, 10615549, -2833605, 25512106, 5071283, 9630390, 27065274, -15555298, -949725, -2708514, 4005057, -16634945, -14583025, -17709224, -10757819, 16825534, -5335423, -1265405, 19933480, -3354370, 8233453, -28631326, -26838714, -17369384, 14007499, 6311992, -1987496, -7085086, -10256919, -25705916, 31600758, -30863634, 13124883, 15045807, 10369125, 5473399, 18478024, --12492986, -33245194, 23848342, 65190624, -11400454, 30668750, -38415260, -22633404, 24438364, 12251931, --35529580, -12052215, -2465848, 29275034, -7120519, -5520107, -48229260, -33741264, -10359998, -38345468, -31141734, 29596082, 51863340, -47317656, 20812338, 3183645, -22970558, -3358665, 1447941, -50529216, -9861245, -9354439, -45156212, -24776592, -1451699, -6233608, -15486578, 5945309, 13859859, 2013266, --16336445, -276489, -15680926, 41557028, -13133473, 1453846, 30586610, -1239635, -32440962, -21701932, --22337588, -9167071, -12134893, 34681324, 3026341, 6123013, 16527571, -8896488, -10054518, -5280126, --10237055, -20398410, -5405753, 39633420, 12144557, 9743670, -26545046, 10022306, 1545651, -18156438, --2657511, -8920647, 42039140, -33282776, -29522532, -9903121, 4823249, -9718974, 818728, 11753178, --22614614, -5711770, 35555348, -28836410, 4632122, -7127498, -18111340, -30698816, -23986856, 1169305, --43329776, -51895552, 11858942, 10480257, 7887171, -46581604, 35353488, 43069396, -15156940, -13159243, -2355790, -2623151, -10067940, -25223806, 17350594, 63840392, 10054518, 11325829, -14048301, -37539624, -10532870, 14566918, -55275692, 30331060, 1523103, -15837155, 5554467, 20230370, -28412282, 17715130, --26344792, 7219303, -1245541, -13365938, -7136625, -3558917, -19261318, 14139569, 12651363, -450972, -7161321, 998580, 11276437, 14351096, 14145475, 20534776, 17928268, -10590852, 3198677, -21942452, -24029268, -17914846, 6288369, -3196530, 5350993, 1495186, -16226386, 15663746, -7907572, -15833397, -34724812, -26819386, 8868034, -7371775, -12838194, 14291504, -2794950, 4665408, 22033182, -25035902, -1884954, -30763240, -61070140, -830002, 20706574, -6624987, 80684720, 17109540, -30014306, 9728638, --42213088, 16156593, 32410896, 37893424, -11107859, -5897527, -46525772, -53790708, -2515240, -32605782, -11079405, 533650, -39602820, 8212515, -2949569, -22984518, 10292352, -14906221, -10191421, -18545132, -9392020, -20202452, 25837450, -2705830, 9492951, -5928666, 34720516, -9415105, 19002010, -259309, -22668300, -6311992, -11680700, 7509214, -13213467, -13714367, 1682017, 26027502, 16484621, -17598628, -18650358, -13174812, -20548734, 5813775, 27493696, -10582799, -11612518, 14959908, 6340446, -13712757, -1196148, 19025094, -8263517, -18029736, 9480067, 7738458, 11147051, 21454436, 3954591, -12640626, --4780299, 46956876, 48483200, -13326210, -41337448, 31454730, -14344654, 9099425, 3591667, 52966072, -6308770, -26939108, -11021960, -6197101, 307090, 8621073, 11362336, 17644262, -21872120, 7145752, -2791192, 31231392, -9831717, 22362820, 20313584, 13921600, 7151121, 8413841, 11427297, 56317760, -22507240, -24211268, 5237713, -25316684, -15006616, -919123, 8678518, -3286187, 19543712, -23296440, --1532230, 10483478, -1586990, 10886668, -2211908, 4462471, 1559610, -16347719, -6210523, 5588290, --16949552, -15249281, 612033, 5284421, -12273406, 9361955, 7198365, -3698504, -8904541, -107911, -992674, -1617592, 6061810, 3032784, 4600447, -5826123, -3830574, 14062797, -803696, 2080912, -5301064, -2610803, 5934571, -4924180, -12894566, -6185290, 11517492, -8164733, -8181376, 2560338, --10745471, -8675834, 14097156, -13032005, 22819698, 7361037, -11701638, 12725451, 473520, -15261629, -278636, -533650, -4473209, 11278047, -1764695, -7216082, 18665390, -8633958, -6573985, 14584635, -1277216, 401043, -1929514, 9380209, -3249143, 8346195, -7959648, -32926830, -41022308, 34704948, -137272528, 54618564, 62631360, 1524713, -129765992, -94425392, -50347216, -75105560, 33362770, 65935800, -26276610, 116046256, 64647848, -3649112, 26484916, -57628260, -118294672, -46253040, -82354928, -12353400, -55996172, 48419312, 42556684, 72631656, 43742632, 12935368, 19131932, -4610111, -84348864, -36246840, --30776662, -114919368, 20836496, 15944529, -51993800, 84121232, 81843824, -2007360, 103717552, 52125332, --49085572, 33216740, -48802640, -99426880, -8575439, -59695212, -88379688, 16418049, 8770323, -4301947, -81210312, 79878336, 46509128, 71253504, 42074572, -26255672, -31397284, -53624276, -94420024, -68037112, --33630132, -29681982, 16244103, 54370528, 35650376, 59759100, 87377888, 35992900, -11992086, -8795556, --61041148, -46013596, 4843113, -49038324, -18105972, 18257906, -3688303, 0, 0, 0, -0, 0, 0, }, +-7335268, -2953327, -4199405, -2286533, 5206574, 2805151, 404264, 4345970, 2943126, -3470334, +-4744328, -2906082, -2251637, 567473, 1776506, -4748623, -664109, -1881733, -74625, -561030, +-1050120, -2517925, 5964636, 3493419, -426812, -4907537, -1965484, 1066226, 2006824, -151934, +-1964411, 882616, 1709934, 592169, 1597728, -1355599, -231391, -3757560, -4873178, -1030792, +-461172, 2405719, 2901251, 2079838, 576599, 698469, 1660542, 2501282, 708133, 3333432, +1329829, -2103997, -2516851, -22549, 2368675, 2256469, 957778, 520228, 3595425, 2430952, +-4287988, -3681324, -2237678, -2025614, -1838246, 2463164, -1668595, 1176284, -4060892, 2962454, +-2884071, -2058363, 2066416, -1300301, -1811403, 4696547, 2877628, -4475893, -886374, -1729798, +-31675, 6410776, 481036, -2916283, 3547106, 576599, 455803, 1021665, 825707, -71404, +5014375, 2637110, -3223910, -1417339, -281857, -1306744, 1476932, 1955284, 1506997, -1569811, +-2026151, 667867, -4181688, -2098629, 3309809, 125091, 2683818, 1162326, -1991254, 1415192, +124017, -2014340, 4607963, -3195993, -1322850, 392990, 1649268, -2253784, -445066, -3161633, +-5768678, 5284421, -1000727, -3273839, 425202, 4822712, 109522, 1717987, -2401424, -1713692, +-924492, 1289564, -1869385, 3758097, 758062, 3344706, -5159867, 1916629, -1239098, 536871, +2390686, -1293322, -430570, -4332012, 202937, 1628330, 678605, -1655710, 48855, 1180042, +-699543, -2048699, 13666586, 4842576, -1209033, 3849365, 72478, 6918119, 4154844, -837519, +3376918, 6223408, 7867307, -4597763, -4735202, 2079838, -1983201, -1424855, 5589363, 4734665, +4273493, 3257733, 467078, -60130, -2119566, 2300492, 1395328, 7398618, 608275, -34360, +-3347390, 1640141, 2000381, -287763, -1124208, -1009854, 1839320, -157840, -1308354, -2531346, +2688650, -812286, -1095754, 4158065, 5559299, -1326608, -842887, 3444564, 2803540, 5376226, +3086471, 1594507, 384936, 4612795, 2360622, -5958194, -153545, 2063732, -3696893, 284542, +408559, -4168803, 2051921, -1904281, 3097745, -469762, -756451, 2024540, 366683, -2729989, +-483721, 1998770, -825707, -374199, -1133871, 768799, 3197066, 1176284, -3799436, 4766340, +-370441, -9005473, -4190278, -1750199, -1949378, -4904853, -4503273, -2831457, 4875862, -5367099, +-2508261, -2552284, 975494, 8132521, -1229971, -653372, 1981054, 4650913, -7134478, -1169842, +1440425, -3153043, 2499671, 3973919, -4410395, -280247, 545998, -2563559, -6488622, 1115618, +-2748242, 867047, -2535641, 3690451, -4496294, -4177393, -10297721, -2776160, 3487514, -583042, +-3983045, -1950989, -546535, -4138201, 151398, -707059, 2772402, 2231236, -1132798, 117038, +-1127966, -4368519, 5233955, 915365, 3499325, -1331440, -95026, 924492, 1435056, 4110821, +-1457068, -1005022, 1065152, -124017, 4325032, 2400350, -4089346, -1543504, -1199907, -6149857, +-959925, -557809, 3345780, -2309619, -19718732, -6285685, -1656784, -1679332, -1557463, 7571491, +-6950331, 3324842, -1535988, 1487132, -1899449, -1699733, -5558762, 874026, -1942936, 375273, +-8112120, 115427, -702227, -1523103, 13959, 1508070, 1404454, -818728, -402653, -3339874, +1189706, -2683281, 1922535, -27380, 1674500, 5131412, -1158031, -5916318, -2325725, -6920266, +1162862, 1241246, -412317, 1197759, -2190970, 2321967, 1421634, -3048890, 505196, -8288750, +-1521492, -5531381, 3300146, 5525476, -4569845, -340376, 1855963, 889595, -7633768, 1377611, +4376572, -3740380, -1497333, -8967892, 3395709, -1220845, 4077535, 6800544, 4171487, -5267241, +1505923, 1411971, 672162, -5822902, 1931662, -2354179, 4372814, -1366873, 171262, 2172180, +1802276, -11871290, 964220, 2579128, -4780299, -158914, 11596412, 9694278, 4663261, -956167, +-2567854, 6346888, 3346317, 2292439, 1862405, -4427575, 1246614, 847719, 5232881, -4997195, +-2865280, -644245, 298500, -717796, -6622303, -3825205, -4788352, -4777614, 2433636, 3848828, +1794760, 1923609, -325344, 1890323, -1225676, -278636, -59593, -1483374, -999654, 3117073, +1648731, -3818226, -5189931, -34360, -5217312, 3234647, -1944547, -7567733, 437013, 4478577, +5204964, 4406100, -344134, 4195646, -6288906, -1384590, -3167539, 58519, -257698, 3026341, +-2665027, -4726612, 5596880, -5252745, -3583613, 4469451, 8276402, 2749853, 794569, -8335995, +8520141, 1868311, 5344013, 11244761, -4107063, 2183454, -1401770, -2419140, 1991254, 18580028, +13009993, -4619774, -6859063, 10324028, 6650220, 10858751, 15843597, -7998840, 5446556, 2680597, +4546223, 2095944, 2696703, 6597070, 1553168, 6731288, 130997, -4286378, 1706713, -1384053, +2160369, -802622, 12230456, 2075543, 2597918, 1657857, 357019, 4298726, 1695438, 226023, +-943282, 3059091, -2546916, 5867999, -4774393, 7066832, -3540127, 4250944, 2059974, 2573222, +1884954, 10378788, 7767985, 434329, -2473901, -5733245, 5947993, -6978248, 1480690, -3101503, +2777770, 6447283, 505196, -11035382, -9177271, 818191, -5840619, -6095633, -3790846, -7017440, +2107755, 11861089, 5628018, -4528506, -132070, 1260036, -3580929, -3655017, -1068373, 5752572, +5999533, -7070590, 2659122, 7543573, 702764, 2435783, 7866233, 1857573, 11526618, -732829, +-426276, -3609383, -3445638, 4284767, 8670465, -2282775, 2105608, 973347, 9430138, 4349192, +-4762582, -3819300, 390842, 2385318, 8567923, 8992588, 12913893, 2756295, 3437585, -1931662, +5146982, 6474127, -2566780, -2626909, 4530117, -3226594, -5216238, 5135171, 1255741, -5415954, +-7308961, 11291469, 5303211, 65498, 6799470, 1795296, -4989679, 10770704, -2524904, 774705, +-341450, 3148748, -3831648, 3158949, -3818226, 3098282, -3528853, 3663070, -2866891, 4815732, +-3585761, -3136400, 9664750, -11494943, 766115, 1986959, -4002373, 1380832, -13342853, -6053757, +6711424, -4777078, 4297652, -796716, 3108483, 1848447, 2867428, 2132451, -5353677, 4048007, +-2427194, 354872, -9480603, -8393440, 85899, 3463354, 6843494, -7961796, 2367601, -7170448, +5925981, 4322885, -9571335, -2141578, 1142998, -11487427, -6356015, 6767258, -799938, -637803, +1726040, -864899, -11796665, 10711648, 780610, -7853348, -3670587, 1283658, -927176, -7563438, +-2153926, -4422206, 1285269, -547071, -2309082, 2190433, -10261751, -4767414, 2693481, 13276818, +-2231773, -8119636, -5589900, -4619774, 9167608, -9989557, -1970853, -909459, -10472741, -13253195, +3149822, -9274982, -1505386, 1073742, 6764037, 3543885, 440771, 1171989, 8036421, -3878892, +-2746632, 11766600, -8343511, 5908265, -3069291, -3503083, -1586990, -2003065, 12524662, -329102, +4498442, -14101451, -10365367, -644782, -2842195, 13582297, -811749, 8082592, 1983201, -15834471, +1401770, -1444720, 10787347, 1393717, -11700565, 13944148, 4323422, -7971460, -17900350, -7264937, +17449916, 1021129, -2343979, -2785823, 1699196, 740345, 5310727, 3037079, 5701032, -1086090, +10266582, -5172215, -12317429, 705985, 471910, -2713883, -536334, 4783520, -3227131, -1656784, +-1152125, 9992778, 7500624, 4158065, -804770, -13065291, -338766, -442919, -636729, -1948841, +-297427, -5548024, -10935524, -1412507, 7380365, 7565048, -2821257, 8120710, -2610803, 3705483, +8477729, 8557185, -18221398, 6587406, 6418829, 3109020, -4546223, -15460809, 9490267, 6145025, +2912525, -5174362, -3362960, -5881421, 3330747, -6529424, -1597728, 788127, 6145025, -3266860, +2872796, 2691334, -12185896, -469225, -8614631, 14236206, 1522029, 9586904, 12512313, 12082817, +9881646, 11829951, -15036681, -10452877, -4981625, -5400385, -7048578, -6062883, -12033961, -4616553, +1119376, 6910066, 269509, -7512972, -65498, 6884833, 612033, -6567005, -2617783, 16231218, +1851131, 5789079, 2142652, 6402723, 1608465, 1724966, -10096394, 5207111, 555661, 1834488, +-10622528, 3175592, -16414291, -573378, -5115843, 3524558, -1414655, -12684112, -212064, -12640089, +2265595, -10618770, 9168681, -5812702, 14368276, -195421, -279173, 6577206, 1511292, -2945274, +-2187749, 2243584, -5018133, 2692408, 8706436, 3820374, -6788733, -4174171, 18734110, 718333, +14829448, -14784888, -3342558, -2240362, 10532334, -13004087, 1123671, 5126581, -12961674, 7805030, +-8696235, 1612223, -4848481, -15177878, 2091649, 15122043, 10950556, 12361990, -4336843, -3037079, +2766496, -2041183, 14821395, 5125507, 6870337, 12789876, -1289564, 4782446, -9055402, 12684649, +5935108, -3245922, -8232379, -7324530, 8060580, -14851997, 5267778, 8352101, -6680822, -8401493, +-5248450, 7715372, 2385854, -3226057, -6008659, -165893, -9726490, -13975824, 1818382, -13466870, +-20251308, -2851322, 20401, 19370302, -9315784, -7239704, 8014409, 14056891, 13764833, 7188165, +-1771674, 2735357, -7223062, 410169, -7568269, 15527381, 13384192, 8465381, -1721745, -17637284, +-1211718, -15301895, 14558865, 11047730, 6369974, -13123273, 8483097, 4108136, 5420786, -3846143, +-11421392, -9156870, -9463960, 548145, -12732431, -23264764, 2681133, 10616085, 6621766, 6963216, +13364328, 26006026, 12822088, 8518531, 9630927, -17493402, -1719598, -6934225, 22160420, -22444426, +-19582366, 5038534, 14791330, -1217623, 17892834, 14576582, 191126, 5114233, -9250286, -8150774, +17078400, -7156490, 12037720, 3139621, -6221260, -4524211, -2215666, -4319664, -6513318, 5517423, +7681012, 4859756, 1519882, -9104257, -9766756, 13239237, -12700218, 10107669, 2029372, -17585744, +9570261, 15463493, 736050, -5012764, -964220, 697932, 2028835, 10410464, 544387, -8826158, +-2299418, 8829379, -15874199, 3622805, -1647657, 13409962, 15879031, 9356049, 12748537, 14715095, +12188580, 3641059, -8373576, -11272679, 6849936, 7212324, 1090922, 6333466, 10453950, 23067732, +-11004780, 14794552, -6377490, -5056787, 18456012, 2838437, -17373680, -3697967, 10934450, -13339632, +943819, -8566312, -13584445, 20077362, 18129594, 14223858, 7534447, 3371013, 6364605, 14639396, +8930848, 15028091, -5120675, 12523588, -9140227, 15266461, 21714280, 12797929, 11187853, 4954245, +11550241, 10560251, -2573759, 21420612, 5939940, -13547937, 6961605, -13704704, -8423505, -3106335, +-19960324, -13422, -3637301, -5980205, -9269613, -5594195, -2065879, -994822, -1190243, 558883, +1748052, -12225088, -6943352, 2140504, -5337034, 4624606, 21384106, -10592463, 185220, -2231773, +1811403, -10033044, 6359773, -4947803, 16950088, 3120831, 10646687, 14557792, 3798899, -1159104, +-8390755, -21819508, 4304631, 16088411, 13268765, -3002182, -12770012, 12416750, 3154117, 7919383, +-16343424, -11881490, -9074729, 9100499, -30776662, -19549080, -9411884, 22051436, 15925739, -11758010, +13655312, 12496744, 10518375, 10471667, -10300942, 1214402, 5965173, -10066330, -30902290, -5461051, +-8536248, -18767934, 1779727, -6263673, -4769025, 6015102, 3553549, -3994320, 1035087, 14731201, +15651398, -28271086, 6948184, 1702418, 13383118, 4748623, 936840, -17492864, 5664525, -4283156, +-4661114, -11936788, -8782671, 23125714, -10038949, -126702, 3088618, -5752572, 25671020, 12286291, +-10806138, -6516539, -19284404, -2566780, 19436874, 5830955, 6311455, -5929203, 12203076, -2454037, +-4251481, 10882910, -5478768, 17857400, -3222299, 13335337, -25720412, -8898635, 16534013, 3883187, +-1060320, 4350265, -27930710, -14081050, 6595996, -12079596, 7317551, 589484, 7589744, 16123307, +6878927, -14683956, -37129456, -4573604, -3336116, -5482526, 7182259, -16660178, 31416076, -6828998, +2622615, 31893354, -37829000, -5409512, -6375342, -5077188, -43516072, 1143535, -5662915, -10022843, +16457778, -16750909, 3626563, 1556389, 8509941, -2798708, -15055471, 9768366, -9451612, 21867826, +-2736431, -27813134, -671626, -2324114, -12040941, -28037546, 13225278, 12076911, -20973936, 16703665, +-18837190, -17152488, -8329552, 246424, 2934000, 1469953, 14184666, -3987877, -10916733, -30561914, +7271380, -40785008, -19451906, -15089831, -30010010, -20240570, -7624104, -3588982, -13278428, 20768852, +24613920, 3428458, -5388037, 23785528, 13154948, -4641786, -3995393, 16642998, 15453829, -7948374, +26433376, -21963926, -7907572, 25246354, 15867757, 36624260, -14024679, -12659416, 8124468, -1542430, +-14170171, -7099044, 3636764, 29962228, 17075180, -2691871, 40534828, -4560182, 16713328, -18973554, +23739894, 22409528, -1877438, -17683990, 2059437, 6663642, -9779104, 10794327, -14334453, 25770, +-4223564, -4486630, -16264504, -11777337, -7219840, -656593, -5020280, -12609487, 19675246, 13670881, +3984656, -4935991, 3729105, 19086298, 9226127, 14199162, 9108015, -9584220, -15181636, 32410360, +-3566434, -16691317, -6600291, -6728603, -3460670, 23788214, 1735704, -16876538, -5965173, -43149924, +-9980967, -4177393, 28092844, 19815906, -52536040, -21914534, -11918534, 977642, 3899830, -20026896, +17068736, 9890773, 15156940, 28458454, -33530272, 36100812, 26454314, -9327058, -21649856, 3389266, +-3819300, 10773389, 33036888, 27666032, 4153770, 10132902, -21547850, -35031364, 50321448, 24568286, +2592013, 2791192, -10939819, -29943438, 10615549, -2833605, 25512106, 5071283, 9630390, 27065274, +15555298, -949725, -2708514, 4005057, -16634945, -14583025, -17709224, -10757819, 16825534, -5335423, +1265405, 19933480, -3354370, 8233453, -28631326, -26838714, -17369384, 14007499, 6311992, -1987496, +7085086, -10256919, -25705916, 31600758, -30863634, 13124883, 15045807, 10369125, 5473399, 18478024, +-12492986, -33245194, 23848342, 65190624, -11400454, 30668750, -38415260, -22633404, 24438364, 12251931, +-35529580, -12052215, -2465848, 29275034, -7120519, -5520107, -48229260, -33741264, -10359998, -38345468, +31141734, 29596082, 51863340, -47317656, 20812338, 3183645, -22970558, -3358665, 1447941, -50529216, +9861245, -9354439, -45156212, -24776592, -1451699, -6233608, -15486578, 5945309, 13859859, 2013266, +-16336445, -276489, -15680926, 41557028, -13133473, 1453846, 30586610, -1239635, -32440962, -21701932, +-22337588, -9167071, -12134893, 34681324, 3026341, 6123013, 16527571, -8896488, -10054518, -5280126, +-10237055, -20398410, -5405753, 39633420, 12144557, 9743670, -26545046, 10022306, 1545651, -18156438, +-2657511, -8920647, 42039140, -33282776, -29522532, -9903121, 4823249, -9718974, 818728, 11753178, +-22614614, -5711770, 35555348, -28836410, 4632122, -7127498, -18111340, -30698816, -23986856, 1169305, +-43329776, -51895552, 11858942, 10480257, 7887171, -46581604, 35353488, 43069396, -15156940, -13159243, +2355790, -2623151, -10067940, -25223806, 17350594, 63840392, 10054518, 11325829, -14048301, -37539624, +10532870, 14566918, -55275692, 30331060, 1523103, -15837155, 5554467, 20230370, -28412282, 17715130, +-26344792, 7219303, -1245541, -13365938, -7136625, -3558917, -19261318, 14139569, 12651363, -450972, +7161321, 998580, 11276437, 14351096, 14145475, 20534776, 17928268, -10590852, 3198677, -21942452, +24029268, -17914846, 6288369, -3196530, 5350993, 1495186, -16226386, 15663746, -7907572, -15833397, +34724812, -26819386, 8868034, -7371775, -12838194, 14291504, -2794950, 4665408, 22033182, -25035902, +1884954, -30763240, -61070140, -830002, 20706574, -6624987, 80684720, 17109540, -30014306, 9728638, +-42213088, 16156593, 32410896, 37893424, -11107859, -5897527, -46525772, -53790708, -2515240, -32605782, +11079405, 533650, -39602820, 8212515, -2949569, -22984518, 10292352, -14906221, -10191421, -18545132, +9392020, -20202452, 25837450, -2705830, 9492951, -5928666, 34720516, -9415105, 19002010, -259309, +22668300, -6311992, -11680700, 7509214, -13213467, -13714367, 1682017, 26027502, 16484621, -17598628, +18650358, -13174812, -20548734, 5813775, 27493696, -10582799, -11612518, 14959908, 6340446, -13712757, +1196148, 19025094, -8263517, -18029736, 9480067, 7738458, 11147051, 21454436, 3954591, -12640626, +-4780299, 46956876, 48483200, -13326210, -41337448, 31454730, -14344654, 9099425, 3591667, 52966072, +6308770, -26939108, -11021960, -6197101, 307090, 8621073, 11362336, 17644262, -21872120, 7145752, +2791192, 31231392, -9831717, 22362820, 20313584, 13921600, 7151121, 8413841, 11427297, 56317760, +22507240, -24211268, 5237713, -25316684, -15006616, -919123, 8678518, -3286187, 19543712, -23296440, +-1532230, 10483478, -1586990, 10886668, -2211908, 4462471, 1559610, -16347719, -6210523, 5588290, +-16949552, -15249281, 612033, 5284421, -12273406, 9361955, 7198365, -3698504, -8904541, -107911, +992674, -1617592, 6061810, 3032784, 4600447, -5826123, -3830574, 14062797, -803696, 2080912, +5301064, -2610803, 5934571, -4924180, -12894566, -6185290, 11517492, -8164733, -8181376, 2560338, +-10745471, -8675834, 14097156, -13032005, 22819698, 7361037, -11701638, 12725451, 473520, -15261629, +278636, -533650, -4473209, 11278047, -1764695, -7216082, 18665390, -8633958, -6573985, 14584635, +1277216, 401043, -1929514, 9380209, -3249143, 8346195, -7959648, -32926830, -41022308, 34704948, +137272528, 54618564, 62631360, 1524713, -129765992, -94425392, -50347216, -75105560, 33362770, 65935800, +26276610, 116046256, 64647848, -3649112, 26484916, -57628260, -118294672, -46253040, -82354928, -12353400, +55996172, 48419312, 42556684, 72631656, 43742632, 12935368, 19131932, -4610111, -84348864, -36246840, +-30776662, -114919368, 20836496, 15944529, -51993800, 84121232, 81843824, -2007360, 103717552, 52125332, +-49085572, 33216740, -48802640, -99426880, -8575439, -59695212, -88379688, 16418049, 8770323, -4301947, +81210312, 79878336, 46509128, 71253504, 42074572, -26255672, -31397284, -53624276, -94420024, -68037112, +-33630132, -29681982, 16244103, 54370528, 35650376, 59759100, 87377888, 35992900, -11992086, -8795556, +-61041148, -46013596, 4843113, -49038324, -18105972, 18257906, -3688303, 0, 0, 0, +0, 0, 0, }, { -2585034, --6458557, -1875290, 1891396, 347892, 2050847, 1841467, 5793911, -1076426, -266288, -651224, --4194573, -3362423, 790274, 675921, -274341, 2022930, -6150930, -3652333, -3535832, 2113661, --63888, -900869, -1084479, -1076963, 969052, 1435056, -373662, -797790, 2165737, -3448859, -3494493, 2368675, -1294396, -2873870, -571231, -4226248, -1808718, -5934034, 2421825, 2223719, --376347, 1289564, -3872987, 3503620, -75162, -586800, 2807298, -3904125, 124017, 3304977, -843961, -905701, 246961, 469225, -3580392, 2785823, -629750, 3441880, 378494, 892816, -668941, 1102733, -2083059, -2416993, -2416993, 1851131, -1467805, 354335, 4126390, 5426155, -3099356, -549756, 1268089, -24159, 74625, 490700, 3484829, -4723927, -3761318, -701690, -3730716, 5383742, -2515777, 3121904, -1714229, -4576825, -1198833, -2582886, 1528472, -678068, --2146410, 1947768, 3083250, 623307, 3718368, -6801081, -7243999, -4742181, 717260, -82141, --1206349, 285078, 2262374, -797253, 3041374, 2409477, -3143379, 1137093, -199179, 3811784, -3624953, 1272921, -3770981, 2415382, -2230162, 1183800, 2540473, -6177774, 6693170, 9674951, -1321776, 4328254, -3553549, -830539, -3331284, -1864553, 3074123, -1126892, -3442416, -1048509, --2145873, 1553168, -2087891, -2088965, 257698, 1636919, -1709934, -2168422, -792958, 3296388, -3214246, -2832531, -865436, -3332895, 850404, 3885335, 1321239, -1782948, -1713155, 1229434, --90731, -3167002, 14972256, 6973953, -576599, 3205119, 2803003, -3544959, -1820529, 4228932, -1843615, 4598836, -3349001, 6659884, 2427730, -6445136, 5116917, 340913, -165893, -3368328, -3732864, -6968585, -6085969, -1223529, -2193655, -1096827, -2202245, 888521, -1353989, -2850785, --2159295, 2526515, -2714956, 1790465, 1038308, 768262, -2990908, 4225711, -8704825, -1436130, --87510, -1427003, -1127966, 841814, 1578937, -2680060, 2172717, -3263638, 3185792, 1130113, -668941, 3440806, -2380486, -440234, 1312113, 5334887, 1253594, 2326262, -1232656, -4356171, --6337224, 1333051, 3390877, 4662187, -1862942, -6830609, 1018444, -2630668, -1995012, -1334661, -1926293, 565862, 6864969, 248034, 2289755, 1962263, -1087164, -858993, -2025614, 8096550, -1890323, -6829535, -7741142, 2138894, -2339684, -6404870, 7326141, -3555159, -1151588, -962610, -5768141, 1243393, -3257196, 4059818, -3045132, 6119255, -8310225, -5472325, 6760816, -6901476, --6943889, -2750927, 5807870, 2581275, 2841658, -583579, 5232881, 3191161, -404264, -6653978, -1963337, -1770600, 2577517, 2258616, 1998770, 5985574, 1741609, -5646272, 714038, 4159676, -6102612, 2137820, -3023657, -608812, -4544076, 2205466, -8219494, -155156, 9403831, 676457, -1264331, -4490925, -5497022, 1100585, 1599875, 6946036, -1101659, 815507, 1103270, -742493, -1125281, 2503429, 880468, 5015985, -746251, 3447785, 1072131, 1177358, 1268626, 5899675, -1060857, -400506, 2057289, -805306, -18246632, -12525735, -2293513, 1672353, 3395172, -26307, -386547, -7439420, -14496, -1867237, -751619, -150861, -1357210, -1115081, -4792110, 2444910, --10583336, -4318053, 1488743, -2483028, -2869575, -2186675, -5767604, -3430605, -2070174, -3213709, -1955821, -5088463, -2100239, 5840082, 4537633, 221728, 3520800, 1957968, -1337882, -4207458, -3064996, 8873402, 1708860, 1000727, -2844879, -3292629, 3388729, -7822209, -3345780, 8479876, --7031399, 2301566, -1037772, -3991098, 2673617, 553514, -1273458, 505196, 2261837, -2687576, -1021665, -488553, 6333466, 4762045, 1807644, 1371705, 3480534, -9127, 248571, -1634235, --9477919, 5499706, 4805532, -2660732, 1586990, -4175245, 726923, 1108638, -945967, 2062658, --858457, -15761993, 2145873, 4093104, -1354525, -1097901, -9254581, -3339337, 2088965, -7655243, --7983271, 1848983, -7618198, -3448859, -558346, -4100620, 2090575, -3181497, 5054103, -2609730, --2276870, 1970853, 3406983, 7283728, 3995930, -7607461, -834834, -353798, 3453154, 6019934, -9435506, -4169340, -4298726, 5309654, -5812702, 1442035, 1112397, 8509941, 2615635, 4820564, --6637335, -2576444, -8903467, 6846178, 6563247, 8198556, -574452, -1601486, -5846524, -1012002, -4968741, -2403571, -3923990, -3106872, -4681515, 1001801, 558346, 1345399, -6230387, -14496, --6103149, -255014, -1255741, 2357937, 1615982, -1709934, -2937221, -7173133, -741956, -548145, -4168803, -2743947, 7177964, -4141959, 820339, 3537443, 6702834, -4945118, 587874, 19498614, -17476222, -1027034, 912144, 8463233, 1612223, 3928821, -2265059, 4450660, -3361349, 8537321, -3460670, -416612, 2218351, 191126, 11733314, 7224672, -7057705, -6637872, 2791729, 753767, --2008434, -2065879, 1811939, 4987531, 4409858, 2025614, 949188, 2410014, -1532230, -616865, -6611566, -7341173, 3113315, 7872675, 6615324, 10870562, -768799, -2212982, -645856, 224949, --3284039, 11840688, 11642583, 7579007, -3431142, -1631014, 5132486, 3406983, -3134789, 255014, -6782290, -2940442, -2728915, 3592740, -11701102, -1923609, 942208, 1231045, -3795141, -8375186, -3446175, 4827007, -6157910, -2908767, -6748468, 2058900, 628676, -1969243, -1416266, -6528351, -10109279, -3080565, 1155883, -10566693, -3020973, -4539781, 13015362, -418222, 8183524, 11404749, --6089190, -13865765, 469225, 10673531, -8330626, 7507603, -2346126, -10036802, -4794257, 10207527, --10071698, -8727374, 6233608, -10106058, 3219078, 4853313, 3811247, -2864206, 5966247, 1731946, -973884, 3941169, -6660421, 8804683, 4147328, 3803194, -2024540, -1023276, 16234440, -5808407, -801011, 4219269, 8046085, -11320460, -9498320, -8711267, 83752, 537945, -836982, 5119601, -1357747, 9213242, 3477313, 5330055, -1175747, 570694, -4927938, 8169028, -4105452, 8035347, --4832912, -7326141, 11893838, 9705015, -14469208, -12710419, -8577050, -6698002, 4009352, 364535, --3309272, 6105833, 6662031, -9004399, 4525822, -1170916, -17747878, -6213744, -9274982, -8463770, -2338610, -3327526, -7707319, -10177999, 6001143, -5742372, -4672925, -3469260, -12403329, -1016297, -5147519, -3025268, -1004486, -4176856, 9728101, 1800665, 6094559, 5118528, -8337606, 8530879, -12113955, -3546569, -5346698, 1583232, -2439542, 5600101, -15618649, 6118718, 12983686, -1521492, --4642323, -3543348, 5472862, 12129525, -3126736, 3237332, -5616744, 8377334, -10133438, -3536369, -1586990, -1313723, -7946763, 14242648, 9553618, 7617662, -3468186, -10365367, -1655710, -14818711, -2228014, -906238, -857383, -137976, -2655901, 8300561, 6483253, -10282689, 5405217, -6114423, -8180839, -681289, -2221572, -630823, -9640054, -1690607, -8872866, -18441516, -1415192, 2128693, -833761, -7182796, -920197, -2211908, -14528264, -28991, 11184632, -8032126, 2303176, -19401442, -1384053, 11298448, 6203544, -8832063, -7142531, 14181445, 3324305, 3202972, -2733747, 3692598, --76236, -9445707, -2392297, -9914932, 4798016, -5883569, -806380, -9645423, -10625749, -14372571, -9154186, 6164352, -4496294, -5071820, 4202089, -13174275, -1051193, 1085553, 3374234, 5918465, -3031710, 471373, -4386236, 2032593, -3995930, 3606699, -3808026, 2423435, 1476395, -4081293, --5185636, -10267119, -6567005, 2750927, -17419850, -4708358, 10056666, 5301601, -1784022, 23268522, --2969433, 10844256, 11014981, -16749299, 1542430, -2128693, -13768591, -7349763, -7321309, 337692, -2234994, 16064251, -1953136, 1581085, 11526082, 8046621, -1128503, 10748156, -4258460, -4092567, --6222334, -9822590, -12746926, -5740224, 9500468, -15567646, 1675037, 12779138, -1743757, 3760781, --5921686, 3316789, 6191732, -3923990, 5396090, -7881802, -7477538, 11875048, 7385197, 7508677, -10521596, -505196, -7436736, 10225243, -8654896, -12994424, 888521, 11355894, -967441, -10618233, -2137283, 13461501, -1238561, 3416110, 2120640, 19069118, 2026688, 3792993, 10413685, -1578937, --4128537, -9664750, 2177549, -1628866, -8070781, -33286, -4366908, 3257733, 14121316, -170725, --6989523, -2649458, -6381785, -4204773, -123480, -3380676, 2843268, -10089415, 11654931, -5823439, -18973018, -4732517, -11778411, 517544, 1859721, 6113886, 3986267, 3215857, -11949673, -10982768, -9200357, -11432129, -14138495, 4260071, 4683662, -3814468, 18578954, -14096620, -17261474, 6585796, --11142219, 140123, 767189, -10328859, 5690832, 611496, 14078903, 14861124, 21342766, 9789841, -4455492, 2974802, 6958384, -7287486, 8045548, -12923557, 6152004, -1289564, -1245541, -24776592, --9744207, -4102768, 8236137, -1106491, 1832877, 2626373, 2009508, -12709882, 12825846, -565325, -5041218, 358093, 11899744, -13206488, 8778376, -6541235, -689342, 9797894, -11646341, -5124433, --12692165, -4983236, -14123463, 12301860, 8593693, 16559783, -1401770, 3817689, -15832323, 3323768, --16449725, 15163919, 3569118, -2639794, 13662291, 14633490, 6641630, -8986145, -14176076, -19137300, --1965484, -6904697, -10807748, 10079751, -4235912, 23727546, -19332722, -6720013, 11880953, -14565845, --7783555, 2968359, -2240362, -2474975, -16765942, 5754720, -1654636, -8212515, 502511, 4224101, -3391951, 21974126, -4850629, 2799245, -976568, -7719130, 10189273, -4060355, 3868692, 773094, -14461155, -4961761, 16813186, -201327, 8399345, 6874632, -1260036, -5951214, -16237661, 7159174, -16935592, 295279, -142271, 11127723, 9911711, -1377611, 1752884, 19472308, 12510166, -4372277, -4238059, 12500502, -3526705, -15469935, 129923, -11486353, -1938104, -7623030, 326954, -21210696, --6400575, -8347806, -35433, 3255048, 3850438, 18708878, 21355114, 10417980, -15626702, -10058813, -11687680, 16002511, 2998424, -16998944, -3293703, -5077188, -17180406, -11790759, -13283797, 13639742, --6638946, 434865, -16515760, 20673288, 15348603, -3809099, 5451387, 35112432, -3520800, -10087804, --16303159, -3745748, 7381438, 4203163, -9384504, 5432060, -10714870, -14980309, 19808926, -11994233, -14670535, -10394895, -18372260, 1980517, 20577188, 15092515, -17131550, -9567040, 2608119, 4350802, -6244346, -103616, 13376139, 8872329, 17977122, -5774584, -4264903, 507343, -4757213, -17172890, --14597520, -3044058, 18106508, 5192079, 458488, 1860795, -18894098, -19107236, -16744467, 9351218, -8256001, -5709622, -5600101, 3030636, 1201517, -9573482, 2132988, 21488796, 2565169, 13955422, -11476153, 10256382, 20736102, 32466194, 9287330, 1892470, 3561602, 13668733, -7401840, -2058363, -7387881, -1378148, 3563212, -1419487, 12611098, 6261526, 8718247, -1111860, -4351876, 8411157, -17231408, 324270, -15422154, 11121818, -23692650, -24975234, -9736691, 15685757, -9438191, -24478630, --16585553, -4565550, 9290551, 8373576, -37216964, 1978369, 19024020, -3496104, -4286378, 22972170, --12128451, -12668543, -15996069, -5303211, -5235565, -10701985, 3474629, 5386963, 9150965, 6404333, --4847408, -3908957, -1459215, -4373888, 1941325, 4561256, 19124952, -7743289, -23735600, 13238163, -609885, -390842, -19589882, 9327595, 4489852, -1705102, 23554674, -6156836, 3153580, -1686848, -10814191, 12669617, -12678207, -821413, -6744710, -346282, 7690139, -4516695, 11381663, -15790984, --12753905, -8029978, -13639206, -1886028, 2355790, 2953864, -19356880, -12715788, 10868415, 17235704, --6628209, -8439074, 9929428, -17894444, -15627775, -15575162, 19434190, -29581050, 11353209, -766652, --16419123, -4845260, 16772384, 39581344, -3512210, -9830106, 14463302, 30458298, 12284680, -6190659, -6954626, -3959960, -19252728, -35203164, -222265, 36652716, -4421132, -4479651, -23649700, -3649649, -30602, 908386, 10123238, -580357, 8711267, -1236951, 1318555, -19819664, 4314295, 14710263, --9364639, 18660022, -6849936, -3010772, -16332687, 9837623, -7246147, -7610682, -19099182, -30058328, -16241419, -15577846, -11802033, 3195456, 4715337, -7869991, 3218004, 14243185, -2910377, -17081084, --7632694, -21380348, -512712, 3791919, 15470472, 961536, -2048699, -5187247, -6133214, 2852932, -16103980, 469225, -6746857, 14138495, -13218836, -259846, -24248312, -9720048, -2907156, 30628486, --18228378, 4656819, -4196720, 2231773, -1145146, -5746666, 3483219, 11078331, 7141457, -26317412, -29945048, 5707475, 13507672, 922344, -5527623, -10596221, 4126927, -16934520, -9346923, 35213364, --3969624, 2659122, -18031884, 16273631, -9114457, 11903502, -9200357, 21151640, 2627446, 1887638, --9936407, -8834211, 13001940, 27496918, -11067594, -17245904, 8506183, -6976638, 18859202, 22855132, -11959336, -3789235, 14875619, -9833328, -8300025, 19139984, 27353572, -30302068, 3033858, 4146254, -5662915, -10478646, -112206, 11766063, -29700772, 8759586, 18319646, 6308233, -12862353, -4093641, -22373022, 17434882, 6560026, -10625749, -12720083, -26629870, 38073812, 6356552, 19907710, -3234110, --7284265, 3735011, 11892764, -126165, 105764, -30988190, 5445482, 28212566, -4398584, 26973468, --15775415, -8053064, -10754061, 5734855, 26710402, -8938364, 60666, 22562000, 29461328, -10377715, --20074678, -19907174, -15415174, 14716705, 9834401, 25524454, -8157217, 18617072, -10197863, -3315178, -16174847, -79457, 22258668, -27198418, 16646756, 3614752, 6986301, -10691247, 7652558, 21065204, -39374112, -8831527, 9400610, -168577, -27462020, 24800752, 1615982, 9913321, -5757404, -12115566, --5556077, -680215, -11293080, -6167573, 33089502, 2703145, 12077448, -9443022, 23090282, 437013, -10612864, 5248987, -15279883, -2721936, -9907953, 550830, 3132105, 28851442, 13256417, 1497870, -2061584, -714038, -3749507, 4989679, 1421634, 18209588, 13084081, 7672959, -10042707, 12788265, -24536074, -24272470, 21257940, 4117263, 5196374, -24289650, -13505525, -30570504, -26900454, -4278861, -14994268, 14812805, -44913548, 718870, -21072184, 11590506, 41873784, 23535348, -27887222, 17934710, -10799158, 14457397, -36700496, -55248848, -15037754, -5845451, -14263050, 3512210, 18274548, -19215684, -27827094, 10775536, -41375568, -30951144, -6809671, 22735946, 279173, 2253784, -4800700, -12576201, --40068288, 1990181, -33745020, -27173184, 12976707, 11052025, 9252433, -4325569, -13392782, 30278446, -17462800, -12419435, -26404386, 20067160, 9521406, 4926328, -12658342, -30096984, 11086384, -14017700, -4118337, -25639882, 31003758, 966905, -12979391, 3229816, 7540889, 26053272, 15863462, -6527277, --1598802, 9159018, 8718247, 10038412, -6112812, -40514964, -32034014, 6434935, -4473746, 23678692, --4553739, -10263898, -28502476, 33105608, 12972949, -23303956, -23507430, 33901788, 32530082, -531502, -24288576, -3321620, 2020782, -9827422, -4198868, -18304614, 2832531, 19803020, 1638530, -13492103, --35641248, 56035900, 1127966, -42862164, -3543348, -15785615, 7013682, 21673478, 19157164, -23725400, --38793220, 6850473, -18718004, 6147172, -4044786, 17253420, -5866389, 2704219, 9791989, -15455440, --19589882, 2317135, 4761508, 17091822, -691490, -26614302, 17381196, -14716705, 13588740, -12751221, --9197136, -1177895, -4595078, -28622736, 5099200, 8376797, -28297928, 12127914, -11336566, 5907728, --9686225, 27322972, 20665236, -26918708, -14834817, 18926848, 22919556, -27539868, 36388572, 2725694, -29205240, 21873194, 34520800, -10458245, -15299747, 8216810, -29498372, 4807679, 3148748, 51327544, --16346646, -47485160, 80240728, -37783900, -30023968, 47024524, 20352776, -26765162, 44542568, 5479842, --37595996, 46370616, -49913424, 6663642, 15328201, -37949796, 17521856, 9678709, -12918725, -4051228, --371515, -9525164, -2737505, -5706401, -16494822, 168577, -8075613, -2156611, -3819300, 7864622, -30303678, 24786794, -22828288, -2888366, 31884226, -5872294, -5597416, -32639604, 4068945, 10231149, --4935455, 27128624, 66309464, -22588306, -27435178, 46538120, -2764348, -25763362, 29683056, 18824842, --14809584, -23240604, -27711666, 8046621, 15494095, -13084618, 44672492, 28267864, -54752244, -53608708, -31328028, -25626996, -31817118, 41114648, 7218230, 55225228, 27397596, -7712151, -7033009, -41456636, --31019328, 90947544, 25956098, -21017960, -44009992, -192200, -17602386, -41439456, -5652177, 44704168, -20365124, -1675574, 38866768, 30794916, -10233833, -46171972, 6851547, 21074868, -9993315, 50954420, -40550932, -10078678, 28529320, 4103841, -23940148, 15752866, 24228448, 9509058, 9910100, -31955094, --7729868, 4979478, 5683853, -3744138, -29742648, -9213779, 9353902, -5842766, -4070019, -23139136, -36301600, 5870147, -31831076, 18664318, 42777336, -21372294, -14239964, 7682623, 13377749, -12837120, --28692530, 24999930, 38743288, -1832340, -16814260, 6573448, 10119480, 19591494, 24341728, 3155727, -45258216, 478352, -53036940, 1970316, -7136088, 18505940, -6772090, -40597640, -2575907, -16520055, --19297824, 27184458, 11805254, 16360604, 16611860, -35912904, -21529598, -4579509, -2333241, 17487496, --1429150, -5421860, -1066763, -10487773, -28169616, 5184026, 37535868, -17719962, 818728, -12783433, --15054397, 31217970, -38269232, 4234838, 8467528, -4952634, -5947456, -42703788, -62617400, -54405424, -109587704, 105618616, 104272680, 296885856, 104493872, -12071542, 18526342, -205066976, -250946880, -83988624, --141394624, -194431024, 23682986, -11024644, -33920040, 213627376, 129088464, 54110144, 332514208, 157201712, -27422292, 151690192, -38000796, -182571536, -176092048, -166758016, -231985680, -226070976, -55116240, -82383376, --134922096, 153457040, 68694784, -57151520, 220734480, 70602816, -29147258, 250920048, 227108208, 51107964, -235593984, 240281408, -12815646, 57870388, 23681376, -235844176, -274841408, -204495744, -385568864, -364145568, --221490928, -293008576, -222867456, 20933670, 173680432, 199085696, 430848576, 392473568, 343708512, 372108992, -271181024, 135495488, 35293356, -37142876, -221325040, -263687904, -284140000, -317551616, -304279104, -259293088, --173356160, -126398200, -124485872, 23753854, 81166288, 74898328, 19959786, 0, 0, 0, -0, 0, 0, }, +-6458557, -1875290, 1891396, 347892, 2050847, 1841467, 5793911, -1076426, -266288, -651224, +-4194573, -3362423, 790274, 675921, -274341, 2022930, -6150930, -3652333, -3535832, 2113661, +-63888, -900869, -1084479, -1076963, 969052, 1435056, -373662, -797790, 2165737, -3448859, +3494493, 2368675, -1294396, -2873870, -571231, -4226248, -1808718, -5934034, 2421825, 2223719, +-376347, 1289564, -3872987, 3503620, -75162, -586800, 2807298, -3904125, 124017, 3304977, +843961, -905701, 246961, 469225, -3580392, 2785823, -629750, 3441880, 378494, 892816, +668941, 1102733, -2083059, -2416993, -2416993, 1851131, -1467805, 354335, 4126390, 5426155, +3099356, -549756, 1268089, -24159, 74625, 490700, 3484829, -4723927, -3761318, -701690, +3730716, 5383742, -2515777, 3121904, -1714229, -4576825, -1198833, -2582886, 1528472, -678068, +-2146410, 1947768, 3083250, 623307, 3718368, -6801081, -7243999, -4742181, 717260, -82141, +-1206349, 285078, 2262374, -797253, 3041374, 2409477, -3143379, 1137093, -199179, 3811784, +3624953, 1272921, -3770981, 2415382, -2230162, 1183800, 2540473, -6177774, 6693170, 9674951, +1321776, 4328254, -3553549, -830539, -3331284, -1864553, 3074123, -1126892, -3442416, -1048509, +-2145873, 1553168, -2087891, -2088965, 257698, 1636919, -1709934, -2168422, -792958, 3296388, +3214246, -2832531, -865436, -3332895, 850404, 3885335, 1321239, -1782948, -1713155, 1229434, +-90731, -3167002, 14972256, 6973953, -576599, 3205119, 2803003, -3544959, -1820529, 4228932, +1843615, 4598836, -3349001, 6659884, 2427730, -6445136, 5116917, 340913, -165893, -3368328, +3732864, -6968585, -6085969, -1223529, -2193655, -1096827, -2202245, 888521, -1353989, -2850785, +-2159295, 2526515, -2714956, 1790465, 1038308, 768262, -2990908, 4225711, -8704825, -1436130, +-87510, -1427003, -1127966, 841814, 1578937, -2680060, 2172717, -3263638, 3185792, 1130113, +668941, 3440806, -2380486, -440234, 1312113, 5334887, 1253594, 2326262, -1232656, -4356171, +-6337224, 1333051, 3390877, 4662187, -1862942, -6830609, 1018444, -2630668, -1995012, -1334661, +1926293, 565862, 6864969, 248034, 2289755, 1962263, -1087164, -858993, -2025614, 8096550, +1890323, -6829535, -7741142, 2138894, -2339684, -6404870, 7326141, -3555159, -1151588, -962610, +5768141, 1243393, -3257196, 4059818, -3045132, 6119255, -8310225, -5472325, 6760816, -6901476, +-6943889, -2750927, 5807870, 2581275, 2841658, -583579, 5232881, 3191161, -404264, -6653978, +1963337, -1770600, 2577517, 2258616, 1998770, 5985574, 1741609, -5646272, 714038, 4159676, +6102612, 2137820, -3023657, -608812, -4544076, 2205466, -8219494, -155156, 9403831, 676457, +1264331, -4490925, -5497022, 1100585, 1599875, 6946036, -1101659, 815507, 1103270, -742493, +1125281, 2503429, 880468, 5015985, -746251, 3447785, 1072131, 1177358, 1268626, 5899675, +1060857, -400506, 2057289, -805306, -18246632, -12525735, -2293513, 1672353, 3395172, -26307, +386547, -7439420, -14496, -1867237, -751619, -150861, -1357210, -1115081, -4792110, 2444910, +-10583336, -4318053, 1488743, -2483028, -2869575, -2186675, -5767604, -3430605, -2070174, -3213709, +1955821, -5088463, -2100239, 5840082, 4537633, 221728, 3520800, 1957968, -1337882, -4207458, +3064996, 8873402, 1708860, 1000727, -2844879, -3292629, 3388729, -7822209, -3345780, 8479876, +-7031399, 2301566, -1037772, -3991098, 2673617, 553514, -1273458, 505196, 2261837, -2687576, +1021665, -488553, 6333466, 4762045, 1807644, 1371705, 3480534, -9127, 248571, -1634235, +-9477919, 5499706, 4805532, -2660732, 1586990, -4175245, 726923, 1108638, -945967, 2062658, +-858457, -15761993, 2145873, 4093104, -1354525, -1097901, -9254581, -3339337, 2088965, -7655243, +-7983271, 1848983, -7618198, -3448859, -558346, -4100620, 2090575, -3181497, 5054103, -2609730, +-2276870, 1970853, 3406983, 7283728, 3995930, -7607461, -834834, -353798, 3453154, 6019934, +9435506, -4169340, -4298726, 5309654, -5812702, 1442035, 1112397, 8509941, 2615635, 4820564, +-6637335, -2576444, -8903467, 6846178, 6563247, 8198556, -574452, -1601486, -5846524, -1012002, +4968741, -2403571, -3923990, -3106872, -4681515, 1001801, 558346, 1345399, -6230387, -14496, +-6103149, -255014, -1255741, 2357937, 1615982, -1709934, -2937221, -7173133, -741956, -548145, +4168803, -2743947, 7177964, -4141959, 820339, 3537443, 6702834, -4945118, 587874, 19498614, +17476222, -1027034, 912144, 8463233, 1612223, 3928821, -2265059, 4450660, -3361349, 8537321, +3460670, -416612, 2218351, 191126, 11733314, 7224672, -7057705, -6637872, 2791729, 753767, +-2008434, -2065879, 1811939, 4987531, 4409858, 2025614, 949188, 2410014, -1532230, -616865, +6611566, -7341173, 3113315, 7872675, 6615324, 10870562, -768799, -2212982, -645856, 224949, +-3284039, 11840688, 11642583, 7579007, -3431142, -1631014, 5132486, 3406983, -3134789, 255014, +6782290, -2940442, -2728915, 3592740, -11701102, -1923609, 942208, 1231045, -3795141, -8375186, +3446175, 4827007, -6157910, -2908767, -6748468, 2058900, 628676, -1969243, -1416266, -6528351, +10109279, -3080565, 1155883, -10566693, -3020973, -4539781, 13015362, -418222, 8183524, 11404749, +-6089190, -13865765, 469225, 10673531, -8330626, 7507603, -2346126, -10036802, -4794257, 10207527, +-10071698, -8727374, 6233608, -10106058, 3219078, 4853313, 3811247, -2864206, 5966247, 1731946, +973884, 3941169, -6660421, 8804683, 4147328, 3803194, -2024540, -1023276, 16234440, -5808407, +801011, 4219269, 8046085, -11320460, -9498320, -8711267, 83752, 537945, -836982, 5119601, +1357747, 9213242, 3477313, 5330055, -1175747, 570694, -4927938, 8169028, -4105452, 8035347, +-4832912, -7326141, 11893838, 9705015, -14469208, -12710419, -8577050, -6698002, 4009352, 364535, +-3309272, 6105833, 6662031, -9004399, 4525822, -1170916, -17747878, -6213744, -9274982, -8463770, +2338610, -3327526, -7707319, -10177999, 6001143, -5742372, -4672925, -3469260, -12403329, -1016297, +5147519, -3025268, -1004486, -4176856, 9728101, 1800665, 6094559, 5118528, -8337606, 8530879, +12113955, -3546569, -5346698, 1583232, -2439542, 5600101, -15618649, 6118718, 12983686, -1521492, +-4642323, -3543348, 5472862, 12129525, -3126736, 3237332, -5616744, 8377334, -10133438, -3536369, +1586990, -1313723, -7946763, 14242648, 9553618, 7617662, -3468186, -10365367, -1655710, -14818711, +2228014, -906238, -857383, -137976, -2655901, 8300561, 6483253, -10282689, 5405217, -6114423, +8180839, -681289, -2221572, -630823, -9640054, -1690607, -8872866, -18441516, -1415192, 2128693, +833761, -7182796, -920197, -2211908, -14528264, -28991, 11184632, -8032126, 2303176, -19401442, +1384053, 11298448, 6203544, -8832063, -7142531, 14181445, 3324305, 3202972, -2733747, 3692598, +-76236, -9445707, -2392297, -9914932, 4798016, -5883569, -806380, -9645423, -10625749, -14372571, +9154186, 6164352, -4496294, -5071820, 4202089, -13174275, -1051193, 1085553, 3374234, 5918465, +3031710, 471373, -4386236, 2032593, -3995930, 3606699, -3808026, 2423435, 1476395, -4081293, +-5185636, -10267119, -6567005, 2750927, -17419850, -4708358, 10056666, 5301601, -1784022, 23268522, +-2969433, 10844256, 11014981, -16749299, 1542430, -2128693, -13768591, -7349763, -7321309, 337692, +2234994, 16064251, -1953136, 1581085, 11526082, 8046621, -1128503, 10748156, -4258460, -4092567, +-6222334, -9822590, -12746926, -5740224, 9500468, -15567646, 1675037, 12779138, -1743757, 3760781, +-5921686, 3316789, 6191732, -3923990, 5396090, -7881802, -7477538, 11875048, 7385197, 7508677, +10521596, -505196, -7436736, 10225243, -8654896, -12994424, 888521, 11355894, -967441, -10618233, +2137283, 13461501, -1238561, 3416110, 2120640, 19069118, 2026688, 3792993, 10413685, -1578937, +-4128537, -9664750, 2177549, -1628866, -8070781, -33286, -4366908, 3257733, 14121316, -170725, +-6989523, -2649458, -6381785, -4204773, -123480, -3380676, 2843268, -10089415, 11654931, -5823439, +18973018, -4732517, -11778411, 517544, 1859721, 6113886, 3986267, 3215857, -11949673, -10982768, +9200357, -11432129, -14138495, 4260071, 4683662, -3814468, 18578954, -14096620, -17261474, 6585796, +-11142219, 140123, 767189, -10328859, 5690832, 611496, 14078903, 14861124, 21342766, 9789841, +4455492, 2974802, 6958384, -7287486, 8045548, -12923557, 6152004, -1289564, -1245541, -24776592, +-9744207, -4102768, 8236137, -1106491, 1832877, 2626373, 2009508, -12709882, 12825846, -565325, +5041218, 358093, 11899744, -13206488, 8778376, -6541235, -689342, 9797894, -11646341, -5124433, +-12692165, -4983236, -14123463, 12301860, 8593693, 16559783, -1401770, 3817689, -15832323, 3323768, +-16449725, 15163919, 3569118, -2639794, 13662291, 14633490, 6641630, -8986145, -14176076, -19137300, +-1965484, -6904697, -10807748, 10079751, -4235912, 23727546, -19332722, -6720013, 11880953, -14565845, +-7783555, 2968359, -2240362, -2474975, -16765942, 5754720, -1654636, -8212515, 502511, 4224101, +3391951, 21974126, -4850629, 2799245, -976568, -7719130, 10189273, -4060355, 3868692, 773094, +14461155, -4961761, 16813186, -201327, 8399345, 6874632, -1260036, -5951214, -16237661, 7159174, +16935592, 295279, -142271, 11127723, 9911711, -1377611, 1752884, 19472308, 12510166, -4372277, +4238059, 12500502, -3526705, -15469935, 129923, -11486353, -1938104, -7623030, 326954, -21210696, +-6400575, -8347806, -35433, 3255048, 3850438, 18708878, 21355114, 10417980, -15626702, -10058813, +11687680, 16002511, 2998424, -16998944, -3293703, -5077188, -17180406, -11790759, -13283797, 13639742, +-6638946, 434865, -16515760, 20673288, 15348603, -3809099, 5451387, 35112432, -3520800, -10087804, +-16303159, -3745748, 7381438, 4203163, -9384504, 5432060, -10714870, -14980309, 19808926, -11994233, +14670535, -10394895, -18372260, 1980517, 20577188, 15092515, -17131550, -9567040, 2608119, 4350802, +6244346, -103616, 13376139, 8872329, 17977122, -5774584, -4264903, 507343, -4757213, -17172890, +-14597520, -3044058, 18106508, 5192079, 458488, 1860795, -18894098, -19107236, -16744467, 9351218, +8256001, -5709622, -5600101, 3030636, 1201517, -9573482, 2132988, 21488796, 2565169, 13955422, +11476153, 10256382, 20736102, 32466194, 9287330, 1892470, 3561602, 13668733, -7401840, -2058363, +7387881, -1378148, 3563212, -1419487, 12611098, 6261526, 8718247, -1111860, -4351876, 8411157, +17231408, 324270, -15422154, 11121818, -23692650, -24975234, -9736691, 15685757, -9438191, -24478630, +-16585553, -4565550, 9290551, 8373576, -37216964, 1978369, 19024020, -3496104, -4286378, 22972170, +-12128451, -12668543, -15996069, -5303211, -5235565, -10701985, 3474629, 5386963, 9150965, 6404333, +-4847408, -3908957, -1459215, -4373888, 1941325, 4561256, 19124952, -7743289, -23735600, 13238163, +609885, -390842, -19589882, 9327595, 4489852, -1705102, 23554674, -6156836, 3153580, -1686848, +10814191, 12669617, -12678207, -821413, -6744710, -346282, 7690139, -4516695, 11381663, -15790984, +-12753905, -8029978, -13639206, -1886028, 2355790, 2953864, -19356880, -12715788, 10868415, 17235704, +-6628209, -8439074, 9929428, -17894444, -15627775, -15575162, 19434190, -29581050, 11353209, -766652, +-16419123, -4845260, 16772384, 39581344, -3512210, -9830106, 14463302, 30458298, 12284680, -6190659, +6954626, -3959960, -19252728, -35203164, -222265, 36652716, -4421132, -4479651, -23649700, -3649649, +30602, 908386, 10123238, -580357, 8711267, -1236951, 1318555, -19819664, 4314295, 14710263, +-9364639, 18660022, -6849936, -3010772, -16332687, 9837623, -7246147, -7610682, -19099182, -30058328, +16241419, -15577846, -11802033, 3195456, 4715337, -7869991, 3218004, 14243185, -2910377, -17081084, +-7632694, -21380348, -512712, 3791919, 15470472, 961536, -2048699, -5187247, -6133214, 2852932, +16103980, 469225, -6746857, 14138495, -13218836, -259846, -24248312, -9720048, -2907156, 30628486, +-18228378, 4656819, -4196720, 2231773, -1145146, -5746666, 3483219, 11078331, 7141457, -26317412, +29945048, 5707475, 13507672, 922344, -5527623, -10596221, 4126927, -16934520, -9346923, 35213364, +-3969624, 2659122, -18031884, 16273631, -9114457, 11903502, -9200357, 21151640, 2627446, 1887638, +-9936407, -8834211, 13001940, 27496918, -11067594, -17245904, 8506183, -6976638, 18859202, 22855132, +11959336, -3789235, 14875619, -9833328, -8300025, 19139984, 27353572, -30302068, 3033858, 4146254, +5662915, -10478646, -112206, 11766063, -29700772, 8759586, 18319646, 6308233, -12862353, -4093641, +22373022, 17434882, 6560026, -10625749, -12720083, -26629870, 38073812, 6356552, 19907710, -3234110, +-7284265, 3735011, 11892764, -126165, 105764, -30988190, 5445482, 28212566, -4398584, 26973468, +-15775415, -8053064, -10754061, 5734855, 26710402, -8938364, 60666, 22562000, 29461328, -10377715, +-20074678, -19907174, -15415174, 14716705, 9834401, 25524454, -8157217, 18617072, -10197863, -3315178, +16174847, -79457, 22258668, -27198418, 16646756, 3614752, 6986301, -10691247, 7652558, 21065204, +39374112, -8831527, 9400610, -168577, -27462020, 24800752, 1615982, 9913321, -5757404, -12115566, +-5556077, -680215, -11293080, -6167573, 33089502, 2703145, 12077448, -9443022, 23090282, 437013, +10612864, 5248987, -15279883, -2721936, -9907953, 550830, 3132105, 28851442, 13256417, 1497870, +2061584, -714038, -3749507, 4989679, 1421634, 18209588, 13084081, 7672959, -10042707, 12788265, +24536074, -24272470, 21257940, 4117263, 5196374, -24289650, -13505525, -30570504, -26900454, -4278861, +14994268, 14812805, -44913548, 718870, -21072184, 11590506, 41873784, 23535348, -27887222, 17934710, +10799158, 14457397, -36700496, -55248848, -15037754, -5845451, -14263050, 3512210, 18274548, -19215684, +27827094, 10775536, -41375568, -30951144, -6809671, 22735946, 279173, 2253784, -4800700, -12576201, +-40068288, 1990181, -33745020, -27173184, 12976707, 11052025, 9252433, -4325569, -13392782, 30278446, +17462800, -12419435, -26404386, 20067160, 9521406, 4926328, -12658342, -30096984, 11086384, -14017700, +4118337, -25639882, 31003758, 966905, -12979391, 3229816, 7540889, 26053272, 15863462, -6527277, +-1598802, 9159018, 8718247, 10038412, -6112812, -40514964, -32034014, 6434935, -4473746, 23678692, +-4553739, -10263898, -28502476, 33105608, 12972949, -23303956, -23507430, 33901788, 32530082, -531502, +24288576, -3321620, 2020782, -9827422, -4198868, -18304614, 2832531, 19803020, 1638530, -13492103, +-35641248, 56035900, 1127966, -42862164, -3543348, -15785615, 7013682, 21673478, 19157164, -23725400, +-38793220, 6850473, -18718004, 6147172, -4044786, 17253420, -5866389, 2704219, 9791989, -15455440, +-19589882, 2317135, 4761508, 17091822, -691490, -26614302, 17381196, -14716705, 13588740, -12751221, +-9197136, -1177895, -4595078, -28622736, 5099200, 8376797, -28297928, 12127914, -11336566, 5907728, +-9686225, 27322972, 20665236, -26918708, -14834817, 18926848, 22919556, -27539868, 36388572, 2725694, +29205240, 21873194, 34520800, -10458245, -15299747, 8216810, -29498372, 4807679, 3148748, 51327544, +-16346646, -47485160, 80240728, -37783900, -30023968, 47024524, 20352776, -26765162, 44542568, 5479842, +-37595996, 46370616, -49913424, 6663642, 15328201, -37949796, 17521856, 9678709, -12918725, -4051228, +-371515, -9525164, -2737505, -5706401, -16494822, 168577, -8075613, -2156611, -3819300, 7864622, +30303678, 24786794, -22828288, -2888366, 31884226, -5872294, -5597416, -32639604, 4068945, 10231149, +-4935455, 27128624, 66309464, -22588306, -27435178, 46538120, -2764348, -25763362, 29683056, 18824842, +-14809584, -23240604, -27711666, 8046621, 15494095, -13084618, 44672492, 28267864, -54752244, -53608708, +31328028, -25626996, -31817118, 41114648, 7218230, 55225228, 27397596, -7712151, -7033009, -41456636, +-31019328, 90947544, 25956098, -21017960, -44009992, -192200, -17602386, -41439456, -5652177, 44704168, +20365124, -1675574, 38866768, 30794916, -10233833, -46171972, 6851547, 21074868, -9993315, 50954420, +40550932, -10078678, 28529320, 4103841, -23940148, 15752866, 24228448, 9509058, 9910100, -31955094, +-7729868, 4979478, 5683853, -3744138, -29742648, -9213779, 9353902, -5842766, -4070019, -23139136, +36301600, 5870147, -31831076, 18664318, 42777336, -21372294, -14239964, 7682623, 13377749, -12837120, +-28692530, 24999930, 38743288, -1832340, -16814260, 6573448, 10119480, 19591494, 24341728, 3155727, +45258216, 478352, -53036940, 1970316, -7136088, 18505940, -6772090, -40597640, -2575907, -16520055, +-19297824, 27184458, 11805254, 16360604, 16611860, -35912904, -21529598, -4579509, -2333241, 17487496, +-1429150, -5421860, -1066763, -10487773, -28169616, 5184026, 37535868, -17719962, 818728, -12783433, +-15054397, 31217970, -38269232, 4234838, 8467528, -4952634, -5947456, -42703788, -62617400, -54405424, +109587704, 105618616, 104272680, 296885856, 104493872, -12071542, 18526342, -205066976, -250946880, -83988624, +-141394624, -194431024, 23682986, -11024644, -33920040, 213627376, 129088464, 54110144, 332514208, 157201712, +27422292, 151690192, -38000796, -182571536, -176092048, -166758016, -231985680, -226070976, -55116240, -82383376, +-134922096, 153457040, 68694784, -57151520, 220734480, 70602816, -29147258, 250920048, 227108208, 51107964, +235593984, 240281408, -12815646, 57870388, 23681376, -235844176, -274841408, -204495744, -385568864, -364145568, +-221490928, -293008576, -222867456, 20933670, 173680432, 199085696, 430848576, 392473568, 343708512, 372108992, +271181024, 135495488, 35293356, -37142876, -221325040, -263687904, -284140000, -317551616, -304279104, -259293088, +-173356160, -126398200, -124485872, 23753854, 81166288, 74898328, 19959786, 0, 0, 0, +0, 0, 0, }, }, { { 2406792, -241592, 2704756, -2811056, -4813585, -194884, -3294777, -300111, -868120, -7608535, -6163815, --1093069, -2480881, 3034395, -1336809, 1396938, 1696512, 656056, -1179505, -44023, -2864743, -172336, 3119220, 1845762, -1472100, 82141, 1650878, -4111894, -1278290, 312996, 1671279, --1730335, -3926137, -1023813, -3874597, 589484, -1642825, -1633161, 1837709, -2043331, 1550483, -819802, 1028645, -3154654, 973884, 186294, 1679869, -2723009, 1590212, 1247688, 2509335, --673773, 3206193, 1557463, 3257196, 1826435, -2621541, -1370632, 6327024, 753767, -858993, -441845, -52076, 3707094, 119722, -2083596, -1013075, 4282083, -1893544, -914828, -4538170, --466004, -1688459, 1822140, -378494, -469762, -1940788, -3853660, 13997835, 7126962, 6266358, -3201361, -1299228, -634581, -1255741, -3083250, -3836480, -3036542, -3928821, -1942399, 4026532, -1099512, -64425, -235149, 2678449, 947040, -1482301, -1977833, -1182727, -7457137, 3103651, -496606, 181999, -1752884, 1041530, -147103, -1890859, 756988, 2733210, -301721, -3200288, --1138166, -1337882, -1841467, 484258, 2849711, -747861, 417149, -3699578, 2075006, -4592394, -2609730, 712428, -194347, 85899, 2565169, -3528853, -3054259, -4831302, 872415, 907849, --200790, 2805688, -3467112, 669478, -900869, 96100, -2710124, 1940788, 326418, -1605244, -2405719, -4778688, 1547799, -2601140, 4171487, 2243584, 71941, 393526, -1866700, -5873368, -3508988, -1176284, 12961138, 6540162, 8377871, 2611877, 2688650, -250182, 3131568, 606664, -2757369, -1956895, 5606543, -1227824, -6921877, -1574106, -102542, 626528, -2360622, 5385352, -45097, 2265059, 4713727, 2689187, -180389, 260919, 943282, -4247186, -3224447, 2068027, -1918777, -1369021, 235686, 2486249, -4716948, 6598681, -884763, 1213865, -1239098, 2631741, -3022583, 451508, -3663607, -3204046, 6616934, 447750, -2242510, 7516, 3708168, 3220689, --2281702, -2445984, -6290517, -1567126, -2726231, 566399, -2488934, 860604, -6126771, -2073396, -425739, -2059437, 1032403, 2713883, -1457068, 198105, 839666, -1121523, 2032593, 221728, -2620467, 457414, -1299765, -2910377, 79994, -3634616, 1032940, 848256, 2986613, -9110699, --2680597, -2234994, 1746978, 1549946, -5896453, -2942590, -1012002, 1248762, 3433826, 804233, -4635881, -3882651, -5102421, 1314797, 375810, -1174137, -3432753, 11545946, -417149, 2902861, -900869, 134755, -66572, -2049773, -4276177, -3753265, -899796, 2763275, -2298881, 5914170, --1884417, -830002, -4847408, -6273337, -311922, -4102231, -1925219, 7923678, -4271882, -1525250, --4139275, 1302449, 421444, -1880122, -4355097, -1184337, 258235, -5515275, 835371, -3133179, -4379256, 2374580, -2158758, -1646046, -1085553, 877784, 13959, 2879239, -1459215, -2614025, --1971927, 6995428, 7012608, -2840047, -6234145, 307627, 2291365, -850940, 2202245, -3437585, -836445, -4017942, 2555506, -1015760, 7474854, 1490891, -29103772, -4935455, -8248485, -9767829, -2771865, -3431679, -8130910, -7092602, 1357210, -6990060, 1169842, 9950902, -2313377, 4162897, -3509525, 8360691, 2436857, -6146635, 1584306, 9101573, -4115653, 4432943, -6629819, -6445136, -2282775, 2468533, 7543573, 228707, -4235375, 4037806, -2754685, 3047816, -118648, 4398584, --3642132, -2751464, -4086125, -164819, 1075352, -1936493, 3641059, -7929584, 1292248, 7515656, -1993939, -2454574, 3313031, -4232691, -1673964, -9992778, -2526515, -616328, 1888175, -147640, -5604396, -8132521, 1163399, -1428614, 4357245, 1712618, -1053341, 5131949, -4387309, -1126892, --3386582, -8023536, -2585570, -2328946, -1486596, 4929549, -4333085, -8951786, 1153199, 1567663, -225486, -14581414, 8320963, 9363029, -502511, 5251672, 2397129, 11059541, 14716169, 1882269, -1931662, 4212826, 1834488, 2436857, -2084133, 2900714, -2418067, 3853660, 4509179, -12616466, -6540162, -1399623, -2326262, -3919158, -5092758, 2037425, 3594351, 5711233, 1134408, 947040, --7342247, 288837, -2128156, -2494839, -1067299, 943282, 450972, -607738, 7264937, -425202, --2365990, 2336999, -2771328, 3650722, 4934918, 5405753, 2895345, 532576, -2981244, 6035503, -2012729, 745714, 723165, 722091, 537945, -3621194, -4865124, 4427038, -4508642, 4231617, -4106526, 2798171, -460098, -3389803, 3172907, 3730716, 8790724, 3817152, 3532611, 1870995, --7962333, -2703145, 1517197, -1508070, 4250944, -7394323, 1329829, 26977226, 8202314, 1942399, -5334887, 13452911, 5490042, 16231218, 4032438, -3660386, -1131724, -1435593, -1522029, 4349192, -7013682, -3320547, 1526324, 4790499, -1786706, -6853694, 5400922, -721018, 2573759, -2393371, --3387656, 5448703, 1299228, -600222, -1571958, -6263673, -3052111, 3245385, 833761, -2221035, --1090922, 834297, 2310693, 6104223, 1945620, -5825587, -1333587, 263604, -1822140, 1950452, -2914135, -5874442, -6993818, -514859, 1708323, -850404, 5337571, -10035191, -2151779, -4614406, --5632850, -726923, -484794, 1351841, 5258651, -166430, 740882, 1604170, -920734, 6974490, -4459250, -5929203, -5167920, 3773666, 8521752, -854162, -4079145, 8351564, 4417374, 1831267, --3790846, 12896713, 6802155, 11567958, -3678103, -287226, -2694018, 11640435, -12043625, -2160369, -3499862, -2783676, -2129767, 3607773, -1075889, -4247723, 10866804, 5525476, 1517197, 17386564, --4580583, -1651415, -3489124, -339839, 3227131, -5093295, -318364, -2891587, 7075422, -6271726, -1792612, -128849, -1555852, 76236, 4248260, 2167348, -5178120, -10026601, 454193, 1347009, -8046085, 8562554, 9352828, 193810, -5061619, 5911486, -15749645, -3313031, -6075231, -9998684, -6671158, -2882997, -2839510, 4280472, -1683627, -3539590, 14057428, -697932, -3980898, 3933116, -482110, 2717104, 2805688, 776315, 8495445, -6175089, -3065533, -723702, -7239168, -1403381, -1323387, -3349001, 2374580, 2417530, 8662949, -5479305, 2573759, 4647692, 2928631, -20774220, --30985504, -5324686, 1643899, -615254, 970663, -1523103, -6115497, -3572339, -4843650, -1388885, -5186173, 5986111, -5333813, -8106751, 7050726, 1404991, -4278325, 344671, -574452, -4929549, --3960497, 11469710, 6012954, -6150393, 3316789, 1322313, 5097053, -5944772, 6856379, -6604586, -4781373, 3049964, -1195075, -3031173, 3175055, -12317429, -5929203, 7696582, 12470438, 6904160, --8323647, 329102, -5824513, 8280160, 1938104, 2270964, 841277, -6526740, 3526168, 10152229, -1402307, 7743826, 5615133, 3686693, 6051072, 12473659, -3086471, -12007118, 6271189, 348966, --2593087, 969052, 10895795, -3944391, -7009924, 4009352, -1602023, -811212, -2429878, -1176284, --2950106, -5240397, -2535641, 7611219, -9346923, -5521181, 1473711, -12061342, -7698192, 1911261, -2001455, 15828565, -13857175, -9654550, -5310190, -2758443, -1663226, 5028333, 5040144, -7510824, -7632694, -1893007, 3479461, -5454072, 11336566, -2340757, -4236985, 7162395, 5282810, 4102768, --7687992, -7384123, 9558450, -5164698, 2800856, 2183991, -3503083, 7976291, 2425583, -166430, -1744294, 5811628, 7582765, 2202245, -6910603, 1426466, -9839770, 5644124, 2398202, -11041824, -7558069, 1642288, -5847061, 9820443, 2957085, -2845416, 5570036, -1040993, 10729365, -2646774, --3078955, -2451890, -1810866, 14222247, 2602213, 161598, 3411278, -12098923, -8083129, -8209830, -239444, 7634841, 241055, 9524627, -13144211, -4873178, -8883603, -6911676, 16400869, -1342177, -4441533, 5415417, -16287053, 5187247, -7072738, 4079682, -4984847, 13196287, 2069101, -8982387, -1312649, -9156333, 7439420, 14582488, -12409771, 8289287, 2895345, -187905, 5838471, 15545097, --5978058, 165893, 4604205, -16594143, 893353, 7824357, -4750234, 5667210, 5878737, -2860985, -14985141, -7300371, -13689671, -5648419, 1578937, 580894, -2843268, -5651640, 4056597, 4030290, --35970, -9357660, -2286533, -2189897, 6381248, -3954054, 25233470, -2922188, 3602941, -900869, --1078037, -11985106, 1261647, 9364102, 7364795, 24915106, -2626909, -2091649, -5070209, -670015, --6893423, -214748, 9927817, -4939750, -960462, 2116345, 2400887, 10044855, 7981660, 2574833, -19155018, -3266323, -17568026, -17348446, -12382928, -2268280, 5623186, -1533303, -4858682, 28867012, --20871394, -15592879, -5219996, -9838696, -11572253, 13992467, 5403069, 2824478, -4657892, -2776696, -16601122, -4931696, -7440494, -20274394, -3282966, -569620, 9157944, 3425237, -4529043, 1119913, -7920994, 3629247, 4753992, 12763032, 15743739, 4290673, -6602976, 3936875, -10344429, 6409165, -4866198, -3811247, -325344, -7918309, 2361158, -187368, -15400142, 13862544, -2064269, -7121056, -7998303, -14077292, -4009889, 14374182, 7591892, -787053, -418222, -19438486, 5562520, 9806484, -4894652, 2742874, -2193118, -14673219, -41999948, -4113505, 6990060, 10529649, -2457258, -12950937, -18622978, -10399726, 7556458, 14091788, 10786273, 1088774, 13248363, 376883, 3248606, 1745904, -6758668, 209380, 18790, 17608292, -10226317, -6015639, 13573707, 14431627, -4387309, -6215355, --2134062, -3346317, 14933601, 10991895, -28192702, -2224256, 1433445, -12079596, 4302484, -17980344, -13455596, 4231617, -3008625, 8568460, 3073586, -3168612, -7098507, -3825205, 19345606, 1582159, --946503, 5225365, -3511673, 8837432, 22950694, 10433549, -4239670, -3431142, -4253092, 14501957, -4127464, 14668387, 8878234, 7689602, 3270081, -5323612, -7397008, 6936909, -14805289, 3127273, --8185134, -5550709, -206158, 10424959, 699006, 1462973, 2844342, -2398739, 15659988, 21756694, -23571318, 504122, 10471130, -13752485, 5021354, 8868034, -7050726, 12811351, -10256382, -19177028, -2255932, -9886478, -1813550, 1260036, -10606422, 2860985, 14253923, -8572755, -8278550, 7094749, -13786845, -1040456, -3228742, -16646219, 30662846, 2398739, 7636989, 24213416, -9248675, 2854543, --5003100, 6691559, -7332046, 7280507, -17221746, -19437412, -1097364, -11345693, -1399623, -688269, --1843615, -2946885, 748935, -5098126, 4427575, -15375446, -6854231, -20885352, -1635846, 5289252, -9637907, 23399518, 12160126, 4382478, 2330020, 7011534, 4473746, 4290136, 8644159, 10145250, --3754338, -19039590, -19972672, -12811351, -8615168, 2347737, 5762773, -6708202, -12074227, -19315004, --231928, -7117298, 17171816, -7608535, 3645890, -13269301, -7533910, -1973538, -6608881, -26035018, --28608240, 7990250, 1715839, 1142998, 12952011, 8492224, 10071161, 9564355, -18563922, -3331284, -30698278, -5580773, -13881334, 5093295, -9003325, 3603478, -22107808, 8318278, -11836393, 4241280, -18926848, 13588203, 2282775, 14455786, -2360085, -6582575, 8609799, -11890617, -21855478, -33794412, -3199751, 194884, 13272523, 8881992, -12016782, -6890202, -32139240, -2739116, -14770393, 2963528, --7253126, -4227859, -5894843, -3019362, -2177549, -11924977, -4730907, -13814762, 10850161, -3314641, -9330280, 22608170, -11970611, 5985574, -1578401, -6531572, 6333466, -13241921, -20876762, 9374303, -5306969, 9287867, 6657200, -45287744, -19839528, 5010080, -14461155, -2204392, -12306692, 17593796, -22717692, -2141041, 25081536, 2394444, 11581379, -4424890, -472983, -15066208, 9125195, 16594143, -4248797, 28408524, 1093069, 2615098, -8335995, -14703821, 18076980, 26206280, 10241350, 3490198, -3287261, 8395050, 1510218, -470299, -25477210, -17845590, -8159901, -32974612, -40134320, -30504468, --13312788, 8759586, 151934, -7572564, -14404783, -411780, 27173184, 12660490, -23004918, -4301947, --4437775, -16996260, -2552284, 766652, 11660299, 7839389, -17077326, 12088722, -9483825, 4861366, --8814347, 2312840, -13010530, -5477694, 6993281, -24659018, -4263829, -9603547, 8289824, -6512244, --21998822, 25779468, 25672630, -165356, -9920838, 13798119, -33929168, -11253888, 10488310, -12060268, --7000797, -1437203, -10812580, 1626182, -2620467, -23535348, 10051834, -3529926, -6885370, -8480413, --5931350, -2092723, -6200322, -10421201, 19071266, -9798431, -9044664, 8274792, -373125, 30400316, --6499360, -20309826, 10679436, -11173357, -9207336, -16343424, 9554692, 17774722, -39045012, 956167, -29328184, -8668318, -26057030, 51675436, 36187784, -275415, -10143102, 8573292, -31092878, 964757, -37918120, -6273337, -13627931, 1116155, 43044700, -5699959, 9215926, -8694624, -19901268, -15310485, --4291746, -6677601, 7720741, 11676942, 343597, -15704011, -23095650, -20381768, -3633006, -3957812, --11565273, 11307038, 8372502, -8471286, -11422466, -11487964, 6679211, 3174518, 8262980, 22484154, --320512, -17651778, 12382928, 5843303, 4062502, 2246268, -526134, -7950522, 15860240, 9226663, --6601902, -6600828, -5266704, -19916838, 5611375, 16571594, 4480725, -13507135, 17018808, 13911399, -6896644, 3263638, -9310952, 6152541, -30274688, 6174016, -2217814, 28311350, -10038412, -11586748, -5130876, -5166309, -1285806, -17495012, -4539244, -3275986, 24288040, -14925548, -35012572, -13083007, -48520784, 2118493, 7902203, -7930657, -16156593, -21281026, -7281044, 6303402, 14100378, 12058658, --10488847, 201327, -21665426, -7580081, 7537668, -17810156, -9883257, -6541235, 26112864, 14069239, -14288282, 14048301, -15427523, 3205656, 5327907, 6646462, -1684701, 18206904, -4136591, 8315057, -13509283, 5816997, 3549791, 12213813, 15669651, -8778913, -19102404, 13229573, -2403034, 790811, --20247012, -17676474, 3792456, -8383240, -7696045, 17149804, -17289390, 22461068, 13204877, -8431558, -10566693, -11382737, -13506598, -14042932, 21212844, -14101451, 5895380, 8348880, -26651346, 4166118, -1480690, -18082886, -36258652, -28675350, 20475182, -20692616, -2857227, -17951890, -7785702, -11463805, --4959077, 13897440, 1109175, -9687836, 9076340, 26416196, 26193394, 25622164, -9109089, 223875, --20653424, -936303, 4440460, 3653944, -17999672, -20136954, -30166240, 21217676, 3236795, 7102802, --4038880, 11191611, -7378754, -8578660, 7646116, 16331076, 5134097, 10767483, 34858492, -4831838, --18816788, -42890616, -4634270, -16440061, -6611029, -9989020, -18328772, -13734232, -28107340, -3049427, -1341640, 10946798, 32822676, -25150792, -7930120, -3541201, 12214887, 11753178, 32830730, 5077188, --32700808, -7012608, 9595494, 28526100, 9725417, -41104984, -14323716, 39802000, 6312528, 39868572, --19544786, 3009698, 6142877, 25134686, 1178432, 23267986, 35306240, 6930467, 30721902, 21623012, -8604430, 40373228, 36217848, 13792214, 54392004, 42121820, 29000692, -35771172, 2875481, 21097954, -15159087, 5941014, -22724136, -26813480, -11196980, 9338870, -29704530, 31659814, -14780593, 21501680, -7524246, -22612466, 1739462, 17690434, -11664057, -23628762, 15312095, -4671851, 12870406, -6299644, -1969243, 8451422, -17712446, 613643, -8733816, 2211908, -27783070, -17945984, 23825794, 3820374, -8735963, -17356500, 19291382, 21333102, -15424301, 14645838, -21684216, -1495722, -12700755, 17658222, -34876744, 2345052, 42652248, -8057896, -3244848, 5203890, 3406983, 171799, -25752624, 46275052, -27132920, -54761, 22725746, 21805548, 23715198, -5858336, -1222992, -40235792, 19221052, 24143622, --6118181, -3872450, 27079768, 18112414, 14301167, 37737192, 5747740, -13806709, -20830592, 10058813, --6097243, -21560736, 21665426, -25713970, 2498060, 9557913, -18938658, -29949880, -19534048, -7334194, -5667746, 21638046, -34846144, 18933290, 34573948, -2678449, 39526584, 9286793, -30623116, -22164716, --601295, -13444858, -17873506, 18852222, 26477400, -4500052, 19011136, 20847772, -16232292, 14053133, -29496224, -3865471, -35321812, 12418898, 850404, -9615358, 12178917, 25873420, -7082938, -16433619, -8793946, -14621142, -14257681, -3442953, 26600880, 18760418, -33212446, 8795019, 16910360, -25963614, --13172128, 26029650, -5850819, -43827992, -3383897, 32311038, -9444096, -62300112, 64623152, -20391430, --5299990, -33503966, 42460048, 10566156, -11990475, 26792542, -15338402, -15687368, -5541582, 72640248, -27240294, -34441344, -25836376, 25993678, -4538170, 39085276, 3018825, 28465432, -41175316, 31482648, -62420908, 2182917, -3776350, -14314052, -7494181, -28122908, 60033444, 32836098, -28589986, 26800596, -62093416, 11717208, -23668492, -5935108, -5616207, 10613938, 9558450, -19541028, -27285390, 7122130, --23051626, 4415764, -14254460, -16898012, -3375844, 2617783, 8155069, -18796388, -7263327, -7567196, --22898082, 19224810, -7037841, 1073205, -3195993, -15607911, 6359236, 4185446, 766115, -3483219, -395137, -702227, -8913131, -19767050, 8607114, -9862856, 8717710, 5891622, -19446002, -15978889, --1630477, -2352032, -2075543, -4269735, 16152835, -11105712, 1770600, -20864952, 17918604, -20421496, --10717554, 10191421, 362925, -16316044, 13072270, -21930104, 1709934, 6746320, -572841, 2559264, -10539850, 5195300, -22716082, 11709155, 1573569, -13420162, 19432580, 7978439, -21513492, -2011655, --17022030, -1926293, 7458211, 5865852, -20632486, 25733834, -36866388, -46635292, -16768089, 139707776, -112267224, 73978664, 135693584, -54192824, -128086128, -41507100, -207131776, -81186160, 5935645, -49030272, -95090040, 129360120, 21248276, 82027432, 141749488, 2546379, 39017092, -9804337, -166732784, -138470288, --104308112, -104123968, -51167556, 78373488, 42266772, 60453812, 173771152, 73049344, 10492068, 103397040, -48080548, -60544544, 19915226, -50980724, -169347872, -41613400, -88771072, -175013472, -29521994, 2915746, --43189116, 116514944, 135098192, 52311092, 158905744, 160296240, 29229400, 60841432, 26987964, -103806672, --115757424, -108985872, -194230768, -172377968, -66453344, -81277424, 15010911, 100990784, 139574624, 114286392, -178541792, 131085088, 69427608, 6489696, -25514790, -108342696, -130485400, -98752032, -115805744, -99387688, --9206799, -13757317, 16040092, 73951824, 14881525, 7090991, 0, 0, 0, 0, -0, 0, 0, }, +241592, 2704756, -2811056, -4813585, -194884, -3294777, -300111, -868120, -7608535, -6163815, +-1093069, -2480881, 3034395, -1336809, 1396938, 1696512, 656056, -1179505, -44023, -2864743, +172336, 3119220, 1845762, -1472100, 82141, 1650878, -4111894, -1278290, 312996, 1671279, +-1730335, -3926137, -1023813, -3874597, 589484, -1642825, -1633161, 1837709, -2043331, 1550483, +819802, 1028645, -3154654, 973884, 186294, 1679869, -2723009, 1590212, 1247688, 2509335, +-673773, 3206193, 1557463, 3257196, 1826435, -2621541, -1370632, 6327024, 753767, -858993, +441845, -52076, 3707094, 119722, -2083596, -1013075, 4282083, -1893544, -914828, -4538170, +-466004, -1688459, 1822140, -378494, -469762, -1940788, -3853660, 13997835, 7126962, 6266358, +3201361, -1299228, -634581, -1255741, -3083250, -3836480, -3036542, -3928821, -1942399, 4026532, +1099512, -64425, -235149, 2678449, 947040, -1482301, -1977833, -1182727, -7457137, 3103651, +496606, 181999, -1752884, 1041530, -147103, -1890859, 756988, 2733210, -301721, -3200288, +-1138166, -1337882, -1841467, 484258, 2849711, -747861, 417149, -3699578, 2075006, -4592394, +2609730, 712428, -194347, 85899, 2565169, -3528853, -3054259, -4831302, 872415, 907849, +-200790, 2805688, -3467112, 669478, -900869, 96100, -2710124, 1940788, 326418, -1605244, +2405719, -4778688, 1547799, -2601140, 4171487, 2243584, 71941, 393526, -1866700, -5873368, +3508988, -1176284, 12961138, 6540162, 8377871, 2611877, 2688650, -250182, 3131568, 606664, +2757369, -1956895, 5606543, -1227824, -6921877, -1574106, -102542, 626528, -2360622, 5385352, +45097, 2265059, 4713727, 2689187, -180389, 260919, 943282, -4247186, -3224447, 2068027, +1918777, -1369021, 235686, 2486249, -4716948, 6598681, -884763, 1213865, -1239098, 2631741, +3022583, 451508, -3663607, -3204046, 6616934, 447750, -2242510, 7516, 3708168, 3220689, +-2281702, -2445984, -6290517, -1567126, -2726231, 566399, -2488934, 860604, -6126771, -2073396, +425739, -2059437, 1032403, 2713883, -1457068, 198105, 839666, -1121523, 2032593, 221728, +2620467, 457414, -1299765, -2910377, 79994, -3634616, 1032940, 848256, 2986613, -9110699, +-2680597, -2234994, 1746978, 1549946, -5896453, -2942590, -1012002, 1248762, 3433826, 804233, +4635881, -3882651, -5102421, 1314797, 375810, -1174137, -3432753, 11545946, -417149, 2902861, +900869, 134755, -66572, -2049773, -4276177, -3753265, -899796, 2763275, -2298881, 5914170, +-1884417, -830002, -4847408, -6273337, -311922, -4102231, -1925219, 7923678, -4271882, -1525250, +-4139275, 1302449, 421444, -1880122, -4355097, -1184337, 258235, -5515275, 835371, -3133179, +4379256, 2374580, -2158758, -1646046, -1085553, 877784, 13959, 2879239, -1459215, -2614025, +-1971927, 6995428, 7012608, -2840047, -6234145, 307627, 2291365, -850940, 2202245, -3437585, +836445, -4017942, 2555506, -1015760, 7474854, 1490891, -29103772, -4935455, -8248485, -9767829, +2771865, -3431679, -8130910, -7092602, 1357210, -6990060, 1169842, 9950902, -2313377, 4162897, +3509525, 8360691, 2436857, -6146635, 1584306, 9101573, -4115653, 4432943, -6629819, -6445136, +2282775, 2468533, 7543573, 228707, -4235375, 4037806, -2754685, 3047816, -118648, 4398584, +-3642132, -2751464, -4086125, -164819, 1075352, -1936493, 3641059, -7929584, 1292248, 7515656, +1993939, -2454574, 3313031, -4232691, -1673964, -9992778, -2526515, -616328, 1888175, -147640, +5604396, -8132521, 1163399, -1428614, 4357245, 1712618, -1053341, 5131949, -4387309, -1126892, +-3386582, -8023536, -2585570, -2328946, -1486596, 4929549, -4333085, -8951786, 1153199, 1567663, +225486, -14581414, 8320963, 9363029, -502511, 5251672, 2397129, 11059541, 14716169, 1882269, +1931662, 4212826, 1834488, 2436857, -2084133, 2900714, -2418067, 3853660, 4509179, -12616466, +6540162, -1399623, -2326262, -3919158, -5092758, 2037425, 3594351, 5711233, 1134408, 947040, +-7342247, 288837, -2128156, -2494839, -1067299, 943282, 450972, -607738, 7264937, -425202, +-2365990, 2336999, -2771328, 3650722, 4934918, 5405753, 2895345, 532576, -2981244, 6035503, +2012729, 745714, 723165, 722091, 537945, -3621194, -4865124, 4427038, -4508642, 4231617, +4106526, 2798171, -460098, -3389803, 3172907, 3730716, 8790724, 3817152, 3532611, 1870995, +-7962333, -2703145, 1517197, -1508070, 4250944, -7394323, 1329829, 26977226, 8202314, 1942399, +5334887, 13452911, 5490042, 16231218, 4032438, -3660386, -1131724, -1435593, -1522029, 4349192, +7013682, -3320547, 1526324, 4790499, -1786706, -6853694, 5400922, -721018, 2573759, -2393371, +-3387656, 5448703, 1299228, -600222, -1571958, -6263673, -3052111, 3245385, 833761, -2221035, +-1090922, 834297, 2310693, 6104223, 1945620, -5825587, -1333587, 263604, -1822140, 1950452, +2914135, -5874442, -6993818, -514859, 1708323, -850404, 5337571, -10035191, -2151779, -4614406, +-5632850, -726923, -484794, 1351841, 5258651, -166430, 740882, 1604170, -920734, 6974490, +4459250, -5929203, -5167920, 3773666, 8521752, -854162, -4079145, 8351564, 4417374, 1831267, +-3790846, 12896713, 6802155, 11567958, -3678103, -287226, -2694018, 11640435, -12043625, -2160369, +3499862, -2783676, -2129767, 3607773, -1075889, -4247723, 10866804, 5525476, 1517197, 17386564, +-4580583, -1651415, -3489124, -339839, 3227131, -5093295, -318364, -2891587, 7075422, -6271726, +1792612, -128849, -1555852, 76236, 4248260, 2167348, -5178120, -10026601, 454193, 1347009, +8046085, 8562554, 9352828, 193810, -5061619, 5911486, -15749645, -3313031, -6075231, -9998684, +6671158, -2882997, -2839510, 4280472, -1683627, -3539590, 14057428, -697932, -3980898, 3933116, +482110, 2717104, 2805688, 776315, 8495445, -6175089, -3065533, -723702, -7239168, -1403381, +1323387, -3349001, 2374580, 2417530, 8662949, -5479305, 2573759, 4647692, 2928631, -20774220, +-30985504, -5324686, 1643899, -615254, 970663, -1523103, -6115497, -3572339, -4843650, -1388885, +5186173, 5986111, -5333813, -8106751, 7050726, 1404991, -4278325, 344671, -574452, -4929549, +-3960497, 11469710, 6012954, -6150393, 3316789, 1322313, 5097053, -5944772, 6856379, -6604586, +4781373, 3049964, -1195075, -3031173, 3175055, -12317429, -5929203, 7696582, 12470438, 6904160, +-8323647, 329102, -5824513, 8280160, 1938104, 2270964, 841277, -6526740, 3526168, 10152229, +1402307, 7743826, 5615133, 3686693, 6051072, 12473659, -3086471, -12007118, 6271189, 348966, +-2593087, 969052, 10895795, -3944391, -7009924, 4009352, -1602023, -811212, -2429878, -1176284, +-2950106, -5240397, -2535641, 7611219, -9346923, -5521181, 1473711, -12061342, -7698192, 1911261, +2001455, 15828565, -13857175, -9654550, -5310190, -2758443, -1663226, 5028333, 5040144, -7510824, +7632694, -1893007, 3479461, -5454072, 11336566, -2340757, -4236985, 7162395, 5282810, 4102768, +-7687992, -7384123, 9558450, -5164698, 2800856, 2183991, -3503083, 7976291, 2425583, -166430, +1744294, 5811628, 7582765, 2202245, -6910603, 1426466, -9839770, 5644124, 2398202, -11041824, +7558069, 1642288, -5847061, 9820443, 2957085, -2845416, 5570036, -1040993, 10729365, -2646774, +-3078955, -2451890, -1810866, 14222247, 2602213, 161598, 3411278, -12098923, -8083129, -8209830, +239444, 7634841, 241055, 9524627, -13144211, -4873178, -8883603, -6911676, 16400869, -1342177, +4441533, 5415417, -16287053, 5187247, -7072738, 4079682, -4984847, 13196287, 2069101, -8982387, +1312649, -9156333, 7439420, 14582488, -12409771, 8289287, 2895345, -187905, 5838471, 15545097, +-5978058, 165893, 4604205, -16594143, 893353, 7824357, -4750234, 5667210, 5878737, -2860985, +14985141, -7300371, -13689671, -5648419, 1578937, 580894, -2843268, -5651640, 4056597, 4030290, +-35970, -9357660, -2286533, -2189897, 6381248, -3954054, 25233470, -2922188, 3602941, -900869, +-1078037, -11985106, 1261647, 9364102, 7364795, 24915106, -2626909, -2091649, -5070209, -670015, +-6893423, -214748, 9927817, -4939750, -960462, 2116345, 2400887, 10044855, 7981660, 2574833, +19155018, -3266323, -17568026, -17348446, -12382928, -2268280, 5623186, -1533303, -4858682, 28867012, +-20871394, -15592879, -5219996, -9838696, -11572253, 13992467, 5403069, 2824478, -4657892, -2776696, +16601122, -4931696, -7440494, -20274394, -3282966, -569620, 9157944, 3425237, -4529043, 1119913, +7920994, 3629247, 4753992, 12763032, 15743739, 4290673, -6602976, 3936875, -10344429, 6409165, +4866198, -3811247, -325344, -7918309, 2361158, -187368, -15400142, 13862544, -2064269, -7121056, +7998303, -14077292, -4009889, 14374182, 7591892, -787053, -418222, -19438486, 5562520, 9806484, +4894652, 2742874, -2193118, -14673219, -41999948, -4113505, 6990060, 10529649, -2457258, -12950937, +18622978, -10399726, 7556458, 14091788, 10786273, 1088774, 13248363, 376883, 3248606, 1745904, +6758668, 209380, 18790, 17608292, -10226317, -6015639, 13573707, 14431627, -4387309, -6215355, +-2134062, -3346317, 14933601, 10991895, -28192702, -2224256, 1433445, -12079596, 4302484, -17980344, +13455596, 4231617, -3008625, 8568460, 3073586, -3168612, -7098507, -3825205, 19345606, 1582159, +-946503, 5225365, -3511673, 8837432, 22950694, 10433549, -4239670, -3431142, -4253092, 14501957, +4127464, 14668387, 8878234, 7689602, 3270081, -5323612, -7397008, 6936909, -14805289, 3127273, +-8185134, -5550709, -206158, 10424959, 699006, 1462973, 2844342, -2398739, 15659988, 21756694, +23571318, 504122, 10471130, -13752485, 5021354, 8868034, -7050726, 12811351, -10256382, -19177028, +2255932, -9886478, -1813550, 1260036, -10606422, 2860985, 14253923, -8572755, -8278550, 7094749, +13786845, -1040456, -3228742, -16646219, 30662846, 2398739, 7636989, 24213416, -9248675, 2854543, +-5003100, 6691559, -7332046, 7280507, -17221746, -19437412, -1097364, -11345693, -1399623, -688269, +-1843615, -2946885, 748935, -5098126, 4427575, -15375446, -6854231, -20885352, -1635846, 5289252, +9637907, 23399518, 12160126, 4382478, 2330020, 7011534, 4473746, 4290136, 8644159, 10145250, +-3754338, -19039590, -19972672, -12811351, -8615168, 2347737, 5762773, -6708202, -12074227, -19315004, +-231928, -7117298, 17171816, -7608535, 3645890, -13269301, -7533910, -1973538, -6608881, -26035018, +-28608240, 7990250, 1715839, 1142998, 12952011, 8492224, 10071161, 9564355, -18563922, -3331284, +30698278, -5580773, -13881334, 5093295, -9003325, 3603478, -22107808, 8318278, -11836393, 4241280, +18926848, 13588203, 2282775, 14455786, -2360085, -6582575, 8609799, -11890617, -21855478, -33794412, +3199751, 194884, 13272523, 8881992, -12016782, -6890202, -32139240, -2739116, -14770393, 2963528, +-7253126, -4227859, -5894843, -3019362, -2177549, -11924977, -4730907, -13814762, 10850161, -3314641, +9330280, 22608170, -11970611, 5985574, -1578401, -6531572, 6333466, -13241921, -20876762, 9374303, +5306969, 9287867, 6657200, -45287744, -19839528, 5010080, -14461155, -2204392, -12306692, 17593796, +22717692, -2141041, 25081536, 2394444, 11581379, -4424890, -472983, -15066208, 9125195, 16594143, +4248797, 28408524, 1093069, 2615098, -8335995, -14703821, 18076980, 26206280, 10241350, 3490198, +3287261, 8395050, 1510218, -470299, -25477210, -17845590, -8159901, -32974612, -40134320, -30504468, +-13312788, 8759586, 151934, -7572564, -14404783, -411780, 27173184, 12660490, -23004918, -4301947, +-4437775, -16996260, -2552284, 766652, 11660299, 7839389, -17077326, 12088722, -9483825, 4861366, +-8814347, 2312840, -13010530, -5477694, 6993281, -24659018, -4263829, -9603547, 8289824, -6512244, +-21998822, 25779468, 25672630, -165356, -9920838, 13798119, -33929168, -11253888, 10488310, -12060268, +-7000797, -1437203, -10812580, 1626182, -2620467, -23535348, 10051834, -3529926, -6885370, -8480413, +-5931350, -2092723, -6200322, -10421201, 19071266, -9798431, -9044664, 8274792, -373125, 30400316, +-6499360, -20309826, 10679436, -11173357, -9207336, -16343424, 9554692, 17774722, -39045012, 956167, +29328184, -8668318, -26057030, 51675436, 36187784, -275415, -10143102, 8573292, -31092878, 964757, +37918120, -6273337, -13627931, 1116155, 43044700, -5699959, 9215926, -8694624, -19901268, -15310485, +-4291746, -6677601, 7720741, 11676942, 343597, -15704011, -23095650, -20381768, -3633006, -3957812, +-11565273, 11307038, 8372502, -8471286, -11422466, -11487964, 6679211, 3174518, 8262980, 22484154, +-320512, -17651778, 12382928, 5843303, 4062502, 2246268, -526134, -7950522, 15860240, 9226663, +-6601902, -6600828, -5266704, -19916838, 5611375, 16571594, 4480725, -13507135, 17018808, 13911399, +6896644, 3263638, -9310952, 6152541, -30274688, 6174016, -2217814, 28311350, -10038412, -11586748, +5130876, -5166309, -1285806, -17495012, -4539244, -3275986, 24288040, -14925548, -35012572, -13083007, +48520784, 2118493, 7902203, -7930657, -16156593, -21281026, -7281044, 6303402, 14100378, 12058658, +-10488847, 201327, -21665426, -7580081, 7537668, -17810156, -9883257, -6541235, 26112864, 14069239, +14288282, 14048301, -15427523, 3205656, 5327907, 6646462, -1684701, 18206904, -4136591, 8315057, +13509283, 5816997, 3549791, 12213813, 15669651, -8778913, -19102404, 13229573, -2403034, 790811, +-20247012, -17676474, 3792456, -8383240, -7696045, 17149804, -17289390, 22461068, 13204877, -8431558, +10566693, -11382737, -13506598, -14042932, 21212844, -14101451, 5895380, 8348880, -26651346, 4166118, +1480690, -18082886, -36258652, -28675350, 20475182, -20692616, -2857227, -17951890, -7785702, -11463805, +-4959077, 13897440, 1109175, -9687836, 9076340, 26416196, 26193394, 25622164, -9109089, 223875, +-20653424, -936303, 4440460, 3653944, -17999672, -20136954, -30166240, 21217676, 3236795, 7102802, +-4038880, 11191611, -7378754, -8578660, 7646116, 16331076, 5134097, 10767483, 34858492, -4831838, +-18816788, -42890616, -4634270, -16440061, -6611029, -9989020, -18328772, -13734232, -28107340, -3049427, +1341640, 10946798, 32822676, -25150792, -7930120, -3541201, 12214887, 11753178, 32830730, 5077188, +-32700808, -7012608, 9595494, 28526100, 9725417, -41104984, -14323716, 39802000, 6312528, 39868572, +-19544786, 3009698, 6142877, 25134686, 1178432, 23267986, 35306240, 6930467, 30721902, 21623012, +8604430, 40373228, 36217848, 13792214, 54392004, 42121820, 29000692, -35771172, 2875481, 21097954, +15159087, 5941014, -22724136, -26813480, -11196980, 9338870, -29704530, 31659814, -14780593, 21501680, +7524246, -22612466, 1739462, 17690434, -11664057, -23628762, 15312095, -4671851, 12870406, -6299644, +1969243, 8451422, -17712446, 613643, -8733816, 2211908, -27783070, -17945984, 23825794, 3820374, +8735963, -17356500, 19291382, 21333102, -15424301, 14645838, -21684216, -1495722, -12700755, 17658222, +34876744, 2345052, 42652248, -8057896, -3244848, 5203890, 3406983, 171799, -25752624, 46275052, +27132920, -54761, 22725746, 21805548, 23715198, -5858336, -1222992, -40235792, 19221052, 24143622, +-6118181, -3872450, 27079768, 18112414, 14301167, 37737192, 5747740, -13806709, -20830592, 10058813, +-6097243, -21560736, 21665426, -25713970, 2498060, 9557913, -18938658, -29949880, -19534048, -7334194, +5667746, 21638046, -34846144, 18933290, 34573948, -2678449, 39526584, 9286793, -30623116, -22164716, +-601295, -13444858, -17873506, 18852222, 26477400, -4500052, 19011136, 20847772, -16232292, 14053133, +29496224, -3865471, -35321812, 12418898, 850404, -9615358, 12178917, 25873420, -7082938, -16433619, +8793946, -14621142, -14257681, -3442953, 26600880, 18760418, -33212446, 8795019, 16910360, -25963614, +-13172128, 26029650, -5850819, -43827992, -3383897, 32311038, -9444096, -62300112, 64623152, -20391430, +-5299990, -33503966, 42460048, 10566156, -11990475, 26792542, -15338402, -15687368, -5541582, 72640248, +27240294, -34441344, -25836376, 25993678, -4538170, 39085276, 3018825, 28465432, -41175316, 31482648, +62420908, 2182917, -3776350, -14314052, -7494181, -28122908, 60033444, 32836098, -28589986, 26800596, +62093416, 11717208, -23668492, -5935108, -5616207, 10613938, 9558450, -19541028, -27285390, 7122130, +-23051626, 4415764, -14254460, -16898012, -3375844, 2617783, 8155069, -18796388, -7263327, -7567196, +-22898082, 19224810, -7037841, 1073205, -3195993, -15607911, 6359236, 4185446, 766115, -3483219, +395137, -702227, -8913131, -19767050, 8607114, -9862856, 8717710, 5891622, -19446002, -15978889, +-1630477, -2352032, -2075543, -4269735, 16152835, -11105712, 1770600, -20864952, 17918604, -20421496, +-10717554, 10191421, 362925, -16316044, 13072270, -21930104, 1709934, 6746320, -572841, 2559264, +10539850, 5195300, -22716082, 11709155, 1573569, -13420162, 19432580, 7978439, -21513492, -2011655, +-17022030, -1926293, 7458211, 5865852, -20632486, 25733834, -36866388, -46635292, -16768089, 139707776, +112267224, 73978664, 135693584, -54192824, -128086128, -41507100, -207131776, -81186160, 5935645, -49030272, +95090040, 129360120, 21248276, 82027432, 141749488, 2546379, 39017092, -9804337, -166732784, -138470288, +-104308112, -104123968, -51167556, 78373488, 42266772, 60453812, 173771152, 73049344, 10492068, 103397040, +48080548, -60544544, 19915226, -50980724, -169347872, -41613400, -88771072, -175013472, -29521994, 2915746, +-43189116, 116514944, 135098192, 52311092, 158905744, 160296240, 29229400, 60841432, 26987964, -103806672, +-115757424, -108985872, -194230768, -172377968, -66453344, -81277424, 15010911, 100990784, 139574624, 114286392, +178541792, 131085088, 69427608, 6489696, -25514790, -108342696, -130485400, -98752032, -115805744, -99387688, +-9206799, -13757317, 16040092, 73951824, 14881525, 7090991, 0, 0, 0, 0, +0, 0, 0, }, { 1680943, -1800128, 2106682, -2403034, -3902515, 656593, 2688113, -1779727, 1821603, -6285685, -3461744, --3566970, 304406, 941672, -2608656, -3248069, 1381369, 3463891, 161598, -1697049, -4660577, --2656974, 3657702, -747861, 173409, 1690070, -1887101, 1130650, -1387274, -2617783, -1802813, -3553549, -4591320, -2381559, -2007897, 4698694, 3243237, 2784750, 326954, 1528472, -195958, -3016141, 1087701, 1097901, -15569, -159988, 5154498, 4013110, -13959, -3427384, 1087164, -609885, 1602560, -4969814, -184147, 3262028, 259846, -592706, 366146, 1138166, -1207423, --795106, -1487669, -1818382, -2593624, 1584843, 1868848, -3755949, -791348, -399432, 1054415, -1325534, -2320893, 1490891, 1031329, -670015, -1116155, -4995584, 15668041, 6101001, 3752191, -1309965, -3411278, 107911, 2941516, 5743445, -1074, 613107, 251792, -2019708, 471373, -1985886, -472446, 1939178, 2819109, 3924526, 1538672, 1641214, 1950452, 1859184, -3648575, -3656628, 6685117, -3168612, 1831804, 1107565, 1796370, 390305, 3915937, -2575370, -1031329, --2316598, 2216203, 6753836, -1233729, 3292093, -192737, -1490891, -5641977, 2097018, -2973191, -2574833, 1190780, 2870649, -420907, -1700807, 798864, -1170916, 3747896, 504122, -3149285, -3909494, -952946, 3047816, 2257542, -129923, 2167348, 4391604, -1325534, -1561221, -1329292, -2165737, -1870995, -2409477, 2682207, -13422, 1797444, -2993592, 4313221, 173409, -1203128, --635118, -378494, 12114492, 9703942, 4696010, 814970, -1931125, 5669894, -3376381, -3381213, --929860, -5991480, 3557844, 357019, -2661806, 1552631, 3410741, 6196027, -2960306, 3617973, -7773354, -2153389, -85899, 1916092, 3969087, -934692, 4334696, 3272228, 4385162, 1142998, -3310883, -3426847, 5888937, -626528, 5674189, 2985002, -802622, 816581, -1129576, -45634, --2275259, -908922, -2775086, -1836635, 1857573, -467078, -5827734, -1192390, 412854, -86436, --3342022, -3189550, -1849520, -1348083, 4212826, -1715303, -5063767, -6433861, -7355132, -2424509, --3374234, -230854, 855235, 3458523, -4925254, -2121177, 267899, -492311, -2391760, 477278, --5240397, -533113, -6157373, 2988760, -3577708, -1678259, 3497714, -744640, 6345278, -13913547, --3912715, -6981470, -1464047, 133144, 7594576, -3626026, -12739947, -4299799, -467078, 4933307, -1348083, -4535486, -11084237, -2676302, 2847027, -1088237, 6006512, 380105, 2544231, -470836, --5010616, -5142150, 3023120, 4022774, 292595, 1400159, -358093, 2514703, 382252, -6356015, -172872, 9291088, 1054415, -2131378, -1026497, -2288144, 373125, -1954210, -4168803, 6267968, --2104534, -2408403, 5352603, -2767033, -5152350, 366683, -193274, 300111, -7356742, 5925445, --2456721, -3221, 5073967, 4986994, -7916699, -1809792, 1174674, 1973001, -1002875, 4292283, -796180, 2175938, 2506650, 516470, 1880122, 3564823, 270583, 52613, 2700998, -8719320, --2597918, 144418, 3618510, 2294050, -2040646, -579284, -27736362, -11266236, -5412196, -8171176, -2722473, -2985002, -2456185, -579284, 3748433, -3457986, -3611531, -5815386, 1320166, 4721780, -1313186, -4083977, -4536559, 1129040, 4352413, 3561602, -5193689, -8225399, 777926, -7718056, -4124242, -368830, 2926483, -537945, 2824478, -3255585, -1064615, 7398081, -9220758, 3951907, -2339147, 674847, -3178813, 1684701, 4760971, 830539, -5574868, 737124, -3490735, 2363306, --7668664, -743029, -6939594, 4973572, -456340, -1884954, -1889786, 2490544, -11744051, 4942434, --3311957, -7726646, 2972117, 5200132, 6628209, 3245922, 1487132, -1098438, 863825, -1262184, -4294968, -3112778, 1265942, 2565169, 8222715, 504122, 204011, -6713034, 3748433, -3818226, -611496, -16157667, 8047695, 12164958, 2682207, 737124, 7176891, 2092186, 2393908, 3542811, -807991, 3724274, 4267587, -3422552, -284542, 326954, -3590056, -2623688, 267899, 1721208, --1975148, 12719546, 7193534, -2068027, 1265942, 3922916, 5513665, 5723044, -2107218, 3987877, -5201743, 118112, 1788854, 1247688, 3141232, 1857573, 1614371, 2600603, 3017215, -5704791, --3894462, -8709657, 1366873, -3145527, -3848828, 4336307, -792421, 2709051, -10173704, 11669426, --352187, -5631239, -516470, 9264781, 7272990, -1504312, 806380, 4498978, -1548873, 1950452, --2805151, -7289097, 1524177, 741419, -5180268, -2246268, -5042829, 1148904, 2968896, 1460826, --1907502, -4932233, -6776385, -9050570, -5460514, -2240362, 2168959, 29351806, 7729331, 2203318, --1138166, 17690970, 2015413, 8409009, 1667521, 5589363, 9131637, 3244311, -5187247, 5418638, -6241125, 977105, -553514, 1319629, 11483132, 761820, -4061965, -7092602, -2178622, -274878, --8160438, 1276679, 2265059, 4532801, 1839320, 3163244, 8735963, -2877628, -1549410, 5329518, --997506, -2536715, -610422, -8079371, 4974646, 3199214, 20938, 4928475, -2717104, -7138773, --15188078, -5706401, 5371394, 5906654, 13959, 4060892, -4425427, -4869419, 12032888, -7354595, -5348845, -6531572, 1109712, -9406515, -9723806, 9990631, -4145180, -4101157, 14078903, 663036, --1794760, -7150047, 5043366, 7761006, 216896, -4966056, -8590471, -1888712, 5919539, -2575370, -1840930, 14487998, 5409512, 11935714, -7130183, 2059437, 7373922, -9841918, -2760053, -4094715, -1449015, -5173825, -2433636, 6915971, -1751810, -1784022, -38655, 8761196, -2863133, -4648765, -10275709, 1185948, -6427956, 2521146, -1020055, 1169842, 4201552, -6007586, -788663, -4611721, --7057168, 528281, 708670, 1046361, -6925098, -8148627, 3531000, -1063541, 3456912, -703838, -4791573, 860604, 353798, -5342940, -4242354, 941135, 5346161, 1935420, -823560, 13659607, -3919158, 2017561, 6979322, 1979443, 5355288, 4452271, 3783329, 1562831, 3060701, -2414845, --455267, 698469, -5288179, 1214402, -8912057, 2272575, -5638219, 4641786, -2826089, 2420214, --457414, -4939750, 2388539, -1458678, 5864778, -4509179, 14237280, 11058467, 4726612, -18144626, --35951024, -1149441, -7472170, 6557342, -2161979, -9463960, -1272384, -7576323, -9111236, -7128035, -11346230, 6478422, -8066486, -4023848, 8581345, 5594195, 7636452, -4963909, 4850629, -4333085, --5131412, -992137, -2379412, -14529874, 3871913, 9148280, 3468186, -8384850, -2287070, 2176475, -2070711, -7376607, -1997697, -10830297, 2316598, -4777614, -717260, -3310883, 1988570, 12977244, --1524177, -1539209, 5946382, 9738838, -5623186, 3251827, 3190087, -6720013, 3849901, 4657892, --9086003, 2323577, 5538361, -382252, -9569724, -4864051, -6260989, 9584756, 3048890, 9477919, --5185100, -8371428, 1988033, 6129992, -2373506, -5432597, 4190814, 8310762, 5915244, -6127308, --4673998, 354872, 11985106, -401579, 6453189, 4974646, 3437585, -18808198, 547071, -104690, -11053635, 1919850, -3653407, 5572720, -2464774, 2062121, -9359807, -3576634, -5757941, -4159139, --11997454, -5443871, -6985228, 16482474, 10341208, 9744744, -11803107, -11242077, -4591857, 5083631, --151398, -939524, 751619, 2699924, -454730, 4155918, -6759205, -6985228, 233002, -2629057, --8457327, -9762998, -6757594, -6069863, -3517041, -4493073, -10857677, 4112968, 13917305, -3991098, -6644852, 7714298, -6205154, 6498286, 5011690, 671626, 12642773, -1772748, 10590852, 2652679, -1472637, -11074573, 4024384, 3513283, -2516314, 12968654, 11476153, 765578, -4287988, -8710731, -4072166, -8691940, 2702071, -1921461, 8251169, -1963874, -13032541, -1250372, -5577552, -4497905, --10477573, 8070244, -17010218, 7952669, 4929012, 7571491, -8224326, -13152264, 3433290, 4622459, -156766, -11009612, 10492068, 3678103, -6412386, -9634685, 4050154, -3974455, 17115982, 21066278, -2502355, -2774012, -8201777, 12185359, -13814225, -4238596, 15855946, 4590783, -3722663, -8348880, --8703751, -4103305, -246424, -10324565, 1906429, 12066174, -2007360, 4855461, -9003862, -7215545, --3160022, -5875516, 16246251, -5643587, 6998649, 6718403, 6272263, 2317135, 2806224, -11119670, --12214350, -10670309, -3037616, 8922795, 18810346, -7272990, -14525579, -2703682, -6988986, 4112431, -2455111, 11310796, -7133941, 401043, -9277129, -1117765, 14941654, -1431298, -9007083, 11647414, -3057480, 2356863, 5228049, -11873437, 1264868, -3667365, 466004, 6132677, 12186970, 26848378, --11698417, -9079024, -2841658, 5695664, -15726560, 6323803, -4283693, 7962870, -7088844, -3160559, -9669582, 7256884, 2691334, -4847408, -1829656, 13357348, 13035763, -2673080, 11374147, -3270618, -16750909, -7810935, -4192425, 3067681, 17549236, 12916577, 4192962, -9386114, -726923, -19505594, --3023120, 3117073, 8930848, 10548977, 18494130, 4932770, -408559, -825171, -7195144, -12122545, --945430, -10497437, 7583839, 2493766, 11766063, 6689412, -4108673, 11843909, -14030584, 6440304, --3175592, 1152662, -2485176, 15090904, 8700530, 4454955, 2621004, -26896696, -4342749, 16311749, -8100845, 1273458, -498216, 1139240, 12997108, 5884642, -20419348, -6219650, -7765301, 2499134, -695248, -19614042, 1269163, -17985176, -11570642, 328565, 9396315, 19220516, -5109938, -7394323, -727997, 7610145, 3827890, -11279121, -1103270, -9089761, -907849, -12480638, -1811939, -10694469, -86973, 11620571, 452582, 25330106, -10976863, -4777078, -9414031, 10488847, 16216186, -13109314, --4973572, -20478404, 3386045, 85362, 5137855, 5368172, -12160663, -6633040, 8507256, -3145527, --3149822, -11032160, 22150220, -2782602, -24976846, 7106024, -7063074, -6976638, 8092792, 7085623, --7734163, -7493644, -3078418, -13806709, -9211631, 4967130, 2361695, 5173825, -5116380, -9888088, --12671764, -11541651, 8865886, -17079474, -683437, 4529043, -6381785, 813359, -1189706, -1975685, --14954539, -2135673, -6840273, 9256191, 9920838, -1543504, 16050293, -341450, -1722282, -4507568, --2800319, 26380762, 228170, -12431783, 31034896, -8164196, -2496450, 2490007, 13336410, 9181566, --19821274, -8433168, -18831820, 3890704, 1260036, -6172942, -20766166, 565862, -9620727, 4033511, -4745939, 10239739, 663036, 7354058, 36323612, 7522635, 9142912, -6045704, -1916629, 15437186, --1296543, 857383, 4265977, 634045, -2259690, -8677445, 14638859, -15908559, 6485938, -23456428, --6976638, -11227581, -14190035, -12684112, -19864, -25636122, -8566312, 2939368, 14375792, 7750806, --24737402, 13458817, 9273908, 9636833, -15749108, 10934450, -7435126, -18609020, -6210523, -18545668, -8639327, 20715164, 5293011, -2764885, -14096620, 10565083, -15020038, 21556440, -4286914, -3242700, --13610214, -15597174, 2037425, 16518444, 5641440, -12989055, -4903242, 1953136, -2217814, 5028870, -16827682, 3206193, -10894185, 4935455, -3220689, 5073967, 18425410, -26065620, -11934104, -20965346, -11795591, -4228932, 1928440, -6934225, 14961519, -14891188, -15158550, -6857452, -3673808, -10747619, --18757732, -9006010, 3265786, 12134356, -17315698, 11203959, -6685117, 1281511, 21854404, 16865262, --583042, 8846559, 3954591, -3610457, -3027415, -30141006, 3786551, -3148748, 2549063, 5748277, --2806224, 709743, 29879014, -27369142, 2044941, 32767380, 3727495, 8959302, -13507135, -3648575, -16530255, 30058866, 809601, 26638998, -11223823, 24082418, -9368397, 17785996, 17242146, -4647155, -34398392, -6051072, -2649995, -10687489, -17300666, -17147120, -9242233, -10390063, -26328686, -11760157, --7202124, 8771934, 6605123, 587874, -15923054, -13939316, -10917807, -39524436, -27138824, -20107964, --1370632, 25968982, -16791712, -2704219, -12782360, -19817516, -15398531, -20230906, -19982872, -8630200, --23687282, -26925150, -22385370, 6034429, -15266461, -8769249, -19176492, 18393198, 31501438, 2214593, --2951716, -11349451, 3146601, -2386928, -199716, -2940979, 10350334, 1591285, 21689048, -18830748, -2229088, -16090558, 32646584, 7390565, -18166102, 14287746, -12845173, 11511586, -17460652, 10110353, -2162516, -11316702, 10315975, -17628156, -5118528, 4898947, 18093086, 7099044, 31645320, -7551090, --19484120, 1265942, -5188321, 1704028, -12779138, -12222940, -20927766, 1914482, -22333830, -5452998, --3232500, -20936354, 13530221, 15698105, -9762461, -2460480, -29527900, 31987306, 40177808, 4300873, --17894444, 1845762, -30837328, 56963616, 22438520, -5389647, -16736414, -5515275, -17822504, 19149648, -50599548, 398895, -32560684, -15875273, 18628346, 6001680, -6015102, 23110682, -4030827, 2269890, -14228690, -2167885, -13193603, -5220533, 11801496, -15159624, -12562242, -6077916, 5211943, -52613, --1977296, -6825777, 11113228, 319438, 16193637, 11601244, -15685221, 7147363, 19768124, 9984725, --14482630, 4958003, 3657165, 12184822, 769873, 3700651, 3930432, 4522064, 27604292, 24890410, -16340203, 34031172, -16824460, 17119202, -20368346, 12347494, 82678, 11203959, 15429670, 4003983, -4178466, 17514876, 8738111, -5776731, 11799349, -801011, 15699179, -17467096, -9579388, 619549, -37512244, -26829586, 2022930, -33449742, -4791036, 3285650, 11285027, -16055661, -6033892, -12608413, -47953848, 4274030, 3259343, -10256919, -6957847, 8378945, 7215008, 4843650, 18499498, 8242042, --7914551, 10357851, 19832012, -259309, 21788370, -1539209, 10635413, -21544630, 40269076, -5321465, --4552666, 7435662, -30198452, -7075959, -14387604, 22214108, 12064563, 12968117, -13856101, 6060199, -5520644, -17966386, 5690832, 17176112, 14261439, 5783711, -4125853, 3046206, -8494908, 31694712, -5286568, 15030238, 11979738, 17771500, -26381300, -798327, -7328825, 6517613, -9159555, -10378788, -23505282, -19835232, 17565880, -11894375, 18510236, -2078227, -16968342, 229781, -26032870, 19029390, -17069274, 21254182, -55068460, 18762564, 11758547, -14694694, -10014790, -13191992, 30808338, -38322384, -26703960, 62344672, 2749316, -23543936, -9909563, 22362820, 33370286, 13058848, -10438381, 5744519, --25005836, 1578401, -14023605, 22371410, 4465692, 4276177, -11431592, 8516383, -1241246, -12545599, -7413114, -12838731, -3344706, -11277510, -19412178, -15320685, 19020800, 10956998, 13173738, 8946417, --24016384, -10337986, 8062191, -10487773, 18502182, 8495445, 3755412, 6866579, 29485488, -10624675, --24538758, 49424872, -19914152, -31779000, 35094716, -18286898, -6318434, 4502200, 19448686, -22111566, --3161096, -751082, -9785546, 65031172, 2416993, -13868449, -1227287, -2207613, 19982872, -36049272, --22079354, -17056388, -10042707, -4076998, -25283398, -3030100, 884226, 7489886, 46467252, 40261560, --13120588, 30362198, -29037738, -32491964, 21750788, 23868208, -4982699, 4229469, 8114267, 15350750, -28202902, -2982318, 7524246, 28013388, -18195628, 2653753, -19704236, 21345988, 127238, 13173738, --13441100, -20140176, 18897856, -19905562, 6206765, -4293894, 17817134, 496069, 3918621, -10320806, -3437048, -7129109, -26337276, -20304458, 8918500, -1068373, -602906, 4923643, 19771346, -8163122, --5859409, -15824807, 7305203, 6797860, -1816771, -2471217, -43969728, 2864743, 12738336, -14928233, -11359652, -23568634, -4208531, 2616709, 15786152, 20437066, 2858301, -8134668, 6743099, 36089536, -31128312, 31547608, -630286, -1459215, 7314866, 5036386, -12972412, 10501195, 39398272, -25732222, --7662759, -6226092, 1483374, 3263638, 6587943, -18364206, -29102162, -9529996, 332323, 64684356, -34295312, 23694260, 175020, -2692408, -12106976, 30214558, 8730595, 20812338, -68183, -4630512, --3305514, -7863012, -41568840, 22873922, 22012782, -2222646, 35498440, 14404247, -22405770, -24223078, -11136850, -10574209, -19860466, 297427, 3161096, 8325794, -4122095, 11190000, -1942936, 10541997, -15909096, -14711337, -54099408, 28609850, -7205882, -18345952, 13728326, 18546742, 1857037, -38135552, --3678103, -2542621, -36967320, -24867324, 21330418, -6852084, -14264660, -14165339, 9905268, -38196756, --25071872, 49150532, -2952253, -30163556, 12764643, 26226680, 13079249, -42296300, 60400124, 22808424, --34896072, 19166292, 28165858, 3215857, -23074174, 24520506, 30156040, 16321949, -21036212, 20407000, -41720776, 1124208, 42201812, 48963164, -24869472, -16949014, -16652125, 46262704, 32168232, -21422224, -13737990, -13214541, -27692338, 25232396, 61399780, 8210904, -15160698, -14227079, 36017596, 35713728, -54715200, 23503134, -24098524, -7458748, -20358144, 12938589, -10388452, 16383690, 9149891, -24473260, -12089259, -24937116, -9695352, 1367410, -10494216, 2651606, 12715788, 11856257, -127775, -19546934, -3819300, 17967996, -7180649, 3784403, -8376260, -22981296, 23764590, -13320841, 16204912, -23638964, --15588047, -2094870, -21381958, -4637491, 20081656, -18864034, 26737782, 3343095, 21658446, 10465762, --11992086, -28481002, 23911156, 17025250, 9487583, 8095477, 24672976, -17069810, -10406706, -9055402, -7151658, 11498701, -3315178, -21783000, -1898912, -1206886, -24849070, -7367480, 2973728, 8750996, -18139258, 79457, -17688822, 24943560, -5120675, -1372779, 26343718, 15507516, -22845468, 9901510, --14052596, 11326903, -7173669, 13047574, -18346490, 11290932, -40273908, -49613852, -25073482, 143142128, -127679712, 75634376, 169090720, -36952824, -125483376, -45567456, -237379616, -126051384, -1654636, -62863288, -85979880, 154910880, 22672596, 90475632, 179632720, 28707562, 63127428, 4611721, -183081568, -154903904, --134901168, -150751200, -89887224, 72630584, 31986768, 72675680, 193899520, 114930640, 30708480, 141813920, -65990560, -89602144, 48207788, -65915936, -167860208, -22597434, -103662256, -193171520, -85969136, -21845814, --100008848, 109806744, 120618248, 54820964, 191907728, 214351088, 82310360, 104717208, 101109432, -115246320, --73480448, -146827744, -225312912, -209976656, -133017288, -136410848, -38623032, 83235928, 111571440, 146126592, -210413664, 185558160, 109989280, 76401024, 13536126, -92983360, -128986456, -99586336, -123028264, -157394976, --51923472, -65560528, -23392002, 70367672, 34575560, 912681, 0, 0, 0, 0, -0, 0, 0, }, +1800128, 2106682, -2403034, -3902515, 656593, 2688113, -1779727, 1821603, -6285685, -3461744, +-3566970, 304406, 941672, -2608656, -3248069, 1381369, 3463891, 161598, -1697049, -4660577, +-2656974, 3657702, -747861, 173409, 1690070, -1887101, 1130650, -1387274, -2617783, -1802813, +3553549, -4591320, -2381559, -2007897, 4698694, 3243237, 2784750, 326954, 1528472, -195958, +3016141, 1087701, 1097901, -15569, -159988, 5154498, 4013110, -13959, -3427384, 1087164, +609885, 1602560, -4969814, -184147, 3262028, 259846, -592706, 366146, 1138166, -1207423, +-795106, -1487669, -1818382, -2593624, 1584843, 1868848, -3755949, -791348, -399432, 1054415, +1325534, -2320893, 1490891, 1031329, -670015, -1116155, -4995584, 15668041, 6101001, 3752191, +1309965, -3411278, 107911, 2941516, 5743445, -1074, 613107, 251792, -2019708, 471373, +1985886, -472446, 1939178, 2819109, 3924526, 1538672, 1641214, 1950452, 1859184, -3648575, +3656628, 6685117, -3168612, 1831804, 1107565, 1796370, 390305, 3915937, -2575370, -1031329, +-2316598, 2216203, 6753836, -1233729, 3292093, -192737, -1490891, -5641977, 2097018, -2973191, +2574833, 1190780, 2870649, -420907, -1700807, 798864, -1170916, 3747896, 504122, -3149285, +3909494, -952946, 3047816, 2257542, -129923, 2167348, 4391604, -1325534, -1561221, -1329292, +2165737, -1870995, -2409477, 2682207, -13422, 1797444, -2993592, 4313221, 173409, -1203128, +-635118, -378494, 12114492, 9703942, 4696010, 814970, -1931125, 5669894, -3376381, -3381213, +-929860, -5991480, 3557844, 357019, -2661806, 1552631, 3410741, 6196027, -2960306, 3617973, +7773354, -2153389, -85899, 1916092, 3969087, -934692, 4334696, 3272228, 4385162, 1142998, +3310883, -3426847, 5888937, -626528, 5674189, 2985002, -802622, 816581, -1129576, -45634, +-2275259, -908922, -2775086, -1836635, 1857573, -467078, -5827734, -1192390, 412854, -86436, +-3342022, -3189550, -1849520, -1348083, 4212826, -1715303, -5063767, -6433861, -7355132, -2424509, +-3374234, -230854, 855235, 3458523, -4925254, -2121177, 267899, -492311, -2391760, 477278, +-5240397, -533113, -6157373, 2988760, -3577708, -1678259, 3497714, -744640, 6345278, -13913547, +-3912715, -6981470, -1464047, 133144, 7594576, -3626026, -12739947, -4299799, -467078, 4933307, +1348083, -4535486, -11084237, -2676302, 2847027, -1088237, 6006512, 380105, 2544231, -470836, +-5010616, -5142150, 3023120, 4022774, 292595, 1400159, -358093, 2514703, 382252, -6356015, +172872, 9291088, 1054415, -2131378, -1026497, -2288144, 373125, -1954210, -4168803, 6267968, +-2104534, -2408403, 5352603, -2767033, -5152350, 366683, -193274, 300111, -7356742, 5925445, +-2456721, -3221, 5073967, 4986994, -7916699, -1809792, 1174674, 1973001, -1002875, 4292283, +796180, 2175938, 2506650, 516470, 1880122, 3564823, 270583, 52613, 2700998, -8719320, +-2597918, 144418, 3618510, 2294050, -2040646, -579284, -27736362, -11266236, -5412196, -8171176, +2722473, -2985002, -2456185, -579284, 3748433, -3457986, -3611531, -5815386, 1320166, 4721780, +1313186, -4083977, -4536559, 1129040, 4352413, 3561602, -5193689, -8225399, 777926, -7718056, +4124242, -368830, 2926483, -537945, 2824478, -3255585, -1064615, 7398081, -9220758, 3951907, +2339147, 674847, -3178813, 1684701, 4760971, 830539, -5574868, 737124, -3490735, 2363306, +-7668664, -743029, -6939594, 4973572, -456340, -1884954, -1889786, 2490544, -11744051, 4942434, +-3311957, -7726646, 2972117, 5200132, 6628209, 3245922, 1487132, -1098438, 863825, -1262184, +4294968, -3112778, 1265942, 2565169, 8222715, 504122, 204011, -6713034, 3748433, -3818226, +611496, -16157667, 8047695, 12164958, 2682207, 737124, 7176891, 2092186, 2393908, 3542811, +807991, 3724274, 4267587, -3422552, -284542, 326954, -3590056, -2623688, 267899, 1721208, +-1975148, 12719546, 7193534, -2068027, 1265942, 3922916, 5513665, 5723044, -2107218, 3987877, +5201743, 118112, 1788854, 1247688, 3141232, 1857573, 1614371, 2600603, 3017215, -5704791, +-3894462, -8709657, 1366873, -3145527, -3848828, 4336307, -792421, 2709051, -10173704, 11669426, +-352187, -5631239, -516470, 9264781, 7272990, -1504312, 806380, 4498978, -1548873, 1950452, +-2805151, -7289097, 1524177, 741419, -5180268, -2246268, -5042829, 1148904, 2968896, 1460826, +-1907502, -4932233, -6776385, -9050570, -5460514, -2240362, 2168959, 29351806, 7729331, 2203318, +-1138166, 17690970, 2015413, 8409009, 1667521, 5589363, 9131637, 3244311, -5187247, 5418638, +6241125, 977105, -553514, 1319629, 11483132, 761820, -4061965, -7092602, -2178622, -274878, +-8160438, 1276679, 2265059, 4532801, 1839320, 3163244, 8735963, -2877628, -1549410, 5329518, +-997506, -2536715, -610422, -8079371, 4974646, 3199214, 20938, 4928475, -2717104, -7138773, +-15188078, -5706401, 5371394, 5906654, 13959, 4060892, -4425427, -4869419, 12032888, -7354595, +5348845, -6531572, 1109712, -9406515, -9723806, 9990631, -4145180, -4101157, 14078903, 663036, +-1794760, -7150047, 5043366, 7761006, 216896, -4966056, -8590471, -1888712, 5919539, -2575370, +1840930, 14487998, 5409512, 11935714, -7130183, 2059437, 7373922, -9841918, -2760053, -4094715, +1449015, -5173825, -2433636, 6915971, -1751810, -1784022, -38655, 8761196, -2863133, -4648765, +10275709, 1185948, -6427956, 2521146, -1020055, 1169842, 4201552, -6007586, -788663, -4611721, +-7057168, 528281, 708670, 1046361, -6925098, -8148627, 3531000, -1063541, 3456912, -703838, +4791573, 860604, 353798, -5342940, -4242354, 941135, 5346161, 1935420, -823560, 13659607, +3919158, 2017561, 6979322, 1979443, 5355288, 4452271, 3783329, 1562831, 3060701, -2414845, +-455267, 698469, -5288179, 1214402, -8912057, 2272575, -5638219, 4641786, -2826089, 2420214, +-457414, -4939750, 2388539, -1458678, 5864778, -4509179, 14237280, 11058467, 4726612, -18144626, +-35951024, -1149441, -7472170, 6557342, -2161979, -9463960, -1272384, -7576323, -9111236, -7128035, +11346230, 6478422, -8066486, -4023848, 8581345, 5594195, 7636452, -4963909, 4850629, -4333085, +-5131412, -992137, -2379412, -14529874, 3871913, 9148280, 3468186, -8384850, -2287070, 2176475, +2070711, -7376607, -1997697, -10830297, 2316598, -4777614, -717260, -3310883, 1988570, 12977244, +-1524177, -1539209, 5946382, 9738838, -5623186, 3251827, 3190087, -6720013, 3849901, 4657892, +-9086003, 2323577, 5538361, -382252, -9569724, -4864051, -6260989, 9584756, 3048890, 9477919, +-5185100, -8371428, 1988033, 6129992, -2373506, -5432597, 4190814, 8310762, 5915244, -6127308, +-4673998, 354872, 11985106, -401579, 6453189, 4974646, 3437585, -18808198, 547071, -104690, +11053635, 1919850, -3653407, 5572720, -2464774, 2062121, -9359807, -3576634, -5757941, -4159139, +-11997454, -5443871, -6985228, 16482474, 10341208, 9744744, -11803107, -11242077, -4591857, 5083631, +-151398, -939524, 751619, 2699924, -454730, 4155918, -6759205, -6985228, 233002, -2629057, +-8457327, -9762998, -6757594, -6069863, -3517041, -4493073, -10857677, 4112968, 13917305, -3991098, +6644852, 7714298, -6205154, 6498286, 5011690, 671626, 12642773, -1772748, 10590852, 2652679, +1472637, -11074573, 4024384, 3513283, -2516314, 12968654, 11476153, 765578, -4287988, -8710731, +4072166, -8691940, 2702071, -1921461, 8251169, -1963874, -13032541, -1250372, -5577552, -4497905, +-10477573, 8070244, -17010218, 7952669, 4929012, 7571491, -8224326, -13152264, 3433290, 4622459, +156766, -11009612, 10492068, 3678103, -6412386, -9634685, 4050154, -3974455, 17115982, 21066278, +2502355, -2774012, -8201777, 12185359, -13814225, -4238596, 15855946, 4590783, -3722663, -8348880, +-8703751, -4103305, -246424, -10324565, 1906429, 12066174, -2007360, 4855461, -9003862, -7215545, +-3160022, -5875516, 16246251, -5643587, 6998649, 6718403, 6272263, 2317135, 2806224, -11119670, +-12214350, -10670309, -3037616, 8922795, 18810346, -7272990, -14525579, -2703682, -6988986, 4112431, +2455111, 11310796, -7133941, 401043, -9277129, -1117765, 14941654, -1431298, -9007083, 11647414, +3057480, 2356863, 5228049, -11873437, 1264868, -3667365, 466004, 6132677, 12186970, 26848378, +-11698417, -9079024, -2841658, 5695664, -15726560, 6323803, -4283693, 7962870, -7088844, -3160559, +9669582, 7256884, 2691334, -4847408, -1829656, 13357348, 13035763, -2673080, 11374147, -3270618, +16750909, -7810935, -4192425, 3067681, 17549236, 12916577, 4192962, -9386114, -726923, -19505594, +-3023120, 3117073, 8930848, 10548977, 18494130, 4932770, -408559, -825171, -7195144, -12122545, +-945430, -10497437, 7583839, 2493766, 11766063, 6689412, -4108673, 11843909, -14030584, 6440304, +-3175592, 1152662, -2485176, 15090904, 8700530, 4454955, 2621004, -26896696, -4342749, 16311749, +8100845, 1273458, -498216, 1139240, 12997108, 5884642, -20419348, -6219650, -7765301, 2499134, +695248, -19614042, 1269163, -17985176, -11570642, 328565, 9396315, 19220516, -5109938, -7394323, +727997, 7610145, 3827890, -11279121, -1103270, -9089761, -907849, -12480638, -1811939, -10694469, +86973, 11620571, 452582, 25330106, -10976863, -4777078, -9414031, 10488847, 16216186, -13109314, +-4973572, -20478404, 3386045, 85362, 5137855, 5368172, -12160663, -6633040, 8507256, -3145527, +-3149822, -11032160, 22150220, -2782602, -24976846, 7106024, -7063074, -6976638, 8092792, 7085623, +-7734163, -7493644, -3078418, -13806709, -9211631, 4967130, 2361695, 5173825, -5116380, -9888088, +-12671764, -11541651, 8865886, -17079474, -683437, 4529043, -6381785, 813359, -1189706, -1975685, +-14954539, -2135673, -6840273, 9256191, 9920838, -1543504, 16050293, -341450, -1722282, -4507568, +-2800319, 26380762, 228170, -12431783, 31034896, -8164196, -2496450, 2490007, 13336410, 9181566, +-19821274, -8433168, -18831820, 3890704, 1260036, -6172942, -20766166, 565862, -9620727, 4033511, +4745939, 10239739, 663036, 7354058, 36323612, 7522635, 9142912, -6045704, -1916629, 15437186, +-1296543, 857383, 4265977, 634045, -2259690, -8677445, 14638859, -15908559, 6485938, -23456428, +-6976638, -11227581, -14190035, -12684112, -19864, -25636122, -8566312, 2939368, 14375792, 7750806, +-24737402, 13458817, 9273908, 9636833, -15749108, 10934450, -7435126, -18609020, -6210523, -18545668, +8639327, 20715164, 5293011, -2764885, -14096620, 10565083, -15020038, 21556440, -4286914, -3242700, +-13610214, -15597174, 2037425, 16518444, 5641440, -12989055, -4903242, 1953136, -2217814, 5028870, +16827682, 3206193, -10894185, 4935455, -3220689, 5073967, 18425410, -26065620, -11934104, -20965346, +11795591, -4228932, 1928440, -6934225, 14961519, -14891188, -15158550, -6857452, -3673808, -10747619, +-18757732, -9006010, 3265786, 12134356, -17315698, 11203959, -6685117, 1281511, 21854404, 16865262, +-583042, 8846559, 3954591, -3610457, -3027415, -30141006, 3786551, -3148748, 2549063, 5748277, +-2806224, 709743, 29879014, -27369142, 2044941, 32767380, 3727495, 8959302, -13507135, -3648575, +16530255, 30058866, 809601, 26638998, -11223823, 24082418, -9368397, 17785996, 17242146, -4647155, +34398392, -6051072, -2649995, -10687489, -17300666, -17147120, -9242233, -10390063, -26328686, -11760157, +-7202124, 8771934, 6605123, 587874, -15923054, -13939316, -10917807, -39524436, -27138824, -20107964, +-1370632, 25968982, -16791712, -2704219, -12782360, -19817516, -15398531, -20230906, -19982872, -8630200, +-23687282, -26925150, -22385370, 6034429, -15266461, -8769249, -19176492, 18393198, 31501438, 2214593, +-2951716, -11349451, 3146601, -2386928, -199716, -2940979, 10350334, 1591285, 21689048, -18830748, +2229088, -16090558, 32646584, 7390565, -18166102, 14287746, -12845173, 11511586, -17460652, 10110353, +2162516, -11316702, 10315975, -17628156, -5118528, 4898947, 18093086, 7099044, 31645320, -7551090, +-19484120, 1265942, -5188321, 1704028, -12779138, -12222940, -20927766, 1914482, -22333830, -5452998, +-3232500, -20936354, 13530221, 15698105, -9762461, -2460480, -29527900, 31987306, 40177808, 4300873, +-17894444, 1845762, -30837328, 56963616, 22438520, -5389647, -16736414, -5515275, -17822504, 19149648, +50599548, 398895, -32560684, -15875273, 18628346, 6001680, -6015102, 23110682, -4030827, 2269890, +14228690, -2167885, -13193603, -5220533, 11801496, -15159624, -12562242, -6077916, 5211943, -52613, +-1977296, -6825777, 11113228, 319438, 16193637, 11601244, -15685221, 7147363, 19768124, 9984725, +-14482630, 4958003, 3657165, 12184822, 769873, 3700651, 3930432, 4522064, 27604292, 24890410, +16340203, 34031172, -16824460, 17119202, -20368346, 12347494, 82678, 11203959, 15429670, 4003983, +4178466, 17514876, 8738111, -5776731, 11799349, -801011, 15699179, -17467096, -9579388, 619549, +37512244, -26829586, 2022930, -33449742, -4791036, 3285650, 11285027, -16055661, -6033892, -12608413, +47953848, 4274030, 3259343, -10256919, -6957847, 8378945, 7215008, 4843650, 18499498, 8242042, +-7914551, 10357851, 19832012, -259309, 21788370, -1539209, 10635413, -21544630, 40269076, -5321465, +-4552666, 7435662, -30198452, -7075959, -14387604, 22214108, 12064563, 12968117, -13856101, 6060199, +5520644, -17966386, 5690832, 17176112, 14261439, 5783711, -4125853, 3046206, -8494908, 31694712, +5286568, 15030238, 11979738, 17771500, -26381300, -798327, -7328825, 6517613, -9159555, -10378788, +23505282, -19835232, 17565880, -11894375, 18510236, -2078227, -16968342, 229781, -26032870, 19029390, +17069274, 21254182, -55068460, 18762564, 11758547, -14694694, -10014790, -13191992, 30808338, -38322384, +26703960, 62344672, 2749316, -23543936, -9909563, 22362820, 33370286, 13058848, -10438381, 5744519, +-25005836, 1578401, -14023605, 22371410, 4465692, 4276177, -11431592, 8516383, -1241246, -12545599, +7413114, -12838731, -3344706, -11277510, -19412178, -15320685, 19020800, 10956998, 13173738, 8946417, +-24016384, -10337986, 8062191, -10487773, 18502182, 8495445, 3755412, 6866579, 29485488, -10624675, +-24538758, 49424872, -19914152, -31779000, 35094716, -18286898, -6318434, 4502200, 19448686, -22111566, +-3161096, -751082, -9785546, 65031172, 2416993, -13868449, -1227287, -2207613, 19982872, -36049272, +-22079354, -17056388, -10042707, -4076998, -25283398, -3030100, 884226, 7489886, 46467252, 40261560, +-13120588, 30362198, -29037738, -32491964, 21750788, 23868208, -4982699, 4229469, 8114267, 15350750, +28202902, -2982318, 7524246, 28013388, -18195628, 2653753, -19704236, 21345988, 127238, 13173738, +-13441100, -20140176, 18897856, -19905562, 6206765, -4293894, 17817134, 496069, 3918621, -10320806, +3437048, -7129109, -26337276, -20304458, 8918500, -1068373, -602906, 4923643, 19771346, -8163122, +-5859409, -15824807, 7305203, 6797860, -1816771, -2471217, -43969728, 2864743, 12738336, -14928233, +11359652, -23568634, -4208531, 2616709, 15786152, 20437066, 2858301, -8134668, 6743099, 36089536, +31128312, 31547608, -630286, -1459215, 7314866, 5036386, -12972412, 10501195, 39398272, -25732222, +-7662759, -6226092, 1483374, 3263638, 6587943, -18364206, -29102162, -9529996, 332323, 64684356, +34295312, 23694260, 175020, -2692408, -12106976, 30214558, 8730595, 20812338, -68183, -4630512, +-3305514, -7863012, -41568840, 22873922, 22012782, -2222646, 35498440, 14404247, -22405770, -24223078, +11136850, -10574209, -19860466, 297427, 3161096, 8325794, -4122095, 11190000, -1942936, 10541997, +15909096, -14711337, -54099408, 28609850, -7205882, -18345952, 13728326, 18546742, 1857037, -38135552, +-3678103, -2542621, -36967320, -24867324, 21330418, -6852084, -14264660, -14165339, 9905268, -38196756, +-25071872, 49150532, -2952253, -30163556, 12764643, 26226680, 13079249, -42296300, 60400124, 22808424, +-34896072, 19166292, 28165858, 3215857, -23074174, 24520506, 30156040, 16321949, -21036212, 20407000, +41720776, 1124208, 42201812, 48963164, -24869472, -16949014, -16652125, 46262704, 32168232, -21422224, +13737990, -13214541, -27692338, 25232396, 61399780, 8210904, -15160698, -14227079, 36017596, 35713728, +54715200, 23503134, -24098524, -7458748, -20358144, 12938589, -10388452, 16383690, 9149891, -24473260, +12089259, -24937116, -9695352, 1367410, -10494216, 2651606, 12715788, 11856257, -127775, -19546934, +3819300, 17967996, -7180649, 3784403, -8376260, -22981296, 23764590, -13320841, 16204912, -23638964, +-15588047, -2094870, -21381958, -4637491, 20081656, -18864034, 26737782, 3343095, 21658446, 10465762, +-11992086, -28481002, 23911156, 17025250, 9487583, 8095477, 24672976, -17069810, -10406706, -9055402, +7151658, 11498701, -3315178, -21783000, -1898912, -1206886, -24849070, -7367480, 2973728, 8750996, +18139258, 79457, -17688822, 24943560, -5120675, -1372779, 26343718, 15507516, -22845468, 9901510, +-14052596, 11326903, -7173669, 13047574, -18346490, 11290932, -40273908, -49613852, -25073482, 143142128, +127679712, 75634376, 169090720, -36952824, -125483376, -45567456, -237379616, -126051384, -1654636, -62863288, +85979880, 154910880, 22672596, 90475632, 179632720, 28707562, 63127428, 4611721, -183081568, -154903904, +-134901168, -150751200, -89887224, 72630584, 31986768, 72675680, 193899520, 114930640, 30708480, 141813920, +65990560, -89602144, 48207788, -65915936, -167860208, -22597434, -103662256, -193171520, -85969136, -21845814, +-100008848, 109806744, 120618248, 54820964, 191907728, 214351088, 82310360, 104717208, 101109432, -115246320, +-73480448, -146827744, -225312912, -209976656, -133017288, -136410848, -38623032, 83235928, 111571440, 146126592, +210413664, 185558160, 109989280, 76401024, 13536126, -92983360, -128986456, -99586336, -123028264, -157394976, +-51923472, -65560528, -23392002, 70367672, 34575560, 912681, 0, 0, 0, 0, +0, 0, 0, }, }, { { -1262720, -3423089, -3764539, -789200, 187905, 287763, 1505923, 6287832, 466004, -1490891, -2266669, -5662378, -581968, -2845953, 1067836, -1983738, 1464047, 1147293, 7502234, 1944010, -4078608, -1737851, -219043, 696858, -3625489, 2316061, 321586, -2681670, -1586990, -287226, 311385, --328028, 2369748, -647466, -2257542, -559956, -1553168, -294742, -2757369, 1013075, 2907156, --439160, -4005594, 2462090, -2452963, -1492501, 119722, 1152662, -2056753, -595927, 3727495, --1959579, 1065689, -2463701, 1803349, -843424, 1256815, 1658394, 1033477, -967978, -541166, -1920924, -3010772, -5550709, 1184874, -707596, -1753420, 499827, -304406, -346282, 375273, --2020245, 2206540, -2871186, 2329483, 1005022, -533113, 6467684, -676994, 1977296, -1190243, -8632347, -3391951, -813896, -312459, 1090385, -1526861, 3969624, -685047, -2633889, -472446, -5422933, 402116, -2699924, 2534031, 1896228, 3559454, 1488743, -2694555, -1752884, 6042482, -877247, -1526861, -1152125, -1209033, 1227287, 1306744, -733366, -7649874, -1875290, 401579, -5348845, 1929514, -605590, 17717, -3003793, 4265440, -4253628, -5682779, 803159, 111669, --1878511, -1257889, -1533840, 889595, 594853, 583042, -1930051, 5092221, 235686, 6804839, --991601, -3089692, 1567663, -237834, 1065152, 1690607, 3507378, 2456721, -736587, -1671816, --1422171, 4548371, -4261682, 398895, 325881, -511638, -3556233, 3675955, -1600949, 852014, -3360812, -864362, 1090385, -2479807, 2146410, 1403381, -3081639, -1589138, -318364, 336081, --245350, -389768, -1611687, 2766496, 427886, -1124745, -1688996, -38118, 5516886, -747861, --2747705, 3634079, -1511292, -3357054, -457951, 2907156, 2033130, -1832340, 385473, -2299955, -1224603, 1335198, -1240172, 2887292, -922344, -5186173, 822486, 2692945, 2364916, 350577, --537945, -3772055, -1428614, -508954, -1815697, 3380139, 4599373, 2199023, -6692096, 2174327, -7473243, 3134789, -572841, -92342, 3320547, -1794223, 935229, -3287798, -3155190, 2901251, -3106335, 1542967, 635655, 508417, 392990, 1487669, -537, -414464, -1483911, 675384, --2639258, -579821, -1387274, -4829691, -2791192, 750546, 1173063, 4379793, -234613, 1766305, --2786897, -4351339, -2589329, 2262911, -1856500, -2049773, -2018098, -2884608, 2820720, 330176, -2099165, -932545, 692027, -5857799, -3628711, -2695092, 3837553, 673773, 942745, 2005213, --1941862, -1074279, -344671, 650688, -4283156, -868120, -2847563, -3250753, 314069, -2863133, -2050310, 1810329, 7813620, -1903207, 4041564, -2584497, 1751810, -1760937, 541703, 6748468, -1219234, 2950106, -3038153, 2095944, -2717104, -1301375, -295816, 4336843, -1957968, -1016297, --3648038, -1923609, -4333622, -493921, 4387846, 1137630, 463856, 877784, 4032438, -3666828, --6575595, 1745904, 2253784, -4167192, -193274, 847182, -972273, 2081985, 5345624, 1488206, --1285269, 650151, -1915019, 2641942, -7033546, 1314797, -2575907, -4878546, -3830037, 2225330, --1189706, -61740, 4828617, 1835025, -879931, 608275, 4076461, -1835025, 2960843, -1258962, -754304, -4340065, -982474, 3220152, -1216550, 3958886, 4065724, 1563905, 2489471, 5735929, --1498944, -7692287, 1589138, -3336653, 46171, -9461276, 60666, 3240016, -2132451, 3740380, -302258, -3321084, 1036698, -7087233, -4840965, -1621887, -1994476, -5863704, 2820720, 3462281, --30065, 3227131, 6979, 965294, -2182380, 2927020, 1896765, -1009854, 6374269, -1141388, -5214627, 4781909, -536334, -678605, -262530, 1570347, 1947768, 763967, 2201708, 861141, -534187, 7325067, 2464238, -3250753, -1825361, -162672, -2144263, 847719, -1692217, 6802155, --12954158, -86436, 105764, 3233574, 5895380, 1896228, -2742337, -4902169, -606127, 6109054, --1017907, -1297617, -4443681, -215822, -1745367, 4503273, 5657546, -9505299, 6321655, 3819837, --3373160, -859530, -4731980, -62814, -1281511, 25770, 3445101, 6165426, -2126546, 1359894, --1407676, -2223183, 2559801, 4234301, 3157338, -2790118, -4192962, 3026878, 2422899, -1676648, --528281, 472983, -5442798, 2017561, 2044404, -2362232, -3512210, 1420560, -2573759, 5043902, -2605435, -9015673, 4471061, -3888556, -9464497, -2907693, -307090, 1939715, -3586298, -221191, -2673080, -4382478, -3757023, -4497905, -787053, 1126355, 10012106, 1496796, 2502355, -1962263, --4073240, 6480569, -968515, -7322383, 1576790, -7272454, 2348810, 8139500, 2195802, 1762010, -3578782, 5127117, -1119376, 12534325, -1804423, 8971650, -10553808, 3649112, 6210523, -2229625, -896038, -2966749, -244276, 4846334, 8862128, -2478733, -4326106, -1269700, 4167729, 896038, -9030706, 4263829, -893353, 1315334, 16643, -4162360, 924492, -904091, -1199907, 3951370, -5255430, -8086350, 9498857, -7103339, -3755949, 1635846, -2752537, 4767414, 273804, -2669859, -6791417, 9335648, -6741488, -1200443, -482647, 2926483, -6342056, -10742250, -4807142, -3248069, -3424163, -7432441, -4051765, -818191, 8050380, 4930623, -5079873, 3917010, 2412161, -2890513, --4042638, -652835, -2284923, -3121368, 831613, -2065879, 6387153, -4355097, -220117, 4925254, --3043521, 5273683, 7448547, 1440962, 1667521, -732292, 4575751, 4103305, 5021891, -4818954, --6864969, -3379066, 4342212, 436476, 18578418, -1197759, -646393, -4298189, -8663486, -12228309, --2930242, 4346507, 6425271, -3882114, -8151311, 1271847, -92879, 8240969, -2836826, -3035468, -9723806, -5135171, 494995, -7365332, 4737886, -1271310, -97711, -1432372, -11731703, -7013682, -493921, 6709813, 4188667, 801548, -12129525, 8267275, -4958003, -4668630, -5277978, -6576669, --1158031, 6840273, -5399311, -5554467, 3974455, -1595580, 2270427, 12362526, -5284421, 602369, -582505, 5462662, -3557844, -2894808, -1636383, 8027294, -1671279, -3635153, -624918, 6380174, -7874286, -7243999, -8557185, -2499671, -1027034, -2410014, 2260227, -5546951, -1500017, -4874251, --8234526, 2033130, -5908802, 4977867, 6558952, -4875862, -5426691, -4986457, 2809982, -695248, -9416716, 15791521, -8751533, 375810, -135291, -1336272, 1735704, 4408247, -12894566, 11578158, --9006546, -4815732, 12145631, -2986613, -5410585, 3694209, 4670240, 15569, -376347, -9429064, -6022081, -1575716, 2295660, -6347962, 7885560, -984621, -12319577, -13809394, 4857071, -2797098, --6619082, 3087545, -207232, 20566450, 3898220, -4204773, -5823439, -12741020, -3949759, 1962800, --2555506, 9168681, -1568200, -14874009, -892816, 9330280, -3788161, 692027, 9101036, 5100811, --4240744, -1645509, 7563975, 8404714, -3505767, 860067, 2094870, -5543192, 2865817, -3327526, -364535, -152471, -993211, -4494147, -7454453, -12199318, -6097243, 4604205, -10558640, 3904662, --11411191, 286152, 4379256, -2033130, -8496519, -4236449, -1599875, 7597797, 6329171, -4777078, --4613869, 8115341, 3619584, -4946192, -5000953, -4186519, -378494, 7846905, -1188095, 577136, --276489, -244813, 10444824, 4948876, 7057705, -623844, -323733, 3406983, -5133560, -9078487, -7489349, 11632382, -7772280, 9986873, -2780991, -1144072, -4347581, 5097590, 507880, -5767604, -3637301, 9463424, 7671886, 3366718, -6990596, -3023657, -14347875, 2349347, 7765838, -4725538, --975494, -5791764, 1698123, -3442416, 5834176, -3582540, 2071785, 6772090, 4028143, 12761422, -6821482, 4406100, 8294119, -6641093, 12352326, 4012036, 7562901, -2097555, -8261907, -12479564, --2359011, -1500554, -3338800, -2061584, 4718559, 6181532, -12972412, 9562745, 3051038, -1786706, -13657996, 10870025, -17858474, -11682848, 10867878, 19191524, -2030983, 2910914, -1909650, -2327336, --2209761, -723165, 4510790, 2929705, 11196980, 2884071, 10681047, 3149285, 4427038, -1480690, --6635725, 2684355, 446140, -5096516, 8010114, 852551, 2926483, 1945620, -2233920, -7877507, -510027, -8942659, -3537443, -10352482, -7447474, -4234838, 8053601, 1151588, 3636227, 10492068, --5235565, -987843, 551903, 3690451, 416612, 139586, -3742527, 7710003, 16456167, 8177081, --14612016, -9938017, -11091753, 11791296, -2784750, -11184095, 5410585, -6321118, -1793686, -1921461, --1973538, -940061, -932545, 10412611, 15848429, 6561100, 13274670, 9694278, 2946885, 2319819, -1363115, -3595961, -7472170, 2327336, 16882442, 3628711, 5738077, -5163625, 4117800, -8108362, --15259482, 718333, 7706245, 2772402, 6142877, 9418863, 9666898, 988379, -11097659, -8807367, --14604499, -21832392, -610422, -2258616, 9629854, 7740068, -8540006, -4218732, 5598490, 12079059, --14713484, -8948027, -2929705, -7522635, -5543729, -2520609, 4422206, 9503152, 348429, -5017596, --6774774, 9608379, -7295539, -2589865, -188442, 13340705, -839666, 1545115, -20076824, -1029182, -5068062, 10865730, 13660143, 3404835, -12761422, 6638409, 550830, 6611566, 8836358, 1937030, -4685810, 10257456, 17534204, -10815265, -3881040, -486942, 5920613, 18632106, 8463233, 6561637, -11156178, -2983392, -4799089, -10379862, -12259447, -7649337, 1256815, 9167608, 22024056, 9402220, -4622996, 13077102, -15334644, -10162429, -2064806, 22385906, 8461622, 1071058, 11469710, -6839736, -17412872, -3620658, -15941845, -2454574, -15829102, 13191992, 7220377, 5552856, 4612258, 918586, --5253282, 6748468, 8817031, 5240934, -3416647, 8824547, 10643466, 10451266, -1435056, -7726646, -14536317, 4223027, -1091995, -1697586, 1597191, -8818642, 9405978, -985695, -2797098, -11410117, --6801618, -6691559, 17083232, 7036767, 85899, 3204046, 8806294, 13734769, 6448894, -15512348, -14978162, -738734, 8657043, 4776541, 13183939, -1919314, -17293686, 6574521, -784368, 8352101, --3053185, -5820755, 6456410, -1451699, 4395362, 23131084, -2610803, -8583492, 77309, 4383014, --10564009, 19163608, -7865159, -8808978, 15257334, -6677064, 5049808, -4895726, 3313031, -13067975, --4492536, 9088151, 170188, -12769475, 2080912, -3628174, 8717710, 3820374, 3645354, -22235582, -5513128, 1735704, 7435126, 16469052, -918049, -632434, -476741, -6374269, 13640816, -13365938, -2981244, 10537165, 4523138, 9802189, -5728950, -5788542, -10055055, -13884019, 4117263, 3576097, -6907381, 17359184, -8023536, 15068893, 5530308, -12035035, -9596031, 1073205, -606127, 1995012, --2220498, 8120173, 9702331, 12264279, 2443837, -26492968, 4636954, 9586904, 5934034, -16983912, -8731132, -8050916, 7199439, 2523830, 2588255, -1098438, 4642860, -805843, 20976084, 12794171, --13343927, 2792266, -32600950, 6483790, -11776263, -7487739, 5177583, 7514046, -18291728, -28106802, -15104863, 12817256, -31768800, 11309723, -11186779, -4410932, -5063230, 9949292, -7394323, -887448, -2560874, 27043262, -2879776, 19245212, 5910949, 14236206, 1888175, 3338263, 5865852, 25992068, -27987618, -15030775, -11874511, 14408005, -18712636, -1058710, 6205154, -20647518, 12034498, 466541, --665720, -4679904, -5066451, 1214402, 3002719, 2501819, -11122892, -1089311, -2037425, -17013976, -8959839, 9767829, -16755741, -14412300, -5552856, 8220568, 10153303, 7517267, -41339, -4952098, -9221295, 26717918, 16090558, -6996502, -2729452, -5342403, 19937238, -16750909, 7974681, 2399813, --22712324, -11512660, -74625, 1449552, -19064822, 11962021, 10039486, 2059437, 4882841, 7497939, --17921288, -4540318, -14645838, -1708323, 10949482, 13849122, 11331197, -13292924, -4338454, -4004520, -1676648, -15228880, -2709051, 13099650, 19842212, -1208496, 1121523, -12216498, 862215, -359167, --9044127, -14622753, -3019899, -6670084, -11273215, -7925826, 12377559, -10450729, 8930848, -3019362, --2709051, 17763984, -12336220, -6604049, 2521146, 7275138, 869731, -23072028, -14454712, 2841121, --3908420, 3951370, -3413962, -7123204, 14667850, 3348464, -1435593, -5920613, -33597920, 20248624, --6202470, -205622, -2997350, 1431835, 9440338, -5423470, -9268539, -15470472, -1612223, 7021735, --9772661, -12248710, 4967667, 19745576, -3461207, 18357764, 13325673, -13289703, 24472724, 16315507, --16322486, -25012278, -7304129, -10901701, 1254667, -7949985, -2020245, 11955578, -21002926, 10176925, --3432216, -11905649, -13133473, -13329968, -15835544, 3015604, 9737765, -9113921, 13774497, -21311628, -38707856, 54278188, -5173288, 6528887, 3558381, 13065827, 26426396, -25273736, 362388, 4242354, -556735, -9200894, 1414655, -11346767, 13285944, 32242320, -6786585, 541703, 1898376, 9645960, -950262, 3626563, 12505871, -25142202, -1808181, 24282672, 25209310, -29616484, -6183143, 3999688, -4198868, 8505646, 22205518, 5967320, 44731548, 7154342, 13859859, 6280853, -6929930, -9585293, --436476, -31681826, -44973676, -15628849, -14504641, -47359532, 7500087, -1534914, -26063472, -13248363, --43748000, -5284958, -5816997, 29441464, -29074244, 17760764, -19726248, -2223183, -12793097, -11040750, -12264279, 26242250, -20153598, -8507793, -1143535, -6912750, -1263794, 10537702, 22804666, 22191560, --14796162, 45493904, 33444910, 3285113, -13824426, -37855840, -19684372, 35824860, 58922120, -13659070, --3309809, 10782515, 26206816, 9184251, -15693274, 9895068, -13458817, 3660386, 8061117, -2934000, --18067316, 5572720, 18533858, -4478577, -27363236, 21359946, -6561100, 17466558, -6757058, -4065724, --7046431, -10735271, -832687, 19349364, 10299332, 3344706, 15076946, -7199976, -6584185, 6060736, --8737574, 10871099, 5779952, 16543677, 27627914, 24765318, -18265422, -32935956, -12609487, -1980517, -25289304, -9819369, 4000762, 10496900, -10883984, -15174656, -25029996, -24981140, 19004694, 21045340, --17543868, -60219200, 4173098, -4249334, -9125195, 4651987, -6949257, -24206972, -12315819, -5728950, --17939542, -7262790, 24337432, 9617506, 13275744, -5894843, -10184441, -5539971, 11969000, 2328946, --570157, 12302934, 28611462, -13484050, -984084, -11278584, 6400038, -15663746, -23666344, -6087043, --3323231, 3782256, -7577933, 18070002, -10437844, -39084740, -20016696, 12514998, -17303886, 20540682, -19787452, -9176198, -2124398, 1985886, -10915123, -723702, 7013682, -2459406, 4181151, 26169772, -23279796, -6808060, -34921844, -27925878, 2840584, 18094160, -13523778, -7023346, -16021839, -22491670, -2866354, -6985228, -24451248, -28506772, -39572220, 15368467, 6536940, -44560, 24348170, 30382598, --199179, -24398098, -16703128, -19940460, -9569187, -7724499, 8338142, 11099269, -9533754, -18299782, --19652160, 10089952, 11336029, -21765284, -18037788, -9005473, -1570884, -13157095, 9587978, 49737868, -32963338, 58313844, 22773528, -32480154, 40607304, -2398202, -14122389, 1392106, -10690174, -37579892, -35343284, -20056424, 2274185, 10436234, -4496294, -26190710, 26489748, 25367150, -14608794, -20021526, -2711735, 35108136, -18425410, 10028212, 22452478, 6907918, -8483634, -16734803, -11031087, 7804493, --2679523, 5949604, -9831717, 6561637, -21763136, 31856846, -3067681, 7156490, -1480153, -40148280, -12546136, -11125576, 20753282, 12446278, 22188338, -8671002, -38620884, 27752468, 12628278, -13221520, --23960012, 19852950, 10849624, 21099026, 21602074, -18778670, 8833137, 22227530, -32498406, 29883308, -15134928, -1149978, 9966472, -17237314, 38122128, -4518843, 25341918, 10794327, 44382044, -3453691, --6859063, 5689758, 18742164, 11240466, 13535589, 43462920, 4007205, 9935870, 27554900, -18155900, -19930258, 644782, -26437134, 8912594, -5789079, 30200062, -17816598, -25981330, -64806760, 3463891, --7856032, 1933272, 50342924, 41280540, 59604484, 31345746, -15716896, -12196097, -24538758, -32937030, -11689290, 2812667, 8757975, 10381473, -9439264, 14893336, 25515864, 4598836, -6641093, -8661875, --17808546, -12015171, -10689100, 4894115, 8264591, -25875030, -15072651, -3627637, 17520782, -7886097, -11370926, 13783087, -36439040, -36206036, 7100655, 10395968, 8308078, -27354646, -12263205, -24581708, --11563663, -11305428, 23937464, -31144418, -42900816, -16353625, 8928163, 7244536, -32971390, -26891864, --20646444, -16063178, 18443126, 25268904, 1596654, -8767639, -10072772, -6038724, -5115843, -11634530, --36467492, 12011950, 28388660, 25102474, 8482560, 34350612, 47327856, -4216584, -5336497, 35645008, --8007967, -21698174, -48695804, -16089484, 5800354, 42026792, 15570867, 2866891, 16187732, -18237504, -1797444, -9585293, -12535399, 7332583, 3798362, -11565273, -17614198, -11069204, -16276315, -14365592, -6337224, -11198590, -4417374, 7482370, -4464082, 1299765, -5030481, 20683488, -15691126, 16869020, -7227893, 1454920, -15078556, -7410966, 13788993, 4683662, 746251, 9717900, -731755, -4746476, --5435818, -6049999, -3218541, 1399086, 1154809, 1625108, -17487496, 9343164, -6489696, -7905961, -7992934, 3942243, 3979287, -4114042, 14796162, 10764262, -14731738, 14118094, -235149, 9364639, -21806622, -4811974, 12844637, 9565429, -7606387, -7736310, -10692858, 446140, 4973036, -21870510, -11713450, 2393908, 19810000, -7322383, -33550674, 22582938, 6023692, -210990, 6268505, -17301738, -3111704, -5026723, 12183748, -21638582, -62672700, -92422864, 18921478, 72844792, 2386928, 199162464, -182884544, 126001456, 216108800, 166652240, 21722334, 3207267, -23616414, -159597232, -163501344, -123996240, --213903328, -198955776, -58145268, -67002028, -68470904, 14900852, 38499012, -34309808, -12937515, 62480500, -38591892, -3599720, 45242648, 31309774, 161061, 37966976, 91492464, 59929828, 18900540, 94227824, -68444600, 3332358, 79732848, 109726216, 23727010, 9508521, 111003968, 28484224, -48183092, 54516020, -84262960, -48387100, 16464757, 119560080, 7308961, 16437914, 144024752, 112632296, 4876936, 88148832, -117664384, -47656420, -30982820, 29654064, -106659072, -173859200, -119858576, -191541584, -282103104, -259459504, --289848000, -367075296, -387062464, -342896224, -361456384, -340003584, -254369968, -200921792, -96309808, 2296197, -124596464, 138281840, 31000000, }, +3423089, -3764539, -789200, 187905, 287763, 1505923, 6287832, 466004, -1490891, -2266669, +5662378, -581968, -2845953, 1067836, -1983738, 1464047, 1147293, 7502234, 1944010, -4078608, +1737851, -219043, 696858, -3625489, 2316061, 321586, -2681670, -1586990, -287226, 311385, +-328028, 2369748, -647466, -2257542, -559956, -1553168, -294742, -2757369, 1013075, 2907156, +-439160, -4005594, 2462090, -2452963, -1492501, 119722, 1152662, -2056753, -595927, 3727495, +-1959579, 1065689, -2463701, 1803349, -843424, 1256815, 1658394, 1033477, -967978, -541166, +1920924, -3010772, -5550709, 1184874, -707596, -1753420, 499827, -304406, -346282, 375273, +-2020245, 2206540, -2871186, 2329483, 1005022, -533113, 6467684, -676994, 1977296, -1190243, +8632347, -3391951, -813896, -312459, 1090385, -1526861, 3969624, -685047, -2633889, -472446, +5422933, 402116, -2699924, 2534031, 1896228, 3559454, 1488743, -2694555, -1752884, 6042482, +877247, -1526861, -1152125, -1209033, 1227287, 1306744, -733366, -7649874, -1875290, 401579, +5348845, 1929514, -605590, 17717, -3003793, 4265440, -4253628, -5682779, 803159, 111669, +-1878511, -1257889, -1533840, 889595, 594853, 583042, -1930051, 5092221, 235686, 6804839, +-991601, -3089692, 1567663, -237834, 1065152, 1690607, 3507378, 2456721, -736587, -1671816, +-1422171, 4548371, -4261682, 398895, 325881, -511638, -3556233, 3675955, -1600949, 852014, +3360812, -864362, 1090385, -2479807, 2146410, 1403381, -3081639, -1589138, -318364, 336081, +-245350, -389768, -1611687, 2766496, 427886, -1124745, -1688996, -38118, 5516886, -747861, +-2747705, 3634079, -1511292, -3357054, -457951, 2907156, 2033130, -1832340, 385473, -2299955, +1224603, 1335198, -1240172, 2887292, -922344, -5186173, 822486, 2692945, 2364916, 350577, +-537945, -3772055, -1428614, -508954, -1815697, 3380139, 4599373, 2199023, -6692096, 2174327, +7473243, 3134789, -572841, -92342, 3320547, -1794223, 935229, -3287798, -3155190, 2901251, +3106335, 1542967, 635655, 508417, 392990, 1487669, -537, -414464, -1483911, 675384, +-2639258, -579821, -1387274, -4829691, -2791192, 750546, 1173063, 4379793, -234613, 1766305, +-2786897, -4351339, -2589329, 2262911, -1856500, -2049773, -2018098, -2884608, 2820720, 330176, +2099165, -932545, 692027, -5857799, -3628711, -2695092, 3837553, 673773, 942745, 2005213, +-1941862, -1074279, -344671, 650688, -4283156, -868120, -2847563, -3250753, 314069, -2863133, +2050310, 1810329, 7813620, -1903207, 4041564, -2584497, 1751810, -1760937, 541703, 6748468, +1219234, 2950106, -3038153, 2095944, -2717104, -1301375, -295816, 4336843, -1957968, -1016297, +-3648038, -1923609, -4333622, -493921, 4387846, 1137630, 463856, 877784, 4032438, -3666828, +-6575595, 1745904, 2253784, -4167192, -193274, 847182, -972273, 2081985, 5345624, 1488206, +-1285269, 650151, -1915019, 2641942, -7033546, 1314797, -2575907, -4878546, -3830037, 2225330, +-1189706, -61740, 4828617, 1835025, -879931, 608275, 4076461, -1835025, 2960843, -1258962, +754304, -4340065, -982474, 3220152, -1216550, 3958886, 4065724, 1563905, 2489471, 5735929, +-1498944, -7692287, 1589138, -3336653, 46171, -9461276, 60666, 3240016, -2132451, 3740380, +302258, -3321084, 1036698, -7087233, -4840965, -1621887, -1994476, -5863704, 2820720, 3462281, +-30065, 3227131, 6979, 965294, -2182380, 2927020, 1896765, -1009854, 6374269, -1141388, +5214627, 4781909, -536334, -678605, -262530, 1570347, 1947768, 763967, 2201708, 861141, +534187, 7325067, 2464238, -3250753, -1825361, -162672, -2144263, 847719, -1692217, 6802155, +-12954158, -86436, 105764, 3233574, 5895380, 1896228, -2742337, -4902169, -606127, 6109054, +-1017907, -1297617, -4443681, -215822, -1745367, 4503273, 5657546, -9505299, 6321655, 3819837, +-3373160, -859530, -4731980, -62814, -1281511, 25770, 3445101, 6165426, -2126546, 1359894, +-1407676, -2223183, 2559801, 4234301, 3157338, -2790118, -4192962, 3026878, 2422899, -1676648, +-528281, 472983, -5442798, 2017561, 2044404, -2362232, -3512210, 1420560, -2573759, 5043902, +2605435, -9015673, 4471061, -3888556, -9464497, -2907693, -307090, 1939715, -3586298, -221191, +2673080, -4382478, -3757023, -4497905, -787053, 1126355, 10012106, 1496796, 2502355, -1962263, +-4073240, 6480569, -968515, -7322383, 1576790, -7272454, 2348810, 8139500, 2195802, 1762010, +3578782, 5127117, -1119376, 12534325, -1804423, 8971650, -10553808, 3649112, 6210523, -2229625, +896038, -2966749, -244276, 4846334, 8862128, -2478733, -4326106, -1269700, 4167729, 896038, +9030706, 4263829, -893353, 1315334, 16643, -4162360, 924492, -904091, -1199907, 3951370, +5255430, -8086350, 9498857, -7103339, -3755949, 1635846, -2752537, 4767414, 273804, -2669859, +6791417, 9335648, -6741488, -1200443, -482647, 2926483, -6342056, -10742250, -4807142, -3248069, +3424163, -7432441, -4051765, -818191, 8050380, 4930623, -5079873, 3917010, 2412161, -2890513, +-4042638, -652835, -2284923, -3121368, 831613, -2065879, 6387153, -4355097, -220117, 4925254, +-3043521, 5273683, 7448547, 1440962, 1667521, -732292, 4575751, 4103305, 5021891, -4818954, +-6864969, -3379066, 4342212, 436476, 18578418, -1197759, -646393, -4298189, -8663486, -12228309, +-2930242, 4346507, 6425271, -3882114, -8151311, 1271847, -92879, 8240969, -2836826, -3035468, +9723806, -5135171, 494995, -7365332, 4737886, -1271310, -97711, -1432372, -11731703, -7013682, +493921, 6709813, 4188667, 801548, -12129525, 8267275, -4958003, -4668630, -5277978, -6576669, +-1158031, 6840273, -5399311, -5554467, 3974455, -1595580, 2270427, 12362526, -5284421, 602369, +582505, 5462662, -3557844, -2894808, -1636383, 8027294, -1671279, -3635153, -624918, 6380174, +7874286, -7243999, -8557185, -2499671, -1027034, -2410014, 2260227, -5546951, -1500017, -4874251, +-8234526, 2033130, -5908802, 4977867, 6558952, -4875862, -5426691, -4986457, 2809982, -695248, +9416716, 15791521, -8751533, 375810, -135291, -1336272, 1735704, 4408247, -12894566, 11578158, +-9006546, -4815732, 12145631, -2986613, -5410585, 3694209, 4670240, 15569, -376347, -9429064, +6022081, -1575716, 2295660, -6347962, 7885560, -984621, -12319577, -13809394, 4857071, -2797098, +-6619082, 3087545, -207232, 20566450, 3898220, -4204773, -5823439, -12741020, -3949759, 1962800, +-2555506, 9168681, -1568200, -14874009, -892816, 9330280, -3788161, 692027, 9101036, 5100811, +-4240744, -1645509, 7563975, 8404714, -3505767, 860067, 2094870, -5543192, 2865817, -3327526, +364535, -152471, -993211, -4494147, -7454453, -12199318, -6097243, 4604205, -10558640, 3904662, +-11411191, 286152, 4379256, -2033130, -8496519, -4236449, -1599875, 7597797, 6329171, -4777078, +-4613869, 8115341, 3619584, -4946192, -5000953, -4186519, -378494, 7846905, -1188095, 577136, +-276489, -244813, 10444824, 4948876, 7057705, -623844, -323733, 3406983, -5133560, -9078487, +7489349, 11632382, -7772280, 9986873, -2780991, -1144072, -4347581, 5097590, 507880, -5767604, +3637301, 9463424, 7671886, 3366718, -6990596, -3023657, -14347875, 2349347, 7765838, -4725538, +-975494, -5791764, 1698123, -3442416, 5834176, -3582540, 2071785, 6772090, 4028143, 12761422, +6821482, 4406100, 8294119, -6641093, 12352326, 4012036, 7562901, -2097555, -8261907, -12479564, +-2359011, -1500554, -3338800, -2061584, 4718559, 6181532, -12972412, 9562745, 3051038, -1786706, +13657996, 10870025, -17858474, -11682848, 10867878, 19191524, -2030983, 2910914, -1909650, -2327336, +-2209761, -723165, 4510790, 2929705, 11196980, 2884071, 10681047, 3149285, 4427038, -1480690, +-6635725, 2684355, 446140, -5096516, 8010114, 852551, 2926483, 1945620, -2233920, -7877507, +510027, -8942659, -3537443, -10352482, -7447474, -4234838, 8053601, 1151588, 3636227, 10492068, +-5235565, -987843, 551903, 3690451, 416612, 139586, -3742527, 7710003, 16456167, 8177081, +-14612016, -9938017, -11091753, 11791296, -2784750, -11184095, 5410585, -6321118, -1793686, -1921461, +-1973538, -940061, -932545, 10412611, 15848429, 6561100, 13274670, 9694278, 2946885, 2319819, +1363115, -3595961, -7472170, 2327336, 16882442, 3628711, 5738077, -5163625, 4117800, -8108362, +-15259482, 718333, 7706245, 2772402, 6142877, 9418863, 9666898, 988379, -11097659, -8807367, +-14604499, -21832392, -610422, -2258616, 9629854, 7740068, -8540006, -4218732, 5598490, 12079059, +-14713484, -8948027, -2929705, -7522635, -5543729, -2520609, 4422206, 9503152, 348429, -5017596, +-6774774, 9608379, -7295539, -2589865, -188442, 13340705, -839666, 1545115, -20076824, -1029182, +5068062, 10865730, 13660143, 3404835, -12761422, 6638409, 550830, 6611566, 8836358, 1937030, +4685810, 10257456, 17534204, -10815265, -3881040, -486942, 5920613, 18632106, 8463233, 6561637, +11156178, -2983392, -4799089, -10379862, -12259447, -7649337, 1256815, 9167608, 22024056, 9402220, +4622996, 13077102, -15334644, -10162429, -2064806, 22385906, 8461622, 1071058, 11469710, -6839736, +17412872, -3620658, -15941845, -2454574, -15829102, 13191992, 7220377, 5552856, 4612258, 918586, +-5253282, 6748468, 8817031, 5240934, -3416647, 8824547, 10643466, 10451266, -1435056, -7726646, +14536317, 4223027, -1091995, -1697586, 1597191, -8818642, 9405978, -985695, -2797098, -11410117, +-6801618, -6691559, 17083232, 7036767, 85899, 3204046, 8806294, 13734769, 6448894, -15512348, +14978162, -738734, 8657043, 4776541, 13183939, -1919314, -17293686, 6574521, -784368, 8352101, +-3053185, -5820755, 6456410, -1451699, 4395362, 23131084, -2610803, -8583492, 77309, 4383014, +-10564009, 19163608, -7865159, -8808978, 15257334, -6677064, 5049808, -4895726, 3313031, -13067975, +-4492536, 9088151, 170188, -12769475, 2080912, -3628174, 8717710, 3820374, 3645354, -22235582, +5513128, 1735704, 7435126, 16469052, -918049, -632434, -476741, -6374269, 13640816, -13365938, +2981244, 10537165, 4523138, 9802189, -5728950, -5788542, -10055055, -13884019, 4117263, 3576097, +6907381, 17359184, -8023536, 15068893, 5530308, -12035035, -9596031, 1073205, -606127, 1995012, +-2220498, 8120173, 9702331, 12264279, 2443837, -26492968, 4636954, 9586904, 5934034, -16983912, +8731132, -8050916, 7199439, 2523830, 2588255, -1098438, 4642860, -805843, 20976084, 12794171, +-13343927, 2792266, -32600950, 6483790, -11776263, -7487739, 5177583, 7514046, -18291728, -28106802, +15104863, 12817256, -31768800, 11309723, -11186779, -4410932, -5063230, 9949292, -7394323, -887448, +2560874, 27043262, -2879776, 19245212, 5910949, 14236206, 1888175, 3338263, 5865852, 25992068, +27987618, -15030775, -11874511, 14408005, -18712636, -1058710, 6205154, -20647518, 12034498, 466541, +-665720, -4679904, -5066451, 1214402, 3002719, 2501819, -11122892, -1089311, -2037425, -17013976, +8959839, 9767829, -16755741, -14412300, -5552856, 8220568, 10153303, 7517267, -41339, -4952098, +9221295, 26717918, 16090558, -6996502, -2729452, -5342403, 19937238, -16750909, 7974681, 2399813, +-22712324, -11512660, -74625, 1449552, -19064822, 11962021, 10039486, 2059437, 4882841, 7497939, +-17921288, -4540318, -14645838, -1708323, 10949482, 13849122, 11331197, -13292924, -4338454, -4004520, +1676648, -15228880, -2709051, 13099650, 19842212, -1208496, 1121523, -12216498, 862215, -359167, +-9044127, -14622753, -3019899, -6670084, -11273215, -7925826, 12377559, -10450729, 8930848, -3019362, +-2709051, 17763984, -12336220, -6604049, 2521146, 7275138, 869731, -23072028, -14454712, 2841121, +-3908420, 3951370, -3413962, -7123204, 14667850, 3348464, -1435593, -5920613, -33597920, 20248624, +-6202470, -205622, -2997350, 1431835, 9440338, -5423470, -9268539, -15470472, -1612223, 7021735, +-9772661, -12248710, 4967667, 19745576, -3461207, 18357764, 13325673, -13289703, 24472724, 16315507, +-16322486, -25012278, -7304129, -10901701, 1254667, -7949985, -2020245, 11955578, -21002926, 10176925, +-3432216, -11905649, -13133473, -13329968, -15835544, 3015604, 9737765, -9113921, 13774497, -21311628, +38707856, 54278188, -5173288, 6528887, 3558381, 13065827, 26426396, -25273736, 362388, 4242354, +556735, -9200894, 1414655, -11346767, 13285944, 32242320, -6786585, 541703, 1898376, 9645960, +950262, 3626563, 12505871, -25142202, -1808181, 24282672, 25209310, -29616484, -6183143, 3999688, +4198868, 8505646, 22205518, 5967320, 44731548, 7154342, 13859859, 6280853, -6929930, -9585293, +-436476, -31681826, -44973676, -15628849, -14504641, -47359532, 7500087, -1534914, -26063472, -13248363, +-43748000, -5284958, -5816997, 29441464, -29074244, 17760764, -19726248, -2223183, -12793097, -11040750, +12264279, 26242250, -20153598, -8507793, -1143535, -6912750, -1263794, 10537702, 22804666, 22191560, +-14796162, 45493904, 33444910, 3285113, -13824426, -37855840, -19684372, 35824860, 58922120, -13659070, +-3309809, 10782515, 26206816, 9184251, -15693274, 9895068, -13458817, 3660386, 8061117, -2934000, +-18067316, 5572720, 18533858, -4478577, -27363236, 21359946, -6561100, 17466558, -6757058, -4065724, +-7046431, -10735271, -832687, 19349364, 10299332, 3344706, 15076946, -7199976, -6584185, 6060736, +-8737574, 10871099, 5779952, 16543677, 27627914, 24765318, -18265422, -32935956, -12609487, -1980517, +25289304, -9819369, 4000762, 10496900, -10883984, -15174656, -25029996, -24981140, 19004694, 21045340, +-17543868, -60219200, 4173098, -4249334, -9125195, 4651987, -6949257, -24206972, -12315819, -5728950, +-17939542, -7262790, 24337432, 9617506, 13275744, -5894843, -10184441, -5539971, 11969000, 2328946, +-570157, 12302934, 28611462, -13484050, -984084, -11278584, 6400038, -15663746, -23666344, -6087043, +-3323231, 3782256, -7577933, 18070002, -10437844, -39084740, -20016696, 12514998, -17303886, 20540682, +19787452, -9176198, -2124398, 1985886, -10915123, -723702, 7013682, -2459406, 4181151, 26169772, +23279796, -6808060, -34921844, -27925878, 2840584, 18094160, -13523778, -7023346, -16021839, -22491670, +2866354, -6985228, -24451248, -28506772, -39572220, 15368467, 6536940, -44560, 24348170, 30382598, +-199179, -24398098, -16703128, -19940460, -9569187, -7724499, 8338142, 11099269, -9533754, -18299782, +-19652160, 10089952, 11336029, -21765284, -18037788, -9005473, -1570884, -13157095, 9587978, 49737868, +32963338, 58313844, 22773528, -32480154, 40607304, -2398202, -14122389, 1392106, -10690174, -37579892, +35343284, -20056424, 2274185, 10436234, -4496294, -26190710, 26489748, 25367150, -14608794, -20021526, +2711735, 35108136, -18425410, 10028212, 22452478, 6907918, -8483634, -16734803, -11031087, 7804493, +-2679523, 5949604, -9831717, 6561637, -21763136, 31856846, -3067681, 7156490, -1480153, -40148280, +12546136, -11125576, 20753282, 12446278, 22188338, -8671002, -38620884, 27752468, 12628278, -13221520, +-23960012, 19852950, 10849624, 21099026, 21602074, -18778670, 8833137, 22227530, -32498406, 29883308, +15134928, -1149978, 9966472, -17237314, 38122128, -4518843, 25341918, 10794327, 44382044, -3453691, +-6859063, 5689758, 18742164, 11240466, 13535589, 43462920, 4007205, 9935870, 27554900, -18155900, +19930258, 644782, -26437134, 8912594, -5789079, 30200062, -17816598, -25981330, -64806760, 3463891, +-7856032, 1933272, 50342924, 41280540, 59604484, 31345746, -15716896, -12196097, -24538758, -32937030, +11689290, 2812667, 8757975, 10381473, -9439264, 14893336, 25515864, 4598836, -6641093, -8661875, +-17808546, -12015171, -10689100, 4894115, 8264591, -25875030, -15072651, -3627637, 17520782, -7886097, +11370926, 13783087, -36439040, -36206036, 7100655, 10395968, 8308078, -27354646, -12263205, -24581708, +-11563663, -11305428, 23937464, -31144418, -42900816, -16353625, 8928163, 7244536, -32971390, -26891864, +-20646444, -16063178, 18443126, 25268904, 1596654, -8767639, -10072772, -6038724, -5115843, -11634530, +-36467492, 12011950, 28388660, 25102474, 8482560, 34350612, 47327856, -4216584, -5336497, 35645008, +-8007967, -21698174, -48695804, -16089484, 5800354, 42026792, 15570867, 2866891, 16187732, -18237504, +1797444, -9585293, -12535399, 7332583, 3798362, -11565273, -17614198, -11069204, -16276315, -14365592, +6337224, -11198590, -4417374, 7482370, -4464082, 1299765, -5030481, 20683488, -15691126, 16869020, +7227893, 1454920, -15078556, -7410966, 13788993, 4683662, 746251, 9717900, -731755, -4746476, +-5435818, -6049999, -3218541, 1399086, 1154809, 1625108, -17487496, 9343164, -6489696, -7905961, +7992934, 3942243, 3979287, -4114042, 14796162, 10764262, -14731738, 14118094, -235149, 9364639, +21806622, -4811974, 12844637, 9565429, -7606387, -7736310, -10692858, 446140, 4973036, -21870510, +11713450, 2393908, 19810000, -7322383, -33550674, 22582938, 6023692, -210990, 6268505, -17301738, +3111704, -5026723, 12183748, -21638582, -62672700, -92422864, 18921478, 72844792, 2386928, 199162464, +182884544, 126001456, 216108800, 166652240, 21722334, 3207267, -23616414, -159597232, -163501344, -123996240, +-213903328, -198955776, -58145268, -67002028, -68470904, 14900852, 38499012, -34309808, -12937515, 62480500, +38591892, -3599720, 45242648, 31309774, 161061, 37966976, 91492464, 59929828, 18900540, 94227824, +68444600, 3332358, 79732848, 109726216, 23727010, 9508521, 111003968, 28484224, -48183092, 54516020, +84262960, -48387100, 16464757, 119560080, 7308961, 16437914, 144024752, 112632296, 4876936, 88148832, +117664384, -47656420, -30982820, 29654064, -106659072, -173859200, -119858576, -191541584, -282103104, -259459504, +-289848000, -367075296, -387062464, -342896224, -361456384, -340003584, -254369968, -200921792, -96309808, 2296197, +124596464, 138281840, 31000000, }, { 708670, --98247, 1244467, -1082332, -430034, -3767760, -1692217, -4007741, 399432, -2260764, -2665564, -1319092, 2340220, -2917357, 2914672, 334471, -3683471, 585726, -4206921, 2381023, -1177358, --685584, -1367410, 955093, -1877438, -248571, -1218160, 1555852, 3164317, -2915209, -1376000, -1154809, -636192, 2127083, 3264712, 136902, 1548873, 1027034, 963683, -427886, 2384244, --3133716, -1216013, 3446711, 112206, 4090956, -4457639, 2360622, -1635846, -6176700, 3228742, -2874944, 956167, -2195802, -1484448, -483721, 660888, 482647, -1101659, -2155000, -1287953, -911607, 146566, 1883880, 4257387, 996969, 333934, 271657, 3554086, 2046552, -762894, -976568, -527744, -1680406, -346819, -2671470, 3749507, 5184026, -3048353, 213675, 165893, --3712462, 4962835, -1979443, -1942399, 1421634, -5123896, -2294050, 5488968, 1250372, -2239826, -3906273, 1206886, 839666, -805843, 1908576, -34897, -6562173, -315680, -2430952, -297427, --135291, -6291590, 106300, -4046396, 229781, 630823, 2818572, 3352222, 1119913, 827855, -629750, 2893734, -1574106, 983548, 201327, 445603, 623307, -882616, 2610803, 3863323, --7427609, 3444564, -1926293, -4498442, -2841658, 5692443, 2890513, -1955821, 3272228, 913754, --2019708, 1977833, 73551, -45097, 331249, 339302, -743566, -17717, 456340, -404264, -2490544, -1618666, -3406446, -3447248, 12348, 977105, -181462, -27380, 1905355, -991064, -3327526, 2783139, 184684, -2187749, 1367410, -1167694, -1778117, 457951, -3728569, -419296, --2794950, 1003949, 1731409, 1702418, 1323924, -2870112, -209380, -2370822, 2572149, -4925254, --2815888, 2541547, -5435818, -574452, -355945, 1428614, 1198833, 2716030, 5650030, 2648921, --694174, 28991, -2008434, -1524177, -9953587, -9124658, -599148, 6845104, -1670205, 5480379, -493921, 1609002, -1665911, -7654706, 4013110, 1283122, -2295660, 1964948, -4062502, -766115, -2345589, 1089848, 7264401, -4893042, 4420595, -2202245, -5666136, -2571612, -1522029, -1488743, -2048163, 1779727, -4566624, -1971390, -2593624, -899796, 4450123, 4809827, 5093295, -3661997, -615254, -2280091, -367757, -1926293, -2644089, -3046206, -3708168, 3723200, -3531000, -4523138, --3958349, 126702, -1582159, -1247151, -3141769, 681826, -3508988, -247497, -1465121, 5335423, --3468723, -3763465, -8432631, -10899553, -2677375, -4864588, -4510253, -1077500, 2210835, -2780991, --6584722, 4036196, -9530532, 2828236, -1642825, -1729261, 6079526, 4294431, 2215130, 815507, --1111860, -1013612, -2362232, 950262, 4103305, -3395172, 3886946, 3594351, 999117, 484258, -1581085, 2730526, -6228777, -2741263, 5815386, -4631586, 320512, -171799, 3531537, -538482, --1434519, 584116, 6033892, 3271691, 2057289, 1851131, 3333968, -5515275, 4095251, -4540854, -3787088, 2375654, -1207423, -956704, -1897839, -2626373, -3986267, -452582, -1288490, -3439732, --3524558, -2371359, -2073396, 1954210, -5541582, -369904, -2477123, -5534602, -2233920, -1219234, --3464428, -1482301, -3177739, -1565516, 2919504, 3377992, -5755793, -3645354, 2197950, -1432372, --6308233, 4112431, 8034273, 1391569, -1597191, -3889630, 1103807, 3517578, 7295539, -3837017, --1248225, -4774930, -3376918, 3640522, 4163971, -5749351, 3477850, -2020245, -3243237, 5273683, -246424, 2747169, -7330973, 239444, -4601521, 811749, -5777268, -4097936, -708670, -1719598, -12907450, 3689914, 3565360, 2135673, -9098351, 4915053, 3963181, -2430415, 79994, 3726421, --256087, 3939559, 5348308, 4571993, -2542084, -73551, -1250909, 2181844, -1991254, -3016678, -2045478, -2914672, 1525787, 933082, 517007, 2215130, 1604170, -6445672, -263604, -1972464, --7820599, -4345433, 3191161, -3405372, 9162239, 4050154, 8973797, -115427, -4380867, -4648765, --6288369, 9607842, -2335389, 4408784, 4906464, 1048509, 3461744, 3165928, 3066607, 1257352, --6303402, -313533, -2419140, -896038, 4365298, -337692, -358093, 3083250, 1941862, 3195456, --2714956, -9908490, -5916855, -3706557, 7384660, -6560563, -1970316, 4582730, -467078, 925029, --5528160, 9754408, 567473, -3663607, 7669201, -4581657, 11857868, 6218576, -2630131, 1486596, --3332358, -2175401, -10856604, 3993246, -4933844, -626528, -406411, -2229088, 4675609, -1654099, --4756677, -4452271, 1058710, -4034585, -4705137, 2882997, 338229, 3609383, -1940252, -9649718, -3246995, 4670240, 5259188, -4897874, -6532646, 1420560, 8472360, 8120173, -7502234, 3847217, -8996883, -6460168, 1561221, -3548180, -7558069, 10959146, 3730179, 10187126, 8910983, 1526861, --7672959, -4339528, 3485903, -325881, 1248225, -7814693, 476205, -14007499, -6310381, -10910291, -6416681, -6160594, -623307, 2121714, -2234457, -2776696, 2919504, 3419331, 9336185, -1311576, --2625836, -7451769, -6867653, 6265821, 854699, 2157147, 11186779, -3551401, -443455, 6192269, --3337727, 2826625, 1579474, 6155762, 5018670, -3976603, -1217086, -8057896, 7625715, -5567888, --7824894, -7066832, 3674345, -2763812, -4495220, 7887171, -3285113, 8143795, -5976447, -4276177, --1908039, 5136781, 6284074, -987306, -8656507, 2275796, -5923834, 9459129, 1044214, 5201743, --9200894, -4408247, 1026497, 4321811, -12020003, 3937411, 3999688, 2075006, -9035537, 6730751, -12062416, -11897596, 4652524, -7494181, 4890894, 170725, 4405026, -3871913, -26307, 2225867, --7598334, -4377109, -3170223, 5666136, 6677601, -2668249, 3214246, -2141578, 4945655, 5558225, -2514167, 1263257, -6107981, -2938295, -7674570, -9220758, -5947993, -67646, -2835752, -1067836, --3573950, -9246528, -2905009, 1033477, 747324, -1253594, 12899934, -11244224, 3784403, -6007049, --1622424, -4066260, -3442416, 4664872, -3459596, -451508, -4188130, -3562139, -5079873, 5667746, --6362994, 4440460, -1740536, 4391604, -866510, -252866, -987306, 4109210, 2544768, -1339493, -10696616, -809601, -6237367, 1624035, -5736466, -7647190, -8220031, 5765994, 1875827, 4890894, -5822902, 2534031, -12418361, -1597728, 2253247, -3571265, -9656160, 11135776, -185757, -131533, -10515154, -3343095, -9658845, 3049427, 7283728, 12137041, -235686, 4808753, 1680406, -11727945, --2698850, -6360847, 6277632, 2694018, 3563212, -4727149, -170188, -1012539, 1620276, -4315906, -5900212, 937914, -3892851, 6031208, 1533303, -7860864, -5550709, 1199907, 8553964, 6614787, --9322763, 18957448, -336081, -124017, 5988795, -1254667, -1911797, -643708, 13157632, -6715182, -6846178, -1949915, 9328669, 2185065, 8442832, -3353833, -5406827, 3926137, 7346542, -3645890, --6689949, -8387535, -6354941, -3497177, -660351, 7164006, 986769, 6256157, 64961, -2218351, -7257421, -5561446, -9843528, -2704756, -5927055, -6075231, -11137387, 9708237, -3824132, -780073, --720481, -7309498, -605590, 663036, 5280126, -7704098, 281320, -1114544, -3368328, -16101296, --2082522, 7723962, 5778879, 7909183, 775242, -8623221, 22846004, 9740986, 15489263, 1702955, --6990060, -2663954, -2372433, -9690520, -772557, -3767760, 4734128, 83752, 336081, -3073049, --4348655, -8202314, 2596308, 856309, 214212, 4294431, -551903, 1838783, -1032403, -7145752, --5785858, 4353486, -204548, 10448045, -13438416, 10559177, 6223408, -4672925, -9811853, -14930917, -2864206, 11718818, -6327024, 11323144, -1222455, -593242, 2262911, -3455301, -13612362, 1441498, -5834713, 2600066, -6207839, -1748589, -4119948, 2607045, 5833640, -759136, 970126, -1452773, -5392332, -3620121, -3051038, 2767570, -4636417, 2419140, -17631378, 12599287, 11647414, 13438953, --4194036, -12183748, 4416837, 4776004, -17883170, -16501801, 16125992, 1687385, -7566122, 5988795, --11059004, -12861280, 2075006, 33432026, 15789910, 6214818, -8805757, 173946, -2943126, 303869, --3497177, -1801739, -3899294, 1279363, 9877888, 1981591, 12118250, -4537096, -3485903, 2281702, -8631811, -1414655, -726386, -17309792, -258772, -9648644, -9664, 13782013, 10222559, -3333968, -10040560, 19093278, -8332774, 5744519, 16255914, -11101954, 17192218, -992137, 7550553, -3484829, -1531156, -1761474, 3193308, 4333085, 17324288, -5691906, -982474, 4881231, -6424734, 5507759, -3846680, -3598646, -5932424, 16972100, 631360, -7857106, -944893, 11070815, -1825361, 7939247, -2920041, 1167157, -765578, -2966749, 21974126, 3593814, 3345780, -11590506, -6266894, 259309, -2769180, 4076461, 5297842, -21837762, 1230508, 1033477, 15795816, 2156611, 4201552, -1813013, -14379551, -23447300, 943819, 11491185, -13538274, 3092913, 2916820, 10791105, 2401424, 826781, --3582540, -6442, -11626476, 3633006, -2769180, 1717987, 3386045, -2405719, -8804683, 2894271, --6928856, -12706124, 7084549, -7361574, 4691178, -11982959, -7196755, -1640141, -3507378, 2340757, --4857071, 12257837, -107911, 11658689, -12761422, -11248519, -3482682, -285078, -267362, -4230543, -10792716, 8402567, 22564148, -4153770, 14317810, -9039832, -1745904, 3826279, -17628156, 19090056, --1052267, 11623792, -1202054, -17859548, -11368242, 6460168, -24521042, 11032160, 645856, 4133369, -11300596, 16819092, 6144488, -7242389, 16420197, -17493938, -1538672, -5474473, 2430415, 13700946, --12206297, 31065498, 4461934, 7630010, -8836358, -12650289, 4719632, 52613, 26878980, -3833258, --8757975, -15152645, -9765682, 7390028, 5199595, 4347581, -1422171, -14850386, -22468048, 1798518, --13313862, 18531174, 2973728, 15091978, -8652748, 6407018, -5356361, 7929584, 22274774, -3390877, --1599875, -3039763, 6365679, 7442642, 4452808, 1868311, 3023657, 9698036, 9266929, -4514011, --6552510, -6295349, -6522445, 25138980, 10714333, -14040248, 12177306, -2793876, -10816875, -7959648, -5463199, 9661529, -15759846, -21388400, 3670587, -9090835, 30250528, 15933255, -3663070, -2269890, -7492034, 14344117, 4671851, -459562, -2863670, -16449188, -3174518, -1645509, -77846, -7042136, --14914274, 9035537, -5769752, 13091060, 4205310, -11764989, -6699612, -5393405, 1513439, -16272020, -10505490, 17598092, -8007430, 11390253, -3815005, -3428995, 6683506, -11100343, 6238440, 14465450, -2323577, 24152748, 9830106, -8599061, 8469139, 5247913, 7252053, 1452236, 10976863, 11834782, -15171972, 7301445, -8005819, -6776922, -11822434, 34897, 24266028, 1560147, 9341554, -15249818, -32114008, -9011378, -28073516, -11511049, 19614042, 2662343, -4684199, -1949378, -3321620, 16828218, --13460428, 10142565, -4225174, 20923470, 28606630, 16645683, 12741020, -9921911, 15312632, 11403675, -8186208, 12696460, 15139760, -2738579, -32628866, -18602040, -24472724, 6496675, 5224291, 6974490, --7922604, 10770167, 23797876, 2269353, 44560, -7190312, 4655745, 10895795, 13314399, 4477504, -6368363, 9932112, -7813083, 23434952, 9558987, 4312684, -6559489, -18451716, -7138236, 9639517, --799938, -26043608, 34870840, -12468290, -6627672, 10400800, 686658, -3755949, 2666101, -7032472, --8002598, -2078764, -18743774, 4363150, -20163260, 251792, -15971373, -18420040, -3535295, -4169876, --3887482, -13567265, 5882495, 13853954, 3860102, 10526965, -18782428, 18227842, 33855080, 3160022, --13569412, 20784958, -17335024, -27816356, 45704356, -5053566, 3213709, -3556233, -20490752, 15388331, --18593450, 7622493, 27866822, -978179, 38292856, -30386894, 28827284, 7948374, -19054622, -10468446, -3583077, -18823768, -9075803, 19663970, -19804094, 12445741, -13055627, 6346888, 22041236, -47997332, --18661632, 19218904, -8685498, 4738960, -13246753, -40254044, -10234370, 12993350, 31172336, -9996536, -15860240, 301185, 7626252, 15917149, 10641855, 27661736, -6907918, 1072668, 7920994, -24704652, --15516106, -7429757, -7633231, 5571110, 762894, 2001992, -12461848, -2200634, -16596291, -13879187, -7039989, 34236796, 20159502, -9086003, -10537702, 16287053, 20055886, -11730093, 5660230, 15011984, --5456756, 32750736, 11704860, 4753992, -24749750, 15548318, 3803731, 12229383, -1976222, 3088082, --3526168, -5557688, -39233988, 10460393, 28322088, 13492640, 4443681, -950798, 14704894, -22672058, --40651864, 2812130, 55834036, 12887586, 44503376, 40916544, 1464584, 3038689, -25365540, -24315420, --1567663, -21239688, 28469190, -61469572, 12214350, -24635932, -47207060, 7317551, 22635014, -9421548, -28264106, 52303576, 292058, 15100568, 8206072, -25790204, -8647917, 27987618, 7457674, 12994424, --7728794, 8978092, 3592740, -8325794, -550293, 15143518, 13801877, 19235548, -8912594, -963146, --40735080, -36050880, 4205310, -21779780, -137439, 21341156, 3915400, 3732327, -7836705, -3082176, -11922292, 32739998, -23674934, -11625940, -3885335, -20645370, -2523830, -19805704, -7538742, -21077552, -19092204, -25826176, -3140695, 6593312, 12382391, 49675056, 63054416, 18335216, -17726940, -32284196, --3922916, -21425444, -10075456, -34291556, 4514011, 37096168, 24895778, 23215908, 1601486, 7435662, -34929896, 37328096, 24657944, 597000, 15220827, 8890045, 7056632, -38064684, 11548630, 8180839, --10368051, 29055454, 33100776, 331786, -955093, -9408126, -11338177, 30794378, 23897198, -16358457, -16544214, 22568980, 3798362, -30873836, -34351148, 31966368, 12400107, 6488622, 27207544, -607738, --10236518, 26799522, 8505109, -22455162, -9649181, -8928163, 10585484, -653372, -11579232, 3658239, --12923557, -2691871, -5190468, -8144332, 20244328, 34240016, -10923176, 6037114, 17954038, -9691594, --5941014, 5486284, 21478058, 5064304, -14287746, -21114060, -22398792, 11235098, 14652818, 30773440, --13952738, -16030429, 12709882, 17656074, 31505196, -2469069, -54268524, -13589277, 19492172, 16219944, -9652402, -12640089, 1244467, -24095840, 5099200, -11497091, 25026238, 31287764, -8053064, -1251983, --17298518, -23115514, -5770826, -44772348, -5937793, -23816668, 21985400, -19446002, 23317914, 22502408, --44629004, -4961224, -13735842, -11806865, -16166257, -26917096, -6082748, -15073725, -27232778, -41276248, -19988778, 21008832, 12394739, -27738510, -37534792, -29019484, -16495359, 6345814, -1501628, -36802500, --22032108, -25398290, 34950296, 10479720, 14983530, -11664057, -20532628, 44157096, 10585484, 13320841, --9090835, 1970316, 12656732, -9876277, 9898289, -4061429, 20687784, 29350732, 628676, -25183004, --20276540, 23000624, 15587510, 19998442, 5224828, 4283693, -11648488, -5732171, 2560338, 13582834, -30652108, -1339493, -59901372, -55728276, -208843, -14478335, 34340948, 34824668, -41064720, -28207198, --17876728, 48646948, 43343200, -25210922, 6079526, -32630478, -31304406, 17405892, -14819248, -806917, --5354751, -22716082, 15177878, 15392089, 12736189, 50146428, -36352068, -9808095, -2134599, 11946452, -45974940, -29348048, 27399206, 34248068, 16211891, -68102072, -32190780, 27567784, -22893786, 17476758, --8529805, -26146150, 15649250, 9376987, 2275259, -9487583, -50839528, -799401, -4851703, 3909494, --10179072, -30798136, 22424024, -17558364, 40705016, -821949, -7288023, 25372520, 12562242, -17175038, --5414343, -12000139, 20102058, 41160284, 24771224, -27248346, 3503083, -16824998, 15351824, -14005888, --11057930, 7372848, -5215164, 24536612, -22206592, -39060044, 7474317, -11028939, 12473122, 21593484, --58884000, -4598300, -14410689, 6877317, 56958244, -11428908, -48462264, -6626598, 34525096, 23938000, --28382218, -2351495, 19512036, 5656472, 24953224, -38619272, -28532004, 33155536, -33268280, -61436824, --25690884, -2363306, 71584760, -14144401, -46699180, 27497454, -52123188, 96954592, -65148212, 17975512, --662499, 21985400, 54570780, 16953846, 7826504, -30975304, -12322798, -30965640, -36223216, -12690018, -7518341, 20447802, 27974732, -3561065, 16392280, 19014894, -16675747, -34886408, 18509162, 6059125, --27693412, -10004589, 26817238, -9550397, -2734821, 23784992, 13848585, 10272488, 3591130, 13273596, --13037373, -32517198, -13727252, 8536784, -12943421, -8137353, 11839614, 186294, -22402012, 22851910, -5153961, -21481278, 2734821, -5682779, 20230906, 10570988, -8144332, 8792335, -12475269, -28737090, -3693135, 6069863, -2647847, -716723, 5782637, -13061532, 3674882, -11348377, 6039798, 19066434, --2438468, 7746511, 8847633, -8804146, 11811, -20258824, 5927055, 9929964, -35408248, 18605262, --22531936, 4983236, -30602, -2695629, 9792525, 52880176, -1740536, -1939715, -14533632, -14657113, -11131481, -800475, 9673340, 15032, -4960151, -7154879, 3830574, -9949829, 10196789, -9370008, -14754823, -11852499, 8711267, -10042170, -1944547, -1704565, -8969502, -7164006, 2375117, -4259534, --2626909, -147640, -6651294, 853625, -1071594, 2160906, -1317481, 4009889, -13612362, 12661564, --4438312, -4183298, 9963787, -7733626, 864362, -9644349, -8092792, 6164889, 5782100, -6749541, --4010426, 2774549, -61203, -11739219, 3402688, 2150168, 377420, 7840463, -2483028, -3218004, --2787971, -7925289, -1796907, 8607651, -8596914, 2496450, -3970161, -896038, 955093, -2487860, -2343442, 340913, 6240051, -8239358, -462783, 5982353, -10901701, 7037841, -4984310, 938987, -4662724, -545998, -5709086, -24478092, -42501924, 16049756, 134322416, 34163244, 73883640, -2470680, --72785200, -23049478, -71622336, -60389388, -21911850, -14198625, -5364951, 40834940, 53819700, 72138808, -90137944, 39562016, -23548768, -41426572, -89251568, -83993992, -34807488, -27720256, -19171124, 37035504, -49444736, 30291330, 45829984, 55897388, 18417894, 15738908, 10048613, -28110560, -13481902, -19953882, --45024680, -24102282, -33504504, -48665200, -27053998, 6747394, 5067525, 28192166, 66602056, 46371688, -37863356, 37757056, 11269457, 3476776, -3898757, -18456548, -27495844, -33911988, -49654116, -43030204, --24505472, -6794102, -16672526, 14811195, 25896506, 22907208, 37986300, 43193948, 27386858, 25731150, -24462524, -2268280, -10924786, -4161823, -33043868, -26174604, -5361193, -24996172, -26481694, -13142600, --12840342, 2990908, 864899, }, +-98247, 1244467, -1082332, -430034, -3767760, -1692217, -4007741, 399432, -2260764, -2665564, +1319092, 2340220, -2917357, 2914672, 334471, -3683471, 585726, -4206921, 2381023, -1177358, +-685584, -1367410, 955093, -1877438, -248571, -1218160, 1555852, 3164317, -2915209, -1376000, +1154809, -636192, 2127083, 3264712, 136902, 1548873, 1027034, 963683, -427886, 2384244, +-3133716, -1216013, 3446711, 112206, 4090956, -4457639, 2360622, -1635846, -6176700, 3228742, +2874944, 956167, -2195802, -1484448, -483721, 660888, 482647, -1101659, -2155000, -1287953, +911607, 146566, 1883880, 4257387, 996969, 333934, 271657, 3554086, 2046552, -762894, +976568, -527744, -1680406, -346819, -2671470, 3749507, 5184026, -3048353, 213675, 165893, +-3712462, 4962835, -1979443, -1942399, 1421634, -5123896, -2294050, 5488968, 1250372, -2239826, +3906273, 1206886, 839666, -805843, 1908576, -34897, -6562173, -315680, -2430952, -297427, +-135291, -6291590, 106300, -4046396, 229781, 630823, 2818572, 3352222, 1119913, 827855, +629750, 2893734, -1574106, 983548, 201327, 445603, 623307, -882616, 2610803, 3863323, +-7427609, 3444564, -1926293, -4498442, -2841658, 5692443, 2890513, -1955821, 3272228, 913754, +-2019708, 1977833, 73551, -45097, 331249, 339302, -743566, -17717, 456340, -404264, +2490544, -1618666, -3406446, -3447248, 12348, 977105, -181462, -27380, 1905355, -991064, +3327526, 2783139, 184684, -2187749, 1367410, -1167694, -1778117, 457951, -3728569, -419296, +-2794950, 1003949, 1731409, 1702418, 1323924, -2870112, -209380, -2370822, 2572149, -4925254, +-2815888, 2541547, -5435818, -574452, -355945, 1428614, 1198833, 2716030, 5650030, 2648921, +-694174, 28991, -2008434, -1524177, -9953587, -9124658, -599148, 6845104, -1670205, 5480379, +493921, 1609002, -1665911, -7654706, 4013110, 1283122, -2295660, 1964948, -4062502, -766115, +2345589, 1089848, 7264401, -4893042, 4420595, -2202245, -5666136, -2571612, -1522029, -1488743, +2048163, 1779727, -4566624, -1971390, -2593624, -899796, 4450123, 4809827, 5093295, -3661997, +615254, -2280091, -367757, -1926293, -2644089, -3046206, -3708168, 3723200, -3531000, -4523138, +-3958349, 126702, -1582159, -1247151, -3141769, 681826, -3508988, -247497, -1465121, 5335423, +-3468723, -3763465, -8432631, -10899553, -2677375, -4864588, -4510253, -1077500, 2210835, -2780991, +-6584722, 4036196, -9530532, 2828236, -1642825, -1729261, 6079526, 4294431, 2215130, 815507, +-1111860, -1013612, -2362232, 950262, 4103305, -3395172, 3886946, 3594351, 999117, 484258, +1581085, 2730526, -6228777, -2741263, 5815386, -4631586, 320512, -171799, 3531537, -538482, +-1434519, 584116, 6033892, 3271691, 2057289, 1851131, 3333968, -5515275, 4095251, -4540854, +3787088, 2375654, -1207423, -956704, -1897839, -2626373, -3986267, -452582, -1288490, -3439732, +-3524558, -2371359, -2073396, 1954210, -5541582, -369904, -2477123, -5534602, -2233920, -1219234, +-3464428, -1482301, -3177739, -1565516, 2919504, 3377992, -5755793, -3645354, 2197950, -1432372, +-6308233, 4112431, 8034273, 1391569, -1597191, -3889630, 1103807, 3517578, 7295539, -3837017, +-1248225, -4774930, -3376918, 3640522, 4163971, -5749351, 3477850, -2020245, -3243237, 5273683, +246424, 2747169, -7330973, 239444, -4601521, 811749, -5777268, -4097936, -708670, -1719598, +12907450, 3689914, 3565360, 2135673, -9098351, 4915053, 3963181, -2430415, 79994, 3726421, +-256087, 3939559, 5348308, 4571993, -2542084, -73551, -1250909, 2181844, -1991254, -3016678, +2045478, -2914672, 1525787, 933082, 517007, 2215130, 1604170, -6445672, -263604, -1972464, +-7820599, -4345433, 3191161, -3405372, 9162239, 4050154, 8973797, -115427, -4380867, -4648765, +-6288369, 9607842, -2335389, 4408784, 4906464, 1048509, 3461744, 3165928, 3066607, 1257352, +-6303402, -313533, -2419140, -896038, 4365298, -337692, -358093, 3083250, 1941862, 3195456, +-2714956, -9908490, -5916855, -3706557, 7384660, -6560563, -1970316, 4582730, -467078, 925029, +-5528160, 9754408, 567473, -3663607, 7669201, -4581657, 11857868, 6218576, -2630131, 1486596, +-3332358, -2175401, -10856604, 3993246, -4933844, -626528, -406411, -2229088, 4675609, -1654099, +-4756677, -4452271, 1058710, -4034585, -4705137, 2882997, 338229, 3609383, -1940252, -9649718, +3246995, 4670240, 5259188, -4897874, -6532646, 1420560, 8472360, 8120173, -7502234, 3847217, +8996883, -6460168, 1561221, -3548180, -7558069, 10959146, 3730179, 10187126, 8910983, 1526861, +-7672959, -4339528, 3485903, -325881, 1248225, -7814693, 476205, -14007499, -6310381, -10910291, +6416681, -6160594, -623307, 2121714, -2234457, -2776696, 2919504, 3419331, 9336185, -1311576, +-2625836, -7451769, -6867653, 6265821, 854699, 2157147, 11186779, -3551401, -443455, 6192269, +-3337727, 2826625, 1579474, 6155762, 5018670, -3976603, -1217086, -8057896, 7625715, -5567888, +-7824894, -7066832, 3674345, -2763812, -4495220, 7887171, -3285113, 8143795, -5976447, -4276177, +-1908039, 5136781, 6284074, -987306, -8656507, 2275796, -5923834, 9459129, 1044214, 5201743, +-9200894, -4408247, 1026497, 4321811, -12020003, 3937411, 3999688, 2075006, -9035537, 6730751, +12062416, -11897596, 4652524, -7494181, 4890894, 170725, 4405026, -3871913, -26307, 2225867, +-7598334, -4377109, -3170223, 5666136, 6677601, -2668249, 3214246, -2141578, 4945655, 5558225, +2514167, 1263257, -6107981, -2938295, -7674570, -9220758, -5947993, -67646, -2835752, -1067836, +-3573950, -9246528, -2905009, 1033477, 747324, -1253594, 12899934, -11244224, 3784403, -6007049, +-1622424, -4066260, -3442416, 4664872, -3459596, -451508, -4188130, -3562139, -5079873, 5667746, +-6362994, 4440460, -1740536, 4391604, -866510, -252866, -987306, 4109210, 2544768, -1339493, +10696616, -809601, -6237367, 1624035, -5736466, -7647190, -8220031, 5765994, 1875827, 4890894, +5822902, 2534031, -12418361, -1597728, 2253247, -3571265, -9656160, 11135776, -185757, -131533, +10515154, -3343095, -9658845, 3049427, 7283728, 12137041, -235686, 4808753, 1680406, -11727945, +-2698850, -6360847, 6277632, 2694018, 3563212, -4727149, -170188, -1012539, 1620276, -4315906, +5900212, 937914, -3892851, 6031208, 1533303, -7860864, -5550709, 1199907, 8553964, 6614787, +-9322763, 18957448, -336081, -124017, 5988795, -1254667, -1911797, -643708, 13157632, -6715182, +6846178, -1949915, 9328669, 2185065, 8442832, -3353833, -5406827, 3926137, 7346542, -3645890, +-6689949, -8387535, -6354941, -3497177, -660351, 7164006, 986769, 6256157, 64961, -2218351, +7257421, -5561446, -9843528, -2704756, -5927055, -6075231, -11137387, 9708237, -3824132, -780073, +-720481, -7309498, -605590, 663036, 5280126, -7704098, 281320, -1114544, -3368328, -16101296, +-2082522, 7723962, 5778879, 7909183, 775242, -8623221, 22846004, 9740986, 15489263, 1702955, +-6990060, -2663954, -2372433, -9690520, -772557, -3767760, 4734128, 83752, 336081, -3073049, +-4348655, -8202314, 2596308, 856309, 214212, 4294431, -551903, 1838783, -1032403, -7145752, +-5785858, 4353486, -204548, 10448045, -13438416, 10559177, 6223408, -4672925, -9811853, -14930917, +2864206, 11718818, -6327024, 11323144, -1222455, -593242, 2262911, -3455301, -13612362, 1441498, +5834713, 2600066, -6207839, -1748589, -4119948, 2607045, 5833640, -759136, 970126, -1452773, +5392332, -3620121, -3051038, 2767570, -4636417, 2419140, -17631378, 12599287, 11647414, 13438953, +-4194036, -12183748, 4416837, 4776004, -17883170, -16501801, 16125992, 1687385, -7566122, 5988795, +-11059004, -12861280, 2075006, 33432026, 15789910, 6214818, -8805757, 173946, -2943126, 303869, +-3497177, -1801739, -3899294, 1279363, 9877888, 1981591, 12118250, -4537096, -3485903, 2281702, +8631811, -1414655, -726386, -17309792, -258772, -9648644, -9664, 13782013, 10222559, -3333968, +10040560, 19093278, -8332774, 5744519, 16255914, -11101954, 17192218, -992137, 7550553, -3484829, +1531156, -1761474, 3193308, 4333085, 17324288, -5691906, -982474, 4881231, -6424734, 5507759, +3846680, -3598646, -5932424, 16972100, 631360, -7857106, -944893, 11070815, -1825361, 7939247, +2920041, 1167157, -765578, -2966749, 21974126, 3593814, 3345780, -11590506, -6266894, 259309, +2769180, 4076461, 5297842, -21837762, 1230508, 1033477, 15795816, 2156611, 4201552, -1813013, +14379551, -23447300, 943819, 11491185, -13538274, 3092913, 2916820, 10791105, 2401424, 826781, +-3582540, -6442, -11626476, 3633006, -2769180, 1717987, 3386045, -2405719, -8804683, 2894271, +-6928856, -12706124, 7084549, -7361574, 4691178, -11982959, -7196755, -1640141, -3507378, 2340757, +-4857071, 12257837, -107911, 11658689, -12761422, -11248519, -3482682, -285078, -267362, -4230543, +10792716, 8402567, 22564148, -4153770, 14317810, -9039832, -1745904, 3826279, -17628156, 19090056, +-1052267, 11623792, -1202054, -17859548, -11368242, 6460168, -24521042, 11032160, 645856, 4133369, +11300596, 16819092, 6144488, -7242389, 16420197, -17493938, -1538672, -5474473, 2430415, 13700946, +-12206297, 31065498, 4461934, 7630010, -8836358, -12650289, 4719632, 52613, 26878980, -3833258, +-8757975, -15152645, -9765682, 7390028, 5199595, 4347581, -1422171, -14850386, -22468048, 1798518, +-13313862, 18531174, 2973728, 15091978, -8652748, 6407018, -5356361, 7929584, 22274774, -3390877, +-1599875, -3039763, 6365679, 7442642, 4452808, 1868311, 3023657, 9698036, 9266929, -4514011, +-6552510, -6295349, -6522445, 25138980, 10714333, -14040248, 12177306, -2793876, -10816875, -7959648, +5463199, 9661529, -15759846, -21388400, 3670587, -9090835, 30250528, 15933255, -3663070, -2269890, +7492034, 14344117, 4671851, -459562, -2863670, -16449188, -3174518, -1645509, -77846, -7042136, +-14914274, 9035537, -5769752, 13091060, 4205310, -11764989, -6699612, -5393405, 1513439, -16272020, +10505490, 17598092, -8007430, 11390253, -3815005, -3428995, 6683506, -11100343, 6238440, 14465450, +2323577, 24152748, 9830106, -8599061, 8469139, 5247913, 7252053, 1452236, 10976863, 11834782, +15171972, 7301445, -8005819, -6776922, -11822434, 34897, 24266028, 1560147, 9341554, -15249818, +32114008, -9011378, -28073516, -11511049, 19614042, 2662343, -4684199, -1949378, -3321620, 16828218, +-13460428, 10142565, -4225174, 20923470, 28606630, 16645683, 12741020, -9921911, 15312632, 11403675, +8186208, 12696460, 15139760, -2738579, -32628866, -18602040, -24472724, 6496675, 5224291, 6974490, +-7922604, 10770167, 23797876, 2269353, 44560, -7190312, 4655745, 10895795, 13314399, 4477504, +6368363, 9932112, -7813083, 23434952, 9558987, 4312684, -6559489, -18451716, -7138236, 9639517, +-799938, -26043608, 34870840, -12468290, -6627672, 10400800, 686658, -3755949, 2666101, -7032472, +-8002598, -2078764, -18743774, 4363150, -20163260, 251792, -15971373, -18420040, -3535295, -4169876, +-3887482, -13567265, 5882495, 13853954, 3860102, 10526965, -18782428, 18227842, 33855080, 3160022, +-13569412, 20784958, -17335024, -27816356, 45704356, -5053566, 3213709, -3556233, -20490752, 15388331, +-18593450, 7622493, 27866822, -978179, 38292856, -30386894, 28827284, 7948374, -19054622, -10468446, +3583077, -18823768, -9075803, 19663970, -19804094, 12445741, -13055627, 6346888, 22041236, -47997332, +-18661632, 19218904, -8685498, 4738960, -13246753, -40254044, -10234370, 12993350, 31172336, -9996536, +15860240, 301185, 7626252, 15917149, 10641855, 27661736, -6907918, 1072668, 7920994, -24704652, +-15516106, -7429757, -7633231, 5571110, 762894, 2001992, -12461848, -2200634, -16596291, -13879187, +7039989, 34236796, 20159502, -9086003, -10537702, 16287053, 20055886, -11730093, 5660230, 15011984, +-5456756, 32750736, 11704860, 4753992, -24749750, 15548318, 3803731, 12229383, -1976222, 3088082, +-3526168, -5557688, -39233988, 10460393, 28322088, 13492640, 4443681, -950798, 14704894, -22672058, +-40651864, 2812130, 55834036, 12887586, 44503376, 40916544, 1464584, 3038689, -25365540, -24315420, +-1567663, -21239688, 28469190, -61469572, 12214350, -24635932, -47207060, 7317551, 22635014, -9421548, +28264106, 52303576, 292058, 15100568, 8206072, -25790204, -8647917, 27987618, 7457674, 12994424, +-7728794, 8978092, 3592740, -8325794, -550293, 15143518, 13801877, 19235548, -8912594, -963146, +-40735080, -36050880, 4205310, -21779780, -137439, 21341156, 3915400, 3732327, -7836705, -3082176, +11922292, 32739998, -23674934, -11625940, -3885335, -20645370, -2523830, -19805704, -7538742, -21077552, +19092204, -25826176, -3140695, 6593312, 12382391, 49675056, 63054416, 18335216, -17726940, -32284196, +-3922916, -21425444, -10075456, -34291556, 4514011, 37096168, 24895778, 23215908, 1601486, 7435662, +34929896, 37328096, 24657944, 597000, 15220827, 8890045, 7056632, -38064684, 11548630, 8180839, +-10368051, 29055454, 33100776, 331786, -955093, -9408126, -11338177, 30794378, 23897198, -16358457, +16544214, 22568980, 3798362, -30873836, -34351148, 31966368, 12400107, 6488622, 27207544, -607738, +-10236518, 26799522, 8505109, -22455162, -9649181, -8928163, 10585484, -653372, -11579232, 3658239, +-12923557, -2691871, -5190468, -8144332, 20244328, 34240016, -10923176, 6037114, 17954038, -9691594, +-5941014, 5486284, 21478058, 5064304, -14287746, -21114060, -22398792, 11235098, 14652818, 30773440, +-13952738, -16030429, 12709882, 17656074, 31505196, -2469069, -54268524, -13589277, 19492172, 16219944, +9652402, -12640089, 1244467, -24095840, 5099200, -11497091, 25026238, 31287764, -8053064, -1251983, +-17298518, -23115514, -5770826, -44772348, -5937793, -23816668, 21985400, -19446002, 23317914, 22502408, +-44629004, -4961224, -13735842, -11806865, -16166257, -26917096, -6082748, -15073725, -27232778, -41276248, +19988778, 21008832, 12394739, -27738510, -37534792, -29019484, -16495359, 6345814, -1501628, -36802500, +-22032108, -25398290, 34950296, 10479720, 14983530, -11664057, -20532628, 44157096, 10585484, 13320841, +-9090835, 1970316, 12656732, -9876277, 9898289, -4061429, 20687784, 29350732, 628676, -25183004, +-20276540, 23000624, 15587510, 19998442, 5224828, 4283693, -11648488, -5732171, 2560338, 13582834, +30652108, -1339493, -59901372, -55728276, -208843, -14478335, 34340948, 34824668, -41064720, -28207198, +-17876728, 48646948, 43343200, -25210922, 6079526, -32630478, -31304406, 17405892, -14819248, -806917, +-5354751, -22716082, 15177878, 15392089, 12736189, 50146428, -36352068, -9808095, -2134599, 11946452, +45974940, -29348048, 27399206, 34248068, 16211891, -68102072, -32190780, 27567784, -22893786, 17476758, +-8529805, -26146150, 15649250, 9376987, 2275259, -9487583, -50839528, -799401, -4851703, 3909494, +-10179072, -30798136, 22424024, -17558364, 40705016, -821949, -7288023, 25372520, 12562242, -17175038, +-5414343, -12000139, 20102058, 41160284, 24771224, -27248346, 3503083, -16824998, 15351824, -14005888, +-11057930, 7372848, -5215164, 24536612, -22206592, -39060044, 7474317, -11028939, 12473122, 21593484, +-58884000, -4598300, -14410689, 6877317, 56958244, -11428908, -48462264, -6626598, 34525096, 23938000, +-28382218, -2351495, 19512036, 5656472, 24953224, -38619272, -28532004, 33155536, -33268280, -61436824, +-25690884, -2363306, 71584760, -14144401, -46699180, 27497454, -52123188, 96954592, -65148212, 17975512, +-662499, 21985400, 54570780, 16953846, 7826504, -30975304, -12322798, -30965640, -36223216, -12690018, +7518341, 20447802, 27974732, -3561065, 16392280, 19014894, -16675747, -34886408, 18509162, 6059125, +-27693412, -10004589, 26817238, -9550397, -2734821, 23784992, 13848585, 10272488, 3591130, 13273596, +-13037373, -32517198, -13727252, 8536784, -12943421, -8137353, 11839614, 186294, -22402012, 22851910, +5153961, -21481278, 2734821, -5682779, 20230906, 10570988, -8144332, 8792335, -12475269, -28737090, +3693135, 6069863, -2647847, -716723, 5782637, -13061532, 3674882, -11348377, 6039798, 19066434, +-2438468, 7746511, 8847633, -8804146, 11811, -20258824, 5927055, 9929964, -35408248, 18605262, +-22531936, 4983236, -30602, -2695629, 9792525, 52880176, -1740536, -1939715, -14533632, -14657113, +11131481, -800475, 9673340, 15032, -4960151, -7154879, 3830574, -9949829, 10196789, -9370008, +14754823, -11852499, 8711267, -10042170, -1944547, -1704565, -8969502, -7164006, 2375117, -4259534, +-2626909, -147640, -6651294, 853625, -1071594, 2160906, -1317481, 4009889, -13612362, 12661564, +-4438312, -4183298, 9963787, -7733626, 864362, -9644349, -8092792, 6164889, 5782100, -6749541, +-4010426, 2774549, -61203, -11739219, 3402688, 2150168, 377420, 7840463, -2483028, -3218004, +-2787971, -7925289, -1796907, 8607651, -8596914, 2496450, -3970161, -896038, 955093, -2487860, +2343442, 340913, 6240051, -8239358, -462783, 5982353, -10901701, 7037841, -4984310, 938987, +4662724, -545998, -5709086, -24478092, -42501924, 16049756, 134322416, 34163244, 73883640, -2470680, +-72785200, -23049478, -71622336, -60389388, -21911850, -14198625, -5364951, 40834940, 53819700, 72138808, +90137944, 39562016, -23548768, -41426572, -89251568, -83993992, -34807488, -27720256, -19171124, 37035504, +49444736, 30291330, 45829984, 55897388, 18417894, 15738908, 10048613, -28110560, -13481902, -19953882, +-45024680, -24102282, -33504504, -48665200, -27053998, 6747394, 5067525, 28192166, 66602056, 46371688, +37863356, 37757056, 11269457, 3476776, -3898757, -18456548, -27495844, -33911988, -49654116, -43030204, +-24505472, -6794102, -16672526, 14811195, 25896506, 22907208, 37986300, 43193948, 27386858, 25731150, +24462524, -2268280, -10924786, -4161823, -33043868, -26174604, -5361193, -24996172, -26481694, -13142600, +-12840342, 2990908, 864899, }, }, { { -576599, -426276, -2568927, 2670933, -3614215, 389768, -1221918, -2304250, -4488778, -1504312, -48318, -806380, 5398774, 2911988, -2048699, 37044, -506806, -76773, 327491, 152471, 1750199, --247497, 1137093, -858457, -6593312, -2307471, -1106491, 323733, 3984656, -2474438, 271657, --373662, -129386, -1427003, 2348273, 466004, -1072131, 2851858, -2022930, 1081795, 1283658, --2902861, 2544768, -1269700, 164283, 659278, 910533, 1276679, -1180042, -2157684, -705985, --1498944, 1106491, -1358283, 297963, 1719061, 4559645, -1600412, -3562675, -1049583, 3362423, -3476239, 2158758, -106837, 1025423, -1277216, -1781875, -1467805, -4255239, 2999498, -606664, -752156, 80531, -2029909, 737661, 863288, 3195993, 3035468, -2722473, -571768, 4541928, -1391033, -2224793, 407485, -2465848, -2342368, -1739999, -4069482, -1302449, 2369211, -108448, -1283122, -585189, -1199370, -1017907, -549219, 3452617, -2185602, 302258, -210990, 241055, -2610266, 7516, 1780264, 5945846, 4508642, 4684736, 2327336, 1140851, -787053, -5305895, -2176475, -1915019, 3427921, 1334661, -1871532, 1738925, -2445984, -4578972, -1471563, -1701344, --4460324, 301721, -561030, -519691, -2088428, 400506, 4631586, 2174864, 3155727, 74625, -1953673, -1683627, -100932, 2553895, -1957968, 1758789, -2421288, -2499134, 350040, 5602248, -3700651, 2250026, -920197, 1077500, 770947, 493921, -735513, -1899986, -2858838, -2107218, -578747, -1760937, 2013266, 1010391, -3445638, 8136816, -172336, 465467, -865436, -4341138, -3179350, -2284923, -2164127, -5063230, -3884798, -1674500, 3096672, 4430796, -933082, 2594697, --1062468, 4801237, 5011153, -10143102, 1803886, -25233, -1034013, 3330747, 5309654, -1738925, --840203, 18790, -394600, -2656437, 2037425, -2683818, -2117419, -317828, 2602750, -1635846, --5759015, -2642479, -3951907, 319975, 234613, -5170067, -714038, -2343442, 917512, -306553, --896038, 1069984, -1824287, 1529008, -2855617, 2456185, 3700651, 5745056, 2284386, -2814814, -1930051, 2263448, -1153199, -6982006, 201863, 3236258, -2964064, 1728724, -4188130, -363998, --2803540, -7191923, -2428267, -3968550, 1355599, 2103460, -2711735, 603980, -1399086, 6582038, -1921461, -9176198, 3313567, 4554276, 1787780, -893353, 2450279, -5811628, 884763, 2416456, --1201517, 2330020, -316754, 2860985, 787590, -3970697, 2484102, 3395172, 3538516, -1138166, -1719061, 1771137, 1373316, -10408316, 1493038, -4509179, -1248225, -1592896, 2442763, 970126, --8347269, -3165391, -1844152, -1741072, 3440806, -3274913, -5841693, 1292785, 2742874, 1535988, --5820755, -2908230, 1884954, -5678484, -435939, -6260989, 898722, 2812130, -3122441, -1129576, -3479461, 4253628, -10362682, -955630, -2891587, 2939368, 1262184, 313533, 868120, -3125126, -2603287, 2061584, -8079371, 5946382, -874563, 1278827, -4155381, -1971390, -3529926, -706522, -838056, -3515968, -4534949, 3643206, -1478543, -4601521, -3852586, -3643206, -1915555, 6542309, --2126009, 682900, -5265630, 5601711, 637266, -4202626, -794569, 3143379, -6806450, 2152852, --1830730, 1347546, 1393180, -3474092, -2036351, -8637716, -2000918, -9698036, 1485522, 1884417, --750009, -1533303, -596464, 1178432, -3428995, -6988986, -2857764, -2732136, -762357, 2218888, --1270237, 3754338, 2068564, 2813741, -3884798, -499827, 89657, -3760781, 1272384, 2480344, -35970, -2018635, -3777961, -4068408, 2874407, 3526705, 208843, 7258495, 6332393, -5710696, --1024350, -295279, -5343476, -6850473, 10251550, -490163, 667331, 2754685, -5857799, -2419677, --3624953, 9375914, 3104188, 112206, -7253126, -6585259, 1395328, -2997887, 5698348, -3098819, -813359, 772557, -11395622, 5709622, 3225521, 5823439, -3121368, 3198677, 3330747, 5987185, -1416266, -11353746, 2842732, 508954, 4523138, 8273718, 438087, 3607236, 3144990, -6784975, -2397666, 657130, 949188, -1822140, -939524, 4256850, 2807298, 205622, -4158602, -13959, --1980517, -2117419, 6819871, 3189550, -278099, -867047, -8224863, -7013145, -8079907, 2203855, -2192044, -8326868, 600759, 628139, -8301635, 587337, 1286343, -1040456, 9549323, -1101122, --4692252, -1098438, 5480915, -364535, -8509941, 9339943, 4780299, -5773510, 4486630, 1013612, -847182, -22549, 495532, -2138894, -4301410, -3878892, 7347616, -304943, -2210298, -128312, -5244155, -4668093, -8787503, 621697, 1854352, 2030446, -7778186, -3353833, 2665564, 3497177, -13082470, 3983582, 10480794, -11529303, 381715, -5655398, 122943, 3924526, 4379793, -5884642, -2545305, -3374771, -3113315, -4063039, -6793565, -906775, -15923591, -67109, 5186710, -613643, --1132798, 1833951, -8377871, 3022046, -7990787, -2412698, 8127152, 1752884, 2772402, 292595, -2357400, 7074885, 6259915, 12253542, 6262063, -9082245, -816044, 10344429, -1483911, -7379828, --1190780, 1063004, -3476776, 6973953, 5027259, -5774584, -1780264, 6696928, 6937983, -2371359, --4517232, 11220602, -4647692, -14835891, -10191957, 3421478, -15141370, -175557, -4611721, 197032, --1522029, -4086662, 5487358, 1726040, -1654636, -4814122, 4075924, -2857764, 7683697, 5514738, --2581812, -5276904, 547071, 1992328, 1015223, -12938589, 6176700, -1252520, 3337727, 4118874, -7020661, 1412507, -6019934, 8128763, -3018825, 3519726, -3651259, 2893197, -519691, -15262166, --3090766, -2782065, -1755031, 816044, -3614215, -2717104, 2006824, 3066070, 1119376, 7887171, -3720516, -8137353, -630286, -263604, -4496831, 9071508, -5681705, -5723581, 9764608, 10063108, --1404991, -461172, -6596533, 1976759, 1256278, -3744675, 1554778, 6043556, 3782256, 7328288, --2138357, -6502581, 3540664, 454730, 1593970, -7711077, -4044786, -4748623, 1382980, 3624953, -1159104, 562104, 7036767, 8331700, 890132, -4845797, 4582193, 3505230, -6826851, 185220, -475668, -1459752, 37044, -943819, 4516158, -1455994, -5105106, 1146219, 5825587, 1988570, -2260227, 5105106, -10878615, -6905771, 4679367, -2847563, -10142028, 5048734, -5184563, -4986457, -6962679, -2268280, -1963337, -1894081, 1987496, 4740570, 2837363, 2449205, 3005940, -4355634, --2215130, -1076963, 6300180, 2902324, -10365904, 3177739, 3569655, -4655208, 10250476, 8975945, -5189394, 167504, -3376918, -2533494, 788663, -3291556, -3487514, -6322192, 1140851, -7186554, -5344550, 1810329, 301721, 971200, 2927020, 2197950, 5690295, 8401493, -3006477, -13608067, --2137283, -9288404, 3377455, 1194001, -12023224, 4371740, -4942971, 15304042, 5270462, -9693204, --170725, 9763534, 5235029, -7982734, -4645007, 10268193, 5964636, -7008313, 8793409, -7155953, --9574019, 1656247, -14560476, 8997956, 9350681, -1887638, -8943196, -1195075, -210453, 2853469, -46171, -8825084, -6372658, 93952, -10411538, -89657, -24570434, -7879655, -2787434, -13593035, --4677757, -2965138, -5873905, -4716948, 3228205, -6651294, -12305618, 3104188, 7726646, -12761958, --3487514, 3681861, 6293738, 10645076, 6897181, 6176163, 6971806, 2309619, 12376485, -7630547, --3224447, 2383170, -6219650, 2079838, 3440269, 6233072, 762357, 10351945, 2130304, 2324114, -7227893, -3557844, -6426882, -215285, -9797357, -6518150, -11300059, -827855, -683437, -15031312, -5097590, -7038378, 2797634, -14260365, 1439351, -10920491, 15392089, 308701, -14179298, 16205448, -20204600, 5201743, -7148973, -5677410, 5009543, -2432562, -993748, 5324686, -10102837, 5539971, --10417443, 4345970, -4303021, -7037841, 2274722, 6872485, 1439888, 6320045, -3398930, 10088878, --7736310, -7915625, -19512036, -4769561, -9922985, -24624122, 6496675, -14338748, -8093329, -11621645, -3515968, -22201760, 6274411, 1457068, -3770445, -812286, -5854041, -2543695, 5688684, -7770670, --4862440, -26844, 4456566, -6829535, -39192, 7171522, -11527692, -3081639, 7486665, -6963753, -83752, -235686, -1398549, 9849971, -8362302, 5733782, -3517578, 7963406, 9234180, -9144522, --11291469, 10786810, -645856, 2130304, 3456375, 715649, -1964948, 5955509, -2791192, -13961328, -4172561, 2508261, -11236171, -1605244, -3607236, 6841346, 9328669, 4007741, 2141578, -3703336, --7715372, 8322573, 6070937, 7408819, 258772, -12438225, -1979980, -2112050, -4316979, -3192235, --120259, -5569499, 29155312, 17494476, 741419, -8950175, -22771380, -2285460, 10030896, -4449049, --9411884, -16320339, -1339493, -3149822, 193274, -5275294, 5043366, 398358, 14282914, 6296422, --6477348, 79457, -2966212, 1632088, -3362423, 3562675, 8754754, -10094784, 1743220, -5854578, -3925063, -3997541, -8049843, -14578730, -1503775, 9274445, 2643552, -1284195, 2950643, -499290, -8041790, 13735305, -4788889, -2327336, -15371688, -15771657, 4364761, 3133716, -7116761, -5301064, --13798119, -8654896, 5299990, -1014149, -56371, 1477469, -1104880, 7050726, 3564823, -10407780, -513785, -9379672, -789200, -4625680, -3005940, 11824582, 22711788, 37944964, 1797444, 12919798, --10561325, -13121662, -19078244, 100932, 1329292, 5330592, 6788733, -679679, 387621, 10646687, -18181134, -9078487, 191126, 3296924, -14543296, -31675, -9337796, -9365713, 13994614, -4245575, --3330747, -7613367, 16042777, 13802414, 133681, 22785876, 2716030, 6997576, 5181341, -6573448, --7374996, -12123082, -6176163, 2627446, 223338, 10117332, 906775, -1292785, -1775432, 7101729, --10416906, -25845502, -8919573, 7409893, 2449742, -2270964, -7584912, 298500, -12299176, -2010045, --11210938, -926639, -1377074, -8074539, 7621420, 3639985, 14444512, -12055973, 22356916, 5887327, --4383551, -8023536, -4118874, 3431679, 12825309, -4046933, 7275138, -11456825, 9070434, -10382547, --11839614, 11497627, -16906066, 10976326, 8870181, 17846662, -18449032, 13931800, -2231773, 12599287, -4081830, -18310520, -4270808, -3051038, 4175245, 1416266, -12616466, -16619376, -34434364, -10403485, --20273856, 5743445, -1049046, -6732361, -10108742, -9365176, -8718247, -9168145, -9249212, 1091459, --7568806, -1199370, -16290811, -24635396, 30208116, -9313637, 16297253, -2994129, 4090956, 5397164, -8706436, 6010807, -1715303, -329102, -13279502, -2787434, -3298535, -8628589, -13932337, 5564667, --1746978, 19637128, -13658533, 577136, 26663694, -6243809, -22559852, -6953552, 648003, -9853192, -15475304, 7519414, -8904541, 6696391, 8164733, -4864588, -476741, 4622996, 10188736, 20401, --10709501, -9739375, 12202002, 9504763, -7032472, -13777718, 8690866, 11229729, -9971840, -12183748, -8458938, -15539192, 30642982, 7696582, -3367254, 2401424, 6657200, 3065533, -6860137, 2113661, -126165, 12905303, 8207683, -12880070, -53150, 4782446, 3566970, -8479339, 20260434, 14336064, -29196114, 16144245, 10749766, 4156455, -25876104, -2235531, 3269544, -15278272, -4284230, 28854128, -1948305, -17043504, -16910896, 14802068, -23213762, -6208375, 641024, 5824513, 2234994, -4699231, -7004018, -10699300, -474594, -2493229, -6999186, -1871532, -5056250, -15414101, 7310035, -13460428, -6992744, 6216429, 8198019, 1008780, 5173825, -6052146, 23422604, 2555506, -26431766, -23288386, -1236951, 9335648, 18743238, -7315940, -16360604, -7729331, -3060701, 1253057, 10434623, 1480690, --10274636, 25467546, -33842196, -6595459, 4784057, -23910082, -13244069, -7295002, 1691680, -38124816, --19223200, 24809878, -12027519, 6167036, -10893648, -31060666, -13940390, 13400298, -7182259, 3243237, -16533477, -8024610, -45746232, -13909788, 4266513, 11550241, 14556181, 10052908, 13443785, 19614578, -39966280, -23671176, 17675402, -7271917, 910533, -7358353, -29895120, -25263534, -2871723, -3147674, -8375723, 10621454, 17780628, -6822019, 1088774, -10067940, 1702418, -3245922, 1483911, 14904073, -10575820, 3784403, 14491220, 13387950, -24932286, 11393474, -13763760, -21455510, -4079145, 10838350, -5400922, -15119359, 6161131, -270583, 11300059, -2806761, -24019068, -20461762, -19561966, -23311472, -4733054, 15697032, -1323924, 62054760, -39847632, -33643552, 21417392, -7752953, -10648298, -6489159, --1202054, -1515587, -36814312, 1852742, -307090, 3020436, 32759864, -4577362, 13476534, 8974334, -17579302, 46477452, -14698452, 59146532, 21228950, -6231998, 9808095, -28056336, 10145250, 45107356, -1197222, 47066936, 24713778, -2812130, -18265422, 53070764, 7853885, -8909910, 6749541, -12069395, --3678640, -1810866, -3384434, 6696928, 14672682, 10308458, 1815161, 6800007, -10797548, -10308458, -3062312, -3153043, 17273822, 18901078, 11863237, -4871567, 1008780, -22999550, -14625437, -4273493, --15989090, -24866786, -15030775, 11857331, -14679661, -43841952, -20533164, 13428752, -17986786, -12460774, -347355, -3163780, 20338280, 30427158, 39557184, -21008296, 10999411, -159988, 949725, -8400419, --26758720, -52402360, -35065724, 18550500, -35558036, -18063558, 9101036, 18278844, -13524315, 20663624, -57148836, 12825309, 10575283, -42776264, -59151900, -11598022, -18915036, -29830696, -9649181, -24235426, -17899276, 13205414, 51779052, 25865904, -11722576, 24396488, 47579112, -25194278, 35998268, 29405494, --5056787, -7177427, -16615081, 5255430, 32154272, 24382530, 37792492, -16223702, -7772280, -7410429, --2586644, -9854266, 9761924, -12156368, 27781460, 12315819, -46068356, -19357418, 281320, 7403987, -19753628, -8935679, -17405892, 5734855, 5427765, -6763500, -8523363, 5819144, -12950400, -19303194, --8921721, 44029320, 18135500, 8131984, -21690122, -6244883, -18302466, 11804718, 21390010, 8039642, -1864016, 13442174, -6809134, 28731720, 16319265, 2832531, 9904195, 263604, 55562380, 12676596, --22348326, 10377178, 10546829, 7035694, 13629542, 2430952, -20830054, 28222230, 7429757, 6529961, -12206834, 6987912, 2117419, -13962939, 21378200, 24100136, 14084272, 64521148, 47339668, -20717312, --43521440, -935229, -10394895, -54476828, -8824010, 15217069, 14098767, -11544335, 17974438, 7242926, --9670119, -19787452, 2855080, -4051228, -32921462, -8946417, -12922483, 3193308, -44731548, -32636920, --7696582, 21842594, -4861903, -5732708, -27967754, 1224066, 20045150, 1720134, -17558364, -8244727, --5540508, -8108899, 3231963, 7921531, -24245628, -23918136, 1436667, -347355, 2838974, 40794672, --27140436, -2116345, -4088272, -38883948, -14437533, -28360206, -7151658, -2036888, 25125022, 31717796, -35631048, 11355357, 3696356, -14223321, -36456220, 1702418, 10742250, -11310796, 44191456, 110583056, -102877888, 15821586, -70785360, -61818000, -27450210, -38696044, 126820184, 80814640, 47431472, 66143032, --4040491, -34181496, -95428264, -58631136, -25756918, -4387846, 34372088, 73114304, 25682294, -25102474, -29321204, 9737765, -2684, -48770964, -20568598, 49227304, -34428996, 16020765, -3740917, -7026567, -10297721, 8564702, 20556250, 41918880, -26620744, -27071178, 3925600, -15255724, 20140712, -28508382, --20802138, -16903380, -1876901, -2335389, -22662394, 11365020, 32461362, -25901338, -36451388, -20673288, --11971684, -4016331, 44799192, 5876589, -6209449, -45856292, -17390860, 7320235, 36561444, 20733418, --12446278, -67496488, -55412596, 50172196, 46555836, 52693880, -28476706, -114543560, -28658170, 54802172, -38034084, 8849780, -19499152, 9488656, -53403624, -26198764, 9536438, -12082280, 7726110, -6976101, --5096516, 51020992, -44231720, -18067316, 33169496, 33375654, 53492208, 26979910, -91865592, 26121454, -79257712, 18686866, 33982856, 9258339, -35785668, -59232968, 7531225, 9465571, 6493454, 56499756, -10609643, -5279052, -35764728, -7241315, -2699387, -9567040, 532576, -7916162, 15588584, 5888400, --9941239, -2825552, 23676544, -899259, -441308, 1456531, -4886599, -10757819, 13612362, 10362682, -9380745, -15219753, 8266202, 20402706, 9114994, -2161979, 14487462, -3431142, -15649250, 3409667, -4801774, -14057428, -13677860, 13371844, 14467597, -14556718, 9330280, 7642895, 386010, -5796595, -559956, 10060424, -195421, -12837657, 6639483, 6689412, -22204980, 5107790, 16813186, 4858145, --14513231, 1771137, 10310606, -19349902, 5012764, 8566312, 3464965, -5093831, -18516678, 21256330, --23694798, -1793149, 21147882, 917512, -5201743, 1510755, -22756348, 10972031, -3159485, 15024869, -17451526, 53689776, 4897337, -6723235, -17824652, -12109123, 6505265, -8153996, 7152195, -10828686, --634581, 8428336, -4597763, 3918621, 4170413, -15010911, 4374424, -4959614, -2988760, -12361990, -3745212, -3531000, -7475391, -3652333, 6241661, -5392332, -5011153, 7582765, -8114804, 4272419, -7549479, -14940581, 15086609, -3703336, -17242146, 9380745, 9654013, -8148627, 3230889, 5396090, --7042673, -6572374, 448287, 1092532, 5209796, -2305324, -476205, -7272990, 7233799, -5654325, --1418413, 8681740, -9822053, 3144453, -1382443, 219043, -4345433, -6432788, -2187749, 11806328, --7385197, -2780991, 2429341, 2712272, 913754, -6757594, 5953899, -2874944, -5417028, 104153, --10419054, 16517370, -6411313, 3555696, 4487167, -3083787, 6919729, -26126822, -44335872, 20601348, -150156896, 23738284, 74683576, -17060684, -77306192, -27226334, -75361640, -48557288, -16295106, -7597261, -2863133, 44980120, 52636972, 74658880, 72835128, 23971824, -29779692, -46453828, -87045568, -65540128, --35509716, -12960601, -9552007, 27240294, 44008384, 35148940, 46401216, 46256260, 16094853, 15375983, -4838818, -32872070, -13176960, -28191092, -50521700, -29530048, -29841432, -42591580, -9965935, 20694226, -14528801, 44529684, 56864292, 30540438, 37598144, 29419990, -4888210, -755377, -3547106, -30524870, --39058968, -33587180, -52185464, -43242268, -16342887, -2112050, 5301601, 36046048, 31852014, 32013076, -38854420, 30122216, 9268539, 19175956, 9355513, -11183021, -6426882, -20983600, -45847164, -26555246, --26025354, -34526168, -16361141, -7961796, -8920647, 12223477, 751619, 0, 0, 0, -0, 0, 0, }, +426276, -2568927, 2670933, -3614215, 389768, -1221918, -2304250, -4488778, -1504312, -48318, +806380, 5398774, 2911988, -2048699, 37044, -506806, -76773, 327491, 152471, 1750199, +-247497, 1137093, -858457, -6593312, -2307471, -1106491, 323733, 3984656, -2474438, 271657, +-373662, -129386, -1427003, 2348273, 466004, -1072131, 2851858, -2022930, 1081795, 1283658, +-2902861, 2544768, -1269700, 164283, 659278, 910533, 1276679, -1180042, -2157684, -705985, +-1498944, 1106491, -1358283, 297963, 1719061, 4559645, -1600412, -3562675, -1049583, 3362423, +3476239, 2158758, -106837, 1025423, -1277216, -1781875, -1467805, -4255239, 2999498, -606664, +752156, 80531, -2029909, 737661, 863288, 3195993, 3035468, -2722473, -571768, 4541928, +1391033, -2224793, 407485, -2465848, -2342368, -1739999, -4069482, -1302449, 2369211, -108448, +1283122, -585189, -1199370, -1017907, -549219, 3452617, -2185602, 302258, -210990, 241055, +2610266, 7516, 1780264, 5945846, 4508642, 4684736, 2327336, 1140851, -787053, -5305895, +2176475, -1915019, 3427921, 1334661, -1871532, 1738925, -2445984, -4578972, -1471563, -1701344, +-4460324, 301721, -561030, -519691, -2088428, 400506, 4631586, 2174864, 3155727, 74625, +1953673, -1683627, -100932, 2553895, -1957968, 1758789, -2421288, -2499134, 350040, 5602248, +3700651, 2250026, -920197, 1077500, 770947, 493921, -735513, -1899986, -2858838, -2107218, +578747, -1760937, 2013266, 1010391, -3445638, 8136816, -172336, 465467, -865436, -4341138, +3179350, -2284923, -2164127, -5063230, -3884798, -1674500, 3096672, 4430796, -933082, 2594697, +-1062468, 4801237, 5011153, -10143102, 1803886, -25233, -1034013, 3330747, 5309654, -1738925, +-840203, 18790, -394600, -2656437, 2037425, -2683818, -2117419, -317828, 2602750, -1635846, +-5759015, -2642479, -3951907, 319975, 234613, -5170067, -714038, -2343442, 917512, -306553, +-896038, 1069984, -1824287, 1529008, -2855617, 2456185, 3700651, 5745056, 2284386, -2814814, +1930051, 2263448, -1153199, -6982006, 201863, 3236258, -2964064, 1728724, -4188130, -363998, +-2803540, -7191923, -2428267, -3968550, 1355599, 2103460, -2711735, 603980, -1399086, 6582038, +1921461, -9176198, 3313567, 4554276, 1787780, -893353, 2450279, -5811628, 884763, 2416456, +-1201517, 2330020, -316754, 2860985, 787590, -3970697, 2484102, 3395172, 3538516, -1138166, +1719061, 1771137, 1373316, -10408316, 1493038, -4509179, -1248225, -1592896, 2442763, 970126, +-8347269, -3165391, -1844152, -1741072, 3440806, -3274913, -5841693, 1292785, 2742874, 1535988, +-5820755, -2908230, 1884954, -5678484, -435939, -6260989, 898722, 2812130, -3122441, -1129576, +3479461, 4253628, -10362682, -955630, -2891587, 2939368, 1262184, 313533, 868120, -3125126, +2603287, 2061584, -8079371, 5946382, -874563, 1278827, -4155381, -1971390, -3529926, -706522, +838056, -3515968, -4534949, 3643206, -1478543, -4601521, -3852586, -3643206, -1915555, 6542309, +-2126009, 682900, -5265630, 5601711, 637266, -4202626, -794569, 3143379, -6806450, 2152852, +-1830730, 1347546, 1393180, -3474092, -2036351, -8637716, -2000918, -9698036, 1485522, 1884417, +-750009, -1533303, -596464, 1178432, -3428995, -6988986, -2857764, -2732136, -762357, 2218888, +-1270237, 3754338, 2068564, 2813741, -3884798, -499827, 89657, -3760781, 1272384, 2480344, +35970, -2018635, -3777961, -4068408, 2874407, 3526705, 208843, 7258495, 6332393, -5710696, +-1024350, -295279, -5343476, -6850473, 10251550, -490163, 667331, 2754685, -5857799, -2419677, +-3624953, 9375914, 3104188, 112206, -7253126, -6585259, 1395328, -2997887, 5698348, -3098819, +813359, 772557, -11395622, 5709622, 3225521, 5823439, -3121368, 3198677, 3330747, 5987185, +1416266, -11353746, 2842732, 508954, 4523138, 8273718, 438087, 3607236, 3144990, -6784975, +2397666, 657130, 949188, -1822140, -939524, 4256850, 2807298, 205622, -4158602, -13959, +-1980517, -2117419, 6819871, 3189550, -278099, -867047, -8224863, -7013145, -8079907, 2203855, +2192044, -8326868, 600759, 628139, -8301635, 587337, 1286343, -1040456, 9549323, -1101122, +-4692252, -1098438, 5480915, -364535, -8509941, 9339943, 4780299, -5773510, 4486630, 1013612, +847182, -22549, 495532, -2138894, -4301410, -3878892, 7347616, -304943, -2210298, -128312, +5244155, -4668093, -8787503, 621697, 1854352, 2030446, -7778186, -3353833, 2665564, 3497177, +13082470, 3983582, 10480794, -11529303, 381715, -5655398, 122943, 3924526, 4379793, -5884642, +2545305, -3374771, -3113315, -4063039, -6793565, -906775, -15923591, -67109, 5186710, -613643, +-1132798, 1833951, -8377871, 3022046, -7990787, -2412698, 8127152, 1752884, 2772402, 292595, +2357400, 7074885, 6259915, 12253542, 6262063, -9082245, -816044, 10344429, -1483911, -7379828, +-1190780, 1063004, -3476776, 6973953, 5027259, -5774584, -1780264, 6696928, 6937983, -2371359, +-4517232, 11220602, -4647692, -14835891, -10191957, 3421478, -15141370, -175557, -4611721, 197032, +-1522029, -4086662, 5487358, 1726040, -1654636, -4814122, 4075924, -2857764, 7683697, 5514738, +-2581812, -5276904, 547071, 1992328, 1015223, -12938589, 6176700, -1252520, 3337727, 4118874, +7020661, 1412507, -6019934, 8128763, -3018825, 3519726, -3651259, 2893197, -519691, -15262166, +-3090766, -2782065, -1755031, 816044, -3614215, -2717104, 2006824, 3066070, 1119376, 7887171, +3720516, -8137353, -630286, -263604, -4496831, 9071508, -5681705, -5723581, 9764608, 10063108, +-1404991, -461172, -6596533, 1976759, 1256278, -3744675, 1554778, 6043556, 3782256, 7328288, +-2138357, -6502581, 3540664, 454730, 1593970, -7711077, -4044786, -4748623, 1382980, 3624953, +1159104, 562104, 7036767, 8331700, 890132, -4845797, 4582193, 3505230, -6826851, 185220, +475668, -1459752, 37044, -943819, 4516158, -1455994, -5105106, 1146219, 5825587, 1988570, +2260227, 5105106, -10878615, -6905771, 4679367, -2847563, -10142028, 5048734, -5184563, -4986457, +6962679, -2268280, -1963337, -1894081, 1987496, 4740570, 2837363, 2449205, 3005940, -4355634, +-2215130, -1076963, 6300180, 2902324, -10365904, 3177739, 3569655, -4655208, 10250476, 8975945, +5189394, 167504, -3376918, -2533494, 788663, -3291556, -3487514, -6322192, 1140851, -7186554, +5344550, 1810329, 301721, 971200, 2927020, 2197950, 5690295, 8401493, -3006477, -13608067, +-2137283, -9288404, 3377455, 1194001, -12023224, 4371740, -4942971, 15304042, 5270462, -9693204, +-170725, 9763534, 5235029, -7982734, -4645007, 10268193, 5964636, -7008313, 8793409, -7155953, +-9574019, 1656247, -14560476, 8997956, 9350681, -1887638, -8943196, -1195075, -210453, 2853469, +46171, -8825084, -6372658, 93952, -10411538, -89657, -24570434, -7879655, -2787434, -13593035, +-4677757, -2965138, -5873905, -4716948, 3228205, -6651294, -12305618, 3104188, 7726646, -12761958, +-3487514, 3681861, 6293738, 10645076, 6897181, 6176163, 6971806, 2309619, 12376485, -7630547, +-3224447, 2383170, -6219650, 2079838, 3440269, 6233072, 762357, 10351945, 2130304, 2324114, +7227893, -3557844, -6426882, -215285, -9797357, -6518150, -11300059, -827855, -683437, -15031312, +5097590, -7038378, 2797634, -14260365, 1439351, -10920491, 15392089, 308701, -14179298, 16205448, +20204600, 5201743, -7148973, -5677410, 5009543, -2432562, -993748, 5324686, -10102837, 5539971, +-10417443, 4345970, -4303021, -7037841, 2274722, 6872485, 1439888, 6320045, -3398930, 10088878, +-7736310, -7915625, -19512036, -4769561, -9922985, -24624122, 6496675, -14338748, -8093329, -11621645, +3515968, -22201760, 6274411, 1457068, -3770445, -812286, -5854041, -2543695, 5688684, -7770670, +-4862440, -26844, 4456566, -6829535, -39192, 7171522, -11527692, -3081639, 7486665, -6963753, +83752, -235686, -1398549, 9849971, -8362302, 5733782, -3517578, 7963406, 9234180, -9144522, +-11291469, 10786810, -645856, 2130304, 3456375, 715649, -1964948, 5955509, -2791192, -13961328, +4172561, 2508261, -11236171, -1605244, -3607236, 6841346, 9328669, 4007741, 2141578, -3703336, +-7715372, 8322573, 6070937, 7408819, 258772, -12438225, -1979980, -2112050, -4316979, -3192235, +-120259, -5569499, 29155312, 17494476, 741419, -8950175, -22771380, -2285460, 10030896, -4449049, +-9411884, -16320339, -1339493, -3149822, 193274, -5275294, 5043366, 398358, 14282914, 6296422, +-6477348, 79457, -2966212, 1632088, -3362423, 3562675, 8754754, -10094784, 1743220, -5854578, +3925063, -3997541, -8049843, -14578730, -1503775, 9274445, 2643552, -1284195, 2950643, -499290, +8041790, 13735305, -4788889, -2327336, -15371688, -15771657, 4364761, 3133716, -7116761, -5301064, +-13798119, -8654896, 5299990, -1014149, -56371, 1477469, -1104880, 7050726, 3564823, -10407780, +513785, -9379672, -789200, -4625680, -3005940, 11824582, 22711788, 37944964, 1797444, 12919798, +-10561325, -13121662, -19078244, 100932, 1329292, 5330592, 6788733, -679679, 387621, 10646687, +18181134, -9078487, 191126, 3296924, -14543296, -31675, -9337796, -9365713, 13994614, -4245575, +-3330747, -7613367, 16042777, 13802414, 133681, 22785876, 2716030, 6997576, 5181341, -6573448, +-7374996, -12123082, -6176163, 2627446, 223338, 10117332, 906775, -1292785, -1775432, 7101729, +-10416906, -25845502, -8919573, 7409893, 2449742, -2270964, -7584912, 298500, -12299176, -2010045, +-11210938, -926639, -1377074, -8074539, 7621420, 3639985, 14444512, -12055973, 22356916, 5887327, +-4383551, -8023536, -4118874, 3431679, 12825309, -4046933, 7275138, -11456825, 9070434, -10382547, +-11839614, 11497627, -16906066, 10976326, 8870181, 17846662, -18449032, 13931800, -2231773, 12599287, +4081830, -18310520, -4270808, -3051038, 4175245, 1416266, -12616466, -16619376, -34434364, -10403485, +-20273856, 5743445, -1049046, -6732361, -10108742, -9365176, -8718247, -9168145, -9249212, 1091459, +-7568806, -1199370, -16290811, -24635396, 30208116, -9313637, 16297253, -2994129, 4090956, 5397164, +8706436, 6010807, -1715303, -329102, -13279502, -2787434, -3298535, -8628589, -13932337, 5564667, +-1746978, 19637128, -13658533, 577136, 26663694, -6243809, -22559852, -6953552, 648003, -9853192, +15475304, 7519414, -8904541, 6696391, 8164733, -4864588, -476741, 4622996, 10188736, 20401, +-10709501, -9739375, 12202002, 9504763, -7032472, -13777718, 8690866, 11229729, -9971840, -12183748, +8458938, -15539192, 30642982, 7696582, -3367254, 2401424, 6657200, 3065533, -6860137, 2113661, +126165, 12905303, 8207683, -12880070, -53150, 4782446, 3566970, -8479339, 20260434, 14336064, +29196114, 16144245, 10749766, 4156455, -25876104, -2235531, 3269544, -15278272, -4284230, 28854128, +1948305, -17043504, -16910896, 14802068, -23213762, -6208375, 641024, 5824513, 2234994, -4699231, +7004018, -10699300, -474594, -2493229, -6999186, -1871532, -5056250, -15414101, 7310035, -13460428, +6992744, 6216429, 8198019, 1008780, 5173825, -6052146, 23422604, 2555506, -26431766, -23288386, +1236951, 9335648, 18743238, -7315940, -16360604, -7729331, -3060701, 1253057, 10434623, 1480690, +-10274636, 25467546, -33842196, -6595459, 4784057, -23910082, -13244069, -7295002, 1691680, -38124816, +-19223200, 24809878, -12027519, 6167036, -10893648, -31060666, -13940390, 13400298, -7182259, 3243237, +16533477, -8024610, -45746232, -13909788, 4266513, 11550241, 14556181, 10052908, 13443785, 19614578, +39966280, -23671176, 17675402, -7271917, 910533, -7358353, -29895120, -25263534, -2871723, -3147674, +8375723, 10621454, 17780628, -6822019, 1088774, -10067940, 1702418, -3245922, 1483911, 14904073, +10575820, 3784403, 14491220, 13387950, -24932286, 11393474, -13763760, -21455510, -4079145, 10838350, +5400922, -15119359, 6161131, -270583, 11300059, -2806761, -24019068, -20461762, -19561966, -23311472, +4733054, 15697032, -1323924, 62054760, -39847632, -33643552, 21417392, -7752953, -10648298, -6489159, +-1202054, -1515587, -36814312, 1852742, -307090, 3020436, 32759864, -4577362, 13476534, 8974334, +17579302, 46477452, -14698452, 59146532, 21228950, -6231998, 9808095, -28056336, 10145250, 45107356, +1197222, 47066936, 24713778, -2812130, -18265422, 53070764, 7853885, -8909910, 6749541, -12069395, +-3678640, -1810866, -3384434, 6696928, 14672682, 10308458, 1815161, 6800007, -10797548, -10308458, +3062312, -3153043, 17273822, 18901078, 11863237, -4871567, 1008780, -22999550, -14625437, -4273493, +-15989090, -24866786, -15030775, 11857331, -14679661, -43841952, -20533164, 13428752, -17986786, -12460774, +347355, -3163780, 20338280, 30427158, 39557184, -21008296, 10999411, -159988, 949725, -8400419, +-26758720, -52402360, -35065724, 18550500, -35558036, -18063558, 9101036, 18278844, -13524315, 20663624, +57148836, 12825309, 10575283, -42776264, -59151900, -11598022, -18915036, -29830696, -9649181, -24235426, +17899276, 13205414, 51779052, 25865904, -11722576, 24396488, 47579112, -25194278, 35998268, 29405494, +-5056787, -7177427, -16615081, 5255430, 32154272, 24382530, 37792492, -16223702, -7772280, -7410429, +-2586644, -9854266, 9761924, -12156368, 27781460, 12315819, -46068356, -19357418, 281320, 7403987, +19753628, -8935679, -17405892, 5734855, 5427765, -6763500, -8523363, 5819144, -12950400, -19303194, +-8921721, 44029320, 18135500, 8131984, -21690122, -6244883, -18302466, 11804718, 21390010, 8039642, +1864016, 13442174, -6809134, 28731720, 16319265, 2832531, 9904195, 263604, 55562380, 12676596, +-22348326, 10377178, 10546829, 7035694, 13629542, 2430952, -20830054, 28222230, 7429757, 6529961, +12206834, 6987912, 2117419, -13962939, 21378200, 24100136, 14084272, 64521148, 47339668, -20717312, +-43521440, -935229, -10394895, -54476828, -8824010, 15217069, 14098767, -11544335, 17974438, 7242926, +-9670119, -19787452, 2855080, -4051228, -32921462, -8946417, -12922483, 3193308, -44731548, -32636920, +-7696582, 21842594, -4861903, -5732708, -27967754, 1224066, 20045150, 1720134, -17558364, -8244727, +-5540508, -8108899, 3231963, 7921531, -24245628, -23918136, 1436667, -347355, 2838974, 40794672, +-27140436, -2116345, -4088272, -38883948, -14437533, -28360206, -7151658, -2036888, 25125022, 31717796, +35631048, 11355357, 3696356, -14223321, -36456220, 1702418, 10742250, -11310796, 44191456, 110583056, +102877888, 15821586, -70785360, -61818000, -27450210, -38696044, 126820184, 80814640, 47431472, 66143032, +-4040491, -34181496, -95428264, -58631136, -25756918, -4387846, 34372088, 73114304, 25682294, -25102474, +29321204, 9737765, -2684, -48770964, -20568598, 49227304, -34428996, 16020765, -3740917, -7026567, +10297721, 8564702, 20556250, 41918880, -26620744, -27071178, 3925600, -15255724, 20140712, -28508382, +-20802138, -16903380, -1876901, -2335389, -22662394, 11365020, 32461362, -25901338, -36451388, -20673288, +-11971684, -4016331, 44799192, 5876589, -6209449, -45856292, -17390860, 7320235, 36561444, 20733418, +-12446278, -67496488, -55412596, 50172196, 46555836, 52693880, -28476706, -114543560, -28658170, 54802172, +38034084, 8849780, -19499152, 9488656, -53403624, -26198764, 9536438, -12082280, 7726110, -6976101, +-5096516, 51020992, -44231720, -18067316, 33169496, 33375654, 53492208, 26979910, -91865592, 26121454, +79257712, 18686866, 33982856, 9258339, -35785668, -59232968, 7531225, 9465571, 6493454, 56499756, +10609643, -5279052, -35764728, -7241315, -2699387, -9567040, 532576, -7916162, 15588584, 5888400, +-9941239, -2825552, 23676544, -899259, -441308, 1456531, -4886599, -10757819, 13612362, 10362682, +9380745, -15219753, 8266202, 20402706, 9114994, -2161979, 14487462, -3431142, -15649250, 3409667, +4801774, -14057428, -13677860, 13371844, 14467597, -14556718, 9330280, 7642895, 386010, -5796595, +559956, 10060424, -195421, -12837657, 6639483, 6689412, -22204980, 5107790, 16813186, 4858145, +-14513231, 1771137, 10310606, -19349902, 5012764, 8566312, 3464965, -5093831, -18516678, 21256330, +-23694798, -1793149, 21147882, 917512, -5201743, 1510755, -22756348, 10972031, -3159485, 15024869, +17451526, 53689776, 4897337, -6723235, -17824652, -12109123, 6505265, -8153996, 7152195, -10828686, +-634581, 8428336, -4597763, 3918621, 4170413, -15010911, 4374424, -4959614, -2988760, -12361990, +3745212, -3531000, -7475391, -3652333, 6241661, -5392332, -5011153, 7582765, -8114804, 4272419, +7549479, -14940581, 15086609, -3703336, -17242146, 9380745, 9654013, -8148627, 3230889, 5396090, +-7042673, -6572374, 448287, 1092532, 5209796, -2305324, -476205, -7272990, 7233799, -5654325, +-1418413, 8681740, -9822053, 3144453, -1382443, 219043, -4345433, -6432788, -2187749, 11806328, +-7385197, -2780991, 2429341, 2712272, 913754, -6757594, 5953899, -2874944, -5417028, 104153, +-10419054, 16517370, -6411313, 3555696, 4487167, -3083787, 6919729, -26126822, -44335872, 20601348, +150156896, 23738284, 74683576, -17060684, -77306192, -27226334, -75361640, -48557288, -16295106, -7597261, +2863133, 44980120, 52636972, 74658880, 72835128, 23971824, -29779692, -46453828, -87045568, -65540128, +-35509716, -12960601, -9552007, 27240294, 44008384, 35148940, 46401216, 46256260, 16094853, 15375983, +4838818, -32872070, -13176960, -28191092, -50521700, -29530048, -29841432, -42591580, -9965935, 20694226, +14528801, 44529684, 56864292, 30540438, 37598144, 29419990, -4888210, -755377, -3547106, -30524870, +-39058968, -33587180, -52185464, -43242268, -16342887, -2112050, 5301601, 36046048, 31852014, 32013076, +38854420, 30122216, 9268539, 19175956, 9355513, -11183021, -6426882, -20983600, -45847164, -26555246, +-26025354, -34526168, -16361141, -7961796, -8920647, 12223477, 751619, 0, 0, 0, +0, 0, 0, }, { 598611, -333934, 2591476, 2121714, -2348273, -1621887, -504122, 3191698, -3264712, -204011, -1760937, --4113505, 2080912, -803159, -3930969, -1672890, 3838090, -5396627, -1599339, 4961761, -1509681, --6172405, 4240207, -550293, -2192044, 1329829, -1729798, 3087008, -1814087, 1402307, -3595425, -3181497, -461172, -3484292, -361314, -1637456, 1931125, 1603633, -786516, 234076, 488016, -6812355, 3144453, -887448, 3452080, -1697049, 2784750, 452045, -1193464, -816044, -4350265, -1185411, -1661616, -3380676, 3061775, 515396, 1702955, 727997, 2112587, -1243930, -1906966, --3758, 391379, 1242856, -1053341, 2158758, 209380, 346282, -200253, -2683818, -278636, -1002875, 1946694, 506806, 1073742, 3257733, -1122597, 6152541, -3447785, 1016297, -5133560, -1427003, 601832, 7850127, -4687420, 2147, -2454574, 3928821, 4049081, -2579128, -463320, --2216740, -1239635, -2588792, -3184182, 2361695, 802622, -2107218, 4418985, 3992172, 6861747, --206158, 2617783, 1356136, -83215, -6174016, 1637456, 2571612, -2404645, 1546725, -1763621, --2088428, -3354906, 1765768, 4394826, 460098, 5122822, -2064806, -399432, 5146445, 2719251, -432718, -29528, 4894652, 7354595, -5419712, 1251446, -1851668, -814433, -8442295, -2981244, -3463354, -2609730, 2416993, 1114007, -1196148, -2046015, 1255741, -704912, 2707977, 1418413, -1306207, 1316408, -4312147, 96637, -2010045, 2585034, 4619774, 2936684, -469225, 4467840, -271657, 1075889, 187905, 717796, -953483, 3576097, -4402879, -4807142, 278636, -6439767, -1265942, -2093260, 3185255, -1795833, -4927938, 475668, 5037460, -850404, 275952, 6771016, -8739722, -3822521, -3852586, -1224066, -6307160, 2643552, 697932, 1500554, -2143189, 3325379, --4356171, -916439, 3179350, -2619930, -798327, 363998, 5683853, 250182, 4148939, -5414880, -5338108, -681289, 882079, 3257196, -2779918, 2694555, -1187559, -1472100, 2562485, 3069291, --401043, 1693828, -6891812, 4111358, 4277788, -7610145, -6412923, -2015950, -5288179, -1699196, -2238215, 1167694, 2149631, -89657, -1641751, 4364761, -1357747, -82678, -1647120, 796716, --2582349, 3576097, 1165010, -3395709, -1459752, -1672890, -1506460, -2182380, 4170950, 11210938, -1996623, -3994320, 5013838, 756451, -3629784, 10229001, -6945499, -9654013, -5862094, -5826123, --2149094, 2956011, 3387119, -3300146, 4940286, -6359236, -3685082, -723702, 1934883, 1647657, --2157684, -2483565, 5513665, 1134408, -609885, -3183645, 4044249, -3106872, -962073, 4832, --610959, -444529, 1404454, 886374, -1151588, 3557844, -1963874, 2158221, -446677, -5844914, --2589329, -2356863, 5871221, -3470871, -4504884, -7605850, -9179419, -1669132, 86973, -3589519, -6323266, 834297, 3202972, -2785823, 5384815, 2388002, -3802120, 9260486, -4700305, -4632659, -236760, 5753646, 8078834, 5969468, 1464047, -3119757, -7357816, 2563559, -724776, 6531572, -1974611, -2041720, -1029718, 3271691, 1751273, -1172526, -10104984, 1241246, -3427921, 2028835, -1084479, 7131257, -9335648, -5965173, -6757058, 3391414, 3540664, 4148939, -4725001, 1308354, --1153199, 197569, -7574712, -7219303, -4615479, -5380521, 8346732, -3700114, -628139, -629213, -3056406, -1768990, -8104067, 3048890, -3037616, -1614371, 4205847, 2404645, 4774393, -246424, -2684892, -6451041, -2157684, 4733591, 9067750, 4585415, -116501, -7304129, 5043902, -2768643, --5555540, 7391102, 2613488, 2116345, -4708895, -3534758, 2958159, -2495913, -2552821, 3519726, --3156264, 734439, 368293, -6353867, -1049046, -4501663, 5978058, 2138357, -733366, 98784, --2652142, 2509335, 584652, -1146756, 980326, -7838852, -3604551, 2470680, 1605781, -2611340, --1188095, -6390375, -15860777, 5310727, 800475, 3974992, 4274566, -3051038, -11190537, 8689793, -3697430, 8559870, -1523640, 4576288, -37044, -2979097, -147103, -7833484, 9768903, 2310693, -1007170, -4883378, -2764348, -3264712, 3011846, -4326106, 7554311, 457951, 2701535, 4276177, -2448131, -328028, 2576444, 2447595, -1537598, 2093260, -8038568, 2320893, 3998615, 4034048, -7669201, 2765959, -4670240, 2682207, -2190433, 5251135, 1308354, 3886946, 6002217, 1152662, --845035, 4660040, -2618856, -4559108, -1315334, 3341485, 8322573, -1588064, 1040993, 415538, -1535451, 1821603, 3934727, 1408212, -1330903, -64425, -1969243, 2326262, 1548873, -4639102, --3347927, 2057826, 3914863, 3062849, 6272263, -7311645, -2424509, -5419175, 8507793, 4360466, -15653008, 8999030, 7214472, 11618423, 2611340, 2515777, -7232725, 265751, -13157095, -1797981, -4462471, 4036196, 1879585, 3470871, 3132105, -2221572, -2234457, 7853885, 6231461, 6211060, --780610, 1360431, -9451612, -7310035, -3322157, 6357626, 1539746, -591095, 2813741, -4686346, -192737, -2102923, 6041945, 5631239, 10846940, -439697, 3919158, 4183835, -2066953, -5141076, -10213969, -5374078, -1639604, 5485210, -19864, 3459059, 7317014, -1628866, 2589329, -6496675, --15836081, -7825968, -5390721, -1231582, 526134, 275415, -4212826, -7459822, -1923072, -5051419, -1691143, 883690, 599685, -8390219, -4436701, 7277822, 2014340, 848793, -10572599, -8181376, -5613523, 2463164, 3462818, -5317707, -242129, -1155883, -7872138, 5893232, -3350611, -568546, --20921860, -5271536, -7562901, -5447629, 1133335, 6731825, -1121523, 8987756, 5172215, -809601, --8842801, -4034585, 13834627, 2009508, -7848516, -6190659, -2411087, 6104759, -4689031, -175557, -4641249, 6670084, 8072928, -8805220, 6024229, 538482, 1891933, 2208150, 3423089, 2520072, -8084202, -12885, 2629594, -7082938, 9843528, -5037460, -2014340, 1401770, -7723425, 9648644, --1324461, -19452980, -6136972, -15648713, 1168231, -402653, -4457103, 20802138, -3461207, -10536092, --3325915, -2692945, 9819906, -1444183, 4766877, 5544803, -3781719, 7112466, 10060961, -5105106, -3882651, -8856223, 4369056, -3157875, -2485712, 10252087, -3807489, -851477, -4758824, 523986, --459562, 9727027, -13538811, 2786897, 2670933, -4153234, 1733019, 10252087, 10799695, 4151623, -3825205, 5311264, -8463770, -1327145, -9028021, -45097, 5690295, 3782793, -1930051, -6942278, --2335925, 4968204, -9337259, 494458, -690416, 4482335, 8841727, 1036161, -4795868, -3432753, -9469866, -5877126, -2954938, 5688684, -3405909, -10970420, -4069482, 2806224, 1890859, -4215511, -1044214, 6122476, 4024921, 5929739, -669478, 4560182, 8050380, -3223910, 4001299, 3815005, --5534066, 12328167, -11526082, 7244536, 2974802, -15563888, 15233712, -9454297, 2092723, -1297080, -12095165, -4677757, -8798241, -1301375, -120796, 2796561, 9110163, -7334194, -751619, 1268626, -52613, -650151, 2075543, -5572183, -1980517, -3473018, -10244571, -7334731, -10450192, 8245801, --24276766, 13211856, -9476308, -6936909, -11691975, 1117228, -1110786, 1894081, 8920110, -7406134, --2407866, 6645925, 6621229, -2228551, 2825015, -3470871, -10838350, -1228361, 3264712, -5908265, -9527311, 1403381, -591632, -5504538, -4821101, 1140314, 14493904, 506269, -1438814, 3768834, --11543798, -2130841, 4987531, -8212515, 12344810, 7472706, 193810, -3564823, -3297998, -4466229, --7372848, -9837623, 9046275, 752156, 15560667, 1519882, -14496, -6453725, 2022930, -2350958, -4158065, 107911, -8484171, -6938520, -8618389, -15611132, -1276142, 14668387, -12517145, -227633, --13091060, 2971044, 5145908, 4127464, 11356967, -126165, -13212930, 11637214, 487479, -5605469, --4176856, -10753524, -2292976, -7048578, 7716446, 10859825, -4169876, 9689983, -9464497, -4548371, -6107981, 2363306, -12665859, 1107028, 15769509, -18212808, 787053, 8955544, 20508468, -8595840, --5598490, -1978906, 15813533, 16123307, -17029008, -489089, -13150653, -5858336, 8071318, 8709657, -10726144, 6547678, -2483565, 8034810, -9878962, -4888210, -1254131, -1197759, -14163728, 1500017, --605590, 18620294, -3124589, 9307731, 1899986, 5618891, 12007118, -7188702, -3597572, -17884244, -12209518, -15740518, -3117073, 3898220, -2436320, -9007620, -2592550, 2832531, -6838662, 2000918, --1346472, -1205812, -20648056, -14249091, 732292, -10290205, -14586246, 2803003, -13513578, 4370129, -8306467, -7611756, 14461692, 3265249, 9133785, 10363756, 2203855, -7305740, -9452686, -10736344, -5082020, -10249403, 25836376, 10216117, 4825933, 12696460, -4575214, 2373506, -13070659, -17767742, -11407970, 21990770, 7113540, -472446, -21630530, 26304528, 4334159, 2921652, 4316442, 628676, -5324149, 1163399, -3306051, -522375, 7262790, -4491999, 9005473, 1268089, -6105833, -9603547, --1949915, 8086887, -1722282, 2395518, -3209414, -3753802, 773631, 23561654, 4524211, 3090766, -3909494, 1644436, 15044197, -5724655, 4856535, -9654550, 17846662, 23408646, 6997039, -1773822, --7644505, 24460912, 12557411, -55835, -8713952, 3204046, -4815195, -1338956, -10030896, -4609574, --6298033, -10602127, 17507898, -5403069, 13276818, 2024003, -8109972, -659278, -18737868, 18613852, -118112, -9664213, -5523328, -12103218, -12632573, -8033200, 24063092, -5737540, -2419677, 6013491, -7747048, -5880884, -5759015, 23381266, 23390928, 28359132, 17415556, 5361730, -7150047, -7921531, -4412005, 7958038, 10293426, -15627239, -368293, -2226404, 7706245, 5603859, -10531260, -13492640, --28991, -5416491, 12430172, 14128295, -26844, 7231115, 2509335, 2552284, 16825534, -10888816, --13764833, 10184978, -18023294, 920734, -5661304, 9228274, 4874251, -504122, 11361799, 9892920, --9877351, 11270531, -288300, -5935108, 2547989, 12233141, -5384815, 4715874, 9309342, 3465502, --21293910, -13036836, 1585917, 80531, -14717242, -10779831, 4125853, 5601711, 5080410, -20564840, --14248554, -14774687, -1909113, 6957310, 11261404, -32268626, -23687818, 2042794, 3408057, 15811385, -4663798, 4248260, 10894721, -4297652, -5771899, -7749195, -9547175, -20014548, -18446884, -16110959, -6554120, -2516314, 9342628, -17700634, -2292976, 306553, -6089727, -8540006, 14532022, -5842230, -3386045, -692027, 1531693, -14495515, -4596689, -12457016, 2163053, 1124745, 3688840, 32700808, --12336757, 8713952, 14539001, -7516193, -6095096, -10453414, -1432909, 15073725, -15200426, 10418517, --428960, -3020436, 2066416, 1214402, 9111773, 597537, -16132971, 12483322, -9803263, -24376624, --18825378, -10052371, 33225330, 27361626, -14348949, -4564477, -19935628, -17416092, -6095633, 19951734, -1240709, 13756780, 7990787, -9526774, 11338177, -7198365, -20675436, -1723893, -12194486, -2444910, --6115497, 42726336, 1295470, -34493956, 28506772, -10211285, -6751689, 29259464, 29496762, 2602213, --10764262, 10919954, 4944044, -16592532, -10773389, 5386963, 3703336, 9425843, 28558848, 5225365, --1051730, 6994891, 1184874, -11769821, -7707856, 6692633, 1139777, 23786066, 5208185, -1256278, -8156143, 12858058, 12441983, 14003204, 348966, -9491878, -3099356, -21935472, -3434363, -24798068, -13487271, -15028091, -6346888, 239981, 19742890, -11564199, 10751914, -8080444, 6295885, -10178536, -12360916, 19649476, 756451, -3988951, -11098732, -15005542, 7837779, 9825811, 24072218, -3234110, -536871, 11013907, 38876432, -9139690, 5144297, -6311455, -22919556, 15592879, -4076461, 11113228, --2362769, 2825015, -14383845, 36779416, -56223808, 40604084, -64483564, 27335856, -34121368, 10275172, --27372900, 9421011, 14668387, -3677566, 9619653, -5782100, 41744396, -26366268, 22759032, 13652090, -11617887, 44087304, -30496416, 12618077, 8557185, -26951456, -293668, -5512591, -7114077, -13955959, --252866, 1335735, 18178450, 6370510, 9770514, 13080323, 11294153, 213675, 15297600, -17169668, --1871532, 20326470, 2879776, -28247464, -5843303, -36905580, -6236293, 6308233, -6154152, -8666170, --915365, 32803886, 9021042, 2458869, 4750771, 8186745, -1719061, -18889266, -4985920, -2106682, -4322348, -4347581, -7960722, 23824720, 13701483, -4892505, -212601, -5073430, -20570746, -17617418, --11911018, -10665478, 25076166, 5864778, 9967008, -14398341, -12908524, 4611185, 11001559, 9108552, --2773475, -2767033, -14944339, -10726144, 15755551, 678605, -37891276, 13886703, 23394686, 6794639, --15110769, -10861435, -5956583, 2253247, -8484171, 4482335, -13548474, -36303212, 31753766, 39429412, --3988414, 28790240, 846645, 4754529, 12083354, -24648818, 8859981, 19017578, 18080202, 8157754, -5462662, -17645874, 13084081, 8314520, -11159399, 6385543, -2314451, 22178138, 5868536, 6096706, -12721693, -4548371, -14762339, 4857071, 27564564, -9256191, -5318780, 25526064, -9060770, -10483478, --8940511, 9243843, 32189170, 45215804, -2546379, -28172838, 43952548, 15771657, -28429462, 33324114, -12873091, -7307350, -7885560, -11423539, -19724638, -337692, 11276437, -16552804, -10660109, -35873716, --4156992, 22264574, -43545064, -23199802, 8121247, 8099772, 10035191, 27940910, 25338160, -38588672, -2005750, 2484102, -26023206, 8778376, 15652471, -13433047, -7425462, -11294153, 11639361, 31664646, -14372034, 16024523, -14433774, 7022809, -20315196, 23511188, 80269720, -25956634, 1286880, 5633387, -36590436, 31432718, -9820980, -14306536, -19458886, 421444, 15903727, -923418, -9596031, -10965588, -15084999, -8225936, -18615462, -17642652, -2751464, 28951300, 21304112, -23608362, 2347737, 127775, --9350681, 11270531, 5099200, -8565775, -1893544, -6769942, -2248952, 37177772, -13023951, -25017648, --16456167, -14277008, 34015604, 774705, -6688338, 30331060, 21937620, 8228621, 16532940, 29873646, --17138530, 4576288, 30234422, 17017734, 23394150, -25267292, -5947993, -905701, 11879343, 10108742, --22665080, 2375654, -30127048, -47166792, -1130650, -12368969, 23374822, 24579024, -4927938, -1764158, -6497749, -17012902, -44194676, 30995168, -20523502, 4905390, -6814503, -15404974, -7186017, -17878338, --33541548, 3739843, 2144263, -12475269, -3684545, -39131984, -22318260, -18218178, -45932528, 53255984, --1043677, 28094454, -6188511, 1484985, -31878322, -17454748, -16301012, 3836480, 25469156, -1012539, --25862682, -19439022, -37080064, -41525892, 36177584, 13379360, -32003412, -9877351, 16510391, 29990682, -4712116, -36742908, -21887690, 7511898, 10973641, 9409200, 22261352, -22742388, -21070572, -3108483, --6945499, 3286187, 7280507, -44174276, -7268159, -30742302, -18853832, -41087804, -14602889, 56812752, -10897943, 1989107, 15105937, 14213121, 5749351, 42211476, 34714072, -10888816, 12840878, 56906708, --13234942, -13247290, -11780558, -42369316, 319438, -23286776, -50450296, -55343876, -26556856, -28752658, -15515569, -21682068, 4852776, 10827613, -33975876, -13740137, 4628901, 2218888, 36537288, -24303610, -8310762, -27909234, -7650948, -30287036, 5165772, 34113316, 658204, 20675436, -42107324, 37250252, -14399952, -8913668, 31984084, 3242164, 15460809, -13137768, -12670154, -1218697, 11033771, 6228240, --28687698, 27088896, -31935230, 3301219, 11309723, -12254079, 21808770, -21736292, -9949829, -3036005, --5463199, -11300596, -264141, 3859565, -13445395, -18973018, -3748970, -3777961, -2239826, 10638634, -8407935, 4064650, -19865834, 5487358, 29613262, 35538172, -23923504, -13721347, 33247878, 41470592, --22544820, -15957951, 20539608, 7147900, -17076254, 16491601, -44070660, -9500468, 22645216, 37618544, -8509404, -23609436, -17351132, 5552856, 49460308, 3710852, 11376295, 999654, 20195474, -3517041, -39698384, -1546188, -29679834, 20793548, -13015362, -55158656, -17581986, 11382200, -21012590, 57985280, -39339216, 28754270, 12507482, 39686036, 24951612, 10670309, 16398722, -42877732, -61819612, -6592238, --1301912, -13687524, 6138045, -1122597, -17550310, -17921824, -17934172, 32810866, 25134148, -19906636, --4696010, -1276142, -7361037, -5954436, -13215614, -14643691, -24889336, -2638184, 38573100, -11212012, --24473798, -9001715, 36061084, -16013249, -19468550, 60620244, 18943490, 11669963, -16333761, -30572650, --24613920, -31587874, 6968048, 29300266, 72264432, -63541892, -29804388, 40105868, 50939384, 11043435, --5286031, 69914552, 30463130, -19718732, 19480362, -6070937, -2025077, -45418744, -26156888, -14737643, --79807472, -31077846, -15052787, 43346420, -25285546, -11390253, 28026810, -496606, -7639673, 8931921, -17315698, 48987324, 18403934, -4422206, 13099113, -2808372, -4247723, -18476412, 9032853, 7215545, --14015552, -7292318, -51833812, -2434173, 21793200, -5351530, -21427592, 9203578, -4563940, 23145042, -5013301, -11686606, 146029, 24795384, -13967771, 3715684, 9408663, -7971996, 118648, -13921600, -28082106, -2002529, 4481262, 104153, 13765370, -6413997, -4850629, -9017821, 5924908, 10072772, --4176319, 12028593, -4956393, 7271380, -12590160, -10613401, 16234976, 19891604, -25713970, 853088, -518617, 2080375, 8761196, -16842714, 25806310, -23003844, 20915416, 2471754, -34697432, -2297808, -28255516, -36320928, 17908940, -193274, 5483063, -8959302, -4443681, 6979859, -9351218, 36604396, --25979720, 3967476, -5798206, -3197066, 10928007, 1034550, -2403571, -26561152, -74454328, -106802416, -34812856, 92843232, 19430432, 259243152, 213183392, 142831824, 243473648, 125044216, -11820287, -34357592, --100785168, -228516960, -189453696, -184973504, -255336880, -190651456, -59875604, -46215460, -12696460, 80392664, -33774548, -18269180, 47793324, 83300352, 36570572, 33973728, 74265888, 39944268, 28499792, 64966212, -107842336, 38015292, 58076012, 98965176, 6721087, -5583458, 84869624, 43930536, -52042656, 32123672, -45501956, -80090936, -35751844, 52691732, -32268626, -61215096, 71354440, 27569396, -77579992, 26468272, -41736880, -110550312, -105817792, -60903172, -235776528, -305454848, -203463344, -276229760, -359028672, -262171776, --269178496, -339558496, -278824448, -208691920, -225337072, -156797984, -43481712, 8761733, 81913080, 168436800, -219100240, 279131520, 305690528, 325236928, 256278016, 71095664, 3454764, 0, 0, 0, -0, 0, 0, }, +333934, 2591476, 2121714, -2348273, -1621887, -504122, 3191698, -3264712, -204011, -1760937, +-4113505, 2080912, -803159, -3930969, -1672890, 3838090, -5396627, -1599339, 4961761, -1509681, +-6172405, 4240207, -550293, -2192044, 1329829, -1729798, 3087008, -1814087, 1402307, -3595425, +3181497, -461172, -3484292, -361314, -1637456, 1931125, 1603633, -786516, 234076, 488016, +6812355, 3144453, -887448, 3452080, -1697049, 2784750, 452045, -1193464, -816044, -4350265, +1185411, -1661616, -3380676, 3061775, 515396, 1702955, 727997, 2112587, -1243930, -1906966, +-3758, 391379, 1242856, -1053341, 2158758, 209380, 346282, -200253, -2683818, -278636, +1002875, 1946694, 506806, 1073742, 3257733, -1122597, 6152541, -3447785, 1016297, -5133560, +1427003, 601832, 7850127, -4687420, 2147, -2454574, 3928821, 4049081, -2579128, -463320, +-2216740, -1239635, -2588792, -3184182, 2361695, 802622, -2107218, 4418985, 3992172, 6861747, +-206158, 2617783, 1356136, -83215, -6174016, 1637456, 2571612, -2404645, 1546725, -1763621, +-2088428, -3354906, 1765768, 4394826, 460098, 5122822, -2064806, -399432, 5146445, 2719251, +432718, -29528, 4894652, 7354595, -5419712, 1251446, -1851668, -814433, -8442295, -2981244, +3463354, -2609730, 2416993, 1114007, -1196148, -2046015, 1255741, -704912, 2707977, 1418413, +1306207, 1316408, -4312147, 96637, -2010045, 2585034, 4619774, 2936684, -469225, 4467840, +271657, 1075889, 187905, 717796, -953483, 3576097, -4402879, -4807142, 278636, -6439767, +1265942, -2093260, 3185255, -1795833, -4927938, 475668, 5037460, -850404, 275952, 6771016, +8739722, -3822521, -3852586, -1224066, -6307160, 2643552, 697932, 1500554, -2143189, 3325379, +-4356171, -916439, 3179350, -2619930, -798327, 363998, 5683853, 250182, 4148939, -5414880, +5338108, -681289, 882079, 3257196, -2779918, 2694555, -1187559, -1472100, 2562485, 3069291, +-401043, 1693828, -6891812, 4111358, 4277788, -7610145, -6412923, -2015950, -5288179, -1699196, +2238215, 1167694, 2149631, -89657, -1641751, 4364761, -1357747, -82678, -1647120, 796716, +-2582349, 3576097, 1165010, -3395709, -1459752, -1672890, -1506460, -2182380, 4170950, 11210938, +1996623, -3994320, 5013838, 756451, -3629784, 10229001, -6945499, -9654013, -5862094, -5826123, +-2149094, 2956011, 3387119, -3300146, 4940286, -6359236, -3685082, -723702, 1934883, 1647657, +-2157684, -2483565, 5513665, 1134408, -609885, -3183645, 4044249, -3106872, -962073, 4832, +-610959, -444529, 1404454, 886374, -1151588, 3557844, -1963874, 2158221, -446677, -5844914, +-2589329, -2356863, 5871221, -3470871, -4504884, -7605850, -9179419, -1669132, 86973, -3589519, +6323266, 834297, 3202972, -2785823, 5384815, 2388002, -3802120, 9260486, -4700305, -4632659, +236760, 5753646, 8078834, 5969468, 1464047, -3119757, -7357816, 2563559, -724776, 6531572, +1974611, -2041720, -1029718, 3271691, 1751273, -1172526, -10104984, 1241246, -3427921, 2028835, +1084479, 7131257, -9335648, -5965173, -6757058, 3391414, 3540664, 4148939, -4725001, 1308354, +-1153199, 197569, -7574712, -7219303, -4615479, -5380521, 8346732, -3700114, -628139, -629213, +3056406, -1768990, -8104067, 3048890, -3037616, -1614371, 4205847, 2404645, 4774393, -246424, +2684892, -6451041, -2157684, 4733591, 9067750, 4585415, -116501, -7304129, 5043902, -2768643, +-5555540, 7391102, 2613488, 2116345, -4708895, -3534758, 2958159, -2495913, -2552821, 3519726, +-3156264, 734439, 368293, -6353867, -1049046, -4501663, 5978058, 2138357, -733366, 98784, +-2652142, 2509335, 584652, -1146756, 980326, -7838852, -3604551, 2470680, 1605781, -2611340, +-1188095, -6390375, -15860777, 5310727, 800475, 3974992, 4274566, -3051038, -11190537, 8689793, +3697430, 8559870, -1523640, 4576288, -37044, -2979097, -147103, -7833484, 9768903, 2310693, +1007170, -4883378, -2764348, -3264712, 3011846, -4326106, 7554311, 457951, 2701535, 4276177, +2448131, -328028, 2576444, 2447595, -1537598, 2093260, -8038568, 2320893, 3998615, 4034048, +7669201, 2765959, -4670240, 2682207, -2190433, 5251135, 1308354, 3886946, 6002217, 1152662, +-845035, 4660040, -2618856, -4559108, -1315334, 3341485, 8322573, -1588064, 1040993, 415538, +1535451, 1821603, 3934727, 1408212, -1330903, -64425, -1969243, 2326262, 1548873, -4639102, +-3347927, 2057826, 3914863, 3062849, 6272263, -7311645, -2424509, -5419175, 8507793, 4360466, +15653008, 8999030, 7214472, 11618423, 2611340, 2515777, -7232725, 265751, -13157095, -1797981, +4462471, 4036196, 1879585, 3470871, 3132105, -2221572, -2234457, 7853885, 6231461, 6211060, +-780610, 1360431, -9451612, -7310035, -3322157, 6357626, 1539746, -591095, 2813741, -4686346, +192737, -2102923, 6041945, 5631239, 10846940, -439697, 3919158, 4183835, -2066953, -5141076, +10213969, -5374078, -1639604, 5485210, -19864, 3459059, 7317014, -1628866, 2589329, -6496675, +-15836081, -7825968, -5390721, -1231582, 526134, 275415, -4212826, -7459822, -1923072, -5051419, +1691143, 883690, 599685, -8390219, -4436701, 7277822, 2014340, 848793, -10572599, -8181376, +5613523, 2463164, 3462818, -5317707, -242129, -1155883, -7872138, 5893232, -3350611, -568546, +-20921860, -5271536, -7562901, -5447629, 1133335, 6731825, -1121523, 8987756, 5172215, -809601, +-8842801, -4034585, 13834627, 2009508, -7848516, -6190659, -2411087, 6104759, -4689031, -175557, +4641249, 6670084, 8072928, -8805220, 6024229, 538482, 1891933, 2208150, 3423089, 2520072, +8084202, -12885, 2629594, -7082938, 9843528, -5037460, -2014340, 1401770, -7723425, 9648644, +-1324461, -19452980, -6136972, -15648713, 1168231, -402653, -4457103, 20802138, -3461207, -10536092, +-3325915, -2692945, 9819906, -1444183, 4766877, 5544803, -3781719, 7112466, 10060961, -5105106, +3882651, -8856223, 4369056, -3157875, -2485712, 10252087, -3807489, -851477, -4758824, 523986, +-459562, 9727027, -13538811, 2786897, 2670933, -4153234, 1733019, 10252087, 10799695, 4151623, +3825205, 5311264, -8463770, -1327145, -9028021, -45097, 5690295, 3782793, -1930051, -6942278, +-2335925, 4968204, -9337259, 494458, -690416, 4482335, 8841727, 1036161, -4795868, -3432753, +9469866, -5877126, -2954938, 5688684, -3405909, -10970420, -4069482, 2806224, 1890859, -4215511, +1044214, 6122476, 4024921, 5929739, -669478, 4560182, 8050380, -3223910, 4001299, 3815005, +-5534066, 12328167, -11526082, 7244536, 2974802, -15563888, 15233712, -9454297, 2092723, -1297080, +12095165, -4677757, -8798241, -1301375, -120796, 2796561, 9110163, -7334194, -751619, 1268626, +52613, -650151, 2075543, -5572183, -1980517, -3473018, -10244571, -7334731, -10450192, 8245801, +-24276766, 13211856, -9476308, -6936909, -11691975, 1117228, -1110786, 1894081, 8920110, -7406134, +-2407866, 6645925, 6621229, -2228551, 2825015, -3470871, -10838350, -1228361, 3264712, -5908265, +9527311, 1403381, -591632, -5504538, -4821101, 1140314, 14493904, 506269, -1438814, 3768834, +-11543798, -2130841, 4987531, -8212515, 12344810, 7472706, 193810, -3564823, -3297998, -4466229, +-7372848, -9837623, 9046275, 752156, 15560667, 1519882, -14496, -6453725, 2022930, -2350958, +4158065, 107911, -8484171, -6938520, -8618389, -15611132, -1276142, 14668387, -12517145, -227633, +-13091060, 2971044, 5145908, 4127464, 11356967, -126165, -13212930, 11637214, 487479, -5605469, +-4176856, -10753524, -2292976, -7048578, 7716446, 10859825, -4169876, 9689983, -9464497, -4548371, +6107981, 2363306, -12665859, 1107028, 15769509, -18212808, 787053, 8955544, 20508468, -8595840, +-5598490, -1978906, 15813533, 16123307, -17029008, -489089, -13150653, -5858336, 8071318, 8709657, +10726144, 6547678, -2483565, 8034810, -9878962, -4888210, -1254131, -1197759, -14163728, 1500017, +-605590, 18620294, -3124589, 9307731, 1899986, 5618891, 12007118, -7188702, -3597572, -17884244, +12209518, -15740518, -3117073, 3898220, -2436320, -9007620, -2592550, 2832531, -6838662, 2000918, +-1346472, -1205812, -20648056, -14249091, 732292, -10290205, -14586246, 2803003, -13513578, 4370129, +8306467, -7611756, 14461692, 3265249, 9133785, 10363756, 2203855, -7305740, -9452686, -10736344, +5082020, -10249403, 25836376, 10216117, 4825933, 12696460, -4575214, 2373506, -13070659, -17767742, +11407970, 21990770, 7113540, -472446, -21630530, 26304528, 4334159, 2921652, 4316442, 628676, +5324149, 1163399, -3306051, -522375, 7262790, -4491999, 9005473, 1268089, -6105833, -9603547, +-1949915, 8086887, -1722282, 2395518, -3209414, -3753802, 773631, 23561654, 4524211, 3090766, +3909494, 1644436, 15044197, -5724655, 4856535, -9654550, 17846662, 23408646, 6997039, -1773822, +-7644505, 24460912, 12557411, -55835, -8713952, 3204046, -4815195, -1338956, -10030896, -4609574, +-6298033, -10602127, 17507898, -5403069, 13276818, 2024003, -8109972, -659278, -18737868, 18613852, +118112, -9664213, -5523328, -12103218, -12632573, -8033200, 24063092, -5737540, -2419677, 6013491, +7747048, -5880884, -5759015, 23381266, 23390928, 28359132, 17415556, 5361730, -7150047, -7921531, +4412005, 7958038, 10293426, -15627239, -368293, -2226404, 7706245, 5603859, -10531260, -13492640, +-28991, -5416491, 12430172, 14128295, -26844, 7231115, 2509335, 2552284, 16825534, -10888816, +-13764833, 10184978, -18023294, 920734, -5661304, 9228274, 4874251, -504122, 11361799, 9892920, +-9877351, 11270531, -288300, -5935108, 2547989, 12233141, -5384815, 4715874, 9309342, 3465502, +-21293910, -13036836, 1585917, 80531, -14717242, -10779831, 4125853, 5601711, 5080410, -20564840, +-14248554, -14774687, -1909113, 6957310, 11261404, -32268626, -23687818, 2042794, 3408057, 15811385, +4663798, 4248260, 10894721, -4297652, -5771899, -7749195, -9547175, -20014548, -18446884, -16110959, +6554120, -2516314, 9342628, -17700634, -2292976, 306553, -6089727, -8540006, 14532022, -5842230, +3386045, -692027, 1531693, -14495515, -4596689, -12457016, 2163053, 1124745, 3688840, 32700808, +-12336757, 8713952, 14539001, -7516193, -6095096, -10453414, -1432909, 15073725, -15200426, 10418517, +-428960, -3020436, 2066416, 1214402, 9111773, 597537, -16132971, 12483322, -9803263, -24376624, +-18825378, -10052371, 33225330, 27361626, -14348949, -4564477, -19935628, -17416092, -6095633, 19951734, +1240709, 13756780, 7990787, -9526774, 11338177, -7198365, -20675436, -1723893, -12194486, -2444910, +-6115497, 42726336, 1295470, -34493956, 28506772, -10211285, -6751689, 29259464, 29496762, 2602213, +-10764262, 10919954, 4944044, -16592532, -10773389, 5386963, 3703336, 9425843, 28558848, 5225365, +-1051730, 6994891, 1184874, -11769821, -7707856, 6692633, 1139777, 23786066, 5208185, -1256278, +8156143, 12858058, 12441983, 14003204, 348966, -9491878, -3099356, -21935472, -3434363, -24798068, +13487271, -15028091, -6346888, 239981, 19742890, -11564199, 10751914, -8080444, 6295885, -10178536, +12360916, 19649476, 756451, -3988951, -11098732, -15005542, 7837779, 9825811, 24072218, -3234110, +536871, 11013907, 38876432, -9139690, 5144297, -6311455, -22919556, 15592879, -4076461, 11113228, +-2362769, 2825015, -14383845, 36779416, -56223808, 40604084, -64483564, 27335856, -34121368, 10275172, +-27372900, 9421011, 14668387, -3677566, 9619653, -5782100, 41744396, -26366268, 22759032, 13652090, +11617887, 44087304, -30496416, 12618077, 8557185, -26951456, -293668, -5512591, -7114077, -13955959, +-252866, 1335735, 18178450, 6370510, 9770514, 13080323, 11294153, 213675, 15297600, -17169668, +-1871532, 20326470, 2879776, -28247464, -5843303, -36905580, -6236293, 6308233, -6154152, -8666170, +-915365, 32803886, 9021042, 2458869, 4750771, 8186745, -1719061, -18889266, -4985920, -2106682, +4322348, -4347581, -7960722, 23824720, 13701483, -4892505, -212601, -5073430, -20570746, -17617418, +-11911018, -10665478, 25076166, 5864778, 9967008, -14398341, -12908524, 4611185, 11001559, 9108552, +-2773475, -2767033, -14944339, -10726144, 15755551, 678605, -37891276, 13886703, 23394686, 6794639, +-15110769, -10861435, -5956583, 2253247, -8484171, 4482335, -13548474, -36303212, 31753766, 39429412, +-3988414, 28790240, 846645, 4754529, 12083354, -24648818, 8859981, 19017578, 18080202, 8157754, +5462662, -17645874, 13084081, 8314520, -11159399, 6385543, -2314451, 22178138, 5868536, 6096706, +12721693, -4548371, -14762339, 4857071, 27564564, -9256191, -5318780, 25526064, -9060770, -10483478, +-8940511, 9243843, 32189170, 45215804, -2546379, -28172838, 43952548, 15771657, -28429462, 33324114, +12873091, -7307350, -7885560, -11423539, -19724638, -337692, 11276437, -16552804, -10660109, -35873716, +-4156992, 22264574, -43545064, -23199802, 8121247, 8099772, 10035191, 27940910, 25338160, -38588672, +2005750, 2484102, -26023206, 8778376, 15652471, -13433047, -7425462, -11294153, 11639361, 31664646, +14372034, 16024523, -14433774, 7022809, -20315196, 23511188, 80269720, -25956634, 1286880, 5633387, +36590436, 31432718, -9820980, -14306536, -19458886, 421444, 15903727, -923418, -9596031, -10965588, +15084999, -8225936, -18615462, -17642652, -2751464, 28951300, 21304112, -23608362, 2347737, 127775, +-9350681, 11270531, 5099200, -8565775, -1893544, -6769942, -2248952, 37177772, -13023951, -25017648, +-16456167, -14277008, 34015604, 774705, -6688338, 30331060, 21937620, 8228621, 16532940, 29873646, +-17138530, 4576288, 30234422, 17017734, 23394150, -25267292, -5947993, -905701, 11879343, 10108742, +-22665080, 2375654, -30127048, -47166792, -1130650, -12368969, 23374822, 24579024, -4927938, -1764158, +6497749, -17012902, -44194676, 30995168, -20523502, 4905390, -6814503, -15404974, -7186017, -17878338, +-33541548, 3739843, 2144263, -12475269, -3684545, -39131984, -22318260, -18218178, -45932528, 53255984, +-1043677, 28094454, -6188511, 1484985, -31878322, -17454748, -16301012, 3836480, 25469156, -1012539, +-25862682, -19439022, -37080064, -41525892, 36177584, 13379360, -32003412, -9877351, 16510391, 29990682, +4712116, -36742908, -21887690, 7511898, 10973641, 9409200, 22261352, -22742388, -21070572, -3108483, +-6945499, 3286187, 7280507, -44174276, -7268159, -30742302, -18853832, -41087804, -14602889, 56812752, +10897943, 1989107, 15105937, 14213121, 5749351, 42211476, 34714072, -10888816, 12840878, 56906708, +-13234942, -13247290, -11780558, -42369316, 319438, -23286776, -50450296, -55343876, -26556856, -28752658, +15515569, -21682068, 4852776, 10827613, -33975876, -13740137, 4628901, 2218888, 36537288, -24303610, +8310762, -27909234, -7650948, -30287036, 5165772, 34113316, 658204, 20675436, -42107324, 37250252, +14399952, -8913668, 31984084, 3242164, 15460809, -13137768, -12670154, -1218697, 11033771, 6228240, +-28687698, 27088896, -31935230, 3301219, 11309723, -12254079, 21808770, -21736292, -9949829, -3036005, +-5463199, -11300596, -264141, 3859565, -13445395, -18973018, -3748970, -3777961, -2239826, 10638634, +8407935, 4064650, -19865834, 5487358, 29613262, 35538172, -23923504, -13721347, 33247878, 41470592, +-22544820, -15957951, 20539608, 7147900, -17076254, 16491601, -44070660, -9500468, 22645216, 37618544, +8509404, -23609436, -17351132, 5552856, 49460308, 3710852, 11376295, 999654, 20195474, -3517041, +39698384, -1546188, -29679834, 20793548, -13015362, -55158656, -17581986, 11382200, -21012590, 57985280, +39339216, 28754270, 12507482, 39686036, 24951612, 10670309, 16398722, -42877732, -61819612, -6592238, +-1301912, -13687524, 6138045, -1122597, -17550310, -17921824, -17934172, 32810866, 25134148, -19906636, +-4696010, -1276142, -7361037, -5954436, -13215614, -14643691, -24889336, -2638184, 38573100, -11212012, +-24473798, -9001715, 36061084, -16013249, -19468550, 60620244, 18943490, 11669963, -16333761, -30572650, +-24613920, -31587874, 6968048, 29300266, 72264432, -63541892, -29804388, 40105868, 50939384, 11043435, +-5286031, 69914552, 30463130, -19718732, 19480362, -6070937, -2025077, -45418744, -26156888, -14737643, +-79807472, -31077846, -15052787, 43346420, -25285546, -11390253, 28026810, -496606, -7639673, 8931921, +17315698, 48987324, 18403934, -4422206, 13099113, -2808372, -4247723, -18476412, 9032853, 7215545, +-14015552, -7292318, -51833812, -2434173, 21793200, -5351530, -21427592, 9203578, -4563940, 23145042, +5013301, -11686606, 146029, 24795384, -13967771, 3715684, 9408663, -7971996, 118648, -13921600, +28082106, -2002529, 4481262, 104153, 13765370, -6413997, -4850629, -9017821, 5924908, 10072772, +-4176319, 12028593, -4956393, 7271380, -12590160, -10613401, 16234976, 19891604, -25713970, 853088, +518617, 2080375, 8761196, -16842714, 25806310, -23003844, 20915416, 2471754, -34697432, -2297808, +28255516, -36320928, 17908940, -193274, 5483063, -8959302, -4443681, 6979859, -9351218, 36604396, +-25979720, 3967476, -5798206, -3197066, 10928007, 1034550, -2403571, -26561152, -74454328, -106802416, +34812856, 92843232, 19430432, 259243152, 213183392, 142831824, 243473648, 125044216, -11820287, -34357592, +-100785168, -228516960, -189453696, -184973504, -255336880, -190651456, -59875604, -46215460, -12696460, 80392664, +33774548, -18269180, 47793324, 83300352, 36570572, 33973728, 74265888, 39944268, 28499792, 64966212, +107842336, 38015292, 58076012, 98965176, 6721087, -5583458, 84869624, 43930536, -52042656, 32123672, +45501956, -80090936, -35751844, 52691732, -32268626, -61215096, 71354440, 27569396, -77579992, 26468272, +41736880, -110550312, -105817792, -60903172, -235776528, -305454848, -203463344, -276229760, -359028672, -262171776, +-269178496, -339558496, -278824448, -208691920, -225337072, -156797984, -43481712, 8761733, 81913080, 168436800, +219100240, 279131520, 305690528, 325236928, 256278016, 71095664, 3454764, 0, 0, 0, +0, 0, 0, }, }, { { -7415261, --2544231, 572304, -1530619, 395137, 130997, 4044786, -5265630, -2714419, -483721, -2277943, --1417339, -3992709, 1948841, -3980898, -2339684, 606127, 3228205, -4040491, 19327, 298500, --3243774, 1285269, 609349, -1534377, 301721, 1772748, 5829881, 1129576, 762357, 2332704, -973884, -288837, 1200443, -1358283, 1248225, -5062693, -1829656, 1426466, -1128503, 5373004, --2825015, -1618666, -3403762, 1119913, 1017907, -626528, 878858, -942208, -1641751, -2905009, --328565, -419296, 2385318, 3314104, 906775, 2357937, 1724966, 119722, 419296, 12348, --5108327, 1069447, -49929, -3014530, 214748, -2730526, 2490544, 2663417, -1436667, -2617783, --6153615, 1680943, 3428995, 3181497, -2975339, -286689, 4031364, 9729712, 142271, 423591, --4658966, -3685619, 2778307, 1738925, 232465, 3989488, -6000606, -2003065, 9670656, 689342, -1867237, -2518462, -3293166, 4589710, 3790846, -1563368, 3731253, 196495, 591632, -3657165, -1310502, -3323768, -2646774, -3260417, 1104880, 181999, -1096827, -319975, 1112397, 2938831, --1398012, -5208185, 70867, -3690451, -4821638, -1189169, 2144799, -662499, 1911797, 1309428, -1750736, -668404, -696858, -806917, -798327, 1726577, -77309, 3448322, -469762, 4253092, -665183, 1069447, 3907347, 1548336, 984084, 5245229, -2088965, 1860258, -1788854, -3395172, -3277060, -970126, -12348, 1467268, -624381, -2702071, -940061, 2472828, -1409286, 300648, --2909840, 1835025, -12709882, -6642704, -2950106, -2794950, 11274, 537, 968515, 146566, --694174, -5253282, -2348273, -5384279, -8358007, -7035157, 3964792, 4831302, 4941360, -1982664, --571231, -598074, -1089311, 1770063, 767725, -1826972, -3787624, 2687576, 2340220, 3367791, -898722, -1198833, -2075006, 919123, 1633161, -440234, 3470334, -1740536, -98784, 3318936, --2583960, -4150549, 321586, 5610838, 1295470, 1197759, 784905, -7516, 715649, -933619, -996432, -4533875, 716723, 4587562, -1079647, 10737, 443455, -1642825, -906775, -700617, --777926, -1298154, 2818036, -2720862, 2762201, 2325188, 5186173, -408022, 2897492, 6621229, --1270237, -5398237, -6068252, -302795, -852014, 343597, -5197984, 1583232, -3626026, 8703751, -7128572, 2822331, 3726958, -2456721, 1767916, 5973226, 3155190, 6444062, -2410551, 2509872, -3936338, -338229, 5003100, -2654827, 3189013, 403190, -2934537, -936840, -420370, -344134, --712965, 210990, -1387811, 335007, -969052, 5876052, -1217086, -486405, 156229, -2874944, --7491497, 4205847, -1642288, 1526861, -2865817, -3038689, -3075197, -2318746, 2177012, 5622112, -4750771, 1757715, -136365, -1407676, 2032593, 3989488, -720481, -1534377, 5357435, -2452963, -2681133, -2740726, -1788317, -1407676, 2150168, 1858647, -3372623, -2674691, 358093, 3679713, -5287642, 2524904, 4202089, -740345, 3980361, 1226750, 4196183, -2389076, 1935420, 8547522, -4546223, 3451006, -380641, -2834142, -5375152, 2699387, 10271414, 1360431, 3810710, 7292318, -278099, -4264903, -1650341, -1302986, 462783, -2675228, -7037304, 2894271, 450972, 165893, -3246995, -4768488, -1970316, 7591355, -1586454, -2792266, -4189204, 228707, -3922916, -613643, --1086090, -1162326, 887985, 6226092, 171799, -1769527, 2181307, -4686346, 6921877, -648003, --1021129, 8334384, -4217121, 607738, -5040144, -2290291, 998580, 521839, 2687039, 2853469, --4348655, 1781875, 2699387, 2020782, 1141924, 2695629, 2403034, 3798899, -2372433, -1247151, -7224135, -2211371, 3314641, 1109175, 2767570, 2197950, 447750, -1585917, 737124, 5179731, --1532230, 413391, -157303, 1846299, 5459441, -1372779, -3465502, -8707509, 2425046, 856309, -1328219, 1675037, -861678, -3620121, -11673184, 6289980, -4360466, -5423470, -495532, -10871099, -1739462, 4354560, -2061584, 9308268, -4036196, -9460202, 1684164, 4690105, -4345970, -6453725, -11621645, 25770, -1518271, 3959423, -3519726, -775242, 488016, -5252208, 2778844, 177167, -972273, -444529, 5017059, -634581, 2467996, 3695283, -6512244, -1964948, -4015258, 6806450, --3753802, -920734, 3732864, -711891, -4161823, 3499862, 7500087, -3330747, 3241090, -3459059, -4647692, -2102387, 2061047, 1472637, -3756486, -7559680, 3921842, 7071127, -1411434, -981400, -2667712, 5281736, 3300682, -4829154, -1547262, -4110821, -1375463, 2895882, -4527433, 2508261, -3086471, -3133716, -1098438, 2065879, -5192079, -1685238, 2685965, -1329829, 1669669, -228170, --4409321, 5577015, -6124087, -6065031, -10414759, 4418985, 11044508, 1713155, -1947231, -907849, --1817308, 9653476, -5710696, -5181341, -1184874, -5708012, -1714229, -6197638, -2642479, -4313758, --8649527, -2341831, -1837172, -186294, -863288, 2398202, 5311801, 2005213, 2690797, -7860864, -1114544, 42413, -2382633, 2969970, 1621350, -2136209, -887985, -5491116, -6177237, -689342, -7182259, -1803886, -3439195, -500364, -2161979, -4637491, 271120, -4833449, 10729365, 9223979, -2503429, -2347737, -2253247, 1324997, 1806571, 2246268, 1964948, -178778, 4158065, -3216394, -1979980, -2722473, 354872, 565325, 2462627, 2208150, 5213017, -1393180, -2757906, -1918240, --11150809, 1348083, 2687576, 44560, 4475356, 3372086, -3083250, -10333154, 1308891, 11414949, -9912785, -10684805, -10584947, 3060164, -8512625, -3852049, 721018, -128312, -3740917, 8771397, -3246459, -11306501, -1401770, 1139240, -560493, 7946227, 2336999, -5014375, 7446937, 3390340, -580894, -3789235, -4971962, 3830037, -3358128, -7504919, -1918240, -583579, -4026532, -4291746, --6892886, 7292318, 2684, 1474248, -4927401, 578210, 4360466, -3349001, -8564702, -7708393, -8094940, 2410551, 7608535, -806380, 1816234, 6463389, 11640972, 4420595, -2049773, -5702106, --3198677, -2582886, 1301912, 1175210, -5397700, -1439888, 6495601, 5528160, 9012452, 5042829, --7255811, -5796595, 7305203, 4796942, -4853850, 632434, 7461432, 1234266, -1250909, -5764920, -6127845, 5804112, -2366527, 9787157, 1843078, -4452808, 1800665, -1687385, -827318, 5362267, --8920110, 5378373, -5819681, 1043677, 4791036, -74625, -2310693, 1755568, -6080063, 245887, --4709969, -13942538, -4166655, 5914170, 3923990, 2168959, -3281892, 2872260, 1392106, 14925011, -2680597, -5004711, 5668820, 1136556, 1314260, 9957345, -2714956, -2726231, 3590056, -6912750, -8550743, 7835631, -26307, 4479114, -1468879, -4170950, -387084, -5254893, 629750, -5128728, -2243047, 73014, 1717987, 772020, -8814884, -1673427, -942745, 708133, -4314295, 2200097, -2250026, -1474784, 12164958, -4908611, -10306311, 6643778, 10700374, 2733210, 2996277, -4175782, -9250286, -2565706, 1829656, 4570382, 1496259, -3395172, 4552129, 2624225, 677531, 907849, -30595200, -8519068, 403727, -3244311, -1708860, -6935299, 96100, -17957258, 9511742, -6538014, --172872, 10179609, 5382131, -6949794, -7031399, -2845416, -5952288, 5581847, -14389214, 2648921, -6455873, 8370892, 2028835, 2469606, 729071, 1344862, -1540283, -4643934, -13035226, -1988033, -2150705, 6207839, -4385699, 6002754, 2813741, -2402497, -357556, 4689031, -4344360, -4527970, --2097018, -3423089, 59056, -11797738, -4961761, -2706366, 311385, 9599789, 2792266, 9188009, -3820910, -208306, -4895189, 919123, 1371168, 1629403, 3983045, 12912282, 2405182, -11504070, -4053912, -4283693, 758062, -4068945, -3798899, -1906429, 6157910, 3609383, -19449222, -7327751, --4518843, 4548371, 1131724, -3876208, -333934, 12375948, -1323387, 6920266, -4279935, -5509370, -4221953, -9885941, 973347, -22564148, 5786395, -7637526, 2557653, -7920457, -15976741, -2886218, --3413962, 11258183, 5324149, 3827890, 8053, 15067819, -11186779, 2484102, 4784057, 11570642, --13320304, -8169565, -2312303, 799938, -512712, -4226248, -867583, 3791919, -6983080, 1191317, -4779225, -1161252, 1003412, -6275484, -6425271, -4535486, 18842558, -133681, -4079682, 6875169, --4028143, -9569187, -7203197, -5316633, -939524, 2985539, 1069984, 356482, 10618233, 9080098, --1318555, 3059091, 2618320, -12101607, -7772280, -788127, -617938, -3372623, -7762080, 9631464, -12248710, -10101763, 6704444, 5771363, -1726577, -9696962, -15015743, -15023796, -11284490, -7060390, --13162464, 714038, -10989748, 5738613, -9239012, -7461969, -5433671, -5794448, -2027761, -13368086, -455267, 14982993, -5355288, 7990787, -3251290, 14962055, 12368432, 5378373, -15461345, -3714073, -20362440, -5064304, 15067282, 2622078, -14675903, -7122667, 17047798, 642098, -11651709, 561030, --9947681, -1044214, 3375308, 1739999, -2075006, -16754667, -15301895, 4574140, 10891500, -9367861, --966368, 4721243, -840203, 2145873, 18159658, 3863323, 2550674, 2119566, 5924908, -7509214, --5849746, -3527779, -19378356, -5859946, -7359427, -4254702, 4937065, 4189204, -1374390, -1052267, --7788923, -10594074, 14873472, -2203855, -13451838, -5048197, 2448668, 11380053, -8276939, -1050120, --8812736, 71941, -10524280, -2147, -2616172, -18020072, 1324461, -3826279, 13482976, 821413, --11831024, -8499203, 6842957, -24721832, -12948253, -8374113, -13857712, -7099044, -5811091, -13943074, -14622216, -4111894, 22184042, -11133629, -17180942, -3107946, -11628087, 19489488, -6919729, -9994926, --5000953, 5362804, 9517111, 8616778, -2349884, -2074469, -4750234, 2323041, 15573551, -223875, -1161789, -4918812, -2384244, -8121783, -3117610, 3918084, 2326799, -6658273, -104690, -9952513, -1585917, -2789045, -3536906, 4438849, 1425392, -4456029, -2448131, 9028558, 2696703, -6877317, --10113574, 16221555, -1413044, -24839944, 12428025, -2355253, -11481521, 5579700, -2372970, 1711008, --3341485, 9405978, 2436857, 1614908, 23203560, 24770150, -9600326, 3595425, -19274740, -2637647, --4896263, 9125732, -4401268, 3179350, 5443871, -2714419, 11394548, 29878476, -22391276, -7296076, --14149233, -9578314, 11425150, -13073344, 27553826, -3386582, 8440148, 1346472, 6698539, -17296908, -3131568, 4265977, -1289027, -2815888, -1549946, 4786204, -10575820, -6659884, -1586454, -3287798, --13105019, -11869679, -3242700, -5696201, 15506443, -4474282, -7640210, -5788542, 5157182, -8499203, --3675418, -14416058, 6231998, -5832029, 5424007, -5472862, 6951942, -4306242, -24451248, -12860743, -3110093, -2524367, -1954210, -8193187, -14849313, -1561221, 5735929, 3455301, -3881577, 3879429, -6687801, 21902186, -10522670, 9832791, -26472568, 568009, 2888903, -4190278, -8335995, 3958349, --92342, -186831, 4597763, 16591459, 11004780, 7542500, -6318971, -7890929, 7300371, -13416404, -700617, 5854041, -9103183, 11152419, 36368172, 24252070, -5849209, -16602196, -9750113, 20675972, --24680492, 515396, -5562520, -7126962, 11403675, -19606526, 3447248, -10434086, 717260, -13884556, --9109089, 700617, 1657321, -289910, -11624866, 19291382, 5067525, -9795747, 4650376, -3453154, -2783139, 29177860, 10497437, -9152038, -6322192, 674847, 10351408, 1734093, -21341692, -6285685, --14410689, -5937256, -6158446, 6810208, -3069828, -2882997, 974958, -1522029, -9847286, -13503377, -9466108, -5574331, 3423089, -1336809, 12346420, -9793599, -5268851, 2108829, 5890548, -12721156, -14639396, -9113384, -18257370, -18931678, -5211406, -5944235, -6571837, -4794794, -26410290, 9092446, --11786464, -4886599, -9572945, 14692546, 6464463, 6663105, 1483911, -3105261, -12019466, -5328981, --34716756, -4629975, 23584202, -28909962, -11126113, -1023813, -8509941, 10020159, -5716602, 31960462, --3028489, -7409893, -5145371, -1828046, 9661529, -6840809, -6060736, 25943214, -19164144, -2803540, -6289443, -4744328, 16636556, 8817031, -1036161, -2581275, 7101729, 8848170, 10282689, 7817914, -17513266, 4992900, 7545184, 3951370, -5654325, 28600724, 3666292, 4815732, 7348152, 3684008, -21028160, -2199560, 5114769, 6550362, 5976447, 2696166, 13763223, -9021042, -6831146, 13034689, --2767570, -14841259, -3849901, -25350508, -8613557, -5642514, 22810572, -22914188, -3213709, -116501, --1175210, -2406792, 13184476, 36151276, -7033546, 3325379, 3736085, 4143570, 17283486, -21090436, --20385526, -20144470, 31420906, -328028, -12040941, 25333864, -9906342, 19982872, 2648384, -21640730, --60681444, 11574937, -13982266, -24483462, 27406724, -16666621, -7410966, -24107652, 6879464, -5335423, --22042310, -8099772, -12745852, 5721970, -11732240, -42950, 5750961, 9632538, 6097780, 16772384, -3623342, -756988, -914291, -15284178, -10347113, -11055246, 9368934, 12406550, 6993281, 4025995, -582505, 4434017, 11183558, 23211078, -10272488, -6845104, 5192079, -11381663, 12494060, 1927367, --9346386, 23664732, 9940702, -20929912, 9185324, -20146618, 3490735, 3218004, 11535745, -6094022, --5366562, 30277908, 13276281, -13747653, 9416179, 15787226, -11180874, -27346056, 16452946, -2657511, -1345935, 1700270, 8324184, 41140956, -1920924, 4653597, 10153303, -761283, 12030203, 4827543, --19279034, 3616363, -8520678, -18818400, -22079890, 47099148, 9820443, -2866891, -5877126, 10735808, -42164232, 19591494, 4824322, -1100585, 13953812, 35525284, 8536784, 12310987, 10755672, 25336012, --16575889, 16428787, 6956237, -48410724, 14033269, -6804302, 14032195, -15057082, 11047193, 7594576, -14690399, -107911, 6005438, 2359011, -14153528, 6844031, 13226889, -11472395, 6427419, -11155104, --7128035, 34696356, 3091840, 30699352, -22374632, 9496173, -1616518, -4506495, -1202054, -2792803, -4249334, 11144366, 7271917, -1008780, 17010754, -28196998, -27012660, 18976240, -15652471, -4085051, --4158602, -18358300, 8474507, -5036386, 4470524, 2522757, 29073708, 14141717, 14960445, 5528697, -3453691, -27513560, -7013682, 12821014, -1035087, -295816, -760209, -9568113, -24014772, 11507291, --41874856, 35594004, -14653892, 6460705, 24101746, -34725884, -281320, -3476239, 8877161, 12192875, -15350750, 24887724, 4861903, -16966732, 9580998, 26508538, -37975564, -23263690, 26371100, 702227, -296353, 579284, 2695092, -1358283, -199716, 12538620, 8559333, -19192598, 1611150, -5922760, -32583770, 18709952, -6166500, 1183800, 4262218, 3218004, 170725, 10884521, 1544578, 8153459, -33188286, 3681324, 3811247, -5838471, 8775155, -32118840, -13179107, -14048838, -1058710, 2350421, --27208618, 9831180, -24104968, 7209640, 25703232, -6653441, -22444962, -13392782, 9847286, -5667210, --46160696, 11495480, -32013076, -8394514, -3424163, -279173, -12269648, 1910724, 17440252, -14942191, --29496762, -47967268, 38487200, 9437117, -1792075, 8078834, 50638740, -54569708, 21360482, 29607358, --36139464, -9531606, -19988240, -9099962, 50324132, -21893058, 35391068, -15852187, -6049462, -7976291, -10857140, 5794985, -45622752, -7169911, -12877386, 20443508, -81604, 9301289, 14425721, -20499878, --5073967, -12643310, 6774774, 19389630, 10281078, -26832272, -5873368, 6861747, 2801393, -513249, --14171781, -4213900, -26265336, -3375844, -4440996, 24602646, -21599928, 52223580, 10318659, -13583908, -21578452, 2113661, 28293098, 17258790, 26803818, 8134668, 24404542, 21982180, 23847806, 27451284, -3051038, 26599806, -33287608, -4268124, 5840082, -20033338, -4683662, 14671608, -26124138, -35569308, -13708462, 24973624, -361314, 6481106, -26921928, -6159520, -22790708, -419833, 23259932, 1824287, -44633300, 19233400, -12421582, 33441690, -70490616, 64120640, -13011603, -23814520, -17310328, 43887588, --32727114, -7393786, -7938174, -2175401, 26569742, -29068876, -417149, 9101036, -6130529, -5335960, -2768107, -17162152, 24082956, -375810, -33656976, -10648298, -6486475, 613107, -37029596, -1926830, -6932077, -9381819, 2629594, 9142912, 26557930, -11613055, -3743601, 3593814, -13799193, -52099028, -6844031, 38511900, -17935246, -32688996, 4717485, 30745524, -12460237, -11274826, -39195336, -8443369, -3629247, 28210418, 16709033, 2111513, -28665148, -19807852, 27896350, -31614718, 13662291, 47527572, -31159988, 36387500, -15107011, 20351702, 17719424, -44947908, -12098386, -25204478, -1803349, 22936736, -2888366, 24815784, 26516592, -45336600, 52168284, -32009318, 5029944, -1331440, -15858630, 41517300, -5531381, -25339770, 44077100, 29745870, 5428839, -9146670, -21507048, 12263205, -829466, -2867428, --483184, -1593970, 1046898, -9417790, 11833172, -1044214, -37555732, 8856223, 4436701, -14128295, -1503775, 15856482, -4606353, 337692, -26840862, 19522774, -8880919, -3757023, -1762547, 10809896, --14036490, -1283122, 4511863, -250719, 4285841, -7856032, 21748104, -11490111, 37507412, -23037668, --22706418, 21853330, -24033564, 714575, 20005958, -17994840, -6533719, 9464497, 12975096, 14975477, --54176716, 17181480, 825171, -13139379, 36586680, -18057116, 3618510, -163746, -28350006, 38013680, --217970, -1873143, -18423800, -3738232, 33414846, -7350837, 797253, 1427540, 11297911, 5634460, --36529232, 19917374, 37652904, -17117592, 17510582, -25291988, 50496468, 5413270, -33929704, -24130736, --80461920, -121709176, 7871065, 105049528, 1190780, 274979360, 248930400, 148951616, 287339232, 188441152, --32073206, 10234907, -37939056, -227597296, -129892160, -100756712, -222752032, -183257664, -55137716, -108183784, --124351648, -11412802, 5605469, -53501332, 9527311, 45276472, -62039192, -52889836, 78230680, 14404783, --21863532, 53906136, 72769632, -2510409, 74513384, 128199944, 43918724, 33065342, 130185824, 87116968, -7488276, 94655176, 140815328, 59967408, 69956968, 160880880, 58329412, 18434536, 152754800, 150445184, -43019468, 181774288, 259935184, 93846112, 103291280, 179526416, 50458348, -65550864, 4243965, -67559832, --229549888, -218926288, -234149264, -371325152, -401654080, -428382176, -506228480, -528294400, -517024416, -501871232, --443181568, -395437632, -323578528, -207575232, -141330192, -7804493, 207479136, 179362672, 35194572, 0, -0, 0, 0, }, +-2544231, 572304, -1530619, 395137, 130997, 4044786, -5265630, -2714419, -483721, -2277943, +-1417339, -3992709, 1948841, -3980898, -2339684, 606127, 3228205, -4040491, 19327, 298500, +-3243774, 1285269, 609349, -1534377, 301721, 1772748, 5829881, 1129576, 762357, 2332704, +973884, -288837, 1200443, -1358283, 1248225, -5062693, -1829656, 1426466, -1128503, 5373004, +-2825015, -1618666, -3403762, 1119913, 1017907, -626528, 878858, -942208, -1641751, -2905009, +-328565, -419296, 2385318, 3314104, 906775, 2357937, 1724966, 119722, 419296, 12348, +-5108327, 1069447, -49929, -3014530, 214748, -2730526, 2490544, 2663417, -1436667, -2617783, +-6153615, 1680943, 3428995, 3181497, -2975339, -286689, 4031364, 9729712, 142271, 423591, +-4658966, -3685619, 2778307, 1738925, 232465, 3989488, -6000606, -2003065, 9670656, 689342, +1867237, -2518462, -3293166, 4589710, 3790846, -1563368, 3731253, 196495, 591632, -3657165, +1310502, -3323768, -2646774, -3260417, 1104880, 181999, -1096827, -319975, 1112397, 2938831, +-1398012, -5208185, 70867, -3690451, -4821638, -1189169, 2144799, -662499, 1911797, 1309428, +1750736, -668404, -696858, -806917, -798327, 1726577, -77309, 3448322, -469762, 4253092, +665183, 1069447, 3907347, 1548336, 984084, 5245229, -2088965, 1860258, -1788854, -3395172, +3277060, -970126, -12348, 1467268, -624381, -2702071, -940061, 2472828, -1409286, 300648, +-2909840, 1835025, -12709882, -6642704, -2950106, -2794950, 11274, 537, 968515, 146566, +-694174, -5253282, -2348273, -5384279, -8358007, -7035157, 3964792, 4831302, 4941360, -1982664, +-571231, -598074, -1089311, 1770063, 767725, -1826972, -3787624, 2687576, 2340220, 3367791, +898722, -1198833, -2075006, 919123, 1633161, -440234, 3470334, -1740536, -98784, 3318936, +-2583960, -4150549, 321586, 5610838, 1295470, 1197759, 784905, -7516, 715649, -933619, +996432, -4533875, 716723, 4587562, -1079647, 10737, 443455, -1642825, -906775, -700617, +-777926, -1298154, 2818036, -2720862, 2762201, 2325188, 5186173, -408022, 2897492, 6621229, +-1270237, -5398237, -6068252, -302795, -852014, 343597, -5197984, 1583232, -3626026, 8703751, +7128572, 2822331, 3726958, -2456721, 1767916, 5973226, 3155190, 6444062, -2410551, 2509872, +3936338, -338229, 5003100, -2654827, 3189013, 403190, -2934537, -936840, -420370, -344134, +-712965, 210990, -1387811, 335007, -969052, 5876052, -1217086, -486405, 156229, -2874944, +-7491497, 4205847, -1642288, 1526861, -2865817, -3038689, -3075197, -2318746, 2177012, 5622112, +4750771, 1757715, -136365, -1407676, 2032593, 3989488, -720481, -1534377, 5357435, -2452963, +2681133, -2740726, -1788317, -1407676, 2150168, 1858647, -3372623, -2674691, 358093, 3679713, +5287642, 2524904, 4202089, -740345, 3980361, 1226750, 4196183, -2389076, 1935420, 8547522, +4546223, 3451006, -380641, -2834142, -5375152, 2699387, 10271414, 1360431, 3810710, 7292318, +278099, -4264903, -1650341, -1302986, 462783, -2675228, -7037304, 2894271, 450972, 165893, +3246995, -4768488, -1970316, 7591355, -1586454, -2792266, -4189204, 228707, -3922916, -613643, +-1086090, -1162326, 887985, 6226092, 171799, -1769527, 2181307, -4686346, 6921877, -648003, +-1021129, 8334384, -4217121, 607738, -5040144, -2290291, 998580, 521839, 2687039, 2853469, +-4348655, 1781875, 2699387, 2020782, 1141924, 2695629, 2403034, 3798899, -2372433, -1247151, +7224135, -2211371, 3314641, 1109175, 2767570, 2197950, 447750, -1585917, 737124, 5179731, +-1532230, 413391, -157303, 1846299, 5459441, -1372779, -3465502, -8707509, 2425046, 856309, +1328219, 1675037, -861678, -3620121, -11673184, 6289980, -4360466, -5423470, -495532, -10871099, +1739462, 4354560, -2061584, 9308268, -4036196, -9460202, 1684164, 4690105, -4345970, -6453725, +11621645, 25770, -1518271, 3959423, -3519726, -775242, 488016, -5252208, 2778844, 177167, +972273, -444529, 5017059, -634581, 2467996, 3695283, -6512244, -1964948, -4015258, 6806450, +-3753802, -920734, 3732864, -711891, -4161823, 3499862, 7500087, -3330747, 3241090, -3459059, +4647692, -2102387, 2061047, 1472637, -3756486, -7559680, 3921842, 7071127, -1411434, -981400, +2667712, 5281736, 3300682, -4829154, -1547262, -4110821, -1375463, 2895882, -4527433, 2508261, +3086471, -3133716, -1098438, 2065879, -5192079, -1685238, 2685965, -1329829, 1669669, -228170, +-4409321, 5577015, -6124087, -6065031, -10414759, 4418985, 11044508, 1713155, -1947231, -907849, +-1817308, 9653476, -5710696, -5181341, -1184874, -5708012, -1714229, -6197638, -2642479, -4313758, +-8649527, -2341831, -1837172, -186294, -863288, 2398202, 5311801, 2005213, 2690797, -7860864, +1114544, 42413, -2382633, 2969970, 1621350, -2136209, -887985, -5491116, -6177237, -689342, +7182259, -1803886, -3439195, -500364, -2161979, -4637491, 271120, -4833449, 10729365, 9223979, +2503429, -2347737, -2253247, 1324997, 1806571, 2246268, 1964948, -178778, 4158065, -3216394, +1979980, -2722473, 354872, 565325, 2462627, 2208150, 5213017, -1393180, -2757906, -1918240, +-11150809, 1348083, 2687576, 44560, 4475356, 3372086, -3083250, -10333154, 1308891, 11414949, +9912785, -10684805, -10584947, 3060164, -8512625, -3852049, 721018, -128312, -3740917, 8771397, +3246459, -11306501, -1401770, 1139240, -560493, 7946227, 2336999, -5014375, 7446937, 3390340, +580894, -3789235, -4971962, 3830037, -3358128, -7504919, -1918240, -583579, -4026532, -4291746, +-6892886, 7292318, 2684, 1474248, -4927401, 578210, 4360466, -3349001, -8564702, -7708393, +8094940, 2410551, 7608535, -806380, 1816234, 6463389, 11640972, 4420595, -2049773, -5702106, +-3198677, -2582886, 1301912, 1175210, -5397700, -1439888, 6495601, 5528160, 9012452, 5042829, +-7255811, -5796595, 7305203, 4796942, -4853850, 632434, 7461432, 1234266, -1250909, -5764920, +6127845, 5804112, -2366527, 9787157, 1843078, -4452808, 1800665, -1687385, -827318, 5362267, +-8920110, 5378373, -5819681, 1043677, 4791036, -74625, -2310693, 1755568, -6080063, 245887, +-4709969, -13942538, -4166655, 5914170, 3923990, 2168959, -3281892, 2872260, 1392106, 14925011, +2680597, -5004711, 5668820, 1136556, 1314260, 9957345, -2714956, -2726231, 3590056, -6912750, +8550743, 7835631, -26307, 4479114, -1468879, -4170950, -387084, -5254893, 629750, -5128728, +2243047, 73014, 1717987, 772020, -8814884, -1673427, -942745, 708133, -4314295, 2200097, +2250026, -1474784, 12164958, -4908611, -10306311, 6643778, 10700374, 2733210, 2996277, -4175782, +9250286, -2565706, 1829656, 4570382, 1496259, -3395172, 4552129, 2624225, 677531, 907849, +30595200, -8519068, 403727, -3244311, -1708860, -6935299, 96100, -17957258, 9511742, -6538014, +-172872, 10179609, 5382131, -6949794, -7031399, -2845416, -5952288, 5581847, -14389214, 2648921, +6455873, 8370892, 2028835, 2469606, 729071, 1344862, -1540283, -4643934, -13035226, -1988033, +2150705, 6207839, -4385699, 6002754, 2813741, -2402497, -357556, 4689031, -4344360, -4527970, +-2097018, -3423089, 59056, -11797738, -4961761, -2706366, 311385, 9599789, 2792266, 9188009, +3820910, -208306, -4895189, 919123, 1371168, 1629403, 3983045, 12912282, 2405182, -11504070, +4053912, -4283693, 758062, -4068945, -3798899, -1906429, 6157910, 3609383, -19449222, -7327751, +-4518843, 4548371, 1131724, -3876208, -333934, 12375948, -1323387, 6920266, -4279935, -5509370, +4221953, -9885941, 973347, -22564148, 5786395, -7637526, 2557653, -7920457, -15976741, -2886218, +-3413962, 11258183, 5324149, 3827890, 8053, 15067819, -11186779, 2484102, 4784057, 11570642, +-13320304, -8169565, -2312303, 799938, -512712, -4226248, -867583, 3791919, -6983080, 1191317, +4779225, -1161252, 1003412, -6275484, -6425271, -4535486, 18842558, -133681, -4079682, 6875169, +-4028143, -9569187, -7203197, -5316633, -939524, 2985539, 1069984, 356482, 10618233, 9080098, +-1318555, 3059091, 2618320, -12101607, -7772280, -788127, -617938, -3372623, -7762080, 9631464, +12248710, -10101763, 6704444, 5771363, -1726577, -9696962, -15015743, -15023796, -11284490, -7060390, +-13162464, 714038, -10989748, 5738613, -9239012, -7461969, -5433671, -5794448, -2027761, -13368086, +455267, 14982993, -5355288, 7990787, -3251290, 14962055, 12368432, 5378373, -15461345, -3714073, +20362440, -5064304, 15067282, 2622078, -14675903, -7122667, 17047798, 642098, -11651709, 561030, +-9947681, -1044214, 3375308, 1739999, -2075006, -16754667, -15301895, 4574140, 10891500, -9367861, +-966368, 4721243, -840203, 2145873, 18159658, 3863323, 2550674, 2119566, 5924908, -7509214, +-5849746, -3527779, -19378356, -5859946, -7359427, -4254702, 4937065, 4189204, -1374390, -1052267, +-7788923, -10594074, 14873472, -2203855, -13451838, -5048197, 2448668, 11380053, -8276939, -1050120, +-8812736, 71941, -10524280, -2147, -2616172, -18020072, 1324461, -3826279, 13482976, 821413, +-11831024, -8499203, 6842957, -24721832, -12948253, -8374113, -13857712, -7099044, -5811091, -13943074, +14622216, -4111894, 22184042, -11133629, -17180942, -3107946, -11628087, 19489488, -6919729, -9994926, +-5000953, 5362804, 9517111, 8616778, -2349884, -2074469, -4750234, 2323041, 15573551, -223875, +1161789, -4918812, -2384244, -8121783, -3117610, 3918084, 2326799, -6658273, -104690, -9952513, +1585917, -2789045, -3536906, 4438849, 1425392, -4456029, -2448131, 9028558, 2696703, -6877317, +-10113574, 16221555, -1413044, -24839944, 12428025, -2355253, -11481521, 5579700, -2372970, 1711008, +-3341485, 9405978, 2436857, 1614908, 23203560, 24770150, -9600326, 3595425, -19274740, -2637647, +-4896263, 9125732, -4401268, 3179350, 5443871, -2714419, 11394548, 29878476, -22391276, -7296076, +-14149233, -9578314, 11425150, -13073344, 27553826, -3386582, 8440148, 1346472, 6698539, -17296908, +3131568, 4265977, -1289027, -2815888, -1549946, 4786204, -10575820, -6659884, -1586454, -3287798, +-13105019, -11869679, -3242700, -5696201, 15506443, -4474282, -7640210, -5788542, 5157182, -8499203, +-3675418, -14416058, 6231998, -5832029, 5424007, -5472862, 6951942, -4306242, -24451248, -12860743, +3110093, -2524367, -1954210, -8193187, -14849313, -1561221, 5735929, 3455301, -3881577, 3879429, +6687801, 21902186, -10522670, 9832791, -26472568, 568009, 2888903, -4190278, -8335995, 3958349, +-92342, -186831, 4597763, 16591459, 11004780, 7542500, -6318971, -7890929, 7300371, -13416404, +700617, 5854041, -9103183, 11152419, 36368172, 24252070, -5849209, -16602196, -9750113, 20675972, +-24680492, 515396, -5562520, -7126962, 11403675, -19606526, 3447248, -10434086, 717260, -13884556, +-9109089, 700617, 1657321, -289910, -11624866, 19291382, 5067525, -9795747, 4650376, -3453154, +2783139, 29177860, 10497437, -9152038, -6322192, 674847, 10351408, 1734093, -21341692, -6285685, +-14410689, -5937256, -6158446, 6810208, -3069828, -2882997, 974958, -1522029, -9847286, -13503377, +9466108, -5574331, 3423089, -1336809, 12346420, -9793599, -5268851, 2108829, 5890548, -12721156, +14639396, -9113384, -18257370, -18931678, -5211406, -5944235, -6571837, -4794794, -26410290, 9092446, +-11786464, -4886599, -9572945, 14692546, 6464463, 6663105, 1483911, -3105261, -12019466, -5328981, +-34716756, -4629975, 23584202, -28909962, -11126113, -1023813, -8509941, 10020159, -5716602, 31960462, +-3028489, -7409893, -5145371, -1828046, 9661529, -6840809, -6060736, 25943214, -19164144, -2803540, +6289443, -4744328, 16636556, 8817031, -1036161, -2581275, 7101729, 8848170, 10282689, 7817914, +17513266, 4992900, 7545184, 3951370, -5654325, 28600724, 3666292, 4815732, 7348152, 3684008, +21028160, -2199560, 5114769, 6550362, 5976447, 2696166, 13763223, -9021042, -6831146, 13034689, +-2767570, -14841259, -3849901, -25350508, -8613557, -5642514, 22810572, -22914188, -3213709, -116501, +-1175210, -2406792, 13184476, 36151276, -7033546, 3325379, 3736085, 4143570, 17283486, -21090436, +-20385526, -20144470, 31420906, -328028, -12040941, 25333864, -9906342, 19982872, 2648384, -21640730, +-60681444, 11574937, -13982266, -24483462, 27406724, -16666621, -7410966, -24107652, 6879464, -5335423, +-22042310, -8099772, -12745852, 5721970, -11732240, -42950, 5750961, 9632538, 6097780, 16772384, +3623342, -756988, -914291, -15284178, -10347113, -11055246, 9368934, 12406550, 6993281, 4025995, +582505, 4434017, 11183558, 23211078, -10272488, -6845104, 5192079, -11381663, 12494060, 1927367, +-9346386, 23664732, 9940702, -20929912, 9185324, -20146618, 3490735, 3218004, 11535745, -6094022, +-5366562, 30277908, 13276281, -13747653, 9416179, 15787226, -11180874, -27346056, 16452946, -2657511, +1345935, 1700270, 8324184, 41140956, -1920924, 4653597, 10153303, -761283, 12030203, 4827543, +-19279034, 3616363, -8520678, -18818400, -22079890, 47099148, 9820443, -2866891, -5877126, 10735808, +42164232, 19591494, 4824322, -1100585, 13953812, 35525284, 8536784, 12310987, 10755672, 25336012, +-16575889, 16428787, 6956237, -48410724, 14033269, -6804302, 14032195, -15057082, 11047193, 7594576, +14690399, -107911, 6005438, 2359011, -14153528, 6844031, 13226889, -11472395, 6427419, -11155104, +-7128035, 34696356, 3091840, 30699352, -22374632, 9496173, -1616518, -4506495, -1202054, -2792803, +4249334, 11144366, 7271917, -1008780, 17010754, -28196998, -27012660, 18976240, -15652471, -4085051, +-4158602, -18358300, 8474507, -5036386, 4470524, 2522757, 29073708, 14141717, 14960445, 5528697, +3453691, -27513560, -7013682, 12821014, -1035087, -295816, -760209, -9568113, -24014772, 11507291, +-41874856, 35594004, -14653892, 6460705, 24101746, -34725884, -281320, -3476239, 8877161, 12192875, +15350750, 24887724, 4861903, -16966732, 9580998, 26508538, -37975564, -23263690, 26371100, 702227, +296353, 579284, 2695092, -1358283, -199716, 12538620, 8559333, -19192598, 1611150, -5922760, +32583770, 18709952, -6166500, 1183800, 4262218, 3218004, 170725, 10884521, 1544578, 8153459, +33188286, 3681324, 3811247, -5838471, 8775155, -32118840, -13179107, -14048838, -1058710, 2350421, +-27208618, 9831180, -24104968, 7209640, 25703232, -6653441, -22444962, -13392782, 9847286, -5667210, +-46160696, 11495480, -32013076, -8394514, -3424163, -279173, -12269648, 1910724, 17440252, -14942191, +-29496762, -47967268, 38487200, 9437117, -1792075, 8078834, 50638740, -54569708, 21360482, 29607358, +-36139464, -9531606, -19988240, -9099962, 50324132, -21893058, 35391068, -15852187, -6049462, -7976291, +10857140, 5794985, -45622752, -7169911, -12877386, 20443508, -81604, 9301289, 14425721, -20499878, +-5073967, -12643310, 6774774, 19389630, 10281078, -26832272, -5873368, 6861747, 2801393, -513249, +-14171781, -4213900, -26265336, -3375844, -4440996, 24602646, -21599928, 52223580, 10318659, -13583908, +21578452, 2113661, 28293098, 17258790, 26803818, 8134668, 24404542, 21982180, 23847806, 27451284, +3051038, 26599806, -33287608, -4268124, 5840082, -20033338, -4683662, 14671608, -26124138, -35569308, +13708462, 24973624, -361314, 6481106, -26921928, -6159520, -22790708, -419833, 23259932, 1824287, +44633300, 19233400, -12421582, 33441690, -70490616, 64120640, -13011603, -23814520, -17310328, 43887588, +-32727114, -7393786, -7938174, -2175401, 26569742, -29068876, -417149, 9101036, -6130529, -5335960, +2768107, -17162152, 24082956, -375810, -33656976, -10648298, -6486475, 613107, -37029596, -1926830, +6932077, -9381819, 2629594, 9142912, 26557930, -11613055, -3743601, 3593814, -13799193, -52099028, +6844031, 38511900, -17935246, -32688996, 4717485, 30745524, -12460237, -11274826, -39195336, -8443369, +3629247, 28210418, 16709033, 2111513, -28665148, -19807852, 27896350, -31614718, 13662291, 47527572, +31159988, 36387500, -15107011, 20351702, 17719424, -44947908, -12098386, -25204478, -1803349, 22936736, +2888366, 24815784, 26516592, -45336600, 52168284, -32009318, 5029944, -1331440, -15858630, 41517300, +5531381, -25339770, 44077100, 29745870, 5428839, -9146670, -21507048, 12263205, -829466, -2867428, +-483184, -1593970, 1046898, -9417790, 11833172, -1044214, -37555732, 8856223, 4436701, -14128295, +1503775, 15856482, -4606353, 337692, -26840862, 19522774, -8880919, -3757023, -1762547, 10809896, +-14036490, -1283122, 4511863, -250719, 4285841, -7856032, 21748104, -11490111, 37507412, -23037668, +-22706418, 21853330, -24033564, 714575, 20005958, -17994840, -6533719, 9464497, 12975096, 14975477, +-54176716, 17181480, 825171, -13139379, 36586680, -18057116, 3618510, -163746, -28350006, 38013680, +-217970, -1873143, -18423800, -3738232, 33414846, -7350837, 797253, 1427540, 11297911, 5634460, +-36529232, 19917374, 37652904, -17117592, 17510582, -25291988, 50496468, 5413270, -33929704, -24130736, +-80461920, -121709176, 7871065, 105049528, 1190780, 274979360, 248930400, 148951616, 287339232, 188441152, +-32073206, 10234907, -37939056, -227597296, -129892160, -100756712, -222752032, -183257664, -55137716, -108183784, +-124351648, -11412802, 5605469, -53501332, 9527311, 45276472, -62039192, -52889836, 78230680, 14404783, +-21863532, 53906136, 72769632, -2510409, 74513384, 128199944, 43918724, 33065342, 130185824, 87116968, +7488276, 94655176, 140815328, 59967408, 69956968, 160880880, 58329412, 18434536, 152754800, 150445184, +43019468, 181774288, 259935184, 93846112, 103291280, 179526416, 50458348, -65550864, 4243965, -67559832, +-229549888, -218926288, -234149264, -371325152, -401654080, -428382176, -506228480, -528294400, -517024416, -501871232, +-443181568, -395437632, -323578528, -207575232, -141330192, -7804493, 207479136, 179362672, 35194572, 0, +0, 0, 0, }, { -7441568, --3151432, 441845, -2930778, -376883, 3689377, -4294431, 1852205, -1865626, -1881196, -3999152, --1311039, 6078453, -4331475, 3453691, 1873143, -3306588, -148176, -4864588, 1398012, -404264, -2983929, -8735963, -3820910, -1162326, 1890323, -725850, -3172370, -10201, -863825, -3992709, -3882114, -7516, 1139240, 4190278, 224412, -1038845, -682363, -801548, 386547, -1806034, --2829847, -2325725, -2204392, -1247151, -1381906, 5653788, 3712462, 1368484, 1187559, 1036698, --1246077, -381178, -1191317, 5369783, -718333, 1422708, -3681861, 1379221, -339302, 2182917, -1082869, 758062, -1595044, 268972, -986232, 4189204, 20401, 476741, 1946694, 1056025, --2605972, 1250372, 544387, -1300301, -175557, 61203, 3103651, 9375377, 2301566, 1213865, --2005750, -963146, -4553202, -378494, -1047435, 3354906, 3287798, -3340948, -2121177, -2093797, --1660542, -2437394, 393526, 2622078, -2090575, -2595771, -7725036, -5989332, -4116726, -399432, -559956, 5565741, -3045132, 2652679, 1900523, 1258962, 475668, -4524211, 1230508, -9406515, -1243393, 61203, 553514, -857920, -5549635, -2815351, -4771172, 62814, 424665, -3197066, --7479149, 4965519, -264677, -4694400, 76773, 2697240, 737124, -1800128, 1165547, -2805151, --1007707, -2670933, 1913408, -2833068, 3645354, 2588255, -512175, -5367636, 316754, 373125, --406948, -2188823, 1309965, 550293, -1137630, 2371359, 2971044, 1684701, 166967, -354872, -881005, -3081639, -10150081, -11382737, -815507, -4498442, 3469797, -5577552, 1392106, 2581275, --3815005, 3110093, 11382737, 637803, -1061394, 6242198, 832687, 6265284, 82141, 2854543, --4499515, -5953362, -337692, 2243047, -4149475, -1345399, -436476, -1184337, 1114544, -1235877, --2200634, 2040646, -1046361, -893890, 4459250, 6352257, -2007897, -3467649, 1254667, 5069135, -1923072, 6503118, 259309, -970663, -181999, 5786932, 362925, -4242891, -2306398, 4517232, -3319473, 3490735, 965831, -2363843, -4722854, 835908, 2224793, 2648384, -1009317, -2596845, -5119064, 3289945, -824097, -3014530, 204011, -2169495, 5366562, 1421634, 1039382, 1452773, -681826, 808528, 3388729, 214212, 3454764, -1107028, 5493800, -32749, -4663798, 6007049, -4163971, 6323803, 6525129, -1543504, 3255048, -1377074, -3742527, -318901, 9677635, 4276714, -2138357, 3481608, -4076461, 6947647, 2937758, 4664335, -1398012, -7653632, 3198140, -11957726, -2400350, -3032784, 2377265, 1917703, -259309, -4096325, 960462, 2722473, -1640678, 2555506, -6038724, -404264, -5078262, -6835441, 1030255, 3102577, -6365679, 3549254, -5987722, -3841312, -4264366, -2471217, -5074504, -2411087, -3598646, 5586142, 7559680, 4353486, -2803540, 73014, -4002373, 2472291, -416075, -3071975, -1554778, -2689723, 2820183, 9466645, -160524, -5065377, --4125316, 2231236, 672162, -1869921, -5677410, -58519, -4880157, -1834488, 651761, -779537, -3698504, 743029, 4691178, 5570573, -4841502, -1762010, 13325673, -3549254, 1248225, 1948841, --8884140, -7483981, 128312, 8770860, 6597070, 10591389, 3406446, -2964601, -4632659, 792421, --2702608, 2091112, 911070, 3573950, 6459094, 2089502, 4727686, -142808, 2749853, -2923799, --6242735, -3220689, -4816269, 42950, -1450625, 1401770, -7602629, -3748970, -1158567, 2721936, --3853660, 7680476, -8879845, 1823751, -5669894, -4489852, 2325188, 2165737, 7231115, -881542, -1653026, -2183991, 4972499, 5451924, 1273458, -1252520, -5881958, -843961, 1637993, -4365835, -3989488, -4800163, 1686848, 7751342, 6183679, 28454, -2930242, 1160178, 7374996, -1035624, -1429687, 1166621, 5834176, 31139, -2342368, -3973919, 2034741, -5940477, 1246614, 12558484, -1803886, 6146098, -1505923, -5070746, -8145406, 4016331, -5749351, -6321118, 1465121, -3157875, --19420232, 1718524, 3238405, 17782776, 6028524, 1152662, -7944079, 7311108, 3459059, -3431142, -4140885, -849330, 6747931, -4105989, -1799591, -1488743, -1509681, -2864206, -945967, 4483946, -4286914, 6867653, 2741263, 3296924, 163746, -4708895, -4702453, 6511708, -3401077, 1347009, --357019, -4818954, 6988449, -1245004, -2674691, 1063541, 5158256, -3370476, 7705708, -9542880, --7563438, -9667971, 2577517, -5473399, -7941395, -1952600, 7928510, -3300682, 2566780, 4511327, --3025805, -4343823, 625992, 709743, 2849711, 498216, -2095407, -214748, 10191421, 4292283, --3691525, -12279848, -9561134, 3859028, 12186970, 10210211, -7163469, 669478, -4236985, 2711735, --3429532, 5726265, -9710384, -1726577, -12060805, -3621194, 1836635, 4146254, -11013370, -2840047, -7579544, -1014149, -11048266, 5615133, -3547106, -6445672, 3440269, 5662915, 1276142, 1066763, -1949378, 7416872, -3659849, -3320010, 1903207, -3940633, -2007360, -97711, -534723, 40802, -5949604, 2891050, -846645, -770410, 3391414, 1236414, 4183298, -647466, 4726075, 4926328, -1861332, -5986648, 584652, -1112933, -4305705, 5143224, -3389266, 1943473, -4069482, -1750199, --13873281, 850404, 10616622, 562104, 11275363, -2586107, -3068217, -12481712, 13627931, 6169184, -7507066, 808528, 6001143, -614717, -708133, 4924717, -3951370, 1372779, -856846, -14155675, -2132988, -3904125, 2428804, -2878702, 1814087, 11451457, 1825898, -15932718, -117038, 11295764, --2160906, 6532109, -7052873, -5523328, -13017509, 7290170, 4391604, 8529268, 4576825, -4758287, -7923678, -2263448, 7604240, -5089536, -3943854, 186831, -1172526, 5865315, 1741609, 4895189, -6305012, -3858491, -2552284, -2415382, 4311074, -1132261, -2039573, 464393, -4823785, 2400887, -2331094, -3102040, 4372814, 6546067, -2277407, -3428458, -354872, -5493800, -2041720, 7586523, -1554241, -5185100, 10077067, -10839424, 2159832, 5361193, -1921461, -3755412, -277562, 4225711, --7543573, 3757560, -2758980, -7182796, -4665945, -4445828, 671089, -2242510, -3879429, 1629940, -12439299, 6295349, -1075889, -4378719, -10963978, 912681, 6969658, -4097936, -12141336, -73014, --1370632, 65498, 2291365, 4653597, 5291937, -2390149, 1445257, 7538742, 635118, 8858907, -9852118, 21573084, 14925011, 8981313, -2139968, -11540040, -3832185, 10453950, 4722317, -11129334, -8454106, -1970853, -5307506, -6808060, 1210644, 18711026, -12486007, 13538274, 5498095, -2909840, -4668093, -3640522, 9918690, -3688303, 5353140, 1065689, -6483790, -4650376, -6303938, 326954, -5798206, -1510218, -3432216, 3679713, 730681, -993211, -12391518, 3979287, -6813966, -5205501, -3783866, 8537321, -5871757, -8670465, 616328, 7774965, 927176, -4799089, -1577864, -2718714, -3750043, 2835752, -2600603, -4419522, -6878927, 4857071, 11842299, 7524246, 3940096, -6184216, -3747359, 7872675, -7953206, -10061498, 2053531, -8120710, -4159676, -16533477, 54224, -11076184, -23852638, 382252, -9118216, 10302553, -11263552, 13086228, 1240172, -8187819, -13623636, -3470334, -6946036, -11089606, 9915469, -1668595, 6460705, 7366943, -6227166, -2770791, -3668976, -5204964, --1791538, -4860829, 996432, -5913633, 6276558, 3767223, 5304285, 10282152, 5533529, -1590212, -12547210, 6249178, 2495913, -6645388, -6998113, 3686693, -5302674, 1270774, 4124242, -8222178, -7281044, 18820546, 1664837, 13411035, 6561100, 6531572, 9779104, 641561, 5297306, 5448166, --11921219, -8118562, 8637179, 719944, 8167954, 1598802, 8564702, -1122060, 3242700, 2327872, --17172890, -846645, 4731444, 12008729, 2857764, 10630581, 1292785, -1941862, 3604551, 5131412, --9539659, -15911780, -8507793, 2997350, 4224101, 1354525, 11479911, 4630512, -11056856, -1415729, --9792525, -5228586, 4753455, -5589900, 2754148, 3083250, -5675263, -15651398, 5362267, -15507516, --16889958, 3369402, -8051990, 7266011, 11429982, -3197603, 13262859, -3486977, 13117904, 16779364, -550830, 616328, -16809966, -3677566, 2434173, 2571075, -1462973, -11828340, 1373853, -10078678, -1822677, -3010772, 3237332, -4119948, -5798206, 1051730, -514859, -3941169, 4712653, -3758, --1987496, 11996381, 5284421, 8899172, -5192616, 1295470, -4249334, 3121904, -373125, 4447439, --877247, -4122632, -3973919, -11431055, -5665599, 17251810, 8016020, 11274289, -12716324, 2375117, -10969346, -9070434, 1035087, 6043019, -2558190, 6039798, 1986959, -12457553, -2001455, -18910204, --1163936, 6649146, 4809827, 11294690, -10687489, -10626823, -10106595, -16142098, 11140608, 6250788, -1469416, -11093364, 9961640, -740882, -12705050, -11469173, -3288334, -3383361, -7983271, -4043712, --4555350, -4983773, -2681133, -12964359, 6544994, 6371584, -211527, -1939715, -1813550, -5339181, --14094472, -16672526, 883153, 5982353, -3784940, -10654740, -5085778, 6473053, 5837398, -617402, --2668785, -5200132, -3863323, 8327942, -4398584, 5499706, -4140349, -944356, -15387257, -4623533, --854699, 10664404, 3669513, -4087735, -8457864, -7530152, -11984569, 18592914, -8762807, 17503066, -2902861, -9813463, 13066901, 10632192, 21922586, -22799298, 9304510, 1471026, 3545496, -6367289, --5175973, 6800007, 5805722, -4390531, -8567386, 7639673, -4087735, 7672959, 12035035, 3554086, --4313221, 5134634, 16377247, -27824408, -31216896, -18587544, -3885335, -12794708, 7521562, -10439455, -423591, 6029061, -1547799, 20644298, 13757317, 5638755, -6663642, -4003447, 13302051, -1896228, -1380295, -5330592, -13392245, 452582, 4249870, 3764002, -7771207, 6460705, -9127, -476741, -11033234, 16747688, 258235, -10217727, -5466957, -19894826, -8774618, -4983773, -7038378, 1101122, -2515777, -7169911, -3964792, -10129143, 9984188, 13328894, 9959492, 12407087, 8616241, 16178605, -845035, 5492190, 2674691, -3061775, 5041218, 9465571, -10916196, -33726768, -9059160, 10781979, --18645526, 8411693, 9593883, 3417720, -6657200, 176631, -5593121, -14254996, -5130876, 7746511, --12271258, -10336913, 1658394, -8942659, 20166482, 20157356, -9888088, 26321170, -21997748, -1437203, -4895189, -23023710, -5499706, -10313827, 4311611, -7748658, 20096152, 1418413, 759672, 22793928, --352724, -22199612, -15948824, -11449309, 9167071, -2322504, -19487878, 4145180, 6708739, 9648644, --11183021, 5055714, 11376831, 7872138, 8262980, -3665218, 13409425, 12202002, 5551782, -31032212, -22841172, -11919071, 9446781, -3416110, -2040110, 4451197, -12148315, -8841727, 15103252, -7728257, --733903, 11337103, -13075491, 11379516, -3800509, 10433549, -14477798, 19407346, -8099235, 30775052, --3020436, 486405, 9539122, -8739185, -4022237, -5587753, 3955128, -3396246, -14858439, -22237194, --4181151, 9901510, -4567161, -9495636, -19121194, 7316477, 3980898, -30916248, 1675574, -2488397, -6700149, 11124502, -6556805, 9706626, 32529546, 14999636, -8860518, 21027086, 7991324, -14802605, -6167573, 13271986, -1399623, -5674726, -18700824, -6160057, 12796318, 6959995, 6494528, 2628520, --2739116, -8744553, -17617956, 8844411, -5496485, 3912178, -13347148, -8632884, 424128, -3187403, -18864570, 4412005, 3666828, 12780212, 7438347, -22048752, -1652489, 6528887, -3121904, -734976, -18685256, 4669167, 21574158, -13334800, -6774237, -4712653, -6880001, 6776385, -7187628, 14199699, -16460999, -8337606, -14265734, 23885386, -12134356, -6954626, -2045478, 5816997, 4933307, -16086800, --3126736, 7063611, -5574331, 9336185, -4190814, 13939853, -7118372, 1044214, 26473642, -3467112, -19265076, 27076548, 5754720, 10965052, -5509370, -41586556, -22146998, -11431055, 1833951, 9121437, --41660644, -9674951, 42950208, -16385837, -18851686, 38363184, -24832964, 21674552, 28387586, 11498701, -3562139, -21726092, 7941395, -38219840, -19314468, 8440148, 19443316, 2284386, 4094715, 14522358, -38218228, 26168698, 7628399, 1393717, -632971, 4230006, 2580202, -15147276, -333397, 9446244, -11433203, 51533700, 28420336, 19717658, 36574868, 15013058, -6153078, 10936597, -1554241, 35453344, -12052215, -3285650, -6912750, 14539538, -3304441, 16707960, -54400056, 1794223, 17238924, -1669132, -21029770, -8944806, 4592931, 11143293, -51034948, -19971598, -5371931, -16775069, -22175990, -25227028, -20946556, -15939697, 2603287, -5801964, 20633022, -38773892, -12666395, -6986301, 8915278, -2276870, --6766184, 24824910, 43823160, -3958349, 9276056, -15131170, -5906654, 20311438, 21919902, -20780126, --63768452, -14108431, 29155312, 3923453, -5214627, -7537668, 4187056, -11459510, -9951976, 12161737, -12988518, 27576374, 13059385, 15598784, -4597763, 37436008, 9380745, 22810572, -1367947, 34285652, --11755862, 21432960, -21113522, -2361695, 4839892, 14516453, -4460324, -15420006, -28571196, 14512158, -4613332, 790811, -12545599, -30489436, 730681, 374736, -934155, 5588826, 20376936, -273267, -15357729, 42526080, -16502338, 1443109, -12253005, 20317880, 23280334, -26181584, 24563992, 21209622, --14503568, 2695629, 9060770, 13365401, 11877195, 30815854, 14589467, -16388521, 5999533, 40527312, -18447422, -55876988, 19765440, 4219269, -38981660, -17696340, -8305393, -37248104, 9035001, 12190191, -29326036, -21314848, 48659296, -40586904, 32833414, 71673880, 4448513, -39407936, 61197380, -13613973, --1290638, 9020505, 34489660, -19859392, 1038845, 70104600, -35151088, 16829292, 23025320, 22762790, --31565862, -2979097, 4947803, -15059766, 1999844, 7402913, -13297219, 12510166, -22112102, -5973226, --9349607, -1542967, -13677323, -11169062, -5048734, 6782290, -24273008, -21747030, 31723166, 5974837, --21619254, -5356898, 18304614, 47301012, -5382668, -23054310, 23324894, 36265632, -11981885, -2700461, --606664, 13120051, -1564442, 21475, 14700599, -40074192, 25552908, -23124640, -1792075, -32770064, -16124381, -2570001, -51392504, 24153822, -6176700, -18922552, 30082488, 3908957, 29417842, -27571006, --14153528, -11085847, -29520920, -39539468, -56872348, 44641352, 13276281, 32871532, 24970402, -83752, --10754598, 37688876, -14851997, 10384694, 9831180, -41316512, 36961952, 11461120, -9540733, 29808146, -3339337, 813359, 15870441, -14777372, 40249748, -33127082, -16393353, 13368086, 14209899, 5299990, --29020558, -19479824, -32442036, 16667694, 4820564, 15042049, 427349, 16221018, 7560216, 4288525, -1024887, 13479218, -6607807, 6579353, -14844481, 9427453, -13755707, -2048163, -18262738, -15047418, -823560, -18404472, 7654169, 36828272, 9252970, -31412854, 15114527, 9432285, 20477330, -1794223, -34106336, -31998580, 4191888, 11136850, -28893856, -9331890, 57003880, 29557428, -76669464, -35256848, -39788576, -14163192, -36908264, 10934987, -4644471, -31384936, 19311784, 30791158, -48245904, 5095442, -40036076, -32911260, -27360016, 28703804, 2029909, -32854352, 30849140, -69800736, -7910793, -10036802, --83419000, -11615202, -27593018, 10768020, 11195906, 26757646, -13313325, -28577638, -14538464, -42497092, -3462281, 19223200, 6802692, 10208600, -39127152, 25448754, 989453, -40853728, 29526826, -44125956, --21850646, -14577656, 10300942, 37351720, 37129992, -27917, -11410117, -73156712, 30346092, 80700288, -25748866, 5144297, -44965624, -58880780, -28029494, -1785096, 30113090, -35483408, -25733834, -36483600, --15186467, 75958104, 75535592, -9836549, -38338488, -27137750, -18890876, -4316442, 36863168, -14645302, -9350681, 12310450, 23716810, -2929705, -20007568, -41130216, -22166864, 73904040, 27264452, 50901268, --44797044, -18495740, -22120692, 52425444, -1631551, -71095664, -76762336, 47587700, 68295352, 126617784, -17081084, -93201864, 9834938, -9425843, -35230008, 29841970, -31285078, -8602283, 2618320, 6777459, --4783520, 5907191, 14090177, -22632330, -16755204, -1966021, 6129992, 11953431, -13928579, 549219, -12975096, -10671920, 8573828, -6341519, 36974300, -2172717, -4119411, 18829136, 12490302, 16522739, --7978976, 9911174, -2476586, -2244121, 16251083, 8910983, 3709241, 2683281, 21470004, -20742544, --4524748, 165893, 28529320, -2327872, -4993973, 23518704, -5310190, -13013214, -9860708, 19086298, --3861176, 7174206, 6769406, 1132798, -6279779, 1665374, 9332427, 730144, 24911884, 9585830, -7864085, -12604655, -459562, 6715718, -15903190, 3676492, 7534983, 15002321, 1289564, -4733591, -10946261, -596464, -18748606, 19237696, 7697655, -8392903, 19242528, -16128676, -914828, -13819057, --7582765, 6757594, 57184804, 4913980, -21501680, -17287780, 2589865, 13297756, -1049046, 12174622, --4759898, -2856690, -16172699, -3175055, -11385958, 18078054, -11314018, -558346, -7212324, -2952253, --4305705, 2305861, -11974369, 2180770, -5252745, -7929584, 2280628, -935766, 521302, -1854352, -4020090, 2405719, -9982041, -5926518, -112206, -6271189, -5909875, 5315022, -1674500, -9650792, -607738, -5170604, 4250944, -14449881, 7410429, -6027450, -11317239, 3884798, -5179731, -5406290, -1545651, 358093, 736587, -2020782, 2551211, -4096862, 5106716, -2669322, 621697, 8756901, --5886253, 3236258, -1450625, -438087, 2415382, -6434935, 6420976, -6804839, 6439767, -1123671, --61740, -4282620, 6183679, -6677064, 831076, 2535105, -8554501, 8676908, -4320737, -27081380, --45240500, 47907676, 163869648, 32117228, 48748416, -100729328, -141508432, -58276264, -74418360, 57521424, -131404528, 76488000, 50305880, 5655398, -73475616, -63890860, -65136936, -25817048, 35844188, 31711354, -32593970, 30465276, -1734093, -4335770, -8388071, -9878962, -16035260, -1569274, 19426674, -1308354, --12519293, -4124242, -17751100, -9069360, -3764539, -3761855, 31585190, 30579630, 16981226, 19563576, -118648, -22992570, -24749750, -43387224, -30072288, 4407174, 2649995, 9312563, 24894168, 37159520, -21117818, 18869938, -1850594, -20535312, -30039538, -24758876, -22081500, 3252901, 6372121, 13687524, -8145943, 6349573, 112743, -7495255, 1671816, 758062, 1774358, 18221398, -3234110, 7907035, -6639483, -13961865, -27626304, -27039504, -26032334, 5912023, 14761803, 5912560, 384936, 0, -0, 0, 0, }, +-3151432, 441845, -2930778, -376883, 3689377, -4294431, 1852205, -1865626, -1881196, -3999152, +-1311039, 6078453, -4331475, 3453691, 1873143, -3306588, -148176, -4864588, 1398012, -404264, +2983929, -8735963, -3820910, -1162326, 1890323, -725850, -3172370, -10201, -863825, -3992709, +3882114, -7516, 1139240, 4190278, 224412, -1038845, -682363, -801548, 386547, -1806034, +-2829847, -2325725, -2204392, -1247151, -1381906, 5653788, 3712462, 1368484, 1187559, 1036698, +-1246077, -381178, -1191317, 5369783, -718333, 1422708, -3681861, 1379221, -339302, 2182917, +1082869, 758062, -1595044, 268972, -986232, 4189204, 20401, 476741, 1946694, 1056025, +-2605972, 1250372, 544387, -1300301, -175557, 61203, 3103651, 9375377, 2301566, 1213865, +-2005750, -963146, -4553202, -378494, -1047435, 3354906, 3287798, -3340948, -2121177, -2093797, +-1660542, -2437394, 393526, 2622078, -2090575, -2595771, -7725036, -5989332, -4116726, -399432, +559956, 5565741, -3045132, 2652679, 1900523, 1258962, 475668, -4524211, 1230508, -9406515, +1243393, 61203, 553514, -857920, -5549635, -2815351, -4771172, 62814, 424665, -3197066, +-7479149, 4965519, -264677, -4694400, 76773, 2697240, 737124, -1800128, 1165547, -2805151, +-1007707, -2670933, 1913408, -2833068, 3645354, 2588255, -512175, -5367636, 316754, 373125, +-406948, -2188823, 1309965, 550293, -1137630, 2371359, 2971044, 1684701, 166967, -354872, +881005, -3081639, -10150081, -11382737, -815507, -4498442, 3469797, -5577552, 1392106, 2581275, +-3815005, 3110093, 11382737, 637803, -1061394, 6242198, 832687, 6265284, 82141, 2854543, +-4499515, -5953362, -337692, 2243047, -4149475, -1345399, -436476, -1184337, 1114544, -1235877, +-2200634, 2040646, -1046361, -893890, 4459250, 6352257, -2007897, -3467649, 1254667, 5069135, +1923072, 6503118, 259309, -970663, -181999, 5786932, 362925, -4242891, -2306398, 4517232, +3319473, 3490735, 965831, -2363843, -4722854, 835908, 2224793, 2648384, -1009317, -2596845, +5119064, 3289945, -824097, -3014530, 204011, -2169495, 5366562, 1421634, 1039382, 1452773, +681826, 808528, 3388729, 214212, 3454764, -1107028, 5493800, -32749, -4663798, 6007049, +4163971, 6323803, 6525129, -1543504, 3255048, -1377074, -3742527, -318901, 9677635, 4276714, +2138357, 3481608, -4076461, 6947647, 2937758, 4664335, -1398012, -7653632, 3198140, -11957726, +2400350, -3032784, 2377265, 1917703, -259309, -4096325, 960462, 2722473, -1640678, 2555506, +6038724, -404264, -5078262, -6835441, 1030255, 3102577, -6365679, 3549254, -5987722, -3841312, +4264366, -2471217, -5074504, -2411087, -3598646, 5586142, 7559680, 4353486, -2803540, 73014, +4002373, 2472291, -416075, -3071975, -1554778, -2689723, 2820183, 9466645, -160524, -5065377, +-4125316, 2231236, 672162, -1869921, -5677410, -58519, -4880157, -1834488, 651761, -779537, +3698504, 743029, 4691178, 5570573, -4841502, -1762010, 13325673, -3549254, 1248225, 1948841, +-8884140, -7483981, 128312, 8770860, 6597070, 10591389, 3406446, -2964601, -4632659, 792421, +-2702608, 2091112, 911070, 3573950, 6459094, 2089502, 4727686, -142808, 2749853, -2923799, +-6242735, -3220689, -4816269, 42950, -1450625, 1401770, -7602629, -3748970, -1158567, 2721936, +-3853660, 7680476, -8879845, 1823751, -5669894, -4489852, 2325188, 2165737, 7231115, -881542, +1653026, -2183991, 4972499, 5451924, 1273458, -1252520, -5881958, -843961, 1637993, -4365835, +3989488, -4800163, 1686848, 7751342, 6183679, 28454, -2930242, 1160178, 7374996, -1035624, +1429687, 1166621, 5834176, 31139, -2342368, -3973919, 2034741, -5940477, 1246614, 12558484, +1803886, 6146098, -1505923, -5070746, -8145406, 4016331, -5749351, -6321118, 1465121, -3157875, +-19420232, 1718524, 3238405, 17782776, 6028524, 1152662, -7944079, 7311108, 3459059, -3431142, +4140885, -849330, 6747931, -4105989, -1799591, -1488743, -1509681, -2864206, -945967, 4483946, +4286914, 6867653, 2741263, 3296924, 163746, -4708895, -4702453, 6511708, -3401077, 1347009, +-357019, -4818954, 6988449, -1245004, -2674691, 1063541, 5158256, -3370476, 7705708, -9542880, +-7563438, -9667971, 2577517, -5473399, -7941395, -1952600, 7928510, -3300682, 2566780, 4511327, +-3025805, -4343823, 625992, 709743, 2849711, 498216, -2095407, -214748, 10191421, 4292283, +-3691525, -12279848, -9561134, 3859028, 12186970, 10210211, -7163469, 669478, -4236985, 2711735, +-3429532, 5726265, -9710384, -1726577, -12060805, -3621194, 1836635, 4146254, -11013370, -2840047, +7579544, -1014149, -11048266, 5615133, -3547106, -6445672, 3440269, 5662915, 1276142, 1066763, +1949378, 7416872, -3659849, -3320010, 1903207, -3940633, -2007360, -97711, -534723, 40802, +5949604, 2891050, -846645, -770410, 3391414, 1236414, 4183298, -647466, 4726075, 4926328, +1861332, -5986648, 584652, -1112933, -4305705, 5143224, -3389266, 1943473, -4069482, -1750199, +-13873281, 850404, 10616622, 562104, 11275363, -2586107, -3068217, -12481712, 13627931, 6169184, +7507066, 808528, 6001143, -614717, -708133, 4924717, -3951370, 1372779, -856846, -14155675, +2132988, -3904125, 2428804, -2878702, 1814087, 11451457, 1825898, -15932718, -117038, 11295764, +-2160906, 6532109, -7052873, -5523328, -13017509, 7290170, 4391604, 8529268, 4576825, -4758287, +7923678, -2263448, 7604240, -5089536, -3943854, 186831, -1172526, 5865315, 1741609, 4895189, +6305012, -3858491, -2552284, -2415382, 4311074, -1132261, -2039573, 464393, -4823785, 2400887, +2331094, -3102040, 4372814, 6546067, -2277407, -3428458, -354872, -5493800, -2041720, 7586523, +1554241, -5185100, 10077067, -10839424, 2159832, 5361193, -1921461, -3755412, -277562, 4225711, +-7543573, 3757560, -2758980, -7182796, -4665945, -4445828, 671089, -2242510, -3879429, 1629940, +12439299, 6295349, -1075889, -4378719, -10963978, 912681, 6969658, -4097936, -12141336, -73014, +-1370632, 65498, 2291365, 4653597, 5291937, -2390149, 1445257, 7538742, 635118, 8858907, +9852118, 21573084, 14925011, 8981313, -2139968, -11540040, -3832185, 10453950, 4722317, -11129334, +8454106, -1970853, -5307506, -6808060, 1210644, 18711026, -12486007, 13538274, 5498095, -2909840, +4668093, -3640522, 9918690, -3688303, 5353140, 1065689, -6483790, -4650376, -6303938, 326954, +5798206, -1510218, -3432216, 3679713, 730681, -993211, -12391518, 3979287, -6813966, -5205501, +3783866, 8537321, -5871757, -8670465, 616328, 7774965, 927176, -4799089, -1577864, -2718714, +3750043, 2835752, -2600603, -4419522, -6878927, 4857071, 11842299, 7524246, 3940096, -6184216, +3747359, 7872675, -7953206, -10061498, 2053531, -8120710, -4159676, -16533477, 54224, -11076184, +23852638, 382252, -9118216, 10302553, -11263552, 13086228, 1240172, -8187819, -13623636, -3470334, +6946036, -11089606, 9915469, -1668595, 6460705, 7366943, -6227166, -2770791, -3668976, -5204964, +-1791538, -4860829, 996432, -5913633, 6276558, 3767223, 5304285, 10282152, 5533529, -1590212, +12547210, 6249178, 2495913, -6645388, -6998113, 3686693, -5302674, 1270774, 4124242, -8222178, +7281044, 18820546, 1664837, 13411035, 6561100, 6531572, 9779104, 641561, 5297306, 5448166, +-11921219, -8118562, 8637179, 719944, 8167954, 1598802, 8564702, -1122060, 3242700, 2327872, +-17172890, -846645, 4731444, 12008729, 2857764, 10630581, 1292785, -1941862, 3604551, 5131412, +-9539659, -15911780, -8507793, 2997350, 4224101, 1354525, 11479911, 4630512, -11056856, -1415729, +-9792525, -5228586, 4753455, -5589900, 2754148, 3083250, -5675263, -15651398, 5362267, -15507516, +-16889958, 3369402, -8051990, 7266011, 11429982, -3197603, 13262859, -3486977, 13117904, 16779364, +550830, 616328, -16809966, -3677566, 2434173, 2571075, -1462973, -11828340, 1373853, -10078678, +1822677, -3010772, 3237332, -4119948, -5798206, 1051730, -514859, -3941169, 4712653, -3758, +-1987496, 11996381, 5284421, 8899172, -5192616, 1295470, -4249334, 3121904, -373125, 4447439, +-877247, -4122632, -3973919, -11431055, -5665599, 17251810, 8016020, 11274289, -12716324, 2375117, +10969346, -9070434, 1035087, 6043019, -2558190, 6039798, 1986959, -12457553, -2001455, -18910204, +-1163936, 6649146, 4809827, 11294690, -10687489, -10626823, -10106595, -16142098, 11140608, 6250788, +1469416, -11093364, 9961640, -740882, -12705050, -11469173, -3288334, -3383361, -7983271, -4043712, +-4555350, -4983773, -2681133, -12964359, 6544994, 6371584, -211527, -1939715, -1813550, -5339181, +-14094472, -16672526, 883153, 5982353, -3784940, -10654740, -5085778, 6473053, 5837398, -617402, +-2668785, -5200132, -3863323, 8327942, -4398584, 5499706, -4140349, -944356, -15387257, -4623533, +-854699, 10664404, 3669513, -4087735, -8457864, -7530152, -11984569, 18592914, -8762807, 17503066, +2902861, -9813463, 13066901, 10632192, 21922586, -22799298, 9304510, 1471026, 3545496, -6367289, +-5175973, 6800007, 5805722, -4390531, -8567386, 7639673, -4087735, 7672959, 12035035, 3554086, +-4313221, 5134634, 16377247, -27824408, -31216896, -18587544, -3885335, -12794708, 7521562, -10439455, +423591, 6029061, -1547799, 20644298, 13757317, 5638755, -6663642, -4003447, 13302051, -1896228, +1380295, -5330592, -13392245, 452582, 4249870, 3764002, -7771207, 6460705, -9127, -476741, +11033234, 16747688, 258235, -10217727, -5466957, -19894826, -8774618, -4983773, -7038378, 1101122, +2515777, -7169911, -3964792, -10129143, 9984188, 13328894, 9959492, 12407087, 8616241, 16178605, +845035, 5492190, 2674691, -3061775, 5041218, 9465571, -10916196, -33726768, -9059160, 10781979, +-18645526, 8411693, 9593883, 3417720, -6657200, 176631, -5593121, -14254996, -5130876, 7746511, +-12271258, -10336913, 1658394, -8942659, 20166482, 20157356, -9888088, 26321170, -21997748, -1437203, +4895189, -23023710, -5499706, -10313827, 4311611, -7748658, 20096152, 1418413, 759672, 22793928, +-352724, -22199612, -15948824, -11449309, 9167071, -2322504, -19487878, 4145180, 6708739, 9648644, +-11183021, 5055714, 11376831, 7872138, 8262980, -3665218, 13409425, 12202002, 5551782, -31032212, +22841172, -11919071, 9446781, -3416110, -2040110, 4451197, -12148315, -8841727, 15103252, -7728257, +-733903, 11337103, -13075491, 11379516, -3800509, 10433549, -14477798, 19407346, -8099235, 30775052, +-3020436, 486405, 9539122, -8739185, -4022237, -5587753, 3955128, -3396246, -14858439, -22237194, +-4181151, 9901510, -4567161, -9495636, -19121194, 7316477, 3980898, -30916248, 1675574, -2488397, +6700149, 11124502, -6556805, 9706626, 32529546, 14999636, -8860518, 21027086, 7991324, -14802605, +6167573, 13271986, -1399623, -5674726, -18700824, -6160057, 12796318, 6959995, 6494528, 2628520, +-2739116, -8744553, -17617956, 8844411, -5496485, 3912178, -13347148, -8632884, 424128, -3187403, +18864570, 4412005, 3666828, 12780212, 7438347, -22048752, -1652489, 6528887, -3121904, -734976, +18685256, 4669167, 21574158, -13334800, -6774237, -4712653, -6880001, 6776385, -7187628, 14199699, +16460999, -8337606, -14265734, 23885386, -12134356, -6954626, -2045478, 5816997, 4933307, -16086800, +-3126736, 7063611, -5574331, 9336185, -4190814, 13939853, -7118372, 1044214, 26473642, -3467112, +19265076, 27076548, 5754720, 10965052, -5509370, -41586556, -22146998, -11431055, 1833951, 9121437, +-41660644, -9674951, 42950208, -16385837, -18851686, 38363184, -24832964, 21674552, 28387586, 11498701, +3562139, -21726092, 7941395, -38219840, -19314468, 8440148, 19443316, 2284386, 4094715, 14522358, +38218228, 26168698, 7628399, 1393717, -632971, 4230006, 2580202, -15147276, -333397, 9446244, +11433203, 51533700, 28420336, 19717658, 36574868, 15013058, -6153078, 10936597, -1554241, 35453344, +12052215, -3285650, -6912750, 14539538, -3304441, 16707960, -54400056, 1794223, 17238924, -1669132, +21029770, -8944806, 4592931, 11143293, -51034948, -19971598, -5371931, -16775069, -22175990, -25227028, +20946556, -15939697, 2603287, -5801964, 20633022, -38773892, -12666395, -6986301, 8915278, -2276870, +-6766184, 24824910, 43823160, -3958349, 9276056, -15131170, -5906654, 20311438, 21919902, -20780126, +-63768452, -14108431, 29155312, 3923453, -5214627, -7537668, 4187056, -11459510, -9951976, 12161737, +12988518, 27576374, 13059385, 15598784, -4597763, 37436008, 9380745, 22810572, -1367947, 34285652, +-11755862, 21432960, -21113522, -2361695, 4839892, 14516453, -4460324, -15420006, -28571196, 14512158, +4613332, 790811, -12545599, -30489436, 730681, 374736, -934155, 5588826, 20376936, -273267, +15357729, 42526080, -16502338, 1443109, -12253005, 20317880, 23280334, -26181584, 24563992, 21209622, +-14503568, 2695629, 9060770, 13365401, 11877195, 30815854, 14589467, -16388521, 5999533, 40527312, +18447422, -55876988, 19765440, 4219269, -38981660, -17696340, -8305393, -37248104, 9035001, 12190191, +29326036, -21314848, 48659296, -40586904, 32833414, 71673880, 4448513, -39407936, 61197380, -13613973, +-1290638, 9020505, 34489660, -19859392, 1038845, 70104600, -35151088, 16829292, 23025320, 22762790, +-31565862, -2979097, 4947803, -15059766, 1999844, 7402913, -13297219, 12510166, -22112102, -5973226, +-9349607, -1542967, -13677323, -11169062, -5048734, 6782290, -24273008, -21747030, 31723166, 5974837, +-21619254, -5356898, 18304614, 47301012, -5382668, -23054310, 23324894, 36265632, -11981885, -2700461, +-606664, 13120051, -1564442, 21475, 14700599, -40074192, 25552908, -23124640, -1792075, -32770064, +16124381, -2570001, -51392504, 24153822, -6176700, -18922552, 30082488, 3908957, 29417842, -27571006, +-14153528, -11085847, -29520920, -39539468, -56872348, 44641352, 13276281, 32871532, 24970402, -83752, +-10754598, 37688876, -14851997, 10384694, 9831180, -41316512, 36961952, 11461120, -9540733, 29808146, +3339337, 813359, 15870441, -14777372, 40249748, -33127082, -16393353, 13368086, 14209899, 5299990, +-29020558, -19479824, -32442036, 16667694, 4820564, 15042049, 427349, 16221018, 7560216, 4288525, +1024887, 13479218, -6607807, 6579353, -14844481, 9427453, -13755707, -2048163, -18262738, -15047418, +823560, -18404472, 7654169, 36828272, 9252970, -31412854, 15114527, 9432285, 20477330, -1794223, +34106336, -31998580, 4191888, 11136850, -28893856, -9331890, 57003880, 29557428, -76669464, -35256848, +39788576, -14163192, -36908264, 10934987, -4644471, -31384936, 19311784, 30791158, -48245904, 5095442, +40036076, -32911260, -27360016, 28703804, 2029909, -32854352, 30849140, -69800736, -7910793, -10036802, +-83419000, -11615202, -27593018, 10768020, 11195906, 26757646, -13313325, -28577638, -14538464, -42497092, +3462281, 19223200, 6802692, 10208600, -39127152, 25448754, 989453, -40853728, 29526826, -44125956, +-21850646, -14577656, 10300942, 37351720, 37129992, -27917, -11410117, -73156712, 30346092, 80700288, +25748866, 5144297, -44965624, -58880780, -28029494, -1785096, 30113090, -35483408, -25733834, -36483600, +-15186467, 75958104, 75535592, -9836549, -38338488, -27137750, -18890876, -4316442, 36863168, -14645302, +9350681, 12310450, 23716810, -2929705, -20007568, -41130216, -22166864, 73904040, 27264452, 50901268, +-44797044, -18495740, -22120692, 52425444, -1631551, -71095664, -76762336, 47587700, 68295352, 126617784, +17081084, -93201864, 9834938, -9425843, -35230008, 29841970, -31285078, -8602283, 2618320, 6777459, +-4783520, 5907191, 14090177, -22632330, -16755204, -1966021, 6129992, 11953431, -13928579, 549219, +12975096, -10671920, 8573828, -6341519, 36974300, -2172717, -4119411, 18829136, 12490302, 16522739, +-7978976, 9911174, -2476586, -2244121, 16251083, 8910983, 3709241, 2683281, 21470004, -20742544, +-4524748, 165893, 28529320, -2327872, -4993973, 23518704, -5310190, -13013214, -9860708, 19086298, +-3861176, 7174206, 6769406, 1132798, -6279779, 1665374, 9332427, 730144, 24911884, 9585830, +7864085, -12604655, -459562, 6715718, -15903190, 3676492, 7534983, 15002321, 1289564, -4733591, +10946261, -596464, -18748606, 19237696, 7697655, -8392903, 19242528, -16128676, -914828, -13819057, +-7582765, 6757594, 57184804, 4913980, -21501680, -17287780, 2589865, 13297756, -1049046, 12174622, +-4759898, -2856690, -16172699, -3175055, -11385958, 18078054, -11314018, -558346, -7212324, -2952253, +-4305705, 2305861, -11974369, 2180770, -5252745, -7929584, 2280628, -935766, 521302, -1854352, +4020090, 2405719, -9982041, -5926518, -112206, -6271189, -5909875, 5315022, -1674500, -9650792, +607738, -5170604, 4250944, -14449881, 7410429, -6027450, -11317239, 3884798, -5179731, -5406290, +1545651, 358093, 736587, -2020782, 2551211, -4096862, 5106716, -2669322, 621697, 8756901, +-5886253, 3236258, -1450625, -438087, 2415382, -6434935, 6420976, -6804839, 6439767, -1123671, +-61740, -4282620, 6183679, -6677064, 831076, 2535105, -8554501, 8676908, -4320737, -27081380, +-45240500, 47907676, 163869648, 32117228, 48748416, -100729328, -141508432, -58276264, -74418360, 57521424, +131404528, 76488000, 50305880, 5655398, -73475616, -63890860, -65136936, -25817048, 35844188, 31711354, +32593970, 30465276, -1734093, -4335770, -8388071, -9878962, -16035260, -1569274, 19426674, -1308354, +-12519293, -4124242, -17751100, -9069360, -3764539, -3761855, 31585190, 30579630, 16981226, 19563576, +118648, -22992570, -24749750, -43387224, -30072288, 4407174, 2649995, 9312563, 24894168, 37159520, +21117818, 18869938, -1850594, -20535312, -30039538, -24758876, -22081500, 3252901, 6372121, 13687524, +8145943, 6349573, 112743, -7495255, 1671816, 758062, 1774358, 18221398, -3234110, 7907035, +6639483, -13961865, -27626304, -27039504, -26032334, 5912023, 14761803, 5912560, 384936, 0, +0, 0, 0, }, }, { { -4326643, --3154117, 690416, -2771328, -1715839, -1253594, -353261, -445066, -1789391, -5367636, -3997541, --2841658, -1395864, -3881040, 1618666, -900333, 638876, -1604707, -575526, -2429341, 2540473, -501437, -1779727, -3200288, 312996, 3591667, 1978906, -3655017, -3510062, 656056, 300111, -410706, -2443837, 530428, -883690, -1581085, -469225, -1490354, -2250563, -1051730, -3828963, -4952098, 1385664, 3439195, -3332895, -5646809, -444529, 726386, -625992, -5243618, 306016, --1304060, 3092913, 2091112, 2322504, 5333276, -921807, -187905, -1628330, -805306, 1934883, --3631395, 4267050, 5105106, -2404645, -1676111, -4257387, -2229088, 862752, -1294933, -2566780, -281857, -2709588, -1395864, -3434363, -2870112, -3156801, 2104534, 6383395, 455267, 4291209, --1053878, -557272, -2368675, 4565014, 2754685, -2595771, -3593814, 2321967, -995359, -5324149, --6333466, 1521492, 193810, -2057289, -2243584, -4147865, 2546916, -4888747, 1125818, -448824, -974958, 441308, 906775, -2180233, -479963, 906775, 1250909, -474057, 1558536, 1295470, --2371359, 1677722, -1518271, -4172561, 5760088, -1117765, 53687, 1449552, -979789, 3319473, -3961034, -874026, 1317481, 3191698, -13422, -3326452, -2867965, 874563, 1680943, -984084, -749472, 3918084, -3788698, -3038689, 2822331, 659814, -1718524, -2029372, -572841, 795643, -1913945, -3847754, 1330366, 1078574, -3729105, -3206730, 2043868, -1678259, -4968741, -1581085, --1531693, 6293738, 5272609, -7813620, -3304441, -5403606, 3563212, -2643552, -3582540, -2507724, --3205119, -689879, 1262184, 5833640, 1074279, -3175055, 5019743, 158914, 5174899, -4943508, -7981123, 3643206, 8653822, -1568200, -2853469, -615254, -4653597, -424128, -264141, -1731409, -1680406, 142271, -3675418, -923418, 64961, 1151588, 3805878, 852551, -5527086, -4676146, --1687922, 3151432, 295816, 158377, -2754685, 4678830, -36507, 353798, -1921461, 611496, --1121523, 2472291, -696322, 7813083, 166967, -994822, 3055332, -1931125, -3397319, -1408749, -2748242, 4747550, 893890, 2933463, 826781, 549219, -2350421, -2343979, -3833795, -93416, --3972308, 1116692, 3489661, 3685082, 2665564, -1132261, -1646046, 3390877, 5618354, 5676873, -3284576, -192200, 4967130, -2788508, -3900904, 3762391, 4293894, 5023501, 7869991, 523986, --4753992, 2641942, -4531728, -524523, 1714229, 909996, 8726837, 460098, -6774774, -542240, -1366337, 2675765, -370978, -2581812, -7486128, -1736777, 6577743, 1984275, 4362613, 4718022, -4246112, 886374, -613107, 4145180, -5549635, -460098, -3744138, 10015864, -463320, -22012, -4683662, -4149475, -512175, 1275068, -491774, 5798743, -865973, 1488743, 5968931, -1532230, -1926293, 83215, -206158, -484794, -695785, -2151242, 2623151, 2942053, -747324, 2899103, -1322313, 6196027, 7777649, -979789, 2148558, 659814, -3783866, 3150359, -839129, -3960497, -1482838, 2962454, 1202591, -1854889, 8439611, 8529268, -3437585, -4677757, -4333085, -2755759, -2028298, -9052717, -1018444, 1399086, -4516695, -8006893, 7776039, -1582696, -2103997, 1386201, -3525095, 3362423, -4140885, -1484448, -271120, -323196, 1794223, 2893734, -1631551, 3531000, --2658585, 5352066, -721555, 319975, -2773475, 2873333, 935229, -696858, -2757369, 1367947, --1598265, -2246268, -2041720, 558883, 1655173, -4871567, 357556, -9274445, -5473399, 3441880, --1468879, 1188095, 2033667, 6223945, -2035278, -3048890, -262530, 241592, 2550137, 2529199, --2921115, -1244467, 6773164, 270046, 1012539, 572841, 3007551, -5701569, 177167, 2825552, -5280126, 1031329, 2270964, 7927973, -1973001, -917512, -4336307, -164819, 1371705, 2499671, --5361193, -8586713, 3718905, -2863133, 235686, -4471061, 3467649, -9917616, -7998840, -9365176, --3059627, -2071248, -6411313, 3188476, 8904004, -6637872, 1411971, 10271414, -2365990, -2967823, --4749160, 706522, 1611, 4461398, 1529545, 3158949, 2339684, -3544422, -6592775, -3312494, -3951907, -2416993, -4038880, 834297, 1664300, 1103807, 828392, 8844411, -4287988, 4711579, --2379412, 2247342, -2661806, 7291781, -5638219, 2823941, -500901, -4737349, 4125853, -1937030, --1532230, 4198868, 2331094, -692564, -2046552, 3757560, 1941862, -4540854, -5107253, 3083250, -5481989, 2749316, 38655, -2829847, 186294, 3115999, -1632625, 3827890, -1115618, -9230958, -170725, -4361540, 12349642, 3801046, -7107097, -4466766, -994822, 39728, 3587372, -7589744, --8516920, 7243463, -1286343, -7580618, 938450, -2243584, 7712151, 3274913, -1563905, 961536, --61203, -1528472, -1022202, 8144332, 1968169, 9127, -5583458, -3143916, -1106491, 2528662, -4023311, 11057930, 529355, -130460, -127238, 259309, -4866735, -314606, 2298881, -6878390, --4275103, -4671314, -347355, 7844758, -6713571, 550293, 3995930, 1029182, -3088082, 2851858, --8465917, 6322192, -1427540, -712965, 3878356, -5077188, -5028333, -8647380, 1702418, -3379066, -7473780, 1758252, 172872, 548682, 2234457, 4939750, -2650532, -2249489, 6023155, -2269890, --3609383, -1202591, 5961415, 5054640, 5456756, 1827509, -4012036, 2284386, 4811437, -7547868, -7352984, -6482180, -4917201, 4703526, -16230145, -10058277, 2429878, 5478231, 10462003, -6215892, -5444408, 1475321, 5756330, 81068, -3223910, -3326989, 3420942, 11625403, 591095, -584116, --11065446, -8559870, -292058, -6183679, -4220342, 788127, 1010391, -6345814, -2355253, 2045478, -3636227, 2523830, -4690105, 396211, 4723927, 4514011, 543313, -3731253, 464393, -2123325, -927713, 1824824, 2027761, -2779381, 3727495, 10188199, -1258425, -321049, 1645509, -5045513, -2334315, 8278550, -7988103, -8755828, -4946729, 1155346, -12048994, 687732, 165893, 2042794, --36507, 207232, -5756330, -2660732, -3754338, -135291, 8002061, 12259447, 312459, 1119376, -5833103, -2119566, -914291, 2983929, 13554917, 1940252, 5071820, 9587978, 2117419, -6078453, -3155727, 8653822, 4621385, -7028177, -818728, 16684874, 13802951, 3542274, 8133595, 11191611, -2207613, 382789, 6519224, -2622615, -402653, -5803575, 4714801, 121870, -222265, 2904472, -2283849, 9368397, -7900593, -6188511, 6240051, 1963337, 2582349, -4685810, 460098, -1241782, -2961917, 667331, 4352950, 5400385, -5368172, 4682588, 2856153, -4931160, 13810467, 3178813, -2252710, -10434623, -4119411, -186294, 8731132, 9392557, -1462973, -8796630, 5639829, -7525320, --3195456, 8078297, -848793, -5050882, 6440841, 9800042, -2961917, 3923453, -4312147, -11553462, --682363, 9039832, -4486094, -3200825, 4434554, -4844723, -10016937, 3520800, 5213554, 12642773, -4858145, -6893960, 2395518, -8128226, -12927852, 12965969, 3749507, 6914361, 17204566, 10358387, --6838125, -2385854, 175020, 2555506, 2834142, -1428077, -6078453, 1235340, -3999152, 6639483, -732829, 2361695, -1751273, -1354525, -6297496, -3947612, 14994805, 4479114, -8211441, 3886946, --7988639, -6334540, -12817256, 5593121, 870805, -29528, 3852586, -598611, -5404680, 9922448, -6513318, -2437394, -9473624, 10040560, -6245956, 2525978, 529355, 3192235, 2842732, 6356552, -8351564, -1877975, 5039608, 11768210, 2448131, -3821447, -2437931, -2178622, 2848637, 7874286, --1132261, 3187940, 1720134, -7277822, 1427003, -1775969, 4750234, -10887205, 1087164, -18145700, --9701794, -10056666, -1149441, -9893994, 8268349, -2308545, -6691559, -1967095, 813359, -6367826, --1025423, 287226, 2768643, -3136937, -6251325, -11173894, -14638859, -6475200, -9843528, 25006910, --12280385, 5895917, -11623255, -2961380, 884763, -1556389, -17191680, -88584, -8344585, 851477, -19536732, -6119255, 7994545, 11164767, 3600256, 4661114, 11591043, 3757560, -5021354, 3583613, -4310000, 5215164, 1756642, -2328946, 13518410, 670015, -1517197, -2208150, 3365107, -1083406, --5255430, 4793721, -2212982, 3443490, -13901735, 608812, -3038689, 12215961, -5252208, 3936338, -17830556, -1613297, -70867, -4507568, -8013872, -506806, -1705102, -7831873, 9238475, -2224256, -6568079, 582505, 6170795, -4061965, -1206349, 14371497, 6653978, -11628624, -6441914, 2765422, -3002719, 1358820, 2594160, -3752728, 3599183, 4853850, 11578695, -16179142, 343597, -7379291, -2543695, -1324461, -2458869, -3385508, -8622684, -6808060, -8344048, 9065065, -16994648, -4346507, --10800232, 5708012, 16747151, -8782134, 103616, 1062468, -3751117, 7206419, -5901285, 3262565, --2078764, -6451578, 14958834, 1392106, -5329518, 862215, -2562485, -6117107, 5034776, -4518843, -4721780, -9007620, -4784057, 7238094, 4537633, -15478525, -3154117, -13057237, 3880503, -1561221, --13475460, 16935592, -4716411, 468151, -12446278, -12653511, 628139, -11308112, -1719061, -9635222, --9061307, 11457899, 1082332, -12737799, 4412542, -11278047, 10844256, 4887673, -5278515, 1405528, -3526168, 12454868, -8777303, -11444477, 12766253, -7727720, -4884989, 7796440, 9770514, -16513612, --8438000, 11355894, 7868380, 5233955, -442919, 2578591, -12103218, 8652748, -13242995, -21009370, --17374216, 7925826, -20733954, -796180, 15263777, -1188095, 846645, 11317776, -7670275, -6132140, -24391656, -9612674, 5483063, 9539122, -2040110, -22228604, -2165737, 2488934, -5935645, -2981244, --5523328, 20979304, -124554, 332860, -1358820, -14950244, 2414309, -8585103, -4694400, 994285, -2163590, 4499515, 11762842, 2721936, -3488050, 23862302, 2139968, -5899675, -22184042, -3201361, -15612743, -3508988, -10397579, -13476534, -12218108, -10170483, -6756521, 16865262, 6183679, 854162, -9008157, 14025216, 7474854, -3261491, -2924336, 14445049, -3340411, -4729296, 3795141, 10929618, -1121523, -11824582, 2155537, -1520418, -17721572, -1709934, 13149042, -7250442, -8499203, -2458869, -17751100, -15231565, -3744138, -8268886, 17121888, 1996086, -15733539, -312459, 4436165, -288300, --7272990, 7013145, -5422396, 14099304, -10801306, 9791989, 20568062, -5294084, -5681168, -4559645, --4459787, 18852758, -13853417, -14728517, -11626476, 4562329, -6111202, -9334038, -4561792, 7035157, --9388799, 5543192, 1149441, 7670275, 10726144, 1745367, -1423245, -1640678, 10597832, -2298344, -3737159, -12577812, -122407, -4177930, 10371272, -13372918, 11390790, -4299263, -7103339, 11943767, -19883552, -10644540, 5705864, -1947231, 4097936, -29259464, -23527830, -13792751, 2166811, -8547522, -4039417, 1518808, -10937671, -8188892, 1101659, 24293408, 5749888, -14247480, -21955872, -11135776, --7992398, 15062450, -9901510, -13938243, 3642669, 3557307, -13123809, -589484, 6979, -6690486, -3687766, 29661582, 19683836, -5338108, 2111513, 19082002, -7501698, 408559, 8396124, 20635708, -12343736, -3939022, -4605816, -7545184, 1912334, -4318590, 330712, 173409, 22000970, 36049272, --2180233, 24732032, 15795279, 2836826, 3836480, -18342194, -17900886, -2470680, 4539781, -1749125, -4156455, -7169911, -13539884, -22945862, -2206003, -14959371, -12531104, -8623221, -13002477, -9631464, --898722, 20281910, -1109712, -16395501, -1828046, 3915400, 14924474, -5457293, -4532264, -10056129, -6357626, -28986734, -26221312, -12890271, -13514651, -14256607, -9141301, 8417062, -12421045, -16519518, --14411226, -24387362, 11060615, 5939403, -22366042, 10285910, 20010790, 41363220, 21642340, -656593, -6095633, -24311126, -11458436, 13065827, 9459129, -5301064, -31964220, -1854889, 48485348, -2574833, -637266, 13422847, -19305878, 11177116, 33972116, 33469606, -34047280, -30477624, -1280437, -33168958, --14213657, 864899, 2612951, 13334800, 17381732, 17397302, 27838904, 7745437, 10101226, 12461311, --6371584, -1287417, 1722282, 4630512, 7143605, -14920716, 33605436, 15795279, 14855755, -2353642, -34097744, 5105106, 19903952, 9567040, 5105106, -7765301, -7102266, 18796388, 5316633, 9041443, --20870856, -9689446, -17734994, -8805220, -13396540, 461709, -24982214, -24708946, -3274913, -9234180, --49364744, -34934192, -33880848, 9576703, 32806034, 45302780, -26644904, 31357556, 46268072, 8627516, -2239826, -2631741, 31333398, 2999498, 28265716, 13440563, 12499429, -19236622, -67281200, -51207820, --12307766, 439160, -4864051, 25325274, -6584185, -42319924, -5140002, 70458936, 11323681, -11801496, -16489990, -4583804, 10218264, -4431870, -8960376, -21728776, -10066866, -1428614, -5340792, -9898826, -14824616, -13809394, -17504140, -128849, 901943, 15446313, 4845260, 4893042, 4468914, -5055714, --1638530, 22501870, -12882754, -25026774, -7032472, 3027952, -10633802, 18756122, -11395085, -5393942, -13173202, 4912369, 9391483, -26089242, -32200980, 10546292, -8016020, -9720048, -15161771, -15427523, --35465156, 485868, -5360656, 11382200, -23744726, -43924632, 30438970, 9299141, 28332288, 3569118, --12955232, -9361955, 5029944, -16751446, 22550188, 4879083, 27507654, 21176336, 42267312, -5215164, --48172352, -35322884, -23926726, 23900420, 20608864, -21805012, 14681272, 35783520, -29113972, -37147172, -38476464, 50758996, 9535901, 1687385, 11984032, -8504035, 22972706, 11868605, 23964844, -5437966, --24239184, 54287312, 806917, -21383568, 3013457, 36457828, 17474612, 6555731, -23132694, 1808718, --12209518, -9966472, 4067334, -18291192, 1837172, 3943854, 21466246, -30790620, -4804458, -4383551, -18127446, -7579544, -10839424, -11344619, 74625, 10586021, -23153094, 907849, 6300717, -48536888, -6698002, -13727789, -33573224, 21347598, -24831354, -44394392, 57607324, -1203128, 3292629, -5279052, --16112033, 34055332, -24730422, -2983929, 4985920, -16496433, -1546188, 43365748, 22407382, -39240968, --42306500, 40975600, -20188494, 23848880, 39177080, -35700304, -61954368, -42264624, 70080984, -3630858, --56396680, 51933132, -38074348, -68276024, -2396592, 63445256, -3219615, -22526566, 35526896, -5509906, -9244380, 26124138, 15031312, 20288888, 42145440, 21230560, -13131326, 9047349, 8676908, 16513076, --18349174, 44710608, 38029252, 7647726, 11647414, -7821136, -2360085, -41515152, 17667348, -20941186, -13147432, 300111, -18409304, 25705916, -11817066, -15509664, 7012071, -22750978, 14053133, 2870112, --7227893, 9069360, 7796977, 17680770, 13266617, 17325898, 42591044, -2120103, 2299418, 16653736, -27777700, -558346, 5389647, 2620467, 21061446, 30845918, -12001749, 9489730, -4100083, -1807108, --54524072, 7072738, 19050328, -9245454, -15656230, 14729053, -24609626, -28483686, -326954, 21984864, -34861176, -44802416, 15355045, 2180770, -4919348, 5591511, 15406048, 47440060, -3367254, -21990770, -5087389, 44297756, 23466090, -44339096, -34619048, -549219, -53385368, -18246094, -19746650, 41193568, --1171452, -15111842, 18953690, -9590662, 10546829, 2799782, -20286204, 24452860, -54895588, -5096516, -3483219, -13625247, 10314901, 2590402, -10530723, -1819456, 1855963, 14002667, 1109712, -15982110, --53061636, -38778184, -29298656, -14596446, 33495376, -6548215, 1703491, -53291956, 4519380, -3563749, --6665253, 1847373, -51037632, 27837830, -24375014, 12898324, -9474698, 35360464, -18331994, -33914136, --15410343, -121333, 26622892, 46716360, 50116900, -60153700, -43282532, -30612380, 22339736, 49780280, -61731564, -10239202, -13091060, -52564496, -17331266, 47299936, 31339840, -229781, 3078418, -714038, --40962712, 30363808, -4472672, 29457034, 75491568, -77176808, 102184792, 27326192, -40305048, -44378288, -36662376, -21905406, 22435836, 12211666, 14058502, 8639327, -28771986, 31398896, -4904316, -10879689, --10492605, -12091407, 9280887, -6226092, 13321378, 8339216, -2032593, -2995203, -24093156, 14127758, -5410048, -5850819, 5078799, 12856985, -3808026, 7421167, -12332999, 14601815, -5539434, 2128156, -5624797, 6382322, -6558415, 22365506, -1033477, -20435992, -1536525, 9874130, 4574140, -15556372, -7584376, 18785650, -3584687, -8661338, -8854075, -900333, 5019743, -1926293, 21657910, -14285061, --5597953, -4877472, -10875394, -622233, -3257733, 8247948, 5874442, -8688719, -1168768, 8605504, --8509404, -4275640, -2254321, 13609678, -7793218, 5880347, 9715216, -20775830, -7378754, 6484327, --20199768, 32344862, 11212549, 9054865, 19843822, 51882132, 6342056, -17064442, -13917305, -9760313, --1340030, -1247151, 780610, -982474, -2332704, -28693066, 300111, -5355824, -7051800, 4152160, --11755325, -4721243, 4992363, -7493108, 1966558, 9533217, -12513924, 8209830, -4810900, -5960878, --1316408, -5946919, 2758980, -5465346, -3474092, -6522445, -1642825, 483184, -416612, -3653944, --4670777, 1967095, 2085207, -4449049, 6663642, -7822209, -977642, -2697776, -1300838, -882079, --6951405, 9972377, 5457830, -8498667, 11065983, -352187, 2205466, -4267050, 10618233, -9947681, -621160, 1823214, 2669322, -850404, -2985002, 9050033, -5537824, 2230699, 246424, -555125, -2401424, -2357937, -660888, 5738613, -2426657, -733903, 4980552, -549219, -2274185, -3150896, -2643016, 4165045, -24603184, -41523208, 46290084, 153218656, 16207059, 34741992, -83122112, -128543000, --31609348, -67428304, 52617108, 106619344, 57036628, 35136052, -7486665, -42201812, -40380744, -31390306, --28053652, 9586904, 18800682, 9947144, 20191178, 1969779, 2073932, 7128572, 2723009, 8169565, -7520488, -5912023, -19109384, -15168214, -16792248, -24001888, -11845520, 12440373, 17423608, 30782568, -44944148, 15393163, 6885907, -15526307, -34828964, -34896072, -23405424, -17328046, 3810710, 12332462, -19291382, 19312858, 17380122, 10596221, 1717450, -2227478, -10838887, -8668318, -4594005, -6570763, --1852205, -7347616, -1513439, -8580271, -7058242, 1584306, -341987, 8527121, 16221555, 8198556, -23975044, 19763292, -10112500, -22558778, -20933670, -33113660, -8793409, -9854266, -1106491, 13064217, -7633768, -1311576, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-3154117, 690416, -2771328, -1715839, -1253594, -353261, -445066, -1789391, -5367636, -3997541, +-2841658, -1395864, -3881040, 1618666, -900333, 638876, -1604707, -575526, -2429341, 2540473, +501437, -1779727, -3200288, 312996, 3591667, 1978906, -3655017, -3510062, 656056, 300111, +410706, -2443837, 530428, -883690, -1581085, -469225, -1490354, -2250563, -1051730, -3828963, +4952098, 1385664, 3439195, -3332895, -5646809, -444529, 726386, -625992, -5243618, 306016, +-1304060, 3092913, 2091112, 2322504, 5333276, -921807, -187905, -1628330, -805306, 1934883, +-3631395, 4267050, 5105106, -2404645, -1676111, -4257387, -2229088, 862752, -1294933, -2566780, +281857, -2709588, -1395864, -3434363, -2870112, -3156801, 2104534, 6383395, 455267, 4291209, +-1053878, -557272, -2368675, 4565014, 2754685, -2595771, -3593814, 2321967, -995359, -5324149, +-6333466, 1521492, 193810, -2057289, -2243584, -4147865, 2546916, -4888747, 1125818, -448824, +974958, 441308, 906775, -2180233, -479963, 906775, 1250909, -474057, 1558536, 1295470, +-2371359, 1677722, -1518271, -4172561, 5760088, -1117765, 53687, 1449552, -979789, 3319473, +3961034, -874026, 1317481, 3191698, -13422, -3326452, -2867965, 874563, 1680943, -984084, +749472, 3918084, -3788698, -3038689, 2822331, 659814, -1718524, -2029372, -572841, 795643, +1913945, -3847754, 1330366, 1078574, -3729105, -3206730, 2043868, -1678259, -4968741, -1581085, +-1531693, 6293738, 5272609, -7813620, -3304441, -5403606, 3563212, -2643552, -3582540, -2507724, +-3205119, -689879, 1262184, 5833640, 1074279, -3175055, 5019743, 158914, 5174899, -4943508, +7981123, 3643206, 8653822, -1568200, -2853469, -615254, -4653597, -424128, -264141, -1731409, +1680406, 142271, -3675418, -923418, 64961, 1151588, 3805878, 852551, -5527086, -4676146, +-1687922, 3151432, 295816, 158377, -2754685, 4678830, -36507, 353798, -1921461, 611496, +-1121523, 2472291, -696322, 7813083, 166967, -994822, 3055332, -1931125, -3397319, -1408749, +2748242, 4747550, 893890, 2933463, 826781, 549219, -2350421, -2343979, -3833795, -93416, +-3972308, 1116692, 3489661, 3685082, 2665564, -1132261, -1646046, 3390877, 5618354, 5676873, +3284576, -192200, 4967130, -2788508, -3900904, 3762391, 4293894, 5023501, 7869991, 523986, +-4753992, 2641942, -4531728, -524523, 1714229, 909996, 8726837, 460098, -6774774, -542240, +1366337, 2675765, -370978, -2581812, -7486128, -1736777, 6577743, 1984275, 4362613, 4718022, +4246112, 886374, -613107, 4145180, -5549635, -460098, -3744138, 10015864, -463320, -22012, +4683662, -4149475, -512175, 1275068, -491774, 5798743, -865973, 1488743, 5968931, -1532230, +1926293, 83215, -206158, -484794, -695785, -2151242, 2623151, 2942053, -747324, 2899103, +1322313, 6196027, 7777649, -979789, 2148558, 659814, -3783866, 3150359, -839129, -3960497, +1482838, 2962454, 1202591, -1854889, 8439611, 8529268, -3437585, -4677757, -4333085, -2755759, +2028298, -9052717, -1018444, 1399086, -4516695, -8006893, 7776039, -1582696, -2103997, 1386201, +3525095, 3362423, -4140885, -1484448, -271120, -323196, 1794223, 2893734, -1631551, 3531000, +-2658585, 5352066, -721555, 319975, -2773475, 2873333, 935229, -696858, -2757369, 1367947, +-1598265, -2246268, -2041720, 558883, 1655173, -4871567, 357556, -9274445, -5473399, 3441880, +-1468879, 1188095, 2033667, 6223945, -2035278, -3048890, -262530, 241592, 2550137, 2529199, +-2921115, -1244467, 6773164, 270046, 1012539, 572841, 3007551, -5701569, 177167, 2825552, +5280126, 1031329, 2270964, 7927973, -1973001, -917512, -4336307, -164819, 1371705, 2499671, +-5361193, -8586713, 3718905, -2863133, 235686, -4471061, 3467649, -9917616, -7998840, -9365176, +-3059627, -2071248, -6411313, 3188476, 8904004, -6637872, 1411971, 10271414, -2365990, -2967823, +-4749160, 706522, 1611, 4461398, 1529545, 3158949, 2339684, -3544422, -6592775, -3312494, +3951907, -2416993, -4038880, 834297, 1664300, 1103807, 828392, 8844411, -4287988, 4711579, +-2379412, 2247342, -2661806, 7291781, -5638219, 2823941, -500901, -4737349, 4125853, -1937030, +-1532230, 4198868, 2331094, -692564, -2046552, 3757560, 1941862, -4540854, -5107253, 3083250, +5481989, 2749316, 38655, -2829847, 186294, 3115999, -1632625, 3827890, -1115618, -9230958, +170725, -4361540, 12349642, 3801046, -7107097, -4466766, -994822, 39728, 3587372, -7589744, +-8516920, 7243463, -1286343, -7580618, 938450, -2243584, 7712151, 3274913, -1563905, 961536, +-61203, -1528472, -1022202, 8144332, 1968169, 9127, -5583458, -3143916, -1106491, 2528662, +4023311, 11057930, 529355, -130460, -127238, 259309, -4866735, -314606, 2298881, -6878390, +-4275103, -4671314, -347355, 7844758, -6713571, 550293, 3995930, 1029182, -3088082, 2851858, +-8465917, 6322192, -1427540, -712965, 3878356, -5077188, -5028333, -8647380, 1702418, -3379066, +7473780, 1758252, 172872, 548682, 2234457, 4939750, -2650532, -2249489, 6023155, -2269890, +-3609383, -1202591, 5961415, 5054640, 5456756, 1827509, -4012036, 2284386, 4811437, -7547868, +7352984, -6482180, -4917201, 4703526, -16230145, -10058277, 2429878, 5478231, 10462003, -6215892, +5444408, 1475321, 5756330, 81068, -3223910, -3326989, 3420942, 11625403, 591095, -584116, +-11065446, -8559870, -292058, -6183679, -4220342, 788127, 1010391, -6345814, -2355253, 2045478, +3636227, 2523830, -4690105, 396211, 4723927, 4514011, 543313, -3731253, 464393, -2123325, +927713, 1824824, 2027761, -2779381, 3727495, 10188199, -1258425, -321049, 1645509, -5045513, +2334315, 8278550, -7988103, -8755828, -4946729, 1155346, -12048994, 687732, 165893, 2042794, +-36507, 207232, -5756330, -2660732, -3754338, -135291, 8002061, 12259447, 312459, 1119376, +5833103, -2119566, -914291, 2983929, 13554917, 1940252, 5071820, 9587978, 2117419, -6078453, +3155727, 8653822, 4621385, -7028177, -818728, 16684874, 13802951, 3542274, 8133595, 11191611, +2207613, 382789, 6519224, -2622615, -402653, -5803575, 4714801, 121870, -222265, 2904472, +2283849, 9368397, -7900593, -6188511, 6240051, 1963337, 2582349, -4685810, 460098, -1241782, +2961917, 667331, 4352950, 5400385, -5368172, 4682588, 2856153, -4931160, 13810467, 3178813, +2252710, -10434623, -4119411, -186294, 8731132, 9392557, -1462973, -8796630, 5639829, -7525320, +-3195456, 8078297, -848793, -5050882, 6440841, 9800042, -2961917, 3923453, -4312147, -11553462, +-682363, 9039832, -4486094, -3200825, 4434554, -4844723, -10016937, 3520800, 5213554, 12642773, +4858145, -6893960, 2395518, -8128226, -12927852, 12965969, 3749507, 6914361, 17204566, 10358387, +-6838125, -2385854, 175020, 2555506, 2834142, -1428077, -6078453, 1235340, -3999152, 6639483, +732829, 2361695, -1751273, -1354525, -6297496, -3947612, 14994805, 4479114, -8211441, 3886946, +-7988639, -6334540, -12817256, 5593121, 870805, -29528, 3852586, -598611, -5404680, 9922448, +6513318, -2437394, -9473624, 10040560, -6245956, 2525978, 529355, 3192235, 2842732, 6356552, +8351564, -1877975, 5039608, 11768210, 2448131, -3821447, -2437931, -2178622, 2848637, 7874286, +-1132261, 3187940, 1720134, -7277822, 1427003, -1775969, 4750234, -10887205, 1087164, -18145700, +-9701794, -10056666, -1149441, -9893994, 8268349, -2308545, -6691559, -1967095, 813359, -6367826, +-1025423, 287226, 2768643, -3136937, -6251325, -11173894, -14638859, -6475200, -9843528, 25006910, +-12280385, 5895917, -11623255, -2961380, 884763, -1556389, -17191680, -88584, -8344585, 851477, +19536732, -6119255, 7994545, 11164767, 3600256, 4661114, 11591043, 3757560, -5021354, 3583613, +4310000, 5215164, 1756642, -2328946, 13518410, 670015, -1517197, -2208150, 3365107, -1083406, +-5255430, 4793721, -2212982, 3443490, -13901735, 608812, -3038689, 12215961, -5252208, 3936338, +17830556, -1613297, -70867, -4507568, -8013872, -506806, -1705102, -7831873, 9238475, -2224256, +6568079, 582505, 6170795, -4061965, -1206349, 14371497, 6653978, -11628624, -6441914, 2765422, +3002719, 1358820, 2594160, -3752728, 3599183, 4853850, 11578695, -16179142, 343597, -7379291, +2543695, -1324461, -2458869, -3385508, -8622684, -6808060, -8344048, 9065065, -16994648, -4346507, +-10800232, 5708012, 16747151, -8782134, 103616, 1062468, -3751117, 7206419, -5901285, 3262565, +-2078764, -6451578, 14958834, 1392106, -5329518, 862215, -2562485, -6117107, 5034776, -4518843, +4721780, -9007620, -4784057, 7238094, 4537633, -15478525, -3154117, -13057237, 3880503, -1561221, +-13475460, 16935592, -4716411, 468151, -12446278, -12653511, 628139, -11308112, -1719061, -9635222, +-9061307, 11457899, 1082332, -12737799, 4412542, -11278047, 10844256, 4887673, -5278515, 1405528, +3526168, 12454868, -8777303, -11444477, 12766253, -7727720, -4884989, 7796440, 9770514, -16513612, +-8438000, 11355894, 7868380, 5233955, -442919, 2578591, -12103218, 8652748, -13242995, -21009370, +-17374216, 7925826, -20733954, -796180, 15263777, -1188095, 846645, 11317776, -7670275, -6132140, +24391656, -9612674, 5483063, 9539122, -2040110, -22228604, -2165737, 2488934, -5935645, -2981244, +-5523328, 20979304, -124554, 332860, -1358820, -14950244, 2414309, -8585103, -4694400, 994285, +2163590, 4499515, 11762842, 2721936, -3488050, 23862302, 2139968, -5899675, -22184042, -3201361, +15612743, -3508988, -10397579, -13476534, -12218108, -10170483, -6756521, 16865262, 6183679, 854162, +9008157, 14025216, 7474854, -3261491, -2924336, 14445049, -3340411, -4729296, 3795141, 10929618, +1121523, -11824582, 2155537, -1520418, -17721572, -1709934, 13149042, -7250442, -8499203, -2458869, +17751100, -15231565, -3744138, -8268886, 17121888, 1996086, -15733539, -312459, 4436165, -288300, +-7272990, 7013145, -5422396, 14099304, -10801306, 9791989, 20568062, -5294084, -5681168, -4559645, +-4459787, 18852758, -13853417, -14728517, -11626476, 4562329, -6111202, -9334038, -4561792, 7035157, +-9388799, 5543192, 1149441, 7670275, 10726144, 1745367, -1423245, -1640678, 10597832, -2298344, +3737159, -12577812, -122407, -4177930, 10371272, -13372918, 11390790, -4299263, -7103339, 11943767, +19883552, -10644540, 5705864, -1947231, 4097936, -29259464, -23527830, -13792751, 2166811, -8547522, +4039417, 1518808, -10937671, -8188892, 1101659, 24293408, 5749888, -14247480, -21955872, -11135776, +-7992398, 15062450, -9901510, -13938243, 3642669, 3557307, -13123809, -589484, 6979, -6690486, +3687766, 29661582, 19683836, -5338108, 2111513, 19082002, -7501698, 408559, 8396124, 20635708, +12343736, -3939022, -4605816, -7545184, 1912334, -4318590, 330712, 173409, 22000970, 36049272, +-2180233, 24732032, 15795279, 2836826, 3836480, -18342194, -17900886, -2470680, 4539781, -1749125, +4156455, -7169911, -13539884, -22945862, -2206003, -14959371, -12531104, -8623221, -13002477, -9631464, +-898722, 20281910, -1109712, -16395501, -1828046, 3915400, 14924474, -5457293, -4532264, -10056129, +6357626, -28986734, -26221312, -12890271, -13514651, -14256607, -9141301, 8417062, -12421045, -16519518, +-14411226, -24387362, 11060615, 5939403, -22366042, 10285910, 20010790, 41363220, 21642340, -656593, +6095633, -24311126, -11458436, 13065827, 9459129, -5301064, -31964220, -1854889, 48485348, -2574833, +637266, 13422847, -19305878, 11177116, 33972116, 33469606, -34047280, -30477624, -1280437, -33168958, +-14213657, 864899, 2612951, 13334800, 17381732, 17397302, 27838904, 7745437, 10101226, 12461311, +-6371584, -1287417, 1722282, 4630512, 7143605, -14920716, 33605436, 15795279, 14855755, -2353642, +34097744, 5105106, 19903952, 9567040, 5105106, -7765301, -7102266, 18796388, 5316633, 9041443, +-20870856, -9689446, -17734994, -8805220, -13396540, 461709, -24982214, -24708946, -3274913, -9234180, +-49364744, -34934192, -33880848, 9576703, 32806034, 45302780, -26644904, 31357556, 46268072, 8627516, +2239826, -2631741, 31333398, 2999498, 28265716, 13440563, 12499429, -19236622, -67281200, -51207820, +-12307766, 439160, -4864051, 25325274, -6584185, -42319924, -5140002, 70458936, 11323681, -11801496, +16489990, -4583804, 10218264, -4431870, -8960376, -21728776, -10066866, -1428614, -5340792, -9898826, +14824616, -13809394, -17504140, -128849, 901943, 15446313, 4845260, 4893042, 4468914, -5055714, +-1638530, 22501870, -12882754, -25026774, -7032472, 3027952, -10633802, 18756122, -11395085, -5393942, +13173202, 4912369, 9391483, -26089242, -32200980, 10546292, -8016020, -9720048, -15161771, -15427523, +-35465156, 485868, -5360656, 11382200, -23744726, -43924632, 30438970, 9299141, 28332288, 3569118, +-12955232, -9361955, 5029944, -16751446, 22550188, 4879083, 27507654, 21176336, 42267312, -5215164, +-48172352, -35322884, -23926726, 23900420, 20608864, -21805012, 14681272, 35783520, -29113972, -37147172, +38476464, 50758996, 9535901, 1687385, 11984032, -8504035, 22972706, 11868605, 23964844, -5437966, +-24239184, 54287312, 806917, -21383568, 3013457, 36457828, 17474612, 6555731, -23132694, 1808718, +-12209518, -9966472, 4067334, -18291192, 1837172, 3943854, 21466246, -30790620, -4804458, -4383551, +18127446, -7579544, -10839424, -11344619, 74625, 10586021, -23153094, 907849, 6300717, -48536888, +6698002, -13727789, -33573224, 21347598, -24831354, -44394392, 57607324, -1203128, 3292629, -5279052, +-16112033, 34055332, -24730422, -2983929, 4985920, -16496433, -1546188, 43365748, 22407382, -39240968, +-42306500, 40975600, -20188494, 23848880, 39177080, -35700304, -61954368, -42264624, 70080984, -3630858, +-56396680, 51933132, -38074348, -68276024, -2396592, 63445256, -3219615, -22526566, 35526896, -5509906, +9244380, 26124138, 15031312, 20288888, 42145440, 21230560, -13131326, 9047349, 8676908, 16513076, +-18349174, 44710608, 38029252, 7647726, 11647414, -7821136, -2360085, -41515152, 17667348, -20941186, +13147432, 300111, -18409304, 25705916, -11817066, -15509664, 7012071, -22750978, 14053133, 2870112, +-7227893, 9069360, 7796977, 17680770, 13266617, 17325898, 42591044, -2120103, 2299418, 16653736, +27777700, -558346, 5389647, 2620467, 21061446, 30845918, -12001749, 9489730, -4100083, -1807108, +-54524072, 7072738, 19050328, -9245454, -15656230, 14729053, -24609626, -28483686, -326954, 21984864, +34861176, -44802416, 15355045, 2180770, -4919348, 5591511, 15406048, 47440060, -3367254, -21990770, +5087389, 44297756, 23466090, -44339096, -34619048, -549219, -53385368, -18246094, -19746650, 41193568, +-1171452, -15111842, 18953690, -9590662, 10546829, 2799782, -20286204, 24452860, -54895588, -5096516, +3483219, -13625247, 10314901, 2590402, -10530723, -1819456, 1855963, 14002667, 1109712, -15982110, +-53061636, -38778184, -29298656, -14596446, 33495376, -6548215, 1703491, -53291956, 4519380, -3563749, +-6665253, 1847373, -51037632, 27837830, -24375014, 12898324, -9474698, 35360464, -18331994, -33914136, +-15410343, -121333, 26622892, 46716360, 50116900, -60153700, -43282532, -30612380, 22339736, 49780280, +61731564, -10239202, -13091060, -52564496, -17331266, 47299936, 31339840, -229781, 3078418, -714038, +-40962712, 30363808, -4472672, 29457034, 75491568, -77176808, 102184792, 27326192, -40305048, -44378288, +36662376, -21905406, 22435836, 12211666, 14058502, 8639327, -28771986, 31398896, -4904316, -10879689, +-10492605, -12091407, 9280887, -6226092, 13321378, 8339216, -2032593, -2995203, -24093156, 14127758, +5410048, -5850819, 5078799, 12856985, -3808026, 7421167, -12332999, 14601815, -5539434, 2128156, +5624797, 6382322, -6558415, 22365506, -1033477, -20435992, -1536525, 9874130, 4574140, -15556372, +7584376, 18785650, -3584687, -8661338, -8854075, -900333, 5019743, -1926293, 21657910, -14285061, +-5597953, -4877472, -10875394, -622233, -3257733, 8247948, 5874442, -8688719, -1168768, 8605504, +-8509404, -4275640, -2254321, 13609678, -7793218, 5880347, 9715216, -20775830, -7378754, 6484327, +-20199768, 32344862, 11212549, 9054865, 19843822, 51882132, 6342056, -17064442, -13917305, -9760313, +-1340030, -1247151, 780610, -982474, -2332704, -28693066, 300111, -5355824, -7051800, 4152160, +-11755325, -4721243, 4992363, -7493108, 1966558, 9533217, -12513924, 8209830, -4810900, -5960878, +-1316408, -5946919, 2758980, -5465346, -3474092, -6522445, -1642825, 483184, -416612, -3653944, +-4670777, 1967095, 2085207, -4449049, 6663642, -7822209, -977642, -2697776, -1300838, -882079, +-6951405, 9972377, 5457830, -8498667, 11065983, -352187, 2205466, -4267050, 10618233, -9947681, +621160, 1823214, 2669322, -850404, -2985002, 9050033, -5537824, 2230699, 246424, -555125, +2401424, -2357937, -660888, 5738613, -2426657, -733903, 4980552, -549219, -2274185, -3150896, +2643016, 4165045, -24603184, -41523208, 46290084, 153218656, 16207059, 34741992, -83122112, -128543000, +-31609348, -67428304, 52617108, 106619344, 57036628, 35136052, -7486665, -42201812, -40380744, -31390306, +-28053652, 9586904, 18800682, 9947144, 20191178, 1969779, 2073932, 7128572, 2723009, 8169565, +7520488, -5912023, -19109384, -15168214, -16792248, -24001888, -11845520, 12440373, 17423608, 30782568, +44944148, 15393163, 6885907, -15526307, -34828964, -34896072, -23405424, -17328046, 3810710, 12332462, +19291382, 19312858, 17380122, 10596221, 1717450, -2227478, -10838887, -8668318, -4594005, -6570763, +-1852205, -7347616, -1513439, -8580271, -7058242, 1584306, -341987, 8527121, 16221555, 8198556, +23975044, 19763292, -10112500, -22558778, -20933670, -33113660, -8793409, -9854266, -1106491, 13064217, +7633768, -1311576, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, { -6125697, -1522566, -2790655, -7104950, -2758980, 654983, -1326071, 2278480, -3286187, -1293859, -2513630, --1180042, 1643362, -267899, -94489, -1381369, 2288144, -5952825, 584116, -3075197, 2193655, -1506997, -3591667, 671089, -427886, 933619, -1331977, 1057099, -3933116, -2491081, 5079336, --1430761, -1890859, -2262911, -654446, -1429687, -512175, -3594351, -411243, 4619774, -987843, -863825, -95026, -1367947, 6444599, -1275605, 3697967, 4507032, -292595, -1640141, -1067836, --3859028, -3624416, -3997004, -4694936, -2481954, -3256659, 890669, -3137474, -907849, -1837709, --270046, 820876, -3737159, 3806415, 811749, 1660542, 3340948, -3020973, 1801202, 3497177, --3479997, 736050, 2767570, 1246077, 1465658, -6023155, 3957276, 6521908, 1672353, 5761162, -65498, -5881958, -4111358, -4276714, -706522, -2928631, 6893960, -5156645, -1357210, -2327336, --870268, -4131759, 3954591, -2426657, -1964411, 3387119, 5529771, 6334003, 923418, -428423, -1261647, 357556, 837519, -2832531, -3129421, 1525787, -2845416, -2769180, -3802120, -3911105, -1134408, -2583423, 3411815, -4320200, -662499, 1935957, 1745904, 1626719, -6813429, -1188632, --3819837, -629750, -1657857, -4087198, -180389, 4921496, 1389959, 2399813, 2145336, 2668249, -220654, 3341485, 1966021, 3726421, -2236067, 2491081, -1365800, 1723893, 35970, -3415036, -3830037, 4537633, -2623151, -3037079, 1117765, 4161823, 742493, 1105417, -1688459, -282931, -1895691, 1427003, -159451, -10110890, -2695092, -4542465, 3326452, -9475235, 2054068, -4157528, --2243047, 1382980, 158914, 1098438, 1392643, 1108102, 4097399, -1796907, 403190, -378494, --5048734, 3740380, 6155225, -4990752, -4751308, 3632469, 896038, 4475893, 1377611, 5998996, --853088, 2054068, -3178276, -909996, 6043556, 536871, -3985730, -4831302, -5302674, 279173, -4344360, 2277407, -54224, 5034239, 3938485, 219580, -4092567, 6426882, 1597728, 4974646, -4960151, -799401, 3150359, 3831111, -482110, 2298881, 2545842, -2389613, 482647, -678605, -2416456, -5495948, -3607236, 1901060, -3490198, -1232656, 4759898, -1833951, 2600066, -1014149, --7555921, 1380832, -71404, 4065187, -6229313, -3222836, 2770791, 802622, 6448357, 6669011, -3034931, 4918812, 3965866, 6685117, 7766375, -2916820, -743566, 2533494, -7595650, -308701, --2443837, -1513976, 3608846, -4517232, -427349, 5640366, 1149978, 3603478, -1698660, -1353452, --1806571, -7256347, -1072131, 460635, 3935801, -1189169, 6694244, 2566243, -1010391, 2607045, -1493038, 3360812, -2307471, -524523, 7816841, -1037772, 7398618, 3396782, -3029563, 758062, -6545530, 3325915, -4046396, 5827197, -1423782, 403190, 484258, -1160715, 1307818, 666794, --5064304, 3384434, 2666638, -421444, 415001, -1134945, -4518306, 54224, 2927020, -484794, --287763, -3128884, -6696928, -2312840, 2928094, 5983427, -8555038, -4609574, 2079838, -3696893, -2771328, 100395, 571768, -4893579, 9466645, 9973988, -1957431, -4238059, -4541391, 9563818, --8287677, 189515, -1314797, -3922379, -5230734, 1840394, -1404991, -7220377, -8698919, 299574, --613107, -4599373, 1697586, 2394444, -3171833, -4871567, -4478041, 6361384, -6853157, -855772, --8017094, 73551, 4522601, 1510755, 803159, -4533338, -4313758, 3942243, -3023657, -4626217, -599148, -1685238, 2847563, 56371, 1158567, -4600984, -1692217, -1290101, 4424890, 3045132, -3069828, -9097814, 1428614, 2568391, 2057289, 2603824, -2638184, -1618666, 273267, 1900523, -3535295, -561567, 2288144, -2561948, 6918119, -12679817, 4330938, 474057, -6995428, -159451, -7256347, -2113661, -3853123, -6653441, -2745558, 773631, -2495376, 296353, 2212445, 4319664, --4505958, -14098767, 2543158, -6406481, 1378685, 1222455, -851477, 10073846, 522912, -6373732, -8538932, 4176319, 2912525, -1239635, 1746441, -2558727, 6689949, -1061931, 736587, 10177462, -9851044, 4287451, 4496294, 4414690, 4890357, 3350075, -9790378, -2979097, -164283, -2492155, --8338142, -836445, -1999307, -2110977, -4493073, 3758, -1340030, 7245610, -2324651, 12637941, --106837, 1168231, -2354179, -1694902, 62814, -231391, -1036698, -2051384, -1502702, -5989869, -1461363, 1173063, -768262, -2993055, 4254702, 3379066, 3683471, -1080721, -2724620, 323733, -3207267, 3791383, -2855080, -7703024, -4125853, 1236414, 6667400, -491237, 5455682, -3824669, --6307697, 5357435, -2179159, -4333085, 3089155, 4386772, -5557151, -3619584, 5279052, -6244883, --6650757, 3143916, -1852205, -663036, -3461207, -2123861, 3519189, 4794794, 2622078, -1217086, -813359, -672699, -1058173, -4746476, 1633698, -12639552, -3574487, -4097399, 3528316, 4196720, -425202, 2024003, -7747048, 2013803, 1267015, 1997160, -6980396, 13167833, -537945, 2330557, -1807644, -6438156, 1054415, -9175661, 5852430, -2092186, -7483444, 1340030, 641561, -3979824, -477278, 617402, 6029597, 10505490, 4716411, -2411624, 3549791, 4148939, -9904195, -3948686, --4487704, 2476586, 2379949, -1988033, 1686848, 3118683, 2333778, 4086125, 8505109, -238908, --2956548, -1342177, -168041, 6030134, -4495757, -595390, 3328063, 8142721, 427349, -6762426, --5179194, -1584843, -6038187, -2279017, -12999792, -3563212, -4802311, 5565741, 211527, -2671470, --16678432, -2188823, -2199023, 6951405, 16593606, -4728222, 11175505, 1957431, -9710384, -9939091, -1823214, 2604898, -5587216, 6339909, -4381404, 5132486, -6096169, 3104725, 2290828, -5815923, --4820027, -3689914, 2143189, 6592238, -8245801, 441845, -8662412, -359704, -3143916, 2308008, -6729677, 834297, -2531346, -2318746, 7306813, 148713, 11007464, 3461207, -3686156, -3691525, --2724083, 1724966, 7108171, 63888, 11550778, -19586124, -14131516, -11595338, -2226404, -9849971, -1205275, -3557307, 4184909, 9234717, 2272038, 3973382, 6490233, 9778567, 5698348, 1726040, --5660767, -16108275, -16236587, 9558450, 1838246, 12068858, -6899865, -5712307, 7117298, -11788075, -3459596, 8360154, 2915746, -5741835, -685047, 15454366, 12154221, -663036, -11468100, -17971754, --2626909, -5981279, 6089727, -5033165, -5973226, -20422570, -9502078, -18240726, 6392522, -112206, --5094905, 5493800, -1185411, 612570, 826244, -5519033, -2147, -6415071, -1763084, 4693863, -2586644, -6556805, 1999307, 7687992, 11170136, -1282585, -2185065, -3409130, 116501, 6567005, -8081518, -756451, 719407, -1381906, -2057289, 10763725, 6920266, 773631, 7150584, 2704219, --10040560, 2248416, -1535988, 12697534, 4194573, 1988033, 5309117, 8378408, 1577864, -6567005, --12589623, -2358474, 1862942, 6803765, 2629057, 754841, 1837709, 9810242, 1397475, 3350075, -3648575, 2736968, -6867653, -6842420, -6810745, -6980396, -7097434, 9822590, 26246008, 5699959, --8055211, 4629438, -4687420, -15602006, -3132642, -15315853, -8347269, 7807714, 10516227, 3973382, -2166274, 790274, 1943473, 9863392, -7085623, 13990319, -9130027, -9415642, 11253888, 4862977, --18187040, 7800735, 4627291, 5602248, 11964705, 5737540, 8889509, -790811, 4806606, -3044058, -7572564, 1786706, 1590749, 4852240, -10290742, -5775121, -3197603, 6312528, 2791192, 2087891, -5144834, 1237488, 1764158, -9559523, -8053, 9705552, -1916629, 901406, 1131724, 940061, -11833172, 4245575, 15949361, 3326452, -2500745, 14909442, -13423920, -2164127, -2355253, -5745056, --1515050, 2696703, 14833206, 901943, -3653407, -6511171, 2628520, -6875706, -3286187, -4738960, --9124121, -2187212, 1124208, 11897596, -2909304, -10002442, -13974750, -5817533, -13748727, 9718437, --11644730, -9556839, -6619619, 5935645, 16963510, -17187922, -5318244, -19299436, 5953362, 2049773, -2348273, -5948530, 2057826, 20525112, -10437844, -2422899, 8593156, 4883378, 4789426, 6845104, -5559835, -7517267, -11099269, -2773475, -5861020, -9437117, -10182294, -419296, -1874216, 2066953, -14601815, 8220031, -7154879, -4843650, -188442, -4666482, 4115116, 25876642, -8279623, 17848274, -6529961, 2450816, -454193, -3670050, 3909494, -10843719, 5668283, 13683229, 1449015, 1565516, -12395276, 6714108, 5375689, -10507637, 9091372, -6626598, -7626788, -24296630, -6269042, 14266271, --7459822, 2919504, -15174119, 10663867, -4747550, -7770133, 11973295, -17934172, -10146323, 16694538, --10631655, -15522549, 1539746, -10394895, -8083666, -884226, 11839077, -5513665, 20955682, 19891068, -3661460, 6496675, -11659762, 1602560, -9487583, 14976551, -3190624, 4543002, -7300371, -4386772, -2276333, 2180770, -7031399, 11523397, -3460670, 2592550, 3969624, -7237020, 2544768, -9283572, --232465, 5588826, 6176700, 353798, 8249022, 10983305, -1103270, -19963544, -3701188, -5746130, -14134201, -11955578, -15468862, -10555956, -7560753, 2369211, -8920647, -6456947, -4664872, -934155, -2306398, -29248728, 18319646, 14926622, 20928302, -6369437, 3043521, 14714558, -14025216, -12145631, -2113661, 9881109, 5734855, -972810, 2483028, -6746320, -9293235, -10522133, -3714610, 40351756, -2820183, -20587388, -4181151, -10416369, 7362111, 7919383, -13329968, -6106370, -10813117, -22126060, -2230162, -18522046, 9053254, 2587718, -14084272, 7929584, 10041634, 12933220, 4410395, 4963909, --14549202, -543850, -2377265, 13911936, 7250979, 435939, 13917305, 14555644, -1029718, -7183333, -2458332, 18040474, -11005854, -9443022, 10200010, 5054640, -11135240, -2696166, -10198400, 20761336, --16751983, 4948339, 12048994, -6624987, 11201275, 3741990, -3963181, -5266704, -4299263, -8304856, -12824235, 15843061, 4386236, -11793443, 2568927, -13009456, -3667902, 8929774, -180926, -6250788, --3300682, 2599529, -16018081, 967978, -122943, -9684078, 15622407, -13014825, 1053341, -2496987, --7920994, 11359115, 1457605, 6983080, -2588255, -87510, 2189897, -5296232, 8105140, -4541928, -2543158, -4068408, 20269562, 9120900, 20282984, -558883, -13234405, -7516193, 9788767, 12549894, -16070157, -787053, -2286533, 19541028, 10276246, 21851720, 4000762, 597537, -10019622, -5989869, --5484137, 4783520, 4488241, 11124502, -13267691, -474057, -7459822, 6230924, -11379516, 3246459, -14880988, -3593814, 639950, -8755828, 2998961, -8829379, -23767276, 1809255, -2800319, 97174, --10080288, -4094715, 10660646, 17026324, -979789, -8531953, 11841762, 3348464, 3584150, 11068668, -5396627, -8749385, -2402497, 6398965, -280247, 5613523, -8223789, -10128607, 3616363, -9716827, --13763223, -8932458, -15822660, -6008123, 6280316, -15440944, -1227287, -17512730, -5967857, -2839510, -6357089, -20757040, 8140037, -1889249, -10443213, 9698036, -4881231, -594853, 22812182, 21646636, -67646, 32029718, 36687612, 1996086, 11781632, 11346767, -1489817, -26268556, -614180, -909996, --9897215, 7619272, 7045357, -14164802, 7999914, 10284836, 1865090, -3571802, 5699422, -3390340, -18951006, -2903398, -8449274, 450972, 4575214, -1403917, -868120, 46171, -29386704, 9008694, --239444, -20142322, -8054138, 4022237, -1412507, -13533979, 5440113, -16034724, -879931, 2171106, --25894358, -4181151, 12124693, -7928510, 2023467, 17382806, 11120207, 13471702, 4911295, -6539088, --11408507, 13463112, -5501316, 7878044, -10609643, -5402532, 9751723, 15101105, 3507378, 17951890, --9955734, 15647103, -10852309, -14331232, -8898098, 15579994, 17643726, -13569412, 9876277, -38866232, --713501, 12066711, 7198902, -6148246, -11143293, 6325413, -27980638, 1129576, 36884644, -25266218, --1272384, -3113851, 2913599, -10609643, 5586679, -16317118, -14665703, -6186901, -3277060, 2769717, --2940442, 7143068, -10744934, -634581, 24078124, -19938312, -15691126, -5074504, 21195664, 1793686, --24283746, 9735617, -8378945, -11846594, 3519189, 33725692, -18544596, -11933030, 25755308, 17294760, -2611340, -11263552, 1701881, -4834523, -6828461, 6053757, 7501161, -5236102, -19002010, 24668144, -13125420, 3849365, -26220238, -5182952, 9574556, 8451959, -2279554, 13373991, -1175210, 3918084, --5085778, -17385490, 11926587, -12649752, 8296803, 2764885, -13091597, 26370562, 5576478, 18808198, -21133386, 2785286, -27960238, -6297496, 2042257, -12234751, -3976603, 820339, 1343788, 12855374, -26875758, -6376953, 10804527, 1929514, -10687489, -51171852, 2997887, -13054016, 1387811, 26224534, -2075006, -4578435, 4311611, 1399623, -17909476, -18500572, -17424682, -15943992, 20875688, -3859028, -24992414, 2654827, -24385214, -442919, 2246805, 20948166, 3647501, -2923799, -4484483, 6265821, --13316009, -4554276, 22327388, -4241280, -29912836, -22152904, 13073880, -2542084, -6531572, 7170448, --2512556, -14821395, 4192425, 9312026, 20075214, -3745748, -17373142, 606127, -21805548, 8612483, -23881628, -3520263, -30135102, 9727564, -697395, 2021319, 6831683, -9041980, 17992692, 1695438, --12670154, 9913321, -6978248, -3860639, 25924960, -13168907, -4716948, -4208531, 16335908, 6753299, --29040958, 14711874, -23306104, -5716602, -12384001, 2563559, -7151658, -8141111, -1053341, -25713432, -5702643, 41075456, 27654220, 11902965, -20044076, 14993194, 20161650, 28477780, 14606110, 2989834, -1685775, 17711908, 31964758, -7450158, -3103114, 17344152, -34287796, 12393128, 32009318, -6811818, --10032507, 7798587, 25082072, 19247360, -12212203, -22654342, -431107, 11005854, -2873870, 2480881, -1315871, 26039850, -13996762, 16628503, 26427470, -10328859, -1995012, 17784922, -1566053, 62743568, --25192668, 11226508, 44246216, -24843164, 9394167, 2842195, -33552284, -1090922, 7905961, -15360414, -35580044, 2638184, -3155190, 2746632, -12584254, 46911780, 14594836, -37324876, 37963216, -14907831, -3221226, 11363947, 15421617, 24322400, 13801341, -6126771, -21232170, -31126164, -9518721, -12204150, -238908, -9258876, 22233972, -11812234, -18814642, 1631014, 10715943, -48797272, 28614682, 863288, -17478906, 27666568, -45935748, 10206990, 24340116, 5020280, 18289044, -18244484, 20095616, 5352066, --17693654, -86973, -10959146, -34314640, 19157164, 10250476, 31586264, -17503602, -22221088, -8261907, -7832947, -5022965, -37956236, -19285476, 12411919, -3134789, 6347962, -16499117, -4438849, 12592307, --10242423, -5621039, -15810311, -4025458, 6642167, -18366354, 2594697, -39908836, -32048510, 10038949, --33339684, 2921115, -34884800, -24981678, -16407312, 16814796, 34089692, 41060424, -8825084, 18372260, -23124104, 11000485, 10610180, -15552613, 46654620, 46933792, -30438970, 32265404, -23587424, 16689169, -34128348, 32022740, 39517456, 46418396, 33950104, -34428456, -23260470, 1737314, 3800509, 16239271, --4610111, -3490198, 60345364, -44334800, -21859236, 23060216, -13649943, 21966610, -17213692, -20235738, -6954089, -47012176, -1800128, 30455076, -7260642, 15266998, -26356066, -7327751, -10304163, 217433, -33398740, 9166534, 7509214, -6868190, 18332532, 4882841, 45467060, 10131828, 26527328, 789737, --20760798, -20766704, 26362510, -14074608, 12114492, -1547262, -34257732, 23228256, -30583388, 57577256, --44236552, 25331180, 23754928, -26875758, -21573084, -17397302, 21399674, -3485903, 22354768, -2226404, -2456721, -42424612, -22275312, 7179038, -20500416, 4196183, -12842489, 9302362, 5894306, 28238336, --19361712, -9337796, -8914741, -18462990, 40830108, 4184909, 2603287, -43128988, -14220100, 16572131, -10650982, 8293582, 34331284, 17308718, 29721174, 29836064, -4155381, 6698002, -19644644, -89491552, -61929672, -38069516, -28145994, 1551020, 11978127, 17095580, 1990181, -13595719, 47938276, 25670482, -5850819, -23598698, 15032922, 45097, 17198122, -22492206, -17220134, 13392782, 35450124, -41024452, -573915, 14484240, 3273839, -9405442, -7427072, -4357245, 406948, -1191853, 8136279, 47038480, -1583232, -19852412, 29544006, -6238977, -31476204, -37631428, 35223564, 13091597, -6784438, 14796162, -6752763, 31750546, -43421584, -3241627, -23100482, -4796942, 21686900, -16256988, 7056632, -18880140, -7404524, 64909840, 2303713, -34901440, -43495672, -978179, 16555488, 20715164, -19474456, 5695127, -27536646, -11113228, -63534916, 36134096, -24685324, -31863826, 10457172, 59134720, -44241384, 31227634, -33861524, 16607565, -40893996, -25109990, -25437480, 51672752, 17278116, 3221762, -3608846, 7997229, -14785425, -4887673, 6989523, -8102456, 97174, -6463926, 24530168, -27608050, -2916820, 16075526, --37834368, 12011413, -9128953, 2573222, -4313758, -10929081, 6916508, -3242700, -15349676, 41302552, --31648540, -9259413, 29655676, -19269908, -2794413, -6310918, 6599754, 28889560, 2369211, -28868622, -39182988, -21474836, 14018236, 24001350, 10941429, -9461813, 2245731, -21840446, 5338645, -13371307, --10137733, 51993264, -12069395, -21231098, 6926172, -10099079, 12550968, -8477192, 13785771, 33367600, --18370648, 10853919, 25922812, -30522186, 14087493, 16242493, 7814156, 20446192, -23128936, -6266358, -36461052, -24799678, -4852776, 10495289, -9212168, 34827352, -32868310, 6730751, 14233522, -14040785, -15199889, 15695958, -30044906, -78913584, -125615984, 10678362, 116809152, 8474507, 266435616, 275957568, -134877008, 288296992, 189871376, -43626132, -9072045, -68091872, -239189408, -209839216, -133089760, -244179088, --193873216, -60613800, -124914832, -105086576, 26050050, 50784232, -37904160, 6602976, 42063836, -50005768, --34875672, 63314796, 53419192, -3963181, 60163364, 112608672, 27622546, 76939504, 155897648, 67514736, -26968636, 137478144, 110531520, -73551, 73077792, 161175632, 15161771, 22280142, 123206504, 40891848, --39371428, 79200272, 71367864, -34455840, 57970248, 82851528, -31707060, -110922896, -70146480, -222823984, --349264608, -315122816, -336399008, -494227808, -451002176, -426023712, -512009504, -500549984, -423244864, -389259328, --360098112, -237003280, -135062224, -14229764, 46017892, 153234768, 263588592, 284531904, 321910496, 359044768, -146011168, 19289234, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +1522566, -2790655, -7104950, -2758980, 654983, -1326071, 2278480, -3286187, -1293859, -2513630, +-1180042, 1643362, -267899, -94489, -1381369, 2288144, -5952825, 584116, -3075197, 2193655, +1506997, -3591667, 671089, -427886, 933619, -1331977, 1057099, -3933116, -2491081, 5079336, +-1430761, -1890859, -2262911, -654446, -1429687, -512175, -3594351, -411243, 4619774, -987843, +863825, -95026, -1367947, 6444599, -1275605, 3697967, 4507032, -292595, -1640141, -1067836, +-3859028, -3624416, -3997004, -4694936, -2481954, -3256659, 890669, -3137474, -907849, -1837709, +-270046, 820876, -3737159, 3806415, 811749, 1660542, 3340948, -3020973, 1801202, 3497177, +-3479997, 736050, 2767570, 1246077, 1465658, -6023155, 3957276, 6521908, 1672353, 5761162, +65498, -5881958, -4111358, -4276714, -706522, -2928631, 6893960, -5156645, -1357210, -2327336, +-870268, -4131759, 3954591, -2426657, -1964411, 3387119, 5529771, 6334003, 923418, -428423, +1261647, 357556, 837519, -2832531, -3129421, 1525787, -2845416, -2769180, -3802120, -3911105, +1134408, -2583423, 3411815, -4320200, -662499, 1935957, 1745904, 1626719, -6813429, -1188632, +-3819837, -629750, -1657857, -4087198, -180389, 4921496, 1389959, 2399813, 2145336, 2668249, +220654, 3341485, 1966021, 3726421, -2236067, 2491081, -1365800, 1723893, 35970, -3415036, +3830037, 4537633, -2623151, -3037079, 1117765, 4161823, 742493, 1105417, -1688459, -282931, +1895691, 1427003, -159451, -10110890, -2695092, -4542465, 3326452, -9475235, 2054068, -4157528, +-2243047, 1382980, 158914, 1098438, 1392643, 1108102, 4097399, -1796907, 403190, -378494, +-5048734, 3740380, 6155225, -4990752, -4751308, 3632469, 896038, 4475893, 1377611, 5998996, +-853088, 2054068, -3178276, -909996, 6043556, 536871, -3985730, -4831302, -5302674, 279173, +4344360, 2277407, -54224, 5034239, 3938485, 219580, -4092567, 6426882, 1597728, 4974646, +4960151, -799401, 3150359, 3831111, -482110, 2298881, 2545842, -2389613, 482647, -678605, +2416456, -5495948, -3607236, 1901060, -3490198, -1232656, 4759898, -1833951, 2600066, -1014149, +-7555921, 1380832, -71404, 4065187, -6229313, -3222836, 2770791, 802622, 6448357, 6669011, +3034931, 4918812, 3965866, 6685117, 7766375, -2916820, -743566, 2533494, -7595650, -308701, +-2443837, -1513976, 3608846, -4517232, -427349, 5640366, 1149978, 3603478, -1698660, -1353452, +-1806571, -7256347, -1072131, 460635, 3935801, -1189169, 6694244, 2566243, -1010391, 2607045, +1493038, 3360812, -2307471, -524523, 7816841, -1037772, 7398618, 3396782, -3029563, 758062, +6545530, 3325915, -4046396, 5827197, -1423782, 403190, 484258, -1160715, 1307818, 666794, +-5064304, 3384434, 2666638, -421444, 415001, -1134945, -4518306, 54224, 2927020, -484794, +-287763, -3128884, -6696928, -2312840, 2928094, 5983427, -8555038, -4609574, 2079838, -3696893, +2771328, 100395, 571768, -4893579, 9466645, 9973988, -1957431, -4238059, -4541391, 9563818, +-8287677, 189515, -1314797, -3922379, -5230734, 1840394, -1404991, -7220377, -8698919, 299574, +-613107, -4599373, 1697586, 2394444, -3171833, -4871567, -4478041, 6361384, -6853157, -855772, +-8017094, 73551, 4522601, 1510755, 803159, -4533338, -4313758, 3942243, -3023657, -4626217, +599148, -1685238, 2847563, 56371, 1158567, -4600984, -1692217, -1290101, 4424890, 3045132, +3069828, -9097814, 1428614, 2568391, 2057289, 2603824, -2638184, -1618666, 273267, 1900523, +3535295, -561567, 2288144, -2561948, 6918119, -12679817, 4330938, 474057, -6995428, -159451, +7256347, -2113661, -3853123, -6653441, -2745558, 773631, -2495376, 296353, 2212445, 4319664, +-4505958, -14098767, 2543158, -6406481, 1378685, 1222455, -851477, 10073846, 522912, -6373732, +8538932, 4176319, 2912525, -1239635, 1746441, -2558727, 6689949, -1061931, 736587, 10177462, +9851044, 4287451, 4496294, 4414690, 4890357, 3350075, -9790378, -2979097, -164283, -2492155, +-8338142, -836445, -1999307, -2110977, -4493073, 3758, -1340030, 7245610, -2324651, 12637941, +-106837, 1168231, -2354179, -1694902, 62814, -231391, -1036698, -2051384, -1502702, -5989869, +1461363, 1173063, -768262, -2993055, 4254702, 3379066, 3683471, -1080721, -2724620, 323733, +3207267, 3791383, -2855080, -7703024, -4125853, 1236414, 6667400, -491237, 5455682, -3824669, +-6307697, 5357435, -2179159, -4333085, 3089155, 4386772, -5557151, -3619584, 5279052, -6244883, +-6650757, 3143916, -1852205, -663036, -3461207, -2123861, 3519189, 4794794, 2622078, -1217086, +813359, -672699, -1058173, -4746476, 1633698, -12639552, -3574487, -4097399, 3528316, 4196720, +425202, 2024003, -7747048, 2013803, 1267015, 1997160, -6980396, 13167833, -537945, 2330557, +1807644, -6438156, 1054415, -9175661, 5852430, -2092186, -7483444, 1340030, 641561, -3979824, +477278, 617402, 6029597, 10505490, 4716411, -2411624, 3549791, 4148939, -9904195, -3948686, +-4487704, 2476586, 2379949, -1988033, 1686848, 3118683, 2333778, 4086125, 8505109, -238908, +-2956548, -1342177, -168041, 6030134, -4495757, -595390, 3328063, 8142721, 427349, -6762426, +-5179194, -1584843, -6038187, -2279017, -12999792, -3563212, -4802311, 5565741, 211527, -2671470, +-16678432, -2188823, -2199023, 6951405, 16593606, -4728222, 11175505, 1957431, -9710384, -9939091, +1823214, 2604898, -5587216, 6339909, -4381404, 5132486, -6096169, 3104725, 2290828, -5815923, +-4820027, -3689914, 2143189, 6592238, -8245801, 441845, -8662412, -359704, -3143916, 2308008, +6729677, 834297, -2531346, -2318746, 7306813, 148713, 11007464, 3461207, -3686156, -3691525, +-2724083, 1724966, 7108171, 63888, 11550778, -19586124, -14131516, -11595338, -2226404, -9849971, +1205275, -3557307, 4184909, 9234717, 2272038, 3973382, 6490233, 9778567, 5698348, 1726040, +-5660767, -16108275, -16236587, 9558450, 1838246, 12068858, -6899865, -5712307, 7117298, -11788075, +3459596, 8360154, 2915746, -5741835, -685047, 15454366, 12154221, -663036, -11468100, -17971754, +-2626909, -5981279, 6089727, -5033165, -5973226, -20422570, -9502078, -18240726, 6392522, -112206, +-5094905, 5493800, -1185411, 612570, 826244, -5519033, -2147, -6415071, -1763084, 4693863, +2586644, -6556805, 1999307, 7687992, 11170136, -1282585, -2185065, -3409130, 116501, 6567005, +8081518, -756451, 719407, -1381906, -2057289, 10763725, 6920266, 773631, 7150584, 2704219, +-10040560, 2248416, -1535988, 12697534, 4194573, 1988033, 5309117, 8378408, 1577864, -6567005, +-12589623, -2358474, 1862942, 6803765, 2629057, 754841, 1837709, 9810242, 1397475, 3350075, +3648575, 2736968, -6867653, -6842420, -6810745, -6980396, -7097434, 9822590, 26246008, 5699959, +-8055211, 4629438, -4687420, -15602006, -3132642, -15315853, -8347269, 7807714, 10516227, 3973382, +2166274, 790274, 1943473, 9863392, -7085623, 13990319, -9130027, -9415642, 11253888, 4862977, +-18187040, 7800735, 4627291, 5602248, 11964705, 5737540, 8889509, -790811, 4806606, -3044058, +7572564, 1786706, 1590749, 4852240, -10290742, -5775121, -3197603, 6312528, 2791192, 2087891, +5144834, 1237488, 1764158, -9559523, -8053, 9705552, -1916629, 901406, 1131724, 940061, +11833172, 4245575, 15949361, 3326452, -2500745, 14909442, -13423920, -2164127, -2355253, -5745056, +-1515050, 2696703, 14833206, 901943, -3653407, -6511171, 2628520, -6875706, -3286187, -4738960, +-9124121, -2187212, 1124208, 11897596, -2909304, -10002442, -13974750, -5817533, -13748727, 9718437, +-11644730, -9556839, -6619619, 5935645, 16963510, -17187922, -5318244, -19299436, 5953362, 2049773, +2348273, -5948530, 2057826, 20525112, -10437844, -2422899, 8593156, 4883378, 4789426, 6845104, +5559835, -7517267, -11099269, -2773475, -5861020, -9437117, -10182294, -419296, -1874216, 2066953, +14601815, 8220031, -7154879, -4843650, -188442, -4666482, 4115116, 25876642, -8279623, 17848274, +6529961, 2450816, -454193, -3670050, 3909494, -10843719, 5668283, 13683229, 1449015, 1565516, +12395276, 6714108, 5375689, -10507637, 9091372, -6626598, -7626788, -24296630, -6269042, 14266271, +-7459822, 2919504, -15174119, 10663867, -4747550, -7770133, 11973295, -17934172, -10146323, 16694538, +-10631655, -15522549, 1539746, -10394895, -8083666, -884226, 11839077, -5513665, 20955682, 19891068, +3661460, 6496675, -11659762, 1602560, -9487583, 14976551, -3190624, 4543002, -7300371, -4386772, +2276333, 2180770, -7031399, 11523397, -3460670, 2592550, 3969624, -7237020, 2544768, -9283572, +-232465, 5588826, 6176700, 353798, 8249022, 10983305, -1103270, -19963544, -3701188, -5746130, +14134201, -11955578, -15468862, -10555956, -7560753, 2369211, -8920647, -6456947, -4664872, -934155, +2306398, -29248728, 18319646, 14926622, 20928302, -6369437, 3043521, 14714558, -14025216, -12145631, +2113661, 9881109, 5734855, -972810, 2483028, -6746320, -9293235, -10522133, -3714610, 40351756, +2820183, -20587388, -4181151, -10416369, 7362111, 7919383, -13329968, -6106370, -10813117, -22126060, +2230162, -18522046, 9053254, 2587718, -14084272, 7929584, 10041634, 12933220, 4410395, 4963909, +-14549202, -543850, -2377265, 13911936, 7250979, 435939, 13917305, 14555644, -1029718, -7183333, +2458332, 18040474, -11005854, -9443022, 10200010, 5054640, -11135240, -2696166, -10198400, 20761336, +-16751983, 4948339, 12048994, -6624987, 11201275, 3741990, -3963181, -5266704, -4299263, -8304856, +12824235, 15843061, 4386236, -11793443, 2568927, -13009456, -3667902, 8929774, -180926, -6250788, +-3300682, 2599529, -16018081, 967978, -122943, -9684078, 15622407, -13014825, 1053341, -2496987, +-7920994, 11359115, 1457605, 6983080, -2588255, -87510, 2189897, -5296232, 8105140, -4541928, +2543158, -4068408, 20269562, 9120900, 20282984, -558883, -13234405, -7516193, 9788767, 12549894, +16070157, -787053, -2286533, 19541028, 10276246, 21851720, 4000762, 597537, -10019622, -5989869, +-5484137, 4783520, 4488241, 11124502, -13267691, -474057, -7459822, 6230924, -11379516, 3246459, +14880988, -3593814, 639950, -8755828, 2998961, -8829379, -23767276, 1809255, -2800319, 97174, +-10080288, -4094715, 10660646, 17026324, -979789, -8531953, 11841762, 3348464, 3584150, 11068668, +5396627, -8749385, -2402497, 6398965, -280247, 5613523, -8223789, -10128607, 3616363, -9716827, +-13763223, -8932458, -15822660, -6008123, 6280316, -15440944, -1227287, -17512730, -5967857, -2839510, +6357089, -20757040, 8140037, -1889249, -10443213, 9698036, -4881231, -594853, 22812182, 21646636, +67646, 32029718, 36687612, 1996086, 11781632, 11346767, -1489817, -26268556, -614180, -909996, +-9897215, 7619272, 7045357, -14164802, 7999914, 10284836, 1865090, -3571802, 5699422, -3390340, +18951006, -2903398, -8449274, 450972, 4575214, -1403917, -868120, 46171, -29386704, 9008694, +-239444, -20142322, -8054138, 4022237, -1412507, -13533979, 5440113, -16034724, -879931, 2171106, +-25894358, -4181151, 12124693, -7928510, 2023467, 17382806, 11120207, 13471702, 4911295, -6539088, +-11408507, 13463112, -5501316, 7878044, -10609643, -5402532, 9751723, 15101105, 3507378, 17951890, +-9955734, 15647103, -10852309, -14331232, -8898098, 15579994, 17643726, -13569412, 9876277, -38866232, +-713501, 12066711, 7198902, -6148246, -11143293, 6325413, -27980638, 1129576, 36884644, -25266218, +-1272384, -3113851, 2913599, -10609643, 5586679, -16317118, -14665703, -6186901, -3277060, 2769717, +-2940442, 7143068, -10744934, -634581, 24078124, -19938312, -15691126, -5074504, 21195664, 1793686, +-24283746, 9735617, -8378945, -11846594, 3519189, 33725692, -18544596, -11933030, 25755308, 17294760, +2611340, -11263552, 1701881, -4834523, -6828461, 6053757, 7501161, -5236102, -19002010, 24668144, +13125420, 3849365, -26220238, -5182952, 9574556, 8451959, -2279554, 13373991, -1175210, 3918084, +-5085778, -17385490, 11926587, -12649752, 8296803, 2764885, -13091597, 26370562, 5576478, 18808198, +21133386, 2785286, -27960238, -6297496, 2042257, -12234751, -3976603, 820339, 1343788, 12855374, +26875758, -6376953, 10804527, 1929514, -10687489, -51171852, 2997887, -13054016, 1387811, 26224534, +2075006, -4578435, 4311611, 1399623, -17909476, -18500572, -17424682, -15943992, 20875688, -3859028, +24992414, 2654827, -24385214, -442919, 2246805, 20948166, 3647501, -2923799, -4484483, 6265821, +-13316009, -4554276, 22327388, -4241280, -29912836, -22152904, 13073880, -2542084, -6531572, 7170448, +-2512556, -14821395, 4192425, 9312026, 20075214, -3745748, -17373142, 606127, -21805548, 8612483, +23881628, -3520263, -30135102, 9727564, -697395, 2021319, 6831683, -9041980, 17992692, 1695438, +-12670154, 9913321, -6978248, -3860639, 25924960, -13168907, -4716948, -4208531, 16335908, 6753299, +-29040958, 14711874, -23306104, -5716602, -12384001, 2563559, -7151658, -8141111, -1053341, -25713432, +5702643, 41075456, 27654220, 11902965, -20044076, 14993194, 20161650, 28477780, 14606110, 2989834, +1685775, 17711908, 31964758, -7450158, -3103114, 17344152, -34287796, 12393128, 32009318, -6811818, +-10032507, 7798587, 25082072, 19247360, -12212203, -22654342, -431107, 11005854, -2873870, 2480881, +1315871, 26039850, -13996762, 16628503, 26427470, -10328859, -1995012, 17784922, -1566053, 62743568, +-25192668, 11226508, 44246216, -24843164, 9394167, 2842195, -33552284, -1090922, 7905961, -15360414, +35580044, 2638184, -3155190, 2746632, -12584254, 46911780, 14594836, -37324876, 37963216, -14907831, +3221226, 11363947, 15421617, 24322400, 13801341, -6126771, -21232170, -31126164, -9518721, -12204150, +238908, -9258876, 22233972, -11812234, -18814642, 1631014, 10715943, -48797272, 28614682, 863288, +17478906, 27666568, -45935748, 10206990, 24340116, 5020280, 18289044, -18244484, 20095616, 5352066, +-17693654, -86973, -10959146, -34314640, 19157164, 10250476, 31586264, -17503602, -22221088, -8261907, +7832947, -5022965, -37956236, -19285476, 12411919, -3134789, 6347962, -16499117, -4438849, 12592307, +-10242423, -5621039, -15810311, -4025458, 6642167, -18366354, 2594697, -39908836, -32048510, 10038949, +-33339684, 2921115, -34884800, -24981678, -16407312, 16814796, 34089692, 41060424, -8825084, 18372260, +23124104, 11000485, 10610180, -15552613, 46654620, 46933792, -30438970, 32265404, -23587424, 16689169, +34128348, 32022740, 39517456, 46418396, 33950104, -34428456, -23260470, 1737314, 3800509, 16239271, +-4610111, -3490198, 60345364, -44334800, -21859236, 23060216, -13649943, 21966610, -17213692, -20235738, +6954089, -47012176, -1800128, 30455076, -7260642, 15266998, -26356066, -7327751, -10304163, 217433, +33398740, 9166534, 7509214, -6868190, 18332532, 4882841, 45467060, 10131828, 26527328, 789737, +-20760798, -20766704, 26362510, -14074608, 12114492, -1547262, -34257732, 23228256, -30583388, 57577256, +-44236552, 25331180, 23754928, -26875758, -21573084, -17397302, 21399674, -3485903, 22354768, -2226404, +2456721, -42424612, -22275312, 7179038, -20500416, 4196183, -12842489, 9302362, 5894306, 28238336, +-19361712, -9337796, -8914741, -18462990, 40830108, 4184909, 2603287, -43128988, -14220100, 16572131, +10650982, 8293582, 34331284, 17308718, 29721174, 29836064, -4155381, 6698002, -19644644, -89491552, +61929672, -38069516, -28145994, 1551020, 11978127, 17095580, 1990181, -13595719, 47938276, 25670482, +5850819, -23598698, 15032922, 45097, 17198122, -22492206, -17220134, 13392782, 35450124, -41024452, +573915, 14484240, 3273839, -9405442, -7427072, -4357245, 406948, -1191853, 8136279, 47038480, +1583232, -19852412, 29544006, -6238977, -31476204, -37631428, 35223564, 13091597, -6784438, 14796162, +6752763, 31750546, -43421584, -3241627, -23100482, -4796942, 21686900, -16256988, 7056632, -18880140, +7404524, 64909840, 2303713, -34901440, -43495672, -978179, 16555488, 20715164, -19474456, 5695127, +27536646, -11113228, -63534916, 36134096, -24685324, -31863826, 10457172, 59134720, -44241384, 31227634, +33861524, 16607565, -40893996, -25109990, -25437480, 51672752, 17278116, 3221762, -3608846, 7997229, +14785425, -4887673, 6989523, -8102456, 97174, -6463926, 24530168, -27608050, -2916820, 16075526, +-37834368, 12011413, -9128953, 2573222, -4313758, -10929081, 6916508, -3242700, -15349676, 41302552, +-31648540, -9259413, 29655676, -19269908, -2794413, -6310918, 6599754, 28889560, 2369211, -28868622, +39182988, -21474836, 14018236, 24001350, 10941429, -9461813, 2245731, -21840446, 5338645, -13371307, +-10137733, 51993264, -12069395, -21231098, 6926172, -10099079, 12550968, -8477192, 13785771, 33367600, +-18370648, 10853919, 25922812, -30522186, 14087493, 16242493, 7814156, 20446192, -23128936, -6266358, +36461052, -24799678, -4852776, 10495289, -9212168, 34827352, -32868310, 6730751, 14233522, -14040785, +15199889, 15695958, -30044906, -78913584, -125615984, 10678362, 116809152, 8474507, 266435616, 275957568, +134877008, 288296992, 189871376, -43626132, -9072045, -68091872, -239189408, -209839216, -133089760, -244179088, +-193873216, -60613800, -124914832, -105086576, 26050050, 50784232, -37904160, 6602976, 42063836, -50005768, +-34875672, 63314796, 53419192, -3963181, 60163364, 112608672, 27622546, 76939504, 155897648, 67514736, +26968636, 137478144, 110531520, -73551, 73077792, 161175632, 15161771, 22280142, 123206504, 40891848, +-39371428, 79200272, 71367864, -34455840, 57970248, 82851528, -31707060, -110922896, -70146480, -222823984, +-349264608, -315122816, -336399008, -494227808, -451002176, -426023712, -512009504, -500549984, -423244864, -389259328, +-360098112, -237003280, -135062224, -14229764, 46017892, 153234768, 263588592, 284531904, 321910496, 359044768, +146011168, 19289234, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, }, { { -6075768, --9342091, 178241, -5176510, -1161252, -3584150, 2933463, -5563594, 260919, 2194728, -1876901, -1732482, -447750, -497679, 755377, 812823, 1699196, -2633889, -605054, -1763621, -4587562, --3758, 1382443, 388695, -1945083, 3505230, 1270774, -1101122, 1235877, 311922, -1985886, -1167694, -658204, -2212445, -2467996, -1138166, -475668, -1144609, 2312840, 4354023, -381715, -6562173, 1059783, -4931160, 1795296, -817654, -3785477, 483721, -3598109, 4072703, 906238, --3160022, 1583232, -1826972, 1346472, 2078764, 997506, 951872, -717796, 1852742, -3002182, -1622961, -1305133, -1239098, -824097, -1472100, -5317707, -967441, 2918430, -1786170, 2085744, -1026497, -1455457, 526670, -4295, 1669132, 6414534, -3165928, 1748589, -614717, 339839, -360240, -2633889, -2897492, 1913945, -472446, -2393908, -2960843, -1883880, 2755222, -288300, -3676492, 749472, -4461934, -4704600, -3240553, 1377074, 1270237, 2448131, -249645, 2805151, --2011655, -375810, -4795868, -733903, -779537, 1045288, 2001455, 1893544, 3796751, -1772748, --2268280, 2012729, 1290101, -2325725, -2232309, 168577, 1896228, 871878, 4256850, -1470489, --1048509, 4652524, 1647657, 8664560, 3914326, -2323041, 202937, -5190468, 406411, -5921150, --64425, -2142115, 4523138, 559956, 2628520, 3179887, 2082522, 3066070, 2423972, 570694, --4517769, -391916, -1925219, 3668976, 5787469, -3366181, -1704565, -1318555, -1012002, -2474975, --10022306, -10944114, -754304, -3221762, 520228, -2468533, -538482, 5906117, -980863, 3116536, --1395864, -3023657, -3914863, 606127, -741956, -4913980, 5595269, 1521492, 456877, 2801929, -2877628, 4406100, 3272228, -443455, -3317325, 3013993, 796716, -4705674, -1959042, -2204392, --1315334, 3925600, -1350767, -7105487, -2315524, -949188, 1486059, -2317672, -4497368, -10201, --420907, 5096516, 792421, -202937, 1925756, -282394, 7089381, -1386738, 641024, -1731409, --2835752, -161598, 3013457, 1212255, 786516, 2713883, -2698850, -4563403, -3220689, -795643, -488553, -1185948, 15032, -3459059, -865436, 1579474, -1217086, 3299609, 1598802, -332323, -392990, -3360812, -3063922, 5215164, 792421, 2091649, 808528, 1320166, 7189776, -595390, -3768297, 1891396, 4955856, 5641977, -1183264, 235149, 3763465, 3315178, 2524904, 6452652, -1487669, -2485176, 404801, 5585605, 2172717, 2465848, 5193689, 6535867, 4607426, -1899449, --4636417, 2952790, 2311229, -3092913, -4500052, -142808, -2622615, 804233, 1756642, -2080912, --2262374, 1843078, 1796370, 3595425, -2734284, -6004901, -2808909, -2890513, -3735548, -1797444, --4274030, 1980517, -5842230, 1910724, 395137, 743029, -2674154, 4888210, 4067871, -4533875, -4688494, 1145683, -881005, 887985, -3689914, -1859184, 3099893, 397821, 1155883, 45634, -3694746, 731755, 4600447, -3322157, -606127, -1309965, 1549410, 1749662, -1511292, 690416, --2992519, -66035, 1236414, -173946, 18912352, 621697, 16696148, 1844152, 10409927, -1866163, --2321430, 3444564, -8557722, 9338333, -5486284, 6423661, 3941706, -2763275, 2146947, 246961, --110059, -1010391, 2029372, 3995393, 3909494, 7657927, 1313723, 2785823, -709743, 8926553, --10100689, 744640, -1166084, 2834679, 3681324, -4570919, 1526324, 2819109, 763430, 3895535, -1407139, -3395709, 1458141, 8072391, -1822677, 2847563, -1679332, -625992, -763967, -4859756, -7945153, 428960, 416612, 6805913, -1268089, 1053878, 7355669, -10778757, 2736968, 374199, -3024731, 9787694, 2378338, 2827162, 2830384, -381715, -2913062, -1114544, 1918777, 1474784, -4626217, -1139777, 3772592, 2545305, -1634235, 1487669, -3445638, -1471563, 307090, -7634305, --9627706, -3671123, -1547262, -3463354, 7492571, 3349538, -6206765, 6867653, -1082869, -4856535, -1337346, 3032784, -2896419, -4440460, -4218732, -8516383, -4490389, 3776350, -5604933, -8658117, -2292976, 3587372, 529892, -3155190, 6357626, 856846, 5858336, -335007, -1582159, 3490735, -5528160, -8108899, -4084514, 2248416, -2037962, 2019172, -5545340, -369904, 1208496, 1941862, --4780836, -8264054, -2572686, 2414309, -1652489, -1047972, 241055, 2661806, -1088237, 1465658, --3066607, 4771172, -6585796, -4742181, -1946157, -4654134, -1693291, -1296543, 1516660, -3443490, -2224256, 5139465, -796180, 1144609, 1046361, 2410014, 4716411, -2032056, -1359357, -1067299, --2502355, 5199595, -2542084, -9267466, -6197638, -3659849, -2429878, -8141111, -19667192, -1571958, -1149441, 462246, -6496675, -2528125, -7337415, -1568737, -8611946, -9385040, -7715909, -1453310, --5153961, -10590316, -6957847, 2580739, 3247532, -2676838, 6443525, 3976603, -2531346, 8448738, -1637993, 1040993, 1217086, -10686416, -479426, 2241436, 4107599, -3069291, -3133716, 7021198, -12795244, -9163850, 3426847, -2372433, -512712, -7995619, -750009, 385473, -4308926, -4978404, --3957276, -4145180, -2448131, 3299072, 9468792, -3856344, 3592740, 6931541, 5836324, -1364726, -738198, -1462973, -1729261, -8068096, -4185446, 5563594, -3002182, 1729261, -2843805, 3163780, -1482301, -256624, -147103, -3333432, -3142306, 1496259, -984621, 2521683, -10028749, -10164577, --860067, -11668352, -2790655, -14130442, -3668976, -9882183, -1632088, 2376191, 2229088, 11630235, --7373385, 2947421, 2636573, -5622112, -3120294, 9458592, 581968, -2170032, 763967, -6951405, -6367826, -9032853, -3493419, 4711043, 2288681, -510027, 1281511, -1393717, 2777770, -3566970, --7464653, 978716, 3133716, 3322694, -6020471, 2083596, 6111739, -6092948, -8657580, 7174206, --5989332, 4864051, -4381404, 2943663, -435939, -5415417, -7978439, -4233764, 1859184, 215822, -2652679, -3507915, -4153234, -9330280, 4935991, -6537477, -3416647, 4365835, 8581345, -609349, --1960653, -12381854, -10286447, -2872796, -3711926, 5359046, -1424319, -7067369, -1212255, 869731, --4139275, -597000, -8869644, 6397354, 2645700, 7859790, 9822590, 7447474, 3477313, 21099564, -9785546, 13745506, -4491999, -286689, -554051, -20345260, 734439, 9083319, -4435091, -1399623, -329639, 13147432, -2590402, 7679939, -1948305, 7348152, 3525095, 9024800, 12044162, 1733019, -7875897, -2470143, 6736120, -879931, 12865575, 7194607, -743566, 7673496, 5601174, -2197950, -5301601, 3566970, 4479651, -3977677, -3815005, -10793790, -1291175, 7651484, 818191, 952409, --3196530, -4078072, -3936875, -3615289, 18066780, -12165495, 4020090, 5631776, 2428804, 1527935, --8072391, -9715216, -3352759, -1556389, -1390496, -16776142, -9253507, -8700530, -654983, -546535, -3809099, -700080, 3169149, 5752572, 9322763, 1837709, -4215511, 3524021, -8364449, 1905355, --6843494, 2195802, 1767916, 31304942, 4084514, 4133906, 4268661, -2610266, -12266427, 8135742, -9927817, -5767068, 4755066, 3571802, -7036230, -1657321, 8347806, 3810173, -12919798, 2935610, --2927557, -7538205, 672699, 3499862, 1941325, -636192, 614717, 5419175, -958851, 2856153, --9783399, 3823595, -174483, 3760244, 3358128, -2378875, 8574902, -10804527, -3500935, -10659572, -9921911, 3846143, 15576236, 6840273, 979789, 2782602, -10771778, -431644, 4509179, 3455301, -4672925, 495532, 3173981, -3400004, 4473746, 10214506, 15214922, 5871221, -5277441, -3740380, --297963, -2961917, 6410776, 6975027, -3765076, 4097936, 9057012, 2335925, -9674951, -21486648, --9403294, 4306242, 10558640, -3991098, 3966402, -707596, -864362, 66572, 10806675, 1787243, --18634252, 4922033, 10263361, -11453067, 7744363, 10473815, -26931056, 5050882, 2161442, 5143760, --9436043, 14775761, -21042656, -1184337, -601832, -2800319, -1280974, -7414724, -7342784, -2379412, -8872866, -214212, 1205275, -5232881, 6543383, -1910724, -1724429, 3133179, 10736344, -7524246, -8027294, -2357937, 5274757, 1042066, 7612830, 9002788, -1312649, 1531693, -12068321, -7711614, --1664837, -6132677, -10884521, 89121, -3287261, -8985608, 12527883, -11992622, -2502355, -6351183, --4718022, 6506339, -7789997, 3612604, -1996086, 6630356, -3118683, 7339026, -10492068, -4843113, -2658048, 9056475, -17616346, -8792335, 1888175, -1828046, -2134599, 5514201, -8524973, -21263846, -5388574, -19191524, 9774809, -8809515, 1392643, -21087216, -4997732, -14766098, -5933498, 17934172, -1037235, -15351824, 14415521, -6952479, 1188095, -16019691, 2648921, 5867462, -13607530, -3743601, --12145094, -467078, 997506, -4563403, -3230352, 11659226, 2052458, -8607114, 2239289, -17968532, -10711648, 16226386, -5222680, 6482717, 12014097, -1395864, -2252174, 921807, 1601486, 6377490, -1343788, 1016297, 3799972, -10411001, -549219, -11906723, -11349451, -5400922, 4991826, 6114423, --202937, -14303315, 2830384, 2751464, 6831146, 13634911, -14676977, 20834886, -17841832, -162672, --3437048, -4146791, -8505109, -17820894, -22332220, -9929964, -2323041, 4475893, -1415192, -443455, -3666292, -1670205, 16304233, 5865315, -15799037, -4371740, 308701, 8370892, -10414759, -1517197, --21489868, 1786170, 19727322, -17648020, -9777493, -18418968, 22106196, 10111427, -11531987, 15123117, -14194330, 21296596, -8154533, -6723772, 14729590, -1767379, -3483755, 5770289, 6282464, 3171297, -2754148, -20245938, -2681670, 539555, -310311, 1624571, -2828773, 9270150, 16551730, 2212982, -673236, 200790, 319975, 16191490, 3671660, -606127, -3929895, 4524748, 2966749, -1950452, -1292248, -8438537, -2384244, 14176613, -14064944, -6048388, -12205760, 15797963, -14505178, 7563438, --6257231, 5058398, -3578245, 4205847, -11775727, 3177739, 16397648, -10529112, 326418, -28935732, --1883880, -9771587, 224412, -26896696, -1807644, -597000, -9114457, -5114233, 21935472, -23302346, -3417720, -5553393, -9658308, 7628399, -8830453, -17580912, -13911399, 3482682, 344671, 6261526, --9908490, -5090610, 18262738, 7361037, -3149822, 4818417, -10111964, -9243306, -8800388, 19224274, --17068200, -19683836, 9258339, -18228914, 6537477, 1615445, 4683125, -7618198, -2554432, -9437654, --4881231, -7036230, 3403225, 10497974, 6104223, -14353781, 17490180, 3264175, 5855651, 2769180, -8240432, -676994, 7919383, 3257196, -4048007, 6562710, 1597728, 8335458, 4511863, -10311143, -4401268, -1986422, 3021510, -876173, -4615479, -2041720, -8444443, 9300215, 7971460, 10296647, --1799591, 17489106, 18541910, 9412958, 2297271, 10529112, 19272592, 11732777, 21061446, 15891379, -15701864, -14510010, -17118666, 6098854, -3477850, -1764158, 1357747, -5473936, 7170448, 8665097, -3462818, 19817516, -3596498, -6310381, -8470749, -3075197, 2215130, 1550483, -34396244, -6533719, -15755551, 10117869, -33344516, -25227028, -7363722, -628676, 11521787, -4920959, -366683, -27112518, -4242354, -14314052, 10498511, -2192581, 13776108, -11627550, -2349884, -13736916, 2854006, 10849087, --4760971, 3051574, -7211250, 430570, -17573932, -5156645, -309238, 1194001, 14018773, 17402670, -1201517, -16117939, -10691784, -5222680, 2268280, -4247186, 5743982, -18424336, -5083094, -2469069, --4133369, -10268193, -1761474, -4640176, 13246216, 18417894, 12994424, 4727149, 8217883, 7928510, --8080444, 30808338, 19192062, -23611046, -20052128, 22868016, -16868484, -9585830, 4184372, 3150359, --16353625, 17346836, 1805497, -50656456, 14527727, 33483028, -21709986, 23633594, 30532386, -8340827, --2452963, 17949742, -18044232, -9745281, 6781217, -6375342, -11219528, -9796284, -7401840, 11761231, -6059662, 7932268, -2581812, -10199474, -9482751, 10843719, -8990440, -162672, 2180770, -14762339, -9095130, 8689793, -7115687, -4505958, -12902082, 810675, -8363375, 10808822, -17790292, 1716913, -5432597, -483184, -9032316, -17035450, -4984310, -7221451, -2787434, -13150116, 17263084, -17651778, -1992865, -6255083, 3441343, -25183004, 24994562, 5195837, 1374390, -10305237, 4696010, 4418448, --168041, 2499134, -6031208, -19983946, -4865661, -8643622, -14294725, -17234094, -7689602, -4383551, --18634790, -6636262, -2354179, 11710228, 3857954, -15679852, -15191299, 8125005, -5239860, -19963544, --10209674, 4497905, 14458471, 15700790, 14620606, 25664040, -6738267, -18254684, -18526878, -1668595, -10219875, 19745038, 8841727, 4060892, 11322608, 33716032, -29795262, 27917, -12349642, -14450417, --9965935, 15950972, -8993125, -7999377, 6961605, 20322174, 11467563, -13562970, 8690329, -14258755, -10536629, 1648731, -2379412, -6337224, -12019466, -8106214, 1312649, 3183108, -18591840, 12538083, -1315871, -483184, -7379828, -6473053, 12260521, -16281684, -1322850, 20221780, 21881784, -18802294, --1786170, -2723546, -13397614, -15503758, 17971754, 5484137, 11311870, -2273648, 1096290, -238908, -11324218, -3159485, 363998, -13007308, 20414516, 18620294, -25360172, -29344290, -6673306, 1804960, --10234907, 2479807, -7587060, 3809099, -15624554, 18008262, -20026358, -16141024, -6440304, 4329327, -14057428, -5850819, 20380156, 3443490, -6736656, -5643587, -4641249, -11595338, 13194676, 9904195, --43181064, 64617784, -43963284, -12861816, 13261248, 34318936, 30277908, -11954505, -10216653, 622233, -3034931, 17106318, 8168491, -25545928, 8709657, -6496138, -7101192, 1149978, 11395085, -1364726, --16740172, -17278116, 9993315, 5733245, 12770548, -7361574, 15469398, 2056753, 17900350, -2879239, --3995930, 10923176, 140123, -14093398, 3882651, 13868986, 1010928, -18289044, 10195179, 18835580, --16690243, 6140730, -18025440, 6710350, -23204634, -17420924, 29312614, 24554328, 13894219, 32315870, --4534412, 38796976, 16743393, 14306536, 23379654, -37172940, 32459752, 9342628, 14373645, 13000329, -5467494, -18688476, 5029407, 32578400, 40527312, -1543504, -41133976, 20206210, 3466039, 7901129, -804770, -235149, -7175280, -34134252, 8753143, -7212861, 9308268, 44449152, -2460480, -50982872, --27057220, -29655138, -12506945, 1142461, 16259672, -43317968, -10745471, 7834557, -21448530, -22837952, --22451942, -22794466, -4667019, 27036820, 12573517, -9467182, 11705933, 6051072, -12838194, 14393509, --15993384, -2443300, 5437966, 9837086, -30923764, 16009491, -15666967, 9521406, -6804302, -23216982, -5800890, 8419210, 2816962, 4889284, -10949482, -33337000, 450972, 7996156, 6511708, 1263794, -3308199, -13304735, -1149441, -299574, 30114700, -3880503, -52171504, -22215718, -6584185, -41612864, -8635569, -12108050, -11907260, -19623706, -10247792, -29753922, -31080530, -35974648, -4762045, 39521216, -4218732, -23758148, 10198937, 1046898, -3768834, -13137231, -20332912, 8722542, 15205795, 12686260, -6364068, -6675990, -30057792, -19474456, -17070348, 27817966, -2426657, 22140020, 30735860, -26014080, --30455076, -34019364, 9812927, 10791642, -44329432, -27077622, 2101850, 521302, 14936286, -53655952, -6943352, 11490648, 38022808, -43089796, 6410239, 6252399, -3833258, 22690312, -11947525, 40290552, --682900, 2964601, 13986024, 15276125, -13772886, -33693480, 21055004, 22749368, 7246684, 28955058, -7681549, -4342212, -9010841, -25575456, 40830644, -17884244, 38918308, 13913547, -341450, 10280004, --13003550, 19252728, 22247394, -14261439, 17383880, 6853694, -35457640, 27414240, 31702764, -4224637, --16188805, 3058554, 2729452, 554051, -2936147, 52184928, 3358665, -31544388, -12433393, 5086315, --39020852, -59122372, 13951128, 71422088, 22967874, -6615860, -38202660, -13657459, 2507724, 46917148, --19808390, -26489748, -41519448, -71721656, 20309290, 35698156, -47370804, -3361886, 25371446, -10449655, --21774948, 19520626, -21064130, -10325638, 692564, -14503568, 23715198, -7598871, -12127914, -3634616, -12070469, 45105208, -7873749, -19906636, -23848880, 8791261, 20274930, 13217225, -21233782, -2727841, -23170274, 1064078, -19381576, 6436546, -17431662, 41440528, -19698330, -44324064, 14275398, -7312719, -20139102, -29738890, -30521112, 29541322, -3536906, -38244000, -21489868, -36624260, 46103252, 22604950, -11565810, -50107236, 7668664, 20163798, -36115308, 1541356, -26265336, -19677392, 18361522, -17723720, -21273510, -14958834, -31417148, -8040179, -8517457, -5927055, 9535901, 1902671, -19716048, 56809532, --7808788, 23540716, 26539676, 13052942, -7781407, 1943473, -12261595, 27130772, 11224360, -19014358, -14564234, 51314660, 11997454, 21539260, -716723, 4281009, 9538049, -20320564, 9631464, 17121888, -1397475, -23195508, -10539313, -17520782, -5461051, -23241142, -20046760, 1448478, -15731391, 23667418, -9279277, -7008313, -16793322, -9852655, -4705137, 12193949, -2916283, -22036940, -15978889, 3149285, -5690832, 10732050, 5744519, -5806259, 6754910, -19370302, -54101556, 1099512, 68300720, -3182571, --47596292, -9145059, 33116882, 7676181, 6379100, -2124935, -20039780, -27633282, -14660334, 4780836, --510564, -25664040, 10107132, -50371376, -7734163, 44238164, 14408542, 57252452, -6727530, -24390582, --6061810, -6474663, 16508244, 2051921, 300648, -33328410, -15448997, -16744467, -1722819, 35463008, --4805532, -10821170, 11962558, 12930536, 1439351, -22488986, -33509334, -23281944, -78017008, -120094800, -26946624, 105764640, 31889058, 259835856, 243976160, 107178224, 251017216, 104265160, -49821084, -4488778, --80820544, -213458256, -119199304, -114530136, -220008096, -161750608, -96014528, -141422528, -97886600, 12578349, --15737297, -51120848, 42545408, 39113192, -9622874, 41739564, 128942968, 48041892, 15103252, 121942712, -107189496, 27801860, 129026720, 160507760, -14295262, 88605712, 160070752, 50862612, 53750440, 161863360, -89143656, -32202592, 120459872, 78304232, -58421220, 33590404, 88803816, -72533944, -111872624, -44733696, --211876640, -339239072, -330434912, -365603712, -568404032, -497740544, -417713472, -533232544, -463905312, -313789760, --366493312, -292750336, -115445496, -72475424, 52023328, 138012336, 261211856, 364685664, 398688384, 468327008, -507501920, 453715520, 408530848, 400821376, 171415904, -13131326, -2270427, 0, 0, 0, -0, 0, 0, }, +-9342091, 178241, -5176510, -1161252, -3584150, 2933463, -5563594, 260919, 2194728, -1876901, +1732482, -447750, -497679, 755377, 812823, 1699196, -2633889, -605054, -1763621, -4587562, +-3758, 1382443, 388695, -1945083, 3505230, 1270774, -1101122, 1235877, 311922, -1985886, +1167694, -658204, -2212445, -2467996, -1138166, -475668, -1144609, 2312840, 4354023, -381715, +6562173, 1059783, -4931160, 1795296, -817654, -3785477, 483721, -3598109, 4072703, 906238, +-3160022, 1583232, -1826972, 1346472, 2078764, 997506, 951872, -717796, 1852742, -3002182, +1622961, -1305133, -1239098, -824097, -1472100, -5317707, -967441, 2918430, -1786170, 2085744, +1026497, -1455457, 526670, -4295, 1669132, 6414534, -3165928, 1748589, -614717, 339839, +360240, -2633889, -2897492, 1913945, -472446, -2393908, -2960843, -1883880, 2755222, -288300, +3676492, 749472, -4461934, -4704600, -3240553, 1377074, 1270237, 2448131, -249645, 2805151, +-2011655, -375810, -4795868, -733903, -779537, 1045288, 2001455, 1893544, 3796751, -1772748, +-2268280, 2012729, 1290101, -2325725, -2232309, 168577, 1896228, 871878, 4256850, -1470489, +-1048509, 4652524, 1647657, 8664560, 3914326, -2323041, 202937, -5190468, 406411, -5921150, +-64425, -2142115, 4523138, 559956, 2628520, 3179887, 2082522, 3066070, 2423972, 570694, +-4517769, -391916, -1925219, 3668976, 5787469, -3366181, -1704565, -1318555, -1012002, -2474975, +-10022306, -10944114, -754304, -3221762, 520228, -2468533, -538482, 5906117, -980863, 3116536, +-1395864, -3023657, -3914863, 606127, -741956, -4913980, 5595269, 1521492, 456877, 2801929, +2877628, 4406100, 3272228, -443455, -3317325, 3013993, 796716, -4705674, -1959042, -2204392, +-1315334, 3925600, -1350767, -7105487, -2315524, -949188, 1486059, -2317672, -4497368, -10201, +-420907, 5096516, 792421, -202937, 1925756, -282394, 7089381, -1386738, 641024, -1731409, +-2835752, -161598, 3013457, 1212255, 786516, 2713883, -2698850, -4563403, -3220689, -795643, +488553, -1185948, 15032, -3459059, -865436, 1579474, -1217086, 3299609, 1598802, -332323, +392990, -3360812, -3063922, 5215164, 792421, 2091649, 808528, 1320166, 7189776, -595390, +3768297, 1891396, 4955856, 5641977, -1183264, 235149, 3763465, 3315178, 2524904, 6452652, +1487669, -2485176, 404801, 5585605, 2172717, 2465848, 5193689, 6535867, 4607426, -1899449, +-4636417, 2952790, 2311229, -3092913, -4500052, -142808, -2622615, 804233, 1756642, -2080912, +-2262374, 1843078, 1796370, 3595425, -2734284, -6004901, -2808909, -2890513, -3735548, -1797444, +-4274030, 1980517, -5842230, 1910724, 395137, 743029, -2674154, 4888210, 4067871, -4533875, +4688494, 1145683, -881005, 887985, -3689914, -1859184, 3099893, 397821, 1155883, 45634, +3694746, 731755, 4600447, -3322157, -606127, -1309965, 1549410, 1749662, -1511292, 690416, +-2992519, -66035, 1236414, -173946, 18912352, 621697, 16696148, 1844152, 10409927, -1866163, +-2321430, 3444564, -8557722, 9338333, -5486284, 6423661, 3941706, -2763275, 2146947, 246961, +-110059, -1010391, 2029372, 3995393, 3909494, 7657927, 1313723, 2785823, -709743, 8926553, +-10100689, 744640, -1166084, 2834679, 3681324, -4570919, 1526324, 2819109, 763430, 3895535, +1407139, -3395709, 1458141, 8072391, -1822677, 2847563, -1679332, -625992, -763967, -4859756, +7945153, 428960, 416612, 6805913, -1268089, 1053878, 7355669, -10778757, 2736968, 374199, +3024731, 9787694, 2378338, 2827162, 2830384, -381715, -2913062, -1114544, 1918777, 1474784, +4626217, -1139777, 3772592, 2545305, -1634235, 1487669, -3445638, -1471563, 307090, -7634305, +-9627706, -3671123, -1547262, -3463354, 7492571, 3349538, -6206765, 6867653, -1082869, -4856535, +1337346, 3032784, -2896419, -4440460, -4218732, -8516383, -4490389, 3776350, -5604933, -8658117, +2292976, 3587372, 529892, -3155190, 6357626, 856846, 5858336, -335007, -1582159, 3490735, +5528160, -8108899, -4084514, 2248416, -2037962, 2019172, -5545340, -369904, 1208496, 1941862, +-4780836, -8264054, -2572686, 2414309, -1652489, -1047972, 241055, 2661806, -1088237, 1465658, +-3066607, 4771172, -6585796, -4742181, -1946157, -4654134, -1693291, -1296543, 1516660, -3443490, +2224256, 5139465, -796180, 1144609, 1046361, 2410014, 4716411, -2032056, -1359357, -1067299, +-2502355, 5199595, -2542084, -9267466, -6197638, -3659849, -2429878, -8141111, -19667192, -1571958, +1149441, 462246, -6496675, -2528125, -7337415, -1568737, -8611946, -9385040, -7715909, -1453310, +-5153961, -10590316, -6957847, 2580739, 3247532, -2676838, 6443525, 3976603, -2531346, 8448738, +1637993, 1040993, 1217086, -10686416, -479426, 2241436, 4107599, -3069291, -3133716, 7021198, +12795244, -9163850, 3426847, -2372433, -512712, -7995619, -750009, 385473, -4308926, -4978404, +-3957276, -4145180, -2448131, 3299072, 9468792, -3856344, 3592740, 6931541, 5836324, -1364726, +738198, -1462973, -1729261, -8068096, -4185446, 5563594, -3002182, 1729261, -2843805, 3163780, +1482301, -256624, -147103, -3333432, -3142306, 1496259, -984621, 2521683, -10028749, -10164577, +-860067, -11668352, -2790655, -14130442, -3668976, -9882183, -1632088, 2376191, 2229088, 11630235, +-7373385, 2947421, 2636573, -5622112, -3120294, 9458592, 581968, -2170032, 763967, -6951405, +6367826, -9032853, -3493419, 4711043, 2288681, -510027, 1281511, -1393717, 2777770, -3566970, +-7464653, 978716, 3133716, 3322694, -6020471, 2083596, 6111739, -6092948, -8657580, 7174206, +-5989332, 4864051, -4381404, 2943663, -435939, -5415417, -7978439, -4233764, 1859184, 215822, +2652679, -3507915, -4153234, -9330280, 4935991, -6537477, -3416647, 4365835, 8581345, -609349, +-1960653, -12381854, -10286447, -2872796, -3711926, 5359046, -1424319, -7067369, -1212255, 869731, +-4139275, -597000, -8869644, 6397354, 2645700, 7859790, 9822590, 7447474, 3477313, 21099564, +9785546, 13745506, -4491999, -286689, -554051, -20345260, 734439, 9083319, -4435091, -1399623, +329639, 13147432, -2590402, 7679939, -1948305, 7348152, 3525095, 9024800, 12044162, 1733019, +7875897, -2470143, 6736120, -879931, 12865575, 7194607, -743566, 7673496, 5601174, -2197950, +5301601, 3566970, 4479651, -3977677, -3815005, -10793790, -1291175, 7651484, 818191, 952409, +-3196530, -4078072, -3936875, -3615289, 18066780, -12165495, 4020090, 5631776, 2428804, 1527935, +-8072391, -9715216, -3352759, -1556389, -1390496, -16776142, -9253507, -8700530, -654983, -546535, +3809099, -700080, 3169149, 5752572, 9322763, 1837709, -4215511, 3524021, -8364449, 1905355, +-6843494, 2195802, 1767916, 31304942, 4084514, 4133906, 4268661, -2610266, -12266427, 8135742, +9927817, -5767068, 4755066, 3571802, -7036230, -1657321, 8347806, 3810173, -12919798, 2935610, +-2927557, -7538205, 672699, 3499862, 1941325, -636192, 614717, 5419175, -958851, 2856153, +-9783399, 3823595, -174483, 3760244, 3358128, -2378875, 8574902, -10804527, -3500935, -10659572, +9921911, 3846143, 15576236, 6840273, 979789, 2782602, -10771778, -431644, 4509179, 3455301, +4672925, 495532, 3173981, -3400004, 4473746, 10214506, 15214922, 5871221, -5277441, -3740380, +-297963, -2961917, 6410776, 6975027, -3765076, 4097936, 9057012, 2335925, -9674951, -21486648, +-9403294, 4306242, 10558640, -3991098, 3966402, -707596, -864362, 66572, 10806675, 1787243, +-18634252, 4922033, 10263361, -11453067, 7744363, 10473815, -26931056, 5050882, 2161442, 5143760, +-9436043, 14775761, -21042656, -1184337, -601832, -2800319, -1280974, -7414724, -7342784, -2379412, +8872866, -214212, 1205275, -5232881, 6543383, -1910724, -1724429, 3133179, 10736344, -7524246, +8027294, -2357937, 5274757, 1042066, 7612830, 9002788, -1312649, 1531693, -12068321, -7711614, +-1664837, -6132677, -10884521, 89121, -3287261, -8985608, 12527883, -11992622, -2502355, -6351183, +-4718022, 6506339, -7789997, 3612604, -1996086, 6630356, -3118683, 7339026, -10492068, -4843113, +2658048, 9056475, -17616346, -8792335, 1888175, -1828046, -2134599, 5514201, -8524973, -21263846, +5388574, -19191524, 9774809, -8809515, 1392643, -21087216, -4997732, -14766098, -5933498, 17934172, +1037235, -15351824, 14415521, -6952479, 1188095, -16019691, 2648921, 5867462, -13607530, -3743601, +-12145094, -467078, 997506, -4563403, -3230352, 11659226, 2052458, -8607114, 2239289, -17968532, +10711648, 16226386, -5222680, 6482717, 12014097, -1395864, -2252174, 921807, 1601486, 6377490, +1343788, 1016297, 3799972, -10411001, -549219, -11906723, -11349451, -5400922, 4991826, 6114423, +-202937, -14303315, 2830384, 2751464, 6831146, 13634911, -14676977, 20834886, -17841832, -162672, +-3437048, -4146791, -8505109, -17820894, -22332220, -9929964, -2323041, 4475893, -1415192, -443455, +3666292, -1670205, 16304233, 5865315, -15799037, -4371740, 308701, 8370892, -10414759, -1517197, +-21489868, 1786170, 19727322, -17648020, -9777493, -18418968, 22106196, 10111427, -11531987, 15123117, +14194330, 21296596, -8154533, -6723772, 14729590, -1767379, -3483755, 5770289, 6282464, 3171297, +2754148, -20245938, -2681670, 539555, -310311, 1624571, -2828773, 9270150, 16551730, 2212982, +673236, 200790, 319975, 16191490, 3671660, -606127, -3929895, 4524748, 2966749, -1950452, +1292248, -8438537, -2384244, 14176613, -14064944, -6048388, -12205760, 15797963, -14505178, 7563438, +-6257231, 5058398, -3578245, 4205847, -11775727, 3177739, 16397648, -10529112, 326418, -28935732, +-1883880, -9771587, 224412, -26896696, -1807644, -597000, -9114457, -5114233, 21935472, -23302346, +3417720, -5553393, -9658308, 7628399, -8830453, -17580912, -13911399, 3482682, 344671, 6261526, +-9908490, -5090610, 18262738, 7361037, -3149822, 4818417, -10111964, -9243306, -8800388, 19224274, +-17068200, -19683836, 9258339, -18228914, 6537477, 1615445, 4683125, -7618198, -2554432, -9437654, +-4881231, -7036230, 3403225, 10497974, 6104223, -14353781, 17490180, 3264175, 5855651, 2769180, +8240432, -676994, 7919383, 3257196, -4048007, 6562710, 1597728, 8335458, 4511863, -10311143, +4401268, -1986422, 3021510, -876173, -4615479, -2041720, -8444443, 9300215, 7971460, 10296647, +-1799591, 17489106, 18541910, 9412958, 2297271, 10529112, 19272592, 11732777, 21061446, 15891379, +15701864, -14510010, -17118666, 6098854, -3477850, -1764158, 1357747, -5473936, 7170448, 8665097, +3462818, 19817516, -3596498, -6310381, -8470749, -3075197, 2215130, 1550483, -34396244, -6533719, +15755551, 10117869, -33344516, -25227028, -7363722, -628676, 11521787, -4920959, -366683, -27112518, +4242354, -14314052, 10498511, -2192581, 13776108, -11627550, -2349884, -13736916, 2854006, 10849087, +-4760971, 3051574, -7211250, 430570, -17573932, -5156645, -309238, 1194001, 14018773, 17402670, +1201517, -16117939, -10691784, -5222680, 2268280, -4247186, 5743982, -18424336, -5083094, -2469069, +-4133369, -10268193, -1761474, -4640176, 13246216, 18417894, 12994424, 4727149, 8217883, 7928510, +-8080444, 30808338, 19192062, -23611046, -20052128, 22868016, -16868484, -9585830, 4184372, 3150359, +-16353625, 17346836, 1805497, -50656456, 14527727, 33483028, -21709986, 23633594, 30532386, -8340827, +-2452963, 17949742, -18044232, -9745281, 6781217, -6375342, -11219528, -9796284, -7401840, 11761231, +6059662, 7932268, -2581812, -10199474, -9482751, 10843719, -8990440, -162672, 2180770, -14762339, +9095130, 8689793, -7115687, -4505958, -12902082, 810675, -8363375, 10808822, -17790292, 1716913, +5432597, -483184, -9032316, -17035450, -4984310, -7221451, -2787434, -13150116, 17263084, -17651778, +1992865, -6255083, 3441343, -25183004, 24994562, 5195837, 1374390, -10305237, 4696010, 4418448, +-168041, 2499134, -6031208, -19983946, -4865661, -8643622, -14294725, -17234094, -7689602, -4383551, +-18634790, -6636262, -2354179, 11710228, 3857954, -15679852, -15191299, 8125005, -5239860, -19963544, +-10209674, 4497905, 14458471, 15700790, 14620606, 25664040, -6738267, -18254684, -18526878, -1668595, +10219875, 19745038, 8841727, 4060892, 11322608, 33716032, -29795262, 27917, -12349642, -14450417, +-9965935, 15950972, -8993125, -7999377, 6961605, 20322174, 11467563, -13562970, 8690329, -14258755, +10536629, 1648731, -2379412, -6337224, -12019466, -8106214, 1312649, 3183108, -18591840, 12538083, +1315871, -483184, -7379828, -6473053, 12260521, -16281684, -1322850, 20221780, 21881784, -18802294, +-1786170, -2723546, -13397614, -15503758, 17971754, 5484137, 11311870, -2273648, 1096290, -238908, +11324218, -3159485, 363998, -13007308, 20414516, 18620294, -25360172, -29344290, -6673306, 1804960, +-10234907, 2479807, -7587060, 3809099, -15624554, 18008262, -20026358, -16141024, -6440304, 4329327, +14057428, -5850819, 20380156, 3443490, -6736656, -5643587, -4641249, -11595338, 13194676, 9904195, +-43181064, 64617784, -43963284, -12861816, 13261248, 34318936, 30277908, -11954505, -10216653, 622233, +3034931, 17106318, 8168491, -25545928, 8709657, -6496138, -7101192, 1149978, 11395085, -1364726, +-16740172, -17278116, 9993315, 5733245, 12770548, -7361574, 15469398, 2056753, 17900350, -2879239, +-3995930, 10923176, 140123, -14093398, 3882651, 13868986, 1010928, -18289044, 10195179, 18835580, +-16690243, 6140730, -18025440, 6710350, -23204634, -17420924, 29312614, 24554328, 13894219, 32315870, +-4534412, 38796976, 16743393, 14306536, 23379654, -37172940, 32459752, 9342628, 14373645, 13000329, +5467494, -18688476, 5029407, 32578400, 40527312, -1543504, -41133976, 20206210, 3466039, 7901129, +804770, -235149, -7175280, -34134252, 8753143, -7212861, 9308268, 44449152, -2460480, -50982872, +-27057220, -29655138, -12506945, 1142461, 16259672, -43317968, -10745471, 7834557, -21448530, -22837952, +-22451942, -22794466, -4667019, 27036820, 12573517, -9467182, 11705933, 6051072, -12838194, 14393509, +-15993384, -2443300, 5437966, 9837086, -30923764, 16009491, -15666967, 9521406, -6804302, -23216982, +5800890, 8419210, 2816962, 4889284, -10949482, -33337000, 450972, 7996156, 6511708, 1263794, +3308199, -13304735, -1149441, -299574, 30114700, -3880503, -52171504, -22215718, -6584185, -41612864, +8635569, -12108050, -11907260, -19623706, -10247792, -29753922, -31080530, -35974648, -4762045, 39521216, +4218732, -23758148, 10198937, 1046898, -3768834, -13137231, -20332912, 8722542, 15205795, 12686260, +6364068, -6675990, -30057792, -19474456, -17070348, 27817966, -2426657, 22140020, 30735860, -26014080, +-30455076, -34019364, 9812927, 10791642, -44329432, -27077622, 2101850, 521302, 14936286, -53655952, +6943352, 11490648, 38022808, -43089796, 6410239, 6252399, -3833258, 22690312, -11947525, 40290552, +-682900, 2964601, 13986024, 15276125, -13772886, -33693480, 21055004, 22749368, 7246684, 28955058, +7681549, -4342212, -9010841, -25575456, 40830644, -17884244, 38918308, 13913547, -341450, 10280004, +-13003550, 19252728, 22247394, -14261439, 17383880, 6853694, -35457640, 27414240, 31702764, -4224637, +-16188805, 3058554, 2729452, 554051, -2936147, 52184928, 3358665, -31544388, -12433393, 5086315, +-39020852, -59122372, 13951128, 71422088, 22967874, -6615860, -38202660, -13657459, 2507724, 46917148, +-19808390, -26489748, -41519448, -71721656, 20309290, 35698156, -47370804, -3361886, 25371446, -10449655, +-21774948, 19520626, -21064130, -10325638, 692564, -14503568, 23715198, -7598871, -12127914, -3634616, +12070469, 45105208, -7873749, -19906636, -23848880, 8791261, 20274930, 13217225, -21233782, -2727841, +23170274, 1064078, -19381576, 6436546, -17431662, 41440528, -19698330, -44324064, 14275398, -7312719, +20139102, -29738890, -30521112, 29541322, -3536906, -38244000, -21489868, -36624260, 46103252, 22604950, +11565810, -50107236, 7668664, 20163798, -36115308, 1541356, -26265336, -19677392, 18361522, -17723720, +21273510, -14958834, -31417148, -8040179, -8517457, -5927055, 9535901, 1902671, -19716048, 56809532, +-7808788, 23540716, 26539676, 13052942, -7781407, 1943473, -12261595, 27130772, 11224360, -19014358, +14564234, 51314660, 11997454, 21539260, -716723, 4281009, 9538049, -20320564, 9631464, 17121888, +1397475, -23195508, -10539313, -17520782, -5461051, -23241142, -20046760, 1448478, -15731391, 23667418, +9279277, -7008313, -16793322, -9852655, -4705137, 12193949, -2916283, -22036940, -15978889, 3149285, +5690832, 10732050, 5744519, -5806259, 6754910, -19370302, -54101556, 1099512, 68300720, -3182571, +-47596292, -9145059, 33116882, 7676181, 6379100, -2124935, -20039780, -27633282, -14660334, 4780836, +-510564, -25664040, 10107132, -50371376, -7734163, 44238164, 14408542, 57252452, -6727530, -24390582, +-6061810, -6474663, 16508244, 2051921, 300648, -33328410, -15448997, -16744467, -1722819, 35463008, +-4805532, -10821170, 11962558, 12930536, 1439351, -22488986, -33509334, -23281944, -78017008, -120094800, +26946624, 105764640, 31889058, 259835856, 243976160, 107178224, 251017216, 104265160, -49821084, -4488778, +-80820544, -213458256, -119199304, -114530136, -220008096, -161750608, -96014528, -141422528, -97886600, 12578349, +-15737297, -51120848, 42545408, 39113192, -9622874, 41739564, 128942968, 48041892, 15103252, 121942712, +107189496, 27801860, 129026720, 160507760, -14295262, 88605712, 160070752, 50862612, 53750440, 161863360, +89143656, -32202592, 120459872, 78304232, -58421220, 33590404, 88803816, -72533944, -111872624, -44733696, +-211876640, -339239072, -330434912, -365603712, -568404032, -497740544, -417713472, -533232544, -463905312, -313789760, +-366493312, -292750336, -115445496, -72475424, 52023328, 138012336, 261211856, 364685664, 398688384, 468327008, +507501920, 453715520, 408530848, 400821376, 171415904, -13131326, -2270427, 0, 0, 0, +0, 0, 0, }, { -5747740, --9216463, -690953, -9408663, -5207648, -1798518, -1622424, -255014, -2236604, -419833, 2037425, --2442763, 2855617, 351114, -3832185, 2399276, -658741, 2564632, 381178, -3635690, 2573759, -1425392, 2024003, -1553704, -2319819, -1667521, -1928977, 1527398, -316217, 425202, -2103460, -1513976, -2552284, -3497714, 191126, -4347581, -3234110, -1664837, 4675609, 579821, 1805497, --5655398, 832150, 969052, -4862977, 1753420, 386010, -5078799, -925565, -374199, -3939022, -4518306, -2825015, -1625108, 2663417, -187368, -4773856, -477278, -3299609, 3722126, 3245922, --4551592, -2374043, -3041374, -2056753, -1284732, 1970853, 1727651, 1132261, 3125663, -27917, -1241246, -458488, -1240172, -1636383, -746787, 11343009, -5726802, 626528, -3499325, -70867, -4510253, 2416456, 2749853, -2404108, 3452080, -3615289, 3898220, 2225867, 4738423, 2259690, --1166084, -5435281, 5792837, 4310000, 1294933, 864362, 323196, -2226404, -2965138, 3262565, -1662689, 2179696, 2739652, -2895882, -488553, 2943663, 3062312, -298500, -2745021, -4582730, --253940, 1007707, -3126199, 1189169, 475668, -4129611, -2586107, -209380, 1864016, 158377, --2371359, 4072166, 432718, -1240709, -3251290, -557809, 26307, -5457293, 2231773, 3561065, --2266669, 4530117, 3300146, -505732, 2661806, 1846836, 5531918, 1912871, 730681, -870268, -1837709, -4708358, 216359, 2291365, -2757906, 2595234, 2710661, 3393561, 1677185, 4340065, --10730976, -7254200, -1204202, -4619774, -4230543, 2151242, -6180995, -5668283, 1516124, -2491618, --2520072, 2558190, -2063195, -3978750, -612033, -175020, -1329292, -1748589, -1279900, -4588636, --465467, -3273839, -2636573, 0, 4045322, -810138, 5921686, -3045669, 3483219, 4334696, --4913980, 1770063, -1387274, 1036161, -3540664, 1775969, 1967632, 3363496, -1870458, -3856344, --1589138, -2066953, 1058173, 1648194, -5032091, -500901, -3531000, -2554432, 670552, -3845070, --6556268, -1088774, 5949604, 1462436, 1908039, 424665, 1151051, 929860, 1993402, 2527052, -6648610, 591095, -3417183, -3928821, -1209570, -1846836, -897111, -8027294, 1250372, -541166, -2100776, -1059783, 167504, -1922535, -1605781, 7887708, 678068, 573915, 8603893, 9923522, -7634841, 5673115, 8027831, 3263102, 3492345, -721018, 2287070, 8458401, 910533, 2591476, --3127810, -2073932, 6484864, -4321811, -7903277, 2419140, -6598681, 5735392, 1365263, 6880538, --2160906, -398895, -1666447, 2286533, 2768643, -57982, -6711960, -1348083, 5804112, -3796751, -2636036, 1578937, -1267015, -1605781, 6454262, 4898947, 11234024, 4546223, 973884, 2753074, --898722, 759672, 3577171, 2189360, 9595494, -3990025, -2662343, 770410, 2521683, -1385664, -4492536, -4013110, 936303, -128849, -3096135, 1150514, 1051193, -4129074, -5729487, -3404299, -4734128, 2472828, 150861, -103616, 3637301, 581431, 1334661, 6423661, 3200825, -978179, --685047, 5966247, -4286378, 1465658, 18814642, -460635, 9277129, -1794223, -1315334, 9682467, --9501005, -3473555, -641024, 4702989, 3474629, -2212445, 1971390, 749472, -8611946, 2037962, -4750771, 3966939, -9672803, -3608846, 1184337, -7181722, -1846836, 345745, 389231, 755914, --1006633, 4255776, -3088618, 3335042, 7377680, 7092065, -2069101, -4419522, -699006, 8000987, --426276, -686658, 101469, 556735, -4243965, 468688, 3494493, 245887, 845572, 3033858, --2180233, 1938104, 1308354, -1213328, 5794448, 249108, 4599910, 575526, -1555315, 1661079, -3055332, 2290828, -167504, -4908611, -4169340, -5850819, -2492155, -609349, -78383, -1074816, -3945464, 3029026, -2783676, -5825587, -26307, 2280091, 3061775, -3772592, -1029182, -5024575, --13927505, -3649112, -4704063, 887985, 2343979, -2385318, -2765959, -26305064, 557272, 8441221, --6103149, -9845676, 7407208, -11136850, -1643362, -4978941, -5810017, -3630858, -3627637, 408559, -4523675, -800475, 2550674, -2821257, 3432753, -2552284, -3918621, 1792075, -1422708, -6243272, --7956964, 3892851, 462246, 3853660, 1244467, 8554501, 1285806, 3025805, -3984119, -6965900, --1954747, -3398393, 7151121, -3172907, 284005, 1966558, -3399467, 10013716, 6641093, 306016, --7750806, -9787694, -3274376, 3520263, -8883603, -3221, -4262755, -8315594, 908922, -13133473, --2851322, -1125281, -4872641, 9349070, -444529, -1044214, -36507, 6071473, 7313793, 2652142, --7108171, -1764695, -1723356, 4567698, 1920924, 2982318, 5953362, -15421617, -21805012, 2320893, --4704063, 4544613, -5847061, -11409581, 633508, 9730248, 2431488, 5819144, 5324686, 3452080, -2829847, -3939559, 3082176, 6340446, -10166724, -5321465, -3129421, -2747169, 4243428, -1250909, -1714229, 6599218, 6470905, -2850248, -5550709, 1018444, -2930242, -2913599, -5357972, -4377646, --8365523, 1739999, -2863670, -442382, 8220031, -1929514, 1926293, 1688459, -5151814, 4325569, -5093295, 6121402, -5242008, 9880035, -1203128, -7893076, -5862094, -8603893, 8142721, -3291556, --8218420, 2240362, -823560, -6570226, 7083475, 8359080, -2481954, -7798587, 6027450, 1252520, -4874251, -1143535, 12459163, 6410239, -6242198, -4023311, -2559801, -3367791, 4683125, 4606353, -7752416, -20522964, -208843, -3575560, 1174137, 144955, 7613367, 5911486, 7888245, -1137630, -10830834, -4960687, 7292855, 9360881, 1473174, 9327058, 1752884, 2543158, -2799782, -778463, --4088809, 7418483, -690416, -674847, 9984188, 6329171, -156766, 2902324, -1130650, -201863, -6386617, -3665755, -6856916, 128312, -1195612, 3510062, -18905910, 11320997, 11773579, 4889284, -2037962, 439160, -6241661, -12298639, 7864622, -4891968, -5995238, -3673808, 6995428, -5082020, -4158602, 4705674, -4811974, -2829847, -11145440, 5020280, -7424388, 4215511, 210990, 3774740, -6001143, 10463614, 3904662, -4751845, -12057047, -1982664, 6324340, 11485279, 7840463, -1738925, --3164317, -7397008, -13321915, -1351304, 7131257, 3710315, 806917, 1886028, 8020852, 26946624, -14877230, -1440425, 2698313, 2267743, 6082748, 10550050, -1388885, 1943473, 18202608, 1679332, --709743, 10739566, 7688529, -7735773, 4550518, 885300, 7325604, 4791573, -12554726, 9336185, --5815923, -1081258, 1068910, 7227356, 1317481, 1748589, 5656472, 6241661, -6299107, 6403260, -19925964, -3859565, 9006010, 8995272, -5097053, 6962679, 1796370, -5196911, -5376226, 3151969, --4846871, -12866111, -1824287, -1027571, 1038845, -16393353, -4157528, 4403952, -10373420, -7300908, --16924318, 4944581, 7272454, -11919608, -4447976, -6075231, 11573863, -343061, -7354595, -5479305, --8182450, 3142306, 9474161, -7887171, 3239479, -3822521, 4149475, 10537165, 4006131, 8075613, -8251169, 10420128, 743566, 27285928, 8026220, 582505, -1024887, -4586488, 751619, 4649839, --2803540, -6999186, -8953933, 147640, 7371775, -9050033, 4734665, 4993437, -1826435, 18203146, -7201587, -5267241, -2652679, -2008971, 7299834, -3384434, -5719286, -7505992, 4861903, -15669114, -1069984, -4873178, -4966056, 4181151, 1593433, -6162205, -2885144, -5956046, 8026757, -3142842, --11410654, -2123325, 775242, 201327, -6420976, -10426033, 1401770, -2533494, -848256, 2573222, --1602023, 8361765, 2327336, 4667556, -5386426, 12474733, 4262755, -7436736, 9167608, 15939161, --4453344, -5001490, 8926553, 7022272, 3597572, 3870303, -10112500, -3775813, -11018202, 2207613, -10590316, 3575024, -13157095, -3968013, 3944928, -14443438, -20863340, -3514894, -440234, 3440806, --21502754, 10066330, 28809566, -11890080, 20256676, -4633733, -4226248, -6381248, -10285373, 7651484, -426276, 5206574, 5355288, -18916646, 396748, 8712878, -7489886, -4099546, -11712376, 20963736, --12935368, 10322417, 9966472, -12552042, -4962835, -4402879, 9018894, -10040023, -3870839, 10161893, --1552094, -2747705, -4727686, 12409771, 2436320, -2019708, -4850629, 324807, -9182640, 10244571, --930934, 4719096, 25842282, 17157858, -14395120, -10386842, 4341675, -1301375, 11031623, -5843303, --8261370, -3027415, -15649250, -6142877, -1501628, -12258374, -6612102, 27367532, 6963216, 166967, --865973, -220117, 8543227, 9715753, -1488743, 9617506, 1344325, -5077188, 1657321, -14384919, --408559, -13249437, -6523519, 8505109, 12790413, -17325362, 8056285, -22578644, 3608846, 21577916, --5881421, -5059472, 4310537, -6213207, -5638219, 6393059, -1041530, -774705, -483184, -13972065, -24255828, -25540560, -2688113, -113817, 8745627, 5863704, 177704, -9346386, -7215008, 3658239, -19008988, -983011, -8492224, -5165772, -13601625, -306553, -7979513, -5694053, -2780455, 4919348, --410706, 1330903, -9107478, 2568391, 2713883, 6621229, 5027796, 6692096, -12278238, 869731, --2319282, 9037148, 2343979, 17500382, 3910568, -2926483, 1842004, -8076686, 363998, 8263517, -9865540, -13210783, -10489921, 67646, 15541876, -22122302, 6870874, 28108950, 15648176, -5890011, -3484292, -13069585, 7249905, 14750528, -21388938, 6660421, -9503689, -1428077, -28963112, 2006824, --10795400, 14024142, 3285650, -12258910, -5893232, -17709224, 27798102, 7722888, 14687178, -16546362, --17951352, -3612604, 5104032, -5326297, -2181844, 8972187, 2779381, 2611340, 8385924, -20489678, --1992328, 4832, 5352066, -14340896, 2044941, 2119566, -9607842, -5685463, -13319230, -10424959, -79994, 4040491, -10778220, 519154, -4828080, -10005663, 3871913, -333397, 7831336, -21758304, --22327924, 4321274, -1882269, 8075076, 18797462, 1749125, -11820287, 16428787, -8396124, -16139413, --12206834, -5564130, 1263794, -17121350, -6582575, 16075526, 22200686, 9035001, 6083285, 4265440, --2790118, 13838921, 7802345, -17018272, -9352291, -306553, 1331977, 15195057, 9647570, 2103460, --2819646, -2330020, -8122857, 9937481, 7602092, 17539036, 3555696, 4641249, 1617592, 31219580, -3040300, 6793028, 18395344, 1382980, 22909892, -660351, -10797548, -11467026, -21861384, 4124242, --9314173, -445603, 1701881, 7967701, 11225971, 19381040, 19779398, -2873333, 17617956, -1097364, --1607392, 6933151, 14880988, 6749541, 4159139, -23483270, -12184822, -19029926, 9826348, 19650012, -3825742, -8041253, 13609678, 19741280, -2493766, 3362423, -4376035, 16681116, 13994614, 12082817, --6684043, -11914239, -1673964, -2787434, -27063662, 5200132, 4122632, 2874944, -6539625, -3191161, --30067456, -10354629, -27186606, -4387846, -20159502, -10288594, 20702816, 5794448, 21853868, 1888175, --16430934, -7916162, -17031692, -33855080, 5907728, -20742008, -5000953, 20726976, 9800578, 8421894, -3208341, -3423089, 292595, 4376572, -12701829, 12210592, -22698902, -25687126, 1953673, -3718368, -10753524, 21897354, 18920404, 20548734, -11850889, -20419886, 15728170, -9213242, 16262357, 5030481, --26252450, 6750615, 4836670, -29345900, 15820512, -13258564, -13778792, 8266739, 8935679, 1647657, -10613401, 1067836, 484794, -6636798, -4048544, 6793565, -4154844, -9779641, 617938, -18644990, -6804839, -23769422, -14775761, 1347009, 9507984, -2812667, -10094247, 4282620, 7458211, 6212134, -321586, 20107964, -44900124, -9472550, -12414603, -14111115, 19244674, -14828375, -2336999, -35196720, --10320270, -3287798, 1636919, 25181394, -6082748, 4268124, -14842870, 13572097, -18425946, -10195715, -9033390, -40210556, 5699959, 24351390, 28671054, 24461450, 13616120, 35325568, 17606682, 2690260, --8541079, -4640712, -12998719, -23419382, -3071975, 9302899, -38356744, -38178500, -180389, 6684043, -26735634, -8483097, 12261058, 11643119, 5786932, 6516539, -42193760, 33496986, 17915382, 41439992, -14949171, -1400159, -15387794, -9290551, -9665824, -14460081, 10531260, 8249559, -15184320, -16722455, -9026411, 12803834, 21419002, 6512781, -13350369, -19385334, 4216584, 3917010, 1393180, 2958159, -38144140, 13491566, 7344394, 13168907, 13871671, 16164646, 467615, -23492934, 17155174, 53871236, --5265630, -14050449, -32151052, -6156299, 43091944, 5856725, 18006650, 6839736, -58945204, 13187697, -10998338, 2279554, 6505802, -3029563, 1386738, 13303124, -31351650, -11914776, 27707370, 11508365, -4447976, -22388590, 18024904, 8209830, -20634096, -21386252, -14567455, 23979340, 46189688, 44575856, -47611860, 50037980, 3842922, -17688822, 19793356, 38005628, -77828568, -28494960, 6878390, -46692200, --41366976, -19015430, -24838870, 2113124, -18103824, 48990544, -4579509, -18471580, -6436546, -38956428, --9852118, -31610960, -12099460, 4520453, -38966092, -7521025, 31439160, -26625040, -6698539, 7958038, -561030, 11901891, 3407520, -898185, 12183748, 3285650, -18985366, -4686346, 18284750, -9891310, --23809152, -9116605, -29020020, -15741592, -51390356, 3978750, -34746284, 16013786, 7150584, -14212047, --45185740, 3039226, -4051765, 55432996, 23411866, -265751, 31679678, 11975443, 1235340, 23597088, --28518582, -15517717, 3251290, 20577726, -23341000, -16467978, 83362096, -9560597, 43829604, -34971772, -1277216, -25567404, 19338628, -10339060, 29473140, 41802916, 2893734, -32982128, 28332826, -34684008, --30291868, 62000000, -35809828, 23271744, 19589882, -31148176, 17022566, 10460393, 6463389, -4800163, -23849954, 13451301, -31171262, 22849226, 25164750, 5981816, 4079145, 16481400, -586800, -29518236, -39723616, -21552146, 8942659, -15660525, -3921305, 6335614, -7424388, 33867428, 7403450, -2835215, --7641284, -170725, 6600828, -31451508, 10790568, -15452219, -11192148, -6163815, 393526, -14358076, --7156490, 5900212, 34972844, 2435783, -6436546, -19681150, 10009421, 8352638, 2015950, 29091960, --5339718, -156229, 32979444, 12765717, 3315715, -27565636, -14328548, 22978076, 12938052, -25112136, -3088082, -61221536, -29738890, 62624380, -10781442, 36352068, 44729936, 17221208, 11048266, 25086904, --3125126, -15158550, 18344342, 13691819, 6467147, 40351216, 27632746, 37771016, -13725105, -55264956, -6891275, -4113505, 17012366, 9008694, -22792318, 13087302, 8916352, -19648938, -27826556, -13704704, --44405132, -38689604, 25351044, -3815542, -45897096, -10285373, 1071594, 16894790, 10159745, -23347442, --31725850, 5557688, 35956392, -16079821, 11693585, -23746874, 5841693, -27142046, 15830713, 23346906, --18395882, -27998892, -24991878, -628676, 8190503, -10396505, -12698071, -8164196, -43256228, -30989262, -13557601, -25528212, -10120554, 13057237, -27905476, -34934192, 9902584, 22910966, -7259569, -42554536, -15531139, 21058224, 52649856, 3499862, 9892920, 14631880, -30129196, 12896713, -13387413, -46270756, --13643500, 34288336, 938450, -21187610, -69268696, 43906912, 43431784, -10176925, 33298344, 53128208, --5667210, 8993125, 28766080, -13380434, -11127723, 21986474, -4459250, 12113418, -25556130, -83468928, -23110682, -10064719, 62672164, -21772800, -12862890, -25306484, -70189968, 32065152, -40542880, -24548422, -2115272, -420907, 55632712, -39471288, -26502096, 35786204, 22418656, 18564460, -5808944, 17763448, --11669426, -18217640, -15564425, 42158864, 36264020, 54885924, -16357920, -20622822, 2143189, -3637837, -21391084, -33064268, 8340290, -34713000, 19865834, 34238944, 13031468, -27940372, 20505784, -24568286, -57176752, 28655484, 9324374, 7812009, -7154342, -43404940, 26225070, -58955404, 13932874, 11492259, -30565672, 23501524, -49664856, 15994995, -30664992, -18592914, 15612743, -4475893, 20795694, 12898324, --45214732, 19816980, 44682692, 57576184, -14993194, 17411798, -21946746, 40405440, -56023552, -2826625, --11329050, 17613124, 19671488, -62097176, 43461848, -2959769, -4911295, 18555870, 9877351, 21511344, -2005213, 12113418, -26068840, 24883430, 2792266, -20236812, 12593918, -6139119, -3580929, 24434068, -9080635, -30081414, 15439871, -12531104, 24437828, -16945256, 3704409, -7048578, 9558450, -6536940, -2553358, -11315091, 28468654, 543850, -2588792, 12895639, 7183870, -12699681, -6921340, 10792179, -7023346, 13269838, -14885820, 7662222, -3275986, -28708098, -6511708, 12167642, 8017094, 9034464, -3645354, -25208236, 543850, 2351495, -1274532, 10872173, -10117332, 10640781, 363998, 7201587, --11721503, -1954210, -7125888, 38582764, -16983374, 11799886, 7131793, -1684164, 6163815, -7814693, -5270999, 12191802, -15927349, -6799470, 864899, -633508, -2373506, -3015604, -22502408, 8468065, --8503498, 51747376, -3650185, -16884054, -25515864, -11738682, -14293651, 18701362, 10946798, -13785234, -1203665, 1495186, 6201933, 721555, 13074954, 4367982, 10303627, -3649649, -329102, -3215320, -4842576, 10977400, -10296110, -212601, -5087389, 210990, 13571560, -7846369, 1330366, -3635690, -5344013, 2592013, -7441031, -2925947, 7969312, -2624762, 12993350, 9077413, -13599477, 4171487, -2848100, 6939057, 2973191, -13018583, 8640400, -2592550, 8393440, 6565932, -15378667, 4009352, --23085, 3254512, -1786170, -6922414, 10836739, -2877091, 4864051, 71941, -3381750, 4872104, --6631967, -1090922, 8989367, -6421513, -7638063, 15039365, -9940702, 14049375, -1620813, -11545946, -23323284, -21560736, 18578954, -6538551, -11405823, 12179990, -11252277, -25596394, -43371116, 54744192, -157598464, 24665460, 15432354, -115311280, -142109200, -45834816, -27808840, 95988224, 146946944, 75275208, -22033720, -49680960, -106072272, -97159680, -81017040, 6127308, 121730648, 101404712, 58438400, 19487878, --51940652, -67829880, -53519588, -52158084, -18191334, 24225764, 33848636, 69494184, 50077172, 11759084, --16885664, -10355166, -56188908, -27720792, -28387586, -38909184, 22931904, 42764988, 24982752, 62437552, -16689706, -15399068, -24188718, -42293616, -33091112, -5680631, -10286984, 12308839, 25930328, 22628036, -16449188, 10697153, -5866926, -23577222, -16412681, -19754702, 5929203, 21559126, 7081328, 4702989, --9989557, -20806970, -4127464, -974421, -771484, 15134928, 13889387, 15029164, 5647345, -6951942, --18339510, -26736172, -26924076, -17573932, 15055471, 7797513, 2724083, 0, 0, 0, -0, 0, 0, }, +-9216463, -690953, -9408663, -5207648, -1798518, -1622424, -255014, -2236604, -419833, 2037425, +-2442763, 2855617, 351114, -3832185, 2399276, -658741, 2564632, 381178, -3635690, 2573759, +1425392, 2024003, -1553704, -2319819, -1667521, -1928977, 1527398, -316217, 425202, -2103460, +1513976, -2552284, -3497714, 191126, -4347581, -3234110, -1664837, 4675609, 579821, 1805497, +-5655398, 832150, 969052, -4862977, 1753420, 386010, -5078799, -925565, -374199, -3939022, +4518306, -2825015, -1625108, 2663417, -187368, -4773856, -477278, -3299609, 3722126, 3245922, +-4551592, -2374043, -3041374, -2056753, -1284732, 1970853, 1727651, 1132261, 3125663, -27917, +1241246, -458488, -1240172, -1636383, -746787, 11343009, -5726802, 626528, -3499325, -70867, +4510253, 2416456, 2749853, -2404108, 3452080, -3615289, 3898220, 2225867, 4738423, 2259690, +-1166084, -5435281, 5792837, 4310000, 1294933, 864362, 323196, -2226404, -2965138, 3262565, +1662689, 2179696, 2739652, -2895882, -488553, 2943663, 3062312, -298500, -2745021, -4582730, +-253940, 1007707, -3126199, 1189169, 475668, -4129611, -2586107, -209380, 1864016, 158377, +-2371359, 4072166, 432718, -1240709, -3251290, -557809, 26307, -5457293, 2231773, 3561065, +-2266669, 4530117, 3300146, -505732, 2661806, 1846836, 5531918, 1912871, 730681, -870268, +1837709, -4708358, 216359, 2291365, -2757906, 2595234, 2710661, 3393561, 1677185, 4340065, +-10730976, -7254200, -1204202, -4619774, -4230543, 2151242, -6180995, -5668283, 1516124, -2491618, +-2520072, 2558190, -2063195, -3978750, -612033, -175020, -1329292, -1748589, -1279900, -4588636, +-465467, -3273839, -2636573, 0, 4045322, -810138, 5921686, -3045669, 3483219, 4334696, +-4913980, 1770063, -1387274, 1036161, -3540664, 1775969, 1967632, 3363496, -1870458, -3856344, +-1589138, -2066953, 1058173, 1648194, -5032091, -500901, -3531000, -2554432, 670552, -3845070, +-6556268, -1088774, 5949604, 1462436, 1908039, 424665, 1151051, 929860, 1993402, 2527052, +6648610, 591095, -3417183, -3928821, -1209570, -1846836, -897111, -8027294, 1250372, -541166, +2100776, -1059783, 167504, -1922535, -1605781, 7887708, 678068, 573915, 8603893, 9923522, +7634841, 5673115, 8027831, 3263102, 3492345, -721018, 2287070, 8458401, 910533, 2591476, +-3127810, -2073932, 6484864, -4321811, -7903277, 2419140, -6598681, 5735392, 1365263, 6880538, +-2160906, -398895, -1666447, 2286533, 2768643, -57982, -6711960, -1348083, 5804112, -3796751, +2636036, 1578937, -1267015, -1605781, 6454262, 4898947, 11234024, 4546223, 973884, 2753074, +-898722, 759672, 3577171, 2189360, 9595494, -3990025, -2662343, 770410, 2521683, -1385664, +4492536, -4013110, 936303, -128849, -3096135, 1150514, 1051193, -4129074, -5729487, -3404299, +4734128, 2472828, 150861, -103616, 3637301, 581431, 1334661, 6423661, 3200825, -978179, +-685047, 5966247, -4286378, 1465658, 18814642, -460635, 9277129, -1794223, -1315334, 9682467, +-9501005, -3473555, -641024, 4702989, 3474629, -2212445, 1971390, 749472, -8611946, 2037962, +4750771, 3966939, -9672803, -3608846, 1184337, -7181722, -1846836, 345745, 389231, 755914, +-1006633, 4255776, -3088618, 3335042, 7377680, 7092065, -2069101, -4419522, -699006, 8000987, +-426276, -686658, 101469, 556735, -4243965, 468688, 3494493, 245887, 845572, 3033858, +-2180233, 1938104, 1308354, -1213328, 5794448, 249108, 4599910, 575526, -1555315, 1661079, +3055332, 2290828, -167504, -4908611, -4169340, -5850819, -2492155, -609349, -78383, -1074816, +3945464, 3029026, -2783676, -5825587, -26307, 2280091, 3061775, -3772592, -1029182, -5024575, +-13927505, -3649112, -4704063, 887985, 2343979, -2385318, -2765959, -26305064, 557272, 8441221, +-6103149, -9845676, 7407208, -11136850, -1643362, -4978941, -5810017, -3630858, -3627637, 408559, +4523675, -800475, 2550674, -2821257, 3432753, -2552284, -3918621, 1792075, -1422708, -6243272, +-7956964, 3892851, 462246, 3853660, 1244467, 8554501, 1285806, 3025805, -3984119, -6965900, +-1954747, -3398393, 7151121, -3172907, 284005, 1966558, -3399467, 10013716, 6641093, 306016, +-7750806, -9787694, -3274376, 3520263, -8883603, -3221, -4262755, -8315594, 908922, -13133473, +-2851322, -1125281, -4872641, 9349070, -444529, -1044214, -36507, 6071473, 7313793, 2652142, +-7108171, -1764695, -1723356, 4567698, 1920924, 2982318, 5953362, -15421617, -21805012, 2320893, +-4704063, 4544613, -5847061, -11409581, 633508, 9730248, 2431488, 5819144, 5324686, 3452080, +2829847, -3939559, 3082176, 6340446, -10166724, -5321465, -3129421, -2747169, 4243428, -1250909, +1714229, 6599218, 6470905, -2850248, -5550709, 1018444, -2930242, -2913599, -5357972, -4377646, +-8365523, 1739999, -2863670, -442382, 8220031, -1929514, 1926293, 1688459, -5151814, 4325569, +5093295, 6121402, -5242008, 9880035, -1203128, -7893076, -5862094, -8603893, 8142721, -3291556, +-8218420, 2240362, -823560, -6570226, 7083475, 8359080, -2481954, -7798587, 6027450, 1252520, +4874251, -1143535, 12459163, 6410239, -6242198, -4023311, -2559801, -3367791, 4683125, 4606353, +7752416, -20522964, -208843, -3575560, 1174137, 144955, 7613367, 5911486, 7888245, -1137630, +10830834, -4960687, 7292855, 9360881, 1473174, 9327058, 1752884, 2543158, -2799782, -778463, +-4088809, 7418483, -690416, -674847, 9984188, 6329171, -156766, 2902324, -1130650, -201863, +6386617, -3665755, -6856916, 128312, -1195612, 3510062, -18905910, 11320997, 11773579, 4889284, +2037962, 439160, -6241661, -12298639, 7864622, -4891968, -5995238, -3673808, 6995428, -5082020, +4158602, 4705674, -4811974, -2829847, -11145440, 5020280, -7424388, 4215511, 210990, 3774740, +6001143, 10463614, 3904662, -4751845, -12057047, -1982664, 6324340, 11485279, 7840463, -1738925, +-3164317, -7397008, -13321915, -1351304, 7131257, 3710315, 806917, 1886028, 8020852, 26946624, +14877230, -1440425, 2698313, 2267743, 6082748, 10550050, -1388885, 1943473, 18202608, 1679332, +-709743, 10739566, 7688529, -7735773, 4550518, 885300, 7325604, 4791573, -12554726, 9336185, +-5815923, -1081258, 1068910, 7227356, 1317481, 1748589, 5656472, 6241661, -6299107, 6403260, +19925964, -3859565, 9006010, 8995272, -5097053, 6962679, 1796370, -5196911, -5376226, 3151969, +-4846871, -12866111, -1824287, -1027571, 1038845, -16393353, -4157528, 4403952, -10373420, -7300908, +-16924318, 4944581, 7272454, -11919608, -4447976, -6075231, 11573863, -343061, -7354595, -5479305, +-8182450, 3142306, 9474161, -7887171, 3239479, -3822521, 4149475, 10537165, 4006131, 8075613, +8251169, 10420128, 743566, 27285928, 8026220, 582505, -1024887, -4586488, 751619, 4649839, +-2803540, -6999186, -8953933, 147640, 7371775, -9050033, 4734665, 4993437, -1826435, 18203146, +7201587, -5267241, -2652679, -2008971, 7299834, -3384434, -5719286, -7505992, 4861903, -15669114, +1069984, -4873178, -4966056, 4181151, 1593433, -6162205, -2885144, -5956046, 8026757, -3142842, +-11410654, -2123325, 775242, 201327, -6420976, -10426033, 1401770, -2533494, -848256, 2573222, +-1602023, 8361765, 2327336, 4667556, -5386426, 12474733, 4262755, -7436736, 9167608, 15939161, +-4453344, -5001490, 8926553, 7022272, 3597572, 3870303, -10112500, -3775813, -11018202, 2207613, +10590316, 3575024, -13157095, -3968013, 3944928, -14443438, -20863340, -3514894, -440234, 3440806, +-21502754, 10066330, 28809566, -11890080, 20256676, -4633733, -4226248, -6381248, -10285373, 7651484, +426276, 5206574, 5355288, -18916646, 396748, 8712878, -7489886, -4099546, -11712376, 20963736, +-12935368, 10322417, 9966472, -12552042, -4962835, -4402879, 9018894, -10040023, -3870839, 10161893, +-1552094, -2747705, -4727686, 12409771, 2436320, -2019708, -4850629, 324807, -9182640, 10244571, +-930934, 4719096, 25842282, 17157858, -14395120, -10386842, 4341675, -1301375, 11031623, -5843303, +-8261370, -3027415, -15649250, -6142877, -1501628, -12258374, -6612102, 27367532, 6963216, 166967, +-865973, -220117, 8543227, 9715753, -1488743, 9617506, 1344325, -5077188, 1657321, -14384919, +-408559, -13249437, -6523519, 8505109, 12790413, -17325362, 8056285, -22578644, 3608846, 21577916, +-5881421, -5059472, 4310537, -6213207, -5638219, 6393059, -1041530, -774705, -483184, -13972065, +24255828, -25540560, -2688113, -113817, 8745627, 5863704, 177704, -9346386, -7215008, 3658239, +19008988, -983011, -8492224, -5165772, -13601625, -306553, -7979513, -5694053, -2780455, 4919348, +-410706, 1330903, -9107478, 2568391, 2713883, 6621229, 5027796, 6692096, -12278238, 869731, +-2319282, 9037148, 2343979, 17500382, 3910568, -2926483, 1842004, -8076686, 363998, 8263517, +9865540, -13210783, -10489921, 67646, 15541876, -22122302, 6870874, 28108950, 15648176, -5890011, +3484292, -13069585, 7249905, 14750528, -21388938, 6660421, -9503689, -1428077, -28963112, 2006824, +-10795400, 14024142, 3285650, -12258910, -5893232, -17709224, 27798102, 7722888, 14687178, -16546362, +-17951352, -3612604, 5104032, -5326297, -2181844, 8972187, 2779381, 2611340, 8385924, -20489678, +-1992328, 4832, 5352066, -14340896, 2044941, 2119566, -9607842, -5685463, -13319230, -10424959, +79994, 4040491, -10778220, 519154, -4828080, -10005663, 3871913, -333397, 7831336, -21758304, +-22327924, 4321274, -1882269, 8075076, 18797462, 1749125, -11820287, 16428787, -8396124, -16139413, +-12206834, -5564130, 1263794, -17121350, -6582575, 16075526, 22200686, 9035001, 6083285, 4265440, +-2790118, 13838921, 7802345, -17018272, -9352291, -306553, 1331977, 15195057, 9647570, 2103460, +-2819646, -2330020, -8122857, 9937481, 7602092, 17539036, 3555696, 4641249, 1617592, 31219580, +3040300, 6793028, 18395344, 1382980, 22909892, -660351, -10797548, -11467026, -21861384, 4124242, +-9314173, -445603, 1701881, 7967701, 11225971, 19381040, 19779398, -2873333, 17617956, -1097364, +-1607392, 6933151, 14880988, 6749541, 4159139, -23483270, -12184822, -19029926, 9826348, 19650012, +3825742, -8041253, 13609678, 19741280, -2493766, 3362423, -4376035, 16681116, 13994614, 12082817, +-6684043, -11914239, -1673964, -2787434, -27063662, 5200132, 4122632, 2874944, -6539625, -3191161, +-30067456, -10354629, -27186606, -4387846, -20159502, -10288594, 20702816, 5794448, 21853868, 1888175, +-16430934, -7916162, -17031692, -33855080, 5907728, -20742008, -5000953, 20726976, 9800578, 8421894, +3208341, -3423089, 292595, 4376572, -12701829, 12210592, -22698902, -25687126, 1953673, -3718368, +10753524, 21897354, 18920404, 20548734, -11850889, -20419886, 15728170, -9213242, 16262357, 5030481, +-26252450, 6750615, 4836670, -29345900, 15820512, -13258564, -13778792, 8266739, 8935679, 1647657, +10613401, 1067836, 484794, -6636798, -4048544, 6793565, -4154844, -9779641, 617938, -18644990, +6804839, -23769422, -14775761, 1347009, 9507984, -2812667, -10094247, 4282620, 7458211, 6212134, +321586, 20107964, -44900124, -9472550, -12414603, -14111115, 19244674, -14828375, -2336999, -35196720, +-10320270, -3287798, 1636919, 25181394, -6082748, 4268124, -14842870, 13572097, -18425946, -10195715, +9033390, -40210556, 5699959, 24351390, 28671054, 24461450, 13616120, 35325568, 17606682, 2690260, +-8541079, -4640712, -12998719, -23419382, -3071975, 9302899, -38356744, -38178500, -180389, 6684043, +26735634, -8483097, 12261058, 11643119, 5786932, 6516539, -42193760, 33496986, 17915382, 41439992, +14949171, -1400159, -15387794, -9290551, -9665824, -14460081, 10531260, 8249559, -15184320, -16722455, +9026411, 12803834, 21419002, 6512781, -13350369, -19385334, 4216584, 3917010, 1393180, 2958159, +38144140, 13491566, 7344394, 13168907, 13871671, 16164646, 467615, -23492934, 17155174, 53871236, +-5265630, -14050449, -32151052, -6156299, 43091944, 5856725, 18006650, 6839736, -58945204, 13187697, +10998338, 2279554, 6505802, -3029563, 1386738, 13303124, -31351650, -11914776, 27707370, 11508365, +4447976, -22388590, 18024904, 8209830, -20634096, -21386252, -14567455, 23979340, 46189688, 44575856, +47611860, 50037980, 3842922, -17688822, 19793356, 38005628, -77828568, -28494960, 6878390, -46692200, +-41366976, -19015430, -24838870, 2113124, -18103824, 48990544, -4579509, -18471580, -6436546, -38956428, +-9852118, -31610960, -12099460, 4520453, -38966092, -7521025, 31439160, -26625040, -6698539, 7958038, +561030, 11901891, 3407520, -898185, 12183748, 3285650, -18985366, -4686346, 18284750, -9891310, +-23809152, -9116605, -29020020, -15741592, -51390356, 3978750, -34746284, 16013786, 7150584, -14212047, +-45185740, 3039226, -4051765, 55432996, 23411866, -265751, 31679678, 11975443, 1235340, 23597088, +-28518582, -15517717, 3251290, 20577726, -23341000, -16467978, 83362096, -9560597, 43829604, -34971772, +1277216, -25567404, 19338628, -10339060, 29473140, 41802916, 2893734, -32982128, 28332826, -34684008, +-30291868, 62000000, -35809828, 23271744, 19589882, -31148176, 17022566, 10460393, 6463389, -4800163, +23849954, 13451301, -31171262, 22849226, 25164750, 5981816, 4079145, 16481400, -586800, -29518236, +39723616, -21552146, 8942659, -15660525, -3921305, 6335614, -7424388, 33867428, 7403450, -2835215, +-7641284, -170725, 6600828, -31451508, 10790568, -15452219, -11192148, -6163815, 393526, -14358076, +-7156490, 5900212, 34972844, 2435783, -6436546, -19681150, 10009421, 8352638, 2015950, 29091960, +-5339718, -156229, 32979444, 12765717, 3315715, -27565636, -14328548, 22978076, 12938052, -25112136, +3088082, -61221536, -29738890, 62624380, -10781442, 36352068, 44729936, 17221208, 11048266, 25086904, +-3125126, -15158550, 18344342, 13691819, 6467147, 40351216, 27632746, 37771016, -13725105, -55264956, +6891275, -4113505, 17012366, 9008694, -22792318, 13087302, 8916352, -19648938, -27826556, -13704704, +-44405132, -38689604, 25351044, -3815542, -45897096, -10285373, 1071594, 16894790, 10159745, -23347442, +-31725850, 5557688, 35956392, -16079821, 11693585, -23746874, 5841693, -27142046, 15830713, 23346906, +-18395882, -27998892, -24991878, -628676, 8190503, -10396505, -12698071, -8164196, -43256228, -30989262, +13557601, -25528212, -10120554, 13057237, -27905476, -34934192, 9902584, 22910966, -7259569, -42554536, +15531139, 21058224, 52649856, 3499862, 9892920, 14631880, -30129196, 12896713, -13387413, -46270756, +-13643500, 34288336, 938450, -21187610, -69268696, 43906912, 43431784, -10176925, 33298344, 53128208, +-5667210, 8993125, 28766080, -13380434, -11127723, 21986474, -4459250, 12113418, -25556130, -83468928, +23110682, -10064719, 62672164, -21772800, -12862890, -25306484, -70189968, 32065152, -40542880, -24548422, +2115272, -420907, 55632712, -39471288, -26502096, 35786204, 22418656, 18564460, -5808944, 17763448, +-11669426, -18217640, -15564425, 42158864, 36264020, 54885924, -16357920, -20622822, 2143189, -3637837, +21391084, -33064268, 8340290, -34713000, 19865834, 34238944, 13031468, -27940372, 20505784, -24568286, +57176752, 28655484, 9324374, 7812009, -7154342, -43404940, 26225070, -58955404, 13932874, 11492259, +30565672, 23501524, -49664856, 15994995, -30664992, -18592914, 15612743, -4475893, 20795694, 12898324, +-45214732, 19816980, 44682692, 57576184, -14993194, 17411798, -21946746, 40405440, -56023552, -2826625, +-11329050, 17613124, 19671488, -62097176, 43461848, -2959769, -4911295, 18555870, 9877351, 21511344, +2005213, 12113418, -26068840, 24883430, 2792266, -20236812, 12593918, -6139119, -3580929, 24434068, +9080635, -30081414, 15439871, -12531104, 24437828, -16945256, 3704409, -7048578, 9558450, -6536940, +2553358, -11315091, 28468654, 543850, -2588792, 12895639, 7183870, -12699681, -6921340, 10792179, +7023346, 13269838, -14885820, 7662222, -3275986, -28708098, -6511708, 12167642, 8017094, 9034464, +3645354, -25208236, 543850, 2351495, -1274532, 10872173, -10117332, 10640781, 363998, 7201587, +-11721503, -1954210, -7125888, 38582764, -16983374, 11799886, 7131793, -1684164, 6163815, -7814693, +5270999, 12191802, -15927349, -6799470, 864899, -633508, -2373506, -3015604, -22502408, 8468065, +-8503498, 51747376, -3650185, -16884054, -25515864, -11738682, -14293651, 18701362, 10946798, -13785234, +1203665, 1495186, 6201933, 721555, 13074954, 4367982, 10303627, -3649649, -329102, -3215320, +4842576, 10977400, -10296110, -212601, -5087389, 210990, 13571560, -7846369, 1330366, -3635690, +5344013, 2592013, -7441031, -2925947, 7969312, -2624762, 12993350, 9077413, -13599477, 4171487, +2848100, 6939057, 2973191, -13018583, 8640400, -2592550, 8393440, 6565932, -15378667, 4009352, +-23085, 3254512, -1786170, -6922414, 10836739, -2877091, 4864051, 71941, -3381750, 4872104, +-6631967, -1090922, 8989367, -6421513, -7638063, 15039365, -9940702, 14049375, -1620813, -11545946, +23323284, -21560736, 18578954, -6538551, -11405823, 12179990, -11252277, -25596394, -43371116, 54744192, +157598464, 24665460, 15432354, -115311280, -142109200, -45834816, -27808840, 95988224, 146946944, 75275208, +22033720, -49680960, -106072272, -97159680, -81017040, 6127308, 121730648, 101404712, 58438400, 19487878, +-51940652, -67829880, -53519588, -52158084, -18191334, 24225764, 33848636, 69494184, 50077172, 11759084, +-16885664, -10355166, -56188908, -27720792, -28387586, -38909184, 22931904, 42764988, 24982752, 62437552, +16689706, -15399068, -24188718, -42293616, -33091112, -5680631, -10286984, 12308839, 25930328, 22628036, +16449188, 10697153, -5866926, -23577222, -16412681, -19754702, 5929203, 21559126, 7081328, 4702989, +-9989557, -20806970, -4127464, -974421, -771484, 15134928, 13889387, 15029164, 5647345, -6951942, +-18339510, -26736172, -26924076, -17573932, 15055471, 7797513, 2724083, 0, 0, 0, +0, 0, 0, }, }, { { -4990215, --5331128, -6693170, -8210367, -6183143, -3707631, -540629, -3342558, 2524367, -566399, -781147, -1321776, 2819109, -49392, -1805497, -1963874, -3180960, 483184, -2907693, 5175973, 5660230, --2302103, 202937, 1690607, -1453310, 4345433, -1626719, -1887101, 208306, -387621, 3879429, -3149822, 1447404, 773631, -3640522, -1656247, 4308389, -1210107, 1197759, -868657, -2005213, --2586107, -2677375, 2293513, 4832, 453119, 921271, -1221381, 1274532, 2755759, -5076115, --1198833, 2038499, 479963, 2065342, -276489, -4689031, -1698123, 2646774, -2906082, -284005, -2043331, -1753420, -463320, -839666, -2774549, -756451, -2180233, -988916, 217970, -1457068, -162135, 409633, -343061, -1260573, -881005, -2870112, -2877628, 10940355, 1263257, 2972654, -1030792, 1570884, -2653753, -6599754, -1296006, 3500398, 1224066, -3266860, -484258, 2674154, --716186, -3939022, 1158567, -4542465, -2845416, -146029, 1214939, -1299228, -1062468, 2803540, --3954591, -107374, 455267, 1876364, 1457068, 1421097, 4736812, 2136746, -5996848, -1544041, --2756832, 721555, -210990, -485331, -3804267, -4920422, 6402723, -3029026, 1514513, 1832877, -1549946, -6190122, -3562139, -1666984, 598074, -545998, -274878, -635118, 946503, 2261837, --3301756, -93416, 1620813, 1908576, 2283849, 777389, -68183, 2200634, 700617, -1127966, --424665, 3619047, -2927557, -3100967, -1743220, -1352915, 3041911, 1705639, 580357, -1415192, -2889976, -1620276, 1374926, -6254010, -3696356, 2615635, -6028524, -8622684, 1730872, 719944, -1125818, 1244467, 1282048, -7395934, -1129040, 2148021, -4601521, 4933307, 4879083, 4124242, --1562294, 401043, 1217623, 3177202, 830539, -67646, 739271, -2091649, 2113124, -716723, --643171, -941135, 6216965, -3549254, 2254321, -2203855, -1808181, -1960653, 1781875, 3425237, --3364570, -1651952, -1730335, 2557653, 2490007, 3832722, 2722473, 646393, 3461207, -2588255, -2183991, 922881, 1098438, 6977711, 1873143, 3569655, -5274220, -1262184, 2602213, -2521146, -2970507, -915902, -1688996, 1040456, 4456029, 3090766, 2301566, -609349, 1304060, 3460133, --3139084, 5318780, -55298, 4507568, -900333, 3888556, 4782983, 3988414, -644245, -4189741, --1416266, 10172093, 7781407, 5880347, 5397700, 5501316, 2719251, -718333, 159451, -2402497, --348966, 7328825, -3018288, -3669513, 5532992, 3632469, 5334350, -3770981, 1828582, -1581085, -1445793, 1994476, 3455301, 213138, -1977296, -1949915, -2630668, -1298154, -1498407, -5624260, --321586, 4290136, -3191698, -854162, 2016487, -3012383, -2165201, 2324114, -1032403, -3833258, --1568200, 1809792, -2706903, -4194036, -1432372, -1414118, 1712618, -3000035, -5332202, 163209, --549219, -1045288, 2057289, -4940823, -1875290, -165356, -1539746, 2330557, -228707, 854162, --7984344, -2823941, 5219996, -2158758, -4177393, 1088774, 1293859, 996969, -1247151, -7012608, --2549600, 7161858, 989990, 2386391, 2033130, -1459752, 14823543, 9083319, 8623221, 141734, -874563, 674847, -3514357, -7855495, -2949032, 5902896, -4463545, 2662343, 8011188, 626528, --2528662, -1021665, -1615982, -869731, 3238942, 4578972, 164819, 1333051, 1875290, 2975339, -175020, -4236985, 1290101, -6812892, -2057826, -884226, -1904281, -1259499, 825171, -1650878, --3587908, -2803003, -1312649, 267362, -1563905, -4141959, 4853850, -1861868, 310848, -1296543, --3260417, 3994857, 11125039, 2671470, -3955128, 6590628, 1440425, -2059974, 1933809, -1164473, --4397510, 2684, -1905892, 1657857, -3842922, -6467684, 132070, 1074816, -7972533, 2350958, -1471026, 4399657, 2320893, 5821292, -2144799, -3854733, -2498060, -1142998, 2591476, -934155, --5288716, 3535832, -2581275, -7846905, -11822971, -3927748, -5806259, 8398809, -1751810, -1292785, -3447785, -8207146, -5400922, 4538707, -3649649, -3832722, 10201, -577673, 1056562, 2893734, --1119913, 1171989, -1873680, -1811939, 53687, -1639604, -3291556, -592706, -551903, 3361349, -3888556, 2945811, -4129611, 1707786, 1658394, 5740224, -2855617, -542777, -1882269, -4954782, -6780680, -6590091, -2880313, -2784213, 1743220, 5107253, -4874788, 5281736, -426276, 2658585, -4901095, 356482, 3819837, -7163469, 1669132, -2990371, 532039, -7609072, 317291, -2962991, --6205691, -5445482, 564251, 4136054, 427349, -4059818, 5544266, -2524904, 3282429, -1175210, --6455873, 8435853, -5618354, -2114198, -3120831, 1180042, 3944391, 1073742, 3664681, 5302137, -3307662, -8586176, -12099460, 1313186, 1090922, 637266, 7915088, -2582886, -8457864, 863825, -1078037, -2289755, -402116, -7540889, -1388885, 905164, 1214939, 8374650, -1365800, 7504382, --1709397, -1965484, 745177, -7492571, 3310883, -2834679, 4679367, -1276142, -1787780, -2791192, --1215476, 252329, -5438503, 9648107, -6539625, -10877005, 3411278, 486405, -7457674, -2267743, --14461692, 238908, -5025112, -86436, -5462125, -4610111, 1005022, 500364, 2745021, -4654134, -3932580, -5253282, -9861245, 1171989, 3063386, -3104188, 3593814, -1782948, -5310727, -5002563, --6499896, -3314104, -379031, 1023813, -1663763, 6211060, 434329, -2129230, 1010928, 185220, -1839857, 722628, 1355599, -6437082, -4915590, 652835, -18813030, -4701916, 737661, -4776004, --3509525, -5974300, 1549410, 2140504, 4282620, -3191698, -4001299, -4493073, 2279554, 5106716, --2501819, -2106145, -1266479, -712428, 2422899, -10409927, -2559801, 6003828, 1962800, -2981244, -1156957, 5344013, -476205, -1231582, 1877975, -213675, 12912819, -5409512, 3196530, 1172526, --5367636, 1931125, 1264868, -6005438, 4409858, -8588861, -792421, 7935489, 1765232, -28454, --1568737, -5778342, -5106179, 1606318, 3400004, -2014877, 1691680, 6678674, 3252901, -2394981, -4030290, -5411659, -13339095, -1466731, -5816997, 4057670, -3699041, 9873056, 4845260, -68719, --1484985, -11958263, 3979287, 5136781, -3694746, 7988639, -5750961, 2771328, -9670656, 5061082, -3718368, -10644003, 5093831, 7533910, 18694918, 19143206, 4263292, 5426691, 377420, 2340220, -478352, 1588064, -4949413, 1934346, -2990908, 3817152, 4344897, 9530532, 1775432, -2596845, -6513318, 3968550, 7772817, -231928, 4883915, 2114198, -2201171, 1705639, 11418171, 1114007, --4780836, -3340948, 8438000, 4431870, 4076461, 7006703, -5949604, 1534377, 9273908, -10064182, --11051488, 2782602, 5874979, 8722005, -4236985, -8120173, 5730560, 1132798, -994822, 2596308, --1611150, -1947768, -237834, 12576738, -5170067, 1602560, -3557307, -3357591, -1905892, 5838471, --1280437, 14560476, 7261716, -9120363, 8471823, 373662, 3653407, 224949, 1362042, 332860, --3583077, 3346853, -13391171, -5622649, 4829154, -15519864, 3212636, -13726179, 29292750, 6223408, -3804804, -7894150, 12090870, -3364570, -1518271, -2457795, -220117, -7502771, -1587527, 4992363, -10737, -5921150, 7665980, -1077500, -5407901, 2248952, 1758789, -7888781, -13445395, 6209986, --6102612, -6358699, 515933, 999654, -4732517, 7565048, -7502234, 3223373, 5406290, -55835, -8305393, 3990562, -12644384, -11149198, -6169721, 1896228, 1291711, -8555038, 2560338, 4652524, -902480, 4262755, 3331284, -8886824, -5957120, 4104915, -12153684, -2844342, -1212255, -10373957, --7167764, -2704219, 1401233, -4647155, -13575855, -4646081, -7703024, 16008417, 6099928, 245350, -1031329, -2414309, 10649908, 15539192, 581968, 11039140, 5823439, 4511327, 668941, -3406983, --2212982, -2537252, 5664525, -6381248, -1294396, -20643224, 13948443, 22348326, -16741246, -9987410, -4641249, 4017405, -3359738, 7358890, 2048163, -6230924, -7579007, -130460, -2388002, -5421323, -2866354, -2467996, 441308, 6228777, -8224863, 1803349, 1218697, -4881231, 821413, -7779797, -1655173, 11587285, 6008123, -1076426, -3556770, -861141, -6418829, -6909529, 3610457, 5920076, --1658394, -3121904, -2102387, 3591130, 6009196, 2899103, 10853382, -5604396, 4611185, -2633352, -1298691, 6765111, -2118493, -1963337, -12370580, -1798518, -9494562, 5074504, 3692061, 12756590, --10451803, -3824669, -10078141, -17046188, -2483028, 7349763, -11442330, 2813204, -828929, -8488466, --9684078, -12695386, 17921288, 863288, 10992969, 7790534, 9598178, -3678640, -10384694, -8366597, --9060234, 4129074, -15713675, 11249056, -1028108, -6443525, 10439992, 3149822, -9249212, -14282377, --4889284, -307627, 790274, 338229, -4439386, 15505369, 7096360, 4478577, 4210142, 4689031, --4239670, 926102, 3737695, 2057826, 14825690, 1241246, -20549272, 2384781, 9466108, -8108362, --11237245, -2711735, -5774047, -3993783, 1705639, 14821395, 9706626, -1655173, 416075, -4634807, --12331925, -4536023, -10024454, 7654706, 11417634, 76236, -5013301, -2179159, -1535988, 4837207, -7662759, 7157026, -15563888, 3221762, 1566589, 1520418, 12524662, -6614787, 5782637, -5998459, --3284576, 1364189, 8694624, 13719736, -912681, -8527121, 4134980, -15488189, 13964012, 7107634, --85362, -6143951, 4994510, -3221762, -6020471, -6003828, -5024575, -5984500, -2711198, 8748848, --14868103, -2923262, 7984344, -10258529, -2150168, -97711, -2493766, -12104292, 12066174, 6695854, --10077067, -520765, -4884452, -2279554, -20946556, -1740536, -10106058, -21460878, 3827890, 4565014, --11236171, -7384660, -13066364, -12647068, 10726681, 7727720, 11341935, 1566053, 24889872, 2361158, -12519293, 19768660, -3164854, 6867116, 18157512, -11717208, 4891968, -6563247, 12160126, -2899640, -24646670, 12939663, -9043591, -10778220, 945430, 7285875, 9638980, 4248260, -10380936, -732829, -7394860, 20543366, -9103720, 14311905, -5821828, 9386651, -16135118, 7548942, -9356049, 7648263, --306016, 3814468, -4061429, 13777718, 15031312, -27780386, 7509214, 8607651, 2663417, -2783139, -1769527, -18369038, -1283122, 15064598, 15735686, -3291019, 16389058, -655519, -3513283, 1517197, -9219684, -3233037, -4226248, -1663226, -11722039, 2210298, -3337190, 18771692, 12198244, -8464307, --9251896, -17166448, -6320581, 13113609, 23053236, -10023917, 7233262, 1974074, 3194919, 12956843, -9146133, -17462800, 3802120, -5887864, -3383361, -6855305, -3750580, -7234873, -16976932, 3647501, -11940009, 5085778, 27511414, -5906654, -3297461, 19553912, -6383932, -293132, -3675955, 5786932, --20110648, -12437688, 7814693, 16357920, 23233088, 27846420, -19035832, -9280887, -225486, 10040023, -1611, 31634582, 9475235, 5724118, -22621056, 2873870, 1362042, 12765180, 16276852, -9750113, --2208687, 6162741, -3174518, 1595044, 18918258, 7838316, -14560476, 6167036, 11390790, -6849399, -22504554, 4734128, 30258582, 15921444, -9280351, -1566589, -29944512, 3337727, 6602976, 3110093, -42059540, -4347581, -4301947, -17823578, -17395692, 7832410, -14410689, -7045894, -10004589, -4902169, -9675488, -5851893, -13330505, -9457518, -71941, 11965242, -14941117, 4302484, 5253819, 2574833, -14513768, -615254, 179852, -14606110, -23292682, -7951058, 9145059, -11053098, 1921998, -9074192, --39904540, -19670950, 10570988, 2086817, -23339926, 4697621, 29906932, -154082, -1915555, -10816338, -5654862, -12056510, -25094420, 1918240, 2465311, -7965017, 3394635, 10352482, -3456375, -6477885, -5182952, 9746891, 14228153, -7573638, 10300405, 16372415, 4846334, 27459336, 1356673, -14793478, -17296908, 2571612, 1270774, -2014340, -6084895, 13289703, -14703821, 736587, 15426449, -21738440, --24663312, -27788976, 38511360, -21059298, 4329864, -516470, -13374528, 20635708, -24381456, 10802916, -40894532, 26363584, 5010616, -33306934, -2899103, -21793200, -12375411, -19871740, -3000572, 6343667, --4772246, 16581795, -8853001, 3168612, 6774237, 22928146, 1917166, 3556770, 25927106, -17452062, --3827353, 12403866, -6579890, -13475460, -10606959, 14073534, -13375065, 6105296, 21769042, -6129455, --43492448, -2234994, 8880919, -51203528, 29399588, 24267102, -21304112, 32231046, 19810536, 14526653, -31207770, 973347, 14994805, 2215666, -139050, 12188043, -23341000, 21270288, 26136486, 22233972, --25262460, -4156455, 28606092, -14914811, 21875342, 23204098, 50041736, 32680406, -1822677, 4406100, --11030013, 7820062, 4486630, -28810640, -50102404, -9320616, 23591182, 30049202, -58759448, -53081500, -22717156, -15126875, -17430052, -6858526, -21002926, 7280507, -33662344, 41531260, 14784351, -17390860, --1275068, -17090212, -13708462, -13884556, -16670379, -10442676, -40805412, -36056788, -7847979, -8582418, -994822, 2815351, 5546414, -3168075, 3626563, 5888400, 16137266, 18699214, -8985072, -10839961, --13281649, -10889353, -24254754, 32241782, -13703093, 6852621, 22810572, 22033182, -11025718, -11611981, --20941724, -13983877, -17729088, 23825794, 216896, 1141924, -34463892, -13483513, 43096240, -6862821, -39734352, -11264625, -19283866, -12970801, -21620866, -21683142, -7192460, -3224447, -29637422, -1629940, -7665443, -5207111, 4554276, -63539748, -29475286, -21729850, 24715926, -13489419, -2703145, 3544959, -39042864, 4756677, -19370840, -32320166, 65497716, -22164178, -11268920, 36399312, -22439594, -37750616, -35245040, -50286012, -12506408, 10074383, 10014790, -35475892, -11715597, 27843736, 1845762, -7131793, --17346300, 21602074, -21082920, 188442, 19758460, -7322919, 18291192, -1148904, -6478422, 4317516, -5663988, -11099806, 17504140, -9856413, -1778117, 3565360, 1435056, -129923, -1211718, 3608310, -11764989, 15145128, 25052008, 10428717, -7861938, -3638911, -13017509, 12748000, -3159485, -22209812, -6761889, -721555, -10423886, -29939680, 22273700, 859530, -11800960, 32353452, 3575024, -10775536, --4310537, 48367776, -44113608, -49609556, 31527208, 46513960, -84973784, 207769, -30677878, -29133300, --11729019, 31490164, -23427972, 41839960, -5440113, -548682, 55707336, -14940044, -44533444, 53691924, -52155936, 39657044, -19358492, -22463752, -8167954, 7718593, 37164352, 30606474, -11577621, -1319629, -10625212, 33271502, -11906723, 81604, 17904644, -22844932, -22641456, 18898392, -12640626, -6433861, --11723650, 1111860, -18435610, 3481608, 10468983, -5029944, 7814693, -5822365, -6304475, -2768107, --24917790, 5931350, -10799158, 17015050, 29844118, 4289062, 14295799, 15500537, 32749, 8645232, -8574365, 35818416, -24414742, 18932216, 12882754, -13699335, 10187126, 14301704, 2420751, -11477763, --30996242, -26583700, 8917963, 14746233, -12481712, -46430208, 40079024, -9423695, -23196582, -8042327, -40334036, -14313515, 44208100, 5616744, 14169634, -36399312, 39229156, -11545409, 16826072, 2357937, --59235652, -9335648, 10591389, -25224342, 36361728, 17562658, -53324704, -38901668, -26764626, 9829570, --11012296, 12731894, -19931332, -36089536, -478352, -38360500, 10133975, -2701535, -7584376, 13888314, -21056078, -13034152, 2569464, 24605330, -19122806, 33092186, -4778688, -34547108, 29953638, -13707925, --6931541, 28020366, -35089344, 10112500, 219043, 13580150, -5789616, -11719355, -53255448, 13183939, --22130892, -52119428, 64043868, -42191076, -18242874, -7477538, -14814416, -31525596, 18189724, 45540612, --27566710, 13653164, -39901320, -21303038, -22723598, 21315386, 3625489, 59519120, -9957882, -3520800, --17265232, -48843440, 209917, 25843356, -18359374, 21976274, 24906516, -19256486, 2390686, -16115254, --73817600, -37196028, -22397718, -76101992, 50333796, 67680096, 31452046, -63795832, -52476984, -115839560, -17899276, 144502560, 66134980, 30247844, -35484484, -116993296, -54767276, 39440148, -6903623, -9912248, -2044404, 17182016, 1383516, -4549444, 14528801, 3580392, 5528697, 20447802, -12598750, -1218160, -12202002, -4965519, -999654, 12487617, -11563126, -4136591, 4844723, 20234664, -13065827, -11097122, -12964896, -1663226, 7729868, -22227530, 28734404, -7718056, 10380936, -7177964, 4603668, 13964012, -7681012, -4690641, 14028974, -6104223, 14172318, -11517492, 275952, 12361990, -2064806, -6841346, --26284662, 1546725, 22217866, 962610, 10998874, -15122580, -3286724, -9598715, -7569880, -4911832, -16447577, -6970195, 10507101, -13489419, -13170517, -7681549, 4707284, 26385058, -9372692, 11033771, -2292439, 961536, -12084427, 5459977, 16301012, -1505386, -11131481, 7494718, -6212670, 3379603, --1795833, -8837432, 53140020, 10554882, -28481538, -20227686, -31456340, -9970767, 6053220, 16711718, --5218922, -6746320, -5816460, -5598490, -5299453, 7642895, -3875134, -1060320, -1680406, -5527086, --1318555, 8400956, 1206886, -2419140, -8382166, 9640054, -12483322, 7351374, -4451734, -12251394, -62814, 5596880, 6299107, 4926865, -7228430, 1621350, -2305324, -3960497, 14784351, -13143137, --2377801, -530965, -884226, 1386201, -2172180, -7723425, 6532109, -12242267, 11708081, -1714766, --8159901, 2824478, -4185983, 10374494, -6025302, -3686693, 11266773, -10066866, 3556233, -4832912, --1037772, 8571681, -6066105, -2475512, 7792682, -5331128, 2122788, 746787, -6152004, 15171435, --13174275, -1194538, 6007049, -3443490, 9913858, -4461398, -1873680, 2568927, -25028386, -37926708, -49657876, 154407296, 13345537, 13313862, -105246560, -133411888, -27664422, -28378996, 78596288, 133451616, -68653976, 13033615, -48258788, -94241784, -66320736, -47653200, -2390149, 64908768, 95189360, 51213192, -11841225, -33551748, -59223840, -33403034, -31887448, -30128122, 18946712, 38529076, 38234336, 38246148, -9280887, -16930762, -6825777, -25614112, -39679592, -4668630, -11832098, -8294119, 35833448, 20410222, -29925184, 17847200, -13601625, -32990718, -7904888, -21576842, -3331284, 14478335, 4483409, 7630010, -16112570, -8629126, -11594264, -3093450, -6877317, 6053757, 10305774, 44023, 12725988, 7088844, --13775571, -13667660, -21046950, -18468360, 454193, 20640540, 32067836, 14737643, 3565897, -8627516, --22477712, -5037460, -25556130, -16676821, 10130754, 5693516, 8642548, -1285269, 0, 0, -0, 0, 0, }, +-5331128, -6693170, -8210367, -6183143, -3707631, -540629, -3342558, 2524367, -566399, -781147, +1321776, 2819109, -49392, -1805497, -1963874, -3180960, 483184, -2907693, 5175973, 5660230, +-2302103, 202937, 1690607, -1453310, 4345433, -1626719, -1887101, 208306, -387621, 3879429, +3149822, 1447404, 773631, -3640522, -1656247, 4308389, -1210107, 1197759, -868657, -2005213, +-2586107, -2677375, 2293513, 4832, 453119, 921271, -1221381, 1274532, 2755759, -5076115, +-1198833, 2038499, 479963, 2065342, -276489, -4689031, -1698123, 2646774, -2906082, -284005, +2043331, -1753420, -463320, -839666, -2774549, -756451, -2180233, -988916, 217970, -1457068, +162135, 409633, -343061, -1260573, -881005, -2870112, -2877628, 10940355, 1263257, 2972654, +1030792, 1570884, -2653753, -6599754, -1296006, 3500398, 1224066, -3266860, -484258, 2674154, +-716186, -3939022, 1158567, -4542465, -2845416, -146029, 1214939, -1299228, -1062468, 2803540, +-3954591, -107374, 455267, 1876364, 1457068, 1421097, 4736812, 2136746, -5996848, -1544041, +-2756832, 721555, -210990, -485331, -3804267, -4920422, 6402723, -3029026, 1514513, 1832877, +1549946, -6190122, -3562139, -1666984, 598074, -545998, -274878, -635118, 946503, 2261837, +-3301756, -93416, 1620813, 1908576, 2283849, 777389, -68183, 2200634, 700617, -1127966, +-424665, 3619047, -2927557, -3100967, -1743220, -1352915, 3041911, 1705639, 580357, -1415192, +2889976, -1620276, 1374926, -6254010, -3696356, 2615635, -6028524, -8622684, 1730872, 719944, +1125818, 1244467, 1282048, -7395934, -1129040, 2148021, -4601521, 4933307, 4879083, 4124242, +-1562294, 401043, 1217623, 3177202, 830539, -67646, 739271, -2091649, 2113124, -716723, +-643171, -941135, 6216965, -3549254, 2254321, -2203855, -1808181, -1960653, 1781875, 3425237, +-3364570, -1651952, -1730335, 2557653, 2490007, 3832722, 2722473, 646393, 3461207, -2588255, +2183991, 922881, 1098438, 6977711, 1873143, 3569655, -5274220, -1262184, 2602213, -2521146, +2970507, -915902, -1688996, 1040456, 4456029, 3090766, 2301566, -609349, 1304060, 3460133, +-3139084, 5318780, -55298, 4507568, -900333, 3888556, 4782983, 3988414, -644245, -4189741, +-1416266, 10172093, 7781407, 5880347, 5397700, 5501316, 2719251, -718333, 159451, -2402497, +-348966, 7328825, -3018288, -3669513, 5532992, 3632469, 5334350, -3770981, 1828582, -1581085, +1445793, 1994476, 3455301, 213138, -1977296, -1949915, -2630668, -1298154, -1498407, -5624260, +-321586, 4290136, -3191698, -854162, 2016487, -3012383, -2165201, 2324114, -1032403, -3833258, +-1568200, 1809792, -2706903, -4194036, -1432372, -1414118, 1712618, -3000035, -5332202, 163209, +-549219, -1045288, 2057289, -4940823, -1875290, -165356, -1539746, 2330557, -228707, 854162, +-7984344, -2823941, 5219996, -2158758, -4177393, 1088774, 1293859, 996969, -1247151, -7012608, +-2549600, 7161858, 989990, 2386391, 2033130, -1459752, 14823543, 9083319, 8623221, 141734, +874563, 674847, -3514357, -7855495, -2949032, 5902896, -4463545, 2662343, 8011188, 626528, +-2528662, -1021665, -1615982, -869731, 3238942, 4578972, 164819, 1333051, 1875290, 2975339, +175020, -4236985, 1290101, -6812892, -2057826, -884226, -1904281, -1259499, 825171, -1650878, +-3587908, -2803003, -1312649, 267362, -1563905, -4141959, 4853850, -1861868, 310848, -1296543, +-3260417, 3994857, 11125039, 2671470, -3955128, 6590628, 1440425, -2059974, 1933809, -1164473, +-4397510, 2684, -1905892, 1657857, -3842922, -6467684, 132070, 1074816, -7972533, 2350958, +1471026, 4399657, 2320893, 5821292, -2144799, -3854733, -2498060, -1142998, 2591476, -934155, +-5288716, 3535832, -2581275, -7846905, -11822971, -3927748, -5806259, 8398809, -1751810, -1292785, +3447785, -8207146, -5400922, 4538707, -3649649, -3832722, 10201, -577673, 1056562, 2893734, +-1119913, 1171989, -1873680, -1811939, 53687, -1639604, -3291556, -592706, -551903, 3361349, +3888556, 2945811, -4129611, 1707786, 1658394, 5740224, -2855617, -542777, -1882269, -4954782, +6780680, -6590091, -2880313, -2784213, 1743220, 5107253, -4874788, 5281736, -426276, 2658585, +4901095, 356482, 3819837, -7163469, 1669132, -2990371, 532039, -7609072, 317291, -2962991, +-6205691, -5445482, 564251, 4136054, 427349, -4059818, 5544266, -2524904, 3282429, -1175210, +-6455873, 8435853, -5618354, -2114198, -3120831, 1180042, 3944391, 1073742, 3664681, 5302137, +3307662, -8586176, -12099460, 1313186, 1090922, 637266, 7915088, -2582886, -8457864, 863825, +1078037, -2289755, -402116, -7540889, -1388885, 905164, 1214939, 8374650, -1365800, 7504382, +-1709397, -1965484, 745177, -7492571, 3310883, -2834679, 4679367, -1276142, -1787780, -2791192, +-1215476, 252329, -5438503, 9648107, -6539625, -10877005, 3411278, 486405, -7457674, -2267743, +-14461692, 238908, -5025112, -86436, -5462125, -4610111, 1005022, 500364, 2745021, -4654134, +3932580, -5253282, -9861245, 1171989, 3063386, -3104188, 3593814, -1782948, -5310727, -5002563, +-6499896, -3314104, -379031, 1023813, -1663763, 6211060, 434329, -2129230, 1010928, 185220, +1839857, 722628, 1355599, -6437082, -4915590, 652835, -18813030, -4701916, 737661, -4776004, +-3509525, -5974300, 1549410, 2140504, 4282620, -3191698, -4001299, -4493073, 2279554, 5106716, +-2501819, -2106145, -1266479, -712428, 2422899, -10409927, -2559801, 6003828, 1962800, -2981244, +1156957, 5344013, -476205, -1231582, 1877975, -213675, 12912819, -5409512, 3196530, 1172526, +-5367636, 1931125, 1264868, -6005438, 4409858, -8588861, -792421, 7935489, 1765232, -28454, +-1568737, -5778342, -5106179, 1606318, 3400004, -2014877, 1691680, 6678674, 3252901, -2394981, +4030290, -5411659, -13339095, -1466731, -5816997, 4057670, -3699041, 9873056, 4845260, -68719, +-1484985, -11958263, 3979287, 5136781, -3694746, 7988639, -5750961, 2771328, -9670656, 5061082, +3718368, -10644003, 5093831, 7533910, 18694918, 19143206, 4263292, 5426691, 377420, 2340220, +478352, 1588064, -4949413, 1934346, -2990908, 3817152, 4344897, 9530532, 1775432, -2596845, +6513318, 3968550, 7772817, -231928, 4883915, 2114198, -2201171, 1705639, 11418171, 1114007, +-4780836, -3340948, 8438000, 4431870, 4076461, 7006703, -5949604, 1534377, 9273908, -10064182, +-11051488, 2782602, 5874979, 8722005, -4236985, -8120173, 5730560, 1132798, -994822, 2596308, +-1611150, -1947768, -237834, 12576738, -5170067, 1602560, -3557307, -3357591, -1905892, 5838471, +-1280437, 14560476, 7261716, -9120363, 8471823, 373662, 3653407, 224949, 1362042, 332860, +-3583077, 3346853, -13391171, -5622649, 4829154, -15519864, 3212636, -13726179, 29292750, 6223408, +3804804, -7894150, 12090870, -3364570, -1518271, -2457795, -220117, -7502771, -1587527, 4992363, +10737, -5921150, 7665980, -1077500, -5407901, 2248952, 1758789, -7888781, -13445395, 6209986, +-6102612, -6358699, 515933, 999654, -4732517, 7565048, -7502234, 3223373, 5406290, -55835, +8305393, 3990562, -12644384, -11149198, -6169721, 1896228, 1291711, -8555038, 2560338, 4652524, +902480, 4262755, 3331284, -8886824, -5957120, 4104915, -12153684, -2844342, -1212255, -10373957, +-7167764, -2704219, 1401233, -4647155, -13575855, -4646081, -7703024, 16008417, 6099928, 245350, +1031329, -2414309, 10649908, 15539192, 581968, 11039140, 5823439, 4511327, 668941, -3406983, +-2212982, -2537252, 5664525, -6381248, -1294396, -20643224, 13948443, 22348326, -16741246, -9987410, +4641249, 4017405, -3359738, 7358890, 2048163, -6230924, -7579007, -130460, -2388002, -5421323, +2866354, -2467996, 441308, 6228777, -8224863, 1803349, 1218697, -4881231, 821413, -7779797, +1655173, 11587285, 6008123, -1076426, -3556770, -861141, -6418829, -6909529, 3610457, 5920076, +-1658394, -3121904, -2102387, 3591130, 6009196, 2899103, 10853382, -5604396, 4611185, -2633352, +1298691, 6765111, -2118493, -1963337, -12370580, -1798518, -9494562, 5074504, 3692061, 12756590, +-10451803, -3824669, -10078141, -17046188, -2483028, 7349763, -11442330, 2813204, -828929, -8488466, +-9684078, -12695386, 17921288, 863288, 10992969, 7790534, 9598178, -3678640, -10384694, -8366597, +-9060234, 4129074, -15713675, 11249056, -1028108, -6443525, 10439992, 3149822, -9249212, -14282377, +-4889284, -307627, 790274, 338229, -4439386, 15505369, 7096360, 4478577, 4210142, 4689031, +-4239670, 926102, 3737695, 2057826, 14825690, 1241246, -20549272, 2384781, 9466108, -8108362, +-11237245, -2711735, -5774047, -3993783, 1705639, 14821395, 9706626, -1655173, 416075, -4634807, +-12331925, -4536023, -10024454, 7654706, 11417634, 76236, -5013301, -2179159, -1535988, 4837207, +7662759, 7157026, -15563888, 3221762, 1566589, 1520418, 12524662, -6614787, 5782637, -5998459, +-3284576, 1364189, 8694624, 13719736, -912681, -8527121, 4134980, -15488189, 13964012, 7107634, +-85362, -6143951, 4994510, -3221762, -6020471, -6003828, -5024575, -5984500, -2711198, 8748848, +-14868103, -2923262, 7984344, -10258529, -2150168, -97711, -2493766, -12104292, 12066174, 6695854, +-10077067, -520765, -4884452, -2279554, -20946556, -1740536, -10106058, -21460878, 3827890, 4565014, +-11236171, -7384660, -13066364, -12647068, 10726681, 7727720, 11341935, 1566053, 24889872, 2361158, +12519293, 19768660, -3164854, 6867116, 18157512, -11717208, 4891968, -6563247, 12160126, -2899640, +24646670, 12939663, -9043591, -10778220, 945430, 7285875, 9638980, 4248260, -10380936, -732829, +7394860, 20543366, -9103720, 14311905, -5821828, 9386651, -16135118, 7548942, -9356049, 7648263, +-306016, 3814468, -4061429, 13777718, 15031312, -27780386, 7509214, 8607651, 2663417, -2783139, +1769527, -18369038, -1283122, 15064598, 15735686, -3291019, 16389058, -655519, -3513283, 1517197, +9219684, -3233037, -4226248, -1663226, -11722039, 2210298, -3337190, 18771692, 12198244, -8464307, +-9251896, -17166448, -6320581, 13113609, 23053236, -10023917, 7233262, 1974074, 3194919, 12956843, +9146133, -17462800, 3802120, -5887864, -3383361, -6855305, -3750580, -7234873, -16976932, 3647501, +11940009, 5085778, 27511414, -5906654, -3297461, 19553912, -6383932, -293132, -3675955, 5786932, +-20110648, -12437688, 7814693, 16357920, 23233088, 27846420, -19035832, -9280887, -225486, 10040023, +1611, 31634582, 9475235, 5724118, -22621056, 2873870, 1362042, 12765180, 16276852, -9750113, +-2208687, 6162741, -3174518, 1595044, 18918258, 7838316, -14560476, 6167036, 11390790, -6849399, +22504554, 4734128, 30258582, 15921444, -9280351, -1566589, -29944512, 3337727, 6602976, 3110093, +42059540, -4347581, -4301947, -17823578, -17395692, 7832410, -14410689, -7045894, -10004589, -4902169, +9675488, -5851893, -13330505, -9457518, -71941, 11965242, -14941117, 4302484, 5253819, 2574833, +14513768, -615254, 179852, -14606110, -23292682, -7951058, 9145059, -11053098, 1921998, -9074192, +-39904540, -19670950, 10570988, 2086817, -23339926, 4697621, 29906932, -154082, -1915555, -10816338, +5654862, -12056510, -25094420, 1918240, 2465311, -7965017, 3394635, 10352482, -3456375, -6477885, +5182952, 9746891, 14228153, -7573638, 10300405, 16372415, 4846334, 27459336, 1356673, -14793478, +17296908, 2571612, 1270774, -2014340, -6084895, 13289703, -14703821, 736587, 15426449, -21738440, +-24663312, -27788976, 38511360, -21059298, 4329864, -516470, -13374528, 20635708, -24381456, 10802916, +40894532, 26363584, 5010616, -33306934, -2899103, -21793200, -12375411, -19871740, -3000572, 6343667, +-4772246, 16581795, -8853001, 3168612, 6774237, 22928146, 1917166, 3556770, 25927106, -17452062, +-3827353, 12403866, -6579890, -13475460, -10606959, 14073534, -13375065, 6105296, 21769042, -6129455, +-43492448, -2234994, 8880919, -51203528, 29399588, 24267102, -21304112, 32231046, 19810536, 14526653, +31207770, 973347, 14994805, 2215666, -139050, 12188043, -23341000, 21270288, 26136486, 22233972, +-25262460, -4156455, 28606092, -14914811, 21875342, 23204098, 50041736, 32680406, -1822677, 4406100, +-11030013, 7820062, 4486630, -28810640, -50102404, -9320616, 23591182, 30049202, -58759448, -53081500, +22717156, -15126875, -17430052, -6858526, -21002926, 7280507, -33662344, 41531260, 14784351, -17390860, +-1275068, -17090212, -13708462, -13884556, -16670379, -10442676, -40805412, -36056788, -7847979, -8582418, +994822, 2815351, 5546414, -3168075, 3626563, 5888400, 16137266, 18699214, -8985072, -10839961, +-13281649, -10889353, -24254754, 32241782, -13703093, 6852621, 22810572, 22033182, -11025718, -11611981, +-20941724, -13983877, -17729088, 23825794, 216896, 1141924, -34463892, -13483513, 43096240, -6862821, +39734352, -11264625, -19283866, -12970801, -21620866, -21683142, -7192460, -3224447, -29637422, -1629940, +7665443, -5207111, 4554276, -63539748, -29475286, -21729850, 24715926, -13489419, -2703145, 3544959, +39042864, 4756677, -19370840, -32320166, 65497716, -22164178, -11268920, 36399312, -22439594, -37750616, +35245040, -50286012, -12506408, 10074383, 10014790, -35475892, -11715597, 27843736, 1845762, -7131793, +-17346300, 21602074, -21082920, 188442, 19758460, -7322919, 18291192, -1148904, -6478422, 4317516, +5663988, -11099806, 17504140, -9856413, -1778117, 3565360, 1435056, -129923, -1211718, 3608310, +11764989, 15145128, 25052008, 10428717, -7861938, -3638911, -13017509, 12748000, -3159485, -22209812, +6761889, -721555, -10423886, -29939680, 22273700, 859530, -11800960, 32353452, 3575024, -10775536, +-4310537, 48367776, -44113608, -49609556, 31527208, 46513960, -84973784, 207769, -30677878, -29133300, +-11729019, 31490164, -23427972, 41839960, -5440113, -548682, 55707336, -14940044, -44533444, 53691924, +52155936, 39657044, -19358492, -22463752, -8167954, 7718593, 37164352, 30606474, -11577621, -1319629, +10625212, 33271502, -11906723, 81604, 17904644, -22844932, -22641456, 18898392, -12640626, -6433861, +-11723650, 1111860, -18435610, 3481608, 10468983, -5029944, 7814693, -5822365, -6304475, -2768107, +-24917790, 5931350, -10799158, 17015050, 29844118, 4289062, 14295799, 15500537, 32749, 8645232, +8574365, 35818416, -24414742, 18932216, 12882754, -13699335, 10187126, 14301704, 2420751, -11477763, +-30996242, -26583700, 8917963, 14746233, -12481712, -46430208, 40079024, -9423695, -23196582, -8042327, +40334036, -14313515, 44208100, 5616744, 14169634, -36399312, 39229156, -11545409, 16826072, 2357937, +-59235652, -9335648, 10591389, -25224342, 36361728, 17562658, -53324704, -38901668, -26764626, 9829570, +-11012296, 12731894, -19931332, -36089536, -478352, -38360500, 10133975, -2701535, -7584376, 13888314, +21056078, -13034152, 2569464, 24605330, -19122806, 33092186, -4778688, -34547108, 29953638, -13707925, +-6931541, 28020366, -35089344, 10112500, 219043, 13580150, -5789616, -11719355, -53255448, 13183939, +-22130892, -52119428, 64043868, -42191076, -18242874, -7477538, -14814416, -31525596, 18189724, 45540612, +-27566710, 13653164, -39901320, -21303038, -22723598, 21315386, 3625489, 59519120, -9957882, -3520800, +-17265232, -48843440, 209917, 25843356, -18359374, 21976274, 24906516, -19256486, 2390686, -16115254, +-73817600, -37196028, -22397718, -76101992, 50333796, 67680096, 31452046, -63795832, -52476984, -115839560, +17899276, 144502560, 66134980, 30247844, -35484484, -116993296, -54767276, 39440148, -6903623, -9912248, +2044404, 17182016, 1383516, -4549444, 14528801, 3580392, 5528697, 20447802, -12598750, -1218160, +12202002, -4965519, -999654, 12487617, -11563126, -4136591, 4844723, 20234664, -13065827, -11097122, +12964896, -1663226, 7729868, -22227530, 28734404, -7718056, 10380936, -7177964, 4603668, 13964012, +7681012, -4690641, 14028974, -6104223, 14172318, -11517492, 275952, 12361990, -2064806, -6841346, +-26284662, 1546725, 22217866, 962610, 10998874, -15122580, -3286724, -9598715, -7569880, -4911832, +16447577, -6970195, 10507101, -13489419, -13170517, -7681549, 4707284, 26385058, -9372692, 11033771, +2292439, 961536, -12084427, 5459977, 16301012, -1505386, -11131481, 7494718, -6212670, 3379603, +-1795833, -8837432, 53140020, 10554882, -28481538, -20227686, -31456340, -9970767, 6053220, 16711718, +-5218922, -6746320, -5816460, -5598490, -5299453, 7642895, -3875134, -1060320, -1680406, -5527086, +-1318555, 8400956, 1206886, -2419140, -8382166, 9640054, -12483322, 7351374, -4451734, -12251394, +62814, 5596880, 6299107, 4926865, -7228430, 1621350, -2305324, -3960497, 14784351, -13143137, +-2377801, -530965, -884226, 1386201, -2172180, -7723425, 6532109, -12242267, 11708081, -1714766, +-8159901, 2824478, -4185983, 10374494, -6025302, -3686693, 11266773, -10066866, 3556233, -4832912, +-1037772, 8571681, -6066105, -2475512, 7792682, -5331128, 2122788, 746787, -6152004, 15171435, +-13174275, -1194538, 6007049, -3443490, 9913858, -4461398, -1873680, 2568927, -25028386, -37926708, +49657876, 154407296, 13345537, 13313862, -105246560, -133411888, -27664422, -28378996, 78596288, 133451616, +68653976, 13033615, -48258788, -94241784, -66320736, -47653200, -2390149, 64908768, 95189360, 51213192, +11841225, -33551748, -59223840, -33403034, -31887448, -30128122, 18946712, 38529076, 38234336, 38246148, +9280887, -16930762, -6825777, -25614112, -39679592, -4668630, -11832098, -8294119, 35833448, 20410222, +29925184, 17847200, -13601625, -32990718, -7904888, -21576842, -3331284, 14478335, 4483409, 7630010, +16112570, -8629126, -11594264, -3093450, -6877317, 6053757, 10305774, 44023, 12725988, 7088844, +-13775571, -13667660, -21046950, -18468360, 454193, 20640540, 32067836, 14737643, 3565897, -8627516, +-22477712, -5037460, -25556130, -16676821, 10130754, 5693516, 8642548, -1285269, 0, 0, +0, 0, 0, }, { -4021700, --5322538, -7656853, -865436, -2963528, -5371931, -2615098, -1255741, 1214402, -2573222, -5400922, --438624, 1519882, -5378910, -2807298, -1046361, -3007014, -3120831, 2367064, -342524, 525597, --2747169, -2796024, -708670, -4345433, 3001109, -4391604, 1318555, -1085016, 1723893, -2087354, -514322, 1439351, -5981816, -1072668, 682363, 6537477, -2992519, -553514, -1056025, -11811, -2509335, -905164, -2785286, -406948, -920734, 1993939, -784905, -2341831, 2424509, 2251100, -1175210, 525060, -1649268, 2951716, 2145336, -3511673, 2212982, -2488397, -1145146, -416612, --1997697, -639950, 352187, 758062, 2488934, -2017024, -1631551, -352724, 409096, -1770600, --5507759, -970663, -2046552, -1000191, -767725, 1010391, 1248225, 3432216, 2682744, -891743, -2056753, 978179, 5915244, -1031329, -152471, 745714, 4330401, -853088, -4507568, -2094870, --4327180, 1060320, -1537598, -355409, -543313, 1054951, 420907, 890669, 2511482, 4626754, --2049773, -1117765, 920197, -2157147, -302795, 3622268, -1959042, 4475893, 452045, -1564442, -2945274, -3995930, -1044751, -2767570, 3929358, -69256, -1474248, -1017370, 26307, 3727495, -122943, 4482335, 1664300, -3546032, 2900714, -1494649, -2750390, -2109903, 2968896, -513249, -9561671, 1152662, 2350421, 1899986, -4562866, 237297, -754841, 1368484, -2655901, -1496259, -4882304, 4367982, 214212, 2013803, -651761, 2923262, -4378183, 875100, 2786897, 2547989, --142808, 550293, 1317481, -7219303, -6740951, -3997541, -3865471, -3122978, 1140851, 4766877, -9338333, 1950989, 2336462, 126702, -6833830, -2669322, -2593624, -5896453, 9334038, 2667712, -3658775, 2756832, -2163590, 1135482, 8943196, 3783329, -2195802, 16106, -2259153, 387084, --4242891, 2716030, -1381906, -1657857, 294205, 5013838, 446140, 1901597, 2945274, 4393215, --7502771, 344134, 1836099, 4590247, 6605123, -3437585, -804770, -1516660, 5500780, 3297998, -3527779, -290984, 1605781, 11422466, -7074348, 1735167, 593242, -4348655, 1932735, -6196564, --954020, 2055679, -1498944, -9490804, 2679523, 1093069, -2778307, -2309082, -582505, -1035087, -3186329, -2660195, -1571958, 1471563, -332323, -2528662, -432181, 3039226, -4473209, 927176, --1577864, 9697499, 1118839, 3308736, -176631, -2940442, 445603, 6720550, 3805341, 4233227, -7450695, -3479997, 287226, 6728603, 2452963, 2786360, 601832, 560493, 4310000, -4032974, --907312, 4905390, -3370476, 1719598, 3148748, -2552284, 2354716, 6666863, -3154654, 2246268, -711891, -73014, 238908, -1809792, -4635881, -1837709, -3869766, -786516, 1799054, 2981244, -3659849, -1016297, -5887327, -934692, 8845485, -3637301, 1851131, -1971390, -9133785, 4968741, -1410360, 3577708, -624381, 4124779, 4459787, -8263517, 3138011, -200253, 2924336, -1025423, --5528697, -712428, -839666, -1464047, -1136556, 3049427, -162672, 231391, 6907918, 935229, -5370320, -236760, 148713, 720481, -3696356, -5084168, 16073378, 9373229, 13708999, 4729833, --6036040, 3155727, -2855080, 574989, 1076426, -11720966, -3460670, -3115462, 2767570, 4820564, --2241436, -138513, 1242319, 500364, 8169565, -826781, -9279277, 3006477, -5528160, 4052302, -4142496, 3684008, 4875325, -1206349, -2231773, 2186138, -2003065, -2040646, 1079647, -1365263, -2710124, 4537633, -2426120, -6878927, 1729798, -6705518, -4807142, -878858, -14424111, 83215, --2886218, 5383742, 4642860, 2428267, 7938710, 8468602, 3195993, 1788317, -1246077, 278099, --168041, -4045859, 7275675, -1240709, 2055679, -2724083, -3779034, -1318018, -5331128, 3762928, --2932389, -1954210, 6918656, -6796786, -2942590, 1328756, -4012036, -1252520, -1387274, 2362232, -1888175, 1780801, 3642132, -6749004, -13741211, -5650567, -936840, 1483374, -1214939, 3779034, --387084, 6438693, -5725729, 3148211, -983548, 12306155, 5970542, -3373697, -4925254, 2412161, --7249905, -4759898, 3618510, -3331821, -4075924, 8337069, 4319664, -1084479, -3497714, -6135898, -4395899, 2331630, 3446711, -817118, -747324, -4009352, 5886253, -7413114, -2279017, -891206, -5528160, 3149822, 326418, 4791573, 1363115, -3077344, 1791001, -3064459, -1888712, -3582540, -4505958, -3330747, 657130, 4436165, 8222178, 7080254, 3916473, 2158758, 321049, 3783866, --888521, 5687074, -195958, 3445101, 3983582, -3066070, 1299228, -3293703, 4068408, 2172717, -2186138, -1397475, -3985730, 3297461, -4284230, -1015223, -4488241, 2033130, 1735167, -712965, --1879048, -6794102, -13875966, -11436424, 827318, -9795210, -4636954, -13819594, -7164543, -8483097, -3433290, -4605816, -5811091, -2185602, 438087, -3679176, -13171591, 3400540, -2239289, 1163399, --5903433, 5818070, 2330020, -46171, -5240934, -2570538, 6906308, 4441533, 410169, -1212791, --4451197, 2637110, 1585917, 2731062, -5347771, -729608, -4320737, -4210142, -4221416, 212601, -8928700, -7430831, 280784, -7100655, 832150, 2918967, 4132832, -7495792, 7403987, 8520678, --2750927, -2400887, -1372779, -667331, 2980171, 3221226, 1075889, 2066953, -4081830, -1207960, --1357747, 7187091, -2107755, 7970386, 89121, -3027415, 7047505, -1186485, -3587908, 900333, -7761543, 7767985, 16643, -3271691, -3662533, 2135673, -11063299, -10514617, -12678743, 3902515, --10315975, -3945464, 9430138, 4964982, -11177116, -488553, -142271, 5048734, 6895570, 12453258, --3554086, -4141422, -12254079, -14483703, -8958765, -2717104, 5749351, -5728950, 2631741, -8240432, -8561480, -6121939, 6821482, -3038689, 725850, 2097555, -1695975, -6034429, 9679783, -8345122, --715112, -4335770, 932008, -5092221, 937377, -21275658, 51003, 10271951, -13117904, 3180423, -8442295, 3398393, -6993818, -487479, 10209674, -12731894, -383863, 5570573, 4748087, 5249524, --2239289, -1628866, -8779450, -3921305, 3045132, 5973226, 8708583, 11365020, -16833050, 6460705, --5420786, 1411434, -12069932, -4508105, 8950175, 2484102, 667867, -6235219, -744103, 6164889, -3528853, 2566780, 1200443, 12942347, 21376590, 12017318, 13906567, 2212445, 4886599, 18901078, --668941, 649077, 12801150, -6209449, -47782, 3794604, 6342593, 10719165, -8725763, -12233677, -6720013, 3875671, -7237020, 1639604, 4321274, -2637647, 2450816, -6524592, -1576253, -7634305, -2310156, 8575976, 2553358, 7534983, 5649493, 6163815, -14736033, 918049, 16998406, -1872069, --373662, 16076599, -2163053, -381178, 2292976, -1901597, -527744, 9015673, 13774497, -13360033, --2267206, 2959233, -4217658, 6684580, -2199023, 926639, 977105, -2636573, 12156905, -1198833, --4441533, 4965519, -4588099, -7144678, 2653216, 8809515, 3197603, -335544, 1779190, 8619999, -4294431, 7916162, 2359548, 1854889, 224949, -5768141, -1016834, -3892851, 36006320, 5239323, --962610, 14496, -17552994, -4834523, 1517197, -3789235, 7522099, 3653407, 12297028, -1287417, --98247, -2370285, -5357435, 8666170, 1479079, 3534221, 4607963, 6889128, -6199249, -5804649, --7191386, -4577362, -4124779, -1379758, -9833864, -1493038, 15850577, 7925826, -3003793, -599685, --1837172, 1816234, 5657546, -2231773, 22711250, -3401077, -544924, -9722195, 4196720, 10468983, --1596654, -6955163, -862752, 4446365, 7722351, 3944928, 10816875, 16630113, 5357972, 393526, -9648107, 8500277, 3091840, 6783364, -19639812, 5459977, 760209, -16673063, 6706592, 539555, --7303055, 5963562, -7746511, -6733435, 9614284, 8491687, -3836480, -14292041, -6733435, 5106716, --8655433, -304406, 4111358, 16976932, -2643016, -18473728, 11382737, -1491964, -13090523, 253940, -10566156, -12103755, -3395172, -9597641, 6205691, 3017215, -4475893, -3614215, -2236067, 7721815, -4648229, 3797288, 6562710, 7153805, 34897, 8478265, 8143795, 4493073, 4255239, -8012799, --4926328, -5290863, 4958540, 8114267, 2029372, 3169149, -4747013, -2132988, -3093450, -1313186, --8048769, 7931194, 1126892, 1477469, -8535711, -1368484, 12443057, -8185671, -10271951, -14055817, -4931696, -10240276, 16167868, 20242180, 12857521, 8884677, 483184, 16140487, -8094403, 12983686, --1678795, -7065221, 529355, 2028835, -17959942, -6592238, 6818798, 2481954, -2839510, 4234838, -15406585, 11901891, -16747151, -2668249, 577136, 1386738, 6254010, 9408663, 1642825, -11490111, -9084393, -4578972, -15275588, 793495, 2619393, 9265318, 3007551, 24927990, 4943508, -11401528, --2575370, -9716827, 17124572, -21623012, -981400, 13648332, -30602178, -13188771, -9722195, -11763915, --19970524, 1227824, -2728378, -9701794, -193810, 9145059, 2207076, 577673, -5182952, 1721208, --1088774, 1709934, 1026497, 840740, 9089761, -2676838, 552977, 15673946, -9528922, -2850248, -3926137, 13404056, -6295349, 19444928, -4961224, -8855686, -16090558, -23169202, -5357972, -17428440, -9375914, -5787469, -11296838, 996432, 3313031, 8526047, 9140227, 2545305, -232465, 27801860, -17183090, -2531883, 4217658, 9035537, 8780524, 4008815, -2344515, -1292785, -3559991, -7381438, --4559108, 3585761, 23860690, -16231218, -2227478, -9440338, 17440788, -12125230, -13049721, 7622493, --6276558, -22441204, 10657424, -6254546, 8326331, -6036577, 10660646, 8413304, 8694088, 15871515, -1583232, 13493177, 4278325, 3864934, 7832410, 3531537, 1417339, 1102196, -1395864, -7778723, -6267968, -16282758, 6211597, 2148021, -5923297, -8627516, -1410897, 6811282, -8676371, -2791192, --12414066, -4023311, -15035607, 1140851, 6209986, 105764, -3178813, -8502425, -16614544, -10830297, -10345502, 4105989, -6506876, -8597451, -3765613, -621160, -16526497, 12588549, 9647570, -14612552, --16051367, -23314694, -5491116, -27939300, 5443871, 10660646, 3535832, -1982127, -5846524, -3205656, -8980777, 11113765, 10714870, -9233106, -9700721, 8194798, -6876780, -5080947, -19615116, 6029597, -9728101, 13612899, -7461969, 20824148, 27094802, -11523934, 872952, 5582384, -19298362, -5177583, -27329414, -398895, -26606786, 1810866, 10205916, -1929514, 11362873, 21875342, -7860327, 19675246, -12968654, 16637093, 6681359, -14818711, -12826383, 10510859, -11444477, -21853868, -4228932, -25733834, -7251516, -2743947, 10617696, 6449967, 7293392, 1731946, 969589, -336081, 14526653, 5098126, --22083112, -3819837, 10204305, 14546517, 10825465, 18270254, 19583978, 12641162, -4118874, -3249680, -5971615, 34094524, -12205760, 1661079, 9962177, 12838731, -3025805, -20349018, -1347009, -5789079, --8868034, -22407382, -20527260, 5567888, -10059350, -10852309, 9376450, 17587892, 26296474, -534187, -2437394, -1311576, 21541408, -13033078, -1658931, 19388556, -17620640, 808528, -11848204, -14276471, -8198556, 5497022, 11125576, -13237089, -32697050, -6543920, -12020540, -9512279, -7508140, 2428267, --11825119, -8253854, 2094333, 8033200, -7775502, 17772574, -2768107, 12226161, -6633577, 295279, -8754217, -12890271, -9623411, -3746822, 13522705, -2516851, -16840030, -5027259, 1449015, -6729677, -5645198, -9674951, -11671037, 16553878, 3563212, -11355894, 6527814, -501974, -10696616, 43487, --17103096, -12877923, 1765768, 25169046, 8753143, 8526047, -20384452, 15919833, -2735357, 12430172, --7789997, -12497281, 5504538, -23891292, 19707994, -32700270, -22458920, 8792872, 17410186, 2422362, -21030308, -8735427, 4594542, -14436996, 19539954, 7669201, 14118094, 8099772, 2153926, -3925600, --6823630, -9194451, -5394479, 438087, -20118164, -9387188, -1168231, -23768350, -2788508, 5523328, --24133422, -22043382, 1902671, 9360881, -11575474, -50193136, -10873783, -124554, 6206228, -16927002, -1069984, -9419937, -2410014, -13520557, -15608985, 13480292, -15219753, -18087718, -3571265, -12692165, --14458471, 4723391, -20787642, -6790880, 11595875, 27802934, 21930104, -1241246, -14427869, 4631049, -19612968, -1170379, 12778601, -4144644, 16252156, 9260486, -18272402, 27469538, -22031572, -11580842, -17853106, -21057688, 5318244, -5212480, -16475495, 1311039, 22542672, -5451924, -14868103, 8189966, -10465762, -1011465, 3647501, -34586836, 6986838, 608275, 15832860, 7388418, -16151761, 13786308, --9284109, -2331630, -15209553, 6168110, 18294950, -5335960, -5563057, -21693342, -30513596, 14872398, --4006668, 11606075, -17888538, 10473815, 6993818, -20547660, 17673790, 20352240, -52646636, 20673826, -24728274, -5301601, 16811038, 1144609, 8092256, -2834679, -11847130, -5479842, 9634685, 3924526, --16115791, -8279087, -2653753, -5592048, -5078262, -221191, 30481920, 7767985, 5754183, -18256832, -12397423, -12588012, -1072131, 3876208, -22751516, 11455215, -9241159, 2560338, -9976135, -14068165, --862752, 11775190, 28142774, 12072079, 1766842, 19710142, 6410239, -672699, 1689533, 2005213, -3829500, 4552129, 18646600, 10332618, 4708358, 4918275, -3897683, -4549444, -21004538, -14810121, -926102, -628139, -13510357, 3498788, 13336947, -20659330, 20294258, 7487739, -9465571, 1057099, --7320772, 242129, 11605539, 7901666, 2665027, -13007308, -4826470, -18454400, -8310225, 8438537, -5504538, 10401337, -11784853, -45381700, 70447664, -69694432, -31921808, -15772194, -5095442, 41091024, -11675869, 45956152, 11065983, -9227737, 35689568, 15725486, -12634720, 17003238, 14867029, 8624294, -13856101, 13929116, -12876849, -19985020, -14758581, 2291365, -13640816, 6866042, 3529390, 8886824, --2002529, 6089727, 1454920, 22354232, 4664335, 1950989, 6220724, -5442261, -1051193, 7702487, --14879914, -20335060, -14448807, -11983496, 1148904, 5599564, -15035070, -2698850, -9445707, -35225712, -16537772, -6781754, 7834557, -18846316, -7301982, -17558364, -24372866, 8095477, 4944044, 21846352, --2262911, 19073412, -9803800, 15742666, 495532, 22755810, -18448496, 13545253, 15971373, 8443369, -8367670, -679142, -9354439, 26068304, 16213502, -4008278, 30702036, 5394479, 150324, 10875931, -13377749, 43274480, 3704409, -25851408, -38186556, -20047296, -15858093, 5414880, 31782222, -170188, --13169980, 28717226, 2595234, -22377854, 20891794, 22878754, -3712462, 214748, -1734630, -19531900, -22982370, 2056753, 13314399, -6267968, -17415018, -30525406, 6380174, 5016522, 5565204, -3310883, -10643466, -9241696, 672699, -18850612, -24293408, 10257456, -2285460, 9539122, -2687576, -7676181, --21772800, -33563020, 19158776, -17848274, 9186935, 19027778, -63351, -6919729, -16182900, -10171019, -41890428, 11741904, -615791, 7961796, -4105452, -13581223, -4103841, 26669600, -21502216, -35074312, --12093017, -8622147, -52475912, -38177428, -21349746, -19209242, 6994354, 4269735, -17601312, -30960272, --13256417, -11581916, -11531987, -3931506, -7104950, -15049029, -21485574, 23079544, -20298016, 30895310, --4732517, 29511258, 40647032, -6437619, -46569792, -42653856, -10645613, 22382686, 1722819, -33162516, -25939992, -4556961, -23716272, 29146184, -53305912, -9598715, -807454, -7858180, -9053254, 64742872, --27562416, 60770568, -3917010, 13916768, -5332739, -22005802, 37120864, 11541114, 38682624, -25626460, --27492086, 10100152, -43799540, -11425150, -7603166, -28458454, 61672508, -3935801, -65174520, 512712, --29282550, 9920838, 15525770, 27417460, 20747914, -24012626, -16167331, -38197292, -11713450, -16867948, -17071422, 12787191, -1961726, 13259101, -7591355, -26606786, -10995653, -31287226, 34478924, -23793046, --16559783, 31950798, 8473970, 52927956, 26489748, 6354941, 29154238, -34139084, -10762114, -35035660, --32727114, -2782602, -402653, -41871636, 54322748, -2647311, -84989888, 44071196, 9744207, -17892834, --14095009, 27417998, 14566382, -15905875, -4742718, -39370892, -16942572, 17445620, -34700116, 1862942, -5936182, -9948755, -23205708, -15065672, 30709554, 13074417, -6428493, -43776992, 14850386, 28713466, -15952582, -33655900, -23132694, 967978, 37287296, 4213900, -9250823, 6832756, 1028108, 20134270, --50117436, -42155104, 53289268, 9406515, 22187802, -49677204, 10894721, -1032403, 37091336, -32088238, --6590091, -49555868, 17625472, 38278896, 8393440, -21013664, 14366129, 55094228, -24168854, -23545010, --20255602, 9629854, 1891396, 49004504, -14352170, 6009196, -25664578, 10932839, -28173374, 2026151, -17157858, -31283468, 32324998, 13733695, -24879134, -33117956, -23793046, 3170760, 31901406, -54020488, --15207405, 63221920, 56377352, 28223304, 13442174, 12547210, 14028974, -9262097, -8183524, -19209242, -3024194, 5760625, 5610301, -1405528, -31464394, 15134928, 7036230, -22591528, -18224620, -9895068, --10321880, 8152922, -7493108, -9625022, 3578782, -890669, -16233903, 21822192, -14842333, -5110474, --15434502, -14794552, 11565810, -6252936, -1209570, 5611912, 7910793, -1631551, -20753818, 5390184, -34904664, 7504382, -52148420, -3037079, -10497974, -16136729, 12265353, 12458626, 28609314, 13793287, --33582888, 38242388, -8199093, -25358024, 79478904, -14968498, -5550709, -24906516, -61112016, 29586956, -32817846, 11647414, 13140989, -51866024, 16690780, -2586644, -11678016, -7567196, 3374234, -2969433, -9596031, 12581570, 3491809, -5006858, -13918378, 19609746, 21568252, 32215476, -30353608, -77912856, --127658240, 8096550, 131210712, 9712532, 277941824, 277607904, 101380552, 278103424, 162358896, -51828444, --6031745, -30348776, -215721712, -182449680, -126938296, -227640240, -214977072, -66859220, -137009456, -123141008, -22080964, 29525216, -33563020, 33033668, 55111408, -8930311, -1786706, 111039936, 73708080, 20485920, -81730008, 155786512, 70354784, 80175768, 197344624, 69063072, 27357868, 164954128, 161349568, -6845641, -98422936, 179189792, -12230993, 32870458, 101640400, -22295712, -109273096, 27588722, -36014376, -202095392, --187093072, -177784800, -321783232, -470911488, -332511552, -460994400, -602850752, -437514912, -357588224, -479588928, --315460512, -173039408, -165894192, -64977488, 95526512, 223822016, 260847328, 355200768, 503006176, 482404288, -452136032, 502134304, 496818208, 363852448, 247115776, 142944560, -27574764, -27306328, 0, 0, -0, 0, 0, }, +-5322538, -7656853, -865436, -2963528, -5371931, -2615098, -1255741, 1214402, -2573222, -5400922, +-438624, 1519882, -5378910, -2807298, -1046361, -3007014, -3120831, 2367064, -342524, 525597, +-2747169, -2796024, -708670, -4345433, 3001109, -4391604, 1318555, -1085016, 1723893, -2087354, +514322, 1439351, -5981816, -1072668, 682363, 6537477, -2992519, -553514, -1056025, -11811, +2509335, -905164, -2785286, -406948, -920734, 1993939, -784905, -2341831, 2424509, 2251100, +1175210, 525060, -1649268, 2951716, 2145336, -3511673, 2212982, -2488397, -1145146, -416612, +-1997697, -639950, 352187, 758062, 2488934, -2017024, -1631551, -352724, 409096, -1770600, +-5507759, -970663, -2046552, -1000191, -767725, 1010391, 1248225, 3432216, 2682744, -891743, +2056753, 978179, 5915244, -1031329, -152471, 745714, 4330401, -853088, -4507568, -2094870, +-4327180, 1060320, -1537598, -355409, -543313, 1054951, 420907, 890669, 2511482, 4626754, +-2049773, -1117765, 920197, -2157147, -302795, 3622268, -1959042, 4475893, 452045, -1564442, +2945274, -3995930, -1044751, -2767570, 3929358, -69256, -1474248, -1017370, 26307, 3727495, +122943, 4482335, 1664300, -3546032, 2900714, -1494649, -2750390, -2109903, 2968896, -513249, +9561671, 1152662, 2350421, 1899986, -4562866, 237297, -754841, 1368484, -2655901, -1496259, +4882304, 4367982, 214212, 2013803, -651761, 2923262, -4378183, 875100, 2786897, 2547989, +-142808, 550293, 1317481, -7219303, -6740951, -3997541, -3865471, -3122978, 1140851, 4766877, +9338333, 1950989, 2336462, 126702, -6833830, -2669322, -2593624, -5896453, 9334038, 2667712, +3658775, 2756832, -2163590, 1135482, 8943196, 3783329, -2195802, 16106, -2259153, 387084, +-4242891, 2716030, -1381906, -1657857, 294205, 5013838, 446140, 1901597, 2945274, 4393215, +-7502771, 344134, 1836099, 4590247, 6605123, -3437585, -804770, -1516660, 5500780, 3297998, +3527779, -290984, 1605781, 11422466, -7074348, 1735167, 593242, -4348655, 1932735, -6196564, +-954020, 2055679, -1498944, -9490804, 2679523, 1093069, -2778307, -2309082, -582505, -1035087, +3186329, -2660195, -1571958, 1471563, -332323, -2528662, -432181, 3039226, -4473209, 927176, +-1577864, 9697499, 1118839, 3308736, -176631, -2940442, 445603, 6720550, 3805341, 4233227, +7450695, -3479997, 287226, 6728603, 2452963, 2786360, 601832, 560493, 4310000, -4032974, +-907312, 4905390, -3370476, 1719598, 3148748, -2552284, 2354716, 6666863, -3154654, 2246268, +711891, -73014, 238908, -1809792, -4635881, -1837709, -3869766, -786516, 1799054, 2981244, +3659849, -1016297, -5887327, -934692, 8845485, -3637301, 1851131, -1971390, -9133785, 4968741, +1410360, 3577708, -624381, 4124779, 4459787, -8263517, 3138011, -200253, 2924336, -1025423, +-5528697, -712428, -839666, -1464047, -1136556, 3049427, -162672, 231391, 6907918, 935229, +5370320, -236760, 148713, 720481, -3696356, -5084168, 16073378, 9373229, 13708999, 4729833, +-6036040, 3155727, -2855080, 574989, 1076426, -11720966, -3460670, -3115462, 2767570, 4820564, +-2241436, -138513, 1242319, 500364, 8169565, -826781, -9279277, 3006477, -5528160, 4052302, +4142496, 3684008, 4875325, -1206349, -2231773, 2186138, -2003065, -2040646, 1079647, -1365263, +2710124, 4537633, -2426120, -6878927, 1729798, -6705518, -4807142, -878858, -14424111, 83215, +-2886218, 5383742, 4642860, 2428267, 7938710, 8468602, 3195993, 1788317, -1246077, 278099, +-168041, -4045859, 7275675, -1240709, 2055679, -2724083, -3779034, -1318018, -5331128, 3762928, +-2932389, -1954210, 6918656, -6796786, -2942590, 1328756, -4012036, -1252520, -1387274, 2362232, +1888175, 1780801, 3642132, -6749004, -13741211, -5650567, -936840, 1483374, -1214939, 3779034, +-387084, 6438693, -5725729, 3148211, -983548, 12306155, 5970542, -3373697, -4925254, 2412161, +-7249905, -4759898, 3618510, -3331821, -4075924, 8337069, 4319664, -1084479, -3497714, -6135898, +4395899, 2331630, 3446711, -817118, -747324, -4009352, 5886253, -7413114, -2279017, -891206, +5528160, 3149822, 326418, 4791573, 1363115, -3077344, 1791001, -3064459, -1888712, -3582540, +4505958, -3330747, 657130, 4436165, 8222178, 7080254, 3916473, 2158758, 321049, 3783866, +-888521, 5687074, -195958, 3445101, 3983582, -3066070, 1299228, -3293703, 4068408, 2172717, +2186138, -1397475, -3985730, 3297461, -4284230, -1015223, -4488241, 2033130, 1735167, -712965, +-1879048, -6794102, -13875966, -11436424, 827318, -9795210, -4636954, -13819594, -7164543, -8483097, +3433290, -4605816, -5811091, -2185602, 438087, -3679176, -13171591, 3400540, -2239289, 1163399, +-5903433, 5818070, 2330020, -46171, -5240934, -2570538, 6906308, 4441533, 410169, -1212791, +-4451197, 2637110, 1585917, 2731062, -5347771, -729608, -4320737, -4210142, -4221416, 212601, +8928700, -7430831, 280784, -7100655, 832150, 2918967, 4132832, -7495792, 7403987, 8520678, +-2750927, -2400887, -1372779, -667331, 2980171, 3221226, 1075889, 2066953, -4081830, -1207960, +-1357747, 7187091, -2107755, 7970386, 89121, -3027415, 7047505, -1186485, -3587908, 900333, +7761543, 7767985, 16643, -3271691, -3662533, 2135673, -11063299, -10514617, -12678743, 3902515, +-10315975, -3945464, 9430138, 4964982, -11177116, -488553, -142271, 5048734, 6895570, 12453258, +-3554086, -4141422, -12254079, -14483703, -8958765, -2717104, 5749351, -5728950, 2631741, -8240432, +8561480, -6121939, 6821482, -3038689, 725850, 2097555, -1695975, -6034429, 9679783, -8345122, +-715112, -4335770, 932008, -5092221, 937377, -21275658, 51003, 10271951, -13117904, 3180423, +8442295, 3398393, -6993818, -487479, 10209674, -12731894, -383863, 5570573, 4748087, 5249524, +-2239289, -1628866, -8779450, -3921305, 3045132, 5973226, 8708583, 11365020, -16833050, 6460705, +-5420786, 1411434, -12069932, -4508105, 8950175, 2484102, 667867, -6235219, -744103, 6164889, +3528853, 2566780, 1200443, 12942347, 21376590, 12017318, 13906567, 2212445, 4886599, 18901078, +-668941, 649077, 12801150, -6209449, -47782, 3794604, 6342593, 10719165, -8725763, -12233677, +6720013, 3875671, -7237020, 1639604, 4321274, -2637647, 2450816, -6524592, -1576253, -7634305, +2310156, 8575976, 2553358, 7534983, 5649493, 6163815, -14736033, 918049, 16998406, -1872069, +-373662, 16076599, -2163053, -381178, 2292976, -1901597, -527744, 9015673, 13774497, -13360033, +-2267206, 2959233, -4217658, 6684580, -2199023, 926639, 977105, -2636573, 12156905, -1198833, +-4441533, 4965519, -4588099, -7144678, 2653216, 8809515, 3197603, -335544, 1779190, 8619999, +4294431, 7916162, 2359548, 1854889, 224949, -5768141, -1016834, -3892851, 36006320, 5239323, +-962610, 14496, -17552994, -4834523, 1517197, -3789235, 7522099, 3653407, 12297028, -1287417, +-98247, -2370285, -5357435, 8666170, 1479079, 3534221, 4607963, 6889128, -6199249, -5804649, +-7191386, -4577362, -4124779, -1379758, -9833864, -1493038, 15850577, 7925826, -3003793, -599685, +-1837172, 1816234, 5657546, -2231773, 22711250, -3401077, -544924, -9722195, 4196720, 10468983, +-1596654, -6955163, -862752, 4446365, 7722351, 3944928, 10816875, 16630113, 5357972, 393526, +9648107, 8500277, 3091840, 6783364, -19639812, 5459977, 760209, -16673063, 6706592, 539555, +-7303055, 5963562, -7746511, -6733435, 9614284, 8491687, -3836480, -14292041, -6733435, 5106716, +-8655433, -304406, 4111358, 16976932, -2643016, -18473728, 11382737, -1491964, -13090523, 253940, +10566156, -12103755, -3395172, -9597641, 6205691, 3017215, -4475893, -3614215, -2236067, 7721815, +4648229, 3797288, 6562710, 7153805, 34897, 8478265, 8143795, 4493073, 4255239, -8012799, +-4926328, -5290863, 4958540, 8114267, 2029372, 3169149, -4747013, -2132988, -3093450, -1313186, +-8048769, 7931194, 1126892, 1477469, -8535711, -1368484, 12443057, -8185671, -10271951, -14055817, +4931696, -10240276, 16167868, 20242180, 12857521, 8884677, 483184, 16140487, -8094403, 12983686, +-1678795, -7065221, 529355, 2028835, -17959942, -6592238, 6818798, 2481954, -2839510, 4234838, +15406585, 11901891, -16747151, -2668249, 577136, 1386738, 6254010, 9408663, 1642825, -11490111, +9084393, -4578972, -15275588, 793495, 2619393, 9265318, 3007551, 24927990, 4943508, -11401528, +-2575370, -9716827, 17124572, -21623012, -981400, 13648332, -30602178, -13188771, -9722195, -11763915, +-19970524, 1227824, -2728378, -9701794, -193810, 9145059, 2207076, 577673, -5182952, 1721208, +-1088774, 1709934, 1026497, 840740, 9089761, -2676838, 552977, 15673946, -9528922, -2850248, +3926137, 13404056, -6295349, 19444928, -4961224, -8855686, -16090558, -23169202, -5357972, -17428440, +9375914, -5787469, -11296838, 996432, 3313031, 8526047, 9140227, 2545305, -232465, 27801860, +17183090, -2531883, 4217658, 9035537, 8780524, 4008815, -2344515, -1292785, -3559991, -7381438, +-4559108, 3585761, 23860690, -16231218, -2227478, -9440338, 17440788, -12125230, -13049721, 7622493, +-6276558, -22441204, 10657424, -6254546, 8326331, -6036577, 10660646, 8413304, 8694088, 15871515, +1583232, 13493177, 4278325, 3864934, 7832410, 3531537, 1417339, 1102196, -1395864, -7778723, +6267968, -16282758, 6211597, 2148021, -5923297, -8627516, -1410897, 6811282, -8676371, -2791192, +-12414066, -4023311, -15035607, 1140851, 6209986, 105764, -3178813, -8502425, -16614544, -10830297, +10345502, 4105989, -6506876, -8597451, -3765613, -621160, -16526497, 12588549, 9647570, -14612552, +-16051367, -23314694, -5491116, -27939300, 5443871, 10660646, 3535832, -1982127, -5846524, -3205656, +8980777, 11113765, 10714870, -9233106, -9700721, 8194798, -6876780, -5080947, -19615116, 6029597, +9728101, 13612899, -7461969, 20824148, 27094802, -11523934, 872952, 5582384, -19298362, -5177583, +27329414, -398895, -26606786, 1810866, 10205916, -1929514, 11362873, 21875342, -7860327, 19675246, +12968654, 16637093, 6681359, -14818711, -12826383, 10510859, -11444477, -21853868, -4228932, -25733834, +7251516, -2743947, 10617696, 6449967, 7293392, 1731946, 969589, -336081, 14526653, 5098126, +-22083112, -3819837, 10204305, 14546517, 10825465, 18270254, 19583978, 12641162, -4118874, -3249680, +5971615, 34094524, -12205760, 1661079, 9962177, 12838731, -3025805, -20349018, -1347009, -5789079, +-8868034, -22407382, -20527260, 5567888, -10059350, -10852309, 9376450, 17587892, 26296474, -534187, +2437394, -1311576, 21541408, -13033078, -1658931, 19388556, -17620640, 808528, -11848204, -14276471, +8198556, 5497022, 11125576, -13237089, -32697050, -6543920, -12020540, -9512279, -7508140, 2428267, +-11825119, -8253854, 2094333, 8033200, -7775502, 17772574, -2768107, 12226161, -6633577, 295279, +8754217, -12890271, -9623411, -3746822, 13522705, -2516851, -16840030, -5027259, 1449015, -6729677, +5645198, -9674951, -11671037, 16553878, 3563212, -11355894, 6527814, -501974, -10696616, 43487, +-17103096, -12877923, 1765768, 25169046, 8753143, 8526047, -20384452, 15919833, -2735357, 12430172, +-7789997, -12497281, 5504538, -23891292, 19707994, -32700270, -22458920, 8792872, 17410186, 2422362, +21030308, -8735427, 4594542, -14436996, 19539954, 7669201, 14118094, 8099772, 2153926, -3925600, +-6823630, -9194451, -5394479, 438087, -20118164, -9387188, -1168231, -23768350, -2788508, 5523328, +-24133422, -22043382, 1902671, 9360881, -11575474, -50193136, -10873783, -124554, 6206228, -16927002, +1069984, -9419937, -2410014, -13520557, -15608985, 13480292, -15219753, -18087718, -3571265, -12692165, +-14458471, 4723391, -20787642, -6790880, 11595875, 27802934, 21930104, -1241246, -14427869, 4631049, +19612968, -1170379, 12778601, -4144644, 16252156, 9260486, -18272402, 27469538, -22031572, -11580842, +17853106, -21057688, 5318244, -5212480, -16475495, 1311039, 22542672, -5451924, -14868103, 8189966, +10465762, -1011465, 3647501, -34586836, 6986838, 608275, 15832860, 7388418, -16151761, 13786308, +-9284109, -2331630, -15209553, 6168110, 18294950, -5335960, -5563057, -21693342, -30513596, 14872398, +-4006668, 11606075, -17888538, 10473815, 6993818, -20547660, 17673790, 20352240, -52646636, 20673826, +24728274, -5301601, 16811038, 1144609, 8092256, -2834679, -11847130, -5479842, 9634685, 3924526, +-16115791, -8279087, -2653753, -5592048, -5078262, -221191, 30481920, 7767985, 5754183, -18256832, +12397423, -12588012, -1072131, 3876208, -22751516, 11455215, -9241159, 2560338, -9976135, -14068165, +-862752, 11775190, 28142774, 12072079, 1766842, 19710142, 6410239, -672699, 1689533, 2005213, +3829500, 4552129, 18646600, 10332618, 4708358, 4918275, -3897683, -4549444, -21004538, -14810121, +926102, -628139, -13510357, 3498788, 13336947, -20659330, 20294258, 7487739, -9465571, 1057099, +-7320772, 242129, 11605539, 7901666, 2665027, -13007308, -4826470, -18454400, -8310225, 8438537, +5504538, 10401337, -11784853, -45381700, 70447664, -69694432, -31921808, -15772194, -5095442, 41091024, +11675869, 45956152, 11065983, -9227737, 35689568, 15725486, -12634720, 17003238, 14867029, 8624294, +13856101, 13929116, -12876849, -19985020, -14758581, 2291365, -13640816, 6866042, 3529390, 8886824, +-2002529, 6089727, 1454920, 22354232, 4664335, 1950989, 6220724, -5442261, -1051193, 7702487, +-14879914, -20335060, -14448807, -11983496, 1148904, 5599564, -15035070, -2698850, -9445707, -35225712, +16537772, -6781754, 7834557, -18846316, -7301982, -17558364, -24372866, 8095477, 4944044, 21846352, +-2262911, 19073412, -9803800, 15742666, 495532, 22755810, -18448496, 13545253, 15971373, 8443369, +8367670, -679142, -9354439, 26068304, 16213502, -4008278, 30702036, 5394479, 150324, 10875931, +13377749, 43274480, 3704409, -25851408, -38186556, -20047296, -15858093, 5414880, 31782222, -170188, +-13169980, 28717226, 2595234, -22377854, 20891794, 22878754, -3712462, 214748, -1734630, -19531900, +22982370, 2056753, 13314399, -6267968, -17415018, -30525406, 6380174, 5016522, 5565204, -3310883, +10643466, -9241696, 672699, -18850612, -24293408, 10257456, -2285460, 9539122, -2687576, -7676181, +-21772800, -33563020, 19158776, -17848274, 9186935, 19027778, -63351, -6919729, -16182900, -10171019, +41890428, 11741904, -615791, 7961796, -4105452, -13581223, -4103841, 26669600, -21502216, -35074312, +-12093017, -8622147, -52475912, -38177428, -21349746, -19209242, 6994354, 4269735, -17601312, -30960272, +-13256417, -11581916, -11531987, -3931506, -7104950, -15049029, -21485574, 23079544, -20298016, 30895310, +-4732517, 29511258, 40647032, -6437619, -46569792, -42653856, -10645613, 22382686, 1722819, -33162516, +25939992, -4556961, -23716272, 29146184, -53305912, -9598715, -807454, -7858180, -9053254, 64742872, +-27562416, 60770568, -3917010, 13916768, -5332739, -22005802, 37120864, 11541114, 38682624, -25626460, +-27492086, 10100152, -43799540, -11425150, -7603166, -28458454, 61672508, -3935801, -65174520, 512712, +-29282550, 9920838, 15525770, 27417460, 20747914, -24012626, -16167331, -38197292, -11713450, -16867948, +17071422, 12787191, -1961726, 13259101, -7591355, -26606786, -10995653, -31287226, 34478924, -23793046, +-16559783, 31950798, 8473970, 52927956, 26489748, 6354941, 29154238, -34139084, -10762114, -35035660, +-32727114, -2782602, -402653, -41871636, 54322748, -2647311, -84989888, 44071196, 9744207, -17892834, +-14095009, 27417998, 14566382, -15905875, -4742718, -39370892, -16942572, 17445620, -34700116, 1862942, +5936182, -9948755, -23205708, -15065672, 30709554, 13074417, -6428493, -43776992, 14850386, 28713466, +15952582, -33655900, -23132694, 967978, 37287296, 4213900, -9250823, 6832756, 1028108, 20134270, +-50117436, -42155104, 53289268, 9406515, 22187802, -49677204, 10894721, -1032403, 37091336, -32088238, +-6590091, -49555868, 17625472, 38278896, 8393440, -21013664, 14366129, 55094228, -24168854, -23545010, +-20255602, 9629854, 1891396, 49004504, -14352170, 6009196, -25664578, 10932839, -28173374, 2026151, +17157858, -31283468, 32324998, 13733695, -24879134, -33117956, -23793046, 3170760, 31901406, -54020488, +-15207405, 63221920, 56377352, 28223304, 13442174, 12547210, 14028974, -9262097, -8183524, -19209242, +3024194, 5760625, 5610301, -1405528, -31464394, 15134928, 7036230, -22591528, -18224620, -9895068, +-10321880, 8152922, -7493108, -9625022, 3578782, -890669, -16233903, 21822192, -14842333, -5110474, +-15434502, -14794552, 11565810, -6252936, -1209570, 5611912, 7910793, -1631551, -20753818, 5390184, +34904664, 7504382, -52148420, -3037079, -10497974, -16136729, 12265353, 12458626, 28609314, 13793287, +-33582888, 38242388, -8199093, -25358024, 79478904, -14968498, -5550709, -24906516, -61112016, 29586956, +32817846, 11647414, 13140989, -51866024, 16690780, -2586644, -11678016, -7567196, 3374234, -2969433, +9596031, 12581570, 3491809, -5006858, -13918378, 19609746, 21568252, 32215476, -30353608, -77912856, +-127658240, 8096550, 131210712, 9712532, 277941824, 277607904, 101380552, 278103424, 162358896, -51828444, +-6031745, -30348776, -215721712, -182449680, -126938296, -227640240, -214977072, -66859220, -137009456, -123141008, +22080964, 29525216, -33563020, 33033668, 55111408, -8930311, -1786706, 111039936, 73708080, 20485920, +81730008, 155786512, 70354784, 80175768, 197344624, 69063072, 27357868, 164954128, 161349568, -6845641, +98422936, 179189792, -12230993, 32870458, 101640400, -22295712, -109273096, 27588722, -36014376, -202095392, +-187093072, -177784800, -321783232, -470911488, -332511552, -460994400, -602850752, -437514912, -357588224, -479588928, +-315460512, -173039408, -165894192, -64977488, 95526512, 223822016, 260847328, 355200768, 503006176, 482404288, +452136032, 502134304, 496818208, 363852448, 247115776, 142944560, -27574764, -27306328, 0, 0, +0, 0, 0, }, }, { { -2313914, -1927904, -5349382, 1587527, 2429341, 27917, -2440078, 324807, -826781, -2805688, 7335268, -2345589, 2139431, 4487167, -2088428, -465467, 420370, -3085397, 5737003, -2183454, 597000, --3279745, -700617, 3382824, 29528, 252329, -1219771, 466541, -4053912, 4246649, -3253975, -951335, 2710124, -577136, -2592013, 4911832, -60130, -4220879, -510564, -4885526, 2048699, --5196911, -2491081, 529355, 1159641, 803159, 1119913, 2338610, 3609383, -427886, 2384781, -2505040, 1815697, -67646, -2026151, 2518998, 688269, 1548336, -2685428, 4915590, 3955128, --386010, -2535105, -408022, -200790, -955093, -2917357, -5924371, -979789, 3772055, 3449933, -1532767, 7355669, -1255741, 218506, -2921652, 10228465, -406411, -570694, 3279208, -1360968, -3738232, -2011655, -4784057, 1644436, 4806069, 665720, -754304, 6337761, 203474, 210453, --2198487, -1272921, 9928354, 1322313, -6787659, -5063230, 6982543, -711354, 7235946, 434865, --1433982, -766115, 5441187, 1002875, 11478837, 4993437, 3106335, -716186, 2485176, 5122822, --1371168, -3995930, -4984310, -1045825, 4303557, 3677029, 5767604, 1533840, -3411278, -3543885, --1557463, 2327336, -932008, 1217086, -825707, -5374078, -4207994, 1455994, 3639448, 2199023, --2090039, -2319819, -358630, 5538897, 2673080, -803696, -1528472, 2457795, 1510755, 934155, --3214246, 1245541, 2398202, -591095, 3794604, 4661114, -9068287, 2843268, 1196148, 5211943, -2711198, 4661650, 9530532, -7705172, 1611150, -1548873, -49929, -9943923, 860067, 6283001, --9163313, -1674500, 5870684, 16172699, 2144263, 92342, 994822, -9801652, -459562, 7584912, -6415071, 392453, -335544, 824634, 3313567, 5975374, 5946919, 6780680, -3040837, 1647120, --505732, 2762738, 607201, 1869385, -10248329, -2538326, 1495186, 1079647, -5697274, 76236, -3757560, -4204773, 3461207, 3525095, 5952825, 3091303, -2347737, 3284576, 6678674, -3469260, --6096169, 2337536, 1389422, 1497333, 3178813, -2365453, -4897874, -6975027, 5928129, -734976, --1343788, -2007897, 2648384, 302258, 3905736, 7991324, 1629403, 967978, -288837, -1329829, --5767068, 9746891, 2413235, -434865, 4883915, 102542, -4664872, -4219806, -5072357, -7426536, -4184909, -195421, -3423089, -1498944, -1714766, 1482838, -2837900, -5144297, 1212791, -3388192, -8660802, 11308112, 9097814, -6376953, -184147, -540092, 2470143, -3602404, 7138773, 4310537, --967441, 3293703, 5418101, 290984, 1340030, 1728188, 5256503, -652835, 1971390, 6095096, -659814, -233539, -2712809, 4332012, -6782290, 2572686, -944356, -1574106, 4529580, -4558571, --557272, -35433, -5917928, 2258079, -1210107, 2532957, -217970, -2763275, 1758252, 1661079, --357556, 5021354, -432718, 5818070, -162135, -4270808, -1879048, -25770, -2855617, 5127654, -2683818, 4347581, 5090073, -2602750, -5414880, -3728569, -284005, -1324997, -1494649, 3877282, -4817343, -1307818, -15266461, -3415036, -4859756, -8027294, 2633352, 2287070, -1128503, 3946538, --682363, 3352759, 4373888, -1848983, -5445482, -6520834, -2702608, -6064494, 323733, 826244, --2867965, 3661997, -3204583, 2027761, -1556926, -3402688, -9581535, -3525095, 664109, 1615982, -2295660, -3362960, 2318209, 3918084, 1068910, 8719320, 1949915, -85362, 6457484, -4563403, -3645890, 766652, -2433099, -3046743, 4085588, 711891, 1149441, -9998147, -2079301, -3212099, -9966472, 4502200, 3445638, 4271882, 4446365, 3841312, 4948339, -2597382, -1355062, 3326989, -4839355, -530428, 5683853, -3039763, 1025960, -1118839, 4748087, 7728257, -12091944, 3291556, --3243237, 605590, -5912023, -2587181, 548145, -1340030, -2795487, -4186519, -2434173, 5993090, -3534758, 2236604, -1202591, 587874, 565325, 7729331, -6124087, 7759396, -1082332, 4286914, -7773354, -4778151, 6012418, -3662533, 3061775, 1327682, 9161165, 4220879, -5175973, -8288750, -1880659, -6168110, 5167920, -1128503, 6750078, -4878546, -855772, -3862786, 2309619, 1703491, -1913408, -301721, -747324, -7154879, -3256122, 6286222, -4851166, -744103, 3920232, 435402, --3799436, 1494649, 322659, -573915, -3295314, 6913287, 2095407, -9130564, -4275103, -7296613, --1352378, -6397354, -11633456, -2289755, 5043366, 14682883, 3099893, 1580548, 6706592, 245350, --5320928, -4162360, 3709778, 1950452, 2470680, 4647692, -10215043, -1928440, -9436043, -1434519, -2434710, -3015067, -8865886, 1632088, 3300682, -979253, 16563541, 3809636, 12031814, -5682779, --645856, -4063039, -780610, 12572443, -10650982, 3549254, 1376537, 16507707, 8982924, 10941429, -2174864, -2782602, 5362804, -3656091, -13561896, 2585034, 966905, 1592896, 11020349, 1020592, --6165426, -559956, 488553, 3446175, 3957812, -302795, -1203128, 4453881, -4956393, -1381369, --2396055, -1271310, 1567126, 267899, 9774272, 1455994, 7729331, 8730595, 2632815, 7725573, --318901, 2644626, 4878009, -4859219, -7215008, 1091459, 7769059, -11839077, 3825742, -9027484, --8362838, -5075041, -2142115, -7882339, -7613904, -8067023, -4031364, -1799054, 5802501, 430034, -6892349, 1333587, -5324686, 8784819, -8613020, -2939368, -3513820, -3170223, -4585415, -5623186, -8742943, 7454453, -3863860, -8243116, -9578314, -4633196, -6139656, -2310156, -2924336, -10045392, --9237401, -6641630, -1795296, -39192, -2039573, 7964480, 32212, 4380867, 4945655, 7190312, -305480, 13515188, 15484431, 200790, 3934190, 4191888, -2756295, 7620883, 3049427, -14083735, --1306207, -4548371, 6979, 11777337, 3633006, -11185705, -3979287, 5667210, 4250407, 1179505, -14013941, -5733245, 5072357, 6544457, 5674726, 4332549, 6741488, -12719546, 3773666, -4712116, -6731288, 701153, 2245194, -9471477, 6083821, 5639829, -2487860, 5462662, -2122251, 1786706, --1430224, -4793184, -68183, -2949032, 1729261, -3732864, 3456912, 1903207, 10933913, 9760850, --4866198, 3658239, -12529493, 9343164, -5235565, 5801964, 6994891, 9839233, -3170223, 9879499, -806917, 8540542, -7601019, -2024540, 6860674, -3659849, 11730629, -3752191, -8215736, 15517180, -21168284, 4675609, -8280160, 5815386, -4333085, 8658117, 5117991, -1908039, -8762270, -5800354, --14945949, 3919158, 6507413, -13281113, -1471026, 7690139, 2130841, -665183, 447750, -1649268, --7035694, 1719061, 9068823, 334471, 2103997, 3190087, 12812961, -8349954, -10201, 9123584, --8140574, 12263205, 911070, 17248052, -14098767, -13037373, 7468948, 571231, -1363652, 3640522, --789200, 4727686, 3401614, 9519795, 9659918, -7693897, 1932735, -5085242, -2379949, 5605469, --34897, -3140695, -514859, 67109, 9477919, -16687022, 13525926, -4219806, -4445291, 8935143, --6148246, 6986301, -8461622, -6327561, 172872, -8610336, 199716, -10551124, -7898982, -3605625, --7409893, -11509975, -2325188, 4032438, 14067629, 2150705, -8392366, -15789910, -3214783, 4713727, --2691334, 16659104, 5330592, -6110128, -11854647, -15034533, -28119150, -2484102, -3082176, 10586558, -7996692, -5975910, 744640, -4685273, -2429341, 9883257, -265751, 285078, -1238024, 11212012, -1934346, -3732864, -586800, -732292, 3084324, -10777147, -3320547, -4460861, 16496969, 3478387, --17430052, 4080219, -9073118, -5514738, 2503966, -16652662, 4970888, 11156178, 10273025, 7514582, -1888175, 2654827, -615791, 1056025, -10308458, 2977486, -16093779, -3877282, 9018894, 2437931, -9225053, 8221641, 7473243, -6405944, -11992086, -11681237, -8215199, 962610, 2897492, 3443490, -5036923, -1495722, 3051038, 7043210, 8249559, 14565845, 16900160, 12199318, 20891794, -9771587, -14858439, -12711493, -9933186, 10985453, 14081050, 16587164, -17076254, -96637, 4360466, -12676596, -6058588, -5569499, -8926016, 10251013, -13264470, 14471355, -13630079, 13558138, -9756555, -3613141, --815507, -17908404, -2395518, 19771346, -4952098, -14107894, 3131031, 9188009, -10177999, 5115843, -21494164, 11502996, 4465156, 9466108, -11150272, 7560753, -6625524, -19450834, -5727339, -5078799, -1635846, 8836895, 11112154, -4820564, -8309151, 7779260, 299037, 5954972, 3980361, -3165391, -1355062, -7736847, 1496796, 2466922, 246961, 2545842, 17965312, -2170569, 2173254, 5038534, -1539209, 2181844, -8376797, -9747428, 7457137, -11582453, -15022185, -16481937, -13032541, -21954800, -8137353, 27404576, 14153528, -5703717, -21055540, -7965017, 1891933, 2541010, -3666292, 10121090, -7675644, -8298414, -3512747, -1512902, -13719736, 19364934, -8472360, 6602439, -1087164, -5133560, --16807280, 5236639, 4199405, -2629057, 2700461, 7323993, -2230162, 18921478, -3719979, -3427921, -16804060, -2280091, -10963441, -10861972, -19396610, 2268817, -3781719, -6728067, -3688303, -15221901, --5463736, -14301167, 2183454, -12666395, 11687143, -7412577, 516470, 2827162, 2119030, 5721434, --5050345, -15530602, 7271380, -2396055, 4511863, -4058744, -678605, -346819, 15181099, 20598664, -6685654, -7687992, 8286066, 6722698, 9405442, -4727149, -6289443, 9511205, 6060736, 12888123, -4255776, 1688459, 1195612, 1282048, 13578539, 9124658, 9250823, 40359272, 2323041, -12416214, -35951024, 16276852, 16638166, 28865402, 31317290, 7312182, 10886131, 6261526, 33935612, 388695, --10120017, 12774843, 4392141, -14030048, -12921946, 11217381, 13561896, 22086332, -864362, 360240, -1762010, 1854352, -12444668, 14288282, 12377559, 3424700, -9296994, 15171435, -3490735, -2297271, --20447802, -6245956, -76236, -2861522, -9985799, 6112812, -9138080, -7692824, -4625680, 1595044, --5735392, -11712376, -12252468, 13230647, -8839043, 14134737, 8899172, 11270531, 5996848, -14936823, -1410897, -23008140, -7652021, -13422310, 6721087, -16660178, -5614596, -4690105, 2679523, 13172128, -4355097, -4606353, -21438866, 7349763, 11622182, -3077881, 3554622, -15078556, 13918378, -1960116, --5121749, 25368224, 14274861, -12942347, -22985592, 6880001, 7272454, -7452842, 15408195, -16991428, -18455474, -13368623, -7356742, 5598490, 4492536, 46665356, 18622978, 6777996, -28981902, -1028108, --6646999, -15766288, -4200478, -5919539, -4821101, -1983738, -24023900, -715112, -8880382, 55835, -12194486, -13161390, 15732465, -5288179, -16661252, -15433428, 12560095, 9102646, -3419331, -8630737, -15944529, -8631811, -7502234, 11972221, 86973, 3515431, -12130598, -667867, -6922414, 15427523, --1859721, 22237730, -7877507, 3141232, 7334194, -875100, 1455994, 6630893, -13857175, -2542621, -19152870, 1291175, 5805185, -362925, -14182519, 6233608, -9588514, 5187784, 17099338, 20860120, -23898272, 24034636, -4020626, 8534637, 1113470, 13192529, 30607010, -31338228, 26423176, -12563853, -4053376, -10557566, -25418690, -4130148, 4324495, 1028108, 5124970, -17686676, -3167539, -3068754, --26825828, -19544248, 9727027, 11567421, 4349728, 8204462, -14064407, -5841156, -10168335, 29334090, -6187974, 1540820, 20739324, 13090523, 10085120, 10474888, 7730405, -14300094, 10158135, 5217849, --5347771, 9366250, -8331163, -6662568, 14209899, -5609228, 8672076, 20633560, -64425, 4721780, --1119913, 2259153, -5082557, -10551124, -15428596, -22692996, 8900783, -19007914, 6692096, 9006010, -9230422, 1308354, -317828, -1503239, -16461536, -5948530, 6840273, -3867618, 7032472, 21356188, --7221451, 16858284, 5681705, 3606699, -2197950, -3246459, -15802258, 1796907, -20998096, -3984119, -18942416, -7868380, 1196148, -30304216, 13761612, -1106491, 2117419, -17052630, -22750442, 7493644, -6690486, 20426328, -48381196, -11911018, -28729036, 9700721, -25796110, -8652748, -29234768, 7833484, --15232102, -11693048, -2473364, -24834574, -9007620, -26605712, -13415330, -30805116, 6681359, -28496034, --11242614, -14790257, -8267812, -7802882, -6624450, -27191974, -15528991, -20677046, -10589779, -5945309, -11796128, -1664300, 8815420, -16904992, -2719788, 1016297, -19486804, 3812857, -1333587, 1691143, -5145908, -19731616, -1089311, 7315940, -2421825, 8235063, 16426639, 29740502, -24692304, 1511292, -33046016, 133681, 16206522, -11635603, 20447802, 3659312, -4943508, -27606440, -16259136, 22634478, -13977434, 22022444, 666794, -15906411, 5477694, 7542500, 15668041, -30601642, -142271, 4615479, --16976932, -7085086, -7793755, -12657805, -24834574, 30673046, -2499671, -13788456, 20585778, -34854732, --406948, -7024419, 14946486, -7822209, -21533892, 18504330, -37751152, -32660542, -26951456, 15071577, --8192650, 555125, -14865419, -14154065, -16452946, 8697846, 7500087, 25809532, 11941083, 4867272, -23965918, -6961068, 8362302, -9305584, 7095286, 3877282, 13955959, 22937272, 11641509, -5498632, --15072114, -9222369, -3687766, 12522514, -5166846, 2965138, -375810, -6824703, 11544335, -1587527, -9236864, 6773701, -21110302, 15632607, 29159606, 3804804, 24109798, 23596550, 9776956, 7120519, --1413581, 11918534, -9674951, -30612380, -11334419, 20749524, -1668595, -12064026, 9222369, 29847876, --9382893, 1058173, -25058986, 20806970, 17013976, -2863133, 3075197, -11589432, 47078212, -33382096, --32917166, -27088358, 54212688, -10677826, 29489782, 55289116, -19894826, 27375584, 9758703, -32120450, -29264296, 6372121, -16376173, 24457692, 8099235, 23097798, -1774895, -16310675, 15479599, 7619272, --1492501, 7141457, -6744173, -17302812, -12956843, -7336878, -18093086, -10439992, -4701379, 14537391, --12946105, -4969814, -17846662, 5327907, -185220, 4509716, 20748988, -11442330, 3789235, -10452340, --8615168, 14796699, -11861089, -20916490, -31091806, 35944044, 13399761, -6353331, 21682606, -19412178, --20574504, -9323837, -3671123, 5599564, -1682017, -17814988, -16636019, -13407277, -36424008, -19210314, --20657182, 8996346, 9298067, 1459215, 17558364, 6275484, -23256174, -15208479, 23993298, -20469814, --160524, 26402774, -7157026, -37753300, 23364622, -11864310, -2373506, 5253819, 11489038, -26694296, -15863462, -7268696, 27055072, 19271518, -44149580, -5122286, 4278325, -26288422, -4720706, -4012036, -31952410, 23672786, 21209086, 27230630, -1408212, -18574122, -15018964, -14747844, 292058, -41544680, -4590247, 36004172, -33054068, -58693948, 5559835, -21869974, 43001748, -153008, 980863, 29234232, --13793824, 6059662, -1796370, -7871602, 24850680, -7292318, 12355547, 42496016, -31733366, -17930952, --28952912, 14088566, 1949378, 28315108, -16730508, 11013370, 1133871, 25677462, 14915885, -12989592, --8768713, 9444633, -4979478, -1583769, -18558016, -18563386, 9307731, -4600984, -5421323, -10919417, -23493472, -9636833, -9283035, 38567196, 42443940, 26359288, -35186520, -4195110, -10280541, 12773770, -53962504, -7888245, -37510632, -4091493, -12279311, 20345796, -26291106, 4413079, -21705154, 19960324, -10555956, -20139638, 34532612, 53805740, 831613, -2030446, -18957986, -18033494, 2370822, 3481608, --9759239, 48615808, -5143224, 36332740, 28010702, -36012228, -1996623, -11878806, -39759048, 10086731, -8098161, 21492554, 35438312, -871342, -11368242, 12173011, 12184822, 28821378, 10954851, 2782065, -22501870, 24944096, 7429757, -5604396, 20477330, 9715216, 24802900, 5616207, 6274947, 16282758, -26263188, -4590783, -23113904, -25241522, -9570798, -8817031, 41902776, 23651312, 65386044, -3211562, --35166120, 29533268, -11715060, -11681774, -11696270, -22897008, 1693828, 12580496, -2229088, -12948253, -45654964, -9723806, 54105312, -15633144, 28113782, 2268280, -11640435, -31101468, -46022184, 40011916, --6589554, -9184251, -15374372, -19359566, 12869333, 48737140, -28584618, -19813222, 4925254, 8100845, --4704600, 34265248, 28258738, 26786100, 10255845, 12814572, 24167780, 13538811, -7467875, -14637785, --30242476, -5830418, 18102750, 5100811, 4671314, -12368432, -28534152, -9343164, -3160022, 29381872, -1400696, -4280472, 23810224, -4286378, 7306813, 4234838, -49823768, 12428562, 14727443, -9453223, --20726438, 3592203, -27660664, -15091978, -42899208, 12812424, -35655208, -73074040, 9428527, -1362042, -52153788, -2069637, 18359374, 41997800, -5955509, -11129871, 19723564, -470299, -35931696, -12884902, -5750425, 6245420, 28068148, 11557220, 25042344, 21374978, -14332306, -10707353, 10982768, 31703838, --12333535, -5335423, -28040768, -18008262, 7480760, -36093296, 10383620, -39857296, 5872294, -6429566, --1507534, -10030359, 38351912, 42099808, 96431144, 11988864, -54987928, -40258340, -30709554, -34140160, -67239320, 91193432, 30016990, -8159364, -29277718, 1489817, -35302484, 38456600, 35094716, 11117523, -4347581, -22048752, -4148402, 42241004, 8817031, 17227114, 13179644, 44286480, 35887136, -13808857, --33681672, -42709692, -30181808, -3920232, 10842108, 39828844, 22413824, -7839926, 20066624, -29545616, --11567421, -66926328, -12090870, 66615480, 49649820, -9946071, 132584032, 42461656, 2179159, -73252280, --14423574, -5982890, -19284940, 19113678, 8257612, 16222628, 25811680, -59788092, -67262944, -32276142, --46461884, -6054830, 11664594, 54431732, -35976792, 19859392, 80760952, 42142756, 10230612, 23256174, -11975443, -52157544, -91135448, 41270876, -29368450, 13917842, -20547660, -89156008, -21260624, 49079128, -94605784, 82932600, 199940928, 104043432, 70535176, 61588220, 27681602, -12429635, -102235256, -128500592, --190778160, -146803056, -150321712, -58489940, -839666, 54990612, 104316704, 85269056, 88462904, 59854128, -82899848, 63895692, 91799560, 41895260, 32471026, 13560822, -27154394, -40804872, -60283088, -38337952, --127493960, -56521768, -121146528, -89165128, -138427328, -84695144, -129466424, -49622440, -66748624, -25806848, -4447439, 57425860, 160950672, 151998352, 216138864, 143258096, 96016144, 125458680, 174772960, 151669792, -126644088, 84594752, 2708514, -101126616, -99828464, -123179128, -223651840, -247721360, -268104208, -269902176, --294455456, -258973648, -220291024, -199029328, -135946992, -8399882, 111380848, 205813216, 279080544, 348654720, -387223520, 247036848, 212924608, 56009596, -22849762, -17192754, 0, 0, 0, 0, -0, 0, 0, }, +1927904, -5349382, 1587527, 2429341, 27917, -2440078, 324807, -826781, -2805688, 7335268, +2345589, 2139431, 4487167, -2088428, -465467, 420370, -3085397, 5737003, -2183454, 597000, +-3279745, -700617, 3382824, 29528, 252329, -1219771, 466541, -4053912, 4246649, -3253975, +951335, 2710124, -577136, -2592013, 4911832, -60130, -4220879, -510564, -4885526, 2048699, +-5196911, -2491081, 529355, 1159641, 803159, 1119913, 2338610, 3609383, -427886, 2384781, +2505040, 1815697, -67646, -2026151, 2518998, 688269, 1548336, -2685428, 4915590, 3955128, +-386010, -2535105, -408022, -200790, -955093, -2917357, -5924371, -979789, 3772055, 3449933, +1532767, 7355669, -1255741, 218506, -2921652, 10228465, -406411, -570694, 3279208, -1360968, +3738232, -2011655, -4784057, 1644436, 4806069, 665720, -754304, 6337761, 203474, 210453, +-2198487, -1272921, 9928354, 1322313, -6787659, -5063230, 6982543, -711354, 7235946, 434865, +-1433982, -766115, 5441187, 1002875, 11478837, 4993437, 3106335, -716186, 2485176, 5122822, +-1371168, -3995930, -4984310, -1045825, 4303557, 3677029, 5767604, 1533840, -3411278, -3543885, +-1557463, 2327336, -932008, 1217086, -825707, -5374078, -4207994, 1455994, 3639448, 2199023, +-2090039, -2319819, -358630, 5538897, 2673080, -803696, -1528472, 2457795, 1510755, 934155, +-3214246, 1245541, 2398202, -591095, 3794604, 4661114, -9068287, 2843268, 1196148, 5211943, +2711198, 4661650, 9530532, -7705172, 1611150, -1548873, -49929, -9943923, 860067, 6283001, +-9163313, -1674500, 5870684, 16172699, 2144263, 92342, 994822, -9801652, -459562, 7584912, +6415071, 392453, -335544, 824634, 3313567, 5975374, 5946919, 6780680, -3040837, 1647120, +-505732, 2762738, 607201, 1869385, -10248329, -2538326, 1495186, 1079647, -5697274, 76236, +3757560, -4204773, 3461207, 3525095, 5952825, 3091303, -2347737, 3284576, 6678674, -3469260, +-6096169, 2337536, 1389422, 1497333, 3178813, -2365453, -4897874, -6975027, 5928129, -734976, +-1343788, -2007897, 2648384, 302258, 3905736, 7991324, 1629403, 967978, -288837, -1329829, +-5767068, 9746891, 2413235, -434865, 4883915, 102542, -4664872, -4219806, -5072357, -7426536, +4184909, -195421, -3423089, -1498944, -1714766, 1482838, -2837900, -5144297, 1212791, -3388192, +8660802, 11308112, 9097814, -6376953, -184147, -540092, 2470143, -3602404, 7138773, 4310537, +-967441, 3293703, 5418101, 290984, 1340030, 1728188, 5256503, -652835, 1971390, 6095096, +659814, -233539, -2712809, 4332012, -6782290, 2572686, -944356, -1574106, 4529580, -4558571, +-557272, -35433, -5917928, 2258079, -1210107, 2532957, -217970, -2763275, 1758252, 1661079, +-357556, 5021354, -432718, 5818070, -162135, -4270808, -1879048, -25770, -2855617, 5127654, +2683818, 4347581, 5090073, -2602750, -5414880, -3728569, -284005, -1324997, -1494649, 3877282, +4817343, -1307818, -15266461, -3415036, -4859756, -8027294, 2633352, 2287070, -1128503, 3946538, +-682363, 3352759, 4373888, -1848983, -5445482, -6520834, -2702608, -6064494, 323733, 826244, +-2867965, 3661997, -3204583, 2027761, -1556926, -3402688, -9581535, -3525095, 664109, 1615982, +2295660, -3362960, 2318209, 3918084, 1068910, 8719320, 1949915, -85362, 6457484, -4563403, +3645890, 766652, -2433099, -3046743, 4085588, 711891, 1149441, -9998147, -2079301, -3212099, +9966472, 4502200, 3445638, 4271882, 4446365, 3841312, 4948339, -2597382, -1355062, 3326989, +4839355, -530428, 5683853, -3039763, 1025960, -1118839, 4748087, 7728257, -12091944, 3291556, +-3243237, 605590, -5912023, -2587181, 548145, -1340030, -2795487, -4186519, -2434173, 5993090, +3534758, 2236604, -1202591, 587874, 565325, 7729331, -6124087, 7759396, -1082332, 4286914, +7773354, -4778151, 6012418, -3662533, 3061775, 1327682, 9161165, 4220879, -5175973, -8288750, +1880659, -6168110, 5167920, -1128503, 6750078, -4878546, -855772, -3862786, 2309619, 1703491, +1913408, -301721, -747324, -7154879, -3256122, 6286222, -4851166, -744103, 3920232, 435402, +-3799436, 1494649, 322659, -573915, -3295314, 6913287, 2095407, -9130564, -4275103, -7296613, +-1352378, -6397354, -11633456, -2289755, 5043366, 14682883, 3099893, 1580548, 6706592, 245350, +-5320928, -4162360, 3709778, 1950452, 2470680, 4647692, -10215043, -1928440, -9436043, -1434519, +2434710, -3015067, -8865886, 1632088, 3300682, -979253, 16563541, 3809636, 12031814, -5682779, +-645856, -4063039, -780610, 12572443, -10650982, 3549254, 1376537, 16507707, 8982924, 10941429, +2174864, -2782602, 5362804, -3656091, -13561896, 2585034, 966905, 1592896, 11020349, 1020592, +-6165426, -559956, 488553, 3446175, 3957812, -302795, -1203128, 4453881, -4956393, -1381369, +-2396055, -1271310, 1567126, 267899, 9774272, 1455994, 7729331, 8730595, 2632815, 7725573, +-318901, 2644626, 4878009, -4859219, -7215008, 1091459, 7769059, -11839077, 3825742, -9027484, +-8362838, -5075041, -2142115, -7882339, -7613904, -8067023, -4031364, -1799054, 5802501, 430034, +6892349, 1333587, -5324686, 8784819, -8613020, -2939368, -3513820, -3170223, -4585415, -5623186, +8742943, 7454453, -3863860, -8243116, -9578314, -4633196, -6139656, -2310156, -2924336, -10045392, +-9237401, -6641630, -1795296, -39192, -2039573, 7964480, 32212, 4380867, 4945655, 7190312, +305480, 13515188, 15484431, 200790, 3934190, 4191888, -2756295, 7620883, 3049427, -14083735, +-1306207, -4548371, 6979, 11777337, 3633006, -11185705, -3979287, 5667210, 4250407, 1179505, +14013941, -5733245, 5072357, 6544457, 5674726, 4332549, 6741488, -12719546, 3773666, -4712116, +6731288, 701153, 2245194, -9471477, 6083821, 5639829, -2487860, 5462662, -2122251, 1786706, +-1430224, -4793184, -68183, -2949032, 1729261, -3732864, 3456912, 1903207, 10933913, 9760850, +-4866198, 3658239, -12529493, 9343164, -5235565, 5801964, 6994891, 9839233, -3170223, 9879499, +806917, 8540542, -7601019, -2024540, 6860674, -3659849, 11730629, -3752191, -8215736, 15517180, +21168284, 4675609, -8280160, 5815386, -4333085, 8658117, 5117991, -1908039, -8762270, -5800354, +-14945949, 3919158, 6507413, -13281113, -1471026, 7690139, 2130841, -665183, 447750, -1649268, +-7035694, 1719061, 9068823, 334471, 2103997, 3190087, 12812961, -8349954, -10201, 9123584, +-8140574, 12263205, 911070, 17248052, -14098767, -13037373, 7468948, 571231, -1363652, 3640522, +-789200, 4727686, 3401614, 9519795, 9659918, -7693897, 1932735, -5085242, -2379949, 5605469, +-34897, -3140695, -514859, 67109, 9477919, -16687022, 13525926, -4219806, -4445291, 8935143, +-6148246, 6986301, -8461622, -6327561, 172872, -8610336, 199716, -10551124, -7898982, -3605625, +-7409893, -11509975, -2325188, 4032438, 14067629, 2150705, -8392366, -15789910, -3214783, 4713727, +-2691334, 16659104, 5330592, -6110128, -11854647, -15034533, -28119150, -2484102, -3082176, 10586558, +7996692, -5975910, 744640, -4685273, -2429341, 9883257, -265751, 285078, -1238024, 11212012, +1934346, -3732864, -586800, -732292, 3084324, -10777147, -3320547, -4460861, 16496969, 3478387, +-17430052, 4080219, -9073118, -5514738, 2503966, -16652662, 4970888, 11156178, 10273025, 7514582, +1888175, 2654827, -615791, 1056025, -10308458, 2977486, -16093779, -3877282, 9018894, 2437931, +9225053, 8221641, 7473243, -6405944, -11992086, -11681237, -8215199, 962610, 2897492, 3443490, +5036923, -1495722, 3051038, 7043210, 8249559, 14565845, 16900160, 12199318, 20891794, -9771587, +14858439, -12711493, -9933186, 10985453, 14081050, 16587164, -17076254, -96637, 4360466, -12676596, +6058588, -5569499, -8926016, 10251013, -13264470, 14471355, -13630079, 13558138, -9756555, -3613141, +-815507, -17908404, -2395518, 19771346, -4952098, -14107894, 3131031, 9188009, -10177999, 5115843, +21494164, 11502996, 4465156, 9466108, -11150272, 7560753, -6625524, -19450834, -5727339, -5078799, +1635846, 8836895, 11112154, -4820564, -8309151, 7779260, 299037, 5954972, 3980361, -3165391, +1355062, -7736847, 1496796, 2466922, 246961, 2545842, 17965312, -2170569, 2173254, 5038534, +1539209, 2181844, -8376797, -9747428, 7457137, -11582453, -15022185, -16481937, -13032541, -21954800, +8137353, 27404576, 14153528, -5703717, -21055540, -7965017, 1891933, 2541010, -3666292, 10121090, +7675644, -8298414, -3512747, -1512902, -13719736, 19364934, -8472360, 6602439, -1087164, -5133560, +-16807280, 5236639, 4199405, -2629057, 2700461, 7323993, -2230162, 18921478, -3719979, -3427921, +16804060, -2280091, -10963441, -10861972, -19396610, 2268817, -3781719, -6728067, -3688303, -15221901, +-5463736, -14301167, 2183454, -12666395, 11687143, -7412577, 516470, 2827162, 2119030, 5721434, +-5050345, -15530602, 7271380, -2396055, 4511863, -4058744, -678605, -346819, 15181099, 20598664, +6685654, -7687992, 8286066, 6722698, 9405442, -4727149, -6289443, 9511205, 6060736, 12888123, +4255776, 1688459, 1195612, 1282048, 13578539, 9124658, 9250823, 40359272, 2323041, -12416214, +35951024, 16276852, 16638166, 28865402, 31317290, 7312182, 10886131, 6261526, 33935612, 388695, +-10120017, 12774843, 4392141, -14030048, -12921946, 11217381, 13561896, 22086332, -864362, 360240, +1762010, 1854352, -12444668, 14288282, 12377559, 3424700, -9296994, 15171435, -3490735, -2297271, +-20447802, -6245956, -76236, -2861522, -9985799, 6112812, -9138080, -7692824, -4625680, 1595044, +-5735392, -11712376, -12252468, 13230647, -8839043, 14134737, 8899172, 11270531, 5996848, -14936823, +1410897, -23008140, -7652021, -13422310, 6721087, -16660178, -5614596, -4690105, 2679523, 13172128, +4355097, -4606353, -21438866, 7349763, 11622182, -3077881, 3554622, -15078556, 13918378, -1960116, +-5121749, 25368224, 14274861, -12942347, -22985592, 6880001, 7272454, -7452842, 15408195, -16991428, +18455474, -13368623, -7356742, 5598490, 4492536, 46665356, 18622978, 6777996, -28981902, -1028108, +-6646999, -15766288, -4200478, -5919539, -4821101, -1983738, -24023900, -715112, -8880382, 55835, +12194486, -13161390, 15732465, -5288179, -16661252, -15433428, 12560095, 9102646, -3419331, -8630737, +15944529, -8631811, -7502234, 11972221, 86973, 3515431, -12130598, -667867, -6922414, 15427523, +-1859721, 22237730, -7877507, 3141232, 7334194, -875100, 1455994, 6630893, -13857175, -2542621, +19152870, 1291175, 5805185, -362925, -14182519, 6233608, -9588514, 5187784, 17099338, 20860120, +23898272, 24034636, -4020626, 8534637, 1113470, 13192529, 30607010, -31338228, 26423176, -12563853, +4053376, -10557566, -25418690, -4130148, 4324495, 1028108, 5124970, -17686676, -3167539, -3068754, +-26825828, -19544248, 9727027, 11567421, 4349728, 8204462, -14064407, -5841156, -10168335, 29334090, +6187974, 1540820, 20739324, 13090523, 10085120, 10474888, 7730405, -14300094, 10158135, 5217849, +-5347771, 9366250, -8331163, -6662568, 14209899, -5609228, 8672076, 20633560, -64425, 4721780, +-1119913, 2259153, -5082557, -10551124, -15428596, -22692996, 8900783, -19007914, 6692096, 9006010, +9230422, 1308354, -317828, -1503239, -16461536, -5948530, 6840273, -3867618, 7032472, 21356188, +-7221451, 16858284, 5681705, 3606699, -2197950, -3246459, -15802258, 1796907, -20998096, -3984119, +18942416, -7868380, 1196148, -30304216, 13761612, -1106491, 2117419, -17052630, -22750442, 7493644, +6690486, 20426328, -48381196, -11911018, -28729036, 9700721, -25796110, -8652748, -29234768, 7833484, +-15232102, -11693048, -2473364, -24834574, -9007620, -26605712, -13415330, -30805116, 6681359, -28496034, +-11242614, -14790257, -8267812, -7802882, -6624450, -27191974, -15528991, -20677046, -10589779, -5945309, +11796128, -1664300, 8815420, -16904992, -2719788, 1016297, -19486804, 3812857, -1333587, 1691143, +5145908, -19731616, -1089311, 7315940, -2421825, 8235063, 16426639, 29740502, -24692304, 1511292, +33046016, 133681, 16206522, -11635603, 20447802, 3659312, -4943508, -27606440, -16259136, 22634478, +13977434, 22022444, 666794, -15906411, 5477694, 7542500, 15668041, -30601642, -142271, 4615479, +-16976932, -7085086, -7793755, -12657805, -24834574, 30673046, -2499671, -13788456, 20585778, -34854732, +-406948, -7024419, 14946486, -7822209, -21533892, 18504330, -37751152, -32660542, -26951456, 15071577, +-8192650, 555125, -14865419, -14154065, -16452946, 8697846, 7500087, 25809532, 11941083, 4867272, +23965918, -6961068, 8362302, -9305584, 7095286, 3877282, 13955959, 22937272, 11641509, -5498632, +-15072114, -9222369, -3687766, 12522514, -5166846, 2965138, -375810, -6824703, 11544335, -1587527, +9236864, 6773701, -21110302, 15632607, 29159606, 3804804, 24109798, 23596550, 9776956, 7120519, +-1413581, 11918534, -9674951, -30612380, -11334419, 20749524, -1668595, -12064026, 9222369, 29847876, +-9382893, 1058173, -25058986, 20806970, 17013976, -2863133, 3075197, -11589432, 47078212, -33382096, +-32917166, -27088358, 54212688, -10677826, 29489782, 55289116, -19894826, 27375584, 9758703, -32120450, +29264296, 6372121, -16376173, 24457692, 8099235, 23097798, -1774895, -16310675, 15479599, 7619272, +-1492501, 7141457, -6744173, -17302812, -12956843, -7336878, -18093086, -10439992, -4701379, 14537391, +-12946105, -4969814, -17846662, 5327907, -185220, 4509716, 20748988, -11442330, 3789235, -10452340, +-8615168, 14796699, -11861089, -20916490, -31091806, 35944044, 13399761, -6353331, 21682606, -19412178, +-20574504, -9323837, -3671123, 5599564, -1682017, -17814988, -16636019, -13407277, -36424008, -19210314, +-20657182, 8996346, 9298067, 1459215, 17558364, 6275484, -23256174, -15208479, 23993298, -20469814, +-160524, 26402774, -7157026, -37753300, 23364622, -11864310, -2373506, 5253819, 11489038, -26694296, +15863462, -7268696, 27055072, 19271518, -44149580, -5122286, 4278325, -26288422, -4720706, -4012036, +31952410, 23672786, 21209086, 27230630, -1408212, -18574122, -15018964, -14747844, 292058, -41544680, +4590247, 36004172, -33054068, -58693948, 5559835, -21869974, 43001748, -153008, 980863, 29234232, +-13793824, 6059662, -1796370, -7871602, 24850680, -7292318, 12355547, 42496016, -31733366, -17930952, +-28952912, 14088566, 1949378, 28315108, -16730508, 11013370, 1133871, 25677462, 14915885, -12989592, +-8768713, 9444633, -4979478, -1583769, -18558016, -18563386, 9307731, -4600984, -5421323, -10919417, +23493472, -9636833, -9283035, 38567196, 42443940, 26359288, -35186520, -4195110, -10280541, 12773770, +53962504, -7888245, -37510632, -4091493, -12279311, 20345796, -26291106, 4413079, -21705154, 19960324, +10555956, -20139638, 34532612, 53805740, 831613, -2030446, -18957986, -18033494, 2370822, 3481608, +-9759239, 48615808, -5143224, 36332740, 28010702, -36012228, -1996623, -11878806, -39759048, 10086731, +8098161, 21492554, 35438312, -871342, -11368242, 12173011, 12184822, 28821378, 10954851, 2782065, +22501870, 24944096, 7429757, -5604396, 20477330, 9715216, 24802900, 5616207, 6274947, 16282758, +26263188, -4590783, -23113904, -25241522, -9570798, -8817031, 41902776, 23651312, 65386044, -3211562, +-35166120, 29533268, -11715060, -11681774, -11696270, -22897008, 1693828, 12580496, -2229088, -12948253, +45654964, -9723806, 54105312, -15633144, 28113782, 2268280, -11640435, -31101468, -46022184, 40011916, +-6589554, -9184251, -15374372, -19359566, 12869333, 48737140, -28584618, -19813222, 4925254, 8100845, +-4704600, 34265248, 28258738, 26786100, 10255845, 12814572, 24167780, 13538811, -7467875, -14637785, +-30242476, -5830418, 18102750, 5100811, 4671314, -12368432, -28534152, -9343164, -3160022, 29381872, +1400696, -4280472, 23810224, -4286378, 7306813, 4234838, -49823768, 12428562, 14727443, -9453223, +-20726438, 3592203, -27660664, -15091978, -42899208, 12812424, -35655208, -73074040, 9428527, -1362042, +52153788, -2069637, 18359374, 41997800, -5955509, -11129871, 19723564, -470299, -35931696, -12884902, +5750425, 6245420, 28068148, 11557220, 25042344, 21374978, -14332306, -10707353, 10982768, 31703838, +-12333535, -5335423, -28040768, -18008262, 7480760, -36093296, 10383620, -39857296, 5872294, -6429566, +-1507534, -10030359, 38351912, 42099808, 96431144, 11988864, -54987928, -40258340, -30709554, -34140160, +67239320, 91193432, 30016990, -8159364, -29277718, 1489817, -35302484, 38456600, 35094716, 11117523, +4347581, -22048752, -4148402, 42241004, 8817031, 17227114, 13179644, 44286480, 35887136, -13808857, +-33681672, -42709692, -30181808, -3920232, 10842108, 39828844, 22413824, -7839926, 20066624, -29545616, +-11567421, -66926328, -12090870, 66615480, 49649820, -9946071, 132584032, 42461656, 2179159, -73252280, +-14423574, -5982890, -19284940, 19113678, 8257612, 16222628, 25811680, -59788092, -67262944, -32276142, +-46461884, -6054830, 11664594, 54431732, -35976792, 19859392, 80760952, 42142756, 10230612, 23256174, +11975443, -52157544, -91135448, 41270876, -29368450, 13917842, -20547660, -89156008, -21260624, 49079128, +94605784, 82932600, 199940928, 104043432, 70535176, 61588220, 27681602, -12429635, -102235256, -128500592, +-190778160, -146803056, -150321712, -58489940, -839666, 54990612, 104316704, 85269056, 88462904, 59854128, +82899848, 63895692, 91799560, 41895260, 32471026, 13560822, -27154394, -40804872, -60283088, -38337952, +-127493960, -56521768, -121146528, -89165128, -138427328, -84695144, -129466424, -49622440, -66748624, -25806848, +4447439, 57425860, 160950672, 151998352, 216138864, 143258096, 96016144, 125458680, 174772960, 151669792, +126644088, 84594752, 2708514, -101126616, -99828464, -123179128, -223651840, -247721360, -268104208, -269902176, +-294455456, -258973648, -220291024, -199029328, -135946992, -8399882, 111380848, 205813216, 279080544, 348654720, +387223520, 247036848, 212924608, 56009596, -22849762, -17192754, 0, 0, 0, 0, +0, 0, 0, }, { -6327561, -328028, -5092221, -1712081, 2312840, 1407676, 3224447, -4187593, 2341831, -546535, -3929895, -4642860, -2215130, -960999, -3183645, -2645700, 3153580, -3089155, 1725503, 4360466, -419296, -2439542, -1421097, 79994, 2024003, -584116, 4193499, -173946, -6439230, -145492, 1058173, -2829310, -2903935, 465467, 929324, -569083, 2788508, -506806, 3889630, 3453154, -2181844, --229244, 3512747, -7078106, -4002373, 1541893, -3591667, -805843, 1478543, -16643, 4281546, -4736275, 1091995, 2000918, 2433636, 2530273, -747324, 705985, 2312840, 3107946, 442382, --2132451, -4013647, -2622615, -83752, -431107, -329639, -5526549, 5031018, -1579474, 712965, --1739462, -3380139, 1675037, -679679, 1908576, 12936978, 565325, 2183454, 1793149, -5264556, --2747705, 7159174, 12437152, 2004139, 6609418, -2703682, 1221381, -357556, 5581847, -4473209, --10208064, 4088272, 4704600, -5950677, 6812355, 3353296, 6203007, 1949378, 1420024, -2775086, --954020, 285615, 4093641, 332323, -6381785, 228707, -608812, 1309428, -983548, 1065689, -1394254, 3690988, 2596845, 833761, 1040993, 307627, 1697586, -2005213, -3288871, -7038915, -1184874, 1459215, 391916, 5262946, -2074469, 4071092, 950798, -1735704, -3499862, -2211371, -7255274, 1519882, 3935264, 613643, 1391569, -1516660, -16643, 421444, 1857573, -722091, --3101503, -1578401, -6141803, 581968, 757525, 4909148, -2013803, 3758097, -1148904, 2475512, -4661114, 4758287, 1983201, 2024003, 2399813, 3192235, 4398584, -1839857, 4570919, 186831, -4894652, -964757, 8811125, 3170760, 2833068, -5951751, -969589, -1244467, -8032663, 4464619, -3537443, -2365453, -10481331, -4588099, -1662152, 5191542, 6855305, 4521527, -2876018, 1619740, --4538707, 345745, 300648, -3487514, -1882269, -9251896, 701690, -1045825, -3994320, 537945, -484258, -1144072, -345208, 9109089, -2196876, 7441031, 1399086, -5533529, 407485, 668404, -4117263, -1731946, 1187559, 1086627, 355945, 5709622, 2007897, 5853504, 4320737, -2856153, -5367099, 2641405, 3990562, 438624, 1460289, -1277753, -2225867, -4687420, -5484673, 6099928, --5606006, -4685273, -4405026, 2741263, 3393561, 940598, -8111583, -7507066, 1603097, 168577, --1649268, 4529043, -611496, -766115, 4662187, -5134097, 991601, -4479114, -2931852, -1604170, -31675, 7668127, 8669391, -4015258, 3386045, -6237367, -615791, -2429878, 8422431, -2475512, --494995, 903554, -11901354, -2047626, -5885716, -1915019, -1473711, 4446902, 5865315, 2428804, -7933342, -999117, -3635690, -3654480, 4575214, 11947525, 8324721, -4635344, -5455682, 5985037, --5368172, 1035624, 1889249, 9789304, -3611531, -4802847, 1051193, -2975876, 1855963, 2500208, -6200322, -6798397, -4427038, 3992709, 7494181, -693637, -3496104, -4434017, -10623602, 4008278, --27380, 3130494, 491774, 223338, -1667521, 1867237, -2697240, 1557463, 2331094, 2116882, --3663070, 2427730, -19679004, -6484327, -1038845, 3355980, 2259690, 4895726, -9396852, -2815351, --423591, -9746891, -6961068, 2450279, 5900212, 3462818, 6511171, -827318, 3742527, 8669928, -7651484, 7192997, 4148939, -2760053, -2196339, -4439923, -1963337, -4457639, 9257265, 4318053, --1409286, -4078072, -2487323, -4160750, -6081137, -6547141, -8245801, 5012764, 3584687, -9131637, -2180233, -441845, 6349573, 1009317, 3138547, 4150549, -8639327, -1296006, -290447, 1209570, -4578972, 6976638, -2730526, -915902, -1989107, -5356361, 1720671, 1206349, -526670, -1351304, -5289789, 449898, -2833068, -783832, 2549600, 3583077, -1276679, 135828, 958315, -4391067, -3610457, 75699, -7033009, 1393180, -8607651, 2162516, 6528351, -989990, -413391, 10589779, -4296578, 1618129, -2469606, 7757785, 3323768, 4303021, 12857521, 13467407, 776315, -2403034, --4580583, -7603703, 2997350, 5222680, -2513630, -724239, 1060320, -1465658, -4062502, 4959614, --4701379, 2205466, -14137422, -2240899, -3189550, -3661997, -6802692, -1637993, -571768, -34360, --3296388, -5372467, -3742527, 432181, -2338073, -5687611, 3725347, 4628901, 812286, -4690105, --4669703, 1738388, -3476776, 4356171, -5146982, 3483755, 1808718, -213675, -7492571, -7567733, -2265059, -5529771, 9296457, 1396938, 7924215, -3965329, 8006356, 1251983, 5421323, 1413581, -5218922, -4361540, -5142150, -370978, 10325101, -1214402, -5448166, -3726958, 5186173, -3070365, --2419140, 417149, -8655970, 6105296, 10442139, -1925756, 15885473, 2833605, 8893804, -3696356, -6758131, 4417911, 10320270, -7703024, -4882841, -2018098, 957778, 6743636, -2939368, 10411001, --410169, 5778342, 5662378, -3325915, 2564096, 5862631, 6118718, 1145146, 1984812, 5315559, --11235098, 1588064, 9418863, 6723772, -5877126, 7546258, -8861054, 5327907, -7761006, -4442070, --1721208, 8218957, -1309428, 8623221, 2421288, 1618666, 884763, -605054, 3983582, 4940823, -12091407, 1530619, 10506564, -5235029, 7815767, 9373229, 182536, -2021319, -2987150, 3454764, --13295608, -1423245, 1890859, -5441187, -7647190, -722091, 46171, -1358283, 4206921, -8674760, -4882841, 3501472, 6005975, -13499082, 5254356, 3039763, -7159711, -1023276, 5064304, 9812927, --11694122, -1181116, 1443109, -13885092, -16828756, -13618804, -12135967, -485868, 8724152, -17914308, -12826383, 8164733, -19925964, 12579422, 5490579, 4277788, 2134599, 1906429, 4694936, -3179350, --3104725, -6610492, -17180, 7680476, 6693707, 3785477, -11217918, 7807177, -7948374, 235686, --6951405, 8978092, -4506495, -3673808, 3082176, -13388487, 1610076, -4398047, -3730179, -1370632, -1263794, 13281649, -5908265, -1936493, -4686346, 10145250, -5746130, -3179350, 3483219, 3151432, -3246459, 3702799, -3725884, 5013301, 1711545, -10826002, 15657303, 6239514, 3002719, 1823751, -527207, -6779069, 9329206, 7580081, 3763465, 10081899, 1845225, 4699231, 10679436, 5468567, -3140695, -6146098, 9259413, -2823404, 16828756, -795106, 2243047, -3066070, -13536663, 3409130, -10298258, 6261526, -710280, -6648610, 16617228, 25274272, -2991445, -4067334, 12852690, 2525441, -4496831, 2785823, -18169322, 1510755, -11624329, 9048959, 14042932, -4152697, -6257231, 1658931, -9009231, -5794985, 10802916, -4719632, 20530480, -6536404, 4227322, -1638530, 5793374, 13726179, --5131412, 730144, -974421, 3453691, -5048734, -3309809, 8475581, 16900160, 1751810, 12143483, --4515621, 971200, -2166274, 3468723, 9709310, 13217225, 11240466, 9527848, 11102490, 5917928, --1734093, 686658, -1248762, -760209, 2398202, -8133595, -1789391, 10210211, -9732933, 2766496, --4144644, -3913252, -4940823, -21927418, 2544768, 9660992, 7304666, -4155918, -9490267, -25490094, --3549254, 7588671, -1709397, 1359357, -7055558, 2308545, -6011344, -18287970, -13481365, 1248762, -8891119, -8530879, -4612795, 468151, -3671123, -27062588, -22246320, 9415642, 9812927, 1149441, -1989644, -10241350, 15853261, 17949206, 12049531, -10051834, 9561671, 11615202, -1215476, -15898895, --6258841, 20764556, -5624797, 1634235, 1998770, 11455215, -8871255, -17571784, 4434554, 7364795, --3462818, 4541928, 11819750, -5849209, -3486977, -978179, -23082228, -7384123, 9002788, -5005785, --15133854, 2415382, 404801, -5488968, 4016331, -1979980, -14249091, -13291850, -21736830, -18466748, -4425427, 7439957, 1685238, -5882495, -6574521, -324807, -4149475, 4299263, -9813463, -180926, --2741263, -3719979, -2512019, -1604170, 5493263, -5618891, -20367272, 2506650, -1658394, 4501126, -7593502, -602369, 6045167, 3766686, 8648990, 27763206, 24663850, 19247896, -2103997, 18795850, -6049999, 26235808, 11058467, -644782, 31998044, -6809134, -1819992, -20594368, -5557688, -583579, --14610942, 8444443, 12672301, -4398047, -424665, -11839077, -20183126, -11999065, -15481746, -4700305, --9501541, -3178813, -1804960, 8810589, 1921461, -2231236, -8631274, -3187403, -5937256, 2538863, --280247, -8526584, 3765613, 4990215, 1566053, -6721087, -8864812, 2299418, 6979322, -1564979, --978716, -15094126, 25438554, 3875134, -5764920, -1251446, 1485522, 10648298, 8624831, -10422812, -4605816, -4444755, 186294, -2273648, -3553012, -15590194, -14487462, -18558016, 1512365, -1401233, --5055177, 10594074, -4919885, 31108448, -4535486, -2335389, -9276056, -4049617, -18336290, -22716082, --14801531, 19356344, 12747463, -10896332, -14115947, 20687784, 10266046, -10715407, -17963700, -1269700, -1486059, 3309272, 1020592, -8208756, 8819178, -5729487, 18541910, -1574642, -15255724, 4776541, -3794604, 1424855, 246961, -4581657, -10335302, 1084479, 6824166, -3335042, 4911832, -8122320, --27292370, -19488950, 12182675, -14784888, 12007655, 5573794, 354335, -3758097, 6581501, 4270808, --3231963, -1959042, 2477659, 9800578, -8311299, 23966454, -6703370, 9371082, -7778186, 3940633, --2982855, -6598144, 20199232, -14560476, 22082574, 1334661, -12602508, -15274514, 7889318, 5463199, -1855426, 3441343, 8388608, 8824010, 7530689, -15417859, -6438156, 3215320, -666794, 7395934, --14481556, -3721052, -5132486, 296890, -17075716, -2323041, 4007205, 40796284, 14227616, -9645960, -21664352, 19297824, -9731859, -13438953, 32347546, -3282429, 7492571, -19319836, 46877420, 1207960, --12498355, 6330782, 2815351, 22131430, 889058, 28063316, -19942070, 66572, -21826486, 1361505, -16208670, 382789, -13171591, 19057306, 10879152, 5392332, 5185636, -7080254, -6017786, 1480153, --9163313, 12430709, -10798622, -15338939, 13850733, 4827543, -16984448, 9312563, 1676648, -12897787, --6615860, -4391604, 7217156, -1605244, -7148973, 9288941, -10800232, -4505958, -3367791, 15687368, --9767293, 7660611, 12523051, 5732171, -6617471, -14374182, 9750650, -12156368, 17370996, -20835424, -28533078, -7705172, -3562139, -3200825, 13120051, 100932, 4860293, 8973797, 4626754, 12597676, --11027865, -17936858, -723165, -1926293, -24815784, -2918967, 22411676, -6456410, -14223858, 6367826, --6765647, -1082332, 10062572, -24375550, -14567992, 9599252, 12430172, 17316234, -1402307, -3125663, -6735583, -1540283, -24428164, -16474958, 28286654, -2049773, -25185152, -14383845, -10276783, -8149701, -2078764, 8489540, 202400, -4065187, -12723841, -18956912, 2287607, 2634426, -960999, 15680926, --10945724, -29802242, 11797738, 8886824, -35264904, 20940650, -6016713, -17547626, -14921790, -1229971, -19455128, 4832912, -7029251, -7121056, 5196911, 10520522, -15220290, 11329587, 1258962, 8362838, --6968585, -15229954, 12917651, 108985, 14506252, -47195248, 5225902, 7364795, -7853885, 13204877, -14295262, 45007500, 197032, -29568702, -14898168, -7611756, -30237644, -28066000, -197569, -15211700, --1046361, -181462, -19841138, 2504503, 13489419, 10541460, -17524540, 31769336, 23471996, -11259794, -14349486, -27193048, -5078262, -9667435, 42415488, 25836912, -9130564, -16735877, -18646600, -5180268, -1902671, 6776385, 28739774, 5055714, 5565204, 5141076, 1603097, -10129143, 1969243, -2678986, -13733695, 16418586, 22905060, 13362180, 10242960, -3161096, -3143379, 2482491, 20918638, 2116345, -4526896, -21370684, -9300752, 33176474, 14969572, 9170292, 1353452, 19365470, 12117176, 42063300, --1221918, 43359844, 4434554, -15153718, 15779710, -13421773, -7592429, -3012920, -6719477, -1018981, -9914932, 16248398, 4872104, -5509906, -17618492, 4469987, 3750043, 10900090, -12947716, 1890323, --4058207, -154082, -16345035, 7062000, -13345000, -5508296, -18343268, -36530844, 5495948, -10959146, --16591459, 5065377, -19014894, -19327, 23218056, 7293928, 19837918, -22779970, -10373420, 11310260, -2496987, 32847910, -16399796, 19731616, -7148436, -9696962, -24096914, -9234180, -12795244, 16618839, -4160213, -21415244, 27580132, -13727789, -12694313, 3015067, 11029476, -7545184, 19279034, -8685498, --12596065, -6260989, 6768332, -1782948, -3045132, 2593624, 19343996, -12123082, 34955664, -12699681, -202937, 32494112, -5709622, 6317897, -42684996, 2687039, 8509404, -8993125, 19932944, -33971580, --41771780, 17066590, -6696391, 24507084, -16683800, -15604690, 2842195, -4402342, 37202468, -3284039, --620623, 9262634, -32549410, 3190624, -32845226, -12245489, 3175055, 9624485, -41142564, -17264694, --3805341, -105227, 15307263, -15712064, 23671712, -5352603, -24773908, 19900730, -17306570, -6937446, -18650358, 37733436, -9669582, 30621506, 12971338, 6701760, -13471702, 34048352, 7087770, 14996952, -3031173, -22597970, 9067213, -22709640, -19490562, 11344619, -19437948, -6231998, -3501472, 19374598, -3164854, -8887361, 8172786, 7588134, -3064459, -21780316, -3416647, 13464186, 38367480, 6657200, --19732690, 370441, -2865817, 6940667, 12386686, 16835734, -7258495, -1598802, 13211856, 743029, -329102, 22741314, 23351200, 24580098, 10067403, 20270098, 3854196, 11238319, -9864466, -4168266, -3601867, -23220740, 2098092, 32947230, -4080219, -10188736, 7711614, -3039226, 9615895, -23622856, -27764280, -20125680, -8141648, -7513509, 755377, 463320, 2441152, -33514704, 36749352, -11370389, --15515569, -7590818, 62282396, -2867965, 11825656, 320512, -7305203, 2643016, -29999272, -11589432, --9770514, 12234751, 7318088, 15179488, 863288, -14453639, 15337865, -12127377, 17811230, 14591078, --15757161, -15149960, 1189706, 23661512, -23994372, 10720238, 10027675, -12318503, 5234492, -723165, -7452842, -23622, -34604552, 20059644, 11047730, -27561342, 33871184, -17235704, -5015448, -10251550, -27247810, -4432943, -24285892, 1065689, -216359, 24154360, 22854594, 2709051, -18597208, 27434104, --4762582, 5848135, -33806760, 27467390, 10205379, 2865280, -19575388, -13150653, -2484639, 10497974, --15788837, -26016764, -12101070, 23190140, 13038447, -1613834, 34812320, 3811784, -6109054, -23523536, -30657476, -26776974, -9778567, 34158412, 9426916, 7138236, -12927315, 9147207, 28258738, -24062018, --415538, -27060442, 25303800, 42703248, 18052822, 24876450, -37304476, -30878130, -26459146, 3798899, -43694848, -6903623, 15557982, 30561914, 13599477, -14639933, -107374, 22763864, -28503014, -21417392, --20724290, 23855858, 14519137, -27181774, -41645612, 56744572, 32993402, -37625524, 16809428, -2876018, -15330886, 3511136, -12847858, -25474524, 23980950, 1205275, -21169356, -28356984, 6828998, 9082782, --8570070, 2873870, -3710315, -12805445, -7468948, -5651640, 13165685, -24236500, 28398860, -17626008, -194884, 48589500, -45340360, -8110509, 41072236, 5809480, 8916352, -3346317, -14055280, 16211354, --5821292, -15286862, 1424855, -38783016, 70520144, -3400540, -80019000, 33764884, 76601280, 50141596, --97656280, -23369454, 16311749, 12184285, -17753248, -14671071, -19428822, 3991635, 20086488, 45191108, --18843632, 14192719, -23961086, -65156264, 34958348, -17110076, -35025460, -25373594, -35890356, 16182900, -11996917, -49540300, 30999464, -18093624, -1371705, -1896765, -25078850, 17770964, 18760418, 15362024, --2011655, 20464982, 10995653, -15001247, 605054, -29330332, -10709501, -26309896, -17898740, -3126199, -38859252, -35262756, -8151848, -9292699, -30962956, 15227270, -34908420, 15057618, 13638132, -25271588, -16372415, -39252244, 8761733, -34600256, 18736258, -14812268, -18986976, -20498268, -28329068, -10200010, -10500658, 19271518, -29212220, 14046154, 6739341, 23781234, 30451854, 15611132, -32037772, -17429514, --57311508, -18067316, -20234128, 12572980, -67374080, -17264158, -43149924, -9307731, 29434484, 27074400, -13265543, -222265, 38205880, -12263742, 9589588, 55236500, -31762894, 19235548, 28322624, -14345728, -4567698, 7741679, -1024350, 25615184, 3595961, 17917530, -23663660, -5923297, 24580634, 1426466, --32910186, 20404316, -11890617, -13670881, -11297375, -5740761, -10989211, 11024644, 20591684, 6788733, --1234266, -11986717, 18081812, -7477001, -23779624, 18857054, -41521596, -13137768, -7065758, -11719355, -26624502, 24978456, 50453516, -16393353, 22566832, -2860448, 11082626, 29849486, -685047, 1404991, --19694572, -68973416, 34690452, 4498978, -30932354, -23996520, 4606353, 15784005, -1861332, -20628192, -10950019, -20991116, 26562226, 12912282, -10389526, -24552180, 46982112, 4132832, 2755759, -4945655, -6387690, 2968359, 1528472, -15401216, -34102576, 10099616, -6833293, -9446244, -33934000, -963683, --4100083, 3590593, 63458680, 32945620, 63858648, -58932320, 4749697, 31221728, -12338367, 35510252, -67403608, 37586868, 1785096, -17870286, -19209242, 3908957, 29000692, 31854698, 6772627, 319438, --47154984, -9241696, 45759656, 15665356, -13242458, 25884158, -22051972, -29916594, -8704288, -1615982, -35292820, 46996068, 41474888, 16269873, -16603807, -24528022, -46652472, -45594836, 39692476, 17223892, -2898029, 62310848, 3359738, -18532248, -25722560, -25313464, 12116640, 26862872, 20636244, 41018012, -2464238, 29630442, -2346126, -4836133, 14352707, 27456116, 19320910, 17589502, -15918759, -5456219, --12691628, -27064736, -22546430, -39639864, -14006425, 11023570, -7266548, 29330868, 34155728, -426276, --645319, -14345728, -26794154, 4911295, 32120986, -3092913, -33655364, -66329864, 26410290, 107707576, -110029008, 92739616, 67689760, -41527500, -46842524, -51114404, -67476624, -104013904, -83249888, -72686416, -34508988, 78488376, 58959700, 126156072, 98103496, 51077900, -17822504, -33501818, -83646632, -65566972, --64366528, -12811887, -38958036, -31912680, 10910291, 18424336, 36941552, 36579700, 50474456, 49579492, -64301568, 37616936, 17699560, -8065949, -8913131, -26461294, -40011916, -49213344, -59800976, -39023000, --73751568, -48973364, -35681516, 39662948, 74382928, 79483736, 56294672, 38640212, 60119340, 46114528, -58054000, 45729052, 18486076, -17628156, -92651568, -64991444, -65392488, -104228656, -63103808, -54507428, --51727512, 25232932, 62867584, 96071976, 81349368, 113052664, 103615552, 101507792, 76465984, -26111254, --20229296, -60276644, -79548160, -68961072, -11515344, -6640020, 0, 0, 0, 0, -0, 0, 0, }, +328028, -5092221, -1712081, 2312840, 1407676, 3224447, -4187593, 2341831, -546535, -3929895, +4642860, -2215130, -960999, -3183645, -2645700, 3153580, -3089155, 1725503, 4360466, -419296, +2439542, -1421097, 79994, 2024003, -584116, 4193499, -173946, -6439230, -145492, 1058173, +2829310, -2903935, 465467, 929324, -569083, 2788508, -506806, 3889630, 3453154, -2181844, +-229244, 3512747, -7078106, -4002373, 1541893, -3591667, -805843, 1478543, -16643, 4281546, +4736275, 1091995, 2000918, 2433636, 2530273, -747324, 705985, 2312840, 3107946, 442382, +-2132451, -4013647, -2622615, -83752, -431107, -329639, -5526549, 5031018, -1579474, 712965, +-1739462, -3380139, 1675037, -679679, 1908576, 12936978, 565325, 2183454, 1793149, -5264556, +-2747705, 7159174, 12437152, 2004139, 6609418, -2703682, 1221381, -357556, 5581847, -4473209, +-10208064, 4088272, 4704600, -5950677, 6812355, 3353296, 6203007, 1949378, 1420024, -2775086, +-954020, 285615, 4093641, 332323, -6381785, 228707, -608812, 1309428, -983548, 1065689, +1394254, 3690988, 2596845, 833761, 1040993, 307627, 1697586, -2005213, -3288871, -7038915, +1184874, 1459215, 391916, 5262946, -2074469, 4071092, 950798, -1735704, -3499862, -2211371, +7255274, 1519882, 3935264, 613643, 1391569, -1516660, -16643, 421444, 1857573, -722091, +-3101503, -1578401, -6141803, 581968, 757525, 4909148, -2013803, 3758097, -1148904, 2475512, +4661114, 4758287, 1983201, 2024003, 2399813, 3192235, 4398584, -1839857, 4570919, 186831, +4894652, -964757, 8811125, 3170760, 2833068, -5951751, -969589, -1244467, -8032663, 4464619, +3537443, -2365453, -10481331, -4588099, -1662152, 5191542, 6855305, 4521527, -2876018, 1619740, +-4538707, 345745, 300648, -3487514, -1882269, -9251896, 701690, -1045825, -3994320, 537945, +484258, -1144072, -345208, 9109089, -2196876, 7441031, 1399086, -5533529, 407485, 668404, +4117263, -1731946, 1187559, 1086627, 355945, 5709622, 2007897, 5853504, 4320737, -2856153, +5367099, 2641405, 3990562, 438624, 1460289, -1277753, -2225867, -4687420, -5484673, 6099928, +-5606006, -4685273, -4405026, 2741263, 3393561, 940598, -8111583, -7507066, 1603097, 168577, +-1649268, 4529043, -611496, -766115, 4662187, -5134097, 991601, -4479114, -2931852, -1604170, +31675, 7668127, 8669391, -4015258, 3386045, -6237367, -615791, -2429878, 8422431, -2475512, +-494995, 903554, -11901354, -2047626, -5885716, -1915019, -1473711, 4446902, 5865315, 2428804, +7933342, -999117, -3635690, -3654480, 4575214, 11947525, 8324721, -4635344, -5455682, 5985037, +-5368172, 1035624, 1889249, 9789304, -3611531, -4802847, 1051193, -2975876, 1855963, 2500208, +6200322, -6798397, -4427038, 3992709, 7494181, -693637, -3496104, -4434017, -10623602, 4008278, +-27380, 3130494, 491774, 223338, -1667521, 1867237, -2697240, 1557463, 2331094, 2116882, +-3663070, 2427730, -19679004, -6484327, -1038845, 3355980, 2259690, 4895726, -9396852, -2815351, +-423591, -9746891, -6961068, 2450279, 5900212, 3462818, 6511171, -827318, 3742527, 8669928, +7651484, 7192997, 4148939, -2760053, -2196339, -4439923, -1963337, -4457639, 9257265, 4318053, +-1409286, -4078072, -2487323, -4160750, -6081137, -6547141, -8245801, 5012764, 3584687, -9131637, +2180233, -441845, 6349573, 1009317, 3138547, 4150549, -8639327, -1296006, -290447, 1209570, +4578972, 6976638, -2730526, -915902, -1989107, -5356361, 1720671, 1206349, -526670, -1351304, +5289789, 449898, -2833068, -783832, 2549600, 3583077, -1276679, 135828, 958315, -4391067, +3610457, 75699, -7033009, 1393180, -8607651, 2162516, 6528351, -989990, -413391, 10589779, +4296578, 1618129, -2469606, 7757785, 3323768, 4303021, 12857521, 13467407, 776315, -2403034, +-4580583, -7603703, 2997350, 5222680, -2513630, -724239, 1060320, -1465658, -4062502, 4959614, +-4701379, 2205466, -14137422, -2240899, -3189550, -3661997, -6802692, -1637993, -571768, -34360, +-3296388, -5372467, -3742527, 432181, -2338073, -5687611, 3725347, 4628901, 812286, -4690105, +-4669703, 1738388, -3476776, 4356171, -5146982, 3483755, 1808718, -213675, -7492571, -7567733, +2265059, -5529771, 9296457, 1396938, 7924215, -3965329, 8006356, 1251983, 5421323, 1413581, +5218922, -4361540, -5142150, -370978, 10325101, -1214402, -5448166, -3726958, 5186173, -3070365, +-2419140, 417149, -8655970, 6105296, 10442139, -1925756, 15885473, 2833605, 8893804, -3696356, +6758131, 4417911, 10320270, -7703024, -4882841, -2018098, 957778, 6743636, -2939368, 10411001, +-410169, 5778342, 5662378, -3325915, 2564096, 5862631, 6118718, 1145146, 1984812, 5315559, +-11235098, 1588064, 9418863, 6723772, -5877126, 7546258, -8861054, 5327907, -7761006, -4442070, +-1721208, 8218957, -1309428, 8623221, 2421288, 1618666, 884763, -605054, 3983582, 4940823, +12091407, 1530619, 10506564, -5235029, 7815767, 9373229, 182536, -2021319, -2987150, 3454764, +-13295608, -1423245, 1890859, -5441187, -7647190, -722091, 46171, -1358283, 4206921, -8674760, +4882841, 3501472, 6005975, -13499082, 5254356, 3039763, -7159711, -1023276, 5064304, 9812927, +-11694122, -1181116, 1443109, -13885092, -16828756, -13618804, -12135967, -485868, 8724152, -17914308, +12826383, 8164733, -19925964, 12579422, 5490579, 4277788, 2134599, 1906429, 4694936, -3179350, +-3104725, -6610492, -17180, 7680476, 6693707, 3785477, -11217918, 7807177, -7948374, 235686, +-6951405, 8978092, -4506495, -3673808, 3082176, -13388487, 1610076, -4398047, -3730179, -1370632, +1263794, 13281649, -5908265, -1936493, -4686346, 10145250, -5746130, -3179350, 3483219, 3151432, +3246459, 3702799, -3725884, 5013301, 1711545, -10826002, 15657303, 6239514, 3002719, 1823751, +527207, -6779069, 9329206, 7580081, 3763465, 10081899, 1845225, 4699231, 10679436, 5468567, +3140695, -6146098, 9259413, -2823404, 16828756, -795106, 2243047, -3066070, -13536663, 3409130, +10298258, 6261526, -710280, -6648610, 16617228, 25274272, -2991445, -4067334, 12852690, 2525441, +4496831, 2785823, -18169322, 1510755, -11624329, 9048959, 14042932, -4152697, -6257231, 1658931, +9009231, -5794985, 10802916, -4719632, 20530480, -6536404, 4227322, -1638530, 5793374, 13726179, +-5131412, 730144, -974421, 3453691, -5048734, -3309809, 8475581, 16900160, 1751810, 12143483, +-4515621, 971200, -2166274, 3468723, 9709310, 13217225, 11240466, 9527848, 11102490, 5917928, +-1734093, 686658, -1248762, -760209, 2398202, -8133595, -1789391, 10210211, -9732933, 2766496, +-4144644, -3913252, -4940823, -21927418, 2544768, 9660992, 7304666, -4155918, -9490267, -25490094, +-3549254, 7588671, -1709397, 1359357, -7055558, 2308545, -6011344, -18287970, -13481365, 1248762, +8891119, -8530879, -4612795, 468151, -3671123, -27062588, -22246320, 9415642, 9812927, 1149441, +1989644, -10241350, 15853261, 17949206, 12049531, -10051834, 9561671, 11615202, -1215476, -15898895, +-6258841, 20764556, -5624797, 1634235, 1998770, 11455215, -8871255, -17571784, 4434554, 7364795, +-3462818, 4541928, 11819750, -5849209, -3486977, -978179, -23082228, -7384123, 9002788, -5005785, +-15133854, 2415382, 404801, -5488968, 4016331, -1979980, -14249091, -13291850, -21736830, -18466748, +4425427, 7439957, 1685238, -5882495, -6574521, -324807, -4149475, 4299263, -9813463, -180926, +-2741263, -3719979, -2512019, -1604170, 5493263, -5618891, -20367272, 2506650, -1658394, 4501126, +7593502, -602369, 6045167, 3766686, 8648990, 27763206, 24663850, 19247896, -2103997, 18795850, +6049999, 26235808, 11058467, -644782, 31998044, -6809134, -1819992, -20594368, -5557688, -583579, +-14610942, 8444443, 12672301, -4398047, -424665, -11839077, -20183126, -11999065, -15481746, -4700305, +-9501541, -3178813, -1804960, 8810589, 1921461, -2231236, -8631274, -3187403, -5937256, 2538863, +-280247, -8526584, 3765613, 4990215, 1566053, -6721087, -8864812, 2299418, 6979322, -1564979, +-978716, -15094126, 25438554, 3875134, -5764920, -1251446, 1485522, 10648298, 8624831, -10422812, +4605816, -4444755, 186294, -2273648, -3553012, -15590194, -14487462, -18558016, 1512365, -1401233, +-5055177, 10594074, -4919885, 31108448, -4535486, -2335389, -9276056, -4049617, -18336290, -22716082, +-14801531, 19356344, 12747463, -10896332, -14115947, 20687784, 10266046, -10715407, -17963700, -1269700, +1486059, 3309272, 1020592, -8208756, 8819178, -5729487, 18541910, -1574642, -15255724, 4776541, +3794604, 1424855, 246961, -4581657, -10335302, 1084479, 6824166, -3335042, 4911832, -8122320, +-27292370, -19488950, 12182675, -14784888, 12007655, 5573794, 354335, -3758097, 6581501, 4270808, +-3231963, -1959042, 2477659, 9800578, -8311299, 23966454, -6703370, 9371082, -7778186, 3940633, +-2982855, -6598144, 20199232, -14560476, 22082574, 1334661, -12602508, -15274514, 7889318, 5463199, +1855426, 3441343, 8388608, 8824010, 7530689, -15417859, -6438156, 3215320, -666794, 7395934, +-14481556, -3721052, -5132486, 296890, -17075716, -2323041, 4007205, 40796284, 14227616, -9645960, +21664352, 19297824, -9731859, -13438953, 32347546, -3282429, 7492571, -19319836, 46877420, 1207960, +-12498355, 6330782, 2815351, 22131430, 889058, 28063316, -19942070, 66572, -21826486, 1361505, +16208670, 382789, -13171591, 19057306, 10879152, 5392332, 5185636, -7080254, -6017786, 1480153, +-9163313, 12430709, -10798622, -15338939, 13850733, 4827543, -16984448, 9312563, 1676648, -12897787, +-6615860, -4391604, 7217156, -1605244, -7148973, 9288941, -10800232, -4505958, -3367791, 15687368, +-9767293, 7660611, 12523051, 5732171, -6617471, -14374182, 9750650, -12156368, 17370996, -20835424, +28533078, -7705172, -3562139, -3200825, 13120051, 100932, 4860293, 8973797, 4626754, 12597676, +-11027865, -17936858, -723165, -1926293, -24815784, -2918967, 22411676, -6456410, -14223858, 6367826, +-6765647, -1082332, 10062572, -24375550, -14567992, 9599252, 12430172, 17316234, -1402307, -3125663, +6735583, -1540283, -24428164, -16474958, 28286654, -2049773, -25185152, -14383845, -10276783, -8149701, +2078764, 8489540, 202400, -4065187, -12723841, -18956912, 2287607, 2634426, -960999, 15680926, +-10945724, -29802242, 11797738, 8886824, -35264904, 20940650, -6016713, -17547626, -14921790, -1229971, +19455128, 4832912, -7029251, -7121056, 5196911, 10520522, -15220290, 11329587, 1258962, 8362838, +-6968585, -15229954, 12917651, 108985, 14506252, -47195248, 5225902, 7364795, -7853885, 13204877, +14295262, 45007500, 197032, -29568702, -14898168, -7611756, -30237644, -28066000, -197569, -15211700, +-1046361, -181462, -19841138, 2504503, 13489419, 10541460, -17524540, 31769336, 23471996, -11259794, +14349486, -27193048, -5078262, -9667435, 42415488, 25836912, -9130564, -16735877, -18646600, -5180268, +1902671, 6776385, 28739774, 5055714, 5565204, 5141076, 1603097, -10129143, 1969243, -2678986, +13733695, 16418586, 22905060, 13362180, 10242960, -3161096, -3143379, 2482491, 20918638, 2116345, +4526896, -21370684, -9300752, 33176474, 14969572, 9170292, 1353452, 19365470, 12117176, 42063300, +-1221918, 43359844, 4434554, -15153718, 15779710, -13421773, -7592429, -3012920, -6719477, -1018981, +9914932, 16248398, 4872104, -5509906, -17618492, 4469987, 3750043, 10900090, -12947716, 1890323, +-4058207, -154082, -16345035, 7062000, -13345000, -5508296, -18343268, -36530844, 5495948, -10959146, +-16591459, 5065377, -19014894, -19327, 23218056, 7293928, 19837918, -22779970, -10373420, 11310260, +2496987, 32847910, -16399796, 19731616, -7148436, -9696962, -24096914, -9234180, -12795244, 16618839, +4160213, -21415244, 27580132, -13727789, -12694313, 3015067, 11029476, -7545184, 19279034, -8685498, +-12596065, -6260989, 6768332, -1782948, -3045132, 2593624, 19343996, -12123082, 34955664, -12699681, +202937, 32494112, -5709622, 6317897, -42684996, 2687039, 8509404, -8993125, 19932944, -33971580, +-41771780, 17066590, -6696391, 24507084, -16683800, -15604690, 2842195, -4402342, 37202468, -3284039, +-620623, 9262634, -32549410, 3190624, -32845226, -12245489, 3175055, 9624485, -41142564, -17264694, +-3805341, -105227, 15307263, -15712064, 23671712, -5352603, -24773908, 19900730, -17306570, -6937446, +18650358, 37733436, -9669582, 30621506, 12971338, 6701760, -13471702, 34048352, 7087770, 14996952, +3031173, -22597970, 9067213, -22709640, -19490562, 11344619, -19437948, -6231998, -3501472, 19374598, +3164854, -8887361, 8172786, 7588134, -3064459, -21780316, -3416647, 13464186, 38367480, 6657200, +-19732690, 370441, -2865817, 6940667, 12386686, 16835734, -7258495, -1598802, 13211856, 743029, +329102, 22741314, 23351200, 24580098, 10067403, 20270098, 3854196, 11238319, -9864466, -4168266, +3601867, -23220740, 2098092, 32947230, -4080219, -10188736, 7711614, -3039226, 9615895, -23622856, +27764280, -20125680, -8141648, -7513509, 755377, 463320, 2441152, -33514704, 36749352, -11370389, +-15515569, -7590818, 62282396, -2867965, 11825656, 320512, -7305203, 2643016, -29999272, -11589432, +-9770514, 12234751, 7318088, 15179488, 863288, -14453639, 15337865, -12127377, 17811230, 14591078, +-15757161, -15149960, 1189706, 23661512, -23994372, 10720238, 10027675, -12318503, 5234492, -723165, +7452842, -23622, -34604552, 20059644, 11047730, -27561342, 33871184, -17235704, -5015448, -10251550, +27247810, -4432943, -24285892, 1065689, -216359, 24154360, 22854594, 2709051, -18597208, 27434104, +-4762582, 5848135, -33806760, 27467390, 10205379, 2865280, -19575388, -13150653, -2484639, 10497974, +-15788837, -26016764, -12101070, 23190140, 13038447, -1613834, 34812320, 3811784, -6109054, -23523536, +30657476, -26776974, -9778567, 34158412, 9426916, 7138236, -12927315, 9147207, 28258738, -24062018, +-415538, -27060442, 25303800, 42703248, 18052822, 24876450, -37304476, -30878130, -26459146, 3798899, +43694848, -6903623, 15557982, 30561914, 13599477, -14639933, -107374, 22763864, -28503014, -21417392, +-20724290, 23855858, 14519137, -27181774, -41645612, 56744572, 32993402, -37625524, 16809428, -2876018, +15330886, 3511136, -12847858, -25474524, 23980950, 1205275, -21169356, -28356984, 6828998, 9082782, +-8570070, 2873870, -3710315, -12805445, -7468948, -5651640, 13165685, -24236500, 28398860, -17626008, +194884, 48589500, -45340360, -8110509, 41072236, 5809480, 8916352, -3346317, -14055280, 16211354, +-5821292, -15286862, 1424855, -38783016, 70520144, -3400540, -80019000, 33764884, 76601280, 50141596, +-97656280, -23369454, 16311749, 12184285, -17753248, -14671071, -19428822, 3991635, 20086488, 45191108, +-18843632, 14192719, -23961086, -65156264, 34958348, -17110076, -35025460, -25373594, -35890356, 16182900, +11996917, -49540300, 30999464, -18093624, -1371705, -1896765, -25078850, 17770964, 18760418, 15362024, +-2011655, 20464982, 10995653, -15001247, 605054, -29330332, -10709501, -26309896, -17898740, -3126199, +38859252, -35262756, -8151848, -9292699, -30962956, 15227270, -34908420, 15057618, 13638132, -25271588, +16372415, -39252244, 8761733, -34600256, 18736258, -14812268, -18986976, -20498268, -28329068, -10200010, +10500658, 19271518, -29212220, 14046154, 6739341, 23781234, 30451854, 15611132, -32037772, -17429514, +-57311508, -18067316, -20234128, 12572980, -67374080, -17264158, -43149924, -9307731, 29434484, 27074400, +13265543, -222265, 38205880, -12263742, 9589588, 55236500, -31762894, 19235548, 28322624, -14345728, +4567698, 7741679, -1024350, 25615184, 3595961, 17917530, -23663660, -5923297, 24580634, 1426466, +-32910186, 20404316, -11890617, -13670881, -11297375, -5740761, -10989211, 11024644, 20591684, 6788733, +-1234266, -11986717, 18081812, -7477001, -23779624, 18857054, -41521596, -13137768, -7065758, -11719355, +26624502, 24978456, 50453516, -16393353, 22566832, -2860448, 11082626, 29849486, -685047, 1404991, +-19694572, -68973416, 34690452, 4498978, -30932354, -23996520, 4606353, 15784005, -1861332, -20628192, +10950019, -20991116, 26562226, 12912282, -10389526, -24552180, 46982112, 4132832, 2755759, -4945655, +6387690, 2968359, 1528472, -15401216, -34102576, 10099616, -6833293, -9446244, -33934000, -963683, +-4100083, 3590593, 63458680, 32945620, 63858648, -58932320, 4749697, 31221728, -12338367, 35510252, +67403608, 37586868, 1785096, -17870286, -19209242, 3908957, 29000692, 31854698, 6772627, 319438, +-47154984, -9241696, 45759656, 15665356, -13242458, 25884158, -22051972, -29916594, -8704288, -1615982, +35292820, 46996068, 41474888, 16269873, -16603807, -24528022, -46652472, -45594836, 39692476, 17223892, +2898029, 62310848, 3359738, -18532248, -25722560, -25313464, 12116640, 26862872, 20636244, 41018012, +2464238, 29630442, -2346126, -4836133, 14352707, 27456116, 19320910, 17589502, -15918759, -5456219, +-12691628, -27064736, -22546430, -39639864, -14006425, 11023570, -7266548, 29330868, 34155728, -426276, +-645319, -14345728, -26794154, 4911295, 32120986, -3092913, -33655364, -66329864, 26410290, 107707576, +110029008, 92739616, 67689760, -41527500, -46842524, -51114404, -67476624, -104013904, -83249888, -72686416, +34508988, 78488376, 58959700, 126156072, 98103496, 51077900, -17822504, -33501818, -83646632, -65566972, +-64366528, -12811887, -38958036, -31912680, 10910291, 18424336, 36941552, 36579700, 50474456, 49579492, +64301568, 37616936, 17699560, -8065949, -8913131, -26461294, -40011916, -49213344, -59800976, -39023000, +-73751568, -48973364, -35681516, 39662948, 74382928, 79483736, 56294672, 38640212, 60119340, 46114528, +58054000, 45729052, 18486076, -17628156, -92651568, -64991444, -65392488, -104228656, -63103808, -54507428, +-51727512, 25232932, 62867584, 96071976, 81349368, 113052664, 103615552, 101507792, 76465984, -26111254, +-20229296, -60276644, -79548160, -68961072, -11515344, -6640020, 0, 0, 0, 0, +0, 0, 0, }, }, { { -6346351, --4986994, 1199907, -2861522, 4595615, -4682051, 1912871, -8588324, -650688, -3399467, -5342403, --4507032, -2642479, -223338, -1012002, 5650567, -1739462, 1135482, -736050, -292595, -4706748, -5520107, 1690070, 1017370, 1465121, -1102733, -1225139, 1391033, 5286568, 2262374, -1039919, --404264, -153545, -1214939, 110595, -889058, -490163, 70867, 2984466, 355945, -2333241, -1708860, -2499671, 7295539, -4435091, 544924, -76236, -5440650, -831613, 2388539, -3060701, --1372242, -998043, 3630858, -1977296, -1393180, -223338, 417686, 781147, -537945, -1773822, --4234838, 797253, -2205466, -3162707, 755914, 1193464, -232465, 857383, 2074469, 2114735, --301721, 788127, 358093, 2738579, -3060164, -3017752, 3038689, 3194919, 6111739, -8471286, -1552094, 6108517, 10254771, -830002, 5626944, 61203, 5075041, 1619740, 7965554, 141197, --3046206, 5906654, 7613904, 7854959, 4099546, 1524177, -3433826, -2118493, 384400, 4155918, --2324114, 2094333, 104153, 4682051, -2493229, 181462, 713501, -4922033, -3421478, -1233193, --5844914, 1610613, -1933809, 258772, -1140851, -4236985, 3132642, 5722507, -1529545, 743029, -83215, -555661, 5325760, -6663105, -450435, 3199214, 336081, 1237488, -2121177, -5456756, --1932198, 2571075, 2190433, 3283503, -1003412, 439160, -454730, 1517197, -1491964, 6407555, --362925, -157840, -4524748, 932008, -3438121, -1762010, 1730335, 3077344, 5479305, 784368, -5145371, 6923488, 11277510, 1492501, 5629092, -2043331, 3358128, 4340065, -1302449, -3484292, -5940477, 10184441, -1954210, 1139777, 3984656, -4859219, 3084860, 4365835, -8844411, 2528662, -928250, -1970853, 64425, -9229885, 445066, 2639258, -4334159, 864899, 231928, 5992553, -4321274, -2165737, -548682, -493384, -6219650, -4163971, 788663, 2635499, 670552, 2927557, --4064113, 734439, 2192044, 545461, -3743601, -2699387, -733903, 1481227, 3250217, 3380139, -2288681, 3935264, 3832722, -3961571, -1117228, 365609, 5404680, -581431, 3932043, -2236067, --2383170, -528281, -4522601, -1881733, 1171989, 3079492, -3800509, 4308926, -869731, -753230, --515396, -1105417, -1727114, 1396938, 3426847, 1868848, 5583995, -5913096, -1457605, -1082332, --3233574, 1156420, 6731288, 9020505, 5553930, -2530810, 4161287, -2629594, -1427540, -8106751, --6085969, 2630131, 6238440, 5694590, 6355478, 1155883, 526670, 3595961, -4895189, 4896263, -4338991, 157840, 3753802, 8920110, 6414534, 1513976, -6382322, -41876, 2400887, 1182727, -1276142, -7441568, 1916092, 1082869, 5012227, 5073967, -1480153, 3166465, -2398202, -3131031, -4067871, 1938104, -6699612, -6789807, -2661806, -3936875, -2530810, -3188476, -7763691, -7490423, --448824, 2312303, 161598, -1057636, -5153961, 410169, 6589017, -2101850, -1785096, 2076080, -224949, 4274030, 2567317, 2010045, -2702071, -4023848, 7135552, 2765959, -2407329, 4139275, --216896, 3162170, -2510409, 301185, -12742094, -7514046, -2340757, 2410551, -5245229, 1597728, --1426466, 3665218, -877247, -7142531, -5662915, 4935991, 4059818, 10213432, 9040906, -1372779, -6548752, -9822590, -1573569, 7633768, 2327872, 1770600, -976568, -3208341, -1462973, 1056562, --839129, -297427, 3904662, -4814659, 1119376, 1751273, -66035, 3041374, -3255048, -2711198, -1809792, -2108292, 2784750, -5379984, 966368, -3230889, -1190780, -3598646, -2605435, -4087735, --5967320, 3722663, 70330, 6344741, -5807870, -5072357, 94489, 1220308, -544387, -1211718, -590558, 3828963, 2022930, 834297, -2388002, -2501282, -1174137, -4715874, 1047435, -1198833, -901943, -183610, -4682588, -370441, 110059, -5311264, 813896, -869194, 1563368, -607201, --4278861, 4320737, -6703907, 2657511, -7512972, -1450088, 515933, -5773510, 5456219, 3932043, --11234024, -1279363, 2041183, -1183264, -4846871, -6803765, 1498407, -3497177, -5426691, -2882460, -3406446, 2765959, 8178155, 10331007, -798327, 9210557, -5636071, 3520263, 4193499, -1004486, -4130685, -2483028, 195958, -794032, -1822677, -1190780, -2054068, 7613367, -330176, -6020471, --1282585, 3703873, 2539936, 2914672, 733903, -2938831, 5817533, 11400991, 839129, 943282, -798327, -1099512, 1961726, -1020055, 6768332, -5323075, 6484864, 4157528, -3899830, 1821066, -4284230, 2584497, -4683125, -5486821, -10188736, -1932198, -796180, 1089848, 4205310, -1173063, -2831457, -1034550, -2500208, -2812130, 5632850, -1108638, 5978595, -7617125, -142808, 3257196, -1059246, 386547, 3758097, 11959336, 13535589, -3384971, -635655, 3111704, -2422362, 9146133, -8402030, -5336497, 8215199, 6897181, 2222646, 4053912, 3105261, 1918240, -1157494, 743566, -731218, -4625143, -6226092, 1611687, -2073932, 7516, 530965, -5050882, 4676146, 10419591, --828929, -6180458, 9613747, 1258425, -230854, 3991635, -2341831, -3041911, 893353, -3827890, -919660, 10322417, 3811247, -119185, 3054259, 5569499, 13939853, -2460480, 5609228, -1340030, --7073275, 4075387, -370441, -2225330, 2095407, 8831527, 1489280, 1453310, -974958, 3436511, -12052752, 5636608, 697395, 1140314, 2442226, -3908957, 5606543, -1889786, -13864691, 1380295, --2497524, 7552700, 7891466, 3840775, 204548, -15011984, -2362232, -6016176, -8428336, -1457605, --6180458, 885300, 4201552, -6714108, 7006166, -15603079, 1715303, -4175245, -9235790, -10975252, -11529303, 6683506, 197032, -9647570, -7306276, 4481262, -13933411, -8696235, 2597382, 3482145, -12996034, -1114007, 562641, 10700911, -6543383, 10524280, 2826089, 4269735, -2483565, -5294084, --1252520, 8875013, -4989142, 1351841, 9774809, -3117610, -3594888, -4346507, -6682969, -4654671, --4524748, -7694434, -1568737, 3146601, -3406983, 2470143, -3285113, -3639448, 5245766, -6825240, -3962107, -5718749, -8551817, 984621, 5978058, 1010391, -2581275, 3169686, -5952825, -2139968, --8122320, -12776454, -6994354, 2384244, -4812511, 15657303, 5155035, -10125922, -6393059, -947577, -17137456, 10777147, 11797738, -3620658, -16230681, -1559610, -8211441, 1859184, 3858491, 8593693, --3947075, 3623342, -6558415, 894427, -5762773, -15551003, -8050380, 5588290, -5386963, -12379169, --11203959, -10856604, -16357383, 1794223, -5610301, -12857521, -11151346, 1723893, 16107201, -2394981, --2483565, -5592048, -9487583, 1727651, -3675955, 791348, -11885785, 503048, -12391518, 1486059, --864362, 6478958, 5378910, 5348845, 3033858, -740882, 4804458, -3345780, 9307731, 2314451, -4774393, 2520609, -2872260, 3002719, 9359271, -1468342, 5274220, -1573032, 14635101, 1611150, -5557688, 450435, -8055211, -6493991, 370978, -3150359, 1956358, -2377265, 4888747, 4009889, -5674726, -2889976, 3294240, -11549704, 6123550, 15605764, -8165270, -23688356, -3905736, -8258149, --12440910, 6733435, -23758686, -3056943, -8417062, -4569845, 6928856, -7525320, 10133438, 8739185, -1462436, 7897908, 784368, 4220342, -6100464, -10851772, -11938935, -6637335, -10919954, 8728447, -11420318, -354872, -5793911, 3400004, 3416647, -3998615, 1007170, -18649822, -9761387, 8936216, --4591857, 453119, 8810052, -601295, 5551782, 4777078, -2193655, 5450851, 213138, -9764071, -11463805, -7563438, 854162, 927713, -5823976, 4440460, 7023882, -3564823, 8001524, 1249299, --170188, -6527814, 9054328, 418759, -6466074, -1794223, -13407277, -5287105, -7367480, -378494, -10255845, 3478387, -169651, 970663, -8182450, 2979097, 7932268, -7960722, 1722282, 15421080, --4177393, 3532611, 4045859, 41747620, 9862856, -5964099, -7975755, -1242856, -2172180, 7069516, --1146219, 5925981, 12502650, -5209796, 1155346, -8288750, -4852240, 2189360, -719407, 5807870, --11224360, -7260642, 6206228, 11541651, 8468065, -666794, 3469260, -3189013, -6442451, 4881767, -9968619, 9466645, 12451110, -9947681, -1554241, -5788542, -11275900, -1721208, 1422171, -2819109, -6360847, 7147363, 835371, 3469260, -1278290, -12914430, -6049462, -17208324, -16419123, -5131949, -6813966, -2572686, -6656663, 14561550, 6594386, -557272, -12512850, -547608, -3001109, -9642202, -1400159, -4290136, -4964982, -13280039, -270046, -4672925, -13280576, 420370, 13121662, -7086159, --1671816, 4946729, -4152160, 3577171, -3650185, 10805601, 519691, -6247030, -8180302, 9937481, --33889976, -18615998, 17251274, -4185446, 654983, -8776229, 7235410, -2774012, -13408351, 6582038, -17394080, 2669859, -16210817, 4780836, -3960497, -3241627, 9755481, 11028402, -2015950, -1859721, -21973052, 5344013, -3842385, -13575855, 5527623, -19610820, -16990354, -14824080, 5480379, -2610266, --2269890, 13187697, 4502737, -12954695, -11683922, 3058017, 12105365, 4560182, -2173254, 886911, -7807714, -6026376, -14648523, 18267032, -6092948, 1986959, 6547678, 1215476, 1717450, 18723374, --492311, 11929809, -300111, -12481712, 950798, 2673617, -3475702, 2365990, 7581154, -6360847, --2860985, 2116345, -25693032, 6488622, 4038343, -217433, 4867272, 4554276, -10295573, 4312684, -32744830, 14649597, 7086159, 2774549, 6881075, -24525874, -22889492, 16239271, 16368657, 5945846, -8828305, -5699959, 26435524, -2621541, 9817221, 7567733, -12828530, -4520453, -6136972, 16203301, --9692131, -2298881, 9454297, 8884677, -9505836, -1857037, -26759794, 5570573, -3273302, -7103339, -1954747, 1376000, 1634235, 3102040, 8639327, 1053878, 9508521, 1867774, 4507568, -1812476, --8752070, -8338142, 16831976, -5330055, -12560095, -9636833, -4899484, -4942971, 7239168, 5387500, -5563057, 8358007, 2151242, -8516920, 5275831, -14394583, -5041755, -12448426, 9149354, -15183246, --11522324, -2490007, -5355824, 5755256, 10924249, -7612293, 10370735, 17834314, 8565775, 17260400, --6508486, 22857280, 2354179, 19599546, 10904385, 3557844, -9250823, -23316840, -15980500, -11979201, --6832756, -5530308, 12598750, 6252399, -6980933, 20912732, 2502892, -20610474, 25748866, 1627793, --10776073, 8959302, -20900922, -4101694, -13253195, -4248260, -2226404, -4167192, -9427453, 2636036, --18028126, -7067906, -6402723, -24557012, 3133716, -17804786, -12491376, -19961398, 4159676, -15049029, --4392141, -4965519, 316217, 7630547, -5970005, 10741713, 701690, 14252849, -3157338, 12424267, -15684147, -18545668, -143345, 5134097, 11539503, 598611, 13841069, 4772783, 13340168, -73014, --10007274, -6120866, -885300, 8828842, -1899449, -3634079, -806917, 16199006, 10040560, -3380139, --13062606, 4820564, 7153268, 5604396, 13996225, -18262200, -14034879, -3332895, 1170379, -4561256, --66572, -4552666, -12061342, 34022584, -16681116, -17788144, 13706851, 9434969, 3146601, -4910222, --5065914, 16158204, 12816182, 19209242, -5989332, -5346698, -26461830, 30945240, 14993731, -42274288, --21770116, 12966506, 19252190, 18304614, -11378979, -10181220, 23333484, 4969814, 5892159, 15315317, -13412109, -23515482, 7820599, 9366787, -975494, 10542534, 2878702, -3337727, 3066607, -7890392, -39443368, 9754944, 5888937, -1412507, -3886409, -2943663, -20981452, 3853660, 7390565, -5502390, --6191196, -35802848, -15911243, 7071664, 7252053, -11992622, -10266582, -1971390, -15715285, 6605123, -7486128, -2851322, 8330626, 13562433, 2049236, -1175747, -3054796, -7959648, -932008, 714038, --24522116, -4090420, 7869454, 15227807, -26409218, 5443871, 12195023, -3256122, -11020886, -13343390, -23995446, 19304268, 136902, -15931644, -19663970, 12828530, -9541270, 3790309, -8006356, -6330245, -807454, 8846022, 16480326, -30587146, -40808632, -27692338, -36535676, 31869194, -21294448, 13101798, --3862249, -24973624, 4241817, -6437619, -9747965, -32542968, -30532386, -22106196, -8897025, 1666447, --17767742, -4573604, 4366371, 14721000, 881542, -8335458, -199179, -8942659, 13419088, -16639240, -23507966, 20966956, -5089536, -5970542, -28315646, -15865609, -17281338, 2603287, 3619047, -4034585, -22836878, 7104413, 18497350, 4233227, -2318746, -7889855, 16655346, 12146704, 5167920, -16261283, -8938364, -27890444, -3241627, -2434710, -18948322, -2512556, 205622, 22385906, 14417131, 1049583, -10082973, 267899, -21427054, 11658689, 3113851, 18727668, -9996536, -19640348, 12607340, -35637492, --39814348, -4414690, -25113210, 939524, -18324478, 16623671, -12901008, -2084670, 4049617, 5801964, -21471078, 6337761, -8768713, 21838834, 7662759, -38911328, 6980396, -23605140, -954557, 3728569, --2524367, 18247168, -4915590, 2791729, 5469641, 1023813, -11582990, 18534394, -10408853, -1692217, --21732534, -653909, 4499515, -4180614, -7192997, -10919954, -11019812, 28440200, 1861868, 14427332, --25189446, 2301566, 370978, 8272107, 16144245, -18410914, 32309966, 44924820, -1393717, 3800509, --15214922, 6704444, 11266773, -9362492, 2927557, 8022999, 18311594, -1103270, 1662152, -5974300, --14777909, -23541790, 12319040, -17710298, -6813966, -11655467, 5446019, 15354508, 14279156, -2779381, -5428302, -31059592, 20688858, -3029563, 4194573, -7036767, 19591494, 50554448, 14779519, 36686000, -12051678, -38812544, 15731391, 10415296, -12582107, 2310156, 25128244, 782758, 24056112, 20766704, --24504936, 13277355, -24520506, -17074642, -2123861, 49393736, 15515032, -22840100, 21424370, 13268765, --27179090, -12490302, -1665374, 27437324, 4319127, -25908316, -14131516, -1235877, -6779606, 15010911, -22504554, -8531953, 19815368, -13117367, -16911434, -1081795, 40611064, 3255048, -23018878, 12684112, --901406, -2843268, 11501922, -26892938, -22577032, -22180822, 16026670, -14736570, 5295158, 6146635, -24349780, 11345693, 25025700, 2024003, -892816, 19624242, 37372120, 21461952, -36617816, 115427, -3739306, -6874632, 7244536, 9586367, -28293634, -4849018, 5696737, 4473209, -33868500, -32265404, --18213346, -19040126, 32853278, -19777788, 14944876, -39052528, 28445032, 30814780, 9168145, 33614024, --34308200, -17420388, -8866423, -50425064, 28802050, 2492692, 18078054, 22656490, 23097260, 1443109, --41876, 22565222, -2923262, -27362700, -27434640, 16818018, -31062814, 30843234, -8133595, 6630356, -31561030, 27586574, -13120588, 42113228, -23613194, 2640868, -24551644, 4051765, -7755101, 16595754, -6638946, -18061948, 17235704, 24667608, 37262064, -20843476, 8871255, 22332220, -29332480, 1574106, --11016591, -43916576, -17671106, 12058658, -22846542, 8975408, -18869938, -75162, 31297964, -13602698, -14280229, 34846144, 26277146, 9885404, 47508244, -70057896, -11203422, 24725052, -338229, 15074798, --19274202, -36748812, 49643380, 1339493, -19822348, 12712566, 33946348, 76958296, 33686504, -13520557, -7113540, 4147328, 35897336, -31341986, -4522601, -14147622, -21046414, 31604516, -13215077, 41010496, --5447093, -28774670, 45725296, 69963408, -11294690, -20164334, -34556232, 9521942, 34743600, 8835821, --9213242, -20924544, 3804267, 7091528, -6600291, 7369090, -4831302, -9327058, -12972949, 12294881, -13283797, 721555, 18510236, -17535278, 39679592, 33109902, 16259136, 493384, 724239, 7942469, --23650774, -17043504, -23013508, -8974334, -7648800, 15501611, 9761387, 24777666, -12763032, -247497, --11581379, 28068148, 47805672, -9107478, -34161096, -17838610, -3478924, -40431212, 31491774, -55781960, -14661408, 28398860, 23214298, -21980568, 3428995, 30120068, -62393528, -23604066, 9411884, -969589, --32905356, -19937238, -6537477, -5373004, 41301480, -24927454, 6980933, 40164388, 549219, -12699681, -32326608, 24263344, -7496329, -20528870, -32758252, 6790880, 62460100, 14533096, 31698470, -2179696, -2156074, -1890323, -8097087, 665183, 2215130, 15957951, 4363150, -11589969, 9810242, -10055055, --12512313, -12672838, -380641, 13356275, 2024540, 10825465, 10132365, 9488120, -9623948, -14944876, -4206921, -10122164, -27915140, -7293928, 5367099, -8705899, 30901752, -31945430, 25810606, -7643431, --652298, 40248676, -7060390, -217433, 50580220, -7009387, -21891448, 4725538, -18928458, -3083787, --17966922, 58399744, -17281874, 14959908, -14893873, -4962298, -9037685, 10852309, -15681999, -33686504, -14183056, -2382633, -40432824, 22306986, -11774653, 23970212, 47292960, -21715354, -2315524, 1363652, --8814347, -18965502, -13968307, -5369, 65717832, 33326262, 68917048, -38683160, -10108742, 22677964, --21693880, 16357920, 70796096, 16674137, 10072772, -18898930, -17866528, 20124606, -11006927, 28507308, --5010616, -6837051, -8667244, -41091024, 9462350, 48704392, -26302916, 29279328, 25439092, -17023640, --5471252, 19945828, -33099166, 15754477, -2856153, 24028194, 7736310, -20993264, -7201050, -41672456, --21712670, 18516140, 13744432, 31102006, 48962092, 4475356, -34360, -43967044, -27194122, -26688390, --22117470, 10230075, -18571438, -6156299, -5104032, 11679627, -34038688, -6628745, 15811922, 7369090, -25810070, -5175973, -14405320, 25300578, -6418292, 14702747, -22441204, -14558329, -5037997, -9174050, -11218991, 17125646, 25494388, 4976257, -273804, -22541062, -8339753, -14068165, 19857782, -19222664, --66339528, 652835, 109888352, 96932040, 93436480, 38037840, -37827924, -55237576, -52443700, -49043156, --86917792, -63958504, -60028072, 46699180, 74549896, 58791124, 96621728, 78341280, 18374406, -4389994, --32380296, -66948876, -37866580, -70261904, -36079872, -23874650, 2181307, -9813463, 19338090, 29451664, -52729852, 31583578, 55368572, 40319544, 44469016, 3055869, -32788318, -16072304, 3425237, -38233260, --48099876, -65521872, -62034896, -45586248, -3949223, 32195612, 15228880, 46865072, 35624068, 53540524, -50093276, 52087216, 62687732, 32930052, -1418413, -8622684, -35610648, -30640296, -101640400, -82641080, --63600412, -50838992, 10344429, -20689932, 6112812, 74770552, 93920200, 125083944, 82671680, 50870668, -38315404, 13654238, -38030324, -33484102, -53408456, -67266168, -40710920, -8149701, 1158567, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-4986994, 1199907, -2861522, 4595615, -4682051, 1912871, -8588324, -650688, -3399467, -5342403, +-4507032, -2642479, -223338, -1012002, 5650567, -1739462, 1135482, -736050, -292595, -4706748, +5520107, 1690070, 1017370, 1465121, -1102733, -1225139, 1391033, 5286568, 2262374, -1039919, +-404264, -153545, -1214939, 110595, -889058, -490163, 70867, 2984466, 355945, -2333241, +1708860, -2499671, 7295539, -4435091, 544924, -76236, -5440650, -831613, 2388539, -3060701, +-1372242, -998043, 3630858, -1977296, -1393180, -223338, 417686, 781147, -537945, -1773822, +-4234838, 797253, -2205466, -3162707, 755914, 1193464, -232465, 857383, 2074469, 2114735, +-301721, 788127, 358093, 2738579, -3060164, -3017752, 3038689, 3194919, 6111739, -8471286, +1552094, 6108517, 10254771, -830002, 5626944, 61203, 5075041, 1619740, 7965554, 141197, +-3046206, 5906654, 7613904, 7854959, 4099546, 1524177, -3433826, -2118493, 384400, 4155918, +-2324114, 2094333, 104153, 4682051, -2493229, 181462, 713501, -4922033, -3421478, -1233193, +-5844914, 1610613, -1933809, 258772, -1140851, -4236985, 3132642, 5722507, -1529545, 743029, +83215, -555661, 5325760, -6663105, -450435, 3199214, 336081, 1237488, -2121177, -5456756, +-1932198, 2571075, 2190433, 3283503, -1003412, 439160, -454730, 1517197, -1491964, 6407555, +-362925, -157840, -4524748, 932008, -3438121, -1762010, 1730335, 3077344, 5479305, 784368, +5145371, 6923488, 11277510, 1492501, 5629092, -2043331, 3358128, 4340065, -1302449, -3484292, +5940477, 10184441, -1954210, 1139777, 3984656, -4859219, 3084860, 4365835, -8844411, 2528662, +928250, -1970853, 64425, -9229885, 445066, 2639258, -4334159, 864899, 231928, 5992553, +4321274, -2165737, -548682, -493384, -6219650, -4163971, 788663, 2635499, 670552, 2927557, +-4064113, 734439, 2192044, 545461, -3743601, -2699387, -733903, 1481227, 3250217, 3380139, +2288681, 3935264, 3832722, -3961571, -1117228, 365609, 5404680, -581431, 3932043, -2236067, +-2383170, -528281, -4522601, -1881733, 1171989, 3079492, -3800509, 4308926, -869731, -753230, +-515396, -1105417, -1727114, 1396938, 3426847, 1868848, 5583995, -5913096, -1457605, -1082332, +-3233574, 1156420, 6731288, 9020505, 5553930, -2530810, 4161287, -2629594, -1427540, -8106751, +-6085969, 2630131, 6238440, 5694590, 6355478, 1155883, 526670, 3595961, -4895189, 4896263, +4338991, 157840, 3753802, 8920110, 6414534, 1513976, -6382322, -41876, 2400887, 1182727, +1276142, -7441568, 1916092, 1082869, 5012227, 5073967, -1480153, 3166465, -2398202, -3131031, +4067871, 1938104, -6699612, -6789807, -2661806, -3936875, -2530810, -3188476, -7763691, -7490423, +-448824, 2312303, 161598, -1057636, -5153961, 410169, 6589017, -2101850, -1785096, 2076080, +224949, 4274030, 2567317, 2010045, -2702071, -4023848, 7135552, 2765959, -2407329, 4139275, +-216896, 3162170, -2510409, 301185, -12742094, -7514046, -2340757, 2410551, -5245229, 1597728, +-1426466, 3665218, -877247, -7142531, -5662915, 4935991, 4059818, 10213432, 9040906, -1372779, +6548752, -9822590, -1573569, 7633768, 2327872, 1770600, -976568, -3208341, -1462973, 1056562, +-839129, -297427, 3904662, -4814659, 1119376, 1751273, -66035, 3041374, -3255048, -2711198, +1809792, -2108292, 2784750, -5379984, 966368, -3230889, -1190780, -3598646, -2605435, -4087735, +-5967320, 3722663, 70330, 6344741, -5807870, -5072357, 94489, 1220308, -544387, -1211718, +590558, 3828963, 2022930, 834297, -2388002, -2501282, -1174137, -4715874, 1047435, -1198833, +901943, -183610, -4682588, -370441, 110059, -5311264, 813896, -869194, 1563368, -607201, +-4278861, 4320737, -6703907, 2657511, -7512972, -1450088, 515933, -5773510, 5456219, 3932043, +-11234024, -1279363, 2041183, -1183264, -4846871, -6803765, 1498407, -3497177, -5426691, -2882460, +3406446, 2765959, 8178155, 10331007, -798327, 9210557, -5636071, 3520263, 4193499, -1004486, +4130685, -2483028, 195958, -794032, -1822677, -1190780, -2054068, 7613367, -330176, -6020471, +-1282585, 3703873, 2539936, 2914672, 733903, -2938831, 5817533, 11400991, 839129, 943282, +798327, -1099512, 1961726, -1020055, 6768332, -5323075, 6484864, 4157528, -3899830, 1821066, +4284230, 2584497, -4683125, -5486821, -10188736, -1932198, -796180, 1089848, 4205310, -1173063, +2831457, -1034550, -2500208, -2812130, 5632850, -1108638, 5978595, -7617125, -142808, 3257196, +1059246, 386547, 3758097, 11959336, 13535589, -3384971, -635655, 3111704, -2422362, 9146133, +8402030, -5336497, 8215199, 6897181, 2222646, 4053912, 3105261, 1918240, -1157494, 743566, +731218, -4625143, -6226092, 1611687, -2073932, 7516, 530965, -5050882, 4676146, 10419591, +-828929, -6180458, 9613747, 1258425, -230854, 3991635, -2341831, -3041911, 893353, -3827890, +919660, 10322417, 3811247, -119185, 3054259, 5569499, 13939853, -2460480, 5609228, -1340030, +-7073275, 4075387, -370441, -2225330, 2095407, 8831527, 1489280, 1453310, -974958, 3436511, +12052752, 5636608, 697395, 1140314, 2442226, -3908957, 5606543, -1889786, -13864691, 1380295, +-2497524, 7552700, 7891466, 3840775, 204548, -15011984, -2362232, -6016176, -8428336, -1457605, +-6180458, 885300, 4201552, -6714108, 7006166, -15603079, 1715303, -4175245, -9235790, -10975252, +11529303, 6683506, 197032, -9647570, -7306276, 4481262, -13933411, -8696235, 2597382, 3482145, +12996034, -1114007, 562641, 10700911, -6543383, 10524280, 2826089, 4269735, -2483565, -5294084, +-1252520, 8875013, -4989142, 1351841, 9774809, -3117610, -3594888, -4346507, -6682969, -4654671, +-4524748, -7694434, -1568737, 3146601, -3406983, 2470143, -3285113, -3639448, 5245766, -6825240, +3962107, -5718749, -8551817, 984621, 5978058, 1010391, -2581275, 3169686, -5952825, -2139968, +-8122320, -12776454, -6994354, 2384244, -4812511, 15657303, 5155035, -10125922, -6393059, -947577, +17137456, 10777147, 11797738, -3620658, -16230681, -1559610, -8211441, 1859184, 3858491, 8593693, +-3947075, 3623342, -6558415, 894427, -5762773, -15551003, -8050380, 5588290, -5386963, -12379169, +-11203959, -10856604, -16357383, 1794223, -5610301, -12857521, -11151346, 1723893, 16107201, -2394981, +-2483565, -5592048, -9487583, 1727651, -3675955, 791348, -11885785, 503048, -12391518, 1486059, +-864362, 6478958, 5378910, 5348845, 3033858, -740882, 4804458, -3345780, 9307731, 2314451, +4774393, 2520609, -2872260, 3002719, 9359271, -1468342, 5274220, -1573032, 14635101, 1611150, +5557688, 450435, -8055211, -6493991, 370978, -3150359, 1956358, -2377265, 4888747, 4009889, +5674726, -2889976, 3294240, -11549704, 6123550, 15605764, -8165270, -23688356, -3905736, -8258149, +-12440910, 6733435, -23758686, -3056943, -8417062, -4569845, 6928856, -7525320, 10133438, 8739185, +1462436, 7897908, 784368, 4220342, -6100464, -10851772, -11938935, -6637335, -10919954, 8728447, +11420318, -354872, -5793911, 3400004, 3416647, -3998615, 1007170, -18649822, -9761387, 8936216, +-4591857, 453119, 8810052, -601295, 5551782, 4777078, -2193655, 5450851, 213138, -9764071, +11463805, -7563438, 854162, 927713, -5823976, 4440460, 7023882, -3564823, 8001524, 1249299, +-170188, -6527814, 9054328, 418759, -6466074, -1794223, -13407277, -5287105, -7367480, -378494, +10255845, 3478387, -169651, 970663, -8182450, 2979097, 7932268, -7960722, 1722282, 15421080, +-4177393, 3532611, 4045859, 41747620, 9862856, -5964099, -7975755, -1242856, -2172180, 7069516, +-1146219, 5925981, 12502650, -5209796, 1155346, -8288750, -4852240, 2189360, -719407, 5807870, +-11224360, -7260642, 6206228, 11541651, 8468065, -666794, 3469260, -3189013, -6442451, 4881767, +9968619, 9466645, 12451110, -9947681, -1554241, -5788542, -11275900, -1721208, 1422171, -2819109, +6360847, 7147363, 835371, 3469260, -1278290, -12914430, -6049462, -17208324, -16419123, -5131949, +6813966, -2572686, -6656663, 14561550, 6594386, -557272, -12512850, -547608, -3001109, -9642202, +1400159, -4290136, -4964982, -13280039, -270046, -4672925, -13280576, 420370, 13121662, -7086159, +-1671816, 4946729, -4152160, 3577171, -3650185, 10805601, 519691, -6247030, -8180302, 9937481, +-33889976, -18615998, 17251274, -4185446, 654983, -8776229, 7235410, -2774012, -13408351, 6582038, +17394080, 2669859, -16210817, 4780836, -3960497, -3241627, 9755481, 11028402, -2015950, -1859721, +21973052, 5344013, -3842385, -13575855, 5527623, -19610820, -16990354, -14824080, 5480379, -2610266, +-2269890, 13187697, 4502737, -12954695, -11683922, 3058017, 12105365, 4560182, -2173254, 886911, +7807714, -6026376, -14648523, 18267032, -6092948, 1986959, 6547678, 1215476, 1717450, 18723374, +-492311, 11929809, -300111, -12481712, 950798, 2673617, -3475702, 2365990, 7581154, -6360847, +-2860985, 2116345, -25693032, 6488622, 4038343, -217433, 4867272, 4554276, -10295573, 4312684, +32744830, 14649597, 7086159, 2774549, 6881075, -24525874, -22889492, 16239271, 16368657, 5945846, +8828305, -5699959, 26435524, -2621541, 9817221, 7567733, -12828530, -4520453, -6136972, 16203301, +-9692131, -2298881, 9454297, 8884677, -9505836, -1857037, -26759794, 5570573, -3273302, -7103339, +1954747, 1376000, 1634235, 3102040, 8639327, 1053878, 9508521, 1867774, 4507568, -1812476, +-8752070, -8338142, 16831976, -5330055, -12560095, -9636833, -4899484, -4942971, 7239168, 5387500, +5563057, 8358007, 2151242, -8516920, 5275831, -14394583, -5041755, -12448426, 9149354, -15183246, +-11522324, -2490007, -5355824, 5755256, 10924249, -7612293, 10370735, 17834314, 8565775, 17260400, +-6508486, 22857280, 2354179, 19599546, 10904385, 3557844, -9250823, -23316840, -15980500, -11979201, +-6832756, -5530308, 12598750, 6252399, -6980933, 20912732, 2502892, -20610474, 25748866, 1627793, +-10776073, 8959302, -20900922, -4101694, -13253195, -4248260, -2226404, -4167192, -9427453, 2636036, +-18028126, -7067906, -6402723, -24557012, 3133716, -17804786, -12491376, -19961398, 4159676, -15049029, +-4392141, -4965519, 316217, 7630547, -5970005, 10741713, 701690, 14252849, -3157338, 12424267, +15684147, -18545668, -143345, 5134097, 11539503, 598611, 13841069, 4772783, 13340168, -73014, +-10007274, -6120866, -885300, 8828842, -1899449, -3634079, -806917, 16199006, 10040560, -3380139, +-13062606, 4820564, 7153268, 5604396, 13996225, -18262200, -14034879, -3332895, 1170379, -4561256, +-66572, -4552666, -12061342, 34022584, -16681116, -17788144, 13706851, 9434969, 3146601, -4910222, +-5065914, 16158204, 12816182, 19209242, -5989332, -5346698, -26461830, 30945240, 14993731, -42274288, +-21770116, 12966506, 19252190, 18304614, -11378979, -10181220, 23333484, 4969814, 5892159, 15315317, +13412109, -23515482, 7820599, 9366787, -975494, 10542534, 2878702, -3337727, 3066607, -7890392, +39443368, 9754944, 5888937, -1412507, -3886409, -2943663, -20981452, 3853660, 7390565, -5502390, +-6191196, -35802848, -15911243, 7071664, 7252053, -11992622, -10266582, -1971390, -15715285, 6605123, +7486128, -2851322, 8330626, 13562433, 2049236, -1175747, -3054796, -7959648, -932008, 714038, +-24522116, -4090420, 7869454, 15227807, -26409218, 5443871, 12195023, -3256122, -11020886, -13343390, +23995446, 19304268, 136902, -15931644, -19663970, 12828530, -9541270, 3790309, -8006356, -6330245, +807454, 8846022, 16480326, -30587146, -40808632, -27692338, -36535676, 31869194, -21294448, 13101798, +-3862249, -24973624, 4241817, -6437619, -9747965, -32542968, -30532386, -22106196, -8897025, 1666447, +-17767742, -4573604, 4366371, 14721000, 881542, -8335458, -199179, -8942659, 13419088, -16639240, +23507966, 20966956, -5089536, -5970542, -28315646, -15865609, -17281338, 2603287, 3619047, -4034585, +22836878, 7104413, 18497350, 4233227, -2318746, -7889855, 16655346, 12146704, 5167920, -16261283, +8938364, -27890444, -3241627, -2434710, -18948322, -2512556, 205622, 22385906, 14417131, 1049583, +10082973, 267899, -21427054, 11658689, 3113851, 18727668, -9996536, -19640348, 12607340, -35637492, +-39814348, -4414690, -25113210, 939524, -18324478, 16623671, -12901008, -2084670, 4049617, 5801964, +21471078, 6337761, -8768713, 21838834, 7662759, -38911328, 6980396, -23605140, -954557, 3728569, +-2524367, 18247168, -4915590, 2791729, 5469641, 1023813, -11582990, 18534394, -10408853, -1692217, +-21732534, -653909, 4499515, -4180614, -7192997, -10919954, -11019812, 28440200, 1861868, 14427332, +-25189446, 2301566, 370978, 8272107, 16144245, -18410914, 32309966, 44924820, -1393717, 3800509, +-15214922, 6704444, 11266773, -9362492, 2927557, 8022999, 18311594, -1103270, 1662152, -5974300, +-14777909, -23541790, 12319040, -17710298, -6813966, -11655467, 5446019, 15354508, 14279156, -2779381, +5428302, -31059592, 20688858, -3029563, 4194573, -7036767, 19591494, 50554448, 14779519, 36686000, +12051678, -38812544, 15731391, 10415296, -12582107, 2310156, 25128244, 782758, 24056112, 20766704, +-24504936, 13277355, -24520506, -17074642, -2123861, 49393736, 15515032, -22840100, 21424370, 13268765, +-27179090, -12490302, -1665374, 27437324, 4319127, -25908316, -14131516, -1235877, -6779606, 15010911, +22504554, -8531953, 19815368, -13117367, -16911434, -1081795, 40611064, 3255048, -23018878, 12684112, +-901406, -2843268, 11501922, -26892938, -22577032, -22180822, 16026670, -14736570, 5295158, 6146635, +24349780, 11345693, 25025700, 2024003, -892816, 19624242, 37372120, 21461952, -36617816, 115427, +3739306, -6874632, 7244536, 9586367, -28293634, -4849018, 5696737, 4473209, -33868500, -32265404, +-18213346, -19040126, 32853278, -19777788, 14944876, -39052528, 28445032, 30814780, 9168145, 33614024, +-34308200, -17420388, -8866423, -50425064, 28802050, 2492692, 18078054, 22656490, 23097260, 1443109, +-41876, 22565222, -2923262, -27362700, -27434640, 16818018, -31062814, 30843234, -8133595, 6630356, +31561030, 27586574, -13120588, 42113228, -23613194, 2640868, -24551644, 4051765, -7755101, 16595754, +6638946, -18061948, 17235704, 24667608, 37262064, -20843476, 8871255, 22332220, -29332480, 1574106, +-11016591, -43916576, -17671106, 12058658, -22846542, 8975408, -18869938, -75162, 31297964, -13602698, +14280229, 34846144, 26277146, 9885404, 47508244, -70057896, -11203422, 24725052, -338229, 15074798, +-19274202, -36748812, 49643380, 1339493, -19822348, 12712566, 33946348, 76958296, 33686504, -13520557, +7113540, 4147328, 35897336, -31341986, -4522601, -14147622, -21046414, 31604516, -13215077, 41010496, +-5447093, -28774670, 45725296, 69963408, -11294690, -20164334, -34556232, 9521942, 34743600, 8835821, +-9213242, -20924544, 3804267, 7091528, -6600291, 7369090, -4831302, -9327058, -12972949, 12294881, +13283797, 721555, 18510236, -17535278, 39679592, 33109902, 16259136, 493384, 724239, 7942469, +-23650774, -17043504, -23013508, -8974334, -7648800, 15501611, 9761387, 24777666, -12763032, -247497, +-11581379, 28068148, 47805672, -9107478, -34161096, -17838610, -3478924, -40431212, 31491774, -55781960, +14661408, 28398860, 23214298, -21980568, 3428995, 30120068, -62393528, -23604066, 9411884, -969589, +-32905356, -19937238, -6537477, -5373004, 41301480, -24927454, 6980933, 40164388, 549219, -12699681, +32326608, 24263344, -7496329, -20528870, -32758252, 6790880, 62460100, 14533096, 31698470, -2179696, +2156074, -1890323, -8097087, 665183, 2215130, 15957951, 4363150, -11589969, 9810242, -10055055, +-12512313, -12672838, -380641, 13356275, 2024540, 10825465, 10132365, 9488120, -9623948, -14944876, +4206921, -10122164, -27915140, -7293928, 5367099, -8705899, 30901752, -31945430, 25810606, -7643431, +-652298, 40248676, -7060390, -217433, 50580220, -7009387, -21891448, 4725538, -18928458, -3083787, +-17966922, 58399744, -17281874, 14959908, -14893873, -4962298, -9037685, 10852309, -15681999, -33686504, +14183056, -2382633, -40432824, 22306986, -11774653, 23970212, 47292960, -21715354, -2315524, 1363652, +-8814347, -18965502, -13968307, -5369, 65717832, 33326262, 68917048, -38683160, -10108742, 22677964, +-21693880, 16357920, 70796096, 16674137, 10072772, -18898930, -17866528, 20124606, -11006927, 28507308, +-5010616, -6837051, -8667244, -41091024, 9462350, 48704392, -26302916, 29279328, 25439092, -17023640, +-5471252, 19945828, -33099166, 15754477, -2856153, 24028194, 7736310, -20993264, -7201050, -41672456, +-21712670, 18516140, 13744432, 31102006, 48962092, 4475356, -34360, -43967044, -27194122, -26688390, +-22117470, 10230075, -18571438, -6156299, -5104032, 11679627, -34038688, -6628745, 15811922, 7369090, +25810070, -5175973, -14405320, 25300578, -6418292, 14702747, -22441204, -14558329, -5037997, -9174050, +11218991, 17125646, 25494388, 4976257, -273804, -22541062, -8339753, -14068165, 19857782, -19222664, +-66339528, 652835, 109888352, 96932040, 93436480, 38037840, -37827924, -55237576, -52443700, -49043156, +-86917792, -63958504, -60028072, 46699180, 74549896, 58791124, 96621728, 78341280, 18374406, -4389994, +-32380296, -66948876, -37866580, -70261904, -36079872, -23874650, 2181307, -9813463, 19338090, 29451664, +52729852, 31583578, 55368572, 40319544, 44469016, 3055869, -32788318, -16072304, 3425237, -38233260, +-48099876, -65521872, -62034896, -45586248, -3949223, 32195612, 15228880, 46865072, 35624068, 53540524, +50093276, 52087216, 62687732, 32930052, -1418413, -8622684, -35610648, -30640296, -101640400, -82641080, +-63600412, -50838992, 10344429, -20689932, 6112812, 74770552, 93920200, 125083944, 82671680, 50870668, +38315404, 13654238, -38030324, -33484102, -53408456, -67266168, -40710920, -8149701, 1158567, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, { -5803575, --3656628, -530965, -5476084, 4852240, -4402342, -5283884, 2318746, -1553168, -1198296, 1406065, --6242198, -1283658, 4512937, -3128884, -1114007, -4889284, 1396401, -3642669, -6628745, 2744484, -1201517, 2328409, -2642479, -3220689, 3591130, 1022202, 4066260, 4225174, -4557497, 4128001, --1251446, -1247688, 2871723, -680215, 2598992, 4476430, 4192425, 804770, 1748052, 1620813, --3750043, -1819456, -1436130, 700080, 3224984, -6259378, -1509681, -338766, -448824, -2866354, -462783, 2571612, -3308736, 2246268, -2618856, -6324876, 1282048, 1240172, 780073, -2477659, --766652, -1642825, 2947421, -777389, -151934, 130997, 2049773, 665183, 1256815, 1723356, --4498442, -2363843, 2320356, -540629, -1096290, 1130650, -1292785, 4477504, 4966056, 2718714, --1960653, -7510287, -6949794, 2547989, 3948149, -1427540, 7396471, -1396401, 4405026, -5229660, --4670240, 2071248, 165356, -1323924, 1944547, 4858145, -2109366, 715112, -2763812, -225486, -245350, 2022393, 1826972, 2523830, 403727, 1525250, 5492727, -2065342, -2572686, -2718714, --4977330, 1491964, -1042066, 9170292, 1779190, -622233, 728534, 5592048, -494995, -1136019, --1389959, -3169686, -570694, 4323422, -624918, 1840394, 4330401, -1267015, -270583, -6825777, --4017942, -6212134, -1182190, -1734630, 988916, 446677, 974958, 2359548, -1435056, 1207960, -157303, 691490, 1060320, -2147484, 2291902, -566399, -2481954, -113280, -2469606, -506806, -499827, 5185100, 12045773, 4832912, 2807298, 3416647, -7167227, -782221, 3010772, -910533, -1141924, -6435472, 6318971, 8691940, 1429687, 3910568, -1880659, -5010616, -7903814, -8535711, --5771899, 6855305, -6488622, -4032438, -5502390, 1792612, 4454418, 903017, 544387, 2576444, --325881, 1645509, 5500243, -733903, 4559645, -4363687, 4152160, 2989834, 2611340, -2275259, --7284265, -1484448, 4046396, 2493766, -2095944, -190052, 1343788, -252866, -3563749, -675921, -2859911, -956704, 235686, -1660542, -475131, 273804, 887985, 5153424, 2027761, -2540473, -335007, 494995, -1837172, 1009317, -2631204, -204011, 4008815, 1447941, 4505958, -3185792, --2974802, -1547799, -877784, 2553358, 5090610, -2758443, -3988414, 4845260, 733366, -1968169, -2202781, -466541, 3538516, 1500017, -3993783, -3764002, -4282083, -680215, -3501472, -7350837, --7009387, 7195144, -181999, 1497333, -81604, 4368519, -6529961, 9628243, 8543227, 410706, -420370, -25233, 215285, -996432, 3315715, 2565706, 166430, -5549098, 2332704, -1763084, -2590939, -828929, 5801427, -1433445, -3467649, -1619203, -981937, 2089502, -102542, 3534221, --5884642, 3040837, 941672, -3330210, 9075803, -1564442, -1389959, -311922, -226023, -2542621, --865973, 4744328, 3908957, -8730058, -4139812, 4195110, 1158567, -2233383, 7363185, 73551, -1569811, 7127498, 2929168, 5522254, 1522566, -2494839, -3104188, -6094559, -5698885, 430034, -2879239, 6673843, 204548, -3558917, -9801115, -3401077, -4774930, 4456029, -3265249, 2896956, --3530463, -1446330, 8288750, 4065187, -5523865, 2520072, 7904888, 1165547, -2789581, -5557151, --6693707, -4577899, -6730214, 4459250, 1001264, 2452426, -1301912, -3044058, -3219078, -5922760, -296353, -191663, 1395328, -1453846, -5391258, 74088, 5739150, -1290101, 59056, -2883534, --5737540, -8504035, -734976, 6085432, 2218888, 612570, -2877091, 747861, -4600447, -1546725, --3459059, 396211, 788663, -5290326, 5924908, -3386582, 7539278, 2785286, 731218, -3489661, --1775969, 1857037, -408022, 1744831, 4068408, 726923, 1634235, -4576825, 2676302, -2362232, -6958384, 8446590, 3971234, 5626944, 2718178, -1015223, -5990406, -4006668, 462783, 4374961, -4110284, 3312494, -7938710, 1073742, -8487392, -2684, 1258425, 820339, 3774203, 415538, -566936, 14981920, -1913945, -6570763, -7161321, 7540889, 4989679, -5633924, 1326608, -6287832, --2752537, 241592, 7104413, -8835285, 2536178, -316217, 1362042, -646929, 9024263, -4665945, -2503429, -1391569, -2463701, 1408212, -500364, 2749853, -2847027, -2551748, -7755101, 1231582, --2629594, -1627256, 523986, -2694555, 2174327, -4308926, -2678449, -7601555, -338229, -6747931, --2975339, -8031589, 5852967, 1233729, -2612414, 5275831, -6259915, -17717, -11803107, -616865, -3821984, -313533, 3222836, 7395397, -2852395, -1053878, 8962523, 3882114, 3228205, 5609764, --3339874, -8628052, -1418413, -5240934, 3079492, 8316668, -2464238, 2044404, -1004486, 4144644, -4841502, 1642288, -2815351, 1975148, 1308354, 8994735, -1330366, -2060511, -12218108, -3580929, -9268539, 8885750, 5832029, 4436165, 13162464, 673773, -15654082, -4166118, -2593087, -3952444, -8373576, -1488206, -3033858, 9574556, 1523640, -4199941, -1401770, 3700651, -3473555, -1567663, -1168231, -1457605, -5491653, -2700461, -294205, -5514738, -2464774, -2465848, 3630858, -2741263, -7036230, 6624450, 598074, 6271189, 4523675, -3277597, -1103270, -2583423, -10296110, 791885, -1988570, -10074383, -1520955, -3155727, 3329674, 8419747, 1191853, -9460739, 1146756, -3984119, --6245956, 4329864, -1628330, -7072738, 2685428, 1759326, 6855842, -1392106, -1163936, 4271345, -5888400, 5630702, -7317551, 3376381, 6119255, -15912317, 6524056, -1629403, -3821447, -3184718, -2580739, -1423245, -9695889, -10043781, 1045288, 15884937, 4153770, -11432666, 2382096, 9434969, --6970732, 1261110, -1938104, 5623723, -281857, 5179194, 13571023, 10074920, 6018860, -243739, --1422171, -6414534, -7138236, 2688113, -18217104, -2886218, 8176007, 881005, -1234803, -8666170, --3401614, -469762, -746251, -4292820, -9242770, 9797357, -3823595, -2344515, -2007360, -8406862, --9665824, -503585, -4951561, 402116, 3939559, 3100430, 3241627, -7637526, -2412161, -3940096, --2825015, 11426224, -1804960, -5804649, -212064, 14667850, -8698919, 2024003, 10474888, -234076, --3266323, -6267431, 2631204, -91268, 7205882, -5144297, 5907728, 4578435, 9561134, 4087735, -8986682, 13479218, 7854422, 1596117, -3068754, -4704063, -11218991, -2927557, 7034620, -14696304, --6351183, 13889924, -19089520, -3147674, 10349261, 13527536, -1562831, -13034689, 1648194, -4813048, -17613124, 8177081, -12414066, -7585986, -2059974, -7256884, -15562814, -7408819, -6994891, -5276368, --12621835, 6567542, 2061584, 7997766, -4888747, -1998234, -11099806, -818191, -9641128, 1298154, --6443525, 1709934, 3215857, -14377403, -4925254, -5279589, -3991635, 3479997, 3053185, -4373888, -14407468, -622233, -3848828, -2399276, 1346472, -3081639, -1236951, 5706401, 4560182, 6351183, -7926899, 7861938, 587874, 5269925, -2412698, 11627013, 12088722, -5734855, -3157338, 7781407, --223875, -17916456, 785442, -8796093, 5487358, 6552510, -9701257, -12756590, -5564130, -12342125, --16493211, 11525545, 1641751, 6241661, -8913131, -10219338, -12989055, -9569187, 4602595, -10448582, --8500277, 11711839, -2601140, 86973, 3401077, 6475200, -4963909, -4604742, 2464774, -3791919, -2359548, -1127429, -5565741, -12036646, -17581448, 5438503, -12498355, -12409234, 1083942, -3668976, --371515, -7233799, 3486977, 2881386, -14237280, -888521, -2759517, -6334540, -7701950, 4057134, -1471563, 14090714, 2234457, -8864812, -25233, 730144, 6554120, 1884954, 13530758, -1790465, --13671955, 5376762, -2491618, 5689221, -7951058, 1108638, 5351530, -25840134, -11354820, 8065949, --197032, -3520263, 4446902, -2137283, 16457778, -1447941, 10692321, 7807177, -12109660, -15772194, -1700270, -17156784, 8447664, 35293892, -8784819, -23424752, -2218888, -10122164, 25456272, 2198487, -14242112, 7980049, -4495757, -11027865, -5089000, -12015171, -3164317, 17519708, -19132468, 1162326, --15579994, 4620848, 1376000, 8039642, 1867774, -7064148, -12541305, -14303315, -2586107, -13991930, --11160473, 2381559, 3584150, 11331197, -9835475, -20409684, -4130685, -6662568, 2822331, -9204652, --6336151, 3739843, -4887136, -7600482, -163209, 1715839, -3827890, 21323438, -3709778, -2449742, -5702106, 6317897, -5493800, -1545115, 15778099, 13812078, 9029632, 17164300, 13266080, 1307818, -6068252, 10461467, -5837398, -4836670, 2869575, 8187819, 11740293, 6174016, 22807350, 4388920, -15866146, -1812476, -6731825, -2748779, 32493576, 8554501, -1653562, 204548, -8054138, 7945153, --32078036, -10136660, 14144938, -2385318, -17014512, -13458817, -6258841, 18013092, 7621420, -12148852, -6162205, -16594143, -8629126, -860604, -13040594, -14769856, 12212203, 8716099, -15606301, -3747359, -29555280, 8465381, -14937359, -17478906, -921807, 11421392, 471373, 3047816, -22767622, 683437, --3687766, -14131516, -10271951, -4903242, -13645111, -4521527, 2313377, 1832877, -14360760, -11703249, -365072, 9590125, -1537061, 12400107, 17086990, -11545409, 10055055, 10048076, 2239826, 3943854, -12467753, 5814849, 7106561, 7241852, 6219650, -1054415, -3219078, 17440252, 23192286, 5733782, --7434589, 4718559, -5309117, -7655779, 13945222, -5909338, -15246597, -19148574, -9311489, -22530862, -10000831, -7907035, -6689949, 821949, -6182069, -5840619, -13857712, 11811160, 6624987, -1781338, -7406134, 5979668, 16098611, 12895102, -26991722, -8614094, 29325500, -23140746, -7245610, -13936632, -20779052, 9624485, 9373229, 4308926, 2719788, 8658654, 22023518, 10861435, -10278394, -9664, -319438, -449898, 8432631, 10145250, 753767, 6066105, 5163625, -4988068, 6443525, 4320737, -13326210, -6510097, -13870060, -11307575, -9490804, 2763275, -1767379, 5405217, 5365488, 6145562, -11521250, -5251135, 1857573, -5303748, -10272488, -3775813, 199716, -10897943, 13139379, 17002702, --19353660, 6316287, -13766981, 10444287, -3178813, 4056060, -2594697, -10212358, -3802657, 11692512, --10644540, -2886218, 418222, -18900540, -9093520, 3810173, -16791174, -1189169, 20531554, 11322608, --5164698, -5746666, 18488224, -1487132, -4372814, -15388868, 592706, 1459752, -4227322, -348429, --7248294, 2671470, -22239340, 20143934, -4213363, -7209103, -14147085, -15887084, -1793149, 19168976, --3665755, 5229123, -12089259, -7001871, -3520800, -11730093, -14197014, 12627741, -8125005, -6613713, -11099806, 10827613, -15833934, 5218922, 5636071, 13266617, 10879689, -4323959, -10146323, -6495601, --15448997, 16384226, 10667625, 5221607, 11582453, -12655658, 8112657, -2149094, 7400766, 8182450, --8406325, -1049046, 26797374, 22312356, -17552994, 6419366, 13736379, -11329587, 2997887, -25900264, -7244536, -14295262, 10996727, -8573292, -9106404, -6855842, 29968134, 1024887, -9099425, 1918240, -9968082, 497142, 5944235, -17256642, -1788854, 26123064, -445066, -11985643, 3824669, -23267448, --12328704, -12588549, 10405095, -4748087, 15997679, 11433740, 20653424, -9778030, -2038499, -16068010, -13363791, 27444842, -9404368, -19976966, 869194, -3282429, 31223338, -6987912, -13946833, 13355201, -5569499, 6162741, 10948945, 5138929, -42047192, 1124745, -4048007, 16888348, 27292906, -26080116, --293668, 9073118, -14367202, -1674500, -38383584, -7416872, 17389248, -29470454, -19697256, -8394514, --13435731, 13064217, -8945880, -9904195, 14664629, 5883569, 4264366, 17722108, 116501, -4851166, -10151692, 18549426, -19008452, -11842299, 24269250, 18964428, 4045322, 9272834, 4050691, -10845329, --19305878, 951872, -2188286, -2503429, 2778307, -9272298, 4516695, -13175349, 2717104, 34563748, --18949396, -11382200, 14443438, 7273527, -10528575, 9738838, 8687645, 14333916, -33011118, -60811904, --28083718, -4130148, 20758114, 1635309, 22910430, 21318070, -6328098, 3643206, -5093831, -11340861, --18950470, -10812580, -13632763, -7694434, 21862994, -27904402, -4753992, -23170274, -29017872, -4714801, --29270738, -23273354, 3107409, -5737003, -3179887, 5860483, 26087632, 2341294, -18514530, 1644436, --1991254, -5029944, -24093156, -940598, 29321204, 3387119, -208306, 12513387, 22855132, 15982647, -4243428, -8341900, 8165807, -6818261, -20382842, -36965708, 36366024, -3547643, 30332132, -1445257, -664109, -9643275, -17124034, 32912872, -17794586, -13307956, -1362042, -21669720, -21593484, 19549080, -13225278, 8578123, -2432562, 10964515, -16340740, 8180302, -13632763, -16175921, -21209622, -13128104, --14487462, -24497420, 763430, -23478438, -25084220, -5429376, -10918344, -29670170, -38674032, 3475166, --14017163, 6294275, -1869385, 13852343, 34409668, 663036, 4445291, -17986250, -17165374, 14079440, -9422085, -13313325, 1042066, 8821326, -21634824, -18427020, -250719, 27645094, -23696408, -716186, -1554241, 12160126, -20109036, 20909512, 12483322, 5171678, 373662, -10199474, -23511188, -1304596, --4918812, 7784092, -12345883, -33507724, 27650462, -20614770, -7812546, -2432562, 27054536, -20972862, -10056129, -17424682, 10991358, -7008313, -23217520, 10413685, -29834454, -7875897, -7999377, 9584756, -25902410, -15688979, 10043244, 24284818, -19691888, 2140504, 6798933, 4690641, 8106214, -38547332, --10634339, -7863548, 13724031, 902480, 41339, 4079682, -7185481, 43082280, 4962835, 17955648, -50522236, -23775328, -12522514, -19956566, -6658810, 22666690, 2192581, 28032178, 8344048, -1324997, --9822053, 21164526, -12550968, 4636417, -8075076, 8640400, -13253195, 16156056, -7007239, -3963718, --8338679, 12441983, 9655086, -13922136, -2191507, 13168907, 5152350, -8908299, 2099702, -11417634, --36257576, 16308528, -18382460, -28802588, 19244138, 7997229, 20768314, -1692217, -17247514, -6878390, --3409130, 11389180, 16681116, 16866874, 29571924, 27656368, -10273562, 4068408, -27022860, 620623, --19029926, -37374268, -1506997, -30360586, 12313671, -24118388, -13710072, -15769509, -20430622, 2842195, --2683818, 2562485, -3899830, -2216740, 1148904, -39129836, 9757092, 6953015, 12724914, 20188494, -231928, -30486214, 22319334, 868657, -3978750, -2512019, 29769492, 59585156, -33403572, -24571508, --46601468, -90577104, -24192478, -8392366, 19024558, 13610751, -9470403, -16539382, 23539642, 31821950, -1079111, -349503, -1429687, -23117662, -15916612, -16099148, -14854681, -24569898, -2036351, -5445482, --4814659, 18581640, -25818660, 20257750, 16308528, -4708358, 7494181, -151934, -44686452, -29642254, --18931678, -14763950, -9133785, 4176856, 14508400, 6104223, 6820945, 42061688, 35489852, 9176734, --30119532, -13925358, -3472481, -13811004, -28833190, -65632468, -58004608, -24569360, -8503498, 3084324, -11802033, -45594836, -29258390, 23978802, 24594056, 33235530, -33436858, -36679020, 8435316, -22492744, -50539416, -27677306, -7495792, -16496433, -13804025, 7107097, 9933722, -8293045, -29669098, 404801, --13615583, -12524125, 12363063, 53153980, -16699907, 16012712, 779537, -26053272, 5305359, -50921132, --9556302, 8870181, 2494302, -30393336, 18483928, 48425756, 36724116, -17321604, -29912300, -15203110, -5046050, 50887848, 8609262, -555661, 1717987, 22464290, 26593364, 4595078, 20695300, 13545253, -31009128, -10444824, 4908074, 16739635, -15633144, -28305982, 16263967, 41075456, 10961293, 18713710, -3612068, 10553272, -56303800, 8329016, -617402, 10616085, 58464704, 20364050, 9385040, -8283382, -27192512, -8559870, -10153303, 6132677, 17641578, 30433602, -8899172, 17635672, 5713380, 2454037, -15141907, 13403519, 1527398, -25886304, -11613592, 1127966, 45031660, 24915642, 25054154, 19745576, -22967874, -11592117, -50761680, -44945224, -70713416, -21256330, -8351564, 44354128, -1460826, -21378736, -5463736, -4517232, -16694538, -14308684, 2799782, 23070416, 64542620, 28205050, 57219164, 29119342, -25539486, 23404350, -16730508, -14896557, -16022375, 6381248, 46843596, 14254996, -38887708, 16036334, --41846940, 20179366, -26532698, -6489696, -23314156, -25963614, -1200443, 2346126, -399969, -32313724, -40840844, -9244917, 15267535, -40677100, 10489384, -10225243, -12419972, 19568944, -17097728, 40127344, -4570382, -17329120, 1782948, -13362180, -17265232, 10418517, -28362890, -7208566, 34548716, -8928700, -13757317, -3223373, -26096758, 26466662, -15785615, -59334972, 6330782, 2792803, -1227824, 4731980, --9113921, -13025562, -4535486, 24335284, -51226076, 27426050, -13459891, -8931921, 30668214, -21935472, -6972343, 11493332, -13496935, -24347096, 39770324, 36761700, 128776544, 51788180, -70142720, -33197412, --34403760, -54185844, 37479496, 115402552, 46211700, 21575232, -29185376, -8422968, -2156611, -1854889, -55318640, 37524592, 23953032, 83022256, -100484520, 5859409, 51978232, -13411035, 10343892, 54073640, -9152038, -16522202, 29076392, -56161528, -111363672, -11580306, 10274636, -44060996, -5539434, 58196268, -9291625, 2220498, 21788370, -48257180, -96312496, -88715232, -40597640, 27235462, 55764244, 123947384, -30518426, -17978196, -16954384, -36145372, -76421960, -25119654, 53653804, 52858164, 56593172, 53866408, -33928096, 26425324, 6751689, 9460739, -50305340, -33566244, 4933844, 9059160, 22192096, 25149718, -71698576, 13328894, 39876624, -36370856, -32727650, -60985852, -16951162, -54403812, -16287053, -9627169, --90664616, -58418536, 33867964, 84439592, 101242040, 207237536, 128063576, 84079352, 76562624, 56633976, --10780905, -94139240, -100144680, -196562944, -206199776, -198443600, -125714232, -47724604, 41446972, 69995616, -122264832, 117187648, 83266528, 79310328, 105388832, 98122824, 89919976, 52925272, 37356552, 29645474, --7927436, -13412109, -124673776, -93057984, -112559816, -138038640, -60423212, -135530912, -108811920, -196178000, --170617040, -125825896, -85171352, -22049288, 88831736, 106549008, 90035936, 93985696, 88064544, 168997296, -225793952, 197736544, 197746192, 170182176, 165380400, 116562192, 117955912, 10516764, -106514112, -206546592, --197441792, -289185504, -244233856, -349138432, -410943552, -371445952, -354515712, -228542192, -170124736, -12810814, -24292336, 106535056, 175329152, 290591584, 231230304, 347713024, 200316736, 32184338, -2443837, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-3656628, -530965, -5476084, 4852240, -4402342, -5283884, 2318746, -1553168, -1198296, 1406065, +-6242198, -1283658, 4512937, -3128884, -1114007, -4889284, 1396401, -3642669, -6628745, 2744484, +1201517, 2328409, -2642479, -3220689, 3591130, 1022202, 4066260, 4225174, -4557497, 4128001, +-1251446, -1247688, 2871723, -680215, 2598992, 4476430, 4192425, 804770, 1748052, 1620813, +-3750043, -1819456, -1436130, 700080, 3224984, -6259378, -1509681, -338766, -448824, -2866354, +462783, 2571612, -3308736, 2246268, -2618856, -6324876, 1282048, 1240172, 780073, -2477659, +-766652, -1642825, 2947421, -777389, -151934, 130997, 2049773, 665183, 1256815, 1723356, +-4498442, -2363843, 2320356, -540629, -1096290, 1130650, -1292785, 4477504, 4966056, 2718714, +-1960653, -7510287, -6949794, 2547989, 3948149, -1427540, 7396471, -1396401, 4405026, -5229660, +-4670240, 2071248, 165356, -1323924, 1944547, 4858145, -2109366, 715112, -2763812, -225486, +245350, 2022393, 1826972, 2523830, 403727, 1525250, 5492727, -2065342, -2572686, -2718714, +-4977330, 1491964, -1042066, 9170292, 1779190, -622233, 728534, 5592048, -494995, -1136019, +-1389959, -3169686, -570694, 4323422, -624918, 1840394, 4330401, -1267015, -270583, -6825777, +-4017942, -6212134, -1182190, -1734630, 988916, 446677, 974958, 2359548, -1435056, 1207960, +157303, 691490, 1060320, -2147484, 2291902, -566399, -2481954, -113280, -2469606, -506806, +499827, 5185100, 12045773, 4832912, 2807298, 3416647, -7167227, -782221, 3010772, -910533, +1141924, -6435472, 6318971, 8691940, 1429687, 3910568, -1880659, -5010616, -7903814, -8535711, +-5771899, 6855305, -6488622, -4032438, -5502390, 1792612, 4454418, 903017, 544387, 2576444, +-325881, 1645509, 5500243, -733903, 4559645, -4363687, 4152160, 2989834, 2611340, -2275259, +-7284265, -1484448, 4046396, 2493766, -2095944, -190052, 1343788, -252866, -3563749, -675921, +2859911, -956704, 235686, -1660542, -475131, 273804, 887985, 5153424, 2027761, -2540473, +335007, 494995, -1837172, 1009317, -2631204, -204011, 4008815, 1447941, 4505958, -3185792, +-2974802, -1547799, -877784, 2553358, 5090610, -2758443, -3988414, 4845260, 733366, -1968169, +2202781, -466541, 3538516, 1500017, -3993783, -3764002, -4282083, -680215, -3501472, -7350837, +-7009387, 7195144, -181999, 1497333, -81604, 4368519, -6529961, 9628243, 8543227, 410706, +420370, -25233, 215285, -996432, 3315715, 2565706, 166430, -5549098, 2332704, -1763084, +2590939, -828929, 5801427, -1433445, -3467649, -1619203, -981937, 2089502, -102542, 3534221, +-5884642, 3040837, 941672, -3330210, 9075803, -1564442, -1389959, -311922, -226023, -2542621, +-865973, 4744328, 3908957, -8730058, -4139812, 4195110, 1158567, -2233383, 7363185, 73551, +1569811, 7127498, 2929168, 5522254, 1522566, -2494839, -3104188, -6094559, -5698885, 430034, +2879239, 6673843, 204548, -3558917, -9801115, -3401077, -4774930, 4456029, -3265249, 2896956, +-3530463, -1446330, 8288750, 4065187, -5523865, 2520072, 7904888, 1165547, -2789581, -5557151, +-6693707, -4577899, -6730214, 4459250, 1001264, 2452426, -1301912, -3044058, -3219078, -5922760, +296353, -191663, 1395328, -1453846, -5391258, 74088, 5739150, -1290101, 59056, -2883534, +-5737540, -8504035, -734976, 6085432, 2218888, 612570, -2877091, 747861, -4600447, -1546725, +-3459059, 396211, 788663, -5290326, 5924908, -3386582, 7539278, 2785286, 731218, -3489661, +-1775969, 1857037, -408022, 1744831, 4068408, 726923, 1634235, -4576825, 2676302, -2362232, +6958384, 8446590, 3971234, 5626944, 2718178, -1015223, -5990406, -4006668, 462783, 4374961, +4110284, 3312494, -7938710, 1073742, -8487392, -2684, 1258425, 820339, 3774203, 415538, +566936, 14981920, -1913945, -6570763, -7161321, 7540889, 4989679, -5633924, 1326608, -6287832, +-2752537, 241592, 7104413, -8835285, 2536178, -316217, 1362042, -646929, 9024263, -4665945, +2503429, -1391569, -2463701, 1408212, -500364, 2749853, -2847027, -2551748, -7755101, 1231582, +-2629594, -1627256, 523986, -2694555, 2174327, -4308926, -2678449, -7601555, -338229, -6747931, +-2975339, -8031589, 5852967, 1233729, -2612414, 5275831, -6259915, -17717, -11803107, -616865, +3821984, -313533, 3222836, 7395397, -2852395, -1053878, 8962523, 3882114, 3228205, 5609764, +-3339874, -8628052, -1418413, -5240934, 3079492, 8316668, -2464238, 2044404, -1004486, 4144644, +4841502, 1642288, -2815351, 1975148, 1308354, 8994735, -1330366, -2060511, -12218108, -3580929, +9268539, 8885750, 5832029, 4436165, 13162464, 673773, -15654082, -4166118, -2593087, -3952444, +8373576, -1488206, -3033858, 9574556, 1523640, -4199941, -1401770, 3700651, -3473555, -1567663, +1168231, -1457605, -5491653, -2700461, -294205, -5514738, -2464774, -2465848, 3630858, -2741263, +7036230, 6624450, 598074, 6271189, 4523675, -3277597, -1103270, -2583423, -10296110, 791885, +1988570, -10074383, -1520955, -3155727, 3329674, 8419747, 1191853, -9460739, 1146756, -3984119, +-6245956, 4329864, -1628330, -7072738, 2685428, 1759326, 6855842, -1392106, -1163936, 4271345, +5888400, 5630702, -7317551, 3376381, 6119255, -15912317, 6524056, -1629403, -3821447, -3184718, +2580739, -1423245, -9695889, -10043781, 1045288, 15884937, 4153770, -11432666, 2382096, 9434969, +-6970732, 1261110, -1938104, 5623723, -281857, 5179194, 13571023, 10074920, 6018860, -243739, +-1422171, -6414534, -7138236, 2688113, -18217104, -2886218, 8176007, 881005, -1234803, -8666170, +-3401614, -469762, -746251, -4292820, -9242770, 9797357, -3823595, -2344515, -2007360, -8406862, +-9665824, -503585, -4951561, 402116, 3939559, 3100430, 3241627, -7637526, -2412161, -3940096, +-2825015, 11426224, -1804960, -5804649, -212064, 14667850, -8698919, 2024003, 10474888, -234076, +-3266323, -6267431, 2631204, -91268, 7205882, -5144297, 5907728, 4578435, 9561134, 4087735, +8986682, 13479218, 7854422, 1596117, -3068754, -4704063, -11218991, -2927557, 7034620, -14696304, +-6351183, 13889924, -19089520, -3147674, 10349261, 13527536, -1562831, -13034689, 1648194, -4813048, +17613124, 8177081, -12414066, -7585986, -2059974, -7256884, -15562814, -7408819, -6994891, -5276368, +-12621835, 6567542, 2061584, 7997766, -4888747, -1998234, -11099806, -818191, -9641128, 1298154, +-6443525, 1709934, 3215857, -14377403, -4925254, -5279589, -3991635, 3479997, 3053185, -4373888, +14407468, -622233, -3848828, -2399276, 1346472, -3081639, -1236951, 5706401, 4560182, 6351183, +7926899, 7861938, 587874, 5269925, -2412698, 11627013, 12088722, -5734855, -3157338, 7781407, +-223875, -17916456, 785442, -8796093, 5487358, 6552510, -9701257, -12756590, -5564130, -12342125, +-16493211, 11525545, 1641751, 6241661, -8913131, -10219338, -12989055, -9569187, 4602595, -10448582, +-8500277, 11711839, -2601140, 86973, 3401077, 6475200, -4963909, -4604742, 2464774, -3791919, +2359548, -1127429, -5565741, -12036646, -17581448, 5438503, -12498355, -12409234, 1083942, -3668976, +-371515, -7233799, 3486977, 2881386, -14237280, -888521, -2759517, -6334540, -7701950, 4057134, +1471563, 14090714, 2234457, -8864812, -25233, 730144, 6554120, 1884954, 13530758, -1790465, +-13671955, 5376762, -2491618, 5689221, -7951058, 1108638, 5351530, -25840134, -11354820, 8065949, +-197032, -3520263, 4446902, -2137283, 16457778, -1447941, 10692321, 7807177, -12109660, -15772194, +1700270, -17156784, 8447664, 35293892, -8784819, -23424752, -2218888, -10122164, 25456272, 2198487, +14242112, 7980049, -4495757, -11027865, -5089000, -12015171, -3164317, 17519708, -19132468, 1162326, +-15579994, 4620848, 1376000, 8039642, 1867774, -7064148, -12541305, -14303315, -2586107, -13991930, +-11160473, 2381559, 3584150, 11331197, -9835475, -20409684, -4130685, -6662568, 2822331, -9204652, +-6336151, 3739843, -4887136, -7600482, -163209, 1715839, -3827890, 21323438, -3709778, -2449742, +5702106, 6317897, -5493800, -1545115, 15778099, 13812078, 9029632, 17164300, 13266080, 1307818, +6068252, 10461467, -5837398, -4836670, 2869575, 8187819, 11740293, 6174016, 22807350, 4388920, +15866146, -1812476, -6731825, -2748779, 32493576, 8554501, -1653562, 204548, -8054138, 7945153, +-32078036, -10136660, 14144938, -2385318, -17014512, -13458817, -6258841, 18013092, 7621420, -12148852, +6162205, -16594143, -8629126, -860604, -13040594, -14769856, 12212203, 8716099, -15606301, -3747359, +29555280, 8465381, -14937359, -17478906, -921807, 11421392, 471373, 3047816, -22767622, 683437, +-3687766, -14131516, -10271951, -4903242, -13645111, -4521527, 2313377, 1832877, -14360760, -11703249, +365072, 9590125, -1537061, 12400107, 17086990, -11545409, 10055055, 10048076, 2239826, 3943854, +12467753, 5814849, 7106561, 7241852, 6219650, -1054415, -3219078, 17440252, 23192286, 5733782, +-7434589, 4718559, -5309117, -7655779, 13945222, -5909338, -15246597, -19148574, -9311489, -22530862, +10000831, -7907035, -6689949, 821949, -6182069, -5840619, -13857712, 11811160, 6624987, -1781338, +7406134, 5979668, 16098611, 12895102, -26991722, -8614094, 29325500, -23140746, -7245610, -13936632, +20779052, 9624485, 9373229, 4308926, 2719788, 8658654, 22023518, 10861435, -10278394, -9664, +319438, -449898, 8432631, 10145250, 753767, 6066105, 5163625, -4988068, 6443525, 4320737, +13326210, -6510097, -13870060, -11307575, -9490804, 2763275, -1767379, 5405217, 5365488, 6145562, +11521250, -5251135, 1857573, -5303748, -10272488, -3775813, 199716, -10897943, 13139379, 17002702, +-19353660, 6316287, -13766981, 10444287, -3178813, 4056060, -2594697, -10212358, -3802657, 11692512, +-10644540, -2886218, 418222, -18900540, -9093520, 3810173, -16791174, -1189169, 20531554, 11322608, +-5164698, -5746666, 18488224, -1487132, -4372814, -15388868, 592706, 1459752, -4227322, -348429, +-7248294, 2671470, -22239340, 20143934, -4213363, -7209103, -14147085, -15887084, -1793149, 19168976, +-3665755, 5229123, -12089259, -7001871, -3520800, -11730093, -14197014, 12627741, -8125005, -6613713, +11099806, 10827613, -15833934, 5218922, 5636071, 13266617, 10879689, -4323959, -10146323, -6495601, +-15448997, 16384226, 10667625, 5221607, 11582453, -12655658, 8112657, -2149094, 7400766, 8182450, +-8406325, -1049046, 26797374, 22312356, -17552994, 6419366, 13736379, -11329587, 2997887, -25900264, +7244536, -14295262, 10996727, -8573292, -9106404, -6855842, 29968134, 1024887, -9099425, 1918240, +9968082, 497142, 5944235, -17256642, -1788854, 26123064, -445066, -11985643, 3824669, -23267448, +-12328704, -12588549, 10405095, -4748087, 15997679, 11433740, 20653424, -9778030, -2038499, -16068010, +13363791, 27444842, -9404368, -19976966, 869194, -3282429, 31223338, -6987912, -13946833, 13355201, +5569499, 6162741, 10948945, 5138929, -42047192, 1124745, -4048007, 16888348, 27292906, -26080116, +-293668, 9073118, -14367202, -1674500, -38383584, -7416872, 17389248, -29470454, -19697256, -8394514, +-13435731, 13064217, -8945880, -9904195, 14664629, 5883569, 4264366, 17722108, 116501, -4851166, +10151692, 18549426, -19008452, -11842299, 24269250, 18964428, 4045322, 9272834, 4050691, -10845329, +-19305878, 951872, -2188286, -2503429, 2778307, -9272298, 4516695, -13175349, 2717104, 34563748, +-18949396, -11382200, 14443438, 7273527, -10528575, 9738838, 8687645, 14333916, -33011118, -60811904, +-28083718, -4130148, 20758114, 1635309, 22910430, 21318070, -6328098, 3643206, -5093831, -11340861, +-18950470, -10812580, -13632763, -7694434, 21862994, -27904402, -4753992, -23170274, -29017872, -4714801, +-29270738, -23273354, 3107409, -5737003, -3179887, 5860483, 26087632, 2341294, -18514530, 1644436, +-1991254, -5029944, -24093156, -940598, 29321204, 3387119, -208306, 12513387, 22855132, 15982647, +4243428, -8341900, 8165807, -6818261, -20382842, -36965708, 36366024, -3547643, 30332132, -1445257, +664109, -9643275, -17124034, 32912872, -17794586, -13307956, -1362042, -21669720, -21593484, 19549080, +13225278, 8578123, -2432562, 10964515, -16340740, 8180302, -13632763, -16175921, -21209622, -13128104, +-14487462, -24497420, 763430, -23478438, -25084220, -5429376, -10918344, -29670170, -38674032, 3475166, +-14017163, 6294275, -1869385, 13852343, 34409668, 663036, 4445291, -17986250, -17165374, 14079440, +9422085, -13313325, 1042066, 8821326, -21634824, -18427020, -250719, 27645094, -23696408, -716186, +1554241, 12160126, -20109036, 20909512, 12483322, 5171678, 373662, -10199474, -23511188, -1304596, +-4918812, 7784092, -12345883, -33507724, 27650462, -20614770, -7812546, -2432562, 27054536, -20972862, +10056129, -17424682, 10991358, -7008313, -23217520, 10413685, -29834454, -7875897, -7999377, 9584756, +25902410, -15688979, 10043244, 24284818, -19691888, 2140504, 6798933, 4690641, 8106214, -38547332, +-10634339, -7863548, 13724031, 902480, 41339, 4079682, -7185481, 43082280, 4962835, 17955648, +50522236, -23775328, -12522514, -19956566, -6658810, 22666690, 2192581, 28032178, 8344048, -1324997, +-9822053, 21164526, -12550968, 4636417, -8075076, 8640400, -13253195, 16156056, -7007239, -3963718, +-8338679, 12441983, 9655086, -13922136, -2191507, 13168907, 5152350, -8908299, 2099702, -11417634, +-36257576, 16308528, -18382460, -28802588, 19244138, 7997229, 20768314, -1692217, -17247514, -6878390, +-3409130, 11389180, 16681116, 16866874, 29571924, 27656368, -10273562, 4068408, -27022860, 620623, +-19029926, -37374268, -1506997, -30360586, 12313671, -24118388, -13710072, -15769509, -20430622, 2842195, +-2683818, 2562485, -3899830, -2216740, 1148904, -39129836, 9757092, 6953015, 12724914, 20188494, +231928, -30486214, 22319334, 868657, -3978750, -2512019, 29769492, 59585156, -33403572, -24571508, +-46601468, -90577104, -24192478, -8392366, 19024558, 13610751, -9470403, -16539382, 23539642, 31821950, +1079111, -349503, -1429687, -23117662, -15916612, -16099148, -14854681, -24569898, -2036351, -5445482, +-4814659, 18581640, -25818660, 20257750, 16308528, -4708358, 7494181, -151934, -44686452, -29642254, +-18931678, -14763950, -9133785, 4176856, 14508400, 6104223, 6820945, 42061688, 35489852, 9176734, +-30119532, -13925358, -3472481, -13811004, -28833190, -65632468, -58004608, -24569360, -8503498, 3084324, +11802033, -45594836, -29258390, 23978802, 24594056, 33235530, -33436858, -36679020, 8435316, -22492744, +50539416, -27677306, -7495792, -16496433, -13804025, 7107097, 9933722, -8293045, -29669098, 404801, +-13615583, -12524125, 12363063, 53153980, -16699907, 16012712, 779537, -26053272, 5305359, -50921132, +-9556302, 8870181, 2494302, -30393336, 18483928, 48425756, 36724116, -17321604, -29912300, -15203110, +5046050, 50887848, 8609262, -555661, 1717987, 22464290, 26593364, 4595078, 20695300, 13545253, +31009128, -10444824, 4908074, 16739635, -15633144, -28305982, 16263967, 41075456, 10961293, 18713710, +3612068, 10553272, -56303800, 8329016, -617402, 10616085, 58464704, 20364050, 9385040, -8283382, +27192512, -8559870, -10153303, 6132677, 17641578, 30433602, -8899172, 17635672, 5713380, 2454037, +15141907, 13403519, 1527398, -25886304, -11613592, 1127966, 45031660, 24915642, 25054154, 19745576, +22967874, -11592117, -50761680, -44945224, -70713416, -21256330, -8351564, 44354128, -1460826, -21378736, +5463736, -4517232, -16694538, -14308684, 2799782, 23070416, 64542620, 28205050, 57219164, 29119342, +25539486, 23404350, -16730508, -14896557, -16022375, 6381248, 46843596, 14254996, -38887708, 16036334, +-41846940, 20179366, -26532698, -6489696, -23314156, -25963614, -1200443, 2346126, -399969, -32313724, +40840844, -9244917, 15267535, -40677100, 10489384, -10225243, -12419972, 19568944, -17097728, 40127344, +4570382, -17329120, 1782948, -13362180, -17265232, 10418517, -28362890, -7208566, 34548716, -8928700, +13757317, -3223373, -26096758, 26466662, -15785615, -59334972, 6330782, 2792803, -1227824, 4731980, +-9113921, -13025562, -4535486, 24335284, -51226076, 27426050, -13459891, -8931921, 30668214, -21935472, +6972343, 11493332, -13496935, -24347096, 39770324, 36761700, 128776544, 51788180, -70142720, -33197412, +-34403760, -54185844, 37479496, 115402552, 46211700, 21575232, -29185376, -8422968, -2156611, -1854889, +55318640, 37524592, 23953032, 83022256, -100484520, 5859409, 51978232, -13411035, 10343892, 54073640, +9152038, -16522202, 29076392, -56161528, -111363672, -11580306, 10274636, -44060996, -5539434, 58196268, +9291625, 2220498, 21788370, -48257180, -96312496, -88715232, -40597640, 27235462, 55764244, 123947384, +30518426, -17978196, -16954384, -36145372, -76421960, -25119654, 53653804, 52858164, 56593172, 53866408, +33928096, 26425324, 6751689, 9460739, -50305340, -33566244, 4933844, 9059160, 22192096, 25149718, +71698576, 13328894, 39876624, -36370856, -32727650, -60985852, -16951162, -54403812, -16287053, -9627169, +-90664616, -58418536, 33867964, 84439592, 101242040, 207237536, 128063576, 84079352, 76562624, 56633976, +-10780905, -94139240, -100144680, -196562944, -206199776, -198443600, -125714232, -47724604, 41446972, 69995616, +122264832, 117187648, 83266528, 79310328, 105388832, 98122824, 89919976, 52925272, 37356552, 29645474, +-7927436, -13412109, -124673776, -93057984, -112559816, -138038640, -60423212, -135530912, -108811920, -196178000, +-170617040, -125825896, -85171352, -22049288, 88831736, 106549008, 90035936, 93985696, 88064544, 168997296, +225793952, 197736544, 197746192, 170182176, 165380400, 116562192, 117955912, 10516764, -106514112, -206546592, +-197441792, -289185504, -244233856, -349138432, -410943552, -371445952, -354515712, -228542192, -170124736, -12810814, +24292336, 106535056, 175329152, 290591584, 231230304, 347713024, 200316736, 32184338, -2443837, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, }, { { 15547245, --3688303, -1811939, -4158065, 384400, -4757750, 141734, 2228551, 1487132, -693100, -3057480, -2359548, 3493419, 202937, -1853278, -1523103, -1205275, -2942590, 1131724, 665183, 818728, -2069637, 4105452, 4027606, 979253, 3172370, 1658394, -1734093, 867583, 1382443, -275952, -499290, 465467, -446677, 2117956, -139050, 3839164, 3338800, -3635153, 2774012, 623307, -2270427, 445603, -366146, 95026, 6896107, 196495, 2267206, 558346, 1948841, 2699924, -544387, -1862942, 4030290, -5218386, -449898, 1494649, 4357781, 1412507, -661425, 3718905, --404264, -3114388, 1017370, 1066226, 711891, -653372, 427886, -378494, -2338610, 723165, --956704, -1605244, 1811403, -2806224, 2375117, -5189394, -13831405, -1182190, -2191507, -1902671, -230318, -2318209, 890669, 1352378, 5705864, -1919314, -195958, -5235029, 420907, 5266167, -403727, 3810173, -1082869, 1605781, -2156611, -3294240, 155693, 3631395, -417149, -4513474, --137439, 4408247, 1482301, -1855963, -1511829, -179852, -546535, -995896, 112206, -709207, --1447941, -156766, 964757, 652298, -134755, -3409667, 5199595, 7036230, 294205, 861141, --2754148, -1555315, 627065, -3598646, -3977677, 2476049, -3217468, 2449742, 3175592, 3147137, -1232119, -408559, 907849, 705448, 2400887, -4966593, 498753, -592706, -3599720, -4897874, -193274, 2514167, -1851131, -234613, -562104, -347355, 3466039, 1685238, 385473, 1224066, --1347009, -12506945, -3179350, 5121749, -947040, -3725347, 1410360, -9230422, -3884798, -1182190, --1960116, -4689031, -5405217, 2960306, 4006668, 3848291, -5076652, -6910603, 534187, -3975529, --7836705, 1903744, -753767, 2311766, 8229694, -2632815, -1175210, -5206574, 7068980, 729608, -3385508, 2691334, 5748814, 3223910, 1579474, -5834176, -967978, -5355824, -1809792, 385473, --2605972, 1990181, 1265405, -2467996, -5409512, 3386045, 5024038, 1624571, -2842732, -3825742, --2757369, 1377074, -4753992, -5520644, -1916629, 2881386, -1873680, 1460826, 3213173, 2311229, --2956011, 5192616, 126165, 4417911, -3997541, -3046743, -2129767, -2137283, 2696703, -1726040, --178778, 5137855, 1471026, 55835, -5285494, 1218160, -2365990, 3400540, -2513093, 3187940, -4596689, 1733556, -2746095, 1873680, -1251446, 1262720, 8558259, 5127654, -7102802, 4753455, --3882651, -2065342, -978716, 19327, 3663607, 5906, 9978820, 2732136, -3762928, -2646237, --2428267, 6841883, 1685775, 6577206, 2246805, 4370129, 7059853, 7886097, 3097208, -1087701, --775778, 1030255, -6429029, -6201933, 1946157, -4763119, 2617246, 1035087, -1522029, -892816, -1917703, 6493991, -2178622, -2523830, -3431679, 8339753, -1134408, -10972568, -5313412, -4518843, --3862249, 4141422, 4293357, 3443490, 5646272, 2174864, 3565897, -480499, -266825, -497679, -5715528, 1474248, 3409130, -7828652, 621160, -48318, 573915, 78920, 3464965, 1837172, -1237488, -4072166, -3171297, 18506478, 4529043, 2528125, -1901597, -1654099, 2229088, 974958, -5431523, 6309307, 98247, 9453223, 4313758, -3799436, -2826625, -591632, 5098126, -896574, --2144799, 4842039, 1144609, 13785771, 4118874, 2453500, 1005022, -1708860, 1091995, 1793686, -3169149, -986769, 461709, 7235410, 1497333, 7998840, -3757023, -4360466, 3198677, 12182138, -4080219, 2675765, -632434, -5774047, -1670742, 1337882, 836982, -484258, 929324, -8055211, -1021129, -3752191, 3563212, 2053531, -2546379, 1390496, 3196530, 1426466, -3106335, -4107063, -1401233, 906775, 539555, -5191005, 1788317, -2293513, 3616363, -898185, 1167694, 1456531, --143345, 547608, -1084479, -59593, 11654931, 572841, 4605816, -701153, -2226404, 642098, -1447404, -237297, 2610266, -4005594, -896038, 4374424, -2324651, -6419903, -233002, 10952167, --950262, 8619999, 4141959, 11870216, 1196685, 1210644, 4044249, -3196530, -7248831, -9113384, -1918777, -4596152, 10572062, 6288369, 7381438, -1351304, -3471407, 1040993, 1420560, 3658775, -9833328, 1286880, 3904125, -4569309, 2895882, -3230352, 1036698, -1721745, 2975876, 5852430, -405874, 5586142, 1640678, 2807835, -2017561, -1318018, 6991133, -1717987, -2303713, 5596880, --3810710, -316754, 311922, -2457258, -3752728, 2456721, -4251481, -738734, -5304822, -10171019, --1717450, -1585917, -873489, -10614475, -4669167, -3285650, -3400540, 3901978, 9713605, -2723009, -2631741, 5373541, -2233920, 977642, 252866, 648003, -4240744, 4479651, -13898514, 1373853, -7169911, 4060355, -7889855, -401043, 155693, 1988033, 2607582, -271657, -6199249, -5566815, -671089, 9874667, 4394826, 5916855, 9546639, -6463926, 6742025, 13049184, -1426466, 3049964, --7562901, 2649995, 2390149, -6146635, -3636764, -1227824, 2710124, -6221797, -8638790, 1721208, -645319, -7067906, 290447, 2376191, -1753420, 15397458, -1165547, -10737418, -1040456, 3838090, -8305393, 3264175, 3550327, -6867653, 1604170, 2269353, -6517076, -338766, -1378685, 10679973, -6174016, -1709934, -3974455, -8180839, 3218004, 3335579, -5184026, -137976, 1647120, 3238942, -2986613, -4177930, -427886, -912144, 9665287, -8380555, 750009, -2195802, 8723615, -663572, --2389076, -3776350, 1049583, -3846143, -8650601, 5036386, 4933307, 1500017, -3287798, 806917, -2477659, 15895674, 10872173, 7830799, 11527155, 4420058, -747861, 1460826, 4420595, -11544335, -6093485, 30602, 6541235, -4728759, -2067490, -7474317, 2355253, 12829604, -12389370, -8150774, --13179644, 6720013, -2779918, 333397, -5829345, 704375, -1977296, -6209986, 2658585, 2937758, --9246528, -1364726, 2066416, -2156611, 5398237, -13915694, -6368363, 14179298, 1787780, -257161, --1031866, 507880, -6830609, -7639673, 846645, -11110007, -2167885, 1173600, 3401614, -4726612, --676994, 13917842, -456877, 4955319, 10738492, -9473624, -2881386, 2386391, 2894271, 1998234, --2485176, -6686191, 8303246, -685584, -6898255, 5566278, -959388, 1448478, 2265059, -3794067, --2524904, -1653562, -26331908, -15188615, 12419435, -4977867, -5290326, 6979322, 6752763, -11710228, --14986215, -5230734, -5070209, -6072010, -589484, -10863046, -7170448, 3630858, 904091, -14489609, --15213311, -9023189, -3788161, -992674, 8587787, -759672, -5318244, 4258997, -12517145, 253940, --27380, 436476, 5171678, 2411087, -8916352, -7250442, 6356552, 1949378, 21926344, 5188858, --6412923, 955630, 1382443, 235686, 6326487, 1121523, 3075734, -2108292, -3925600, 1499481, --11461657, -2136209, -4538707, -6280316, 2229625, -9497783, 12186970, -1170916, 5610838, 8465381, -3304977, 4721780, 397821, -4766340, 737661, -79457, -5551782, 9234717, -2492155, 16027744, -581968, 728534, 1833951, -2563022, -7034083, 4408247, -5246840, 210990, 9738838, 6372658, -18834506, -10108742, 8460549, 4816806, 6048925, -1882806, -11754789, 2455648, -3816615, -9163313, -19396610, -542240, -6687801, -19224810, 11329050, 4308926, -1271310, -6648610, -9761387, 1087701, -19635516, 8558259, -1903744, -1207960, -10004589, -6411313, 4845797, 3463891, -8107825, -4085051, -6052683, 2607045, -1497870, 7005092, 8341900, 2288144, 11378979, 15097884, 7419019, -2533494, -1855426, 1932735, 1032940, 8229694, -11977590, 11919608, -2167885, -4929549, -10040560, 796716, -5856725, 5879274, -11674795, 2970507, 6458020, 1979443, -8975945, -15113453, -16110959, 4564477, -4634807, 1845225, -7419556, 45097, 9615358, -4472135, -10714333, -15899432, -369904, 4160750, --14798310, 5680094, 9993315, -4605816, 6932614, 4380330, 23157390, 16411607, 2822331, -4093641, --3326989, -2669322, -17188460, -5975910, -1018981, 11108933, -8363912, -3598109, -4369593, 781684, -16412681, -12845710, -4479651, -177704, 7209640, -2260227, -10841034, -16078747, 5003100, -10965052, --6212134, -6667400, -8727910, 2906619, -14012331, -5867999, 10513006, 17714056, -255014, -10406706, --10716480, 16330003, -2877628, -8266202, 15518791, 864362, -125091, 1028108, -19325206, 7689065, --7931194, 6878927, 4861903, -12082280, -2617246, -12284143, 3555159, -11930882, -3414499, 5266167, -5512054, -3901978, 2759517, -14603426, 8655433, -1048509, 5379984, 5876589, 2603824, -3229279, --4745402, 14698452, -11886859, 7289633, -4303021, -12506408, -9434969, -799938, 11228118, -7355669, -4189741, 2675228, -5660230, 6155225, -1511829, -3048890, 10009421, 1054415, -5531381, -14934675, --138513, -19203336, 3794604, 858993, 9623948, -8164196, -1169305, 3963181, 4554276, 4423280, --11917461, 16788490, 13059385, 1429687, 9782325, -5068062, -17261474, 3279745, -6986838, -9264244, -8858907, 19488414, 4045859, -6625524, -6965363, -17413408, 469225, -272194, 25640954, -10990821, -4832, -336081, -383863, -16318191, -16782584, 12418361, 880468, 6523519, -1878511, -20650202, --10877542, 281320, -2961380, -5422933, -5279589, 11347304, -2439005, 6838662, -8685498, 16225313, --20708722, 8801999, 11020349, 4840965, 5889474, 3520800, 16676284, 6670084, -1085016, 1564979, -234076, 14209899, 24672976, -5195300, 2113661, -9908490, 10575820, 13266080, -10468446, -1080721, --21045876, -2687576, -26805428, -13190918, 10056666, -10438381, -23857470, 2583960, -13009993, 993211, -140123, -14666240, -14641544, 6910603, 13554380, 4614406, -16381542, 8148090, -18378702, -5896990, --6926709, 6131603, -7683160, -2921652, 8477729, 1967095, -6172942, -12406013, 13455059, 13733695, -17023102, 2750927, -2079838, 1120987, 5365488, -781147, 6925635, -7234873, 9165997, -3117073, -10595684, 9113921, 6381248, -2556043, 396211, -16070694, 5634460, -3623879, 12506945, 2843268, --29044180, 5039071, 14385456, 19851876, -11000485, -14566918, 18250390, 8811125, 12905840, -22127134, -11428908, 28999082, 30190936, 2467459, 1016297, 17578764, -11422466, -15209016, 10515154, -16955994, -7082938, -7775502, -6153615, -3739306, -36550172, -22006876, -16607028, -4265977, -16076599, -29395294, -22355842, 2892661, 7174743, -3377992, 15685757, 923418, -14303852, 11173357, 3847754, -4398584, --8831527, -6041945, 1558536, 4387846, 13836237, -7677254, 10751914, 4066260, 19943144, -28848222, --8367133, -4169340, 3282429, 12451647, 16881368, 4421132, -14600204, 10000831, 13181792, 11976516, --3701725, 4481262, 348429, -4355097, -2447595, 1291175, 3954054, 2045478, 9642738, 2114198, --13204340, 12351789, -13664438, -16442745, 2188286, 12625593, -6356015, -3965329, 4028679, 6355478, -10130754, -5622112, 4622996, 24121074, -9816148, -24901146, -32999308, -16212428, -22414898, 10336376, -19018652, 12520903, 4555350, 11724187, 6733972, 12849468, -10909754, 14382235, 7661148, 5582384, -15320685, 18881750, -5990406, 29911762, 2910377, 4696010, -6180458, 10878615, -34182036, -15084999, --23340462, -24106578, 9641665, -21022254, 20773684, 23625542, 1109175, 5176510, -3546032, 4390531, --22290344, 9287867, 24866250, -14008573, -28708636, 3926674, -10723460, -9061307, -27987080, 5011153, -10449119, 48318, -3681324, 9214852, -15891916, -2478196, 10572062, -5540508, -14059575, 1950452, --6940131, 14937896, -9575093, -5125507, 13910862, 12234751, 25554518, 3693135, 6289980, -1976759, -6976101, 9440338, 15842524, -4090420, -368293, -9277129, 20835960, -25564720, 28151364, 1579474, --11068668, 13779329, -10109816, -6777459, 25820270, -36397164, 6062347, -6918656, 7201050, -13356275, -6768869, 16042777, -7987566, 198105, -4525822, -4154844, -4366908, 30270930, -33194728, -5609228, -36696736, -14598594, -23267448, 2524367, -8994198, -7488276, -13214004, -15905338, 20167556, 9104794, -1029718, 9910100, 23946590, 14631343, -1919314, 5270999, 16022375, 21109228, -18687940, 8956081, -17144972, 7920457, 6133750, 24348170, 11329587, 5374615, -955630, 11172821, -1424855, 12602508, -9881646, 5921686, -11435887, 21628382, -17637820, -1759863, 26373784, 26698054, -6431714, -22834730, -8596914, 108448, 22629108, 39699456, 8616241, -5507759, 2638721, -21981642, -2779918, -5401458, --4945655, 1023276, 19921132, -7985955, 8731669, 24720222, 4031901, -21598316, 14702210, -412317, -9360344, 23411330, 31875100, -8137353, -8412767, -1795833, -25172804, -35915052, 1121523, -15620259, --2560874, -18988588, -1866163, 2356327, 3099356, 17406428, 2684, -6190122, 25182466, -47042776, -25982942, -19931332, -45969036, -13882408, -11424613, -1843078, -10438381, 5399848, -12555263, -28815472, --17062832, -8761196, -2389076, 3073049, -11555610, 11305965, 22646288, 621160, -1180579, 5931350, -1608465, -4401805, -8090645, -4918275, 6300180, 6434935, -1755031, 6099391, 27778774, 7333657, --7816304, -27585502, -4127464, 19029390, -23270670, -11343545, -8720394, -25233, -1564442, 14498736, --4666482, 1423245, 20633022, 6904697, 22857280, -3602941, -10486163, -5363878, -5618891, -6372658, -11096048, 629750, 7537668, 13181255, -24146844, 2866891, -6336151, -15901043, -11353746, 22795002, -17061220, -201327, -11679090, 3534758, 9802189, -483721, 6564858, -18187040, -40857488, -21099026, --15691126, 11391327, -108448, -7019587, 13771276, -18731426, 22468584, -2033667, -34890704, 6914898, --16702054, -3769371, -2313377, -4424890, -22148072, 6768869, 1387811, 17457432, -38044284, 340913, -19063750, 1988570, -8884140, -19645180, -1321239, 10812043, 16687559, -14008573, -4726612, 8617315, -19024020, 16930224, -16494285, -3700114, -26840862, 12262132, 13803488, 8165807, -7587597, -2423435, --7258495, -3183108, -8930311, 2279017, 19711216, -7609072, -7733089, -7067906, -11169062, 22017612, -19152870, -2185065, 26953604, -1530619, 9489193, -24160802, 19430432, 8425652, -27058830, -8946417, -30451854, 12501576, 7971460, 5768141, -14908905, -11563663, -16063178, 26577258, -14499273, 20592220, -20460150, -24097450, 54883776, -11705396, 33283312, 2100239, -9828496, -13904420, 23173496, 12238509, --25979720, -3645890, 13459354, 22957138, 1889786, -19447076, 9289477, -37485936, -10013179, -34120292, --47046536, 1329292, -18216030, 5710696, -3706020, -7730405, -18124762, -12706661, 10167261, 27763206, --23912230, -5588826, -40977748, -36197448, 9341554, 13618268, -22798224, -24019068, 882616, 4397510, --38315940, 1178432, 111132, 18689550, -17666812, -214212, 15417859, -11602317, -20492900, -23040352, --11550241, -21179558, -17414482, -22133578, 28165858, -38501160, -24210730, 32204202, -2316061, 7985955, --29461328, -6499360, -9434433, -937377, 45881524, -8494372, -2540473, 2803540, 20480552, -1464584, --22835268, -11392401, -17118666, 2902324, 54563264, 8717173, -22311818, 40315248, 28331752, -29948806, -29025926, 49683108, -2742337, -22982370, 31839130, -8584029, 32742146, 32149978, 24252070, -64873872, --42591044, -41345504, -17046726, -26764088, 33967824, 15978352, 27493160, -2049773, -59301152, -6357089, -7195144, 41744936, -3686693, 11558831, 34100968, -11076184, -28184112, 5140539, -3752191, 48161080, -27741194, -12408697, -22691386, 51049444, 1476395, 26829050, 9788767, 47835736, 37207840, 32741072, -1313186, -22950158, -15771120, -16898548, 35991288, -15524696, -27672474, -11447162, -417686, 1596117, -14959371, -13743895, 4266513, -74176768, 6909529, 14658723, 10948409, -29417304, -31478352, 11944304, -25446070, -30412126, 11317239, -16074452, -16286516, -19468550, -3539590, 26479010, -17336636, 28835336, --8058433, 13066364, -49328236, -27900644, -2529736, 28419262, 16585553, -31879394, -38661148, -14398878, -2698313, 43056512, 16077673, -94489, -26196616, -5927592, 11465952, 87300040, 8409546, -45814952, --104562056, -8871255, 61527552, 16164646, 26737246, -2179159, 37423124, -5608154, 16412144, -7951058, -21243982, 30873298, 16023449, -13694503, -34353832, 41429256, 46089296, -9354976, -45342508, -26657252, -5004711, 27618788, 9122511, 10677826, 2069101, 8015483, 3498251, 8020315, -8419747, -51352776, -303332, 34069828, 25766582, -8840116, 3318399, 21689584, 44824428, 28701118, 22524956, -24105504, --17008070, -2534031, -3573413, -37313604, 29166586, 18634252, 30387430, 61303680, -28766080, -17118666, --928787, -13860396, -12202539, -23139136, 48002164, -24909736, -27497992, -27727236, -7987029, 61821760, -18070002, 26394722, 2287070, -969052, -9445707, 40715752, 34231964, -10228465, -28221156, 17150878, -3351685, 1184874, -28027346, 5264556, 63607928, 54318452, 5090073, 7007239, -39060044, -66516160, --63817308, -26657788, 47130824, 57880052, 53935664, 34692600, -11140071, -32877974, -36194228, -18622978, -11515881, 25524454, 36104032, 6956774, -32285806, -21570400, -8172249, -21561810, -14354318, 9023189, -37563248, 61006788, 34541736, 21405580, 13650480, -32236950, -6883759, -68513320, -83456584, -46755552, --26988500, -18230526, 35207996, 63270772, 63045288, 63483912, 48816060, 25560960, 904628, -20421496, --9383967, -35449588, -73423000, -1205812, 4053912, 11710765, 20973400, 19022948, 21306260, -74179992, --45949172, -22963580, -48578764, -13853954, 31420906, -14362371, 20250234, 9460739, -23713588, 23606750, --20397874, 26193394, 19054622, -9111236, -37546068, -61729956, -72327248, -39911520, 10897406, -118135224, --61386356, -30361124, 40002252, 11003169, 153135984, 158792464, 118672632, 155196496, 160953904, 148202144, -105568688, 97850632, 106633840, 45268956, -4508105, -61349312, -98553392, -134919952, -132706440, -196864656, --119482232, -74590160, -60099476, -84480400, -43867184, -7224672, -63567128, -46082316, -51103668, -5851356, --28695750, -4700305, -40043052, -15179488, 31949724, 35822712, 13888850, 402653, 35181152, 32877974, --61394948, 24008868, 52830784, 111040472, 81126560, 106932872, 47174312, 50046568, 167843024, 99145024, -172128864, 68340984, 162600480, 120288072, 143822880, 195829040, 181568672, 155182000, 167029664, 190645552, -200246400, 179790016, 198315280, 147091360, 201686288, 173010416, 148262800, 166259264, 92603792, 184319056, -91319056, 71124120, -48287780, 21985400, -95662344, -107075144, -115826144, -3383897, 0, 0, -0, 0, 0, }, +-3688303, -1811939, -4158065, 384400, -4757750, 141734, 2228551, 1487132, -693100, -3057480, +2359548, 3493419, 202937, -1853278, -1523103, -1205275, -2942590, 1131724, 665183, 818728, +2069637, 4105452, 4027606, 979253, 3172370, 1658394, -1734093, 867583, 1382443, -275952, +499290, 465467, -446677, 2117956, -139050, 3839164, 3338800, -3635153, 2774012, 623307, +2270427, 445603, -366146, 95026, 6896107, 196495, 2267206, 558346, 1948841, 2699924, +544387, -1862942, 4030290, -5218386, -449898, 1494649, 4357781, 1412507, -661425, 3718905, +-404264, -3114388, 1017370, 1066226, 711891, -653372, 427886, -378494, -2338610, 723165, +-956704, -1605244, 1811403, -2806224, 2375117, -5189394, -13831405, -1182190, -2191507, -1902671, +230318, -2318209, 890669, 1352378, 5705864, -1919314, -195958, -5235029, 420907, 5266167, +403727, 3810173, -1082869, 1605781, -2156611, -3294240, 155693, 3631395, -417149, -4513474, +-137439, 4408247, 1482301, -1855963, -1511829, -179852, -546535, -995896, 112206, -709207, +-1447941, -156766, 964757, 652298, -134755, -3409667, 5199595, 7036230, 294205, 861141, +-2754148, -1555315, 627065, -3598646, -3977677, 2476049, -3217468, 2449742, 3175592, 3147137, +1232119, -408559, 907849, 705448, 2400887, -4966593, 498753, -592706, -3599720, -4897874, +193274, 2514167, -1851131, -234613, -562104, -347355, 3466039, 1685238, 385473, 1224066, +-1347009, -12506945, -3179350, 5121749, -947040, -3725347, 1410360, -9230422, -3884798, -1182190, +-1960116, -4689031, -5405217, 2960306, 4006668, 3848291, -5076652, -6910603, 534187, -3975529, +-7836705, 1903744, -753767, 2311766, 8229694, -2632815, -1175210, -5206574, 7068980, 729608, +3385508, 2691334, 5748814, 3223910, 1579474, -5834176, -967978, -5355824, -1809792, 385473, +-2605972, 1990181, 1265405, -2467996, -5409512, 3386045, 5024038, 1624571, -2842732, -3825742, +-2757369, 1377074, -4753992, -5520644, -1916629, 2881386, -1873680, 1460826, 3213173, 2311229, +-2956011, 5192616, 126165, 4417911, -3997541, -3046743, -2129767, -2137283, 2696703, -1726040, +-178778, 5137855, 1471026, 55835, -5285494, 1218160, -2365990, 3400540, -2513093, 3187940, +4596689, 1733556, -2746095, 1873680, -1251446, 1262720, 8558259, 5127654, -7102802, 4753455, +-3882651, -2065342, -978716, 19327, 3663607, 5906, 9978820, 2732136, -3762928, -2646237, +-2428267, 6841883, 1685775, 6577206, 2246805, 4370129, 7059853, 7886097, 3097208, -1087701, +-775778, 1030255, -6429029, -6201933, 1946157, -4763119, 2617246, 1035087, -1522029, -892816, +1917703, 6493991, -2178622, -2523830, -3431679, 8339753, -1134408, -10972568, -5313412, -4518843, +-3862249, 4141422, 4293357, 3443490, 5646272, 2174864, 3565897, -480499, -266825, -497679, +5715528, 1474248, 3409130, -7828652, 621160, -48318, 573915, 78920, 3464965, 1837172, +1237488, -4072166, -3171297, 18506478, 4529043, 2528125, -1901597, -1654099, 2229088, 974958, +5431523, 6309307, 98247, 9453223, 4313758, -3799436, -2826625, -591632, 5098126, -896574, +-2144799, 4842039, 1144609, 13785771, 4118874, 2453500, 1005022, -1708860, 1091995, 1793686, +3169149, -986769, 461709, 7235410, 1497333, 7998840, -3757023, -4360466, 3198677, 12182138, +4080219, 2675765, -632434, -5774047, -1670742, 1337882, 836982, -484258, 929324, -8055211, +1021129, -3752191, 3563212, 2053531, -2546379, 1390496, 3196530, 1426466, -3106335, -4107063, +1401233, 906775, 539555, -5191005, 1788317, -2293513, 3616363, -898185, 1167694, 1456531, +-143345, 547608, -1084479, -59593, 11654931, 572841, 4605816, -701153, -2226404, 642098, +1447404, -237297, 2610266, -4005594, -896038, 4374424, -2324651, -6419903, -233002, 10952167, +-950262, 8619999, 4141959, 11870216, 1196685, 1210644, 4044249, -3196530, -7248831, -9113384, +1918777, -4596152, 10572062, 6288369, 7381438, -1351304, -3471407, 1040993, 1420560, 3658775, +9833328, 1286880, 3904125, -4569309, 2895882, -3230352, 1036698, -1721745, 2975876, 5852430, +405874, 5586142, 1640678, 2807835, -2017561, -1318018, 6991133, -1717987, -2303713, 5596880, +-3810710, -316754, 311922, -2457258, -3752728, 2456721, -4251481, -738734, -5304822, -10171019, +-1717450, -1585917, -873489, -10614475, -4669167, -3285650, -3400540, 3901978, 9713605, -2723009, +2631741, 5373541, -2233920, 977642, 252866, 648003, -4240744, 4479651, -13898514, 1373853, +7169911, 4060355, -7889855, -401043, 155693, 1988033, 2607582, -271657, -6199249, -5566815, +671089, 9874667, 4394826, 5916855, 9546639, -6463926, 6742025, 13049184, -1426466, 3049964, +-7562901, 2649995, 2390149, -6146635, -3636764, -1227824, 2710124, -6221797, -8638790, 1721208, +645319, -7067906, 290447, 2376191, -1753420, 15397458, -1165547, -10737418, -1040456, 3838090, +8305393, 3264175, 3550327, -6867653, 1604170, 2269353, -6517076, -338766, -1378685, 10679973, +6174016, -1709934, -3974455, -8180839, 3218004, 3335579, -5184026, -137976, 1647120, 3238942, +2986613, -4177930, -427886, -912144, 9665287, -8380555, 750009, -2195802, 8723615, -663572, +-2389076, -3776350, 1049583, -3846143, -8650601, 5036386, 4933307, 1500017, -3287798, 806917, +2477659, 15895674, 10872173, 7830799, 11527155, 4420058, -747861, 1460826, 4420595, -11544335, +6093485, 30602, 6541235, -4728759, -2067490, -7474317, 2355253, 12829604, -12389370, -8150774, +-13179644, 6720013, -2779918, 333397, -5829345, 704375, -1977296, -6209986, 2658585, 2937758, +-9246528, -1364726, 2066416, -2156611, 5398237, -13915694, -6368363, 14179298, 1787780, -257161, +-1031866, 507880, -6830609, -7639673, 846645, -11110007, -2167885, 1173600, 3401614, -4726612, +-676994, 13917842, -456877, 4955319, 10738492, -9473624, -2881386, 2386391, 2894271, 1998234, +-2485176, -6686191, 8303246, -685584, -6898255, 5566278, -959388, 1448478, 2265059, -3794067, +-2524904, -1653562, -26331908, -15188615, 12419435, -4977867, -5290326, 6979322, 6752763, -11710228, +-14986215, -5230734, -5070209, -6072010, -589484, -10863046, -7170448, 3630858, 904091, -14489609, +-15213311, -9023189, -3788161, -992674, 8587787, -759672, -5318244, 4258997, -12517145, 253940, +-27380, 436476, 5171678, 2411087, -8916352, -7250442, 6356552, 1949378, 21926344, 5188858, +-6412923, 955630, 1382443, 235686, 6326487, 1121523, 3075734, -2108292, -3925600, 1499481, +-11461657, -2136209, -4538707, -6280316, 2229625, -9497783, 12186970, -1170916, 5610838, 8465381, +3304977, 4721780, 397821, -4766340, 737661, -79457, -5551782, 9234717, -2492155, 16027744, +581968, 728534, 1833951, -2563022, -7034083, 4408247, -5246840, 210990, 9738838, 6372658, +18834506, -10108742, 8460549, 4816806, 6048925, -1882806, -11754789, 2455648, -3816615, -9163313, +19396610, -542240, -6687801, -19224810, 11329050, 4308926, -1271310, -6648610, -9761387, 1087701, +19635516, 8558259, -1903744, -1207960, -10004589, -6411313, 4845797, 3463891, -8107825, -4085051, +6052683, 2607045, -1497870, 7005092, 8341900, 2288144, 11378979, 15097884, 7419019, -2533494, +1855426, 1932735, 1032940, 8229694, -11977590, 11919608, -2167885, -4929549, -10040560, 796716, +5856725, 5879274, -11674795, 2970507, 6458020, 1979443, -8975945, -15113453, -16110959, 4564477, +4634807, 1845225, -7419556, 45097, 9615358, -4472135, -10714333, -15899432, -369904, 4160750, +-14798310, 5680094, 9993315, -4605816, 6932614, 4380330, 23157390, 16411607, 2822331, -4093641, +-3326989, -2669322, -17188460, -5975910, -1018981, 11108933, -8363912, -3598109, -4369593, 781684, +16412681, -12845710, -4479651, -177704, 7209640, -2260227, -10841034, -16078747, 5003100, -10965052, +-6212134, -6667400, -8727910, 2906619, -14012331, -5867999, 10513006, 17714056, -255014, -10406706, +-10716480, 16330003, -2877628, -8266202, 15518791, 864362, -125091, 1028108, -19325206, 7689065, +-7931194, 6878927, 4861903, -12082280, -2617246, -12284143, 3555159, -11930882, -3414499, 5266167, +5512054, -3901978, 2759517, -14603426, 8655433, -1048509, 5379984, 5876589, 2603824, -3229279, +-4745402, 14698452, -11886859, 7289633, -4303021, -12506408, -9434969, -799938, 11228118, -7355669, +4189741, 2675228, -5660230, 6155225, -1511829, -3048890, 10009421, 1054415, -5531381, -14934675, +-138513, -19203336, 3794604, 858993, 9623948, -8164196, -1169305, 3963181, 4554276, 4423280, +-11917461, 16788490, 13059385, 1429687, 9782325, -5068062, -17261474, 3279745, -6986838, -9264244, +8858907, 19488414, 4045859, -6625524, -6965363, -17413408, 469225, -272194, 25640954, -10990821, +4832, -336081, -383863, -16318191, -16782584, 12418361, 880468, 6523519, -1878511, -20650202, +-10877542, 281320, -2961380, -5422933, -5279589, 11347304, -2439005, 6838662, -8685498, 16225313, +-20708722, 8801999, 11020349, 4840965, 5889474, 3520800, 16676284, 6670084, -1085016, 1564979, +234076, 14209899, 24672976, -5195300, 2113661, -9908490, 10575820, 13266080, -10468446, -1080721, +-21045876, -2687576, -26805428, -13190918, 10056666, -10438381, -23857470, 2583960, -13009993, 993211, +140123, -14666240, -14641544, 6910603, 13554380, 4614406, -16381542, 8148090, -18378702, -5896990, +-6926709, 6131603, -7683160, -2921652, 8477729, 1967095, -6172942, -12406013, 13455059, 13733695, +17023102, 2750927, -2079838, 1120987, 5365488, -781147, 6925635, -7234873, 9165997, -3117073, +10595684, 9113921, 6381248, -2556043, 396211, -16070694, 5634460, -3623879, 12506945, 2843268, +-29044180, 5039071, 14385456, 19851876, -11000485, -14566918, 18250390, 8811125, 12905840, -22127134, +11428908, 28999082, 30190936, 2467459, 1016297, 17578764, -11422466, -15209016, 10515154, -16955994, +7082938, -7775502, -6153615, -3739306, -36550172, -22006876, -16607028, -4265977, -16076599, -29395294, +22355842, 2892661, 7174743, -3377992, 15685757, 923418, -14303852, 11173357, 3847754, -4398584, +-8831527, -6041945, 1558536, 4387846, 13836237, -7677254, 10751914, 4066260, 19943144, -28848222, +-8367133, -4169340, 3282429, 12451647, 16881368, 4421132, -14600204, 10000831, 13181792, 11976516, +-3701725, 4481262, 348429, -4355097, -2447595, 1291175, 3954054, 2045478, 9642738, 2114198, +-13204340, 12351789, -13664438, -16442745, 2188286, 12625593, -6356015, -3965329, 4028679, 6355478, +10130754, -5622112, 4622996, 24121074, -9816148, -24901146, -32999308, -16212428, -22414898, 10336376, +19018652, 12520903, 4555350, 11724187, 6733972, 12849468, -10909754, 14382235, 7661148, 5582384, +15320685, 18881750, -5990406, 29911762, 2910377, 4696010, -6180458, 10878615, -34182036, -15084999, +-23340462, -24106578, 9641665, -21022254, 20773684, 23625542, 1109175, 5176510, -3546032, 4390531, +-22290344, 9287867, 24866250, -14008573, -28708636, 3926674, -10723460, -9061307, -27987080, 5011153, +10449119, 48318, -3681324, 9214852, -15891916, -2478196, 10572062, -5540508, -14059575, 1950452, +-6940131, 14937896, -9575093, -5125507, 13910862, 12234751, 25554518, 3693135, 6289980, -1976759, +6976101, 9440338, 15842524, -4090420, -368293, -9277129, 20835960, -25564720, 28151364, 1579474, +-11068668, 13779329, -10109816, -6777459, 25820270, -36397164, 6062347, -6918656, 7201050, -13356275, +6768869, 16042777, -7987566, 198105, -4525822, -4154844, -4366908, 30270930, -33194728, -5609228, +36696736, -14598594, -23267448, 2524367, -8994198, -7488276, -13214004, -15905338, 20167556, 9104794, +1029718, 9910100, 23946590, 14631343, -1919314, 5270999, 16022375, 21109228, -18687940, 8956081, +17144972, 7920457, 6133750, 24348170, 11329587, 5374615, -955630, 11172821, -1424855, 12602508, +9881646, 5921686, -11435887, 21628382, -17637820, -1759863, 26373784, 26698054, -6431714, -22834730, +8596914, 108448, 22629108, 39699456, 8616241, -5507759, 2638721, -21981642, -2779918, -5401458, +-4945655, 1023276, 19921132, -7985955, 8731669, 24720222, 4031901, -21598316, 14702210, -412317, +9360344, 23411330, 31875100, -8137353, -8412767, -1795833, -25172804, -35915052, 1121523, -15620259, +-2560874, -18988588, -1866163, 2356327, 3099356, 17406428, 2684, -6190122, 25182466, -47042776, +25982942, -19931332, -45969036, -13882408, -11424613, -1843078, -10438381, 5399848, -12555263, -28815472, +-17062832, -8761196, -2389076, 3073049, -11555610, 11305965, 22646288, 621160, -1180579, 5931350, +1608465, -4401805, -8090645, -4918275, 6300180, 6434935, -1755031, 6099391, 27778774, 7333657, +-7816304, -27585502, -4127464, 19029390, -23270670, -11343545, -8720394, -25233, -1564442, 14498736, +-4666482, 1423245, 20633022, 6904697, 22857280, -3602941, -10486163, -5363878, -5618891, -6372658, +11096048, 629750, 7537668, 13181255, -24146844, 2866891, -6336151, -15901043, -11353746, 22795002, +17061220, -201327, -11679090, 3534758, 9802189, -483721, 6564858, -18187040, -40857488, -21099026, +-15691126, 11391327, -108448, -7019587, 13771276, -18731426, 22468584, -2033667, -34890704, 6914898, +-16702054, -3769371, -2313377, -4424890, -22148072, 6768869, 1387811, 17457432, -38044284, 340913, +19063750, 1988570, -8884140, -19645180, -1321239, 10812043, 16687559, -14008573, -4726612, 8617315, +19024020, 16930224, -16494285, -3700114, -26840862, 12262132, 13803488, 8165807, -7587597, -2423435, +-7258495, -3183108, -8930311, 2279017, 19711216, -7609072, -7733089, -7067906, -11169062, 22017612, +19152870, -2185065, 26953604, -1530619, 9489193, -24160802, 19430432, 8425652, -27058830, -8946417, +30451854, 12501576, 7971460, 5768141, -14908905, -11563663, -16063178, 26577258, -14499273, 20592220, +20460150, -24097450, 54883776, -11705396, 33283312, 2100239, -9828496, -13904420, 23173496, 12238509, +-25979720, -3645890, 13459354, 22957138, 1889786, -19447076, 9289477, -37485936, -10013179, -34120292, +-47046536, 1329292, -18216030, 5710696, -3706020, -7730405, -18124762, -12706661, 10167261, 27763206, +-23912230, -5588826, -40977748, -36197448, 9341554, 13618268, -22798224, -24019068, 882616, 4397510, +-38315940, 1178432, 111132, 18689550, -17666812, -214212, 15417859, -11602317, -20492900, -23040352, +-11550241, -21179558, -17414482, -22133578, 28165858, -38501160, -24210730, 32204202, -2316061, 7985955, +-29461328, -6499360, -9434433, -937377, 45881524, -8494372, -2540473, 2803540, 20480552, -1464584, +-22835268, -11392401, -17118666, 2902324, 54563264, 8717173, -22311818, 40315248, 28331752, -29948806, +29025926, 49683108, -2742337, -22982370, 31839130, -8584029, 32742146, 32149978, 24252070, -64873872, +-42591044, -41345504, -17046726, -26764088, 33967824, 15978352, 27493160, -2049773, -59301152, -6357089, +7195144, 41744936, -3686693, 11558831, 34100968, -11076184, -28184112, 5140539, -3752191, 48161080, +27741194, -12408697, -22691386, 51049444, 1476395, 26829050, 9788767, 47835736, 37207840, 32741072, +1313186, -22950158, -15771120, -16898548, 35991288, -15524696, -27672474, -11447162, -417686, 1596117, +14959371, -13743895, 4266513, -74176768, 6909529, 14658723, 10948409, -29417304, -31478352, 11944304, +25446070, -30412126, 11317239, -16074452, -16286516, -19468550, -3539590, 26479010, -17336636, 28835336, +-8058433, 13066364, -49328236, -27900644, -2529736, 28419262, 16585553, -31879394, -38661148, -14398878, +2698313, 43056512, 16077673, -94489, -26196616, -5927592, 11465952, 87300040, 8409546, -45814952, +-104562056, -8871255, 61527552, 16164646, 26737246, -2179159, 37423124, -5608154, 16412144, -7951058, +21243982, 30873298, 16023449, -13694503, -34353832, 41429256, 46089296, -9354976, -45342508, -26657252, +5004711, 27618788, 9122511, 10677826, 2069101, 8015483, 3498251, 8020315, -8419747, -51352776, +303332, 34069828, 25766582, -8840116, 3318399, 21689584, 44824428, 28701118, 22524956, -24105504, +-17008070, -2534031, -3573413, -37313604, 29166586, 18634252, 30387430, 61303680, -28766080, -17118666, +-928787, -13860396, -12202539, -23139136, 48002164, -24909736, -27497992, -27727236, -7987029, 61821760, +18070002, 26394722, 2287070, -969052, -9445707, 40715752, 34231964, -10228465, -28221156, 17150878, +3351685, 1184874, -28027346, 5264556, 63607928, 54318452, 5090073, 7007239, -39060044, -66516160, +-63817308, -26657788, 47130824, 57880052, 53935664, 34692600, -11140071, -32877974, -36194228, -18622978, +11515881, 25524454, 36104032, 6956774, -32285806, -21570400, -8172249, -21561810, -14354318, 9023189, +37563248, 61006788, 34541736, 21405580, 13650480, -32236950, -6883759, -68513320, -83456584, -46755552, +-26988500, -18230526, 35207996, 63270772, 63045288, 63483912, 48816060, 25560960, 904628, -20421496, +-9383967, -35449588, -73423000, -1205812, 4053912, 11710765, 20973400, 19022948, 21306260, -74179992, +-45949172, -22963580, -48578764, -13853954, 31420906, -14362371, 20250234, 9460739, -23713588, 23606750, +-20397874, 26193394, 19054622, -9111236, -37546068, -61729956, -72327248, -39911520, 10897406, -118135224, +-61386356, -30361124, 40002252, 11003169, 153135984, 158792464, 118672632, 155196496, 160953904, 148202144, +105568688, 97850632, 106633840, 45268956, -4508105, -61349312, -98553392, -134919952, -132706440, -196864656, +-119482232, -74590160, -60099476, -84480400, -43867184, -7224672, -63567128, -46082316, -51103668, -5851356, +-28695750, -4700305, -40043052, -15179488, 31949724, 35822712, 13888850, 402653, 35181152, 32877974, +-61394948, 24008868, 52830784, 111040472, 81126560, 106932872, 47174312, 50046568, 167843024, 99145024, +172128864, 68340984, 162600480, 120288072, 143822880, 195829040, 181568672, 155182000, 167029664, 190645552, +200246400, 179790016, 198315280, 147091360, 201686288, 173010416, 148262800, 166259264, 92603792, 184319056, +91319056, 71124120, -48287780, 21985400, -95662344, -107075144, -115826144, -3383897, 0, 0, +0, 0, 0, }, { 15113453, --1633698, -2529736, 694174, 1110786, 4139812, -1085016, -2465311, -4063039, 4425964, 384400, -1467805, 4436165, 1223529, -699006, 1129576, 2338073, 1537598, -2365453, 5131949, 536871, --6700149, -1268089, 4452808, 1720671, 485868, -2434173, -1402307, 2183991, -816044, 8834748, --1593433, 2013803, 346282, 805843, -4951561, -1691143, -1029182, 1817308, -663572, 1092532, --2844879, -1573032, 1886564, 2798171, 1957968, 3325915, 3411278, 2185602, -3005403, -4722317, -593779, 2790655, 3081639, 2320893, -1652489, -2074469, -7317014, 3772592, -1742146, -2819109, --473520, -1253594, 1475321, -3479461, 1503239, -4404489, 1876364, -4182761, 3798899, -1668595, -3176665, -807991, -527744, -4976794, -453656, -7773891, -15089831, -2759517, 307090, -3581466, --7044283, -2458332, 5346698, -8506183, -4537633, -2880849, -1538672, 2573759, -1091459, 2877628, -1470489, 2509335, -179315, 3129958, -2700998, 431644, -1121523, 517544, 8223789, -1817845, --385473, -4110821, 5128191, 3022583, 2527588, 6167036, -3082176, -1905892, 2256469, 5514201, --1393717, -459562, -4403415, -5039071, -3194919, 3453154, -4278861, -3854196, -357019, 4955856, --6699075, -1531693, -5577552, -2843268, -1511292, 704912, -395674, -4161823, 5352066, 816581, -4825933, -1980517, -1082869, -5944772, -19864, -2131915, -2112050, 3311420, 1995549, -1120450, -1903207, 3677029, -1000191, 1546725, -2640868, -1602560, -649077, -2569464, 2173254, 778463, -1483374, -12412455, -4581657, 3688840, -3404299, -1400159, -1497870, 1782948, -738198, -3214783, -5102958, 4737886, 1448478, -505196, 2303176, -6342056, -1053341, -6269042, -3312494, 4752382, --900869, 906238, -763967, -658204, -20938, 9858561, 8832600, 4070019, 4649839, 5735929, --1234266, -590558, -2097555, 5065914, -637266, -1839320, 1252520, -2857227, 1840930, 3659312, --2007897, 4117263, 4415227, 9007083, -3682398, -4168803, 3645890, -2259153, -68183, 1940788, --5410048, 368293, -2939368, -2996814, 6667937, 4110821, 4721243, -2777233, -4001836, 2693481, --4635881, 3129958, 13005161, 830539, 581968, 3080565, 931471, 1334661, 7159174, -3920768, --1509681, 1563905, 409633, -3529926, -3508452, -3468723, -2874407, -615254, -3712462, 4012036, -6310381, -3007551, 3088618, 10081362, 3279208, 2341294, -7096360, 5856725, 1445793, -8991514, -3742527, -2499134, -5510980, 2215666, -847182, 2132988, 5149666, -5486284, -5889474, -2554969, -7770133, 238908, 3801046, 8165807, -12233677, -9768903, 1478006, 5980205, -4498442, 388695, -7973607, 2085207, -1168768, -2440078, 9557376, 1174674, -2489471, 1340030, -8922258, 978179, --4986457, 4449586, 636729, 4721780, -2546916, -1230508, 1989644, 97711, 457414, 220654, -4385162, 3609920, -5190468, 2793876, 3839164, -6951942, 607201, -3190087, 1061931, -1683090, --5557688, -37581, 4307316, 3837017, 8533563, -5634997, 6504191, -4713190, -1290638, 3834869, --4860829, -6861211, -2859375, 20041392, 9178345, 12083890, -858993, -3522947, -4279935, -4565014, -2530273, -3860639, 5750961, -789737, 7843147, 311385, 4203699, 4911295, 4036196, 3192771, -4559645, -15155866, -4319127, -1580548, -3048353, -2949569, -4609037, -10857677, 588411, 7130183, --4396436, 4201552, -3511136, -5524939, -3918084, 405338, -3291556, -1468879, -3379066, -456877, -8924405, 248571, 4066797, 5347235, 7354058, -3645890, 1799591, -1869921, -5497022, 6099928, --3455301, -527744, -5437429, 3770445, 51540, -201863, -1421097, -2888903, 1989107, 5352603, --2263985, 2852932, 3157875, 2176475, 9904731, -10227391, -4000762, -196495, -5236102, -7490423, --2573759, -9115531, 1546188, 9458592, -6599218, -4017942, -7424388, -342524, -1603097, -4742181, --4812511, -584116, 6470368, 8751533, -4749697, 4461934, -3833795, -2157147, -1389959, -11286100, -8286066, -2538863, -955093, 12614319, 8194798, 8373039, -3240553, 147640, 1772748, -2149094, -3100967, -6702297, 84826, -4638028, 5491653, -5247913, -3227131, -699006, 1171452, -6434398, -1495722, 504659, 8535174, -98784, -10952703, 6331856, 6393059, 8506720, -1051730, 2028835, --5891622, -4844723, -1619740, -4705137, 2147484, 1046361, -1329292, -827318, 5095442, 7195681, --9644886, -2310156, 411243, -4256850, -3856344, 6500970, -4889284, 2370285, -4767951, -7082401, --4670777, -3565360, 2930242, 843961, 12986370, -2232309, -2733210, 3576097, -3086471, -1215476, --2615635, 3343632, -2306934, 4349728, -1403917, -2173254, 3969087, 6934225, -15254113, 14665703, -8145406, -9035001, -8754754, 3483755, 11960947, -348966, 3634079, 13544179, 4778688, 3952981, --2142652, 6973953, 6713034, 7355669, -13407277, -8521215, -8065949, 6328635, 5788006, 6977711, -515933, -8470212, 3582003, -1436667, 3922916, -12097849, 4776541, 7042136, -5422396, 2943663, -6009733, 1456531, -9664, 1072131, -1710471, 10253161, 7251516, 5400922, 366683, 3442953, -8207683, -7374459, -3717831, 168041, 10794863, 6623914, 4330938, -8215199, 430034, 5255966, -6485401, -2440615, 2087891, 6002217, 7796977, 2210298, 7203197, 2593087, -722091, -6809671, -8590, -11198053, -4457639, -5538361, 896038, 3271155, -6408091, -2957622, -11722039, 4546760, --3508452, -724239, 5564130, 7954817, 9414568, 2218888, 12882218, 4290136, -2414309, -5738077, --15693810, -7323993, 9307194, -3134789, -14445049, -3608846, -2455111, 2375117, 7685307, 12238509, --903017, 3743064, -2958696, 6199249, -6923488, -6955163, -7908646, -13482976, 7097971, 4367445, --11648488, 555661, -8570070, -2980707, 7147363, 4382478, 5785321, -1483911, -1823751, -1751273, -12752832, 10335302, 10471130, -4660040, -9433896, 7475391, -1507534, -3024731, 8961986, 1876364, -8802535, -54761, 4781373, -6150930, -650151, 4820027, -19826642, -2687039, 595927, -14011257, -3345243, -3365644, 12947179, 8776766, -8554501, 941135, 11752104, -950262, 5764920, -3758097, -7905424, -3542274, 1169305, -2863133, -304406, 6235219, -8462696, 8931921, 3809099, 5222680, -753767, 10964515, -31454730, -6573448, 16818018, -13512504, -4936528, 14420890, 5403069, -4410395, -1545651, -11702175, 10625749, -1173063, -19030464, 1555852, -909996, 7429220, 7199439, -3566970, --14829985, -6162741, -5558225, 587874, -7802345, -4093641, -9975598, -2612414, 11312944, -8774081, --4328790, -3144990, -5653788, -5874979, -8195872, 6202470, 1498407, 7640210, 1608465, -4866198, --7853348, -7641284, -1269700, 5916855, 8415988, -2281702, -6808060, 8207683, 3677029, -10837276, --12212203, -25355876, -1727651, -7631620, -4413079, 4565550, 4604205, 3134789, 12375411, -413927, --4826470, 153008, -5204427, 14231374, 7943542, -1604170, 8050916, -6425808, 4745939, 4228396, --6220724, -1931125, -5361193, 6141267, 4625680, -10422275, 9404905, 14212047, 319438, 6449431, -19986094, -8885214, 7065221, -4260608, -906775, 12782896, -4309463, -4483409, -3685619, -280247, -1225676, 8947491, 26569204, -686658, 768262, 8437463, 882616, 945430, -13744432, -12548284, -1147293, 2638721, -9314710, -3477850, -2863670, 8411693, -4309463, 2278480, -1121523, 4120484, --4394289, 16824460, 7932268, -6693707, 7834557, 8776229, -10692321, 2486249, 3120294, 3999688, --3721589, -2498060, 12307766, -10901164, 3885872, 15553687, -6230387, 2626373, 8357470, -243739, -7096360, 5320928, -1040456, 5319317, 5861020, 10516764, 4866735, 1596654, -1650878, -5884642, --8766028, 1102733, -599685, -22461068, 13705241, -2722473, -8828305, -7221451, -18854906, -18394272, --14515379, 3282966, 7248831, -2526515, -1728188, -595927, 27845346, 28665148, -1188095, -23117124, -4172561, 5108327, -3121368, 6430640, 3072512, 2319819, -742493, -3714073, 22389128, 4466766, --4201015, -25276956, -14875082, 6220724, -2152852, -8684424, -15882789, 2299955, 1970853, 4071092, --4460861, -16637093, -18560164, 19487340, 17638356, 5808944, 16109349, -14341433, 1186485, 7587597, --3842922, -9115531, -17267380, -8128226, 2019708, -725850, -8632347, 7874286, -820876, 7613904, -5222680, 319975, -18728204, -10402948, -9431748, -1595044, 627065, 2132451, -4261145, -5235565, --118112, 2575907, -17208860, -4294968, 1067299, 3189013, -8794482, -20164872, -6364605, -5432597, -12682502, -1096827, 4478041, -7206419, -7323456, -9531069, -12484396, -6585259, -1402307, -1681480, -8664023, -8420283, -2525441, -5384815, 6208375, -4382478, 13399224, -7416872, 3269007, -5857262, -2078764, 2129230, -6594923, -6325950, -12657805, -16351477, -8872866, -5018133, 455803, -712428, --7279433, -8916889, -14649597, 6515466, -14675366, -21501680, 14369887, -13331042, -14369887, 13401909, -3966402, -4375498, 16779900, 7871602, -10851235, 10064182, -29570312, -3200825, -6656126, -4413079, --13209709, 24232206, 13173202, -8566312, 5037997, 6846178, -3976066, 7667054, 1487132, -777926, --5870147, 7386807, 11275900, 12149926, -19479288, -1940788, 1314260, 4959614, -7988103, -4867809, --8120173, -10755135, 18189186, 4080219, -10831371, 5100811, -6027987, -9505299, -11629161, -25651692, -8165807, 14695231, 3010772, 14826227, 24019068, -2595234, -6743636, -21937620, 4192425, -3299072, --17152488, 1921461, -38797512, -26796300, -18447958, 9802189, 19924354, -28185722, 6906308, 19266150, -12629351, -693637, 7683697, 18149994, -8038568, -1513976, -4912369, 146566, -11557220, 8176007, -688269, 619549, 3686693, 24485072, -731755, -11364483, -10152229, 5543192, 18862422, -7781944, --17990544, 5123359, 19156092, 10468446, -1925219, 8644695, 6692096, 8315594, 2542084, 6985765, -13232257, -1954210, -20616916, 683974, 7213935, -20305532, -13866839, 19100256, 15988016, -15438260, --9138617, 4362613, -264141, 9153649, 24471114, -5510443, -3785477, 4076461, -390305, 8325257, -5256503, -9112310, -5871221, -3766686, 7905424, 5753646, -5287105, -17794586, -1945083, -26565984, -25616258, 3240016, -3243237, 1145683, 11451457, -2388539, -10073309, -4803384, -1575716, -15209553, --654983, 2559801, -18600430, -4963909, 13945222, 18080738, 12821014, 33805688, 20402706, 30605400, -11402601, 7951595, -15964930, 17083770, -5905580, -2127083, -12828530, -8671002, 16542603, -5681168, -37664716, 17345226, 10759430, -2286533, 8579734, -6234145, -17820356, -9232569, -11137924, 7636989, --10524280, -587874, -11258720, 6091874, 15161771, 13479755, -1140851, 19647864, 16535624, 330176, --6083821, -8152922, -14006962, -5243082, 31395138, 11731166, 36175436, -12320114, -76773, -1847910, -8235063, 28594818, 9761924, 14496, 18548354, 20813948, 22513144, -2836826, -13670344, -5769215, --3914326, -4764730, 14916958, 9346386, 14194330, 20820390, -13682692, 31918050, -22162568, -42933568, --6276558, -14529337, 8869644, 19144816, 32694364, -16531329, -12008192, 11009612, -9009768, -2261837, --3908420, 3833795, 14655502, 14663555, 22950694, -24932286, 28174448, -10365367, 3047279, -13118441, -12023761, 20480552, 9076340, 3508988, 1998234, 25084220, 6810745, -1138703, -7814693, -4145180, --25509422, -3764002, -12076911, -31625992, 3317862, -2060511, 13492103, -32859722, -5728950, 7577933, -12814572, 27183922, -6753836, 7912941, 15644955, 2263448, -2986613, 7765301, -6394670, -1754494, --39986684, 3745212, -16462073, -20268488, -21799106, 9481677, -35543000, 12394739, -12551505, -18012020, --23671176, 22981834, 25852482, 24555938, 6586869, 4990215, 24584930, -30880278, -930934, -8980240, -15129022, -36643052, -10342818, -2966212, 14861124, 10471667, 10945724, 15967615, -10252624, 5651640, --10739029, -29021630, -1141924, -9951976, 34495568, 7961259, 24261734, -7455527, 33349884, -20587926, --40371620, 9721658, 6310918, 5296232, -20245402, -21814138, -18078054, 7424925, -18169322, 8666170, --9763534, 27438936, -8941048, -3126199, 18933826, 1512365, -47925392, -18887656, -795106, 32432372, --3719979, -8856759, -27429808, 5792301, -6767795, -22477712, -27856084, -2127620, 5196911, -8461086, --10479183, -26734560, 18476950, -5710159, 6828461, -12642773, 936840, 9575093, 5447093, 25975426, -714038, -7097434, -31486942, -9865003, 16110422, -20444582, -10457172, 9663140, 18447422, 15360951, -36069136, 28493350, 1568737, 22114786, 22067542, 8977019, 2197950, 14204531, -8840116, 55188184, --22565758, -55537148, 17549774, -46612744, 725313, -35461396, 3251827, 50035296, 23487566, -34894460, --21047488, -15106474, -10440529, 12359842, 22417044, -13485124, 2854543, 17654464, -36453000, 1753957, -10433012, -29640106, 16410533, -10503879, 14708116, 3991635, 16413754, 707059, -16836272, 18363670, --22416508, -6075768, 48636748, -19979650, 19015968, -11871290, 21191906, 16894790, -4178466, -21174188, -23841364, 56168508, -29023242, 7536594, -39139500, 20384452, 14760729, -22810034, 27041114, 1930588, --47228536, 6774237, 4844723, 22340810, -3584150, -3740917, -23471996, -25513180, -10349797, 61780420, --6691559, 31374736, -24730422, 20697984, 13100724, -5586142, -18107046, -3743601, 20713016, 35108672, --9191230, -11256036, -78383, 7403450, 34125664, -6927246, -3053185, -21492554, 11374684, -32548872, --10116795, 25892748, 34988416, 5447093, 7211250, -34439732, 24910810, 19147502, -40375376, 1477469, --19887846, 127238, -44656924, 45044008, 44311176, -6890202, -18779744, -10131291, -5769215, 20551418, --20783346, 27277874, -36678484, -25561498, 14358613, 11511586, 6319508, 11045582, 40944460, 8376260, -20645370, 2145873, 21391084, 10408316, -5146982, 1312649, 18757196, -3511673, 2195265, 27756226, -17132088, 37206228, 52076, 20192252, 3837553, -31334470, 33512020, -17658758, 677531, 6815576, --23337242, -20864952, 14942728, 40845140, 27981712, 13342853, -50934556, -15117211, -34138012, -2517388, -67330592, 38896836, 52419540, 1684701, -40145596, 12305618, 52308944, 7946227, -5292474, 39664560, -11256572, 26207354, -63747516, -60058676, 50494320, -3593814, -10132365, -44777720, 379031, -14394046, -31027380, 21861384, 9682467, 15945603, -38615516, 21630530, 34923988, -219580, 13540421, -32060320, -25355876, -16117939, 13403519, -1761474, 2500208, 16515223, -3609920, 9692131, -1681480, -26533772, -8655970, -4689568, 28687698, 19860466, 35095788, 7701950, -22686018, -23971824, 23622856, 20488604, -13432510, -1372242, 9951439, -10095321, -18115098, -190589, -5158256, 25262998, 22793392, 13799730, -25565256, 19558208, -30063160, 31699542, 37955164, 21488258, -14849313, -20201378, -19917374, 26510148, -21170968, 46386184, -28327994, -36266168, -20848308, -51029580, -8603893, 43231532, 11246909, 32310502, --37511172, -50707996, 13491029, 20725902, -34274912, -1795833, -26049514, 3644817, -30269856, -12293270, -22594212, 7085086, -25419764, 372588, -16235513, -63424320, 9323300, 39062728, -1226750, -78683800, --16837882, -1178969, 275415, 28491740, -74698072, -7698729, 32639604, -53870700, 11398306, -11815992, -62566400, 34146064, -39909372, 10043781, 41625212, 4750771, -18234820, 14413910, 8977019, 5872294, --2178622, -4083977, 1851131, 7093676, 13137768, 44040056, 33640868, 38432976, 24595130, 48330192, -21806622, 49332532, 18530100, 43645996, -1348083, 26891328, 22507240, 26548266, 18565534, -2595771, -5872831, -34452616, -22432078, 63391568, -1577327, -26606786, -9663140, 19093814, 31270584, 67916856, --12002823, -39366060, -21913996, -29512868, 36503464, 43414604, 47472272, 13882408, -4933844, 32189706, --61244088, 50685984, 16648367, -30153892, -4033511, -92733712, -1535988, -62268972, -86595128, -23243826, --52696028, -23509040, 89358944, 84272088, 74320648, -21633750, 56481504, 69455528, -57583700, -52101712, -17289928, 60788820, 1128503, -27897960, -181999, 16816408, 17731772, -49504328, 18166102, -6195491, -25941066, -26927298, -13648869, -31607738, 33459942, -4060892, -15501074, -29446296, 21486110, 13646185, --5771899, -24704116, 11271605, 11995844, 5344013, -21641266, -3941706, -261456, 25194278, -18631568, --5585068, -27604828, -8411693, 10982768, 21826486, -28598040, -12401718, 32993402, 26045218, -6965900, --20417738, 1360968, -11115912, 28111098, -16582332, -6614787, 11265699, 11519639, 14491757, -12486544, -2741800, -17800492, 21128554, 29856466, 10765872, 6969658, -23893976, 27308476, -19954418, 40960028, --30577482, 33928096, -50874960, 36171676, 234076, 1887101, -37774776, -4619774, 5814312, -2275259, --2499134, -1524713, -12630962, 55407764, 58331560, -34177204, -20724290, 11953968, 55705724, 35119948, -20587388, 20410758, -9185324, -23077396, -7354595, 13515725, -460098, -5150740, 16452409, 668404, -11528766, 1831267, -6498286, -20593832, -5800354, -818728, 1329292, -409096, -17268990, 19475530, -2974802, -7216082, -622770, -124554, 87510, 12772696, 22408992, 10128070, 2127083, -7611219, --11827266, -2491618, 7211250, 15699179, 20273856, -10783589, -11317776, 3163244, 20542292, 9946607, -4562866, -8616778, -18695992, 16681653, -3248069, 1230508, 1170916, 5974837, 5070209, -1365800, --470299, -11213086, 2168959, 11818676, -4702989, 7599945, -3060701, -7376070, 6245956, -167504, -3970161, 1043677, 10710038, 8366060, -11973295, 6646462, 3745748, -21616570, -19639274, -72522672, -30721902, 112317688, 103244568, 88463976, 35081828, -83498456, -52515100, -75024488, -84443352, -75151192, --22042846, 16596827, 63520956, 66533340, 79271136, 52864068, 52960168, 1664300, -55736328, -52855480, --65612068, -50938848, -28549184, -1509681, -18364206, 20388210, 24653650, 40328668, 43862892, 44962404, -26599270, 2762201, 11899744, -9242770, 6459094, -29853244, -21948356, -27530204, -45802604, -35847408, --27740120, -19056770, -32442572, 5283884, 56150256, 63887100, 35576824, 66820028, 16752520, 39405788, -20255602, 12282533, -16070694, -34169688, -47678968, -66659504, -51311976, -76097160, -31238908, -33056752, -23133230, 23775866, 65812320, 76304928, 67755256, 61146376, 59515360, 38570952, 6681359, -17242146, --58684284, -34739844, -75764832, -62251792, -83965536, 5574868, 3627100, 11296301, 0, 0, -0, 0, 0, }, +-1633698, -2529736, 694174, 1110786, 4139812, -1085016, -2465311, -4063039, 4425964, 384400, +1467805, 4436165, 1223529, -699006, 1129576, 2338073, 1537598, -2365453, 5131949, 536871, +-6700149, -1268089, 4452808, 1720671, 485868, -2434173, -1402307, 2183991, -816044, 8834748, +-1593433, 2013803, 346282, 805843, -4951561, -1691143, -1029182, 1817308, -663572, 1092532, +-2844879, -1573032, 1886564, 2798171, 1957968, 3325915, 3411278, 2185602, -3005403, -4722317, +593779, 2790655, 3081639, 2320893, -1652489, -2074469, -7317014, 3772592, -1742146, -2819109, +-473520, -1253594, 1475321, -3479461, 1503239, -4404489, 1876364, -4182761, 3798899, -1668595, +3176665, -807991, -527744, -4976794, -453656, -7773891, -15089831, -2759517, 307090, -3581466, +-7044283, -2458332, 5346698, -8506183, -4537633, -2880849, -1538672, 2573759, -1091459, 2877628, +1470489, 2509335, -179315, 3129958, -2700998, 431644, -1121523, 517544, 8223789, -1817845, +-385473, -4110821, 5128191, 3022583, 2527588, 6167036, -3082176, -1905892, 2256469, 5514201, +-1393717, -459562, -4403415, -5039071, -3194919, 3453154, -4278861, -3854196, -357019, 4955856, +-6699075, -1531693, -5577552, -2843268, -1511292, 704912, -395674, -4161823, 5352066, 816581, +4825933, -1980517, -1082869, -5944772, -19864, -2131915, -2112050, 3311420, 1995549, -1120450, +1903207, 3677029, -1000191, 1546725, -2640868, -1602560, -649077, -2569464, 2173254, 778463, +1483374, -12412455, -4581657, 3688840, -3404299, -1400159, -1497870, 1782948, -738198, -3214783, +5102958, 4737886, 1448478, -505196, 2303176, -6342056, -1053341, -6269042, -3312494, 4752382, +-900869, 906238, -763967, -658204, -20938, 9858561, 8832600, 4070019, 4649839, 5735929, +-1234266, -590558, -2097555, 5065914, -637266, -1839320, 1252520, -2857227, 1840930, 3659312, +-2007897, 4117263, 4415227, 9007083, -3682398, -4168803, 3645890, -2259153, -68183, 1940788, +-5410048, 368293, -2939368, -2996814, 6667937, 4110821, 4721243, -2777233, -4001836, 2693481, +-4635881, 3129958, 13005161, 830539, 581968, 3080565, 931471, 1334661, 7159174, -3920768, +-1509681, 1563905, 409633, -3529926, -3508452, -3468723, -2874407, -615254, -3712462, 4012036, +6310381, -3007551, 3088618, 10081362, 3279208, 2341294, -7096360, 5856725, 1445793, -8991514, +3742527, -2499134, -5510980, 2215666, -847182, 2132988, 5149666, -5486284, -5889474, -2554969, +7770133, 238908, 3801046, 8165807, -12233677, -9768903, 1478006, 5980205, -4498442, 388695, +7973607, 2085207, -1168768, -2440078, 9557376, 1174674, -2489471, 1340030, -8922258, 978179, +-4986457, 4449586, 636729, 4721780, -2546916, -1230508, 1989644, 97711, 457414, 220654, +4385162, 3609920, -5190468, 2793876, 3839164, -6951942, 607201, -3190087, 1061931, -1683090, +-5557688, -37581, 4307316, 3837017, 8533563, -5634997, 6504191, -4713190, -1290638, 3834869, +-4860829, -6861211, -2859375, 20041392, 9178345, 12083890, -858993, -3522947, -4279935, -4565014, +2530273, -3860639, 5750961, -789737, 7843147, 311385, 4203699, 4911295, 4036196, 3192771, +4559645, -15155866, -4319127, -1580548, -3048353, -2949569, -4609037, -10857677, 588411, 7130183, +-4396436, 4201552, -3511136, -5524939, -3918084, 405338, -3291556, -1468879, -3379066, -456877, +8924405, 248571, 4066797, 5347235, 7354058, -3645890, 1799591, -1869921, -5497022, 6099928, +-3455301, -527744, -5437429, 3770445, 51540, -201863, -1421097, -2888903, 1989107, 5352603, +-2263985, 2852932, 3157875, 2176475, 9904731, -10227391, -4000762, -196495, -5236102, -7490423, +-2573759, -9115531, 1546188, 9458592, -6599218, -4017942, -7424388, -342524, -1603097, -4742181, +-4812511, -584116, 6470368, 8751533, -4749697, 4461934, -3833795, -2157147, -1389959, -11286100, +8286066, -2538863, -955093, 12614319, 8194798, 8373039, -3240553, 147640, 1772748, -2149094, +3100967, -6702297, 84826, -4638028, 5491653, -5247913, -3227131, -699006, 1171452, -6434398, +1495722, 504659, 8535174, -98784, -10952703, 6331856, 6393059, 8506720, -1051730, 2028835, +-5891622, -4844723, -1619740, -4705137, 2147484, 1046361, -1329292, -827318, 5095442, 7195681, +-9644886, -2310156, 411243, -4256850, -3856344, 6500970, -4889284, 2370285, -4767951, -7082401, +-4670777, -3565360, 2930242, 843961, 12986370, -2232309, -2733210, 3576097, -3086471, -1215476, +-2615635, 3343632, -2306934, 4349728, -1403917, -2173254, 3969087, 6934225, -15254113, 14665703, +8145406, -9035001, -8754754, 3483755, 11960947, -348966, 3634079, 13544179, 4778688, 3952981, +-2142652, 6973953, 6713034, 7355669, -13407277, -8521215, -8065949, 6328635, 5788006, 6977711, +515933, -8470212, 3582003, -1436667, 3922916, -12097849, 4776541, 7042136, -5422396, 2943663, +6009733, 1456531, -9664, 1072131, -1710471, 10253161, 7251516, 5400922, 366683, 3442953, +8207683, -7374459, -3717831, 168041, 10794863, 6623914, 4330938, -8215199, 430034, 5255966, +6485401, -2440615, 2087891, 6002217, 7796977, 2210298, 7203197, 2593087, -722091, -6809671, +8590, -11198053, -4457639, -5538361, 896038, 3271155, -6408091, -2957622, -11722039, 4546760, +-3508452, -724239, 5564130, 7954817, 9414568, 2218888, 12882218, 4290136, -2414309, -5738077, +-15693810, -7323993, 9307194, -3134789, -14445049, -3608846, -2455111, 2375117, 7685307, 12238509, +-903017, 3743064, -2958696, 6199249, -6923488, -6955163, -7908646, -13482976, 7097971, 4367445, +-11648488, 555661, -8570070, -2980707, 7147363, 4382478, 5785321, -1483911, -1823751, -1751273, +12752832, 10335302, 10471130, -4660040, -9433896, 7475391, -1507534, -3024731, 8961986, 1876364, +8802535, -54761, 4781373, -6150930, -650151, 4820027, -19826642, -2687039, 595927, -14011257, +3345243, -3365644, 12947179, 8776766, -8554501, 941135, 11752104, -950262, 5764920, -3758097, +7905424, -3542274, 1169305, -2863133, -304406, 6235219, -8462696, 8931921, 3809099, 5222680, +753767, 10964515, -31454730, -6573448, 16818018, -13512504, -4936528, 14420890, 5403069, -4410395, +1545651, -11702175, 10625749, -1173063, -19030464, 1555852, -909996, 7429220, 7199439, -3566970, +-14829985, -6162741, -5558225, 587874, -7802345, -4093641, -9975598, -2612414, 11312944, -8774081, +-4328790, -3144990, -5653788, -5874979, -8195872, 6202470, 1498407, 7640210, 1608465, -4866198, +-7853348, -7641284, -1269700, 5916855, 8415988, -2281702, -6808060, 8207683, 3677029, -10837276, +-12212203, -25355876, -1727651, -7631620, -4413079, 4565550, 4604205, 3134789, 12375411, -413927, +-4826470, 153008, -5204427, 14231374, 7943542, -1604170, 8050916, -6425808, 4745939, 4228396, +-6220724, -1931125, -5361193, 6141267, 4625680, -10422275, 9404905, 14212047, 319438, 6449431, +19986094, -8885214, 7065221, -4260608, -906775, 12782896, -4309463, -4483409, -3685619, -280247, +1225676, 8947491, 26569204, -686658, 768262, 8437463, 882616, 945430, -13744432, -12548284, +1147293, 2638721, -9314710, -3477850, -2863670, 8411693, -4309463, 2278480, -1121523, 4120484, +-4394289, 16824460, 7932268, -6693707, 7834557, 8776229, -10692321, 2486249, 3120294, 3999688, +-3721589, -2498060, 12307766, -10901164, 3885872, 15553687, -6230387, 2626373, 8357470, -243739, +7096360, 5320928, -1040456, 5319317, 5861020, 10516764, 4866735, 1596654, -1650878, -5884642, +-8766028, 1102733, -599685, -22461068, 13705241, -2722473, -8828305, -7221451, -18854906, -18394272, +-14515379, 3282966, 7248831, -2526515, -1728188, -595927, 27845346, 28665148, -1188095, -23117124, +4172561, 5108327, -3121368, 6430640, 3072512, 2319819, -742493, -3714073, 22389128, 4466766, +-4201015, -25276956, -14875082, 6220724, -2152852, -8684424, -15882789, 2299955, 1970853, 4071092, +-4460861, -16637093, -18560164, 19487340, 17638356, 5808944, 16109349, -14341433, 1186485, 7587597, +-3842922, -9115531, -17267380, -8128226, 2019708, -725850, -8632347, 7874286, -820876, 7613904, +5222680, 319975, -18728204, -10402948, -9431748, -1595044, 627065, 2132451, -4261145, -5235565, +-118112, 2575907, -17208860, -4294968, 1067299, 3189013, -8794482, -20164872, -6364605, -5432597, +12682502, -1096827, 4478041, -7206419, -7323456, -9531069, -12484396, -6585259, -1402307, -1681480, +8664023, -8420283, -2525441, -5384815, 6208375, -4382478, 13399224, -7416872, 3269007, -5857262, +2078764, 2129230, -6594923, -6325950, -12657805, -16351477, -8872866, -5018133, 455803, -712428, +-7279433, -8916889, -14649597, 6515466, -14675366, -21501680, 14369887, -13331042, -14369887, 13401909, +3966402, -4375498, 16779900, 7871602, -10851235, 10064182, -29570312, -3200825, -6656126, -4413079, +-13209709, 24232206, 13173202, -8566312, 5037997, 6846178, -3976066, 7667054, 1487132, -777926, +-5870147, 7386807, 11275900, 12149926, -19479288, -1940788, 1314260, 4959614, -7988103, -4867809, +-8120173, -10755135, 18189186, 4080219, -10831371, 5100811, -6027987, -9505299, -11629161, -25651692, +8165807, 14695231, 3010772, 14826227, 24019068, -2595234, -6743636, -21937620, 4192425, -3299072, +-17152488, 1921461, -38797512, -26796300, -18447958, 9802189, 19924354, -28185722, 6906308, 19266150, +12629351, -693637, 7683697, 18149994, -8038568, -1513976, -4912369, 146566, -11557220, 8176007, +688269, 619549, 3686693, 24485072, -731755, -11364483, -10152229, 5543192, 18862422, -7781944, +-17990544, 5123359, 19156092, 10468446, -1925219, 8644695, 6692096, 8315594, 2542084, 6985765, +13232257, -1954210, -20616916, 683974, 7213935, -20305532, -13866839, 19100256, 15988016, -15438260, +-9138617, 4362613, -264141, 9153649, 24471114, -5510443, -3785477, 4076461, -390305, 8325257, +5256503, -9112310, -5871221, -3766686, 7905424, 5753646, -5287105, -17794586, -1945083, -26565984, +25616258, 3240016, -3243237, 1145683, 11451457, -2388539, -10073309, -4803384, -1575716, -15209553, +-654983, 2559801, -18600430, -4963909, 13945222, 18080738, 12821014, 33805688, 20402706, 30605400, +11402601, 7951595, -15964930, 17083770, -5905580, -2127083, -12828530, -8671002, 16542603, -5681168, +37664716, 17345226, 10759430, -2286533, 8579734, -6234145, -17820356, -9232569, -11137924, 7636989, +-10524280, -587874, -11258720, 6091874, 15161771, 13479755, -1140851, 19647864, 16535624, 330176, +-6083821, -8152922, -14006962, -5243082, 31395138, 11731166, 36175436, -12320114, -76773, -1847910, +8235063, 28594818, 9761924, 14496, 18548354, 20813948, 22513144, -2836826, -13670344, -5769215, +-3914326, -4764730, 14916958, 9346386, 14194330, 20820390, -13682692, 31918050, -22162568, -42933568, +-6276558, -14529337, 8869644, 19144816, 32694364, -16531329, -12008192, 11009612, -9009768, -2261837, +-3908420, 3833795, 14655502, 14663555, 22950694, -24932286, 28174448, -10365367, 3047279, -13118441, +12023761, 20480552, 9076340, 3508988, 1998234, 25084220, 6810745, -1138703, -7814693, -4145180, +-25509422, -3764002, -12076911, -31625992, 3317862, -2060511, 13492103, -32859722, -5728950, 7577933, +12814572, 27183922, -6753836, 7912941, 15644955, 2263448, -2986613, 7765301, -6394670, -1754494, +-39986684, 3745212, -16462073, -20268488, -21799106, 9481677, -35543000, 12394739, -12551505, -18012020, +-23671176, 22981834, 25852482, 24555938, 6586869, 4990215, 24584930, -30880278, -930934, -8980240, +15129022, -36643052, -10342818, -2966212, 14861124, 10471667, 10945724, 15967615, -10252624, 5651640, +-10739029, -29021630, -1141924, -9951976, 34495568, 7961259, 24261734, -7455527, 33349884, -20587926, +-40371620, 9721658, 6310918, 5296232, -20245402, -21814138, -18078054, 7424925, -18169322, 8666170, +-9763534, 27438936, -8941048, -3126199, 18933826, 1512365, -47925392, -18887656, -795106, 32432372, +-3719979, -8856759, -27429808, 5792301, -6767795, -22477712, -27856084, -2127620, 5196911, -8461086, +-10479183, -26734560, 18476950, -5710159, 6828461, -12642773, 936840, 9575093, 5447093, 25975426, +714038, -7097434, -31486942, -9865003, 16110422, -20444582, -10457172, 9663140, 18447422, 15360951, +36069136, 28493350, 1568737, 22114786, 22067542, 8977019, 2197950, 14204531, -8840116, 55188184, +-22565758, -55537148, 17549774, -46612744, 725313, -35461396, 3251827, 50035296, 23487566, -34894460, +-21047488, -15106474, -10440529, 12359842, 22417044, -13485124, 2854543, 17654464, -36453000, 1753957, +10433012, -29640106, 16410533, -10503879, 14708116, 3991635, 16413754, 707059, -16836272, 18363670, +-22416508, -6075768, 48636748, -19979650, 19015968, -11871290, 21191906, 16894790, -4178466, -21174188, +23841364, 56168508, -29023242, 7536594, -39139500, 20384452, 14760729, -22810034, 27041114, 1930588, +-47228536, 6774237, 4844723, 22340810, -3584150, -3740917, -23471996, -25513180, -10349797, 61780420, +-6691559, 31374736, -24730422, 20697984, 13100724, -5586142, -18107046, -3743601, 20713016, 35108672, +-9191230, -11256036, -78383, 7403450, 34125664, -6927246, -3053185, -21492554, 11374684, -32548872, +-10116795, 25892748, 34988416, 5447093, 7211250, -34439732, 24910810, 19147502, -40375376, 1477469, +-19887846, 127238, -44656924, 45044008, 44311176, -6890202, -18779744, -10131291, -5769215, 20551418, +-20783346, 27277874, -36678484, -25561498, 14358613, 11511586, 6319508, 11045582, 40944460, 8376260, +20645370, 2145873, 21391084, 10408316, -5146982, 1312649, 18757196, -3511673, 2195265, 27756226, +17132088, 37206228, 52076, 20192252, 3837553, -31334470, 33512020, -17658758, 677531, 6815576, +-23337242, -20864952, 14942728, 40845140, 27981712, 13342853, -50934556, -15117211, -34138012, -2517388, +67330592, 38896836, 52419540, 1684701, -40145596, 12305618, 52308944, 7946227, -5292474, 39664560, +11256572, 26207354, -63747516, -60058676, 50494320, -3593814, -10132365, -44777720, 379031, -14394046, +31027380, 21861384, 9682467, 15945603, -38615516, 21630530, 34923988, -219580, 13540421, -32060320, +25355876, -16117939, 13403519, -1761474, 2500208, 16515223, -3609920, 9692131, -1681480, -26533772, +8655970, -4689568, 28687698, 19860466, 35095788, 7701950, -22686018, -23971824, 23622856, 20488604, +13432510, -1372242, 9951439, -10095321, -18115098, -190589, -5158256, 25262998, 22793392, 13799730, +25565256, 19558208, -30063160, 31699542, 37955164, 21488258, -14849313, -20201378, -19917374, 26510148, +21170968, 46386184, -28327994, -36266168, -20848308, -51029580, -8603893, 43231532, 11246909, 32310502, +-37511172, -50707996, 13491029, 20725902, -34274912, -1795833, -26049514, 3644817, -30269856, -12293270, +22594212, 7085086, -25419764, 372588, -16235513, -63424320, 9323300, 39062728, -1226750, -78683800, +-16837882, -1178969, 275415, 28491740, -74698072, -7698729, 32639604, -53870700, 11398306, -11815992, +62566400, 34146064, -39909372, 10043781, 41625212, 4750771, -18234820, 14413910, 8977019, 5872294, +-2178622, -4083977, 1851131, 7093676, 13137768, 44040056, 33640868, 38432976, 24595130, 48330192, +21806622, 49332532, 18530100, 43645996, -1348083, 26891328, 22507240, 26548266, 18565534, -2595771, +5872831, -34452616, -22432078, 63391568, -1577327, -26606786, -9663140, 19093814, 31270584, 67916856, +-12002823, -39366060, -21913996, -29512868, 36503464, 43414604, 47472272, 13882408, -4933844, 32189706, +-61244088, 50685984, 16648367, -30153892, -4033511, -92733712, -1535988, -62268972, -86595128, -23243826, +-52696028, -23509040, 89358944, 84272088, 74320648, -21633750, 56481504, 69455528, -57583700, -52101712, +17289928, 60788820, 1128503, -27897960, -181999, 16816408, 17731772, -49504328, 18166102, -6195491, +25941066, -26927298, -13648869, -31607738, 33459942, -4060892, -15501074, -29446296, 21486110, 13646185, +-5771899, -24704116, 11271605, 11995844, 5344013, -21641266, -3941706, -261456, 25194278, -18631568, +-5585068, -27604828, -8411693, 10982768, 21826486, -28598040, -12401718, 32993402, 26045218, -6965900, +-20417738, 1360968, -11115912, 28111098, -16582332, -6614787, 11265699, 11519639, 14491757, -12486544, +2741800, -17800492, 21128554, 29856466, 10765872, 6969658, -23893976, 27308476, -19954418, 40960028, +-30577482, 33928096, -50874960, 36171676, 234076, 1887101, -37774776, -4619774, 5814312, -2275259, +-2499134, -1524713, -12630962, 55407764, 58331560, -34177204, -20724290, 11953968, 55705724, 35119948, +20587388, 20410758, -9185324, -23077396, -7354595, 13515725, -460098, -5150740, 16452409, 668404, +11528766, 1831267, -6498286, -20593832, -5800354, -818728, 1329292, -409096, -17268990, 19475530, +2974802, -7216082, -622770, -124554, 87510, 12772696, 22408992, 10128070, 2127083, -7611219, +-11827266, -2491618, 7211250, 15699179, 20273856, -10783589, -11317776, 3163244, 20542292, 9946607, +4562866, -8616778, -18695992, 16681653, -3248069, 1230508, 1170916, 5974837, 5070209, -1365800, +-470299, -11213086, 2168959, 11818676, -4702989, 7599945, -3060701, -7376070, 6245956, -167504, +3970161, 1043677, 10710038, 8366060, -11973295, 6646462, 3745748, -21616570, -19639274, -72522672, +30721902, 112317688, 103244568, 88463976, 35081828, -83498456, -52515100, -75024488, -84443352, -75151192, +-22042846, 16596827, 63520956, 66533340, 79271136, 52864068, 52960168, 1664300, -55736328, -52855480, +-65612068, -50938848, -28549184, -1509681, -18364206, 20388210, 24653650, 40328668, 43862892, 44962404, +26599270, 2762201, 11899744, -9242770, 6459094, -29853244, -21948356, -27530204, -45802604, -35847408, +-27740120, -19056770, -32442572, 5283884, 56150256, 63887100, 35576824, 66820028, 16752520, 39405788, +20255602, 12282533, -16070694, -34169688, -47678968, -66659504, -51311976, -76097160, -31238908, -33056752, +23133230, 23775866, 65812320, 76304928, 67755256, 61146376, 59515360, 38570952, 6681359, -17242146, +-58684284, -34739844, -75764832, -62251792, -83965536, 5574868, 3627100, 11296301, 0, 0, +0, 0, 0, }, }, { { 11112154, --2180770, 3111704, 1506997, -5671505, 1533840, 4866198, -1912334, -797253, 1494649, -2167348, --5287642, 5623723, -1262720, 9840307, -102005, 1028645, 4223564, -6033892, -2025614, -6458557, --1136019, -2865280, 2684355, 4490389, 1052267, -2036351, -425202, -153545, 4327717, -3388729, --2140504, -4611185, 3471944, 1825361, 1074, 654983, -3719979, 2979097, -4370666, 424128, --2235531, 3635153, 2950106, -4909685, 505732, -5879274, 274341, 1964411, 2135136, 2486786, -1970316, 672699, -3381750, -2552284, 1389422, 2266132, -2422362, 5784784, -1857573, 788663, --1344325, -344671, 864899, -746251, 4227322, -3030636, 8243116, 1514513, 1303523, -1824287, --197569, 740882, 1292248, 129386, 938987, -5042829, -5404680, -4244502, 1082332, -2385854, --532039, -600222, 2398202, 10223096, -2838437, 1129576, -9767293, -5150203, 2795487, -4469987, --3715147, -1244467, -4214437, -972810, 8238821, -3499325, -5525476, 9166534, 7099044, -2459943, --1844152, 8396124, 2195265, 3315178, 1432372, 502511, -2298344, -3402151, 3109020, -2512019, -2272575, 984621, 755377, -1070521, -3049964, -2147484, 1821066, -2487323, -4281546, -1747515, --2040646, -5095442, 5632313, 9145059, -5454072, 3039763, -3221, -1952600, 1168768, -144418, --208306, -2955474, 5303748, -3246995, -4428648, 4740034, 1076963, -169114, -900333, 2636036, --251256, -1611, -2069637, -737661, 4402879, -7125351, 1840930, 1386738, -2481954, -1660005, --3449396, -3486440, -15956877, -2483028, -5850819, -1400159, 1254131, -4311074, -9739912, 7145215, --2416993, 1685775, 4728759, -1484985, -519691, -565325, 2158758, -1656784, 7977902, -306016, -6146098, 9089225, -10913512, 2304787, 7522635, 544387, 1470489, 5255430, 9632001, 1405528, --2210835, 4888747, -1330366, -2499134, 2143726, 1741609, 2120640, -2702071, 9816685, -4527433, -2450816, 3696356, -79457, -461172, -4841502, 803159, -5602785, 4700305, -5721970, -4347581, -3121904, -5282273, 3610457, -3679713, 1503239, -2964601, 1999844, 4315369, 8376797, 2607045, -936840, 4119411, 54761, -7218767, 962610, 2081449, 2770254, -1777043, 402116, -944356, -1417876, 4109747, 2502892, 5598490, 2004139, 803696, -3222836, -1681480, 3346317, -5754183, -4271345, 2832531, 834297, 5478231, -334471, 3071975, 7381438, 4611185, 9687299, 1882806, --1505386, -9989020, 1497333, -6134287, -2129230, 748935, 2157684, -3859565, -103079, 9565966, --5022965, -296353, -5026186, 2288144, -85899, 1813550, 3773666, 4565550, -3067144, 3405909, -3411278, 6876243, 81068, -6884833, 462783, 7282117, -937914, -542777, -1247688, 4861366, --6010270, 392453, 3514357, 4855461, 5646809, -2334315, -4193499, -602369, 8196408, 688269, -2723009, -7048042, -3488587, 1570347, 1014686, -1302449, 4066797, -428423, -1430761, 2419677, --4902169, 162672, -1277753, 2870112, 3919695, -6844568, -2250026, 2093797, 3673808, -2952790, --3745748, 1847910, 4175245, -403727, 2090039, 17066052, 8645769, 6572911, -6201396, -1394254, --8752606, -6682432, 9876277, 607738, -5848135, -3097208, 2294050, -6025302, -293668, 9526774, -4143033, -686121, 3363496, 14091788, -9360344, 2007897, -1588064, -4940823, 8466454, 3905736, -4482872, -3516505, 3890704, 4445291, -1278827, 2741800, -795106, -4406637, 1021129, 1229434, --552977, 4555350, 1352915, -2073932, 5528697, -2778307, -2405182, -3439195, 1635309, 1745367, -503585, 3546569, 618475, 11846594, 885300, -329102, -2755759, -2860985, 2973728, -9375914, -411780, 5116917, 4331475, -5200669, 7160784, -182536, 3168612, 5434744, -1699196, 4154844, -3324842, -1836635, -5340255, -4176856, 2993055, 7955890, 1971927, -3652870, -2253247, -1967095, -4794794, 4032438, 1239635, 11166378, 2934000, 6571300, -211527, 1296543, 1970853, 1661616, --1822140, 6662031, -2877628, 7206955, -3659312, -3175055, 1947231, -5241471, -1446330, -1879585, -2049773, 2760053, -2057826, -7596724, 3186329, -9130564, -3653944, -1898376, -352724, -1806571, -1533840, 7372312, 4221953, 47782, -8376797, -8334384, 8590, 4748623, -3082713, 267362, --1326071, -4058207, -5594195, -73551, 3145527, 6910066, 6376953, -1548873, 1709397, -10180146, -2710124, 5550709, 6572911, -1662689, 5888400, 575526, 8800388, 4749697, 1057636, 3381750, --1263794, -3447248, -2604898, -1990717, 4940823, -3383361, -4504884, -5335423, 4669167, -2722473, --11908334, 664646, 2239826, 4264366, 5482526, 11105712, -8184597, -6551436, -15877957, 8152922, -9474698, 2246805, 7755101, 2077690, -8503498, 179315, -4395362, -978716, 7120519, -9384504, --3666292, 4540854, 3266323, 10274099, -2614561, 4991826, -15388331, -6470905, 2984466, 9629854, --6443525, -3095061, -6845104, -6355478, 3117610, 106837, -648540, 3770445, 622770, 3903589, -10641855, -5814849, 10316511, 458488, 1568737, 3526705, 1721745, -2220498, 3169149, -6670621, --2130304, -3104188, -1457068, -4625680, 6393596, 2424509, 18821620, 1832340, -1834488, -3678640, -287763, -2847563, 9601399, -4961224, 816581, -10019622, 8021389, 9235253, -9883793, 7193534, -5403069, 3937411, -5493800, -3610457, 8213051, 3877282, -12647068, 7708930, -6049462, -1273995, -2769717, -988916, 1306744, 4846334, 3710852, -2513630, 6442988, 1459215, -281857, -5390721, --9516574, 3513820, -5164162, -1823751, 8946417, -12146704, -5265630, -8886287, -1036161, 8034810, --825171, -6207839, -9031779, -9796820, 3830037, 10868415, -3115999, 6891275, 9924596, -2501282, --2358474, 4182761, 5510980, 12135430, -1751810, 6951942, 944356, 14391362, 10355703, 3139084, --3318936, 1733019, -7801808, 14003741, 3206730, -5713380, -6662568, 8225399, 6719477, 5138392, -3485366, 2690797, 7169374, -2709051, 3225521, -4326643, 793495, 751619, -6982006, -9134322, --3219078, -6336151, 4491999, -3715684, -2848637, -9984188, -6305549, 2374580, -3299609, -861141, -5254893, 10761041, 13399224, 7161321, 5743982, -4527970, -10331544, 395674, -7131793, -17258790, --19594178, -6446209, 1402844, 9404905, -6662568, 4451197, 3431142, -685047, 14938433, -2231773, -14087493, -8360691, 4388383, 4091493, 532576, -12807056, -4820564, -4929549, -13880261, 4636954, --3156801, 2806761, -489089, 4962298, 393526, -5778879, 3400540, -9366250, 7210177, 3788161, -16083579, -827855, 933619, 14130979, -12144557, 10950019, 14079440, -8623221, 9256728, -3762928, --3586298, -7225209, 2338073, 1567663, 10220948, 6156836, -1916092, -4063039, -7619809, 4483409, -5746666, -9422085, -3592203, 8849243, -14787036, 1502165, -11236171, 6837588, 1402307, -100932, -4396436, -3878892, 2206003, 14477261, -4983236, 3412352, 7894687, 4752382, 1809792, -7030862, -4484483, 3401077, -3037616, -11370389, 1764158, -1686312, -7118909, -7915088, 23422604, -8576513, -4351876, 3612604, 8199630, 2866354, 4878546, 12020003, -9373229, -5398774, -997506, 16636556, --6587943, -6784438, -8400419, 4266513, 2492155, 9194988, -19007914, 380641, 142271, -1072131, -9382893, -2138357, 7175817, 13988708, -10281615, -4298726, 3668976, -7323993, -9721122, 6558415, --9050570, 13163001, -2478733, -13154948, -2031520, -7471096, 3972845, 10771778, -474057, 5544803, --927176, 2251637, 12327093, 584116, 8863202, 3809099, -7125351, 7332583, 5818607, 1045825, -4837207, 18289582, -3294240, -7920994, 3994857, -10074383, 492848, 17501454, 5538361, 2965675, --3639985, -4692789, -3707094, -5837398, 9991168, -6542309, -2319819, -3934190, 11195369, -21355652, -6560026, 8061117, 11565810, 3498251, 34909496, 10470593, -6383932, -8429410, -7151121, 25383256, --21803402, 1818919, 8569533, 1359894, -11788075, -2566243, 5990943, -1144609, 1447404, 10635950, --10783589, -8979703, 4578435, 13849659, 8550206, 3710852, -6501507, -6291590, -6092948, -7066295, -6942815, 2910377, 9895605, 8025147, 4639639, -10064182, -4683662, -10722386, -1940252, -6929393, --16331613, -2799782, 7696582, 1956358, -7391639, -7435126, 525597, 4354560, 10742250, 1678259, -5650030, 1880122, 20482700, -17022030, 11838540, 2547989, -17293686, -2780455, -4842039, -3948686, -3286187, -7313793, 5297306, 3898220, 8610336, -9203578, 4147328, 16047072, 8054138, 25201258, --4668093, -106300, -5123359, -2629057, 1724966, -101469, -22224308, 10610180, 344134, -1836635, -7626252, -1723356, -12097849, 3223373, 5947993, 124017, -7612830, -4631586, -15971910, -18114024, -3381213, -7849053, -4358318, 3036005, -628676, -1624571, -8722542, -3793530, -577136, 6762426, -6398428, -9872519, -6339372, 6637872, -9619653, -4224101, -15426986, 14629195, -2435247, 13186623, -562104, 5061082, 13203266, 10598369, -6723235, 3300682, 6396817, -7223062, -3627637, 6954089, --3178813, -16425029, -3732864, -11497091, 16314970, -1732482, -5205501, -9672803, -14886894, 5098126, -2272575, 3336653, 6240588, 129923, -3360275, 7256347, 1068373, -1490354, 1746441, -4216048, -10370199, -2814814, 6191196, 20759724, 3740380, 3688840, 3927211, 7431904, -19289234, -15139223, -4502200, -16578574, 9931038, -2868501, 11370926, 2516314, 23055384, 7847442, -6873022, -1081258, --30188252, -20477330, 7306813, -7945690, -17662516, -25792890, -1094143, 2414845, -5539434, -3859565, -24443196, 6841883, -18525804, 4057134, -11513734, -8983998, -9460739, -15845208, -3200825, 1722282, --22725746, -20771536, -8545374, 3677566, 1482301, 12906914, 10166188, 6858526, -5952288, -55835, -4290673, -11237245, -6983617, -3766150, 3104188, -10588168, -7201050, 7372848, 3729105, -238908, --2348810, -1967632, 5359583, -15378130, -9508521, -7594039, 9443559, -11970074, 7326141, 13590350, -17923436, -1349157, 4570919, -4574140, -9768366, -11893301, -4015795, 11354820, 3471407, -21232170, -31675, 21438330, -15345381, 374199, -4022237, 782221, 4194036, 10652056, -3299072, 3039763, -12242267, 8608188, 4684736, -10804527, -13694503, -18192944, 10397042, -14875082, -24308978, 3743064, --14462229, -9657234, 30476552, 1230508, 23028004, 19205484, -3191161, 20269024, 29952566, 19931870, --25224880, -4260071, -11274826, -13048648, -6662568, -257698, -9893994, 21952114, 7610682, 11694122, --9782325, 11159936, 10064182, 2275796, -12678207, -11331197, 22530862, -4738423, -19287088, -2163590, --22453552, -4161287, 7427072, -9172976, 1461363, -19866908, 9718437, 16487843, 10342281, -3352222, --8361765, -4306242, -1338419, -4061429, -7727183, -24253144, 16892644, 8068633, 9363566, 9073655, --12185896, 19813222, 3765076, -7113540, -3395709, -17370458, -5998996, 9771051, 7942469, 16745004, --489089, -21213380, -34003256, -3108483, 1437740, -939524, -10881837, -19087372, -1087701, 10466835, --3098819, -9194988, 37757056, 24014772, -3508452, -21933324, 4528506, 11133629, 6227166, 16215112, -24019604, -10503879, 1880122, -21417392, 6001680, 1934883, -8473434, 39024608, 14623290, 33702072, -13739600, 8826695, -29321742, 635655, 16192564, 3164317, -15659451, 6778532, -23882702, -9070434, -1525787, 7388955, -7232188, -4388383, 5040144, 4449049, 1600412, 21313776, 12960064, 3738769, --8553964, 14789720, -9558987, -6465537, -13998372, -4291746, 17943300, -28224914, -586263, 13187697, --14410152, -4092030, 5274220, 5240397, 26208428, -1071058, -482647, -11828877, 25598542, -10964515, -3049427, 3281355, 17641578, -3536906, -6680285, 17699560, -28925530, 8259222, 2512556, -11004243, -22721988, -27639188, -3791919, -8348343, -19232864, -8060580, -1185411, 10483478, 20439212, 29417304, --35563404, 9071508, 3129958, 43283608, 11372537, 7326141, 80531, 20660404, 7188165, -33424510, --3585224, 33895344, -8841727, -8159901, 4452808, -3201361, 2369211, -7088307, 37856916, 40482752, --20446192, 9323300, 12868259, 5384279, 13550085, -18735722, -23128398, 18715856, 7296613, -14382772, --21867290, -7681549, -5966247, 21448530, 20160576, 9627706, -17921288, 10763188, -6327561, 6755984, -3784940, 9089761, 23336704, 4465156, -43361988, -14406931, 11429445, -18724984, 8720931, 19392852, -9842454, 33944200, -7851737, -51397336, 2451353, -20558934, 21689584, 15363098, -1481227, -11003169, -20232518, -24713778, 338229, -13412109, 16752520, 15878494, 19300510, 14677514, -4874788, -21186536, --55041616, -30235496, -27925878, 4689568, -14345728, -14122389, 10201084, -31653372, 681826, -19746112, --9459665, 6283537, -10773389, -1934346, 1173600, -49349176, -5735392, 30636002, -36627480, 2498597, -15509127, -817118, 11265162, -4051765, -28756416, -3720516, 17694728, 4310537, 25712896, 15352361, --24504936, -29098940, -2433099, -13256417, -2700998, -47178604, 18456548, 17075716, 33421824, 13480829, -30515206, -13819594, 5221607, 28963648, -8331163, 31635656, 10276783, 16214038, 6987912, -9446244, -17299054, -20976620, 2037425, 40351756, -31124018, 1917703, -40833864, -19859928, -29136522, -21450140, --4383551, 1238561, -9067213, -32799054, -5018670, -53821308, 60448444, 20157356, 897111, -8854612, --14041322, 2641942, -26064010, 4285841, -39390220, 445066, 1782948, 8511015, 24660628, 36294084, -50466, -60965988, -30339112, 26378616, -18382996, -8720931, 10405095, -23213224, 16241956, 27901718, -9415105, -11900281, -17276506, 8527658, -22129282, 34506304, 27571542, 43575128, -31410706, -37252400, --10243497, -329639, -19895900, 25837986, 29898342, -22167936, -904628, -39946952, -12802761, -18638548, --37427420, 12093554, 29252486, 18813568, -24697672, -8662412, 1809255, 20884816, 2031520, -895501, -6587943, -1704028, -11366094, -32142998, -23338316, 9074729, -4231080, -17164300, 18127446, 17890150, -9701257, -32808718, -31891206, 29678760, 16088411, 22306986, -23259396, -54994908, -12049531, 24460912, -21789980, -4697621, 54871428, -5893769, 55093156, -84147536, -107683960, -42086920, -65665220, 2377801, -22921704, 14994268, 66997732, -5565741, -6522982, 15655156, -15727633, -50826644, -50175420, -48998060, -42142220, 43195560, -12718472, 18923090, 5133560, 13867376, -42725796, 37388764, 25441776, 12773233, -31878322, -18257370, 10547366, -54292144, -28895466, 16153909, 18633178, 10907069, 5171678, 8354785, -12354473, -5399311, 61353608, 7080254, 37335612, 12686797, -21347598, 49689552, -8924405, 20280836, --1408749, 18600430, -4321811, 197032, 8051990, 25503516, 4412005, 18946712, -1511829, -2459943, -35339528, 5537287, -11020349, 1843615, -6090264, -18043694, -8714489, 11950210, 3755949, -41899552, --14032195, 6663105, 6304475, 46309948, 32875828, -43293272, -28618440, 5000953, -14153528, 51004884, -293668, 47224776, -37078452, 24591372, -556198, 4214437, 15640660, 48877800, 24404004, 8334921, -34843996, 18701362, -27125402, -39145944, 28148142, -29983166, 12077448, -39396124, -12451110, -62434864, -53624816, -4304631, -67589360, -19659676, -2956011, 5293547, 8846022, -45535780, -22636088, 37456408, --12496207, 12712566, -14547054, 2136209, 52408264, 78066400, 8602283, -4364761, 43208980, 16001974, -19871740, 47990352, 4516158, 28609850, 39757976, 33614024, -9999758, 13953812, 35081828, 42608224, -39570608, 52719648, 34301220, 67662376, 76820320, 51783884, 62227632, 38837780, 92342, 18772766, -14837501, -15492484, -10117869, 10986526, 38708392, 7380365, 6597607, -448824, 21935472, 50174880, -44557600, 84458384, 22652732, -43989056, 23335094, 824634, 23953570, -22558778, 39888436, -61327840, --72577432, 22109954, 86361056, 34537444, 23039816, -98785320, 8093329, 37082212, 67532456, 79264696, --25498684, 3614752, -128708360, -93314608, 47158740, 47392280, -64359548, -23079006, 63171988, 77474232, --86948928, -31797254, 29329794, -20398410, 13196287, -27685360, 25061672, -22983980, 3613141, 2975339, --15262703, 9404368, -1240709, -4993437, -8599598, -17808008, -8192650, 7501698, -96100, -18231600, -17504140, -16500727, -9305584, -13944148, -656056, -13246216, 30295626, 2068564, 6145562, -6105833, -6140193, -6696391, 6859600, 22747220, 24843702, -4789963, 6726456, 12655121, 21569326, -12457553, -13052406, -10895795, 26482768, -5227512, -18702972, 11673721, -9468792, -6493991, 1069447, -403727, -10233833, -4570382, -18527416, -14074071, 518080, 4851166, -30498026, 10291279, -6161131, -1502702, -3398393, -6995965, -6201396, 3652870, -5604933, 4233764, -16051903, 17732310, -51288352, 25837450, --21145734, 31841276, -21040508, 3349001, -13613973, 63559072, 38472168, -20964272, -24189792, -2142652, -78857744, 32941326, 10945724, 21787832, -19294604, -24262270, 6568616, 15218680, 3810173, 1258962, --8618389, -6704981, 7198902, 7401840, 18129594, 7987029, -10188199, -4586488, -5201206, -10229001, --435402, 1501091, 4547297, 5949067, -185220, -2959769, 6934225, -21526912, -8486319, 9072582, -13058311, 16381005, -9928891, -5898064, -10558640, 16711181, 11297911, -3708704, 4845797, -20306068, --17792438, 15302432, 11615202, 3332358, -30770756, -16018617, 437013, 4393215, 18905372, 13490492, --3151432, 5142150, 6006512, -10084583, 7469485, 8589935, -3985730, -6466074, 4155381, -10792179, --622233, -2438468, -8863739, -11413876, 12780212, 2593624, 609885, 20619064, 21335250, 10772852, -9466108, -23015656, -62674312, 21540334, 115799296, 90656024, 87219512, 27559732, -80792096, -48841832, --71628240, -72283760, -65498252, -23223426, 35446364, 45252312, 71772128, 63883880, 38718056, 6123013, -6314139, -31479962, -49181132, -70755288, -27113592, -19522236, 6232535, -4406100, 35580584, 23659902, -10095858, 47263432, 26602490, 19943680, -4411469, 17423608, -32704566, -24958592, -20551418, -24142012, --31489626, -19291920, -12862353, -32202592, -22401476, 7803419, 45945412, 44309568, 50357956, 39441220, -57586384, 9432285, 14088566, -39476656, -29681982, -25345138, -59281288, -58704688, -53226992, -25369298, --31861678, 6315750, 20987894, 31609348, 63496796, 63211180, 59334972, 54092964, 45827836, 9252970, --31094490, -47233904, -85662584, -71830104, -55363740, -70824008, -36502392, -10081362, 2771865, 38146288, --6261526, 0, 0, }, +-2180770, 3111704, 1506997, -5671505, 1533840, 4866198, -1912334, -797253, 1494649, -2167348, +-5287642, 5623723, -1262720, 9840307, -102005, 1028645, 4223564, -6033892, -2025614, -6458557, +-1136019, -2865280, 2684355, 4490389, 1052267, -2036351, -425202, -153545, 4327717, -3388729, +-2140504, -4611185, 3471944, 1825361, 1074, 654983, -3719979, 2979097, -4370666, 424128, +-2235531, 3635153, 2950106, -4909685, 505732, -5879274, 274341, 1964411, 2135136, 2486786, +1970316, 672699, -3381750, -2552284, 1389422, 2266132, -2422362, 5784784, -1857573, 788663, +-1344325, -344671, 864899, -746251, 4227322, -3030636, 8243116, 1514513, 1303523, -1824287, +-197569, 740882, 1292248, 129386, 938987, -5042829, -5404680, -4244502, 1082332, -2385854, +-532039, -600222, 2398202, 10223096, -2838437, 1129576, -9767293, -5150203, 2795487, -4469987, +-3715147, -1244467, -4214437, -972810, 8238821, -3499325, -5525476, 9166534, 7099044, -2459943, +-1844152, 8396124, 2195265, 3315178, 1432372, 502511, -2298344, -3402151, 3109020, -2512019, +2272575, 984621, 755377, -1070521, -3049964, -2147484, 1821066, -2487323, -4281546, -1747515, +-2040646, -5095442, 5632313, 9145059, -5454072, 3039763, -3221, -1952600, 1168768, -144418, +-208306, -2955474, 5303748, -3246995, -4428648, 4740034, 1076963, -169114, -900333, 2636036, +-251256, -1611, -2069637, -737661, 4402879, -7125351, 1840930, 1386738, -2481954, -1660005, +-3449396, -3486440, -15956877, -2483028, -5850819, -1400159, 1254131, -4311074, -9739912, 7145215, +-2416993, 1685775, 4728759, -1484985, -519691, -565325, 2158758, -1656784, 7977902, -306016, +6146098, 9089225, -10913512, 2304787, 7522635, 544387, 1470489, 5255430, 9632001, 1405528, +-2210835, 4888747, -1330366, -2499134, 2143726, 1741609, 2120640, -2702071, 9816685, -4527433, +2450816, 3696356, -79457, -461172, -4841502, 803159, -5602785, 4700305, -5721970, -4347581, +3121904, -5282273, 3610457, -3679713, 1503239, -2964601, 1999844, 4315369, 8376797, 2607045, +936840, 4119411, 54761, -7218767, 962610, 2081449, 2770254, -1777043, 402116, -944356, +1417876, 4109747, 2502892, 5598490, 2004139, 803696, -3222836, -1681480, 3346317, -5754183, +4271345, 2832531, 834297, 5478231, -334471, 3071975, 7381438, 4611185, 9687299, 1882806, +-1505386, -9989020, 1497333, -6134287, -2129230, 748935, 2157684, -3859565, -103079, 9565966, +-5022965, -296353, -5026186, 2288144, -85899, 1813550, 3773666, 4565550, -3067144, 3405909, +3411278, 6876243, 81068, -6884833, 462783, 7282117, -937914, -542777, -1247688, 4861366, +-6010270, 392453, 3514357, 4855461, 5646809, -2334315, -4193499, -602369, 8196408, 688269, +2723009, -7048042, -3488587, 1570347, 1014686, -1302449, 4066797, -428423, -1430761, 2419677, +-4902169, 162672, -1277753, 2870112, 3919695, -6844568, -2250026, 2093797, 3673808, -2952790, +-3745748, 1847910, 4175245, -403727, 2090039, 17066052, 8645769, 6572911, -6201396, -1394254, +-8752606, -6682432, 9876277, 607738, -5848135, -3097208, 2294050, -6025302, -293668, 9526774, +4143033, -686121, 3363496, 14091788, -9360344, 2007897, -1588064, -4940823, 8466454, 3905736, +4482872, -3516505, 3890704, 4445291, -1278827, 2741800, -795106, -4406637, 1021129, 1229434, +-552977, 4555350, 1352915, -2073932, 5528697, -2778307, -2405182, -3439195, 1635309, 1745367, +503585, 3546569, 618475, 11846594, 885300, -329102, -2755759, -2860985, 2973728, -9375914, +411780, 5116917, 4331475, -5200669, 7160784, -182536, 3168612, 5434744, -1699196, 4154844, +3324842, -1836635, -5340255, -4176856, 2993055, 7955890, 1971927, -3652870, -2253247, -1967095, +4794794, 4032438, 1239635, 11166378, 2934000, 6571300, -211527, 1296543, 1970853, 1661616, +-1822140, 6662031, -2877628, 7206955, -3659312, -3175055, 1947231, -5241471, -1446330, -1879585, +2049773, 2760053, -2057826, -7596724, 3186329, -9130564, -3653944, -1898376, -352724, -1806571, +1533840, 7372312, 4221953, 47782, -8376797, -8334384, 8590, 4748623, -3082713, 267362, +-1326071, -4058207, -5594195, -73551, 3145527, 6910066, 6376953, -1548873, 1709397, -10180146, +2710124, 5550709, 6572911, -1662689, 5888400, 575526, 8800388, 4749697, 1057636, 3381750, +-1263794, -3447248, -2604898, -1990717, 4940823, -3383361, -4504884, -5335423, 4669167, -2722473, +-11908334, 664646, 2239826, 4264366, 5482526, 11105712, -8184597, -6551436, -15877957, 8152922, +9474698, 2246805, 7755101, 2077690, -8503498, 179315, -4395362, -978716, 7120519, -9384504, +-3666292, 4540854, 3266323, 10274099, -2614561, 4991826, -15388331, -6470905, 2984466, 9629854, +-6443525, -3095061, -6845104, -6355478, 3117610, 106837, -648540, 3770445, 622770, 3903589, +10641855, -5814849, 10316511, 458488, 1568737, 3526705, 1721745, -2220498, 3169149, -6670621, +-2130304, -3104188, -1457068, -4625680, 6393596, 2424509, 18821620, 1832340, -1834488, -3678640, +287763, -2847563, 9601399, -4961224, 816581, -10019622, 8021389, 9235253, -9883793, 7193534, +5403069, 3937411, -5493800, -3610457, 8213051, 3877282, -12647068, 7708930, -6049462, -1273995, +2769717, -988916, 1306744, 4846334, 3710852, -2513630, 6442988, 1459215, -281857, -5390721, +-9516574, 3513820, -5164162, -1823751, 8946417, -12146704, -5265630, -8886287, -1036161, 8034810, +-825171, -6207839, -9031779, -9796820, 3830037, 10868415, -3115999, 6891275, 9924596, -2501282, +-2358474, 4182761, 5510980, 12135430, -1751810, 6951942, 944356, 14391362, 10355703, 3139084, +-3318936, 1733019, -7801808, 14003741, 3206730, -5713380, -6662568, 8225399, 6719477, 5138392, +3485366, 2690797, 7169374, -2709051, 3225521, -4326643, 793495, 751619, -6982006, -9134322, +-3219078, -6336151, 4491999, -3715684, -2848637, -9984188, -6305549, 2374580, -3299609, -861141, +5254893, 10761041, 13399224, 7161321, 5743982, -4527970, -10331544, 395674, -7131793, -17258790, +-19594178, -6446209, 1402844, 9404905, -6662568, 4451197, 3431142, -685047, 14938433, -2231773, +14087493, -8360691, 4388383, 4091493, 532576, -12807056, -4820564, -4929549, -13880261, 4636954, +-3156801, 2806761, -489089, 4962298, 393526, -5778879, 3400540, -9366250, 7210177, 3788161, +16083579, -827855, 933619, 14130979, -12144557, 10950019, 14079440, -8623221, 9256728, -3762928, +-3586298, -7225209, 2338073, 1567663, 10220948, 6156836, -1916092, -4063039, -7619809, 4483409, +5746666, -9422085, -3592203, 8849243, -14787036, 1502165, -11236171, 6837588, 1402307, -100932, +4396436, -3878892, 2206003, 14477261, -4983236, 3412352, 7894687, 4752382, 1809792, -7030862, +4484483, 3401077, -3037616, -11370389, 1764158, -1686312, -7118909, -7915088, 23422604, -8576513, +4351876, 3612604, 8199630, 2866354, 4878546, 12020003, -9373229, -5398774, -997506, 16636556, +-6587943, -6784438, -8400419, 4266513, 2492155, 9194988, -19007914, 380641, 142271, -1072131, +9382893, -2138357, 7175817, 13988708, -10281615, -4298726, 3668976, -7323993, -9721122, 6558415, +-9050570, 13163001, -2478733, -13154948, -2031520, -7471096, 3972845, 10771778, -474057, 5544803, +-927176, 2251637, 12327093, 584116, 8863202, 3809099, -7125351, 7332583, 5818607, 1045825, +4837207, 18289582, -3294240, -7920994, 3994857, -10074383, 492848, 17501454, 5538361, 2965675, +-3639985, -4692789, -3707094, -5837398, 9991168, -6542309, -2319819, -3934190, 11195369, -21355652, +6560026, 8061117, 11565810, 3498251, 34909496, 10470593, -6383932, -8429410, -7151121, 25383256, +-21803402, 1818919, 8569533, 1359894, -11788075, -2566243, 5990943, -1144609, 1447404, 10635950, +-10783589, -8979703, 4578435, 13849659, 8550206, 3710852, -6501507, -6291590, -6092948, -7066295, +6942815, 2910377, 9895605, 8025147, 4639639, -10064182, -4683662, -10722386, -1940252, -6929393, +-16331613, -2799782, 7696582, 1956358, -7391639, -7435126, 525597, 4354560, 10742250, 1678259, +5650030, 1880122, 20482700, -17022030, 11838540, 2547989, -17293686, -2780455, -4842039, -3948686, +3286187, -7313793, 5297306, 3898220, 8610336, -9203578, 4147328, 16047072, 8054138, 25201258, +-4668093, -106300, -5123359, -2629057, 1724966, -101469, -22224308, 10610180, 344134, -1836635, +7626252, -1723356, -12097849, 3223373, 5947993, 124017, -7612830, -4631586, -15971910, -18114024, +3381213, -7849053, -4358318, 3036005, -628676, -1624571, -8722542, -3793530, -577136, 6762426, +6398428, -9872519, -6339372, 6637872, -9619653, -4224101, -15426986, 14629195, -2435247, 13186623, +562104, 5061082, 13203266, 10598369, -6723235, 3300682, 6396817, -7223062, -3627637, 6954089, +-3178813, -16425029, -3732864, -11497091, 16314970, -1732482, -5205501, -9672803, -14886894, 5098126, +2272575, 3336653, 6240588, 129923, -3360275, 7256347, 1068373, -1490354, 1746441, -4216048, +10370199, -2814814, 6191196, 20759724, 3740380, 3688840, 3927211, 7431904, -19289234, -15139223, +4502200, -16578574, 9931038, -2868501, 11370926, 2516314, 23055384, 7847442, -6873022, -1081258, +-30188252, -20477330, 7306813, -7945690, -17662516, -25792890, -1094143, 2414845, -5539434, -3859565, +24443196, 6841883, -18525804, 4057134, -11513734, -8983998, -9460739, -15845208, -3200825, 1722282, +-22725746, -20771536, -8545374, 3677566, 1482301, 12906914, 10166188, 6858526, -5952288, -55835, +4290673, -11237245, -6983617, -3766150, 3104188, -10588168, -7201050, 7372848, 3729105, -238908, +-2348810, -1967632, 5359583, -15378130, -9508521, -7594039, 9443559, -11970074, 7326141, 13590350, +17923436, -1349157, 4570919, -4574140, -9768366, -11893301, -4015795, 11354820, 3471407, -21232170, +31675, 21438330, -15345381, 374199, -4022237, 782221, 4194036, 10652056, -3299072, 3039763, +12242267, 8608188, 4684736, -10804527, -13694503, -18192944, 10397042, -14875082, -24308978, 3743064, +-14462229, -9657234, 30476552, 1230508, 23028004, 19205484, -3191161, 20269024, 29952566, 19931870, +-25224880, -4260071, -11274826, -13048648, -6662568, -257698, -9893994, 21952114, 7610682, 11694122, +-9782325, 11159936, 10064182, 2275796, -12678207, -11331197, 22530862, -4738423, -19287088, -2163590, +-22453552, -4161287, 7427072, -9172976, 1461363, -19866908, 9718437, 16487843, 10342281, -3352222, +-8361765, -4306242, -1338419, -4061429, -7727183, -24253144, 16892644, 8068633, 9363566, 9073655, +-12185896, 19813222, 3765076, -7113540, -3395709, -17370458, -5998996, 9771051, 7942469, 16745004, +-489089, -21213380, -34003256, -3108483, 1437740, -939524, -10881837, -19087372, -1087701, 10466835, +-3098819, -9194988, 37757056, 24014772, -3508452, -21933324, 4528506, 11133629, 6227166, 16215112, +24019604, -10503879, 1880122, -21417392, 6001680, 1934883, -8473434, 39024608, 14623290, 33702072, +13739600, 8826695, -29321742, 635655, 16192564, 3164317, -15659451, 6778532, -23882702, -9070434, +1525787, 7388955, -7232188, -4388383, 5040144, 4449049, 1600412, 21313776, 12960064, 3738769, +-8553964, 14789720, -9558987, -6465537, -13998372, -4291746, 17943300, -28224914, -586263, 13187697, +-14410152, -4092030, 5274220, 5240397, 26208428, -1071058, -482647, -11828877, 25598542, -10964515, +3049427, 3281355, 17641578, -3536906, -6680285, 17699560, -28925530, 8259222, 2512556, -11004243, +22721988, -27639188, -3791919, -8348343, -19232864, -8060580, -1185411, 10483478, 20439212, 29417304, +-35563404, 9071508, 3129958, 43283608, 11372537, 7326141, 80531, 20660404, 7188165, -33424510, +-3585224, 33895344, -8841727, -8159901, 4452808, -3201361, 2369211, -7088307, 37856916, 40482752, +-20446192, 9323300, 12868259, 5384279, 13550085, -18735722, -23128398, 18715856, 7296613, -14382772, +-21867290, -7681549, -5966247, 21448530, 20160576, 9627706, -17921288, 10763188, -6327561, 6755984, +3784940, 9089761, 23336704, 4465156, -43361988, -14406931, 11429445, -18724984, 8720931, 19392852, +9842454, 33944200, -7851737, -51397336, 2451353, -20558934, 21689584, 15363098, -1481227, -11003169, +20232518, -24713778, 338229, -13412109, 16752520, 15878494, 19300510, 14677514, -4874788, -21186536, +-55041616, -30235496, -27925878, 4689568, -14345728, -14122389, 10201084, -31653372, 681826, -19746112, +-9459665, 6283537, -10773389, -1934346, 1173600, -49349176, -5735392, 30636002, -36627480, 2498597, +15509127, -817118, 11265162, -4051765, -28756416, -3720516, 17694728, 4310537, 25712896, 15352361, +-24504936, -29098940, -2433099, -13256417, -2700998, -47178604, 18456548, 17075716, 33421824, 13480829, +30515206, -13819594, 5221607, 28963648, -8331163, 31635656, 10276783, 16214038, 6987912, -9446244, +17299054, -20976620, 2037425, 40351756, -31124018, 1917703, -40833864, -19859928, -29136522, -21450140, +-4383551, 1238561, -9067213, -32799054, -5018670, -53821308, 60448444, 20157356, 897111, -8854612, +-14041322, 2641942, -26064010, 4285841, -39390220, 445066, 1782948, 8511015, 24660628, 36294084, +50466, -60965988, -30339112, 26378616, -18382996, -8720931, 10405095, -23213224, 16241956, 27901718, +9415105, -11900281, -17276506, 8527658, -22129282, 34506304, 27571542, 43575128, -31410706, -37252400, +-10243497, -329639, -19895900, 25837986, 29898342, -22167936, -904628, -39946952, -12802761, -18638548, +-37427420, 12093554, 29252486, 18813568, -24697672, -8662412, 1809255, 20884816, 2031520, -895501, +6587943, -1704028, -11366094, -32142998, -23338316, 9074729, -4231080, -17164300, 18127446, 17890150, +9701257, -32808718, -31891206, 29678760, 16088411, 22306986, -23259396, -54994908, -12049531, 24460912, +21789980, -4697621, 54871428, -5893769, 55093156, -84147536, -107683960, -42086920, -65665220, 2377801, +22921704, 14994268, 66997732, -5565741, -6522982, 15655156, -15727633, -50826644, -50175420, -48998060, +42142220, 43195560, -12718472, 18923090, 5133560, 13867376, -42725796, 37388764, 25441776, 12773233, +31878322, -18257370, 10547366, -54292144, -28895466, 16153909, 18633178, 10907069, 5171678, 8354785, +12354473, -5399311, 61353608, 7080254, 37335612, 12686797, -21347598, 49689552, -8924405, 20280836, +-1408749, 18600430, -4321811, 197032, 8051990, 25503516, 4412005, 18946712, -1511829, -2459943, +35339528, 5537287, -11020349, 1843615, -6090264, -18043694, -8714489, 11950210, 3755949, -41899552, +-14032195, 6663105, 6304475, 46309948, 32875828, -43293272, -28618440, 5000953, -14153528, 51004884, +293668, 47224776, -37078452, 24591372, -556198, 4214437, 15640660, 48877800, 24404004, 8334921, +34843996, 18701362, -27125402, -39145944, 28148142, -29983166, 12077448, -39396124, -12451110, -62434864, +53624816, -4304631, -67589360, -19659676, -2956011, 5293547, 8846022, -45535780, -22636088, 37456408, +-12496207, 12712566, -14547054, 2136209, 52408264, 78066400, 8602283, -4364761, 43208980, 16001974, +19871740, 47990352, 4516158, 28609850, 39757976, 33614024, -9999758, 13953812, 35081828, 42608224, +39570608, 52719648, 34301220, 67662376, 76820320, 51783884, 62227632, 38837780, 92342, 18772766, +14837501, -15492484, -10117869, 10986526, 38708392, 7380365, 6597607, -448824, 21935472, 50174880, +44557600, 84458384, 22652732, -43989056, 23335094, 824634, 23953570, -22558778, 39888436, -61327840, +-72577432, 22109954, 86361056, 34537444, 23039816, -98785320, 8093329, 37082212, 67532456, 79264696, +-25498684, 3614752, -128708360, -93314608, 47158740, 47392280, -64359548, -23079006, 63171988, 77474232, +-86948928, -31797254, 29329794, -20398410, 13196287, -27685360, 25061672, -22983980, 3613141, 2975339, +-15262703, 9404368, -1240709, -4993437, -8599598, -17808008, -8192650, 7501698, -96100, -18231600, +17504140, -16500727, -9305584, -13944148, -656056, -13246216, 30295626, 2068564, 6145562, -6105833, +6140193, -6696391, 6859600, 22747220, 24843702, -4789963, 6726456, 12655121, 21569326, -12457553, +13052406, -10895795, 26482768, -5227512, -18702972, 11673721, -9468792, -6493991, 1069447, -403727, +10233833, -4570382, -18527416, -14074071, 518080, 4851166, -30498026, 10291279, -6161131, -1502702, +3398393, -6995965, -6201396, 3652870, -5604933, 4233764, -16051903, 17732310, -51288352, 25837450, +-21145734, 31841276, -21040508, 3349001, -13613973, 63559072, 38472168, -20964272, -24189792, -2142652, +78857744, 32941326, 10945724, 21787832, -19294604, -24262270, 6568616, 15218680, 3810173, 1258962, +-8618389, -6704981, 7198902, 7401840, 18129594, 7987029, -10188199, -4586488, -5201206, -10229001, +-435402, 1501091, 4547297, 5949067, -185220, -2959769, 6934225, -21526912, -8486319, 9072582, +13058311, 16381005, -9928891, -5898064, -10558640, 16711181, 11297911, -3708704, 4845797, -20306068, +-17792438, 15302432, 11615202, 3332358, -30770756, -16018617, 437013, 4393215, 18905372, 13490492, +-3151432, 5142150, 6006512, -10084583, 7469485, 8589935, -3985730, -6466074, 4155381, -10792179, +-622233, -2438468, -8863739, -11413876, 12780212, 2593624, 609885, 20619064, 21335250, 10772852, +9466108, -23015656, -62674312, 21540334, 115799296, 90656024, 87219512, 27559732, -80792096, -48841832, +-71628240, -72283760, -65498252, -23223426, 35446364, 45252312, 71772128, 63883880, 38718056, 6123013, +6314139, -31479962, -49181132, -70755288, -27113592, -19522236, 6232535, -4406100, 35580584, 23659902, +10095858, 47263432, 26602490, 19943680, -4411469, 17423608, -32704566, -24958592, -20551418, -24142012, +-31489626, -19291920, -12862353, -32202592, -22401476, 7803419, 45945412, 44309568, 50357956, 39441220, +57586384, 9432285, 14088566, -39476656, -29681982, -25345138, -59281288, -58704688, -53226992, -25369298, +-31861678, 6315750, 20987894, 31609348, 63496796, 63211180, 59334972, 54092964, 45827836, 9252970, +-31094490, -47233904, -85662584, -71830104, -55363740, -70824008, -36502392, -10081362, 2771865, 38146288, +-6261526, 0, 0, }, { 11669426, --4000225, 3040300, -444529, -324270, -3609383, 2025077, 5330592, -3006477, -1369558, 754841, --2290828, -3757023, 580894, 78383, -3585761, -6129992, 4901632, -2550137, 8421357, -464930, -4721243, -6693707, -304406, 2417530, -1489280, -3539053, -1470489, -2531346, -436476, -2094333, -224412, -438624, -3110093, 1935420, -4150012, 4902705, -1733019, -1356673, -803159, 5811628, -5447093, 210990, 4046933, 2596308, -1280437, -1222455, 5425618, -2703145, -6251325, -83752, --1341640, 6776385, 349503, 847719, -4264366, 11811, -2239826, -2360622, -1159104, -2544768, -1848983, -3678640, -1647657, 938450, -1364189, -3943854, -5515275, -107374, 3163244, 1662152, -2664490, -53687, -676457, 988916, -346819, -3704946, -3823595, -6515466, 2431488, -3365107, --5735392, -4250944, 3114925, -8042327, -3912715, -9757629, 3612068, 3840775, 5691906, 2555506, --2946348, 6759205, -4532801, 1074279, 490700, -1390496, -4810900, -3007014, -5326297, -148713, --2069637, 2800856, 2438468, -3077881, -527207, -994822, -4865124, -596464, -821413, 1928977, -240518, 4319127, -1342714, 5563594, -2247342, -315680, 1285806, -4742181, 3347390, -1734093, --1345399, 86973, -855235, 1868311, -8792335, 3805878, 5801427, 346282, 3428458, 1242319, --3727495, -1000191, -4077535, 5497558, -1284732, -4211753, 3885335, -5981816, 513785, 1603633, --5961952, 210990, -1216550, -2913599, 2358474, -84289, 748398, -3488050, -1758789, -10506564, --1186485, 1881196, -14341970, -8486319, 1502165, -4544076, 801548, -4688494, -8268886, -5362804, -9220758, 5504538, -1516124, 6393596, 1408749, 1646583, 1694902, -2949569, -901406, 5223754, --4190278, 2433099, 3666828, -3882651, -6384469, 3011309, -5229123, 694711, 2896956, 7710003, --1771674, -3529390, -3260954, 1315334, 4067334, -5466420, -104153, 4755603, 1759326, 636192, --360777, -274878, 5935108, -64961, 5433671, 3777424, -1446330, 3772592, -1317481, -139050, --612570, -9820443, 3416110, 5870147, -3328063, -1648731, 1329829, 1772748, 1557463, 1130650, --595390, -948114, 287226, -2241436, 6806450, -2777770, 744103, 4044786, 2921115, -2109366, -2647311, 1225139, 1695975, 4156455, 3237332, -4563403, 5035313, 6123013, -2185602, -5443871, -7019587, 4935991, 10973105, -1646583, 999117, 3633006, -5631239, -914828, 1966021, -2030446, --7576323, -223338, 597537, 5168457, -6157910, -14340359, -11954505, -7019587, 2602213, 7146289, --7167764, 4146254, -3617973, 5578626, 3954054, 3858491, 6208375, 3808026, -5233955, -4401268, -661425, 3673808, -477278, 542240, 8754754, 184684, 1341640, 4727149, 4490389, 1049046, --95563, 11365557, -1012002, -3884798, -1494649, 2809982, 2987150, -1852205, 5706401, 1479616, -2935610, -3945464, -4057670, -1120987, -2788508, 1796370, -2285996, 6863895, -7815767, -6300717, -7764227, -434329, -704375, -8975408, 2532420, -4085588, 4651450, -3389266, -10914586, 116501, -4830765, -3779034, 6332930, -3329674, 2538863, 17536352, 3956739, 4784057, 1852205, -3825205, -8209830, -3797825, -2500208, 10774999, -935229, 8698383, -1036161, -9604084, 3320010, -3147137, -10640245, 5841693, -885300, -9473087, -6880001, 9089225, 10435697, -12155294, 6048388, 5133023, -3582540, -615791, 1063004, 1226213, -1072668, 12419972, -693100, -1885491, -3507915, -3883187, --5370320, -1502165, -421444, -6810745, -2652679, 2076617, -5053566, 521302, 130997, 7570954, --2897492, 500364, 3241627, 573378, 6825240, 3454764, 7096897, 3909494, 2036351, -7350300, -623307, -5338108, -5518496, 1655710, 7205882, 121333, 6146098, -2223719, -5048197, -632971, -48318, 2407329, 4085051, -1425392, -363998, -1718524, 2061584, 2446521, -6739878, 2144263, -637266, 4982699, 3354370, 4014721, 11094974, 5914707, -4953708, -4286378, -12146704, -734976, --382252, -6385543, 2319819, 9694815, 1040456, -7587597, 6929930, 6735046, -848793, 2695629, -6651294, 1615982, -6352257, -959925, 14249091, 7083475, 1305670, -9536975, -3602941, 8652748, -2778844, -1333587, 4669167, 4325032, 4345433, -90731, 8709657, -143881, -1406065, 2183991, --4720706, -5909875, -582505, 894427, 3023657, 1726040, -5769752, 5418101, 9365176, 4858682, --631897, 7073275, -8598525, 4532801, -5308043, 4982162, -1818382, -6083821, -782758, -7886634, --13120051, -4804995, -5575942, -836982, -679679, -6834904, 583579, -2282775, 3042448, 2254321, -3630321, -1004486, 756988, -6631430, -225486, 759136, 7020661, -3468723, -12169253, -7417409, -16307454, -3267933, -4033511, 1365800, -956167, 18275086, -5597953, -9257265, -132607, -9123584, -2005750, 7992934, 7795903, 2985539, -16966732, 14055280, -11107322, 6120866, -7708930, -5163088, --4475893, 7238094, 6961068, -10554345, 503585, 5234492, -3775813, 2643552, 2856690, -3519726, -138513, -8588324, -6451041, -13496398, 7896298, -1475858, 13701483, -6070400, 2676838, 9898826, --2730526, -2280628, -4546760, 11298448, 7476465, -12687870, 3379603, -6925098, -2911988, -2330020, --7836168, 5060009, 1952600, 12271258, 7777112, -13984950, -2830384, -5604933, 8107825, 3694209, -281857, -7774428, 812823, -78383, 6706055, -310848, 408559, -8837432, -722628, 8087424, --6920803, 2406256, -2462627, -140660, -5356361, 569083, 1816234, 4044786, -4481262, 273804, --9458592, -1222992, -10921565, 1658931, -2753074, 6206228, -469225, 5249524, -7507603, -14139032, -2942590, 9386651, 1185948, -1228361, 7323993, 4873714, -11570642, -287763, -4410932, 14453102, --728534, 1576253, 1055488, 20938, -552440, -5362804, 11437498, -1126892, -16474958, -3227131, -9794136, -6553047, 1523103, -434865, 1185411, -2232846, 1430224, -3204046, 3751117, -6480032, -5740224, 8077223, -6682432, -1883343, -4042101, -11630235, 4354023, -8336532, 6818798, -7369090, --12533788, -3629247, 7050189, -2563559, -4670240, 4594005, 6454262, 3564823, 7072201, 12362526, -9833328, -969052, 1564979, 1421097, -7289633, 1008244, -7705172, -7978439, 3452080, -5981279, --16639777, -12903692, 7306276, 14982993, -530428, -265214, 2224793, -6330782, -3874597, -16044387, --9375377, -4107599, -665183, -11490648, 16812112, 4066797, 9135932, -10405632, -13669270, -9265855, --4354560, 3286724, -15442555, -6033892, 6432251, -2296197, -18671296, -5487895, 1962800, 882079, -10793253, 4493073, -4027069, -7910793, 10247255, -5504001, -1106491, 8821863, 1913945, -8056285, --4998268, 78383, -15194521, 4483946, 10969883, -4189741, -6792491, 2479270, -7924215, -1923072, -1005022, -3900367, -4105989, 4748623, -6031745, -10848014, 5324686, -5776194, -9240622, -11082089, --6502044, 2182380, -5296232, 3023120, 14303315, 9431748, -2301029, 15241228, 13828184, -4990215, -1500554, 5310727, -7882876, -3292629, -16057809, 3561065, -4700305, -10024991, 25879862, -804770, -15793668, -7821136, -23037668, 6757058, 1785096, -664646, -10887742, -806917, -7225209, 18342732, -13091060, 12093554, 8503498, -13933948, -233539, 2208150, 12454868, -21277804, -2580739, -5006858, --6424734, 3504693, -7219840, 3038689, 4680978, 3842922, 3724811, 5272073, -1600412, -1837172, --10570451, -2209761, -1687922, 10575283, -81068, -9127342, -2287607, 11485816, -1368484, 6805376, -8312373, -5774047, -3639448, -13581760, -8106214, 27448600, 7120519, 12375411, 6469295, 1861868, -1003412, -16926466, 10189273, 1890323, 2989297, 9054328, 9582072, 15176267, -17173426, -6853157, --9530532, -986769, 2377265, -2081449, -4832912, -2673617, -14449344, -18017388, -11847667, -16967806, --2371359, -11218991, -19244674, -8083129, 35009888, 7945690, -5098663, -7270306, 1070521, -11256036, --22043382, 16153909, -12348, 10377715, -7969849, 7488813, 17873506, -1832340, 1876901, -4592394, -15508590, 13110925, 4948876, -21294984, 1350767, 3033321, 12906914, 18985366, -5857799, -4008278, --2769717, 5006858, 6544457, 5550172, -9942312, 4290136, -11440719, 8385387, 11017128, -5557688, --11622182, 6973417, -12643310, -11331197, -903017, 3122441, 15483357, 1797981, -2689187, 13466333, --3063922, 12090333, 21969294, 11199664, -376347, -14415521, -2048163, -8325257, -7429757, 14359149, -4823785, -14547054, -1050656, -11087995, -3780645, 19170050, 7723425, 2913599, 6998113, 11717745, -4639102, -15084999, 6430640, 13320841, 2656437, -9853729, 2248416, 2196339, -445066, -6799470, -8609262, 5616744, 5090610, -8522826, -408559, -10876468, -25558814, 8850854, -10159208, 2851322, -944356, 17969070, -12315819, -10885595, -4547834, -4944044, -6561100, 13320841, -11696807, -16489990, -4999879, -30874372, 950262, -5714991, -13063680, 16800838, -1033477, -826781, 7039989, -6424198, -5290863, -1472100, -18488760, -19967302, -201327, 4520990, 11826192, 6004365, -1375463, -1811403, --11679627, -5158256, 11617350, -17878338, 25119116, 15404974, 3253438, 19120658, -12589623, -4800163, --11574400, -11061688, -5262409, 9164923, 23531588, 937914, -12627741, -1262184, 765578, -424665, --1745904, -6542846, 5855651, 7053947, 15375446, 1030792, 17340930, 10892574, 4021700, 1370095, -2708514, -24882356, 12884365, -630286, -17564268, 15156940, -1969243, 20657718, -8826158, -8169028, --46883328, -4715337, 29434484, -6235756, 1903207, 23811298, -4679904, -691490, 4131759, 5650567, --6336151, 5649493, -1418950, -9221295, 9168681, 8498130, -26797374, 2390686, -23689966, -1581622, --11656541, -14970645, -1807108, -5116380, -12360379, 5973763, 3602941, 7772817, 13160317, -17849348, -22788022, 625455, -18552648, 798864, -12319040, -7815230, -13320841, -14359149, -4258460, 13338021, --10581189, 5920076, 16021839, -9432285, -13567802, -14948097, -18896782, -23153632, -11250130, -7198902, -3664144, -4229469, 8150238, 3359738, -11146514, -1852742, 17058536, 7641284, -19711752, 7700877, -722628, -7094749, -17847736, 12739947, -4628364, 17909476, 26877368, -525597, 25927106, -13830868, -16615081, -11312407, 17983028, 16446504, 6026913, -21614422, 17217988, -42319924, -3806415, -3040300, --4890357, 5104032, -26240102, 2789045, -6237903, -1119913, 10036265, 5465346, 11868068, -9281424, -7963943, -3960497, -23606750, -8032663, -17743046, -9246528, 9221832, -18514530, 996969, -6356552, --16229608, -1829656, 12730283, -18483928, -20146080, 8309151, 9450002, 81604, -10464688, 11053098, -9221295, 14074071, 9786620, 5415954, 14015015, 19360638, -11944841, 3378529, -10797011, 24084030, --3860639, -15782931, 17643188, 9097814, 2675765, -8875013, -14486925, 3323768, 5332202, 7921531, --2860448, -9875740, 5539971, -11586211, -1966021, -11450920, 34011848, 5924371, -12873628, 30167850, --6121402, 9417790, -10239739, 15272904, 19810000, -13604309, 18875844, 22846542, 27331024, 22785338, -720481, 15809238, 44181792, 12306692, -8236137, -5912023, 9802189, 3623879, 3834332, -421981, --18497888, 15696495, -41459856, 5147519, 8385387, -1133871, -8055748, -14996415, -7778723, 2543158, -11541114, 19198504, -11540577, -23133768, -19797114, -2087354, 149250, -13390634, 28288266, -12833362, --9354976, 12512850, -4588636, 2730526, -3111167, 25317222, 3616363, -24266566, 9326521, 3668439, -16680579, -5634997, 1380832, -9796284, 8065412, 4212826, 21198348, -4882304, 9334575, 10620380, --13506062, -14126684, 624918, 13390097, -25869124, -29960082, -9236864, -12271258, -1974074, -4348118, -2672544, 6760816, -6416681, 843424, -35089884, -29890824, 23248122, 24486146, -30391726, -23856932, --29240674, -16112570, -12221329, 13829258, -16019691, -29508036, 746787, -519154, -15814070, -3633542, --25342992, -2645700, -6460705, 7885560, -12254079, -2843268, -39230768, 34690452, 21581674, -3377455, -46580532, -4283693, -26341572, -2048699, 10026064, -15637439, -21626234, -4109747, -14966887, -366146, -3385508, -21330418, 31107374, 1360968, 2740726, -19662360, -6460705, 2449742, -6445136, 5390721, -6458020, 26401164, 3864934, -1032403, 20242718, 17710834, -7059853, 10578504, -14260902, 4081830, -10814728, 11807402, 28475096, -28829432, 16840566, 54489712, -759672, 9274445, 17298518, 2532420, -2389076, 9190693, 5365488, -17603460, -23022098, -7309498, 15770583, 5750961, -24082956, -11489574, --2794950, -10036802, 17952426, 2647847, 13234942, -33234994, -23538568, 11045045, 20793010, 15622407, -6443525, 34003256, 15497316, -11799349, 18188650, -14481556, -8872866, 3543348, 14829985, -43890808, --202937, 936303, -2580739, -4457639, 19958714, 2957085, -13201656, -21297132, 21843130, -18989662, --493921, 16061030, 10832444, -14588930, -5242545, -24314884, -1045288, 8810589, 8078834, 11890617, -1873143, -15249281, -21722334, 18718004, 8069707, 10129143, 2602213, 10315975, 1883880, 14302778, --23215908, -36437428, 9927817, -4022774, -8722005, 23052700, -4284767, -9506373, 18298708, 19625316, -14277545, 587337, -9986336, -14392435, -4571993, -19614578, 50732152, -2190970, 18176838, 6185827, --17037062, 16244103, -6482717, -13788993, 16037408, 15214385, -27819040, 22269942, -2607582, 30005716, --26889716, -17655536, 28460064, 2160906, -21373904, 26477936, -7023882, 43059196, -14782204, -8987219, --21177946, 20173462, 6112276, -12845173, 12127377, -13635984, 7320235, -6656126, -11775190, 32322850, --6487548, 21531744, -34273840, -7341173, 334471, -43383464, -8130910, 5011153, 21939230, -11509975, --8733816, -183073, -2072322, 28572270, -1625645, -16019154, 32679870, -5002563, -400506, 4841502, --11335492, 26101590, 3047816, -6645925, 14293651, 10066866, -13564044, -6185827, -5593658, 20078436, --41020696, -1827509, -6882685, -16048145, 8593156, -16304233, 26008712, -7583302, -29123100, -4294431, -47747688, -29251948, 21729850, -32494648, -7580081, 30042760, 24271934, -18017388, 9405978, -21736830, --25473452, 4513474, -10332618, 10499584, 4957466, -3192771, 6172942, -40882720, -13854491, -21572546, --27273042, 11914776, -9342091, -9667971, -14401025, -29867202, -22034256, 16470663, -2219961, 55252608, -11318849, 1999307, 20637854, 23250268, 9959492, 21972516, -12772159, -17424682, 19602768, -30713312, --2995203, -6628745, 2370822, 20986284, -13364328, 23352810, 10785200, 5071820, 7736847, -38956428, -26955214, 4639639, -26482232, 10404021, -28106266, 4703526, 39475044, -4996121, -22115860, -24555402, -11237782, 17438104, 15057618, 7449084, -24638616, -17579838, -6982543, -4808216, 34029564, -20971252, --11556683, 49225692, -26314728, -2087354, 20607254, 146029, 21699786, -2917894, -15385647, -10998338, --28876676, 15535970, 22753662, -31967442, 49468360, 16220481, -34764540, -32814088, -29943438, -37497212, --28858422, 1903207, 16935592, 3335042, -23455354, -9226127, 19214074, 537, -13471165, 18063022, --31442918, 2750390, -4580046, -31038118, -25562034, 5888400, -6646999, 23365158, -33836288, -3894999, --1382443, 23434952, -58744952, -54430656, -47081432, -30520038, 12375411, -12936441, 60677688, 15936476, --6408091, -13984414, -7590818, 17067664, -39355860, 46060840, 61158188, 24163486, -3594888, 48155172, --15217069, 29057602, 55621436, -10290205, 3193845, 10222559, 74011952, -18925236, -4496831, 43685724, -16838420, 13880261, -11901354, -45275396, 3334505, -35961224, 17278654, -44520556, -51496656, -956704, --2655901, -36516884, -1574106, -17985176, -36677412, -30056718, -47932372, -2786897, 49809272, -16275242, --8945343, -46080704, -23820962, -17394080, -14991046, 14701673, -10460930, 81398224, -18678276, -1978369, --29141354, 61088392, 51912196, -37045704, 42515344, -15607911, -59020368, -11986717, -4414690, 11353209, --12442520, -15092515, -5794985, -25872882, 9076877, 28978144, -33502892, -18060338, 24429774, 105075304, -11806328, -64860984, -16569984, -22447646, 4788352, 33402498, 58463096, 17608830, -49318572, -22549, -34026880, 8391829, 777926, -468151, 8992588, -3571265, -5810017, 41694468, 25614648, 23898272, --34112776, -20975546, 23805930, 10501195, 14282377, -10421201, 4836133, 46720116, 1658394, 39947492, -20774756, 22656490, 38132868, 7302518, -19023484, 6580427, -21824876, 7795903, 16815870, 6231461, -62207768, -18081812, -38257420, -35539244, 48468168, 24373402, 26492432, 19935090, -25615722, -31052614, --19152332, 1916092, 11931419, -4145717, 18426484, 34793532, -281320, 26439818, 22611392, -27674084, --4159676, 13377749, -12610561, -8691940, -13219909, -47124920, -6345814, 28299002, 4569845, 51928840, -32962800, -15269682, 18016850, -3700651, -27634356, 4979478, 80083424, 23267986, 32287416, -15173046, --77538656, -36133024, -57773216, -16707423, 34664680, 87195352, 35489316, 11341398, -43179992, -36404144, -24209120, 44207560, 18313740, 53265112, -4974646, -32021128, -52182244, -22367116, -10526428, 39887900, -1716913, 23689966, 16675211, 4850092, 48036524, 37338300, -7135015, -3481608, -50422380, -10122164, --4355634, 2280628, 23574002, 49501108, 25998510, 24350318, 41668700, 27278948, -50770272, -36767068, --15676094, -28679108, 27423904, 22207128, 42345692, 36976448, 36812164, 12801687, 2777233, -33282238, --40048424, -32840394, 6739341, 17027398, -5349382, -4617090, 67702640, 18141942, -11111080, -7761006, -43567076, -54899884, 3856344, -104087992, -31280784, 21996676, -45863272, 27477054, 5349382, -9892920, -37969120, 3468723, -115902376, -74394736, -35985384, 33944200, 14284524, 161773168, 178037664, 105389368, -197549712, 157703152, 172297440, 116491328, 147426896, 116111760, 9766756, -51516524, -69096896, -70964136, --146513680, -182563488, -185266640, -131311648, -96490200, -36483064, 18901078, -48716204, 45999636, -62283468, --11984569, 3306051, -7434589, 25414396, -48779556, 97562864, 31021476, 90759104, 68488624, 41690172, -39130912, 57097296, 48281336, 59355376, 125164472, 114416856, 101272104, 113453712, 146351552, 129560376, -130612104, 212603568, 94868848, 156988032, 206231984, 144597584, 192188512, 110306032, 148384672, 116758152, -144128896, 146131968, 82794088, 107959912, 100515120, 106456672, 115922776, 58412092, 39406860, -29678760, -31663036, -48875116, -19325742, -89413168, -88047904, -101545912, -260147248, -222526016, -175442432, -80647136, --13482976, 0, 0, }, +-4000225, 3040300, -444529, -324270, -3609383, 2025077, 5330592, -3006477, -1369558, 754841, +-2290828, -3757023, 580894, 78383, -3585761, -6129992, 4901632, -2550137, 8421357, -464930, +4721243, -6693707, -304406, 2417530, -1489280, -3539053, -1470489, -2531346, -436476, -2094333, +224412, -438624, -3110093, 1935420, -4150012, 4902705, -1733019, -1356673, -803159, 5811628, +5447093, 210990, 4046933, 2596308, -1280437, -1222455, 5425618, -2703145, -6251325, -83752, +-1341640, 6776385, 349503, 847719, -4264366, 11811, -2239826, -2360622, -1159104, -2544768, +1848983, -3678640, -1647657, 938450, -1364189, -3943854, -5515275, -107374, 3163244, 1662152, +2664490, -53687, -676457, 988916, -346819, -3704946, -3823595, -6515466, 2431488, -3365107, +-5735392, -4250944, 3114925, -8042327, -3912715, -9757629, 3612068, 3840775, 5691906, 2555506, +-2946348, 6759205, -4532801, 1074279, 490700, -1390496, -4810900, -3007014, -5326297, -148713, +-2069637, 2800856, 2438468, -3077881, -527207, -994822, -4865124, -596464, -821413, 1928977, +240518, 4319127, -1342714, 5563594, -2247342, -315680, 1285806, -4742181, 3347390, -1734093, +-1345399, 86973, -855235, 1868311, -8792335, 3805878, 5801427, 346282, 3428458, 1242319, +-3727495, -1000191, -4077535, 5497558, -1284732, -4211753, 3885335, -5981816, 513785, 1603633, +-5961952, 210990, -1216550, -2913599, 2358474, -84289, 748398, -3488050, -1758789, -10506564, +-1186485, 1881196, -14341970, -8486319, 1502165, -4544076, 801548, -4688494, -8268886, -5362804, +9220758, 5504538, -1516124, 6393596, 1408749, 1646583, 1694902, -2949569, -901406, 5223754, +-4190278, 2433099, 3666828, -3882651, -6384469, 3011309, -5229123, 694711, 2896956, 7710003, +-1771674, -3529390, -3260954, 1315334, 4067334, -5466420, -104153, 4755603, 1759326, 636192, +-360777, -274878, 5935108, -64961, 5433671, 3777424, -1446330, 3772592, -1317481, -139050, +-612570, -9820443, 3416110, 5870147, -3328063, -1648731, 1329829, 1772748, 1557463, 1130650, +-595390, -948114, 287226, -2241436, 6806450, -2777770, 744103, 4044786, 2921115, -2109366, +2647311, 1225139, 1695975, 4156455, 3237332, -4563403, 5035313, 6123013, -2185602, -5443871, +7019587, 4935991, 10973105, -1646583, 999117, 3633006, -5631239, -914828, 1966021, -2030446, +-7576323, -223338, 597537, 5168457, -6157910, -14340359, -11954505, -7019587, 2602213, 7146289, +-7167764, 4146254, -3617973, 5578626, 3954054, 3858491, 6208375, 3808026, -5233955, -4401268, +661425, 3673808, -477278, 542240, 8754754, 184684, 1341640, 4727149, 4490389, 1049046, +-95563, 11365557, -1012002, -3884798, -1494649, 2809982, 2987150, -1852205, 5706401, 1479616, +2935610, -3945464, -4057670, -1120987, -2788508, 1796370, -2285996, 6863895, -7815767, -6300717, +7764227, -434329, -704375, -8975408, 2532420, -4085588, 4651450, -3389266, -10914586, 116501, +4830765, -3779034, 6332930, -3329674, 2538863, 17536352, 3956739, 4784057, 1852205, -3825205, +8209830, -3797825, -2500208, 10774999, -935229, 8698383, -1036161, -9604084, 3320010, -3147137, +10640245, 5841693, -885300, -9473087, -6880001, 9089225, 10435697, -12155294, 6048388, 5133023, +3582540, -615791, 1063004, 1226213, -1072668, 12419972, -693100, -1885491, -3507915, -3883187, +-5370320, -1502165, -421444, -6810745, -2652679, 2076617, -5053566, 521302, 130997, 7570954, +-2897492, 500364, 3241627, 573378, 6825240, 3454764, 7096897, 3909494, 2036351, -7350300, +623307, -5338108, -5518496, 1655710, 7205882, 121333, 6146098, -2223719, -5048197, -632971, +48318, 2407329, 4085051, -1425392, -363998, -1718524, 2061584, 2446521, -6739878, 2144263, +637266, 4982699, 3354370, 4014721, 11094974, 5914707, -4953708, -4286378, -12146704, -734976, +-382252, -6385543, 2319819, 9694815, 1040456, -7587597, 6929930, 6735046, -848793, 2695629, +6651294, 1615982, -6352257, -959925, 14249091, 7083475, 1305670, -9536975, -3602941, 8652748, +2778844, -1333587, 4669167, 4325032, 4345433, -90731, 8709657, -143881, -1406065, 2183991, +-4720706, -5909875, -582505, 894427, 3023657, 1726040, -5769752, 5418101, 9365176, 4858682, +-631897, 7073275, -8598525, 4532801, -5308043, 4982162, -1818382, -6083821, -782758, -7886634, +-13120051, -4804995, -5575942, -836982, -679679, -6834904, 583579, -2282775, 3042448, 2254321, +3630321, -1004486, 756988, -6631430, -225486, 759136, 7020661, -3468723, -12169253, -7417409, +16307454, -3267933, -4033511, 1365800, -956167, 18275086, -5597953, -9257265, -132607, -9123584, +2005750, 7992934, 7795903, 2985539, -16966732, 14055280, -11107322, 6120866, -7708930, -5163088, +-4475893, 7238094, 6961068, -10554345, 503585, 5234492, -3775813, 2643552, 2856690, -3519726, +138513, -8588324, -6451041, -13496398, 7896298, -1475858, 13701483, -6070400, 2676838, 9898826, +-2730526, -2280628, -4546760, 11298448, 7476465, -12687870, 3379603, -6925098, -2911988, -2330020, +-7836168, 5060009, 1952600, 12271258, 7777112, -13984950, -2830384, -5604933, 8107825, 3694209, +281857, -7774428, 812823, -78383, 6706055, -310848, 408559, -8837432, -722628, 8087424, +-6920803, 2406256, -2462627, -140660, -5356361, 569083, 1816234, 4044786, -4481262, 273804, +-9458592, -1222992, -10921565, 1658931, -2753074, 6206228, -469225, 5249524, -7507603, -14139032, +2942590, 9386651, 1185948, -1228361, 7323993, 4873714, -11570642, -287763, -4410932, 14453102, +-728534, 1576253, 1055488, 20938, -552440, -5362804, 11437498, -1126892, -16474958, -3227131, +9794136, -6553047, 1523103, -434865, 1185411, -2232846, 1430224, -3204046, 3751117, -6480032, +5740224, 8077223, -6682432, -1883343, -4042101, -11630235, 4354023, -8336532, 6818798, -7369090, +-12533788, -3629247, 7050189, -2563559, -4670240, 4594005, 6454262, 3564823, 7072201, 12362526, +9833328, -969052, 1564979, 1421097, -7289633, 1008244, -7705172, -7978439, 3452080, -5981279, +-16639777, -12903692, 7306276, 14982993, -530428, -265214, 2224793, -6330782, -3874597, -16044387, +-9375377, -4107599, -665183, -11490648, 16812112, 4066797, 9135932, -10405632, -13669270, -9265855, +-4354560, 3286724, -15442555, -6033892, 6432251, -2296197, -18671296, -5487895, 1962800, 882079, +10793253, 4493073, -4027069, -7910793, 10247255, -5504001, -1106491, 8821863, 1913945, -8056285, +-4998268, 78383, -15194521, 4483946, 10969883, -4189741, -6792491, 2479270, -7924215, -1923072, +1005022, -3900367, -4105989, 4748623, -6031745, -10848014, 5324686, -5776194, -9240622, -11082089, +-6502044, 2182380, -5296232, 3023120, 14303315, 9431748, -2301029, 15241228, 13828184, -4990215, +1500554, 5310727, -7882876, -3292629, -16057809, 3561065, -4700305, -10024991, 25879862, -804770, +15793668, -7821136, -23037668, 6757058, 1785096, -664646, -10887742, -806917, -7225209, 18342732, +13091060, 12093554, 8503498, -13933948, -233539, 2208150, 12454868, -21277804, -2580739, -5006858, +-6424734, 3504693, -7219840, 3038689, 4680978, 3842922, 3724811, 5272073, -1600412, -1837172, +-10570451, -2209761, -1687922, 10575283, -81068, -9127342, -2287607, 11485816, -1368484, 6805376, +8312373, -5774047, -3639448, -13581760, -8106214, 27448600, 7120519, 12375411, 6469295, 1861868, +1003412, -16926466, 10189273, 1890323, 2989297, 9054328, 9582072, 15176267, -17173426, -6853157, +-9530532, -986769, 2377265, -2081449, -4832912, -2673617, -14449344, -18017388, -11847667, -16967806, +-2371359, -11218991, -19244674, -8083129, 35009888, 7945690, -5098663, -7270306, 1070521, -11256036, +-22043382, 16153909, -12348, 10377715, -7969849, 7488813, 17873506, -1832340, 1876901, -4592394, +15508590, 13110925, 4948876, -21294984, 1350767, 3033321, 12906914, 18985366, -5857799, -4008278, +-2769717, 5006858, 6544457, 5550172, -9942312, 4290136, -11440719, 8385387, 11017128, -5557688, +-11622182, 6973417, -12643310, -11331197, -903017, 3122441, 15483357, 1797981, -2689187, 13466333, +-3063922, 12090333, 21969294, 11199664, -376347, -14415521, -2048163, -8325257, -7429757, 14359149, +4823785, -14547054, -1050656, -11087995, -3780645, 19170050, 7723425, 2913599, 6998113, 11717745, +4639102, -15084999, 6430640, 13320841, 2656437, -9853729, 2248416, 2196339, -445066, -6799470, +8609262, 5616744, 5090610, -8522826, -408559, -10876468, -25558814, 8850854, -10159208, 2851322, +944356, 17969070, -12315819, -10885595, -4547834, -4944044, -6561100, 13320841, -11696807, -16489990, +4999879, -30874372, 950262, -5714991, -13063680, 16800838, -1033477, -826781, 7039989, -6424198, +5290863, -1472100, -18488760, -19967302, -201327, 4520990, 11826192, 6004365, -1375463, -1811403, +-11679627, -5158256, 11617350, -17878338, 25119116, 15404974, 3253438, 19120658, -12589623, -4800163, +-11574400, -11061688, -5262409, 9164923, 23531588, 937914, -12627741, -1262184, 765578, -424665, +-1745904, -6542846, 5855651, 7053947, 15375446, 1030792, 17340930, 10892574, 4021700, 1370095, +2708514, -24882356, 12884365, -630286, -17564268, 15156940, -1969243, 20657718, -8826158, -8169028, +-46883328, -4715337, 29434484, -6235756, 1903207, 23811298, -4679904, -691490, 4131759, 5650567, +-6336151, 5649493, -1418950, -9221295, 9168681, 8498130, -26797374, 2390686, -23689966, -1581622, +-11656541, -14970645, -1807108, -5116380, -12360379, 5973763, 3602941, 7772817, 13160317, -17849348, +22788022, 625455, -18552648, 798864, -12319040, -7815230, -13320841, -14359149, -4258460, 13338021, +-10581189, 5920076, 16021839, -9432285, -13567802, -14948097, -18896782, -23153632, -11250130, -7198902, +3664144, -4229469, 8150238, 3359738, -11146514, -1852742, 17058536, 7641284, -19711752, 7700877, +722628, -7094749, -17847736, 12739947, -4628364, 17909476, 26877368, -525597, 25927106, -13830868, +16615081, -11312407, 17983028, 16446504, 6026913, -21614422, 17217988, -42319924, -3806415, -3040300, +-4890357, 5104032, -26240102, 2789045, -6237903, -1119913, 10036265, 5465346, 11868068, -9281424, +7963943, -3960497, -23606750, -8032663, -17743046, -9246528, 9221832, -18514530, 996969, -6356552, +-16229608, -1829656, 12730283, -18483928, -20146080, 8309151, 9450002, 81604, -10464688, 11053098, +9221295, 14074071, 9786620, 5415954, 14015015, 19360638, -11944841, 3378529, -10797011, 24084030, +-3860639, -15782931, 17643188, 9097814, 2675765, -8875013, -14486925, 3323768, 5332202, 7921531, +-2860448, -9875740, 5539971, -11586211, -1966021, -11450920, 34011848, 5924371, -12873628, 30167850, +-6121402, 9417790, -10239739, 15272904, 19810000, -13604309, 18875844, 22846542, 27331024, 22785338, +720481, 15809238, 44181792, 12306692, -8236137, -5912023, 9802189, 3623879, 3834332, -421981, +-18497888, 15696495, -41459856, 5147519, 8385387, -1133871, -8055748, -14996415, -7778723, 2543158, +11541114, 19198504, -11540577, -23133768, -19797114, -2087354, 149250, -13390634, 28288266, -12833362, +-9354976, 12512850, -4588636, 2730526, -3111167, 25317222, 3616363, -24266566, 9326521, 3668439, +16680579, -5634997, 1380832, -9796284, 8065412, 4212826, 21198348, -4882304, 9334575, 10620380, +-13506062, -14126684, 624918, 13390097, -25869124, -29960082, -9236864, -12271258, -1974074, -4348118, +2672544, 6760816, -6416681, 843424, -35089884, -29890824, 23248122, 24486146, -30391726, -23856932, +-29240674, -16112570, -12221329, 13829258, -16019691, -29508036, 746787, -519154, -15814070, -3633542, +-25342992, -2645700, -6460705, 7885560, -12254079, -2843268, -39230768, 34690452, 21581674, -3377455, +46580532, -4283693, -26341572, -2048699, 10026064, -15637439, -21626234, -4109747, -14966887, -366146, +3385508, -21330418, 31107374, 1360968, 2740726, -19662360, -6460705, 2449742, -6445136, 5390721, +6458020, 26401164, 3864934, -1032403, 20242718, 17710834, -7059853, 10578504, -14260902, 4081830, +10814728, 11807402, 28475096, -28829432, 16840566, 54489712, -759672, 9274445, 17298518, 2532420, +2389076, 9190693, 5365488, -17603460, -23022098, -7309498, 15770583, 5750961, -24082956, -11489574, +-2794950, -10036802, 17952426, 2647847, 13234942, -33234994, -23538568, 11045045, 20793010, 15622407, +6443525, 34003256, 15497316, -11799349, 18188650, -14481556, -8872866, 3543348, 14829985, -43890808, +-202937, 936303, -2580739, -4457639, 19958714, 2957085, -13201656, -21297132, 21843130, -18989662, +-493921, 16061030, 10832444, -14588930, -5242545, -24314884, -1045288, 8810589, 8078834, 11890617, +1873143, -15249281, -21722334, 18718004, 8069707, 10129143, 2602213, 10315975, 1883880, 14302778, +-23215908, -36437428, 9927817, -4022774, -8722005, 23052700, -4284767, -9506373, 18298708, 19625316, +14277545, 587337, -9986336, -14392435, -4571993, -19614578, 50732152, -2190970, 18176838, 6185827, +-17037062, 16244103, -6482717, -13788993, 16037408, 15214385, -27819040, 22269942, -2607582, 30005716, +-26889716, -17655536, 28460064, 2160906, -21373904, 26477936, -7023882, 43059196, -14782204, -8987219, +-21177946, 20173462, 6112276, -12845173, 12127377, -13635984, 7320235, -6656126, -11775190, 32322850, +-6487548, 21531744, -34273840, -7341173, 334471, -43383464, -8130910, 5011153, 21939230, -11509975, +-8733816, -183073, -2072322, 28572270, -1625645, -16019154, 32679870, -5002563, -400506, 4841502, +-11335492, 26101590, 3047816, -6645925, 14293651, 10066866, -13564044, -6185827, -5593658, 20078436, +-41020696, -1827509, -6882685, -16048145, 8593156, -16304233, 26008712, -7583302, -29123100, -4294431, +47747688, -29251948, 21729850, -32494648, -7580081, 30042760, 24271934, -18017388, 9405978, -21736830, +-25473452, 4513474, -10332618, 10499584, 4957466, -3192771, 6172942, -40882720, -13854491, -21572546, +-27273042, 11914776, -9342091, -9667971, -14401025, -29867202, -22034256, 16470663, -2219961, 55252608, +11318849, 1999307, 20637854, 23250268, 9959492, 21972516, -12772159, -17424682, 19602768, -30713312, +-2995203, -6628745, 2370822, 20986284, -13364328, 23352810, 10785200, 5071820, 7736847, -38956428, +26955214, 4639639, -26482232, 10404021, -28106266, 4703526, 39475044, -4996121, -22115860, -24555402, +11237782, 17438104, 15057618, 7449084, -24638616, -17579838, -6982543, -4808216, 34029564, -20971252, +-11556683, 49225692, -26314728, -2087354, 20607254, 146029, 21699786, -2917894, -15385647, -10998338, +-28876676, 15535970, 22753662, -31967442, 49468360, 16220481, -34764540, -32814088, -29943438, -37497212, +-28858422, 1903207, 16935592, 3335042, -23455354, -9226127, 19214074, 537, -13471165, 18063022, +-31442918, 2750390, -4580046, -31038118, -25562034, 5888400, -6646999, 23365158, -33836288, -3894999, +-1382443, 23434952, -58744952, -54430656, -47081432, -30520038, 12375411, -12936441, 60677688, 15936476, +-6408091, -13984414, -7590818, 17067664, -39355860, 46060840, 61158188, 24163486, -3594888, 48155172, +-15217069, 29057602, 55621436, -10290205, 3193845, 10222559, 74011952, -18925236, -4496831, 43685724, +16838420, 13880261, -11901354, -45275396, 3334505, -35961224, 17278654, -44520556, -51496656, -956704, +-2655901, -36516884, -1574106, -17985176, -36677412, -30056718, -47932372, -2786897, 49809272, -16275242, +-8945343, -46080704, -23820962, -17394080, -14991046, 14701673, -10460930, 81398224, -18678276, -1978369, +-29141354, 61088392, 51912196, -37045704, 42515344, -15607911, -59020368, -11986717, -4414690, 11353209, +-12442520, -15092515, -5794985, -25872882, 9076877, 28978144, -33502892, -18060338, 24429774, 105075304, +11806328, -64860984, -16569984, -22447646, 4788352, 33402498, 58463096, 17608830, -49318572, -22549, +34026880, 8391829, 777926, -468151, 8992588, -3571265, -5810017, 41694468, 25614648, 23898272, +-34112776, -20975546, 23805930, 10501195, 14282377, -10421201, 4836133, 46720116, 1658394, 39947492, +20774756, 22656490, 38132868, 7302518, -19023484, 6580427, -21824876, 7795903, 16815870, 6231461, +62207768, -18081812, -38257420, -35539244, 48468168, 24373402, 26492432, 19935090, -25615722, -31052614, +-19152332, 1916092, 11931419, -4145717, 18426484, 34793532, -281320, 26439818, 22611392, -27674084, +-4159676, 13377749, -12610561, -8691940, -13219909, -47124920, -6345814, 28299002, 4569845, 51928840, +32962800, -15269682, 18016850, -3700651, -27634356, 4979478, 80083424, 23267986, 32287416, -15173046, +-77538656, -36133024, -57773216, -16707423, 34664680, 87195352, 35489316, 11341398, -43179992, -36404144, +24209120, 44207560, 18313740, 53265112, -4974646, -32021128, -52182244, -22367116, -10526428, 39887900, +1716913, 23689966, 16675211, 4850092, 48036524, 37338300, -7135015, -3481608, -50422380, -10122164, +-4355634, 2280628, 23574002, 49501108, 25998510, 24350318, 41668700, 27278948, -50770272, -36767068, +-15676094, -28679108, 27423904, 22207128, 42345692, 36976448, 36812164, 12801687, 2777233, -33282238, +-40048424, -32840394, 6739341, 17027398, -5349382, -4617090, 67702640, 18141942, -11111080, -7761006, +43567076, -54899884, 3856344, -104087992, -31280784, 21996676, -45863272, 27477054, 5349382, -9892920, +37969120, 3468723, -115902376, -74394736, -35985384, 33944200, 14284524, 161773168, 178037664, 105389368, +197549712, 157703152, 172297440, 116491328, 147426896, 116111760, 9766756, -51516524, -69096896, -70964136, +-146513680, -182563488, -185266640, -131311648, -96490200, -36483064, 18901078, -48716204, 45999636, -62283468, +-11984569, 3306051, -7434589, 25414396, -48779556, 97562864, 31021476, 90759104, 68488624, 41690172, +39130912, 57097296, 48281336, 59355376, 125164472, 114416856, 101272104, 113453712, 146351552, 129560376, +130612104, 212603568, 94868848, 156988032, 206231984, 144597584, 192188512, 110306032, 148384672, 116758152, +144128896, 146131968, 82794088, 107959912, 100515120, 106456672, 115922776, 58412092, 39406860, -29678760, +31663036, -48875116, -19325742, -89413168, -88047904, -101545912, -260147248, -222526016, -175442432, -80647136, +-13482976, 0, 0, }, }, { { 1787243, --403190, 1455457, -329102, 6126771, -915902, -234076, 7471096, -1792612, 8322036, 1512365, --3323231, 5019206, 2379949, -3670050, 1390496, 1989107, 594316, 3205656, -833761, 2577517, --537, -3583613, 1549410, 3954591, 2282775, 2304250, -457414, 335007, 22549, 1433982, -2919504, -6963753, -3382287, 161061, 1675574, 652835, -2704756, 5324149, 1768990, -1191317, -2855617, 1030792, 3949759, 1143535, -1539209, -3018825, 3193845, 214212, -56371, -1628330, -900333, -2840584, -1970316, 1321239, 2859375, -1372242, 634581, -27917, -399969, 5279052, -1985349, -627602, 843424, 2306934, 224412, 2361695, -3019362, 2885681, 3200288, -1607392, --5352603, -2806761, -1466731, 5539434, 60666, -1999844, -515933, -4878546, -3432753, 2224256, -137976, -3061775, 3794067, 2615635, -897648, 264141, -587874, 3129421, -4371740, 1641751, -3154117, 2869575, -6267968, -4319664, -3153580, 4181151, 928250, 1376537, -1807644, 4453881, -1581622, -1087701, 28991, -1252520, 778463, 1671816, -1081795, -1269163, -3828427, 3974992, -6508486, 785979, 4092567, -776852, 734976, 1508607, 1711545, -5016522, 234613, -5242008, --1326071, -747324, 1520955, -2648384, -219580, 1140851, 388695, -3061238, -23085, 340376, -2350958, -3252364, -4229469, -551366, 5368709, 8871792, -148176, 1461363, 445066, -1882269, --5506685, -1321239, 3539053, -1638530, 3525095, 1545651, 3604551, -6442, 1345399, 2401961, --5445482, -1385127, -5160403, 2927557, 456340, -2558190, 11362336, -4524211, -7949448, 484258, -3842385, -813359, -5958194, -1862405, -2530810, -1130113, -2772938, -1085553, 4274566, -434329, --2622615, 4642860, 801548, 4503273, -1141388, -1292248, 1882806, -32212, 2175401, -1028108, -4478577, 7011534, -1888175, -4984847, -3447248, 2791192, 75162, -11213086, -967978, -4575214, --1559610, 5226975, -3697967, -3051574, 3802120, -2627446, -462783, 4762045, 1777580, -4112431, -1815697, -3026341, -6462852, 1866700, 2615635, -5181878, -2814814, -1673427, -2035278, -301721, -2164127, 3108483, 5156108, 5430450, -1341104, 259846, -2244121, 2102923, 1577864, -1698660, -2388002, 3158412, -3542274, -9136469, -4521527, 2698850, 4087735, 1476932, 4425427, -3812320, -4625680, 5496485, -1502165, 6090264, -778463, 4458176, -2102923, 38118, -1881733, 5722507, -2332704, -344134, 5261872, -2883534, -2149094, 3695819, -8993662, -1692754, 542777, -2046552, --8014946, -5049271, 3387119, -3287261, -2062121, -17180, 6343130, -1651952, -4380867, -489089, -1653026, 3420942, -515396, -5867999, -3663607, -1205812, -2910914, 792421, -4962835, 2308545, --4672925, -7052873, 226560, 2240899, 2800856, -2381023, -1586454, -4701379, 5834713, 3192235, -798864, -132607, -186831, -2180770, -1095754, 1778117, 2455648, 8621073, -1043677, 2024540, -518080, -450972, -4393215, -3446711, 5888400, -2688650, 476741, 1475858, 718870, 2173790, -2726767, 2399813, 5802501, -3828427, -5665599, -4607426, 2942590, 6386617, -1131724, 4902705, --4283156, -5260798, 4440996, -2166811, 529355, 1672890, 5563594, 2084670, 8792872, -3730179, --4536023, 2101313, -2459406, -2344515, 5049808, -7603703, -4616553, 871342, -1350767, 3615289, --2466385, 1086627, 6340983, -5626944, 4466229, -3331821, 2960843, -3100430, -741956, -357019, -6604586, 1387811, 432718, -4497368, 446140, -5375152, 2320893, 1602023, -3493956, 148713, --1295470, 9926206, 1563905, 890132, -8119636, -4633196, -6791954, 5835250, -3306051, -73014, -3229279, 12683575, 9040369, -3117073, -7247758, -2775086, -6234145, 7378754, -969052, -1497333, --2677375, -1576253, -212064, -2718178, -1327145, -5069672, 3703873, -5236639, -8736500, 8926016, -4349728, -9783399, 9798431, -1738388, -337692, -13660680, 8239358, 5148592, -10663330, 3047816, --1570347, 3936875, 1181653, 4568772, 3277597, 1031866, -4835597, 295279, 2094333, -6868727, --2623688, -8070244, -1124745, -5076652, -2399813, 738198, -5958731, -2434173, -8890045, 3299072, -1132261, 643708, 1025960, -4058744, -7716983, -2608656, 3011309, -1408749, -472446, 8198556, --12120398, 5076115, 6503654, -1009854, 594316, -2485176, -784905, -4071629, -5910412, -4216048, --4629438, -3258270, 3218541, 1661079, 2868501, 4148402, -865973, -2207613, 6042482, 11378979, -8080981, -97711, -9602473, 2772402, -1464047, 1603633, 10205379, 216359, 10240813, 9655086, -14874545, 3377992, -2234994, -1039382, 4821638, -1859721, 14432164, -1824824, -1802276, 17509508, -476741, 8693014, -2982318, -76236, -401043, 1145146, -1898376, 916439, 110595, -831076, --9281424, -1246614, -1900523, -2052994, -3619047, 5874442, 3320547, 3365644, -4995584, -923955, --8135742, -3758097, 2068027, -1023276, -4747013, -1934346, 3351148, 6143951, 4416300, -2385318, --7461969, -615791, 2805151, -1680406, 4781373, 2463164, 6307160, 7547868, -1966021, -409633, --7887708, -10721849, 10436771, 4872641, 345745, -820876, 416075, -4176319, -3354370, -495532, -8666707, 4089346, 2327872, 9093520, -6334003, 1665911, -4925254, -5144297, 5299453, 3665218, -4811437, 13772350, 1005022, -7179575, 2901251, -7153805, -7817914, -10869488, 4322885, -10166188, -170188, 10995653, -11491185, 4121021, 5410585, -3273839, -14215268, 47782, 8603893, -9453223, -5980205, -789737, -3934727, -12212203, -141197, -8846559, 1747515, -4555887, -6580427, -8606041, -3700651, -1330366, -273804, 7931731, -4647155, 6672769, -4926328, -2189897, 10659572, 3447248, --5304285, 4154307, 2776160, -4940823, 2812130, 2498597, -1567126, -2179696, 709207, -2445447, --2441689, 1582696, 2224793, 14049375, -13013214, 2030446, 1200443, -4914517, 9962177, 5325223, --2907156, -10489921, 1329829, -1199370, -2689723, -6693170, -7186554, 9156333, 6550362, 575526, --395137, 4745402, 3110630, -2529199, 4626217, 2525441, -1861868, 9493488, -2852932, 5441724, --3067144, 1912334, 4899484, -10974715, 8099235, -4693326, -1809792, -6373732, -4277251, 3604015, --3374771, 2915746, 12284143, 3969624, 6833293, -15611669, -10029822, -5676873, -3506304, 1493038, -115964, 2484102, -12767327, 6754373, 3079492, 1550483, 12551505, 25233, -6814503, 11418171, -4759898, -5366025, 2566243, -6845104, 6296422, 2681670, 8327942, -7163469, -4744328, 1859721, --6838662, 8681740, -7938174, -349503, 8108362, 7060926, -14821395, -642098, 956704, 1526324, -2713883, 16199006, 4027069, 790274, -4786741, -4398584, -8630737, -5064304, 12406550, 28991, --14223321, -57445, 3648038, -8525510, -8749922, 769873, -5538897, 2087354, 13684840, 6189585, -6025302, -5821292, -13728863, 775242, -1824287, 6169184, -453656, -12164958, -18944028, -5772436, -5461588, 14598057, 2165201, 7508677, 26170846, 4211753, 4500052, -4179540, -12487617, 6943352, --6051609, 6373195, -1566589, 17098264, 12587475, -6856379, -14160507, -11451993, 8505109, -7710540, -10420128, 4365298, 3354906, -3862249, -1445257, 12169253, -2532957, 10692858, 10889890, 5379447, -7596724, -8854075, 8221641, 4165582, -4608500, 11799886, -5506685, 10668162, 663572, 855772, --16382616, 9348533, 692027, -3484829, 7783555, -11756399, -4719632, 6272800, 5269388, -10928007, -1392106, -7213398, -4134980, 9706626, 1046898, 2468533, -1459752, -12560095, 7558606, 6810208, -64961, 5152350, 2175938, -6178311, -6100464, -1491964, 5655935, -11967926, -1201517, -804233, --577673, -2091649, 3191161, 2991445, 9470403, 22771916, 7723962, 2351495, -7898445, -22002580, -16220481, 4039417, -13206488, 3469260, -628676, 2895345, 3900367, -10883447, -20832738, -17732846, -6705518, 12668543, -1672890, 13347685, -5499169, 10282689, 14359686, 17443472, -2949569, 12737262, --10799695, 3913789, -5385352, 1010391, 8313983, -898185, -2719251, 2675765, 10208600, -7018514, --10838350, -12732967, 26712550, -507343, -22012, -12050604, 13102871, 3302293, -22212498, -14165876, -6625524, -3849901, -2781528, 8647917, 4532801, 22224308, 14035953, -1357210, -11723650, -13544179, --5818607, -5911486, -13407277, 13283797, -8609799, 10361609, 11152419, -10159208, -10474351, -12548821, --15437723, 3434900, 1639604, -7084549, -5803575, -13692356, -2420751, -13718126, 4874788, -100932, --1865090, -913217, -12212740, -24854976, -4981625, -6791954, 1783485, -6128919, 1483374, 2108829, --2208150, 10011032, -13108240, -4571993, -12429635, -1104344, -5998459, 14376329, 16986596, 12792560, --18165564, 12657269, -6340446, 9496173, -3494493, 6884833, -5827734, -8405251, 3162170, -10714333, -6874095, 7448547, -709743, 4284767, -9120900, -1655173, 16108275, -13091060, 817654, -4206921, --4984847, -10627360, -401579, 15242302, 20805896, -13464186, 6358699, -2044941, -12459700, -13208098, --13728326, -6664716, 26167626, 15464567, -4926865, 8106214, -5638219, 7027104, -14455249, 8215736, --635118, -7953743, 19634980, 10221485, 3697967, 6575058, 5222680, 18852222, 1856500, -15426449, -5646809, 12744779, 8421894, -26523034, 15471546, -9896678, -12395812, -1713155, -1262720, -94489, -16982838, 11157788, 46131708, 12957916, -7815767, 2994129, 7707319, 205085, 15306190, 11443940, -10569378, -13756243, -23037668, 22907208, -13100724, 2125472, 7823283, 25101400, 9976135, -15342160, -13625247, -13908715, -3000035, -19102404, -25052008, -2955474, 6554657, 6515466, 4837207, 6124087, --2150168, -17344688, -6502581, 5201206, 5582384, -9375377, 18773838, 11666742, -11566347, 5882495, -9244917, 3246459, 377957, -10996190, -1501628, -7918309, -4539781, 454730, 11605002, 28679108, --8164196, 1907502, 4145180, 10103911, -10685342, 36284420, -3381213, 2552821, 2964601, -18075370, --16694001, -28064390, -11457899, 13144211, -5188858, 5661304, 5916855, 23667418, 4159139, 2329483, -1529545, 17512730, 10122701, -11657615, 19354196, -20689932, 5367636, -5153961, -18893024, 10567230, -5502927, 13066364, -3176665, -29586420, 2770791, -19878720, -17022030, 5051419, 4677220, 8086887, --4576825, 5825587, -471373, -10087268, 16618302, -2585034, -4664335, -6379100, -10563472, -9560597, -6542846, -12030740, 3721052, -7618735, -4547297, -3165391, 16549583, -2855617, 17745194, 10819023, --3506304, 5916318, 6800007, 12345883, -7267622, -10897943, 2756295, 7520488, 10307385, 16338056, --16306380, -16370268, 8469139, 6273874, 20779052, -8917963, -77846, 10462003, 1433982, 3559991, --2166811, 13692893, 17551384, 8366060, -468151, 11163157, 35304632, -6257768, -8097624, 13782550, -425202, 21051246, 6620155, 10682657, 13063143, -1958505, 9824201, 24532316, -4075387, -25371982, -21351356, 7822209, -7245610, 5579700, -36595804, -15721728, -2936147, 29851096, 11586211, -33578056, -3466576, -4269198, 1004486, 8050916, -3816079, -16173773, 514322, -572304, 13961865, 33342904, --7145752, 12343199, 18453326, 1476932, -7720741, -2817499, 6131603, 33461554, -2578054, 369904, -23550916, -7802345, 4954782, 2680060, -2323041, -3982509, 7699266, -25718264, -986769, 11779485, -18917720, 24930674, -20036022, 3670050, 18126910, 1761474, 35334696, -10449119, -20033874, 5616207, -25182466, 7967701, -22538378, -6430640, 4336843, 3310883, 9939091, -26701274, 1868848, 4964446, --8152385, -18169322, -21286394, 9036074, -7804493, 2687576, -863288, -18587544, -25950730, 9515500, -1630477, -19494856, -10438381, -10722386, 11639361, -32825362, -17177184, 18511846, -26332982, 19603304, --7827041, 18683108, 1524713, 9673877, -19549618, -3063922, -18415210, 19428284, 10812043, 25880400, -20840792, -11176579, 5266704, 20141250, 12686260, 9535901, 8648990, -19818590, -3639985, 7565048, -3076270, 9201431, -21774410, -18830210, 12233141, 33601140, 6439767, -13052406, 23828478, 4850629, -15537044, 2198487, 4416837, -21253646, -18429168, -1116692, 2073932, -36125508, 4558571, -8606578, --8590, 9465034, -11726871, 6777459, 29028610, 1335198, -42528768, -33440616, -3339874, -11379516, --9144522, -1915555, 9995463, 5416491, -8924942, 10645613, 13650480, 8872866, -4823785, 7348152, --2912525, -13357885, -568009, 8255464, -30865246, -9573482, -12593381, -19426138, -4365298, 2291365, --6068789, -3585224, 39533564, 17566416, -10323491, -4032974, 7609609, 14169097, -19756312, -5187247, --8300025, 5152887, 41674604, 6434935, -20307142, 5285494, 18495740, -4051765, 17297980, 21728240, --11114302, 5068062, 11184632, 7440494, 658204, -3285650, -6578816, 3198677, 13130252, 6631430, -12279848, -18158584, -27746026, -2988760, 12661027, 10990284, 9149354, -3163244, -25570088, 8336532, -5923297, 38658464, 40799504, 9716827, -29990146, 21939230, -11289322, -30754114, -7002408, -36394480, --27618250, -12126303, -13197361, -28142774, 5146982, -11203422, -32231046, -29438242, 8780524, 19548544, --2981244, -24746528, 7639673, 1065689, 8202851, 16162499, 15549929, -18953690, 25192668, 17673254, -2347200, 7445326, 17566954, -322659, 45689324, -31828928, -15365246, -406411, -36864240, 31082678, -2434710, 38690140, 11580306, 9188546, 13048648, -19320910, 4434554, -39485244, -11818139, -1552094, --10800232, 45347340, 13143137, -10799158, -28712930, -13127031, -12299713, -16633871, -13776108, 7836705, --41506028, -7689602, 29075318, -2440078, -4148402, -29975650, 28876138, 15849503, -113280, -10618770, -11864310, 7475928, -7858180, 14775761, -21788906, -4307316, -11507291, 7330973, -5682779, -11899744, -14258218, -9912248, 5488968, 1859721, -21206938, -11242077, -3985730, -24030342, -25902948, -32015224, --9501005, 17051020, -12130061, -4445291, 18508624, -21857626, -20345260, 22825604, -1116155, 754304, -17874044, 2355790, -17207786, -7067369, 5229123, 16012175, -22106196, -4005594, 24013700, 13753022, -22940494, 15775952, -6833830, 16382079, -3189013, -29122562, 7584912, -20063402, 14051522, -6504728, --11960947, 30722438, 10170483, 1564979, 3307125, -7452305, 11629161, 19130322, 46912316, 41771780, -3217468, -17692580, 8070244, 24440512, 6517076, 19047644, 13060459, 9494025, -14310831, -17470316, --21908092, -973884, 7770133, 15774341, 30466350, 16805134, 19467476, 12013560, 18051748, 9783399, -17401060, -11172821, 3146601, 33789580, -1040456, 26137560, 6646999, 21259552, -32877974, -4723927, --9732933, -9044664, 7605314, 13387950, 23734526, 39035348, 32201518, -10770704, 5782637, -42013908, -10474888, 10464688, 37745248, -29228326, 23990614, -7107097, -20652350, 16699907, 5325223, 14045080, -24013162, -7010461, -29552060, 16250546, -18621904, -25936770, -11647414, 36202816, -29550986, -43157444, --20259898, -6525129, 25955024, -1339493, -10517301, -26351772, -5390184, 5437429, 4869419, 30153892, --9905268, -32413044, 1739999, -13325673, -47525960, -23382876, 60927868, 8932995, -28452010, -30229054, -2752000, 805843, 11996381, 16208133, -22275848, -14100378, -35123704, 8156143, -13273060, -8121247, -51634096, 11356430, -8142185, -54122492, -4417374, -28918014, 27712740, 35376572, 2720325, 27470610, --33490008, -12898324, -21580064, -5022965, 52480744, 66513476, 9500468, -18108656, -25044492, -48547088, --595927, 5810017, 56959320, 32015224, -9877351, -96372624, -51037096, 7567733, -10678362, 83348672, -26650808, -41285912, -18422188, -73134168, -24515674, 1331977, 45365056, 47250544, 52736828, 971200, -10951093, -7662759, 2604898, 64902324, -27047556, 46584824, -14374182, -54117124, -17808008, -58176944, --20193326, 64117420, 28470264, -42981884, 47602732, -260382, -12093017, -73904040, -19588272, -20260434, --33005214, 70752072, 896574, 31428960, -48561048, 26523570, 22744536, -22416508, 14264660, -4759898, -12712566, -587337, 36355824, 12255152, -35439384, 20704964, 17459042, -780073, 24393266, -18869402, --9579925, 30144764, 21339546, 19812684, 9921374, 17118130, -53658100, 45695768, -27187680, -17822504, -9655623, -38178500, 53974856, -16375637, 4833986, 38510824, 674847, -6899865, 20651814, 20976620, -37769404, -10366977, -36783712, -37490768, 3033858, -14162655, 15795816, -23077934, -11995844, -15949898, -9558987, -69647192, -402116, 49973020, 12417824, 19755238, -3798362, -6604586, 11328513, -19113678, --23113366, 11802033, 4393752, -23347980, -27968828, 93541168, -13938243, -32125282, 3987877, 40903656, --8375186, 11800960, -34781720, 11065446, 59732796, 89115736, -38505456, 27616640, -58432492, -19888382, --34959424, -7199439, 57677652, 57198764, 48857400, -3789772, -36165236, -25177636, 22058952, -874026, -11772505, 28595356, 849867, 12931073, -38177428, -12685186, -21553756, -30523796, 16565152, 10009958, -2086817, 25068114, -22487912, -3717831, 7398081, -36303212, 147640, -682900, -20073066, -11065446, -8867497, -17280264, 32315334, -13559749, 48426832, 32602560, -22676354, -10072772, -31890132, -40871444, --47745540, 11756936, 22893786, 60839284, 49846852, 19058380, 31786516, 1854352, -35286916, -27885076, --19704236, -28787018, -4995047, 8832600, -1252520, -21679384, 4282620, -22133040, 10394895, 18422188, -4393752, -31281320, 19245212, -18775986, -13166759, -32620276, 13502303, 3877282, -8490077, -96976600, --58569396, -30632244, 56043956, 29473676, 150962736, 145518320, 146964112, 152333904, 159670784, 116084376, -59204512, 89265528, 52097416, -20622822, -45678588, -67573256, -139540272, -121853056, -129803576, -89764816, --94291712, -65485904, -56399364, -24784108, 6970195, -48583596, -24407762, -3721589, -4095251, -21889300, -13099650, 46822660, 48381732, 25352656, 56700012, 74052216, 22948548, 23323820, 20432234, 74237976, -73966320, 94747512, 101766032, 93835368, 101966280, 153218128, 67579160, 123526480, 160647344, 111155904, -125925216, 105348032, 58730992, 70806832, 74251392, 71240624, 87949120, 90361816, 62148176, 30720828, -42338176, 65289408, 20514912, 31168040, 6020471, 6266894, -41075992, 649614, -88445184, -116520312, --84060024, -98010616, -144426336, -134697152, -53810036, -116386632, -38426000, -1539746, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-403190, 1455457, -329102, 6126771, -915902, -234076, 7471096, -1792612, 8322036, 1512365, +-3323231, 5019206, 2379949, -3670050, 1390496, 1989107, 594316, 3205656, -833761, 2577517, +-537, -3583613, 1549410, 3954591, 2282775, 2304250, -457414, 335007, 22549, 1433982, +2919504, -6963753, -3382287, 161061, 1675574, 652835, -2704756, 5324149, 1768990, -1191317, +2855617, 1030792, 3949759, 1143535, -1539209, -3018825, 3193845, 214212, -56371, -1628330, +900333, -2840584, -1970316, 1321239, 2859375, -1372242, 634581, -27917, -399969, 5279052, +1985349, -627602, 843424, 2306934, 224412, 2361695, -3019362, 2885681, 3200288, -1607392, +-5352603, -2806761, -1466731, 5539434, 60666, -1999844, -515933, -4878546, -3432753, 2224256, +137976, -3061775, 3794067, 2615635, -897648, 264141, -587874, 3129421, -4371740, 1641751, +3154117, 2869575, -6267968, -4319664, -3153580, 4181151, 928250, 1376537, -1807644, 4453881, +1581622, -1087701, 28991, -1252520, 778463, 1671816, -1081795, -1269163, -3828427, 3974992, +6508486, 785979, 4092567, -776852, 734976, 1508607, 1711545, -5016522, 234613, -5242008, +-1326071, -747324, 1520955, -2648384, -219580, 1140851, 388695, -3061238, -23085, 340376, +2350958, -3252364, -4229469, -551366, 5368709, 8871792, -148176, 1461363, 445066, -1882269, +-5506685, -1321239, 3539053, -1638530, 3525095, 1545651, 3604551, -6442, 1345399, 2401961, +-5445482, -1385127, -5160403, 2927557, 456340, -2558190, 11362336, -4524211, -7949448, 484258, +3842385, -813359, -5958194, -1862405, -2530810, -1130113, -2772938, -1085553, 4274566, -434329, +-2622615, 4642860, 801548, 4503273, -1141388, -1292248, 1882806, -32212, 2175401, -1028108, +4478577, 7011534, -1888175, -4984847, -3447248, 2791192, 75162, -11213086, -967978, -4575214, +-1559610, 5226975, -3697967, -3051574, 3802120, -2627446, -462783, 4762045, 1777580, -4112431, +1815697, -3026341, -6462852, 1866700, 2615635, -5181878, -2814814, -1673427, -2035278, -301721, +2164127, 3108483, 5156108, 5430450, -1341104, 259846, -2244121, 2102923, 1577864, -1698660, +2388002, 3158412, -3542274, -9136469, -4521527, 2698850, 4087735, 1476932, 4425427, -3812320, +4625680, 5496485, -1502165, 6090264, -778463, 4458176, -2102923, 38118, -1881733, 5722507, +2332704, -344134, 5261872, -2883534, -2149094, 3695819, -8993662, -1692754, 542777, -2046552, +-8014946, -5049271, 3387119, -3287261, -2062121, -17180, 6343130, -1651952, -4380867, -489089, +1653026, 3420942, -515396, -5867999, -3663607, -1205812, -2910914, 792421, -4962835, 2308545, +-4672925, -7052873, 226560, 2240899, 2800856, -2381023, -1586454, -4701379, 5834713, 3192235, +798864, -132607, -186831, -2180770, -1095754, 1778117, 2455648, 8621073, -1043677, 2024540, +518080, -450972, -4393215, -3446711, 5888400, -2688650, 476741, 1475858, 718870, 2173790, +2726767, 2399813, 5802501, -3828427, -5665599, -4607426, 2942590, 6386617, -1131724, 4902705, +-4283156, -5260798, 4440996, -2166811, 529355, 1672890, 5563594, 2084670, 8792872, -3730179, +-4536023, 2101313, -2459406, -2344515, 5049808, -7603703, -4616553, 871342, -1350767, 3615289, +-2466385, 1086627, 6340983, -5626944, 4466229, -3331821, 2960843, -3100430, -741956, -357019, +6604586, 1387811, 432718, -4497368, 446140, -5375152, 2320893, 1602023, -3493956, 148713, +-1295470, 9926206, 1563905, 890132, -8119636, -4633196, -6791954, 5835250, -3306051, -73014, +3229279, 12683575, 9040369, -3117073, -7247758, -2775086, -6234145, 7378754, -969052, -1497333, +-2677375, -1576253, -212064, -2718178, -1327145, -5069672, 3703873, -5236639, -8736500, 8926016, +4349728, -9783399, 9798431, -1738388, -337692, -13660680, 8239358, 5148592, -10663330, 3047816, +-1570347, 3936875, 1181653, 4568772, 3277597, 1031866, -4835597, 295279, 2094333, -6868727, +-2623688, -8070244, -1124745, -5076652, -2399813, 738198, -5958731, -2434173, -8890045, 3299072, +1132261, 643708, 1025960, -4058744, -7716983, -2608656, 3011309, -1408749, -472446, 8198556, +-12120398, 5076115, 6503654, -1009854, 594316, -2485176, -784905, -4071629, -5910412, -4216048, +-4629438, -3258270, 3218541, 1661079, 2868501, 4148402, -865973, -2207613, 6042482, 11378979, +8080981, -97711, -9602473, 2772402, -1464047, 1603633, 10205379, 216359, 10240813, 9655086, +14874545, 3377992, -2234994, -1039382, 4821638, -1859721, 14432164, -1824824, -1802276, 17509508, +476741, 8693014, -2982318, -76236, -401043, 1145146, -1898376, 916439, 110595, -831076, +-9281424, -1246614, -1900523, -2052994, -3619047, 5874442, 3320547, 3365644, -4995584, -923955, +-8135742, -3758097, 2068027, -1023276, -4747013, -1934346, 3351148, 6143951, 4416300, -2385318, +-7461969, -615791, 2805151, -1680406, 4781373, 2463164, 6307160, 7547868, -1966021, -409633, +-7887708, -10721849, 10436771, 4872641, 345745, -820876, 416075, -4176319, -3354370, -495532, +8666707, 4089346, 2327872, 9093520, -6334003, 1665911, -4925254, -5144297, 5299453, 3665218, +4811437, 13772350, 1005022, -7179575, 2901251, -7153805, -7817914, -10869488, 4322885, -10166188, +170188, 10995653, -11491185, 4121021, 5410585, -3273839, -14215268, 47782, 8603893, -9453223, +5980205, -789737, -3934727, -12212203, -141197, -8846559, 1747515, -4555887, -6580427, -8606041, +3700651, -1330366, -273804, 7931731, -4647155, 6672769, -4926328, -2189897, 10659572, 3447248, +-5304285, 4154307, 2776160, -4940823, 2812130, 2498597, -1567126, -2179696, 709207, -2445447, +-2441689, 1582696, 2224793, 14049375, -13013214, 2030446, 1200443, -4914517, 9962177, 5325223, +-2907156, -10489921, 1329829, -1199370, -2689723, -6693170, -7186554, 9156333, 6550362, 575526, +-395137, 4745402, 3110630, -2529199, 4626217, 2525441, -1861868, 9493488, -2852932, 5441724, +-3067144, 1912334, 4899484, -10974715, 8099235, -4693326, -1809792, -6373732, -4277251, 3604015, +-3374771, 2915746, 12284143, 3969624, 6833293, -15611669, -10029822, -5676873, -3506304, 1493038, +115964, 2484102, -12767327, 6754373, 3079492, 1550483, 12551505, 25233, -6814503, 11418171, +4759898, -5366025, 2566243, -6845104, 6296422, 2681670, 8327942, -7163469, -4744328, 1859721, +-6838662, 8681740, -7938174, -349503, 8108362, 7060926, -14821395, -642098, 956704, 1526324, +2713883, 16199006, 4027069, 790274, -4786741, -4398584, -8630737, -5064304, 12406550, 28991, +-14223321, -57445, 3648038, -8525510, -8749922, 769873, -5538897, 2087354, 13684840, 6189585, +6025302, -5821292, -13728863, 775242, -1824287, 6169184, -453656, -12164958, -18944028, -5772436, +5461588, 14598057, 2165201, 7508677, 26170846, 4211753, 4500052, -4179540, -12487617, 6943352, +-6051609, 6373195, -1566589, 17098264, 12587475, -6856379, -14160507, -11451993, 8505109, -7710540, +10420128, 4365298, 3354906, -3862249, -1445257, 12169253, -2532957, 10692858, 10889890, 5379447, +7596724, -8854075, 8221641, 4165582, -4608500, 11799886, -5506685, 10668162, 663572, 855772, +-16382616, 9348533, 692027, -3484829, 7783555, -11756399, -4719632, 6272800, 5269388, -10928007, +1392106, -7213398, -4134980, 9706626, 1046898, 2468533, -1459752, -12560095, 7558606, 6810208, +64961, 5152350, 2175938, -6178311, -6100464, -1491964, 5655935, -11967926, -1201517, -804233, +-577673, -2091649, 3191161, 2991445, 9470403, 22771916, 7723962, 2351495, -7898445, -22002580, +16220481, 4039417, -13206488, 3469260, -628676, 2895345, 3900367, -10883447, -20832738, -17732846, +6705518, 12668543, -1672890, 13347685, -5499169, 10282689, 14359686, 17443472, -2949569, 12737262, +-10799695, 3913789, -5385352, 1010391, 8313983, -898185, -2719251, 2675765, 10208600, -7018514, +-10838350, -12732967, 26712550, -507343, -22012, -12050604, 13102871, 3302293, -22212498, -14165876, +6625524, -3849901, -2781528, 8647917, 4532801, 22224308, 14035953, -1357210, -11723650, -13544179, +-5818607, -5911486, -13407277, 13283797, -8609799, 10361609, 11152419, -10159208, -10474351, -12548821, +-15437723, 3434900, 1639604, -7084549, -5803575, -13692356, -2420751, -13718126, 4874788, -100932, +-1865090, -913217, -12212740, -24854976, -4981625, -6791954, 1783485, -6128919, 1483374, 2108829, +-2208150, 10011032, -13108240, -4571993, -12429635, -1104344, -5998459, 14376329, 16986596, 12792560, +-18165564, 12657269, -6340446, 9496173, -3494493, 6884833, -5827734, -8405251, 3162170, -10714333, +6874095, 7448547, -709743, 4284767, -9120900, -1655173, 16108275, -13091060, 817654, -4206921, +-4984847, -10627360, -401579, 15242302, 20805896, -13464186, 6358699, -2044941, -12459700, -13208098, +-13728326, -6664716, 26167626, 15464567, -4926865, 8106214, -5638219, 7027104, -14455249, 8215736, +-635118, -7953743, 19634980, 10221485, 3697967, 6575058, 5222680, 18852222, 1856500, -15426449, +5646809, 12744779, 8421894, -26523034, 15471546, -9896678, -12395812, -1713155, -1262720, -94489, +16982838, 11157788, 46131708, 12957916, -7815767, 2994129, 7707319, 205085, 15306190, 11443940, +10569378, -13756243, -23037668, 22907208, -13100724, 2125472, 7823283, 25101400, 9976135, -15342160, +13625247, -13908715, -3000035, -19102404, -25052008, -2955474, 6554657, 6515466, 4837207, 6124087, +-2150168, -17344688, -6502581, 5201206, 5582384, -9375377, 18773838, 11666742, -11566347, 5882495, +9244917, 3246459, 377957, -10996190, -1501628, -7918309, -4539781, 454730, 11605002, 28679108, +-8164196, 1907502, 4145180, 10103911, -10685342, 36284420, -3381213, 2552821, 2964601, -18075370, +-16694001, -28064390, -11457899, 13144211, -5188858, 5661304, 5916855, 23667418, 4159139, 2329483, +1529545, 17512730, 10122701, -11657615, 19354196, -20689932, 5367636, -5153961, -18893024, 10567230, +5502927, 13066364, -3176665, -29586420, 2770791, -19878720, -17022030, 5051419, 4677220, 8086887, +-4576825, 5825587, -471373, -10087268, 16618302, -2585034, -4664335, -6379100, -10563472, -9560597, +6542846, -12030740, 3721052, -7618735, -4547297, -3165391, 16549583, -2855617, 17745194, 10819023, +-3506304, 5916318, 6800007, 12345883, -7267622, -10897943, 2756295, 7520488, 10307385, 16338056, +-16306380, -16370268, 8469139, 6273874, 20779052, -8917963, -77846, 10462003, 1433982, 3559991, +-2166811, 13692893, 17551384, 8366060, -468151, 11163157, 35304632, -6257768, -8097624, 13782550, +425202, 21051246, 6620155, 10682657, 13063143, -1958505, 9824201, 24532316, -4075387, -25371982, +21351356, 7822209, -7245610, 5579700, -36595804, -15721728, -2936147, 29851096, 11586211, -33578056, +3466576, -4269198, 1004486, 8050916, -3816079, -16173773, 514322, -572304, 13961865, 33342904, +-7145752, 12343199, 18453326, 1476932, -7720741, -2817499, 6131603, 33461554, -2578054, 369904, +23550916, -7802345, 4954782, 2680060, -2323041, -3982509, 7699266, -25718264, -986769, 11779485, +18917720, 24930674, -20036022, 3670050, 18126910, 1761474, 35334696, -10449119, -20033874, 5616207, +25182466, 7967701, -22538378, -6430640, 4336843, 3310883, 9939091, -26701274, 1868848, 4964446, +-8152385, -18169322, -21286394, 9036074, -7804493, 2687576, -863288, -18587544, -25950730, 9515500, +1630477, -19494856, -10438381, -10722386, 11639361, -32825362, -17177184, 18511846, -26332982, 19603304, +-7827041, 18683108, 1524713, 9673877, -19549618, -3063922, -18415210, 19428284, 10812043, 25880400, +20840792, -11176579, 5266704, 20141250, 12686260, 9535901, 8648990, -19818590, -3639985, 7565048, +3076270, 9201431, -21774410, -18830210, 12233141, 33601140, 6439767, -13052406, 23828478, 4850629, +15537044, 2198487, 4416837, -21253646, -18429168, -1116692, 2073932, -36125508, 4558571, -8606578, +-8590, 9465034, -11726871, 6777459, 29028610, 1335198, -42528768, -33440616, -3339874, -11379516, +-9144522, -1915555, 9995463, 5416491, -8924942, 10645613, 13650480, 8872866, -4823785, 7348152, +-2912525, -13357885, -568009, 8255464, -30865246, -9573482, -12593381, -19426138, -4365298, 2291365, +-6068789, -3585224, 39533564, 17566416, -10323491, -4032974, 7609609, 14169097, -19756312, -5187247, +-8300025, 5152887, 41674604, 6434935, -20307142, 5285494, 18495740, -4051765, 17297980, 21728240, +-11114302, 5068062, 11184632, 7440494, 658204, -3285650, -6578816, 3198677, 13130252, 6631430, +12279848, -18158584, -27746026, -2988760, 12661027, 10990284, 9149354, -3163244, -25570088, 8336532, +5923297, 38658464, 40799504, 9716827, -29990146, 21939230, -11289322, -30754114, -7002408, -36394480, +-27618250, -12126303, -13197361, -28142774, 5146982, -11203422, -32231046, -29438242, 8780524, 19548544, +-2981244, -24746528, 7639673, 1065689, 8202851, 16162499, 15549929, -18953690, 25192668, 17673254, +2347200, 7445326, 17566954, -322659, 45689324, -31828928, -15365246, -406411, -36864240, 31082678, +2434710, 38690140, 11580306, 9188546, 13048648, -19320910, 4434554, -39485244, -11818139, -1552094, +-10800232, 45347340, 13143137, -10799158, -28712930, -13127031, -12299713, -16633871, -13776108, 7836705, +-41506028, -7689602, 29075318, -2440078, -4148402, -29975650, 28876138, 15849503, -113280, -10618770, +11864310, 7475928, -7858180, 14775761, -21788906, -4307316, -11507291, 7330973, -5682779, -11899744, +14258218, -9912248, 5488968, 1859721, -21206938, -11242077, -3985730, -24030342, -25902948, -32015224, +-9501005, 17051020, -12130061, -4445291, 18508624, -21857626, -20345260, 22825604, -1116155, 754304, +17874044, 2355790, -17207786, -7067369, 5229123, 16012175, -22106196, -4005594, 24013700, 13753022, +22940494, 15775952, -6833830, 16382079, -3189013, -29122562, 7584912, -20063402, 14051522, -6504728, +-11960947, 30722438, 10170483, 1564979, 3307125, -7452305, 11629161, 19130322, 46912316, 41771780, +3217468, -17692580, 8070244, 24440512, 6517076, 19047644, 13060459, 9494025, -14310831, -17470316, +-21908092, -973884, 7770133, 15774341, 30466350, 16805134, 19467476, 12013560, 18051748, 9783399, +17401060, -11172821, 3146601, 33789580, -1040456, 26137560, 6646999, 21259552, -32877974, -4723927, +-9732933, -9044664, 7605314, 13387950, 23734526, 39035348, 32201518, -10770704, 5782637, -42013908, +10474888, 10464688, 37745248, -29228326, 23990614, -7107097, -20652350, 16699907, 5325223, 14045080, +24013162, -7010461, -29552060, 16250546, -18621904, -25936770, -11647414, 36202816, -29550986, -43157444, +-20259898, -6525129, 25955024, -1339493, -10517301, -26351772, -5390184, 5437429, 4869419, 30153892, +-9905268, -32413044, 1739999, -13325673, -47525960, -23382876, 60927868, 8932995, -28452010, -30229054, +2752000, 805843, 11996381, 16208133, -22275848, -14100378, -35123704, 8156143, -13273060, -8121247, +51634096, 11356430, -8142185, -54122492, -4417374, -28918014, 27712740, 35376572, 2720325, 27470610, +-33490008, -12898324, -21580064, -5022965, 52480744, 66513476, 9500468, -18108656, -25044492, -48547088, +-595927, 5810017, 56959320, 32015224, -9877351, -96372624, -51037096, 7567733, -10678362, 83348672, +26650808, -41285912, -18422188, -73134168, -24515674, 1331977, 45365056, 47250544, 52736828, 971200, +10951093, -7662759, 2604898, 64902324, -27047556, 46584824, -14374182, -54117124, -17808008, -58176944, +-20193326, 64117420, 28470264, -42981884, 47602732, -260382, -12093017, -73904040, -19588272, -20260434, +-33005214, 70752072, 896574, 31428960, -48561048, 26523570, 22744536, -22416508, 14264660, -4759898, +12712566, -587337, 36355824, 12255152, -35439384, 20704964, 17459042, -780073, 24393266, -18869402, +-9579925, 30144764, 21339546, 19812684, 9921374, 17118130, -53658100, 45695768, -27187680, -17822504, +9655623, -38178500, 53974856, -16375637, 4833986, 38510824, 674847, -6899865, 20651814, 20976620, +37769404, -10366977, -36783712, -37490768, 3033858, -14162655, 15795816, -23077934, -11995844, -15949898, +9558987, -69647192, -402116, 49973020, 12417824, 19755238, -3798362, -6604586, 11328513, -19113678, +-23113366, 11802033, 4393752, -23347980, -27968828, 93541168, -13938243, -32125282, 3987877, 40903656, +-8375186, 11800960, -34781720, 11065446, 59732796, 89115736, -38505456, 27616640, -58432492, -19888382, +-34959424, -7199439, 57677652, 57198764, 48857400, -3789772, -36165236, -25177636, 22058952, -874026, +11772505, 28595356, 849867, 12931073, -38177428, -12685186, -21553756, -30523796, 16565152, 10009958, +2086817, 25068114, -22487912, -3717831, 7398081, -36303212, 147640, -682900, -20073066, -11065446, +8867497, -17280264, 32315334, -13559749, 48426832, 32602560, -22676354, -10072772, -31890132, -40871444, +-47745540, 11756936, 22893786, 60839284, 49846852, 19058380, 31786516, 1854352, -35286916, -27885076, +-19704236, -28787018, -4995047, 8832600, -1252520, -21679384, 4282620, -22133040, 10394895, 18422188, +4393752, -31281320, 19245212, -18775986, -13166759, -32620276, 13502303, 3877282, -8490077, -96976600, +-58569396, -30632244, 56043956, 29473676, 150962736, 145518320, 146964112, 152333904, 159670784, 116084376, +59204512, 89265528, 52097416, -20622822, -45678588, -67573256, -139540272, -121853056, -129803576, -89764816, +-94291712, -65485904, -56399364, -24784108, 6970195, -48583596, -24407762, -3721589, -4095251, -21889300, +13099650, 46822660, 48381732, 25352656, 56700012, 74052216, 22948548, 23323820, 20432234, 74237976, +73966320, 94747512, 101766032, 93835368, 101966280, 153218128, 67579160, 123526480, 160647344, 111155904, +125925216, 105348032, 58730992, 70806832, 74251392, 71240624, 87949120, 90361816, 62148176, 30720828, +42338176, 65289408, 20514912, 31168040, 6020471, 6266894, -41075992, 649614, -88445184, -116520312, +-84060024, -98010616, -144426336, -134697152, -53810036, -116386632, -38426000, -1539746, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, { 632971, --2012729, 393526, -3454228, -2672007, -2975876, -3445101, -5291400, 2605435, 2426657, -2637110, -587874, 3957812, 6357089, 2251100, 2586644, -1566589, 707059, -9688909, 2893734, 299037, --1386201, 2769180, -938987, -3627100, 3354370, 1221918, 1333587, 2476586, 3316252, 3384434, --86436, -4323422, -194884, 4540318, 4769025, 6190122, -1454920, 6061273, 120259, -335007, --1996086, -275952, 3360275, 1279900, -9922448, -3320547, -5809480, -277562, -387084, -3804267, --4479114, -3420942, 1127429, -3291556, 2004139, 3149822, 3466576, -4528506, -2304787, -5123359, --2987150, -1445257, 330176, -4853850, 4890357, 1969243, -2193655, -102542, -902480, 8402567, -1959042, -757525, -2509335, 10535018, 805306, -955630, -133144, -1093069, -5280663, -5849209, -5594732, 1035087, -2969433, -5145371, -2122251, -3954591, -6140193, 7887708, 1216550, 2686502, -4292820, 11471321, -72478, 1601486, -2601140, -1321776, -1948841, -7935489, 1935420, -2627983, -983011, 5027259, -1873143, -819802, 1386201, 260382, -1035087, -59056, -6839736, 1152662, -62814, -2858301, 2445984, 686658, -4521527, 7175817, 504659, 736587, 7234873, -3066070, --2769180, -7253126, -3235721, 4388383, 562641, 4692252, -2212982, -6030671, 2735894, -5660230, --2054068, -10561325, 4482872, 3112778, 2495376, 2599529, 7317014, 1331977, -2663417, 3258807, -6216965, -4305168, 3362423, -579284, -624381, -2564632, -805306, 3222299, 267362, 1358820, --4187056, 1064078, -2566780, -5495948, -459562, -6480032, -7678328, -4992363, -3649649, -8645769, -398358, -3193845, -1669132, 2513630, 9142912, 715112, -2123325, -1165547, 1495722, -303869, -3806415, 6328635, -525597, 7117835, -820876, -612570, -860604, 3988414, -5459441, 703838, -655519, -1491427, -325881, -3416110, -5448166, 7295002, -2567854, -718870, -1369021, 3120831, --3595961, -3224984, 1238561, 928250, 5136244, -3754338, 4204773, -2693481, -4391604, -530965, --1886028, 967978, 2209224, -295816, 2886755, 1235340, 2044404, -3087008, -3566970, -5814312, --4328254, 301721, 6435472, 615791, 5143224, 1176821, -3122441, 3498251, 1387811, -4264366, -6612102, 955630, -7225209, -8031052, -6932077, 1394791, 911070, 5804649, -4442070, 5981279, --2966212, -1454383, -9417790, -706522, 753767, -3363496, -447213, 5035313, 4954245, 7172059, --1639604, -1176284, 4657355, 2060511, 4201552, -9890236, 9885404, -2148558, 11811, 1503239, --1038308, -109522, -714575, -697395, 6208912, -192200, 8106751, -1371705, -3074660, -6597607, -953483, -2975339, -2429341, 4589173, 3725884, 4809290, 365609, 642098, -6815576, -5005785, -148176, 6481643, 2448668, -728534, 2388539, -2554969, 7075959, -233002, -5617281, -7322383, --2384244, 8553427, 6630893, 6670621, 3325915, 472983, -6670084, -2872260, -627065, -3804804, -4711579, -401043, -1542430, 4077535, -9530532, 3422015, -785979, 2857227, -263067, 2275796, --2535641, -4072703, -1001264, -3095598, 1253594, 5718749, 1845225, 458488, -2514703, -12406013, --8648454, -12348, 3367254, 4696010, -48318, 1152662, -2096481, 4653597, 1636919, 3777424, --5839545, 5487358, 2685965, -5705327, 1905355, 5707475, -630286, 2011118, 553514, 5195837, --4189741, 3182034, -848793, -425202, -5087926, 531502, 4710506, -2991982, -2706903, -4194036, -5577015, -339839, 777926, -4423817, -13688598, -3635153, 1557463, 1471563, 4508642, -3291556, --2602213, -1767379, -1316408, -4020626, -306553, -3599183, 8262444, 3335579, 6641093, -6920803, --1904818, -2693481, 6156836, -1716376, -1756642, -5207648, 2887292, 259309, -4294431, 6099928, -1130113, 1203128, 5819681, 2050310, 3502009, -2784213, 2206540, 243203, -1497333, 6040872, -4530654, -438624, -8247948, -10920491, -8506183, 3150359, -47245, -4710506, -1288490, 566936, --1133871, 12322261, 2066416, -8891119, -2427194, -2656974, 384400, -4189741, 6900402, -5210869, --6888054, 6366216, -2747169, 1737314, 1626182, -2934000, -8099772, 1048509, -4348118, -3807489, --4001299, -521302, 6185290, -899796, -1483911, 9200357, 1631014, 1370095, -11985643, -1380832, -6299644, 7389491, -4173098, 1960116, 967978, -11829951, -1618129, -790811, -1234803, 2889976, -108448, -6678138, 849330, -5358509, 5067525, -1878511, 6544457, 1217623, -7412577, 3235721, -14132053, -5513128, 285078, -10495289, 2780455, 8804683, -15382962, 2371896, -510027, -938987, -10336913, 1514513, 4513474, 7668127, -9437117, -2639258, -7261716, 3718905, 3842385, 8290361, -15464030, 2641942, -12233141, -958315, -3272228, -1087701, -5449240, 167504, -854699, 6081137, -4444755, 1857037, -715649, 367757, -2144263, -1247688, 6497212, -2102387, -1226750, 5196374, --962610, 3101503, -839666, 6571837, -5282810, -9691594, 11821361, -629213, 2531346, -9077413, -307627, -2709588, 13127568, 2199560, 5727876, -1211181, 5026186, 3710852, -12626130, -1867774, --7276212, -5845988, 401043, 8665097, 649077, -1682017, 12929462, -1370095, -8005282, -5724655, --4410932, 6607271, 19737522, 2684, 5135171, 1494649, -6914361, -1368484, -365609, 6038187, -8708583, 879931, 6913824, 6590091, -12552579, 284542, -3989488, -15205258, 3144990, -1178432, -4963372, 3830574, 14134201, 3326452, -3133179, 3886946, 10730439, 12708271, 4699231, 9074729, -8484708, -6457484, -5713917, -10718091, -12403329, 1735167, 4821638, -9756555, -7605850, -128312, --12137578, -9332427, 4589173, 2015413, -5589363, -3049964, -8079371, 6851547, 4332549, 10987063, -19699404, -1781338, -6032282, -1694902, -10225780, 332323, -8040716, -8067023, 9935870, 1628330, -1078574, -12741557, 13301514, 3173444, -8818642, -2260764, 6693707, 942208, 1200980, 243203, -826781, 4468377, -6812355, 8111583, -134755, -4870493, -1792612, -8689256, 1140851, -8931921, --8638790, 7719130, 7201587, -7002944, -12147778, 3520263, -5944235, -382789, -3309272, 4454955, --3398393, 5657009, -5858336, -6583111, 7938174, -2506650, -1770063, 4455492, -6465537, -6975027, -8005819, 10515691, 255551, -726386, 3663607, -9199283, 15634755, -9627706, 1203128, 7370701, --3464965, 6874632, 8468065, 2696703, -8741332, 9434433, -1343251, 3506304, -6838662, -1354525, --13070659, 4463545, -7736847, 2954938, -13456669, 7888781, -9818832, -6954626, 5726265, 7794292, -2704756, 825707, 392990, -8542690, -7828115, -5077188, 20643224, 11262478, -3179887, -19099720, --2636036, 5335960, 11148661, -6302865, 947040, -13197898, -4494147, -1646583, 3455301, 1919314, --2941516, -246961, 5786395, -6527814, -371515, -7435662, 4016331, 4864051, 14170171, 6040872, --6985765, 2931315, -3946001, -10759430, -1466195, 6165963, 840740, 17558364, -13351443, -2226404, -2991982, 7767985, 4097399, 10203769, 2091649, -12770548, 8135205, -10857140, -11158325, 23085, --875636, 8311836, 10854456, 9534827, 14501420, 3182571, -14706505, 15888695, 8986682, -6917582, -12589623, -1986959, 1613297, -11342472, -3711389, -3562675, -4788889, 10050760, -17532594, -4414690, --8218957, -8312373, 1487132, 8006356, -3992709, -10645613, -10758893, -14538464, -14181445, -7741679, --2429341, 5554467, -11161009, -15016279, -8574365, -4250944, -7143605, -5379984, 12491912, -7747048, -1085553, 5957120, -11521250, -7530152, -7823820, 11584601, -5443334, 7219840, 17551384, -2622078, -3762391, 775778, -5690295, -8152922, -5171141, 7279433, -1604170, 8412767, 145492, 5980742, -1142461, -13492640, 14359149, -7639136, -2967286, 24346558, 16670379, 10742787, -7520488, -18896246, --4059281, 10237591, -16313360, -10123238, 1175210, 12695923, 10507637, 7057168, -9073655, 6733435, --1804423, 6735046, -1082869, 18719614, 12568148, -1714766, -17008070, -2593624, 14494441, 10806138, -1410360, 22865332, 11621108, -5485210, 947040, 891743, -1821066, -7329899, -8105140, -2166274, --24525338, 6496675, -7736310, 476741, 140660, 5928666, 10557566, -500364, 3608310, -12136504, -9221295, -4887136, 18030272, -365072, 3566434, -41938744, -592169, 10221485, 6880001, 10911901, --2769180, -12316892, 7678328, 1436667, -8137890, 8177618, 3170760, -9889699, 1523640, -470836, -4597226, -4215511, -13582297, -16027207, 936303, -6398965, 6701223, 4315369, 4001299, 4641786, --16377247, -7114077, -17178796, -28140088, 4722317, 9508521, 10279467, 81604, 23474680, -16667157, -5703717, 3053185, -4442607, -14781130, -5895380, -8439074, 10152766, -4406100, -8721468, -14993731, --1051193, -5565741, -2508261, -11290932, 6364605, -719407, -4894115, 6070400, 8114267, 9162776, --11454678, 21719112, 1746441, -3052111, -12866111, -12428562, -2078227, -1534914, -12498355, -13402982, --9880572, 8887361, -5486821, 14660871, 5190468, 24369108, 8869644, 9413495, -2492692, 13229036, --1617055, 3429532, 19025094, -5243082, 7363722, -21676700, -27361090, 6569690, -542777, -17342542, -1946694, 999654, -23366232, 7458211, -6191732, -4082367, -8444979, 9972914, -7733089, 1451162, -251256, 5523865, 1393180, -11944841, 9350681, -256624, 4946192, -14524506, -20430622, -12965969, -4545149, 16942572, 22222698, -708133, 5900748, 13921600, 11471321, -1305670, -28330678, 19195282, --2003602, 5087926, -5891622, 9714142, -859530, -12462384, 3249680, 21980568, 3176128, -14879914, -12598750, 8884677, 5719286, -11311870, 11494943, 8415988, 662499, 13750875, -6058052, 3373697, -22304838, 16159814, 159988, 4790499, 10625212, -21978958, -4944581, -1884954, -4025458, -19367082, -4103841, 5130876, 304943, -15188078, -1074816, -25607132, 418222, -18497888, -4530117, 8541079, --8706972, -11496554, -9873593, 4599910, 3084860, -10704132, 2558190, -4351339, 10800769, -7183870, --8913131, 5638755, 9680319, -1911261, 2985539, 3643743, -29560650, -1436130, -4558034, -14703284, --1455457, 17044578, 2047089, -5566278, -6263136, 12904766, 3386582, 9689983, -23827942, 9459129, --24712704, -31876174, -18690088, 144955, -15770046, 15355582, -4010426, -21800718, 472983, -6394670, -3980361, 2709588, -3637301, -3802120, 14807973, -5200132, 6386617, -8554501, -6199249, 20551418, --6101538, -3613141, 551903, 3819300, 14568529, -28336584, -630286, 13463649, 15289547, 12084427, -2961917, -6040872, 29228864, 8391829, 10052908, 9831180, 6206228, -5049808, 1430224, 15394237, -6570226, -12757127, 7408282, 29272350, -14796699, 19890530, 8938901, -33163590, 9004399, 20432770, --1095217, 8581345, 1120450, -25414396, 13518410, 29138668, 2938295, 19446538, -11249593, 17058000, -16252693, -1657857, -1563368, 15509664, 9967545, -23222352, 23019414, -6751689, -4072166, 11895986, --5672041, -9574019, -9302362, 1061394, 1192390, -9198746, -17808546, 42027864, 19998978, -47840568, --20471962, 5678484, -8546985, 14523969, 15929497, 18207976, 19673634, -11853573, 37743100, -5199595, -443992, -11961484, 13899051, 19785304, -14369887, -15222438, -3844533, -8517994, 1180042, 8250096, -663036, -9352291, -4278861, 16357383, -1777580, 8568460, 1400159, 19575924, 27897960, 11402064, --14190572, -31391380, -3212099, -4799089, 3077344, -6765647, 10034117, 18403934, 1073205, -5914707, --15164456, 35681516, 30074972, -3377992, 14406394, -7638600, -11733314, -33018098, 18090402, -15022185, --4181688, -286152, -11100343, 6637872, 20147692, 3904125, -9709310, 10570451, -4803921, -13183402, -20601348, 5030481, -29934312, 38320236, -26063472, -12978317, 13961328, 15533286, 11923366, 703838, --13116293, 1275068, 19343996, 5467494, -25621628, -20946018, -4675072, 32249836, 3707094, -15693274, --41453952, -11739219, -1535451, 9831717, 29151554, 21966074, -2669859, 220117, 19353660, 15367393, -1169305, 4208531, -55925308, -35555348, -16830904, -27842126, 2942590, -15501611, 25500832, -5652177, --1389959, -41876, -9461276, -11378979, 18698140, 11384885, 7038378, -2423972, -7949985, -7563438, -9694815, -20044612, -6863358, 3757560, -6273337, -9645960, 9186935, -29001766, -40096740, 9947144, -13576392, 16102369, -23045720, -12444668, 14063334, 5275294, -38985420, -34735012, 3006477, -16669305, --16630650, 6788733, -31296890, 16608102, -11559368, 13693966, 13762686, -7724499, -17301202, -41671384, --13923747, -12333535, 24182276, -20040318, -12880607, 7660611, 17037598, 22434762, -3226594, -31104154, -14353244, -4983773, -12366821, -26847840, 8360691, 10975789, -38810936, 14494978, 14429480, 35099548, -3680250, -9186935, 2674154, -43643312, -12109660, -5546951, 1046898, 7669738, -14338211, 26320096, -11116986, 32608466, -6124087, 28671592, 19013284, 11221139, 26786638, 13148506, 17821430, 22208202, -1411434, -29438242, -27222576, 5502927, 32041530, 22746146, -41785200, -1306207, -6790344, -5998996, --4103841, -29258928, 7769059, -20833812, 18975166, -13923747, 42458436, -11097122, -60481192, -6408628, --20813948, 12113955, 9002251, 17342004, 39249560, 8872329, -5557688, 21620866, -13077102, 44021268, -6856379, 29424820, 13042205, 2602213, -12261595, -10333154, 70567920, -129386, -52116208, -11185705, -36235564, -26365730, -1173063, 20314658, 8103530, -40814000, -16008954, -46450608, 6543920, 41573672, --31042950, -28244778, 26575648, 13035763, -47399260, -44051868, 13393856, 2462627, 5657546, 15127412, --2728378, -13253732, -7689602, 28230820, -21223580, 34813932, 4640176, -8303783, 6355478, 19972134, --1229971, -6279779, -38563436, -16690243, 2863670, -20374252, 15917686, 25366076, 443992, 3779571, --28208808, 31304942, -12758737, -14875082, 24334210, -10691784, -1686848, -19426674, -3730716, -13979045, --47866336, 14795625, -7200513, 33068026, 41602664, -1822140, -10140418, -29056528, -11256572, -9166534, -38999912, -41206452, -30840012, -67431520, -1588601, -29164976, 4108673, 20547124, -16088411, -5968931, -40499396, 25948582, 15480673, 48318, -3851512, 29708826, -44307956, -7297687, -83752, -7471096, -5382131, 37666864, -27004606, 7903814, -7707319, -16516834, -11501386, 58158688, -5689221, 27424976, --21516712, 38998840, -11841762, -1589138, 24682104, 21620328, 59340880, 549219, 11819213, 6198175, --21591338, 27212376, 11669426, -19362786, 31207232, -14051522, 38658464, 25438018, -5845451, 21879638, -3815542, 20308216, 7239704, 35881232, -20374252, 16907676, -35497368, -11577621, 15729244, 39115340, -1104344, 1379221, 20649666, -2053531, -10846940, -51351704, -27520002, 6582038, -18129594, -2787434, -18781892, -44922672, 29589104, -3685619, 34637300, -16688632, -25996364, -6844031, 84444424, 16719234, --70302176, 11359115, 22259204, 3033321, 83746496, -6320581, -55638616, 59978144, -17333414, -5129265, -70184600, -8130373, 46377592, 6557342, -40179420, -37044, 45335528, 5752572, 6224482, -1919850, --60213296, -3600256, 8388608, -21256330, -7240241, -61324080, 38628936, 61428768, -27375584, 9495099, --46836080, -133491344, -26514980, 7156490, 67432064, 58204324, -56927108, -49095236, -51241644, -40502080, --30073362, 36464808, -7009924, 79249664, 52194592, -14893336, -65695820, -161201936, -105814576, 8188355, -178984176, 137766976, 24132348, -69751344, -178050016, -180537344, -14219563, 106435192, 162301440, 179919936, -17362942, -57139172, -74480104, -96471944, -88790392, 6618545, 59248536, 113466592, 76251776, 62712428, --82299088, -98407368, -117955368, -139525776, 13943074, 168471696, 163601744, 34133180, -61911416, -157148016, --208972704, -69584912, 13150116, 76899776, 185250528, 69302520, -4307316, -104345160, -89848568, -36695664, -36417564, 71912784, 119060792, -15982647, 28919626, 22203370, -51009180, 510027, 26201448, -21131776, -28949690, -1255204, -5373541, -2173254, 5771899, 21932788, -8748312, 25848724, 17557290, 10439455, -11635603, 8767102, -2381023, -15035607, 24139864, -511101, 14659797, -9037685, 13022878, -4754529, --2076617, 8736500, -12210592, -12917651, 1656784, -5711770, 19441170, 19152332, -18037252, 8595303, --10846940, 11912092, 6979, 7700340, 2794413, 10075993, -12945568, 8440148, -14864882, -6695317, --2301566, -2022930, 11506217, -22647900, -4677757, -9582609, -20095078, -2153926, -8061117, 4338991, -18615998, -6067178, -26416196, 3826816, 16028281, 31335008, -1562294, 2470680, -17195438, -13243532, -14740865, 1175210, -5468030, 430570, 26240102, 11692512, 8942659, 14721537, 25309168, -23469312, -3491809, 4629975, -17569100, 46506444, 82949240, 5957657, -52567716, 16939888, -3011846, 65376920, -32224602, 64243584, -5128191, -32069448, -7428683, 13434658, 28449326, 20419348, -11094437, 1056025, -12656195, 7406134, 26927834, -19180788, 5372467, -25501368, -2959233, -711354, 7280507, 11680164, -3794604, -11486890, 20854750, -2894271, -16549046, 22880902, -3092377, -9631464, 7363185, -4627291, -19650550, 28669980, 1745367, 6701223, -8981313, -7309498, 18233746, 11394011, 15287399, 1763621, --7980586, -19757386, -18126910, -21914534, 17780628, 17300128, 19089520, 25784836, 29864518, 11402601, -2683818, -26097832, 16587164, -3674882, -21524228, 27179626, -749472, 17583596, 11100343, -29072634, -9326521, -9186935, 7744900, 18357764, 5627481, -24103894, -13885092, -13422310, -29577292, -64042796, -3663607, 90122912, 117629488, 102159552, 69261720, -2511482, 3453154, -51382304, -62596464, -103194104, --79272752, -82841328, -28030568, 7259569, 25929792, 45681272, 111720688, 94090384, 62000536, 20554640, --11318849, -40837084, -31834298, -42526080, -55497420, -30178050, -32463510, -38227356, -19364396, -25301652, -3544959, 17300128, 12998182, 47659104, 42467564, 38869456, 23725400, 29214904, 16619913, 35012572, -6327024, 30084098, -1049583, -9049496, -56550224, -24577950, -67792304, -76883136, -87505128, -67726264, --52930104, -19244138, 9436580, 46834472, 48215840, 38823820, 80172544, 65844532, 68587408, 64836288, -58298276, 22283900, 35588636, -19765976, -46177876, -46452220, -106357888, -104589968, -103832448, -108328736, --93204552, -35801772, -24256364, 14690936, 46365784, 49877992, 21386790, 10043244, 0, 0, -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0, 0, 0, }, +-2012729, 393526, -3454228, -2672007, -2975876, -3445101, -5291400, 2605435, 2426657, -2637110, +587874, 3957812, 6357089, 2251100, 2586644, -1566589, 707059, -9688909, 2893734, 299037, +-1386201, 2769180, -938987, -3627100, 3354370, 1221918, 1333587, 2476586, 3316252, 3384434, +-86436, -4323422, -194884, 4540318, 4769025, 6190122, -1454920, 6061273, 120259, -335007, +-1996086, -275952, 3360275, 1279900, -9922448, -3320547, -5809480, -277562, -387084, -3804267, +-4479114, -3420942, 1127429, -3291556, 2004139, 3149822, 3466576, -4528506, -2304787, -5123359, +-2987150, -1445257, 330176, -4853850, 4890357, 1969243, -2193655, -102542, -902480, 8402567, +1959042, -757525, -2509335, 10535018, 805306, -955630, -133144, -1093069, -5280663, -5849209, +5594732, 1035087, -2969433, -5145371, -2122251, -3954591, -6140193, 7887708, 1216550, 2686502, +4292820, 11471321, -72478, 1601486, -2601140, -1321776, -1948841, -7935489, 1935420, -2627983, +983011, 5027259, -1873143, -819802, 1386201, 260382, -1035087, -59056, -6839736, 1152662, +62814, -2858301, 2445984, 686658, -4521527, 7175817, 504659, 736587, 7234873, -3066070, +-2769180, -7253126, -3235721, 4388383, 562641, 4692252, -2212982, -6030671, 2735894, -5660230, +-2054068, -10561325, 4482872, 3112778, 2495376, 2599529, 7317014, 1331977, -2663417, 3258807, +6216965, -4305168, 3362423, -579284, -624381, -2564632, -805306, 3222299, 267362, 1358820, +-4187056, 1064078, -2566780, -5495948, -459562, -6480032, -7678328, -4992363, -3649649, -8645769, +398358, -3193845, -1669132, 2513630, 9142912, 715112, -2123325, -1165547, 1495722, -303869, +3806415, 6328635, -525597, 7117835, -820876, -612570, -860604, 3988414, -5459441, 703838, +655519, -1491427, -325881, -3416110, -5448166, 7295002, -2567854, -718870, -1369021, 3120831, +-3595961, -3224984, 1238561, 928250, 5136244, -3754338, 4204773, -2693481, -4391604, -530965, +-1886028, 967978, 2209224, -295816, 2886755, 1235340, 2044404, -3087008, -3566970, -5814312, +-4328254, 301721, 6435472, 615791, 5143224, 1176821, -3122441, 3498251, 1387811, -4264366, +6612102, 955630, -7225209, -8031052, -6932077, 1394791, 911070, 5804649, -4442070, 5981279, +-2966212, -1454383, -9417790, -706522, 753767, -3363496, -447213, 5035313, 4954245, 7172059, +-1639604, -1176284, 4657355, 2060511, 4201552, -9890236, 9885404, -2148558, 11811, 1503239, +-1038308, -109522, -714575, -697395, 6208912, -192200, 8106751, -1371705, -3074660, -6597607, +953483, -2975339, -2429341, 4589173, 3725884, 4809290, 365609, 642098, -6815576, -5005785, +148176, 6481643, 2448668, -728534, 2388539, -2554969, 7075959, -233002, -5617281, -7322383, +-2384244, 8553427, 6630893, 6670621, 3325915, 472983, -6670084, -2872260, -627065, -3804804, +4711579, -401043, -1542430, 4077535, -9530532, 3422015, -785979, 2857227, -263067, 2275796, +-2535641, -4072703, -1001264, -3095598, 1253594, 5718749, 1845225, 458488, -2514703, -12406013, +-8648454, -12348, 3367254, 4696010, -48318, 1152662, -2096481, 4653597, 1636919, 3777424, +-5839545, 5487358, 2685965, -5705327, 1905355, 5707475, -630286, 2011118, 553514, 5195837, +-4189741, 3182034, -848793, -425202, -5087926, 531502, 4710506, -2991982, -2706903, -4194036, +5577015, -339839, 777926, -4423817, -13688598, -3635153, 1557463, 1471563, 4508642, -3291556, +-2602213, -1767379, -1316408, -4020626, -306553, -3599183, 8262444, 3335579, 6641093, -6920803, +-1904818, -2693481, 6156836, -1716376, -1756642, -5207648, 2887292, 259309, -4294431, 6099928, +1130113, 1203128, 5819681, 2050310, 3502009, -2784213, 2206540, 243203, -1497333, 6040872, +4530654, -438624, -8247948, -10920491, -8506183, 3150359, -47245, -4710506, -1288490, 566936, +-1133871, 12322261, 2066416, -8891119, -2427194, -2656974, 384400, -4189741, 6900402, -5210869, +-6888054, 6366216, -2747169, 1737314, 1626182, -2934000, -8099772, 1048509, -4348118, -3807489, +-4001299, -521302, 6185290, -899796, -1483911, 9200357, 1631014, 1370095, -11985643, -1380832, +6299644, 7389491, -4173098, 1960116, 967978, -11829951, -1618129, -790811, -1234803, 2889976, +108448, -6678138, 849330, -5358509, 5067525, -1878511, 6544457, 1217623, -7412577, 3235721, +14132053, -5513128, 285078, -10495289, 2780455, 8804683, -15382962, 2371896, -510027, -938987, +10336913, 1514513, 4513474, 7668127, -9437117, -2639258, -7261716, 3718905, 3842385, 8290361, +15464030, 2641942, -12233141, -958315, -3272228, -1087701, -5449240, 167504, -854699, 6081137, +4444755, 1857037, -715649, 367757, -2144263, -1247688, 6497212, -2102387, -1226750, 5196374, +-962610, 3101503, -839666, 6571837, -5282810, -9691594, 11821361, -629213, 2531346, -9077413, +307627, -2709588, 13127568, 2199560, 5727876, -1211181, 5026186, 3710852, -12626130, -1867774, +-7276212, -5845988, 401043, 8665097, 649077, -1682017, 12929462, -1370095, -8005282, -5724655, +-4410932, 6607271, 19737522, 2684, 5135171, 1494649, -6914361, -1368484, -365609, 6038187, +8708583, 879931, 6913824, 6590091, -12552579, 284542, -3989488, -15205258, 3144990, -1178432, +4963372, 3830574, 14134201, 3326452, -3133179, 3886946, 10730439, 12708271, 4699231, 9074729, +8484708, -6457484, -5713917, -10718091, -12403329, 1735167, 4821638, -9756555, -7605850, -128312, +-12137578, -9332427, 4589173, 2015413, -5589363, -3049964, -8079371, 6851547, 4332549, 10987063, +19699404, -1781338, -6032282, -1694902, -10225780, 332323, -8040716, -8067023, 9935870, 1628330, +1078574, -12741557, 13301514, 3173444, -8818642, -2260764, 6693707, 942208, 1200980, 243203, +826781, 4468377, -6812355, 8111583, -134755, -4870493, -1792612, -8689256, 1140851, -8931921, +-8638790, 7719130, 7201587, -7002944, -12147778, 3520263, -5944235, -382789, -3309272, 4454955, +-3398393, 5657009, -5858336, -6583111, 7938174, -2506650, -1770063, 4455492, -6465537, -6975027, +8005819, 10515691, 255551, -726386, 3663607, -9199283, 15634755, -9627706, 1203128, 7370701, +-3464965, 6874632, 8468065, 2696703, -8741332, 9434433, -1343251, 3506304, -6838662, -1354525, +-13070659, 4463545, -7736847, 2954938, -13456669, 7888781, -9818832, -6954626, 5726265, 7794292, +2704756, 825707, 392990, -8542690, -7828115, -5077188, 20643224, 11262478, -3179887, -19099720, +-2636036, 5335960, 11148661, -6302865, 947040, -13197898, -4494147, -1646583, 3455301, 1919314, +-2941516, -246961, 5786395, -6527814, -371515, -7435662, 4016331, 4864051, 14170171, 6040872, +-6985765, 2931315, -3946001, -10759430, -1466195, 6165963, 840740, 17558364, -13351443, -2226404, +2991982, 7767985, 4097399, 10203769, 2091649, -12770548, 8135205, -10857140, -11158325, 23085, +-875636, 8311836, 10854456, 9534827, 14501420, 3182571, -14706505, 15888695, 8986682, -6917582, +12589623, -1986959, 1613297, -11342472, -3711389, -3562675, -4788889, 10050760, -17532594, -4414690, +-8218957, -8312373, 1487132, 8006356, -3992709, -10645613, -10758893, -14538464, -14181445, -7741679, +-2429341, 5554467, -11161009, -15016279, -8574365, -4250944, -7143605, -5379984, 12491912, -7747048, +1085553, 5957120, -11521250, -7530152, -7823820, 11584601, -5443334, 7219840, 17551384, -2622078, +3762391, 775778, -5690295, -8152922, -5171141, 7279433, -1604170, 8412767, 145492, 5980742, +1142461, -13492640, 14359149, -7639136, -2967286, 24346558, 16670379, 10742787, -7520488, -18896246, +-4059281, 10237591, -16313360, -10123238, 1175210, 12695923, 10507637, 7057168, -9073655, 6733435, +-1804423, 6735046, -1082869, 18719614, 12568148, -1714766, -17008070, -2593624, 14494441, 10806138, +1410360, 22865332, 11621108, -5485210, 947040, 891743, -1821066, -7329899, -8105140, -2166274, +-24525338, 6496675, -7736310, 476741, 140660, 5928666, 10557566, -500364, 3608310, -12136504, +9221295, -4887136, 18030272, -365072, 3566434, -41938744, -592169, 10221485, 6880001, 10911901, +-2769180, -12316892, 7678328, 1436667, -8137890, 8177618, 3170760, -9889699, 1523640, -470836, +4597226, -4215511, -13582297, -16027207, 936303, -6398965, 6701223, 4315369, 4001299, 4641786, +-16377247, -7114077, -17178796, -28140088, 4722317, 9508521, 10279467, 81604, 23474680, -16667157, +5703717, 3053185, -4442607, -14781130, -5895380, -8439074, 10152766, -4406100, -8721468, -14993731, +-1051193, -5565741, -2508261, -11290932, 6364605, -719407, -4894115, 6070400, 8114267, 9162776, +-11454678, 21719112, 1746441, -3052111, -12866111, -12428562, -2078227, -1534914, -12498355, -13402982, +-9880572, 8887361, -5486821, 14660871, 5190468, 24369108, 8869644, 9413495, -2492692, 13229036, +-1617055, 3429532, 19025094, -5243082, 7363722, -21676700, -27361090, 6569690, -542777, -17342542, +1946694, 999654, -23366232, 7458211, -6191732, -4082367, -8444979, 9972914, -7733089, 1451162, +251256, 5523865, 1393180, -11944841, 9350681, -256624, 4946192, -14524506, -20430622, -12965969, +4545149, 16942572, 22222698, -708133, 5900748, 13921600, 11471321, -1305670, -28330678, 19195282, +-2003602, 5087926, -5891622, 9714142, -859530, -12462384, 3249680, 21980568, 3176128, -14879914, +12598750, 8884677, 5719286, -11311870, 11494943, 8415988, 662499, 13750875, -6058052, 3373697, +22304838, 16159814, 159988, 4790499, 10625212, -21978958, -4944581, -1884954, -4025458, -19367082, +4103841, 5130876, 304943, -15188078, -1074816, -25607132, 418222, -18497888, -4530117, 8541079, +-8706972, -11496554, -9873593, 4599910, 3084860, -10704132, 2558190, -4351339, 10800769, -7183870, +-8913131, 5638755, 9680319, -1911261, 2985539, 3643743, -29560650, -1436130, -4558034, -14703284, +-1455457, 17044578, 2047089, -5566278, -6263136, 12904766, 3386582, 9689983, -23827942, 9459129, +-24712704, -31876174, -18690088, 144955, -15770046, 15355582, -4010426, -21800718, 472983, -6394670, +3980361, 2709588, -3637301, -3802120, 14807973, -5200132, 6386617, -8554501, -6199249, 20551418, +-6101538, -3613141, 551903, 3819300, 14568529, -28336584, -630286, 13463649, 15289547, 12084427, +2961917, -6040872, 29228864, 8391829, 10052908, 9831180, 6206228, -5049808, 1430224, 15394237, +6570226, -12757127, 7408282, 29272350, -14796699, 19890530, 8938901, -33163590, 9004399, 20432770, +-1095217, 8581345, 1120450, -25414396, 13518410, 29138668, 2938295, 19446538, -11249593, 17058000, +16252693, -1657857, -1563368, 15509664, 9967545, -23222352, 23019414, -6751689, -4072166, 11895986, +-5672041, -9574019, -9302362, 1061394, 1192390, -9198746, -17808546, 42027864, 19998978, -47840568, +-20471962, 5678484, -8546985, 14523969, 15929497, 18207976, 19673634, -11853573, 37743100, -5199595, +443992, -11961484, 13899051, 19785304, -14369887, -15222438, -3844533, -8517994, 1180042, 8250096, +663036, -9352291, -4278861, 16357383, -1777580, 8568460, 1400159, 19575924, 27897960, 11402064, +-14190572, -31391380, -3212099, -4799089, 3077344, -6765647, 10034117, 18403934, 1073205, -5914707, +-15164456, 35681516, 30074972, -3377992, 14406394, -7638600, -11733314, -33018098, 18090402, -15022185, +-4181688, -286152, -11100343, 6637872, 20147692, 3904125, -9709310, 10570451, -4803921, -13183402, +20601348, 5030481, -29934312, 38320236, -26063472, -12978317, 13961328, 15533286, 11923366, 703838, +-13116293, 1275068, 19343996, 5467494, -25621628, -20946018, -4675072, 32249836, 3707094, -15693274, +-41453952, -11739219, -1535451, 9831717, 29151554, 21966074, -2669859, 220117, 19353660, 15367393, +1169305, 4208531, -55925308, -35555348, -16830904, -27842126, 2942590, -15501611, 25500832, -5652177, +-1389959, -41876, -9461276, -11378979, 18698140, 11384885, 7038378, -2423972, -7949985, -7563438, +9694815, -20044612, -6863358, 3757560, -6273337, -9645960, 9186935, -29001766, -40096740, 9947144, +13576392, 16102369, -23045720, -12444668, 14063334, 5275294, -38985420, -34735012, 3006477, -16669305, +-16630650, 6788733, -31296890, 16608102, -11559368, 13693966, 13762686, -7724499, -17301202, -41671384, +-13923747, -12333535, 24182276, -20040318, -12880607, 7660611, 17037598, 22434762, -3226594, -31104154, +14353244, -4983773, -12366821, -26847840, 8360691, 10975789, -38810936, 14494978, 14429480, 35099548, +3680250, -9186935, 2674154, -43643312, -12109660, -5546951, 1046898, 7669738, -14338211, 26320096, +11116986, 32608466, -6124087, 28671592, 19013284, 11221139, 26786638, 13148506, 17821430, 22208202, +1411434, -29438242, -27222576, 5502927, 32041530, 22746146, -41785200, -1306207, -6790344, -5998996, +-4103841, -29258928, 7769059, -20833812, 18975166, -13923747, 42458436, -11097122, -60481192, -6408628, +-20813948, 12113955, 9002251, 17342004, 39249560, 8872329, -5557688, 21620866, -13077102, 44021268, +6856379, 29424820, 13042205, 2602213, -12261595, -10333154, 70567920, -129386, -52116208, -11185705, +36235564, -26365730, -1173063, 20314658, 8103530, -40814000, -16008954, -46450608, 6543920, 41573672, +-31042950, -28244778, 26575648, 13035763, -47399260, -44051868, 13393856, 2462627, 5657546, 15127412, +-2728378, -13253732, -7689602, 28230820, -21223580, 34813932, 4640176, -8303783, 6355478, 19972134, +-1229971, -6279779, -38563436, -16690243, 2863670, -20374252, 15917686, 25366076, 443992, 3779571, +-28208808, 31304942, -12758737, -14875082, 24334210, -10691784, -1686848, -19426674, -3730716, -13979045, +-47866336, 14795625, -7200513, 33068026, 41602664, -1822140, -10140418, -29056528, -11256572, -9166534, +38999912, -41206452, -30840012, -67431520, -1588601, -29164976, 4108673, 20547124, -16088411, -5968931, +40499396, 25948582, 15480673, 48318, -3851512, 29708826, -44307956, -7297687, -83752, -7471096, +5382131, 37666864, -27004606, 7903814, -7707319, -16516834, -11501386, 58158688, -5689221, 27424976, +-21516712, 38998840, -11841762, -1589138, 24682104, 21620328, 59340880, 549219, 11819213, 6198175, +-21591338, 27212376, 11669426, -19362786, 31207232, -14051522, 38658464, 25438018, -5845451, 21879638, +3815542, 20308216, 7239704, 35881232, -20374252, 16907676, -35497368, -11577621, 15729244, 39115340, +1104344, 1379221, 20649666, -2053531, -10846940, -51351704, -27520002, 6582038, -18129594, -2787434, +18781892, -44922672, 29589104, -3685619, 34637300, -16688632, -25996364, -6844031, 84444424, 16719234, +-70302176, 11359115, 22259204, 3033321, 83746496, -6320581, -55638616, 59978144, -17333414, -5129265, +70184600, -8130373, 46377592, 6557342, -40179420, -37044, 45335528, 5752572, 6224482, -1919850, +-60213296, -3600256, 8388608, -21256330, -7240241, -61324080, 38628936, 61428768, -27375584, 9495099, +-46836080, -133491344, -26514980, 7156490, 67432064, 58204324, -56927108, -49095236, -51241644, -40502080, +-30073362, 36464808, -7009924, 79249664, 52194592, -14893336, -65695820, -161201936, -105814576, 8188355, +178984176, 137766976, 24132348, -69751344, -178050016, -180537344, -14219563, 106435192, 162301440, 179919936, +17362942, -57139172, -74480104, -96471944, -88790392, 6618545, 59248536, 113466592, 76251776, 62712428, +-82299088, -98407368, -117955368, -139525776, 13943074, 168471696, 163601744, 34133180, -61911416, -157148016, +-208972704, -69584912, 13150116, 76899776, 185250528, 69302520, -4307316, -104345160, -89848568, -36695664, +36417564, 71912784, 119060792, -15982647, 28919626, 22203370, -51009180, 510027, 26201448, -21131776, +28949690, -1255204, -5373541, -2173254, 5771899, 21932788, -8748312, 25848724, 17557290, 10439455, +11635603, 8767102, -2381023, -15035607, 24139864, -511101, 14659797, -9037685, 13022878, -4754529, +-2076617, 8736500, -12210592, -12917651, 1656784, -5711770, 19441170, 19152332, -18037252, 8595303, +-10846940, 11912092, 6979, 7700340, 2794413, 10075993, -12945568, 8440148, -14864882, -6695317, +-2301566, -2022930, 11506217, -22647900, -4677757, -9582609, -20095078, -2153926, -8061117, 4338991, +18615998, -6067178, -26416196, 3826816, 16028281, 31335008, -1562294, 2470680, -17195438, -13243532, +14740865, 1175210, -5468030, 430570, 26240102, 11692512, 8942659, 14721537, 25309168, -23469312, +3491809, 4629975, -17569100, 46506444, 82949240, 5957657, -52567716, 16939888, -3011846, 65376920, +32224602, 64243584, -5128191, -32069448, -7428683, 13434658, 28449326, 20419348, -11094437, 1056025, +12656195, 7406134, 26927834, -19180788, 5372467, -25501368, -2959233, -711354, 7280507, 11680164, +3794604, -11486890, 20854750, -2894271, -16549046, 22880902, -3092377, -9631464, 7363185, -4627291, +19650550, 28669980, 1745367, 6701223, -8981313, -7309498, 18233746, 11394011, 15287399, 1763621, +-7980586, -19757386, -18126910, -21914534, 17780628, 17300128, 19089520, 25784836, 29864518, 11402601, +2683818, -26097832, 16587164, -3674882, -21524228, 27179626, -749472, 17583596, 11100343, -29072634, +9326521, -9186935, 7744900, 18357764, 5627481, -24103894, -13885092, -13422310, -29577292, -64042796, +3663607, 90122912, 117629488, 102159552, 69261720, -2511482, 3453154, -51382304, -62596464, -103194104, +-79272752, -82841328, -28030568, 7259569, 25929792, 45681272, 111720688, 94090384, 62000536, 20554640, +-11318849, -40837084, -31834298, -42526080, -55497420, -30178050, -32463510, -38227356, -19364396, -25301652, +3544959, 17300128, 12998182, 47659104, 42467564, 38869456, 23725400, 29214904, 16619913, 35012572, +6327024, 30084098, -1049583, -9049496, -56550224, -24577950, -67792304, -76883136, -87505128, -67726264, +-52930104, -19244138, 9436580, 46834472, 48215840, 38823820, 80172544, 65844532, 68587408, 64836288, +58298276, 22283900, 35588636, -19765976, -46177876, -46452220, -106357888, -104589968, -103832448, -108328736, +-93204552, -35801772, -24256364, 14690936, 46365784, 49877992, 21386790, 10043244, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, }, }, { { -2168959, --445603, 329102, -860067, -1518808, -3882651, 483721, -608275, -7189239, -1008244, -819265, -2469069, 5764383, -4874788, 2117419, -3059091, 1299765, -4207458, 2139968, 1373316, -3018288, --2754148, -4562329, 1896765, -4285841, 639413, 3762391, 2639794, 1153736, 1784559, 277562, --3806952, 163746, -2378875, 1923072, 1250909, 1466195, 5996311, 1932735, 905164, -128849, -2052458, -59593, 1890323, -471373, 4276177, 1480153, 1901597, 3220152, 7155416, 351114, --1174674, 2863670, -2155537, -4983236, 2552821, -2284923, -4288525, 1119913, -1305670, 2362769, --1137093, -1913408, -3275986, 3397856, 1266479, -198642, -3163244, -4417374, -1308891, -1005022, -724239, -550293, -78383, 702764, 1323387, 10341208, 5574868, -671626, 3679176, 858993, -882616, -11425150, -4894652, -5681168, 4491462, -653372, -3637837, 3988951, 4221953, 233539, -4057670, -1706713, -73551, -271120, -2401961, -1318555, -5402532, 2793876, -8017630, 3346317, --4148939, 3414499, 6497749, 2909304, -1153736, -1840930, 4822175, -786516, 293132, 4478041, --4742181, -155156, -1554241, -2785286, 666257, -682900, 1073742, 4603668, 7672959, -2413772, -216359, 6311455, 559956, 1668058, -2241436, -3520263, -437550, 1080184, -5875516, -1537061, -3196530, 439697, 1206886, 1893544, -774168, -1806571, -1682554, -2019172, 2379949, 1974611, --1029182, -3305514, -4138201, 2214593, 81604, -3298535, 3694746, -541166, -271120, 972810, -933082, -900333, -3777961, -983548, -13422, -3494493, -3621731, -2102923, 8546448, -5988258, --2523293, -4167192, -7713762, 2911451, 1271847, 346282, 6541235, 6283001, 6203544, 2067490, --1213865, 1017907, 4664335, -1962263, 1984275, 2433636, -5604933, 7968238, 1485522, 2518998, -5800354, -2190433, -5890548, 456877, 3911105, -2729452, -1324461, -3658239, 3888019, -30065, --463856, -6401649, -345208, -708670, 3920232, 2119566, -3623342, 7172596, 2539400, 1567126, -2401424, -1057636, 3886946, -1443646, 104690, -4833449, -6005975, 4854387, 3600793, 6688338, -522912, 1908039, -5209796, -7714835, -4003983, -2196876, -2451890, -3454764, -3311957, 1820529, --1120450, 2610803, -3198677, -869194, 1000191, 1787780, -1254131, 4429185, 809601, -7387881, --6904160, 4044249, 906238, 5658620, -8762270, -1235877, -3497714, 933619, 10387378, 5934034, --9133785, 3433290, 832150, -3811784, -4260608, -5182415, -8425115, 277025, 960462, -3134789, -1440425, -1821066, 266825, 2496450, 1895154, 5369246, -4792647, 8470749, -5258651, 4898947, -3845070, -3234110, 2211908, 362388, 3447785, -1469953, 1751810, 3187403, 979789, 443455, --1413581, 2463701, 636729, -1199370, 5921150, -7988639, 399969, -4872641, 9373766, 3284039, --8493835, 3147674, 10707890, -10334765, -5094368, 1137093, -1074279, -3986804, 2988224, -1469953, -6963216, -6220724, -943282, -2143189, -810138, -504122, 6557878, -6653978, -2710661, -869731, --7407745, 3433290, 1894081, 7009387, 1601486, 5668283, 3165391, -4946729, 531502, -3039226, -3274376, 1378685, -5211406, 15005005, -9493488, 3167539, 15992311, -11124502, 5242008, -74088, -5224291, -1154809, -9706089, -1869921, 8018167, 7448010, 2011118, 216896, 4097399, 2289755, -206158, 3674882, 3449396, -2449742, 4391604, -839666, 6885907, -5085242, -8287677, 2187212, --7198902, 2946348, 310848, -1674500, -2158758, -2908767, -4786204, 1440425, 2004139, 668404, -1537598, 1969243, -2793876, -5920076, 5394479, 1696512, 1180579, 268972, 7838852, 2113124, -3537443, 8521752, -4391067, 2579665, 807454, 3079492, 6057515, 5060545, -6602976, -5530844, --974958, -2790118, -108448, 1111323, -2292439, 2547453, -4840428, 1237488, -4478577, 3754338, -3987340, -2122251, 5488968, -2804614, 5054103, -1597191, 2937221, -3226057, 1123671, -2384244, -2248416, -1548873, -8396661, 6248104, 5364414, 10813654, -6733435, 3979824, -8527121, -2374580, -6621766, 5453535, -5703717, 1139240, -6739341, -179315, -8047158, 2195802, -5786932, -9069897, --6516003, 3010772, -5071283, -468688, -6098854, 192200, 2018635, -1788317, -4176856, 2527052, -5552319, 1986422, 3143379, -6244346, 4054449, -6511708, -767189, 2844879, 1203128, -1515587, --450972, -935229, 4814659, -4988068, -7082401, -2455111, 3732864, -2455648, -4884989, -6897718, --7500624, 1378148, -1216013, -8931921, 7235410, -5989869, -3732327, 9185861, -2080912, -2702071, -2415382, -2552284, -1498944, 33823, -3508452, -3478924, -2290828, -4392141, 1838783, 1303523, -7954817, -11344082, 2266669, 9336722, -3315715, 10241886, 3199214, 319975, -2827699, -7746511, --4632659, 12214887, -6550362, -447213, -2138357, 580357, 7764227, 6390375, -3953518, 9402220, -9978820, -5077188, -2276333, 5517959, -4922570, -4902169, -200790, -7290170, -50466, -2517925, -964757, 11270531, 4101694, 89657, -5350456, -16261820, -1869385, 8233989, 2193118, -6488622, -4524748, 6541772, 6259915, 6924561, -12422656, 1833414, 568009, -6854231, 3285650, -6266358, -3877819, -3882651, 4809827, 10212358, 14440217, 8352638, 4100620, -6898255, -1795833, -8112120, --7713762, -2558727, 8370355, 1069447, -27917, 902480, -8507256, 967441, 889595, -1404454, --4336843, 751082, 4537633, -6624450, -8929774, 18355616, 3469797, -6244883, -1061394, -4031901, --783832, 2131378, -3040300, 15830176, -1044751, 4096325, 12309376, 1032403, -1165010, -8174397, -4907000, -4636417, -4582730, -15999827, -6327561, 2643016, -205085, -3474092, -10573136, 3447785, -6813429, -9277129, -3962107, -2820183, -8575976, 3234647, 1320703, -5319854, -3339337, -2110977, --11795054, -4867272, 6874095, 9958419, -7158100, -10223096, -2144799, -970663, -7261716, -6942815, -3220689, 3990562, -8009041, 17133162, 825707, 6757594, -3234647, 6337761, -3773129, 1675037, --11660299, -2946348, 5842230, -12743705, 4189204, -3114925, -5546414, -14404247, 475668, 7549479, -904628, -15149423, -1461363, 2456185, 6764037, 10684805, -3264175, 4669703, 13457743, 4052302, -2160906, -6031745, -767189, 5134097, -1885491, -4529580, 5578089, 1372242, -9407589, -13916768, --11974369, -14417668, 12342125, -7388418, -2253784, 4488778, -14308147, -5471789, -10069551, -4007205, --3475166, 6621766, -12593918, -6212670, 3507915, 5142687, 6658273, 190589, -156766, -1884417, --421981, -2578591, 1345935, -9400073, -5619965, -8237211, 5499706, 3213173, 4161287, 6208912, --12204150, -583579, -1701881, 10974715, -4466766, 3625489, 5390721, -1952600, 5794985, -3859028, -6504191, 10001368, -4296041, -460635, 7902740, -6970195, 11099806, -4779762, -18964428, 3040300, -9021042, -3496640, 543850, -186831, 6746857, 9294846, -9940702, -3991098, 1517734, 6359773, --11684459, -8349954, -7454990, 13186623, -1224066, -15464030, -4395362, -6790880, -8757438, -3270618, -5674726, 2366527, 8213588, 3074123, 3906273, -16359530, -6701223, 6631967, -4582730, -2946885, --5741835, 1864553, 8381092, 2428267, 1810866, -10917270, -3997541, -1860795, 3852586, 9891310, --12081743, 5730023, -9904195, -2405719, -9139690, 1292785, 944893, -296890, 3411815, -8120710, --2682744, -7599945, -3495567, 296353, -672162, -9580998, 5260261, 6413460, -2659659, 7584376, -14252312, 1666447, 10705206, 14353781, 759136, 643708, 3054796, -2785823, 4325569, 1168768, --3485903, -4556424, 17416630, -1612223, 10007274, 4864588, -5657546, -5804649, -4656819, 5298379, --4488241, 6829535, 15259482, 8362838, -2512556, 727997, -13583371, -8511015, -8453033, 12995497, -18949396, -7742216, -534723, -7007239, -2135136, 10761577, 31446676, 13088913, -3799972, -1516124, --5352603, 13853954, -13918378, -8591545, -21499532, -709207, 11195906, 12970801, 2811056, -5805185, --12743168, -10085657, 10057203, -2451353, 15744276, -538482, -4563940, 6750615, 3009162, -643708, --3459596, 9511205, -1508070, 8135742, 213675, -5265093, 19253802, -5073430, 8010114, 18023294, -6871411, -1359894, -8753680, -2300492, -14471355, -17938468, 4094178, 10484015, -2350421, 921271, --18613314, -7847979, 11263015, 5266167, -4608500, 2928631, -5324149, -3442416, -8346732, -15247134, -1151051, -4197794, -9973451, -17545478, -14175003, -5545877, -13006772, 5213554, -5690832, 1166621, -1956358, -1093606, 554051, -3200825, -2736431, 7464117, 17307108, -12693776, 2343979, -6057515, -6427419, -7341173, -13131326, -14126147, 3389803, 5872831, 16974784, -14357002, 4293357, 4802311, --24833500, -846109, -243739, -20139102, -11552388, -6958384, 4762582, -1383516, 772557, -5524939, -8122857, 13751948, 6635188, -1713155, -21239150, -8829916, -11799886, 4391604, 721018, -8922258, --1276142, 7296076, -6626061, 12477954, -11731703, -202400, -7118909, -20605106, 2871723, -8720931, --10635950, 7798587, 10726144, -12772696, 4221416, 15204721, -5728413, 6674916, 4384625, -3534758, -1215476, -16822314, 24577414, 10006200, 5102421, 24283208, -30652108, -2282238, -5127654, 3070365, -11040213, 12481712, 3703873, 5877126, 14361297, -1632088, -11830487, -18534932, 5771899, -7147363, --737661, 4733054, -5193153, 7237557, 18292802, -12601971, 7517267, -6309307, -7764764, 3360275, -16244640, 18402862, 5011153, 11233487, -7184407, 5127117, 5633387, -31039728, 9033927, 9657234, -2442763, -10089415, 117575, -19261318, 22666154, 13159780, -6665789, -7790534, -10745471, -6070400, -16502338, -16615618, -9011915, -2713346, -2374580, -3778498, 2707977, -11072963, -10690174, -6746857, --8153459, -2532957, -10714870, -1750199, -7077033, -24509768, -15156940, -6202470, -3513820, 3201361, -4398047, -318901, 1044751, 6866042, 3709241, 3440269, 17413408, 3419331, 6076305, 10525354, -23248658, 19500226, 1293322, -7898445, -14842870, 13599477, -3180423, 36960340, 7636452, 16505022, --1721208, 1995012, -14715095, -715112, 12782360, 7290707, 9528385, -11311333, -7793218, -14535243, --27913530, 15375446, -25289842, -3349538, 29072096, 4118337, -22535694, 7082938, 7699803, -14106820, --11938398, 855235, 8524973, 22098680, -1633698, -15891379, -17224430, -210990, -9965935, 3483219, -2534568, -17773648, -16434692, -29465086, -9407052, -8022999, -21029770, -13175886, -612033, -8789651, --6471442, -4625143, -2142115, -19503446, -11353746, -11659226, -6633040, 7105487, -17719962, 2159295, -13942538, 18012020, -4452271, 5602785, 9363566, -15990163, 9145059, -6357089, 14635101, -6278706, -948651, -6808060, -2137820, 30996242, -6574521, 12391518, -22288196, -2432025, -450972, -19498078, -18918258, 2043868, -7544110, 15273441, -6156836, 5039071, 26978838, -9325448, -15533823, 12048994, --3391951, -28988344, 11984569, -38818452, -22537304, 18786186, 12192338, 5479305, 8055748, 3779571, --660351, -24014772, -13033615, -5106716, -5273683, 41637560, 22516366, 212601, -21529060, 11142756, --22441740, -17934172, 3109020, 18581640, 36220532, -5566815, 18225156, -6426345, 12888123, 22211960, -12167642, 14242112, 7394860, -4002373, -18221936, -18566070, -5813775, -17550846, -5348308, -3148211, --4122095, 14197551, -2545305, -36208720, 1997160, 8797704, 8256538, 21725018, -2352568, -43281996, -24515136, -19390704, 6248641, -4284767, 14489609, 21134998, -23663122, -1763621, -11836393, -20729122, -14875082, -10427644, -25346750, 9705552, 14828375, 24065776, 6506339, -4164508, 2753074, 19505594, --15923054, 30955976, -9722195, -9418863, -2596845, 18411988, -19650550, 896038, 2843805, -56716652, --7705708, 15770046, -7286412, 1068373, 8698919, 1640678, -1293322, 1112397, 21388400, 16207596, --6067178, -1649268, 23895588, 15787763, -43983688, -25033216, 30500710, 35201552, -18548354, -6195491, --49353468, -27228482, 7570954, -1950452, 7078106, -26060250, -16033113, -17687212, 27409408, 40343700, --1297080, 11305428, -5786395, -2884608, 259309, 9827959, 18103824, 4944581, -5254893, -2494839, --3090766, -22927610, -12468290, -23248658, -2108829, 8523899, -8989367, 16062104, -9791452, -2929705, -24537686, -9928891, 14476187, 10461467, -2704756, -20812338, -14512694, -11680700, 5786395, 43500504, -9233643, 24339580, 28474022, 22750978, 17495550, 15932718, -20700668, 2950106, -1255741, 33512020, -17406428, 20929376, 35227860, -12694850, -18450106, 11455752, 30884572, -42324220, 3193845, 8147016, -26096222, -32197222, -50982336, -3731790, 22392886, 12239583, 15524159, 24599962, -5709086, -4151623, -11483669, -18018998, 14460618, -3159485, -8803072, -22660248, 10111964, -12372727, -17046726, 11507828, -29740502, 5699959, -7743826, 13480292, 29913910, 7430294, 8309688, -748398, -325881, 10130217, --20037634, -1365263, -29998736, 14755897, -23669028, -4987531, 16989280, 5061082, -12286291, 357019, --14637785, 32908040, 7461432, 8702677, 21497386, 36515276, -13421773, 9820980, -15988016, 3771518, -17114370, 28609850, 10435697, -9634149, 35489316, 1125281, 724776, -22071836, 4277788, 16907676, --3826279, 15990700, -21002926, 33411624, 41678900, -50243600, 1974074, -7054484, 13344463, -12280922, --2811593, 15222438, -13507135, -54526756, 3942780, 38307888, -31277026, 11065446, -4586488, -11754252, --17653926, 39577588, 439697, -3789235, 9495636, -47160352, 31740882, 3342558, -23501524, 2079301, --48242148, -11462194, 2998961, -9750650, -38282116, -4579509, -24896314, -6578816, 24048058, 5220533, -31363462, 12557948, 12304544, 7055021, -9702868, 24503326, -11681774, -314606, 12472585, 5323075, --14188961, 12229383, 5938329, 29181618, 12972949, -5142687, 18646600, -13871134, 24866786, 8344048, --24987046, -26668526, 15104863, 17752174, 8523899, 3176665, -11370926, -16817482, 6649683, -16476031, --24122684, -7327751, -2789581, -22913114, -7132867, 9480067, -14394046, -25741350, 9271224, 10705206, -2819109, -2264522, 454730, -3391414, 11642046, 46409804, 11459510, -49929, 685584, -14336601, --23198728, -9583146, 39920112, 42055248, 23420456, 6266358, 39437464, 20358682, -4737349, -46825880, --34610992, -26671746, -54487028, -18801220, -4173635, 11114838, 20989506, -8956081, 27049704, -30818538, -25026774, -3120294, 33391224, -21473226, 19362786, -31667330, 27834610, -25536802, -10658498, 38696044, -9084930, 31155156, 44432512, 4800700, -3328600, -18146236, -1219234, 28414430, 7348152, -9556302, --30791694, 3097745, 6462315, 15182709, 9318468, 12774306, 7995082, -17540646, -28551332, -11619497, -28417114, 11454678, 89802936, -27609124, -23438710, 30000346, 46350212, 10553272, -297963, 13072807, -3543885, 15816754, -12960601, 6489696, 22000970, 24962886, 16394427, 70727912, -8215736, -7497939, --3896072, 37360308, 22030498, -16463147, 19403052, 1406065, 6786585, -13021804, 32450626, -29650844, -2899640, 51128364, -35389992, 107395120, -47647292, 52570936, 46679852, -43224552, -41303088, 48406964, -214748, -6401649, 15406585, 25325812, -56374132, -20627118, 30735322, -67406824, -45587320, -26863946, -46312096, 106180720, 26261578, -79249664, -20893942, -81029392, -46005004, 70129296, 37999188, 66051764, -32489816, -46073724, -79274360, -56203944, -16707960, 36759016, 36556616, 25818122, 10465762, -18096844, --86604792, -98599568, -24707874, 79257712, 134582800, 95370288, -20601348, -62435940, -95699384, -66620848, --58736900, 2108292, 18945638, 77162312, 76854680, -41406704, -30623116, -98852968, -97304632, -31746788, -5587753, 99310920, 139974064, 65721588, -46362560, -148769072, -115755808, -80074832, 35328252, 87601760, -49107584, 35632660, 24166708, -88227752, -21397528, -49703508, 13907641, -5697811, 47798692, 84873384, -60666412, -77268608, -163727904, -118200184, 6646999, 91106992, -9023189, -18546206, 36869072, 11468100, --29811904, -28164248, 126702, -45367204, -5565204, 6737193, 5241471, -3920768, 1190243, -15222975, --1841467, -1746441, 7894687, -5206037, 20983600, -5480915, -3952444, -5755256, -6490233, 13137768, -3810710, -6173479, 20338818, 1415192, -35923644, -17829482, 10006737, 17793512, -5908802, 2340220, -24766392, -392453, 3459596, -19944218, -8924405, 6483790, -4295504, -4187056, -2587718, 16658031, -6002217, -6023692, -19226422, -7283191, -1044751, -17161078, 1773285, -19613506, -13380434, -8799851, --17797808, 28664074, -4969814, -11979738, 11940546, 598074, -27473296, -717796, 27613418, 23338852, --12692165, 18442590, 3029026, 17818208, -18239116, -25617332, 10669773, 13737453, 11002632, 11162083, --9331353, 12267500, -18025440, 15222975, 13787382, -22089554, 44259636, 67796056, -9012452, -25017648, --21711596, 62460636, 28014998, 60424820, 32353452, 56371, -28331214, -6320581, 15123117, 28304372, -13254269, -13253195, -3598646, 13433047, 19596862, 2320356, 4061429, -14163192, 2091649, -6957310, -8615168, 9984725, 25912612, 22519588, -12671227, 1693828, -14192719, 3228742, 11415486, 17687212, -639950, -8942122, -772557, -15890842, 12146704, -3995393, 4497905, 11625940, -639950, 15605227, --8870181, -4926328, -4776004, -17095044, -10990821, -25820806, -5922760, -29398514, 746787, -10555956, -22381074, 2824478, 5577552, -22996866, 7902203, -631897, -11526082, 15466714, -10567230, -5499169, -2117956, 9791452, -3447248, -7013145, 34257196, 10708964, 5645735, 12385075, -13457206, -26069914, --54200876, -8253854, 73179800, 110934176, 94459752, 73223288, -4501663, 7681549, -54067732, -62911608, --100407208, -59183576, -63180044, -21227876, 8187819, 42566348, 31361852, 94142464, 83210696, 26023744, -5766531, -16346109, -32590212, -52922588, -19020800, -54284628, -14340896, -27353036, -16983912, -14111652, -2235531, -1018444, 17188996, 23805394, 38463580, 40415104, 50138376, 41859288, -6365142, 1970853, --1762010, 5847598, -26663156, 7657927, -28591598, -70239360, -34949224, -53398792, -86973624, -27907624, --9662066, -37609416, 9090835, 22734872, 56418692, 66290136, 99907384, 61277908, 49377628, 48590040, -28564216, -14806900, 430034, -57105348, -50594176, -81016504, -96411280, -109865800, -83515640, -65424700, --16093242, -11559368, -4680978, 19373524, 33392296, 77469400, 49866716, 24200530, -2239289, 0, -0, 0, 0, }, +-445603, 329102, -860067, -1518808, -3882651, 483721, -608275, -7189239, -1008244, -819265, +2469069, 5764383, -4874788, 2117419, -3059091, 1299765, -4207458, 2139968, 1373316, -3018288, +-2754148, -4562329, 1896765, -4285841, 639413, 3762391, 2639794, 1153736, 1784559, 277562, +-3806952, 163746, -2378875, 1923072, 1250909, 1466195, 5996311, 1932735, 905164, -128849, +2052458, -59593, 1890323, -471373, 4276177, 1480153, 1901597, 3220152, 7155416, 351114, +-1174674, 2863670, -2155537, -4983236, 2552821, -2284923, -4288525, 1119913, -1305670, 2362769, +-1137093, -1913408, -3275986, 3397856, 1266479, -198642, -3163244, -4417374, -1308891, -1005022, +724239, -550293, -78383, 702764, 1323387, 10341208, 5574868, -671626, 3679176, 858993, +882616, -11425150, -4894652, -5681168, 4491462, -653372, -3637837, 3988951, 4221953, 233539, +4057670, -1706713, -73551, -271120, -2401961, -1318555, -5402532, 2793876, -8017630, 3346317, +-4148939, 3414499, 6497749, 2909304, -1153736, -1840930, 4822175, -786516, 293132, 4478041, +-4742181, -155156, -1554241, -2785286, 666257, -682900, 1073742, 4603668, 7672959, -2413772, +216359, 6311455, 559956, 1668058, -2241436, -3520263, -437550, 1080184, -5875516, -1537061, +3196530, 439697, 1206886, 1893544, -774168, -1806571, -1682554, -2019172, 2379949, 1974611, +-1029182, -3305514, -4138201, 2214593, 81604, -3298535, 3694746, -541166, -271120, 972810, +933082, -900333, -3777961, -983548, -13422, -3494493, -3621731, -2102923, 8546448, -5988258, +-2523293, -4167192, -7713762, 2911451, 1271847, 346282, 6541235, 6283001, 6203544, 2067490, +-1213865, 1017907, 4664335, -1962263, 1984275, 2433636, -5604933, 7968238, 1485522, 2518998, +5800354, -2190433, -5890548, 456877, 3911105, -2729452, -1324461, -3658239, 3888019, -30065, +-463856, -6401649, -345208, -708670, 3920232, 2119566, -3623342, 7172596, 2539400, 1567126, +2401424, -1057636, 3886946, -1443646, 104690, -4833449, -6005975, 4854387, 3600793, 6688338, +522912, 1908039, -5209796, -7714835, -4003983, -2196876, -2451890, -3454764, -3311957, 1820529, +-1120450, 2610803, -3198677, -869194, 1000191, 1787780, -1254131, 4429185, 809601, -7387881, +-6904160, 4044249, 906238, 5658620, -8762270, -1235877, -3497714, 933619, 10387378, 5934034, +-9133785, 3433290, 832150, -3811784, -4260608, -5182415, -8425115, 277025, 960462, -3134789, +1440425, -1821066, 266825, 2496450, 1895154, 5369246, -4792647, 8470749, -5258651, 4898947, +3845070, -3234110, 2211908, 362388, 3447785, -1469953, 1751810, 3187403, 979789, 443455, +-1413581, 2463701, 636729, -1199370, 5921150, -7988639, 399969, -4872641, 9373766, 3284039, +-8493835, 3147674, 10707890, -10334765, -5094368, 1137093, -1074279, -3986804, 2988224, -1469953, +6963216, -6220724, -943282, -2143189, -810138, -504122, 6557878, -6653978, -2710661, -869731, +-7407745, 3433290, 1894081, 7009387, 1601486, 5668283, 3165391, -4946729, 531502, -3039226, +3274376, 1378685, -5211406, 15005005, -9493488, 3167539, 15992311, -11124502, 5242008, -74088, +5224291, -1154809, -9706089, -1869921, 8018167, 7448010, 2011118, 216896, 4097399, 2289755, +206158, 3674882, 3449396, -2449742, 4391604, -839666, 6885907, -5085242, -8287677, 2187212, +-7198902, 2946348, 310848, -1674500, -2158758, -2908767, -4786204, 1440425, 2004139, 668404, +1537598, 1969243, -2793876, -5920076, 5394479, 1696512, 1180579, 268972, 7838852, 2113124, +3537443, 8521752, -4391067, 2579665, 807454, 3079492, 6057515, 5060545, -6602976, -5530844, +-974958, -2790118, -108448, 1111323, -2292439, 2547453, -4840428, 1237488, -4478577, 3754338, +3987340, -2122251, 5488968, -2804614, 5054103, -1597191, 2937221, -3226057, 1123671, -2384244, +2248416, -1548873, -8396661, 6248104, 5364414, 10813654, -6733435, 3979824, -8527121, -2374580, +6621766, 5453535, -5703717, 1139240, -6739341, -179315, -8047158, 2195802, -5786932, -9069897, +-6516003, 3010772, -5071283, -468688, -6098854, 192200, 2018635, -1788317, -4176856, 2527052, +5552319, 1986422, 3143379, -6244346, 4054449, -6511708, -767189, 2844879, 1203128, -1515587, +-450972, -935229, 4814659, -4988068, -7082401, -2455111, 3732864, -2455648, -4884989, -6897718, +-7500624, 1378148, -1216013, -8931921, 7235410, -5989869, -3732327, 9185861, -2080912, -2702071, +2415382, -2552284, -1498944, 33823, -3508452, -3478924, -2290828, -4392141, 1838783, 1303523, +7954817, -11344082, 2266669, 9336722, -3315715, 10241886, 3199214, 319975, -2827699, -7746511, +-4632659, 12214887, -6550362, -447213, -2138357, 580357, 7764227, 6390375, -3953518, 9402220, +9978820, -5077188, -2276333, 5517959, -4922570, -4902169, -200790, -7290170, -50466, -2517925, +964757, 11270531, 4101694, 89657, -5350456, -16261820, -1869385, 8233989, 2193118, -6488622, +4524748, 6541772, 6259915, 6924561, -12422656, 1833414, 568009, -6854231, 3285650, -6266358, +3877819, -3882651, 4809827, 10212358, 14440217, 8352638, 4100620, -6898255, -1795833, -8112120, +-7713762, -2558727, 8370355, 1069447, -27917, 902480, -8507256, 967441, 889595, -1404454, +-4336843, 751082, 4537633, -6624450, -8929774, 18355616, 3469797, -6244883, -1061394, -4031901, +-783832, 2131378, -3040300, 15830176, -1044751, 4096325, 12309376, 1032403, -1165010, -8174397, +4907000, -4636417, -4582730, -15999827, -6327561, 2643016, -205085, -3474092, -10573136, 3447785, +6813429, -9277129, -3962107, -2820183, -8575976, 3234647, 1320703, -5319854, -3339337, -2110977, +-11795054, -4867272, 6874095, 9958419, -7158100, -10223096, -2144799, -970663, -7261716, -6942815, +3220689, 3990562, -8009041, 17133162, 825707, 6757594, -3234647, 6337761, -3773129, 1675037, +-11660299, -2946348, 5842230, -12743705, 4189204, -3114925, -5546414, -14404247, 475668, 7549479, +904628, -15149423, -1461363, 2456185, 6764037, 10684805, -3264175, 4669703, 13457743, 4052302, +2160906, -6031745, -767189, 5134097, -1885491, -4529580, 5578089, 1372242, -9407589, -13916768, +-11974369, -14417668, 12342125, -7388418, -2253784, 4488778, -14308147, -5471789, -10069551, -4007205, +-3475166, 6621766, -12593918, -6212670, 3507915, 5142687, 6658273, 190589, -156766, -1884417, +-421981, -2578591, 1345935, -9400073, -5619965, -8237211, 5499706, 3213173, 4161287, 6208912, +-12204150, -583579, -1701881, 10974715, -4466766, 3625489, 5390721, -1952600, 5794985, -3859028, +6504191, 10001368, -4296041, -460635, 7902740, -6970195, 11099806, -4779762, -18964428, 3040300, +9021042, -3496640, 543850, -186831, 6746857, 9294846, -9940702, -3991098, 1517734, 6359773, +-11684459, -8349954, -7454990, 13186623, -1224066, -15464030, -4395362, -6790880, -8757438, -3270618, +5674726, 2366527, 8213588, 3074123, 3906273, -16359530, -6701223, 6631967, -4582730, -2946885, +-5741835, 1864553, 8381092, 2428267, 1810866, -10917270, -3997541, -1860795, 3852586, 9891310, +-12081743, 5730023, -9904195, -2405719, -9139690, 1292785, 944893, -296890, 3411815, -8120710, +-2682744, -7599945, -3495567, 296353, -672162, -9580998, 5260261, 6413460, -2659659, 7584376, +14252312, 1666447, 10705206, 14353781, 759136, 643708, 3054796, -2785823, 4325569, 1168768, +-3485903, -4556424, 17416630, -1612223, 10007274, 4864588, -5657546, -5804649, -4656819, 5298379, +-4488241, 6829535, 15259482, 8362838, -2512556, 727997, -13583371, -8511015, -8453033, 12995497, +18949396, -7742216, -534723, -7007239, -2135136, 10761577, 31446676, 13088913, -3799972, -1516124, +-5352603, 13853954, -13918378, -8591545, -21499532, -709207, 11195906, 12970801, 2811056, -5805185, +-12743168, -10085657, 10057203, -2451353, 15744276, -538482, -4563940, 6750615, 3009162, -643708, +-3459596, 9511205, -1508070, 8135742, 213675, -5265093, 19253802, -5073430, 8010114, 18023294, +6871411, -1359894, -8753680, -2300492, -14471355, -17938468, 4094178, 10484015, -2350421, 921271, +-18613314, -7847979, 11263015, 5266167, -4608500, 2928631, -5324149, -3442416, -8346732, -15247134, +1151051, -4197794, -9973451, -17545478, -14175003, -5545877, -13006772, 5213554, -5690832, 1166621, +1956358, -1093606, 554051, -3200825, -2736431, 7464117, 17307108, -12693776, 2343979, -6057515, +6427419, -7341173, -13131326, -14126147, 3389803, 5872831, 16974784, -14357002, 4293357, 4802311, +-24833500, -846109, -243739, -20139102, -11552388, -6958384, 4762582, -1383516, 772557, -5524939, +8122857, 13751948, 6635188, -1713155, -21239150, -8829916, -11799886, 4391604, 721018, -8922258, +-1276142, 7296076, -6626061, 12477954, -11731703, -202400, -7118909, -20605106, 2871723, -8720931, +-10635950, 7798587, 10726144, -12772696, 4221416, 15204721, -5728413, 6674916, 4384625, -3534758, +1215476, -16822314, 24577414, 10006200, 5102421, 24283208, -30652108, -2282238, -5127654, 3070365, +11040213, 12481712, 3703873, 5877126, 14361297, -1632088, -11830487, -18534932, 5771899, -7147363, +-737661, 4733054, -5193153, 7237557, 18292802, -12601971, 7517267, -6309307, -7764764, 3360275, +16244640, 18402862, 5011153, 11233487, -7184407, 5127117, 5633387, -31039728, 9033927, 9657234, +2442763, -10089415, 117575, -19261318, 22666154, 13159780, -6665789, -7790534, -10745471, -6070400, +16502338, -16615618, -9011915, -2713346, -2374580, -3778498, 2707977, -11072963, -10690174, -6746857, +-8153459, -2532957, -10714870, -1750199, -7077033, -24509768, -15156940, -6202470, -3513820, 3201361, +4398047, -318901, 1044751, 6866042, 3709241, 3440269, 17413408, 3419331, 6076305, 10525354, +23248658, 19500226, 1293322, -7898445, -14842870, 13599477, -3180423, 36960340, 7636452, 16505022, +-1721208, 1995012, -14715095, -715112, 12782360, 7290707, 9528385, -11311333, -7793218, -14535243, +-27913530, 15375446, -25289842, -3349538, 29072096, 4118337, -22535694, 7082938, 7699803, -14106820, +-11938398, 855235, 8524973, 22098680, -1633698, -15891379, -17224430, -210990, -9965935, 3483219, +2534568, -17773648, -16434692, -29465086, -9407052, -8022999, -21029770, -13175886, -612033, -8789651, +-6471442, -4625143, -2142115, -19503446, -11353746, -11659226, -6633040, 7105487, -17719962, 2159295, +13942538, 18012020, -4452271, 5602785, 9363566, -15990163, 9145059, -6357089, 14635101, -6278706, +948651, -6808060, -2137820, 30996242, -6574521, 12391518, -22288196, -2432025, -450972, -19498078, +18918258, 2043868, -7544110, 15273441, -6156836, 5039071, 26978838, -9325448, -15533823, 12048994, +-3391951, -28988344, 11984569, -38818452, -22537304, 18786186, 12192338, 5479305, 8055748, 3779571, +-660351, -24014772, -13033615, -5106716, -5273683, 41637560, 22516366, 212601, -21529060, 11142756, +-22441740, -17934172, 3109020, 18581640, 36220532, -5566815, 18225156, -6426345, 12888123, 22211960, +12167642, 14242112, 7394860, -4002373, -18221936, -18566070, -5813775, -17550846, -5348308, -3148211, +-4122095, 14197551, -2545305, -36208720, 1997160, 8797704, 8256538, 21725018, -2352568, -43281996, +24515136, -19390704, 6248641, -4284767, 14489609, 21134998, -23663122, -1763621, -11836393, -20729122, +14875082, -10427644, -25346750, 9705552, 14828375, 24065776, 6506339, -4164508, 2753074, 19505594, +-15923054, 30955976, -9722195, -9418863, -2596845, 18411988, -19650550, 896038, 2843805, -56716652, +-7705708, 15770046, -7286412, 1068373, 8698919, 1640678, -1293322, 1112397, 21388400, 16207596, +-6067178, -1649268, 23895588, 15787763, -43983688, -25033216, 30500710, 35201552, -18548354, -6195491, +-49353468, -27228482, 7570954, -1950452, 7078106, -26060250, -16033113, -17687212, 27409408, 40343700, +-1297080, 11305428, -5786395, -2884608, 259309, 9827959, 18103824, 4944581, -5254893, -2494839, +-3090766, -22927610, -12468290, -23248658, -2108829, 8523899, -8989367, 16062104, -9791452, -2929705, +24537686, -9928891, 14476187, 10461467, -2704756, -20812338, -14512694, -11680700, 5786395, 43500504, +9233643, 24339580, 28474022, 22750978, 17495550, 15932718, -20700668, 2950106, -1255741, 33512020, +17406428, 20929376, 35227860, -12694850, -18450106, 11455752, 30884572, -42324220, 3193845, 8147016, +26096222, -32197222, -50982336, -3731790, 22392886, 12239583, 15524159, 24599962, -5709086, -4151623, +11483669, -18018998, 14460618, -3159485, -8803072, -22660248, 10111964, -12372727, -17046726, 11507828, +29740502, 5699959, -7743826, 13480292, 29913910, 7430294, 8309688, -748398, -325881, 10130217, +-20037634, -1365263, -29998736, 14755897, -23669028, -4987531, 16989280, 5061082, -12286291, 357019, +-14637785, 32908040, 7461432, 8702677, 21497386, 36515276, -13421773, 9820980, -15988016, 3771518, +17114370, 28609850, 10435697, -9634149, 35489316, 1125281, 724776, -22071836, 4277788, 16907676, +-3826279, 15990700, -21002926, 33411624, 41678900, -50243600, 1974074, -7054484, 13344463, -12280922, +-2811593, 15222438, -13507135, -54526756, 3942780, 38307888, -31277026, 11065446, -4586488, -11754252, +-17653926, 39577588, 439697, -3789235, 9495636, -47160352, 31740882, 3342558, -23501524, 2079301, +-48242148, -11462194, 2998961, -9750650, -38282116, -4579509, -24896314, -6578816, 24048058, 5220533, +31363462, 12557948, 12304544, 7055021, -9702868, 24503326, -11681774, -314606, 12472585, 5323075, +-14188961, 12229383, 5938329, 29181618, 12972949, -5142687, 18646600, -13871134, 24866786, 8344048, +-24987046, -26668526, 15104863, 17752174, 8523899, 3176665, -11370926, -16817482, 6649683, -16476031, +-24122684, -7327751, -2789581, -22913114, -7132867, 9480067, -14394046, -25741350, 9271224, 10705206, +2819109, -2264522, 454730, -3391414, 11642046, 46409804, 11459510, -49929, 685584, -14336601, +-23198728, -9583146, 39920112, 42055248, 23420456, 6266358, 39437464, 20358682, -4737349, -46825880, +-34610992, -26671746, -54487028, -18801220, -4173635, 11114838, 20989506, -8956081, 27049704, -30818538, +25026774, -3120294, 33391224, -21473226, 19362786, -31667330, 27834610, -25536802, -10658498, 38696044, +9084930, 31155156, 44432512, 4800700, -3328600, -18146236, -1219234, 28414430, 7348152, -9556302, +-30791694, 3097745, 6462315, 15182709, 9318468, 12774306, 7995082, -17540646, -28551332, -11619497, +28417114, 11454678, 89802936, -27609124, -23438710, 30000346, 46350212, 10553272, -297963, 13072807, +3543885, 15816754, -12960601, 6489696, 22000970, 24962886, 16394427, 70727912, -8215736, -7497939, +-3896072, 37360308, 22030498, -16463147, 19403052, 1406065, 6786585, -13021804, 32450626, -29650844, +2899640, 51128364, -35389992, 107395120, -47647292, 52570936, 46679852, -43224552, -41303088, 48406964, +214748, -6401649, 15406585, 25325812, -56374132, -20627118, 30735322, -67406824, -45587320, -26863946, +46312096, 106180720, 26261578, -79249664, -20893942, -81029392, -46005004, 70129296, 37999188, 66051764, +32489816, -46073724, -79274360, -56203944, -16707960, 36759016, 36556616, 25818122, 10465762, -18096844, +-86604792, -98599568, -24707874, 79257712, 134582800, 95370288, -20601348, -62435940, -95699384, -66620848, +-58736900, 2108292, 18945638, 77162312, 76854680, -41406704, -30623116, -98852968, -97304632, -31746788, +5587753, 99310920, 139974064, 65721588, -46362560, -148769072, -115755808, -80074832, 35328252, 87601760, +49107584, 35632660, 24166708, -88227752, -21397528, -49703508, 13907641, -5697811, 47798692, 84873384, +60666412, -77268608, -163727904, -118200184, 6646999, 91106992, -9023189, -18546206, 36869072, 11468100, +-29811904, -28164248, 126702, -45367204, -5565204, 6737193, 5241471, -3920768, 1190243, -15222975, +-1841467, -1746441, 7894687, -5206037, 20983600, -5480915, -3952444, -5755256, -6490233, 13137768, +3810710, -6173479, 20338818, 1415192, -35923644, -17829482, 10006737, 17793512, -5908802, 2340220, +24766392, -392453, 3459596, -19944218, -8924405, 6483790, -4295504, -4187056, -2587718, 16658031, +6002217, -6023692, -19226422, -7283191, -1044751, -17161078, 1773285, -19613506, -13380434, -8799851, +-17797808, 28664074, -4969814, -11979738, 11940546, 598074, -27473296, -717796, 27613418, 23338852, +-12692165, 18442590, 3029026, 17818208, -18239116, -25617332, 10669773, 13737453, 11002632, 11162083, +-9331353, 12267500, -18025440, 15222975, 13787382, -22089554, 44259636, 67796056, -9012452, -25017648, +-21711596, 62460636, 28014998, 60424820, 32353452, 56371, -28331214, -6320581, 15123117, 28304372, +13254269, -13253195, -3598646, 13433047, 19596862, 2320356, 4061429, -14163192, 2091649, -6957310, +8615168, 9984725, 25912612, 22519588, -12671227, 1693828, -14192719, 3228742, 11415486, 17687212, +639950, -8942122, -772557, -15890842, 12146704, -3995393, 4497905, 11625940, -639950, 15605227, +-8870181, -4926328, -4776004, -17095044, -10990821, -25820806, -5922760, -29398514, 746787, -10555956, +22381074, 2824478, 5577552, -22996866, 7902203, -631897, -11526082, 15466714, -10567230, -5499169, +2117956, 9791452, -3447248, -7013145, 34257196, 10708964, 5645735, 12385075, -13457206, -26069914, +-54200876, -8253854, 73179800, 110934176, 94459752, 73223288, -4501663, 7681549, -54067732, -62911608, +-100407208, -59183576, -63180044, -21227876, 8187819, 42566348, 31361852, 94142464, 83210696, 26023744, +5766531, -16346109, -32590212, -52922588, -19020800, -54284628, -14340896, -27353036, -16983912, -14111652, +2235531, -1018444, 17188996, 23805394, 38463580, 40415104, 50138376, 41859288, -6365142, 1970853, +-1762010, 5847598, -26663156, 7657927, -28591598, -70239360, -34949224, -53398792, -86973624, -27907624, +-9662066, -37609416, 9090835, 22734872, 56418692, 66290136, 99907384, 61277908, 49377628, 48590040, +28564216, -14806900, 430034, -57105348, -50594176, -81016504, -96411280, -109865800, -83515640, -65424700, +-16093242, -11559368, -4680978, 19373524, 33392296, 77469400, 49866716, 24200530, -2239289, 0, +0, 0, 0, }, { -266825, --848256, -2347200, 1889786, 4907000, -1739999, 3080029, 3562139, 873489, 1805497, 4203699, -4820564, -1772748, 1234266, -3221226, -3966402, 4744328, -9451076, 529892, -6005975, -4046933, --2385318, -933619, 11103027, -158914, 2776160, 2876554, 420907, -907312, -488016, -839666, -1137093, 2854006, 2432025, -752693, 103079, -830002, -3867618, 1779190, 1083406, -1492501, --5880884, -5230734, -176094, 334471, 709207, 3226594, 3525631, -4456566, -3146601, -3311957, -2951716, 4565014, 2816962, 6103686, -190052, -630286, -1303523, 4073777, -2573759, 559420, -408022, -3329137, -4973572, -1956895, 5257040, 117038, 7946763, 250182, -931471, 187368, -5209259, -796180, -425739, 2817499, 2080912, 7327214, 2882997, -3787088, -561567, 2501819, --388158, 2665027, -6706055, -4909148, -1118302, -5785321, 2454037, -1354525, -568009, -3938485, --1659468, 3496640, 3636764, -1491427, -1035624, -2467459, -5420786, 6010807, 3679713, 63351, -689342, -430570, 222265, 4817880, -2449742, 803159, -7824357, -6547141, -1578937, 481573, --5448166, -1122597, 1975148, 364535, 121333, -2859375, -2098629, 5031554, -2369211, -2306398, --716723, -841277, 2265595, -1306744, -3376381, -239444, 2937758, -4331475, 156229, -4633196, -280247, -3429532, 4955856, -416075, -5337571, -901406, -592169, 492848, -7631083, -1048509, -503048, -5172751, 2165201, -26844, -5990943, 2514167, 3332358, -3196530, -3852586, -6400038, -2956548, 2305324, -105764, -5415954, 2425046, -6763500, -1952063, -875636, -3496640, 3380139, -7613904, -3033321, -1048509, 463320, -3186329, 2309082, -492848, -2454574, -4378719, -2196876, -6899328, 6797860, 3751117, 7883413, 4569845, 2614561, 7310035, -4369593, 1632625, 3286187, --107911, 1435056, -2121714, 1585380, -10034654, 413391, -525597, 3850975, -2214056, -1063541, --624381, 3020436, -3104188, -274341, 1008780, 2218351, 2024540, -271657, -3301756, 927176, -1334661, 2763275, 2014877, 3180423, -3055869, -1590212, -409096, -5375152, -478889, 1872606, -5127117, 5856725, -514859, 3415036, 2511482, 1074, 2321967, 2856690, 3857954, -974421, -297963, -2196876, 839666, -1829656, 1991791, -2967286, -2759517, 2160369, 402653, -6684043, --6768332, 2659122, -1015760, 5648419, 5196911, 673236, -130460, 10700911, -3102040, -34897, -8533026, 573915, -5369783, -7251516, 5126044, -1982664, -256087, -4423817, 1136556, -3109556, -3374234, 16552267, -6283001, -4631586, -6215892, -6214818, 848793, -5042829, -13222594, -164819, -961536, 185220, -5465883, -931471, 3846143, -5127654, -3457986, 7783555, 2161442, -1822677, --2188286, 5043366, -2815351, 3635690, 2843805, -6884296, -5018670, -4045322, 4174171, -3462818, --2509872, -1857573, -2736968, -310848, -5129802, 80531, -1851668, 1190243, -1090922, -10220412, -4295504, -5730560, 4054449, 809601, -8873402, 1647120, 5146445, 1640141, 8884677, -4090420, -54224, 909459, 1783485, 3090766, -3891777, 942745, 2807835, -4038880, 1764158, 2519535, --2606508, 1392106, -1407676, -9050570, 2654827, 9175124, 7113003, 8639327, 1233729, -1399623, --7303055, -3325379, -3529390, -2266669, 7158100, 10620380, 563714, -251792, 7110319, -11334956, -84289, -474594, -347892, -3350075, -4090420, 4809290, 5193153, 702764, -1278290, 2669322, --5821292, -3772592, 4318590, -4197257, 9096204, 8907225, 1341104, 5741298, 4285304, 1529545, --3762928, 1979443, -201327, -5761162, 6295885, 177167, 2975876, 5869610, -6008123, -1557463, --7126962, -794569, 1763621, 7647726, -6806987, -1835562, 5248450, -90194, -4232154, 8465917, --5929203, -11884711, 2496987, -6120329, -2903935, 4848481, -2701535, 2084670, 1308354, -1501091, -6199786, -3046206, 3128347, -1690070, 479426, -12029667, 2826089, 10812043, 1224603, 1478543, -3708168, 10132365, 1777580, -10214506, 11441793, 4645544, 4377646, 6534256, 6238977, -149787, --1672890, 6175626, 5274757, 1492501, -4153770, 5373004, 3037616, 8043937, 9998684, 3503620, --1899986, 102005, 398358, 3880503, 12607340, 7119445, -6237903, 11667279, 974958, -1498944, -2069101, -8691940, 10149545, -1300301, 717796, -1149441, 3010772, -1280437, 5539434, -6940131, -10413685, 8442295, 289373, -1479079, -4844723, -10301479, -2936147, 4269198, -1769527, -3739843, -6197101, 6679748, -3695819, -3678103, -12636331, -4363150, -908386, -339839, -14170171, 7968238, -1646046, -8483634, -6458557, 2940979, -2543158, 1505386, -1142998, 1341104, -2357937, 1533840, -5874442, -7321309, 310848, -285615, 628139, 10888279, 6557342, -448824, 14395120, 6127308, -13037910, 2674154, 4671314, 13160854, -4942971, -9338333, -5289252, 12290049, 3498788, -7454990, -10044855, -2964601, -5203353, 8281771, 20855824, -5594732, 1458141, 2945811, 4344360, -5629092, -1118302, 10937134, 1657321, 13524315, -2555506, 14549202, 10971494, 3257733, 9279277, 5282273, --4811437, 3400004, -875100, -1612760, 1909650, 722091, -463320, 3635153, 3220689, 9316858, -6982006, -8300561, 3323231, 3338263, -5391795, 79457, -13433047, -18378702, 7797513, -4911832, --11274289, -2815351, -5803575, 7517267, 2286533, -3968013, -8353175, 6688338, -5883032, 3933653, --6682969, 687195, -2384781, 10515691, 2468533, -4888210, 4134443, -7803956, 950798, 445066, -1993939, -4698158, 5363341, 6172942, -749472, -3875671, -14004815, -11768747, -9263708, 4442070, -1161252, 2389076, -11481521, 7408282, 5031554, 9181566, -9842991, 9469866, 7074348, -5416491, --4711579, -2631204, 9400073, 6731288, -4194036, 1156420, 14260365, 7471633, 3664144, 8518531, -5673115, 2471217, -4743792, 1323387, 653909, -1753420, -5250598, 12965433, 5939940, -11537356, -8006893, 8233453, 7939247, 6499896, 1708860, -7056632, 271657, -661425, 11128260, 1803886, -5017059, 10399190, -1723356, -10615549, 2528662, 6284611, 11285563, -14521284, -8297340, 4495220, -280247, 1802813, -8700530, -1735704, -8427800, -721018, 4209605, -2324651, -4563403, -5178657, -2481954, -884226, -2955474, 5305895, 674847, -9218074, 9416716, 6092948, -2809446, 3792993, -5691369, -6195491, -2088428, 24169392, -751082, 9477919, 6622840, -20026896, -10635950, -1036161, --776315, -130460, 11506754, 2677375, -5465346, 11927124, 7362111, -1349694, -1817308, 3904125, --1785633, -4029753, -8813273, -10474351, 6046240, -2172717, -4821101, -355409, -16349867, -2907156, -1314797, 9311489, -10694469, -2980707, 1680943, 923955, 2674154, 1009317, 11987254, -13404593, --4187593, 3229279, -70330, -7821673, -1289027, 10799158, 9548786, 8084739, -1685775, -13338021, --5649493, 5112085, -954020, 9303973, 123480, 22549, -6021544, -3995930, 8775692, -9538585, -7609609, 5362267, -5881421, -3336653, -261993, 1241782, -5783711, 3770981, -17704392, -1662689, -3056406, 11752641, 2098629, -1010928, 8002061, -5876052, 16691854, -16562468, -937377, -3919695, -3309809, -1249836, -684510, 3675955, -2383707, -5909338, -2995203, -3663070, -8979703, -1948841, -7539278, -1987496, -3591130, 9803800, 551903, 11883638, -11281805, -7260642, 15934866, -1918240, --168041, 542777, -8791798, -1462973, -11150272, 3156264, -13523778, -693637, 11484206, -3802120, -8110509, 9235790, 6421513, 7212861, -8801462, 9361418, 1990717, -25560424, -3304441, 3390877, --1093606, -3092913, -9833328, 8265128, -8201240, -2093260, -9403831, -10104447, -14100915, 13282186, -1247151, 15518791, -6674379, 11611444, 17057462, -10711112, 14199699, -16202227, -11765526, -14753213, --3474092, -10598906, 4901632, 4131759, 1307818, 12462384, 19557670, 3412889, -5888400, -10329933, -6207302, 19044958, -369367, 5832029, 408559, 7911330, 4546760, 6190122, 9536975, -11647951, --1522566, -4006131, 15344844, 12315819, -1141388, 18820546, 9113384, 2149631, -17788680, -8031589, --13700409, -5565741, 762357, 5457293, -5282810, 1207423, 18047452, -2977486, -557809, 1464584, -18559628, -11181410, -5282810, -4249334, -2449742, -10929081, 12610561, 1399086, 8273718, -13210783, -1308354, -974421, -8732205, -2726767, -15699179, 5282273, -251256, 3726958, -2386928, -373662, --18096308, -5420786, 6383395, 11752641, -3702799, 3520263, 22958748, -894964, 983011, 4957466, -10235981, -9191230, 2066953, 12642236, -7089918, 9524090, 2688113, 10077604, -11375758, -4615479, -3041911, 5046587, -10887742, -16687022, 4671851, -1814087, -16754131, 4584878, 1756642, 15221901, -13547401, -12508019, -14911053, 3352759, -11354820, -6030671, 578210, 22706418, 440234, -2882997, --20166482, -10156524, -1612223, -15126875, -22845468, 15795279, -5759551, -7245610, -1134945, 17135846, --5150740, 1896228, -3208341, -3409667, -9701794, -5274757, 1934346, -23995982, -15167140, -4408247, --8458401, -8101919, -2471754, -9391483, 8535174, 3779034, 3017215, -5710696, 4566087, -34645352, -32723356, 18967650, -2753074, -4363687, 18708340, 1129040, -10235444, -15425375, -1283658, -5396090, --5677410, -9277666, -8651675, 11881490, 12029130, -5017596, 25414932, -13547937, -9859634, -10075456, -1531156, 7854422, -26724898, 8243653, -6794639, 14528264, -13179107, 6120329, 3268470, 16307991, -1560147, 38288560, 12731894, -1011465, 1832340, -15142981, -19134616, 23794656, -6965900, 2457258, -32079648, -8602819, -1400696, -7128572, 25033216, 4476430, -10167798, 14370961, -5226975, 21489868, -11573863, 5077188, 3339874, -2798708, -8259759, -3124052, -2174864, -23826332, -5793374, -4210142, -13032005, -7710540, 2519535, 3823595, -16698296, -25491168, -823560, 21041044, -1377074, 18606872, --3259343, -27369680, -10316511, 605590, 6123013, 4201552, -21739514, -492848, -6192806, 15111306, --16127602, 19254338, 29618632, 18393734, -5990406, 2747169, 11959336, -5130876, 23195508, 25900800, -23656680, 6759742, 25922276, -1904818, -10486700, 2283312, -13639742, -18234284, 9200357, -8489003, -20932060, 9823664, 5113696, -8282845, -27255326, -8667244, -19506130, 11455752, 14190035, -140660, -6924561, 4776541, 6857989, 5822365, 2595771, -1441498, 3340411, -3964255, 7376070, -13091060, --36857260, -14643154, 20180978, 1313723, -6019934, -12176769, -77846, 17154100, 21682606, 4803921, --13314399, -2153926, 17346300, -20790326, 2001455, -2397129, 15522012, 17949742, -14209362, 27127014, -5209259, 1330903, 37962680, 462246, -11923903, 13586592, -6360310, 2202245, -8138426, 3142306, -25194816, 3248069, 32092532, 13919989, -28133110, -30350386, -6801081, 8374650, 17056388, -23420994, --8565775, -3031710, 28762322, 26925150, -22913650, -450972, -14120779, 9172440, -5119064, 30710626, --32212, -6285685, 19346144, -3741990, -24225226, -11701638, -4808753, 24320790, -23050016, 12352326, -35602596, 14506252, 16258062, -16554415, 12008192, 21009906, 15062987, -27146878, -14921253, 19420768, -53271016, 4738960, 10550587, -14396730, 3630321, 687195, -3853660, -13387950, 3214246, -3715684, -24912958, 22317724, -28661390, -10562935, 27670326, 16292958, 9128416, 4704063, 14367202, 19894288, -4534412, 12597139, 8773008, -11489038, 668941, -11178726, -7088307, 5373541, -3833258, 4052302, --12468827, -8124468, 6450504, -114354, 9379135, 10431402, -26648662, 20973400, 2429341, 17347372, --18461380, 11987254, 13973139, -9658845, -20947630, -17323214, -23084912, -19217832, -19431506, 8962523, -30409980, 11112691, 8215736, 17923436, -664646, 2629594, -14309220, 24493662, -29133300, -51233592, -16520592, -8934069, -20401, -42423540, 8689793, 18968186, -721555, 14212584, 3649112, 104153, --6353331, 12906377, 9430674, 12348568, -17546016, -9186935, -2343442, 11336566, -23412404, 39272644, -18822694, -3134253, 21603148, 12954695, 20616380, -10597295, -13485660, -13180718, 24962350, 8963060, -4740570, 22501334, -19208168, -62892816, -3892314, 4514011, 7846369, -35213364, 27900108, 20409684, --37803228, -28963112, 1326608, 16197932, 1737314, 9453223, 20654498, -4796405, 12999792, -17811766, --20660940, -16144245, -21464100, -33390150, 9999758, 4367445, -22424024, 31173946, 12283070, -6398965, --6680285, -16773458, -12829604, -29931090, -16341814, 12390444, 28208808, -9067213, 3373160, 12978317, --23881092, 19479824, 24576876, 5548561, -5478231, 22748294, 6278169, 4933307, -13972602, -14074071, --549219, 34301220, -8696235, -23524072, 165356, -29366838, -36941012, -21114596, -5521181, -13657996, --24065238, -12350715, -13008919, 15737834, 30451854, 11491722, -14146549, -29339996, 31492310, 17252346, --15476378, -8026220, -8359080, 2001455, 7240241, -9524090, 16232829, 15562814, 612033, -10022306, --10017474, -8898098, -1463510, 6261526, -4934918, -9837086, -24528558, 7809861, 20906290, -11834782, -18407692, 984621, 12185896, -10105521, 13555991, 41192496, -15787226, 18287434, 34784404, 6703370, --6835978, -9207873, 9545028, 1431298, 17261474, -13083007, 47656420, -14226005, -33567852, 8357470, --15945603, 39366060, 11358578, -10954851, 815507, -22000970, -33364380, 40299680, 2652679, -9044127, -36446556, -18322868, 2591476, -9419937, 19455128, -26366268, -35443144, -20356534, 2797634, 16670379, -20032802, 14522895, 19369228, 47296716, -17997524, 18949396, 29767344, -4385699, 916976, 35718560, -3964792, -19409494, -22529250, -19890530, 36767604, -24437290, 14726906, 17343614, -11522860, 3716221, --19847044, -4351876, 16662862, -14347338, 12162274, -4621922, -24888798, -55206972, -4516158, 50240380, -21403970, 5466420, -9328132, -14629732, -2119566, -19279572, 7046968, -27312770, 33968360, 2960306, -4787815, 3269544, -10396505, -32904282, -11933030, 27521614, -21033528, -4953708, -14216342, 12738873, --9853192, 37984692, -4912369, 8502425, -12421582, -33856692, 8900783, -25586194, -4712653, -1335198, --47319804, -39980776, -37398964, 14004278, -5695127, -19813758, -12131135, -12170864, -10786273, -17397838, --10964515, -1808718, -41914048, 13763223, 6732361, 17814988, -7755101, 39884140, -1970853, 9648644, --11135240, -1921998, 22451942, -29170882, -6785512, -9058623, 15607374, 8588861, 18762564, -7444789, --37512780, 10387915, 998580, 62495532, 64986076, 7223598, 1047435, 14616847, 8016557, 15649787, -28223304, 9784472, 29265908, 43109660, -10568841, 5140539, -35616016, -5682242, 4959077, -5230734, --10458245, -22354232, -18118320, 9567040, 10235981, -48275968, 34164856, 8645232, 48125644, -3468186, --9470940, 15187541, -3330210, 50075024, 12829604, -3070902, 9625559, 9553618, -13725105, -31309774, --24435680, -12530030, 37479496, 157840, 41154376, 4802847, 40153112, -11949673, -56337624, -21072184, --16802986, 28792924, 2828773, -27157078, -40102648, -27389544, -6386617, 34124588, -30576946, -25407952, --18129056, 30770756, -16260209, -8153459, -40629316, -38003480, 10615012, 7857106, 50629612, 15314780, --7201050, 2029909, 1872606, 37700688, 15772194, -19594178, 37560564, -3022583, -70213592, -22457848, -46395848, 49450104, -33840048, -35830228, -34394636, 19529216, 32203664, 60875792, 20164872, 7573638, --33266132, -3813394, -391916, 13596793, 32516660, 22164716, 3725884, -37108516, -70023000, -19044958, --34354368, 54322748, 59558312, 100364792, -27739046, -96022584, -18643380, -32701344, 77300288, 25952340, -78459928, 20147692, -22746684, -72698224, -46891380, 3473555, 11974906, 83199960, 36372468, -1819456, --64658048, -116964848, -27704686, 3842385, 57890252, 125777040, 30533460, 39127152, -76527192, -120902792, -9021579, 30238718, 101604968, 59762324, 45086420, -20090246, -74926776, -61756260, 3670050, 21627308, -2703145, 53289808, -36320928, -33377264, -5237713, -81202800, 16903918, -38385732, 51882132, 1436667, -5345087, -20291572, -54413476, 33552822, -54757612, 58003532, 5436892, 7632157, 9065602, -30555472, -30394946, 5959804, 20350628, -29154774, 8695698, 3036542, 37066104, -12995497, 7198365, 29218126, --32580548, -14533096, 388695, -24596740, 42004244, -7135015, -20830592, 42887932, 43544524, -9420474, --36477156, -5487895, -32409824, -2609193, 16159278, 56371, -39701604, 7432441, 17806398, -10160819, -20424180, -15784005, 6546067, 27344984, -11909407, 19076634, -44634912, -39741332, 41533944, 27369680, -65285112, 352724, -18934900, 60210608, -34333968, -25822954, 18367428, 22463752, 30871688, -26156350, --15321759, 11956115, -7292318, 35620848, -26554172, -76734960, 20570746, 48212080, 1013075, -33564096, -8509404, 26615912, -5541582, -4725001, -966368, -21809844, -12732431, 80502720, 22468048, 21867290, --68539088, -17929878, -53742924, -46308876, 41028748, 42242612, 85385024, 38483444, -11551315, -17563196, --10140955, 25857314, 18496814, -624381, 41157596, 6810745, -17012366, -21016886, -16383153, 28369332, --609349, 24524264, 11451993, 14071387, 3090766, -8359617, 2077154, -2088965, 2830920, -8831527, --2951180, 6401649, 5833640, 53699440, 43546136, 34418796, -4904853, 7513509, -24652038, -6476811, --16212965, -28562070, -29022168, 5065377, 12175695, 18074832, 23408646, 18112414, -16409459, -37976100, -49041012, -41194640, -19920596, -13675176, 13985487, -2069101, 21181704, 21924734, 18408766, -36599564, --16896402, -1336272, -18828600, -56920664, 26350162, -18839338, -18276160, 11249593, 27908160, -91805, --101211440, -55207508, -68036040, 49380848, 15797963, 146582400, 158503088, 151371824, 180178704, 170931648, -129291400, 75900664, 102373768, 41882372, 15068356, -82077360, -64566244, -178295904, -148969872, -139623488, --75197896, -103356776, -71624488, -5462662, -17286170, -8757975, -4027606, 2536715, 8727910, 7075959, -29717416, 24642374, 30727270, 64755220, 73468640, 70672080, 58719184, 138063328, 46520400, 61188252, -105774304, 109945256, 51662552, 111295488, 139947744, 106662832, 100910792, 95799248, 24975234, 61392264, -122573000, 114757768, 85029080, 98944776, 95597920, 10949482, -8668318, -6726456, -31142808, -49916648, -14867029, -56121264, -85837608, -67704792, -75654776, -131582768, -39023536, -78740176, -79629768, -133531608, --91513944, -115153440, -122459184, -70647384, -130706592, -165349264, -101339752, 6479495, -672162, 0, -0, 0, 0, }, +-848256, -2347200, 1889786, 4907000, -1739999, 3080029, 3562139, 873489, 1805497, 4203699, +4820564, -1772748, 1234266, -3221226, -3966402, 4744328, -9451076, 529892, -6005975, -4046933, +-2385318, -933619, 11103027, -158914, 2776160, 2876554, 420907, -907312, -488016, -839666, +1137093, 2854006, 2432025, -752693, 103079, -830002, -3867618, 1779190, 1083406, -1492501, +-5880884, -5230734, -176094, 334471, 709207, 3226594, 3525631, -4456566, -3146601, -3311957, +2951716, 4565014, 2816962, 6103686, -190052, -630286, -1303523, 4073777, -2573759, 559420, +408022, -3329137, -4973572, -1956895, 5257040, 117038, 7946763, 250182, -931471, 187368, +5209259, -796180, -425739, 2817499, 2080912, 7327214, 2882997, -3787088, -561567, 2501819, +-388158, 2665027, -6706055, -4909148, -1118302, -5785321, 2454037, -1354525, -568009, -3938485, +-1659468, 3496640, 3636764, -1491427, -1035624, -2467459, -5420786, 6010807, 3679713, 63351, +689342, -430570, 222265, 4817880, -2449742, 803159, -7824357, -6547141, -1578937, 481573, +-5448166, -1122597, 1975148, 364535, 121333, -2859375, -2098629, 5031554, -2369211, -2306398, +-716723, -841277, 2265595, -1306744, -3376381, -239444, 2937758, -4331475, 156229, -4633196, +280247, -3429532, 4955856, -416075, -5337571, -901406, -592169, 492848, -7631083, -1048509, +503048, -5172751, 2165201, -26844, -5990943, 2514167, 3332358, -3196530, -3852586, -6400038, +2956548, 2305324, -105764, -5415954, 2425046, -6763500, -1952063, -875636, -3496640, 3380139, +7613904, -3033321, -1048509, 463320, -3186329, 2309082, -492848, -2454574, -4378719, -2196876, +6899328, 6797860, 3751117, 7883413, 4569845, 2614561, 7310035, -4369593, 1632625, 3286187, +-107911, 1435056, -2121714, 1585380, -10034654, 413391, -525597, 3850975, -2214056, -1063541, +-624381, 3020436, -3104188, -274341, 1008780, 2218351, 2024540, -271657, -3301756, 927176, +1334661, 2763275, 2014877, 3180423, -3055869, -1590212, -409096, -5375152, -478889, 1872606, +5127117, 5856725, -514859, 3415036, 2511482, 1074, 2321967, 2856690, 3857954, -974421, +297963, -2196876, 839666, -1829656, 1991791, -2967286, -2759517, 2160369, 402653, -6684043, +-6768332, 2659122, -1015760, 5648419, 5196911, 673236, -130460, 10700911, -3102040, -34897, +8533026, 573915, -5369783, -7251516, 5126044, -1982664, -256087, -4423817, 1136556, -3109556, +3374234, 16552267, -6283001, -4631586, -6215892, -6214818, 848793, -5042829, -13222594, -164819, +961536, 185220, -5465883, -931471, 3846143, -5127654, -3457986, 7783555, 2161442, -1822677, +-2188286, 5043366, -2815351, 3635690, 2843805, -6884296, -5018670, -4045322, 4174171, -3462818, +-2509872, -1857573, -2736968, -310848, -5129802, 80531, -1851668, 1190243, -1090922, -10220412, +4295504, -5730560, 4054449, 809601, -8873402, 1647120, 5146445, 1640141, 8884677, -4090420, +54224, 909459, 1783485, 3090766, -3891777, 942745, 2807835, -4038880, 1764158, 2519535, +-2606508, 1392106, -1407676, -9050570, 2654827, 9175124, 7113003, 8639327, 1233729, -1399623, +-7303055, -3325379, -3529390, -2266669, 7158100, 10620380, 563714, -251792, 7110319, -11334956, +84289, -474594, -347892, -3350075, -4090420, 4809290, 5193153, 702764, -1278290, 2669322, +-5821292, -3772592, 4318590, -4197257, 9096204, 8907225, 1341104, 5741298, 4285304, 1529545, +-3762928, 1979443, -201327, -5761162, 6295885, 177167, 2975876, 5869610, -6008123, -1557463, +-7126962, -794569, 1763621, 7647726, -6806987, -1835562, 5248450, -90194, -4232154, 8465917, +-5929203, -11884711, 2496987, -6120329, -2903935, 4848481, -2701535, 2084670, 1308354, -1501091, +6199786, -3046206, 3128347, -1690070, 479426, -12029667, 2826089, 10812043, 1224603, 1478543, +3708168, 10132365, 1777580, -10214506, 11441793, 4645544, 4377646, 6534256, 6238977, -149787, +-1672890, 6175626, 5274757, 1492501, -4153770, 5373004, 3037616, 8043937, 9998684, 3503620, +-1899986, 102005, 398358, 3880503, 12607340, 7119445, -6237903, 11667279, 974958, -1498944, +2069101, -8691940, 10149545, -1300301, 717796, -1149441, 3010772, -1280437, 5539434, -6940131, +10413685, 8442295, 289373, -1479079, -4844723, -10301479, -2936147, 4269198, -1769527, -3739843, +6197101, 6679748, -3695819, -3678103, -12636331, -4363150, -908386, -339839, -14170171, 7968238, +1646046, -8483634, -6458557, 2940979, -2543158, 1505386, -1142998, 1341104, -2357937, 1533840, +5874442, -7321309, 310848, -285615, 628139, 10888279, 6557342, -448824, 14395120, 6127308, +13037910, 2674154, 4671314, 13160854, -4942971, -9338333, -5289252, 12290049, 3498788, -7454990, +10044855, -2964601, -5203353, 8281771, 20855824, -5594732, 1458141, 2945811, 4344360, -5629092, +1118302, 10937134, 1657321, 13524315, -2555506, 14549202, 10971494, 3257733, 9279277, 5282273, +-4811437, 3400004, -875100, -1612760, 1909650, 722091, -463320, 3635153, 3220689, 9316858, +6982006, -8300561, 3323231, 3338263, -5391795, 79457, -13433047, -18378702, 7797513, -4911832, +-11274289, -2815351, -5803575, 7517267, 2286533, -3968013, -8353175, 6688338, -5883032, 3933653, +-6682969, 687195, -2384781, 10515691, 2468533, -4888210, 4134443, -7803956, 950798, 445066, +1993939, -4698158, 5363341, 6172942, -749472, -3875671, -14004815, -11768747, -9263708, 4442070, +1161252, 2389076, -11481521, 7408282, 5031554, 9181566, -9842991, 9469866, 7074348, -5416491, +-4711579, -2631204, 9400073, 6731288, -4194036, 1156420, 14260365, 7471633, 3664144, 8518531, +5673115, 2471217, -4743792, 1323387, 653909, -1753420, -5250598, 12965433, 5939940, -11537356, +8006893, 8233453, 7939247, 6499896, 1708860, -7056632, 271657, -661425, 11128260, 1803886, +5017059, 10399190, -1723356, -10615549, 2528662, 6284611, 11285563, -14521284, -8297340, 4495220, +280247, 1802813, -8700530, -1735704, -8427800, -721018, 4209605, -2324651, -4563403, -5178657, +2481954, -884226, -2955474, 5305895, 674847, -9218074, 9416716, 6092948, -2809446, 3792993, +5691369, -6195491, -2088428, 24169392, -751082, 9477919, 6622840, -20026896, -10635950, -1036161, +-776315, -130460, 11506754, 2677375, -5465346, 11927124, 7362111, -1349694, -1817308, 3904125, +-1785633, -4029753, -8813273, -10474351, 6046240, -2172717, -4821101, -355409, -16349867, -2907156, +1314797, 9311489, -10694469, -2980707, 1680943, 923955, 2674154, 1009317, 11987254, -13404593, +-4187593, 3229279, -70330, -7821673, -1289027, 10799158, 9548786, 8084739, -1685775, -13338021, +-5649493, 5112085, -954020, 9303973, 123480, 22549, -6021544, -3995930, 8775692, -9538585, +7609609, 5362267, -5881421, -3336653, -261993, 1241782, -5783711, 3770981, -17704392, -1662689, +3056406, 11752641, 2098629, -1010928, 8002061, -5876052, 16691854, -16562468, -937377, -3919695, +3309809, -1249836, -684510, 3675955, -2383707, -5909338, -2995203, -3663070, -8979703, -1948841, +7539278, -1987496, -3591130, 9803800, 551903, 11883638, -11281805, -7260642, 15934866, -1918240, +-168041, 542777, -8791798, -1462973, -11150272, 3156264, -13523778, -693637, 11484206, -3802120, +8110509, 9235790, 6421513, 7212861, -8801462, 9361418, 1990717, -25560424, -3304441, 3390877, +-1093606, -3092913, -9833328, 8265128, -8201240, -2093260, -9403831, -10104447, -14100915, 13282186, +1247151, 15518791, -6674379, 11611444, 17057462, -10711112, 14199699, -16202227, -11765526, -14753213, +-3474092, -10598906, 4901632, 4131759, 1307818, 12462384, 19557670, 3412889, -5888400, -10329933, +6207302, 19044958, -369367, 5832029, 408559, 7911330, 4546760, 6190122, 9536975, -11647951, +-1522566, -4006131, 15344844, 12315819, -1141388, 18820546, 9113384, 2149631, -17788680, -8031589, +-13700409, -5565741, 762357, 5457293, -5282810, 1207423, 18047452, -2977486, -557809, 1464584, +18559628, -11181410, -5282810, -4249334, -2449742, -10929081, 12610561, 1399086, 8273718, -13210783, +1308354, -974421, -8732205, -2726767, -15699179, 5282273, -251256, 3726958, -2386928, -373662, +-18096308, -5420786, 6383395, 11752641, -3702799, 3520263, 22958748, -894964, 983011, 4957466, +10235981, -9191230, 2066953, 12642236, -7089918, 9524090, 2688113, 10077604, -11375758, -4615479, +3041911, 5046587, -10887742, -16687022, 4671851, -1814087, -16754131, 4584878, 1756642, 15221901, +13547401, -12508019, -14911053, 3352759, -11354820, -6030671, 578210, 22706418, 440234, -2882997, +-20166482, -10156524, -1612223, -15126875, -22845468, 15795279, -5759551, -7245610, -1134945, 17135846, +-5150740, 1896228, -3208341, -3409667, -9701794, -5274757, 1934346, -23995982, -15167140, -4408247, +-8458401, -8101919, -2471754, -9391483, 8535174, 3779034, 3017215, -5710696, 4566087, -34645352, +32723356, 18967650, -2753074, -4363687, 18708340, 1129040, -10235444, -15425375, -1283658, -5396090, +-5677410, -9277666, -8651675, 11881490, 12029130, -5017596, 25414932, -13547937, -9859634, -10075456, +1531156, 7854422, -26724898, 8243653, -6794639, 14528264, -13179107, 6120329, 3268470, 16307991, +1560147, 38288560, 12731894, -1011465, 1832340, -15142981, -19134616, 23794656, -6965900, 2457258, +32079648, -8602819, -1400696, -7128572, 25033216, 4476430, -10167798, 14370961, -5226975, 21489868, +11573863, 5077188, 3339874, -2798708, -8259759, -3124052, -2174864, -23826332, -5793374, -4210142, +13032005, -7710540, 2519535, 3823595, -16698296, -25491168, -823560, 21041044, -1377074, 18606872, +-3259343, -27369680, -10316511, 605590, 6123013, 4201552, -21739514, -492848, -6192806, 15111306, +-16127602, 19254338, 29618632, 18393734, -5990406, 2747169, 11959336, -5130876, 23195508, 25900800, +23656680, 6759742, 25922276, -1904818, -10486700, 2283312, -13639742, -18234284, 9200357, -8489003, +20932060, 9823664, 5113696, -8282845, -27255326, -8667244, -19506130, 11455752, 14190035, -140660, +6924561, 4776541, 6857989, 5822365, 2595771, -1441498, 3340411, -3964255, 7376070, -13091060, +-36857260, -14643154, 20180978, 1313723, -6019934, -12176769, -77846, 17154100, 21682606, 4803921, +-13314399, -2153926, 17346300, -20790326, 2001455, -2397129, 15522012, 17949742, -14209362, 27127014, +5209259, 1330903, 37962680, 462246, -11923903, 13586592, -6360310, 2202245, -8138426, 3142306, +25194816, 3248069, 32092532, 13919989, -28133110, -30350386, -6801081, 8374650, 17056388, -23420994, +-8565775, -3031710, 28762322, 26925150, -22913650, -450972, -14120779, 9172440, -5119064, 30710626, +-32212, -6285685, 19346144, -3741990, -24225226, -11701638, -4808753, 24320790, -23050016, 12352326, +35602596, 14506252, 16258062, -16554415, 12008192, 21009906, 15062987, -27146878, -14921253, 19420768, +53271016, 4738960, 10550587, -14396730, 3630321, 687195, -3853660, -13387950, 3214246, -3715684, +24912958, 22317724, -28661390, -10562935, 27670326, 16292958, 9128416, 4704063, 14367202, 19894288, +4534412, 12597139, 8773008, -11489038, 668941, -11178726, -7088307, 5373541, -3833258, 4052302, +-12468827, -8124468, 6450504, -114354, 9379135, 10431402, -26648662, 20973400, 2429341, 17347372, +-18461380, 11987254, 13973139, -9658845, -20947630, -17323214, -23084912, -19217832, -19431506, 8962523, +30409980, 11112691, 8215736, 17923436, -664646, 2629594, -14309220, 24493662, -29133300, -51233592, +16520592, -8934069, -20401, -42423540, 8689793, 18968186, -721555, 14212584, 3649112, 104153, +-6353331, 12906377, 9430674, 12348568, -17546016, -9186935, -2343442, 11336566, -23412404, 39272644, +18822694, -3134253, 21603148, 12954695, 20616380, -10597295, -13485660, -13180718, 24962350, 8963060, +4740570, 22501334, -19208168, -62892816, -3892314, 4514011, 7846369, -35213364, 27900108, 20409684, +-37803228, -28963112, 1326608, 16197932, 1737314, 9453223, 20654498, -4796405, 12999792, -17811766, +-20660940, -16144245, -21464100, -33390150, 9999758, 4367445, -22424024, 31173946, 12283070, -6398965, +-6680285, -16773458, -12829604, -29931090, -16341814, 12390444, 28208808, -9067213, 3373160, 12978317, +-23881092, 19479824, 24576876, 5548561, -5478231, 22748294, 6278169, 4933307, -13972602, -14074071, +-549219, 34301220, -8696235, -23524072, 165356, -29366838, -36941012, -21114596, -5521181, -13657996, +-24065238, -12350715, -13008919, 15737834, 30451854, 11491722, -14146549, -29339996, 31492310, 17252346, +-15476378, -8026220, -8359080, 2001455, 7240241, -9524090, 16232829, 15562814, 612033, -10022306, +-10017474, -8898098, -1463510, 6261526, -4934918, -9837086, -24528558, 7809861, 20906290, -11834782, +18407692, 984621, 12185896, -10105521, 13555991, 41192496, -15787226, 18287434, 34784404, 6703370, +-6835978, -9207873, 9545028, 1431298, 17261474, -13083007, 47656420, -14226005, -33567852, 8357470, +-15945603, 39366060, 11358578, -10954851, 815507, -22000970, -33364380, 40299680, 2652679, -9044127, +36446556, -18322868, 2591476, -9419937, 19455128, -26366268, -35443144, -20356534, 2797634, 16670379, +20032802, 14522895, 19369228, 47296716, -17997524, 18949396, 29767344, -4385699, 916976, 35718560, +3964792, -19409494, -22529250, -19890530, 36767604, -24437290, 14726906, 17343614, -11522860, 3716221, +-19847044, -4351876, 16662862, -14347338, 12162274, -4621922, -24888798, -55206972, -4516158, 50240380, +21403970, 5466420, -9328132, -14629732, -2119566, -19279572, 7046968, -27312770, 33968360, 2960306, +4787815, 3269544, -10396505, -32904282, -11933030, 27521614, -21033528, -4953708, -14216342, 12738873, +-9853192, 37984692, -4912369, 8502425, -12421582, -33856692, 8900783, -25586194, -4712653, -1335198, +-47319804, -39980776, -37398964, 14004278, -5695127, -19813758, -12131135, -12170864, -10786273, -17397838, +-10964515, -1808718, -41914048, 13763223, 6732361, 17814988, -7755101, 39884140, -1970853, 9648644, +-11135240, -1921998, 22451942, -29170882, -6785512, -9058623, 15607374, 8588861, 18762564, -7444789, +-37512780, 10387915, 998580, 62495532, 64986076, 7223598, 1047435, 14616847, 8016557, 15649787, +28223304, 9784472, 29265908, 43109660, -10568841, 5140539, -35616016, -5682242, 4959077, -5230734, +-10458245, -22354232, -18118320, 9567040, 10235981, -48275968, 34164856, 8645232, 48125644, -3468186, +-9470940, 15187541, -3330210, 50075024, 12829604, -3070902, 9625559, 9553618, -13725105, -31309774, +-24435680, -12530030, 37479496, 157840, 41154376, 4802847, 40153112, -11949673, -56337624, -21072184, +-16802986, 28792924, 2828773, -27157078, -40102648, -27389544, -6386617, 34124588, -30576946, -25407952, +-18129056, 30770756, -16260209, -8153459, -40629316, -38003480, 10615012, 7857106, 50629612, 15314780, +-7201050, 2029909, 1872606, 37700688, 15772194, -19594178, 37560564, -3022583, -70213592, -22457848, +46395848, 49450104, -33840048, -35830228, -34394636, 19529216, 32203664, 60875792, 20164872, 7573638, +-33266132, -3813394, -391916, 13596793, 32516660, 22164716, 3725884, -37108516, -70023000, -19044958, +-34354368, 54322748, 59558312, 100364792, -27739046, -96022584, -18643380, -32701344, 77300288, 25952340, +78459928, 20147692, -22746684, -72698224, -46891380, 3473555, 11974906, 83199960, 36372468, -1819456, +-64658048, -116964848, -27704686, 3842385, 57890252, 125777040, 30533460, 39127152, -76527192, -120902792, +9021579, 30238718, 101604968, 59762324, 45086420, -20090246, -74926776, -61756260, 3670050, 21627308, +2703145, 53289808, -36320928, -33377264, -5237713, -81202800, 16903918, -38385732, 51882132, 1436667, +5345087, -20291572, -54413476, 33552822, -54757612, 58003532, 5436892, 7632157, 9065602, -30555472, +30394946, 5959804, 20350628, -29154774, 8695698, 3036542, 37066104, -12995497, 7198365, 29218126, +-32580548, -14533096, 388695, -24596740, 42004244, -7135015, -20830592, 42887932, 43544524, -9420474, +-36477156, -5487895, -32409824, -2609193, 16159278, 56371, -39701604, 7432441, 17806398, -10160819, +20424180, -15784005, 6546067, 27344984, -11909407, 19076634, -44634912, -39741332, 41533944, 27369680, +65285112, 352724, -18934900, 60210608, -34333968, -25822954, 18367428, 22463752, 30871688, -26156350, +-15321759, 11956115, -7292318, 35620848, -26554172, -76734960, 20570746, 48212080, 1013075, -33564096, +8509404, 26615912, -5541582, -4725001, -966368, -21809844, -12732431, 80502720, 22468048, 21867290, +-68539088, -17929878, -53742924, -46308876, 41028748, 42242612, 85385024, 38483444, -11551315, -17563196, +-10140955, 25857314, 18496814, -624381, 41157596, 6810745, -17012366, -21016886, -16383153, 28369332, +-609349, 24524264, 11451993, 14071387, 3090766, -8359617, 2077154, -2088965, 2830920, -8831527, +-2951180, 6401649, 5833640, 53699440, 43546136, 34418796, -4904853, 7513509, -24652038, -6476811, +-16212965, -28562070, -29022168, 5065377, 12175695, 18074832, 23408646, 18112414, -16409459, -37976100, +49041012, -41194640, -19920596, -13675176, 13985487, -2069101, 21181704, 21924734, 18408766, -36599564, +-16896402, -1336272, -18828600, -56920664, 26350162, -18839338, -18276160, 11249593, 27908160, -91805, +-101211440, -55207508, -68036040, 49380848, 15797963, 146582400, 158503088, 151371824, 180178704, 170931648, +129291400, 75900664, 102373768, 41882372, 15068356, -82077360, -64566244, -178295904, -148969872, -139623488, +-75197896, -103356776, -71624488, -5462662, -17286170, -8757975, -4027606, 2536715, 8727910, 7075959, +29717416, 24642374, 30727270, 64755220, 73468640, 70672080, 58719184, 138063328, 46520400, 61188252, +105774304, 109945256, 51662552, 111295488, 139947744, 106662832, 100910792, 95799248, 24975234, 61392264, +122573000, 114757768, 85029080, 98944776, 95597920, 10949482, -8668318, -6726456, -31142808, -49916648, +14867029, -56121264, -85837608, -67704792, -75654776, -131582768, -39023536, -78740176, -79629768, -133531608, +-91513944, -115153440, -122459184, -70647384, -130706592, -165349264, -101339752, 6479495, -672162, 0, +0, 0, 0, }, }, }; const Word32 CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 591356864, -602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160, -380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720, -1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704, -913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064, -1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728, -769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560, -584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184, -154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632, -195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264, -337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488, -310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672, -224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400, -477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640, -1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208, -777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936, --465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200, --1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304, --1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216, --874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136, -1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032, --598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613, --4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421, -1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747, --257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, }, +602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160, +380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720, +1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704, +913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064, +1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728, +769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560, +584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184, +154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632, +195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264, +337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488, +310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672, +224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400, +477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640, +1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208, +777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936, +-465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200, +-1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304, +-1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216, +-874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136, +1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032, +-598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613, +-4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421, +1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747, +-257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, }, { 519927808, -530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472, -50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472, --270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136, -319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072, -128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536, --334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768, -10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944, -152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640, -60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040, --242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892, --15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304, -263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184, --53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704, --364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336, -470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952, --206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816, --76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520, -121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989, --22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952, --32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746, --42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011, -521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914, -1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910, --623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, }, +530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472, +50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472, +-270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136, +319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072, +128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536, +-334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768, +10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944, +152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640, +60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040, +-242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892, +-15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304, +263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184, +-53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704, +-364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336, +470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952, +-206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816, +-76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520, +121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989, +-22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952, +-32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746, +-42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011, +521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914, +1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910, +-623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, }, }, { { 519927808, -530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472, -50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472, --270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136, -319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072, -128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536, --334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768, -10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944, -152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640, -60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040, --242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892, --15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304, -263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184, --53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704, --364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336, -470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952, --206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816, --76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520, -121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989, --22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952, --32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746, --42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011, -521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914, -1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910, --623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, }, +530017216, 466860800, 320014240, 179574192, 91877944, 9543417, -86853904, -131920456, -83504904, 3501472, +50432044, 26572962, -75433584, -251784400, -442617312, -551045888, -545525824, -486239168, -427736864, -359921472, +-270188864, -194567920, -165222016, -158624960, -136778608, -99855840, -60807612, -3196530, 94492504, 214905136, +319855328, 399596768, 470877120, 531518304, 549032640, 501886240, 410894688, 317784096, 244543632, 185171072, +128257928, 71558984, 14892262, -46188616, -112785304, -177098144, -230683232, -272678880, -305296480, -326825536, +-334137728, -327876736, -310965280, -285371584, -253225360, -217572848, -179481312, -137296144, -90265720, -40242768, +10457708, 59538984, 102896680, 135867536, 157079840, 168768048, 173415744, 172320528, 167035568, 159876944, +152828352, 147094032, 143294608, 141170736, 139437184, 136325488, 129968392, 118732760, 102292696, 82190640, +60512332, 38238632, 15131170, -9887015, -38775500, -73349992, -113059648, -154378304, -192600832, -223349040, +-242643104, -247449168, -237033344, -213207552, -179452320, -140565152, -102270152, -69394320, -44122200, -26440892, +-15446850, -9341017, -5072357, 725313, 10765336, 27581744, 54035520, 92223152, 141980880, 200616304, +263345920, 323517888, 373243936, 404991264, 413136672, 394475552, 348091008, 275402432, 180246352, 68402184, +-53290880, -177418656, -295944192, -400517504, -483597216, -539454848, -564354944, -556716352, -517826496, -451912704, +-364800032, -262651744, -151906544, -39088496, 70405248, 172821424, 264930768, 343262912, 404896768, 447910336, +470505088, 470804128, 448127776, 403556736, 339092512, 257591200, 163818640, 64262912, -34533148, -126612952, +-206073600, -267704240, -308601984, -328299232, -327595936, -308422144, -274420480, -230245136, -180154544, -127826816, +-76795624, -29921964, 11274826, 46106472, 74042016, 95014880, 109733192, 119107496, 123791696, 124422520, +121678032, 115948544, 107431624, 96491808, 83497384, 68584720, 51995412, 34262564, 15771657, -3326989, +-22571126, -41188200, -58603220, -74133816, -86342264, -93631896, -95170032, -90304912, -77953120, -57965952, +-32314260, -3663607, 25825638, 52808232, 71989024, 79367240, 74249784, 56223268, 24601572, -14105746, +-42410656, -44609140, -24227910, -1767379, 6867116, 3891777, 264677, 423591, 1282585, 801011, +521839, 1245004, 1653562, 1271310, 1171989, 1639604, 1773285, 1404991, 1297080, 1534914, +1468879, 1077500, 922344, 980326, 776315, 379568, 200253, 144955, -121333, -471910, +-623844, -716723, -967441, -1210644, -1279900, -1345399, -1514513, -1603097, -1554778, }, { 591356864, -602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160, -380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720, -1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704, -913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064, -1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728, -769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560, -584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184, -154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632, -195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264, -337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488, -310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672, -224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400, -477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640, -1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208, -777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936, --465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200, --1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304, --1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216, --874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136, -1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032, --598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613, --4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421, -1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747, --257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, }, +602200576, 625467520, 657311488, 675305792, 655243456, 616993536, 612510656, 636582848, 605619904, 484448160, +380037504, 423112256, 590311552, 738261376, 797214656, 832138112, 910296320, 1007401216, 1071398400, 1095982720, +1089256320, 1031573312, 913199168, 777546368, 685862784, 657140736, 668234624, 696832704, 742273408, 813552704, +913253952, 1030070592, 1139625600, 1216546304, 1250709504, 1250671872, 1231760128, 1203536768, 1166884608, 1119160064, +1061989696, 1004802752, 959169792, 929753024, 912757312, 901457280, 889540864, 871032256, 842555008, 806505728, +769039680, 734854400, 705459136, 680934848, 661060416, 645468096, 633794368, 624781888, 615331904, 602178560, +584063488, 560285440, 528072672, 484184544, 428944832, 366892224, 304280192, 247500176, 202229616, 171427184, +154277904, 148099056, 150429088, 158711920, 169591616, 179823296, 187428608, 191850816, 193787856, 194745632, +195949296, 197934640, 201510736, 208074528, 218345392, 231886352, 248418768, 268307680, 291102144, 314787264, +337050240, 356353984, 371552800, 381496704, 385412640, 383181408, 375294784, 362846368, 347200320, 329467488, +310722080, 292437888, 275762656, 260609488, 246567088, 234356496, 225260832, 219650000, 217340384, 218822672, +224834560, 235197776, 249167152, 266420048, 286923136, 310524512, 337267680, 367393120, 400790784, 437318400, +477523040, 521913696, 569809536, 620230336, 673409024, 729850240, 788359488, 846688384, 903672960, 958912640, +1010481792, 1054694208, 1088314112, 1109581184, 1116685056, 1106621952, 1076729472, 1026966400, 959503744, 876062208, +777221056, 664998400, 544082688, 418661056, 289705760, 157642480, 25789132, -102029632, -225718256, -347099936, +-465098784, -576757184, -682193792, -784291648, -883714240, -978283520, -1067402432, -1153286272, -1237131520, -1317139200, +-1391275136, -1459658624, -1522985728, -1579894656, -1627292288, -1663214848, -1688108928, -1702371968, -1704015872, -1691106304, +-1665435264, -1630263808, -1585290624, -1528357120, -1461195136, -1387605632, -1306595072, -1214017024, -1110125568, -997769216, +-874274944, -733867072, -576635840, -405794400, -218905360, -12729746, 206384448, 427856064, 646835520, 856251136, +1036709568, 1168554240, 1244153216, 1253890432, 1176388864, 1002391680, 748564480, 427082432, 39296804, -354520032, +-598867136, -562934400, -304085824, -39659728, 67954432, 43758200, 3848828, -113817, 5425081, -234613, +-4213363, 795106, 3238405, -993211, -2480881, 1097364, 1996086, -1024350, -1545651, 974421, +1202591, -926639, -976568, 789200, 694174, -766652, -570694, 625992, 367220, -578747, +-257161, 485331, 141734, -388158, -8590, 346282, -38118, -208306, 187368, }, }, { { 557387968, -593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536, -304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216, -714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416, -934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016, -501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968, -381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784, -177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416, -132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008, -247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104, -350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416, -217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256, -583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608, -881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496, -166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592, --794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208, --1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192, --717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008, --128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977, -8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080, -183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353, --46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320, --333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844, -124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454, --42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, }, +593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536, +304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216, +714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416, +934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016, +501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968, +381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784, +177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416, +132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008, +247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104, +350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416, +217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256, +583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608, +881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496, +166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592, +-794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208, +-1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192, +-717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008, +-128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977, +8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080, +183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353, +-46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320, +-333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844, +124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454, +-42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, }, { 557387968, -593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536, -304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216, -714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416, -934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016, -501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968, -381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784, -177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416, -132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008, -247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104, -350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416, -217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256, -583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608, -881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496, -166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592, --794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208, --1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192, --717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008, --128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977, -8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080, -183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353, --46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320, --333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844, -124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454, --42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, }, +593159680, 624878528, 592054784, 496021472, 439830944, 497395872, 568646144, 487803584, 279752160, 172007536, +304443936, 546257024, 676547008, 654668992, 619560320, 679938944, 802748160, 890860480, 891186368, 816945216, +714719040, 629804352, 583309184, 570548288, 582207488, 619833600, 686186496, 771129152, 854134784, 913836416, +934031360, 911524672, 860876800, 801601408, 739015168, 666780224, 587767872, 520823296, 484344000, 481374016, +501688672, 530134784, 551650944, 556632576, 545941888, 527557280, 506844256, 482542784, 451983552, 416671968, +381627168, 351128064, 326048672, 304637728, 285190112, 267333792, 250556048, 233008960, 213521616, 193968784, +177589376, 165159216, 154646736, 144559472, 135879344, 130301256, 127932040, 127418256, 127691528, 129051416, +132694088, 139440944, 148960208, 160134096, 171935600, 183858960, 195841920, 208121232, 220983584, 234291008, +247348784, 259533600, 271027456, 282685088, 295102368, 307943776, 320258528, 331289632, 340634944, 347539104, +350454848, 347743104, 338704352, 323762688, 304125568, 281853472, 259888464, 241151136, 227387920, 219248416, +217304400, 222436352, 235214416, 255448544, 282617984, 316601888, 357794400, 406395712, 461548992, 521332256, +583583488, 646257280, 706787840, 761959424, 809219648, 847609088, 876638784, 894981504, 901453504, 896620608, +881838912, 856941568, 820498176, 772231872, 713310848, 644071168, 563615168, 472553792, 374247872, 272054496, +166945920, 59370944, -48115980, -152288272, -252473216, -350090848, -445352128, -536800032, -624242368, -709630592, +-794075584, -876057344, -953815040, -1027575744, -1097648640, -1161764480, -1216457088, -1260221824, -1293141120, -1313950208, +-1319934720, -1309968256, -1285501440, -1247996672, -1197440640, -1134339456, -1061370688, -981684032, -896877248, -808056192, +-717803392, -629496704, -545263808, -466033472, -393168832, -328561248, -273071872, -226043056, -186550832, -154243008, +-128655744, -108451680, -91867200, -77659448, -65245384, -54001160, -42885784, -31039728, -18444738, -5459977, +8137890, 22981834, 39114804, 56093884, 74043624, 93453120, 113812872, 133719512, 152372016, 169460080, +183575488, 192614256, 195772128, 193043216, 183014992, 163948560, 136519296, 101771936, 57531624, 3827353, +-46607912, -71913856, -62028992, -31731756, -6418829, 2238215, 1021129, -205085, 335007, 281320, +-333397, -169114, 317828, 137439, -227633, -49392, 216359, 30065, -185220, -26844, +124017, -28454, -144418, -12348, 70867, -41876, -94489, 8053, 47782, -28454, +-42413, 27380, 38655, -5369, 1074, 35970, 30065, 16106, 27917, }, }, { { 528323936, -521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640, -740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632, -363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432, -243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688, -401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696, -540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216, -369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784, -173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104, -430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544, -1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376, -678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172, --90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192, --117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082, -6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632, -11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976, --439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952, --646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568, --595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272, --453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808, -346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752, --234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987, --2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453, -777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728, --205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, }, +521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640, +740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632, +363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432, +243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688, +401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696, +540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216, +369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784, +173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104, +430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544, +1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376, +678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172, +-90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192, +-117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082, +6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632, +11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976, +-439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952, +-646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568, +-595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272, +-453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808, +346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752, +-234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987, +-2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453, +777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728, +-205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, }, { 474580480, -398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152, --186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896, -342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528, --156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680, -119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221, --9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132, --37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824, -74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596, --73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044, -80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291, --24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696, --41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792, -80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336, --83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812, -68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758, --21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651, --3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734, -26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272, --69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056, -50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800, -54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176, --869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209, -667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662, -127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, }, +398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152, +-186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896, +342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528, +-156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680, +119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221, +-9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132, +-37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824, +74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596, +-73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044, +80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291, +-24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696, +-41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792, +80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336, +-83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812, +68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758, +-21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651, +-3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734, +26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272, +-69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056, +50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800, +54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176, +-869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209, +667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662, +127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, }, }, { { 474580480, -398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152, --186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896, -342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528, --156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680, -119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221, --9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132, --37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824, -74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596, --73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044, -80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291, --24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696, --41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792, -80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336, --83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812, -68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758, --21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651, --3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734, -26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272, --69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056, -50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800, -54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176, --869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209, -667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662, -127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, }, +398759264, 259799344, 101417064, -25479356, -112331112, -185142624, -246895664, -268402704, -242585120, -205237152, +-186441312, -177279600, -161690480, -147096192, -139762528, -115844928, -44347148, 72617696, 199460960, 297104896, +342636384, 332363904, 279873504, 206060176, 123929672, 37595996, -44044888, -104937328, -137535584, -150566528, +-156369024, -158901984, -157653760, -153791504, -146374096, -128723928, -94373320, -44081932, 14919106, 72908680, +119517128, 146036944, 149292528, 132541080, 102513888, 67012764, 34136400, 10182831, -3135863, -8441221, +-9655086, -9846213, -10952703, -13720273, -17641578, -21669720, -25094420, -27732066, -29929480, -32669132, +-37112276, -43723840, -51956756, -60378112, -66410396, -66276716, -56291988, -34812320, -3122441, 34979824, +74029664, 108025408, 131982200, 143158784, 141070880, 126644088, 101371432, 66827008, 24585466, -23269596, +-73314016, -120408872, -158241088, -180575456, -182854480, -163737568, -125828584, -75043280, -18950470, 34983044, +80619224, 113781736, 132411696, 136386144, 127179888, 107473504, 80718544, 50710140, 21187074, -4627291, +-24551644, -37795712, -44883480, -47211892, -46525772, -44491568, -42404748, -41034116, -40599252, -40838696, +-41083508, -40307196, -37228776, -30582852, -19549618, -4136054, 14667850, 34984120, 54367308, 70325792, +80868328, 84793928, 81678464, 71765680, 55852292, 35109212, 10918881, -15112379, -41051296, -64691336, +-83730928, -95960840, -99542312, -93476744, -78015400, -54739360, -26379152, 3516505, 31205622, 53573812, +68691560, 75903880, 75692360, 69438880, 58948964, 45899240, 31609348, 17107392, 3111167, -9999758, +-21968220, -32387812, -40741524, -46544560, -49306760, -48571248, -44215616, -36639828, -26604102, -15072651, +-3232500, 7695508, 16845398, 23805930, 28441810, 30910342, 31720480, 31430034, 30328374, 28571734, +26295938, 23301808, 18974628, 12774306, 4409858, -6484864, -20079508, -35452272, -50543176, -62921272, +-69786240, -67693520, -53924924, -28570122, 5386963, 43156368, 77880104, 100739528, 104390256, 86776056, +50828252, 2720325, -47143708, -84642528, -98577016, -86414208, -51794084, -1819456, 47561396, 71257800, +54431732, 12842489, -18505404, -20906828, -7013145, 1737851, 650688, -1589675, -652835, 148176, +-869731, -1324461, -414464, -31139, -600222, -618475, 101469, 339839, 38118, 163209, +667331, 766115, 553514, 638340, 883690, 816581, 587337, 552440, 564788, 373662, +127775, 8590, -99858, -300111, -486942, -588947, -670552, -758062, -811749, }, { 528323936, -521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640, -740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632, -363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432, -243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688, -401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696, -540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216, -369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784, -173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104, -430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544, -1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376, -678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172, --90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192, --117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082, -6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632, -11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976, --439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952, --646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568, --595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272, --453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808, -346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752, --234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987, --2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453, -777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728, --205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, }, +521020320, 540578560, 592845056, 653261312, 717063552, 786136832, 823052096, 793232128, 737496320, 723856640, +740865728, 720060928, 652342720, 596755648, 578083264, 559248768, 518883584, 479682880, 451339872, 413041632, +363545888, 331671328, 327888544, 332871232, 337333184, 348948384, 358744672, 343110976, 302795200, 264860432, +243976688, 231275392, 220823056, 219565712, 230320848, 247392800, 269858176, 301967872, 340665536, 375766688, +401169824, 416797056, 423082208, 421671840, 418448992, 419976928, 429309888, 447531296, 474900992, 508197696, +540729920, 566361216, 581071488, 581869824, 568189248, 543684352, 513382816, 479775232, 443569728, 406177216, +369065472, 332418112, 296441856, 262662480, 232833936, 207938160, 188815360, 176282640, 170244448, 169768784, +173987520, 182115200, 193182800, 206733424, 223349040, 243906368, 268926688, 299044608, 335399904, 379107104, +430591936, 489461440, 554827072, 625948544, 702407552, 783147008, 865627008, 946551744, 1022604352, 1089404544, +1141034880, 1172661888, 1183078784, 1173171968, 1143169408, 1093627008, 1027916160, 950953024, 865882560, 774277376, +678871104, 583300608, 489188736, 395959488, 303981664, 215988000, 134995120, 62572304, -201863, -51686172, +-90861104, -118878256, -138328544, -151115744, -157800864, -158872992, -155626528, -149380032, -140627968, -129674192, +-117633248, -106007848, -95420752, -85375896, -75175888, -64502356, -53092776, -40415104, -25994216, -9968082, +6793028, 23126252, 38115152, 51076288, 61049204, 66719632, 67147520, 62217968, 51898776, 35355632, +11499775, -19732690, -57364120, -100552160, -148785728, -200636176, -253343472, -304400960, -352847136, -398310976, +-439680640, -475895808, -507457888, -535759584, -561140160, -582897920, -601041472, -616570496, -629873600, -640165952, +-646885952, -650597376, -652060864, -651216384, -647618816, -641518336, -633958656, -625735936, -616669248, -606437568, +-595811840, -585957568, -576570368, -566297344, -555121280, -544144960, -532675264, -518246848, -500029760, -478902272, +-453556608, -420442944, -378153632, -327303904, -265747888, -189495568, -98843304, 2273648, 112312320, 229941808, +346832576, 451240000, 536794688, 597777856, 620114368, 590760960, 510590016, 381782336, 195273904, -35808752, +-234559968, -300432960, -214249072, -71331888, 15775415, 23496156, 4268124, -942745, 2696703, 938987, +-2272575, -402116, 1856500, 120259, -1471026, 93952, 1229971, -158914, -984084, 210453, +777389, -264677, -656593, 226560, 473520, -271120, -405338, 216359, 273267, -221728, +-205085, 190589, 136365, -145492, -48855, 142808, 31675, -60130, 65498, }, }, { { 570948288, -560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152, -679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464, -508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760, -487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856, -643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352, -800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656, -658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488, -324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416, -506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456, -1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008, -945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301, --58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496, --237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624, --127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138, --21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368, --567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808, --899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944, --684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592, --499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000, -407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660, --315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470, --3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007, -1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736, --287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, }, +560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152, +679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464, +508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760, +487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856, +643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352, +800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656, +658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488, +324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416, +506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456, +1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008, +945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301, +-58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496, +-237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624, +-127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138, +-21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368, +-567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808, +-899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944, +-684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592, +-499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000, +407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660, +-315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470, +-3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007, +1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736, +-287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, }, { 486143040, -364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024, -162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424, --150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704, -135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648, --72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672, -33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862, -11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926, --73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896, -117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416, --13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736, --17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864, -8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114, --27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624, -20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596, --14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043, -4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197, --1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409, --7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841, -19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124, --6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952, -5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087, -223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377, -103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822, --225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, }, +364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024, +162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424, +-150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704, +135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648, +-72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672, +33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862, +11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926, +-73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896, +117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416, +-13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736, +-17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864, +8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114, +-27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624, +20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596, +-14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043, +4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197, +-1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409, +-7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841, +19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124, +-6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952, +5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087, +223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377, +103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822, +-225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, }, }, { { 486143040, -364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024, -162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424, --150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704, -135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648, --72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672, -33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862, -11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926, --73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896, -117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416, --13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736, --17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864, -8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114, --27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624, -20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596, --14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043, -4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197, --1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409, --7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841, -19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124, --6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952, -5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087, -223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377, -103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822, --225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, }, +364342624, 167167104, -39809516, -210170464, -331450144, -400646368, -397819200, -302972896, -136612176, 38106024, +162898976, 224026560, 241295024, 232041520, 197469712, 137426608, 64054068, -4851703, -61337500, -109474424, +-150905280, -174555520, -167025904, -129885720, -78476568, -24754580, 29452202, 81586128, 121351616, 139262704, +135213088, 114415248, 80613848, 37157372, -10004053, -54111756, -89473832, -110401064, -112610824, -97661648, +-72609104, -43728672, -13062606, 18713172, 49372260, 75726712, 94291712, 100883952, 92121144, 68263672, +33529736, -5985574, -43577812, -72516768, -87965760, -88946088, -77864536, -58571544, -35153772, -11158862, +11494943, 32676648, 52577380, 70250632, 83405584, 88749056, 82459080, 61465276, 25380036, -22145926, +-73177112, -116362472, -139532752, -134017472, -98660232, -41028212, 24821152, 82922936, 120561880, 131824896, +117951616, 85022632, 41123240, -5562520, -47731044, -79383344, -96038152, -95309080, -77927888, -48202416, +-13012140, 20197620, 45314052, 58828168, 60328184, 52038896, 37601900, 20818780, 4846334, -8215736, +-17446694, -22883586, -25109990, -24932286, -23152558, -20329690, -16650514, -12021077, -6245420, 798864, +8900783, 17241072, 24407762, 28773060, 28998008, 24451786, 15506443, 3594351, -9093520, -20161114, +-27564026, -30052960, -27466316, -20724828, -11460583, -1493038, 7592429, 14678588, 19193672, 21027624, +20345796, 17446158, 12731357, 6713571, 0, -6703370, -12594455, -16858284, -18838800, -18180596, +-14910516, -9489730, -2803540, 4010963, 9847823, 13867913, 15613280, 15064061, 12602508, 8839043, +4398047, -165893, -4359392, -7796440, -10248329, -11593190, -11739756, -10663330, -8444443, -5230197, +-1233729, 3169686, 7443715, 11014444, 13337484, 13909788, 12430172, 8997956, 4060355, -1731409, +-7519414, -12302934, -15287936, -16097001, -14592688, -10806138, -5191542, 1425929, 8293582, 14696841, +19480362, 21246130, 19167366, 13080323, 3120831, -9589051, -21958020, -29879550, -30411590, -22520124, +-6946573, 12622372, 29110214, 35555348, 29511258, 13119514, -8797704, -27741730, -32343788, -17748952, +5345624, 18192944, 13360033, 1357210, -4248260, -2078227, 543313, 91268, -795643, -256087, +223875, -275952, -562641, -71941, 215285, -70867, -133681, 248034, 392990, 158377, +103616, 299574, 277025, 19327, -73014, -4295, -89121, -279710, -303869, -215822, +-225486, -260919, -163209, -23085, 32212, 82141, 196495, 271657, 263604, }, { 570948288, -560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152, -679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464, -508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760, -487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856, -643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352, -800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656, -658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488, -324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416, -506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456, -1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008, -945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301, --58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496, --237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624, --127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138, --21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368, --567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808, --899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944, --684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592, --499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000, -407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660, --315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470, --3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007, -1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736, --287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, }, +560026688, 580181376, 651761280, 741916928, 808227456, 843835456, 857312512, 837136384, 774951680, 706217152, +679031104, 684954432, 669311040, 616302016, 573348608, 574092160, 586936832, 569456832, 532186720, 511266464, +508753920, 500068416, 481083584, 469860832, 471176704, 471000064, 463027008, 456938336, 460991712, 472953760, +487162560, 498884064, 503802880, 502036032, 500722304, 507399392, 523648864, 547635712, 577758464, 611217856, +643876800, 673844416, 701608704, 726164096, 744914304, 757558144, 766675264, 774677376, 782670272, 791276352, +800164224, 807529536, 811386944, 810441536, 803607680, 790492480, 772253888, 750109056, 723654208, 692558656, +658613376, 623875136, 588272000, 551226816, 513920224, 477741024, 442319360, 407270816, 374342368, 346103488, +324013952, 308986912, 302183712, 304083136, 314027616, 331233792, 355143872, 384909600, 419871168, 460244416, +506109280, 556402816, 610180096, 667974272, 730482688, 796728256, 864836224, 933754880, 1002700352, 1069331456, +1129822848, 1180747776, 1219959168, 1245454080, 1254418176, 1244496256, 1215806464, 1170467200, 1109940864, 1034459008, +945641216, 847554880, 743703680, 634964736, 522334048, 409629280, 301142176, 198468288, 102261024, 15424301, +-58399208, -118443920, -166344624, -202983920, -228296832, -243548272, -251478384, -254185296, -252344368, -246456496, +-237761344, -227809360, -217644784, -207521552, -197397776, -187577872, -178339920, -168868448, -157501280, -143418624, +-127228208, -109625816, -90643672, -70704288, -51351164, -34363496, -20870320, -11671574, -7842611, -10806138, +-21989696, -42191076, -71323840, -109272560, -156607936, -213349280, -277530592, -346465888, -418796896, -493406368, +-567116608, -635954752, -698211328, -753866624, -801667456, -839523328, -867368640, -886954240, -899010176, -902935808, +-899064448, -889133376, -874578816, -855873728, -833484544, -808545280, -782657920, -757145856, -732274752, -707778944, +-684467456, -663835520, -645579200, -627796992, -610332544, -594772992, -580344064, -563827712, -544390336, -523586592, +-499708160, -467863136, -426242208, -375602400, -312369216, -230306880, -129177048, -13320841, 116749560, 260566000, +407468928, 542101120, 656437952, 742504256, 780045504, 750219648, 653257024, 490681760, 248766112, -54896660, +-315592576, -397934080, -278208128, -86560232, 26632556, 32959042, 5339181, -1480690, 3817152, 1295470, +-3219078, -542240, 2632278, 140123, -2107218, 150324, 1763084, -252329, -1420024, 335007, +1135482, -409633, -951335, 375810, 700080, -432181, -585189, 369904, 397821, -374736, +-287226, 331786, 177167, -271657, -49392, 255014, 3758, -143345, 130460, }, }, { { 585517888, -603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544, -665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728, -678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952, -598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832, -860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000, -1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800, -779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808, -220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040, -337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864, -833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808, -879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480, --114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744, --535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360, --393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392, --245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864, --721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784, --804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136, --311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128, --199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168, -176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752, --135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181, --1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496, -667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766, --188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, }, +603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544, +665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728, +678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952, +598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832, +860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000, +1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800, +779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808, +220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040, +337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864, +833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808, +879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480, +-114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744, +-535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360, +-393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392, +-245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864, +-721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784, +-804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136, +-311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128, +-199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168, +176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752, +-135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181, +-1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496, +667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766, +-188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, }, { 492458816, -349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496, -323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016, --183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064, --244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384, -72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360, -95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344, --63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980, -12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056, -80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640, --28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300, --54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440, -39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768, -41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070, --26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373, --7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054, -29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345, --1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774, --23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676, -4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160, -29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616, -2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224, -1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183, -355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233, --778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, }, +349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496, +323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016, +-183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064, +-244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384, +72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360, +95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344, +-63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980, +12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056, +80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640, +-28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300, +-54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440, +39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768, +41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070, +-26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373, +-7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054, +29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345, +-1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774, +-23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676, +4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160, +29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616, +2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224, +1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183, +355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233, +-778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, }, }, { { 492458816, -349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496, -323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016, --183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064, --244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384, -72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360, -95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344, --63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980, -12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056, -80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640, --28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300, --54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440, -39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768, -41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070, --26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373, --7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054, -29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345, --1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774, --23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676, -4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160, -29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616, -2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224, -1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183, -355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233, --778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, }, +349794496, 129527088, -96207264, -288197664, -422264544, -462296864, -379511904, -194033200, 25005300, 207826496, +323443264, 371411584, 352320992, 261544720, 108599856, -70567920, -227162960, -323923200, -346284416, -296182016, +-183876672, -29744260, 131055560, 255829184, 313094528, 295361152, 215104848, 93717264, -42967388, -164946064, +-244086752, -264142640, -224621424, -137462576, -23976654, 87305408, 168234944, 202542608, 190500048, 142876384, +72989744, -5356361, -77092512, -128115656, -149521776, -139468320, -102299144, -47389596, 12211129, 62995360, +95328408, 105811888, 96282432, 71339944, 36839544, -556198, -34204044, -58991912, -72233296, -73333344, +-63195076, -44117904, -19546396, 6851547, 31963146, 53144316, 67774584, 73123432, 66496832, 45960980, +12265353, -28991566, -67493800, -91713656, -93705984, -72288056, -33486250, 11548093, 50563040, 74676056, +80886048, 71364640, 50734300, 23636816, -6165426, -35329328, -59969016, -75204880, -76068704, -59759640, +-28084254, 11696807, 48752172, 72719704, 77735152, 64218888, 37776384, 6369974, -22525492, -43672300, +-54536956, -54899344, -46179488, -30768072, -11426224, 9098351, 28132572, 42993160, 51108500, 50401440, +39848168, 20178830, -5488432, -31690416, -51811800, -60119880, -53805740, -34228740, -6758668, 20978768, +41781980, 51145544, 48185776, 35227320, 16558710, -3080565, -19743964, -30885646, -35407712, -33469070, +-26164940, -15119359, -2183454, 10665478, 21432960, 28376848, 30299920, 26755498, 18218714, 6157373, +-7192997, -19282256, -27701466, -30641370, -27364848, -18465676, -5731634, 8220568, 20392504, 28074054, +29621852, 24886114, 15098421, 2502892, -10116795, -20106890, -25608742, -25818660, -20939576, -12112345, +-1234266, 9513889, 18153754, 23138600, 23540178, 19303194, 11266236, 916439, -9779104, -18561774, +-23449448, -23363012, -18262738, -9059160, 2299418, 13110388, 20908974, 24199994, 22317724, 15349676, +4602595, -7508140, -18427020, -25810606, -27186070, -20816096, -7585449, 8796093, 23526758, 31803160, +29438780, 15509664, -4955856, -23095650, -31586264, -27039504, -9897752, 13072270, 27832998, 22847616, +2806761, -13591961, -13608604, -3265249, 3494493, 2470143, -91268, 244276, 1340567, 833224, +1611, 189515, 360240, -318364, -882079, -673773, -454193, -654446, -615254, -68183, +355945, 403727, 528818, 820339, 833224, 507880, 234076, 67646, -243203, -622233, +-778463, -736050, -680752, -548145, -228170, 137976, 404264, 624381, 802085, }, { 585517888, -603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544, -665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728, -678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952, -598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832, -860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000, -1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800, -779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808, -220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040, -337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864, -833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808, -879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480, --114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744, --535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360, --393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392, --245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864, --721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784, --804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136, --311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128, --199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168, -176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752, --135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181, --1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496, -667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766, --188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, }, +603768768, 627174208, 672103296, 761459584, 857675968, 888617472, 849407616, 807566592, 792039744, 753588544, +665247488, 586939520, 580662912, 620325888, 642416512, 641460352, 654848832, 684151232, 694853760, 681777728, +678236032, 698247872, 713505216, 696568512, 655880192, 618497280, 599802944, 597858880, 602115776, 602125952, +598339392, 606265216, 640826304, 696614144, 752099776, 792209408, 818164416, 836594112, 849271232, 855984832, +860132160, 867262912, 880720640, 900384576, 923915648, 948425984, 971895296, 993049024, 1009658240, 1018224000, +1016310592, 1004292736, 984205184, 958115904, 928455424, 898594112, 871473024, 847765312, 826018304, 804140800, +779889280, 750238976, 711679296, 662058496, 601978304, 534215008, 462380064, 390642304, 323834624, 266263808, +220085392, 185562992, 162854416, 152585152, 154569968, 167094624, 188017024, 216053504, 250726768, 291603040, +337903328, 388500736, 441990784, 496750016, 550902592, 602529152, 650644608, 696202944, 741374720, 787388864, +833677824, 879251776, 923515136, 964723712, 998794112, 1021126336, 1029023680, 1021009280, 994659136, 947367808, +879430016, 794493248, 696595904, 588685376, 474664768, 360498080, 251361344, 148936048, 53078280, -35200480, +-114485040, -185632784, -251139088, -311828032, -366206080, -413158144, -453193152, -486505984, -511755552, -527891744, +-535970048, -538049344, -535165280, -527439712, -515578624, -500989696, -484397152, -465294208, -443159552, -418643360, +-393136064, -367567072, -342242336, -317726112, -295226912, -275897952, -260195024, -248294736, -240972368, -239713392, +-245919088, -260263200, -283061440, -314996128, -356768960, -407775456, -465772032, -528284736, -593519936, -659180864, +-721473408, -776672896, -823061248, -860024256, -886102208, -899678592, -901019200, -891726464, -872470016, -843046784, +-804458624, -759121536, -709012672, -655144640, -598906368, -542581056, -488293760, -437264704, -390185440, -347831136, +-311187008, -280902688, -256568992, -237137488, -222288720, -212319568, -206354384, -202389600, -199712752, -198990128, +-199218832, -197380592, -191855648, -182596240, -167102688, -140601120, -101198016, -50129248, 13270375, 90374168, +176566640, 262803680, 343406784, 413509248, 460463456, 469743264, 437460672, 362457664, 232589120, 48323752, +-135371456, -227771248, -189644816, -81659680, -712965, 16642998, 4131222, -1096290, 1920924, 1211181, +-1720134, -702764, 1472100, 416075, -1187022, -164819, 1025960, 63888, -841277, 14496, +667867, -108448, -586263, 91268, 417686, -167504, -371515, 130997, 248571, -156766, +-188979, 143345, 129386, -107911, -42950, 121870, 37581, -40802, 61203, }, }, { { 597213568, -596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440, -746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576, -687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472, -828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712, -926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856, -778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200, -654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216, -364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840, --64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864, --106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160, --136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384, --116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396, -35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168, -230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504, -249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356, --20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016, --422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152, --956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464, --825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400, -678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016, --426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911, --3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593, -932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293, --213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, }, +596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440, +746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576, +687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472, +828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712, +926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856, +778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200, +654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216, +364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840, +-64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864, +-106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160, +-136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384, +-116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396, +35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168, +230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504, +249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356, +-20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016, +-422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152, +-956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464, +-825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400, +678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016, +-426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911, +-3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593, +932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293, +-213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, }, { 579569344, -535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736, -80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840, --441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168, --171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024, -307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032, -281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376, --230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248, --303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120, -140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552, -189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628, -6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684, --62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648, --174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492, --4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496, -320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722, --69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720, --322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864, -220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592, -94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776, --187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648, --16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769, --3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880, --477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090, -2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, }, +535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736, +80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840, +-441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168, +-171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024, +307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032, +281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376, +-230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248, +-303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120, +140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552, +189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628, +6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684, +-62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648, +-174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492, +-4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496, +320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722, +-69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720, +-322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864, +220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592, +94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776, +-187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648, +-16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769, +-3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880, +-477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090, +2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, }, }, { { 579569344, -535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736, -80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840, --441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168, --171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024, -307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032, -281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376, --230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248, --303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120, -140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552, -189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628, -6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684, --62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648, --174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492, --4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496, -320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722, --69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720, --322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864, -220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592, -94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776, --187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648, --16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769, --3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880, --477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090, -2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, }, +535923328, 456493280, 339312096, 191848672, 66356708, 32766306, 103828152, 212905280, 270114240, 223526736, +80593984, -96322696, -222835248, -256390224, -230623632, -209125712, -218933808, -251325920, -302965920, -374807840, +-441093664, -461958080, -430899584, -381811328, -347154688, -331162368, -322570848, -310652288, -285347968, -238625168, +-171585552, -93660352, -15587510, 52657908, 103282688, 137355200, 165996720, 199463648, 238056608, 275797024, +307733856, 331415232, 346436352, 355098784, 360181312, 361320576, 356328192, 345073792, 328951552, 307940032, +281095424, 248241056, 208854064, 161546064, 106783088, 47956532, -11725798, -71075264, -128828080, -182525376, +-230390640, -271964320, -306472224, -332878752, -351642944, -364130016, -370140288, -367786112, -355681824, -333905248, +-303412064, -265913232, -223840816, -179236496, -132854072, -84868552, -35997732, 12401718, 58838368, 102022120, +140978000, 174821808, 202405168, 222608160, 235105968, 240408640, 239242032, 232475840, 221377648, 207077552, +189982512, 170418400, 149442320, 128243432, 107248552, 86594056, 66920960, 48932024, 32751810, 18377628, +6179921, -3654480, -11619497, -18376554, -24261196, -29586420, -34911104, -40721120, -47217260, -54525684, +-62832688, -72317584, -83130704, -95292440, -108497856, -122208464, -135885248, -148858192, -160160400, -168929648, +-174782080, -177386976, -176042656, -170148880, -159679904, -144694224, -124912680, -100323992, -71671192, -39765492, +-4875325, 32683090, 71931576, 111755584, 151444848, 190155376, 226390416, 258580656, 285708736, 306818496, +320383616, 324775776, 319060768, 302832224, 275651008, 237360288, 188829840, 131817912, 68225552, 119722, +-69640744, -137617728, -200805296, -256893264, -303624128, -338806336, -361185824, -370585888, -367052736, -350678720, +-322384544, -283973568, -237179904, -183409056, -124464928, -62643172, 13422, 61794916, 120655832, 174232864, +220522416, 257989024, 285203008, 300952640, 304579744, 295920576, 275240288, 243384528, 201620800, 151448592, +94955288, 34892316, -26127896, -85768888, -140812112, -187124752, -221358864, -241145776, -243458608, -225485776, +-187893008, -134548448, -69194072, 3423626, 73443944, 128780840, 162185488, 168736912, 138974400, 69362648, +-16011101, -71099424, -69478072, -32066226, -1396938, 4179540, -1872069, -3814468, -2048163, -2362769, +-3785477, -3195456, -1980517, -2334315, -2949032, -2248952, -1418950, -1617055, -1794223, -1104880, +-477278, -527207, -454193, 172872, 659278, 707059, 900869, 1422171, 1777043, 1865090, +2081449, 2456185, 2674691, 2752000, 2915746, 3112778, 3192235, 3227131, 3289408, }, { 597213568, -596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440, -746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576, -687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472, -828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712, -926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856, -778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200, -654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216, -364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840, --64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864, --106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160, --136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384, --116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396, -35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168, -230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504, -249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356, --20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016, --422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152, --956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464, --825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400, -678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016, --426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911, --3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593, -932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293, --213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, }, +596643456, 589774720, 572423040, 546464256, 513296896, 469925248, 426302880, 420621728, 490009600, 619773440, +746362240, 818147776, 830061504, 797643584, 733486464, 660355520, 611384320, 598772160, 608339712, 634336576, +687962496, 761336640, 817412288, 830826496, 811578624, 779512960, 745057664, 723017984, 733358144, 775793472, +828397184, 878846976, 933033856, 988564032, 1026026368, 1033997248, 1021642816, 1001205760, 976111296, 949339712, +926577472, 907651712, 887279552, 865113280, 845489024, 829484352, 815743680, 805347200, 798338304, 790169856, +778097728, 766046080, 758030080, 752204480, 745350784, 737406720, 728103232, 714701376, 696160000, 675283200, +654903040, 635414656, 616550080, 598197696, 579157568, 557310144, 530734464, 497799584, 457844064, 412453216, +364070944, 313385504, 260460240, 207604768, 157896416, 111621368, 67432600, 26114474, -9955734, -40010840, +-64545844, -82950848, -94379760, -100110320, -102734008, -103747080, -103519448, -102710384, -102403832, -103430864, +-106081400, -109889960, -113784424, -117140400, -120256936, -123273080, -125650880, -127430072, -129705328, -133059160, +-136775920, -140245184, -143737520, -147170272, -149432112, -149540560, -147397904, -143076640, -136364672, -127245384, +-116070952, -103235448, -89156008, -74332464, -59030032, -43270720, -27318676, -11630235, 3788161, 19364396, +35270808, 51383380, 67845448, 85084376, 103357848, 122716344, 143190448, 164647568, 186708128, 208921168, +230610208, 250557120, 267457280, 280695968, 290074560, 294978368, 294679840, 289356768, 279864896, 266521504, +249057632, 227865200, 204276704, 179287504, 152854672, 124924496, 96344168, 68000072, 39594228, 10161356, +-20476794, -51754892, -83805552, -117771224, -154393344, -193238096, -233857216, -276860032, -323067456, -372146016, +-422997376, -475317600, -529790656, -586465408, -643890240, -700616000, -756673408, -812224512, -865455744, -913745152, +-956444672, -993991808, -1024540800, -1044644480, -1053249984, -1051286144, -1037245888, -1007591808, -961676992, -901270464, +-825239296, -730415040, -617438080, -489367488, -345486080, -184001760, -9601399, 169511088, 349013344, 523518400, +678688576, 799189824, 878520512, 909441600, 875318080, 766932416, 594697792, 366670496, 80809272, -222708016, +-426628768, -421689024, -237979312, -36925980, 50219440, 34310348, 3150359, -520765, 4166655, 107911, +-3273302, 406948, 2525441, -611496, -1940788, 715649, 1552094, -683974, -1200443, 656593, +932545, -623307, -751082, 527744, 540629, -506269, -441845, 405874, 294742, -368293, +-213675, 300648, 132070, -231928, -41339, 200790, 8590, -107374, 91805, }, }, { { 577258624, -576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584, -585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848, -633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288, -367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384, -385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016, -530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192, -629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488, -462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040, -192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568, -110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344, -432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968, -488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960, -85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256, --282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816, --410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016, --437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088, --579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040, --611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680, --208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832, -454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296, --208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967, --1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332, -326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094, --68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, }, +576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584, +585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848, +633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288, +367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384, +385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016, +530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192, +629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488, +462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040, +192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568, +110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344, +432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968, +488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960, +85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256, +-282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816, +-410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016, +-437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088, +-579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040, +-611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680, +-208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832, +454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296, +-208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967, +-1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332, +326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094, +-68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, }, { 515484128, -438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112, --277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264, -219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984, --218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440, -148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008, --144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552, -158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920, --167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360, -109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028, --64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153, -27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320, --5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042, --4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636, -7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528, --6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860, -18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532, --25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198, -29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084, --38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060, -19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508, -24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732, -409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926, -95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475, --636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, }, +438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112, +-277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264, +219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984, +-218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440, +148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008, +-144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552, +158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920, +-167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360, +109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028, +-64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153, +27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320, +-5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042, +-4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636, +7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528, +-6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860, +18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532, +-25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198, +29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084, +-38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060, +19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508, +24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732, +409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926, +95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475, +-636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, }, }, { { 515484128, -438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112, --277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264, -219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984, --218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440, -148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008, --144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552, -158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920, --167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360, -109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028, --64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153, -27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320, --5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042, --4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636, -7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528, --6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860, -18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532, --25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198, -29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084, --38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060, -19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508, -24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732, -409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926, -95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475, --636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, }, +438002368, 285437632, 87102472, -95549600, -207499536, -246394224, -259768752, -290284480, -329814304, -334158112, +-277309920, -179602640, -81671488, -2548526, 68614248, 145949968, 223177232, 277775392, 292139904, 267355264, +219215136, 163913664, 107111112, 45060648, -25191594, -98342936, -163622144, -212229360, -239572208, -242371984, +-218386208, -170373840, -107468136, -40647032, 22208202, 76519136, 118805240, 146478256, 159197264, 158901440, +148381456, 130218040, 106511432, 78693464, 47551192, 13783624, -21502216, -56903484, -90858960, -121219008, +-144781200, -157715488, -156839328, -140899088, -111030272, -70184600, -22074522, 29413546, 80016312, 124801552, +158639984, 177334368, 178578304, 162241312, 130077920, 85197120, 31552440, -26269630, -82910584, -132101920, +-167161744, -182411552, -175011872, -146204976, -101226472, -47990352, 4851703, 49933288, 82761336, 102251360, +109926464, 108391552, 100088848, 86803440, 69654704, 49291728, 26264798, 1508070, -23351200, -46049028, +-64142116, -75698800, -79888000, -77085536, -68492920, -55634320, -40024264, -22984518, -5550709, 11476153, +27378806, 41423884, 52866216, 60949344, 64928632, 64188824, 58415852, 47712792, 32670206, 14405320, +-5500780, -25198574, -42783244, -56484724, -64899640, -67242008, -63444720, -54072028, -40175124, -23145042, +-4522064, 14173929, 31491774, 46041512, 56548612, 61957052, 61529164, 55007792, 42856796, 26371636, +7527467, -11340861, -27921582, -40336184, -47478716, -49118320, -45780056, -38537132, -28769302, -17866528, +-6992744, 2981781, 11478837, 18216030, 23148264, 26322244, 27794880, 27651536, 25996900, 22894860, +18408766, 12705050, 6067178, -1148904, -8491150, -15392626, -21266530, -25612500, -28012314, -28146532, +-25897042, -21394306, -14951318, -7052337, 1611150, 10235444, 18057654, 24388434, 28619514, 30362198, +29501056, 26049514, 20122996, 12118250, 2699387, -7464653, -17680770, -26953604, -34088080, -38085084, +-38092064, -33202782, -22987202, -8251169, 9140227, 26823682, 41736344, 50129784, 49140868, 38405060, +19730542, -3705483, -26817238, -42991012, -47351476, -39288752, -21038360, 3487514, 26129508, 34982508, +24200530, 2942053, -11587822, -11480984, -4002910, 411780, 44023, -694174, 86436, 687732, +409633, 424128, 1004486, 1205812, 898185, 817654, 995896, 848793, 416075, 180926, +95563, -194884, -587337, -776315, -840740, -990527, -1120987, -1066226, -919123, -800475, +-636192, -364535, -71941, 179315, 426812, 675921, 872952, 997506, 1061931, }, { 577258624, -576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584, -585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848, -633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288, -367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384, -385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016, -530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192, -629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488, -462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040, -192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568, -110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344, -432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968, -488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960, -85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256, --282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816, --410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016, --437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088, --579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040, --611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680, --208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832, -454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296, --208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967, --1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332, -326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094, --68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, }, +576715840, 589559424, 634232448, 698922688, 728686848, 684827712, 605792256, 564653952, 574836800, 588651584, +585370752, 601567104, 661806144, 733112256, 772729600, 780550720, 777879232, 765676736, 732168960, 682062848, +633115776, 593396992, 558773120, 526239264, 497608480, 473712896, 452478016, 431136864, 408102976, 385196288, +367728128, 358867616, 354917856, 349517472, 341043488, 333114976, 330029056, 334360512, 346667200, 364892384, +385567264, 406968544, 429555776, 453146432, 475951648, 496440224, 513792448, 526557632, 533109056, 533698016, +530780640, 527621152, 527320512, 532114240, 542515008, 557551744, 575819264, 595270656, 612548800, 624400192, +629702848, 628770304, 621445248, 607733056, 589560512, 569769856, 549599040, 528701344, 507052576, 485115488, +462446656, 437741984, 410362656, 380882528, 350196064, 318906688, 287777856, 258289136, 232238016, 210521040, +192472512, 176729856, 162499552, 149450368, 136906384, 124364536, 112801944, 104405824, 100885560, 102829568, +110493400, 124145496, 143568416, 168067968, 197059536, 230199504, 267108304, 307226528, 349479328, 391873344, +432042048, 468332352, 499699584, 524740320, 541990528, 551234368, 553277696, 548283200, 535577056, 515299968, +488932640, 457753856, 421960128, 381905280, 339214368, 295833600, 252551056, 209267456, 166404208, 125076960, +85714128, 47379932, 9058623, -29046864, -66327716, -103271416, -140889952, -178859088, -215597696, -250224256, +-282999680, -313612608, -340509824, -362547840, -380093856, -393859776, -403703296, -409354400, -411566848, -411762816, +-410889856, -409194944, -406989504, -405171648, -404765760, -406089696, -408785312, -412814016, -418855936, -427302016, +-437474624, -448574976, -460808640, -474671744, -489646688, -504675840, -519564352, -534837248, -550401664, -565369088, +-579182784, -592082688, -604251456, -615084416, -623628736, -629501568, -632924096, -633715456, -630808320, -623335040, +-611626432, -596118400, -575879424, -549629632, -517612800, -480661056, -438062496, -388580192, -332951232, -272879680, +-208295712, -138401568, -64546916, 10955925, 87666192, 165303088, 240628224, 309478176, 369945408, 419880832, +454019904, 467810528, 460804896, 432175712, 378043008, 298507744, 200767712, 89689120, -32957432, -147629296, +-208934592, -183362352, -94947768, -11396159, 21154862, 13571023, 1598802, 219580, 1552094, -166967, +-1190780, 297963, 907849, -333934, -683974, 361314, 556198, -324270, -425739, 303332, +326954, -289910, -272194, 236760, 183073, -237834, -159451, 185757, 95026, -176094, +-68183, 146029, 36507, -114354, 5369, 108448, -10737, -59056, 63351, }, }, { { 548208576, -544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272, -512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856, -531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152, -290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048, -200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576, -325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968, -354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776, -114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608, -74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568, -172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264, -470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640, -406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028, -18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592, --228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216, --277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336, --268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000, --434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072, --485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024, --143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560, -322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928, --129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563, --682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114, -184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247, --40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, }, +544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272, +512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856, +531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152, +290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048, +200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576, +325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968, +354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776, +114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608, +74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568, +172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264, +470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640, +406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028, +18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592, +-228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216, +-277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336, +-268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000, +-434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072, +-485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024, +-143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560, +322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928, +-129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563, +-682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114, +184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247, +-40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, }, { 500830240, -459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680, --264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846, -48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312, -213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424, --184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616, --42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208, -216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256, --213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518, -57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232, -119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120, --153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786, -46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016, -67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648, --89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973, -20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932, -51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100, --68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488, -36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458, -4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974, --6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300, --37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447, --146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226, -174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666, --47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, }, +459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680, +-264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846, +48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312, +213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424, +-184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616, +-42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208, +216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256, +-213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518, +57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232, +119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120, +-153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786, +46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016, +67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648, +-89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973, +20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932, +51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100, +-68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488, +36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458, +4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974, +-6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300, +-37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447, +-146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226, +174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666, +-47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, }, }, { { 500830240, -459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680, --264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846, -48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312, -213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424, --184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616, --42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208, -216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256, --213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518, -57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232, -119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120, --153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786, -46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016, -67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648, --89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973, -20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932, -51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100, --68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488, -36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458, -4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974, --6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300, --37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447, --146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226, -174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666, --47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, }, +459700000, 365290720, 223673840, 79591112, -12800076, -46884400, -72271416, -131517264, -207050176, -253433680, +-264418048, -274940192, -304089056, -331065216, -330414528, -300650400, -250105072, -180549152, -97373888, -17135846, +48171280, 102873056, 155102000, 202770240, 239229136, 263950976, 280074816, 286780320, 279620096, 255321312, +213867360, 159070016, 98352064, 38867844, -16834662, -69041064, -115651656, -151848576, -174539424, -184535424, +-184808144, -178791440, -169817632, -160143760, -150425328, -140704736, -130871408, -119393648, -102829032, -77734616, +-42771432, 861678, 49697068, 98473400, 141868144, 176802336, 202836816, 220397856, 229242272, 228382208, +216517888, 192473584, 156089312, 109163576, 55341728, -993748, -55795384, -105952008, -149571696, -185756256, +-213678912, -231680736, -237370496, -228723120, -205311248, -168948448, -123544736, -74185896, -25676926, 18674518, +57234196, 89338008, 114706768, 133451080, 146092240, 153200944, 155143888, 152306512, 145243440, 134385232, +119815632, 101499744, 79442936, 53550724, 23803782, -9089761, -43452720, -77154256, -108082856, -134136120, +-153368448, -164484896, -166966848, -160689760, -145835616, -123247304, -94430224, -61100740, -25034290, 11703786, +46866684, 78484088, 104971688, 124940064, 137357888, 141914848, 138936288, 129008472, 112964080, 92061016, +67778880, 41452876, 14324253, -12225624, -36784248, -58154396, -75314936, -87332792, -93628136, -94261648, +-89822800, -81178104, -69453376, -56011744, -42142756, -28752658, -16386374, -5359046, 4293357, 12834973, +20619602, 27886686, 34779036, 41381472, 47594680, 53053048, 57246544, 59666224, 59808492, 57193932, +51528332, 42825656, 31368294, 17646946, 2381023, -13491566, -28950228, -43017856, -54792508, -63472100, +-68468224, -69502768, -66583804, -59929828, -49961744, -37337224, -22892176, -7493108, 8032126, 22838488, +36083092, 47083580, 55367496, 60529512, 62212064, 60317984, 55040544, 46573552, 35052840, 20901458, +4920959, -12059194, -29173566, -45003204, -57619132, -65364032, -67100812, -61773440, -48815524, -29346974, +-6101538, 17914846, 39580272, 54831164, 59880972, 53787488, 38157028, 14897631, -12156905, -33443300, +-37562712, -23103166, -2974802, 7738458, 6340983, 1333051, -418222, 242129, 268435, -290447, +-146566, 301721, 176094, -116501, 54224, 310311, 185757, 17717, 149787, 287226, +174483, 65498, 147640, 206695, 107374, 28991, 68719, 79457, -3221, -60666, +-47782, -57982, -118648, -155693, -150324, -161061, -197569, -210453, -195958, }, { 548208576, -544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272, -512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856, -531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152, -290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048, -200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576, -325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968, -354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776, -114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608, -74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568, -172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264, -470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640, -406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028, -18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592, --228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216, --277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336, --268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000, --434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072, --485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024, --143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560, -322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928, --129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563, --682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114, -184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247, --40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, }, +544875648, 556473152, 595631424, 646513920, 673311808, 656640896, 613493120, 573444160, 545771136, 523946272, +512668224, 528104896, 570986368, 619035776, 651238912, 664630592, 662498176, 642140544, 604135488, 562161856, +531653600, 513580928, 497497888, 476482048, 451859008, 426314688, 399838368, 372339296, 345038336, 318229152, +290570112, 261266080, 231251776, 202268800, 176573088, 157658592, 149259776, 152462208, 164561664, 181516048, +200835888, 221446368, 241784640, 259613056, 273704320, 284568960, 293368800, 300983776, 308247104, 316196576, +325680384, 336977760, 349679584, 362544096, 373749120, 381757088, 385728320, 385028256, 379138240, 368555968, +354957568, 339719040, 322804384, 303550048, 281759520, 257424240, 230248896, 200429488, 169588928, 140275776, +114747568, 94497336, 80372256, 72387912, 69433512, 69580080, 70905080, 72181224, 73050952, 73737608, +74635256, 76160504, 78805136, 83034064, 89080304, 97012040, 106988176, 119291640, 134152768, 151717568, +172148192, 195655088, 222447088, 252568240, 285544992, 320244032, 355295264, 389456352, 421268640, 448819264, +470615680, 486550016, 497294400, 502999200, 503384672, 498815360, 490098720, 477141888, 458903296, 434948640, +406098272, 373242848, 336539136, 296369376, 254260992, 212019984, 170402288, 129428840, 89707368, 52514028, +18496276, -12868259, -42181948, -69283728, -94063008, -117452320, -140713872, -164041440, -186702768, -208308592, +-228934640, -248002144, -264098608, -276266240, -284733792, -290072960, -292338560, -291486560, -288102112, -283189216, +-277436640, -271084928, -264461008, -258339056, -253602256, -250668784, -249504848, -250273648, -253578624, -259806336, +-268593312, -279387616, -292212928, -307295232, -324187360, -341960992, -360170048, -378949792, -398132736, -416920000, +-434612576, -451133696, -466487680, -480054400, -490873952, -498532960, -503238624, -504890592, -502673312, -495979072, +-485127840, -470478240, -451429504, -427278912, -398506944, -365985984, -329454048, -288222912, -242872352, -194613024, +-143526528, -89254792, -32881732, 23790360, 80102752, 135577088, 187954752, 234388176, 273482048, 303914560, +322653504, 327144960, 317413664, 293490688, 253710704, 198723840, 133334576, 60891900, -17351668, -89882928, +-129710696, -116388248, -63574104, -11751031, 10314901, 7651484, 1107565, 191126, 886374, -95563, +-682900, 167504, 525060, -182536, -388695, 207232, 321049, -182536, -245350, 169114, +184684, -166967, -160524, 128312, 100932, -136902, -95026, 100395, 53150, -98247, +-40265, 80531, 23622, -60130, 4295, 62277, 0, -26844, 38118, }, }, }; const Word32 CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 11671574, -33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896, -75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302, --95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904, -173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112, --547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480, --690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840, --738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072, --629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288, --397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936, --290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368, --435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688, --286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920, --135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200, --456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480, --1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784, --1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656, --1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454, -108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176, -1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824, -906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408, --411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464, -574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139, --914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282, -492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, }, +33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896, +75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302, +-95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904, +173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112, +-547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480, +-690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840, +-738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072, +-629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288, +-397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936, +-290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368, +-435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688, +-286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920, +-135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200, +-456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480, +-1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784, +-1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656, +-1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454, +108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176, +1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824, +906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408, +-411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464, +574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139, +-914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282, +492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, }, { -43152612, --167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256, --227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808, -295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936, -391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440, --357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112, --48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344, -267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241, --2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184, --163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160, --51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128, -143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408, -182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816, --530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032, -405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472, -73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264, --335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496, -212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244, -5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216, --92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288, -86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144, --36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628, -1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036, --959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864, --1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, }, +-167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256, +-227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808, +295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936, +391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440, +-357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112, +-48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344, +267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241, +-2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184, +-163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160, +-51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128, +143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408, +182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816, +-530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032, +405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472, +73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264, +-335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496, +212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244, +5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216, +-92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288, +86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144, +-36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628, +1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036, +-959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864, +-1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, }, }, { { -43152612, --167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256, --227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808, -295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936, -391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440, --357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112, --48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344, -267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241, --2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184, --163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160, --51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128, -143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408, -182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816, --530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032, -405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472, -73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264, --335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496, -212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244, -5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216, --92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288, -86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144, --36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628, -1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036, --959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864, --1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, }, +-167244416, -326189344, -425169024, -430063680, -408412736, -396821152, -347003296, -240177248, -150636320, -149980256, +-227270880, -334289120, -431815488, -465875104, -381789856, -201092512, -19849728, 100399696, 182234384, 254505808, +295659648, 288585824, 269964992, 281386944, 315109408, 345971968, 378699072, 424291776, 459042880, 447787936, +391741280, 318566848, 234615808, 120319752, -26028038, -167703984, -263907488, -309349856, -328910208, -343889440, +-357035808, -365100128, -369183040, -368511424, -355676992, -325343232, -281465856, -230792208, -174850800, -113110112, +-48930952, 12495670, 68545528, 118137904, 159899488, 194040720, 222759552, 246649776, 263353968, 270581344, +267532432, 253314480, 227605888, 193476464, 156568736, 121000504, 88099440, 58618252, 33705292, 13705241, +-2253247, -15534897, -27778774, -40846212, -56144888, -74168720, -94531160, -115715544, -135217376, -151071184, +-163176544, -172670576, -180643104, -187729264, -193513504, -195408656, -189196000, -171573200, -141721040, -100734160, +-51151448, 2652679, 55053964, 100841536, 136072080, 158270624, 167375952, 166312400, 159483952, 150750128, +143187760, 139580528, 141745200, 149778400, 162720736, 179277840, 197052032, 211674784, 217527216, 209201408, +182345520, 134332080, 65313032, -21227338, -119223464, -221298192, -319546656, -405998432, -473390208, -516054816, +-530230368, -513815520, -466422720, -390015232, -289196256, -170530608, -41752988, 88480088, 211208240, 318744032, +405772416, 468956192, 506444288, 518312352, 506494752, 473356928, 420836992, 351277312, 267993616, 174445472, +73914776, -29439854, -130281392, -223306080, -303793248, -366947520, -408276384, -425243104, -417698464, -386863264, +-335266752, -267617264, -190219808, -109179680, -29850560, 42653320, 104020888, 151907632, 185724048, 205642496, +212621824, 208755280, 196538784, 178010288, 155011808, 129571112, 103384160, 77390480, 52181168, 28295244, +5985037, -14707042, -33559800, -50273664, -64760052, -76887432, -86267104, -92647280, -96055336, -96301216, +-92933432, -85790360, -74892952, -59932512, -40791452, -18388902, 5860483, 30818538, 54721104, 74417288, +86956984, 91032904, 85701776, 69631080, 43691092, 12382928, -19332722, -47658568, -65710852, -62912144, +-36258112, -518080, 21429202, 20601348, 8546985, 825707, 671626, 1986959, 1380832, 722628, +1206886, 1399623, 694711, 281320, 529892, 461709, -140660, -445066, -325344, -481036, +-959925, -1155883, -1067299, -1207960, -1529008, -1587527, -1462973, -1526861, -1668058, -1577864, +-1390496, -1357210, -1326071, -1107565, -872952, -761283, -598074, -305480, -71941, }, { 11671574, -33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896, -75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302, --95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904, -173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112, --547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480, --690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840, --738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072, --629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288, --397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936, --290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368, --435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688, --286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920, --135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200, --456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480, --1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784, --1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656, --1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454, -108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176, -1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824, -906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408, --411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464, -574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139, --914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282, -492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, }, +33428268, 48048336, 42938400, 10669236, -23849416, -20741470, 7692824, -3387119, -60983168, -61801896, +75895296, 273056832, 373722816, 342877984, 285016704, 275532896, 274483296, 221783520, 125141392, 18176302, +-95674688, -211587264, -285864960, -277180544, -200371504, -107004816, -29242822, 34718904, 94131728, 145453904, +173212816, 159637488, 97118336, -2741800, -114900576, -218103808, -305466112, -380638784, -447978496, -505954112, +-547699072, -568476480, -572700096, -571630080, -574870080, -586484736, -606955648, -633760512, -660538560, -680332480, +-690672640, -693753728, -692721856, -689765824, -686531200, -684405184, -684960832, -690392384, -702076288, -718923840, +-738931392, -761562688, -786150272, -808610816, -822278976, -821855936, -805235520, -773099456, -729042752, -679147072, +-629310400, -583083136, -542430208, -508994432, -483474816, -464784704, -450638176, -438507040, -426233088, -412716288, +-397979712, -382108736, -364839744, -346619968, -328956928, -313062304, -299318432, -288607296, -282822528, -283359936, +-290075648, -302071488, -318472352, -338125600, -359373888, -380381088, -399396000, -415003904, -426471456, -433510368, +-435789408, -433354688, -427214496, -418410336, -406781184, -391712832, -373661632, -353731904, -332318784, -309478688, +-286101728, -263467792, -242115904, -222054112, -203476224, -186587344, -171440064, -158391408, -147968608, -140255920, +-135438576, -134720784, -139487120, -149966304, -166157792, -189564832, -222349376, -265213696, -317849056, -381103200, +-456832576, -545526336, -645587840, -755151872, -873149696, -997795520, -1124988288, -1249492480, -1367641088, -1477668480, +-1577235968, -1662584576, -1731487104, -1785210624, -1825508224, -1851442304, -1861844224, -1859087360, -1846884736, -1825654784, +-1793888128, -1753022592, -1706731904, -1655882752, -1598357632, -1533789184, -1464510848, -1391412096, -1312354688, -1225542656, +-1131783424, -1032359296, -926551168, -812663616, -690843904, -563587200, -433046528, -299167008, -162062000, -24927454, +108413568, 237962656, 365616608, 489768000, 607022208, 718448192, 827780352, 934079168, 1033306880, 1126050176, +1215316352, 1297863424, 1366641408, 1419627904, 1456143744, 1467462528, 1442218880, 1377115264, 1271023104, 1115677824, +906274048, 653276864, 370027008, 61913028, -255111936, -543083584, -769113216, -917314304, -946205440, -779825408, +-411155616, 4182761, 243786096, 231176608, 95539400, 3235721, -7104950, 4381941, 277025, -4724464, +574452, 3642669, -973884, -2865817, 1049583, 2232846, -1037772, -1719598, 1045288, 1407139, +-914291, -1052804, 878858, 840203, -778463, -638876, 676994, 439160, -634581, -346282, +492848, 158377, -474594, -108985, 336081, -40802, -296353, 102005, 194347, }, }, { { 11190000, -11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832, -306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776, --236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848, --237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968, --381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176, --544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448, --439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224, --256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504, --169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136, --250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552, --225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124, --81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472, --787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648, --1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400, --1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056, --304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504, -542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904, -401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208, -268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040, -118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096, --102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240, --264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389, -18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162, --3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, }, +11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832, +306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776, +-236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848, +-237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968, +-381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176, +-544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448, +-439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224, +-256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504, +-169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136, +-250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552, +-225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124, +-81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472, +-787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648, +-1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400, +-1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056, +-304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504, +542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904, +401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208, +268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040, +118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096, +-102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240, +-264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389, +18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162, +-3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, }, { 11190000, -11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832, -306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776, --236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848, --237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968, --381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176, --544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448, --439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224, --256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504, --169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136, --250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552, --225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124, --81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472, --787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648, --1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400, --1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056, --304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504, -542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904, -401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208, -268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040, -118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096, --102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240, --264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389, -18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162, --3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, }, +11688753, -40061308, -117706800, -134747616, -57714160, 5634460, -62899260, -187951520, -160767600, 71454832, +306802400, 341183072, 213331568, 114958560, 134767488, 188811056, 166078864, 51683488, -91673392, -197863776, +-236760608, -216768080, -167876320, -114699248, -63814088, -17744658, 10382547, 3632469, -45310832, -131139848, +-237333984, -339328192, -417852000, -472420640, -513258784, -540252096, -540749248, -509197376, -458708960, -410927968, +-381957344, -378321664, -397385408, -428277504, -458271392, -481866880, -501694048, -520654720, -536553088, -544890176, +-544073024, -536677632, -526796544, -516915424, -507240992, -497597728, -488693184, -480493024, -470668832, -456728448, +-439283872, -421299232, -404266496, -386905152, -367767840, -347481632, -327834848, -309644608, -292188768, -274380224, +-256101376, -238439936, -222777808, -209789296, -199288624, -190734128, -183625952, -177709104, -173162880, -170485504, +-169868640, -170759840, -172325904, -174384800, -177703728, -183303296, -191610832, -202452416, -215758752, -231803136, +-250417536, -270201216, -288826880, -303902752, -313296928, -315217312, -308869888, -295065856, -275606432, -252019552, +-225260304, -196459328, -167298640, -139454368, -113997560, -91598768, -73310256, -61077120, -57306676, -63880124, +-81812688, -111846320, -154618288, -209682448, -275052384, -348547872, -429030176, -515448160, -605471232, -696545472, +-787878464, -879785408, -971233856, -1059755776, -1143757312, -1222864640, -1295487232, -1358142208, -1408379904, -1446699648, +-1474248064, -1490276864, -1493755776, -1486252544, -1470870016, -1448836864, -1419387904, -1382823296, -1341137920, -1295046400, +-1242674176, -1182316928, -1114553728, -1040169152, -957788992, -865628096, -764488064, -656917952, -544147136, -426189056, +-304802560, -183969552, -66967132, 45001056, 150619136, 246948272, 331334720, 403297952, 463172480, 510109504, +542955264, 562277248, 570001216, 567531584, 555661952, 536101568, 511675008, 484807840, 456758496, 428523904, +401605216, 377419712, 356422688, 338270560, 322689472, 309778272, 299407008, 290740288, 282810720, 275370208, +268582560, 262031664, 254824160, 246598768, 237373184, 226360352, 212164944, 194264592, 172972832, 147953040, +118503520, 85361936, 50281184, 13942538, -23293756, -58928560, -89729384, -114679384, -131502768, -130823096, +-102383432, -51582556, -2934537, 20398410, 17792438, 6694244, 927713, 525597, 409096, -360240, +-264141, 293668, 136365, -266288, -70330, 250719, 71941, -165893, 3758, 180389, +18254, -121870, 12885, 104153, -25233, -98784, 3221, 44560, -47245, -75162, +-3221, 9664, -45097, -44560, -1611, -3758, -23622, -9127, 3221, }, }, { { 6211060, -34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632, --218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904, --343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040, --213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523, --15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432, --73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192, --363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592, --110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224, -184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448, --172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008, --1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712, --894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600, --503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744, --420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776, --653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216, --659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984, --286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222, -59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952, -404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704, -578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744, --333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910, --650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312, --214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288, -176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, }, +34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632, +-218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904, +-343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040, +-213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523, +-15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432, +-73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192, +-363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592, +-110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224, +184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448, +-172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008, +-1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712, +-894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600, +-503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744, +-420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776, +-653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216, +-659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984, +-286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222, +59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952, +404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704, +578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744, +-333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910, +-650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312, +-214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288, +176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, }, { -91098944, --257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882, -50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536, -73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792, --62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088, -124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816, --36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685, --12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048, -106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528, --154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056, -138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800, --74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207, -18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516, -19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704, --50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976, -48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636, --47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384, -42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130, --17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818, -8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932, --94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128, --29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598, --657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675, -723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705, --785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, }, +-257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882, +50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536, +73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792, +-62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088, +124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816, +-36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685, +-12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048, +106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528, +-154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056, +138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800, +-74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207, +18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516, +19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704, +-50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976, +48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636, +-47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384, +42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130, +-17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818, +8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932, +-94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128, +-29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598, +-657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675, +723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705, +-785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, }, }, { { -91098944, --257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882, -50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536, -73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792, --62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088, -124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816, --36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685, --12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048, -106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528, --154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056, -138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800, --74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207, -18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516, -19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704, --50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976, -48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636, --47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384, -42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130, --17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818, -8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932, --94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128, --29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598, --657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675, -723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705, --785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, }, +-257189088, -369215776, -400231360, -368604832, -319033920, -265362944, -188068032, -89787368, -9621264, 29767882, +50291920, 77778096, 108183248, 133607304, 170049568, 232137616, 298603840, 326322496, 290237248, 197401536, +73890616, -49498424, -148477552, -214940032, -253075584, -264258608, -244663888, -199331584, -146193168, -100364792, +-62904628, -28640452, 4153234, 36403068, 71977208, 112137304, 150219696, 175712480, 181030192, 163381088, +124666256, 72294504, 17459578, -29639032, -62694712, -79011296, -79526688, -69355672, -55715388, -44043816, +-36359044, -32417340, -30959198, -30240864, -28823526, -26287348, -23006530, -19612432, -16761647, -14723685, +-12786118, -9368397, -2711735, 8783208, 26276610, 49416284, 75259640, 98729488, 114351360, 117805048, +106865232, 82032800, 46493556, 4951561, -37917044, -78324096, -113419888, -140948480, -158707632, -164144528, +-154651568, -128642864, -86754584, -32558000, 27484032, 85047328, 131882880, 161876784, 172216912, 163395056, +138473504, 102116608, 59641528, 16258599, -23465554, -55970940, -78933984, -91351272, -93557272, -87172800, +-74826384, -59545428, -44037372, -30204358, -18999324, -10519986, -4220342, 817118, 5617281, 11120207, +18055506, 26812408, 37246492, 48491256, 58960776, 66642860, 69566656, 66279936, 56247964, 40042516, +19180250, -4301410, -28228672, -50518480, -69346008, -83255792, -91117728, -92039536, -85456424, -71343704, +-50351512, -23885386, 5788006, 35614404, 62179852, 82309824, 93587872, 94823216, 86394880, 70160976, +48873508, 25526602, 2877091, -16967268, -32840930, -44412648, -51804284, -55371256, -55631100, -53061636, +-47908212, -40312028, -30549566, -19041200, -6323266, 6787659, 19158238, 29657286, 37421512, 41853384, +42696268, 40242232, 35249872, 28576564, 21034602, 13422310, 6296959, -242129, -6320045, -12029130, +-17589502, -23371602, -29429652, -35311072, -40429600, -44040056, -44704168, -40561136, -30383136, -13873818, +8616778, 35296580, 61857192, 82479480, 92036856, 86772832, 64508260, 26887570, -18865644, -62464932, +-94489816, -107148696, -94908040, -58954332, -9684078, 38810400, 74739944, 87122872, 66568236, 18261128, +-29876866, -46610596, -28573344, -2207613, 8111583, 3517578, -1232119, -479963, 791885, -161598, +-657130, 418759, 933619, 294205, 179852, 879395, 1036161, 533113, 457414, 810675, +723165, 273267, 157303, 263067, 57982, -306553, -411780, -402116, -574452, -774705, +-785442, -737124, -769336, -770947, -658741, -520228, -406411, -269509, -93952, }, { 6211060, -34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632, --218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904, --343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040, --213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523, --15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432, --73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192, --363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592, --110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224, -184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448, --172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008, --1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712, --894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600, --503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744, --420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776, --653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216, --659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984, --286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222, -59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952, -404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704, -578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744, --333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910, --650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312, --214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288, -176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, }, +34978752, 80612776, 109325712, 110260400, 92930208, 42263016, -53406844, -146626960, -180780000, -181451632, +-218612768, -291483328, -334530176, -329071808, -323580704, -343249504, -359814656, -357419648, -356058144, -359599904, +-343069088, -302278176, -264480864, -243390432, -228616272, -220896080, -233855600, -258485632, -265091824, -244069040, +-213233856, -184628832, -152695216, -115064320, -79634600, -49862424, -22612466, -731218, 7459822, 524523, +-15042049, -33455110, -50982336, -62585188, -64738580, -59263032, -50605452, -42732240, -40575092, -49833432, +-73002632, -108290624, -152267872, -200412304, -246377040, -284815392, -314633184, -337180160, -352783232, -361140192, +-363007424, -359134432, -348979520, -332006336, -308914464, -280828576, -248721024, -214081568, -178794656, -144102592, +-110534208, -78451336, -47745004, -17543868, 12916577, 43589624, 74150464, 104460584, 134023920, 161468224, +184815664, 202076608, 211709680, 212568672, 203110080, 180917440, 143664512, 90120224, 19548544, -68624448, +-172849888, -288047360, -407998272, -528383520, -645873408, -755773568, -853351488, -936860672, -1006812288, -1062875008, +-1103973504, -1130945408, -1146318720, -1151125376, -1144086400, -1124344064, -1093229184, -1052873088, -1004816704, -950963712, +-894673344, -839560896, -787456512, -738373568, -692276224, -649974016, -612192832, -578741504, -549220032, -523921600, +-503275680, -486701408, -472745984, -460297024, -449115616, -439285504, -430778240, -423759712, -418975680, -417571744, +-420481600, -428016032, -440041952, -456500800, -477438752, -502406496, -530226048, -559775424, -590655168, -622515776, +-653955456, -682810688, -707459520, -727025216, -740269312, -745413568, -741645312, -729996288, -712013760, -688337216, +-659459456, -627038912, -593065216, -558063360, -521429440, -483322336, -444842112, -406379616, -367223456, -327093984, +-286897920, -247544192, -208959824, -170764672, -133316856, -97519376, -63731944, -31346282, 276489, 30821222, +59784872, 88011400, 117109800, 147303952, 177724672, 209031760, 243277152, 280708864, 319700192, 360357952, +404555328, 451731232, 498806240, 544664128, 589579264, 629760832, 658198912, 670943680, 666074816, 637512704, +578303936, 489051808, 374302112, 234066048, 70973264, -98681704, -255379824, -389007008, -478705248, -472851744, +-333534272, -111147312, 68010808, 117137720, 67772976, 12375411, -2839510, 2132451, 1378148, -2444910, +-650688, 2015950, 204548, -1671279, 1074, 1360431, -106300, -1068910, 222265, 907312, +-214212, -693637, 259309, 566399, -253940, -448287, 227096, 315143, -245887, -266288, +176094, 139050, -197569, -118112, 121870, 20401, -115964, 9127, 60666, }, }, { { 7603166, -42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856, --191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712, --183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564, --51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244, -31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640, --187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984, --487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000, --383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372, --20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832, --238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088, --1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728, --1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824, --726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304, --545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496, --725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504, --882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832, --267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088, -162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560, -473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656, -715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976, --428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186, --879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354, --344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662, -319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, }, +42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856, +-191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712, +-183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564, +-51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244, +31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640, +-187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984, +-487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000, +-383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372, +-20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832, +-238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088, +-1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728, +-1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824, +-726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304, +-545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496, +-725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504, +-882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832, +-267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088, +162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560, +473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656, +715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976, +-428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186, +-879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354, +-344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662, +319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, }, { -121878824, --327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720, -263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432, --87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388, --22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584, -70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984, --96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416, -72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168, --104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082, --45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408, -81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872, --27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322, -23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224, --13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274, --3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655, -11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615, --12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155, -12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352, --13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343, -5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884, -33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980, -25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624, --35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870, -37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171, -44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, }, +-327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720, +263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432, +-87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388, +-22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584, +70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984, +-96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416, +72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168, +-104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082, +-45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408, +81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872, +-27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322, +23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224, +-13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274, +-3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655, +11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615, +-12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155, +12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352, +-13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343, +5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884, +33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980, +25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624, +-35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870, +37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171, +44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, }, }, { { -121878824, --327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720, -263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432, --87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388, --22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584, -70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984, --96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416, -72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168, --104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082, --45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408, -81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872, --27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322, -23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224, --13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274, --3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655, -11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615, --12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155, -12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352, --13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343, -5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884, -33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980, -25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624, --35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870, -37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171, -44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, }, +-327949216, -439449792, -444052896, -368775552, -245396720, -86296632, 97207456, 264143712, 356090368, 346550720, +263938096, 159234304, 62198104, -24681030, -102201968, -160068592, -186791344, -183981904, -163771392, -133201432, +-87697328, -23809152, 46788300, 103827080, 137113072, 150406000, 147602992, 125509144, 83242912, 29804388, +-22716618, -67662376, -102038760, -122054920, -124664648, -110078936, -80458160, -39591008, 4912369, 43421584, +70509408, 86873768, 94564440, 93348968, 82163800, 60991756, 30705794, -6274947, -44485660, -76545984, +-96388728, -100801272, -89162448, -63834488, -30457224, 3966939, 33825552, 55890408, 69000264, 73880416, +72445896, 66097400, 54684060, 37191732, 12969727, -17504676, -51842404, -85010288, -109748760, -118309168, +-104737608, -67371392, -11078868, 52457656, 107721000, 140508240, 142736256, 114968760, 65752728, 7995082, +-45689324, -86133960, -108403360, -111204760, -96031712, -66442072, -27694486, 13394392, 49216568, 73181408, +81637128, 74689480, 55739548, 30266634, 4209068, -17627620, -32488206, -39666708, -40008696, -35300872, +-27625766, -18796924, -10100689, -2289218, 4378719, 10022843, 14871861, 19003620, 22226456, 24037322, +23637890, 20209432, 13393856, 3655017, -7693360, -18708878, -27219356, -31388158, -30255898, -23992224, +-13833553, -1796907, 9791452, 18900540, 24272470, 25560960, 23177792, 18026514, 11200738, 3724274, +-3570729, -10016937, -15056008, -18243410, -19265612, -17955110, -14359686, -8842264, -2096481, 4945655, +11243151, 15796353, 17865990, 17185238, 14020921, 9051107, 3195456, -2569464, -7425999, -10878615, +-12737262, -13000866, -11812771, -9455371, -6269042, -2563559, 1353452, 5134097, 8430484, 10930155, +12307766, 12255152, 10621454, 7481296, 3088618, -2079838, -7271917, -11628624, -14440217, -15199352, +-13622563, -9851581, -4516158, 1581622, 7680476, 12921946, 16411070, 17614198, 16370268, 12476343, +5845988, -2801929, -11996917, -20175072, -25573310, -25850872, -19255950, -6481106, 9387725, 24314884, +33745560, 33120640, 20860656, 999654, -18942416, -32137092, -33390686, -19749870, 4261145, 23944980, +25036438, 9262097, -6587943, -9628780, -3402151, 1152125, 552440, -816581, -246424, 438624, +-35970, -354335, 189515, 510027, 148176, -16106, 305480, 378494, 28454, -121870, +37044, -1074, -271657, -336618, -187368, -178241, -283468, -211527, -19864, 46171, +44023, 150861, 278636, 281320, 241055, 255014, 233539, 123480, 26844, }, { 7603166, -42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856, --191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712, --183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564, --51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244, -31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640, --187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984, --487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000, --383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372, --20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832, --238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088, --1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728, --1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824, --726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304, --545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496, --725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504, --882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832, --267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088, -162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560, -473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656, -715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976, --428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186, --879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354, --344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662, -319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, }, +42476688, 103279464, 146589920, 135250672, 80335752, 11234561, -65767760, -149280720, -208833120, -214609856, +-191591504, -195253504, -231171248, -247936112, -220656096, -190400192, -197253888, -220569120, -219633360, -197185712, +-183433760, -182333712, -173349168, -152315104, -135353744, -128052304, -118505664, -99485400, -77576240, -60952564, +-51844012, -49365816, -49600968, -45003740, -30903900, -10552198, 9705015, 26149908, 36463200, 38291244, +31807454, 19619410, 2814277, -19248970, -45126148, -71135392, -95098096, -117431384, -139254656, -161874640, +-187139776, -216240336, -248834304, -283934368, -320240800, -355665184, -388487840, -418700800, -446400640, -469913984, +-487608160, -500139808, -508678752, -512512544, -510573888, -503515648, -492055072, -474965408, -450726208, -419716000, +-383359104, -342749664, -299282976, -255128032, -212111792, -171212960, -133291088, -99048392, -68507952, -41831372, +-20184736, -4600447, 5168993, 9294309, 6242735, -6143414, -28790240, -61982820, -107035416, -165830832, +-238823264, -324541696, -421067872, -526965120, -640141760, -756518208, -871110080, -980573248, -1083398528, -1177353088, +-1258720128, -1325160064, -1377268224, -1415646976, -1438483328, -1444116736, -1434029440, -1410808192, -1374958592, -1326537728, +-1268522880, -1205691776, -1141034880, -1075703552, -1011597376, -951476992, -896733888, -846954688, -801676032, -761317824, +-726391168, -696634560, -671082176, -648755904, -629198720, -612108032, -596566656, -581449984, -566881472, -554386304, +-545277248, -539866112, -538575488, -542615424, -552946432, -569424640, -591395520, -618458112, -650345536, -686426496, +-725362560, -765176896, -804046336, -840819840, -874014592, -900821056, -918468544, -926077632, -923566656, -909549504, +-882574464, -843826880, -796154880, -740955392, -678549504, -610973056, -541576576, -472080256, -402478176, -333600832, +-267507744, -205489488, -147484880, -93419832, -43877924, 492848, 39701604, 74688944, 106660144, 135861088, +162007776, 186297424, 211087984, 236946368, 262724224, 289269280, 319466112, 353746400, 390006112, 428802560, +473271584, 523070112, 574500736, 626924032, 681552256, 733620160, 773950400, 797709120, 802263936, 778438656, +715712832, 614000448, 478078176, 306086208, 100260640, -117822768, -322167104, -499343648, -620302272, -613854976, +-428609280, -133701256, 100466800, 159385168, 88751208, 13932337, -4886599, 2917357, 1884417, -3468186, +-879395, 2867965, 268972, -2379412, 20401, 1941862, -180926, -1547262, 338229, 1308354, +-344671, -1014686, 410169, 827855, -409096, -651224, 383326, 463856, -403727, -373662, +319438, 195421, -336618, -142808, 237297, 3221, -216896, 54224, 134755, }, }, { { 22941568, -60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968, --228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696, --85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384, --48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008, --110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968, --401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296, --730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864, --722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112, --217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256, --350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528, --1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296, --1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480, --831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072, --449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960, --547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528, --586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004, -128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976, -320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744, -251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848, -442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560, --312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591, --961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442, --37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256, -115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, }, +60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968, +-228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696, +-85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384, +-48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008, +-110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968, +-401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296, +-730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864, +-722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112, +-217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256, +-350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528, +-1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296, +-1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480, +-831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072, +-449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960, +-547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528, +-586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004, +128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976, +320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744, +251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848, +442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560, +-312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591, +-961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442, +-37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256, +115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, }, { -134705744, --355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488, -208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432, -286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064, --120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160, --162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368, -61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358, -33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232, --85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348, -3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748, -77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528, --18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276, --36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140, -35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497, -20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534, --29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742, --2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802, -24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205, --5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092, --24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701, --14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889, --22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707, --612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418, -667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021, --216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, }, +-355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488, +208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432, +286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064, +-120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160, +-162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368, +61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358, +33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232, +-85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348, +3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748, +77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528, +-18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276, +-36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140, +35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497, +20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534, +-29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742, +-2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802, +24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205, +-5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092, +-24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701, +-14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889, +-22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707, +-612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418, +667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021, +-216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, }, }, { { -134705744, --355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488, -208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432, -286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064, --120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160, --162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368, -61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358, -33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232, --85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348, -3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748, -77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528, --18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276, --36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140, -35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497, -20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534, --29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742, --2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802, -24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205, --5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092, --24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701, --14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889, --22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707, --612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418, -667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021, --216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, }, +-355052064, -462366656, -454684576, -356599328, -183986192, 41270340, 262388672, 404438816, 426639488, 346103488, +208141632, 46766824, -119401168, -266116176, -356898368, -362558592, -282236800, -142683104, 19489488, 171758432, +286208576, 336999776, 307832128, 205007376, 59145996, -89700392, -208730576, -276980288, -282773120, -225548064, +-120158152, 6200322, 123784712, 207463024, 239510464, 213983328, 141544944, 46180564, -46616500, -119248160, +-162227360, -170816224, -145180096, -92382600, -25236154, 41639708, 95004136, 124838056, 126479808, 102404368, +61247308, 13972065, -29905320, -63705640, -83256864, -86804512, -75461504, -52934400, -24138790, 6084358, +33353642, 53966264, 65539592, 67355288, 59813324, 43739412, 20334522, -8456254, -39436388, -67427232, +-85135912, -85208928, -64182380, -25450366, 21178484, 62900332, 88331368, 91328184, 72951096, 40411348, +3381750, -29947196, -54736672, -69009384, -72172096, -63930052, -44290240, -14661408, 20721070, 54373748, +77168216, 81717656, 65875136, 34143380, -4037806, -38145216, -60307248, -67199592, -59830504, -42037528, +-18751828, 5282273, 26208964, 41352480, 49213884, 49219252, 41464688, 26736172, 6737730, -15744276, +-36872296, -52103860, -57128972, -49394272, -29525216, -1772748, 26890254, 48787608, 58082452, 52814140, +35395364, 11363410, -12761422, -31455804, -41445896, -42038068, -34630320, -21813602, -6573985, 8270497, +20461224, 28472948, 31444530, 29120952, 21932788, 11050951, -1744294, -14279693, -24270324, -29755534, +-29578366, -23648090, -12975096, 421444, 13831405, 24459838, 30067992, 29402810, 22509386, 10887742, +-2807835, -15531675, -24613920, -28263032, -25919590, -18389440, -7525857, 4358318, 14934138, 22187802, +24834574, 22589918, 16065862, 6547141, -4144644, -13931800, -20942260, -23813984, -21829172, -15197205, +-5259725, 5860483, 15851114, 22525492, 24193550, 20387672, 12138651, 1318555, -9976135, -19389092, +-24594056, -24252070, -18323942, -7525857, 6455873, 20078436, 28725278, 29109140, 20496120, 4436701, +-14688788, -29411936, -32658932, -22777286, -4110821, 16222091, 29726006, 27842126, 9167608, -13823889, +-22857280, -12723304, 3033321, 8892193, 4354023, -463856, -427886, 914291, 268435, -825707, +-612570, -216896, -677531, -992137, -438087, 107911, 82678, 163209, 664646, 923418, +667867, 439697, 420907, 186294, -307627, -612570, -645319, -705985, -776315, -590021, +-216359, 78920, 310311, 594316, 802085, 790274, 652835, 476741, 187368, }, { 22941568, -60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968, --228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696, --85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384, --48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008, --110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968, --401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296, --730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864, --722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112, --217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256, --350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528, --1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296, --1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480, --831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072, --449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960, --547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528, --586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004, -128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976, -320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744, -251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848, -442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560, --312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591, --961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442, --37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256, -115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, }, +60834992, 94597728, 135659232, 151335328, 93556200, -15516643, -96951904, -125620280, -154287040, -207301968, +-228418704, -174931328, -95768104, -61450780, -67413272, -64889440, -49018460, -53573276, -80212808, -94167696, +-85941760, -86875912, -117151136, -155600224, -170909104, -157015952, -129109400, -103067400, -85586888, -71761384, +-48570176, -10253161, 29126858, 47252692, 37082212, 10780368, -17792438, -44844292, -71080096, -94165008, +-110759688, -121372552, -130140728, -141675936, -159057136, -183318336, -214228672, -251893392, -296846112, -347995968, +-401685216, -453714432, -501417024, -543284928, -578109568, -605895872, -628941056, -650780416, -674133760, -700343296, +-730119744, -763450816, -798361408, -830556992, -855029760, -867926976, -866865088, -850513600, -819124864, -775252864, +-722731328, -664644608, -602938240, -539823168, -478321376, -420980896, -368797024, -321822976, -280324448, -245082112, +-217063360, -197146512, -185978528, -183895472, -190771168, -205554448, -226081712, -250233920, -277758208, -310404256, +-350039296, -397613568, -454370496, -522581024, -603616832, -695994112, -796599936, -903032960, -1012979328, -1121766528, +-1222814720, -1311025920, -1384092928, -1440244224, -1477094528, -1494116608, -1494412928, -1482181376, -1459547520, -1427511296, +-1388589824, -1346003072, -1300631040, -1251070336, -1196795264, -1139278720, -1079781632, -1018152064, -954703040, -891668480, +-831614144, -775381696, -722612672, -673521728, -628960384, -589041856, -552887360, -520006720, -491207360, -467731072, +-449969760, -437531008, -430267680, -428568480, -432568160, -441643424, -454992192, -472407200, -494080704, -519696960, +-547997056, -577340800, -606388160, -633769664, -657122496, -673232384, -679566400, -675043776, -658866240, -629654528, +-586888512, -532360128, -468847232, -398032864, -321164224, -240938000, -160777808, -82597592, -7059853, 64257004, +128806608, 185087328, 233052448, 272529632, 302702848, 323317088, 335299520, 340011616, 338508384, 331614976, +320457696, 306831936, 292658528, 278890496, 265742512, 254260448, 246242816, 242156704, 241125376, 243671744, +251926144, 266340592, 285317376, 308789888, 338100896, 371314432, 403117056, 429964896, 449832320, 456690848, +442260288, 403697920, 342134400, 255046432, 140796000, 9450002, -123436824, -249365808, -352794528, -388898560, +-312111520, -143997904, 17201344, 83570936, 59500328, 15437723, -1094143, 1642288, 1639067, -1799591, +-961536, 1548873, 506806, -1336272, -270046, 1126892, 141734, -891743, 17717, 785442, +-37044, -605054, 112743, 501974, -137976, -407485, 129386, 281320, -176094, -251256, +115964, 123480, -159451, -115427, 89657, 18254, -98247, 2684, 48318, }, }, { { -4357781, --15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200, -234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496, -105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501, -18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208, --413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408, --563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096, --752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088, --960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136, --777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712, --532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144, --397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464, --218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880, --136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392, --193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848, --509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216, --692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728, --729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248, --320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856, -706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040, -747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272, --334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849, -205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164, --616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489, -308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, }, +-15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200, +234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496, +105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501, +18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208, +-413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408, +-563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096, +-752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088, +-960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136, +-777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712, +-532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144, +-397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464, +-218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880, +-136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392, +-193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848, +-509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216, +-692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728, +-729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248, +-320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856, +706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040, +747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272, +-334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849, +205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164, +-616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489, +308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, }, { -69783016, --199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736, --532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688, --135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376, -404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584, -205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048, --245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864, --311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616, -190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640, -261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884, --74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256, --123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920, --91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331, -20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992, -244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412, -6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600, --372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704, -162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440, -233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120, --261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344, -133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760, --123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963, -426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178, -3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335, -2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, }, +-199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736, +-532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688, +-135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376, +404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584, +205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048, +-245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864, +-311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616, +190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640, +261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884, +-74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256, +-123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920, +-91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331, +20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992, +244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412, +6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600, +-372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704, +162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440, +233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120, +-261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344, +133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760, +-123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963, +426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178, +3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335, +2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, }, }, { { -69783016, --199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736, --532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688, --135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376, -404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584, -205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048, --245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864, --311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616, -190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640, -261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884, --74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256, --123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920, --91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331, -20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992, -244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412, -6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600, --372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704, -162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440, -233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120, --261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344, -133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760, --123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963, -426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178, -3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335, -2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, }, +-199971536, -310595392, -391509344, -410424384, -341338752, -220779568, -138907840, -162189776, -282055328, -432248736, +-532211936, -528276160, -431201824, -313920768, -246209008, -234605616, -242493312, -246754464, -242492240, -212146688, +-135220064, -27264452, 66219804, 119115552, 144776368, 168390640, 202259136, 248485872, 304710208, 361405376, +404982144, 426869824, 425519040, 403979264, 371348768, 340884576, 319475232, 301885184, 278762176, 246195584, +205628000, 160109408, 113309824, 67929736, 23271744, -22824530, -69941928, -115888416, -160149664, -203430048, +-245286112, -284792832, -321529856, -353703968, -377589888, -390746464, -393658464, -387155328, -370846272, -345016864, +-311447936, -271611584, -226304512, -177214112, -126466384, -74490840, -20390358, 35524212, 91066728, 143629616, +190960144, 231159440, 263330880, 287973248, 305897248, 317057696, 320815808, 316798944, 305198752, 286624640, +261830336, 231468672, 196347648, 157979632, 118393456, 79318920, 41998336, 7539278, -23330262, -50640884, +-74534864, -94525784, -110122960, -121693064, -129915248, -134911904, -136685184, -135825120, -133061312, -128692256, +-123075512, -117087784, -111551040, -106692360, -102533216, -99270656, -96970160, -95349344, -94065152, -92896920, +-91614872, -89897424, -87315072, -83257944, -77060840, -68273872, -56595856, -41711112, -23567022, -2640331, +20503100, 45624900, 72381472, 99876784, 127154120, 153659968, 178721648, 201124192, 219794944, 234370992, +244561888, 249531152, 248457952, 241128592, 227431408, 206856368, 179084032, 144575040, 104046120, 57863412, +6546604, -48497160, -105292200, -161998656, -216730496, -266991280, -310002144, -343559808, -366076160, -376005600, +-372055296, -354064224, -323047584, -280337888, -227390064, -166443408, -100478072, -32240172, 36025112, 101848704, +162506000, 215946656, 260997104, 296530432, 321288256, 334612320, 336531104, 327058016, 306174272, 274521440, +233450256, 184480112, 129268848, 69917232, 8820789, -51598664, -108862928, -160553936, -204564992, -238923120, +-261717056, -271722720, -268565920, -251806960, -220931504, -176865680, -122199872, -59592672, 7924752, 74658344, +133093520, 177590448, 204240720, 207763680, 184013040, 135966320, 71502080, -3244848, -78216184, -128000760, +-123941480, -68201400, -3135863, 27491548, 20126754, 3505767, -1666447, 785979, 1134408, -297963, +426812, 1980517, 1751273, 1092532, 1852742, 2781528, 2525441, 2199560, 2792803, 3315178, +3042448, 2836826, 3216394, 3432753, 3126736, 2936684, 3098819, 3076270, 2731599, 2509335, +2474438, 2274722, 1906429, 1642288, 1448478, 1138703, 780610, 486942, 178241, }, { -4357781, --15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200, -234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496, -105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501, -18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208, --413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408, --563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096, --752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088, --960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136, --777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712, --532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144, --397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464, --218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880, --136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392, --193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848, --509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216, --692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728, --729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248, --320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856, -706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040, -747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272, --334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849, -205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164, --616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489, -308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, }, +-15616501, -30627412, -43881144, -49493592, -45687716, -24834574, 32756104, 132964136, 236001472, 278151200, +234555136, 138744624, 37156300, -46155868, -96170224, -98129264, -59395104, -9983115, 32935956, 73852496, +105064560, 99138584, 48845052, -16016470, -64116884, -87776784, -86431384, -57499948, -14449881, 14837501, +18675592, 7561290, -14667313, -59650116, -128861368, -203432736, -266602048, -317439424, -358831104, -389818208, +-413140416, -435458688, -457594400, -475116256, -487643616, -498576448, -508736736, -518301088, -530641056, -547201408, +-563499200, -576024896, -587904256, -603265216, -621687936, -641835072, -664708992, -689980032, -714076416, -734508096, +-752373568, -769566336, -786965248, -805674688, -827064704, -851393536, -877783424, -904528704, -928722816, -947569088, +-960526464, -968117312, -969178688, -962167168, -948336320, -930310848, -908301312, -880925696, -848764992, -814003136, +-777668800, -740189824, -703618176, -670610304, -641908096, -616688064, -594530304, -575577152, -559538688, -545531712, +-532376768, -518926016, -504799840, -490573856, -476650112, -462685024, -448691488, -435484448, -423228768, -410814144, +-397389152, -383203968, -368334240, -351987072, -333742592, -314279392, -294420000, -274476864, -254796256, -236030464, +-218706720, -203103632, -189430064, -177678496, -167604112, -159153776, -152452544, -147246512, -142963360, -139410880, +-136809200, -135170144, -134270336, -134177464, -135288784, -138003200, -142755056, -150127360, -160649488, -174779392, +-193083472, -215875792, -242649552, -272467904, -304807392, -339312608, -374917344, -410167776, -444380928, -477570848, +-509230112, -538187328, -563902336, -586957760, -607890368, -626362432, -642089536, -655882304, -668904640, -681289216, +-692395968, -702260416, -711722816, -720979008, -729036864, -735027840, -739143488, -741636672, -741602880, -737625728, +-729266688, -716956736, -700395904, -678032512, -648656576, -612586880, -570266432, -520494208, -461707360, -394449248, +-320360000, -239108880, -149194816, -51655036, 50466940, 156328752, 266896784, 380279104, 492131840, 600777856, +706555968, 806222784, 894021056, 967654528, 1026274944, 1063700736, 1071413440, 1046386624, 987673344, 889303040, +747161088, 568291840, 362638592, 134009960, -106979048, -332635552, -517338464, -648572800, -695149056, -595534272, +-334001888, -20295868, 172842368, 174538880, 74892952, 2940442, -6116034, 3243774, 536871, -3659849, +205085, 2843268, -568546, -2236067, 668404, 1739999, -687195, -1341104, 701153, 1087164, +-616328, -816044, 590021, 648540, -517544, -494458, 443455, 347892, -408559, -276489, +308701, 145492, -290984, -108985, 195958, 7516, -166430, 34360, 97174, }, }, { { 4396973, -18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560, --35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184, --353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104, --286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832, --96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688, --183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600, --310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624, --542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544, --516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112, --292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632, --213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216, --673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688, --866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688, --758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952, --468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064, --360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904, --191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928, -189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872, -580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320, -216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968, --115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977, -242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453, --280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711, -143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, }, +18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560, +-35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184, +-353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104, +-286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832, +-96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688, +-183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600, +-310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624, +-542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544, +-516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112, +-292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632, +-213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216, +-673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688, +-866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688, +-758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952, +-468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064, +-360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904, +-191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928, +189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872, +580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320, +216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968, +-115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977, +242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453, +-280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711, +143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, }, { -99617472, --286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696, -205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712, --143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164, -97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622, --33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200, --51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224, -82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232, --78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624, -35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016, --56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884, -58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212, --67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952, -63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824, --58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692, -36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645, --19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902, -12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702, --8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694, -11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068, --47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739, --17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931, -510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049, --975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478, -882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, }, +-286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696, +205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712, +-143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164, +97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622, +-33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200, +-51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224, +82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232, +-78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624, +35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016, +-56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884, +58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212, +-67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952, +63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824, +-58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692, +36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645, +-19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902, +12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702, +-8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694, +11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068, +-47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739, +-17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931, +510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049, +-975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478, +882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, }, }, { { -99617472, --286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696, -205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712, --143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164, -97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622, --33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200, --51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224, -82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232, --78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624, -35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016, --56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884, -58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212, --67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952, -63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824, --58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692, -36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645, --19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902, -12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702, --8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694, -11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068, --47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739, --17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931, -510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049, --975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478, -882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, }, +-286525856, -426918144, -479716704, -432016800, -323711680, -220421472, -155266832, -104122352, -23704998, 92558696, +205582368, 273793952, 292715456, 287555584, 276731712, 253248448, 200025760, 114359944, 13984414, -76767712, +-143746656, -188256464, -218978368, -239801440, -245534688, -228605008, -187522032, -127440272, -55115168, 22870164, +97539248, 157715488, 195234720, 208737552, 201576240, 177796608, 141271136, 96886408, 50203872, 5709622, +-33995204, -67701032, -95033128, -116073640, -130764040, -138548672, -138680192, -130588480, -113732880, -87506200, +-51908436, -8606041, 38646116, 84669376, 124226024, 153222960, 169042928, 170094128, 155477824, 125430224, +82081656, 29616484, -26425860, -80192944, -126371896, -160656480, -179832960, -181643296, -164823136, -129660232, +-78935056, -18505940, 43240656, 97167192, 135631312, 154242480, 152633472, 134172096, 104647416, 70279624, +35944044, 4480188, -22913114, -45918568, -64495912, -78462608, -87238304, -89910848, -85651312, -74275016, +-56666724, -34820372, -11373610, 11130408, 30785788, 46446312, 57597124, 64184528, 66410932, 64531884, +58780384, 49432928, 36874440, 21636434, 4475893, -13545253, -31093416, -46683072, -58814744, -66160212, +-67793376, -63361504, -53129820, -37984692, -19406810, 711354, 20378010, 37780144, 51434916, 60302952, +63837172, 61920008, 54761368, 42888468, 27187142, 8901320, -10379862, -28739774, -44103408, -54607824, +-58997280, -56868052, -48755396, -36053568, -20711406, -4804458, 9823127, 21776558, 30251602, 35050692, +36432060, 34912716, 31146030, 25813828, 19491098, 12600897, 5487358, -1540820, -8236674, -14373645, +-19656992, -23740968, -26317412, -27138288, -26007100, -22863722, -17864380, -11331734, -3701725, 4446902, +12408697, 19478750, 25026774, 28495498, 29480118, 27852862, 23748484, 17478906, 9565429, 723702, +-8311299, -16871168, -24227910, -29619706, -32505924, -32583232, -29544544, -23179938, -13749264, -1946694, +11372000, 24927454, 36624260, 44075492, 45504640, 39842800, 26695906, 7341173, -14562623, -34248068, +-47577500, -51240032, -43075836, -24232206, -117575, 22448184, 37966436, 41439456, 29064044, 4553739, +-17837536, -23693724, -13037373, 359167, 5138392, 2745558, 555661, 988916, 1490354, 879931, +510027, 812286, 741419, 117575, -214748, -168577, -386010, -847182, -1012002, -918049, +-975494, -1106491, -983011, -702227, -527207, -376347, -74088, 267362, 491237, 669478, +882616, 1039382, 1072668, 1042066, 981937, 848793, 638876, 394600, 134755, }, { 4396973, -18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560, --35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184, --353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104, --286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832, --96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688, --183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600, --310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624, --542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544, --516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112, --292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632, --213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216, --673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688, --866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688, --758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952, --468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064, --360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904, --191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928, -189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872, -580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320, -216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968, --115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977, -242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453, --280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711, -143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, }, +18730352, 43955768, 62520228, 36020816, -44321380, -122355032, -133907416, -89308480, -52676164, -46959560, +-35172024, 995896, 22633940, -6811818, -70629128, -132929776, -187501632, -245622736, -301632864, -338469184, +-353582656, -358535264, -360587200, -358735008, -352565280, -344896608, -337896896, -331250976, -322315808, -307475104, +-286514048, -264907680, -248241600, -235557488, -221265440, -201784544, -177688704, -151782528, -127838088, -109232832, +-96672736, -88565984, -84239344, -84811648, -90858424, -101595304, -116348520, -134488848, -153815120, -170888688, +-183136864, -189838624, -191920608, -191799280, -192611024, -196889888, -206453712, -223010816, -247206512, -277297600, +-310380096, -344601344, -378737728, -410577920, -437911104, -460739936, -480709920, -498734816, -514743232, -529178624, +-542961152, -555994816, -566950208, -574567296, -578352256, -578027456, -573051200, -563112640, -549016512, -532708544, +-516039776, -499600800, -483089344, -466339488, -449094144, -430101792, -407705152, -381528928, -352745664, -322786112, +-292707392, -263698112, -237151984, -214081568, -195071504, -180745648, -171941504, -169715088, -175369952, -189889632, +-213101248, -243979376, -281717120, -325589120, -373912864, -424414720, -475792192, -527720480, -579196736, -628193216, +-673297344, -714438848, -751509760, -783385920, -809055872, -828938368, -844243456, -855476928, -862441216, -865578688, +-866344832, -865804736, -863600320, -858992384, -852285824, -844150592, -833970432, -820226560, -802486720, -781642688, +-758091264, -731185984, -700930624, -668854208, -636547456, -604441472, -572702720, -542376512, -514803904, -490429952, +-468853664, -449801184, -433525408, -420207264, -409284608, -399728864, -390993952, -383223296, -376250400, -369016064, +-360573248, -351062560, -340871168, -329410048, -315708544, -299783360, -282321088, -263283104, -241879136, -217813904, +-191608160, -163595840, -133328136, -100234336, -64467996, -26707180, 12809203, 54536420, 98570576, 143910928, +189559456, 235761488, 282941184, 330004896, 375307680, 418653536, 460329760, 498804064, 531752384, 558711872, +580073472, 594267264, 598866112, 593451712, 578232000, 551137152, 509791680, 454804288, 387670720, 307864320, +216058864, 117309512, 16954384, -82486992, -175775296, -252181152, -303696608, -327520800, -313098816, -241155968, +-115031576, 14910516, 83878024, 74836048, 30868466, 2026151, -1671279, 1275068, -20401, -1331977, +242129, 1015760, -345745, -801548, 348429, 621697, -330712, -469225, 333934, 392453, +-280247, -284542, 272194, 230318, -237834, -175020, 202937, 114354, -195421, -97711, +143345, 34360, -147640, -31139, 97711, -19864, -92342, 31675, 59593, }, }, { { 294205, -8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624, --107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952, --339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872, --391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360, --146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600, --155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752, --326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536, --370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680, --194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212, --51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344, --165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048, --572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016, --676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616, --531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568, --310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096, --284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488, --193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704, -143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344, -440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800, -140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704, --79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283, -128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244, --154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203, -74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, }, +8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624, +-107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952, +-339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872, +-391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360, +-146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600, +-155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752, +-326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536, +-370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680, +-194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212, +-51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344, +-165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048, +-572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016, +-676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616, +-531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568, +-310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096, +-284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488, +-193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704, +143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344, +440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800, +140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704, +-79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283, +128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244, +-154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203, +74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, }, { -71337800, --213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432, --136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696, -303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160, --189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896, --44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392, -195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428, --95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960, --102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008, -180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368, --89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888, --66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288, -149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824, --106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708, -10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320, -50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342, --38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868, --13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492, -52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916, --62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932, -66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170, --1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581, -459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0, --147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220, --158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, }, +-213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432, +-136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696, +303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160, +-189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896, +-44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392, +195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428, +-95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960, +-102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008, +180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368, +-89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888, +-66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288, +149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824, +-106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708, +10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320, +50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342, +-38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868, +-13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492, +52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916, +-62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932, +66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170, +-1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581, +459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0, +-147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220, +-158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, }, }, { { -71337800, --213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432, --136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696, -303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160, --189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896, --44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392, -195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428, --95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960, --102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008, -180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368, --89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888, --66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288, -149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824, --106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708, -10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320, -50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342, --38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868, --13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492, -52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916, --62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932, -66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170, --1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581, -459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0, --147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220, --158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, }, +-213465776, -339793664, -413543616, -409479488, -353031808, -305707168, -298885696, -300287456, -264226384, -195696432, +-136379712, -100566120, -60322280, 7445863, 92119536, 172758624, 241801296, 295369728, 323153344, 321709696, +303267104, 280336800, 251828960, 211822416, 162183328, 108903192, 53142168, -7278896, -71462888, -134384160, +-189267936, -229497824, -251617440, -257608384, -251723744, -235261136, -207125328, -168757856, -125397472, -82674896, +-44142064, -11410654, 15624554, 38577396, 59280212, 78995720, 99249176, 121977072, 147628224, 173745392, +195907952, 209443536, 210543584, 197508896, 171792256, 137052944, 96641056, 52245592, 4629975, -45239428, +-95707976, -144094000, -186567472, -218991792, -238354048, -243538608, -235136576, -214888496, -184976192, -147172960, +-102447856, -51600812, 3540127, 59476708, 111452256, 154566208, 185071744, 201401760, 204407152, 196513008, +180407952, 158314112, 132102456, 103480792, 73781096, 43827992, 14254996, -14263050, -41233832, -66497368, +-89908160, -111083424, -129520104, -144553568, -154997312, -159221424, -155894960, -144507392, -125213864, -98698888, +-66384624, -30321932, 7365332, 44700944, 79597552, 109910360, 133930504, 150538064, 158915408, 158564288, +149662432, 133052184, 109883520, 81576464, 50009524, 17294222, -14701673, -44412648, -70369280, -91344824, +-106646184, -115988816, -119189640, -116235776, -107519672, -93766656, -75855568, -54942832, -32583770, -10457708, +10011032, 27708982, 41794864, 51884280, 58184460, 61274688, 61807800, 60452740, 57889716, 54622320, +50830936, 46487116, 41490456, 35638028, 28609850, 20147692, 10214506, -1030255, -13279502, -26003342, +-38427608, -49677740, -58929100, -65435436, -68561640, -67904504, -63380832, -55185496, -43737800, -29694868, +-13953275, 2471754, 18584860, 33456722, 46217068, 56118044, 62656592, 65594888, 64864208, 60536492, +52914532, 42531988, 29978334, 15844671, 871342, -14052059, -28158880, -40861244, -51453172, -59042916, +-62928252, -62682900, -57788784, -47746076, -32801202, -14114873, 6833293, 28235652, 47299936, 60724932, +66258460, 63038308, 50745040, 30215094, 5039608, -19430968, -38898444, -49840948, -47437912, -29073170, +-1954210, 18064632, 20342576, 9911711, 258772, -1879048, -155693, 432718, -141197, -37581, +459562, 310848, -67646, 66035, 318364, 149787, -82678, 21475, 147640, 0, +-147103, -73551, -13422, -125091, -211527, -157303, -125091, -194347, -232465, -185220, +-158377, -187368, -188442, -140660, -110059, -110059, -88047, -37581, -5906, }, { 294205, -8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624, --107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952, --339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872, --391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360, --146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600, --155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752, --326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536, --370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680, --194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212, --51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344, --165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048, --572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016, --676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616, --531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568, --310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096, --284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488, --193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704, -143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344, -440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800, -140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704, --79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283, -128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244, --154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203, -74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, }, +8901857, 28864864, 39342436, 13937706, -47083580, -111196168, -146788016, -153042576, -147262624, -134354624, +-107734424, -75171056, -61331596, -80488224, -123064232, -173706192, -227136128, -279479968, -318843328, -336521952, +-339959008, -344491808, -356248736, -370266432, -381413504, -389552448, -395492384, -398438208, -398182656, -395899872, +-391819136, -384272320, -371361664, -351976320, -325347008, -291679296, -253915248, -217424128, -186781680, -163319360, +-146260816, -135214160, -130368904, -130834368, -134310064, -138643696, -142857584, -146631792, -149753696, -152409600, +-155440768, -160096512, -167755520, -179548416, -195720048, -215495696, -237803216, -261634912, -285511712, -307542752, +-326749824, -343719264, -359359904, -373625120, -385901728, -395743104, -402390112, -404216000, -399577440, -388097536, +-370758208, -349199104, -325402816, -301640928, -279964768, -261452384, -245954528, -232490880, -219916288, -207399680, +-194486320, -180918512, -166608768, -151734208, -136620224, -121469192, -106369160, -91516088, -77255184, -63954212, +-51991652, -41852844, -34239480, -30183956, -30968862, -37641632, -50665044, -70217880, -96439736, -128817344, +-165670304, -205029920, -245914800, -288069376, -330800544, -373101120, -414799360, -456399872, -497562304, -536742048, +-572604480, -604822656, -633069568, -656218368, -673303232, -684666112, -691340480, -693680704, -691445184, -685094016, +-676069184, -665548672, -653697792, -640570752, -626994880, -613774464, -600480448, -585917824, -569544320, -551551616, +-531744320, -509446464, -484738048, -458893088, -433236576, -408261344, -384195040, -361766176, -341875648, -324845568, +-310456352, -298596320, -289516224, -283392128, -279850944, -278159264, -277859680, -278895296, -280965472, -283144096, +-284521184, -284876064, -284215168, -281956544, -277226176, -269789984, -260008736, -247893696, -232882784, -214655488, +-193558064, -169964208, -143662368, -114285320, -82115480, -47969952, -12283070, 25144886, 64223720, 104003704, +143587744, 182995664, 222292480, 260444672, 296157856, 329288160, 360096512, 387627776, 410374464, 428013344, +440756512, 447537728, 446730272, 438046400, 421747520, 396788928, 361954624, 317939776, 266154288, 206862800, +140971568, 71972912, 3565360, -62324808, -122405496, -170344848, -201553696, -214717232, -204053904, -158424704, +-79753248, 1994476, 47517908, 45334452, 20262046, 2575907, -511101, 807454, 5906, -761283, +128312, 577673, -195958, -460635, 197569, 360240, -182536, -265214, 192737, 229244, +-154619, -161061, 154082, 132070, -134218, -102542, 110059, 62814, -112206, -61203, +74088, 16643, -84826, -23085, 49392, -11811, -51540, 14496, 30602, }, }, }; const Word32 CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 684059456, -694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544, -472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008, -1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088, -1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088, -1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688, -853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488, -664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184, -230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480, -265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464, -397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736, -360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064, -258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120, -486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976, -982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544, -677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552, --787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, }, +694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544, +472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008, +1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088, +1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088, +1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688, +853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488, +664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184, +230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480, +265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464, +397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736, +360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064, +258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120, +486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976, +982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544, +677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552, +-787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, }, { 520912960, -531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179, -51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808, --269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640, -320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072, -129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880, --333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588, -11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848, -153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600, -61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496, --241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820, --14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136, -264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672, --51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904, --362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328, -473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384, --195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, }, +531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179, +51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808, +-269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640, +320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072, +129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880, +-333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588, +11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848, +153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600, +61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496, +-241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820, +-14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136, +264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672, +-51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904, +-362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328, +473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384, +-195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, }, }, { { 520912960, -531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179, -51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808, --269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640, -320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072, -129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880, --333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588, -11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848, -153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600, -61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496, --241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820, --14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136, -264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672, --51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904, --362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328, -473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384, --195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, }, +531102240, 467924352, 320982240, 180585120, 92974232, 10579578, -85890752, -130880536, -82408608, 4509179, +51402704, 27641336, -74349104, -250800320, -441627328, -549956096, -544462784, -485270112, -426719488, -358819808, +-269153248, -193602096, -164174048, -157523296, -135770352, -98880344, -59730112, -2107755, 95477656, 215902640, +320955392, 400663552, 471848864, 532545888, 550145024, 502925632, 411866432, 318845472, 245655488, 186183072, +129242544, 72652056, 15991237, -45198088, -111775448, -175980912, -229606272, -271699616, -304252800, -325694880, +-333088672, -326895328, -309884032, -284240928, -252203696, -216574256, -178364624, -136178912, -89264456, -39213588, +11601780, 60633664, 103889352, 136936448, 158239488, 169834816, 174414320, 173432928, 168196832, 160916848, +153850560, 148247776, 144443504, 142192416, 140497504, 137513040, 131094216, 119749592, 103401872, 83398600, +61611304, 39268884, 16295106, -8673686, -37701224, -72286448, -111843096, -153174096, -191540512, -222234496, +-241382000, -246264304, -235969792, -212026432, -178160080, -139403360, -101179768, -68139120, -42813844, -25296820, +-14304389, -8010114, -3761855, 1866700, 11986180, 28982976, 55339044, 93388160, 143304272, 202077136, +264642992, 324739808, 374687040, 406500416, 414440736, 395797888, 349667776, 276952384, 181587456, 69872672, +-51570748, -175824688, -294516096, -398845152, -481722464, -537794304, -562765824, -554778752, -515776192, -450131904, +-362942464, -260368976, -149631296, -37082212, 72688024, 175570752, 267537264, 345687424, 407858688, 451339328, +473669408, 474014080, 452224608, 408090080, 343312832, 262358608, 170016288, 70852464, -28055800, -118341384, +-195563824, -257014064, -292038976, -283843648, -229665328, -154733184, -96225520, -71824200, -69452304, }, { 684059456, -694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544, -472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008, -1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088, -1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088, -1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688, -853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488, -664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184, -230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480, -265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464, -397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736, -360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064, -258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120, -486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976, -982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544, -677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552, --787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, }, +694721728, 718016512, 750012416, 767910656, 747670080, 709496384, 705104256, 728998208, 697888192, 576820544, +472416352, 515254336, 682356480, 830409408, 889270848, 923931200, 1002047040, 1099221120, 1163028352, 1187355008, +1180632832, 1122951936, 1004305600, 868427904, 776772224, 747962112, 758725312, 787148864, 832611072, 903697088, +1003041280, 1119737728, 1229271680, 1305896064, 1339709312, 1339594368, 1320585344, 1291978240, 1255008768, 1207225088, +1149855616, 1092223616, 1046323264, 1016832448, 999522624, 987748544, 975616832, 956979392, 928073728, 891554688, +853911424, 819506048, 789585152, 764623872, 744581440, 728649792, 716380160, 706977920, 697330368, 683703488, +664957056, 640836480, 608352064, 563857280, 507986176, 445618976, 382620384, 325117760, 279242144, 248119184, +230435728, 223447824, 225212512, 233121696, 243301312, 252673456, 259749424, 263692736, 264762720, 264846480, +265530448, 266880672, 269439392, 275141504, 284857248, 297565536, 312960832, 332009024, 354152800, 376782464, +397825088, 416296672, 430680544, 439338112, 441985408, 438891424, 429955744, 416002464, 399061504, 380368736, +360280096, 340298304, 322299712, 306000320, 290274304, 276203456, 265722112, 258674064, 254312528, 253796064, +258285376, 266805520, 278343424, 293458464, 312182912, 333418304, 357347200, 385152256, 416348224, 449873120, +486868896, 528649792, 573701312, 620366656, 669895744, 723237056, 777981760, 831667264, 884435264, 935750976, +982277824, 1020765568, 1049322240, 1065305984, 1065594240, 1048380032, 1012002752, 954715904, 877888640, 785156544, +677219712, 553643840, 419359520, 280817856, 137423392, -13232794, -166012304, -315872832, -467536704, -625439552, +-787549888, -961260928, -1156324352, -1334872064, -1404911232, -1314379776, -1130580864, -975823552, -905737728, }, }, { { 582648256, -618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888, -329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632, -739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736, -958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136, -524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624, -403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320, -197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192, -150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232, -262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952, -362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176, -225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152, -586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360, -878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656, -155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704, --812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064, --1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, }, +618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888, +329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632, +739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736, +958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136, +524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624, +403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320, +197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192, +150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232, +262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952, +362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176, +225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152, +586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360, +878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656, +155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704, +-812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064, +-1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, }, { 582648256, -618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888, -329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632, -739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736, -958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136, -524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624, -403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320, -197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192, -150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232, -262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952, -362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176, -225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152, -586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360, -878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656, -155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704, --812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064, --1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, }, +618615424, 650287040, 617266816, 521306496, 465274880, 522704512, 593792128, 513081632, 305120384, 197173888, +329508288, 571484032, 701774592, 679660864, 644523712, 705061824, 827775488, 915653184, 916024704, 841901632, +739491392, 654379072, 607986432, 595271744, 606680768, 644171520, 710656000, 795550912, 878273024, 937916736, +958235136, 935579712, 884652160, 825393408, 762884992, 690409536, 611157760, 544286144, 507804736, 504527136, +524668384, 553213824, 574627968, 579268160, 568484032, 550185280, 529262368, 504625376, 474049504, 438770624, +403417696, 372625984, 347587424, 326120640, 306292384, 288215392, 271501536, 253786400, 233882976, 214194320, +197859472, 185142624, 174220512, 164078496, 155379024, 149404736, 146674736, 146163648, 146315040, 147198192, +150557392, 157327344, 166595344, 177253296, 188863664, 200782208, 212376464, 224147904, 236905568, 250129232, +262673216, 274402240, 285852096, 297302464, 309112032, 321584608, 333871968, 344540672, 353230464, 359869952, +362718592, 359478560, 349791264, 334681568, 314877472, 291924096, 269370144, 250531344, 236445472, 227508176, +225077232, 230121120, 242381648, 261755712, 288561664, 322402272, 362865696, 410612832, 465521312, 525029152, +586353216, 648246400, 708615360, 763308544, 809486464, 847227904, 876116416, 893722048, 899027904, 893719360, +878729920, 852810880, 815213760, 766653248, 707359616, 636827136, 555341440, 464146368, 365206432, 261514656, +155622768, 48023640, -60431800, -166176576, -266760960, -364360320, -460942880, -553809216, -641089344, -726464704, +-812489152, -895320320, -972042880, -1045741888, -1117278336, -1180764416, -1232809216, -1276032128, -1308899328, -1324840064, +-1324293632, -1308397952, -1254367232, -1122987392, -911265920, -682454208, -520263872, -454856352, -447431968, }, }, { { 571035776, -563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296, -783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552, -405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536, -285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432, -441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480, -579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352, -405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016, -207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064, -460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144, -1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120, -698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876, --79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264, --117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664, --10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101, --35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752, --565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, }, +563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296, +783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552, +405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536, +285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432, +441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480, +579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352, +405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016, +207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064, +460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144, +1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120, +698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876, +-79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264, +-117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664, +-10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101, +-35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752, +-565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, }, { 474638432, -398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024, --186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088, -342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928, --156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496, -119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670, --9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096, --37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692, -74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550, --73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336, -80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117, --24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720, --40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096, -81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744, --83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628, -69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867, --20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, }, +398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024, +-186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088, +342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928, +-156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496, +119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670, +-9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096, +-37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692, +74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550, +-73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336, +80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117, +-24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720, +-40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096, +81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744, +-83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628, +69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867, +-20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, }, }, { { 474638432, -398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024, --186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088, -342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928, --156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496, -119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670, --9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096, --37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692, -74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550, --73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336, -80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117, --24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720, --40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096, -81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744, --83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628, -69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867, --20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, }, +398825280, 259863776, 101473968, -25419228, -112263464, -185079808, -246839280, -268340432, -242517472, -205177024, +-186384400, -177214112, -161623376, -147037664, -139704016, -115777824, -44282188, 72674608, 199522176, 297173088, +342699200, 332420800, 279936832, 206128368, 123990336, 37653980, -43978316, -104869680, -137476000, -150506928, +-156300304, -158835936, -157595232, -153728688, -146304304, -128659504, -94315336, -44016436, 14989436, 72971496, +119576720, 146105664, 149362320, 132602280, 102576168, 67084704, 34205656, 10243497, -3070365, -8367670, +-9587978, -9785546, -10883447, -13646185, -17576080, -21606906, -25021406, -27657442, -29865056, -32603096, +-37036040, -43650288, -51892332, -60308320, -66331476, -66204236, -56226492, -34737696, -3041374, 35050692, +74097848, 108104864, 132063264, 143228576, 141143360, 126728376, 101452496, 66897872, 24663850, -23181550, +-73234024, -120335320, -158156272, -180484192, -182774480, -163660272, -125737312, -74950400, -18869938, 35067336, +80717464, 113876224, 132494376, 136477952, 127284576, 107568528, 80806048, 50812148, 21297670, -4530117, +-24456618, -37682432, -44767516, -47110960, -46420008, -44366476, -42283952, -40926744, -40478456, -40700720, +-40956272, -40189620, -37089728, -30430918, -19414326, -4001836, 14828911, 35151088, 54514948, 70483096, +81056232, 84978072, 81845968, 71956272, 56072944, 35316980, 11116986, -14876156, -40789304, -64449744, +-83484504, -95661272, -99224480, -93182536, -77692736, -54348516, -25981330, 3897683, 31652298, 54102628, +69217160, 76438608, 76350024, 70198016, 59703268, 46730856, 32668058, 18297098, 4329327, -8508867, +-20058034, -30340186, -37857988, -39406860, -33274722, -22494892, -13228499, -9212168, -8891656, }, { 571035776, -563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296, -783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552, -405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536, -285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432, -441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480, -579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352, -405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016, -207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064, -460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144, -1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120, -698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876, --79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264, --117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664, --10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101, --35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752, --565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, }, +563686528, 583248000, 635546176, 695931264, 759681984, 828763840, 865687680, 835810304, 780023488, 766391296, +783381632, 762498432, 694734592, 639146944, 620424128, 601497792, 561093440, 521875584, 493450944, 455055552, +405524384, 373608480, 369716160, 374602752, 379026560, 390569280, 400235648, 384511776, 344146080, 306105536, +285078976, 272291808, 261769136, 260373264, 270980224, 287966272, 310333408, 342275616, 380825088, 415834432, +441104416, 456541600, 462682336, 461164064, 457771040, 459094432, 468284576, 486372832, 513534752, 546620480, +579007232, 604470464, 618940736, 619525952, 605687552, 580972736, 550405952, 516585248, 480198816, 442552352, +405156608, 368293440, 332101888, 298025088, 267901808, 242780000, 223397360, 210527488, 204188656, 203466016, +207371760, 215130624, 225890576, 239159888, 255406672, 275569920, 300270816, 330058560, 365990272, 409284064, +460427488, 518904512, 583795072, 654486976, 730567488, 810844160, 892802880, 973278784, 1048897600, 1115158144, +1166228608, 1197377280, 1207286912, 1196761984, 1166163072, 1116097152, 1049787712, 972130944, 886425984, 794229120, +698117376, 601780224, 506985984, 413070624, 320269792, 231436992, 149695184, 76461152, 12737799, -39661876, +-79682384, -108665896, -129199056, -142991280, -150659392, -152885808, -150864480, -145741120, -138163728, -128583264, +-117925304, -107590544, -98434208, -90017144, -81393392, -72254768, -62612032, -51864416, -39275864, -25141664, +-10588168, 3440269, 16223702, 26762478, 33942052, 36804648, 34439732, 26286810, 12356084, -7755101, +-35396972, -71133784, -113634632, -161730208, -215634736, -274280896, -334196768, -393189760, -451771488, -509486752, +-565356736, -622273664, -679333376, -715514688, -697926272, -620863296, -524469728, -457446752, -431498720, }, }, { { 623941184, -612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304, -731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312, -560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584, -538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552, -693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384, -847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600, -703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232, -365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608, -542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208, -1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048, -969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492, --44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808, --237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360, --147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928, --77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768, --715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, }, +612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304, +731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312, +560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584, +538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552, +693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384, +847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600, +703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232, +365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608, +542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208, +1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048, +969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492, +-44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808, +-237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360, +-147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928, +-77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768, +-715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, }, { 486183840, -364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364, -162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936, --150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576, -135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312, --72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696, -33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449, -11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050, --73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992, -117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320, --12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639, --17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867, -8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426, --27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436, -20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182, --14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715, -4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, }, +364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364, +162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936, +-150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576, +135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312, +-72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696, +33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449, +11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050, +-73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992, +117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320, +-12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639, +-17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867, +8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426, +-27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436, +20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182, +-14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715, +4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, }, }, { { 486183840, -364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364, -162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936, --150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576, -135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312, --72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696, -33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449, -11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050, --73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992, -117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320, --12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639, --17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867, -8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426, --27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436, -20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182, --14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715, -4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, }, +364385568, 167209520, -39768712, -210128592, -331406656, -400604480, -397778400, -302930496, -136568688, 38147364, +162939248, 224068976, 241337968, 232082848, 197511056, 137470096, 64096480, -4810900, -61295624, -109430936, +-150863408, -174515264, -166983504, -129842232, -78434696, -24713242, 29495152, 81629072, 121392416, 139304576, +135256576, 114458192, 80654656, 37199784, -9960566, -54069344, -89433032, -110358112, -112567336, -97620312, +-72567768, -43685188, -13019120, 18754512, 49414136, 75770736, 94334664, 100924752, 92163552, 68307696, +33571612, -5944235, -43534324, -72472744, -87923888, -88904216, -77820512, -58528056, -35112432, -11116449, +11539503, 32719598, 52619256, 70294120, 83450144, 88791472, 82500952, 61509836, 25424596, -22104050, +-73134704, -116317376, -139488192, -133975064, -98616744, -40982576, 24864640, 82965344, 120606440, 131869992, +117995096, 85065584, 41168872, -5516886, -47687560, -79339320, -95991984, -95263984, -77884400, -48157320, +-12965433, 20242718, 45358076, 58874336, 60375428, 52083456, 37647000, 20866562, 4893579, -8170639, +-17400524, -22834730, -25062208, -24886114, -23104240, -20279762, -16602733, -11973832, -6195491, 849867, +8949101, 17289928, 24459302, 28824600, 29047400, 24502788, 15560130, 3646964, -9041980, -20107426, +-27507654, -29998200, -27412092, -20667382, -11401528, -1435056, 7650948, 14740328, 19257560, 21090436, +20409684, 17514340, 12801687, 6782827, 71941, -6625524, -12513924, -16778826, -18755048, -18087182, +-14814416, -9395241, -2698850, 4130685, 9968619, 13988708, 15758235, 15228880, 12757127, 9001715, +4598836, -22012, -4278325, -7080254, -7436736, -5652714, -3403225, -2173790, -1954747, }, { 623941184, -612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304, -731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312, -560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584, -538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552, -693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384, -847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600, -703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232, -365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608, -542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208, -1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048, -969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492, --44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808, --237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360, --147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928, --77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768, --715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, }, +612998144, 633148480, 704733824, 794866944, 861142528, 896738688, 910201280, 889980544, 827751360, 758994304, +731771712, 737631104, 721934592, 668889600, 625876032, 626539072, 639323072, 621788864, 584434432, 563421312, +560838464, 552077248, 532985568, 521658688, 522892416, 522615904, 514515616, 508313152, 512267744, 524103584, +538168000, 549766016, 554565632, 552645760, 551173184, 557714944, 573819456, 597628032, 627579008, 660887552, +693373056, 723139328, 750719488, 775102528, 793649280, 806071936, 814991488, 822795456, 830553792, 838920384, +847593024, 854729600, 858321856, 857120320, 850050240, 836670336, 818138112, 795719488, 768999936, 737601600, +703336320, 668304960, 632402240, 595015104, 557364352, 520866240, 485103680, 449674496, 416376672, 387787232, +365310048, 349864288, 342665920, 344173984, 353679296, 370430176, 393913984, 423238432, 457707136, 497588608, +542988032, 592780672, 646010304, 703274560, 765267584, 830945152, 898450240, 966795520, 1035161728, 1101150208, +1160982784, 1211281152, 1249836032, 1274607744, 1282854656, 1272239104, 1242800384, 1196652544, 1135342976, 1059082048, +969406848, 870422912, 765710016, 656083648, 542472640, 428773568, 319327072, 215629376, 118305944, 30366492, +-44544180, -105779136, -154947392, -192818800, -219386400, -236027776, -245397248, -249499488, -249133344, -244873808, +-237816640, -229477952, -221075920, -212865552, -204624592, -196717552, -189617440, -182404032, -173244480, -161499360, +-147937472, -133030168, -116715736, -99729680, -83664352, -69962872, -59843388, -54524072, -54907936, -62049928, +-77787760, -103346576, -138120784, -181814560, -235942416, -300696032, -373188640, -451458496, -535952320, -624968768, +-715645696, -809665728, -902200832, -960130816, -936017280, -824557504, -686992384, -594167936, -560223744, }, }, { { 622567296, -640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352, -702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488, -714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672, -633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760, -894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440, -1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736, -810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072, -247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968, -361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760, -853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032, -893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878, --107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888, --538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544, --409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296, --280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768, --793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, }, +640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352, +702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488, +714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672, +633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760, +894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440, +1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736, +810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072, +247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968, +361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760, +853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032, +893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878, +-107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888, +-538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544, +-409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296, +-280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768, +-793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, }, { 492595168, -349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704, -323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928, --183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240, --243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680, -73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376, -95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056, --63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884, -12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392, -81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956, --27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252, --54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868, -39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006, -41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262, --26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682, --7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400, -29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, }, +349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704, +323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928, +-183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240, +-243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680, +73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376, +95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056, +-63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884, +12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392, +81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956, +-27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252, +-54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868, +39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006, +41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262, +-26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682, +-7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400, +29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, }, }, { { 492595168, -349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704, -323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928, --183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240, --243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680, -73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376, -95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056, --63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884, -12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392, -81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956, --27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252, --54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868, -39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006, -41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262, --26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682, --7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400, -29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, }, +349920640, 129655400, -96068752, -288063456, -422139456, -462165312, -379373376, -193902208, 25130390, 207960704, +323581216, 371539904, 352447712, 261681088, 108736224, -70442296, -227034112, -323784704, -346151264, -296056928, +-183744608, -29605210, 131186016, 255954288, 313229280, 295499104, 215232624, 93843960, -42829952, -164810240, +-243961664, -264013248, -224482368, -137329424, -23852100, 87437480, 168374000, 202671984, 190624608, 143011680, +73127720, -5229123, -76965816, -127977680, -149385936, -139343232, -102169216, -47250008, 12343199, 63119376, +95461016, 105951472, 96411280, 71464496, 36975372, -418222, -34078420, -58865212, -72094784, -73198056, +-63071056, -43987980, -19406272, 6983080, 32086090, 53277460, 67914168, 73251208, 66620848, 46097884, +12402792, -28867548, -67367096, -91574072, -93571232, -72166184, -33356864, 11688753, 50693500, 74797392, +81019728, 71504760, 50860464, 23759760, -6027450, -35191888, -59846612, -75079248, -75928040, -59625956, +-27964532, 11826729, 48893908, 72848016, 77854872, 64353644, 37917044, 6492917, -22404160, -43533252, +-54400056, -54780696, -46054936, -30625802, -11294690, 9214315, 28262496, 43135968, 51233592, 50516868, +39984000, 20319490, -5370320, -31572842, -51671140, -59984588, -53693532, -34106336, -6614787, 21106006, +41889888, 51274932, 48329656, 35343824, 16665547, -2943663, -19605988, -30780956, -35298188, -33326262, +-26037702, -15025943, -2067490, 10809359, 21541408, 28460600, 30424474, 26890254, 18299246, 6234682, +-7063611, -19175956, -27662274, -30571578, -27251568, -18436684, -5765994, 8252243, 20380156, 27853400, +29329794, 24358370, 13501230, 316217, -8907225, -10369662, -6804839, -3740380, -3008088, }, { 622567296, -640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352, -702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488, -714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672, -633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760, -894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440, -1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736, -810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072, -247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968, -361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760, -853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032, -893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878, --107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888, --538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544, --409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296, --280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768, --793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, }, +640857984, 664247808, 709125376, 798487040, 894723840, 925620224, 886355648, 844520512, 828989888, 790468352, +702073600, 623767744, 617457408, 657030656, 679072448, 678107136, 691429632, 720630016, 731288512, 718183488, +714545088, 734450688, 749665088, 732673088, 691860736, 654373184, 635630464, 633599488, 637711360, 637620672, +633773440, 641577920, 675981120, 731671296, 787074240, 827028672, 852819968, 871151424, 883716928, 890245760, +894228864, 901254848, 914564992, 934020096, 957390080, 981779584, 1005063168, 1025992512, 1042441728, 1050861440, +1048723648, 1036472768, 1016223104, 989953984, 960034176, 929936128, 902642688, 878713792, 856679040, 834564736, +810120512, 780202816, 741334976, 691475776, 631171776, 563095424, 490937856, 418955808, 351882368, 293955072, +247446480, 212663696, 189638912, 178975584, 180624848, 192862816, 213411024, 241024976, 275355712, 315903968, +361771552, 411923872, 465059072, 519434944, 573097344, 624263296, 671999168, 717108160, 761738240, 807277760, +853147456, 898196288, 941872896, 982590784, 1016185536, 1037911040, 1045184064, 1036654272, 1009752192, 961772032, +893178176, 807686848, 709143104, 600464320, 485757568, 370975648, 261082464, 157814272, 61236568, -27743878, +-107908368, -179967184, -246240672, -307747296, -363138400, -411065408, -451936864, -486216608, -512616160, -529793888, +-538810624, -542039936, -540447552, -533838656, -523063136, -509843744, -494687360, -476798816, -455955872, -433068544, +-409150400, -384934304, -361187424, -338605568, -317866784, -300097952, -286370688, -276776832, -271422080, -272051296, +-280811936, -297940800, -322991744, -357392832, -402666080, -457149344, -517921504, -584243328, -654970176, -725584768, +-793207424, -858191360, -908787712, -910023552, -830644544, -689013120, -552559872, -476109472, -454689920, }, }, { { 646679296, -645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472, -795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544, -736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200, -875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800, -973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448, -822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296, -696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672, -403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193, --29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320, --76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496, --113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472, --102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282, -34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816, -209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800, -187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992, --202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, }, +645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472, +795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544, +736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200, +875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800, +973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448, +822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296, +696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672, +403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193, +-29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320, +-76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496, +-113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472, +-102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282, +34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816, +209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800, +187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992, +-202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, }, { 583148672, -539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760, -84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304, --437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672, --168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064, -311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048, -284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232, --226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128, --299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432, -144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088, -193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976, -9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128, --59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248, --171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560, --1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144, -323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011, --71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, }, +539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760, +84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304, +-437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672, +-168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064, +311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048, +284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232, +-226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128, +-299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432, +144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088, +193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976, +9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128, +-59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248, +-171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560, +-1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144, +323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011, +-71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, }, }, { { 583148672, -539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760, -84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304, --437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672, --168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064, -311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048, -284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232, --226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128, --299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432, -144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088, -193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976, -9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128, --59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248, --171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560, --1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144, -323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011, --71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, }, +539481152, 460055424, 342895680, 195422624, 69911328, 36334888, 107412304, 216472256, 273669952, 227101760, +84176528, -92762168, -219276864, -252809824, -227045936, -205569488, -215370064, -247742848, -299394656, -371254304, +-437524032, -458374464, -427335840, -378257248, -343579136, -327581984, -319013536, -307094464, -281768096, -235050672, +-168033072, -90096600, -12005507, 56224880, 106833552, 140924864, 169577664, 203022560, 241609088, 279372064, +311309952, 334967712, 349992576, 358677536, 363750432, 364868736, 359889792, 348653088, 332512064, 311486048, +284663456, 251817696, 212406528, 165094240, 110355960, 51527260, -8180839, -67522256, -125252520, -178963232, +-226849440, -268405936, -302897728, -329326816, -348103328, -360565184, -366570080, -364243840, -352140064, -330336128, +-299850464, -262378480, -220294240, -175666848, -129303208, -81339168, -32445794, 15968152, 62376348, 105550432, +144535312, 178380192, 205931872, 226138624, 238665968, 243955216, 242759072, 236011136, 224936032, 210609088, +193493648, 173958528, 152993712, 131758856, 110757544, 90138480, 70458936, 52431888, 36262408, 21920976, +9699647, -167504, -8105140, -14840723, -20764556, -26108570, -31393526, -37200324, -43745316, -51052128, +-59316720, -68821480, -79682920, -91820496, -104991552, -118746184, -132459472, -145388400, -156676112, -165509248, +-171375104, -173924160, -172597024, -166776800, -156289024, -141251280, -121526640, -97005056, -68300184, -36366560, +-1575716, 35940824, 75268768, 115067544, 154620432, 193336880, 229652976, 261728320, 288700736, 309878144, +323465792, 327600256, 321737600, 305615904, 278244096, 239449792, 190780832, 133667976, 69099584, -204011, +-71012456, -142523664, -210281600, -255934416, -256065408, -210513520, -151919440, -114944064, -103846400, }, { 646679296, -645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472, -795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544, -736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200, -875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800, -973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448, -822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296, -696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672, -403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193, --29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320, --76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496, --113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472, --102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282, -34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816, -209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800, -187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992, --202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, }, +645968448, 639122816, 621891968, 595861760, 562558592, 519251872, 475705760, 469890912, 539172480, 669025472, +795626560, 867237120, 879086400, 846760320, 782541952, 709219328, 660229888, 647685376, 657119232, 682932544, +736579392, 809972288, 865853056, 879113792, 859909376, 827793728, 793103296, 770953600, 781334528, 823643200, +875996160, 926382016, 980579136, 1035906368, 1073128704, 1081072256, 1068672128, 1047969344, 1022666048, 995884800, +973002304, 953768896, 933232000, 911046848, 891218048, 874890176, 861030336, 850576960, 843280320, 834800448, +822642496, 810467328, 802096448, 795990592, 789062784, 780909312, 771205376, 757566720, 738932992, 717751296, +696952384, 677270720, 658261696, 639511488, 620062272, 598049472, 571248896, 537837248, 497503232, 451948672, +403237824, 352022496, 298759008, 245707568, 195555232, 148726128, 104236168, 62650688, 26023744, -4582193, +-29400124, -48178796, -60261076, -66517768, -69439424, -70959840, -71456984, -71142376, -71192304, -72874320, +-76290432, -80570904, -84927608, -89087288, -92982824, -96474632, -99465536, -102183176, -105232064, -109111496, +-113631416, -118149720, -122408176, -126476048, -129755256, -130996504, -129633928, -126123864, -120656368, -112729472, +-102395776, -90620592, -78009488, -64432024, -50106164, -35723928, -21455510, -7087233, 7117298, 20935282, +34948684, 49608484, 64487324, 79528296, 95684352, 113342040, 131704096, 150455920, 170115072, 190190816, +209036592, 225673680, 239742928, 250109904, 255638608, 256449280, 252586496, 243170848, 228394544, 209796800, +187407136, 160037456, 128926328, 96630856, 62485868, 24452322, -15824270, -56131464, -99214816, -148330992, +-202740176, -265789216, -346546400, -437759168, -502903616, -508028608, -462745152, -409909536, -380657568, }, }, { { 610245056, -609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880, -618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528, -665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712, -399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488, -416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488, -559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272, -657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304, -487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376, -214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728, -128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912, -445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128, -495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136, -83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144, --297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344, --445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872, --522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, }, +609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880, +618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528, +665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712, +399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488, +416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488, +559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272, +657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304, +487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376, +214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728, +128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912, +445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128, +495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136, +83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144, +-297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344, +-445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872, +-522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, }, { 515739680, -438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704, --277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552, -219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976, --218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376, -148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880, --144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880, -158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056, --166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584, -110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140, --63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187, -27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364, --5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924, --4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552, -7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608, --6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378, -17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, }, +438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704, +-277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552, +219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976, +-218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376, +148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880, +-144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880, +158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056, +-166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584, +110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140, +-63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187, +27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364, +-5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924, +-4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552, +7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608, +-6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378, +17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, }, }, { { 515739680, -438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704, --277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552, -219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976, --218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376, -148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880, --144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880, -158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056, --166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584, -110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140, --63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187, -27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364, --5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924, --4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552, -7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608, --6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378, -17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, }, +438247712, 285685120, 87360168, -95296200, -207255264, -246143504, -259510512, -290034304, -329569472, -333904704, +-277052768, -179355152, -81425064, -2292439, 68869264, 146194784, 223425280, 278033088, 292392768, 267599552, +219466384, 164171360, 107360224, 45304924, -24937654, -98085776, -163375184, -211983472, -239316112, -242116976, +-218141392, -170125808, -107210440, -40395240, 22451942, 76769856, 119062936, 146726816, 159440992, 159155376, +148637536, 130463392, 106756784, 78949552, 47805132, 14026826, -21254720, -56645788, -90608776, -120976880, +-144530480, -157458336, -156592368, -140656416, -110776872, -69929048, -21831318, 29657286, 80272400, 125053880, +158881040, 177580784, 178835456, 162489888, 130317896, 85446760, 31808528, -26025354, -82670608, -131849056, +-166907792, -182170496, -174769728, -145949968, -100976288, -47752520, 5096516, 50188840, 83007224, 102487584, +110175040, 108646032, 100329360, 87040200, 69905960, 49542984, 26501022, 1746441, -23098334, -45803140, +-63909652, -75457208, -79635136, -76845552, -68262600, -55389508, -39773544, -22750978, -5320391, 11724187, +27624692, 41651520, 53098144, 61197916, 65167540, 64411088, 58650464, 47960288, 32899986, 14624364, +-5263483, -24955908, -42563664, -56267828, -64661268, -67008468, -63235340, -53855132, -39938364, -22924924, +-4322885, 14391362, 31722628, 46244988, 56738664, 62173408, 61746596, 55190328, 43038256, 26581552, +7721815, -11183558, -27750858, -40142912, -47320340, -48993764, -45628120, -38378756, -28668370, -17787608, +-6880001, 3067144, 11483669, 18213882, 23163832, 26246008, 27607512, 27451820, 25715580, 22356378, +17622788, 11525008, 3844533, -4312147, -9948755, -10860899, -8375723, -5792301, -4709969, }, { 610245056, -609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880, -618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528, -665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712, -399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488, -416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488, -559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272, -657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304, -487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376, -214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728, -128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912, -445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128, -495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136, -83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144, --297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344, --445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872, --522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, }, +609693184, 622532992, 667203840, 731880704, 761625984, 717755584, 638705664, 597541632, 607697088, 621490880, +618182720, 634340928, 694544000, 765818944, 805395520, 813167232, 810452288, 798206784, 764644288, 714478528, +665478848, 625704768, 591012224, 558409664, 529716032, 505750656, 484434720, 463015200, 439907200, 416915712, +399353568, 390405536, 386368800, 380867488, 372288288, 364262080, 361074144, 365289120, 377479840, 395595488, +416150656, 437420960, 459881472, 483348096, 506016928, 526359520, 543573184, 556197696, 562593472, 563023488, +559953664, 556635840, 556160704, 560780992, 571014272, 585870592, 603945408, 623209408, 640301248, 651950272, +657041920, 655905408, 648372544, 634434880, 616032512, 596019584, 575616896, 554468480, 532571648, 510390304, +487461600, 462482080, 434833216, 405084128, 374107232, 342517728, 311096832, 281308000, 254934224, 232891376, +214522880, 198445744, 183858960, 170454896, 157559264, 144643232, 132688184, 123906048, 119996016, 121520728, +128755064, 141985184, 160971616, 185004112, 213525376, 246200416, 282618496, 322217024, 363954464, 405830912, +445446624, 481160352, 511960640, 536418880, 553044672, 561650752, 563063744, 557408896, 543997312, 523012128, +495937184, 464004096, 427414208, 386569056, 343072864, 298823968, 254642176, 210468432, 166675328, 124344136, +83961776, 44609140, 5198521, -34072512, -72519448, -110651776, -149564720, -188894816, -226988480, -263036144, +-297373344, -329594176, -358105248, -381894528, -401356640, -417061184, -428902400, -436790656, -441414720, -444037344, +-445783776, -447092128, -448056896, -449501600, -452866176, -458555392, -465826240, -474977216, -487494368, -503547872, +-522694848, -546431488, -572308672, -583722560, -557764288, -492758368, -418989632, -370297600, -352403680, }, }, { { 573552064, -570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488, -537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088, -556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720, -314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952, -224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720, -348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992, -376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384, -134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920, -91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320, -186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664, -481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344, -411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828, -17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032, --239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160, --304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912, --338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, }, +570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488, +537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088, +556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720, +314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952, +224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720, +348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992, +376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384, +134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920, +91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320, +186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664, +481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344, +411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828, +17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032, +-239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160, +-304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912, +-338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, }, { 501715520, -460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816, --263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684, -49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248, -214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848, --183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800, --41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560, -217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808, --212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972, -58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112, -120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040, --152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960, -47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720, -68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856, --89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068, -20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996, -47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, }, +460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816, +-263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684, +49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248, +214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848, +-183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800, +-41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560, +217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808, +-212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972, +58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112, +120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040, +-152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960, +47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720, +68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856, +-89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068, +20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996, +47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, }, }, { { 501715520, -460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816, --263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684, -49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248, -214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848, --183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800, --41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560, -217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808, --212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972, -58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112, -120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040, --152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960, -47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720, -68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856, --89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068, -20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996, -47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, }, +460559008, 366155616, 224563440, 80469432, -11944304, -46012520, -71380208, -130646464, -206194400, -252554816, +-263529536, -274076352, -303230048, -330179904, -329530816, -299793024, -249240176, -179660624, -96497712, -16281684, +49042620, 103762112, 155969584, 203624400, 240106928, 264837344, 280934336, 287637184, 280503232, 256201248, +214720448, 159932240, 99238440, 39739184, -15985331, -68172408, -114765824, -150986352, -173690096, -183660848, +-183926064, -177937808, -168966160, -159263824, -149551296, -139858624, -130014568, -118512104, -101964672, -76892800, +-41908144, 1741609, 50550156, 99314136, 142736800, 177676352, 203679696, 221240752, 230115216, 229246560, +217352192, 193321312, 156962800, 110015584, 56170656, -140123, -54926188, -105112880, -148744912, -184897808, +-212817248, -230854496, -236542640, -227862512, -204462448, -168132944, -122712584, -73326904, -24844238, 19481972, +58070104, 90189480, 115522272, 134254240, 146931376, 154040080, 155942208, 153108608, 146082032, 135206112, +120597848, 102302896, 80275088, 54349052, 24573656, -8286066, -42633456, -76381160, -107322640, -133334040, +-152571200, -163738656, -166214160, -159895728, -145068432, -122527360, -93683976, -60323888, -24304684, 12397960, +47603272, 79232480, 105656192, 125609536, 138077824, 142619216, 139570336, 129651104, 113653960, 92704720, +68354944, 42062764, 14964203, -11664057, -36275292, -57592828, -74755520, -86879136, -93201864, -93776856, +-89387936, -80867256, -69139312, -55655260, -41899552, -28639916, -16245177, -5225902, 4234301, 12647068, +20462834, 27614492, 34209416, 40676560, 46849504, 51966420, 55684788, 57866096, 57622356, 54056996, +47305308, 37140728, 22166326, 3399467, -12861280, -19901804, -17953500, -13210783, -10441065, }, { 573552064, -570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488, -537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088, -556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720, -314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952, -224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720, -348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992, -376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384, -134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920, -91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320, -186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664, -481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344, -411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828, -17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032, --239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160, --304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912, --338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, }, +570192320, 581792000, 620967424, 671831104, 698598464, 681930752, 638787264, 598702848, 570998720, 549175488, +537884544, 553273408, 596125376, 644172096, 676342976, 689677824, 687518528, 667147456, 629091904, 587057088, +556523584, 538422976, 522272320, 501194752, 476544352, 450953856, 424396448, 396837248, 369501952, 342626720, +314877472, 285514944, 255454992, 226385584, 200594832, 181621824, 173160192, 176257408, 188260768, 205153952, +224390032, 244880784, 265123504, 282881056, 296865984, 307601248, 316306080, 323835712, 330969632, 338782720, +348169376, 359361536, 371913568, 384639008, 395740960, 403618464, 407422208, 406582528, 400576032, 389836992, +376057664, 360677408, 343627456, 324188960, 302208928, 277727072, 250390144, 220360816, 189325376, 159854384, +134133976, 113651280, 99327024, 91166048, 87985624, 87882544, 89001384, 90074056, 90682328, 91105920, +91786136, 93073016, 95422360, 99376952, 105186968, 112838456, 122489248, 134506560, 149102480, 166340320, +186418768, 209624464, 236110992, 265856336, 298457280, 332832576, 367526272, 401262144, 432677152, 459869664, +481246240, 496708128, 507029472, 512326784, 512221568, 507134720, 497961728, 484529216, 465722080, 441205344, +411850848, 378432800, 341078912, 300298208, 257615904, 214704880, 172351664, 130707128, 90312960, 52321828, +17476222, -14641544, -44763760, -72813120, -98525480, -122787208, -147041424, -171491072, -195217008, -217874032, +-239737024, -260137040, -277482816, -290973312, -301004192, -307948096, -311751808, -312641952, -311275072, -308364160, +-304645248, -300720736, -296806944, -293374176, -291637952, -292377760, -295200096, -300228960, -308901024, -321814912, +-338522336, -360246272, -386598592, -406292640, -400060640, -361901472, -311420032, -275072800, -260514992, }, }, }; const Word32 CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 12131672, -35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060, -88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876, --71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616, -208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448, --500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344, --630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496, --665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272, --541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400, --293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008, --166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632, --289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424, --112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280, -73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624, --198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040, --1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336, --1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, }, +35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060, +88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876, +-71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616, +208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448, +-500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344, +-630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496, +-665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272, +-541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400, +-293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008, +-166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632, +-289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424, +-112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280, +73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624, +-198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040, +-1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336, +-1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, }, { -43097848, --167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360, --227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808, -295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584, -392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832, --356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032, --48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504, -268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332, --1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720, --162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728, --49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840, -144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336, -184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160, --527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568, -409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720, -79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048, --313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, }, +-167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360, +-227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808, +295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584, +392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832, +-356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032, +-48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504, +268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332, +-1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720, +-162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728, +-49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840, +144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336, +184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160, +-527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568, +409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720, +79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048, +-313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, }, }, { { -43097848, --167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360, --227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808, -295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584, -392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832, --356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032, --48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504, -268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332, --1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720, --162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728, --49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840, -144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336, -184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160, --527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568, -409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720, -79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048, --313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, }, +-167190736, -326224256, -425162560, -429956832, -408348320, -396827072, -346930816, -240030688, -150563840, -149945360, +-227132896, -334114080, -431730656, -465785984, -381590112, -200899776, -19745576, 100551624, 182485648, 254709808, +295795456, 288805952, 270257056, 281600608, 315289248, 346260256, 379019584, 424518848, 459280704, 448139584, +392080576, 318817024, 234920752, 120725624, -25675852, -167418368, -263528992, -308901024, -328545664, -343552832, +-356583744, -364620160, -368800800, -368111456, -355156736, -324841248, -281055680, -230317088, -174271520, -112592032, +-48478368, 13051869, 69172592, 118673168, 160411120, 194679056, 223423120, 247208656, 263940240, 271297504, +268223392, 253909872, 228279120, 194260832, 157282240, 121650120, 88867704, 59459528, 34444564, 14427332, +-1388348, -14647449, -27005144, -40033392, -55187108, -73243152, -93707056, -114795888, -134174776, -150110720, +-162281040, -171633328, -179525872, -186728528, -192521904, -194249024, -188014880, -170518784, -140609712, -99453728, +-49912352, 3782256, 56306484, 102237400, 137370240, 159504352, 168786848, 167815648, 160851888, 152121840, +144768848, 141185776, 143204944, 151323504, 164478464, 180984560, 198637408, 213429808, 219464240, 211020336, +184103776, 136330848, 67433136, -19269370, -117235424, -219022400, -317232736, -403855232, -471103680, -513468160, +-527698464, -511415712, -463756064, -387076960, -286395936, -167771088, -38606388, 91831232, 214368800, 322013568, +409529952, 472823296, 510125600, 522313120, 511061920, 477930016, 425322016, 356367392, 273709664, 180098720, +79737144, -22600654, -122727080, -215745328, -295460992, -356861856, -397155104, -413489376, -403401568, -368710048, +-313911648, -239426704, -144517600, -42037528, 37808060, 69194608, 55704116, 26498874, 6231461, }, { 12131672, -35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060, -88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876, --71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616, -208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448, --500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344, --630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496, --665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272, --541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400, --293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008, --166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632, --289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424, --112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280, -73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624, --198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040, --1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336, --1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, }, +35005056, 50895364, 46826956, 15495705, -17832168, -13483513, 15928960, 5836324, -50508816, -50141060, +88496192, 286718048, 388669312, 358944384, 302016736, 293678048, 293919104, 242271056, 146592608, 40855876, +-71729712, -186644240, -259896528, -249916624, -171891568, -77554224, 1320166, 66618164, 127185256, 179485616, +208453552, 196224176, 134799152, 35961760, -74894032, -176771184, -263083392, -337156544, -403115424, -459808448, +-500517760, -520093152, -522885440, -520588160, -522769984, -533068800, -552091200, -577720320, -603377920, -621745344, +-630650432, -632588544, -630336384, -625862080, -621228928, -617958272, -617169088, -621017920, -631350528, -647010496, +-665534720, -686553728, -709830336, -731014144, -743064768, -741031616, -723115712, -689573120, -643782848, -592302272, +-541145984, -493351616, -450879232, -415891872, -388977472, -368544160, -352527680, -338865952, -325068896, -309634400, +-293009120, -275597312, -256625376, -236331120, -216784176, -199284864, -183619520, -170708304, -163045552, -161851008, +-166402064, -176108688, -190615488, -208338128, -227175856, -245833728, -262890656, -276299552, -285124096, -289769632, +-289952704, -284990944, -276000512, -264748768, -250791200, -232823200, -211744576, -189266864, -165182288, -139047424, +-112483048, -87114824, -62633508, -38871600, -16938278, 3001645, 21852794, 39007968, 53010632, 64268280, +73474008, 78717624, 77876344, 71662064, 60654064, 42243152, 13946833, -23653996, -70185136, -127838624, +-198167104, -280244992, -373098976, -476168544, -587304576, -703502208, -822057792, -938586688, -1047525888, -1146535040, +-1235352832, -1310038016, -1365803904, -1404562176, -1430346496, -1440137984, -1430087168, -1404998656, -1369252736, -1317694336, +-1246936960, -1155320960, -1014742400, -778383360, -456820768, -156443104, 11594801, 43531640, 16896938, }, }, { { 11454678, -12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168, -310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256, --229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336, --226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816, --367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584, --526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688, --418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568, --231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552, --141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264, --217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944, --187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544, --39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096, --740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984, --1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976, --1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816, --174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, }, +12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168, +310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256, +-229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336, +-226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816, +-367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584, +-526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688, +-418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568, +-231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552, +-141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264, +-217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944, +-187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544, +-39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096, +-740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984, +-1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976, +-1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816, +-174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, }, { 11454678, -12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168, -310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256, --229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336, --226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816, --367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584, --526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688, --418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568, --231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552, --141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264, --217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944, --187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544, --39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096, --740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984, --1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976, --1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816, --174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, }, +12261595, -39353712, -116605680, -133135400, -55874840, 7644505, -60422136, -185013776, -157663952, 74794168, +310658208, 345424896, 217707056, 119653496, 139996064, 194340288, 171745536, 57756572, -85087064, -191056256, +-229774848, -209300736, -159948336, -106610752, -55478092, -8877161, 19633906, 13015898, -35591320, -120874336, +-226771056, -328624576, -406721600, -460766784, -501388032, -528194528, -528187552, -496168032, -445522848, -397478816, +-367953056, -363930304, -382863040, -413397056, -442821856, -466120992, -485803200, -504309152, -519663648, -527787584, +-526773440, -518840640, -508476896, -498442752, -488485952, -478252128, -468951360, -460622880, -450411616, -435866688, +-418123104, -399991392, -382464704, -364528384, -345181152, -324685024, -304454656, -285758144, -268155744, -250039568, +-231118640, -213047024, -197261408, -183846608, -172690432, -163833680, -156576256, -150111792, -144944944, -142063552, +-141222816, -141463872, -142488224, -144411840, -147390928, -152274848, -160152352, -170881184, -183707024, -199021264, +-217329648, -236966224, -254967520, -269355104, -278557632, -280236960, -273142208, -258744944, -239172240, -215200944, +-187614368, -158353840, -129102960, -100698728, -74394736, -51687248, -33260226, -20282446, -15713675, -22118544, +-39787504, -68913288, -111002896, -165992976, -230904960, -303376640, -383343552, -469707840, -559023808, -649028096, +-740035776, -831807936, -922267968, -1009758080, -1093606016, -1172373632, -1243722624, -1305461760, -1355644672, -1393273984, +-1419281024, -1434560384, -1437935232, -1429216384, -1412040832, -1389403136, -1359531648, -1320978944, -1277201920, -1230462976, +-1176829568, -1113237248, -1042787456, -967061824, -881342848, -783402048, -677669056, -565563968, -442997952, -311154816, +-174498080, -24946244, 148259056, 319944992, 423110656, 406406976, 290862688, 151469008, 43244952, }, }, { { 6452115, -35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352, --212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152, --331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136, --196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980, -7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946, --44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632, --328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016, --69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448, -233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852, --116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448, --1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480, --817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032, --411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872, --309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808, --512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944, --433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, }, +35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352, +-212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152, +-331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136, +-196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980, +7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946, +-44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632, +-328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016, +-69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448, +233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852, +-116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448, +-1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480, +-817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032, +-411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872, +-309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808, +-512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944, +-433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, }, { -91094112, --257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344, -50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728, -73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544, --62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984, -124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584, --36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178, --12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720, -106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736, --154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088, -138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456, --74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770, -18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008, -19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776, --50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168, -49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000, --45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, }, +-257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344, +50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728, +73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544, +-62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984, +124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584, +-36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178, +-12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720, +106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736, +-154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088, +138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456, +-74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770, +18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008, +19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776, +-50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168, +49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000, +-45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, }, }, { { -91094112, --257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344, -50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728, -73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544, --62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984, -124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584, --36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178, --12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720, -106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736, --154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088, -138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456, --74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770, -18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008, -19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776, --50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168, -49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000, --45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, }, +-257185328, -369219552, -400231904, -368597312, -319030176, -265365632, -188064272, -89778240, -9618042, 29767344, +50299436, 77788304, 108185392, 133609456, 170060848, 232147808, 298606528, 326328928, 290251200, 197411728, +73894912, -49488224, -148460912, -214930368, -253069136, -264243568, -244646704, -199322448, -146183504, -100346544, +-62887448, -28630788, 4166655, 36424544, 71994392, 112148040, 150237424, 175736096, 181046832, 163393984, +124688808, 72319736, 17476222, -29621852, -62667868, -78985520, -79509512, -69334192, -55685324, -44018584, +-36340256, -32390496, -30926448, -30215632, -28802050, -26255672, -22972170, -19587198, -16735877, -14687178, +-12751221, -9342628, -2680597, 8824010, 26312044, 49444200, 75296680, 98773512, 114386256, 117836720, +106908176, 82078432, 46528456, 4988068, -37868188, -78277392, -113383376, -140904992, -158653408, -164096736, +-154611840, -128592392, -86696064, -32510218, 27528592, 85105312, 131944080, 161925632, 172267920, 163461088, +138537392, 102168144, 59701120, 16331613, -23400056, -55914568, -78863656, -91271280, -93489624, -87109456, +-74745312, -59459528, -43966508, -30130806, -18906446, -10429791, -4144644, 904091, 5722507, 11215770, +18139794, 26915486, 37363532, 48592188, 59057948, 66765268, 69696584, 66389992, 56364468, 40188008, +19323058, -4177930, -28086402, -50346680, -69186552, -83109768, -90938952, -91835528, -85273352, -71162776, +-50123880, -23640036, 6007049, 35852240, 62478352, 82614768, 93869728, 95155536, 86802360, 70564168, +49274012, 26030186, 3476239, -16371878, -32184874, -43548284, -50790672, -54296976, -54269060, -51174000, +-45562624, -37070400, -24777130, -9773735, 3378529, 9642202, 8386461, 3991098, 887448, }, { 6452115, -35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352, --212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152, --331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136, --196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980, -7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946, --44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632, --328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016, --69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448, -233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852, --116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448, --1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480, --817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032, --411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872, --309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808, --512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944, --433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, }, +35748088, 81947440, 111170400, 112590960, 95807832, 45698988, -49475340, -142197248, -175787648, -175914352, +-212588528, -284941024, -327417184, -321428896, -315450304, -334580096, -350572416, -347663104, -345804448, -348785152, +-331687424, -290392416, -252080752, -230411568, -215081232, -206860656, -219282240, -243322240, -249385136, -227857136, +-196457168, -167259456, -134793792, -96642136, -60622928, -30261266, -2485712, 19939922, 28740848, 22386980, +7348152, -10490994, -27394912, -38426000, -40039832, -33959232, -24671902, -16234440, -13515188, -22138946, +-44678936, -79402672, -122788280, -170272368, -215612720, -253478768, -282667904, -304536256, -319520320, -327285632, +-328484992, -323923200, -313150912, -295553344, -271757088, -242979184, -210247232, -174942608, -138919104, -103535016, +-69322920, -36527624, -5060009, 25834766, 56970056, 88406536, 119745296, 150757104, 181040928, 209296448, +233433616, 251415568, 261826032, 263540272, 254881072, 233442752, 197032704, 144379616, 74620760, -12745852, +-116058608, -230334800, -349448192, -468957824, -585466304, -694418368, -791117952, -873665600, -942570304, -997656448, +-1037813376, -1063725952, -1077990144, -1081780992, -1073710656, -1052800640, -1020519104, -979087168, -929881920, -874748480, +-817228096, -760950080, -707549696, -657069312, -609664704, -566065984, -526812640, -491839264, -460903136, -434124032, +-411802528, -393564512, -378035520, -363857280, -350761376, -339089824, -328770080, -319691072, -312706368, -309211872, +-309946304, -314980544, -324437536, -338422496, -356629920, -378493984, -403220672, -429656704, -456929760, -484799808, +-512288128, -536868768, -556423232, -570509632, -578120320, -576579520, -564771584, -544449920, -516401088, -479406944, +-433754656, -377739680, -299510080, -187618672, -59096064, 38548944, 70563088, 50473380, 16210817, }, }, { { 7919920, -43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568, --184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304, --169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400, --30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752, -59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832, --151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872, --444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976, --332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714, -40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088, --168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144, --1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784, --1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360, --613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776, --408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696, --549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664, --596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, }, +43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568, +-184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304, +-169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400, +-30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752, +59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832, +-151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872, +-444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976, +-332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714, +40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088, +-168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144, +-1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784, +-1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360, +-613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776, +-408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696, +-549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664, +-596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, }, { -121877216, --327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920, -263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376, --87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348, --22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152, -70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504, --96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408, -72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424, --104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810, --45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952, -81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208, --27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558, -23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144, --13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471, --3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415, -11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305, --11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, }, +-327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920, +263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376, +-87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348, +-22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152, +70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504, +-96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408, +72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424, +-104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810, +-45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952, +81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208, +-27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558, +23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144, +-13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471, +-3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415, +11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305, +-11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, }, }, { { -121877216, --327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920, -263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376, --87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348, --22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152, -70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504, --96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408, -72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424, --104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810, --45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952, -81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208, --27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558, -23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144, --13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471, --3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415, -11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305, --11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, }, +-327947584, -439449792, -444051840, -368772320, -245394560, -86295016, 97210144, 264148544, 356093600, 346553920, +263942928, 159240208, 62202400, -24676198, -102194448, -160061088, -186785440, -183974928, -163762272, -133193376, +-87690344, -23799488, 46799036, 103836200, 137122192, 150417808, 147615344, 125519880, 83253648, 29818348, +-22703198, -67650568, -102025336, -122039352, -124650152, -110064976, -80442592, -39573828, 4927938, 43437152, +70527656, 86892560, 94581624, 93367224, 82184200, 61012156, 30724586, -6254010, -44463112, -76524504, +-96368328, -100777648, -89137752, -63811404, -30434138, 3992709, 33851860, 55915104, 69026032, 73909408, +72473816, 66124244, 54713052, 37222872, 12999792, -17475686, -51810192, -84977000, -109717088, -118276424, +-104702176, -67335960, -11045045, 52493628, 107759656, 140545824, 142772768, 115008488, 65794068, 8034810, +-45649060, -86090472, -108358800, -111161808, -95987688, -66394288, -27647242, 13440563, 49265424, 73232952, +81687592, 74739944, 55793236, 30321932, 4263292, -17572322, -32429150, -39607116, -39949640, -35240208, +-27561342, -18732500, -10036265, -2222109, 4449049, 10092636, 14942728, 19077708, 22303766, 24113558, +23716272, 20292110, 13478144, 3739843, -7605850, -18616536, -27125940, -31294206, -30157112, -23889144, +-13728863, -1690607, 9903121, 19017042, 24391120, 25682294, 23306104, 18159658, 11337103, 3865471, +-3420942, -9860171, -14895483, -18075906, -19086298, -17766670, -14164802, -8636105, -1872606, 5182415, +11490111, 16064788, 18162880, 17501992, 14358613, 9434969, 3633542, -2091649, -6881612, -10204305, +-11922829, -11974906, -10144176, -6567005, -2434710, 442919, 1197222, 654983, 130460, }, { 7919920, -43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568, --184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304, --169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400, --30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752, -59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832, --151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872, --444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976, --332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714, -40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088, --168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144, --1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784, --1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360, --613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776, --408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696, --549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664, --596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, }, +43446816, 104918000, 148874304, 138170704, 83917216, 15482820, -60879012, -143749872, -202633328, -207747568, +-184090896, -187100592, -222344016, -238450672, -210530704, -179610704, -185786864, -208447648, -206863872, -183740304, +-169309760, -167556336, -157913056, -136191808, -118551832, -110594336, -100373920, -80657336, -58070644, -40783400, +-30984968, -27802934, -27360016, -22086870, -7280507, 13779329, 34718904, 51856900, 62892280, 65432752, +59639916, 48164300, 32096290, 10749229, -14424648, -39697844, -62912144, -84523880, -105623448, -127484832, +-151991920, -180360704, -212206816, -246526288, -282065536, -316742560, -348788928, -378200864, -405123872, -427867872, +-444754592, -456467520, -464216160, -467251648, -464473856, -456580256, -444310624, -426387168, -401278272, -369414976, +-332223776, -290739744, -246373280, -201346464, -157460480, -115644144, -76794016, -41654740, -10200547, 17439714, +40042516, 56556128, 67292472, 72427104, 70361224, 58948428, 37329172, 5191005, -38839928, -96605088, +-168503920, -253121216, -348580608, -453376224, -565388928, -680615424, -794080960, -902358144, -1003945408, -1096694144, +-1176855936, -1242011136, -1292803968, -1329907584, -1351437184, -1355673728, -1344186752, -1319600768, -1282316672, -1232374784, +-1172863232, -1108547200, -1042297856, -975305984, -909583872, -847816320, -791289216, -739690560, -692638656, -650415360, +-613473280, -581705536, -554161920, -529680608, -507825120, -488477376, -470631776, -452970336, -435749120, -420651776, +-408776736, -400292032, -395874112, -396789472, -403652832, -416310656, -434459040, -457537504, -484837376, -515965696, +-549921728, -584192320, -616537216, -646397952, -672314304, -690305408, -697493568, -693863232, -677921920, -645913664, +-596482880, -525728160, -416760544, -255793760, -71349608, 65669512, 106195216, 73027328, 22857816, }, }, { { 23198728, -61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488, --222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112, --75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100, --33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072, --90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592, --376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968, --699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768, --686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848, --174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440, --301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168, --1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904, --1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168, --757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472, --362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264, --437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360, --395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, }, +61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488, +-222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112, +-75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100, +-33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072, +-90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592, +-376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968, +-699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768, +-686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848, +-174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440, +-301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168, +-1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904, +-1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168, +-757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472, +-362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264, +-437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360, +-395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, }, { -134710032, --355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904, -208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736, -286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624, --120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880, --162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312, -61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036, -33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656, --85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176, -3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832, -77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076, --18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505, --36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988, -35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353, -20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356, --28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735, --779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, }, +-355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904, +208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736, +286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624, +-120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880, +-162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312, +61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036, +33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656, +-85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176, +3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832, +77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076, +-18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505, +-36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988, +35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353, +20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356, +-28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735, +-779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, }, }, { { -134710032, --355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904, -208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736, -286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624, --120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880, --162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312, -61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036, -33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656, --85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176, -3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832, -77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076, --18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505, --36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988, -35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353, -20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356, --28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735, --779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, }, +-355053664, -462356992, -454677056, -356599328, -183980288, 41285372, 262398336, 404443104, 426653472, 346123904, +208153440, 46777564, -119379152, -266092016, -356883328, -362540864, -282207264, -142656272, 19508278, 171784736, +286243456, 337028768, 307856288, 205042272, 59186260, -89668720, -208699440, -276937344, -282728576, -225512624, +-120118960, 6251325, 123831960, 207502752, 239558240, 214040768, 141594864, 46226196, -46559056, -119185880, +-162174208, -170762528, -145114064, -92316024, -25178708, 41701984, 95078224, 124908384, 126542624, 102476312, +61328376, 14045617, -29835528, -63623500, -83169896, -86727200, -75383120, -52842056, -24046448, 6167036, +33442762, 54068268, 65636228, 67444408, 59914256, 43849468, 20435454, -8358007, -39323648, -67309656, +-85029080, -85099408, -64057828, -25326348, 21291764, 63022204, 88467200, 91458104, 73073496, 40547176, +3528316, -29810832, -54602456, -68857992, -72016400, -63786168, -44141528, -14494978, 20885352, 54527832, +77333568, 81899656, 66048544, 34309808, -3853123, -37948720, -60123100, -67015984, -59624884, -41827076, +-18555870, 5486821, 26436060, 41576896, 49426484, 49449032, 41713796, 26975616, 6971269, -15485505, +-36599564, -51846696, -56868052, -49102752, -29229400, -1492501, 27186606, 49115100, 58404576, 53124988, +35735740, 11730629, -12408161, -31103616, -41052372, -41626288, -34236796, -21403970, -6115497, 8734353, +20910048, 28959890, 31982474, 29651380, 22461606, 11644193, -1104344, -13655849, -23618562, -29010356, +-28798292, -22879290, -12122545, 1396401, 14827301, 25492242, 31286690, 30774514, 23921894, 12525735, +-779000, -13266080, -21409876, -21661668, -14317273, -5112085, -53687, 488016, 18790, }, { 23198728, -61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488, --222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112, --75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100, --33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072, --90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592, --376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968, --699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768, --686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848, --174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440, --301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168, --1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904, --1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168, --757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472, --362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264, --437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360, --395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, }, +61559228, 95750928, 137297760, 153484944, 96155728, -12480638, -93413928, -121580864, -149810608, -202373488, +-222976448, -169002128, -89407264, -54619636, -60062432, -57067768, -40763536, -44826572, -70948024, -84447112, +-75777720, -76200776, -105965968, -143970528, -158818224, -144399488, -115995256, -89512488, -71548248, -57189100, +-33515778, 5246840, 45134200, 63794224, 54092964, 28249610, 206695, -26316876, -52092584, -74698072, +-90745144, -100841000, -109150152, -120179624, -137001936, -160759008, -191203360, -228334416, -272725056, -323382592, +-376589184, -428057920, -475202176, -516584704, -550901504, -578105280, -600600704, -621953664, -644768000, -670379968, +-699618496, -732452480, -766789120, -798380224, -822325184, -834703296, -833034688, -816078656, -784167104, -739744768, +-686587584, -627903296, -565669184, -501964096, -439806272, -381877344, -329149120, -281542080, -239374640, -203550848, +-174959248, -154366496, -142524192, -139860784, -146122304, -160189936, -180045568, -203606688, -230465264, -262363440, +-301331136, -348290176, -404322304, -471761888, -552131456, -643851584, -743671424, -849317952, -958592128, -1066663168, +-1166864768, -1254281344, -1326654720, -1382013056, -1417960960, -1434180864, -1433740032, -1420624896, -1397040128, -1364187904, +-1324459520, -1280886528, -1234519680, -1184113920, -1128929408, -1070315008, -1009779008, -947248064, -882750528, -818495168, +-757349824, -700115648, -646115008, -595666304, -549934592, -508849472, -471224480, -436821248, -406718368, -381813472, +-362260640, -348076512, -339271264, -335725792, -337478144, -344461216, -355828384, -370701856, -389412352, -412315264, +-437762944, -463297056, -488082752, -511443104, -529989824, -539554176, -538693568, -526605952, -499879424, -455919360, +-395226112, -312759520, -194631808, -41409928, 105241192, 182446992, 166282880, 96889632, 28705414, }, }, { { -4125853, --14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416, -241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400, -118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656, -37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832, --387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136, --530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936, --712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584, --912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160, --721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200, --466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584, --320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208, --127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076, --28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216, --61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344, --340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104, --443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, }, +-14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416, +241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400, +118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656, +37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832, +-387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136, +-530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936, +-712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584, +-912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160, +-721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200, +-466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584, +-320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208, +-127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076, +-28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216, +-61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344, +-340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104, +-443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, }, { -69776040, --199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264, --531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856, --134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696, -406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600, -207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744, --243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792, --308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512, -193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240, -265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932, --70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552, --117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040, --84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762, -29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888, -257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800, -26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904, --321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, }, +-199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264, +-531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856, +-134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696, +406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600, +207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744, +-243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792, +-308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512, +193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240, +265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932, +-70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552, +-117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040, +-84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762, +29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888, +257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800, +26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904, +-321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, }, }, { { -69776040, --199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264, --531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856, --134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696, -406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600, -207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744, --243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792, --308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512, -193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240, -265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932, --70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552, --117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040, --84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762, -29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888, -257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800, -26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904, --321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, }, +-199926976, -310493920, -391379968, -410279424, -341146560, -220535296, -138643152, -161903632, -281714432, -431863264, +-531811456, -527844512, -430712192, -313395712, -245669440, -234024720, -241856048, -246089808, -241810416, -211413856, +-134434624, -26459682, 67050344, 120003536, 145708912, 169338208, 203243216, 249530624, 305789856, 362501696, +406125664, 428072416, 426747936, 405230176, 372656608, 342246080, 320857152, 303298240, 280238560, 247717600, +207168288, 161693168, 114959632, 69615512, 24978456, -21061982, -68116032, -114034064, -158266864, -201481744, +-243280368, -282763456, -319460192, -351561856, -375398944, -388531872, -391390720, -384812960, -368463648, -342605792, +-308969216, -269061440, -223721632, -174591488, -123765392, -71724880, -17594870, 38373924, 94002336, 146620512, +193984352, 234253952, 266512928, 291203072, 309168928, 320415840, 324258752, 320284288, 308741024, 290266240, +265549776, 235231056, 200186272, 161926176, 122410328, 83385720, 46162844, 11814381, -18991808, -46236932, +-70012264, -89895280, -105430712, -116912232, -124998584, -129893232, -131597800, -130620696, -127709776, -123243552, +-117540904, -111405544, -105715792, -100761008, -96488048, -93046712, -90591600, -88866632, -87428888, -86055040, +-84617296, -82773144, -79990008, -75703632, -69346008, -60391536, -48456896, -33323578, -15001247, 6155762, +29615946, 55006184, 81981800, 109794400, 137452368, 164257264, 189614224, 212451088, 231574432, 246505888, +257123056, 262678592, 262149776, 255290704, 242235088, 222452464, 195367856, 161559488, 122027536, 76943800, +26591754, -27271968, -82442432, -137508752, -190622992, -238597776, -278680032, -309303680, -328158048, -332487904, +-321526624, -293460608, -240470928, -157793872, -62716188, 7940321, 31165356, 20784958, 5646272, }, { -4125853, --14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416, -241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400, -118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656, -37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832, --387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136, --530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936, --712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584, --912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160, --721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200, --466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584, --320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208, --127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076, --28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216, --61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344, --340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104, --443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, }, +-14767708, -29042032, -41738492, -46874200, -42393476, -20827908, 37269580, 137992464, 241750288, 284568416, +241448560, 146208736, 45365592, -37332928, -86877528, -88201448, -48722108, 1248225, 44657996, 86271400, +118205016, 112792824, 63035624, -1081795, -48502528, -71673880, -69729328, -40025872, 3649649, 33426656, +37935300, 27593554, 5938866, -38524248, -106998376, -180820272, -243455920, -293718848, -334321344, -364600832, +-387406592, -409077376, -430395456, -447260192, -459261376, -469467296, -478806176, -487763328, -499535840, -515295136, +-530793536, -542745920, -553990656, -568492096, -586156224, -605739648, -627893632, -652271296, -675657920, -695503936, +-712557632, -728850048, -745584320, -763652160, -784144512, -807592896, -833343936, -859363904, -882591616, -900595584, +-912911936, -919673856, -919725888, -911916608, -897406592, -878441088, -855408768, -827272960, -794356352, -758548160, +-721204992, -682981376, -645543808, -611403072, -581723264, -555737600, -532580768, -512435232, -495456704, -480619200, +-466320160, -451648576, -436605984, -421438304, -406230880, -391044416, -376126944, -361823616, -348162944, -334543584, +-320139872, -304671008, -288301824, -270764928, -251427920, -230474384, -209052160, -187910720, -166958256, -146492208, +-127567512, -110708688, -95519000, -81867448, -70162584, -60325500, -51804820, -44518948, -38556996, -33389076, +-28616294, -24735790, -22054120, -20000052, -18549426, -18861348, -21626770, -26554172, -34089692, -45622216, +-61571040, -81274200, -104590504, -131516192, -160885184, -191458912, -223045712, -254892352, -285142336, -313281344, +-340161952, -364766752, -384908000, -401329248, -416241376, -428463776, -435818400, -440402720, -444750304, -446371104, +-443175648, -436180224, -415763040, -357410528, -251464432, -130003288, -41952704, -4706211, 1130650, }, }, { { 4600447, -19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128, --30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344, --344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520, --273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008, --79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768, --160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160, --283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856, --510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744, --478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936, --249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976, --162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768, --614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424, --798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816, --676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488, --365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104, --192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, }, +19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128, +-30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344, +-344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520, +-273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008, +-79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768, +-160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160, +-283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856, +-510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744, +-478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936, +-249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976, +-162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768, +-614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424, +-798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816, +-676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488, +-365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104, +-192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, }, { -99621232, --286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976, -205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168, --143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716, -97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976, --33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152, --51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656, -82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112, --78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544, -36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464, --56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168, -59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440, --67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520, -64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116, --58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196, -37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155, --16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, }, +-286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976, +205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168, +-143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716, +97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976, +-33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152, +-51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656, +82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112, +-78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544, +36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464, +-56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168, +59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440, +-67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520, +64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116, +-58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196, +37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155, +-16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, }, }, { { -99621232, --286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976, -205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168, --143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716, -97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976, --33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152, --51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656, -82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112, --78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544, -36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464, --56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168, -59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440, --67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520, -64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116, --58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196, -37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155, --16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, }, +-286525856, -426905792, -479705440, -432011968, -323699328, -220398400, -155248032, -104107856, -23679228, 92591976, +205608144, 273819744, 292754112, 287597440, 276765536, 253286576, 200076224, 114409336, 14027363, -76716168, +-143684368, -188199568, -218924688, -239735952, -245462752, -228540576, -187456528, -127361888, -55034100, 22943716, +97618168, 157806768, 195323840, 208820768, 201669120, 177899696, 141368848, 96980896, 50311784, 5823976, +-33888904, -67592584, -94911264, -115949088, -130647536, -138425728, -138543840, -130454264, -113604568, -87367152, +-51758652, -8462159, 38787848, 84825064, 124388160, 153377040, 169199696, 170266464, 155651760, 125596656, +82256136, 29805462, -26240102, -80012560, -126178624, -160451920, -179634864, -181446256, -164609984, -129440112, +-78724064, -18290118, 43474196, 97401808, 135857872, 154479776, 152887408, 134421744, 104892232, 70540544, +36217848, 4746476, -22646288, -45631880, -64202244, -78178072, -86946248, -89597848, -85337240, -73968464, +-56345676, -34479996, -11038066, 11462194, 31138512, 46814068, 57956288, 64547452, 66799088, 64929168, +59168008, 49832360, 37300716, 22064320, 4896800, -13102871, -30626338, -46220292, -58353036, -65668440, +-67281736, -62858456, -52617644, -37437084, -18846316, 1262720, 20951388, 38391640, 52051244, 60915520, +64485712, 62605052, 55444268, 43579424, 27926952, 9672266, -9613211, -27947352, -43250856, -53731116, +-58120572, -55941948, -47761112, -35042640, -19684372, -3697430, 11003169, 22971632, 31496068, 36412196, +37870336, 36382132, 32725504, 27558120, 21326124, 14526653, 7638600, 853625, -5680094, -11527155, +-16320876, -19895362, -21371758, -19102940, -12946105, -5827734, -1298154, 30602, 38655, }, { 4600447, -19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128, --30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344, --344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520, --273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008, --79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768, --160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160, --283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856, --510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744, --478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936, --249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976, --162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768, --614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424, --798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816, --676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488, --365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104, --192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, }, +19346680, 44991392, 63967096, 37875168, -42050952, -119665304, -130808600, -85799488, -48747880, -42614128, +-30416958, 6164352, 28224914, -804233, -64210836, -126092720, -180239920, -237944944, -293541696, -329953344, +-344641056, -349177088, -350809696, -348528544, -341931488, -333844064, -326418592, -319338336, -309974784, -294711520, +-273317216, -251272224, -234176112, -221063040, -206330224, -186406944, -161877856, -135534672, -111140872, -92090008, +-79091288, -70537856, -65754876, -65877284, -71478456, -81757384, -96047816, -113733416, -132603896, -149208768, +-160987184, -167227776, -168843216, -168241392, -168576928, -172385488, -181468816, -197534672, -221246112, -250856160, +-283442624, -317161856, -350805408, -382150624, -408971072, -431287744, -450754144, -468265792, -483745920, -497657856, +-510922880, -523423360, -533833824, -540915136, -544164864, -543285440, -537748160, -527259328, -512605952, -495719744, +-478473312, -461465248, -444370208, -427017984, -409177248, -389593248, -366583520, -339779680, -310380096, -279799936, +-249073744, -219411632, -192223408, -168497472, -148803968, -133796824, -124318904, -121394032, -126326800, -140132976, +-162630544, -192760816, -229733504, -272853888, -320412064, -370109152, -420674880, -471803776, -522449472, -570576768, +-614814912, -655093120, -691254080, -722185856, -746924864, -765859264, -780155584, -790358784, -796305216, -798383424, +-798019392, -796342208, -793002368, -787184320, -779196160, -769785408, -758301696, -743142080, -723924800, -701610816, +-676507840, -647901184, -615899392, -582057728, -547816640, -513594336, -479704352, -447123264, -416993536, -389851488, +-365435680, -343231232, -323292384, -306035200, -290884704, -276268416, -261546336, -247164096, -232224048, -214475104, +-192652368, -163808976, -118643104, -50144816, 27531814, 80195632, 85242752, 55034636, 17487496, }, }, { { 439160, -9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736, --104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704, --333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136, --381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624, --132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744, --138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008, --306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008, --346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432, --165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470, --18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456, --126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984, --527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248, --623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392, --468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040, --229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512, --154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, }, +9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736, +-104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704, +-333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136, +-381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624, +-132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744, +-138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008, +-306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008, +-346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432, +-165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470, +-18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456, +-126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984, +-527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248, +-623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392, +-468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040, +-229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512, +-154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, }, { -71346384, --213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824, --136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312, -303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336, --188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392, --43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240, -196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428, --95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328, --101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888, -181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224, --88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488, --65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720, -151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848, --104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999, -13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428, -55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662, --28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, }, +-213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824, +-136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312, +303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336, +-188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392, +-43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240, +196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428, +-95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328, +-101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888, +181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224, +-88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488, +-65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720, +151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848, +-104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999, +13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428, +55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662, +-28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, }, }, { { -71346384, --213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824, --136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312, -303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336, --188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392, --43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240, -196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428, --95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328, --101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888, -181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224, --88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488, --65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720, -151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848, --104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999, -13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428, -55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662, --28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, }, +-213462560, -339756064, -413504960, -409455872, -352985632, -305631488, -298819136, -300228416, -264136736, -195585824, +-136284144, -100468408, -60189672, 7589207, 92245696, 172898736, 241975776, 295543136, 323312800, 321893312, +303480256, 280539744, 252025456, 212051664, 162432976, 109136728, 53380536, -7004555, -71178880, -134117336, +-188985008, -229179456, -251300688, -257305056, -251393568, -234900352, -206775824, -168413728, -125017912, -82274392, +-43759276, -11020886, 16053514, 39014948, 59700584, 79435424, 99726992, 122451664, 148089936, 174238240, +196432480, 209955712, 211052544, 198057584, 172362400, 137605376, 97203696, 52851720, 5244692, -44642428, +-95086816, -143431504, -185908736, -218344320, -237670064, -242820272, -234431664, -214183040, -184224576, -146399328, +-101692480, -50829864, 4360466, 60305636, 112264536, 155409632, 185961888, 202288128, 205284400, 197435888, +181369488, 159261680, 133054864, 104489040, 74815648, 44843752, 15293305, -13164612, -40124660, -65403224, +-88772144, -109890496, -128330936, -143368688, -153753392, -157929712, -154617216, -143216752, -123850216, -97302488, +-65005404, -28906740, 8858370, 46210092, 81095424, 111469432, 135565280, 152172304, 160555008, 160288720, +151451824, 134831376, 111693848, 83490408, 51971788, 19245748, -12685723, -42281804, -68209448, -89182848, +-104380592, -113607792, -116795728, -113810192, -104951280, -91091424, -73173896, -52182244, -29644402, -7425999, +13060996, 30902826, 45198624, 55365348, 61724584, 65044596, 65811248, 64531884, 62112208, 59181428, +55647208, 51414516, 46716360, 41342820, 34611532, 26388816, 17041894, 6484327, -5341329, -17431662, +-28704878, -38885024, -46234788, -46222976, -36266704, -20924544, -8422431, -2397666, -471910, }, { 439160, -9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736, --104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704, --333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136, --381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624, --132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744, --138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008, --306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008, --346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432, --165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470, --18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456, --126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984, --527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248, --623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392, --468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040, --229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512, --154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, }, +9365176, 29668024, 40453224, 15341623, -45351632, -109128136, -144421504, -150375392, -144258288, -131021736, +-104107856, -71233104, -57051124, -75888312, -118171192, -168489424, -221575760, -273609280, -312674144, -330016704, +-333112288, -337341760, -348790528, -362461952, -373274528, -381112320, -386730656, -389323744, -388740704, -386155136, +-381738304, -373836096, -360605440, -340908736, -313929376, -279907840, -241828128, -205013280, -174007920, -150196624, +-132822936, -121436976, -116219664, -116342072, -119497800, -123473328, -127311960, -130748472, -133538584, -135819744, +-138475120, -142795312, -150106416, -161509568, -177308064, -196745472, -218684704, -242115360, -265623328, -287307008, +-306123808, -322685728, -337959712, -351861984, -363726272, -373157504, -379437280, -380878240, -375808576, -363919008, +-346204960, -324234592, -299991648, -275821184, -253755264, -234803184, -218847904, -204974624, -191987728, -179002432, +-165625744, -151641872, -136889200, -121520728, -105938592, -90356448, -74778600, -59408524, -44675176, -30919470, +-18438294, -7765301, 328565, 4874251, 4648229, -1475321, -14002130, -33019172, -58642948, -90458456, +-126786360, -165555424, -205805712, -247382064, -289544672, -331192448, -372222272, -413219872, -453753088, -492213984, +-527374752, -558949760, -586488512, -608848128, -625194240, -635851136, -641718016, -643196032, -640171328, -633021248, +-623069824, -611607104, -598890752, -584830656, -570187520, -555927680, -541649088, -525968128, -508355008, -489191392, +-468209408, -444536096, -418368992, -391147488, -364010304, -337297728, -311460832, -287304864, -265427904, -246115040, +-229447360, -215199872, -203242144, -193907568, -187083408, -181587456, -176594016, -172417168, -168547936, -162928512, +-154181280, -140419664, -114481280, -68539624, -9762461, 36551784, 49731428, 34809636, 11406359, }, }, }; const Word32 CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 665281280, -674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520, -451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952, -1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512, -967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592, -1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968, -779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864, -547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928, -27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, }, +674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520, +451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952, +1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512, +967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592, +1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968, +779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864, +547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928, +27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, }, { 524114848, -533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057, -54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232, --266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472, -323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128, -131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632, --332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300, -10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264, -145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, }, +533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057, +54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232, +-266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472, +323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128, +131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632, +-332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300, +10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264, +145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, }, }, { { 524114848, -533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057, -54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232, --266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472, -323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128, -131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632, --332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300, -10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264, -145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, }, +533789280, 470712320, 324263040, 183661936, 95593624, 13487271, -82588464, -127956200, -79816064, 7536057, +54663124, 30402462, -71739912, -247676272, -438472672, -547349568, -541801024, -482090752, -423726432, -356343232, +-266416288, -190427040, -161387152, -155142816, -132955544, -95782600, -57178364, 214212, 98348848, 218841472, +323258016, 402958112, 474727552, 535242048, 552199104, 505210560, 414675328, 321215232, 247467968, 188448128, +131875360, 74614320, 17566416, -42997992, -109456704, -174512032, -228280736, -269658976, -302424768, -324817632, +-332062176, -325179488, -308778080, -284093824, -251596496, -215451664, -178305568, -136985840, -89327264, -39129300, +10106595, 58457188, 102657768, 135197520, 154283280, 165445360, 170970832, 168290240, 159845792, 152339264, +145684752, 135665664, 126222112, 123444880, 118667264, 95619392, 55449100, 18055506, -1458678, }, { 665281280, -674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520, -451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952, -1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512, -967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592, -1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968, -779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864, -547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928, -27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, }, +674784448, 698239808, 731240192, 748593472, 727196992, 689475904, 685777408, 708633664, 676513152, 556107520, +451947584, 493353760, 659701056, 808494336, 867047040, 900015232, 977696704, 1075521024, 1138411136, 1160941952, +1154109824, 1096802048, 976626176, 839007872, 747508480, 718602816, 727278080, 754160832, 799917248, 870264512, +967069888, 1082529280, 1192306048, 1267405184, 1298377728, 1297374848, 1278310528, 1247297664, 1207363072, 1159006592, +1100992896, 1040038144, 991227968, 961344128, 942479040, 926492096, 911659968, 892559168, 860845632, 819307968, +779264384, 743933440, 709595200, 678932864, 656769728, 638880704, 620198656, 604545664, 592851520, 575412864, +547787648, 516941728, 481964064, 430530752, 362592960, 292907104, 225806832, 155925024, 93299040, 53560928, +27193048, -3490198, -27827094, -33299418, -51461760, -118380576, -203644800, -245106800, -242138976, }, }, { { 602370240, -637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432, -347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184, -753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640, -965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632, -522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536, -383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256, -150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472, -51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, }, +637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432, +347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184, +753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640, +965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632, +522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536, +383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256, +150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472, +51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, }, { 602370240, -637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432, -347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184, -753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640, -965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632, -522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536, -383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256, -150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472, -51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, }, +637539008, 669323968, 636987136, 540635456, 483809280, 541556736, 613094208, 531643392, 322999264, 215506432, +347957856, 588924864, 718721408, 697091968, 661672448, 721040704, 843483776, 931750208, 931413056, 856077184, +753607296, 668653952, 621145664, 607285312, 618784000, 656078784, 721098688, 805003584, 887858304, 946848640, +965448000, 942007680, 891112832, 830678336, 766307520, 693250688, 613766400, 545172544, 506799712, 503085632, +522555264, 548847936, 568437824, 572668416, 560602752, 539573504, 516954080, 491754976, 459128256, 420713536, +383797216, 352052032, 324045632, 299112800, 277784000, 258055056, 237306608, 215845200, 194331696, 171894256, +150265344, 133504760, 120547384, 105984224, 90401008, 79930952, 74162808, 66552128, 57468808, 52935472, +51010788, 45456324, 40671728, 43430172, 42086384, 16999480, -28233504, -68147176, -87076168, }, }, { { 554296640, -547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000, -765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992, -384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296, -259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352, -406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848, -532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416, -340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576, -114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, }, +547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000, +765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992, +384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296, +259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352, +406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848, +532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416, +340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576, +114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, }, { 477454336, -401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208, --183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152, -345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416, --154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912, -122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422, --8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240, --36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422, -72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, }, +401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208, +-183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152, +345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416, +-154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912, +122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422, +-8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240, +-36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422, +72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, }, }, { { 477454336, -401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208, --183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152, -345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416, --154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912, -122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422, --8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240, --36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422, -72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, }, +401040416, 262195936, 104383808, -22741314, -110121352, -182601616, -243891872, -265826256, -240394688, -202544208, +-183463280, -174869600, -159462480, -144265264, -136873088, -113585240, -42030548, 75551696, 202205984, 299249152, +345080224, 335348352, 282432224, 208138944, 126522224, 40561672, -41695544, -102866080, -134796480, -147696416, +-154232272, -156779184, -154798144, -151095344, -144431696, -126498064, -91458648, -41634340, 16705812, 75270912, +122406568, 148172080, 150975072, 135045584, 105265352, 68783368, 35770636, 12797392, -663572, -7075422, +-8021389, -7206955, -8933532, -12796855, -15990163, -19165754, -23754928, -27308476, -28304908, -30581240, +-36782100, -43931072, -50539952, -59223304, -67665600, -67461048, -55589760, -35688492, -7253663, 31792422, +72493680, 101975408, 120829240, 134001368, 129902360, 94151048, 40635224, 1247151, -13009456, }, { 554296640, -547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000, -765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992, -384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296, -259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352, -406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848, -532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416, -340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576, -114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, }, +547196032, 566668864, 618661056, 679085312, 742984256, 811807872, 848410112, 818592320, 762813568, 748776000, +765459264, 744624384, 676696768, 620590016, 601593408, 582660096, 541901952, 502089728, 473425120, 434916992, +384839264, 352291456, 348175808, 352792896, 356490880, 367396864, 376819488, 360623712, 319377536, 280715296, +259372000, 245877744, 234353280, 232350752, 242504592, 258529120, 279809056, 311139776, 349029984, 382816352, +406947072, 421723360, 426924576, 423932608, 419369728, 419914112, 427815264, 444200544, 470166304, 502258848, +532944224, 556508608, 569734400, 568993536, 552990464, 526220992, 494308864, 458682112, 419633888, 379832416, +340900160, 301575424, 262233520, 225994192, 194006896, 165567776, 142686336, 127879968, 119163864, 114121576, +114892520, 121773600, 129415416, 138241040, 157090576, 180498144, 179665456, 140071232, 95798168, }, }, { { 621756672, -610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440, -727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248, -552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928, -521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920, -664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672, -797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056, -620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944, -222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, }, +610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440, +727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248, +552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928, +521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920, +664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672, +797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056, +620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944, +222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, }, { 484072864, -362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776, -160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120, --152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096, -133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232, --74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920, -32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430, -10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088, --75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, }, +362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776, +160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120, +-152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096, +133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232, +-74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920, +32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430, +10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088, +-75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, }, }, { { 484072864, -362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776, -160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120, --152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096, -133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232, --74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920, -32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430, -10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088, --75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, }, +362911328, 165609648, -41981156, -212093008, -332805216, -402363808, -400033792, -304724160, -137953808, 36216776, +160706944, 222448160, 239901840, 229993344, 195366256, 135999072, 62549756, -7023882, -63296008, -110795120, +-152567968, -176795888, -168798656, -131159712, -80323408, -26991722, 27882928, 80286360, 119317952, 137106096, +133840304, 113017232, 78420200, 35158064, -11215233, -55674588, -91772712, -112176496, -113720000, -99439232, +-74932144, -45231376, -14150307, 16697759, 47128676, 74521440, 93131000, 98641440, 90078352, 67349920, +32195612, -8400956, -45283988, -73177112, -89565104, -91423744, -79084840, -59047212, -37090264, -13511430, +10936597, 32290638, 50281720, 68347960, 83755624, 88343720, 79904648, 60663192, 27116276, -22636088, +-75426072, -114201568, -134971488, -134073848, -95666104, -22046604, 41375568, 52510808, 32166084, }, { 621756672, -610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440, -727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248, -552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928, -521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920, -664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672, -797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056, -620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944, -222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, }, +610452800, 630615552, 702445632, 792348480, 858193536, 893816000, 907361792, 886694400, 824003968, 755261440, +727917504, 733139136, 716980352, 663897280, 620523968, 620393024, 632726528, 615048448, 577073984, 555149248, +552123392, 543052416, 523071168, 510752672, 511525760, 510709184, 501455136, 494210624, 497641216, 508644928, +521307040, 531829696, 535974336, 532874432, 529774560, 535202848, 550437632, 572668928, 600793984, 632921920, +664218304, 691969728, 717544640, 740619840, 757538304, 767474688, 774215616, 780483072, 786036992, 791412672, +797712320, 802936640, 803587840, 798848320, 789148160, 773271808, 750862848, 724289856, 694559040, 659781056, +620432192, 580501888, 540989760, 498887296, 454513856, 412135392, 371802432, 329539968, 287038560, 251136944, +222513664, 196285904, 175022064, 167052224, 167232608, 153102160, 109348792, 49311592, 6205691, }, }, { { 663314752, -680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728, -740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792, -746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488, -654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368, -898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376, -1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944, -736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720, -79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, }, +680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728, +740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792, +746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488, +654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368, +898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376, +1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944, +736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720, +79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, }, { 491119840, -348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144, -322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000, --184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192, --244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496, -71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896, -94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816, --63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760, -10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, }, +348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144, +322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000, +-184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192, +-244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496, +71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896, +94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816, +-63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760, +10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, }, }, { { 491119840, -348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144, -322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000, --184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192, --244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496, -71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896, -94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816, --63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760, -10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, }, +348995616, 128621384, -97632120, -289412608, -423000064, -463336768, -380973248, -195104256, 24281598, 206642144, +322000672, 370486560, 351555424, 260226160, 107231376, -71365176, -228021424, -325345920, -347531584, -296888000, +-184866672, -31224950, 129964640, 255163472, 311949920, 293880992, 214185728, 93033288, -44268228, -166360192, +-244839984, -264906608, -226057552, -138746240, -24590836, 86406152, 166708624, 201445776, 189976064, 141800496, +71440336, -6223408, -77591272, -129388576, -151008896, -140083584, -102848896, -48852032, 10887205, 62631896, +94646048, 104201816, 95234992, 71203576, 35948876, -2226404, -34846680, -58946816, -73388640, -74912816, +-63276680, -43950400, -20984674, 5622112, 32672354, 53384832, 66130684, 72770168, 68470368, 46321760, +10834592, -26956826, -62720480, -90538984, -91584808, -56170656, -9368934, 13955422, 13662291, }, { 663314752, -680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728, -740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792, -746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488, -654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368, -898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376, -1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944, -736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720, -79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, }, +680615424, 704123904, 749817024, 838668608, 933881600, 965105984, 926342848, 883536512, 867071744, 829009728, +740681600, 661032000, 653968896, 694012480, 715598464, 713035968, 725833920, 755362368, 764999168, 750177792, +746233920, 766158272, 779788864, 761093952, 720125888, 682184128, 661349248, 657734528, 661714368, 660551488, +654196544, 660604096, 694720064, 748607424, 801209536, 839960832, 865090176, 880818880, 890421376, 895874368, +898570496, 902171328, 912473856, 930828928, 952021376, 972181952, 992491264, 1012047872, 1025152832, 1028589376, +1023516992, 1009262528, 984214848, 952265088, 919344704, 886117760, 852254656, 821971904, 796597248, 769538944, +736346880, 699329664, 656234496, 598574016, 526703104, 450481408, 372134208, 287646848, 204881744, 136896720, +79741976, 23230404, -23418310, -49200996, -74181600, -124141200, -181532704, -207284784, -203362400, }, }, { { 698450240, -695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768, -845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464, -778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648, -905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576, -988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352, -803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056, -619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712, -203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, }, +695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768, +845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464, +778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648, +905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576, +988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352, +803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056, +619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712, +203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, }, { 567408640, -524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768, -68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616, --452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256, --181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112, -296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256, -273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568, --232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976, --291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, }, +524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768, +68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616, +-452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256, +-181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112, +296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256, +273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568, +-232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976, +-291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, }, }, { { 567408640, -524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768, -68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616, --452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256, --181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112, -296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256, -273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568, --232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976, --291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, }, +524879360, 445231872, 326981216, 179955904, 55461448, 21249350, 91448984, 201343232, 259282336, 211754768, +68303400, -107528800, -233695072, -268373184, -242689280, -219989296, -229898864, -263432352, -314680992, -385375616, +-452217120, -474061312, -442161504, -392155200, -358447232, -343104000, -333307712, -320852320, -296769888, -250224256, +-181758720, -103790568, -27038430, 41594072, 93680752, 127249144, 154683792, 189131568, 229011408, 265722112, +296795136, 322010880, 337931264, 345139264, 349932992, 353043616, 348371232, 335426752, 319803264, 301012256, +273765504, 239266192, 201343776, 156256272, 100300912, 40257804, -16853452, -74278776, -133969160, -187937568, +-232004464, -272277856, -309240320, -334208576, -347784992, -359915040, -368298816, -361418272, -342292800, -321298976, +-291328160, -242526608, -189707088, -145970368, -87378424, 5882495, 92952216, 118694104, 100779800, }, { 698450240, -695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768, -845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464, -778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648, -905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576, -988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352, -803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056, -619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712, -203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, }, +695113600, 688707136, 673868544, 646702336, 610917760, 568857664, 527102560, 519145056, 586428416, 718136768, +845610880, 914316416, 924911552, 894738880, 830247232, 753590144, 704238272, 693756416, 701662912, 724094464, +778277056, 853215104, 906342784, 916561024, 898645696, 867138880, 828636608, 804123648, 816253184, 857867648, +905643776, 954590336, 1010564992, 1063627712, 1095899008, 1103429120, 1092297216, 1067622016, 1037442368, 1011192576, +988458240, 963559808, 938667776, 917664832, 896221696, 872711040, 855399104, 846239552, 834929280, 818068352, +803600704, 792021504, 776625664, 761370432, 753275008, 743880832, 723544128, 700462464, 681426624, 655573056, +619867392, 590852736, 571201152, 541938432, 502302336, 471169184, 441192992, 387073184, 319064544, 263699712, +203195440, 109921096, 14169097, -55798068, -158887488, -345028160, -519762432, -554675136, -496490176, }, }, { { 644109824, -641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672, -650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520, -691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944, -417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808, -423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960, -542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240, -600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920, -349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, }, +641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672, +650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520, +691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944, +417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808, +423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960, +542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240, +600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920, +349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, }, { 512525440, -435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792, --280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600, -216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520, --220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720, -145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600, --146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736, -157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360, --167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, }, +435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792, +-280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600, +216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520, +-220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720, +145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600, +-146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736, +157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360, +-167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, }, }, { { 512525440, -435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792, --280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600, -216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520, --220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720, -145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600, --146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736, -157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360, --167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, }, +435640128, 282957824, 84049288, -98370320, -209789824, -249021136, -262860048, -292943072, -332088480, -336941792, +-280376544, -182095344, -83988624, -5475547, 65635152, 143603840, 220762928, 274739392, 289304160, 265117600, +216662848, 160822896, 104457360, 42877732, -27904402, -101418672, -166072432, -214420880, -242443920, -245357520, +-220635696, -172637824, -110469240, -43466144, 20132660, 74126840, 115731112, 143894832, 157248416, 156342720, +145316992, 127926136, 104625400, 75957032, 44605920, 11819750, -23396834, -59791312, -93554592, -122836600, +-146753664, -160679552, -159128544, -142168784, -113127824, -73081016, -23768350, 28488518, 77793672, 122219736, +157799248, 176779248, 176332560, 160420784, 130510096, 85142896, 29638496, -26396870, -80311592, -131147360, +-167546672, -178184240, -167493520, -141860080, -92922152, -21397528, 37648608, 50324668, 34608308, }, { 644109824, -641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672, -650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520, -691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944, -417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808, -423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960, -542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240, -600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920, -349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, }, +641661120, 654817664, 701214080, 765066304, 793017920, 750046272, 672282112, 629564352, 638276160, 653404672, +650713344, 664768064, 724066496, 796885568, 836247872, 841609600, 838631552, 827856576, 793175744, 740571520, +691951424, 653267776, 616578496, 581786624, 554008384, 530454752, 506390080, 483272416, 461399744, 437886944, +417039168, 407054464, 404265952, 397127712, 385007840, 376674016, 374368128, 375742528, 384455936, 402931808, +423579872, 440827392, 460186432, 484475008, 506007808, 521276416, 536031776, 549570624, 553172480, 547704960, +542988032, 540130816, 534797504, 532996864, 542406592, 556516096, 567273344, 579921536, 596790016, 605442240, +600309184, 592648576, 584888128, 564139648, 531910240, 505569728, 483578432, 448984064, 408078272, 379293920, +349889504, 297504320, 240236304, 200201840, 139145664, 12122545, -134532864, -211733840, -217447744, }, }, { { 587978880, -583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992, -551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952, -566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944, -319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064, -221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616, -330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416, -335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008, -47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, }, +583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992, +551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952, +566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944, +319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064, +221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616, +330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416, +335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008, +47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, }, { 495951136, -455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864, --269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692, -43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080, -210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104, --189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656, --45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920, -216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168, --209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, }, +455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864, +-269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692, +43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080, +210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104, +-189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656, +-45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920, +216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168, +-209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, }, }, { { 495951136, -455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864, --269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692, -43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080, -210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104, --189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656, --45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920, -216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168, --209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, }, +455682080, 361104736, 218659472, 74911208, -16711718, -51278152, -77336256, -135958256, -210931216, -258044864, +-269439936, -279133696, -308019488, -335871264, -335299520, -304617856, -254157376, -185496960, -102038760, -20926692, +43942884, 97866200, 150721136, 199086768, 234797280, 258988144, 276016064, 283122112, 274994944, 250520080, +210138256, 155355952, 93582504, 34347392, -20257750, -72878616, -120474368, -155971744, -177703728, -188535104, +-189547648, -182415856, -172789216, -164300208, -154903904, -143742352, -133717368, -123639760, -106822280, -80108656, +-45536852, -3321084, 46471008, 96844536, 139191296, 172961552, 200751600, 219641936, 226778576, 225363920, +216120064, 192853696, 154202208, 107838576, 57583164, 1152662, -56183540, -103766944, -142620832, -180127168, +-209971280, -220987872, -219427728, -213443232, -185617216, -118235080, -37197100, 11489038, 22216792, }, { 587978880, -583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992, -551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952, -566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944, -319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064, -221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616, -330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416, -335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008, -47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, }, +583932480, 595629312, 635400704, 685938496, 712024000, 695631680, 652895680, 612192832, 583900288, 562476992, +551322432, 565862464, 608285504, 656774592, 688751168, 701092224, 698698304, 678709504, 640098816, 597021952, +566447680, 548555904, 531494688, 509422848, 484884096, 459217888, 431434848, 403011808, 375859552, 348526944, +319307200, 289268736, 259346768, 229363600, 201952576, 182509808, 173997712, 175682960, 186022016, 202622064, +221453344, 240029072, 258667088, 276221696, 289274112, 297622976, 304864832, 312131392, 317628416, 322647616, +330756512, 341403744, 351437856, 361045152, 371032032, 377771360, 377995776, 373800128, 366717184, 353812416, +335176576, 316256160, 297876384, 274586912, 246141888, 217887984, 188342368, 151595696, 111782968, 77966008, +47567300, 14498199, -13151190, -28034862, -46559592, -86153288, -128819488, -143185616, -134899024, }, }, }; const Word32 CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 12014097, -35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552, -98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584, --51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152, -237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080, --460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032, --577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560, --602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000, --465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, }, +35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552, +98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584, +-51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152, +237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080, +-460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032, +-577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560, +-602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000, +-465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, }, { -43315284, --167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336, --226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472, -298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160, -394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248, --352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792, --41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312, -277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942, -14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, }, +-167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336, +-226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472, +298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160, +394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248, +-352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792, +-41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312, +277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942, +14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, }, }, { { -43315284, --167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336, --226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472, -298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160, -394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248, --352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792, --41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312, -277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942, -14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, }, +-167275552, -325720672, -424729856, -429919232, -407980544, -395947680, -346303200, -239683328, -149724176, -148736336, +-226306656, -333395232, -430414784, -464289728, -380538944, -199746048, -17964238, 102305048, 183813328, 256357472, +298020256, 290804704, 271931552, 283791040, 317931200, 348516736, 381127872, 427289120, 462315104, 450696160, +394719296, 322191808, 238335248, 123655328, -22405234, -163422432, -259725264, -305492960, -324537920, -338921248, +-352351072, -360596320, -363949632, -362820032, -350412416, -320028736, -275247808, -224321840, -168880800, -106778792, +-41586020, 19834696, 75412112, 125746976, 168545792, 202392288, 230801344, 255875904, 273531968, 280169312, +277151008, 264613472, 239632336, 204636400, 168342320, 135009072, 102396856, 71785008, 48446156, 31304942, +14647986, -258772, -9262634, -19164144, -40214316, -64947420, -72200008, -53375168, -18999324, }, { 12014097, -35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552, -98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584, --51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152, -237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080, --460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032, --577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560, --602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000, --465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, }, +35897336, 53805204, 50312856, 18828062, -13066364, -6854768, 22745610, 12735115, -41816876, -39875552, +98654864, 297323936, 401317440, 372772544, 315583456, 308144576, 310529888, 259613600, 163684960, 59336584, +-51169704, -165799696, -239111024, -227276784, -147407568, -53171696, 26007638, 93542240, 155563712, 207501152, +237285664, 227532864, 167055968, 67771360, -41654204, -141005920, -226938560, -301322560, -365197856, -419542080, +-460432832, -479936288, -480030240, -475801312, -478633312, -488226656, -504062208, -528410912, -555006400, -571804032, +-577254336, -578772608, -577470144, -570372736, -562345408, -559677184, -559475840, -559533312, -566981312, -584370560, +-602642944, -618692736, -640225536, -664323008, -674664192, -666645504, -649141376, -619779904, -569934080, -512024000, +-465699552, -423834368, -373262176, -334423328, -327638880, -316269056, -247134560, -134972576, -38042136, }, }, { { 11529840, -13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976, -321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096, --209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296, --197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632, --328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528, --476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840, --361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376, --173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, }, +13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976, +321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096, +-209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296, +-197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632, +-328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528, +-476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840, +-361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376, +-173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, }, { 11529840, -13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976, -321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096, --209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296, --197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632, --328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528, --476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840, --361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376, --173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, }, +13347148, -36569500, -113121920, -129439576, -50867444, 14232448, -53408992, -177612464, -148705184, 85114976, +321205568, 356627232, 230623104, 133642736, 154121136, 209440320, 188600064, 75365400, -67306968, -171972096, +-209020496, -188093792, -138411232, -83479128, -30877056, 15938087, 45047228, 40231496, -7201587, -92407296, +-197360720, -297320736, -374595776, -428572768, -467873344, -492833536, -492368064, -460149376, -407823264, -358125632, +-328469440, -323982272, -340943616, -370154784, -399694496, -422151808, -439693504, -457322752, -472918304, -479750528, +-476592128, -468317856, -458178528, -446379712, -434486400, -424508128, -415263744, -404740000, -393061440, -379423840, +-361430624, -340799200, -322628288, -306349824, -286351904, -263314784, -243854288, -227870560, -209237920, -189143376, +-173876912, -160802496, -144108496, -131797512, -135355888, -143668800, -130320584, -87279640, -29750164, }, }, { { 6737730, -36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728, --209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536, --325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488, --187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520, -16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264, --37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968, --328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320, --103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, }, +36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728, +-209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536, +-325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488, +-187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520, +16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264, +-37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968, +-328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320, +-103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, }, { -91367912, --257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556, -50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072, -75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584, --61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736, -127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608, --31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489, --6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328, -120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, }, +-257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556, +50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072, +75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584, +-61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736, +127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608, +-31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489, +-6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328, +120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, }, }, { { -91367912, --257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556, -50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072, -75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584, --61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736, -127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608, --31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489, --6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328, -120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, }, +-257344784, -368731008, -399863072, -368732064, -318823488, -264597360, -187626176, -89714888, -9023726, 30760556, +50806240, 78116864, 109169480, 134775008, 170659456, 232808160, 299963744, 327622784, 290989408, 198465072, +75594112, -48091284, -147514416, -213435184, -251069824, -262746768, -243405456, -197352144, -143928656, -98723584, +-61254824, -26169236, 6638946, 38232188, 74120400, 115100832, 152906208, 177822384, 183768768, 166826736, +127559992, 74813496, 20892868, -25723632, -59548648, -75917304, -75299904, -64973192, -52216064, -40167608, +-31237298, -27542552, -26933204, -25319906, -22686018, -20841328, -18178450, -13306346, -9438728, -8532489, +-6724308, -1197222, 6068789, 16056735, 34274376, 60207924, 85978264, 107714024, 125535992, 132588328, +120357328, 93827320, 63501628, 26500486, -22081500, -64213520, -72819560, -48505752, -15430207, }, { 6737730, -36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728, --209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536, --325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488, --187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520, -16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264, --37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968, --328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320, --103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, }, +36310728, 82552496, 112160384, 114129096, 97516160, 47489452, -47207596, -139446848, -172956720, -172927728, +-209062368, -281033120, -323487264, -317248832, -310710272, -329580224, -345570912, -342311584, -339921440, -342769536, +-325651392, -283917728, -245152432, -223469840, -208063248, -199347152, -211438016, -235558560, -241466288, -219431488, +-187860800, -158804272, -126097016, -87488480, -51480552, -21284248, 6805376, 29567628, 38165616, 31655520, +16961900, -736587, -18033494, -29193430, -30501248, -24554864, -15843061, -7511361, -4630512, -13749264, +-37041944, -71893456, -115411136, -163850848, -210135568, -248258768, -278091072, -301507232, -317690144, -326059968, +-328749696, -326538848, -317392704, -301186208, -280315328, -255096896, -224872144, -192732896, -162321840, -132668320, +-103223632, -78363824, -58980100, -39456252, -23711440, -29182156, -56074556, -68051072, -31855772, }, }, { { 8164196, -44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656, --174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488, --151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898, --5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576, -93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496, --112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296, --404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168, --312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, }, +44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656, +-174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488, +-151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898, +-5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576, +93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496, +-112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296, +-404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168, +-312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, }, { -121575488, --327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888, -263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160, --88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676, --23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964, -68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072, --100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568, -68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584, --114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, }, +-327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888, +263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160, +-88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676, +-23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964, +68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072, +-100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568, +68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584, +-114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, }, }, { { -121575488, --327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888, -263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160, --88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676, --23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964, -68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072, --100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568, -68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584, --114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, }, +-327745728, -439912576, -444363744, -368528608, -245493344, -86965032, 96915936, 264271488, 355673216, 345737888, +263669648, 159173104, 61461520, -25578140, -102469864, -160386960, -187825360, -184911760, -164087072, -133838160, +-88987968, -24737402, 46355584, 102826888, 135619504, 149487952, 146968416, 124120800, 81604912, 28876676, +-23648090, -69442640, -103766944, -123045984, -125989104, -112232328, -82238424, -40732932, 3103114, 40929964, +68689408, 85459112, 92190400, 90564752, 80275624, 59148680, 27699318, -9310952, -46522548, -79008072, +-100086160, -104067592, -91500520, -67148056, -34903052, 443992, 30932354, 51430084, 63724968, 69987568, +68585256, 60078540, 48424144, 32638530, 7427609, -25753160, -59433756, -90916944, -118414936, -130138584, +-114544096, -76610408, -26872536, 33355790, 92639224, 114539264, 78836272, 23021024, -652298, }, { 8164196, -44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656, --174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488, --151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898, --5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576, -93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496, --112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296, --404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168, --312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, }, +44547400, 107173392, 151858768, 141665744, 88392040, 21066814, -54681376, -136974560, -194774624, -198866656, +-174685984, -177014928, -211105152, -226307200, -197914240, -166187312, -171183968, -193077040, -191026192, -166961488, +-151375584, -148994032, -138841264, -116053240, -97335232, -88876296, -78059416, -57178900, -33640332, -15949898, +-5432597, -1035624, 192737, 5810017, 21478594, 43743168, 65269544, 82739864, 94780800, 98439576, +93017184, 81910928, 66963908, 46561740, 21537114, -3291019, -25325274, -46266460, -67437432, -88755496, +-112122272, -140211360, -172351136, -206041936, -240635744, -275572608, -308160160, -336930528, -363343488, -387111296, +-404877440, -416117376, -424204256, -429434464, -428134144, -420355424, -410097440, -396474336, -374188288, -344111168, +-312845408, -280789920, -243339424, -206263664, -185131344, -182077088, -173855984, -131779264, -49716932, }, }, { { 23554674, -63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536, --203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104, --38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412, -20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094, --18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072, --283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720, --590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168, --568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, }, +63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536, +-203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104, +-38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412, +20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094, +-18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072, +-283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720, +-590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168, +-568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, }, { -134445904, --354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120, -208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120, -285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696, --120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760, --163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704, -58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613, -31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312, --91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, }, +-354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120, +208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120, +285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696, +-120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760, +-163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704, +58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613, +31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312, +-91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, }, }, { { -134445904, --354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120, -208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120, -285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696, --120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760, --163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704, -58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613, -31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312, --91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, }, +-354867904, -462737632, -454919712, -356354496, -184022704, 40757628, 262201840, 404614912, 426365152, 345501120, +208006336, 46817828, -119911728, -266756656, -356998752, -362689600, -282963712, -143316624, 19385334, 171397120, +285301248, 336403328, 307668384, 204379248, 58105540, -90248536, -209021568, -277893504, -283894112, -226059696, +-120651000, 5003100, 122632592, 206948160, 238739520, 212521424, 140400336, 45597520, -47734804, -120938760, +-163346192, -171559248, -146704816, -94255208, -26338886, 40620192, 93026848, 122830160, 125343792, 100967704, +58784680, 11866995, -31174484, -65726960, -86230592, -88996552, -77031312, -55747064, -27654220, 3765613, +31211528, 50083076, 61416960, 64772940, 56640420, 38346004, 15450071, -11638825, -44530756, -75189312, +-91152624, -89874872, -73525008, -37754372, 13605383, 52383568, 52429740, 26051124, 5407364, }, { 23554674, -63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536, --203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104, --38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412, -20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094, --18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072, --283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720, --590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168, --568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, }, +63680944, 100486128, 143425072, 160396624, 105198784, -958851, -80830208, -108001784, -133792528, -184129536, +-203911632, -148618224, -66377108, -29700236, -34437048, -29727616, -10700374, -13250511, -38631084, -49996104, +-38671884, -37946572, -66779764, -102261560, -114666496, -99396280, -69727720, -40418328, -20343112, -5313412, +20069846, 61832496, 103414760, 122720104, 115239344, 92404072, 65606700, 39885752, 16847546, -2928094, +-18153216, -27101244, -32216550, -40784472, -57119844, -79209936, -106136696, -141351136, -185442736, -233775072, +-283348672, -333599776, -380434784, -418755008, -449614368, -476425696, -498366528, -515928640, -535856224, -562014720, +-590205248, -618661568, -651252352, -684484672, -706655808, -714453824, -713151936, -699310336, -664759488, -616559168, +-568175872, -515411648, -449946688, -387446304, -345378720, -302782304, -225644704, -124012888, -36187248, }, }, { { -4428648, --12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184, -263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448, -164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224, -103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848, --294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864, --403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232, --551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096, --687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, }, +-12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184, +263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448, +164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224, +103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848, +-294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864, +-403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232, +-551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096, +-687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, }, { -69350840, --199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104, --534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768, --141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816, -396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872, -192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408, --266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520, --339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000, -137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, }, +-199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104, +-534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768, +-141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816, +396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872, +192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408, +-266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520, +-339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000, +137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, }, }, { { -69350840, --199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104, --534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768, --141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816, -396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872, -192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408, --266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520, --339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000, -137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, }, +-199906576, -311887648, -392731264, -410866784, -342573568, -223211056, -140879216, -163624832, -284638208, -435727104, +-534943008, -530843456, -435152128, -318364448, -249764704, -238453360, -247804576, -252108672, -246991216, -217418768, +-141864384, -33516314, 60608968, 112287088, 136834976, 161198720, 195325984, 239988816, 295499648, 353162816, +396481312, 416609152, 415039328, 394495968, 361008640, 328777600, 307674272, 290885792, 266287968, 232155872, +192372656, 147222896, 98384280, 51841864, 8317204, -38079180, -87672632, -134203232, -177202304, -221665408, +-266239648, -305633632, -341292064, -375708704, -402299392, -414610912, -417046144, -413983840, -400061184, -372735520, +-339849472, -304759072, -261169984, -210188720, -162091536, -116283016, -62799400, -5180268, 44332116, 89105000, +137649408, 177868560, 197069200, 212243328, 236309632, 234228192, 169281840, 75060456, 15222438, }, { -4428648, --12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184, -263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448, -164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224, -103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848, --294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864, --403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232, --551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096, --687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, }, +-12817793, -22537304, -33988760, -39535172, -31816044, -6058052, 52388936, 153264304, 261093216, 307425184, +263993392, 169773072, 73569032, -6526203, -56706452, -55943024, -11604465, 39944268, 82797304, 127639448, +164261568, 159431328, 109619912, 49804976, 6515466, -16895864, -14101451, 20765094, 67684392, 96716224, +103307920, 98653248, 79120816, 33847028, -31095026, -99142344, -160865312, -211477216, -247033632, -271942848, +-294957952, -315941568, -330808032, -343203328, -356247136, -364157920, -365933376, -371765920, -384912288, -396248864, +-403550304, -414054720, -426279808, -433807808, -443296448, -463264832, -485040864, -499604032, -515666656, -537647232, +-551704640, -555206144, -566512640, -588050304, -601189632, -608905024, -632589632, -662465984, -671137472, -670804096, +-687241472, -695903872, -667400896, -641328832, -648485312, -605638144, -424692256, -185103968, -37003292, }, }, { { 4335233, -20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128, --15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688, --313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072, --229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420, --18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784, --78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112, --183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640, --380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, }, +20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128, +-15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688, +-313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072, +-229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420, +-18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784, +-78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112, +-183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640, +-380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, }, { -99345816, --286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800, -205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984, --145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782, -95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657, --36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288, --57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648, -75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360, --93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, }, +-286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800, +205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984, +-145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782, +95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657, +-36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288, +-57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648, +75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360, +-93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, }, }, { { -99345816, --286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800, -205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984, --145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782, -95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657, --36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288, --57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648, -75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360, --93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, }, +-286369632, -427405632, -480084992, -431886880, -323924288, -221190816, -155707056, -104193760, -24307368, 91562800, +205071264, 273453600, 291721152, 286386816, 276125600, 252572000, 198656192, 113060720, 13233868, -77841984, +-145458192, -189659312, -219943120, -241321872, -247546880, -230110384, -188789040, -129440112, -57381836, 21233782, +95871184, 155221728, 192750080, 206907360, 199403520, 174810544, 138590000, 94764160, 47423956, 2244657, +-36883568, -70249560, -98521184, -120003536, -133912248, -141698480, -142972480, -134980624, -117253144, -91475288, +-57106424, -13491029, 34559992, 79605608, 118001544, 147751168, 164080096, 163572752, 148051280, 119160648, +75744432, 21119428, -35354560, -87692496, -134928016, -171976928, -190841504, -191279056, -177239872, -145453360, +-93279176, -32515050, 22766548, 72799696, 114743272, 124032752, 85572928, 30638150, 3125126, }, { 4335233, -20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128, --15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688, --313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072, --229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420, --18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784, --78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112, --183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640, --380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, }, +20616380, 49456012, 69235944, 42754788, -34925064, -109610248, -120600000, -75574248, -35679368, -27114128, +-15243913, 21977348, 47280072, 20015622, -43954696, -104432664, -155194352, -211883088, -267991456, -302190688, +-313634624, -317882336, -319672256, -314427584, -305008192, -297233216, -289331008, -278697216, -267171664, -252595072, +-229863968, -203925584, -185493200, -173132816, -156063008, -132223792, -107246944, -81357952, -53597972, -30962420, +-18345952, -9557376, -471373, 2304250, -4316442, -13293461, -22566296, -38360500, -58558120, -72458784, +-78857208, -84461608, -87244208, -82279760, -77346992, -81921672, -91409792, -101298416, -120460408, -152264112, +-183732256, -209425296, -240028544, -274892416, -298074496, -310640480, -329773504, -351942496, -359755040, -362668640, +-380955552, -399289696, -394886816, -392853664, -420282944, -427300928, -342532768, -189912720, -54082764, }, }, { { 485331, -10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352, --95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392, --315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024, --357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968, --99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064, --94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064, --254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784, --284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, }, +10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352, +-95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392, +-315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024, +-357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968, +-99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064, +-94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064, +-254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784, +-284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, }, { -70953936, --213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328, --137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840, -300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088, --192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528, --49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856, -187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968, --106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872, --124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, }, +-213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328, +-137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840, +300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088, +-192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528, +-49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856, +187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968, +-106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872, +-124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, }, }, { { -70953936, --213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328, --137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840, -300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088, --192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528, --49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856, -187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968, --106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872, --124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, }, +-213264448, -340538816, -414134176, -409366752, -353428032, -306926432, -299649120, -300532288, -265251808, -197311328, +-137314400, -101265128, -61981748, 5509370, 90977072, 171506096, 239528720, 293170720, 321731168, 319811840, +300423296, 277909088, 250022928, 209204640, 158823600, 106245144, 50823420, -10669773, -75280040, -137317088, +-192245952, -233691312, -255845296, -260910144, -255517264, -240265840, -211742960, -172575008, -130165424, -88486528, +-49173080, -15943455, 9725417, 31963684, 53752588, 73487424, 92061016, 114548392, 141434880, 166937856, +187263264, 201139232, 203403744, 188994672, 161490768, 127726424, 88114472, 41495828, -7604240, -55883968, +-106299368, -157816432, -201166064, -231501424, -252095248, -261367552, -252826464, -230248368, -203759696, -171087872, +-124413928, -71516576, -24179056, 25768730, 85896128, 128984848, 119969176, 69876432, 20000588, }, { 485331, -10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352, --95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392, --315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024, --357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968, --99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064, --94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064, --254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784, --284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, }, +10242960, 31972274, 43328168, 18358838, -41247792, -103692320, -138647984, -144314128, -136896720, -122505352, +-95425584, -62041340, -46414100, -64334316, -106537200, -156071600, -207659520, -259043968, -298011136, -314279392, +-315926528, -319767840, -330993792, -343319296, -352833184, -360500768, -365669760, -366703776, -365058784, -362441024, +-357266112, -347681376, -333688352, -313987328, -285891808, -250179696, -211662432, -174741824, -142250928, -116871968, +-99368360, -87635048, -80598280, -79409648, -82679192, -85931560, -87700544, -90206128, -93239984, -94304064, +-94775432, -98646808, -106169448, -115775672, -129464272, -149003696, -170912848, -191925440, -213642944, -236010064, +-254295344, -267836848, -281970496, -297131200, -307629728, -313544960, -319844608, -323095360, -315331136, -299738784, +-284300000, -264724608, -235417888, -208847072, -196258528, -178760304, -131210712, -66350264, -17217988, }, }, }; const Word32 CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 523696096, -442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864, --239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800, -372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160, --433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704, --194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135, -5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624, -128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880, -196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056, -254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184, -290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944, -291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424, -311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688, -342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864, -353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536, -355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872, -375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408, -382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600, -384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120, -386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856, -400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408, -414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592, -408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000, -379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504, -461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, }, +442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864, +-239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800, +372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160, +-433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704, +-194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135, +5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624, +128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880, +196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056, +254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184, +290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944, +291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424, +311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688, +342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864, +353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536, +355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872, +375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408, +382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600, +384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120, +386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856, +400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408, +414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592, +408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000, +379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504, +461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, }, { 523696096, -442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864, --239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800, -372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160, --433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704, --194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135, -5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624, -128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880, -196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056, -254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184, -290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944, -291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424, -311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688, -342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864, -353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536, -355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872, -375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408, -382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600, -384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120, -386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856, -400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408, -414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592, -408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000, -379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504, -461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, }, +442117504, 310699008, 167178384, 38328824, -62973884, -142701904, -218207424, -288233120, -324050464, -305476864, +-239455696, -124559960, 52899500, 239470736, 289440000, 117837256, -137072800, -214231360, -22201760, 253544800, +372249120, 286295008, 117738472, -31679678, -156358816, -271503680, -359748064, -405781536, -424572000, -434228160, +-433325696, -417425728, -393916672, -370626688, -346321472, -318988288, -291659424, -266480704, -241915648, -217410704, +-194249024, -171965120, -149140592, -126572152, -105665320, -85652384, -65502008, -46165528, -28507308, -11534135, +5517959, 21835614, 36923296, 51426328, 65420940, 78127600, 89553824, 100435664, 110730160, 119946624, +128456568, 136897792, 144993808, 152274304, 159110816, 165962368, 172539568, 178568096, 184424816, 190402880, +196267664, 201906416, 207601008, 213461488, 219304784, 225092800, 230917840, 236754704, 242604992, 248525056, +254273872, 259479376, 264267184, 269042656, 273646848, 277524672, 280694912, 283720704, 286716992, 289173184, +290755872, 291661024, 292211328, 292578528, 292768608, 292590368, 291897792, 291028608, 290619488, 290858944, +291348032, 291775392, 292309024, 293284512, 294904256, 297195616, 299932608, 302707136, 305358752, 308171424, +311448480, 315120128, 318904000, 322573504, 325947744, 328940800, 331715360, 334517824, 337346048, 339990688, +342338944, 344415040, 346238240, 347855296, 349375200, 350801664, 351969888, 352762848, 353224544, 353432864, +353450560, 353402272, 353409760, 353459168, 353489216, 353525216, 353615936, 353763584, 354041664, 354629536, +355629728, 356984256, 358612576, 360484672, 362536576, 364679776, 366888448, 369164256, 371435200, 373599872, +375592736, 377362272, 378847264, 380034272, 380948576, 381599776, 382006752, 382226848, 382302560, 382249408, +382125920, 382023904, 381983104, 382034656, 382263360, 382681600, 383146528, 383545952, 383915328, 384261600, +384489216, 384601440, 384703968, 384776992, 384730816, 384668544, 384751776, 384924096, 385130240, 385565120, +386347872, 387285248, 388299936, 389614208, 391214080, 392766176, 394279616, 396044288, 397870752, 399357856, +400790240, 402575872, 404207968, 405212448, 406370464, 408240928, 409671712, 409968576, 410793760, 413089408, +414437504, 413311680, 413165120, 416964544, 420169120, 415984224, 406336640, 400335520, 402015904, 406590592, +408728960, 407087744, 400552416, 388721920, 377990944, 378296960, 389718368, 399499616, 397218976, 387056000, +379926368, 378810752, 378725920, 378463936, 384824224, 403541184, 430237088, 453206560, 464204896, 464701504, +461558112, 458781952, 455806080, 452544064, 451409664, 452445280, 450857216, 443671200, 436101856, }, }, { { 39313448, -162039984, 354059392, 513073024, 544220672, 426079008, 200846096, -76480480, -341753760, -517496864, -570909632, --538810624, -426258848, -152656560, 268456928, 556916608, 392621760, -137937712, -524111648, -381302368, 122664800, -517052864, 571298304, 423385536, 267364400, 134421200, -10704132, -142540304, -220866016, -263521472, -306872192, --348453920, -370534880, -379185472, -388552800, -396056640, -394882528, -389052640, -382683744, -371897472, -354961344, --336135936, -316509568, -293179840, -267362784, -242905632, -218939184, -192737200, -166288784, -142837728, -121205048, --99199784, -77883864, -58247808, -38609608, -18247168, 1144609, 19156628, 37176164, 54835460, 70412232, -84282288, 97901632, 110576616, 120906552, 129687608, 138192720, 145665968, 151166736, 155605584, 159884448, -163383248, 165773392, 168035760, 170768432, 173590768, 176530672, 180116432, 184315840, 188937760, 194341904, -200491760, 206520816, 212239568, 218499488, 225355856, 231702208, 237215344, 242769264, 248687728, 254468752, -260238512, 266707808, 273941056, 281680064, 290293632, 300081856, 310452576, 320862496, 331534976, 342404448, -352558304, 361381760, 369063328, 375619040, 380618944, 383952896, 385725632, 385646720, 383630784, 380563104, -377491648, 374619936, 371822848, 369278592, 366996352, 364715744, 362746496, 361908992, 362372288, 363497056, -364780704, 365996160, 366721472, 366764960, 366680672, 366982400, 367400096, 367574048, 367722208, 368027168, -368227424, 368258560, 368442688, 368780928, 368942528, 368980096, 369208288, 369538976, 369727968, 369950752, -370432864, 370996064, 371569984, 372518624, 374047104, 375963712, 378274944, 381220224, 384661024, 388236576, -392007584, 396189792, 400559936, 404847904, 409238432, 413860896, 418399616, 422691904, 426985248, 431279680, -435233184, 438858688, 442451968, 445902976, 448900320, 451546560, 454001120, 456011712, 457482752, 458817920, -460182656, 461281088, 462164256, 463233696, 464334272, 464945792, 465118656, 465174496, 464947392, 464355744, -463920896, 463844128, 463656736, 463389920, 463649760, 464247296, 464458848, 464531328, 465066560, 465613632, -465777920, 466290112, 467196864, 467418080, 467498592, 469054464, 470692448, 470029952, 469692256, 473230240, -476283424, 473541632, 472350304, 482087520, 491237952, 478718144, 450771840, 438733056, 452943488, 469665408, -474604096, 484207104, 505161184, 508774304, 474142368, 428292000, 412397920, 428558816, 447011072, 448439680, -436165216, 422568416, 419888896, 424843680, 401945600, 313745216, 185358448, 103257456, 121463824, 197578704, -251416656, 259959344, 258984384, 271355488, 275937152, 245777360, 185467968, 123581776, 86443736, }, +162039984, 354059392, 513073024, 544220672, 426079008, 200846096, -76480480, -341753760, -517496864, -570909632, +-538810624, -426258848, -152656560, 268456928, 556916608, 392621760, -137937712, -524111648, -381302368, 122664800, +517052864, 571298304, 423385536, 267364400, 134421200, -10704132, -142540304, -220866016, -263521472, -306872192, +-348453920, -370534880, -379185472, -388552800, -396056640, -394882528, -389052640, -382683744, -371897472, -354961344, +-336135936, -316509568, -293179840, -267362784, -242905632, -218939184, -192737200, -166288784, -142837728, -121205048, +-99199784, -77883864, -58247808, -38609608, -18247168, 1144609, 19156628, 37176164, 54835460, 70412232, +84282288, 97901632, 110576616, 120906552, 129687608, 138192720, 145665968, 151166736, 155605584, 159884448, +163383248, 165773392, 168035760, 170768432, 173590768, 176530672, 180116432, 184315840, 188937760, 194341904, +200491760, 206520816, 212239568, 218499488, 225355856, 231702208, 237215344, 242769264, 248687728, 254468752, +260238512, 266707808, 273941056, 281680064, 290293632, 300081856, 310452576, 320862496, 331534976, 342404448, +352558304, 361381760, 369063328, 375619040, 380618944, 383952896, 385725632, 385646720, 383630784, 380563104, +377491648, 374619936, 371822848, 369278592, 366996352, 364715744, 362746496, 361908992, 362372288, 363497056, +364780704, 365996160, 366721472, 366764960, 366680672, 366982400, 367400096, 367574048, 367722208, 368027168, +368227424, 368258560, 368442688, 368780928, 368942528, 368980096, 369208288, 369538976, 369727968, 369950752, +370432864, 370996064, 371569984, 372518624, 374047104, 375963712, 378274944, 381220224, 384661024, 388236576, +392007584, 396189792, 400559936, 404847904, 409238432, 413860896, 418399616, 422691904, 426985248, 431279680, +435233184, 438858688, 442451968, 445902976, 448900320, 451546560, 454001120, 456011712, 457482752, 458817920, +460182656, 461281088, 462164256, 463233696, 464334272, 464945792, 465118656, 465174496, 464947392, 464355744, +463920896, 463844128, 463656736, 463389920, 463649760, 464247296, 464458848, 464531328, 465066560, 465613632, +465777920, 466290112, 467196864, 467418080, 467498592, 469054464, 470692448, 470029952, 469692256, 473230240, +476283424, 473541632, 472350304, 482087520, 491237952, 478718144, 450771840, 438733056, 452943488, 469665408, +474604096, 484207104, 505161184, 508774304, 474142368, 428292000, 412397920, 428558816, 447011072, 448439680, +436165216, 422568416, 419888896, 424843680, 401945600, 313745216, 185358448, 103257456, 121463824, 197578704, +251416656, 259959344, 258984384, 271355488, 275937152, 245777360, 185467968, 123581776, 86443736, }, { -39313448, --162039984, -354059392, -513073024, -544220672, -426079008, -200846096, 76480480, 341753760, 517496864, 570909632, -538810624, 426258848, 152656560, -268456928, -556916608, -392621760, 137937712, 524111648, 381302368, -122664800, --517052864, -571298304, -423385536, -267364400, -134421200, 10704132, 142540304, 220866016, 263521472, 306872192, -348453920, 370534880, 379185472, 388552800, 396056640, 394882528, 389052640, 382683744, 371897472, 354961344, -336135936, 316509568, 293179840, 267362784, 242905632, 218939184, 192737200, 166288784, 142837728, 121205048, -99199784, 77883864, 58247808, 38609608, 18247168, -1144609, -19156628, -37176164, -54835460, -70412232, --84282288, -97901632, -110576616, -120906552, -129687608, -138192720, -145665968, -151166736, -155605584, -159884448, --163383248, -165773392, -168035760, -170768432, -173590768, -176530672, -180116432, -184315840, -188937760, -194341904, --200491760, -206520816, -212239568, -218499488, -225355856, -231702208, -237215344, -242769264, -248687728, -254468752, --260238512, -266707808, -273941056, -281680064, -290293632, -300081856, -310452576, -320862496, -331534976, -342404448, --352558304, -361381760, -369063328, -375619040, -380618944, -383952896, -385725632, -385646720, -383630784, -380563104, --377491648, -374619936, -371822848, -369278592, -366996352, -364715744, -362746496, -361908992, -362372288, -363497056, --364780704, -365996160, -366721472, -366764960, -366680672, -366982400, -367400096, -367574048, -367722208, -368027168, --368227424, -368258560, -368442688, -368780928, -368942528, -368980096, -369208288, -369538976, -369727968, -369950752, --370432864, -370996064, -371569984, -372518624, -374047104, -375963712, -378274944, -381220224, -384661024, -388236576, --392007584, -396189792, -400559936, -404847904, -409238432, -413860896, -418399616, -422691904, -426985248, -431279680, --435233184, -438858688, -442451968, -445902976, -448900320, -451546560, -454001120, -456011712, -457482752, -458817920, --460182656, -461281088, -462164256, -463233696, -464334272, -464945792, -465118656, -465174496, -464947392, -464355744, --463920896, -463844128, -463656736, -463389920, -463649760, -464247296, -464458848, -464531328, -465066560, -465613632, --465777920, -466290112, -467196864, -467418080, -467498592, -469054464, -470692448, -470029952, -469692256, -473230240, --476283424, -473541632, -472350304, -482087520, -491237952, -478718144, -450771840, -438733056, -452943488, -469665408, --474604096, -484207104, -505161184, -508774304, -474142368, -428292000, -412397920, -428558816, -447011072, -448439680, --436165216, -422568416, -419888896, -424843680, -401945600, -313745216, -185358448, -103257456, -121463824, -197578704, --251416656, -259959344, -258984384, -271355488, -275937152, -245777360, -185467968, -123581776, -86443736, }, +-162039984, -354059392, -513073024, -544220672, -426079008, -200846096, 76480480, 341753760, 517496864, 570909632, +538810624, 426258848, 152656560, -268456928, -556916608, -392621760, 137937712, 524111648, 381302368, -122664800, +-517052864, -571298304, -423385536, -267364400, -134421200, 10704132, 142540304, 220866016, 263521472, 306872192, +348453920, 370534880, 379185472, 388552800, 396056640, 394882528, 389052640, 382683744, 371897472, 354961344, +336135936, 316509568, 293179840, 267362784, 242905632, 218939184, 192737200, 166288784, 142837728, 121205048, +99199784, 77883864, 58247808, 38609608, 18247168, -1144609, -19156628, -37176164, -54835460, -70412232, +-84282288, -97901632, -110576616, -120906552, -129687608, -138192720, -145665968, -151166736, -155605584, -159884448, +-163383248, -165773392, -168035760, -170768432, -173590768, -176530672, -180116432, -184315840, -188937760, -194341904, +-200491760, -206520816, -212239568, -218499488, -225355856, -231702208, -237215344, -242769264, -248687728, -254468752, +-260238512, -266707808, -273941056, -281680064, -290293632, -300081856, -310452576, -320862496, -331534976, -342404448, +-352558304, -361381760, -369063328, -375619040, -380618944, -383952896, -385725632, -385646720, -383630784, -380563104, +-377491648, -374619936, -371822848, -369278592, -366996352, -364715744, -362746496, -361908992, -362372288, -363497056, +-364780704, -365996160, -366721472, -366764960, -366680672, -366982400, -367400096, -367574048, -367722208, -368027168, +-368227424, -368258560, -368442688, -368780928, -368942528, -368980096, -369208288, -369538976, -369727968, -369950752, +-370432864, -370996064, -371569984, -372518624, -374047104, -375963712, -378274944, -381220224, -384661024, -388236576, +-392007584, -396189792, -400559936, -404847904, -409238432, -413860896, -418399616, -422691904, -426985248, -431279680, +-435233184, -438858688, -442451968, -445902976, -448900320, -451546560, -454001120, -456011712, -457482752, -458817920, +-460182656, -461281088, -462164256, -463233696, -464334272, -464945792, -465118656, -465174496, -464947392, -464355744, +-463920896, -463844128, -463656736, -463389920, -463649760, -464247296, -464458848, -464531328, -465066560, -465613632, +-465777920, -466290112, -467196864, -467418080, -467498592, -469054464, -470692448, -470029952, -469692256, -473230240, +-476283424, -473541632, -472350304, -482087520, -491237952, -478718144, -450771840, -438733056, -452943488, -469665408, +-474604096, -484207104, -505161184, -508774304, -474142368, -428292000, -412397920, -428558816, -447011072, -448439680, +-436165216, -422568416, -419888896, -424843680, -401945600, -313745216, -185358448, -103257456, -121463824, -197578704, +-251416656, -259959344, -258984384, -271355488, -275937152, -245777360, -185467968, -123581776, -86443736, }, }, { { 60774324, -59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610, --21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864, -94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016, --81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520, --104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856, --99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968, -134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696, -324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064, -132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004, -22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540, -62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384, -13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796, --31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670, -28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056, -57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352, -80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352, -79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296, -65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344, -43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434, --29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032, --86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565, --38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154, --2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663, --44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, }, +59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610, +-21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864, +94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016, +-81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520, +-104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856, +-99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968, +134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696, +324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064, +132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004, +22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540, +62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384, +13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796, +-31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670, +28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056, +57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352, +80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352, +79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296, +65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344, +43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434, +-29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032, +-86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565, +-38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154, +-2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663, +-44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, }, { 60774324, -59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610, --21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864, -94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016, --81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520, --104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856, --99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968, -134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696, -324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064, -132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004, -22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540, -62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384, -13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796, --31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670, -28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056, -57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352, -80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352, -79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296, -65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344, -43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434, --29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032, --86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565, --38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154, --2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663, --44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, }, +59729572, 33552284, -19560892, -61997316, -58416924, -16454020, 26468810, 43690556, 34408592, 9218610, +-21484500, -43571368, -38717520, -2093797, 40014064, 45883136, 4796405, -39861056, -32189170, 31201864, +94976224, 107137424, 69399152, 19405200, -16790100, -39045548, -54413476, -64906084, -71736152, -77391016, +-81401976, -81075024, -76618456, -71176200, -67105104, -65755948, -68925632, -77089296, -87613040, -97186520, +-104786464, -110843440, -115289808, -117946784, -119391504, -120165128, -119999776, -118380576, -114929568, -108963856, +-99642704, -86779280, -70805224, -51947628, -30181272, -5902359, 20093468, 47315508, 75696648, 105004968, +134663328, 164189616, 193327216, 221575216, 247971008, 271514400, 291530048, 307443424, 318553952, 324301696, +324525568, 319261568, 308642784, 293263040, 274253536, 252611728, 228828880, 203581984, 178318992, 154462064, +132279624, 111285824, 91716344, 74807592, 61318712, 50438484, 40789304, 32231582, 25963078, 22846004, +22310744, 23179402, 24956982, 27881854, 32162326, 37633040, 43853228, 50110996, 55558088, 59663540, +62427348, 64029372, 64456184, 63435592, 60476896, 55152748, 47702056, 39153460, 30481382, 21861384, +13050258, 4080756, -4772246, -13239774, -20906828, -27201102, -31792422, -34639448, -35629976, -34651796, +-31963684, -27963458, -22743462, -16363825, -9285182, -2051921, 5099737, 11960410, 18188112, 23685670, +28553480, 32546188, 35286376, 37026376, 38472708, 40037148, 41990820, 44889924, 48940616, 53439056, +57652420, 61640832, 65580928, 69140384, 72131832, 74825312, 77170896, 78721920, 79533128, 80082352, +80360984, 80159120, 79882096, 79979272, 80138184, 80043160, 80053360, 80276696, 80137648, 79536352, +79057464, 78639240, 77597176, 76030048, 74532712, 72858216, 70625368, 68576672, 67376760, 66365296, +65076272, 64294588, 64252712, 63928440, 63068372, 62334472, 61069068, 57945552, 53580252, 49213344, +43928924, 36705328, 29108604, 22355304, 14842333, 5965710, -1968706, -8492761, -15931644, -23791434, +-29415158, -34534760, -42116448, -48639968, -50829328, -54961084, -65088080, -71225592, -67966248, -70453032, +-86594592, -93825168, -79387640, -78654808, -121203440, -160942624, -128472672, -42519640, 7400229, -10142565, +-38660076, -43189656, -60630444, -109811040, -134682128, -88345328, -12016782, 23361400, 10660109, -5608154, +-2326799, 3198677, -12473122, -53285512, -96956200, -102666360, -49961744, 22169548, 46085536, 5877663, +-44782552, -56557740, -41253160, -36235028, -45420888, -45099304, -27812598, -9433359, -1260036, }, }, { { 29020558, -43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314, --59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738, -112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856, --243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176, --183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224, -45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864, -115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904, -166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472, -117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428, --6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832, --106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000, --47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896, -53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168, -118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872, -197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144, -202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096, -197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568, -224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672, -249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696, -213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736, -173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944, -209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176, -261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992, -195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, }, +43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314, +-59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738, +112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856, +-243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176, +-183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224, +45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864, +115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904, +166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472, +117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428, +-6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832, +-106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000, +-47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896, +53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168, +118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872, +197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144, +202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096, +197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568, +224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672, +249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696, +213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736, +173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944, +209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176, +261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992, +195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, }, { 29020558, -43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314, --59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738, -112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856, --243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176, --183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224, -45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864, -115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904, -166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472, -117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428, --6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832, --106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000, --47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896, -53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168, -118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872, -197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144, -202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096, -197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568, -224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672, -249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696, -213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736, -173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944, -209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176, -261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992, -195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, }, +43026984, 51106352, 33877628, -3030100, -28343026, -17795124, 14452028, 29481730, 9083856, -28427314, +-59444496, -77127416, -71994392, -24524800, 51500952, 86269784, 25448754, -81479824, -116287312, -27297738, +112266152, 196773920, 197985648, 157917360, 111005040, 55734716, -12725451, -82915952, -143763824, -196459856, +-243939104, -282670048, -308530592, -321597472, -323049184, -313426848, -294756640, -270353696, -242588880, -213100176, +-183778432, -155631904, -128221416, -101467528, -76332840, -53064320, -30685930, -8827232, 11590506, 29678224, +45077292, 57243324, 65799436, 71648648, 76578728, 81806240, 87654912, 94220848, 101459472, 108883864, +115894320, 122306712, 128216048, 133621264, 138539008, 143277424, 148222000, 153368992, 158288880, 162613904, +166339248, 169426800, 171317120, 171284912, 169202928, 165378784, 159672384, 151565104, 141233024, 129656472, +117366960, 103997800, 89535032, 75091064, 61760556, 49442052, 37490232, 25878252, 14907831, 4243428, +-6872485, -18598282, -30380988, -41854456, -53257596, -64815888, -76096616, -86220928, -94558536, -101078832, +-106015360, -109264504, -110227648, -108380280, -103932304, -97702992, -90310816, -81695648, -71516576, -59845000, +-47395500, -35190276, -23958402, -13630079, -3425773, 7343321, 18519898, 29235306, 38665980, 46534896, +53135188, 59176060, 65425772, 72171016, 79077864, 85709296, 91984240, 98078800, 104238856, 110832168, +118231856, 126450280, 135140608, 143966768, 152718304, 161164896, 169167488, 176834544, 184250336, 191181872, +197286640, 202369200, 206265264, 208791776, 210006720, 210206432, 209600304, 208306448, 206575584, 204618144, +202391200, 199920528, 197530912, 195447312, 193624112, 192247024, 191791232, 192336688, 193484512, 195080096, +197244224, 199711680, 201983184, 204049600, 206191184, 208402544, 210732576, 213604288, 217094496, 220677568, +224179040, 227969888, 231921792, 235477488, 238799104, 242353728, 245612544, 247775056, 249122592, 250004672, +249646048, 247669824, 245118080, 242424064, 238654160, 233954384, 229781824, 225996352, 221350800, 216711696, +213395984, 209736672, 204569296, 200872944, 199637600, 195925664, 188862064, 186209376, 188915744, 185078736, +173190800, 171437376, 182817424, 176767440, 138999104, 113357072, 146674208, 211644720, 240775872, 224184944, +209917056, 212717920, 196212896, 156345392, 147491328, 196417440, 253637152, 267065360, 251954592, 249604176, +261806704, 266423264, 260329248, 246459184, 209993296, 149151872, 105053824, 118057912, 168719200, 200982992, +195907424, 185727808, 196233296, 211471312, 207507584, 194690336, 204803376, 245127200, 283631584, }, }, { { 9651865, -3961034, 1835025, 9908490, 22075596, 26681948, 24311662, 28811714, 45453640, 56586732, 36004172, --25028386, -102528384, -142361520, -93304408, 31549220, 131521560, 101836896, -42115912, -161706048, -141696880, --8993125, 120542016, 177131968, 177010640, 155108992, 116447840, 57876296, -6760816, -61629560, -106419088, --146315584, -179404544, -202494816, -218007712, -228075648, -229450576, -219002528, -198989600, -174288160, -148494736, --124015032, -102447856, -83734680, -66888212, -51527796, -37416144, -23551454, -9249212, 4811974, 17686676, -29273960, 39620000, 48319456, 55328844, 61418032, 67337032, 73311336, 79517560, 86243480, 93488016, -101055208, 108991776, 117364280, 125814088, 133909024, 141755936, 149705920, 157633360, 165047008, 171803520, -178155248, 184033440, 188793344, 191877120, 193336880, 193314864, 191339712, 186779008, 179929072, 171889424, -163159360, 153135456, 141469776, 129112088, 117172080, 105288440, 92156040, 77496240, 62520228, 48381196, -35046932, 22009024, 9437654, -1845225, -11237782, -18853832, -25243134, -30777736, -35313220, -38456064, --40142912, -40800580, -40957880, -41000832, -41336376, -42368240, -44060460, -45845016, -47209208, -48200808, --49257908, -50800336, -52993452, -55553256, -57713624, -58755688, -58689656, -58201640, -57996016, -58389008, --59332288, -60458108, -61217780, -61281668, -60723320, -59672664, -58015880, -55542516, -52076480, -47392816, --41369124, -34298000, -26756572, -19200652, -11957726, -5417565, 163746, 4829154, 8558259, 11005317, -11884711, 11284490, 9393093, 6365142, 2624225, -1176284, -4648229, -7708930, -10205916, -11959336, --13013751, -13386876, -12816182, -11110544, -8341900, -4396436, 1074816, 8005819, 15867757, 24364276, -33447058, 42705932, 51593296, 60073708, 68262064, 75834088, 82568064, 88848912, 94926832, 100491496, -105538624, 110612584, 115818088, 120789512, 125676112, 130783904, 135540576, 139341088, 142721232, 146152912, -148914032, 150690000, 152522336, 154741232, 156256816, 156975680, 158030096, 159093104, 159020624, 158774208, -159527440, 159551056, 157928624, 157767568, 159824864, 159133904, 155159456, 155541168, 160509376, 158103120, -147591712, 146963584, 157603296, 148436752, 107092864, 79350592, 112127640, 177940496, 209333488, 194080976, -176679392, 173700288, 156176816, 122001768, 116535888, 159170944, 207145200, 219210304, 207884464, 203208864, -206750592, 205597408, 194819712, 166498160, 114397528, 67672040, 78230680, 150149904, 219664496, 232825344, -209000080, 198397968, 209876256, 217262528, 211632896, 205857248, 200630800, 185133488, 166889008, }, +3961034, 1835025, 9908490, 22075596, 26681948, 24311662, 28811714, 45453640, 56586732, 36004172, +-25028386, -102528384, -142361520, -93304408, 31549220, 131521560, 101836896, -42115912, -161706048, -141696880, +-8993125, 120542016, 177131968, 177010640, 155108992, 116447840, 57876296, -6760816, -61629560, -106419088, +-146315584, -179404544, -202494816, -218007712, -228075648, -229450576, -219002528, -198989600, -174288160, -148494736, +-124015032, -102447856, -83734680, -66888212, -51527796, -37416144, -23551454, -9249212, 4811974, 17686676, +29273960, 39620000, 48319456, 55328844, 61418032, 67337032, 73311336, 79517560, 86243480, 93488016, +101055208, 108991776, 117364280, 125814088, 133909024, 141755936, 149705920, 157633360, 165047008, 171803520, +178155248, 184033440, 188793344, 191877120, 193336880, 193314864, 191339712, 186779008, 179929072, 171889424, +163159360, 153135456, 141469776, 129112088, 117172080, 105288440, 92156040, 77496240, 62520228, 48381196, +35046932, 22009024, 9437654, -1845225, -11237782, -18853832, -25243134, -30777736, -35313220, -38456064, +-40142912, -40800580, -40957880, -41000832, -41336376, -42368240, -44060460, -45845016, -47209208, -48200808, +-49257908, -50800336, -52993452, -55553256, -57713624, -58755688, -58689656, -58201640, -57996016, -58389008, +-59332288, -60458108, -61217780, -61281668, -60723320, -59672664, -58015880, -55542516, -52076480, -47392816, +-41369124, -34298000, -26756572, -19200652, -11957726, -5417565, 163746, 4829154, 8558259, 11005317, +11884711, 11284490, 9393093, 6365142, 2624225, -1176284, -4648229, -7708930, -10205916, -11959336, +-13013751, -13386876, -12816182, -11110544, -8341900, -4396436, 1074816, 8005819, 15867757, 24364276, +33447058, 42705932, 51593296, 60073708, 68262064, 75834088, 82568064, 88848912, 94926832, 100491496, +105538624, 110612584, 115818088, 120789512, 125676112, 130783904, 135540576, 139341088, 142721232, 146152912, +148914032, 150690000, 152522336, 154741232, 156256816, 156975680, 158030096, 159093104, 159020624, 158774208, +159527440, 159551056, 157928624, 157767568, 159824864, 159133904, 155159456, 155541168, 160509376, 158103120, +147591712, 146963584, 157603296, 148436752, 107092864, 79350592, 112127640, 177940496, 209333488, 194080976, +176679392, 173700288, 156176816, 122001768, 116535888, 159170944, 207145200, 219210304, 207884464, 203208864, +206750592, 205597408, 194819712, 166498160, 114397528, 67672040, 78230680, 150149904, 219664496, 232825344, +209000080, 198397968, 209876256, 217262528, 211632896, 205857248, 200630800, 185133488, 166889008, }, { -9651865, --3961034, -1835025, -9908490, -22075596, -26681948, -24311662, -28811714, -45453640, -56586732, -36004172, -25028386, 102528384, 142361520, 93304408, -31549220, -131521560, -101836896, 42115912, 161706048, 141696880, -8993125, -120542016, -177131968, -177010640, -155108992, -116447840, -57876296, 6760816, 61629560, 106419088, -146315584, 179404544, 202494816, 218007712, 228075648, 229450576, 219002528, 198989600, 174288160, 148494736, -124015032, 102447856, 83734680, 66888212, 51527796, 37416144, 23551454, 9249212, -4811974, -17686676, --29273960, -39620000, -48319456, -55328844, -61418032, -67337032, -73311336, -79517560, -86243480, -93488016, --101055208, -108991776, -117364280, -125814088, -133909024, -141755936, -149705920, -157633360, -165047008, -171803520, --178155248, -184033440, -188793344, -191877120, -193336880, -193314864, -191339712, -186779008, -179929072, -171889424, --163159360, -153135456, -141469776, -129112088, -117172080, -105288440, -92156040, -77496240, -62520228, -48381196, --35046932, -22009024, -9437654, 1845225, 11237782, 18853832, 25243134, 30777736, 35313220, 38456064, -40142912, 40800580, 40957880, 41000832, 41336376, 42368240, 44060460, 45845016, 47209208, 48200808, -49257908, 50800336, 52993452, 55553256, 57713624, 58755688, 58689656, 58201640, 57996016, 58389008, -59332288, 60458108, 61217780, 61281668, 60723320, 59672664, 58015880, 55542516, 52076480, 47392816, -41369124, 34298000, 26756572, 19200652, 11957726, 5417565, -163746, -4829154, -8558259, -11005317, --11884711, -11284490, -9393093, -6365142, -2624225, 1176284, 4648229, 7708930, 10205916, 11959336, -13013751, 13386876, 12816182, 11110544, 8341900, 4396436, -1074816, -8005819, -15867757, -24364276, --33447058, -42705932, -51593296, -60073708, -68262064, -75834088, -82568064, -88848912, -94926832, -100491496, --105538624, -110612584, -115818088, -120789512, -125676112, -130783904, -135540576, -139341088, -142721232, -146152912, --148914032, -150690000, -152522336, -154741232, -156256816, -156975680, -158030096, -159093104, -159020624, -158774208, --159527440, -159551056, -157928624, -157767568, -159824864, -159133904, -155159456, -155541168, -160509376, -158103120, --147591712, -146963584, -157603296, -148436752, -107092864, -79350592, -112127640, -177940496, -209333488, -194080976, --176679392, -173700288, -156176816, -122001768, -116535888, -159170944, -207145200, -219210304, -207884464, -203208864, --206750592, -205597408, -194819712, -166498160, -114397528, -67672040, -78230680, -150149904, -219664496, -232825344, --209000080, -198397968, -209876256, -217262528, -211632896, -205857248, -200630800, -185133488, -166889008, }, +-3961034, -1835025, -9908490, -22075596, -26681948, -24311662, -28811714, -45453640, -56586732, -36004172, +25028386, 102528384, 142361520, 93304408, -31549220, -131521560, -101836896, 42115912, 161706048, 141696880, +8993125, -120542016, -177131968, -177010640, -155108992, -116447840, -57876296, 6760816, 61629560, 106419088, +146315584, 179404544, 202494816, 218007712, 228075648, 229450576, 219002528, 198989600, 174288160, 148494736, +124015032, 102447856, 83734680, 66888212, 51527796, 37416144, 23551454, 9249212, -4811974, -17686676, +-29273960, -39620000, -48319456, -55328844, -61418032, -67337032, -73311336, -79517560, -86243480, -93488016, +-101055208, -108991776, -117364280, -125814088, -133909024, -141755936, -149705920, -157633360, -165047008, -171803520, +-178155248, -184033440, -188793344, -191877120, -193336880, -193314864, -191339712, -186779008, -179929072, -171889424, +-163159360, -153135456, -141469776, -129112088, -117172080, -105288440, -92156040, -77496240, -62520228, -48381196, +-35046932, -22009024, -9437654, 1845225, 11237782, 18853832, 25243134, 30777736, 35313220, 38456064, +40142912, 40800580, 40957880, 41000832, 41336376, 42368240, 44060460, 45845016, 47209208, 48200808, +49257908, 50800336, 52993452, 55553256, 57713624, 58755688, 58689656, 58201640, 57996016, 58389008, +59332288, 60458108, 61217780, 61281668, 60723320, 59672664, 58015880, 55542516, 52076480, 47392816, +41369124, 34298000, 26756572, 19200652, 11957726, 5417565, -163746, -4829154, -8558259, -11005317, +-11884711, -11284490, -9393093, -6365142, -2624225, 1176284, 4648229, 7708930, 10205916, 11959336, +13013751, 13386876, 12816182, 11110544, 8341900, 4396436, -1074816, -8005819, -15867757, -24364276, +-33447058, -42705932, -51593296, -60073708, -68262064, -75834088, -82568064, -88848912, -94926832, -100491496, +-105538624, -110612584, -115818088, -120789512, -125676112, -130783904, -135540576, -139341088, -142721232, -146152912, +-148914032, -150690000, -152522336, -154741232, -156256816, -156975680, -158030096, -159093104, -159020624, -158774208, +-159527440, -159551056, -157928624, -157767568, -159824864, -159133904, -155159456, -155541168, -160509376, -158103120, +-147591712, -146963584, -157603296, -148436752, -107092864, -79350592, -112127640, -177940496, -209333488, -194080976, +-176679392, -173700288, -156176816, -122001768, -116535888, -159170944, -207145200, -219210304, -207884464, -203208864, +-206750592, -205597408, -194819712, -166498160, -114397528, -67672040, -78230680, -150149904, -219664496, -232825344, +-209000080, -198397968, -209876256, -217262528, -211632896, -205857248, -200630800, -185133488, -166889008, }, }, { { 14787572, --9309878, -12623446, 14235132, 21446382, -18530636, -51859584, -11151883, 81569480, 130340448, 80423800, --23640036, -97234840, -95277408, -29990682, 48718352, 78334832, 28942174, -55041616, -87754232, -36443336, -41908680, 74315816, 52690120, 19752018, 3755949, 63888, 1271847, 11577621, 32096290, 54330264, -71073656, 81520088, 85850488, 83865144, 77858632, 70140576, 59209884, 42861088, 22803056, 2893734, --14632417, -28780576, -38480224, -43919800, -47207596, -50281720, -53584012, -57026428, -60498372, -63314260, --64689188, -64704220, -63640140, -60756608, -54784456, -45235668, -32409824, -16589848, 2012192, 22822920, -44995688, 67856728, 91011968, 114083992, 136437696, 157193648, 175502032, 190672384, 201933792, 208334368, -209109616, 203979808, 193023344, 176628912, 155657136, 131174208, 103956464, 74747464, 44881336, 15788300, --12182675, -39564700, -66217120, -90894928, -112714976, -132169032, -150156896, -166723120, -181363040, -194027824, --205038512, -214222224, -220860640, -224489344, -225158288, -222805728, -216964560, -207381952, -194514768, -179062560, --161272800, -141016656, -118520160, -94934880, -72164576, -51830056, -34111168, -17818746, -1939715, 13076565, -25801480, 35229468, 41436232, 45314052, 48045652, 50455664, 52508124, 53684944, 53906136, 53718768, -53710712, 54243828, 55603720, 57789320, 60308856, 62680752, 64859376, 66787280, 68006512, 68133216, -67199056, 65231428, 62128848, 58126476, 53721988, 49094696, 44256952, 39577588, 35408784, 31518618, -27623082, 23968064, 20742544, 17588428, 14274324, 11059541, 7991324, 4777614, 1561758, -1203665, --3655017, -6198175, -8592619, -10442676, -12040404, -13614509, -14581951, -14561550, -14057428, -13307419, --11811697, -9615895, -7500624, -5536213, -3138547, -507343, 1806034, 4284767, 7539278, 10920491, -13808857, 16869020, 20430086, 23504208, 25693032, 27695022, 29115046, 28652264, 26727582, 24683178, -21885006, 17188460, 11892228, 7428146, 2467996, -3930432, -9811316, -14376329, -19734300, -25883084, --30247844, -33807300, -39536248, -44918916, -46400680, -48712444, -56388088, -61736932, -58746564, -59299540, --72151152, -79747344, -68556264, -65434900, -97560184, -129828272, -101897560, -25092810, 23052700, 8773544, --21001854, -28310276, -39726300, -79001088, -107210976, -78245712, -12508019, 30356292, 27078158, 3529390, --11720966, -20394652, -47575352, -109237664, -177698896, -189935808, -117179592, -17255032, 19667192, -23667418, --79005920, -87648472, -65023120, -56499220, -69431368, -77732464, -69026568, -55698208, -49138720, }, +-9309878, -12623446, 14235132, 21446382, -18530636, -51859584, -11151883, 81569480, 130340448, 80423800, +-23640036, -97234840, -95277408, -29990682, 48718352, 78334832, 28942174, -55041616, -87754232, -36443336, +41908680, 74315816, 52690120, 19752018, 3755949, 63888, 1271847, 11577621, 32096290, 54330264, +71073656, 81520088, 85850488, 83865144, 77858632, 70140576, 59209884, 42861088, 22803056, 2893734, +-14632417, -28780576, -38480224, -43919800, -47207596, -50281720, -53584012, -57026428, -60498372, -63314260, +-64689188, -64704220, -63640140, -60756608, -54784456, -45235668, -32409824, -16589848, 2012192, 22822920, +44995688, 67856728, 91011968, 114083992, 136437696, 157193648, 175502032, 190672384, 201933792, 208334368, +209109616, 203979808, 193023344, 176628912, 155657136, 131174208, 103956464, 74747464, 44881336, 15788300, +-12182675, -39564700, -66217120, -90894928, -112714976, -132169032, -150156896, -166723120, -181363040, -194027824, +-205038512, -214222224, -220860640, -224489344, -225158288, -222805728, -216964560, -207381952, -194514768, -179062560, +-161272800, -141016656, -118520160, -94934880, -72164576, -51830056, -34111168, -17818746, -1939715, 13076565, +25801480, 35229468, 41436232, 45314052, 48045652, 50455664, 52508124, 53684944, 53906136, 53718768, +53710712, 54243828, 55603720, 57789320, 60308856, 62680752, 64859376, 66787280, 68006512, 68133216, +67199056, 65231428, 62128848, 58126476, 53721988, 49094696, 44256952, 39577588, 35408784, 31518618, +27623082, 23968064, 20742544, 17588428, 14274324, 11059541, 7991324, 4777614, 1561758, -1203665, +-3655017, -6198175, -8592619, -10442676, -12040404, -13614509, -14581951, -14561550, -14057428, -13307419, +-11811697, -9615895, -7500624, -5536213, -3138547, -507343, 1806034, 4284767, 7539278, 10920491, +13808857, 16869020, 20430086, 23504208, 25693032, 27695022, 29115046, 28652264, 26727582, 24683178, +21885006, 17188460, 11892228, 7428146, 2467996, -3930432, -9811316, -14376329, -19734300, -25883084, +-30247844, -33807300, -39536248, -44918916, -46400680, -48712444, -56388088, -61736932, -58746564, -59299540, +-72151152, -79747344, -68556264, -65434900, -97560184, -129828272, -101897560, -25092810, 23052700, 8773544, +-21001854, -28310276, -39726300, -79001088, -107210976, -78245712, -12508019, 30356292, 27078158, 3529390, +-11720966, -20394652, -47575352, -109237664, -177698896, -189935808, -117179592, -17255032, 19667192, -23667418, +-79005920, -87648472, -65023120, -56499220, -69431368, -77732464, -69026568, -55698208, -49138720, }, { -14787572, -9309878, 12623446, -14235132, -21446382, 18530636, 51859584, 11151883, -81569480, -130340448, -80423800, -23640036, 97234840, 95277408, 29990682, -48718352, -78334832, -28942174, 55041616, 87754232, 36443336, --41908680, -74315816, -52690120, -19752018, -3755949, -63888, -1271847, -11577621, -32096290, -54330264, --71073656, -81520088, -85850488, -83865144, -77858632, -70140576, -59209884, -42861088, -22803056, -2893734, -14632417, 28780576, 38480224, 43919800, 47207596, 50281720, 53584012, 57026428, 60498372, 63314260, -64689188, 64704220, 63640140, 60756608, 54784456, 45235668, 32409824, 16589848, -2012192, -22822920, --44995688, -67856728, -91011968, -114083992, -136437696, -157193648, -175502032, -190672384, -201933792, -208334368, --209109616, -203979808, -193023344, -176628912, -155657136, -131174208, -103956464, -74747464, -44881336, -15788300, -12182675, 39564700, 66217120, 90894928, 112714976, 132169032, 150156896, 166723120, 181363040, 194027824, -205038512, 214222224, 220860640, 224489344, 225158288, 222805728, 216964560, 207381952, 194514768, 179062560, -161272800, 141016656, 118520160, 94934880, 72164576, 51830056, 34111168, 17818746, 1939715, -13076565, --25801480, -35229468, -41436232, -45314052, -48045652, -50455664, -52508124, -53684944, -53906136, -53718768, --53710712, -54243828, -55603720, -57789320, -60308856, -62680752, -64859376, -66787280, -68006512, -68133216, --67199056, -65231428, -62128848, -58126476, -53721988, -49094696, -44256952, -39577588, -35408784, -31518618, --27623082, -23968064, -20742544, -17588428, -14274324, -11059541, -7991324, -4777614, -1561758, 1203665, -3655017, 6198175, 8592619, 10442676, 12040404, 13614509, 14581951, 14561550, 14057428, 13307419, -11811697, 9615895, 7500624, 5536213, 3138547, 507343, -1806034, -4284767, -7539278, -10920491, --13808857, -16869020, -20430086, -23504208, -25693032, -27695022, -29115046, -28652264, -26727582, -24683178, --21885006, -17188460, -11892228, -7428146, -2467996, 3930432, 9811316, 14376329, 19734300, 25883084, -30247844, 33807300, 39536248, 44918916, 46400680, 48712444, 56388088, 61736932, 58746564, 59299540, -72151152, 79747344, 68556264, 65434900, 97560184, 129828272, 101897560, 25092810, -23052700, -8773544, -21001854, 28310276, 39726300, 79001088, 107210976, 78245712, 12508019, -30356292, -27078158, -3529390, -11720966, 20394652, 47575352, 109237664, 177698896, 189935808, 117179592, 17255032, -19667192, 23667418, -79005920, 87648472, 65023120, 56499220, 69431368, 77732464, 69026568, 55698208, 49138720, }, +9309878, 12623446, -14235132, -21446382, 18530636, 51859584, 11151883, -81569480, -130340448, -80423800, +23640036, 97234840, 95277408, 29990682, -48718352, -78334832, -28942174, 55041616, 87754232, 36443336, +-41908680, -74315816, -52690120, -19752018, -3755949, -63888, -1271847, -11577621, -32096290, -54330264, +-71073656, -81520088, -85850488, -83865144, -77858632, -70140576, -59209884, -42861088, -22803056, -2893734, +14632417, 28780576, 38480224, 43919800, 47207596, 50281720, 53584012, 57026428, 60498372, 63314260, +64689188, 64704220, 63640140, 60756608, 54784456, 45235668, 32409824, 16589848, -2012192, -22822920, +-44995688, -67856728, -91011968, -114083992, -136437696, -157193648, -175502032, -190672384, -201933792, -208334368, +-209109616, -203979808, -193023344, -176628912, -155657136, -131174208, -103956464, -74747464, -44881336, -15788300, +12182675, 39564700, 66217120, 90894928, 112714976, 132169032, 150156896, 166723120, 181363040, 194027824, +205038512, 214222224, 220860640, 224489344, 225158288, 222805728, 216964560, 207381952, 194514768, 179062560, +161272800, 141016656, 118520160, 94934880, 72164576, 51830056, 34111168, 17818746, 1939715, -13076565, +-25801480, -35229468, -41436232, -45314052, -48045652, -50455664, -52508124, -53684944, -53906136, -53718768, +-53710712, -54243828, -55603720, -57789320, -60308856, -62680752, -64859376, -66787280, -68006512, -68133216, +-67199056, -65231428, -62128848, -58126476, -53721988, -49094696, -44256952, -39577588, -35408784, -31518618, +-27623082, -23968064, -20742544, -17588428, -14274324, -11059541, -7991324, -4777614, -1561758, 1203665, +3655017, 6198175, 8592619, 10442676, 12040404, 13614509, 14581951, 14561550, 14057428, 13307419, +11811697, 9615895, 7500624, 5536213, 3138547, 507343, -1806034, -4284767, -7539278, -10920491, +-13808857, -16869020, -20430086, -23504208, -25693032, -27695022, -29115046, -28652264, -26727582, -24683178, +-21885006, -17188460, -11892228, -7428146, -2467996, 3930432, 9811316, 14376329, 19734300, 25883084, +30247844, 33807300, 39536248, 44918916, 46400680, 48712444, 56388088, 61736932, 58746564, 59299540, +72151152, 79747344, 68556264, 65434900, 97560184, 129828272, 101897560, 25092810, -23052700, -8773544, +21001854, 28310276, 39726300, 79001088, 107210976, 78245712, 12508019, -30356292, -27078158, -3529390, +11720966, 20394652, 47575352, 109237664, 177698896, 189935808, 117179592, 17255032, -19667192, 23667418, +79005920, 87648472, 65023120, 56499220, 69431368, 77732464, 69026568, 55698208, 49138720, }, }, { { -6025302, -1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832, -77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560, -20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878, -29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576, -53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735, --7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800, --97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282, -3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504, -213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240, -147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744, --94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648, --21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244, --31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016, --116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584, --218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440, --248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488, --224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936, --202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512, --162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728, --101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824, --63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256, --75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448, --96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800, --167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, }, +1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832, +77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560, +20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878, +29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576, +53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735, +-7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800, +-97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282, +3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504, +213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240, +147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744, +-94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648, +-21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244, +-31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016, +-116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584, +-218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440, +-248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488, +-224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936, +-202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512, +-162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728, +-101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824, +-63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256, +-75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448, +-96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800, +-167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, }, { -6025302, -1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832, -77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560, -20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878, -29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576, -53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735, --7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800, --97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282, -3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504, -213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240, -147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744, --94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648, --21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244, --31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016, --116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584, --218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440, --248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488, --224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936, --202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512, --162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728, --101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824, --63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256, --75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448, --96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800, --167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, }, +1979443, -222265, -16834662, -30957588, -36381596, -51714092, -87899728, -120777704, -112181864, -43570832, +77029168, 208089024, 261198432, 152920160, -75685912, -236769200, -175597056, 39822400, 187850064, 150632560, +20638928, -58457728, -61116848, -46331960, -37755448, -13233331, 26470958, 49673444, 44979580, 32832878, +29070486, 30021822, 31279710, 35779224, 43230456, 48567492, 50661288, 52303036, 53977000, 54458576, +53994180, 52387328, 47992500, 41231148, 34854196, 29503204, 23281944, 15821586, 8548596, 1335735, +-7248831, -17124034, -27237072, -37695316, -48859548, -59795608, -69548408, -78358992, -86362664, -92807800, +-97305704, -100093136, -100751880, -98342936, -92724048, -84230752, -72535016, -57256208, -39036420, -18780282, +3400540, 27492086, 52703544, 78053512, 103020160, 127148752, 149767664, 170279344, 188142112, 202759504, +213930704, 221964976, 226878432, 228149200, 225644704, 219942592, 211418688, 199924288, 185485136, 168290240, +147967536, 124031680, 97151088, 68976640, 40701796, 12624519, -14948634, -41031432, -64026152, -82104744, +-94056560, -100199976, -101970040, -100331512, -95142656, -86187648, -74119864, -60247116, -46028628, -32858648, +-21724482, -12905840, -6273874, -1771137, 579821, 753767, -1453846, -6287832, -13451838, -22012244, +-31038118, -40020504, -48729624, -57130580, -65436512, -73827264, -82161648, -90292024, -98483600, -107146016, +-116334560, -125821600, -135456288, -145181168, -154930208, -164768368, -174957104, -185680032, -196791648, -207871584, +-218379760, -227793248, -235789408, -242291984, -247272544, -250634960, -252407168, -252862448, -252302480, -250889440, +-248792960, -246312624, -243703968, -241036256, -238327200, -235674512, -233170016, -230821200, -228622720, -226595488, +-224694976, -222788000, -220744144, -218472096, -215921968, -213194128, -210591376, -208357456, -206404848, -204483936, +-202514688, -200500880, -198246032, -195491872, -192226096, -188531344, -184309936, -179491520, -174255408, -168694512, +-162626256, -156058704, -149355344, -142635856, -135690896, -128732520, -122365768, -116624472, -111073760, -105838728, +-101291432, -97019552, -92588224, -88589072, -85222352, -81268832, -76563696, -73123968, -71223976, -68003824, +-63351840, -61722440, -63362040, -61339648, -54596012, -54396296, -66872640, -79462264, -79236776, -73754256, +-75033080, -74489232, -59138480, -43898324, -56496536, -92272000, -115959288, -111137112, -97305168, -93654448, +-96820912, -100096360, -102982040, -95615096, -68264744, -44223668, -64519536, -126372968, -176200496, -181162800, +-167001744, -164430144, -164273376, -155705984, -159117808, -175705504, -151062592, -52396992, 49567680, }, }, { { 29307246, --878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448, --58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832, --2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000, -37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424, --102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384, --63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049, -6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672, -24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856, -141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824, -256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592, -112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864, --152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640, --236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696, --212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840, --112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490, --26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444, -16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340, -57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344, -63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784, -89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024, -117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792, -127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552, -88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584, -50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, }, +-878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448, +-58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832, +-2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000, +37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424, +-102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384, +-63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049, +6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672, +24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856, +141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824, +256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592, +112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864, +-152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640, +-236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696, +-212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840, +-112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490, +-26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444, +16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340, +57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344, +63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784, +89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024, +117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792, +127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552, +88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584, +50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, }, { 29307246, --878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448, --58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832, --2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000, -37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424, --102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384, --63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049, -6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672, -24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856, -141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824, -256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592, -112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864, --152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640, --236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696, --212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840, --112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490, --26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444, -16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340, -57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344, -63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784, -89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024, -117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792, -127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552, -88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584, -50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, }, +-878858, -42704324, -72876472, -70761736, -23331336, 55871084, 116787144, 109559248, 39856760, -32484448, +-58414776, -43856448, -21141440, -2680597, 15889768, 26560614, 13996225, -14605036, -31122406, -21969832, +-2903398, 6818798, 8773544, 15928423, 31583578, 48165372, 59697360, 65471944, 64473900, 54574000, +37441376, 18937048, 3500935, -9198746, -21889838, -36363876, -52752936, -69901664, -85429584, -96595424, +-102137008, -103021232, -101151312, -97832912, -93675920, -89173184, -84649512, -79967456, -74834440, -69271384, +-63428612, -57213260, -50484656, -43397960, -36165236, -28683940, -20797842, -12817793, -5420786, 918049, +6114423, 10133975, 12791486, 14083198, 14567455, 15083388, 16026670, 17206712, 18585934, 20751672, +24294482, 29113436, 34883188, 41921028, 50963544, 62261992, 75462040, 90223840, 106428216, 123815856, +141812304, 159680448, 176754016, 192737728, 207700864, 221378720, 232731936, 240982032, 246897264, 251979824, +256221104, 257716832, 254803760, 247682176, 237500960, 224613360, 208337056, 188131376, 164570256, 139064592, +112637664, 85165984, 56152404, 26129508, -3279745, -30788474, -56460028, -81225344, -105789336, -129938864, +-152505696, -172069808, -188065888, -201101104, -212045760, -221146256, -228186784, -233039552, -235799616, -236826640, +-236814832, -236425072, -235787792, -234723184, -233300480, -231734960, -229933216, -227519984, -224062000, -219077696, +-212325472, -204323936, -196038416, -187871536, -179481856, -170480144, -160598496, -149437488, -136977776, -124157840, +-112090056, -100978976, -90492816, -80589152, -71204112, -61867392, -52499532, -43907452, -36817532, -31094490, +-26345330, -22387518, -18780818, -14820322, -10290742, -5505075, -673236, 4072703, 8424578, 12390444, +16510391, 21018496, 25596394, 30291868, 35538708, 41002980, 45722612, 49519900, 52903796, 55758340, +57636852, 58932856, 60229936, 61198988, 61519500, 61785252, 62269508, 62305480, 61950072, 62325344, +63552096, 64648920, 65827352, 68190120, 71262096, 73829952, 76496592, 80195096, 83748640, 86269784, +89391152, 93638880, 96563752, 97985384, 101374112, 106389024, 107995880, 106985488, 110517560, 117346024, +117004576, 110704392, 114393232, 129332200, 131231648, 107544368, 84891640, 93700616, 122091424, 134975792, +127269544, 123901752, 131259032, 125364192, 95880312, 70135744, 76178760, 102809168, 116211616, 105042552, +88894008, 83855480, 78058344, 51140712, 9394167, -13389024, 5523328, 48172892, 74796856, 68604584, +50431504, 47843788, 61429308, 69788920, 61923228, 53546968, 67870680, 105293808, 138296336, }, }, { { -14042932, -36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440, -97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416, -210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984, --158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072, -69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556, -63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216, -4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232, --75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960, --97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224, --106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328, --141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984, --199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416, --110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596, --22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196, -60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800, -100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920, -65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836, -39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632, -41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432, -47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432, -49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512, -80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984, -99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562, --9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, }, +36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440, +97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416, +210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984, +-158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072, +69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556, +63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216, +4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232, +-75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960, +-97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224, +-106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328, +-141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984, +-199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416, +-110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596, +-22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196, +60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800, +100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920, +65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836, +39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632, +41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432, +47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432, +49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512, +80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984, +99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562, +-9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, }, { -14042932, -36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440, -97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416, -210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984, --158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072, -69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556, -63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216, -4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232, --75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960, --97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224, --106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328, --141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984, --199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416, --110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596, --22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196, -60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800, -100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920, -65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836, -39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632, -41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432, -47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432, -49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512, -80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984, -99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562, --9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, }, +36850284, 74545600, 62616864, 21942452, -35493608, -129862632, -245363968, -305267488, -253026192, -105521440, +97686344, 316325952, 438439392, 305316864, -72467376, -401281472, -367888640, -8289824, 324833760, 372224416, +210067392, 57280368, -6293201, -43093556, -93670016, -132662416, -146641456, -157265600, -172272752, -174583984, +-158528848, -136673920, -114313240, -85986856, -52620864, -21429202, 5864241, 30623116, 49920404, 61535072, +69225208, 76380624, 81414864, 83167744, 83600464, 83035136, 79553528, 73965776, 69466264, 66667556, +63886028, 60877940, 58137752, 54595476, 49376016, 43455404, 37355480, 30013232, 21316460, 12649216, +4209068, -5113696, -15124727, -24588150, -33608120, -42966852, -51969104, -59424632, -65610996, -71242232, +-75948440, -79402672, -82365128, -85393080, -88081192, -90216864, -92116848, -93674312, -94658392, -95714960, +-97591856, -99947112, -102214320, -104685536, -107563160, -110046192, -111361520, -111583248, -110840224, -108969224, +-106280040, -103409928, -100490424, -97757752, -96583080, -98445480, -103285376, -110119200, -118666728, -129239328, +-141640512, -155055840, -168416944, -180446064, -190171488, -197639904, -203280272, -206717312, -207151648, -204593984, +-199757856, -193181728, -185304224, -176749712, -167726528, -157865280, -147240608, -136770016, -127191696, -118458416, +-110238928, -102100496, -93313536, -83529600, -73475616, -64114736, -55502788, -47197396, -39099236, -31110596, +-22786412, -14031121, -5390184, 2841658, 10960757, 19097572, 27059368, 35013112, 43351252, 51912196, +60190208, 68055368, 75498008, 82111720, 87556664, 92006792, 95621008, 98203888, 99734512, 100466800, +100345472, 99104224, 96911104, 94131184, 90725816, 86650432, 82366200, 78212432, 73921216, 69373920, +65007016, 60975652, 56887380, 52735220, 49089864, 46178952, 43797928, 42036992, 41066328, 40505836, +39958228, 39606576, 39498128, 39136816, 38496328, 38295004, 38741140, 39278012, 39824548, 40808632, +41965588, 42667816, 43120396, 43752296, 44179644, 44193064, 44544180, 45489072, 46232100, 46717432, +47753592, 48926656, 49216568, 49459232, 50723564, 51389284, 50187228, 49803904, 51974472, 52767432, +49910204, 49344344, 54588496, 56278032, 46409804, 37261524, 47913044, 74125232, 91240136, 88413512, +80640160, 82477864, 88261040, 86315424, 77971376, 72854456, 75130792, 82306608, 90818696, 97236984, +99371048, 99507416, 100442640, 94990184, 67389112, 14216879, -39399344, -58022860, -36593120, -10273562, +-9674414, -19194746, -6493454, 16509854, 8908299, -13298292, 33717640, 181697520, 325155872, }, }, { { -3956202, --4892505, -590021, 12164421, 38077032, 81775104, 124623304, 129460512, 85682984, 10402411, -102941240, --257014064, -344556224, -196735264, 162329360, 421296576, 301453568, -81786376, -339304576, -270695136, -44466872, -89393304, 91300808, 71099960, 80839872, 84115320, 60540248, 34794068, 20905754, 6206228, -14057965, --28276990, -31372052, -29687350, -27041114, -22638772, -17798882, -13996225, -9483288, -3846680, -10201, -1374390, 3223910, 6271726, 8032126, 7897908, 7853885, 8408472, 8438537, 8327405, 9541270, -12103755, 15187004, 18816252, 23058606, 27099096, 30406220, 33283312, 35678832, 37071472, 37647000, -38043748, 38136624, 37421512, 36086316, 34518116, 32481764, 29738354, 26662620, 23539106, 20119238, -16299401, 12321187, 8060580, 3009698, -2988760, -9727564, -17154100, -25212532, -33552822, -42001560, --50826108, -60007136, -68805912, -76527192, -83177944, -89035208, -94018448, -97715872, -99669544, -99597608, --97630512, -94253592, -89847496, -84563072, -78763792, -73134168, -68153616, -63880124, -60413008, -58128624, --57258892, -57550952, -58465244, -59591596, -60923576, -62826244, -65579856, -68929392, -72264432, -75220984, --77873128, -80420040, -82957832, -85422608, -87509960, -88818848, -89284856, -89289688, -89233312, -89199488, --89014272, -88326000, -86707872, -84005800, -80527416, -76630272, -72300408, -67334352, -61617212, -55052352, --47603808, -39574364, -31474058, -23550916, -15794742, -8280160, -1080184, 5948530, 12839268, 19225348, -24750822, 29457570, 33496986, 36922760, 39977556, 43079060, 46364172, 49711024, 53141092, 56701620, -60179472, 63440960, 66724464, 70176544, 73627552, 77124192, 80998248, 85179400, 89241368, 93158912, -97144104, 100919920, 104110544, 106969920, 109786344, 112219440, 114109224, 116018344, 118209312, 120240296, -122128472, 124492312, 127278136, 129930816, 132675296, 135856256, 138673760, 140493216, 142199920, 144359760, -145933328, 146609776, 147791440, 149669408, 150676576, 150927296, 152078352, 153518768, 153616480, 153758752, -155404272, 155954560, 154248912, 154691840, 158040832, 157198480, 151757840, 152642608, 159947808, 156843616, -142624592, 142603648, 158689376, 148107648, 94958504, 63685776, 117763168, 214589984, 256608720, 227827072, -195774272, 188039040, 163344592, 115923312, 110401064, 177253840, 254218576, 275298816, 254263680, 239107808, -239403632, 237804288, 225745632, 194518000, 136255152, 81283328, 85342072, 150444112, 207728240, 209318448, -186659280, 185007328, 195300752, 193707856, 193329904, 199881872, 165390064, 59089624, -47498580, }, +-4892505, -590021, 12164421, 38077032, 81775104, 124623304, 129460512, 85682984, 10402411, -102941240, +-257014064, -344556224, -196735264, 162329360, 421296576, 301453568, -81786376, -339304576, -270695136, -44466872, +89393304, 91300808, 71099960, 80839872, 84115320, 60540248, 34794068, 20905754, 6206228, -14057965, +-28276990, -31372052, -29687350, -27041114, -22638772, -17798882, -13996225, -9483288, -3846680, -10201, +1374390, 3223910, 6271726, 8032126, 7897908, 7853885, 8408472, 8438537, 8327405, 9541270, +12103755, 15187004, 18816252, 23058606, 27099096, 30406220, 33283312, 35678832, 37071472, 37647000, +38043748, 38136624, 37421512, 36086316, 34518116, 32481764, 29738354, 26662620, 23539106, 20119238, +16299401, 12321187, 8060580, 3009698, -2988760, -9727564, -17154100, -25212532, -33552822, -42001560, +-50826108, -60007136, -68805912, -76527192, -83177944, -89035208, -94018448, -97715872, -99669544, -99597608, +-97630512, -94253592, -89847496, -84563072, -78763792, -73134168, -68153616, -63880124, -60413008, -58128624, +-57258892, -57550952, -58465244, -59591596, -60923576, -62826244, -65579856, -68929392, -72264432, -75220984, +-77873128, -80420040, -82957832, -85422608, -87509960, -88818848, -89284856, -89289688, -89233312, -89199488, +-89014272, -88326000, -86707872, -84005800, -80527416, -76630272, -72300408, -67334352, -61617212, -55052352, +-47603808, -39574364, -31474058, -23550916, -15794742, -8280160, -1080184, 5948530, 12839268, 19225348, +24750822, 29457570, 33496986, 36922760, 39977556, 43079060, 46364172, 49711024, 53141092, 56701620, +60179472, 63440960, 66724464, 70176544, 73627552, 77124192, 80998248, 85179400, 89241368, 93158912, +97144104, 100919920, 104110544, 106969920, 109786344, 112219440, 114109224, 116018344, 118209312, 120240296, +122128472, 124492312, 127278136, 129930816, 132675296, 135856256, 138673760, 140493216, 142199920, 144359760, +145933328, 146609776, 147791440, 149669408, 150676576, 150927296, 152078352, 153518768, 153616480, 153758752, +155404272, 155954560, 154248912, 154691840, 158040832, 157198480, 151757840, 152642608, 159947808, 156843616, +142624592, 142603648, 158689376, 148107648, 94958504, 63685776, 117763168, 214589984, 256608720, 227827072, +195774272, 188039040, 163344592, 115923312, 110401064, 177253840, 254218576, 275298816, 254263680, 239107808, +239403632, 237804288, 225745632, 194518000, 136255152, 81283328, 85342072, 150444112, 207728240, 209318448, +186659280, 185007328, 195300752, 193707856, 193329904, 199881872, 165390064, 59089624, -47498580, }, { 3956202, -4892505, 590021, -12164421, -38077032, -81775104, -124623304, -129460512, -85682984, -10402411, 102941240, -257014064, 344556224, 196735264, -162329360, -421296576, -301453568, 81786376, 339304576, 270695136, 44466872, --89393304, -91300808, -71099960, -80839872, -84115320, -60540248, -34794068, -20905754, -6206228, 14057965, -28276990, 31372052, 29687350, 27041114, 22638772, 17798882, 13996225, 9483288, 3846680, 10201, --1374390, -3223910, -6271726, -8032126, -7897908, -7853885, -8408472, -8438537, -8327405, -9541270, --12103755, -15187004, -18816252, -23058606, -27099096, -30406220, -33283312, -35678832, -37071472, -37647000, --38043748, -38136624, -37421512, -36086316, -34518116, -32481764, -29738354, -26662620, -23539106, -20119238, --16299401, -12321187, -8060580, -3009698, 2988760, 9727564, 17154100, 25212532, 33552822, 42001560, -50826108, 60007136, 68805912, 76527192, 83177944, 89035208, 94018448, 97715872, 99669544, 99597608, -97630512, 94253592, 89847496, 84563072, 78763792, 73134168, 68153616, 63880124, 60413008, 58128624, -57258892, 57550952, 58465244, 59591596, 60923576, 62826244, 65579856, 68929392, 72264432, 75220984, -77873128, 80420040, 82957832, 85422608, 87509960, 88818848, 89284856, 89289688, 89233312, 89199488, -89014272, 88326000, 86707872, 84005800, 80527416, 76630272, 72300408, 67334352, 61617212, 55052352, -47603808, 39574364, 31474058, 23550916, 15794742, 8280160, 1080184, -5948530, -12839268, -19225348, --24750822, -29457570, -33496986, -36922760, -39977556, -43079060, -46364172, -49711024, -53141092, -56701620, --60179472, -63440960, -66724464, -70176544, -73627552, -77124192, -80998248, -85179400, -89241368, -93158912, --97144104, -100919920, -104110544, -106969920, -109786344, -112219440, -114109224, -116018344, -118209312, -120240296, --122128472, -124492312, -127278136, -129930816, -132675296, -135856256, -138673760, -140493216, -142199920, -144359760, --145933328, -146609776, -147791440, -149669408, -150676576, -150927296, -152078352, -153518768, -153616480, -153758752, --155404272, -155954560, -154248912, -154691840, -158040832, -157198480, -151757840, -152642608, -159947808, -156843616, --142624592, -142603648, -158689376, -148107648, -94958504, -63685776, -117763168, -214589984, -256608720, -227827072, --195774272, -188039040, -163344592, -115923312, -110401064, -177253840, -254218576, -275298816, -254263680, -239107808, --239403632, -237804288, -225745632, -194518000, -136255152, -81283328, -85342072, -150444112, -207728240, -209318448, --186659280, -185007328, -195300752, -193707856, -193329904, -199881872, -165390064, -59089624, 47498580, }, +4892505, 590021, -12164421, -38077032, -81775104, -124623304, -129460512, -85682984, -10402411, 102941240, +257014064, 344556224, 196735264, -162329360, -421296576, -301453568, 81786376, 339304576, 270695136, 44466872, +-89393304, -91300808, -71099960, -80839872, -84115320, -60540248, -34794068, -20905754, -6206228, 14057965, +28276990, 31372052, 29687350, 27041114, 22638772, 17798882, 13996225, 9483288, 3846680, 10201, +-1374390, -3223910, -6271726, -8032126, -7897908, -7853885, -8408472, -8438537, -8327405, -9541270, +-12103755, -15187004, -18816252, -23058606, -27099096, -30406220, -33283312, -35678832, -37071472, -37647000, +-38043748, -38136624, -37421512, -36086316, -34518116, -32481764, -29738354, -26662620, -23539106, -20119238, +-16299401, -12321187, -8060580, -3009698, 2988760, 9727564, 17154100, 25212532, 33552822, 42001560, +50826108, 60007136, 68805912, 76527192, 83177944, 89035208, 94018448, 97715872, 99669544, 99597608, +97630512, 94253592, 89847496, 84563072, 78763792, 73134168, 68153616, 63880124, 60413008, 58128624, +57258892, 57550952, 58465244, 59591596, 60923576, 62826244, 65579856, 68929392, 72264432, 75220984, +77873128, 80420040, 82957832, 85422608, 87509960, 88818848, 89284856, 89289688, 89233312, 89199488, +89014272, 88326000, 86707872, 84005800, 80527416, 76630272, 72300408, 67334352, 61617212, 55052352, +47603808, 39574364, 31474058, 23550916, 15794742, 8280160, 1080184, -5948530, -12839268, -19225348, +-24750822, -29457570, -33496986, -36922760, -39977556, -43079060, -46364172, -49711024, -53141092, -56701620, +-60179472, -63440960, -66724464, -70176544, -73627552, -77124192, -80998248, -85179400, -89241368, -93158912, +-97144104, -100919920, -104110544, -106969920, -109786344, -112219440, -114109224, -116018344, -118209312, -120240296, +-122128472, -124492312, -127278136, -129930816, -132675296, -135856256, -138673760, -140493216, -142199920, -144359760, +-145933328, -146609776, -147791440, -149669408, -150676576, -150927296, -152078352, -153518768, -153616480, -153758752, +-155404272, -155954560, -154248912, -154691840, -158040832, -157198480, -151757840, -152642608, -159947808, -156843616, +-142624592, -142603648, -158689376, -148107648, -94958504, -63685776, -117763168, -214589984, -256608720, -227827072, +-195774272, -188039040, -163344592, -115923312, -110401064, -177253840, -254218576, -275298816, -254263680, -239107808, +-239403632, -237804288, -225745632, -194518000, -136255152, -81283328, -85342072, -150444112, -207728240, -209318448, +-186659280, -185007328, -195300752, -193707856, -193329904, -199881872, -165390064, -59089624, 47498580, }, }, { { -1443109, -2916283, 6827925, 4448513, -10190347, -35941896, -50278496, -21301964, 45321568, 90000504, 62208844, --10385231, -52024400, -33970508, 263604, 7722888, -259846, 5224291, 19049790, 17630840, 2166811, --5846524, -1266479, 181999, -9330280, -18641232, -16736414, -6763500, 2556579, 8128763, 10948409, -10774462, 6565932, -1125818, -10446971, -19356344, -26142930, -30390652, -33340758, -36155572, -38265476, --38332048, -36147520, -32708860, -29106456, -26172456, -24637544, -24765856, -25979184, -27272506, -27890980, --27470610, -25853018, -23069880, -19397146, -15212237, -10771241, -6171868, -1490891, 3144453, 7651484, -12047920, 16274705, 20060182, 23145042, 25582436, 27581744, 29147258, 30173756, 30836254, 31517544, -32333588, 33101850, 33842196, 34967476, 36871756, 39647380, 43362528, 48338248, 54939612, 63217088, -72916736, 83794808, 95823944, 109095392, 123496952, 138459552, 153138672, 166951280, 179796992, 191547488, -201411424, 208091696, 210612304, 208791248, 202888880, 193053408, 179311120, 162035696, 142256832, 121402080, -100614976, 80314280, 60539712, 41757284, 25057376, 11293617, 126165, -9823127, -19814294, -30041686, --39722004, -47958140, -54550380, -60103772, -65415572, -70796096, -75989784, -80636936, -84662936, -88305064, --91958472, -95962456, -100363720, -104873976, -109146928, -113031192, -116513872, -119557928, -122106456, -124112208, --125511832, -126300496, -126655904, -126842736, -126988224, -127060704, -126995200, -126714424, -126185064, -125603096, --125345936, -125597728, -126224256, -127060168, -128004520, -128815736, -129247376, -129471256, -129961416, -130892888, --132046088, -133215392, -134260672, -134826544, -134499056, -133149888, -130776920, -127238408, -122458104, -116582592, --109666088, -101599600, -92521112, -82809120, -72629504, -62070868, -51628192, -41856068, -32731946, -24047522, --16039555, -8904004, -2273648, 4118337, 10006737, 15390478, 20740398, 25972740, 30525406, 34676492, -39222180, 43891344, 47938276, 51878372, 56495464, 61012696, 64582348, 68081136, 72005664, 75044352, -77184856, 80520440, 84550192, 86223080, 86974696, 91581584, 97592392, 97656816, 95367600, 101955544, -112541032, 109671992, 100214472, 116350128, 158572880, 173721760, 126094336, 58961312, 38272452, 60790968, -74576736, 71284648, 88594440, 124262528, 123211336, 68228776, 16135118, 13064754, 31056908, 25668336, -5967857, 2714419, 8382166, 107911, -6194417, 21946746, 71502616, 93503584, 71871984, 41361072, -33930240, 42570644, 46276124, 41583872, 36570036, 33631204, 31004296, 29609504, 29946122, }, +2916283, 6827925, 4448513, -10190347, -35941896, -50278496, -21301964, 45321568, 90000504, 62208844, +-10385231, -52024400, -33970508, 263604, 7722888, -259846, 5224291, 19049790, 17630840, 2166811, +-5846524, -1266479, 181999, -9330280, -18641232, -16736414, -6763500, 2556579, 8128763, 10948409, +10774462, 6565932, -1125818, -10446971, -19356344, -26142930, -30390652, -33340758, -36155572, -38265476, +-38332048, -36147520, -32708860, -29106456, -26172456, -24637544, -24765856, -25979184, -27272506, -27890980, +-27470610, -25853018, -23069880, -19397146, -15212237, -10771241, -6171868, -1490891, 3144453, 7651484, +12047920, 16274705, 20060182, 23145042, 25582436, 27581744, 29147258, 30173756, 30836254, 31517544, +32333588, 33101850, 33842196, 34967476, 36871756, 39647380, 43362528, 48338248, 54939612, 63217088, +72916736, 83794808, 95823944, 109095392, 123496952, 138459552, 153138672, 166951280, 179796992, 191547488, +201411424, 208091696, 210612304, 208791248, 202888880, 193053408, 179311120, 162035696, 142256832, 121402080, +100614976, 80314280, 60539712, 41757284, 25057376, 11293617, 126165, -9823127, -19814294, -30041686, +-39722004, -47958140, -54550380, -60103772, -65415572, -70796096, -75989784, -80636936, -84662936, -88305064, +-91958472, -95962456, -100363720, -104873976, -109146928, -113031192, -116513872, -119557928, -122106456, -124112208, +-125511832, -126300496, -126655904, -126842736, -126988224, -127060704, -126995200, -126714424, -126185064, -125603096, +-125345936, -125597728, -126224256, -127060168, -128004520, -128815736, -129247376, -129471256, -129961416, -130892888, +-132046088, -133215392, -134260672, -134826544, -134499056, -133149888, -130776920, -127238408, -122458104, -116582592, +-109666088, -101599600, -92521112, -82809120, -72629504, -62070868, -51628192, -41856068, -32731946, -24047522, +-16039555, -8904004, -2273648, 4118337, 10006737, 15390478, 20740398, 25972740, 30525406, 34676492, +39222180, 43891344, 47938276, 51878372, 56495464, 61012696, 64582348, 68081136, 72005664, 75044352, +77184856, 80520440, 84550192, 86223080, 86974696, 91581584, 97592392, 97656816, 95367600, 101955544, +112541032, 109671992, 100214472, 116350128, 158572880, 173721760, 126094336, 58961312, 38272452, 60790968, +74576736, 71284648, 88594440, 124262528, 123211336, 68228776, 16135118, 13064754, 31056908, 25668336, +5967857, 2714419, 8382166, 107911, -6194417, 21946746, 71502616, 93503584, 71871984, 41361072, +33930240, 42570644, 46276124, 41583872, 36570036, 33631204, 31004296, 29609504, 29946122, }, { 1443109, --2916283, -6827925, -4448513, 10190347, 35941896, 50278496, 21301964, -45321568, -90000504, -62208844, -10385231, 52024400, 33970508, -263604, -7722888, 259846, -5224291, -19049790, -17630840, -2166811, -5846524, 1266479, -181999, 9330280, 18641232, 16736414, 6763500, -2556579, -8128763, -10948409, --10774462, -6565932, 1125818, 10446971, 19356344, 26142930, 30390652, 33340758, 36155572, 38265476, -38332048, 36147520, 32708860, 29106456, 26172456, 24637544, 24765856, 25979184, 27272506, 27890980, -27470610, 25853018, 23069880, 19397146, 15212237, 10771241, 6171868, 1490891, -3144453, -7651484, --12047920, -16274705, -20060182, -23145042, -25582436, -27581744, -29147258, -30173756, -30836254, -31517544, --32333588, -33101850, -33842196, -34967476, -36871756, -39647380, -43362528, -48338248, -54939612, -63217088, --72916736, -83794808, -95823944, -109095392, -123496952, -138459552, -153138672, -166951280, -179796992, -191547488, --201411424, -208091696, -210612304, -208791248, -202888880, -193053408, -179311120, -162035696, -142256832, -121402080, --100614976, -80314280, -60539712, -41757284, -25057376, -11293617, -126165, 9823127, 19814294, 30041686, -39722004, 47958140, 54550380, 60103772, 65415572, 70796096, 75989784, 80636936, 84662936, 88305064, -91958472, 95962456, 100363720, 104873976, 109146928, 113031192, 116513872, 119557928, 122106456, 124112208, -125511832, 126300496, 126655904, 126842736, 126988224, 127060704, 126995200, 126714424, 126185064, 125603096, -125345936, 125597728, 126224256, 127060168, 128004520, 128815736, 129247376, 129471256, 129961416, 130892888, -132046088, 133215392, 134260672, 134826544, 134499056, 133149888, 130776920, 127238408, 122458104, 116582592, -109666088, 101599600, 92521112, 82809120, 72629504, 62070868, 51628192, 41856068, 32731946, 24047522, -16039555, 8904004, 2273648, -4118337, -10006737, -15390478, -20740398, -25972740, -30525406, -34676492, --39222180, -43891344, -47938276, -51878372, -56495464, -61012696, -64582348, -68081136, -72005664, -75044352, --77184856, -80520440, -84550192, -86223080, -86974696, -91581584, -97592392, -97656816, -95367600, -101955544, --112541032, -109671992, -100214472, -116350128, -158572880, -173721760, -126094336, -58961312, -38272452, -60790968, --74576736, -71284648, -88594440, -124262528, -123211336, -68228776, -16135118, -13064754, -31056908, -25668336, --5967857, -2714419, -8382166, -107911, 6194417, -21946746, -71502616, -93503584, -71871984, -41361072, --33930240, -42570644, -46276124, -41583872, -36570036, -33631204, -31004296, -29609504, -29946122, }, +-2916283, -6827925, -4448513, 10190347, 35941896, 50278496, 21301964, -45321568, -90000504, -62208844, +10385231, 52024400, 33970508, -263604, -7722888, 259846, -5224291, -19049790, -17630840, -2166811, +5846524, 1266479, -181999, 9330280, 18641232, 16736414, 6763500, -2556579, -8128763, -10948409, +-10774462, -6565932, 1125818, 10446971, 19356344, 26142930, 30390652, 33340758, 36155572, 38265476, +38332048, 36147520, 32708860, 29106456, 26172456, 24637544, 24765856, 25979184, 27272506, 27890980, +27470610, 25853018, 23069880, 19397146, 15212237, 10771241, 6171868, 1490891, -3144453, -7651484, +-12047920, -16274705, -20060182, -23145042, -25582436, -27581744, -29147258, -30173756, -30836254, -31517544, +-32333588, -33101850, -33842196, -34967476, -36871756, -39647380, -43362528, -48338248, -54939612, -63217088, +-72916736, -83794808, -95823944, -109095392, -123496952, -138459552, -153138672, -166951280, -179796992, -191547488, +-201411424, -208091696, -210612304, -208791248, -202888880, -193053408, -179311120, -162035696, -142256832, -121402080, +-100614976, -80314280, -60539712, -41757284, -25057376, -11293617, -126165, 9823127, 19814294, 30041686, +39722004, 47958140, 54550380, 60103772, 65415572, 70796096, 75989784, 80636936, 84662936, 88305064, +91958472, 95962456, 100363720, 104873976, 109146928, 113031192, 116513872, 119557928, 122106456, 124112208, +125511832, 126300496, 126655904, 126842736, 126988224, 127060704, 126995200, 126714424, 126185064, 125603096, +125345936, 125597728, 126224256, 127060168, 128004520, 128815736, 129247376, 129471256, 129961416, 130892888, +132046088, 133215392, 134260672, 134826544, 134499056, 133149888, 130776920, 127238408, 122458104, 116582592, +109666088, 101599600, 92521112, 82809120, 72629504, 62070868, 51628192, 41856068, 32731946, 24047522, +16039555, 8904004, 2273648, -4118337, -10006737, -15390478, -20740398, -25972740, -30525406, -34676492, +-39222180, -43891344, -47938276, -51878372, -56495464, -61012696, -64582348, -68081136, -72005664, -75044352, +-77184856, -80520440, -84550192, -86223080, -86974696, -91581584, -97592392, -97656816, -95367600, -101955544, +-112541032, -109671992, -100214472, -116350128, -158572880, -173721760, -126094336, -58961312, -38272452, -60790968, +-74576736, -71284648, -88594440, -124262528, -123211336, -68228776, -16135118, -13064754, -31056908, -25668336, +-5967857, -2714419, -8382166, -107911, 6194417, -21946746, -71502616, -93503584, -71871984, -41361072, +-33930240, -42570644, -46276124, -41583872, -36570036, -33631204, -31004296, -29609504, -29946122, }, }, { { -16855062, --9421548, 6735046, 14541149, -696858, -10459856, 31685584, 111822696, 141461184, 46983720, -137070128, --274288416, -233875472, -17981418, 207736288, 249013616, 80600432, -120410480, -170559600, -71937480, 34109020, -58366996, 33574832, 14930380, 994822, -26393648, -51163260, -50008452, -32954210, -25242060, -30743912, --35949412, -33978560, -26447872, -12712566, 8307541, 31826244, 51606180, 66345972, 77356120, 84789096, -89105000, 92007864, 94001264, 94112936, 92410520, 89962920, 86695528, 81840600, 75707392, 68811816, -60250876, 48849348, 34935800, 19663434, 3723737, -12246026, -27256400, -40934260, -53897008, -66593468, --78649440, -89627912, -99442992, -107755360, -113711408, -116477904, -115559320, -110695264, -101907760, -89489936, --73636144, -54377508, -32165010, -8080444, 16866874, 42273752, 67840616, 92708480, 115740240, 136301328, -154419104, 170198272, 183356448, 193434592, 200290976, 204173616, 205277424, 203442400, 198369504, 189873520, -177717696, 161489696, 141020416, 116809152, 89718648, 60403348, 29473140, -1858647, -31750008, -58535036, --81430432, -100451768, -115763328, -127038152, -133412960, -134269808, -130168648, -122766808, -113663088, -103536096, --92426088, -80411992, -67775656, -54875188, -42179264, -30258582, -19552302, -10249939, -2371359, 4298189, -10300405, 16173773, 21946210, 27116276, 31076772, 33417530, 34017752, 33116346, 31163746, 28391882, -24641302, 19670414, 13437879, 6062347, -2212445, -11009075, -20040854, -29295972, -38747584, -48046724, --56775708, -64774012, -71954120, -78098608, -83117280, -87159384, -90254440, -92231200, -93148712, -93386008, --93218504, -92764848, -92332136, -92295088, -92656400, -93204552, -93935768, -94896768, -95902328, -96840240, --97889280, -99085968, -100114616, -100798048, -101271032, -101534640, -101465384, -101275328, -101294120, -101381096, --101242040, -101033200, -100954280, -100668664, -99784440, -98339720, -96269008, -93179312, -89117888, -84647360, --79874040, -74464536, -68683504, -63166620, -57808648, -52207476, -46784004, -42070280, -37632504, -33078764, --29027536, -25747256, -22391812, -18797462, -15994995, -13892072, -11106249, -7990787, -6463389, -6082211, --4431870, -2181307, -2782602, -6077916, -7808251, -7052873, -8244190, -13497472, -18622442, -19725174, --18895708, -19746112, -20739324, -17023640, -8380018, -2305324, -6387690, -17554606, -23748484, -19843822, --15245523, -17352742, -15122043, 5159867, 31018790, 31144956, -3549254, -43825308, -55629492, -36705864, --11915850, -2823404, -9434433, -15443092, -8246874, 1931125, -11863237, -57452704, -101456256, }, +-9421548, 6735046, 14541149, -696858, -10459856, 31685584, 111822696, 141461184, 46983720, -137070128, +-274288416, -233875472, -17981418, 207736288, 249013616, 80600432, -120410480, -170559600, -71937480, 34109020, +58366996, 33574832, 14930380, 994822, -26393648, -51163260, -50008452, -32954210, -25242060, -30743912, +-35949412, -33978560, -26447872, -12712566, 8307541, 31826244, 51606180, 66345972, 77356120, 84789096, +89105000, 92007864, 94001264, 94112936, 92410520, 89962920, 86695528, 81840600, 75707392, 68811816, +60250876, 48849348, 34935800, 19663434, 3723737, -12246026, -27256400, -40934260, -53897008, -66593468, +-78649440, -89627912, -99442992, -107755360, -113711408, -116477904, -115559320, -110695264, -101907760, -89489936, +-73636144, -54377508, -32165010, -8080444, 16866874, 42273752, 67840616, 92708480, 115740240, 136301328, +154419104, 170198272, 183356448, 193434592, 200290976, 204173616, 205277424, 203442400, 198369504, 189873520, +177717696, 161489696, 141020416, 116809152, 89718648, 60403348, 29473140, -1858647, -31750008, -58535036, +-81430432, -100451768, -115763328, -127038152, -133412960, -134269808, -130168648, -122766808, -113663088, -103536096, +-92426088, -80411992, -67775656, -54875188, -42179264, -30258582, -19552302, -10249939, -2371359, 4298189, +10300405, 16173773, 21946210, 27116276, 31076772, 33417530, 34017752, 33116346, 31163746, 28391882, +24641302, 19670414, 13437879, 6062347, -2212445, -11009075, -20040854, -29295972, -38747584, -48046724, +-56775708, -64774012, -71954120, -78098608, -83117280, -87159384, -90254440, -92231200, -93148712, -93386008, +-93218504, -92764848, -92332136, -92295088, -92656400, -93204552, -93935768, -94896768, -95902328, -96840240, +-97889280, -99085968, -100114616, -100798048, -101271032, -101534640, -101465384, -101275328, -101294120, -101381096, +-101242040, -101033200, -100954280, -100668664, -99784440, -98339720, -96269008, -93179312, -89117888, -84647360, +-79874040, -74464536, -68683504, -63166620, -57808648, -52207476, -46784004, -42070280, -37632504, -33078764, +-29027536, -25747256, -22391812, -18797462, -15994995, -13892072, -11106249, -7990787, -6463389, -6082211, +-4431870, -2181307, -2782602, -6077916, -7808251, -7052873, -8244190, -13497472, -18622442, -19725174, +-18895708, -19746112, -20739324, -17023640, -8380018, -2305324, -6387690, -17554606, -23748484, -19843822, +-15245523, -17352742, -15122043, 5159867, 31018790, 31144956, -3549254, -43825308, -55629492, -36705864, +-11915850, -2823404, -9434433, -15443092, -8246874, 1931125, -11863237, -57452704, -101456256, }, { 16855062, -9421548, -6735046, -14541149, 696858, 10459856, -31685584, -111822696, -141461184, -46983720, 137070128, -274288416, 233875472, 17981418, -207736288, -249013616, -80600432, 120410480, 170559600, 71937480, -34109020, --58366996, -33574832, -14930380, -994822, 26393648, 51163260, 50008452, 32954210, 25242060, 30743912, -35949412, 33978560, 26447872, 12712566, -8307541, -31826244, -51606180, -66345972, -77356120, -84789096, --89105000, -92007864, -94001264, -94112936, -92410520, -89962920, -86695528, -81840600, -75707392, -68811816, --60250876, -48849348, -34935800, -19663434, -3723737, 12246026, 27256400, 40934260, 53897008, 66593468, -78649440, 89627912, 99442992, 107755360, 113711408, 116477904, 115559320, 110695264, 101907760, 89489936, -73636144, 54377508, 32165010, 8080444, -16866874, -42273752, -67840616, -92708480, -115740240, -136301328, --154419104, -170198272, -183356448, -193434592, -200290976, -204173616, -205277424, -203442400, -198369504, -189873520, --177717696, -161489696, -141020416, -116809152, -89718648, -60403348, -29473140, 1858647, 31750008, 58535036, -81430432, 100451768, 115763328, 127038152, 133412960, 134269808, 130168648, 122766808, 113663088, 103536096, -92426088, 80411992, 67775656, 54875188, 42179264, 30258582, 19552302, 10249939, 2371359, -4298189, --10300405, -16173773, -21946210, -27116276, -31076772, -33417530, -34017752, -33116346, -31163746, -28391882, --24641302, -19670414, -13437879, -6062347, 2212445, 11009075, 20040854, 29295972, 38747584, 48046724, -56775708, 64774012, 71954120, 78098608, 83117280, 87159384, 90254440, 92231200, 93148712, 93386008, -93218504, 92764848, 92332136, 92295088, 92656400, 93204552, 93935768, 94896768, 95902328, 96840240, -97889280, 99085968, 100114616, 100798048, 101271032, 101534640, 101465384, 101275328, 101294120, 101381096, -101242040, 101033200, 100954280, 100668664, 99784440, 98339720, 96269008, 93179312, 89117888, 84647360, -79874040, 74464536, 68683504, 63166620, 57808648, 52207476, 46784004, 42070280, 37632504, 33078764, -29027536, 25747256, 22391812, 18797462, 15994995, 13892072, 11106249, 7990787, 6463389, 6082211, -4431870, 2181307, 2782602, 6077916, 7808251, 7052873, 8244190, 13497472, 18622442, 19725174, -18895708, 19746112, 20739324, 17023640, 8380018, 2305324, 6387690, 17554606, 23748484, 19843822, -15245523, 17352742, 15122043, -5159867, -31018790, -31144956, 3549254, 43825308, 55629492, 36705864, -11915850, 2823404, 9434433, 15443092, 8246874, -1931125, 11863237, 57452704, 101456256, }, +9421548, -6735046, -14541149, 696858, 10459856, -31685584, -111822696, -141461184, -46983720, 137070128, +274288416, 233875472, 17981418, -207736288, -249013616, -80600432, 120410480, 170559600, 71937480, -34109020, +-58366996, -33574832, -14930380, -994822, 26393648, 51163260, 50008452, 32954210, 25242060, 30743912, +35949412, 33978560, 26447872, 12712566, -8307541, -31826244, -51606180, -66345972, -77356120, -84789096, +-89105000, -92007864, -94001264, -94112936, -92410520, -89962920, -86695528, -81840600, -75707392, -68811816, +-60250876, -48849348, -34935800, -19663434, -3723737, 12246026, 27256400, 40934260, 53897008, 66593468, +78649440, 89627912, 99442992, 107755360, 113711408, 116477904, 115559320, 110695264, 101907760, 89489936, +73636144, 54377508, 32165010, 8080444, -16866874, -42273752, -67840616, -92708480, -115740240, -136301328, +-154419104, -170198272, -183356448, -193434592, -200290976, -204173616, -205277424, -203442400, -198369504, -189873520, +-177717696, -161489696, -141020416, -116809152, -89718648, -60403348, -29473140, 1858647, 31750008, 58535036, +81430432, 100451768, 115763328, 127038152, 133412960, 134269808, 130168648, 122766808, 113663088, 103536096, +92426088, 80411992, 67775656, 54875188, 42179264, 30258582, 19552302, 10249939, 2371359, -4298189, +-10300405, -16173773, -21946210, -27116276, -31076772, -33417530, -34017752, -33116346, -31163746, -28391882, +-24641302, -19670414, -13437879, -6062347, 2212445, 11009075, 20040854, 29295972, 38747584, 48046724, +56775708, 64774012, 71954120, 78098608, 83117280, 87159384, 90254440, 92231200, 93148712, 93386008, +93218504, 92764848, 92332136, 92295088, 92656400, 93204552, 93935768, 94896768, 95902328, 96840240, +97889280, 99085968, 100114616, 100798048, 101271032, 101534640, 101465384, 101275328, 101294120, 101381096, +101242040, 101033200, 100954280, 100668664, 99784440, 98339720, 96269008, 93179312, 89117888, 84647360, +79874040, 74464536, 68683504, 63166620, 57808648, 52207476, 46784004, 42070280, 37632504, 33078764, +29027536, 25747256, 22391812, 18797462, 15994995, 13892072, 11106249, 7990787, 6463389, 6082211, +4431870, 2181307, 2782602, 6077916, 7808251, 7052873, 8244190, 13497472, 18622442, 19725174, +18895708, 19746112, 20739324, 17023640, 8380018, 2305324, 6387690, 17554606, 23748484, 19843822, +15245523, 17352742, 15122043, -5159867, -31018790, -31144956, 3549254, 43825308, 55629492, 36705864, +11915850, 2823404, 9434433, 15443092, 8246874, -1931125, 11863237, 57452704, 101456256, }, }, { { -10470057, --12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184, --43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915, -9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062, --39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132, --6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408, -27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784, --20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504, --106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166, --4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568, -162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408, -63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454, --30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072, -36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864, -98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500, -34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560, --84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584, --139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392, --141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704, --129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688, --97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344, --75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712, --139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832, --134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880, --56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, }, +-12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184, +-43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915, +9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062, +-39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132, +-6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408, +27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784, +-20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504, +-106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166, +-4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568, +162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408, +63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454, +-30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072, +36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864, +98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500, +34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560, +-84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584, +-139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392, +-141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704, +-129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688, +-97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344, +-75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712, +-139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832, +-134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880, +-56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, }, { -10470057, --12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184, --43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915, -9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062, --39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132, --6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408, -27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784, --20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504, --106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166, --4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568, -162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408, -63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454, --30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072, -36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864, -98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500, -34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560, --84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584, --139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392, --141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704, --129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688, --97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344, --75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712, --139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832, --134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880, --56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, }, +-12942884, -12745852, -5259188, 8346732, 21582210, 26531086, 16127065, -12313134, -48213692, -65599184, +-43744780, 4936528, 39658656, 33028836, -708133, -27792734, -34398928, -30497490, -23885386, -10569915, +9479530, 25550224, 31105226, 32856500, 38252052, 42853036, 36798208, 18005040, -6361384, -27448062, +-39666708, -41641856, -36514200, -30181808, -26812408, -26179974, -25506200, -22668300, -17521320, -11483132, +-6290517, -2583423, 323196, 3242700, 6392522, 9896678, 13967771, 18304076, 22140556, 25072408, +27159762, 28331752, 28344636, 27087822, 24391120, 19908784, 13641353, 6088653, -2334852, -11470784, +-20963198, -30399242, -39853540, -49548892, -59197536, -68443528, -77530064, -86653648, -95127624, -101969504, +-106768592, -109260744, -108752328, -104731704, -97443144, -87307560, -74422656, -59063316, -41965588, -23700166, +-4328254, 16065862, 36932424, 57482768, 77115600, 95685432, 113377472, 129973760, 144324864, 155117568, +162090992, 165811504, 166406368, 163296272, 156047440, 144834880, 130329712, 113758648, 96646968, 79828408, +63017372, 45769856, 28480466, 12293807, -1440962, -11697343, -18540300, -23277112, -27110370, -29834454, +-30441118, -28513752, -24380382, -18583786, -11894912, -5140539, 1609002, 9041980, 17504676, 26640072, +36108864, 45703820, 54845660, 62985696, 70323648, 77253040, 83527448, 88758720, 93038656, 96317864, +98002560, 97827544, 96204048, 93308168, 88845160, 82897704, 75859856, 67580776, 57710400, 46616500, +34867620, 22393422, 9161165, -4181151, -17242684, -30352534, -43362528, -55311124, -65827352, -75440560, +-84275312, -92010544, -99078456, -106269840, -113417200, -119903136, -125755032, -130954624, -134836208, -137331584, +-139376528, -141256640, -142338976, -142835584, -143646784, -144416128, -144120304, -143218368, -142758272, -142301392, +-141159472, -140213504, -140188272, -140127600, -139490880, -139126880, -138788640, -136974560, -134036264, -131654704, +-129288176, -125414120, -121233504, -118497072, -115775672, -111627272, -108029168, -106125960, -103531264, -99802688, +-97849016, -96995392, -93625992, -89979568, -90543816, -90746752, -84661320, -79976584, -84875536, -87457344, +-75802952, -67523328, -81065896, -89801864, -57851600, -15802258, -34449932, -114977888, -175820928, -169301712, +-139757168, -133547176, -123692376, -75457208, -27874874, -44988708, -118811680, -179056112, -183894928, -155834832, +-134097472, -124879392, -101552888, -41813656, 33384780, 63154808, 9710384, -84638776, -133886480, -106619880, +-56604984, -45735496, -70000984, -82993800, -66955320, -50478212, -64196876, -103361608, -136314752, }, }, { { -10983842, --13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848, --14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642, --11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908, -49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707, -1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216, --47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856, --67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972, --50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584, -19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212, -42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048, -98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424, -150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576, -52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720, --74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680, --97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264, --43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912, --3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517, -6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732, -44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568, -34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520, -12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750, -2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186, -36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472, --24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, }, +-13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848, +-14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642, +-11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908, +49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707, +1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216, +-47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856, +-67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972, +-50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584, +19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212, +42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048, +98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424, +150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576, +52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720, +-74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680, +-97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264, +-43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912, +-3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517, +6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732, +44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568, +34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520, +12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750, +2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186, +36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472, +-24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, }, { -10983842, --13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848, --14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642, --11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908, -49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707, -1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216, --47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856, --67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972, --50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584, -19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212, -42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048, -98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424, -150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576, -52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720, --74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680, --97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264, --43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912, --3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517, -6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732, -44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568, -34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520, -12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750, -2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186, -36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472, --24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, }, +-13006235, -3929358, 17680232, 37721088, 46443092, 40728100, 10941429, -45254996, -94501088, -86430848, +-14913200, 62980328, 84985056, 45491220, -10434086, -37785512, -24608016, 9770514, 33019172, 23539642, +-11264625, -42012296, -46957416, -29937532, -7779797, 9924596, 23110682, 32777042, 39185672, 44401908, +49861348, 53220552, 51618528, 46033996, 39414916, 32559610, 24599962, 15992311, 8638253, 3759707, +1116155, -229781, -1309428, -3022046, -5972152, -10582263, -17145510, -25346750, -33986076, -41676216, +-47652124, -51702280, -53836880, -54471460, -54538568, -54916524, -55923160, -57564372, -59957208, -63242856, +-67312336, -71798432, -76145472, -79616344, -81476064, -81290312, -78923248, -74315280, -67587752, -59334972, +-50400368, -41213968, -31722628, -22126060, -13195213, -5475010, 1385127, 7913477, 13701483, 17743584, +19851876, 20965882, 21868900, 22339736, 22064320, 21849572, 23214298, 26851598, 31973884, 37264212, +42150272, 47022376, 52471616, 58609660, 65099892, 71545568, 77639584, 83133920, 88036632, 92906048, +98628016, 105656736, 113549808, 121376312, 128510256, 134914592, 140710640, 145655232, 149133072, 150623424, +150069920, 147765136, 143911472, 138366128, 130764576, 120871656, 108866144, 95364384, 81130320, 66660576, +52002928, 36966248, 21507048, 5965710, -8986682, -22654342, -34726420, -45481556, -55559696, -65417720, +-74898328, -83278880, -89790048, -94177360, -96808024, -98299992, -99149320, -99631968, -99754376, -99183680, +-97453880, -94422712, -90353760, -85500984, -79889616, -73622184, -67088464, -60686816, -54556284, -48695264, +-43115028, -37770480, -32540820, -27353036, -22235046, -17331266, -12957379, -9450002, -6832219, -4832912, +-3287798, -2183454, -1323924, -408559, 513785, 1160178, 1595044, 2214056, 3241090, 4732517, +6899865, 9940165, 13769128, 18282066, 23430120, 28734404, 33386392, 37118716, 40237400, 42695732, +44135084, 44812616, 45314052, 45488000, 44896368, 43860208, 42726872, 40971840, 38429220, 36053568, +34061776, 31361314, 28194312, 26342646, 25353728, 22824530, 19765976, 19673634, 20761336, 17531520, +12257300, 13286481, 17734456, 11180337, -6809671, -14278082, 1575179, 21179020, 20340966, 6315750, +2094870, 6956237, 2289218, -9325985, -3779571, 22872312, 43185360, 38782480, 25930866, 26627186, +36120140, 37453188, 31576062, 30486214, 29011430, 7890929, -32850594, -64304788, -62836444, -39954472, +-24018530, -21896818, -18189186, -8540542, -7630010, -15991774, -5650030, 39217348, 85677616, }, }, { { 10324028, -2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136, --135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022, -4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178, --19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488, --58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588, --46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357, --19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008, --51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152, -57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856, -163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576, -225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144, --27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080, --202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808, --220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848, --78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964, -77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024, -146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904, -114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920, -64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466, -31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134, -14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308, -23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988, -50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432, -71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, }, +2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136, +-135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022, +4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178, +-19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488, +-58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588, +-46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357, +-19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008, +-51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152, +57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856, +163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576, +225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144, +-27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080, +-202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808, +-220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848, +-78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964, +77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024, +146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904, +114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920, +64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466, +31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134, +14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308, +23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988, +50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432, +71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, }, { 10324028, -2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136, --135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022, -4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178, --19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488, --58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588, --46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357, --19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008, --51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152, -57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856, -163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576, -225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144, --27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080, --202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808, --220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848, --78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964, -77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024, -146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904, -114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920, -64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466, -31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134, -14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308, -23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988, -50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432, -71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, }, +2917894, -896574, -694711, -5630166, -7763691, 16464220, 60774860, 69673496, 7516, -103573136, +-135416560, -49716392, 73525544, 113157352, 43390444, -47776680, -72686416, -36822904, -2836826, 1784022, +4785668, 31545998, 67513664, 85577224, 83043192, 75681080, 70517992, 60548840, 39773008, 10974178, +-19559818, -46844136, -67238248, -79171280, -84281216, -85352808, -83596168, -79180408, -72855528, -65625488, +-58138288, -51459076, -47203300, -46050104, -47078212, -48954036, -50823420, -51943872, -51584168, -49573588, +-46244448, -41780904, -36245764, -30135102, -24321326, -19505594, -16079284, -14329622, -14419816, -16262357, +-19583978, -24019068, -29147258, -34573948, -39960376, -44920528, -49046916, -52075404, -53814328, -53897008, +-51870320, -47521664, -40890772, -32073206, -21276194, -8932458, 4456566, 18388902, 32183800, 45177152, +57294328, 68956776, 80292264, 90978144, 100936560, 110481592, 119705032, 128622456, 138112720, 149675856, +163716096, 178787136, 193075424, 206050512, 218157488, 229284688, 238077024, 242689280, 241976848, 235966576, +225290896, 210357840, 191294080, 168584976, 143340240, 116700168, 89182312, 60728152, 31309238, 1509144, +-27413166, -54177792, -78366512, -100525856, -121310816, -140697216, -158071984, -172816592, -184749088, -194308080, +-202391744, -209771568, -216545808, -222269920, -226527312, -229223472, -230488352, -230473312, -229108592, -225995808, +-220735552, -213378800, -204309440, -193762080, -181724896, -168168912, -153010896, -136079056, -117541984, -98166848, +-78799768, -59817620, -41325640, -23476292, -6266894, 10496363, 26674968, 41643468, 54920820, 66607964, +77071040, 86648280, 95760592, 104841760, 113982528, 122839288, 130839200, 137375072, 142081280, 145099024, +146820240, 147379648, 146776752, 145286928, 143180256, 140241424, 136197168, 131337952, 126123864, 120605904, +114806088, 109120624, 103819024, 98736464, 93811216, 89157080, 84482008, 79365088, 74079592, 69140920, +64355788, 59411208, 54780696, 50856172, 47135656, 43397424, 40339944, 38064148, 35719096, 33387466, +31977106, 30885110, 28834262, 26812944, 26247082, 25228638, 21756156, 18828062, 19435264, 19375134, +14382235, 10659035, 15308874, 19550154, 8751533, -11116986, -16849156, -1181116, 17405354, 23600308, +23253490, 24434606, 22022982, 13565654, 11261941, 23040888, 37060736, 39835820, 36630164, 39961988, +50042276, 60002840, 68639480, 74309376, 68069328, 48506288, 33592012, 40907416, 62417684, 74914432, +71076880, 64213520, 64415920, 66957468, 67494336, 74431248, 97751848, 132080984, 157776160, }, }, { { -2374580, --1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919, --56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236, -56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984, -51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508, --23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324, --44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612, --52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256, --83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184, --81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328, --32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288, --24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032, --38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071, -14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732, -62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376, -96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192, -152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072, -112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036, -58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454, -25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750, --25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900, --62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304, --36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112, -22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884, -40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, }, +-1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919, +-56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236, +56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984, +51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508, +-23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324, +-44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612, +-52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256, +-83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184, +-81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328, +-32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288, +-24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032, +-38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071, +14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732, +62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376, +96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192, +152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072, +112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036, +58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454, +25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750, +-25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900, +-62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304, +-36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112, +22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884, +40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, }, { -2374580, --1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919, --56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236, -56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984, -51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508, --23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324, --44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612, --52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256, --83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184, --81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328, --32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288, --24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032, --38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071, -14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732, -62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376, -96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192, -152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072, -112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036, -58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454, -25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750, --25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900, --62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304, --36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112, -22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884, -40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, }, +-1975685, -1382443, -914828, -1770600, -5363341, -9013526, -5036386, 7479149, 10615012, -15942919, +-56564184, -57993868, 7053947, 85042496, 88171384, 2945811, -83288008, -83608520, -10362145, 53223236, +56314536, 20531554, -10377178, -20672214, -16948478, -3994320, 16381005, 36971080, 49690624, 53488984, +51806432, 47150152, 41786272, 38687456, 38138772, 36497020, 30347702, 19595252, 5913633, -9071508, +-23396298, -34890168, -42566348, -46789912, -48198660, -47502340, -45899240, -44558676, -43887048, -43898324, +-44784696, -46591268, -48833780, -50869056, -52300892, -52907556, -52671332, -51987356, -51447804, -51408612, +-52043192, -53603876, -56228100, -59635620, -63368484, -67205504, -71101576, -74897784, -78367048, -81413256, +-83995064, -85938000, -87039120, -87366616, -87256016, -86901144, -86133960, -84820776, -83342768, -82242184, +-81369232, -79879952, -77301896, -74104288, -70828304, -67064304, -61832496, -54830088, -46868292, -39093328, +-32087700, -25779468, -20059644, -15351824, -12449500, -11724724, -12670690, -14439680, -16755741, -20076288, +-24864640, -30848602, -36961416, -41910292, -44918916, -46094124, -46125800, -45565308, -44384192, -42154032, +-38555920, -33717104, -28170690, -22527640, -17147656, -12047383, -7031935, -1874216, 3546569, 9167071, +14823006, 20462834, 26199838, 32102734, 38029252, 43714716, 48913236, 53425636, 57149372, 60168732, +62699008, 64918968, 66953172, 68969656, 71169216, 73711840, 76739792, 80424336, 84902376, 90224376, +96379064, 103264976, 110630304, 118148104, 125512904, 132400416, 138475120, 143570016, 147709824, 150860192, +152853584, 153623456, 153249264, 151710592, 148889344, 144849920, 139821584, 133943384, 127320008, 120237072, +112997368, 105686264, 98361192, 91252488, 84576496, 78442744, 73074040, 68684040, 65085396, 61884036, +58992988, 56423524, 53806812, 50775104, 47516296, 44320840, 41041632, 37541236, 33990908, 30249454, +25816512, 20746840, 15533823, 10032507, 3857954, -2369748, -7787850, -12741557, -17762374, -22230750, +-25899190, -29855392, -34100428, -37107444, -39562016, -44016436, -49089864, -50723564, -51017768, -55984900, +-62226024, -60142964, -54548768, -61892088, -77720120, -72277856, -36496484, -5768141, -11269994, -33130304, +-36767604, -31787052, -48571248, -72495288, -57268556, -2782065, 35726612, 27451820, 5108864, 6401112, +22469658, 29867740, 33055678, 42106248, 39908836, 9390946, -26454852, -28629716, 3511673, 33764884, +40212704, 35827544, 37678676, 43050604, 45202920, 52891448, 79491256, 120323512, 151594096, }, }, }; const Word32 CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -94963336, --259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848, -190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752, --49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636, -52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992, -363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152, -410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760, -376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704, -341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160, -310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072, -260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632, -232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696, -229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568, -206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744, -175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880, -163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248, -149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144, -123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800, -108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064, -99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304, -89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632, -65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456, -40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832, -43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852, -35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, }, +-259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848, +190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752, +-49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636, +52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992, +363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152, +410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760, +376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704, +341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160, +310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072, +260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632, +232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696, +229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568, +206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744, +175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880, +163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248, +149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144, +123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800, +108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064, +99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304, +89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632, +65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456, +40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832, +43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852, +35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, }, { -94963336, --259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848, -190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752, --49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636, -52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992, -363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152, -410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760, -376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704, -341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160, -310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072, -260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632, -232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696, -229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568, -206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744, -175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880, -163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248, -149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144, -123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800, -108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064, -99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304, -89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632, -65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456, -40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832, -43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852, -35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, }, +-259899744, -365878592, -407935456, -399034688, -360622624, -313190080, -256787504, -171167872, -51148764, 77082848, +190087200, 280461376, 307977600, 197138464, -42101416, -233239808, -184613808, 66844724, 261040592, 200156752, +-49803368, -281876544, -387830720, -404907520, -388901760, -342356672, -260487088, -167980464, -88047904, -17336636, +52413632, 115413288, 165056128, 205573776, 242155088, 273263552, 297519360, 317817920, 336046816, 351308992, +363975936, 375640512, 385805088, 393180096, 398694848, 403710272, 407503264, 409267424, 410109792, 410945152, +410935488, 409496672, 407403424, 405001472, 401672320, 397503520, 393377664, 389382816, 385003008, 380521760, +376547840, 372777920, 368674080, 364578848, 360973760, 357542080, 353929472, 350476320, 347467136, 344584704, +341609344, 338776288, 336161728, 333495616, 330667392, 327781152, 324807968, 321659232, 318333312, 314676160, +310469760, 305917632, 301435296, 296905728, 291875776, 286476992, 281314464, 276465984, 271412928, 265969072, +260564928, 255623568, 251213712, 247219392, 243490816, 239998480, 237063936, 235104368, 234008064, 233171632, +232267536, 231538464, 231289888, 231495520, 231909984, 232202576, 232065680, 231499280, 230856096, 230369696, +229821552, 228851424, 227326176, 225292512, 222869616, 220299072, 217801008, 215311008, 212592832, 209589568, +206436000, 203235168, 200035424, 196905456, 193827584, 190668096, 187384048, 184121488, 181036096, 178191744, +175648064, 173445808, 171507168, 169725296, 168109312, 166713456, 165531792, 164576160, 163917968, 163530880, +163231840, 162854416, 162346000, 161662032, 160738608, 159572528, 158192768, 156563904, 154628480, 152397248, +149915296, 147220208, 144376944, 141480512, 138593232, 135757472, 133036608, 130476272, 128080216, 125873144, +123902288, 122153704, 120579600, 119167624, 117866248, 116520856, 115040160, 113503104, 111976240, 110411800, +108827488, 107345728, 105978320, 104645264, 103426568, 102459664, 101669928, 100940320, 100377144, 100041064, +99700688, 99215896, 98755256, 98316632, 97593472, 96572336, 95553896, 94439352, 92886184, 91133304, +89595704, 87897040, 85607824, 83369608, 81698864, 79643728, 76585176, 73904040, 72387376, 70017632, +65605624, 62018792, 61284352, 59253904, 51306604, 41377716, 38103876, 42578696, 47088412, 45931456, +40431748, 33403034, 26739392, 25276420, 33993592, 48282412, 55147916, 48762376, 38468412, 36508832, +43465068, 51666844, 58545236, 68971808, 84820232, 98487360, 99587408, 85861768, 65221224, 47458852, +35827544, 27596776, 20706038, 16087337, 13238700, 8391292, 366683, -5357435, -3285113, }, }, { { 75060456, -181290576, 166391328, 4222490, -246988544, -485340416, -637412352, -668590592, -562286912, -345107616, -95697776, -137160848, 373837696, 571850752, 535651136, 141639424, -359325568, -489517280, -90843392, 444124864, 613286976, -345293888, -38591892, -275234400, -372770944, -427594048, -446676608, -404071584, -331896832, -276191616, -232449536, --177023520, -115572200, -64596308, -20371030, 27089432, 74404936, 116204632, 156305136, 197281808, 234746272, -267057840, 297569824, 326030976, 349027296, 367687328, 385397632, 400829984, 411187808, 418360416, 425423488, -431585152, 435494112, 438640192, 441890944, 443526240, 442963072, 441746528, 439925440, 436022944, 430542016, -425219488, 419662880, 412594432, 404927904, 398160640, 391658592, 384455936, 377527616, 371925376, 366999584, -362234336, 358501472, 356285792, 354875424, 353917120, 353771072, 354289152, 354975840, 355882048, 356943456, -357440608, 357242496, 357187200, 357383680, 356850592, 355441280, 354234400, 353652448, 353077440, 352439104, -352331200, 352665664, 352851968, 352886848, 352854656, 352064384, 349902400, 346624256, 342358816, 336486528, -328759872, 319841920, 310215840, 299768864, 288650272, 277372736, 266137104, 255173136, 245376320, 237521888, -231328544, 226142384, 221828624, 218345392, 215404416, 213101776, 211880944, 211491168, 210960736, 209735072, -207901120, 205508272, 202684336, 200050448, 198051136, 196295568, 194327408, 192371584, 190693856, 189062320, -187366880, 185905504, 184712048, 183460608, 182183920, 181219696, 180506736, 179776064, 179172080, 178942832, -178924048, 178977728, 179375552, 180231328, 181216480, 182158688, 183190560, 184158000, 184690032, 184836608, -184854320, 184577824, 183745136, 182548464, 181182128, 179390048, 177025664, 174380512, 171548512, 168253728, -164523552, 160702112, 156747520, 152372560, 147711440, 143038512, 138227072, 133205192, 128355632, 123843768, -119330832, 114747032, 110418776, 106214008, 101653288, 96854200, 92291328, 87922816, 83602072, 79703320, -76371496, 73081552, 69701416, 66722316, 63989108, 60789356, 57319024, 54249196, 51235200, 47760036, -44398688, 41387380, 37823628, 33910916, 30954904, 28005872, 23077934, 18101140, 15947750, 13168370, -5380521, -1872069, -1912871, -4445828, -23741506, -48941688, -52257404, -31860604, -17410724, -24125906, --34259880, -38182796, -57206280, -101681200, -139482816, -137172128, -108657304, -93728536, -106906032, -132457864, --153244432, -164201968, -173872080, -205003616, -268345264, -323572640, -301992576, -192217504, -70960912, -19066970, --34032248, -56741888, -58976344, -64205468, -93292592, -128591856, -136745856, -103326176, -38155952, }, +181290576, 166391328, 4222490, -246988544, -485340416, -637412352, -668590592, -562286912, -345107616, -95697776, +137160848, 373837696, 571850752, 535651136, 141639424, -359325568, -489517280, -90843392, 444124864, 613286976, +345293888, -38591892, -275234400, -372770944, -427594048, -446676608, -404071584, -331896832, -276191616, -232449536, +-177023520, -115572200, -64596308, -20371030, 27089432, 74404936, 116204632, 156305136, 197281808, 234746272, +267057840, 297569824, 326030976, 349027296, 367687328, 385397632, 400829984, 411187808, 418360416, 425423488, +431585152, 435494112, 438640192, 441890944, 443526240, 442963072, 441746528, 439925440, 436022944, 430542016, +425219488, 419662880, 412594432, 404927904, 398160640, 391658592, 384455936, 377527616, 371925376, 366999584, +362234336, 358501472, 356285792, 354875424, 353917120, 353771072, 354289152, 354975840, 355882048, 356943456, +357440608, 357242496, 357187200, 357383680, 356850592, 355441280, 354234400, 353652448, 353077440, 352439104, +352331200, 352665664, 352851968, 352886848, 352854656, 352064384, 349902400, 346624256, 342358816, 336486528, +328759872, 319841920, 310215840, 299768864, 288650272, 277372736, 266137104, 255173136, 245376320, 237521888, +231328544, 226142384, 221828624, 218345392, 215404416, 213101776, 211880944, 211491168, 210960736, 209735072, +207901120, 205508272, 202684336, 200050448, 198051136, 196295568, 194327408, 192371584, 190693856, 189062320, +187366880, 185905504, 184712048, 183460608, 182183920, 181219696, 180506736, 179776064, 179172080, 178942832, +178924048, 178977728, 179375552, 180231328, 181216480, 182158688, 183190560, 184158000, 184690032, 184836608, +184854320, 184577824, 183745136, 182548464, 181182128, 179390048, 177025664, 174380512, 171548512, 168253728, +164523552, 160702112, 156747520, 152372560, 147711440, 143038512, 138227072, 133205192, 128355632, 123843768, +119330832, 114747032, 110418776, 106214008, 101653288, 96854200, 92291328, 87922816, 83602072, 79703320, +76371496, 73081552, 69701416, 66722316, 63989108, 60789356, 57319024, 54249196, 51235200, 47760036, +44398688, 41387380, 37823628, 33910916, 30954904, 28005872, 23077934, 18101140, 15947750, 13168370, +5380521, -1872069, -1912871, -4445828, -23741506, -48941688, -52257404, -31860604, -17410724, -24125906, +-34259880, -38182796, -57206280, -101681200, -139482816, -137172128, -108657304, -93728536, -106906032, -132457864, +-153244432, -164201968, -173872080, -205003616, -268345264, -323572640, -301992576, -192217504, -70960912, -19066970, +-34032248, -56741888, -58976344, -64205468, -93292592, -128591856, -136745856, -103326176, -38155952, }, { -75060456, --181290576, -166391328, -4222490, 246988544, 485340416, 637412352, 668590592, 562286912, 345107616, 95697776, --137160848, -373837696, -571850752, -535651136, -141639424, 359325568, 489517280, 90843392, -444124864, -613286976, --345293888, 38591892, 275234400, 372770944, 427594048, 446676608, 404071584, 331896832, 276191616, 232449536, -177023520, 115572200, 64596308, 20371030, -27089432, -74404936, -116204632, -156305136, -197281808, -234746272, --267057840, -297569824, -326030976, -349027296, -367687328, -385397632, -400829984, -411187808, -418360416, -425423488, --431585152, -435494112, -438640192, -441890944, -443526240, -442963072, -441746528, -439925440, -436022944, -430542016, --425219488, -419662880, -412594432, -404927904, -398160640, -391658592, -384455936, -377527616, -371925376, -366999584, --362234336, -358501472, -356285792, -354875424, -353917120, -353771072, -354289152, -354975840, -355882048, -356943456, --357440608, -357242496, -357187200, -357383680, -356850592, -355441280, -354234400, -353652448, -353077440, -352439104, --352331200, -352665664, -352851968, -352886848, -352854656, -352064384, -349902400, -346624256, -342358816, -336486528, --328759872, -319841920, -310215840, -299768864, -288650272, -277372736, -266137104, -255173136, -245376320, -237521888, --231328544, -226142384, -221828624, -218345392, -215404416, -213101776, -211880944, -211491168, -210960736, -209735072, --207901120, -205508272, -202684336, -200050448, -198051136, -196295568, -194327408, -192371584, -190693856, -189062320, --187366880, -185905504, -184712048, -183460608, -182183920, -181219696, -180506736, -179776064, -179172080, -178942832, --178924048, -178977728, -179375552, -180231328, -181216480, -182158688, -183190560, -184158000, -184690032, -184836608, --184854320, -184577824, -183745136, -182548464, -181182128, -179390048, -177025664, -174380512, -171548512, -168253728, --164523552, -160702112, -156747520, -152372560, -147711440, -143038512, -138227072, -133205192, -128355632, -123843768, --119330832, -114747032, -110418776, -106214008, -101653288, -96854200, -92291328, -87922816, -83602072, -79703320, --76371496, -73081552, -69701416, -66722316, -63989108, -60789356, -57319024, -54249196, -51235200, -47760036, --44398688, -41387380, -37823628, -33910916, -30954904, -28005872, -23077934, -18101140, -15947750, -13168370, --5380521, 1872069, 1912871, 4445828, 23741506, 48941688, 52257404, 31860604, 17410724, 24125906, -34259880, 38182796, 57206280, 101681200, 139482816, 137172128, 108657304, 93728536, 106906032, 132457864, -153244432, 164201968, 173872080, 205003616, 268345264, 323572640, 301992576, 192217504, 70960912, 19066970, -34032248, 56741888, 58976344, 64205468, 93292592, 128591856, 136745856, 103326176, 38155952, }, +-181290576, -166391328, -4222490, 246988544, 485340416, 637412352, 668590592, 562286912, 345107616, 95697776, +-137160848, -373837696, -571850752, -535651136, -141639424, 359325568, 489517280, 90843392, -444124864, -613286976, +-345293888, 38591892, 275234400, 372770944, 427594048, 446676608, 404071584, 331896832, 276191616, 232449536, +177023520, 115572200, 64596308, 20371030, -27089432, -74404936, -116204632, -156305136, -197281808, -234746272, +-267057840, -297569824, -326030976, -349027296, -367687328, -385397632, -400829984, -411187808, -418360416, -425423488, +-431585152, -435494112, -438640192, -441890944, -443526240, -442963072, -441746528, -439925440, -436022944, -430542016, +-425219488, -419662880, -412594432, -404927904, -398160640, -391658592, -384455936, -377527616, -371925376, -366999584, +-362234336, -358501472, -356285792, -354875424, -353917120, -353771072, -354289152, -354975840, -355882048, -356943456, +-357440608, -357242496, -357187200, -357383680, -356850592, -355441280, -354234400, -353652448, -353077440, -352439104, +-352331200, -352665664, -352851968, -352886848, -352854656, -352064384, -349902400, -346624256, -342358816, -336486528, +-328759872, -319841920, -310215840, -299768864, -288650272, -277372736, -266137104, -255173136, -245376320, -237521888, +-231328544, -226142384, -221828624, -218345392, -215404416, -213101776, -211880944, -211491168, -210960736, -209735072, +-207901120, -205508272, -202684336, -200050448, -198051136, -196295568, -194327408, -192371584, -190693856, -189062320, +-187366880, -185905504, -184712048, -183460608, -182183920, -181219696, -180506736, -179776064, -179172080, -178942832, +-178924048, -178977728, -179375552, -180231328, -181216480, -182158688, -183190560, -184158000, -184690032, -184836608, +-184854320, -184577824, -183745136, -182548464, -181182128, -179390048, -177025664, -174380512, -171548512, -168253728, +-164523552, -160702112, -156747520, -152372560, -147711440, -143038512, -138227072, -133205192, -128355632, -123843768, +-119330832, -114747032, -110418776, -106214008, -101653288, -96854200, -92291328, -87922816, -83602072, -79703320, +-76371496, -73081552, -69701416, -66722316, -63989108, -60789356, -57319024, -54249196, -51235200, -47760036, +-44398688, -41387380, -37823628, -33910916, -30954904, -28005872, -23077934, -18101140, -15947750, -13168370, +-5380521, 1872069, 1912871, 4445828, 23741506, 48941688, 52257404, 31860604, 17410724, 24125906, +34259880, 38182796, 57206280, 101681200, 139482816, 137172128, 108657304, 93728536, 106906032, 132457864, +153244432, 164201968, 173872080, 205003616, 268345264, 323572640, 301992576, 192217504, 70960912, 19066970, +34032248, 56741888, 58976344, 64205468, 93292592, 128591856, 136745856, 103326176, 38155952, }, }, { { -9009231, --36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964, --36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080, -36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548, --18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860, -28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304, -185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208, -276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752, -30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608, --153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264, --67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376, --42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488, --83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310, --5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426, -25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234, -18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952, --15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332, --44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232, --71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712, --113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976, --115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088, --81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546, --37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677, --8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700, --45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, }, +-36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964, +-36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080, +36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548, +-18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860, +28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304, +185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208, +276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752, +30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608, +-153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264, +-67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376, +-42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488, +-83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310, +-5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426, +25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234, +18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952, +-15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332, +-44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232, +-71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712, +-113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976, +-115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088, +-81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546, +-37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677, +-8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700, +-45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, }, { -9009231, --36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964, --36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080, -36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548, --18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860, -28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304, -185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208, -276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752, -30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608, --153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264, --67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376, --42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488, --83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310, --5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426, -25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234, -18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952, --15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332, --44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232, --71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712, --113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976, --115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088, --81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546, --37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677, --8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700, --45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, }, +-36637680, -70193728, -75922136, -36270460, 20501490, 50464256, 39287140, 6155225, -24621436, -40747964, +-36815384, -10376104, 28257664, 50878184, 32616518, -14510010, -41502804, -12632573, 47379932, 74487080, +36009004, -36733244, -90490128, -105127376, -96395712, -82754896, -69029248, -55150600, -42622720, -31022548, +-18132278, -4883915, 5132486, 10377178, 11759620, 10193031, 7223062, 6258841, 10063108, 18169860, +28565290, 40365176, 53441740, 67170064, 81056232, 95515240, 111126912, 127973920, 146063792, 165386304, +185295632, 204663248, 222767072, 239341344, 253865856, 265567488, 274117152, 279660896, 282155200, 281194208, +276510528, 268132128, 255947840, 239568976, 218812480, 194024608, 165772320, 134540384, 100960184, 66029752, +30862024, -3540664, -36068060, -65486976, -91001768, -112490560, -129825584, -142414672, -149966304, -153312608, +-153736736, -151610736, -146457312, -138457936, -129109936, -119890256, -110741440, -100565048, -89078696, -77489264, +-67181880, -58417460, -50668268, -43698608, -37853156, -33639796, -31494458, -31674310, -33990908, -37805376, +-42507828, -47871704, -53913652, -60627760, -67760624, -74542376, -79847200, -83028160, -84393960, -84554488, +-83609056, -81294064, -77459200, -72026064, -64901252, -56278568, -46660524, -36447628, -25920664, -15577310, +-5956046, 2781528, 10603737, 17167522, 22128208, 25563108, 27681064, 28526636, 28289876, 27351426, +25821344, 23676544, 21408264, 19786914, 19047106, 18995030, 19587198, 20571820, 21073794, 20432234, +18941880, 17059610, 14637249, 11552388, 8166344, 4611721, 605590, -3702262, -7746511, -11465952, +-15144055, -18547816, -21358872, -23982024, -26864484, -29727080, -32395328, -35358320, -38722352, -41896332, +-44844828, -48186848, -51808044, -55009404, -57896160, -60905320, -63523640, -65251828, -66866200, -69036232, +-71145056, -72943576, -75442712, -78984448, -82773144, -86984360, -92518968, -98582384, -103691248, -108415712, +-113725368, -118238840, -120716496, -122672320, -125000728, -125737312, -124344672, -123203824, -122424824, -119594976, +-115836880, -114016888, -111642304, -105648144, -100828112, -100789464, -97543000, -86452320, -79858472, -84221088, +-81069656, -60564408, -50760608, -70058968, -75491032, -19363860, 59583544, 75100184, 18751290, -32347546, +-37635188, -37250252, -54767276, -44564580, 21100638, 85975048, 85095112, 34751656, -3085934, -8105677, +-8428873, -26249766, -52829708, -62334472, -32243930, 30965640, 78734800, 61895848, -5378373, -54467700, +-45957760, -11283953, 3053185, -2666638, 354872, 17393006, 27977416, 21667574, 7367480, }, }, { { 3446175, --204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336, --39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672, -148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856, --171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248, -242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312, -241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248, -170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648, -88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208, --36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452, --39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160, -62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680, -208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640, -229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104, -231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072, -193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344, -126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208, -121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648, -109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988, -56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362, -15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810, -13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344, -31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408, -18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356, -20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, }, +-204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336, +-39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672, +148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856, +-171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248, +242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312, +241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248, +170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648, +88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208, +-36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452, +-39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160, +62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680, +208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640, +229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104, +231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072, +193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344, +126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208, +121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648, +109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988, +56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362, +15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810, +13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344, +31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408, +18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356, +20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, }, { 3446175, --204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336, --39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672, -148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856, --171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248, -242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312, -241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248, -170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648, -88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208, --36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452, --39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160, -62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680, -208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640, -229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104, -231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072, -193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344, -126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208, -121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648, -109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988, -56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362, -15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810, -13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344, -31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408, -18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356, -20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, }, +-204011, -23846196, -52114596, -57095148, -29986388, 2611340, 5036923, -25295746, -55882892, -60017336, +-39953932, -4871030, 43847856, 85644336, 72697152, -8475581, -85297512, -62989992, 54970212, 156982672, +148635392, 47907140, -62916440, -138422496, -189236800, -230008384, -253524944, -252534416, -234389792, -207569856, +-171629584, -125080720, -71781248, -16589311, 37920268, 89157080, 134070624, 171440592, 201639056, 224939248, +242043424, 254667408, 263904272, 269539808, 271831712, 272078112, 270801984, 267182944, 260721696, 251943312, +241457152, 229871488, 218583232, 209222352, 202222624, 196823312, 192198176, 187797984, 183002112, 177325248, +170842528, 163924944, 156742144, 149337616, 141901424, 134577424, 127103648, 118936768, 109767552, 99714648, +88896696, 77050104, 63917168, 49879064, 35686884, 21620328, 7586523, -5926518, -17868138, -27814208, +-36255428, -43333000, -48244832, -50476068, -50791748, -50297288, -49199924, -47218872, -44614508, -41934452, +-39023000, -35104380, -29783450, -23331336, -15924665, -7117298, 3712999, 16642998, 31121334, 46524160, +62676456, 79761840, 97699232, 115731112, 132824008, 148484000, 162958576, 176581136, 189124592, 199893680, +208319328, 214461136, 219077152, 223164352, 227175312, 230635984, 232696496, 233028288, 232094656, 230754640, +229811344, 229692704, 230215072, 230740144, 230807792, 230511424, 230201664, 230107168, 230344464, 230907104, +231461696, 231452032, 230528608, 228649568, 225833680, 222136240, 217763424, 212854816, 207249888, 200751072, +193433520, 185503392, 177138944, 168663904, 160532448, 153006592, 146134112, 140022384, 134765872, 130244344, +126378336, 123361128, 121290416, 119954680, 119273392, 119402240, 120142584, 120883464, 121341952, 121644208, +121653872, 121032176, 119935888, 118821880, 117758880, 116659904, 115715008, 114868360, 113551416, 111552648, +109263432, 106677320, 103307384, 99273336, 95068024, 90331752, 84431000, 77818904, 71178880, 64132988, +56488484, 49333068, 43240656, 37349572, 31592168, 27217208, 24106578, 20869782, 17935246, 16546362, +15436112, 13311177, 12393128, 13733695, 13445932, 10598369, 11399380, 16712791, 16895864, 10786810, +13023415, 25579752, 25152940, 5520107, 5433134, 53553412, 109159280, 110144976, 64105608, 32104344, +31825170, 25709138, 6568616, 18708340, 73229192, 112479824, 93217432, 48184700, 27605902, 28006408, +18255222, -5207648, -29517162, -56871808, -84257056, -80665392, -27346594, 38667592, 62351652, 41161356, +20950850, 27518930, 39184596, 31987306, 19144816, 27559194, 53057340, 60521996, 27237608, }, }, { { -2225330, --1968169, 6158983, 13817447, 11214160, 1439351, -3064459, -928250, -8775692, -40647572, -86008328, --111542984, -82070920, 9318468, 113516520, 141111680, 46847892, -94969776, -142930064, -40359272, 117732032, -193996688, 151521072, 55995100, -28795072, -94653560, -151199488, -189946544, -200638864, -190920960, -173208512, --149123952, -116706608, -79762376, -42197516, -2463164, 40505836, 82167016, 116783920, 142430784, 159909152, -170632064, 176767440, 180639344, 183267872, 184873648, 186086976, 187212800, 187352384, 185622576, 182334784, -178134848, 173134432, 167612704, 162464112, 158304448, 154957056, 152108416, 149671024, 147394144, 144867632, -141955648, 138645296, 134621984, 129568960, 123688080, 117348168, 110399448, 102380208, 93241592, 83318608, -72623064, 60706140, 47369732, 33063732, 18300856, 3044595, -12803298, -28537374, -42998528, -55863564, --67835784, -79229800, -89193048, -96977680, -103273024, -109301552, -114945672, -118789672, -119976688, -119090856, --117023904, -113776368, -108802256, -102050568, -94226752, -86180128, -78276312, -70336528, -62114892, -53812720, --46037216, -39275328, -33621004, -29006062, -25313464, -22121766, -18753974, -14859513, -10736344, -6897718, --3529926, -406948, 2980171, 7223062, 12537546, 18391586, 23873576, 28486908, 32414656, 36171140, -40293772, 45185204, 50880868, 57031796, 63330904, 69791072, 76509472, 83419000, 90373632, 97126392, -103161896, 107887432, 111051752, 112713360, 112941000, 111880136, 109895864, 107271104, 103991896, 100135016, -96173448, 92631704, 89830312, 88130584, 87942136, 89307400, 91908544, 95536176, 100127496, 105472048, -111369040, 117878600, 125004488, 132456792, 140041696, 147776400, 155345216, 162075952, 167646000, 172148736, -175450480, 177293024, 177915264, 177747760, 176772800, 174956560, 172788144, 170622400, 168202192, 165463616, -162873744, 160496480, 157845424, 154883504, 151892592, 148480240, 144195472, 139637984, 135422464, 130997040, -126027760, 121446640, 117606944, 113443512, 108729784, 104593192, 100958576, 96706560, 92480312, 89471688, -86388432, 82171312, 79161080, 78174848, 75229576, 69644504, 67556616, 69301448, 65283504, 55109264, -53410604, 61128660, 55084568, 31154082, 29526290, 77868296, 133987408, 135236704, 87899192, 51497732, -46257336, 40239012, 25975426, 39135744, 86180664, 117801824, 100321312, 61812632, 41196788, 36080408, -25941066, 7624641, -14322105, -36024040, -35353488, 14984604, 94637456, 136563312, 107327472, 51139640, -26530550, 33206002, 33858836, 17900350, 3644280, -3314104, -12925167, -20556250, -10763188, }, +-1968169, 6158983, 13817447, 11214160, 1439351, -3064459, -928250, -8775692, -40647572, -86008328, +-111542984, -82070920, 9318468, 113516520, 141111680, 46847892, -94969776, -142930064, -40359272, 117732032, +193996688, 151521072, 55995100, -28795072, -94653560, -151199488, -189946544, -200638864, -190920960, -173208512, +-149123952, -116706608, -79762376, -42197516, -2463164, 40505836, 82167016, 116783920, 142430784, 159909152, +170632064, 176767440, 180639344, 183267872, 184873648, 186086976, 187212800, 187352384, 185622576, 182334784, +178134848, 173134432, 167612704, 162464112, 158304448, 154957056, 152108416, 149671024, 147394144, 144867632, +141955648, 138645296, 134621984, 129568960, 123688080, 117348168, 110399448, 102380208, 93241592, 83318608, +72623064, 60706140, 47369732, 33063732, 18300856, 3044595, -12803298, -28537374, -42998528, -55863564, +-67835784, -79229800, -89193048, -96977680, -103273024, -109301552, -114945672, -118789672, -119976688, -119090856, +-117023904, -113776368, -108802256, -102050568, -94226752, -86180128, -78276312, -70336528, -62114892, -53812720, +-46037216, -39275328, -33621004, -29006062, -25313464, -22121766, -18753974, -14859513, -10736344, -6897718, +-3529926, -406948, 2980171, 7223062, 12537546, 18391586, 23873576, 28486908, 32414656, 36171140, +40293772, 45185204, 50880868, 57031796, 63330904, 69791072, 76509472, 83419000, 90373632, 97126392, +103161896, 107887432, 111051752, 112713360, 112941000, 111880136, 109895864, 107271104, 103991896, 100135016, +96173448, 92631704, 89830312, 88130584, 87942136, 89307400, 91908544, 95536176, 100127496, 105472048, +111369040, 117878600, 125004488, 132456792, 140041696, 147776400, 155345216, 162075952, 167646000, 172148736, +175450480, 177293024, 177915264, 177747760, 176772800, 174956560, 172788144, 170622400, 168202192, 165463616, +162873744, 160496480, 157845424, 154883504, 151892592, 148480240, 144195472, 139637984, 135422464, 130997040, +126027760, 121446640, 117606944, 113443512, 108729784, 104593192, 100958576, 96706560, 92480312, 89471688, +86388432, 82171312, 79161080, 78174848, 75229576, 69644504, 67556616, 69301448, 65283504, 55109264, +53410604, 61128660, 55084568, 31154082, 29526290, 77868296, 133987408, 135236704, 87899192, 51497732, +46257336, 40239012, 25975426, 39135744, 86180664, 117801824, 100321312, 61812632, 41196788, 36080408, +25941066, 7624641, -14322105, -36024040, -35353488, 14984604, 94637456, 136563312, 107327472, 51139640, +26530550, 33206002, 33858836, 17900350, 3644280, -3314104, -12925167, -20556250, -10763188, }, { 2225330, -1968169, -6158983, -13817447, -11214160, -1439351, 3064459, 928250, 8775692, 40647572, 86008328, -111542984, 82070920, -9318468, -113516520, -141111680, -46847892, 94969776, 142930064, 40359272, -117732032, --193996688, -151521072, -55995100, 28795072, 94653560, 151199488, 189946544, 200638864, 190920960, 173208512, -149123952, 116706608, 79762376, 42197516, 2463164, -40505836, -82167016, -116783920, -142430784, -159909152, --170632064, -176767440, -180639344, -183267872, -184873648, -186086976, -187212800, -187352384, -185622576, -182334784, --178134848, -173134432, -167612704, -162464112, -158304448, -154957056, -152108416, -149671024, -147394144, -144867632, --141955648, -138645296, -134621984, -129568960, -123688080, -117348168, -110399448, -102380208, -93241592, -83318608, --72623064, -60706140, -47369732, -33063732, -18300856, -3044595, 12803298, 28537374, 42998528, 55863564, -67835784, 79229800, 89193048, 96977680, 103273024, 109301552, 114945672, 118789672, 119976688, 119090856, -117023904, 113776368, 108802256, 102050568, 94226752, 86180128, 78276312, 70336528, 62114892, 53812720, -46037216, 39275328, 33621004, 29006062, 25313464, 22121766, 18753974, 14859513, 10736344, 6897718, -3529926, 406948, -2980171, -7223062, -12537546, -18391586, -23873576, -28486908, -32414656, -36171140, --40293772, -45185204, -50880868, -57031796, -63330904, -69791072, -76509472, -83419000, -90373632, -97126392, --103161896, -107887432, -111051752, -112713360, -112941000, -111880136, -109895864, -107271104, -103991896, -100135016, --96173448, -92631704, -89830312, -88130584, -87942136, -89307400, -91908544, -95536176, -100127496, -105472048, --111369040, -117878600, -125004488, -132456792, -140041696, -147776400, -155345216, -162075952, -167646000, -172148736, --175450480, -177293024, -177915264, -177747760, -176772800, -174956560, -172788144, -170622400, -168202192, -165463616, --162873744, -160496480, -157845424, -154883504, -151892592, -148480240, -144195472, -139637984, -135422464, -130997040, --126027760, -121446640, -117606944, -113443512, -108729784, -104593192, -100958576, -96706560, -92480312, -89471688, --86388432, -82171312, -79161080, -78174848, -75229576, -69644504, -67556616, -69301448, -65283504, -55109264, --53410604, -61128660, -55084568, -31154082, -29526290, -77868296, -133987408, -135236704, -87899192, -51497732, --46257336, -40239012, -25975426, -39135744, -86180664, -117801824, -100321312, -61812632, -41196788, -36080408, --25941066, -7624641, 14322105, 36024040, 35353488, -14984604, -94637456, -136563312, -107327472, -51139640, --26530550, -33206002, -33858836, -17900350, -3644280, 3314104, 12925167, 20556250, 10763188, }, +1968169, -6158983, -13817447, -11214160, -1439351, 3064459, 928250, 8775692, 40647572, 86008328, +111542984, 82070920, -9318468, -113516520, -141111680, -46847892, 94969776, 142930064, 40359272, -117732032, +-193996688, -151521072, -55995100, 28795072, 94653560, 151199488, 189946544, 200638864, 190920960, 173208512, +149123952, 116706608, 79762376, 42197516, 2463164, -40505836, -82167016, -116783920, -142430784, -159909152, +-170632064, -176767440, -180639344, -183267872, -184873648, -186086976, -187212800, -187352384, -185622576, -182334784, +-178134848, -173134432, -167612704, -162464112, -158304448, -154957056, -152108416, -149671024, -147394144, -144867632, +-141955648, -138645296, -134621984, -129568960, -123688080, -117348168, -110399448, -102380208, -93241592, -83318608, +-72623064, -60706140, -47369732, -33063732, -18300856, -3044595, 12803298, 28537374, 42998528, 55863564, +67835784, 79229800, 89193048, 96977680, 103273024, 109301552, 114945672, 118789672, 119976688, 119090856, +117023904, 113776368, 108802256, 102050568, 94226752, 86180128, 78276312, 70336528, 62114892, 53812720, +46037216, 39275328, 33621004, 29006062, 25313464, 22121766, 18753974, 14859513, 10736344, 6897718, +3529926, 406948, -2980171, -7223062, -12537546, -18391586, -23873576, -28486908, -32414656, -36171140, +-40293772, -45185204, -50880868, -57031796, -63330904, -69791072, -76509472, -83419000, -90373632, -97126392, +-103161896, -107887432, -111051752, -112713360, -112941000, -111880136, -109895864, -107271104, -103991896, -100135016, +-96173448, -92631704, -89830312, -88130584, -87942136, -89307400, -91908544, -95536176, -100127496, -105472048, +-111369040, -117878600, -125004488, -132456792, -140041696, -147776400, -155345216, -162075952, -167646000, -172148736, +-175450480, -177293024, -177915264, -177747760, -176772800, -174956560, -172788144, -170622400, -168202192, -165463616, +-162873744, -160496480, -157845424, -154883504, -151892592, -148480240, -144195472, -139637984, -135422464, -130997040, +-126027760, -121446640, -117606944, -113443512, -108729784, -104593192, -100958576, -96706560, -92480312, -89471688, +-86388432, -82171312, -79161080, -78174848, -75229576, -69644504, -67556616, -69301448, -65283504, -55109264, +-53410604, -61128660, -55084568, -31154082, -29526290, -77868296, -133987408, -135236704, -87899192, -51497732, +-46257336, -40239012, -25975426, -39135744, -86180664, -117801824, -100321312, -61812632, -41196788, -36080408, +-25941066, -7624641, 14322105, 36024040, 35353488, -14984604, -94637456, -136563312, -107327472, -51139640, +-26530550, -33206002, -33858836, -17900350, -3644280, 3314104, 12925167, 20556250, 10763188, }, }, { { -11633456, --12715788, 12792560, 18263274, -12629351, -26460220, 21744882, 86905976, 80966040, -10594611, -106126496, --122959544, -57123600, 33699388, 87169048, 69767448, -4167192, -68813432, -56982940, 24143622, 93236224, -87987240, 31314606, -12676059, -17874580, -4080219, 9590662, 23705536, 38931732, 46676092, 41782516, -28186260, 10654203, -8883066, -27856622, -43992812, -58518928, -73033768, -85168128, -91186448, -90479928, --84697832, -75187696, -63605780, -52536040, -43498892, -35870492, -28498718, -20794084, -12163884, -2105608, -9038222, 20708184, 33236604, 47214040, 62171800, 76826224, 90194312, 101713416, 110697952, 116401128, -118458960, 116876264, 111651432, 102568112, 89337464, 71894528, 50494320, 25478820, -2820183, -33770256, --66238060, -98885176, -130422048, -159560176, -185192016, -206752208, -223980400, -236382656, -243613760, -246335696, --245776816, -242294672, -235259520, -224608000, -211570624, -197400992, -182159232, -165314368, -146910960, -127420408, --106850200, -84780504, -61219928, -36779952, -11969537, 13087839, 38044820, 61965640, 83914000, 103569376, -120941984, 135637744, 146652736, 152961504, 154441648, 152350000, 148595664, 144171312, 138459008, 130358696, -119826904, 108059768, 96567504, 86388432, 77755552, 70118024, 62765580, 55661704, 49382996, 44306344, -40295920, 37040336, 34111704, 30863634, 26847840, 22164178, 16979080, 11103564, 4450660, -2598992, --9654550, -16572668, -23050016, -28622736, -33212446, -37021008, -39973260, -41962904, -43382928, -44648332, --45602352, -46068892, -46399604, -46832860, -47065864, -46939160, -46704012, -46290084, -45317272, -43932148, --42582452, -41093712, -39066484, -36768140, -34521336, -31913218, -28693602, -25490630, -22720376, -19980188, --17258252, -15257871, -14019847, -12853227, -11799886, -11412802, -11355357, -11072963, -11185169, -12369506, --14022531, -15709917, -18303004, -22199076, -26546120, -31270046, -37242736, -43883292, -49666464, -54925116, --60749092, -66045860, -69426000, -72148472, -75399224, -77537584, -77686296, -77916072, -78711720, -77787224, --75630080, -75049720, -74414600, -70523360, -66937064, -67662376, -66614404, -58616640, -53277460, -57761940, --57564372, -41883448, -32214402, -46751256, -52820580, -8381092, 57775900, 70812736, 17866528, -34949760, --45163192, -43890272, -59213640, -58918900, -12106439, 44909252, 53140556, 9370545, -40288940, -64476048, --72780368, -89085136, -116870352, -126028832, -77658376, 20669530, 96355984, 82265264, 1233729, -57616448, --47462072, -8155069, 4672388, -8897562, -14241575, -753230, 12420509, 12272332, 4403415, }, +-12715788, 12792560, 18263274, -12629351, -26460220, 21744882, 86905976, 80966040, -10594611, -106126496, +-122959544, -57123600, 33699388, 87169048, 69767448, -4167192, -68813432, -56982940, 24143622, 93236224, +87987240, 31314606, -12676059, -17874580, -4080219, 9590662, 23705536, 38931732, 46676092, 41782516, +28186260, 10654203, -8883066, -27856622, -43992812, -58518928, -73033768, -85168128, -91186448, -90479928, +-84697832, -75187696, -63605780, -52536040, -43498892, -35870492, -28498718, -20794084, -12163884, -2105608, +9038222, 20708184, 33236604, 47214040, 62171800, 76826224, 90194312, 101713416, 110697952, 116401128, +118458960, 116876264, 111651432, 102568112, 89337464, 71894528, 50494320, 25478820, -2820183, -33770256, +-66238060, -98885176, -130422048, -159560176, -185192016, -206752208, -223980400, -236382656, -243613760, -246335696, +-245776816, -242294672, -235259520, -224608000, -211570624, -197400992, -182159232, -165314368, -146910960, -127420408, +-106850200, -84780504, -61219928, -36779952, -11969537, 13087839, 38044820, 61965640, 83914000, 103569376, +120941984, 135637744, 146652736, 152961504, 154441648, 152350000, 148595664, 144171312, 138459008, 130358696, +119826904, 108059768, 96567504, 86388432, 77755552, 70118024, 62765580, 55661704, 49382996, 44306344, +40295920, 37040336, 34111704, 30863634, 26847840, 22164178, 16979080, 11103564, 4450660, -2598992, +-9654550, -16572668, -23050016, -28622736, -33212446, -37021008, -39973260, -41962904, -43382928, -44648332, +-45602352, -46068892, -46399604, -46832860, -47065864, -46939160, -46704012, -46290084, -45317272, -43932148, +-42582452, -41093712, -39066484, -36768140, -34521336, -31913218, -28693602, -25490630, -22720376, -19980188, +-17258252, -15257871, -14019847, -12853227, -11799886, -11412802, -11355357, -11072963, -11185169, -12369506, +-14022531, -15709917, -18303004, -22199076, -26546120, -31270046, -37242736, -43883292, -49666464, -54925116, +-60749092, -66045860, -69426000, -72148472, -75399224, -77537584, -77686296, -77916072, -78711720, -77787224, +-75630080, -75049720, -74414600, -70523360, -66937064, -67662376, -66614404, -58616640, -53277460, -57761940, +-57564372, -41883448, -32214402, -46751256, -52820580, -8381092, 57775900, 70812736, 17866528, -34949760, +-45163192, -43890272, -59213640, -58918900, -12106439, 44909252, 53140556, 9370545, -40288940, -64476048, +-72780368, -89085136, -116870352, -126028832, -77658376, 20669530, 96355984, 82265264, 1233729, -57616448, +-47462072, -8155069, 4672388, -8897562, -14241575, -753230, 12420509, 12272332, 4403415, }, { 11633456, -12715788, -12792560, -18263274, 12629351, 26460220, -21744882, -86905976, -80966040, 10594611, 106126496, -122959544, 57123600, -33699388, -87169048, -69767448, 4167192, 68813432, 56982940, -24143622, -93236224, --87987240, -31314606, 12676059, 17874580, 4080219, -9590662, -23705536, -38931732, -46676092, -41782516, --28186260, -10654203, 8883066, 27856622, 43992812, 58518928, 73033768, 85168128, 91186448, 90479928, -84697832, 75187696, 63605780, 52536040, 43498892, 35870492, 28498718, 20794084, 12163884, 2105608, --9038222, -20708184, -33236604, -47214040, -62171800, -76826224, -90194312, -101713416, -110697952, -116401128, --118458960, -116876264, -111651432, -102568112, -89337464, -71894528, -50494320, -25478820, 2820183, 33770256, -66238060, 98885176, 130422048, 159560176, 185192016, 206752208, 223980400, 236382656, 243613760, 246335696, -245776816, 242294672, 235259520, 224608000, 211570624, 197400992, 182159232, 165314368, 146910960, 127420408, -106850200, 84780504, 61219928, 36779952, 11969537, -13087839, -38044820, -61965640, -83914000, -103569376, --120941984, -135637744, -146652736, -152961504, -154441648, -152350000, -148595664, -144171312, -138459008, -130358696, --119826904, -108059768, -96567504, -86388432, -77755552, -70118024, -62765580, -55661704, -49382996, -44306344, --40295920, -37040336, -34111704, -30863634, -26847840, -22164178, -16979080, -11103564, -4450660, 2598992, -9654550, 16572668, 23050016, 28622736, 33212446, 37021008, 39973260, 41962904, 43382928, 44648332, -45602352, 46068892, 46399604, 46832860, 47065864, 46939160, 46704012, 46290084, 45317272, 43932148, -42582452, 41093712, 39066484, 36768140, 34521336, 31913218, 28693602, 25490630, 22720376, 19980188, -17258252, 15257871, 14019847, 12853227, 11799886, 11412802, 11355357, 11072963, 11185169, 12369506, -14022531, 15709917, 18303004, 22199076, 26546120, 31270046, 37242736, 43883292, 49666464, 54925116, -60749092, 66045860, 69426000, 72148472, 75399224, 77537584, 77686296, 77916072, 78711720, 77787224, -75630080, 75049720, 74414600, 70523360, 66937064, 67662376, 66614404, 58616640, 53277460, 57761940, -57564372, 41883448, 32214402, 46751256, 52820580, 8381092, -57775900, -70812736, -17866528, 34949760, -45163192, 43890272, 59213640, 58918900, 12106439, -44909252, -53140556, -9370545, 40288940, 64476048, -72780368, 89085136, 116870352, 126028832, 77658376, -20669530, -96355984, -82265264, -1233729, 57616448, -47462072, 8155069, -4672388, 8897562, 14241575, 753230, -12420509, -12272332, -4403415, }, +12715788, -12792560, -18263274, 12629351, 26460220, -21744882, -86905976, -80966040, 10594611, 106126496, +122959544, 57123600, -33699388, -87169048, -69767448, 4167192, 68813432, 56982940, -24143622, -93236224, +-87987240, -31314606, 12676059, 17874580, 4080219, -9590662, -23705536, -38931732, -46676092, -41782516, +-28186260, -10654203, 8883066, 27856622, 43992812, 58518928, 73033768, 85168128, 91186448, 90479928, +84697832, 75187696, 63605780, 52536040, 43498892, 35870492, 28498718, 20794084, 12163884, 2105608, +-9038222, -20708184, -33236604, -47214040, -62171800, -76826224, -90194312, -101713416, -110697952, -116401128, +-118458960, -116876264, -111651432, -102568112, -89337464, -71894528, -50494320, -25478820, 2820183, 33770256, +66238060, 98885176, 130422048, 159560176, 185192016, 206752208, 223980400, 236382656, 243613760, 246335696, +245776816, 242294672, 235259520, 224608000, 211570624, 197400992, 182159232, 165314368, 146910960, 127420408, +106850200, 84780504, 61219928, 36779952, 11969537, -13087839, -38044820, -61965640, -83914000, -103569376, +-120941984, -135637744, -146652736, -152961504, -154441648, -152350000, -148595664, -144171312, -138459008, -130358696, +-119826904, -108059768, -96567504, -86388432, -77755552, -70118024, -62765580, -55661704, -49382996, -44306344, +-40295920, -37040336, -34111704, -30863634, -26847840, -22164178, -16979080, -11103564, -4450660, 2598992, +9654550, 16572668, 23050016, 28622736, 33212446, 37021008, 39973260, 41962904, 43382928, 44648332, +45602352, 46068892, 46399604, 46832860, 47065864, 46939160, 46704012, 46290084, 45317272, 43932148, +42582452, 41093712, 39066484, 36768140, 34521336, 31913218, 28693602, 25490630, 22720376, 19980188, +17258252, 15257871, 14019847, 12853227, 11799886, 11412802, 11355357, 11072963, 11185169, 12369506, +14022531, 15709917, 18303004, 22199076, 26546120, 31270046, 37242736, 43883292, 49666464, 54925116, +60749092, 66045860, 69426000, 72148472, 75399224, 77537584, 77686296, 77916072, 78711720, 77787224, +75630080, 75049720, 74414600, 70523360, 66937064, 67662376, 66614404, 58616640, 53277460, 57761940, +57564372, 41883448, 32214402, 46751256, 52820580, 8381092, -57775900, -70812736, -17866528, 34949760, +45163192, 43890272, 59213640, 58918900, 12106439, -44909252, -53140556, -9370545, 40288940, 64476048, +72780368, 89085136, 116870352, 126028832, 77658376, -20669530, -96355984, -82265264, -1233729, 57616448, +47462072, 8155069, -4672388, 8897562, 14241575, 753230, -12420509, -12272332, -4403415, }, }, { { 1873680, --3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792, -207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000, --134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012, --493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720, --42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384, --91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600, --24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816, -124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158, -4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168, --244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328, --211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296, --107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152, --202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504, --222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656, --188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832, --79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802, --21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013, -19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564, -62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912, -60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232, -29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539, --5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552, --21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374, --12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, }, +-3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792, +207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000, +-134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012, +-493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720, +-42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384, +-91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600, +-24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816, +124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158, +4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168, +-244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328, +-211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296, +-107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152, +-202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504, +-222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656, +-188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832, +-79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802, +-21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013, +19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564, +62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912, +60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232, +29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539, +-5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552, +-21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374, +-12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, }, { 1873680, --3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792, -207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000, --134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012, --493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720, --42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384, --91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600, --24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816, -124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158, -4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168, --244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328, --211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296, --107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152, --202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504, --222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656, --188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832, --79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802, --21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013, -19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564, -62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912, -60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232, -29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539, --5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552, --21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374, --12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, }, +-3342558, -19244674, -27656906, -22355304, -19368156, -24668682, -14368276, 35566088, 115204984, 187445792, +207972512, 133678712, -40381820, -220773136, -249746976, -72728288, 156203136, 219099168, 80410376, -88923000, +-134445904, -75266080, -14714558, 11208254, 32719598, 56719876, 56432648, 28938952, 3604015, -2774012, +-493921, 44023, 623844, 1908576, -689342, -7561827, -14534706, -20530480, -27339078, -34963720, +-42800424, -51575040, -60615948, -67405216, -71713072, -75916768, -80622976, -84235584, -86635936, -89183384, +-91638496, -92573192, -91874720, -90047208, -86417424, -80261128, -72179072, -62777928, -51649128, -38638600, +-24369108, -8988293, 7864622, 25739202, 43609488, 61118460, 78132432, 93664648, 106606456, 116818816, +124399968, 128720168, 129075040, 125471560, 118142736, 107078904, 92366496, 74322800, 53285512, 29830158, +4844723, -21139292, -48130476, -75797584, -103187664, -129672576, -155294736, -179954832, -203204032, -224887168, +-244870576, -262082128, -274927840, -282757568, -286034624, -285112800, -279649600, -269137696, -253551776, -233815328, +-211990992, -190447984, -170416256, -151812592, -134632192, -119826904, -108681464, -101978632, -99884832, -101988296, +-107322640, -114817360, -123800824, -133918152, -144834880, -156276688, -167954160, -179187104, -188990368, -196777152, +-202669840, -207099024, -210479712, -213223648, -215589104, -217503056, -218880128, -219979632, -221099008, -222103504, +-222602784, -222417024, -221578432, -220112784, -218076960, -215601984, -212652960, -208877680, -203807472, -197126656, +-188761136, -178910080, -167981008, -156358816, -144291568, -132064872, -120104464, -108753944, -98115304, -88228832, +-79218528, -71134856, -63835024, -57146152, -51018844, -45420352, -40235252, -35341676, -30671436, -26133802, +-21595632, -16984448, -12326556, -7702487, -3257733, 802085, 4425964, 7874823, 11486890, 15340013, +19361712, 23628226, 28253906, 33103460, 37936372, 42713448, 47430396, 51872468, 55884504, 59576564, +62923956, 65588984, 67455680, 68768328, 69464120, 69151656, 67971616, 66530116, 64882996, 62704912, +60319596, 58182848, 55834036, 52952116, 50392316, 48293148, 45027900, 40353364, 36657008, 34141232, +29250874, 21852794, 17468706, 16530792, 10105521, -4660040, -14901926, -10554345, -1905892, -2388539, +-5411659, -14496, 1378148, -20427938, -52753472, -61199524, -39141648, -15971373, -12524125, -18922552, +-21503828, -20447266, -14762876, -2520609, -2463701, -38536596, -92413736, -110900888, -76509472, -31289374, +-12119324, -5588826, 8677981, 18663244, 20618528, 49403400, 113965880, 143392848, 67788008, }, }, { { -19043884, --43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232, --27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874, -29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724, --71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080, --25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144, -72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984, -89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232, -97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624, -122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054, --52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944, --283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808, --250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872, --62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008, -78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440, -163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960, -153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584, -142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184, -114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184, -94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072, -87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628, -48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538, -9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528, --39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941, -3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, }, +-43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232, +-27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874, +29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724, +-71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080, +-25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144, +72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984, +89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232, +97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624, +122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054, +-52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944, +-283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808, +-250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872, +-62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008, +78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440, +163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960, +153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584, +142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184, +114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184, +94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072, +87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628, +48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538, +9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528, +-39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941, +3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, }, { -19043884, --43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232, --27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874, -29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724, --71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080, --25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144, -72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984, -89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232, -97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624, -122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054, --52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944, --283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808, --250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872, --62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008, -78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440, -163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960, -153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584, -142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184, -114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184, -94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072, -87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628, -48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538, -9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528, --39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941, -3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, }, +-43914968, -38262252, -1210644, 55222544, 103580656, 104854648, 41815800, -48219060, -98342936, -79811232, +-27014270, 11771968, 25251186, 27530204, 21311628, 423054, -23129472, -24757802, -1234803, 23149874, +29137058, 23870354, 23459648, 29103772, 30188252, 21255256, 5424544, -13989245, -35932232, -57081724, +-71927816, -78420736, -79843440, -80427560, -81427752, -81558208, -78913048, -71798968, -59414432, -42890080, +-25060598, -8555575, 5655398, 17808008, 28244778, 37237368, 45284524, 52852792, 59964184, 66443144, +72349800, 77808704, 82662552, 86696064, 89984400, 92640296, 94380832, 94751272, 93707056, 91681984, +89125400, 86281064, 83486648, 81406272, 80671832, 81307488, 82813952, 84937808, 88006568, 92246232, +97188128, 102227736, 107407472, 113055888, 118871808, 123967248, 127667368, 129718752, 129829344, 127503624, +122321744, 114165600, 103276248, 90096600, 74759272, 56898116, 36531920, 14866492, -6754910, -28671054, +-52594560, -79236240, -107203992, -134600512, -160846528, -186407488, -211295216, -234419856, -254366224, -270582944, +-283647168, -294197728, -301790720, -305295392, -304413856, -300247744, -294231040, -286901120, -277723328, -265717808, +-250344512, -232193456, -212747440, -193219312, -173814112, -154246240, -134529648, -115035864, -96240016, -78633872, +-62454732, -47388520, -32900524, -18815178, -5185100, 8209830, 21780852, 35743256, 50075024, 64490008, +78244640, 90542208, 101380016, 111477488, 121334440, 130941208, 140193632, 148746528, 155699536, 160357440, +163121792, 164887008, 165994048, 166473472, 166606608, 166391328, 165169952, 162598336, 159321808, 156156960, +153387776, 151220432, 149974896, 149471312, 149054160, 148359984, 147387712, 146072368, 144525120, 143221584, +142293344, 141271680, 139971376, 138650128, 137006768, 134275712, 130547680, 126651072, 122752848, 118513184, +114306800, 110740360, 107516992, 104217384, 101331704, 99189048, 97191352, 95255936, 94279360, 94262184, +94076960, 93668408, 93980864, 94576256, 94197760, 93305480, 92939872, 92204360, 90170688, 88225072, +87094960, 84780504, 80922016, 78442208, 77275048, 73243152, 66924716, 64326800, 64422360, 58594628, +48184164, 46018964, 51507396, 44683768, 20112794, 5031554, 21172578, 47353624, 48104708, 25314538, +9361418, 7545184, -2579665, -27305792, -39609800, -20830592, 7098507, 10118406, -13167296, -34975528, +-39409008, -40161164, -53462680, -68065568, -55893092, -10875931, 35991824, 48624936, 26519812, 2823941, +3407520, 19760070, 26929982, 18486612, 13001940, 26946088, 50138912, 54092428, 23716272, }, }, { { 22912576, -33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600, -368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880, --231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939, -55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184, -67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412, --44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312, --106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160, --84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024, --48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611, --12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068, --37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496, -93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904, -175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920, -191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960, -166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984, -84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472, -32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588, -37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316, -42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956, -40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460, -33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808, -25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201, --13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542, -19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, }, +33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600, +368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880, +-231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939, +55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184, +67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412, +-44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312, +-106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160, +-84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024, +-48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611, +-12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068, +-37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496, +93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904, +175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920, +191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960, +166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984, +84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472, +32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588, +37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316, +42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956, +40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460, +33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808, +25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201, +-13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542, +19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, }, { 22912576, -33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600, -368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880, --231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939, -55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184, -67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412, --44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312, --106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160, --84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024, --48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611, --12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068, --37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496, -93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904, -175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920, -191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960, -166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984, -84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472, -32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588, -37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316, -42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956, -40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460, -33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808, -25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201, --13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542, -19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, }, +33083060, -15137612, -77247672, -120297736, -152744064, -162527472, -98063768, 53420804, 225633424, 342901600, +368999968, 262932528, -8273181, -334095840, -445709152, -187704032, 234369392, 430890432, 258872176, -54666880, +-231026288, -234318928, -195415648, -183787552, -168180720, -128274568, -89106072, -61837328, -28456306, 16117939, +55568824, 82885888, 105637408, 125082872, 134603744, 133938552, 127843456, 116640040, 99855304, 82162184, +67347768, 53308596, 38053948, 23500988, 10541997, -2518462, -15147813, -24635932, -31176094, -37507412, +-44420164, -51113868, -58128624, -66110284, -73897056, -80638544, -87209848, -93788128, -99032280, -102709312, +-106020192, -108920904, -110194904, -109961904, -109219408, -107584096, -104145440, -99537480, -94908576, -90141160, +-84906672, -79914312, -75686448, -71660456, -67447632, -63418412, -59664076, -55971476, -52758304, -50490024, +-48571248, -46197204, -43537008, -40852120, -37523520, -33078764, -28085328, -23219666, -18641232, -14722611, +-12118787, -10951093, -11154567, -13344463, -17927194, -23760296, -29066192, -33188822, -36287640, -37961068, +-37246492, -33403034, -26076894, -15426449, -2415919, 11868605, 27242440, 43924632, 61286500, 78111496, +93715112, 107930384, 120553824, 131646656, 141690432, 150730800, 158116000, 163587792, 167816720, 171597904, +175348480, 179357840, 183519664, 186957248, 188903936, 189707632, 190191888, 190584336, 190813584, 191065920, +191285488, 190901088, 189672192, 188022400, 186193280, 183966336, 181352304, 178589040, 175419888, 171292960, +166147056, 160202816, 153353424, 145516720, 137107168, 128511328, 119673896, 110619568, 101676912, 92926984, +84211960, 75754632, 67987184, 60909080, 54394688, 48741972, 44157096, 40261024, 36796060, 34086472, +32245004, 30837328, 29772176, 29517700, 30151208, 31197568, 32465658, 34006476, 35463008, 36461588, +37243272, 38035692, 38538740, 38768524, 39375724, 40481676, 41403484, 41928544, 42491724, 42966316, +42817064, 42306500, 42020888, 41728292, 41157060, 40897752, 41180148, 41191956, 40722732, 40543956, +40480068, 39620000, 38581692, 38432976, 38014220, 36214628, 35186520, 36433672, 36713916, 34064460, +33306398, 37192268, 38308960, 31653908, 28657632, 42315092, 62512176, 65438660, 47303696, 29169808, +25497610, 26946624, 20507396, 9653476, 5276904, 8847096, 13584982, 14318347, 9484898, -607201, +-13053479, -25279104, -41357852, -68102616, -99225016, -110134232, -80648208, -24404004, 17795660, 24222542, +19369228, 35908076, 62372052, 65007552, 59028420, 102312560, 191254352, 219296736, 99885904, }, }, { { 2811593, -11651709, 24683714, 38550552, 49903224, 43626132, -1712618, -78012712, -148158112, -194630208, -212185872, --141817680, 80555872, 349895968, 395538560, 95827696, -293273792, -390015776, -136008192, 164994384, 247096448, -150730272, 59409060, 36841156, 23941758, -11520176, -40115532, -45217952, -44843752, -48241608, -44198436, --29087130, -13136157, -2078764, 6528887, 13400835, 17460652, 20465520, 23479512, 24280524, 22565222, -21513492, 21992380, 21405580, 19192062, 17724256, 17702244, 17687212, 17659832, 18847390, 20900384, -22446036, 23242216, 23521926, 22731114, 20545512, 17583060, 14187351, 10077604, 5511517, 1179505, --3005403, -7570954, -12317966, -16756815, -21050708, -25465934, -29654602, -33335388, -36824512, -40335648, --43652972, -46806552, -50156628, -53645752, -56791816, -59336584, -61207580, -62139048, -61984432, -60968136, --59076740, -55733644, -50593640, -44098576, -36854040, -28940564, -20136954, -10415296, -74088, 10281078, -19926500, 28428388, 35715336, 41639172, 45858976, 48331268, 49465676, 49610632, 48818208, 47272020, -45551348, 44269840, 43650828, 43487616, 43418900, 43353400, 43700756, 45009648, 47382080, 50449760, -53869092, 57584236, 61721900, 66486632, 72013720, 78093776, 84218400, 90076200, 95814280, 101782136, -108258408, 115370336, 122938608, 130462856, 137564048, 144328624, 150999232, 157586112, 163950176, 169920720, -175151456, 179257440, 182218816, 184320128, 185714384, 186431648, 186631904, 186397280, 185502864, 183816016, -181655104, 179429232, 177305376, 175456928, 174135152, 173290656, 172604528, 171951696, 171356848, 170666960, -169782208, 168940384, 168295072, 167642240, 166908336, 166301664, 165705200, 164677632, 163193184, 161554656, -159646624, 157208144, 154559232, 152100368, 149600688, 146894864, 144484304, 142610624, 140772928, 138825152, -137261792, 135995840, 134363216, 132420288, 130557880, 128245576, 125015224, 121768768, 119185344, 116360864, -112885696, 110000016, 107964200, 105277168, 101876088, 99383936, 97464616, 94458680, 91321744, 89620400, -87426744, 83417928, 81007912, 81163072, 78259136, 71723272, 70384312, 74463456, 70391296, 57915488, -57659400, 70776232, 65012384, 34982508, 36167920, 104857328, 179518896, 172511664, 96391952, 39862664, -33528126, 29611652, 13415330, 34887484, 105161736, 152656016, 124219048, 59104120, 20142860, 10727218, --97711, -22026202, -49624588, -78276312, -84543208, -37925636, 40091372, 78421272, 47701516, 60666, --12510166, -6209449, -15641197, -32628866, -43815108, -75613440, -136878992, -159193504, -73527696, }, +11651709, 24683714, 38550552, 49903224, 43626132, -1712618, -78012712, -148158112, -194630208, -212185872, +-141817680, 80555872, 349895968, 395538560, 95827696, -293273792, -390015776, -136008192, 164994384, 247096448, +150730272, 59409060, 36841156, 23941758, -11520176, -40115532, -45217952, -44843752, -48241608, -44198436, +-29087130, -13136157, -2078764, 6528887, 13400835, 17460652, 20465520, 23479512, 24280524, 22565222, +21513492, 21992380, 21405580, 19192062, 17724256, 17702244, 17687212, 17659832, 18847390, 20900384, +22446036, 23242216, 23521926, 22731114, 20545512, 17583060, 14187351, 10077604, 5511517, 1179505, +-3005403, -7570954, -12317966, -16756815, -21050708, -25465934, -29654602, -33335388, -36824512, -40335648, +-43652972, -46806552, -50156628, -53645752, -56791816, -59336584, -61207580, -62139048, -61984432, -60968136, +-59076740, -55733644, -50593640, -44098576, -36854040, -28940564, -20136954, -10415296, -74088, 10281078, +19926500, 28428388, 35715336, 41639172, 45858976, 48331268, 49465676, 49610632, 48818208, 47272020, +45551348, 44269840, 43650828, 43487616, 43418900, 43353400, 43700756, 45009648, 47382080, 50449760, +53869092, 57584236, 61721900, 66486632, 72013720, 78093776, 84218400, 90076200, 95814280, 101782136, +108258408, 115370336, 122938608, 130462856, 137564048, 144328624, 150999232, 157586112, 163950176, 169920720, +175151456, 179257440, 182218816, 184320128, 185714384, 186431648, 186631904, 186397280, 185502864, 183816016, +181655104, 179429232, 177305376, 175456928, 174135152, 173290656, 172604528, 171951696, 171356848, 170666960, +169782208, 168940384, 168295072, 167642240, 166908336, 166301664, 165705200, 164677632, 163193184, 161554656, +159646624, 157208144, 154559232, 152100368, 149600688, 146894864, 144484304, 142610624, 140772928, 138825152, +137261792, 135995840, 134363216, 132420288, 130557880, 128245576, 125015224, 121768768, 119185344, 116360864, +112885696, 110000016, 107964200, 105277168, 101876088, 99383936, 97464616, 94458680, 91321744, 89620400, +87426744, 83417928, 81007912, 81163072, 78259136, 71723272, 70384312, 74463456, 70391296, 57915488, +57659400, 70776232, 65012384, 34982508, 36167920, 104857328, 179518896, 172511664, 96391952, 39862664, +33528126, 29611652, 13415330, 34887484, 105161736, 152656016, 124219048, 59104120, 20142860, 10727218, +-97711, -22026202, -49624588, -78276312, -84543208, -37925636, 40091372, 78421272, 47701516, 60666, +-12510166, -6209449, -15641197, -32628866, -43815108, -75613440, -136878992, -159193504, -73527696, }, { -2811593, --11651709, -24683714, -38550552, -49903224, -43626132, 1712618, 78012712, 148158112, 194630208, 212185872, -141817680, -80555872, -349895968, -395538560, -95827696, 293273792, 390015776, 136008192, -164994384, -247096448, --150730272, -59409060, -36841156, -23941758, 11520176, 40115532, 45217952, 44843752, 48241608, 44198436, -29087130, 13136157, 2078764, -6528887, -13400835, -17460652, -20465520, -23479512, -24280524, -22565222, --21513492, -21992380, -21405580, -19192062, -17724256, -17702244, -17687212, -17659832, -18847390, -20900384, --22446036, -23242216, -23521926, -22731114, -20545512, -17583060, -14187351, -10077604, -5511517, -1179505, -3005403, 7570954, 12317966, 16756815, 21050708, 25465934, 29654602, 33335388, 36824512, 40335648, -43652972, 46806552, 50156628, 53645752, 56791816, 59336584, 61207580, 62139048, 61984432, 60968136, -59076740, 55733644, 50593640, 44098576, 36854040, 28940564, 20136954, 10415296, 74088, -10281078, --19926500, -28428388, -35715336, -41639172, -45858976, -48331268, -49465676, -49610632, -48818208, -47272020, --45551348, -44269840, -43650828, -43487616, -43418900, -43353400, -43700756, -45009648, -47382080, -50449760, --53869092, -57584236, -61721900, -66486632, -72013720, -78093776, -84218400, -90076200, -95814280, -101782136, --108258408, -115370336, -122938608, -130462856, -137564048, -144328624, -150999232, -157586112, -163950176, -169920720, --175151456, -179257440, -182218816, -184320128, -185714384, -186431648, -186631904, -186397280, -185502864, -183816016, --181655104, -179429232, -177305376, -175456928, -174135152, -173290656, -172604528, -171951696, -171356848, -170666960, --169782208, -168940384, -168295072, -167642240, -166908336, -166301664, -165705200, -164677632, -163193184, -161554656, --159646624, -157208144, -154559232, -152100368, -149600688, -146894864, -144484304, -142610624, -140772928, -138825152, --137261792, -135995840, -134363216, -132420288, -130557880, -128245576, -125015224, -121768768, -119185344, -116360864, --112885696, -110000016, -107964200, -105277168, -101876088, -99383936, -97464616, -94458680, -91321744, -89620400, --87426744, -83417928, -81007912, -81163072, -78259136, -71723272, -70384312, -74463456, -70391296, -57915488, --57659400, -70776232, -65012384, -34982508, -36167920, -104857328, -179518896, -172511664, -96391952, -39862664, --33528126, -29611652, -13415330, -34887484, -105161736, -152656016, -124219048, -59104120, -20142860, -10727218, -97711, 22026202, 49624588, 78276312, 84543208, 37925636, -40091372, -78421272, -47701516, -60666, -12510166, 6209449, 15641197, 32628866, 43815108, 75613440, 136878992, 159193504, 73527696, }, +-11651709, -24683714, -38550552, -49903224, -43626132, 1712618, 78012712, 148158112, 194630208, 212185872, +141817680, -80555872, -349895968, -395538560, -95827696, 293273792, 390015776, 136008192, -164994384, -247096448, +-150730272, -59409060, -36841156, -23941758, 11520176, 40115532, 45217952, 44843752, 48241608, 44198436, +29087130, 13136157, 2078764, -6528887, -13400835, -17460652, -20465520, -23479512, -24280524, -22565222, +-21513492, -21992380, -21405580, -19192062, -17724256, -17702244, -17687212, -17659832, -18847390, -20900384, +-22446036, -23242216, -23521926, -22731114, -20545512, -17583060, -14187351, -10077604, -5511517, -1179505, +3005403, 7570954, 12317966, 16756815, 21050708, 25465934, 29654602, 33335388, 36824512, 40335648, +43652972, 46806552, 50156628, 53645752, 56791816, 59336584, 61207580, 62139048, 61984432, 60968136, +59076740, 55733644, 50593640, 44098576, 36854040, 28940564, 20136954, 10415296, 74088, -10281078, +-19926500, -28428388, -35715336, -41639172, -45858976, -48331268, -49465676, -49610632, -48818208, -47272020, +-45551348, -44269840, -43650828, -43487616, -43418900, -43353400, -43700756, -45009648, -47382080, -50449760, +-53869092, -57584236, -61721900, -66486632, -72013720, -78093776, -84218400, -90076200, -95814280, -101782136, +-108258408, -115370336, -122938608, -130462856, -137564048, -144328624, -150999232, -157586112, -163950176, -169920720, +-175151456, -179257440, -182218816, -184320128, -185714384, -186431648, -186631904, -186397280, -185502864, -183816016, +-181655104, -179429232, -177305376, -175456928, -174135152, -173290656, -172604528, -171951696, -171356848, -170666960, +-169782208, -168940384, -168295072, -167642240, -166908336, -166301664, -165705200, -164677632, -163193184, -161554656, +-159646624, -157208144, -154559232, -152100368, -149600688, -146894864, -144484304, -142610624, -140772928, -138825152, +-137261792, -135995840, -134363216, -132420288, -130557880, -128245576, -125015224, -121768768, -119185344, -116360864, +-112885696, -110000016, -107964200, -105277168, -101876088, -99383936, -97464616, -94458680, -91321744, -89620400, +-87426744, -83417928, -81007912, -81163072, -78259136, -71723272, -70384312, -74463456, -70391296, -57915488, +-57659400, -70776232, -65012384, -34982508, -36167920, -104857328, -179518896, -172511664, -96391952, -39862664, +-33528126, -29611652, -13415330, -34887484, -105161736, -152656016, -124219048, -59104120, -20142860, -10727218, +97711, 22026202, 49624588, 78276312, 84543208, 37925636, -40091372, -78421272, -47701516, -60666, +12510166, 6209449, 15641197, 32628866, 43815108, 75613440, 136878992, 159193504, 73527696, }, }, { { 1766305, -2392834, -2967823, -13154948, -21828098, -13592498, 23732916, 69370168, 72411536, 11843372, -60894584, --74438224, -25907780, 20711942, 23179938, 5403069, 3657165, 11682311, 4756140, -13142600, -18874770, --10082436, -5405753, -11533598, -15028091, -6480569, 6342056, 12303471, 10251013, 4749160, -2111513, --10241350, -18179522, -23642184, -25355876, -23281408, -18531710, -13084081, -8157217, -3108483, 3117610, -10074383, 16234440, 20606180, 23109608, 24038396, 24024974, 24174224, 25506738, 28323698, 32306744, -36983964, 41889888, 46537044, 50538344, 53766548, 56298968, 58215060, 59515900, 60221348, 60425896, -60163900, 59333900, 57909580, 56159380, 54442468, 52864068, 51385524, 50192600, 49603116, 49638548, -50051940, 50826644, 52286396, 54623396, 57640072, 61087320, 64938832, 69148976, 73336032, 76918032, -79475152, 80860272, 80984296, 79532592, 75905496, 69521560, 60245508, 48402132, 34217468, 17394080, --2496987, -25216290, -49676664, -74593920, -99082752, -122543472, -144185808, -162914016, -177765472, -188473904, --195543952, -199672496, -201060848, -199500160, -195243312, -189557840, -184086064, -179620368, -175639472, -171028816, --165171552, -158431136, -151753536, -145830240, -140600592, -135516416, -130188512, -124697400, -119384520, -114528528, --110164304, -106021808, -101652216, -96741992, -91300264, -85496152, -79429512, -73136312, -66677220, -60127396, --53596360, -47292420, -41414224, -35956928, -30760018, -25701084, -20750060, -15941845, -11440182, -7451232, --3917547, -482647, 3153043, 7072738, 11359115, 16073378, 20965882, 25650618, 30160870, 34941708, -40317396, 46365784, 53226992, 61034708, 69603168, 78600048, 87877176, 97303024, 106561896, 115417048, -123827664, 131587064, 138292576, 143794976, 148143616, 151136672, 152569056, 152790784, 152322624, 151187680, -149328496, 147177248, 145073792, 142777600, 140200624, 137736912, 135370384, 132611944, 129665064, 127228744, -125030792, 122277184, 119323856, 116903640, 114341696, 110789216, 107069240, 103905456, 100271384, 95927024, -92563528, 89972048, 85635208, 80475336, 78287592, 77118824, 71010840, 62952948, 62019328, 64006824, -55034636, 40962176, 44935020, 61018600, 45531484, -16530255, -70942120, -62221728, -13724031, 11134166, -4073777, 5789616, 18125298, -3304441, -61377768, -95043328, -70010648, -29961154, -23776402, -35720168, --28427314, -8661338, -1998770, 2596845, 29952566, 61971548, 55981676, 12006581, -23720030, -23033372, --5655398, 145492, -6174553, -10863046, -10317585, -8673686, -6595996, -3351148, -774168, }, +2392834, -2967823, -13154948, -21828098, -13592498, 23732916, 69370168, 72411536, 11843372, -60894584, +-74438224, -25907780, 20711942, 23179938, 5403069, 3657165, 11682311, 4756140, -13142600, -18874770, +-10082436, -5405753, -11533598, -15028091, -6480569, 6342056, 12303471, 10251013, 4749160, -2111513, +-10241350, -18179522, -23642184, -25355876, -23281408, -18531710, -13084081, -8157217, -3108483, 3117610, +10074383, 16234440, 20606180, 23109608, 24038396, 24024974, 24174224, 25506738, 28323698, 32306744, +36983964, 41889888, 46537044, 50538344, 53766548, 56298968, 58215060, 59515900, 60221348, 60425896, +60163900, 59333900, 57909580, 56159380, 54442468, 52864068, 51385524, 50192600, 49603116, 49638548, +50051940, 50826644, 52286396, 54623396, 57640072, 61087320, 64938832, 69148976, 73336032, 76918032, +79475152, 80860272, 80984296, 79532592, 75905496, 69521560, 60245508, 48402132, 34217468, 17394080, +-2496987, -25216290, -49676664, -74593920, -99082752, -122543472, -144185808, -162914016, -177765472, -188473904, +-195543952, -199672496, -201060848, -199500160, -195243312, -189557840, -184086064, -179620368, -175639472, -171028816, +-165171552, -158431136, -151753536, -145830240, -140600592, -135516416, -130188512, -124697400, -119384520, -114528528, +-110164304, -106021808, -101652216, -96741992, -91300264, -85496152, -79429512, -73136312, -66677220, -60127396, +-53596360, -47292420, -41414224, -35956928, -30760018, -25701084, -20750060, -15941845, -11440182, -7451232, +-3917547, -482647, 3153043, 7072738, 11359115, 16073378, 20965882, 25650618, 30160870, 34941708, +40317396, 46365784, 53226992, 61034708, 69603168, 78600048, 87877176, 97303024, 106561896, 115417048, +123827664, 131587064, 138292576, 143794976, 148143616, 151136672, 152569056, 152790784, 152322624, 151187680, +149328496, 147177248, 145073792, 142777600, 140200624, 137736912, 135370384, 132611944, 129665064, 127228744, +125030792, 122277184, 119323856, 116903640, 114341696, 110789216, 107069240, 103905456, 100271384, 95927024, +92563528, 89972048, 85635208, 80475336, 78287592, 77118824, 71010840, 62952948, 62019328, 64006824, +55034636, 40962176, 44935020, 61018600, 45531484, -16530255, -70942120, -62221728, -13724031, 11134166, +4073777, 5789616, 18125298, -3304441, -61377768, -95043328, -70010648, -29961154, -23776402, -35720168, +-28427314, -8661338, -1998770, 2596845, 29952566, 61971548, 55981676, 12006581, -23720030, -23033372, +-5655398, 145492, -6174553, -10863046, -10317585, -8673686, -6595996, -3351148, -774168, }, { -1766305, --2392834, 2967823, 13154948, 21828098, 13592498, -23732916, -69370168, -72411536, -11843372, 60894584, -74438224, 25907780, -20711942, -23179938, -5403069, -3657165, -11682311, -4756140, 13142600, 18874770, -10082436, 5405753, 11533598, 15028091, 6480569, -6342056, -12303471, -10251013, -4749160, 2111513, -10241350, 18179522, 23642184, 25355876, 23281408, 18531710, 13084081, 8157217, 3108483, -3117610, --10074383, -16234440, -20606180, -23109608, -24038396, -24024974, -24174224, -25506738, -28323698, -32306744, --36983964, -41889888, -46537044, -50538344, -53766548, -56298968, -58215060, -59515900, -60221348, -60425896, --60163900, -59333900, -57909580, -56159380, -54442468, -52864068, -51385524, -50192600, -49603116, -49638548, --50051940, -50826644, -52286396, -54623396, -57640072, -61087320, -64938832, -69148976, -73336032, -76918032, --79475152, -80860272, -80984296, -79532592, -75905496, -69521560, -60245508, -48402132, -34217468, -17394080, -2496987, 25216290, 49676664, 74593920, 99082752, 122543472, 144185808, 162914016, 177765472, 188473904, -195543952, 199672496, 201060848, 199500160, 195243312, 189557840, 184086064, 179620368, 175639472, 171028816, -165171552, 158431136, 151753536, 145830240, 140600592, 135516416, 130188512, 124697400, 119384520, 114528528, -110164304, 106021808, 101652216, 96741992, 91300264, 85496152, 79429512, 73136312, 66677220, 60127396, -53596360, 47292420, 41414224, 35956928, 30760018, 25701084, 20750060, 15941845, 11440182, 7451232, -3917547, 482647, -3153043, -7072738, -11359115, -16073378, -20965882, -25650618, -30160870, -34941708, --40317396, -46365784, -53226992, -61034708, -69603168, -78600048, -87877176, -97303024, -106561896, -115417048, --123827664, -131587064, -138292576, -143794976, -148143616, -151136672, -152569056, -152790784, -152322624, -151187680, --149328496, -147177248, -145073792, -142777600, -140200624, -137736912, -135370384, -132611944, -129665064, -127228744, --125030792, -122277184, -119323856, -116903640, -114341696, -110789216, -107069240, -103905456, -100271384, -95927024, --92563528, -89972048, -85635208, -80475336, -78287592, -77118824, -71010840, -62952948, -62019328, -64006824, --55034636, -40962176, -44935020, -61018600, -45531484, 16530255, 70942120, 62221728, 13724031, -11134166, --4073777, -5789616, -18125298, 3304441, 61377768, 95043328, 70010648, 29961154, 23776402, 35720168, -28427314, 8661338, 1998770, -2596845, -29952566, -61971548, -55981676, -12006581, 23720030, 23033372, -5655398, -145492, 6174553, 10863046, 10317585, 8673686, 6595996, 3351148, 774168, }, +-2392834, 2967823, 13154948, 21828098, 13592498, -23732916, -69370168, -72411536, -11843372, 60894584, +74438224, 25907780, -20711942, -23179938, -5403069, -3657165, -11682311, -4756140, 13142600, 18874770, +10082436, 5405753, 11533598, 15028091, 6480569, -6342056, -12303471, -10251013, -4749160, 2111513, +10241350, 18179522, 23642184, 25355876, 23281408, 18531710, 13084081, 8157217, 3108483, -3117610, +-10074383, -16234440, -20606180, -23109608, -24038396, -24024974, -24174224, -25506738, -28323698, -32306744, +-36983964, -41889888, -46537044, -50538344, -53766548, -56298968, -58215060, -59515900, -60221348, -60425896, +-60163900, -59333900, -57909580, -56159380, -54442468, -52864068, -51385524, -50192600, -49603116, -49638548, +-50051940, -50826644, -52286396, -54623396, -57640072, -61087320, -64938832, -69148976, -73336032, -76918032, +-79475152, -80860272, -80984296, -79532592, -75905496, -69521560, -60245508, -48402132, -34217468, -17394080, +2496987, 25216290, 49676664, 74593920, 99082752, 122543472, 144185808, 162914016, 177765472, 188473904, +195543952, 199672496, 201060848, 199500160, 195243312, 189557840, 184086064, 179620368, 175639472, 171028816, +165171552, 158431136, 151753536, 145830240, 140600592, 135516416, 130188512, 124697400, 119384520, 114528528, +110164304, 106021808, 101652216, 96741992, 91300264, 85496152, 79429512, 73136312, 66677220, 60127396, +53596360, 47292420, 41414224, 35956928, 30760018, 25701084, 20750060, 15941845, 11440182, 7451232, +3917547, 482647, -3153043, -7072738, -11359115, -16073378, -20965882, -25650618, -30160870, -34941708, +-40317396, -46365784, -53226992, -61034708, -69603168, -78600048, -87877176, -97303024, -106561896, -115417048, +-123827664, -131587064, -138292576, -143794976, -148143616, -151136672, -152569056, -152790784, -152322624, -151187680, +-149328496, -147177248, -145073792, -142777600, -140200624, -137736912, -135370384, -132611944, -129665064, -127228744, +-125030792, -122277184, -119323856, -116903640, -114341696, -110789216, -107069240, -103905456, -100271384, -95927024, +-92563528, -89972048, -85635208, -80475336, -78287592, -77118824, -71010840, -62952948, -62019328, -64006824, +-55034636, -40962176, -44935020, -61018600, -45531484, 16530255, 70942120, 62221728, 13724031, -11134166, +-4073777, -5789616, -18125298, 3304441, 61377768, 95043328, 70010648, 29961154, 23776402, 35720168, +28427314, 8661338, 1998770, -2596845, -29952566, -61971548, -55981676, -12006581, 23720030, 23033372, +5655398, -145492, 6174553, 10863046, 10317585, 8673686, 6595996, 3351148, 774168, }, }, { { 5993627, -17628694, 19673634, 5511517, -1316944, 26298084, 60221348, 29726006, -86547888, -207553216, -211214688, --51820392, 175624432, 290699488, 184001760, -57539676, -215310464, -162342784, 8655970, 113864416, 90045600, -19725712, -16241956, -23730232, -33396056, -36325224, -14506789, 15855409, 28052578, 24194624, 24378772, -35450124, 50498076, 65474092, 79804784, 89017496, 88574576, 80295488, 68737192, 55748140, 41954316, -28828358, 16729971, 4466766, -8088497, -19849728, -30842698, -41951092, -52959632, -63195612, -73171744, --83501680, -93191128, -100623568, -105214888, -106988712, -105779672, -101878232, -96300680, -89617176, -81389096, --71149888, -58987080, -44915696, -28600724, -9971840, 10462003, 31940598, 53636088, 74668544, 94358288, -112261320, 127707096, 139699184, 147604064, 151536640, 151740656, 147978800, 139933792, 127940096, 112900192, -95545304, 76076216, 54547696, 31362924, 7206955, -17441326, -42510512, -67998456, -93649080, -119086560, --143967296, -167687872, -189147136, -207169888, -221065184, -230433056, -234611520, -232813536, -224927968, -211891680, --195147200, -175832736, -154430384, -131102264, -106469552, -82101520, -59958816, -41174776, -25575456, -12447889, --1443109, 7364795, 13848585, 17929340, 19570556, 18952080, 16517907, 12791486, 8284455, 3510062, --1264868, -6323266, -12278238, -19502910, -27894738, -37029596, -46336256, -55298776, -63761472, -71935336, --79978736, -87721488, -94827512, -100983808, -105914968, -109505024, -111884968, -113158968, -113146616, -111667000, --108869368, -105025912, -100253128, -94717984, -88775904, -82661480, -76385992, -70137352, -64354716, -59281824, --54871428, -51158968, -48226576, -45827300, -43549356, -41275708, -39049304, -36720360, -34171296, -31555662, --28919088, -25992068, -22663468, -19183472, -15687905, -12097849, -8553427, -5284421, -2087354, 1395328, -5065914, 8723079, 12654047, 17178796, 22093312, 27161374, 32479080, 37844032, 42629696, 46680924, -50356344, 53518512, 55652040, 56935696, 57907432, 58341764, 57814016, 56804164, 55839408, 54453744, -52364240, 50339700, 48634600, 46335180, 43406552, 41039488, 39003672, 35665408, 31436476, 28479392, -26251914, 21914534, 16054051, 12672838, 12202002, 10322954, 5653788, 2725157, 4658966, 8232379, -9478456, 9896678, 13198435, 18043694, 17870286, 9187472, -1604170, -3621731, 4505958, 11703249, -11009612, 11530913, 22065932, 29156386, 10431402, -29294362, -55091008, -42656540, -7008313, 17862768, -16177531, -407485, -11506217, -9565429, -7515656, -24008330, -54532128, -65081104, -29904246, }, +17628694, 19673634, 5511517, -1316944, 26298084, 60221348, 29726006, -86547888, -207553216, -211214688, +-51820392, 175624432, 290699488, 184001760, -57539676, -215310464, -162342784, 8655970, 113864416, 90045600, +19725712, -16241956, -23730232, -33396056, -36325224, -14506789, 15855409, 28052578, 24194624, 24378772, +35450124, 50498076, 65474092, 79804784, 89017496, 88574576, 80295488, 68737192, 55748140, 41954316, +28828358, 16729971, 4466766, -8088497, -19849728, -30842698, -41951092, -52959632, -63195612, -73171744, +-83501680, -93191128, -100623568, -105214888, -106988712, -105779672, -101878232, -96300680, -89617176, -81389096, +-71149888, -58987080, -44915696, -28600724, -9971840, 10462003, 31940598, 53636088, 74668544, 94358288, +112261320, 127707096, 139699184, 147604064, 151536640, 151740656, 147978800, 139933792, 127940096, 112900192, +95545304, 76076216, 54547696, 31362924, 7206955, -17441326, -42510512, -67998456, -93649080, -119086560, +-143967296, -167687872, -189147136, -207169888, -221065184, -230433056, -234611520, -232813536, -224927968, -211891680, +-195147200, -175832736, -154430384, -131102264, -106469552, -82101520, -59958816, -41174776, -25575456, -12447889, +-1443109, 7364795, 13848585, 17929340, 19570556, 18952080, 16517907, 12791486, 8284455, 3510062, +-1264868, -6323266, -12278238, -19502910, -27894738, -37029596, -46336256, -55298776, -63761472, -71935336, +-79978736, -87721488, -94827512, -100983808, -105914968, -109505024, -111884968, -113158968, -113146616, -111667000, +-108869368, -105025912, -100253128, -94717984, -88775904, -82661480, -76385992, -70137352, -64354716, -59281824, +-54871428, -51158968, -48226576, -45827300, -43549356, -41275708, -39049304, -36720360, -34171296, -31555662, +-28919088, -25992068, -22663468, -19183472, -15687905, -12097849, -8553427, -5284421, -2087354, 1395328, +5065914, 8723079, 12654047, 17178796, 22093312, 27161374, 32479080, 37844032, 42629696, 46680924, +50356344, 53518512, 55652040, 56935696, 57907432, 58341764, 57814016, 56804164, 55839408, 54453744, +52364240, 50339700, 48634600, 46335180, 43406552, 41039488, 39003672, 35665408, 31436476, 28479392, +26251914, 21914534, 16054051, 12672838, 12202002, 10322954, 5653788, 2725157, 4658966, 8232379, +9478456, 9896678, 13198435, 18043694, 17870286, 9187472, -1604170, -3621731, 4505958, 11703249, +11009612, 11530913, 22065932, 29156386, 10431402, -29294362, -55091008, -42656540, -7008313, 17862768, +16177531, -407485, -11506217, -9565429, -7515656, -24008330, -54532128, -65081104, -29904246, }, { -5993627, --17628694, -19673634, -5511517, 1316944, -26298084, -60221348, -29726006, 86547888, 207553216, 211214688, -51820392, -175624432, -290699488, -184001760, 57539676, 215310464, 162342784, -8655970, -113864416, -90045600, --19725712, 16241956, 23730232, 33396056, 36325224, 14506789, -15855409, -28052578, -24194624, -24378772, --35450124, -50498076, -65474092, -79804784, -89017496, -88574576, -80295488, -68737192, -55748140, -41954316, --28828358, -16729971, -4466766, 8088497, 19849728, 30842698, 41951092, 52959632, 63195612, 73171744, -83501680, 93191128, 100623568, 105214888, 106988712, 105779672, 101878232, 96300680, 89617176, 81389096, -71149888, 58987080, 44915696, 28600724, 9971840, -10462003, -31940598, -53636088, -74668544, -94358288, --112261320, -127707096, -139699184, -147604064, -151536640, -151740656, -147978800, -139933792, -127940096, -112900192, --95545304, -76076216, -54547696, -31362924, -7206955, 17441326, 42510512, 67998456, 93649080, 119086560, -143967296, 167687872, 189147136, 207169888, 221065184, 230433056, 234611520, 232813536, 224927968, 211891680, -195147200, 175832736, 154430384, 131102264, 106469552, 82101520, 59958816, 41174776, 25575456, 12447889, -1443109, -7364795, -13848585, -17929340, -19570556, -18952080, -16517907, -12791486, -8284455, -3510062, -1264868, 6323266, 12278238, 19502910, 27894738, 37029596, 46336256, 55298776, 63761472, 71935336, -79978736, 87721488, 94827512, 100983808, 105914968, 109505024, 111884968, 113158968, 113146616, 111667000, -108869368, 105025912, 100253128, 94717984, 88775904, 82661480, 76385992, 70137352, 64354716, 59281824, -54871428, 51158968, 48226576, 45827300, 43549356, 41275708, 39049304, 36720360, 34171296, 31555662, -28919088, 25992068, 22663468, 19183472, 15687905, 12097849, 8553427, 5284421, 2087354, -1395328, --5065914, -8723079, -12654047, -17178796, -22093312, -27161374, -32479080, -37844032, -42629696, -46680924, --50356344, -53518512, -55652040, -56935696, -57907432, -58341764, -57814016, -56804164, -55839408, -54453744, --52364240, -50339700, -48634600, -46335180, -43406552, -41039488, -39003672, -35665408, -31436476, -28479392, --26251914, -21914534, -16054051, -12672838, -12202002, -10322954, -5653788, -2725157, -4658966, -8232379, --9478456, -9896678, -13198435, -18043694, -17870286, -9187472, 1604170, 3621731, -4505958, -11703249, --11009612, -11530913, -22065932, -29156386, -10431402, 29294362, 55091008, 42656540, 7008313, -17862768, --16177531, 407485, 11506217, 9565429, 7515656, 24008330, 54532128, 65081104, 29904246, }, +-17628694, -19673634, -5511517, 1316944, -26298084, -60221348, -29726006, 86547888, 207553216, 211214688, +51820392, -175624432, -290699488, -184001760, 57539676, 215310464, 162342784, -8655970, -113864416, -90045600, +-19725712, 16241956, 23730232, 33396056, 36325224, 14506789, -15855409, -28052578, -24194624, -24378772, +-35450124, -50498076, -65474092, -79804784, -89017496, -88574576, -80295488, -68737192, -55748140, -41954316, +-28828358, -16729971, -4466766, 8088497, 19849728, 30842698, 41951092, 52959632, 63195612, 73171744, +83501680, 93191128, 100623568, 105214888, 106988712, 105779672, 101878232, 96300680, 89617176, 81389096, +71149888, 58987080, 44915696, 28600724, 9971840, -10462003, -31940598, -53636088, -74668544, -94358288, +-112261320, -127707096, -139699184, -147604064, -151536640, -151740656, -147978800, -139933792, -127940096, -112900192, +-95545304, -76076216, -54547696, -31362924, -7206955, 17441326, 42510512, 67998456, 93649080, 119086560, +143967296, 167687872, 189147136, 207169888, 221065184, 230433056, 234611520, 232813536, 224927968, 211891680, +195147200, 175832736, 154430384, 131102264, 106469552, 82101520, 59958816, 41174776, 25575456, 12447889, +1443109, -7364795, -13848585, -17929340, -19570556, -18952080, -16517907, -12791486, -8284455, -3510062, +1264868, 6323266, 12278238, 19502910, 27894738, 37029596, 46336256, 55298776, 63761472, 71935336, +79978736, 87721488, 94827512, 100983808, 105914968, 109505024, 111884968, 113158968, 113146616, 111667000, +108869368, 105025912, 100253128, 94717984, 88775904, 82661480, 76385992, 70137352, 64354716, 59281824, +54871428, 51158968, 48226576, 45827300, 43549356, 41275708, 39049304, 36720360, 34171296, 31555662, +28919088, 25992068, 22663468, 19183472, 15687905, 12097849, 8553427, 5284421, 2087354, -1395328, +-5065914, -8723079, -12654047, -17178796, -22093312, -27161374, -32479080, -37844032, -42629696, -46680924, +-50356344, -53518512, -55652040, -56935696, -57907432, -58341764, -57814016, -56804164, -55839408, -54453744, +-52364240, -50339700, -48634600, -46335180, -43406552, -41039488, -39003672, -35665408, -31436476, -28479392, +-26251914, -21914534, -16054051, -12672838, -12202002, -10322954, -5653788, -2725157, -4658966, -8232379, +-9478456, -9896678, -13198435, -18043694, -17870286, -9187472, 1604170, 3621731, -4505958, -11703249, +-11009612, -11530913, -22065932, -29156386, -10431402, 29294362, 55091008, 42656540, 7008313, -17862768, +-16177531, 407485, 11506217, 9565429, 7515656, 24008330, 54532128, 65081104, 29904246, }, }, { { -30602, -2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171, -46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972, -37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052, --35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185, -15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383, --9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276, --64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755, -4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568, -138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816, -30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592, --126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964, --51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033, --3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120, --81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416, --189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192, --182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576, --116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924, --60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990, --17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384, --5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851, --1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018, -10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796, -62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832, -27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, }, +2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171, +46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972, +37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052, +-35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185, +15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383, +-9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276, +-64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755, +4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568, +138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816, +30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592, +-126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964, +-51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033, +-3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120, +-81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416, +-189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192, +-182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576, +-116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924, +-60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990, +-17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384, +-5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851, +-1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018, +10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796, +62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832, +27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, }, { -30602, -2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171, -46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972, -37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052, --35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185, -15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383, --9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276, --64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755, -4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568, -138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816, -30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592, --126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964, --51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033, --3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120, --81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416, --189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192, --182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576, --116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924, --60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990, --17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384, --5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851, --1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018, -10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796, -62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832, -27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, }, +2479270, 9492951, 16711718, 17120276, 6766721, -13114683, -36174900, -49415748, -36882496, 3577171, +46484968, 55562920, 22531936, -20698522, -37361384, -23899882, -2588792, 12509092, 24769614, 35760972, +37337760, 26557930, 13006235, 4521527, -3856881, -20049982, -41466836, -57522496, -60912300, -51961052, +-35696548, -18810884, -7061463, -2002529, -471373, 1672890, 5923834, 11039677, 14950244, 16398185, +15717970, 14334453, 13266617, 12461848, 11574937, 10468983, 8745627, 5770289, 1439351, -3791383, +-9651865, -16166794, -23213224, -30580168, -38163468, -45602888, -52181168, -57428008, -61326228, -63802276, +-64693480, -64217276, -62700616, -59956132, -55662776, -50021336, -43212204, -34663608, -23717884, -10545755, +4327180, 20737176, 38386272, 56305948, 73504608, 89552752, 104081016, 116416160, 126146408, 133414568, +138302784, 140432016, 139366320, 135071888, 127921304, 118373056, 106448616, 91569240, 73389176, 52714816, +30967788, 8856223, -13687524, -36408436, -58315456, -78199544, -94956360, -107788648, -116784992, -122916592, +-126914136, -128452808, -126728912, -121377920, -112811608, -102297528, -91600376, -81738056, -72181224, -61933964, +-51042464, -40455372, -30998926, -23176718, -17252346, -12846247, -9113921, -5813775, -3537443, -2767033, +-3551938, -6061810, -10421201, -16129213, -22588306, -29928942, -38486664, -48046188, -58372364, -69697120, +-81970528, -94491424, -106836240, -119177288, -131404528, -143031536, -154034704, -164636304, -174413792, -182744416, +-189709776, -195511200, -199726720, -202112576, -203154096, -202998416, -201069424, -197389184, -192904704, -188092192, +-182729920, -177114784, -171862576, -166647952, -160692976, -154040608, -147007072, -139340544, -131171520, -123469576, +-116542328, -109671456, -102832256, -96776888, -91197728, -85123032, -78982840, -73858408, -69328824, -64517924, +-60049012, -56563644, -53043384, -48741436, -44484052, -40409736, -35395900, -29847338, -25490094, -21993990, +-17826798, -13899588, -11877732, -10437844, -7936563, -6040872, -6036577, -5704791, -4167729, -4024384, +-5182952, -4381941, -2988224, -5002027, -7115150, -4204773, -2294586, -8315057, -12634183, -5450851, +-1278827, -14765024, -24306294, -5111548, 11762842, -26110716, -98523864, -122462400, -70461088, -8380018, +10191421, 14363981, 40327060, 53931368, 8960912, -63687924, -88644368, -45148696, 17628694, 52721796, +62794568, 77477992, 107806360, 126214056, 90390808, -1745904, -87026240, -94509144, -29715804, 29446832, +27824408, -8575976, -23322210, -6749004, 4201552, -14711874, -44802952, -51480016, -22588306, }, }, { { 1764158, -11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288, -103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786, --40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898, -8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600, --39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764, --38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274, -5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384, -85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896, -74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672, -78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040, -57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956, --39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704, --148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176, --106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313, --3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436, -49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032, -41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780, -42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282, -24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824, --9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316, --15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795, --4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632, --9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520, -16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, }, +11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288, +103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786, +-40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898, +8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600, +-39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764, +-38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274, +5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384, +85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896, +74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672, +78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040, +57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956, +-39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704, +-148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176, +-106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313, +-3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436, +49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032, +41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780, +42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282, +24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824, +-9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316, +-15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795, +-4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632, +-9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520, +16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, }, { 1764158, -11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288, -103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786, --40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898, -8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600, --39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764, --38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274, -5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384, -85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896, -74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672, -78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040, -57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956, --39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704, --148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176, --106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313, --3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436, -49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032, -41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780, -42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282, -24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824, --9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316, --15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795, --4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632, --9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520, -16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, }, +11093364, 25240986, 28730110, 14854144, -9666361, -40182104, -69641824, -71814000, -21892522, 57956288, +103303088, 74577272, 1510218, -52022792, -52189760, -14654428, 22415972, 30050276, 5174362, -28579786, +-40120364, -19475530, 15033996, 39711268, 47734268, 45950780, 40360880, 32664836, 24563454, 17143898, +8398272, -3512747, -16379395, -26647050, -33858836, -39592620, -43914968, -45525044, -44310104, -41805600, +-39669392, -38815768, -39513164, -41541996, -44401908, -47503948, -49970872, -50604380, -48607756, -44217764, +-38310572, -31732292, -25287694, -19827180, -15787763, -12870406, -10492605, -8318278, -6136972, -3542274, +5369, 4964982, 11649562, 20126216, 30054034, 40803800, 51764556, 62355408, 71839768, 79551384, +85389856, 89726696, 92673584, 93885840, 93318904, 91695408, 89711664, 87142200, 83405040, 78859896, +74775384, 71914936, 69914016, 68377488, 67898064, 69339560, 72409392, 75580688, 77486040, 78026672, +78029896, 78132432, 78204376, 77709384, 76295800, 73944304, 70800928, 67173288, 63604708, 60559040, +57841400, 54515484, 49600428, 42812236, 34536368, 25171730, 14672145, 2752000, -10590316, -24861956, +-39404716, -53848152, -68203008, -82547664, -96672200, -109987672, -121740848, -131383584, -138849312, -144482704, +-148653120, -151401360, -152416576, -151308480, -147960544, -142739472, -136395808, -129641976, -122683592, -115113176, +-106294536, -95959232, -84526032, -72860896, -61704720, -51327008, -41615548, -32273994, -22919020, -13291313, +-3552475, 5793911, 14383845, 22182970, 29150480, 35029752, 39650600, 43175696, 45889580, 47962436, +49513992, 50675784, 51485920, 51858508, 51663624, 50763828, 49123152, 47008952, 44880260, 42984032, +41307920, 39934604, 39033200, 38481832, 37993280, 37645388, 37808060, 38575784, 39746164, 41225780, +42949136, 44591424, 45797772, 46382424, 46002320, 44205952, 41131828, 37461240, 33474438, 29009282, +24359980, 20109574, 16124918, 11930882, 7791608, 4148402, 641024, -2932926, -5789616, -7692824, +-9641128, -11643656, -12316356, -12039867, -12932683, -14353244, -13486197, -11772505, -13637058, -17055316, +-15304579, -11020349, -15027017, -25094958, -22591528, -1823214, 14637249, 7070590, -10776610, -13829795, +-4560719, -2980707, -7587597, 1844152, 24108726, 31710818, 13125420, -8542153, -11340861, -4901632, +-9131637, -22211424, -30261266, -35723928, -52106008, -73799888, -74506944, -42775188, -1936493, 17946520, +16542067, 15548318, 22264574, 23836532, 19005768, 28008018, 55568824, 67573256, 31613644, }, }, { { -4406637, --7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808, -35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500, -46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192, --110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614, -19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620, -42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658, -29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216, -86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864, -139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280, -90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912, --131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584, --255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448, --107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084, -83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168, -221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024, -186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744, -85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452, --4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072, --27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210, --15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800, --5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372, -30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056, -53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268, -27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, }, +-7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808, +35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500, +46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192, +-110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614, +19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620, +42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658, +29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216, +86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864, +139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280, +90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912, +-131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584, +-255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448, +-107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084, +83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168, +221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024, +186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744, +85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452, +-4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072, +-27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210, +-15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800, +-5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372, +30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056, +53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268, +27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, }, { -4406637, --7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808, -35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500, -46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192, --110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614, -19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620, -42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658, -29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216, -86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864, -139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280, -90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912, --131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584, --255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448, --107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084, -83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168, -221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024, -186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744, -85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452, --4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072, --27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210, --15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800, --5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372, -30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056, -53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268, -27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, }, +-7348689, -3356517, -1883880, -58519, 15189152, 32778654, 12958990, -56069724, -113955680, -81304808, +35633732, 129195304, 105268040, -6237903, -87387016, -69393784, 2754685, 46722800, 43382392, 34414500, +46532748, 59179280, 45785960, 12456479, -17613660, -37055904, -55365888, -77968152, -98888400, -110563192, +-110758080, -100773888, -83529064, -63528472, -44748728, -28308130, -13724568, -1228898, 8499203, 15370614, +19379430, 20318954, 18934364, 17206176, 16825534, 18235894, 21321828, 25922276, 31459024, 37022620, +42048268, 46316928, 49381924, 50653772, 49984828, 47725676, 44330504, 40263708, 36105644, 32465658, +29827474, 28544890, 28830504, 30761092, 34375308, 39688720, 46570332, 54795192, 64247344, 74831216, +86176368, 97677216, 108785080, 119024280, 127867080, 134872176, 139811392, 142530096, 143018112, 141754864, +139501616, 136562240, 132723080, 128011504, 122875792, 117545736, 111997712, 106638136, 102006544, 97423280, +90851984, 80689552, 67099736, 51097764, 32862406, 11516418, -13649406, -42112156, -72248328, -102324912, +-131304128, -158685088, -183792928, -205630688, -223527808, -237600816, -248374208, -256063808, -260270720, -260319584, +-255977360, -247973152, -237642688, -225920656, -212798992, -197832096, -180929248, -162609072, -143774560, -125302448, +-107543832, -90107880, -72290208, -53744536, -34629784, -15271293, 4137127, 23631446, 43414068, 63530084, +83574160, 102937480, 121328528, 138791872, 155334464, 170847888, 185203824, 198027520, 208609776, 216449168, +221711584, 224857648, 226156336, 225817040, 224124272, 221082912, 216368640, 209960544, 202450800, 194533024, +186563712, 178708224, 171015936, 163204992, 154712240, 145068960, 134116800, 122069952, 109522736, 97109744, +85053776, 73320464, 62079996, 51527260, 41466300, 31688268, 22530324, 14449881, 7395397, 1171452, +-4069482, -8266202, -11797738, -14943802, -17665200, -20134270, -22630182, -24838332, -26244934, -27055072, +-27682138, -27813672, -27129160, -26157424, -25265682, -23912768, -21990770, -20338280, -19040126, -17272210, +-15395310, -14513768, -13857175, -12069932, -10526965, -10856067, -10587094, -7240778, -4358855, -5493800, +-5580773, 703838, 5775121, -506269, -9443022, -1343788, 23636278, 42522324, 42022496, 33808372, +30777736, 29378650, 25759604, 28761248, 42633992, 54049480, 51519208, 43749612, 44405668, 51233056, +53909892, 50683300, 43901544, 31022548, 14563160, 9776956, 25884694, 47662324, 52263848, 39165268, +27675696, 28365038, 33512556, 35976256, 41140956, 53856744, 64300492, 55533392, 22204980, }, }, { { 117575, -161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400, --12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864, --8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951, --16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032, --78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826, --30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334, --17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774, -1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604, -50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912, -85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468, -46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072, -96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720, -120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128, -101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552, -93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528, -26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840, --60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392, --68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080, --79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560, --64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290, --20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130, -19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908, -53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384, -50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, }, +161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400, +-12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864, +-8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951, +-16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032, +-78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826, +-30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334, +-17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774, +1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604, +50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912, +85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468, +46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072, +96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720, +120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128, +101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552, +93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528, +26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840, +-60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392, +-68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080, +-79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560, +-64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290, +-20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130, +19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908, +53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384, +50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, }, { 117575, -161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400, --12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864, --8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951, --16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032, --78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826, --30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334, --17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774, -1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604, -50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912, -85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468, -46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072, -96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720, -120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128, -101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552, -93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528, -26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840, --60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392, --68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080, --79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560, --64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290, --20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130, -19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908, -53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384, -50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, }, +161061, -252329, -1464584, -3598646, -4524748, -379031, 6758668, 4143033, -16192564, -33903400, +-12020003, 49617072, 89670864, 48064444, -48242148, -100213936, -51793548, 42024108, 84818088, 49868864, +-8434779, -34635152, -24835112, -3246995, 16035260, 30627412, 36352068, 29423210, 13908715, -2612951, +-16478179, -27019102, -33733748, -38114076, -44135084, -53906672, -65277060, -74832824, -80749144, -82240032, +-78949552, -71816152, -62895500, -53892712, -45776836, -39388608, -35219268, -32866164, -31560494, -30902826, +-30591978, -30010548, -28633474, -26456462, -23782844, -20996484, -18630494, -17163226, -16643535, -16815334, +-17479444, -18406620, -19099720, -19061064, -18182744, -16600049, -14325863, -11284490, -7541963, -3243774, +1568200, 6864432, 12396886, 17781702, 22871238, 27857158, 32864552, 37613176, 41810432, 45802604, +50356880, 55646132, 60961692, 65723200, 70293048, 75307416, 80490912, 84649512, 86786256, 86875912, +85539104, 83229488, 79847200, 75143136, 69425464, 63683092, 58845348, 55023364, 51725364, 48756468, +46721728, 46633144, 49120468, 53931368, 60053844, 66373888, 72363760, 78207600, 84296784, 90664072, +96856880, 102248672, 106451304, 109519520, 111827528, 113777976, 115599048, 117298240, 118724704, 119707720, +120225800, 120397064, 120254792, 119632016, 118329568, 116299128, 113634096, 110527224, 107276472, 104199128, +101474504, 99150392, 97272960, 95897496, 95001992, 94505920, 94329296, 94344864, 94334128, 94034552, +93170728, 91431800, 88545584, 84382152, 78907136, 72140952, 64253784, 55550032, 46234788, 36351528, +26020522, 15505369, 4977330, -5508296, -15746424, -25402048, -34286188, -42334956, -49382996, -55277840, +-60101624, -63987496, -66891432, -68781752, -69795904, -70051456, -69659000, -69007240, -68578280, -68463392, +-68547680, -69004552, -70006360, -71223440, -72264976, -73256576, -74401184, -75542032, -76666776, -78069080, +-79573936, -80576808, -81057848, -81349904, -80996640, -79342008, -76901392, -74463992, -71653480, -68145560, +-64833068, -61896920, -58074400, -53672060, -50640348, -47916264, -42216844, -35222488, -31835372, -29344290, +-20187420, -8438000, -6424734, -8773544, 7063611, 41104448, 58184460, 37411848, 8157754, 6343130, +19957102, 18105434, 12898861, 40517112, 89652072, 105694848, 72303624, 36204428, 35644472, 51827908, +53061100, 43456480, 38454452, 28644210, 3903052, -12447889, 8261907, 52053392, 76827304, 68179384, +50771344, 46590196, 50434728, 51454780, 54419384, 66729296, 78190416, 67669360, 27167816, }, }, }; const Word32 CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 500112448, -418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072, --262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984, -349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680, --455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128, --216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212, --15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112, -108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904, -178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168, -238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968, -277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544, -281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064, -306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160, -343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928, -363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208, -380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272, -434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, }, +418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072, +-262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984, +349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680, +-455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128, +-216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212, +-15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112, +108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904, +178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168, +238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968, +277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544, +281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064, +306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160, +343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928, +363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208, +380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272, +434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, }, { 500112448, -418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072, --262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984, -349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680, --455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128, --216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212, --15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112, -108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904, -178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168, -238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968, -277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544, -281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064, -306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160, -343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928, -363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208, -380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272, -434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, }, +418537056, 287121792, 143605456, 14763950, -86528024, -166246368, -241739552, -311749664, -347549824, -328959072, +-262918032, -147998128, 29484414, 216079808, 266078048, 94506464, -160373536, -237499344, -45432700, 230351984, +349093344, 263181104, 94669672, -54703388, -179336896, -294431296, -382621984, -428603392, -447339648, -456935680, +-455972512, -440012416, -416439488, -393079712, -368706304, -341304416, -313900896, -288643808, -264001440, -239418128, +-216171072, -193799664, -170890304, -148231664, -127228208, -107119168, -86873232, -67434744, -49669148, -32590212, +-15431817, 1001264, 16207596, 30826054, 44940928, 57775900, 69332048, 80341120, 90769840, 100129112, +108780248, 117362128, 125608464, 133045736, 140035792, 147043568, 153789360, 159989136, 166012832, 172165904, +178216976, 184042032, 189920240, 195976144, 202025056, 208014400, 214042912, 220098288, 226173520, 232313168, +238288544, 243737776, 248770944, 253786400, 258645072, 262792400, 266229456, 269521024, 272802368, 275555968, +277430720, 278632256, 279502528, 280196672, 280706720, 280861856, 280527392, 280017376, 279963680, 280580544, +281469600, 282292096, 283223040, 284627488, 286693376, 289421216, 292608608, 295871168, 299018848, 302320064, +306113600, 310339840, 314677760, 318900256, 322870400, 326495360, 329891616, 333329728, 336852128, 340216160, +343272032, 346091136, 348726112, 351167264, 353505344, 355814432, 357938816, 359685792, 361114400, 362388928, +363542144, 364617504, 365799680, 367162272, 368560800, 369955584, 371522176, 373325536, 375293184, 377594208, +380535168, 384050080, 387854336, 392037088, 396819552, 401957408, 407214976, 413027136, 419667168, 426614272, +434127232, 443276608, 450554944, 444149536, 412868768, 361643232, 312110432, 282796224, 273215232, }, }, { { 13864154, -136623984, 328640160, 487629664, 518798752, 400693056, 175451568, -101884144, -367117696, -542826944, -596249344, --564139648, -451535296, -177904528, 243203600, 531694944, 367461824, -163075616, -549243648, -406381760, 97649304, -492055072, 546322496, 398481696, 242520704, 109596288, -35486092, -167236896, -245507312, -288138080, -331422240, --372911616, -394943168, -403555136, -412833856, -420243744, -419021856, -413134528, -406657696, -395780160, -378794112, --359887136, -340138848, -316722688, -290845536, -266280992, -242185696, -215901024, -189375312, -165792720, -144028512, --121940560, -100523712, -80735184, -60967596, -40515500, -20994874, -2815888, 15329812, 33093796, 48828948, -62875100, 76620608, 89422832, 99939056, 108899968, 117535536, 125165544, 130876784, 135496016, 139917680, -143608672, 146227536, 148670288, 151568320, 154618816, 157799248, 161570768, 165966656, 170851120, 176503296, -182850720, 189116544, 195128416, 201641728, 208718224, 215347520, 221177936, 226993312, 233166800, 239278000, -245384368, 252129616, 259665136, 267780480, 276746752, 286837248, 297567680, 308396896, 319439264, 330652896, -341231936, 350513344, 358587904, 365545728, 371041152, 374867968, 377070208, 377470720, 376021152, 373483904, -370898336, 368599456, 366440704, 364470912, 362756704, 361157888, 359899456, 359699744, 360843840, 362773344, -364846720, 366792896, 368347680, 369331744, 370134368, 371304224, 372740896, 374010592, 375177728, 376552128, -378008672, 379322912, 380723072, 382422272, 384142944, 385711136, 387467264, 389582528, 391733760, 393863520, -396390592, 399380960, 402513600, 406025280, 410536064, 415955776, 421893568, 428828864, 437292096, 446712032, -457193888, 470256512, 482825184, 481813728, 453202816, 400317792, 346350464, 312895360, 301198528, }, +136623984, 328640160, 487629664, 518798752, 400693056, 175451568, -101884144, -367117696, -542826944, -596249344, +-564139648, -451535296, -177904528, 243203600, 531694944, 367461824, -163075616, -549243648, -406381760, 97649304, +492055072, 546322496, 398481696, 242520704, 109596288, -35486092, -167236896, -245507312, -288138080, -331422240, +-372911616, -394943168, -403555136, -412833856, -420243744, -419021856, -413134528, -406657696, -395780160, -378794112, +-359887136, -340138848, -316722688, -290845536, -266280992, -242185696, -215901024, -189375312, -165792720, -144028512, +-121940560, -100523712, -80735184, -60967596, -40515500, -20994874, -2815888, 15329812, 33093796, 48828948, +62875100, 76620608, 89422832, 99939056, 108899968, 117535536, 125165544, 130876784, 135496016, 139917680, +143608672, 146227536, 148670288, 151568320, 154618816, 157799248, 161570768, 165966656, 170851120, 176503296, +182850720, 189116544, 195128416, 201641728, 208718224, 215347520, 221177936, 226993312, 233166800, 239278000, +245384368, 252129616, 259665136, 267780480, 276746752, 286837248, 297567680, 308396896, 319439264, 330652896, +341231936, 350513344, 358587904, 365545728, 371041152, 374867968, 377070208, 377470720, 376021152, 373483904, +370898336, 368599456, 366440704, 364470912, 362756704, 361157888, 359899456, 359699744, 360843840, 362773344, +364846720, 366792896, 368347680, 369331744, 370134368, 371304224, 372740896, 374010592, 375177728, 376552128, +378008672, 379322912, 380723072, 382422272, 384142944, 385711136, 387467264, 389582528, 391733760, 393863520, +396390592, 399380960, 402513600, 406025280, 410536064, 415955776, 421893568, 428828864, 437292096, 446712032, +457193888, 470256512, 482825184, 481813728, 453202816, 400317792, 346350464, 312895360, 301198528, }, { -13864154, --136623984, -328640160, -487629664, -518798752, -400693056, -175451568, 101884144, 367117696, 542826944, 596249344, -564139648, 451535296, 177904528, -243203600, -531694944, -367461824, 163075616, 549243648, 406381760, -97649304, --492055072, -546322496, -398481696, -242520704, -109596288, 35486092, 167236896, 245507312, 288138080, 331422240, -372911616, 394943168, 403555136, 412833856, 420243744, 419021856, 413134528, 406657696, 395780160, 378794112, -359887136, 340138848, 316722688, 290845536, 266280992, 242185696, 215901024, 189375312, 165792720, 144028512, -121940560, 100523712, 80735184, 60967596, 40515500, 20994874, 2815888, -15329812, -33093796, -48828948, --62875100, -76620608, -89422832, -99939056, -108899968, -117535536, -125165544, -130876784, -135496016, -139917680, --143608672, -146227536, -148670288, -151568320, -154618816, -157799248, -161570768, -165966656, -170851120, -176503296, --182850720, -189116544, -195128416, -201641728, -208718224, -215347520, -221177936, -226993312, -233166800, -239278000, --245384368, -252129616, -259665136, -267780480, -276746752, -286837248, -297567680, -308396896, -319439264, -330652896, --341231936, -350513344, -358587904, -365545728, -371041152, -374867968, -377070208, -377470720, -376021152, -373483904, --370898336, -368599456, -366440704, -364470912, -362756704, -361157888, -359899456, -359699744, -360843840, -362773344, --364846720, -366792896, -368347680, -369331744, -370134368, -371304224, -372740896, -374010592, -375177728, -376552128, --378008672, -379322912, -380723072, -382422272, -384142944, -385711136, -387467264, -389582528, -391733760, -393863520, --396390592, -399380960, -402513600, -406025280, -410536064, -415955776, -421893568, -428828864, -437292096, -446712032, --457193888, -470256512, -482825184, -481813728, -453202816, -400317792, -346350464, -312895360, -301198528, }, +-136623984, -328640160, -487629664, -518798752, -400693056, -175451568, 101884144, 367117696, 542826944, 596249344, +564139648, 451535296, 177904528, -243203600, -531694944, -367461824, 163075616, 549243648, 406381760, -97649304, +-492055072, -546322496, -398481696, -242520704, -109596288, 35486092, 167236896, 245507312, 288138080, 331422240, +372911616, 394943168, 403555136, 412833856, 420243744, 419021856, 413134528, 406657696, 395780160, 378794112, +359887136, 340138848, 316722688, 290845536, 266280992, 242185696, 215901024, 189375312, 165792720, 144028512, +121940560, 100523712, 80735184, 60967596, 40515500, 20994874, 2815888, -15329812, -33093796, -48828948, +-62875100, -76620608, -89422832, -99939056, -108899968, -117535536, -125165544, -130876784, -135496016, -139917680, +-143608672, -146227536, -148670288, -151568320, -154618816, -157799248, -161570768, -165966656, -170851120, -176503296, +-182850720, -189116544, -195128416, -201641728, -208718224, -215347520, -221177936, -226993312, -233166800, -239278000, +-245384368, -252129616, -259665136, -267780480, -276746752, -286837248, -297567680, -308396896, -319439264, -330652896, +-341231936, -350513344, -358587904, -365545728, -371041152, -374867968, -377070208, -377470720, -376021152, -373483904, +-370898336, -368599456, -366440704, -364470912, -362756704, -361157888, -359899456, -359699744, -360843840, -362773344, +-364846720, -366792896, -368347680, -369331744, -370134368, -371304224, -372740896, -374010592, -375177728, -376552128, +-378008672, -379322912, -380723072, -382422272, -384142944, -385711136, -387467264, -389582528, -391733760, -393863520, +-396390592, -399380960, -402513600, -406025280, -410536064, -415955776, -421893568, -428828864, -437292096, -446712032, +-457193888, -470256512, -482825184, -481813728, -453202816, -400317792, -346350464, -312895360, -301198528, }, }, { { 64401424, -63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941, --17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588, -98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472, --77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936, --101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536, --96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880, -137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280, -327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656, -134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182, -23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536, -63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314, -12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520, --33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968, -24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800, -49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044, -62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, }, +63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941, +-17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588, +98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472, +-77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936, +-101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536, +-96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880, +137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280, +327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656, +134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182, +23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536, +63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314, +12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520, +-33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968, +24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800, +49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044, +62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, }, { 64401424, -63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941, --17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588, -98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472, --77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936, --101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536, --96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880, -137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280, -327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656, -134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182, -23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536, -63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314, -12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520, --33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968, -24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800, -49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044, -62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, }, +63330368, 37157908, -15931644, -58379880, -54824184, -12847858, 30091614, 47290276, 37990596, 12819941, +-17877264, -39993660, -35149476, 1495722, 43596604, 49433464, 8347806, -36291936, -28638842, 34721588, +98505608, 110677016, 72908680, 22891638, -13288629, -35545148, -50949588, -61456688, -68270656, -73939472, +-77989624, -77666968, -73198056, -67782640, -63748588, -62395136, -65560528, -73762304, -84316648, -93879936, +-101488464, -107591080, -112057848, -114704080, -116171352, -116993832, -116838680, -115213032, -111799608, -105879536, +-96558920, -83700320, -67775656, -48956184, -27186070, -2924873, 23012434, 50206020, 78591456, 107864880, +137462032, 166971152, 196106592, 224303600, 250640864, 274176224, 294177344, 310024704, 321084768, 326829280, +327020960, 321681792, 311023264, 295638720, 276577632, 254856384, 231045616, 205785312, 180449824, 156516656, +134315440, 113291576, 93632432, 76656040, 63151588, 52218748, 42468100, 33854004, 27566174, 24370182, +23728084, 24552718, 26297012, 29117194, 33293512, 38728256, 44891536, 51022064, 56372520, 60442536, +63119376, 64576980, 64919504, 63852740, 60770568, 55293944, 47769700, 39152384, 30319784, 21547314, +12667469, 3592203, -5455146, -14068702, -21811992, -28259812, -33072322, -36057860, -37148244, -36380520, +-33932388, -30065844, -24990804, -18882824, -12054363, -4963909, 1974611, 8501888, 14472429, 19794968, +24357834, 27957016, 30428232, 31926102, 32949916, 34061776, 35713728, 38252588, 41734196, 45710800, +49542448, 52979496, 56159920, 59088548, 61521112, 63342716, 64637648, 65327528, 65163780, 64192044, +62777928, 60743724, 56635588, 48552456, 36449240, 23563264, 14521821, 11260331, 11362873, }, }, { { 11786464, -25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616, --76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008, -95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304, --260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704, --199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489, -29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184, -101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392, -153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792, -105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386, --16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048, --113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068, --51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220, -54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584, -126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208, -218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784, -252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, }, +25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616, +-76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008, +95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304, +-260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704, +-199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489, +29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184, +101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392, +153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792, +105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386, +-16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048, +-113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068, +-51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220, +54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584, +126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208, +218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784, +252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, }, { 11786464, -25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616, --76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008, -95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304, --260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704, --199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489, -29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184, -101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392, -153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792, -105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386, --16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048, --113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068, --51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220, -54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584, -126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208, -218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784, -252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, }, +25789668, 33872260, 16652125, -20252382, -45563160, -35004520, -2744484, 12291660, -8097624, -45591616, +-76592688, -94264872, -89115736, -41623600, 34422016, 69206416, 8408472, -98491656, -133276056, -44265008, +95329480, 179870544, 181108576, 141069280, 94194536, 38961260, -29467234, -99621768, -160425088, -213080304, +-260522512, -299208896, -325018432, -338040224, -339448448, -329772960, -311046368, -286593504, -258777152, -229226704, +-199843216, -171641920, -144170784, -117346560, -92145304, -68815040, -46365784, -24428700, -3939559, 14218489, +29699162, 41950556, 50583976, 56514252, 61536680, 66855996, 72790032, 79448304, 86790016, 94313184, +101418136, 107935752, 113958904, 119470424, 124494456, 129352064, 134420672, 139683072, 144722688, 149181392, +153040960, 156255200, 158280816, 158397856, 156460288, 152775744, 147223424, 139280960, 129104568, 117684792, +105569760, 92379912, 78087336, 63820528, 50685444, 38562900, 26798448, 15387794, 4635344, -5815386, +-16722455, -28219546, -39760124, -51000052, -62167504, -73465416, -84478784, -94344864, -102413496, -108639048, +-113280296, -116241680, -116895592, -114715896, -109939888, -103384160, -95636040, -86646136, -76100912, -64054068, +-51193864, -38566120, -26919782, -16155519, -5476620, 5771363, 17424682, 28651190, 38631620, 47049220, +54205708, 60852172, 67741832, 75123808, 82692080, 90047208, 97074848, 103923176, 110883704, 118351584, +126650536, 135782704, 145463568, 155364000, 165216112, 174804640, 184064048, 193087232, 201897824, 210312208, +218072128, 224942464, 230699872, 235267040, 238810912, 241544128, 243650816, 245502480, 247508224, 249758784, +252559648, 256762272, 261317616, 260416752, 246926256, 221287984, 194087424, 176352432, 169659792, }, }, { { -4028143, --9701794, -11829414, -3768297, 8409009, 13034689, 10660109, 15154792, 31817654, 42967928, 22381074, --38646652, -116118736, -155936848, -106882408, 17986786, 117991344, 88319024, -55631100, -175194944, -155151936, --22438520, 107107896, 163734896, 163645776, 141754320, 103114648, 44587128, -20019380, -74875240, -119631480, --159479648, -192540704, -215611648, -231079440, -241096384, -242445536, -231967968, -211899728, -187148368, -161327568, --136807056, -115175992, -96413960, -79535816, -64121716, -49940268, -36028332, -21686364, -7558069, 5389110, -17023102, 27420682, 36199596, 43281996, 49421116, 55405616, 61469572, 67748280, 74530568, 81856704, -89521080, 97530120, 105970264, 114517784, 122714192, 130636264, 138667856, 146708560, 154226912, 161064496, -167516080, 173520976, 178387712, 181562768, 183142768, 183258208, 181393648, 176939760, 170231568, 162338496, -153725472, 143828784, 132326328, 120121648, 108309952, 96578784, 83629992, 69130720, 54300196, 40343164, -27209692, 14343043, 1941862, -9128416, -18303004, -25732760, -31920196, -37209448, -41509248, -44444320, --45890116, -46268608, -46170900, -45974404, -46022184, -46740520, -48153024, -49654652, -50677928, -51319492, --52062520, -53265112, -55057724, -57225608, -59023588, -59653876, -59118616, -58188752, -57553636, -57443040, --57839252, -58457188, -58693412, -58139900, -56941604, -55291260, -52981104, -49748068, -45523432, -40108016, --33250026, -25235080, -16774532, -8288213, 44560, 7775502, 14513768, 20418812, 25611964, 29609504, -32030256, 33180232, 33344516, 32455994, 30959734, 29850022, 29509110, 29776472, 31127776, 34277060, -39178156, 46445776, 58442692, 75504448, 91873112, 99620696, 97023312, 89856088, 84774064, }, +-9701794, -11829414, -3768297, 8409009, 13034689, 10660109, 15154792, 31817654, 42967928, 22381074, +-38646652, -116118736, -155936848, -106882408, 17986786, 117991344, 88319024, -55631100, -175194944, -155151936, +-22438520, 107107896, 163734896, 163645776, 141754320, 103114648, 44587128, -20019380, -74875240, -119631480, +-159479648, -192540704, -215611648, -231079440, -241096384, -242445536, -231967968, -211899728, -187148368, -161327568, +-136807056, -115175992, -96413960, -79535816, -64121716, -49940268, -36028332, -21686364, -7558069, 5389110, +17023102, 27420682, 36199596, 43281996, 49421116, 55405616, 61469572, 67748280, 74530568, 81856704, +89521080, 97530120, 105970264, 114517784, 122714192, 130636264, 138667856, 146708560, 154226912, 161064496, +167516080, 173520976, 178387712, 181562768, 183142768, 183258208, 181393648, 176939760, 170231568, 162338496, +153725472, 143828784, 132326328, 120121648, 108309952, 96578784, 83629992, 69130720, 54300196, 40343164, +27209692, 14343043, 1941862, -9128416, -18303004, -25732760, -31920196, -37209448, -41509248, -44444320, +-45890116, -46268608, -46170900, -45974404, -46022184, -46740520, -48153024, -49654652, -50677928, -51319492, +-52062520, -53265112, -55057724, -57225608, -59023588, -59653876, -59118616, -58188752, -57553636, -57443040, +-57839252, -58457188, -58693412, -58139900, -56941604, -55291260, -52981104, -49748068, -45523432, -40108016, +-33250026, -25235080, -16774532, -8288213, 44560, 7775502, 14513768, 20418812, 25611964, 29609504, +32030256, 33180232, 33344516, 32455994, 30959734, 29850022, 29509110, 29776472, 31127776, 34277060, +39178156, 46445776, 58442692, 75504448, 91873112, 99620696, 97023312, 89856088, 84774064, }, { 4028143, -9701794, 11829414, 3768297, -8409009, -13034689, -10660109, -15154792, -31817654, -42967928, -22381074, -38646652, 116118736, 155936848, 106882408, -17986786, -117991344, -88319024, 55631100, 175194944, 155151936, -22438520, -107107896, -163734896, -163645776, -141754320, -103114648, -44587128, 20019380, 74875240, 119631480, -159479648, 192540704, 215611648, 231079440, 241096384, 242445536, 231967968, 211899728, 187148368, 161327568, -136807056, 115175992, 96413960, 79535816, 64121716, 49940268, 36028332, 21686364, 7558069, -5389110, --17023102, -27420682, -36199596, -43281996, -49421116, -55405616, -61469572, -67748280, -74530568, -81856704, --89521080, -97530120, -105970264, -114517784, -122714192, -130636264, -138667856, -146708560, -154226912, -161064496, --167516080, -173520976, -178387712, -181562768, -183142768, -183258208, -181393648, -176939760, -170231568, -162338496, --153725472, -143828784, -132326328, -120121648, -108309952, -96578784, -83629992, -69130720, -54300196, -40343164, --27209692, -14343043, -1941862, 9128416, 18303004, 25732760, 31920196, 37209448, 41509248, 44444320, -45890116, 46268608, 46170900, 45974404, 46022184, 46740520, 48153024, 49654652, 50677928, 51319492, -52062520, 53265112, 55057724, 57225608, 59023588, 59653876, 59118616, 58188752, 57553636, 57443040, -57839252, 58457188, 58693412, 58139900, 56941604, 55291260, 52981104, 49748068, 45523432, 40108016, -33250026, 25235080, 16774532, 8288213, -44560, -7775502, -14513768, -20418812, -25611964, -29609504, --32030256, -33180232, -33344516, -32455994, -30959734, -29850022, -29509110, -29776472, -31127776, -34277060, --39178156, -46445776, -58442692, -75504448, -91873112, -99620696, -97023312, -89856088, -84774064, }, +9701794, 11829414, 3768297, -8409009, -13034689, -10660109, -15154792, -31817654, -42967928, -22381074, +38646652, 116118736, 155936848, 106882408, -17986786, -117991344, -88319024, 55631100, 175194944, 155151936, +22438520, -107107896, -163734896, -163645776, -141754320, -103114648, -44587128, 20019380, 74875240, 119631480, +159479648, 192540704, 215611648, 231079440, 241096384, 242445536, 231967968, 211899728, 187148368, 161327568, +136807056, 115175992, 96413960, 79535816, 64121716, 49940268, 36028332, 21686364, 7558069, -5389110, +-17023102, -27420682, -36199596, -43281996, -49421116, -55405616, -61469572, -67748280, -74530568, -81856704, +-89521080, -97530120, -105970264, -114517784, -122714192, -130636264, -138667856, -146708560, -154226912, -161064496, +-167516080, -173520976, -178387712, -181562768, -183142768, -183258208, -181393648, -176939760, -170231568, -162338496, +-153725472, -143828784, -132326328, -120121648, -108309952, -96578784, -83629992, -69130720, -54300196, -40343164, +-27209692, -14343043, -1941862, 9128416, 18303004, 25732760, 31920196, 37209448, 41509248, 44444320, +45890116, 46268608, 46170900, 45974404, 46022184, 46740520, 48153024, 49654652, 50677928, 51319492, +52062520, 53265112, 55057724, 57225608, 59023588, 59653876, 59118616, 58188752, 57553636, 57443040, +57839252, 58457188, 58693412, 58139900, 56941604, 55291260, 52981104, 49748068, 45523432, 40108016, +33250026, 25235080, 16774532, 8288213, -44560, -7775502, -14513768, -20418812, -25611964, -29609504, +-32030256, -33180232, -33344516, -32455994, -30959734, -29850022, -29509110, -29776472, -31127776, -34277060, +-39178156, -46445776, -58442692, -75504448, -91873112, -99620696, -97023312, -89856088, -84774064, }, }, { { 17964774, --6148246, -9459665, 17413408, 24617678, -15374372, -48695264, -7977365, 84730040, 133488656, 83583824, --20476256, -94089848, -92138320, -26839250, 51866024, 81462104, 32069448, -51904144, -84628032, -33337000, -45020384, 77433432, 55789476, 22835804, 6847789, 3155727, 4340602, 14636175, 35163436, 57389352, -74107512, 84549656, 88887568, 86885576, 80854904, 73137928, 62209380, 45836428, 25757992, 5853504, --11676942, -25855166, -35569308, -41002980, -44304736, -47410532, -50720880, -54160076, -57655640, -60502132, --61879740, -61896920, -60864520, -58007828, -52034604, -42496552, -29708288, -13909252, 4695473, 25484188, -47616156, 70463768, 93617936, 116656680, 138971184, 159720176, 178019952, 193147360, 204373872, 210771232, -211526608, 206346864, 195362496, 178964848, 157959776, 133424232, 106186088, 76969032, 47055660, 17911088, --10073309, -37474128, -64185600, -88910120, -110740360, -130227168, -148283744, -164888624, -179540368, -192255616, --203338240, -212553104, -219211376, -222908800, -223648608, -221320208, -215513936, -206016704, -193214480, -177784272, --160050880, -139891920, -117452320, -93894968, -71205192, -50973744, -33303176, -17053168, -1281511, 13631689, -26313118, 35674000, 41749768, 45529876, 48215304, 50524384, 52427056, 53514220, 53673132, 53345640, -53175452, 53623740, 54891828, 56893284, 59245852, 61529164, 63567664, 65269008, 66320200, 66337916, -65197068, 62964220, 59689844, 55530168, 50836308, 45907296, 40879500, 35956928, 31396748, 27166206, -23024246, 18983756, 15240155, 11680164, 7983271, 4147328, 373662, -3414499, -7357279, -11221139, --14868103, -18824304, -23437100, -27577986, -29235842, -27671400, -24319716, -21318608, -19778862, }, +-6148246, -9459665, 17413408, 24617678, -15374372, -48695264, -7977365, 84730040, 133488656, 83583824, +-20476256, -94089848, -92138320, -26839250, 51866024, 81462104, 32069448, -51904144, -84628032, -33337000, +45020384, 77433432, 55789476, 22835804, 6847789, 3155727, 4340602, 14636175, 35163436, 57389352, +74107512, 84549656, 88887568, 86885576, 80854904, 73137928, 62209380, 45836428, 25757992, 5853504, +-11676942, -25855166, -35569308, -41002980, -44304736, -47410532, -50720880, -54160076, -57655640, -60502132, +-61879740, -61896920, -60864520, -58007828, -52034604, -42496552, -29708288, -13909252, 4695473, 25484188, +47616156, 70463768, 93617936, 116656680, 138971184, 159720176, 178019952, 193147360, 204373872, 210771232, +211526608, 206346864, 195362496, 178964848, 157959776, 133424232, 106186088, 76969032, 47055660, 17911088, +-10073309, -37474128, -64185600, -88910120, -110740360, -130227168, -148283744, -164888624, -179540368, -192255616, +-203338240, -212553104, -219211376, -222908800, -223648608, -221320208, -215513936, -206016704, -193214480, -177784272, +-160050880, -139891920, -117452320, -93894968, -71205192, -50973744, -33303176, -17053168, -1281511, 13631689, +26313118, 35674000, 41749768, 45529876, 48215304, 50524384, 52427056, 53514220, 53673132, 53345640, +53175452, 53623740, 54891828, 56893284, 59245852, 61529164, 63567664, 65269008, 66320200, 66337916, +65197068, 62964220, 59689844, 55530168, 50836308, 45907296, 40879500, 35956928, 31396748, 27166206, +23024246, 18983756, 15240155, 11680164, 7983271, 4147328, 373662, -3414499, -7357279, -11221139, +-14868103, -18824304, -23437100, -27577986, -29235842, -27671400, -24319716, -21318608, -19778862, }, { -17964774, -6148246, 9459665, -17413408, -24617678, 15374372, 48695264, 7977365, -84730040, -133488656, -83583824, -20476256, 94089848, 92138320, 26839250, -51866024, -81462104, -32069448, 51904144, 84628032, 33337000, --45020384, -77433432, -55789476, -22835804, -6847789, -3155727, -4340602, -14636175, -35163436, -57389352, --74107512, -84549656, -88887568, -86885576, -80854904, -73137928, -62209380, -45836428, -25757992, -5853504, -11676942, 25855166, 35569308, 41002980, 44304736, 47410532, 50720880, 54160076, 57655640, 60502132, -61879740, 61896920, 60864520, 58007828, 52034604, 42496552, 29708288, 13909252, -4695473, -25484188, --47616156, -70463768, -93617936, -116656680, -138971184, -159720176, -178019952, -193147360, -204373872, -210771232, --211526608, -206346864, -195362496, -178964848, -157959776, -133424232, -106186088, -76969032, -47055660, -17911088, -10073309, 37474128, 64185600, 88910120, 110740360, 130227168, 148283744, 164888624, 179540368, 192255616, -203338240, 212553104, 219211376, 222908800, 223648608, 221320208, 215513936, 206016704, 193214480, 177784272, -160050880, 139891920, 117452320, 93894968, 71205192, 50973744, 33303176, 17053168, 1281511, -13631689, --26313118, -35674000, -41749768, -45529876, -48215304, -50524384, -52427056, -53514220, -53673132, -53345640, --53175452, -53623740, -54891828, -56893284, -59245852, -61529164, -63567664, -65269008, -66320200, -66337916, --65197068, -62964220, -59689844, -55530168, -50836308, -45907296, -40879500, -35956928, -31396748, -27166206, --23024246, -18983756, -15240155, -11680164, -7983271, -4147328, -373662, 3414499, 7357279, 11221139, -14868103, 18824304, 23437100, 27577986, 29235842, 27671400, 24319716, 21318608, 19778862, }, +6148246, 9459665, -17413408, -24617678, 15374372, 48695264, 7977365, -84730040, -133488656, -83583824, +20476256, 94089848, 92138320, 26839250, -51866024, -81462104, -32069448, 51904144, 84628032, 33337000, +-45020384, -77433432, -55789476, -22835804, -6847789, -3155727, -4340602, -14636175, -35163436, -57389352, +-74107512, -84549656, -88887568, -86885576, -80854904, -73137928, -62209380, -45836428, -25757992, -5853504, +11676942, 25855166, 35569308, 41002980, 44304736, 47410532, 50720880, 54160076, 57655640, 60502132, +61879740, 61896920, 60864520, 58007828, 52034604, 42496552, 29708288, 13909252, -4695473, -25484188, +-47616156, -70463768, -93617936, -116656680, -138971184, -159720176, -178019952, -193147360, -204373872, -210771232, +-211526608, -206346864, -195362496, -178964848, -157959776, -133424232, -106186088, -76969032, -47055660, -17911088, +10073309, 37474128, 64185600, 88910120, 110740360, 130227168, 148283744, 164888624, 179540368, 192255616, +203338240, 212553104, 219211376, 222908800, 223648608, 221320208, 215513936, 206016704, 193214480, 177784272, +160050880, 139891920, 117452320, 93894968, 71205192, 50973744, 33303176, 17053168, 1281511, -13631689, +-26313118, -35674000, -41749768, -45529876, -48215304, -50524384, -52427056, -53514220, -53673132, -53345640, +-53175452, -53623740, -54891828, -56893284, -59245852, -61529164, -63567664, -65269008, -66320200, -66337916, +-65197068, -62964220, -59689844, -55530168, -50836308, -45907296, -40879500, -35956928, -31396748, -27166206, +-23024246, -18983756, -15240155, -11680164, -7983271, -4147328, -373662, 3414499, 7357279, 11221139, +14868103, 18824304, 23437100, 27577986, 29235842, 27671400, 24319716, 21318608, 19778862, }, }, { { 4097399, -12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860, -87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640, -30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024, -38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252, -63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012, -1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696, --88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276, -11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776, -220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688, -153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680, --89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016, --19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260, --30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520, --119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320, --227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736, --269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, }, +12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860, +87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640, +30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024, +38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252, +63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012, +1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696, +-88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276, +11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776, +220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688, +153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680, +-89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016, +-19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260, +-30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520, +-119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320, +-227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736, +-269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, }, { 4097399, -12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860, -87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640, -30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024, -38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252, -63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012, -1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696, --88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276, -11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776, -220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688, -153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680, --89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016, --19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260, --30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520, --119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320, --227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736, --269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, }, +12105365, 9900973, -6716792, -20841328, -26265872, -41604812, -77798504, -110680232, -102088688, -33487860, +87101936, 218155888, 271257248, 162964480, -65653408, -226745280, -165586016, 49815716, 197829952, 160600640, +30589830, -48527760, -51201916, -36432060, -27878096, -3379066, 36307508, 59490664, 54769960, 42598024, +38815768, 39741868, 40969156, 45441828, 52869436, 58176404, 60235304, 61848064, 63494648, 63940252, +63437740, 61800284, 57372172, 50569480, 44151728, 38767448, 32506996, 24999394, 17683454, 10433012, +1802813, -8124468, -18282066, -28783260, -40001176, -50993608, -60793116, -69653096, -77717968, -84222696, +-88771608, -91616488, -92343408, -89996744, -84433688, -76007496, -64386928, -49173080, -31016106, -10837276, +11263015, 35285840, 60425896, 85688352, 110569104, 134624144, 157159840, 177573808, 195347456, 209883776, +220957808, 228885248, 233705280, 234884784, 232269152, 226452144, 217828928, 206229296, 191663984, 174346688, +153916592, 129858872, 102837088, 74533792, 46139760, 17920214, -9808095, -36027796, -59157804, -77400680, +-89521080, -95811056, -97738424, -96288336, -91280400, -82486456, -70603360, -56943212, -42917996, -29930016, +-19014358, -10431939, -4008815, 282931, 2376728, 2290828, -146029, -5231270, -12693776, -21539260, +-30823906, -40108552, -49162344, -57876832, -66484484, -75242456, -83971440, -92451320, -101007432, -110116520, +-119754960, -129643048, -139730848, -150000128, -160265632, -170581600, -181351776, -192741488, -204456544, -216138320, +-227413680, -237657184, -246387248, -253706400, -259749952, -264183440, -266929536, -268643776, -269709440, -269844736, +-269494176, -269504352, -267268832, -255428688, -228801504, -192924032, -161751152, -144927760, -140091632, }, }, { { 18727668, --11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836, --68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644, --13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440, -27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880, --112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296, --73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393, --3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061, -15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176, -134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336, -249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544, -107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912, --155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736, --236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544, --206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272, --96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600, -17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, }, +-11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836, +-68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644, +-13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440, +27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880, +-112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296, +-73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393, +-3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061, +15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176, +134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336, +249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544, +107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912, +-155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736, +-236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544, +-206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272, +-96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600, +17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, }, { 18727668, --11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836, --68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644, --13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440, -27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880, --112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296, --73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393, --3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061, -15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176, -134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336, -249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544, -107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912, --155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736, --236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544, --206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272, --96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600, -17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, }, +-11437498, -53266720, -83454976, -81330040, -33879240, 45314588, 106220984, 99013488, 29327110, -43024836, +-68955160, -54369992, -31644246, -13194140, 5386963, 16087874, 3529390, -25078850, -41574208, -32392644, +-13325673, -3602404, -1616518, 5564667, 21217138, 37810744, 49380848, 55175836, 54176716, 44300440, +27208080, 8718784, -6712497, -19377818, -32028108, -46491948, -62868120, -79971752, -95463168, -106619880, +-112135688, -112968912, -111066784, -107736568, -103542000, -98983960, -94433448, -89733144, -84549112, -78931296, +-73065448, -66820564, -60029684, -52891448, -45635640, -38110856, -30154966, -22127672, -14702210, -8305393, +-3034395, 1028645, 3723200, 5088463, 5648419, 6205691, 7199976, 8467528, 9920301, 12130061, +15741592, 20657182, 26497800, 33588256, 42718280, 54120348, 67389648, 82216952, 98528160, 116023176, +134091024, 152043984, 169242112, 185334288, 200375264, 214161568, 225654896, 234013984, 240021568, 245238336, +249632096, 251240560, 248440768, 241481312, 231461152, 218694896, 202561392, 182544704, 159153776, 133785544, +107536856, 80280456, 51447264, 21588116, -7601555, -34870304, -60346436, -84909352, -109207600, -133091912, +-155438080, -174749328, -190429184, -203171824, -213856624, -222637680, -229308304, -233832512, -236274208, -236900736, +-236457808, -235688480, -234648560, -233085184, -231158368, -229137040, -226815072, -223780688, -219724624, -214168544, +-206731808, -197954512, -188937216, -180019264, -170715280, -160727344, -149907776, -137711680, -124003224, -109887272, +-96534760, -83916144, -71652400, -59930364, -48608292, -36891620, -24775518, -13274670, -2723546, 7456600, +17607756, 28748364, 43400644, 61654792, 77274512, 82553568, 77250352, 68650224, 63350232, }, }, { { -22726820, -28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192, -89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136, -201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032, --166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244, -61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392, -56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898, --3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128, --82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824, --103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120, --111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496, --145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552, --201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656, --109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744, --17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860, -71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416, -126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, }, +28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192, +89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136, +201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032, +-166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244, +61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392, +56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898, +-3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128, +-82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824, +-103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120, +-111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496, +-145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552, +-201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656, +-109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744, +-17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860, +71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416, +126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, }, { -22726820, -28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192, -89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136, -201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032, --166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244, -61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392, -56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898, --3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128, --82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824, --103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120, --111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496, --145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552, --201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656, --109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744, --17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860, -71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416, -126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, }, +28139552, 65842384, 53941568, 13258027, -44198436, -138545984, -254022624, -313942240, -261710608, -114174192, +89050776, 307671040, 429789856, 296704384, -81071800, -409902560, -376489312, -16853452, 316269056, 363651136, +201527376, 48773648, -14806900, -51604032, -102137008, -141103104, -155091264, -165697696, -180655456, -182950032, +-166900816, -145012048, -122601992, -94267552, -60898340, -29658896, -2320893, 22440668, 41754600, 53427244, +61154428, 68311992, 73379520, 75195752, 75655312, 75098040, 71666896, 66141960, 61661772, 58882392, +56165824, 53215720, 50490560, 46983720, 41840496, 35969816, 29886530, 22597434, 13982803, 5356898, +-3058554, -12309376, -22238804, -31666794, -40648108, -49917720, -58843200, -66265976, -72393824, -77924128, +-82560544, -85977728, -88859656, -91780232, -94406064, -96492344, -98289792, -99738264, -100664904, -101653824, +-103407784, -105657808, -107865960, -110244832, -112984480, -115367656, -116614808, -116716808, -115826144, -113860120, +-111085032, -108066208, -104995304, -102168144, -100880728, -102568112, -107256608, -113988432, -122389392, -132765496, +-145016352, -158311952, -171488384, -183303840, -192878384, -200196480, -205611888, -208824528, -209097792, -206349552, +-201248752, -194439072, -186380640, -177582400, -168258032, -158151968, -147309328, -136534864, -126621544, -117624656, +-109132432, -100621424, -91466696, -81385872, -70982928, -61176440, -52158084, -43499428, -34953516, -26438744, +-17656610, -8459475, 754304, 9605694, 18262200, 26974006, 35667020, 44361644, 53363360, 62696860, +71919768, 80702432, 89022864, 96714608, 103426032, 109095928, 113979304, 118189448, 121602872, 124224416, +126407864, 128414152, 129241472, 126000384, 115996328, 100630544, 85895584, 77125264, 74235288, }, }, { { -20780662, --21712670, -17408040, -4653060, 21265456, 64972656, 107825688, 112669344, 68903624, -6364068, -119698592, --273759616, -361284064, -213446992, 145631600, 404616512, 284796608, -98422936, -355922336, -287288224, -61032560, -72851232, 74783968, 54613732, 64385316, 67689224, 44145820, 18436684, 4584341, -10081362, -30307974, --44483512, -47537772, -45814416, -43122008, -38670812, -33785824, -29936996, -25370908, -19680078, -15792595, --14354318, -12443594, -9336185, -7518877, -7590818, -7566659, -6946036, -6852084, -6891275, -5601711, --2967286, 188979, 3899294, 8224863, 12344273, 15734613, 18702972, 21189222, 22669912, 23339390, -23837606, 24029268, 23412404, 22183506, 20727512, 18799072, 16165720, 13209709, 10209137, 6907918, -3212099, -631897, -4758287, -9677635, -15535970, -22126060, -29405494, -37317360, -45499808, -53783192, --62446676, -71462352, -80083424, -87622168, -94094680, -99766184, -104549168, -108045272, -109799768, -109517368, --107325864, -103726144, -99096704, -93572304, -87521768, -81644640, -76410152, -71863392, -68115496, -65553548, --64393908, -64374580, -64973192, -65784940, -66783520, -68330784, -70728984, -73718280, -76666240, -79216912, --81465328, -83594560, -85681912, -87680680, -89303648, -90122912, -90061168, -89528056, -88929448, -88313656, --87506200, -86191400, -83928496, -80525808, -76309760, -71669048, -66557496, -60737280, -54133232, -46667504, --38247220, -29160680, -19973746, -10924249, -1928440, 6921877, 15493558, 23987392, 32513440, 40642740, -47986060, 54708220, 61007864, 66839892, 72506568, 78620984, 85303960, 92386896, 100205344, 109109352, -119048440, 130876240, 145829168, 161037648, 168272528, 161819328, 146276384, 132125544, 125181656, }, +-21712670, -17408040, -4653060, 21265456, 64972656, 107825688, 112669344, 68903624, -6364068, -119698592, +-273759616, -361284064, -213446992, 145631600, 404616512, 284796608, -98422936, -355922336, -287288224, -61032560, +72851232, 74783968, 54613732, 64385316, 67689224, 44145820, 18436684, 4584341, -10081362, -30307974, +-44483512, -47537772, -45814416, -43122008, -38670812, -33785824, -29936996, -25370908, -19680078, -15792595, +-14354318, -12443594, -9336185, -7518877, -7590818, -7566659, -6946036, -6852084, -6891275, -5601711, +-2967286, 188979, 3899294, 8224863, 12344273, 15734613, 18702972, 21189222, 22669912, 23339390, +23837606, 24029268, 23412404, 22183506, 20727512, 18799072, 16165720, 13209709, 10209137, 6907918, +3212099, -631897, -4758287, -9677635, -15535970, -22126060, -29405494, -37317360, -45499808, -53783192, +-62446676, -71462352, -80083424, -87622168, -94094680, -99766184, -104549168, -108045272, -109799768, -109517368, +-107325864, -103726144, -99096704, -93572304, -87521768, -81644640, -76410152, -71863392, -68115496, -65553548, +-64393908, -64374580, -64973192, -65784940, -66783520, -68330784, -70728984, -73718280, -76666240, -79216912, +-81465328, -83594560, -85681912, -87680680, -89303648, -90122912, -90061168, -89528056, -88929448, -88313656, +-87506200, -86191400, -83928496, -80525808, -76309760, -71669048, -66557496, -60737280, -54133232, -46667504, +-38247220, -29160680, -19973746, -10924249, -1928440, 6921877, 15493558, 23987392, 32513440, 40642740, +47986060, 54708220, 61007864, 66839892, 72506568, 78620984, 85303960, 92386896, 100205344, 109109352, +119048440, 130876240, 145829168, 161037648, 168272528, 161819328, 146276384, 132125544, 125181656, }, { 20780662, -21712670, 17408040, 4653060, -21265456, -64972656, -107825688, -112669344, -68903624, 6364068, 119698592, -273759616, 361284064, 213446992, -145631600, -404616512, -284796608, 98422936, 355922336, 287288224, 61032560, --72851232, -74783968, -54613732, -64385316, -67689224, -44145820, -18436684, -4584341, 10081362, 30307974, -44483512, 47537772, 45814416, 43122008, 38670812, 33785824, 29936996, 25370908, 19680078, 15792595, -14354318, 12443594, 9336185, 7518877, 7590818, 7566659, 6946036, 6852084, 6891275, 5601711, -2967286, -188979, -3899294, -8224863, -12344273, -15734613, -18702972, -21189222, -22669912, -23339390, --23837606, -24029268, -23412404, -22183506, -20727512, -18799072, -16165720, -13209709, -10209137, -6907918, --3212099, 631897, 4758287, 9677635, 15535970, 22126060, 29405494, 37317360, 45499808, 53783192, -62446676, 71462352, 80083424, 87622168, 94094680, 99766184, 104549168, 108045272, 109799768, 109517368, -107325864, 103726144, 99096704, 93572304, 87521768, 81644640, 76410152, 71863392, 68115496, 65553548, -64393908, 64374580, 64973192, 65784940, 66783520, 68330784, 70728984, 73718280, 76666240, 79216912, -81465328, 83594560, 85681912, 87680680, 89303648, 90122912, 90061168, 89528056, 88929448, 88313656, -87506200, 86191400, 83928496, 80525808, 76309760, 71669048, 66557496, 60737280, 54133232, 46667504, -38247220, 29160680, 19973746, 10924249, 1928440, -6921877, -15493558, -23987392, -32513440, -40642740, --47986060, -54708220, -61007864, -66839892, -72506568, -78620984, -85303960, -92386896, -100205344, -109109352, --119048440, -130876240, -145829168, -161037648, -168272528, -161819328, -146276384, -132125544, -125181656, }, +21712670, 17408040, 4653060, -21265456, -64972656, -107825688, -112669344, -68903624, 6364068, 119698592, +273759616, 361284064, 213446992, -145631600, -404616512, -284796608, 98422936, 355922336, 287288224, 61032560, +-72851232, -74783968, -54613732, -64385316, -67689224, -44145820, -18436684, -4584341, 10081362, 30307974, +44483512, 47537772, 45814416, 43122008, 38670812, 33785824, 29936996, 25370908, 19680078, 15792595, +14354318, 12443594, 9336185, 7518877, 7590818, 7566659, 6946036, 6852084, 6891275, 5601711, +2967286, -188979, -3899294, -8224863, -12344273, -15734613, -18702972, -21189222, -22669912, -23339390, +-23837606, -24029268, -23412404, -22183506, -20727512, -18799072, -16165720, -13209709, -10209137, -6907918, +-3212099, 631897, 4758287, 9677635, 15535970, 22126060, 29405494, 37317360, 45499808, 53783192, +62446676, 71462352, 80083424, 87622168, 94094680, 99766184, 104549168, 108045272, 109799768, 109517368, +107325864, 103726144, 99096704, 93572304, 87521768, 81644640, 76410152, 71863392, 68115496, 65553548, +64393908, 64374580, 64973192, 65784940, 66783520, 68330784, 70728984, 73718280, 76666240, 79216912, +81465328, 83594560, 85681912, 87680680, 89303648, 90122912, 90061168, 89528056, 88929448, 88313656, +87506200, 86191400, 83928496, 80525808, 76309760, 71669048, 66557496, 60737280, 54133232, 46667504, +38247220, 29160680, 19973746, 10924249, 1928440, -6921877, -15493558, -23987392, -32513440, -40642740, +-47986060, -54708220, -61007864, -66839892, -72506568, -78620984, -85303960, -92386896, -100205344, -109109352, +-119048440, -130876240, -145829168, -161037648, -168272528, -161819328, -146276384, -132125544, -125181656, }, }, { { -6142340, --1752884, 2153389, -253403, -14878840, -40603012, -54955716, -25999048, 40649716, 85347976, 57532696, --15068893, -56675316, -38612292, -4403952, 3061775, -4886062, 594853, 14398341, 12999255, -2433636, --10459856, -5893232, -4413079, -13902272, -23233088, -21329344, -11317776, -1985349, 3565360, 6399502, -6265821, 2057289, -5651103, -14944339, -23817204, -30613454, -34868156, -37777996, -40564892, -42690364, --42750492, -40518720, -37063420, -33477122, -30520574, -28937342, -29060822, -30284888, -31540092, -32114544, --31699006, -30080878, -27246736, -23538568, -19363860, -14906758, -10248866, -5544266, -918586, 3623342, -8079371, 12317966, 16100759, 19237696, 21731460, 23732378, 25309706, 26402774, 27111982, 27790586, -28637768, 29481192, 30255898, 31381716, 33338610, 36192080, 39929236, 44916768, 51591684, 59942176, -69655776, 80563920, 92683784, 106019656, 120433568, 135449840, 150231520, 164097280, 176961776, 188793344, -198764640, 205487344, 208043376, 206330768, 200533632, 190734128, 177053584, 159909680, 140229616, 119414584, -98722504, 78572672, 58887224, 40159556, 23593330, 9991705, -1092532, -10959146, -20775830, -30835718, --40430136, -48541184, -54919748, -60304024, -65514356, -70714488, -75657456, -80133352, -84022984, -87416544, --90787016, -94607928, -98813240, -102997072, -106955424, -110626008, -113824152, -116454280, -118649544, -120379344, --121370944, -121642600, -121586768, -121387048, -120952720, -120379880, -119800056, -118943216, -117592448, -116182088, --115217864, -114570400, -114006688, -113704968, -113555176, -112869056, -111450640, -109896936, -108371152, -106411576, --104070816, -100995080, -93944896, -78418048, -54832772, -31004296, -15928960, -11644193, -12591233, }, +-1752884, 2153389, -253403, -14878840, -40603012, -54955716, -25999048, 40649716, 85347976, 57532696, +-15068893, -56675316, -38612292, -4403952, 3061775, -4886062, 594853, 14398341, 12999255, -2433636, +-10459856, -5893232, -4413079, -13902272, -23233088, -21329344, -11317776, -1985349, 3565360, 6399502, +6265821, 2057289, -5651103, -14944339, -23817204, -30613454, -34868156, -37777996, -40564892, -42690364, +-42750492, -40518720, -37063420, -33477122, -30520574, -28937342, -29060822, -30284888, -31540092, -32114544, +-31699006, -30080878, -27246736, -23538568, -19363860, -14906758, -10248866, -5544266, -918586, 3623342, +8079371, 12317966, 16100759, 19237696, 21731460, 23732378, 25309706, 26402774, 27111982, 27790586, +28637768, 29481192, 30255898, 31381716, 33338610, 36192080, 39929236, 44916768, 51591684, 59942176, +69655776, 80563920, 92683784, 106019656, 120433568, 135449840, 150231520, 164097280, 176961776, 188793344, +198764640, 205487344, 208043376, 206330768, 200533632, 190734128, 177053584, 159909680, 140229616, 119414584, +98722504, 78572672, 58887224, 40159556, 23593330, 9991705, -1092532, -10959146, -20775830, -30835718, +-40430136, -48541184, -54919748, -60304024, -65514356, -70714488, -75657456, -80133352, -84022984, -87416544, +-90787016, -94607928, -98813240, -102997072, -106955424, -110626008, -113824152, -116454280, -118649544, -120379344, +-121370944, -121642600, -121586768, -121387048, -120952720, -120379880, -119800056, -118943216, -117592448, -116182088, +-115217864, -114570400, -114006688, -113704968, -113555176, -112869056, -111450640, -109896936, -108371152, -106411576, +-104070816, -100995080, -93944896, -78418048, -54832772, -31004296, -15928960, -11644193, -12591233, }, { 6142340, -1752884, -2153389, 253403, 14878840, 40603012, 54955716, 25999048, -40649716, -85347976, -57532696, -15068893, 56675316, 38612292, 4403952, -3061775, 4886062, -594853, -14398341, -12999255, 2433636, -10459856, 5893232, 4413079, 13902272, 23233088, 21329344, 11317776, 1985349, -3565360, -6399502, --6265821, -2057289, 5651103, 14944339, 23817204, 30613454, 34868156, 37777996, 40564892, 42690364, -42750492, 40518720, 37063420, 33477122, 30520574, 28937342, 29060822, 30284888, 31540092, 32114544, -31699006, 30080878, 27246736, 23538568, 19363860, 14906758, 10248866, 5544266, 918586, -3623342, --8079371, -12317966, -16100759, -19237696, -21731460, -23732378, -25309706, -26402774, -27111982, -27790586, --28637768, -29481192, -30255898, -31381716, -33338610, -36192080, -39929236, -44916768, -51591684, -59942176, --69655776, -80563920, -92683784, -106019656, -120433568, -135449840, -150231520, -164097280, -176961776, -188793344, --198764640, -205487344, -208043376, -206330768, -200533632, -190734128, -177053584, -159909680, -140229616, -119414584, --98722504, -78572672, -58887224, -40159556, -23593330, -9991705, 1092532, 10959146, 20775830, 30835718, -40430136, 48541184, 54919748, 60304024, 65514356, 70714488, 75657456, 80133352, 84022984, 87416544, -90787016, 94607928, 98813240, 102997072, 106955424, 110626008, 113824152, 116454280, 118649544, 120379344, -121370944, 121642600, 121586768, 121387048, 120952720, 120379880, 119800056, 118943216, 117592448, 116182088, -115217864, 114570400, 114006688, 113704968, 113555176, 112869056, 111450640, 109896936, 108371152, 106411576, -104070816, 100995080, 93944896, 78418048, 54832772, 31004296, 15928960, 11644193, 12591233, }, +1752884, -2153389, 253403, 14878840, 40603012, 54955716, 25999048, -40649716, -85347976, -57532696, +15068893, 56675316, 38612292, 4403952, -3061775, 4886062, -594853, -14398341, -12999255, 2433636, +10459856, 5893232, 4413079, 13902272, 23233088, 21329344, 11317776, 1985349, -3565360, -6399502, +-6265821, -2057289, 5651103, 14944339, 23817204, 30613454, 34868156, 37777996, 40564892, 42690364, +42750492, 40518720, 37063420, 33477122, 30520574, 28937342, 29060822, 30284888, 31540092, 32114544, +31699006, 30080878, 27246736, 23538568, 19363860, 14906758, 10248866, 5544266, 918586, -3623342, +-8079371, -12317966, -16100759, -19237696, -21731460, -23732378, -25309706, -26402774, -27111982, -27790586, +-28637768, -29481192, -30255898, -31381716, -33338610, -36192080, -39929236, -44916768, -51591684, -59942176, +-69655776, -80563920, -92683784, -106019656, -120433568, -135449840, -150231520, -164097280, -176961776, -188793344, +-198764640, -205487344, -208043376, -206330768, -200533632, -190734128, -177053584, -159909680, -140229616, -119414584, +-98722504, -78572672, -58887224, -40159556, -23593330, -9991705, 1092532, 10959146, 20775830, 30835718, +40430136, 48541184, 54919748, 60304024, 65514356, 70714488, 75657456, 80133352, 84022984, 87416544, +90787016, 94607928, 98813240, 102997072, 106955424, 110626008, 113824152, 116454280, 118649544, 120379344, +121370944, 121642600, 121586768, 121387048, 120952720, 120379880, 119800056, 118943216, 117592448, 116182088, +115217864, 114570400, 114006688, 113704968, 113555176, 112869056, 111450640, 109896936, 108371152, 106411576, +104070816, 100995080, 93944896, 78418048, 54832772, 31004296, 15928960, 11644193, 12591233, }, }, { { -12293807, --4858682, 11296838, 19100256, 3861713, -5900748, 36241472, 116374824, 146012784, 51534240, -132524440, --269747040, -229335152, -13444858, 212266944, 253539968, 85124640, -115891640, -166048272, -67431520, 38611756, -62862216, 38062000, 19412178, 5471252, -21926882, -46705620, -45556720, -28509992, -20809116, -26320634, --31532576, -29571386, -22053584, -8328479, 12683575, 36189932, 55955908, 70685496, 81685448, 89103392, -93404800, 96296392, 98277440, 98371928, 96653944, 94194000, 90911576, 86037320, 79888000, 72978472, -64399276, 52976812, 39047160, 23758686, 7796977, -8194798, -23222888, -36919540, -49907520, -62626528, --74701296, -85702848, -95545840, -103881840, -109858824, -112652696, -111763640, -106924288, -98160944, -85775328, --69952672, -50720344, -28536300, -4487167, 20426864, 45805288, 71338336, 96167000, 119163864, 139693280, -157771328, 173507552, 186629744, 196671392, 203482128, 207318608, 208383760, 206505792, 201380816, 192836512, -180638272, 164359808, 143832016, 119569744, 92430920, 63056564, 32062468, 675921, -29271276, -56125560, --79089672, -98170608, -113548736, -124903016, -131351912, -132275328, -128254168, -120941984, -111917720, -101868568, --90853592, -78939352, -66391068, -53582940, -40999756, -29189672, -18582712, -9393093, -1646046, 4900021, -10785737, 16521129, 22140556, 27170500, 30990336, 33161442, 33582888, 32519344, 30390652, 27408870, -23448374, 18280992, 11822971, 4185983, -4341675, -13386876, -22716082, -32304596, -42073500, -51706036, --60841432, -69281040, -76887432, -83512952, -89127016, -93801016, -97536560, -100308424, -102233640, -103560248, --104703784, -106144208, -107347336, -105644920, -97930088, -84797152, -71584760, -63486060, -60742648, }, +-4858682, 11296838, 19100256, 3861713, -5900748, 36241472, 116374824, 146012784, 51534240, -132524440, +-269747040, -229335152, -13444858, 212266944, 253539968, 85124640, -115891640, -166048272, -67431520, 38611756, +62862216, 38062000, 19412178, 5471252, -21926882, -46705620, -45556720, -28509992, -20809116, -26320634, +-31532576, -29571386, -22053584, -8328479, 12683575, 36189932, 55955908, 70685496, 81685448, 89103392, +93404800, 96296392, 98277440, 98371928, 96653944, 94194000, 90911576, 86037320, 79888000, 72978472, +64399276, 52976812, 39047160, 23758686, 7796977, -8194798, -23222888, -36919540, -49907520, -62626528, +-74701296, -85702848, -95545840, -103881840, -109858824, -112652696, -111763640, -106924288, -98160944, -85775328, +-69952672, -50720344, -28536300, -4487167, 20426864, 45805288, 71338336, 96167000, 119163864, 139693280, +157771328, 173507552, 186629744, 196671392, 203482128, 207318608, 208383760, 206505792, 201380816, 192836512, +180638272, 164359808, 143832016, 119569744, 92430920, 63056564, 32062468, 675921, -29271276, -56125560, +-79089672, -98170608, -113548736, -124903016, -131351912, -132275328, -128254168, -120941984, -111917720, -101868568, +-90853592, -78939352, -66391068, -53582940, -40999756, -29189672, -18582712, -9393093, -1646046, 4900021, +10785737, 16521129, 22140556, 27170500, 30990336, 33161442, 33582888, 32519344, 30390652, 27408870, +23448374, 18280992, 11822971, 4185983, -4341675, -13386876, -22716082, -32304596, -42073500, -51706036, +-60841432, -69281040, -76887432, -83512952, -89127016, -93801016, -97536560, -100308424, -102233640, -103560248, +-104703784, -106144208, -107347336, -105644920, -97930088, -84797152, -71584760, -63486060, -60742648, }, { 12293807, -4858682, -11296838, -19100256, -3861713, 5900748, -36241472, -116374824, -146012784, -51534240, 132524440, -269747040, 229335152, 13444858, -212266944, -253539968, -85124640, 115891640, 166048272, 67431520, -38611756, --62862216, -38062000, -19412178, -5471252, 21926882, 46705620, 45556720, 28509992, 20809116, 26320634, -31532576, 29571386, 22053584, 8328479, -12683575, -36189932, -55955908, -70685496, -81685448, -89103392, --93404800, -96296392, -98277440, -98371928, -96653944, -94194000, -90911576, -86037320, -79888000, -72978472, --64399276, -52976812, -39047160, -23758686, -7796977, 8194798, 23222888, 36919540, 49907520, 62626528, -74701296, 85702848, 95545840, 103881840, 109858824, 112652696, 111763640, 106924288, 98160944, 85775328, -69952672, 50720344, 28536300, 4487167, -20426864, -45805288, -71338336, -96167000, -119163864, -139693280, --157771328, -173507552, -186629744, -196671392, -203482128, -207318608, -208383760, -206505792, -201380816, -192836512, --180638272, -164359808, -143832016, -119569744, -92430920, -63056564, -32062468, -675921, 29271276, 56125560, -79089672, 98170608, 113548736, 124903016, 131351912, 132275328, 128254168, 120941984, 111917720, 101868568, -90853592, 78939352, 66391068, 53582940, 40999756, 29189672, 18582712, 9393093, 1646046, -4900021, --10785737, -16521129, -22140556, -27170500, -30990336, -33161442, -33582888, -32519344, -30390652, -27408870, --23448374, -18280992, -11822971, -4185983, 4341675, 13386876, 22716082, 32304596, 42073500, 51706036, -60841432, 69281040, 76887432, 83512952, 89127016, 93801016, 97536560, 100308424, 102233640, 103560248, -104703784, 106144208, 107347336, 105644920, 97930088, 84797152, 71584760, 63486060, 60742648, }, +4858682, -11296838, -19100256, -3861713, 5900748, -36241472, -116374824, -146012784, -51534240, 132524440, +269747040, 229335152, 13444858, -212266944, -253539968, -85124640, 115891640, 166048272, 67431520, -38611756, +-62862216, -38062000, -19412178, -5471252, 21926882, 46705620, 45556720, 28509992, 20809116, 26320634, +31532576, 29571386, 22053584, 8328479, -12683575, -36189932, -55955908, -70685496, -81685448, -89103392, +-93404800, -96296392, -98277440, -98371928, -96653944, -94194000, -90911576, -86037320, -79888000, -72978472, +-64399276, -52976812, -39047160, -23758686, -7796977, 8194798, 23222888, 36919540, 49907520, 62626528, +74701296, 85702848, 95545840, 103881840, 109858824, 112652696, 111763640, 106924288, 98160944, 85775328, +69952672, 50720344, 28536300, 4487167, -20426864, -45805288, -71338336, -96167000, -119163864, -139693280, +-157771328, -173507552, -186629744, -196671392, -203482128, -207318608, -208383760, -206505792, -201380816, -192836512, +-180638272, -164359808, -143832016, -119569744, -92430920, -63056564, -32062468, -675921, 29271276, 56125560, +79089672, 98170608, 113548736, 124903016, 131351912, 132275328, 128254168, 120941984, 111917720, 101868568, +90853592, 78939352, 66391068, 53582940, 40999756, 29189672, 18582712, 9393093, 1646046, -4900021, +-10785737, -16521129, -22140556, -27170500, -30990336, -33161442, -33582888, -32519344, -30390652, -27408870, +-23448374, -18280992, -11822971, -4185983, 4341675, 13386876, 22716082, 32304596, 42073500, 51706036, +60841432, 69281040, 76887432, 83512952, 89127016, 93801016, 97536560, 100308424, 102233640, 103560248, +104703784, 106144208, 107347336, 105644920, 97930088, 84797152, 71584760, 63486060, 60742648, }, }, { { 1981054, --492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948, --31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061, -21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782, --27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258, -5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776, -38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266, --10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432, --96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441, -4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160, -169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000, -69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530, --26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870, -36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792, -92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118, -19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248, --126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, }, +-492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948, +-31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061, +21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782, +-27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258, +5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776, +38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266, +-10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432, +-96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441, +4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160, +169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000, +69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530, +-26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870, +36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792, +92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118, +19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248, +-126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, }, { 1981054, --492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948, --31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061, -21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782, --27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258, -5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776, -38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266, --10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432, --96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441, -4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160, -169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000, -69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530, --26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870, -36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792, -92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118, -19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248, --126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, }, +-492311, -296353, 7187091, 20790326, 34022048, 38966628, 28556164, 110595, -35796404, -53189948, +-31344672, 17328046, 52040508, 45398880, 11650099, -15445776, -22064858, -18178986, -11581916, 1719061, +21751862, 37804304, 43341052, 45074072, 50449224, 55028732, 48952428, 30137786, 5746666, -15365782, +-27608050, -29608968, -24510304, -18206366, -14864882, -14263050, -13622026, -10816338, -5701032, 302258, +5457293, 9128953, 11999065, 14878304, 17986786, 21451214, 25480430, 29771102, 33561948, 36449776, +38489348, 39609800, 39572756, 38267084, 35515620, 30976914, 24654722, 17046188, 8560944, -637266, +-10189273, -19688666, -29212220, -38975216, -48690432, -58008904, -67171680, -76369352, -84917944, -91841432, +-96724808, -99298032, -98873904, -94944544, -87748328, -77702400, -64913060, -49656800, -32660006, -14494441, +4769025, 25049324, 45805288, 66242356, 85751704, 104195904, 121765008, 138232448, 152444496, 163098160, +169934672, 173507552, 173946176, 170681456, 163277472, 151896352, 137215616, 120472224, 103182296, 86171000, +69162936, 51720532, 34225520, 17817672, 3861176, -6618008, -13700946, -18690088, -22775674, -25758530, +-26644904, -25007984, -21164526, -15672336, -9310952, -2892124, 3518115, 10589242, 18666464, 27408870, +36473936, 45634564, 54317916, 61990336, 68838128, 75240312, 80961744, 85623392, 89298816, 91926792, +92930208, 92042760, 89656368, 85938536, 80607944, 73742976, 65713000, 56356412, 45335528, 33011118, +19910932, 5942624, -8905078, -24007794, -39067024, -54445152, -69956424, -84769232, -98771896, -112544248, +-126454040, -141326976, -157807840, -171961904, -174743968, -161483248, -139952048, -123136712, -116040888, }, }, { { -12559558, --14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736, --16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790, --12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500, -48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383, --410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884, --49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312, --68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984, --51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692, -18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028, -40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392, -97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528, -149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828, -51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048, --74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984, --95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068, --34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, }, +-14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736, +-16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790, +-12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500, +48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383, +-410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884, +-49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312, +-68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984, +-51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692, +18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028, +40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392, +97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528, +149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828, +51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048, +-74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984, +-95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068, +-34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, }, { -12559558, --14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736, --16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790, --12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500, -48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383, --410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884, --49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312, --68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984, --51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692, -18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028, -40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392, -97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528, -149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828, -51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048, --74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984, --95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068, --34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, }, +-14574435, -5498632, 16103443, 36147520, 44876504, 39157216, 9365713, -46824808, -96066072, -88001736, +-16486232, 61414812, 83421688, 43921408, -12003360, -39346196, -26169236, 8202851, 31455804, 21983790, +-12823699, -43575664, -48513804, -31488016, -9336185, 8367133, 21562346, 31231928, 37633576, 42852500, +48321604, 51680804, 50072876, 44494252, 37884296, 31025770, 23062900, 14463839, 7116761, 2233383, +-410169, -1745367, -2821257, -4539244, -7486128, -12084427, -18647138, -26852672, -35484484, -43163884, +-49141944, -53194780, -55318104, -55944096, -56015500, -56391848, -57385060, -59020904, -61418568, -64698312, +-68753840, -73237784, -77588048, -81048720, -82895016, -82710336, -80343808, -75721888, -68982544, -60732984, +-51794620, -42591044, -33091112, -23498302, -14558329, -6819335, 45097, 6571837, 12374875, 16434692, +18544058, 19660212, 20583630, 21070572, 20794084, 20587388, 21976274, 25625922, 30747670, 36053028, +40965936, 45846092, 51298016, 57459148, 63976224, 70426728, 76528800, 82054280, 86981680, 91855392, +97594008, 104659760, 112574848, 120407264, 127569120, 134014792, 139829104, 144785488, 148304144, 149838528, +149301648, 147018880, 143219440, 137718128, 130134288, 120280024, 108341088, 94882808, 80673984, 66263828, +51684564, 36692980, 21274046, 5818607, -9044127, -22661858, -34666828, -45304388, -55281060, -65073048, +-74445744, -82671144, -89063664, -93351112, -95811592, -97100624, -97800160, -98117456, -97976792, -97134984, +-95189360, -91867200, -87386480, -82146080, -76163728, -69350304, -62128848, -55066848, -48134772, -41077068, +-34018824, -26677652, -17796734, -7066295, 2895882, 8453569, 8887361, 6854768, 5247913, }, }, { { 1361505, --6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280, --144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516, --4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867, --28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784, --66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936, --54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766, --27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584, --59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028, -50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256, -157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920, -220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176, --31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024, --203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552, --218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552, --69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736, -107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, }, +-6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280, +-144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516, +-4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867, +-28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784, +-66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936, +-54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766, +-27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584, +-59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028, +50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256, +157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920, +220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176, +-31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024, +-203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552, +-218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552, +-69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736, +107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, }, { 1361505, --6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280, --144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516, --4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867, --28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784, --66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936, --54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766, --27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584, --59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028, -50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256, -157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920, -220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176, --31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024, --203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552, --218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552, --69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736, -107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, }, +-6031745, -9847823, -9656697, -14584635, -16705812, 7517267, 51822000, 60734060, -8921184, -112508280, +-144351168, -58633820, 64616172, 104241544, 34482144, -56665652, -81571096, -45710800, -11709691, -7069516, +-4066797, 22695144, 58683212, 76764488, 74230456, 66876400, 61739080, 51783884, 31008590, 2225867, +-28280750, -55553792, -75944152, -87853016, -92936112, -93998584, -92232272, -87786448, -81435800, -74198784, +-66693864, -59979220, -55700892, -54538568, -55540908, -57379152, -59228672, -60336236, -59941100, -57892936, +-54546620, -50062140, -44485124, -38338488, -32506996, -27661200, -24187108, -22404160, -22473416, -24276766, +-27546846, -31951336, -37052684, -42429444, -47763256, -52693344, -56783764, -59753196, -61440580, -61491584, +-59418188, -55002424, -48322140, -39467528, -28609850, -16194711, -2756832, 11221139, 25089588, 38157028, +50324132, 62045096, 73466488, 84227528, 94241248, 103860360, 113180440, 122174104, 131728256, 143384256, +157529200, 172678624, 187045296, 200132592, 212350704, 223562176, 232452752, 237196016, 236600624, 230685920, +220133184, 205348832, 186409104, 163813280, 138720464, 112246288, 84862648, 56548612, 27314382, -2303176, +-31074088, -57662620, -81631760, -103590320, -124196496, -143360640, -160478224, -174997904, -186710816, -195989024, +-203774192, -210894704, -217387616, -222761696, -226671728, -229054368, -229952544, -229501584, -227726144, -224215552, +-218468336, -210567744, -200995344, -189917008, -177224848, -162980592, -147170272, -129491656, -110055856, -89775552, +-69495256, -49401252, -29626684, -10492068, 8148627, 26706106, 44885092, 61997852, 77989624, 93141736, +107788648, 123275224, 140463152, 154866864, 157063728, 142887120, 120772336, 103758896, 96604016, }, }, { { -3934190, --3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844, --58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236, -54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484, -50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006, --24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872, --46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048, --53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560, --85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072, --82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460, --32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420, --25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072, --39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040, -14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960, -62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224, -95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576, -147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, }, +-3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844, +-58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236, +54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484, +50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006, +-24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872, +-46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048, +-53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560, +-85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072, +-82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460, +-32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420, +-25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072, +-39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040, +14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960, +62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224, +95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576, +147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, }, { -3934190, --3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844, --58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236, -54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484, -50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006, --24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872, --46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048, --53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560, --85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072, --82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460, --32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420, --25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072, --39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040, -14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960, -62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224, -95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576, -147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, }, +-3561065, -2961380, -2469069, -3335042, -6949257, -10582799, -6585796, 5910949, 9033390, -17499844, +-58110372, -59563144, 5482526, 83499536, 86628416, 1379221, -84844928, -85138064, -11901354, 51665236, +54776404, 19014894, -11911555, -22216792, -18465138, -5498632, 14854681, 35445828, 48197048, 51996484, +50291920, 45649596, 40315248, 37207300, 36641976, 35024920, 28898688, 18129056, 4440460, -10513006, +-24823838, -36339180, -44009992, -48198660, -49605260, -48929340, -47307992, -45934140, -45271640, -45296872, +-46153720, -47934520, -50194208, -52233244, -53628036, -54219132, -54003844, -53310208, -52730924, -52689048, +-53342956, -54880020, -57467200, -60883844, -64628520, -68430104, -72297184, -76111112, -79580376, -82582560, +-85147728, -87112136, -88198224, -88479544, -88365728, -88030184, -87231856, -85876800, -84408456, -83318072, +-82401096, -80879600, -78321416, -75120048, -71791456, -68008656, -62799940, -55777128, -47760572, -39983460, +-32998234, -26651346, -20882130, -16187195, -13293998, -12516072, -13425531, -15218143, -17527224, -20784420, +-25553982, -31566936, -37652368, -42537356, -45547056, -46747496, -46730856, -46114528, -44954348, -42737072, +-39073464, -34196528, -28686624, -23036594, -17581986, -12468290, -7497403, -2309619, 3184718, 8788040, +14401025, 20095078, 25889526, 31743566, 37637872, 43394740, 48620104, 53053584, 56763360, 59858960, +62368292, 64483564, 66524212, 68600288, 70713416, 73127720, 76176616, 79870824, 84172232, 89341224, +95507728, 102298608, 109355776, 116673864, 123982824, 130558952, 136096784, 140873856, 144714624, 147014576, +147960544, 147701776, 143530832, 130539624, 107595912, 81434192, 62075700, 53886272, 52787832, }, }, }; const Word32 CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -95109368, --260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920, -186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536, --56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976, -43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040, -351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824, -395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224, -357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024, -318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120, -283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064, -229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328, -196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216, -187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200, -157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952, -116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016, -88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652, -29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, }, +-260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920, +186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536, +-56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976, +43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040, +351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824, +395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224, +357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024, +318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120, +283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064, +229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328, +196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216, +187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200, +157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952, +116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016, +88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652, +29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, }, { -95109368, --260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920, -186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536, --56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976, -43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040, -351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824, -395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224, -357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024, -318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120, -283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064, -229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328, -196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216, -187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200, -157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952, -116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016, -88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652, -29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, }, +-260339440, -366612512, -408962496, -400354304, -362236480, -315098656, -258988672, -173663248, -53939956, 73996920, +186707600, 276786496, 304005312, 192871408, -46663744, -238100096, -189772592, 61389580, 255288032, 194103536, +-56156696, -288527328, -394782656, -412162784, -396458240, -350214304, -268649664, -176448528, -96819304, -26412976, +43027520, 105719008, 155055296, 195263168, 231530944, 262328544, 286273536, 306256416, 324167488, 339115040, +351465760, 362808768, 372651232, 379707328, 384899392, 389586816, 393053920, 394493280, 395004928, 395505824, +395165440, 393394848, 390962272, 388219424, 384553664, 380043936, 375570208, 371227968, 366504576, 361672224, +357340736, 353217024, 348759936, 344302304, 340330528, 336536992, 332559840, 328731968, 325346464, 322093024, +318739712, 315517952, 312517920, 309469024, 306246752, 302958944, 299588992, 296042976, 292305280, 288233120, +283618176, 278650496, 273737600, 268777984, 263323904, 257488656, 251875680, 246582128, 241085648, 235180064, +229304544, 223901472, 219023472, 214540064, 210318640, 206342576, 202909824, 200431632, 198818864, 197471328, +196033584, 194752608, 193960720, 193620880, 193459824, 193164544, 192452656, 191296240, 190028688, 188915216, +187750208, 186134224, 183929296, 181221856, 178127328, 174841680, 171599520, 168378832, 164916544, 161111200, +157136752, 153130624, 149087984, 145047488, 141054240, 136985296, 132723080, 128412008, 124285080, 120380952, +116669568, 113233056, 110073568, 107003208, 103945728, 101050376, 98364416, 95750392, 93226024, 90918016, +88620208, 85932632, 82820928, 79434344, 75505528, 70683888, 65148212, 58947888, 51291036, 41580652, +29719026, 13152264, -13907104, -52447992, -89501752, -104273216, -87974888, -52846888, -16645146, }, }, { { 74919800, -180832624, 165589776, 3118146, -248377952, -487060032, -639470720, -670940480, -564931520, -348093152, -99012416, -133561136, 369929280, 567594944, 531079680, 136782368, -364506368, -495046528, -96676496, 437999680, 606822528, -338486368, -45694692, -282642144, -380529792, -435686848, -455061984, -412777504, -340961344, -285578816, -242132544, --187046368, -125953672, -75291312, -31372052, 15731928, 62692564, 104184632, 143963008, 184569776, 221687424, -253691376, 283860288, 311944000, 334602656, 352947520, 370293824, 385346624, 395373760, 402216160, 408895904, -414681248, 418261632, 421057120, 423908992, 425174368, 424278336, 422686528, 420456352, 416190912, 410363712, -404640672, 398671744, 391244128, 383210944, 376019552, 369106816, 361541760, 354219360, 348174752, 342842016, -337704160, 333546080, 330874624, 329060544, 327708704, 327105792, 327162144, 327442944, 327925600, 328501120, -328534400, 327920224, 327404832, 327090752, 326092704, 324246400, 322538080, 321427296, 320383072, 319275520, -318623744, 318416512, 318121792, 317643424, 317027104, 315684384, 313017760, 309172160, 304287168, 297851136, -289580128, 280034560, 269758304, 258727760, 247008944, 235039936, 223125696, 211545392, 201074800, 192465008, -185562448, 179705728, 174628000, 170326048, 166635600, 163581344, 161492912, 160217856, 158877280, 156786176, -153965456, 150613232, 146883056, 143231248, 140110416, 137296144, 134274096, 131101728, 128141960, 125304600, -122328720, 119391504, 116704464, 114009368, 111109728, 108314240, 105794168, 103213432, 100447472, 97856000, -95487864, 92946312, 90264640, 87829936, 85353888, 82145544, 78237664, 73787000, 67849744, 59486372, -48626544, 32700270, 4790499, -37725920, -81636592, -103223632, -90638840, -55671368, -17729624, }, +180832624, 165589776, 3118146, -248377952, -487060032, -639470720, -670940480, -564931520, -348093152, -99012416, +133561136, 369929280, 567594944, 531079680, 136782368, -364506368, -495046528, -96676496, 437999680, 606822528, +338486368, -45694692, -282642144, -380529792, -435686848, -455061984, -412777504, -340961344, -285578816, -242132544, +-187046368, -125953672, -75291312, -31372052, 15731928, 62692564, 104184632, 143963008, 184569776, 221687424, +253691376, 283860288, 311944000, 334602656, 352947520, 370293824, 385346624, 395373760, 402216160, 408895904, +414681248, 418261632, 421057120, 423908992, 425174368, 424278336, 422686528, 420456352, 416190912, 410363712, +404640672, 398671744, 391244128, 383210944, 376019552, 369106816, 361541760, 354219360, 348174752, 342842016, +337704160, 333546080, 330874624, 329060544, 327708704, 327105792, 327162144, 327442944, 327925600, 328501120, +328534400, 327920224, 327404832, 327090752, 326092704, 324246400, 322538080, 321427296, 320383072, 319275520, +318623744, 318416512, 318121792, 317643424, 317027104, 315684384, 313017760, 309172160, 304287168, 297851136, +289580128, 280034560, 269758304, 258727760, 247008944, 235039936, 223125696, 211545392, 201074800, 192465008, +185562448, 179705728, 174628000, 170326048, 166635600, 163581344, 161492912, 160217856, 158877280, 156786176, +153965456, 150613232, 146883056, 143231248, 140110416, 137296144, 134274096, 131101728, 128141960, 125304600, +122328720, 119391504, 116704464, 114009368, 111109728, 108314240, 105794168, 103213432, 100447472, 97856000, +95487864, 92946312, 90264640, 87829936, 85353888, 82145544, 78237664, 73787000, 67849744, 59486372, +48626544, 32700270, 4790499, -37725920, -81636592, -103223632, -90638840, -55671368, -17729624, }, { -74919800, --180832624, -165589776, -3118146, 248377952, 487060032, 639470720, 670940480, 564931520, 348093152, 99012416, --133561136, -369929280, -567594944, -531079680, -136782368, 364506368, 495046528, 96676496, -437999680, -606822528, --338486368, 45694692, 282642144, 380529792, 435686848, 455061984, 412777504, 340961344, 285578816, 242132544, -187046368, 125953672, 75291312, 31372052, -15731928, -62692564, -104184632, -143963008, -184569776, -221687424, --253691376, -283860288, -311944000, -334602656, -352947520, -370293824, -385346624, -395373760, -402216160, -408895904, --414681248, -418261632, -421057120, -423908992, -425174368, -424278336, -422686528, -420456352, -416190912, -410363712, --404640672, -398671744, -391244128, -383210944, -376019552, -369106816, -361541760, -354219360, -348174752, -342842016, --337704160, -333546080, -330874624, -329060544, -327708704, -327105792, -327162144, -327442944, -327925600, -328501120, --328534400, -327920224, -327404832, -327090752, -326092704, -324246400, -322538080, -321427296, -320383072, -319275520, --318623744, -318416512, -318121792, -317643424, -317027104, -315684384, -313017760, -309172160, -304287168, -297851136, --289580128, -280034560, -269758304, -258727760, -247008944, -235039936, -223125696, -211545392, -201074800, -192465008, --185562448, -179705728, -174628000, -170326048, -166635600, -163581344, -161492912, -160217856, -158877280, -156786176, --153965456, -150613232, -146883056, -143231248, -140110416, -137296144, -134274096, -131101728, -128141960, -125304600, --122328720, -119391504, -116704464, -114009368, -111109728, -108314240, -105794168, -103213432, -100447472, -97856000, --95487864, -92946312, -90264640, -87829936, -85353888, -82145544, -78237664, -73787000, -67849744, -59486372, --48626544, -32700270, -4790499, 37725920, 81636592, 103223632, 90638840, 55671368, 17729624, }, +-180832624, -165589776, -3118146, 248377952, 487060032, 639470720, 670940480, 564931520, 348093152, 99012416, +-133561136, -369929280, -567594944, -531079680, -136782368, 364506368, 495046528, 96676496, -437999680, -606822528, +-338486368, 45694692, 282642144, 380529792, 435686848, 455061984, 412777504, 340961344, 285578816, 242132544, +187046368, 125953672, 75291312, 31372052, -15731928, -62692564, -104184632, -143963008, -184569776, -221687424, +-253691376, -283860288, -311944000, -334602656, -352947520, -370293824, -385346624, -395373760, -402216160, -408895904, +-414681248, -418261632, -421057120, -423908992, -425174368, -424278336, -422686528, -420456352, -416190912, -410363712, +-404640672, -398671744, -391244128, -383210944, -376019552, -369106816, -361541760, -354219360, -348174752, -342842016, +-337704160, -333546080, -330874624, -329060544, -327708704, -327105792, -327162144, -327442944, -327925600, -328501120, +-328534400, -327920224, -327404832, -327090752, -326092704, -324246400, -322538080, -321427296, -320383072, -319275520, +-318623744, -318416512, -318121792, -317643424, -317027104, -315684384, -313017760, -309172160, -304287168, -297851136, +-289580128, -280034560, -269758304, -258727760, -247008944, -235039936, -223125696, -211545392, -201074800, -192465008, +-185562448, -179705728, -174628000, -170326048, -166635600, -163581344, -161492912, -160217856, -158877280, -156786176, +-153965456, -150613232, -146883056, -143231248, -140110416, -137296144, -134274096, -131101728, -128141960, -125304600, +-122328720, -119391504, -116704464, -114009368, -111109728, -108314240, -105794168, -103213432, -100447472, -97856000, +-95487864, -92946312, -90264640, -87829936, -85353888, -82145544, -78237664, -73787000, -67849744, -59486372, +-48626544, -32700270, -4790499, 37725920, 81636592, 103223632, 90638840, 55671368, 17729624, }, }, { { -8997956, --36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444, --36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752, -37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616, --16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494, -30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888, -187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424, -279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464, -34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976, --149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240, --62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810, --36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440, --77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068, -1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568, -33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826, -26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420, --12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, }, +-36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444, +-36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752, +37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616, +-16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494, +30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888, +187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424, +279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464, +34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976, +-149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240, +-62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810, +-36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440, +-77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068, +1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568, +33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826, +26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420, +-12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, }, { -8997956, --36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444, --36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752, -37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616, --16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494, -30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888, -187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424, -279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464, -34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976, --149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240, --62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810, --36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440, --77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068, -1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568, -33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826, -26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420, --12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, }, +-36575404, -70057896, -75746584, -36069672, 20763482, 50795504, 39648992, 6548752, -24158118, -40223444, +-36266704, -9786620, 28921772, 51592756, 33353642, -13720273, -40638444, -11729019, 48308720, 75479752, +37072012, -35640176, -89364848, -103929616, -95136208, -81471768, -67702640, -53746684, -41168336, -29545616, +-16599512, -3274376, 6781754, 12052215, 13502303, 12007655, 9067750, 8138426, 12019466, 20188494, +30608084, 42454676, 55612848, 69392712, 83302504, 97821640, 113513840, 130401112, 148518896, 167913888, +187898912, 207297136, 225438544, 242095488, 256685504, 268412368, 277012512, 282643744, 285191744, 284255424, +279637792, 271346368, 259203424, 242854624, 222178128, 197471328, 169249088, 138059040, 104570104, 69709464, +34565896, 220654, -32209570, -61572652, -87062208, -108476376, -125715304, -138263584, -145782464, -149036976, +-149373056, -147217520, -142017392, -133914392, -124491776, -115248472, -106034152, -95747704, -84204448, -72589240, +-62194884, -53323628, -45533632, -38529076, -32577326, -28267864, -26095684, -26221850, -28418724, -32154810, +-36836860, -42123964, -48040284, -54697484, -61807264, -68486472, -73672112, -76818176, -78148000, -78183440, +-77134392, -74802760, -70909376, -65336116, -58133992, -49504328, -39798240, -29444148, -18872624, -8519068, +1219771, 10084583, 17916456, 24504936, 29606820, 33136210, 35232152, 36126580, 36039608, 35143568, +33567316, 31499290, 29361470, 27712202, 26908506, 26950920, 27614492, 28478318, 28897614, 28332826, +26790396, 24655796, 22099754, 18985366, 15300284, 11255499, 6929930, 2227478, -2730526, -7621420, +-12545599, -18257370, -25141664, -31687194, -34493956, -30834108, -21662204, -11296838, -3238405, }, }, { { 3337190, --525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236, --42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632, -144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584, --178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504, -232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256, -229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168, -156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320, -72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272, --55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688, --62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766, -35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672, -177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512, -193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800, -187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048, -138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916, -44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, }, +-525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236, +-42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632, +144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584, +-178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504, +232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256, +229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168, +156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320, +72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272, +-55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688, +-62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766, +35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672, +177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512, +193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800, +187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048, +138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916, +44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, }, { 3337190, --525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236, --42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632, -144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584, --178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504, -232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256, -229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168, -156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320, -72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272, --55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688, --62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766, -35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672, -177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512, -193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800, -187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048, -138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916, -44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, }, +-525597, -24376624, -52859772, -58058296, -31161062, 1227287, 3435437, -27114666, -57911728, -62258236, +-42413876, -7547332, 40961640, 82542832, 69375000, -12013560, -89047024, -66958004, 50780472, 152577632, +144016688, 43066172, -67980208, -143702096, -194733824, -235730896, -259470784, -258697152, -240774800, -214183584, +-178467168, -132137352, -79065520, -24104968, 30179662, 81193136, 125873680, 163009584, 192982000, 216053504, +232919840, 245307600, 254314672, 259715056, 261763760, 261771808, 260262128, 256400960, 249691152, 240672256, +229946640, 218110784, 206570208, 196965584, 189718368, 184060816, 179179056, 174530288, 169478336, 163535168, +156792080, 149618944, 142169328, 134492064, 126790656, 119201984, 111450640, 103003520, 93563176, 83234320, +72127536, 59994252, 46582140, 32255742, 17762374, 3402151, -10920491, -24737402, -36990944, -47239272, +-55982752, -63379760, -68614248, -71157944, -71792528, -71634688, -70871256, -69215008, -66949952, -64623688, +-62057984, -58481348, -53521736, -47441136, -40394704, -31950262, -21505438, -8965207, 5135171, 20148766, +35888748, 52565032, 70101920, 87712896, 104364488, 119592824, 133637904, 146803056, 158875136, 169184672, +177143776, 182786288, 186896032, 190489856, 193986496, 196899552, 198414608, 198207376, 196701984, 194758512, +193220384, 192503120, 192380704, 192236288, 191645200, 190669712, 189624416, 188777232, 188268816, 188042800, +187744832, 186871344, 185077120, 182256944, 178427968, 173705120, 168274128, 162197824, 155338224, 147560048, +138878304, 129408440, 119380224, 109168408, 99096168, 89302032, 79920216, 71038760, 62386548, 53589916, +44463112, 33750388, 18118320, -4322348, -28186260, -42157788, -39511552, -25010132, -8060580, }, }, { { -2301566, --2214593, 5727876, 13223131, 10465762, 513785, -4172024, -2193655, -10200010, -42254960, -87792352, --113481624, -84174920, 7027640, 111054432, 138495520, 44058312, -97946728, -146072368, -43659416, 114249888, -190329328, 147693184, 52002928, -32975686, -99015640, -155720480, -194640400, -205525456, -195984192, -178432272, --154529168, -122307248, -85534808, -48135308, -8592619, 34183108, 75675176, 110118128, 135565808, 152853056, -163407392, 169358608, 173025440, 175466592, 176900576, 177918480, 178836000, 178791968, 176883392, 173388368, -168980112, 163797168, 158085936, 152720448, 148354080, 144822544, 141771504, 139110240, 136628816, 133912248, -130783368, 127244312, 123018064, 117765320, 111654120, 105082816, 97930624, 89697704, 80315888, 70161512, -59257664, 47110960, 33521146, 18984292, 4003983, -11500312, -27609124, -43575664, -58267672, -71399000, --83637512, -95267744, -105480104, -113548736, -120113592, -126386392, -132302176, -136444128, -137903888, -137277360, --135506224, -132569536, -127873528, -121401544, -113898776, -106172664, -98556616, -90922312, -83046952, -75074952, --67602248, -61177516, -55893092, -51618528, -48250736, -45432164, -42456288, -38915088, -35148940, -31722628, --28767690, -26016228, -23027468, -19238232, -14357002, -8902930, -3870839, 246961, 3717831, 7033546, -10645613, 14998563, 20207822, 25861608, 31578748, 37455872, 43646532, 49981608, 56273736, 62394064, -67841696, 71890776, 74301320, 75271448, 74821552, 72951632, 70109432, 66714800, 62621696, 57782880, -52841520, 48412872, 44589812, 41679972, 40359808, 40643812, 41889888, 44006772, 47257524, 51142860, -55154360, 59654412, 63366336, 61291332, 49220324, 30265024, 13108777, 3496104, 413391, }, +-2214593, 5727876, 13223131, 10465762, 513785, -4172024, -2193655, -10200010, -42254960, -87792352, +-113481624, -84174920, 7027640, 111054432, 138495520, 44058312, -97946728, -146072368, -43659416, 114249888, +190329328, 147693184, 52002928, -32975686, -99015640, -155720480, -194640400, -205525456, -195984192, -178432272, +-154529168, -122307248, -85534808, -48135308, -8592619, 34183108, 75675176, 110118128, 135565808, 152853056, +163407392, 169358608, 173025440, 175466592, 176900576, 177918480, 178836000, 178791968, 176883392, 173388368, +168980112, 163797168, 158085936, 152720448, 148354080, 144822544, 141771504, 139110240, 136628816, 133912248, +130783368, 127244312, 123018064, 117765320, 111654120, 105082816, 97930624, 89697704, 80315888, 70161512, +59257664, 47110960, 33521146, 18984292, 4003983, -11500312, -27609124, -43575664, -58267672, -71399000, +-83637512, -95267744, -105480104, -113548736, -120113592, -126386392, -132302176, -136444128, -137903888, -137277360, +-135506224, -132569536, -127873528, -121401544, -113898776, -106172664, -98556616, -90922312, -83046952, -75074952, +-67602248, -61177516, -55893092, -51618528, -48250736, -45432164, -42456288, -38915088, -35148940, -31722628, +-28767690, -26016228, -23027468, -19238232, -14357002, -8902930, -3870839, 246961, 3717831, 7033546, +10645613, 14998563, 20207822, 25861608, 31578748, 37455872, 43646532, 49981608, 56273736, 62394064, +67841696, 71890776, 74301320, 75271448, 74821552, 72951632, 70109432, 66714800, 62621696, 57782880, +52841520, 48412872, 44589812, 41679972, 40359808, 40643812, 41889888, 44006772, 47257524, 51142860, +55154360, 59654412, 63366336, 61291332, 49220324, 30265024, 13108777, 3496104, 413391, }, { 2301566, -2214593, -5727876, -13223131, -10465762, -513785, 4172024, 2193655, 10200010, 42254960, 87792352, -113481624, 84174920, -7027640, -111054432, -138495520, -44058312, 97946728, 146072368, 43659416, -114249888, --190329328, -147693184, -52002928, 32975686, 99015640, 155720480, 194640400, 205525456, 195984192, 178432272, -154529168, 122307248, 85534808, 48135308, 8592619, -34183108, -75675176, -110118128, -135565808, -152853056, --163407392, -169358608, -173025440, -175466592, -176900576, -177918480, -178836000, -178791968, -176883392, -173388368, --168980112, -163797168, -158085936, -152720448, -148354080, -144822544, -141771504, -139110240, -136628816, -133912248, --130783368, -127244312, -123018064, -117765320, -111654120, -105082816, -97930624, -89697704, -80315888, -70161512, --59257664, -47110960, -33521146, -18984292, -4003983, 11500312, 27609124, 43575664, 58267672, 71399000, -83637512, 95267744, 105480104, 113548736, 120113592, 126386392, 132302176, 136444128, 137903888, 137277360, -135506224, 132569536, 127873528, 121401544, 113898776, 106172664, 98556616, 90922312, 83046952, 75074952, -67602248, 61177516, 55893092, 51618528, 48250736, 45432164, 42456288, 38915088, 35148940, 31722628, -28767690, 26016228, 23027468, 19238232, 14357002, 8902930, 3870839, -246961, -3717831, -7033546, --10645613, -14998563, -20207822, -25861608, -31578748, -37455872, -43646532, -49981608, -56273736, -62394064, --67841696, -71890776, -74301320, -75271448, -74821552, -72951632, -70109432, -66714800, -62621696, -57782880, --52841520, -48412872, -44589812, -41679972, -40359808, -40643812, -41889888, -44006772, -47257524, -51142860, --55154360, -59654412, -63366336, -61291332, -49220324, -30265024, -13108777, -3496104, -413391, }, +2214593, -5727876, -13223131, -10465762, -513785, 4172024, 2193655, 10200010, 42254960, 87792352, +113481624, 84174920, -7027640, -111054432, -138495520, -44058312, 97946728, 146072368, 43659416, -114249888, +-190329328, -147693184, -52002928, 32975686, 99015640, 155720480, 194640400, 205525456, 195984192, 178432272, +154529168, 122307248, 85534808, 48135308, 8592619, -34183108, -75675176, -110118128, -135565808, -152853056, +-163407392, -169358608, -173025440, -175466592, -176900576, -177918480, -178836000, -178791968, -176883392, -173388368, +-168980112, -163797168, -158085936, -152720448, -148354080, -144822544, -141771504, -139110240, -136628816, -133912248, +-130783368, -127244312, -123018064, -117765320, -111654120, -105082816, -97930624, -89697704, -80315888, -70161512, +-59257664, -47110960, -33521146, -18984292, -4003983, 11500312, 27609124, 43575664, 58267672, 71399000, +83637512, 95267744, 105480104, 113548736, 120113592, 126386392, 132302176, 136444128, 137903888, 137277360, +135506224, 132569536, 127873528, 121401544, 113898776, 106172664, 98556616, 90922312, 83046952, 75074952, +67602248, 61177516, 55893092, 51618528, 48250736, 45432164, 42456288, 38915088, 35148940, 31722628, +28767690, 26016228, 23027468, 19238232, 14357002, 8902930, 3870839, -246961, -3717831, -7033546, +-10645613, -14998563, -20207822, -25861608, -31578748, -37455872, -43646532, -49981608, -56273736, -62394064, +-67841696, -71890776, -74301320, -75271448, -74821552, -72951632, -70109432, -66714800, -62621696, -57782880, +-52841520, -48412872, -44589812, -41679972, -40359808, -40643812, -41889888, -44006772, -47257524, -51142860, +-55154360, -59654412, -63366336, -61291332, -49220324, -30265024, -13108777, -3496104, -413391, }, }, { { -11621645, --12662637, 12901008, 18407156, -12460774, -26243860, 22013854, 87203944, 81292992, -10214506, -105698072, --122505888, -56635048, 34244312, 87755312, 70377872, -3514894, -68105296, -56239376, 24912958, 94054416, -88859656, 32216012, -11744588, -16888348, -3045132, 10651519, 24802900, 40087076, 47873852, 43004972, -29452738, 11979201, -7521562, -26468810, -42553464, -57022672, -71507984, -83610128, -89570472, -88812944, --83004536, -73455752, -61811560, -50697256, -41634340, -33958696, -26524108, -18781892, -10123238, -8590, -11195369, 22897008, 35459248, 49500572, 64513092, 79195440, 92606472, 104193760, 113225536, 118956096, -121067072, 119553632, 114368000, 105315816, 92148520, 74772160, 53405232, 28428388, 200790, -30688616, --63127428, -95725160, -127184720, -156271312, -181872544, -203371536, -220521344, -232880112, -240076864, -242724176, --242090128, -238572016, -231492288, -220755952, -207650400, -193449088, -178148272, -161212672, -142750752, -123226904, --102581000, -80419504, -56811144, -32329830, -7428146, 17716740, 42713448, 66690640, 88742616, 108476376, -125886032, 140656416, 151783072, 158158416, 159679360, 157684352, 154043296, 149673168, 144014544, 136032352, -125606856, 113885888, 102469328, 92425008, 83886080, 76293648, 69045360, 62086436, 55886652, 50864760, -46990164, 43880608, 41015864, 37846180, 33997888, 29450054, 24321862, 18562312, 12101607, 5170067, --1821603, -8575439, -14845554, -20320028, -24818468, -28407450, -31151934, -33056752, -34331820, -35319128, --36078264, -36451924, -36548024, -36649492, -36703180, -36425616, -35817880, -35015256, -33838436, -32111860, --30125974, -27972048, -24702504, -19210314, -12044699, -5477157, -1440962, 21475, 118112, }, +-12662637, 12901008, 18407156, -12460774, -26243860, 22013854, 87203944, 81292992, -10214506, -105698072, +-122505888, -56635048, 34244312, 87755312, 70377872, -3514894, -68105296, -56239376, 24912958, 94054416, +88859656, 32216012, -11744588, -16888348, -3045132, 10651519, 24802900, 40087076, 47873852, 43004972, +29452738, 11979201, -7521562, -26468810, -42553464, -57022672, -71507984, -83610128, -89570472, -88812944, +-83004536, -73455752, -61811560, -50697256, -41634340, -33958696, -26524108, -18781892, -10123238, -8590, +11195369, 22897008, 35459248, 49500572, 64513092, 79195440, 92606472, 104193760, 113225536, 118956096, +121067072, 119553632, 114368000, 105315816, 92148520, 74772160, 53405232, 28428388, 200790, -30688616, +-63127428, -95725160, -127184720, -156271312, -181872544, -203371536, -220521344, -232880112, -240076864, -242724176, +-242090128, -238572016, -231492288, -220755952, -207650400, -193449088, -178148272, -161212672, -142750752, -123226904, +-102581000, -80419504, -56811144, -32329830, -7428146, 17716740, 42713448, 66690640, 88742616, 108476376, +125886032, 140656416, 151783072, 158158416, 159679360, 157684352, 154043296, 149673168, 144014544, 136032352, +125606856, 113885888, 102469328, 92425008, 83886080, 76293648, 69045360, 62086436, 55886652, 50864760, +46990164, 43880608, 41015864, 37846180, 33997888, 29450054, 24321862, 18562312, 12101607, 5170067, +-1821603, -8575439, -14845554, -20320028, -24818468, -28407450, -31151934, -33056752, -34331820, -35319128, +-36078264, -36451924, -36548024, -36649492, -36703180, -36425616, -35817880, -35015256, -33838436, -32111860, +-30125974, -27972048, -24702504, -19210314, -12044699, -5477157, -1440962, 21475, 118112, }, { 11621645, -12662637, -12901008, -18407156, 12460774, 26243860, -22013854, -87203944, -81292992, 10214506, 105698072, -122505888, 56635048, -34244312, -87755312, -70377872, 3514894, 68105296, 56239376, -24912958, -94054416, --88859656, -32216012, 11744588, 16888348, 3045132, -10651519, -24802900, -40087076, -47873852, -43004972, --29452738, -11979201, 7521562, 26468810, 42553464, 57022672, 71507984, 83610128, 89570472, 88812944, -83004536, 73455752, 61811560, 50697256, 41634340, 33958696, 26524108, 18781892, 10123238, 8590, --11195369, -22897008, -35459248, -49500572, -64513092, -79195440, -92606472, -104193760, -113225536, -118956096, --121067072, -119553632, -114368000, -105315816, -92148520, -74772160, -53405232, -28428388, -200790, 30688616, -63127428, 95725160, 127184720, 156271312, 181872544, 203371536, 220521344, 232880112, 240076864, 242724176, -242090128, 238572016, 231492288, 220755952, 207650400, 193449088, 178148272, 161212672, 142750752, 123226904, -102581000, 80419504, 56811144, 32329830, 7428146, -17716740, -42713448, -66690640, -88742616, -108476376, --125886032, -140656416, -151783072, -158158416, -159679360, -157684352, -154043296, -149673168, -144014544, -136032352, --125606856, -113885888, -102469328, -92425008, -83886080, -76293648, -69045360, -62086436, -55886652, -50864760, --46990164, -43880608, -41015864, -37846180, -33997888, -29450054, -24321862, -18562312, -12101607, -5170067, -1821603, 8575439, 14845554, 20320028, 24818468, 28407450, 31151934, 33056752, 34331820, 35319128, -36078264, 36451924, 36548024, 36649492, 36703180, 36425616, 35817880, 35015256, 33838436, 32111860, -30125974, 27972048, 24702504, 19210314, 12044699, 5477157, 1440962, -21475, -118112, }, +12662637, -12901008, -18407156, 12460774, 26243860, -22013854, -87203944, -81292992, 10214506, 105698072, +122505888, 56635048, -34244312, -87755312, -70377872, 3514894, 68105296, 56239376, -24912958, -94054416, +-88859656, -32216012, 11744588, 16888348, 3045132, -10651519, -24802900, -40087076, -47873852, -43004972, +-29452738, -11979201, 7521562, 26468810, 42553464, 57022672, 71507984, 83610128, 89570472, 88812944, +83004536, 73455752, 61811560, 50697256, 41634340, 33958696, 26524108, 18781892, 10123238, 8590, +-11195369, -22897008, -35459248, -49500572, -64513092, -79195440, -92606472, -104193760, -113225536, -118956096, +-121067072, -119553632, -114368000, -105315816, -92148520, -74772160, -53405232, -28428388, -200790, 30688616, +63127428, 95725160, 127184720, 156271312, 181872544, 203371536, 220521344, 232880112, 240076864, 242724176, +242090128, 238572016, 231492288, 220755952, 207650400, 193449088, 178148272, 161212672, 142750752, 123226904, +102581000, 80419504, 56811144, 32329830, 7428146, -17716740, -42713448, -66690640, -88742616, -108476376, +-125886032, -140656416, -151783072, -158158416, -159679360, -157684352, -154043296, -149673168, -144014544, -136032352, +-125606856, -113885888, -102469328, -92425008, -83886080, -76293648, -69045360, -62086436, -55886652, -50864760, +-46990164, -43880608, -41015864, -37846180, -33997888, -29450054, -24321862, -18562312, -12101607, -5170067, +1821603, 8575439, 14845554, 20320028, 24818468, 28407450, 31151934, 33056752, 34331820, 35319128, +36078264, 36451924, 36548024, 36649492, 36703180, 36425616, 35817880, 35015256, 33838436, 32111860, +30125974, 27972048, 24702504, 19210314, 12044699, 5477157, 1440962, -21475, -118112, }, }, { { 1937567, --3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, -209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, --131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, -3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, --37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, --84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, --16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, -134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, -16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, --231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, --196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, --89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, --181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, --196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, --155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, --21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, +-3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, +209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, +-131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, +3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, +-37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, +-84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, +-16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, +134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, +16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, +-231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, +-196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, +-89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, +-181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, +-196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, +-155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, +-21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, { 1937567, --3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, -209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, --131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, -3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, --37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, --84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, --16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, -134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, -16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, --231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, --196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, --89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, --181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, --196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, --155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, --21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, +-3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, +209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, +-131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, +3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, +-37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, +-84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, +-16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, +134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, +16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, +-231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, +-196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, +-89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, +-181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, +-196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, +-155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, +-21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, }, { { -19097036, --44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, --28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, -26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, --76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, --30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, -65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, -80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, -86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, -110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, --66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, --300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, --270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, --86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, -49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, -126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, -105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, +-44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, +-28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, +26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, +-76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, +-30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, +65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, +80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, +86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, +110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, +-66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, +-300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, +-270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, +-86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, +49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, +126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, +105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, { -19097036, --44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, --28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, -26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, --76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, --30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, -65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, -80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, -86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, -110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, --66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, --300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, --270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, --86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, -49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, -126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, -105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, +-44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, +-28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, +26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, +-76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, +-30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, +65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, +80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, +86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, +110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, +-66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, +-300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, +-270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, +-86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, +49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, +126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, +105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, }, { { 22844394, -32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, -367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, --233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, -52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, -62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, --50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, --113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, --93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, --58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, --23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, --50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, -78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, -157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, -169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, -140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, -47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, +32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, +367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, +-233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, +52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, +62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, +-50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, +-113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, +-93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, +-58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, +-23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, +-50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, +78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, +157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, +169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, +140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, +47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, { 22844394, -32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, -367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, --233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, -52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, -62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, --50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, --113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, --93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, --58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, --23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, --50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, -78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, -157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, -169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, -140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, -47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, +32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, +367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, +-233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, +52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, +62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, +-50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, +-113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, +-93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, +-58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, +-23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, +-50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, +78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, +157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, +169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, +140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, +47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, }, { { 2709588, -11341935, 24164022, 37824168, 48972292, 42486352, -3062849, -79568568, -149920128, -196602672, -214368256, --144205680, 77959560, 347087040, 392520288, 92602720, -296709216, -393664896, -139867216, 160926512, 242814896, -146233968, 54702316, 31922882, 18806588, -16871168, -45679124, -50996296, -50842212, -54457500, -50628536, --35736812, -20008642, -9170292, -780610, 5867462, 9701257, 12484933, 15276662, 15848429, 13904420, -12628278, 12879533, 12058658, 9613211, 7916699, 7660611, 7406671, 7144141, 8097087, 9909026, -11210938, 11767674, 11806328, 10767483, 8333311, 5125507, 1481227, -2884071, -7704635, -12288438, --16731045, -21560198, -26567594, -31265752, -35827544, -40514428, -44970456, -48920216, -52687436, -56478820, --60071560, -63505924, -67145368, -70923328, -74355008, -77193448, -79366160, -80595600, -80738408, -80030808, --78453480, -75420160, -70591544, -64421288, -57504244, -49912352, -41438380, -32058710, -22058416, -12040941, --2745021, 5396090, 12326556, 17893908, 21741662, 23833848, 24593520, 24358908, 23168664, 21221434, -19105088, 17416092, 16371342, 15782931, 15292768, 14787572, 14678051, 15534897, 17454210, 20044076, -22972170, 26204670, 29848948, 34091304, 39089036, 44647260, 50229644, 55514064, 60679296, 66076460, -71948216, 78428248, 85371600, 92261800, 98683320, 104746736, 110726944, 116595480, 122185912, 127372624, -131826504, 135100336, 137170512, 138383840, 138876160, 138605568, 137763760, 136496752, 134513008, 131615512, -128205312, 124721016, 121202368, 117805048, 114904336, 112378360, 109732120, 106923744, 104035920, 100594576, -96302832, 90974384, 82011328, 64709052, 38907036, 13247827, -1968169, -5075578, -2077154, }, +11341935, 24164022, 37824168, 48972292, 42486352, -3062849, -79568568, -149920128, -196602672, -214368256, +-144205680, 77959560, 347087040, 392520288, 92602720, -296709216, -393664896, -139867216, 160926512, 242814896, +146233968, 54702316, 31922882, 18806588, -16871168, -45679124, -50996296, -50842212, -54457500, -50628536, +-35736812, -20008642, -9170292, -780610, 5867462, 9701257, 12484933, 15276662, 15848429, 13904420, +12628278, 12879533, 12058658, 9613211, 7916699, 7660611, 7406671, 7144141, 8097087, 9909026, +11210938, 11767674, 11806328, 10767483, 8333311, 5125507, 1481227, -2884071, -7704635, -12288438, +-16731045, -21560198, -26567594, -31265752, -35827544, -40514428, -44970456, -48920216, -52687436, -56478820, +-60071560, -63505924, -67145368, -70923328, -74355008, -77193448, -79366160, -80595600, -80738408, -80030808, +-78453480, -75420160, -70591544, -64421288, -57504244, -49912352, -41438380, -32058710, -22058416, -12040941, +-2745021, 5396090, 12326556, 17893908, 21741662, 23833848, 24593520, 24358908, 23168664, 21221434, +19105088, 17416092, 16371342, 15782931, 15292768, 14787572, 14678051, 15534897, 17454210, 20044076, +22972170, 26204670, 29848948, 34091304, 39089036, 44647260, 50229644, 55514064, 60679296, 66076460, +71948216, 78428248, 85371600, 92261800, 98683320, 104746736, 110726944, 116595480, 122185912, 127372624, +131826504, 135100336, 137170512, 138383840, 138876160, 138605568, 137763760, 136496752, 134513008, 131615512, +128205312, 124721016, 121202368, 117805048, 114904336, 112378360, 109732120, 106923744, 104035920, 100594576, +96302832, 90974384, 82011328, 64709052, 38907036, 13247827, -1968169, -5075578, -2077154, }, { -2709588, --11341935, -24164022, -37824168, -48972292, -42486352, 3062849, 79568568, 149920128, 196602672, 214368256, -144205680, -77959560, -347087040, -392520288, -92602720, 296709216, 393664896, 139867216, -160926512, -242814896, --146233968, -54702316, -31922882, -18806588, 16871168, 45679124, 50996296, 50842212, 54457500, 50628536, -35736812, 20008642, 9170292, 780610, -5867462, -9701257, -12484933, -15276662, -15848429, -13904420, --12628278, -12879533, -12058658, -9613211, -7916699, -7660611, -7406671, -7144141, -8097087, -9909026, --11210938, -11767674, -11806328, -10767483, -8333311, -5125507, -1481227, 2884071, 7704635, 12288438, -16731045, 21560198, 26567594, 31265752, 35827544, 40514428, 44970456, 48920216, 52687436, 56478820, -60071560, 63505924, 67145368, 70923328, 74355008, 77193448, 79366160, 80595600, 80738408, 80030808, -78453480, 75420160, 70591544, 64421288, 57504244, 49912352, 41438380, 32058710, 22058416, 12040941, -2745021, -5396090, -12326556, -17893908, -21741662, -23833848, -24593520, -24358908, -23168664, -21221434, --19105088, -17416092, -16371342, -15782931, -15292768, -14787572, -14678051, -15534897, -17454210, -20044076, --22972170, -26204670, -29848948, -34091304, -39089036, -44647260, -50229644, -55514064, -60679296, -66076460, --71948216, -78428248, -85371600, -92261800, -98683320, -104746736, -110726944, -116595480, -122185912, -127372624, --131826504, -135100336, -137170512, -138383840, -138876160, -138605568, -137763760, -136496752, -134513008, -131615512, --128205312, -124721016, -121202368, -117805048, -114904336, -112378360, -109732120, -106923744, -104035920, -100594576, --96302832, -90974384, -82011328, -64709052, -38907036, -13247827, 1968169, 5075578, 2077154, }, +-11341935, -24164022, -37824168, -48972292, -42486352, 3062849, 79568568, 149920128, 196602672, 214368256, +144205680, -77959560, -347087040, -392520288, -92602720, 296709216, 393664896, 139867216, -160926512, -242814896, +-146233968, -54702316, -31922882, -18806588, 16871168, 45679124, 50996296, 50842212, 54457500, 50628536, +35736812, 20008642, 9170292, 780610, -5867462, -9701257, -12484933, -15276662, -15848429, -13904420, +-12628278, -12879533, -12058658, -9613211, -7916699, -7660611, -7406671, -7144141, -8097087, -9909026, +-11210938, -11767674, -11806328, -10767483, -8333311, -5125507, -1481227, 2884071, 7704635, 12288438, +16731045, 21560198, 26567594, 31265752, 35827544, 40514428, 44970456, 48920216, 52687436, 56478820, +60071560, 63505924, 67145368, 70923328, 74355008, 77193448, 79366160, 80595600, 80738408, 80030808, +78453480, 75420160, 70591544, 64421288, 57504244, 49912352, 41438380, 32058710, 22058416, 12040941, +2745021, -5396090, -12326556, -17893908, -21741662, -23833848, -24593520, -24358908, -23168664, -21221434, +-19105088, -17416092, -16371342, -15782931, -15292768, -14787572, -14678051, -15534897, -17454210, -20044076, +-22972170, -26204670, -29848948, -34091304, -39089036, -44647260, -50229644, -55514064, -60679296, -66076460, +-71948216, -78428248, -85371600, -92261800, -98683320, -104746736, -110726944, -116595480, -122185912, -127372624, +-131826504, -135100336, -137170512, -138383840, -138876160, -138605568, -137763760, -136496752, -134513008, -131615512, +-128205312, -124721016, -121202368, -117805048, -114904336, -112378360, -109732120, -106923744, -104035920, -100594576, +-96302832, -90974384, -82011328, -64709052, -38907036, -13247827, 1968169, 5075578, 2077154, }, }, { { 1752347, -2318209, -3129421, -13364328, -22068078, -13906030, 23338316, 68938520, 71941240, 11290395, -61519500, --75093208, -26613228, 19918984, 22327388, 4521527, 2712272, 10649908, 3675955, -14254996, -20063402, --11353209, -6714108, -12883291, -16463683, -7989176, 4802847, 10709501, 8565775, 3003256, -3887482, --12086038, -20115480, -25625922, -27375584, -25383256, -20718922, -15309948, -10429254, -5472862, 678068, -7601555, 13700946, 17974976, 20415590, 21309480, 21220360, 21272436, 22553410, 25330106, 29222420, -33808372, 38672424, 43266428, 47165720, 50313396, 52808232, 54654532, 55847996, 56485264, 56649544, -56301116, 55363740, 53883048, 52083996, 50264004, 48584672, 47058884, 45802604, 45097156, 45042932, -45411764, 46103788, 47441672, 49701360, 52670256, 56014428, 59743532, 63888712, 68016176, 71476312, -73917464, 75246752, 75291848, 73703248, 69972536, 63533304, 54155780, 42167452, 27892592, 11008001, --9009768, -31874026, -56412784, -81407344, -106045960, -129645200, -151357328, -170186464, -185207040, -196040560, --203181488, -207441008, -209008672, -207558592, -203382800, -197860560, -192569696, -188201712, -184324432, -179907056, --174222672, -167572976, -161031216, -155325344, -150254592, -145263312, -140111504, -134852848, -129680632, -124933616, --120787904, -116880016, -112634440, -107862736, -102680320, -97099544, -91144576, -85032296, -78863656, -72510856, --66088272, -60015188, -54439248, -49138184, -44054016, -39272644, -34603476, -29887604, -25502978, -21810918, --18476412, -15020574, -11469173, -7778723, -3459059, 1539209, 6551436, 11398843, 16697759, 22694608, -29481192, 38444252, 50652696, 62598612, 66469452, 57299160, 38711076, 19604916, 5549098, }, +2318209, -3129421, -13364328, -22068078, -13906030, 23338316, 68938520, 71941240, 11290395, -61519500, +-75093208, -26613228, 19918984, 22327388, 4521527, 2712272, 10649908, 3675955, -14254996, -20063402, +-11353209, -6714108, -12883291, -16463683, -7989176, 4802847, 10709501, 8565775, 3003256, -3887482, +-12086038, -20115480, -25625922, -27375584, -25383256, -20718922, -15309948, -10429254, -5472862, 678068, +7601555, 13700946, 17974976, 20415590, 21309480, 21220360, 21272436, 22553410, 25330106, 29222420, +33808372, 38672424, 43266428, 47165720, 50313396, 52808232, 54654532, 55847996, 56485264, 56649544, +56301116, 55363740, 53883048, 52083996, 50264004, 48584672, 47058884, 45802604, 45097156, 45042932, +45411764, 46103788, 47441672, 49701360, 52670256, 56014428, 59743532, 63888712, 68016176, 71476312, +73917464, 75246752, 75291848, 73703248, 69972536, 63533304, 54155780, 42167452, 27892592, 11008001, +-9009768, -31874026, -56412784, -81407344, -106045960, -129645200, -151357328, -170186464, -185207040, -196040560, +-203181488, -207441008, -209008672, -207558592, -203382800, -197860560, -192569696, -188201712, -184324432, -179907056, +-174222672, -167572976, -161031216, -155325344, -150254592, -145263312, -140111504, -134852848, -129680632, -124933616, +-120787904, -116880016, -112634440, -107862736, -102680320, -97099544, -91144576, -85032296, -78863656, -72510856, +-66088272, -60015188, -54439248, -49138184, -44054016, -39272644, -34603476, -29887604, -25502978, -21810918, +-18476412, -15020574, -11469173, -7778723, -3459059, 1539209, 6551436, 11398843, 16697759, 22694608, +29481192, 38444252, 50652696, 62598612, 66469452, 57299160, 38711076, 19604916, 5549098, }, { -1752347, --2318209, 3129421, 13364328, 22068078, 13906030, -23338316, -68938520, -71941240, -11290395, 61519500, -75093208, 26613228, -19918984, -22327388, -4521527, -2712272, -10649908, -3675955, 14254996, 20063402, -11353209, 6714108, 12883291, 16463683, 7989176, -4802847, -10709501, -8565775, -3003256, 3887482, -12086038, 20115480, 25625922, 27375584, 25383256, 20718922, 15309948, 10429254, 5472862, -678068, --7601555, -13700946, -17974976, -20415590, -21309480, -21220360, -21272436, -22553410, -25330106, -29222420, --33808372, -38672424, -43266428, -47165720, -50313396, -52808232, -54654532, -55847996, -56485264, -56649544, --56301116, -55363740, -53883048, -52083996, -50264004, -48584672, -47058884, -45802604, -45097156, -45042932, --45411764, -46103788, -47441672, -49701360, -52670256, -56014428, -59743532, -63888712, -68016176, -71476312, --73917464, -75246752, -75291848, -73703248, -69972536, -63533304, -54155780, -42167452, -27892592, -11008001, -9009768, 31874026, 56412784, 81407344, 106045960, 129645200, 151357328, 170186464, 185207040, 196040560, -203181488, 207441008, 209008672, 207558592, 203382800, 197860560, 192569696, 188201712, 184324432, 179907056, -174222672, 167572976, 161031216, 155325344, 150254592, 145263312, 140111504, 134852848, 129680632, 124933616, -120787904, 116880016, 112634440, 107862736, 102680320, 97099544, 91144576, 85032296, 78863656, 72510856, -66088272, 60015188, 54439248, 49138184, 44054016, 39272644, 34603476, 29887604, 25502978, 21810918, -18476412, 15020574, 11469173, 7778723, 3459059, -1539209, -6551436, -11398843, -16697759, -22694608, --29481192, -38444252, -50652696, -62598612, -66469452, -57299160, -38711076, -19604916, -5549098, }, +-2318209, 3129421, 13364328, 22068078, 13906030, -23338316, -68938520, -71941240, -11290395, 61519500, +75093208, 26613228, -19918984, -22327388, -4521527, -2712272, -10649908, -3675955, 14254996, 20063402, +11353209, 6714108, 12883291, 16463683, 7989176, -4802847, -10709501, -8565775, -3003256, 3887482, +12086038, 20115480, 25625922, 27375584, 25383256, 20718922, 15309948, 10429254, 5472862, -678068, +-7601555, -13700946, -17974976, -20415590, -21309480, -21220360, -21272436, -22553410, -25330106, -29222420, +-33808372, -38672424, -43266428, -47165720, -50313396, -52808232, -54654532, -55847996, -56485264, -56649544, +-56301116, -55363740, -53883048, -52083996, -50264004, -48584672, -47058884, -45802604, -45097156, -45042932, +-45411764, -46103788, -47441672, -49701360, -52670256, -56014428, -59743532, -63888712, -68016176, -71476312, +-73917464, -75246752, -75291848, -73703248, -69972536, -63533304, -54155780, -42167452, -27892592, -11008001, +9009768, 31874026, 56412784, 81407344, 106045960, 129645200, 151357328, 170186464, 185207040, 196040560, +203181488, 207441008, 209008672, 207558592, 203382800, 197860560, 192569696, 188201712, 184324432, 179907056, +174222672, 167572976, 161031216, 155325344, 150254592, 145263312, 140111504, 134852848, 129680632, 124933616, +120787904, 116880016, 112634440, 107862736, 102680320, 97099544, 91144576, 85032296, 78863656, 72510856, +66088272, 60015188, 54439248, 49138184, 44054016, 39272644, 34603476, 29887604, 25502978, 21810918, +18476412, 15020574, 11469173, 7778723, 3459059, -1539209, -6551436, -11398843, -16697759, -22694608, +-29481192, -38444252, -50652696, -62598612, -66469452, -57299160, -38711076, -19604916, -5549098, }, }, { { 6022081, -17711372, 19808926, 5702106, -1069984, 26598732, 60575144, 30136174, -86081344, -207033536, -210641296, --51190104, 176310560, 291438752, 184795264, -56688200, -214403696, -161382320, 9672266, 114938696, 91175176, -20908974, -15001247, -22431004, -32042604, -34917012, -13038984, 17381196, 29633126, 25831544, 26075820, -37205156, 52308408, 67342936, 81734840, 91005528, 90618976, 82400024, 70903464, 57972396, 44236552, -31173410, 19136764, 6932077, -5563594, -17260400, -28190554, -39239896, -50185620, -60355564, -70269424, --80538688, -90162104, -97526896, -102055400, -103766408, -102488656, -98518496, -92877592, -86127520, -77828032, --67520104, -55291800, -41150620, -24761024, -6062347, 14438606, 35991288, 57763016, 78866336, 98627480, -116608896, 132132520, 144197088, 152177664, 156192928, 156476400, 152789168, 144825216, 132918504, 117959664, -100683696, 81301584, 59863256, 36761700, 12690018, -11863773, -36840080, -62242128, -87801480, -113138032, --137922672, -161553040, -182911920, -200827840, -214623280, -223893968, -227962912, -226051648, -218062464, -204918800, --188054064, -168620960, -147109072, -123661776, -98896992, -74404400, -52142512, -33224256, -17482128, -4221416, -6915971, 15874736, 22513682, 26737782, 28529858, 28082106, 25817048, 22249004, 17916456, 13336410, -8747238, 3869229, -1880122, -8884140, -17067664, -25989920, -35050692, -43759276, -51981452, -59895468, --67640904, -75084616, -81900192, -87727392, -92288648, -95513096, -97520992, -98360656, -97869416, -95914136, --92604864, -88149368, -82709792, -76492296, -69763152, -62685048, -55346560, -47927540, -40649716, -33641940, --26855356, -19616726, -10412611, 1456531, 13294534, 19794430, 18117782, 11077258, 3459059, }, +17711372, 19808926, 5702106, -1069984, 26598732, 60575144, 30136174, -86081344, -207033536, -210641296, +-51190104, 176310560, 291438752, 184795264, -56688200, -214403696, -161382320, 9672266, 114938696, 91175176, +20908974, -15001247, -22431004, -32042604, -34917012, -13038984, 17381196, 29633126, 25831544, 26075820, +37205156, 52308408, 67342936, 81734840, 91005528, 90618976, 82400024, 70903464, 57972396, 44236552, +31173410, 19136764, 6932077, -5563594, -17260400, -28190554, -39239896, -50185620, -60355564, -70269424, +-80538688, -90162104, -97526896, -102055400, -103766408, -102488656, -98518496, -92877592, -86127520, -77828032, +-67520104, -55291800, -41150620, -24761024, -6062347, 14438606, 35991288, 57763016, 78866336, 98627480, +116608896, 132132520, 144197088, 152177664, 156192928, 156476400, 152789168, 144825216, 132918504, 117959664, +100683696, 81301584, 59863256, 36761700, 12690018, -11863773, -36840080, -62242128, -87801480, -113138032, +-137922672, -161553040, -182911920, -200827840, -214623280, -223893968, -227962912, -226051648, -218062464, -204918800, +-188054064, -168620960, -147109072, -123661776, -98896992, -74404400, -52142512, -33224256, -17482128, -4221416, +6915971, 15874736, 22513682, 26737782, 28529858, 28082106, 25817048, 22249004, 17916456, 13336410, +8747238, 3869229, -1880122, -8884140, -17067664, -25989920, -35050692, -43759276, -51981452, -59895468, +-67640904, -75084616, -81900192, -87727392, -92288648, -95513096, -97520992, -98360656, -97869416, -95914136, +-92604864, -88149368, -82709792, -76492296, -69763152, -62685048, -55346560, -47927540, -40649716, -33641940, +-26855356, -19616726, -10412611, 1456531, 13294534, 19794430, 18117782, 11077258, 3459059, }, { -6022081, --17711372, -19808926, -5702106, 1069984, -26598732, -60575144, -30136174, 86081344, 207033536, 210641296, -51190104, -176310560, -291438752, -184795264, 56688200, 214403696, 161382320, -9672266, -114938696, -91175176, --20908974, 15001247, 22431004, 32042604, 34917012, 13038984, -17381196, -29633126, -25831544, -26075820, --37205156, -52308408, -67342936, -81734840, -91005528, -90618976, -82400024, -70903464, -57972396, -44236552, --31173410, -19136764, -6932077, 5563594, 17260400, 28190554, 39239896, 50185620, 60355564, 70269424, -80538688, 90162104, 97526896, 102055400, 103766408, 102488656, 98518496, 92877592, 86127520, 77828032, -67520104, 55291800, 41150620, 24761024, 6062347, -14438606, -35991288, -57763016, -78866336, -98627480, --116608896, -132132520, -144197088, -152177664, -156192928, -156476400, -152789168, -144825216, -132918504, -117959664, --100683696, -81301584, -59863256, -36761700, -12690018, 11863773, 36840080, 62242128, 87801480, 113138032, -137922672, 161553040, 182911920, 200827840, 214623280, 223893968, 227962912, 226051648, 218062464, 204918800, -188054064, 168620960, 147109072, 123661776, 98896992, 74404400, 52142512, 33224256, 17482128, 4221416, --6915971, -15874736, -22513682, -26737782, -28529858, -28082106, -25817048, -22249004, -17916456, -13336410, --8747238, -3869229, 1880122, 8884140, 17067664, 25989920, 35050692, 43759276, 51981452, 59895468, -67640904, 75084616, 81900192, 87727392, 92288648, 95513096, 97520992, 98360656, 97869416, 95914136, -92604864, 88149368, 82709792, 76492296, 69763152, 62685048, 55346560, 47927540, 40649716, 33641940, -26855356, 19616726, 10412611, -1456531, -13294534, -19794430, -18117782, -11077258, -3459059, }, +-17711372, -19808926, -5702106, 1069984, -26598732, -60575144, -30136174, 86081344, 207033536, 210641296, +51190104, -176310560, -291438752, -184795264, 56688200, 214403696, 161382320, -9672266, -114938696, -91175176, +-20908974, 15001247, 22431004, 32042604, 34917012, 13038984, -17381196, -29633126, -25831544, -26075820, +-37205156, -52308408, -67342936, -81734840, -91005528, -90618976, -82400024, -70903464, -57972396, -44236552, +-31173410, -19136764, -6932077, 5563594, 17260400, 28190554, 39239896, 50185620, 60355564, 70269424, +80538688, 90162104, 97526896, 102055400, 103766408, 102488656, 98518496, 92877592, 86127520, 77828032, +67520104, 55291800, 41150620, 24761024, 6062347, -14438606, -35991288, -57763016, -78866336, -98627480, +-116608896, -132132520, -144197088, -152177664, -156192928, -156476400, -152789168, -144825216, -132918504, -117959664, +-100683696, -81301584, -59863256, -36761700, -12690018, 11863773, 36840080, 62242128, 87801480, 113138032, +137922672, 161553040, 182911920, 200827840, 214623280, 223893968, 227962912, 226051648, 218062464, 204918800, +188054064, 168620960, 147109072, 123661776, 98896992, 74404400, 52142512, 33224256, 17482128, 4221416, +-6915971, -15874736, -22513682, -26737782, -28529858, -28082106, -25817048, -22249004, -17916456, -13336410, +-8747238, -3869229, 1880122, 8884140, 17067664, 25989920, 35050692, 43759276, 51981452, 59895468, +67640904, 75084616, 81900192, 87727392, 92288648, 95513096, 97520992, 98360656, 97869416, 95914136, +92604864, 88149368, 82709792, 76492296, 69763152, 62685048, 55346560, 47927540, 40649716, 33641940, +26855356, 19616726, 10412611, -1456531, -13294534, -19794430, -18117782, -11077258, -3459059, }, }, { { 44560, -2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, -48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, -40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, --30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, -22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, --1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, --54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, -16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, -152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, -47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, --107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, --27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, -24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, --48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, --146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, --116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, +2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, +48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, +40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, +-30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, +22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, +-1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, +-54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, +16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, +152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, +47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, +-107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, +-27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, +24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, +-48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, +-146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, +-116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, { 44560, -2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, -48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, -40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, --30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, -22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, --1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, --54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, -16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, -152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, -47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, --107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, --27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, -24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, --48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, --146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, --116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, +2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, +48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, +40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, +-30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, +22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, +-1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, +-54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, +16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, +152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, +47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, +-107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, +-27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, +24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, +-48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, +-146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, +-116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, }, { { 1759326, -11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, -103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, --40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, -7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, --40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, --39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, --1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, -83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, -72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, -75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, -55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, --42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, --152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, --111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, --10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, -40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, +11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, +103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, +-40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, +7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, +-40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, +-39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, +-1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, +83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, +72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, +75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, +55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, +-42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, +-152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, +-111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, +-10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, +40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, { 1759326, -11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, -103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, --40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, -7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, --40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, --39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, --1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, -83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, -72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, -75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, -55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, --42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, --152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, --111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, --10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, -40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, +11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, +103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, +-40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, +7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, +-40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, +-39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, +-1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, +83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, +72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, +75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, +55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, +-42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, +-152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, +-111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, +-10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, +40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, }, { { -4452271, --7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, -34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, -44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, --114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, -14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, -36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, -22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, -77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, -129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, -78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, --145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, --273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, --128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, -57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, -187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, -130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, +-7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, +34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, +44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, +-114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, +14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, +36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, +22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, +77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, +129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, +78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, +-145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, +-273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, +-128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, +57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, +187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, +130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, { -4452271, --7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, -34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, -44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, --114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, -14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, -36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, -22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, -77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, -129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, -78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, --145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, --273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, --128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, -57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, -187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, -130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, +-7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, +34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, +44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, +-114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, +14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, +36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, +22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, +77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, +129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, +78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, +-145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, +-273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, +-128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, +57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, +187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, +130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, }, { { 95026, -121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, --12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, --8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, --17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, --79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, --31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, --18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, -82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, -48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, -83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, -44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, -94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, -117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, -97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, -88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, -11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, +121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, +-12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, +-8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, +-17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, +-79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, +-31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, +-18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, +82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, +48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, +83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, +44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, +94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, +117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, +97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, +88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, +11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, { 95026, -121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, --12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, --8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, --17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, --79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, --31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, --18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, -82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, -48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, -83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, -44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, -94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, -117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, -97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, -88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, -11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, +121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, +-12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, +-8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, +-17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, +-79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, +-31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, +-18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, +82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, +48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, +83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, +44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, +94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, +117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, +97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, +88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, +11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, }, }; const Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 474517120, -393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, --287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, -328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, --471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, --223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, --7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, -143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, -268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, +393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, +-287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, +328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, +-471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, +-223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, +-7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, +143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, +268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, { 474517120, -393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, --287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, -328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, --471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, --223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, --7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, -143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, -268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, +393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, +-287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, +328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, +-471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, +-223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, +-7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, +143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, +268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, }, { { -14667313, -109007344, 300884480, 459067584, 490658688, 373444736, 147811296, -130092952, -394527104, -569486336, -623482688, --591592576, -477895648, -203745728, 216717072, 505419936, 342454912, -187842000, -574587712, -431045056, 74300248, -468669504, 522579424, 375879424, 221147872, 87966832, -57102128, -187308352, -264547968, -307544352, -350313088, --389952416, -411228608, -420155712, -428318304, -433704192, -432025376, -426204096, -417957216, -405028288, -387838784, --368521600, -346348320, -320995104, -295042784, -269352960, -242227568, -214230816, -187539216, -161874096, -136570304, --113043000, -91045792, -67981280, -44285944, -22613540, -1644436, 21249350, 43590696, 62576600, 81269912, -101752608, 119903672, 134431936, 150395792, 167950944, 181327072, 192286752, 207711600, 223999728, 234186848, -245695216, 266763632, 286735232, 300152192, 330441376, 387059776, 423103136, 394020288, 339865056, }, +109007344, 300884480, 459067584, 490658688, 373444736, 147811296, -130092952, -394527104, -569486336, -623482688, +-591592576, -477895648, -203745728, 216717072, 505419936, 342454912, -187842000, -574587712, -431045056, 74300248, +468669504, 522579424, 375879424, 221147872, 87966832, -57102128, -187308352, -264547968, -307544352, -350313088, +-389952416, -411228608, -420155712, -428318304, -433704192, -432025376, -426204096, -417957216, -405028288, -387838784, +-368521600, -346348320, -320995104, -295042784, -269352960, -242227568, -214230816, -187539216, -161874096, -136570304, +-113043000, -91045792, -67981280, -44285944, -22613540, -1644436, 21249350, 43590696, 62576600, 81269912, +101752608, 119903672, 134431936, 150395792, 167950944, 181327072, 192286752, 207711600, 223999728, 234186848, +245695216, 266763632, 286735232, 300152192, 330441376, 387059776, 423103136, 394020288, 339865056, }, { 14667313, --109007344, -300884480, -459067584, -490658688, -373444736, -147811296, 130092952, 394527104, 569486336, 623482688, -591592576, 477895648, 203745728, -216717072, -505419936, -342454912, 187842000, 574587712, 431045056, -74300248, --468669504, -522579424, -375879424, -221147872, -87966832, 57102128, 187308352, 264547968, 307544352, 350313088, -389952416, 411228608, 420155712, 428318304, 433704192, 432025376, 426204096, 417957216, 405028288, 387838784, -368521600, 346348320, 320995104, 295042784, 269352960, 242227568, 214230816, 187539216, 161874096, 136570304, -113043000, 91045792, 67981280, 44285944, 22613540, 1644436, -21249350, -43590696, -62576600, -81269912, --101752608, -119903672, -134431936, -150395792, -167950944, -181327072, -192286752, -207711600, -223999728, -234186848, --245695216, -266763632, -286735232, -300152192, -330441376, -387059776, -423103136, -394020288, -339865056, }, +-109007344, -300884480, -459067584, -490658688, -373444736, -147811296, 130092952, 394527104, 569486336, 623482688, +591592576, 477895648, 203745728, -216717072, -505419936, -342454912, 187842000, 574587712, 431045056, -74300248, +-468669504, -522579424, -375879424, -221147872, -87966832, 57102128, 187308352, 264547968, 307544352, 350313088, +389952416, 411228608, 420155712, 428318304, 433704192, 432025376, 426204096, 417957216, 405028288, 387838784, +368521600, 346348320, 320995104, 295042784, 269352960, 242227568, 214230816, 187539216, 161874096, 136570304, +113043000, 91045792, 67981280, 44285944, 22613540, 1644436, -21249350, -43590696, -62576600, -81269912, +-101752608, -119903672, -134431936, -150395792, -167950944, -181327072, -192286752, -207711600, -223999728, -234186848, +-245695216, -266763632, -286735232, -300152192, -330441376, -387059776, -423103136, -394020288, -339865056, }, }, { { 63584844, -61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, --18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, -97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, --79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, --102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, --98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, -133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, -318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, +61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, +-18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, +97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, +-79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, +-102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, +-98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, +133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, +318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, { 63584844, -61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, --18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, -97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, --79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, --102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, --98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, -133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, -318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, +61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, +-18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, +97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, +-79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, +-102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, +-98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, +133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, +318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, }, { { 17322140, -31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, --70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, -101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, --252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, --189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, -43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, -121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, -182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, +31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, +-70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, +101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, +-252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, +-189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, +43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, +121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, +182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, { 17322140, -31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, --70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, -101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, --252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, --189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, -43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, -121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, -182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, +31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, +-70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, +101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, +-252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, +-189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, +43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, +121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, +182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, }, { { 6201933, -303332, -1778117, 6503654, 18598820, 23028540, 20786568, 25465934, 41975252, 52989160, 32604170, --28302760, -105976704, -145849040, -96549792, 28359670, 128144104, 98512056, -45183056, -164794672, -144955152, --12104828, 117671904, 174167360, 173926304, 152256048, 113789256, 55066312, -9612137, -64184528, -108850040, --148930144, -181961120, -204718544, -220194928, -230445936, -231651744, -220868160, -200911584, -176357264, -150281440, --125502168, -104079408, -85437640, -68207840, -52620864, -38723964, -24820616, -10057740, 4121558, 16736951, -28503550, 39352100, 48028472, 54768888, 61201136, 67616208, 73394552, 79361872, 86609088, 94278288, -101434776, 109201688, 118283400, 126990912, 134377712, 142158048, 151016960, 158850976, 165027680, 171845936, -179373936, 184241744, 186285072, 189771520, 193235408, 184292208, 152493888, 106336408, 71842992, }, +303332, -1778117, 6503654, 18598820, 23028540, 20786568, 25465934, 41975252, 52989160, 32604170, +-28302760, -105976704, -145849040, -96549792, 28359670, 128144104, 98512056, -45183056, -164794672, -144955152, +-12104828, 117671904, 174167360, 173926304, 152256048, 113789256, 55066312, -9612137, -64184528, -108850040, +-148930144, -181961120, -204718544, -220194928, -230445936, -231651744, -220868160, -200911584, -176357264, -150281440, +-125502168, -104079408, -85437640, -68207840, -52620864, -38723964, -24820616, -10057740, 4121558, 16736951, +28503550, 39352100, 48028472, 54768888, 61201136, 67616208, 73394552, 79361872, 86609088, 94278288, +101434776, 109201688, 118283400, 126990912, 134377712, 142158048, 151016960, 158850976, 165027680, 171845936, +179373936, 184241744, 186285072, 189771520, 193235408, 184292208, 152493888, 106336408, 71842992, }, { -6201933, --303332, 1778117, -6503654, -18598820, -23028540, -20786568, -25465934, -41975252, -52989160, -32604170, -28302760, 105976704, 145849040, 96549792, -28359670, -128144104, -98512056, 45183056, 164794672, 144955152, -12104828, -117671904, -174167360, -173926304, -152256048, -113789256, -55066312, 9612137, 64184528, 108850040, -148930144, 181961120, 204718544, 220194928, 230445936, 231651744, 220868160, 200911584, 176357264, 150281440, -125502168, 104079408, 85437640, 68207840, 52620864, 38723964, 24820616, 10057740, -4121558, -16736951, --28503550, -39352100, -48028472, -54768888, -61201136, -67616208, -73394552, -79361872, -86609088, -94278288, --101434776, -109201688, -118283400, -126990912, -134377712, -142158048, -151016960, -158850976, -165027680, -171845936, --179373936, -184241744, -186285072, -189771520, -193235408, -184292208, -152493888, -106336408, -71842992, }, +-303332, 1778117, -6503654, -18598820, -23028540, -20786568, -25465934, -41975252, -52989160, -32604170, +28302760, 105976704, 145849040, 96549792, -28359670, -128144104, -98512056, 45183056, 164794672, 144955152, +12104828, -117671904, -174167360, -173926304, -152256048, -113789256, -55066312, 9612137, 64184528, 108850040, +148930144, 181961120, 204718544, 220194928, 230445936, 231651744, 220868160, 200911584, 176357264, 150281440, +125502168, 104079408, 85437640, 68207840, 52620864, 38723964, 24820616, 10057740, -4121558, -16736951, +-28503550, -39352100, -48028472, -54768888, -61201136, -67616208, -73394552, -79361872, -86609088, -94278288, +-101434776, -109201688, -118283400, -126990912, -134377712, -142158048, -151016960, -158850976, -165027680, -171845936, +-179373936, -184241744, -186285072, -189771520, -193235408, -184292208, -152493888, -106336408, -71842992, }, }, { { 27467390, -2485712, -658741, 27040040, 33897492, -6876243, -39722540, 1653026, 93714040, 141894448, 92704184, --10971494, -85444616, -83779776, -17631378, 61112552, 89751928, 40414032, -42704860, -75765368, -25393458, -53360672, 86494200, 64158220, 30455076, 15159087, 11920145, 12123619, 21956410, 43373800, 65676492, -81234472, 91583200, 96871912, 94500016, 87269976, 79865456, 69784632, 52569324, 31410706, 12203613, --4763656, -20226074, -30743376, -35179540, -38381440, -43128988, -46829104, -49121004, -53146464, -57859652, --59115392, -58056148, -58328340, -57390428, -50747724, -40503688, -29918742, -15891916, 3874597, 24592982, -43498892, 64919504, 89533424, 111123688, 128989680, 148818464, 168397616, 179598352, 184638496, 190617088, -191139472, 176601008, 155666256, 138311904, 107942728, 46190764, -24148454, -62047244, -66298724, }, +2485712, -658741, 27040040, 33897492, -6876243, -39722540, 1653026, 93714040, 141894448, 92704184, +-10971494, -85444616, -83779776, -17631378, 61112552, 89751928, 40414032, -42704860, -75765368, -25393458, +53360672, 86494200, 64158220, 30455076, 15159087, 11920145, 12123619, 21956410, 43373800, 65676492, +81234472, 91583200, 96871912, 94500016, 87269976, 79865456, 69784632, 52569324, 31410706, 12203613, +-4763656, -20226074, -30743376, -35179540, -38381440, -43128988, -46829104, -49121004, -53146464, -57859652, +-59115392, -58056148, -58328340, -57390428, -50747724, -40503688, -29918742, -15891916, 3874597, 24592982, +43498892, 64919504, 89533424, 111123688, 128989680, 148818464, 168397616, 179598352, 184638496, 190617088, +191139472, 176601008, 155666256, 138311904, 107942728, 46190764, -24148454, -62047244, -66298724, }, { -27467390, --2485712, 658741, -27040040, -33897492, 6876243, 39722540, -1653026, -93714040, -141894448, -92704184, -10971494, 85444616, 83779776, 17631378, -61112552, -89751928, -40414032, 42704860, 75765368, 25393458, --53360672, -86494200, -64158220, -30455076, -15159087, -11920145, -12123619, -21956410, -43373800, -65676492, --81234472, -91583200, -96871912, -94500016, -87269976, -79865456, -69784632, -52569324, -31410706, -12203613, -4763656, 20226074, 30743376, 35179540, 38381440, 43128988, 46829104, 49121004, 53146464, 57859652, -59115392, 58056148, 58328340, 57390428, 50747724, 40503688, 29918742, 15891916, -3874597, -24592982, --43498892, -64919504, -89533424, -111123688, -128989680, -148818464, -168397616, -179598352, -184638496, -190617088, --191139472, -176601008, -155666256, -138311904, -107942728, -46190764, 24148454, 62047244, 66298724, }, +-2485712, 658741, -27040040, -33897492, 6876243, 39722540, -1653026, -93714040, -141894448, -92704184, +10971494, 85444616, 83779776, 17631378, -61112552, -89751928, -40414032, 42704860, 75765368, 25393458, +-53360672, -86494200, -64158220, -30455076, -15159087, -11920145, -12123619, -21956410, -43373800, -65676492, +-81234472, -91583200, -96871912, -94500016, -87269976, -79865456, -69784632, -52569324, -31410706, -12203613, +4763656, 20226074, 30743376, 35179540, 38381440, 43128988, 46829104, 49121004, 53146464, 57859652, +59115392, 58056148, 58328340, 57390428, 50747724, 40503688, 29918742, 15891916, -3874597, -24592982, +-43498892, -64919504, -89533424, -111123688, -128989680, -148818464, -168397616, -179598352, -184638496, -190617088, +-191139472, -176601008, -155666256, -138311904, -107942728, -46190764, 24148454, 62047244, 66298724, }, }, { { -705448, -7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, -81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, -24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, -31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, -54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, --10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, --105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, --12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, +7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, +81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, +24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, +31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, +54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, +-10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, +-105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, +-12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, { -705448, -7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, -81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, -24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, -31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, -54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, --10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, --105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, --12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, +7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, +81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, +24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, +31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, +54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, +-10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, +-105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, +-12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, }, { { 22603876, --7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, --65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, --9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, -31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, --108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, --67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, -4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, -29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, +-7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, +-65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, +-9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, +31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, +-108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, +-67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, +4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, +29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, { 22603876, --7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, --65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, --9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, -31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, --108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, --67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, -4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, -29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, +-7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, +-65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, +-9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, +31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, +-108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, +-67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, +4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, +29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, }, { { -9419400, -41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, -102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, -214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, --154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, -73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, -67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, -5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, --80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, +41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, +102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, +214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, +-154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, +73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, +67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, +5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, +-80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, { -9419400, -41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, -102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, -214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, --154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, -73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, -67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, -5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, --80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, +41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, +102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, +214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, +-154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, +73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, +67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, +5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, +-80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, }, { { -3726421, --4905390, -550293, 12445205, 38268160, 81759000, 124758600, 129797672, 85855320, 10437307, -102676560, --256617312, -344373152, -196594080, 162747056, 421756672, 301686560, -81485728, -338718304, -270162560, -44135620, -89901184, 92062624, 71720584, 81324672, 84869624, 61480308, 35527968, 21602612, 7235946, -12939663, --27393838, -30405148, -28365038, -25742424, -21561272, -16509317, -12374875, -7998303, -2522757, 1645509, -3288871, 4905927, 7898982, 10081899, 10088878, 9747428, 10390063, 10888279, 10763725, 11661910, -14477798, 18012556, 21446382, 25411174, 29873108, 33535642, 36019744, 38237020, 40196064, 40926208, -40725416, 40797356, 40727028, 39200704, 36813776, 34959960, 32791538, 28916404, 24681566, 21641804, -17919678, 11828877, 5825050, 991601, -7748121, -22736484, -34851512, -34499860, -27521076, }, +-4905390, -550293, 12445205, 38268160, 81759000, 124758600, 129797672, 85855320, 10437307, -102676560, +-256617312, -344373152, -196594080, 162747056, 421756672, 301686560, -81485728, -338718304, -270162560, -44135620, +89901184, 92062624, 71720584, 81324672, 84869624, 61480308, 35527968, 21602612, 7235946, -12939663, +-27393838, -30405148, -28365038, -25742424, -21561272, -16509317, -12374875, -7998303, -2522757, 1645509, +3288871, 4905927, 7898982, 10081899, 10088878, 9747428, 10390063, 10888279, 10763725, 11661910, +14477798, 18012556, 21446382, 25411174, 29873108, 33535642, 36019744, 38237020, 40196064, 40926208, +40725416, 40797356, 40727028, 39200704, 36813776, 34959960, 32791538, 28916404, 24681566, 21641804, +17919678, 11828877, 5825050, 991601, -7748121, -22736484, -34851512, -34499860, -27521076, }, { 3726421, -4905390, 550293, -12445205, -38268160, -81759000, -124758600, -129797672, -85855320, -10437307, 102676560, -256617312, 344373152, 196594080, -162747056, -421756672, -301686560, 81485728, 338718304, 270162560, 44135620, --89901184, -92062624, -71720584, -81324672, -84869624, -61480308, -35527968, -21602612, -7235946, 12939663, -27393838, 30405148, 28365038, 25742424, 21561272, 16509317, 12374875, 7998303, 2522757, -1645509, --3288871, -4905927, -7898982, -10081899, -10088878, -9747428, -10390063, -10888279, -10763725, -11661910, --14477798, -18012556, -21446382, -25411174, -29873108, -33535642, -36019744, -38237020, -40196064, -40926208, --40725416, -40797356, -40727028, -39200704, -36813776, -34959960, -32791538, -28916404, -24681566, -21641804, --17919678, -11828877, -5825050, -991601, 7748121, 22736484, 34851512, 34499860, 27521076, }, +4905390, 550293, -12445205, -38268160, -81759000, -124758600, -129797672, -85855320, -10437307, 102676560, +256617312, 344373152, 196594080, -162747056, -421756672, -301686560, 81485728, 338718304, 270162560, 44135620, +-89901184, -92062624, -71720584, -81324672, -84869624, -61480308, -35527968, -21602612, -7235946, 12939663, +27393838, 30405148, 28365038, 25742424, 21561272, 16509317, 12374875, 7998303, 2522757, -1645509, +-3288871, -4905927, -7898982, -10081899, -10088878, -9747428, -10390063, -10888279, -10763725, -11661910, +-14477798, -18012556, -21446382, -25411174, -29873108, -33535642, -36019744, -38237020, -40196064, -40926208, +-40725416, -40797356, -40727028, -39200704, -36813776, -34959960, -32791538, -28916404, -24681566, -21641804, +-17919678, -11828877, -5825050, -991601, 7748121, 22736484, 34851512, 34499860, 27521076, }, }, { { -4889821, --342524, 3532074, 972273, -13593571, -39178156, -53621592, -24791088, 41968808, 86767464, 58815284, --13867376, -55325620, -37217504, -3175592, 4268124, -3515431, 1946157, 15576773, 14221710, -1054415, --9167071, -4754529, -3166465, -12531641, -22008486, -20215338, -10042707, -641561, 4719096, 7508677, -7569343, 3358128, -4560182, -13816373, -22486838, -29368450, -33820720, -36604932, -39212516, -41504416, --41713260, -39269960, -35690640, -32337346, -29443074, -27575838, -27660664, -29154774, -30347166, -30591442, --30244622, -28885266, -25828860, -21779242, -17788680, -13510893, -8437463, -3421478, 920197, 5463199, -10562398, 15039902, 18501108, 21978422, 25392920, 27537720, 28916404, 30988726, 33019172, 33803004, -35061964, 38326676, 41264436, 43054900, 48853104, 60483340, 67997920, 62146568, 51134272, }, +-342524, 3532074, 972273, -13593571, -39178156, -53621592, -24791088, 41968808, 86767464, 58815284, +-13867376, -55325620, -37217504, -3175592, 4268124, -3515431, 1946157, 15576773, 14221710, -1054415, +-9167071, -4754529, -3166465, -12531641, -22008486, -20215338, -10042707, -641561, 4719096, 7508677, +7569343, 3358128, -4560182, -13816373, -22486838, -29368450, -33820720, -36604932, -39212516, -41504416, +-41713260, -39269960, -35690640, -32337346, -29443074, -27575838, -27660664, -29154774, -30347166, -30591442, +-30244622, -28885266, -25828860, -21779242, -17788680, -13510893, -8437463, -3421478, 920197, 5463199, +10562398, 15039902, 18501108, 21978422, 25392920, 27537720, 28916404, 30988726, 33019172, 33803004, +35061964, 38326676, 41264436, 43054900, 48853104, 60483340, 67997920, 62146568, 51134272, }, { 4889821, -342524, -3532074, -972273, 13593571, 39178156, 53621592, 24791088, -41968808, -86767464, -58815284, -13867376, 55325620, 37217504, 3175592, -4268124, 3515431, -1946157, -15576773, -14221710, 1054415, -9167071, 4754529, 3166465, 12531641, 22008486, 20215338, 10042707, 641561, -4719096, -7508677, --7569343, -3358128, 4560182, 13816373, 22486838, 29368450, 33820720, 36604932, 39212516, 41504416, -41713260, 39269960, 35690640, 32337346, 29443074, 27575838, 27660664, 29154774, 30347166, 30591442, -30244622, 28885266, 25828860, 21779242, 17788680, 13510893, 8437463, 3421478, -920197, -5463199, --10562398, -15039902, -18501108, -21978422, -25392920, -27537720, -28916404, -30988726, -33019172, -33803004, --35061964, -38326676, -41264436, -43054900, -48853104, -60483340, -67997920, -62146568, -51134272, }, +342524, -3532074, -972273, 13593571, 39178156, 53621592, 24791088, -41968808, -86767464, -58815284, +13867376, 55325620, 37217504, 3175592, -4268124, 3515431, -1946157, -15576773, -14221710, 1054415, +9167071, 4754529, 3166465, 12531641, 22008486, 20215338, 10042707, 641561, -4719096, -7508677, +-7569343, -3358128, 4560182, 13816373, 22486838, 29368450, 33820720, 36604932, 39212516, 41504416, +41713260, 39269960, 35690640, 32337346, 29443074, 27575838, 27660664, 29154774, 30347166, 30591442, +30244622, 28885266, 25828860, 21779242, 17788680, 13510893, 8437463, 3421478, -920197, -5463199, +-10562398, -15039902, -18501108, -21978422, -25392920, -27537720, -28916404, -30988726, -33019172, -33803004, +-35061964, -38326676, -41264436, -43054900, -48853104, -60483340, -67997920, -62146568, -51134272, }, }, { { -19487878, --11583527, 4476967, 11824045, -3235184, -12584791, 29283624, 109043312, 139014672, 44827112, -139646032, --277102688, -236251648, -20240570, 204973024, 246190208, 78254840, -122839288, -173505936, -74751224, 31737660, -55711096, 30462592, 12132209, -1471563, -29320668, -54413476, -52803400, -35593468, -28465432, -34099356, --38771208, -36869072, -29972966, -16141561, 5407364, 28610388, 47796008, 62867584, 74308840, 81188304, -85045720, 88492968, 90726352, 90090696, 88160112, 86411520, 83108152, 77392088, 71344776, 65213172, -56276956, 44019656, 30570504, 16008417, -677531, -17338246, -31462782, -44628468, -58690728, -71698576, --82425792, -93255016, -104423536, -112355272, -116525680, -119679264, -120098024, -113599736, -102504224, -91154240, --75778256, -52141976, -26696442, -3887482, 26867168, 69371240, 98732168, 91459184, 67642512, }, +-11583527, 4476967, 11824045, -3235184, -12584791, 29283624, 109043312, 139014672, 44827112, -139646032, +-277102688, -236251648, -20240570, 204973024, 246190208, 78254840, -122839288, -173505936, -74751224, 31737660, +55711096, 30462592, 12132209, -1471563, -29320668, -54413476, -52803400, -35593468, -28465432, -34099356, +-38771208, -36869072, -29972966, -16141561, 5407364, 28610388, 47796008, 62867584, 74308840, 81188304, +85045720, 88492968, 90726352, 90090696, 88160112, 86411520, 83108152, 77392088, 71344776, 65213172, +56276956, 44019656, 30570504, 16008417, -677531, -17338246, -31462782, -44628468, -58690728, -71698576, +-82425792, -93255016, -104423536, -112355272, -116525680, -119679264, -120098024, -113599736, -102504224, -91154240, +-75778256, -52141976, -26696442, -3887482, 26867168, 69371240, 98732168, 91459184, 67642512, }, { 19487878, -11583527, -4476967, -11824045, 3235184, 12584791, -29283624, -109043312, -139014672, -44827112, 139646032, -277102688, 236251648, 20240570, -204973024, -246190208, -78254840, 122839288, 173505936, 74751224, -31737660, --55711096, -30462592, -12132209, 1471563, 29320668, 54413476, 52803400, 35593468, 28465432, 34099356, -38771208, 36869072, 29972966, 16141561, -5407364, -28610388, -47796008, -62867584, -74308840, -81188304, --85045720, -88492968, -90726352, -90090696, -88160112, -86411520, -83108152, -77392088, -71344776, -65213172, --56276956, -44019656, -30570504, -16008417, 677531, 17338246, 31462782, 44628468, 58690728, 71698576, -82425792, 93255016, 104423536, 112355272, 116525680, 119679264, 120098024, 113599736, 102504224, 91154240, -75778256, 52141976, 26696442, 3887482, -26867168, -69371240, -98732168, -91459184, -67642512, }, +11583527, -4476967, -11824045, 3235184, 12584791, -29283624, -109043312, -139014672, -44827112, 139646032, +277102688, 236251648, 20240570, -204973024, -246190208, -78254840, 122839288, 173505936, 74751224, -31737660, +-55711096, -30462592, -12132209, 1471563, 29320668, 54413476, 52803400, 35593468, 28465432, 34099356, +38771208, 36869072, 29972966, 16141561, -5407364, -28610388, -47796008, -62867584, -74308840, -81188304, +-85045720, -88492968, -90726352, -90090696, -88160112, -86411520, -83108152, -77392088, -71344776, -65213172, +-56276956, -44019656, -30570504, -16008417, 677531, 17338246, 31462782, 44628468, 58690728, 71698576, +82425792, 93255016, 104423536, 112355272, 116525680, 119679264, 120098024, 113599736, 102504224, 91154240, +75778256, 52141976, 26696442, 3887482, -26867168, -69371240, -98732168, -91459184, -67642512, }, }, { { -13447006, --15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, --46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, -6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, --42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, --9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, -24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, --22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, --103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, +-15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, +-46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, +6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, +-42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, +-9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, +24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, +-22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, +-103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, { -13447006, --15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, --46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, -6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, --42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, --9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, -24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, --22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, --103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, +-15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, +-46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, +6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, +-42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, +-9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, +24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, +-22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, +-103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, }, { { -17719424, --19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, --21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, --17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, -44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, --3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, --50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, --66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, --40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, +-19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, +-21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, +-17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, +44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, +-3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, +-50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, +-66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, +-40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, { -17719424, --19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, --21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, --17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, -44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, --3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, --50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, --66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, --40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, +-19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, +-21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, +-17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, +44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, +-3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, +-50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, +-66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, +-40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, }, { { 667867, --6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, --145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, --4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, --27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, --65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, --50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, --18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, --39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, +-6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, +-145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, +-4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, +-27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, +-65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, +-50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, +-18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, +-39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, { 667867, --6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, --145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, --4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, --27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, --65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, --50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, --18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, --39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, +-6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, +-145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, +-4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, +-27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, +-65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, +-50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, +-18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, +-39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, }, { { -6998649, --6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, --61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, -52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, -48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, --25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, --45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, --48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, --74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, +-6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, +-61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, +52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, +48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, +-25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, +-45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, +-48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, +-74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, { -6998649, --6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, --61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, -52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, -48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, --25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, --45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, --48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, --74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, +-6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, +-61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, +52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, +48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, +-25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, +-45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, +-48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, +-74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, }, }; const Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -95201168, --261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, -175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, --78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, -10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, -306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, -334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, -278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, -207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, +-261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, +175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, +-78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, +10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, +306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, +334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, +278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, +207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, { -95201168, --261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, -175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, --78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, -10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, -306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, -334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, -278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, -207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, +-261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, +175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, +-78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, +10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, +306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, +334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, +278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, +207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, }, { { 74828528, -179569904, 162359424, -934155, -252682048, -492879712, -647132416, -679114880, -573558016, -358526688, -111054432, -121229744, 356839296, 552497088, 514685248, 120202712, -382224160, -514852224, -117430312, 417020928, 584300224, -313930432, -70863736, -308226176, -408039072, -465042944, -484762208, -443226144, -373642816, -319809184, -276554016, --222665056, -163996352, -114508656, -70787504, -25404732, 19091666, 59804736, 99188512, 137526464, 172307648, -203887472, 233259136, 258566160, 279182016, 297342720, 313283520, 325154784, 333576160, 340281120, 344762400, -347125696, 349632896, 352061152, 351769088, 349595296, 348179584, 345620320, 339195584, 331745952, 325862912, -318082048, 306809376, 296772576, 288880576, 277835520, 264487840, 255271376, 247653184, 234710832, 221795328, -216443808, 209594400, 193566656, 182967216, 182154928, 155035440, 77873664, -201863, -14085345, }, +179569904, 162359424, -934155, -252682048, -492879712, -647132416, -679114880, -573558016, -358526688, -111054432, +121229744, 356839296, 552497088, 514685248, 120202712, -382224160, -514852224, -117430312, 417020928, 584300224, +313930432, -70863736, -308226176, -408039072, -465042944, -484762208, -443226144, -373642816, -319809184, -276554016, +-222665056, -163996352, -114508656, -70787504, -25404732, 19091666, 59804736, 99188512, 137526464, 172307648, +203887472, 233259136, 258566160, 279182016, 297342720, 313283520, 325154784, 333576160, 340281120, 344762400, +347125696, 349632896, 352061152, 351769088, 349595296, 348179584, 345620320, 339195584, 331745952, 325862912, +318082048, 306809376, 296772576, 288880576, 277835520, 264487840, 255271376, 247653184, 234710832, 221795328, +216443808, 209594400, 193566656, 182967216, 182154928, 155035440, 77873664, -201863, -14085345, }, { -74828528, --179569904, -162359424, 934155, 252682048, 492879712, 647132416, 679114880, 573558016, 358526688, 111054432, --121229744, -356839296, -552497088, -514685248, -120202712, 382224160, 514852224, 117430312, -417020928, -584300224, --313930432, 70863736, 308226176, 408039072, 465042944, 484762208, 443226144, 373642816, 319809184, 276554016, -222665056, 163996352, 114508656, 70787504, 25404732, -19091666, -59804736, -99188512, -137526464, -172307648, --203887472, -233259136, -258566160, -279182016, -297342720, -313283520, -325154784, -333576160, -340281120, -344762400, --347125696, -349632896, -352061152, -351769088, -349595296, -348179584, -345620320, -339195584, -331745952, -325862912, --318082048, -306809376, -296772576, -288880576, -277835520, -264487840, -255271376, -247653184, -234710832, -221795328, --216443808, -209594400, -193566656, -182967216, -182154928, -155035440, -77873664, 201863, 14085345, }, +-179569904, -162359424, 934155, 252682048, 492879712, 647132416, 679114880, 573558016, 358526688, 111054432, +-121229744, -356839296, -552497088, -514685248, -120202712, 382224160, 514852224, 117430312, -417020928, -584300224, +-313930432, 70863736, 308226176, 408039072, 465042944, 484762208, 443226144, 373642816, 319809184, 276554016, +222665056, 163996352, 114508656, 70787504, 25404732, -19091666, -59804736, -99188512, -137526464, -172307648, +-203887472, -233259136, -258566160, -279182016, -297342720, -313283520, -325154784, -333576160, -340281120, -344762400, +-347125696, -349632896, -352061152, -351769088, -349595296, -348179584, -345620320, -339195584, -331745952, -325862912, +-318082048, -306809376, -296772576, -288880576, -277835520, -264487840, -255271376, -247653184, -234710832, -221795328, +-216443808, -209594400, -193566656, -182967216, -182154928, -155035440, -77873664, 201863, 14085345, }, }, { { -9317395, --36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, --36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, -37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, --16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, -31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, -190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, -282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, -40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, +-36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, +-36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, +37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, +-16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, +31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, +190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, +282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, +40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, { -9317395, --36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, --36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, -37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, --16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, -31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, -190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, -282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, -40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, +-36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, +-36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, +37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, +-16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, +31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, +190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, +282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, +40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, }, { { 3206730, --760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, --43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, -141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, --182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, -228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, -224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, -150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, -65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, +-760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, +-43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, +141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, +-182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, +228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, +224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, +150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, +65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, { 3206730, --760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, --43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, -141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, --182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, -228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, -224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, -150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, -65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, +-760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, +-43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, +141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, +-182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, +228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, +224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, +150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, +65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, }, { { -2380486, --2201708, 6032282, 13530758, 10633265, 857383, -3568581, -1665374, -9763534, -41570452, -86909200, --112731080, -83443160, 8054675, 112200112, 139479056, 45113800, -96580928, -144677584, -42420856, 115654880, -192026912, 149331712, 53525492, -31199716, -96998080, -153833376, -192797328, -203361872, -193656848, -176281568, --152326384, -119745296, -82905752, -45694692, -5987722, 37148784, 78603808, 112886776, 138612016, 156223536, -166643120, 172502528, 176550000, 179240800, 180459488, 181491360, 182870048, 182965600, 180790208, 177448192, -173547280, 168362720, 162371232, 157321424, 153461872, 149761216, 146456768, 144288352, 142253072, 139164464, -135849280, 132984536, 129053032, 123152280, 116941224, 111209592, 104015520, 94634776, 85179936, 75937168, -64041184, 49254148, 35070020, 20654498, -1403381, -32753958, -58780924, -58144192, -24373402, }, +-2201708, 6032282, 13530758, 10633265, 857383, -3568581, -1665374, -9763534, -41570452, -86909200, +-112731080, -83443160, 8054675, 112200112, 139479056, 45113800, -96580928, -144677584, -42420856, 115654880, +192026912, 149331712, 53525492, -31199716, -96998080, -153833376, -192797328, -203361872, -193656848, -176281568, +-152326384, -119745296, -82905752, -45694692, -5987722, 37148784, 78603808, 112886776, 138612016, 156223536, +166643120, 172502528, 176550000, 179240800, 180459488, 181491360, 182870048, 182965600, 180790208, 177448192, +173547280, 168362720, 162371232, 157321424, 153461872, 149761216, 146456768, 144288352, 142253072, 139164464, +135849280, 132984536, 129053032, 123152280, 116941224, 111209592, 104015520, 94634776, 85179936, 75937168, +64041184, 49254148, 35070020, 20654498, -1403381, -32753958, -58780924, -58144192, -24373402, }, { 2380486, -2201708, -6032282, -13530758, -10633265, -857383, 3568581, 1665374, 9763534, 41570452, 86909200, -112731080, 83443160, -8054675, -112200112, -139479056, -45113800, 96580928, 144677584, 42420856, -115654880, --192026912, -149331712, -53525492, 31199716, 96998080, 153833376, 192797328, 203361872, 193656848, 176281568, -152326384, 119745296, 82905752, 45694692, 5987722, -37148784, -78603808, -112886776, -138612016, -156223536, --166643120, -172502528, -176550000, -179240800, -180459488, -181491360, -182870048, -182965600, -180790208, -177448192, --173547280, -168362720, -162371232, -157321424, -153461872, -149761216, -146456768, -144288352, -142253072, -139164464, --135849280, -132984536, -129053032, -123152280, -116941224, -111209592, -104015520, -94634776, -85179936, -75937168, --64041184, -49254148, -35070020, -20654498, 1403381, 32753958, 58780924, 58144192, 24373402, }, +2201708, -6032282, -13530758, -10633265, -857383, 3568581, 1665374, 9763534, 41570452, 86909200, +112731080, 83443160, -8054675, -112200112, -139479056, -45113800, 96580928, 144677584, 42420856, -115654880, +-192026912, -149331712, -53525492, 31199716, 96998080, 153833376, 192797328, 203361872, 193656848, 176281568, +152326384, 119745296, 82905752, 45694692, 5987722, -37148784, -78603808, -112886776, -138612016, -156223536, +-166643120, -172502528, -176550000, -179240800, -180459488, -181491360, -182870048, -182965600, -180790208, -177448192, +-173547280, -168362720, -162371232, -157321424, -153461872, -149761216, -146456768, -144288352, -142253072, -139164464, +-135849280, -132984536, -129053032, -123152280, -116941224, -111209592, -104015520, -94634776, -85179936, -75937168, +-64041184, -49254148, -35070020, -20654498, 1403381, 32753958, 58780924, 58144192, 24373402, }, }, { { -11930882, --12633646, 14035416, 19539416, -11880416, -24995100, 24242942, 89128624, 82855824, -7707319, -102444632, --119779120, -53979684, 38026028, 91971352, 73959872, 350577, -63051732, -51099912, 29446296, 99244344, -95165736, 38272452, -6125697, -10269267, 4490389, 17663054, 31674846, 48226576, 56620552, 51063404, -37772628, 21715892, 2442226, -17212082, -32573032, -45621144, -60280940, -72937672, -77700256, -75676248, --70407400, -61078728, -47806744, -35735200, -27477054, -19511500, -10116795, -1858110, 5894843, 16966732, -30312806, 41998336, 53784800, 69578472, 86721296, 100822208, 113888040, 128117800, 139034000, 143659680, -146247392, 148334752, 144509008, 133968080, 122643864, 109887272, 88977760, 62406948, 38290708, 13117904, --20552492, -54335632, -77318536, -99966976, -132959840, -152890640, -128148936, -70697848, -19562502, }, +-12633646, 14035416, 19539416, -11880416, -24995100, 24242942, 89128624, 82855824, -7707319, -102444632, +-119779120, -53979684, 38026028, 91971352, 73959872, 350577, -63051732, -51099912, 29446296, 99244344, +95165736, 38272452, -6125697, -10269267, 4490389, 17663054, 31674846, 48226576, 56620552, 51063404, +37772628, 21715892, 2442226, -17212082, -32573032, -45621144, -60280940, -72937672, -77700256, -75676248, +-70407400, -61078728, -47806744, -35735200, -27477054, -19511500, -10116795, -1858110, 5894843, 16966732, +30312806, 41998336, 53784800, 69578472, 86721296, 100822208, 113888040, 128117800, 139034000, 143659680, +146247392, 148334752, 144509008, 133968080, 122643864, 109887272, 88977760, 62406948, 38290708, 13117904, +-20552492, -54335632, -77318536, -99966976, -132959840, -152890640, -128148936, -70697848, -19562502, }, { 11930882, -12633646, -14035416, -19539416, 11880416, 24995100, -24242942, -89128624, -82855824, 7707319, 102444632, -119779120, 53979684, -38026028, -91971352, -73959872, -350577, 63051732, 51099912, -29446296, -99244344, --95165736, -38272452, 6125697, 10269267, -4490389, -17663054, -31674846, -48226576, -56620552, -51063404, --37772628, -21715892, -2442226, 17212082, 32573032, 45621144, 60280940, 72937672, 77700256, 75676248, -70407400, 61078728, 47806744, 35735200, 27477054, 19511500, 10116795, 1858110, -5894843, -16966732, --30312806, -41998336, -53784800, -69578472, -86721296, -100822208, -113888040, -128117800, -139034000, -143659680, --146247392, -148334752, -144509008, -133968080, -122643864, -109887272, -88977760, -62406948, -38290708, -13117904, -20552492, 54335632, 77318536, 99966976, 132959840, 152890640, 128148936, 70697848, 19562502, }, +12633646, -14035416, -19539416, 11880416, 24995100, -24242942, -89128624, -82855824, 7707319, 102444632, +119779120, 53979684, -38026028, -91971352, -73959872, -350577, 63051732, 51099912, -29446296, -99244344, +-95165736, -38272452, 6125697, 10269267, -4490389, -17663054, -31674846, -48226576, -56620552, -51063404, +-37772628, -21715892, -2442226, 17212082, 32573032, 45621144, 60280940, 72937672, 77700256, 75676248, +70407400, 61078728, 47806744, 35735200, 27477054, 19511500, 10116795, 1858110, -5894843, -16966732, +-30312806, -41998336, -53784800, -69578472, -86721296, -100822208, -113888040, -128117800, -139034000, -143659680, +-146247392, -148334752, -144509008, -133968080, -122643864, -109887272, -88977760, -62406948, -38290708, -13117904, +20552492, 54335632, 77318536, 99966976, 132959840, 152890640, 128148936, 70697848, 19562502, }, }, { { 2073396, --2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, -210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, --130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, -5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, --35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, --84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, --18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, -119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, +-2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, +210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, +-130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, +5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, +-35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, +-84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, +-18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, +119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, { 2073396, --2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, -210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, --130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, -5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, --35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, --84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, --18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, -119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, +-2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, +210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, +-130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, +5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, +-35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, +-84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, +-18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, +119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, }, { { -18935438, --43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, --28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, -25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, --76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, --32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, -61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, -72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, -66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, +-43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, +-28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, +25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, +-76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, +-32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, +61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, +72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, +66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, { -18935438, --43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, --28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, -25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, --76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, --32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, -61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, -72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, -66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, +-43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, +-28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, +25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, +-76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, +-32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, +61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, +72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, +66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, }, { { 22884122, -33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, -370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, --228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, -59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, -72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, --36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, --94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, --63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, +33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, +370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, +-228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, +59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, +72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, +-36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, +-94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, +-63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, { 22884122, -33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, -370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, --228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, -59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, -72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, --36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, --94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, --63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, +33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, +370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, +-228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, +59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, +72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, +-36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, +-94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, +-63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, }, { { 2676838, -11518565, 24768540, 38539280, 49642304, 43461848, -1695438, -78177528, -148516208, -194812208, -212254592, --142130128, 80136040, 349703232, 395369984, 95388536, -293716704, -390215488, -136282000, 164463424, 246670704, -150524640, 59037008, 36267776, 23570780, -11730093, -40562744, -45773612, -45122928, -48447768, -44677324, --29554206, -13287018, -2261300, 6082748, 13103408, 17475686, 20345260, 23156316, 24241332, 22792318, -21519396, 21908092, 21725556, 19693498, 17955110, 18005040, 18484466, 18526342, 19449760, 21778168, -23864986, 24606942, 24705188, 24425480, 22779432, 19651086, 16250009, 12910135, 8831527, 4265977, -374736, -3143379, -7501161, -12150462, -15678778, -18737868, -22670448, -26356066, -28297392, -30069066, --33279018, -35760436, -35962300, -37124624, -40197672, -37626060, -23779086, -7109245, -69793, }, +11518565, 24768540, 38539280, 49642304, 43461848, -1695438, -78177528, -148516208, -194812208, -212254592, +-142130128, 80136040, 349703232, 395369984, 95388536, -293716704, -390215488, -136282000, 164463424, 246670704, +150524640, 59037008, 36267776, 23570780, -11730093, -40562744, -45773612, -45122928, -48447768, -44677324, +-29554206, -13287018, -2261300, 6082748, 13103408, 17475686, 20345260, 23156316, 24241332, 22792318, +21519396, 21908092, 21725556, 19693498, 17955110, 18005040, 18484466, 18526342, 19449760, 21778168, +23864986, 24606942, 24705188, 24425480, 22779432, 19651086, 16250009, 12910135, 8831527, 4265977, +374736, -3143379, -7501161, -12150462, -15678778, -18737868, -22670448, -26356066, -28297392, -30069066, +-33279018, -35760436, -35962300, -37124624, -40197672, -37626060, -23779086, -7109245, -69793, }, { -2676838, --11518565, -24768540, -38539280, -49642304, -43461848, 1695438, 78177528, 148516208, 194812208, 212254592, -142130128, -80136040, -349703232, -395369984, -95388536, 293716704, 390215488, 136282000, -164463424, -246670704, --150524640, -59037008, -36267776, -23570780, 11730093, 40562744, 45773612, 45122928, 48447768, 44677324, -29554206, 13287018, 2261300, -6082748, -13103408, -17475686, -20345260, -23156316, -24241332, -22792318, --21519396, -21908092, -21725556, -19693498, -17955110, -18005040, -18484466, -18526342, -19449760, -21778168, --23864986, -24606942, -24705188, -24425480, -22779432, -19651086, -16250009, -12910135, -8831527, -4265977, --374736, 3143379, 7501161, 12150462, 15678778, 18737868, 22670448, 26356066, 28297392, 30069066, -33279018, 35760436, 35962300, 37124624, 40197672, 37626060, 23779086, 7109245, 69793, }, +-11518565, -24768540, -38539280, -49642304, -43461848, 1695438, 78177528, 148516208, 194812208, 212254592, +142130128, -80136040, -349703232, -395369984, -95388536, 293716704, 390215488, 136282000, -164463424, -246670704, +-150524640, -59037008, -36267776, -23570780, 11730093, 40562744, 45773612, 45122928, 48447768, 44677324, +29554206, 13287018, 2261300, -6082748, -13103408, -17475686, -20345260, -23156316, -24241332, -22792318, +-21519396, -21908092, -21725556, -19693498, -17955110, -18005040, -18484466, -18526342, -19449760, -21778168, +-23864986, -24606942, -24705188, -24425480, -22779432, -19651086, -16250009, -12910135, -8831527, -4265977, +-374736, 3143379, 7501161, 12150462, 15678778, 18737868, 22670448, 26356066, 28297392, 30069066, +33279018, 35760436, 35962300, 37124624, 40197672, 37626060, 23779086, 7109245, 69793, }, }, { { 1826435, -2365990, -3248606, -13448616, -22016002, -13940390, 23158464, 68848328, 71952512, 11164231, -61750356, --75194680, -26665842, 19692962, 22051436, 4394826, 2568391, 10317585, 3354906, -14431627, -20328080, --11798812, -7087770, -13144747, -16881906, -8556112, 4356708, 10319196, 7961259, 2301566, -4439386, --12662100, -20942798, -26485990, -28083718, -26211112, -21811454, -16364362, -11366631, -6633040, -730144, -6294275, 12436615, 16386374, 18624052, 19660750, 19497540, 19136764, 20284056, 23205708, 26865020, -30972620, 35785668, 40469328, 43934832, 46569792, 49092012, 50889456, 51408612, 51532628, 51770464, -51113868, 49217640, 47254840, 45489608, 42914776, 39926552, 37963216, 36498096, 34237868, 32390496, -32307818, 31949188, 29954176, 29531122, 31299574, 27438398, 13022878, -1730335, -3430605, }, +2365990, -3248606, -13448616, -22016002, -13940390, 23158464, 68848328, 71952512, 11164231, -61750356, +-75194680, -26665842, 19692962, 22051436, 4394826, 2568391, 10317585, 3354906, -14431627, -20328080, +-11798812, -7087770, -13144747, -16881906, -8556112, 4356708, 10319196, 7961259, 2301566, -4439386, +-12662100, -20942798, -26485990, -28083718, -26211112, -21811454, -16364362, -11366631, -6633040, -730144, +6294275, 12436615, 16386374, 18624052, 19660750, 19497540, 19136764, 20284056, 23205708, 26865020, +30972620, 35785668, 40469328, 43934832, 46569792, 49092012, 50889456, 51408612, 51532628, 51770464, +51113868, 49217640, 47254840, 45489608, 42914776, 39926552, 37963216, 36498096, 34237868, 32390496, +32307818, 31949188, 29954176, 29531122, 31299574, 27438398, 13022878, -1730335, -3430605, }, { -1826435, --2365990, 3248606, 13448616, 22016002, 13940390, -23158464, -68848328, -71952512, -11164231, 61750356, -75194680, 26665842, -19692962, -22051436, -4394826, -2568391, -10317585, -3354906, 14431627, 20328080, -11798812, 7087770, 13144747, 16881906, 8556112, -4356708, -10319196, -7961259, -2301566, 4439386, -12662100, 20942798, 26485990, 28083718, 26211112, 21811454, 16364362, 11366631, 6633040, 730144, --6294275, -12436615, -16386374, -18624052, -19660750, -19497540, -19136764, -20284056, -23205708, -26865020, --30972620, -35785668, -40469328, -43934832, -46569792, -49092012, -50889456, -51408612, -51532628, -51770464, --51113868, -49217640, -47254840, -45489608, -42914776, -39926552, -37963216, -36498096, -34237868, -32390496, --32307818, -31949188, -29954176, -29531122, -31299574, -27438398, -13022878, 1730335, 3430605, }, +-2365990, 3248606, 13448616, 22016002, 13940390, -23158464, -68848328, -71952512, -11164231, 61750356, +75194680, 26665842, -19692962, -22051436, -4394826, -2568391, -10317585, -3354906, 14431627, 20328080, +11798812, 7087770, 13144747, 16881906, 8556112, -4356708, -10319196, -7961259, -2301566, 4439386, +12662100, 20942798, 26485990, 28083718, 26211112, 21811454, 16364362, 11366631, 6633040, 730144, +-6294275, -12436615, -16386374, -18624052, -19660750, -19497540, -19136764, -20284056, -23205708, -26865020, +-30972620, -35785668, -40469328, -43934832, -46569792, -49092012, -50889456, -51408612, -51532628, -51770464, +-51113868, -49217640, -47254840, -45489608, -42914776, -39926552, -37963216, -36498096, -34237868, -32390496, +-32307818, -31949188, -29954176, -29531122, -31299574, -27438398, -13022878, 1730335, 3430605, }, }, { { 6216965, -17775796, 19325742, 5274757, -1144072, 26213260, 59710784, 29491930, -86476480, -207889840, -211848720, --52057152, 175533696, 290100352, 183276992, -57808112, -215628832, -163201776, 7863012, 113510616, 89436248, -18616536, -17101486, -24245090, -34355444, -37672768, -15455440, 15083388, 26690538, 22615150, 23285166, -34309272, 48685600, 63653564, 78474424, 87381112, 86266568, 78198472, 67035848, 53475564, 39097624, -26377004, 14476187, 1400159, -11567958, -22792318, -33887828, -45995880, -57177824, -66847408, -77320688, --88754424, -98337568, -105320112, -110883168, -113760800, -112169512, -108133320, -104066520, -98369784, -89551680, --79765592, -69713224, -56391308, -39460548, -22283900, -4645007, 16423955, 38332048, 56144348, 72164576, -90016608, 103996728, 108877424, 111673448, 114932784, 100724496, 57576184, 11511049, -3173444, }, +17775796, 19325742, 5274757, -1144072, 26213260, 59710784, 29491930, -86476480, -207889840, -211848720, +-52057152, 175533696, 290100352, 183276992, -57808112, -215628832, -163201776, 7863012, 113510616, 89436248, +18616536, -17101486, -24245090, -34355444, -37672768, -15455440, 15083388, 26690538, 22615150, 23285166, +34309272, 48685600, 63653564, 78474424, 87381112, 86266568, 78198472, 67035848, 53475564, 39097624, +26377004, 14476187, 1400159, -11567958, -22792318, -33887828, -45995880, -57177824, -66847408, -77320688, +-88754424, -98337568, -105320112, -110883168, -113760800, -112169512, -108133320, -104066520, -98369784, -89551680, +-79765592, -69713224, -56391308, -39460548, -22283900, -4645007, 16423955, 38332048, 56144348, 72164576, +90016608, 103996728, 108877424, 111673448, 114932784, 100724496, 57576184, 11511049, -3173444, }, { -6216965, --17775796, -19325742, -5274757, 1144072, -26213260, -59710784, -29491930, 86476480, 207889840, 211848720, -52057152, -175533696, -290100352, -183276992, 57808112, 215628832, 163201776, -7863012, -113510616, -89436248, --18616536, 17101486, 24245090, 34355444, 37672768, 15455440, -15083388, -26690538, -22615150, -23285166, --34309272, -48685600, -63653564, -78474424, -87381112, -86266568, -78198472, -67035848, -53475564, -39097624, --26377004, -14476187, -1400159, 11567958, 22792318, 33887828, 45995880, 57177824, 66847408, 77320688, -88754424, 98337568, 105320112, 110883168, 113760800, 112169512, 108133320, 104066520, 98369784, 89551680, -79765592, 69713224, 56391308, 39460548, 22283900, 4645007, -16423955, -38332048, -56144348, -72164576, --90016608, -103996728, -108877424, -111673448, -114932784, -100724496, -57576184, -11511049, 3173444, }, +-17775796, -19325742, -5274757, 1144072, -26213260, -59710784, -29491930, 86476480, 207889840, 211848720, +52057152, -175533696, -290100352, -183276992, 57808112, 215628832, 163201776, -7863012, -113510616, -89436248, +-18616536, 17101486, 24245090, 34355444, 37672768, 15455440, -15083388, -26690538, -22615150, -23285166, +-34309272, -48685600, -63653564, -78474424, -87381112, -86266568, -78198472, -67035848, -53475564, -39097624, +-26377004, -14476187, -1400159, 11567958, 22792318, 33887828, 45995880, 57177824, 66847408, 77320688, +88754424, 98337568, 105320112, 110883168, 113760800, 112169512, 108133320, 104066520, 98369784, 89551680, +79765592, 69713224, 56391308, 39460548, 22283900, 4645007, -16423955, -38332048, -56144348, -72164576, +-90016608, -103996728, -108877424, -111673448, -114932784, -100724496, -57576184, -11511049, 3173444, }, }, { { 189515, -2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, -46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, -35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, --37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, -12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, --15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, --73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, --13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, +2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, +46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, +35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, +-37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, +12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, +-15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, +-73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, +-13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, { 189515, -2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, -46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, -35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, --37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, -12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, --15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, --73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, --13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, +2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, +46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, +35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, +-37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, +12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, +-15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, +-73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, +-13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, }, { { 1822677, -10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, -101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, --43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, -3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, --47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, --49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, --14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, -62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, +10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, +101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, +-43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, +3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, +-47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, +-49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, +-14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, +62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, { 1822677, -10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, -101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, --43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, -3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, --47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, --49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, --14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, -62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, +10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, +101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, +-43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, +3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, +-47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, +-49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, +-14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, +62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, }, { { -4294968, --7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, -33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, -41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, --118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, -8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, -26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, -8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, -51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, +-7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, +33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, +41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, +-118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, +8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, +26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, +8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, +51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, { -4294968, --7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, -33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, -41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, --118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, -8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, -26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, -8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, -51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, +-7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, +33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, +41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, +-118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, +8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, +26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, +8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, +51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, }, { { 130997, -32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, --13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, --11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, --20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, --84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, --37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, --25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, --7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, +32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, +-13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, +-11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, +-20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, +-84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, +-37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, +-25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, +-7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, { 130997, -32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, --13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, --11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, --20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, --84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, --37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, --25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, --7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, +32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, +-13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, +-11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, +-20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, +-84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, +-37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, +-25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, +-7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, }, }; const Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 512962432, -341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, -71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, -107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, --307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, --319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, --238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, --124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, --31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, -55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, -138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, -184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, -235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, -286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, -318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, -339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, -364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, -376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, -383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, -387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, -402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, -415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, -415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, -388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, -462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, +341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, +71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, +107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, +-307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, +-319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, +-238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, +-124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, +-31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, +55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, +138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, +184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, +235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, +286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, +318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, +339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, +364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, +376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, +383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, +387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, +402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, +415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, +415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, +388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, +462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, { 512962432, -341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, -71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, -107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, --307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, --319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, --238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, --124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, --31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, -55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, -138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, -184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, -235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, -286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, -318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, -339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, -364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, -376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, -383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, -387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, -402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, -415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, -415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, -388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, -462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, +341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, +71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, +107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, +-307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, +-319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, +-238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, +-124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, +-31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, +55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, +138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, +184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, +235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, +286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, +318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, +339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, +364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, +376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, +383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, +387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, +402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, +415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, +415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, +388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, +462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, }, { { 52245056, -222357440, 401378656, 405117408, 177587776, -175398416, -484049792, -639197952, -636222080, -529849184, -372046176, --190520992, -1207423, 180006368, 338932512, 467017568, 559677696, 613684800, 628635008, 609800512, 567096768, -509938784, 443115008, 367884352, 286288032, 202992496, 122816200, 47916804, -21818970, -86701968, -146555552, --201343232, -251326992, -296677536, -337539328, -374389088, -407893568, -438432960, -465938464, -490061664, -510374176, --526579648, -538713472, -547120320, -552200192, -554222592, -553347456, -549751488, -543766464, -535939456, -526901760, --517067360, -506422816, -494632608, -481365440, -466567136, -450447584, -433289184, -415364128, -397026784, -378695328, --360628000, -342847360, -325416256, -308596096, -292586048, -277312064, -262696848, -248960464, -236373520, -224892000, --214347328, -204829680, -196494224, -189083248, -182072784, -175281904, -168897440, -162823824, -156483920, -149478288, --142028128, -134456640, -126554432, -117843168, -108263240, -98220000, -88029112, -77636368, -66831840, -55431384, --43236900, -30057792, -15797427, -396748, 16277389, 34321620, 53564684, 73533064, 93622768, 113299624, -132184064, 149990464, 166375216, 180912608, 193301984, 203518096, 211669408, 217803168, 221992368, 224550016, -226047344, 227133440, 228310256, 229737808, 231250704, 232713680, 234367776, 236709600, 240074720, 244437856, -249490896, 254743104, 259698416, 264169472, 268354384, 272495264, 276597504, 280563904, 284394496, 288109632, -291644384, 294928960, 297945088, 300674560, 303140928, 305479552, 307833728, 310224960, 312618848, 315017056, -317417952, 319834400, 322408160, 325350208, 328767936, 332695136, 337183936, 342184864, 347478432, 352943776, -358699552, 364821504, 371184480, 377744512, 384615936, 391724640, 398746368, 405488928, 411961440, 418068352, -423652352, 428781088, 433596800, 438024384, 441962336, 445481536, 448564768, 451039200, 453010080, 454851008, -456647904, 458242400, 459807392, 461649376, 463540256, 464983360, 465905152, 466422176, 466403936, 465932000, -465512192, 465289920, 464921632, 464530784, 464633856, 465020416, 465081600, 465055840, 465463328, 465917504, -466071584, 466539200, 467415936, 467811584, 468096672, 469604192, 471310368, 471249728, 471386624, 474611072, -477533792, 475729376, 474826336, 482493408, 490060064, 481175936, 461027168, 453999520, 466616000, 478818528, -481039552, 489577952, 509314944, 512657504, 480248736, 437299072, 422137312, 437084864, 454490208, 455429728, -441966080, 425956064, 420154624, 421830208, 396297696, 307272160, 179973088, 99357624, 118199648, 194585104, -249248224, 258870032, 258446432, 271055936, 276278080, 246866128, 186275952, 122813520, 84121232, }, +222357440, 401378656, 405117408, 177587776, -175398416, -484049792, -639197952, -636222080, -529849184, -372046176, +-190520992, -1207423, 180006368, 338932512, 467017568, 559677696, 613684800, 628635008, 609800512, 567096768, +509938784, 443115008, 367884352, 286288032, 202992496, 122816200, 47916804, -21818970, -86701968, -146555552, +-201343232, -251326992, -296677536, -337539328, -374389088, -407893568, -438432960, -465938464, -490061664, -510374176, +-526579648, -538713472, -547120320, -552200192, -554222592, -553347456, -549751488, -543766464, -535939456, -526901760, +-517067360, -506422816, -494632608, -481365440, -466567136, -450447584, -433289184, -415364128, -397026784, -378695328, +-360628000, -342847360, -325416256, -308596096, -292586048, -277312064, -262696848, -248960464, -236373520, -224892000, +-214347328, -204829680, -196494224, -189083248, -182072784, -175281904, -168897440, -162823824, -156483920, -149478288, +-142028128, -134456640, -126554432, -117843168, -108263240, -98220000, -88029112, -77636368, -66831840, -55431384, +-43236900, -30057792, -15797427, -396748, 16277389, 34321620, 53564684, 73533064, 93622768, 113299624, +132184064, 149990464, 166375216, 180912608, 193301984, 203518096, 211669408, 217803168, 221992368, 224550016, +226047344, 227133440, 228310256, 229737808, 231250704, 232713680, 234367776, 236709600, 240074720, 244437856, +249490896, 254743104, 259698416, 264169472, 268354384, 272495264, 276597504, 280563904, 284394496, 288109632, +291644384, 294928960, 297945088, 300674560, 303140928, 305479552, 307833728, 310224960, 312618848, 315017056, +317417952, 319834400, 322408160, 325350208, 328767936, 332695136, 337183936, 342184864, 347478432, 352943776, +358699552, 364821504, 371184480, 377744512, 384615936, 391724640, 398746368, 405488928, 411961440, 418068352, +423652352, 428781088, 433596800, 438024384, 441962336, 445481536, 448564768, 451039200, 453010080, 454851008, +456647904, 458242400, 459807392, 461649376, 463540256, 464983360, 465905152, 466422176, 466403936, 465932000, +465512192, 465289920, 464921632, 464530784, 464633856, 465020416, 465081600, 465055840, 465463328, 465917504, +466071584, 466539200, 467415936, 467811584, 468096672, 469604192, 471310368, 471249728, 471386624, 474611072, +477533792, 475729376, 474826336, 482493408, 490060064, 481175936, 461027168, 453999520, 466616000, 478818528, +481039552, 489577952, 509314944, 512657504, 480248736, 437299072, 422137312, 437084864, 454490208, 455429728, +441966080, 425956064, 420154624, 421830208, 396297696, 307272160, 179973088, 99357624, 118199648, 194585104, +249248224, 258870032, 258446432, 271055936, 276278080, 246866128, 186275952, 122813520, 84121232, }, { -52245056, --222357440, -401378656, -405117408, -177587776, 175398416, 484049792, 639197952, 636222080, 529849184, 372046176, -190520992, 1207423, -180006368, -338932512, -467017568, -559677696, -613684800, -628635008, -609800512, -567096768, --509938784, -443115008, -367884352, -286288032, -202992496, -122816200, -47916804, 21818970, 86701968, 146555552, -201343232, 251326992, 296677536, 337539328, 374389088, 407893568, 438432960, 465938464, 490061664, 510374176, -526579648, 538713472, 547120320, 552200192, 554222592, 553347456, 549751488, 543766464, 535939456, 526901760, -517067360, 506422816, 494632608, 481365440, 466567136, 450447584, 433289184, 415364128, 397026784, 378695328, -360628000, 342847360, 325416256, 308596096, 292586048, 277312064, 262696848, 248960464, 236373520, 224892000, -214347328, 204829680, 196494224, 189083248, 182072784, 175281904, 168897440, 162823824, 156483920, 149478288, -142028128, 134456640, 126554432, 117843168, 108263240, 98220000, 88029112, 77636368, 66831840, 55431384, -43236900, 30057792, 15797427, 396748, -16277389, -34321620, -53564684, -73533064, -93622768, -113299624, --132184064, -149990464, -166375216, -180912608, -193301984, -203518096, -211669408, -217803168, -221992368, -224550016, --226047344, -227133440, -228310256, -229737808, -231250704, -232713680, -234367776, -236709600, -240074720, -244437856, --249490896, -254743104, -259698416, -264169472, -268354384, -272495264, -276597504, -280563904, -284394496, -288109632, --291644384, -294928960, -297945088, -300674560, -303140928, -305479552, -307833728, -310224960, -312618848, -315017056, --317417952, -319834400, -322408160, -325350208, -328767936, -332695136, -337183936, -342184864, -347478432, -352943776, --358699552, -364821504, -371184480, -377744512, -384615936, -391724640, -398746368, -405488928, -411961440, -418068352, --423652352, -428781088, -433596800, -438024384, -441962336, -445481536, -448564768, -451039200, -453010080, -454851008, --456647904, -458242400, -459807392, -461649376, -463540256, -464983360, -465905152, -466422176, -466403936, -465932000, --465512192, -465289920, -464921632, -464530784, -464633856, -465020416, -465081600, -465055840, -465463328, -465917504, --466071584, -466539200, -467415936, -467811584, -468096672, -469604192, -471310368, -471249728, -471386624, -474611072, --477533792, -475729376, -474826336, -482493408, -490060064, -481175936, -461027168, -453999520, -466616000, -478818528, --481039552, -489577952, -509314944, -512657504, -480248736, -437299072, -422137312, -437084864, -454490208, -455429728, --441966080, -425956064, -420154624, -421830208, -396297696, -307272160, -179973088, -99357624, -118199648, -194585104, --249248224, -258870032, -258446432, -271055936, -276278080, -246866128, -186275952, -122813520, -84121232, }, +-222357440, -401378656, -405117408, -177587776, 175398416, 484049792, 639197952, 636222080, 529849184, 372046176, +190520992, 1207423, -180006368, -338932512, -467017568, -559677696, -613684800, -628635008, -609800512, -567096768, +-509938784, -443115008, -367884352, -286288032, -202992496, -122816200, -47916804, 21818970, 86701968, 146555552, +201343232, 251326992, 296677536, 337539328, 374389088, 407893568, 438432960, 465938464, 490061664, 510374176, +526579648, 538713472, 547120320, 552200192, 554222592, 553347456, 549751488, 543766464, 535939456, 526901760, +517067360, 506422816, 494632608, 481365440, 466567136, 450447584, 433289184, 415364128, 397026784, 378695328, +360628000, 342847360, 325416256, 308596096, 292586048, 277312064, 262696848, 248960464, 236373520, 224892000, +214347328, 204829680, 196494224, 189083248, 182072784, 175281904, 168897440, 162823824, 156483920, 149478288, +142028128, 134456640, 126554432, 117843168, 108263240, 98220000, 88029112, 77636368, 66831840, 55431384, +43236900, 30057792, 15797427, 396748, -16277389, -34321620, -53564684, -73533064, -93622768, -113299624, +-132184064, -149990464, -166375216, -180912608, -193301984, -203518096, -211669408, -217803168, -221992368, -224550016, +-226047344, -227133440, -228310256, -229737808, -231250704, -232713680, -234367776, -236709600, -240074720, -244437856, +-249490896, -254743104, -259698416, -264169472, -268354384, -272495264, -276597504, -280563904, -284394496, -288109632, +-291644384, -294928960, -297945088, -300674560, -303140928, -305479552, -307833728, -310224960, -312618848, -315017056, +-317417952, -319834400, -322408160, -325350208, -328767936, -332695136, -337183936, -342184864, -347478432, -352943776, +-358699552, -364821504, -371184480, -377744512, -384615936, -391724640, -398746368, -405488928, -411961440, -418068352, +-423652352, -428781088, -433596800, -438024384, -441962336, -445481536, -448564768, -451039200, -453010080, -454851008, +-456647904, -458242400, -459807392, -461649376, -463540256, -464983360, -465905152, -466422176, -466403936, -465932000, +-465512192, -465289920, -464921632, -464530784, -464633856, -465020416, -465081600, -465055840, -465463328, -465917504, +-466071584, -466539200, -467415936, -467811584, -468096672, -469604192, -471310368, -471249728, -471386624, -474611072, +-477533792, -475729376, -474826336, -482493408, -490060064, -481175936, -461027168, -453999520, -466616000, -478818528, +-481039552, -489577952, -509314944, -512657504, -480248736, -437299072, -422137312, -437084864, -454490208, -455429728, +-441966080, -425956064, -420154624, -421830208, -396297696, -307272160, -179973088, -99357624, -118199648, -194585104, +-249248224, -258870032, -258446432, -271055936, -276278080, -246866128, -186275952, -122813520, -84121232, }, }, { { 62659816, -38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, --51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, -62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, --82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, --72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, --156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, --23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, -274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, -240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, -81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, -65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, -28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, --29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, -31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, -69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, -90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, -83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, -64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, -44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, --29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, --89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, --42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, --2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, --45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, +38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, +-51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, +62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, +-82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, +-72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, +-156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, +-23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, +274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, +240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, +81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, +65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, +28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, +-29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, +31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, +69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, +90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, +83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, +64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, +44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, +-29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, +-89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, +-42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, +-2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, +-45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, { 62659816, -38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, --51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, -62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, --82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, --72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, --156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, --23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, -274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, -240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, -81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, -65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, -28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, --29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, -31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, -69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, -90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, -83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, -64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, -44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, --29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, --89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, --42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, --2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, --45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, +38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, +-51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, +62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, +-82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, +-72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, +-156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, +-23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, +274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, +240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, +81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, +65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, +28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, +-29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, +31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, +69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, +90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, +83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, +64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, +44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, +-29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, +-89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, +-42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, +-2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, +-45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, }, { { 30986042, -41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, --82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, -164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, --111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, --277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, --109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, --9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, -78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, -122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, -26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, --101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, --88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, -1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, -66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, -162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, -181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, -178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, -209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, -240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, -206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, -166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, -202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, -261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, -192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, +41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, +-82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, +164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, +-111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, +-277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, +-109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, +-9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, +78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, +122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, +26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, +-101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, +-88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, +1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, +66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, +162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, +181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, +178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, +209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, +240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, +206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, +166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, +202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, +261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, +192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, { 30986042, -41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, --82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, -164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, --111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, --277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, --109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, --9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, -78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, -122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, -26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, --101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, --88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, -1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, -66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, -162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, -181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, -178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, -209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, -240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, -206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, -166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, -202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, -261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, -192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, +41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, +-82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, +164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, +-111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, +-277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, +-109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, +-9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, +78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, +122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, +26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, +-101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, +-88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, +1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, +66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, +162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, +181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, +178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, +209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, +240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, +206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, +166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, +202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, +261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, +192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, }, { { 11927661, -8254391, 9876814, 18951544, 25066502, 20257214, 11820287, 10667088, 10446971, -9302362, -55198920, --104534136, -125722816, -109843248, -74312064, -38511360, -5645198, 30492658, 71030704, 110766136, 145943520, -176026016, 199234400, 212091920, 213726160, 206675968, 192827392, 171563536, 142487152, 107303312, 68175624, -26241176, -17527762, -61694520, -105109664, -146663472, -183782720, -212766768, -231493904, -240935856, -243704496, --242107840, -237774224, -231883680, -225010112, -217201872, -208442816, -198703984, -187731952, -175365664, -161985232, --148284288, -134872704, -122400664, -111573584, -102565432, -94773824, -87489560, -80411448, -73331736, -65885872, --57874148, -49357228, -40272836, -30412664, -19817516, -8664023, 3191161, 16006269, 29560650, 43398496, -57560076, 72373424, 87538952, 102159016, 115723064, 128294432, 139524704, 148304144, 153923568, 156971920, -158372624, 157951712, 154864704, 149269984, 142480704, 135179808, 126514704, 115569520, 102871984, 89632744, -76167488, 62046708, 47436840, 33361158, 20686710, 9515500, -448824, -9395241, -17293148, -24054502, --29786136, -34851512, -39529268, -43786656, -47688096, -51757576, -56459492, -61477624, -65965864, -69410432, --71972912, -74226160, -76795088, -79890152, -82914880, -84863184, -85312008, -84779968, -84113176, -83900576, --84370872, -85315232, -86102816, -86176368, -85496152, -84269408, -82502560, -80073760, -76879912, -72683192, --67184024, -60457032, -52966072, -45120780, -37196028, -29571386, -22559852, -16127065, -10208064, -5068062, --988379, 2062121, 4139275, 5170067, 5339181, 5119601, 4758824, 4228396, 3674882, 3360812, -3291556, 3446175, 4119948, 5566815, 7716446, 10654740, 14766098, 20049982, 26006026, 32377074, -39221640, 46223512, 52858164, 59122908, 65221764, 70902928, 75974216, 80866720, 85869816, 90633472, -95081984, 99736656, 104685536, 109496968, 114285320, 119390968, 124223336, 128051768, 131315400, 134485088, -136825312, 137965616, 138964208, 140230688, 140711712, 140338064, 140336448, 140453488, 139494096, 138376864, -138341968, 137693424, 135427296, 134630576, 136169248, 135092288, 130763504, 130876784, 135851968, 133693744, -123466888, 123273080, 134919952, 127440272, 88057568, 62094488, 96197600, 162636992, 193965024, 178560576, -161589552, 159551056, 143084144, 110318920, 107009112, 151814208, 200674288, 212477408, 201375984, 198243872, -203621712, 203391392, 192545536, 163330096, 109403016, 60814588, 71439800, 145763680, 217600224, 230700416, -205281184, 193948912, 206018304, 213945200, 208341344, 202911440, 198481184, 183370944, 164960560, }, +8254391, 9876814, 18951544, 25066502, 20257214, 11820287, 10667088, 10446971, -9302362, -55198920, +-104534136, -125722816, -109843248, -74312064, -38511360, -5645198, 30492658, 71030704, 110766136, 145943520, +176026016, 199234400, 212091920, 213726160, 206675968, 192827392, 171563536, 142487152, 107303312, 68175624, +26241176, -17527762, -61694520, -105109664, -146663472, -183782720, -212766768, -231493904, -240935856, -243704496, +-242107840, -237774224, -231883680, -225010112, -217201872, -208442816, -198703984, -187731952, -175365664, -161985232, +-148284288, -134872704, -122400664, -111573584, -102565432, -94773824, -87489560, -80411448, -73331736, -65885872, +-57874148, -49357228, -40272836, -30412664, -19817516, -8664023, 3191161, 16006269, 29560650, 43398496, +57560076, 72373424, 87538952, 102159016, 115723064, 128294432, 139524704, 148304144, 153923568, 156971920, +158372624, 157951712, 154864704, 149269984, 142480704, 135179808, 126514704, 115569520, 102871984, 89632744, +76167488, 62046708, 47436840, 33361158, 20686710, 9515500, -448824, -9395241, -17293148, -24054502, +-29786136, -34851512, -39529268, -43786656, -47688096, -51757576, -56459492, -61477624, -65965864, -69410432, +-71972912, -74226160, -76795088, -79890152, -82914880, -84863184, -85312008, -84779968, -84113176, -83900576, +-84370872, -85315232, -86102816, -86176368, -85496152, -84269408, -82502560, -80073760, -76879912, -72683192, +-67184024, -60457032, -52966072, -45120780, -37196028, -29571386, -22559852, -16127065, -10208064, -5068062, +-988379, 2062121, 4139275, 5170067, 5339181, 5119601, 4758824, 4228396, 3674882, 3360812, +3291556, 3446175, 4119948, 5566815, 7716446, 10654740, 14766098, 20049982, 26006026, 32377074, +39221640, 46223512, 52858164, 59122908, 65221764, 70902928, 75974216, 80866720, 85869816, 90633472, +95081984, 99736656, 104685536, 109496968, 114285320, 119390968, 124223336, 128051768, 131315400, 134485088, +136825312, 137965616, 138964208, 140230688, 140711712, 140338064, 140336448, 140453488, 139494096, 138376864, +138341968, 137693424, 135427296, 134630576, 136169248, 135092288, 130763504, 130876784, 135851968, 133693744, +123466888, 123273080, 134919952, 127440272, 88057568, 62094488, 96197600, 162636992, 193965024, 178560576, +161589552, 159551056, 143084144, 110318920, 107009112, 151814208, 200674288, 212477408, 201375984, 198243872, +203621712, 203391392, 192545536, 163330096, 109403016, 60814588, 71439800, 145763680, 217600224, 230700416, +205281184, 193948912, 206018304, 213945200, 208341344, 202911440, 198481184, 183370944, 164960560, }, { -11927661, --8254391, -9876814, -18951544, -25066502, -20257214, -11820287, -10667088, -10446971, 9302362, 55198920, -104534136, 125722816, 109843248, 74312064, 38511360, 5645198, -30492658, -71030704, -110766136, -145943520, --176026016, -199234400, -212091920, -213726160, -206675968, -192827392, -171563536, -142487152, -107303312, -68175624, --26241176, 17527762, 61694520, 105109664, 146663472, 183782720, 212766768, 231493904, 240935856, 243704496, -242107840, 237774224, 231883680, 225010112, 217201872, 208442816, 198703984, 187731952, 175365664, 161985232, -148284288, 134872704, 122400664, 111573584, 102565432, 94773824, 87489560, 80411448, 73331736, 65885872, -57874148, 49357228, 40272836, 30412664, 19817516, 8664023, -3191161, -16006269, -29560650, -43398496, --57560076, -72373424, -87538952, -102159016, -115723064, -128294432, -139524704, -148304144, -153923568, -156971920, --158372624, -157951712, -154864704, -149269984, -142480704, -135179808, -126514704, -115569520, -102871984, -89632744, --76167488, -62046708, -47436840, -33361158, -20686710, -9515500, 448824, 9395241, 17293148, 24054502, -29786136, 34851512, 39529268, 43786656, 47688096, 51757576, 56459492, 61477624, 65965864, 69410432, -71972912, 74226160, 76795088, 79890152, 82914880, 84863184, 85312008, 84779968, 84113176, 83900576, -84370872, 85315232, 86102816, 86176368, 85496152, 84269408, 82502560, 80073760, 76879912, 72683192, -67184024, 60457032, 52966072, 45120780, 37196028, 29571386, 22559852, 16127065, 10208064, 5068062, -988379, -2062121, -4139275, -5170067, -5339181, -5119601, -4758824, -4228396, -3674882, -3360812, --3291556, -3446175, -4119948, -5566815, -7716446, -10654740, -14766098, -20049982, -26006026, -32377074, --39221640, -46223512, -52858164, -59122908, -65221764, -70902928, -75974216, -80866720, -85869816, -90633472, --95081984, -99736656, -104685536, -109496968, -114285320, -119390968, -124223336, -128051768, -131315400, -134485088, --136825312, -137965616, -138964208, -140230688, -140711712, -140338064, -140336448, -140453488, -139494096, -138376864, --138341968, -137693424, -135427296, -134630576, -136169248, -135092288, -130763504, -130876784, -135851968, -133693744, --123466888, -123273080, -134919952, -127440272, -88057568, -62094488, -96197600, -162636992, -193965024, -178560576, --161589552, -159551056, -143084144, -110318920, -107009112, -151814208, -200674288, -212477408, -201375984, -198243872, --203621712, -203391392, -192545536, -163330096, -109403016, -60814588, -71439800, -145763680, -217600224, -230700416, --205281184, -193948912, -206018304, -213945200, -208341344, -202911440, -198481184, -183370944, -164960560, }, +-8254391, -9876814, -18951544, -25066502, -20257214, -11820287, -10667088, -10446971, 9302362, 55198920, +104534136, 125722816, 109843248, 74312064, 38511360, 5645198, -30492658, -71030704, -110766136, -145943520, +-176026016, -199234400, -212091920, -213726160, -206675968, -192827392, -171563536, -142487152, -107303312, -68175624, +-26241176, 17527762, 61694520, 105109664, 146663472, 183782720, 212766768, 231493904, 240935856, 243704496, +242107840, 237774224, 231883680, 225010112, 217201872, 208442816, 198703984, 187731952, 175365664, 161985232, +148284288, 134872704, 122400664, 111573584, 102565432, 94773824, 87489560, 80411448, 73331736, 65885872, +57874148, 49357228, 40272836, 30412664, 19817516, 8664023, -3191161, -16006269, -29560650, -43398496, +-57560076, -72373424, -87538952, -102159016, -115723064, -128294432, -139524704, -148304144, -153923568, -156971920, +-158372624, -157951712, -154864704, -149269984, -142480704, -135179808, -126514704, -115569520, -102871984, -89632744, +-76167488, -62046708, -47436840, -33361158, -20686710, -9515500, 448824, 9395241, 17293148, 24054502, +29786136, 34851512, 39529268, 43786656, 47688096, 51757576, 56459492, 61477624, 65965864, 69410432, +71972912, 74226160, 76795088, 79890152, 82914880, 84863184, 85312008, 84779968, 84113176, 83900576, +84370872, 85315232, 86102816, 86176368, 85496152, 84269408, 82502560, 80073760, 76879912, 72683192, +67184024, 60457032, 52966072, 45120780, 37196028, 29571386, 22559852, 16127065, 10208064, 5068062, +988379, -2062121, -4139275, -5170067, -5339181, -5119601, -4758824, -4228396, -3674882, -3360812, +-3291556, -3446175, -4119948, -5566815, -7716446, -10654740, -14766098, -20049982, -26006026, -32377074, +-39221640, -46223512, -52858164, -59122908, -65221764, -70902928, -75974216, -80866720, -85869816, -90633472, +-95081984, -99736656, -104685536, -109496968, -114285320, -119390968, -124223336, -128051768, -131315400, -134485088, +-136825312, -137965616, -138964208, -140230688, -140711712, -140338064, -140336448, -140453488, -139494096, -138376864, +-138341968, -137693424, -135427296, -134630576, -136169248, -135092288, -130763504, -130876784, -135851968, -133693744, +-123466888, -123273080, -134919952, -127440272, -88057568, -62094488, -96197600, -162636992, -193965024, -178560576, +-161589552, -159551056, -143084144, -110318920, -107009112, -151814208, -200674288, -212477408, -201375984, -198243872, +-203621712, -203391392, -192545536, -163330096, -109403016, -60814588, -71439800, -145763680, -217600224, -230700416, +-205281184, -193948912, -206018304, -213945200, -208341344, -202911440, -198481184, -183370944, -164960560, }, }, { { 1845225, --6548752, -645856, 11326366, -1323924, -23360328, 516470, 70470752, 103799160, 39323108, -75782016, --143958176, -129812168, -75616656, -29047400, 1406065, 27227946, 53433688, 77974592, 97599912, 107780056, -105458088, 93229784, 76283984, 57622892, 39669928, 26154204, 18576808, 14652818, 12916040, 14906758, -20847772, 27242440, 30925376, 32439352, 33878164, 35633196, 36080408, 32869384, 24407762, 11307575, --3862249, -18832358, -32844152, -45603424, -56769268, -66952636, -77589656, -89338544, -101743480, -114375512, --127040840, -139149968, -149981872, -159129616, -165848544, -168823888, -167367360, -161885904, -152643136, -139270752, --121952912, -101701608, -79026864, -53646824, -25821880, 3289408, 32758252, 62168040, 90734408, 117222008, -140673600, 160389648, 175473568, 185248384, 189831120, 189608304, 184527360, 174534592, 160388032, 143417008, -124507344, 103677824, 80807128, 56646860, 32723892, 9984725, -11984032, -33844880, -55168320, -74984224, --93070328, -109669304, -124435936, -136741024, -146563616, -154035248, -158579312, -159456560, -156764688, -151126480, --142818944, -131737384, -117827056, -101433168, -83825416, -67174360, -53031572, -40934260, -29385630, -17978734, --7737921, 177167, 5261335, 7716983, 8515846, 8907225, 9329206, 9336722, 8757975, 8089571, -7758859, 7969312, 9200357, 11858942, 15609522, 19887310, 24648280, 29855928, 34891240, 39198020, -42775728, 45536316, 47085728, 47491064, 47281684, 46593416, 45326400, 43938052, 42950208, 42043972, -40720584, 39240968, 37930468, 36420248, 34454764, 32409286, 30368104, 27900108, 25135222, 22725746, -20629802, 18361522, 16196859, 14656576, 13375602, 11931956, 10887742, 10683731, 10726144, 10692858, -11195906, 12278238, 13072270, 13478681, 14211510, 15105937, 15531139, 16049756, 17460652, 19108310, -20259898, 21661668, 23775866, 25526064, 26405996, 27226872, 27671400, 26280368, 23406498, 20561620, -17145510, 11816529, 5853504, 878858, -4474282, -11355357, -17719424, -22552874, -28112708, -34612604, --39279088, -42917996, -48835388, -54687820, -56460568, -58741732, -66727148, -72850160, -70095480, -70104600, --82972328, -91474752, -80050136, -74722232, -105705584, -140526496, -115971096, -38424388, 14111652, 2777770, --27246736, -34520264, -43823700, -82118168, -112770272, -86500640, -19781008, 26624502, 25559350, 1846299, --14041859, -22708028, -49884436, -112187768, -181869312, -195415648, -123007328, -21627844, 17504676, -25101936, --81594176, -91303488, -68420440, -59377384, -72649368, -81596328, -73004784, -59483148, -52861920, }, +-6548752, -645856, 11326366, -1323924, -23360328, 516470, 70470752, 103799160, 39323108, -75782016, +-143958176, -129812168, -75616656, -29047400, 1406065, 27227946, 53433688, 77974592, 97599912, 107780056, +105458088, 93229784, 76283984, 57622892, 39669928, 26154204, 18576808, 14652818, 12916040, 14906758, +20847772, 27242440, 30925376, 32439352, 33878164, 35633196, 36080408, 32869384, 24407762, 11307575, +-3862249, -18832358, -32844152, -45603424, -56769268, -66952636, -77589656, -89338544, -101743480, -114375512, +-127040840, -139149968, -149981872, -159129616, -165848544, -168823888, -167367360, -161885904, -152643136, -139270752, +-121952912, -101701608, -79026864, -53646824, -25821880, 3289408, 32758252, 62168040, 90734408, 117222008, +140673600, 160389648, 175473568, 185248384, 189831120, 189608304, 184527360, 174534592, 160388032, 143417008, +124507344, 103677824, 80807128, 56646860, 32723892, 9984725, -11984032, -33844880, -55168320, -74984224, +-93070328, -109669304, -124435936, -136741024, -146563616, -154035248, -158579312, -159456560, -156764688, -151126480, +-142818944, -131737384, -117827056, -101433168, -83825416, -67174360, -53031572, -40934260, -29385630, -17978734, +-7737921, 177167, 5261335, 7716983, 8515846, 8907225, 9329206, 9336722, 8757975, 8089571, +7758859, 7969312, 9200357, 11858942, 15609522, 19887310, 24648280, 29855928, 34891240, 39198020, +42775728, 45536316, 47085728, 47491064, 47281684, 46593416, 45326400, 43938052, 42950208, 42043972, +40720584, 39240968, 37930468, 36420248, 34454764, 32409286, 30368104, 27900108, 25135222, 22725746, +20629802, 18361522, 16196859, 14656576, 13375602, 11931956, 10887742, 10683731, 10726144, 10692858, +11195906, 12278238, 13072270, 13478681, 14211510, 15105937, 15531139, 16049756, 17460652, 19108310, +20259898, 21661668, 23775866, 25526064, 26405996, 27226872, 27671400, 26280368, 23406498, 20561620, +17145510, 11816529, 5853504, 878858, -4474282, -11355357, -17719424, -22552874, -28112708, -34612604, +-39279088, -42917996, -48835388, -54687820, -56460568, -58741732, -66727148, -72850160, -70095480, -70104600, +-82972328, -91474752, -80050136, -74722232, -105705584, -140526496, -115971096, -38424388, 14111652, 2777770, +-27246736, -34520264, -43823700, -82118168, -112770272, -86500640, -19781008, 26624502, 25559350, 1846299, +-14041859, -22708028, -49884436, -112187768, -181869312, -195415648, -123007328, -21627844, 17504676, -25101936, +-81594176, -91303488, -68420440, -59377384, -72649368, -81596328, -73004784, -59483148, -52861920, }, { -1845225, -6548752, 645856, -11326366, 1323924, 23360328, -516470, -70470752, -103799160, -39323108, 75782016, -143958176, 129812168, 75616656, 29047400, -1406065, -27227946, -53433688, -77974592, -97599912, -107780056, --105458088, -93229784, -76283984, -57622892, -39669928, -26154204, -18576808, -14652818, -12916040, -14906758, --20847772, -27242440, -30925376, -32439352, -33878164, -35633196, -36080408, -32869384, -24407762, -11307575, -3862249, 18832358, 32844152, 45603424, 56769268, 66952636, 77589656, 89338544, 101743480, 114375512, -127040840, 139149968, 149981872, 159129616, 165848544, 168823888, 167367360, 161885904, 152643136, 139270752, -121952912, 101701608, 79026864, 53646824, 25821880, -3289408, -32758252, -62168040, -90734408, -117222008, --140673600, -160389648, -175473568, -185248384, -189831120, -189608304, -184527360, -174534592, -160388032, -143417008, --124507344, -103677824, -80807128, -56646860, -32723892, -9984725, 11984032, 33844880, 55168320, 74984224, -93070328, 109669304, 124435936, 136741024, 146563616, 154035248, 158579312, 159456560, 156764688, 151126480, -142818944, 131737384, 117827056, 101433168, 83825416, 67174360, 53031572, 40934260, 29385630, 17978734, -7737921, -177167, -5261335, -7716983, -8515846, -8907225, -9329206, -9336722, -8757975, -8089571, --7758859, -7969312, -9200357, -11858942, -15609522, -19887310, -24648280, -29855928, -34891240, -39198020, --42775728, -45536316, -47085728, -47491064, -47281684, -46593416, -45326400, -43938052, -42950208, -42043972, --40720584, -39240968, -37930468, -36420248, -34454764, -32409286, -30368104, -27900108, -25135222, -22725746, --20629802, -18361522, -16196859, -14656576, -13375602, -11931956, -10887742, -10683731, -10726144, -10692858, --11195906, -12278238, -13072270, -13478681, -14211510, -15105937, -15531139, -16049756, -17460652, -19108310, --20259898, -21661668, -23775866, -25526064, -26405996, -27226872, -27671400, -26280368, -23406498, -20561620, --17145510, -11816529, -5853504, -878858, 4474282, 11355357, 17719424, 22552874, 28112708, 34612604, -39279088, 42917996, 48835388, 54687820, 56460568, 58741732, 66727148, 72850160, 70095480, 70104600, -82972328, 91474752, 80050136, 74722232, 105705584, 140526496, 115971096, 38424388, -14111652, -2777770, -27246736, 34520264, 43823700, 82118168, 112770272, 86500640, 19781008, -26624502, -25559350, -1846299, -14041859, 22708028, 49884436, 112187768, 181869312, 195415648, 123007328, 21627844, -17504676, 25101936, -81594176, 91303488, 68420440, 59377384, 72649368, 81596328, 73004784, 59483148, 52861920, }, +6548752, 645856, -11326366, 1323924, 23360328, -516470, -70470752, -103799160, -39323108, 75782016, +143958176, 129812168, 75616656, 29047400, -1406065, -27227946, -53433688, -77974592, -97599912, -107780056, +-105458088, -93229784, -76283984, -57622892, -39669928, -26154204, -18576808, -14652818, -12916040, -14906758, +-20847772, -27242440, -30925376, -32439352, -33878164, -35633196, -36080408, -32869384, -24407762, -11307575, +3862249, 18832358, 32844152, 45603424, 56769268, 66952636, 77589656, 89338544, 101743480, 114375512, +127040840, 139149968, 149981872, 159129616, 165848544, 168823888, 167367360, 161885904, 152643136, 139270752, +121952912, 101701608, 79026864, 53646824, 25821880, -3289408, -32758252, -62168040, -90734408, -117222008, +-140673600, -160389648, -175473568, -185248384, -189831120, -189608304, -184527360, -174534592, -160388032, -143417008, +-124507344, -103677824, -80807128, -56646860, -32723892, -9984725, 11984032, 33844880, 55168320, 74984224, +93070328, 109669304, 124435936, 136741024, 146563616, 154035248, 158579312, 159456560, 156764688, 151126480, +142818944, 131737384, 117827056, 101433168, 83825416, 67174360, 53031572, 40934260, 29385630, 17978734, +7737921, -177167, -5261335, -7716983, -8515846, -8907225, -9329206, -9336722, -8757975, -8089571, +-7758859, -7969312, -9200357, -11858942, -15609522, -19887310, -24648280, -29855928, -34891240, -39198020, +-42775728, -45536316, -47085728, -47491064, -47281684, -46593416, -45326400, -43938052, -42950208, -42043972, +-40720584, -39240968, -37930468, -36420248, -34454764, -32409286, -30368104, -27900108, -25135222, -22725746, +-20629802, -18361522, -16196859, -14656576, -13375602, -11931956, -10887742, -10683731, -10726144, -10692858, +-11195906, -12278238, -13072270, -13478681, -14211510, -15105937, -15531139, -16049756, -17460652, -19108310, +-20259898, -21661668, -23775866, -25526064, -26405996, -27226872, -27671400, -26280368, -23406498, -20561620, +-17145510, -11816529, -5853504, -878858, 4474282, 11355357, 17719424, 22552874, 28112708, 34612604, +39279088, 42917996, 48835388, 54687820, 56460568, 58741732, 66727148, 72850160, 70095480, 70104600, +82972328, 91474752, 80050136, 74722232, 105705584, 140526496, 115971096, 38424388, -14111652, -2777770, +27246736, 34520264, 43823700, 82118168, 112770272, 86500640, 19781008, -26624502, -25559350, -1846299, +14041859, 22708028, 49884436, 112187768, 181869312, 195415648, 123007328, 21627844, -17504676, 25101936, +81594176, 91303488, 68420440, 59377384, 72649368, 81596328, 73004784, 59483148, 52861920, }, }, { { -7046431, --6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, -196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, --125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, --83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, -20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, -76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, -24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, -44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, -221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, -247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, -40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, -48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, -27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, --66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, --163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, --203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, --185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, --171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, --146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, --96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, --60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, --68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, --94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, --163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, +-6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, +196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, +-125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, +-83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, +20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, +76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, +24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, +44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, +221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, +247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, +40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, +48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, +27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, +-66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, +-163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, +-203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, +-185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, +-171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, +-146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, +-96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, +-60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, +-68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, +-94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, +-163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, { -7046431, --6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, -196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, --125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, --83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, -20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, -76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, -24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, -44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, -221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, -247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, -40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, -48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, -27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, --66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, --163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, --203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, --185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, --171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, --146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, --96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, --60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, --68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, --94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, --163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, +-6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, +196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, +-125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, +-83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, +20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, +76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, +24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, +44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, +221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, +247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, +40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, +48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, +27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, +-66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, +-163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, +-203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, +-185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, +-171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, +-146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, +-96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, +-60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, +-68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, +-94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, +-163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, }, { { 27171036, --11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, --51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, -28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, -46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, --65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, --73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, --28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, --20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, -69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, -230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, -163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, --87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, --192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, --162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, --84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, --29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, -2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, -30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, -34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, -58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, -84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, -110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, -81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, -42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, +-11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, +-51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, +28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, +46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, +-65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, +-73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, +-28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, +-20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, +69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, +230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, +163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, +-87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, +-192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, +-162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, +-84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, +-29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, +2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, +30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, +34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, +58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, +84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, +110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, +81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, +42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, { 27171036, --11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, --51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, -28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, -46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, --65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, --73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, --28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, --20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, -69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, -230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, -163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, --87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, --192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, --162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, --84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, --29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, -2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, -30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, -34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, -58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, -84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, -110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, -81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, -42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, +-11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, +-51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, +28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, +46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, +-65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, +-73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, +-28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, +-20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, +69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, +230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, +163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, +-87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, +-192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, +-162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, +-84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, +-29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, +2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, +30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, +34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, +58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, +84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, +110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, +81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, +42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, }, { { -3897146, -35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, -301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, --170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, --323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, -20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, -170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, -165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, -86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, -45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, -21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, --26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, --120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, --65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, --7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, -64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, -85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, -26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, --3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, --2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, -2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, -6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, -51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, -77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, --28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, +35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, +301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, +-170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, +-323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, +20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, +170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, +165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, +86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, +45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, +21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, +-26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, +-120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, +-65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, +-7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, +64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, +85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, +26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, +-3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, +-2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, +2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, +6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, +51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, +77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, +-28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, { -3897146, -35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, -301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, --170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, --323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, -20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, -170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, -165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, -86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, -45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, -21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, --26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, --120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, --65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, --7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, -64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, -85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, -26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, --3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, --2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, -2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, -6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, -51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, -77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, --28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, +35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, +301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, +-170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, +-323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, +20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, +170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, +165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, +86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, +45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, +21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, +-26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, +-120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, +-65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, +-7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, +64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, +85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, +26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, +-3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, +-2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, +2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, +6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, +51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, +77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, +-28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, }, }; const Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -150097296, --385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, -337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, --322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, --141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, -106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, -271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, -345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, -377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, -394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, -379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, -353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, -346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, -313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, -276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, -248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, -219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, -183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, -158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, -139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, -121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, -91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, -55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, -51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, -37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, +-385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, +337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, +-322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, +-141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, +106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, +271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, +345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, +377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, +394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, +379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, +353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, +346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, +313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, +276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, +248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, +219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, +183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, +158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, +139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, +121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, +91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, +55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, +51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, +37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, { -150097296, --385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, -337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, --322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, --141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, -106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, -271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, -345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, -377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, -394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, -379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, -353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, -346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, -313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, -276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, -248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, -219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, -183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, -158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, -139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, -121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, -91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, -55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, -51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, -37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, +-385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, +337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, +-322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, +-141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, +106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, +271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, +345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, +377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, +394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, +379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, +353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, +346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, +313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, +276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, +248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, +219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, +183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, +158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, +139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, +121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, +91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, +55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, +51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, +37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, }, { { 74128992, -125036160, -31832686, -328685248, -579388928, -630343360, -464086784, -178695872, 109277928, 336225088, 491736160, -583223296, 615155840, 591585024, 521611424, 416995680, 288475232, 146677424, 3992709, -127547640, -240920816, --335788608, -414927648, -479317824, -527319456, -558024704, -573691136, -578245376, -574549056, -563953344, -547510080, --526430368, -501655936, -473858912, -443802176, -412205728, -379325056, -344973920, -308924640, -271170816, -232013056, --192055376, -152036480, -112535656, -73853040, -36146980, 385473, 35446900, 68685656, 99869800, 129092760, -156785632, 183442352, 209277648, 234109536, 257541264, 279244288, 299046240, 316826304, 332494880, 346143776, -358055840, 368435168, 377279040, 384639008, 390804448, 396035712, 400307584, 403578752, 406126208, 408332736, -410309504, 412082240, 414000480, 416552224, 419807808, 423482688, 427579552, 432489792, 438335232, 444650976, -451000032, 457526208, 464563520, 471950880, 479151936, 485910048, 492437856, 499026336, 505774816, 512669312, -519649696, 526549568, 533144480, 539250880, 544640000, 548879616, 551407744, 551783552, 549847616, 545685824, -539488128, 531410400, 521581888, 510285600, 498035808, 485381760, 472712704, 460356608, 448764480, 438447968, -429737792, 422639264, 416840000, 411893792, 407551072, 403941152, 401302432, 399547392, 398207360, 396715392, -394635008, 391768672, 388279008, 384596608, 381029632, 377540512, 373980512, 370345376, 366690880, 362990784, -359219264, 355432160, 351699840, 348096896, 344748448, 341745184, 339038816, 336535392, 334219328, 332112640, -330238976, 328685792, 327552992, 326791712, 326244096, 325789920, 325290080, 324525568, 323402976, 322057056, -320560800, 318759584, 316548224, 313989504, 311008768, 307334976, 302885376, 297839328, 292288640, 286212864, -279763424, 273154016, 266364208, 259311328, 252110816, 244856624, 237492896, 230150656, 223164896, 216559232, -210064704, 203690976, 197608768, 191548560, 185054576, 178202496, 171357376, 164587984, 157976416, 151910848, -146453552, 141165376, 135994768, 131321848, 126925408, 122191816, 117317568, 112863152, 108515568, 103818488, -99252400, 95040112, 90424632, 85497232, 81323592, 77207944, 71499928, 65615288, 61895848, 57695908, -49410916, 41340132, 39055748, 35219804, 18512920, -2759517, -7189776, 5656472, 12028593, 1793686, --8701604, -13099650, -32475858, -75995152, -113358680, -113468744, -89127552, -77423224, -92568896, -120380952, --144085408, -157587712, -168697184, -199903888, -261747648, -314558048, -291328704, -181573504, -61053496, -9470940, --24637006, -48244832, -51813412, -58076012, -88137024, -125196152, -135724720, -103910832, -38646652, }, +125036160, -31832686, -328685248, -579388928, -630343360, -464086784, -178695872, 109277928, 336225088, 491736160, +583223296, 615155840, 591585024, 521611424, 416995680, 288475232, 146677424, 3992709, -127547640, -240920816, +-335788608, -414927648, -479317824, -527319456, -558024704, -573691136, -578245376, -574549056, -563953344, -547510080, +-526430368, -501655936, -473858912, -443802176, -412205728, -379325056, -344973920, -308924640, -271170816, -232013056, +-192055376, -152036480, -112535656, -73853040, -36146980, 385473, 35446900, 68685656, 99869800, 129092760, +156785632, 183442352, 209277648, 234109536, 257541264, 279244288, 299046240, 316826304, 332494880, 346143776, +358055840, 368435168, 377279040, 384639008, 390804448, 396035712, 400307584, 403578752, 406126208, 408332736, +410309504, 412082240, 414000480, 416552224, 419807808, 423482688, 427579552, 432489792, 438335232, 444650976, +451000032, 457526208, 464563520, 471950880, 479151936, 485910048, 492437856, 499026336, 505774816, 512669312, +519649696, 526549568, 533144480, 539250880, 544640000, 548879616, 551407744, 551783552, 549847616, 545685824, +539488128, 531410400, 521581888, 510285600, 498035808, 485381760, 472712704, 460356608, 448764480, 438447968, +429737792, 422639264, 416840000, 411893792, 407551072, 403941152, 401302432, 399547392, 398207360, 396715392, +394635008, 391768672, 388279008, 384596608, 381029632, 377540512, 373980512, 370345376, 366690880, 362990784, +359219264, 355432160, 351699840, 348096896, 344748448, 341745184, 339038816, 336535392, 334219328, 332112640, +330238976, 328685792, 327552992, 326791712, 326244096, 325789920, 325290080, 324525568, 323402976, 322057056, +320560800, 318759584, 316548224, 313989504, 311008768, 307334976, 302885376, 297839328, 292288640, 286212864, +279763424, 273154016, 266364208, 259311328, 252110816, 244856624, 237492896, 230150656, 223164896, 216559232, +210064704, 203690976, 197608768, 191548560, 185054576, 178202496, 171357376, 164587984, 157976416, 151910848, +146453552, 141165376, 135994768, 131321848, 126925408, 122191816, 117317568, 112863152, 108515568, 103818488, +99252400, 95040112, 90424632, 85497232, 81323592, 77207944, 71499928, 65615288, 61895848, 57695908, +49410916, 41340132, 39055748, 35219804, 18512920, -2759517, -7189776, 5656472, 12028593, 1793686, +-8701604, -13099650, -32475858, -75995152, -113358680, -113468744, -89127552, -77423224, -92568896, -120380952, +-144085408, -157587712, -168697184, -199903888, -261747648, -314558048, -291328704, -181573504, -61053496, -9470940, +-24637006, -48244832, -51813412, -58076012, -88137024, -125196152, -135724720, -103910832, -38646652, }, { -74128992, --125036160, 31832686, 328685248, 579388928, 630343360, 464086784, 178695872, -109277928, -336225088, -491736160, --583223296, -615155840, -591585024, -521611424, -416995680, -288475232, -146677424, -3992709, 127547640, 240920816, -335788608, 414927648, 479317824, 527319456, 558024704, 573691136, 578245376, 574549056, 563953344, 547510080, -526430368, 501655936, 473858912, 443802176, 412205728, 379325056, 344973920, 308924640, 271170816, 232013056, -192055376, 152036480, 112535656, 73853040, 36146980, -385473, -35446900, -68685656, -99869800, -129092760, --156785632, -183442352, -209277648, -234109536, -257541264, -279244288, -299046240, -316826304, -332494880, -346143776, --358055840, -368435168, -377279040, -384639008, -390804448, -396035712, -400307584, -403578752, -406126208, -408332736, --410309504, -412082240, -414000480, -416552224, -419807808, -423482688, -427579552, -432489792, -438335232, -444650976, --451000032, -457526208, -464563520, -471950880, -479151936, -485910048, -492437856, -499026336, -505774816, -512669312, --519649696, -526549568, -533144480, -539250880, -544640000, -548879616, -551407744, -551783552, -549847616, -545685824, --539488128, -531410400, -521581888, -510285600, -498035808, -485381760, -472712704, -460356608, -448764480, -438447968, --429737792, -422639264, -416840000, -411893792, -407551072, -403941152, -401302432, -399547392, -398207360, -396715392, --394635008, -391768672, -388279008, -384596608, -381029632, -377540512, -373980512, -370345376, -366690880, -362990784, --359219264, -355432160, -351699840, -348096896, -344748448, -341745184, -339038816, -336535392, -334219328, -332112640, --330238976, -328685792, -327552992, -326791712, -326244096, -325789920, -325290080, -324525568, -323402976, -322057056, --320560800, -318759584, -316548224, -313989504, -311008768, -307334976, -302885376, -297839328, -292288640, -286212864, --279763424, -273154016, -266364208, -259311328, -252110816, -244856624, -237492896, -230150656, -223164896, -216559232, --210064704, -203690976, -197608768, -191548560, -185054576, -178202496, -171357376, -164587984, -157976416, -151910848, --146453552, -141165376, -135994768, -131321848, -126925408, -122191816, -117317568, -112863152, -108515568, -103818488, --99252400, -95040112, -90424632, -85497232, -81323592, -77207944, -71499928, -65615288, -61895848, -57695908, --49410916, -41340132, -39055748, -35219804, -18512920, 2759517, 7189776, -5656472, -12028593, -1793686, -8701604, 13099650, 32475858, 75995152, 113358680, 113468744, 89127552, 77423224, 92568896, 120380952, -144085408, 157587712, 168697184, 199903888, 261747648, 314558048, 291328704, 181573504, 61053496, 9470940, -24637006, 48244832, 51813412, 58076012, 88137024, 125196152, 135724720, 103910832, 38646652, }, +-125036160, 31832686, 328685248, 579388928, 630343360, 464086784, 178695872, -109277928, -336225088, -491736160, +-583223296, -615155840, -591585024, -521611424, -416995680, -288475232, -146677424, -3992709, 127547640, 240920816, +335788608, 414927648, 479317824, 527319456, 558024704, 573691136, 578245376, 574549056, 563953344, 547510080, +526430368, 501655936, 473858912, 443802176, 412205728, 379325056, 344973920, 308924640, 271170816, 232013056, +192055376, 152036480, 112535656, 73853040, 36146980, -385473, -35446900, -68685656, -99869800, -129092760, +-156785632, -183442352, -209277648, -234109536, -257541264, -279244288, -299046240, -316826304, -332494880, -346143776, +-358055840, -368435168, -377279040, -384639008, -390804448, -396035712, -400307584, -403578752, -406126208, -408332736, +-410309504, -412082240, -414000480, -416552224, -419807808, -423482688, -427579552, -432489792, -438335232, -444650976, +-451000032, -457526208, -464563520, -471950880, -479151936, -485910048, -492437856, -499026336, -505774816, -512669312, +-519649696, -526549568, -533144480, -539250880, -544640000, -548879616, -551407744, -551783552, -549847616, -545685824, +-539488128, -531410400, -521581888, -510285600, -498035808, -485381760, -472712704, -460356608, -448764480, -438447968, +-429737792, -422639264, -416840000, -411893792, -407551072, -403941152, -401302432, -399547392, -398207360, -396715392, +-394635008, -391768672, -388279008, -384596608, -381029632, -377540512, -373980512, -370345376, -366690880, -362990784, +-359219264, -355432160, -351699840, -348096896, -344748448, -341745184, -339038816, -336535392, -334219328, -332112640, +-330238976, -328685792, -327552992, -326791712, -326244096, -325789920, -325290080, -324525568, -323402976, -322057056, +-320560800, -318759584, -316548224, -313989504, -311008768, -307334976, -302885376, -297839328, -292288640, -286212864, +-279763424, -273154016, -266364208, -259311328, -252110816, -244856624, -237492896, -230150656, -223164896, -216559232, +-210064704, -203690976, -197608768, -191548560, -185054576, -178202496, -171357376, -164587984, -157976416, -151910848, +-146453552, -141165376, -135994768, -131321848, -126925408, -122191816, -117317568, -112863152, -108515568, -103818488, +-99252400, -95040112, -90424632, -85497232, -81323592, -77207944, -71499928, -65615288, -61895848, -57695908, +-49410916, -41340132, -39055748, -35219804, -18512920, 2759517, 7189776, -5656472, -12028593, -1793686, +8701604, 13099650, 32475858, 75995152, 113358680, 113468744, 89127552, 77423224, 92568896, 120380952, +144085408, 157587712, 168697184, 199903888, 261747648, 314558048, 291328704, 181573504, 61053496, 9470940, +24637006, 48244832, 51813412, 58076012, 88137024, 125196152, 135724720, 103910832, 38646652, }, }, { { -20155744, --57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, -15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, --66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, --20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, --13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, -96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, -293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, -208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, --77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, --91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, --55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, --82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, --16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, -33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, -20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, --20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, --54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, --76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, --117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, --121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, --86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, --37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, --6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, --46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, +-57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, +15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, +-66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, +-20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, +-13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, +96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, +293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, +208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, +-77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, +-91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, +-55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, +-82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, +-16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, +33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, +20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, +-20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, +-54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, +-76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, +-117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, +-121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, +-86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, +-37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, +-6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, +-46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, { -20155744, --57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, -15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, --66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, --20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, --13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, -96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, -293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, -208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, --77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, --91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, --55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, --82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, --16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, -33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, -20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, --20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, --54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, --76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, --117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, --121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, --86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, --37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, --6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, --46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, +-57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, +15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, +-66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, +-20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, +-13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, +96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, +293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, +208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, +-77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, +-91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, +-55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, +-82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, +-16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, +33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, +20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, +-20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, +-54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, +-76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, +-117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, +-121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, +-86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, +-37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, +-6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, +-46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, }, { { -593779, --15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, -34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, --41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, --240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, -69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, -205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, -200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, -171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, -51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, --23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, -33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, -181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, -227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, -249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, -224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, -151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, -143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, -131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, -75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, -29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, -23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, -40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, -25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, -23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, +-15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, +34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, +-41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, +-240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, +69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, +205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, +200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, +171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, +51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, +-23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, +33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, +181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, +227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, +249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, +224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, +151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, +143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, +131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, +75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, +29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, +23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, +40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, +25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, +23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, { -593779, --15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, -34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, --41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, --240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, -69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, -205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, -200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, -171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, -51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, --23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, -33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, -181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, -227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, -249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, -224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, -151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, -143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, -131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, -75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, -29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, -23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, -40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, -25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, -23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, +-15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, +34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, +-41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, +-240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, +69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, +205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, +200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, +171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, +51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, +-23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, +33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, +181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, +227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, +249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, +224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, +151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, +143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, +131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, +75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, +29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, +23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, +40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, +25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, +23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, }, { { -2034204, --1912871, 2893734, 2283312, -8800388, -21194590, -25225954, -27377732, -41857676, -65462816, -72565616, --42084772, 16944720, 74471512, 110361336, 128002376, 139204720, 146519056, 144579872, 130915432, 107955080, -77377592, 39032124, -4934918, -49726056, -92294016, -132781600, -171121696, -205086304, -232441488, -252692256, --265895520, -271576672, -269452832, -259612512, -241535008, -214609856, -180362320, -142905904, -106488344, -73330128, --43904768, -18021682, 4879083, 25580288, 44618804, 62207232, 78529184, 93599152, 106967768, 118061672, -126695096, 132961448, 137057776, 139608992, 141708688, 144187952, 147163840, 150511216, 154277904, 158406976, -162597792, 166676400, 170664816, 174398224, 177568448, 180142736, 182199488, 183408528, 183263568, 181747440, -179094224, 174972128, 168627392, 159862448, 149136304, 136598752, 121848760, 105010336, 87308632, 69930656, -52820044, 35374960, 18020610, 2053531, -12117713, -25485800, -38748120, -51050520, -61122216, -68888592, --75053480, -79632448, -81893216, -81562504, -79292072, -75939856, -71945536, -67399848, -62368292, -57090316, --51939576, -47119548, -42508364, -38028176, -33923800, -30288110, -26547192, -21916144, -16276315, -10230075, --4461934, 731218, 5592585, 10865194, 17233556, 24533926, 31795642, 38166152, 43517144, 48241608, -52942452, 58260696, 64491620, 71342088, 78354696, 85415624, 92620968, 99962680, 107408008, 114904872, -122087664, 128344360, 133310416, 136963824, 139292768, 140327856, 140374560, 139734608, 138376864, 136256768, -133678176, 130995432, 128357248, 126021320, 124419296, 123687544, 123623120, 124185224, 125509144, 127505232, -130003288, 133111776, 136913360, 141143904, 145602608, 150361968, 155197040, 159469984, 162880192, 165587088, -167499424, 168321920, 168255344, 167751216, 166788608, 165273024, 163637184, 162187632, 160570576, 158612064, -156744832, 155027920, 152930368, 150392032, 147729152, 144544976, 140299408, 135554544, 131003480, 126167888, -120727232, 115672056, 111467824, 107095544, 102325448, 98324152, 95037960, 91263224, 87568480, 85192288, -82870856, 79462264, 77278272, 77233712, 75366472, 70892192, 69963408, 73052560, 70506720, 61724584, -61392800, 70719856, 66434556, 43883292, 42880416, 91149408, 146700512, 147194432, 99498824, 63552096, -59225452, 53955528, 40287332, 54138064, 101396128, 131937640, 112648936, 73204496, 52901648, 47913044, -36569500, 16180216, -7840463, -31339840, -31613106, 19630684, 101511552, 144464976, 113561080, 54766200, -29202020, 36538360, 37560564, 21087752, 6425808, -571768, -10691247, -19418084, -10495826, }, +-1912871, 2893734, 2283312, -8800388, -21194590, -25225954, -27377732, -41857676, -65462816, -72565616, +-42084772, 16944720, 74471512, 110361336, 128002376, 139204720, 146519056, 144579872, 130915432, 107955080, +77377592, 39032124, -4934918, -49726056, -92294016, -132781600, -171121696, -205086304, -232441488, -252692256, +-265895520, -271576672, -269452832, -259612512, -241535008, -214609856, -180362320, -142905904, -106488344, -73330128, +-43904768, -18021682, 4879083, 25580288, 44618804, 62207232, 78529184, 93599152, 106967768, 118061672, +126695096, 132961448, 137057776, 139608992, 141708688, 144187952, 147163840, 150511216, 154277904, 158406976, +162597792, 166676400, 170664816, 174398224, 177568448, 180142736, 182199488, 183408528, 183263568, 181747440, +179094224, 174972128, 168627392, 159862448, 149136304, 136598752, 121848760, 105010336, 87308632, 69930656, +52820044, 35374960, 18020610, 2053531, -12117713, -25485800, -38748120, -51050520, -61122216, -68888592, +-75053480, -79632448, -81893216, -81562504, -79292072, -75939856, -71945536, -67399848, -62368292, -57090316, +-51939576, -47119548, -42508364, -38028176, -33923800, -30288110, -26547192, -21916144, -16276315, -10230075, +-4461934, 731218, 5592585, 10865194, 17233556, 24533926, 31795642, 38166152, 43517144, 48241608, +52942452, 58260696, 64491620, 71342088, 78354696, 85415624, 92620968, 99962680, 107408008, 114904872, +122087664, 128344360, 133310416, 136963824, 139292768, 140327856, 140374560, 139734608, 138376864, 136256768, +133678176, 130995432, 128357248, 126021320, 124419296, 123687544, 123623120, 124185224, 125509144, 127505232, +130003288, 133111776, 136913360, 141143904, 145602608, 150361968, 155197040, 159469984, 162880192, 165587088, +167499424, 168321920, 168255344, 167751216, 166788608, 165273024, 163637184, 162187632, 160570576, 158612064, +156744832, 155027920, 152930368, 150392032, 147729152, 144544976, 140299408, 135554544, 131003480, 126167888, +120727232, 115672056, 111467824, 107095544, 102325448, 98324152, 95037960, 91263224, 87568480, 85192288, +82870856, 79462264, 77278272, 77233712, 75366472, 70892192, 69963408, 73052560, 70506720, 61724584, +61392800, 70719856, 66434556, 43883292, 42880416, 91149408, 146700512, 147194432, 99498824, 63552096, +59225452, 53955528, 40287332, 54138064, 101396128, 131937640, 112648936, 73204496, 52901648, 47913044, +36569500, 16180216, -7840463, -31339840, -31613106, 19630684, 101511552, 144464976, 113561080, 54766200, +29202020, 36538360, 37560564, 21087752, 6425808, -571768, -10691247, -19418084, -10495826, }, { 2034204, -1912871, -2893734, -2283312, 8800388, 21194590, 25225954, 27377732, 41857676, 65462816, 72565616, -42084772, -16944720, -74471512, -110361336, -128002376, -139204720, -146519056, -144579872, -130915432, -107955080, --77377592, -39032124, 4934918, 49726056, 92294016, 132781600, 171121696, 205086304, 232441488, 252692256, -265895520, 271576672, 269452832, 259612512, 241535008, 214609856, 180362320, 142905904, 106488344, 73330128, -43904768, 18021682, -4879083, -25580288, -44618804, -62207232, -78529184, -93599152, -106967768, -118061672, --126695096, -132961448, -137057776, -139608992, -141708688, -144187952, -147163840, -150511216, -154277904, -158406976, --162597792, -166676400, -170664816, -174398224, -177568448, -180142736, -182199488, -183408528, -183263568, -181747440, --179094224, -174972128, -168627392, -159862448, -149136304, -136598752, -121848760, -105010336, -87308632, -69930656, --52820044, -35374960, -18020610, -2053531, 12117713, 25485800, 38748120, 51050520, 61122216, 68888592, -75053480, 79632448, 81893216, 81562504, 79292072, 75939856, 71945536, 67399848, 62368292, 57090316, -51939576, 47119548, 42508364, 38028176, 33923800, 30288110, 26547192, 21916144, 16276315, 10230075, -4461934, -731218, -5592585, -10865194, -17233556, -24533926, -31795642, -38166152, -43517144, -48241608, --52942452, -58260696, -64491620, -71342088, -78354696, -85415624, -92620968, -99962680, -107408008, -114904872, --122087664, -128344360, -133310416, -136963824, -139292768, -140327856, -140374560, -139734608, -138376864, -136256768, --133678176, -130995432, -128357248, -126021320, -124419296, -123687544, -123623120, -124185224, -125509144, -127505232, --130003288, -133111776, -136913360, -141143904, -145602608, -150361968, -155197040, -159469984, -162880192, -165587088, --167499424, -168321920, -168255344, -167751216, -166788608, -165273024, -163637184, -162187632, -160570576, -158612064, --156744832, -155027920, -152930368, -150392032, -147729152, -144544976, -140299408, -135554544, -131003480, -126167888, --120727232, -115672056, -111467824, -107095544, -102325448, -98324152, -95037960, -91263224, -87568480, -85192288, --82870856, -79462264, -77278272, -77233712, -75366472, -70892192, -69963408, -73052560, -70506720, -61724584, --61392800, -70719856, -66434556, -43883292, -42880416, -91149408, -146700512, -147194432, -99498824, -63552096, --59225452, -53955528, -40287332, -54138064, -101396128, -131937640, -112648936, -73204496, -52901648, -47913044, --36569500, -16180216, 7840463, 31339840, 31613106, -19630684, -101511552, -144464976, -113561080, -54766200, --29202020, -36538360, -37560564, -21087752, -6425808, 571768, 10691247, 19418084, 10495826, }, +1912871, -2893734, -2283312, 8800388, 21194590, 25225954, 27377732, 41857676, 65462816, 72565616, +42084772, -16944720, -74471512, -110361336, -128002376, -139204720, -146519056, -144579872, -130915432, -107955080, +-77377592, -39032124, 4934918, 49726056, 92294016, 132781600, 171121696, 205086304, 232441488, 252692256, +265895520, 271576672, 269452832, 259612512, 241535008, 214609856, 180362320, 142905904, 106488344, 73330128, +43904768, 18021682, -4879083, -25580288, -44618804, -62207232, -78529184, -93599152, -106967768, -118061672, +-126695096, -132961448, -137057776, -139608992, -141708688, -144187952, -147163840, -150511216, -154277904, -158406976, +-162597792, -166676400, -170664816, -174398224, -177568448, -180142736, -182199488, -183408528, -183263568, -181747440, +-179094224, -174972128, -168627392, -159862448, -149136304, -136598752, -121848760, -105010336, -87308632, -69930656, +-52820044, -35374960, -18020610, -2053531, 12117713, 25485800, 38748120, 51050520, 61122216, 68888592, +75053480, 79632448, 81893216, 81562504, 79292072, 75939856, 71945536, 67399848, 62368292, 57090316, +51939576, 47119548, 42508364, 38028176, 33923800, 30288110, 26547192, 21916144, 16276315, 10230075, +4461934, -731218, -5592585, -10865194, -17233556, -24533926, -31795642, -38166152, -43517144, -48241608, +-52942452, -58260696, -64491620, -71342088, -78354696, -85415624, -92620968, -99962680, -107408008, -114904872, +-122087664, -128344360, -133310416, -136963824, -139292768, -140327856, -140374560, -139734608, -138376864, -136256768, +-133678176, -130995432, -128357248, -126021320, -124419296, -123687544, -123623120, -124185224, -125509144, -127505232, +-130003288, -133111776, -136913360, -141143904, -145602608, -150361968, -155197040, -159469984, -162880192, -165587088, +-167499424, -168321920, -168255344, -167751216, -166788608, -165273024, -163637184, -162187632, -160570576, -158612064, +-156744832, -155027920, -152930368, -150392032, -147729152, -144544976, -140299408, -135554544, -131003480, -126167888, +-120727232, -115672056, -111467824, -107095544, -102325448, -98324152, -95037960, -91263224, -87568480, -85192288, +-82870856, -79462264, -77278272, -77233712, -75366472, -70892192, -69963408, -73052560, -70506720, -61724584, +-61392800, -70719856, -66434556, -43883292, -42880416, -91149408, -146700512, -147194432, -99498824, -63552096, +-59225452, -53955528, -40287332, -54138064, -101396128, -131937640, -112648936, -73204496, -52901648, -47913044, +-36569500, -16180216, 7840463, 31339840, 31613106, -19630684, -101511552, -144464976, -113561080, -54766200, +-29202020, -36538360, -37560564, -21087752, -6425808, 571768, 10691247, 19418084, 10495826, }, }, { { -3675418, --81604, 10401337, 2452426, -11511586, 8936216, 50945828, 42283952, -43622908, -130787120, -129202816, --42832636, 50052476, 95645704, 102663680, 99507952, 95833072, 87682296, 72136664, 48658760, 18823232, --11484743, -35738424, -51967492, -60770568, -61992484, -57039312, -50183472, -44155484, -38139848, -32205276, --29515552, -32018444, -37574520, -43262132, -48939004, -56378960, -66799628, -79696336, -92715992, -102787160, --108356120, -110093968, -109205448, -106365936, -102507448, -98825048, -95390688, -91072632, -85015120, -77032920, --66794796, -53879292, -38326140, -20199768, 709207, 23946054, 48075716, 71977208, 95391224, 117751896, -137825504, 154971552, 169409616, 180861072, 188231232, 190866192, 188905552, 182306864, 170675024, 154083024, -133124120, 108329272, 80367432, 50499688, 20045686, -10299868, -40006008, -67978592, -92962960, -114493624, --132957152, -148661168, -161090800, -169352704, -173409840, -174407888, -173363136, -170013600, -163643088, -154449168, --143174352, -129936720, -114503288, -97249872, -78791176, -59132036, -38195680, -16756278, 4031364, 23615878, -41919416, 58651536, 73105176, 84196928, 90812792, 92942016, 92305824, 90893320, 88999776, 85517632, -79797808, 72384696, 64423972, 57170308, 51540144, 47448116, 44063680, 41047004, 38860864, 37816112, -37735584, 38522100, 40057012, 41652056, 42537356, 42621644, 42002096, 40294848, 37220188, 33149094, -28452010, 23117662, 17435420, 12073153, 7235410, 2716030, -1281511, -4464619, -7285875, -10326712, --13342853, -15938624, -18429168, -21095806, -23546622, -25574382, -27540404, -29378114, -30514132, -31028992, --31512176, -31836446, -31529892, -30946314, -30591978, -30040076, -28903520, -27822262, -27251030, -26651882, --25895432, -25755846, -26309896, -26737782, -27026618, -27815818, -28733868, -29087666, -29545616, -30953830, --32684164, -34200824, -36480380, -40064528, -44018048, -48190068, -53603876, -59761248, -64981780, -69554848, --74762496, -79546016, -82324320, -84368192, -87062744, -88705032, -88210040, -87769264, -88090320, -86719144, --83949432, -82848848, -81949584, -77654616, -73355360, -73597488, -72412608, -63796908, -57183196, -60899952, --60729228, -44258028, -32518272, -46260556, -54365696, -11566884, 57226144, 75289704, 24363738, -30342334, --42076720, -40014064, -55356224, -57699128, -12765180, 46264852, 58034672, 15075335, -36666672, -62856848, --71765680, -88359288, -116915992, -126920576, -78842712, 20230906, 97711576, 85162224, 3720516, -57114476, --48222284, -8475044, 5008469, -8928163, -14896557, -1306207, 12319040, 12317966, 4409321, }, +-81604, 10401337, 2452426, -11511586, 8936216, 50945828, 42283952, -43622908, -130787120, -129202816, +-42832636, 50052476, 95645704, 102663680, 99507952, 95833072, 87682296, 72136664, 48658760, 18823232, +-11484743, -35738424, -51967492, -60770568, -61992484, -57039312, -50183472, -44155484, -38139848, -32205276, +-29515552, -32018444, -37574520, -43262132, -48939004, -56378960, -66799628, -79696336, -92715992, -102787160, +-108356120, -110093968, -109205448, -106365936, -102507448, -98825048, -95390688, -91072632, -85015120, -77032920, +-66794796, -53879292, -38326140, -20199768, 709207, 23946054, 48075716, 71977208, 95391224, 117751896, +137825504, 154971552, 169409616, 180861072, 188231232, 190866192, 188905552, 182306864, 170675024, 154083024, +133124120, 108329272, 80367432, 50499688, 20045686, -10299868, -40006008, -67978592, -92962960, -114493624, +-132957152, -148661168, -161090800, -169352704, -173409840, -174407888, -173363136, -170013600, -163643088, -154449168, +-143174352, -129936720, -114503288, -97249872, -78791176, -59132036, -38195680, -16756278, 4031364, 23615878, +41919416, 58651536, 73105176, 84196928, 90812792, 92942016, 92305824, 90893320, 88999776, 85517632, +79797808, 72384696, 64423972, 57170308, 51540144, 47448116, 44063680, 41047004, 38860864, 37816112, +37735584, 38522100, 40057012, 41652056, 42537356, 42621644, 42002096, 40294848, 37220188, 33149094, +28452010, 23117662, 17435420, 12073153, 7235410, 2716030, -1281511, -4464619, -7285875, -10326712, +-13342853, -15938624, -18429168, -21095806, -23546622, -25574382, -27540404, -29378114, -30514132, -31028992, +-31512176, -31836446, -31529892, -30946314, -30591978, -30040076, -28903520, -27822262, -27251030, -26651882, +-25895432, -25755846, -26309896, -26737782, -27026618, -27815818, -28733868, -29087666, -29545616, -30953830, +-32684164, -34200824, -36480380, -40064528, -44018048, -48190068, -53603876, -59761248, -64981780, -69554848, +-74762496, -79546016, -82324320, -84368192, -87062744, -88705032, -88210040, -87769264, -88090320, -86719144, +-83949432, -82848848, -81949584, -77654616, -73355360, -73597488, -72412608, -63796908, -57183196, -60899952, +-60729228, -44258028, -32518272, -46260556, -54365696, -11566884, 57226144, 75289704, 24363738, -30342334, +-42076720, -40014064, -55356224, -57699128, -12765180, 46264852, 58034672, 15075335, -36666672, -62856848, +-71765680, -88359288, -116915992, -126920576, -78842712, 20230906, 97711576, 85162224, 3720516, -57114476, +-48222284, -8475044, 5008469, -8928163, -14896557, -1306207, 12319040, 12317966, 4409321, }, { 3675418, -81604, -10401337, -2452426, 11511586, -8936216, -50945828, -42283952, 43622908, 130787120, 129202816, -42832636, -50052476, -95645704, -102663680, -99507952, -95833072, -87682296, -72136664, -48658760, -18823232, -11484743, 35738424, 51967492, 60770568, 61992484, 57039312, 50183472, 44155484, 38139848, 32205276, -29515552, 32018444, 37574520, 43262132, 48939004, 56378960, 66799628, 79696336, 92715992, 102787160, -108356120, 110093968, 109205448, 106365936, 102507448, 98825048, 95390688, 91072632, 85015120, 77032920, -66794796, 53879292, 38326140, 20199768, -709207, -23946054, -48075716, -71977208, -95391224, -117751896, --137825504, -154971552, -169409616, -180861072, -188231232, -190866192, -188905552, -182306864, -170675024, -154083024, --133124120, -108329272, -80367432, -50499688, -20045686, 10299868, 40006008, 67978592, 92962960, 114493624, -132957152, 148661168, 161090800, 169352704, 173409840, 174407888, 173363136, 170013600, 163643088, 154449168, -143174352, 129936720, 114503288, 97249872, 78791176, 59132036, 38195680, 16756278, -4031364, -23615878, --41919416, -58651536, -73105176, -84196928, -90812792, -92942016, -92305824, -90893320, -88999776, -85517632, --79797808, -72384696, -64423972, -57170308, -51540144, -47448116, -44063680, -41047004, -38860864, -37816112, --37735584, -38522100, -40057012, -41652056, -42537356, -42621644, -42002096, -40294848, -37220188, -33149094, --28452010, -23117662, -17435420, -12073153, -7235410, -2716030, 1281511, 4464619, 7285875, 10326712, -13342853, 15938624, 18429168, 21095806, 23546622, 25574382, 27540404, 29378114, 30514132, 31028992, -31512176, 31836446, 31529892, 30946314, 30591978, 30040076, 28903520, 27822262, 27251030, 26651882, -25895432, 25755846, 26309896, 26737782, 27026618, 27815818, 28733868, 29087666, 29545616, 30953830, -32684164, 34200824, 36480380, 40064528, 44018048, 48190068, 53603876, 59761248, 64981780, 69554848, -74762496, 79546016, 82324320, 84368192, 87062744, 88705032, 88210040, 87769264, 88090320, 86719144, -83949432, 82848848, 81949584, 77654616, 73355360, 73597488, 72412608, 63796908, 57183196, 60899952, -60729228, 44258028, 32518272, 46260556, 54365696, 11566884, -57226144, -75289704, -24363738, 30342334, -42076720, 40014064, 55356224, 57699128, 12765180, -46264852, -58034672, -15075335, 36666672, 62856848, -71765680, 88359288, 116915992, 126920576, 78842712, -20230906, -97711576, -85162224, -3720516, 57114476, -48222284, 8475044, -5008469, 8928163, 14896557, 1306207, -12319040, -12317966, -4409321, }, +81604, -10401337, -2452426, 11511586, -8936216, -50945828, -42283952, 43622908, 130787120, 129202816, +42832636, -50052476, -95645704, -102663680, -99507952, -95833072, -87682296, -72136664, -48658760, -18823232, +11484743, 35738424, 51967492, 60770568, 61992484, 57039312, 50183472, 44155484, 38139848, 32205276, +29515552, 32018444, 37574520, 43262132, 48939004, 56378960, 66799628, 79696336, 92715992, 102787160, +108356120, 110093968, 109205448, 106365936, 102507448, 98825048, 95390688, 91072632, 85015120, 77032920, +66794796, 53879292, 38326140, 20199768, -709207, -23946054, -48075716, -71977208, -95391224, -117751896, +-137825504, -154971552, -169409616, -180861072, -188231232, -190866192, -188905552, -182306864, -170675024, -154083024, +-133124120, -108329272, -80367432, -50499688, -20045686, 10299868, 40006008, 67978592, 92962960, 114493624, +132957152, 148661168, 161090800, 169352704, 173409840, 174407888, 173363136, 170013600, 163643088, 154449168, +143174352, 129936720, 114503288, 97249872, 78791176, 59132036, 38195680, 16756278, -4031364, -23615878, +-41919416, -58651536, -73105176, -84196928, -90812792, -92942016, -92305824, -90893320, -88999776, -85517632, +-79797808, -72384696, -64423972, -57170308, -51540144, -47448116, -44063680, -41047004, -38860864, -37816112, +-37735584, -38522100, -40057012, -41652056, -42537356, -42621644, -42002096, -40294848, -37220188, -33149094, +-28452010, -23117662, -17435420, -12073153, -7235410, -2716030, 1281511, 4464619, 7285875, 10326712, +13342853, 15938624, 18429168, 21095806, 23546622, 25574382, 27540404, 29378114, 30514132, 31028992, +31512176, 31836446, 31529892, 30946314, 30591978, 30040076, 28903520, 27822262, 27251030, 26651882, +25895432, 25755846, 26309896, 26737782, 27026618, 27815818, 28733868, 29087666, 29545616, 30953830, +32684164, 34200824, 36480380, 40064528, 44018048, 48190068, 53603876, 59761248, 64981780, 69554848, +74762496, 79546016, 82324320, 84368192, 87062744, 88705032, 88210040, 87769264, 88090320, 86719144, +83949432, 82848848, 81949584, 77654616, 73355360, 73597488, 72412608, 63796908, 57183196, 60899952, +60729228, 44258028, 32518272, 46260556, 54365696, 11566884, -57226144, -75289704, -24363738, 30342334, +42076720, 40014064, 55356224, 57699128, 12765180, -46264852, -58034672, -15075335, 36666672, 62856848, +71765680, 88359288, 116915992, 126920576, 78842712, -20230906, -97711576, -85162224, -3720516, 57114476, +48222284, 8475044, -5008469, 8928163, 14896557, 1306207, -12319040, -12317966, -4409321, }, }, { { -762357, --6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, -68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, --82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, -59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, -115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, -40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, -8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, -95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, -70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, --166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, --219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, --148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, --228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, --245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, --214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, --112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, --56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, --20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, -22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, -31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, -11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, --18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, --31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, --14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, +-6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, +68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, +-82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, +59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, +115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, +40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, +8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, +95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, +70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, +-166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, +-219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, +-148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, +-228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, +-245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, +-214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, +-112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, +-56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, +-20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, +22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, +31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, +11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, +-18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, +-31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, +-14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, { -762357, --6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, -68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, --82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, -59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, -115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, -40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, -8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, -95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, -70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, --166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, --219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, --148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, --228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, --245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, --214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, --112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, --56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, --20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, -22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, -31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, -11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, --18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, --31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, --14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, +-6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, +68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, +-82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, +59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, +115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, +40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, +8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, +95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, +70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, +-166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, +-219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, +-148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, +-228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, +-245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, +-214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, +-112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, +-56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, +-20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, +22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, +31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, +11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, +-18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, +-31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, +-14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, }, { { -20420422, --40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, -39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, -8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, --50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, --66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, -27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, -66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, -78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, -151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, -32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, --212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, --240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, --70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, -55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, -108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, -106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, -102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, -84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, -77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, -77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, -52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, -18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, --35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, -5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, +-40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, +39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, +8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, +-50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, +-66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, +27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, +66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, +78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, +151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, +32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, +-212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, +-240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, +-70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, +55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, +108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, +106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, +102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, +84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, +77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, +77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, +52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, +18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, +-35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, +5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, { -20420422, --40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, -39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, -8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, --50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, --66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, -27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, -66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, -78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, -151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, -32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, --212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, --240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, --70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, -55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, -108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, -106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, -102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, -84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, -77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, -77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, -52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, -18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, --35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, -5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, +-40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, +39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, +8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, +-50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, +-66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, +27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, +66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, +78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, +151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, +32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, +-212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, +-240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, +-70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, +55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, +108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, +106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, +102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, +84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, +77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, +77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, +52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, +18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, +-35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, +5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, }, { { 14732275, -11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, -164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, --306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, -143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, -294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, -135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, --11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, --67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, --64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, --62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, --113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, --9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, -67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, -94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, -77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, --2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, --39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, --12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, -8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, -18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, -28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, -27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, --10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, -21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, +11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, +164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, +-306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, +143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, +294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, +135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, +-11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, +-67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, +-64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, +-62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, +-113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, +-9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, +67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, +94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, +77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, +-2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, +-39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, +-12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, +8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, +18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, +28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, +27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, +-10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, +21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, { 14732275, -11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, -164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, --306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, -143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, -294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, -135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, --11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, --67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, --64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, --62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, --113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, --9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, -67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, -94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, -77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, --2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, --39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, --12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, -8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, -18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, -28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, -27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, --10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, -21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, +11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, +164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, +-306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, +143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, +294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, +135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, +-11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, +-67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, +-64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, +-62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, +-113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, +-9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, +67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, +94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, +77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, +-2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, +-39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, +-12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, +8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, +18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, +28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, +27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, +-10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, +21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, }, }; const Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 481896416, -310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, -40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, -77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, --337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, --347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, --265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, --149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, --55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, -34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, -121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, -171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, -229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, -289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, -334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, -376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, -450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, +310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, +40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, +77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, +-337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, +-347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, +-265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, +-149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, +-55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, +34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, +121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, +171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, +229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, +289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, +334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, +376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, +450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, { 481896416, -310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, -40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, -77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, --337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, --347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, --265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, --149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, --55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, -34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, -121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, -171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, -229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, -289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, -334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, -376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, -450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, +310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, +40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, +77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, +-337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, +-347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, +-265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, +-149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, +-55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, +34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, +121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, +171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, +229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, +289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, +334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, +376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, +450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, }, { { 13525926, -183669984, 362690656, 366411168, 138906224, -214040240, -522691616, -677840320, -674817728, -568401856, -410595104, --229047392, -39669392, 141587360, 300526368, 428658144, 521396160, 575446144, 590423808, 571661760, 529043328, -471929408, 405152864, 330017760, 248510032, 165263904, 85160072, 10375030, -59271084, -124093952, -183848752, --238508128, -288401696, -333674400, -374409472, -411122848, -444532864, -474971296, -502325408, -526306912, -546517440, --562593472, -574554944, -582817408, -587780800, -589642624, -588579072, -584835520, -578711936, -570693248, -561455296, --551466304, -540655296, -528643360, -515168992, -500203168, -483882304, -466478016, -448338752, -429813472, -411243104, --392908448, -374906080, -357258080, -340159808, -323866848, -308357728, -293488000, -279438080, -266554256, -254817184, --243973472, -234108464, -225463232, -217766112, -210407760, -203240544, -196530192, -190128544, -183390272, -175983056, --168182864, -160230736, -151880240, -142743232, -132778376, -122292752, -111605264, -100761544, -89523224, -77611136, --64876016, -51212116, -36453536, -20468204, -3209414, 15364172, 35185984, 55814712, 76534704, 96804264, -116362472, 134906000, 151974192, 167189120, 180361248, 191393408, 200296336, 207218208, 212311504, 215768416, -218109712, 220124048, 222336496, 224759936, 227243504, 229805440, 232639584, 236098640, 240605680, 246271280, -252668096, 259198048, 265524544, 271540192, 277264832, 282908960, 288683008, 294484448, 300107616, 305644896, -311247680, 316729152, 321888480, 326903904, 331966080, 336980448, 342003424, 347368896, 353091936, 358864928, -364784448, 371252128, 378262080, 385742272, 394208192, 404053344, 414948608, 426906880, 440630368, 456193696, -473796640, 495514144, 520240800, 534992928, 520508704, 473353184, 415980480, 375763456, 359659488, }, +183669984, 362690656, 366411168, 138906224, -214040240, -522691616, -677840320, -674817728, -568401856, -410595104, +-229047392, -39669392, 141587360, 300526368, 428658144, 521396160, 575446144, 590423808, 571661760, 529043328, +471929408, 405152864, 330017760, 248510032, 165263904, 85160072, 10375030, -59271084, -124093952, -183848752, +-238508128, -288401696, -333674400, -374409472, -411122848, -444532864, -474971296, -502325408, -526306912, -546517440, +-562593472, -574554944, -582817408, -587780800, -589642624, -588579072, -584835520, -578711936, -570693248, -561455296, +-551466304, -540655296, -528643360, -515168992, -500203168, -483882304, -466478016, -448338752, -429813472, -411243104, +-392908448, -374906080, -357258080, -340159808, -323866848, -308357728, -293488000, -279438080, -266554256, -254817184, +-243973472, -234108464, -225463232, -217766112, -210407760, -203240544, -196530192, -190128544, -183390272, -175983056, +-168182864, -160230736, -151880240, -142743232, -132778376, -122292752, -111605264, -100761544, -89523224, -77611136, +-64876016, -51212116, -36453536, -20468204, -3209414, 15364172, 35185984, 55814712, 76534704, 96804264, +116362472, 134906000, 151974192, 167189120, 180361248, 191393408, 200296336, 207218208, 212311504, 215768416, +218109712, 220124048, 222336496, 224759936, 227243504, 229805440, 232639584, 236098640, 240605680, 246271280, +252668096, 259198048, 265524544, 271540192, 277264832, 282908960, 288683008, 294484448, 300107616, 305644896, +311247680, 316729152, 321888480, 326903904, 331966080, 336980448, 342003424, 347368896, 353091936, 358864928, +364784448, 371252128, 378262080, 385742272, 394208192, 404053344, 414948608, 426906880, 440630368, 456193696, +473796640, 495514144, 520240800, 534992928, 520508704, 473353184, 415980480, 375763456, 359659488, }, { -13525926, --183669984, -362690656, -366411168, -138906224, 214040240, 522691616, 677840320, 674817728, 568401856, 410595104, -229047392, 39669392, -141587360, -300526368, -428658144, -521396160, -575446144, -590423808, -571661760, -529043328, --471929408, -405152864, -330017760, -248510032, -165263904, -85160072, -10375030, 59271084, 124093952, 183848752, -238508128, 288401696, 333674400, 374409472, 411122848, 444532864, 474971296, 502325408, 526306912, 546517440, -562593472, 574554944, 582817408, 587780800, 589642624, 588579072, 584835520, 578711936, 570693248, 561455296, -551466304, 540655296, 528643360, 515168992, 500203168, 483882304, 466478016, 448338752, 429813472, 411243104, -392908448, 374906080, 357258080, 340159808, 323866848, 308357728, 293488000, 279438080, 266554256, 254817184, -243973472, 234108464, 225463232, 217766112, 210407760, 203240544, 196530192, 190128544, 183390272, 175983056, -168182864, 160230736, 151880240, 142743232, 132778376, 122292752, 111605264, 100761544, 89523224, 77611136, -64876016, 51212116, 36453536, 20468204, 3209414, -15364172, -35185984, -55814712, -76534704, -96804264, --116362472, -134906000, -151974192, -167189120, -180361248, -191393408, -200296336, -207218208, -212311504, -215768416, --218109712, -220124048, -222336496, -224759936, -227243504, -229805440, -232639584, -236098640, -240605680, -246271280, --252668096, -259198048, -265524544, -271540192, -277264832, -282908960, -288683008, -294484448, -300107616, -305644896, --311247680, -316729152, -321888480, -326903904, -331966080, -336980448, -342003424, -347368896, -353091936, -358864928, --364784448, -371252128, -378262080, -385742272, -394208192, -404053344, -414948608, -426906880, -440630368, -456193696, --473796640, -495514144, -520240800, -534992928, -520508704, -473353184, -415980480, -375763456, -359659488, }, +-183669984, -362690656, -366411168, -138906224, 214040240, 522691616, 677840320, 674817728, 568401856, 410595104, +229047392, 39669392, -141587360, -300526368, -428658144, -521396160, -575446144, -590423808, -571661760, -529043328, +-471929408, -405152864, -330017760, -248510032, -165263904, -85160072, -10375030, 59271084, 124093952, 183848752, +238508128, 288401696, 333674400, 374409472, 411122848, 444532864, 474971296, 502325408, 526306912, 546517440, +562593472, 574554944, 582817408, 587780800, 589642624, 588579072, 584835520, 578711936, 570693248, 561455296, +551466304, 540655296, 528643360, 515168992, 500203168, 483882304, 466478016, 448338752, 429813472, 411243104, +392908448, 374906080, 357258080, 340159808, 323866848, 308357728, 293488000, 279438080, 266554256, 254817184, +243973472, 234108464, 225463232, 217766112, 210407760, 203240544, 196530192, 190128544, 183390272, 175983056, +168182864, 160230736, 151880240, 142743232, 132778376, 122292752, 111605264, 100761544, 89523224, 77611136, +64876016, 51212116, 36453536, 20468204, 3209414, -15364172, -35185984, -55814712, -76534704, -96804264, +-116362472, -134906000, -151974192, -167189120, -180361248, -191393408, -200296336, -207218208, -212311504, -215768416, +-218109712, -220124048, -222336496, -224759936, -227243504, -229805440, -232639584, -236098640, -240605680, -246271280, +-252668096, -259198048, -265524544, -271540192, -277264832, -282908960, -288683008, -294484448, -300107616, -305644896, +-311247680, -316729152, -321888480, -326903904, -331966080, -336980448, -342003424, -347368896, -353091936, -358864928, +-364784448, -371252128, -378262080, -385742272, -394208192, -404053344, -414948608, -426906880, -440630368, -456193696, +-473796640, -495514144, -520240800, -534992928, -520508704, -473353184, -415980480, -375763456, -359659488, }, }, { { 66455492, -42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, --47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, -66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, --79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, --68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, --153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, --20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, -276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, -242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, -83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, -66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, -28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, --31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, -26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, -61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, -71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, +42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, +-47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, +66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, +-79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, +-68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, +-153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, +-20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, +276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, +242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, +83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, +66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, +28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, +-31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, +26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, +61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, +71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, { 66455492, -42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, --47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, -66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, --79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, --68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, --153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, --20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, -276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, -242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, -83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, -66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, -28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, --31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, -26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, -61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, -71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, +42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, +-47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, +66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, +-79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, +-68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, +-153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, +-20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, +276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, +242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, +83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, +66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, +28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, +-31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, +26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, +61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, +71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, }, { { 11833172, -22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, --101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, -145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, --130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, --295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, --126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, --25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, -63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, -109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, -15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, --109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, --92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, -2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, -76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, -186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, -240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, +22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, +-101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, +145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, +-130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, +-295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, +-126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, +-25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, +63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, +109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, +15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, +-109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, +-92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, +2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, +76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, +186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, +240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, { 11833172, -22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, --101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, -145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, --130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, --295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, --126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, --25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, -63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, -109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, -15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, --109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, --92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, -2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, -76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, -186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, -240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, +22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, +-101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, +145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, +-130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, +-295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, +-126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, +-25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, +63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, +109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, +15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, +-109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, +-92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, +2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, +76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, +186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, +240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, }, { { -2799245, --6461242, -4839355, 4228932, 10352482, 5557688, -2879239, -4031901, -4235375, -23969676, -69864624, --119191248, -140357376, -124462248, -88925688, -53108344, -20214264, 15939697, 56487948, 96248608, 131457136, -161556272, 184781840, 197673184, 199340176, 192308768, 178485952, 157262912, 128219808, 93059056, 53966264, -12078522, -31656594, -75794896, -119164408, -160668816, -197753184, -226699648, -245372560, -254762432, -257492416, --255849056, -251453152, -245508384, -238591344, -230725104, -221897344, -212102672, -201079632, -188643552, -175189568, --161430096, -147956784, -135404752, -124500368, -115428320, -107563160, -100188704, -93028992, -85878944, -78345576, --70234528, -61632780, -52467320, -42505680, -31803696, -20560008, -8610336, 4320737, 17988396, 31924492, -46197204, 61139932, 76425184, 91154776, 104847664, 117561848, 128919352, 137823360, 143591488, 146795008, -148332608, 148056112, 145138224, 139709920, 133072048, 125938104, 117463064, 106697192, 94169304, 81123880, -67869608, 53943716, 39527120, 25675314, 13233868, 2276333, -7464653, -16153372, -23796266, -30318712, --35788888, -40561672, -44957572, -48943300, -52537652, -56276420, -60665876, -65368328, -69496864, -72567768, --74776992, -76658720, -78807280, -81478752, -84098680, -85603528, -85559504, -84545360, -83402360, -82655568, --82548736, -82935280, -83151104, -82575576, -81216224, -79330728, -76860584, -73636680, -69632696, -64636572, --58252104, -50539416, -42062764, -33211908, -24143622, -15275051, -7023346, 731755, 8172249, 14932528, -20656646, 25547540, 29744796, 33010044, 35549980, 38117836, 40965936, 43895640, 47351476, 52045340, -58054536, 66093104, 78244104, 94179504, 107807440, 111929536, 106298832, 97620848, 92195232, }, +-6461242, -4839355, 4228932, 10352482, 5557688, -2879239, -4031901, -4235375, -23969676, -69864624, +-119191248, -140357376, -124462248, -88925688, -53108344, -20214264, 15939697, 56487948, 96248608, 131457136, +161556272, 184781840, 197673184, 199340176, 192308768, 178485952, 157262912, 128219808, 93059056, 53966264, +12078522, -31656594, -75794896, -119164408, -160668816, -197753184, -226699648, -245372560, -254762432, -257492416, +-255849056, -251453152, -245508384, -238591344, -230725104, -221897344, -212102672, -201079632, -188643552, -175189568, +-161430096, -147956784, -135404752, -124500368, -115428320, -107563160, -100188704, -93028992, -85878944, -78345576, +-70234528, -61632780, -52467320, -42505680, -31803696, -20560008, -8610336, 4320737, 17988396, 31924492, +46197204, 61139932, 76425184, 91154776, 104847664, 117561848, 128919352, 137823360, 143591488, 146795008, +148332608, 148056112, 145138224, 139709920, 133072048, 125938104, 117463064, 106697192, 94169304, 81123880, +67869608, 53943716, 39527120, 25675314, 13233868, 2276333, -7464653, -16153372, -23796266, -30318712, +-35788888, -40561672, -44957572, -48943300, -52537652, -56276420, -60665876, -65368328, -69496864, -72567768, +-74776992, -76658720, -78807280, -81478752, -84098680, -85603528, -85559504, -84545360, -83402360, -82655568, +-82548736, -82935280, -83151104, -82575576, -81216224, -79330728, -76860584, -73636680, -69632696, -64636572, +-58252104, -50539416, -42062764, -33211908, -24143622, -15275051, -7023346, 731755, 8172249, 14932528, +20656646, 25547540, 29744796, 33010044, 35549980, 38117836, 40965936, 43895640, 47351476, 52045340, +58054536, 66093104, 78244104, 94179504, 107807440, 111929536, 106298832, 97620848, 92195232, }, { 2799245, -6461242, 4839355, -4228932, -10352482, -5557688, 2879239, 4031901, 4235375, 23969676, 69864624, -119191248, 140357376, 124462248, 88925688, 53108344, 20214264, -15939697, -56487948, -96248608, -131457136, --161556272, -184781840, -197673184, -199340176, -192308768, -178485952, -157262912, -128219808, -93059056, -53966264, --12078522, 31656594, 75794896, 119164408, 160668816, 197753184, 226699648, 245372560, 254762432, 257492416, -255849056, 251453152, 245508384, 238591344, 230725104, 221897344, 212102672, 201079632, 188643552, 175189568, -161430096, 147956784, 135404752, 124500368, 115428320, 107563160, 100188704, 93028992, 85878944, 78345576, -70234528, 61632780, 52467320, 42505680, 31803696, 20560008, 8610336, -4320737, -17988396, -31924492, --46197204, -61139932, -76425184, -91154776, -104847664, -117561848, -128919352, -137823360, -143591488, -146795008, --148332608, -148056112, -145138224, -139709920, -133072048, -125938104, -117463064, -106697192, -94169304, -81123880, --67869608, -53943716, -39527120, -25675314, -13233868, -2276333, 7464653, 16153372, 23796266, 30318712, -35788888, 40561672, 44957572, 48943300, 52537652, 56276420, 60665876, 65368328, 69496864, 72567768, -74776992, 76658720, 78807280, 81478752, 84098680, 85603528, 85559504, 84545360, 83402360, 82655568, -82548736, 82935280, 83151104, 82575576, 81216224, 79330728, 76860584, 73636680, 69632696, 64636572, -58252104, 50539416, 42062764, 33211908, 24143622, 15275051, 7023346, -731755, -8172249, -14932528, --20656646, -25547540, -29744796, -33010044, -35549980, -38117836, -40965936, -43895640, -47351476, -52045340, --58054536, -66093104, -78244104, -94179504, -107807440, -111929536, -106298832, -97620848, -92195232, }, +6461242, 4839355, -4228932, -10352482, -5557688, 2879239, 4031901, 4235375, 23969676, 69864624, +119191248, 140357376, 124462248, 88925688, 53108344, 20214264, -15939697, -56487948, -96248608, -131457136, +-161556272, -184781840, -197673184, -199340176, -192308768, -178485952, -157262912, -128219808, -93059056, -53966264, +-12078522, 31656594, 75794896, 119164408, 160668816, 197753184, 226699648, 245372560, 254762432, 257492416, +255849056, 251453152, 245508384, 238591344, 230725104, 221897344, 212102672, 201079632, 188643552, 175189568, +161430096, 147956784, 135404752, 124500368, 115428320, 107563160, 100188704, 93028992, 85878944, 78345576, +70234528, 61632780, 52467320, 42505680, 31803696, 20560008, 8610336, -4320737, -17988396, -31924492, +-46197204, -61139932, -76425184, -91154776, -104847664, -117561848, -128919352, -137823360, -143591488, -146795008, +-148332608, -148056112, -145138224, -139709920, -133072048, -125938104, -117463064, -106697192, -94169304, -81123880, +-67869608, -53943716, -39527120, -25675314, -13233868, -2276333, 7464653, 16153372, 23796266, 30318712, +35788888, 40561672, 44957572, 48943300, 52537652, 56276420, 60665876, 65368328, 69496864, 72567768, +74776992, 76658720, 78807280, 81478752, 84098680, 85603528, 85559504, 84545360, 83402360, 82655568, +82548736, 82935280, 83151104, 82575576, 81216224, 79330728, 76860584, 73636680, 69632696, 64636572, +58252104, 50539416, 42062764, 33211908, 24143622, 15275051, 7023346, -731755, -8172249, -14932528, +-20656646, -25547540, -29744796, -33010044, -35549980, -38117836, -40965936, -43895640, -47351476, -52045340, +-58054536, -66093104, -78244104, -94179504, -107807440, -111929536, -106298832, -97620848, -92195232, }, }, { { 4660577, --3761318, 2147484, 14144938, 1481764, -20578798, 3313031, 73286104, 106591424, 42097660, -72984920, --141153024, -127037080, -72848552, -26254598, 4194036, 29984240, 56193740, 80756656, 100364256, 110516488, -108207944, 95994128, 79020416, 60338920, 42405824, 28893856, 21281562, 17347910, 15633144, 17613660, -23518704, 29914984, 33616708, 35107064, 36514200, 38280508, 38737920, 35492536, 27007292, 13924821, --1247151, -16257525, -30282740, -43022152, -54204636, -64430416, -75067976, -86801824, -99237904, -111906984, --124563712, -136666928, -147541792, -156717984, -163421360, -166405824, -164998144, -159533872, -150274464, -136927312, --119659936, -99412920, -76727440, -51388208, -23609436, 5508833, 34976068, 64331632, 92863096, 119363048, -142796384, 162450688, 177512080, 187299232, 191844384, 191558768, 186469760, 176480736, 162277824, 145250432, -126342904, 105501576, 82560008, 58354648, 34439196, 11667279, -10382010, -32273458, -53592064, -73464344, --91631520, -108246600, -123020752, -135405824, -145302496, -152779504, -157352032, -158328064, -155697392, -150061328, --141810688, -130838664, -116973432, -100589208, -83070576, -66531192, -52418464, -40350144, -28921236, -17620104, --7400229, 453656, 5391795, 7756174, 8531953, 8819715, 9077950, 9011378, 8390755, 7570417, -7068980, 7218230, 8370355, 10827613, 14411226, 18627810, 23251880, 28213104, 33091112, 37315748, -40679244, 43155832, 44554380, 44824428, 44306344, 43304008, 41874320, 40254580, 38846904, 37594924, -36056788, 34188476, 32320702, 30408906, 28090696, 25396678, 22599582, 19570556, 16100222, 12525735, -9177808, 5531918, 844498, -4535486, -9188009, -11842299, -12232067, -11146514, -10013716, }, +-3761318, 2147484, 14144938, 1481764, -20578798, 3313031, 73286104, 106591424, 42097660, -72984920, +-141153024, -127037080, -72848552, -26254598, 4194036, 29984240, 56193740, 80756656, 100364256, 110516488, +108207944, 95994128, 79020416, 60338920, 42405824, 28893856, 21281562, 17347910, 15633144, 17613660, +23518704, 29914984, 33616708, 35107064, 36514200, 38280508, 38737920, 35492536, 27007292, 13924821, +-1247151, -16257525, -30282740, -43022152, -54204636, -64430416, -75067976, -86801824, -99237904, -111906984, +-124563712, -136666928, -147541792, -156717984, -163421360, -166405824, -164998144, -159533872, -150274464, -136927312, +-119659936, -99412920, -76727440, -51388208, -23609436, 5508833, 34976068, 64331632, 92863096, 119363048, +142796384, 162450688, 177512080, 187299232, 191844384, 191558768, 186469760, 176480736, 162277824, 145250432, +126342904, 105501576, 82560008, 58354648, 34439196, 11667279, -10382010, -32273458, -53592064, -73464344, +-91631520, -108246600, -123020752, -135405824, -145302496, -152779504, -157352032, -158328064, -155697392, -150061328, +-141810688, -130838664, -116973432, -100589208, -83070576, -66531192, -52418464, -40350144, -28921236, -17620104, +-7400229, 453656, 5391795, 7756174, 8531953, 8819715, 9077950, 9011378, 8390755, 7570417, +7068980, 7218230, 8370355, 10827613, 14411226, 18627810, 23251880, 28213104, 33091112, 37315748, +40679244, 43155832, 44554380, 44824428, 44306344, 43304008, 41874320, 40254580, 38846904, 37594924, +36056788, 34188476, 32320702, 30408906, 28090696, 25396678, 22599582, 19570556, 16100222, 12525735, +9177808, 5531918, 844498, -4535486, -9188009, -11842299, -12232067, -11146514, -10013716, }, { -4660577, -3761318, -2147484, -14144938, -1481764, 20578798, -3313031, -73286104, -106591424, -42097660, 72984920, -141153024, 127037080, 72848552, 26254598, -4194036, -29984240, -56193740, -80756656, -100364256, -110516488, --108207944, -95994128, -79020416, -60338920, -42405824, -28893856, -21281562, -17347910, -15633144, -17613660, --23518704, -29914984, -33616708, -35107064, -36514200, -38280508, -38737920, -35492536, -27007292, -13924821, -1247151, 16257525, 30282740, 43022152, 54204636, 64430416, 75067976, 86801824, 99237904, 111906984, -124563712, 136666928, 147541792, 156717984, 163421360, 166405824, 164998144, 159533872, 150274464, 136927312, -119659936, 99412920, 76727440, 51388208, 23609436, -5508833, -34976068, -64331632, -92863096, -119363048, --142796384, -162450688, -177512080, -187299232, -191844384, -191558768, -186469760, -176480736, -162277824, -145250432, --126342904, -105501576, -82560008, -58354648, -34439196, -11667279, 10382010, 32273458, 53592064, 73464344, -91631520, 108246600, 123020752, 135405824, 145302496, 152779504, 157352032, 158328064, 155697392, 150061328, -141810688, 130838664, 116973432, 100589208, 83070576, 66531192, 52418464, 40350144, 28921236, 17620104, -7400229, -453656, -5391795, -7756174, -8531953, -8819715, -9077950, -9011378, -8390755, -7570417, --7068980, -7218230, -8370355, -10827613, -14411226, -18627810, -23251880, -28213104, -33091112, -37315748, --40679244, -43155832, -44554380, -44824428, -44306344, -43304008, -41874320, -40254580, -38846904, -37594924, --36056788, -34188476, -32320702, -30408906, -28090696, -25396678, -22599582, -19570556, -16100222, -12525735, --9177808, -5531918, -844498, 4535486, 9188009, 11842299, 12232067, 11146514, 10013716, }, +3761318, -2147484, -14144938, -1481764, 20578798, -3313031, -73286104, -106591424, -42097660, 72984920, +141153024, 127037080, 72848552, 26254598, -4194036, -29984240, -56193740, -80756656, -100364256, -110516488, +-108207944, -95994128, -79020416, -60338920, -42405824, -28893856, -21281562, -17347910, -15633144, -17613660, +-23518704, -29914984, -33616708, -35107064, -36514200, -38280508, -38737920, -35492536, -27007292, -13924821, +1247151, 16257525, 30282740, 43022152, 54204636, 64430416, 75067976, 86801824, 99237904, 111906984, +124563712, 136666928, 147541792, 156717984, 163421360, 166405824, 164998144, 159533872, 150274464, 136927312, +119659936, 99412920, 76727440, 51388208, 23609436, -5508833, -34976068, -64331632, -92863096, -119363048, +-142796384, -162450688, -177512080, -187299232, -191844384, -191558768, -186469760, -176480736, -162277824, -145250432, +-126342904, -105501576, -82560008, -58354648, -34439196, -11667279, 10382010, 32273458, 53592064, 73464344, +91631520, 108246600, 123020752, 135405824, 145302496, 152779504, 157352032, 158328064, 155697392, 150061328, +141810688, 130838664, 116973432, 100589208, 83070576, 66531192, 52418464, 40350144, 28921236, 17620104, +7400229, -453656, -5391795, -7756174, -8531953, -8819715, -9077950, -9011378, -8390755, -7570417, +-7068980, -7218230, -8370355, -10827613, -14411226, -18627810, -23251880, -28213104, -33091112, -37315748, +-40679244, -43155832, -44554380, -44824428, -44306344, -43304008, -41874320, -40254580, -38846904, -37594924, +-36056788, -34188476, -32320702, -30408906, -28090696, -25396678, -22599582, -19570556, -16100222, -12525735, +-9177808, -5531918, -844498, 4535486, 9188009, 11842299, 12232067, 11146514, 10013716, }, }, { { 5583995, -6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, -209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, --112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, --71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, -32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, -88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, -35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, -54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, -230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, -255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, -45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, -51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, -27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, --71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, --177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, --237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, +6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, +209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, +-112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, +-71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, +32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, +88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, +35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, +54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, +230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, +255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, +45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, +51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, +27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, +-71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, +-177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, +-237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, { 5583995, -6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, -209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, --112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, --71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, -32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, -88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, -35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, -54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, -230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, -255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, -45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, -51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, -27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, --71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, --177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, --237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, +6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, +209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, +-112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, +-71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, +32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, +88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, +35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, +54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, +230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, +255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, +45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, +51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, +27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, +-71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, +-177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, +-237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, }, { { 19684372, --18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, --58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, -21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, -39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, --72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, --80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, --35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, --26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, -63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, -226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, -160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, --89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, --191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, --158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, --73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, -1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, +-18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, +-58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, +21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, +39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, +-72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, +-80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, +-35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, +-26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, +63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, +226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, +160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, +-89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, +-191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, +-158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, +-73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, +1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, { 19684372, --18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, --58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, -21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, -39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, --72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, --80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, --35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, --26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, -63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, -226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, -160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, --89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, --191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, --158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, --73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, -1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, +-18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, +-58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, +21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, +39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, +-72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, +-80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, +-35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, +-26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, +63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, +226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, +160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, +-89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, +-191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, +-158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, +-73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, +1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, }, { { -4806606, -34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, -300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, --171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, --323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, -20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, -169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, -164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, -86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, -44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, -20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, --26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, --120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, --65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, --6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, -65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, -83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, +34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, +300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, +-171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, +-323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, +20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, +169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, +164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, +86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, +44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, +20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, +-26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, +-120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, +-65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, +-6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, +65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, +83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, { -4806606, -34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, -300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, --171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, --323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, -20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, -169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, -164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, -86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, -44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, -20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, --26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, --120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, --65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, --6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, -65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, -83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, +34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, +300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, +-171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, +-323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, +20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, +169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, +164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, +86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, +44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, +20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, +-26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, +-120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, +-65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, +-6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, +65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, +83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, }, }; const Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -150290032, --385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, -333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, --330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, --154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, -90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, -250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, -320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, -346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, -359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, -338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, -305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, -290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, -248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, -199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, -153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, -75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, +-385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, +333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, +-330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, +-154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, +90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, +250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, +320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, +346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, +359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, +338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, +305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, +290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, +248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, +199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, +153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, +75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, { -150290032, --385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, -333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, --330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, --154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, -90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, -250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, -320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, -346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, -359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, -338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, -305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, -290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, -248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, -199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, -153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, -75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, +-385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, +333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, +-330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, +-154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, +90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, +250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, +320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, +346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, +359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, +338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, +305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, +290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, +248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, +199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, +153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, +75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, }, { { 73902968, -124324808, -33054606, -330379616, -581539136, -632991744, -467241440, -182312768, 105196096, 331635360, 486648256, -577677952, 609132672, 585046464, 514585408, 409511712, 280498400, 138183056, -4979478, -136984224, -250866896, --346249536, -425859424, -490726848, -539250304, -570464512, -586600192, -591648384, -588483520, -578389312, -562420032, --541853056, -517614976, -490312384, -460739936, -429676032, -397331168, -363471264, -327923424, -290718816, -252093104, --212628800, -173132816, -134193568, -96038152, -58834608, -22848690, 11643656, 44357884, 75023952, 103676752, -130797864, 156929520, 182224192, 206464448, 229324944, 250495920, 269728768, 286901120, 301999008, 315101344, -326414304, 336174080, 344446720, 351235968, 356772736, 361376928, 365071680, 367741536, 369632416, 371208128, -372593792, 373728192, 374967296, 376884448, 379524256, 382521600, 385921056, 390188640, 395385024, 400983520, -406621728, 412490272, 418835008, 425467520, 431946464, 438020640, 443805408, 449606304, 455618720, 461792192, -467974272, 474057024, 479896576, 485230368, 489764256, 493161568, 494904256, 494442528, 491595520, 486565568, -479537408, 470545888, 459753152, 447557600, 434411232, 420759168, 407075936, 393776576, 381201984, 369796672, -360020256, 351915136, 345023840, 338894944, 333426368, 328718016, 324855744, 321818144, 319275520, 316555744, -313096672, 308839296, 304038048, 298951200, 293826752, 288817216, 283782976, 278508768, 273084768, 267690816, -262201312, 256463232, 250696704, 245142768, 239703728, 234326432, 229221872, 224347072, 219353648, 214260352, -209409184, 204729824, 199928576, 195166528, 190528512, 185382592, 179255824, 172332336, 164206800, 153830704, -140802992, 122852704, 91956320, 41217728, -19471772, -63043140, -69735776, -46819440, -15363098, }, +124324808, -33054606, -330379616, -581539136, -632991744, -467241440, -182312768, 105196096, 331635360, 486648256, +577677952, 609132672, 585046464, 514585408, 409511712, 280498400, 138183056, -4979478, -136984224, -250866896, +-346249536, -425859424, -490726848, -539250304, -570464512, -586600192, -591648384, -588483520, -578389312, -562420032, +-541853056, -517614976, -490312384, -460739936, -429676032, -397331168, -363471264, -327923424, -290718816, -252093104, +-212628800, -173132816, -134193568, -96038152, -58834608, -22848690, 11643656, 44357884, 75023952, 103676752, +130797864, 156929520, 182224192, 206464448, 229324944, 250495920, 269728768, 286901120, 301999008, 315101344, +326414304, 336174080, 344446720, 351235968, 356772736, 361376928, 365071680, 367741536, 369632416, 371208128, +372593792, 373728192, 374967296, 376884448, 379524256, 382521600, 385921056, 390188640, 395385024, 400983520, +406621728, 412490272, 418835008, 425467520, 431946464, 438020640, 443805408, 449606304, 455618720, 461792192, +467974272, 474057024, 479896576, 485230368, 489764256, 493161568, 494904256, 494442528, 491595520, 486565568, +479537408, 470545888, 459753152, 447557600, 434411232, 420759168, 407075936, 393776576, 381201984, 369796672, +360020256, 351915136, 345023840, 338894944, 333426368, 328718016, 324855744, 321818144, 319275520, 316555744, +313096672, 308839296, 304038048, 298951200, 293826752, 288817216, 283782976, 278508768, 273084768, 267690816, +262201312, 256463232, 250696704, 245142768, 239703728, 234326432, 229221872, 224347072, 219353648, 214260352, +209409184, 204729824, 199928576, 195166528, 190528512, 185382592, 179255824, 172332336, 164206800, 153830704, +140802992, 122852704, 91956320, 41217728, -19471772, -63043140, -69735776, -46819440, -15363098, }, { -73902968, --124324808, 33054606, 330379616, 581539136, 632991744, 467241440, 182312768, -105196096, -331635360, -486648256, --577677952, -609132672, -585046464, -514585408, -409511712, -280498400, -138183056, 4979478, 136984224, 250866896, -346249536, 425859424, 490726848, 539250304, 570464512, 586600192, 591648384, 588483520, 578389312, 562420032, -541853056, 517614976, 490312384, 460739936, 429676032, 397331168, 363471264, 327923424, 290718816, 252093104, -212628800, 173132816, 134193568, 96038152, 58834608, 22848690, -11643656, -44357884, -75023952, -103676752, --130797864, -156929520, -182224192, -206464448, -229324944, -250495920, -269728768, -286901120, -301999008, -315101344, --326414304, -336174080, -344446720, -351235968, -356772736, -361376928, -365071680, -367741536, -369632416, -371208128, --372593792, -373728192, -374967296, -376884448, -379524256, -382521600, -385921056, -390188640, -395385024, -400983520, --406621728, -412490272, -418835008, -425467520, -431946464, -438020640, -443805408, -449606304, -455618720, -461792192, --467974272, -474057024, -479896576, -485230368, -489764256, -493161568, -494904256, -494442528, -491595520, -486565568, --479537408, -470545888, -459753152, -447557600, -434411232, -420759168, -407075936, -393776576, -381201984, -369796672, --360020256, -351915136, -345023840, -338894944, -333426368, -328718016, -324855744, -321818144, -319275520, -316555744, --313096672, -308839296, -304038048, -298951200, -293826752, -288817216, -283782976, -278508768, -273084768, -267690816, --262201312, -256463232, -250696704, -245142768, -239703728, -234326432, -229221872, -224347072, -219353648, -214260352, --209409184, -204729824, -199928576, -195166528, -190528512, -185382592, -179255824, -172332336, -164206800, -153830704, --140802992, -122852704, -91956320, -41217728, 19471772, 63043140, 69735776, 46819440, 15363098, }, +-124324808, 33054606, 330379616, 581539136, 632991744, 467241440, 182312768, -105196096, -331635360, -486648256, +-577677952, -609132672, -585046464, -514585408, -409511712, -280498400, -138183056, 4979478, 136984224, 250866896, +346249536, 425859424, 490726848, 539250304, 570464512, 586600192, 591648384, 588483520, 578389312, 562420032, +541853056, 517614976, 490312384, 460739936, 429676032, 397331168, 363471264, 327923424, 290718816, 252093104, +212628800, 173132816, 134193568, 96038152, 58834608, 22848690, -11643656, -44357884, -75023952, -103676752, +-130797864, -156929520, -182224192, -206464448, -229324944, -250495920, -269728768, -286901120, -301999008, -315101344, +-326414304, -336174080, -344446720, -351235968, -356772736, -361376928, -365071680, -367741536, -369632416, -371208128, +-372593792, -373728192, -374967296, -376884448, -379524256, -382521600, -385921056, -390188640, -395385024, -400983520, +-406621728, -412490272, -418835008, -425467520, -431946464, -438020640, -443805408, -449606304, -455618720, -461792192, +-467974272, -474057024, -479896576, -485230368, -489764256, -493161568, -494904256, -494442528, -491595520, -486565568, +-479537408, -470545888, -459753152, -447557600, -434411232, -420759168, -407075936, -393776576, -381201984, -369796672, +-360020256, -351915136, -345023840, -338894944, -333426368, -328718016, -324855744, -321818144, -319275520, -316555744, +-313096672, -308839296, -304038048, -298951200, -293826752, -288817216, -283782976, -278508768, -273084768, -267690816, +-262201312, -256463232, -250696704, -245142768, -239703728, -234326432, -229221872, -224347072, -219353648, -214260352, +-209409184, -204729824, -199928576, -195166528, -190528512, -185382592, -179255824, -172332336, -164206800, -153830704, +-140802992, -122852704, -91956320, -41217728, 19471772, 63043140, 69735776, 46819440, 15363098, }, }, { { -20145544, --57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, -15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, --65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, --18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, --10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, -99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, -296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, -211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, --73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, --86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, --49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, --75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, --8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, -42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, -28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, --16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, +-57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, +15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, +-65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, +-18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, +-10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, +99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, +296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, +211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, +-73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, +-86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, +-49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, +-75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, +-8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, +42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, +28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, +-16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, { -20145544, --57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, -15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, --65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, --18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, --10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, -99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, -296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, -211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, --73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, --86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, --49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, --75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, --8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, -42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, -28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, --16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, +-57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, +15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, +-65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, +-18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, +-10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, +99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, +296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, +211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, +-73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, +-86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, +-49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, +-75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, +-8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, +42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, +28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, +-16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, }, { { -715649, --16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, -31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, --46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, --248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, -59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, -193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, -184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, -152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, -29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, --48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, -3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, -146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, -186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, -201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, -165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, -64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, +-16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, +31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, +-46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, +-248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, +59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, +193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, +184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, +152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, +29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, +-48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, +3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, +146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, +186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, +201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, +165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, +64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, { -715649, --16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, -31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, --46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, --248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, -59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, -193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, -184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, -152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, -29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, --48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, -3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, -146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, -186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, -201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, -165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, -64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, +-16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, +31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, +-46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, +-248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, +59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, +193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, +184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, +152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, +29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, +-48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, +3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, +146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, +186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, +201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, +165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, +64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, }, { { -2120103, --2182380, 2431488, 1641751, -9615358, -22197464, -26419418, -28747290, -43403864, -67200672, -74491912, --44185012, 14663555, 71995464, 107700600, 125167160, 136182672, 143301584, 141180944, 127339336, 104186776, -73414416, 34889092, -9259413, -54247584, -97008816, -137676256, -176203712, -210369104, -237915424, -258347648, --271745280, -277629920, -275695040, -266039936, -248164288, -221443152, -187384048, -150119312, -113909512, -80955304, --51719996, -26036092, -3349001, 17149804, 35995048, 53375168, 69480224, 84347792, 97516696, 108393704, -116807544, 122870424, 126759520, 129085240, 130963752, 133236864, 135994768, 139109152, 142654112, 146571120, -150532704, 154372400, 158137472, 161650224, 164578848, 166909952, 168740672, 169717248, 169319952, 167556880, -164671728, 160303744, 153696480, 144681344, 133714144, 120915680, 105893496, 88800600, 70846024, 53191024, -35800164, 18094160, 470836, -15789374, -30247308, -43886512, -57436596, -70047160, -80413600, -88464512, --94938640, -99840808, -102404368, -102376984, -100438880, -97423280, -93743568, -89524296, -84849224, -79921288, --75102336, -70636104, -66406100, -62290448, -58539332, -55291260, -51955144, -47705812, -42448772, -36826660, --31488552, -26699128, -22258132, -17449378, -11537356, -4669703, 2124398, 7988103, 12854300, 17106318, -21282100, 26047366, 31759136, 38082400, 44502304, 50960324, 57600880, 64343440, 71117144, 77954728, -84510464, 90070832, 94272920, 97199944, 98811088, 99022616, 98195840, 96741992, 94531696, 91417840, -87833688, 84206592, 80507016, 76945952, 74163344, 72266584, 70794480, 69801272, 69661688, 70023000, -70470216, 71217000, 70736504, 64242512, 48515412, 27780922, 10836202, 2334852, 127238, }, +-2182380, 2431488, 1641751, -9615358, -22197464, -26419418, -28747290, -43403864, -67200672, -74491912, +-44185012, 14663555, 71995464, 107700600, 125167160, 136182672, 143301584, 141180944, 127339336, 104186776, +73414416, 34889092, -9259413, -54247584, -97008816, -137676256, -176203712, -210369104, -237915424, -258347648, +-271745280, -277629920, -275695040, -266039936, -248164288, -221443152, -187384048, -150119312, -113909512, -80955304, +-51719996, -26036092, -3349001, 17149804, 35995048, 53375168, 69480224, 84347792, 97516696, 108393704, +116807544, 122870424, 126759520, 129085240, 130963752, 133236864, 135994768, 139109152, 142654112, 146571120, +150532704, 154372400, 158137472, 161650224, 164578848, 166909952, 168740672, 169717248, 169319952, 167556880, +164671728, 160303744, 153696480, 144681344, 133714144, 120915680, 105893496, 88800600, 70846024, 53191024, +35800164, 18094160, 470836, -15789374, -30247308, -43886512, -57436596, -70047160, -80413600, -88464512, +-94938640, -99840808, -102404368, -102376984, -100438880, -97423280, -93743568, -89524296, -84849224, -79921288, +-75102336, -70636104, -66406100, -62290448, -58539332, -55291260, -51955144, -47705812, -42448772, -36826660, +-31488552, -26699128, -22258132, -17449378, -11537356, -4669703, 2124398, 7988103, 12854300, 17106318, +21282100, 26047366, 31759136, 38082400, 44502304, 50960324, 57600880, 64343440, 71117144, 77954728, +84510464, 90070832, 94272920, 97199944, 98811088, 99022616, 98195840, 96741992, 94531696, 91417840, +87833688, 84206592, 80507016, 76945952, 74163344, 72266584, 70794480, 69801272, 69661688, 70023000, +70470216, 71217000, 70736504, 64242512, 48515412, 27780922, 10836202, 2334852, 127238, }, { 2120103, -2182380, -2431488, -1641751, 9615358, 22197464, 26419418, 28747290, 43403864, 67200672, 74491912, -44185012, -14663555, -71995464, -107700600, -125167160, -136182672, -143301584, -141180944, -127339336, -104186776, --73414416, -34889092, 9259413, 54247584, 97008816, 137676256, 176203712, 210369104, 237915424, 258347648, -271745280, 277629920, 275695040, 266039936, 248164288, 221443152, 187384048, 150119312, 113909512, 80955304, -51719996, 26036092, 3349001, -17149804, -35995048, -53375168, -69480224, -84347792, -97516696, -108393704, --116807544, -122870424, -126759520, -129085240, -130963752, -133236864, -135994768, -139109152, -142654112, -146571120, --150532704, -154372400, -158137472, -161650224, -164578848, -166909952, -168740672, -169717248, -169319952, -167556880, --164671728, -160303744, -153696480, -144681344, -133714144, -120915680, -105893496, -88800600, -70846024, -53191024, --35800164, -18094160, -470836, 15789374, 30247308, 43886512, 57436596, 70047160, 80413600, 88464512, -94938640, 99840808, 102404368, 102376984, 100438880, 97423280, 93743568, 89524296, 84849224, 79921288, -75102336, 70636104, 66406100, 62290448, 58539332, 55291260, 51955144, 47705812, 42448772, 36826660, -31488552, 26699128, 22258132, 17449378, 11537356, 4669703, -2124398, -7988103, -12854300, -17106318, --21282100, -26047366, -31759136, -38082400, -44502304, -50960324, -57600880, -64343440, -71117144, -77954728, --84510464, -90070832, -94272920, -97199944, -98811088, -99022616, -98195840, -96741992, -94531696, -91417840, --87833688, -84206592, -80507016, -76945952, -74163344, -72266584, -70794480, -69801272, -69661688, -70023000, --70470216, -71217000, -70736504, -64242512, -48515412, -27780922, -10836202, -2334852, -127238, }, +2182380, -2431488, -1641751, 9615358, 22197464, 26419418, 28747290, 43403864, 67200672, 74491912, +44185012, -14663555, -71995464, -107700600, -125167160, -136182672, -143301584, -141180944, -127339336, -104186776, +-73414416, -34889092, 9259413, 54247584, 97008816, 137676256, 176203712, 210369104, 237915424, 258347648, +271745280, 277629920, 275695040, 266039936, 248164288, 221443152, 187384048, 150119312, 113909512, 80955304, +51719996, 26036092, 3349001, -17149804, -35995048, -53375168, -69480224, -84347792, -97516696, -108393704, +-116807544, -122870424, -126759520, -129085240, -130963752, -133236864, -135994768, -139109152, -142654112, -146571120, +-150532704, -154372400, -158137472, -161650224, -164578848, -166909952, -168740672, -169717248, -169319952, -167556880, +-164671728, -160303744, -153696480, -144681344, -133714144, -120915680, -105893496, -88800600, -70846024, -53191024, +-35800164, -18094160, -470836, 15789374, 30247308, 43886512, 57436596, 70047160, 80413600, 88464512, +94938640, 99840808, 102404368, 102376984, 100438880, 97423280, 93743568, 89524296, 84849224, 79921288, +75102336, 70636104, 66406100, 62290448, 58539332, 55291260, 51955144, 47705812, 42448772, 36826660, +31488552, 26699128, 22258132, 17449378, 11537356, 4669703, -2124398, -7988103, -12854300, -17106318, +-21282100, -26047366, -31759136, -38082400, -44502304, -50960324, -57600880, -64343440, -71117144, -77954728, +-84510464, -90070832, -94272920, -97199944, -98811088, -99022616, -98195840, -96741992, -94531696, -91417840, +-87833688, -84206592, -80507016, -76945952, -74163344, -72266584, -70794480, -69801272, -69661688, -70023000, +-70470216, -71217000, -70736504, -64242512, -48515412, -27780922, -10836202, -2334852, -127238, }, }, { { -3671123, --39192, 10506027, 2583423, -11370389, 9127342, 51194400, 42549168, -43339980, -130446208, -128813048, --42433204, 50480360, 96136400, 103191960, 100044280, 96409128, 88321704, 72801840, 49335216, 19551764, --10698764, -34936336, -51146620, -59889024, -61062088, -56099788, -49212808, -43119860, -37066640, -31124554, --28390808, -30828738, -36359584, -42034844, -47656420, -55036784, -65441880, -78317656, -91272352, -101293584, --106852880, -108556912, -107599128, -104722040, -100854424, -97124240, -93621160, -89277872, -83206400, -75163000, --64862060, -51931524, -36353676, -18156974, 2804077, 26050588, 50218904, 74196632, 97649304, 120020176, -140148000, 157368672, 171831984, 183300608, 190740032, 193442112, 191497024, 184927328, 173375488, 156838784, -135890080, 111140872, 83263848, 53436908, 22994718, -7286412, -36909876, -64856152, -89820112, -111269720, --129658624, -145347600, -157740720, -165909760, -169906224, -170894064, -169792400, -166344624, -159930624, -150722752, --139369536, -126035816, -110575544, -93295280, -74738336, -54994908, -34042448, -12556337, 8343511, 27995134, -46311020, 63115620, 77687904, 88826368, 95461016, 97690640, 97167728, 95783680, 93926640, 90569584, -84949088, 77551000, 69654704, 62543852, 56989920, 52911848, 49627272, 46758772, 44623100, 43604120, -43661028, 44587668, 46148888, 47797616, 48853644, 49056044, 48447768, 46837156, 43954696, 39967892, -35283692, 30098594, 24612310, 19294604, 14492830, 10176925, 6356015, 3180423, 441845, -2350421, --5238250, -7852811, -10191957, -12593381, -14998026, -17055852, -18798534, -20420422, -21658446, -22225918, --22512072, -22933514, -22862648, -21058224, -17082696, -11787538, -6634114, -2837363, -695785, }, +-39192, 10506027, 2583423, -11370389, 9127342, 51194400, 42549168, -43339980, -130446208, -128813048, +-42433204, 50480360, 96136400, 103191960, 100044280, 96409128, 88321704, 72801840, 49335216, 19551764, +-10698764, -34936336, -51146620, -59889024, -61062088, -56099788, -49212808, -43119860, -37066640, -31124554, +-28390808, -30828738, -36359584, -42034844, -47656420, -55036784, -65441880, -78317656, -91272352, -101293584, +-106852880, -108556912, -107599128, -104722040, -100854424, -97124240, -93621160, -89277872, -83206400, -75163000, +-64862060, -51931524, -36353676, -18156974, 2804077, 26050588, 50218904, 74196632, 97649304, 120020176, +140148000, 157368672, 171831984, 183300608, 190740032, 193442112, 191497024, 184927328, 173375488, 156838784, +135890080, 111140872, 83263848, 53436908, 22994718, -7286412, -36909876, -64856152, -89820112, -111269720, +-129658624, -145347600, -157740720, -165909760, -169906224, -170894064, -169792400, -166344624, -159930624, -150722752, +-139369536, -126035816, -110575544, -93295280, -74738336, -54994908, -34042448, -12556337, 8343511, 27995134, +46311020, 63115620, 77687904, 88826368, 95461016, 97690640, 97167728, 95783680, 93926640, 90569584, +84949088, 77551000, 69654704, 62543852, 56989920, 52911848, 49627272, 46758772, 44623100, 43604120, +43661028, 44587668, 46148888, 47797616, 48853644, 49056044, 48447768, 46837156, 43954696, 39967892, +35283692, 30098594, 24612310, 19294604, 14492830, 10176925, 6356015, 3180423, 441845, -2350421, +-5238250, -7852811, -10191957, -12593381, -14998026, -17055852, -18798534, -20420422, -21658446, -22225918, +-22512072, -22933514, -22862648, -21058224, -17082696, -11787538, -6634114, -2837363, -695785, }, { 3671123, -39192, -10506027, -2583423, 11370389, -9127342, -51194400, -42549168, 43339980, 130446208, 128813048, -42433204, -50480360, -96136400, -103191960, -100044280, -96409128, -88321704, -72801840, -49335216, -19551764, -10698764, 34936336, 51146620, 59889024, 61062088, 56099788, 49212808, 43119860, 37066640, 31124554, -28390808, 30828738, 36359584, 42034844, 47656420, 55036784, 65441880, 78317656, 91272352, 101293584, -106852880, 108556912, 107599128, 104722040, 100854424, 97124240, 93621160, 89277872, 83206400, 75163000, -64862060, 51931524, 36353676, 18156974, -2804077, -26050588, -50218904, -74196632, -97649304, -120020176, --140148000, -157368672, -171831984, -183300608, -190740032, -193442112, -191497024, -184927328, -173375488, -156838784, --135890080, -111140872, -83263848, -53436908, -22994718, 7286412, 36909876, 64856152, 89820112, 111269720, -129658624, 145347600, 157740720, 165909760, 169906224, 170894064, 169792400, 166344624, 159930624, 150722752, -139369536, 126035816, 110575544, 93295280, 74738336, 54994908, 34042448, 12556337, -8343511, -27995134, --46311020, -63115620, -77687904, -88826368, -95461016, -97690640, -97167728, -95783680, -93926640, -90569584, --84949088, -77551000, -69654704, -62543852, -56989920, -52911848, -49627272, -46758772, -44623100, -43604120, --43661028, -44587668, -46148888, -47797616, -48853644, -49056044, -48447768, -46837156, -43954696, -39967892, --35283692, -30098594, -24612310, -19294604, -14492830, -10176925, -6356015, -3180423, -441845, 2350421, -5238250, 7852811, 10191957, 12593381, 14998026, 17055852, 18798534, 20420422, 21658446, 22225918, -22512072, 22933514, 22862648, 21058224, 17082696, 11787538, 6634114, 2837363, 695785, }, +39192, -10506027, -2583423, 11370389, -9127342, -51194400, -42549168, 43339980, 130446208, 128813048, +42433204, -50480360, -96136400, -103191960, -100044280, -96409128, -88321704, -72801840, -49335216, -19551764, +10698764, 34936336, 51146620, 59889024, 61062088, 56099788, 49212808, 43119860, 37066640, 31124554, +28390808, 30828738, 36359584, 42034844, 47656420, 55036784, 65441880, 78317656, 91272352, 101293584, +106852880, 108556912, 107599128, 104722040, 100854424, 97124240, 93621160, 89277872, 83206400, 75163000, +64862060, 51931524, 36353676, 18156974, -2804077, -26050588, -50218904, -74196632, -97649304, -120020176, +-140148000, -157368672, -171831984, -183300608, -190740032, -193442112, -191497024, -184927328, -173375488, -156838784, +-135890080, -111140872, -83263848, -53436908, -22994718, 7286412, 36909876, 64856152, 89820112, 111269720, +129658624, 145347600, 157740720, 165909760, 169906224, 170894064, 169792400, 166344624, 159930624, 150722752, +139369536, 126035816, 110575544, 93295280, 74738336, 54994908, 34042448, 12556337, -8343511, -27995134, +-46311020, -63115620, -77687904, -88826368, -95461016, -97690640, -97167728, -95783680, -93926640, -90569584, +-84949088, -77551000, -69654704, -62543852, -56989920, -52911848, -49627272, -46758772, -44623100, -43604120, +-43661028, -44587668, -46148888, -47797616, -48853644, -49056044, -48447768, -46837156, -43954696, -39967892, +-35283692, -30098594, -24612310, -19294604, -14492830, -10176925, -6356015, -3180423, -441845, 2350421, +5238250, 7852811, 10191957, 12593381, 14998026, 17055852, 18798534, 20420422, 21658446, 22225918, +22512072, 22933514, 22862648, 21058224, 17082696, 11787538, 6634114, 2837363, 695785, }, }, { { -680752, --6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, -70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, --79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, -64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, -121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, -48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, -19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, -107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, -84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, --149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, --200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, --125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, --201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, --213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, --174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, --49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, +-6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, +70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, +-79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, +64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, +121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, +48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, +19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, +107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, +84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, +-149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, +-200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, +-125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, +-201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, +-213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, +-174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, +-49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, { -680752, --6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, -70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, --79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, -64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, -121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, -48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, -19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, -107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, -84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, --149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, --200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, --125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, --201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, --213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, --174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, --49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, +-6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, +70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, +-79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, +64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, +121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, +48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, +19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, +107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, +84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, +-149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, +-200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, +-125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, +-201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, +-213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, +-174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, +-49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, }, { { -20460150, --40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, -38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, -6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, --53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, --70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, -22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, -60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, -71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, -143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, -22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, --224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, --254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, --87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, -35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, -83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, -73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, +-40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, +38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, +6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, +-53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, +-70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, +22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, +60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, +71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, +143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, +22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, +-224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, +-254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, +-87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, +35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, +83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, +73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, { -20460150, --40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, -38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, -6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, --53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, --70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, -22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, -60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, -71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, -143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, -22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, --224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, --254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, --87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, -35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, -83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, -73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, +-40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, +38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, +6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, +-53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, +-70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, +22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, +60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, +71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, +143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, +22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, +-224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, +-254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, +-87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, +35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, +83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, +73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, }, { { 14716705, -11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, -164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, --307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, -143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, -293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, -134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, --12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, --68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, --65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, --63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, --115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, --11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, -65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, -92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, -75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, --6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, +11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, +164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, +-307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, +143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, +293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, +134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, +-12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, +-68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, +-65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, +-63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, +-115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, +-11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, +65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, +92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, +75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, +-6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, { 14716705, -11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, -164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, --307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, -143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, -293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, -134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, --12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, --68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, --65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, --63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, --115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, --11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, -65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, -92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, -75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, --6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, +11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, +164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, +-307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, +143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, +293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, +134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, +-12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, +-68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, +-65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, +-63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, +-115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, +-11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, +65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, +92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, +75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, +-6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, }, }; const Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 458548416, -288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, -18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, -59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, --349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, --351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, --251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, --104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, -55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, +288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, +18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, +59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, +-349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, +-351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, +-251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, +-104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, +55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, { 458548416, -288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, -18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, -59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, --349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, --351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, --251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, --104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, -55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, +288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, +18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, +59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, +-349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, +-351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, +-251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, +-104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, +55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, }, { { -6680285, -164793056, 343598464, 346121216, 119204136, -232472624, -541734400, -697761472, -693628096, -586175552, -429270720, --248121328, -57235272, 124696320, 282600256, 410929056, 505404384, 559695424, 573703488, 555786496, 514943488, -457637344, 390174144, 316517088, 236630688, 152837488, 72540920, -216896, -68562176, -134133440, -193402384, --245631328, -294658912, -340661248, -380098688, -414168000, -447189312, -478065824, -503238624, -524577632, -544824640, --560739648, -569639872, -575469248, -580737024, -581515456, -576584320, -570787712, -564958400, -554609152, -540835136, --529266688, -518326848, -502419360, -483915040, -467812128, -450364896, -427169920, -403682368, -384242272, -362739520, --336320096, -312757376, -293879392, -270810048, -243498336, -222114240, -204527952, -179219328, -150961664, -132316128, --114280488, -82068232, -49047452, -29818348, 4310000, 85765128, 181594976, 229271264, 229039328, }, +164793056, 343598464, 346121216, 119204136, -232472624, -541734400, -697761472, -693628096, -586175552, -429270720, +-248121328, -57235272, 124696320, 282600256, 410929056, 505404384, 559695424, 573703488, 555786496, 514943488, +457637344, 390174144, 316517088, 236630688, 152837488, 72540920, -216896, -68562176, -134133440, -193402384, +-245631328, -294658912, -340661248, -380098688, -414168000, -447189312, -478065824, -503238624, -524577632, -544824640, +-560739648, -569639872, -575469248, -580737024, -581515456, -576584320, -570787712, -564958400, -554609152, -540835136, +-529266688, -518326848, -502419360, -483915040, -467812128, -450364896, -427169920, -403682368, -384242272, -362739520, +-336320096, -312757376, -293879392, -270810048, -243498336, -222114240, -204527952, -179219328, -150961664, -132316128, +-114280488, -82068232, -49047452, -29818348, 4310000, 85765128, 181594976, 229271264, 229039328, }, { 6680285, --164793056, -343598464, -346121216, -119204136, 232472624, 541734400, 697761472, 693628096, 586175552, 429270720, -248121328, 57235272, -124696320, -282600256, -410929056, -505404384, -559695424, -573703488, -555786496, -514943488, --457637344, -390174144, -316517088, -236630688, -152837488, -72540920, 216896, 68562176, 134133440, 193402384, -245631328, 294658912, 340661248, 380098688, 414168000, 447189312, 478065824, 503238624, 524577632, 544824640, -560739648, 569639872, 575469248, 580737024, 581515456, 576584320, 570787712, 564958400, 554609152, 540835136, -529266688, 518326848, 502419360, 483915040, 467812128, 450364896, 427169920, 403682368, 384242272, 362739520, -336320096, 312757376, 293879392, 270810048, 243498336, 222114240, 204527952, 179219328, 150961664, 132316128, -114280488, 82068232, 49047452, 29818348, -4310000, -85765128, -181594976, -229271264, -229039328, }, +-164793056, -343598464, -346121216, -119204136, 232472624, 541734400, 697761472, 693628096, 586175552, 429270720, +248121328, 57235272, -124696320, -282600256, -410929056, -505404384, -559695424, -573703488, -555786496, -514943488, +-457637344, -390174144, -316517088, -236630688, -152837488, -72540920, 216896, 68562176, 134133440, 193402384, +245631328, 294658912, 340661248, 380098688, 414168000, 447189312, 478065824, 503238624, 524577632, 544824640, +560739648, 569639872, 575469248, 580737024, 581515456, 576584320, 570787712, 564958400, 554609152, 540835136, +529266688, 518326848, 502419360, 483915040, 467812128, 450364896, 427169920, 403682368, 384242272, 362739520, +336320096, 312757376, 293879392, 270810048, 243498336, 222114240, 204527952, 179219328, 150961664, 132316128, +114280488, 82068232, 49047452, 29818348, -4310000, -85765128, -181594976, -229271264, -229039328, }, }, { { 56929792, -32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, --56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, -56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, --87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, --76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, --159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, --24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, -277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, +32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, +-56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, +56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, +-87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, +-76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, +-159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, +-24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, +277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, { 56929792, -32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, --56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, -56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, --87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, --76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, --159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, --24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, -277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, +32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, +-56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, +56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, +-87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, +-76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, +-159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, +-24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, +277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, }, { { 13747653, -24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, --99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, -149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, --124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, --287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, --113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, --3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, -103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, +24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, +-99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, +149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, +-124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, +-287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, +-113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, +-3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, +103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, { 13747653, -24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, --99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, -149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, --124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, --287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, --113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, --3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, -103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, +24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, +-99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, +149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, +-124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, +-287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, +-113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, +-3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, +103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, }, { { 368293, --3048890, -1468879, 7374996, 13603772, 9038222, 481573, -840203, -845572, -20397874, -66472136, --115881976, -136780208, -120776088, -85447304, -49606872, -16407312, 19768660, 60117196, 100017976, 135532528, -165566688, 188641408, 201786160, 203722640, 196553808, 182668176, 161795184, 132951784, 97609040, 58577984, -17105780, -26522496, -70843872, -114004536, -155064960, -192145024, -221224640, -239529248, -248493392, -251313040, --249691680, -244772864, -238466784, -231702208, -223685120, -214202368, -204148928, -193284272, -180464320, -166262480, --152371488, -138978704, -125753424, -114062520, -104983496, -97000224, -88618064, -80697064, -73618424, -65599720, --56105156, -46832324, -37693168, -26623966, -14120242, -2343442, 9921911, 25036438, 40991168, 55364812, -71156336, 90472416, 108683072, 124603984, 146057872, 170790448, 175328080, 145876960, 110227648, }, +-3048890, -1468879, 7374996, 13603772, 9038222, 481573, -840203, -845572, -20397874, -66472136, +-115881976, -136780208, -120776088, -85447304, -49606872, -16407312, 19768660, 60117196, 100017976, 135532528, +165566688, 188641408, 201786160, 203722640, 196553808, 182668176, 161795184, 132951784, 97609040, 58577984, +17105780, -26522496, -70843872, -114004536, -155064960, -192145024, -221224640, -239529248, -248493392, -251313040, +-249691680, -244772864, -238466784, -231702208, -223685120, -214202368, -204148928, -193284272, -180464320, -166262480, +-152371488, -138978704, -125753424, -114062520, -104983496, -97000224, -88618064, -80697064, -73618424, -65599720, +-56105156, -46832324, -37693168, -26623966, -14120242, -2343442, 9921911, 25036438, 40991168, 55364812, +71156336, 90472416, 108683072, 124603984, 146057872, 170790448, 175328080, 145876960, 110227648, }, { -368293, -3048890, 1468879, -7374996, -13603772, -9038222, -481573, 840203, 845572, 20397874, 66472136, -115881976, 136780208, 120776088, 85447304, 49606872, 16407312, -19768660, -60117196, -100017976, -135532528, --165566688, -188641408, -201786160, -203722640, -196553808, -182668176, -161795184, -132951784, -97609040, -58577984, --17105780, 26522496, 70843872, 114004536, 155064960, 192145024, 221224640, 239529248, 248493392, 251313040, -249691680, 244772864, 238466784, 231702208, 223685120, 214202368, 204148928, 193284272, 180464320, 166262480, -152371488, 138978704, 125753424, 114062520, 104983496, 97000224, 88618064, 80697064, 73618424, 65599720, -56105156, 46832324, 37693168, 26623966, 14120242, 2343442, -9921911, -25036438, -40991168, -55364812, --71156336, -90472416, -108683072, -124603984, -146057872, -170790448, -175328080, -145876960, -110227648, }, +3048890, 1468879, -7374996, -13603772, -9038222, -481573, 840203, 845572, 20397874, 66472136, +115881976, 136780208, 120776088, 85447304, 49606872, 16407312, -19768660, -60117196, -100017976, -135532528, +-165566688, -188641408, -201786160, -203722640, -196553808, -182668176, -161795184, -132951784, -97609040, -58577984, +-17105780, 26522496, 70843872, 114004536, 155064960, 192145024, 221224640, 239529248, 248493392, 251313040, +249691680, 244772864, 238466784, 231702208, 223685120, 214202368, 204148928, 193284272, 180464320, 166262480, +152371488, 138978704, 125753424, 114062520, 104983496, 97000224, 88618064, 80697064, 73618424, 65599720, +56105156, 46832324, 37693168, 26623966, 14120242, 2343442, -9921911, -25036438, -40991168, -55364812, +-71156336, -90472416, -108683072, -124603984, -146057872, -170790448, -175328080, -145876960, -110227648, }, }, { { 4243428, --4525285, 1450088, 13779329, 980326, -21391622, 2690797, 72931768, 105982616, 41259604, -73534672, --141541728, -127762928, -73687680, -26748520, 3726421, 29141354, 55375012, 80288512, 99776384, 109567304, -107421424, 95509336, 78276312, 59301152, 41651520, 28340342, 20354924, 16241419, 14893873, 16932908, -22392348, 28755880, 32857574, 34234648, 35179540, 37076844, 37903088, 34362960, 25459492, 12666932, --2234457, -17712446, -32049046, -44368624, -55446416, -66281544, -77069432, -88304528, -100865696, -114238080, --126841656, -138443440, -149727936, -159640176, -166064912, -168644576, -167984224, -163220032, -153458640, -139938080, --123814784, -104166912, -80791016, -55704652, -29579440, -913217, 29350196, 57663696, 83715352, 109902848, -134050760, 150826368, 161287296, 170820512, 175198160, 159931168, 119301304, 68813968, 34583076, }, +-4525285, 1450088, 13779329, 980326, -21391622, 2690797, 72931768, 105982616, 41259604, -73534672, +-141541728, -127762928, -73687680, -26748520, 3726421, 29141354, 55375012, 80288512, 99776384, 109567304, +107421424, 95509336, 78276312, 59301152, 41651520, 28340342, 20354924, 16241419, 14893873, 16932908, +22392348, 28755880, 32857574, 34234648, 35179540, 37076844, 37903088, 34362960, 25459492, 12666932, +-2234457, -17712446, -32049046, -44368624, -55446416, -66281544, -77069432, -88304528, -100865696, -114238080, +-126841656, -138443440, -149727936, -159640176, -166064912, -168644576, -167984224, -163220032, -153458640, -139938080, +-123814784, -104166912, -80791016, -55704652, -29579440, -913217, 29350196, 57663696, 83715352, 109902848, +134050760, 150826368, 161287296, 170820512, 175198160, 159931168, 119301304, 68813968, 34583076, }, { -4243428, -4525285, -1450088, -13779329, -980326, 21391622, -2690797, -72931768, -105982616, -41259604, 73534672, -141541728, 127762928, 73687680, 26748520, -3726421, -29141354, -55375012, -80288512, -99776384, -109567304, --107421424, -95509336, -78276312, -59301152, -41651520, -28340342, -20354924, -16241419, -14893873, -16932908, --22392348, -28755880, -32857574, -34234648, -35179540, -37076844, -37903088, -34362960, -25459492, -12666932, -2234457, 17712446, 32049046, 44368624, 55446416, 66281544, 77069432, 88304528, 100865696, 114238080, -126841656, 138443440, 149727936, 159640176, 166064912, 168644576, 167984224, 163220032, 153458640, 139938080, -123814784, 104166912, 80791016, 55704652, 29579440, 913217, -29350196, -57663696, -83715352, -109902848, --134050760, -150826368, -161287296, -170820512, -175198160, -159931168, -119301304, -68813968, -34583076, }, +4525285, -1450088, -13779329, -980326, 21391622, -2690797, -72931768, -105982616, -41259604, 73534672, +141541728, 127762928, 73687680, 26748520, -3726421, -29141354, -55375012, -80288512, -99776384, -109567304, +-107421424, -95509336, -78276312, -59301152, -41651520, -28340342, -20354924, -16241419, -14893873, -16932908, +-22392348, -28755880, -32857574, -34234648, -35179540, -37076844, -37903088, -34362960, -25459492, -12666932, +2234457, 17712446, 32049046, 44368624, 55446416, 66281544, 77069432, 88304528, 100865696, 114238080, +126841656, 138443440, 149727936, 159640176, 166064912, 168644576, 167984224, 163220032, 153458640, 139938080, +123814784, 104166912, 80791016, 55704652, 29579440, 913217, -29350196, -57663696, -83715352, -109902848, +-134050760, -150826368, -161287296, -170820512, -175198160, -159931168, -119301304, -68813968, -34583076, }, }, { { -6826851, --6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, -196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, --125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, --84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, -18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, -72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, -18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, -36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, +-6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, +196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, +-125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, +-84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, +18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, +72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, +18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, +36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, { -6826851, --6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, -196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, --125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, --84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, -18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, -72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, -18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, -36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, +-6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, +196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, +-125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, +-84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, +18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, +72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, +18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, +36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, }, { { 19251654, --18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, --59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, -21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, -39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, --72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, --77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, --29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, --11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, +-18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, +-59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, +21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, +39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, +-72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, +-77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, +-29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, +-11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, { 19251654, --18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, --59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, -21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, -39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, --72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, --77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, --29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, --11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, +-18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, +-59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, +21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, +39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, +-72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, +-77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, +-29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, +-11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, }, { { -148713, -38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, -305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, --167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, --319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, -23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, -171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, -164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, -79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, +38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, +305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, +-167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, +-319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, +23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, +171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, +164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, +79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, { -148713, -38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, -305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, --167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, --319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, -23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, -171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, -164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, -79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, +38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, +305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, +-167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, +-319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, +23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, +171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, +164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, +79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, }, }; const Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -150242784, --386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, -321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, --353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, --187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, -42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, -186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, -239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, -234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, +-386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, +321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, +-353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, +-187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, +42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, +186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, +239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, +234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, { -150242784, --386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, -321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, --353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, --187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, -42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, -186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, -239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, -234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, +-386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, +321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, +-353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, +-187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, +42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, +186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, +239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, +234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, }, { { 74029664, -123262344, -36468568, -334473248, -585478144, -638618176, -475035200, -190333616, 97043712, 321375232, 474565440, -565700864, 596585472, 570107008, 498283840, 393476448, 263353440, 118538416, -25469692, -157250560, -272816320, --370608960, -450563552, -515463200, -566206592, -599546816, -615617536, -621153216, -620634560, -612218624, -595934208, --576471616, -555134720, -528948832, -499031712, -469789952, -440383392, -407037280, -371374016, -336737248, -300843136, --261334272, -222230736, -186545456, -150669600, -113003808, -78191488, -47489992, -16384226, 14923401, 41378788, -64410552, 89771792, 115551264, 136379168, 155176624, 176510272, 195635760, 208058416, 219536720, 233740704, -243804896, 247442192, 253084176, 261829792, 264259680, 261447008, 264335904, 269670784, 265524000, 258725072, -262996416, 267509360, 257564896, 252369600, 271103168, 277647072, 221355104, 119831200, 33008972, }, +123262344, -36468568, -334473248, -585478144, -638618176, -475035200, -190333616, 97043712, 321375232, 474565440, +565700864, 596585472, 570107008, 498283840, 393476448, 263353440, 118538416, -25469692, -157250560, -272816320, +-370608960, -450563552, -515463200, -566206592, -599546816, -615617536, -621153216, -620634560, -612218624, -595934208, +-576471616, -555134720, -528948832, -499031712, -469789952, -440383392, -407037280, -371374016, -336737248, -300843136, +-261334272, -222230736, -186545456, -150669600, -113003808, -78191488, -47489992, -16384226, 14923401, 41378788, +64410552, 89771792, 115551264, 136379168, 155176624, 176510272, 195635760, 208058416, 219536720, 233740704, +243804896, 247442192, 253084176, 261829792, 264259680, 261447008, 264335904, 269670784, 265524000, 258725072, +262996416, 267509360, 257564896, 252369600, 271103168, 277647072, 221355104, 119831200, 33008972, }, { -74029664, --123262344, 36468568, 334473248, 585478144, 638618176, 475035200, 190333616, -97043712, -321375232, -474565440, --565700864, -596585472, -570107008, -498283840, -393476448, -263353440, -118538416, 25469692, 157250560, 272816320, -370608960, 450563552, 515463200, 566206592, 599546816, 615617536, 621153216, 620634560, 612218624, 595934208, -576471616, 555134720, 528948832, 499031712, 469789952, 440383392, 407037280, 371374016, 336737248, 300843136, -261334272, 222230736, 186545456, 150669600, 113003808, 78191488, 47489992, 16384226, -14923401, -41378788, --64410552, -89771792, -115551264, -136379168, -155176624, -176510272, -195635760, -208058416, -219536720, -233740704, --243804896, -247442192, -253084176, -261829792, -264259680, -261447008, -264335904, -269670784, -265524000, -258725072, --262996416, -267509360, -257564896, -252369600, -271103168, -277647072, -221355104, -119831200, -33008972, }, +-123262344, 36468568, 334473248, 585478144, 638618176, 475035200, 190333616, -97043712, -321375232, -474565440, +-565700864, -596585472, -570107008, -498283840, -393476448, -263353440, -118538416, 25469692, 157250560, 272816320, +370608960, 450563552, 515463200, 566206592, 599546816, 615617536, 621153216, 620634560, 612218624, 595934208, +576471616, 555134720, 528948832, 499031712, 469789952, 440383392, 407037280, 371374016, 336737248, 300843136, +261334272, 222230736, 186545456, 150669600, 113003808, 78191488, 47489992, 16384226, -14923401, -41378788, +-64410552, -89771792, -115551264, -136379168, -155176624, -176510272, -195635760, -208058416, -219536720, -233740704, +-243804896, -247442192, -253084176, -261829792, -264259680, -261447008, -264335904, -269670784, -265524000, -258725072, +-262996416, -267509360, -257564896, -252369600, -271103168, -277647072, -221355104, -119831200, -33008972, }, }, { { -20371030, --57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, -13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, --69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, --25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, --19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, -87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, -279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, -185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, +-57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, +13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, +-69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, +-25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, +-19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, +87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, +279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, +185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, { -20371030, --57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, -13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, --69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, --25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, --19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, -87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, -279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, -185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, +-57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, +13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, +-69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, +-25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, +-19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, +87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, +279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, +185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, }, { { -721018, --16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, -29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, --51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, --255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, -49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, -179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, -167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, -127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, +-16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, +29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, +-51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, +-255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, +49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, +179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, +167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, +127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, { -721018, --16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, -29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, --51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, --255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, -49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, -179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, -167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, -127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, +-16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, +29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, +-51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, +-255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, +49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, +179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, +167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, +127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, }, { { -2051921, --2245194, 2023467, 1197759, -9941776, -22747758, -27280558, -29560112, -44152800, -68251864, -75788992, --45372572, 13457743, 70434776, 105979392, 123585536, 134480800, 141224960, 139040432, 125328760, 101947488, -70818104, 32322314, -11746199, -57064548, -100129112, -140690784, -179227904, -213805088, -241569360, -261852352, --275380960, -281725152, -279901952, -270098144, -252496288, -226240080, -192179920, -154821760, -119033944, -86504400, --57167624, -31504122, -9376987, 10785200, 29796336, 46982648, 62418224, 77075872, 90415504, 100867840, -108550464, 114552144, 118527672, 120150096, 121297392, 123652112, 126288144, 128381408, 131267624, 135355888, -138809584, 141280272, 144532096, 148162416, 149919584, 150498336, 152006416, 152676416, 149898656, 145910784, -142762032, 136395808, 124553512, 112371376, 98595808, 68726456, 20487530, -16538308, -13313862, }, +-2245194, 2023467, 1197759, -9941776, -22747758, -27280558, -29560112, -44152800, -68251864, -75788992, +-45372572, 13457743, 70434776, 105979392, 123585536, 134480800, 141224960, 139040432, 125328760, 101947488, +70818104, 32322314, -11746199, -57064548, -100129112, -140690784, -179227904, -213805088, -241569360, -261852352, +-275380960, -281725152, -279901952, -270098144, -252496288, -226240080, -192179920, -154821760, -119033944, -86504400, +-57167624, -31504122, -9376987, 10785200, 29796336, 46982648, 62418224, 77075872, 90415504, 100867840, +108550464, 114552144, 118527672, 120150096, 121297392, 123652112, 126288144, 128381408, 131267624, 135355888, +138809584, 141280272, 144532096, 148162416, 149919584, 150498336, 152006416, 152676416, 149898656, 145910784, +142762032, 136395808, 124553512, 112371376, 98595808, 68726456, 20487530, -16538308, -13313862, }, { 2051921, -2245194, -2023467, -1197759, 9941776, 22747758, 27280558, 29560112, 44152800, 68251864, 75788992, -45372572, -13457743, -70434776, -105979392, -123585536, -134480800, -141224960, -139040432, -125328760, -101947488, --70818104, -32322314, 11746199, 57064548, 100129112, 140690784, 179227904, 213805088, 241569360, 261852352, -275380960, 281725152, 279901952, 270098144, 252496288, 226240080, 192179920, 154821760, 119033944, 86504400, -57167624, 31504122, 9376987, -10785200, -29796336, -46982648, -62418224, -77075872, -90415504, -100867840, --108550464, -114552144, -118527672, -120150096, -121297392, -123652112, -126288144, -128381408, -131267624, -135355888, --138809584, -141280272, -144532096, -148162416, -149919584, -150498336, -152006416, -152676416, -149898656, -145910784, --142762032, -136395808, -124553512, -112371376, -98595808, -68726456, -20487530, 16538308, 13313862, }, +2245194, -2023467, -1197759, 9941776, 22747758, 27280558, 29560112, 44152800, 68251864, 75788992, +45372572, -13457743, -70434776, -105979392, -123585536, -134480800, -141224960, -139040432, -125328760, -101947488, +-70818104, -32322314, 11746199, 57064548, 100129112, 140690784, 179227904, 213805088, 241569360, 261852352, +275380960, 281725152, 279901952, 270098144, 252496288, 226240080, 192179920, 154821760, 119033944, 86504400, +57167624, 31504122, 9376987, -10785200, -29796336, -46982648, -62418224, -77075872, -90415504, -100867840, +-108550464, -114552144, -118527672, -120150096, -121297392, -123652112, -126288144, -128381408, -131267624, -135355888, +-138809584, -141280272, -144532096, -148162416, -149919584, -150498336, -152006416, -152676416, -149898656, -145910784, +-142762032, -136395808, -124553512, -112371376, -98595808, -68726456, -20487530, 16538308, 13313862, }, }, { { -3833795, --144418, 10765872, 2765422, -11487427, 9198746, 51580948, 42736000, -43378096, -130186904, -128332552, --42242076, 50558744, 96583616, 103735808, 100252056, 96642672, 88947160, 73382736, 49586472, 19973208, --9914932, -34335044, -50814296, -59253368, -60146184, -55480776, -48753248, -42253888, -36046048, -30475478, --27751932, -29727616, -35259536, -41327248, -46785616, -53705880, -64280092, -77505904, -90120224, -99746320, --105634720, -107579264, -106121664, -102978280, -99567544, -95905008, -91781840, -87356952, -81819128, -73615200, --62632436, -49852760, -34813396, -16184511, 5441187, 28271622, 51984672, 76691472, 100694968, 122358248, -142214960, 160475552, 175245408, 185673040, 193137168, 197190000, 195082240, 186992144, 175870864, 160953904, -138726368, 111200464, 84099752, 55515136, 17514876, -26816166, -57793080, -56541096, -23185308, }, +-144418, 10765872, 2765422, -11487427, 9198746, 51580948, 42736000, -43378096, -130186904, -128332552, +-42242076, 50558744, 96583616, 103735808, 100252056, 96642672, 88947160, 73382736, 49586472, 19973208, +-9914932, -34335044, -50814296, -59253368, -60146184, -55480776, -48753248, -42253888, -36046048, -30475478, +-27751932, -29727616, -35259536, -41327248, -46785616, -53705880, -64280092, -77505904, -90120224, -99746320, +-105634720, -107579264, -106121664, -102978280, -99567544, -95905008, -91781840, -87356952, -81819128, -73615200, +-62632436, -49852760, -34813396, -16184511, 5441187, 28271622, 51984672, 76691472, 100694968, 122358248, +142214960, 160475552, 175245408, 185673040, 193137168, 197190000, 195082240, 186992144, 175870864, 160953904, +138726368, 111200464, 84099752, 55515136, 17514876, -26816166, -57793080, -56541096, -23185308, }, { 3833795, -144418, -10765872, -2765422, 11487427, -9198746, -51580948, -42736000, 43378096, 130186904, 128332552, -42242076, -50558744, -96583616, -103735808, -100252056, -96642672, -88947160, -73382736, -49586472, -19973208, -9914932, 34335044, 50814296, 59253368, 60146184, 55480776, 48753248, 42253888, 36046048, 30475478, -27751932, 29727616, 35259536, 41327248, 46785616, 53705880, 64280092, 77505904, 90120224, 99746320, -105634720, 107579264, 106121664, 102978280, 99567544, 95905008, 91781840, 87356952, 81819128, 73615200, -62632436, 49852760, 34813396, 16184511, -5441187, -28271622, -51984672, -76691472, -100694968, -122358248, --142214960, -160475552, -175245408, -185673040, -193137168, -197190000, -195082240, -186992144, -175870864, -160953904, --138726368, -111200464, -84099752, -55515136, -17514876, 26816166, 57793080, 56541096, 23185308, }, +144418, -10765872, -2765422, 11487427, -9198746, -51580948, -42736000, 43378096, 130186904, 128332552, +42242076, -50558744, -96583616, -103735808, -100252056, -96642672, -88947160, -73382736, -49586472, -19973208, +9914932, 34335044, 50814296, 59253368, 60146184, 55480776, 48753248, 42253888, 36046048, 30475478, +27751932, 29727616, 35259536, 41327248, 46785616, 53705880, 64280092, 77505904, 90120224, 99746320, +105634720, 107579264, 106121664, 102978280, 99567544, 95905008, 91781840, 87356952, 81819128, 73615200, +62632436, 49852760, 34813396, 16184511, -5441187, -28271622, -51984672, -76691472, -100694968, -122358248, +-142214960, -160475552, -175245408, -185673040, -193137168, -197190000, -195082240, -186992144, -175870864, -160953904, +-138726368, -111200464, -84099752, -55515136, -17514876, 26816166, 57793080, 56541096, 23185308, }, }, { { -573378, --6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, -69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, --81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, -60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, -116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, -39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, -4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, -76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, +-6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, +69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, +-81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, +60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, +116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, +39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, +4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, +76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, { -573378, --6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, -69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, --81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, -60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, -116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, -39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, -4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, -76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, +-6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, +69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, +-81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, +60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, +116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, +39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, +4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, +76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, }, { { -20308752, --40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, -37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, -4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, --56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, --75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, -14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, -48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, -46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, +-40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, +37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, +4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, +-56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, +-75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, +14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, +48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, +46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, { -20308752, --40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, -37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, -4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, --56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, --75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, -14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, -48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, -46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, +-40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, +37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, +4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, +-56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, +-75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, +14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, +48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, +46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, }, { { 14657113, -11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, -165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, --304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, -146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, -298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, -141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, --3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, --54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, +11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, +165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, +-304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, +146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, +298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, +141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, +-3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, +-54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, { 14657113, -11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, -165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, --304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, -146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, -298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, -141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, --3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, --54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, +11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, +165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, +-304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, +146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, +298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, +141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, +-3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, +-54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, }, }; const Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 518734336, - 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, - -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, - 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, - 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, - 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, - -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, - -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, - -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, - -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, - -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, - -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, - -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, - -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, - -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, - -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, - -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, - -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, - -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, - -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, - -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, - -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, - -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, - -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, - -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, + 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, + -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, + 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, + 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, + 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, + -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, + -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, + -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, + -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, + -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, + -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, + -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, + -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, + -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, + -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, + -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, + -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, + -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, + -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, + -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, + -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, + -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, + -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, + -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, { 518734336, - 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, - -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, - 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, - 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, - 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, - -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, - -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, - -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, - -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, - -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, - -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, - -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, - -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, - -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, - -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, - -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, - -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, - -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, - -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, - -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, - -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, - -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, - -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, - -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, + 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, + -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, + 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, + 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, + 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, + -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, + -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, + -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, + -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, + -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, + -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, + -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, + -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, + -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, + -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, + -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, + -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, + -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, + -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, + -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, + -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, + -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, + -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, + -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, }, { { 37328636, - 189374768, 383476160, 475285376, 383028416, 133840848, -171073376, -432745888, -603796160, -683916096, -690635008, - -641510272, -552180864, -436797088, -306463104, -169717248, -34593816, 91378648, 202743392, 296894976, 374149632, - 437277600, 489349248, 531198880, 561826816, 581349568, 592261504, 597636096, 599314368, 598031232, 594031552, - 587127936, 577005760, 563930304, 548784640, 532358496, 514886592, 496108448, 475500672, 452722304, 428125568, - 402665536, 377180800, 352018208, 327308192, 303174240, 279620640, 256611408, 234338784, 213113056, 192994352, - 173741088, 155053152, 136726528, 118736520, 101311840, 84780504, 69293928, 54891828, 41746544, 30001958, - 19447076, 9730248, 790811, -7295002, -14765024, -22013318, -29103772, -35866736, -42364484, -48842368, - -55338508, -61733712, -68128920, -74811888, -81897512, -89285928, -96952984, -105030744, -113582560, -122484952, - -131581152, -140860432, -150426928, -160311264, -170375984, -180435872, -190413088, -200370432, -210518896, -221234832, - -232860784, -245344096, -258222016, -271105856, -283991296, -296971232, -309841088, -322147776, -333463936, -343533504, - -352343008, -360091680, -366892736, -372482656, -376434560, -378663104, -379509216, -379385728, -378569152, -377280672, - -375758624, -374254848, -373029728, -372255552, -371887264, -371805120, -372115424, -373099520, -374873888, -377288192, - -380094400, -382999936, -385673568, -387967072, -390036704, -392070400, -394039616, -395879488, -397664032, -399435168, - -401066208, -402452384, -403620640, -404609536, -405454592, -406308736, -407351328, -408589888, -409931008, -411351552, - -412853184, -414413888, -416115744, -418142976, -420566432, -423312512, -426339392, -429601952, -432933248, -436230176, - -439630176, -443259968, -447025024, -450868480, -454913280, -459126624, -463203648, -466963872, -470473408, -473698400, - -476477216, -478859872, -481021312, -482905728, -484371392, -485500416, -486368000, -486850656, -486995072, -487141088, - -487406848, -487615168, -487850304, -488395776, -489068448, -489370720, -489218784, -488805920, -488051104, -486929568, - -485842944, -484988256, -484049792, -483024384, -482375296, -482025248, -481413216, -480660000, -480307264, -480132256, - -479703296, -479427328, -479558880, -479476192, -479256064, -479838592, -480622400, -480185920, -479861120, -481702592, - -483188640, -481178592, -480039360, -485045696, -488822048, -479682880, -464048672, -461323520, -473385376, -481892096, - -481580192, -489001888, -506634336, -507556160, -475460384, -435317472, -421685248, -435285280, -450985536, -452022752, - -439289248, -422705856, -415015712, -414360736, -386421952, -295605952, -168432512, -90038080, -111629424, -189907888, - -245691456, -256092800, -255994016, -268771552, -274996032, -247346624, -187443104, -122430728, -81640352, }, + 189374768, 383476160, 475285376, 383028416, 133840848, -171073376, -432745888, -603796160, -683916096, -690635008, + -641510272, -552180864, -436797088, -306463104, -169717248, -34593816, 91378648, 202743392, 296894976, 374149632, + 437277600, 489349248, 531198880, 561826816, 581349568, 592261504, 597636096, 599314368, 598031232, 594031552, + 587127936, 577005760, 563930304, 548784640, 532358496, 514886592, 496108448, 475500672, 452722304, 428125568, + 402665536, 377180800, 352018208, 327308192, 303174240, 279620640, 256611408, 234338784, 213113056, 192994352, + 173741088, 155053152, 136726528, 118736520, 101311840, 84780504, 69293928, 54891828, 41746544, 30001958, + 19447076, 9730248, 790811, -7295002, -14765024, -22013318, -29103772, -35866736, -42364484, -48842368, + -55338508, -61733712, -68128920, -74811888, -81897512, -89285928, -96952984, -105030744, -113582560, -122484952, + -131581152, -140860432, -150426928, -160311264, -170375984, -180435872, -190413088, -200370432, -210518896, -221234832, + -232860784, -245344096, -258222016, -271105856, -283991296, -296971232, -309841088, -322147776, -333463936, -343533504, + -352343008, -360091680, -366892736, -372482656, -376434560, -378663104, -379509216, -379385728, -378569152, -377280672, + -375758624, -374254848, -373029728, -372255552, -371887264, -371805120, -372115424, -373099520, -374873888, -377288192, + -380094400, -382999936, -385673568, -387967072, -390036704, -392070400, -394039616, -395879488, -397664032, -399435168, + -401066208, -402452384, -403620640, -404609536, -405454592, -406308736, -407351328, -408589888, -409931008, -411351552, + -412853184, -414413888, -416115744, -418142976, -420566432, -423312512, -426339392, -429601952, -432933248, -436230176, + -439630176, -443259968, -447025024, -450868480, -454913280, -459126624, -463203648, -466963872, -470473408, -473698400, + -476477216, -478859872, -481021312, -482905728, -484371392, -485500416, -486368000, -486850656, -486995072, -487141088, + -487406848, -487615168, -487850304, -488395776, -489068448, -489370720, -489218784, -488805920, -488051104, -486929568, + -485842944, -484988256, -484049792, -483024384, -482375296, -482025248, -481413216, -480660000, -480307264, -480132256, + -479703296, -479427328, -479558880, -479476192, -479256064, -479838592, -480622400, -480185920, -479861120, -481702592, + -483188640, -481178592, -480039360, -485045696, -488822048, -479682880, -464048672, -461323520, -473385376, -481892096, + -481580192, -489001888, -506634336, -507556160, -475460384, -435317472, -421685248, -435285280, -450985536, -452022752, + -439289248, -422705856, -415015712, -414360736, -386421952, -295605952, -168432512, -90038080, -111629424, -189907888, + -245691456, -256092800, -255994016, -268771552, -274996032, -247346624, -187443104, -122430728, -81640352, }, { -37328636, - -189374768, -383476160, -475285376, -383028416, -133840848, 171073376, 432745888, 603796160, 683916096, 690635008, - 641510272, 552180864, 436797088, 306463104, 169717248, 34593816, -91378648, -202743392, -296894976, -374149632, - -437277600, -489349248, -531198880, -561826816, -581349568, -592261504, -597636096, -599314368, -598031232, -594031552, - -587127936, -577005760, -563930304, -548784640, -532358496, -514886592, -496108448, -475500672, -452722304, -428125568, - -402665536, -377180800, -352018208, -327308192, -303174240, -279620640, -256611408, -234338784, -213113056, -192994352, - -173741088, -155053152, -136726528, -118736520, -101311840, -84780504, -69293928, -54891828, -41746544, -30001958, - -19447076, -9730248, -790811, 7295002, 14765024, 22013318, 29103772, 35866736, 42364484, 48842368, - 55338508, 61733712, 68128920, 74811888, 81897512, 89285928, 96952984, 105030744, 113582560, 122484952, - 131581152, 140860432, 150426928, 160311264, 170375984, 180435872, 190413088, 200370432, 210518896, 221234832, - 232860784, 245344096, 258222016, 271105856, 283991296, 296971232, 309841088, 322147776, 333463936, 343533504, - 352343008, 360091680, 366892736, 372482656, 376434560, 378663104, 379509216, 379385728, 378569152, 377280672, - 375758624, 374254848, 373029728, 372255552, 371887264, 371805120, 372115424, 373099520, 374873888, 377288192, - 380094400, 382999936, 385673568, 387967072, 390036704, 392070400, 394039616, 395879488, 397664032, 399435168, - 401066208, 402452384, 403620640, 404609536, 405454592, 406308736, 407351328, 408589888, 409931008, 411351552, - 412853184, 414413888, 416115744, 418142976, 420566432, 423312512, 426339392, 429601952, 432933248, 436230176, - 439630176, 443259968, 447025024, 450868480, 454913280, 459126624, 463203648, 466963872, 470473408, 473698400, - 476477216, 478859872, 481021312, 482905728, 484371392, 485500416, 486368000, 486850656, 486995072, 487141088, - 487406848, 487615168, 487850304, 488395776, 489068448, 489370720, 489218784, 488805920, 488051104, 486929568, - 485842944, 484988256, 484049792, 483024384, 482375296, 482025248, 481413216, 480660000, 480307264, 480132256, - 479703296, 479427328, 479558880, 479476192, 479256064, 479838592, 480622400, 480185920, 479861120, 481702592, - 483188640, 481178592, 480039360, 485045696, 488822048, 479682880, 464048672, 461323520, 473385376, 481892096, - 481580192, 489001888, 506634336, 507556160, 475460384, 435317472, 421685248, 435285280, 450985536, 452022752, - 439289248, 422705856, 415015712, 414360736, 386421952, 295605952, 168432512, 90038080, 111629424, 189907888, - 245691456, 256092800, 255994016, 268771552, 274996032, 247346624, 187443104, 122430728, 81640352, }, + -189374768, -383476160, -475285376, -383028416, -133840848, 171073376, 432745888, 603796160, 683916096, 690635008, + 641510272, 552180864, 436797088, 306463104, 169717248, 34593816, -91378648, -202743392, -296894976, -374149632, + -437277600, -489349248, -531198880, -561826816, -581349568, -592261504, -597636096, -599314368, -598031232, -594031552, + -587127936, -577005760, -563930304, -548784640, -532358496, -514886592, -496108448, -475500672, -452722304, -428125568, + -402665536, -377180800, -352018208, -327308192, -303174240, -279620640, -256611408, -234338784, -213113056, -192994352, + -173741088, -155053152, -136726528, -118736520, -101311840, -84780504, -69293928, -54891828, -41746544, -30001958, + -19447076, -9730248, -790811, 7295002, 14765024, 22013318, 29103772, 35866736, 42364484, 48842368, + 55338508, 61733712, 68128920, 74811888, 81897512, 89285928, 96952984, 105030744, 113582560, 122484952, + 131581152, 140860432, 150426928, 160311264, 170375984, 180435872, 190413088, 200370432, 210518896, 221234832, + 232860784, 245344096, 258222016, 271105856, 283991296, 296971232, 309841088, 322147776, 333463936, 343533504, + 352343008, 360091680, 366892736, 372482656, 376434560, 378663104, 379509216, 379385728, 378569152, 377280672, + 375758624, 374254848, 373029728, 372255552, 371887264, 371805120, 372115424, 373099520, 374873888, 377288192, + 380094400, 382999936, 385673568, 387967072, 390036704, 392070400, 394039616, 395879488, 397664032, 399435168, + 401066208, 402452384, 403620640, 404609536, 405454592, 406308736, 407351328, 408589888, 409931008, 411351552, + 412853184, 414413888, 416115744, 418142976, 420566432, 423312512, 426339392, 429601952, 432933248, 436230176, + 439630176, 443259968, 447025024, 450868480, 454913280, 459126624, 463203648, 466963872, 470473408, 473698400, + 476477216, 478859872, 481021312, 482905728, 484371392, 485500416, 486368000, 486850656, 486995072, 487141088, + 487406848, 487615168, 487850304, 488395776, 489068448, 489370720, 489218784, 488805920, 488051104, 486929568, + 485842944, 484988256, 484049792, 483024384, 482375296, 482025248, 481413216, 480660000, 480307264, 480132256, + 479703296, 479427328, 479558880, 479476192, 479256064, 479838592, 480622400, 480185920, 479861120, 481702592, + 483188640, 481178592, 480039360, 485045696, 488822048, 479682880, 464048672, 461323520, 473385376, 481892096, + 481580192, 489001888, 506634336, 507556160, 475460384, 435317472, 421685248, 435285280, 450985536, 452022752, + 439289248, 422705856, 415015712, 414360736, 386421952, 295605952, 168432512, 90038080, 111629424, 189907888, + 245691456, 256092800, 255994016, 268771552, 274996032, 247346624, 187443104, 122430728, 81640352, }, }, { { 60022168, - 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, - -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, - 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, - 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, - 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, - 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, - -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, - -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, - -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, - -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, - -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, - -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, - 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, - -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, - -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, - -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, - -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, - -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, - -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, - 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, - 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, - 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, - -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, - 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, + 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, + -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, + 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, + 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, + 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, + 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, + -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, + -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, + -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, + -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, + -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, + -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, + 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, + -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, + -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, + -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, + -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, + -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, + -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, + 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, + 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, + 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, + -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, + 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, { 60022168, - 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, - -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, - 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, - 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, - 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, - 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, - -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, - -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, - -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, - -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, - -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, - -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, - 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, - -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, - -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, - -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, - -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, - -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, - -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, - 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, - 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, - 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, - -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, - 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, + 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, + -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, + 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, + 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, + 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, + 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, + -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, + -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, + -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, + -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, + -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, + -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, + 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, + -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, + -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, + -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, + -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, + -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, + -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, + 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, + 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, + 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, + -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, + 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, }, { { 31920734, - 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, - -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, - 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, - 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, - 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, - -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, - -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, - -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, - -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, - 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, - 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, - -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, - -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, - -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, - -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, - -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, - -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, - -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, - -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, - -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, - -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, - -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, - -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, - -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, + 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, + -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, + 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, + 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, + 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, + -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, + -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, + -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, + -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, + 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, + 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, + -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, + -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, + -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, + -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, + -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, + -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, + -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, + -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, + -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, + -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, + -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, + -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, + -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, { 31920734, - 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, - -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, - 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, - 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, - 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, - -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, - -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, - -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, - -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, - 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, - 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, - -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, - -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, - -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, - -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, - -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, - -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, - -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, - -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, - -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, - -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, - -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, - -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, - -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, + 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, + -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, + 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, + 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, + 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, + -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, + -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, + -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, + -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, + 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, + 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, + -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, + -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, + -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, + -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, + -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, + -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, + -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, + -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, + -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, + -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, + -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, + -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, + -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, }, }; const Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -124898720, - -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, - 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, - 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, - -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, - -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, - -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, - -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, - -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, - -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, - -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, - -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, - -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, - -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, - -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, - -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, - -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, - -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, - -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, - -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, - -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, - -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, - -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, - -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, - -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, + -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, + 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, + 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, + -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, + -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, + -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, + -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, + -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, + -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, + -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, + -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, + -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, + -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, + -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, + -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, + -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, + -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, + -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, + -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, + -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, + -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, + -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, + -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, + -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, { -124898720, - -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, - 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, - 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, - -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, - -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, - -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, - -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, - -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, - -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, - -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, - -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, - -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, - -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, - -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, - -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, - -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, - -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, - -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, - -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, - -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, - -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, - -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, - -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, - -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, + -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, + 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, + 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, + -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, + -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, + -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, + -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, + -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, + -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, + -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, + -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, + -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, + -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, + -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, + -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, + -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, + -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, + -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, + -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, + -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, + -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, + -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, + -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, + -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, }, { { 75367016, - 152898688, 60698088, -183234576, -462790784, -646732928, -670164672, -552847104, -356891904, -137474384, 73971688, - 261569408, 416582848, 535674240, 619246208, 668629760, 685797824, 674825792, 641893568, 594021376, 537820096, - 477885440, 415636320, 350830656, 284640896, 220209952, 160159328, 104857328, 53330608, 4641786, -41893112, - -86666000, -129419176, -169462768, -206496656, -240911696, -273358560, -304294688, -333708768, -360983936, -385256416, - -406153568, -423995424, -439282816, -452334144, -463416768, -472780864, -480480672, -486499008, -491077984, -494679840, - -497635328, -500009344, -501677952, -502400032, -501986112, -500507040, -498200096, -495197920, -491626656, -487864256, - -484330592, -481093248, -478047040, -475357312, -473303776, -471816640, -470609760, -469671328, -469199392, -469178464, - -469423808, -469963360, -470982880, -472453376, -474128416, -475874848, -477738336, -479691488, -481542592, -483125312, - -484456192, -485635712, -486656832, -487370336, -487655968, -487559840, -487253824, -486930112, -486741120, -486666496, - -486328800, -485141792, -482780640, -479371488, -475091552, -469790496, -463164992, -455119968, -445847136, -435704576, - -425084736, -414195904, -402933440, -391173280, -379205888, -367657248, -357015936, -347438144, -338942720, -331559680, - -325298144, -320120032, -315899680, -312377280, -309302080, -306654752, -304536800, -302828480, -301160960, -299198144, - -296754848, -293748384, -290283968, -286679392, -283180064, -279745728, -276271616, -272813632, -269422752, -266000752, - -262489616, -258998336, -255647728, -252489856, -249618672, -247114160, -244883472, -242755840, -240685136, -238706224, - -236819664, -235067312, -233545296, -232212240, -230879728, -229424800, -227802912, -225917968, -223729680, -221395904, - -219032592, -216511984, -213710592, -210693920, -207425440, -203653920, -199291312, -194540000, -189516512, -184160688, - -178572928, -172972288, -167346416, -161570224, -155748928, -150033952, -144372112, -138797232, -133573480, -128747016, - -124037584, -119380760, -114943528, -110526152, -105692704, -100490960, -95319816, -90263032, -85287848, -80689552, - -76599128, -72645616, -68697464, -65106336, -61799212, -58229020, -54474680, -51085416, -47885128, -44364864, - -40817220, -37582036, -34133716, -30340722, -26945014, -23608898, -19145354, -14457397, -11223286, -7551090, - -877247, 5522254, 7752953, 11690901, 25166898, 40288404, 40982576, 30000884, 27510876, 38634840, - 47277388, 50246824, 68518152, 108822664, 141658752, 139589120, 116141288, 105104832, 118624312, 144289968, - 167411376, 181297008, 192171328, 222071824, 281490016, 330403776, 302403264, 188827168, 66482336, 14287209, - 28991566, 52163988, 55246700, 60433948, 89120032, 125949376, 137805104, 106897440, 40123048, }, + 152898688, 60698088, -183234576, -462790784, -646732928, -670164672, -552847104, -356891904, -137474384, 73971688, + 261569408, 416582848, 535674240, 619246208, 668629760, 685797824, 674825792, 641893568, 594021376, 537820096, + 477885440, 415636320, 350830656, 284640896, 220209952, 160159328, 104857328, 53330608, 4641786, -41893112, + -86666000, -129419176, -169462768, -206496656, -240911696, -273358560, -304294688, -333708768, -360983936, -385256416, + -406153568, -423995424, -439282816, -452334144, -463416768, -472780864, -480480672, -486499008, -491077984, -494679840, + -497635328, -500009344, -501677952, -502400032, -501986112, -500507040, -498200096, -495197920, -491626656, -487864256, + -484330592, -481093248, -478047040, -475357312, -473303776, -471816640, -470609760, -469671328, -469199392, -469178464, + -469423808, -469963360, -470982880, -472453376, -474128416, -475874848, -477738336, -479691488, -481542592, -483125312, + -484456192, -485635712, -486656832, -487370336, -487655968, -487559840, -487253824, -486930112, -486741120, -486666496, + -486328800, -485141792, -482780640, -479371488, -475091552, -469790496, -463164992, -455119968, -445847136, -435704576, + -425084736, -414195904, -402933440, -391173280, -379205888, -367657248, -357015936, -347438144, -338942720, -331559680, + -325298144, -320120032, -315899680, -312377280, -309302080, -306654752, -304536800, -302828480, -301160960, -299198144, + -296754848, -293748384, -290283968, -286679392, -283180064, -279745728, -276271616, -272813632, -269422752, -266000752, + -262489616, -258998336, -255647728, -252489856, -249618672, -247114160, -244883472, -242755840, -240685136, -238706224, + -236819664, -235067312, -233545296, -232212240, -230879728, -229424800, -227802912, -225917968, -223729680, -221395904, + -219032592, -216511984, -213710592, -210693920, -207425440, -203653920, -199291312, -194540000, -189516512, -184160688, + -178572928, -172972288, -167346416, -161570224, -155748928, -150033952, -144372112, -138797232, -133573480, -128747016, + -124037584, -119380760, -114943528, -110526152, -105692704, -100490960, -95319816, -90263032, -85287848, -80689552, + -76599128, -72645616, -68697464, -65106336, -61799212, -58229020, -54474680, -51085416, -47885128, -44364864, + -40817220, -37582036, -34133716, -30340722, -26945014, -23608898, -19145354, -14457397, -11223286, -7551090, + -877247, 5522254, 7752953, 11690901, 25166898, 40288404, 40982576, 30000884, 27510876, 38634840, + 47277388, 50246824, 68518152, 108822664, 141658752, 139589120, 116141288, 105104832, 118624312, 144289968, + 167411376, 181297008, 192171328, 222071824, 281490016, 330403776, 302403264, 188827168, 66482336, 14287209, + 28991566, 52163988, 55246700, 60433948, 89120032, 125949376, 137805104, 106897440, 40123048, }, { -75367016, - -152898688, -60698088, 183234576, 462790784, 646732928, 670164672, 552847104, 356891904, 137474384, -73971688, - -261569408, -416582848, -535674240, -619246208, -668629760, -685797824, -674825792, -641893568, -594021376, -537820096, - -477885440, -415636320, -350830656, -284640896, -220209952, -160159328, -104857328, -53330608, -4641786, 41893112, - 86666000, 129419176, 169462768, 206496656, 240911696, 273358560, 304294688, 333708768, 360983936, 385256416, - 406153568, 423995424, 439282816, 452334144, 463416768, 472780864, 480480672, 486499008, 491077984, 494679840, - 497635328, 500009344, 501677952, 502400032, 501986112, 500507040, 498200096, 495197920, 491626656, 487864256, - 484330592, 481093248, 478047040, 475357312, 473303776, 471816640, 470609760, 469671328, 469199392, 469178464, - 469423808, 469963360, 470982880, 472453376, 474128416, 475874848, 477738336, 479691488, 481542592, 483125312, - 484456192, 485635712, 486656832, 487370336, 487655968, 487559840, 487253824, 486930112, 486741120, 486666496, - 486328800, 485141792, 482780640, 479371488, 475091552, 469790496, 463164992, 455119968, 445847136, 435704576, - 425084736, 414195904, 402933440, 391173280, 379205888, 367657248, 357015936, 347438144, 338942720, 331559680, - 325298144, 320120032, 315899680, 312377280, 309302080, 306654752, 304536800, 302828480, 301160960, 299198144, - 296754848, 293748384, 290283968, 286679392, 283180064, 279745728, 276271616, 272813632, 269422752, 266000752, - 262489616, 258998336, 255647728, 252489856, 249618672, 247114160, 244883472, 242755840, 240685136, 238706224, - 236819664, 235067312, 233545296, 232212240, 230879728, 229424800, 227802912, 225917968, 223729680, 221395904, - 219032592, 216511984, 213710592, 210693920, 207425440, 203653920, 199291312, 194540000, 189516512, 184160688, - 178572928, 172972288, 167346416, 161570224, 155748928, 150033952, 144372112, 138797232, 133573480, 128747016, - 124037584, 119380760, 114943528, 110526152, 105692704, 100490960, 95319816, 90263032, 85287848, 80689552, - 76599128, 72645616, 68697464, 65106336, 61799212, 58229020, 54474680, 51085416, 47885128, 44364864, - 40817220, 37582036, 34133716, 30340722, 26945014, 23608898, 19145354, 14457397, 11223286, 7551090, - 877247, -5522254, -7752953, -11690901, -25166898, -40288404, -40982576, -30000884, -27510876, -38634840, - -47277388, -50246824, -68518152, -108822664, -141658752, -139589120, -116141288, -105104832, -118624312, -144289968, - -167411376, -181297008, -192171328, -222071824, -281490016, -330403776, -302403264, -188827168, -66482336, -14287209, - -28991566, -52163988, -55246700, -60433948, -89120032, -125949376, -137805104, -106897440, -40123048, }, + -152898688, -60698088, 183234576, 462790784, 646732928, 670164672, 552847104, 356891904, 137474384, -73971688, + -261569408, -416582848, -535674240, -619246208, -668629760, -685797824, -674825792, -641893568, -594021376, -537820096, + -477885440, -415636320, -350830656, -284640896, -220209952, -160159328, -104857328, -53330608, -4641786, 41893112, + 86666000, 129419176, 169462768, 206496656, 240911696, 273358560, 304294688, 333708768, 360983936, 385256416, + 406153568, 423995424, 439282816, 452334144, 463416768, 472780864, 480480672, 486499008, 491077984, 494679840, + 497635328, 500009344, 501677952, 502400032, 501986112, 500507040, 498200096, 495197920, 491626656, 487864256, + 484330592, 481093248, 478047040, 475357312, 473303776, 471816640, 470609760, 469671328, 469199392, 469178464, + 469423808, 469963360, 470982880, 472453376, 474128416, 475874848, 477738336, 479691488, 481542592, 483125312, + 484456192, 485635712, 486656832, 487370336, 487655968, 487559840, 487253824, 486930112, 486741120, 486666496, + 486328800, 485141792, 482780640, 479371488, 475091552, 469790496, 463164992, 455119968, 445847136, 435704576, + 425084736, 414195904, 402933440, 391173280, 379205888, 367657248, 357015936, 347438144, 338942720, 331559680, + 325298144, 320120032, 315899680, 312377280, 309302080, 306654752, 304536800, 302828480, 301160960, 299198144, + 296754848, 293748384, 290283968, 286679392, 283180064, 279745728, 276271616, 272813632, 269422752, 266000752, + 262489616, 258998336, 255647728, 252489856, 249618672, 247114160, 244883472, 242755840, 240685136, 238706224, + 236819664, 235067312, 233545296, 232212240, 230879728, 229424800, 227802912, 225917968, 223729680, 221395904, + 219032592, 216511984, 213710592, 210693920, 207425440, 203653920, 199291312, 194540000, 189516512, 184160688, + 178572928, 172972288, 167346416, 161570224, 155748928, 150033952, 144372112, 138797232, 133573480, 128747016, + 124037584, 119380760, 114943528, 110526152, 105692704, 100490960, 95319816, 90263032, 85287848, 80689552, + 76599128, 72645616, 68697464, 65106336, 61799212, 58229020, 54474680, 51085416, 47885128, 44364864, + 40817220, 37582036, 34133716, 30340722, 26945014, 23608898, 19145354, 14457397, 11223286, 7551090, + 877247, -5522254, -7752953, -11690901, -25166898, -40288404, -40982576, -30000884, -27510876, -38634840, + -47277388, -50246824, -68518152, -108822664, -141658752, -139589120, -116141288, -105104832, -118624312, -144289968, + -167411376, -181297008, -192171328, -222071824, -281490016, -330403776, -302403264, -188827168, -66482336, -14287209, + -28991566, -52163988, -55246700, -60433948, -89120032, -125949376, -137805104, -106897440, -40123048, }, }, { { -13802414, - -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, - -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, - 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, - -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, - -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, - -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, - -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, - -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, - 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, - 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, - 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, - 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, - 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, - -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, - 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, - 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, - 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, - 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, - 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, - 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, - 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, - 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, - 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, - 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, + -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, + -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, + 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, + -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, + -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, + -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, + -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, + -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, + 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, + 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, + 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, + 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, + 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, + -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, + 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, + 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, + 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, + 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, + 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, + 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, + 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, + 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, + 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, + 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, { -13802414, - -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, - -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, - 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, - -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, - -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, - -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, - -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, - -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, - 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, - 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, - 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, - 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, - 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, - -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, - 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, - 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, - 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, - 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, - 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, - 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, - 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, - 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, - 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, - 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, + -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, + -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, + 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, + -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, + -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, + -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, + -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, + -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, + 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, + 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, + 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, + 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, + 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, + -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, + 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, + 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, + 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, + 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, + 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, + 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, + 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, + 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, + 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, + 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, }, { { 2309082, - -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, - -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, - 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, - -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, - -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, - -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, - -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, - -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, - 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, - 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, - -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, - -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, - -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, - -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, - -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, - -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, - -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, - -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, - -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, - -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, - -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, - -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, - -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, - -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, + -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, + -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, + 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, + -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, + -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, + -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, + -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, + -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, + 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, + 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, + -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, + -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, + -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, + -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, + -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, + -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, + -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, + -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, + -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, + -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, + -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, + -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, + -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, + -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, { 2309082, - -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, - -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, - 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, - -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, - -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, - -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, - -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, - -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, - 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, - 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, - -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, - -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, - -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, - -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, - -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, - -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, - -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, - -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, - -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, - -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, - -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, - -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, - -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, - -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, + -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, + -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, + 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, + -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, + -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, + -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, + -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, + -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, + 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, + 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, + -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, + -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, + -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, + -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, + -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, + -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, + -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, + -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, + -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, + -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, + -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, + -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, + -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, + -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, }, }; const Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 542228352, - 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, - -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, - 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, - 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, - 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, - -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, - -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, - -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, - -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, - -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, - -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, - -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, - -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, - -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, - -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, - -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, + 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, + -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, + 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, + 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, + 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, + -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, + -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, + -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, + -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, + -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, + -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, + -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, + -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, + -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, + -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, + -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, { 542228352, - 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, - -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, - 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, - 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, - 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, - -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, - -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, - -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, - -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, - -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, - -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, - -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, - -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, - -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, - -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, - -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, + 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, + -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, + 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, + 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, + 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, + -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, + -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, + -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, + -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, + -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, + -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, + -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, + -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, + -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, + -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, + -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, }, { { 67749352, - 219783680, 413881824, 505693216, 413422816, 164215392, -140707424, -402389056, -573466176, -653612416, -660346368, - -611244736, -521953408, -406601856, -276291488, -139582672, -4507032, 121427856, 232758240, 326858272, 404057088, - 467141056, 519165440, 560950656, 591515776, 610986496, 621836608, 627133952, 628743488, 627398080, 623321600, - 616330496, 606132096, 592982528, 577744000, 561221248, 543665536, 524797760, 504082048, 481199552, 456508864, - 430941984, 405336480, 380061120, 355244256, 330986272, 307298464, 284168448, 261772880, 240404352, 220141232, - 200755360, 181926224, 163439616, 145293904, 127723200, 111030272, 95366528, 80797464, 67489504, 55560232, - 44813152, 34916472, 25793426, 17500382, 9822053, 2378875, -4919348, -11912629, -18633178, -25326348, - -32058172, -38705172, -45339824, -52262236, -59613072, -67275296, -75201656, -83548392, -92396560, -101594768, - -110973904, -120557048, -130451576, -140654272, -151033056, -161435472, -171772928, -182076016, -192575600, -203677008, - -215695936, -228556688, -241831360, -255146832, -268460160, -281857760, -295178080, -307964192, -319747424, -330286208, - -339607360, -347886432, -355202400, -361324320, -365856064, -368671392, -370090880, -370577280, -370416224, -369777344, - -368903872, -368102848, -367618048, -367569728, -367946080, -368677312, -369823520, -371629024, -374272032, -377629088, - -381383424, -385236032, -388935584, -392324864, -395482208, -398631488, -401827488, -404948320, -408002560, -411121248, - -414235648, -417136352, -419830368, -422491104, -425155040, -427839936, -430786304, -434164288, -437787616, -441505984, - -445513728, -449924128, -454603488, -459719328, -465710816, -472510816, -479760736, -487769248, -496962624, -506955392, - -518123904, -532091680, -545398016, -543641408, -511176800, -451464416, -390454400, -352648480, -339506976, }, + 219783680, 413881824, 505693216, 413422816, 164215392, -140707424, -402389056, -573466176, -653612416, -660346368, + -611244736, -521953408, -406601856, -276291488, -139582672, -4507032, 121427856, 232758240, 326858272, 404057088, + 467141056, 519165440, 560950656, 591515776, 610986496, 621836608, 627133952, 628743488, 627398080, 623321600, + 616330496, 606132096, 592982528, 577744000, 561221248, 543665536, 524797760, 504082048, 481199552, 456508864, + 430941984, 405336480, 380061120, 355244256, 330986272, 307298464, 284168448, 261772880, 240404352, 220141232, + 200755360, 181926224, 163439616, 145293904, 127723200, 111030272, 95366528, 80797464, 67489504, 55560232, + 44813152, 34916472, 25793426, 17500382, 9822053, 2378875, -4919348, -11912629, -18633178, -25326348, + -32058172, -38705172, -45339824, -52262236, -59613072, -67275296, -75201656, -83548392, -92396560, -101594768, + -110973904, -120557048, -130451576, -140654272, -151033056, -161435472, -171772928, -182076016, -192575600, -203677008, + -215695936, -228556688, -241831360, -255146832, -268460160, -281857760, -295178080, -307964192, -319747424, -330286208, + -339607360, -347886432, -355202400, -361324320, -365856064, -368671392, -370090880, -370577280, -370416224, -369777344, + -368903872, -368102848, -367618048, -367569728, -367946080, -368677312, -369823520, -371629024, -374272032, -377629088, + -381383424, -385236032, -388935584, -392324864, -395482208, -398631488, -401827488, -404948320, -408002560, -411121248, + -414235648, -417136352, -419830368, -422491104, -425155040, -427839936, -430786304, -434164288, -437787616, -441505984, + -445513728, -449924128, -454603488, -459719328, -465710816, -472510816, -479760736, -487769248, -496962624, -506955392, + -518123904, -532091680, -545398016, -543641408, -511176800, -451464416, -390454400, -352648480, -339506976, }, { -67749352, - -219783680, -413881824, -505693216, -413422816, -164215392, 140707424, 402389056, 573466176, 653612416, 660346368, - 611244736, 521953408, 406601856, 276291488, 139582672, 4507032, -121427856, -232758240, -326858272, -404057088, - -467141056, -519165440, -560950656, -591515776, -610986496, -621836608, -627133952, -628743488, -627398080, -623321600, - -616330496, -606132096, -592982528, -577744000, -561221248, -543665536, -524797760, -504082048, -481199552, -456508864, - -430941984, -405336480, -380061120, -355244256, -330986272, -307298464, -284168448, -261772880, -240404352, -220141232, - -200755360, -181926224, -163439616, -145293904, -127723200, -111030272, -95366528, -80797464, -67489504, -55560232, - -44813152, -34916472, -25793426, -17500382, -9822053, -2378875, 4919348, 11912629, 18633178, 25326348, - 32058172, 38705172, 45339824, 52262236, 59613072, 67275296, 75201656, 83548392, 92396560, 101594768, - 110973904, 120557048, 130451576, 140654272, 151033056, 161435472, 171772928, 182076016, 192575600, 203677008, - 215695936, 228556688, 241831360, 255146832, 268460160, 281857760, 295178080, 307964192, 319747424, 330286208, - 339607360, 347886432, 355202400, 361324320, 365856064, 368671392, 370090880, 370577280, 370416224, 369777344, - 368903872, 368102848, 367618048, 367569728, 367946080, 368677312, 369823520, 371629024, 374272032, 377629088, - 381383424, 385236032, 388935584, 392324864, 395482208, 398631488, 401827488, 404948320, 408002560, 411121248, - 414235648, 417136352, 419830368, 422491104, 425155040, 427839936, 430786304, 434164288, 437787616, 441505984, - 445513728, 449924128, 454603488, 459719328, 465710816, 472510816, 479760736, 487769248, 496962624, 506955392, - 518123904, 532091680, 545398016, 543641408, 511176800, 451464416, 390454400, 352648480, 339506976, }, + -219783680, -413881824, -505693216, -413422816, -164215392, 140707424, 402389056, 573466176, 653612416, 660346368, + 611244736, 521953408, 406601856, 276291488, 139582672, 4507032, -121427856, -232758240, -326858272, -404057088, + -467141056, -519165440, -560950656, -591515776, -610986496, -621836608, -627133952, -628743488, -627398080, -623321600, + -616330496, -606132096, -592982528, -577744000, -561221248, -543665536, -524797760, -504082048, -481199552, -456508864, + -430941984, -405336480, -380061120, -355244256, -330986272, -307298464, -284168448, -261772880, -240404352, -220141232, + -200755360, -181926224, -163439616, -145293904, -127723200, -111030272, -95366528, -80797464, -67489504, -55560232, + -44813152, -34916472, -25793426, -17500382, -9822053, -2378875, 4919348, 11912629, 18633178, 25326348, + 32058172, 38705172, 45339824, 52262236, 59613072, 67275296, 75201656, 83548392, 92396560, 101594768, + 110973904, 120557048, 130451576, 140654272, 151033056, 161435472, 171772928, 182076016, 192575600, 203677008, + 215695936, 228556688, 241831360, 255146832, 268460160, 281857760, 295178080, 307964192, 319747424, 330286208, + 339607360, 347886432, 355202400, 361324320, 365856064, 368671392, 370090880, 370577280, 370416224, 369777344, + 368903872, 368102848, 367618048, 367569728, 367946080, 368677312, 369823520, 371629024, 374272032, 377629088, + 381383424, 385236032, 388935584, 392324864, 395482208, 398631488, 401827488, 404948320, 408002560, 411121248, + 414235648, 417136352, 419830368, 422491104, 425155040, 427839936, 430786304, 434164288, 437787616, 441505984, + 445513728, 449924128, 454603488, 459719328, 465710816, 472510816, 479760736, 487769248, 496962624, 506955392, + 518123904, 532091680, 545398016, 543641408, 511176800, 451464416, 390454400, 352648480, 339506976, }, }, { { 53941032, - 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, - -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, - 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, - 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, - 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, - 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, - -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, - -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, - -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, - -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, - -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, - -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, - 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, - -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, - -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, - -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, + 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, + -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, + 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, + 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, + 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, + 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, + -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, + -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, + -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, + -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, + -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, + -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, + 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, + -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, + -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, + -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, { 53941032, - 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, - -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, - 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, - 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, - 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, - 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, - -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, - -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, - -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, - -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, - -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, - -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, - 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, - -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, - -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, - -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, + 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, + -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, + 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, + 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, + 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, + 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, + -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, + -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, + -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, + -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, + -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, + -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, + 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, + -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, + -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, + -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, }, { { 45164804, - 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, - -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, - 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, - 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, - 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, - -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, - -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, - -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, - -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, - 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, - 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, - -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, - -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, - -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, - -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, - -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, + 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, + -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, + 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, + 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, + 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, + -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, + -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, + -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, + -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, + 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, + 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, + -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, + -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, + -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, + -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, + -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, { 45164804, - 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, - -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, - 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, - 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, - 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, - -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, - -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, - -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, - -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, - 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, - 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, - -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, - -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, - -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, - -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, - -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, + 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, + -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, + 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, + 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, + 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, + -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, + -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, + -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, + -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, + 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, + 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, + -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, + -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, + -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, + -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, + -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, }, }; const Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -124746248, - -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, - 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, - 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, - -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, - -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, - -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, - -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, - -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, - -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, - -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, - -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, - -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, - -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, - -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, - -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, - -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, + -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, + 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, + 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, + -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, + -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, + -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, + -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, + -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, + -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, + -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, + -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, + -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, + -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, + -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, + -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, + -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, { -124746248, - -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, - 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, - 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, - -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, - -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, - -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, - -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, - -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, - -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, - -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, - -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, - -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, - -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, - -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, - -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, - -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, + -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, + 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, + 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, + -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, + -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, + -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, + -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, + -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, + -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, + -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, + -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, + -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, + -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, + -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, + -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, + -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, }, { { 75551160, - 153462400, 61649960, -181907440, -461093184, -644651520, -667696128, -550006528, -353678208, -133872520, 77957952, - 265927200, 421319648, 540801856, 624756160, 674512256, 692065792, 681486208, 648934144, 601438208, 545628352, - 486087232, 424217664, 359794784, 294002336, 229964896, 170295456, 115383760, 64259692, 15963320, -30186640, - -74560096, -116906328, -156557456, -193199984, -227206448, -259244224, -289785216, -318798784, -345656832, -369518592, - -390016320, -407445824, -422309088, -434948128, -445623808, -454563232, -461833536, -467435264, -471597088, -474762464, - -477283072, -479235680, -480473696, -480748576, -479894400, -477985824, -475232768, -471772640, -467756288, -463552064, - -459556672, -455851712, -452353472, -449206336, -446673920, -444710592, -443041984, -441627328, -440660416, -440154688, - -439923840, -439966240, -440475744, -441451232, -442630752, -443856960, -445195904, -446641696, -447974208, -449013056, - -449805472, -450459392, -450933984, -451080544, -450812128, -450166784, -449283648, -448369344, -447608064, -446953632, - -446004960, -444204320, -441246144, -437220704, -432293824, -426354976, -419100768, -410395936, -400439136, -389628704, - -378339904, -366740800, -354755712, -342292256, -329602240, -317287488, -305881664, -295553344, -286270304, -278059392, - -270983456, -264992496, -259904576, -255485600, -251535296, -247990880, -244910304, -242226496, -239601728, -236631760, - -233112032, -229034496, -224499008, -219741808, -215028080, -210395952, -205689744, -200887424, -196107136, -191308576, - -186331248, -181236352, -176257936, -171451344, -166762304, -162288016, -158070896, -153847872, -149404736, -144890192, - -140407856, -135756944, -130899328, -126020784, -120862528, -114834544, -107882064, -100117832, -90797216, -79146048, - -64960308, -45236744, -12382391, 36526548, 86974160, 112453520, 99419368, 61046516, 19385872, }, + 153462400, 61649960, -181907440, -461093184, -644651520, -667696128, -550006528, -353678208, -133872520, 77957952, + 265927200, 421319648, 540801856, 624756160, 674512256, 692065792, 681486208, 648934144, 601438208, 545628352, + 486087232, 424217664, 359794784, 294002336, 229964896, 170295456, 115383760, 64259692, 15963320, -30186640, + -74560096, -116906328, -156557456, -193199984, -227206448, -259244224, -289785216, -318798784, -345656832, -369518592, + -390016320, -407445824, -422309088, -434948128, -445623808, -454563232, -461833536, -467435264, -471597088, -474762464, + -477283072, -479235680, -480473696, -480748576, -479894400, -477985824, -475232768, -471772640, -467756288, -463552064, + -459556672, -455851712, -452353472, -449206336, -446673920, -444710592, -443041984, -441627328, -440660416, -440154688, + -439923840, -439966240, -440475744, -441451232, -442630752, -443856960, -445195904, -446641696, -447974208, -449013056, + -449805472, -450459392, -450933984, -451080544, -450812128, -450166784, -449283648, -448369344, -447608064, -446953632, + -446004960, -444204320, -441246144, -437220704, -432293824, -426354976, -419100768, -410395936, -400439136, -389628704, + -378339904, -366740800, -354755712, -342292256, -329602240, -317287488, -305881664, -295553344, -286270304, -278059392, + -270983456, -264992496, -259904576, -255485600, -251535296, -247990880, -244910304, -242226496, -239601728, -236631760, + -233112032, -229034496, -224499008, -219741808, -215028080, -210395952, -205689744, -200887424, -196107136, -191308576, + -186331248, -181236352, -176257936, -171451344, -166762304, -162288016, -158070896, -153847872, -149404736, -144890192, + -140407856, -135756944, -130899328, -126020784, -120862528, -114834544, -107882064, -100117832, -90797216, -79146048, + -64960308, -45236744, -12382391, 36526548, 86974160, 112453520, 99419368, 61046516, 19385872, }, { -75551160, - -153462400, -61649960, 181907440, 461093184, 644651520, 667696128, 550006528, 353678208, 133872520, -77957952, - -265927200, -421319648, -540801856, -624756160, -674512256, -692065792, -681486208, -648934144, -601438208, -545628352, - -486087232, -424217664, -359794784, -294002336, -229964896, -170295456, -115383760, -64259692, -15963320, 30186640, - 74560096, 116906328, 156557456, 193199984, 227206448, 259244224, 289785216, 318798784, 345656832, 369518592, - 390016320, 407445824, 422309088, 434948128, 445623808, 454563232, 461833536, 467435264, 471597088, 474762464, - 477283072, 479235680, 480473696, 480748576, 479894400, 477985824, 475232768, 471772640, 467756288, 463552064, - 459556672, 455851712, 452353472, 449206336, 446673920, 444710592, 443041984, 441627328, 440660416, 440154688, - 439923840, 439966240, 440475744, 441451232, 442630752, 443856960, 445195904, 446641696, 447974208, 449013056, - 449805472, 450459392, 450933984, 451080544, 450812128, 450166784, 449283648, 448369344, 447608064, 446953632, - 446004960, 444204320, 441246144, 437220704, 432293824, 426354976, 419100768, 410395936, 400439136, 389628704, - 378339904, 366740800, 354755712, 342292256, 329602240, 317287488, 305881664, 295553344, 286270304, 278059392, - 270983456, 264992496, 259904576, 255485600, 251535296, 247990880, 244910304, 242226496, 239601728, 236631760, - 233112032, 229034496, 224499008, 219741808, 215028080, 210395952, 205689744, 200887424, 196107136, 191308576, - 186331248, 181236352, 176257936, 171451344, 166762304, 162288016, 158070896, 153847872, 149404736, 144890192, - 140407856, 135756944, 130899328, 126020784, 120862528, 114834544, 107882064, 100117832, 90797216, 79146048, - 64960308, 45236744, 12382391, -36526548, -86974160, -112453520, -99419368, -61046516, -19385872, }, + -153462400, -61649960, 181907440, 461093184, 644651520, 667696128, 550006528, 353678208, 133872520, -77957952, + -265927200, -421319648, -540801856, -624756160, -674512256, -692065792, -681486208, -648934144, -601438208, -545628352, + -486087232, -424217664, -359794784, -294002336, -229964896, -170295456, -115383760, -64259692, -15963320, 30186640, + 74560096, 116906328, 156557456, 193199984, 227206448, 259244224, 289785216, 318798784, 345656832, 369518592, + 390016320, 407445824, 422309088, 434948128, 445623808, 454563232, 461833536, 467435264, 471597088, 474762464, + 477283072, 479235680, 480473696, 480748576, 479894400, 477985824, 475232768, 471772640, 467756288, 463552064, + 459556672, 455851712, 452353472, 449206336, 446673920, 444710592, 443041984, 441627328, 440660416, 440154688, + 439923840, 439966240, 440475744, 441451232, 442630752, 443856960, 445195904, 446641696, 447974208, 449013056, + 449805472, 450459392, 450933984, 451080544, 450812128, 450166784, 449283648, 448369344, 447608064, 446953632, + 446004960, 444204320, 441246144, 437220704, 432293824, 426354976, 419100768, 410395936, 400439136, 389628704, + 378339904, 366740800, 354755712, 342292256, 329602240, 317287488, 305881664, 295553344, 286270304, 278059392, + 270983456, 264992496, 259904576, 255485600, 251535296, 247990880, 244910304, 242226496, 239601728, 236631760, + 233112032, 229034496, 224499008, 219741808, 215028080, 210395952, 205689744, 200887424, 196107136, 191308576, + 186331248, 181236352, 176257936, 171451344, 166762304, 162288016, 158070896, 153847872, 149404736, 144890192, + 140407856, 135756944, 130899328, 126020784, 120862528, 114834544, 107882064, 100117832, 90797216, 79146048, + 64960308, 45236744, 12382391, -36526548, -86974160, -112453520, -99419368, -61046516, -19385872, }, }, { { -13823352, - -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, - -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, - 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, - -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, - -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, - -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, - -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, - -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, - 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, - 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, - 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, - 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, - -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, - -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, - -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, - 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, + -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, + -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, + 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, + -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, + -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, + -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, + -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, + -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, + 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, + 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, + 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, + 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, + -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, + -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, + -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, + 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, { -13823352, - -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, - -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, - 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, - -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, - -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, - -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, - -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, - -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, - 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, - 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, - 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, - 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, - -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, - -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, - -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, - 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, + -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, + -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, + 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, + -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, + -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, + -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, + -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, + -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, + 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, + 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, + 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, + 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, + -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, + -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, + -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, + 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, }, { { 2399276, - -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, - -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, - 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, - -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, - -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, - -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, - -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, - -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, - 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, - 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, - -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, - -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, - -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, - -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, - -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, - -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, + -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, + -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, + 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, + -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, + -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, + -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, + -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, + -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, + 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, + 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, + -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, + -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, + -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, + -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, + -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, + -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, { 2399276, - -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, - -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, - 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, - -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, - -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, - -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, - -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, - -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, - 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, - 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, - -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, - -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, - -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, - -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, - -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, - -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, + -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, + -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, + 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, + -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, + -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, + -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, + -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, + -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, + 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, + 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, + -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, + -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, + -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, + -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, + -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, + -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, }, }; const Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 572464896, - 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, - -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, - 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, - 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, - 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, - -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, - -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, - -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, + 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, + -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, + 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, + 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, + 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, + -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, + -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, + -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, { 572464896, - 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, - -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, - 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, - 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, - 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, - -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, - -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, - -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, + 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, + -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, + 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, + 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, + 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, + -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, + -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, + -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, }, { { 106724032, - 257402224, 451714592, 544733376, 451847200, 201333568, -102984728, -363801440, -536040384, -617267328, -623113856, - -573654080, -485942816, -371313344, -239997936, -103555960, 29695404, 155337696, 267583984, 360738048, 436065344, - 499282432, 551908672, 592087040, 620928768, 640871936, 651791872, 654910016, 655111872, 654414528, 649687360, - 640095616, 628916352, 616357888, 599612352, 580264064, 562188672, 543567808, 520421184, 494704544, 469889824, - 443905824, 414950752, 387043136, 362318624, 336644384, 308771648, 283371200, 260980464, 236863696, 211723632, - 190507040, 171147472, 148254752, 124722632, 105695920, 87316688, 65259344, 44970992, 30302068, 14660871, - -4860829, -20713016, -31747324, -47103980, -66554812, -80329312, -91495152, -111316424, -134142032, -148395408, - -164614288, -196001376, -227258000, -247551712, -288954112, -372055840, -441701408, -434066560, -385475456, }, + 257402224, 451714592, 544733376, 451847200, 201333568, -102984728, -363801440, -536040384, -617267328, -623113856, + -573654080, -485942816, -371313344, -239997936, -103555960, 29695404, 155337696, 267583984, 360738048, 436065344, + 499282432, 551908672, 592087040, 620928768, 640871936, 651791872, 654910016, 655111872, 654414528, 649687360, + 640095616, 628916352, 616357888, 599612352, 580264064, 562188672, 543567808, 520421184, 494704544, 469889824, + 443905824, 414950752, 387043136, 362318624, 336644384, 308771648, 283371200, 260980464, 236863696, 211723632, + 190507040, 171147472, 148254752, 124722632, 105695920, 87316688, 65259344, 44970992, 30302068, 14660871, + -4860829, -20713016, -31747324, -47103980, -66554812, -80329312, -91495152, -111316424, -134142032, -148395408, + -164614288, -196001376, -227258000, -247551712, -288954112, -372055840, -441701408, -434066560, -385475456, }, { -106724032, - -257402224, -451714592, -544733376, -451847200, -201333568, 102984728, 363801440, 536040384, 617267328, 623113856, - 573654080, 485942816, 371313344, 239997936, 103555960, -29695404, -155337696, -267583984, -360738048, -436065344, - -499282432, -551908672, -592087040, -620928768, -640871936, -651791872, -654910016, -655111872, -654414528, -649687360, - -640095616, -628916352, -616357888, -599612352, -580264064, -562188672, -543567808, -520421184, -494704544, -469889824, - -443905824, -414950752, -387043136, -362318624, -336644384, -308771648, -283371200, -260980464, -236863696, -211723632, - -190507040, -171147472, -148254752, -124722632, -105695920, -87316688, -65259344, -44970992, -30302068, -14660871, - 4860829, 20713016, 31747324, 47103980, 66554812, 80329312, 91495152, 111316424, 134142032, 148395408, - 164614288, 196001376, 227258000, 247551712, 288954112, 372055840, 441701408, 434066560, 385475456, }, + -257402224, -451714592, -544733376, -451847200, -201333568, 102984728, 363801440, 536040384, 617267328, 623113856, + 573654080, 485942816, 371313344, 239997936, 103555960, -29695404, -155337696, -267583984, -360738048, -436065344, + -499282432, -551908672, -592087040, -620928768, -640871936, -651791872, -654910016, -655111872, -654414528, -649687360, + -640095616, -628916352, -616357888, -599612352, -580264064, -562188672, -543567808, -520421184, -494704544, -469889824, + -443905824, -414950752, -387043136, -362318624, -336644384, -308771648, -283371200, -260980464, -236863696, -211723632, + -190507040, -171147472, -148254752, -124722632, -105695920, -87316688, -65259344, -44970992, -30302068, -14660871, + 4860829, 20713016, 31747324, 47103980, 66554812, 80329312, 91495152, 111316424, 134142032, 148395408, + 164614288, 196001376, 227258000, 247551712, 288954112, 372055840, 441701408, 434066560, 385475456, }, }, { { 55647208, - 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, - -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, - 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, - 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, - 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, - 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, - -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, - -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, + 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, + -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, + 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, + 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, + 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, + 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, + -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, + -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, { 55647208, - 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, - -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, - 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, - 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, - 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, - 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, - -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, - -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, + 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, + -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, + 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, + 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, + 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, + 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, + -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, + -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, }, { { 44819596, - 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, - -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, - 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, - 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, - 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, - -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, - -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, - -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, + 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, + -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, + 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, + 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, + 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, + -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, + -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, + -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, { 44819596, - 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, - -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, - 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, - 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, - 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, - -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, - -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, - -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, + 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, + -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, + 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, + 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, + 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, + -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, + -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, + -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, }, }; const Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -124641560, - -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, - 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, - 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, - -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, - -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, - -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, - -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, - -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, + -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, + 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, + 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, + -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, + -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, + -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, + -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, + -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, { -124641560, - -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, - 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, - 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, - -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, - -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, - -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, - -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, - -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, + -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, + 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, + 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, + -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, + -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, + -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, + -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, + -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, }, { { 75593568, - 155059056, 65981972, -176542480, -455539808, -637033280, -657530496, -539268608, -342454912, -120152784, 93872416, - 282080576, 438413088, 560683840, 646364096, 696203456, 715256448, 707575488, 676227584, 628872896, 575156800, - 518422432, 457256192, 393254176, 330107968, 268590080, 209222352, 155216352, 107179296, 60949880, 14872935, - -27944668, -66942436, -105086576, -141653920, -173350256, -201999824, -231627056, -260288432, -284058944, -304740288, - -324854688, -341365088, -352426752, -362333632, -372995360, -380162592, -383072960, -386599680, -390847392, -391133536, - -388979616, -389657152, -390702976, -386790784, -381270688, -378934752, -375216384, -366126112, -357851296, -353983680, - -347605664, -336765696, -329902336, -327582528, -320349792, -309751968, -306260704, -305536992, -296023104, -285476800, - -286087776, -284915232, -269088832, -259352672, -266973552, -245536832, -154669296, -45682884, 1611, }, + 155059056, 65981972, -176542480, -455539808, -637033280, -657530496, -539268608, -342454912, -120152784, 93872416, + 282080576, 438413088, 560683840, 646364096, 696203456, 715256448, 707575488, 676227584, 628872896, 575156800, + 518422432, 457256192, 393254176, 330107968, 268590080, 209222352, 155216352, 107179296, 60949880, 14872935, + -27944668, -66942436, -105086576, -141653920, -173350256, -201999824, -231627056, -260288432, -284058944, -304740288, + -324854688, -341365088, -352426752, -362333632, -372995360, -380162592, -383072960, -386599680, -390847392, -391133536, + -388979616, -389657152, -390702976, -386790784, -381270688, -378934752, -375216384, -366126112, -357851296, -353983680, + -347605664, -336765696, -329902336, -327582528, -320349792, -309751968, -306260704, -305536992, -296023104, -285476800, + -286087776, -284915232, -269088832, -259352672, -266973552, -245536832, -154669296, -45682884, 1611, }, { -75593568, - -155059056, -65981972, 176542480, 455539808, 637033280, 657530496, 539268608, 342454912, 120152784, -93872416, - -282080576, -438413088, -560683840, -646364096, -696203456, -715256448, -707575488, -676227584, -628872896, -575156800, - -518422432, -457256192, -393254176, -330107968, -268590080, -209222352, -155216352, -107179296, -60949880, -14872935, - 27944668, 66942436, 105086576, 141653920, 173350256, 201999824, 231627056, 260288432, 284058944, 304740288, - 324854688, 341365088, 352426752, 362333632, 372995360, 380162592, 383072960, 386599680, 390847392, 391133536, - 388979616, 389657152, 390702976, 386790784, 381270688, 378934752, 375216384, 366126112, 357851296, 353983680, - 347605664, 336765696, 329902336, 327582528, 320349792, 309751968, 306260704, 305536992, 296023104, 285476800, - 286087776, 284915232, 269088832, 259352672, 266973552, 245536832, 154669296, 45682884, -1611, }, + -155059056, -65981972, 176542480, 455539808, 637033280, 657530496, 539268608, 342454912, 120152784, -93872416, + -282080576, -438413088, -560683840, -646364096, -696203456, -715256448, -707575488, -676227584, -628872896, -575156800, + -518422432, -457256192, -393254176, -330107968, -268590080, -209222352, -155216352, -107179296, -60949880, -14872935, + 27944668, 66942436, 105086576, 141653920, 173350256, 201999824, 231627056, 260288432, 284058944, 304740288, + 324854688, 341365088, 352426752, 362333632, 372995360, 380162592, 383072960, 386599680, 390847392, 391133536, + 388979616, 389657152, 390702976, 386790784, 381270688, 378934752, 375216384, 366126112, 357851296, 353983680, + 347605664, 336765696, 329902336, 327582528, 320349792, 309751968, 306260704, 305536992, 296023104, 285476800, + 286087776, 284915232, 269088832, 259352672, 266973552, 245536832, 154669296, 45682884, -1611, }, }, { { -13516799, - -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, - -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, - 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, - -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, - -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, - -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, - -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, - -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, + -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, + -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, + 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, + -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, + -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, + -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, + -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, + -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, { -13516799, - -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, - -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, - 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, - -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, - -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, - -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, - -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, - -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, + -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, + -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, + 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, + -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, + -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, + -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, + -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, + -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, }, { { 2524904, - -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, - -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, - 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, - -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, - -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, - -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, - -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, - -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, + -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, + -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, + 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, + -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, + -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, + -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, + -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, + -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, { 2524904, - -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, - -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, - 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, - -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, - -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, - -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, - -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, - -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, + -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, + -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, + 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, + -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, + -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, + -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, + -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, + -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, }, }; //BRIR coeff diffuse tables in Q31 const Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS][2885] ={ { -77309, - -23622, -40802, -27917, -64425, -12885, -103079, -27917, -339302, 229781, -17180, - 231928, -47245, 98784, 642098, -79457, -753767, -760209, -242666, -472446, 68719, - -386547, -1015760, 279173, -249108, -195421, 283468, 73014, -339302, -560493, -700080, - 79457, -418759, -279173, 163209, -775242, 689342, 691490, -397284, -70867, -251256, - -738734, 77309, -674310, -502511, 478889, -322123, 1037235, 4367982, -1913408, 1932735, - -833224, 685047, -38655, 1007170, -453119, 244813, 423054, 513249, 545461, 955630, - -249108, 105227, 1752347, 1314260, -3481071, 685047, -457414, 169651, -1194001, 775242, - -1501091, 1479616, 1217623, 605590, -206158, -470299, -560493, 1050120, 955630, -438087, - 206158, 1816771, -693637, -38655, -633508, 212601, 266288, -51540, -528281, 852551, - 115964, -261993, 633508, 17557826, -1297080, 2422362, -70867, 749472, 311385, 566936, - 373662, 1657857, -996432, 682900, -371515, 264141, 897648, 1415192, 547608, 253403, - -719407, 1286343, -979253, 474594, -470299, -1408749, 115964, 455267, 21475, -457414, - 92342, -508954, 878321, -1891933, 405874, -457414, 463856, -42950, -2645700, -932008, - 236223, 388695, 270583, -478889, -620623, -534723, 339302, 989990, -450972, 423054, - 10630044, -12513387, 2529736, -2989297, 1677185, -1928440, 1552631, -2645700, -773094, -1623498, - -272730, -1348620, 148176, 2486786, 3609920, 1524713, 826781, 88047, 1155346, 2583423, - 1894081, -1144609, -1372242, -1851131, -858993, -1060857, 133144, -152471, -128849, 73014, - 579821, -850404, 1144609, -1125281, -1490354, 577673, 15032, 133144, 358630, -1041530, - -1166084, 384400, -693637, -968515, -146029, 156766, 809601, -24262270, 4885526, -1183264, - 654983, 564788, -1995012, -876173, 1973538, -277025, 206158, 2207613, 743029, -788127, - -1468879, 1550483, 173946, -1795296, -2583423, -3762391, 1267015, -1651415, 433792, -508954, - 753767, -350040, 311385, -1937030, -1904818, -1176821, -476741, -1191853, 410169, -558346, - 736587, 2317135, 438087, 433792, 1552631, 453119, 395137, -15032, -251256, -1471026, - -311385, 384400, -234076, -36507, -29021094, 10904922, -2682207, 3526168, -1672890, 2553358, - -1357210, -358630, -2445984, 1943473, -2901251, 1990717, -472446, 2770254, -3680787, 1002875, - 3489661, 1060857, -2886218, -985695, -1726577, -680752, 1133871, 614180, 846109, -408022, - -964220, -1352915, -1342177, -62277, -1544041, -221191, -1434519, -979253, -4032974, -1078037, - -545461, 281320, 118112, 1468879, 627065, 1449552, -120259, 1677185, 405874, 208306, - 423054, 3579855, 12605729, -3536906, 5566278, -3455301, 1421634, -3723737, 2845416, -313533, - 3105261, -300648, -360777, 3049427, -556198, -478889, 2665027, -1374390, -2529736, -4015795, - 3478924, -337155, 2366527, 229781, 1668595, 777389, -2342905, 927713, 891206, -208306, - 1144609, 1760937, -2327872, 249108, -111669, -249108, -1352915, -644245, -1324997, 296353, - -307090, 938450, 2927020, 60130, 1464584, -324270, 251256, -373662, 416612, 1144609, - -584116, -1125281, 38158636, -9461813, 3590593, -1866163, 3173981, -1447404, 2426657, -1415192, - 809601, -3762391, 1687922, -3594888, 2680060, -1129576, 764504, -1078037, 3790309, 481036, - 925565, -1883343, 2465311, -270583, -1189706, 2083059, -1683627, -2611340, 32212, -848256, - 1189706, -60130, -416612, -884763, 339302, -133144, 448824, -1814624, 382252, -828929, - 2720862, -564788, 1286343, 197569, 1075889, 2010045, -1447404, 57982, 448824, -753767, - 1589138, -386547, -749472, 3253438, -19782620, 7859790, -6081674, 3642132, -3012920, 1082332, - -3981435, 2641405, -1571958, 3676492, -375810, 1625645, -3171833, -1314260, -178241, -1127429, - -1058710, 4239133, -3066607, 573378, 1984275, -3798899, 1015760, 1395864, -936303, 1361505, - 468151, 801011, -2418067, -173946, -758062, 1548336, -1191853, 865436, -2858301, -539018, - 2134599, 1063004, 693637, -691490, -410169, -2158221, -2319282, 1318555, 496069, -60130, - -322123, -158914, 229781, 251256, -470299, -431644, 309238, 354335, -783832, -586263, - -481036, -31969590, 10554882, -5609228, 1518271, -466004, 1853278, -2338610, 2656437, -998580, - -837519, -255551, 1941325, -951335, -1434519, 1157494, 3674345, -435939, 216896, -5987185, - 586263, 158914, 3017215, -897648, -386547, -4563403, -1516124, 115964, 156766, 1666447, - 2278480, -3435974, -3137474, 2128156, 590558, -3545496, -2695092, 1410897, 852551, -156766, - -34360, -1327145, 1483911, -380105, 586263, 238371, -1816771, -743029, 1080184, -2862596, - -1387274, -530428, 687195, -534723, 122407, -1404454, -53687, -1005022, 173946, -31930934, - 14194867, -7776039, 5985037, -5413807, 2753074, -6167573, 1477469, -4007205, 6438156, -3193308, - 2304250, -356482, 94489, -2890513, -785979, -1172526, 5834713, -1063004, 3004330, 4724464, - 2742337, 727997, -573378, 1159641, -970663, 2658585, 2592013, 395137, -1221918, 481036, - 541166, -1715839, -730144, 1359357, 1962800, -1406602, -1350767, -1428077, 154619, -575526, - 874026, -1378685, 1065152, -2183991, 712965, -1185411, -19327, 253403, -816044, -1176821, - -1464584, -1410897, -1838246, 261993, -1670742, -833224, 68719, 11800423, 12266427, -4638565, - 4035122, -5083094, 700080, 1445257, 60130, -2078764, 2231236, 513249, 4818954, 2473901, - 5452461, -921271, 3189013, -962073, 2014340, 2830384, -457414, -4105989, 3777424, -496069, - 1550483, -979253, -68719, 472446, 4636417, 620623, -2615635, -944893, 558346, -1486059, - 3483219, 1432372, -614180, -1002875, -2068027, 1498944, -2027225, 1937030, 2059437, -1644973, - 1157494, 1017907, 506806, -238371, 3384434, 2046552, 2463164, -182536, 249108, 1045825, - -788127, -369367, -287763, -828929, -70867, 94489, 261993, -700080, -1479616, -1578401, - 272730, 760209, 36030480, -12966506, 4404489, -6101001, 4037269, -4045859, 5209796, -1889786, - 176094, -4041564, 7861938, -1219771, 7075959, 365072, 1155346, -4870493, 1642825, 7103876, - -2276333, -6128919, 826781, 173946, 2740189, -4443144, 3508988, -120259, 249108, -466004, - -4271345, -1320703, 639950, -5145371, 779537, 1971390, 1632088, -1509681, -461709, -279173, - 2314987, 624918, -461709, -1127429, 1793149, 1185411, 4535486, 1093069, -736587, 2469606, - 974958, -358630, 796716, 1851131, 1232656, 171799, 257698, -1586990, 272730, -244813, - 1853278, -296353, 704375, -309238, 629213, -139586, 581968, 12120398, -17433272, 10494753, - -7735236, 3298535, 1209033, -758062, -631360, 2113124, -4367982, -2761664, -2250563, -1737314, - -5985037, 3081639, -5557688, -186831, -4443144, 1679332, -3339337, -2611340, -1316408, 5117454, - 734439, 4982162, 2617783, 3427384, 4913443, 296353, -601295, -706522, 1398012, 3803194, - -296353, -229781, -2493229, 1954210, -289910, -1453846, 1408749, 1206886, 3940633, 1649268, - 1864016, -2731599, -1282048, -111669, -504659, 1964948, -5607080, 1264868, -1370095, -895501, - -1733019, -1919850, -657130, -1896228, 801011, -1309965, -216896, -2907693, -2905546, 55835, - -1030792, 2426657, -37005440, -8042327, 1754494, -6972880, -2849711, 356482, -167504, -5933498, - 1769527, -5907728, 227633, 4857608, -843961, -740882, 2686502, 1786706, 2733747, 216896, - 3296388, -1739462, 970663, 3824669, -208306, -176094, -2420214, 3644280, -2729452, -1462436, - 985695, 1513976, 2780991, 8506183, -2267743, -1309965, -3592740, 270583, -2634963, 706522, - -1026497, -3906273, -204011, 5147519, 1473174, -3360812, -1662152, 1754494, -2035815, -2529736, - 528281, -1157494, 339302, 605590, 3240553, 526134, 1610613, 912681, -2654290, -1309965, - 1726577, 1653562, -1047972, 1015760, -176094, -1174674, 68719, -45425720, 37499360, -13103945, - 11145440, -8207683, 6279242, -2381559, 4002910, -4355097, 2686502, 3126736, 4531191, -2946348, - 5484673, 2707977, 9326521, -1462436, 794569, -4937065, 1260573, -1735167, -3070902, -3826816, - -4385162, -4054449, 6055904, -279173, 7267085, 1876901, 1344325, -128849, 938450, -3210488, - 530428, -1176821, 1526861, 4288525, 788127, 1406602, 272730, 438087, -3249143, -1801739, - -107374, -261993, 457414, -1009317, -2989297, 57982, 3251290, -1054415, 974958, 925565, - -2645700, 1818919, 811749, 992137, -526134, 287763, -266288, -850404, 261993, 2884071, - 51540, 169651, 26416196, -4127464, -8596377, -3021510, -1855426, -1428077, -7578470, -4007205, - 2042257, 1236951, 2091649, 2624225, -5111011, 1988570, -1047972, 1765232, 8057359, -8250632, - 2778844, 2787434, 2153926, -2166811, -4797479, 3648575, 1047972, 2598455, 4945655, -40802, - 6835441, 551903, 3150359, 225486, 2119566, -1937030, 2553358, 1836099, 2435247, -1002875, - 775242, -240518, 3137474, 3891240, -5879810, 7818988, 618475, 2153926, 296353, 1327145, - 1477469, -1698660, 4668630, 2503966, 135291, 4277788, 1791001, -2415919, -242666, -1629940, - -1756642, -1331440, 738734, -375810, 223338, -143881, -4864051, 2443837, -1954210, 642098, - -691490, -319975, -1236951, -723702, 20933670, 1788854, 4230543, -5473936, -1071594, -13531294, - 3182571, -693637, -9206262, 7636452, -4282083, 225486, 5598490, 2486786, 4194036, -3294240, - 1831804, -4301410, 45097, -3687230, 1324997, -5579163, 7887708, 5665062, 4645007, 5398774, - 1178969, -1857573, -3457449, 1488206, 4318590, -42950, 2933463, -2199023, 571231, 2826089, - 2005750, 2538326, 156766, 874026, -354335, -1906966, 1812476, -1337882, 833224, 697932, - -1917703, 2518998, -3519726, 3064459, -1664300, 2149631, 3345780, -4174708, 388695, 418759, - -1705102, -3302830, 2269890, -5319317, -4086662, 2463164, 1041530, 1114544, 998580, 3210488, - 3128884, -1202591, 423054, 1848983, -777389, -79457, 33116346, -27489938, 9358734, -6824703, - 2445984, 8619999, 7015829, -4589173, 8407398, 4741644, 5091684, -3448859, 2385854, -1750199, - 9979357, 2785286, 2841121, 3871913, 4243428, 2688650, 2909840, -8158291, 1340030, -14759655, - -5111011, -1355062, -8435316, 2143189, 4571993, -3176128, -4561256, -5385889, -5153961, -2750927, - 3012920, 2366527, -7492571, -8693014, -635655, -4428112, 2409477, 1945620, 863288, -609885, - 4155381, -2151779, 244813, -562641, -1810329, -5581310, 4370129, 7370164, -957778, -912681, - 3496104, -5177583, 6335077, 1632088, -3152506, -109522, -2924873, -1241246, -710817, -2113124, - -526134, -1425929, -4299263, 1136019, 1599875, 1471026, 1586990, 502511, -51105816, 5196911, - -4458176, 1992865, 5330055, 3859028, 10559177, -4183298, -253403, 953483, 12616466, 4453881, - -9689446, -6289980, 5626407, 7509751, -1750199, -2686502, -98784, 3521873, 7752416, 7879118, - -6442, -13799730, -3917010, -1329292, -1565516, 8177618, -3603478, 4818954, 566936, -777389, - -7114614, 676457, 5849746, -9126806, -5310727, -2065879, -1516124, -4273493, -3558381, -8525510, - -1494649, -5748814, 152471, 1367947, 6317897, -4140349, -2697240, 635655, -530428, 1069447, - -5267778, 2203318, 2130304, 770947, 395137, -3955665, -3588445, -1949915, -1065152, -221191, - -6841883, 1507534, 2110977, -2894808, -6281390, 2645700, -221191, -3096672, -543313, -1389422, - -977105, 4127464, -30163556, 31842888, -4645007, 1937030, 7436736, 8942122, -6882685, 4264903, - 1627793, 5495411, 3685082, 7791071, 4352950, -5398774, -8942122, 1187559, 9272834, 18640158, - -4617090, -6423124, 4801774, 2972117, -3676492, -9283572, -1979980, -1917703, -8443906, 7239168, - 8592082, 75162, 1915555, -234076, 6730214, -5396627, -16649441, 6917045, -2098092, 5478231, - 2536178, 180389, -4211216, -6410239, 4286378, 5160403, 3685082, -790274, -461709, 5682242, - 3096672, 1720134, -3536906, 4778151, 3904125, -710817, -1378685, -2841121, 3178276, 66572, - -8291435, 6676527, 3889093, -1559073, 1795296, -1052267, 85899, -191126, 1857573, 493921, - 2312840, 3929895, 1979980, -633508, -2538326, -1612760, 5654325, 2220498, -1129576, -1801739, - -335007, 8939974, 322123, -6977175, -14229227, 3375844, -785979, -11759620, 3910568, -3932043, - 504659, -4490389, -3496104, 3629247, 8866960, 1039382, 11761768, 5295695, -5978595, -7868380, - 12876312, -5662915, -450972, 1093069, -12156905, -156766, 6378027, -7099581, -1900523, 8050916, - 481036, 4172561, 94489, 5276368, -934155, -3695819, -515396, 7026567, 9554155, -3212636, - 1917703, 1593433, 6365142, -3878356, -693637, 1170379, -1640678, 4071629, 1851131, 266288, - -2199023, 3238405, 3665755, 113817, 161061, 2680060, 4292820, -5261335, -36507, 1363652, - 2351495, -2735894, 2130304, 979253, 60130, 1417339, -1651415, 635655, 1702955, 3491809, - 4312147, -3575560, 384400, 67025112, -6560563, 1013612, 4078072, -6124624, -10511932, -6150393, - -2695092, -11935714, -12818330, 878321, -11366631, -5044439, -3358665, -2864743, 6813966, 7975755, - 2445984, 16797618, 2957085, -8450348, 14439680, -1544041, 10194105, -3377992, -1189706, -9663676, - 253403, 8398809, -399432, -4211216, -1752347, 788127, -2237678, -1870458, 3161096, -7707319, - 2980707, 1069447, -3732327, -7312182, -5025112, 5508296, 5379447, 6485401, -11184095, 6146098, - 1586990, -330712, 380105, 1032940, 1097364, 1372242, -1067299, 528281, 5723044, -1709397, - 2173254, 2684355, -2566243, 4797479, 5428839, 874026, -629213, 5080947, 3528316, 2783139, - 3322157, -4367982, -2136746, 947040, -616328, -689342, 143881, 2248416, 472446, -4232691, - -39352636, -66065188, 24013162, -1612760, 10030896, -11510512, 618475, -13344463, -1666447, -19271518, - 8426726, 8976482, -358630, -1449552, -167504, 1855426, -4552666, -16426102, 30419106, 2156074, - -3816079, 10456098, 1921998, -5437429, 14643691, 16237124, -6882685, 9597104, 1930588, -2020782, - -15109695, -8272107, 11940009, -6064494, 1750199, -781684, 8143258, -12348031, -13846975, 2003602, - 279173, -9380209, 5757404, 1185411, -5798206, 4183298, -6395207, -5366562, 2643552, 2493229, - 416612, -1713692, -2976412, 3876208, 6562710, 962073, 2115272, -1851131, -1791001, 5680094, - 751619, 1279900, -5703717, -1324997, -3783866, 3193308, 4810364, 47245, 3972845, -53687, - 5269925, -4202626, 2680060, -62277, -178241, -3972845, 27917, -3408057, -380105, -21206402, - 63977832, -28329604, 4853313, 4243428, 16097537, -1973538, 10305774, -10052371, 700080, -19331648, - -3631395, 152471, 7894150, 1350767, 8128226, -5506148, -11688753, 1574106, -17624398, -18614388, - 633508, -6083821, -249108, 1642825, 2772402, -4582730, -2995740, -6618545, -10000831, 4110284, - 5001490, -13114683, -5847598, -16499117, 373662, -7267085, 6060199, 6992207, -13509820, 2186138, - 11368778, 10159745, -5126044, 3721589, -3751654, -1891933, 3300682, -6137509, -1191853, 5772436, - 4619238, 3964255, 4962835, 2604898, -1292785, 3816079, 2643552, -2815351, 0, 7756711, - -663572, -3543348, -981400, 3208341, -3161096, -7898445, -418759, -2750927, 2179696, 1694365, - -996432, -3197603, -4608500, -5572720, 5815386, -1887638, -60130, -1247688, -236223, -695785, - -52632676, -16187732, 6111739, -8177618, 7700877, -3313567, 240518, -15393163, -18532784, -2368675, - -6380174, 7999377, 2394444, -2102387, -38482908, 19572166, 1539746, 17078938, 21187074, 14718853, - -20044612, -4756677, -1797444, -4870493, 4518306, 4971425, -188979, -7183333, 8332237, -13488345, - -7148973, 12311524, 781684, -5044439, 14351633, 500364, 15047418, -4964982, -2226941, 1956358, - 4818954, -10477573, -7720204, -1690070, 8542690, -2866891, 1513976, -3169686, 5757404, 7224135, - 1516124, 566936, -12219182, -1095217, 6204081, 6981470, -3723737, 7799661, 2652142, -1904818, - 2132451, -7524783, -2267743, -4969277, 5242008, 1000727, -1662152, 2042257, -13050258, 287763, - 2660732, 6524056, 2229088, -3251290, 6255620, 788127, -8171176, -3573413, -4121021, -962073, - 1896228, 33601676, 11207717, -20525648, -3661460, -8955007, 6891275, -12470438, 10075993, -2488934, - 11751031, 8085276, 14306536, -19685982, 23244364, -14577119, 13539884, -8072391, 8061654, 1331440, - 6826851, -12674448, -28709708, 10874857, 19765440, -7436736, 8042327, -10337986, 2269890, -6865505, - 20798380, -418759, -2173254, 4769561, -10260677, -7290707, -6053757, 8950712, -4295, -3605625, - -85899, -2035815, 14267881, 9401683, -5463199, 4425964, 5375152, -6195491, -3545496, -5604933, - -10969346, -1733019, 137439, -1709397, -4086662, -11276437, -539018, 16621523, 9064528, -7284265, - 9328669, -1251983, -244813, 7655779, 4045859, -8287140, 2954938, 1546188, 8224863, 9702331, - -7984344, 3337190, 5731634, 7346542, -749472, -476741, -2808909, -1647120, 4194036, -957778, - 7687992, -2007897, 71625024, -58344984, -9758166, 2946348, -1093069, -16110422, 5448166, 4245575, - 22898618, -7464653, 4531191, 18805514, 545461, 11315091, 37179384, -8057359, -2379412, -19318762, - -18036716, 839666, 6186901, -8147553, 3566970, 32751274, 18988050, 2725157, 1284195, 2669322, - 18172006, -15118285, -6637872, -837519, 9399536, -1451699, 2299955, -7670812, 2950643, -13625784, - -7956427, -10303627, 225486, -9229885, 2267743, -16436840, 7642895, -32839320, -8340827, 4496831, - 6128919, -1236951, -7503308, 2531883, 1037235, 3925600, -8912057, 3985730, -5188321, -5950677, - -14418205, -10812580, -3113851, -1821066, 785979, 2443837, 4720169, 867583, 2295660, -8665097, - 17180, -10574209, -1511829, -747324, 360777, 3491809, 10617159, -6614250, -2858301, -719407, - -5538361, -9764608, 2261300, -45105748, -31346818, -2171106, -6221260, 23890756, 938450, 4548371, - -29545080, 1698660, 4243428, 1864016, 2452426, 18083960, -22174916, 4885526, -4606353, -15238544, - -7303592, 14364518, -4808216, 11720966, -3786014, 6854768, 3796751, -2244121, -1593433, 7739531, - -856846, 32212, -18955838, 9603547, 8738111, 8235600, 9494025, -17035988, -17529910, 10438918, - 15526307, -18330920, 6972880, 2774549, 16125455, 9300752, 1707250, 10844792, -5471789, -11025181, - -1503239, -21365314, -15509127, -1649268, -616328, 3504693, -10065256, 3659312, -8035884, -27421218, - -7887708, -7337952, -26961658, 122407, -4252018, -3098819, 3283503, 8521215, -7803956, 5278515, - 3635690, -12195560, -7647190, -9360881, -1825361, -2733747, -64425, -3835406, 5392332, -5909875, - -1329292, -5016522, 9109626, -9822590, 6079526, -1516124, -1990717, 579821, 2710124, -2280628, - -28166396, 43095700, -22503482, -9545565, -13134010, 3496104, 3768834, 6438156, -2660732, 18876382, - 14218489, -13376676, -23875724, 9073118, -8927090, 22136262, 1864016, 9521942, 11615739, -8211978, - -8038032, 29384018, -16720308, -3914863, -8469676, 1161789, -3468186, 4024384, -4915590, -1803886, - -22533546, 20061792, -6919193, -1623498, 23596550, -15988016, -20319490, 2001455, -9204115, -13228499, - -55835, -6700149, 5366562, -29197188, -9730248, -7039452, -672162, 10514080, 163209, 2235531, - 5381594, -4861903, 4116726, 7090991, 6000070, 6738804, -3730179, -6043019, -5413807, 7642895, - -17744658, -3697967, -4161823, -4202626, 11647951, -7683697, -12412455, 12792560, 3861176, 7780334, - 14961519, -5282810, -4967130, 7580618, -8057359, -10020159, -9401683, 5804649, 4303557, -5349382, - 5166846, 1926293, 6090264, 1299228, -11218455, 7726646, -3723737, -58961312, 29693256, 31978180, - 16449725, 14944339, -10441065, 15187004, -25398290, 959925, -29862908, -3826816, -12964359, 14044543, - -14214194, -11796128, -3131031, -21891448, 6590628, -9953587, 9844065, -20549272, 34561600, -11224897, - 16396038, -14050986, 1513976, -14078903, -4406637, 7883413, 22177064, 24809878, -12264279, 169651, - -7194070, -12990129, -9848360, -35246648, -727997, 5985037, -33105608, 13022341, 6667937, 9163313, - 16015933, 10084583, 5448166, -11102490, -3534758, -12390981, -6206228, 6715182, -26454852, 10529112, - 5315022, 1750199, -12442520, -7359427, 6936372, 21464100, 9122511, 5583458, -8336532, 8974334, - 1350767, -10127533, 2847563, -7316477, -11486890, -6006512, -2632815, -10471130, 12060268, 6805376, - 9835475, 5433134, -8643622, 2907693, 15043123, -2929168, 13980119, 7385197, 5233418, 9371619, - -4784594, -5589900, 3715147, 2448131, 49147312, -33496450, -13945759, -4108136, 8590, 24017458, - -4355097, 7977902, -13587129, 7554848, -8390219, -38530152, -26456998, -9747428, 14014478, -1492501, - -21245056, -19883552, -42069204, -13458280, 5534066, 5871221, 2080912, -4185446, -2362232, -12925704, - 3549791, 5654325, 7290707, 1803886, -1812476, -4898410, -20016696, -4975720, -4464619, 10286447, - -1997160, -15908559, -6204081, 4808216, -17944374, 3251290, -18511310, 10520522, 14654428, -13675176, - -26839250, -5059472, -8375186, -12186970, 1391569, 2587718, 2746632, 6762426, 429497, -10432476, - 16982300, 26383984, -12573517, 11025181, 4475356, 12575664, -18923626, 7310035, 2488934, 6919193, - -27260158, 21749714, 2692945, 2568391, -3257733, -15483357, 4127464, 2106682, 3895535, 4896263, - -16973710, -8875550, 3420942, 8123931, -4252018, 105227, 6388764, 2626373, -3017215, -8050916, - 5963562, 79590040, -44493712, 4058744, -4483946, -9496173, -33202244, -1808181, -1851131, 26989574, - 12335146, 54541788, -21713208, 2076617, 5954972, 13045963, -5596343, -2544768, 22106196, -13913547, - 31823560, 19273666, -44266080, 42150808, 14856292, -15255724, -11008001, -16640851, -8673686, 2989297, - 1924145, -11978664, 28016072, 3547643, -13445395, -11942157, 2720862, -14774687, -26025354, 195421, - 15513422, 6118181, 18869938, -8834748, 5862631, 20160576, 29085518, 6792491, -30122754, 9807558, - -9702331, -16681653, 4378719, 12650826, 7316477, -3768834, -27335320, -24026048, 33711200, -4554813, - 26053272, 2877628, -10262824, 12659416, -22591528, -10125385, 10900627, -3042984, 22417582, -18146236, - -35682588, -10157598, -1739462, -11106785, -8544837, 22056804, -7417409, 3929895, -20366734, -20063940, - 9758166, 4949950, 8224863, -8839043, 8398809, 682900, -4733054, -1206886, -89620936, -58177480, - 21592948, -30148522, 9852655, -14980846, -54159536, -40035536, 72703056, -33217278, 32923072, 18663780, - -18773302, 17057462, -10582799, 22995254, 25479894, -1477469, -7020124, 43621836, -13962939, -48964776, - 968515, -20420422, 5179731, 4797479, 29577292, 15736760, 6285685, 14544907, -13067438, 143881, - 32373316, 20731808, -5641440, 8433168, -28275918, -43836584, -32244466, -22531398, -6191196, -6126771, - 8308614, -3974992, -12081743, 28310276, 7582765, -21064668, -19651622, -5592048, 8362302, -21227876, - 8699456, 26414048, -360777, 9964324, -17897128, 14134737, 10376641, 3345780, 10580652, -15790447, - -24404004, -34497176, 17547088, 13731010, 1363652, 13625784, 2731599, -15779710, -3171833, 1305670, - -27502824, -2426657, -42820824, -23547158, 7355132, -10894185, 8420283, 1099512, -5512591, -5787469, - -3869766, -7928510, 7799661, 292058, -1097364, -107176616, 36754184, -8370892, -6865505, 19344532, - 4887673, 10857677, 46952584, 28071906, 35508644, 17918604, 48423608, -8327942, -46787228, 7069516, - -5085242, -19995220, -41420664, -18023830, 36590972, 8381629, -2312840, 7718056, -2564096, 633508, - 30878668, 4011500, 11592117, -4526896, 7806103, 30659624, -8231305, -20446192, 15747498, -36395552, - -36442796, -23480586, -4410932, 1101659, 15425375, 35888748, 788127, -12275017, -35450660, -58405112, - -20336670, -8461086, -3246995, -324270, 21837762, -26738318, 48528836, 25142738, -4325032, 13945759, - -18743238, 3511136, 670015, 22376780, 43411380, 29137058, -25097642, -10630044, 7509751, -4060892, - -5104569, 2252710, -12799003, -41766408, -2845416, -7687992, -2671470, 6567005, -15940771, -5480379, - -28174986, -3023657, 4357245, 29873646, 15017353, 4194036, 5190468, 7544110, 1318555, -25284472, - 5600638, -5896990, 7148973, -3094524, -2920578, -13855564, 43364136, 43898860, 14721000, 29278792, - 21045340, 46080704, -41047004, 47921096, -59105192, -10604274, 54741504, 75172664, 15479062, -5057324, - 27206470, -23448374, -27290222, 54314156, 8549132, -8665097, 13039521, 43619688, -11785390, 26658862, - -9064528, -11239929, -5512591, 19557134, -51065012, -6442451, 24438364, -11512660, 2342905, -18217104, - 10290742, 40007620, -37372656, 11761768, -11250667, 12932147, -19666656, 26813480, 2050847, 9554155, - 10711648, -45210972, 21741124, -62861140, -13005161, 35313220, 3577708, -22576496, 38989712, -13737453, - -23927262, 28284508, -11972221, -8319352, -4756677, 17018808, -2849711, 4365835, -34482144, 12264279, - 2896956, 66752380, -50594716, -22089016, 5695127, -13108240, 14811195, 18713172, -24496346, 46645492, - 17212082, -362925, 7380902, 15530602, -7900593, -25524990, 9704479, -13234942, 3865471, -5304285, - 11875585, -16226386, 4574140, 27917, -8875550, 10636487, -4105989, 89526448, -56173876, 2055142, - -9105331, -15071040, 1705102, -20581484, -8800388, -66406636, -55649892, -55364276, 18356690, -11611444, - 18133352, -12700218, -40355512, 64046552, 44502304, -29845728, -25196426, -35218732, -7548405, 13675176, - 20952998, 25898652, -2040110, 20040318, -5991480, -25396142, -31172872, 19314468, -14325863, 58512488, - 36436356, 53972708, 7352984, 19617264, 52918292, 36846524, -11931419, 9706626, -2639258, 665720, - 5357972, -24775518, -18126910, 9562745, -31286690, -31913754, 30618822, 35188668, -38860864, -1236951, - 68184752, 47749300, -2770254, -22604412, -5315022, 14239964, 12539157, -9212705, -25853556, 30674656, - -2405182, 7567733, 21569326, 27910844, -29506426, 12594992, -5149666, 11660836, -45679124, 8471823, - 40510132, -40617504, -33846488, -17239998, 17761838, 32388348, -18642306, 17879948, -16134045, -1468879, - 508954, 6863358, 11652246, -5493263, -2937758, 7492571, 6335077, 242666, -1376537, 5471789, - 72606424, 27940910, -9715216, -2362232, 22763326, -27206470, -35373352, 30307436, -42258184, -54715736, - 14523432, -29368986, -37845104, -19752554, 36135708, 88650272, 36689760, -48262548, 90806344, 10531260, - -14235669, 16357383, -53027812, 13481902, 7325067, -38016904, 32877974, -10228465, 6489696, -27373974, - 15375983, -25016038, 45958296, -54432268, -20044612, -18807662, 25930866, 29920890, 26667452, -28930900, - 8461086, -30245160, -8677981, 16116865, 38416336, 17731772, -17643726, 37415608, 19088982, 30182882, - 2029372, 35184372, -15382425, 19454054, -53560388, 60185376, -5216238, 8381629, -15949361, -31376884, - 1617055, 20104742, 48088600, 14139032, -57490284, 24524264, -23248658, 47373488, 4114579, -18081812, - 9199820, -15635828, 9899900, -33481418, 13415330, 3197603, 2954938, 5366562, -6517613, 3459596, - -8978629, -14029511, 18801220, 11766063, 10861972, -24820616, 8237748, -13460428, 11647951, 2615635, - -1477469, 5815386, 2845416, -148921552, 6358699, 24691766, 58244052, 19007378, -91684664, 121678568, - 44498008, -56008520, 19896436, 121023592, 27064736, -29639570, -3841848, -73652248, 37572372, 3302830, - -18949396, 10389526, 24985972, -47826608, 25303800, -59882580, 6146098, -54593328, -49067852, -21006686, - 22840636, 34806416, -26897232, 30419106, -53203908, -7801808, 59431608, 5332202, -21642340, -7174743, - 11493332, -13973676, -39492224, -44079248, -5959267, -20325932, 42900280, -60591252, 63872608, 20222854, - 8070244, -21599390, -7148973, 29448444, -24099062, 39786428, 9805410, 35948876, -13428215, -21120502, - -63359356, 21453362, -6483253, -65373696, 19475530, -4582730, 39603892, 63739464, -27090506, 14340896, - 31437014, 33429878, 6805376, -19698868, -3895535, -79136920, -3938485, 7005092, 19417548, -618475, - 52982716, 11276437, 26310970, -30041148, -21410412, 39483636, -4133906, -8302172, 23976654, -5813238, - -6805376, -685047, -1378685, 2347200, -4352950, 21900038, 184451664, 84091168, 17529910, 29991756, - -37752764, -25338160, -8894877, 69720208, -49340584, 7937100, -41042708, -113359216, -54320600, 26029650, - -28915868, 18747532, -44869524, -2252710, -48249664, 41467908, -48850960, -35165044, -105149392, -19606526, - -16471200, -27633820, 54863912, -17798344, -43840880, 14302241, 42341936, 15700253, 14413910, -6298570, - -8821863, -27801324, 21620866, -35794256, -9607842, -22241488, -62672164, 9562745, -43471512, 17583596, - 5667210, -12773233, -1359357, -45704896, -2551211, -10400263, 66911296, -19245748, -1535451, 27200028, - -36621040, -16275779, 67901288, -39603892, 25982404, 1778117, 60393684, 85755464, -5010080, 11085311, - 8589935, 29673930, 15539192, -65420940, 6027987, 16544214, 23109072, -27998892, -43548820, 4578435, - 12674448, -11390253, -16548509, -70177616, -34617436, -40364104, 2838974, 8864812, -13224204, -19288698, - -21904334, -5379447, -10992969, -12281459, 14626511, -6889128, 7086696, -25252260, 1808181, -9756018, - -17493402, 4101694, 10284299, -13623636, }, + -23622, -40802, -27917, -64425, -12885, -103079, -27917, -339302, 229781, -17180, + 231928, -47245, 98784, 642098, -79457, -753767, -760209, -242666, -472446, 68719, + -386547, -1015760, 279173, -249108, -195421, 283468, 73014, -339302, -560493, -700080, + 79457, -418759, -279173, 163209, -775242, 689342, 691490, -397284, -70867, -251256, + -738734, 77309, -674310, -502511, 478889, -322123, 1037235, 4367982, -1913408, 1932735, + -833224, 685047, -38655, 1007170, -453119, 244813, 423054, 513249, 545461, 955630, + -249108, 105227, 1752347, 1314260, -3481071, 685047, -457414, 169651, -1194001, 775242, + -1501091, 1479616, 1217623, 605590, -206158, -470299, -560493, 1050120, 955630, -438087, + 206158, 1816771, -693637, -38655, -633508, 212601, 266288, -51540, -528281, 852551, + 115964, -261993, 633508, 17557826, -1297080, 2422362, -70867, 749472, 311385, 566936, + 373662, 1657857, -996432, 682900, -371515, 264141, 897648, 1415192, 547608, 253403, + -719407, 1286343, -979253, 474594, -470299, -1408749, 115964, 455267, 21475, -457414, + 92342, -508954, 878321, -1891933, 405874, -457414, 463856, -42950, -2645700, -932008, + 236223, 388695, 270583, -478889, -620623, -534723, 339302, 989990, -450972, 423054, + 10630044, -12513387, 2529736, -2989297, 1677185, -1928440, 1552631, -2645700, -773094, -1623498, + -272730, -1348620, 148176, 2486786, 3609920, 1524713, 826781, 88047, 1155346, 2583423, + 1894081, -1144609, -1372242, -1851131, -858993, -1060857, 133144, -152471, -128849, 73014, + 579821, -850404, 1144609, -1125281, -1490354, 577673, 15032, 133144, 358630, -1041530, + -1166084, 384400, -693637, -968515, -146029, 156766, 809601, -24262270, 4885526, -1183264, + 654983, 564788, -1995012, -876173, 1973538, -277025, 206158, 2207613, 743029, -788127, + -1468879, 1550483, 173946, -1795296, -2583423, -3762391, 1267015, -1651415, 433792, -508954, + 753767, -350040, 311385, -1937030, -1904818, -1176821, -476741, -1191853, 410169, -558346, + 736587, 2317135, 438087, 433792, 1552631, 453119, 395137, -15032, -251256, -1471026, + -311385, 384400, -234076, -36507, -29021094, 10904922, -2682207, 3526168, -1672890, 2553358, + -1357210, -358630, -2445984, 1943473, -2901251, 1990717, -472446, 2770254, -3680787, 1002875, + 3489661, 1060857, -2886218, -985695, -1726577, -680752, 1133871, 614180, 846109, -408022, + -964220, -1352915, -1342177, -62277, -1544041, -221191, -1434519, -979253, -4032974, -1078037, + -545461, 281320, 118112, 1468879, 627065, 1449552, -120259, 1677185, 405874, 208306, + 423054, 3579855, 12605729, -3536906, 5566278, -3455301, 1421634, -3723737, 2845416, -313533, + 3105261, -300648, -360777, 3049427, -556198, -478889, 2665027, -1374390, -2529736, -4015795, + 3478924, -337155, 2366527, 229781, 1668595, 777389, -2342905, 927713, 891206, -208306, + 1144609, 1760937, -2327872, 249108, -111669, -249108, -1352915, -644245, -1324997, 296353, + -307090, 938450, 2927020, 60130, 1464584, -324270, 251256, -373662, 416612, 1144609, + -584116, -1125281, 38158636, -9461813, 3590593, -1866163, 3173981, -1447404, 2426657, -1415192, + 809601, -3762391, 1687922, -3594888, 2680060, -1129576, 764504, -1078037, 3790309, 481036, + 925565, -1883343, 2465311, -270583, -1189706, 2083059, -1683627, -2611340, 32212, -848256, + 1189706, -60130, -416612, -884763, 339302, -133144, 448824, -1814624, 382252, -828929, + 2720862, -564788, 1286343, 197569, 1075889, 2010045, -1447404, 57982, 448824, -753767, + 1589138, -386547, -749472, 3253438, -19782620, 7859790, -6081674, 3642132, -3012920, 1082332, + -3981435, 2641405, -1571958, 3676492, -375810, 1625645, -3171833, -1314260, -178241, -1127429, + -1058710, 4239133, -3066607, 573378, 1984275, -3798899, 1015760, 1395864, -936303, 1361505, + 468151, 801011, -2418067, -173946, -758062, 1548336, -1191853, 865436, -2858301, -539018, + 2134599, 1063004, 693637, -691490, -410169, -2158221, -2319282, 1318555, 496069, -60130, + -322123, -158914, 229781, 251256, -470299, -431644, 309238, 354335, -783832, -586263, + -481036, -31969590, 10554882, -5609228, 1518271, -466004, 1853278, -2338610, 2656437, -998580, + -837519, -255551, 1941325, -951335, -1434519, 1157494, 3674345, -435939, 216896, -5987185, + 586263, 158914, 3017215, -897648, -386547, -4563403, -1516124, 115964, 156766, 1666447, + 2278480, -3435974, -3137474, 2128156, 590558, -3545496, -2695092, 1410897, 852551, -156766, + -34360, -1327145, 1483911, -380105, 586263, 238371, -1816771, -743029, 1080184, -2862596, + -1387274, -530428, 687195, -534723, 122407, -1404454, -53687, -1005022, 173946, -31930934, + 14194867, -7776039, 5985037, -5413807, 2753074, -6167573, 1477469, -4007205, 6438156, -3193308, + 2304250, -356482, 94489, -2890513, -785979, -1172526, 5834713, -1063004, 3004330, 4724464, + 2742337, 727997, -573378, 1159641, -970663, 2658585, 2592013, 395137, -1221918, 481036, + 541166, -1715839, -730144, 1359357, 1962800, -1406602, -1350767, -1428077, 154619, -575526, + 874026, -1378685, 1065152, -2183991, 712965, -1185411, -19327, 253403, -816044, -1176821, + -1464584, -1410897, -1838246, 261993, -1670742, -833224, 68719, 11800423, 12266427, -4638565, + 4035122, -5083094, 700080, 1445257, 60130, -2078764, 2231236, 513249, 4818954, 2473901, + 5452461, -921271, 3189013, -962073, 2014340, 2830384, -457414, -4105989, 3777424, -496069, + 1550483, -979253, -68719, 472446, 4636417, 620623, -2615635, -944893, 558346, -1486059, + 3483219, 1432372, -614180, -1002875, -2068027, 1498944, -2027225, 1937030, 2059437, -1644973, + 1157494, 1017907, 506806, -238371, 3384434, 2046552, 2463164, -182536, 249108, 1045825, + -788127, -369367, -287763, -828929, -70867, 94489, 261993, -700080, -1479616, -1578401, + 272730, 760209, 36030480, -12966506, 4404489, -6101001, 4037269, -4045859, 5209796, -1889786, + 176094, -4041564, 7861938, -1219771, 7075959, 365072, 1155346, -4870493, 1642825, 7103876, + -2276333, -6128919, 826781, 173946, 2740189, -4443144, 3508988, -120259, 249108, -466004, + -4271345, -1320703, 639950, -5145371, 779537, 1971390, 1632088, -1509681, -461709, -279173, + 2314987, 624918, -461709, -1127429, 1793149, 1185411, 4535486, 1093069, -736587, 2469606, + 974958, -358630, 796716, 1851131, 1232656, 171799, 257698, -1586990, 272730, -244813, + 1853278, -296353, 704375, -309238, 629213, -139586, 581968, 12120398, -17433272, 10494753, + -7735236, 3298535, 1209033, -758062, -631360, 2113124, -4367982, -2761664, -2250563, -1737314, + -5985037, 3081639, -5557688, -186831, -4443144, 1679332, -3339337, -2611340, -1316408, 5117454, + 734439, 4982162, 2617783, 3427384, 4913443, 296353, -601295, -706522, 1398012, 3803194, + -296353, -229781, -2493229, 1954210, -289910, -1453846, 1408749, 1206886, 3940633, 1649268, + 1864016, -2731599, -1282048, -111669, -504659, 1964948, -5607080, 1264868, -1370095, -895501, + -1733019, -1919850, -657130, -1896228, 801011, -1309965, -216896, -2907693, -2905546, 55835, + -1030792, 2426657, -37005440, -8042327, 1754494, -6972880, -2849711, 356482, -167504, -5933498, + 1769527, -5907728, 227633, 4857608, -843961, -740882, 2686502, 1786706, 2733747, 216896, + 3296388, -1739462, 970663, 3824669, -208306, -176094, -2420214, 3644280, -2729452, -1462436, + 985695, 1513976, 2780991, 8506183, -2267743, -1309965, -3592740, 270583, -2634963, 706522, + -1026497, -3906273, -204011, 5147519, 1473174, -3360812, -1662152, 1754494, -2035815, -2529736, + 528281, -1157494, 339302, 605590, 3240553, 526134, 1610613, 912681, -2654290, -1309965, + 1726577, 1653562, -1047972, 1015760, -176094, -1174674, 68719, -45425720, 37499360, -13103945, + 11145440, -8207683, 6279242, -2381559, 4002910, -4355097, 2686502, 3126736, 4531191, -2946348, + 5484673, 2707977, 9326521, -1462436, 794569, -4937065, 1260573, -1735167, -3070902, -3826816, + -4385162, -4054449, 6055904, -279173, 7267085, 1876901, 1344325, -128849, 938450, -3210488, + 530428, -1176821, 1526861, 4288525, 788127, 1406602, 272730, 438087, -3249143, -1801739, + -107374, -261993, 457414, -1009317, -2989297, 57982, 3251290, -1054415, 974958, 925565, + -2645700, 1818919, 811749, 992137, -526134, 287763, -266288, -850404, 261993, 2884071, + 51540, 169651, 26416196, -4127464, -8596377, -3021510, -1855426, -1428077, -7578470, -4007205, + 2042257, 1236951, 2091649, 2624225, -5111011, 1988570, -1047972, 1765232, 8057359, -8250632, + 2778844, 2787434, 2153926, -2166811, -4797479, 3648575, 1047972, 2598455, 4945655, -40802, + 6835441, 551903, 3150359, 225486, 2119566, -1937030, 2553358, 1836099, 2435247, -1002875, + 775242, -240518, 3137474, 3891240, -5879810, 7818988, 618475, 2153926, 296353, 1327145, + 1477469, -1698660, 4668630, 2503966, 135291, 4277788, 1791001, -2415919, -242666, -1629940, + -1756642, -1331440, 738734, -375810, 223338, -143881, -4864051, 2443837, -1954210, 642098, + -691490, -319975, -1236951, -723702, 20933670, 1788854, 4230543, -5473936, -1071594, -13531294, + 3182571, -693637, -9206262, 7636452, -4282083, 225486, 5598490, 2486786, 4194036, -3294240, + 1831804, -4301410, 45097, -3687230, 1324997, -5579163, 7887708, 5665062, 4645007, 5398774, + 1178969, -1857573, -3457449, 1488206, 4318590, -42950, 2933463, -2199023, 571231, 2826089, + 2005750, 2538326, 156766, 874026, -354335, -1906966, 1812476, -1337882, 833224, 697932, + -1917703, 2518998, -3519726, 3064459, -1664300, 2149631, 3345780, -4174708, 388695, 418759, + -1705102, -3302830, 2269890, -5319317, -4086662, 2463164, 1041530, 1114544, 998580, 3210488, + 3128884, -1202591, 423054, 1848983, -777389, -79457, 33116346, -27489938, 9358734, -6824703, + 2445984, 8619999, 7015829, -4589173, 8407398, 4741644, 5091684, -3448859, 2385854, -1750199, + 9979357, 2785286, 2841121, 3871913, 4243428, 2688650, 2909840, -8158291, 1340030, -14759655, + -5111011, -1355062, -8435316, 2143189, 4571993, -3176128, -4561256, -5385889, -5153961, -2750927, + 3012920, 2366527, -7492571, -8693014, -635655, -4428112, 2409477, 1945620, 863288, -609885, + 4155381, -2151779, 244813, -562641, -1810329, -5581310, 4370129, 7370164, -957778, -912681, + 3496104, -5177583, 6335077, 1632088, -3152506, -109522, -2924873, -1241246, -710817, -2113124, + -526134, -1425929, -4299263, 1136019, 1599875, 1471026, 1586990, 502511, -51105816, 5196911, + -4458176, 1992865, 5330055, 3859028, 10559177, -4183298, -253403, 953483, 12616466, 4453881, + -9689446, -6289980, 5626407, 7509751, -1750199, -2686502, -98784, 3521873, 7752416, 7879118, + -6442, -13799730, -3917010, -1329292, -1565516, 8177618, -3603478, 4818954, 566936, -777389, + -7114614, 676457, 5849746, -9126806, -5310727, -2065879, -1516124, -4273493, -3558381, -8525510, + -1494649, -5748814, 152471, 1367947, 6317897, -4140349, -2697240, 635655, -530428, 1069447, + -5267778, 2203318, 2130304, 770947, 395137, -3955665, -3588445, -1949915, -1065152, -221191, + -6841883, 1507534, 2110977, -2894808, -6281390, 2645700, -221191, -3096672, -543313, -1389422, + -977105, 4127464, -30163556, 31842888, -4645007, 1937030, 7436736, 8942122, -6882685, 4264903, + 1627793, 5495411, 3685082, 7791071, 4352950, -5398774, -8942122, 1187559, 9272834, 18640158, + -4617090, -6423124, 4801774, 2972117, -3676492, -9283572, -1979980, -1917703, -8443906, 7239168, + 8592082, 75162, 1915555, -234076, 6730214, -5396627, -16649441, 6917045, -2098092, 5478231, + 2536178, 180389, -4211216, -6410239, 4286378, 5160403, 3685082, -790274, -461709, 5682242, + 3096672, 1720134, -3536906, 4778151, 3904125, -710817, -1378685, -2841121, 3178276, 66572, + -8291435, 6676527, 3889093, -1559073, 1795296, -1052267, 85899, -191126, 1857573, 493921, + 2312840, 3929895, 1979980, -633508, -2538326, -1612760, 5654325, 2220498, -1129576, -1801739, + -335007, 8939974, 322123, -6977175, -14229227, 3375844, -785979, -11759620, 3910568, -3932043, + 504659, -4490389, -3496104, 3629247, 8866960, 1039382, 11761768, 5295695, -5978595, -7868380, + 12876312, -5662915, -450972, 1093069, -12156905, -156766, 6378027, -7099581, -1900523, 8050916, + 481036, 4172561, 94489, 5276368, -934155, -3695819, -515396, 7026567, 9554155, -3212636, + 1917703, 1593433, 6365142, -3878356, -693637, 1170379, -1640678, 4071629, 1851131, 266288, + -2199023, 3238405, 3665755, 113817, 161061, 2680060, 4292820, -5261335, -36507, 1363652, + 2351495, -2735894, 2130304, 979253, 60130, 1417339, -1651415, 635655, 1702955, 3491809, + 4312147, -3575560, 384400, 67025112, -6560563, 1013612, 4078072, -6124624, -10511932, -6150393, + -2695092, -11935714, -12818330, 878321, -11366631, -5044439, -3358665, -2864743, 6813966, 7975755, + 2445984, 16797618, 2957085, -8450348, 14439680, -1544041, 10194105, -3377992, -1189706, -9663676, + 253403, 8398809, -399432, -4211216, -1752347, 788127, -2237678, -1870458, 3161096, -7707319, + 2980707, 1069447, -3732327, -7312182, -5025112, 5508296, 5379447, 6485401, -11184095, 6146098, + 1586990, -330712, 380105, 1032940, 1097364, 1372242, -1067299, 528281, 5723044, -1709397, + 2173254, 2684355, -2566243, 4797479, 5428839, 874026, -629213, 5080947, 3528316, 2783139, + 3322157, -4367982, -2136746, 947040, -616328, -689342, 143881, 2248416, 472446, -4232691, + -39352636, -66065188, 24013162, -1612760, 10030896, -11510512, 618475, -13344463, -1666447, -19271518, + 8426726, 8976482, -358630, -1449552, -167504, 1855426, -4552666, -16426102, 30419106, 2156074, + -3816079, 10456098, 1921998, -5437429, 14643691, 16237124, -6882685, 9597104, 1930588, -2020782, + -15109695, -8272107, 11940009, -6064494, 1750199, -781684, 8143258, -12348031, -13846975, 2003602, + 279173, -9380209, 5757404, 1185411, -5798206, 4183298, -6395207, -5366562, 2643552, 2493229, + 416612, -1713692, -2976412, 3876208, 6562710, 962073, 2115272, -1851131, -1791001, 5680094, + 751619, 1279900, -5703717, -1324997, -3783866, 3193308, 4810364, 47245, 3972845, -53687, + 5269925, -4202626, 2680060, -62277, -178241, -3972845, 27917, -3408057, -380105, -21206402, + 63977832, -28329604, 4853313, 4243428, 16097537, -1973538, 10305774, -10052371, 700080, -19331648, + -3631395, 152471, 7894150, 1350767, 8128226, -5506148, -11688753, 1574106, -17624398, -18614388, + 633508, -6083821, -249108, 1642825, 2772402, -4582730, -2995740, -6618545, -10000831, 4110284, + 5001490, -13114683, -5847598, -16499117, 373662, -7267085, 6060199, 6992207, -13509820, 2186138, + 11368778, 10159745, -5126044, 3721589, -3751654, -1891933, 3300682, -6137509, -1191853, 5772436, + 4619238, 3964255, 4962835, 2604898, -1292785, 3816079, 2643552, -2815351, 0, 7756711, + -663572, -3543348, -981400, 3208341, -3161096, -7898445, -418759, -2750927, 2179696, 1694365, + -996432, -3197603, -4608500, -5572720, 5815386, -1887638, -60130, -1247688, -236223, -695785, + -52632676, -16187732, 6111739, -8177618, 7700877, -3313567, 240518, -15393163, -18532784, -2368675, + -6380174, 7999377, 2394444, -2102387, -38482908, 19572166, 1539746, 17078938, 21187074, 14718853, + -20044612, -4756677, -1797444, -4870493, 4518306, 4971425, -188979, -7183333, 8332237, -13488345, + -7148973, 12311524, 781684, -5044439, 14351633, 500364, 15047418, -4964982, -2226941, 1956358, + 4818954, -10477573, -7720204, -1690070, 8542690, -2866891, 1513976, -3169686, 5757404, 7224135, + 1516124, 566936, -12219182, -1095217, 6204081, 6981470, -3723737, 7799661, 2652142, -1904818, + 2132451, -7524783, -2267743, -4969277, 5242008, 1000727, -1662152, 2042257, -13050258, 287763, + 2660732, 6524056, 2229088, -3251290, 6255620, 788127, -8171176, -3573413, -4121021, -962073, + 1896228, 33601676, 11207717, -20525648, -3661460, -8955007, 6891275, -12470438, 10075993, -2488934, + 11751031, 8085276, 14306536, -19685982, 23244364, -14577119, 13539884, -8072391, 8061654, 1331440, + 6826851, -12674448, -28709708, 10874857, 19765440, -7436736, 8042327, -10337986, 2269890, -6865505, + 20798380, -418759, -2173254, 4769561, -10260677, -7290707, -6053757, 8950712, -4295, -3605625, + -85899, -2035815, 14267881, 9401683, -5463199, 4425964, 5375152, -6195491, -3545496, -5604933, + -10969346, -1733019, 137439, -1709397, -4086662, -11276437, -539018, 16621523, 9064528, -7284265, + 9328669, -1251983, -244813, 7655779, 4045859, -8287140, 2954938, 1546188, 8224863, 9702331, + -7984344, 3337190, 5731634, 7346542, -749472, -476741, -2808909, -1647120, 4194036, -957778, + 7687992, -2007897, 71625024, -58344984, -9758166, 2946348, -1093069, -16110422, 5448166, 4245575, + 22898618, -7464653, 4531191, 18805514, 545461, 11315091, 37179384, -8057359, -2379412, -19318762, + -18036716, 839666, 6186901, -8147553, 3566970, 32751274, 18988050, 2725157, 1284195, 2669322, + 18172006, -15118285, -6637872, -837519, 9399536, -1451699, 2299955, -7670812, 2950643, -13625784, + -7956427, -10303627, 225486, -9229885, 2267743, -16436840, 7642895, -32839320, -8340827, 4496831, + 6128919, -1236951, -7503308, 2531883, 1037235, 3925600, -8912057, 3985730, -5188321, -5950677, + -14418205, -10812580, -3113851, -1821066, 785979, 2443837, 4720169, 867583, 2295660, -8665097, + 17180, -10574209, -1511829, -747324, 360777, 3491809, 10617159, -6614250, -2858301, -719407, + -5538361, -9764608, 2261300, -45105748, -31346818, -2171106, -6221260, 23890756, 938450, 4548371, + -29545080, 1698660, 4243428, 1864016, 2452426, 18083960, -22174916, 4885526, -4606353, -15238544, + -7303592, 14364518, -4808216, 11720966, -3786014, 6854768, 3796751, -2244121, -1593433, 7739531, + -856846, 32212, -18955838, 9603547, 8738111, 8235600, 9494025, -17035988, -17529910, 10438918, + 15526307, -18330920, 6972880, 2774549, 16125455, 9300752, 1707250, 10844792, -5471789, -11025181, + -1503239, -21365314, -15509127, -1649268, -616328, 3504693, -10065256, 3659312, -8035884, -27421218, + -7887708, -7337952, -26961658, 122407, -4252018, -3098819, 3283503, 8521215, -7803956, 5278515, + 3635690, -12195560, -7647190, -9360881, -1825361, -2733747, -64425, -3835406, 5392332, -5909875, + -1329292, -5016522, 9109626, -9822590, 6079526, -1516124, -1990717, 579821, 2710124, -2280628, + -28166396, 43095700, -22503482, -9545565, -13134010, 3496104, 3768834, 6438156, -2660732, 18876382, + 14218489, -13376676, -23875724, 9073118, -8927090, 22136262, 1864016, 9521942, 11615739, -8211978, + -8038032, 29384018, -16720308, -3914863, -8469676, 1161789, -3468186, 4024384, -4915590, -1803886, + -22533546, 20061792, -6919193, -1623498, 23596550, -15988016, -20319490, 2001455, -9204115, -13228499, + -55835, -6700149, 5366562, -29197188, -9730248, -7039452, -672162, 10514080, 163209, 2235531, + 5381594, -4861903, 4116726, 7090991, 6000070, 6738804, -3730179, -6043019, -5413807, 7642895, + -17744658, -3697967, -4161823, -4202626, 11647951, -7683697, -12412455, 12792560, 3861176, 7780334, + 14961519, -5282810, -4967130, 7580618, -8057359, -10020159, -9401683, 5804649, 4303557, -5349382, + 5166846, 1926293, 6090264, 1299228, -11218455, 7726646, -3723737, -58961312, 29693256, 31978180, + 16449725, 14944339, -10441065, 15187004, -25398290, 959925, -29862908, -3826816, -12964359, 14044543, + -14214194, -11796128, -3131031, -21891448, 6590628, -9953587, 9844065, -20549272, 34561600, -11224897, + 16396038, -14050986, 1513976, -14078903, -4406637, 7883413, 22177064, 24809878, -12264279, 169651, + -7194070, -12990129, -9848360, -35246648, -727997, 5985037, -33105608, 13022341, 6667937, 9163313, + 16015933, 10084583, 5448166, -11102490, -3534758, -12390981, -6206228, 6715182, -26454852, 10529112, + 5315022, 1750199, -12442520, -7359427, 6936372, 21464100, 9122511, 5583458, -8336532, 8974334, + 1350767, -10127533, 2847563, -7316477, -11486890, -6006512, -2632815, -10471130, 12060268, 6805376, + 9835475, 5433134, -8643622, 2907693, 15043123, -2929168, 13980119, 7385197, 5233418, 9371619, + -4784594, -5589900, 3715147, 2448131, 49147312, -33496450, -13945759, -4108136, 8590, 24017458, + -4355097, 7977902, -13587129, 7554848, -8390219, -38530152, -26456998, -9747428, 14014478, -1492501, + -21245056, -19883552, -42069204, -13458280, 5534066, 5871221, 2080912, -4185446, -2362232, -12925704, + 3549791, 5654325, 7290707, 1803886, -1812476, -4898410, -20016696, -4975720, -4464619, 10286447, + -1997160, -15908559, -6204081, 4808216, -17944374, 3251290, -18511310, 10520522, 14654428, -13675176, + -26839250, -5059472, -8375186, -12186970, 1391569, 2587718, 2746632, 6762426, 429497, -10432476, + 16982300, 26383984, -12573517, 11025181, 4475356, 12575664, -18923626, 7310035, 2488934, 6919193, + -27260158, 21749714, 2692945, 2568391, -3257733, -15483357, 4127464, 2106682, 3895535, 4896263, + -16973710, -8875550, 3420942, 8123931, -4252018, 105227, 6388764, 2626373, -3017215, -8050916, + 5963562, 79590040, -44493712, 4058744, -4483946, -9496173, -33202244, -1808181, -1851131, 26989574, + 12335146, 54541788, -21713208, 2076617, 5954972, 13045963, -5596343, -2544768, 22106196, -13913547, + 31823560, 19273666, -44266080, 42150808, 14856292, -15255724, -11008001, -16640851, -8673686, 2989297, + 1924145, -11978664, 28016072, 3547643, -13445395, -11942157, 2720862, -14774687, -26025354, 195421, + 15513422, 6118181, 18869938, -8834748, 5862631, 20160576, 29085518, 6792491, -30122754, 9807558, + -9702331, -16681653, 4378719, 12650826, 7316477, -3768834, -27335320, -24026048, 33711200, -4554813, + 26053272, 2877628, -10262824, 12659416, -22591528, -10125385, 10900627, -3042984, 22417582, -18146236, + -35682588, -10157598, -1739462, -11106785, -8544837, 22056804, -7417409, 3929895, -20366734, -20063940, + 9758166, 4949950, 8224863, -8839043, 8398809, 682900, -4733054, -1206886, -89620936, -58177480, + 21592948, -30148522, 9852655, -14980846, -54159536, -40035536, 72703056, -33217278, 32923072, 18663780, + -18773302, 17057462, -10582799, 22995254, 25479894, -1477469, -7020124, 43621836, -13962939, -48964776, + 968515, -20420422, 5179731, 4797479, 29577292, 15736760, 6285685, 14544907, -13067438, 143881, + 32373316, 20731808, -5641440, 8433168, -28275918, -43836584, -32244466, -22531398, -6191196, -6126771, + 8308614, -3974992, -12081743, 28310276, 7582765, -21064668, -19651622, -5592048, 8362302, -21227876, + 8699456, 26414048, -360777, 9964324, -17897128, 14134737, 10376641, 3345780, 10580652, -15790447, + -24404004, -34497176, 17547088, 13731010, 1363652, 13625784, 2731599, -15779710, -3171833, 1305670, + -27502824, -2426657, -42820824, -23547158, 7355132, -10894185, 8420283, 1099512, -5512591, -5787469, + -3869766, -7928510, 7799661, 292058, -1097364, -107176616, 36754184, -8370892, -6865505, 19344532, + 4887673, 10857677, 46952584, 28071906, 35508644, 17918604, 48423608, -8327942, -46787228, 7069516, + -5085242, -19995220, -41420664, -18023830, 36590972, 8381629, -2312840, 7718056, -2564096, 633508, + 30878668, 4011500, 11592117, -4526896, 7806103, 30659624, -8231305, -20446192, 15747498, -36395552, + -36442796, -23480586, -4410932, 1101659, 15425375, 35888748, 788127, -12275017, -35450660, -58405112, + -20336670, -8461086, -3246995, -324270, 21837762, -26738318, 48528836, 25142738, -4325032, 13945759, + -18743238, 3511136, 670015, 22376780, 43411380, 29137058, -25097642, -10630044, 7509751, -4060892, + -5104569, 2252710, -12799003, -41766408, -2845416, -7687992, -2671470, 6567005, -15940771, -5480379, + -28174986, -3023657, 4357245, 29873646, 15017353, 4194036, 5190468, 7544110, 1318555, -25284472, + 5600638, -5896990, 7148973, -3094524, -2920578, -13855564, 43364136, 43898860, 14721000, 29278792, + 21045340, 46080704, -41047004, 47921096, -59105192, -10604274, 54741504, 75172664, 15479062, -5057324, + 27206470, -23448374, -27290222, 54314156, 8549132, -8665097, 13039521, 43619688, -11785390, 26658862, + -9064528, -11239929, -5512591, 19557134, -51065012, -6442451, 24438364, -11512660, 2342905, -18217104, + 10290742, 40007620, -37372656, 11761768, -11250667, 12932147, -19666656, 26813480, 2050847, 9554155, + 10711648, -45210972, 21741124, -62861140, -13005161, 35313220, 3577708, -22576496, 38989712, -13737453, + -23927262, 28284508, -11972221, -8319352, -4756677, 17018808, -2849711, 4365835, -34482144, 12264279, + 2896956, 66752380, -50594716, -22089016, 5695127, -13108240, 14811195, 18713172, -24496346, 46645492, + 17212082, -362925, 7380902, 15530602, -7900593, -25524990, 9704479, -13234942, 3865471, -5304285, + 11875585, -16226386, 4574140, 27917, -8875550, 10636487, -4105989, 89526448, -56173876, 2055142, + -9105331, -15071040, 1705102, -20581484, -8800388, -66406636, -55649892, -55364276, 18356690, -11611444, + 18133352, -12700218, -40355512, 64046552, 44502304, -29845728, -25196426, -35218732, -7548405, 13675176, + 20952998, 25898652, -2040110, 20040318, -5991480, -25396142, -31172872, 19314468, -14325863, 58512488, + 36436356, 53972708, 7352984, 19617264, 52918292, 36846524, -11931419, 9706626, -2639258, 665720, + 5357972, -24775518, -18126910, 9562745, -31286690, -31913754, 30618822, 35188668, -38860864, -1236951, + 68184752, 47749300, -2770254, -22604412, -5315022, 14239964, 12539157, -9212705, -25853556, 30674656, + -2405182, 7567733, 21569326, 27910844, -29506426, 12594992, -5149666, 11660836, -45679124, 8471823, + 40510132, -40617504, -33846488, -17239998, 17761838, 32388348, -18642306, 17879948, -16134045, -1468879, + 508954, 6863358, 11652246, -5493263, -2937758, 7492571, 6335077, 242666, -1376537, 5471789, + 72606424, 27940910, -9715216, -2362232, 22763326, -27206470, -35373352, 30307436, -42258184, -54715736, + 14523432, -29368986, -37845104, -19752554, 36135708, 88650272, 36689760, -48262548, 90806344, 10531260, + -14235669, 16357383, -53027812, 13481902, 7325067, -38016904, 32877974, -10228465, 6489696, -27373974, + 15375983, -25016038, 45958296, -54432268, -20044612, -18807662, 25930866, 29920890, 26667452, -28930900, + 8461086, -30245160, -8677981, 16116865, 38416336, 17731772, -17643726, 37415608, 19088982, 30182882, + 2029372, 35184372, -15382425, 19454054, -53560388, 60185376, -5216238, 8381629, -15949361, -31376884, + 1617055, 20104742, 48088600, 14139032, -57490284, 24524264, -23248658, 47373488, 4114579, -18081812, + 9199820, -15635828, 9899900, -33481418, 13415330, 3197603, 2954938, 5366562, -6517613, 3459596, + -8978629, -14029511, 18801220, 11766063, 10861972, -24820616, 8237748, -13460428, 11647951, 2615635, + -1477469, 5815386, 2845416, -148921552, 6358699, 24691766, 58244052, 19007378, -91684664, 121678568, + 44498008, -56008520, 19896436, 121023592, 27064736, -29639570, -3841848, -73652248, 37572372, 3302830, + -18949396, 10389526, 24985972, -47826608, 25303800, -59882580, 6146098, -54593328, -49067852, -21006686, + 22840636, 34806416, -26897232, 30419106, -53203908, -7801808, 59431608, 5332202, -21642340, -7174743, + 11493332, -13973676, -39492224, -44079248, -5959267, -20325932, 42900280, -60591252, 63872608, 20222854, + 8070244, -21599390, -7148973, 29448444, -24099062, 39786428, 9805410, 35948876, -13428215, -21120502, + -63359356, 21453362, -6483253, -65373696, 19475530, -4582730, 39603892, 63739464, -27090506, 14340896, + 31437014, 33429878, 6805376, -19698868, -3895535, -79136920, -3938485, 7005092, 19417548, -618475, + 52982716, 11276437, 26310970, -30041148, -21410412, 39483636, -4133906, -8302172, 23976654, -5813238, + -6805376, -685047, -1378685, 2347200, -4352950, 21900038, 184451664, 84091168, 17529910, 29991756, + -37752764, -25338160, -8894877, 69720208, -49340584, 7937100, -41042708, -113359216, -54320600, 26029650, + -28915868, 18747532, -44869524, -2252710, -48249664, 41467908, -48850960, -35165044, -105149392, -19606526, + -16471200, -27633820, 54863912, -17798344, -43840880, 14302241, 42341936, 15700253, 14413910, -6298570, + -8821863, -27801324, 21620866, -35794256, -9607842, -22241488, -62672164, 9562745, -43471512, 17583596, + 5667210, -12773233, -1359357, -45704896, -2551211, -10400263, 66911296, -19245748, -1535451, 27200028, + -36621040, -16275779, 67901288, -39603892, 25982404, 1778117, 60393684, 85755464, -5010080, 11085311, + 8589935, 29673930, 15539192, -65420940, 6027987, 16544214, 23109072, -27998892, -43548820, 4578435, + 12674448, -11390253, -16548509, -70177616, -34617436, -40364104, 2838974, 8864812, -13224204, -19288698, + -21904334, -5379447, -10992969, -12281459, 14626511, -6889128, 7086696, -25252260, 1808181, -9756018, + -17493402, 4101694, 10284299, -13623636, }, { -92342, - -25770, -98784, 6442, -64425, 146029, 96637, -463856, 6442, -302795, -360777, - 96637, 302795, 294205, 107374, -670015, -410169, 133144, -210453, 34360, 135291, - 173946, 281320, -208306, -227633, -423054, -244813, -2147, -962073, -21475, -96637, - -281320, 197569, -556198, -485331, -985695, -137439, -871878, -268435, -23622, 691490, - 188979, 528281, -274878, 560493, -152471, 109522, 674310, 4179003, -3274913, 2037962, - -2589865, 1318555, -1262720, -1247688, -751619, -710817, 753767, 865436, -3206193, -178241, - 470299, -322123, -539018, -1879048, -685047, 1333587, 2025077, 1011465, 3193308, 646393, - -569083, 652835, 551903, -330712, 1043677, 2267743, -871878, -25770, 968515, -32212, - -221191, -1629940, -62277, 822486, 661425, 130997, 47245, -543313, 575526, -62277, - 70867, 30065, -554051, 15154792, -1002875, 1305670, -974958, 962073, -1168231, 227633, - -298500, -283468, 854699, -816044, -2770254, 779537, 268435, 837519, 1846836, 981400, - 652835, -264141, -1612760, -562641, 719407, -231928, -274878, 1541893, -1990717, -639950, - -49392, -352187, -504659, 734439, 805306, 1002875, 270583, 347892, -433792, 1395864, - -79457, 1067299, 745177, -266288, -158914, 500364, -4295, -315680, -161061, 2147, - 11162620, -10640781, 1685775, -2866891, 1556926, -182536, 1127429, -1009317, 2018635, -841814, - 1228361, -2534031, 113817, -1464584, 435939, -223338, -335007, -674310, -1857573, -180389, - 236223, -912681, 1548336, -682900, -1099512, -1398012, 856846, -891206, 2196876, -219043, - 21475, 650688, 23622, 55835, -955630, -809601, -210453, 229781, -356482, -932008, - 850404, 603443, 1513976, -341450, 508954, -201863, 296353, -26124138, 3103114, -1928440, - 90194, -268435, -2160369, 2407329, -549756, 244813, 1037235, 337155, 2785286, -103079, - -1086627, 3330747, 1367947, 3008625, -27917, -3912715, -2327872, -1870458, 1662152, -2027225, - 206158, -717260, -661425, 270583, 646393, -566936, -1202591, -891206, 833224, 932008, - 1756642, -107374, -204011, -79457, 1101659, -1166084, 345745, 500364, 826781, -944893, - 1054415, -1151051, -171799, 423054, -33002528, 12010876, -4791036, 5577015, -3809636, 2579128, - -4133906, 2409477, -3060164, 1234803, 2338610, 156766, 919123, 2151779, -1322850, 1559073, - -1707250, -1241246, -3811784, 3549791, -2224793, 2394444, 210453, 34360, -3655017, -85899, - 747324, -474594, -88047, -88047, 1574106, -178241, -1047972, 1217623, 388695, -418759, - 109522, 105227, 165356, 725850, -964220, 2617783, -176094, -1550483, -133144, -818191, - -60130, 1625645, 15025943, -3231963, 5699422, -2617783, 1956358, -2123861, 7103876, -1370095, - 3790309, -438087, -279173, 959925, -4295, -4885526, 1108102, -442382, -2203318, -534723, - 81604, -6146098, -169651, 504659, 1941325, -47245, -1168231, -238371, 2104534, 386547, - -1043677, -2068027, 3161096, -1960653, -77309, -2922725, -322123, 8590, 508954, -710817, - 775242, 1264868, -1236951, 1002875, -47245, 801011, -45097, 1449552, -730144, -438087, - 1305670, 1823214, 39575976, -11632919, 1653562, -2033667, 2536178, -45097, -100932, -5405217, - 2321430, -2405182, 1565516, 496069, 770947, 1644973, 2613488, 341450, 867583, -4561256, - 1584843, 1582696, -2950643, -635655, 2976412, 1889786, 1879048, 4234838, 2353642, 551903, - 1084479, -1692217, 1312113, -463856, 2424509, 3146064, -511101, 1007170, 1971390, -934155, - 646393, -2888366, -809601, 2725157, -6442, -2055142, -727997, 762357, 2029372, -234076, - 1127429, -103079, -1730872, 2862596, -21159156, 8972187, -6139656, 4084514, -3635690, 4812511, - -3062312, 244813, -2600603, -3204046, -4507568, 362925, -2662880, 1355062, 1556926, 3478924, - -5574868, 3506841, -1307818, 4851166, 1088774, -236223, 412317, 418759, -1103807, -914828, - 760209, -2239826, 1533303, 2765959, -3663607, -764504, -193274, 1533303, -1382980, 3936338, - -4028679, 835371, 17180, 294205, -1720134, 326418, -1071594, 1078037, 180389, 246961, - -1219771, -167504, -2551211, -822486, -128849, 616328, 216896, -889058, -3238405, -64425, - -646393, -34144992, 10870562, -6964290, -431644, -1391569, 2173254, -5869073, 453119, 1906966, - 1586990, -2031520, 1206886, -2602750, -4288525, -1657857, 577673, -2559801, 9101036, 274878, - -2480344, -798864, -2995740, -1395864, 2804614, 1683627, 3629247, -302795, 1638530, -2003602, - 871878, -1812476, -586263, -1052267, 642098, 1142461, -534723, -1720134, 468151, 676457, - 2527588, -414464, -874026, -3221226, -2604898, -1241246, -472446, 627065, 481036, -1309965, - -504659, 257698, 1232656, 635655, 251256, -564788, 1251983, -386547, 2108829, -32867238, - 15474767, -7243463, 6925635, -3560528, 4118874, 2055142, 1282048, -3710852, 493921, -1876901, - 597000, -4870493, 1881196, 3098819, 1032940, -5186173, -2546916, -2594160, -2692945, -1760937, - 3779571, 925565, 2673617, 2138894, -882616, -184684, -3899830, 5113159, -1406602, -487479, - 367220, -1063004, -1518271, -1816771, -373662, -4116726, 1275605, -2173254, 1702955, 1471026, - 2424509, -618475, 311385, -2665027, 1067299, 2007897, 523986, -416612, 453119, 1576253, - 2368675, 1030792, 2207613, 122407, 386547, -103079, -435939, 10647224, 13179107, -6006512, - 3502546, -1874753, 1292785, -1458141, 725850, 1127429, 6438156, -2327872, 2634963, 6043019, - -1690070, -285615, -1058710, 1436667, 3109556, 3182571, 4155381, 1093069, 3532611, -949188, - -2136746, -7168301, 1471026, -1123134, -3607773, -2594160, -150324, -717260, 2272038, -371515, - -4166118, -4312147, 1123134, -3753802, 472446, 2214056, -3360812, -2276333, -1443109, 1612760, - 1479616, -154619, -463856, 2450279, 508954, -1009317, 979253, -2201171, 249108, -1181116, - -1644973, -1142461, 1677185, -914828, 1260573, -1007170, -2102387, 517544, 1133871, -781684, - 642098, -970663, 38019052, -13247827, 7168301, -4973572, 7127498, -5042292, 4367982, -1640678, - 4436701, 1069447, 3120294, -3648575, 3725884, -1288490, -3107409, -332860, -3337190, -5327907, - -2813204, -590558, 2690797, -3655017, -4876936, -5980742, -1078037, -536871, 4767414, 2600603, - 3062312, -2110977, 2476049, -1909113, -1866163, -1039382, 3146064, 2703682, 846109, -36507, - -115964, 70867, -884763, -515396, 2177549, 408022, 5362267, -2074469, -646393, -4488241, - 2927020, -1185411, -695785, -1071594, -277025, 242666, -743029, 796716, -1196148, -2147, - -1696512, -768799, 380105, 1728724, -908386, -135291, -609885, 10660109, -16344498, 9545565, - -6128919, 7410966, -107374, 4591320, 1279900, -7176891, -3416647, -2435247, 850404, 1771674, - 977105, 8055211, -4567698, 6433861, 1099512, 796716, -4440996, -979253, 5555540, -388695, - -4765266, 5373004, 4093104, 891206, -2248416, -1775969, -496069, -397284, 2473901, -1245541, - 1088774, -3042984, -695785, 1722282, -4383014, 1647120, -1715839, 1539746, -1288490, -405874, - 5113159, 2199023, 2901251, -244813, 1185411, 1864016, -412317, -1436667, -2293513, 755914, - 1011465, 1806034, 2183991, 498216, -523986, -2291365, -1058710, -2319282, -2078764, 246961, - 42950, -1745904, -40443560, -8134668, -1043677, -6713034, -2757369, 6103149, 2630668, -1720134, - -1524713, -4814659, -3182571, -3897683, -4376572, -3624953, -2291365, -3274913, -5602785, -4784594, - 1909113, -4859756, 1683627, -6554120, 266288, -2682207, -2130304, 5802501, -536871, -2744484, - 3768834, -4116726, 3981435, 1232656, 4198331, 2879776, -25770, -1928440, 4415227, -2147, - -609885, 4026532, -1591285, -5340792, -6043019, -1509681, 2089502, 1355062, -1752347, -120259, - -1617055, 448824, 152471, 373662, 3891240, 1563368, -2695092, -981400, 566936, 2486786, - 631360, 3682935, 1063004, -242666, -1784559, -1632088, 96637, -47620448, 41461468, -16883516, - 11512660, -10819023, 2658585, -5312875, 7022272, 1329292, 826781, -3393024, 4763119, 966368, - -8546985, 867583, 1275605, -4307852, -6584185, 6515466, 8100309, -2615635, -2121714, 1344325, - 3740917, -2194728, 7380902, -242666, 1881196, -5360119, -1887638, -3199751, 4816806, -1082332, - 1060857, 1024350, -2740189, 4638565, 4481799, 1202591, 1550483, 5437429, -3309272, -904091, - -678605, -3987877, 869731, -2611340, 987843, -148176, 373662, 4432406, -150324, -1041530, - 1009317, 206158, 2937758, -2738042, 1045825, -208306, 5738077, -1737314, -204011, -2282775, - -459562, -1479616, 31731218, -3893388, -6700149, -1638530, 4213363, 2145336, 1870458, -294205, - -4479651, 1035087, 2624225, 2982855, -2078764, -1960653, 6354404, 2132451, -5074504, 1017907, - 8239895, -10426033, 6869800, 781684, 8800388, -644245, 448824, 1683627, 1733019, 4606353, - -3493956, -1355062, 1690070, 3294240, -1374390, -141734, 380105, 732292, 2055142, -4303557, - -148176, 2433099, 657130, -2388002, -775242, 5441724, 3992172, 1881196, -2143189, -1576253, - 1531156, -743029, -1395864, 929860, -1733019, -2673617, 5596343, 2179696, 3582003, 539018, - 2692945, 2192581, 2390149, 242666, 2905546, 1445257, 2052994, -1733019, 354335, 762357, - -2546916, 878321, -1249836, -268435, 15098958, 4385162, 3642132, -2214056, -1481764, -4103841, - -2931315, 745177, -1608465, -2020782, -5877663, 5003637, 3466039, -3663607, 6259915, -5896990, - -1782411, 2624225, -4365835, 2534031, 4065187, 6206228, 5482526, 5220533, 2712272, -11046656, - 4295, -2321430, 2214056, -1069447, 4322885, 2924873, -1421634, -2690797, 2838974, -1977833, - 7292855, -4295, 2413772, 7383049, 7078106, -5345087, 450972, -3526168, -6352257, -691490, - 1198296, -816044, -1299228, -682900, 554051, -2980707, 399432, -3476776, -968515, -414464, - 929860, 21475, -2025077, -2166811, 4434554, -1567663, 685047, 1975685, 2454574, -1357210, - -1374390, -652835, -3493956, -2388002, 384400, 758062, 35680440, -25104084, 9139690, -9536975, - -734439, -6663642, 6030134, 5989332, 1932735, 1217623, 5665062, 15571404, -13683766, -1902671, - -3556233, -5527623, 12081743, 9096741, -1861868, -8278550, 3356517, -6764574, -5405217, -9476845, - 1213328, -9704479, -3204046, 5714454, 826781, -2978560, -8005819, 12885, -1930588, 4864051, - 4475356, 2063732, -3635690, 543313, -227633, 1964948, 3863323, -2454574, -1236951, -4344360, - 6582038, -820339, 972810, 5864778, -1211181, -541166, 2347200, -2954938, -304943, 2540473, - -4361540, 985695, -809601, -388695, -4548371, 2203318, -974958, 384400, 1118839, -1690070, - 2982855, -2355790, -609885, -4876936, 438087, -685047, 2022930, 2128156, -55548960, 7703024, - 792421, 3917010, -4254165, -6919193, -15032, 4666482, 7406671, -433792, 11254962, 6279242, - -7582765, -6762426, 5272073, 966368, -5394479, -10039486, -11519102, -7376607, -8493298, -9509058, - 1750199, 3062312, 2568391, -7028714, -6755984, 1065152, -1754494, -1127429, -874026, -5602785, - 4801774, -9665824, -3592740, -1445257, -317828, 3135326, 1129576, -635655, 4516158, -1329292, - 4503273, 2602750, -3397319, 586263, 7295002, -2860448, -2858301, 225486, 4290673, 1136019, - -2972117, -3837553, 3594888, 225486, -5044439, 7026567, 7926362, 989990, -2201171, 977105, - -96637, 1709397, 3532611, -304943, 4670777, 2976412, 2695092, 2355790, 1251983, 1969243, - -2259153, -135291, -34048352, 29072634, -9749576, 6199786, -180389, 4829691, -11802570, 4544076, - -8053064, 25770, -5458904, 10907069, 9268539, 3500398, 730144, -8985072, -5980742, -936303, - -3635690, 10355166, -8497593, -345745, -4224101, 15171972, -4855461, 1352915, -455267, 2609193, - 1163936, 2602750, 1885491, -2514703, 1340030, -614180, 5272073, 816044, 10020159, 5211943, - -3270618, -682900, -1279900, 184684, -3865471, -2705830, -989990, 1795296, 12221329, 1114544, - 790274, -3362960, 4967130, -1853278, -2647847, 1617055, -2574833, 1511829, -3189013, -6854768, - 3371549, 3038689, -985695, 7166153, 1494649, 1702955, 2544768, -1919850, 818191, 2325725, - -5961415, -2783139, -489626, -2699387, 2697240, 4234838, -1556926, 7269232, 4829691, -163209, - -1932735, -1462436, -504659, 22215718, -487479, 5016522, -15079630, -2499671, 1917703, -12167642, - 983548, 16879222, -2929168, 1221918, -7599945, -10417443, 2662880, -9517648, 14877767, -10314364, - 3577708, 3524021, 7971460, 6199786, -1614908, -9201967, -1058710, -841814, 4724464, -6448894, - -1241246, -1887638, -3062312, -2181844, 4518306, 2778844, 12066711, 4099546, -4479651, 5007932, - -3272765, -3451006, 3717294, 10327249, -1475321, -5323612, -4980015, 5491116, -126702, -7471096, - -6878390, 3532611, 3292093, -3098819, -5684389, -9446781, 2619930, 3521873, 2375117, -5334350, - 4015795, 2467459, 1677185, -1894081, -573378, 2924873, -7088844, -925565, 3131031, 3682935, - -670015, 1795296, 154619, 75520560, -4870493, 2987150, 6865505, -6674379, -2877628, -2323577, - -17862768, 11903502, -1992865, -11100343, 2327872, -5723044, 6433861, 5078799, 8192650, -2997887, - 11141145, 9536975, 6077379, -9938554, 7524783, -13612899, -8055211, -9283572, 3588445, -7146826, - -1342177, -2476049, -9090298, -4964982, 7563438, -5731634, -4348655, -8682276, 2740189, 2723009, - 6397354, -3706557, 11053098, 2716567, 12607876, -1513976, 2244121, 2493229, -7054484, 4930623, - 12910672, -4526896, -418759, 3466039, -3826816, -5291400, 3021510, -5272073, -2866891, -6874095, - -4522601, 4992900, 4453881, 2976412, 4786741, 6025839, 5744519, 8665097, 1372242, -2643552, - 4471061, 3015067, -90194, -923418, 324270, -3320010, -736587, 633508, 760209, -238371, - -33247342, -65399468, 24535000, 433792, 1544041, -6358699, -6807523, -1382980, 2456721, -4056597, - 17334488, -7741679, -14774687, 1067299, 1144609, -1799591, -5080947, 11847667, 2314987, -5080947, - 5632850, -10206990, 13338021, -7198365, -3635690, -8802535, 14867029, -6191196, -1930588, -8727374, - -3914863, 8111046, -3524021, 8768176, -10954314, -12889197, 1267015, 2400887, 2454574, -212601, - -6551973, 1378685, 3678640, 1857573, 7000797, 85899, 10866267, 1602023, 10198400, 13209172, - 2927020, -871878, 2671470, -7219840, -1677185, -12139725, -10711648, 3315715, 3448859, 2252710, - -554051, -3388729, -1625645, -2884071, -1462436, -2879776, 268435, -171799, 2497524, -650688, - -1221918, -4088809, -113817, -4767414, -377957, -6360847, -639950, -2308545, -502511, -21912924, - 64132452, -29149944, 13423920, -6152541, 20405390, -3169686, -8939974, -9345849, 5398774, -2761664, - -1155346, 496069, 4041564, -21509196, -10458245, -5527623, 8626442, 7226283, 12629351, 2327872, - -1846836, -1960653, 15144055, -19561428, 11420318, -9397388, -1891933, -9902047, 15648713, 6279242, - -10048076, 1372242, -4359392, 1705102, 6687264, -28093382, -11660836, 2340757, 9968619, -5759551, - 2173254, 7239168, -2834679, -3152506, -929860, 10907069, 4395899, 1887638, 1320703, 4219806, - 12889197, -7735236, 5954972, -17927194, -2989297, 4065187, 8772471, 1642825, 1372242, 438087, - 4810364, -3493956, 663572, -1247688, -4101694, -3672197, 6841883, 6543383, -2332167, -3382287, - -11029476, -4715874, -2360085, -1992865, 8287140, -3100967, -2901251, -5461051, -4784594, -395137, - -57488136, -12393128, 5639292, -13623636, 3448859, 2521146, 8439611, -25770, 16076063, 10503343, - 5819681, -4387309, -7870528, -390842, 17005924, -14512694, -5538361, -11242077, -236223, -30760556, - -24257976, 1550483, 15075335, 20755430, 4799626, -7522635, 7084549, -6676527, -4460324, -4537633, - 2063732, 5454609, 1337882, 8096014, -6111739, -10922102, 9075266, 5989332, 19048180, -2304250, - 3111704, -2701535, 15365246, -15945066, -8010114, -3747359, -12113955, 7750269, -4990752, 6515466, - -12977244, 12987981, 12579959, 11605002, -4700842, 10292889, 564788, 3618510, 6023692, 4327180, - -5418101, 996432, -1677185, -249108, 11819750, 4462471, -5177583, 9614284, -1537598, -8216273, - -2727304, -539018, -11628624, -405874, 4872641, 6401649, 1024350, -176094, -4797479, 1831804, - 2832531, 41624676, 27041114, -8609262, 12225624, -27790586, 19402514, 7067369, 14585709, -5100274, - -3770981, -15247134, -7866233, -26010322, -4569845, -20725364, -6352257, -12801150, -13106093, -17622250, - 6878390, -24049670, 3137474, 10271414, -4694400, 3176128, -10406706, -227633, -3309272, -3511136, - -14151917, -1990717, 1529008, -1058710, -2259153, -7462506, -6491843, 4234838, 4520453, 5976447, - 30356828, -12384538, -801011, 12223477, -3051574, -5179731, -11781095, 3496104, 10241350, 16986596, - 5667210, 14143327, -14033806, -21058224, 1898376, 13612899, 7582765, -11422466, 13035226, -10024454, - 6227703, 2499671, 11839077, 6624987, 4279935, 7960722, -8169028, 5031554, 4194036, 2321430, - 11626476, 2572686, 9373766, -1539746, -3897683, 1380832, 2147484, 1844689, 11278584, -1947768, - -6517613, -738734, 84217864, -54445152, -2916283, 6354404, 1737314, 6670084, 11577084, -2289218, - -1808181, 6502581, -9676561, -9259949, -1477469, 7492571, 30346092, 1301375, 10520522, -9730248, - 665720, -29927332, 18564996, -18092550, -25750476, 6027987, 7305740, -9554155, 8677981, 3637837, - 20068234, 22164178, -3616363, -8340827, -6242735, -33077690, -17972290, 25960930, 8626442, 9562745, - -14858439, -15305116, 4610648, -2957085, -13112535, 11510512, -2433099, -8235600, -9451076, 6524056, - -8456791, -4552666, 30492120, -18530636, 5708012, -6644315, 7127498, -8338679, -3347927, -22686018, - 3901978, -8398809, -5577015, 18137646, 4456029, 5059472, 11050951, 13153337, 3996467, 9105331, - -3977140, -1078037, -14828375, 6813966, 12382391, -2813204, 884763, -1367947, -3021510, -3839701, - 1458141, -3949223, -1713692, -52104396, -25512106, 9998684, -2959233, 19288698, -2403034, -4707284, - -14847702, -16666621, 9255655, -17435420, -5849746, -9764608, -1698660, -10320806, -6987912, -8233453, - -4093104, -10277857, -19765440, 11798275, -39483636, -133144, 35886600, 8972187, 92342, -9446781, - 2804614, -35699768, 15135465, 9330816, 2761664, 13292924, 19608674, -14959371, -7752416, -15577846, - 2609193, 854699, -9133248, -10453950, -11639361, -6777459, -274878, 8196945, 923418, 6775311, - 3942780, 1101659, 24973088, 6240588, -3706557, 19887846, -9300752, -21945136, -6573448, -2302103, - -2931315, -1123134, -7432441, -1408749, -9332964, -1984275, -9496173, 1318555, 5527623, -10346576, - -2768107, -5551245, 715112, -10492605, -13477607, -5609228, 5836861, 10075993, 4196183, -2869038, - -100932, 4084514, -1505386, -1911261, -4544076, 2564096, 5405217, 1421634, 45097, -5695127, - -32089848, 43628276, -21288006, -10473278, -35358320, 27876486, -9631464, 16492674, 1157494, 1159641, - -10634339, 21891448, -5291400, 7243463, 5519033, -9781788, -3255585, -3051574, -18691698, 3925600, - 3536906, -14375256, -24298778, -14985141, -22348862, -5278515, 12298639, 6571300, -13112535, -12964359, - 19754702, 13722421, -16879222, 15824807, -8360154, 14027363, -21427592, -16808354, -16312286, 6049462, - -14439680, 9423158, -6468221, 4116726, -3912715, -1846836, 3474629, 15921444, -34218004, -4099546, - 6927782, -2886218, -10350871, -24500640, -2130304, 22975928, 8590, 19947976, 14577119, 4473209, - -2742337, 15300821, -14847702, -11952894, 9650792, -3317862, -9201967, 6635725, 1909113, -6968585, - -10591389, 18303004, -16737488, -8849780, -9987946, 10520522, 562641, -6929930, -4039417, 5628555, - -15461882, 341450, 4191888, 3466039, 399432, -4975720, -7509751, -73916384, 28112708, 12148315, - -18279380, 9631464, -20729660, 19447612, 16844862, 14385993, -37666864, 23444078, 40763536, -5186173, - 14134737, 1022202, -12146168, -16056735, 44865228, -221191, -3502546, -24081882, -47908212, -25812754, - 2871186, -21030308, 18249316, -31318902, -10106058, -18352396, 5546951, -6970732, -23212150, 4297115, - -5037997, 15850577, -4810364, -18247168, -6713034, -56549688, 10604274, -1455994, 26703960, -15792595, - -17422534, 24818468, 5568425, 4320737, -9410273, -14948634, 5836861, 11441793, 8506183, -3730179, - 9012989, 4939213, 1410897, -4726612, -4960687, -18515604, 1881196, -7217693, -10531260, 10086731, - 5948530, 27908698, 6199786, -18431852, -18337362, 4337917, -11738146, -8714489, 3513283, -8974334, - -15032, -4030827, -5046587, 5473936, -6964290, 2901251, -513249, -1294933, -2336462, -3893388, - -8632884, -10791105, -3002182, -9279277, 61132416, -25333864, -485331, 2583423, 25037512, -4176856, - -5922760, 16928614, 29654602, -21444772, -24676734, 17716740, -4432406, 15307263, 22486302, 18650896, - 15895674, 12644384, 14963666, 59390808, -6002217, 3627100, 10808285, 32407676, -7786776, -12970801, - 11879880, -1692217, -11753178, -14156212, -12605729, -470299, -16112570, 22181358, 33681132, -2574833, - -9524090, 13711683, -9352291, 19965156, 13922136, -223338, -18811956, 12880607, -2308545, -6573448, - 1879048, -3171833, 39320424, -4105989, 16582869, -9562745, 34924528, -4032974, 2280628, -13144747, - -22724672, 17637284, -11774653, 35521528, 7009387, 16492674, -801011, -466004, 9547712, 2183991, - 24921548, 13851270, 3762391, 12425340, -16125455, 5164698, 10952167, 751619, -5267778, 20699594, - 4305705, -7503308, -7943542, 7999377, -4904853, -463856, 11014444, -4194036, 6320045, 2463164, - -7627862, 80474800, -22943716, 7750269, -7486128, 3798899, 10533407, 27215060, -20744692, 11544872, - -266288, 1707250, 14804752, -11710228, 15807627, -42011224, -19024558, 7365869, 15880642, 11441793, - 33758444, -33170032, 5345087, -4702989, -45758580, 19838454, -17742510, -11323681, -6599218, -37325412, - 12300786, 13565654, 5927055, -19301584, -32858648, 13249974, -20347408, 18184892, -31499290, 801011, - -37705516, -8897025, -25183540, -21487722, 22314502, 35126392, 4827543, 13176960, -16041703, 6880538, - -26912266, 11824045, -17695266, 5317170, 25701084, 13544179, -9122511, 16058883, 2518998, 13975824, - -11678016, 23117662, 38635380, 2566243, -23514946, -15700253, -10576357, -3783866, 2362232, 17912162, - 3309272, 28778428, -251256, 11353746, -25823490, -3236258, -18700288, -2952790, -2948495, 6380174, - -23461258, 3768834, -1986422, 7593502, 2308545, 4984310, 2126009, 2471754, -81559280, -68373728, - 29280940, -8332237, 34003256, -2342905, 11308649, -40733468, -38210176, -23117662, 13129715, -31467078, - -21640192, -9101036, 6644315, 23514946, 8555575, -46263240, 12814035, 26336740, -65779572, -7578470, - 3446711, -69808248, -23796266, 31525060, -64688648, 32122060, 33743412, 727997, -9118216, -2347200, - -15375983, -16935056, 11903502, 14652281, 48964776, -28479928, -14867029, -11791833, -22368190, 1644973, - -38360500, -9313637, 3184718, -777389, -12322261, -1649268, -21023864, -3998615, 12105365, -4995047, - -13627931, 16430397, -7316477, -15455440, -22310208, 48290464, -1780264, 29551522, 4080219, 11291469, - 31840740, 4898410, 21758304, -14014478, 24152748, 17703856, 5415954, 6612102, 6077379, 21197812, - 9717364, 4211216, 20353850, -8227010, 3137474, -2001455, -31284542, 15066745, 7670812, 4645007, - -19086834, -5149666, 3764539, 6459631, -5362267, -132559872, 50304804, -14448270, -59332824, -14319421, - 1737314, -15189152, 23237920, -51359220, 25074020, -3951370, -59055800, -40675488, 8364449, 23744726, - 22492744, 16518444, 35169340, 10168335, 57685704, 31630286, 67572720, 8933532, 54941220, -41942504, - -32920924, 11493332, 5020817, -33238752, 9616432, 7249905, -4387309, -12573517, 32682554, 6365142, - -71236328, -31726924, 24247238, 8409546, -14892799, 20602958, 21146272, 32637456, 7273527, 9786083, - 6360847, 9575630, 12154757, -24711094, 4075924, 4702989, -52587580, 25054692, 18650896, 22565758, - -35946728, -20918638, 26749056, 152471, -6721624, -5353677, -15193447, -13593571, 403727, -18126910, - -40336184, 13937169, 43679816, -30384746, 4552666, -17231408, -6708739, -12537010, -3603478, 22443352, - 5697274, 18556406, 5718749, -19567872, -13630079, -15880642, -9214852, -12977244, 3474629, -8201240, - -1432372, -12423193, 4340065, 6541235, 7466801, -3728032, 56446608, 38392712, 26761942, 14879914, - 2439542, -12264279, -19078244, 18195628, -54891828, 59392956, -35652524, 10161893, -59652800, -1498944, - 57466664, 23008140, -19411104, 36724116, -56639880, 23618026, 11375221, 4722317, -69911328, -20461224, - 5010080, 12075301, 46033460, -68743096, -8705899, -22357452, -64716568, -13630079, 16355235, 33389076, - 49694920, 38809324, 38588132, -2521146, -23703924, 25690346, 8214125, -14261439, 9614284, -31226560, - 51455856, 24492052, 17847736, -25771952, -57445188, -14815490, 1986422, -69709464, -56296284, -14265734, - -50429360, 33532958, 13353053, 10919954, -22877144, -24567212, 10475425, 7836168, 4928475, 16486232, - -9186935, 12631499, 34235184, 15977278, 6335077, 5267778, -21504902, -17856326, -16030965, 10486163, - -5304285, -44386340, -35450660, -2907693, -28430536, -25031070, -6781754, -36515812, -22776212, -5153961, - 2619930, -4632122, -1825361, 9592809, -6515466, -2003602, 2611340, 64171108, -49984828, 13499082, - -7017977, -6463926, 1239098, 17766132, -31095564, 41732048, -11957189, 28619514, -2699387, -23212150, - 44470092, 43780748, 31432718, -14665166, 67355824, 24889336, -75067440, 77524160, 7204808, -236223, - 56178172, 2454574, -24169928, -32549410, 55465208, -34688304, -46059228, 44721348, 39208756, -25477746, - -61291332, 24056112, -20912196, 8484708, -43046308, -35504348, -14489072, 41843720, 37840808, 4902705, - 34752728, -50236084, 16402480, -13267154, -18453326, 23957328, 3620658, 7292855, -69965016, -19299436, - 39335456, -50272592, -12788265, -63052268, -11446088, -23602992, 10907069, -15300821, 7417409, 6403796, - -1846836, 6234145, -16520592, -56034292, -10219875, 28436978, -3461744, 19692426, -21189222, -49196704, - -8349417, 10737418, 31595926, 7514046, 17467632, -1924145, 7406671, 11690901, 7584912, -17182016, - 4735202, -7110319, 7784628, -13720273, 8508330, 3176128, 1380832, -1664300, -11317239, -6034429, - 58254788, 4614943, -16758962, -41487236, -1267015, -19754702, 15625091, -34243776, 22007412, 14068165, - -29923038, -30696132, 46669116, -54713588, -2007897, 35558036, -39573828, 12938589, 45612552, -36039072, - 31329638, 23046794, 33520072, -54795192, 47586092, -55022828, 16763257, -41854456, 5381594, -21341692, - 37497212, 1279900, 23003844, 11929272, -39056284, -23766202, -54043572, 31737660, -36565204, 31913754, - -43997644, -50115824, -84022448, 8345122, 44311176, -6607807, -1166084, 14100378, 38210176, -12771085, - 10353019, -46349140, 11948599, 61873300, -6109591, 56109452, 73360192, -335007, 12386686, 15197742, - -31164282, 16387448, -37782828, -1760937, -38785704, -37576668, 2325725, -14147622, -63808180, 43465068, - 1131724, 32371168, -37617472, -19110456, -14328011, 16670916, -268435, -9829033, -9848360, -6294275, - -2360085, 3826816, 4215511, -7441031, 8768176, -8557722, -8564165, -4670777, 12339441, 9283572, - 10269267, -4829691, 7758859, -131621424, 33436320, 49329848, 13718126, -57015692, -8310762, 92876520, - -106646184, -2660732, -17946520, -69735240, -17540646, -47238196, 17388176, 17282948, 40864468, 16582869, - -55714316, -19752554, 40288940, -63606320, -18010946, -68027984, 58181776, 17489106, 45530948, 77500536, - -27193586, -16292958, -12674448, -38744900, 37260988, -18148384, -46110768, -51777980, -8963597, 19939386, - -1324997, 10640781, 12773233, 30208652, -13114683, -1355062, 22501334, -21502754, 43997644, 49954764, - 47221016, -38087768, 5274220, -11830487, 22688164, 94173600, 70759584, 134786816, 10877005, 53334904, - 43288976, -20394652, -4436701, -6977175, -12365211, 17087528, 4179003, 48578228, 36745592, -16359530, - -4737349, -28729036, -56324200, 22801982, -581968, 19406810, -3871913, -39011188, -5482526, 5974300, - -21575768, 13297219, -13662291, -18897856, 794569, -18936510, 173946, -5192616, -4436701, 221191, - 3178276, -11800423, 1949915, 843961, 216896, 4844723, 204930064, 99151464, 35676144, 32192928, - -48019880, 31879394, -38686916, 47470128, 38978976, 36571648, 9753871, -66378720, -36919540, 73508368, - 13144747, -3704409, -14957224, 82218560, -88018912, -36715528, -21726092, -6085969, -62206160, 15451145, - -53693532, -29753386, 9442486, -33833604, 51133732, -48318384, -20598664, -11512660, 54619100, -89425512, - -16831976, -66432408, -1440962, 143881, -58282708, 10106058, 46662672, 25514254, -605590, -27144194, - 2952790, 28239410, -36494336, 74790416, 101515848, -5912023, -62337156, -58727236, 42133628, -14568529, - -13159780, 87383256, -18017388, 28185722, -1900523, 55106576, -10473278, 7565585, -10005126, -34194384, - -96091304, -57286272, -8572755, -25497074, -66073776, -43374876, 25559350, 56515328, -4114579, -6768869, - -5471789, -8581345, 31241592, 19868518, 4917738, -18418968, 22080426, -12006581, -43608952, -41856604, - 6036577, 29478508, -33865816, 23111220, -1642825, -12764643, -10915659, 1342177, -18661632, -14441828, - 1449552, -5302137, -2272038, -8710194, }, + -25770, -98784, 6442, -64425, 146029, 96637, -463856, 6442, -302795, -360777, + 96637, 302795, 294205, 107374, -670015, -410169, 133144, -210453, 34360, 135291, + 173946, 281320, -208306, -227633, -423054, -244813, -2147, -962073, -21475, -96637, + -281320, 197569, -556198, -485331, -985695, -137439, -871878, -268435, -23622, 691490, + 188979, 528281, -274878, 560493, -152471, 109522, 674310, 4179003, -3274913, 2037962, + -2589865, 1318555, -1262720, -1247688, -751619, -710817, 753767, 865436, -3206193, -178241, + 470299, -322123, -539018, -1879048, -685047, 1333587, 2025077, 1011465, 3193308, 646393, + -569083, 652835, 551903, -330712, 1043677, 2267743, -871878, -25770, 968515, -32212, + -221191, -1629940, -62277, 822486, 661425, 130997, 47245, -543313, 575526, -62277, + 70867, 30065, -554051, 15154792, -1002875, 1305670, -974958, 962073, -1168231, 227633, + -298500, -283468, 854699, -816044, -2770254, 779537, 268435, 837519, 1846836, 981400, + 652835, -264141, -1612760, -562641, 719407, -231928, -274878, 1541893, -1990717, -639950, + -49392, -352187, -504659, 734439, 805306, 1002875, 270583, 347892, -433792, 1395864, + -79457, 1067299, 745177, -266288, -158914, 500364, -4295, -315680, -161061, 2147, + 11162620, -10640781, 1685775, -2866891, 1556926, -182536, 1127429, -1009317, 2018635, -841814, + 1228361, -2534031, 113817, -1464584, 435939, -223338, -335007, -674310, -1857573, -180389, + 236223, -912681, 1548336, -682900, -1099512, -1398012, 856846, -891206, 2196876, -219043, + 21475, 650688, 23622, 55835, -955630, -809601, -210453, 229781, -356482, -932008, + 850404, 603443, 1513976, -341450, 508954, -201863, 296353, -26124138, 3103114, -1928440, + 90194, -268435, -2160369, 2407329, -549756, 244813, 1037235, 337155, 2785286, -103079, + -1086627, 3330747, 1367947, 3008625, -27917, -3912715, -2327872, -1870458, 1662152, -2027225, + 206158, -717260, -661425, 270583, 646393, -566936, -1202591, -891206, 833224, 932008, + 1756642, -107374, -204011, -79457, 1101659, -1166084, 345745, 500364, 826781, -944893, + 1054415, -1151051, -171799, 423054, -33002528, 12010876, -4791036, 5577015, -3809636, 2579128, + -4133906, 2409477, -3060164, 1234803, 2338610, 156766, 919123, 2151779, -1322850, 1559073, + -1707250, -1241246, -3811784, 3549791, -2224793, 2394444, 210453, 34360, -3655017, -85899, + 747324, -474594, -88047, -88047, 1574106, -178241, -1047972, 1217623, 388695, -418759, + 109522, 105227, 165356, 725850, -964220, 2617783, -176094, -1550483, -133144, -818191, + -60130, 1625645, 15025943, -3231963, 5699422, -2617783, 1956358, -2123861, 7103876, -1370095, + 3790309, -438087, -279173, 959925, -4295, -4885526, 1108102, -442382, -2203318, -534723, + 81604, -6146098, -169651, 504659, 1941325, -47245, -1168231, -238371, 2104534, 386547, + -1043677, -2068027, 3161096, -1960653, -77309, -2922725, -322123, 8590, 508954, -710817, + 775242, 1264868, -1236951, 1002875, -47245, 801011, -45097, 1449552, -730144, -438087, + 1305670, 1823214, 39575976, -11632919, 1653562, -2033667, 2536178, -45097, -100932, -5405217, + 2321430, -2405182, 1565516, 496069, 770947, 1644973, 2613488, 341450, 867583, -4561256, + 1584843, 1582696, -2950643, -635655, 2976412, 1889786, 1879048, 4234838, 2353642, 551903, + 1084479, -1692217, 1312113, -463856, 2424509, 3146064, -511101, 1007170, 1971390, -934155, + 646393, -2888366, -809601, 2725157, -6442, -2055142, -727997, 762357, 2029372, -234076, + 1127429, -103079, -1730872, 2862596, -21159156, 8972187, -6139656, 4084514, -3635690, 4812511, + -3062312, 244813, -2600603, -3204046, -4507568, 362925, -2662880, 1355062, 1556926, 3478924, + -5574868, 3506841, -1307818, 4851166, 1088774, -236223, 412317, 418759, -1103807, -914828, + 760209, -2239826, 1533303, 2765959, -3663607, -764504, -193274, 1533303, -1382980, 3936338, + -4028679, 835371, 17180, 294205, -1720134, 326418, -1071594, 1078037, 180389, 246961, + -1219771, -167504, -2551211, -822486, -128849, 616328, 216896, -889058, -3238405, -64425, + -646393, -34144992, 10870562, -6964290, -431644, -1391569, 2173254, -5869073, 453119, 1906966, + 1586990, -2031520, 1206886, -2602750, -4288525, -1657857, 577673, -2559801, 9101036, 274878, + -2480344, -798864, -2995740, -1395864, 2804614, 1683627, 3629247, -302795, 1638530, -2003602, + 871878, -1812476, -586263, -1052267, 642098, 1142461, -534723, -1720134, 468151, 676457, + 2527588, -414464, -874026, -3221226, -2604898, -1241246, -472446, 627065, 481036, -1309965, + -504659, 257698, 1232656, 635655, 251256, -564788, 1251983, -386547, 2108829, -32867238, + 15474767, -7243463, 6925635, -3560528, 4118874, 2055142, 1282048, -3710852, 493921, -1876901, + 597000, -4870493, 1881196, 3098819, 1032940, -5186173, -2546916, -2594160, -2692945, -1760937, + 3779571, 925565, 2673617, 2138894, -882616, -184684, -3899830, 5113159, -1406602, -487479, + 367220, -1063004, -1518271, -1816771, -373662, -4116726, 1275605, -2173254, 1702955, 1471026, + 2424509, -618475, 311385, -2665027, 1067299, 2007897, 523986, -416612, 453119, 1576253, + 2368675, 1030792, 2207613, 122407, 386547, -103079, -435939, 10647224, 13179107, -6006512, + 3502546, -1874753, 1292785, -1458141, 725850, 1127429, 6438156, -2327872, 2634963, 6043019, + -1690070, -285615, -1058710, 1436667, 3109556, 3182571, 4155381, 1093069, 3532611, -949188, + -2136746, -7168301, 1471026, -1123134, -3607773, -2594160, -150324, -717260, 2272038, -371515, + -4166118, -4312147, 1123134, -3753802, 472446, 2214056, -3360812, -2276333, -1443109, 1612760, + 1479616, -154619, -463856, 2450279, 508954, -1009317, 979253, -2201171, 249108, -1181116, + -1644973, -1142461, 1677185, -914828, 1260573, -1007170, -2102387, 517544, 1133871, -781684, + 642098, -970663, 38019052, -13247827, 7168301, -4973572, 7127498, -5042292, 4367982, -1640678, + 4436701, 1069447, 3120294, -3648575, 3725884, -1288490, -3107409, -332860, -3337190, -5327907, + -2813204, -590558, 2690797, -3655017, -4876936, -5980742, -1078037, -536871, 4767414, 2600603, + 3062312, -2110977, 2476049, -1909113, -1866163, -1039382, 3146064, 2703682, 846109, -36507, + -115964, 70867, -884763, -515396, 2177549, 408022, 5362267, -2074469, -646393, -4488241, + 2927020, -1185411, -695785, -1071594, -277025, 242666, -743029, 796716, -1196148, -2147, + -1696512, -768799, 380105, 1728724, -908386, -135291, -609885, 10660109, -16344498, 9545565, + -6128919, 7410966, -107374, 4591320, 1279900, -7176891, -3416647, -2435247, 850404, 1771674, + 977105, 8055211, -4567698, 6433861, 1099512, 796716, -4440996, -979253, 5555540, -388695, + -4765266, 5373004, 4093104, 891206, -2248416, -1775969, -496069, -397284, 2473901, -1245541, + 1088774, -3042984, -695785, 1722282, -4383014, 1647120, -1715839, 1539746, -1288490, -405874, + 5113159, 2199023, 2901251, -244813, 1185411, 1864016, -412317, -1436667, -2293513, 755914, + 1011465, 1806034, 2183991, 498216, -523986, -2291365, -1058710, -2319282, -2078764, 246961, + 42950, -1745904, -40443560, -8134668, -1043677, -6713034, -2757369, 6103149, 2630668, -1720134, + -1524713, -4814659, -3182571, -3897683, -4376572, -3624953, -2291365, -3274913, -5602785, -4784594, + 1909113, -4859756, 1683627, -6554120, 266288, -2682207, -2130304, 5802501, -536871, -2744484, + 3768834, -4116726, 3981435, 1232656, 4198331, 2879776, -25770, -1928440, 4415227, -2147, + -609885, 4026532, -1591285, -5340792, -6043019, -1509681, 2089502, 1355062, -1752347, -120259, + -1617055, 448824, 152471, 373662, 3891240, 1563368, -2695092, -981400, 566936, 2486786, + 631360, 3682935, 1063004, -242666, -1784559, -1632088, 96637, -47620448, 41461468, -16883516, + 11512660, -10819023, 2658585, -5312875, 7022272, 1329292, 826781, -3393024, 4763119, 966368, + -8546985, 867583, 1275605, -4307852, -6584185, 6515466, 8100309, -2615635, -2121714, 1344325, + 3740917, -2194728, 7380902, -242666, 1881196, -5360119, -1887638, -3199751, 4816806, -1082332, + 1060857, 1024350, -2740189, 4638565, 4481799, 1202591, 1550483, 5437429, -3309272, -904091, + -678605, -3987877, 869731, -2611340, 987843, -148176, 373662, 4432406, -150324, -1041530, + 1009317, 206158, 2937758, -2738042, 1045825, -208306, 5738077, -1737314, -204011, -2282775, + -459562, -1479616, 31731218, -3893388, -6700149, -1638530, 4213363, 2145336, 1870458, -294205, + -4479651, 1035087, 2624225, 2982855, -2078764, -1960653, 6354404, 2132451, -5074504, 1017907, + 8239895, -10426033, 6869800, 781684, 8800388, -644245, 448824, 1683627, 1733019, 4606353, + -3493956, -1355062, 1690070, 3294240, -1374390, -141734, 380105, 732292, 2055142, -4303557, + -148176, 2433099, 657130, -2388002, -775242, 5441724, 3992172, 1881196, -2143189, -1576253, + 1531156, -743029, -1395864, 929860, -1733019, -2673617, 5596343, 2179696, 3582003, 539018, + 2692945, 2192581, 2390149, 242666, 2905546, 1445257, 2052994, -1733019, 354335, 762357, + -2546916, 878321, -1249836, -268435, 15098958, 4385162, 3642132, -2214056, -1481764, -4103841, + -2931315, 745177, -1608465, -2020782, -5877663, 5003637, 3466039, -3663607, 6259915, -5896990, + -1782411, 2624225, -4365835, 2534031, 4065187, 6206228, 5482526, 5220533, 2712272, -11046656, + 4295, -2321430, 2214056, -1069447, 4322885, 2924873, -1421634, -2690797, 2838974, -1977833, + 7292855, -4295, 2413772, 7383049, 7078106, -5345087, 450972, -3526168, -6352257, -691490, + 1198296, -816044, -1299228, -682900, 554051, -2980707, 399432, -3476776, -968515, -414464, + 929860, 21475, -2025077, -2166811, 4434554, -1567663, 685047, 1975685, 2454574, -1357210, + -1374390, -652835, -3493956, -2388002, 384400, 758062, 35680440, -25104084, 9139690, -9536975, + -734439, -6663642, 6030134, 5989332, 1932735, 1217623, 5665062, 15571404, -13683766, -1902671, + -3556233, -5527623, 12081743, 9096741, -1861868, -8278550, 3356517, -6764574, -5405217, -9476845, + 1213328, -9704479, -3204046, 5714454, 826781, -2978560, -8005819, 12885, -1930588, 4864051, + 4475356, 2063732, -3635690, 543313, -227633, 1964948, 3863323, -2454574, -1236951, -4344360, + 6582038, -820339, 972810, 5864778, -1211181, -541166, 2347200, -2954938, -304943, 2540473, + -4361540, 985695, -809601, -388695, -4548371, 2203318, -974958, 384400, 1118839, -1690070, + 2982855, -2355790, -609885, -4876936, 438087, -685047, 2022930, 2128156, -55548960, 7703024, + 792421, 3917010, -4254165, -6919193, -15032, 4666482, 7406671, -433792, 11254962, 6279242, + -7582765, -6762426, 5272073, 966368, -5394479, -10039486, -11519102, -7376607, -8493298, -9509058, + 1750199, 3062312, 2568391, -7028714, -6755984, 1065152, -1754494, -1127429, -874026, -5602785, + 4801774, -9665824, -3592740, -1445257, -317828, 3135326, 1129576, -635655, 4516158, -1329292, + 4503273, 2602750, -3397319, 586263, 7295002, -2860448, -2858301, 225486, 4290673, 1136019, + -2972117, -3837553, 3594888, 225486, -5044439, 7026567, 7926362, 989990, -2201171, 977105, + -96637, 1709397, 3532611, -304943, 4670777, 2976412, 2695092, 2355790, 1251983, 1969243, + -2259153, -135291, -34048352, 29072634, -9749576, 6199786, -180389, 4829691, -11802570, 4544076, + -8053064, 25770, -5458904, 10907069, 9268539, 3500398, 730144, -8985072, -5980742, -936303, + -3635690, 10355166, -8497593, -345745, -4224101, 15171972, -4855461, 1352915, -455267, 2609193, + 1163936, 2602750, 1885491, -2514703, 1340030, -614180, 5272073, 816044, 10020159, 5211943, + -3270618, -682900, -1279900, 184684, -3865471, -2705830, -989990, 1795296, 12221329, 1114544, + 790274, -3362960, 4967130, -1853278, -2647847, 1617055, -2574833, 1511829, -3189013, -6854768, + 3371549, 3038689, -985695, 7166153, 1494649, 1702955, 2544768, -1919850, 818191, 2325725, + -5961415, -2783139, -489626, -2699387, 2697240, 4234838, -1556926, 7269232, 4829691, -163209, + -1932735, -1462436, -504659, 22215718, -487479, 5016522, -15079630, -2499671, 1917703, -12167642, + 983548, 16879222, -2929168, 1221918, -7599945, -10417443, 2662880, -9517648, 14877767, -10314364, + 3577708, 3524021, 7971460, 6199786, -1614908, -9201967, -1058710, -841814, 4724464, -6448894, + -1241246, -1887638, -3062312, -2181844, 4518306, 2778844, 12066711, 4099546, -4479651, 5007932, + -3272765, -3451006, 3717294, 10327249, -1475321, -5323612, -4980015, 5491116, -126702, -7471096, + -6878390, 3532611, 3292093, -3098819, -5684389, -9446781, 2619930, 3521873, 2375117, -5334350, + 4015795, 2467459, 1677185, -1894081, -573378, 2924873, -7088844, -925565, 3131031, 3682935, + -670015, 1795296, 154619, 75520560, -4870493, 2987150, 6865505, -6674379, -2877628, -2323577, + -17862768, 11903502, -1992865, -11100343, 2327872, -5723044, 6433861, 5078799, 8192650, -2997887, + 11141145, 9536975, 6077379, -9938554, 7524783, -13612899, -8055211, -9283572, 3588445, -7146826, + -1342177, -2476049, -9090298, -4964982, 7563438, -5731634, -4348655, -8682276, 2740189, 2723009, + 6397354, -3706557, 11053098, 2716567, 12607876, -1513976, 2244121, 2493229, -7054484, 4930623, + 12910672, -4526896, -418759, 3466039, -3826816, -5291400, 3021510, -5272073, -2866891, -6874095, + -4522601, 4992900, 4453881, 2976412, 4786741, 6025839, 5744519, 8665097, 1372242, -2643552, + 4471061, 3015067, -90194, -923418, 324270, -3320010, -736587, 633508, 760209, -238371, + -33247342, -65399468, 24535000, 433792, 1544041, -6358699, -6807523, -1382980, 2456721, -4056597, + 17334488, -7741679, -14774687, 1067299, 1144609, -1799591, -5080947, 11847667, 2314987, -5080947, + 5632850, -10206990, 13338021, -7198365, -3635690, -8802535, 14867029, -6191196, -1930588, -8727374, + -3914863, 8111046, -3524021, 8768176, -10954314, -12889197, 1267015, 2400887, 2454574, -212601, + -6551973, 1378685, 3678640, 1857573, 7000797, 85899, 10866267, 1602023, 10198400, 13209172, + 2927020, -871878, 2671470, -7219840, -1677185, -12139725, -10711648, 3315715, 3448859, 2252710, + -554051, -3388729, -1625645, -2884071, -1462436, -2879776, 268435, -171799, 2497524, -650688, + -1221918, -4088809, -113817, -4767414, -377957, -6360847, -639950, -2308545, -502511, -21912924, + 64132452, -29149944, 13423920, -6152541, 20405390, -3169686, -8939974, -9345849, 5398774, -2761664, + -1155346, 496069, 4041564, -21509196, -10458245, -5527623, 8626442, 7226283, 12629351, 2327872, + -1846836, -1960653, 15144055, -19561428, 11420318, -9397388, -1891933, -9902047, 15648713, 6279242, + -10048076, 1372242, -4359392, 1705102, 6687264, -28093382, -11660836, 2340757, 9968619, -5759551, + 2173254, 7239168, -2834679, -3152506, -929860, 10907069, 4395899, 1887638, 1320703, 4219806, + 12889197, -7735236, 5954972, -17927194, -2989297, 4065187, 8772471, 1642825, 1372242, 438087, + 4810364, -3493956, 663572, -1247688, -4101694, -3672197, 6841883, 6543383, -2332167, -3382287, + -11029476, -4715874, -2360085, -1992865, 8287140, -3100967, -2901251, -5461051, -4784594, -395137, + -57488136, -12393128, 5639292, -13623636, 3448859, 2521146, 8439611, -25770, 16076063, 10503343, + 5819681, -4387309, -7870528, -390842, 17005924, -14512694, -5538361, -11242077, -236223, -30760556, + -24257976, 1550483, 15075335, 20755430, 4799626, -7522635, 7084549, -6676527, -4460324, -4537633, + 2063732, 5454609, 1337882, 8096014, -6111739, -10922102, 9075266, 5989332, 19048180, -2304250, + 3111704, -2701535, 15365246, -15945066, -8010114, -3747359, -12113955, 7750269, -4990752, 6515466, + -12977244, 12987981, 12579959, 11605002, -4700842, 10292889, 564788, 3618510, 6023692, 4327180, + -5418101, 996432, -1677185, -249108, 11819750, 4462471, -5177583, 9614284, -1537598, -8216273, + -2727304, -539018, -11628624, -405874, 4872641, 6401649, 1024350, -176094, -4797479, 1831804, + 2832531, 41624676, 27041114, -8609262, 12225624, -27790586, 19402514, 7067369, 14585709, -5100274, + -3770981, -15247134, -7866233, -26010322, -4569845, -20725364, -6352257, -12801150, -13106093, -17622250, + 6878390, -24049670, 3137474, 10271414, -4694400, 3176128, -10406706, -227633, -3309272, -3511136, + -14151917, -1990717, 1529008, -1058710, -2259153, -7462506, -6491843, 4234838, 4520453, 5976447, + 30356828, -12384538, -801011, 12223477, -3051574, -5179731, -11781095, 3496104, 10241350, 16986596, + 5667210, 14143327, -14033806, -21058224, 1898376, 13612899, 7582765, -11422466, 13035226, -10024454, + 6227703, 2499671, 11839077, 6624987, 4279935, 7960722, -8169028, 5031554, 4194036, 2321430, + 11626476, 2572686, 9373766, -1539746, -3897683, 1380832, 2147484, 1844689, 11278584, -1947768, + -6517613, -738734, 84217864, -54445152, -2916283, 6354404, 1737314, 6670084, 11577084, -2289218, + -1808181, 6502581, -9676561, -9259949, -1477469, 7492571, 30346092, 1301375, 10520522, -9730248, + 665720, -29927332, 18564996, -18092550, -25750476, 6027987, 7305740, -9554155, 8677981, 3637837, + 20068234, 22164178, -3616363, -8340827, -6242735, -33077690, -17972290, 25960930, 8626442, 9562745, + -14858439, -15305116, 4610648, -2957085, -13112535, 11510512, -2433099, -8235600, -9451076, 6524056, + -8456791, -4552666, 30492120, -18530636, 5708012, -6644315, 7127498, -8338679, -3347927, -22686018, + 3901978, -8398809, -5577015, 18137646, 4456029, 5059472, 11050951, 13153337, 3996467, 9105331, + -3977140, -1078037, -14828375, 6813966, 12382391, -2813204, 884763, -1367947, -3021510, -3839701, + 1458141, -3949223, -1713692, -52104396, -25512106, 9998684, -2959233, 19288698, -2403034, -4707284, + -14847702, -16666621, 9255655, -17435420, -5849746, -9764608, -1698660, -10320806, -6987912, -8233453, + -4093104, -10277857, -19765440, 11798275, -39483636, -133144, 35886600, 8972187, 92342, -9446781, + 2804614, -35699768, 15135465, 9330816, 2761664, 13292924, 19608674, -14959371, -7752416, -15577846, + 2609193, 854699, -9133248, -10453950, -11639361, -6777459, -274878, 8196945, 923418, 6775311, + 3942780, 1101659, 24973088, 6240588, -3706557, 19887846, -9300752, -21945136, -6573448, -2302103, + -2931315, -1123134, -7432441, -1408749, -9332964, -1984275, -9496173, 1318555, 5527623, -10346576, + -2768107, -5551245, 715112, -10492605, -13477607, -5609228, 5836861, 10075993, 4196183, -2869038, + -100932, 4084514, -1505386, -1911261, -4544076, 2564096, 5405217, 1421634, 45097, -5695127, + -32089848, 43628276, -21288006, -10473278, -35358320, 27876486, -9631464, 16492674, 1157494, 1159641, + -10634339, 21891448, -5291400, 7243463, 5519033, -9781788, -3255585, -3051574, -18691698, 3925600, + 3536906, -14375256, -24298778, -14985141, -22348862, -5278515, 12298639, 6571300, -13112535, -12964359, + 19754702, 13722421, -16879222, 15824807, -8360154, 14027363, -21427592, -16808354, -16312286, 6049462, + -14439680, 9423158, -6468221, 4116726, -3912715, -1846836, 3474629, 15921444, -34218004, -4099546, + 6927782, -2886218, -10350871, -24500640, -2130304, 22975928, 8590, 19947976, 14577119, 4473209, + -2742337, 15300821, -14847702, -11952894, 9650792, -3317862, -9201967, 6635725, 1909113, -6968585, + -10591389, 18303004, -16737488, -8849780, -9987946, 10520522, 562641, -6929930, -4039417, 5628555, + -15461882, 341450, 4191888, 3466039, 399432, -4975720, -7509751, -73916384, 28112708, 12148315, + -18279380, 9631464, -20729660, 19447612, 16844862, 14385993, -37666864, 23444078, 40763536, -5186173, + 14134737, 1022202, -12146168, -16056735, 44865228, -221191, -3502546, -24081882, -47908212, -25812754, + 2871186, -21030308, 18249316, -31318902, -10106058, -18352396, 5546951, -6970732, -23212150, 4297115, + -5037997, 15850577, -4810364, -18247168, -6713034, -56549688, 10604274, -1455994, 26703960, -15792595, + -17422534, 24818468, 5568425, 4320737, -9410273, -14948634, 5836861, 11441793, 8506183, -3730179, + 9012989, 4939213, 1410897, -4726612, -4960687, -18515604, 1881196, -7217693, -10531260, 10086731, + 5948530, 27908698, 6199786, -18431852, -18337362, 4337917, -11738146, -8714489, 3513283, -8974334, + -15032, -4030827, -5046587, 5473936, -6964290, 2901251, -513249, -1294933, -2336462, -3893388, + -8632884, -10791105, -3002182, -9279277, 61132416, -25333864, -485331, 2583423, 25037512, -4176856, + -5922760, 16928614, 29654602, -21444772, -24676734, 17716740, -4432406, 15307263, 22486302, 18650896, + 15895674, 12644384, 14963666, 59390808, -6002217, 3627100, 10808285, 32407676, -7786776, -12970801, + 11879880, -1692217, -11753178, -14156212, -12605729, -470299, -16112570, 22181358, 33681132, -2574833, + -9524090, 13711683, -9352291, 19965156, 13922136, -223338, -18811956, 12880607, -2308545, -6573448, + 1879048, -3171833, 39320424, -4105989, 16582869, -9562745, 34924528, -4032974, 2280628, -13144747, + -22724672, 17637284, -11774653, 35521528, 7009387, 16492674, -801011, -466004, 9547712, 2183991, + 24921548, 13851270, 3762391, 12425340, -16125455, 5164698, 10952167, 751619, -5267778, 20699594, + 4305705, -7503308, -7943542, 7999377, -4904853, -463856, 11014444, -4194036, 6320045, 2463164, + -7627862, 80474800, -22943716, 7750269, -7486128, 3798899, 10533407, 27215060, -20744692, 11544872, + -266288, 1707250, 14804752, -11710228, 15807627, -42011224, -19024558, 7365869, 15880642, 11441793, + 33758444, -33170032, 5345087, -4702989, -45758580, 19838454, -17742510, -11323681, -6599218, -37325412, + 12300786, 13565654, 5927055, -19301584, -32858648, 13249974, -20347408, 18184892, -31499290, 801011, + -37705516, -8897025, -25183540, -21487722, 22314502, 35126392, 4827543, 13176960, -16041703, 6880538, + -26912266, 11824045, -17695266, 5317170, 25701084, 13544179, -9122511, 16058883, 2518998, 13975824, + -11678016, 23117662, 38635380, 2566243, -23514946, -15700253, -10576357, -3783866, 2362232, 17912162, + 3309272, 28778428, -251256, 11353746, -25823490, -3236258, -18700288, -2952790, -2948495, 6380174, + -23461258, 3768834, -1986422, 7593502, 2308545, 4984310, 2126009, 2471754, -81559280, -68373728, + 29280940, -8332237, 34003256, -2342905, 11308649, -40733468, -38210176, -23117662, 13129715, -31467078, + -21640192, -9101036, 6644315, 23514946, 8555575, -46263240, 12814035, 26336740, -65779572, -7578470, + 3446711, -69808248, -23796266, 31525060, -64688648, 32122060, 33743412, 727997, -9118216, -2347200, + -15375983, -16935056, 11903502, 14652281, 48964776, -28479928, -14867029, -11791833, -22368190, 1644973, + -38360500, -9313637, 3184718, -777389, -12322261, -1649268, -21023864, -3998615, 12105365, -4995047, + -13627931, 16430397, -7316477, -15455440, -22310208, 48290464, -1780264, 29551522, 4080219, 11291469, + 31840740, 4898410, 21758304, -14014478, 24152748, 17703856, 5415954, 6612102, 6077379, 21197812, + 9717364, 4211216, 20353850, -8227010, 3137474, -2001455, -31284542, 15066745, 7670812, 4645007, + -19086834, -5149666, 3764539, 6459631, -5362267, -132559872, 50304804, -14448270, -59332824, -14319421, + 1737314, -15189152, 23237920, -51359220, 25074020, -3951370, -59055800, -40675488, 8364449, 23744726, + 22492744, 16518444, 35169340, 10168335, 57685704, 31630286, 67572720, 8933532, 54941220, -41942504, + -32920924, 11493332, 5020817, -33238752, 9616432, 7249905, -4387309, -12573517, 32682554, 6365142, + -71236328, -31726924, 24247238, 8409546, -14892799, 20602958, 21146272, 32637456, 7273527, 9786083, + 6360847, 9575630, 12154757, -24711094, 4075924, 4702989, -52587580, 25054692, 18650896, 22565758, + -35946728, -20918638, 26749056, 152471, -6721624, -5353677, -15193447, -13593571, 403727, -18126910, + -40336184, 13937169, 43679816, -30384746, 4552666, -17231408, -6708739, -12537010, -3603478, 22443352, + 5697274, 18556406, 5718749, -19567872, -13630079, -15880642, -9214852, -12977244, 3474629, -8201240, + -1432372, -12423193, 4340065, 6541235, 7466801, -3728032, 56446608, 38392712, 26761942, 14879914, + 2439542, -12264279, -19078244, 18195628, -54891828, 59392956, -35652524, 10161893, -59652800, -1498944, + 57466664, 23008140, -19411104, 36724116, -56639880, 23618026, 11375221, 4722317, -69911328, -20461224, + 5010080, 12075301, 46033460, -68743096, -8705899, -22357452, -64716568, -13630079, 16355235, 33389076, + 49694920, 38809324, 38588132, -2521146, -23703924, 25690346, 8214125, -14261439, 9614284, -31226560, + 51455856, 24492052, 17847736, -25771952, -57445188, -14815490, 1986422, -69709464, -56296284, -14265734, + -50429360, 33532958, 13353053, 10919954, -22877144, -24567212, 10475425, 7836168, 4928475, 16486232, + -9186935, 12631499, 34235184, 15977278, 6335077, 5267778, -21504902, -17856326, -16030965, 10486163, + -5304285, -44386340, -35450660, -2907693, -28430536, -25031070, -6781754, -36515812, -22776212, -5153961, + 2619930, -4632122, -1825361, 9592809, -6515466, -2003602, 2611340, 64171108, -49984828, 13499082, + -7017977, -6463926, 1239098, 17766132, -31095564, 41732048, -11957189, 28619514, -2699387, -23212150, + 44470092, 43780748, 31432718, -14665166, 67355824, 24889336, -75067440, 77524160, 7204808, -236223, + 56178172, 2454574, -24169928, -32549410, 55465208, -34688304, -46059228, 44721348, 39208756, -25477746, + -61291332, 24056112, -20912196, 8484708, -43046308, -35504348, -14489072, 41843720, 37840808, 4902705, + 34752728, -50236084, 16402480, -13267154, -18453326, 23957328, 3620658, 7292855, -69965016, -19299436, + 39335456, -50272592, -12788265, -63052268, -11446088, -23602992, 10907069, -15300821, 7417409, 6403796, + -1846836, 6234145, -16520592, -56034292, -10219875, 28436978, -3461744, 19692426, -21189222, -49196704, + -8349417, 10737418, 31595926, 7514046, 17467632, -1924145, 7406671, 11690901, 7584912, -17182016, + 4735202, -7110319, 7784628, -13720273, 8508330, 3176128, 1380832, -1664300, -11317239, -6034429, + 58254788, 4614943, -16758962, -41487236, -1267015, -19754702, 15625091, -34243776, 22007412, 14068165, + -29923038, -30696132, 46669116, -54713588, -2007897, 35558036, -39573828, 12938589, 45612552, -36039072, + 31329638, 23046794, 33520072, -54795192, 47586092, -55022828, 16763257, -41854456, 5381594, -21341692, + 37497212, 1279900, 23003844, 11929272, -39056284, -23766202, -54043572, 31737660, -36565204, 31913754, + -43997644, -50115824, -84022448, 8345122, 44311176, -6607807, -1166084, 14100378, 38210176, -12771085, + 10353019, -46349140, 11948599, 61873300, -6109591, 56109452, 73360192, -335007, 12386686, 15197742, + -31164282, 16387448, -37782828, -1760937, -38785704, -37576668, 2325725, -14147622, -63808180, 43465068, + 1131724, 32371168, -37617472, -19110456, -14328011, 16670916, -268435, -9829033, -9848360, -6294275, + -2360085, 3826816, 4215511, -7441031, 8768176, -8557722, -8564165, -4670777, 12339441, 9283572, + 10269267, -4829691, 7758859, -131621424, 33436320, 49329848, 13718126, -57015692, -8310762, 92876520, + -106646184, -2660732, -17946520, -69735240, -17540646, -47238196, 17388176, 17282948, 40864468, 16582869, + -55714316, -19752554, 40288940, -63606320, -18010946, -68027984, 58181776, 17489106, 45530948, 77500536, + -27193586, -16292958, -12674448, -38744900, 37260988, -18148384, -46110768, -51777980, -8963597, 19939386, + -1324997, 10640781, 12773233, 30208652, -13114683, -1355062, 22501334, -21502754, 43997644, 49954764, + 47221016, -38087768, 5274220, -11830487, 22688164, 94173600, 70759584, 134786816, 10877005, 53334904, + 43288976, -20394652, -4436701, -6977175, -12365211, 17087528, 4179003, 48578228, 36745592, -16359530, + -4737349, -28729036, -56324200, 22801982, -581968, 19406810, -3871913, -39011188, -5482526, 5974300, + -21575768, 13297219, -13662291, -18897856, 794569, -18936510, 173946, -5192616, -4436701, 221191, + 3178276, -11800423, 1949915, 843961, 216896, 4844723, 204930064, 99151464, 35676144, 32192928, + -48019880, 31879394, -38686916, 47470128, 38978976, 36571648, 9753871, -66378720, -36919540, 73508368, + 13144747, -3704409, -14957224, 82218560, -88018912, -36715528, -21726092, -6085969, -62206160, 15451145, + -53693532, -29753386, 9442486, -33833604, 51133732, -48318384, -20598664, -11512660, 54619100, -89425512, + -16831976, -66432408, -1440962, 143881, -58282708, 10106058, 46662672, 25514254, -605590, -27144194, + 2952790, 28239410, -36494336, 74790416, 101515848, -5912023, -62337156, -58727236, 42133628, -14568529, + -13159780, 87383256, -18017388, 28185722, -1900523, 55106576, -10473278, 7565585, -10005126, -34194384, + -96091304, -57286272, -8572755, -25497074, -66073776, -43374876, 25559350, 56515328, -4114579, -6768869, + -5471789, -8581345, 31241592, 19868518, 4917738, -18418968, 22080426, -12006581, -43608952, -41856604, + 6036577, 29478508, -33865816, 23111220, -1642825, -12764643, -10915659, 1342177, -18661632, -14441828, + 1449552, -5302137, -2272038, -8710194, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS][2885] ={ { -9659381, - 5362267, -3098819, 1329292, -1745904, 399432, -1284195, -347892, 55835, 2576981, -1692217, - 1123134, -2744484, 2025077, -3098819, -4211216, -3702262, 850404, -397284, 579821, 79457, - -1915555, 1105954, 1917703, -1084479, 1535451, -242666, -670015, -1357210, -244813, 399432, - 1078037, -785979, 1612760, -654983, 1028645, 1501091, -1097364, -1056562, 68719, -1110249, - 298500, 27917, -508954, 1103807, 180389, -513249, 3689377, -3813931, -676457, -818191, - -858993, -294205, -38655, -743029, -500364, -15032, 180389, -549756, 328565, -1198296, - -326418, -212601, 736587, -4054449, -358630, 811749, -362925, -513249, 373662, 53687, - 307090, 1833951, -876173, -616328, -970663, -206158, 569083, 811749, -831076, -661425, - 1011465, -932008, -1329292, -171799, -345745, 448824, -380105, -408022, 244813, 392990, - -811749, 251256, 337155, -12947179, -8793946, -3573413, -4080219, -2280628, -2134599, -2022930, - -914828, -2439542, -1921998, -839666, -1498944, -197569, -539018, -1307818, -1767379, -1979980, - -779537, -1148904, -1995012, -261993, -2497524, 6442, -188979, -347892, -1511829, -261993, - -1142461, 8590, -1475321, -942745, 508954, -1086627, 191126, -2521146, -463856, 1228361, - 753767, -47245, -367220, -725850, 206158, 227633, 1168231, -702227, -115964, -362925, - -17038136, -910533, 2173254, -19327, 637803, -100932, 0, -1346472, 1436667, 590558, - 1733019, 1264868, 3569118, 2652142, 186831, -1398012, -831076, -315680, 654983, -461709, - -3180423, -2826089, -1488206, -420907, 122407, 420907, 571231, -94489, 83752, 367220, - -678605, -70867, -105227, -1930588, 1131724, 491774, -229781, 0, -760209, -1063004, - 659278, 279173, -721555, 697932, 562641, 846109, -382252, 19097572, 13387413, 2647847, - 5173288, 1090922, 1700807, 4247723, 2164664, 689342, 2529736, 1052267, -1133871, -536871, - 869731, 1492501, -2600603, -326418, -1567663, 3463891, 1698660, 901943, 1700807, 895501, - 874026, 64425, -180389, -824634, 1335735, 1655710, 1378685, 1760937, 2089502, 1279900, - 3058017, 719407, -184684, 1118839, 193274, -508954, -253403, -450972, -616328, 42950, - 1415192, 369367, 225486, 858993, 28509992, 12066711, 3697967, 3292093, 2368675, 1402307, - 500364, 73014, 3161096, 594853, 1771674, 2319282, 1284195, -201863, -826781, 4939213, - -408022, -2755222, -1518271, 1202591, 109522, 2628520, 914828, 296353, -448824, -1271310, - -309238, -599148, 1209033, -231928, 526134, 88047, 225486, -667867, 989990, 3427384, - 2226941, 2267743, 2110977, 1681480, 977105, 642098, 435939, 1105954, -910533, 665720, - -408022, 9382356, -9887015, -2985002, -4271345, -3687230, -2016487, -590558, 1367947, -1370095, - 139586, -3652870, 1241246, -1327145, -3324305, 882616, -2379412, -3158949, -2274185, 3030100, - 2265595, -1060857, 1144609, -2091649, 798864, -3809636, 182536, 633508, -665720, -889058, - 779537, -3015067, -1389422, 395137, -1075889, -886911, -708670, 251256, 298500, 1526861, - 66572, 2630668, -1041530, -717260, -852551, -1294933, -429497, -646393, 341450, -1116692, - -1754494, -266288, -33844344, -17119740, -6178311, -4795331, -5280663, -3268470, -4569845, -2929168, - -4973572, -874026, -2269890, -551903, 184684, -2029372, -605590, 343597, -17180, -3098819, - -2115272, -1391569, 249108, -4185446, 371515, -1887638, -3786014, 341450, -98784, 279173, - -143881, -1301375, -1063004, 62277, -337155, -27917, -1451699, 64425, 324270, 1148904, - 373662, -1434519, 775242, -1434519, 927713, -2480344, -1760937, 395137, -1440962, 88047, - -581968, -1988570, -652835, -20029580, 10522670, 4372277, 1664300, 2675765, 534723, 693637, - 2411624, 2628520, 1473174, 1739462, -1314260, -603443, -2068027, 2523293, 566936, 429497, - 3519726, 81604, -2304250, 4112431, -2714419, 302795, 3459596, -1065152, 934155, 412317, - -42950, -1750199, -373662, 916976, 1024350, 137439, -575526, 38655, -1174674, 3880503, - 371515, -90194, -1501091, -803159, -955630, -959925, 2153926, 1999307, -485331, 171799, - -94489, 584116, 186831, -161061, -377957, 455267, 356482, -618475, -513249, 83752, - 504659, 30129196, 12751758, 3451006, 6869800, 4041564, 1685775, 3040837, 2555506, 38655, - 1859721, 3019362, 661425, 40802, 1498944, 4241280, -1451699, -736587, -3354370, 882616, - 3809636, 1655710, 152471, -2130304, -1187559, -895501, 4015795, 1290638, 2089502, 1217623, - -1939178, -3051574, 3481071, 1958505, -2171106, -989990, 3382287, 2903398, -165356, 749472, - -373662, 1533303, 938450, -296353, 676457, -1163936, -577673, 1870458, -983548, -710817, - 1945620, 1711545, 916976, 371515, 395137, 450972, 1385127, 798864, 2192581, 35654672, - 7681549, 5985037, 2576981, 2774549, 1112397, 2854006, 3272765, 5325760, 3201898, -947040, - 4121021, -751619, 1084479, 977105, 3483219, 5239860, 3309272, -848256, 5768141, -1052267, - -629213, -3004330, 796716, -858993, 923418, 1612760, -1782411, -2385854, -1037235, 526134, - -1979980, -592706, 869731, 1340030, -2317135, -1906966, -837519, 801011, -36507, 654983, - -852551, 32212, -581968, -725850, 914828, -1273458, 1245541, -1370095, -511101, -1030792, - 219043, -341450, 1404454, 685047, -124554, 1999307, 663572, 4136054, -15805480, -5053029, - -5656472, -3622805, 962073, -886911, -3401614, 1949915, 128849, 2394444, -281320, 261993, - -3708704, -2592013, -1730872, -2669322, 214748, -2841121, -5523328, 1101659, 631360, -2544768, - -575526, -2308545, 472446, 790274, -466004, -5671505, -1625645, 369367, -650688, 493921, - 1509681, -4037269, -1230508, -2521146, 1292785, -307090, -236223, 2652142, -2703682, -176094, - 805306, -337155, -906238, 1284195, 654983, -1604170, -1992865, -3133179, -502511, -2394444, - -1967095, -1022202, -1370095, -798864, -397284, -734439, -1236951, -1623498, -955630, 584116, - 1073742, -191126, -37052684, -12517682, -7614977, -1879048, -3964255, -103079, -2164664, -2705830, - -3438121, 4254165, 53687, -1567663, -442382, -6103149, -3543348, -2952790, 4973572, -4179003, - -8974334, 788127, 1050120, 749472, -3330747, -820339, 1836099, -4056597, -470299, -4140349, - -1297080, 2390149, -2059437, 622770, 4516158, 547608, -989990, -1056562, 1191853, 1464584, - 1097364, -1309965, -298500, 1520418, 1964948, 1262720, 633508, -3796751, 682900, -135291, - -1995012, -676457, 332860, -470299, -2016487, -1256278, -2091649, -539018, 57982, 337155, - -356482, -1380832, -304943, -1063004, -139586, -1140314, -53687, -24631638, 5761699, 298500, - -2924873, 4337917, -2710124, -2216203, 1183264, -4213363, -2405182, -947040, 1797444, -3337190, - 4548371, 34360, -45097, 2027225, 2160369, 3216931, -274878, 4453881, 6562710, 4625680, - 1559073, 3949223, -1226213, 2486786, -2881923, -3077344, -1185411, 313533, 2042257, -1644973, - -2763812, -1591285, 8590, 1698660, -2669322, 1926293, 758062, 1473174, -622770, -2559801, - -3298535, -4069482, 1129576, -2106682, 1172526, -4310000, -1155346, 1861868, -2609193, 390842, - -1810329, 1236951, -528281, 1200443, 373662, -807454, 10737, -1763084, 3279208, 1299228, - 3034395, 1219771, 16460462, 27092654, 7902740, 7024419, 9824738, 7911330, 1599875, 6270653, - 5641440, 3030100, 11907797, 2808909, 2059437, 5119601, 4801774, 2488934, 2158221, 1236951, - 2029372, -1541893, 6045167, -1612760, 637803, -1889786, 3852586, 182536, -916976, 3133179, - 3801046, 1314260, 5025112, -3517578, -5748814, -1314260, -272730, 1260573, -335007, 2503966, - -2257005, 2280628, 5068062, 2151779, -4380867, -921271, 2340757, 889058, -2108829, 3148211, - 1307818, 1866163, 2138894, 2813204, 994285, -781684, 760209, -2536178, -597000, 2375117, - 2241973, -1221918, 38655, 586263, -1002875, 343597, 1793149, 62337156, 6390912, -571231, - 3837553, -62277, 5308580, 115964, 1417339, 730144, 5596343, 2675765, -2323577, 1937030, - 2675765, 1496796, -3403762, -6990060, -3244848, -2905546, 1236951, -4271345, -770947, -221191, - 1148904, 7801808, 4292820, 1513976, 3096672, -4769561, -304943, -2473901, -977105, -1937030, - 2901251, -1058710, 4861903, -2183991, -884763, -2443837, -1120987, -3554086, -1685775, 884763, - 783832, -133144, 40802, -1924145, 1123134, 3412352, 272730, -1750199, 2106682, -2911988, - 1299228, 1361505, -289910, -865436, -627065, -75162, -551903, 206158, 2018635, -167504, - -1840394, 444529, -18126910, -21575768, -4009352, -1204738, -882616, -3433826, -1417339, 6541235, - 3874061, 1374390, 1786706, -2862596, -571231, 4907000, -1810329, 7992934, -6212670, -1702955, - 6519761, -1264868, -732292, -3798899, 4466766, 4932770, 90194, 4861903, -1775969, 2149631, - -103079, -2735894, -431644, -2166811, -904091, -1410897, 2686502, -1992865, -476741, -3060164, - 2059437, -1595580, 4498978, -7123204, 2982855, 2465311, -4301410, 77309, -2845416, 749472, - -3238405, 1009317, 1340030, -4118874, -627065, -1509681, -6116034, -3554086, -1702955, -3053722, - -667867, -528281, 324270, -2501819, 341450, -4818954, 1333587, 569083, -1666447, 581968, - -1662152, -463856, -1084479, -521839, -15988016, -9083856, -12416750, -6292127, -8312909, -880468, - 7913477, -8274255, 6350109, 4140349, -4595615, 9135395, -1494649, 1816771, -5989332, -588411, - -2697240, -330712, -19327, 2287070, 1037235, 4788889, 9032316, -2415919, 1191853, -4301410, - -4604205, -3990025, 856846, 3824669, -1393717, -1277753, -1269163, -2768107, 3090229, -949188, - -274878, -2710124, -2229088, -1791001, -2901251, -201863, -188979, -2360085, 1507534, -3633542, - 1290638, -2095944, -448824, 1367947, -2778844, 3386582, -5896990, -1780264, 481036, -1694365, - -3180423, 1559073, -927713, -3470334, 5675800, 3281355, 723702, 1127429, 1084479, 1440962, - -2976412, -1876901, 667867, -1005022, -2085207, 2199023, -44420700, -5025112, 3545496, -3197603, - 7325067, 3455301, -9021579, 1271310, 1475321, -2838974, -7559143, -2727304, -1868311, 2207613, - 506806, -6899865, -2662880, -3650722, -6732361, -5581310, -13164075, -6771016, -7703024, -9242770, - 7359427, -4883378, 2671470, 5607080, -4041564, -6244883, -2465311, -1290638, 1479616, 4230543, - 2388002, -5160403, -6521908, 5188321, 3173981, 4118874, 5669357, 897648, -51540, 2310693, - -298500, -2443837, 1417339, -1286343, -893353, 3423089, 8506183, -2753074, -4292820, 2063732, - -2744484, -180389, 4372277, -8358007, -141734, -2701535, -483184, -98784, 30065, -923418, - 1664300, -2430952, 3040837, 3408057, 1382980, -113817, -40802, -2761664, 35577360, 30983894, - 8422431, 18833432, 5242008, 10838350, -1735167, -1739462, 5304285, 7118909, 3816079, -12324409, - -4052302, 7662222, 8701604, -3210488, -4146791, 1398012, 3644280, 4088809, 646393, -6414534, - -13722421, -5177583, 7548405, -672162, 7756711, -1833951, -2415919, 1556926, -6354404, -3710852, - -3676492, 7069516, -8768176, -6079526, 1629940, 1475321, -2222646, -279173, -2478196, 2647847, - 3652870, 3098819, 7033009, 4069482, 171799, -5708012, 5430986, -500364, 3036542, -2785286, - 2136746, 4264903, -590558, -1129576, -2600603, -3143916, 1997160, 446677, 2800319, -2716567, - 2349347, 5538361, -1095217, -3012920, 3917010, 5022965, -1962800, 2252710, 2576981, 2025077, - 4851166, 4105989, 43228844, 7934952, -8340827, 6899865, 4636417, -8276402, -1754494, 4065187, - 317828, 1230508, -601295, -1818919, -8967892, -8935679, 3972845, 8227010, 8656507, -8609262, - -17175574, 2293513, -234076, -7022272, -8774618, -1675037, 4421669, -3161096, 6549825, 10363756, - -3917010, -3554086, -1398012, -1681480, -2033667, -16170552, 8388071, 7505456, -289910, 4791036, - -4861903, -1679332, -4423817, 6332930, 6914898, 631360, -1730872, -2660732, 3850438, 785979, - -2263448, -4209068, 2147, 3277060, -5209796, -3373697, -2843268, 734439, 1649268, -6695854, - 3322157, 7080254, -5916318, -227633, -1438814, -1166084, -66572, 569083, 384400, -571231, - 1271310, -2104534, -3886946, -4711579, -2031520, -1271310, -2508261, -4494684, -3526168, -1022202, - 3111704, -1462436, -11905649, -7713762, 1028645, 10771778, -10851235, 7722351, 3403762, 1737314, - 2087354, 1909113, 6882685, 11366631, 206158, 3466039, 1151051, -9665824, -8933532, 8680129, - 1065152, -9990094, 5821828, -8523363, 1307818, 10597832, -779537, -2828236, 11931419, 1926293, - 712965, 1039382, 249108, 1133871, -5407364, 3221226, 4741644, 7990787, -6420976, -3079492, - 1120987, 1151051, -3008625, -5654325, 3526168, -2035815, 2435247, 1393717, -2098092, -1801739, - 697932, 3655017, -2858301, -1168231, -732292, 2117419, -5890548, -2654290, 2561948, 614180, - -2068027, -966368, 2304250, -2398739, 642098, -1608465, -523986, 1995012, 450972, 1181116, - -5102421, -3508988, 1213328, -46415712, -42518028, -9571335, -19673098, -17373142, -9764608, -3034395, - -7318625, -8927090, 6073084, 1548336, -2016487, 10052371, 3753802, 12090333, 9455371, 2639258, - 3807489, 4363687, -18592914, 8712341, -1402307, -4017942, -3455301, -11098195, -3380139, -3901978, - 10621454, -3620658, -6296422, -3231963, 1713692, -1464584, -2087354, 2250563, -2774549, -1904818, - 6502581, -6440304, -532576, -2145336, 11675869, 4535486, 4679367, -9058086, 708670, 7885560, - -4176856, 1810329, 53687, 1842541, 62277, 571231, -601295, 4986457, -654983, -1758789, - 3710852, -2731599, 2083059, 4329327, -2070174, -3184718, 1374390, 1589138, -3330747, -1471026, - -6148246, -4975720, 1610613, -667867, -1088774, -221191, 803159, -504659, -3908420, -1947768, - -29186450, 61467424, 38315404, 12524125, 3588445, 4385162, 4174708, 7054484, 5871221, 13153337, - 25769804, 1655710, 2785286, 5828271, 5145371, 6856916, -5007932, 25366076, 17779018, -16529182, - 12184822, 2473901, -2854006, 6238440, 15053860, -14085345, -4224101, 1350767, -12008729, -7889855, - -8622147, 17493402, -912681, -2888366, 2156074, 1144609, -5310727, -13707388, 9498320, 8057359, - -2493229, 4483946, 9745281, -6382322, 5250598, 747324, -2703682, 7990787, 6530498, 1743757, - 775242, 987843, 5237713, 7763154, -57982, -1178969, -195421, -2207613, 5194763, 1305670, - -2272038, -2458869, -2050847, 4232691, 1756642, 9369471, -2881923, 3476776, -2147484, 2486786, - -3850438, -1129576, 1024350, -1836099, -2720862, 433792, 345745, 1380832, 2383707, 66520452, - -23514946, -22883586, 10305774, 2671470, -8808978, -7552700, -12275017, -11950747, -8924942, -7361574, - 10894185, 2677912, 1228361, -6122476, -5544803, -19325206, -120259, -7567733, -13460428, 11252814, - 7310035, 2415919, 6788196, 2052994, -2439542, -4185446, -459562, -3517578, 5540508, 9665824, - -10224170, -3605625, 55835, 5338645, 13138305, 4108136, 17652316, -8970039, 5510443, 14922864, - 8630737, -7232725, -2280628, 1870458, -3837553, 6541235, -1075889, 517544, 9365176, 5347235, - 1432372, 1075889, -313533, -3777424, -191126, 1335735, -4318590, -2196876, 4114579, -1425929, - -8117488, -957778, 167504, -1174674, -8448201, 2409477, 1653562, 2330020, 2272038, -1511829, - -3545496, -944893, -1821066, 7054484, 2849711, -2409477, 1833951, -377957, 1376537, 356482, - 21393232, 40450000, 15990163, 10797548, 12775380, -3745212, 4170413, -11607149, 20233590, 7894150, - 19441170, 5748814, 7473243, -17693118, 22157736, 32654636, 4260608, 21163452, -4140349, -17224966, - -16911434, 15522012, -4887673, 12390981, 2420214, 4954245, -9405978, 9588514, -3212636, -3448859, - 16000901, 11014444, -8181913, 14815490, 1812476, 2697240, -2836826, -11196980, 3266323, 824634, - -6066642, -7054484, 6721624, 9210557, 3189013, -3253438, 4518306, 350040, 9981504, -5918465, - -687195, -9756018, 1316408, 9543417, 6601365, -4432406, 148176, 3354370, -8480413, -650688, - -5729487, -3294240, 1995012, 2284923, 6015102, -6837588, 3156801, -7866233, 884763, 9758166, - 3624953, 1928440, -5978595, 921271, 938450, -10172630, -2497524, 1191853, 1941325, 4041564, - 1846836, -51540, -47493748, -2415919, -10861972, 13595719, -10408853, 11212012, 156766, 9017284, - -1410897, 7797513, -23828478, 7106024, -2959233, -8377334, 3972845, -10239202, 6189048, -10340134, - -5725192, -23029614, 12996571, 27902256, -11085311, -3549791, -3367254, -4415227, 4035122, 5637145, - 7853348, -20478404, 5957120, -12713103, -3874061, -603443, 10368051, 4125316, -5516886, 2323577, - 2046552, 7645042, 7507603, -12768938, -4445291, 1937030, -9584220, -8280697, -1797444, -5896990, - 2330020, 7260642, 749472, 1314260, -1913408, 6771016, 17886392, 10280004, -11336566, 2308545, - 3889093, -5448166, 6161131, 1720134, -7340099, -616328, 7930657, 927713, 7580618, -10447508, - -2673617, 6358699, 77309, -3399467, -7531225, -504659, -4103841, 6083821, -1943473, 3818226, - -2033667, -725850, -87061136, -32411970, 17452600, 6549825, -11345156, 12537010, 9990094, 16492674, - -4123169, -6919193, 14055280, 826781, -9775346, 19591494, -21889300, -28048284, -13524852, -14944339, - 9730248, 14480482, -502511, 3914863, 22308060, 10142565, -22950158, -10048076, -14181982, 4443144, - -21320218, -18199924, -1286343, 3113851, -8257075, -8592082, -13054553, -6436009, -11959336, -11297911, - -4498978, 1260573, -4367982, -410169, -8111046, -953483, -6247030, -13166222, 28898688, 2639258, - 6730214, -11562052, 7554848, -472446, 3798899, -9223442, -517544, -1249836, -8040179, -4657892, - -3732327, 9738838, 6766721, 7687992, 4473209, 6032282, -1460289, 395137, -6968585, -942745, - -450972, -221191, 8806830, 2742337, 5117454, 5778879, -4146791, -9324374, 4020090, -3382287, - -1827509, 4264903, 11327976, -1075889, 45479408, 16823386, 36633924, 5871221, 2420214, -14590004, - 5602785, 22065394, 8231305, 1707250, 14727443, -13086765, -5916318, 12120398, -9148280, 4307852, - 21105470, 6923488, 2888366, 6867653, -3828963, 9326521, -6955700, 390842, 3612068, 1385127, - -5351530, -5645735, 2323577, 21897890, -6983617, 5551245, -19978040, -10537702, 9227737, 23072564, - -17529910, 324270, 11108933, 2965675, 4279935, -14366666, -5001490, -12386686, -21917218, -5613523, - -12141873, -12723841, 10544145, 4383014, 3715147, -7346542, -4518306, -1290638, -21028160, -1767379, - 11976516, -8160438, 9637907, 19756850, 3103114, 13161927, 8667244, 962073, -3760244, 11458973, - -14040248, -429497, -697932, 9171903, 4477504, 8473970, 478889, 9375914, -403727, 2145336, - 1565516, 9972914, 246961, 362925, 8890582, -4430259, 5613523, 2192581, 1660005, -2540473, - 55624120, -12431783, -16709570, 2435247, 13015898, 10069551, 10883447, -3365107, 11716671, 3309272, - -13290776, -27457726, 18494130, 4614943, 13460428, 7591355, -6942815, 2931315, -10114648, -18047452, - 18762564, -11821897, -21818434, 2093797, -3328600, 2476049, -1900523, -2486786, -5317170, -9012989, - 6816113, 14669461, -21257940, 20841328, -17937930, -24043226, 2617783, 6148246, -13131863, 10353019, - -1597728, 6487548, -11263552, -5959267, 19986630, 7838316, 20235738, 5091684, 1821066, 6143951, - 253403, 558346, 10750303, -1093069, 2156074, -9494025, -6034429, -5692979, 7666517, -7417409, - -5866926, 11697343, -30065, 13121125, 2347200, -9871982, 16228534, 12212740, -693637, 7907035, - -7827578, -13559212, 5478231, -5070209, -9322227, 670015, 8826158, 11392401, -4030827, 3446711, - 5927055, -925565, 2729452, -11731703, 4773856, 3856881, -5448166, 46471548, 56390772, -8557722, - 244813, -28321014, -3317862, -20637318, -15614354, -4849018, -10707353, 16101832, -90194, 12515535, - -26626650, 22157736, -16804060, 22625888, 706522, 17989470, -6554120, 22645216, 7318625, -10617159, - 4662187, -15902116, 10535555, -8811125, 25284472, 7675107, 16589311, -27635968, -15979426, -6693707, - -14147622, -5772436, -9706626, 1017907, 34213708, -15734613, 17162690, 29186450, 4039417, 12902082, - 92342, -6395207, -13647259, -10228465, 1367947, -7346542, 17471926, -11246372, 7971460, 21356724, - -2869038, -1627793, -1773822, 17491254, 18698140, 6008659, -8785356, -7509751, -4670777, 7468948, - -17263622, 3360812, -3150359, -4602058, 178241, 11484743, 949188, 16209207, 14654428, 3051574, - 3470334, -6856916, -410169, 16662326, -2192581, 1118839, 6874095, -8682276, 111669, -9957882, - -11050951, 1739462, 1533303, -2059437, -43862352, -39612484, 17740362, -5392332, 21908628, -12524125, - -10037339, -14918569, -11937862, -5753109, -34561600, -12887049, 13563507, 18539226, 7902740, -24350318, - -6682969, -11755325, 10468983, 34896608, 19816980, 8435316, 1582696, 2534031, 2035815, 6038724, - 18333068, 1359357, 4988605, -10415296, 1080184, -14879914, 6019397, 7127498, 13342316, 1610613, - -8701604, -4578435, 17521320, -8108899, 6781754, 3463891, 6530498, 21992380, -12000139, -18706730, - 7286412, 15665893, 4440996, 15659451, 19142670, 9053791, 13363791, 4999342, 3109556, 10322954, - 31726924, -17532056, 285615, 5130339, 3096672, -13602161, -2093797, 10428181, 135291, -12197707, - 5158256, 22789096, -18242874, 6027987, -17257178, 10146860, 7226283, 2791729, 1007170, -8308614, - -7934952, 16035260, 9000104, 3264175, -4567698, 11237782, -1271310, 32212, -7475391, 8284992, - 3425237, -88409752, -31151398, -1773822, -9062381, -21642340, 13131863, 18041010, 29858612, 10097468, - 18689550, -17349520, -37276020, 17467632, -8978629, 1136019, -20175608, 19836306, -12013024, -725850, - 18015240, -50343460, 4642860, 26493506, -49289044, -12768938, -17617956, 2572686, 1586990, 12199855, - -13883482, 16103980, 2022930, -25527138, -13501230, 3236258, -3547643, -12549894, 10965052, 30096984, - 6137509, 8461086, -5055177, -7258495, 17190606, 3369402, -9025874, -42777876, -7106024, 5600638, - -22048214, 10522670, 8529805, 1919850, -17104708, -14882062, -18221398, 38738456, 9957882, -5708012, - 7187628, -32613834, 3569118, -15178414, -17918604, 17235704, -3199751, 384400, -11407433, -40853728, - 5239860, 12625056, 6912750, -2834679, 23965918, 968515, -10468983, -1466731, -16230681, 25295210, - 13391708, 7189776, -4460324, 1866163, 7793218, -7327214, 2864743, 3618510, 1060857, 94128504, - 23607288, 24365350, 20544976, -5903433, 745177, 96812856, 27867896, -7889855, 59017144, -33021856, - 24595130, 5302137, 15017353, 24270860, -7505456, -16722455, 18169860, -3173981, -58437324, 15077483, - 15122580, 12513387, 27788438, 17770428, 18148384, -16292958, 3620658, -15721728, -8291435, 17482664, - 5750961, -33917356, -20349556, -28394028, -42528768, -6326487, 8798241, 20974472, 17965848, 15655156, - 12994424, -6094559, 22293028, 12592844, -27036820, -10144713, 7273527, 20620138, 545461, 4627828, - 35974648, -6197638, -2972117, -9062381, -1799591, 18549964, -15547782, 523986, -22018150, -19383188, - -12491912, 23274428, 31722628, -8905615, 2662880, -5815386, -19516332, -13022341, 5218386, -22447646, - -5920613, -5781026, -14568529, 40587440, 8965744, 13786845, 11890617, -850404, 204011, 7284265, - 2276333, 13000866, 8151848, 562641, -1108102, 96125664, 56098716, 4492536, 35465692, 27844272, - 7406671, 41897404, 11265699, 285615, -13303661, -9133248, -27455578, -72924248, -5854041, 7550553, - -25445534, -13849122, -3227668, 51627656, 16361678, -12869870, 124554, 3974992, -7733089, 22009560, - -4035122, -12887049, -9468255, -12124693, 7700877, -18013092, -45417132, 1436667, -23892904, -36013300, - 6753836, 16125455, 22419730, 13254269, 19801946, -13348758, -39170100, -24891482, -35272420, 14106820, - 32319628, 27348204, 17033840, 33062658, 453119, 20817706, 43946104, -36271000, 6231998, -16146930, - -212601, 13157632, 12837657, 21968758, -2325725, -44424996, -35021164, 7874823, -10172630, -12326556, - -8931384, -9369471, -31080530, 3141769, 20426864, -1797444, 15472620, -9096741, -1196148, -1290638, - 7548405, 30900142, 21105470, 19005230, -17978734, 1466731, -10967199, 1700807, -28585154, 6124624, - 4275640, 3526168, -964220, -2987150, -8512625, 7511898, 23478438, -47983376, 6094559, -36777804, - 16531329, -70044472, -1728724, -23381802, -35867272, 64276332, 36633924, -23229330, -57773752, -14888504, - -20987358, -50861004, 39528732, 1859721, -34855808, -13265006, 20362440, -33386928, -22417582, -17671642, - -39140036, -15337328, -682900, -32042604, -28703266, 40160092, -15000173, -12912819, -3637837, -9337259, - 34475704, -38405596, -17718888, 7735236, -10071698, -360777, -8572755, 19509888, -36054104, 12534862, - -57690000, 5538361, -16460462, -23405424, 60694332, 5950677, -22374632, 11205570, 12708808, -49327700, - 33998960, -8660802, -10518375, -4090956, 19443316, -8486855, 876173, -23843510, 12762495, 15483357, - 27292370, -23987392, -60462404, 41790032, -4849018, 17001628, 20648056, -12957916, 11899207, 30764850, - -39893804, 1685775, -14083198, -4801774, -41422812, 13647259, -6485401, 1185411, -1095217, 4992900, - -7030862, -6753836, 11317239, -10982231, 8169028, 1909113, -7857643, -91905856, -50298364, 10819023, - -31862214, 3317862, -22870700, -12764643, -33814276, -24296630, 17914308, 50667728, 54470924, 7952132, - 38603168, -26882200, 67005784, 48142288, -38281044, -35581656, 11574937, 10333691, 56717192, 19743964, - 36515812, -13597866, 14970109, -7937100, -5467494, -12543452, 53053584, 22853520, 50837380, 45021996, - 9326521, -3347927, -21685290, 21391084, -2091649, -46641196, -30118458, -9403831, -23227184, -5972152, - -23890756, -22101902, 15040975, -7161858, -14931454, 37718404, 45773612, -26710402, -8179765, 61042224, - 25690346, -42829412, -40928892, -15618649, 16108275, -2647847, -7209103, -30678952, 25832080, 7127498, - -9270687, 6350109, 7456063, -37879464, -15893526, 2854006, -13544179, -18747532, -19035296, 49787260, - -39073464, -36127116, 15028091, 25211458, 37368364, -19400368, -5521181, 2879776, -16527034, 16954384, - -2188286, 12560632, -10634339, -5252745, 3882651, 4466766, -5918465, -6247030, -42950, -7483981, - -34930968, -50813760, -44012676, -180389, -34673272, -44165148, 11248519, -3629247, -61976380, 44313324, - 7718056, -3588445, 21848498, 68199784, 64879776, 28194312, -79729624, 29725468, 21000242, -77846280, - -1202591, -37505800, -18395344, 40325448, -47285444, 27543626, -109522, -7971460, -16962974, 8244190, - -4020090, 13655849, -9176198, -41635412, 40475772, 19333796, 48496624, -4926328, -16458315, -23364622, - 19591494, -21045340, 57299160, 12208445, 34389804, -44581760, 35538708, 1507534, 12537010, -28898688, - 9680856, -34346852, -5506148, -35238060, 14394583, 24573656, -47019156, 2020782, -38749196, 18229988, - 22797686, 22374632, -3103114, -66256312, 83752, 17637284, -5765994, 29611652, -63541892, 16393890, - -26459146, 8632884, -22426172, 4728759, 16376710, -7039452, -274878, -6798933, -8291435, 2645700, - -17149804, 21629456, 4814659, -438087, -27318140, -2420214, 2836826, -1846836, 11411728, -11667279, - 2587718, -1138166, -6051609, 95490008, 115833120, 48451528, 40387724, -66780300, 64233384, 93258776, - -102039832, 12210592, 66179004, 11521250, -121708632, -12150462, -66071628, 21328808, 24206436, -30764850, - -12045236, 22194244, -55886116, -4462471, -21897890, -27457726, 10900627, -42384884, 45653356, 32545114, - 59042916, -29250874, 9646497, -6378027, -24088324, 74549896, -1479616, -34316788, -16228534, 16103980, - -16080358, -19529216, -22932978, 37920268, 14061723, 52718576, -3768834, 19323058, 69170448, -43920336, - 9148280, -29828548, 54872504, -21588654, 25645250, 10879152, -2239826, -20828444, -39172248, -26474178, - 10969346, 49604724, -46757160, 41848012, 49456548, 24865714, 57805964, -28308130, -23089744, 37673304, - -6607807, -7043747, -53470196, -3410204, -44132936, 9019431, 55718612, 27341762, 13962939, 25546466, - 15129022, -24017458, -10913512, -41916732, 47259672, 1945620, -18934364, 12474733, 4151086, -22054658, - 11394548, -3199751, 13460428, -2321430, 20484846, 9814000, -44571024, -151485648, -63621352, -108920368, - -58911920, -46544560, 25063282, -69913480, -71567040, -34168612, -95614560, -31035434, 71902048, -2177549, - 2733747, -19449760, -17040282, -9012989, 6416681, -1148904, -64087356, -10144713, -12768938, 92721904, - -12161200, 82441896, 6541235, -22166326, 21294448, 67875512, -3672197, 708670, -27474906, -7975755, - -28829968, 16138340, -12270722, -24388972, 12165495, -32948842, 26628798, 27204322, 5119601, 59435904, - -27064736, 30296700, -25312390, 33436320, 22460532, 62618476, 8415988, -25516400, 33513630, -4290673, - -21131240, 79527760, -6083821, -4797479, 45657648, 14128295, 61523260, -48037060, -47029892, -7142531, - -20456930, -6463926, -75995152, -17248588, 26175678, -10292889, -32785632, -53362820, 3478924, 16312286, - -26819924, -25559350, -46533824, -16533477, 19593640, 20336670, 40980432, -6592775, -3895535, -1464584, - 13606456, 16408923, 2686502, 26027502, 7071664, 2798171, -3586298, -2482491, 18556406, -7965017, - 18341658, 20746840, -968515, 6156836, }, + 5362267, -3098819, 1329292, -1745904, 399432, -1284195, -347892, 55835, 2576981, -1692217, + 1123134, -2744484, 2025077, -3098819, -4211216, -3702262, 850404, -397284, 579821, 79457, + -1915555, 1105954, 1917703, -1084479, 1535451, -242666, -670015, -1357210, -244813, 399432, + 1078037, -785979, 1612760, -654983, 1028645, 1501091, -1097364, -1056562, 68719, -1110249, + 298500, 27917, -508954, 1103807, 180389, -513249, 3689377, -3813931, -676457, -818191, + -858993, -294205, -38655, -743029, -500364, -15032, 180389, -549756, 328565, -1198296, + -326418, -212601, 736587, -4054449, -358630, 811749, -362925, -513249, 373662, 53687, + 307090, 1833951, -876173, -616328, -970663, -206158, 569083, 811749, -831076, -661425, + 1011465, -932008, -1329292, -171799, -345745, 448824, -380105, -408022, 244813, 392990, + -811749, 251256, 337155, -12947179, -8793946, -3573413, -4080219, -2280628, -2134599, -2022930, + -914828, -2439542, -1921998, -839666, -1498944, -197569, -539018, -1307818, -1767379, -1979980, + -779537, -1148904, -1995012, -261993, -2497524, 6442, -188979, -347892, -1511829, -261993, + -1142461, 8590, -1475321, -942745, 508954, -1086627, 191126, -2521146, -463856, 1228361, + 753767, -47245, -367220, -725850, 206158, 227633, 1168231, -702227, -115964, -362925, + -17038136, -910533, 2173254, -19327, 637803, -100932, 0, -1346472, 1436667, 590558, + 1733019, 1264868, 3569118, 2652142, 186831, -1398012, -831076, -315680, 654983, -461709, + -3180423, -2826089, -1488206, -420907, 122407, 420907, 571231, -94489, 83752, 367220, + -678605, -70867, -105227, -1930588, 1131724, 491774, -229781, 0, -760209, -1063004, + 659278, 279173, -721555, 697932, 562641, 846109, -382252, 19097572, 13387413, 2647847, + 5173288, 1090922, 1700807, 4247723, 2164664, 689342, 2529736, 1052267, -1133871, -536871, + 869731, 1492501, -2600603, -326418, -1567663, 3463891, 1698660, 901943, 1700807, 895501, + 874026, 64425, -180389, -824634, 1335735, 1655710, 1378685, 1760937, 2089502, 1279900, + 3058017, 719407, -184684, 1118839, 193274, -508954, -253403, -450972, -616328, 42950, + 1415192, 369367, 225486, 858993, 28509992, 12066711, 3697967, 3292093, 2368675, 1402307, + 500364, 73014, 3161096, 594853, 1771674, 2319282, 1284195, -201863, -826781, 4939213, + -408022, -2755222, -1518271, 1202591, 109522, 2628520, 914828, 296353, -448824, -1271310, + -309238, -599148, 1209033, -231928, 526134, 88047, 225486, -667867, 989990, 3427384, + 2226941, 2267743, 2110977, 1681480, 977105, 642098, 435939, 1105954, -910533, 665720, + -408022, 9382356, -9887015, -2985002, -4271345, -3687230, -2016487, -590558, 1367947, -1370095, + 139586, -3652870, 1241246, -1327145, -3324305, 882616, -2379412, -3158949, -2274185, 3030100, + 2265595, -1060857, 1144609, -2091649, 798864, -3809636, 182536, 633508, -665720, -889058, + 779537, -3015067, -1389422, 395137, -1075889, -886911, -708670, 251256, 298500, 1526861, + 66572, 2630668, -1041530, -717260, -852551, -1294933, -429497, -646393, 341450, -1116692, + -1754494, -266288, -33844344, -17119740, -6178311, -4795331, -5280663, -3268470, -4569845, -2929168, + -4973572, -874026, -2269890, -551903, 184684, -2029372, -605590, 343597, -17180, -3098819, + -2115272, -1391569, 249108, -4185446, 371515, -1887638, -3786014, 341450, -98784, 279173, + -143881, -1301375, -1063004, 62277, -337155, -27917, -1451699, 64425, 324270, 1148904, + 373662, -1434519, 775242, -1434519, 927713, -2480344, -1760937, 395137, -1440962, 88047, + -581968, -1988570, -652835, -20029580, 10522670, 4372277, 1664300, 2675765, 534723, 693637, + 2411624, 2628520, 1473174, 1739462, -1314260, -603443, -2068027, 2523293, 566936, 429497, + 3519726, 81604, -2304250, 4112431, -2714419, 302795, 3459596, -1065152, 934155, 412317, + -42950, -1750199, -373662, 916976, 1024350, 137439, -575526, 38655, -1174674, 3880503, + 371515, -90194, -1501091, -803159, -955630, -959925, 2153926, 1999307, -485331, 171799, + -94489, 584116, 186831, -161061, -377957, 455267, 356482, -618475, -513249, 83752, + 504659, 30129196, 12751758, 3451006, 6869800, 4041564, 1685775, 3040837, 2555506, 38655, + 1859721, 3019362, 661425, 40802, 1498944, 4241280, -1451699, -736587, -3354370, 882616, + 3809636, 1655710, 152471, -2130304, -1187559, -895501, 4015795, 1290638, 2089502, 1217623, + -1939178, -3051574, 3481071, 1958505, -2171106, -989990, 3382287, 2903398, -165356, 749472, + -373662, 1533303, 938450, -296353, 676457, -1163936, -577673, 1870458, -983548, -710817, + 1945620, 1711545, 916976, 371515, 395137, 450972, 1385127, 798864, 2192581, 35654672, + 7681549, 5985037, 2576981, 2774549, 1112397, 2854006, 3272765, 5325760, 3201898, -947040, + 4121021, -751619, 1084479, 977105, 3483219, 5239860, 3309272, -848256, 5768141, -1052267, + -629213, -3004330, 796716, -858993, 923418, 1612760, -1782411, -2385854, -1037235, 526134, + -1979980, -592706, 869731, 1340030, -2317135, -1906966, -837519, 801011, -36507, 654983, + -852551, 32212, -581968, -725850, 914828, -1273458, 1245541, -1370095, -511101, -1030792, + 219043, -341450, 1404454, 685047, -124554, 1999307, 663572, 4136054, -15805480, -5053029, + -5656472, -3622805, 962073, -886911, -3401614, 1949915, 128849, 2394444, -281320, 261993, + -3708704, -2592013, -1730872, -2669322, 214748, -2841121, -5523328, 1101659, 631360, -2544768, + -575526, -2308545, 472446, 790274, -466004, -5671505, -1625645, 369367, -650688, 493921, + 1509681, -4037269, -1230508, -2521146, 1292785, -307090, -236223, 2652142, -2703682, -176094, + 805306, -337155, -906238, 1284195, 654983, -1604170, -1992865, -3133179, -502511, -2394444, + -1967095, -1022202, -1370095, -798864, -397284, -734439, -1236951, -1623498, -955630, 584116, + 1073742, -191126, -37052684, -12517682, -7614977, -1879048, -3964255, -103079, -2164664, -2705830, + -3438121, 4254165, 53687, -1567663, -442382, -6103149, -3543348, -2952790, 4973572, -4179003, + -8974334, 788127, 1050120, 749472, -3330747, -820339, 1836099, -4056597, -470299, -4140349, + -1297080, 2390149, -2059437, 622770, 4516158, 547608, -989990, -1056562, 1191853, 1464584, + 1097364, -1309965, -298500, 1520418, 1964948, 1262720, 633508, -3796751, 682900, -135291, + -1995012, -676457, 332860, -470299, -2016487, -1256278, -2091649, -539018, 57982, 337155, + -356482, -1380832, -304943, -1063004, -139586, -1140314, -53687, -24631638, 5761699, 298500, + -2924873, 4337917, -2710124, -2216203, 1183264, -4213363, -2405182, -947040, 1797444, -3337190, + 4548371, 34360, -45097, 2027225, 2160369, 3216931, -274878, 4453881, 6562710, 4625680, + 1559073, 3949223, -1226213, 2486786, -2881923, -3077344, -1185411, 313533, 2042257, -1644973, + -2763812, -1591285, 8590, 1698660, -2669322, 1926293, 758062, 1473174, -622770, -2559801, + -3298535, -4069482, 1129576, -2106682, 1172526, -4310000, -1155346, 1861868, -2609193, 390842, + -1810329, 1236951, -528281, 1200443, 373662, -807454, 10737, -1763084, 3279208, 1299228, + 3034395, 1219771, 16460462, 27092654, 7902740, 7024419, 9824738, 7911330, 1599875, 6270653, + 5641440, 3030100, 11907797, 2808909, 2059437, 5119601, 4801774, 2488934, 2158221, 1236951, + 2029372, -1541893, 6045167, -1612760, 637803, -1889786, 3852586, 182536, -916976, 3133179, + 3801046, 1314260, 5025112, -3517578, -5748814, -1314260, -272730, 1260573, -335007, 2503966, + -2257005, 2280628, 5068062, 2151779, -4380867, -921271, 2340757, 889058, -2108829, 3148211, + 1307818, 1866163, 2138894, 2813204, 994285, -781684, 760209, -2536178, -597000, 2375117, + 2241973, -1221918, 38655, 586263, -1002875, 343597, 1793149, 62337156, 6390912, -571231, + 3837553, -62277, 5308580, 115964, 1417339, 730144, 5596343, 2675765, -2323577, 1937030, + 2675765, 1496796, -3403762, -6990060, -3244848, -2905546, 1236951, -4271345, -770947, -221191, + 1148904, 7801808, 4292820, 1513976, 3096672, -4769561, -304943, -2473901, -977105, -1937030, + 2901251, -1058710, 4861903, -2183991, -884763, -2443837, -1120987, -3554086, -1685775, 884763, + 783832, -133144, 40802, -1924145, 1123134, 3412352, 272730, -1750199, 2106682, -2911988, + 1299228, 1361505, -289910, -865436, -627065, -75162, -551903, 206158, 2018635, -167504, + -1840394, 444529, -18126910, -21575768, -4009352, -1204738, -882616, -3433826, -1417339, 6541235, + 3874061, 1374390, 1786706, -2862596, -571231, 4907000, -1810329, 7992934, -6212670, -1702955, + 6519761, -1264868, -732292, -3798899, 4466766, 4932770, 90194, 4861903, -1775969, 2149631, + -103079, -2735894, -431644, -2166811, -904091, -1410897, 2686502, -1992865, -476741, -3060164, + 2059437, -1595580, 4498978, -7123204, 2982855, 2465311, -4301410, 77309, -2845416, 749472, + -3238405, 1009317, 1340030, -4118874, -627065, -1509681, -6116034, -3554086, -1702955, -3053722, + -667867, -528281, 324270, -2501819, 341450, -4818954, 1333587, 569083, -1666447, 581968, + -1662152, -463856, -1084479, -521839, -15988016, -9083856, -12416750, -6292127, -8312909, -880468, + 7913477, -8274255, 6350109, 4140349, -4595615, 9135395, -1494649, 1816771, -5989332, -588411, + -2697240, -330712, -19327, 2287070, 1037235, 4788889, 9032316, -2415919, 1191853, -4301410, + -4604205, -3990025, 856846, 3824669, -1393717, -1277753, -1269163, -2768107, 3090229, -949188, + -274878, -2710124, -2229088, -1791001, -2901251, -201863, -188979, -2360085, 1507534, -3633542, + 1290638, -2095944, -448824, 1367947, -2778844, 3386582, -5896990, -1780264, 481036, -1694365, + -3180423, 1559073, -927713, -3470334, 5675800, 3281355, 723702, 1127429, 1084479, 1440962, + -2976412, -1876901, 667867, -1005022, -2085207, 2199023, -44420700, -5025112, 3545496, -3197603, + 7325067, 3455301, -9021579, 1271310, 1475321, -2838974, -7559143, -2727304, -1868311, 2207613, + 506806, -6899865, -2662880, -3650722, -6732361, -5581310, -13164075, -6771016, -7703024, -9242770, + 7359427, -4883378, 2671470, 5607080, -4041564, -6244883, -2465311, -1290638, 1479616, 4230543, + 2388002, -5160403, -6521908, 5188321, 3173981, 4118874, 5669357, 897648, -51540, 2310693, + -298500, -2443837, 1417339, -1286343, -893353, 3423089, 8506183, -2753074, -4292820, 2063732, + -2744484, -180389, 4372277, -8358007, -141734, -2701535, -483184, -98784, 30065, -923418, + 1664300, -2430952, 3040837, 3408057, 1382980, -113817, -40802, -2761664, 35577360, 30983894, + 8422431, 18833432, 5242008, 10838350, -1735167, -1739462, 5304285, 7118909, 3816079, -12324409, + -4052302, 7662222, 8701604, -3210488, -4146791, 1398012, 3644280, 4088809, 646393, -6414534, + -13722421, -5177583, 7548405, -672162, 7756711, -1833951, -2415919, 1556926, -6354404, -3710852, + -3676492, 7069516, -8768176, -6079526, 1629940, 1475321, -2222646, -279173, -2478196, 2647847, + 3652870, 3098819, 7033009, 4069482, 171799, -5708012, 5430986, -500364, 3036542, -2785286, + 2136746, 4264903, -590558, -1129576, -2600603, -3143916, 1997160, 446677, 2800319, -2716567, + 2349347, 5538361, -1095217, -3012920, 3917010, 5022965, -1962800, 2252710, 2576981, 2025077, + 4851166, 4105989, 43228844, 7934952, -8340827, 6899865, 4636417, -8276402, -1754494, 4065187, + 317828, 1230508, -601295, -1818919, -8967892, -8935679, 3972845, 8227010, 8656507, -8609262, + -17175574, 2293513, -234076, -7022272, -8774618, -1675037, 4421669, -3161096, 6549825, 10363756, + -3917010, -3554086, -1398012, -1681480, -2033667, -16170552, 8388071, 7505456, -289910, 4791036, + -4861903, -1679332, -4423817, 6332930, 6914898, 631360, -1730872, -2660732, 3850438, 785979, + -2263448, -4209068, 2147, 3277060, -5209796, -3373697, -2843268, 734439, 1649268, -6695854, + 3322157, 7080254, -5916318, -227633, -1438814, -1166084, -66572, 569083, 384400, -571231, + 1271310, -2104534, -3886946, -4711579, -2031520, -1271310, -2508261, -4494684, -3526168, -1022202, + 3111704, -1462436, -11905649, -7713762, 1028645, 10771778, -10851235, 7722351, 3403762, 1737314, + 2087354, 1909113, 6882685, 11366631, 206158, 3466039, 1151051, -9665824, -8933532, 8680129, + 1065152, -9990094, 5821828, -8523363, 1307818, 10597832, -779537, -2828236, 11931419, 1926293, + 712965, 1039382, 249108, 1133871, -5407364, 3221226, 4741644, 7990787, -6420976, -3079492, + 1120987, 1151051, -3008625, -5654325, 3526168, -2035815, 2435247, 1393717, -2098092, -1801739, + 697932, 3655017, -2858301, -1168231, -732292, 2117419, -5890548, -2654290, 2561948, 614180, + -2068027, -966368, 2304250, -2398739, 642098, -1608465, -523986, 1995012, 450972, 1181116, + -5102421, -3508988, 1213328, -46415712, -42518028, -9571335, -19673098, -17373142, -9764608, -3034395, + -7318625, -8927090, 6073084, 1548336, -2016487, 10052371, 3753802, 12090333, 9455371, 2639258, + 3807489, 4363687, -18592914, 8712341, -1402307, -4017942, -3455301, -11098195, -3380139, -3901978, + 10621454, -3620658, -6296422, -3231963, 1713692, -1464584, -2087354, 2250563, -2774549, -1904818, + 6502581, -6440304, -532576, -2145336, 11675869, 4535486, 4679367, -9058086, 708670, 7885560, + -4176856, 1810329, 53687, 1842541, 62277, 571231, -601295, 4986457, -654983, -1758789, + 3710852, -2731599, 2083059, 4329327, -2070174, -3184718, 1374390, 1589138, -3330747, -1471026, + -6148246, -4975720, 1610613, -667867, -1088774, -221191, 803159, -504659, -3908420, -1947768, + -29186450, 61467424, 38315404, 12524125, 3588445, 4385162, 4174708, 7054484, 5871221, 13153337, + 25769804, 1655710, 2785286, 5828271, 5145371, 6856916, -5007932, 25366076, 17779018, -16529182, + 12184822, 2473901, -2854006, 6238440, 15053860, -14085345, -4224101, 1350767, -12008729, -7889855, + -8622147, 17493402, -912681, -2888366, 2156074, 1144609, -5310727, -13707388, 9498320, 8057359, + -2493229, 4483946, 9745281, -6382322, 5250598, 747324, -2703682, 7990787, 6530498, 1743757, + 775242, 987843, 5237713, 7763154, -57982, -1178969, -195421, -2207613, 5194763, 1305670, + -2272038, -2458869, -2050847, 4232691, 1756642, 9369471, -2881923, 3476776, -2147484, 2486786, + -3850438, -1129576, 1024350, -1836099, -2720862, 433792, 345745, 1380832, 2383707, 66520452, + -23514946, -22883586, 10305774, 2671470, -8808978, -7552700, -12275017, -11950747, -8924942, -7361574, + 10894185, 2677912, 1228361, -6122476, -5544803, -19325206, -120259, -7567733, -13460428, 11252814, + 7310035, 2415919, 6788196, 2052994, -2439542, -4185446, -459562, -3517578, 5540508, 9665824, + -10224170, -3605625, 55835, 5338645, 13138305, 4108136, 17652316, -8970039, 5510443, 14922864, + 8630737, -7232725, -2280628, 1870458, -3837553, 6541235, -1075889, 517544, 9365176, 5347235, + 1432372, 1075889, -313533, -3777424, -191126, 1335735, -4318590, -2196876, 4114579, -1425929, + -8117488, -957778, 167504, -1174674, -8448201, 2409477, 1653562, 2330020, 2272038, -1511829, + -3545496, -944893, -1821066, 7054484, 2849711, -2409477, 1833951, -377957, 1376537, 356482, + 21393232, 40450000, 15990163, 10797548, 12775380, -3745212, 4170413, -11607149, 20233590, 7894150, + 19441170, 5748814, 7473243, -17693118, 22157736, 32654636, 4260608, 21163452, -4140349, -17224966, + -16911434, 15522012, -4887673, 12390981, 2420214, 4954245, -9405978, 9588514, -3212636, -3448859, + 16000901, 11014444, -8181913, 14815490, 1812476, 2697240, -2836826, -11196980, 3266323, 824634, + -6066642, -7054484, 6721624, 9210557, 3189013, -3253438, 4518306, 350040, 9981504, -5918465, + -687195, -9756018, 1316408, 9543417, 6601365, -4432406, 148176, 3354370, -8480413, -650688, + -5729487, -3294240, 1995012, 2284923, 6015102, -6837588, 3156801, -7866233, 884763, 9758166, + 3624953, 1928440, -5978595, 921271, 938450, -10172630, -2497524, 1191853, 1941325, 4041564, + 1846836, -51540, -47493748, -2415919, -10861972, 13595719, -10408853, 11212012, 156766, 9017284, + -1410897, 7797513, -23828478, 7106024, -2959233, -8377334, 3972845, -10239202, 6189048, -10340134, + -5725192, -23029614, 12996571, 27902256, -11085311, -3549791, -3367254, -4415227, 4035122, 5637145, + 7853348, -20478404, 5957120, -12713103, -3874061, -603443, 10368051, 4125316, -5516886, 2323577, + 2046552, 7645042, 7507603, -12768938, -4445291, 1937030, -9584220, -8280697, -1797444, -5896990, + 2330020, 7260642, 749472, 1314260, -1913408, 6771016, 17886392, 10280004, -11336566, 2308545, + 3889093, -5448166, 6161131, 1720134, -7340099, -616328, 7930657, 927713, 7580618, -10447508, + -2673617, 6358699, 77309, -3399467, -7531225, -504659, -4103841, 6083821, -1943473, 3818226, + -2033667, -725850, -87061136, -32411970, 17452600, 6549825, -11345156, 12537010, 9990094, 16492674, + -4123169, -6919193, 14055280, 826781, -9775346, 19591494, -21889300, -28048284, -13524852, -14944339, + 9730248, 14480482, -502511, 3914863, 22308060, 10142565, -22950158, -10048076, -14181982, 4443144, + -21320218, -18199924, -1286343, 3113851, -8257075, -8592082, -13054553, -6436009, -11959336, -11297911, + -4498978, 1260573, -4367982, -410169, -8111046, -953483, -6247030, -13166222, 28898688, 2639258, + 6730214, -11562052, 7554848, -472446, 3798899, -9223442, -517544, -1249836, -8040179, -4657892, + -3732327, 9738838, 6766721, 7687992, 4473209, 6032282, -1460289, 395137, -6968585, -942745, + -450972, -221191, 8806830, 2742337, 5117454, 5778879, -4146791, -9324374, 4020090, -3382287, + -1827509, 4264903, 11327976, -1075889, 45479408, 16823386, 36633924, 5871221, 2420214, -14590004, + 5602785, 22065394, 8231305, 1707250, 14727443, -13086765, -5916318, 12120398, -9148280, 4307852, + 21105470, 6923488, 2888366, 6867653, -3828963, 9326521, -6955700, 390842, 3612068, 1385127, + -5351530, -5645735, 2323577, 21897890, -6983617, 5551245, -19978040, -10537702, 9227737, 23072564, + -17529910, 324270, 11108933, 2965675, 4279935, -14366666, -5001490, -12386686, -21917218, -5613523, + -12141873, -12723841, 10544145, 4383014, 3715147, -7346542, -4518306, -1290638, -21028160, -1767379, + 11976516, -8160438, 9637907, 19756850, 3103114, 13161927, 8667244, 962073, -3760244, 11458973, + -14040248, -429497, -697932, 9171903, 4477504, 8473970, 478889, 9375914, -403727, 2145336, + 1565516, 9972914, 246961, 362925, 8890582, -4430259, 5613523, 2192581, 1660005, -2540473, + 55624120, -12431783, -16709570, 2435247, 13015898, 10069551, 10883447, -3365107, 11716671, 3309272, + -13290776, -27457726, 18494130, 4614943, 13460428, 7591355, -6942815, 2931315, -10114648, -18047452, + 18762564, -11821897, -21818434, 2093797, -3328600, 2476049, -1900523, -2486786, -5317170, -9012989, + 6816113, 14669461, -21257940, 20841328, -17937930, -24043226, 2617783, 6148246, -13131863, 10353019, + -1597728, 6487548, -11263552, -5959267, 19986630, 7838316, 20235738, 5091684, 1821066, 6143951, + 253403, 558346, 10750303, -1093069, 2156074, -9494025, -6034429, -5692979, 7666517, -7417409, + -5866926, 11697343, -30065, 13121125, 2347200, -9871982, 16228534, 12212740, -693637, 7907035, + -7827578, -13559212, 5478231, -5070209, -9322227, 670015, 8826158, 11392401, -4030827, 3446711, + 5927055, -925565, 2729452, -11731703, 4773856, 3856881, -5448166, 46471548, 56390772, -8557722, + 244813, -28321014, -3317862, -20637318, -15614354, -4849018, -10707353, 16101832, -90194, 12515535, + -26626650, 22157736, -16804060, 22625888, 706522, 17989470, -6554120, 22645216, 7318625, -10617159, + 4662187, -15902116, 10535555, -8811125, 25284472, 7675107, 16589311, -27635968, -15979426, -6693707, + -14147622, -5772436, -9706626, 1017907, 34213708, -15734613, 17162690, 29186450, 4039417, 12902082, + 92342, -6395207, -13647259, -10228465, 1367947, -7346542, 17471926, -11246372, 7971460, 21356724, + -2869038, -1627793, -1773822, 17491254, 18698140, 6008659, -8785356, -7509751, -4670777, 7468948, + -17263622, 3360812, -3150359, -4602058, 178241, 11484743, 949188, 16209207, 14654428, 3051574, + 3470334, -6856916, -410169, 16662326, -2192581, 1118839, 6874095, -8682276, 111669, -9957882, + -11050951, 1739462, 1533303, -2059437, -43862352, -39612484, 17740362, -5392332, 21908628, -12524125, + -10037339, -14918569, -11937862, -5753109, -34561600, -12887049, 13563507, 18539226, 7902740, -24350318, + -6682969, -11755325, 10468983, 34896608, 19816980, 8435316, 1582696, 2534031, 2035815, 6038724, + 18333068, 1359357, 4988605, -10415296, 1080184, -14879914, 6019397, 7127498, 13342316, 1610613, + -8701604, -4578435, 17521320, -8108899, 6781754, 3463891, 6530498, 21992380, -12000139, -18706730, + 7286412, 15665893, 4440996, 15659451, 19142670, 9053791, 13363791, 4999342, 3109556, 10322954, + 31726924, -17532056, 285615, 5130339, 3096672, -13602161, -2093797, 10428181, 135291, -12197707, + 5158256, 22789096, -18242874, 6027987, -17257178, 10146860, 7226283, 2791729, 1007170, -8308614, + -7934952, 16035260, 9000104, 3264175, -4567698, 11237782, -1271310, 32212, -7475391, 8284992, + 3425237, -88409752, -31151398, -1773822, -9062381, -21642340, 13131863, 18041010, 29858612, 10097468, + 18689550, -17349520, -37276020, 17467632, -8978629, 1136019, -20175608, 19836306, -12013024, -725850, + 18015240, -50343460, 4642860, 26493506, -49289044, -12768938, -17617956, 2572686, 1586990, 12199855, + -13883482, 16103980, 2022930, -25527138, -13501230, 3236258, -3547643, -12549894, 10965052, 30096984, + 6137509, 8461086, -5055177, -7258495, 17190606, 3369402, -9025874, -42777876, -7106024, 5600638, + -22048214, 10522670, 8529805, 1919850, -17104708, -14882062, -18221398, 38738456, 9957882, -5708012, + 7187628, -32613834, 3569118, -15178414, -17918604, 17235704, -3199751, 384400, -11407433, -40853728, + 5239860, 12625056, 6912750, -2834679, 23965918, 968515, -10468983, -1466731, -16230681, 25295210, + 13391708, 7189776, -4460324, 1866163, 7793218, -7327214, 2864743, 3618510, 1060857, 94128504, + 23607288, 24365350, 20544976, -5903433, 745177, 96812856, 27867896, -7889855, 59017144, -33021856, + 24595130, 5302137, 15017353, 24270860, -7505456, -16722455, 18169860, -3173981, -58437324, 15077483, + 15122580, 12513387, 27788438, 17770428, 18148384, -16292958, 3620658, -15721728, -8291435, 17482664, + 5750961, -33917356, -20349556, -28394028, -42528768, -6326487, 8798241, 20974472, 17965848, 15655156, + 12994424, -6094559, 22293028, 12592844, -27036820, -10144713, 7273527, 20620138, 545461, 4627828, + 35974648, -6197638, -2972117, -9062381, -1799591, 18549964, -15547782, 523986, -22018150, -19383188, + -12491912, 23274428, 31722628, -8905615, 2662880, -5815386, -19516332, -13022341, 5218386, -22447646, + -5920613, -5781026, -14568529, 40587440, 8965744, 13786845, 11890617, -850404, 204011, 7284265, + 2276333, 13000866, 8151848, 562641, -1108102, 96125664, 56098716, 4492536, 35465692, 27844272, + 7406671, 41897404, 11265699, 285615, -13303661, -9133248, -27455578, -72924248, -5854041, 7550553, + -25445534, -13849122, -3227668, 51627656, 16361678, -12869870, 124554, 3974992, -7733089, 22009560, + -4035122, -12887049, -9468255, -12124693, 7700877, -18013092, -45417132, 1436667, -23892904, -36013300, + 6753836, 16125455, 22419730, 13254269, 19801946, -13348758, -39170100, -24891482, -35272420, 14106820, + 32319628, 27348204, 17033840, 33062658, 453119, 20817706, 43946104, -36271000, 6231998, -16146930, + -212601, 13157632, 12837657, 21968758, -2325725, -44424996, -35021164, 7874823, -10172630, -12326556, + -8931384, -9369471, -31080530, 3141769, 20426864, -1797444, 15472620, -9096741, -1196148, -1290638, + 7548405, 30900142, 21105470, 19005230, -17978734, 1466731, -10967199, 1700807, -28585154, 6124624, + 4275640, 3526168, -964220, -2987150, -8512625, 7511898, 23478438, -47983376, 6094559, -36777804, + 16531329, -70044472, -1728724, -23381802, -35867272, 64276332, 36633924, -23229330, -57773752, -14888504, + -20987358, -50861004, 39528732, 1859721, -34855808, -13265006, 20362440, -33386928, -22417582, -17671642, + -39140036, -15337328, -682900, -32042604, -28703266, 40160092, -15000173, -12912819, -3637837, -9337259, + 34475704, -38405596, -17718888, 7735236, -10071698, -360777, -8572755, 19509888, -36054104, 12534862, + -57690000, 5538361, -16460462, -23405424, 60694332, 5950677, -22374632, 11205570, 12708808, -49327700, + 33998960, -8660802, -10518375, -4090956, 19443316, -8486855, 876173, -23843510, 12762495, 15483357, + 27292370, -23987392, -60462404, 41790032, -4849018, 17001628, 20648056, -12957916, 11899207, 30764850, + -39893804, 1685775, -14083198, -4801774, -41422812, 13647259, -6485401, 1185411, -1095217, 4992900, + -7030862, -6753836, 11317239, -10982231, 8169028, 1909113, -7857643, -91905856, -50298364, 10819023, + -31862214, 3317862, -22870700, -12764643, -33814276, -24296630, 17914308, 50667728, 54470924, 7952132, + 38603168, -26882200, 67005784, 48142288, -38281044, -35581656, 11574937, 10333691, 56717192, 19743964, + 36515812, -13597866, 14970109, -7937100, -5467494, -12543452, 53053584, 22853520, 50837380, 45021996, + 9326521, -3347927, -21685290, 21391084, -2091649, -46641196, -30118458, -9403831, -23227184, -5972152, + -23890756, -22101902, 15040975, -7161858, -14931454, 37718404, 45773612, -26710402, -8179765, 61042224, + 25690346, -42829412, -40928892, -15618649, 16108275, -2647847, -7209103, -30678952, 25832080, 7127498, + -9270687, 6350109, 7456063, -37879464, -15893526, 2854006, -13544179, -18747532, -19035296, 49787260, + -39073464, -36127116, 15028091, 25211458, 37368364, -19400368, -5521181, 2879776, -16527034, 16954384, + -2188286, 12560632, -10634339, -5252745, 3882651, 4466766, -5918465, -6247030, -42950, -7483981, + -34930968, -50813760, -44012676, -180389, -34673272, -44165148, 11248519, -3629247, -61976380, 44313324, + 7718056, -3588445, 21848498, 68199784, 64879776, 28194312, -79729624, 29725468, 21000242, -77846280, + -1202591, -37505800, -18395344, 40325448, -47285444, 27543626, -109522, -7971460, -16962974, 8244190, + -4020090, 13655849, -9176198, -41635412, 40475772, 19333796, 48496624, -4926328, -16458315, -23364622, + 19591494, -21045340, 57299160, 12208445, 34389804, -44581760, 35538708, 1507534, 12537010, -28898688, + 9680856, -34346852, -5506148, -35238060, 14394583, 24573656, -47019156, 2020782, -38749196, 18229988, + 22797686, 22374632, -3103114, -66256312, 83752, 17637284, -5765994, 29611652, -63541892, 16393890, + -26459146, 8632884, -22426172, 4728759, 16376710, -7039452, -274878, -6798933, -8291435, 2645700, + -17149804, 21629456, 4814659, -438087, -27318140, -2420214, 2836826, -1846836, 11411728, -11667279, + 2587718, -1138166, -6051609, 95490008, 115833120, 48451528, 40387724, -66780300, 64233384, 93258776, + -102039832, 12210592, 66179004, 11521250, -121708632, -12150462, -66071628, 21328808, 24206436, -30764850, + -12045236, 22194244, -55886116, -4462471, -21897890, -27457726, 10900627, -42384884, 45653356, 32545114, + 59042916, -29250874, 9646497, -6378027, -24088324, 74549896, -1479616, -34316788, -16228534, 16103980, + -16080358, -19529216, -22932978, 37920268, 14061723, 52718576, -3768834, 19323058, 69170448, -43920336, + 9148280, -29828548, 54872504, -21588654, 25645250, 10879152, -2239826, -20828444, -39172248, -26474178, + 10969346, 49604724, -46757160, 41848012, 49456548, 24865714, 57805964, -28308130, -23089744, 37673304, + -6607807, -7043747, -53470196, -3410204, -44132936, 9019431, 55718612, 27341762, 13962939, 25546466, + 15129022, -24017458, -10913512, -41916732, 47259672, 1945620, -18934364, 12474733, 4151086, -22054658, + 11394548, -3199751, 13460428, -2321430, 20484846, 9814000, -44571024, -151485648, -63621352, -108920368, + -58911920, -46544560, 25063282, -69913480, -71567040, -34168612, -95614560, -31035434, 71902048, -2177549, + 2733747, -19449760, -17040282, -9012989, 6416681, -1148904, -64087356, -10144713, -12768938, 92721904, + -12161200, 82441896, 6541235, -22166326, 21294448, 67875512, -3672197, 708670, -27474906, -7975755, + -28829968, 16138340, -12270722, -24388972, 12165495, -32948842, 26628798, 27204322, 5119601, 59435904, + -27064736, 30296700, -25312390, 33436320, 22460532, 62618476, 8415988, -25516400, 33513630, -4290673, + -21131240, 79527760, -6083821, -4797479, 45657648, 14128295, 61523260, -48037060, -47029892, -7142531, + -20456930, -6463926, -75995152, -17248588, 26175678, -10292889, -32785632, -53362820, 3478924, 16312286, + -26819924, -25559350, -46533824, -16533477, 19593640, 20336670, 40980432, -6592775, -3895535, -1464584, + 13606456, 16408923, 2686502, 26027502, 7071664, 2798171, -3586298, -2482491, 18556406, -7965017, + 18341658, 20746840, -968515, 6156836, }, { -11093901, - 5963562, -3131031, 3644280, -2179696, 3064459, -6444599, 283468, -264141, -738734, 1475321, - 3195456, -122407, -311385, -3536906, -1413044, 1507534, 867583, -427349, 1387274, -440234, - 483184, -1602023, -1086627, -1095217, -371515, 139586, -818191, -581968, 1881196, -1110249, - 1144609, -1093069, -186831, -856846, 1050120, 377957, 865436, 1473174, 1859721, 691490, - 502511, -176094, 208306, 279173, -386547, 358630, 3919158, -4483946, -597000, -826781, - -1110249, 721555, -2222646, 751619, -49392, 1009317, 891206, -1769527, -624918, 2688650, - -279173, 571231, -498216, 1166084, 2471754, 2851858, 487479, 1226213, -40802, -2259153, - -66572, 240518, -487479, 4295, 1243393, -1299228, -1739462, 753767, -839666, -781684, - -1219771, -60130, 1284195, 317828, -380105, -470299, -511101, -12885, 285615, -693637, - 253403, -790274, 474594, -11257109, -7954280, -3925600, -2909840, -2278480, -2291365, -826781, - -1687922, -558346, -1054415, -2806761, 554051, 1391569, -214748, 781684, -521839, -1471026, - -1432372, -2207613, -732292, 493921, 75162, -1256278, 835371, -1513976, -1451699, 927713, - 6442, 15032, 777389, 839666, 236223, -371515, -429497, -609885, 300648, 118112, - -762357, 375810, -1522566, -693637, -377957, -195421, -1086627, -257698, -401579, -62277, - -16026670, -2080912, 1172526, 302795, 1103807, 191126, -938450, 644245, -736587, -687195, - -1490354, -1142461, 521839, -384400, 959925, -916976, -40802, -884763, 242666, 1685775, - -481036, 1271310, 10737, -1043677, -279173, 1535451, 682900, 1022202, 1028645, -1464584, - 977105, -558346, -180389, -760209, -450972, 513249, 607738, 423054, -425202, 1251983, - 970663, 682900, -408022, -697932, 53687, -562641, 75162, 18850612, 14944339, 3584150, - 6670084, 1655710, 5151814, 3687230, 1086627, 3712999, 1438814, 2828236, 1174674, -964220, - 2763812, 2016487, -792421, -204011, -5220533, -508954, 240518, 3219078, 337155, 176094, - 1593433, 182536, 1440962, 1400159, 197569, -51540, 498216, 2220498, 1642825, 1453846, - -150324, -496069, 81604, 1065152, -386547, -42950, 1114544, 433792, -560493, 38655, - 238371, -1037235, 1378685, -736587, 33208688, 12000139, 5978595, 3358665, 2239826, 2022930, - 2149631, 3264175, 953483, 5400922, 882616, 388695, 2499671, -1406602, 702227, -691490, - -459562, -1032940, 3682935, 1840394, -148176, 2585570, -1711545, -586263, -504659, 4058744, - -238371, 1387274, 485331, 1934883, 513249, -715112, 1236951, 1294933, -481036, 392990, - 740882, 272730, 1020055, -377957, 1146756, 779537, -2506114, 487479, 491774, 414464, - 2016487, 12841952, -9539122, -3148211, -4496831, -2559801, -2735894, 1881196, -1632088, -3781719, - -1142461, -5076652, -1382980, -2136746, -5158256, -1142461, 955630, -3036542, -1228361, 607738, - -3700114, -42950, 3882651, 1024350, 399432, -1752347, -109522, 1526861, -161061, -1606318, - -2007897, 1971390, -362925, -2310693, 23622, -923418, 2750927, 17180, 1123134, -375810, - 2342905, -1582696, 807454, 438087, 377957, 126702, 433792, 21475, -1045825, 1651415, - 977105, 158914, -34999688, -19593640, -4166118, -4793184, -3517578, -4179003, -6208375, -444529, - 12885, -1670742, 1363652, -1546188, 96637, -73014, -2151779, -2102387, -3631395, -1125281, - 3251290, -3167539, -536871, 3169686, 1801739, -423054, 962073, -392990, -3536906, -1619203, - -2937758, -889058, -53687, -648540, 1415192, -2909840, -2516851, -64425, -3051574, -2188286, - -2216203, -2332167, 2276333, -717260, -3214783, -953483, 624918, 940598, -1224066, -1546188, - -901943, -2879776, -1561221, -21728240, 12620761, 4262755, 2353642, 1769527, 2218351, 605590, - -1943473, 277025, -1015760, -717260, 4176856, 2025077, 3648575, 3064459, 3837553, -3219078, - 1829656, 3442416, 962073, 2961380, -3500398, 427349, -612033, -562641, -1080184, 1084479, - -133144, -236223, 3775276, -3805341, -691490, 1050120, 2336462, -1204738, 2012192, -1677185, - -1926293, 2461016, -985695, -397284, -380105, 758062, 40802, 987843, -970663, -794569, - -839666, -612033, -680752, 1773822, 594853, 388695, -856846, -1793149, 513249, 1806034, - 508954, 32006096, 12844100, 2950643, 7071664, 5877663, 919123, 2740189, 6682969, 3335042, - -343597, 1675037, 676457, -803159, 1788854, 6109591, 1211181, 7254200, 3251290, -5585605, - 919123, 423054, 1030792, 5418101, 2768107, 2314987, -616328, -588411, -861141, -654983, - 657130, -914828, 1582696, 749472, 2211908, -249108, -749472, 1097364, 1784559, 1284195, - -347892, -2310693, -1209033, -1176821, 2145336, 1887638, 2441689, 1662152, 261993, 614180, - 2076617, 1984275, 1329292, 481036, 219043, 1346472, 1063004, 841814, 1692217, 35704064, - 10033044, 4604205, 5396627, 1078037, 5209796, -706522, -2211908, 49392, 1221918, 738734, - -319975, 1187559, 5323612, -637803, -3575560, -2229088, 2503966, 848256, 2946348, 5072357, - 4151086, -120259, 2720862, -2942053, 204011, -2246268, 3161096, 2063732, -3852586, 2342905, - -1898376, 435939, -1554778, 2372970, -1498944, 2933463, 2080912, 1956358, 3446711, 1340030, - -184684, -697932, -98784, 657130, 3837553, 68719, 2147, 455267, 1812476, 1447404, - 53687, -313533, -663572, -1906966, -444529, -1421634, -618475, 5089536, -15307263, -5961415, - -2637110, -3279208, -1758789, -1120987, 47245, 2349347, -2396592, -3908420, 3633542, -4733054, - -4872641, -678605, -1275605, 2317135, -1520418, 77309, -4718022, -2523293, -5654325, -5821828, - -6869800, -747324, 1359357, -4488241, -1451699, 843961, 302795, 380105, -798864, -4447439, - -3075197, 2186138, 575526, -901943, 4176856, -2755222, -1520418, 1267015, 2480344, 2366527, - -584116, -489626, 850404, 822486, -3042984, 433792, -1872606, -581968, 12885, -974958, - -49392, 2108829, 221191, -225486, 279173, -1967095, 1099512, 1928440, -581968, 90194, - 45097, -176094, -38732016, -12079596, -7389491, -2942053, -5340792, -4110284, -1322850, -2909840, - -1335735, -3912715, -5486821, -3777424, -1408749, -7909183, -2003602, -3169686, -4937065, -515396, - 743029, 2684355, -2927020, -3912715, -1567663, 3358665, 4116726, 5242008, 2677912, -64425, - -2639258, -1082332, -60130, -3068754, 1226213, 2211908, 2604898, -1756642, -1653562, -1387274, - -807454, -545461, -1187559, 2158221, -691490, 1425929, -2750927, -4550518, -2025077, -105227, - 2237678, -3929895, 1245541, -1848983, 1801739, -1883343, 1043677, -1563368, -167504, -992137, - -191126, 749472, 1395864, -934155, -1421634, 23622, -1417339, -22207128, 5927055, 1627793, - 34360, 3871913, -3719442, 977105, -8572755, -2813204, 2989297, 2089502, 5538361, -431644, - 6038724, -3547643, -889058, 2860448, -5254893, -1958505, -3094524, 5854041, -380105, -4911295, - 2445984, 4655745, -4183298, -3219078, -3770981, 1047972, -893353, 1984275, -1458141, -1234803, - -1030792, -2323577, 3298535, -2720862, 618475, 2130304, -302795, 2467459, -1490354, 5454609, - 792421, -605590, -1964948, -1967095, 42950, -2257005, -2731599, -1724429, 384400, 1825361, - -309238, 461709, -2394444, -2407329, -3395172, -1389422, -1120987, -936303, 895501, 1314260, - -1408749, 156766, 19142670, 27608050, 9442486, 9635759, 13000866, 9524090, -1378685, 1986422, - -1071594, 1881196, 1559073, 2531883, 1730872, 4844723, 1767379, 3096672, 889058, 9444633, - 2149631, 4722317, 2675765, 2568391, 7303592, 1919850, 9161165, 4932770, -1870458, 6672232, - 1692217, 3395172, 6470368, 1531156, 3854733, -1748052, -665720, 2050847, 2918430, -3721589, - 3390877, -2048699, -4286378, -2289218, 3573413, 5587753, 4063039, -521839, 1327145, 1494649, - 2018635, 3073049, 1636383, 3444564, 1947768, -2763812, -62277, 2503966, 3098819, 1198296, - 1024350, 822486, -3023657, -959925, -1859721, 2031520, -124554, 66486092, 4694400, -3055869, - 5025112, -3287798, 7191923, 2568391, 7567733, -3569118, 453119, 350040, 4436701, -8033737, - 1350767, 5686537, -1415192, -912681, 6631430, 11184095, -4797479, -2194728, 1052267, 5699422, - -2662880, 3822521, -90194, -3165391, -3182571, -2454574, 2040110, 3644280, 3547643, -2396592, - 3944928, -2364380, 3826816, 4028679, -1187559, -2080912, 1157494, -3558381, -5781026, 1606318, - -4026532, 1934883, 156766, 989990, 2132451, 352187, 2641405, 590558, -3985730, 1900523, - -1200443, 2196876, -2965675, -139586, 219043, 2312840, -1709397, -4350802, -1011465, -1655710, - 227633, -1232656, -22546430, -21938692, -4945655, 1668595, -959925, -3341485, -3564823, -4937065, - -1305670, 3579855, -1185411, -1284195, -5053029, 5263483, -324270, -4425964, -3788161, 9152575, - -8362302, 801011, 6081674, -785979, 981400, -8115341, 2540473, -3521873, 1894081, -5669357, - -3691525, 841814, 1451699, -2692945, -2967823, 197569, -1239098, 317828, -3466039, -2022930, - 3541201, -478889, -1722282, -1103807, 4511863, 1921998, -2639258, -4054449, -3560528, 1090922, - -586263, -1767379, 337155, 652835, -1982127, 5308580, 2886218, -665720, -468151, -1509681, - 601295, -1683627, -1623498, -1735167, -367220, -3165391, -2478196, -4215511, 899796, -4505421, - -214748, -1219771, -1125281, -347892, -9021579, -7380902, -9281424, -6328635, -4962835, -2967823, - 502511, 118112, -2506114, -702227, 1956358, 8078834, -7075959, 3657165, -2514703, -4114579, - 5330055, -259846, 884763, 7505456, 858993, 3285650, -4786741, -865436, -13522705, -1299228, - 2310693, 1868311, 942745, 1571958, 1666447, -2729452, -4194036, 3270618, -554051, 3103114, - 1247688, -3287798, 2697240, -66572, -9640054, -7546258, -1503239, -7129646, 758062, 2521146, - -700080, -1666447, -1041530, 551903, -2364380, -461709, -622770, -1060857, 2089502, 826781, - 560493, -1108102, -1148904, 3837553, 755914, -2143189, 2319282, -375810, -1879048, -3624953, - -92342, -1885491, -839666, 2894808, 1977833, 3064459, -43089260, -9805410, 622770, -8551280, - 3444564, 871878, 10320806, -4821101, 601295, -2826089, 6912750, -14111115, -13567802, 5727339, - -6582038, 10206990, 3676492, -8175470, -14366666, -313533, -4075924, -6951405, -2869038, 1653562, - 2310693, -3350075, 12277164, 674310, -1234803, -5123896, 4172561, 4670777, 5001490, 5405217, - -680752, -3176128, -1219771, 3201898, -261993, 3861176, -3631395, -1408749, -1256278, 4471061, - 3566970, -3889093, 5053029, -2808909, -3539053, 448824, -1614908, -3339337, 3446711, -3955665, - -536871, 1024350, -970663, -1604170, 897648, 3337190, -2070174, 3201898, -2643552, 2153926, - -1471026, -1634235, -1039382, 657130, 4108136, 760209, 3848291, -2435247, 39498668, 34720516, - 7256347, 9290014, -1848983, 11358041, 9092446, 11441793, -466004, 4610648, 2761664, -10694469, - -9070971, 5016522, 983548, -7645042, -8104604, -4494684, 534723, 4647155, 1363652, 10892037, - 9923522, 4391604, -2272038, -2351495, 6577743, 6197638, 506806, 5441724, -1717987, 6942815, - 408022, -1410897, 9586367, 5053029, 7868380, 5145371, 1752347, 5585605, 2796024, 1999307, - 5123896, -2699387, 1052267, 6863358, -36507, -4258460, 4054449, 4093104, 2894808, -2957085, - -38655, 4052302, 5978595, -2860448, 7221988, 8319352, -1382980, -4325032, 807454, 2005750, - 1320703, 3721589, 32212, 1413044, 2830384, -1868311, 253403, -2707977, -667867, -3695819, - -2136746, -337155, 47991964, 3839701, -1286343, 3317862, 2385854, -7922067, 2128156, 2074469, - 79457, 5044439, 7400229, 10896332, -4812511, -5014375, -7666517, -6322192, 7146826, -609885, - 10286447, -2510409, -2400887, 4157528, 8948564, 3474629, -8834748, 7002944, -2525441, 5592048, - -2864743, 4329327, -5289252, 3244848, -352187, 5091684, 704375, 2881923, 1657857, -9088151, - -4889821, -891206, -1748052, -897648, -2738042, 4310000, 1737314, 9266392, -1361505, -6425271, - -3635690, -689342, 637803, -7140383, 2471754, -2461016, -236223, -736587, -4063039, 3723737, - 7290707, -2319282, 3790309, 811749, -3970697, -433792, -3775276, -3259880, 723702, -5697274, - -3936338, 2308545, -212601, 1215476, 3951370, -5396627, 6451041, 682900, -2641405, -6412386, - 1857573, -2342905, 13821205, -3285650, -13230647, -8914205, -11929272, 11035918, -8817568, 2461016, - 13443248, -575526, -13675176, 955630, -14353781, 11965779, -4172561, 11927124, 68719, -4514011, - 10234907, 401579, 2123861, -7685844, -9736691, -1546188, 3425237, 2113124, -1900523, -4471061, - 4531191, -1367947, 3386582, 5224828, 6326487, 2944200, 3502546, -12807592, 1075889, -2890513, - -4378719, 1775969, 6365142, -5338645, -9844065, -4331475, 2894808, 1140314, -8647917, -3511136, - 4045859, 5922760, -5194763, -3369402, -3994320, 6060199, 8031589, 1638530, -2690797, 927713, - 5757404, -2738042, -216896, -3760244, 4041564, -4709432, -543313, 5624260, 3367254, -1617055, - -841814, -122407, -1795296, -48320528, -49012020, -7913477, -24043226, -14877767, -8555575, -13303661, - -1655710, 10073846, -21996676, 8040179, -4533338, 7335804, 1226213, 4501126, -9148280, 2325725, - -1185411, -4739497, -20186346, -4095251, -10520522, -12799003, -1385127, 3242700, 631360, -4350802, - 2738042, -4129611, -1277753, 10700911, -281320, -3560528, 609885, 7000797, 9347996, 6305012, - -53687, 5033702, 5757404, -569083, -6442, -10462540, 3781719, -8647917, 1554778, 8336532, - -5808944, -10473278, 2959233, -5877663, -5684389, 1155346, -154619, -4967130, 2338610, -1183264, - 11212012, 6330782, 3377992, 1389422, 4063039, -418759, 1170379, -4456029, -8078834, -1329292, - 609885, -5723044, -4045859, -3146064, -2757369, -3246995, 1702955, -1672890, -575526, -3601330, - -28771986, 53437984, 41873784, 2660732, 8493298, 3438121, 9264244, 14229227, 3214783, 13825500, - 2454574, -14441828, 9622874, 11671574, 3420942, 3536906, 8662949, 11506217, -11469710, 9612137, - -6062347, 8454643, 1234803, -6867653, 1322850, 9558450, 5355824, -11169062, 5430986, -4507568, - 16335908, -1262720, 3796751, -2403034, -10584947, 10767483, 10550587, 5177583, 2667175, -339302, - 3777424, 11428908, 2594160, 8216273, 981400, 5759551, 3027952, -594853, 6079526, -7232725, - -11523397, -4891968, -8796093, -7262790, -3835406, -7460358, 10239202, 7473243, 863288, -1657857, - -3689377, -1024350, -294205, 264141, 481036, 1619203, 2123861, 1378685, -236223, -2514703, - -2327872, -186831, -234076, -783832, 1140314, -985695, 6178311, -1187559, 8121783, 71766760, - -28237262, -14948634, 2372970, 81604, -3762391, -19619410, -8703751, 5319317, -1181116, -2594160, - -4101694, 3311420, -16544214, -4408784, 8276402, 16168404, 8467528, 7398081, -5304285, -4569845, - -9612137, 11237782, -15685221, -2437394, 3631395, -9934259, 3141769, 4653597, 12262132, -18788334, - -1806034, -68719, -4142496, 5332202, -17845590, -8937827, 19228568, 13058848, 2465311, -3062312, - 11405286, -3126736, -1700807, 2437394, 8877697, 5504001, -5808944, 1468879, -3474629, 7713762, - -12090333, -5080947, -7400229, -7297150, 14355928, 4271345, 1610613, -6146098, -734439, -1898376, - -2763812, -6455336, 889058, -6105296, -468151, 2482491, 5411659, -9408126, -6908455, -8282845, - -2808909, 4904853, 620623, 6420976, -1017907, -7677254, -1037235, -3309272, 3513283, -70867, - 21335250, 48859548, 8119636, 18595060, 16956530, 16110422, 5493263, 12025908, 7539815, -3582003, - -9846213, -6380174, -2778844, 13786845, -11748883, -13179107, -807454, -663572, -5272073, -10101763, - 29759828, 27803470, 21068962, 970663, -11875585, 2065879, 2085207, -6025839, 6925635, 4318590, - 12068858, 1342177, 4986457, -620623, -8138963, 13518410, 11347304, 8063801, -1840394, -10801843, - 762357, -869731, -2901251, -22013854, 15934329, -10052371, 18360986, 1000727, 9977209, -2134599, - 10992969, 16501264, 3408057, -7520488, -453119, 2997887, -5351530, 2873333, -2014340, -7058779, - -3743064, 2265595, -1604170, 6897718, 2557653, -11768210, 848256, -1647120, -12521977, -3006477, - 2675765, -4842576, 1490354, 10677289, 4505421, -661425, -3605625, -2884071, 332860, 4636417, - -1185411, 5134634, -51430084, -6786049, -32074816, 397284, 5596343, -10840497, -18777598, -21633750, - -20590074, -12128988, -16801912, -4075924, -1187559, -4299263, 5330055, -3311420, 1039382, 13179107, - 5851893, -1273458, 31059056, -6805376, 6176163, -4524748, 2553358, 4541928, 1597728, -1724429, - 4511863, 14592151, 4325032, 5179731, 1571958, 5849746, 12242804, 16978006, 5267778, 20596516, - -5572720, -17723182, 17854180, -5667210, -3837553, -3599183, 10065256, 15734613, 11781095, -292058, - -4153234, -8987219, -23008140, 14139032, 15981573, 11370926, -13771813, 8297877, 2065879, -1374390, - 12923557, 2203318, 8654359, -7258495, 4181151, -9049496, -951335, 7853348, -2370822, 5905580, - -1329292, -3307125, -3315715, -11027329, 1026497, 822486, -178241, 2115272, -2531883, -13608604, - 944893, 704375, -90067608, -40235252, 18169860, -3375844, -3216931, 3330747, -11403138, -9762461, - -3521873, -4335770, -15887084, 11244224, 1075889, 23633058, -13282186, -11160473, -19370302, -10636487, - -19943680, 1735167, 7099581, -29442000, 18915036, 16527034, -2501819, 3393024, 12270722, 1960653, - 10778220, -22282290, -22701050, -12390981, -14942191, -11267847, 36378372, 12030203, -8205535, -12994424, - -18867792, 8989367, 4866198, -8761733, 7133941, 7322919, -13357348, 1350767, 2785286, 10507637, - -12416750, 30204358, -13344463, -10398116, 4533338, -3131031, -330712, -8952859, -3586298, 1045825, - 18951544, -5830418, 27382564, 5980742, 1627793, 3182571, 7189776, -8162586, -3143916, -10767483, - -8957154, -8229158, -206158, 14948634, -9844065, -7002944, -4262755, -5443871, -5340792, -530428, - -3590593, -5016522, -4675072, 14214194, 45466524, 23394686, 14514842, 9878425, -15990163, 1644973, - -12929999, 20250770, -2177549, -2649995, 6895570, 4496831, 4724464, -554051, 7155416, 2632815, - 7556995, -6146098, 19797652, 2735894, -1754494, 59332824, 3274913, -4443144, -15118285, 8912057, - -14055280, 13320841, 31978180, -2403034, 7879118, 7975755, -16368120, -18268644, 618475, 506806, - 14093935, -8967892, 579821, -843961, 10408853, 10776073, 17858474, 6822556, 6249178, 7509751, - 835371, 11877732, 5555540, -21434034, 4715874, -10967199, -27616640, -2231236, 7898445, 317828, - 2426657, -3502546, 650688, -704375, -25770, 3680787, 732292, 12824772, -7434589, -974958, - 2594160, 2862596, 508954, -4636417, 8879845, 15060303, 14693083, 3277060, -2918430, -1254131, - 5342940, -448824, -1653562, -51540, 3042984, 7110319, -1013612, -2381559, -4709432, -2761664, - 67121752, -19907174, -6878390, -18549964, 34026880, 11866995, 3255585, 6322192, -4413079, -8310762, - 12298639, 616328, -11143293, 2538326, -14849849, -12090333, 1262720, -16020228, 2617783, 4610648, - -10984379, -20673826, 2435247, 627065, 14197014, 22011708, 16179142, -10988674, 358630, 13503377, - 26012470, -27135604, 10602127, -5452461, 92342, -12618614, -16580721, 1020055, 15906411, 4078072, - 7423851, 9274982, -517544, 6055904, -987843, 4213363, 10415296, -18234284, -11924977, 27270894, - -1644973, -1275605, -5708012, 10647224, 36406292, 8564165, 5970005, 11222750, -8866960, -11057393, - 577673, -8353712, -19960860, 12824772, 2278480, -10632192, 6225555, 2692945, -5229123, -10030896, - 13664438, -4883378, -15000173, 6917045, 7834021, 10657961, -10267119, 637803, 5373004, -2274185, - -3536906, 16172699, -706522, 2686502, -6723772, -1318555, 425202, 57183196, 53633404, -17257178, - 14437533, 4737349, 11164767, 29227252, -3818226, -14787572, -5540508, 56186764, -31638876, -5647882, - -15792595, -12139725, -25668872, 28280212, -8278550, -37632504, -28516436, -34299608, -13490492, 31054762, - -3837553, 14858439, -5602785, -15298674, 13514115, 4428112, 17164836, -16297253, 15264314, 12661564, - 6182606, 7537668, -27423366, 8291435, -22905060, 19709604, 40660456, 12253542, 12156905, -25486336, - 36412732, 10222022, -3874061, -5188321, -7473243, 11903502, 18189186, 4913443, -4301410, -581968, - 4891968, -8340827, -6350109, -8001524, -6597070, -197569, 13338021, -8452496, 19954418, 7694434, - 12206297, -3639985, -28656022, -18693846, 7290707, 2461016, -8551280, 11203422, -536871, -459562, - 5765994, -3502546, 8396661, -899796, -962073, 4614943, -4939213, -330712, -5338645, -2695092, - -6698002, 4943508, 365072, 1969243, -53068616, -32396938, 8128226, 3693672, 133144, -24053964, - 14368813, 7344394, -13795435, -39051992, 31797790, 7142531, 12034498, 17199196, 10827613, -5645735, - 6075231, -10310069, 26420492, -22348862, -37310380, -1861868, -1604170, -18461916, -40604620, 644245, - -8164733, -22123376, -11626476, -7380902, 9339406, 874026, 15191299, 29388314, -12622909, -25520696, - 7969312, -3601330, 429497, 11613592, -17495550, -16789028, -2072322, 13808320, -18957986, 15126875, - -5400922, 29832842, -4284230, -10312216, -3528316, -577673, 6174016, -35704064, 5098126, -31003222, - 30975304, -642098, 19445464, 10784663, -11826192, -2330020, -15693810, 6893423, -1709397, 5293547, - 5774584, -21633750, -3195456, -20907900, -8903467, 8121783, -6148246, -13166222, 5830418, -1032940, - -20879984, -11123965, 2134599, -152471, -8684424, 8207683, -4767414, -6221260, 4318590, -13408888, - 6414534, -75026640, -33316062, -13350906, -7438884, -3161096, 8615704, -26665304, -17688822, 5967857, - -20811264, 5961415, -23210004, -8375186, -22413286, -28935194, 30543660, 11469710, 5304285, -2628520, - -23684598, -42408508, 21580064, -55351392, 20607254, -32212, -16630113, 2029372, -9994389, 3330747, - 38813620, -19950124, -1187559, -41796476, 33056216, -10353019, 15509127, -15264314, -3974992, -4170413, - -700080, 18234284, 7402376, 38884488, 48586816, -5849746, 1548336, -16627966, 2611340, -6987912, - 8300025, 14377403, 2733747, 33717640, 10636487, -13681618, 6375879, 6335077, 1060857, -3264175, - 1941325, 25439092, -18734648, -40346924, -15360951, -238371, 10191957, 6040872, 20740398, -2823941, - 9360881, -10838350, -15021648, -22840636, -16716013, 672162, -4760971, 9910637, 3730179, -6889128, - -1881196, 18122614, 581968, 9700184, -3655017, 2780991, -3712999, -5179731, -7050189, 94280976, - 42402064, 28943784, 12313671, -10965052, -16960826, -29693256, 16582869, 28074054, 11909944, -13430363, - 33599528, 18592914, 33595236, 2078764, -23897198, -9554155, 50332720, -52473764, -10501195, 34396244, - -20237886, -11665131, 81146968, -10322954, 23377506, 73181944, -11514807, -4992900, -1885491, 8952859, - -3805341, 31643172, 20721070, 26055420, -18285824, -43486544, 17592186, -17248588, 21090436, -8269960, - 7838316, 30739080, 18174154, 1666447, 13872744, 6122476, 13372381, 29721174, 17126182, -3317862, - 29328184, 12038793, 4443144, 6777459, 53775140, 31950262, 375810, 29016800, -12539157, 36717676, - -8860518, 8005819, -10136123, 4297115, 21436182, -11817603, -511101, -2194728, 7664369, 715112, - -13486197, 455267, -11497627, -21268678, 3899830, -28278064, 11315091, 17197050, -6710887, -12154757, - -7739531, 15058155, 4851166, 732292, -5952825, 122228328, 54840288, -24421184, 10385231, 63292784, - 1215476, 45788648, -13636521, 18285824, 37671160, -28293098, 3193308, 66486092, 59201828, 48692044, - 16842714, 41860900, 6745246, 36737004, 12461848, 11325829, -23031762, -26452704, -38296076, -75086768, - 23785528, 1196148, -20708184, -6908455, 25844966, -16827682, -2830384, 3253438, 14431090, -66488240, - -11038066, 48788680, 37095632, -13172665, 24434068, 21378200, 13432510, -7868380, -15749645, -6423124, - -10666551, -6440304, -24893630, -20641612, 16892106, -41293964, 13563507, 34477848, -10335839, -24034636, - -38169376, 35944580, -1316408, -17652316, -11957189, -7876970, -13226352, 7838316, -6210523, -12899934, - 13335873, 55778740, -27895812, -16320876, 6893423, -10428181, 12614319, 854699, 28404766, 5871221, - -2957085, -2044404, -29865056, -13662291, -4784594, 2884071, 2123861, 10980084, 6401649, 1593433, - 4610648, 5881958, 17355962, 1808181, 326418, -11010149, 3738769, -48408576, -13209172, -58136676, - -12356621, -58095876, 28067612, -55357832, 29923038, -9773198, -31668942, -9869835, -14682346, 67242008, - 10735271, -49340584, 1224066, -32285270, -25013890, 33034740, -37209448, -34868692, -38845832, 58656368, - -7614977, 38665444, -59547576, -32087700, 24142012, -28067612, 23048942, 64969972, 43119324, 40149356, - 7249905, -7056632, -31263066, -45092860, -2044404, 9871982, -41289668, 792421, -24174224, 11942157, - 18781892, -47766480, -40091372, -74788264, -11280732, 5057324, -31705448, -46269684, 45932528, 2261300, - 47175920, 45820860, -5207648, -6532646, -18197776, 26426934, 23368918, 3279208, 11783243, -3773129, - -1885491, 22370338, -5435281, -26214332, -19658066, -32996086, -27227946, -10234907, -785979, -4511863, - -41212360, -24161338, 14100378, 3201898, -14319421, 18008798, -3126736, 985695, 28752658, 23379654, - 15560667, 6030134, 18625126, 2765959, 1047972, 8465381, 6517613, -81585048, -14903537, 7960722, - -8312909, 833224, 21562884, -17514876, 19095424, 19469086, -13711683, 26102664, -36000416, 44936096, - 29615946, 2224793, -33217278, 3328600, 20862804, -95451352, 19228568, 39928164, -69591352, 29055454, - -35983236, -49808736, -46774340, 24105504, -12236362, -71083856, 37864432, 21361020, -44197360, -71927816, - 13973676, 9281424, -23600846, -4567698, -38057704, 35809288, 28252294, 51775832, -41598904, 7372312, - -55009940, -19816980, 8630737, -34005404, 13705241, -3590593, -27986006, -40248140, -45017700, 65487512, - -44394928, -19924354, -17171280, 3438121, 29012504, 18367428, 20959440, 949188, 24648818, -7818988, - 3315715, -10048076, -27593018, 6025839, 56751552, 9650792, 575526, 508954, -37793564, 24831354, - 37931004, 41109280, 7312182, 3745212, -2525441, -2484639, 5076652, 1535451, -19192062, 339302, - 2942053, 3455301, -491774, 1125281, 13505525, -4200478, 1050120, -2849711, -21475, 25649544, - -54606216, -29083372, -57662084, 16391743, -10198400, 22870700, -15672336, 10819023, 18951544, -19355270, - -32893008, 49140868, -12839805, -21951578, 57193932, -11789685, -13247827, 65270616, -37705516, 9586367, - 16056735, 5068062, -57505316, 169651, -8323647, -34632468, 19868518, -27210766, 36715528, -6468221, - 40860172, -44637596, 27831388, -79023104, 964220, -43121472, 48202416, -7425999, 6672232, -8293582, - -43750684, -3193308, 38306812, 100824360, 7546258, 6335077, 21530672, 34458524, -5740224, -9715216, - 3262028, -1733019, 88789856, -8040179, 13776108, 35605280, -34441344, -59075128, 307090, -62431644, - -7541963, -32053340, -22866406, -12526272, -26231512, 14832670, 22104050, -36361192, 46027016, 38132868, - -5321465, -9442486, -37366216, 26195006, 9431748, 24848534, -20884278, 10277857, -3949223, 18796924, - 2304250, 18187040, -9105331, 13340168, -2108829, 335007, 4582730, 20630876, 10028749, 6326487, - -6637872, 536871, 2042257, 95163592, 103386304, 874026, -31928786, -25396142, 86558624, -56910464, - -65165392, 67703720, -61570504, 39586712, 11834782, 54784456, 50242528, 34129956, 5278515, -34419868, - -29974576, 71066680, -30361124, -3008625, 17115444, 60544008, 87359632, -2632815, 59609852, -48958332, - -51380692, 5808944, -19123342, 28286654, 17688822, -43662636, 5729487, 27797028, 71792528, 24590836, - 29283088, 27109834, 31978180, 8323647, -2772402, 45732812, 7799661, 36578088, 58295592, 12242804, - -24326694, -20422570, 52518860, 13851270, 107994808, 25293062, 42410656, -44130788, -69677256, -6659347, - -81314472, -51924008, -18743238, -27704686, 2783139, -4114579, 384400, 1129576, -60881160, -50182396, - -26776974, -51820928, 18676666, 20605106, -15955804, -4009352, -48374216, -7546258, 13913547, -13696651, - -4402342, 4924180, -30636002, 12698071, -9605694, 3635690, 5111011, 184684, 1801739, 6597070, - -7529078, 1140314, 6788196, -272730, 1408749, 2057289, -45202384, -158937408, -65622804, -129708016, - -29115584, -45341968, -18339510, 11834782, -42548092, -51500952, -82390360, -65483220, 58538256, -10402411, - -52417928, -55679956, 12607876, -74098920, -104576008, 17280800, -24346022, -22391812, -22477712, 20139102, - -62328564, 65622804, -38137164, 44581760, -31024696, -29759828, 725850, 36017596, -50820200, -48513804, - 26064010, -9148280, 71798968, -31419834, 41156524, 61924840, 29433410, -22499186, -10271414, -6418829, - 50785840, -17763984, 34106336, 68560560, -57535380, -100364792, -39517996, 34119220, 41811508, -47324096, - 77990160, -25037512, -28151364, -9356586, -8504035, -24079734, -63088776, -26620208, -65184720, -62395136, - -38656852, 46166604, 10928544, -11016591, 4269198, 71350144, 67010080, 4814659, -30906584, 12852690, - -6942815, 29435558, 9285719, -12695923, -29416232, -2555506, -5823976, -46737836, -12025908, 17931488, - 48717816, -21644488, 163209, 18657338, -27193586, -747324, -1769527, 938450, -14100378, 18339510, - 1221918, 4868346, -2121714, 2881923, }, + 5963562, -3131031, 3644280, -2179696, 3064459, -6444599, 283468, -264141, -738734, 1475321, + 3195456, -122407, -311385, -3536906, -1413044, 1507534, 867583, -427349, 1387274, -440234, + 483184, -1602023, -1086627, -1095217, -371515, 139586, -818191, -581968, 1881196, -1110249, + 1144609, -1093069, -186831, -856846, 1050120, 377957, 865436, 1473174, 1859721, 691490, + 502511, -176094, 208306, 279173, -386547, 358630, 3919158, -4483946, -597000, -826781, + -1110249, 721555, -2222646, 751619, -49392, 1009317, 891206, -1769527, -624918, 2688650, + -279173, 571231, -498216, 1166084, 2471754, 2851858, 487479, 1226213, -40802, -2259153, + -66572, 240518, -487479, 4295, 1243393, -1299228, -1739462, 753767, -839666, -781684, + -1219771, -60130, 1284195, 317828, -380105, -470299, -511101, -12885, 285615, -693637, + 253403, -790274, 474594, -11257109, -7954280, -3925600, -2909840, -2278480, -2291365, -826781, + -1687922, -558346, -1054415, -2806761, 554051, 1391569, -214748, 781684, -521839, -1471026, + -1432372, -2207613, -732292, 493921, 75162, -1256278, 835371, -1513976, -1451699, 927713, + 6442, 15032, 777389, 839666, 236223, -371515, -429497, -609885, 300648, 118112, + -762357, 375810, -1522566, -693637, -377957, -195421, -1086627, -257698, -401579, -62277, + -16026670, -2080912, 1172526, 302795, 1103807, 191126, -938450, 644245, -736587, -687195, + -1490354, -1142461, 521839, -384400, 959925, -916976, -40802, -884763, 242666, 1685775, + -481036, 1271310, 10737, -1043677, -279173, 1535451, 682900, 1022202, 1028645, -1464584, + 977105, -558346, -180389, -760209, -450972, 513249, 607738, 423054, -425202, 1251983, + 970663, 682900, -408022, -697932, 53687, -562641, 75162, 18850612, 14944339, 3584150, + 6670084, 1655710, 5151814, 3687230, 1086627, 3712999, 1438814, 2828236, 1174674, -964220, + 2763812, 2016487, -792421, -204011, -5220533, -508954, 240518, 3219078, 337155, 176094, + 1593433, 182536, 1440962, 1400159, 197569, -51540, 498216, 2220498, 1642825, 1453846, + -150324, -496069, 81604, 1065152, -386547, -42950, 1114544, 433792, -560493, 38655, + 238371, -1037235, 1378685, -736587, 33208688, 12000139, 5978595, 3358665, 2239826, 2022930, + 2149631, 3264175, 953483, 5400922, 882616, 388695, 2499671, -1406602, 702227, -691490, + -459562, -1032940, 3682935, 1840394, -148176, 2585570, -1711545, -586263, -504659, 4058744, + -238371, 1387274, 485331, 1934883, 513249, -715112, 1236951, 1294933, -481036, 392990, + 740882, 272730, 1020055, -377957, 1146756, 779537, -2506114, 487479, 491774, 414464, + 2016487, 12841952, -9539122, -3148211, -4496831, -2559801, -2735894, 1881196, -1632088, -3781719, + -1142461, -5076652, -1382980, -2136746, -5158256, -1142461, 955630, -3036542, -1228361, 607738, + -3700114, -42950, 3882651, 1024350, 399432, -1752347, -109522, 1526861, -161061, -1606318, + -2007897, 1971390, -362925, -2310693, 23622, -923418, 2750927, 17180, 1123134, -375810, + 2342905, -1582696, 807454, 438087, 377957, 126702, 433792, 21475, -1045825, 1651415, + 977105, 158914, -34999688, -19593640, -4166118, -4793184, -3517578, -4179003, -6208375, -444529, + 12885, -1670742, 1363652, -1546188, 96637, -73014, -2151779, -2102387, -3631395, -1125281, + 3251290, -3167539, -536871, 3169686, 1801739, -423054, 962073, -392990, -3536906, -1619203, + -2937758, -889058, -53687, -648540, 1415192, -2909840, -2516851, -64425, -3051574, -2188286, + -2216203, -2332167, 2276333, -717260, -3214783, -953483, 624918, 940598, -1224066, -1546188, + -901943, -2879776, -1561221, -21728240, 12620761, 4262755, 2353642, 1769527, 2218351, 605590, + -1943473, 277025, -1015760, -717260, 4176856, 2025077, 3648575, 3064459, 3837553, -3219078, + 1829656, 3442416, 962073, 2961380, -3500398, 427349, -612033, -562641, -1080184, 1084479, + -133144, -236223, 3775276, -3805341, -691490, 1050120, 2336462, -1204738, 2012192, -1677185, + -1926293, 2461016, -985695, -397284, -380105, 758062, 40802, 987843, -970663, -794569, + -839666, -612033, -680752, 1773822, 594853, 388695, -856846, -1793149, 513249, 1806034, + 508954, 32006096, 12844100, 2950643, 7071664, 5877663, 919123, 2740189, 6682969, 3335042, + -343597, 1675037, 676457, -803159, 1788854, 6109591, 1211181, 7254200, 3251290, -5585605, + 919123, 423054, 1030792, 5418101, 2768107, 2314987, -616328, -588411, -861141, -654983, + 657130, -914828, 1582696, 749472, 2211908, -249108, -749472, 1097364, 1784559, 1284195, + -347892, -2310693, -1209033, -1176821, 2145336, 1887638, 2441689, 1662152, 261993, 614180, + 2076617, 1984275, 1329292, 481036, 219043, 1346472, 1063004, 841814, 1692217, 35704064, + 10033044, 4604205, 5396627, 1078037, 5209796, -706522, -2211908, 49392, 1221918, 738734, + -319975, 1187559, 5323612, -637803, -3575560, -2229088, 2503966, 848256, 2946348, 5072357, + 4151086, -120259, 2720862, -2942053, 204011, -2246268, 3161096, 2063732, -3852586, 2342905, + -1898376, 435939, -1554778, 2372970, -1498944, 2933463, 2080912, 1956358, 3446711, 1340030, + -184684, -697932, -98784, 657130, 3837553, 68719, 2147, 455267, 1812476, 1447404, + 53687, -313533, -663572, -1906966, -444529, -1421634, -618475, 5089536, -15307263, -5961415, + -2637110, -3279208, -1758789, -1120987, 47245, 2349347, -2396592, -3908420, 3633542, -4733054, + -4872641, -678605, -1275605, 2317135, -1520418, 77309, -4718022, -2523293, -5654325, -5821828, + -6869800, -747324, 1359357, -4488241, -1451699, 843961, 302795, 380105, -798864, -4447439, + -3075197, 2186138, 575526, -901943, 4176856, -2755222, -1520418, 1267015, 2480344, 2366527, + -584116, -489626, 850404, 822486, -3042984, 433792, -1872606, -581968, 12885, -974958, + -49392, 2108829, 221191, -225486, 279173, -1967095, 1099512, 1928440, -581968, 90194, + 45097, -176094, -38732016, -12079596, -7389491, -2942053, -5340792, -4110284, -1322850, -2909840, + -1335735, -3912715, -5486821, -3777424, -1408749, -7909183, -2003602, -3169686, -4937065, -515396, + 743029, 2684355, -2927020, -3912715, -1567663, 3358665, 4116726, 5242008, 2677912, -64425, + -2639258, -1082332, -60130, -3068754, 1226213, 2211908, 2604898, -1756642, -1653562, -1387274, + -807454, -545461, -1187559, 2158221, -691490, 1425929, -2750927, -4550518, -2025077, -105227, + 2237678, -3929895, 1245541, -1848983, 1801739, -1883343, 1043677, -1563368, -167504, -992137, + -191126, 749472, 1395864, -934155, -1421634, 23622, -1417339, -22207128, 5927055, 1627793, + 34360, 3871913, -3719442, 977105, -8572755, -2813204, 2989297, 2089502, 5538361, -431644, + 6038724, -3547643, -889058, 2860448, -5254893, -1958505, -3094524, 5854041, -380105, -4911295, + 2445984, 4655745, -4183298, -3219078, -3770981, 1047972, -893353, 1984275, -1458141, -1234803, + -1030792, -2323577, 3298535, -2720862, 618475, 2130304, -302795, 2467459, -1490354, 5454609, + 792421, -605590, -1964948, -1967095, 42950, -2257005, -2731599, -1724429, 384400, 1825361, + -309238, 461709, -2394444, -2407329, -3395172, -1389422, -1120987, -936303, 895501, 1314260, + -1408749, 156766, 19142670, 27608050, 9442486, 9635759, 13000866, 9524090, -1378685, 1986422, + -1071594, 1881196, 1559073, 2531883, 1730872, 4844723, 1767379, 3096672, 889058, 9444633, + 2149631, 4722317, 2675765, 2568391, 7303592, 1919850, 9161165, 4932770, -1870458, 6672232, + 1692217, 3395172, 6470368, 1531156, 3854733, -1748052, -665720, 2050847, 2918430, -3721589, + 3390877, -2048699, -4286378, -2289218, 3573413, 5587753, 4063039, -521839, 1327145, 1494649, + 2018635, 3073049, 1636383, 3444564, 1947768, -2763812, -62277, 2503966, 3098819, 1198296, + 1024350, 822486, -3023657, -959925, -1859721, 2031520, -124554, 66486092, 4694400, -3055869, + 5025112, -3287798, 7191923, 2568391, 7567733, -3569118, 453119, 350040, 4436701, -8033737, + 1350767, 5686537, -1415192, -912681, 6631430, 11184095, -4797479, -2194728, 1052267, 5699422, + -2662880, 3822521, -90194, -3165391, -3182571, -2454574, 2040110, 3644280, 3547643, -2396592, + 3944928, -2364380, 3826816, 4028679, -1187559, -2080912, 1157494, -3558381, -5781026, 1606318, + -4026532, 1934883, 156766, 989990, 2132451, 352187, 2641405, 590558, -3985730, 1900523, + -1200443, 2196876, -2965675, -139586, 219043, 2312840, -1709397, -4350802, -1011465, -1655710, + 227633, -1232656, -22546430, -21938692, -4945655, 1668595, -959925, -3341485, -3564823, -4937065, + -1305670, 3579855, -1185411, -1284195, -5053029, 5263483, -324270, -4425964, -3788161, 9152575, + -8362302, 801011, 6081674, -785979, 981400, -8115341, 2540473, -3521873, 1894081, -5669357, + -3691525, 841814, 1451699, -2692945, -2967823, 197569, -1239098, 317828, -3466039, -2022930, + 3541201, -478889, -1722282, -1103807, 4511863, 1921998, -2639258, -4054449, -3560528, 1090922, + -586263, -1767379, 337155, 652835, -1982127, 5308580, 2886218, -665720, -468151, -1509681, + 601295, -1683627, -1623498, -1735167, -367220, -3165391, -2478196, -4215511, 899796, -4505421, + -214748, -1219771, -1125281, -347892, -9021579, -7380902, -9281424, -6328635, -4962835, -2967823, + 502511, 118112, -2506114, -702227, 1956358, 8078834, -7075959, 3657165, -2514703, -4114579, + 5330055, -259846, 884763, 7505456, 858993, 3285650, -4786741, -865436, -13522705, -1299228, + 2310693, 1868311, 942745, 1571958, 1666447, -2729452, -4194036, 3270618, -554051, 3103114, + 1247688, -3287798, 2697240, -66572, -9640054, -7546258, -1503239, -7129646, 758062, 2521146, + -700080, -1666447, -1041530, 551903, -2364380, -461709, -622770, -1060857, 2089502, 826781, + 560493, -1108102, -1148904, 3837553, 755914, -2143189, 2319282, -375810, -1879048, -3624953, + -92342, -1885491, -839666, 2894808, 1977833, 3064459, -43089260, -9805410, 622770, -8551280, + 3444564, 871878, 10320806, -4821101, 601295, -2826089, 6912750, -14111115, -13567802, 5727339, + -6582038, 10206990, 3676492, -8175470, -14366666, -313533, -4075924, -6951405, -2869038, 1653562, + 2310693, -3350075, 12277164, 674310, -1234803, -5123896, 4172561, 4670777, 5001490, 5405217, + -680752, -3176128, -1219771, 3201898, -261993, 3861176, -3631395, -1408749, -1256278, 4471061, + 3566970, -3889093, 5053029, -2808909, -3539053, 448824, -1614908, -3339337, 3446711, -3955665, + -536871, 1024350, -970663, -1604170, 897648, 3337190, -2070174, 3201898, -2643552, 2153926, + -1471026, -1634235, -1039382, 657130, 4108136, 760209, 3848291, -2435247, 39498668, 34720516, + 7256347, 9290014, -1848983, 11358041, 9092446, 11441793, -466004, 4610648, 2761664, -10694469, + -9070971, 5016522, 983548, -7645042, -8104604, -4494684, 534723, 4647155, 1363652, 10892037, + 9923522, 4391604, -2272038, -2351495, 6577743, 6197638, 506806, 5441724, -1717987, 6942815, + 408022, -1410897, 9586367, 5053029, 7868380, 5145371, 1752347, 5585605, 2796024, 1999307, + 5123896, -2699387, 1052267, 6863358, -36507, -4258460, 4054449, 4093104, 2894808, -2957085, + -38655, 4052302, 5978595, -2860448, 7221988, 8319352, -1382980, -4325032, 807454, 2005750, + 1320703, 3721589, 32212, 1413044, 2830384, -1868311, 253403, -2707977, -667867, -3695819, + -2136746, -337155, 47991964, 3839701, -1286343, 3317862, 2385854, -7922067, 2128156, 2074469, + 79457, 5044439, 7400229, 10896332, -4812511, -5014375, -7666517, -6322192, 7146826, -609885, + 10286447, -2510409, -2400887, 4157528, 8948564, 3474629, -8834748, 7002944, -2525441, 5592048, + -2864743, 4329327, -5289252, 3244848, -352187, 5091684, 704375, 2881923, 1657857, -9088151, + -4889821, -891206, -1748052, -897648, -2738042, 4310000, 1737314, 9266392, -1361505, -6425271, + -3635690, -689342, 637803, -7140383, 2471754, -2461016, -236223, -736587, -4063039, 3723737, + 7290707, -2319282, 3790309, 811749, -3970697, -433792, -3775276, -3259880, 723702, -5697274, + -3936338, 2308545, -212601, 1215476, 3951370, -5396627, 6451041, 682900, -2641405, -6412386, + 1857573, -2342905, 13821205, -3285650, -13230647, -8914205, -11929272, 11035918, -8817568, 2461016, + 13443248, -575526, -13675176, 955630, -14353781, 11965779, -4172561, 11927124, 68719, -4514011, + 10234907, 401579, 2123861, -7685844, -9736691, -1546188, 3425237, 2113124, -1900523, -4471061, + 4531191, -1367947, 3386582, 5224828, 6326487, 2944200, 3502546, -12807592, 1075889, -2890513, + -4378719, 1775969, 6365142, -5338645, -9844065, -4331475, 2894808, 1140314, -8647917, -3511136, + 4045859, 5922760, -5194763, -3369402, -3994320, 6060199, 8031589, 1638530, -2690797, 927713, + 5757404, -2738042, -216896, -3760244, 4041564, -4709432, -543313, 5624260, 3367254, -1617055, + -841814, -122407, -1795296, -48320528, -49012020, -7913477, -24043226, -14877767, -8555575, -13303661, + -1655710, 10073846, -21996676, 8040179, -4533338, 7335804, 1226213, 4501126, -9148280, 2325725, + -1185411, -4739497, -20186346, -4095251, -10520522, -12799003, -1385127, 3242700, 631360, -4350802, + 2738042, -4129611, -1277753, 10700911, -281320, -3560528, 609885, 7000797, 9347996, 6305012, + -53687, 5033702, 5757404, -569083, -6442, -10462540, 3781719, -8647917, 1554778, 8336532, + -5808944, -10473278, 2959233, -5877663, -5684389, 1155346, -154619, -4967130, 2338610, -1183264, + 11212012, 6330782, 3377992, 1389422, 4063039, -418759, 1170379, -4456029, -8078834, -1329292, + 609885, -5723044, -4045859, -3146064, -2757369, -3246995, 1702955, -1672890, -575526, -3601330, + -28771986, 53437984, 41873784, 2660732, 8493298, 3438121, 9264244, 14229227, 3214783, 13825500, + 2454574, -14441828, 9622874, 11671574, 3420942, 3536906, 8662949, 11506217, -11469710, 9612137, + -6062347, 8454643, 1234803, -6867653, 1322850, 9558450, 5355824, -11169062, 5430986, -4507568, + 16335908, -1262720, 3796751, -2403034, -10584947, 10767483, 10550587, 5177583, 2667175, -339302, + 3777424, 11428908, 2594160, 8216273, 981400, 5759551, 3027952, -594853, 6079526, -7232725, + -11523397, -4891968, -8796093, -7262790, -3835406, -7460358, 10239202, 7473243, 863288, -1657857, + -3689377, -1024350, -294205, 264141, 481036, 1619203, 2123861, 1378685, -236223, -2514703, + -2327872, -186831, -234076, -783832, 1140314, -985695, 6178311, -1187559, 8121783, 71766760, + -28237262, -14948634, 2372970, 81604, -3762391, -19619410, -8703751, 5319317, -1181116, -2594160, + -4101694, 3311420, -16544214, -4408784, 8276402, 16168404, 8467528, 7398081, -5304285, -4569845, + -9612137, 11237782, -15685221, -2437394, 3631395, -9934259, 3141769, 4653597, 12262132, -18788334, + -1806034, -68719, -4142496, 5332202, -17845590, -8937827, 19228568, 13058848, 2465311, -3062312, + 11405286, -3126736, -1700807, 2437394, 8877697, 5504001, -5808944, 1468879, -3474629, 7713762, + -12090333, -5080947, -7400229, -7297150, 14355928, 4271345, 1610613, -6146098, -734439, -1898376, + -2763812, -6455336, 889058, -6105296, -468151, 2482491, 5411659, -9408126, -6908455, -8282845, + -2808909, 4904853, 620623, 6420976, -1017907, -7677254, -1037235, -3309272, 3513283, -70867, + 21335250, 48859548, 8119636, 18595060, 16956530, 16110422, 5493263, 12025908, 7539815, -3582003, + -9846213, -6380174, -2778844, 13786845, -11748883, -13179107, -807454, -663572, -5272073, -10101763, + 29759828, 27803470, 21068962, 970663, -11875585, 2065879, 2085207, -6025839, 6925635, 4318590, + 12068858, 1342177, 4986457, -620623, -8138963, 13518410, 11347304, 8063801, -1840394, -10801843, + 762357, -869731, -2901251, -22013854, 15934329, -10052371, 18360986, 1000727, 9977209, -2134599, + 10992969, 16501264, 3408057, -7520488, -453119, 2997887, -5351530, 2873333, -2014340, -7058779, + -3743064, 2265595, -1604170, 6897718, 2557653, -11768210, 848256, -1647120, -12521977, -3006477, + 2675765, -4842576, 1490354, 10677289, 4505421, -661425, -3605625, -2884071, 332860, 4636417, + -1185411, 5134634, -51430084, -6786049, -32074816, 397284, 5596343, -10840497, -18777598, -21633750, + -20590074, -12128988, -16801912, -4075924, -1187559, -4299263, 5330055, -3311420, 1039382, 13179107, + 5851893, -1273458, 31059056, -6805376, 6176163, -4524748, 2553358, 4541928, 1597728, -1724429, + 4511863, 14592151, 4325032, 5179731, 1571958, 5849746, 12242804, 16978006, 5267778, 20596516, + -5572720, -17723182, 17854180, -5667210, -3837553, -3599183, 10065256, 15734613, 11781095, -292058, + -4153234, -8987219, -23008140, 14139032, 15981573, 11370926, -13771813, 8297877, 2065879, -1374390, + 12923557, 2203318, 8654359, -7258495, 4181151, -9049496, -951335, 7853348, -2370822, 5905580, + -1329292, -3307125, -3315715, -11027329, 1026497, 822486, -178241, 2115272, -2531883, -13608604, + 944893, 704375, -90067608, -40235252, 18169860, -3375844, -3216931, 3330747, -11403138, -9762461, + -3521873, -4335770, -15887084, 11244224, 1075889, 23633058, -13282186, -11160473, -19370302, -10636487, + -19943680, 1735167, 7099581, -29442000, 18915036, 16527034, -2501819, 3393024, 12270722, 1960653, + 10778220, -22282290, -22701050, -12390981, -14942191, -11267847, 36378372, 12030203, -8205535, -12994424, + -18867792, 8989367, 4866198, -8761733, 7133941, 7322919, -13357348, 1350767, 2785286, 10507637, + -12416750, 30204358, -13344463, -10398116, 4533338, -3131031, -330712, -8952859, -3586298, 1045825, + 18951544, -5830418, 27382564, 5980742, 1627793, 3182571, 7189776, -8162586, -3143916, -10767483, + -8957154, -8229158, -206158, 14948634, -9844065, -7002944, -4262755, -5443871, -5340792, -530428, + -3590593, -5016522, -4675072, 14214194, 45466524, 23394686, 14514842, 9878425, -15990163, 1644973, + -12929999, 20250770, -2177549, -2649995, 6895570, 4496831, 4724464, -554051, 7155416, 2632815, + 7556995, -6146098, 19797652, 2735894, -1754494, 59332824, 3274913, -4443144, -15118285, 8912057, + -14055280, 13320841, 31978180, -2403034, 7879118, 7975755, -16368120, -18268644, 618475, 506806, + 14093935, -8967892, 579821, -843961, 10408853, 10776073, 17858474, 6822556, 6249178, 7509751, + 835371, 11877732, 5555540, -21434034, 4715874, -10967199, -27616640, -2231236, 7898445, 317828, + 2426657, -3502546, 650688, -704375, -25770, 3680787, 732292, 12824772, -7434589, -974958, + 2594160, 2862596, 508954, -4636417, 8879845, 15060303, 14693083, 3277060, -2918430, -1254131, + 5342940, -448824, -1653562, -51540, 3042984, 7110319, -1013612, -2381559, -4709432, -2761664, + 67121752, -19907174, -6878390, -18549964, 34026880, 11866995, 3255585, 6322192, -4413079, -8310762, + 12298639, 616328, -11143293, 2538326, -14849849, -12090333, 1262720, -16020228, 2617783, 4610648, + -10984379, -20673826, 2435247, 627065, 14197014, 22011708, 16179142, -10988674, 358630, 13503377, + 26012470, -27135604, 10602127, -5452461, 92342, -12618614, -16580721, 1020055, 15906411, 4078072, + 7423851, 9274982, -517544, 6055904, -987843, 4213363, 10415296, -18234284, -11924977, 27270894, + -1644973, -1275605, -5708012, 10647224, 36406292, 8564165, 5970005, 11222750, -8866960, -11057393, + 577673, -8353712, -19960860, 12824772, 2278480, -10632192, 6225555, 2692945, -5229123, -10030896, + 13664438, -4883378, -15000173, 6917045, 7834021, 10657961, -10267119, 637803, 5373004, -2274185, + -3536906, 16172699, -706522, 2686502, -6723772, -1318555, 425202, 57183196, 53633404, -17257178, + 14437533, 4737349, 11164767, 29227252, -3818226, -14787572, -5540508, 56186764, -31638876, -5647882, + -15792595, -12139725, -25668872, 28280212, -8278550, -37632504, -28516436, -34299608, -13490492, 31054762, + -3837553, 14858439, -5602785, -15298674, 13514115, 4428112, 17164836, -16297253, 15264314, 12661564, + 6182606, 7537668, -27423366, 8291435, -22905060, 19709604, 40660456, 12253542, 12156905, -25486336, + 36412732, 10222022, -3874061, -5188321, -7473243, 11903502, 18189186, 4913443, -4301410, -581968, + 4891968, -8340827, -6350109, -8001524, -6597070, -197569, 13338021, -8452496, 19954418, 7694434, + 12206297, -3639985, -28656022, -18693846, 7290707, 2461016, -8551280, 11203422, -536871, -459562, + 5765994, -3502546, 8396661, -899796, -962073, 4614943, -4939213, -330712, -5338645, -2695092, + -6698002, 4943508, 365072, 1969243, -53068616, -32396938, 8128226, 3693672, 133144, -24053964, + 14368813, 7344394, -13795435, -39051992, 31797790, 7142531, 12034498, 17199196, 10827613, -5645735, + 6075231, -10310069, 26420492, -22348862, -37310380, -1861868, -1604170, -18461916, -40604620, 644245, + -8164733, -22123376, -11626476, -7380902, 9339406, 874026, 15191299, 29388314, -12622909, -25520696, + 7969312, -3601330, 429497, 11613592, -17495550, -16789028, -2072322, 13808320, -18957986, 15126875, + -5400922, 29832842, -4284230, -10312216, -3528316, -577673, 6174016, -35704064, 5098126, -31003222, + 30975304, -642098, 19445464, 10784663, -11826192, -2330020, -15693810, 6893423, -1709397, 5293547, + 5774584, -21633750, -3195456, -20907900, -8903467, 8121783, -6148246, -13166222, 5830418, -1032940, + -20879984, -11123965, 2134599, -152471, -8684424, 8207683, -4767414, -6221260, 4318590, -13408888, + 6414534, -75026640, -33316062, -13350906, -7438884, -3161096, 8615704, -26665304, -17688822, 5967857, + -20811264, 5961415, -23210004, -8375186, -22413286, -28935194, 30543660, 11469710, 5304285, -2628520, + -23684598, -42408508, 21580064, -55351392, 20607254, -32212, -16630113, 2029372, -9994389, 3330747, + 38813620, -19950124, -1187559, -41796476, 33056216, -10353019, 15509127, -15264314, -3974992, -4170413, + -700080, 18234284, 7402376, 38884488, 48586816, -5849746, 1548336, -16627966, 2611340, -6987912, + 8300025, 14377403, 2733747, 33717640, 10636487, -13681618, 6375879, 6335077, 1060857, -3264175, + 1941325, 25439092, -18734648, -40346924, -15360951, -238371, 10191957, 6040872, 20740398, -2823941, + 9360881, -10838350, -15021648, -22840636, -16716013, 672162, -4760971, 9910637, 3730179, -6889128, + -1881196, 18122614, 581968, 9700184, -3655017, 2780991, -3712999, -5179731, -7050189, 94280976, + 42402064, 28943784, 12313671, -10965052, -16960826, -29693256, 16582869, 28074054, 11909944, -13430363, + 33599528, 18592914, 33595236, 2078764, -23897198, -9554155, 50332720, -52473764, -10501195, 34396244, + -20237886, -11665131, 81146968, -10322954, 23377506, 73181944, -11514807, -4992900, -1885491, 8952859, + -3805341, 31643172, 20721070, 26055420, -18285824, -43486544, 17592186, -17248588, 21090436, -8269960, + 7838316, 30739080, 18174154, 1666447, 13872744, 6122476, 13372381, 29721174, 17126182, -3317862, + 29328184, 12038793, 4443144, 6777459, 53775140, 31950262, 375810, 29016800, -12539157, 36717676, + -8860518, 8005819, -10136123, 4297115, 21436182, -11817603, -511101, -2194728, 7664369, 715112, + -13486197, 455267, -11497627, -21268678, 3899830, -28278064, 11315091, 17197050, -6710887, -12154757, + -7739531, 15058155, 4851166, 732292, -5952825, 122228328, 54840288, -24421184, 10385231, 63292784, + 1215476, 45788648, -13636521, 18285824, 37671160, -28293098, 3193308, 66486092, 59201828, 48692044, + 16842714, 41860900, 6745246, 36737004, 12461848, 11325829, -23031762, -26452704, -38296076, -75086768, + 23785528, 1196148, -20708184, -6908455, 25844966, -16827682, -2830384, 3253438, 14431090, -66488240, + -11038066, 48788680, 37095632, -13172665, 24434068, 21378200, 13432510, -7868380, -15749645, -6423124, + -10666551, -6440304, -24893630, -20641612, 16892106, -41293964, 13563507, 34477848, -10335839, -24034636, + -38169376, 35944580, -1316408, -17652316, -11957189, -7876970, -13226352, 7838316, -6210523, -12899934, + 13335873, 55778740, -27895812, -16320876, 6893423, -10428181, 12614319, 854699, 28404766, 5871221, + -2957085, -2044404, -29865056, -13662291, -4784594, 2884071, 2123861, 10980084, 6401649, 1593433, + 4610648, 5881958, 17355962, 1808181, 326418, -11010149, 3738769, -48408576, -13209172, -58136676, + -12356621, -58095876, 28067612, -55357832, 29923038, -9773198, -31668942, -9869835, -14682346, 67242008, + 10735271, -49340584, 1224066, -32285270, -25013890, 33034740, -37209448, -34868692, -38845832, 58656368, + -7614977, 38665444, -59547576, -32087700, 24142012, -28067612, 23048942, 64969972, 43119324, 40149356, + 7249905, -7056632, -31263066, -45092860, -2044404, 9871982, -41289668, 792421, -24174224, 11942157, + 18781892, -47766480, -40091372, -74788264, -11280732, 5057324, -31705448, -46269684, 45932528, 2261300, + 47175920, 45820860, -5207648, -6532646, -18197776, 26426934, 23368918, 3279208, 11783243, -3773129, + -1885491, 22370338, -5435281, -26214332, -19658066, -32996086, -27227946, -10234907, -785979, -4511863, + -41212360, -24161338, 14100378, 3201898, -14319421, 18008798, -3126736, 985695, 28752658, 23379654, + 15560667, 6030134, 18625126, 2765959, 1047972, 8465381, 6517613, -81585048, -14903537, 7960722, + -8312909, 833224, 21562884, -17514876, 19095424, 19469086, -13711683, 26102664, -36000416, 44936096, + 29615946, 2224793, -33217278, 3328600, 20862804, -95451352, 19228568, 39928164, -69591352, 29055454, + -35983236, -49808736, -46774340, 24105504, -12236362, -71083856, 37864432, 21361020, -44197360, -71927816, + 13973676, 9281424, -23600846, -4567698, -38057704, 35809288, 28252294, 51775832, -41598904, 7372312, + -55009940, -19816980, 8630737, -34005404, 13705241, -3590593, -27986006, -40248140, -45017700, 65487512, + -44394928, -19924354, -17171280, 3438121, 29012504, 18367428, 20959440, 949188, 24648818, -7818988, + 3315715, -10048076, -27593018, 6025839, 56751552, 9650792, 575526, 508954, -37793564, 24831354, + 37931004, 41109280, 7312182, 3745212, -2525441, -2484639, 5076652, 1535451, -19192062, 339302, + 2942053, 3455301, -491774, 1125281, 13505525, -4200478, 1050120, -2849711, -21475, 25649544, + -54606216, -29083372, -57662084, 16391743, -10198400, 22870700, -15672336, 10819023, 18951544, -19355270, + -32893008, 49140868, -12839805, -21951578, 57193932, -11789685, -13247827, 65270616, -37705516, 9586367, + 16056735, 5068062, -57505316, 169651, -8323647, -34632468, 19868518, -27210766, 36715528, -6468221, + 40860172, -44637596, 27831388, -79023104, 964220, -43121472, 48202416, -7425999, 6672232, -8293582, + -43750684, -3193308, 38306812, 100824360, 7546258, 6335077, 21530672, 34458524, -5740224, -9715216, + 3262028, -1733019, 88789856, -8040179, 13776108, 35605280, -34441344, -59075128, 307090, -62431644, + -7541963, -32053340, -22866406, -12526272, -26231512, 14832670, 22104050, -36361192, 46027016, 38132868, + -5321465, -9442486, -37366216, 26195006, 9431748, 24848534, -20884278, 10277857, -3949223, 18796924, + 2304250, 18187040, -9105331, 13340168, -2108829, 335007, 4582730, 20630876, 10028749, 6326487, + -6637872, 536871, 2042257, 95163592, 103386304, 874026, -31928786, -25396142, 86558624, -56910464, + -65165392, 67703720, -61570504, 39586712, 11834782, 54784456, 50242528, 34129956, 5278515, -34419868, + -29974576, 71066680, -30361124, -3008625, 17115444, 60544008, 87359632, -2632815, 59609852, -48958332, + -51380692, 5808944, -19123342, 28286654, 17688822, -43662636, 5729487, 27797028, 71792528, 24590836, + 29283088, 27109834, 31978180, 8323647, -2772402, 45732812, 7799661, 36578088, 58295592, 12242804, + -24326694, -20422570, 52518860, 13851270, 107994808, 25293062, 42410656, -44130788, -69677256, -6659347, + -81314472, -51924008, -18743238, -27704686, 2783139, -4114579, 384400, 1129576, -60881160, -50182396, + -26776974, -51820928, 18676666, 20605106, -15955804, -4009352, -48374216, -7546258, 13913547, -13696651, + -4402342, 4924180, -30636002, 12698071, -9605694, 3635690, 5111011, 184684, 1801739, 6597070, + -7529078, 1140314, 6788196, -272730, 1408749, 2057289, -45202384, -158937408, -65622804, -129708016, + -29115584, -45341968, -18339510, 11834782, -42548092, -51500952, -82390360, -65483220, 58538256, -10402411, + -52417928, -55679956, 12607876, -74098920, -104576008, 17280800, -24346022, -22391812, -22477712, 20139102, + -62328564, 65622804, -38137164, 44581760, -31024696, -29759828, 725850, 36017596, -50820200, -48513804, + 26064010, -9148280, 71798968, -31419834, 41156524, 61924840, 29433410, -22499186, -10271414, -6418829, + 50785840, -17763984, 34106336, 68560560, -57535380, -100364792, -39517996, 34119220, 41811508, -47324096, + 77990160, -25037512, -28151364, -9356586, -8504035, -24079734, -63088776, -26620208, -65184720, -62395136, + -38656852, 46166604, 10928544, -11016591, 4269198, 71350144, 67010080, 4814659, -30906584, 12852690, + -6942815, 29435558, 9285719, -12695923, -29416232, -2555506, -5823976, -46737836, -12025908, 17931488, + 48717816, -21644488, 163209, 18657338, -27193586, -747324, -1769527, 938450, -14100378, 18339510, + 1221918, 4868346, -2121714, 2881923, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS][2870] ={ { -118112, - -34360, -64425, -38655, -98784, -17180, -158914, -36507, -513249, 352187, -34360, - 354335, -77309, 156766, 947040, -105227, -1127429, -1114544, -369367, -685047, 90194, - -554051, -1509681, 429497, -380105, -268435, 399432, 128849, -508954, -790274, -1030792, - 139586, -620623, -375810, 216896, -1082332, 966368, 1013612, -581968, -68719, -373662, - -1009317, 90194, -908386, -719407, 700080, -466004, 1050120, 4378719, -1900523, 1943473, - -820339, 695785, -25770, 1017907, -438087, 255551, 435939, 523986, 558346, 966368, - -234076, 115964, 1765232, 1322850, -3468186, 693637, -442382, 178241, -1178969, 783832, - -1486059, 1488206, 1234803, 612033, -188979, -463856, -543313, 1058710, 970663, -429497, - 223338, 1823214, -676457, -32212, -616328, 219043, 283468, -45097, -511101, 858993, - 133144, -257698, 650688, 17585744, -1269163, 2450279, -42950, 777389, 339302, 592706, - 403727, 1683627, -968515, 710817, -343597, 292058, 925565, 1440962, 575526, 279173, - -691490, 1312113, -949188, 500364, -440234, -1382980, 143881, 481036, 49392, -431644, - 122407, -483184, 908386, -1866163, 435939, -431644, 493921, -19327, -2615635, -908386, - 266288, 414464, 302795, -453119, -590558, -511101, 371515, 1013612, -418759, 448824, - 10608569, -12532715, 2508261, -3008625, 1655710, -1947768, 1531156, -2665027, -794569, -1642825, - -294205, -1367947, 126702, 2467459, 3588445, 1505386, 805306, 70867, 1133871, 2568391, - 1870458, -1161789, -1395864, -1868311, -882616, -1075889, 109522, -169651, -154619, 57982, - 556198, -865436, 1118839, -1140314, -1516124, 564788, -10737, 118112, 332860, -1054415, - -1191853, 371515, -719407, -981400, -173946, 143881, 783832, -24303072, 4844723, -1224066, - 616328, 523986, -2035815, -916976, 1932735, -315680, 165356, 2168959, 702227, -828929, - -1511829, 1511829, 130997, -1833951, -2626373, -3801046, 1226213, -1690070, 390842, -547608, - 710817, -388695, 268435, -1973538, -1947768, -1215476, -519691, -1228361, 367220, -594853, - 693637, 2280628, 392990, 397284, 1509681, 416612, 350040, -49392, -296353, -1505386, - -356482, 350040, -277025, -70867, -29053306, 10872710, -2712272, 3491809, -1705102, 2518998, - -1389422, -392990, -2476049, 1906966, -2931315, 1954210, -500364, 2733747, -3710852, 966368, - 3461744, 1022202, -2914135, -1022202, -1752347, -719407, 1108102, 575526, 820339, -446677, - -989990, -1393717, -1367947, -103079, -1569811, -261993, -1458141, -1020055, -4056597, -1120987, - -566936, 238371, 96637, 1425929, 605590, 1404454, -141734, 1632088, 384400, 163209, - 403727, 3627100, 12652974, -3489661, 5613523, -3405909, 1468879, -3674345, 2892661, -264141, - 3152506, -251256, -315680, 3098819, -511101, -429497, 2710124, -1322850, -2486786, -3964255, - 3521873, -285615, 2409477, 281320, 1711545, 828929, -2299955, 979253, 934155, -154619, - 1187559, 1814624, -2287070, 302795, -68719, -193274, -1312113, -590558, -1284195, 350040, - -266288, 992137, 2965675, 115964, 1503239, -266288, 289910, -317828, 455267, 1200443, - -545461, 38201588, -9421011, 3631395, -1823214, 3214783, -1404454, 2467459, -1372242, 848256, - -3717294, 1726577, -3549791, 2718714, -1084479, 803159, -1032940, 3828963, 526134, 964220, - -1836099, 2501819, -223338, -1153199, 2130304, -1649268, -2561948, 66572, -798864, 1224066, - -10737, -382252, -835371, 373662, -83752, 483184, -1763084, 416612, -779537, 2753074, - -513249, 1318555, 249108, 1108102, 2061584, -1415192, 111669, 478889, -702227, 1619203, - -332860, 3219078, -19814832, 7825431, -6113886, 3607773, -3045132, 1047972, -4013647, 2607045, - -1604170, 3642132, -405874, 1589138, -3201898, -1350767, -208306, -1163936, -1086627, 4200478, - -3096672, 534723, 1956358, -3837553, 987843, 1357210, -962073, 1320703, 442382, 760209, - -2443837, -214748, -783832, 1507534, -1217623, 824634, -2884071, -581968, 2110977, 1020055, - 670015, -734439, -433792, -2201171, -2340757, 1273458, 474594, -103079, -343597, -204011, - 208306, 206158, -489626, -478889, 289910, 307090, -803159, -32031866, 10492605, -5671505, - 1455994, -528281, 1791001, -2398739, 2594160, -1058710, -901943, -313533, 1876901, -1009317, - -1498944, 1099512, 3609920, -493921, 152471, -6045167, 521839, 100932, 2950643, -955630, - -453119, -4621385, -1582696, 60130, 88047, 1610613, 2209761, -3491809, -3204046, 2074469, - 521839, -3599183, -2763812, 1357210, 783832, -210453, -105227, -1380832, 1415192, -433792, - 517544, 186831, -1887638, -796716, 1009317, -2914135, -1458141, -581968, 616328, -584116, - 51540, -1455994, -126702, -31976032, 14151917, -7818988, 5939940, -5454609, 2705830, -6208375, - 1432372, -4048007, 6390912, -3234110, 2254858, -395137, 47245, -2929168, -835371, -1211181, - 5785321, -1099512, 2952790, 4687957, 2690797, 693637, -624918, 1125281, -1024350, 2624225, - 2536178, 360777, -1275605, 446677, 485331, -1748052, -785979, 1327145, 1906966, -1438814, - -1408749, -1458141, 96637, -605590, 816044, -1406602, 1005022, -2211908, 652835, -1213328, - -81604, 225486, -878321, -1202591, -1529008, -1434519, -1902671, 238371, -1735167, 11877732, - 12343736, -4559108, 4112431, -5005785, 775242, 1524713, 137439, -1999307, 2306398, 592706, - 4894115, 2555506, 5525476, -839666, 3262028, -880468, 2087354, 2911988, -384400, -4024384, - 3850438, -414464, 1623498, -895501, 2147, 556198, 4707284, 706522, -2544768, -858993, - 627065, -1400159, 3551938, 1520418, -545461, -914828, -1999307, 1586990, -1958505, 2025077, - 2126009, -1556926, 1224066, 1105954, 573378, -150324, 3448859, 2134599, 2527588, -90194, - 315680, 1136019, -723702, -277025, -225486, -736587, -8590, 188979, 324270, -605590, - -1417339, -1483911, 36105644, -12891344, 4477504, -6025839, 4110284, -3968550, 5282810, -1812476, - 246961, -3962107, 7930657, -1140314, 7146826, 446677, 1224066, -4788889, 1709397, 7185481, - -2209761, -6047314, 893353, 257698, 2804614, -4359392, 3573413, -34360, 313533, -377957, - -4209068, -1234803, 702227, -5057324, 839666, 2061584, 1692217, -1419487, -401579, -186831, - 2372970, 717260, -403727, -1035087, 1848983, 1277753, 4591320, 1187559, -682900, 2566243, - 1028645, -261993, 848256, 1947768, 1284195, 270583, 309238, -1488206, 322123, -143881, - 1902671, -195421, 753767, -206158, 676457, 12088185, -17463338, 10462540, -7765301, 3266323, - 1181116, -792421, -659278, 2076617, -4395899, -2796024, -2276333, -1773822, -6010807, 3045132, - -5583458, -225486, -4466766, 1640678, -3362960, -2649995, -1337882, 5078799, 712965, 4941360, - 2596308, 3386582, 4891968, 253403, -620623, -749472, 1378685, 3758097, -313533, -274878, - -2510409, 1906966, -304943, -1501091, 1393717, 1159641, 3925600, 1602023, 1851131, -2780991, - -1292785, -163209, -515396, 1913408, -5617817, 1213328, -1380832, -949188, -1741609, -1973538, - -665720, -1952063, 794569, -1365800, -223338, -2965675, -2909840, -2147, -37061272, -8098161, - 1698660, -7030862, -2905546, 298500, -223338, -5991480, 1713692, -5967857, 171799, 4799626, - -897648, -798864, 2632815, 1726577, 2680060, 156766, 3242700, -1799591, 916976, 3764539, - -259846, -236223, -2471754, 3584150, -2780991, -1524713, 934155, 1451699, 2731599, 8443906, - -2317135, -1372242, -3644280, 208306, -2686502, 642098, -1075889, -3970697, -253403, 5085242, - 1425929, -3423089, -1709397, 1690070, -2083059, -2594160, 478889, -1221918, 292058, 541166, - 3193308, 461709, 1563368, 846109, -2701535, -1374390, 1681480, 1586990, -1093069, 949188, - -221191, -45427868, 37495064, -13106093, 11141145, -8207683, 6274947, -2381559, 3996467, -4355097, - 2682207, 3128884, 4524748, -2944200, 5478231, 2710124, 9320079, -1458141, 785979, -4932770, - 1251983, -1728724, -3081639, -3820374, -4395899, -4050154, 6043019, -272730, 7256347, 1883343, - 1331440, -122407, 925565, -3201898, 515396, -1168231, 1511829, 4299263, 770947, 1417339, - 255551, 448824, -3266323, -1788854, -124554, -249108, 438087, -996432, -3008625, 73014, - 3231963, -1039382, 953483, 940598, -2667175, 1833951, 790274, 1009317, -547608, 304943, - -289910, -833224, 238371, 2903398, 26472030, -4071629, -8540542, -2967823, -1799591, -1372242, - -7524783, -3951370, 2098092, 1290638, 2147484, 2677912, -5057324, 2044404, -992137, 1818919, - 8111046, -8196945, 2834679, 2843268, 2207613, -2110977, -4743792, 3704409, 1103807, 2654290, - 4999342, 15032, 6891275, 607738, 3204046, 279173, 2175401, -1881196, 2607045, 1889786, - 2488934, -947040, 828929, -184684, 3191161, 3944928, -5826123, 7874823, 672162, 2209761, - 350040, 1382980, 1531156, -1644973, 4720169, 2559801, 188979, 4331475, 1844689, -2360085, - -191126, -1574106, -1705102, -1275605, 792421, -319975, 274878, -88047, -4810364, 2497524, - -1900523, 697932, -639950, -264141, -1185411, -667867, 20980916, 1836099, 4275640, -5426691, - -1026497, -13481902, 3225521, -644245, -9161165, 7685844, -4239133, 274878, 5641440, 2538326, - 4236985, -3240553, 1872606, -4249870, 85899, -3635690, 1363652, -5525476, 7926362, 5718749, - 4681515, 5454609, 1217623, -1801739, -3420942, 1544041, 4355097, 12885, 2969970, -2141041, - 607738, 2884071, 2040110, 2596308, 188979, 934155, -322123, -1846836, 1844689, -1277753, - 865436, 760209, -1887638, 2581275, -3489661, 3128884, -1634235, 2214056, 3375844, -4110284, - 416612, 483184, -1677185, -3236258, 2295660, -5252745, -4060892, 2529736, 1067299, 1183264, - 1022202, 3281355, 3152506, -1133871, 444529, 1919850, -755914, -6442, 33094870, -27511414, - 9335111, -6846178, 2424509, 8598525, 6992207, -4610648, 8383776, 4722317, 5065914, -3468186, - 2360085, -1769527, 9953587, 2768107, 2815351, 3854733, 4215511, 2671470, 2881923, -8173323, - 1314260, -14774687, -5138929, -1370095, -8463233, 2128156, 4541928, -3191161, -4589173, -5398774, - -5184026, -2765959, 2980707, 2351495, -7524783, -8705899, -667867, -4440996, 2377265, 1934883, - 831076, -622770, 4121021, -2162516, 210453, -573378, -1844689, -5592048, 4335770, 7359427, - -994285, -921271, 3461744, -5186173, 6298570, 1625645, -3191161, -118112, -2963528, -1247688, - -749472, -2119566, -566936, -1432372, -4340065, 1131724, 1559073, 1466731, 1546188, 498216, - -51217484, 5083094, -4571993, 1879048, 5218386, 3745212, 10445360, -4297115, -365072, 839666, - 12504797, 4340065, -9801115, -6405944, 5514738, 7393786, -1859721, -2800319, -208306, 3408057, - 7642895, 7763154, -115964, -13915694, -4028679, -1443109, -1675037, 8061654, -3712999, 4702989, - 457414, -893353, -7221988, 560493, 5740224, -9242770, -5418101, -2183991, -1623498, -4391604, - -3665755, -8643622, -1602023, -5866926, 47245, 1249836, 6210523, -4258460, -2804614, 517544, - -635655, 951335, -5375152, 2085207, 2022930, 650688, 289910, -4075924, -3693672, -2070174, - -1170379, -341450, -6944962, 1387274, 2005750, -3015067, -6386617, 2523293, -324270, -3219078, - -646393, -1509681, -1080184, 4005057, -30081950, 31924492, -4561256, 2014340, 7520488, 9019431, - -6796786, 4342212, 1715839, 5570573, 3773129, 7864085, 4443144, -5325760, -8851928, 1258425, - 9365176, 18708878, -4524748, -6354404, 4896263, 3038689, -3579855, -9217000, -1881196, -1853278, - -8345122, 7303592, 8693014, 137439, 2016487, -171799, 6833293, -5336497, -16544214, 6975027, - -1992865, 5534066, 2643552, 234076, -4103841, -6356552, 4395899, 5211943, 3796751, -738734, - -347892, 5731634, 3208341, 1767379, -3423089, 4825396, 4020090, -667867, -1260573, -2796024, - 3296388, 107374, -8169028, 6717329, 4009352, -1520418, 1917703, -1015760, 210453, -154619, - 1984275, 528281, 2441689, 3962107, 2108829, -603443, -2407329, -1582696, 5705864, 2272038, - -1080184, -1750199, -287763, 8993662, 369367, -6923488, -14181982, 3431679, -738734, -11701638, - 3955665, -3876208, 547608, -4430259, -3453154, 3689377, 8909910, 1099512, 11802570, 5355824, - -5939940, -7806103, 12914967, -5598490, -412317, 1155346, -12120398, -90194, 6414534, -7033009, - -1864016, 8117488, 515396, 4241280, 126702, 5345087, -901943, -3627100, -485331, 7097434, - 9584220, -3141769, 1947768, 1666447, 6393059, -3805341, -667867, 1245541, -1614908, 4146791, - 1876901, 343597, -2175401, 3317862, 3689377, 191126, 182536, 2759517, 4314295, -5179731, - -17180, 1445257, 2368675, -2652142, 2147484, 1063004, 77309, 1503239, -1636383, 721555, - 1715839, 3577708, 4325032, -3487514, 395137, 67171144, -6414534, 1159641, 4226248, -5978595, - -10363756, -6004365, -2544768, -11791833, -12670154, 1022202, -11216307, -4900558, -3206193, -2723009, - 6966437, 8117488, 2598455, 16939352, 3111704, -8310762, 14594299, -1404454, 10348724, -3238405, - -1035087, -9526237, 412317, 8536248, -242666, -4075924, -1595580, 923418, -2078764, -1735167, - 3322157, -7572028, 3141769, 1204738, -3571265, -7179038, -4861903, 5641440, 5542656, 6618545, - -11020886, 6277095, 1752347, -199716, 547608, 1163936, 1264868, 1503239, -899796, 659278, - 5892695, -1580548, 2342905, 2813204, -2396592, 4926328, 5600638, 1000727, -455267, 5207648, - 3702262, 2907693, 3498251, -4243428, -1960653, 1071594, -440234, -564788, 322123, 2372970, - 652835, -4110284, -39462160, -66170412, 23903640, -1717987, 9919227, -11613592, 504659, -13447543, - -1782411, -19372450, 8310762, 8877697, -476741, -1546188, -287763, 1758789, -4672925, -16522739, - 30298846, 2063732, -3938485, 10363756, 1799591, -5527623, 14519137, 16149077, -7009387, 9509058, - 1801739, -2106682, -15238544, -8358007, 11809013, -6148246, 1617055, -863288, 8007967, -12427488, - -13984414, 1926293, 141734, -9457518, 5617817, 1110249, -5939940, 4110284, -6536940, -5439576, - 2499671, 2422362, 272730, -1782411, -3122441, 3809636, 6414534, 897648, 1964948, -1913408, - -1941325, 5617817, 599148, 1219771, -5858336, -1382980, -3940633, 3135326, 4653597, -8590, - 3813931, -107374, 5108864, -4254165, 2518998, -111669, -341450, -4022237, -137439, -3455301, - -547608, -21272974, 63909112, -28394028, 4782446, 4179003, 16026670, -2037962, 10234907, -10114648, - 627065, -19391778, -3706557, 92342, 7816841, 1292785, 8050916, -5561983, -11768210, 1518271, - -17703856, -18668076, 551903, -6137509, -330712, 1591285, 2688650, -4632122, -3079492, -6667937, - -10086731, 4063039, 4915590, -13161927, -5935645, -16542067, 283468, -7310035, 5967857, 6951405, - -13602161, 2145336, 11274289, 10121090, -5220533, 3685082, -3848291, -1928440, 3201898, -6171868, - -1290638, 5740224, 4520453, 3932043, 4861903, 2574833, -1393717, 3788161, 2540473, -2843268, - -105227, 7730941, -768799, -3566970, -1088774, 3184718, -3270618, -7919920, -528281, -2770254, - 2068027, 1677185, -1108102, -3212636, -4722317, -5585605, 5699422, -1900523, -176094, -1258425, - -354335, -704375, -52800180, -16357383, 5944235, -8349417, 7535520, -3485366, 73014, -15564961, - -18698140, -2542621, -6545530, 7825431, 2231236, -2278480, -38646116, 19396072, 1378685, 16902844, - 21028160, 14542759, -20203526, -4937065, -1954210, -5048734, 4361540, 4791036, -345745, -7365869, - 8175470, -13670881, -7303592, 12126840, 627065, -5229123, 14199162, 313533, 14894947, -5151814, - -2379412, 1767379, 4668630, -10666551, -7870528, -1879048, 8392366, -3058017, 1365800, -3360812, - 5611375, 7030862, 1370095, 373662, -12365211, -1290638, 6060199, 6786049, -3867618, 7602092, - 2510409, -2104534, 1990717, -7724499, -2409477, -5168993, 5102421, 798864, -1799591, 1838246, - -13187697, 83752, 2523293, 6317897, 2091649, -3459596, 6120329, 579821, -8306467, -3783866, - -4254165, -1172526, 1765232, 33792804, 11394548, -20332376, -3474629, -8761733, 7075959, -12277164, - 10258529, -2291365, 11931419, 8284992, 14486925, -19486266, 23422604, -14375256, 13715978, -7868380, - 8235600, 1537598, 6998649, -12468290, -28537910, 11083163, 19935090, -7226283, 8209830, -10125385, - 2437394, -6650757, 20963736, -204011, -2010045, 4988605, -10097468, -7071664, -5894843, 9171903, - 154619, -3382287, 73014, -1810329, 14424648, 9629317, -5308580, 4655745, 5527623, -5963562, - -3395172, -5370857, -10819023, -1498944, 285615, -1473174, -3940633, -11038066, -395137, 16862042, - 9206262, -7041599, 9468255, -1005022, -105227, 7904888, 4185446, -8038032, 3092377, 1797444, - 8360154, 9957882, -7851200, 3594888, 5862631, 7604240, -620623, -216896, -2680060, -1385127, - 4320737, -691490, 7812546, -1739462, 71534824, -58435176, -9850507, 2858301, -1187559, -16196322, - 5351530, 4161823, 22799834, -7548405, 4430259, 18726058, 444529, 11235634, 37076304, -8134668, - -2484639, -19393924, -18144090, 764504, 6077379, -8218420, 3457449, 32682554, 18876382, 2656437, - 1170379, 2602750, 18056042, -15182709, -6755984, -901943, 9279277, -1511829, 2179696, -7730941, - 2828236, -13683766, -8080981, -10359461, 98784, -9283572, 2138894, -16490527, 7511898, -32890860, - -8473970, 4447439, 5995775, -1284195, -7638600, 2486786, 899796, 3882651, -9053791, 3944928, - -5330055, -5991480, -14562087, -10851235, -3259880, -1857573, 637803, 2409477, 4569845, 835371, - 2143189, -8695161, -137439, -10602127, -1668595, -775242, 201863, 3466039, 10456098, -6637872, - -3021510, -740882, -5703717, -9783936, 2093797, -45397804, -31638876, -2461016, -6515466, 23602992, - 644245, 4260608, -29841432, 1410897, 3947075, 1578401, 2153926, 17798344, -22473416, 4602058, - -4904853, -15522012, -7604240, 14081050, -5108864, 11441793, -4088809, 6575595, 3493956, -2523293, - -1898376, 7460358, -1161789, -242666, -19260780, 9328669, 8431021, 7960722, 9186935, -17308718, - -17839146, 10166188, 15217069, -18601504, 6661495, 2503966, 15814070, 9032316, 1393717, 10576357, - -5785321, -11291469, -1818919, -21631602, -15824807, -1913408, -934155, 3242700, -10383083, 3399467, - -8355859, -27681064, -8207683, -7595650, -27283780, -135291, -4574140, -3354370, 2961380, 8265665, - -8128226, 5025112, 3309272, -12446815, -7973607, -9612137, -2153926, -2982855, -395137, -4082367, - 5061619, -6156836, -1660005, -5261335, 8776766, -10065256, 5744519, -1756642, -2325725, 341450, - 2375117, -2518998, -28271622, 42988328, -22604412, -9657234, -13230647, 3382287, 3676492, 6320045, - -2750927, 18756122, 14132590, -13503377, -23959476, 8944269, -9006546, 22003118, 1788854, 9386651, - 11542725, -8349417, -8106751, 29242284, -16784732, -4060892, -8529805, 1013612, -3526168, 3869766, - -4969277, -1960653, -22585086, 19900730, -6966437, -1786706, 23551454, -16155519, -20360292, 1829656, - -9238475, -13404593, -88047, -6878390, 5336497, -29379724, -9756018, -7224135, -693637, 10325101, - 146029, 2042257, 5368709, -5059472, 4108136, 6889128, 5993627, 6534793, -3732327, -6251325, - -5411659, 7430294, -17738214, -3914863, -4153234, -4423817, 11662984, -7907035, -12393128, 12562779, - 3884798, 7546258, 14987288, -5519033, -4937065, 7337952, -8022999, -10264972, -9363029, 5555540, - 4346507, -5602785, 5214091, 1666447, 6141803, 1037235, -11162620, 7460358, -3663607, -59126668, - 29527900, 31814970, 16282221, 14783277, -10608569, 15025943, -25567940, 801011, -30034706, -3983582, - -13136157, 13887777, -14385993, -11952894, -3307125, -22046068, 6414534, -10106058, 9665824, -20699594, - 34383360, -11375221, 16215649, -14199162, 1331440, -14227079, -4589173, 7735236, 21992380, 24665998, - -12451110, 25770, -7380902, -13131863, -10037339, -35388384, -919123, 5845451, -33298882, 12882754, - 6474663, 9025874, 15820512, 9947144, 5250598, -11237782, -3734474, -12526272, -6405944, 6579890, - -26656714, 10398116, 5108864, 1619203, -12648679, -7488276, 6728067, 21335250, 8912057, 5454609, - -8546985, 8847633, 1138166, -10252087, 2632815, -7441031, -11703786, -6131066, -2851858, -10593537, - 11839077, 6685117, 9609989, 5312875, -8869107, 2789581, 14815490, -3047279, 13750338, 7269232, - 5001490, 9257802, -5018670, -5703717, 3476776, 2334315, 48930416, -33711200, -14160507, -4327180, - -206158, 23798414, -4567698, 7758859, -13799730, 7333657, -8600672, -38753488, -26665304, -9970767, - 13808320, -1717987, -21449066, -20109036, -42273216, -13683766, 5330055, 5643587, 1876901, -4413079, - -2564096, -13155485, 3350075, 5424544, 7090991, 1571958, -2010045, -5130339, -20212116, -5209796, - -4657892, 10052371, -2190433, -16144782, -6395207, 4571993, -18135500, 3015067, -18700288, 10282152, - 14467597, -13913547, -27026082, -5297842, -8559870, -12427488, 1209033, 2345052, 2564096, 6521908, - 249108, -10677289, 16806208, 26139170, -12749610, 10780368, 4299263, 12330851, -19097572, 7063074, - 2317135, 6672232, -27429808, 21500606, 2523293, 2321430, -3423089, -15732465, 3962107, 1857573, - 3732327, 4647155, -17134772, -9126806, 3259880, 7872675, -4408784, -148176, 6231998, 2372970, - -3171833, -8304320, 5811091, 79675936, -44409960, 4148939, -4404489, -9401683, -33124936, -1713692, - -1778117, 27088358, 12406013, 54644868, -21644488, 2181844, 6019397, 13153337, -5534066, -2433099, - 22166326, -13799730, 31879394, 19389630, -44214540, 42271068, 14907831, -15133317, -10960757, -16514149, - -8628589, 3118146, 1964948, -11845520, 28052578, 3680787, -13411035, -11802570, 2753074, -14632954, - -25997438, 339302, 15539192, 6266358, 18891414, -8684424, 5881958, 20313048, 29100550, 6949257, - -30109868, 9966472, -9693741, -16518444, 4383014, 12818330, 7316477, -3599183, -27337466, -23854248, - 33704756, -4376572, 26044682, 3055869, -10273562, 12841952, -22606560, -9938554, 10881300, -2854006, - 22393960, -17952964, -35708360, -9962177, -1769527, -10904922, -8579197, 22258668, -7453916, 4138201, - -20405390, -19853486, 9713069, 5164698, 8177618, -8622147, 8347269, 904091, -4788889, -981400, - -90089088, -58643484, 21124796, -30614526, 9380209, -15446850, -54631984, -40501540, 72230616, -33681132, - 32450626, 18202072, -19250044, 16595754, -11059541, 22535694, 25003152, -1937030, -7499013, 43164420, - -14441828, -49422188, 489626, -20877836, 4698694, 4342212, 29096256, 15283641, 5802501, 14091788, - -13552769, -307090, 31887984, 20280836, -6126771, 7984344, -28763396, -44285408, -32734094, -22980222, - -6680822, -6573448, 7818988, -4421669, -12575664, 27865748, 7090991, -21507048, -20145544, -6034429, - 7866233, -21668110, 8201240, 25973814, -858993, 9526237, -18395344, 13696651, 9876277, 2909840, - 10080288, -16226386, -24908662, -34930968, 17044578, 13297219, 858993, 13194140, 2226941, -16211354, - -3680787, 876173, -28011776, -2854006, -43329776, -23972360, 6844031, -11321534, 7907035, 676457, - -6027987, -6210523, -4385162, -8351564, 7282117, -128849, -1614908, -107359152, 36565204, -8549132, - -7058779, 19172734, 4690105, 10690174, 46748572, 27910844, 35298188, 17763984, 48208860, -8478265, - -47010564, 6923488, -5312875, -20134806, -41654740, -18159122, 36352604, 8252780, -2557653, 7593502, - -2815351, 515396, 30620970, 3897683, 11330124, -4636417, 7537668, 30556544, -8504035, -20544976, - 15468325, -36487896, -36728412, -23568634, -4702989, 1020055, 15126875, 35811436, 483184, -12348031, - -35762044, -58471684, -20654498, -8523363, -3571265, -380105, 21509196, -26787712, 48191680, 25097642, - -4668630, 13907104, -19093278, 3476776, 313533, 22346714, 43046308, 29113436, -25469156, -10647224, - 7131793, -4073777, -5491116, 2244121, -13191992, -41768556, -3244848, -7685844, -3077344, 6575595, - -16355235, -5467494, -28598040, -3002182, 3925600, 29899414, 14579266, 4224101, 4743792, 7580618, - 863288, -25243670, 5136781, -5849746, 6676527, -3040837, -3401614, -13795435, 2080912, -14538464, - 43974024, 44510892, 15335181, 29890824, 21657372, 46690588, -40432824, 48528836, -58491012, -9996536, - 55357832, 75780400, 16095390, -4449586, 27822798, -22842784, -26673894, 54919748, 9167608, -8059506, - 13657996, 44223132, -11164767, 27262304, -8443906, -10636487, -4891968, 20160576, -50442244, -5839008, - 25061134, -10911364, 2967823, -17615808, 10915659, 40608916, -36747740, 12363063, -10623602, 13531294, - -19037442, 27412628, 2680060, 10153303, 11340861, -44613972, 22370338, -62264140, -12373801, 35910220, - 4209068, -21979496, 39623220, -13140452, -23291608, 28879360, -11336566, -7724499, -4121021, 17613660, - -2211908, 4960687, -33842196, 12859132, 3536906, 67345088, -49954764, -21494164, 6337224, -12515535, - 15453292, 19305878, -23852100, 47238196, 17858474, 229781, 8027294, 16123307, -7254200, -24932286, - 10353019, -12642236, 4516158, -4711579, 12528420, -15635828, 5224828, 620623, -8222715, 11227045, - -3451006, -2390149, -876173, 89730456, -55963424, 2252710, -8888435, -14877767, 1928440, -20396800, - -8570607, -66228396, -55413668, -55192476, 18599356, -11443940, 18382460, -12541305, -40102108, 64201172, - 44764296, -29697552, -24930138, -35076996, -7273527, 13808320, 21234318, 26027502, -1752347, 20160576, - -5697274, -25280178, -30872224, 19421842, -14018773, 58613420, 36749888, 54067196, 7672959, 19705310, - 53244708, 36928128, -11598559, 9781788, -2297808, 734439, 5703717, -24715390, -17772574, 9618579, - -30925912, -31866510, 30986042, 35229468, -38487200, -1202591, 68567008, 47775068, -2381559, -22585086, - -4917738, 14252849, 12942884, -9206262, -25443386, 30672508, -1986422, 7559143, 21994528, 27893666, - -29072634, 12571369, -4711579, 11630771, -45232448, 8433168, 40965400, -40662604, -33384780, -17293686, - 18229988, 32328218, -18163416, 17811230, -15648713, -1546188, 1002875, 6779606, 12154757, -5585605, - -2428804, 7393786, 6852621, 135291, -852551, 5355824, 72690176, 28028956, -9633612, -2272038, - 22842784, -27114128, -35296040, 30401926, -42183020, -54619100, 14596446, -29268054, -37774236, -19651622, - 36202280, 88753352, 36754184, -48157320, 90868624, 10640781, -14175540, 16469052, -52971980, 13593571, - 7378754, -37903088, 32929514, -10110353, 6536940, -27253714, 15418933, -24895778, 45999100, -54309860, - -20005958, -18680960, 25965224, 30047592, 26699664, -28799904, 8489003, -30112016, -8654359, 16250009, - 38437808, 17867064, -17626546, 37553048, 19104014, 30322470, 2040110, 35326108, -15375983, 19597936, - -53556096, 60329260, -5218386, 8527658, -15953656, -31228708, 1608465, 20255066, 48075716, 14291504, - -57505316, 24678882, -23270132, 47528108, 4088809, -17925046, 9171903, -15476915, 9865540, -33320356, - 13376676, 3358665, 2911988, 5529771, -6564858, 3624953, -9032316, -13862007, 18743238, 11933567, - 10797548, -24650964, 8169028, -13288629, 11574937, 2787434, -1556926, 5989332, 2759517, -148502784, - 6779606, 25108378, 58669252, 19419694, -91255168, 122088744, 44929652, -55600500, 20332376, 121429464, - 27502824, -29237990, -3401614, -73252816, 38014756, 3697967, -18500572, 10782515, 25436944, -47435768, - 25759066, -59491740, 6603512, -54206784, -48608292, -20622286, 23304492, 35188668, -26429082, 30799210, - -52731460, -7425999, 59908352, 5708012, -21163452, -6801081, 11978664, -13604309, -39004744, -43709884, - -5467494, -19958714, 43396348, -60226180, 64372968, 20585778, 8577050, -21238614, -6640020, 29807074, - -23583666, 40142912, 10322954, 36303212, -12904229, -20768314, -62831076, 21805548, -5948530, -65023656, - 20014548, -4234838, 40147208, 64085208, -26542898, 14684493, 31991064, 33773476, 7365869, -19357418, - -3328600, -78797616, -3367254, 7342247, 19997368, -281320, 53566832, 11611444, 26901528, -29706142, - -20813412, 39814348, -3530463, -7971460, 24588688, -5484673, -6186901, -356482, -753767, 2675765, - -3719442, 22226456, 183854672, 83496312, 16930762, 29399052, -38358352, -25926570, -9502615, 69133944, - -49950468, 7355132, -41656888, -113939040, -54936928, 25454124, -29534342, 18174154, -45492292, -2823941, - -48874580, 40900972, -49478024, -35729832, -105780752, -20169166, -17104708, -28192166, 54226108, -18352396, - -44480828, 13750338, 41699836, 15150497, 13767518, -6844031, -9472550, -28342490, 20968030, -36331128, - -10262824, -22776212, -63329292, 9030169, -44132936, 17055316, 5001490, -13297219, -2029372, -46226732, - -3223373, -10919954, 66236984, -19761144, -2214056, 26686780, -37301792, -16784732, 67216240, -40108552, - 25295210, 1277753, 59702192, 85259392, -5705864, 10593537, 7892003, 29184302, 14836965, -65906272, - 5321465, 16063178, 22402550, -28477780, -44259636, 4103841, 11959336, -11860552, -17267916, -70643624, - -35341140, -40825812, 2113124, 8407398, -13954349, -19741818, -22640920, -5828271, -11731703, -12725988, - 13883482, -7329362, 6339372, -25686052, 1056562, -10185515, -18249316, 3676492, 9524090, }, + -34360, -64425, -38655, -98784, -17180, -158914, -36507, -513249, 352187, -34360, + 354335, -77309, 156766, 947040, -105227, -1127429, -1114544, -369367, -685047, 90194, + -554051, -1509681, 429497, -380105, -268435, 399432, 128849, -508954, -790274, -1030792, + 139586, -620623, -375810, 216896, -1082332, 966368, 1013612, -581968, -68719, -373662, + -1009317, 90194, -908386, -719407, 700080, -466004, 1050120, 4378719, -1900523, 1943473, + -820339, 695785, -25770, 1017907, -438087, 255551, 435939, 523986, 558346, 966368, + -234076, 115964, 1765232, 1322850, -3468186, 693637, -442382, 178241, -1178969, 783832, + -1486059, 1488206, 1234803, 612033, -188979, -463856, -543313, 1058710, 970663, -429497, + 223338, 1823214, -676457, -32212, -616328, 219043, 283468, -45097, -511101, 858993, + 133144, -257698, 650688, 17585744, -1269163, 2450279, -42950, 777389, 339302, 592706, + 403727, 1683627, -968515, 710817, -343597, 292058, 925565, 1440962, 575526, 279173, + -691490, 1312113, -949188, 500364, -440234, -1382980, 143881, 481036, 49392, -431644, + 122407, -483184, 908386, -1866163, 435939, -431644, 493921, -19327, -2615635, -908386, + 266288, 414464, 302795, -453119, -590558, -511101, 371515, 1013612, -418759, 448824, + 10608569, -12532715, 2508261, -3008625, 1655710, -1947768, 1531156, -2665027, -794569, -1642825, + -294205, -1367947, 126702, 2467459, 3588445, 1505386, 805306, 70867, 1133871, 2568391, + 1870458, -1161789, -1395864, -1868311, -882616, -1075889, 109522, -169651, -154619, 57982, + 556198, -865436, 1118839, -1140314, -1516124, 564788, -10737, 118112, 332860, -1054415, + -1191853, 371515, -719407, -981400, -173946, 143881, 783832, -24303072, 4844723, -1224066, + 616328, 523986, -2035815, -916976, 1932735, -315680, 165356, 2168959, 702227, -828929, + -1511829, 1511829, 130997, -1833951, -2626373, -3801046, 1226213, -1690070, 390842, -547608, + 710817, -388695, 268435, -1973538, -1947768, -1215476, -519691, -1228361, 367220, -594853, + 693637, 2280628, 392990, 397284, 1509681, 416612, 350040, -49392, -296353, -1505386, + -356482, 350040, -277025, -70867, -29053306, 10872710, -2712272, 3491809, -1705102, 2518998, + -1389422, -392990, -2476049, 1906966, -2931315, 1954210, -500364, 2733747, -3710852, 966368, + 3461744, 1022202, -2914135, -1022202, -1752347, -719407, 1108102, 575526, 820339, -446677, + -989990, -1393717, -1367947, -103079, -1569811, -261993, -1458141, -1020055, -4056597, -1120987, + -566936, 238371, 96637, 1425929, 605590, 1404454, -141734, 1632088, 384400, 163209, + 403727, 3627100, 12652974, -3489661, 5613523, -3405909, 1468879, -3674345, 2892661, -264141, + 3152506, -251256, -315680, 3098819, -511101, -429497, 2710124, -1322850, -2486786, -3964255, + 3521873, -285615, 2409477, 281320, 1711545, 828929, -2299955, 979253, 934155, -154619, + 1187559, 1814624, -2287070, 302795, -68719, -193274, -1312113, -590558, -1284195, 350040, + -266288, 992137, 2965675, 115964, 1503239, -266288, 289910, -317828, 455267, 1200443, + -545461, 38201588, -9421011, 3631395, -1823214, 3214783, -1404454, 2467459, -1372242, 848256, + -3717294, 1726577, -3549791, 2718714, -1084479, 803159, -1032940, 3828963, 526134, 964220, + -1836099, 2501819, -223338, -1153199, 2130304, -1649268, -2561948, 66572, -798864, 1224066, + -10737, -382252, -835371, 373662, -83752, 483184, -1763084, 416612, -779537, 2753074, + -513249, 1318555, 249108, 1108102, 2061584, -1415192, 111669, 478889, -702227, 1619203, + -332860, 3219078, -19814832, 7825431, -6113886, 3607773, -3045132, 1047972, -4013647, 2607045, + -1604170, 3642132, -405874, 1589138, -3201898, -1350767, -208306, -1163936, -1086627, 4200478, + -3096672, 534723, 1956358, -3837553, 987843, 1357210, -962073, 1320703, 442382, 760209, + -2443837, -214748, -783832, 1507534, -1217623, 824634, -2884071, -581968, 2110977, 1020055, + 670015, -734439, -433792, -2201171, -2340757, 1273458, 474594, -103079, -343597, -204011, + 208306, 206158, -489626, -478889, 289910, 307090, -803159, -32031866, 10492605, -5671505, + 1455994, -528281, 1791001, -2398739, 2594160, -1058710, -901943, -313533, 1876901, -1009317, + -1498944, 1099512, 3609920, -493921, 152471, -6045167, 521839, 100932, 2950643, -955630, + -453119, -4621385, -1582696, 60130, 88047, 1610613, 2209761, -3491809, -3204046, 2074469, + 521839, -3599183, -2763812, 1357210, 783832, -210453, -105227, -1380832, 1415192, -433792, + 517544, 186831, -1887638, -796716, 1009317, -2914135, -1458141, -581968, 616328, -584116, + 51540, -1455994, -126702, -31976032, 14151917, -7818988, 5939940, -5454609, 2705830, -6208375, + 1432372, -4048007, 6390912, -3234110, 2254858, -395137, 47245, -2929168, -835371, -1211181, + 5785321, -1099512, 2952790, 4687957, 2690797, 693637, -624918, 1125281, -1024350, 2624225, + 2536178, 360777, -1275605, 446677, 485331, -1748052, -785979, 1327145, 1906966, -1438814, + -1408749, -1458141, 96637, -605590, 816044, -1406602, 1005022, -2211908, 652835, -1213328, + -81604, 225486, -878321, -1202591, -1529008, -1434519, -1902671, 238371, -1735167, 11877732, + 12343736, -4559108, 4112431, -5005785, 775242, 1524713, 137439, -1999307, 2306398, 592706, + 4894115, 2555506, 5525476, -839666, 3262028, -880468, 2087354, 2911988, -384400, -4024384, + 3850438, -414464, 1623498, -895501, 2147, 556198, 4707284, 706522, -2544768, -858993, + 627065, -1400159, 3551938, 1520418, -545461, -914828, -1999307, 1586990, -1958505, 2025077, + 2126009, -1556926, 1224066, 1105954, 573378, -150324, 3448859, 2134599, 2527588, -90194, + 315680, 1136019, -723702, -277025, -225486, -736587, -8590, 188979, 324270, -605590, + -1417339, -1483911, 36105644, -12891344, 4477504, -6025839, 4110284, -3968550, 5282810, -1812476, + 246961, -3962107, 7930657, -1140314, 7146826, 446677, 1224066, -4788889, 1709397, 7185481, + -2209761, -6047314, 893353, 257698, 2804614, -4359392, 3573413, -34360, 313533, -377957, + -4209068, -1234803, 702227, -5057324, 839666, 2061584, 1692217, -1419487, -401579, -186831, + 2372970, 717260, -403727, -1035087, 1848983, 1277753, 4591320, 1187559, -682900, 2566243, + 1028645, -261993, 848256, 1947768, 1284195, 270583, 309238, -1488206, 322123, -143881, + 1902671, -195421, 753767, -206158, 676457, 12088185, -17463338, 10462540, -7765301, 3266323, + 1181116, -792421, -659278, 2076617, -4395899, -2796024, -2276333, -1773822, -6010807, 3045132, + -5583458, -225486, -4466766, 1640678, -3362960, -2649995, -1337882, 5078799, 712965, 4941360, + 2596308, 3386582, 4891968, 253403, -620623, -749472, 1378685, 3758097, -313533, -274878, + -2510409, 1906966, -304943, -1501091, 1393717, 1159641, 3925600, 1602023, 1851131, -2780991, + -1292785, -163209, -515396, 1913408, -5617817, 1213328, -1380832, -949188, -1741609, -1973538, + -665720, -1952063, 794569, -1365800, -223338, -2965675, -2909840, -2147, -37061272, -8098161, + 1698660, -7030862, -2905546, 298500, -223338, -5991480, 1713692, -5967857, 171799, 4799626, + -897648, -798864, 2632815, 1726577, 2680060, 156766, 3242700, -1799591, 916976, 3764539, + -259846, -236223, -2471754, 3584150, -2780991, -1524713, 934155, 1451699, 2731599, 8443906, + -2317135, -1372242, -3644280, 208306, -2686502, 642098, -1075889, -3970697, -253403, 5085242, + 1425929, -3423089, -1709397, 1690070, -2083059, -2594160, 478889, -1221918, 292058, 541166, + 3193308, 461709, 1563368, 846109, -2701535, -1374390, 1681480, 1586990, -1093069, 949188, + -221191, -45427868, 37495064, -13106093, 11141145, -8207683, 6274947, -2381559, 3996467, -4355097, + 2682207, 3128884, 4524748, -2944200, 5478231, 2710124, 9320079, -1458141, 785979, -4932770, + 1251983, -1728724, -3081639, -3820374, -4395899, -4050154, 6043019, -272730, 7256347, 1883343, + 1331440, -122407, 925565, -3201898, 515396, -1168231, 1511829, 4299263, 770947, 1417339, + 255551, 448824, -3266323, -1788854, -124554, -249108, 438087, -996432, -3008625, 73014, + 3231963, -1039382, 953483, 940598, -2667175, 1833951, 790274, 1009317, -547608, 304943, + -289910, -833224, 238371, 2903398, 26472030, -4071629, -8540542, -2967823, -1799591, -1372242, + -7524783, -3951370, 2098092, 1290638, 2147484, 2677912, -5057324, 2044404, -992137, 1818919, + 8111046, -8196945, 2834679, 2843268, 2207613, -2110977, -4743792, 3704409, 1103807, 2654290, + 4999342, 15032, 6891275, 607738, 3204046, 279173, 2175401, -1881196, 2607045, 1889786, + 2488934, -947040, 828929, -184684, 3191161, 3944928, -5826123, 7874823, 672162, 2209761, + 350040, 1382980, 1531156, -1644973, 4720169, 2559801, 188979, 4331475, 1844689, -2360085, + -191126, -1574106, -1705102, -1275605, 792421, -319975, 274878, -88047, -4810364, 2497524, + -1900523, 697932, -639950, -264141, -1185411, -667867, 20980916, 1836099, 4275640, -5426691, + -1026497, -13481902, 3225521, -644245, -9161165, 7685844, -4239133, 274878, 5641440, 2538326, + 4236985, -3240553, 1872606, -4249870, 85899, -3635690, 1363652, -5525476, 7926362, 5718749, + 4681515, 5454609, 1217623, -1801739, -3420942, 1544041, 4355097, 12885, 2969970, -2141041, + 607738, 2884071, 2040110, 2596308, 188979, 934155, -322123, -1846836, 1844689, -1277753, + 865436, 760209, -1887638, 2581275, -3489661, 3128884, -1634235, 2214056, 3375844, -4110284, + 416612, 483184, -1677185, -3236258, 2295660, -5252745, -4060892, 2529736, 1067299, 1183264, + 1022202, 3281355, 3152506, -1133871, 444529, 1919850, -755914, -6442, 33094870, -27511414, + 9335111, -6846178, 2424509, 8598525, 6992207, -4610648, 8383776, 4722317, 5065914, -3468186, + 2360085, -1769527, 9953587, 2768107, 2815351, 3854733, 4215511, 2671470, 2881923, -8173323, + 1314260, -14774687, -5138929, -1370095, -8463233, 2128156, 4541928, -3191161, -4589173, -5398774, + -5184026, -2765959, 2980707, 2351495, -7524783, -8705899, -667867, -4440996, 2377265, 1934883, + 831076, -622770, 4121021, -2162516, 210453, -573378, -1844689, -5592048, 4335770, 7359427, + -994285, -921271, 3461744, -5186173, 6298570, 1625645, -3191161, -118112, -2963528, -1247688, + -749472, -2119566, -566936, -1432372, -4340065, 1131724, 1559073, 1466731, 1546188, 498216, + -51217484, 5083094, -4571993, 1879048, 5218386, 3745212, 10445360, -4297115, -365072, 839666, + 12504797, 4340065, -9801115, -6405944, 5514738, 7393786, -1859721, -2800319, -208306, 3408057, + 7642895, 7763154, -115964, -13915694, -4028679, -1443109, -1675037, 8061654, -3712999, 4702989, + 457414, -893353, -7221988, 560493, 5740224, -9242770, -5418101, -2183991, -1623498, -4391604, + -3665755, -8643622, -1602023, -5866926, 47245, 1249836, 6210523, -4258460, -2804614, 517544, + -635655, 951335, -5375152, 2085207, 2022930, 650688, 289910, -4075924, -3693672, -2070174, + -1170379, -341450, -6944962, 1387274, 2005750, -3015067, -6386617, 2523293, -324270, -3219078, + -646393, -1509681, -1080184, 4005057, -30081950, 31924492, -4561256, 2014340, 7520488, 9019431, + -6796786, 4342212, 1715839, 5570573, 3773129, 7864085, 4443144, -5325760, -8851928, 1258425, + 9365176, 18708878, -4524748, -6354404, 4896263, 3038689, -3579855, -9217000, -1881196, -1853278, + -8345122, 7303592, 8693014, 137439, 2016487, -171799, 6833293, -5336497, -16544214, 6975027, + -1992865, 5534066, 2643552, 234076, -4103841, -6356552, 4395899, 5211943, 3796751, -738734, + -347892, 5731634, 3208341, 1767379, -3423089, 4825396, 4020090, -667867, -1260573, -2796024, + 3296388, 107374, -8169028, 6717329, 4009352, -1520418, 1917703, -1015760, 210453, -154619, + 1984275, 528281, 2441689, 3962107, 2108829, -603443, -2407329, -1582696, 5705864, 2272038, + -1080184, -1750199, -287763, 8993662, 369367, -6923488, -14181982, 3431679, -738734, -11701638, + 3955665, -3876208, 547608, -4430259, -3453154, 3689377, 8909910, 1099512, 11802570, 5355824, + -5939940, -7806103, 12914967, -5598490, -412317, 1155346, -12120398, -90194, 6414534, -7033009, + -1864016, 8117488, 515396, 4241280, 126702, 5345087, -901943, -3627100, -485331, 7097434, + 9584220, -3141769, 1947768, 1666447, 6393059, -3805341, -667867, 1245541, -1614908, 4146791, + 1876901, 343597, -2175401, 3317862, 3689377, 191126, 182536, 2759517, 4314295, -5179731, + -17180, 1445257, 2368675, -2652142, 2147484, 1063004, 77309, 1503239, -1636383, 721555, + 1715839, 3577708, 4325032, -3487514, 395137, 67171144, -6414534, 1159641, 4226248, -5978595, + -10363756, -6004365, -2544768, -11791833, -12670154, 1022202, -11216307, -4900558, -3206193, -2723009, + 6966437, 8117488, 2598455, 16939352, 3111704, -8310762, 14594299, -1404454, 10348724, -3238405, + -1035087, -9526237, 412317, 8536248, -242666, -4075924, -1595580, 923418, -2078764, -1735167, + 3322157, -7572028, 3141769, 1204738, -3571265, -7179038, -4861903, 5641440, 5542656, 6618545, + -11020886, 6277095, 1752347, -199716, 547608, 1163936, 1264868, 1503239, -899796, 659278, + 5892695, -1580548, 2342905, 2813204, -2396592, 4926328, 5600638, 1000727, -455267, 5207648, + 3702262, 2907693, 3498251, -4243428, -1960653, 1071594, -440234, -564788, 322123, 2372970, + 652835, -4110284, -39462160, -66170412, 23903640, -1717987, 9919227, -11613592, 504659, -13447543, + -1782411, -19372450, 8310762, 8877697, -476741, -1546188, -287763, 1758789, -4672925, -16522739, + 30298846, 2063732, -3938485, 10363756, 1799591, -5527623, 14519137, 16149077, -7009387, 9509058, + 1801739, -2106682, -15238544, -8358007, 11809013, -6148246, 1617055, -863288, 8007967, -12427488, + -13984414, 1926293, 141734, -9457518, 5617817, 1110249, -5939940, 4110284, -6536940, -5439576, + 2499671, 2422362, 272730, -1782411, -3122441, 3809636, 6414534, 897648, 1964948, -1913408, + -1941325, 5617817, 599148, 1219771, -5858336, -1382980, -3940633, 3135326, 4653597, -8590, + 3813931, -107374, 5108864, -4254165, 2518998, -111669, -341450, -4022237, -137439, -3455301, + -547608, -21272974, 63909112, -28394028, 4782446, 4179003, 16026670, -2037962, 10234907, -10114648, + 627065, -19391778, -3706557, 92342, 7816841, 1292785, 8050916, -5561983, -11768210, 1518271, + -17703856, -18668076, 551903, -6137509, -330712, 1591285, 2688650, -4632122, -3079492, -6667937, + -10086731, 4063039, 4915590, -13161927, -5935645, -16542067, 283468, -7310035, 5967857, 6951405, + -13602161, 2145336, 11274289, 10121090, -5220533, 3685082, -3848291, -1928440, 3201898, -6171868, + -1290638, 5740224, 4520453, 3932043, 4861903, 2574833, -1393717, 3788161, 2540473, -2843268, + -105227, 7730941, -768799, -3566970, -1088774, 3184718, -3270618, -7919920, -528281, -2770254, + 2068027, 1677185, -1108102, -3212636, -4722317, -5585605, 5699422, -1900523, -176094, -1258425, + -354335, -704375, -52800180, -16357383, 5944235, -8349417, 7535520, -3485366, 73014, -15564961, + -18698140, -2542621, -6545530, 7825431, 2231236, -2278480, -38646116, 19396072, 1378685, 16902844, + 21028160, 14542759, -20203526, -4937065, -1954210, -5048734, 4361540, 4791036, -345745, -7365869, + 8175470, -13670881, -7303592, 12126840, 627065, -5229123, 14199162, 313533, 14894947, -5151814, + -2379412, 1767379, 4668630, -10666551, -7870528, -1879048, 8392366, -3058017, 1365800, -3360812, + 5611375, 7030862, 1370095, 373662, -12365211, -1290638, 6060199, 6786049, -3867618, 7602092, + 2510409, -2104534, 1990717, -7724499, -2409477, -5168993, 5102421, 798864, -1799591, 1838246, + -13187697, 83752, 2523293, 6317897, 2091649, -3459596, 6120329, 579821, -8306467, -3783866, + -4254165, -1172526, 1765232, 33792804, 11394548, -20332376, -3474629, -8761733, 7075959, -12277164, + 10258529, -2291365, 11931419, 8284992, 14486925, -19486266, 23422604, -14375256, 13715978, -7868380, + 8235600, 1537598, 6998649, -12468290, -28537910, 11083163, 19935090, -7226283, 8209830, -10125385, + 2437394, -6650757, 20963736, -204011, -2010045, 4988605, -10097468, -7071664, -5894843, 9171903, + 154619, -3382287, 73014, -1810329, 14424648, 9629317, -5308580, 4655745, 5527623, -5963562, + -3395172, -5370857, -10819023, -1498944, 285615, -1473174, -3940633, -11038066, -395137, 16862042, + 9206262, -7041599, 9468255, -1005022, -105227, 7904888, 4185446, -8038032, 3092377, 1797444, + 8360154, 9957882, -7851200, 3594888, 5862631, 7604240, -620623, -216896, -2680060, -1385127, + 4320737, -691490, 7812546, -1739462, 71534824, -58435176, -9850507, 2858301, -1187559, -16196322, + 5351530, 4161823, 22799834, -7548405, 4430259, 18726058, 444529, 11235634, 37076304, -8134668, + -2484639, -19393924, -18144090, 764504, 6077379, -8218420, 3457449, 32682554, 18876382, 2656437, + 1170379, 2602750, 18056042, -15182709, -6755984, -901943, 9279277, -1511829, 2179696, -7730941, + 2828236, -13683766, -8080981, -10359461, 98784, -9283572, 2138894, -16490527, 7511898, -32890860, + -8473970, 4447439, 5995775, -1284195, -7638600, 2486786, 899796, 3882651, -9053791, 3944928, + -5330055, -5991480, -14562087, -10851235, -3259880, -1857573, 637803, 2409477, 4569845, 835371, + 2143189, -8695161, -137439, -10602127, -1668595, -775242, 201863, 3466039, 10456098, -6637872, + -3021510, -740882, -5703717, -9783936, 2093797, -45397804, -31638876, -2461016, -6515466, 23602992, + 644245, 4260608, -29841432, 1410897, 3947075, 1578401, 2153926, 17798344, -22473416, 4602058, + -4904853, -15522012, -7604240, 14081050, -5108864, 11441793, -4088809, 6575595, 3493956, -2523293, + -1898376, 7460358, -1161789, -242666, -19260780, 9328669, 8431021, 7960722, 9186935, -17308718, + -17839146, 10166188, 15217069, -18601504, 6661495, 2503966, 15814070, 9032316, 1393717, 10576357, + -5785321, -11291469, -1818919, -21631602, -15824807, -1913408, -934155, 3242700, -10383083, 3399467, + -8355859, -27681064, -8207683, -7595650, -27283780, -135291, -4574140, -3354370, 2961380, 8265665, + -8128226, 5025112, 3309272, -12446815, -7973607, -9612137, -2153926, -2982855, -395137, -4082367, + 5061619, -6156836, -1660005, -5261335, 8776766, -10065256, 5744519, -1756642, -2325725, 341450, + 2375117, -2518998, -28271622, 42988328, -22604412, -9657234, -13230647, 3382287, 3676492, 6320045, + -2750927, 18756122, 14132590, -13503377, -23959476, 8944269, -9006546, 22003118, 1788854, 9386651, + 11542725, -8349417, -8106751, 29242284, -16784732, -4060892, -8529805, 1013612, -3526168, 3869766, + -4969277, -1960653, -22585086, 19900730, -6966437, -1786706, 23551454, -16155519, -20360292, 1829656, + -9238475, -13404593, -88047, -6878390, 5336497, -29379724, -9756018, -7224135, -693637, 10325101, + 146029, 2042257, 5368709, -5059472, 4108136, 6889128, 5993627, 6534793, -3732327, -6251325, + -5411659, 7430294, -17738214, -3914863, -4153234, -4423817, 11662984, -7907035, -12393128, 12562779, + 3884798, 7546258, 14987288, -5519033, -4937065, 7337952, -8022999, -10264972, -9363029, 5555540, + 4346507, -5602785, 5214091, 1666447, 6141803, 1037235, -11162620, 7460358, -3663607, -59126668, + 29527900, 31814970, 16282221, 14783277, -10608569, 15025943, -25567940, 801011, -30034706, -3983582, + -13136157, 13887777, -14385993, -11952894, -3307125, -22046068, 6414534, -10106058, 9665824, -20699594, + 34383360, -11375221, 16215649, -14199162, 1331440, -14227079, -4589173, 7735236, 21992380, 24665998, + -12451110, 25770, -7380902, -13131863, -10037339, -35388384, -919123, 5845451, -33298882, 12882754, + 6474663, 9025874, 15820512, 9947144, 5250598, -11237782, -3734474, -12526272, -6405944, 6579890, + -26656714, 10398116, 5108864, 1619203, -12648679, -7488276, 6728067, 21335250, 8912057, 5454609, + -8546985, 8847633, 1138166, -10252087, 2632815, -7441031, -11703786, -6131066, -2851858, -10593537, + 11839077, 6685117, 9609989, 5312875, -8869107, 2789581, 14815490, -3047279, 13750338, 7269232, + 5001490, 9257802, -5018670, -5703717, 3476776, 2334315, 48930416, -33711200, -14160507, -4327180, + -206158, 23798414, -4567698, 7758859, -13799730, 7333657, -8600672, -38753488, -26665304, -9970767, + 13808320, -1717987, -21449066, -20109036, -42273216, -13683766, 5330055, 5643587, 1876901, -4413079, + -2564096, -13155485, 3350075, 5424544, 7090991, 1571958, -2010045, -5130339, -20212116, -5209796, + -4657892, 10052371, -2190433, -16144782, -6395207, 4571993, -18135500, 3015067, -18700288, 10282152, + 14467597, -13913547, -27026082, -5297842, -8559870, -12427488, 1209033, 2345052, 2564096, 6521908, + 249108, -10677289, 16806208, 26139170, -12749610, 10780368, 4299263, 12330851, -19097572, 7063074, + 2317135, 6672232, -27429808, 21500606, 2523293, 2321430, -3423089, -15732465, 3962107, 1857573, + 3732327, 4647155, -17134772, -9126806, 3259880, 7872675, -4408784, -148176, 6231998, 2372970, + -3171833, -8304320, 5811091, 79675936, -44409960, 4148939, -4404489, -9401683, -33124936, -1713692, + -1778117, 27088358, 12406013, 54644868, -21644488, 2181844, 6019397, 13153337, -5534066, -2433099, + 22166326, -13799730, 31879394, 19389630, -44214540, 42271068, 14907831, -15133317, -10960757, -16514149, + -8628589, 3118146, 1964948, -11845520, 28052578, 3680787, -13411035, -11802570, 2753074, -14632954, + -25997438, 339302, 15539192, 6266358, 18891414, -8684424, 5881958, 20313048, 29100550, 6949257, + -30109868, 9966472, -9693741, -16518444, 4383014, 12818330, 7316477, -3599183, -27337466, -23854248, + 33704756, -4376572, 26044682, 3055869, -10273562, 12841952, -22606560, -9938554, 10881300, -2854006, + 22393960, -17952964, -35708360, -9962177, -1769527, -10904922, -8579197, 22258668, -7453916, 4138201, + -20405390, -19853486, 9713069, 5164698, 8177618, -8622147, 8347269, 904091, -4788889, -981400, + -90089088, -58643484, 21124796, -30614526, 9380209, -15446850, -54631984, -40501540, 72230616, -33681132, + 32450626, 18202072, -19250044, 16595754, -11059541, 22535694, 25003152, -1937030, -7499013, 43164420, + -14441828, -49422188, 489626, -20877836, 4698694, 4342212, 29096256, 15283641, 5802501, 14091788, + -13552769, -307090, 31887984, 20280836, -6126771, 7984344, -28763396, -44285408, -32734094, -22980222, + -6680822, -6573448, 7818988, -4421669, -12575664, 27865748, 7090991, -21507048, -20145544, -6034429, + 7866233, -21668110, 8201240, 25973814, -858993, 9526237, -18395344, 13696651, 9876277, 2909840, + 10080288, -16226386, -24908662, -34930968, 17044578, 13297219, 858993, 13194140, 2226941, -16211354, + -3680787, 876173, -28011776, -2854006, -43329776, -23972360, 6844031, -11321534, 7907035, 676457, + -6027987, -6210523, -4385162, -8351564, 7282117, -128849, -1614908, -107359152, 36565204, -8549132, + -7058779, 19172734, 4690105, 10690174, 46748572, 27910844, 35298188, 17763984, 48208860, -8478265, + -47010564, 6923488, -5312875, -20134806, -41654740, -18159122, 36352604, 8252780, -2557653, 7593502, + -2815351, 515396, 30620970, 3897683, 11330124, -4636417, 7537668, 30556544, -8504035, -20544976, + 15468325, -36487896, -36728412, -23568634, -4702989, 1020055, 15126875, 35811436, 483184, -12348031, + -35762044, -58471684, -20654498, -8523363, -3571265, -380105, 21509196, -26787712, 48191680, 25097642, + -4668630, 13907104, -19093278, 3476776, 313533, 22346714, 43046308, 29113436, -25469156, -10647224, + 7131793, -4073777, -5491116, 2244121, -13191992, -41768556, -3244848, -7685844, -3077344, 6575595, + -16355235, -5467494, -28598040, -3002182, 3925600, 29899414, 14579266, 4224101, 4743792, 7580618, + 863288, -25243670, 5136781, -5849746, 6676527, -3040837, -3401614, -13795435, 2080912, -14538464, + 43974024, 44510892, 15335181, 29890824, 21657372, 46690588, -40432824, 48528836, -58491012, -9996536, + 55357832, 75780400, 16095390, -4449586, 27822798, -22842784, -26673894, 54919748, 9167608, -8059506, + 13657996, 44223132, -11164767, 27262304, -8443906, -10636487, -4891968, 20160576, -50442244, -5839008, + 25061134, -10911364, 2967823, -17615808, 10915659, 40608916, -36747740, 12363063, -10623602, 13531294, + -19037442, 27412628, 2680060, 10153303, 11340861, -44613972, 22370338, -62264140, -12373801, 35910220, + 4209068, -21979496, 39623220, -13140452, -23291608, 28879360, -11336566, -7724499, -4121021, 17613660, + -2211908, 4960687, -33842196, 12859132, 3536906, 67345088, -49954764, -21494164, 6337224, -12515535, + 15453292, 19305878, -23852100, 47238196, 17858474, 229781, 8027294, 16123307, -7254200, -24932286, + 10353019, -12642236, 4516158, -4711579, 12528420, -15635828, 5224828, 620623, -8222715, 11227045, + -3451006, -2390149, -876173, 89730456, -55963424, 2252710, -8888435, -14877767, 1928440, -20396800, + -8570607, -66228396, -55413668, -55192476, 18599356, -11443940, 18382460, -12541305, -40102108, 64201172, + 44764296, -29697552, -24930138, -35076996, -7273527, 13808320, 21234318, 26027502, -1752347, 20160576, + -5697274, -25280178, -30872224, 19421842, -14018773, 58613420, 36749888, 54067196, 7672959, 19705310, + 53244708, 36928128, -11598559, 9781788, -2297808, 734439, 5703717, -24715390, -17772574, 9618579, + -30925912, -31866510, 30986042, 35229468, -38487200, -1202591, 68567008, 47775068, -2381559, -22585086, + -4917738, 14252849, 12942884, -9206262, -25443386, 30672508, -1986422, 7559143, 21994528, 27893666, + -29072634, 12571369, -4711579, 11630771, -45232448, 8433168, 40965400, -40662604, -33384780, -17293686, + 18229988, 32328218, -18163416, 17811230, -15648713, -1546188, 1002875, 6779606, 12154757, -5585605, + -2428804, 7393786, 6852621, 135291, -852551, 5355824, 72690176, 28028956, -9633612, -2272038, + 22842784, -27114128, -35296040, 30401926, -42183020, -54619100, 14596446, -29268054, -37774236, -19651622, + 36202280, 88753352, 36754184, -48157320, 90868624, 10640781, -14175540, 16469052, -52971980, 13593571, + 7378754, -37903088, 32929514, -10110353, 6536940, -27253714, 15418933, -24895778, 45999100, -54309860, + -20005958, -18680960, 25965224, 30047592, 26699664, -28799904, 8489003, -30112016, -8654359, 16250009, + 38437808, 17867064, -17626546, 37553048, 19104014, 30322470, 2040110, 35326108, -15375983, 19597936, + -53556096, 60329260, -5218386, 8527658, -15953656, -31228708, 1608465, 20255066, 48075716, 14291504, + -57505316, 24678882, -23270132, 47528108, 4088809, -17925046, 9171903, -15476915, 9865540, -33320356, + 13376676, 3358665, 2911988, 5529771, -6564858, 3624953, -9032316, -13862007, 18743238, 11933567, + 10797548, -24650964, 8169028, -13288629, 11574937, 2787434, -1556926, 5989332, 2759517, -148502784, + 6779606, 25108378, 58669252, 19419694, -91255168, 122088744, 44929652, -55600500, 20332376, 121429464, + 27502824, -29237990, -3401614, -73252816, 38014756, 3697967, -18500572, 10782515, 25436944, -47435768, + 25759066, -59491740, 6603512, -54206784, -48608292, -20622286, 23304492, 35188668, -26429082, 30799210, + -52731460, -7425999, 59908352, 5708012, -21163452, -6801081, 11978664, -13604309, -39004744, -43709884, + -5467494, -19958714, 43396348, -60226180, 64372968, 20585778, 8577050, -21238614, -6640020, 29807074, + -23583666, 40142912, 10322954, 36303212, -12904229, -20768314, -62831076, 21805548, -5948530, -65023656, + 20014548, -4234838, 40147208, 64085208, -26542898, 14684493, 31991064, 33773476, 7365869, -19357418, + -3328600, -78797616, -3367254, 7342247, 19997368, -281320, 53566832, 11611444, 26901528, -29706142, + -20813412, 39814348, -3530463, -7971460, 24588688, -5484673, -6186901, -356482, -753767, 2675765, + -3719442, 22226456, 183854672, 83496312, 16930762, 29399052, -38358352, -25926570, -9502615, 69133944, + -49950468, 7355132, -41656888, -113939040, -54936928, 25454124, -29534342, 18174154, -45492292, -2823941, + -48874580, 40900972, -49478024, -35729832, -105780752, -20169166, -17104708, -28192166, 54226108, -18352396, + -44480828, 13750338, 41699836, 15150497, 13767518, -6844031, -9472550, -28342490, 20968030, -36331128, + -10262824, -22776212, -63329292, 9030169, -44132936, 17055316, 5001490, -13297219, -2029372, -46226732, + -3223373, -10919954, 66236984, -19761144, -2214056, 26686780, -37301792, -16784732, 67216240, -40108552, + 25295210, 1277753, 59702192, 85259392, -5705864, 10593537, 7892003, 29184302, 14836965, -65906272, + 5321465, 16063178, 22402550, -28477780, -44259636, 4103841, 11959336, -11860552, -17267916, -70643624, + -35341140, -40825812, 2113124, 8407398, -13954349, -19741818, -22640920, -5828271, -11731703, -12725988, + 13883482, -7329362, 6339372, -25686052, 1056562, -10185515, -18249316, 3676492, 9524090, }, { -137439, - -40802, -150324, 8590, -96637, 221191, 146029, -695785, 8590, -453119, -541166, - 143881, 450972, 440234, 158914, -994285, -609885, 199716, -311385, 53687, 199716, - 259846, 412317, -300648, -335007, -616328, -360777, 0, -1402307, -25770, -139586, - -401579, 285615, -796716, -697932, -1406602, -197569, -1234803, -382252, -25770, 979253, - 274878, 743029, -375810, 783832, -201863, 154619, 685047, 4189741, -3266323, 2046552, - -2579128, 1329292, -1254131, -1236951, -740882, -700080, 764504, 874026, -3195456, -167504, - 481036, -313533, -528281, -1868311, -674310, 1344325, 2035815, 1022202, 3204046, 654983, - -558346, 661425, 562641, -319975, 1054415, 2278480, -861141, -17180, 979253, -23622, - -208306, -1619203, -51540, 831076, 672162, 139586, 57982, -534723, 586263, -53687, - 83752, 38655, -543313, 15180562, -979253, 1331440, -951335, 987843, -1142461, 251256, - -272730, -259846, 880468, -792421, -2744484, 803159, 294205, 861141, 1872606, 1005022, - 678605, -240518, -1586990, -539018, 743029, -208306, -249108, 1565516, -1964948, -618475, - -23622, -328565, -478889, 758062, 831076, 1024350, 296353, 371515, -405874, 1417339, - -53687, 1090922, 770947, -242666, -130997, 521839, 21475, -294205, -135291, 25770, - 11151883, -10651519, 1672890, -2877628, 1544041, -193274, 1114544, -1020055, 2005750, -850404, - 1215476, -2542621, 100932, -1475321, 423054, -231928, -347892, -682900, -1872606, -188979, - 221191, -921271, 1533303, -691490, -1114544, -1406602, 841814, -899796, 2179696, -227633, - 6442, 644245, 8590, 49392, -972810, -816044, -227633, 223338, -373662, -936303, - 831076, 599148, 1496796, -345745, 491774, -206158, 277025, -26160646, 3068754, -1962800, - 55835, -304943, -2194728, 2370822, -586263, 210453, 1002875, 302795, 2748779, -137439, - -1123134, 3296388, 1331440, 2974265, -62277, -3947075, -2362232, -1904818, 1627793, -2059437, - 171799, -751619, -697932, 236223, 612033, -601295, -1239098, -923418, 796716, 897648, - 1720134, -141734, -240518, -111669, 1065152, -1198296, 309238, 468151, 788127, -977105, - 1017907, -1185411, -210453, 390842, -33039036, 11974369, -4825396, 5538361, -3846143, 2542621, - -4168266, 2370822, -3094524, 1198296, 2304250, 118112, 884763, 2113124, -1357210, 1520418, - -1741609, -1282048, -3843996, 3508988, -2257005, 2353642, 178241, -6442, -3687230, -126702, - 715112, -517544, -118112, -128849, 1544041, -221191, -1078037, 1172526, 358630, -461709, - 81604, 60130, 137439, 680752, -992137, 2572686, -201863, -1597728, -161061, -865436, - -85899, 1662152, 15060303, -3195456, 5735929, -2581275, 1990717, -2087354, 7138236, -1333587, - 3822521, -399432, -246961, 996432, 27917, -4846871, 1140314, -403727, -2171106, -496069, - 113817, -6105296, -139586, 545461, 1973538, -8590, -1138166, -197569, 2134599, 427349, - -1013612, -2025077, 3191161, -1919850, -47245, -2879776, -294205, 51540, 536871, -665720, - 803159, 1307818, -1211181, 1047972, -19327, 846109, -17180, 1494649, -704375, -392990, - 1331440, 39653284, -11557757, 1728724, -1956358, 2611340, 32212, -25770, -5327907, 2394444, - -2325725, 1638530, 575526, 843961, 1724429, 2686502, 418759, 940598, -4481799, 1655710, - 1664300, -2879776, -556198, 3047279, 1971390, 1949915, 4316442, 2424509, 633508, 1155346, - -1610613, 1380832, -382252, 2493229, 3227668, -442382, 1090922, 2040110, -850404, 712965, - -2804614, -743029, 2808909, 60130, -1969243, -661425, 848256, 2093797, -146029, 1191853, - -15032, 2811056, -21210696, 8916352, -6191196, 4028679, -3685082, 4756677, -3111704, 188979, - -2649995, -3262028, -4556961, 304943, -2710124, 1297080, 1509681, 3418794, -5622112, 3446711, - -1352915, 4791036, 1043677, -298500, 367220, 354335, -1146756, -977105, 717260, -2304250, - 1492501, 2701535, -3704409, -831076, -234076, 1466731, -1421634, 3869766, -4067334, 766652, - -19327, 225486, -1756642, 255551, -1108102, 1007170, 143881, 176094, -1254131, -238371, - -2585570, -893353, -161061, 543313, 184684, -964220, -3268470, -34190088, 10825465, -7007239, - -476741, -1434519, 2128156, -5909875, 405874, 1864016, 1539746, -2072322, 1157494, -2643552, - -4335770, -1698660, 530428, -2598455, 9051644, 236223, -2529736, -837519, -3045132, -1432372, - 2755222, 1644973, 3577708, -339302, 1586990, -2040110, 818191, -1846836, -639950, -1086627, - 588411, 1108102, -590558, -1752347, 414464, 642098, 2471754, -446677, -929860, -3251290, - -2662880, -1273458, -528281, 597000, 423054, -1337882, -564788, 229781, 1172526, 605590, - 191126, -592706, 1191853, -32916630, 15425375, -7292855, 6876243, -3607773, 4067334, 2007897, - 1232656, -3758097, 442382, -1921998, 545461, -4915590, 1827509, 3053722, 979253, -5231270, - -2600603, -2639258, -2746632, -1806034, 3723737, 882616, 2617783, 2095944, -938450, -227633, - -3955665, 5070209, -1462436, -528281, 311385, -1103807, -1576253, -1857573, -433792, -4157528, - 1215476, -2211908, 1642825, 1432372, 2364380, -657130, 249108, -2703682, 1005022, 1971390, - 461709, -453119, 388695, 1539746, 2306398, 996432, 2143189, 88047, 322123, 10683731, - 13217762, -5970005, 3541201, -1836099, 1329292, -1419487, 762357, 1166084, 6472516, -2289218, - 2669322, 6083821, -1655710, -244813, -1024350, 1479616, 3141769, 3223373, 4187593, 1133871, - 3564823, -906238, -2104534, -7125351, 1503239, -1078037, -3577708, -2549063, -120259, -672162, - 2302103, -326418, -4136054, -4267050, 1151051, -3706557, 500364, 2261300, -3332895, -2229088, - -1415192, 1662152, 1505386, -105227, -438087, 2499671, 534723, -959925, 1005022, -2149631, - 274878, -1131724, -1619203, -1090922, 1700807, -863288, 1284195, -955630, -2078764, 571231, - 1155346, -727997, 38029788, -13234942, 7181186, -4960687, 7138236, -5029407, 4378719, -1625645, - 4447439, 1082332, 3131031, -3635690, 3734474, -1273458, -3098819, -317828, -3328600, -5312875, - -2804614, -575526, 2699387, -3637837, -4868346, -5963562, -1069447, -519691, 4776004, 2617783, - 3068754, -2093797, 2482491, -1891933, -1859721, -1022202, 3150359, 2720862, 850404, -17180, - -111669, 90194, -880468, -493921, 2181844, 427349, 5364414, -2052994, -644245, -4466766, - 2929168, -1163936, -693637, -1050120, -277025, 264141, -743029, 818191, -1196148, 19327, - -1696512, -745177, 380105, 1752347, -908386, 10683731, -16320876, 9569187, -6105296, 7432441, - -83752, 4614943, 1303523, -7155416, -3393024, -2411624, 876173, 1793149, 1002875, 8078834, - -4541928, 6455336, 1125281, 820339, -4415227, -957778, 5581310, -367220, -4737349, 5394479, - 4121021, 912681, -2220498, -1754494, -470299, -375810, 2501819, -1226213, 1116692, -3021510, - -667867, 1741609, -4355097, 1666447, -1687922, 1559073, -1260573, -386547, 5141076, 2218351, - 2931315, -227633, 1213328, 1883343, -384400, -1417339, -2265595, 775242, 1039382, 1825361, - 2211908, 517544, -493921, -2274185, -1028645, -2299955, -2048699, 264141, -40583144, -8274255, - -1183264, -6852621, -2899103, 5963562, 2491081, -1859721, -1666447, -4954245, -3324305, -4037269, - -4518306, -3762391, -2433099, -3412352, -5744519, -4924180, 1767379, -4997195, 1541893, -6691559, - 124554, -2819646, -2274185, 5665062, -680752, -2881923, 3624953, -4254165, 3837553, 1095217, - 4054449, 2742337, -169651, -2065879, 4271345, -139586, -753767, 3891240, -1735167, -5476084, - -6189048, -1644973, 1945620, 1219771, -1898376, -255551, -1763084, 313533, 6442, 240518, - 3747359, 1428077, -2841121, -1114544, 420907, 2351495, 483184, 3547643, 916976, -375810, - -1930588, -47629040, 41452876, -16889958, 11501922, -10823318, 2645700, -5317170, 7009387, 1327145, - 811749, -3393024, 4745939, 966368, -8566312, 869731, 1254131, -4303557, -6605660, 6521908, - 8076686, -2609193, -2147484, 1352915, 3712999, -2183991, 7352984, -229781, 1848983, -5347235, - -1917703, -3184718, 4784594, -1065152, 1026497, 1041530, -2776696, 4657892, 4443144, 1224066, - 1511829, 5461051, -3352222, -878321, -721555, -3959960, 826781, -2581275, 940598, -118112, - 326418, 4464619, -199716, -1007170, 957778, 240518, 2884071, -2701535, 992137, -169651, - 5680094, -1696512, -261993, -2239826, 31845036, -3779571, -6586333, -1524713, 4327180, 2259153, - 1984275, -180389, -4365835, 1146756, 2740189, 3094524, -1964948, -1848983, 6468221, 2246268, - -4958540, 1129576, 8353712, -10314364, 6983617, 893353, 8916352, -532576, 564788, 1795296, - 1848983, 4715874, -3377992, -1243393, 1808181, 3405909, -1258425, -30065, 496069, 843961, - 2171106, -4191888, -30065, 2544768, 773094, -2278480, -657130, 5551245, 4110284, 1990717, - -2027225, -1466731, 1649268, -633508, -1275605, 1039382, -1614908, -2564096, 5714454, 2289218, - 3700114, 648540, 2811056, 2299955, 2510409, 350040, 3023657, 1552631, 2173254, -1625645, - 474594, 869731, -2426657, 985695, -1129576, -161061, 15116137, 4400194, 3655017, -2196876, - -1468879, -4084514, -2920578, 766652, -1597728, -1999307, -5869073, 5027259, 3474629, -3639985, - 6266358, -5871221, -1778117, 2652142, -4363687, 2561948, 4069482, 6234145, 5482526, 5250598, - 2714419, -11014444, 2147, -2287070, 2211908, -1032940, 4318590, 2959233, -1425929, -2652142, - 2832531, -1939178, 7284265, 34360, 2405182, 7423851, 7067369, -5302137, 440234, -3481071, - -6365142, -646393, 1183264, -768799, -1316408, -635655, 534723, -2933463, 380105, -3427384, - -987843, -362925, 906238, 73014, -2046552, -2113124, 4410932, -1511829, 657130, 2031520, - 2426657, -1299228, -1404454, -592706, -3526168, -2325725, 352187, 820339, 35689032, -25095494, - 9148280, -9526237, -725850, -6655052, 6038724, 6000070, 1939178, 1228361, 5673652, 15582141, - -13677323, -1891933, -3549791, -5514738, 12088185, 9109626, -1853278, -8267812, 3362960, -6751689, - -5398774, -9463960, 1219771, -9691594, -3197603, 5727339, 833224, -2963528, -7999377, 25770, - -1926293, 4876936, 4481799, 2076617, -3631395, 558346, -223338, 1979980, 3867618, -2441689, - -1232656, -4329327, 6586333, -805306, 977105, 5881958, -1206886, -523986, 2349347, -2939905, - -302795, 2557653, -4359392, 1002875, -807454, -371515, -4546223, 2220498, -972810, 401579, - 1118839, -1670742, 2982855, -2336462, -607738, -4857608, 438087, -665720, 2025077, 2147484, - -55624120, 7627862, 717260, 3843996, -4329327, -6994354, -90194, 4593468, 7331509, -508954, - 11179800, 6204081, -7657927, -6837588, 5196911, 891206, -5469641, -10114648, -11594264, -7451769, - -8568460, -9584220, 1675037, 2989297, 2493229, -7103876, -6828998, 989990, -1829656, -1202591, - -949188, -5675800, 4726612, -9740986, -3667902, -1520418, -392990, 3060164, 1054415, -708670, - 4443144, -1402307, 4430259, 2527588, -3472481, 513249, 7221988, -2935610, -2933463, 150324, - 4215511, 1063004, -3045132, -3910568, 3521873, 152471, -5117454, 6953552, 7853348, 916976, - -2274185, 904091, -169651, 1636383, 3457449, -375810, 4597763, 2903398, 2622078, 2282775, - 1178969, 1896228, -2332167, -206158, -34029024, 29091960, -9728101, 6216965, -158914, 4846871, - -11778948, 4559108, -8029442, 40802, -5433134, 10922102, 9292162, 3513283, 755914, -8972187, - -5952825, -923418, -3607773, 10365904, -8469676, -335007, -4194036, 15180562, -4823249, 1359357, - -423054, 2617783, 1198296, 2607045, 1919850, -2510409, 1374390, -609885, 5308580, 818191, - 10056666, 5214091, -3231963, -680752, -1241246, 184684, -3824669, -2705830, -949188, 1793149, - 12262132, 1112397, 833224, -3367254, 5012227, -1857573, -2602750, 1612760, -2527588, 1507534, - -3141769, -6863358, 3418794, 3030100, -936303, 7157563, 1544041, 1694365, 2594160, -1930588, - 869731, 2312840, -5909875, -2796024, -433792, -2714419, 2753074, 4219806, -1584843, 7241315, - 4799626, -191126, -1962800, -1490354, -532576, 22187802, -517544, 4988605, -15109695, -2525441, - 1887638, -12193412, 953483, 16853452, -2959233, 1196148, -7630010, -10445360, 2632815, -9545565, - 14845554, -10340134, 3545496, 3498251, 7939247, 6171868, -1644973, -9227737, -1090922, -867583, - 4692252, -6474663, -1273458, -1913408, -3096672, -2207613, 4483946, 2753074, 12032351, 4073777, - -4514011, 4982162, -3307125, -3476776, 3682935, 10303627, -1509681, -5349382, -5014375, 5467494, - -161061, -7496866, -6914898, 3506841, 3255585, -3124589, -5720897, -9470403, 2583423, 3496104, - 2336462, -5357972, 3977140, 2441689, 1638530, -1917703, -614180, 2901251, -7129646, -949188, - 3090229, 3659312, -710817, 1769527, 113817, 75634376, -4754529, 3103114, 6979322, -6560563, - -2763812, -2207613, -17746804, 12019466, -1876901, -10986526, 2443837, -5607080, 6549825, 5194763, - 8308614, -2881923, 11257109, 9650792, 6193343, -9824738, 7640747, -13496935, -7939247, -9167608, - 3704409, -7030862, -1226213, -2362232, -8974334, -4851166, 7679402, -5617817, -4232691, -8568460, - 2856153, 2836826, 6513318, -3592740, 11169062, 2830384, 12725988, -1400159, 2360085, 2607045, - -6938520, 5044439, 13026636, -4413079, -300648, 3579855, -3710852, -5177583, 3137474, -5160403, - -2750927, -6760279, -4406637, 5104569, 4571993, 3088082, 4904853, 6139656, 5860483, 8778913, - 1490354, -2531883, 4589173, 3126736, 25770, -811749, 442382, -3208341, -618475, 745177, - 878321, -128849, -33474976, -65624952, 24305220, 208306, 1314260, -6582038, -7039452, -1604170, - 2222646, -4275640, 17100412, -7960722, -15008763, 850404, 906238, -2016487, -5319317, 11632919, - 2076617, -5295695, 5392332, -10419591, 13095355, -7408819, -3880503, -9012989, 14624364, -6399502, - -2175401, -8935679, -4161823, 7902740, -3773129, 8562017, -11203422, -13093208, 1013612, 2199023, - 2201171, -414464, -6805376, 1178969, 3420942, 1660005, 6743099, -111669, 10606422, 1406602, - 9936407, 13013751, 2665027, -1065152, 2407329, -7413114, -1941325, -12330851, -10977936, 3124589, - 3180423, 2063732, -824634, -3575560, -1896228, -3070902, -1737314, -3066607, -8590, -356482, - 2220498, -833224, -1501091, -4271345, -395137, -4945655, -659278, -6539088, -923418, -2486786, - -788127, -21996676, 64048700, -29231548, 13335873, -6231998, 20315196, -3246995, -9032316, -9421011, - 5304285, -2834679, -1251983, 427349, 3940633, -21577916, -10559177, -5592048, 8523363, 7164006, - 12521977, 2265595, -1954210, -2018635, 15034533, -19617264, 11306501, -9453223, -2005750, -9955734, - 15530602, 6227703, -10168335, 1322850, -4481799, 1657857, 6562710, -28138478, -11787538, 2297808, - 9839770, -5800354, 2040110, 7200513, -2969970, -3186866, -1067299, 10874857, 4256313, 1857573, - 1178969, 4189741, 12743168, -7763154, 5806796, -17952964, -3139621, 4043712, 8619999, 1623498, - 1215476, 418759, 4651450, -3511136, 502511, -1260573, -4264903, -3682935, 6674379, 6534793, - -2501819, -3388729, -11203422, -4720169, -2536178, -1995012, 8108899, -3100967, -3081639, -5458904, - -4969277, -390842, -57526792, -12431783, 5602785, -13662291, 3410204, 2480344, 8403104, -66572, - 16039555, 10462540, 5785321, -4428112, -7904888, -433792, 16971564, -14557792, -5572720, -11287174, - -268435, -30807800, -24290188, 1503239, 15045270, 20708184, 4769561, -7569880, 7054484, -6723772, - -4490389, -4587025, 2035815, 5405217, 1309965, 8044474, -6137509, -10973641, 9049496, 5937793, - 19022410, -2357937, 3088082, -2753074, 15341623, -15998753, -8033737, -3803194, -12135430, 7696582, - -5012227, 6459631, -12998719, 12932147, 12558484, 11547020, -4722317, 10234907, 545461, 3560528, - 6006512, 4267050, -5435281, 936303, -1694365, -309238, 11804718, 4400194, -5192616, 9552007, - -1552631, -8280697, -2740189, -603443, -11641509, -472446, 4859756, 6335077, 1011465, -244813, - -4808216, 1765232, 2823941, 41764260, 27180700, -8469676, 12363063, -27648852, 19542102, 7206955, - 14723148, -4960687, -3631395, -15107547, -7728794, -25868588, -4432406, -20583630, -6214818, -12659416, - -12968654, -17480516, 7015829, -23905788, 3274913, 10415296, -4556961, 3320010, -10269267, -83752, - -3171833, -3367254, -14014478, -1846836, 1666447, -912681, -2123861, -7316477, -6356552, 4380867, - 4657892, 6122476, 30492120, -12236362, -665720, 12373801, -2916283, -5029407, -11645804, 3646427, - 10378788, 17136920, 5804649, 14293651, -13896367, -20905754, 2035815, 13765370, 7720204, -11269994, - 13172665, -9869835, 6365142, 2654290, 11976516, 6779606, 4419522, 8117488, -8031589, 5188321, - 4331475, 2480344, 11763915, 2731599, 9513353, -1380832, -3758097, 1539746, 2287070, 2005750, - 11420318, -1786706, -6375879, -575526, 84140560, -54520316, -2995740, 6277095, 1657857, 6594923, - 11495480, -2364380, -1889786, 6429566, -9760313, -9330816, -1561221, 7421704, 30260192, 1232656, - 10432476, -9798968, 577673, -29996052, 18474802, -18159122, -25840670, 5963562, 7213398, -9616432, - 8585640, 3575560, 19973746, 22104050, -3710852, -8400956, -6339372, -33135672, -18068928, 25900800, - 8527658, 9504763, -14959371, -15360951, 4509716, -3012920, -13213467, 11456825, -2536178, -8289287, - -9556302, 6472516, -8564165, -4604205, 30384746, -18580028, 5598490, -6693707, 7017977, -8385924, - -3459596, -22733262, 3788161, -8443906, -5690832, 18090402, 4337917, 5016522, 10932839, 13110388, - 3876208, 9062381, -4097399, -1118839, -14950781, 6775311, 12257837, -2851858, 760209, -1406602, - -3148211, -3876208, 1329292, -3983582, -1844689, -52585432, -25993142, 9517648, -3442416, 18809810, - -2886218, -5186173, -15330886, -17145510, 8770323, -17914308, -6335077, -10243497, -2186138, -10797548, - -7475391, -8708046, -4582730, -10752451, -20255066, 11323681, -39975408, -607738, 35394824, 8499740, - -399432, -9919227, 2310693, -36172216, 14641544, 8860518, 2267743, 12820477, 19112604, -15429670, - -8248485, -16048145, 2110977, 384400, -9631464, -10924249, -12139725, -7245610, -775242, 7728794, - 420907, 6309307, 3440269, 633508, 24468428, 5774584, -4213363, 19421842, -9807558, -22411140, - -7080254, -2765959, -3440269, -1589138, -7943542, -1872606, -9846213, -2448131, -10009421, 854699, - 5014375, -10808285, -3283503, -6012954, 197569, -10954314, -13997298, -6070937, 5317170, 9614284, - 3674345, -3330747, -624918, 3622805, -2029372, -2370822, -5072357, 2104534, 4876936, 959925, - -485331, -6156836, -32371168, 43340516, -21565030, -10763188, -35631048, 27580132, -9899900, 16192027, - 895501, 854699, -10894185, 21580064, -5544803, 6927782, 5272073, -10101763, -3500398, -3373697, - -18930068, 3597035, 3302830, -14708116, -24528558, -15324443, -22574348, -5622112, 12079596, 6223408, - -13327284, -13316546, 19546396, 13363791, -17083232, 15461882, -8559870, 13660143, -21623012, -17179870, - -16503412, 5673652, -14624364, 9040906, -6648610, 3730179, -4086662, -2239826, 3304977, 15524159, - -34383360, -4501126, 6768869, -3292093, -10505490, -24910810, -2278480, 22559316, -133144, 19527068, - 14439680, 4045859, -2875481, 14869177, -14974403, -12388833, 9528385, -3760244, -9320079, 6189048, - 1797444, -7421704, -10696616, 17845590, -16836272, -9313637, -10080288, 10052371, 474594, -7402376, - -4121021, 5149666, -15539192, -141734, 4121021, 2976412, 335007, -5471789, -7567733, -74390984, - 27635968, 11678016, -18758270, 9165460, -21212844, 18985902, 16357383, 13926431, -38156488, 22988812, - 40269612, -5639292, 13636521, 573378, -12644384, -16503412, 44362716, -663572, -4009352, -24522116, - -48419312, -26248692, 2357937, -21461952, 17731772, -31748398, -10627897, -18777598, 5022965, -7391639, - -23740432, 3878356, -5568425, 15436112, -5347235, -18659486, -7252053, -56957708, 10063108, -1859721, - 26158498, -16194174, -17972290, 24421184, 5014375, 3925600, -9968619, -15339476, 5276368, 11055246, - 7941395, -4112431, 8443906, 4559108, 837519, -5102421, -5536213, -18887118, 1301375, -7584912, - -11113228, 9721658, 5360119, 27547920, 5609228, -18788334, -18932216, 3985730, -12337294, -9062381, - 2909840, -9320079, -622770, -4370129, -5656472, 5138929, -7578470, 2568391, -1133871, -1623498, - -2961380, -4217658, -9262097, -11111080, -3633542, -9594957, 62038656, -24431922, 427349, 3481071, - 25956634, -3285650, -4997195, 17815524, 30584462, -20564304, -23740432, 18590766, -3491809, 16176994, - 23435490, 19514184, 16849156, 13501230, 15923591, 60243360, -5037997, 4473209, 11778948, 33251636, - -6809671, -12135430, 12863427, -861141, -10765336, -13331578, -11609297, 350040, -15111842, 22995254, - 34688304, -1765232, -8510478, 14516989, -8332237, 20764020, 14948634, 569083, -17779018, 13668733, - -1267015, -5789616, 2924873, -2392297, 40374840, -3335042, 17641578, -8796093, 35991824, -3272765, - 3354370, -12388833, -21644488, 18388902, -10685879, 36266704, 8104604, 17231408, 300648, 268435, - 10657961, 2911988, 26040386, 14574972, 4887673, 13144747, -14991583, 5875516, 12094628, 1458141, - -4116726, 21399674, 5463199, -6809671, -6777459, 8688719, -3730179, 221191, 12195560, -3515431, - 7511898, 3135326, -6425271, 80257904, -23149874, 7524783, -7683697, 3562675, 10344429, 26970248, - -20925080, 11293617, -438087, 1445257, 14641544, -11980811, 15655156, -42292544, -19168440, 7073811, - 15747498, 11141145, 33633888, -33479270, 5226975, -5022965, -45865956, 19512036, -17841294, -11662984, - -6689412, -37673304, 12221329, 13209172, 5858336, -19668802, -32920924, 12874164, -20398948, 17798344, - -31542240, 403727, -37737732, -9302899, -25209310, -21904334, 22299470, 34699040, 4821101, 12741020, - -16039555, 6433861, -26899380, 11364483, -17671642, 4849018, 25733296, 13065291, -9081708, 15569256, - 2570538, 13475460, -11617887, 22606560, 38706244, 2044404, -23435490, -16232829, -10488310, -4329327, - 2461016, 17355962, 3416647, 28211492, -133144, 10773925, -25694642, -3826816, -18562848, -3556233, - -2798171, 5765994, -23302346, 3141769, -1816771, 6955700, 2486786, 4331475, 2317135, 1806034, - -81836304, -68650760, 29006062, -8611409, 33730524, -2624225, 11038066, -41016936, -38480760, -23401130, - 12861280, -31752694, -21906480, -9386651, 6380174, 23227184, 8293582, -46553152, 12554189, 26044682, - -66037268, -7870528, 3191161, -70104600, -24051816, 31228708, -64942052, 31825708, 33492154, 429497, - -9367324, -2647847, -15625091, -17237852, 11658689, 14347338, 48719960, -28784870, -15109695, -12098923, - -22606560, 1335735, -38596724, -9622874, 2948495, -1088774, -12554189, -1960653, -21255794, -4312147, - 11875585, -5308580, -13853417, 16114717, -7541963, -15773267, -22531398, 47972636, -1999307, 29229400, - 3861176, 10969346, 31625992, 4574140, 21545704, -14338748, 23942296, 17379586, 5207648, 6285685, - 5871221, 20869246, 9513353, 3882651, 20154134, -8557722, 2937758, -2334315, -31479962, 14733885, - 7477538, 4310000, -19275814, -5484673, 3575560, 6122476, -5546951, -132785360, 50072876, -14671608, - -59566900, -14538464, 1498944, -15406048, 22997402, -51571820, 24831354, -4161823, -59302760, -40881648, - 8113193, 23542864, 22237194, 16320876, 34911640, 9970767, 57423712, 31439160, 67306432, 8744553, - 54672788, -42127188, -33191508, 11310796, 4743792, -33416994, 9335111, 7073811, -4668630, -12745315, - 32394790, 6195491, -71526240, -31892280, 23953032, 8248485, -15189152, 20444044, 20845624, 32482838, - 6968585, 9633612, 6051609, 9427453, 11841225, -24854976, 3758097, 4561256, -52907556, 24917252, - 18326626, 22432614, -36273148, -21049634, 26416196, 25770, -7056632, -5476084, -15532749, -13711683, - 60130, -18245022, -40684076, 13825500, 43327632, -30494268, 4198331, -17336636, -7067369, -12637941, - -3968550, 22344568, 5327907, 18461916, 5345087, -19660212, -14008036, -15968688, -9597104, -13060996, - 3088082, -8282845, -1823214, -12500502, 3944928, 6468221, 7069516, -3796751, -12530567, 208306, - 55727200, 37671160, 26046830, 14158360, 1724429, -12987981, -19789062, 17467632, -55602648, 58662812, - -36359044, 9429601, -60359324, -2233383, 56760140, 22269406, -20115480, 35985384, -57342108, 22877144, - 10677289, 3979287, -70609264, -21208548, 4314295, 11325829, 45339824, -69496864, -9397388, -23113366, - -65408056, -14388140, 15665893, 32628866, 49007724, 38044820, 37900940, -3287798, -24391120, 24919400, - 7529078, -15034533, 8931384, -32003948, 50772956, 23712514, 17166984, -26555782, -58123792, -15603616, - 1307818, -70499744, -56972740, -15058155, -51105816, 32736240, 12678743, 10118943, -23551454, -25372520, - 9801115, 7028714, 4256313, 15674483, -9859097, 11815455, 33565168, 15159087, 5662915, 4443144, - -22174916, -18683108, -16700980, 9652939, -5972152, -45221712, -36120676, -3749507, -29098404, -25879326, - -7451769, -37366216, -23444078, -6008659, 1952063, -5493263, -2493229, 8727374, -7183333, -2875481, - 1943473, 1151051, -10902774, 64126008, -50034220, 13462575, -7075959, -6493991, 1174674, 17742510, - -31166430, 41717016, -12036646, 28610924, -2785286, -23214298, 44377748, 43785044, 31331786, -14654428, - 67248448, 24906516, -75183400, 77549928, 7082401, -204011, 56049324, 2493229, -24305220, -32502166, - 55323472, -34634616, -46209552, 44781476, 39049844, -25409026, -61456688, 24131274, -21086142, 8566312, - -43226700, -35414152, -14675903, 41938208, 37645388, 5005785, 34548716, -50124416, 16192027, -13149042, - -18672370, 24084030, 3395172, 7425999, -70199096, -19159850, 39092792, -50126564, -13037373, -62895500, - -11705933, -23439784, 10640781, -15129022, 7142531, 6579890, -2130304, 6418829, -16810502, -55841016, - -10520522, 28638842, -3770981, 19900730, -21509196, -48977660, -8677981, 10965052, 31260920, 7748121, - 17121888, -1681480, 7052337, 11942157, 7219840, -16922172, 4361540, -6839736, 7402376, -13441100, - 8115341, 3463891, 977105, -1367947, -11729556, -5727339, 58100172, 4460324, -16915728, -41641856, - -1421634, -19909320, 15468325, -34398392, 21852794, 13913547, -30077656, -30850750, 46512348, -54868208, - -2164664, 35403416, -39730596, 12783970, 45457932, -36193688, 31172872, 22892176, 33365454, -54949812, - 47431472, -55177444, 16608639, -42006928, 5226975, -21494164, 37342592, 1127429, 22849226, 11776800, - -39208756, -23916526, -54196044, 31587336, -36717676, 31763430, -44150116, -50266148, -84174920, 8196945, - 44160852, -6758131, -1316408, 13952201, 38059852, -12919262, 10202695, -46497316, 11798275, 61725124, - -6259915, 55963424, 73209864, -481036, 12238509, 15053860, -31312460, 16243566, -37931004, -1902671, - -38933880, -37718404, 2179696, -14287209, -63952064, 43323336, 987843, 32231582, -37761352, -19250044, - -14471892, 16533477, -410169, -9964324, -9987946, -6429566, -2501819, 3693672, 4078072, -7574175, - 8630737, -8688719, -8701604, -4801774, 12204150, 9154723, 10136123, -4956393, 7625715, -131593504, - 33462090, 49362060, 13741748, -56981332, -8289287, 92913024, -106629008, -2622078, -17931488, -69694432, - -17527762, -47195248, 17398912, 17328046, 40873056, 16632261, -55710020, -19703162, 40291088, -63552632, - -18010946, -67972152, 58177480, 17549236, 45524504, 77560664, -27204322, -16230681, -12687333, -38680476, - 37245956, -18079664, -46130096, -51709260, -8985072, 20010252, -1348620, 10713796, 12745315, 30283814, - -13146895, -1275605, 22466974, -21421150, 43958992, 50038516, 47180216, -38001872, 5231270, -11740293, - 22640920, 94263792, 70708048, 134879152, 10823318, 53429392, 43233140, -20298016, -4496831, -6878390, - -12429635, 17190606, 4110284, 48681308, 36672580, -16254304, -4814659, -28619514, -56403660, 22913650, - -665720, 19520626, -3959960, -38895224, -5574868, 6092411, -21670258, 13417478, -13763223, -18775450, - 689342, -18814104, 66572, -5065914, -4550518, 350040, 3062312, -11669426, 1827509, 977105, - 90194, 4980015, 204264352, 98490040, 35010424, 31533650, -48687748, 31220118, -39356932, 46812996, - 38306812, 35914516, 9079561, -67033704, -37595996, 72855528, 12466143, -4355097, -15637976, 81570016, - -88701816, -37364068, -22411140, -6734509, -62895500, 14804752, -54385024, -30399778, 8748848, -34477848, - 50435800, -48960480, -21296596, -12154757, 53916872, -90067608, -17538498, -67072356, -2149631, -496069, - -58995672, 9466108, 45947560, 24874304, -1324997, -27781996, 2229088, 27601608, -37220188, 74152608, - 100785704, -6549825, -63071596, -59365036, 41394896, -15206332, -13900662, 86745456, -18762564, 27550068, - -2649995, 54470924, -11227045, 6929930, -10765336, -34832184, -96855808, -57921928, -9341554, -26134876, - -66849020, -44012676, 24779814, 55877524, -4900558, -7406671, -6262063, -9219147, 30444876, 19228568, - 4114579, -19061064, 21270826, -12646531, -44424996, -42498700, 5214091, 28834262, -34694744, 22466974, - -2478196, -13411035, -11759620, 695785, -19512036, -15088220, 590558, -5950677, -3139621, }, + -40802, -150324, 8590, -96637, 221191, 146029, -695785, 8590, -453119, -541166, + 143881, 450972, 440234, 158914, -994285, -609885, 199716, -311385, 53687, 199716, + 259846, 412317, -300648, -335007, -616328, -360777, 0, -1402307, -25770, -139586, + -401579, 285615, -796716, -697932, -1406602, -197569, -1234803, -382252, -25770, 979253, + 274878, 743029, -375810, 783832, -201863, 154619, 685047, 4189741, -3266323, 2046552, + -2579128, 1329292, -1254131, -1236951, -740882, -700080, 764504, 874026, -3195456, -167504, + 481036, -313533, -528281, -1868311, -674310, 1344325, 2035815, 1022202, 3204046, 654983, + -558346, 661425, 562641, -319975, 1054415, 2278480, -861141, -17180, 979253, -23622, + -208306, -1619203, -51540, 831076, 672162, 139586, 57982, -534723, 586263, -53687, + 83752, 38655, -543313, 15180562, -979253, 1331440, -951335, 987843, -1142461, 251256, + -272730, -259846, 880468, -792421, -2744484, 803159, 294205, 861141, 1872606, 1005022, + 678605, -240518, -1586990, -539018, 743029, -208306, -249108, 1565516, -1964948, -618475, + -23622, -328565, -478889, 758062, 831076, 1024350, 296353, 371515, -405874, 1417339, + -53687, 1090922, 770947, -242666, -130997, 521839, 21475, -294205, -135291, 25770, + 11151883, -10651519, 1672890, -2877628, 1544041, -193274, 1114544, -1020055, 2005750, -850404, + 1215476, -2542621, 100932, -1475321, 423054, -231928, -347892, -682900, -1872606, -188979, + 221191, -921271, 1533303, -691490, -1114544, -1406602, 841814, -899796, 2179696, -227633, + 6442, 644245, 8590, 49392, -972810, -816044, -227633, 223338, -373662, -936303, + 831076, 599148, 1496796, -345745, 491774, -206158, 277025, -26160646, 3068754, -1962800, + 55835, -304943, -2194728, 2370822, -586263, 210453, 1002875, 302795, 2748779, -137439, + -1123134, 3296388, 1331440, 2974265, -62277, -3947075, -2362232, -1904818, 1627793, -2059437, + 171799, -751619, -697932, 236223, 612033, -601295, -1239098, -923418, 796716, 897648, + 1720134, -141734, -240518, -111669, 1065152, -1198296, 309238, 468151, 788127, -977105, + 1017907, -1185411, -210453, 390842, -33039036, 11974369, -4825396, 5538361, -3846143, 2542621, + -4168266, 2370822, -3094524, 1198296, 2304250, 118112, 884763, 2113124, -1357210, 1520418, + -1741609, -1282048, -3843996, 3508988, -2257005, 2353642, 178241, -6442, -3687230, -126702, + 715112, -517544, -118112, -128849, 1544041, -221191, -1078037, 1172526, 358630, -461709, + 81604, 60130, 137439, 680752, -992137, 2572686, -201863, -1597728, -161061, -865436, + -85899, 1662152, 15060303, -3195456, 5735929, -2581275, 1990717, -2087354, 7138236, -1333587, + 3822521, -399432, -246961, 996432, 27917, -4846871, 1140314, -403727, -2171106, -496069, + 113817, -6105296, -139586, 545461, 1973538, -8590, -1138166, -197569, 2134599, 427349, + -1013612, -2025077, 3191161, -1919850, -47245, -2879776, -294205, 51540, 536871, -665720, + 803159, 1307818, -1211181, 1047972, -19327, 846109, -17180, 1494649, -704375, -392990, + 1331440, 39653284, -11557757, 1728724, -1956358, 2611340, 32212, -25770, -5327907, 2394444, + -2325725, 1638530, 575526, 843961, 1724429, 2686502, 418759, 940598, -4481799, 1655710, + 1664300, -2879776, -556198, 3047279, 1971390, 1949915, 4316442, 2424509, 633508, 1155346, + -1610613, 1380832, -382252, 2493229, 3227668, -442382, 1090922, 2040110, -850404, 712965, + -2804614, -743029, 2808909, 60130, -1969243, -661425, 848256, 2093797, -146029, 1191853, + -15032, 2811056, -21210696, 8916352, -6191196, 4028679, -3685082, 4756677, -3111704, 188979, + -2649995, -3262028, -4556961, 304943, -2710124, 1297080, 1509681, 3418794, -5622112, 3446711, + -1352915, 4791036, 1043677, -298500, 367220, 354335, -1146756, -977105, 717260, -2304250, + 1492501, 2701535, -3704409, -831076, -234076, 1466731, -1421634, 3869766, -4067334, 766652, + -19327, 225486, -1756642, 255551, -1108102, 1007170, 143881, 176094, -1254131, -238371, + -2585570, -893353, -161061, 543313, 184684, -964220, -3268470, -34190088, 10825465, -7007239, + -476741, -1434519, 2128156, -5909875, 405874, 1864016, 1539746, -2072322, 1157494, -2643552, + -4335770, -1698660, 530428, -2598455, 9051644, 236223, -2529736, -837519, -3045132, -1432372, + 2755222, 1644973, 3577708, -339302, 1586990, -2040110, 818191, -1846836, -639950, -1086627, + 588411, 1108102, -590558, -1752347, 414464, 642098, 2471754, -446677, -929860, -3251290, + -2662880, -1273458, -528281, 597000, 423054, -1337882, -564788, 229781, 1172526, 605590, + 191126, -592706, 1191853, -32916630, 15425375, -7292855, 6876243, -3607773, 4067334, 2007897, + 1232656, -3758097, 442382, -1921998, 545461, -4915590, 1827509, 3053722, 979253, -5231270, + -2600603, -2639258, -2746632, -1806034, 3723737, 882616, 2617783, 2095944, -938450, -227633, + -3955665, 5070209, -1462436, -528281, 311385, -1103807, -1576253, -1857573, -433792, -4157528, + 1215476, -2211908, 1642825, 1432372, 2364380, -657130, 249108, -2703682, 1005022, 1971390, + 461709, -453119, 388695, 1539746, 2306398, 996432, 2143189, 88047, 322123, 10683731, + 13217762, -5970005, 3541201, -1836099, 1329292, -1419487, 762357, 1166084, 6472516, -2289218, + 2669322, 6083821, -1655710, -244813, -1024350, 1479616, 3141769, 3223373, 4187593, 1133871, + 3564823, -906238, -2104534, -7125351, 1503239, -1078037, -3577708, -2549063, -120259, -672162, + 2302103, -326418, -4136054, -4267050, 1151051, -3706557, 500364, 2261300, -3332895, -2229088, + -1415192, 1662152, 1505386, -105227, -438087, 2499671, 534723, -959925, 1005022, -2149631, + 274878, -1131724, -1619203, -1090922, 1700807, -863288, 1284195, -955630, -2078764, 571231, + 1155346, -727997, 38029788, -13234942, 7181186, -4960687, 7138236, -5029407, 4378719, -1625645, + 4447439, 1082332, 3131031, -3635690, 3734474, -1273458, -3098819, -317828, -3328600, -5312875, + -2804614, -575526, 2699387, -3637837, -4868346, -5963562, -1069447, -519691, 4776004, 2617783, + 3068754, -2093797, 2482491, -1891933, -1859721, -1022202, 3150359, 2720862, 850404, -17180, + -111669, 90194, -880468, -493921, 2181844, 427349, 5364414, -2052994, -644245, -4466766, + 2929168, -1163936, -693637, -1050120, -277025, 264141, -743029, 818191, -1196148, 19327, + -1696512, -745177, 380105, 1752347, -908386, 10683731, -16320876, 9569187, -6105296, 7432441, + -83752, 4614943, 1303523, -7155416, -3393024, -2411624, 876173, 1793149, 1002875, 8078834, + -4541928, 6455336, 1125281, 820339, -4415227, -957778, 5581310, -367220, -4737349, 5394479, + 4121021, 912681, -2220498, -1754494, -470299, -375810, 2501819, -1226213, 1116692, -3021510, + -667867, 1741609, -4355097, 1666447, -1687922, 1559073, -1260573, -386547, 5141076, 2218351, + 2931315, -227633, 1213328, 1883343, -384400, -1417339, -2265595, 775242, 1039382, 1825361, + 2211908, 517544, -493921, -2274185, -1028645, -2299955, -2048699, 264141, -40583144, -8274255, + -1183264, -6852621, -2899103, 5963562, 2491081, -1859721, -1666447, -4954245, -3324305, -4037269, + -4518306, -3762391, -2433099, -3412352, -5744519, -4924180, 1767379, -4997195, 1541893, -6691559, + 124554, -2819646, -2274185, 5665062, -680752, -2881923, 3624953, -4254165, 3837553, 1095217, + 4054449, 2742337, -169651, -2065879, 4271345, -139586, -753767, 3891240, -1735167, -5476084, + -6189048, -1644973, 1945620, 1219771, -1898376, -255551, -1763084, 313533, 6442, 240518, + 3747359, 1428077, -2841121, -1114544, 420907, 2351495, 483184, 3547643, 916976, -375810, + -1930588, -47629040, 41452876, -16889958, 11501922, -10823318, 2645700, -5317170, 7009387, 1327145, + 811749, -3393024, 4745939, 966368, -8566312, 869731, 1254131, -4303557, -6605660, 6521908, + 8076686, -2609193, -2147484, 1352915, 3712999, -2183991, 7352984, -229781, 1848983, -5347235, + -1917703, -3184718, 4784594, -1065152, 1026497, 1041530, -2776696, 4657892, 4443144, 1224066, + 1511829, 5461051, -3352222, -878321, -721555, -3959960, 826781, -2581275, 940598, -118112, + 326418, 4464619, -199716, -1007170, 957778, 240518, 2884071, -2701535, 992137, -169651, + 5680094, -1696512, -261993, -2239826, 31845036, -3779571, -6586333, -1524713, 4327180, 2259153, + 1984275, -180389, -4365835, 1146756, 2740189, 3094524, -1964948, -1848983, 6468221, 2246268, + -4958540, 1129576, 8353712, -10314364, 6983617, 893353, 8916352, -532576, 564788, 1795296, + 1848983, 4715874, -3377992, -1243393, 1808181, 3405909, -1258425, -30065, 496069, 843961, + 2171106, -4191888, -30065, 2544768, 773094, -2278480, -657130, 5551245, 4110284, 1990717, + -2027225, -1466731, 1649268, -633508, -1275605, 1039382, -1614908, -2564096, 5714454, 2289218, + 3700114, 648540, 2811056, 2299955, 2510409, 350040, 3023657, 1552631, 2173254, -1625645, + 474594, 869731, -2426657, 985695, -1129576, -161061, 15116137, 4400194, 3655017, -2196876, + -1468879, -4084514, -2920578, 766652, -1597728, -1999307, -5869073, 5027259, 3474629, -3639985, + 6266358, -5871221, -1778117, 2652142, -4363687, 2561948, 4069482, 6234145, 5482526, 5250598, + 2714419, -11014444, 2147, -2287070, 2211908, -1032940, 4318590, 2959233, -1425929, -2652142, + 2832531, -1939178, 7284265, 34360, 2405182, 7423851, 7067369, -5302137, 440234, -3481071, + -6365142, -646393, 1183264, -768799, -1316408, -635655, 534723, -2933463, 380105, -3427384, + -987843, -362925, 906238, 73014, -2046552, -2113124, 4410932, -1511829, 657130, 2031520, + 2426657, -1299228, -1404454, -592706, -3526168, -2325725, 352187, 820339, 35689032, -25095494, + 9148280, -9526237, -725850, -6655052, 6038724, 6000070, 1939178, 1228361, 5673652, 15582141, + -13677323, -1891933, -3549791, -5514738, 12088185, 9109626, -1853278, -8267812, 3362960, -6751689, + -5398774, -9463960, 1219771, -9691594, -3197603, 5727339, 833224, -2963528, -7999377, 25770, + -1926293, 4876936, 4481799, 2076617, -3631395, 558346, -223338, 1979980, 3867618, -2441689, + -1232656, -4329327, 6586333, -805306, 977105, 5881958, -1206886, -523986, 2349347, -2939905, + -302795, 2557653, -4359392, 1002875, -807454, -371515, -4546223, 2220498, -972810, 401579, + 1118839, -1670742, 2982855, -2336462, -607738, -4857608, 438087, -665720, 2025077, 2147484, + -55624120, 7627862, 717260, 3843996, -4329327, -6994354, -90194, 4593468, 7331509, -508954, + 11179800, 6204081, -7657927, -6837588, 5196911, 891206, -5469641, -10114648, -11594264, -7451769, + -8568460, -9584220, 1675037, 2989297, 2493229, -7103876, -6828998, 989990, -1829656, -1202591, + -949188, -5675800, 4726612, -9740986, -3667902, -1520418, -392990, 3060164, 1054415, -708670, + 4443144, -1402307, 4430259, 2527588, -3472481, 513249, 7221988, -2935610, -2933463, 150324, + 4215511, 1063004, -3045132, -3910568, 3521873, 152471, -5117454, 6953552, 7853348, 916976, + -2274185, 904091, -169651, 1636383, 3457449, -375810, 4597763, 2903398, 2622078, 2282775, + 1178969, 1896228, -2332167, -206158, -34029024, 29091960, -9728101, 6216965, -158914, 4846871, + -11778948, 4559108, -8029442, 40802, -5433134, 10922102, 9292162, 3513283, 755914, -8972187, + -5952825, -923418, -3607773, 10365904, -8469676, -335007, -4194036, 15180562, -4823249, 1359357, + -423054, 2617783, 1198296, 2607045, 1919850, -2510409, 1374390, -609885, 5308580, 818191, + 10056666, 5214091, -3231963, -680752, -1241246, 184684, -3824669, -2705830, -949188, 1793149, + 12262132, 1112397, 833224, -3367254, 5012227, -1857573, -2602750, 1612760, -2527588, 1507534, + -3141769, -6863358, 3418794, 3030100, -936303, 7157563, 1544041, 1694365, 2594160, -1930588, + 869731, 2312840, -5909875, -2796024, -433792, -2714419, 2753074, 4219806, -1584843, 7241315, + 4799626, -191126, -1962800, -1490354, -532576, 22187802, -517544, 4988605, -15109695, -2525441, + 1887638, -12193412, 953483, 16853452, -2959233, 1196148, -7630010, -10445360, 2632815, -9545565, + 14845554, -10340134, 3545496, 3498251, 7939247, 6171868, -1644973, -9227737, -1090922, -867583, + 4692252, -6474663, -1273458, -1913408, -3096672, -2207613, 4483946, 2753074, 12032351, 4073777, + -4514011, 4982162, -3307125, -3476776, 3682935, 10303627, -1509681, -5349382, -5014375, 5467494, + -161061, -7496866, -6914898, 3506841, 3255585, -3124589, -5720897, -9470403, 2583423, 3496104, + 2336462, -5357972, 3977140, 2441689, 1638530, -1917703, -614180, 2901251, -7129646, -949188, + 3090229, 3659312, -710817, 1769527, 113817, 75634376, -4754529, 3103114, 6979322, -6560563, + -2763812, -2207613, -17746804, 12019466, -1876901, -10986526, 2443837, -5607080, 6549825, 5194763, + 8308614, -2881923, 11257109, 9650792, 6193343, -9824738, 7640747, -13496935, -7939247, -9167608, + 3704409, -7030862, -1226213, -2362232, -8974334, -4851166, 7679402, -5617817, -4232691, -8568460, + 2856153, 2836826, 6513318, -3592740, 11169062, 2830384, 12725988, -1400159, 2360085, 2607045, + -6938520, 5044439, 13026636, -4413079, -300648, 3579855, -3710852, -5177583, 3137474, -5160403, + -2750927, -6760279, -4406637, 5104569, 4571993, 3088082, 4904853, 6139656, 5860483, 8778913, + 1490354, -2531883, 4589173, 3126736, 25770, -811749, 442382, -3208341, -618475, 745177, + 878321, -128849, -33474976, -65624952, 24305220, 208306, 1314260, -6582038, -7039452, -1604170, + 2222646, -4275640, 17100412, -7960722, -15008763, 850404, 906238, -2016487, -5319317, 11632919, + 2076617, -5295695, 5392332, -10419591, 13095355, -7408819, -3880503, -9012989, 14624364, -6399502, + -2175401, -8935679, -4161823, 7902740, -3773129, 8562017, -11203422, -13093208, 1013612, 2199023, + 2201171, -414464, -6805376, 1178969, 3420942, 1660005, 6743099, -111669, 10606422, 1406602, + 9936407, 13013751, 2665027, -1065152, 2407329, -7413114, -1941325, -12330851, -10977936, 3124589, + 3180423, 2063732, -824634, -3575560, -1896228, -3070902, -1737314, -3066607, -8590, -356482, + 2220498, -833224, -1501091, -4271345, -395137, -4945655, -659278, -6539088, -923418, -2486786, + -788127, -21996676, 64048700, -29231548, 13335873, -6231998, 20315196, -3246995, -9032316, -9421011, + 5304285, -2834679, -1251983, 427349, 3940633, -21577916, -10559177, -5592048, 8523363, 7164006, + 12521977, 2265595, -1954210, -2018635, 15034533, -19617264, 11306501, -9453223, -2005750, -9955734, + 15530602, 6227703, -10168335, 1322850, -4481799, 1657857, 6562710, -28138478, -11787538, 2297808, + 9839770, -5800354, 2040110, 7200513, -2969970, -3186866, -1067299, 10874857, 4256313, 1857573, + 1178969, 4189741, 12743168, -7763154, 5806796, -17952964, -3139621, 4043712, 8619999, 1623498, + 1215476, 418759, 4651450, -3511136, 502511, -1260573, -4264903, -3682935, 6674379, 6534793, + -2501819, -3388729, -11203422, -4720169, -2536178, -1995012, 8108899, -3100967, -3081639, -5458904, + -4969277, -390842, -57526792, -12431783, 5602785, -13662291, 3410204, 2480344, 8403104, -66572, + 16039555, 10462540, 5785321, -4428112, -7904888, -433792, 16971564, -14557792, -5572720, -11287174, + -268435, -30807800, -24290188, 1503239, 15045270, 20708184, 4769561, -7569880, 7054484, -6723772, + -4490389, -4587025, 2035815, 5405217, 1309965, 8044474, -6137509, -10973641, 9049496, 5937793, + 19022410, -2357937, 3088082, -2753074, 15341623, -15998753, -8033737, -3803194, -12135430, 7696582, + -5012227, 6459631, -12998719, 12932147, 12558484, 11547020, -4722317, 10234907, 545461, 3560528, + 6006512, 4267050, -5435281, 936303, -1694365, -309238, 11804718, 4400194, -5192616, 9552007, + -1552631, -8280697, -2740189, -603443, -11641509, -472446, 4859756, 6335077, 1011465, -244813, + -4808216, 1765232, 2823941, 41764260, 27180700, -8469676, 12363063, -27648852, 19542102, 7206955, + 14723148, -4960687, -3631395, -15107547, -7728794, -25868588, -4432406, -20583630, -6214818, -12659416, + -12968654, -17480516, 7015829, -23905788, 3274913, 10415296, -4556961, 3320010, -10269267, -83752, + -3171833, -3367254, -14014478, -1846836, 1666447, -912681, -2123861, -7316477, -6356552, 4380867, + 4657892, 6122476, 30492120, -12236362, -665720, 12373801, -2916283, -5029407, -11645804, 3646427, + 10378788, 17136920, 5804649, 14293651, -13896367, -20905754, 2035815, 13765370, 7720204, -11269994, + 13172665, -9869835, 6365142, 2654290, 11976516, 6779606, 4419522, 8117488, -8031589, 5188321, + 4331475, 2480344, 11763915, 2731599, 9513353, -1380832, -3758097, 1539746, 2287070, 2005750, + 11420318, -1786706, -6375879, -575526, 84140560, -54520316, -2995740, 6277095, 1657857, 6594923, + 11495480, -2364380, -1889786, 6429566, -9760313, -9330816, -1561221, 7421704, 30260192, 1232656, + 10432476, -9798968, 577673, -29996052, 18474802, -18159122, -25840670, 5963562, 7213398, -9616432, + 8585640, 3575560, 19973746, 22104050, -3710852, -8400956, -6339372, -33135672, -18068928, 25900800, + 8527658, 9504763, -14959371, -15360951, 4509716, -3012920, -13213467, 11456825, -2536178, -8289287, + -9556302, 6472516, -8564165, -4604205, 30384746, -18580028, 5598490, -6693707, 7017977, -8385924, + -3459596, -22733262, 3788161, -8443906, -5690832, 18090402, 4337917, 5016522, 10932839, 13110388, + 3876208, 9062381, -4097399, -1118839, -14950781, 6775311, 12257837, -2851858, 760209, -1406602, + -3148211, -3876208, 1329292, -3983582, -1844689, -52585432, -25993142, 9517648, -3442416, 18809810, + -2886218, -5186173, -15330886, -17145510, 8770323, -17914308, -6335077, -10243497, -2186138, -10797548, + -7475391, -8708046, -4582730, -10752451, -20255066, 11323681, -39975408, -607738, 35394824, 8499740, + -399432, -9919227, 2310693, -36172216, 14641544, 8860518, 2267743, 12820477, 19112604, -15429670, + -8248485, -16048145, 2110977, 384400, -9631464, -10924249, -12139725, -7245610, -775242, 7728794, + 420907, 6309307, 3440269, 633508, 24468428, 5774584, -4213363, 19421842, -9807558, -22411140, + -7080254, -2765959, -3440269, -1589138, -7943542, -1872606, -9846213, -2448131, -10009421, 854699, + 5014375, -10808285, -3283503, -6012954, 197569, -10954314, -13997298, -6070937, 5317170, 9614284, + 3674345, -3330747, -624918, 3622805, -2029372, -2370822, -5072357, 2104534, 4876936, 959925, + -485331, -6156836, -32371168, 43340516, -21565030, -10763188, -35631048, 27580132, -9899900, 16192027, + 895501, 854699, -10894185, 21580064, -5544803, 6927782, 5272073, -10101763, -3500398, -3373697, + -18930068, 3597035, 3302830, -14708116, -24528558, -15324443, -22574348, -5622112, 12079596, 6223408, + -13327284, -13316546, 19546396, 13363791, -17083232, 15461882, -8559870, 13660143, -21623012, -17179870, + -16503412, 5673652, -14624364, 9040906, -6648610, 3730179, -4086662, -2239826, 3304977, 15524159, + -34383360, -4501126, 6768869, -3292093, -10505490, -24910810, -2278480, 22559316, -133144, 19527068, + 14439680, 4045859, -2875481, 14869177, -14974403, -12388833, 9528385, -3760244, -9320079, 6189048, + 1797444, -7421704, -10696616, 17845590, -16836272, -9313637, -10080288, 10052371, 474594, -7402376, + -4121021, 5149666, -15539192, -141734, 4121021, 2976412, 335007, -5471789, -7567733, -74390984, + 27635968, 11678016, -18758270, 9165460, -21212844, 18985902, 16357383, 13926431, -38156488, 22988812, + 40269612, -5639292, 13636521, 573378, -12644384, -16503412, 44362716, -663572, -4009352, -24522116, + -48419312, -26248692, 2357937, -21461952, 17731772, -31748398, -10627897, -18777598, 5022965, -7391639, + -23740432, 3878356, -5568425, 15436112, -5347235, -18659486, -7252053, -56957708, 10063108, -1859721, + 26158498, -16194174, -17972290, 24421184, 5014375, 3925600, -9968619, -15339476, 5276368, 11055246, + 7941395, -4112431, 8443906, 4559108, 837519, -5102421, -5536213, -18887118, 1301375, -7584912, + -11113228, 9721658, 5360119, 27547920, 5609228, -18788334, -18932216, 3985730, -12337294, -9062381, + 2909840, -9320079, -622770, -4370129, -5656472, 5138929, -7578470, 2568391, -1133871, -1623498, + -2961380, -4217658, -9262097, -11111080, -3633542, -9594957, 62038656, -24431922, 427349, 3481071, + 25956634, -3285650, -4997195, 17815524, 30584462, -20564304, -23740432, 18590766, -3491809, 16176994, + 23435490, 19514184, 16849156, 13501230, 15923591, 60243360, -5037997, 4473209, 11778948, 33251636, + -6809671, -12135430, 12863427, -861141, -10765336, -13331578, -11609297, 350040, -15111842, 22995254, + 34688304, -1765232, -8510478, 14516989, -8332237, 20764020, 14948634, 569083, -17779018, 13668733, + -1267015, -5789616, 2924873, -2392297, 40374840, -3335042, 17641578, -8796093, 35991824, -3272765, + 3354370, -12388833, -21644488, 18388902, -10685879, 36266704, 8104604, 17231408, 300648, 268435, + 10657961, 2911988, 26040386, 14574972, 4887673, 13144747, -14991583, 5875516, 12094628, 1458141, + -4116726, 21399674, 5463199, -6809671, -6777459, 8688719, -3730179, 221191, 12195560, -3515431, + 7511898, 3135326, -6425271, 80257904, -23149874, 7524783, -7683697, 3562675, 10344429, 26970248, + -20925080, 11293617, -438087, 1445257, 14641544, -11980811, 15655156, -42292544, -19168440, 7073811, + 15747498, 11141145, 33633888, -33479270, 5226975, -5022965, -45865956, 19512036, -17841294, -11662984, + -6689412, -37673304, 12221329, 13209172, 5858336, -19668802, -32920924, 12874164, -20398948, 17798344, + -31542240, 403727, -37737732, -9302899, -25209310, -21904334, 22299470, 34699040, 4821101, 12741020, + -16039555, 6433861, -26899380, 11364483, -17671642, 4849018, 25733296, 13065291, -9081708, 15569256, + 2570538, 13475460, -11617887, 22606560, 38706244, 2044404, -23435490, -16232829, -10488310, -4329327, + 2461016, 17355962, 3416647, 28211492, -133144, 10773925, -25694642, -3826816, -18562848, -3556233, + -2798171, 5765994, -23302346, 3141769, -1816771, 6955700, 2486786, 4331475, 2317135, 1806034, + -81836304, -68650760, 29006062, -8611409, 33730524, -2624225, 11038066, -41016936, -38480760, -23401130, + 12861280, -31752694, -21906480, -9386651, 6380174, 23227184, 8293582, -46553152, 12554189, 26044682, + -66037268, -7870528, 3191161, -70104600, -24051816, 31228708, -64942052, 31825708, 33492154, 429497, + -9367324, -2647847, -15625091, -17237852, 11658689, 14347338, 48719960, -28784870, -15109695, -12098923, + -22606560, 1335735, -38596724, -9622874, 2948495, -1088774, -12554189, -1960653, -21255794, -4312147, + 11875585, -5308580, -13853417, 16114717, -7541963, -15773267, -22531398, 47972636, -1999307, 29229400, + 3861176, 10969346, 31625992, 4574140, 21545704, -14338748, 23942296, 17379586, 5207648, 6285685, + 5871221, 20869246, 9513353, 3882651, 20154134, -8557722, 2937758, -2334315, -31479962, 14733885, + 7477538, 4310000, -19275814, -5484673, 3575560, 6122476, -5546951, -132785360, 50072876, -14671608, + -59566900, -14538464, 1498944, -15406048, 22997402, -51571820, 24831354, -4161823, -59302760, -40881648, + 8113193, 23542864, 22237194, 16320876, 34911640, 9970767, 57423712, 31439160, 67306432, 8744553, + 54672788, -42127188, -33191508, 11310796, 4743792, -33416994, 9335111, 7073811, -4668630, -12745315, + 32394790, 6195491, -71526240, -31892280, 23953032, 8248485, -15189152, 20444044, 20845624, 32482838, + 6968585, 9633612, 6051609, 9427453, 11841225, -24854976, 3758097, 4561256, -52907556, 24917252, + 18326626, 22432614, -36273148, -21049634, 26416196, 25770, -7056632, -5476084, -15532749, -13711683, + 60130, -18245022, -40684076, 13825500, 43327632, -30494268, 4198331, -17336636, -7067369, -12637941, + -3968550, 22344568, 5327907, 18461916, 5345087, -19660212, -14008036, -15968688, -9597104, -13060996, + 3088082, -8282845, -1823214, -12500502, 3944928, 6468221, 7069516, -3796751, -12530567, 208306, + 55727200, 37671160, 26046830, 14158360, 1724429, -12987981, -19789062, 17467632, -55602648, 58662812, + -36359044, 9429601, -60359324, -2233383, 56760140, 22269406, -20115480, 35985384, -57342108, 22877144, + 10677289, 3979287, -70609264, -21208548, 4314295, 11325829, 45339824, -69496864, -9397388, -23113366, + -65408056, -14388140, 15665893, 32628866, 49007724, 38044820, 37900940, -3287798, -24391120, 24919400, + 7529078, -15034533, 8931384, -32003948, 50772956, 23712514, 17166984, -26555782, -58123792, -15603616, + 1307818, -70499744, -56972740, -15058155, -51105816, 32736240, 12678743, 10118943, -23551454, -25372520, + 9801115, 7028714, 4256313, 15674483, -9859097, 11815455, 33565168, 15159087, 5662915, 4443144, + -22174916, -18683108, -16700980, 9652939, -5972152, -45221712, -36120676, -3749507, -29098404, -25879326, + -7451769, -37366216, -23444078, -6008659, 1952063, -5493263, -2493229, 8727374, -7183333, -2875481, + 1943473, 1151051, -10902774, 64126008, -50034220, 13462575, -7075959, -6493991, 1174674, 17742510, + -31166430, 41717016, -12036646, 28610924, -2785286, -23214298, 44377748, 43785044, 31331786, -14654428, + 67248448, 24906516, -75183400, 77549928, 7082401, -204011, 56049324, 2493229, -24305220, -32502166, + 55323472, -34634616, -46209552, 44781476, 39049844, -25409026, -61456688, 24131274, -21086142, 8566312, + -43226700, -35414152, -14675903, 41938208, 37645388, 5005785, 34548716, -50124416, 16192027, -13149042, + -18672370, 24084030, 3395172, 7425999, -70199096, -19159850, 39092792, -50126564, -13037373, -62895500, + -11705933, -23439784, 10640781, -15129022, 7142531, 6579890, -2130304, 6418829, -16810502, -55841016, + -10520522, 28638842, -3770981, 19900730, -21509196, -48977660, -8677981, 10965052, 31260920, 7748121, + 17121888, -1681480, 7052337, 11942157, 7219840, -16922172, 4361540, -6839736, 7402376, -13441100, + 8115341, 3463891, 977105, -1367947, -11729556, -5727339, 58100172, 4460324, -16915728, -41641856, + -1421634, -19909320, 15468325, -34398392, 21852794, 13913547, -30077656, -30850750, 46512348, -54868208, + -2164664, 35403416, -39730596, 12783970, 45457932, -36193688, 31172872, 22892176, 33365454, -54949812, + 47431472, -55177444, 16608639, -42006928, 5226975, -21494164, 37342592, 1127429, 22849226, 11776800, + -39208756, -23916526, -54196044, 31587336, -36717676, 31763430, -44150116, -50266148, -84174920, 8196945, + 44160852, -6758131, -1316408, 13952201, 38059852, -12919262, 10202695, -46497316, 11798275, 61725124, + -6259915, 55963424, 73209864, -481036, 12238509, 15053860, -31312460, 16243566, -37931004, -1902671, + -38933880, -37718404, 2179696, -14287209, -63952064, 43323336, 987843, 32231582, -37761352, -19250044, + -14471892, 16533477, -410169, -9964324, -9987946, -6429566, -2501819, 3693672, 4078072, -7574175, + 8630737, -8688719, -8701604, -4801774, 12204150, 9154723, 10136123, -4956393, 7625715, -131593504, + 33462090, 49362060, 13741748, -56981332, -8289287, 92913024, -106629008, -2622078, -17931488, -69694432, + -17527762, -47195248, 17398912, 17328046, 40873056, 16632261, -55710020, -19703162, 40291088, -63552632, + -18010946, -67972152, 58177480, 17549236, 45524504, 77560664, -27204322, -16230681, -12687333, -38680476, + 37245956, -18079664, -46130096, -51709260, -8985072, 20010252, -1348620, 10713796, 12745315, 30283814, + -13146895, -1275605, 22466974, -21421150, 43958992, 50038516, 47180216, -38001872, 5231270, -11740293, + 22640920, 94263792, 70708048, 134879152, 10823318, 53429392, 43233140, -20298016, -4496831, -6878390, + -12429635, 17190606, 4110284, 48681308, 36672580, -16254304, -4814659, -28619514, -56403660, 22913650, + -665720, 19520626, -3959960, -38895224, -5574868, 6092411, -21670258, 13417478, -13763223, -18775450, + 689342, -18814104, 66572, -5065914, -4550518, 350040, 3062312, -11669426, 1827509, 977105, + 90194, 4980015, 204264352, 98490040, 35010424, 31533650, -48687748, 31220118, -39356932, 46812996, + 38306812, 35914516, 9079561, -67033704, -37595996, 72855528, 12466143, -4355097, -15637976, 81570016, + -88701816, -37364068, -22411140, -6734509, -62895500, 14804752, -54385024, -30399778, 8748848, -34477848, + 50435800, -48960480, -21296596, -12154757, 53916872, -90067608, -17538498, -67072356, -2149631, -496069, + -58995672, 9466108, 45947560, 24874304, -1324997, -27781996, 2229088, 27601608, -37220188, 74152608, + 100785704, -6549825, -63071596, -59365036, 41394896, -15206332, -13900662, 86745456, -18762564, 27550068, + -2649995, 54470924, -11227045, 6929930, -10765336, -34832184, -96855808, -57921928, -9341554, -26134876, + -66849020, -44012676, 24779814, 55877524, -4900558, -7406671, -6262063, -9219147, 30444876, 19228568, + 4114579, -19061064, 21270826, -12646531, -44424996, -42498700, 5214091, 28834262, -34694744, 22466974, + -2478196, -13411035, -11759620, 695785, -19512036, -15088220, 590558, -5950677, -3139621, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS][2870] ={ { -9622874, - 5398774, -3060164, 1363652, -1702955, 433792, -1239098, -309238, 92342, 2585570, -1634235, - 1140314, -2660732, 2018635, -2989297, -4069482, -3554086, 854699, -343597, 588411, 113817, - -1788854, 1082332, 1831804, -974958, 1453846, -184684, -586263, -1198296, -195421, 395137, - 983548, -657130, 1434519, -532576, 906238, 1309965, -899796, -846109, 77309, -867583, - 259846, 53687, -377957, 878321, 152471, -354335, 3665755, -3788161, -702227, -794569, - -882616, -268435, -62277, -717260, -523986, 10737, 154619, -523986, 304943, -1172526, - -350040, -186831, 710817, -4028679, -382252, 837519, -386547, -485331, 350040, 81604, - 283468, 1861868, -897648, -590558, -994285, -180389, 545461, 839666, -852551, -633508, - 989990, -904091, -1352915, -143881, -369367, 476741, -401579, -380105, 223338, 420907, - -833224, 279173, 315680, -12934294, -8804683, -3560528, -4093104, -2267743, -2145336, -2010045, - -925565, -2426657, -1932735, -826781, -1507534, -184684, -549756, -1292785, -1778117, -1967095, - -788127, -1133871, -2003602, -246961, -2503966, 23622, -197569, -330712, -1518271, -244813, - -1151051, 23622, -1481764, -925565, 502511, -1069447, 184684, -2503966, -470299, 1245541, - 749472, -30065, -371515, -708670, 199716, 246961, 1163936, -682900, -120259, -343597, - -17012366, -938450, 2201171, -47245, 663572, -128849, 27917, -1374390, 1462436, 560493, - 1758789, 1234803, 3594888, 2622078, 212601, -1428077, -805306, -345745, 680752, -491774, - -3154654, -2854006, -1462436, -450972, 148176, 390842, 594853, -124554, 109522, 337155, - -654983, -100932, -81604, -1960653, 1157494, 461709, -206158, -32212, -736587, -1093069, - 682900, 246961, -697932, 665720, 584116, 813896, -358630, 19078244, 13406740, 2628520, - 5192616, 1069447, 1720134, 4226248, 2181844, 667867, 2549063, 1030792, -1116692, -560493, - 886911, 1468879, -2585570, -352187, -1550483, 3440269, 1713692, 876173, 1713692, 869731, - 886911, 38655, -167504, -850404, 1348620, 1627793, 1391569, 1733019, 2100239, 1251983, - 3068754, 689342, -173946, 1088774, 201863, -539018, -242666, -481036, -607738, 10737, - 1423782, 337155, 234076, 824634, 28469190, 12107513, 3657165, 3332895, 2327872, 1443109, - 457414, 111669, 3120294, 633508, 1728724, 2355790, 1241246, -163209, -869731, 4977867, - -453119, -2718714, -1561221, 1239098, 66572, 2662880, 869731, 330712, -493921, -1234803, - -354335, -564788, 1163936, -197569, 481036, 122407, 178241, -633508, 942745, 3459596, - 2181844, 2299955, 2063732, 1713692, 929860, 672162, 388695, 1136019, -959925, 697932, - -455267, 9350144, -9854802, -3015067, -4239133, -3719442, -1984275, -620623, 1402307, -1400159, - 173946, -3682935, 1275605, -1357210, -3289945, 852551, -2345052, -3186866, -2237678, 3002182, - 2304250, -1088774, 1183264, -2117419, 837519, -3835406, 221191, 607738, -627065, -914828, - 818191, -3038689, -1350767, 369367, -1035087, -910533, -667867, 227633, 339302, 1505386, - 107374, 2609193, -998580, -738734, -809601, -1316408, -386547, -667867, 386547, -1136019, - -1711545, -33797096, -17166984, -6131066, -4840428, -5231270, -3313567, -4520453, -2976412, -4924180, - -919123, -2218351, -594853, 236223, -2074469, -554051, 300648, 34360, -3141769, -2061584, - -1434519, 300648, -4228396, 425202, -1930588, -3732327, 300648, -45097, 238371, -90194, - -1340030, -1007170, 23622, -281320, -66572, -1393717, 25770, 380105, 1110249, 431644, - -1473174, 833224, -1471026, 985695, -2516851, -1702955, 358630, -1380832, 51540, -521839, - -2025077, -19986630, 10479720, 4413079, 1623498, 2716567, 491774, 734439, 2368675, 2669322, - 1428077, 1780264, -1359357, -562641, -2113124, 2561948, 521839, 468151, 3474629, 120259, - -2349347, 4151086, -2761664, 341450, 3412352, -1028645, 886911, 448824, -90194, -1713692, - -420907, 953483, 977105, 171799, -622770, 73014, -1221918, 3917010, 322123, -55835, - -1550483, -768799, -1007170, -925565, 2104534, 2031520, -536871, 206158, -146029, 616328, - 135291, -128849, -429497, 485331, 304943, -588411, -564788, 30094836, 12783970, 3416647, - 6902013, 4007205, 1715839, 3004330, 2587718, 2147, 1887638, 2982855, 689342, 2147, - 1526861, 4202626, -1423782, -777389, -3326452, 841814, 3835406, 1617055, 178241, -2171106, - -1163936, -936303, 4039417, 1247688, 2113124, 1174674, -1917703, -3094524, 3502546, 1913408, - -2151779, -1037235, 3403762, 2856153, -143881, 702227, -356482, 1486059, 955630, -343597, - 693637, -1213328, -562641, 1821066, -966368, -762357, 1958505, 1660005, 929860, 319975, - 408022, 397284, 1398012, 35592392, 7743826, 5922760, 2637110, 2710124, 1172526, 2789581, - 3332895, 5261335, 3262028, -1011465, 4179003, -816044, 1142461, 910533, 3541201, 5175436, - 3367254, -914828, 5826123, -1118839, -571231, -3070902, 852551, -927713, 979253, 1544041, - -1726577, -2454574, -981400, 457414, -1926293, -663572, 923418, 1269163, -2263448, -1977833, - -785979, 730144, 17180, 584116, -801011, -40802, -530428, -798864, 964220, -1346472, - 1294933, -1443109, -461709, -1105954, 266288, -416612, 1453846, 609885, -77309, 4093104, - -15760382, -5095979, -5611375, -3663607, 1007170, -927713, -3354370, 1909113, 176094, 2353642, - -231928, 223338, -3657165, -2630668, -1681480, -2705830, 266288, -2877628, -5469641, 1067299, - 682900, -2579128, -519691, -2342905, 528281, 758062, -410169, -5703717, -1569811, 337155, - -592706, 463856, 1569811, -4065187, -1172526, -2549063, 1352915, -335007, -173946, 2626373, - -2641405, -201863, 869731, -360777, -841814, 1260573, 719407, -1625645, -1928440, -3156801, - -435939, -2415919, -1900523, -1041530, -1301375, -818191, -328565, -753767, -1168231, -1640678, - -884763, 566936, -36975372, -12594992, -7537668, -1956358, -3884798, -178241, -2085207, -2780991, - -3356517, 4181151, 135291, -1640678, -360777, -6176163, -3459596, -3025805, 5059472, -4249870, - -8890582, 719407, 1136019, 680752, -3242700, -889058, 1924145, -4123169, -382252, -4204773, - -1206886, 2325725, -1969243, 558346, 4606353, 485331, -897648, -1118839, 1286343, 1404454, - 1191853, -1370095, -204011, 1460289, 2059437, 1202591, 730144, -3854733, 779537, -193274, - -1896228, -734439, 431644, -526134, -1917703, -1309965, -1990717, -592706, 161061, 283468, - -253403, -1432372, -201863, -1114544, -34360, -24556476, 5686537, 373662, -3000035, 4410932, - -2785286, -2143189, 1108102, -4140349, -2480344, -874026, 1722282, -3264175, 4471061, 105227, - -122407, 2100239, 2083059, 3287798, -352187, 4524748, 6485401, 4696547, 1479616, 4020090, - -1303523, 2557653, -2961380, -3008625, -1264868, 384400, 1962800, -1576253, -2843268, -1522566, - -73014, 1767379, -2748779, 1995012, 676457, 1541893, -704375, -2491081, -3380139, -4000762, - 1045825, -2040110, 1088774, -4243428, -1239098, 1928440, -2692945, 457414, -1894081, 1301375, - -614180, 1264868, 287763, -743029, -75162, -1698660, 3193308, 1363652, 16428250, 27124866, - 7870528, 7054484, 9792525, 7939247, 1567663, 6300717, 5607080, 3058017, 11871290, 2836826, - 2025077, 5147519, 4765266, 2514703, 2121714, 1262720, 1992865, -1516124, 6008659, -1589138, - 599148, -1868311, 3813931, 206158, -957778, 3154654, 3760244, 1335735, 4984310, -3496104, - -5789616, -1294933, -315680, 1277753, -377957, 2523293, -2302103, 2297808, 5022965, 2168959, - -4425964, -904091, 2293513, 904091, -2156074, 3163244, 1260573, 1879048, 2091649, 2826089, - 944893, -768799, 710817, -2525441, -648540, 2385854, 2190433, -1211181, -15032, 597000, - -1054415, 62281320, 6448894, -627065, 3895535, -118112, 5364414, 60130, 1473174, 672162, - 5652177, 2619930, -2267743, 1881196, 2733747, 1440962, -3345780, -7045894, -3186866, -2961380, - 1292785, -4327180, -715112, -277025, 1206886, 7745974, 4350802, 1458141, 3152506, -4825396, - -246961, -2529736, -919123, -1992865, 2957085, -1114544, 4919885, -2239826, -828929, -2499671, - -1063004, -3609920, -1627793, 828929, 839666, -188979, 96637, -1979980, 1178969, 3356517, - 328565, -1806034, 2164664, -2965675, 1357210, 1305670, -231928, -921271, -569083, -128849, - -496069, 150324, 2074469, -221191, -18129056, -21573620, -4009352, -1202591, -882616, -3429532, - -1417339, 6545530, 3876208, 1380832, 1786706, -2856153, -571231, 4915590, -1808181, 7999377, - -6208375, -1694365, 6524056, -1256278, -727997, -3790309, 4473209, 4943508, 96637, 4872641, - -1769527, 2162516, -96637, -2723009, -425202, -2153926, -895501, -1395864, 2695092, -1977833, - -466004, -3045132, 2068027, -1580548, 4509716, -7106024, 2993592, 2482491, -4290673, 94489, - -2832531, 768799, -3223373, 1030792, 1355062, -4097399, -612033, -1488206, -6098854, -3532611, - -1685775, -3030100, -652835, -504659, 341450, -2476049, 360777, -4793184, 1352915, 597000, - -1644973, 609885, -1642825, -435939, -1065152, -491774, -15934329, -9137543, -12360916, -6345814, - -8257075, -934155, 7969312, -8325794, 6405944, 4086662, -4537633, 9083856, -1436667, 1767379, - -5931350, -639950, -2637110, -380105, 38655, 2237678, 1095217, 4739497, 9092446, -2463164, - 1254131, -4350802, -4541928, -4037269, 919123, 3777424, -1331440, -1324997, -1206886, -2813204, - 3152506, -994285, -210453, -2755222, -2164664, -1836099, -2836826, -244813, -124554, -2405182, - 1571958, -3678640, 1357210, -2138894, -382252, 1324997, -2712272, 3345780, -5830418, -1821066, - 549756, -1735167, -3111704, 1518271, -858993, -3508988, 5746666, 3242700, 794569, 1088774, - 1153199, 1402307, -2905546, -1913408, 738734, -1041530, -2014340, 2162516, -44373456, -5072357, - 3592740, -3244848, 7372312, 3408057, -8974334, 1224066, 1520418, -2886218, -7514046, -2776696, - -1823214, 2158221, 549756, -6947110, -2617783, -3700114, -6687264, -5630702, -13118978, -6820408, - -7657927, -9292162, 7402376, -4932770, 2714419, 5557688, -3998615, -6294275, -2420214, -1342177, - 1522566, 4179003, 2430952, -5209796, -6478958, 5136781, 3214783, 4067334, 5710159, 846109, - -10737, 2259153, -257698, -2497524, 1458141, -1337882, -852551, 3369402, 8544837, -2806761, - -4252018, 2010045, -2703682, -234076, 4410932, -8411693, -100932, -2757369, -444529, -152471, - 68719, -977105, 1702955, -2484639, 3077344, 3352222, 1421634, -169651, -4295, -2817499, - 35553740, 31005368, 8398809, 18852758, 5216238, 10857677, -1760937, -1722282, 5276368, 7133941, - 3788161, -12311524, -4082367, 7675107, 8669391, -3197603, -4179003, 1406602, 3609920, 4099546, - 609885, -6405944, -13758928, -5171141, 7509751, -667867, 7718056, -1829656, -2456721, 1559073, - -6397354, -3708704, -3721589, 7067369, -8813273, -6081674, 1582696, 1473174, -2269890, -283468, - -2527588, 2643552, 3603478, 3090229, 6981470, 4063039, 118112, -5718749, 5377299, -513249, - 2978560, -2798171, 2078764, 4249870, -648540, -1144609, -2662880, -3161096, 1934883, 427349, - 2735894, -2735894, 2284923, 5519033, -1161789, -3034395, 3848291, 4999342, -2033667, 2226941, - 2506114, 1999307, 4778151, 4075924, 43115028, 8046621, -8452496, 7013682, 4524748, -8162586, - -1864016, 4181151, 210453, 1346472, -710817, -1700807, -9075266, -8817568, 3865471, 8347269, - 8551280, -8489003, -17278654, 2415919, -337155, -6899865, -8877697, -1552631, 4320737, -3036542, - 6448894, 10488310, -4015795, -3425237, -1496796, -1554778, -2130304, -16041703, 8291435, 7636452, - -384400, 4922033, -4954245, -1548336, -4516158, 6466074, 6822556, 766652, -1821066, -2527588, - 3760244, 923418, -2351495, -4071629, -83752, 3414499, -5297842, -3234110, -2929168, 874026, - 1563368, -6554120, 3238405, 7221988, -5997922, -83752, -1520418, -1022202, -146029, 715112, - 304943, -425202, 1194001, -1958505, -3964255, -4563403, -2106682, -1120987, -2426657, -4576288, - -3444564, -1101659, 3193308, -1541893, -11821897, -7793218, 1112397, 10692321, -10767483, 7645042, - 3489661, 1662152, 2173254, 1833951, 6968585, 11291469, 294205, 3390877, 1239098, -9738838, - -8845485, 8607114, 1155346, -10063108, 5912023, -8594230, 1398012, 10526965, -689342, -2899103, - 12023761, 1857573, 805306, 970663, 341450, 1065152, -5312875, 3154654, 4836133, 7924215, - -6324340, -3146064, 1217623, 1084479, -2909840, -5716602, 3624953, -2098092, 2534031, 1331440, - -1999307, -1861868, 798864, 3594888, -2757369, -1228361, -629213, 2057289, -5787469, -2712272, - 2665027, 558346, -1962800, -1022202, 2409477, -2452426, 747324, -1664300, -416612, 1941325, - 558346, 1129576, -4995047, -3562675, 1322850, -46364172, -42567420, -9519795, -19722490, -17319456, - -9809705, -2978560, -7365869, -8871255, 6027987, 1608465, -2059437, 10112500, 3712999, 12150462, - 9414568, 2703682, 3770981, 4428112, -18631568, 8778913, -1438814, -3951370, -3489661, -11029476, - -3412352, -3833258, 10589242, -3547643, -6324340, -3158949, 1685775, -1389422, -2113124, 2325725, - -2800319, -1825361, 6478958, -6360847, -554051, -2063732, 11654394, 4617090, 4660040, -8974334, - 691490, 7971460, -4191888, 1896228, 38655, 1930588, 51540, 661425, -612033, 5078799, - -663572, -1666447, 3704409, -2639258, 2076617, 4425964, -2074469, -3088082, 1372242, 1687922, - -3330747, -1370095, -6146098, -4872641, 1612760, -562641, -1082332, -115964, 809601, -397284, - -3899830, -1838246, -29038274, 61319248, 38461432, 12375948, 3734474, 4234838, 4316442, 6902013, - 6012954, 13000866, 25909390, 1501091, 2922725, 5671505, 5284958, 6700149, -4872641, 25209310, - 17914308, -16688095, 12317966, 2312840, -2720862, 6075231, 15184857, -14248554, -4093104, 1185411, - -11879880, -8057359, -8495445, 17323750, -785979, -3058017, 2282775, 972810, -5188321, -13879187, - 9620727, 7885560, -2372970, 4307852, 9865540, -6560563, 5368709, 569083, -2585570, 7812546, - 6646462, 1563368, 891206, 805306, 5353677, 7580618, 55835, -1363652, -81604, -2394444, - 5306432, 1116692, -2160369, -2649995, -1943473, 4039417, 1864016, 9176198, -2774549, 3281355, - -2042257, 2289218, -3745212, -1329292, 1127429, -2035815, -2619930, 231928, 444529, 1176821, - 2482491, 66413080, -23407572, -22993108, 10413148, 2559801, -8701604, -7662222, -12169790, -12062416, - -8821863, -7475391, 10997264, 2564096, 1329292, -6236293, -5443871, -19441170, -19327, -7683697, - -13361643, 11134703, 7406671, 2297808, 6884833, 1934883, -2342905, -4305705, -362925, -3637837, - 5634997, 9543417, -10129680, -3728032, 148176, 5214091, 13228499, 3983582, 17742510, -9096741, - 5600638, 14796162, 8718784, -7361574, -2192581, 1741609, -3749507, 6412386, -992137, 386547, - 9448928, 5214091, 1516124, 942745, -229781, -3910568, -109522, 1200443, -4239133, -2332167, - 4194036, -1561221, -8040179, -1093069, 244813, -1312113, -8373039, 2269890, 1728724, 2190433, - 2345052, -1651415, -3472481, -1086627, -1750199, 6912750, 2918430, -2553358, 1902671, -521839, - 1443109, 210453, 21324512, 40516572, 15921444, 10861972, 12704513, -3682935, 4097399, -11547020, - 20158430, 7952132, 19366008, 5806796, 7395934, -17637284, 22078280, 32708324, 4179003, 21214990, - -4221953, -17173426, -16995186, 15571404, -4973572, 12438225, 2334315, 4999342, -9494025, 9633612, - -3302830, -3408057, 15908559, 11053098, -8276402, 14854144, 1717987, 2733747, -2933463, -11160473, - 3167539, 856846, -6167573, -7022272, 6618545, 9238475, 3085934, -3225521, 4413079, 375810, - 9874130, -5894843, -796716, -9734543, 1206886, 9564892, 6489696, -4413079, 34360, 3369402, - -8596377, -637803, -5847598, -3283503, 1874753, 2295660, 5892695, -6831146, 3032247, -7859790, - 758062, 9760313, 3498251, 1928440, -6107444, 919123, 807454, -10176925, -2630668, 1185411, - 1806034, 4032974, 1711545, -219043, -47324096, -2581275, -10690174, 13432510, -10234907, 11048803, - 332860, 8856223, -1232656, 7638600, -23650238, 6949257, -2778844, -8534100, 4155381, -10393821, - 6371584, -10492605, -5538361, -23179938, 13185550, 27754078, -10896332, -3695819, -3176128, -4561256, - 4228396, 5493263, 8046621, -20620138, 6154688, -12852690, -3676492, -740882, 10567767, 3987877, - -5312875, 2188286, 2250563, 7511898, 7713762, -12899934, -4236985, 1808181, -9373766, -8409546, - -1584843, -6023692, 2542621, 7136088, 964220, 1191853, -1694365, 6650757, 18107582, 10161893, - -11113228, 2190433, 4112431, -5564130, 6386617, 1606318, -7112466, -730144, 8160438, 818191, - 7812546, -10554882, -2439542, 6251325, 313533, -3504693, -7292855, -605590, -3863323, 5982890, - -1698660, 3719442, -1788854, -822486, -86872160, -32600950, 17639430, 6358699, -11158325, 12345883, - 10176925, 16299401, -3938485, -7112466, 14239964, 631360, -9590662, 19393924, -21706764, -28245852, - -13344463, -15141907, 9910637, 14280766, -322123, 3715147, 22486302, 9940702, -22771916, -10249939, - -14005888, 4239133, -21144124, -18406082, -1112397, 2905546, -8083129, -8800388, -12882754, -6644315, - -11785390, -11506217, -4327180, 1050120, -4198331, -622770, -7941395, -1166084, -6079526, -13380971, - 29066192, 2422362, 6895570, -11781095, 7720204, -691490, 3964255, -9444633, -354335, -1471026, - -7876970, -4881231, -3571265, 9513353, 6927782, 7462506, 4632122, 5804649, -1301375, 165356, - -6811818, -1172526, -294205, -453119, 8961449, 2508261, 5272073, 5544803, -3992172, -9560597, - 4172561, -3620658, -1677185, 4024384, 11478300, -1166084, 45567456, 16728898, 36717676, 5774584, - 2501819, -14693083, 5677947, 21960168, 8306467, 1597728, 14798310, -13198435, -5849746, 12004434, - -9083856, 4187593, 21165598, 6801081, 2944200, 6743099, -3777424, 9195525, -6906308, 255551, - 3657165, 1247688, -5310727, -5785321, 2362232, 21751862, -6949257, 5403069, -19945828, -10690174, - 9255655, 22917946, -17506286, 165356, 11128260, 2802466, 4297115, -14532022, -4986457, -12556337, - -21906480, -5787469, -12135430, -12902082, 10546292, 4200478, 3715147, -7533373, -4522601, -1479616, - -21036750, -1960653, 11963631, -8358007, 9622874, 19552838, 3081639, 12955769, 8643622, 751619, - -3788161, 11244224, -14072460, -648540, -734439, 8948564, 4438849, 8246337, 435939, 9143985, - -450972, 1909113, 1513976, 9732396, 188979, 118112, 8828305, -4679367, 5546951, 1939178, - 1589138, -2798171, 55334212, -12141873, -17001628, 2725157, 12721693, 10357314, 10587094, -3079492, - 11420318, 3592740, -13587129, -27174258, 18193482, 4898410, 13159780, 7872675, -7243463, 3210488, - -10417443, -17768280, 18457622, -11544872, -22125524, 2368675, -3635690, 2750927, -2209761, -2214056, - -5626407, -8742406, 6506876, 14940044, -21569326, 21109764, -18251464, -23776938, 2302103, 6414534, - -13449690, 10617159, -1915555, 6749541, -11583527, -5697274, 19666656, 8098161, 19913616, 5349382, - 1498944, 6401649, -70867, 811749, 10426033, -839666, 1829656, -9242770, -6362994, -5441724, - 7337952, -7168301, -6197638, 11944304, -362925, 13368086, 2014340, -9627169, 15893526, 12455405, - -1030792, 8147553, -8166881, -13320841, 5138929, -4833986, -9663676, 904091, 8482560, 11626476, - -4374424, 3678640, 5581310, -695785, 2381559, -11504070, 4425964, 4082367, -5798206, 46366320, - 56493852, -8665097, 345745, -28428388, -3214783, -20746840, -15513422, -4958540, -10608569, 15992311, - 8590, 12403866, -26530012, 22043920, -16707423, 22512072, 801011, 17873506, -6459631, 22529250, - 7410966, -10735271, 4754529, -16020228, 10625749, -8931384, 25372520, 7554848, 16677358, -27758374, - -15893526, -6818261, -14061723, -5896990, -9622874, 893353, 34297460, -15861314, 17246442, 29059748, - 4121021, 12773233, 171799, -6526203, -13569949, -10359461, 1445257, -7479686, 17549236, -11381663, - 8046621, 21221434, -2793876, -1763084, -1700807, 17353816, 18769008, 5869073, -8714489, -7649337, - -4602058, 7327214, -17194902, 3219078, -3083787, -4743792, 242666, 11340861, 1013612, 16063178, - 14718853, 2905546, 3532611, -7002944, -350040, 16514149, -2132451, 968515, 6932077, -8834748, - 169651, -10110353, -10995116, 1584843, 1586990, -2214056, -44027708, -39451424, 17572858, -5233418, - 21738976, -12369506, -10211285, -14763950, -12116103, -5602785, -34744136, -12738873, 13380971, 18683108, - 7715909, -24208584, -6871948, -11617887, 10275709, 35031900, 19621558, 8568460, 1382980, 2665027, - 1831804, 6165426, 18129056, 1483911, 4778151, -10295037, 867583, -14761803, 5804649, 7241315, - 13123273, 1722282, -8924942, -4468914, 17295834, -8003672, 6551973, 3566970, 6298570, 22091164, - -12236362, -18610094, 7048042, 15760382, 4198331, 15751793, 18895708, 9141838, 13114683, 5085242, - 2856153, 10404558, 31469226, -17452600, 23622, 5207648, 2832531, -13526999, -2362232, 10499048, - -137439, -12131135, 4881231, 22851374, -18522046, 6088116, -17540646, 10204842, 6938520, 2845416, - 715112, -8257075, -8229158, 16084653, 8699456, 3309272, -4870493, 11280732, -1580548, 70867, - -7786776, 8321499, 3109556, -88624504, -30934502, -1988570, -8843338, -21854942, 13350906, 17828410, - 30077656, 9884867, 18910742, -17559974, -37054832, 17257178, -8757438, 927713, -19952270, 19628000, - -11787538, -932008, 18240726, -50549616, 4870493, 26289494, -49063560, -12970801, -17390322, 2372970, - 1816771, 12000139, -13653701, 15906411, 2254858, -25722560, -13269301, 3038689, -3315715, -12745315, - 11196980, 29903710, 6371584, 8269960, -4818954, -7449621, 17426830, 3180423, -8787503, -42964704, - -6869800, 5413807, -21809844, 10337986, 8770323, 1735167, -16864190, -15062450, -17978734, 38558068, - 10198400, -5886253, 7430294, -32789928, 3811784, -15354508, -17673790, 17061758, -2957085, 212601, - -11162620, -41023380, 5486821, 12457553, 7159711, -3000035, 24212878, 803159, -10222022, -1629940, - -15981573, 25132002, 13640816, 7028714, -4209068, 1707250, 8044474, -7483981, 3115999, 3463891, - 1144609, 94038312, 23684598, 24270860, 20620138, -6004365, 811749, 96705480, 27930172, -8001524, - 59075128, -33137820, 24646670, 5179731, 15064598, 24144158, -7464653, -16855600, 18204218, -3311420, - -58407260, 14933601, 15146202, 12363063, 27805618, 17613660, 18161270, -16454020, 3627100, -15889232, - -8289287, 17310866, 5746666, -34095596, -20358144, -28576564, -42543800, -6515466, 8776766, 20781200, - 17940078, 15455440, 12962211, -6300717, 22254374, 12380243, -27081916, -10361609, 7224135, 20396800, - 489626, 4398047, 35912368, -6431714, -3040837, -9305047, -1872606, 18300856, -15629386, 270583, - -22106196, -19643032, -12586402, 23008140, 31621696, -9176198, 2555506, -6094559, -19630148, -13305809, - 5100274, -22739704, -6045167, -6077379, -14699526, 40282500, 8826158, 13475460, 11744588, -1168231, - 51540, 6959995, 2115272, 12668006, 7984344, 225486, -1282048, 95657512, 56566868, 4024384, - 35931696, 27376122, 7872675, 41424960, 11731703, -186831, -12839805, -9603547, -26989574, -73398840, - -5390184, 7078106, -24983824, -14323716, -2765959, 51150912, 16823386, -13346611, 586263, 3498251, - -7271380, 21532818, -3575560, -13365938, -9010841, -12603582, 8158291, -18491982, -44959716, 955630, - -23435490, -36494336, 7209103, 15644418, 22874996, 12771085, 20255066, -13831942, -38716984, -25374666, - -34819300, 13623636, 32772748, 26862872, 17486960, 32575180, 904091, 20330228, 44397076, -36758476, - 6680822, -16634408, 236223, 12668006, 13284334, 21479132, -1879048, -44914620, -34574488, 7383049, - -9728101, -12818330, -8486855, -9861245, -30633854, 2647847, 20869246, -2291365, 15915001, -9590662, - -753767, -1784559, 7990787, 30404074, 21545704, 18509162, -17538498, 968515, -10526965, 1202591, - -28144920, 5626407, 4715874, 3027952, -526134, -3485366, -8074539, 7011534, 360777, 12691628, - 23295902, -47794396, 5918465, -36582384, 16361678, -69844760, -1891933, -23173496, -36024040, 64488932, - 36483600, -23008140, -57917632, -14660871, -21124796, -50626928, 39397736, 2100239, -34980360, -13015898, - 20244328, -33133526, -22529250, -17409650, -39247412, -15068893, -783832, -31767726, -28797756, 40441412, - -15088220, -12625056, -3719442, -9040906, 34400540, -38102804, -17787608, 8046621, -10136123, -42950, - -8630737, 19834158, -36105644, 12867722, -57735096, 5877663, -16499117, -23059680, 60662120, 6302865, - -22400402, 11566347, 12689481, -48960480, 33986076, -8284992, -10526965, -3706557, 19441170, -8096014, - 880468, -23444078, 12773233, 15891379, 27309550, -23570780, -60438780, 42215232, -4818954, 17433272, - 20684562, -12517682, 11942157, 31215822, -39844412, 2145336, -14027363, -4333622, -41360536, 14124000, - -6418829, 1670742, -1020055, 5486821, -6949257, -6249178, 11405286, -10471130, 8265665, 2433099, - -7756711, 4683662, 1286343, -91293824, -50906100, 11433203, -32469952, 3936338, -23474144, -12146168, - -34415572, -23673860, 17315160, 51292648, 53873924, 8579197, 38008312, -26252988, 66413080, 48773648, - -38871600, -34948148, 10986526, 10971494, 56130928, 20383914, 35933844, -12955769, 14390288, -7290707, - -6045167, -11894912, 52478056, 23504208, 50264004, 45674828, 8755291, -2692945, -22254374, 22050362, - -2656437, -45977624, -30683246, -8740258, -23789824, -5304285, -24449102, -21431886, 14484777, -6489696, - -15485505, 38394860, 45221712, -26031796, -8729521, 61725124, 25144886, -42142220, -41472204, -14929306, - 15567109, -1956358, -7748121, -29983166, 25297358, 7825431, -9803263, 7052337, 6925635, -37175088, - -16421807, 3560528, -14070313, -18036716, -19557134, 50502372, -39593156, -35407712, 14510547, 25933012, - 36855116, -18674518, -6032282, 3607773, -17038136, 17686676, -2695092, 13297219, -11138998, -4511863, - 3380139, 5211943, -6416681, -5497558, -539018, -6730214, -34724812, -51017768, -43802224, -380105, - -34462816, -44362716, 11463268, -3824669, -61757336, 44122200, 7939247, -3777424, 22073984, 68012952, - 65107408, 28011776, -79499848, 29545080, 21234318, -78024520, -966368, -37679748, -18156974, 40155796, - -47042776, 27376122, 135291, -8136816, -16716013, 8083129, -3768834, 13496935, -8920647, -41790032, - 40733468, 19179176, 48756468, -5076652, -16194174, -23510650, 19859928, -21189222, 57569740, 12068858, - 34662532, -44719200, 35815732, 1374390, 12816182, -29029684, 9962177, -34475704, -5218386, -35362612, - 14682346, 24451248, -46724948, 1902671, -38454988, 18116172, 23098334, 22262962, -2800319, -66363688, - 388695, 17534204, -5454609, 29512868, -63226212, 16297253, -26143466, 8540542, -22104050, 4638565, - 16700980, -7125351, 53687, -6880538, -7958575, 2568391, -16814796, 21554294, 5156108, -508954, - -26972394, -2484639, 3184718, -1909113, 11766063, -11725261, 2944200, -1191853, -5690832, 95575904, - 115749368, 48541720, 40306120, -66685808, 64156072, 93355408, -102114992, 12309376, 66108136, 11622182, - -121777352, -12045236, -66138200, 21436182, 24144158, -30655330, -12105365, 22308060, -55941948, -4346507, - -21951578, -27339614, 10853382, -42264624, 45610404, 32669668, 59002112, -29124174, 9607842, -6249178, - -24122684, 74683040, -1509681, -34183644, -16254304, 16241419, -16101832, -19391778, -22952306, 38062000, - 14046691, 52862456, -3779571, 19469086, 69164008, -43770012, 9143985, -29676076, 54874648, -21434034, - 25649544, 11035918, -2229088, -20669530, -39157216, -26310970, 10988674, 49770080, -46733540, 42015516, - 49484464, 25033216, 57840324, -28138478, -23053236, 37847252, -6564858, -6867653, -53422952, -3231963, - -44081396, 9199820, 55778740, 27526446, 14027363, 25733296, 15197742, -23830626, -10838350, -41725608, - 47341276, 2136746, -18848464, 12668006, 4243428, -21859236, 11493332, -3000035, 13565654, -2119566, - 20596516, 10018011, -44154412, -151910848, -63211180, -109354160, -58510340, -46986944, 25456272, -70362304, - -71182640, -34628172, -95236608, -31501438, 72271416, -2652142, 3096672, -19935090, -16685948, -9504763, - 6762426, -1649268, -63748052, -10653666, -12438225, 92204360, -11839077, 81915760, 6856916, -22701050, - 21601538, 67330056, -3371549, 154619, -27180700, -8540542, -28544352, 15564961, -11993696, -24970940, - 12436078, -33539400, 26890790, 26605174, 5373004, 58826020, -26817776, 29676076, -25071872, 32804960, - 22694608, 61978524, 8641474, -26167088, 33730524, -4952098, -20920786, 78855600, -5881958, -5480379, - 45853072, 13434658, 61710092, -48741436, -46849504, -7859790, -20287278, -7191923, -75831944, -17987324, - 26332444, -11042361, -32637456, -54123032, 3620658, 15539192, -26686780, -26345330, -46409268, -17332340, - 19709604, 19522774, 41089952, -7419556, -3794604, -2302103, 13700946, 15556372, 2772402, 25159918, - 7146826, 1917703, -3517578, -3377992, 18616536, -8875550, 18393198, 19823422, -925565, }, + 5398774, -3060164, 1363652, -1702955, 433792, -1239098, -309238, 92342, 2585570, -1634235, + 1140314, -2660732, 2018635, -2989297, -4069482, -3554086, 854699, -343597, 588411, 113817, + -1788854, 1082332, 1831804, -974958, 1453846, -184684, -586263, -1198296, -195421, 395137, + 983548, -657130, 1434519, -532576, 906238, 1309965, -899796, -846109, 77309, -867583, + 259846, 53687, -377957, 878321, 152471, -354335, 3665755, -3788161, -702227, -794569, + -882616, -268435, -62277, -717260, -523986, 10737, 154619, -523986, 304943, -1172526, + -350040, -186831, 710817, -4028679, -382252, 837519, -386547, -485331, 350040, 81604, + 283468, 1861868, -897648, -590558, -994285, -180389, 545461, 839666, -852551, -633508, + 989990, -904091, -1352915, -143881, -369367, 476741, -401579, -380105, 223338, 420907, + -833224, 279173, 315680, -12934294, -8804683, -3560528, -4093104, -2267743, -2145336, -2010045, + -925565, -2426657, -1932735, -826781, -1507534, -184684, -549756, -1292785, -1778117, -1967095, + -788127, -1133871, -2003602, -246961, -2503966, 23622, -197569, -330712, -1518271, -244813, + -1151051, 23622, -1481764, -925565, 502511, -1069447, 184684, -2503966, -470299, 1245541, + 749472, -30065, -371515, -708670, 199716, 246961, 1163936, -682900, -120259, -343597, + -17012366, -938450, 2201171, -47245, 663572, -128849, 27917, -1374390, 1462436, 560493, + 1758789, 1234803, 3594888, 2622078, 212601, -1428077, -805306, -345745, 680752, -491774, + -3154654, -2854006, -1462436, -450972, 148176, 390842, 594853, -124554, 109522, 337155, + -654983, -100932, -81604, -1960653, 1157494, 461709, -206158, -32212, -736587, -1093069, + 682900, 246961, -697932, 665720, 584116, 813896, -358630, 19078244, 13406740, 2628520, + 5192616, 1069447, 1720134, 4226248, 2181844, 667867, 2549063, 1030792, -1116692, -560493, + 886911, 1468879, -2585570, -352187, -1550483, 3440269, 1713692, 876173, 1713692, 869731, + 886911, 38655, -167504, -850404, 1348620, 1627793, 1391569, 1733019, 2100239, 1251983, + 3068754, 689342, -173946, 1088774, 201863, -539018, -242666, -481036, -607738, 10737, + 1423782, 337155, 234076, 824634, 28469190, 12107513, 3657165, 3332895, 2327872, 1443109, + 457414, 111669, 3120294, 633508, 1728724, 2355790, 1241246, -163209, -869731, 4977867, + -453119, -2718714, -1561221, 1239098, 66572, 2662880, 869731, 330712, -493921, -1234803, + -354335, -564788, 1163936, -197569, 481036, 122407, 178241, -633508, 942745, 3459596, + 2181844, 2299955, 2063732, 1713692, 929860, 672162, 388695, 1136019, -959925, 697932, + -455267, 9350144, -9854802, -3015067, -4239133, -3719442, -1984275, -620623, 1402307, -1400159, + 173946, -3682935, 1275605, -1357210, -3289945, 852551, -2345052, -3186866, -2237678, 3002182, + 2304250, -1088774, 1183264, -2117419, 837519, -3835406, 221191, 607738, -627065, -914828, + 818191, -3038689, -1350767, 369367, -1035087, -910533, -667867, 227633, 339302, 1505386, + 107374, 2609193, -998580, -738734, -809601, -1316408, -386547, -667867, 386547, -1136019, + -1711545, -33797096, -17166984, -6131066, -4840428, -5231270, -3313567, -4520453, -2976412, -4924180, + -919123, -2218351, -594853, 236223, -2074469, -554051, 300648, 34360, -3141769, -2061584, + -1434519, 300648, -4228396, 425202, -1930588, -3732327, 300648, -45097, 238371, -90194, + -1340030, -1007170, 23622, -281320, -66572, -1393717, 25770, 380105, 1110249, 431644, + -1473174, 833224, -1471026, 985695, -2516851, -1702955, 358630, -1380832, 51540, -521839, + -2025077, -19986630, 10479720, 4413079, 1623498, 2716567, 491774, 734439, 2368675, 2669322, + 1428077, 1780264, -1359357, -562641, -2113124, 2561948, 521839, 468151, 3474629, 120259, + -2349347, 4151086, -2761664, 341450, 3412352, -1028645, 886911, 448824, -90194, -1713692, + -420907, 953483, 977105, 171799, -622770, 73014, -1221918, 3917010, 322123, -55835, + -1550483, -768799, -1007170, -925565, 2104534, 2031520, -536871, 206158, -146029, 616328, + 135291, -128849, -429497, 485331, 304943, -588411, -564788, 30094836, 12783970, 3416647, + 6902013, 4007205, 1715839, 3004330, 2587718, 2147, 1887638, 2982855, 689342, 2147, + 1526861, 4202626, -1423782, -777389, -3326452, 841814, 3835406, 1617055, 178241, -2171106, + -1163936, -936303, 4039417, 1247688, 2113124, 1174674, -1917703, -3094524, 3502546, 1913408, + -2151779, -1037235, 3403762, 2856153, -143881, 702227, -356482, 1486059, 955630, -343597, + 693637, -1213328, -562641, 1821066, -966368, -762357, 1958505, 1660005, 929860, 319975, + 408022, 397284, 1398012, 35592392, 7743826, 5922760, 2637110, 2710124, 1172526, 2789581, + 3332895, 5261335, 3262028, -1011465, 4179003, -816044, 1142461, 910533, 3541201, 5175436, + 3367254, -914828, 5826123, -1118839, -571231, -3070902, 852551, -927713, 979253, 1544041, + -1726577, -2454574, -981400, 457414, -1926293, -663572, 923418, 1269163, -2263448, -1977833, + -785979, 730144, 17180, 584116, -801011, -40802, -530428, -798864, 964220, -1346472, + 1294933, -1443109, -461709, -1105954, 266288, -416612, 1453846, 609885, -77309, 4093104, + -15760382, -5095979, -5611375, -3663607, 1007170, -927713, -3354370, 1909113, 176094, 2353642, + -231928, 223338, -3657165, -2630668, -1681480, -2705830, 266288, -2877628, -5469641, 1067299, + 682900, -2579128, -519691, -2342905, 528281, 758062, -410169, -5703717, -1569811, 337155, + -592706, 463856, 1569811, -4065187, -1172526, -2549063, 1352915, -335007, -173946, 2626373, + -2641405, -201863, 869731, -360777, -841814, 1260573, 719407, -1625645, -1928440, -3156801, + -435939, -2415919, -1900523, -1041530, -1301375, -818191, -328565, -753767, -1168231, -1640678, + -884763, 566936, -36975372, -12594992, -7537668, -1956358, -3884798, -178241, -2085207, -2780991, + -3356517, 4181151, 135291, -1640678, -360777, -6176163, -3459596, -3025805, 5059472, -4249870, + -8890582, 719407, 1136019, 680752, -3242700, -889058, 1924145, -4123169, -382252, -4204773, + -1206886, 2325725, -1969243, 558346, 4606353, 485331, -897648, -1118839, 1286343, 1404454, + 1191853, -1370095, -204011, 1460289, 2059437, 1202591, 730144, -3854733, 779537, -193274, + -1896228, -734439, 431644, -526134, -1917703, -1309965, -1990717, -592706, 161061, 283468, + -253403, -1432372, -201863, -1114544, -34360, -24556476, 5686537, 373662, -3000035, 4410932, + -2785286, -2143189, 1108102, -4140349, -2480344, -874026, 1722282, -3264175, 4471061, 105227, + -122407, 2100239, 2083059, 3287798, -352187, 4524748, 6485401, 4696547, 1479616, 4020090, + -1303523, 2557653, -2961380, -3008625, -1264868, 384400, 1962800, -1576253, -2843268, -1522566, + -73014, 1767379, -2748779, 1995012, 676457, 1541893, -704375, -2491081, -3380139, -4000762, + 1045825, -2040110, 1088774, -4243428, -1239098, 1928440, -2692945, 457414, -1894081, 1301375, + -614180, 1264868, 287763, -743029, -75162, -1698660, 3193308, 1363652, 16428250, 27124866, + 7870528, 7054484, 9792525, 7939247, 1567663, 6300717, 5607080, 3058017, 11871290, 2836826, + 2025077, 5147519, 4765266, 2514703, 2121714, 1262720, 1992865, -1516124, 6008659, -1589138, + 599148, -1868311, 3813931, 206158, -957778, 3154654, 3760244, 1335735, 4984310, -3496104, + -5789616, -1294933, -315680, 1277753, -377957, 2523293, -2302103, 2297808, 5022965, 2168959, + -4425964, -904091, 2293513, 904091, -2156074, 3163244, 1260573, 1879048, 2091649, 2826089, + 944893, -768799, 710817, -2525441, -648540, 2385854, 2190433, -1211181, -15032, 597000, + -1054415, 62281320, 6448894, -627065, 3895535, -118112, 5364414, 60130, 1473174, 672162, + 5652177, 2619930, -2267743, 1881196, 2733747, 1440962, -3345780, -7045894, -3186866, -2961380, + 1292785, -4327180, -715112, -277025, 1206886, 7745974, 4350802, 1458141, 3152506, -4825396, + -246961, -2529736, -919123, -1992865, 2957085, -1114544, 4919885, -2239826, -828929, -2499671, + -1063004, -3609920, -1627793, 828929, 839666, -188979, 96637, -1979980, 1178969, 3356517, + 328565, -1806034, 2164664, -2965675, 1357210, 1305670, -231928, -921271, -569083, -128849, + -496069, 150324, 2074469, -221191, -18129056, -21573620, -4009352, -1202591, -882616, -3429532, + -1417339, 6545530, 3876208, 1380832, 1786706, -2856153, -571231, 4915590, -1808181, 7999377, + -6208375, -1694365, 6524056, -1256278, -727997, -3790309, 4473209, 4943508, 96637, 4872641, + -1769527, 2162516, -96637, -2723009, -425202, -2153926, -895501, -1395864, 2695092, -1977833, + -466004, -3045132, 2068027, -1580548, 4509716, -7106024, 2993592, 2482491, -4290673, 94489, + -2832531, 768799, -3223373, 1030792, 1355062, -4097399, -612033, -1488206, -6098854, -3532611, + -1685775, -3030100, -652835, -504659, 341450, -2476049, 360777, -4793184, 1352915, 597000, + -1644973, 609885, -1642825, -435939, -1065152, -491774, -15934329, -9137543, -12360916, -6345814, + -8257075, -934155, 7969312, -8325794, 6405944, 4086662, -4537633, 9083856, -1436667, 1767379, + -5931350, -639950, -2637110, -380105, 38655, 2237678, 1095217, 4739497, 9092446, -2463164, + 1254131, -4350802, -4541928, -4037269, 919123, 3777424, -1331440, -1324997, -1206886, -2813204, + 3152506, -994285, -210453, -2755222, -2164664, -1836099, -2836826, -244813, -124554, -2405182, + 1571958, -3678640, 1357210, -2138894, -382252, 1324997, -2712272, 3345780, -5830418, -1821066, + 549756, -1735167, -3111704, 1518271, -858993, -3508988, 5746666, 3242700, 794569, 1088774, + 1153199, 1402307, -2905546, -1913408, 738734, -1041530, -2014340, 2162516, -44373456, -5072357, + 3592740, -3244848, 7372312, 3408057, -8974334, 1224066, 1520418, -2886218, -7514046, -2776696, + -1823214, 2158221, 549756, -6947110, -2617783, -3700114, -6687264, -5630702, -13118978, -6820408, + -7657927, -9292162, 7402376, -4932770, 2714419, 5557688, -3998615, -6294275, -2420214, -1342177, + 1522566, 4179003, 2430952, -5209796, -6478958, 5136781, 3214783, 4067334, 5710159, 846109, + -10737, 2259153, -257698, -2497524, 1458141, -1337882, -852551, 3369402, 8544837, -2806761, + -4252018, 2010045, -2703682, -234076, 4410932, -8411693, -100932, -2757369, -444529, -152471, + 68719, -977105, 1702955, -2484639, 3077344, 3352222, 1421634, -169651, -4295, -2817499, + 35553740, 31005368, 8398809, 18852758, 5216238, 10857677, -1760937, -1722282, 5276368, 7133941, + 3788161, -12311524, -4082367, 7675107, 8669391, -3197603, -4179003, 1406602, 3609920, 4099546, + 609885, -6405944, -13758928, -5171141, 7509751, -667867, 7718056, -1829656, -2456721, 1559073, + -6397354, -3708704, -3721589, 7067369, -8813273, -6081674, 1582696, 1473174, -2269890, -283468, + -2527588, 2643552, 3603478, 3090229, 6981470, 4063039, 118112, -5718749, 5377299, -513249, + 2978560, -2798171, 2078764, 4249870, -648540, -1144609, -2662880, -3161096, 1934883, 427349, + 2735894, -2735894, 2284923, 5519033, -1161789, -3034395, 3848291, 4999342, -2033667, 2226941, + 2506114, 1999307, 4778151, 4075924, 43115028, 8046621, -8452496, 7013682, 4524748, -8162586, + -1864016, 4181151, 210453, 1346472, -710817, -1700807, -9075266, -8817568, 3865471, 8347269, + 8551280, -8489003, -17278654, 2415919, -337155, -6899865, -8877697, -1552631, 4320737, -3036542, + 6448894, 10488310, -4015795, -3425237, -1496796, -1554778, -2130304, -16041703, 8291435, 7636452, + -384400, 4922033, -4954245, -1548336, -4516158, 6466074, 6822556, 766652, -1821066, -2527588, + 3760244, 923418, -2351495, -4071629, -83752, 3414499, -5297842, -3234110, -2929168, 874026, + 1563368, -6554120, 3238405, 7221988, -5997922, -83752, -1520418, -1022202, -146029, 715112, + 304943, -425202, 1194001, -1958505, -3964255, -4563403, -2106682, -1120987, -2426657, -4576288, + -3444564, -1101659, 3193308, -1541893, -11821897, -7793218, 1112397, 10692321, -10767483, 7645042, + 3489661, 1662152, 2173254, 1833951, 6968585, 11291469, 294205, 3390877, 1239098, -9738838, + -8845485, 8607114, 1155346, -10063108, 5912023, -8594230, 1398012, 10526965, -689342, -2899103, + 12023761, 1857573, 805306, 970663, 341450, 1065152, -5312875, 3154654, 4836133, 7924215, + -6324340, -3146064, 1217623, 1084479, -2909840, -5716602, 3624953, -2098092, 2534031, 1331440, + -1999307, -1861868, 798864, 3594888, -2757369, -1228361, -629213, 2057289, -5787469, -2712272, + 2665027, 558346, -1962800, -1022202, 2409477, -2452426, 747324, -1664300, -416612, 1941325, + 558346, 1129576, -4995047, -3562675, 1322850, -46364172, -42567420, -9519795, -19722490, -17319456, + -9809705, -2978560, -7365869, -8871255, 6027987, 1608465, -2059437, 10112500, 3712999, 12150462, + 9414568, 2703682, 3770981, 4428112, -18631568, 8778913, -1438814, -3951370, -3489661, -11029476, + -3412352, -3833258, 10589242, -3547643, -6324340, -3158949, 1685775, -1389422, -2113124, 2325725, + -2800319, -1825361, 6478958, -6360847, -554051, -2063732, 11654394, 4617090, 4660040, -8974334, + 691490, 7971460, -4191888, 1896228, 38655, 1930588, 51540, 661425, -612033, 5078799, + -663572, -1666447, 3704409, -2639258, 2076617, 4425964, -2074469, -3088082, 1372242, 1687922, + -3330747, -1370095, -6146098, -4872641, 1612760, -562641, -1082332, -115964, 809601, -397284, + -3899830, -1838246, -29038274, 61319248, 38461432, 12375948, 3734474, 4234838, 4316442, 6902013, + 6012954, 13000866, 25909390, 1501091, 2922725, 5671505, 5284958, 6700149, -4872641, 25209310, + 17914308, -16688095, 12317966, 2312840, -2720862, 6075231, 15184857, -14248554, -4093104, 1185411, + -11879880, -8057359, -8495445, 17323750, -785979, -3058017, 2282775, 972810, -5188321, -13879187, + 9620727, 7885560, -2372970, 4307852, 9865540, -6560563, 5368709, 569083, -2585570, 7812546, + 6646462, 1563368, 891206, 805306, 5353677, 7580618, 55835, -1363652, -81604, -2394444, + 5306432, 1116692, -2160369, -2649995, -1943473, 4039417, 1864016, 9176198, -2774549, 3281355, + -2042257, 2289218, -3745212, -1329292, 1127429, -2035815, -2619930, 231928, 444529, 1176821, + 2482491, 66413080, -23407572, -22993108, 10413148, 2559801, -8701604, -7662222, -12169790, -12062416, + -8821863, -7475391, 10997264, 2564096, 1329292, -6236293, -5443871, -19441170, -19327, -7683697, + -13361643, 11134703, 7406671, 2297808, 6884833, 1934883, -2342905, -4305705, -362925, -3637837, + 5634997, 9543417, -10129680, -3728032, 148176, 5214091, 13228499, 3983582, 17742510, -9096741, + 5600638, 14796162, 8718784, -7361574, -2192581, 1741609, -3749507, 6412386, -992137, 386547, + 9448928, 5214091, 1516124, 942745, -229781, -3910568, -109522, 1200443, -4239133, -2332167, + 4194036, -1561221, -8040179, -1093069, 244813, -1312113, -8373039, 2269890, 1728724, 2190433, + 2345052, -1651415, -3472481, -1086627, -1750199, 6912750, 2918430, -2553358, 1902671, -521839, + 1443109, 210453, 21324512, 40516572, 15921444, 10861972, 12704513, -3682935, 4097399, -11547020, + 20158430, 7952132, 19366008, 5806796, 7395934, -17637284, 22078280, 32708324, 4179003, 21214990, + -4221953, -17173426, -16995186, 15571404, -4973572, 12438225, 2334315, 4999342, -9494025, 9633612, + -3302830, -3408057, 15908559, 11053098, -8276402, 14854144, 1717987, 2733747, -2933463, -11160473, + 3167539, 856846, -6167573, -7022272, 6618545, 9238475, 3085934, -3225521, 4413079, 375810, + 9874130, -5894843, -796716, -9734543, 1206886, 9564892, 6489696, -4413079, 34360, 3369402, + -8596377, -637803, -5847598, -3283503, 1874753, 2295660, 5892695, -6831146, 3032247, -7859790, + 758062, 9760313, 3498251, 1928440, -6107444, 919123, 807454, -10176925, -2630668, 1185411, + 1806034, 4032974, 1711545, -219043, -47324096, -2581275, -10690174, 13432510, -10234907, 11048803, + 332860, 8856223, -1232656, 7638600, -23650238, 6949257, -2778844, -8534100, 4155381, -10393821, + 6371584, -10492605, -5538361, -23179938, 13185550, 27754078, -10896332, -3695819, -3176128, -4561256, + 4228396, 5493263, 8046621, -20620138, 6154688, -12852690, -3676492, -740882, 10567767, 3987877, + -5312875, 2188286, 2250563, 7511898, 7713762, -12899934, -4236985, 1808181, -9373766, -8409546, + -1584843, -6023692, 2542621, 7136088, 964220, 1191853, -1694365, 6650757, 18107582, 10161893, + -11113228, 2190433, 4112431, -5564130, 6386617, 1606318, -7112466, -730144, 8160438, 818191, + 7812546, -10554882, -2439542, 6251325, 313533, -3504693, -7292855, -605590, -3863323, 5982890, + -1698660, 3719442, -1788854, -822486, -86872160, -32600950, 17639430, 6358699, -11158325, 12345883, + 10176925, 16299401, -3938485, -7112466, 14239964, 631360, -9590662, 19393924, -21706764, -28245852, + -13344463, -15141907, 9910637, 14280766, -322123, 3715147, 22486302, 9940702, -22771916, -10249939, + -14005888, 4239133, -21144124, -18406082, -1112397, 2905546, -8083129, -8800388, -12882754, -6644315, + -11785390, -11506217, -4327180, 1050120, -4198331, -622770, -7941395, -1166084, -6079526, -13380971, + 29066192, 2422362, 6895570, -11781095, 7720204, -691490, 3964255, -9444633, -354335, -1471026, + -7876970, -4881231, -3571265, 9513353, 6927782, 7462506, 4632122, 5804649, -1301375, 165356, + -6811818, -1172526, -294205, -453119, 8961449, 2508261, 5272073, 5544803, -3992172, -9560597, + 4172561, -3620658, -1677185, 4024384, 11478300, -1166084, 45567456, 16728898, 36717676, 5774584, + 2501819, -14693083, 5677947, 21960168, 8306467, 1597728, 14798310, -13198435, -5849746, 12004434, + -9083856, 4187593, 21165598, 6801081, 2944200, 6743099, -3777424, 9195525, -6906308, 255551, + 3657165, 1247688, -5310727, -5785321, 2362232, 21751862, -6949257, 5403069, -19945828, -10690174, + 9255655, 22917946, -17506286, 165356, 11128260, 2802466, 4297115, -14532022, -4986457, -12556337, + -21906480, -5787469, -12135430, -12902082, 10546292, 4200478, 3715147, -7533373, -4522601, -1479616, + -21036750, -1960653, 11963631, -8358007, 9622874, 19552838, 3081639, 12955769, 8643622, 751619, + -3788161, 11244224, -14072460, -648540, -734439, 8948564, 4438849, 8246337, 435939, 9143985, + -450972, 1909113, 1513976, 9732396, 188979, 118112, 8828305, -4679367, 5546951, 1939178, + 1589138, -2798171, 55334212, -12141873, -17001628, 2725157, 12721693, 10357314, 10587094, -3079492, + 11420318, 3592740, -13587129, -27174258, 18193482, 4898410, 13159780, 7872675, -7243463, 3210488, + -10417443, -17768280, 18457622, -11544872, -22125524, 2368675, -3635690, 2750927, -2209761, -2214056, + -5626407, -8742406, 6506876, 14940044, -21569326, 21109764, -18251464, -23776938, 2302103, 6414534, + -13449690, 10617159, -1915555, 6749541, -11583527, -5697274, 19666656, 8098161, 19913616, 5349382, + 1498944, 6401649, -70867, 811749, 10426033, -839666, 1829656, -9242770, -6362994, -5441724, + 7337952, -7168301, -6197638, 11944304, -362925, 13368086, 2014340, -9627169, 15893526, 12455405, + -1030792, 8147553, -8166881, -13320841, 5138929, -4833986, -9663676, 904091, 8482560, 11626476, + -4374424, 3678640, 5581310, -695785, 2381559, -11504070, 4425964, 4082367, -5798206, 46366320, + 56493852, -8665097, 345745, -28428388, -3214783, -20746840, -15513422, -4958540, -10608569, 15992311, + 8590, 12403866, -26530012, 22043920, -16707423, 22512072, 801011, 17873506, -6459631, 22529250, + 7410966, -10735271, 4754529, -16020228, 10625749, -8931384, 25372520, 7554848, 16677358, -27758374, + -15893526, -6818261, -14061723, -5896990, -9622874, 893353, 34297460, -15861314, 17246442, 29059748, + 4121021, 12773233, 171799, -6526203, -13569949, -10359461, 1445257, -7479686, 17549236, -11381663, + 8046621, 21221434, -2793876, -1763084, -1700807, 17353816, 18769008, 5869073, -8714489, -7649337, + -4602058, 7327214, -17194902, 3219078, -3083787, -4743792, 242666, 11340861, 1013612, 16063178, + 14718853, 2905546, 3532611, -7002944, -350040, 16514149, -2132451, 968515, 6932077, -8834748, + 169651, -10110353, -10995116, 1584843, 1586990, -2214056, -44027708, -39451424, 17572858, -5233418, + 21738976, -12369506, -10211285, -14763950, -12116103, -5602785, -34744136, -12738873, 13380971, 18683108, + 7715909, -24208584, -6871948, -11617887, 10275709, 35031900, 19621558, 8568460, 1382980, 2665027, + 1831804, 6165426, 18129056, 1483911, 4778151, -10295037, 867583, -14761803, 5804649, 7241315, + 13123273, 1722282, -8924942, -4468914, 17295834, -8003672, 6551973, 3566970, 6298570, 22091164, + -12236362, -18610094, 7048042, 15760382, 4198331, 15751793, 18895708, 9141838, 13114683, 5085242, + 2856153, 10404558, 31469226, -17452600, 23622, 5207648, 2832531, -13526999, -2362232, 10499048, + -137439, -12131135, 4881231, 22851374, -18522046, 6088116, -17540646, 10204842, 6938520, 2845416, + 715112, -8257075, -8229158, 16084653, 8699456, 3309272, -4870493, 11280732, -1580548, 70867, + -7786776, 8321499, 3109556, -88624504, -30934502, -1988570, -8843338, -21854942, 13350906, 17828410, + 30077656, 9884867, 18910742, -17559974, -37054832, 17257178, -8757438, 927713, -19952270, 19628000, + -11787538, -932008, 18240726, -50549616, 4870493, 26289494, -49063560, -12970801, -17390322, 2372970, + 1816771, 12000139, -13653701, 15906411, 2254858, -25722560, -13269301, 3038689, -3315715, -12745315, + 11196980, 29903710, 6371584, 8269960, -4818954, -7449621, 17426830, 3180423, -8787503, -42964704, + -6869800, 5413807, -21809844, 10337986, 8770323, 1735167, -16864190, -15062450, -17978734, 38558068, + 10198400, -5886253, 7430294, -32789928, 3811784, -15354508, -17673790, 17061758, -2957085, 212601, + -11162620, -41023380, 5486821, 12457553, 7159711, -3000035, 24212878, 803159, -10222022, -1629940, + -15981573, 25132002, 13640816, 7028714, -4209068, 1707250, 8044474, -7483981, 3115999, 3463891, + 1144609, 94038312, 23684598, 24270860, 20620138, -6004365, 811749, 96705480, 27930172, -8001524, + 59075128, -33137820, 24646670, 5179731, 15064598, 24144158, -7464653, -16855600, 18204218, -3311420, + -58407260, 14933601, 15146202, 12363063, 27805618, 17613660, 18161270, -16454020, 3627100, -15889232, + -8289287, 17310866, 5746666, -34095596, -20358144, -28576564, -42543800, -6515466, 8776766, 20781200, + 17940078, 15455440, 12962211, -6300717, 22254374, 12380243, -27081916, -10361609, 7224135, 20396800, + 489626, 4398047, 35912368, -6431714, -3040837, -9305047, -1872606, 18300856, -15629386, 270583, + -22106196, -19643032, -12586402, 23008140, 31621696, -9176198, 2555506, -6094559, -19630148, -13305809, + 5100274, -22739704, -6045167, -6077379, -14699526, 40282500, 8826158, 13475460, 11744588, -1168231, + 51540, 6959995, 2115272, 12668006, 7984344, 225486, -1282048, 95657512, 56566868, 4024384, + 35931696, 27376122, 7872675, 41424960, 11731703, -186831, -12839805, -9603547, -26989574, -73398840, + -5390184, 7078106, -24983824, -14323716, -2765959, 51150912, 16823386, -13346611, 586263, 3498251, + -7271380, 21532818, -3575560, -13365938, -9010841, -12603582, 8158291, -18491982, -44959716, 955630, + -23435490, -36494336, 7209103, 15644418, 22874996, 12771085, 20255066, -13831942, -38716984, -25374666, + -34819300, 13623636, 32772748, 26862872, 17486960, 32575180, 904091, 20330228, 44397076, -36758476, + 6680822, -16634408, 236223, 12668006, 13284334, 21479132, -1879048, -44914620, -34574488, 7383049, + -9728101, -12818330, -8486855, -9861245, -30633854, 2647847, 20869246, -2291365, 15915001, -9590662, + -753767, -1784559, 7990787, 30404074, 21545704, 18509162, -17538498, 968515, -10526965, 1202591, + -28144920, 5626407, 4715874, 3027952, -526134, -3485366, -8074539, 7011534, 360777, 12691628, + 23295902, -47794396, 5918465, -36582384, 16361678, -69844760, -1891933, -23173496, -36024040, 64488932, + 36483600, -23008140, -57917632, -14660871, -21124796, -50626928, 39397736, 2100239, -34980360, -13015898, + 20244328, -33133526, -22529250, -17409650, -39247412, -15068893, -783832, -31767726, -28797756, 40441412, + -15088220, -12625056, -3719442, -9040906, 34400540, -38102804, -17787608, 8046621, -10136123, -42950, + -8630737, 19834158, -36105644, 12867722, -57735096, 5877663, -16499117, -23059680, 60662120, 6302865, + -22400402, 11566347, 12689481, -48960480, 33986076, -8284992, -10526965, -3706557, 19441170, -8096014, + 880468, -23444078, 12773233, 15891379, 27309550, -23570780, -60438780, 42215232, -4818954, 17433272, + 20684562, -12517682, 11942157, 31215822, -39844412, 2145336, -14027363, -4333622, -41360536, 14124000, + -6418829, 1670742, -1020055, 5486821, -6949257, -6249178, 11405286, -10471130, 8265665, 2433099, + -7756711, 4683662, 1286343, -91293824, -50906100, 11433203, -32469952, 3936338, -23474144, -12146168, + -34415572, -23673860, 17315160, 51292648, 53873924, 8579197, 38008312, -26252988, 66413080, 48773648, + -38871600, -34948148, 10986526, 10971494, 56130928, 20383914, 35933844, -12955769, 14390288, -7290707, + -6045167, -11894912, 52478056, 23504208, 50264004, 45674828, 8755291, -2692945, -22254374, 22050362, + -2656437, -45977624, -30683246, -8740258, -23789824, -5304285, -24449102, -21431886, 14484777, -6489696, + -15485505, 38394860, 45221712, -26031796, -8729521, 61725124, 25144886, -42142220, -41472204, -14929306, + 15567109, -1956358, -7748121, -29983166, 25297358, 7825431, -9803263, 7052337, 6925635, -37175088, + -16421807, 3560528, -14070313, -18036716, -19557134, 50502372, -39593156, -35407712, 14510547, 25933012, + 36855116, -18674518, -6032282, 3607773, -17038136, 17686676, -2695092, 13297219, -11138998, -4511863, + 3380139, 5211943, -6416681, -5497558, -539018, -6730214, -34724812, -51017768, -43802224, -380105, + -34462816, -44362716, 11463268, -3824669, -61757336, 44122200, 7939247, -3777424, 22073984, 68012952, + 65107408, 28011776, -79499848, 29545080, 21234318, -78024520, -966368, -37679748, -18156974, 40155796, + -47042776, 27376122, 135291, -8136816, -16716013, 8083129, -3768834, 13496935, -8920647, -41790032, + 40733468, 19179176, 48756468, -5076652, -16194174, -23510650, 19859928, -21189222, 57569740, 12068858, + 34662532, -44719200, 35815732, 1374390, 12816182, -29029684, 9962177, -34475704, -5218386, -35362612, + 14682346, 24451248, -46724948, 1902671, -38454988, 18116172, 23098334, 22262962, -2800319, -66363688, + 388695, 17534204, -5454609, 29512868, -63226212, 16297253, -26143466, 8540542, -22104050, 4638565, + 16700980, -7125351, 53687, -6880538, -7958575, 2568391, -16814796, 21554294, 5156108, -508954, + -26972394, -2484639, 3184718, -1909113, 11766063, -11725261, 2944200, -1191853, -5690832, 95575904, + 115749368, 48541720, 40306120, -66685808, 64156072, 93355408, -102114992, 12309376, 66108136, 11622182, + -121777352, -12045236, -66138200, 21436182, 24144158, -30655330, -12105365, 22308060, -55941948, -4346507, + -21951578, -27339614, 10853382, -42264624, 45610404, 32669668, 59002112, -29124174, 9607842, -6249178, + -24122684, 74683040, -1509681, -34183644, -16254304, 16241419, -16101832, -19391778, -22952306, 38062000, + 14046691, 52862456, -3779571, 19469086, 69164008, -43770012, 9143985, -29676076, 54874648, -21434034, + 25649544, 11035918, -2229088, -20669530, -39157216, -26310970, 10988674, 49770080, -46733540, 42015516, + 49484464, 25033216, 57840324, -28138478, -23053236, 37847252, -6564858, -6867653, -53422952, -3231963, + -44081396, 9199820, 55778740, 27526446, 14027363, 25733296, 15197742, -23830626, -10838350, -41725608, + 47341276, 2136746, -18848464, 12668006, 4243428, -21859236, 11493332, -3000035, 13565654, -2119566, + 20596516, 10018011, -44154412, -151910848, -63211180, -109354160, -58510340, -46986944, 25456272, -70362304, + -71182640, -34628172, -95236608, -31501438, 72271416, -2652142, 3096672, -19935090, -16685948, -9504763, + 6762426, -1649268, -63748052, -10653666, -12438225, 92204360, -11839077, 81915760, 6856916, -22701050, + 21601538, 67330056, -3371549, 154619, -27180700, -8540542, -28544352, 15564961, -11993696, -24970940, + 12436078, -33539400, 26890790, 26605174, 5373004, 58826020, -26817776, 29676076, -25071872, 32804960, + 22694608, 61978524, 8641474, -26167088, 33730524, -4952098, -20920786, 78855600, -5881958, -5480379, + 45853072, 13434658, 61710092, -48741436, -46849504, -7859790, -20287278, -7191923, -75831944, -17987324, + 26332444, -11042361, -32637456, -54123032, 3620658, 15539192, -26686780, -26345330, -46409268, -17332340, + 19709604, 19522774, 41089952, -7419556, -3794604, -2302103, 13700946, 15556372, 2772402, 25159918, + 7146826, 1917703, -3517578, -3377992, 18616536, -8875550, 18393198, 19823422, -925565, }, { -11068131, - 5985037, -3105261, 3661460, -2151779, 3077344, -6393059, 304943, -238371, -708670, 1481764, - 3173981, -96637, -281320, -3433826, -1352915, 1486059, 861141, -386547, 1350767, -397284, - 478889, -1490354, -1000727, -1000727, -326418, 150324, -730144, -508954, 1717987, -974958, - 1037235, -942745, -146029, -723702, 916976, 339302, 743029, 1243393, 1544041, 577673, - 416612, -122407, 176094, 231928, -279173, 283468, 3914863, -4479651, -601295, -824634, - -1114544, 725850, -2224793, 755914, -51540, 1013612, 889058, -1765232, -627065, 2692945, - -283468, 575526, -500364, 1170379, 2469606, 2856153, 485331, 1230508, -42950, -2254858, - -68719, 244813, -489626, 8590, 1241246, -1294933, -1741609, 758062, -841814, -777389, - -1221918, -53687, 1282048, 322123, -380105, -466004, -513249, -8590, 283468, -687195, - 251256, -785979, 472446, -11248519, -7962870, -3914863, -2918430, -2267743, -2299955, -816044, - -1696512, -547608, -1063004, -2796024, 545461, 1404454, -223338, 794569, -528281, -1458141, - -1438814, -2194728, -738734, 506806, 66572, -1243393, 828929, -1498944, -1458141, 942745, - 0, 30065, 770947, 854699, 231928, -356482, -435939, -594853, 296353, 133144, - -768799, 390842, -1526861, -678605, -382252, -180389, -1090922, -240518, -405874, -45097, - -16003048, -2106682, 1196148, 277025, 1127429, 165356, -914828, 618475, -712965, -710817, - -1466731, -1168231, 545461, -410169, 983548, -942745, -17180, -910533, 266288, 1662152, - -457414, 1245541, 34360, -1069447, -255551, 1509681, 706522, 996432, 1052267, -1490354, - 1000727, -584116, -156766, -785979, -427349, 487479, 631360, 397284, -401579, 1226213, - 992137, 657130, -386547, -723702, 77309, -588411, 98784, 18839874, 14955076, 3573413, - 6680822, 1644973, 5162551, 3674345, 1095217, 3700114, 1449552, 2813204, 1185411, -979253, - 2772402, 2001455, -783832, -219043, -5211943, -523986, 246961, 3204046, 343597, 158914, - 1599875, 167504, 1447404, 1382980, 204011, -68719, 504659, 2201171, 1647120, 1436667, - -146029, -513249, 83752, 1045825, -382252, -62277, 1116692, 414464, -556198, 17180, - 240518, -1058710, 1378685, -758062, 33174328, 12034498, 5942088, 3393024, 2205466, 2057289, - 2113124, 3298535, 916976, 5433134, 846109, 420907, 2461016, -1374390, 665720, -659278, - -496069, -1002875, 3644280, 1872606, -186831, 2617783, -1750199, -556198, -545461, 4088809, - -279173, 1417339, 446677, 1964948, 472446, -687195, 1196148, 1322850, -521839, 420907, - 697932, 298500, 977105, -350040, 1103807, 807454, -2549063, 513249, 448824, 440234, - 1973538, 12805445, -9502615, -3182571, -4458176, -2596308, -2699387, 1846836, -1593433, -3816079, - -1103807, -5108864, -1344325, -2171106, -5119601, -1174674, 996432, -3068754, -1187559, 575526, - -3659312, -75162, 3923453, 992137, 442382, -1782411, -68719, 1496796, -118112, -1636383, - -1964948, 1943473, -319975, -2340757, 68719, -951335, 2793876, -10737, 1166084, -403727, - 2388002, -1608465, 852551, 412317, 425202, 100932, 478889, -4295, -998580, 1625645, - 1024350, -34965328, -19630148, -4129611, -4827543, -3481071, -4213363, -6169721, -476741, 51540, - -1702955, 1402307, -1578401, 137439, -105227, -2108829, -2132451, -3588445, -1155346, 3294240, - -3195456, -491774, 3141769, 1846836, -450972, 1007170, -418759, -3489661, -1642825, -2892661, - -912681, -6442, -674310, 1462436, -2933463, -2467459, -85899, -3002182, -2209761, -2166811, - -2351495, 2327872, -736587, -3163244, -972810, 678605, 923418, -1172526, -1563368, -848256, - -2896956, -21653078, 12543452, 4337917, 2278480, 1844689, 2141041, 678605, -2022930, 350040, - -1093069, -644245, 4097399, 2098092, 3569118, 3135326, 3755949, -3148211, 1748052, 3513283, - 880468, 3032247, -3582003, 496069, -695785, -493921, -1163936, 1153199, -216896, -169651, - 3691525, -3738769, -775242, 1116692, 2250563, -1138166, 1926293, -1610613, -2014340, 2525441, - -1073742, -332860, -468151, 820339, -49392, 1050120, -1060857, -732292, -929860, -549756, - -770947, 1833951, 504659, 448824, -949188, -1733019, 420907, 31952410, 12897787, 2896956, - 7123204, 5823976, 970663, 2684355, 6732361, 3279208, -294205, 1619203, 727997, -858993, - 1840394, 6053757, 1260573, 7196218, 3298535, -5643587, 968515, 365072, 1078037, 5360119, - 2813204, 2254858, -569083, -648540, -813896, -715112, 702227, -974958, 1627793, 689342, - 2257005, -311385, -704375, 1035087, 1829656, 1219771, -304943, -2375117, -1166084, -1241246, - 2186138, 1823214, 2482491, 1597728, 302795, 547608, 2115272, 1917703, 1367947, 414464, - 257698, 1279900, 1099512, 35661112, 10078141, 4559108, 5439576, 1032940, 5252745, -751619, - -2168959, 4295, 1262720, 691490, -279173, 1140314, 5364414, -685047, -3536906, -2276333, - 2544768, 798864, 2985002, 5022965, 4189741, -169651, 2759517, -2993592, 242666, -2297808, - 3199751, 2012192, -3816079, 2291365, -1861868, 384400, -1518271, 2321430, -1464584, 2879776, - 2115272, 1902671, 3481071, 1286343, -150324, -753767, -66572, 601295, 3871913, 12885, - 34360, 399432, 1844689, 1391569, 85899, -369367, -633508, -1964948, -414464, 5042292, - -15257871, -6010807, -2585570, -3326452, -1707250, -1170379, 96637, 2302103, -2345052, -3955665, - 3682935, -4780299, -4818954, -725850, -1224066, 2269890, -1466731, 32212, -4664335, -2568391, - -5600638, -5866926, -6816113, -792421, 1413044, -4531191, -1398012, 798864, 358630, 335007, - -745177, -4490389, -3019362, 2143189, 631360, -944893, 4232691, -2798171, -1462436, 1226213, - 2538326, 2325725, -526134, -530428, 908386, 781684, -2985002, 395137, -1814624, -620623, - 73014, -1015760, 10737, 2070174, 281320, -264141, 341450, -2005750, 1159641, 1891933, - -519691, 51540, -38695508, -12116103, -7350837, -2978560, -5302137, -4146791, -1284195, -2946348, - -1297080, -3949223, -5448166, -3813931, -1370095, -7945690, -1962800, -3206193, -4896263, -551903, - 783832, 2649995, -2886218, -3949223, -1526861, 3324305, 4157528, 5207648, 2718714, -98784, - -2600603, -1116692, -19327, -3103114, 1267015, 2177549, 2645700, -1791001, -1612760, -1421634, - -766652, -577673, -1144609, 2126009, -648540, 1391569, -2707977, -4584878, -1982127, -137439, - 2280628, -3964255, 1288490, -1881196, 1844689, -1915555, 1086627, -1595580, -124554, -1024350, - -148176, 717260, 1440962, -966368, -1376537, -22194244, 5916318, 1640678, 21475, 3884798, - -3732327, 989990, -8585640, -2800319, 2978560, 2104534, 5527623, -416612, 6027987, -3534758, - -899796, 2873333, -5265630, -1945620, -3105261, 5866926, -390842, -4898410, 2435247, 4670777, - -4194036, -3204046, -3779571, 1063004, -901943, 1999307, -1466731, -1219771, -1039382, -2308545, - 3289945, -2705830, 609885, 2145336, -309238, 2482491, -1498944, 5471789, 783832, -588411, - -1971390, -1949915, 36507, -2239826, -2738042, -1709397, 377957, 1842541, -315680, 478889, - -2400887, -2388002, -3399467, -1372242, -1127429, -919123, 891206, 1331440, 19166292, 27584428, - 9463960, 9609989, 13022341, 9496173, -1359357, 1956358, -1054415, 1848983, 1574106, 2499671, - 1745904, 4810364, 1780264, 3062312, 899796, 9408126, 2158221, 4683662, 2682207, 2527588, - 7310035, 1876901, 9165460, 4889821, -1868311, 6624987, 1694365, 3350075, 6470368, 1481764, - 3854733, -1797444, -670015, 1999307, 2911988, -3775276, 3384434, -2102387, -4294968, -2345052, - 3562675, 5527623, 4052302, -581968, 1314260, 1432372, 2003602, 3008625, 1619203, 3377992, - 1930588, -2830384, -83752, 2435247, 3077344, 1127429, 1000727, 751619, -3049427, -1032940, - -1885491, 66346508, 4833986, -3197603, 5164698, -3429532, 7331509, 2426657, 7707319, -3710852, - 592706, 208306, 4574140, -8175470, 1490354, 5544803, -1277753, -1054415, 6768869, 11042361, - -4660040, -2336462, 1189706, 5557688, -2523293, 3678640, 47245, -3307125, -3045132, -2596308, - 2177549, 3500398, 3685082, -2538326, 4082367, -2506114, 3964255, 3884798, -1052267, -2224793, - 1294933, -3702262, -5643587, 1462436, -3889093, 1791001, 292058, 846109, 2267743, 208306, - 2776696, 446677, -3850438, 1754494, -1065152, 2050847, -2830384, -285615, 354335, 2166811, - -1574106, -4496831, -876173, -1801739, -22552874, -21930104, -4952098, 1679332, -966368, -3330747, - -3569118, -4922033, -1307818, 3594888, -1187559, -1269163, -5053029, 5280663, -324270, -4408784, - -3786014, 9174050, -8358007, 822486, 6085969, -764504, 985695, -8091719, 2546916, -3498251, - 1902671, -5641440, -3682935, 869731, 1462436, -2665027, -2954938, 227633, -1226213, 347892, - -3451006, -1990717, 3558381, -444529, -1705102, -1069447, 4529043, 1958505, -2619930, -4015795, - -3539053, 1129576, -562641, -1726577, 362925, 695785, -1956358, 5351530, 2914135, -622770, - -440234, -1464584, 631360, -1636383, -1591285, -1685775, -335007, -3115999, -2443837, -4163971, - 936303, -4451734, -178241, -1166084, -1086627, -292058, -8907762, -7494718, -9167608, -6442451, - -4849018, -3081639, 618475, 6442, -2392297, -813896, 2070174, 7967165, -6959995, 3545496, - -2398739, -4226248, 5446019, -371515, 1000727, 7395934, 974958, 3173981, -4670777, -977105, - -13406740, -1410897, 2428804, 1758789, 1060857, 1462436, 1784559, -2838974, -4075924, 3161096, - -435939, 2993592, 1365800, -3397319, 2815351, -176094, -9521942, -7653632, -1385127, -7239168, - 878321, 2413772, -579821, -1773822, -921271, 444529, -2244121, -569083, -502511, -1168231, - 2209761, 719407, 682900, -1213328, -1028645, 3732327, 876173, -2248416, 2441689, -481036, - -1756642, -3730179, 30065, -1990717, -717260, 2789581, 2102387, 2961380, -43074228, -9820443, - 637803, -8568460, 3461744, 856846, 10335839, -4836133, 618475, -2841121, 6929930, -14128295, - -13550622, 5710159, -6564858, 10189810, 3691525, -8192650, -14351633, -328565, -4058744, -6966437, - -2851858, 1638530, 2327872, -3365107, 12292196, 657130, -1219771, -5141076, 4187593, 4655745, - 5018670, 5390184, -665720, -3191161, -1204738, 3186866, -246961, 3846143, -3614215, -1423782, - -1241246, 4456029, 3582003, -3904125, 5070209, -2823941, -3524021, 433792, -1597728, -3354370, - 3463891, -3970697, -521839, 1009317, -955630, -1617055, 914828, 3324305, -2055142, 3186866, - -2628520, 2138894, -1455994, -1647120, -1024350, 642098, 4123169, 745177, 3863323, -2450279, - 39507256, 34709780, 7264937, 9279277, -1840394, 11345156, 9101036, 11428908, -461709, 4597763, - 2765959, -10709501, -9066676, 4999342, 987843, -7662222, -8102456, -4514011, 534723, 4629975, - 1363652, 10872710, 9921374, 4372277, -2274185, -2372970, 6575595, 6176163, 502511, 5418101, - -1722282, 6919193, 403727, -1436667, 9579925, 5027259, 7859790, 5117454, 1743757, 5557688, - 2787434, 1969243, 5113159, -2729452, 1041530, 6831146, -49392, -4290673, 4039417, 4060892, - 2879776, -2991445, -53687, 4015795, 5961415, -2896956, 7204808, 8282845, -1400159, -4361540, - 788127, 1964948, 1301375, 3682935, 10737, 1372242, 2808909, -1911261, 229781, -2750927, - -691490, -3738769, -2160369, -382252, 47916804, 3914863, -1359357, 3393024, 2310693, -7846905, - 2055142, 2149631, 6442, 5119601, 7325067, 10971494, -4885526, -4937065, -7741679, -6247030, - 7073811, -534723, 10213432, -2433099, -2473901, 4234838, 8875550, 3551938, -8905615, 7080254, - -2596308, 5669357, -2935610, 4406637, -5360119, 3322157, -423054, 5168993, 633508, 2959233, - 1586990, -9008694, -4960687, -813896, -1816771, -818191, -2806761, 4389457, 1668595, 9345849, - -1430224, -6345814, -3704409, -609885, 569083, -7060926, 2403034, -2383707, -304943, -657130, - -4129611, 3803194, 7224135, -2239826, 3723737, 891206, -4037269, -354335, -3841848, -3180423, - 657130, -5615670, -4000762, 2388002, -277025, 1294933, 3886946, -5315022, 6470368, 663572, - -2622078, -6431714, 1879048, -2362232, 13840532, -3304977, -13211319, -8935679, -11909944, 11016591, - -8798241, 2441689, 13462575, -594853, -13653701, 936303, -14332306, 11946452, -4153234, 11907797, - 90194, -4533338, 10256382, 384400, 2145336, -7705172, -9715216, -1563368, 3444564, 2093797, - -1879048, -4490389, 4552666, -1387274, 3408057, 5207648, 6347962, 2927020, 3524021, -12826920, - 1097364, -2907693, -4357245, 1758789, 6386617, -5357972, -9822590, -4350802, 2916283, 1123134, - -8626442, -3528316, 4067334, 5905580, -5171141, -3386582, -3972845, 6040872, 8053064, 1621350, - -2667175, 908386, 5781026, -2755222, -193274, -3777424, 4065187, -4726612, -519691, 5607080, - 3390877, -1634235, -816044, -139586, -1771674, -48348448, -48984104, -7939247, -24011014, -14903537, - -8523363, -13327284, -1623498, 10050223, -21960168, 8018704, -4498978, 7314330, 1262720, 4481799, - -9111773, 2308545, -1144609, -4754529, -20145544, -4110284, -10477573, -12811887, -1340030, 3231963, - 676457, -4361540, 2785286, -4140349, -1228361, 10692321, -231928, -3566970, 661425, 6994354, - 9401683, 6298570, 0, 5029407, 5813238, -571231, 51540, -10464688, 3839701, -8647917, - 1614908, 8338679, -5746666, -10471130, 3021510, -5873368, -5619965, 1159641, -88047, -4960687, - 2407329, -1176821, 11280732, 6339372, 3451006, 1398012, 4136054, -408022, 1243393, -4443144, - -8003672, -1316408, 689342, -5708012, -3966402, -3131031, -2675765, -3229816, 1786706, -1653562, - -489626, -3582003, -28658170, 53322020, 41987600, 2540473, 8602819, 3315715, 9371619, 14106820, - 3322157, 13698798, 2557653, -14568529, 9723806, 11540577, 3519726, 3403762, 8759586, 11370926, - -11375221, 9474698, -5970005, 8315057, 1324997, -7007239, 1410897, 9414568, 5441724, -11315091, - 5512591, -4655745, 16415365, -1413044, 3874061, -2555506, -10509785, 10610717, 10625749, 5018670, - 2738042, -498216, 3846143, 11267847, 2660732, 8053064, 1045825, 5592048, 3090229, -762357, - 6139656, -7404524, -11467563, -5065914, -8740258, -7438884, -3783866, -7638600, 10288594, 7290707, - 910533, -1840394, -3644280, -1209033, -251256, 77309, 521839, 1428077, 2160369, 1185411, - -201863, -2710124, -2295660, -384400, -204011, -983548, 1168231, -1189706, 6204081, -1391569, - 8143258, 71541272, -28011776, -15176267, 2598455, -148176, -3539053, -19849192, -8478265, 5089536, - -957778, -2826089, -3878356, 3081639, -16323023, -4640712, 8497593, 15934329, 8686571, 7166153, - -5085242, -4803921, -9390946, 11003706, -15466177, -2673617, 3850438, -10170483, 3358665, 4417374, - 12479027, -19026706, -1589138, -307090, -3925600, 5093831, -17628694, -9178345, 19443316, 12818330, - 2680060, -3304977, 11620034, -3369402, -1488206, 2194728, 9090298, 5259188, -5596343, 1224066, - -3262028, 7468948, -11879880, -5327907, -7189776, -7546258, 14566382, 4022237, 1818919, -6397354, - -526134, -2149631, -2555506, -6708739, 1095217, -6358699, -261993, 2229088, 5617817, -9663676, - -6702297, -8538395, -2604898, 4647155, 824634, 6161131, -813896, -7934952, -833224, -3569118, - 3715147, -330712, 21251498, 48943300, 8035884, 18678812, 16870632, 16194174, 5407364, 12109660, - 7456063, -3500398, -9932112, -6296422, -2864743, 13870597, -11834782, -13097503, -893353, -581968, - -5357972, -10020159, 29673930, 27885076, 20980916, 1050120, -11963631, 2145336, 1997160, -5946382, - 6837588, 4400194, 11980811, 1421634, 4898410, -541166, -8229158, 13600014, 11257109, 8143258, - -1932735, -10722386, 672162, -790274, -2991445, -21934398, 15841987, -9972914, 18268644, 1080184, - 9884867, -2055142, 10898480, 16580721, 3313567, -7441031, -547608, 3077344, -5446019, 2952790, - -2110977, -6979322, -3837553, 2345052, -1700807, 6977175, 2461016, -11688753, 749472, -1567663, - -12620761, -2927020, 2576981, -4763119, 1391569, 10756746, 4406637, -581968, -3704409, -2802466, - 231928, 4715874, -1286343, 5095979, -51391432, -6824703, -32034014, 360777, 5637145, -10874857, - -18734648, -21668110, -20544976, -12163347, -16756815, -4108136, -1140314, -4329327, 5377299, -3341485, - 1086627, 13151190, 5901285, -1301375, 31110596, -6831146, 6227703, -4550518, 2607045, 4516158, - 1651415, -1748052, 4565550, 14570677, 4380867, 5158256, 1629940, 5828271, 12300786, 16958678, - 5325760, 20577188, -5512591, -17740362, 17916456, -5682242, -3775276, -3612068, 10127533, 15721728, - 11847667, -302795, -4086662, -8995809, -22939420, 14130442, 16050293, 11362336, -13700946, 8291435, - 2136746, -1378685, 12996571, 2196876, 8727374, -7260642, 4256313, -9051644, -874026, 7853348, - -2293513, 5907728, -1249836, -3304977, -3234110, -11025181, 1110249, 826781, -94489, 2121714, - -2448131, -13600014, 1030792, 712965, -89930176, -40374840, 18309446, -3515431, -3079492, 3189013, - -11265699, -9904195, -3386582, -4479651, -15751793, 11100343, 1211181, 23489176, -13146895, -11306501, - -19235012, -10782515, -19810536, 1589138, 7232725, -29590178, 19048180, 16378858, -2368675, 3242700, - 12401718, 1808181, 10909217, -22434762, -22570054, -12543452, -14813342, -11420318, 36507224, 11875585, - -8076686, -13151190, -18741090, 8832600, 4992900, -8918500, 7260642, 7164006, -13230647, 1191853, - 2911988, 10346576, -12292196, 30043296, -13219909, -10563472, 4657892, -3296388, -206158, -9118216, - -3461744, 878321, 19076098, -6000070, 27507118, 5811091, 1750199, 3010772, 7312182, -8336532, - -3021510, -10941429, -8836895, -8403104, -85899, 14772540, -9721658, -7181186, -4142496, -5624260, - -5220533, -712965, -3470334, -5201206, -4554813, 14134737, 45541684, 23310934, 14583561, 9790378, - -15925739, 1552631, -12869870, 20154134, -2121714, -2750927, 6947110, 4389457, 4769561, -665720, - 7196218, 2514703, 7593502, -6268505, 19829864, 2611340, -1728724, 59201828, 3298535, -4578435, - -15101105, 8770323, -14042396, 13174812, 31986768, -2553358, 7881265, 7818988, -16370268, -18429704, - 609885, 341450, 14083198, -9139690, 564788, -1017907, 10387378, 10595684, 17832704, 6637872, - 6219113, 7318625, 801011, 11680164, 5514738, -21633750, 4670777, -11175505, -27668180, -2441689, - 7844758, 100932, 2366527, -3725884, 584116, -934155, -96637, 3446711, 657130, 12584254, - -7516193, -1219771, 2510409, 2611340, 416612, -4891968, 8783208, 14798310, 14592151, 3010772, - -3023657, -1529008, 5231270, -727997, -1769527, -337155, 2920578, 6818261, -1140314, -2677912, - -4842576, -3064459, 66640712, -19428284, -7363722, -18073222, 33537252, 12339441, 2763812, 6790344, - -4907000, -7844758, 11798275, 1078037, -11645804, 2995740, -15356656, -11632919, 751619, -15567109, - 2104534, 5059472, -11499775, -20227148, 1915555, 1069447, 13673028, 22449794, 15650861, -10552735, - -171799, 13935021, 25477746, -26706106, 10063108, -5027259, -448824, -12195560, -17126182, 1440962, - 15356656, 4494684, 6869800, 9689446, -1075889, 6466074, -1550483, 4619238, 9848360, -17832704, - -12494060, 27670326, -2218351, -878321, -6285685, 11040213, 35824324, 8952859, 5383742, 11607149, - -9455371, -10675141, -15032, -7973607, -20560008, 13200582, 1675037, -10260677, 5617817, 3060164, - -5841156, -9665824, 13045963, -4520453, -15622944, 7275675, 7209103, 11012296, -10896332, 989990, - 4737349, -1926293, -4176856, 16516297, -1352915, 3027952, -7374459, -981400, -229781, 56899728, - 53912576, -17547088, 14710263, 4443144, 11431055, 28926604, -3556233, -15094663, -5284958, 55875376, - -31387620, -5963562, -15547782, -12461848, -25428354, 27951648, -8044474, -37967512, -28286654, -34638912, - -13269301, 30709016, -3620658, 14508400, -5392332, -15655156, 13718126, 4067334, 17364552, -16664473, - 15457587, 12287901, 6369437, 7157563, -27240830, 7907035, -22728966, 19318762, 40830108, 11856257, - 12320114, -25890062, 36571648, 9814000, -3721589, -5604933, -7329362, 11482595, 18328772, 4486094, - -4168266, -1015760, 5018670, -8778913, -6229850, -8446053, -6483253, -648540, 13445395, -8907762, - 20055350, 7230578, 12300786, -4110284, -28567974, -19170586, 7372312, 1979980, -8478265, 10715943, - -468151, -955630, 5826123, -4002910, 8448201, -1406602, -916976, 4099546, -4900558, -852551, - -5306432, -3225521, -6674379, 4406637, 382252, 1425929, -53541064, -31915902, 7666517, 4185446, - -319975, -23555748, 13924284, 7853348, -14231374, -38534448, 31372588, 7668664, 11620034, 17736068, - 10419591, -5102421, 5677947, -9756018, 26031796, -21786222, -37690484, -1288490, -1973538, -17879948, - -40965400, 1234803, -8516920, -21522082, -11970074, -6771016, 9006546, 1494649, 14867029, 30017526, - -12936441, -24882894, 7664369, -2952790, 133144, 12270722, -17781164, -16121160, -2349347, 14484777, - -19224274, 15814070, -5656472, 30528628, -4531191, -9605694, -3766686, 139586, 5948530, -34976068, - 4881231, -30266634, 30769146, 105227, 19247896, 11542725, -12013024, -1561221, -15869904, 7670812, - -1876901, 6083821, 5617817, -20834886, -3339337, -20098300, -9038759, 8942122, -6272800, -12335146, - 5718749, -188979, -20983062, -10269267, 2044404, 712965, -8763881, 9083856, -4836133, -5334350, - 4260608, -12509092, 6369437, -74120400, -34222300, -12446815, -8349417, -2257005, 7705172, -25765508, - -18601504, 6867653, -21726092, 6859063, -24124832, -7479686, -23330262, -28039694, 29624536, 12363063, - 4383014, -1737314, -24605868, -41517300, 20654498, -54462332, 19681688, 856846, -17557826, 2916283, - -10926397, 4217658, 37879464, -19065360, -2123861, -40913860, 32117766, -9470403, 14568529, -14383845, - -4915590, -3292093, -1644973, 19110456, 6457484, 39760660, 47637628, -4973572, 597000, -15753940, - 1657857, -6116034, 7344394, 15251429, 1775969, 34589520, 9676561, -12809740, 5411659, 7204808, - 94489, -2396592, 972810, 26306674, -19707458, -39479340, -16335908, 627065, 9214852, 6906308, - 19758998, -1958505, 8377334, -9975062, -16007343, -21977348, -17706002, 1533303, -5753109, 10771778, - 2733747, -6027987, -2881923, 18981608, -420907, 10559177, -4660040, 3639985, -4724464, -4322885, - -7264937, 94493576, 42183020, 29152090, 12092480, -10758893, -17186312, -29493540, 16353088, 28271622, - 11678016, -13234942, 33363306, 18784040, 33354716, 2265595, -24142012, -9369471, 50085760, -52293376, - -10752451, 34574488, -20493436, -11491185, 80889264, -10151155, 23115514, 73349448, -11781095, -4827543, - -2153926, 9113921, -4078072, 31799938, 20444044, 26210038, -18567144, -43334072, 17306570, -17100412, - 20802674, -8123931, 7544110, 30880814, 17877802, 1806034, 13572097, 6257768, 13067438, 29854318, - 16816944, -3189013, 29014652, 12165495, 4125316, 6899865, 53455164, 32070520, 49392, 29132764, - -12869870, 36831492, -9193377, 8117488, -10475425, 4406637, 21092584, -11714523, -858993, -2093797, - 7312182, 813896, -13844827, 551903, -11860552, -21174188, 3532611, -28187870, 10943577, 17282948, - -7088844, -12071006, -8121783, 15139760, 4464619, 809601, -6345814, 121951304, 55115168, -24700356, - 10657961, 63011464, 1486059, 45505180, -13368086, 18000208, 37937448, -28580860, 3457449, 66196184, - 59463824, 48399988, 17102560, 41568840, 7002944, 36440652, 12717398, 11027329, -22780506, -26751204, - -38044820, -75387416, 24032490, 893353, -20463372, -7213398, 26087632, -17134772, -2589865, 2944200, - 14669461, -66799628, -10803990, 48475148, 37327560, -13488345, 24663850, 21062520, 13662291, -8188355, - -15524159, -6743099, -10443213, -6764574, -24672440, -20965882, 17109002, -41620380, 13780403, 34149284, - -10123238, -24363202, -37958920, 35613868, -1110249, -17987324, -11753178, -8211978, -13024488, 7501161, - -6012954, -13239237, 13531294, 55437292, -27702540, -16662326, 7084549, -10771778, 12801150, 508954, - 28589450, 5523328, -2776696, -2396592, -29686814, -14014478, -4610648, 2529736, 2295660, 10625749, - 6569153, 1236951, 4776004, 5523328, 17517024, 1447404, 485331, -11373073, 5746666, 8463233, - 3508988, -48185240, -13445395, -57921928, -12599287, -57887568, 27818504, -55155972, 29665340, -9579925, - -31933082, -9683004, -14952929, 67422400, 10456098, -49166640, 938450, -32119912, -25305948, 33195802, - -37510096, -34716220, -39150776, 58800248, -7928510, 38805028, -59869696, -31956704, 23813446, -27940910, - 22711788, 65088080, 42775728, 40261024, 6899865, -6953552, -31621696, -44998372, -2409477, 9962177, - -41661184, 874026, -24554328, 12017318, 18393198, -47699908, -40486508, -74728136, -11684459, 5108864, - -32115618, -46224584, 45513768, 2297808, 46748572, 45848776, -5643587, -6509023, -18640158, 26441966, - 22917946, 3285650, 11323681, -3775276, -2353642, 22361748, -5912023, -26231512, -20143396, -33021856, - -27721866, -10269267, -1288490, -4552666, -41723460, -24210730, 13580687, 3143916, -14847702, 17940078, - -3665755, 910533, 28205050, 23293756, 15002321, 5935645, 18056042, 2662880, 470299, 8353712, - 5931350, -3985730, 1713692, -82304456, -14184129, 7241315, -7593502, 113817, 22282290, -18234284, - 19814832, 18749680, -12992276, 25383256, -35281008, 44216688, 30335354, 1505386, -32497870, 2609193, - 21584358, -96170760, 19950124, 39206608, -68867656, 28333900, -35259536, -50530292, -46050640, 23383950, - -11512660, -71807560, 38588132, 20637318, -43471512, -72651520, 14699526, 8557722, -22872848, -5293547, - -37329708, 35081292, 28980292, 51047832, -40868760, 6644315, -54279796, -20544976, 9363029, -34735548, - 14437533, -4320737, -27251568, -40980432, -44283260, 64753076, -43658344, -20656646, -16432545, 2703682, - 29751238, 17630840, 21700322, 210453, 25391846, -8557722, 4060892, -10788958, -26847840, 5282810, - 57498876, 8907762, 1322850, -236223, -37041944, 24084030, 38684772, 40359808, 8068096, 2993592, - -1767379, -3238405, 5836861, 779537, -18429704, -418759, 3706557, 2695092, 274878, 362925, - 14276471, -4964982, 1823214, -3618510, 753767, 24878598, -54651312, -29038274, -57711476, 16432545, - -10249939, 22909356, -15726023, 10855530, 18893562, -19320910, -32953136, 49173080, -12902082, -21923660, - 57129508, -11763915, -13314399, 65294240, -37776384, 9607842, 15983721, 5087389, -57582628, 184684, - -8403104, -34619584, 19789062, -27197880, 36631776, -6459631, 40774272, -44631152, 27741194, -79018808, - 871878, -43119324, 48105780, -7425999, 6573448, -8297877, -43851616, -3199751, 38201588, 100815768, - 7438884, 6322192, 21421150, 34443492, -5854041, -9732396, 3146064, -1752347, 88669600, -8061654, - 13653701, 35581656, -34565896, -59100896, 178241, -62461708, -7672959, -32085554, -23001698, -12562779, - -26371100, 14794015, 21962316, -36399848, 45883136, 38089916, -5469641, -9487583, -37516540, 26145614, - 9274982, 24796994, -21043192, 10222022, -4110284, 18738942, 2136746, 18129056, -9274982, 13277891, - -2282775, 270583, 4406637, 20562156, 9846213, 6255620, -6822556, 461709, 1853278, 95008968, - 103543072, 721555, -31769874, -25548612, 86719688, -57058640, -65002184, 67555544, -61407296, 39440684, - 12000139, 54640572, 50410032, 33988224, 5446019, -34559456, -29802778, 70929240, -30189326, -3143916, - 17289390, 60410864, 87535728, -2763812, 59788092, -49089328, -51200304, 5682242, -18942954, 28162100, - 17871358, -43785044, 5912023, 27674622, 71977208, 24472724, 29469918, 26993870, 32167158, 8209830, - -2581275, 45621144, 7990787, 36468568, 58488864, 12137578, -24131274, -20525648, 52714280, 13750338, - 108194520, 25196426, 42610372, -44225280, -69477536, -6751689, -81110456, -52014200, -18539226, -27790586, - 2987150, -4198331, 592706, 1047972, -60672856, -50259708, -26566520, -51896088, 18889266, 20534238, - -15743203, -4075924, -48157320, -7610682, 14130442, -13758928, -4183298, 4866198, -30414810, 12644384, - -9384504, 3586298, 5334350, 139586, 2027225, 6556268, -7303592, 1101659, 7015829, -304943, - 1638530, 2029372, -45176612, -158969632, -65601332, -129744520, -29098404, -45382772, -18326626, 11789685, - -42539504, -51552492, -82388208, -65539052, 58536108, -10462540, -52424372, -55744380, 12594992, -74167640, - -104593192, 17207786, -24367496, -22469122, -22505628, 20057498, -62360776, 65534760, -38173668, 44489420, - -31065498, -29854318, 678605, 35916664, -50873888, -48619028, 26006026, -9257802, 71734544, -31533650, - 41087804, 61804580, 29360396, -22623740, -10350871, -6547678, 50702088, -17897128, 34016140, 68423120, - -57632020, -100506528, -39618924, 33973192, 41704132, -47474420, 77876344, -25194278, -28271622, -9517648, - -8630737, -24245090, -63219772, -26789858, -65322156, -62569084, -38798588, 45988364, 10780368, -11199127, - 4112431, 71161168, 66846872, 4621385, -31074088, 12655121, -7118909, 29231548, 9103183, -12904229, - -29605210, -2768107, -6019397, -46954728, -12227772, 17708150, 48507360, -21872120, -53687, 18427558, - -27416924, -983548, -2001455, 695785, -14336601, 18094698, 977105, 4617090, -2375117, }, + 5985037, -3105261, 3661460, -2151779, 3077344, -6393059, 304943, -238371, -708670, 1481764, + 3173981, -96637, -281320, -3433826, -1352915, 1486059, 861141, -386547, 1350767, -397284, + 478889, -1490354, -1000727, -1000727, -326418, 150324, -730144, -508954, 1717987, -974958, + 1037235, -942745, -146029, -723702, 916976, 339302, 743029, 1243393, 1544041, 577673, + 416612, -122407, 176094, 231928, -279173, 283468, 3914863, -4479651, -601295, -824634, + -1114544, 725850, -2224793, 755914, -51540, 1013612, 889058, -1765232, -627065, 2692945, + -283468, 575526, -500364, 1170379, 2469606, 2856153, 485331, 1230508, -42950, -2254858, + -68719, 244813, -489626, 8590, 1241246, -1294933, -1741609, 758062, -841814, -777389, + -1221918, -53687, 1282048, 322123, -380105, -466004, -513249, -8590, 283468, -687195, + 251256, -785979, 472446, -11248519, -7962870, -3914863, -2918430, -2267743, -2299955, -816044, + -1696512, -547608, -1063004, -2796024, 545461, 1404454, -223338, 794569, -528281, -1458141, + -1438814, -2194728, -738734, 506806, 66572, -1243393, 828929, -1498944, -1458141, 942745, + 0, 30065, 770947, 854699, 231928, -356482, -435939, -594853, 296353, 133144, + -768799, 390842, -1526861, -678605, -382252, -180389, -1090922, -240518, -405874, -45097, + -16003048, -2106682, 1196148, 277025, 1127429, 165356, -914828, 618475, -712965, -710817, + -1466731, -1168231, 545461, -410169, 983548, -942745, -17180, -910533, 266288, 1662152, + -457414, 1245541, 34360, -1069447, -255551, 1509681, 706522, 996432, 1052267, -1490354, + 1000727, -584116, -156766, -785979, -427349, 487479, 631360, 397284, -401579, 1226213, + 992137, 657130, -386547, -723702, 77309, -588411, 98784, 18839874, 14955076, 3573413, + 6680822, 1644973, 5162551, 3674345, 1095217, 3700114, 1449552, 2813204, 1185411, -979253, + 2772402, 2001455, -783832, -219043, -5211943, -523986, 246961, 3204046, 343597, 158914, + 1599875, 167504, 1447404, 1382980, 204011, -68719, 504659, 2201171, 1647120, 1436667, + -146029, -513249, 83752, 1045825, -382252, -62277, 1116692, 414464, -556198, 17180, + 240518, -1058710, 1378685, -758062, 33174328, 12034498, 5942088, 3393024, 2205466, 2057289, + 2113124, 3298535, 916976, 5433134, 846109, 420907, 2461016, -1374390, 665720, -659278, + -496069, -1002875, 3644280, 1872606, -186831, 2617783, -1750199, -556198, -545461, 4088809, + -279173, 1417339, 446677, 1964948, 472446, -687195, 1196148, 1322850, -521839, 420907, + 697932, 298500, 977105, -350040, 1103807, 807454, -2549063, 513249, 448824, 440234, + 1973538, 12805445, -9502615, -3182571, -4458176, -2596308, -2699387, 1846836, -1593433, -3816079, + -1103807, -5108864, -1344325, -2171106, -5119601, -1174674, 996432, -3068754, -1187559, 575526, + -3659312, -75162, 3923453, 992137, 442382, -1782411, -68719, 1496796, -118112, -1636383, + -1964948, 1943473, -319975, -2340757, 68719, -951335, 2793876, -10737, 1166084, -403727, + 2388002, -1608465, 852551, 412317, 425202, 100932, 478889, -4295, -998580, 1625645, + 1024350, -34965328, -19630148, -4129611, -4827543, -3481071, -4213363, -6169721, -476741, 51540, + -1702955, 1402307, -1578401, 137439, -105227, -2108829, -2132451, -3588445, -1155346, 3294240, + -3195456, -491774, 3141769, 1846836, -450972, 1007170, -418759, -3489661, -1642825, -2892661, + -912681, -6442, -674310, 1462436, -2933463, -2467459, -85899, -3002182, -2209761, -2166811, + -2351495, 2327872, -736587, -3163244, -972810, 678605, 923418, -1172526, -1563368, -848256, + -2896956, -21653078, 12543452, 4337917, 2278480, 1844689, 2141041, 678605, -2022930, 350040, + -1093069, -644245, 4097399, 2098092, 3569118, 3135326, 3755949, -3148211, 1748052, 3513283, + 880468, 3032247, -3582003, 496069, -695785, -493921, -1163936, 1153199, -216896, -169651, + 3691525, -3738769, -775242, 1116692, 2250563, -1138166, 1926293, -1610613, -2014340, 2525441, + -1073742, -332860, -468151, 820339, -49392, 1050120, -1060857, -732292, -929860, -549756, + -770947, 1833951, 504659, 448824, -949188, -1733019, 420907, 31952410, 12897787, 2896956, + 7123204, 5823976, 970663, 2684355, 6732361, 3279208, -294205, 1619203, 727997, -858993, + 1840394, 6053757, 1260573, 7196218, 3298535, -5643587, 968515, 365072, 1078037, 5360119, + 2813204, 2254858, -569083, -648540, -813896, -715112, 702227, -974958, 1627793, 689342, + 2257005, -311385, -704375, 1035087, 1829656, 1219771, -304943, -2375117, -1166084, -1241246, + 2186138, 1823214, 2482491, 1597728, 302795, 547608, 2115272, 1917703, 1367947, 414464, + 257698, 1279900, 1099512, 35661112, 10078141, 4559108, 5439576, 1032940, 5252745, -751619, + -2168959, 4295, 1262720, 691490, -279173, 1140314, 5364414, -685047, -3536906, -2276333, + 2544768, 798864, 2985002, 5022965, 4189741, -169651, 2759517, -2993592, 242666, -2297808, + 3199751, 2012192, -3816079, 2291365, -1861868, 384400, -1518271, 2321430, -1464584, 2879776, + 2115272, 1902671, 3481071, 1286343, -150324, -753767, -66572, 601295, 3871913, 12885, + 34360, 399432, 1844689, 1391569, 85899, -369367, -633508, -1964948, -414464, 5042292, + -15257871, -6010807, -2585570, -3326452, -1707250, -1170379, 96637, 2302103, -2345052, -3955665, + 3682935, -4780299, -4818954, -725850, -1224066, 2269890, -1466731, 32212, -4664335, -2568391, + -5600638, -5866926, -6816113, -792421, 1413044, -4531191, -1398012, 798864, 358630, 335007, + -745177, -4490389, -3019362, 2143189, 631360, -944893, 4232691, -2798171, -1462436, 1226213, + 2538326, 2325725, -526134, -530428, 908386, 781684, -2985002, 395137, -1814624, -620623, + 73014, -1015760, 10737, 2070174, 281320, -264141, 341450, -2005750, 1159641, 1891933, + -519691, 51540, -38695508, -12116103, -7350837, -2978560, -5302137, -4146791, -1284195, -2946348, + -1297080, -3949223, -5448166, -3813931, -1370095, -7945690, -1962800, -3206193, -4896263, -551903, + 783832, 2649995, -2886218, -3949223, -1526861, 3324305, 4157528, 5207648, 2718714, -98784, + -2600603, -1116692, -19327, -3103114, 1267015, 2177549, 2645700, -1791001, -1612760, -1421634, + -766652, -577673, -1144609, 2126009, -648540, 1391569, -2707977, -4584878, -1982127, -137439, + 2280628, -3964255, 1288490, -1881196, 1844689, -1915555, 1086627, -1595580, -124554, -1024350, + -148176, 717260, 1440962, -966368, -1376537, -22194244, 5916318, 1640678, 21475, 3884798, + -3732327, 989990, -8585640, -2800319, 2978560, 2104534, 5527623, -416612, 6027987, -3534758, + -899796, 2873333, -5265630, -1945620, -3105261, 5866926, -390842, -4898410, 2435247, 4670777, + -4194036, -3204046, -3779571, 1063004, -901943, 1999307, -1466731, -1219771, -1039382, -2308545, + 3289945, -2705830, 609885, 2145336, -309238, 2482491, -1498944, 5471789, 783832, -588411, + -1971390, -1949915, 36507, -2239826, -2738042, -1709397, 377957, 1842541, -315680, 478889, + -2400887, -2388002, -3399467, -1372242, -1127429, -919123, 891206, 1331440, 19166292, 27584428, + 9463960, 9609989, 13022341, 9496173, -1359357, 1956358, -1054415, 1848983, 1574106, 2499671, + 1745904, 4810364, 1780264, 3062312, 899796, 9408126, 2158221, 4683662, 2682207, 2527588, + 7310035, 1876901, 9165460, 4889821, -1868311, 6624987, 1694365, 3350075, 6470368, 1481764, + 3854733, -1797444, -670015, 1999307, 2911988, -3775276, 3384434, -2102387, -4294968, -2345052, + 3562675, 5527623, 4052302, -581968, 1314260, 1432372, 2003602, 3008625, 1619203, 3377992, + 1930588, -2830384, -83752, 2435247, 3077344, 1127429, 1000727, 751619, -3049427, -1032940, + -1885491, 66346508, 4833986, -3197603, 5164698, -3429532, 7331509, 2426657, 7707319, -3710852, + 592706, 208306, 4574140, -8175470, 1490354, 5544803, -1277753, -1054415, 6768869, 11042361, + -4660040, -2336462, 1189706, 5557688, -2523293, 3678640, 47245, -3307125, -3045132, -2596308, + 2177549, 3500398, 3685082, -2538326, 4082367, -2506114, 3964255, 3884798, -1052267, -2224793, + 1294933, -3702262, -5643587, 1462436, -3889093, 1791001, 292058, 846109, 2267743, 208306, + 2776696, 446677, -3850438, 1754494, -1065152, 2050847, -2830384, -285615, 354335, 2166811, + -1574106, -4496831, -876173, -1801739, -22552874, -21930104, -4952098, 1679332, -966368, -3330747, + -3569118, -4922033, -1307818, 3594888, -1187559, -1269163, -5053029, 5280663, -324270, -4408784, + -3786014, 9174050, -8358007, 822486, 6085969, -764504, 985695, -8091719, 2546916, -3498251, + 1902671, -5641440, -3682935, 869731, 1462436, -2665027, -2954938, 227633, -1226213, 347892, + -3451006, -1990717, 3558381, -444529, -1705102, -1069447, 4529043, 1958505, -2619930, -4015795, + -3539053, 1129576, -562641, -1726577, 362925, 695785, -1956358, 5351530, 2914135, -622770, + -440234, -1464584, 631360, -1636383, -1591285, -1685775, -335007, -3115999, -2443837, -4163971, + 936303, -4451734, -178241, -1166084, -1086627, -292058, -8907762, -7494718, -9167608, -6442451, + -4849018, -3081639, 618475, 6442, -2392297, -813896, 2070174, 7967165, -6959995, 3545496, + -2398739, -4226248, 5446019, -371515, 1000727, 7395934, 974958, 3173981, -4670777, -977105, + -13406740, -1410897, 2428804, 1758789, 1060857, 1462436, 1784559, -2838974, -4075924, 3161096, + -435939, 2993592, 1365800, -3397319, 2815351, -176094, -9521942, -7653632, -1385127, -7239168, + 878321, 2413772, -579821, -1773822, -921271, 444529, -2244121, -569083, -502511, -1168231, + 2209761, 719407, 682900, -1213328, -1028645, 3732327, 876173, -2248416, 2441689, -481036, + -1756642, -3730179, 30065, -1990717, -717260, 2789581, 2102387, 2961380, -43074228, -9820443, + 637803, -8568460, 3461744, 856846, 10335839, -4836133, 618475, -2841121, 6929930, -14128295, + -13550622, 5710159, -6564858, 10189810, 3691525, -8192650, -14351633, -328565, -4058744, -6966437, + -2851858, 1638530, 2327872, -3365107, 12292196, 657130, -1219771, -5141076, 4187593, 4655745, + 5018670, 5390184, -665720, -3191161, -1204738, 3186866, -246961, 3846143, -3614215, -1423782, + -1241246, 4456029, 3582003, -3904125, 5070209, -2823941, -3524021, 433792, -1597728, -3354370, + 3463891, -3970697, -521839, 1009317, -955630, -1617055, 914828, 3324305, -2055142, 3186866, + -2628520, 2138894, -1455994, -1647120, -1024350, 642098, 4123169, 745177, 3863323, -2450279, + 39507256, 34709780, 7264937, 9279277, -1840394, 11345156, 9101036, 11428908, -461709, 4597763, + 2765959, -10709501, -9066676, 4999342, 987843, -7662222, -8102456, -4514011, 534723, 4629975, + 1363652, 10872710, 9921374, 4372277, -2274185, -2372970, 6575595, 6176163, 502511, 5418101, + -1722282, 6919193, 403727, -1436667, 9579925, 5027259, 7859790, 5117454, 1743757, 5557688, + 2787434, 1969243, 5113159, -2729452, 1041530, 6831146, -49392, -4290673, 4039417, 4060892, + 2879776, -2991445, -53687, 4015795, 5961415, -2896956, 7204808, 8282845, -1400159, -4361540, + 788127, 1964948, 1301375, 3682935, 10737, 1372242, 2808909, -1911261, 229781, -2750927, + -691490, -3738769, -2160369, -382252, 47916804, 3914863, -1359357, 3393024, 2310693, -7846905, + 2055142, 2149631, 6442, 5119601, 7325067, 10971494, -4885526, -4937065, -7741679, -6247030, + 7073811, -534723, 10213432, -2433099, -2473901, 4234838, 8875550, 3551938, -8905615, 7080254, + -2596308, 5669357, -2935610, 4406637, -5360119, 3322157, -423054, 5168993, 633508, 2959233, + 1586990, -9008694, -4960687, -813896, -1816771, -818191, -2806761, 4389457, 1668595, 9345849, + -1430224, -6345814, -3704409, -609885, 569083, -7060926, 2403034, -2383707, -304943, -657130, + -4129611, 3803194, 7224135, -2239826, 3723737, 891206, -4037269, -354335, -3841848, -3180423, + 657130, -5615670, -4000762, 2388002, -277025, 1294933, 3886946, -5315022, 6470368, 663572, + -2622078, -6431714, 1879048, -2362232, 13840532, -3304977, -13211319, -8935679, -11909944, 11016591, + -8798241, 2441689, 13462575, -594853, -13653701, 936303, -14332306, 11946452, -4153234, 11907797, + 90194, -4533338, 10256382, 384400, 2145336, -7705172, -9715216, -1563368, 3444564, 2093797, + -1879048, -4490389, 4552666, -1387274, 3408057, 5207648, 6347962, 2927020, 3524021, -12826920, + 1097364, -2907693, -4357245, 1758789, 6386617, -5357972, -9822590, -4350802, 2916283, 1123134, + -8626442, -3528316, 4067334, 5905580, -5171141, -3386582, -3972845, 6040872, 8053064, 1621350, + -2667175, 908386, 5781026, -2755222, -193274, -3777424, 4065187, -4726612, -519691, 5607080, + 3390877, -1634235, -816044, -139586, -1771674, -48348448, -48984104, -7939247, -24011014, -14903537, + -8523363, -13327284, -1623498, 10050223, -21960168, 8018704, -4498978, 7314330, 1262720, 4481799, + -9111773, 2308545, -1144609, -4754529, -20145544, -4110284, -10477573, -12811887, -1340030, 3231963, + 676457, -4361540, 2785286, -4140349, -1228361, 10692321, -231928, -3566970, 661425, 6994354, + 9401683, 6298570, 0, 5029407, 5813238, -571231, 51540, -10464688, 3839701, -8647917, + 1614908, 8338679, -5746666, -10471130, 3021510, -5873368, -5619965, 1159641, -88047, -4960687, + 2407329, -1176821, 11280732, 6339372, 3451006, 1398012, 4136054, -408022, 1243393, -4443144, + -8003672, -1316408, 689342, -5708012, -3966402, -3131031, -2675765, -3229816, 1786706, -1653562, + -489626, -3582003, -28658170, 53322020, 41987600, 2540473, 8602819, 3315715, 9371619, 14106820, + 3322157, 13698798, 2557653, -14568529, 9723806, 11540577, 3519726, 3403762, 8759586, 11370926, + -11375221, 9474698, -5970005, 8315057, 1324997, -7007239, 1410897, 9414568, 5441724, -11315091, + 5512591, -4655745, 16415365, -1413044, 3874061, -2555506, -10509785, 10610717, 10625749, 5018670, + 2738042, -498216, 3846143, 11267847, 2660732, 8053064, 1045825, 5592048, 3090229, -762357, + 6139656, -7404524, -11467563, -5065914, -8740258, -7438884, -3783866, -7638600, 10288594, 7290707, + 910533, -1840394, -3644280, -1209033, -251256, 77309, 521839, 1428077, 2160369, 1185411, + -201863, -2710124, -2295660, -384400, -204011, -983548, 1168231, -1189706, 6204081, -1391569, + 8143258, 71541272, -28011776, -15176267, 2598455, -148176, -3539053, -19849192, -8478265, 5089536, + -957778, -2826089, -3878356, 3081639, -16323023, -4640712, 8497593, 15934329, 8686571, 7166153, + -5085242, -4803921, -9390946, 11003706, -15466177, -2673617, 3850438, -10170483, 3358665, 4417374, + 12479027, -19026706, -1589138, -307090, -3925600, 5093831, -17628694, -9178345, 19443316, 12818330, + 2680060, -3304977, 11620034, -3369402, -1488206, 2194728, 9090298, 5259188, -5596343, 1224066, + -3262028, 7468948, -11879880, -5327907, -7189776, -7546258, 14566382, 4022237, 1818919, -6397354, + -526134, -2149631, -2555506, -6708739, 1095217, -6358699, -261993, 2229088, 5617817, -9663676, + -6702297, -8538395, -2604898, 4647155, 824634, 6161131, -813896, -7934952, -833224, -3569118, + 3715147, -330712, 21251498, 48943300, 8035884, 18678812, 16870632, 16194174, 5407364, 12109660, + 7456063, -3500398, -9932112, -6296422, -2864743, 13870597, -11834782, -13097503, -893353, -581968, + -5357972, -10020159, 29673930, 27885076, 20980916, 1050120, -11963631, 2145336, 1997160, -5946382, + 6837588, 4400194, 11980811, 1421634, 4898410, -541166, -8229158, 13600014, 11257109, 8143258, + -1932735, -10722386, 672162, -790274, -2991445, -21934398, 15841987, -9972914, 18268644, 1080184, + 9884867, -2055142, 10898480, 16580721, 3313567, -7441031, -547608, 3077344, -5446019, 2952790, + -2110977, -6979322, -3837553, 2345052, -1700807, 6977175, 2461016, -11688753, 749472, -1567663, + -12620761, -2927020, 2576981, -4763119, 1391569, 10756746, 4406637, -581968, -3704409, -2802466, + 231928, 4715874, -1286343, 5095979, -51391432, -6824703, -32034014, 360777, 5637145, -10874857, + -18734648, -21668110, -20544976, -12163347, -16756815, -4108136, -1140314, -4329327, 5377299, -3341485, + 1086627, 13151190, 5901285, -1301375, 31110596, -6831146, 6227703, -4550518, 2607045, 4516158, + 1651415, -1748052, 4565550, 14570677, 4380867, 5158256, 1629940, 5828271, 12300786, 16958678, + 5325760, 20577188, -5512591, -17740362, 17916456, -5682242, -3775276, -3612068, 10127533, 15721728, + 11847667, -302795, -4086662, -8995809, -22939420, 14130442, 16050293, 11362336, -13700946, 8291435, + 2136746, -1378685, 12996571, 2196876, 8727374, -7260642, 4256313, -9051644, -874026, 7853348, + -2293513, 5907728, -1249836, -3304977, -3234110, -11025181, 1110249, 826781, -94489, 2121714, + -2448131, -13600014, 1030792, 712965, -89930176, -40374840, 18309446, -3515431, -3079492, 3189013, + -11265699, -9904195, -3386582, -4479651, -15751793, 11100343, 1211181, 23489176, -13146895, -11306501, + -19235012, -10782515, -19810536, 1589138, 7232725, -29590178, 19048180, 16378858, -2368675, 3242700, + 12401718, 1808181, 10909217, -22434762, -22570054, -12543452, -14813342, -11420318, 36507224, 11875585, + -8076686, -13151190, -18741090, 8832600, 4992900, -8918500, 7260642, 7164006, -13230647, 1191853, + 2911988, 10346576, -12292196, 30043296, -13219909, -10563472, 4657892, -3296388, -206158, -9118216, + -3461744, 878321, 19076098, -6000070, 27507118, 5811091, 1750199, 3010772, 7312182, -8336532, + -3021510, -10941429, -8836895, -8403104, -85899, 14772540, -9721658, -7181186, -4142496, -5624260, + -5220533, -712965, -3470334, -5201206, -4554813, 14134737, 45541684, 23310934, 14583561, 9790378, + -15925739, 1552631, -12869870, 20154134, -2121714, -2750927, 6947110, 4389457, 4769561, -665720, + 7196218, 2514703, 7593502, -6268505, 19829864, 2611340, -1728724, 59201828, 3298535, -4578435, + -15101105, 8770323, -14042396, 13174812, 31986768, -2553358, 7881265, 7818988, -16370268, -18429704, + 609885, 341450, 14083198, -9139690, 564788, -1017907, 10387378, 10595684, 17832704, 6637872, + 6219113, 7318625, 801011, 11680164, 5514738, -21633750, 4670777, -11175505, -27668180, -2441689, + 7844758, 100932, 2366527, -3725884, 584116, -934155, -96637, 3446711, 657130, 12584254, + -7516193, -1219771, 2510409, 2611340, 416612, -4891968, 8783208, 14798310, 14592151, 3010772, + -3023657, -1529008, 5231270, -727997, -1769527, -337155, 2920578, 6818261, -1140314, -2677912, + -4842576, -3064459, 66640712, -19428284, -7363722, -18073222, 33537252, 12339441, 2763812, 6790344, + -4907000, -7844758, 11798275, 1078037, -11645804, 2995740, -15356656, -11632919, 751619, -15567109, + 2104534, 5059472, -11499775, -20227148, 1915555, 1069447, 13673028, 22449794, 15650861, -10552735, + -171799, 13935021, 25477746, -26706106, 10063108, -5027259, -448824, -12195560, -17126182, 1440962, + 15356656, 4494684, 6869800, 9689446, -1075889, 6466074, -1550483, 4619238, 9848360, -17832704, + -12494060, 27670326, -2218351, -878321, -6285685, 11040213, 35824324, 8952859, 5383742, 11607149, + -9455371, -10675141, -15032, -7973607, -20560008, 13200582, 1675037, -10260677, 5617817, 3060164, + -5841156, -9665824, 13045963, -4520453, -15622944, 7275675, 7209103, 11012296, -10896332, 989990, + 4737349, -1926293, -4176856, 16516297, -1352915, 3027952, -7374459, -981400, -229781, 56899728, + 53912576, -17547088, 14710263, 4443144, 11431055, 28926604, -3556233, -15094663, -5284958, 55875376, + -31387620, -5963562, -15547782, -12461848, -25428354, 27951648, -8044474, -37967512, -28286654, -34638912, + -13269301, 30709016, -3620658, 14508400, -5392332, -15655156, 13718126, 4067334, 17364552, -16664473, + 15457587, 12287901, 6369437, 7157563, -27240830, 7907035, -22728966, 19318762, 40830108, 11856257, + 12320114, -25890062, 36571648, 9814000, -3721589, -5604933, -7329362, 11482595, 18328772, 4486094, + -4168266, -1015760, 5018670, -8778913, -6229850, -8446053, -6483253, -648540, 13445395, -8907762, + 20055350, 7230578, 12300786, -4110284, -28567974, -19170586, 7372312, 1979980, -8478265, 10715943, + -468151, -955630, 5826123, -4002910, 8448201, -1406602, -916976, 4099546, -4900558, -852551, + -5306432, -3225521, -6674379, 4406637, 382252, 1425929, -53541064, -31915902, 7666517, 4185446, + -319975, -23555748, 13924284, 7853348, -14231374, -38534448, 31372588, 7668664, 11620034, 17736068, + 10419591, -5102421, 5677947, -9756018, 26031796, -21786222, -37690484, -1288490, -1973538, -17879948, + -40965400, 1234803, -8516920, -21522082, -11970074, -6771016, 9006546, 1494649, 14867029, 30017526, + -12936441, -24882894, 7664369, -2952790, 133144, 12270722, -17781164, -16121160, -2349347, 14484777, + -19224274, 15814070, -5656472, 30528628, -4531191, -9605694, -3766686, 139586, 5948530, -34976068, + 4881231, -30266634, 30769146, 105227, 19247896, 11542725, -12013024, -1561221, -15869904, 7670812, + -1876901, 6083821, 5617817, -20834886, -3339337, -20098300, -9038759, 8942122, -6272800, -12335146, + 5718749, -188979, -20983062, -10269267, 2044404, 712965, -8763881, 9083856, -4836133, -5334350, + 4260608, -12509092, 6369437, -74120400, -34222300, -12446815, -8349417, -2257005, 7705172, -25765508, + -18601504, 6867653, -21726092, 6859063, -24124832, -7479686, -23330262, -28039694, 29624536, 12363063, + 4383014, -1737314, -24605868, -41517300, 20654498, -54462332, 19681688, 856846, -17557826, 2916283, + -10926397, 4217658, 37879464, -19065360, -2123861, -40913860, 32117766, -9470403, 14568529, -14383845, + -4915590, -3292093, -1644973, 19110456, 6457484, 39760660, 47637628, -4973572, 597000, -15753940, + 1657857, -6116034, 7344394, 15251429, 1775969, 34589520, 9676561, -12809740, 5411659, 7204808, + 94489, -2396592, 972810, 26306674, -19707458, -39479340, -16335908, 627065, 9214852, 6906308, + 19758998, -1958505, 8377334, -9975062, -16007343, -21977348, -17706002, 1533303, -5753109, 10771778, + 2733747, -6027987, -2881923, 18981608, -420907, 10559177, -4660040, 3639985, -4724464, -4322885, + -7264937, 94493576, 42183020, 29152090, 12092480, -10758893, -17186312, -29493540, 16353088, 28271622, + 11678016, -13234942, 33363306, 18784040, 33354716, 2265595, -24142012, -9369471, 50085760, -52293376, + -10752451, 34574488, -20493436, -11491185, 80889264, -10151155, 23115514, 73349448, -11781095, -4827543, + -2153926, 9113921, -4078072, 31799938, 20444044, 26210038, -18567144, -43334072, 17306570, -17100412, + 20802674, -8123931, 7544110, 30880814, 17877802, 1806034, 13572097, 6257768, 13067438, 29854318, + 16816944, -3189013, 29014652, 12165495, 4125316, 6899865, 53455164, 32070520, 49392, 29132764, + -12869870, 36831492, -9193377, 8117488, -10475425, 4406637, 21092584, -11714523, -858993, -2093797, + 7312182, 813896, -13844827, 551903, -11860552, -21174188, 3532611, -28187870, 10943577, 17282948, + -7088844, -12071006, -8121783, 15139760, 4464619, 809601, -6345814, 121951304, 55115168, -24700356, + 10657961, 63011464, 1486059, 45505180, -13368086, 18000208, 37937448, -28580860, 3457449, 66196184, + 59463824, 48399988, 17102560, 41568840, 7002944, 36440652, 12717398, 11027329, -22780506, -26751204, + -38044820, -75387416, 24032490, 893353, -20463372, -7213398, 26087632, -17134772, -2589865, 2944200, + 14669461, -66799628, -10803990, 48475148, 37327560, -13488345, 24663850, 21062520, 13662291, -8188355, + -15524159, -6743099, -10443213, -6764574, -24672440, -20965882, 17109002, -41620380, 13780403, 34149284, + -10123238, -24363202, -37958920, 35613868, -1110249, -17987324, -11753178, -8211978, -13024488, 7501161, + -6012954, -13239237, 13531294, 55437292, -27702540, -16662326, 7084549, -10771778, 12801150, 508954, + 28589450, 5523328, -2776696, -2396592, -29686814, -14014478, -4610648, 2529736, 2295660, 10625749, + 6569153, 1236951, 4776004, 5523328, 17517024, 1447404, 485331, -11373073, 5746666, 8463233, + 3508988, -48185240, -13445395, -57921928, -12599287, -57887568, 27818504, -55155972, 29665340, -9579925, + -31933082, -9683004, -14952929, 67422400, 10456098, -49166640, 938450, -32119912, -25305948, 33195802, + -37510096, -34716220, -39150776, 58800248, -7928510, 38805028, -59869696, -31956704, 23813446, -27940910, + 22711788, 65088080, 42775728, 40261024, 6899865, -6953552, -31621696, -44998372, -2409477, 9962177, + -41661184, 874026, -24554328, 12017318, 18393198, -47699908, -40486508, -74728136, -11684459, 5108864, + -32115618, -46224584, 45513768, 2297808, 46748572, 45848776, -5643587, -6509023, -18640158, 26441966, + 22917946, 3285650, 11323681, -3775276, -2353642, 22361748, -5912023, -26231512, -20143396, -33021856, + -27721866, -10269267, -1288490, -4552666, -41723460, -24210730, 13580687, 3143916, -14847702, 17940078, + -3665755, 910533, 28205050, 23293756, 15002321, 5935645, 18056042, 2662880, 470299, 8353712, + 5931350, -3985730, 1713692, -82304456, -14184129, 7241315, -7593502, 113817, 22282290, -18234284, + 19814832, 18749680, -12992276, 25383256, -35281008, 44216688, 30335354, 1505386, -32497870, 2609193, + 21584358, -96170760, 19950124, 39206608, -68867656, 28333900, -35259536, -50530292, -46050640, 23383950, + -11512660, -71807560, 38588132, 20637318, -43471512, -72651520, 14699526, 8557722, -22872848, -5293547, + -37329708, 35081292, 28980292, 51047832, -40868760, 6644315, -54279796, -20544976, 9363029, -34735548, + 14437533, -4320737, -27251568, -40980432, -44283260, 64753076, -43658344, -20656646, -16432545, 2703682, + 29751238, 17630840, 21700322, 210453, 25391846, -8557722, 4060892, -10788958, -26847840, 5282810, + 57498876, 8907762, 1322850, -236223, -37041944, 24084030, 38684772, 40359808, 8068096, 2993592, + -1767379, -3238405, 5836861, 779537, -18429704, -418759, 3706557, 2695092, 274878, 362925, + 14276471, -4964982, 1823214, -3618510, 753767, 24878598, -54651312, -29038274, -57711476, 16432545, + -10249939, 22909356, -15726023, 10855530, 18893562, -19320910, -32953136, 49173080, -12902082, -21923660, + 57129508, -11763915, -13314399, 65294240, -37776384, 9607842, 15983721, 5087389, -57582628, 184684, + -8403104, -34619584, 19789062, -27197880, 36631776, -6459631, 40774272, -44631152, 27741194, -79018808, + 871878, -43119324, 48105780, -7425999, 6573448, -8297877, -43851616, -3199751, 38201588, 100815768, + 7438884, 6322192, 21421150, 34443492, -5854041, -9732396, 3146064, -1752347, 88669600, -8061654, + 13653701, 35581656, -34565896, -59100896, 178241, -62461708, -7672959, -32085554, -23001698, -12562779, + -26371100, 14794015, 21962316, -36399848, 45883136, 38089916, -5469641, -9487583, -37516540, 26145614, + 9274982, 24796994, -21043192, 10222022, -4110284, 18738942, 2136746, 18129056, -9274982, 13277891, + -2282775, 270583, 4406637, 20562156, 9846213, 6255620, -6822556, 461709, 1853278, 95008968, + 103543072, 721555, -31769874, -25548612, 86719688, -57058640, -65002184, 67555544, -61407296, 39440684, + 12000139, 54640572, 50410032, 33988224, 5446019, -34559456, -29802778, 70929240, -30189326, -3143916, + 17289390, 60410864, 87535728, -2763812, 59788092, -49089328, -51200304, 5682242, -18942954, 28162100, + 17871358, -43785044, 5912023, 27674622, 71977208, 24472724, 29469918, 26993870, 32167158, 8209830, + -2581275, 45621144, 7990787, 36468568, 58488864, 12137578, -24131274, -20525648, 52714280, 13750338, + 108194520, 25196426, 42610372, -44225280, -69477536, -6751689, -81110456, -52014200, -18539226, -27790586, + 2987150, -4198331, 592706, 1047972, -60672856, -50259708, -26566520, -51896088, 18889266, 20534238, + -15743203, -4075924, -48157320, -7610682, 14130442, -13758928, -4183298, 4866198, -30414810, 12644384, + -9384504, 3586298, 5334350, 139586, 2027225, 6556268, -7303592, 1101659, 7015829, -304943, + 1638530, 2029372, -45176612, -158969632, -65601332, -129744520, -29098404, -45382772, -18326626, 11789685, + -42539504, -51552492, -82388208, -65539052, 58536108, -10462540, -52424372, -55744380, 12594992, -74167640, + -104593192, 17207786, -24367496, -22469122, -22505628, 20057498, -62360776, 65534760, -38173668, 44489420, + -31065498, -29854318, 678605, 35916664, -50873888, -48619028, 26006026, -9257802, 71734544, -31533650, + 41087804, 61804580, 29360396, -22623740, -10350871, -6547678, 50702088, -17897128, 34016140, 68423120, + -57632020, -100506528, -39618924, 33973192, 41704132, -47474420, 77876344, -25194278, -28271622, -9517648, + -8630737, -24245090, -63219772, -26789858, -65322156, -62569084, -38798588, 45988364, 10780368, -11199127, + 4112431, 71161168, 66846872, 4621385, -31074088, 12655121, -7118909, 29231548, 9103183, -12904229, + -29605210, -2768107, -6019397, -46954728, -12227772, 17708150, 48507360, -21872120, -53687, 18427558, + -27416924, -983548, -2001455, 695785, -14336601, 18094698, 977105, 4617090, -2375117, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS][2522] ={ { -154619, - -186831, -354335, -231928, -195421, -302795, -255551, -139586, -156766, 88047, 347892, - -710817, 8590, -49392, -223338, -341450, -1176821, -1245541, -1842541, 2450279, -165356, - -944893, -646393, 803159, -1430224, -251256, -532576, -322123, -446677, 2136746, 959925, - -1288490, -676457, -586263, 118112, 25770, -350040, -893353, -1471026, 1803886, -901943, - 1157494, 788127, 1047972, -418759, 1404454, -8549132, 743029, -985695, 326418, -848256, - 40802, -947040, 100932, -2246268, -1413044, -176094, -1194001, -283468, -498216, 2327872, - 173946, -2561948, 2261300, -788127, 1217623, 109522, 878321, -2549063, -762357, -629213, - 313533, 517544, -259846, -723702, 936303, -1340030, -255551, -781684, 347892, 201863, - 1103807, 998580, -1157494, -639950, -23622, -408022, 886911, 49392, 758062, -700080, - -732292, 1088774, 4417374, -1859721, 1979980, -779537, 732292, 17180, 1052267, -395137, - 287763, 481036, 554051, 605590, 996432, -186831, 143881, 1814624, 1350767, -3416647, - 719407, -392990, 204011, -1127429, 807454, -1432372, 1509681, 1288490, 633508, -133144, - -444529, -485331, 1073742, 1028645, -416612, 283468, 1836099, -616328, -21475, -554051, - 227633, 345745, -38655, -446677, 865436, 199716, -253403, 17663054, -1191853, 2525441, - 34360, 852551, 418759, 667867, 483184, 1756642, -886911, 781684, -261993, 360777, - 1009317, 1511829, 659278, 347892, -605590, 1378685, -863288, 564788, -354335, -1318555, - 231928, 543313, 139586, -369367, 210453, -423054, 998580, -1806034, 526134, -373662, - 586263, 36507, -2523293, -852551, 360777, 468151, 397284, -401579, -496069, -461709, - 468151, 1063004, -322123, 10552735, -12588549, 2450279, -3062312, 1595580, -1999307, 1468879, - -2714419, -858993, -1690070, -360777, -1413044, 57982, 2422362, 3517578, 1462436, 732292, - 30065, 1058710, 2527588, 1793149, -1198296, -1473174, -1904818, -962073, -1110249, 27917, - -201863, -238371, 27917, 470299, -893353, 1030792, -1168231, -1606318, 539018, -103079, - 94489, 236223, -1078037, -1290638, 350040, -820339, -1000727, -277025, 126702, -24412594, - 4733054, -1333587, 502511, 414464, -2149631, -1024350, 1816771, -423054, 49392, 2063732, - 586263, -932008, -1627793, 1406602, 12885, -1937030, -2744484, -3901978, 1105954, -1791001, - 270583, -646393, 590558, -487479, 146029, -2070174, -2070174, -1309965, -644245, -1322850, - 242666, -687195, 566936, 2188286, 266288, 307090, 1382980, 328565, 223338, -137439, - -425202, -1591285, -485331, 266288, -408022, -29152090, 10771778, -2808909, 3388729, -1799591, - 2411624, -1479616, -500364, -2566243, 1795296, -3017215, 1840394, -584116, 2617783, -3790309, - 848256, 3384434, 901943, -2989297, -1146756, -1825361, -843961, 1037235, 446677, 753767, - -577673, -1054415, -1524713, -1428077, -238371, -1625645, -399432, -1511829, -1159641, -4105989, - -1262720, -614180, 94489, 51540, 1279900, 564788, 1256278, -178241, 1481764, 352187, - 8590, 3775276, 12799003, -3339337, 5757404, -3253438, 1608465, -3519726, 3030100, -107374, - 3287798, -90194, -182536, 3262028, -380105, -264141, 2838974, -1155346, -2360085, -3792456, - 3646427, -111669, 2531883, 457414, 1829656, 1007170, -2183991, 1161789, 1047972, 30065, - 1299228, 2003602, -2175401, 493921, 38655, 0, -1206886, -392990, -1181116, 551903, - -165356, 1196148, 3064459, 324270, 1599875, -55835, 382252, -103079, 545461, 1419487, - 38317552, -9300752, 3745212, -1702955, 3324305, -1279900, 2574833, -1245541, 953483, -3588445, - 1829656, -3418794, 2817499, -949188, 899796, -895501, 3921305, 665720, 1054415, -1694365, - 2589865, -79457, -1067299, 2276333, -1567663, -2413772, 146029, -648540, 1299228, 141734, - -311385, -680752, 442382, 75162, 547608, -1602023, 476741, -616328, 2811056, -347892, - 1372242, 416612, 1157494, 2231236, -1370095, 283468, 521839, -526134, 1655710, 3094524, - -19939386, 7696582, -6234145, 3474629, -3163244, 914828, -4127464, 2469606, -1715839, 3502546, - -515396, 1447404, -3307125, -1496796, -311385, -1312113, -1187559, 4050154, -3193308, 380105, - 1861868, -3994320, 895501, 1198296, -1050120, 1159641, 356482, 597000, -2527588, -382252, - -863288, 1337882, -1292785, 652835, -2954938, -758062, 2042257, 841814, 605590, -914828, - -493921, -2383707, -2398739, 1086627, 420907, -294205, -390842, -395137, 165356, 10737, - -530428, -676457, -32205812, 10316511, -5843303, 1275605, -695785, 1608465, -2564096, 2409477, - -1221918, -1088774, -474594, 1685775, -1168231, -1692217, 944893, 3414499, -644245, -47245, - -6195491, 319975, -45097, 2746632, -1097364, -659278, -4760971, -1791001, -77309, -124554, - 1477469, 1995012, -3620658, -3423089, 1947768, 302795, -3721589, -2987150, 1239098, 556198, - -324270, -335007, -1490354, 1183264, -539018, 281320, 83752, -2126009, -893353, 768799, - -3006477, -1702955, -670015, 367220, -667867, -32100586, 14020921, -7941395, 5804649, -5572720, - 2570538, -6322192, 1290638, -4157528, 6247030, -3339337, 2106682, -498216, -107374, -3027952, - -992137, -1305670, 5624260, -1191853, 2787434, 4602058, 2521146, 609885, -801011, 1045825, - -1202591, 2549063, 2353642, 289910, -1464584, 380105, 292058, -1810329, -983548, 1269163, - 1705102, -1492501, -1617055, -1507534, -115964, -650688, 597000, -1447404, 781684, -2248416, - 423054, -1245541, -315680, 197569, -1120987, -1226213, -1775969, -1455994, 12083890, 12545599, - -4352950, 4312147, -4795331, 974958, 1735167, 332860, -1784559, 2499671, 807454, 5085242, - 2772402, 5714454, -618475, 3448859, -659278, 2272038, 3137474, -204011, -3796751, 4028679, - -184684, 1799591, -663572, 176094, 790274, 4879083, 940598, -2377265, -622770, 794569, - -1159641, 3715147, 1760937, -386547, -672162, -1842541, 1831804, -1806034, 2272038, 2276333, - -1307818, 1372242, 1357210, 719407, 103079, 3590593, 2390149, 2665027, 165356, 448824, - 1395864, -592706, -17180, 36290328, -12700218, 4660040, -5830418, 4286378, -3770981, 5456756, - -1608465, 416612, -3755949, 8096014, -929860, 7307887, 661425, 1380832, -4569845, 1864016, - 7408819, -2059437, -5819681, 1039382, 489626, 2946348, -4123169, 3708704, 206158, 446677, - -133144, -4080219, -983548, 826781, -4801774, 962073, 2319282, 1810329, -1157494, -289910, - 81604, 2480344, 989990, -298500, -758062, 1949915, 1561221, 4687957, 1475321, -588411, - 2858301, 1116692, 36507, 934155, 2250563, 1365800, 577673, 388695, 12008729, -17538498, - 10378788, -7838316, 3178276, 1110249, -880468, -725850, 1984275, -4458176, -2892661, -2336462, - -1872606, -6066642, 2942053, -5634997, -330712, -4516158, 1531156, -3408057, -2763812, -1380832, - 4960687, 674310, 4821101, 2561948, 3262028, 4861903, 126702, -648540, -880468, 1355062, - 3624953, -335007, -412317, -2527588, 1767379, -319975, -1644973, 1382980, 1011465, 3919158, - 1449552, 1848983, -2935610, -1292785, -319975, -508954, 1754494, -5607080, 1050120, -1365800, - -1114544, -1722282, -2141041, -642098, -2121714, 820339, -1535451, -191126, -3135326, -37192268, - -8231305, 1569811, -7164006, -3032247, 163209, -347892, -6128919, 1589138, -6105296, 49392, - 4660040, -1017907, -940598, 2514703, 1584843, 2564096, 12885, 3128884, -1943473, 805306, - 3618510, -371515, -382252, -2579128, 3435974, -2886218, -1672890, 831076, 1301375, 2630668, - 8293582, -2415919, -1524713, -3738769, 53687, -2778844, 487479, -1166084, -4125316, -339302, - 4928475, 1342177, -3579855, -1788854, 1533303, -2160369, -2753074, 408022, -1380832, 223338, - 382252, 3131031, 300648, 1503239, 687195, -2755222, -1535451, 1632088, 1428077, -1136019, - -45475112, 37445672, -13149042, 11087458, -8248485, 6219113, -2418067, 3938485, -4389457, 2619930, - 3096672, 4460324, -2974265, 5409512, 2682207, 9249212, -1483911, 712965, -4954245, 1172526, - -1748052, -3163244, -3837553, -4479651, -4063039, 5954972, -283468, 7164006, 1874753, 1236951, - -128849, 826781, -3204046, 414464, -1168231, 1406602, 4299263, 661425, 1421634, 141734, - 455267, -3384434, -1782411, -246961, -240518, 311385, -985695, -3139621, 85899, 3096672, - -1024350, 813896, 955630, -2811056, 1853278, 639950, 1028645, -702227, 324270, -448824, - -811749, 26598732, -3944928, -8413841, -2841121, -1672890, -1247688, -7393786, -3828963, 2226941, - 1413044, 2278480, 2800319, -4926328, 2164664, -861141, 1939178, 8244190, -8078834, 2967823, - 2959233, 2340757, -1995012, -4608500, 3818226, 1236951, 2765959, 5134634, 126702, 7026567, - 717260, 3341485, 388695, 2312840, -1775969, 2746632, 1995012, 2628520, -846109, 968515, - -85899, 3330747, 4043712, -5686537, 7969312, 813896, 2302103, 491774, 1471026, 1675037, - -1559073, 4866198, 2641405, 335007, 4408784, 1990717, -2287070, -40802, -1505386, -1552631, - -1213328, 947040, -264141, 433792, -38655, -4647155, 21120502, 1979980, 4413079, -5280663, - -891206, -13333726, 3358665, -493921, -9032316, 7840463, -4112431, 431644, 5763846, 2697240, - 4357245, -3081639, 1988570, -4086662, 199716, -3468186, 1475321, -5357972, 8033737, 5888400, - 4786741, 5626407, 1316408, -1627793, -3324305, 1720134, 4447439, 191126, 3060164, -1962800, - 693637, 3066607, 2121714, 2778844, 266288, 1118839, -249108, -1662152, 1913408, -1093069, - 929860, 947040, -1827509, 2765959, -3433826, 3313567, -1582696, 2396592, 3420942, -3927748, - 457414, 661425, -1642825, -3062312, 2323577, -5085242, -4039417, 2690797, 1080184, 1331440, - 1028645, 3416647, 3148211, 33006824, -27597312, 9244917, -6927782, 2330020, 8519068, 6895570, - -4687957, 8282845, 4647155, 4962835, -3539053, 2254858, -1838246, 9844065, 2699387, 2701535, - 3790309, 4099546, 2609193, 2761664, -8233453, 1189706, -14832670, -5265630, -1423782, -8594230, - 2076617, 4406637, -3242700, -4728759, -5448166, -5325760, -2811056, 2834679, 2308545, -7675107, - -8748848, -822486, -4479651, 2216203, 1896228, 665720, -657130, 3951370, -2196876, 34360, - -605590, -2025077, -5622112, 4148939, 7331509, -1187559, -949188, 3262028, -5214091, 6090264, - 1597728, -3405909, -143881, -3186866, -1273458, -981400, -2145336, -811749, -1460289, -4599910, - -51460152, 4840428, -4810364, 1632088, 4980015, 3496104, 10211285, -4546223, -599148, 586263, - 12272869, 4086662, -10028749, -6661495, 5289252, 7136088, -2083059, -3060164, -429497, 3146064, - 7423851, 7501161, -330712, -14179835, -4239133, -1711545, -1883343, 7793218, -3917010, 4432406, - 257698, -1168231, -7419556, 283468, 5549098, -9519795, -5604933, -2463164, -1806034, -4672925, - -3843996, -8927090, -1773822, -6152541, -118112, 962073, 6053757, -4550518, -2952790, 221191, - -777389, 652835, -5506148, 1784559, 1902671, 345745, 182536, -4385162, -3788161, -2383707, - -1247688, -659278, -7005092, 1063004, 1971390, -3345780, -6395207, -29828548, 32169306, -4303557, - 2257005, 7784628, 9255655, -6528351, 4571993, 1988570, 5796059, 4052302, 8083129, 4726612, - -5113159, -8562017, 1466731, 9661529, 18912888, -4224101, -6158983, 5201206, 3229816, -3268470, - -9032316, -1565516, -1675037, -8022999, 7477538, 9021579, 304943, 2349347, -10737, 7170448, - -5181878, -16200617, 7125351, -1642825, 5677947, 2997887, 371515, -3743064, -6225555, 4760971, - 5336497, 4168266, -620623, 27917, 5843303, 3590593, 1872606, -3034395, 4924180, 4410932, - -575526, -865436, -2710124, 3697967, 186831, -7765301, 6790344, 4417374, -1451699, 2325725, - -953483, 616328, -96637, 2388002, 5815386, 2388002, -974958, -1627793, -186831, 9120363, - 461709, -6790344, -14093935, 3569118, -657130, -11557757, 4030827, -3725884, 618475, -4277788, - -3390877, 3848291, 8967892, 1264868, 11854110, 5527623, -5894843, -7630010, 12953621, -5418101, - -380105, 1342177, -12094628, 100932, 6431714, -6835441, -1855426, 8319352, 517544, 4447439, - 122407, 5557688, -914828, -3408057, -506806, 7320772, 9554155, -2911988, 1906966, 1900523, - 6343667, -3566970, -725850, 1488206, -1683627, 4395899, 1795296, 597000, -2267743, 3573413, - 3584150, 453119, 64425, 3021510, 4179003, -4915590, -169651, 1711545, 2201171, -2388002, - 1956358, 67632848, -5948530, 1617055, 4694400, -5525476, -9891310, -5553393, -2068027, -11345156, - -12189117, 1466731, -10730976, -4458176, -2716567, -2282775, 7462506, 8555575, 3098819, 17373142, - 3616363, -7876970, 15105400, -972810, 10866267, -2808909, -508954, -9098888, 942745, 8961449, - 296353, -3650722, -1047972, 1346472, -1522566, -1309965, 3884798, -7148973, 3715147, 1627793, - -2989297, -6753836, -4269198, 6066642, 6146098, 7043747, -10402411, 6706592, 2383707, 231928, - 1194001, 1597728, 1928440, 1941325, -219043, 1103807, 6594923, -1127429, 3068754, 3274913, - -1644973, 5400922, 6382322, 1492501, 360777, 5723044, 4563403, 3453154, -39795020, -66496832, - 23562190, -2035815, 9571335, -11924977, 148176, -13750338, -2145336, -19666656, 7939247, 8589935, - -854699, -1825361, -672162, 1488206, -5065914, -16784732, 29897268, 1808181, -4348655, 10118943, - 1382980, -5763846, 14093935, 15921444, -7441031, 9292162, 1361505, -2314987, -15687368, -8555575, - 11353746, -6337224, 1153199, -1041530, 7535520, -12597139, -14465450, 1767379, -350040, -9605694, - 5117454, 972810, -6448894, 3985730, -7056632, -5551245, 1971390, 2323577, -266288, -1868311, - -3672197, 3736622, 5854041, 837519, 1393717, -1958505, -2525441, 5587753, 2147, 1204738, - -6468221, -1380832, -4563403, 3152506, 4017942, 23622, 3165391, -21440476, 63735168, -28552942, - 4599910, 4028679, 15835544, -2177549, 10033044, -10245644, 418759, -19514184, -3923453, -21475, - 7593502, 1187559, 7816841, -5658620, -12008729, 1430224, -17952964, -18745384, 294205, -6204081, - -599148, 1535451, 2413772, -4679367, -3362960, -6704444, -10378788, 4037269, 4612795, -13176960, - -6244883, -16546362, -36507, -7301445, 5639292, 6970732, -13939316, 2177549, 10926397, 10166188, - -5579163, 3743064, -4217658, -1853278, 2821794, -6083821, -1681480, 5845451, 4116726, 4054449, - 4447439, 2716567, -1823214, 3947075, 2098092, -2660732, -564788, 7937100, -1245541, -3335042, - -1584843, 3448859, -3788161, -7621420, -1073742, -2428804, 1488206, 2070174, -1730872, -53369264, - -16930762, 5381594, -8927090, 6977175, -4069482, -478889, -16155519, -19245748, -3139621, -7086696, - 7221988, 1692217, -2888366, -39178692, 18779744, 850404, 16280074, 20504174, 13911399, -20723218, - -5574868, -2469606, -5695127, 3848291, 4138201, -852551, -8027294, 7672959, -14340896, -7803956, - 11448235, 130997, -5916318, 13707388, -384400, 14405320, -5860483, -2864743, 1047972, 4185446, - -11398843, -8351564, -2624225, 7915625, -3816079, 891206, -4133906, 5136781, 6242735, 895501, - -431644, -12837657, -2115272, 5585605, 5942088, -4342212, 6734509, 2031520, -2997887, 1507534, - -8647917, -2901251, -6126771, 4597763, -197569, -2323577, 794569, -13737453, -1022202, 1932735, - 5134634, 34452080, 12047383, -19662360, -2832531, -8080981, 7709467, -11585674, 10881300, -1591285, - 12545599, 8995809, 15092515, -18764712, 24019604, -13642964, 14304389, -7125351, 8815420, 2293513, - 7569880, -11699491, -27975270, 11862700, 20489142, -6433861, 8757438, -9320079, 2976412, -5832566, - 21494164, 629213, -1486059, 5834713, -9582072, -6210523, -5385889, 10048076, 654983, -2488934, - 564788, -901943, 14907831, 10557030, -4831838, 5598490, 5997922, -5001490, -2931315, -4389457, - -10363756, -496069, 734439, -448824, -3500398, -9990094, 38655, 17935784, 9633612, -5942088, - 9889162, 122407, 307090, 9064528, 4591320, -6844031, 3491809, 3027952, 8753143, 11229192, - -7462506, 4909148, 6255620, 71146136, -58815284, -10249939, 2488934, -1597728, -16557099, 4930623, - 3811784, 22370338, -7889855, 3990025, 18393198, -6442, 10913512, 36612448, -8450348, -2957085, - -19701014, -18627274, 468151, 5581310, -8506183, 2948495, 32403380, 18356690, 2385854, 635655, - 2340757, 17510582, -15436112, -7314330, -1146756, 8708046, -1750199, 1591285, -7958575, 2224793, - -13907104, -8699456, -10574209, -534723, -9491878, 1490354, -16690243, 6844031, -33084134, -9159018, - 4260608, 5289252, -1466731, -8364449, 2308545, 152471, 3708704, -9824738, 3770981, -6126771, - -6163278, -15386720, -11025181, -4116726, -2040110, -253403, 2216203, 3637837, 622770, 1163936, - -8939974, -1172526, -10896332, -2778844, -1153199, -1005022, -46145128, -32396938, -3197603, -7284265, - 22879290, -135291, 3547643, -30629560, 710817, 3146064, 889058, 1344325, 17121888, -23293756, - 3936338, -5738077, -16172699, -8446053, 13443248, -5961415, 10816875, -4952098, 5965710, 2619930, - -3118146, -2783139, 6882685, -2059437, -807454, -20169166, 8781061, 7511898, 7432441, 8252780, - -17817672, -18784040, 9678709, 14259291, -19069654, 5690832, 2061584, 14830522, 8613557, 395137, - 10185515, -6796786, -11652246, -2843268, -21960168, -16866336, -2207613, -1990717, 2987150, -11454678, - 3186866, -9442486, -27844272, -9311489, -7705172, -28402618, -180389, -5708012, -3326452, 1814624, - 8379481, -9283572, 5242008, 2156074, -12105365, -9107478, -9113921, -3231963, -2282775, -28630252, - 42610372, -22943716, -10054518, -13552769, 2965675, 3373697, 5886253, -3032247, 18300856, 13868449, - -13975824, -24202140, 8452496, -9229885, 21492016, 1586990, 8856223, 11360188, -8901320, -8265665, - 28673202, -16924318, -4651450, -8647917, 403727, -3620658, 3240553, -5042292, -2611340, -22632330, - 19228568, -6990060, -2480344, 23553600, -16870632, -20332376, 1093069, -9186935, -14164802, -6442, - -7662222, 5446019, -30189326, -9616432, -8059506, -523986, 9463960, 347892, 1153199, 5602785, - -5976447, 4378719, 5942088, 6300717, 5555540, -3384434, -7262790, -5022965, 6382322, -17304424, - -5001490, -3672197, -5553393, 12191265, -9088151, -11811160, 11327976, 4520453, 6242735, 15680926, - -6912750, -4191888, 5808944, -7239168, -60080152, 28559386, 30872224, 15300821, 13853417, -11602854, - 14108968, -26575110, -103079, -31056908, -4876936, -14173392, 13005161, -15438260, -12822625, -4372277, - -22905060, 5332202, -10952167, 8566312, -21534966, 33266670, -12199855, 15081778, -15013058, 178241, - -15028091, -5761699, 6947110, 20800526, 23888608, -13664438, -738734, -8617852, -13885629, -11297911, - -36129264, -2205466, 5117454, -34608848, 12167642, 5134634, 8323647, 14450417, 9259949, 3846143, - -11912092, -5175436, -13183402, -7885560, 5939940, -28179280, 9775346, 3539053, 1015760, -14272176, - -8070244, 5046587, 20776904, 7164006, 4926328, -10372346, 8351564, -777389, -10711648, 612033, - -7851200, -13853417, -6478958, -5164698, -10857677, 9313637, 6549825, 6790344, 5400922, 48462264, - -34196528, -14613626, -4827543, -639950, 23280870, -4986457, 7226283, -14199162, 6786049, -8980777, - -39313984, -27028230, -10548440, 13464722, -2308545, -21773336, -20714628, -42576012, -14304389, 5048734, - 5010080, 1617055, -5059472, -2800319, -13816910, 3135326, 4750234, 6902013, 886911, -2175401, - -5828271, -20349556, -5920613, -4771709, 9328669, -2274185, -16879222, -6448894, 3824669, -18159122, - 2257005, -18691698, 9513353, 14510547, -14693083, -26944478, -6088116, -8437463, -13228499, 1372242, - 1535451, 2774549, 5699422, 506806, -11506217, 17117592, 25301652, -12375948, 9932112, 4739497, - 11474005, -18580028, 6195491, 2920578, 5791764, -26718992, 20605106, 3365107, 1400159, -2409477, - -16698833, 5229123, 798864, 5446019, 79901424, -44201656, 4389457, -4211216, -9143985, -32948842, - -1436667, -1619203, 27382564, 12547747, 54956256, -21519934, 2510409, 6128919, 13501230, -5441724, - -2068027, 22241488, -13415330, 31937376, 19791210, -44171592, 42691976, 14931454, -14693083, -10954314, - -16054588, -8637179, 3599183, 1939178, -11343009, 28011776, 4206921, -13471165, -11257109, 2675765, - -14063870, -26089778, 934155, 15429670, 6884833, 18766860, -8038032, 5740224, 20989506, 28941638, - 7653632, -30283814, 10703059, -9880572, -15745350, 4183298, 13627931, 7106024, -2746632, -27556510, - -22954452, 33479270, -3425237, 25814900, 4069482, -10499048, 13926431, -22817014, -8768176, 10700911, - -1576253, 22265110, -16537772, -35742716, -8360154, -1629940, -9030169, -8074539, 24567212, -91016800, - -59569048, 20192788, -31535798, 8446053, -16363825, -55568288, -41414224, 71290016, -34591668, 31507880, - 17295834, -20194936, 15695958, -12006581, 21638046, 24051816, -2830384, -8450348, 42277512, -15395310, - -50304804, -466004, -21754010, 3743064, 3470334, 28138478, 14416058, 4844723, 13230647, -14510547, - -1161789, 30930206, 19432580, -7084549, 7142531, -29719026, -45118632, -33685428, -23807004, -7632157, - -7391639, 6871948, -5229123, -13516262, 27066884, 6156836, -22295176, -21071110, -6807523, 6951405, - -22428320, 7299297, 25230786, -1745904, 8802535, -19262928, 12998719, 9036611, 2241973, 9270687, - -16857746, -25675314, -35512936, 16331613, 12783970, 221191, 12777528, 1690070, -16484084, -4069482, - 843961, -28177132, -2435247, -43115028, -108757160, 35147864, -9927817, -8497593, 17813376, 3229816, - 9350144, 45268956, 26590142, 33797096, 16458315, 46684148, -9764608, -48556752, 5654325, -6882685, - -21386790, -43250320, -19393924, 34733400, 7033009, -4202626, 6388764, -4486094, -672162, 28924458, - 2725157, 9603547, -5793911, 5783174, 29411936, -10286447, -21674552, 13655849, -37602440, -38570952, - -24670292, -6575595, -68719, 13219909, 34735548, -1455994, -13413183, -37735584, -59526100, -22664542, - -9564892, -5615670, -1413044, 19428284, -27812060, 46076408, 24084030, -6822556, 12899934, -21283710, - 2478196, -1911261, 21354578, 40789304, 28129888, -27751932, -11626476, 4829691, -5046587, -7795366, - 1277753, -15476915, -42726336, -5465346, -8628589, -5145371, 5656472, -18083960, -6317897, 46284716, - 46795816, 17667348, 32152126, 24017458, 48930416, -38049116, 50745040, -56081536, -7803956, 57793080, - 77951512, 18558554, -2302103, 30313880, -20716774, -24152748, 57022132, 11716671, -5980742, 16237124, - 46282568, -8553427, 29298120, -5800354, -8624294, -2214056, 22151294, -47729972, -3871913, 27812060, - -8965744, 5757404, -15693810, 13746043, 42507292, -33874408, 14237817, -7705172, 15380278, -16071768, - 29237990, 5699422, 11952894, 14416058, -42840152, 25505664, -60518236, -9174050, 37626060, 7481833, - -20295868, 42973296, -11491185, -19855634, 30492120, -7801808, -6152541, -472446, 19138374, 1565516, - 6429566, -29910152, 14261439, 7655779, 68661496, -45606112, -20298016, 10986526, -11491185, 20523502, - 20046760, -18141942, 47437912, 24715390, 89990304, -55656332, 2463164, -8531953, -14716705, 2332167, - -20282984, -8117488, -66163972, -54911156, -55177444, 19151260, -11480448, 18983756, -12627204, -39449276, - 64063732, 45466524, -29886530, -24174224, -35317516, -6468221, 13516262, 22093312, 25679610, -839666, - 19758998, -4728759, -25739740, -29847876, 18904298, -12936441, 58037892, 37892348, 53429392, 8875550, - 19005230, 54511724, 36161476, -10267119, 8948564, -897648, -169651, 7176891, -25692494, -16226386, - 8564165, -29300266, -33002528, 32695438, 34009700, -36687612, -2512556, 70461088, 46366320, -382252, - -24096914, -2804614, 12627204, 15182709, -10956462, -23061826, 28787018, 556198, 5516886, 24726126, - 25679610, -26115548, 10153303, -1479616, 8967892, -41661184, 5471789, 44957572, -43971876, 71509056, - 26852136, -10821170, -3444564, 21646636, -28284508, -36500780, 29233694, -43396348, -55787332, 13372381, - -30438434, -39011188, -20822002, 34954592, 87578680, 35493608, -49334140, 89590872, 9457518, -15470472, - 15277199, -54284092, 12393128, 6045167, -39114268, 31574452, -11334419, 5160403, -28490666, 14016626, - -26149908, 44568876, -55583320, -21466246, -19978040, 24472724, 28726888, 25172804, -30148522, 6923488, - -31494996, -10260677, 14832670, 36786396, 16406775, -19327352, 36045512, 17349520, 28759102, 225486, - 33696164, -17255032, 17892834, -55508156, 58536108, -7252053, 6629282, -18079664, -33253784, -622770, - 18075370, 45730664, 11918534, -59987808, 22061100, -25909390, 44588204, 1264868, -21311628, 6124624, - -19518478, 6541235, -38442104, 9674414, -146872848, 8398809, 26753352, 60275572, 21081846, -89661736, - 123768072, 46514496, -53901840, 21908628, 123147448, 29072634, -27496380, -1836099, -71487584, 39573828, - 5488968, -16945794, 12601434, 26989574, -45584636, 27311698, -57610544, 8156143, -52289080, -47053516, - -18668076, 24861418, 37185828, -24867860, 32839320, -51163796, -5336497, 61482456, 7849053, -19580756, - -4602058, 13569949, -11343009, -37400576, -41382008, -3850438, -17555678, 45030584, -57741540, 66024384, - 23160612, 10247792, -18562848, -4945655, 32594506, -21863532, 43057048, 12071006, 39361228, -11126113, - -17549236, -61018600, 25209310, -4099546, -61403000, 21900038, -358630, 42073500, 68266360, -24575802, - 19235012, 33992520, 38785704, 9386651, -13743895, -1318555, -72357312, -1451699, 15056008, 21627308, - 10587094, }, + -186831, -354335, -231928, -195421, -302795, -255551, -139586, -156766, 88047, 347892, + -710817, 8590, -49392, -223338, -341450, -1176821, -1245541, -1842541, 2450279, -165356, + -944893, -646393, 803159, -1430224, -251256, -532576, -322123, -446677, 2136746, 959925, + -1288490, -676457, -586263, 118112, 25770, -350040, -893353, -1471026, 1803886, -901943, + 1157494, 788127, 1047972, -418759, 1404454, -8549132, 743029, -985695, 326418, -848256, + 40802, -947040, 100932, -2246268, -1413044, -176094, -1194001, -283468, -498216, 2327872, + 173946, -2561948, 2261300, -788127, 1217623, 109522, 878321, -2549063, -762357, -629213, + 313533, 517544, -259846, -723702, 936303, -1340030, -255551, -781684, 347892, 201863, + 1103807, 998580, -1157494, -639950, -23622, -408022, 886911, 49392, 758062, -700080, + -732292, 1088774, 4417374, -1859721, 1979980, -779537, 732292, 17180, 1052267, -395137, + 287763, 481036, 554051, 605590, 996432, -186831, 143881, 1814624, 1350767, -3416647, + 719407, -392990, 204011, -1127429, 807454, -1432372, 1509681, 1288490, 633508, -133144, + -444529, -485331, 1073742, 1028645, -416612, 283468, 1836099, -616328, -21475, -554051, + 227633, 345745, -38655, -446677, 865436, 199716, -253403, 17663054, -1191853, 2525441, + 34360, 852551, 418759, 667867, 483184, 1756642, -886911, 781684, -261993, 360777, + 1009317, 1511829, 659278, 347892, -605590, 1378685, -863288, 564788, -354335, -1318555, + 231928, 543313, 139586, -369367, 210453, -423054, 998580, -1806034, 526134, -373662, + 586263, 36507, -2523293, -852551, 360777, 468151, 397284, -401579, -496069, -461709, + 468151, 1063004, -322123, 10552735, -12588549, 2450279, -3062312, 1595580, -1999307, 1468879, + -2714419, -858993, -1690070, -360777, -1413044, 57982, 2422362, 3517578, 1462436, 732292, + 30065, 1058710, 2527588, 1793149, -1198296, -1473174, -1904818, -962073, -1110249, 27917, + -201863, -238371, 27917, 470299, -893353, 1030792, -1168231, -1606318, 539018, -103079, + 94489, 236223, -1078037, -1290638, 350040, -820339, -1000727, -277025, 126702, -24412594, + 4733054, -1333587, 502511, 414464, -2149631, -1024350, 1816771, -423054, 49392, 2063732, + 586263, -932008, -1627793, 1406602, 12885, -1937030, -2744484, -3901978, 1105954, -1791001, + 270583, -646393, 590558, -487479, 146029, -2070174, -2070174, -1309965, -644245, -1322850, + 242666, -687195, 566936, 2188286, 266288, 307090, 1382980, 328565, 223338, -137439, + -425202, -1591285, -485331, 266288, -408022, -29152090, 10771778, -2808909, 3388729, -1799591, + 2411624, -1479616, -500364, -2566243, 1795296, -3017215, 1840394, -584116, 2617783, -3790309, + 848256, 3384434, 901943, -2989297, -1146756, -1825361, -843961, 1037235, 446677, 753767, + -577673, -1054415, -1524713, -1428077, -238371, -1625645, -399432, -1511829, -1159641, -4105989, + -1262720, -614180, 94489, 51540, 1279900, 564788, 1256278, -178241, 1481764, 352187, + 8590, 3775276, 12799003, -3339337, 5757404, -3253438, 1608465, -3519726, 3030100, -107374, + 3287798, -90194, -182536, 3262028, -380105, -264141, 2838974, -1155346, -2360085, -3792456, + 3646427, -111669, 2531883, 457414, 1829656, 1007170, -2183991, 1161789, 1047972, 30065, + 1299228, 2003602, -2175401, 493921, 38655, 0, -1206886, -392990, -1181116, 551903, + -165356, 1196148, 3064459, 324270, 1599875, -55835, 382252, -103079, 545461, 1419487, + 38317552, -9300752, 3745212, -1702955, 3324305, -1279900, 2574833, -1245541, 953483, -3588445, + 1829656, -3418794, 2817499, -949188, 899796, -895501, 3921305, 665720, 1054415, -1694365, + 2589865, -79457, -1067299, 2276333, -1567663, -2413772, 146029, -648540, 1299228, 141734, + -311385, -680752, 442382, 75162, 547608, -1602023, 476741, -616328, 2811056, -347892, + 1372242, 416612, 1157494, 2231236, -1370095, 283468, 521839, -526134, 1655710, 3094524, + -19939386, 7696582, -6234145, 3474629, -3163244, 914828, -4127464, 2469606, -1715839, 3502546, + -515396, 1447404, -3307125, -1496796, -311385, -1312113, -1187559, 4050154, -3193308, 380105, + 1861868, -3994320, 895501, 1198296, -1050120, 1159641, 356482, 597000, -2527588, -382252, + -863288, 1337882, -1292785, 652835, -2954938, -758062, 2042257, 841814, 605590, -914828, + -493921, -2383707, -2398739, 1086627, 420907, -294205, -390842, -395137, 165356, 10737, + -530428, -676457, -32205812, 10316511, -5843303, 1275605, -695785, 1608465, -2564096, 2409477, + -1221918, -1088774, -474594, 1685775, -1168231, -1692217, 944893, 3414499, -644245, -47245, + -6195491, 319975, -45097, 2746632, -1097364, -659278, -4760971, -1791001, -77309, -124554, + 1477469, 1995012, -3620658, -3423089, 1947768, 302795, -3721589, -2987150, 1239098, 556198, + -324270, -335007, -1490354, 1183264, -539018, 281320, 83752, -2126009, -893353, 768799, + -3006477, -1702955, -670015, 367220, -667867, -32100586, 14020921, -7941395, 5804649, -5572720, + 2570538, -6322192, 1290638, -4157528, 6247030, -3339337, 2106682, -498216, -107374, -3027952, + -992137, -1305670, 5624260, -1191853, 2787434, 4602058, 2521146, 609885, -801011, 1045825, + -1202591, 2549063, 2353642, 289910, -1464584, 380105, 292058, -1810329, -983548, 1269163, + 1705102, -1492501, -1617055, -1507534, -115964, -650688, 597000, -1447404, 781684, -2248416, + 423054, -1245541, -315680, 197569, -1120987, -1226213, -1775969, -1455994, 12083890, 12545599, + -4352950, 4312147, -4795331, 974958, 1735167, 332860, -1784559, 2499671, 807454, 5085242, + 2772402, 5714454, -618475, 3448859, -659278, 2272038, 3137474, -204011, -3796751, 4028679, + -184684, 1799591, -663572, 176094, 790274, 4879083, 940598, -2377265, -622770, 794569, + -1159641, 3715147, 1760937, -386547, -672162, -1842541, 1831804, -1806034, 2272038, 2276333, + -1307818, 1372242, 1357210, 719407, 103079, 3590593, 2390149, 2665027, 165356, 448824, + 1395864, -592706, -17180, 36290328, -12700218, 4660040, -5830418, 4286378, -3770981, 5456756, + -1608465, 416612, -3755949, 8096014, -929860, 7307887, 661425, 1380832, -4569845, 1864016, + 7408819, -2059437, -5819681, 1039382, 489626, 2946348, -4123169, 3708704, 206158, 446677, + -133144, -4080219, -983548, 826781, -4801774, 962073, 2319282, 1810329, -1157494, -289910, + 81604, 2480344, 989990, -298500, -758062, 1949915, 1561221, 4687957, 1475321, -588411, + 2858301, 1116692, 36507, 934155, 2250563, 1365800, 577673, 388695, 12008729, -17538498, + 10378788, -7838316, 3178276, 1110249, -880468, -725850, 1984275, -4458176, -2892661, -2336462, + -1872606, -6066642, 2942053, -5634997, -330712, -4516158, 1531156, -3408057, -2763812, -1380832, + 4960687, 674310, 4821101, 2561948, 3262028, 4861903, 126702, -648540, -880468, 1355062, + 3624953, -335007, -412317, -2527588, 1767379, -319975, -1644973, 1382980, 1011465, 3919158, + 1449552, 1848983, -2935610, -1292785, -319975, -508954, 1754494, -5607080, 1050120, -1365800, + -1114544, -1722282, -2141041, -642098, -2121714, 820339, -1535451, -191126, -3135326, -37192268, + -8231305, 1569811, -7164006, -3032247, 163209, -347892, -6128919, 1589138, -6105296, 49392, + 4660040, -1017907, -940598, 2514703, 1584843, 2564096, 12885, 3128884, -1943473, 805306, + 3618510, -371515, -382252, -2579128, 3435974, -2886218, -1672890, 831076, 1301375, 2630668, + 8293582, -2415919, -1524713, -3738769, 53687, -2778844, 487479, -1166084, -4125316, -339302, + 4928475, 1342177, -3579855, -1788854, 1533303, -2160369, -2753074, 408022, -1380832, 223338, + 382252, 3131031, 300648, 1503239, 687195, -2755222, -1535451, 1632088, 1428077, -1136019, + -45475112, 37445672, -13149042, 11087458, -8248485, 6219113, -2418067, 3938485, -4389457, 2619930, + 3096672, 4460324, -2974265, 5409512, 2682207, 9249212, -1483911, 712965, -4954245, 1172526, + -1748052, -3163244, -3837553, -4479651, -4063039, 5954972, -283468, 7164006, 1874753, 1236951, + -128849, 826781, -3204046, 414464, -1168231, 1406602, 4299263, 661425, 1421634, 141734, + 455267, -3384434, -1782411, -246961, -240518, 311385, -985695, -3139621, 85899, 3096672, + -1024350, 813896, 955630, -2811056, 1853278, 639950, 1028645, -702227, 324270, -448824, + -811749, 26598732, -3944928, -8413841, -2841121, -1672890, -1247688, -7393786, -3828963, 2226941, + 1413044, 2278480, 2800319, -4926328, 2164664, -861141, 1939178, 8244190, -8078834, 2967823, + 2959233, 2340757, -1995012, -4608500, 3818226, 1236951, 2765959, 5134634, 126702, 7026567, + 717260, 3341485, 388695, 2312840, -1775969, 2746632, 1995012, 2628520, -846109, 968515, + -85899, 3330747, 4043712, -5686537, 7969312, 813896, 2302103, 491774, 1471026, 1675037, + -1559073, 4866198, 2641405, 335007, 4408784, 1990717, -2287070, -40802, -1505386, -1552631, + -1213328, 947040, -264141, 433792, -38655, -4647155, 21120502, 1979980, 4413079, -5280663, + -891206, -13333726, 3358665, -493921, -9032316, 7840463, -4112431, 431644, 5763846, 2697240, + 4357245, -3081639, 1988570, -4086662, 199716, -3468186, 1475321, -5357972, 8033737, 5888400, + 4786741, 5626407, 1316408, -1627793, -3324305, 1720134, 4447439, 191126, 3060164, -1962800, + 693637, 3066607, 2121714, 2778844, 266288, 1118839, -249108, -1662152, 1913408, -1093069, + 929860, 947040, -1827509, 2765959, -3433826, 3313567, -1582696, 2396592, 3420942, -3927748, + 457414, 661425, -1642825, -3062312, 2323577, -5085242, -4039417, 2690797, 1080184, 1331440, + 1028645, 3416647, 3148211, 33006824, -27597312, 9244917, -6927782, 2330020, 8519068, 6895570, + -4687957, 8282845, 4647155, 4962835, -3539053, 2254858, -1838246, 9844065, 2699387, 2701535, + 3790309, 4099546, 2609193, 2761664, -8233453, 1189706, -14832670, -5265630, -1423782, -8594230, + 2076617, 4406637, -3242700, -4728759, -5448166, -5325760, -2811056, 2834679, 2308545, -7675107, + -8748848, -822486, -4479651, 2216203, 1896228, 665720, -657130, 3951370, -2196876, 34360, + -605590, -2025077, -5622112, 4148939, 7331509, -1187559, -949188, 3262028, -5214091, 6090264, + 1597728, -3405909, -143881, -3186866, -1273458, -981400, -2145336, -811749, -1460289, -4599910, + -51460152, 4840428, -4810364, 1632088, 4980015, 3496104, 10211285, -4546223, -599148, 586263, + 12272869, 4086662, -10028749, -6661495, 5289252, 7136088, -2083059, -3060164, -429497, 3146064, + 7423851, 7501161, -330712, -14179835, -4239133, -1711545, -1883343, 7793218, -3917010, 4432406, + 257698, -1168231, -7419556, 283468, 5549098, -9519795, -5604933, -2463164, -1806034, -4672925, + -3843996, -8927090, -1773822, -6152541, -118112, 962073, 6053757, -4550518, -2952790, 221191, + -777389, 652835, -5506148, 1784559, 1902671, 345745, 182536, -4385162, -3788161, -2383707, + -1247688, -659278, -7005092, 1063004, 1971390, -3345780, -6395207, -29828548, 32169306, -4303557, + 2257005, 7784628, 9255655, -6528351, 4571993, 1988570, 5796059, 4052302, 8083129, 4726612, + -5113159, -8562017, 1466731, 9661529, 18912888, -4224101, -6158983, 5201206, 3229816, -3268470, + -9032316, -1565516, -1675037, -8022999, 7477538, 9021579, 304943, 2349347, -10737, 7170448, + -5181878, -16200617, 7125351, -1642825, 5677947, 2997887, 371515, -3743064, -6225555, 4760971, + 5336497, 4168266, -620623, 27917, 5843303, 3590593, 1872606, -3034395, 4924180, 4410932, + -575526, -865436, -2710124, 3697967, 186831, -7765301, 6790344, 4417374, -1451699, 2325725, + -953483, 616328, -96637, 2388002, 5815386, 2388002, -974958, -1627793, -186831, 9120363, + 461709, -6790344, -14093935, 3569118, -657130, -11557757, 4030827, -3725884, 618475, -4277788, + -3390877, 3848291, 8967892, 1264868, 11854110, 5527623, -5894843, -7630010, 12953621, -5418101, + -380105, 1342177, -12094628, 100932, 6431714, -6835441, -1855426, 8319352, 517544, 4447439, + 122407, 5557688, -914828, -3408057, -506806, 7320772, 9554155, -2911988, 1906966, 1900523, + 6343667, -3566970, -725850, 1488206, -1683627, 4395899, 1795296, 597000, -2267743, 3573413, + 3584150, 453119, 64425, 3021510, 4179003, -4915590, -169651, 1711545, 2201171, -2388002, + 1956358, 67632848, -5948530, 1617055, 4694400, -5525476, -9891310, -5553393, -2068027, -11345156, + -12189117, 1466731, -10730976, -4458176, -2716567, -2282775, 7462506, 8555575, 3098819, 17373142, + 3616363, -7876970, 15105400, -972810, 10866267, -2808909, -508954, -9098888, 942745, 8961449, + 296353, -3650722, -1047972, 1346472, -1522566, -1309965, 3884798, -7148973, 3715147, 1627793, + -2989297, -6753836, -4269198, 6066642, 6146098, 7043747, -10402411, 6706592, 2383707, 231928, + 1194001, 1597728, 1928440, 1941325, -219043, 1103807, 6594923, -1127429, 3068754, 3274913, + -1644973, 5400922, 6382322, 1492501, 360777, 5723044, 4563403, 3453154, -39795020, -66496832, + 23562190, -2035815, 9571335, -11924977, 148176, -13750338, -2145336, -19666656, 7939247, 8589935, + -854699, -1825361, -672162, 1488206, -5065914, -16784732, 29897268, 1808181, -4348655, 10118943, + 1382980, -5763846, 14093935, 15921444, -7441031, 9292162, 1361505, -2314987, -15687368, -8555575, + 11353746, -6337224, 1153199, -1041530, 7535520, -12597139, -14465450, 1767379, -350040, -9605694, + 5117454, 972810, -6448894, 3985730, -7056632, -5551245, 1971390, 2323577, -266288, -1868311, + -3672197, 3736622, 5854041, 837519, 1393717, -1958505, -2525441, 5587753, 2147, 1204738, + -6468221, -1380832, -4563403, 3152506, 4017942, 23622, 3165391, -21440476, 63735168, -28552942, + 4599910, 4028679, 15835544, -2177549, 10033044, -10245644, 418759, -19514184, -3923453, -21475, + 7593502, 1187559, 7816841, -5658620, -12008729, 1430224, -17952964, -18745384, 294205, -6204081, + -599148, 1535451, 2413772, -4679367, -3362960, -6704444, -10378788, 4037269, 4612795, -13176960, + -6244883, -16546362, -36507, -7301445, 5639292, 6970732, -13939316, 2177549, 10926397, 10166188, + -5579163, 3743064, -4217658, -1853278, 2821794, -6083821, -1681480, 5845451, 4116726, 4054449, + 4447439, 2716567, -1823214, 3947075, 2098092, -2660732, -564788, 7937100, -1245541, -3335042, + -1584843, 3448859, -3788161, -7621420, -1073742, -2428804, 1488206, 2070174, -1730872, -53369264, + -16930762, 5381594, -8927090, 6977175, -4069482, -478889, -16155519, -19245748, -3139621, -7086696, + 7221988, 1692217, -2888366, -39178692, 18779744, 850404, 16280074, 20504174, 13911399, -20723218, + -5574868, -2469606, -5695127, 3848291, 4138201, -852551, -8027294, 7672959, -14340896, -7803956, + 11448235, 130997, -5916318, 13707388, -384400, 14405320, -5860483, -2864743, 1047972, 4185446, + -11398843, -8351564, -2624225, 7915625, -3816079, 891206, -4133906, 5136781, 6242735, 895501, + -431644, -12837657, -2115272, 5585605, 5942088, -4342212, 6734509, 2031520, -2997887, 1507534, + -8647917, -2901251, -6126771, 4597763, -197569, -2323577, 794569, -13737453, -1022202, 1932735, + 5134634, 34452080, 12047383, -19662360, -2832531, -8080981, 7709467, -11585674, 10881300, -1591285, + 12545599, 8995809, 15092515, -18764712, 24019604, -13642964, 14304389, -7125351, 8815420, 2293513, + 7569880, -11699491, -27975270, 11862700, 20489142, -6433861, 8757438, -9320079, 2976412, -5832566, + 21494164, 629213, -1486059, 5834713, -9582072, -6210523, -5385889, 10048076, 654983, -2488934, + 564788, -901943, 14907831, 10557030, -4831838, 5598490, 5997922, -5001490, -2931315, -4389457, + -10363756, -496069, 734439, -448824, -3500398, -9990094, 38655, 17935784, 9633612, -5942088, + 9889162, 122407, 307090, 9064528, 4591320, -6844031, 3491809, 3027952, 8753143, 11229192, + -7462506, 4909148, 6255620, 71146136, -58815284, -10249939, 2488934, -1597728, -16557099, 4930623, + 3811784, 22370338, -7889855, 3990025, 18393198, -6442, 10913512, 36612448, -8450348, -2957085, + -19701014, -18627274, 468151, 5581310, -8506183, 2948495, 32403380, 18356690, 2385854, 635655, + 2340757, 17510582, -15436112, -7314330, -1146756, 8708046, -1750199, 1591285, -7958575, 2224793, + -13907104, -8699456, -10574209, -534723, -9491878, 1490354, -16690243, 6844031, -33084134, -9159018, + 4260608, 5289252, -1466731, -8364449, 2308545, 152471, 3708704, -9824738, 3770981, -6126771, + -6163278, -15386720, -11025181, -4116726, -2040110, -253403, 2216203, 3637837, 622770, 1163936, + -8939974, -1172526, -10896332, -2778844, -1153199, -1005022, -46145128, -32396938, -3197603, -7284265, + 22879290, -135291, 3547643, -30629560, 710817, 3146064, 889058, 1344325, 17121888, -23293756, + 3936338, -5738077, -16172699, -8446053, 13443248, -5961415, 10816875, -4952098, 5965710, 2619930, + -3118146, -2783139, 6882685, -2059437, -807454, -20169166, 8781061, 7511898, 7432441, 8252780, + -17817672, -18784040, 9678709, 14259291, -19069654, 5690832, 2061584, 14830522, 8613557, 395137, + 10185515, -6796786, -11652246, -2843268, -21960168, -16866336, -2207613, -1990717, 2987150, -11454678, + 3186866, -9442486, -27844272, -9311489, -7705172, -28402618, -180389, -5708012, -3326452, 1814624, + 8379481, -9283572, 5242008, 2156074, -12105365, -9107478, -9113921, -3231963, -2282775, -28630252, + 42610372, -22943716, -10054518, -13552769, 2965675, 3373697, 5886253, -3032247, 18300856, 13868449, + -13975824, -24202140, 8452496, -9229885, 21492016, 1586990, 8856223, 11360188, -8901320, -8265665, + 28673202, -16924318, -4651450, -8647917, 403727, -3620658, 3240553, -5042292, -2611340, -22632330, + 19228568, -6990060, -2480344, 23553600, -16870632, -20332376, 1093069, -9186935, -14164802, -6442, + -7662222, 5446019, -30189326, -9616432, -8059506, -523986, 9463960, 347892, 1153199, 5602785, + -5976447, 4378719, 5942088, 6300717, 5555540, -3384434, -7262790, -5022965, 6382322, -17304424, + -5001490, -3672197, -5553393, 12191265, -9088151, -11811160, 11327976, 4520453, 6242735, 15680926, + -6912750, -4191888, 5808944, -7239168, -60080152, 28559386, 30872224, 15300821, 13853417, -11602854, + 14108968, -26575110, -103079, -31056908, -4876936, -14173392, 13005161, -15438260, -12822625, -4372277, + -22905060, 5332202, -10952167, 8566312, -21534966, 33266670, -12199855, 15081778, -15013058, 178241, + -15028091, -5761699, 6947110, 20800526, 23888608, -13664438, -738734, -8617852, -13885629, -11297911, + -36129264, -2205466, 5117454, -34608848, 12167642, 5134634, 8323647, 14450417, 9259949, 3846143, + -11912092, -5175436, -13183402, -7885560, 5939940, -28179280, 9775346, 3539053, 1015760, -14272176, + -8070244, 5046587, 20776904, 7164006, 4926328, -10372346, 8351564, -777389, -10711648, 612033, + -7851200, -13853417, -6478958, -5164698, -10857677, 9313637, 6549825, 6790344, 5400922, 48462264, + -34196528, -14613626, -4827543, -639950, 23280870, -4986457, 7226283, -14199162, 6786049, -8980777, + -39313984, -27028230, -10548440, 13464722, -2308545, -21773336, -20714628, -42576012, -14304389, 5048734, + 5010080, 1617055, -5059472, -2800319, -13816910, 3135326, 4750234, 6902013, 886911, -2175401, + -5828271, -20349556, -5920613, -4771709, 9328669, -2274185, -16879222, -6448894, 3824669, -18159122, + 2257005, -18691698, 9513353, 14510547, -14693083, -26944478, -6088116, -8437463, -13228499, 1372242, + 1535451, 2774549, 5699422, 506806, -11506217, 17117592, 25301652, -12375948, 9932112, 4739497, + 11474005, -18580028, 6195491, 2920578, 5791764, -26718992, 20605106, 3365107, 1400159, -2409477, + -16698833, 5229123, 798864, 5446019, 79901424, -44201656, 4389457, -4211216, -9143985, -32948842, + -1436667, -1619203, 27382564, 12547747, 54956256, -21519934, 2510409, 6128919, 13501230, -5441724, + -2068027, 22241488, -13415330, 31937376, 19791210, -44171592, 42691976, 14931454, -14693083, -10954314, + -16054588, -8637179, 3599183, 1939178, -11343009, 28011776, 4206921, -13471165, -11257109, 2675765, + -14063870, -26089778, 934155, 15429670, 6884833, 18766860, -8038032, 5740224, 20989506, 28941638, + 7653632, -30283814, 10703059, -9880572, -15745350, 4183298, 13627931, 7106024, -2746632, -27556510, + -22954452, 33479270, -3425237, 25814900, 4069482, -10499048, 13926431, -22817014, -8768176, 10700911, + -1576253, 22265110, -16537772, -35742716, -8360154, -1629940, -9030169, -8074539, 24567212, -91016800, + -59569048, 20192788, -31535798, 8446053, -16363825, -55568288, -41414224, 71290016, -34591668, 31507880, + 17295834, -20194936, 15695958, -12006581, 21638046, 24051816, -2830384, -8450348, 42277512, -15395310, + -50304804, -466004, -21754010, 3743064, 3470334, 28138478, 14416058, 4844723, 13230647, -14510547, + -1161789, 30930206, 19432580, -7084549, 7142531, -29719026, -45118632, -33685428, -23807004, -7632157, + -7391639, 6871948, -5229123, -13516262, 27066884, 6156836, -22295176, -21071110, -6807523, 6951405, + -22428320, 7299297, 25230786, -1745904, 8802535, -19262928, 12998719, 9036611, 2241973, 9270687, + -16857746, -25675314, -35512936, 16331613, 12783970, 221191, 12777528, 1690070, -16484084, -4069482, + 843961, -28177132, -2435247, -43115028, -108757160, 35147864, -9927817, -8497593, 17813376, 3229816, + 9350144, 45268956, 26590142, 33797096, 16458315, 46684148, -9764608, -48556752, 5654325, -6882685, + -21386790, -43250320, -19393924, 34733400, 7033009, -4202626, 6388764, -4486094, -672162, 28924458, + 2725157, 9603547, -5793911, 5783174, 29411936, -10286447, -21674552, 13655849, -37602440, -38570952, + -24670292, -6575595, -68719, 13219909, 34735548, -1455994, -13413183, -37735584, -59526100, -22664542, + -9564892, -5615670, -1413044, 19428284, -27812060, 46076408, 24084030, -6822556, 12899934, -21283710, + 2478196, -1911261, 21354578, 40789304, 28129888, -27751932, -11626476, 4829691, -5046587, -7795366, + 1277753, -15476915, -42726336, -5465346, -8628589, -5145371, 5656472, -18083960, -6317897, 46284716, + 46795816, 17667348, 32152126, 24017458, 48930416, -38049116, 50745040, -56081536, -7803956, 57793080, + 77951512, 18558554, -2302103, 30313880, -20716774, -24152748, 57022132, 11716671, -5980742, 16237124, + 46282568, -8553427, 29298120, -5800354, -8624294, -2214056, 22151294, -47729972, -3871913, 27812060, + -8965744, 5757404, -15693810, 13746043, 42507292, -33874408, 14237817, -7705172, 15380278, -16071768, + 29237990, 5699422, 11952894, 14416058, -42840152, 25505664, -60518236, -9174050, 37626060, 7481833, + -20295868, 42973296, -11491185, -19855634, 30492120, -7801808, -6152541, -472446, 19138374, 1565516, + 6429566, -29910152, 14261439, 7655779, 68661496, -45606112, -20298016, 10986526, -11491185, 20523502, + 20046760, -18141942, 47437912, 24715390, 89990304, -55656332, 2463164, -8531953, -14716705, 2332167, + -20282984, -8117488, -66163972, -54911156, -55177444, 19151260, -11480448, 18983756, -12627204, -39449276, + 64063732, 45466524, -29886530, -24174224, -35317516, -6468221, 13516262, 22093312, 25679610, -839666, + 19758998, -4728759, -25739740, -29847876, 18904298, -12936441, 58037892, 37892348, 53429392, 8875550, + 19005230, 54511724, 36161476, -10267119, 8948564, -897648, -169651, 7176891, -25692494, -16226386, + 8564165, -29300266, -33002528, 32695438, 34009700, -36687612, -2512556, 70461088, 46366320, -382252, + -24096914, -2804614, 12627204, 15182709, -10956462, -23061826, 28787018, 556198, 5516886, 24726126, + 25679610, -26115548, 10153303, -1479616, 8967892, -41661184, 5471789, 44957572, -43971876, 71509056, + 26852136, -10821170, -3444564, 21646636, -28284508, -36500780, 29233694, -43396348, -55787332, 13372381, + -30438434, -39011188, -20822002, 34954592, 87578680, 35493608, -49334140, 89590872, 9457518, -15470472, + 15277199, -54284092, 12393128, 6045167, -39114268, 31574452, -11334419, 5160403, -28490666, 14016626, + -26149908, 44568876, -55583320, -21466246, -19978040, 24472724, 28726888, 25172804, -30148522, 6923488, + -31494996, -10260677, 14832670, 36786396, 16406775, -19327352, 36045512, 17349520, 28759102, 225486, + 33696164, -17255032, 17892834, -55508156, 58536108, -7252053, 6629282, -18079664, -33253784, -622770, + 18075370, 45730664, 11918534, -59987808, 22061100, -25909390, 44588204, 1264868, -21311628, 6124624, + -19518478, 6541235, -38442104, 9674414, -146872848, 8398809, 26753352, 60275572, 21081846, -89661736, + 123768072, 46514496, -53901840, 21908628, 123147448, 29072634, -27496380, -1836099, -71487584, 39573828, + 5488968, -16945794, 12601434, 26989574, -45584636, 27311698, -57610544, 8156143, -52289080, -47053516, + -18668076, 24861418, 37185828, -24867860, 32839320, -51163796, -5336497, 61482456, 7849053, -19580756, + -4602058, 13569949, -11343009, -37400576, -41382008, -3850438, -17555678, 45030584, -57741540, 66024384, + 23160612, 10247792, -18562848, -4945655, 32594506, -21863532, 43057048, 12071006, 39361228, -11126113, + -17549236, -61018600, 25209310, -4099546, -61403000, 21900038, -358630, 42073500, 68266360, -24575802, + 19235012, 33992520, 38785704, 9386651, -13743895, -1318555, -72357312, -1451699, 15056008, 21627308, + 10587094, }, { -182536, - -236223, -500364, -326418, -137439, -575526, -801011, -73014, -431644, -382252, 109522, - 214748, 113817, 68719, -304943, 766652, -88047, 429497, -1116692, -1288490, -15032, - -2291365, -904091, 942745, 92342, 277025, 184684, 1599875, 23622, 682900, 120259, - 1043677, 66572, -809601, -1120987, -1318555, -2293513, 165356, -223338, 81604, -940598, - -156766, 646393, 790274, -530428, -622770, -9895605, 953483, -2156074, -103079, -783832, - -1453846, 805306, 3341485, 40802, 1715839, -1864016, -468151, 1314260, -1198296, 405874, - 2334315, -1348620, -429497, -614180, -113817, 367220, -463856, 691490, 463856, -502511, - 893353, -502511, -17180, -1857573, 15032, -161061, 470299, 354335, 901943, -770947, - 1529008, -195421, 1277753, -375810, 4295, 987843, -289910, 730144, 328565, 745177, - 158914, 708670, 4215511, -3240553, 2072322, -2553358, 1352915, -1228361, -1213328, -715112, - -676457, 790274, 897648, -3169686, -143881, 506806, -289910, -500364, -1846836, -646393, - 1365800, 2061584, 1043677, 3229816, 678605, -530428, 685047, 590558, -298500, 1082332, - 2299955, -833224, 4295, 1007170, -2147, -180389, -1599875, -23622, 850404, 702227, - 158914, 85899, -515396, 616328, -34360, 111669, 57982, 15255724, -904091, 1406602, - -874026, 1060857, -1067299, 326418, -195421, -186831, 957778, -719407, -2667175, 876173, - 371515, 932008, 1952063, 1075889, 758062, -169651, -1507534, -468151, 824634, -137439, - -167504, 1634235, -1883343, -549756, 57982, -259846, -397284, 824634, 912681, 1090922, - 380105, 438087, -322123, 1483911, 30065, 1155346, 854699, -178241, -47245, 586263, - 107374, -229781, -49392, 11108933, -10692321, 1627793, -2916283, 1498944, -231928, 1067299, - -1056562, 1958505, -886911, 1166084, -2576981, 49392, -1507534, 369367, -264141, -403727, - -712965, -1928440, -219043, 165356, -949188, 1475321, -717260, -1174674, -1432372, 779537, - -923418, 2117419, -249108, -57982, 622770, -57982, 27917, -1039382, -833224, -296353, - 208306, -444529, -953483, 760209, 584116, 1423782, -358630, 414464, -216896, -26268020, - 2959233, -2070174, -53687, -410169, -2304250, 2265595, -695785, 105227, 891206, 197569, - 2639258, -240518, -1234803, 3191161, 1219771, 2871186, -176094, -4050154, -2476049, -2005750, - 1513976, -2162516, 57982, -852551, -811749, 135291, 496069, -700080, -1355062, -1022202, - 680752, 798864, 1604170, -238371, -356482, -208306, 949188, -1294933, 193274, 373662, - 672162, -1071594, 899796, -1277753, -326418, -33159296, 11849815, -4945655, 5413807, -3962107, - 2413772, -4284230, 2241973, -3208341, 1065152, 2192581, -15032, 775242, 1975685, -1464584, - 1380832, -1846836, -1423782, -3949223, 3365107, -2357937, 2207613, 79457, -154619, -3783866, - -277025, 620623, -670015, -212601, -283468, 1451699, -377957, -1166084, 1013612, 272730, - -624918, -4295, -105227, 55835, 513249, -1071594, 2403034, -281320, -1769527, -238371, - -1041530, 1760937, 15156940, -3096672, 5828271, -2480344, 2083059, -1982127, 7226283, -1226213, - 3910568, -292058, -161061, 1108102, 111669, -4735202, 1219771, -289910, -2093797, -377957, - 188979, -5987185, -66572, 667867, 2044404, 115964, -1069447, -73014, 2201171, 554051, - -949188, -1896228, 3251290, -1786706, 10737, -2746632, -240518, 186831, 588411, -528281, - 852551, 1449552, -1163936, 1189706, 21475, 989990, 21475, 1640678, -670015, -244813, - 39917428, -11291469, 1990717, -1687922, 2871186, 304943, 231928, -5055177, 2649995, -2050847, - 1894081, 852551, 1095217, 2005750, 2935610, 702227, 1187559, -4196183, 1902671, 1952063, - -2637110, -264141, 3287798, 2265595, 2190433, 4612795, 2660732, 932008, 1391569, -1307818, - 1614908, -77309, 2725157, 3536906, -212601, 1400159, 2267743, -534723, 938450, -2486786, - -519691, 3131031, 281320, -1644973, -442382, 1178969, 2312840, 186831, 1408749, 2669322, - -21348134, 8770323, -6322192, 3878356, -3813931, 4602058, -3234110, 27917, -2765959, -3427384, - -4670777, 135291, -2817499, 1120987, 1406602, 3240553, -5718749, 3262028, -1445257, 4602058, - 955630, -491774, 285615, 156766, -1226213, -1181116, 644245, -2512556, 1423782, 2486786, - -3766686, -1050120, -289910, 1243393, -1473174, 3639985, -4112431, 534723, -60130, -12885, - -1791001, 12885, -1136019, 760209, 122407, -77309, -1269163, -498216, -2594160, -1157494, - -163209, 274878, -34308200, 10703059, -7123204, -601295, -1548336, 2001455, -6021544, 274878, - 1756642, 1406602, -2175401, 1022202, -2744484, -4475356, -1795296, 388695, -2692945, 8907762, - 146029, -2677912, -925565, -3195456, -1518271, 2602750, 1565516, 3423089, -416612, 1428077, - -2113124, 657130, -1917703, -803159, -1153199, 420907, 1045825, -758062, -1812476, 242666, - 588411, 2297808, -496069, -1105954, -3296388, -2841121, -1314260, -710817, 560493, 238371, - -1370095, -751619, 204011, 983548, 586263, -33077690, 15260019, -7451769, 6708739, -3764539, - 3897683, 1855426, 1058710, -3908420, 264141, -2070174, 365072, -5061619, 1644973, 2909840, - 792421, -5370857, -2789581, -2776696, -2939905, -1941325, 3528316, 749472, 2418067, 1967095, - -1140314, -354335, -4161823, 4945655, -1672890, -652835, 96637, -1224066, -1795296, -1975685, - -654983, -4273493, 989990, -2325725, 1413044, 1320703, 2130304, -766652, 10737, -2811056, - 760209, 1866163, 210453, -556198, 135291, 1436667, 2044404, 895501, 10788958, 13318694, - -5862631, 3639985, -1726577, 1425929, -1305670, 856846, 1282048, 6564858, -2171106, 2757369, - 6204081, -1569811, -120259, -940598, 1604170, 3223373, 3352222, 4267050, 1267015, 3639985, - -770947, -2031520, -6987912, 1574106, -938450, -3508988, -2405182, -55835, -526134, 2366527, - -176094, -4075924, -4112431, 1209033, -3549791, 556198, 2422362, -3279208, -2065879, -1365800, - 1829656, 1552631, 64425, -392990, 2673617, 577673, -781684, 1045825, -1967095, 313533, - -944893, -1584843, -901943, 38031936, -13230647, 7181186, -4956393, 7138236, -5022965, 4376572, - -1621350, 4445291, 1090922, 3126736, -3627100, 3730179, -1264868, -3103114, -307090, -3335042, - -5304285, -2813204, -564788, 2688650, -3627100, -4879083, -5952825, -1082332, -508954, 4760971, - 2628520, 3053722, -2083059, 2465311, -1879048, -1876901, -1009317, 3131031, 2731599, 828929, - -6442, -135291, 100932, -906238, -485331, 2156074, 435939, 5338645, -2046552, -672162, - -4460324, 2899103, -1159641, -725850, -1047972, -309238, 264141, -777389, 10803990, -16200617, - 9691594, -5985037, 7554848, 38655, 4735202, 1425929, -7035157, -3270618, -2291365, 998580, - 1913408, 1125281, 8199093, -4419522, 6575595, 1247688, 940598, -4292820, -835371, 5703717, - -246961, -4614943, 5514738, 4243428, 1032940, -2098092, -1632088, -345745, -253403, 2624225, - -1103807, 1239098, -2899103, -543313, 1866163, -4230543, 1791001, -1565516, 1685775, -1136019, - -257698, 5265630, 2347200, 3053722, -96637, 1337882, 2016487, -259846, -1282048, -2141041, - 912681, 1163936, 1967095, 2334315, 661425, -373662, -2123861, -908386, -2145336, -41004052, - -8693014, -1606318, -7267085, -3324305, 5551245, 2063732, -2269890, -2095944, -5362267, -3758097, - -4443144, -4954245, -4166118, -2871186, -3811784, -6184753, -5321465, 1324997, -5392332, 1097364, - -7084549, -324270, -3208341, -2725157, 5278515, -1133871, -3266323, 3169686, -4634270, 3377992, - 717260, 3592740, 2368675, -633508, -2437394, 3803194, -506806, -1224066, 3526168, -2209761, - -5836861, -6665789, -2001455, 1464584, 867583, -2383707, -605590, -2252710, -32212, -487479, - -100932, 3246995, 1093069, -3343632, -1445257, -88047, 2027225, -30065, 3229816, 395137, - -47652664, 41418516, -16904992, 11458973, -10829760, 2594160, -5312875, 6947110, 1340030, 740882, - -3371549, 4666482, 998580, -8654359, 910533, 1157494, -4254165, -6713034, 6579890, 7958575, - -2540473, -2274185, 1430224, 3577708, -2095944, 7206955, -130997, 1694365, -5239860, -2085207, - -3066607, 4608500, -936303, 839666, 1181116, -2974265, 4808216, 4232691, 1382980, 1290638, - 5632850, -3582003, -697932, -964220, -3766686, 571231, -2377265, 674310, 98784, 45097, - 4692252, -493921, -766652, 648540, 493921, 2559801, -2435247, 652835, 109522, 5325760, - -1404454, 32190780, -3435974, -6240588, -1183264, 4675072, 2598455, 2334315, 156766, -4013647, - 1483911, 3092377, 3429532, -1610613, -1516124, 6824703, 2576981, -4599910, 1458141, 8714489, - -9985799, 7346542, 1219771, 9279277, -210453, 929860, 2115272, 2216203, 5035849, -3008625, - -927713, 2177549, 3719442, -886911, 279173, 869731, 1151051, 2546916, -3889093, 347892, - 2845416, 1155346, -1982127, -274878, 5845451, 4496831, 2280628, -1638530, -1183264, 2040110, - -354335, -882616, 1312113, -1217623, -2295660, 6116034, 2549063, 4105989, 899796, 3221226, - 2544768, 2922725, 584116, 3442416, 1773822, 2596308, 15152645, 4445291, 3685082, -2145336, - -1447404, -4024384, -2905546, 833224, -1591285, -1924145, -5869073, 5108864, 3466039, -3549791, - 6249178, -5776731, -1801739, 2755222, -4395899, 2673617, 4028679, 6352257, 5433134, 5377299, - 2654290, -10881300, -64425, -2147484, 2136746, -886911, 4234838, 3113851, -1520418, -2491081, - 2727304, -1769527, 7170448, 212601, 2280628, 7610682, 6932077, -5108864, 294205, -3281355, - -6524056, -438087, 1015760, -551903, -1496796, -410169, 341450, -2699387, 171799, -3186866, - -1209033, -113817, 670015, 330712, -2299955, -1848983, 4140349, -1241246, 369367, 2310693, - 2117419, -1011465, -1735167, 35766340, -25016038, 9223442, -9446781, -652835, -6573448, 6109591, - 6081674, 2010045, 1312113, 5742372, 15665893, -13608604, -1806034, -3483219, -5426691, 12154757, - 9197672, -1791001, -8175470, 3427384, -6659347, -5336497, -9369471, 1279900, -9594957, -3137474, - 5826123, 891206, -2864743, -7943542, 128849, -1868311, 4980015, 4535486, 2181844, -3577708, - 665720, -169651, 2089502, 3921305, -2330020, -1181116, -4217658, 6637872, -691490, 1026497, - 5995775, -1157494, -408022, 2400887, -2819646, -253403, 2677912, -4310000, 1123134, -758062, - -249108, -4496831, 2342905, -923418, 523986, 1172526, -1550483, 3036542, -2220498, -551903, - -55843164, 7410966, 498216, 3627100, -4548371, -7211250, -309238, 4378719, 7112466, -721555, - 10958609, 5993627, -7879118, -7048042, 4975720, 682900, -5690832, -10320806, -11815455, -7657927, - -8789651, -9788230, 1451699, 2785286, 2269890, -7303592, -7052337, 792421, -2050847, -1398012, - -1170379, -5871221, 4505421, -9932112, -3886946, -1709397, -612033, 2873333, 835371, -893353, - 4224101, -1584843, 4211216, 2349347, -3689377, 339302, 7005092, -3107409, -3148211, -17180, - 4002910, 897648, -3257733, -4069482, 3311420, -2147, -5327907, 6803228, 7642895, 773094, - -2482491, 766652, -377957, 1505386, 3249143, -498216, 4389457, -34022584, 29091960, -9717364, - 6212670, -141734, 4836133, -11755325, 4541928, -8001524, 17180, -5398774, 10894185, 9332964, - 3478924, 801011, -9012989, -5901285, -970663, -3551938, 10314364, -8407398, -392990, -4127464, - 15116137, -4752382, 1288490, -345745, 2540473, 1279900, 2523293, 2005750, -2600603, 1466731, - -706522, 5407364, 715112, 10159745, 5104569, -3124589, -798864, -1127429, 60130, -3706557, - -2838974, -826781, 1653562, 12390981, 962073, 966368, -3524021, 5147519, -2022930, -2461016, - 1436667, -2383707, 1322850, -2993592, -7056632, 3569118, 2823941, -783832, 6940667, 1698660, - 1464584, 2750927, -2171106, 1026497, -1829656, 6994354, 4554813, -438087, -2207613, -1737314, - -779537, 21938692, -762357, 4739497, -15354508, -2776696, 1642825, -12446815, 708670, 16597901, - -3206193, 940598, -7876970, -10703059, 2383707, -9803263, 14598594, -10602127, 3296388, 3234110, - 7690139, 5905580, -1896228, -9498320, -1342177, -1140314, 4438849, -6751689, -1526861, -2194728, - -3352222, -2491081, 4228396, 2465311, 11774653, 3779571, -4771709, 4683662, -3566970, -3781719, - 3420942, 9992241, -1773822, -5667210, -5278515, 5141076, -427349, -7831873, -7181186, 3163244, - 2989297, -3478924, -5985037, -9837623, 2319282, 3115999, 2074469, -5753109, 3719442, 2029372, - 1387274, 75975824, -4415227, 3444564, 7316477, -6216965, -2428804, -1861868, -17413944, 12365211, - -1546188, -10638634, 2772402, -5259188, 6876243, 5544803, 8632884, -2529736, 11577084, 10005126, - 6511171, -9470403, 7956427, -13140452, -7625715, -8811125, 4017942, -6674379, -916976, -2001455, - -8667244, -4490389, 7982197, -5257040, -3932043, -8207683, 3152506, 3199751, 6807523, -3231963, - 11458973, 3191161, 13011603, -1037235, 2641405, 2967823, -6661495, 5405217, 13297219, -4054449, - -36507, 3936338, -3451006, -4823249, 3388729, -4808216, -2506114, -6412386, -4172561, 5446019, - 4793184, 3423089, 5113159, 6463926, 6053757, 9092446, 1660005, -2235531, -34218004, -66363688, - 23553600, -521839, 554051, -7305740, -7806103, -2319282, 1449552, -4984310, 16316581, -8662949, - -15801185, 154619, 107374, -2705830, -6126771, 10950019, 1258425, -5972152, 4567698, -11087458, - 12259984, -8072391, -4724464, -9670119, 13769665, -7050189, -3040837, -9579925, -5035849, 7264937, - -4657892, 7930657, -12098923, -13720273, 107374, 1578401, 1282048, -1030792, -7737384, 571231, - 2478196, 1056562, 5787469, -708670, 9637907, 813896, 8955007, 12427488, 1666447, -1647120, - 1393717, -7988639, -2969970, -12902082, -12023761, 2559801, 2117419, 1503239, -1904818, -4129611, - -2997887, -3618510, -2858301, -3605625, -1151051, -882616, 1056562, -22316650, 63715840, -29540786, - 12990129, -6528351, 19956566, -3530463, -9403831, -9691594, 4919885, -3094524, -1651415, 178241, - 3528316, -21816286, -10988674, -5819681, 8078834, 6947110, 12064563, 2061584, -2428804, -2214056, - 14542759, -19801946, 10799695, -9627169, -2531883, -10118943, 14987288, 6073084, -10730976, 1178969, - -5063767, 1522566, 5961415, -28265180, -12410308, 2179696, 9195525, -5909875, 1374390, 7097434, - -3659312, -3283503, -1782411, 10786810, 3513283, 1775969, 405874, 4114579, 11940009, -7834021, - 4971425, -18019536, -4011500, 3977140, 7709467, 1559073, 261993, 354335, 3650722, -3577708, - -551903, -1333587, -5381594, -3764539, 5484673, 6440304, -3779571, -3502546, -12597139, -57833884, - -12741020, 5299990, -13975824, 3113851, 2162516, 8111046, -388695, 15749645, 10136123, 5499706, - -4758824, -8186208, -768799, 16694538, -14897094, -5845451, -11632919, -539018, -31155692, -24556476, - 1148904, 14781130, 20349556, 4509716, -7934952, 6798933, -7095286, -4741644, -4964982, 1786706, - 5022965, 1065152, 7655779, -6380174, -11368778, 8811125, 5536213, 18788334, -2768107, 2856153, - -3171833, 15113990, -16423955, -8259222, -4236985, -12358768, 7252053, -5231270, 6008659, -13215614, - 12468290, 12343736, 11074573, -4934918, 9749576, 332860, 3062312, 5793911, 3758097, -5647882, - 412317, -1911261, -848256, 11581379, 3848291, -5424544, 8985072, -1801739, -8860518, -3021510, - -1189706, 42247444, 27657442, -7982197, 12835510, -27154930, 20008106, 7707319, 15184857, -4453881, - -3173981, -14594299, -7275675, -25348896, -3983582, -20057498, -5770289, -12124693, -12528420, -16937204, - 7451769, -23356032, 3708704, 10971494, -4127464, 3884798, -9844065, 491774, -2750927, -2783139, - -13595719, -1251983, 2083059, -309238, -1711545, -6702297, -5946382, 5005785, 5063767, 6760279, - 30895848, -11587822, -264141, 13033078, -2516851, -4357245, -11250667, 4333622, 10769630, 17839146, - 6193343, 15010911, -13511967, -20173462, 2415919, 14514842, 8093866, -10499048, 13537737, -9081708, - 6721624, 3463891, 12322261, 7614977, 4745939, 8976482, -7724499, 6077379, 4604205, 3401614, - 11987254, 3695819, 9655086, 84174920, -54479512, -2967823, 6326487, 1677185, 6652905, 11506217, - -2299955, -1887638, 6500433, -9766756, -9253507, -1576253, 7505456, 30236570, 1322850, 10398116, - -9700184, 532576, -29890824, 18421114, -18047452, -25907242, 6079526, 7136088, -9494025, 8495445, - 3704409, 19872814, 22239340, -3824669, -8259222, -6468221, -32987496, -18212808, 26057566, 8368744, - 9667971, -15135465, -15191299, 4314295, -2834679, -13428215, 11639361, -2772402, -8096014, -9816148, - 6672232, -8847633, -4395899, 30071214, -18365280, 5257040, -6468221, 6640020, -8151848, -3874061, - -22488448, 3328600, -8188355, -6199786, 18358838, 3770981, 5297842, 10295037, 13406740, 3154654, - 9375914, -4926328, -790274, -15915001, 7123204, 11111080, -54286240, -27687506, 7808251, -5128191, - 17091822, -4567698, -6910603, -17005924, -18878528, 7101729, -19655918, -7997229, -11993696, -3841848, - -12558484, -9126806, -10479720, -6227703, -12534862, -21895744, 9528385, -41611792, -2413772, 33762736, - 6678674, -2027225, -11753178, 687195, -38021196, 13022341, 6996502, 652835, 10941429, 17499844, - -17328046, -9856950, -17965848, 506806, -1552631, -11233487, -12884902, -13737453, -9229885, -2370822, - 5716602, -1170379, 4269198, 1851131, -1436667, 22883586, 3667902, -5791764, 17276506, -11383811, - -24599426, -8652212, -5003637, -5007932, -3880503, -9504763, -4230543, -11398843, -4881231, -11555610, - -1664300, 3478924, -13436805, -4806069, -8776766, -1307818, -13892072, -15479062, -9244917, -32813550, - 42868068, -21977348, -11267847, -36013300, 27045410, -10249939, 15627239, 575526, 259846, -11181947, - 20955146, -5800354, 6272800, 5046587, -10786810, -3693672, -4090956, -19091130, 2847563, 3173981, - -15487652, -24623048, -16134045, -22634478, -6466074, 12055973, 5347235, -13316546, -14224932, 19591494, - 12423193, -17001628, 14489072, -8439611, 12652974, -21464100, -18221398, -16303696, 4597763, -14381698, - 7930657, -6365142, 2583423, -3758097, -3423089, 3678640, 14304389, -33960308, -5759551, 7243463, - -4589173, -9977209, -26246546, -1694365, 21184926, 511101, 18114024, 15150497, 2592013, -2093797, - 13376676, -14115410, -13922136, 10475425, -5327907, -8272107, 4589173, 2961380, -9043054, -9388799, - 16217797, -15341623, -10900627, -8302172, -75301512, 26718992, 10773925, -19681688, 8267812, -22142704, - 18092550, 15418933, 13041668, -39101384, 22108344, 39318280, -6513318, 12676596, -296353, -13612899, - -17366700, 43387760, -1522566, -4992900, -25376814, -49411452, -27099096, 1359357, -22310208, 16724603, - -32592360, -11641509, -19619410, 3998615, -8231305, -24773372, 3040837, -6609955, 14600741, -6395207, - -19494856, -8310762, -57793080, 8995809, -2697240, 25082610, -17033840, -19056770, 23577222, 3919158, - 3077344, -11072426, -16196322, 4161823, 10189810, 6818261, -4992900, 7312182, 3663607, -304943, - -6019397, -6687264, -19832012, 139586, -8564165, -12283606, 8699456, 4183298, 26467736, 4423817, - -19945828, -20121922, 2723009, -13529147, -10477573, 1726577, -10969346, -1773822, -6433861, 65075196, - -21414706, 3478924, 6483253, 29027536, -298500, -1911261, 20787642, 33691872, -17605070, -20615844, - 21537114, -345745, 19108310, 26600880, 22434762, 20038170, 16408923, 19134080, 63138168, -1803886, - 7359427, 15036681, 36124968, -3526168, -9268539, 16172699, 1997160, -7428146, -10481868, -8244190, - 3193308, -11716671, 25832080, 38115688, 1067299, -5050882, 17343078, -4838281, 23590108, 18479096, - 3393024, -14209899, 16492674, 2340757, -2963528, 6575595, 438087, 44070660, -496069, 21386790, - -5948530, 39788576, -410169, 7206955, -9506910, -17729624, 21294448, -6706592, 39202312, 12156905, - 20207822, 4436701, 3296388, 14884209, 6008659, 30371862, 17761838, 9341554, 16456167, -10387378, - 9369471, 16892106, 5239860, 951335, 79392472, -23957328, 6599218, -8431021, 2576981, 9657234, - 25924422, -21556440, 10183367, -1009317, 274878, 14128295, -13215614, 15197742, -43589624, -19565724, - 5710159, 15408195, 9710921, 33352568, -34978212, 5005785, -6590628, -46027016, 17871358, -17944374, - -13374528, -6732361, -39462160, 12238509, 11343009, 5935645, -21614422, -32779190, 10844792, -20194936, - 15685221, -31275952, -1799591, -37407016, -11598559, -24809878, -24294482, 22765474, 32205812, 5355824, - 10140418, -15433965, 3719442, -26225070, 8531953, -16922172, 1887638, 26557930, 9966472, -8179765, - 12320114, 3549791, 10065256, -10557030, 19018116, 39848708, -1743757, -22209276, -20246476, -9178345, - -8602819, 3848291, 12771085, 4876936, 23237920, 1370095, 5278515, -24215026, -10131828, -82693152, - -69518344, 28162100, -9491878, 32899450, -3515431, 10219875, -41918880, -39286064, -24315958, 12068858, - -32678258, -22683870, -10322954, 5617817, 22280142, 7546258, -47508780, 11819750, 25076166, -66756676, - -8849780, 2488934, -71092448, -24736864, 30227980, -65609920, 30814242, 32841468, -590558, -9998684, - -3678640, -16234976, -18279380, 11065983, 13295071, 48148732, -29850022, -15659451, -13174812, -23134842, - 246961, -39101384, -10726681, 2469606, -2205466, -13009456, -3094524, -21683142, -5463199, 11474005, - -6481106, -14227079, 14920716, -7885560, -16993038, -22844932, 46720656, -2282775, 27940910, 3612068, - 9635759, 31406948, 3184718, 21356724, -15803332, 23783382, 15818365, 5065914, 4597763, 5731634, - 19000936, 9326521, 1758789, 19748260, -133412424, 49426484, -15277199, -60234768, -15124727, 809601, - -15970836, 22286586, -52117280, 24096914, -4685810, -60058676, -41386304, 7335804, 23057532, 21438330, - 15854872, 34089156, 9524090, 56577604, 31009664, 66436700, 8332237, 53779432, -42520176, -34108484, - 10937134, 3803194, -33775624, 8370892, 6734509, -5660767, -13069585, 31379032, 5888400, -72567768, - -32184338, 22885734, 7969312, -16282221, 20177756, 19726784, 32231582, 5823976, 9393093, 4879083, - 9195525, 10642929, -25078314, 2531883, 4344360, -54159536, 24704652, 17046726, 22217866, -37580964, - -21266530, 25082610, -201863, -8415988, -5718749, -16917876, -13980119, -1348620, -18549964, -42116448, - 13460428, 41871636, -30949534, 2718714, -17937930, -8579197, -13507672, -5542656, 20862804, 54090820, - 36028332, 24414742, 12506945, 98784, -14647986, -21412560, 15801185, -57221848, 56985628, -37978248, - 7739531, -61976380, -3934190, 55143084, 20555714, -21734682, 34256660, -58963460, 21133386, 9049496, - 2218351, -72239200, -22986664, 2675765, 9528385, 43692704, -71313640, -11055246, -24951612, -67076652, - -16247861, 13984414, 30743376, 47309064, 36135708, 36185100, -5224828, -26128434, 22952306, 5768141, - -17033840, 7142531, -34035468, 48954036, 21644488, 15311558, -28660316, -60022168, -17748952, -637803, - -72690176, -58972048, -17295834, -53167400, 30449170, 10544145, 7778186, -25769804, -27769112, 7481833, - 4567698, 1816771, 13146895, -12444668, 9219147, 30799210, 12487617, 2671470, 1696512, -25467008, - -21507048, -20409684, 6751689, -10312216, 62865436, -51316268, 12219182, -8377334, -7718056, -146029, - 16537772, -32508608, 40531608, -13398150, 27442694, -4170413, -24365350, 42971148, 42653320, 29903710, - -15768972, 65798900, 23809152, -76656576, 76469744, 5585605, -1269163, 54526756, 1447404, -25853556, - -33532958, 53747220, -35648228, -47811576, 43785044, 37419904, -26390426, -63114544, 23164906, -22771916, - 7617125, -44944684, -36350456, -16426102, 41019084, 35865124, 4099546, 32736240, -51017768, 14345191, - -14027363, -20553566, 23218594, 1475321, 6573448, -72153304, -20001662, 37102076, -50957640, -15064598, - -63722284, -13769665, -24262270, 8542690, -15951509, 5012227, 5753109, -4284230, 5574868, -18979460, - -56717192, -12678743, 27702540, -5888400, 18854906, -23506356, -50242528, -10387378, 9204115, 58134528, - 4462471, -16849156, -41669772, -1322850, -19969450, 15601469, -34488588, 22020298, 13793287, -29875792, - -31001074, 46750720, -55048596, -1889786, 35192964, -39417064, 12543452, 45810120, -36464272, 31565862, - 22591528, 33799244, -55280524, 47908212, -55538224, 17132624, -42399916, 5798206, -21917218, 37965364, - 672162, 23523536, 11289322, -38478612, -24436216, -53407920, 31033286, -35867272, 31177168, -43233140, - -50886772, -83187072, 7539815, 45226004, -7449621, -169651, 13224204, 39294656, -13683766, 11536282, - -47300476, 13239237, 60883308, -4700842, 55080808, 74902080, -1402307, 14078903, 14093935, -29302414, - 15247134, -35723392, -2935610, -36494336, -38781408, 4898410, -15373835, -60883308, 42232412, 4526896, - 31157840, -33543694, -20250770, -9081708, -131915624, 33137820, 49042084, 13411035, -57299160, -8626442, - 92595200, -106970456, -2939905, -18281528, -70014408, -17884244, -47517372, 17031692, 17003776, 40495100, - 16301548, -56100864, -20038170, 39889508, -63898376, -18427558, -68326488, 57747984, 17184164, 45075680, - 77184856, -27668180, -16621523, -13172665, -39086348, 36739152, -18504866, -46660524, -52155936, -9539122, - 19542102, -1930588, 10217727, 12133283, 29757680, -13791140, -1838246, 21786222, -22022444, 43241732, - 49392124, 46420008, -38697656, 4423817, -12494060, 21784074, 93445600, 69795368, 133983656, 9850507, - 52445844, 42191612, -21384642, -5611375, -8087424, -13625784, 15835544, 2828236, 47150152, 35298188, - -18004502, -6281390, -30651034, -57956288, 20508468, -2261300, 16578574, -5486821, -42722040, -6655052, - 118112, }, + -236223, -500364, -326418, -137439, -575526, -801011, -73014, -431644, -382252, 109522, + 214748, 113817, 68719, -304943, 766652, -88047, 429497, -1116692, -1288490, -15032, + -2291365, -904091, 942745, 92342, 277025, 184684, 1599875, 23622, 682900, 120259, + 1043677, 66572, -809601, -1120987, -1318555, -2293513, 165356, -223338, 81604, -940598, + -156766, 646393, 790274, -530428, -622770, -9895605, 953483, -2156074, -103079, -783832, + -1453846, 805306, 3341485, 40802, 1715839, -1864016, -468151, 1314260, -1198296, 405874, + 2334315, -1348620, -429497, -614180, -113817, 367220, -463856, 691490, 463856, -502511, + 893353, -502511, -17180, -1857573, 15032, -161061, 470299, 354335, 901943, -770947, + 1529008, -195421, 1277753, -375810, 4295, 987843, -289910, 730144, 328565, 745177, + 158914, 708670, 4215511, -3240553, 2072322, -2553358, 1352915, -1228361, -1213328, -715112, + -676457, 790274, 897648, -3169686, -143881, 506806, -289910, -500364, -1846836, -646393, + 1365800, 2061584, 1043677, 3229816, 678605, -530428, 685047, 590558, -298500, 1082332, + 2299955, -833224, 4295, 1007170, -2147, -180389, -1599875, -23622, 850404, 702227, + 158914, 85899, -515396, 616328, -34360, 111669, 57982, 15255724, -904091, 1406602, + -874026, 1060857, -1067299, 326418, -195421, -186831, 957778, -719407, -2667175, 876173, + 371515, 932008, 1952063, 1075889, 758062, -169651, -1507534, -468151, 824634, -137439, + -167504, 1634235, -1883343, -549756, 57982, -259846, -397284, 824634, 912681, 1090922, + 380105, 438087, -322123, 1483911, 30065, 1155346, 854699, -178241, -47245, 586263, + 107374, -229781, -49392, 11108933, -10692321, 1627793, -2916283, 1498944, -231928, 1067299, + -1056562, 1958505, -886911, 1166084, -2576981, 49392, -1507534, 369367, -264141, -403727, + -712965, -1928440, -219043, 165356, -949188, 1475321, -717260, -1174674, -1432372, 779537, + -923418, 2117419, -249108, -57982, 622770, -57982, 27917, -1039382, -833224, -296353, + 208306, -444529, -953483, 760209, 584116, 1423782, -358630, 414464, -216896, -26268020, + 2959233, -2070174, -53687, -410169, -2304250, 2265595, -695785, 105227, 891206, 197569, + 2639258, -240518, -1234803, 3191161, 1219771, 2871186, -176094, -4050154, -2476049, -2005750, + 1513976, -2162516, 57982, -852551, -811749, 135291, 496069, -700080, -1355062, -1022202, + 680752, 798864, 1604170, -238371, -356482, -208306, 949188, -1294933, 193274, 373662, + 672162, -1071594, 899796, -1277753, -326418, -33159296, 11849815, -4945655, 5413807, -3962107, + 2413772, -4284230, 2241973, -3208341, 1065152, 2192581, -15032, 775242, 1975685, -1464584, + 1380832, -1846836, -1423782, -3949223, 3365107, -2357937, 2207613, 79457, -154619, -3783866, + -277025, 620623, -670015, -212601, -283468, 1451699, -377957, -1166084, 1013612, 272730, + -624918, -4295, -105227, 55835, 513249, -1071594, 2403034, -281320, -1769527, -238371, + -1041530, 1760937, 15156940, -3096672, 5828271, -2480344, 2083059, -1982127, 7226283, -1226213, + 3910568, -292058, -161061, 1108102, 111669, -4735202, 1219771, -289910, -2093797, -377957, + 188979, -5987185, -66572, 667867, 2044404, 115964, -1069447, -73014, 2201171, 554051, + -949188, -1896228, 3251290, -1786706, 10737, -2746632, -240518, 186831, 588411, -528281, + 852551, 1449552, -1163936, 1189706, 21475, 989990, 21475, 1640678, -670015, -244813, + 39917428, -11291469, 1990717, -1687922, 2871186, 304943, 231928, -5055177, 2649995, -2050847, + 1894081, 852551, 1095217, 2005750, 2935610, 702227, 1187559, -4196183, 1902671, 1952063, + -2637110, -264141, 3287798, 2265595, 2190433, 4612795, 2660732, 932008, 1391569, -1307818, + 1614908, -77309, 2725157, 3536906, -212601, 1400159, 2267743, -534723, 938450, -2486786, + -519691, 3131031, 281320, -1644973, -442382, 1178969, 2312840, 186831, 1408749, 2669322, + -21348134, 8770323, -6322192, 3878356, -3813931, 4602058, -3234110, 27917, -2765959, -3427384, + -4670777, 135291, -2817499, 1120987, 1406602, 3240553, -5718749, 3262028, -1445257, 4602058, + 955630, -491774, 285615, 156766, -1226213, -1181116, 644245, -2512556, 1423782, 2486786, + -3766686, -1050120, -289910, 1243393, -1473174, 3639985, -4112431, 534723, -60130, -12885, + -1791001, 12885, -1136019, 760209, 122407, -77309, -1269163, -498216, -2594160, -1157494, + -163209, 274878, -34308200, 10703059, -7123204, -601295, -1548336, 2001455, -6021544, 274878, + 1756642, 1406602, -2175401, 1022202, -2744484, -4475356, -1795296, 388695, -2692945, 8907762, + 146029, -2677912, -925565, -3195456, -1518271, 2602750, 1565516, 3423089, -416612, 1428077, + -2113124, 657130, -1917703, -803159, -1153199, 420907, 1045825, -758062, -1812476, 242666, + 588411, 2297808, -496069, -1105954, -3296388, -2841121, -1314260, -710817, 560493, 238371, + -1370095, -751619, 204011, 983548, 586263, -33077690, 15260019, -7451769, 6708739, -3764539, + 3897683, 1855426, 1058710, -3908420, 264141, -2070174, 365072, -5061619, 1644973, 2909840, + 792421, -5370857, -2789581, -2776696, -2939905, -1941325, 3528316, 749472, 2418067, 1967095, + -1140314, -354335, -4161823, 4945655, -1672890, -652835, 96637, -1224066, -1795296, -1975685, + -654983, -4273493, 989990, -2325725, 1413044, 1320703, 2130304, -766652, 10737, -2811056, + 760209, 1866163, 210453, -556198, 135291, 1436667, 2044404, 895501, 10788958, 13318694, + -5862631, 3639985, -1726577, 1425929, -1305670, 856846, 1282048, 6564858, -2171106, 2757369, + 6204081, -1569811, -120259, -940598, 1604170, 3223373, 3352222, 4267050, 1267015, 3639985, + -770947, -2031520, -6987912, 1574106, -938450, -3508988, -2405182, -55835, -526134, 2366527, + -176094, -4075924, -4112431, 1209033, -3549791, 556198, 2422362, -3279208, -2065879, -1365800, + 1829656, 1552631, 64425, -392990, 2673617, 577673, -781684, 1045825, -1967095, 313533, + -944893, -1584843, -901943, 38031936, -13230647, 7181186, -4956393, 7138236, -5022965, 4376572, + -1621350, 4445291, 1090922, 3126736, -3627100, 3730179, -1264868, -3103114, -307090, -3335042, + -5304285, -2813204, -564788, 2688650, -3627100, -4879083, -5952825, -1082332, -508954, 4760971, + 2628520, 3053722, -2083059, 2465311, -1879048, -1876901, -1009317, 3131031, 2731599, 828929, + -6442, -135291, 100932, -906238, -485331, 2156074, 435939, 5338645, -2046552, -672162, + -4460324, 2899103, -1159641, -725850, -1047972, -309238, 264141, -777389, 10803990, -16200617, + 9691594, -5985037, 7554848, 38655, 4735202, 1425929, -7035157, -3270618, -2291365, 998580, + 1913408, 1125281, 8199093, -4419522, 6575595, 1247688, 940598, -4292820, -835371, 5703717, + -246961, -4614943, 5514738, 4243428, 1032940, -2098092, -1632088, -345745, -253403, 2624225, + -1103807, 1239098, -2899103, -543313, 1866163, -4230543, 1791001, -1565516, 1685775, -1136019, + -257698, 5265630, 2347200, 3053722, -96637, 1337882, 2016487, -259846, -1282048, -2141041, + 912681, 1163936, 1967095, 2334315, 661425, -373662, -2123861, -908386, -2145336, -41004052, + -8693014, -1606318, -7267085, -3324305, 5551245, 2063732, -2269890, -2095944, -5362267, -3758097, + -4443144, -4954245, -4166118, -2871186, -3811784, -6184753, -5321465, 1324997, -5392332, 1097364, + -7084549, -324270, -3208341, -2725157, 5278515, -1133871, -3266323, 3169686, -4634270, 3377992, + 717260, 3592740, 2368675, -633508, -2437394, 3803194, -506806, -1224066, 3526168, -2209761, + -5836861, -6665789, -2001455, 1464584, 867583, -2383707, -605590, -2252710, -32212, -487479, + -100932, 3246995, 1093069, -3343632, -1445257, -88047, 2027225, -30065, 3229816, 395137, + -47652664, 41418516, -16904992, 11458973, -10829760, 2594160, -5312875, 6947110, 1340030, 740882, + -3371549, 4666482, 998580, -8654359, 910533, 1157494, -4254165, -6713034, 6579890, 7958575, + -2540473, -2274185, 1430224, 3577708, -2095944, 7206955, -130997, 1694365, -5239860, -2085207, + -3066607, 4608500, -936303, 839666, 1181116, -2974265, 4808216, 4232691, 1382980, 1290638, + 5632850, -3582003, -697932, -964220, -3766686, 571231, -2377265, 674310, 98784, 45097, + 4692252, -493921, -766652, 648540, 493921, 2559801, -2435247, 652835, 109522, 5325760, + -1404454, 32190780, -3435974, -6240588, -1183264, 4675072, 2598455, 2334315, 156766, -4013647, + 1483911, 3092377, 3429532, -1610613, -1516124, 6824703, 2576981, -4599910, 1458141, 8714489, + -9985799, 7346542, 1219771, 9279277, -210453, 929860, 2115272, 2216203, 5035849, -3008625, + -927713, 2177549, 3719442, -886911, 279173, 869731, 1151051, 2546916, -3889093, 347892, + 2845416, 1155346, -1982127, -274878, 5845451, 4496831, 2280628, -1638530, -1183264, 2040110, + -354335, -882616, 1312113, -1217623, -2295660, 6116034, 2549063, 4105989, 899796, 3221226, + 2544768, 2922725, 584116, 3442416, 1773822, 2596308, 15152645, 4445291, 3685082, -2145336, + -1447404, -4024384, -2905546, 833224, -1591285, -1924145, -5869073, 5108864, 3466039, -3549791, + 6249178, -5776731, -1801739, 2755222, -4395899, 2673617, 4028679, 6352257, 5433134, 5377299, + 2654290, -10881300, -64425, -2147484, 2136746, -886911, 4234838, 3113851, -1520418, -2491081, + 2727304, -1769527, 7170448, 212601, 2280628, 7610682, 6932077, -5108864, 294205, -3281355, + -6524056, -438087, 1015760, -551903, -1496796, -410169, 341450, -2699387, 171799, -3186866, + -1209033, -113817, 670015, 330712, -2299955, -1848983, 4140349, -1241246, 369367, 2310693, + 2117419, -1011465, -1735167, 35766340, -25016038, 9223442, -9446781, -652835, -6573448, 6109591, + 6081674, 2010045, 1312113, 5742372, 15665893, -13608604, -1806034, -3483219, -5426691, 12154757, + 9197672, -1791001, -8175470, 3427384, -6659347, -5336497, -9369471, 1279900, -9594957, -3137474, + 5826123, 891206, -2864743, -7943542, 128849, -1868311, 4980015, 4535486, 2181844, -3577708, + 665720, -169651, 2089502, 3921305, -2330020, -1181116, -4217658, 6637872, -691490, 1026497, + 5995775, -1157494, -408022, 2400887, -2819646, -253403, 2677912, -4310000, 1123134, -758062, + -249108, -4496831, 2342905, -923418, 523986, 1172526, -1550483, 3036542, -2220498, -551903, + -55843164, 7410966, 498216, 3627100, -4548371, -7211250, -309238, 4378719, 7112466, -721555, + 10958609, 5993627, -7879118, -7048042, 4975720, 682900, -5690832, -10320806, -11815455, -7657927, + -8789651, -9788230, 1451699, 2785286, 2269890, -7303592, -7052337, 792421, -2050847, -1398012, + -1170379, -5871221, 4505421, -9932112, -3886946, -1709397, -612033, 2873333, 835371, -893353, + 4224101, -1584843, 4211216, 2349347, -3689377, 339302, 7005092, -3107409, -3148211, -17180, + 4002910, 897648, -3257733, -4069482, 3311420, -2147, -5327907, 6803228, 7642895, 773094, + -2482491, 766652, -377957, 1505386, 3249143, -498216, 4389457, -34022584, 29091960, -9717364, + 6212670, -141734, 4836133, -11755325, 4541928, -8001524, 17180, -5398774, 10894185, 9332964, + 3478924, 801011, -9012989, -5901285, -970663, -3551938, 10314364, -8407398, -392990, -4127464, + 15116137, -4752382, 1288490, -345745, 2540473, 1279900, 2523293, 2005750, -2600603, 1466731, + -706522, 5407364, 715112, 10159745, 5104569, -3124589, -798864, -1127429, 60130, -3706557, + -2838974, -826781, 1653562, 12390981, 962073, 966368, -3524021, 5147519, -2022930, -2461016, + 1436667, -2383707, 1322850, -2993592, -7056632, 3569118, 2823941, -783832, 6940667, 1698660, + 1464584, 2750927, -2171106, 1026497, -1829656, 6994354, 4554813, -438087, -2207613, -1737314, + -779537, 21938692, -762357, 4739497, -15354508, -2776696, 1642825, -12446815, 708670, 16597901, + -3206193, 940598, -7876970, -10703059, 2383707, -9803263, 14598594, -10602127, 3296388, 3234110, + 7690139, 5905580, -1896228, -9498320, -1342177, -1140314, 4438849, -6751689, -1526861, -2194728, + -3352222, -2491081, 4228396, 2465311, 11774653, 3779571, -4771709, 4683662, -3566970, -3781719, + 3420942, 9992241, -1773822, -5667210, -5278515, 5141076, -427349, -7831873, -7181186, 3163244, + 2989297, -3478924, -5985037, -9837623, 2319282, 3115999, 2074469, -5753109, 3719442, 2029372, + 1387274, 75975824, -4415227, 3444564, 7316477, -6216965, -2428804, -1861868, -17413944, 12365211, + -1546188, -10638634, 2772402, -5259188, 6876243, 5544803, 8632884, -2529736, 11577084, 10005126, + 6511171, -9470403, 7956427, -13140452, -7625715, -8811125, 4017942, -6674379, -916976, -2001455, + -8667244, -4490389, 7982197, -5257040, -3932043, -8207683, 3152506, 3199751, 6807523, -3231963, + 11458973, 3191161, 13011603, -1037235, 2641405, 2967823, -6661495, 5405217, 13297219, -4054449, + -36507, 3936338, -3451006, -4823249, 3388729, -4808216, -2506114, -6412386, -4172561, 5446019, + 4793184, 3423089, 5113159, 6463926, 6053757, 9092446, 1660005, -2235531, -34218004, -66363688, + 23553600, -521839, 554051, -7305740, -7806103, -2319282, 1449552, -4984310, 16316581, -8662949, + -15801185, 154619, 107374, -2705830, -6126771, 10950019, 1258425, -5972152, 4567698, -11087458, + 12259984, -8072391, -4724464, -9670119, 13769665, -7050189, -3040837, -9579925, -5035849, 7264937, + -4657892, 7930657, -12098923, -13720273, 107374, 1578401, 1282048, -1030792, -7737384, 571231, + 2478196, 1056562, 5787469, -708670, 9637907, 813896, 8955007, 12427488, 1666447, -1647120, + 1393717, -7988639, -2969970, -12902082, -12023761, 2559801, 2117419, 1503239, -1904818, -4129611, + -2997887, -3618510, -2858301, -3605625, -1151051, -882616, 1056562, -22316650, 63715840, -29540786, + 12990129, -6528351, 19956566, -3530463, -9403831, -9691594, 4919885, -3094524, -1651415, 178241, + 3528316, -21816286, -10988674, -5819681, 8078834, 6947110, 12064563, 2061584, -2428804, -2214056, + 14542759, -19801946, 10799695, -9627169, -2531883, -10118943, 14987288, 6073084, -10730976, 1178969, + -5063767, 1522566, 5961415, -28265180, -12410308, 2179696, 9195525, -5909875, 1374390, 7097434, + -3659312, -3283503, -1782411, 10786810, 3513283, 1775969, 405874, 4114579, 11940009, -7834021, + 4971425, -18019536, -4011500, 3977140, 7709467, 1559073, 261993, 354335, 3650722, -3577708, + -551903, -1333587, -5381594, -3764539, 5484673, 6440304, -3779571, -3502546, -12597139, -57833884, + -12741020, 5299990, -13975824, 3113851, 2162516, 8111046, -388695, 15749645, 10136123, 5499706, + -4758824, -8186208, -768799, 16694538, -14897094, -5845451, -11632919, -539018, -31155692, -24556476, + 1148904, 14781130, 20349556, 4509716, -7934952, 6798933, -7095286, -4741644, -4964982, 1786706, + 5022965, 1065152, 7655779, -6380174, -11368778, 8811125, 5536213, 18788334, -2768107, 2856153, + -3171833, 15113990, -16423955, -8259222, -4236985, -12358768, 7252053, -5231270, 6008659, -13215614, + 12468290, 12343736, 11074573, -4934918, 9749576, 332860, 3062312, 5793911, 3758097, -5647882, + 412317, -1911261, -848256, 11581379, 3848291, -5424544, 8985072, -1801739, -8860518, -3021510, + -1189706, 42247444, 27657442, -7982197, 12835510, -27154930, 20008106, 7707319, 15184857, -4453881, + -3173981, -14594299, -7275675, -25348896, -3983582, -20057498, -5770289, -12124693, -12528420, -16937204, + 7451769, -23356032, 3708704, 10971494, -4127464, 3884798, -9844065, 491774, -2750927, -2783139, + -13595719, -1251983, 2083059, -309238, -1711545, -6702297, -5946382, 5005785, 5063767, 6760279, + 30895848, -11587822, -264141, 13033078, -2516851, -4357245, -11250667, 4333622, 10769630, 17839146, + 6193343, 15010911, -13511967, -20173462, 2415919, 14514842, 8093866, -10499048, 13537737, -9081708, + 6721624, 3463891, 12322261, 7614977, 4745939, 8976482, -7724499, 6077379, 4604205, 3401614, + 11987254, 3695819, 9655086, 84174920, -54479512, -2967823, 6326487, 1677185, 6652905, 11506217, + -2299955, -1887638, 6500433, -9766756, -9253507, -1576253, 7505456, 30236570, 1322850, 10398116, + -9700184, 532576, -29890824, 18421114, -18047452, -25907242, 6079526, 7136088, -9494025, 8495445, + 3704409, 19872814, 22239340, -3824669, -8259222, -6468221, -32987496, -18212808, 26057566, 8368744, + 9667971, -15135465, -15191299, 4314295, -2834679, -13428215, 11639361, -2772402, -8096014, -9816148, + 6672232, -8847633, -4395899, 30071214, -18365280, 5257040, -6468221, 6640020, -8151848, -3874061, + -22488448, 3328600, -8188355, -6199786, 18358838, 3770981, 5297842, 10295037, 13406740, 3154654, + 9375914, -4926328, -790274, -15915001, 7123204, 11111080, -54286240, -27687506, 7808251, -5128191, + 17091822, -4567698, -6910603, -17005924, -18878528, 7101729, -19655918, -7997229, -11993696, -3841848, + -12558484, -9126806, -10479720, -6227703, -12534862, -21895744, 9528385, -41611792, -2413772, 33762736, + 6678674, -2027225, -11753178, 687195, -38021196, 13022341, 6996502, 652835, 10941429, 17499844, + -17328046, -9856950, -17965848, 506806, -1552631, -11233487, -12884902, -13737453, -9229885, -2370822, + 5716602, -1170379, 4269198, 1851131, -1436667, 22883586, 3667902, -5791764, 17276506, -11383811, + -24599426, -8652212, -5003637, -5007932, -3880503, -9504763, -4230543, -11398843, -4881231, -11555610, + -1664300, 3478924, -13436805, -4806069, -8776766, -1307818, -13892072, -15479062, -9244917, -32813550, + 42868068, -21977348, -11267847, -36013300, 27045410, -10249939, 15627239, 575526, 259846, -11181947, + 20955146, -5800354, 6272800, 5046587, -10786810, -3693672, -4090956, -19091130, 2847563, 3173981, + -15487652, -24623048, -16134045, -22634478, -6466074, 12055973, 5347235, -13316546, -14224932, 19591494, + 12423193, -17001628, 14489072, -8439611, 12652974, -21464100, -18221398, -16303696, 4597763, -14381698, + 7930657, -6365142, 2583423, -3758097, -3423089, 3678640, 14304389, -33960308, -5759551, 7243463, + -4589173, -9977209, -26246546, -1694365, 21184926, 511101, 18114024, 15150497, 2592013, -2093797, + 13376676, -14115410, -13922136, 10475425, -5327907, -8272107, 4589173, 2961380, -9043054, -9388799, + 16217797, -15341623, -10900627, -8302172, -75301512, 26718992, 10773925, -19681688, 8267812, -22142704, + 18092550, 15418933, 13041668, -39101384, 22108344, 39318280, -6513318, 12676596, -296353, -13612899, + -17366700, 43387760, -1522566, -4992900, -25376814, -49411452, -27099096, 1359357, -22310208, 16724603, + -32592360, -11641509, -19619410, 3998615, -8231305, -24773372, 3040837, -6609955, 14600741, -6395207, + -19494856, -8310762, -57793080, 8995809, -2697240, 25082610, -17033840, -19056770, 23577222, 3919158, + 3077344, -11072426, -16196322, 4161823, 10189810, 6818261, -4992900, 7312182, 3663607, -304943, + -6019397, -6687264, -19832012, 139586, -8564165, -12283606, 8699456, 4183298, 26467736, 4423817, + -19945828, -20121922, 2723009, -13529147, -10477573, 1726577, -10969346, -1773822, -6433861, 65075196, + -21414706, 3478924, 6483253, 29027536, -298500, -1911261, 20787642, 33691872, -17605070, -20615844, + 21537114, -345745, 19108310, 26600880, 22434762, 20038170, 16408923, 19134080, 63138168, -1803886, + 7359427, 15036681, 36124968, -3526168, -9268539, 16172699, 1997160, -7428146, -10481868, -8244190, + 3193308, -11716671, 25832080, 38115688, 1067299, -5050882, 17343078, -4838281, 23590108, 18479096, + 3393024, -14209899, 16492674, 2340757, -2963528, 6575595, 438087, 44070660, -496069, 21386790, + -5948530, 39788576, -410169, 7206955, -9506910, -17729624, 21294448, -6706592, 39202312, 12156905, + 20207822, 4436701, 3296388, 14884209, 6008659, 30371862, 17761838, 9341554, 16456167, -10387378, + 9369471, 16892106, 5239860, 951335, 79392472, -23957328, 6599218, -8431021, 2576981, 9657234, + 25924422, -21556440, 10183367, -1009317, 274878, 14128295, -13215614, 15197742, -43589624, -19565724, + 5710159, 15408195, 9710921, 33352568, -34978212, 5005785, -6590628, -46027016, 17871358, -17944374, + -13374528, -6732361, -39462160, 12238509, 11343009, 5935645, -21614422, -32779190, 10844792, -20194936, + 15685221, -31275952, -1799591, -37407016, -11598559, -24809878, -24294482, 22765474, 32205812, 5355824, + 10140418, -15433965, 3719442, -26225070, 8531953, -16922172, 1887638, 26557930, 9966472, -8179765, + 12320114, 3549791, 10065256, -10557030, 19018116, 39848708, -1743757, -22209276, -20246476, -9178345, + -8602819, 3848291, 12771085, 4876936, 23237920, 1370095, 5278515, -24215026, -10131828, -82693152, + -69518344, 28162100, -9491878, 32899450, -3515431, 10219875, -41918880, -39286064, -24315958, 12068858, + -32678258, -22683870, -10322954, 5617817, 22280142, 7546258, -47508780, 11819750, 25076166, -66756676, + -8849780, 2488934, -71092448, -24736864, 30227980, -65609920, 30814242, 32841468, -590558, -9998684, + -3678640, -16234976, -18279380, 11065983, 13295071, 48148732, -29850022, -15659451, -13174812, -23134842, + 246961, -39101384, -10726681, 2469606, -2205466, -13009456, -3094524, -21683142, -5463199, 11474005, + -6481106, -14227079, 14920716, -7885560, -16993038, -22844932, 46720656, -2282775, 27940910, 3612068, + 9635759, 31406948, 3184718, 21356724, -15803332, 23783382, 15818365, 5065914, 4597763, 5731634, + 19000936, 9326521, 1758789, 19748260, -133412424, 49426484, -15277199, -60234768, -15124727, 809601, + -15970836, 22286586, -52117280, 24096914, -4685810, -60058676, -41386304, 7335804, 23057532, 21438330, + 15854872, 34089156, 9524090, 56577604, 31009664, 66436700, 8332237, 53779432, -42520176, -34108484, + 10937134, 3803194, -33775624, 8370892, 6734509, -5660767, -13069585, 31379032, 5888400, -72567768, + -32184338, 22885734, 7969312, -16282221, 20177756, 19726784, 32231582, 5823976, 9393093, 4879083, + 9195525, 10642929, -25078314, 2531883, 4344360, -54159536, 24704652, 17046726, 22217866, -37580964, + -21266530, 25082610, -201863, -8415988, -5718749, -16917876, -13980119, -1348620, -18549964, -42116448, + 13460428, 41871636, -30949534, 2718714, -17937930, -8579197, -13507672, -5542656, 20862804, 54090820, + 36028332, 24414742, 12506945, 98784, -14647986, -21412560, 15801185, -57221848, 56985628, -37978248, + 7739531, -61976380, -3934190, 55143084, 20555714, -21734682, 34256660, -58963460, 21133386, 9049496, + 2218351, -72239200, -22986664, 2675765, 9528385, 43692704, -71313640, -11055246, -24951612, -67076652, + -16247861, 13984414, 30743376, 47309064, 36135708, 36185100, -5224828, -26128434, 22952306, 5768141, + -17033840, 7142531, -34035468, 48954036, 21644488, 15311558, -28660316, -60022168, -17748952, -637803, + -72690176, -58972048, -17295834, -53167400, 30449170, 10544145, 7778186, -25769804, -27769112, 7481833, + 4567698, 1816771, 13146895, -12444668, 9219147, 30799210, 12487617, 2671470, 1696512, -25467008, + -21507048, -20409684, 6751689, -10312216, 62865436, -51316268, 12219182, -8377334, -7718056, -146029, + 16537772, -32508608, 40531608, -13398150, 27442694, -4170413, -24365350, 42971148, 42653320, 29903710, + -15768972, 65798900, 23809152, -76656576, 76469744, 5585605, -1269163, 54526756, 1447404, -25853556, + -33532958, 53747220, -35648228, -47811576, 43785044, 37419904, -26390426, -63114544, 23164906, -22771916, + 7617125, -44944684, -36350456, -16426102, 41019084, 35865124, 4099546, 32736240, -51017768, 14345191, + -14027363, -20553566, 23218594, 1475321, 6573448, -72153304, -20001662, 37102076, -50957640, -15064598, + -63722284, -13769665, -24262270, 8542690, -15951509, 5012227, 5753109, -4284230, 5574868, -18979460, + -56717192, -12678743, 27702540, -5888400, 18854906, -23506356, -50242528, -10387378, 9204115, 58134528, + 4462471, -16849156, -41669772, -1322850, -19969450, 15601469, -34488588, 22020298, 13793287, -29875792, + -31001074, 46750720, -55048596, -1889786, 35192964, -39417064, 12543452, 45810120, -36464272, 31565862, + 22591528, 33799244, -55280524, 47908212, -55538224, 17132624, -42399916, 5798206, -21917218, 37965364, + 672162, 23523536, 11289322, -38478612, -24436216, -53407920, 31033286, -35867272, 31177168, -43233140, + -50886772, -83187072, 7539815, 45226004, -7449621, -169651, 13224204, 39294656, -13683766, 11536282, + -47300476, 13239237, 60883308, -4700842, 55080808, 74902080, -1402307, 14078903, 14093935, -29302414, + 15247134, -35723392, -2935610, -36494336, -38781408, 4898410, -15373835, -60883308, 42232412, 4526896, + 31157840, -33543694, -20250770, -9081708, -131915624, 33137820, 49042084, 13411035, -57299160, -8626442, + 92595200, -106970456, -2939905, -18281528, -70014408, -17884244, -47517372, 17031692, 17003776, 40495100, + 16301548, -56100864, -20038170, 39889508, -63898376, -18427558, -68326488, 57747984, 17184164, 45075680, + 77184856, -27668180, -16621523, -13172665, -39086348, 36739152, -18504866, -46660524, -52155936, -9539122, + 19542102, -1930588, 10217727, 12133283, 29757680, -13791140, -1838246, 21786222, -22022444, 43241732, + 49392124, 46420008, -38697656, 4423817, -12494060, 21784074, 93445600, 69795368, 133983656, 9850507, + 52445844, 42191612, -21384642, -5611375, -8087424, -13625784, 15835544, 2828236, 47150152, 35298188, + -18004502, -6281390, -30651034, -57956288, 20508468, -2261300, 16578574, -5486821, -42722040, -6655052, + 118112, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS][2522] ={ { -8937827, - 962073, -1997160, 1969243, -977105, 848256, -12885, 942745, -57982, 1020055, -1251983, - -590558, 594853, -846109, -141734, -1324997, -92342, -489626, 2634963, 1251983, -1604170, - 62277, 657130, -60130, -371515, 682900, 73014, 448824, 635655, 562641, -816044, - -219043, 77309, 113817, 156766, -57982, 38655, -62277, 137439, 12885, -6442, - -81604, -15032, 66572, -21475, 47245, 6728067, 3895535, 2087354, 1043677, 1129576, - 382252, 801011, -148176, -150324, 1932735, 1095217, 897648, 1853278, 1550483, 2115272, - -2948495, 2561948, 708670, 169651, 513249, -178241, -1320703, -940598, 1509681, 682900, - 1234803, 55835, -423054, 901943, -105227, -438087, 912681, 476741, 1340030, 382252, - 891206, -1331440, -803159, 715112, 130997, 768799, 319975, -165356, -354335, -1080184, - 223338, 3599183, -3721589, -766652, -725850, -947040, -199716, -124554, -648540, -586263, - 81604, 94489, -453119, 244813, -1099512, -408022, -113817, 654983, -3953518, -438087, - 912681, -442382, -408022, 296353, 158914, 229781, 1941325, -951335, -511101, -1045825, - -98784, 496069, 921271, -901943, -551903, 942745, -820339, -1398012, -57982, -412317, - 562641, -446677, -292058, 180389, 511101, -874026, 369367, -12895639, -8843338, -3519726, - -4127464, -2224793, -2177549, -1967095, -957778, -2381559, -1962800, -777389, -1535451, -133144, - -575526, -1241246, -1801739, -1913408, -809601, -1080184, -2025077, -188979, -2523293, 81604, - -212601, -270583, -1533303, -182536, -1163936, 88047, -1492501, -861141, 493921, -1002875, - 178241, -2435247, -474594, 1316408, 747324, 42950, -371515, -633508, 204011, 322123, - 1170379, -605590, -111669, -16935056, -1015760, 2276333, -124554, 738734, -208306, 100932, - -1455994, 1535451, 481036, 1829656, 1153199, 3665755, 2540473, 283468, -1511829, -736587, - -429497, 747324, -577673, -3088082, -2942053, -1398012, -536871, 212601, 302795, 659278, - -214748, 169651, 246961, -594853, -191126, -21475, -2052994, 1213328, 369367, -150324, - -124554, -682900, -1187559, 736587, 152471, -646393, 569083, 633508, 717260, 19020262, - 13462575, 2568391, 5246303, 1007170, 1769527, 4161823, 2229088, 599148, 2594160, 959925, - -1073742, -631360, 925565, 1393717, -2546916, -429497, -1516124, 3358665, 1748052, 794569, - 1745904, 783832, 914828, -49392, -141734, -942745, 1370095, 1533303, 1410897, 1636383, - 2119566, 1151051, 3083787, 586263, -161061, 981400, 212601, -648540, -236223, -594853, - -603443, -105227, 1425929, 219043, 231928, 28357522, 12217034, 3543348, 3440269, 2211908, - 1546188, 339302, 214748, 2997887, 732292, 1604170, 2452426, 1116692, -68719, -998580, - 5068062, -584116, -2630668, -1694365, 1324997, -70867, 2746632, 732292, 412317, -633508, - -1157494, -498216, -489626, 1017907, -124554, 332860, 191126, 27917, -566936, 790274, - 3524021, 2025077, 2360085, 1906966, 1769527, 770947, 725850, 227633, 1187559, -1125281, - 743029, 9251360, -9751723, -3111704, -4133906, -3811784, -1876901, -710817, 1511829, -1490354, - 285615, -3768834, 1391569, -1440962, -3171833, 773094, -2224793, -3264175, -2115272, 2929168, - 2428804, -1159641, 1309965, -2186138, 966368, -3901978, 354335, 545461, -491774, -972810, - 955630, -3094524, -1211181, 317828, -893353, -959925, -523986, 182536, 485331, 1462436, - 257698, 2570538, -846109, -773094, -654983, -1346472, -229781, -693637, 543313, -1157494, - -33648920, -17313014, -5978595, -4984310, -5076652, -3453154, -4363687, -3113851, -4765266, -1054415, - -2057289, -727997, 401579, -2203318, -384400, 173946, 206158, -3264175, -1887638, -1554778, - 478889, -4346507, 605590, -2046552, -3549791, 188979, 141734, 126702, 100932, -1449552, - -813896, -81604, -83752, -169651, -1194001, -73014, 584116, 1013612, 637803, -1565516, - 1043677, -1563368, 1200443, -2604898, -1483911, 274878, -1159641, -30065, -296353, -19870666, - 10361609, 4526896, 1501091, 2826089, 367220, 843961, 2241973, 2774549, 1299228, 1881196, - -1492501, -463856, -2248416, 2658585, 384400, 562641, 3335042, 208306, -2493229, 4236985, - -2905546, 425202, 3264175, -949188, 736587, 526134, -244813, -1640678, -577673, 1024350, - 818191, 238371, -783832, 135291, -1387274, 3974992, 156766, -2147, -1720134, -719407, - -1178969, -880468, 1928440, 2074469, -715112, 242666, -326418, 646393, -47245, -103079, - -616328, 506806, 29970282, 12906377, 3287798, 7020124, 3874061, 1831804, 2866891, 2697240, - -139586, 1995012, 2836826, 792421, -146029, 1625645, 4050154, -1329292, -934155, -3236258, - 680752, 3921305, 1449552, 259846, -2340757, -1086627, -1110249, 4112431, 1069447, 2181844, - 994285, -1853278, -3281355, 3562675, 1724429, -2095944, -1230508, 3453154, 2658585, -100932, - 500364, -315680, 1277753, 989990, -556198, 723702, -1428077, -539018, 1602023, -949188, - -985695, 1971390, 1432372, 936303, 88047, 35416300, 7917772, 5744519, 2808909, 2529736, - 1342177, 2607045, 3500398, 5076652, 3427384, -1198296, 4342212, -1005022, 1301375, 719407, - 3697967, 4982162, 3521873, -1110249, 5978595, -1316408, -423054, -3270618, 998580, -1127429, - 1123134, 1342177, -1584843, -2660732, -843961, 249108, -1788854, -871878, 1056562, 1058710, - -2134599, -2192581, -657130, 515396, 139586, 365072, -680752, -259846, -412317, -1020055, - 1080184, -1569811, 1406602, -1668595, -352187, -1333587, 371515, -646393, 3966402, -15631533, - -5216238, -5478231, -3781719, 1144609, -1041530, -3212636, 1799591, 322123, 2248416, -81604, - 122407, -3502546, -2727304, -1522566, -2800319, 429497, -2967823, -5302137, 981400, 854699, - -2660732, -343597, -2420214, 708670, 685047, -225486, -5772436, -1380832, 272730, -397284, - 403727, 1767379, -4123169, -968515, -2602750, 1561221, -384400, 38655, 2579128, -2422362, - -242666, 1093069, -399432, -614180, 1226213, 953483, -1655710, -1687922, -3182571, -191126, - -2439542, -1649268, -1063004, -36771364, -12796855, -7329362, -2153926, -3674345, -373662, -1868311, - -2972117, -3137474, 3992172, 356482, -1825361, -135291, -6356552, -3231963, -3201898, 5291400, - -4423817, -8654359, 549756, 1374390, 515396, -3002182, -1052267, 2168959, -4284230, -133144, - -4361540, -955630, 2173254, -1715839, 410169, 4864051, 339302, -637803, -1258425, 1548336, - 1267015, 1458141, -1503239, 64425, 1333587, 2332167, 1078037, 1005022, -3974992, 1058710, - -309238, -1614908, -846109, 715112, -633508, -1629940, -1413044, -1700807, -24371792, 5499706, - 558346, -3189013, 4595615, -2976412, -1960653, 914828, -3959960, -2675765, -693637, 1524713, - -3088082, 4273493, 281320, -322123, 2274185, 1881196, 3459596, -556198, 4696547, 6281390, - 4866198, 1273458, 4187593, -1511829, 2723009, -3171833, -2843268, -1477469, 547608, 1748052, - -1413044, -3060164, -1361505, -289910, 1926293, -2969970, 2151779, 453119, 1696512, -929860, - -2338610, -3609920, -3848291, 813896, -1889786, 854699, -4095251, -1477469, 2076617, -2933463, - 603443, -2138894, 1447404, -861141, 1408749, 36507, -601295, -328565, -1556926, 16348793, - 27200028, 7788923, 7127498, 9706626, 8010114, 1479616, 6367289, 5514738, 3124589, 11778948, - 2899103, 1926293, 5205501, 4666482, 2570538, 2018635, 1314260, 1885491, -1466731, 5899138, - -1544041, 487479, -1823214, 3700114, 246961, -1075889, 3191161, 3639985, 1370095, 4859756, - -3466039, -5916318, -1267015, -444529, 1303523, -511101, 2544768, -2437394, 2314987, 4883378, - 2183991, -4567698, -893353, 2149631, 912681, -2302103, 3167539, 1110249, 1881196, 1939178, - 2823941, 792421, -775242, 554051, -2536178, -805306, 2370822, 2031520, -1232656, -173946, - 62150324, 6577743, -760209, 4024384, -251256, 5493263, -73014, 1602023, 539018, 5778879, - 2484639, -2141041, 1745904, 2856153, 1305670, -3223373, -7183333, -3064459, -3098819, 1413044, - -4464619, -594853, -416612, 1324997, 7606387, 4466766, 1318555, 3268470, -4964982, -135291, - -2669322, -809601, -2134599, 3066607, -1254131, 5025112, -2381559, -723702, -2641405, -962073, - -3751654, -1529008, 687195, 936303, -332860, 188979, -2123861, 1269163, 3212636, 414464, - -1949915, 2244121, -3111704, 1432372, 1159641, -163209, -1067299, -504659, -277025, -438087, - 2147, -18176302, -21524228, -4054449, -1151051, -923418, -3373697, -1455994, 6603512, 3839701, - 1440962, 1754494, -2791729, -601295, 4982162, -1836099, 8070244, -6234145, -1623498, 6500433, - -1181116, -747324, -3710852, 4453881, 5025112, 79457, 4958540, -1782411, 2250563, -109522, - -2630668, -433792, -2057289, -904091, -1297080, 2690797, -1876901, -470299, -2939905, 2068027, - -1471026, 4509716, -6994354, 2995740, 2598455, -4286378, 214748, -2828236, 893353, -3219078, - 1157494, 1359357, -3968550, -605590, -1355062, -6094559, -3395172, -1681480, -2892661, -648540, - -365072, 343597, -2334315, 358630, -4649302, 1348620, -15807627, -9262097, -12232067, -6468221, - -8123931, -1052267, 8106751, -8441758, 6545530, 3974992, -4398047, 8974334, -1292785, 1660005, - -5785321, -743029, -2488934, -481036, 191126, 2141041, 1249836, 4645007, 9249212, -2553358, - 1413044, -4436701, -4380867, -4121021, 1084479, 3697967, -1163936, -1400159, -1037235, -2886218, - 3326452, -1063004, -34360, -2819646, -1986422, -1896228, -2656437, -300648, 57982, -2456721, - 1758789, -3725884, 1544041, -2181844, -191126, 1286343, -2521146, 3311420, -5634997, -1848983, - 747324, -1758789, -2911988, 1501091, -657130, -3519726, 5950677, 3236258, 1002875, 1090922, - 1367947, 1410897, -2688650, -44233868, -5214091, 3730179, -3388729, 7507603, 3262028, -8841190, - 1075889, 1651415, -3036542, -7385197, -2929168, -1696512, 2005750, 674310, -7103876, -2495376, - -3856881, -6569153, -5789616, -13003013, -6981470, -7546258, -9455371, 7511898, -5098126, 2821794, - 5390184, -3895535, -6463926, -2321430, -1513976, 1619203, 4005057, 2521146, -5385889, -6393059, - 4956393, 3296388, 3886946, 5787469, 661425, 57982, 2074469, -193274, -2686502, 1513976, - -1529008, -803159, 3176128, 8585640, -3002182, -4221953, 1812476, -2684355, -435939, 4417374, - -8617852, -109522, -2965675, -470299, -367220, 21475, -1196148, 1632088, -2705830, 2976412, - 35465692, 31089120, 8304320, 18932216, 5115306, 10930692, -1868311, -1653562, 5164698, 7198365, - 3670050, -12253542, -4204773, 7726646, 8540542, -3150359, -4312147, 1449552, 3470334, 4136054, - 463856, -6373732, -13911399, -5145371, 7352984, -646393, 7552700, -1812476, -2626373, 1571958, - -6575595, -3702262, -3904125, 7071664, -9004399, -6083821, 1385127, 1466731, -2476049, -294205, - -2740189, 2626373, 3382287, 3070902, 6753836, 4037269, -115964, -5746666, 5134634, -545461, - 2729452, -2834679, 1821066, 4211216, -916976, -1185411, -2937758, -3204046, 1651415, 384400, - 2443837, -2778844, 1982127, 5478231, -1471026, -3068754, 3532611, 42874512, 8293582, -8686571, - 7264937, 4294968, -7902740, -2089502, 4443144, -8590, 1614908, -923418, -1425929, -9281424, - -8536248, 3665755, 8632884, 8358007, -8199093, -17467632, 2712272, -519691, -6599218, -9051644, - -1245541, 4153234, -2725157, 6287832, 10806138, -4170413, -3105261, -1644973, -1226213, -2272038, - -15708843, 8158291, 7973607, -511101, 5265630, -5072357, -1200443, -4625680, 6818261, 6721624, - 1125281, -1913408, -2162516, 3678640, 1290638, -2422362, -3697967, -146029, 3792456, -5347235, - -2851858, -2965675, 1260573, 1537598, -6163278, 3225521, 7614977, -5995775, 313533, -1503239, - -624918, -111669, 1112397, 360777, -2175401, -4823249, -3189013, -1346472, 3453154, -1782411, - -11559904, -8029442, 1378685, 10460393, -10496900, 7415261, 3764539, 1434519, 2450279, 1610613, - 7249905, 11074573, 579821, 3176128, 1526861, -9949292, -8553427, 8400956, 1451699, -10264972, - 6212670, -8791798, 1702955, 10333691, -380105, -3085934, 12337294, 1675037, 1123134, 790274, - 663572, 893353, -4986457, 2987150, 5166846, 7761006, -5989332, -3302830, 1556926, 934155, - -2566243, -5862631, 3972845, -2237678, 2888366, 1200443, -1638530, -1986422, 1163936, 3478924, - -2385854, -1335735, -251256, 1958505, -5403069, -2800319, 3055869, 478889, -1567663, -1088774, - 2811056, -46250356, -42674796, -9397388, -19821274, -17190606, -9902047, -2843268, -7447474, -8727374, - 5952825, 1758789, -2128156, 10271414, 3655017, 12317966, 9363029, 2877628, 3728032, 4610648, - -18663780, 8967892, -1464584, -3753802, -3506841, -10825465, -3418794, -3620658, 10591389, -3328600, - -6313602, -2931315, 1707250, -1155346, -2080912, 2570538, -2757369, -1574106, 6530498, -6101001, - -491774, -1795296, 11729556, 4894115, 4748087, -8688719, 790274, 8263517, -4080219, 2199023, - 167504, 2241973, 193274, 981400, -455267, 5405217, -489626, -1329292, 3895535, -2293513, - 2289218, 4778151, -1840394, -2729452, 1627793, 2050847, -3049427, -1002875, -28578712, 60851096, - 38912404, 11899207, 4176856, 3749507, 4752382, 6408091, 6440304, 12496207, 26328150, 987843, - 3335042, 5149666, 5688684, 6167573, -4475356, 24665998, 18303004, -17242146, 12702366, 1748052, - -2345052, 5499706, 15554224, -14836965, -3732327, 586263, -11523397, -8669391, -8147553, 16698833, - -444529, -3697967, 2617783, 319975, -4857608, -14549202, 9942849, 7198365, -2055142, 3605625, - 10179072, -7279970, 5675800, -169651, -2282775, 7050189, 6944962, 779537, 1183264, -4295, - 5641440, 6745246, 341450, -2229088, 201863, -3294240, 5589900, 180389, -1876901, -3629247, - -1657857, 3008625, 2153926, 8080981, -2473901, 2108829, -1726577, 66080220, -23081154, -23330262, - 10735271, 2216203, -8385924, -8012262, -11860552, -12416750, -8516920, -7834021, 11297911, 2199023, - 1623498, -6607807, -5158256, -19816980, 261993, -8065949, -13086765, 10750303, 7677254, 1904818, - 7146826, 1537598, -2087354, -4707284, -113817, -4045859, 5875516, 9131100, -9895605, -4146791, - 375810, 4788889, 13449690, 3551938, 17955110, -9532680, 5804649, 14353781, 8914205, -7810398, - -2005750, 1286343, -3571265, 5948530, -822486, -83752, 9607842, 4737349, 1664300, 457414, - -92342, -4402342, 19327, 700080, -4123169, -2843268, 4297115, -2083059, -7947837, -1625645, - 324270, -1855426, -8308614, 1715839, 1778117, 1625645, 2379412, -2229088, -3455301, 21154862, - 40677636, 15741055, 11012296, 12513387, -3541201, 3897683, -11413876, 19950124, 8074539, 19146964, - 5918465, 7166153, -17534204, 21839908, 32800666, 3932043, 21296596, -4479651, -17102560, -17261474, - 15631533, -5248450, 12487617, 2048699, 5037997, -9790378, 9659381, -3607773, -3393024, 15592879, - 11057393, -8600672, 14845554, 1382980, 2712272, -3279208, -11196980, 2813204, 809601, -6532646, - -7084549, 6242735, 9163313, 2699387, -3315715, 4015795, 270583, 9463960, -6017249, -1217623, - -9871982, 773094, 9408126, 6043019, -4587025, -425202, 3176128, -9068823, -852551, -6335077, - -3519726, 1372242, 2035815, 5375152, -7116761, 2499671, -8175470, 208306, 9416716, 2931315, - 1554778, -785979, -46746424, -3139621, -10103911, 12884902, -9637907, 10511932, 938450, 8327942, - -616328, 7118909, -23021024, 6438156, -2138894, -9034464, 4806069, -10885595, 7033009, -10975789, - -4866198, -23654532, 13868449, 27288074, -10200547, -4153234, -2465311, -5010080, 4949950, 5053029, - 8783208, -21051782, 6904160, -13277891, -2914135, -1157494, 11345156, 3579855, -4520453, 1788854, - 3058017, 7118909, 8536248, -13286481, -3395172, 1428077, -8514773, -8783208, -708670, -6390912, - 3440269, 6775311, 1883343, 833224, -753767, 6296422, 19071802, 9807558, -10123238, 1836099, - 5132486, -5920613, 7438884, 1243393, -6027987, -1103807, 9285719, 423054, 8982924, -10982231, - -1215476, 5774584, 1602023, -86215024, -33268816, 18285824, 5682242, -10524817, 11656541, 10801843, - 15597174, -3324305, -7825431, 14841259, -94489, -9000104, 18657338, -21124796, -28995324, -12773233, - -15906411, 10471130, 13503377, 227633, 2922725, 23025320, 9133248, -22243636, -11072426, -13488345, - 3401614, -20639466, -19260780, -618475, 2033667, -7599945, -9691594, -12412455, -7554848, -11327976, - -12438225, -3882651, 96637, -3766686, -1599875, -7524783, -2168959, -5675800, -14409615, 29450590, - 1363652, 7264937, -12869870, 8070244, -1812476, 4294968, -10602127, -45097, -2669322, -7591355, - -6120329, -3309272, 8227010, 7159711, 6120329, 4833986, 4406637, -1136019, -1297080, -6682969, - -2707977, -206158, -2068027, 9008694, 809601, 5291400, -1559073, 45941116, 16316581, 37072012, - 5342940, 2836826, -15141907, 5995775, 21489868, 8602819, 1108102, 15077483, -13709536, -5587753, - 11474005, -8843338, 3637837, 21388938, 6227703, 3148211, 6148246, -3592740, 8579197, -6738804, - -382252, 3805341, 586263, -5181878, -6472516, 2471754, 21041044, -6861211, 4666482, -19879256, - -11452530, 9302899, 22127672, -17480516, -654983, 11134703, 1954210, 4282083, -15412490, -5025112, - -13469017, -21966610, -6734509, -12217034, -13883482, 10441065, 3180423, 3586298, -8596377, -4675072, - -2587718, -21210696, -3115999, 11763915, -9567040, 9399536, 18285824, 2836826, 11622182, 8377334, - -657130, -4071629, 9749576, -14368813, -2250563, -1037235, 7211250, 4148939, 6320045, 54580444, - -11403138, -17766132, 3451006, 11944304, 11070278, 9798968, -2379412, 10619307, 4279935, -14403173, - -26499948, 17366700, 5555540, 12320114, 8516920, -8096014, 3839701, -11280732, -17154100, 17579302, - -10945724, -23014582, 2950643, -4537633, 3315715, -3124589, -1668595, -6556268, -8214125, 5564130, - 15446850, -22527104, 21597244, -19222126, -23310934, 1316408, 6856916, -14448270, 11035918, -2931315, - 7142531, -12614319, -5334350, 18618684, 8431021, 18848464, 5647882, 416612, 6661495, -1172526, - 1032940, 9302899, -665720, 687195, -9120363, -7526930, -5377299, 6148246, -7172596, -7410966, - 11860552, -1604170, 13187697, 743029, -9923522, 14587856, 12010876, -2370822, 7507603, -9547712, - -14235669, 3715147, -6169721, -11119670, 45996952, 56846040, -9049496, 682900, -28829968, -2896956, - -21163452, -15212774, -5392332, -10322954, 15541339, 274878, 11937862, -26278758, 21560736, -16475495, - 22011708, 1015760, 17358110, -6262063, 21996676, 7589207, -11282879, 4913443, -16587164, 10767483, - -9513353, 25492778, 6953552, 16778290, -28374702, -15811922, -7453916, -14001593, -6549825, -9584220, - 221191, 34312492, -16552804, 17237852, 28348932, 4088809, 12043088, 115964, -7275675, -13651554, - -11132555, 1335735, -8274255, 17411798, -12197707, 7879118, 20379620, -2993592, -2632815, -1932735, - 16456167, 18500572, 4941360, -9021579, -8613557, -4954245, 6324340, -17594334, 2168959, -3539053, - -5854041, -277025, 10151155, 412317, 14759655, 14008036, 1417339, 2658585, -8860518, -44989784, - -38506528, 16593606, -4305705, 20742544, -11456825, -11224897, -13868449, -13146895, -4722317, -35794256, - -11875585, 12311524, 19531364, 6627135, -23375360, -7980049, -10799695, 9148280, 35835060, 18472654, - 9356586, 214748, 3438121, 642098, 6925635, 16915728, 2226941, 3545496, -9564892, -390842, - -14048838, 4522601, 7941395, 11815455, 2409477, -10258529, -3796751, 15934329, -7344394, 5162551, - 4211216, 4879083, 22722524, -13685913, -17991618, 5564130, 16365973, 2682207, 16344498, 17343078, - 9723806, 11523397, 5656472, 1221918, 10965052, 29792040, -16902844, -1700807, 5748814, 1056562, - -12994424, -4196183, 11027329, -2031520, -11602854, 2918430, 23383950, -20560008, 6631430, -19658066, - 10778220, 4745939, 3496104, -1475321, -89096952, -30457760, -2456721, -8366597, -22320946, 13831942, - 17368848, 30560840, 9429601, 19393924, -18010946, -36567352, 16812650, -8269960, 487479, -19462644, - 19194208, -11300059, -1359357, 18730352, -50968376, 5357972, 25877178, -48576080, -13376676, -16904992, - 1975685, 2297808, 11613592, -13174812, 15526307, 2731599, -26091926, -12796855, 2680060, -2847563, - -13093208, 11660836, 29568702, 6826851, 7945690, -4372277, -7758859, 17864916, 2884071, -8360154, - -43246024, -6453189, 5149666, -21408264, 10088878, 9156870, 1507534, -16494822, -15270756, -17630840, - 38373384, 10524817, -6043019, 7730941, -32918776, 4082367, -15448997, -17439714, 17008070, -2761664, - 208306, -11014444, -40965400, 5585605, 12605729, 7209103, -2710124, 24230058, 1395864, 1361505, - 93802088, 23882166, 24013162, 20796232, -6281390, 968515, 96409128, 28067612, -8317204, 59191092, - -33474976, 24743306, 4821101, 15141907, 23764054, -7406671, -17255032, 18242874, -3734474, -58387932, - 14489072, 15146202, 11899207, 27786290, 17126182, 18122614, -16965120, 3569118, -16423955, -8366597, - 16752520, 5650030, -34677564, -20474110, -29184302, -42679092, -7148973, 8622147, 20119774, 17768280, - 14766098, 12773233, -7015829, 22048214, 11632919, -27303108, -11138998, 6987912, 19585050, 240518, - 3554086, 35654672, -7314330, -3304977, -10226317, -2141041, 17338782, -15891379, -738734, -22355304, - -20703890, -12809740, 21889300, 31441308, -10363756, 2448131, -7359427, -19617264, -14673756, 5312875, - -24238648, -5471789, -7780334, -13398150, 94725504, 57475252, 3066607, 36816460, 26394722, 8731669, - 40422084, 12564927, -1215476, -12028056, -10655814, -26205742, -74474736, -4632122, 5976447, -24249386, - -15448997, -2059437, 50002008, 17501992, -14521284, 1236951, 2299955, -6650757, 20308752, -2985002, - -14615774, -8450348, -13881334, 8686571, -19795504, -44465796, -375810, -22975928, -37853696, 7632157, - 14254996, 23259396, 11351599, 20598664, -15283641, -38418484, -26858578, -34565896, 12105365, 32974612, - 25312390, 17635136, 30988190, 992137, 18702436, 44418552, -38427072, 6629282, -18348100, 98784, - 10907069, 13052406, 19666656, -2224793, -46785080, -35055524, 5450314, -10374494, -14828375, -9345849, - -11959336, -31776316, 438087, 19333796, -4655745, 13773960, -12193412, -3955665, -4840428, 21904334, - -46355584, 4574140, -35094176, 15066745, -68305016, -3137474, -21586506, -37224480, 66129612, 35330400, - -21315922, -59023588, -12917114, -22183506, -48829484, 38386272, 3951370, -35944580, -11108933, 19327352, - -31168578, -23398982, -15388868, -40067748, -12985834, -1554778, -29624536, -29517162, 42651172, -15760382, - -10350871, -4337917, -6700149, 33833604, -35691180, -18300856, 10531260, -10593537, 2516851, -9030169, - 22473416, -36447092, 15588584, -58014272, 8686571, -16716013, -20160576, 60513940, 9300752, -22475564, - 14665166, 12693776, -45749992, 34074124, -4958540, -10344429, -257698, 19726784, -4509716, 1282048, - -19711752, 13312251, 19782620, 28007482, -19503446, -59543280, 46473692, -3674345, 21902186, 22162032, - -7829726, 13883482, 36088464, -37209448, -88989576, -53206056, 13743895, -34765612, 6251325, -25765508, - -9822590, -36702644, -21343840, 15032386, 53629108, 51593296, 10924249, 35731980, -23901494, 64136748, - 51133732, -41143640, -32579474, 8714489, 13348758, 53861036, 22771916, 33661808, -10559177, 12118250, - -4883378, -8317204, -9474698, 50203872, 25935160, 47987668, 48120812, 6474663, -234076, -24539296, - 24522116, -4947803, -43490840, -32981054, -6236293, -26096222, -2785286, -26766236, -18895708, 12154757, - -3934190, -17832704, 40969692, 42857332, -23437636, -11117523, 64340756, 22728966, -39505108, -43922484, - -12268574, 13076028, 727997, -10290742, -27279484, 22688164, 10548440, -12496207, 9790378, 4123169, - -34432752, -19370302, 6287832, -17231408, -15367393, -23036058, 53027812, -43602508, -33277406, -34456376, - -51299088, -43548820, -676457, -34220152, -44671956, 11690901, -4146791, -61544732, 43785044, 8136816, - -4127464, 22256520, 67647880, 65277060, 27631672, -79345224, 29149944, 21371758, -78434696, -843961, - -38104948, -18051748, 39711268, -46956876, 26914412, 204011, -8615704, -16666621, 7584912, -3738769, - 12979391, -8914205, -42329052, 40718436, 18618684, 48717816, -5660767, -16258599, -24122684, 19767586, - -21829172, 57447336, 11398843, 34507916, -45423576, 35624608, 633508, 12584254, -29811368, 9689446, - -35306780, -5542656, -36247376, 14304389, 23504208, -47167332, 882616, -38968240, 17008070, 22499186, - 21051782, -3498251, -67703720, -429497, 16035260, -6425271, 27805618, -64392296, 14315126, -27573690, - 6165426, -23929410, 1670742, 14201309, 94399088, 116943368, 47382080, 41519448, -67832568, 65386584, - 92223688, -100860864, 11190537, 67381592, 10516227, -120480272, -13140452, -64815352, 20349556, 25492778, - -31733366, -10728828, 21238614, -54535348, -5409512, -20514912, -28394028, 12322261, -43314744, 47113644, - 31621696, 60544008, -30169998, 11190537, -7292855, -22497038, 73637216, 163209, -35231616, -14534169, - 15189152, -14328011, -20448340, -21120502, 36996848, 15940771, 51784420, -1816771, 18378166, 71199824, - -44878112, 11261404, -30805652, 57082264, -22587234, 27958090, 9852655, 188979, -21889300, -36612448, - -27575838, 13675176, 48451528, -43883828, 40630392, 52525304, 23566486, 61106648, -29710436, -19514184, - 36137856, -2690797, -8759586, -49115100, -5383742, -39191576, 6637872, 61510376, 24157044, 21169894, - 18854906, }, + 962073, -1997160, 1969243, -977105, 848256, -12885, 942745, -57982, 1020055, -1251983, + -590558, 594853, -846109, -141734, -1324997, -92342, -489626, 2634963, 1251983, -1604170, + 62277, 657130, -60130, -371515, 682900, 73014, 448824, 635655, 562641, -816044, + -219043, 77309, 113817, 156766, -57982, 38655, -62277, 137439, 12885, -6442, + -81604, -15032, 66572, -21475, 47245, 6728067, 3895535, 2087354, 1043677, 1129576, + 382252, 801011, -148176, -150324, 1932735, 1095217, 897648, 1853278, 1550483, 2115272, + -2948495, 2561948, 708670, 169651, 513249, -178241, -1320703, -940598, 1509681, 682900, + 1234803, 55835, -423054, 901943, -105227, -438087, 912681, 476741, 1340030, 382252, + 891206, -1331440, -803159, 715112, 130997, 768799, 319975, -165356, -354335, -1080184, + 223338, 3599183, -3721589, -766652, -725850, -947040, -199716, -124554, -648540, -586263, + 81604, 94489, -453119, 244813, -1099512, -408022, -113817, 654983, -3953518, -438087, + 912681, -442382, -408022, 296353, 158914, 229781, 1941325, -951335, -511101, -1045825, + -98784, 496069, 921271, -901943, -551903, 942745, -820339, -1398012, -57982, -412317, + 562641, -446677, -292058, 180389, 511101, -874026, 369367, -12895639, -8843338, -3519726, + -4127464, -2224793, -2177549, -1967095, -957778, -2381559, -1962800, -777389, -1535451, -133144, + -575526, -1241246, -1801739, -1913408, -809601, -1080184, -2025077, -188979, -2523293, 81604, + -212601, -270583, -1533303, -182536, -1163936, 88047, -1492501, -861141, 493921, -1002875, + 178241, -2435247, -474594, 1316408, 747324, 42950, -371515, -633508, 204011, 322123, + 1170379, -605590, -111669, -16935056, -1015760, 2276333, -124554, 738734, -208306, 100932, + -1455994, 1535451, 481036, 1829656, 1153199, 3665755, 2540473, 283468, -1511829, -736587, + -429497, 747324, -577673, -3088082, -2942053, -1398012, -536871, 212601, 302795, 659278, + -214748, 169651, 246961, -594853, -191126, -21475, -2052994, 1213328, 369367, -150324, + -124554, -682900, -1187559, 736587, 152471, -646393, 569083, 633508, 717260, 19020262, + 13462575, 2568391, 5246303, 1007170, 1769527, 4161823, 2229088, 599148, 2594160, 959925, + -1073742, -631360, 925565, 1393717, -2546916, -429497, -1516124, 3358665, 1748052, 794569, + 1745904, 783832, 914828, -49392, -141734, -942745, 1370095, 1533303, 1410897, 1636383, + 2119566, 1151051, 3083787, 586263, -161061, 981400, 212601, -648540, -236223, -594853, + -603443, -105227, 1425929, 219043, 231928, 28357522, 12217034, 3543348, 3440269, 2211908, + 1546188, 339302, 214748, 2997887, 732292, 1604170, 2452426, 1116692, -68719, -998580, + 5068062, -584116, -2630668, -1694365, 1324997, -70867, 2746632, 732292, 412317, -633508, + -1157494, -498216, -489626, 1017907, -124554, 332860, 191126, 27917, -566936, 790274, + 3524021, 2025077, 2360085, 1906966, 1769527, 770947, 725850, 227633, 1187559, -1125281, + 743029, 9251360, -9751723, -3111704, -4133906, -3811784, -1876901, -710817, 1511829, -1490354, + 285615, -3768834, 1391569, -1440962, -3171833, 773094, -2224793, -3264175, -2115272, 2929168, + 2428804, -1159641, 1309965, -2186138, 966368, -3901978, 354335, 545461, -491774, -972810, + 955630, -3094524, -1211181, 317828, -893353, -959925, -523986, 182536, 485331, 1462436, + 257698, 2570538, -846109, -773094, -654983, -1346472, -229781, -693637, 543313, -1157494, + -33648920, -17313014, -5978595, -4984310, -5076652, -3453154, -4363687, -3113851, -4765266, -1054415, + -2057289, -727997, 401579, -2203318, -384400, 173946, 206158, -3264175, -1887638, -1554778, + 478889, -4346507, 605590, -2046552, -3549791, 188979, 141734, 126702, 100932, -1449552, + -813896, -81604, -83752, -169651, -1194001, -73014, 584116, 1013612, 637803, -1565516, + 1043677, -1563368, 1200443, -2604898, -1483911, 274878, -1159641, -30065, -296353, -19870666, + 10361609, 4526896, 1501091, 2826089, 367220, 843961, 2241973, 2774549, 1299228, 1881196, + -1492501, -463856, -2248416, 2658585, 384400, 562641, 3335042, 208306, -2493229, 4236985, + -2905546, 425202, 3264175, -949188, 736587, 526134, -244813, -1640678, -577673, 1024350, + 818191, 238371, -783832, 135291, -1387274, 3974992, 156766, -2147, -1720134, -719407, + -1178969, -880468, 1928440, 2074469, -715112, 242666, -326418, 646393, -47245, -103079, + -616328, 506806, 29970282, 12906377, 3287798, 7020124, 3874061, 1831804, 2866891, 2697240, + -139586, 1995012, 2836826, 792421, -146029, 1625645, 4050154, -1329292, -934155, -3236258, + 680752, 3921305, 1449552, 259846, -2340757, -1086627, -1110249, 4112431, 1069447, 2181844, + 994285, -1853278, -3281355, 3562675, 1724429, -2095944, -1230508, 3453154, 2658585, -100932, + 500364, -315680, 1277753, 989990, -556198, 723702, -1428077, -539018, 1602023, -949188, + -985695, 1971390, 1432372, 936303, 88047, 35416300, 7917772, 5744519, 2808909, 2529736, + 1342177, 2607045, 3500398, 5076652, 3427384, -1198296, 4342212, -1005022, 1301375, 719407, + 3697967, 4982162, 3521873, -1110249, 5978595, -1316408, -423054, -3270618, 998580, -1127429, + 1123134, 1342177, -1584843, -2660732, -843961, 249108, -1788854, -871878, 1056562, 1058710, + -2134599, -2192581, -657130, 515396, 139586, 365072, -680752, -259846, -412317, -1020055, + 1080184, -1569811, 1406602, -1668595, -352187, -1333587, 371515, -646393, 3966402, -15631533, + -5216238, -5478231, -3781719, 1144609, -1041530, -3212636, 1799591, 322123, 2248416, -81604, + 122407, -3502546, -2727304, -1522566, -2800319, 429497, -2967823, -5302137, 981400, 854699, + -2660732, -343597, -2420214, 708670, 685047, -225486, -5772436, -1380832, 272730, -397284, + 403727, 1767379, -4123169, -968515, -2602750, 1561221, -384400, 38655, 2579128, -2422362, + -242666, 1093069, -399432, -614180, 1226213, 953483, -1655710, -1687922, -3182571, -191126, + -2439542, -1649268, -1063004, -36771364, -12796855, -7329362, -2153926, -3674345, -373662, -1868311, + -2972117, -3137474, 3992172, 356482, -1825361, -135291, -6356552, -3231963, -3201898, 5291400, + -4423817, -8654359, 549756, 1374390, 515396, -3002182, -1052267, 2168959, -4284230, -133144, + -4361540, -955630, 2173254, -1715839, 410169, 4864051, 339302, -637803, -1258425, 1548336, + 1267015, 1458141, -1503239, 64425, 1333587, 2332167, 1078037, 1005022, -3974992, 1058710, + -309238, -1614908, -846109, 715112, -633508, -1629940, -1413044, -1700807, -24371792, 5499706, + 558346, -3189013, 4595615, -2976412, -1960653, 914828, -3959960, -2675765, -693637, 1524713, + -3088082, 4273493, 281320, -322123, 2274185, 1881196, 3459596, -556198, 4696547, 6281390, + 4866198, 1273458, 4187593, -1511829, 2723009, -3171833, -2843268, -1477469, 547608, 1748052, + -1413044, -3060164, -1361505, -289910, 1926293, -2969970, 2151779, 453119, 1696512, -929860, + -2338610, -3609920, -3848291, 813896, -1889786, 854699, -4095251, -1477469, 2076617, -2933463, + 603443, -2138894, 1447404, -861141, 1408749, 36507, -601295, -328565, -1556926, 16348793, + 27200028, 7788923, 7127498, 9706626, 8010114, 1479616, 6367289, 5514738, 3124589, 11778948, + 2899103, 1926293, 5205501, 4666482, 2570538, 2018635, 1314260, 1885491, -1466731, 5899138, + -1544041, 487479, -1823214, 3700114, 246961, -1075889, 3191161, 3639985, 1370095, 4859756, + -3466039, -5916318, -1267015, -444529, 1303523, -511101, 2544768, -2437394, 2314987, 4883378, + 2183991, -4567698, -893353, 2149631, 912681, -2302103, 3167539, 1110249, 1881196, 1939178, + 2823941, 792421, -775242, 554051, -2536178, -805306, 2370822, 2031520, -1232656, -173946, + 62150324, 6577743, -760209, 4024384, -251256, 5493263, -73014, 1602023, 539018, 5778879, + 2484639, -2141041, 1745904, 2856153, 1305670, -3223373, -7183333, -3064459, -3098819, 1413044, + -4464619, -594853, -416612, 1324997, 7606387, 4466766, 1318555, 3268470, -4964982, -135291, + -2669322, -809601, -2134599, 3066607, -1254131, 5025112, -2381559, -723702, -2641405, -962073, + -3751654, -1529008, 687195, 936303, -332860, 188979, -2123861, 1269163, 3212636, 414464, + -1949915, 2244121, -3111704, 1432372, 1159641, -163209, -1067299, -504659, -277025, -438087, + 2147, -18176302, -21524228, -4054449, -1151051, -923418, -3373697, -1455994, 6603512, 3839701, + 1440962, 1754494, -2791729, -601295, 4982162, -1836099, 8070244, -6234145, -1623498, 6500433, + -1181116, -747324, -3710852, 4453881, 5025112, 79457, 4958540, -1782411, 2250563, -109522, + -2630668, -433792, -2057289, -904091, -1297080, 2690797, -1876901, -470299, -2939905, 2068027, + -1471026, 4509716, -6994354, 2995740, 2598455, -4286378, 214748, -2828236, 893353, -3219078, + 1157494, 1359357, -3968550, -605590, -1355062, -6094559, -3395172, -1681480, -2892661, -648540, + -365072, 343597, -2334315, 358630, -4649302, 1348620, -15807627, -9262097, -12232067, -6468221, + -8123931, -1052267, 8106751, -8441758, 6545530, 3974992, -4398047, 8974334, -1292785, 1660005, + -5785321, -743029, -2488934, -481036, 191126, 2141041, 1249836, 4645007, 9249212, -2553358, + 1413044, -4436701, -4380867, -4121021, 1084479, 3697967, -1163936, -1400159, -1037235, -2886218, + 3326452, -1063004, -34360, -2819646, -1986422, -1896228, -2656437, -300648, 57982, -2456721, + 1758789, -3725884, 1544041, -2181844, -191126, 1286343, -2521146, 3311420, -5634997, -1848983, + 747324, -1758789, -2911988, 1501091, -657130, -3519726, 5950677, 3236258, 1002875, 1090922, + 1367947, 1410897, -2688650, -44233868, -5214091, 3730179, -3388729, 7507603, 3262028, -8841190, + 1075889, 1651415, -3036542, -7385197, -2929168, -1696512, 2005750, 674310, -7103876, -2495376, + -3856881, -6569153, -5789616, -13003013, -6981470, -7546258, -9455371, 7511898, -5098126, 2821794, + 5390184, -3895535, -6463926, -2321430, -1513976, 1619203, 4005057, 2521146, -5385889, -6393059, + 4956393, 3296388, 3886946, 5787469, 661425, 57982, 2074469, -193274, -2686502, 1513976, + -1529008, -803159, 3176128, 8585640, -3002182, -4221953, 1812476, -2684355, -435939, 4417374, + -8617852, -109522, -2965675, -470299, -367220, 21475, -1196148, 1632088, -2705830, 2976412, + 35465692, 31089120, 8304320, 18932216, 5115306, 10930692, -1868311, -1653562, 5164698, 7198365, + 3670050, -12253542, -4204773, 7726646, 8540542, -3150359, -4312147, 1449552, 3470334, 4136054, + 463856, -6373732, -13911399, -5145371, 7352984, -646393, 7552700, -1812476, -2626373, 1571958, + -6575595, -3702262, -3904125, 7071664, -9004399, -6083821, 1385127, 1466731, -2476049, -294205, + -2740189, 2626373, 3382287, 3070902, 6753836, 4037269, -115964, -5746666, 5134634, -545461, + 2729452, -2834679, 1821066, 4211216, -916976, -1185411, -2937758, -3204046, 1651415, 384400, + 2443837, -2778844, 1982127, 5478231, -1471026, -3068754, 3532611, 42874512, 8293582, -8686571, + 7264937, 4294968, -7902740, -2089502, 4443144, -8590, 1614908, -923418, -1425929, -9281424, + -8536248, 3665755, 8632884, 8358007, -8199093, -17467632, 2712272, -519691, -6599218, -9051644, + -1245541, 4153234, -2725157, 6287832, 10806138, -4170413, -3105261, -1644973, -1226213, -2272038, + -15708843, 8158291, 7973607, -511101, 5265630, -5072357, -1200443, -4625680, 6818261, 6721624, + 1125281, -1913408, -2162516, 3678640, 1290638, -2422362, -3697967, -146029, 3792456, -5347235, + -2851858, -2965675, 1260573, 1537598, -6163278, 3225521, 7614977, -5995775, 313533, -1503239, + -624918, -111669, 1112397, 360777, -2175401, -4823249, -3189013, -1346472, 3453154, -1782411, + -11559904, -8029442, 1378685, 10460393, -10496900, 7415261, 3764539, 1434519, 2450279, 1610613, + 7249905, 11074573, 579821, 3176128, 1526861, -9949292, -8553427, 8400956, 1451699, -10264972, + 6212670, -8791798, 1702955, 10333691, -380105, -3085934, 12337294, 1675037, 1123134, 790274, + 663572, 893353, -4986457, 2987150, 5166846, 7761006, -5989332, -3302830, 1556926, 934155, + -2566243, -5862631, 3972845, -2237678, 2888366, 1200443, -1638530, -1986422, 1163936, 3478924, + -2385854, -1335735, -251256, 1958505, -5403069, -2800319, 3055869, 478889, -1567663, -1088774, + 2811056, -46250356, -42674796, -9397388, -19821274, -17190606, -9902047, -2843268, -7447474, -8727374, + 5952825, 1758789, -2128156, 10271414, 3655017, 12317966, 9363029, 2877628, 3728032, 4610648, + -18663780, 8967892, -1464584, -3753802, -3506841, -10825465, -3418794, -3620658, 10591389, -3328600, + -6313602, -2931315, 1707250, -1155346, -2080912, 2570538, -2757369, -1574106, 6530498, -6101001, + -491774, -1795296, 11729556, 4894115, 4748087, -8688719, 790274, 8263517, -4080219, 2199023, + 167504, 2241973, 193274, 981400, -455267, 5405217, -489626, -1329292, 3895535, -2293513, + 2289218, 4778151, -1840394, -2729452, 1627793, 2050847, -3049427, -1002875, -28578712, 60851096, + 38912404, 11899207, 4176856, 3749507, 4752382, 6408091, 6440304, 12496207, 26328150, 987843, + 3335042, 5149666, 5688684, 6167573, -4475356, 24665998, 18303004, -17242146, 12702366, 1748052, + -2345052, 5499706, 15554224, -14836965, -3732327, 586263, -11523397, -8669391, -8147553, 16698833, + -444529, -3697967, 2617783, 319975, -4857608, -14549202, 9942849, 7198365, -2055142, 3605625, + 10179072, -7279970, 5675800, -169651, -2282775, 7050189, 6944962, 779537, 1183264, -4295, + 5641440, 6745246, 341450, -2229088, 201863, -3294240, 5589900, 180389, -1876901, -3629247, + -1657857, 3008625, 2153926, 8080981, -2473901, 2108829, -1726577, 66080220, -23081154, -23330262, + 10735271, 2216203, -8385924, -8012262, -11860552, -12416750, -8516920, -7834021, 11297911, 2199023, + 1623498, -6607807, -5158256, -19816980, 261993, -8065949, -13086765, 10750303, 7677254, 1904818, + 7146826, 1537598, -2087354, -4707284, -113817, -4045859, 5875516, 9131100, -9895605, -4146791, + 375810, 4788889, 13449690, 3551938, 17955110, -9532680, 5804649, 14353781, 8914205, -7810398, + -2005750, 1286343, -3571265, 5948530, -822486, -83752, 9607842, 4737349, 1664300, 457414, + -92342, -4402342, 19327, 700080, -4123169, -2843268, 4297115, -2083059, -7947837, -1625645, + 324270, -1855426, -8308614, 1715839, 1778117, 1625645, 2379412, -2229088, -3455301, 21154862, + 40677636, 15741055, 11012296, 12513387, -3541201, 3897683, -11413876, 19950124, 8074539, 19146964, + 5918465, 7166153, -17534204, 21839908, 32800666, 3932043, 21296596, -4479651, -17102560, -17261474, + 15631533, -5248450, 12487617, 2048699, 5037997, -9790378, 9659381, -3607773, -3393024, 15592879, + 11057393, -8600672, 14845554, 1382980, 2712272, -3279208, -11196980, 2813204, 809601, -6532646, + -7084549, 6242735, 9163313, 2699387, -3315715, 4015795, 270583, 9463960, -6017249, -1217623, + -9871982, 773094, 9408126, 6043019, -4587025, -425202, 3176128, -9068823, -852551, -6335077, + -3519726, 1372242, 2035815, 5375152, -7116761, 2499671, -8175470, 208306, 9416716, 2931315, + 1554778, -785979, -46746424, -3139621, -10103911, 12884902, -9637907, 10511932, 938450, 8327942, + -616328, 7118909, -23021024, 6438156, -2138894, -9034464, 4806069, -10885595, 7033009, -10975789, + -4866198, -23654532, 13868449, 27288074, -10200547, -4153234, -2465311, -5010080, 4949950, 5053029, + 8783208, -21051782, 6904160, -13277891, -2914135, -1157494, 11345156, 3579855, -4520453, 1788854, + 3058017, 7118909, 8536248, -13286481, -3395172, 1428077, -8514773, -8783208, -708670, -6390912, + 3440269, 6775311, 1883343, 833224, -753767, 6296422, 19071802, 9807558, -10123238, 1836099, + 5132486, -5920613, 7438884, 1243393, -6027987, -1103807, 9285719, 423054, 8982924, -10982231, + -1215476, 5774584, 1602023, -86215024, -33268816, 18285824, 5682242, -10524817, 11656541, 10801843, + 15597174, -3324305, -7825431, 14841259, -94489, -9000104, 18657338, -21124796, -28995324, -12773233, + -15906411, 10471130, 13503377, 227633, 2922725, 23025320, 9133248, -22243636, -11072426, -13488345, + 3401614, -20639466, -19260780, -618475, 2033667, -7599945, -9691594, -12412455, -7554848, -11327976, + -12438225, -3882651, 96637, -3766686, -1599875, -7524783, -2168959, -5675800, -14409615, 29450590, + 1363652, 7264937, -12869870, 8070244, -1812476, 4294968, -10602127, -45097, -2669322, -7591355, + -6120329, -3309272, 8227010, 7159711, 6120329, 4833986, 4406637, -1136019, -1297080, -6682969, + -2707977, -206158, -2068027, 9008694, 809601, 5291400, -1559073, 45941116, 16316581, 37072012, + 5342940, 2836826, -15141907, 5995775, 21489868, 8602819, 1108102, 15077483, -13709536, -5587753, + 11474005, -8843338, 3637837, 21388938, 6227703, 3148211, 6148246, -3592740, 8579197, -6738804, + -382252, 3805341, 586263, -5181878, -6472516, 2471754, 21041044, -6861211, 4666482, -19879256, + -11452530, 9302899, 22127672, -17480516, -654983, 11134703, 1954210, 4282083, -15412490, -5025112, + -13469017, -21966610, -6734509, -12217034, -13883482, 10441065, 3180423, 3586298, -8596377, -4675072, + -2587718, -21210696, -3115999, 11763915, -9567040, 9399536, 18285824, 2836826, 11622182, 8377334, + -657130, -4071629, 9749576, -14368813, -2250563, -1037235, 7211250, 4148939, 6320045, 54580444, + -11403138, -17766132, 3451006, 11944304, 11070278, 9798968, -2379412, 10619307, 4279935, -14403173, + -26499948, 17366700, 5555540, 12320114, 8516920, -8096014, 3839701, -11280732, -17154100, 17579302, + -10945724, -23014582, 2950643, -4537633, 3315715, -3124589, -1668595, -6556268, -8214125, 5564130, + 15446850, -22527104, 21597244, -19222126, -23310934, 1316408, 6856916, -14448270, 11035918, -2931315, + 7142531, -12614319, -5334350, 18618684, 8431021, 18848464, 5647882, 416612, 6661495, -1172526, + 1032940, 9302899, -665720, 687195, -9120363, -7526930, -5377299, 6148246, -7172596, -7410966, + 11860552, -1604170, 13187697, 743029, -9923522, 14587856, 12010876, -2370822, 7507603, -9547712, + -14235669, 3715147, -6169721, -11119670, 45996952, 56846040, -9049496, 682900, -28829968, -2896956, + -21163452, -15212774, -5392332, -10322954, 15541339, 274878, 11937862, -26278758, 21560736, -16475495, + 22011708, 1015760, 17358110, -6262063, 21996676, 7589207, -11282879, 4913443, -16587164, 10767483, + -9513353, 25492778, 6953552, 16778290, -28374702, -15811922, -7453916, -14001593, -6549825, -9584220, + 221191, 34312492, -16552804, 17237852, 28348932, 4088809, 12043088, 115964, -7275675, -13651554, + -11132555, 1335735, -8274255, 17411798, -12197707, 7879118, 20379620, -2993592, -2632815, -1932735, + 16456167, 18500572, 4941360, -9021579, -8613557, -4954245, 6324340, -17594334, 2168959, -3539053, + -5854041, -277025, 10151155, 412317, 14759655, 14008036, 1417339, 2658585, -8860518, -44989784, + -38506528, 16593606, -4305705, 20742544, -11456825, -11224897, -13868449, -13146895, -4722317, -35794256, + -11875585, 12311524, 19531364, 6627135, -23375360, -7980049, -10799695, 9148280, 35835060, 18472654, + 9356586, 214748, 3438121, 642098, 6925635, 16915728, 2226941, 3545496, -9564892, -390842, + -14048838, 4522601, 7941395, 11815455, 2409477, -10258529, -3796751, 15934329, -7344394, 5162551, + 4211216, 4879083, 22722524, -13685913, -17991618, 5564130, 16365973, 2682207, 16344498, 17343078, + 9723806, 11523397, 5656472, 1221918, 10965052, 29792040, -16902844, -1700807, 5748814, 1056562, + -12994424, -4196183, 11027329, -2031520, -11602854, 2918430, 23383950, -20560008, 6631430, -19658066, + 10778220, 4745939, 3496104, -1475321, -89096952, -30457760, -2456721, -8366597, -22320946, 13831942, + 17368848, 30560840, 9429601, 19393924, -18010946, -36567352, 16812650, -8269960, 487479, -19462644, + 19194208, -11300059, -1359357, 18730352, -50968376, 5357972, 25877178, -48576080, -13376676, -16904992, + 1975685, 2297808, 11613592, -13174812, 15526307, 2731599, -26091926, -12796855, 2680060, -2847563, + -13093208, 11660836, 29568702, 6826851, 7945690, -4372277, -7758859, 17864916, 2884071, -8360154, + -43246024, -6453189, 5149666, -21408264, 10088878, 9156870, 1507534, -16494822, -15270756, -17630840, + 38373384, 10524817, -6043019, 7730941, -32918776, 4082367, -15448997, -17439714, 17008070, -2761664, + 208306, -11014444, -40965400, 5585605, 12605729, 7209103, -2710124, 24230058, 1395864, 1361505, + 93802088, 23882166, 24013162, 20796232, -6281390, 968515, 96409128, 28067612, -8317204, 59191092, + -33474976, 24743306, 4821101, 15141907, 23764054, -7406671, -17255032, 18242874, -3734474, -58387932, + 14489072, 15146202, 11899207, 27786290, 17126182, 18122614, -16965120, 3569118, -16423955, -8366597, + 16752520, 5650030, -34677564, -20474110, -29184302, -42679092, -7148973, 8622147, 20119774, 17768280, + 14766098, 12773233, -7015829, 22048214, 11632919, -27303108, -11138998, 6987912, 19585050, 240518, + 3554086, 35654672, -7314330, -3304977, -10226317, -2141041, 17338782, -15891379, -738734, -22355304, + -20703890, -12809740, 21889300, 31441308, -10363756, 2448131, -7359427, -19617264, -14673756, 5312875, + -24238648, -5471789, -7780334, -13398150, 94725504, 57475252, 3066607, 36816460, 26394722, 8731669, + 40422084, 12564927, -1215476, -12028056, -10655814, -26205742, -74474736, -4632122, 5976447, -24249386, + -15448997, -2059437, 50002008, 17501992, -14521284, 1236951, 2299955, -6650757, 20308752, -2985002, + -14615774, -8450348, -13881334, 8686571, -19795504, -44465796, -375810, -22975928, -37853696, 7632157, + 14254996, 23259396, 11351599, 20598664, -15283641, -38418484, -26858578, -34565896, 12105365, 32974612, + 25312390, 17635136, 30988190, 992137, 18702436, 44418552, -38427072, 6629282, -18348100, 98784, + 10907069, 13052406, 19666656, -2224793, -46785080, -35055524, 5450314, -10374494, -14828375, -9345849, + -11959336, -31776316, 438087, 19333796, -4655745, 13773960, -12193412, -3955665, -4840428, 21904334, + -46355584, 4574140, -35094176, 15066745, -68305016, -3137474, -21586506, -37224480, 66129612, 35330400, + -21315922, -59023588, -12917114, -22183506, -48829484, 38386272, 3951370, -35944580, -11108933, 19327352, + -31168578, -23398982, -15388868, -40067748, -12985834, -1554778, -29624536, -29517162, 42651172, -15760382, + -10350871, -4337917, -6700149, 33833604, -35691180, -18300856, 10531260, -10593537, 2516851, -9030169, + 22473416, -36447092, 15588584, -58014272, 8686571, -16716013, -20160576, 60513940, 9300752, -22475564, + 14665166, 12693776, -45749992, 34074124, -4958540, -10344429, -257698, 19726784, -4509716, 1282048, + -19711752, 13312251, 19782620, 28007482, -19503446, -59543280, 46473692, -3674345, 21902186, 22162032, + -7829726, 13883482, 36088464, -37209448, -88989576, -53206056, 13743895, -34765612, 6251325, -25765508, + -9822590, -36702644, -21343840, 15032386, 53629108, 51593296, 10924249, 35731980, -23901494, 64136748, + 51133732, -41143640, -32579474, 8714489, 13348758, 53861036, 22771916, 33661808, -10559177, 12118250, + -4883378, -8317204, -9474698, 50203872, 25935160, 47987668, 48120812, 6474663, -234076, -24539296, + 24522116, -4947803, -43490840, -32981054, -6236293, -26096222, -2785286, -26766236, -18895708, 12154757, + -3934190, -17832704, 40969692, 42857332, -23437636, -11117523, 64340756, 22728966, -39505108, -43922484, + -12268574, 13076028, 727997, -10290742, -27279484, 22688164, 10548440, -12496207, 9790378, 4123169, + -34432752, -19370302, 6287832, -17231408, -15367393, -23036058, 53027812, -43602508, -33277406, -34456376, + -51299088, -43548820, -676457, -34220152, -44671956, 11690901, -4146791, -61544732, 43785044, 8136816, + -4127464, 22256520, 67647880, 65277060, 27631672, -79345224, 29149944, 21371758, -78434696, -843961, + -38104948, -18051748, 39711268, -46956876, 26914412, 204011, -8615704, -16666621, 7584912, -3738769, + 12979391, -8914205, -42329052, 40718436, 18618684, 48717816, -5660767, -16258599, -24122684, 19767586, + -21829172, 57447336, 11398843, 34507916, -45423576, 35624608, 633508, 12584254, -29811368, 9689446, + -35306780, -5542656, -36247376, 14304389, 23504208, -47167332, 882616, -38968240, 17008070, 22499186, + 21051782, -3498251, -67703720, -429497, 16035260, -6425271, 27805618, -64392296, 14315126, -27573690, + 6165426, -23929410, 1670742, 14201309, 94399088, 116943368, 47382080, 41519448, -67832568, 65386584, + 92223688, -100860864, 11190537, 67381592, 10516227, -120480272, -13140452, -64815352, 20349556, 25492778, + -31733366, -10728828, 21238614, -54535348, -5409512, -20514912, -28394028, 12322261, -43314744, 47113644, + 31621696, 60544008, -30169998, 11190537, -7292855, -22497038, 73637216, 163209, -35231616, -14534169, + 15189152, -14328011, -20448340, -21120502, 36996848, 15940771, 51784420, -1816771, 18378166, 71199824, + -44878112, 11261404, -30805652, 57082264, -22587234, 27958090, 9852655, 188979, -21889300, -36612448, + -27575838, 13675176, 48451528, -43883828, 40630392, 52525304, 23566486, 61106648, -29710436, -19514184, + 36137856, -2690797, -8759586, -49115100, -5383742, -39191576, 6637872, 61510376, 24157044, 21169894, + 18854906, }, { -11117523, - 365072, -2740189, 2707977, -1516124, -457414, 828929, 1941325, -371515, 1939178, 813896, - 642098, -96637, -139586, 294205, 208306, -979253, -515396, -1848983, 839666, -577673, - -77309, 1911261, 717260, 251256, 261993, 545461, 21475, -326418, -12885, -204011, - -133144, -566936, -302795, -178241, -137439, 103079, 143881, 2147, 4295, 2147, - -77309, -34360, 49392, 178241, -60130, 7786776, 4277788, 2156074, 2637110, 1483911, - 2231236, 4514011, 259846, 128849, -470299, -1114544, 2342905, 27917, -165356, 2486786, - -962073, -1153199, 687195, 249108, 1069447, 259846, 410169, 1123134, -751619, 753767, - -223338, -165356, -564788, 380105, 1490354, 790274, 938450, 785979, -94489, 612033, - 882616, -362925, 745177, -1251983, 1565516, -629213, 466004, 83752, 225486, -300648, - -279173, 3910568, -4475356, -603443, -818191, -1116692, 732292, -2229088, 760209, -53687, - 1020055, 886911, -1758789, -629213, 2699387, -283468, 581968, -500364, 1178969, 2469606, - 2862596, 485331, 1239098, -40802, -2244121, -66572, 253403, -485331, 17180, 1245541, - -1284195, -1735167, 768799, -837519, -766652, -1215476, -42950, 1288490, 332860, -373662, - -453119, -504659, 4295, 292058, -676457, 261993, -773094, -11222750, -7986492, -3886946, - -2942053, -2239826, -2321430, -785979, -1715839, -517544, -1080184, -2763812, 528281, 1438814, - -238371, 828929, -543313, -1421634, -1451699, -2156074, -749472, 545461, 57982, -1202591, - 820339, -1458141, -1464584, 985695, -6442, 75162, 768799, 899796, 229781, -309238, - -435939, -545461, 296353, 182536, -766652, 442382, -1522566, -624918, -375810, -124554, - -1084479, -184684, -397284, -15927886, -2181844, 1271310, 199716, 1202591, 88047, -841814, - 541166, -639950, -790274, -1393717, -1245541, 616328, -489626, 1056562, -1022202, 53687, - -989990, 337155, 1580548, -388695, 1163936, 103079, -1151051, -188979, 1428077, 773094, - 912681, 1118839, -1574106, 1067299, -667867, -92342, -869731, -360777, 403727, 695785, - 311385, -337155, 1140314, 1056562, 571231, -322123, -809601, 139586, -674310, 18796924, - 14995878, 3528316, 6719477, 1597728, 5199058, 3624953, 1131724, 3648575, 1481764, 2759517, - 1215476, -1035087, 2800319, 1943473, -755914, -279173, -5188321, -586263, 270583, 3139621, - 365072, 92342, 1619203, 96637, 1462436, 1312113, 219043, -141734, 515396, 2126009, - 1657857, 1357210, -137439, -594853, 90194, 962073, -380105, -148176, 1118839, 326418, - -558346, -73014, 236223, -1151051, 1374390, 33066954, 12139725, 5832566, 3498251, 2091649, - 2158221, 1999307, 3397319, 801011, 5529771, 727997, 517544, 2340757, -1282048, 541166, - -569083, -622770, -914828, 3517578, 1958505, -317828, 2701535, -1883343, -474594, -680752, - 4168266, -414464, 1494649, 307090, 2037962, 332860, -616328, 1052267, 1391569, -667867, - 487479, 549756, 362925, 826781, -289910, 951335, 865436, -2703682, 569083, 289910, - 491774, 12685186, -9378061, -3302830, -4333622, -2714419, -2570538, 1733019, -1464584, -3927748, - -970663, -5220533, -1209033, -2278480, -4980015, -1282048, 1136019, -3171833, -1045825, 474594, - -3515431, -173946, 4069482, 895501, 590558, -1879048, 83752, 1404454, 36507, -1726577, - -1806034, 1853278, -158914, -2426657, 231928, -1035087, 2959233, -92342, 1335735, -483184, - 2559801, -1685775, 1028645, 337155, 603443, 27917, 659278, -73014, -813896, 1556926, - -34866544, -19722490, -4026532, -4915590, -3371549, -4297115, -6058052, -556198, 169651, -1778117, - 1524713, -1649268, 264141, -169651, -1977833, -2192581, -3453154, -1209033, 3435974, -3246995, - -345745, 3096672, 1997160, -489626, 1163936, -453119, -3330747, -1672890, -2727304, -936303, - 163209, -691490, 1636383, -2946348, -2289218, -92342, -2817499, -2211908, -1977833, -2347200, - 2523293, -725850, -2963528, -957778, 882616, 944893, -962073, -1533303, -633508, -21388938, - 12277164, 4599910, 2007897, 2102387, 1868311, 934155, -2297808, 603443, -1372242, -395137, - 3816079, 2345052, 3283503, 3380139, 3468186, -2905546, 1455994, 3753802, 586263, 3268470, - -3880503, 730144, -996432, -261993, -1468879, 1380832, -526134, 55835, 3377992, -3515431, - -1090922, 1335735, 1930588, -921271, 1602023, -1395864, -2342905, 2735894, -1406602, -124554, - -805306, 1026497, -390842, 1254131, -1406602, -530428, -1279900, -352187, -1127429, 2029372, - 141734, 644245, 31810676, 13035226, 2753074, 7258495, 5677947, 1103807, 2536178, 6863358, - 3126736, -167504, 1464584, 850404, -1017907, 1960653, 5892695, 1378685, 7033009, 3414499, - -5811091, 1080184, 195421, 1187559, 5186173, 2920578, 2080912, -468151, -826781, -715112, - -895501, 798864, -1157494, 1720134, 502511, 2345052, -500364, -618475, 843961, 1911261, - 1026497, -225486, -2572686, -1090922, -1440962, 2257005, 1619203, 2549063, 1391569, 367220, - 337155, 2175401, 1705102, 1421634, 199716, 35540856, 10196252, 4436701, 5555540, 906238, - 5366562, -880468, -2059437, -126702, 1370095, 558346, -176094, 1005022, 5465346, -822486, - -3438121, -2418067, 2639258, 657130, 3077344, 4879083, 4277788, -317828, 2845416, -3143916, - 326418, -2450279, 3279208, 1857573, -3738769, 2134599, -1788854, 223338, -1449552, 2158221, - -1398012, 2716567, 2177549, 1735167, 3539053, 1116692, -96637, -923418, -15032, 429497, - 3917010, -163209, 77309, 223338, 1881196, 1213328, 118112, -551903, 4879083, -15094663, - -6171868, -2422362, -3487514, -1541893, -1329292, 264141, 2143189, -2177549, -4112431, 3852586, - -4937065, -4649302, -880468, -1052267, 2115272, -1294933, -122407, -4490389, -2723009, -5426691, - -6021544, -6637872, -947040, 1591285, -4685810, -1217623, 646393, 539018, 182536, -562641, - -4645007, -2836826, 1990717, 818191, -1099512, 4419522, -2952790, -1273458, 1069447, 2727304, - 2168959, -335007, -687195, 1101659, 622770, -2789581, 234076, -1617055, -783832, 270583, - -1178969, 210453, 1902671, -38590280, -12219182, -7247758, -3081639, -5199058, -4249870, -1178969, - -3049427, -1191853, -4052302, -5342940, -3917010, -1264868, -8048769, -1859721, -3309272, -4793184, - -654983, 889058, 2546916, -2780991, -4052302, -1421634, 3219078, 4262755, 5104569, 2823941, - -204011, -2493229, -1221918, 88047, -3208341, 1374390, 2070174, 2753074, -1896228, -1505386, - -1529008, -659278, -687195, -1037235, 2016487, -543313, 1279900, -2602750, -4696547, -1874753, - -251256, 2385854, -4078072, 1393717, -1999307, 1947768, -2035815, 1189706, -22192096, 5914170, - 1644973, 23622, 3891240, -3728032, 1000727, -8577050, -2787434, 2989297, 2119566, 5538361, - -399432, 6043019, -3515431, -880468, 2894808, -5244155, -1921998, -3081639, 5894843, -362925, - -4868346, 2467459, 4702989, -4159676, -3171833, -3743064, 1099512, -861141, 2037962, -1421634, - -1181116, -989990, -2267743, 3341485, -2660732, 665720, 2192581, -249108, 2531883, -1432372, - 5523328, 854699, -534723, -1896228, -1894081, 118112, -2181844, -2649995, -1647120, 472446, - 1906966, -214748, 545461, -2293513, -2319282, -3285650, -1297080, -1002875, -841814, 19284404, - 27455578, 9573482, 9472550, 13121125, 9350144, -1267015, 1801739, -972810, 1685775, 1647120, - 2325725, 1808181, 4627828, 1833951, 2869038, 944893, 9206262, 2194728, 4471061, 2710124, - 2306398, 7327214, 1644973, 9171903, 4647155, -1870458, 6373732, 1681480, 3085934, 6448894, - 1209033, 3822521, -2080912, -710817, 1702955, 2860448, -4080219, 3322157, -2420214, -4367982, - -2675765, 3478924, 5186173, 3957812, -936303, 1209033, 1065152, 1885491, 2628520, 1490354, - 2985002, 1788854, -3240553, -236223, 2012192, 2911988, 687195, 822486, 294205, -3240553, - 65925600, 5252745, -3618510, 5581310, -3852586, 7745974, 2001455, 8121783, -4138201, 1005022, - -219043, 4984310, -8604967, 1898376, 5113159, -869731, -1488206, 7174743, 10606422, -4256313, - -2772402, 1591285, 5117454, -2126009, 3238405, 444529, -3751654, -2649995, -3040837, 2568391, - 3053722, 4075924, -2987150, 4468914, -2959233, 4348655, 3431679, -670015, -2682207, 1672890, - -4161823, -5267778, 1000727, -3517578, 1324997, 661425, 377957, 2632815, -264141, 3137474, - -30065, -3493956, 1273458, -710817, 1565516, -2482491, -777389, 695785, 1668595, -1241246, - -5001490, -22578644, -21897890, -4969277, 1720134, -974958, -3283503, -3571265, -4868346, -1303523, - 3657165, -1174674, -1198296, -5033702, 5357972, -296353, -4322885, -3749507, 9266392, -8315057, - 921271, 6137509, -654983, 1045825, -7975755, 2613488, -3373697, 1977833, -5510443, -3599183, - 1011465, 1554778, -2514703, -2856153, 384400, -1118839, 515396, -3332895, -1814624, 3682935, - -259846, -1569811, -874026, 4672925, 2162516, -2465311, -3801046, -3375844, 1355062, -390842, - -1490354, 543313, 942745, -1765232, 5611375, 3115999, -350040, -227633, -1181116, 854699, - -1337882, -1359357, -1372242, -92342, -2787434, -2190433, -8562017, -7838316, -8819715, -6783901, - -4501126, -3423089, 966368, -332860, -2040110, -1153199, 2422362, 7630010, -6605660, 3210488, - -2044404, -4559108, 5802501, -704375, 1357210, 7065221, 1333587, 2847563, -4312147, -1303523, - -13045963, -1735167, 2789581, 1434519, 1423782, 1140314, 2147484, -3158949, -3710852, 2843268, - -68719, 2677912, 1733019, -3710852, 3182571, -487479, -9152575, -7965017, -1015760, -7546258, - 1247688, 2106682, -210453, -2078764, -551903, 141734, -1874753, -869731, -133144, -1466731, - 2579128, 423054, 1047972, -1507534, -663572, 3440269, 1239098, -2538326, 2798171, -768799, - -1404454, -4015795, 373662, -43033424, -9859097, 678605, -8604967, 3502546, 818191, 10378788, - -4872641, 661425, -2877628, 6972880, -14162655, -13507672, 5677947, -6521908, 10159745, 3736622, - -8222715, -14306536, -358630, -4013647, -6994354, -2806761, 1612760, 2372970, -3388729, 12337294, - 635655, -1172526, -5160403, 4232691, 4636417, 5063767, 5373004, -618475, -3206193, -1159641, - 3173981, -201863, 3835406, -3569118, -1432372, -1196148, 4449586, 3624953, -3906273, 5113159, - -2821794, -3481071, 438087, -1556926, -3345780, 3502546, -3957812, -483184, 1026497, -916976, - -1593433, 949188, 3354370, -2020782, 3225521, -2598455, 2188286, -1428077, -1586990, -1000727, - 39582420, 34628172, 7333657, 9193377, -1775969, 11252814, 9159018, 11332271, -408022, 4494684, - 2813204, -10819023, -9023726, 4885526, 1022202, -7782481, -8072391, -4640712, 560493, 4496831, - 1382980, 10735271, 9936407, 4226248, -2265595, -2523293, 6577743, 6019397, 500364, 5254893, - -1730872, 6749541, 388695, -1612760, 9560597, 4844723, 7836168, 4928475, 1711545, 5362267, - 2750927, 1767379, 5072357, -2937758, 992137, 6616397, -103079, -4514011, 3981435, 3831111, - 2815351, -3227668, -124554, 3773129, 5884105, -3148211, 7121056, 8025147, -1490354, -4627828, - 691490, 1694365, 1200443, 3403762, -96637, 1086627, 2692945, 47699908, 4131759, -1578401, - 3609920, 2091649, -7630010, 1836099, 2366527, -212601, 5334350, 7106024, 11186242, -5106716, - -4724464, -7960722, -6034429, 6854768, -324270, 9994389, -2224793, -2692945, 4443144, 8656507, - 3755949, -9124658, 7284265, -2815351, 5871221, -3154654, 4608500, -5579163, 3519726, -642098, - 5364414, 414464, 3152506, 1370095, -8819715, -5179731, -627065, -2035815, -635655, -3023657, - 4567698, 1449552, 9519795, -1647120, -6176163, -3923453, -446677, 350040, -6904160, 2183991, - -2231236, -526134, -513249, -4352950, 3938485, 6998649, -2115272, 3493956, 1005022, -4271345, - -253403, -4082367, -3092377, 408022, 6474663, 657130, -2619930, -6438156, 1879048, -2372970, - 13840532, -3317862, -13215614, -8948564, -11916387, 11001559, -8804683, 2424509, 13453985, -612033, - -13666586, 916976, -14347338, 11927124, -4168266, 11884175, 70867, -4556961, 10237055, 358630, - 2121714, -7730941, -9740986, -1591285, 3418794, 2065879, -1909113, -4520453, 4518306, -1417339, - 3371549, 5175436, 6309307, 2892661, 3483219, -12859132, 1052267, -2942053, -4404489, 1722282, - 6335077, -5392332, -9878425, -4385162, 2856153, 1088774, -8690866, -3564823, 3998615, 5871221, - -5246303, -3420942, -4054449, 6010807, 7965017, 1591285, -2763812, 880468, 5675800, -2780991, - -309238, -48593260, -48730700, -8177618, -23753316, -15133317, -8257075, -13550622, -1348620, 9833328, - -21678848, 7808251, -4206921, 7112466, 1561221, 4286378, -8802535, 2119566, -828929, -4937065, - -19819126, -4286378, -10142565, -12983686, -996432, 3066607, 1030792, -4518306, 3148211, -4290673, - -856846, 10546292, 150324, -3706557, 1056562, 6861211, 9805410, 6171868, 416612, 4909148, - 6240588, -687195, 491774, -10574209, 4292820, -8750996, 2078764, 8239895, -5267778, -10563472, - 3513283, -5961415, -5111011, 1080184, 433792, -5035849, 2946348, -1245541, 11834782, 6277095, - 4022237, 1342177, 4726612, -457414, 1853278, -4483946, -7372312, -1348620, -28321014, 52971980, - 42309724, 2179696, 8914205, 2942053, 9670119, 13720273, 3607773, 13299366, 2830384, -14980846, - 9983651, 11117523, 3764539, 2967823, 8993662, 10924249, -11154030, 9012989, -5763846, 7842611, - 1516124, -7494718, 1589138, 8916352, 5604933, -11828340, 5662915, -5179731, 16550656, -1952063, - 3992172, -3105261, -10406706, 10048076, 10711648, 4443144, 2806761, -1088774, 3899830, 10664404, - 2697240, 7436736, 1060857, 4962835, 3085934, -1406602, 6113886, -8061654, -11512660, -5738077, - -8808978, -8123931, -3876208, -8338679, 10170483, 6579890, 762357, -2566243, -3824669, -1947768, - -468151, -672162, 261993, 670015, 1853278, 420907, -571231, 70796096, -27270894, -15923591, - 3332895, -899796, -2806761, -20605106, -7750269, 4329327, -231928, -3590593, -3158949, 2310693, - -15605764, -5415954, 9210557, 15154792, 9399536, 6380174, -4376572, -5596343, -8686571, 10204842, - -14763950, -3476776, 4550518, -10980084, 4054449, 3599183, 13172665, -19849192, -897648, -1138166, - -3238405, 4254165, -16943646, -10022306, 20128364, 11963631, 3360812, -4166118, 12298639, -4239133, - -811749, 1312113, 9764608, 4367982, -4924180, 322123, -2592013, 6556268, -11209865, -6249178, - -6521908, -8480413, 15234249, 3075197, 2486786, -7355132, 141734, -3120294, -1887638, -7690139, - 1765232, -7350837, 410169, 1228361, 6296422, -10666551, -6017249, -9532680, -1904818, 20927228, - 49261128, 7705172, 18992346, 16535624, 16501264, 5065914, 12412455, 7106024, -3199751, -10286447, - -6002217, -3227668, 14160507, -12204150, -12809740, -1271310, -298500, -5744519, -9740986, 29278792, - 28162100, 20579336, 1324997, -12375948, 2418067, 1576253, -5677947, 6405944, 4666482, 11538430, - 1685775, 4445291, -277025, -8695161, 13859859, 10780368, 8405251, -2422362, -10462540, 165356, - -530428, -3513283, -21672404, 15305116, -9713069, 17712446, 1344325, 9309342, -1791001, 10301479, - 16849156, 2692945, -7170448, -1196148, 3352222, -6122476, 3231963, -2821794, -6693707, -4589173, - 2639258, -2495376, 7279970, 1612760, -11377368, -165356, -1245541, -13619341, -2596308, 1464584, - -4425964, 4791036, -51077900, -7121056, -31714038, 70867, 5965710, -11156178, -18399640, -21940840, - -20201378, -12429635, -16404628, -4365835, -781684, -4582730, 5744519, -3584150, 1464584, 12914967, - 6287832, -1529008, 31505732, -7052337, 6633577, -4763119, 3021510, 4312147, 2076617, -1943473, - 5001490, 14383845, 4829691, 4982162, 2089502, 5660767, 12773233, 16799764, 5811091, 20429012, - -5014375, -17877802, 18429704, -5811091, -3242700, -3728032, 10677289, 15618649, 12414603, -392990, - -3498251, -9073118, -22329534, 14070313, 16685948, 11321534, -13037373, 8267812, 2832531, -1382980, - 13728863, 2218351, 9500468, -7213398, 5076652, -8972187, 2147, 7969312, -1346472, 6068789, - -216896, -3085934, -2091649, -89446992, -40851580, 18799072, -3985730, -2581275, 2727304, -10758893, - -10359461, -2871186, -4928475, -15229954, 10657961, 1741609, 23053236, -12607876, -11735998, -18687402, - -11205570, -19252190, 1170379, 7801808, -30000346, 19628000, 15972983, -1778117, 2843268, 13005161, - 1417339, 11523397, -22821308, -21942988, -12923557, -14171245, -11793980, 37164352, 11510512, -7404524, - -13507672, -18051748, 8484708, 5699422, -9257802, 7986492, 6833293, -12485470, 871878, 3676492, - 10037339, -11501922, 29746944, -12406013, -10844792, 5499706, -3560528, 665720, -9365176, -2559801, - 654983, 20014548, -6197638, 28486370, 5645735, 2776696, 2888366, 8390219, -8407398, -1883343, - -10947872, -7625715, -8317204, 1211181, 14989436, -8321499, 14164802, 45481556, 23308788, 14493367, - 9756018, -16043850, 1488206, -13020193, 20059644, -2302103, -2877628, 6736656, 4230543, 4531191, - -858993, 6927782, 2291365, 7295002, -6526203, 19501300, 2319282, -2087354, 58875412, 2907693, - -4941360, -15522012, 8373039, -14493367, 12741020, 31505732, -3025805, 7368017, 7307887, -16913582, - -18981608, 34360, -251256, 13475460, -9773198, -75162, -1696512, 9715216, 9869835, 17126182, - 5866926, 5478231, 6498286, 25770, 10808285, 4707284, -22561464, 3826816, -12156905, -28546500, - -3485366, 6929930, -1007170, 1417339, -4902705, -401579, -2183991, -1118839, 2115272, -399432, - 11160473, -8604967, -2744484, 1389422, 970663, -730144, -6672232, 7623567, 12848395, 64939904, - -17733920, -9070971, -16385300, 31821412, 14020921, 1041530, 8467528, -6637872, -6174016, 10060961, - 2744484, -13391708, 4657892, -17111150, -9975062, -1011465, -13911399, 330712, 6710887, -13282186, - -18577882, 122407, 2718714, 11871290, 24096914, 13838385, -8905615, -1995012, 15579994, 23643794, - -25061134, 8216273, -3380139, -2308545, -10546292, -18998788, 3094524, 13471165, 6154688, 4971425, - 11353746, -2987150, 8141111, -3474629, 6302865, 7909183, -16136192, -14450417, 29379724, -4189741, - 848256, -8269960, 12788265, 33822868, 10726681, 3365107, 13413183, -11491185, -8832600, -2065879, - -6085969, -22625888, 15148350, -405874, -8239895, 3524021, 5177583, -7943542, -7419556, 10945724, - -2089502, -17703856, 10000831, 5209796, 56446608, 54350664, -18019536, 15131170, 3955665, 11836930, - 28421946, -3169686, -15614354, -4913443, 55338508, -31035434, -6517613, -15210627, -13030931, -25110526, - 27367532, -7743826, -38568808, -28005334, -35257388, -13005161, 30075508, -3375844, 13857712, -5164698, - -16320876, 13926431, 3384434, 17553532, -17364552, 15627239, 11572789, 6517613, 6427419, -27111982, - 7159711, -22621592, 18556406, 40913860, 11078868, 12382391, -26684632, 36610300, 9004399, -3706557, - -6427419, -7337952, 10642929, 18292266, 3633542, -4230543, -1879048, 4928475, -9655086, -6350109, - -9330816, -6633577, -1539746, 13260712, -9803263, 19834158, 6337224, 12040941, -4995047, -28870770, - -20036022, 7020124, 1148904, -8888435, 9949292, -953483, -1606318, 5242008, -4413079, -54438712, - -30958124, 6826851, 5201206, -1099512, -22477712, 13204877, 8989367, -14890652, -37336152, 30771294, - 8927090, 11078868, 19056770, 9938554, -3717294, 5257040, -8308614, 25673168, -20274394, -37986840, - 289910, -2207613, -16234976, -41137196, 2948495, -8624294, -19739670, -12010876, -4915590, 9030169, - 3420942, 14959371, 32018982, -12777528, -22804128, 7894150, -792421, 435939, 14512694, -17405354, - -13793287, -1898376, 16902844, -18695992, 18326626, -5046587, 33137820, -3837553, -6893423, -2987150, - 2961380, 6818261, -32040456, 5845451, -27206470, 31830002, 3300682, 20413980, 14882062, -10739566, - 1937030, -14482630, 11345156, -367220, 9957882, 7258495, -16733193, -1561221, -15723875, -7110319, - 13651554, -4183298, -7185481, 7984344, -71092448, -37263136, -9431748, -11400991, 747324, 4638565, - -22769770, -21683142, 9850507, -24820616, 9833328, -27236536, -4514011, -26456998, -25082610, 26480620, - 15311558, 1221918, 1204738, -27788438, -38583840, 17454748, -51535312, 16460462, 3777424, -20800526, - 5832566, -14192719, 7129646, 34589520, -16157667, -5439576, -38010460, 28774134, -6569153, 11196980, - -11482595, -8319352, -392990, -5080947, 22009560, 2982855, 42659764, 44126492, -2072322, -2954938, - -12848395, -1939178, -3206193, 3695819, 18165564, -1926293, 37512244, 5914170, -9880572, 1582696, - 10146860, -3809636, 560493, -3015067, 29280940, -23791972, -36483600, -20532092, 3650722, 4883378, - 9966472, 15264314, 1151051, 3682935, -6792491, -20959440, -18668076, -22988812, 5126044, -8121783, - 95328944, 41304700, 29965986, 11192685, -9964324, -18107582, -28716152, 15410343, 29029684, 10711648, - -12496207, 32373316, 19503446, 32341104, 2967823, -25179246, -8684424, 49020608, -51623360, -11841225, - 35227320, -21607980, -10853382, 79746808, -9528385, 21945136, 73959336, -12979391, -4230543, -3382287, - 9698036, -5336497, 32373316, 19155554, 26772678, -19885698, -42780020, 15955804, -16552804, 19417548, - -7582765, 6124624, 31419834, 16421807, 2342905, 12079596, 6798933, 11536282, 30399778, 15247134, - -2634963, 27399744, 12732431, 2467459, 7490423, 51750060, 32686848, -1705102, 29787746, -14675903, - 37538016, -11059541, 8890582, -12406013, 5272073, 19091130, -10722386, -2944200, -919123, 5121749, - 2269890, -16172699, 2499671, -14392435, 121090160, 55967720, -25567940, 11506217, 62139588, 2325725, - 44626856, -12534862, 17115444, 38764228, -29469918, 4275640, 65302832, 60273424, 47502340, 17905718, - 40666896, 7797513, 35534412, 13503377, 10118943, -22000970, -27661736, -37276020, -76300096, 24792698, - -23622, -19711752, -8130373, 26830660, -18053896, -1855426, 2025077, 15393163, -67718752, -10086731, - 47556024, 38036232, -14405320, 25363930, 20145544, 14353781, -9101036, -14841259, -7651484, -9764608, - -7668664, -24000278, -21865678, 17779018, -42513732, 14450417, 33264522, -9451076, -25239376, -37280316, - 34748432, -418759, -18837726, -11042361, -9047349, -12281459, 6685117, -5224828, -14033806, 14385993, - 54668492, -26746908, -17401060, 8190503, -11474005, 14141180, -152471, 30322470, 4870493, 2873333, - -47568912, -14100378, -57322780, -13275744, -57307748, 27120570, -54597624, 28948080, -9038759, -32669668, - -9159018, -15710990, 67927056, 9676561, -48681308, 137439, -31651762, -26130582, 33644628, -38356204, - -34284576, -40020504, 59214716, -8821863, 39200168, -60786672, -31580894, 22870700, -27582280, 21745420, - 65429532, 41781440, 40583144, 5877663, -6646462, -32669668, -44708464, -3487514, 10232760, -42769284, - 1129576, -25692494, 12255689, 17224966, -47476568, -41689100, -74519832, -12919262, 5302137, -33386928, - -46044196, 44208100, 2467459, 45406396, 46011984, -7022272, -6352257, -20055350, 26598732, 21464100, - 3453154, 9833328, -3586298, -3874061, 22589380, -7460358, -25930866, -21708912, -32590212, -29280940, - -9586367, -2800319, -3343632, -43121472, -83951576, -12571369, 5564130, -6008659, -1597728, 23837068, - -19980188, 21339546, 16967268, -11497627, 23564338, -33812132, 42359116, 31776316, -392990, -31082678, - 670015, 22971632, -98152888, 21311628, 37179384, -67529768, 26257282, -33947420, -52654152, -44762148, - 21206402, -10247792, -74038792, 39827232, 18348100, -42256036, -75000864, 15891379, 6143951, -21704618, - -7773891, -36185100, 32527934, 30103426, 48417168, -39769248, 3927748, -53203908, -23349590, 10417443, - -37634652, 15470472, -7325067, -26242250, -44096428, -43297564, 61516816, -42696268, -24030342, -15494095, - -816044, 30666066, 13947906, 22591528, -3657165, 26259430, -12635794, 4902705, -15105400, -26031796, - 687195, 58287000, 3974992, 2074469, -5587753, -36346160, 18167712, 39275328, 33554432, -55918328, - -27775554, -58982784, 17693118, -11523397, 24167780, -17003776, 12111808, 17611514, -18066780, -34241628, - 50425064, -14194867, -20671678, 55832428, -10511932, -14617921, 66546224, -39086348, 10857677, 14669461, - 6337224, -58903328, 1438814, -9730248, -33363306, 18451180, -25941602, 35287452, -5199058, 39423504, - -43368432, 26381836, -77749648, -493921, -41845868, 46731392, -6146098, 5190468, -7011534, -45243184, - -1902671, 36801428, 102121440, 6027987, 7640747, 20003810, 35774932, -7279970, -8385924, 1713692, - -386547, 87230784, -6676527, 12208445, 36992552, -36013300, -57662084, -1269163, -60986388, -9113921, - -30567282, -24427626, -10988674, -27771258, 16436840, 20605106, -34662532, 44601088, 39966820, -6616397, - -7395934, -38414188, 28623810, 8903467, 95039040, 103530184, 770947, -31765578, -25479894, 86741160, - -56972740, -64965676, 67665064, -61351460, 39571680, 12071006, 54793044, 50495932, 34162168, 5549098, - -34361884, -29684666, 71152576, -30056182, -2894808, 17439714, 60687888, 87701088, -2456721, 59970628, - -48752172, -51002736, 6051609, -18728204, 28565828, 18103288, -43342664, 6158983, 28157806, 72241352, - 24998858, 29753386, 27567248, 32465658, 8832600, -2263448, 46299748, 8330089, 37207300, 58847496, - 12940736, -23753316, -19649476, 53113712, 14710263, 108615424, 26246546, 43054900, -43072080, -69009384, - -5482526, -80618680, -50609748, -18021682, -26231512, 3530463, -2452426, 1159641, 3015067, -60084444, - -48022028, -25965224, -49312668, 19488414, 23572928, -15180562, -392990, -47734268, -2894808, 14061723, - -6515466, }, + 365072, -2740189, 2707977, -1516124, -457414, 828929, 1941325, -371515, 1939178, 813896, + 642098, -96637, -139586, 294205, 208306, -979253, -515396, -1848983, 839666, -577673, + -77309, 1911261, 717260, 251256, 261993, 545461, 21475, -326418, -12885, -204011, + -133144, -566936, -302795, -178241, -137439, 103079, 143881, 2147, 4295, 2147, + -77309, -34360, 49392, 178241, -60130, 7786776, 4277788, 2156074, 2637110, 1483911, + 2231236, 4514011, 259846, 128849, -470299, -1114544, 2342905, 27917, -165356, 2486786, + -962073, -1153199, 687195, 249108, 1069447, 259846, 410169, 1123134, -751619, 753767, + -223338, -165356, -564788, 380105, 1490354, 790274, 938450, 785979, -94489, 612033, + 882616, -362925, 745177, -1251983, 1565516, -629213, 466004, 83752, 225486, -300648, + -279173, 3910568, -4475356, -603443, -818191, -1116692, 732292, -2229088, 760209, -53687, + 1020055, 886911, -1758789, -629213, 2699387, -283468, 581968, -500364, 1178969, 2469606, + 2862596, 485331, 1239098, -40802, -2244121, -66572, 253403, -485331, 17180, 1245541, + -1284195, -1735167, 768799, -837519, -766652, -1215476, -42950, 1288490, 332860, -373662, + -453119, -504659, 4295, 292058, -676457, 261993, -773094, -11222750, -7986492, -3886946, + -2942053, -2239826, -2321430, -785979, -1715839, -517544, -1080184, -2763812, 528281, 1438814, + -238371, 828929, -543313, -1421634, -1451699, -2156074, -749472, 545461, 57982, -1202591, + 820339, -1458141, -1464584, 985695, -6442, 75162, 768799, 899796, 229781, -309238, + -435939, -545461, 296353, 182536, -766652, 442382, -1522566, -624918, -375810, -124554, + -1084479, -184684, -397284, -15927886, -2181844, 1271310, 199716, 1202591, 88047, -841814, + 541166, -639950, -790274, -1393717, -1245541, 616328, -489626, 1056562, -1022202, 53687, + -989990, 337155, 1580548, -388695, 1163936, 103079, -1151051, -188979, 1428077, 773094, + 912681, 1118839, -1574106, 1067299, -667867, -92342, -869731, -360777, 403727, 695785, + 311385, -337155, 1140314, 1056562, 571231, -322123, -809601, 139586, -674310, 18796924, + 14995878, 3528316, 6719477, 1597728, 5199058, 3624953, 1131724, 3648575, 1481764, 2759517, + 1215476, -1035087, 2800319, 1943473, -755914, -279173, -5188321, -586263, 270583, 3139621, + 365072, 92342, 1619203, 96637, 1462436, 1312113, 219043, -141734, 515396, 2126009, + 1657857, 1357210, -137439, -594853, 90194, 962073, -380105, -148176, 1118839, 326418, + -558346, -73014, 236223, -1151051, 1374390, 33066954, 12139725, 5832566, 3498251, 2091649, + 2158221, 1999307, 3397319, 801011, 5529771, 727997, 517544, 2340757, -1282048, 541166, + -569083, -622770, -914828, 3517578, 1958505, -317828, 2701535, -1883343, -474594, -680752, + 4168266, -414464, 1494649, 307090, 2037962, 332860, -616328, 1052267, 1391569, -667867, + 487479, 549756, 362925, 826781, -289910, 951335, 865436, -2703682, 569083, 289910, + 491774, 12685186, -9378061, -3302830, -4333622, -2714419, -2570538, 1733019, -1464584, -3927748, + -970663, -5220533, -1209033, -2278480, -4980015, -1282048, 1136019, -3171833, -1045825, 474594, + -3515431, -173946, 4069482, 895501, 590558, -1879048, 83752, 1404454, 36507, -1726577, + -1806034, 1853278, -158914, -2426657, 231928, -1035087, 2959233, -92342, 1335735, -483184, + 2559801, -1685775, 1028645, 337155, 603443, 27917, 659278, -73014, -813896, 1556926, + -34866544, -19722490, -4026532, -4915590, -3371549, -4297115, -6058052, -556198, 169651, -1778117, + 1524713, -1649268, 264141, -169651, -1977833, -2192581, -3453154, -1209033, 3435974, -3246995, + -345745, 3096672, 1997160, -489626, 1163936, -453119, -3330747, -1672890, -2727304, -936303, + 163209, -691490, 1636383, -2946348, -2289218, -92342, -2817499, -2211908, -1977833, -2347200, + 2523293, -725850, -2963528, -957778, 882616, 944893, -962073, -1533303, -633508, -21388938, + 12277164, 4599910, 2007897, 2102387, 1868311, 934155, -2297808, 603443, -1372242, -395137, + 3816079, 2345052, 3283503, 3380139, 3468186, -2905546, 1455994, 3753802, 586263, 3268470, + -3880503, 730144, -996432, -261993, -1468879, 1380832, -526134, 55835, 3377992, -3515431, + -1090922, 1335735, 1930588, -921271, 1602023, -1395864, -2342905, 2735894, -1406602, -124554, + -805306, 1026497, -390842, 1254131, -1406602, -530428, -1279900, -352187, -1127429, 2029372, + 141734, 644245, 31810676, 13035226, 2753074, 7258495, 5677947, 1103807, 2536178, 6863358, + 3126736, -167504, 1464584, 850404, -1017907, 1960653, 5892695, 1378685, 7033009, 3414499, + -5811091, 1080184, 195421, 1187559, 5186173, 2920578, 2080912, -468151, -826781, -715112, + -895501, 798864, -1157494, 1720134, 502511, 2345052, -500364, -618475, 843961, 1911261, + 1026497, -225486, -2572686, -1090922, -1440962, 2257005, 1619203, 2549063, 1391569, 367220, + 337155, 2175401, 1705102, 1421634, 199716, 35540856, 10196252, 4436701, 5555540, 906238, + 5366562, -880468, -2059437, -126702, 1370095, 558346, -176094, 1005022, 5465346, -822486, + -3438121, -2418067, 2639258, 657130, 3077344, 4879083, 4277788, -317828, 2845416, -3143916, + 326418, -2450279, 3279208, 1857573, -3738769, 2134599, -1788854, 223338, -1449552, 2158221, + -1398012, 2716567, 2177549, 1735167, 3539053, 1116692, -96637, -923418, -15032, 429497, + 3917010, -163209, 77309, 223338, 1881196, 1213328, 118112, -551903, 4879083, -15094663, + -6171868, -2422362, -3487514, -1541893, -1329292, 264141, 2143189, -2177549, -4112431, 3852586, + -4937065, -4649302, -880468, -1052267, 2115272, -1294933, -122407, -4490389, -2723009, -5426691, + -6021544, -6637872, -947040, 1591285, -4685810, -1217623, 646393, 539018, 182536, -562641, + -4645007, -2836826, 1990717, 818191, -1099512, 4419522, -2952790, -1273458, 1069447, 2727304, + 2168959, -335007, -687195, 1101659, 622770, -2789581, 234076, -1617055, -783832, 270583, + -1178969, 210453, 1902671, -38590280, -12219182, -7247758, -3081639, -5199058, -4249870, -1178969, + -3049427, -1191853, -4052302, -5342940, -3917010, -1264868, -8048769, -1859721, -3309272, -4793184, + -654983, 889058, 2546916, -2780991, -4052302, -1421634, 3219078, 4262755, 5104569, 2823941, + -204011, -2493229, -1221918, 88047, -3208341, 1374390, 2070174, 2753074, -1896228, -1505386, + -1529008, -659278, -687195, -1037235, 2016487, -543313, 1279900, -2602750, -4696547, -1874753, + -251256, 2385854, -4078072, 1393717, -1999307, 1947768, -2035815, 1189706, -22192096, 5914170, + 1644973, 23622, 3891240, -3728032, 1000727, -8577050, -2787434, 2989297, 2119566, 5538361, + -399432, 6043019, -3515431, -880468, 2894808, -5244155, -1921998, -3081639, 5894843, -362925, + -4868346, 2467459, 4702989, -4159676, -3171833, -3743064, 1099512, -861141, 2037962, -1421634, + -1181116, -989990, -2267743, 3341485, -2660732, 665720, 2192581, -249108, 2531883, -1432372, + 5523328, 854699, -534723, -1896228, -1894081, 118112, -2181844, -2649995, -1647120, 472446, + 1906966, -214748, 545461, -2293513, -2319282, -3285650, -1297080, -1002875, -841814, 19284404, + 27455578, 9573482, 9472550, 13121125, 9350144, -1267015, 1801739, -972810, 1685775, 1647120, + 2325725, 1808181, 4627828, 1833951, 2869038, 944893, 9206262, 2194728, 4471061, 2710124, + 2306398, 7327214, 1644973, 9171903, 4647155, -1870458, 6373732, 1681480, 3085934, 6448894, + 1209033, 3822521, -2080912, -710817, 1702955, 2860448, -4080219, 3322157, -2420214, -4367982, + -2675765, 3478924, 5186173, 3957812, -936303, 1209033, 1065152, 1885491, 2628520, 1490354, + 2985002, 1788854, -3240553, -236223, 2012192, 2911988, 687195, 822486, 294205, -3240553, + 65925600, 5252745, -3618510, 5581310, -3852586, 7745974, 2001455, 8121783, -4138201, 1005022, + -219043, 4984310, -8604967, 1898376, 5113159, -869731, -1488206, 7174743, 10606422, -4256313, + -2772402, 1591285, 5117454, -2126009, 3238405, 444529, -3751654, -2649995, -3040837, 2568391, + 3053722, 4075924, -2987150, 4468914, -2959233, 4348655, 3431679, -670015, -2682207, 1672890, + -4161823, -5267778, 1000727, -3517578, 1324997, 661425, 377957, 2632815, -264141, 3137474, + -30065, -3493956, 1273458, -710817, 1565516, -2482491, -777389, 695785, 1668595, -1241246, + -5001490, -22578644, -21897890, -4969277, 1720134, -974958, -3283503, -3571265, -4868346, -1303523, + 3657165, -1174674, -1198296, -5033702, 5357972, -296353, -4322885, -3749507, 9266392, -8315057, + 921271, 6137509, -654983, 1045825, -7975755, 2613488, -3373697, 1977833, -5510443, -3599183, + 1011465, 1554778, -2514703, -2856153, 384400, -1118839, 515396, -3332895, -1814624, 3682935, + -259846, -1569811, -874026, 4672925, 2162516, -2465311, -3801046, -3375844, 1355062, -390842, + -1490354, 543313, 942745, -1765232, 5611375, 3115999, -350040, -227633, -1181116, 854699, + -1337882, -1359357, -1372242, -92342, -2787434, -2190433, -8562017, -7838316, -8819715, -6783901, + -4501126, -3423089, 966368, -332860, -2040110, -1153199, 2422362, 7630010, -6605660, 3210488, + -2044404, -4559108, 5802501, -704375, 1357210, 7065221, 1333587, 2847563, -4312147, -1303523, + -13045963, -1735167, 2789581, 1434519, 1423782, 1140314, 2147484, -3158949, -3710852, 2843268, + -68719, 2677912, 1733019, -3710852, 3182571, -487479, -9152575, -7965017, -1015760, -7546258, + 1247688, 2106682, -210453, -2078764, -551903, 141734, -1874753, -869731, -133144, -1466731, + 2579128, 423054, 1047972, -1507534, -663572, 3440269, 1239098, -2538326, 2798171, -768799, + -1404454, -4015795, 373662, -43033424, -9859097, 678605, -8604967, 3502546, 818191, 10378788, + -4872641, 661425, -2877628, 6972880, -14162655, -13507672, 5677947, -6521908, 10159745, 3736622, + -8222715, -14306536, -358630, -4013647, -6994354, -2806761, 1612760, 2372970, -3388729, 12337294, + 635655, -1172526, -5160403, 4232691, 4636417, 5063767, 5373004, -618475, -3206193, -1159641, + 3173981, -201863, 3835406, -3569118, -1432372, -1196148, 4449586, 3624953, -3906273, 5113159, + -2821794, -3481071, 438087, -1556926, -3345780, 3502546, -3957812, -483184, 1026497, -916976, + -1593433, 949188, 3354370, -2020782, 3225521, -2598455, 2188286, -1428077, -1586990, -1000727, + 39582420, 34628172, 7333657, 9193377, -1775969, 11252814, 9159018, 11332271, -408022, 4494684, + 2813204, -10819023, -9023726, 4885526, 1022202, -7782481, -8072391, -4640712, 560493, 4496831, + 1382980, 10735271, 9936407, 4226248, -2265595, -2523293, 6577743, 6019397, 500364, 5254893, + -1730872, 6749541, 388695, -1612760, 9560597, 4844723, 7836168, 4928475, 1711545, 5362267, + 2750927, 1767379, 5072357, -2937758, 992137, 6616397, -103079, -4514011, 3981435, 3831111, + 2815351, -3227668, -124554, 3773129, 5884105, -3148211, 7121056, 8025147, -1490354, -4627828, + 691490, 1694365, 1200443, 3403762, -96637, 1086627, 2692945, 47699908, 4131759, -1578401, + 3609920, 2091649, -7630010, 1836099, 2366527, -212601, 5334350, 7106024, 11186242, -5106716, + -4724464, -7960722, -6034429, 6854768, -324270, 9994389, -2224793, -2692945, 4443144, 8656507, + 3755949, -9124658, 7284265, -2815351, 5871221, -3154654, 4608500, -5579163, 3519726, -642098, + 5364414, 414464, 3152506, 1370095, -8819715, -5179731, -627065, -2035815, -635655, -3023657, + 4567698, 1449552, 9519795, -1647120, -6176163, -3923453, -446677, 350040, -6904160, 2183991, + -2231236, -526134, -513249, -4352950, 3938485, 6998649, -2115272, 3493956, 1005022, -4271345, + -253403, -4082367, -3092377, 408022, 6474663, 657130, -2619930, -6438156, 1879048, -2372970, + 13840532, -3317862, -13215614, -8948564, -11916387, 11001559, -8804683, 2424509, 13453985, -612033, + -13666586, 916976, -14347338, 11927124, -4168266, 11884175, 70867, -4556961, 10237055, 358630, + 2121714, -7730941, -9740986, -1591285, 3418794, 2065879, -1909113, -4520453, 4518306, -1417339, + 3371549, 5175436, 6309307, 2892661, 3483219, -12859132, 1052267, -2942053, -4404489, 1722282, + 6335077, -5392332, -9878425, -4385162, 2856153, 1088774, -8690866, -3564823, 3998615, 5871221, + -5246303, -3420942, -4054449, 6010807, 7965017, 1591285, -2763812, 880468, 5675800, -2780991, + -309238, -48593260, -48730700, -8177618, -23753316, -15133317, -8257075, -13550622, -1348620, 9833328, + -21678848, 7808251, -4206921, 7112466, 1561221, 4286378, -8802535, 2119566, -828929, -4937065, + -19819126, -4286378, -10142565, -12983686, -996432, 3066607, 1030792, -4518306, 3148211, -4290673, + -856846, 10546292, 150324, -3706557, 1056562, 6861211, 9805410, 6171868, 416612, 4909148, + 6240588, -687195, 491774, -10574209, 4292820, -8750996, 2078764, 8239895, -5267778, -10563472, + 3513283, -5961415, -5111011, 1080184, 433792, -5035849, 2946348, -1245541, 11834782, 6277095, + 4022237, 1342177, 4726612, -457414, 1853278, -4483946, -7372312, -1348620, -28321014, 52971980, + 42309724, 2179696, 8914205, 2942053, 9670119, 13720273, 3607773, 13299366, 2830384, -14980846, + 9983651, 11117523, 3764539, 2967823, 8993662, 10924249, -11154030, 9012989, -5763846, 7842611, + 1516124, -7494718, 1589138, 8916352, 5604933, -11828340, 5662915, -5179731, 16550656, -1952063, + 3992172, -3105261, -10406706, 10048076, 10711648, 4443144, 2806761, -1088774, 3899830, 10664404, + 2697240, 7436736, 1060857, 4962835, 3085934, -1406602, 6113886, -8061654, -11512660, -5738077, + -8808978, -8123931, -3876208, -8338679, 10170483, 6579890, 762357, -2566243, -3824669, -1947768, + -468151, -672162, 261993, 670015, 1853278, 420907, -571231, 70796096, -27270894, -15923591, + 3332895, -899796, -2806761, -20605106, -7750269, 4329327, -231928, -3590593, -3158949, 2310693, + -15605764, -5415954, 9210557, 15154792, 9399536, 6380174, -4376572, -5596343, -8686571, 10204842, + -14763950, -3476776, 4550518, -10980084, 4054449, 3599183, 13172665, -19849192, -897648, -1138166, + -3238405, 4254165, -16943646, -10022306, 20128364, 11963631, 3360812, -4166118, 12298639, -4239133, + -811749, 1312113, 9764608, 4367982, -4924180, 322123, -2592013, 6556268, -11209865, -6249178, + -6521908, -8480413, 15234249, 3075197, 2486786, -7355132, 141734, -3120294, -1887638, -7690139, + 1765232, -7350837, 410169, 1228361, 6296422, -10666551, -6017249, -9532680, -1904818, 20927228, + 49261128, 7705172, 18992346, 16535624, 16501264, 5065914, 12412455, 7106024, -3199751, -10286447, + -6002217, -3227668, 14160507, -12204150, -12809740, -1271310, -298500, -5744519, -9740986, 29278792, + 28162100, 20579336, 1324997, -12375948, 2418067, 1576253, -5677947, 6405944, 4666482, 11538430, + 1685775, 4445291, -277025, -8695161, 13859859, 10780368, 8405251, -2422362, -10462540, 165356, + -530428, -3513283, -21672404, 15305116, -9713069, 17712446, 1344325, 9309342, -1791001, 10301479, + 16849156, 2692945, -7170448, -1196148, 3352222, -6122476, 3231963, -2821794, -6693707, -4589173, + 2639258, -2495376, 7279970, 1612760, -11377368, -165356, -1245541, -13619341, -2596308, 1464584, + -4425964, 4791036, -51077900, -7121056, -31714038, 70867, 5965710, -11156178, -18399640, -21940840, + -20201378, -12429635, -16404628, -4365835, -781684, -4582730, 5744519, -3584150, 1464584, 12914967, + 6287832, -1529008, 31505732, -7052337, 6633577, -4763119, 3021510, 4312147, 2076617, -1943473, + 5001490, 14383845, 4829691, 4982162, 2089502, 5660767, 12773233, 16799764, 5811091, 20429012, + -5014375, -17877802, 18429704, -5811091, -3242700, -3728032, 10677289, 15618649, 12414603, -392990, + -3498251, -9073118, -22329534, 14070313, 16685948, 11321534, -13037373, 8267812, 2832531, -1382980, + 13728863, 2218351, 9500468, -7213398, 5076652, -8972187, 2147, 7969312, -1346472, 6068789, + -216896, -3085934, -2091649, -89446992, -40851580, 18799072, -3985730, -2581275, 2727304, -10758893, + -10359461, -2871186, -4928475, -15229954, 10657961, 1741609, 23053236, -12607876, -11735998, -18687402, + -11205570, -19252190, 1170379, 7801808, -30000346, 19628000, 15972983, -1778117, 2843268, 13005161, + 1417339, 11523397, -22821308, -21942988, -12923557, -14171245, -11793980, 37164352, 11510512, -7404524, + -13507672, -18051748, 8484708, 5699422, -9257802, 7986492, 6833293, -12485470, 871878, 3676492, + 10037339, -11501922, 29746944, -12406013, -10844792, 5499706, -3560528, 665720, -9365176, -2559801, + 654983, 20014548, -6197638, 28486370, 5645735, 2776696, 2888366, 8390219, -8407398, -1883343, + -10947872, -7625715, -8317204, 1211181, 14989436, -8321499, 14164802, 45481556, 23308788, 14493367, + 9756018, -16043850, 1488206, -13020193, 20059644, -2302103, -2877628, 6736656, 4230543, 4531191, + -858993, 6927782, 2291365, 7295002, -6526203, 19501300, 2319282, -2087354, 58875412, 2907693, + -4941360, -15522012, 8373039, -14493367, 12741020, 31505732, -3025805, 7368017, 7307887, -16913582, + -18981608, 34360, -251256, 13475460, -9773198, -75162, -1696512, 9715216, 9869835, 17126182, + 5866926, 5478231, 6498286, 25770, 10808285, 4707284, -22561464, 3826816, -12156905, -28546500, + -3485366, 6929930, -1007170, 1417339, -4902705, -401579, -2183991, -1118839, 2115272, -399432, + 11160473, -8604967, -2744484, 1389422, 970663, -730144, -6672232, 7623567, 12848395, 64939904, + -17733920, -9070971, -16385300, 31821412, 14020921, 1041530, 8467528, -6637872, -6174016, 10060961, + 2744484, -13391708, 4657892, -17111150, -9975062, -1011465, -13911399, 330712, 6710887, -13282186, + -18577882, 122407, 2718714, 11871290, 24096914, 13838385, -8905615, -1995012, 15579994, 23643794, + -25061134, 8216273, -3380139, -2308545, -10546292, -18998788, 3094524, 13471165, 6154688, 4971425, + 11353746, -2987150, 8141111, -3474629, 6302865, 7909183, -16136192, -14450417, 29379724, -4189741, + 848256, -8269960, 12788265, 33822868, 10726681, 3365107, 13413183, -11491185, -8832600, -2065879, + -6085969, -22625888, 15148350, -405874, -8239895, 3524021, 5177583, -7943542, -7419556, 10945724, + -2089502, -17703856, 10000831, 5209796, 56446608, 54350664, -18019536, 15131170, 3955665, 11836930, + 28421946, -3169686, -15614354, -4913443, 55338508, -31035434, -6517613, -15210627, -13030931, -25110526, + 27367532, -7743826, -38568808, -28005334, -35257388, -13005161, 30075508, -3375844, 13857712, -5164698, + -16320876, 13926431, 3384434, 17553532, -17364552, 15627239, 11572789, 6517613, 6427419, -27111982, + 7159711, -22621592, 18556406, 40913860, 11078868, 12382391, -26684632, 36610300, 9004399, -3706557, + -6427419, -7337952, 10642929, 18292266, 3633542, -4230543, -1879048, 4928475, -9655086, -6350109, + -9330816, -6633577, -1539746, 13260712, -9803263, 19834158, 6337224, 12040941, -4995047, -28870770, + -20036022, 7020124, 1148904, -8888435, 9949292, -953483, -1606318, 5242008, -4413079, -54438712, + -30958124, 6826851, 5201206, -1099512, -22477712, 13204877, 8989367, -14890652, -37336152, 30771294, + 8927090, 11078868, 19056770, 9938554, -3717294, 5257040, -8308614, 25673168, -20274394, -37986840, + 289910, -2207613, -16234976, -41137196, 2948495, -8624294, -19739670, -12010876, -4915590, 9030169, + 3420942, 14959371, 32018982, -12777528, -22804128, 7894150, -792421, 435939, 14512694, -17405354, + -13793287, -1898376, 16902844, -18695992, 18326626, -5046587, 33137820, -3837553, -6893423, -2987150, + 2961380, 6818261, -32040456, 5845451, -27206470, 31830002, 3300682, 20413980, 14882062, -10739566, + 1937030, -14482630, 11345156, -367220, 9957882, 7258495, -16733193, -1561221, -15723875, -7110319, + 13651554, -4183298, -7185481, 7984344, -71092448, -37263136, -9431748, -11400991, 747324, 4638565, + -22769770, -21683142, 9850507, -24820616, 9833328, -27236536, -4514011, -26456998, -25082610, 26480620, + 15311558, 1221918, 1204738, -27788438, -38583840, 17454748, -51535312, 16460462, 3777424, -20800526, + 5832566, -14192719, 7129646, 34589520, -16157667, -5439576, -38010460, 28774134, -6569153, 11196980, + -11482595, -8319352, -392990, -5080947, 22009560, 2982855, 42659764, 44126492, -2072322, -2954938, + -12848395, -1939178, -3206193, 3695819, 18165564, -1926293, 37512244, 5914170, -9880572, 1582696, + 10146860, -3809636, 560493, -3015067, 29280940, -23791972, -36483600, -20532092, 3650722, 4883378, + 9966472, 15264314, 1151051, 3682935, -6792491, -20959440, -18668076, -22988812, 5126044, -8121783, + 95328944, 41304700, 29965986, 11192685, -9964324, -18107582, -28716152, 15410343, 29029684, 10711648, + -12496207, 32373316, 19503446, 32341104, 2967823, -25179246, -8684424, 49020608, -51623360, -11841225, + 35227320, -21607980, -10853382, 79746808, -9528385, 21945136, 73959336, -12979391, -4230543, -3382287, + 9698036, -5336497, 32373316, 19155554, 26772678, -19885698, -42780020, 15955804, -16552804, 19417548, + -7582765, 6124624, 31419834, 16421807, 2342905, 12079596, 6798933, 11536282, 30399778, 15247134, + -2634963, 27399744, 12732431, 2467459, 7490423, 51750060, 32686848, -1705102, 29787746, -14675903, + 37538016, -11059541, 8890582, -12406013, 5272073, 19091130, -10722386, -2944200, -919123, 5121749, + 2269890, -16172699, 2499671, -14392435, 121090160, 55967720, -25567940, 11506217, 62139588, 2325725, + 44626856, -12534862, 17115444, 38764228, -29469918, 4275640, 65302832, 60273424, 47502340, 17905718, + 40666896, 7797513, 35534412, 13503377, 10118943, -22000970, -27661736, -37276020, -76300096, 24792698, + -23622, -19711752, -8130373, 26830660, -18053896, -1855426, 2025077, 15393163, -67718752, -10086731, + 47556024, 38036232, -14405320, 25363930, 20145544, 14353781, -9101036, -14841259, -7651484, -9764608, + -7668664, -24000278, -21865678, 17779018, -42513732, 14450417, 33264522, -9451076, -25239376, -37280316, + 34748432, -418759, -18837726, -11042361, -9047349, -12281459, 6685117, -5224828, -14033806, 14385993, + 54668492, -26746908, -17401060, 8190503, -11474005, 14141180, -152471, 30322470, 4870493, 2873333, + -47568912, -14100378, -57322780, -13275744, -57307748, 27120570, -54597624, 28948080, -9038759, -32669668, + -9159018, -15710990, 67927056, 9676561, -48681308, 137439, -31651762, -26130582, 33644628, -38356204, + -34284576, -40020504, 59214716, -8821863, 39200168, -60786672, -31580894, 22870700, -27582280, 21745420, + 65429532, 41781440, 40583144, 5877663, -6646462, -32669668, -44708464, -3487514, 10232760, -42769284, + 1129576, -25692494, 12255689, 17224966, -47476568, -41689100, -74519832, -12919262, 5302137, -33386928, + -46044196, 44208100, 2467459, 45406396, 46011984, -7022272, -6352257, -20055350, 26598732, 21464100, + 3453154, 9833328, -3586298, -3874061, 22589380, -7460358, -25930866, -21708912, -32590212, -29280940, + -9586367, -2800319, -3343632, -43121472, -83951576, -12571369, 5564130, -6008659, -1597728, 23837068, + -19980188, 21339546, 16967268, -11497627, 23564338, -33812132, 42359116, 31776316, -392990, -31082678, + 670015, 22971632, -98152888, 21311628, 37179384, -67529768, 26257282, -33947420, -52654152, -44762148, + 21206402, -10247792, -74038792, 39827232, 18348100, -42256036, -75000864, 15891379, 6143951, -21704618, + -7773891, -36185100, 32527934, 30103426, 48417168, -39769248, 3927748, -53203908, -23349590, 10417443, + -37634652, 15470472, -7325067, -26242250, -44096428, -43297564, 61516816, -42696268, -24030342, -15494095, + -816044, 30666066, 13947906, 22591528, -3657165, 26259430, -12635794, 4902705, -15105400, -26031796, + 687195, 58287000, 3974992, 2074469, -5587753, -36346160, 18167712, 39275328, 33554432, -55918328, + -27775554, -58982784, 17693118, -11523397, 24167780, -17003776, 12111808, 17611514, -18066780, -34241628, + 50425064, -14194867, -20671678, 55832428, -10511932, -14617921, 66546224, -39086348, 10857677, 14669461, + 6337224, -58903328, 1438814, -9730248, -33363306, 18451180, -25941602, 35287452, -5199058, 39423504, + -43368432, 26381836, -77749648, -493921, -41845868, 46731392, -6146098, 5190468, -7011534, -45243184, + -1902671, 36801428, 102121440, 6027987, 7640747, 20003810, 35774932, -7279970, -8385924, 1713692, + -386547, 87230784, -6676527, 12208445, 36992552, -36013300, -57662084, -1269163, -60986388, -9113921, + -30567282, -24427626, -10988674, -27771258, 16436840, 20605106, -34662532, 44601088, 39966820, -6616397, + -7395934, -38414188, 28623810, 8903467, 95039040, 103530184, 770947, -31765578, -25479894, 86741160, + -56972740, -64965676, 67665064, -61351460, 39571680, 12071006, 54793044, 50495932, 34162168, 5549098, + -34361884, -29684666, 71152576, -30056182, -2894808, 17439714, 60687888, 87701088, -2456721, 59970628, + -48752172, -51002736, 6051609, -18728204, 28565828, 18103288, -43342664, 6158983, 28157806, 72241352, + 24998858, 29753386, 27567248, 32465658, 8832600, -2263448, 46299748, 8330089, 37207300, 58847496, + 12940736, -23753316, -19649476, 53113712, 14710263, 108615424, 26246546, 43054900, -43072080, -69009384, + -5482526, -80618680, -50609748, -18021682, -26231512, 3530463, -2452426, 1159641, 3015067, -60084444, + -48022028, -25965224, -49312668, 19488414, 23572928, -15180562, -392990, -47734268, -2894808, 14061723, + -6515466, }, }; #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES @@ -59929,65 +59992,65 @@ const float defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ] = #endif Word32 sine_table_Q31 [361] = { - 187, - -37478868, -74946000, -112390808, -149800880, -187165824, -224473232, -261712288, -298872128, -335940416, -372906880, - -409759232, -446486784, -483078848, -519523232, -555809856, -591926720, -627863744, -663609024, -699152192, -734482816, - -769589248, -804461760, -839088768, -873460160, -907565952, -941394816, -974937344, -1008182528, -1041120576, -1073741952, - -1106035712, -1137993088, -1169603456, -1200857856, -1231746048, -1262259072, -1292388096, -1322122880, -1351455488, -1380375936, - -1408875904, -1436947072, -1464580224, -1491767680, -1518500224, -1544770688, -1570570112, -1595891328, -1620726528, -1645067904, - -1668908416, -1692240256, -1715056640, -1737350784, -1759115520, -1780344704, -1801031296, -1821169280, -1840752768, -1859775360, - -1878231552, -1896115456, -1913422080, -1930145536, -1946281088, -1961824000, -1976769152, -1991112192, -2004848768, -2017974528, - -2030485760, -2042378368, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, - -2121044608, -2126584448, -2131476608, -2135719552, -2139311872, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, - -2147156608, -2146175488, -2144540544, -2142252544, -2139311872, -2135719552, -2131476608, -2126584448, -2121044608, -2114858496, - -2108028288, -2100556032, -2092443776, -2083694208, -2074309888, -2064293760, -2053648768, -2042378368, -2030485632, -2017974528, - -2004848640, -1991112192, -1976769024, -1961824000, -1946281216, -1930145536, -1913421952, -1896115456, -1878231552, -1859775488, - -1840752768, -1821169408, -1801031296, -1780344576, -1759115648, -1737350784, -1715056768, -1692240128, -1668908160, -1645067904, - -1620726400, -1595891456, -1570570112, -1544770432, -1518500224, -1491767552, -1464580352, -1436947072, -1408876032, -1380375808, - -1351455232, -1322123008, -1292387840, -1262259200, -1231746048, -1200857600, -1169603456, -1137992960, -1106035840, -1073741824, - -1041120704, -1008182528, -974937152, -941394880, -907565824, -873460288, -839088704, -804461504, -769589312, -734482624, - -699152256, -663608960, -627863424, -591926720, -555809664, -519523328, -483078688, -446486976, -409759200, -372906624, - -335940480, -298871968, -261712432, -224473168, -187165520, -149800880, -112390616, -74946096, -37478756, 0, - 37478756, 74946096, 112390616, 149800880, 187165520, 224473168, 261712432, 298871968, 335940480, 372906624, - 409759200, 446486976, 483078688, 519523328, 555809664, 591926720, 627863424, 663608960, 699152256, 734482624, - 769589312, 804461504, 839088704, 873460288, 907565824, 941394880, 974937152, 1008182528, 1041120704, 1073741824, - 1106035840, 1137992960, 1169603456, 1200857600, 1231746048, 1262259200, 1292387840, 1322123008, 1351455232, 1380375808, - 1408876032, 1436947072, 1464580352, 1491767552, 1518500224, 1544770432, 1570570112, 1595891456, 1620726400, 1645067904, - 1668908160, 1692240128, 1715056768, 1737350784, 1759115648, 1780344576, 1801031296, 1821169408, 1840752768, 1859775488, - 1878231552, 1896115456, 1913421952, 1930145536, 1946281216, 1961824000, 1976769024, 1991112192, 2004848640, 2017974528, - 2030485632, 2042378368, 2053648768, 2064293760, 2074309888, 2083694208, 2092443776, 2100556032, 2108028288, 2114858496, - 2121044608, 2126584448, 2131476608, 2135719552, 2139311872, 2142252544, 2144540544, 2146175488, 2147156608, 2147483647, - 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, - 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648768, 2042378368, 2030485760, 2017974528, - 2004848768, 1991112192, 1976769152, 1961824000, 1946281088, 1930145536, 1913422080, 1896115456, 1878231552, 1859775360, - 1840752768, 1821169280, 1801031296, 1780344704, 1759115520, 1737350784, 1715056640, 1692240256, 1668908416, 1645067904, - 1620726528, 1595891328, 1570570112, 1544770688, 1518500224, 1491767680, 1464580224, 1436947072, 1408875904, 1380375936, - 1351455488, 1322122880, 1292388096, 1262259072, 1231746048, 1200857856, 1169603456, 1137993088, 1106035712, 1073741952, - 1041120576, 1008182528, 974937344, 941394816, 907565952, 873460160, 839088768, 804461760, 769589248, 734482816, - 699152192, 663609024, 627863744, 591926720, 555809856, 519523232, 483078848, 446486784, 409759232, 372906880, - 335940416, 298872128, 261712288, 224473232, 187165824, 149800880, 112390808, 74946000, 37478868, -187, + 187, + -37478868, -74946000, -112390808, -149800880, -187165824, -224473232, -261712288, -298872128, -335940416, -372906880, + -409759232, -446486784, -483078848, -519523232, -555809856, -591926720, -627863744, -663609024, -699152192, -734482816, + -769589248, -804461760, -839088768, -873460160, -907565952, -941394816, -974937344, -1008182528, -1041120576, -1073741952, + -1106035712, -1137993088, -1169603456, -1200857856, -1231746048, -1262259072, -1292388096, -1322122880, -1351455488, -1380375936, + -1408875904, -1436947072, -1464580224, -1491767680, -1518500224, -1544770688, -1570570112, -1595891328, -1620726528, -1645067904, + -1668908416, -1692240256, -1715056640, -1737350784, -1759115520, -1780344704, -1801031296, -1821169280, -1840752768, -1859775360, + -1878231552, -1896115456, -1913422080, -1930145536, -1946281088, -1961824000, -1976769152, -1991112192, -2004848768, -2017974528, + -2030485760, -2042378368, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, + -2121044608, -2126584448, -2131476608, -2135719552, -2139311872, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, + -2147156608, -2146175488, -2144540544, -2142252544, -2139311872, -2135719552, -2131476608, -2126584448, -2121044608, -2114858496, + -2108028288, -2100556032, -2092443776, -2083694208, -2074309888, -2064293760, -2053648768, -2042378368, -2030485632, -2017974528, + -2004848640, -1991112192, -1976769024, -1961824000, -1946281216, -1930145536, -1913421952, -1896115456, -1878231552, -1859775488, + -1840752768, -1821169408, -1801031296, -1780344576, -1759115648, -1737350784, -1715056768, -1692240128, -1668908160, -1645067904, + -1620726400, -1595891456, -1570570112, -1544770432, -1518500224, -1491767552, -1464580352, -1436947072, -1408876032, -1380375808, + -1351455232, -1322123008, -1292387840, -1262259200, -1231746048, -1200857600, -1169603456, -1137992960, -1106035840, -1073741824, + -1041120704, -1008182528, -974937152, -941394880, -907565824, -873460288, -839088704, -804461504, -769589312, -734482624, + -699152256, -663608960, -627863424, -591926720, -555809664, -519523328, -483078688, -446486976, -409759200, -372906624, + -335940480, -298871968, -261712432, -224473168, -187165520, -149800880, -112390616, -74946096, -37478756, 0, + 37478756, 74946096, 112390616, 149800880, 187165520, 224473168, 261712432, 298871968, 335940480, 372906624, + 409759200, 446486976, 483078688, 519523328, 555809664, 591926720, 627863424, 663608960, 699152256, 734482624, + 769589312, 804461504, 839088704, 873460288, 907565824, 941394880, 974937152, 1008182528, 1041120704, 1073741824, + 1106035840, 1137992960, 1169603456, 1200857600, 1231746048, 1262259200, 1292387840, 1322123008, 1351455232, 1380375808, + 1408876032, 1436947072, 1464580352, 1491767552, 1518500224, 1544770432, 1570570112, 1595891456, 1620726400, 1645067904, + 1668908160, 1692240128, 1715056768, 1737350784, 1759115648, 1780344576, 1801031296, 1821169408, 1840752768, 1859775488, + 1878231552, 1896115456, 1913421952, 1930145536, 1946281216, 1961824000, 1976769024, 1991112192, 2004848640, 2017974528, + 2030485632, 2042378368, 2053648768, 2064293760, 2074309888, 2083694208, 2092443776, 2100556032, 2108028288, 2114858496, + 2121044608, 2126584448, 2131476608, 2135719552, 2139311872, 2142252544, 2144540544, 2146175488, 2147156608, 2147483647, + 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, + 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648768, 2042378368, 2030485760, 2017974528, + 2004848768, 1991112192, 1976769152, 1961824000, 1946281088, 1930145536, 1913422080, 1896115456, 1878231552, 1859775360, + 1840752768, 1821169280, 1801031296, 1780344704, 1759115520, 1737350784, 1715056640, 1692240256, 1668908416, 1645067904, + 1620726528, 1595891328, 1570570112, 1544770688, 1518500224, 1491767680, 1464580224, 1436947072, 1408875904, 1380375936, + 1351455488, 1322122880, 1292388096, 1262259072, 1231746048, 1200857856, 1169603456, 1137993088, 1106035712, 1073741952, + 1041120576, 1008182528, 974937344, 941394816, 907565952, 873460160, 839088768, 804461760, 769589248, 734482816, + 699152192, 663609024, 627863744, 591926720, 555809856, 519523232, 483078848, 446486784, 409759232, 372906880, + 335940416, 298872128, 261712288, 224473232, 187165824, 149800880, 112390808, 74946000, 37478868, -187, }; Word32 cosine_table_Q31 [181] = { - 2147483647, - 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, - 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648896, 2042378368, 2030485632, 2017974528, - 2004848640, 1991112192, 1976769152, 1961823872, 1946281088, 1930145536, 1913421952, 1896115456, 1878231552, 1859775360, - 1840752768, 1821169408, 1801031296, 1780344704, 1759115648, 1737350784, 1715056768, 1692240256, 1668908160, 1645067904, - 1620726528, 1595891328, 1570570112, 1544770432, 1518500224, 1491767552, 1464580352, 1436946944, 1408876032, 1380375936, - 1351455360, 1322123008, 1292387968, 1262259328, 1231746048, 1200857600, 1169603456, 1137992960, 1106035840, 1073741760, - 1041120640, 1008182592, 974937216, 941394880, 907565760, 873460224, 839088832, 804461632, 769589376, 734482688, - 699152256, 663608896, 627863616, 591926784, 555809728, 519523328, 483078688, 446486880, 409759328, 372906720, - 335940512, 298871968, 261712384, 224473072, 187165664, 149800960, 112390648, 74946096, 37478708, -93, - -37478640, -74946024, -112390576, -149800896, -187165584, -224473264, -261712304, -298871904, -335940416, -372906656, - -409759264, -446486816, -483078592, -519523264, -555809664, -591926720, -627863552, -663608832, -699152192, -734482624, - -769589312, -804461568, -839088768, -873460160, -907565952, -941394816, -974936960, -1008182528, -1041120576, -1073741952, - -1106035712, -1137993088, -1169603456, -1200857472, -1231746048, -1262259072, -1292388096, -1322122880, -1351455104, -1380375936, - -1408875904, -1436947200, -1464580224, -1491767296, -1518500224, -1544770304, -1570570240, -1595891328, -1620726656, -1645067904, - -1668908032, -1692240256, -1715056640, -1737350912, -1759115648, -1780344448, -1801031296, -1821169280, -1840752768, -1859775360, - -1878231680, -1896115456, -1913421824, -1930145536, -1946281088, -1961824000, -1976769152, -1991112064, -2004848768, -2017974528, - -2030485760, -2042378240, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, - -2121044608, -2126584448, -2131476608, -2135719552, -2139311744, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, + 2147483647, + 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, + 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648896, 2042378368, 2030485632, 2017974528, + 2004848640, 1991112192, 1976769152, 1961823872, 1946281088, 1930145536, 1913421952, 1896115456, 1878231552, 1859775360, + 1840752768, 1821169408, 1801031296, 1780344704, 1759115648, 1737350784, 1715056768, 1692240256, 1668908160, 1645067904, + 1620726528, 1595891328, 1570570112, 1544770432, 1518500224, 1491767552, 1464580352, 1436946944, 1408876032, 1380375936, + 1351455360, 1322123008, 1292387968, 1262259328, 1231746048, 1200857600, 1169603456, 1137992960, 1106035840, 1073741760, + 1041120640, 1008182592, 974937216, 941394880, 907565760, 873460224, 839088832, 804461632, 769589376, 734482688, + 699152256, 663608896, 627863616, 591926784, 555809728, 519523328, 483078688, 446486880, 409759328, 372906720, + 335940512, 298871968, 261712384, 224473072, 187165664, 149800960, 112390648, 74946096, 37478708, -93, + -37478640, -74946024, -112390576, -149800896, -187165584, -224473264, -261712304, -298871904, -335940416, -372906656, + -409759264, -446486816, -483078592, -519523264, -555809664, -591926720, -627863552, -663608832, -699152192, -734482624, + -769589312, -804461568, -839088768, -873460160, -907565952, -941394816, -974936960, -1008182528, -1041120576, -1073741952, + -1106035712, -1137993088, -1169603456, -1200857472, -1231746048, -1262259072, -1292388096, -1322122880, -1351455104, -1380375936, + -1408875904, -1436947200, -1464580224, -1491767296, -1518500224, -1544770304, -1570570240, -1595891328, -1620726656, -1645067904, + -1668908032, -1692240256, -1715056640, -1737350912, -1759115648, -1780344448, -1801031296, -1821169280, -1840752768, -1859775360, + -1878231680, -1896115456, -1913421824, -1930145536, -1946281088, -1961824000, -1976769152, -1991112064, -2004848768, -2017974528, + -2030485760, -2042378240, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, + -2121044608, -2126584448, -2131476608, -2135719552, -2139311744, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, }; diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index bcc470ead..8cdb3d007 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -1334,7 +1334,12 @@ typedef struct ivas_hrtfs_structure UWord16 index_frequency_max_diffuse; Word16 max_num_ir; Word16 max_num_iterations; +#ifdef FIX_INV_DIFFUSE_WEIGHT + Word16 inv_diffuse_weight_fx[BINAURAL_CHANNELS][MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] */ + Word16 same_inv_diffuse_weight; +#else Word16 inv_diffuse_weight_fx[MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] Q15 */ +#endif Word32 latency_s_fx; #ifdef NONBE_FIX_BINARY_BINAURAL_READING Word16 init_from_rom; @@ -1346,8 +1351,13 @@ typedef struct ivas_crend_state_t { Word32 *freq_buffer_re_fx[MAX_INTERN_CHANNELS]; Word32 *freq_buffer_im_fx[MAX_INTERN_CHANNELS]; +#ifdef FIX_INV_DIFFUSE_WEIGHT + Word32 *freq_buffer_re_diffuse_fx[BINAURAL_CHANNELS]; + Word32 *freq_buffer_im_diffuse_fx[BINAURAL_CHANNELS]; +#else Word32 *freq_buffer_re_diffuse_fx; Word32 *freq_buffer_im_diffuse_fx; +#endif Word32 *prev_out_buffer_fx[BINAURAL_CHANNELS]; Word32 *lfe_delay_line_fx; Word32 m_fYaw_fx; @@ -1468,6 +1478,10 @@ typedef struct ivas_hrtfs_parambin_struct Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /* Q28 */ +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + Word16 allocatedFromFile; +#endif + } HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; #ifdef SPLIT_REND_WITH_HEAD_ROT diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 8f7f60e59..34f644c90 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -1366,13 +1366,25 @@ static ivas_error create_HRTF_from_rawdata( hrtf_data_rptr += sizeof( UWord16 ); /* inv_diffuse_weight */ +#ifdef FIX_INV_DIFFUSE_WEIGHT + FOR( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) + { + ( *hHRTF )->inv_diffuse_weight_fx[0][i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + hrtf_data_rptr += sizeof( float ); + } + FOR( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) + { + ( *hHRTF )->inv_diffuse_weight_fx[1][i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + hrtf_data_rptr += sizeof( float ); + } +#else for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) { //( *hHRTF )->inv_diffuse_weight[i] = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->inv_diffuse_weight_fx[i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); hrtf_data_rptr += sizeof( float ); } - +#endif /* max_total_num_fsamp_per_iteration */ max_total_num_fsamp_per_iteration = *( (UWord16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( UWord16 ); @@ -2266,6 +2278,7 @@ ivas_error create_SetOfHRTF_from_binary( { if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK ) { + free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } @@ -2318,6 +2331,7 @@ ivas_error create_SetOfHRTF_from_binary( /* Create the HRTF reading the raw data from the binary file */ if ( ( create_HRTF_from_rawdata( hHRTF, hrtf_data ) ) != IVAS_ERR_OK ) { + free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } } @@ -2405,6 +2419,31 @@ static ivas_error destroy_HRTF return IVAS_ERR_OK; #endif } + +#ifdef FIX_OLD_BINARY_FORMAT +/*---------------------------------------------------------------------* + * cleanup_SetOfHRTF() + * + * Destroy the HRTF data set. + *---------------------------------------------------------------------*/ + +void cleanup_SetOfHRTF( + HRTFS_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ +) +{ + if ( ( hSetOfHRTF != NULL ) && ( *hSetOfHRTF != NULL ) ) + { + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_combined ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_hoa3 ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_hoa2 ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_foa ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_brir_combined ) ); + } + + return; +} +#endif + /*---------------------------------------------------------------------* * destroy_SetOfHRTF() * diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index 96bb09736..d1abd9b75 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -119,6 +119,17 @@ ivas_error create_SetOfHRTF_from_binary( int32_t output_Fs /* i : Output sampling frequency */ ); +#ifdef FIX_OLD_BINARY_FORMAT +/*---------------------------------------------------------------------* + * cleanup_SetOfHRTF() + * + * Destroy the HRTF data set. + *---------------------------------------------------------------------*/ + +void cleanup_SetOfHRTF( + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ +); +#endif /*---------------------------------------------------------------------* * destroy_SetOfHRTF() -- GitLab From 8b5e97ea53d1e52c6b09f5c24796d7cfbda19613 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 15 May 2025 12:38:43 +0530 Subject: [PATCH 523/698] Precision improvement in wb_vad_ivas_fx --- lib_enc/init_enc_fx.c | 2 + lib_enc/ivas_core_pre_proc_front_fx.c | 35 ++-- lib_enc/ivas_front_vad_fx.c | 14 +- lib_enc/nois_est_fx.c | 16 +- lib_enc/pitch_ol_fx.c | 13 +- lib_enc/prot_fx_enc.h | 2 +- lib_enc/stat_enc.h | 6 +- lib_enc/vad_fx.c | 258 ++++++++++++++------------ 8 files changed, 182 insertions(+), 164 deletions(-) diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 97cd57308..543a6fab9 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -377,6 +377,8 @@ ivas_error init_encoder_fx( move16(); st_fx->hVAD->L_snr_sum_vad_fx = 0; move32(); + st_fx->hVAD->q_L_snr_sum_vad = Q31; + move16(); } ELSE { diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index e883d9ec1..d358f7099 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -223,6 +223,7 @@ ivas_error pre_proc_front_ivas_fx( Word16 res_cod_SNR_M_fx_e[STEREO_DFT_BAND_MAX]; Word16 Qfact_PS, q_lf_E_fx; Word16 enerBuffer_fx_exp_buf[CLDFB_NO_CHANNELS_MAX]; + Word32 bckr_temp[NB_BANDS]; #ifdef DEBUG_MODE_INFO Word32 *in_buff_temp; Word16 in_q_temp; @@ -781,21 +782,9 @@ ivas_error pre_proc_front_ivas_fx( move16(); } - Word16 scale = add( L_norm_arr( st->hNoiseEst->enrO_fx, NB_BANDS ), st->hNoiseEst->q_enrO ); - scale = s_min( scale, fr_bands_fx_q ); - - scale_sig32( st->hNoiseEst->enrO_fx, NB_BANDS, sub( scale, st->hNoiseEst->q_enrO ) ); - st->hNoiseEst->q_enrO = scale; - move16(); - - scale_sig32( fr_bands_fx, 2 * NB_BANDS, sub( scale, fr_bands_fx_q ) ); - fr_bands_fx_q = scale; - move16(); - st->vad_flag = wb_vad_ivas_fx( st, fr_bands_fx, fr_bands_fx_q, &i, &i, &i, &snr_sum_he_fx, &localVAD_HE_SAD, &( st->flag_noisy_speech_snr ), NULL, NULL, -MAX_16, -MAX_16 ); //-100000f == max 16bit float move16(); - #ifdef DEBUG_FORCE_DIR if ( st->force_dir[0] != '\0' ) { @@ -919,13 +908,13 @@ ivas_error pre_proc_front_ivas_fx( *----------------------------------------------------------------*/ noise_est_down_ivas_fx( fr_bands_fx, fr_bands_fx_q, st->hNoiseEst->bckr_fx, &st->hNoiseEst->q_bckr, tmpN_fx, &q_tmpN, tmpE_fx, &q_tmpE, st->min_band, st->max_band, - &st->hNoiseEst->totalNoise_fx, Etot_fx, &st->hNoiseEst->Etot_last_32fx, &st->hNoiseEst->Etot_v_h2_fx ); + &st->hNoiseEst->totalNoise_fx, Etot_fx, &st->hNoiseEst->Etot_last_32fx, &st->hNoiseEst->Etot_v_h2_32fx ); test(); IF( lr_vad_enabled && st->idchan == 0 ) { - noise_est_down_ivas_fx( fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], hCPE->hFrontVad[0]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[0]->hNoiseEst->q_bckr, tmpN_LR_fx[0], &q_tmpN_LR[0], tmpE_LR_fx[0], &q_tmpE_LR[0], st->min_band, st->max_band, &hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[0] ), &hCPE->hFrontVad[0]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx ); - noise_est_down_ivas_fx( fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], hCPE->hFrontVad[1]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[1]->hNoiseEst->q_bckr, tmpN_LR_fx[1], &q_tmpN_LR[1], tmpE_LR_fx[1], &q_tmpE_LR[1], st->min_band, st->max_band, &hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[1] ), &hCPE->hFrontVad[1]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx ); + noise_est_down_ivas_fx( fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], hCPE->hFrontVad[0]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[0]->hNoiseEst->q_bckr, tmpN_LR_fx[0], &q_tmpN_LR[0], tmpE_LR_fx[0], &q_tmpE_LR[0], st->min_band, st->max_band, &hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[0] ), &hCPE->hFrontVad[0]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_32fx ); + noise_est_down_ivas_fx( fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], hCPE->hFrontVad[1]->hNoiseEst->bckr_fx, &hCPE->hFrontVad[1]->hNoiseEst->q_bckr, tmpN_LR_fx[1], &q_tmpN_LR[1], tmpE_LR_fx[1], &q_tmpE_LR[1], st->min_band, st->max_band, &hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_LR_fx[1] ), &hCPE->hFrontVad[1]->hNoiseEst->Etot_last_32fx, &hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_32fx ); corr_shiftL_fx = correlation_shift_fx( hCPE->hFrontVad[0]->hNoiseEst->totalNoise_fx ); // Q15 corr_shiftR_fx = correlation_shift_fx( hCPE->hFrontVad[1]->hNoiseEst->totalNoise_fx ); // Q15 @@ -1249,7 +1238,7 @@ ivas_error pre_proc_front_ivas_fx( * Update estimated noise energy and voicing cut-off frequency *-----------------------------------------------------------------*/ - scale = s_min( Q31, s_min( add( q_tmpN, L_norm_arr( tmpN_fx, NB_BANDS ) ), add( st->hNoiseEst->q_bckr, L_norm_arr( st->hNoiseEst->bckr_fx, NB_BANDS ) ) ) ); + Word16 scale = s_min( Q31, s_min( add( q_tmpN, L_norm_arr( tmpN_fx, NB_BANDS ) ), add( st->hNoiseEst->q_bckr, L_norm_arr( st->hNoiseEst->bckr_fx, NB_BANDS ) ) ) ); scale = sub( scale, 1 ); // guard bits scale_sig32( st->hNoiseEst->bckr_fx, NB_BANDS, sub( scale, st->hNoiseEst->q_bckr ) ); scale_sig32( tmpN_fx, NB_BANDS, sub( scale, q_tmpN ) ); @@ -1278,7 +1267,7 @@ ivas_error pre_proc_front_ivas_fx( noise_est_ivas_fx( st, old_pitch1, tmpN_fx, epsP_fx, extract_h( Etot_fx ), *relE_fx, corr_shift_fx, tmpE_fx, q_tmpE, fr_bands_fx, fr_bands_fx_q, cor_map_sum_fx, &ncharX_fx, &sp_div_fx, &q_sp_div, &non_staX_fx, loc_harm, lf_E_fx, q_lf_E_fx, &st->hNoiseEst->harm_cor_cnt, extract_h( st->hNoiseEst->Etot_l_lp_32fx ), - st->hNoiseEst->Etot_v_h2_fx, &st->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_fx, + extract_h( st->hNoiseEst->Etot_v_h2_32fx ), &st->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_fx, hStereoClassif, NULL, st->ini_frame ); test(); @@ -1321,14 +1310,14 @@ ivas_error pre_proc_front_ivas_fx( noise_est_ivas_fx( st, old_pitch1, tmpN_LR_fx[0], epsP_fx, Etot_LR_fx[0], sub( Etot_LR_fx[0], hCPE->hFrontVad[0]->lp_speech_fx ), corr_shiftL_fx, tmpE_LR_fx[0], q_tmpE_LR[0], fr_bands_LR_fx[0], fr_bands_LR_fx_q[0], &cor_map_sum_LR_fx[0], &ncharX_LR_fx, &sp_div_LR_fx, &q_sp_div_LR, &non_staX_LR_fx, loc_harmLR_fx, lf_E_LR_fx[0], lf_E_LR_fx_q, &hCPE->hFrontVad[0]->hNoiseEst->harm_cor_cnt, - extract_h( hCPE->hFrontVad[0]->hNoiseEst->Etot_l_lp_32fx ), hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[0]->hNoiseEst->bg_cnt, + extract_h( hCPE->hFrontVad[0]->hNoiseEst->Etot_l_lp_32fx ), extract_h( hCPE->hFrontVad[0]->hNoiseEst->Etot_v_h2_32fx ), &hCPE->hFrontVad[0]->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_LR_fx, NULL, hCPE->hFrontVad[0], hCPE->hFrontVad[0]->ini_frame ); /* Note: the index [0] in the last argument is intended, the ini_frame counter is only maintained in the zero-th channel's VAD handle */ noise_est_ivas_fx( st, old_pitch1, tmpN_LR_fx[1], epsP_fx, Etot_LR_fx[1], sub( Etot_LR_fx[1], hCPE->hFrontVad[1]->lp_speech_fx ), corr_shiftR_fx, tmpE_LR_fx[1], q_tmpE_LR[1], fr_bands_LR_fx[1], fr_bands_LR_fx_q[1], &cor_map_sum_LR_fx[1], &ncharX_LR_fx, &sp_div_LR_fx, &q_sp_div_LR, &non_staX_LR_fx, loc_harmLR_fx, lf_E_LR_fx[1], lf_E_LR_fx_q, &hCPE->hFrontVad[1]->hNoiseEst->harm_cor_cnt, - extract_h( hCPE->hFrontVad[1]->hNoiseEst->Etot_l_lp_32fx ), hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_fx, &hCPE->hFrontVad[1]->hNoiseEst->bg_cnt, + extract_h( hCPE->hFrontVad[1]->hNoiseEst->Etot_l_lp_32fx ), extract_h( hCPE->hFrontVad[1]->hNoiseEst->Etot_v_h2_32fx ), &hCPE->hFrontVad[1]->hNoiseEst->bg_cnt, st->lgBin_E_fx, &dummy_fx, S_map_LR_fx, NULL, hCPE->hFrontVad[1], hCPE->hFrontVad[0]->ini_frame ); } @@ -1346,14 +1335,14 @@ ivas_error pre_proc_front_ivas_fx( * Find spectral tilt * UC and VC frame selection *-----------------------------------------------------------------*/ + scale = s_min( Q31, s_min( add( st->hNoiseEst->q_bckr, L_norm_arr( st->hNoiseEst->bckr_fx, NB_BANDS ) ), add( fr_bands_fx_q, L_norm_arr( fr_bands_fx, 2 * NB_BANDS ) ) ) ); scale_sig32( fr_bands_fx, 2 * NB_BANDS, sub( scale, fr_bands_fx_q ) ); - scale_sig32( st->hNoiseEst->bckr_fx, NB_BANDS, sub( scale, st->hNoiseEst->q_bckr ) ); - st->hNoiseEst->q_bckr = fr_bands_fx_q = scale; - move16(); + Copy_Scale_sig32( st->hNoiseEst->bckr_fx, bckr_temp, NB_BANDS, sub( scale, st->hNoiseEst->q_bckr ) ); + fr_bands_fx_q = scale; move16(); - find_tilt_ivas_fx( fr_bands_fx, fr_bands_fx_q, st->hNoiseEst->bckr_fx, st->hNoiseEst->q_bckr, ee_fx, st->pitch, st->voicing_fx, lf_E_fx, q_lf_E_fx, + find_tilt_ivas_fx( fr_bands_fx, fr_bands_fx_q, bckr_temp, scale, ee_fx, st->pitch, st->voicing_fx, lf_E_fx, q_lf_E_fx, corr_shift_fx, st->input_bwidth, st->max_band, hp_E_fx, MODE1, &( st->bckr_tilt_lt ), st->Opt_SC_VBR ); st->coder_type = find_uv_ivas_fx( st, pitch_fr_fx, voicing_fr_fx, inp_12k8_fx, ee_fx, &dE1X_fx, corr_shift_fx, *relE_fx, extract_h( Etot_fx ), hp_E_fx, diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c index ab090edb8..b3c563863 100644 --- a/lib_enc/ivas_front_vad_fx.c +++ b/lib_enc/ivas_front_vad_fx.c @@ -282,16 +282,6 @@ ivas_error front_vad_fx( move16(); /* wb_vad */ - Word16 scale = s_min( q_fr_bands[n], add( hFrontVads[n]->hNoiseEst->q_enrO, L_norm_arr( hFrontVads[n]->hNoiseEst->enrO_fx, NB_BANDS ) ) ); - - scale_sig32( hFrontVads[n]->hNoiseEst->enrO_fx, NB_BANDS, sub( scale, hFrontVads[n]->hNoiseEst->q_enrO ) ); // scale - hFrontVads[n]->hNoiseEst->q_enrO = scale; - move16(); - - scale_sig32( fr_bands_fx[n], 2 * NB_BANDS, sub( scale, q_fr_bands[n] ) ); // scale - q_fr_bands[n] = scale; - move16(); - hFrontVad->hVAD->vad_flag = wb_vad_ivas_fx( sts[n], fr_bands_fx[n], q_fr_bands[n], &dummy, &dummy, &dummy, &snr_sum_he_fx, &localVAD_HE_SAD[n], &dummy_short, hFrontVad->hVAD, hFrontVad->hNoiseEst, hFrontVad->lp_speech_fx, hFrontVad->lp_noise_fx ); // Q0 @@ -613,7 +603,7 @@ ivas_error front_vad_spar_fx( Word16 q_tmpN, q_tmpE; noise_est_down_ivas_fx( fr_bands_fx[0], q_fr_bands[0], hFrontVad->hNoiseEst->bckr_fx, &hFrontVad->hNoiseEst->q_bckr, tmpN_fx, &q_tmpN, tmpE_fx, &q_tmpE, st->min_band, st->max_band, - &hFrontVad->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_fx[0] ) /*q8->q24*/, &hFrontVad->hNoiseEst->Etot_last_32fx, &hFrontVad->hNoiseEst->Etot_v_h2_fx ); + &hFrontVad->hNoiseEst->totalNoise_fx, L_deposit_h( Etot_fx[0] ) /*q8->q24*/, &hFrontVad->hNoiseEst->Etot_last_32fx, &hFrontVad->hNoiseEst->Etot_v_h2_32fx ); corr_shift_fx = correlation_shift_fx( hFrontVad->hNoiseEst->totalNoise_fx ); /* Q15 */ @@ -755,7 +745,7 @@ ivas_error front_vad_spar_fx( noise_est_ivas_fx( st, old_pitch, tmpN_fx, epsP_fx, Etot_fx[0], sub( Etot_fx[0], hFrontVad->lp_speech_fx ), corr_shift_fx, tmpE_fx, hFrontVad->hNoiseEst->ave_enr_q, fr_bands_fx[0], q_fr_bands[0], &cor_map_sum_fx, NULL, &sp_div_fx, &Q_sp_div, &non_staX_fx, &loc_harm, - lf_E_fx[0], q_lf_E[0], &hFrontVad->hNoiseEst->harm_cor_cnt, extract_h( hFrontVad->hNoiseEst->Etot_l_lp_32fx ), hFrontVad->hNoiseEst->Etot_v_h2_fx, + lf_E_fx[0], q_lf_E[0], &hFrontVad->hNoiseEst->harm_cor_cnt, extract_h( hFrontVad->hNoiseEst->Etot_l_lp_32fx ), extract_h( hFrontVad->hNoiseEst->Etot_v_h2_32fx ), &hFrontVad->hNoiseEst->bg_cnt, st->lgBin_E_fx, &sp_floor, S_map_fx, NULL, hFrontVad, hFrontVad->ini_frame ); MVR2R_WORD16( st->pitch, st->pitch, 3 ); diff --git a/lib_enc/nois_est_fx.c b/lib_enc/nois_est_fx.c index 733576975..4f178214f 100644 --- a/lib_enc/nois_est_fx.c +++ b/lib_enc/nois_est_fx.c @@ -361,13 +361,13 @@ void noise_est_init_ivas_fx( hNoiseEst->Etot_l_fx = 0; hNoiseEst->Etot_l_lp_32fx = 0; hNoiseEst->Etot_last_32fx = 0; - hNoiseEst->Etot_v_h2_fx = 0; + hNoiseEst->Etot_v_h2_32fx = 0; hNoiseEst->sign_dyn_lp_fx = 0; move16(); move16(); move16(); move16(); - move16(); + move32(); move32(); move32(); @@ -514,8 +514,8 @@ void noise_est_pre_32fx( move32(); hNoiseEst->Etot_last_32fx = Etot; // Q24 move32(); - hNoiseEst->Etot_v_h2_fx = 0; - move16(); + hNoiseEst->Etot_v_h2_32fx = 0; + move32(); Etot_lp_32fx = Etot; move32(); hNoiseEst->sign_dyn_lp_fx = 0; @@ -750,7 +750,7 @@ void noise_est_down_ivas_fx( Word16 *totalNoise, /* o : noise estimate over all critical bands */ Word32 Etot, /* i : Energy of current frame Q24*/ Word32 *Etot_last, /* i/o: Energy of last frame Q24 */ - Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */ + Word32 *Etot_v_h2 /* i/o: Energy variations of noise frames Q24 */ ) { @@ -773,7 +773,7 @@ void noise_est_down_ivas_fx( L_Etot = Etot; /*Q24 for later AR1 computations*/ move32(); L_Etot_last = *Etot_last; - L_Etot_v_h2 = L_shl( *Etot_v_h2, 16 ); + L_Etot_v_h2 = *Etot_v_h2; /*-----------------------------------------------------------------* * Estimate total noise energy @@ -901,7 +901,7 @@ void noise_est_down_ivas_fx( L_Etot_v_h2 = Madd_32_16( L_tmp, L_Etot_v_h2, 32113 /* 0.98 in Q15 */ ); // Q24 /* if (*Etot_v_h2 < 0.1f) { *Etot_v_h2 = 0.1f; } */ - *Etot_v_h2 = s_max( round_fx( L_Etot_v_h2 ), 26 /* 0.1 in Q8*/ ); // Q8 + *Etot_v_h2 = L_max( L_Etot_v_h2, 1677722 /* 0.1 in Q24*/ ); // Q24 move16(); return; @@ -3494,7 +3494,7 @@ void noise_est_ivas_fx( ) */ ELSE IF( ( LT_16( hNoiseEst->act_pred_fx, 26214 /* 0.8 in Q15*/ ) && ( ( aE_bgd != 0 ) || ( PAU != 0 ) ) && ( LT_16( hNoiseEst->lt_haco_ev_fx, 3277 /* 0.1 in q15*/ ) ) ) || ( ( LT_16( hNoiseEst->act_pred_fx, 22938 /* 0.70 in Q15 */ ) ) && ( ( aE_bgd != 0 ) || ( LT_16( non_staB, 17 * 256 /* 17.0 in Q8 */ ) ) ) && ( PAU != 0 ) && ( LT_16( hNoiseEst->lt_haco_ev_fx, 4915 /* 0.15 in Q15 */ ) ) ) || - ( GT_16( hNoiseEst->harm_cor_cnt, 80 ) && GT_16( hNoiseEst->totalNoise_fx, 5 * 256 /* 5.0 in Q8 */ ) && LT_16( Etot, s_max( 1 * 256, add( Etot_l_lp, add( hNoiseEst->Etot_v_h2_fx, shr( hNoiseEst->Etot_v_h2_fx, 1 ) ) /* 1.5= 1.0+.5 */ ) ) ) ) || + ( GT_16( hNoiseEst->harm_cor_cnt, 80 ) && GT_16( hNoiseEst->totalNoise_fx, 5 * 256 /* 5.0 in Q8 */ ) && LT_16( Etot, s_max( 1 * 256, add( Etot_l_lp, extract_h( L_add( hNoiseEst->Etot_v_h2_32fx, L_shr( hNoiseEst->Etot_v_h2_32fx, 1 ) ) ) /* 1.5= 1.0+.5 */ ) ) ) ) || ( GT_16( hNoiseEst->harm_cor_cnt, 50 ) && GT_16( hNoiseEst->first_noise_updt, 30 ) && ( aE_bgd != 0 ) && GT_16( hNoiseEst->lt_aEn_zero_fx, 16384 /*.5 in Q15*/ ) ) || ( tn_ini != 0 ) ) { updt_step = 3277; diff --git a/lib_enc/pitch_ol_fx.c b/lib_enc/pitch_ol_fx.c index 91181714a..fdadcd318 100644 --- a/lib_enc/pitch_ol_fx.c +++ b/lib_enc/pitch_ol_fx.c @@ -1686,13 +1686,17 @@ void pitch_ol_ivas_fx( move16(); /* enr1 = dotp( pt2, pt2, len[j] ) + 0.01f; */ - temp = 167772 /*0.01f in Q24*/; + temp = 0; move64(); FOR( m = 0; m < len[j]; m++ ) { temp = W_mac0_16_16( temp, pt2[m], pt2[m] ); // 2*qwsp } + temp = W_shl( temp, sub( Q24, shl( qwsp, 1 ) ) ); // Q24 + + temp = W_add( temp, 167772 ); /*0.01f in Q24*/ + enr1_exp = W_norm( temp ); enr1 = W_extract_h( W_shl( temp, enr1_exp ) ); // enr1_exp+24-32 enr1_exp = sub( 39, enr1_exp ); // 31-(enr1_exp+24-32) @@ -1724,13 +1728,18 @@ void pitch_ol_ivas_fx( move16(); /* enr1 = dotp(pt4, pt4, len1[j]) + 0.01f; */ - temp = 167772 /*0.01f in Q24*/; + temp = 0; + move64(); move64(); FOR( m = 0; m < len1[j]; m++ ) { temp = W_mac0_16_16( temp, pt4[m], pt4[m] ); // 2*qwsp } + temp = W_shl( temp, sub( Q24, shl( qwsp, 1 ) ) ); // Q24 + + temp = W_add( temp, 167772 ); /*0.01f in Q24*/ + enr1_exp = W_norm( temp ); enr1 = W_extract_h( W_shl( temp, enr1_exp ) ); // enr1_exp+24-32 enr1_exp = sub( 39, enr1_exp ); // 31-(enr1_exp+24-32) diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 05bb16832..1d85ae6de 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -371,7 +371,7 @@ void noise_est_down_ivas_fx( Word16 *totalNoise, /* o : noise estimate over all critical bands */ Word32 Etot, /* i : Energy of current frame Q24*/ Word32 *Etot_last, /* i/o: Energy of last frame Q24 */ - Word16 *Etot_v_h2 /* i/o: Energy variations of noise frames Q8 */ + Word32 *Etot_v_h2 /* i/o: Energy variations of noise frames Q24 */ ); void noise_est_fx( diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 3d6f23dd3..1097c6a27 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -224,7 +224,8 @@ typedef struct vad_structure Word16 trigger_SID; Word16 snr_sum_vad_fx; /*Q15 */ Word16 running_avg_fx; /*Q15 */ - Word32 L_snr_sum_vad_fx; /*Q4*/ + Word32 L_snr_sum_vad_fx; // EVS:Q4, IVAS:q_L_snr_sum_vad + Word16 q_L_snr_sum_vad; Word16 hangover_terminate_flag; /* CNG and DTX - flag indicating whether to early terminate DTX hangover */ Word16 vad_flag; /* VAD flag */ @@ -564,7 +565,8 @@ typedef struct noise_estimation_structure Word16 lt_aEn_zero_fx; /* Q15 */ Word16 Etot_v_h2_fx; - Word16 sign_dyn_lp_fx; /*Q8*/ + Word32 Etot_v_h2_32fx; /* Q24 */ + Word16 sign_dyn_lp_fx; /*Q8*/ Word16 Etot_st_est_fx; /* Q8 Noise estimation - short term estimate of E{ Etot } */ Word16 Etot_sq_st_est_fx; /* Q2 Noise estimation - short term estimate of E{ Etot^2 } */ diff --git a/lib_enc/vad_fx.c b/lib_enc/vad_fx.c index 531265236..721a6e348 100644 --- a/lib_enc/vad_fx.c +++ b/lib_enc/vad_fx.c @@ -142,6 +142,8 @@ void wb_vad_init_ivas_fx( { hVAD->L_snr_sum_vad_fx = 0; move32(); + hVAD->q_L_snr_sum_vad = Q31; + move16(); hVAD->hangover_cnt = 0; move16(); /* Hangover counter initialized to 0 */ hVAD->nb_active_frames = ACTIVE_FRAMES_FX; @@ -1918,7 +1920,8 @@ Word16 wb_vad_ivas_fx( ) { Word16 i, flag = 0, hangover_short; - Word16 snr_sum, thr1 = 0, thr1_nb_mod, thr2 = 0, nk = 0, nc = 0, th_clean = 0; + Word16 snr_sum, thr1 = 0, thr1_nb_mod, thr2 = 0, nk = 0, th_clean = 0; + Word32 nc; Word16 lp_snr; /* Q8 */ const Word32 *pt1; const Word32 *pt2; @@ -1927,8 +1930,8 @@ Word16 wb_vad_ivas_fx( Word16 min_snr, sign_thr; Word32 L_snr, L_snr_sum; - Word32 ftmp, ftmp1, ftmp2; - Word16 m_noise_local, e_noise, e_num, m_num, snr_tmp, shift_snr, q_snr_tmp, q_snr; + Word32 ener, fr_enr, ftmp, ftmp1; + Word16 m_noise_local, e_noise, e_num, m_num, q_snr_tmp, q_snr; Word32 L_snr_tmp; Word16 snr_sumt; Word32 L_vad_thr; @@ -1947,7 +1950,7 @@ Word16 wb_vad_ivas_fx( Word16 nb_sig_snr; /* Q0 */ Word16 nv; - Word16 nv_ofs; /* Q8 */ + Word32 nv_ofs; /* Q24 */ Word32 L_snr_sum_HE_SAD; /* Q4 */ Word16 snr_sum_HE_SAD; /*Q8 log */ Word16 sign_thr_HE_SAD, min_snr_HE_SAD; @@ -1957,13 +1960,14 @@ Word16 wb_vad_ivas_fx( Word32 L_snr_sum_ol; Word16 snr_sum_ol; /* Q8 log */ - Word32 L_snr_outlier; + Word32 L_snr_outlier, L_snr_outlier_Q4; Word16 snr_outlier_index; Word32 L_accum_ener_L; Word32 L_accum_ener_H; Word16 vad_bwidth_fx; Word16 last_7k2_coder_type; - Word16 q_shift; + Word16 q_shift, q_ener, q_diff1, q_diff2; + Word16 q_L_snr_sum_ol, e_snr, f_snr; #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -1978,7 +1982,7 @@ Word16 wb_vad_ivas_fx( move16(); /*thr1*/ move16(); /*thr2*/ move16(); /*nk*/ - move16(); /*nc*/ + move32(); /*nc*/ move16(); /*th_clean*/ move16(); /*flag*/ @@ -2051,12 +2055,12 @@ Word16 wb_vad_ivas_fx( { nk = 3277; move16(); /*0.1 Q15 */ - nc = 4122; - move16(); /*16.1 Q8 */ - nv = 525; - move16(); /* 2.05 Q8*/ - nv_ofs = 422; - move16(); /* 1.65 Q8*/ + nc = 270113178; + move32(); /*16.1 Q24 */ + nv = 8397; + move16(); /* 2.05 Q12*/ + nv_ofs = 27682406; + move32(); /* 1.65 Q24*/ th_clean = TH16_2_FX; move16(); /* 35 Q8 */ sign_thr = 21; @@ -2085,12 +2089,12 @@ Word16 wb_vad_ivas_fx( // move16(); nk = 3277; move16(); /* 0.1 Q15 */ - nc = 4096; - move16(); /* 16.0 Q8 */ - nv = 1024; - move16(); /* 4.0 Q8 */ - nv_ofs = 294; - move16(); /*1.15 Q8*/ + nc = 268435456; + move32(); /* 16.0 Q24 */ + nv = 16384; + move16(); /* 4.0 Q12 */ + nv_ofs = 19293798; + move32(); /*1.15 Q24*/ th_clean = TH8_1_FX; move16(); /*20 Q8 */ sign_thr = 28; @@ -2203,10 +2207,6 @@ Word16 wb_vad_ivas_fx( nb_sig_snr = 20; move16(); - pt1 = fr_bands; - pt2 = fr_bands + NB_BANDS; - pt3 = hNoiseEst->bckr_fx; - L_snr_sum = L_deposit_l( 0 ); L_snr_sum_HE_SAD = L_deposit_l( 0 ); Word16 q_snr_sum = 0; @@ -2226,81 +2226,89 @@ Word16 wb_vad_ivas_fx( q_snr = 0; move16(); move16(); - q_shift = add( sub( q_fr_bands, hNoiseEst->q_bckr ), 14 - 4 ); + + pt1 = fr_bands; + pt2 = fr_bands + NB_BANDS; + pt3 = hNoiseEst->bckr_fx; + + q_ener = s_min( q_fr_bands, hNoiseEst->q_enrO ); + q_diff1 = sub( q_ener, hNoiseEst->q_enrO ); + q_diff2 = sub( q_ener, q_fr_bands ); + q_shift = add( Q31 + Q1, sub( q_ener, hNoiseEst->q_bckr ) ); + FOR( i = st_fx->min_band; i <= st_fx->max_band; i++ ) { - ftmp = L_add( *pt1++, 0 ); - ftmp1 = L_add( *pt2++, 0 ); - ftmp2 = L_add( *pt3++, 0 ); + ener = L_shl( hNoiseEst->enrO_fx[i], q_diff1 ); // q_ener + ftmp = L_shl( *pt1++, q_diff2 ); // q_ener + ftmp1 = L_shl( *pt2++, q_diff2 ); // q_ener /*fr_enr = ( 0.2f * st->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 );*/ - L_tmp = Mult_32_16( hNoiseEst->enrO_fx[i], 6554 ); /* L_tmp(high word) = Qenr0fx*Q15+1 -16 -> Qener0 */ - L_tmp1 = Madd_32_16( L_tmp, ftmp, 13107 ); /* 13107 = .4 in Q15 */ - L_tmp1 = Madd_32_16( L_tmp1, ftmp1, 13107 ); /* L_tmp1 re_used a bit later for final snr[i]*/ - - L_tmp2 = Madd_32_16( L_tmp, ftmp, 9830 ); /* 9830 = 0.3 in Q15 */ - L_tmp2 = Msub_32_16( L_tmp2, ftmp1, -16384 ); /* -16384= -0.5 in Q15 */ + L_tmp = Mpy_32_16_1( ener, 13107 /* 0.2 in Q16 */ ); // q_ener+1 + fr_enr = Madd_32_16( Madd_32_16( L_tmp, ftmp, 26214 /* 0.4 in Q16 */ ), ftmp1, 26214 /* 0.4 in Q16 */ ); // q_ener+1 IF( GT_32( ftmp, ftmp1 ) ) { - /*snr[i] = ( 0.2f * st->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 ) / ftmp2 ;*/ - /*snr[i] = L_tmp1/(ftmp2) */ - IF( ftmp2 != 0 ) + /* snr[i] = ( 0.2f * hNoiseEst->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 ) / *pt3++; */ + IF( *pt3 != 0 ) { - e_num = norm_l( L_tmp1 ); - m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+e_num-16 - - e_noise = norm_l( ftmp2 ); - m_noise_local = extract_h( L_shl( ftmp2, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 + /* Since fr_enr = 0.2f * hNoiseEst->enrO[i] + 0.4f * ftmp + 0.4f * ftmp1 */ + e_num = sub( norm_l( fr_enr ), 1 ); + m_num = extract_h( L_shl( fr_enr, e_num ) ); // q_ener+1+e_num-16 - m_num = shr( m_num, 1 ); // q_fr_bands-1+e_num-16 - shift_snr = add( sub( e_num, e_noise ), q_shift ); + e_noise = norm_l( *pt3 ); + m_noise_local = extract_h( L_shl( *pt3++, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 - snr_tmp = div_s( m_num, m_noise_local ); // q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise - L_snr = L_shr_o( snr_tmp, shift_snr, &Overflow ); /* L_snr in Q4 */ + L_snr = L_deposit_h( div_s( m_num, m_noise_local ) ); // 31+(q_ener+1+e_num-16)-(hNoiseEst->q_bckr+e_noise-16) + q_snr_tmp = add( q_shift, sub( e_num, e_noise ) ); } ELSE { - L_snr = L_shl_o( L_tmp1, sub( Q4, q_fr_bands ), &Overflow ); // q_fr_bands -> Q4 + L_snr = Mpy_32_16_1( fr_enr, 18286 /* (1/E_MIN) in Q6 */ ); // q_ener+1+6-15 + q_snr_tmp = sub( q_ener, 8 ); } } ELSE { - /*snr[i] = ( 0.2f * st->enrO[i] + 0.3f * ftmp + 0.5f * ftmp1 ) / ftmp2 ;*/ - /*snr[i] =L_tmp2/( ftmp2 ) */ - IF( ftmp2 != 0 ) - { - e_num = norm_l( L_tmp2 ); - m_num = extract_h( L_shl( L_tmp2, e_num ) ); // q_fr_bands+e_num-16 + /* snr[i] = ( 0.2f * hNoiseEst->enrO[i] + 0.3f * ftmp + 0.5f * ftmp1 ) / *pt3++; */ + /* Since, L_tmp = 0.2f * hNoiseEst->enrO[i] */ + L_tmp = Msub_32_16( Madd_32_16( L_tmp, ftmp, 19661 /* 0.3 in Q16 */ ), ftmp1, -32768 /* -0.5 in Q16 */ ); // q_ener+1 - e_noise = norm_l( ftmp2 ); - m_noise_local = extract_h( L_shl( ftmp2, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 + IF( *pt3 != 0 ) + { + e_num = sub( norm_l( L_tmp ), 1 ); + m_num = extract_h( L_shl( L_tmp, e_num ) ); // q_ener+1+e_num-16 - m_num = shr( m_num, 1 ); // q_fr_bands-1+e_num-16 - shift_snr = add( sub( e_num, e_noise ), q_shift ); + e_noise = norm_l( *pt3 ); + m_noise_local = extract_h( L_shl( *pt3++, e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 - snr_tmp = div_s( m_num, m_noise_local ); // q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise - L_snr = L_shr_o( snr_tmp, shift_snr, &Overflow ); /* L_snr in Q4 */ + L_snr = L_deposit_h( div_s( m_num, m_noise_local ) ); // 31+(q_ener+1+e_num-16)-(hNoiseEst->q_bckr+e_noise-16) + q_snr_tmp = add( q_shift, sub( e_num, e_noise ) ); } ELSE { - L_snr = L_shl_o( L_tmp2, sub( Q4, q_fr_bands ), &Overflow ); // q_fr_bands -> Q4 + L_snr = Mpy_32_16_1( L_tmp, 18286 /* (1/E_MIN) in Q6 */ ); // q_ener+1+6-15 + q_snr_tmp = sub( q_ener, 8 ); } } - IF( LT_32( L_snr, 2 * ( 1 << 4 ) ) ) + if ( LT_32( L_snr, L_shl_sat( 2, q_snr_tmp ) ) ) { nb_sig_snr = sub( nb_sig_snr, 1 ); /* nb_sig_snr--; */ } - L_snr = L_max( L_snr, 1 * ( 1 << 4 ) ); /* if ( snr[i] < 1 ){snr[i] = 1;}*/ - + IF( LT_32( L_snr, L_shl_sat( 1, q_snr_tmp ) ) ) + { + L_snr = ONE_IN_Q30; + q_snr_tmp = Q30; + move32(); + move16(); + } /* snr[i] = (float)log10(snr[i]); */ Word16 exp = norm_l( L_snr ); Word16 val = Log2_norm_lc( L_shl( L_snr, exp ) ); - exp = sub( sub( 30, exp ), Q4 ); - L_snr = L_mac( L_deposit_h( exp ), val, 1 ); // Q16 - L_snr = Mpy_32_16_1( L_snr, 9864 /* log2 in Q15 */ ); // Q16 + exp = sub( sub( 30, exp ), q_snr_tmp ); + L_snr = L_mac( val, exp, ONE_IN_Q14 ); // Q15 + L_snr = Mpy_32_16_1( L_snr, 19728 /* log2 in Q16 */ ); // Q16 /* snr_sumt += snr[i];*/ L_snr_sumt = L_add( L_snr_sumt, L_snr ); // Q16 @@ -2373,22 +2381,22 @@ Word16 wb_vad_ivas_fx( L_mssnr_hov = BASOP_Util_Add_Mant32Exp( L_mssnr_hov, L_mssnr_hov_e, L_msnr, L_msnr_e, &L_mssnr_hov_e ); /*L_mssnr_hov_e mssnr_hov += msnr; */ /* recompute after he1 modifications */ - /* snr[i] = fr_enr / st->bckr[i] = L_tmp1/st->bckr[i];*/ + /* snr[i] = fr_enr / st->bckr[i] ;*/ IF( hNoiseEst->bckr_fx[i] != 0 ) { - e_num = sub( norm_l( L_tmp1 ), 1 ); - m_num = extract_h( L_shl( L_tmp1, e_num ) ); // q_fr_bands+e_num-16 + e_num = sub( norm_l( fr_enr ), 1 ); + m_num = extract_h( L_shl( fr_enr, e_num ) ); // q_ener+1+e_num-16 e_noise = norm_l( hNoiseEst->bckr_fx[i] ); m_noise_local = extract_h( L_shl( hNoiseEst->bckr_fx[i], e_noise ) ); // hNoiseEst->q_bckr+e_noise-16 - L_snr_tmp = L_deposit_h( div_s( m_num, m_noise_local ) ); // 32+q_fr_bands+e_num-hNoiseEst->q_bckr-e_noise - q_snr_tmp = add( 31, sub( add( q_fr_bands, e_num ), add( hNoiseEst->q_bckr, e_noise ) ) ); + L_snr_tmp = L_deposit_h( div_s( m_num, m_noise_local ) ); // 31+q_ener+1+e_num-hNoiseEst->q_bckr-e_noise + q_snr_tmp = add( 32, sub( add( q_ener, e_num ), add( hNoiseEst->q_bckr, e_noise ) ) ); } ELSE { - L_snr_tmp = Mpy_32_16_1( L_tmp1, 18286 /* 1/E_MIN in Q6 */ ); // q_fr_bands-9 - q_snr_tmp = sub( q_fr_bands, 9 ); + L_snr_tmp = Mpy_32_16_1( fr_enr, 18286 /* 1/E_MIN in Q6 */ ); // q_ener+1+6-15 + q_snr_tmp = sub( q_ener, 8 ); } /* conditional snrsum, snr_sum = snr_sum + snr[i];*/ @@ -2446,11 +2454,9 @@ Word16 wb_vad_ivas_fx( move16(); } } /* end of band loop */ - L_snr_sum = L_shl_o( L_snr_sum, sub( 4, q_snr_sum ), &Overflow ); // q_snr_sum->q4 L_snr_sum_HE_SAD = L_shl_o( L_snr_sum_HE_SAD, sub( 4, q_snr_sum_HE_SAD ), &Overflow ); // q_snr_sum_HE_SAD->q4 - L_snr_outlier = L_shl_sat( L_snr_outlier, sub( Q4, q_snr ) ); // q_snr -> Q4 - snr_sumt = extract_h( L_shl( L_snr_sumt, Q4 ) ); // Q16 -> Q4 + snr_sumt = extract_h( L_shl( L_snr_sumt, Q4 ) ); // Q16 -> Q4 test(); test(); @@ -2482,51 +2488,66 @@ Word16 wb_vad_ivas_fx( } } + L_snr_outlier_Q4 = L_shl_sat( L_snr_outlier, sub( Q4, q_snr ) ); // Q4 /* Separated SNR_SUM outlier modification */ - L_snr_sum_ol = L_snr_sum; /* snr_sum_ol = snr_sum; */ + /* snr_sum_ol = snr_sum; */ + L_snr_sum_ol = L_snr_sum; // q_snr_sum + q_L_snr_sum_ol = q_snr_sum; move32(); + move16(); test(); test(); test(); - IF( ( EQ_16( st_fx->max_band, 19 ) ) && LT_32( L_snr_outlier, MAX_SNR_OUTLIER_3_FX ) && GT_16( snr_outlier_index, 3 ) && LT_16( snr_outlier_index, MAX_SNR_OUTLIER_IND_FX ) ) + IF( ( EQ_16( st_fx->max_band, 19 ) ) && LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_3_FX ) && GT_16( snr_outlier_index, 3 ) && LT_16( snr_outlier_index, MAX_SNR_OUTLIER_IND_FX ) ) { + q_L_snr_sum_ol = s_min( add( norm_l( L_snr_sum_ol ), q_snr_sum ), add( norm_l( L_snr_outlier ), q_snr ) ); + L_tmp1 = L_shl( L_snr_sum_ol, sub( q_L_snr_sum_ol, q_snr_sum ) ); // q_L_snr_sum_ol + L_tmp2 = L_shl( L_snr_outlier, sub( q_L_snr_sum_ol, q_snr ) ); // q_L_snr_sum_ol test(); test(); IF( LT_32( L_accum_ener_H, Mult_32_16( L_accum_ener_L, INV_OUTLIER_THR_1_FX ) ) /* float:: (accum_ener_L*INV_OUTLIER_THR_1 > accum_ener_H ) !!! */ - || LT_32( L_snr_outlier, MAX_SNR_OUTLIER_1_FX ) ) + || LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_1_FX ) ) { - /* as weight1 is 1.0 we do not need to multiply here , i.e. no need to loose any precisison */ - L_snr_sum_ol = L_sub( L_snr_sum_ol, L_snr_outlier ); /*Q4 */ + /* snr_sum_ol = SNR_OUTLIER_WGHT_1 * ( snr_sum_ol - snr_outlier ); + As SNR_OUTLIER_WGHT_1 is 1.0f we do not need to multiply here , i.e. no need to loose any precisison */ + L_snr_sum_ol = L_sub( L_tmp1, L_tmp2 ); // q_L_snr_sum_ol } ELSE IF( LT_32( L_accum_ener_H, Mult_32_16( L_accum_ener_L, INV_OUTLIER_THR_2_FX ) ) /* float:: (accum_ener_L *INV_OUTLIER_THR_2 > accum_ener_H ) !!! */ - || LT_32( L_snr_outlier, MAX_SNR_OUTLIER_2_FX ) ) + || LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_2_FX ) ) { - /* L_snr_sum = SNR_OUTLIER_WGHT_2 * (snr_sum - snr_outlier); */ - - /* 1.01*x -> (1*x + 0.01*x) to not drop down to Q3 */ - L_tmp = L_sub( L_snr_sum_ol, L_snr_outlier ); - L_tmp2 = Mult_32_16( L_tmp, 20972 ); /* 0.01(in Q21)= 20972 Q4*Q21+1-16 -> Q10 */ - L_snr_sum_ol = L_add( L_tmp, L_shr( L_tmp2, 6 ) ); /* Q4 */ + /* snr_sum_ol = SNR_OUTLIER_WGHT_2 * (snr_sum_ol - snr_outlier); */ + L_snr_sum_ol = Mpy_32_32( 1084479242 /* 1.01f in Q30 */, L_sub( L_tmp1, L_tmp2 ) ); // q_L_snr_sum_ol+30-31 + q_L_snr_sum_ol = sub( q_L_snr_sum_ol, 1 ); } ELSE { - /* L_snr_sum = SNR_OUTLIER_WGHT_3 * (snr_sum - snr_outlier);*/ - /* 1.02*x -> (1*x + 0.02*x) to not drop down to Q3 */ - L_tmp = L_sub( L_snr_sum_ol, L_snr_outlier ); - L_tmp2 = Mult_32_16( L_tmp, 20972 ); /* 0.02(in Q20)= 20972 Q4*Q20+1-16 -> Q9 */ - L_snr_sum_ol = L_add( L_tmp, L_shr( L_tmp2, 5 ) ); /* Q4 */ + /* snr_sum_ol = SNR_OUTLIER_WGHT_2 * (snr_sum_ol - snr_outlier); */ + L_snr_sum_ol = Mpy_32_32( 1095216660 /* 1.02f in Q30 */, L_sub( L_tmp1, L_tmp2 ) ); // q_L_snr_sum_ol+30-31 + q_L_snr_sum_ol = sub( q_L_snr_sum_ol, 1 ); } } /*st_fx->snr_sum_vad_fx = 0.5f * st->snr_sum_vad + 0.5f * snr_sum_ol;*/ - hVAD->L_snr_sum_vad_fx = L_shr( L_add_o( hVAD->L_snr_sum_vad_fx, L_snr_sum_ol, &Overflow ), 1 ); /*Q4*/ + q_snr_tmp = s_min( add( hVAD->q_L_snr_sum_vad, norm_l( hVAD->L_snr_sum_vad_fx ) ), add( norm_l( L_snr_sum_ol ), q_L_snr_sum_ol ) ); + /* 0.5f * st->snr_sum_vad */ + L_tmp1 = L_shl( hVAD->L_snr_sum_vad_fx, sub( sub( q_snr_tmp, 1 ), hVAD->q_L_snr_sum_vad ) ); // q_snr_tmp + /* 0.5f * snr_sum_ol */ + L_tmp2 = L_shl( L_snr_sum_ol, sub( sub( q_snr_tmp, 1 ), q_L_snr_sum_ol ) ); // q_snr_tmp + hVAD->L_snr_sum_vad_fx = L_add( L_tmp1, L_tmp2 ); // q_snr_tmp + hVAD->q_L_snr_sum_vad = q_snr_tmp; move32(); + move16(); /* snr_sum_ol = 10.0f * (float)log10( snr_sum_ol ); */ - snr_sum_ol = vad_snr_log_fx( L_snr_sum_ol, LG10 ); + e_snr = norm_l( L_snr_sum_ol ); + f_snr = Log2_norm_lc( L_shl( L_snr_sum_ol, e_snr ) ); // Q15 + e_snr = sub( sub( 30, e_snr ), q_L_snr_sum_ol ); + L_tmp = L_mac( f_snr, e_snr, ONE_IN_Q14 ); // Q15 + L_snr_sum_ol = Mpy_32_16_1( L_tmp, 24660 /* 10*log(2) in Q13 */ ); // Q13 + snr_sum_ol = extract_h( L_shl( L_snr_sum_ol, Q24 - Q13 ) ); // Q8 snr_sum = snr_sum_ol; move16(); /* note for NB no outlier modification */ @@ -2555,9 +2576,9 @@ Word16 wb_vad_ivas_fx( /*thr1 = nk * lp_snr + nc*1.0 + nv * ( st->Etot_v_h2 - nv_ofs); */ /* Linear function for noisy speech */ - L_tmp = L_shl( L_mult( sub( hNoiseEst->Etot_v_h2_fx, nv_ofs ), nv ), 7 ); /* Q8+Q8+1 +7 --> Q24 */ - L_tmp = L_mac( L_tmp, nc, (Word16) 32767 ); /* Q8+Q15+1 = Q24 */ - thr1 = mac_r( L_tmp, lp_snr, nk ); /* Q8+Q15+1 - 16 --> Q8 */ + L_tmp = L_shl( Mpy_32_16_1( L_sub( hNoiseEst->Etot_v_h2_32fx, nv_ofs ), nv ), 3 ); // Q24 (24+12-15+3) + L_tmp = L_add( L_tmp, nc ); // Q24 + thr1 = mac_r( L_tmp, lp_snr, nk ); // Q24 test(); IF( st_fx->element_mode > EVS_MONO && LT_16( hNoiseEst->first_noise_updt_cnt, 100 ) ) @@ -2624,33 +2645,38 @@ Word16 wb_vad_ivas_fx( test(); IF( ( LE_16( snr_outlier_index, 4 ) && ( st_fx->last_coder_type > UNVOICED ) && !st_fx->Opt_SC_VBR ) || ( LE_16( snr_outlier_index, 4 ) && ( last_7k2_coder_type > UNVOICED ) && st_fx->Opt_SC_VBR ) ) - - { - thr1_ol = sub( thr1_ol, (Word16) ( 1 << 8 ) ); /*thr1_ol = thr1 - 1.0f ; */ + /*thr1_ol = thr1 - 1.0f ; */ + thr1_ol = sub( thr1, ONE_IN_Q8 ); // Q8 + /*snr_sum_ol = 10.0f * (float)log10( hVAD->L_snr_sum_vad_fx );*/ - snr_sum_ol = vad_snr_log_fx( hVAD->L_snr_sum_vad_fx, LG10 ); /* snr in Q8 */ + e_snr = norm_l( hVAD->L_snr_sum_vad_fx ); + f_snr = Log2_norm_lc( L_shl( hVAD->L_snr_sum_vad_fx, e_snr ) ); // Q15 + e_snr = sub( sub( 30, e_snr ), hVAD->q_L_snr_sum_vad ); + L_tmp = L_mac( f_snr, e_snr, ONE_IN_Q14 ); // Q15 + L_snr_sum_ol = Mpy_32_16_1( L_tmp, 24660 /* 10*log(2) in Q13 */ ); // Q13 + snr_sum_ol = round_fx( L_shl( L_snr_sum_ol, Q24 - Q13 ) ); // Q8 } - ELSE IF( ( ( LE_16( st_fx->last_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR == 0 ) ) || - ( ( LE_16( last_7k2_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR != 0 ) ) ) - + ELSE IF( ( ( LE_16( st_fx->last_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR == 0 ) ) || + ( ( LE_16( last_7k2_coder_type, UNVOICED ) ) && ( LT_32( L_snr_outlier_Q4, MAX_SNR_OUTLIER_2_FX ) ) && ( st_fx->Opt_SC_VBR != 0 ) ) ) { /* thr1_ol = thr1 + (float)(1.0f - 0.04f * snr_outlier); */ - L_tmp2 = Msub_32_16( (Word32) ( 1 << ( 24 - 16 ) ), L_snr_outlier, 20972 ); /* (1.0)Q24(Q8 in high 32bit word) - Q4*Q19+1 */ - tmp2 = round_fx( L_shl( L_tmp2, 16 ) ); /* high word is in Q8 */ - thr1_ol = add( thr1_ol, tmp2 ); /* (Q8 , Q8) */ + L_tmp = Mpy_32_16_1( L_snr_outlier, 20972 /*0.04f in Q19*/ ); // q_snr+19-15 + L_tmp = L_shl( L_tmp, sub( Q24 - 4, q_snr ) ); // Q24 (24-(q_nsr+4)) + tmp2 = round_fx( L_sub( ONE_IN_Q24, L_tmp ) ); // Q8 + thr1_ol = add( thr1, tmp2 ); // Q8 } ELSE { - /*thr1_ol = thr1 + max(0, (float)(0.6f - 0.01f * L_snr_outlier)); */ - thr1_ol = thr1; - move16(); - L_tmp2 = Msub_32_16( (Word32) 614, L_snr_outlier, 20972 ); /* .6*1024= */ /* 0.6 Q26(Q10 in high word) - Q4*Q21+1 */ - tmp2 = round_fx( L_shl_o( L_tmp2, 14, &Overflow ) ); /* Q10(high word)+ 14 -16 --> Q8*/ - IF( L_tmp2 > 0 ) - { - thr1_ol = add( thr1_ol, tmp2 ); /* Q24 >>16 + Q8 */ - } + /*thr1_ol = thr1 + max(0, (float)(0.6f - 0.01f * snr_outlier)); */ + /* Saturation is added in the below step for 0.04f * snr_outlier in Q24. + In case of saturation, 0.04f * snr_outlier will be much greater than 0.6f and (0.6f - 0.01f * snr_outlier) becomes negative. + max(0, (float)(0.6f - 0.01f * snr_outlier)) gives zero. Hence addition of saturation has no impact */ + L_tmp = Mpy_32_16_1( L_snr_outlier, 20972 /*0.04f in Q21*/ ); // q_snr+21-15 + L_tmp = L_shl_sat( L_tmp, sub( Q24 - 6, q_snr ) ); // Q24 (24-(q_nsr+6)) + tmp2 = round_fx( L_sub( 10066330 /* 0.6 in Q24*/, L_tmp ) ); // Q8 + tmp2 = s_max( 0, tmp2 ); // Q8 + thr1_ol = add( thr1, tmp2 ); // Q8 } } -- GitLab From 0d81dfcd22ce7ba9e51ebc2b674238a55027bde0 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 15 May 2025 12:44:47 +0530 Subject: [PATCH 524/698] Clang formatting changes --- lib_enc/stat_enc.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 1097c6a27..caca3173e 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -565,8 +565,8 @@ typedef struct noise_estimation_structure Word16 lt_aEn_zero_fx; /* Q15 */ Word16 Etot_v_h2_fx; - Word32 Etot_v_h2_32fx; /* Q24 */ - Word16 sign_dyn_lp_fx; /*Q8*/ + Word32 Etot_v_h2_32fx; /* Q24 */ + Word16 sign_dyn_lp_fx; /*Q8*/ Word16 Etot_st_est_fx; /* Q8 Noise estimation - short term estimate of E{ Etot } */ Word16 Etot_sq_st_est_fx; /* Q2 Noise estimation - short term estimate of E{ Etot^2 } */ -- GitLab From 7e2672a529a79cc7e8a5f1037fb6b8295926e431 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 15 May 2025 14:23:40 +0530 Subject: [PATCH 525/698] Fix for 3GPP issue 1531: Low-bitrate OMASA shows a bit high MLD (over 10) in BASOP decoder rendering to binaural Link #1531 --- lib_dec/FEC_clas_estim_fx.c | 16 ++++-- .../ivas_dirac_dec_binaural_functions_fx.c | 49 ++++++++++++++---- lib_rend/ivas_dirac_rend_fx.c | 51 ++++++++++++------- 3 files changed, 85 insertions(+), 31 deletions(-) diff --git a/lib_dec/FEC_clas_estim_fx.c b/lib_dec/FEC_clas_estim_fx.c index e56a77be1..2bd38153a 100644 --- a/lib_dec/FEC_clas_estim_fx.c +++ b/lib_dec/FEC_clas_estim_fx.c @@ -285,7 +285,17 @@ void FEC_clas_estim_fx( Corre( &pt1[pos], &pt1[pos - T0], T0, &cor_max[0] ); - T0 = mult_r_sat( add_sat( pitch[2], pitch[3] ), 256 ); + IF( NE_16( st_fx->element_mode, EVS_MONO ) ) + { + IF( LT_16( sub( pos, T0 ), sub( L_frame, L_SUBFR ) ) ) + { + T0 = mult_r_sat( add_sat( pitch[2], pitch[3] ), 256 ); + } + } + ELSE + { + T0 = mult_r_sat( add_sat( pitch[2], pitch[3] ), 256 ); + } pos_limit = sub( L_frame, L_SUBFR ); j = s_min( 1, s_max( 0, sub( pos, pos_limit ) ) ); Ltmp = L_deposit_l( cor_max[0] ); @@ -725,8 +735,8 @@ void FEC_clas_estim_fx( } /* Do the classification only - - MODE1: when the class is not transmitted in the bitstream - - MODE2: on good frames (classifier is also called for bfi=1) */ + - MODE1: when the class is not transmitted in the bitstream + - MODE2: on good frames (classifier is also called for bfi=1) */ /* update the memory of synthesis for frame class estimation */ diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 16fefa3bb..c47052d5f 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -3584,24 +3584,53 @@ static void matrixTransp1Mul_fx( Word16 chA, chB; Word16 size = i_mult( BINAURAL_CHANNELS, BINAURAL_CHANNELS ); + Word64 tmp_outRe_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word64 tmp_outIm_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 q_tmp_outRe_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 q_tmp_outIm_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word64 tmp64_1, tmp64_2; + Word16 tmp16, q_common = 63; + move16(); + FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) { FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ ) { - outRe_fx[chA][chB] = Madd_32_32( Madd_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][chA], Bre_fx[0][chB] ), - Are_fx[1][chA], Bre_fx[1][chB] ), - Aim_fx[0][chA], Bim_fx[0][chB] ), - Aim_fx[1][chA], Bim_fx[1][chB] ); + tmp64_1 = W_mac_32_32( W_mult_32_32( Are_fx[0][chA], Bre_fx[0][chB] ), Are_fx[1][chA], Bre_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 ) + tmp64_2 = W_mac_32_32( W_mult_32_32( Aim_fx[0][chA], Bim_fx[0][chB] ), Aim_fx[1][chA], Bim_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 ) + tmp_outRe_fx[chA][chB] = W_add( tmp64_1, tmp64_2 ); // Q: add( add( q_A, q_B ), 1 ) + move64(); + tmp16 = W_norm( tmp_outRe_fx[chA][chB] ); + tmp_outRe_fx[chA][chB] = W_shl( tmp_outRe_fx[chA][chB], tmp16 ); // Q:add( tmp16, add( add( q_A, q_B ), 1 ) ) + move64(); + q_tmp_outRe_fx[chA][chB] = add( tmp16, add( add( q_A, q_B ), 1 ) ); + move16(); + q_common = s_min( q_tmp_outRe_fx[chA][chB], q_common ); + + + tmp64_1 = W_mac_32_32( W_mult_32_32( Are_fx[0][chA], Bim_fx[0][chB] ), Are_fx[1][chA], Bim_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 ) + tmp64_2 = W_mac_32_32( W_mult_32_32( Aim_fx[0][chA], Bre_fx[0][chB] ), Aim_fx[1][chA], Bre_fx[1][chB] ); // Q: add( add( q_A, q_B ), 1 ) + tmp_outIm_fx[chA][chB] = W_sub( tmp64_1, tmp64_2 ); // Q: add( add( q_A, q_B ), 1 ) + move64(); + tmp16 = W_norm( tmp_outIm_fx[chA][chB] ); + tmp_outIm_fx[chA][chB] = W_shl( tmp_outIm_fx[chA][chB], tmp16 ); // Q:add( tmp16, add( add( q_A, q_B ), 1 ) ) + move64(); + q_tmp_outIm_fx[chA][chB] = add( tmp16, add( add( q_A, q_B ), 1 ) ); + move16(); + q_common = s_min( q_tmp_outIm_fx[chA][chB], q_common ); + } + } + FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + { + FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ ) + { + outRe_fx[chA][chB] = W_extract_h( W_shl( tmp_outRe_fx[chA][chB], sub( q_common, q_tmp_outRe_fx[chA][chB] ) ) ); move32(); - outIm_fx[chA][chB] = Msub_32_32( Msub_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][chA], Bim_fx[0][chB] ), - Are_fx[1][chA], Bim_fx[1][chB] ), - Aim_fx[0][chA], Bre_fx[0][chB] ), - Aim_fx[1][chA], Bre_fx[1][chB] ); + outIm_fx[chA][chB] = W_extract_h( W_shl( tmp_outIm_fx[chA][chB], sub( q_common, q_tmp_outIm_fx[chA][chB] ) ) ); move32(); } } - *q_out = sub( add( q_A, q_B ), 31 ); - + *q_out = sub( q_common, 32 ); move16(); if ( L_and( is_zero_arr( outRe_fx[0], size ), is_zero_arr( outIm_fx[0], size ) ) ) { diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index 06b37ff5a..063c70f66 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -1754,7 +1754,7 @@ void protoSignalComputation2_fx( Word32 RealSubtract_fx, ImagSubtract_fx; Word32 left_bb_power_fx, right_bb_power_fx, total_bb_power_fx, lr_bb_power_fx; Word32 left_hi_power_fx, right_hi_power_fx, total_hi_power_fx, lr_hi_power_fx; - Word32 sum_power_fx, Left_power_fx, Right_power_fx; + Word32 sum_power_fx, Left_power_fx, Right_power_fx, Total_power_fx; Word16 q_lr_bb_power, q_lr_hi_power; Word32 lr_total_bb_ratio_fx, lr_total_hi_ratio_fx; Word32 min_sum_total_ratio_fx, min_sum_total_ratio_db_fx; @@ -2120,7 +2120,10 @@ void protoSignalComputation2_fx( #else q_Left_Right_power = add( shl( add( q_cldfb, min_q_shift ), 1 ), sub( head_room, 32 ) ); #endif - + Word16 exp_left_hi_power = 0, exp_right_hi_power = 0, exp_total_hi_power = 0, exp_temppp; + move16(); + move16(); + move16(); FOR( l = 0; l < num_freq_bands; l++ ) { #ifdef FIX_867_CLDFB_NRG_SCALE @@ -2164,19 +2167,30 @@ void protoSignalComputation2_fx( left_bb_power_fx = L_add( left_bb_power_fx, Left_power_fx ); // q_Left_Right_power right_bb_power_fx = L_add( right_bb_power_fx, Right_power_fx ); // q_Left_Right_power // total_bb_power_fx = L_add( total_bb_power_fx, reference_power_fx[l] ); - total_bb_power_fx = L_add( total_bb_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power + total_bb_power_fx = L_add( total_bb_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power #endif - IF( GT_16( l, MASA_HI_FREQ_START_BIN ) ) { - left_hi_power_fx = L_add( left_hi_power_fx, Left_power_fx ); // q_Left_Right_power - right_hi_power_fx = L_add( right_hi_power_fx, Right_power_fx ); // q_Left_Right_power - // total_hi_power_fx = L_add( total_hi_power_fx, reference_power_fx[l] ); -#ifdef FIX_867_CLDFB_NRG_SCALE - total_hi_power_fx = L_add( total_hi_power_fx, W_extract_h( W_shl( reference_power_64fx[l], sub( head_room, total_shift[qidx] ) ) ) ); // q_Left_Right_power -#else - total_hi_power_fx = L_add( total_hi_power_fx, W_extract_h( W_shl( reference_power_64fx[l], head_room ) ) ); // q_Left_Right_power -#endif + W_tmp1 = W_add( W_mult0_32_32( RealBuffer_fx[0][0][l], RealBuffer_fx[0][0][l] ), W_mult0_32_32( ImagBuffer_fx[0][0][l], ImagBuffer_fx[0][0][l] ) ); + q_shift = W_norm( W_tmp1 ); + Left_power_fx = W_extract_h( W_shl( W_tmp1, q_shift ) ); + exp_temppp = sub( 31, sub( add( shl( q_cldfb, 1 ), q_shift ), 32 ) ); + + left_hi_power_fx = BASOP_Util_Add_Mant32Exp( left_hi_power_fx, exp_left_hi_power, Left_power_fx, exp_temppp, &exp_left_hi_power ); // exp:exp_left_hi_power + + W_tmp2 = W_add( W_mult0_32_32( RealBuffer_fx[1][0][l], RealBuffer_fx[1][0][l] ), W_mult0_32_32( ImagBuffer_fx[1][0][l], ImagBuffer_fx[1][0][l] ) ); + q_shift = W_norm( W_tmp2 ); + Right_power_fx = W_extract_h( W_shl( W_tmp2, q_shift ) ); + exp_temppp = sub( 31, sub( add( shl( q_cldfb, 1 ), q_shift ), 32 ) ); + + right_hi_power_fx = BASOP_Util_Add_Mant32Exp( right_hi_power_fx, exp_right_hi_power, Right_power_fx, exp_temppp, &exp_right_hi_power ); // exp:exp_right_hi_power + + W_tmp2 = W_add( W_tmp1, W_tmp2 ); + q_shift = W_norm( W_tmp2 ); + Total_power_fx = W_extract_h( W_shl( W_tmp2, q_shift ) ); + exp_temppp = sub( 31, sub( add( shl( q_cldfb, 1 ), q_shift ), 32 ) ); + + total_hi_power_fx = BASOP_Util_Add_Mant32Exp( total_hi_power_fx, exp_total_hi_power, Total_power_fx, exp_temppp, &exp_total_hi_power ); // exp:exp_total_hi_power } IF( LT_16( l, s_min( num_freq_bands, MASA_SUM_FREQ_RANGE_BINS ) ) ) @@ -2185,8 +2199,8 @@ void protoSignalComputation2_fx( re_aux = L_shl( Real_aux_fx, sub( temp_q_shift, min_q_shift[0] ) ); // q_cldfb+temp_q_shift im_aux = L_shl( Imag_aux_fx, sub( temp_q_shift, min_q_shift[0] ) ); // q_cldfb+temp_q_shift #else - re_aux = L_shl( Real_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift - im_aux = L_shl( Imag_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift + re_aux = L_shl( Real_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift + im_aux = L_shl( Imag_aux_fx, sub( temp_q_shift, min_q_shift ) ); // q_cldfb+temp_q_shift #endif sum_power_fx = Madd_32_32( Mpy_32_32( re_aux, re_aux ), im_aux, im_aux ); // 2*(q_cldfb+temp_q_shift)-31 @@ -2216,7 +2230,7 @@ void protoSignalComputation2_fx( move32(); } #else - temp = Mpy_32_32( a_fx, W_extract_l( W_shr( reference_power_64fx[l], 31 ) ) ); // 2*(q_cldfb+min_q_shift) -31 + temp = Mpy_32_32( a_fx, W_extract_l( W_shr( reference_power_64fx[l], 31 ) ) ); // 2*(q_cldfb+min_q_shift) -31 IF( LT_16( q_temp, stereo_type_detect->q_total_power ) ) { stereo_type_detect->total_power_fx[l] = L_add( temp, L_shr( Mpy_32_32( b_fx, stereo_type_detect->total_power_fx[l] ), sub( stereo_type_detect->q_total_power, q_temp ) ) ); // q_temp @@ -2704,15 +2718,16 @@ void protoSignalComputation2_fx( lr_total_bb_ratio_fx = Mpy_32_16_1( temp, 20480 ); // Q21 #ifdef FIX_867_CLDFB_NRG_SCALE - stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, left_hi_power_fx ), sub( 31, q_temp_total ), Mpy_32_32( b2_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power ); + stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, left_hi_power_fx ), exp_left_hi_power, Mpy_32_32( b2_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power ); move32(); stereo_type_detect->q_left_hi_power = sub( 31, stereo_type_detect->q_left_hi_power ); move16(); - stereo_type_detect->right_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, right_hi_power_fx ), sub( 31, q_temp_total ), Mpy_32_32( b2_fx, stereo_type_detect->right_hi_power_fx ), sub( 31, stereo_type_detect->q_right_hi_power ), &stereo_type_detect->q_right_hi_power ); + + stereo_type_detect->right_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, right_hi_power_fx ), exp_right_hi_power, Mpy_32_32( b2_fx, stereo_type_detect->right_hi_power_fx ), sub( 31, stereo_type_detect->q_right_hi_power ), &stereo_type_detect->q_right_hi_power ); move32(); stereo_type_detect->q_right_hi_power = sub( 31, stereo_type_detect->q_right_hi_power ); move16(); - stereo_type_detect->total_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, total_hi_power_fx ), sub( 31, q_temp_total ), Mpy_32_32( b2_fx, stereo_type_detect->total_hi_power_fx ), sub( 31, stereo_type_detect->q_total_hi_power ), &stereo_type_detect->q_total_hi_power ); + stereo_type_detect->total_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, total_hi_power_fx ), exp_total_hi_power, Mpy_32_32( b2_fx, stereo_type_detect->total_hi_power_fx ), sub( 31, stereo_type_detect->q_total_hi_power ), &stereo_type_detect->q_total_hi_power ); move32(); #else stereo_type_detect->left_hi_power_fx = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a2_fx, left_hi_power_fx ), sub( 31, q_temp ), Mpy_32_32( b2_fx, stereo_type_detect->left_hi_power_fx ), sub( 31, stereo_type_detect->q_left_hi_power ), &stereo_type_detect->q_left_hi_power ); -- GitLab From dd2dc9c9d2b82b9a51bae57f11211c15c46cbedb Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Fri, 25 Apr 2025 09:56:03 +0200 Subject: [PATCH 526/698] replaced the down mix channel floating point code with 64 bit fix point. WMOPS went from total 150.00 263.631 365.398 357.230 to total 150.00 244.736 315.064 308.406 for ./IVAS_cod -mc 7_1_4 128000 48 scripts/testv/stv714MC48c.wav out.128 --- lib_enc/ivas_mc_param_enc_fx.c | 123 +++++++++++++++++++++++++++------ 1 file changed, 103 insertions(+), 20 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 0c996b25a..e8e3fd61a 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -29,7 +29,8 @@ the United Nations Convention on Contracts on the International Sales of Goods. *******************************************************************************************************/ - +#define MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#define CONVERT64( x_64, y_fx, y_e ) { Word16 norm; norm=W_norm(x_64); y_fx = W_extract_h( W_shl( x_64, norm ) ); y_e = sub( sub( 35, gb ), norm ); } #include #include #include "options.h" @@ -649,10 +650,15 @@ static void ivas_param_mc_param_est_enc_fx( Word32 *p_slot_frame_f_real_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - real part */ Word32 *p_slot_frame_f_imag_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - imag part */ +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + Word64 dmx_real_64[PARAM_MC_MAX_TRANSPORT_CHANS]; + Word64 dmx_imag_64[PARAM_MC_MAX_TRANSPORT_CHANS]; +#else Word32 dmx_real_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Real Part */ Word16 dmx_real_e[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Real Part */ Word32 dmx_imag_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Imag Part */ Word16 dmx_imag_e[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Imag Part */ +#endif Word32 a_fx, b_fx, c_fx, d_fx; /* Tmp complex values */ Word16 a_e, b_e, c_e, d_e; /* Tmp complex values */ #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE @@ -774,6 +780,26 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + Word64 real_64; + Word64 imag_64; + + real_64 = 0; + imag_64 = 0; + move64(); + move64(); + FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ ) + { + real_64 = W_add( real_64, W_mult0_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) ); + imag_64 = W_add( imag_64, W_mult0_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) ); + p_dmx_fac_fx++; + } + dmx_real_64[ch_idx1] = real_64; + dmx_imag_64[ch_idx1] = imag_64; + move64(); + move64(); + +#else #ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE dmx_real_fx[ch_idx1] = 0; move32(); @@ -814,14 +840,33 @@ static void ivas_param_mc_param_est_enc_fx( move16(); move32(); move16(); +#endif + #endif } /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + CONVERT64(dmx_real_64[ch_idx1], a_fx, a_e ); + CONVERT64(dmx_imag_64[ch_idx1], b_fx, b_e ); + move32(); + move32(); + move16(); + move16(); +#endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + CONVERT64(dmx_real_64[ch_idx2], c_fx, c_e ); + CONVERT64(dmx_imag_64[ch_idx2], d_fx, d_e ); + move32(); + move32(); + move16(); + move16(); + +#else a_fx = dmx_real_fx[ch_idx1]; move32(); a_e = dmx_real_e[ch_idx1]; @@ -838,6 +883,7 @@ static void ivas_param_mc_param_est_enc_fx( move32(); d_e = dmx_imag_e[ch_idx2]; move16(); +#endif /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); @@ -858,7 +904,6 @@ static void ivas_param_mc_param_est_enc_fx( move32(); FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { - Word16 norm; c_fx = slot_frame_f_real_fx[ch_idx2][cur_cldfb_band]; d_fx = slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band]; move32(); @@ -870,10 +915,6 @@ static void ivas_param_mc_param_est_enc_fx( W_sub( W_mult0_32_32( a_fx, d_fx ), W_mult0_32_32( b_fx, c_fx ) ) ); move64(); - // convert the 64 bit fixpoint back into the 48 bit float format - norm = W_norm( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] ); - Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], norm ) ); - Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] = sub( sub( 62, gb ), norm ); } } #else @@ -953,6 +994,26 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + Word64 real_64; + Word64 imag_64; + + real_64 = 0; + imag_64 = 0; + move64(); + move64(); + + FOR( inp_ch = 0; inp_ch < nchan_input; inp_ch++ ) + { + real_64 = W_add( real_64, W_mult0_32_32( slot_frame_f_real_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) ); + imag_64 = W_add( imag_64, W_mult0_32_32( slot_frame_f_imag_fx[inp_ch][cur_cldfb_band], ( *p_dmx_fac_fx ) ) ); + p_dmx_fac_fx++; + } + dmx_real_64[ch_idx1] = real_64; + dmx_imag_64[ch_idx1] = imag_64; + move64(); + move64(); +#else #ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE dmx_real_fx[ch_idx1] = 0; move32(); @@ -997,12 +1058,22 @@ static void ivas_param_mc_param_est_enc_fx( move32(); dmx_imag_e[ch_idx1] = imag_e; move16(); +#endif + #endif } /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + CONVERT64( dmx_real_64[ch_idx1], a_fx, a_e ); + CONVERT64( dmx_imag_64[ch_idx1], b_fx, b_e ); + move32(); + move32(); + move16(); + move16(); +#else #ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE a_fx = dmx_real_fx[ch_idx1]; move32(); @@ -1012,9 +1083,24 @@ static void ivas_param_mc_param_est_enc_fx( move32(); b_e = dmx_imag_e[ch_idx1]; move16(); +#endif + #endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + CONVERT64( dmx_real_64[ch_idx2], c_fx, c_e ); + CONVERT64( dmx_imag_64[ch_idx2], d_fx, d_e ); + move32(); + move32(); + move16(); + move16(); + + /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ + L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); + Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e, + &Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] ); +#else #ifndef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE a_fx = dmx_real_fx[ch_idx1]; move32(); @@ -1042,6 +1128,7 @@ static void ivas_param_mc_param_est_enc_fx( L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, dmx_real_fx[ch_idx2] ), add( a_e, dmx_real_e[ch_idx2] ), Mpy_32_32( b_fx, dmx_imag_fx[ch_idx2] ), add( b_e, dmx_imag_e[ch_idx2] ), &tmp_e ); Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( Cx_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cx_sum_e[cur_param_band][ch_idx1][ch_idx2], L_tmp, tmp_e, &Cx_sum_e[cur_param_band][ch_idx1][ch_idx2] ); +#endif #endif move32(); } @@ -1075,7 +1162,6 @@ static void ivas_param_mc_param_est_enc_fx( move32(); FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) { - Word16 norm; c_fx = slot_frame_f_real_fx[ch_idx2][cur_cldfb_band]; d_fx = slot_frame_f_imag_fx[ch_idx2][cur_cldfb_band]; move32(); @@ -1084,10 +1170,6 @@ static void ivas_param_mc_param_est_enc_fx( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] = W_add( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], W_add( W_mult0_32_32( a_fx, c_fx ), W_mult0_32_32( b_fx, d_fx ) ) ); move64(); - // convert the 64 bit fixpoint back into the 48 bit float format - norm = W_norm( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] ); - Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], norm ) ); - Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] = sub( sub( 62, gb ), norm ); } #else FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ++ch_idx2 ) @@ -1135,14 +1217,6 @@ static void ivas_param_mc_param_est_enc_fx( { FOR( ch_idx1 = 0; ch_idx1 < nchan_input; ++ch_idx1 ) { - Cy_sum_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; - move32(); - Cy_sum_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; - move16(); - Cy_sum_fx[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0; - move32(); - Cy_sum_e[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0; - move16(); #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE Cy_sum_real_64[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; move64(); @@ -1153,6 +1227,14 @@ static void ivas_param_mc_param_est_enc_fx( Cy_sum_imag_64[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0; move64(); #else + Cy_sum_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; + move32(); + Cy_sum_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; + move16(); + Cy_sum_fx[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0; + move32(); + Cy_sum_e[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0; + move16(); Cy_sum_imag_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; move32(); Cy_sum_imag_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; @@ -1174,7 +1256,7 @@ static void ivas_param_mc_param_est_enc_fx( move64(); Cy_sum_real_64[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0; move64(); -#endif +#else Cy_sum_fx[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; move32(); Cy_sum_e[cur_param_band][hParamMC->lfe_index][ch_idx1] = 0; @@ -1183,6 +1265,7 @@ static void ivas_param_mc_param_est_enc_fx( move32(); Cy_sum_e[cur_param_band][ch_idx1][hParamMC->lfe_index] = 0; move16(); +#endif } } } -- GitLab From dcb916fba996abeea2e53e2a2097283282b6dc6a Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Fri, 25 Apr 2025 10:03:19 +0200 Subject: [PATCH 527/698] applied the clang patch --- lib_enc/ivas_mc_param_enc_fx.c | 37 +++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index e8e3fd61a..270fbeebd 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -29,8 +29,14 @@ the United Nations Convention on Contracts on the International Sales of Goods. *******************************************************************************************************/ -#define MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE -#define CONVERT64( x_64, y_fx, y_e ) { Word16 norm; norm=W_norm(x_64); y_fx = W_extract_h( W_shl( x_64, norm ) ); y_e = sub( sub( 35, gb ), norm ); } +#define MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#define CONVERT64( x_64, y_fx, y_e ) \ + { \ + Word16 norm; \ + norm = W_norm( x_64 ); \ + y_fx = W_extract_h( W_shl( x_64, norm ) ); \ + y_e = sub( sub( 35, gb ), norm ); \ + } #include #include #include "options.h" @@ -650,7 +656,7 @@ static void ivas_param_mc_param_est_enc_fx( Word32 *p_slot_frame_f_real_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - real part */ Word32 *p_slot_frame_f_imag_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - imag part */ -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE Word64 dmx_real_64[PARAM_MC_MAX_TRANSPORT_CHANS]; Word64 dmx_imag_64[PARAM_MC_MAX_TRANSPORT_CHANS]; #else @@ -659,8 +665,8 @@ static void ivas_param_mc_param_est_enc_fx( Word32 dmx_imag_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Imag Part */ Word16 dmx_imag_e[PARAM_MC_MAX_TRANSPORT_CHANS]; /* Downmix channel - Imag Part */ #endif - Word32 a_fx, b_fx, c_fx, d_fx; /* Tmp complex values */ - Word16 a_e, b_e, c_e, d_e; /* Tmp complex values */ + Word32 a_fx, b_fx, c_fx, d_fx; /* Tmp complex values */ + Word16 a_e, b_e, c_e, d_e; /* Tmp complex values */ #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE Word64 Cy_sum_real_64[PARAM_MC_MAX_PARAMETER_BANDS][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS]; Word64 Cy_sum_imag_64[PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS]; @@ -780,7 +786,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE Word64 real_64; Word64 imag_64; @@ -848,9 +854,9 @@ static void ivas_param_mc_param_est_enc_fx( /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE - CONVERT64(dmx_real_64[ch_idx1], a_fx, a_e ); - CONVERT64(dmx_imag_64[ch_idx1], b_fx, b_e ); +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + CONVERT64( dmx_real_64[ch_idx1], a_fx, a_e ); + CONVERT64( dmx_imag_64[ch_idx1], b_fx, b_e ); move32(); move32(); move16(); @@ -858,9 +864,9 @@ static void ivas_param_mc_param_est_enc_fx( #endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE - CONVERT64(dmx_real_64[ch_idx2], c_fx, c_e ); - CONVERT64(dmx_imag_64[ch_idx2], d_fx, d_e ); +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE + CONVERT64( dmx_real_64[ch_idx2], c_fx, c_e ); + CONVERT64( dmx_imag_64[ch_idx2], d_fx, d_e ); move32(); move32(); move16(); @@ -914,7 +920,6 @@ static void ivas_param_mc_param_est_enc_fx( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2] = W_add( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2], W_sub( W_mult0_32_32( a_fx, d_fx ), W_mult0_32_32( b_fx, c_fx ) ) ); move64(); - } } #else @@ -994,7 +999,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE Word64 real_64; Word64 imag_64; @@ -1066,7 +1071,7 @@ static void ivas_param_mc_param_est_enc_fx( /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE CONVERT64( dmx_real_64[ch_idx1], a_fx, a_e ); CONVERT64( dmx_imag_64[ch_idx1], b_fx, b_e ); move32(); @@ -1088,7 +1093,7 @@ static void ivas_param_mc_param_est_enc_fx( #endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE CONVERT64( dmx_real_64[ch_idx2], c_fx, c_e ); CONVERT64( dmx_imag_64[ch_idx2], d_fx, d_e ); move32(); -- GitLab From 17ea3a460bdc04b7a9bd55d8cc947e792dfcaefe Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Fri, 25 Apr 2025 10:13:55 +0200 Subject: [PATCH 528/698] removed a warning. --- lib_enc/ivas_mc_param_enc_fx.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 270fbeebd..f7f274b48 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -752,7 +752,10 @@ static void ivas_param_mc_param_est_enc_fx( #if defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE ) || defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE ) Word16 gb = find_guarded_bits_fx( l_ts ); +#ifndef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE Word16 add20gb = add( 20, gb ); +#endif + #endif FOR( ts = start_ts; ts < num_time_slots; ts++ ) -- GitLab From 0f7493762b47726945321f8656eb9462934a8a6d Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Fri, 25 Apr 2025 12:49:17 +0200 Subject: [PATCH 529/698] moved the define for the merge request into options.h. --- lib_com/options.h | 1 + lib_enc/ivas_mc_param_enc_fx.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index cbc77b6e7..8cb4f0368 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,6 +86,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ +#define MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of dmx calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Requires MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index f7f274b48..184a982d5 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -29,7 +29,6 @@ the United Nations Convention on Contracts on the International Sales of Goods. *******************************************************************************************************/ -#define MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE #define CONVERT64( x_64, y_fx, y_e ) \ { \ Word16 norm; \ -- GitLab From 5babfdc8bba989670937eef2dd6d8f3ae5e4a0f3 Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Mon, 28 Apr 2025 10:32:56 +0200 Subject: [PATCH 530/698] macro names. --- lib_com/options.h | 2 +- lib_enc/ivas_mc_param_enc_fx.c | 60 ++++++++++++++++------------------ 2 files changed, 30 insertions(+), 32 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 8cb4f0368..1b5760f40 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,7 +86,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ -#define MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of dmx calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Requires MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */ +#define MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of dmx calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Requires MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE. */ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 184a982d5..41d15c241 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -29,7 +29,16 @@ the United Nations Convention on Contracts on the International Sales of Goods. *******************************************************************************************************/ -#define CONVERT64( x_64, y_fx, y_e ) \ + +// helper macros to convert the 64 bitt accumulators into the 48 bit float format +#define CONVERT_CY( x_64, y_fx, y_e ) \ + { \ + Word16 norm; \ + norm = W_norm( x_64 ); \ + y_fx = W_extract_h( W_shl( x_64, norm ) ); \ + y_e = sub( sub( 62, gb ), norm ); \ + } +#define CONVERT_DMX( x_64, y_fx, y_e ) \ { \ Word16 norm; \ norm = W_norm( x_64 ); \ @@ -655,7 +664,7 @@ static void ivas_param_mc_param_est_enc_fx( Word32 *p_slot_frame_f_real_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - real part */ Word32 *p_slot_frame_f_imag_fx[MAX_CICP_CHANNELS]; /* Output of the MDFT FB - imag part */ -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE Word64 dmx_real_64[PARAM_MC_MAX_TRANSPORT_CHANS]; Word64 dmx_imag_64[PARAM_MC_MAX_TRANSPORT_CHANS]; #else @@ -751,7 +760,7 @@ static void ivas_param_mc_param_est_enc_fx( #if defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE ) || defined( IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE ) Word16 gb = find_guarded_bits_fx( l_ts ); -#ifndef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifndef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE Word16 add20gb = add( 20, gb ); #endif @@ -788,7 +797,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE Word64 real_64; Word64 imag_64; @@ -856,9 +865,9 @@ static void ivas_param_mc_param_est_enc_fx( /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE - CONVERT64( dmx_real_64[ch_idx1], a_fx, a_e ); - CONVERT64( dmx_imag_64[ch_idx1], b_fx, b_e ); +#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE + CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e ); + CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e ); move32(); move32(); move16(); @@ -866,9 +875,9 @@ static void ivas_param_mc_param_est_enc_fx( #endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE - CONVERT64( dmx_real_64[ch_idx2], c_fx, c_e ); - CONVERT64( dmx_imag_64[ch_idx2], d_fx, d_e ); +#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE + CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e ); + CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e ); move32(); move32(); move16(); @@ -1001,7 +1010,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE +#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE Word64 real_64; Word64 imag_64; @@ -1073,9 +1082,9 @@ static void ivas_param_mc_param_est_enc_fx( /* Cx for transport channels */ FOR( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE - CONVERT64( dmx_real_64[ch_idx1], a_fx, a_e ); - CONVERT64( dmx_imag_64[ch_idx1], b_fx, b_e ); +#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE + CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e ); + CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e ); move32(); move32(); move16(); @@ -1095,9 +1104,9 @@ static void ivas_param_mc_param_est_enc_fx( #endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { -#ifdef MERGE_REQUEST_1472_SPEEDUIP_ivas_mc_param_enc_fx_NONBE - CONVERT64( dmx_real_64[ch_idx2], c_fx, c_e ); - CONVERT64( dmx_imag_64[ch_idx2], d_fx, d_e ); +#ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE + CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e ); + CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e ); move32(); move32(); move16(); @@ -1310,11 +1319,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( k = 0; k < nchan_input; ++k ) { #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE - Word16 norm; - // convert the 64 bit fixpoint back into the 48 bit float format - norm = W_norm( Cy_sum_real_64[cur_param_band][k][k] ); - Nrg_fx[k] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][k][k], norm ) ); - Nrg_e[k] = sub( sub( 62, gb ), norm ); + CONVERT_CY( Cy_sum_real_64[cur_param_band][k][k], Nrg_fx[k], Nrg_e[k] ); #else Nrg_fx[k] = Cy_sum_fx[cur_param_band][k][k]; move32(); @@ -1451,10 +1456,7 @@ static void ivas_param_mc_param_est_enc_fx( { FOR( ch_idx2 = 0; ch_idx2 < MAX_CICP_CHANNELS; ch_idx2++ ) { - Word16 norm; - norm = W_norm( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2] ); - Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2] = W_extract_h( W_shl( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], norm ) ); - Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] = sub( sub( 62, gb ), norm ); + CONVERT_CY( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] ); } } } @@ -1497,11 +1499,7 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx2 = ch_idx1; ch_idx2 < nchan_input; ch_idx2++ ) { #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE - Word16 norm; - // convert the 64 bit fixpoint back into the 48 bit float format - norm = W_norm( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2] ); - imag_part_fx = W_extract_h( W_shl( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2], norm ) ); - imag_part_e = sub( sub( 62, gb ), norm ); + CONVERT_CY( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2], imag_part_fx, imag_part_e ); #else imag_part_fx = Cy_sum_imag_fx[cur_param_band][ch_idx1][ch_idx2]; move32(); -- GitLab From 5251c4791f48fa8ded63157ade33db356f7a9c8b Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Mon, 28 Apr 2025 10:42:27 +0200 Subject: [PATCH 531/698] clang patch applied. --- lib_enc/ivas_mc_param_enc_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 41d15c241..41d35f8e3 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -31,14 +31,14 @@ *******************************************************************************************************/ // helper macros to convert the 64 bitt accumulators into the 48 bit float format -#define CONVERT_CY( x_64, y_fx, y_e ) \ +#define CONVERT_CY( x_64, y_fx, y_e ) \ { \ Word16 norm; \ norm = W_norm( x_64 ); \ y_fx = W_extract_h( W_shl( x_64, norm ) ); \ y_e = sub( sub( 62, gb ), norm ); \ } -#define CONVERT_DMX( x_64, y_fx, y_e ) \ +#define CONVERT_DMX( x_64, y_fx, y_e ) \ { \ Word16 norm; \ norm = W_norm( x_64 ); \ -- GitLab From 43fb033f99043f6723c40178cb5916e183dd7ed5 Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Tue, 29 Apr 2025 10:56:24 +0200 Subject: [PATCH 532/698] applied some patches. --- lib_enc/ivas_mc_param_enc_fx.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 41d35f8e3..bf7e49cbb 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -36,14 +36,14 @@ Word16 norm; \ norm = W_norm( x_64 ); \ y_fx = W_extract_h( W_shl( x_64, norm ) ); \ - y_e = sub( sub( 62, gb ), norm ); \ + y_e = sub( sub62gb, norm ); \ } #define CONVERT_DMX( x_64, y_fx, y_e ) \ { \ Word16 norm; \ norm = W_norm( x_64 ); \ y_fx = W_extract_h( W_shl( x_64, norm ) ); \ - y_e = sub( sub( 35, gb ), norm ); \ + y_e = sub( sub35gb, norm ); \ } #include #include @@ -678,6 +678,8 @@ static void ivas_param_mc_param_est_enc_fx( #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE Word64 Cy_sum_real_64[PARAM_MC_MAX_PARAMETER_BANDS][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS]; Word64 Cy_sum_imag_64[PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS]; + Word16 sub62gb; + Word16 sub35gb; #else Word32 Cy_sum_imag_fx[PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS]; Word16 Cy_sum_imag_e[PARAM_MC_MAX_PARAM_BAND_ABS_COV_ENC][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS]; @@ -764,6 +766,10 @@ static void ivas_param_mc_param_est_enc_fx( Word16 add20gb = add( 20, gb ); #endif +#endif +#ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE + sub35gb = sub( 35, find_guarded_bits_fx( l_ts ) ); + sub62gb = sub( 62, find_guarded_bits_fx( l_ts ) ); #endif FOR( ts = start_ts; ts < num_time_slots; ts++ ) @@ -868,21 +874,12 @@ static void ivas_param_mc_param_est_enc_fx( #ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e ); CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e ); - move32(); - move32(); - move16(); - move16(); #endif FOR( ch_idx2 = 0; ch_idx2 < nchan_transport; ++ch_idx2 ) { #ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e ); CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e ); - move32(); - move32(); - move16(); - move16(); - #else a_fx = dmx_real_fx[ch_idx1]; move32(); @@ -1085,10 +1082,6 @@ static void ivas_param_mc_param_est_enc_fx( #ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE CONVERT_DMX( dmx_real_64[ch_idx1], a_fx, a_e ); CONVERT_DMX( dmx_imag_64[ch_idx1], b_fx, b_e ); - move32(); - move32(); - move16(); - move16(); #else #ifdef IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_BE a_fx = dmx_real_fx[ch_idx1]; @@ -1107,10 +1100,6 @@ static void ivas_param_mc_param_est_enc_fx( #ifdef MERGE_REQUEST_1472_SPEEDUP_ivas_mc_param_enc_fx_NONBE CONVERT_DMX( dmx_real_64[ch_idx2], c_fx, c_e ); CONVERT_DMX( dmx_imag_64[ch_idx2], d_fx, d_e ); - move32(); - move32(); - move16(); - move16(); /* (a-ib)(c+id) = ac + bd + i(ad-bc) */ L_tmp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( a_fx, c_fx ), add( a_e, c_e ), Mpy_32_32( b_fx, d_fx ), add( b_e, d_e ), &tmp_e ); @@ -1320,6 +1309,8 @@ static void ivas_param_mc_param_est_enc_fx( { #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE CONVERT_CY( Cy_sum_real_64[cur_param_band][k][k], Nrg_fx[k], Nrg_e[k] ); + move32(); + move16(); #else Nrg_fx[k] = Cy_sum_fx[cur_param_band][k][k]; move32(); @@ -1457,6 +1448,8 @@ static void ivas_param_mc_param_est_enc_fx( FOR( ch_idx2 = 0; ch_idx2 < MAX_CICP_CHANNELS; ch_idx2++ ) { CONVERT_CY( Cy_sum_real_64[cur_param_band][ch_idx1][ch_idx2], Cy_sum_fx[cur_param_band][ch_idx1][ch_idx2], Cy_sum_e[cur_param_band][ch_idx1][ch_idx2] ); + move32(); + move16(); } } } @@ -1500,6 +1493,8 @@ static void ivas_param_mc_param_est_enc_fx( { #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE CONVERT_CY( Cy_sum_imag_64[cur_param_band][ch_idx1][ch_idx2], imag_part_fx, imag_part_e ); + move32(); + move16(); #else imag_part_fx = Cy_sum_imag_fx[cur_param_band][ch_idx1][ch_idx2]; move32(); -- GitLab From 38547d2ea286f5d0cadcb8a30ab33dbcae3f93b0 Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Tue, 29 Apr 2025 12:09:06 +0200 Subject: [PATCH 533/698] applied the clang patch. --- lib_enc/ivas_mc_param_enc_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index bf7e49cbb..3058f87f3 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -36,14 +36,14 @@ Word16 norm; \ norm = W_norm( x_64 ); \ y_fx = W_extract_h( W_shl( x_64, norm ) ); \ - y_e = sub( sub62gb, norm ); \ + y_e = sub( sub62gb, norm ); \ } #define CONVERT_DMX( x_64, y_fx, y_e ) \ { \ Word16 norm; \ norm = W_norm( x_64 ); \ y_fx = W_extract_h( W_shl( x_64, norm ) ); \ - y_e = sub( sub35gb, norm ); \ + y_e = sub( sub35gb, norm ); \ } #include #include -- GitLab From 40b6da870308be6baf24239922ed5d668769b8ca Mon Sep 17 00:00:00 2001 From: Thomas Dettbarn Date: Mon, 12 May 2025 10:40:07 +0200 Subject: [PATCH 534/698] inling the matrix multiplication in ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx(). --- lib_com/options.h | 1 + lib_dec/ivas_dirac_output_synthesis_cov_fx.c | 70 ++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index cbc77b6e7..af3a65d47 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -86,6 +86,7 @@ //#define HARM_SCE_INIT #define DIV32_OPT_NEWTON /* FhG: faster 32 by 32 bit division */ #define MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE /* FhG: reduce WMOPS of Cy calculation in ivas_param_mc_param_est_enc_fx() by using 64 Bit addition. Obsoletes IMPROVE_HIGH_COMPLEXITY_PARAM_MC_PRM_EST_NONBE. */ +#define MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE /* FhG: reduce WMOPS by inlining the matrix multiplications for the smoothing operation. */ #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_stereo_icBWE_dec_fx /*FhG: reduces WMOPS - bit-exact*/ #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx /*FhG: reduces WMOPS - bit-exact*/ diff --git a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c index 6d367538d..4d4f37a02 100644 --- a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c +++ b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c @@ -30,6 +30,8 @@ *******************************************************************************************************/ +#define MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE + #include #include #include @@ -516,10 +518,14 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( Word16 mixing_matrix_buffer_e; Word32 input_f_real_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; Word32 input_f_imag_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; +#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE + +#else Word32 output_f_real_fx[MAX_CICP_CHANNELS]; Word32 output_f_imag_fx[MAX_CICP_CHANNELS]; Word16 output_f_real_e; Word16 output_f_imag_e; +#endif Word32 diff_f_real_fx[MAX_CICP_CHANNELS]; Word32 diff_f_imag_fx[MAX_CICP_CHANNELS]; @@ -527,8 +533,12 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( set_zero_fx( input_f_real_fx, PARAM_MC_MAX_TRANSPORT_CHANS ); set_zero_fx( input_f_imag_fx, PARAM_MC_MAX_TRANSPORT_CHANS ); +#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE + +#else set_zero_fx( output_f_real_fx, MAX_CICP_CHANNELS ); set_zero_fx( output_f_imag_fx, MAX_CICP_CHANNELS ); +#endif set_zero_fx( diff_f_real_fx, MAX_CICP_CHANNELS ); set_zero_fx( diff_f_imag_fx, MAX_CICP_CHANNELS ); @@ -592,6 +602,36 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( } /* apply residual mixing */ +#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE + { + Word16 shifter; + + shifter=31-mixing_matrix_res_smooth_e; + FOR( ch_idx = 0; ch_idx < nY; ch_idx++ ) + { + int i; + Word16 idx; + Word64 temp_real, temp_imag; + + + idx = ch_idx; + temp_real = 0; + temp_imag = 0; + move64(); + move64(); + for (i=0;i Date: Mon, 12 May 2025 10:45:14 +0200 Subject: [PATCH 535/698] applied the clang patch. --- lib_dec/ivas_dirac_output_synthesis_cov_fx.c | 106 +++++++++---------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c index 4d4f37a02..e17f6fd1e 100644 --- a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c +++ b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c @@ -30,7 +30,7 @@ *******************************************************************************************************/ -#define MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE +#define MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE #include #include @@ -518,7 +518,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( Word16 mixing_matrix_buffer_e; Word32 input_f_real_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; Word32 input_f_imag_fx[PARAM_MC_MAX_TRANSPORT_CHANS]; -#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE +#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE #else Word32 output_f_real_fx[MAX_CICP_CHANNELS]; @@ -533,7 +533,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( set_zero_fx( input_f_real_fx, PARAM_MC_MAX_TRANSPORT_CHANS ); set_zero_fx( input_f_imag_fx, PARAM_MC_MAX_TRANSPORT_CHANS ); -#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE +#ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE #else set_zero_fx( output_f_real_fx, MAX_CICP_CHANNELS ); @@ -603,32 +603,32 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( /* apply residual mixing */ #ifdef MERGE_REQUEST_1564_SPEEDUP_ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx_NONBE - { - Word16 shifter; - - shifter=31-mixing_matrix_res_smooth_e; - FOR( ch_idx = 0; ch_idx < nY; ch_idx++ ) - { - int i; - Word16 idx; - Word64 temp_real, temp_imag; - - - idx = ch_idx; - temp_real = 0; - temp_imag = 0; - move64(); - move64(); - for (i=0;i Date: Mon, 12 May 2025 12:49:35 +0200 Subject: [PATCH 536/698] the index calculation of the matrix multiplication does not require BASOP. --- lib_dec/ivas_dirac_output_synthesis_cov_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c index e17f6fd1e..bd95f6f54 100644 --- a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c +++ b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c @@ -623,7 +623,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( { temp_real = W_add( temp_real, W_mult0_32_32( mixing_matrix_res_smooth_fx[idx], diff_f_real_fx[i] ) ); temp_imag = W_add( temp_imag, W_mult0_32_32( mixing_matrix_res_smooth_fx[idx], diff_f_imag_fx[i] ) ); - idx = add( idx, nY ); + idx += nY; } Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band] = W_extract_l( W_shr( temp_real, shifter ) ); Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = W_extract_l( W_shr( temp_imag, shifter ) ); @@ -692,7 +692,7 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( { temp_real = W_add( temp_real, W_mult0_32_32( mixing_matrix_smooth_fx[idx], input_f_real_fx[i] ) ); temp_imag = W_add( temp_imag, W_mult0_32_32( mixing_matrix_smooth_fx[idx], input_f_imag_fx[i] ) ); - idx = add( idx, nY ); + idx += nY; } Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_real, shifter ) ) ); Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_imag, shifter ) ) ); -- GitLab From 053425f3c77a6bc6c2e8e81187d51d061c726ca4 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Wed, 14 May 2025 12:03:56 +0200 Subject: [PATCH 537/698] add missing move32() instructions --- lib_dec/ivas_dirac_output_synthesis_cov_fx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c index bd95f6f54..5b31e31a4 100644 --- a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c +++ b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c @@ -695,7 +695,9 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( idx += nY; } Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_real, shifter ) ) ); + move32(); Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_imag, shifter ) ) ); + move32(); } } #else -- GitLab From 99d73e309b999f9e14503ad9d50227b2ecd336c8 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Wed, 14 May 2025 12:11:42 +0200 Subject: [PATCH 538/698] formatting --- lib_dec/ivas_dirac_output_synthesis_cov_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c index 5b31e31a4..caddb5c5c 100644 --- a/lib_dec/ivas_dirac_output_synthesis_cov_fx.c +++ b/lib_dec/ivas_dirac_output_synthesis_cov_fx.c @@ -695,9 +695,9 @@ void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot_fx( idx += nY; } Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_RealBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_real, shifter ) ) ); - move32(); + move32(); Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band] = L_add( Cldfb_ImagBuffer_fx[ch_idx][slot_idx_sfr][band], W_extract_l( W_shr( temp_imag, shifter ) ) ); - move32(); + move32(); } } #else -- GitLab From 38607bcaf059cd0a3e2e206cbf2e61ad139bdcca Mon Sep 17 00:00:00 2001 From: marc emerit Date: Thu, 15 May 2025 12:05:41 +0200 Subject: [PATCH 539/698] chnage switch for BE pipeline --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1e8036f6b..7ba71d0cc 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -106,7 +106,7 @@ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ #define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ -#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES -- GitLab From 546a923f070e69fc70b062e7b684fc16b19e423e Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 15 May 2025 16:53:59 +0530 Subject: [PATCH 540/698] Macros cleanup --- lib_com/cng_exc_fx.c | 28 -- lib_com/codec_tcx_common.c | 134 ------- lib_com/fd_cng_com_fx.c | 98 ----- lib_com/lsf_tools_fx.c | 294 +-------------- lib_com/prot_fx.h | 49 +-- lib_dec/ACcontextMapping_dec_fx.c | 6 - lib_dec/TonalComponentDetection_fx.c | 38 +- lib_dec/bass_psfilter_fx.c | 107 ------ lib_dec/dec_higher_acelp_fx.c | 7 - lib_dec/dec_prm_fx.c | 7 +- lib_dec/dlpc_avq_fx.c | 54 +-- lib_dec/er_dec_tcx_fx.c | 46 +-- lib_dec/er_util_fx.c | 7 +- lib_dec/hf_synth_fx.c | 4 - lib_dec/lsf_msvq_ma_dec_fx.c | 9 - lib_dec/swb_bwe_dec_hr_fx.c | 13 - lib_dec/tonalMDCTconcealment_fx.c | 49 +-- lib_enc/ACcontextMapping_enc_fx.c | 516 -------------------------- lib_enc/gs_enc_fx.c | 8 +- lib_enc/ivas_core_pre_proc_front_fx.c | 67 ---- lib_enc/lsf_msvq_ma_enc_fx.c | 12 - 21 files changed, 19 insertions(+), 1534 deletions(-) diff --git a/lib_com/cng_exc_fx.c b/lib_com/cng_exc_fx.c index b314357ad..e335e9435 100644 --- a/lib_com/cng_exc_fx.c +++ b/lib_com/cng_exc_fx.c @@ -598,11 +598,6 @@ void cng_params_postupd_fx( const Word16 *const cng_Qexc_buf, /* i : Q_exc buffer Q0 */ const Word32 *const cng_brate_buf, /* i : bit rate buffer Q0 */ Word32 ho_env_circ[] /* i/o: Envelope buffer Q6 */ -#ifdef IVAS_CODE_CNG_COM - , - const Word16 element_mode, /* i : Element mode */ - const Word16 bwidth /* i : Audio bandwidth */ -#endif ) { Word16 i, j; @@ -662,15 +657,6 @@ void cng_params_postupd_fx( } Copy32( sp, env, NUM_ENV_CNG ); -#ifdef IVAS_CODE_CNG_COM - if ( element_mode == IVAS_SCE || element_mode == IVAS_CPE_DFT ) - { - att = 0.0f; - apply_scale( &att, bwidth, last_active_brate, scaleTableStereo, SIZE_SCALE_TABLE_STEREO ); - att = powf( 10, att / 10.0f ); - } - else -#endif { CNG_mode = get_cng_mode( last_active_brate ); @@ -860,11 +846,6 @@ void cng_params_upd_fx( Word16 cng_Qexc_buf[], /* i/o: Q_exc buffer Q0 */ Word32 cng_brate_buf[], /* i/o: last_active_brate buffer Q0 */ const Word32 last_active_brate /* i : Last active bit rate Q0 */ -#ifdef IVAS_CODE_CNG_COM - , - const Word16 element_mode, /* i : Element mode */ - const Word16 bwidth /* i : Audio bandwidth */ -#endif ) { Word32 L_ener, L_tmp; @@ -986,15 +967,6 @@ void cng_params_upd_fx( } Copy32( sp, env, NUM_ENV_CNG ); -#ifdef IVAS_CODE_CNG_COM - if ( element_mode == IVAS_SCE || element_mode == IVAS_CPE_DFT ) - { - att = 0.0f; - apply_scale( &att, bwidth, last_active_brate, scaleTableStereo, SIZE_SCALE_TABLE_STEREO ); - att = powf( 10, att / 10.0f ); - } - else -#endif { CNG_mode = get_cng_mode( last_active_brate ); /* att = 1/pow(2,ENR_ATT_fx[CNG_mode]); */ diff --git a/lib_com/codec_tcx_common.c b/lib_com/codec_tcx_common.c index 1ebc2829c..52c7d0614 100644 --- a/lib_com/codec_tcx_common.c +++ b/lib_com/codec_tcx_common.c @@ -469,140 +469,6 @@ void tcxInvertWindowGrouping( } } -#ifdef IVAS_CODE_TCX_COM - -/*-------------------------------------------------------------------* - * tcx5SpectrumInterleaving() - * - * - *-------------------------------------------------------------------*/ - -void tcx5SpectrumInterleaving( - const int16_t tcx5Size, - float *spectrum ) -{ - int16_t i; - float interleaveBuf[N_TCX10_MAX]; - - set_f( interleaveBuf, 0.0f, N_TCX10_MAX ); - - /* group sub-windows: interleave bins according to their frequencies */ - for ( i = 0; i < tcx5Size; i++ ) - { - interleaveBuf[2 * i] = spectrum[i]; - interleaveBuf[2 * i + 1] = spectrum[tcx5Size + i]; - } - - mvr2r( interleaveBuf, spectrum, 2 * tcx5Size ); - - return; -} - - -/*-------------------------------------------------------------------* - * tcx5SpectrumDeinterleaving() - * - * - *-------------------------------------------------------------------*/ - -void tcx5SpectrumDeinterleaving( - const int16_t tcx5Size, - float *spectrum ) -{ - int16_t i; - float interleaveBuf[N_TCX10_MAX]; - - set_f( interleaveBuf, 0.0f, N_TCX10_MAX ); - - /* ungroup sub-windows: interleave bins according to their frequencies */ - for ( i = 0; i < tcx5Size; i++ ) - { - interleaveBuf[i] = spectrum[2 * i]; - interleaveBuf[tcx5Size + i] = spectrum[2 * i + 1]; - } - - mvr2r( interleaveBuf, spectrum, 2 * tcx5Size ); - - return; -} - - -/*-------------------------------------------------------------------* - * tcx5TnsGrouping() - * - * - *-------------------------------------------------------------------*/ - -void tcx5TnsGrouping( - const int16_t L_frame, /* i : frame length (TCX5) */ - const int16_t L_spec, /* i : coded spec length (TCX5, derived from filter borders*/ - float *spectrum ) -{ - /* rearrange LF sub-window lines prior to TNS synthesis filtering */ - if ( L_spec < L_frame ) - { - mvr2r( spectrum + 8, spectrum + 16, L_spec - 8 ); - mvr2r( spectrum + L_frame, spectrum + 8, 8 ); - mvr2r( spectrum + L_frame + 8, spectrum + L_spec + 8, L_spec - 8 ); - } - else - { - float buff[8]; /* Buffer for the rearrangement of LF TCX5 */ - mvr2r( spectrum + L_spec, buff, 8 ); - mvr2r( spectrum + 8, spectrum + 16, L_spec - 8 ); - mvr2r( buff, spectrum + 8, 8 ); - } - - return; -} - - -/*-------------------------------------------------------------------* - * tcx5TnsUngrouping() - * - * - *-------------------------------------------------------------------*/ - -void tcx5TnsUngrouping( - const int16_t L_frame, /* i : frame length (TCX5) */ - const int16_t L_spec, /* i : coded spec length (TCX5, derived from filter borders*/ - float *spectrum, - const int16_t enc_dec /* i : 0: encoder, else decoder */ -) -{ - /* undo rearrangement of LF sub-window lines prior to TNS analysis */ - if ( L_spec < L_frame ) - { - mvr2r( spectrum + L_spec + 8, spectrum + L_frame + 8, L_spec - 8 ); - mvr2r( spectrum + 8, spectrum + L_frame, 8 ); - mvr2r( spectrum + 16, spectrum + 8, L_spec - 8 ); - set_zero( spectrum + L_spec, L_frame - L_spec ); - set_zero( spectrum + L_frame + L_spec, L_frame - L_spec ); - } - else - { - float buff[8]; /* Buffer for the rearrangement of LF TCX5 */ - - mvr2r( spectrum + 8, buff, 8 ); - - if ( enc_dec == ENC ) - { - mvr2r( spectrum + 16, spectrum + 8, L_frame - 8 ); - mvr2r( buff, spectrum + L_frame, 8 ); - } - else - { - mvr2r( spectrum + 16, spectrum + 8, L_spec - 8 ); - mvr2r( buff, spectrum + L_spec, 8 ); - } - } - - return; -} - -#endif - - /*-------------------------------------------------------------------* * tcx5SpectrumInterleaving() * diff --git a/lib_com/fd_cng_com_fx.c b/lib_com/fd_cng_com_fx.c index 78809ed2c..872c180b5 100644 --- a/lib_com/fd_cng_com_fx.c +++ b/lib_com/fd_cng_com_fx.c @@ -1109,12 +1109,6 @@ void minimum_statistics( move16(); } } -#ifdef IVAS_CODE_CNG_COM - if ( enc_dec == DEC && element_mode == IVAS_CPE_TD ) - { - v_multc( msNoiseEst, 1.4125f, msNoiseEst, NPART_SHAPING ); - } -#endif /* Collect buffers */ Copy( msPeriodog, msPeriodogBuf + len * ( *msPeriodogBufPtr ), len ); @@ -2624,18 +2618,6 @@ void SynthesisSTFT( move16(); } /* Generate excitation */ -#ifdef IVAS_CODE_CNG_COM - PME() - if ( ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT ) && nchan_out == 2 ) - { - for ( i = 0; i < hFdCngCom->frameSize / 2; i++ ) - { - buf[i + ( M + 1 )] += olapBuffer[i + hFdCngCom->frameSize / 4]; - } - v_multc( buf, (float) ( hFdCngCom->fftlen / 2 ), buf, M + 1 + hFdCngCom->frameSize ); - } - else -#endif { FOR( i = 0; i < M + 1 + hFdCngCom->frameSize; i++ ) { @@ -2749,18 +2731,6 @@ void SynthesisSTFT_ivas_fx( move16(); } /* Generate excitation */ -#ifdef IVAS_CODE_CNG_COM - PME() - if ( ( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT ) && nchan_out == 2 ) - { - for ( i = 0; i < hFdCngCom->frameSize / 2; i++ ) - { - buf[i + ( M + 1 )] += olapBuffer[i + hFdCngCom->frameSize / 4]; - } - v_multc( buf, (float) ( hFdCngCom->fftlen / 2 ), buf, M + 1 + hFdCngCom->frameSize ); - } - else -#endif { FOR( i = 0; i < M + 1 + hFdCngCom->frameSize; i++ ) { @@ -2788,74 +2758,6 @@ void SynthesisSTFT_ivas_fx( } } -#ifdef IVAS_CODE_CNG_COM -/*------------------------------------------------------------------- - * SynthesisSTFT_dirac() - * - * STFT synthesis filterbank - *-------------------------------------------------------------------*/ - -void SynthesisSTFT_dirac( - float *fftBuffer, /* i : FFT bins */ - float *timeDomainOutput, - float *olapBuffer, - const float *olapWin, - const int16_t samples_out, - HANDLE_FD_CNG_COM hFdCngCom /* i/o: FD_CNG structure containing all buffers and variables */ -) -{ - int16_t i; - float buf[M + 1 + 320], tmp; - - /* Perform IFFT */ - RFFTN( fftBuffer, hFdCngCom->fftSineTab, hFdCngCom->fftlen, 1 ); - - /* Handle overlap in P/S domain for stereo */ - mvr2r( olapBuffer + hFdCngCom->frameSize, olapBuffer, hFdCngCom->frameSize ); - set_f( olapBuffer + hFdCngCom->frameSize, 0.0f, hFdCngCom->frameSize ); /*olapBuffer, fftBuffer, olapWin*/ - - for ( i = hFdCngCom->frameSize / 4; i < 3 * hFdCngCom->frameSize / 4; i++ ) - { - olapBuffer[i] += fftBuffer[i] * olapWin[i - hFdCngCom->frameSize / 4]; - } - for ( ; i < 5 * hFdCngCom->frameSize / 4; i++ ) - { - olapBuffer[i] = fftBuffer[i]; - } - - for ( ; i < 7 * hFdCngCom->frameSize / 4; i++ ) - { - olapBuffer[i] = fftBuffer[i]; - } - - for ( ; i < hFdCngCom->fftlen; i++ ) - { - olapBuffer[i] = 0; - } - - /* Get time-domain signal */ - v_multc( olapBuffer + hFdCngCom->frameSize / 4, (float) ( hFdCngCom->fftlen / 2 ), timeDomainOutput, samples_out ); - - /* Get excitation */ - v_multc( olapBuffer + hFdCngCom->frameSize / 4 - ( M + 1 ), (float) ( hFdCngCom->fftlen / 2 ), buf, M + 1 + hFdCngCom->frameSize ); - tmp = buf[0]; - preemph( buf + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp ); - residu( hFdCngCom->A_cng, M, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize ); - - /* update and window olapBuf if we have a output frame that is shorter than the default frame size...*/ - if ( samples_out < hFdCngCom->frameSize ) - { - mvr2r( olapBuffer + samples_out, olapBuffer + hFdCngCom->frameSize, 3 * hFdCngCom->frameSize / 4 ); - } - for ( i = 5 * hFdCngCom->frameSize / 4; i < 7 * hFdCngCom->frameSize / 4; i++ ) - { - olapBuffer[i] *= olapWin[i - 3 * hFdCngCom->frameSize / 4]; - } - - return; -} -#endif - /************************************************************************************** * Compute some values used in the bias correction of the minimum statistics algorithm * **************************************************************************************/ diff --git a/lib_com/lsf_tools_fx.c b/lib_com/lsf_tools_fx.c index 5f0b3b57b..d60d0e999 100644 --- a/lib_com/lsf_tools_fx.c +++ b/lib_com/lsf_tools_fx.c @@ -3301,71 +3301,6 @@ Word16 tcxlpc_get_cdk( return cdk; } -#ifdef IVAS_MSVQ -/*--------------------------------------------------------------------------* - * dec_FDCNG_MSVQ_stage1() - * - * - *--------------------------------------------------------------------------*/ - -void dec_FDCNG_MSVQ_stage1( - int16_t j_full, /* i : index full range */ - int16_t n, /* i : dimension to generate */ - const float *invTrfMatrix, /* i : IDCT matrix for synthesis */ - const DCTTYPE idcttype, /* i : specify which IDCT */ - float *uq, /* o : synthesized stage1 vector */ - Word16 *uq_ind /* o : synthesized stage1 vector in BASOP */ -) -{ - int16_t col, segm_ind, j; - float dct_vec[FDCNG_VQ_MAX_LEN]; - float idct_vec[FDCNG_VQ_MAX_LEN]; - const Word8 *cbpW8; - const Word16 *dct_col_shift_tab; - - assert( n <= FDCNG_VQ_MAX_LEN ); - assert( n >= FDCNG_VQ_DCT_MINTRUNC ); - - segm_ind = 0; - for ( col = 1; col <= FDCNG_VQ_DCT_NSEGM; col++ ) - { - if ( j_full >= cdk1_ivas_cum_entries_per_segment[col] ) - { - segm_ind++; - } - } - - j = j_full - cdk1_ivas_cum_entries_per_segment[segm_ind]; /* j is the local segment index */ - - assert( j < cdk1_ivas_entries_per_segment[segm_ind] ); - - /* Word8 column variable Qx storage*/ - cbpW8 = cdk_37bits_ivas_stage1_W8Qx_dct_sections[segm_ind]; /* Word8 storage fixed ptr_init */ - cbpW8 += j * cdk1_ivas_cols_per_segment[segm_ind]; /* adaptive ptr init */ - dct_col_shift_tab = stage1_dct_col_syn_shift[segm_ind]; - - for ( col = 0; col < cdk1_ivas_cols_per_segment[segm_ind]; col++ ) - { - dct_vec[col] = (float) shl( (Word16) cbpW8[col], dct_col_shift_tab[col] ); - /* LOGIC( 1 ) , SHIFT( 1 ); - in BASOP: s_and(for W8->W16), shl() - */ - } - dctT2_N_apply_matrix( (const float *) dct_vec, idct_vec, cdk1_ivas_cols_per_segment[segm_ind], n, invTrfMatrix, FDCNG_VQ_DCT_MAXTRUNC, idcttype ); - - /*scale down to original fdcngvq domain and move to Q0 */ - v_multc( idct_vec, fdcng_dct_scaleF[1], idct_vec, n ); - /* fdcng_dct_scaleF[1] --> 0.0625-->scale down from search Q4 domain to Q0 , - not really relevant for BASOP loop */ - - /*add common mid fdcng vector, in fdcng bands domain */ - v_add( idct_vec, cdk1r_tr_midQ_truncQ, uq, n ); - assert( uq_ind == NULL ); - - return; -} - -#endif void msvq_dec( const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) (14Q1*1.28)*/ const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */ @@ -3374,11 +3309,7 @@ void msvq_dec( const Word16 N, /* i : Vector dimension */ const Word16 maxN, /* i : Codebook dimension */ const Word16 Idx[], /* i : Indices */ -#ifdef IVAS_MSVQ - const int16_t applyIDCT_flag, /* i : applyIDCT flag */ - const float *invTrfMatrix, /* i : matrix for IDCT synthesis */ -#endif - Word16 *uq /* o : quantized vector (14Q1*1.28)*/ + Word16 *uq /* o : quantized vector (14Q1*1.28)*/ ) { Word16 i, j, offset; @@ -3414,15 +3345,6 @@ void msvq_dec( start = offs[i]; move16(); } -#ifdef IVAS_MSVQ - test(); - IF( i == 0 && applyIDCT_flag != 0 ) - { - assert( start == 0 ); - dec_FDCNG_MSVQ_stage1( Idx[0], N, invTrfMatrix, IDCT_T2_XX_24, uq, uq_ind ); /* IDCT_T2 N=24 used for all synthesis */ - } - ELSE -#endif { /*vr_add( uq+start, cb[i]+Idx[i]*maxn, uq+start, n );, where uq = a zero vector*/ offset = i_mult2( Idx[i], N34 ); @@ -4499,217 +4421,3 @@ void create_IDCT_N_Matrix_fx( return; } -#ifdef IVAS_MSVQ - -/*-------------------------------------------------------------------* - * dctT2_N_apply_matrix() - * - * dct/idct truncated matrix appl. for DCT basis vector lengths of N - *-------------------------------------------------------------------*/ - -void dctT2_N_apply_matrix( - const float *input, /* i : input in fdcng or DCT(fdcng) domain */ - float *output, /* o : output in DCT(fdcng) or fdcng ordomain */ - const int16_t dct_dim, /* i : dct processing dim possibly truncated */ - const int16_t fdcngvq_dim, /* i : fdcng domain length */ - const float *matrix, /* i : IDCT matrix */ - const int16_t matrix_row_dim, /* i : */ - const DCTTYPE dcttype /* i : matrix operation type */ -) -{ - int16_t i, j, dim_in, dim_out; - int16_t mat_step_col, mat_step_row, mat_step_col_flag; - const float *pt_x, *pt_A; - float tmp_y[FDCNG_VQ_MAX_LEN]; - float *pt_y; - - /* non-square DCT_N and IDCT_N matrix application, - using a stored format of an IDCT_Nx(FDCNG_VQ_DCT_MAXTRUNC) matrix */ - /* efficiently parallelized in SIMD */ - - assert( dct_dim <= FDCNG_VQ_DCT_MAXTRUNC ); - assert( fdcngvq_dim <= FDCNG_VQ_MAX_LEN ); - - if ( ( dcttype & 1 ) == 0 ) /* even entries are DCTs */ - { - /* DCT_typeII 24,21 -> XX in worst case */ - dim_in = fdcngvq_dim; - dim_out = dct_dim; - mat_step_col = matrix_row_dim; /* matrix maximum storage size dependent, width of first row in matrix */ - mat_step_row = 0; - mat_step_col_flag = 1; - assert( dcttype == DCT_T2_21_XX || dcttype == DCT_T2_24_XX ); - } - else - { - assert( ( dcttype & 1 ) != 0 ); /* idct */ - dim_in = dct_dim; - dim_out = fdcngvq_dim; - mat_step_col = 1; - mat_step_row = matrix_row_dim; - mat_step_col_flag = 0; - assert( dcttype == IDCT_T2_XX_24 ); - } - - pt_y = tmp_y; - for ( i = 0; i < dim_out; i++ ) - { - pt_x = input; - *pt_y = 0; - - /* +i(DCT) or +i*maxTrunc(IDCT) */ -#define WMC_TOOL_SKIP - pt_A = &( matrix[i * ( mat_step_row + mat_step_col_flag )] ); /* ptr indexing */ - PTR_INIT( 1 ); -#undef WMC_TOOL_SKIP - for ( j = 0; j < dim_in; j++ ) - { -#define WMC_TOOL_SKIP - *pt_y += ( *pt_x++ ) * ( *pt_A ); - pt_A += mat_step_col; /* step +maxtrunc or +1 */ /* ptr indexing*/ - MAC( 1 ); -#undef WMC_TOOL_SKIP - } - pt_y++; - } - - mvr2r( tmp_y, output, dim_out ); - - return; -} - - -/*-------------------------------------------------------------------* - * extend_dctN_input() - * - * (inputN, dctN) -> idct(N_ext) idct_N matrix application loop for - * extending, extrapolating a DCT basis vector length of N to N_ext - *-------------------------------------------------------------------*/ - -void extend_dctN_input( - const float *input, /* i : input in fdcng domain */ - const float *dct_input, /* i : input in dctN(fdcng) domain */ - const int16_t in_dim, /* i : in_dim == N */ - float *ext_sig, /* o : extended output in fdcng domain */ - const int16_t out_dim, /* i : output total dim */ - float *matrix, /* i : idct synthesis matrix N rows, n_cols columns */ - const int16_t n_cols, /* i : number of columns == DCT truncation length */ - const DCTTYPE dcttype /* i : matrix operation type */ -) -{ - int16_t i, j, i_rev; - const float( *ptr )[FDCNG_VQ_DCT_MAXTRUNC] = (void *) matrix; - - /* stored format is an IDCT_Nx(FDCNG_VQ_DCT_MAXTRUNC) matrix */ - assert( in_dim < FDCNG_VQ_MAX_LEN ); - assert( out_dim <= FDCNG_VQ_MAX_LEN ); - assert( out_dim > in_dim ); - assert( n_cols == FDCNG_VQ_DCT_MAXTRUNC ); /* for *ptr[MAX_TRUNC] adressing*/ - assert( ( dcttype & 1 ) != 0 ); /* idct tables always in use for this basis vector extension */ - - mvr2r( input, ext_sig, in_dim ); /* copy initial part, i.e. only last/tail parts are extended */ - set_f( &( ext_sig[in_dim] ), 0.0, out_dim - in_dim ); - - i_rev = in_dim; /*ptr init*/ - for ( i = in_dim; i < out_dim; i++ ) - { /* for each extension sample */ - /* i = 21 22 23; - i_rev = 20 19 18; for odd dctII reflect basis vector - */ - i_rev--; - - for ( j = 0; j < n_cols; j++ ) /* for each available DCT coeff */ - { - /* DCTcoeff * reflected basis vector */ -#define WMC_TOOL_SKIP - /* pure ptr MAC operations */ - ext_sig[i] += dct_input[j] * ptr[i_rev][j]; /* sum up scaled and extended basis vector */ - MAC( 1 ); -#undef WMC_TOOL_SKIP - } - } - - return; -} - - -/*-------------------------------------------------------------------* - * create_IDCT_N_Matrix() - * - * inititate idct24 FDCNG_VQ_DCT_MAXTRUNCx N matrix in - * RAM from a quantized compressed ROM format - *-------------------------------------------------------------------*/ - -void create_IDCT_N_Matrix( - float *inv_matrixFloatQ, /* i/o: RAM buffer */ - const int16_t N, /* i : DCT length, number of time samples */ - const int16_t n_cols, /* i : number of dct coeffs (as DCT may be truncated) */ - const int16_t alloc_size /* i : RAM buffer size in elements */ -) -{ - int16_t c, c1, r, r_flip, W16_val; - int16_t len; - int16_t mat_cpy_size; - const Word16 *absval_ptr; - const Word8 *idx_ptr; - Word16 idx; - float( *ptr )[FDCNG_VQ_DCT_MAXTRUNC] = (void *) inv_matrixFloatQ; /* fixed number of columns pointers, to simplifies adressing in ANSIC */ - - absval_ptr = unique_idctT2_24coeffsQ16; - idx_ptr = idctT2_24_compressed_idx; - len = FDCNG_VQ_MAX_LEN; - - if ( N == FDCNG_VQ_MAX_LEN_WB ) - { - absval_ptr = unique_idctT2_21coeffsQ16; - idx_ptr = idctT2_21_compressed_idx; - len = N; - } - - assert( alloc_size >= ( n_cols * len ) ); /* enough space for the full expanded IDCT matrix */ - assert( N <= len ); - - mat_cpy_size = ( n_cols ) * ( len >> 1 ); /* NB integer division of "len" */ - - if ( ( len & 1 ) != 0 ) - { /* odd sized DCT with a non-reflected center row */ - mat_cpy_size += n_cols; - } - - for ( c = 0; c < mat_cpy_size; c++ ) - { - idx = (Word16) ( idx_ptr[c] ); - W16_val = absval_ptr[abs( idx )]; - - if ( idx < 0 ) - { - W16_val = -( W16_val ); - } - inv_matrixFloatQ[c] = ( +1.52587890625e-05f ) * ( (float) W16_val ); /* 1.0/2.^16 scaling to a float-"Q0" , a scaling that is not done in BASOP */ - } - - /* for even number of coeffs DCT24, - flip symmetry for odd, even is used to save 50% IDCT Table ROM */ - /* for an odd DCT center is not flipped e.g for DCT21 */ - - assert( n_cols == FDCNG_VQ_DCT_MAXTRUNC ); - assert( ( n_cols & 1 ) == 0 ); - - for ( c = 0; c < ( n_cols ); c += 2 ) - { - c1 = c + 1; - r_flip = len - 1; - for ( r = 0; r < ( len / 2 ); r++, r_flip-- ) - { -#define WMC_TOOL_SKIP - ptr[r_flip][c] = ptr[r][c]; /* flipped */ - ptr[r_flip][c1] = -( ptr[r][c1] ); /* flipped and sign swapped */ - MOVE( 2 ); - MULT( 1 ); /* for negate */ -#undef WMC_TOOL_SKIP - } - } - - return; -} -#endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index bbd5416da..ecd190f69 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -916,11 +916,7 @@ void msvq_dec( const Word16 N, /* i : Vector dimension */ const Word16 maxN, /* i : Codebook dimension */ const Word16 Idx[], /* i : Indices */ -#ifdef IVAS_MSVQ - const int16_t applyIDCT_flag, /* i : applyIDCT flag */ - const float *invTrfMatrix, /* i : matrix for IDCT synthesis */ -#endif - Word16 *uq /* o : quantized vector (3Q12) */ + Word16 *uq /* o : quantized vector (3Q12) */ ); Word16 tcxlpc_get_cdk( @@ -6449,12 +6445,7 @@ void DetectTonalComponents( const Word16 nSamples, const Word16 nSamplesCore, Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins */ - Word16 element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif -); + Word16 element_mode ); void RefineTonalComponents( Word16 indexOfTonalPeak[], @@ -6474,12 +6465,7 @@ void RefineTonalComponents( const Word16 nSamples, const Word16 nSamplesCore, const Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins */ - Word16 element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif -); + Word16 element_mode ); void ivas_RefineTonalComponents_fx( Word16 indexOfTonalPeak[], @@ -6561,20 +6547,13 @@ void TonalMDCTConceal_Detect( const Word32 pitchLag, /*IN */ Word16 *umIndices, /*OUT*/ Word16 element_mode /* IN */ -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif ); void TonalMDCTConceal_Apply( - const TonalMDCTConcealPtr hTonalMDCTConc, /*IN */ - Word32* mdctSpectrum, /*IN/OUT*/ - Word16* mdctSpectrum_exp /*IN */ -#ifdef IVAS_CODE_MDCT_GSHAPE - , const PsychoacousticParameters* psychParamsCurrent) -#endif - ); + const TonalMDCTConcealPtr hTonalMDCTConc, /*IN */ + Word32 *mdctSpectrum, /*IN/OUT*/ + Word16 *mdctSpectrum_exp /*IN */ +); void TonalMDCTConceal_Apply_ivas_fx( TonalMDCTConcealPtr hTonalMDCTConc, /*IN */ @@ -9137,15 +9116,8 @@ Word16 decode_lpc_avq_fx( Decoder_State *st, /* i/o: decoder state structure */ const Word16 numlpc, /* i : Number of sets of lpc */ Word16 *param_lpc /* o : lpc parameters */ -#ifdef IVAS_CODE_AVQ_LPC - , - const Word16 ch, /* i : channel */ - const Word16 element_mode, /* i : element mode */ - const Word16 sns_low_br_mode /* i : SNS low-bitrate mode */ -#endif ); -// decode_lpc_avq_ivas_fx declaration with IVAS_CODE_AVQ_LPC enabled Word16 decode_lpc_avq_ivas_fx( Decoder_State *st, /* i/o: decoder state structure */ const Word16 numlpc, /* i : Number of sets of lpc */ @@ -9369,13 +9341,6 @@ void modify_lsf( void con_tcx_fx( Decoder_State *st, /* i/o: coder memory state */ Word16 synth[] /* i/o: synth[] */ /*Q0 */ -#ifdef IVAS_CODE_CON_TCX - , - const Word16 coh, /* i : coherence of stereo signal */ - Word16 *noise_seed, /* i/o: noise seed for stereo */ - const Word16 only_left /* i : TD-PLC only in left channel */ -#endif - ); // er_scale_sync.c diff --git a/lib_dec/ACcontextMapping_dec_fx.c b/lib_dec/ACcontextMapping_dec_fx.c index 22e9fff01..acf372565 100644 --- a/lib_dec/ACcontextMapping_dec_fx.c +++ b/lib_dec/ACcontextMapping_dec_fx.c @@ -328,9 +328,6 @@ Word16 ACcontextMapping_decode2_no_mem_s17_LC( return resQBits; } -#define IVAS_CONTEXT_MAPPING -#ifdef IVAS_CONTEXT_MAPPING - /*-------------------------------------------------------------------* * RCcontextMapping_decode2_no_mem_s17_LCS() * @@ -737,6 +734,3 @@ Word16 RCcontextMapping_decode2_no_mem_s17_LCS_fx( return resQBits; } - -#endif -#undef IVAS_CONTEXT_MAPPING diff --git a/lib_dec/TonalComponentDetection_fx.c b/lib_dec/TonalComponentDetection_fx.c index 4b2cf0213..409b975f5 100644 --- a/lib_dec/TonalComponentDetection_fx.c +++ b/lib_dec/TonalComponentDetection_fx.c @@ -140,33 +140,13 @@ void DetectTonalComponents( const Word16 nSamples, const Word16 nSamplesCore, Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins Q0*/ - Word16 element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif -) + Word16 element_mode ) { Word16 F0; Word16 thresholdModification[L_FRAME_MAX], lastMDCTSpect_exp; Word32 pScaledMdctSpectrum[L_FRAME_MAX]; -#ifdef IVAS_CODE_MDCT_GSHAPE - Word16 nBands; - IF( psychParamsCurrent == NULL ) - { - nBands = FDNS_NPTS; - PMT( "add nBands argument to mdct_shaping_16" ) -#endif - mdct_shaping_16( lastMDCTSpectrum, nSamplesCore, nSamples, scaleFactors, scaleFactors_exp, scaleFactors_max_e, pScaledMdctSpectrum ); -#ifdef IVAS_CODE_MDCT_GSHAPE - } - ELSE - { - sns_shape_spectrum( pScaledMdctSpectrum, psychParamsCurrent, scaleFactors, nSamplesCore ); - nBands = psychParamsCurrent->nBands; - } -#endif + mdct_shaping_16( lastMDCTSpectrum, nSamplesCore, nSamples, scaleFactors, scaleFactors_exp, scaleFactors_max_e, pScaledMdctSpectrum ); lastMDCTSpect_exp = add( lastMDCTSpectrum_exp, scaleFactors_max_e ); @@ -208,12 +188,7 @@ void RefineTonalComponents( const Word16 nSamples, const Word16 nSamplesCore, const Word16 floorPowerSpectrum, /* i: lower limit for power spectrum bins Q0*/ - Word16 element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif -) + Word16 element_mode ) { Word16 newIndexOfTonalPeak[MAX_NUMBER_OF_IDX]; /*Q0*/ Word16 newLowerIndex[MAX_NUMBER_OF_IDX]; /*Q0*/ @@ -224,12 +199,7 @@ void RefineTonalComponents( DetectTonalComponents( newIndexOfTonalPeak, newLowerIndex, newUpperIndex, &newNumIndexes, lastPitchLag, currentPitchLag, lastMDCTSpectrum, - lastMDCTSpectrum_exp, scaleFactors, scaleFactors_exp, scaleFactors_max_e, secondLastPowerSpectrum, nSamples, nSamplesCore, floorPowerSpectrum, element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - psychParamsCurrent -#endif - ); + lastMDCTSpectrum_exp, scaleFactors, scaleFactors_exp, scaleFactors_max_e, secondLastPowerSpectrum, nSamples, nSamplesCore, floorPowerSpectrum, element_mode ); nPreservedPeaks = 0; move16(); diff --git a/lib_dec/bass_psfilter_fx.c b/lib_dec/bass_psfilter_fx.c index 45cf7feed..4a5ef9328 100644 --- a/lib_dec/bass_psfilter_fx.c +++ b/lib_dec/bass_psfilter_fx.c @@ -1124,110 +1124,3 @@ void bpf_pitch_coherence_ivas_fx( return; } - - -#ifdef ADD_BPF_ADAPT -/*---------------------------------------------------------------------* - * res_bpf_adapt() - * - * Analyze BPF output and decide if it should be applied on DFT stereo - * residual signal - *---------------------------------------------------------------------*/ - -/*! r: Decision to enable or disable BPF on DFT stereo residual */ -int16_t res_bpf_adapt( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: DFT stereo decoder handle */ - const float *bpf_error_signal_8k, /* i : BPF modification signal */ - float res_buf[STEREO_DFT_BUF_MAX] /* i : residual buffer */ -) -{ - float error_nrg; - float tmp; - float res_hb_nrg; - float bpf_error_ratio; - int16_t res_bpf_flag; - int16_t i; - int16_t i_start; - int16_t i_end; - float bw_inv; - - if ( hStereoDft->res_cod_band_max == 6 ) - { - i_start = 39; - i_end = 64; - bw_inv = 0.04f; /* 1/(64 - 39) */ - } - else - { - i_start = 28; - i_end = 40; - bw_inv = 0.083f; /* 1/(40 - 28) */ - } - - /* Measure energy of high frequency band in MDCT domain */ - res_hb_nrg = EPSILON; - for ( i = i_start; i < i_end; i++ ) - { - res_hb_nrg += res_buf[i] * res_buf[i]; - } - res_hb_nrg *= bw_inv; - res_hb_nrg = STEREO_DFT_BPF_ADAPT_ALPHA * res_hb_nrg + ( 1 - STEREO_DFT_BPF_ADAPT_ALPHA ) * hStereoDft->res_hb_nrg_mem; - hStereoDft->res_hb_nrg_mem = res_hb_nrg; - - /* Measure energy of discontinuities at subframe boundaries */ - error_nrg = 0; - for ( i = 0; i < L_FRAME8k; i += STEREO_DFT_L_SUBFR_8k ) - { - tmp = bpf_error_signal_8k[i] - hStereoDft->bpf_error_signal_last; - error_nrg += tmp * tmp; - hStereoDft->bpf_error_signal_last = bpf_error_signal_8k[i + STEREO_DFT_L_SUBFR_8k - 1]; - } - error_nrg *= 0.2f; /* Division by 5 for average value */ - bpf_error_ratio = min( 2, error_nrg / res_hb_nrg ); /* Form decision variable and apply limit */ - bpf_error_ratio = STEREO_DFT_BPF_ADAPT_BETA * bpf_error_ratio + ( 1 - STEREO_DFT_BPF_ADAPT_BETA ) * hStereoDft->bpf_error_ratio_mem; - hStereoDft->bpf_error_ratio_mem = bpf_error_ratio; - - res_bpf_flag = bpf_error_ratio < 1; - - return res_bpf_flag; -} - -/*---------------------------------------------------------------------* - * bpf_pitch_coherence() - * - * Analyse pitch coherence - *---------------------------------------------------------------------*/ -void bpf_pitch_coherence( - Decoder_State *st, /* i/o: decoder state structure */ - const float pitch_buf[] /* i : pitch for every subfr [0,1,2,3] */ -) -{ - int16_t nb_subfr; - float pc, pcn1, pcn2, pcn3; - - nb_subfr = st->L_frame / L_SUBFR; - - if ( st->clas_dec > UNVOICED_CLAS && st->element_mode != EVS_MONO ) - { - pc = (float) fabs( st->old_pitch_buf[nb_subfr + 3] + st->old_pitch_buf[nb_subfr + 2] - st->old_pitch_buf[nb_subfr] - st->old_pitch_buf[nb_subfr + 1] ) * 256.0f / (float) st->L_frame; - pcn1 = K_PC_DEC * pc + C_PC_DEC; - pcn1 = max( min( pcn1, 1.0f ), 0.0f ); - - pc = (float) fabs( pitch_buf[nb_subfr - 1] + pitch_buf[nb_subfr - 2] - pitch_buf[1] - pitch_buf[0] ) * 256.0f / (float) st->L_frame; - pcn2 = K_PC_DEC * pc + C_PC_DEC; - pcn2 = max( min( pcn2, 1.0f ), 0.0f ); - - pc = (float) fabs( st->old_pitch_buf[nb_subfr + 3] + st->old_pitch_buf[nb_subfr + 2] - pitch_buf[1] - pitch_buf[0] ) * 256.0f / (float) st->L_frame; - pcn3 = K_PC_DEC * pc + C_PC_DEC; - pcn3 = max( min( pcn3, 1.0f ), 0.0f ); - - if ( pcn1 + pcn2 + pcn3 < 2.5f ) - { - st->hBPF->psf_att = 0.4f; - set_s( &st->hBPF->Track_on_hist[L_TRACK_HIST - nb_subfr], 1, nb_subfr ); - } - } - - return; -} -#endif diff --git a/lib_dec/dec_higher_acelp_fx.c b/lib_dec/dec_higher_acelp_fx.c index aff7e5656..6144765a8 100644 --- a/lib_dec/dec_higher_acelp_fx.c +++ b/lib_dec/dec_higher_acelp_fx.c @@ -8,7 +8,6 @@ #include "prot_fx.h" /* Function prototypes */ #include "rom_com.h" /* Static table prototypes */ -#define IVAS_CODE_AVQ /*-----------------------------------------------------------------* * transf_cdbk_dec() * Transform domain contribution decoding @@ -129,7 +128,6 @@ void transf_cdbk_dec_fx( * Demultiplex and decode subvectors from bit-stream *--------------------------------------------------------------*/ -#ifdef IVAS_CODE_AVQ AVQ_demuxdec_fx( st_fx, code_preQ, &nBits, 8, nq, avq_bit_sFlag, trgtSvPos ); Word16 q_Code_preQ; IF( ( st_fx->element_mode == EVS_MONO ) ) @@ -142,9 +140,6 @@ void transf_cdbk_dec_fx( q_Code_preQ = Q_AVQ_OUT; move16(); } -#else - AVQ_demuxdec_fx( st_fx, code_preQ, &nBits, 8, nq ); -#endif FOR( i = 0; i < L_SUBFR; i++ ) { code_preQ[i] = shl_o( code_preQ[i], q_Code_preQ, &Overflow ); @@ -185,7 +180,6 @@ void transf_cdbk_dec_fx( st_fx->last_nq_preQ = nq[7]; move16(); -#ifdef IVAS_CODE_AVQ /* TD pre-quantizer: in extreme cases at subframe boundaries, lower the preemphasis memory to avoid a saturation */ test(); test(); @@ -209,7 +203,6 @@ void transf_cdbk_dec_fx( st_fx->last_code_preq = code_preQ[L_SUBFR - 1]; // q_Code_preQ move16(); -#endif PREEMPH_FX( code_preQ, FAC_PRE_AVQ_FX, L_SUBFR, &st_fx->mem_preemp_preQ_fx ); /*--------------------------------------------------------------* * Compute normalized prequantizer excitation gain for FEC diff --git a/lib_dec/dec_prm_fx.c b/lib_dec/dec_prm_fx.c index 3d277807d..16e588396 100644 --- a/lib_dec/dec_prm_fx.c +++ b/lib_dec/dec_prm_fx.c @@ -1003,12 +1003,7 @@ void dec_prm_fx( { IF( st->lpcQuantization == 0 ) { - decode_lpc_avq_fx( st, st->numlpc, param_lpc -#ifdef IVAS_CODE_AVQ_LPC - , - , , -#endif - ); + decode_lpc_avq_fx( st, st->numlpc, param_lpc ); move16(); } ELSE IF( EQ_16( st->lpcQuantization, 1 ) ) diff --git a/lib_dec/dlpc_avq_fx.c b/lib_dec/dlpc_avq_fx.c index 3d9a00b7f..07f1ea6f2 100644 --- a/lib_dec/dlpc_avq_fx.c +++ b/lib_dec/dlpc_avq_fx.c @@ -149,20 +149,11 @@ Word16 decode_lpc_avq_fx( Decoder_State *st, /* i/o: decoder state structure */ const Word16 numlpc, /* i : Number of sets of lpc */ Word16 *param_lpc /* o : lpc parameters */ -#ifdef IVAS_CODE_AVQ_LPC - , - const Word16 ch, /* i : channel */ - const Word16 element_mode, /* i : element mode */ - const Word16 sns_low_br_mode /* i : SNS low-bitrate mode */ -#endif ) { Word16 k, j; Word16 nb, qn1, qn2, avqBits, q_type; Word16 start_bit_pos; -#ifdef IVAS_CODE_AVQ_LPC - Word16 stereo_mode = 0; -#endif move16(); move16(); move16(); @@ -189,41 +180,11 @@ Word16 decode_lpc_avq_fx( param_lpc[j] = q_type; j = add( j, 1 ); } -#ifdef IVAS_CODE_AVQ_LPC - test(); - IF( EQ_16( element_mode, IVAS_CPE_MDCT ) && k == 0 ) - { - stereo_mode = ch; - move16(); - if ( ch == 0 ) - { - stereo_mode = param_lpc[j]; - move16(); - } - param_lpc[j++] = stereo_mode; - move16(); - } -#endif /* Decode quantization indices */ IF( q_type == 0 ) { /* Absolute quantizer with 1st stage stochastic codebook */ -#ifdef IVAS_CODE_AVQ_LPC - IF( EQ_16( element_mode, IVAS_CPE_MDCT ) ) - { - IF( NE_16( stereo_mode, 3 ) ) - { - param_lpc[j] = get_next_indice_fx( st, SNS_ABS_QUANT_BITS ); - } - ELSE - { - param_lpc[j] = sub( get_next_indice_fx( st, 1 ), 2 ); - } - move16(); - } - ELSE -#endif { move16(); param_lpc[j] = get_next_indice_fx( st, 8 ); @@ -235,9 +196,6 @@ Word16 decode_lpc_avq_fx( * - we are in low bitrate mode and no joint SNS coding is used * - OR the side-SNS-is-zero flag is set for joint SNS */ -#ifdef IVAS_CODE_AVQ_LPC - IF( NE_16( element_mode, IVAS_CPE_MDCT ) || ( !( sns_low_br_mode && ( EQ_16( stereo_mode, 0 ) || EQ_16( stereo_mode, 1 ) ) && !( EQ_16( q_type, 0 ) && EQ_16( param_lpc[j - 1], -2 ) ) ) ) ) -#endif { /* 2 bits to specify Q2,Q3,Q4,ext */ qn1 = add( 2, get_next_indice_fx( st, 2 ) ); @@ -321,21 +279,11 @@ Word16 decode_lpc_avq_fx( pack4bits_fx( avqBits, st, ¶m_lpc[j] ); j = add( j, qn2 ); } -#ifdef IVAS_CODE_AVQ_LPC - ELSE - { - param_lpc[j] = 0; - j = add( j, 1 ); - param_lpc[j] = 0; - j = add( j, 1 ); - move16(); - move16(); - } -#endif } return sub( st->next_bit_pos, start_bit_pos ); } + Word16 decode_lpc_avq_ivas_fx( Decoder_State *st, /* i/o: decoder state structure */ const Word16 numlpc, /* i : Number of sets of lpc */ diff --git a/lib_dec/er_dec_tcx_fx.c b/lib_dec/er_dec_tcx_fx.c index 161cefe76..3d0eab815 100644 --- a/lib_dec/er_dec_tcx_fx.c +++ b/lib_dec/er_dec_tcx_fx.c @@ -121,13 +121,6 @@ con_tcx void con_tcx_fx( Decoder_State *st, /* i/o: coder memory state */ Word16 synth[] /* i/o: synth[] Q0*/ -#ifdef IVAS_CODE_CON_TCX - , - const Word16 coh, /* i : coherence of stereo signal Q14*/ - Word16 *noise_seed, /* i/o: noise seed for stereo Q0*/ - const Word16 only_left /* i : TD-PLC only in left channel Q0*/ -#endif - ) { Word16 i, s, c, L_frame, L_subfr, fLowPassFilter, T0; @@ -558,43 +551,7 @@ void con_tcx_fx( /*-----------------------------------------------------------------* * Construct the random part of excitation *-----------------------------------------------------------------*/ -#ifdef IVAS_CODE_CON_TCX - if ( coh != -1.f ) - { - int16_t tmpSeed1; - float alpha_coh; - float random1, random2; - - tmpSeed1 = *noise_seed; - noise = buf; - - alpha_coh = sqrtf( ( 1 - coh ) / ( 1 + coh ) ); - if ( st->idchan == 1 ) - { - alpha_coh = -alpha_coh; - } - - for ( i = 0; i < L_frame + L_FIR_FER2 - 1; i++ ) - { - random1 = (float) own_random( &tmpSeed1 ); - random2 = (float) own_random( &tmpSeed1 ); - noise[i] = random1 + alpha_coh * random2; - } - - if ( st->idchan == 1 || only_left ) - { - *noise_seed = tmpSeed1; - } - for ( ; i < L_frame + ( L_frame / 2 ) + 2 * L_FIR_FER2; i++ ) - { - random1 = (float) own_random( &tmpSeed1 ); - random2 = (float) own_random( &tmpSeed1 ); - noise[i] = random1 + alpha_coh * random2; - } - } - else -#endif /*IVAS_CODE_CON_TCX*/ { tmpSeed = st->seed_acelp; move16(); @@ -1427,7 +1384,7 @@ void con_tcx_ivas_fx( /*-----------------------------------------------------------------* * Construct the random part of excitation *-----------------------------------------------------------------*/ -#ifndef IVAS_CODE_CON_TCX + IF( NE_16( coh, -16384 ) ) { Word16 tmpSeed1; @@ -1477,7 +1434,6 @@ void con_tcx_ivas_fx( } } ELSE -#endif /*IVAS_CODE_CON_TCX*/ { tmpSeed = st->seed_acelp; /*Q0*/ move16(); diff --git a/lib_dec/er_util_fx.c b/lib_dec/er_util_fx.c index 9735129ec..cecbad294 100644 --- a/lib_dec/er_util_fx.c +++ b/lib_dec/er_util_fx.c @@ -579,12 +579,7 @@ Word16 GetPLCModeDecision_fx( pitch = L_add( st->old_fpitch, 0 ); /*Q16*/ } - TonalMDCTConceal_Detect( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - ( st->element_mode == IVAS_CPE_MDCT ? &( st->hTcxCfg->psychParamsTCX20 ) : st->hTcxCfg->psychParamsCurrent ) -#endif - ); + TonalMDCTConceal_Detect( st->hTonalMDCTConc, pitch, &numIndices, st->element_mode ); test(); test(); diff --git a/lib_dec/hf_synth_fx.c b/lib_dec/hf_synth_fx.c index 94c7d4c62..65c2e9290 100644 --- a/lib_dec/hf_synth_fx.c +++ b/lib_dec/hf_synth_fx.c @@ -182,11 +182,7 @@ static void hf_synthesis_fx( * calculate energy scaling factor to respect tilt of synth12k8 * (tilt: 1=voiced, -1=unvoiced) *-----------------------------------------------------------------*/ -#ifdef EVS_MONO hp400_12k8_fx( synth, L_SUBFR, hBWE_zero->mem_hp400_fx ); -#else - hp400_12k8_ivas_fx( synth, L_SUBFR, hBWE_zero->mem_hp400_fx ); -#endif /* i: mem_hp400 in Q_syn */ /* i: synth in Q_syn */ /* o: synth in Q_syn-3 */ diff --git a/lib_dec/lsf_msvq_ma_dec_fx.c b/lib_dec/lsf_msvq_ma_dec_fx.c index 61e338c9c..1b5d79c68 100644 --- a/lib_dec/lsf_msvq_ma_dec_fx.c +++ b/lib_dec/lsf_msvq_ma_dec_fx.c @@ -185,9 +185,6 @@ Word16 D_lsf_tcxlpc( M, M, indices + NumIndices, -#ifdef IVAS_MSVQ - 0, NULL, -#endif lsf_q ); NumIndices = add( NumIndices, TCXLPC_NUMSTAGES ); /* Q0 */ @@ -208,9 +205,6 @@ Word16 D_lsf_tcxlpc( M, M, indices + NumIndices, -#ifdef IVAS_MSVQ - 0, NULL, -#endif lsf_rem_q_ind ); NumIndices = add( NumIndices, TCXLPC_IND_NUMSTAGES ); /* Q0 */ @@ -287,9 +281,6 @@ Word16 dec_lsf_tcxlpc( M, M, flag + 1, -#ifdef IVAS_MSVQ - 0, NULL, -#endif lsf_q_ind ); /* Update flag */ diff --git a/lib_dec/swb_bwe_dec_hr_fx.c b/lib_dec/swb_bwe_dec_hr_fx.c index 9fae1ded5..ff4d8bee6 100644 --- a/lib_dec/swb_bwe_dec_hr_fx.c +++ b/lib_dec/swb_bwe_dec_hr_fx.c @@ -11,7 +11,6 @@ #define Q_GUARD 1 #define Q_32_BITS 14 /* scaling of 't_audio32' */ #define MAKE_PSEUDO_FLT( v, e ) ( ( ( (Word32) ( v ) ) << 16 ) + ( e ) ) -#define AVQ_DEMUX /*-----------------------------------------------------------* * Gain_Dequant_HR() * @@ -595,11 +594,7 @@ Word16 swb_bwe_dec_hr_fx( /* o : Exponent of SHB Nsv = ( NUM_TRANS_END_FREQ_COEF - NUM_TRANS_START_FREQ_COEF ) / WIDTH_BAND; move16(); -#ifdef AVQ_DEMUX AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq, 0, sub( Nsv, 1 ) ); -#else - AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq ); -#endif temp = add( len, NUM_TRANS_START_FREQ_COEF ); /* 't_audio' in Q8 */ t_audio_exp = 8; @@ -848,11 +843,7 @@ Word16 swb_bwe_dec_hr_fx( /* o : Exponent of SHB /* Nsv = i / WIDTH_BAND */ Nsv = shr( i, 3 ); -#ifdef AVQ_DEMUX AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq, 0, sub( Nsv, 1 ) ); -#else - AVQ_demuxdec_fx( st_fx, x_norm, &nBits, Nsv, nq ); -#endif /*---------------------------------------------------------------------* * second stage decoding *---------------------------------------------------------------------*/ @@ -889,11 +880,7 @@ Word16 swb_bwe_dec_hr_fx( /* o : Exponent of SHB } nBits = sub( nBits, NBITS_GLOB_GAIN_BWE_HR ); -#ifdef AVQ_DEMUX AVQ_demuxdec_fx( st_fx, x_norm1, &nBits, Nsv2, nq2, 0, sub( Nsv2, 1 ) ); -#else - AVQ_demuxdec_fx( st_fx, x_norm1, &nBits, Nsv2, nq2 ); -#endif } /*---------------------------------------------------------------------* diff --git a/lib_dec/tonalMDCTconcealment_fx.c b/lib_dec/tonalMDCTconcealment_fx.c index f33a6c84f..fd6cf7835 100644 --- a/lib_dec/tonalMDCTconcealment_fx.c +++ b/lib_dec/tonalMDCTconcealment_fx.c @@ -873,12 +873,7 @@ static void CalcPowerSpecAndDetectTonalComponents( Word32 secondLastMDCT[], // Q31-secondLastMDCT_exp Word16 secondLastMDCT_exp, Word32 const pitchLag, /*15Q16*/ - Word16 element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif -) + Word16 element_mode ) { Word16 nSamples; Word16 i; @@ -968,20 +963,9 @@ static void CalcPowerSpecAndDetectTonalComponents( /* here mdct_shaping() is intentionally used rather then mdct_shaping_16() */ -#ifdef IVAS_CODE_MDCT_GSHAPE - IF( psychParamsCurrent == NULL ) -#endif { mdct_shaping( powerSpectrum, hTonalMDCTConc->nSamplesCore, invScaleFactors, invScaleFactors_exp ); } -#ifdef IVAS_CODE_MDCT_GSHAPE - ELSE - { - PMTE() - sns_shape_spectrum( powerSpectrum, psychParamsCurrent, invScaleFactors, hTonalMDCTConc->nSamplesCore ); - nBands = psychParamsCurrent->nBands; - } -#endif FOR( i = hTonalMDCTConc->nSamplesCore; i < nSamples; i++ ) { powerSpectrum[i] = L_shl_sat( Mpy_32_16_1( powerSpectrum[i], invScaleFactors[FDNS_NPTS - 1] ), invScaleFactors_exp[FDNS_NPTS - 1] ); // powerSpectrum_exp+ 2*invScaleFactors_exp -15 @@ -1034,12 +1018,7 @@ void TonalMDCTConceal_Detect( const TonalMDCTConcealPtr hTonalMDCTConc, const Word32 pitchLag, /*15Q16*/ Word16 *numIndices, - Word16 element_mode -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif -) + Word16 element_mode ) { Word32 secondLastMDST[L_FRAME_MAX]; Word32 secondLastMDCT[L_FRAME_MAX]; @@ -1111,9 +1090,6 @@ void TonalMDCTConceal_Detect( { /* If the second last frame was also lost, it is expected that pastTimeSignal could hold a bit different signal (e.g. including fade-out) from the one stored in TonalMDCTConceal_SaveTimeSignal. */ /* That is why we reuse the already stored information about the concealed spectrum in the second last frame */ -#ifdef IVAS_CODE_MDCT_GSHAPE - IF( psychParamsCurrent == NULL ) -#endif { nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); @@ -1121,13 +1097,6 @@ void TonalMDCTConceal_Detect( hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->secondLastBlockData.scaleFactors_exp, hTonalMDCTConc->secondLastBlockData.scaleFactors_max_e, powerSpectrum ); } -#ifdef IVAS_CODE_MDCT_GSHAPE - ELSE - { - sns_shape_spectrum( powerSpectrum, psychParamsCurrent, hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->nSamplesCore ); - nBands = psychParamsCurrent->nBands; - } -#endif powerSpectrum_exp = getScaleFactor32( powerSpectrum, nSamples ); powerSpectrum_exp = sub( powerSpectrum_exp, 3 ); /*extra 3 bits of headroom for MA filter in getEnvelope*/ @@ -2532,10 +2501,6 @@ void TonalMDCTConceal_Apply( const TonalMDCTConcealPtr hTonalMDCTConc, /*IN */ Word32 *mdctSpectrum, // Q31-*mdctSpectrum_exp /*IN/OUT*/ Word16 *mdctSpectrum_exp /*IN */ -#ifdef IVAS_CODE_MDCT_GSHAPE - , - const PsychoacousticParameters *psychParamsCurrent -#endif ) { Word16 i, l, exp; @@ -2553,22 +2518,12 @@ void TonalMDCTConceal_Apply( move16(); assert( hTonalMDCTConc->pTCI->upperIndex[hTonalMDCTConc->pTCI->numIndexes - 1] < nSamples ); -#ifdef IVAS_CODE_MDCT_GSHAPE - IF( psychParamsCurrent == NULL ) -#endif { mdct_shaping_16( hTonalMDCTConc->secondLastPowerSpectrum, hTonalMDCTConc->nSamplesCore, nSamples, hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->secondLastBlockData.scaleFactors_exp, hTonalMDCTConc->secondLastBlockData.scaleFactors_max_e, powerSpectrum ); } -#ifdef IVAS_CODE_MDCT_GSHAPE - ELSE - { - sns_shape_spectrum( powerSpectrum, psychParamsCurrent, hTonalMDCTConc->secondLastBlockData.scaleFactors, hTonalMDCTConc->nSamplesCore ); - nBands = psychParamsCurrent->nBands; - } -#endif phaseDiff = hTonalMDCTConc->pTCI->phaseDiff; /* if multiple frame loss occurs use the phase from the last frame and continue rotating */ pCurrentPhase = hTonalMDCTConc->pTCI->phase_currentFramePredicted; diff --git a/lib_enc/ACcontextMapping_enc_fx.c b/lib_enc/ACcontextMapping_enc_fx.c index 43bd30fd4..5003712b7 100644 --- a/lib_enc/ACcontextMapping_enc_fx.c +++ b/lib_enc/ACcontextMapping_enc_fx.c @@ -1826,519 +1826,3 @@ Word16 RCcontextMapping_encode2_estimate_bandWise_fx( return bandBits; } - - -#ifdef IVAS_CODE_RANGE_CODER - -/*-------------------------------------------------------------------* - * RCcontextMapping_encode2_estimate_no_mem_s17_LCS() - * - * Range coder bit-estimation - *-------------------------------------------------------------------*/ - -int16_t RCcontextMapping_encode2_estimate_no_mem_s17_LCS( - int16_t *x, /* Spectral coefficients */ - const int16_t nt, /* L - size of spectrum (no. of spectral coefficients) */ - int16_t *lastnz_out, - int16_t *nEncoded, /* No. of spectral coefficients that can be coded without an overflow occuring */ - const int16_t target, /* Target bits */ - int16_t *stop, - int16_t mode, - CONTEXT_HM_CONFIG *hm_cfg /* context-based harmonic model configuration */ -) -{ - /* Common variables */ - int16_t a1, b1; - int16_t k, pki, lev1; - uint16_t t; - int16_t lastnz, lastnz2; - int16_t rateFlag; - float bit_estimate; - int16_t symbol; - const uint8_t *lookup; - float nbits2; - - /* Initialization */ - bit_estimate = 2.0f; - nbits2 = 0.f; - - /* bits to encode lastnz */ - k = 1; - - while ( k < nt / 2 ) - { - bit_estimate++; - k = k << 1; - /* check while condition */ - } - - nbits2 = bit_estimate; - - if ( hm_cfg ) - { - int16_t a1_i, b1_i; - int16_t stop2; - int16_t total_output_bits; - int16_t nt_half; - int32_t c[2], *ctx; - int32_t p1, p2; - int16_t ii[2]; - int16_t idx1, idx2, idx; - int16_t numPeakIndicesOrig = 0, numHoleIndices = 0; /* only to avoid compiler warning */ - - /* Rate flag */ - if ( target > 400 ) - { - rateFlag = 2 << NBITS_CONTEXT; /* Select context-A for higher bitrates */ - } - else - { - rateFlag = 0; /* Select context-B for lower bitrates */ - } - - nt_half = nt >> 1; - stop2 = 0; - c[0] = c[1] = 0; - - /* Find last non-zero tuple in the mapped domain signal */ - lastnz = find_last_nz_pair( x, nt, hm_cfg ); - - lastnz2 = 2; - - /* mapped domain */ - numPeakIndicesOrig = hm_cfg->numPeakIndices; - hm_cfg->numPeakIndices = min( hm_cfg->numPeakIndices, lastnz ); - numHoleIndices = lastnz - hm_cfg->numPeakIndices; - - /* Mark hole indices beyond lastnz as pruned */ - for ( k = numHoleIndices; k < hm_cfg->numHoleIndices; ++k ) - { - hm_cfg->holeIndices[k] = hm_cfg->holeIndices[k] + nt; - } - - ii[0] = numPeakIndicesOrig; - ii[1] = 0; - - p1 = p2 = 0; /* to avoid compilation warnings */ - - /* Main Loop through the 2-tuples */ - for ( k = 0; k < lastnz; k += 2 ) - { - a1_i = get_next_coeff_mapped( ii, &p1, &idx1, hm_cfg ); - b1_i = get_next_coeff_mapped( ii, &p2, &idx2, hm_cfg ); - - idx = min( idx1, idx2 ); - - /* Get context */ - ctx = &c[p1 | p2]; - - t = (uint16_t) ( *ctx + rateFlag ); - t += ( nt_half >= idx ) ? 0 : ( 1 << NBITS_CONTEXT ); - - /* Init current 2-tuple encoding */ - a1 = (int16_t) abs( x[a1_i] ); - b1 = (int16_t) abs( x[b1_i] ); - lev1 = -( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ); - - /* Signs Bits */ - bit_estimate += min( a1, 1 ); - bit_estimate += min( b1, 1 ); - - /* pre-compute address of ari_pk_s17_LC_ext[0][Val_esc] to avoid doing it multiple times inside the loop */ - lookup = &ari_lookup_s17_LC[t] + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ); - - /* check while condition */ - /* MSBs coding */ - while ( max( a1, b1 ) >= A_THRES ) - { - pki = lookup[lev1]; /* ESC symbol */ - - bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][VAL_ESC]; - bit_estimate += 2; /* Add 2 LSB bits corresponding to the bit-plane */ - - ( a1 ) >>= 1; - ( b1 ) >>= 1; - - lev1 = min( lev1 + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ), 2 << ( NBITS_CONTEXT + NBITS_RATEQ ) ); - - /* check while condition */ - } - - pki = lookup[lev1]; - - symbol = a1 + A_THRES * b1; - bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][symbol]; - - /* Should we truncate? */ - if ( bit_estimate > target ) - { - stop2 = 1; - - if ( *stop ) - { - break; - } - } - else - { - lastnz2 = b1_i + 1; - nbits2 = bit_estimate; - } - - /* Update context for next 2-tuple */ - if ( p1 == p2 ) /* peak-peak or hole-hole context */ - { - lev1 >>= NBITS_CONTEXT + NBITS_RATEQ; - - if ( lev1 <= 0 ) - { - t = 1 + ( a1 + b1 ) * ( lev1 + 2 ); - } - else - { - t = 13 + lev1; - } - - *ctx = ( *ctx & 0xf ) * 16 + t; - } - else - { - /* mixed context */ - - if ( idx1 & 1 ) - { - /* update first context */ - c[p1] = update_mixed_context( c[p1], (int16_t) abs( x[a1_i] ) ); - } - - if ( idx2 & 1 ) - { - /* update second context */ - c[p2] = update_mixed_context( c[p2], (int16_t) abs( x[b1_i] ) ); - } - } - - } /*end of the 2-tuples loop*/ - - total_output_bits = (int16_t) ( bit_estimate + 0.5f ); - if ( *stop ) - { - total_output_bits = (int16_t) ( nbits2 + 0.5f ); - } - - if ( stop2 ) - { - stop2 = total_output_bits; - } - *nEncoded = lastnz2; - *stop = stop2; /* If zero, it means no overflow occured during bit-estimation */ - *lastnz_out = lastnz; - - /* Restore hole indices beyond lastnz */ - for ( k = numHoleIndices; k < hm_cfg->numHoleIndices; ++k ) - { - hm_cfg->holeIndices[k] = hm_cfg->holeIndices[k] - nt; - } - hm_cfg->numPeakIndices = numPeakIndicesOrig; - - return (int16_t) ( nbits2 + 0.5f ); - } - else /* if (!hm_cfg) */ - { - int16_t esc_nb, cp, rateQ; - uint16_t s; - int16_t tot_bits2; - int16_t overflow_flag = 0; - - /* Rate flag */ - if ( target > 400 ) - { - rateFlag = 2; - } - else - { - rateFlag = 0; /* Select context-B for lower bitrates */ - } - - t = 0; - s = 0; - cp = 0; - lastnz = 1; - lastnz2 = 0; - tot_bits2 = 0; - - /* Find last non-zero tuple in the mapped domain signal */ - for ( lastnz = ( nt - 2 ); lastnz >= 0; lastnz -= 2 ) - { - if ( ( x[lastnz] != 0 ) || ( x[lastnz + 1] != 0 ) ) - { - break; - } - } - lastnz += 2; - if ( lastnz < 2 ) - { - lastnz = 2; /* At least one tuple is coded */ - } - - lastnz2 = 2; - - /* Main Loop through the 2-tuples */ - for ( k = 0; k < lastnz; k += 2 ) - { - /* Init current 2-tuple encoding */ - a1 = (int16_t) abs( x[k] ); - b1 = (int16_t) abs( x[k + 1] ); - lev1 = 0; - esc_nb = 0; - rateQ = rateFlag + ( k > ( nt >> 1 ) ); - - /* Signs Bits */ - bit_estimate += min( a1, 1 ); - bit_estimate += min( b1, 1 ); - - /* pre-compute address of ari_pk_s17_LC_ext[0][Val_esc] to avoid doing it multiple times inside the loop */ - lookup = &ari_lookup_s17_LC[t + ( rateQ << NBITS_CONTEXT )]; - - /* check while condition */ - /* MSBs coding */ - while ( max( a1, b1 ) >= A_THRES ) - { - pki = lookup[( esc_nb << ( NBITS_CONTEXT + NBITS_RATEQ ) )]; - - bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][VAL_ESC]; - bit_estimate += 2; /* Add 2 LSB bits corresponding to the bit-plane */ - - ( a1 ) >>= 1; - ( b1 ) >>= 1; - - lev1++; - esc_nb = min( lev1, 3 ); - - /* check while condition */ - } - - pki = lookup[( esc_nb << ( NBITS_CONTEXT + NBITS_RATEQ ) )]; - - symbol = a1 + A_THRES * b1; - bit_estimate = bit_estimate + ari_bit_estimate_s17_LC[pki][symbol]; - - /* Should we truncate? */ - if ( bit_estimate > target ) /* Overflow occured */ - { - overflow_flag = 1; - } - else - { - if ( abs( x[k] ) || abs( x[k + 1] ) ) /* No overflow & non-zero tuple */ - { - nbits2 = bit_estimate; - lastnz2 = k + 2; - } - } - - /* Update context for next 2-tuple */ - if ( esc_nb < 2 ) - { - cp = 1 + ( a1 + b1 ) * ( esc_nb + 1 ); - } - else - { - cp = 12 + esc_nb; - } - /*shift old bits and replace last 4 bits*/ - s = ( s << 4 ) + cp; - t = s & 0xFF; - - } /*end of the 2-tuples loop*/ - - tot_bits2 = (int16_t) ( nbits2 + 0.5f ); - if ( lastnz2 < lastnz ) /* Overflow occured because unable to code all tuples */ - { - overflow_flag = 1; - } - if ( mode == -1 ) - { - tot_bits2 = (int16_t) ( bit_estimate + 0.5f ); - } - if ( overflow_flag == 0 ) /* No overflow */ - { - *stop = 0; - } - else /* Overflow */ - { - if ( *stop ) - { - *stop = tot_bits2; - } - else - { - *stop = (int16_t) ( bit_estimate + 0.5f ); - } - } - - *lastnz_out = lastnz; - *nEncoded = lastnz2; - /* Safety mechanism to avoid overflow */ - if ( lastnz2 == 2 && overflow_flag == 1 ) - { - for ( k = 0; k < lastnz2; k++ ) - { - x[k] = 0; - } - } - - return tot_bits2; - } -} - -/*-------------------------------------------------------------------* - * RCcontextMapping_encode2_estimate_bandWise_start() - * - * Range coder - start bandwise bit-estimation - *-------------------------------------------------------------------*/ - -int16_t RCcontextMapping_encode2_estimate_bandWise_start( - int16_t *x, - const int16_t nt, - const int16_t target, - HANDLE_RC_CONTEXT_MEM hContextMem ) -{ - int16_t i, k; - - /* Rate flag */ - if ( target > 400 ) - { - hContextMem->rateFlag = 2 << NBITS_CONTEXT; - } - else - { - hContextMem->rateFlag = 0; - } - - hContextMem->bit_estimate = 2.0f; - - /* Init */ - hContextMem->nt_half = nt >> 1; - - /* bits to encode lastnz */ - k = 1; - - while ( k < hContextMem->nt_half ) - { - hContextMem->bit_estimate++; - - k = k << 1; - /* check while condition */ - } - - /* bits to encode lastnz */ - hContextMem->nbits_old = (int16_t) hContextMem->bit_estimate; - - hContextMem->ctx = 0; - hContextMem->lastnz = 2; - - /* Find last non-zero tuple */ - - for ( i = nt; i >= 4; i -= 2 ) - { - - if ( x[i - 2] != 0 || x[i - 1] != 0 ) - { - hContextMem->lastnz = i; - break; - } - } - - return (int16_t) hContextMem->bit_estimate; -} - -/*-------------------------------------------------------------------* - * RCcontextMapping_encode2_estimate_bandWise() - * - * Range coder - bandwise bit-estimation - *-------------------------------------------------------------------*/ - -int16_t RCcontextMapping_encode2_estimate_bandWise( - int16_t *x, - const int16_t start_line, - const int16_t end_line, - HANDLE_RC_CONTEXT_MEM hContextMem ) -{ - int16_t a1, b1, a1_i, b1_i; - int16_t k, pki, lev1; - uint16_t t; - int16_t bandBits = 0; - int16_t total_output_bits; /* No. of bits after finalization */ - int16_t symbol; - const uint8_t *lookup; - int16_t idx; - - /* Main Loop through the 2-tuples */ - /*hContextMem->nt_half = end_line >> 1;*/ - for ( k = start_line; k < min( hContextMem->lastnz, end_line ); k += 2 ) - { - a1_i = k; - b1_i = k + 1; - - idx = k; - - /* Get context */ - t = hContextMem->ctx + hContextMem->rateFlag; - t += ( hContextMem->nt_half >= idx ) ? 0 : ( 1 << NBITS_CONTEXT ); - - /* Init current 2-tuple encoding */ - a1 = (int16_t) abs( x[a1_i] ); - b1 = (int16_t) abs( x[b1_i] ); - lev1 = -( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ); - - /* Signs Bits */ - hContextMem->bit_estimate += min( a1, 1 ); - hContextMem->bit_estimate += min( b1, 1 ); - - /* pre-compute address of ari_pk_s17_LC_ext[0][Val_esc] to avoid doing it multiple times inside the loop */ - lookup = &ari_lookup_s17_LC[t] + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ); - - /* check while condition */ - /* MSBs coding */ - while ( max( a1, b1 ) >= A_THRES ) - { - pki = lookup[lev1]; - hContextMem->bit_estimate = hContextMem->bit_estimate + ari_bit_estimate_s17_LC[pki][VAL_ESC]; - hContextMem->bit_estimate += 2; /* Add the 2 LSB bits that were shifted out */ - - ( a1 ) >>= 1; - ( b1 ) >>= 1; - - lev1 = min( lev1 + ( 1 << ( NBITS_CONTEXT + NBITS_RATEQ ) ), 2 << ( NBITS_CONTEXT + NBITS_RATEQ ) ); - /* check while condition */ - } - - pki = lookup[lev1]; - symbol = a1 + A_THRES * b1; /* MSB symbol */ - hContextMem->bit_estimate = hContextMem->bit_estimate + ari_bit_estimate_s17_LC[pki][symbol]; - - /* Update context */ - lev1 >>= NBITS_CONTEXT + NBITS_RATEQ; - - if ( lev1 <= 0 ) - { - t = 1 + ( a1 + b1 ) * ( lev1 + 2 ); - } - else - { - t = 13 + lev1; - } - - hContextMem->ctx = ( hContextMem->ctx & 0xf ) * 16 + t; - - } /*end of the 2-tuples loop*/ - total_output_bits = (int16_t) ( hContextMem->bit_estimate + 0.5f ); - - bandBits = total_output_bits - hContextMem->nbits_old; - hContextMem->nbits_old = total_output_bits; - - return bandBits; -} - -#endif diff --git a/lib_enc/gs_enc_fx.c b/lib_enc/gs_enc_fx.c index 77470c255..7bf52970d 100644 --- a/lib_enc/gs_enc_fx.c +++ b/lib_enc/gs_enc_fx.c @@ -78,13 +78,7 @@ void encod_audio_fx( * Encode GSC attack flag (used to reduce possible pre-echo) * Encode GSC SWB speech flag *---------------------------------------------------------------*/ -#ifdef GSC_IVAS // TVB -->>>>>> - test(); - IF( ( st_fx->element_mode > EVS_MONO ) && st_fx->idchan == 0 ) - { - push_indice( hBstr, IND_GSC_IVAS_SP, st_fx->GSC_IVAS_mode, 2 ); - } -#endif + IF( attack_flag > 0 ) { push_indice( hBstr, IND_GSC_ATTACK, 1, 1 ); diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index d358f7099..76640e7a7 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -58,10 +58,6 @@ static void calculate_energy_buffer_ivas_fx( CPE_ENC_HANDLE hCPE, Word32 enerBuffer_dft[], const Word16 no_channels, const Word32 input_Fs, Word16 enerBuffer_dft_e[] ); -#ifdef IVAS_FIXED_ENC -static void calculate_energy_buffer_fx( CPE_ENC_HANDLE hCPE, Word64 enerBuffer_dft_fx[], Word16 *enerBuffer_dft_q_fx, const Word16 no_channels, const Word32 input_Fs ); -#endif - /*-------------------------------------------------------------------* * pre_proc_front_ivas() * @@ -1684,69 +1680,6 @@ ivas_error pre_proc_front_ivas_fx( return error; } -#ifdef IVAS_FIXED_ENC -/*-------------------------------------------------------------------* - * calculate_energy_buffer_fx() - * - * calculate DFT-based energies - *--------------------------------------------------------------------*/ - -static void calculate_energy_buffer_fx( - CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */ - Word64 enerBuffer_dft_fx[], /* o : energy buffer */ - Word16 *enerBuffer_dft_q_fx, - const Word16 no_channels, /* i : no. of used CLDFB channels */ - const Word32 input_Fs /* i : input sampling rate */ -) -{ - Word16 i, j; - Word64 nrg_DMX_fx[CLDFB_NO_CHANNELS_MAX]; - Word64 *p_nrg_DMX_fx; - Word32 *pDFT_DMX_fx; - Word16 *pDFT_DMX_q_fx; - Word32 chan_width_bins_fx; - Word16 band_res_dft_fx, chan_width_f_fx, start, stop; - - Word16 temp_q1 = norm_l( input_Fs ) - 1; - Word16 temp_q2 = norm_s( hCPE->hStereoDft->NFFT ); - - band_res_dft_fx = div_l( L_shl( input_Fs, temp_q1 ), shl( hCPE->hStereoDft->NFFT, temp_q2 ) ); - chan_width_f_fx = 24000 / CLDFB_NO_CHANNELS_MAX; - chan_width_bins_fx = L_shl( (Word32) div_s( chan_width_f_fx, band_res_dft_fx ), ( sub( add( temp_q1, 1 ), temp_q2 ) ) ); // Q16 - - pDFT_DMX_fx = hCPE->hStereoDft->DFT_fx[0]; - pDFT_DMX_q_fx = hCPE->hStereoDft->DFT_q_fx; - start = 1; - p_nrg_DMX_fx = nrg_DMX_fx; - - *p_nrg_DMX_fx = Mpy_32_32( pDFT_DMX_fx[0], pDFT_DMX_fx[0] ); - - FOR( i = 0; i < no_channels; i++ ) - { - stop = (Word16) ( L_add( Mpy_32_16_1( chan_width_bins_fx, add( i, 1 ) ), 1 ) >> 1 ); - FOR( j = start; j < stop; j++ ) - { - *p_nrg_DMX_fx = W_add( *p_nrg_DMX_fx, Mpy_32_32( pDFT_DMX_fx[2 * j], pDFT_DMX_fx[2 * j] ) ); - *p_nrg_DMX_fx = W_add( *p_nrg_DMX_fx, Mpy_32_32( pDFT_DMX_fx[2 * j + 1], pDFT_DMX_fx[2 * j + 1] ) ); - } - enerBuffer_dft_q_fx[i] = 2 * pDFT_DMX_q_fx[i] - 31; - start = stop; - p_nrg_DMX_fx++; - } - - FOR( i = 0; i < no_channels; i++ ) /* Consider only used channels, dependent on Fs */ - { - enerBuffer_dft_fx[i] = nrg_DMX_fx[i] / 3; - } - - /* Set remaining entries of enerBuffer to zero */ - FOR( ; i < CLDFB_NO_CHANNELS_MAX; i++ ) - { - enerBuffer_dft_fx[i] = 0; - } - return; -} -#endif /*-------------------------------------------------------------------* * calculate_energy_buffer() * diff --git a/lib_enc/lsf_msvq_ma_enc_fx.c b/lib_enc/lsf_msvq_ma_enc_fx.c index 8f6a21d03..593efa784 100644 --- a/lib_enc/lsf_msvq_ma_enc_fx.c +++ b/lib_enc/lsf_msvq_ma_enc_fx.c @@ -570,9 +570,6 @@ Word16 Q_lsf_tcxlpc_fx( lpcorder, lpcorder, indices + NumIndices, -#ifdef IVAS_MSVQ - 0, NULL, -#endif lsf_q ); NumIndices = add( NumIndices, TCXLPC_NUMSTAGES ); @@ -617,9 +614,6 @@ Word16 Q_lsf_tcxlpc_fx( lpcorder, lpcorder, indices + NumIndices, -#ifdef IVAS_MSVQ - 0, NULL, -#endif lsf_rem_q_ind ); NumIndices = add( NumIndices, TCXLPC_IND_NUMSTAGES ); @@ -724,9 +718,6 @@ Word16 Q_lsf_tcxlpc_ivas_fx( lpcorder, lpcorder, indices + NumIndices, -#ifdef IVAS_MSVQ - 0, NULL, -#endif lsf_q ); NumIndices = add( NumIndices, TCXLPC_NUMSTAGES ); @@ -772,9 +763,6 @@ Word16 Q_lsf_tcxlpc_ivas_fx( lpcorder, lpcorder, indices + NumIndices, -#ifdef IVAS_MSVQ - 0, NULL, -#endif lsf_rem_q_ind ); NumIndices = add( NumIndices, TCXLPC_IND_NUMSTAGES ); -- GitLab From cd5178b3818c86d3bd2b1668cb03ec2ffd9da4cb Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 16 May 2025 08:59:14 +0530 Subject: [PATCH 541/698] Fix for 3GPP issue 1583: Very high MLD for ParamMC 5.1+4 at 96kbps 16kHz input Link #1583 --- lib_enc/ivas_mc_param_enc_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/ivas_mc_param_enc_fx.c b/lib_enc/ivas_mc_param_enc_fx.c index 3058f87f3..7f74f78f9 100644 --- a/lib_enc/ivas_mc_param_enc_fx.c +++ b/lib_enc/ivas_mc_param_enc_fx.c @@ -768,8 +768,8 @@ static void ivas_param_mc_param_est_enc_fx( #endif #ifdef MERGE_REQUEST_1378_SPEEDUP_ivas_mc_param_enc_fx_NONBE - sub35gb = sub( 35, find_guarded_bits_fx( l_ts ) ); - sub62gb = sub( 62, find_guarded_bits_fx( l_ts ) ); + sub35gb = sub( 32, sub( 11, find_guarded_bits_fx( l_ts ) ) ); // 31 - (((11 - gb) + 31 + norm) - 32) + sub62gb = sub( 63, shl( sub( 11, find_guarded_bits_fx( l_ts ) ), 1 ) ); // 31 - ((2*(11 - gb) + norm) - 32) #endif FOR( ts = start_ts; ts < num_time_slots; ts++ ) -- GitLab From 4ed5935ef4fe8baca2b1119da638f3ad497fbdb1 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Thu, 15 May 2025 17:49:55 +0530 Subject: [PATCH 542/698] Fix for 3GPP issue 1517: SBA Decoder: Differences for binaural rendered signals at 64 kbit/s Link #1517 --- lib_rend/ivas_dirac_dec_binaural_functions_fx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 16fefa3bb..e7881ba53 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -1265,12 +1265,14 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric temp64 = W_add( W_mult0_32_32( tempRe, tempRe ), W_mult0_32_32( tempIm, tempIm ) ); // 2q exp1 = W_norm( temp64 ); temp64 = W_shl( temp64, exp1 ); // 2q + exp1 - subFrameSumEne_fx[bin] = BASOP_Util_Add_Mant32Exp( subFrameSumEne_fx[bin], subFrameTotalEne_e[bin], W_extract_h( temp64 ), sub( exp /* 63 - 2q */, exp1 ) /*31 - (2q + exp1 - 32)*/, &subFrameTotalEne_e[bin] ); + subFrameSumEne_fx[bin] = BASOP_Util_Add_Mant32Exp( subFrameSumEne_fx[bin], subFrameSumEne_e[bin], W_extract_h( temp64 ), sub( exp /* 63 - 2q */, exp1 ) /*31 - (2q + exp1 - 32)*/, &subFrameSumEne_e[bin] ); move32(); } } FOR( bin = 0; bin < nBins; bin++ ) { + subFrameTotalEne_e[bin] = sub( subFrameTotalEne_e[bin], 1 ); + move16(); temp = L_shl_sat( subFrameTotalEne_fx[bin], sub( subFrameTotalEne_e[bin], subFrameSumEne_e[bin] ) ); // subFrameSumEne_e[bin] IF( GT_32( subFrameSumEne_fx[bin], temp ) ) { -- GitLab From 8b3835aed14dd4a3aa0d3436db146b0a3fb1f8f7 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 16 May 2025 12:26:14 +0530 Subject: [PATCH 543/698] Fix for 3GPP issue 1469: Somewhat high MLD on a single MASA selection test material case with BASOP decoder Link #1469 --- lib_com/prot_fx.h | 2 +- lib_com/stat_noise_uv_mod_fx.c | 58 +++++++++++++++++++--------------- lib_dec/acelp_core_dec_fx.c | 6 ++++ lib_dec/stat_noise_uv_dec_fx.c | 2 +- lib_enc/acelp_core_enc_fx.c | 5 +-- lib_enc/prot_fx_enc.h | 2 +- lib_enc/stat_noise_uv_enc_fx.c | 2 +- 7 files changed, 45 insertions(+), 32 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 6d3e28de2..a1e633c17 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -8234,7 +8234,7 @@ void stat_noise_uv_mod_ivas_fx( const Word16 *lsp_mid, /* i : LSP vector at 2nd sfr Q=15*/ Word16 *Aq, /* o : A(z) quantized for the 4 subframes Q=12*/ Word16 *exc2, /* i/o: excitation buffer Q=Q_exc*/ - Word16 Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */ + Word16 *Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */ const Word16 bfi, /* i : Bad frame indicator */ Word32 *ge_sm, /* i/o: smoothed excitation gain Q=Q_stat_noise_ge (6)*/ Word16 *uv_count, /* i/o: unvoiced counter */ diff --git a/lib_com/stat_noise_uv_mod_fx.c b/lib_com/stat_noise_uv_mod_fx.c index 67ca21cd2..c259745f2 100644 --- a/lib_com/stat_noise_uv_mod_fx.c +++ b/lib_com/stat_noise_uv_mod_fx.c @@ -330,7 +330,6 @@ void stat_noise_uv_mod_fx( } } } - /*--------------------------------------------------------------------* * stat_noise_uv_mod() * @@ -345,7 +344,7 @@ void stat_noise_uv_mod_ivas_fx( const Word16 *lsp_mid, /* i : LSP vector at 2nd sfr Q=15*/ Word16 *Aq, /* o : A(z) quantized for the 4 subframes Q=12*/ Word16 *exc2, /* i/o: excitation buffer Q=Q_exc*/ - Word16 Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */ + Word16 *Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */ const Word16 bfi, /* i : Bad frame indicator */ Word32 *ge_sm, /* i/o: smoothed excitation gain Q=Q_stat_noise_ge (6)*/ Word16 *uv_count, /* i/o: unvoiced counter */ @@ -370,8 +369,9 @@ void stat_noise_uv_mod_ivas_fx( Word16 oldlsp_mix[M]; Word16 midlsp_mix[M]; Word16 newlsp_mix[M]; - Word16 beta; /* Q15 */ - Word16 Noimix_fract; /* (noimix_fac - 1.0) in Q15 */ + Word16 beta; /* Q15 */ + Word16 Noimix_fract; /* (noimix_fac - 1.0) in Q15 */ + Word32 L_Noimix_fract; /* (noimix_fac - 1.0) in Q15 */ /* noimix_fax * x <-> x + Noimix_fract * x */ Word16 i_subfr; Word16 i, k; @@ -382,7 +382,8 @@ void stat_noise_uv_mod_ivas_fx( Word32 L_tmp_res, L_tmp, L_tmp3, L_Ge; Word16 En_shift, Tmp; - Word16 Exc2_local[L_FRAME]; /* local_copy in scaled Q_local*/ + Word16 Exc2_local[L_FRAME]; /* local_copy in scaled Q_local*/ + Word32 L_Exc2_local[L_FRAME]; /* local_copy in scaled Q_local*/ #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); @@ -437,9 +438,9 @@ void stat_noise_uv_mod_ivas_fx( Copy( exc2, Exc2_local, L_FRAME ); /* bound Q for internal use, optimization possible */ - Q_local = s_min( 11, s_max( -1, Q_exc ) ); + Q_local = s_min( 11, s_max( -1, *Q_exc ) ); /* local excitation Q and incoming excitation Q*/ - Qdiff = sub( Q_local, Q_exc ); + Qdiff = sub( Q_local, *Q_exc ); /* only shift if incoming Q is outside [11..-1] shift is done in energy calculations aswell */ Scale_sig( Exc2_local, L_FRAME, Qdiff ); /* current excitation Q and previous stat_noise states Q */ @@ -539,14 +540,11 @@ void stat_noise_uv_mod_ivas_fx( L_tmp_res = L_mac( 0, alpha, alpha ); L_tmp_res = L_mac( L_tmp_res, alpha_m1, alpha_m1 ); tmp_den = round_fx( L_Frac_sqrtQ31( L_tmp_res ) ); - - tmp_nom = sub( 32767, tmp_den ); - tmp_shift = norm_s( tmp_den ); - tmp_den = shl( tmp_den, tmp_shift ); - tmp_res = div_s( tmp_nom, tmp_den ); - - Noimix_fract = shr( tmp_res, tmp_shift ); /* float value is in range 0.0 to 0.42 */ - + Word16 exp_sqr = 0; + move16(); + tmp_res = BASOP_Util_Divide1616_Scale( 32767, tmp_den, &exp_sqr ); // 15-exp_sqr + Noimix_fract = tmp_res; // 15-exp_sqr + move16(); /* L_Ge might be 0 in unvoiced WB */ L_Ge = L_max( L_Ge, 1 ); tmp_shift = norm_l( L_Ge ); @@ -555,9 +553,7 @@ void stat_noise_uv_mod_ivas_fx( L_tmp_res = Mult_32_16( *ge_sm, tmp_res ); /* Q_stat_noise_ge+45-Q_local-Q_ge-tmp_shift-15 */ L_tmp_res = Mult_32_16( L_tmp_res, sub( 32767, beta ) ); /*30-Q_local-tmp_shift+15-15 */ L_tmp_res = L_add_sat( L_shl_sat( L_tmp_res, sub( add( Q_local, tmp_shift ), 15 ) ), beta ); /* Q15 */ - tmp_res = extract_h( L_shl_o( L_tmp_res, 15, &Overflow ) ); /* 15+15-16=14 */ - - Noimix_fract = extract_l( Mult_32_16( L_tmp_res, Noimix_fract ) ); /*15+15-15 */ + L_Noimix_fract = Mult_32_16( L_tmp_res, Noimix_fract ); /*15+15-exp_sqr-15 =15-exp_sqr */ FOR( i = 0; i < L_FRAME; i++ ) { @@ -573,18 +569,27 @@ void stat_noise_uv_mod_ivas_fx( randval = mult_r( 28378, randval ); /* Q downscaled by 2 bits ends up in Q14 */ /*sqrt(12.0f) in Q13*/ randval = extract_l( L_shl( Mult_32_16( L_Ge, randval ), sub( 1, *Q_stat_noise_ge ) ) ); /*Q_local+Q_ge+14-15+1-Q_ge=Q_local */ - L_tmp = L_mult( Exc2_local[i], alpha ); /* Q_local + 16 */ - L_tmp = L_mac( L_tmp, randval, alpha_m1 ); /* Q_local + 16 */ - L_tmp3 = Mult_32_16( L_tmp, Noimix_fract ); /* Q_local+16+15-15 */ - L_tmp = L_add_sat( L_tmp3, L_shl_sat( Mult_32_16( L_tmp, tmp_res ), 1 ) ); /* Q_local+16+14-15+1 */ - Exc2_local[i] = extract_h( L_tmp ); /*Q_local */ + L_tmp = L_mult( Exc2_local[i], alpha ); /* Q_local + 16 */ + L_tmp = L_mac( L_tmp, randval, alpha_m1 ); /* Q_local + 16 */ + L_tmp3 = Mult_32_32( L_tmp, L_Noimix_fract ); /* Q_local+16+15-exp_sqr-15 =Q_local +1 */ + L_Exc2_local[i] = L_add( L_shr( L_tmp3, 1 ), Mpy_32_32( L_tmp, L_tmp_res ) ); // Q_local + 16 +15 -31 = Q_local + move32(); + } + Word32 max_val; + maximum_abs_32_fx( L_Exc2_local, L_FRAME, &max_val ); + Word16 shift = 0; + move16(); + IF( GT_32( max_val, ONE_IN_Q15 ) ) + { + shift = norm_l( max_val ); + shift = sub( Q31 - Q15, shift ); + *Q_exc = sub( Q_local, shift ); // Q_exc = Q_local -shift move16(); } *Q_stat_noise = Q_local; /* update for next call, routine can only be called once every frame */ move16(); - Qdiff = sub( Q_exc, Q_local ); /* local excitation and incoming excitation */ - Scale_sig( Exc2_local, L_FRAME, Qdiff ); - Copy( Exc2_local, exc2, L_FRAME ); + + Copy_Scale_sig_32_16( L_Exc2_local, exc2, L_FRAME, negate( shift ) ); // Q_exc /*--------------------------------------------------------------------* * Generate low-pass filtered version of ISP coefficients @@ -635,6 +640,7 @@ void stat_noise_uv_mod_ivas_fx( } } } + /*---------------------------------------------------------------------------* * calc_tilt() * diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index 2c72bba78..2fff712f9 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -1165,7 +1165,13 @@ ivas_error acelp_core_dec_fx( test(); IF( !( EQ_16( st->idchan, 1 ) && EQ_16( st->element_mode, IVAS_CPE_TD ) ) && NE_16( st->nelp_mode_dec, 1 ) && !( EQ_16( st->element_mode, IVAS_SCE ) && tdm_low_rate_mode ) ) { + Word16 temp_q_exc = st->Q_exc; + move16(); stat_noise_uv_dec_fx( st, lsp_new_fx, lsp_mid_fx, Aq_fx, exc2_fx, uc_two_stage_flag ); + IF( NE_16( temp_q_exc, st->Q_exc ) ) + { + scale_sig( exc_fx - L_EXC_MEM, L_EXC_MEM + st->L_frame, sub( st->Q_exc, temp_q_exc ) ); + } } /*------------------------------------------------------------* diff --git a/lib_dec/stat_noise_uv_dec_fx.c b/lib_dec/stat_noise_uv_dec_fx.c index d2fa36b9b..4e4d7ca30 100644 --- a/lib_dec/stat_noise_uv_dec_fx.c +++ b/lib_dec/stat_noise_uv_dec_fx.c @@ -76,7 +76,7 @@ void stat_noise_uv_dec_fx( IF( !st_fx->Opt_AMR_WB ) { - stat_noise_uv_mod_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count, + stat_noise_uv_mod_ivas_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, &st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count, st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx, &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge ); diff --git a/lib_enc/acelp_core_enc_fx.c b/lib_enc/acelp_core_enc_fx.c index ceba860a1..6ba21136e 100644 --- a/lib_enc/acelp_core_enc_fx.c +++ b/lib_enc/acelp_core_enc_fx.c @@ -1449,8 +1449,9 @@ ivas_error acelp_core_enc_ivas_fx( { /* exc2 buffer is needed only for updating of Aq[] which is needed for core switching */ Copy( exc_fx, exc2_fx, st->L_frame ); // Q_new - - stat_noise_uv_enc_ivas_fx( st, epsP, lsp_new, lsp_mid, Aq, exc2_fx, uc_two_stage_flag, Q_new ); + Word16 q_exc2 = Q_new; + move16(); + stat_noise_uv_enc_ivas_fx( st, epsP, lsp_new, lsp_mid, Aq, exc2_fx, uc_two_stage_flag, &q_exc2 ); } /*-----------------------------------------------------------------* diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 968ab0082..72137bdce 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -2189,7 +2189,7 @@ void stat_noise_uv_enc_ivas_fx( Word16 *Aq, /* i : A(z) quantized for the 4 subframes Q=12 */ Word16 *exc2, /* i/o: excitation buffer Q=Q_stat_noise */ const Word16 uc_two_stage_flag, /* o : flag undicating two-stage UC */ - Word16 Q_new ); + Word16 *Q_new ); void analy_sp_fx( const Word16 element_mode, /* i : element mode */ diff --git a/lib_enc/stat_noise_uv_enc_fx.c b/lib_enc/stat_noise_uv_enc_fx.c index 1445559a1..24932542c 100644 --- a/lib_enc/stat_noise_uv_enc_fx.c +++ b/lib_enc/stat_noise_uv_enc_fx.c @@ -118,7 +118,7 @@ void stat_noise_uv_enc_ivas_fx( Word16 *Aq, /* i : A(z) quantized for the 4 subframes Q=12 */ Word16 *exc2, /* i/o: excitation buffer Q=Q_stat_noise */ const Word16 uc_two_stage_flag, /* o : flag undicating two-stage UC */ - Word16 Q_new ) + Word16 *Q_new ) { Word16 noisiness = 0; move16(); -- GitLab From 2af7b50f076aabae91b52c2ba32beca40c9b892a Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 16 May 2025 12:32:36 +0530 Subject: [PATCH 544/698] Clang formatting changes --- lib_com/prot_fx.h | 2 +- lib_dec/stat_noise_uv_dec_fx.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index a1e633c17..c7d35daca 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -8234,7 +8234,7 @@ void stat_noise_uv_mod_ivas_fx( const Word16 *lsp_mid, /* i : LSP vector at 2nd sfr Q=15*/ Word16 *Aq, /* o : A(z) quantized for the 4 subframes Q=12*/ Word16 *exc2, /* i/o: excitation buffer Q=Q_exc*/ - Word16 *Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */ + Word16 *Q_exc, /* i : Q of exc2 excitation buffer [11..-1] expected */ const Word16 bfi, /* i : Bad frame indicator */ Word32 *ge_sm, /* i/o: smoothed excitation gain Q=Q_stat_noise_ge (6)*/ Word16 *uv_count, /* i/o: unvoiced counter */ diff --git a/lib_dec/stat_noise_uv_dec_fx.c b/lib_dec/stat_noise_uv_dec_fx.c index 4e4d7ca30..e2dc1460e 100644 --- a/lib_dec/stat_noise_uv_dec_fx.c +++ b/lib_dec/stat_noise_uv_dec_fx.c @@ -77,9 +77,9 @@ void stat_noise_uv_dec_fx( IF( !st_fx->Opt_AMR_WB ) { stat_noise_uv_mod_ivas_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, &st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count, - st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx, - &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, - &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge ); + st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx, + &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, + &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge ); } -- GitLab From 0a38b3a4e97fbdf7641bec3ca9173bf1e4131295 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 16 May 2025 14:45:18 +0530 Subject: [PATCH 545/698] Fix for EVS bitexactness issue --- lib_dec/stat_noise_uv_dec_fx.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib_dec/stat_noise_uv_dec_fx.c b/lib_dec/stat_noise_uv_dec_fx.c index e2dc1460e..c87e30ffe 100644 --- a/lib_dec/stat_noise_uv_dec_fx.c +++ b/lib_dec/stat_noise_uv_dec_fx.c @@ -76,10 +76,20 @@ void stat_noise_uv_dec_fx( IF( !st_fx->Opt_AMR_WB ) { - stat_noise_uv_mod_ivas_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, &st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count, - st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx, - &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, - &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge ); + IF( st_fx->element_mode > EVS_MONO ) + { + stat_noise_uv_mod_ivas_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, &st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count, + st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx, + &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, + &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge ); + } + ELSE + { + stat_noise_uv_mod_fx( coder_type, noisiness, st_fx->lsp_old_fx, lsp_new, lsp_mid, Aq, exc2, st_fx->Q_exc, 0, &st_fx->ge_sm_fx, &st_fx->uv_count, &st_fx->act_count, + st_fx->lspold_s_fx, &st_fx->noimix_seed, &st_fx->min_alpha_fx, + &st_fx->exc_pe_fx, st_fx->core_brate, st_fx->bwidth, + &st_fx->Q_stat_noise, &st_fx->Q_stat_noise_ge ); + } } -- GitLab From edf16d3595f305d00d4c2a70b2ae48b4f2b7ed93 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 16 May 2025 16:15:17 +0530 Subject: [PATCH 546/698] Fix for 3GPP issue 1533: Slightly high MLD for one case of MASA LTV EXT output in BASOP decoder Link #1533 --- lib_dec/ivas_stereo_cng_dec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec.c index 6b8a8f949..8ec147ff7 100644 --- a/lib_dec/ivas_stereo_cng_dec.c +++ b/lib_dec/ivas_stereo_cng_dec.c @@ -1368,8 +1368,8 @@ static void FindEmEs_fx( temp_q = 0; move16(); } - log_res = BASOP_Util_Log2( square_res ); - es_em_fx = Mpy_32_32( log_res, 1616107501 ); // 25+30-31 + log_res = L_add( BASOP_Util_Log2( square_res ), L_shl( temp_q, Q25 ) ); + es_em_fx = Mpy_32_32( log_res, 1616107501 /* 5 * (ln(2)/ln(10)) */ ); // 25+30-31 /* long-term estimate */ *lt_es_em_fx = L_add( Mpy_32_32( 858993459, *lt_es_em_fx ), Mpy_32_32( 1288490188, es_em_fx ) ); /* Q24 */ move32(); -- GitLab From fefa52c6b7a9fbfa267a18ad8b031900930c3f4c Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 May 2025 12:21:52 +0200 Subject: [PATCH 547/698] port float MR !1357 --- lib_com/options.h | 1 + lib_dec/ivas_jbm_dec_fx.c | 4 ++++ lib_dec/ivas_osba_dec_fx.c | 15 ++++++++++++++- lib_rend/ivas_output_init.c | 6 ++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 25c48c3c5..2e8fa8802 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -121,6 +121,7 @@ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ +#define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 246befb84..fa0a1e630 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1877,7 +1877,11 @@ ivas_error ivas_jbm_dec_render_fx( { FOR( n = 0; n < st_ivas->hTcBuffer->nchan_buffer_full; n++ ) { +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + p_tc_fx[n] = &p_output_fx[n][st_ivas->hTcBuffer->n_samples_rendered]; +#else p_tc_fx[n] = p_output_fx[n]; +#endif } FOR( n = 0; n < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; n++ ) diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c index c96a91d58..8445d96a3 100644 --- a/lib_dec/ivas_osba_dec_fx.c +++ b/lib_dec/ivas_osba_dec_fx.c @@ -297,10 +297,23 @@ ivas_error ivas_osba_render_sf_fx( p_output_ism[n] = &output_ism[n][0]; } - FOR( n = 0; n < st_ivas->nchan_ism; n++ ) +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + if ( !st_ivas->hDecoderConfig->Opt_tsm ) { + int16_t tc_offset; + tc_offset = st_ivas->hTcBuffer->n_samples_rendered; +#endif + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + v_shr( &p_output[n][tc_offset], Q11 - Q11, &output_ism[n][tc_offset], nSamplesAsked ); // Q11 +#else v_shr( p_output[n], Q11 - Q11, output_ism[n], nSamplesAsked ); // Q11 +#endif + } +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS } +#endif IF( NE_32( ( error = ivas_sba_dec_render_fx( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailableNext, p_output ) ), IVAS_ERR_OK ) ) { diff --git a/lib_rend/ivas_output_init.c b/lib_rend/ivas_output_init.c index c5271d065..ed51fbdd2 100644 --- a/lib_rend/ivas_output_init.c +++ b/lib_rend/ivas_output_init.c @@ -386,6 +386,12 @@ Word16 ivas_get_nchan_buffers_dec( { nchan_out_buff = shl( CPE_CHANNELS, 1 ); } +#ifdef NONBE_FIX_979_OSBA_STEREO_5MS + else if ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( shl( BINAURAL_CHANNELS, 1 ), 2 ) ); + } +#endif ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) { nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); -- GitLab From f697ed7d50ad46cbf0f0957fcf9c12d10e00ed2f Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 May 2025 15:08:10 +0200 Subject: [PATCH 548/698] port float MR !1364 --- lib_com/options.h | 1 + lib_dec/ivas_ism_param_dec_fx.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 2e8fa8802..f7e1e062a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -122,6 +122,7 @@ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ +#define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_ism_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c index d7ec5b6e7..8af9b8cec 100644 --- a/lib_dec/ivas_ism_param_dec_fx.c +++ b/lib_dec/ivas_ism_param_dec_fx.c @@ -939,7 +939,11 @@ void ivas_ism_dec_digest_tc_fx( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_STEREO ) || ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && st_ivas->hDecoderConfig->Opt_Headrotation == 0 ) ) { - Word16 i, num_objects; +#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS + int16_t i; +#else + int16_t i, num_objects; +#endif Word32 azimuth_fx, elevation_fx; /* we have a full frame interpolator, adapt it */ @@ -981,9 +985,14 @@ void ivas_ism_dec_digest_tc_fx( } /* also get the gains here */ +#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS + FOR ( i = 0; i < st_ivas->nchan_ism; i++ ) +#else num_objects = st_ivas->nchan_transport; move16(); - FOR( i = 0; i < num_objects; i++ ) + FOR ( i = 0; i < num_objects; i++ ) +#endif + FOR( i = 0; i < num_objects; i++ ) { Copy32( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmRendererData->prev_gains_fx[i], MAX_OUTPUT_CHANNELS ); -- GitLab From 10846450a3c531c5002be4cf5eeb0ea61eabdde9 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 16 May 2025 15:22:29 +0200 Subject: [PATCH 549/698] port float MR 1318 to main-pc --- lib_com/ivas_prot_fx.h | 10 ++--- lib_com/options.h | 1 + lib_dec/fd_cng_dec_fx.c | 38 ++++++++++++++++++- lib_dec/ivas_dirac_dec_fx.c | 8 ++++ lib_dec/ivas_sba_dec_fx.c | 4 ++ .../ivas_dirac_dec_binaural_functions_fx.c | 16 ++++++++ lib_rend/lib_rend.c | 2 + 7 files changed, 70 insertions(+), 9 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 6c9166111..1d593881a 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -4999,13 +4999,9 @@ void generate_masking_noise_lb_dirac_fx( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered */ - const Word16 cna_flag /* i : CNA flag for LB and HB */ -); - -void generate_masking_noise_lb_dirac_fx( - HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ - Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ - const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered */ +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i : common spatial rendering parameters handle */ +#endif const Word16 cna_flag /* i : CNA flag for LB and HB */ ); diff --git a/lib_com/options.h b/lib_com/options.h index 25c48c3c5..5e6b03299 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -121,6 +121,7 @@ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ +#define NONBE_FIX_951_MCMASA_5MS_RENDERING /* Nokia: issue #951: Differences for 5ms and 20ms rendering for McMASA at 13.2 kbps to BINAURAL */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 4c42a7959..6d73aa28c 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -5447,7 +5447,10 @@ void generate_masking_noise_lb_dirac_fx( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA Q11*/ const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered Q0*/ - const Word16 cna_flag /* i : CNA flag for LB and HB Q0*/ +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i : common spatial rendering parameters handle */ +#endif + const Word16 cna_flag /* i : CNA flag for LB and HB Q0*/ ) { Word16 i; @@ -5465,7 +5468,7 @@ void generate_masking_noise_lb_dirac_fx( /* Init */ scale = 0; move32(); - n_samples_out = i_mult( shr( hFdCngCom->frameSize, 4 ), nCldfbTs ); + n_samples_out = i_mult( shr( hFdCngCom->frameSize, 4 /* DEFAULT_JBM_CLDFB_TIMESLOTS */ ), nCldfbTs ); n_samples_start = 0; move16(); Word16 exp_out = Q11; @@ -5498,6 +5501,13 @@ void generate_masking_noise_lb_dirac_fx( test(); IF( cna_flag && tdBuffer != NULL ) { +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + Word16 cur_subframe; + Word16 cur_subframe_start_outfs; + Word16 cur_subframe_start_cngfs; + Word16 slot_size_cng; +#endif + WHILE( n_samples_out > 0 ) { n_samples_out_loop = s_min( hFdCngCom->frameSize, n_samples_out ); @@ -5569,6 +5579,30 @@ void generate_masking_noise_lb_dirac_fx( n_samples_out = sub( n_samples_out, hFdCngCom->frameSize ); n_samples_start = add( n_samples_start, hFdCngCom->frameSize ); } + +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + /* move generated noise to the 5ms subframe starts in the tc buffer according to the output sampling frequency to avoid + overwriting it with the synthesis in case of shared tc and synth channel memory, i.e. non-TSM mode */ + slot_size_cng = shr( hFdCngCom->frameSize, 4 /* DEFAULT_JBM_CLDFB_TIMESLOTS */ ); + /* move start indices forward to the end of the last subframe */ + cur_subframe_start_outfs = mult( nCldfbTs, hSpatParamRendCom->slot_size ); + cur_subframe_start_cngfs = mult( nCldfbTs, slot_size_cng ); + + /* go from the last subframe back and move the LB noise */ + FOR( cur_subframe = sub( hSpatParamRendCom->nb_subframes, 1 ); cur_subframe >= 0; cur_subframe-- ) + { + Word16 move_size, subframe_size_outfs; + move_size = mult( slot_size_cng, hSpatParamRendCom->subframe_nbslots[cur_subframe] ); + subframe_size_outfs = mult( hSpatParamRendCom->subframe_nbslots[cur_subframe], hSpatParamRendCom->slot_size ); + cur_subframe_start_outfs = sub( cur_subframe_start_outfs, mult( hSpatParamRendCom->subframe_nbslots[cur_subframe], hSpatParamRendCom->slot_size ) ); + cur_subframe_start_cngfs = sub( cur_subframe_start_cngfs, mult( hSpatParamRendCom->subframe_nbslots[cur_subframe], slot_size_cng ) ); + /* move cna */ + Copy32( tdBuffer + cur_subframe_start_cngfs, tdBuffer + cur_subframe_start_outfs, move_size ); + + /* set everything else to zero */ + set_zero_fx( tdBuffer + cur_subframe_start_outfs + move_size, sub( subframe_size_outfs, move_size ) ); + } +#endif } pop_wmops(); diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 44a024e54..feca814c8 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2871,10 +2871,18 @@ void ivas_dirac_dec_render_sf_fx( test(); generate_masking_noise_dirac_ivas_fx( st->hFdCngDec->hFdCngCom, st_ivas->cldfbAnaDec[1], +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + &st_ivas->hTcBuffer->tc_fx[1][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered], +#else st_ivas->hTcBuffer->tc_fx[1], +#endif Cldfb_RealBuffer_fx[1][0], Cldfb_ImagBuffer_fx[1][0], +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + slot_idx, +#else index_slot, +#endif st->cna_dirac_flag && st->flag_cna, ( ( ( st->core_brate == FRAME_NO_DATA ) || EQ_32( st->core_brate, SID_2k40 ) ) ) && EQ_16( st->cng_type, FD_CNG ) && st->cng_sba_flag, Q_input, &q_temp_cldfb ); Scale_sig32( Cldfb_RealBuffer_fx[1][0], CLDFB_NO_CHANNELS_MAX, sub( Q6, q_temp_cldfb ) ); // Q6 diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index b5d494eae..cc78652e6 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -894,7 +894,11 @@ void ivas_sba_dec_digest_tc_fx( Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, sub( norm_s( sub( st->hFdCngDec->hFdCngCom->A_cng[0], 1 ) ), 2 ) ); /*Q12 -> Q13*/ +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + generate_masking_noise_lb_dirac_fx( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st_ivas->hSpatParamRendCom, st->cna_dirac_flag && st->flag_cna ); +#else generate_masking_noise_lb_dirac_fx( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st->cna_dirac_flag && st->flag_cna ); +#endif } return; diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 32bcb732e..408f1cb1b 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -830,17 +830,29 @@ static void ivas_dirac_dec_binaural_internal_fx( IF( st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) { Word16 numCoreBands, b; +#ifndef NONBE_FIX_951_MCMASA_5MS_RENDERING Word16 slotInFrame; +#endif numCoreBands = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->numCoreBands; move16(); +#ifndef NONBE_FIX_951_MCMASA_5MS_RENDERING slotInFrame = add( hSpatParamRendCom->slots_rendered, slot ); +#endif generate_masking_noise_dirac_ivas_fx( st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom, st_ivas->cldfbAnaDec[1], +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + &st_ivas->hTcBuffer->tc_fx[nchan_transport][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered], +#else st_ivas->hTcBuffer->tc_fx[nchan_transport], +#endif Cldfb_RealBuffer_in_fx[2][slot], Cldfb_ImagBuffer_in_fx[2][slot], +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + slot, +#else slotInFrame, +#endif st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->hSCE[0]->hCoreCoder[0]->flag_cna, ( st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == FRAME_NO_DATA || st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == SID_2k40 ) && ( st_ivas->hSCE[0]->hCoreCoder[0]->cng_type == FD_CNG ) && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag, 11, &q_cldfb[2][slot] ); @@ -849,7 +861,11 @@ static void ivas_dirac_dec_binaural_internal_fx( st_ivas->cldfbAnaDec[1], /*nothing will be analyzed, just get cnst*/ NULL, Cldfb_RealBuffer_in_fx[1][slot], Cldfb_ImagBuffer_in_fx[1][slot], +#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING + slot, +#else slotInFrame, +#endif st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->hSCE[0]->hCoreCoder[0]->flag_cna, ( st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == FRAME_NO_DATA || st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == SID_2k40 ) && ( st_ivas->hSCE[0]->hCoreCoder[0]->cng_type == FD_CNG ) && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag, 0, &q_cldfb[1][slot] ); diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 4b4d5c456..c3be6c73b 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -525,6 +525,7 @@ static void accumulate2dArrayToBuffer_fx( * In-place saturation control for multichannel buffers with adaptive release time *-------------------------------------------------------------------*/ +#ifndef DISABLE_LIMITER /*! r: number of clipped output samples */ static Word32 limitRendererOutput_fx( IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ @@ -568,6 +569,7 @@ static Word32 limitRendererOutput_fx( return numClipping; } +#endif /*-------------------------------------------------------------------* * validateOutputAudioConfig() -- GitLab From 7e900aab167a3fae3c04afe2dce83068b804a76b Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 May 2025 16:10:14 +0200 Subject: [PATCH 550/698] fix formatting --- lib_dec/ivas_ism_param_dec_fx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_ism_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c index 8af9b8cec..a192625fa 100644 --- a/lib_dec/ivas_ism_param_dec_fx.c +++ b/lib_dec/ivas_ism_param_dec_fx.c @@ -986,13 +986,13 @@ void ivas_ism_dec_digest_tc_fx( /* also get the gains here */ #ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS - FOR ( i = 0; i < st_ivas->nchan_ism; i++ ) + FOR( i = 0; i < st_ivas->nchan_ism; i++ ) #else num_objects = st_ivas->nchan_transport; move16(); - FOR ( i = 0; i < num_objects; i++ ) + FOR( i = 0; i < num_objects; i++ ) #endif - FOR( i = 0; i < num_objects; i++ ) + FOR( i = 0; i < num_objects; i++ ) { Copy32( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmRendererData->prev_gains_fx[i], MAX_OUTPUT_CHANNELS ); -- GitLab From e80a50ee2068a6262882ec0af8a9ed6cc8e4e470 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 16 May 2025 16:25:47 +0200 Subject: [PATCH 551/698] fix compile error --- lib_dec/ivas_ism_param_dec_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_dec/ivas_ism_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c index a192625fa..1485c09c1 100644 --- a/lib_dec/ivas_ism_param_dec_fx.c +++ b/lib_dec/ivas_ism_param_dec_fx.c @@ -992,7 +992,6 @@ void ivas_ism_dec_digest_tc_fx( move16(); FOR( i = 0; i < num_objects; i++ ) #endif - FOR( i = 0; i < num_objects; i++ ) { Copy32( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmRendererData->prev_gains_fx[i], MAX_OUTPUT_CHANNELS ); -- GitLab From 74a6561c0a271bc16fef1ad997c70111b4edcc4a Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Fri, 16 May 2025 17:43:40 +0200 Subject: [PATCH 552/698] Aligned on branch 947-issues_with_stereo_dmx_evs. --- lib_com/options.h | 12 +- lib_enc/ivas_rom_enc.h | 6 + lib_enc/ivas_rom_enc_fx.c | 66 +++++++++- lib_enc/ivas_stereo_dmx_evs_fx.c | 200 +++++++++++++++++++++++++++++-- 4 files changed, 272 insertions(+), 12 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 25c48c3c5..dbffb4547 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -119,8 +119,16 @@ #endif -#define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ -#define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ +#define BE_FIX_567_DOUBLE_STEREO_DMX /* NTT: Fix formal issues */ +#define NONBE_FIX_567_DOUBLE_STEREO_DMX /* Orange: Double-precision replaced by single-precision */ +#define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC +#define NONBE_FIX_947_STEREO_DMX_ROMOPT /* Orange: ROM optimisation for POC*/ +#endif +#define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA +#define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ +#endif /* #################### End BASOP porting switches ############################ */ diff --git a/lib_enc/ivas_rom_enc.h b/lib_enc/ivas_rom_enc.h index 27fa27463..bc62b251a 100644 --- a/lib_enc/ivas_rom_enc.h +++ b/lib_enc/ivas_rom_enc.h @@ -112,9 +112,15 @@ extern const UWord16 ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE] * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC +#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT +extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 2]; +extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 2]; +extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 2]; +#else extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1]; extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1]; extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1]; +#endif #else extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4]; extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 4]; diff --git a/lib_enc/ivas_rom_enc_fx.c b/lib_enc/ivas_rom_enc_fx.c index 9b1b4dd23..520dbe928 100644 --- a/lib_enc/ivas_rom_enc_fx.c +++ b/lib_enc/ivas_rom_enc_fx.c @@ -509,7 +509,67 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ - #ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC + +#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT +// Q31 + const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 2] = { + 204411, 817566, 1839231, 3269018, 5106382, 7350624, 10000889, 13056168, 16515298, 20376962, + 24639688, 29301856, 34361688, 39817260, 45666492, 51907160, 58536884, 65553148, 72953272, 80734440, + 88893688, 97427912, 106333872, 115608160, 125247248, 135247472, 145605040, 156315968, 167376224, 178781552, + 190527648, 202610016, 215024064, 227765072, 240828160, 254208400, 267900656, 281899744, 296200320, 310796928, + 325684032, 340855968, 356306944, 372031072, 388022368, 404274752, 420782016, 437537920, 454536032, 471769920, + 489232992, 506918624, 524820096, 542930496, 561243072, 579750720, 598446528, 617323264, 636373760, 655590784, + 674967040, 694495104, 714167552, 733976960, 753915712, 773976192, 794150848, 814431936, 834811776, 855282624, + 875836544, 896465920, 917162752, 937919168, 958727360, 979579264, 1000467072, 1021382784, 1042318400, 1063266048 + }; + // Q31 + const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 2] = { + 51423, 205686, 462776, 822667, 1285325, 1850705, 2518754, 3289407, 4162591, 5138222, + 6216206, 7396441, 8678813, 10063200, 11549468, 13137475, 14827070, 16618091, 18510366, 20503712, + 22597942, 24792852, 27088232, 29483864, 31979518, 34574956, 37269924, 40064172, 42957428, 45949412, + 49039844, 52228420, 55514844, 58898792, 62379948, 65957972, 69632528, 73403256, 77269800, 81231792, + 85288840, 89440576, 93686584, 98026464, 102459800, 106986176, 111605144, 116316264, 121119096, 126013168, + 130998016, 136073168, 141238128, 146492400, 151835488, 157266880, 162786064, 168392496, 174085632, 179864960, + 185729888, 191679888, 197714368, 203832752, 210034448, 216318896, 222685456, 229133536, 235662512, 242271760, + 248960656, 255728544, 262574784, 269498720, 276499680, 283577024, 290730048, 297958048, 305260384, 312636288, + 320085120, 327606144, 335198624, 342861856, 350595072, 358397568, 366268576, 374207360, 382213120, 390285152, + 398422624, 406624768, 414890848, 423220000, 431611456, 440064448, 448578112, 457151680, 465784288, 474475136, + 483223360, 492028160, 500888704, 509804096, 518773504, 527796064, 536870912, 545997184, 555174016, 564400512, + 573675776, 582998976, 592369152, 601785472, 611246976, 620752768, 630301952, 639893568, 649526784, 659200640, + 668914176, 678666496, 688456704, 698283776, 708146816, 718044864, 727976960, 737942208, 747939584, 757968192, + 768027072, 778115200, 788231680, 798375424, 808545600, 818741184, 828961216, 839204672, 849470528, 859757952, + 870065856, 880393216, 890739136, 901102592, 911482560, 921878080, 932288192, 942711808, 953147968, 963595648, + 974053952, 984521728, 994998080, 1005481984, 1015972480, 1026468416, 1036968960, 1047472960, 1057979520, 1068487552 + }; + // Q31 + const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 2] = { + 22902, 91608, 206114, 366416, 572507, 824378, 1122018, 1465415, 1854554, 2289418, + 2769989, 3296246, 3868167, 4485728, 5148901, 5857660, 6611973, 7411808, 8257132, 9147909, + 10084099, 11065664, 12092561, 13164746, 14282175, 15444799, 16652568, 17905432, 19203336, 20546226, + 21934042, 23366728, 24844222, 26366462, 27933380, 29544910, 31200986, 32901534, 34646484, 36435760, + 38269288, 40146984, 42068776, 44034576, 46044300, 48097868, 50195188, 52336168, 54520724, 56748756, + 59020172, 61334876, 63692768, 66093744, 68537712, 71024552, 73554176, 76126456, 78741304, 81398592, + 84098208, 86840048, 89623984, 92449904, 95317680, 98227200, 101178336, 104170952, 107204936, 110280144, + 113396456, 116553736, 119751848, 122990656, 126270024, 129589808, 132949864, 136350064, 139790240, 143270256, + 146789968, 150349232, 153947888, 157585760, 161262736, 164978624, 168733280, 172526544, 176358256, 180228256, + 184136368, 188082416, 192066256, 196087712, 200146592, 204242752, 208376000, 212546160, 216753072, 220996528, + 225276352, 229592384, 233944432, 238332288, 242755792, 247214752, 251708960, 256238240, 260802384, 265401216, + 270034528, 274702112, 279403808, 284139392, 288908640, 293711360, 298547360, 303416448, 308318400, 313252960, + 318220000, 323219264, 328250528, 333313632, 338408288, 343534304, 348691488, 353879616, 359098432, 364347744, + 369627296, 374936928, 380276320, 385645312, 391043680, 396471168, 401927520, 407412544, 412925984, 418467616, + 424037216, 429634528, 435259328, 440911328, 446590336, 452296128, 458028416, 463786944, 469571520, 475381856, + 481217728, 487078848, 492965024, 498875968, 504811424, 510771168, 516754912, 522762432, 528793440, 534847712, + 540924928, 547024960, 553147392, 559292032, 565458624, 571646912, 577856640, 584087488, 590339264, 596611584, + 602904320, 609217152, 615549760, 621901888, 628273344, 634663808, 641072960, 647500608, 653946432, 660410176, + 666891520, 673390208, 679906048, 686438592, 692987712, 699553088, 706134400, 712731392, 719343808, 725971328, + 732613696, 739270592, 745941760, 752626880, 759325760, 766038016, 772763456, 779501696, 786252480, 793015488, + 799790528, 806577216, 813375360, 820184576, 827004608, 833835136, 840675968, 847526656, 854387072, 861256832, + 868135616, 875023168, 881919232, 888823488, 895735616, 902655296, 909582336, 916516352, 923457088, 930404224, + 937357504, 944316544, 951281152, 958250944, 965225728, 972205056, 979188800, 986176512, 993168000, 1000162880, + 1007160960, 1014161856, 1021165248, 1028170944, 1035178560, 1042187776, 1049198400, 1056210048, 1063222464, 1070235328 + }; +#else // Q31 const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1] = { 204411, 817566, 1839231, 3269018, 5106382, 7350624, 10000889, 13056168, 16515298, 20376962, @@ -615,7 +675,9 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q 2138335743, 2139226495, 2140071807, 2140871679, 2141625983, 2142334719, 2142997887, 2143615487, 2144187391, 2144713599, 2145194239, 2145629055, 2146018175, 2146361599, 2146659327, 2146911103, 2147117183, 2147277567, 2147391999, 2147460735 }; - #else +#endif + +#else // Q31 const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4] = { 3309988, 29667578, 81733728, 158226416, 257262128, 376402368, 512713184, 662838656, 823081792, 989497088, diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index f8731bd0b..e81ec3413 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -101,7 +101,10 @@ #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576 #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA -#define STEREO_DMX_EVS_FAD_R 3 +#define STEREO_DMX_EVS_FAD_R 3 +#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT +#define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */ +#endif #define STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 29491 // 0.9f #define STEREO_DMX_EVS_SGC_GR_S 32919 // 1.00461543f #define STEREO_DMX_EVS_SGC_GIR_S 32617 // 1/1.00461543f @@ -1933,14 +1936,60 @@ static void weighted_ave_fx( const Word32 wnd_fx[] /* i : window coef Q31 */ ) { +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC + +#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT + Word16 i, j, len, len2; + Word32 gain_tmp_fx = 0, gain_sub_fx; + move32(); + + len = shr( input_frame, 1 ); + len2 = shr( input_frame, 2 ); + gain_sub_fx = L_sub( gain_fx, old_gain_fx ); + + FOR( i = 0; i < len2; i++ ) + { + gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 + dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_tmp_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 + move32(); + } + FOR( ; i < len; i++ ) + { + j = add( i, 1 ); + gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, L_sub( MAX_32, wnd_fx[sub( len, j )] ) ) ); // Q31 + dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_tmp_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 + move32(); + } + FOR( ; i < input_frame; i++ ) + { + dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 + move32(); + } +#else Word16 i, len; Word32 gain_tmp_fx = 0, gain_sub_fx; move32(); -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC len = shr( input_frame, 1 ); + gain_sub_fx = L_sub( gain_fx, old_gain_fx ); + FOR( i = 0; i < len; i++ ) + { + gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 + dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_tmp_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 + move32(); + } + FOR( ; i < input_frame; i++ ) + { + dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 + move32(); + } +#endif + #else + + Word16 i, len; + Word32 gain_tmp_fx = 0, gain_sub_fx; + move32(); len = shr( input_frame, 4 ); -#endif gain_sub_fx = L_sub( gain_fx, old_gain_fx ); FOR( i = 0; i < len; i++ ) { @@ -1954,6 +2003,8 @@ static void weighted_ave_fx( move32(); } +#endif + return; } @@ -2144,14 +2195,64 @@ static void adapt_gain_fx( const Word32 wnd_fx[] /* i : window coef Q31 */ ) { +#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC + +#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT + Word16 i, j, len, len2; + Word32 gain_tmp_fx, gain_sub_fx; + + len = shr( input_frame, 1 ); + len2 = shr( input_frame, 2 ); + gain_sub_fx = L_sub( gain_fx, old_gain_fx ); + + FOR( i = 0; i < len2; i++ ) + { + gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 + dst_fx[i] = Mpy_32_32( src_fx[i], gain_tmp_fx ); // Q16 + move32(); + } + FOR( ; i < len; i++ ) + { + j = add( i, 1 ); + gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, L_sub( MAX_32, wnd_fx[sub( len, j )] ) ) ); // Q31 + dst_fx[i] = Mpy_32_32( src_fx[i], gain_tmp_fx ); // Q16 + move32(); + } + FOR( ; i < input_frame; i++ ) + { + dst_fx[i] = Mpy_32_32( src_fx[i], gain_fx ); // Q16 + move32(); + } +#else Word16 i, len; Word32 gain_tmp_fx, gain_sub_fx; -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC len = shr( input_frame, 1 ); + + // gain_sub = gain - old_gain; + gain_sub_fx = L_sub( gain_fx, old_gain_fx ); // Q31 + + FOR( i = 0; i < len; i++ ) + { + // gain_tmp = old_gain + gain_sub * wnd[i]; + gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 // dst[i] = src[i] * gain_tmp; + dst_fx[i] = Mpy_32_32( src_fx[i], gain_tmp_fx ); // Q16 + move32(); + } + FOR( ; i < input_frame; i++ ) + { + // dst[i] = src[i] * gain; + dst_fx[i] = Mpy_32_32( src_fx[i], gain_fx ); // Q16 + move32(); + } +#endif + #else + + Word16 i, len; + Word32 gain_tmp_fx, gain_sub_fx; + len = shr( input_frame, 4 ); -#endif // gain_sub = gain - old_gain; gain_sub_fx = L_sub( gain_fx, old_gain_fx ); // Q31 @@ -2169,6 +2270,7 @@ static void adapt_gain_fx( dst_fx[i] = Mpy_32_32( src_fx[i], gain_fx ); // Q16 move32(); } +#endif return; } @@ -2327,10 +2429,16 @@ void stereo_dmx_evs_enc_fx( { #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA Word16 n; - Word16 dmx_weight, corr; // Q15 - Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11 + Word16 dmx_weight, corr; // Q15 +#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT + Word16 k, m, pha_len, fad_len, sbfad_len; +#else Word16 k, m, pha_len, fad_len; +#endif + + Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11 + Word32 mem_prev[STEREO_DMX_EVS_FAD_LEN_MAX], data_mem[STEREO_DMX_EVS_DATA_LEN_MAX]; // Q11 Word32 *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_data; @@ -2725,6 +2833,9 @@ void stereo_dmx_evs_enc_fx( ELSE { hStereoDmxEVS->hPHA->n_fad_g = sub( input_frame, add( hStereoDmxEVS->hPHA->n_fad_g, 1 ) ); +#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT + hStereoDmxEVS->hPHA->n_fad_cnt = 0; +#else IF( EQ_16( is_transient, 1 ) ) { hStereoDmxEVS->hPHA->n_fad_cnt = 0; @@ -2734,6 +2845,7 @@ void stereo_dmx_evs_enc_fx( { hStereoDmxEVS->hPHA->n_fad_cnt = sub( n_fad_r, hStereoDmxEVS->hPHA->n_fad_cnt ); } +#endif } } ELSE IF( is_transient ) @@ -2754,6 +2866,73 @@ void stereo_dmx_evs_enc_fx( move16(); m_fad_g = sub( input_frame, add( n_fad_g, 1 ) ); +#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT + IF( EQ_16( n_fad_r, 1 ) ) + { + n_fad_cnt = 0; + move16(); + FOR( n = 0; n < fad_len; n++ ) + { + p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; + n_fad_g = add( n_fad_g, 1 ); + + p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 + m_fad_g = sub( m_fad_g, 1 ); + } + } + ELSE + { + n = 0; + sbfad_len = 0; + move16(); + move16(); + IF( NE_16( n_fad_cnt, 0 ) ) + { + sbfad_len = s_min( fad_len, sub( n_fad_r, n_fad_cnt ) ); + FOR( ; n < sbfad_len; n++ ) + { + p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; + p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 + } + n_fad_cnt = 0; + move16(); + n_fad_g = add( n_fad_g, 1 ); + m_fad_g = sub( m_fad_g, 1 ); + } + + sbfad_len = sub( fad_len, sbfad_len ); + IF( EQ_16( n_fad_r, STEREO_DMX_EVS_FAD_R ) ) + { + sbfad_len = L_mult( sbfad_len, STEREO_DMX_EVS_FAD_IR ) >> 16; + } + + FOR( k = 0; k < sbfad_len; k++ ) + { + FOR( m = 0; m < n_fad_r; m++ ) + { + p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; + p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 + n = add( n, 1 ); + } + n_fad_g = add( n_fad_g, 1 ); + m_fad_g = sub( m_fad_g, 1 ); + } + + FOR( ; n < fad_len; n++ ) + { + p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; + p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 + n_fad_cnt = add( n_fad_cnt, 1 ); + IF( GE_16( n_fad_cnt, n_fad_r ) ) + { + n_fad_cnt = 0; + move16(); + n_fad_g = add( n_fad_g, 1 ); + m_fad_g = sub( m_fad_g, 1 ); + } + } + } +#else FOR( n = 0; n < fad_len; n++ ) { p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; @@ -2768,6 +2947,7 @@ void stereo_dmx_evs_enc_fx( m_fad_g = sub( m_fad_g, 1 ); } } +#endif hStereoDmxEVS->hPHA->n_fad_g = n_fad_g; hStereoDmxEVS->hPHA->n_fad_cnt = n_fad_cnt; @@ -3558,9 +3738,13 @@ ivas_error stereo_dmx_evs_init_encoder_fx( IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid sample rate\n" ); BREAK; } -#endif + fad_len = hStereoDmxEVS->hPHA->fad_len_prc; + move16(); +#else fad_len = input_frame; move16(); +#endif + fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; move32(); // fad_r = 1.0f / (float) ( fad_len + 1 ); -- GitLab From 720708ed980a4b3b7974661673a6a13b924bedac Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 19 May 2025 11:35:14 +0530 Subject: [PATCH 553/698] Removal of unused float functions and replacing C datatypes with Basop Datatypes --- lib_com/bitstream.c | 66 ++--- lib_com/core_com_config.c | 6 +- lib_com/ivas_cnst.h | 8 +- lib_com/longarith.c | 4 +- lib_com/prot_fx.h | 463 +++++++++++++------------------- lib_com/tns_base.c | 82 +----- lib_com/tools.c | 195 +++----------- lib_com/tools_fx.c | 14 +- lib_dec/dec_acelp_tcx_main_fx.c | 2 +- lib_enc/acelp_core_enc_fx.c | 3 - lib_enc/evs_enc_fx.c | 2 +- lib_enc/prot_fx_enc.h | 1 - lib_enc/rom_enc.h | 1 - lib_rend/ivas_rom_rend.h | 4 - lib_rend/ivas_rom_rend_fx.c | 36 --- 15 files changed, 290 insertions(+), 597 deletions(-) diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index d8d4563ed..385000139 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -100,7 +100,7 @@ static Word16 rate2AMRWB_IOmode( *-------------------------------------------------------------------*/ Word16 rate2EVSmode_float( const Word32 brate, /* i : bitrate */ - int16_t *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */ + Word16 *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */ ) { if ( is_amr_wb != NULL ) @@ -575,8 +575,8 @@ Word16 get_ivas_max_num_indices_fx( *-----------------------------------------------------------------------*/ /*! r: maximum number of indices */ -int16_t get_BWE_max_num_indices( - const int32_t extl_brate /* i : extensiona layer bitrate */ +Word16 get_BWE_max_num_indices( + const Word32 extl_brate /* i : extensiona layer bitrate */ ) { /* set the maximum number of indices in the BWE */ @@ -787,10 +787,10 @@ Word16 get_ivas_max_num_indices_metadata_fx( void move_indices( INDICE_HANDLE old_ind_list, /* i/o: old location of indices */ INDICE_HANDLE new_ind_list, /* i/o: new location of indices */ - const int16_t nb_indices /* i : number of moved indices */ + const Word16 nb_indices /* i : number of moved indices */ ) { - int16_t i; + Word16 i; if ( new_ind_list < old_ind_list ) { @@ -1092,14 +1092,14 @@ ivas_error push_next_bits( *-------------------------------------------------------------------*/ /*! r: result: index of the indice in the list, -1 if not found */ -int16_t find_indice( +Word16 find_indice( BSTR_ENC_HANDLE hBstr, /* i : encoder bitstream handle */ - const int16_t id, /* i : ID of the indice */ - uint16_t *value, /* o : value of the quantized indice */ - int16_t *nb_bits /* o : number of bits used to quantize the indice */ + const Word16 id, /* i : ID of the indice */ + UWord16 *value, /* o : value of the quantized indice */ + Word16 *nb_bits /* o : number of bits used to quantize the indice */ ) { - int16_t i; + Word16 i; for ( i = 0; i < hBstr->nb_ind_tot; i++ ) { @@ -1122,12 +1122,12 @@ int16_t find_indice( *-------------------------------------------------------------------*/ /*! r: number of deleted indices */ -uint16_t delete_indice( +UWord16 delete_indice( BSTR_ENC_HANDLE hBstr, /* i : encoder bitstream handle */ - const int16_t id /* i : ID of the indice */ + const Word16 id /* i : ID of the indice */ ) { - int16_t i, j; + Word16 i, j; j = 0; for ( i = 0; i < hBstr->nb_ind_tot; i++ ) @@ -1168,14 +1168,14 @@ uint16_t delete_indice( *-------------------------------------------------------------------*/ /*! r: value of the indice */ -uint16_t get_next_indice( +UWord16 get_next_indice( Decoder_State *st, /* i/o: decoder state structure */ - int16_t nb_bits /* i : number of bits that were used to quantize the indice */ + Word16 nb_bits /* i : number of bits that were used to quantize the indice */ ) { - uint16_t value; - int16_t i; - int32_t nbits_total; + UWord16 value; + Word16 i; + Word32 nbits_total; assert( nb_bits <= 16 ); @@ -1207,11 +1207,11 @@ uint16_t get_next_indice( *-------------------------------------------------------------------*/ /*! r: value of the indice */ -uint16_t get_next_indice_1( +UWord16 get_next_indice_1( Decoder_State *st /* i/o: decoder state structure */ ) { - int32_t nbits_total; + Word32 nbits_total; nbits_total = st->total_brate / FRAMES_PER_SEC; /* detect corrupted bitstream */ if ( ( st->next_bit_pos + 1 > nbits_total && st->codec_mode == MODE1 ) || @@ -1233,7 +1233,7 @@ uint16_t get_next_indice_1( void get_next_indice_tmp( Decoder_State *st, /* o : decoder state structure */ - int16_t nb_bits /* i : number of bits that were used to quantize the indice */ + Word16 nb_bits /* i : number of bits that were used to quantize the indice */ ) { /* update the position in the bitstream */ @@ -1249,15 +1249,15 @@ void get_next_indice_tmp( *-------------------------------------------------------------------*/ /*! r: value of the indice */ -uint16_t get_indice( +UWord16 get_indice( Decoder_State *st, /* i/o: decoder state structure */ - int16_t pos, /* i : absolute position in the bitstream (update after the read) */ - int16_t nb_bits /* i : number of bits that were used to quantize the indice */ + Word16 pos, /* i : absolute position in the bitstream (update after the read) */ + Word16 nb_bits /* i : number of bits that were used to quantize the indice */ ) { - uint16_t value; - int16_t i; - int32_t nbits_total; + UWord16 value; + Word16 i; + Word32 nbits_total; assert( nb_bits <= 16 ); @@ -1584,9 +1584,9 @@ ivas_error write_indices_ivas_fx( *-------------------------------------------------------------------*/ static void decoder_selectCodec( - Decoder_State *st, /* i/o: decoder state structure */ - const int32_t total_brate, /* i : total bitrate */ - const int16_t bit0 /* i : first bit */ + Decoder_State *st, /* i/o: decoder state structure */ + const Word32 total_brate, /* i : total bitrate */ + const Word16 bit0 /* i : first bit */ ) { /* set the AMR-WB IO flag */ @@ -1724,7 +1724,7 @@ void ivas_set_bitstream_pointers( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ) { - int16_t k, num_bits; + Word16 k, num_bits; Decoder_State **sts; num_bits = 0; @@ -1734,7 +1734,7 @@ void ivas_set_bitstream_pointers( { sts = st_ivas->hSCE[k]->hCoreCoder; sts[0]->bit_stream = st_ivas->bit_stream + num_bits; - num_bits += (int16_t) ( st_ivas->hSCE[k]->element_brate / FRAMES_PER_SEC ); + num_bits += (Word16) ( st_ivas->hSCE[k]->element_brate / FRAMES_PER_SEC ); } /* set bitstream pointers for CPEs */ @@ -1742,7 +1742,7 @@ void ivas_set_bitstream_pointers( { sts = st_ivas->hCPE[k]->hCoreCoder; sts[0]->bit_stream = st_ivas->bit_stream + num_bits; - num_bits += (int16_t) ( st_ivas->hCPE[k]->element_brate / FRAMES_PER_SEC ); + num_bits += (Word16) ( st_ivas->hCPE[k]->element_brate / FRAMES_PER_SEC ); } return; diff --git a/lib_com/core_com_config.c b/lib_com/core_com_config.c index f75f28a18..152870be7 100644 --- a/lib_com/core_com_config.c +++ b/lib_com/core_com_config.c @@ -492,12 +492,12 @@ Word16 sr2fscale_fx( return extract_l( Mpy_32_16_1( sr_core, FSCALE_DENOM_BY_12800_Q15 ) ); /*Q0*/ } -int16_t sr2fscale( - const int32_t sr_core /* i : internal sampling rate */ +Word16 sr2fscale( + const Word32 sr_core /* i : internal sampling rate */ ) { - return (int16_t) ( ( FSCALE_DENOM * sr_core ) / 12800 ); + return (Word16) ( ( FSCALE_DENOM * sr_core ) / 12800 ); } Word32 getCoreSamplerateMode2( diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 9243b3f50..097ba1789 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -509,8 +509,8 @@ enum #define STEREO_DFT32MS_N_NS FRAME_SIZE_NS /* 20 ms */ #define STEREO_DFT32MS_OVL_NS 3125000L /* 3.125ms - Overlap for the outer edges of windows on decoder */ #define STEREO_DFT32MS_OVL2_NS 9375000L /* 9.375ms - Overlap for the inner edges of windows on decoder */ -#define STEREO_DFT32MS_WIN_CENTER_NS ( int32_t )( ( FRAME_SIZE_NS + STEREO_DFT32MS_OVL_NS ) * 0.5f ) /* 11.5625ms - mid point of the two windows wrt the left edge of overlap */ -#define STEREO_DFT32MS_ZP_NS ( int32_t )( 0.5f * ( STEREO_DFT32MS_N_NS - STEREO_DFT32MS_WIN_CENTER_NS - ( STEREO_DFT32MS_OVL2_NS * 0.5f ) ) ) /* 2 sided zp calculated such that window size is satisfied */ +#define STEREO_DFT32MS_WIN_CENTER_NS ( Word32 )( ( FRAME_SIZE_NS + STEREO_DFT32MS_OVL_NS ) * 0.5f ) /* 11.5625ms - mid point of the two windows wrt the left edge of overlap */ +#define STEREO_DFT32MS_ZP_NS ( Word32 )( 0.5f * ( STEREO_DFT32MS_N_NS - STEREO_DFT32MS_WIN_CENTER_NS - ( STEREO_DFT32MS_OVL2_NS * 0.5f ) ) ) /* 2 sided zp calculated such that window size is satisfied */ #define STEREO_DFT32MS_OVL_MAX NS2SA( 48000, STEREO_DFT32MS_OVL_NS ) #define STEREO_DFT32MS_OVL2_MAX NS2SA( 48000, STEREO_DFT32MS_OVL2_NS ) @@ -799,7 +799,7 @@ enum fea_names #define L_DEC_MEM_LEN_ICA L_NCSHIFTMAX + ( N_MAX_SHIFT_CHANGE + 1 ) + SINC_ORDER1 / INTERP_FACTOR1 #define L_FRAME_DS NS2SA( CORR_INTER_FS, FRAME_SIZE_NS ) #define L_XCORRMEM_DS NS2SA( CORR_INTER_FS, 2 * ( ACELP_LOOK_NS ) ) -#define L_NCSHIFT_DS ( int16_t )( ( ( int32_t )(CORR_INTER_FS) *L_NCSHIFTMAX ) / 48000L ) +#define L_NCSHIFT_DS ( Word16 )( ( ( Word32 )(CORR_INTER_FS) *L_NCSHIFTMAX ) / 48000L ) #define L_SAMPLES_LA_NS 625000L #define L_MEM_RECALC_TBE_16K NS2SA( 16000, L_MEM_RECALC_TBE_NS ) @@ -1446,7 +1446,7 @@ typedef struct { typedef struct { Word32 value[81]; - unsigned short length[81]; + UWord16 length[81]; } HUFF_ELEMENTS; typedef struct { diff --git a/lib_com/longarith.c b/lib_com/longarith.c index 72a763de3..c5ace652c 100644 --- a/lib_com/longarith.c +++ b/lib_com/longarith.c @@ -64,14 +64,14 @@ void longadd( assert( lena >= lenb ); for ( h = 0; h < lenb; h++ ) { - carry += ( (uint32_t) a[h] ) + ( (uint32_t) b[h] ); + carry += ( (UWord32) a[h] ) + ( (UWord32) b[h] ); a[h] = (UWord16) carry; carry = carry >> 16; } for ( ; h < lena; h++ ) { - carry = ( (uint32_t) a[h] ) + carry; + carry = ( (UWord32) a[h] ) + carry; a[h] = (UWord16) carry; carry = carry >> 16; } diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index c7d35daca..498be3137 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -72,9 +72,6 @@ #define max( x, y ) ( ( x ) > ( y ) ? ( x ) : ( y ) ) #endif -#define log_base_2( x ) ( (double) log( (double) ( x ) ) * 1.4426950408889634074f ) -#define round_f( x ) ( ( ( x ) > 0 ) ? (int32_t) ( ( x ) + 0.5f ) : ( -(int32_t) ( ( -x ) + 0.5f ) ) ) - #ifndef ABSVAL #define ABSVAL( a ) ( ( a ) >= 0 ? ( a ) : ( -( a ) ) ) #endif @@ -1576,19 +1573,19 @@ Word16 gsc_gainQ_fx( ); Word16 gsc_gainQ_ivas_fx( - BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ - const int16_t element_mode, /* i : element mode */ - const int16_t idchan, /* i : channel ID */ + BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ const Word16 y_gain4[], /* i : Energy per band */ // Q12 Word16 y_gainQ[], /* o : quantized energy per band */ // Q12 - const int32_t core_brate, /* i : Core rate */ - const int16_t coder_type, /* i : coding type */ - const int16_t bwidth, /* i : input signal bandwidth */ - const int16_t L_frame, /* i : frame length */ - const int16_t tdm_LRTD_flag, /* i : LRTD stereo mode flag */ - const int32_t core_brate_inp /* i : true core bitrate */ + const Word32 core_brate, /* i : Core rate */ + const Word16 coder_type, /* i : coding type */ + const Word16 bwidth, /* i : input signal bandwidth */ + const Word16 L_frame, /* i : frame length */ + const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */ + const Word32 core_brate_inp /* i : true core bitrate */ ); // frame_ener.c @@ -1779,7 +1776,7 @@ void Ener_per_band_comp_ivas_fx( const Word16 Q_exc, /* i : frame length */ const Word16 Mband, /* i : Max band */ const Word16 Eflag, /* i : flag of highest band */ - const int16_t L_frame /* i : frame length */ + const Word16 L_frame /* i : frame length */ ); void Ener_per_band_comp_ivas_fx_2( const Word16 exc_diff_fx[], /* i : target signal Q_exc_diff */ @@ -2633,7 +2630,7 @@ void Interpolate_allpass_steep_fx( void Interpolate_allpass_steep_fx32( const Word32 *in_fx, /* i : input array of size N */ Word32 *mem_fx, /* i/o: memory */ - const int16_t N, /* i : number of input samples */ + const Word16 N, /* i : number of input samples */ Word32 *out_fx /* o : output array of size 2*N */ ); @@ -2647,7 +2644,7 @@ void interpolate_3_over_2_allpass_fx( void interpolate_3_over_2_allpass_fx32( const Word32 *input, /* i : input signal Qx */ - const int16_t len, /* i : number of input samples */ + const Word16 len, /* i : number of input samples */ Word32 *out, /* o : output signal */ Word32 *mem /* i/o: memory */ ); @@ -2931,16 +2928,16 @@ void tbe_celp_exc( ); void tbe_celp_exc_ivas( - const int16_t element_mode, /* i : element mode */ - const int16_t idchan, /* i : channel ID */ - const Word16 L_frame_fx, /* i : Frame lenght */ - const int16_t L_subfr, /* i : subframe length */ - const Word16 i_subfr_fx, /* i : sub frame */ - const Word16 T0_fx, /* i : Integer pitch */ - const Word16 T0_frac_fx, /* i : Fractional part of the pitch */ - Word16 *error_fx, /* i/o: Error */ - Word16 *bwe_exc_fx, /* i/o: bandwitdh extension signal */ - const int16_t tdm_LRTD_flag /* i : LRTD stereo mode flag */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 L_frame_fx, /* i : Frame lenght */ + const Word16 L_subfr, /* i : subframe length */ + const Word16 i_subfr_fx, /* i : sub frame */ + const Word16 T0_fx, /* i : Integer pitch */ + const Word16 T0_frac_fx, /* i : Fractional part of the pitch */ + Word16 *error_fx, /* i/o: Error */ + Word16 *bwe_exc_fx, /* i/o: bandwitdh extension signal */ + const Word16 tdm_LRTD_flag /* i : LRTD stereo mode flag */ ); void flip_and_downmix_generic_fx( @@ -3159,8 +3156,8 @@ void GenSHBSynth_fx32( Word32 *shb_syn_speech_32k, /* o : output highband component */ Word32 Hilbert_Mem[], /* i/o: memory */ Word32 state_lsyn_filt_shb_local[], /* i/o: memory */ - const int16_t L_frame, /* i : ACELP frame length */ - int16_t *syn_dm_phase ); + const Word16 L_frame, /* i : ACELP frame length */ + Word16 *syn_dm_phase ); void ScaleShapedSHB_fx( const Word16 length, /* i : SHB overlap length */ @@ -3245,7 +3242,7 @@ void wb_tbe_extras_reset_synth_fx( Word16 state_lsyn_filt_shb[], Word16 state_ls #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic void elliptic_bpf_48k_generic_fx( #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 - const int16_t element_mode, + const Word16 element_mode, #endif Word16 IsUpsampled3, Word16 input_fx[], /* i : input signal Q_input_fx*/ @@ -3280,7 +3277,7 @@ void synthesise_fb_high_band_fx( Word16 Qout #ifdef FIX_1439_SPEEDUP_SIMPLIFY_elliptic_bpf_48k_generic_STAGE2 , - int16_t element_mode + Word16 element_mode #endif ); @@ -3747,8 +3744,8 @@ void const *GetTnsEnabledSingleFilter( void const *p, const Word16 index, Word16 void *SetTnsEnabledSingleFilter( void *p, const Word16 index, const Word16 value ); -void const *GetTnsOnWhite( void const *p, const int16_t index, int16_t *pValue ); -void *SetTnsOnWhite( void *p, const int16_t index, const int16_t value ); +void const *GetTnsOnWhite( void const *p, const Word16 index, Word16 *pValue ); +void *SetTnsOnWhite( void *p, const Word16 index, const Word16 value ); /*tns_base.h*/ /** Reset TNS data. @@ -4113,8 +4110,8 @@ void cng_params_upd_ivas_fx( const Word16 element_mode, /* i : Element mode */ const Word16 bwidth /* i : Audio bandwidth */ ); -int16_t get_cng_mode( - const int32_t last_active_brate /* i : last active bitrate */ +Word16 get_cng_mode( + const Word32 last_active_brate /* i : last active bitrate */ ); // core_com_config.c @@ -4301,12 +4298,12 @@ void lpc2mdct( void lpc2mdct_2( Word16 *lpcCoeffs, - const int16_t lpcOrder, + const Word16 lpcOrder, Word16 mdct_gains_fx[], Word16 mdct_gains_e[], Word16 mdct_inv_gains_fx[], Word16 mdct_inv_gains_e[], - const int16_t length ); + const Word16 length ); void mdct_shaping( Word32 x[], @@ -4941,25 +4938,25 @@ void cb_shape_fx( // longarith.c void longadd( - uint16_t a[], /* i/o: vector of the length lena */ - const uint16_t b[], /* i/o: vector of the length lenb */ - const int16_t lena, /* i/o: length of vector a[] */ - const int16_t lenb /* i/o: length of vector b[] */ + UWord16 a[], /* i/o: vector of the length lena */ + const UWord16 b[], /* i/o: vector of the length lenb */ + const Word16 lena, /* i/o: length of vector a[] */ + const Word16 lenb /* i/o: length of vector b[] */ ); void longshiftright( - uint16_t a[], /* i : vector of the length lena */ - const int16_t b, /* i : number of bit positions to shift right */ - uint16_t d[], /* o : vector of the length lend */ - int16_t lena, /* i : length of vector a[] */ - const int16_t lend /* i : length of vector d[] */ + UWord16 a[], /* i : vector of the length lena */ + const Word16 b, /* i : number of bit positions to shift right */ + UWord16 d[], /* o : vector of the length lend */ + Word16 lena, /* i : length of vector a[] */ + const Word16 lend /* i : length of vector d[] */ ); void longshiftleft( - const uint16_t a[], /* i : vector of the length len */ - const int16_t b, /* i : number of bit positions to shift left */ - uint16_t d[], /* o : vector of the length len */ - const int16_t len /* i : length of vector a[] and d[] */ + const UWord16 a[], /* i : vector of the length len */ + const Word16 b, /* i : number of bit positions to shift left */ + UWord16 d[], /* o : vector of the length len */ + const Word16 len /* i : length of vector a[] and d[] */ ); void longshr( @@ -5637,7 +5634,7 @@ void enhancer_fx( void enhancer_ivas_fx( const Word16 codec_mode, /* i : flag indicating Codec Mode */ const Word32 core_brate, /* i : decoder bitrate */ - const int16_t cbk_index, /* i : */ + const Word16 cbk_index, /* i : */ const Word16 Opt_AMR_WB, /* i : flag indicating AMR-WB IO mode */ const Word16 coder_type, /* i : coder type */ const Word16 i_subfr, /* i : subframe number */ @@ -6398,11 +6395,11 @@ void ivas_RefineTonalComponents_fx( const PsychoacousticParameters *psychParamsCurrent ); ivas_error PsychoacousticParameters_Init( - const int32_t sr_core, /* i : sampling rate of core-coder */ - const int16_t nBins, /* i : Number of bins (spectral lines) */ - const int8_t nBands, /* i : Number of spectrum subbands */ - const int16_t isTCX20, /* i : Flag indicating if the subband division is for TCX20 or TCX10 */ - const int16_t isWarped, /* i : Flag indicating if the scale is linear or warped */ + const Word32 sr_core, /* i : sampling rate of core-coder */ + const Word16 nBins, /* i : Number of bins (spectral lines) */ + const Word8 nBands, /* i : Number of spectrum subbands */ + const Word16 isTCX20, /* i : Flag indicating if the subband division is for TCX20 or TCX10 */ + const Word16 isWarped, /* i : Flag indicating if the scale is linear or warped */ PsychoacousticParameters *pPsychParams ); // TonalIMDCTconcealment_fx.c @@ -8279,17 +8276,17 @@ Word16 FEC_synchro_exc_fx( ); void decod_unvoiced_fx( - Decoder_State *st_fx, /* i/o: decoder static memory */ - const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ - const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ - const int16_t uc_two_stage_flag, /* i : flag indicating two-stage UC */ - const Word16 coder_type, /* Q0 i : coding type */ - Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */ - Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/ - Word16 *voice_factors_fx, /* Q15 o : voicing factors */ - Word16 *exc_fx, /* Q_X o : adapt. excitation exc */ - Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */ - Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */ + Decoder_State *st_fx, /* i/o: decoder static memory */ + const Word16 *Aq_fx, /* Q12 i : LP filter coefficient */ + const Word16 Es_pred_fx, /* i : predicted scaled innov. energy */ + const Word16 uc_two_stage_flag, /* i : flag indicating two-stage UC */ + const Word16 coder_type, /* Q0 i : coding type */ + Word16 *tmp_noise_fx, /* Q0 o : long term temporary noise energy */ + Word16 *pitch_buf_fx, /* Q6 o : floating pitch values for each subframe*/ + Word16 *voice_factors_fx, /* Q15 o : voicing factors */ + Word16 *exc_fx, /* Q_X o : adapt. excitation exc */ + Word16 *exc2_fx, /* Q_X o : adapt. excitation/total exc */ + Word16 *bwe_exc_fx, /* Q_X i/o: excitation for SWB TBE */ Word16 *gain_buf ); // gaus_dec_fx.c @@ -8473,10 +8470,10 @@ void mode_switch_decoder_LPD_ivas_fx( // ari_hm_dec.c -int16_t DecodeIndex( +Word16 DecodeIndex( Decoder_State *st, - const int16_t Bandwidth, /* o : NB, 1: (S)WB */ - int16_t *PeriodicityIndex ); + const Word16 Bandwidth, /* o : NB, 1: (S)WB */ + Word16 *PeriodicityIndex ); Word16 DecodeIndex_fx( Decoder_State *st, @@ -8553,7 +8550,7 @@ void IGFSCFDecoderReset( void IGFSCFDecoderDecode( IGFSCFDEC_INSTANCE_HANDLE hPublicData, /* i/o: handle to public data or NULL in case there was no instance created */ Decoder_State *st, /* i/o: pointer to decoder state */ - int16_t *sfe, /* o : ptr to an array which will contain the decoded quantized coefficients */ + Word16 *sfe, /* o : ptr to an array which will contain the decoded quantized coefficients */ const Word16 igfGridIdx, /* i : igf grid index see declaration of IGF_GRID_IDX for details */ const Word16 indepFlag /* i : if 1 on input the decoder will be forced to reset, if 0 on input the decoder will be forced to encode without a reset */ @@ -8681,11 +8678,11 @@ Word16 DecodeTnsData_ivas_fx( // parametr_bitmapping.c using ivas void GetParameters( ParamsBitMap const *paramsBitMap, - const int16_t nParams, + const Word16 nParams, void const *pParameter, - int16_t **pStream, - int16_t *pnSize, - int16_t *pnBits ); + Word16 **pStream, + Word16 *pnSize, + Word16 *pnBits ); void GetParameters_fx( ParamsBitMap const *paramsBitMap, @@ -8705,10 +8702,10 @@ void EncodeTnsData_ivas_fx( void SetParameters( ParamsBitMap const *paramsBitMap, - const int16_t nParams, + const Word16 nParams, void *pParameter, - const int16_t **pStream, - int16_t *pnSize ); + const Word16 **pStream, + Word16 *pnSize ); void SetParameters_fx( ParamsBitMap const *paramsBitMap, @@ -8719,18 +8716,18 @@ void SetParameters_fx( void WriteToBitstream( ParamsBitMap const *paramsBitMap, - const int16_t nParams, - const int16_t **pStream, - int16_t *pnSize, + const Word16 nParams, + const Word16 **pStream, + Word16 *pnSize, BSTR_ENC_HANDLE hBstr, - int16_t *pnBits ); + Word16 *pnBits ); void ReadFromBitstream( ParamsBitMap const *paramsBitMap, - const int16_t nArrayLength, + const Word16 nArrayLength, Decoder_State *st, - int16_t **pStream, - int16_t *pnSize ); + Word16 **pStream, + Word16 *pnSize ); void ReadFromBitstream_fx( ParamsBitMap const *paramsBitMap, @@ -9289,7 +9286,7 @@ void v_add_fx( const Word32 x1[], /* i : Input vector 1 */ const Word32 x2[], /* i : Input vector 2 */ Word32 y[], /* o : Output vector that contains vector 1 + vector 2 */ - const int16_t N /* i : Vector length */ + const Word16 N /* i : Vector length */ ); void v_shr_16( @@ -9343,10 +9340,10 @@ void configureCldfb_ivas_fx( ); // dec4t64.c void dec_acelp_fast_fx( - Decoder_State *st, /* i/o: decoder state structure */ - const int16_t cdk_index, /* i : codebook index */ - Word16 code[], /* o : algebraic (fixed) codebook excitation */ - const int16_t L_subfr /* i : subframe length */ + Decoder_State *st, /* i/o: decoder state structure */ + const Word16 cdk_index, /* i : codebook index */ + Word16 code[], /* o : algebraic (fixed) codebook excitation */ + const Word16 L_subfr /* i : subframe length */ ); // codec_tcx_common.c void tcx5SpectrumInterleaving_fx( @@ -9384,7 +9381,7 @@ void cldfbAnalysis_ivas_fx( const Word32 *timeIn_fx, /* i : time buffer Qx */ Word32 **realBuffer_fx, /* o : real value buffer Qx - 5*/ Word32 **imagBuffer_fx, /* o : imag value buffer QX - 5*/ - const int16_t samplesToProcess, /* i : samples to process */ + const Word16 samplesToProcess, /* i : samples to process */ HANDLE_CLDFB_FILTER_BANK h_cldfb /* i : filterbank state */ ); @@ -9403,7 +9400,7 @@ void cldfbSynthesis_ivas_fx( // bass_psfilter.c void addBassPostFilter_ivas_fx( const Word32 *harm_timeIn_fx, - const int16_t samplesToProcess, + const Word16 samplesToProcess, Word32 **rAnalysis_fx, Word32 **iAnalysis_fx, HANDLE_CLDFB_FILTER_BANK cldfb ); @@ -9563,8 +9560,8 @@ void fd_bwe_dec_init_fx( void stereo_dft_dec_open( STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */ - const int32_t output_Fs, /* i : output sampling rate */ - const int16_t nchan_transport /* i : number of transport channels */ + const Word32 output_Fs, /* i : output sampling rate */ + const Word16 nchan_transport /* i : number of transport channels */ ); void ivas_bw_switching_pre_proc_fx( @@ -10260,8 +10257,8 @@ void dctT2_N_apply_matrix_fx( ); Word32 sum2_f_32_fx( - const Word32 *vec, /* i : input vector */ - const int16_t lvec, /* i : length of input vector */ + const Word32 *vec, /* i : input vector */ + const Word16 lvec, /* i : length of input vector */ Word16 gb ); Word32 sum2_32_fx( @@ -10411,10 +10408,10 @@ void generate_stereo_masking_noise_fx( Word16 Q_syn, Decoder_State *st, /* i/o: decoder state structure */ STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i : TD stereo structure */ - const int16_t flag_sec_CNA, /* i : CNA flag for secondary channel */ - const int16_t fadeOut, /* i : only fade out of previous state */ + const Word16 flag_sec_CNA, /* i : CNA flag for secondary channel */ + const Word16 fadeOut, /* i : only fade out of previous state */ STEREO_CNG_DEC_HANDLE hStereoCng, /* i : Stereo CNG handle */ - const int16_t nchan_out /* i : number of output channels */ + const Word16 nchan_out /* i : number of output channels */ ); void SynthesisSTFT_fx( @@ -10422,10 +10419,10 @@ void SynthesisSTFT_fx( Word32 *timeDomainOutput, Word32 *olapBuffer, const Word16 *olapWin, - const int16_t tcx_transition, + const Word16 tcx_transition, HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ - const int16_t element_mode, /* i : element mode */ - const int16_t nchan_out /* i : number of output channels */ + const Word16 element_mode, /* i : element mode */ + const Word16 nchan_out /* i : number of output channels */ ); void FdCng_decodeSID_ivas_fx( @@ -10807,7 +10804,7 @@ Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx( const Word16 st1_syn_vec_e, /* i : exp for IDCT24 synthesis vectors */ const Word32 *u_fx, /* i : target signal */ const Word16 u_e, /* i : exp for target signal */ - const int16_t maxC_st1, /* i : number of candidates in stage1 */ + const Word16 maxC_st1, /* i : number of candidates in stage1 */ Word32 *dist_ptr_fx, /* i/o: updated MSE vector for stage1 */ Word16 *dist_ptr_e /* i/o: exp for updated MSE vector for stage1 */ ); @@ -10880,69 +10877,42 @@ void WriteToBitstream_ivas_fx( * MODE1 prototypes *----------------------------------------------------------------------------------*/ -/*! r: inverse square root of input value */ -float inv_sqrt( - const float x /* i : input value */ -); - /*! r: output random value */ -int16_t own_random( - int16_t *seed /* i/o: random seed */ -); - -/*! r: sign of x (+1/-1) */ -float sign( - const float x /* i : input value of x */ +Word16 own_random( + Word16 *seed /* i/o: random seed */ ); -/*! r: logarithm2 of x */ -float log2_f( - const float x /* i : input value of x */ -); - -int16_t norm_ul_float( - uint32_t UL_var1 ); +Word16 norm_ul_float( + UWord32 UL_var1 ); /*! r: sum of all vector elements */ -int16_t sum_s( - const int16_t *vec, /* i : input vector */ - const int16_t lvec /* i : length of input vector */ +Word16 sum_s( + const Word16 *vec, /* i : input vector */ + const Word16 lvec /* i : length of input vector */ ); /*! r: sum of all vector elements */ -int32_t sum_l( - const int32_t *vec, /* i : input vector */ - const int16_t lvec /* i : length of input vector */ -); - -/*! r: sum of all squared vector elements */ -float sum2_f( - const float *vec, /* i : input vector */ - const int16_t lvec /* i : length of input vector */ +Word32 sum_l( + const Word32 *vec, /* i : input vector */ + const Word16 lvec /* i : length of input vector */ ); void set_c( - int8_t y[], /* i/o: Vector to set */ - const int8_t a, /* i : Value to set the vector to */ - const int32_t N /* i : Length of the vector */ + Word8 y[], /* i/o: Vector to set */ + const Word8 a, /* i : Value to set the vector to */ + const Word32 N /* i : Length of the vector */ ); void set_s( - int16_t y[], /* i/o: Vector to set */ - const int16_t a, /* i : Value to set the vector to */ - const int16_t N /* i : Lenght of the vector */ + Word16 y[], /* i/o: Vector to set */ + const Word16 a, /* i : Value to set the vector to */ + const Word16 N /* i : Lenght of the vector */ ); void set_l( - int32_t y[], /* i/o: Vector to set */ - const int32_t a, /* i : Value to set the vector to */ - const int16_t N /* i : Length of the vector */ -); - -void set_f( - float y[], /* i/o: Vector to set */ - const float a, /* i : Value to set the vector to */ - const int16_t N /* i : Lenght of the vector */ + Word32 y[], /* i/o: Vector to set */ + const Word32 a, /* i : Value to set the vector to */ + const Word16 N /* i : Length of the vector */ ); void set_zero_fx( @@ -10959,52 +10929,26 @@ void set16_zero_fx( ); void set_zero( - float *vec, /* o : input vector */ - const int16_t lvec /* i : length of the vector */ + float *vec, /* o : input vector */ + const Word16 lvec /* i : length of the vector */ ); void mvr2r( const float x[], /* i : input vector */ float y[], /* o : output vector */ - const int16_t n /* i : vector size */ + const Word16 n /* i : vector size */ ); void mvs2s( - const int16_t x[], /* i : input vector */ - int16_t y[], /* o : output vector */ - const int16_t n /* i : vector size */ -); - -uint32_t mvr2s( - const float x[], /* i : input vector */ - int16_t y[], /* o : output vector */ - const int16_t n /* i : vector size */ -); - -void mvs2r( - const int16_t x[], /* i : input vector */ - float y[], /* o : output vector */ - const int16_t n /* i : vector size */ + const Word16 x[], /* i : input vector */ + Word16 y[], /* o : output vector */ + const Word16 n /* i : vector size */ ); void mvl2l( - const int32_t x[], /* i : input vector */ - int32_t y[], /* o : output vector */ - const int16_t n /* i : vector size */ -); - - -/*! r: index of the maximum value in the input vector */ -int16_t maximum( - const float *vec, /* i : input vector */ - const int16_t lvec, /* i : length of input vector */ - float *max_val /* o : maximum value in the input vector */ -); -/*! r: index of the maximum value in the input vector */ -int16_t maximumAbs( - const float *vec, /* i : input vector */ - const int16_t lvec, /* i : length of input vector */ - float *max_val /* o : maximum value in the input vector */ + const Word32 x[], /* i : input vector */ + Word32 y[], /* o : output vector */ + const Word16 n /* i : vector size */ ); Word16 maximumAbs_l( @@ -11014,63 +10958,22 @@ Word16 maximumAbs_l( ); /*! r: index of the minimum value in the input vector */ -int16_t minimum( - const float *vec, /* i : input vector */ - const int16_t lvec, /* i : length of input vector */ - float *min_val /* o : minimum value in the input vector */ -); - -/*! r: index of the minimum value in the input vector */ -int16_t minimum_s( - const int16_t *vec, /* i : Input vector */ - const int16_t lvec, /* i : Vector length */ - int16_t *min_val /* o : minimum value in the input vector */ -); - -/*! r: return index with max energy value in vector */ -int16_t emaximum( - const float *vec, /* i : input vector */ - const int16_t lvec, /* i : length of input vector */ - float *ener_max /* o : maximum energy value */ -); - -/*! r: vector mean */ -float mean( - const float *vec, /* i : input vector */ - const int16_t lvec /* i : length of input vector */ -); - -/*! r: dot product of x[] and y[] */ -float dotp( - const float x[], /* i : vector x[] */ - const float y[], /* i : vector y[] */ - const int16_t n /* i : vector length */ -); - -void v_add( - const float x1[], /* i : Input vector 1 */ - const float x2[], /* i : Input vector 2 */ - float y[], /* o : Output vector that contains vector 1 + vector 2 */ - const int16_t N /* i : Vector length */ -); - -void v_sub( - const float x1[], /* i : Input vector 1 */ - const float x2[], /* i : Input vector 2 */ - float y[], /* o : Output vector that contains vector 1 - vector 2 */ - const int16_t N /* i : Vector length */ +Word16 minimum_s( + const Word16 *vec, /* i : Input vector */ + const Word16 lvec, /* i : Vector length */ + Word16 *min_val /* o : minimum value in the input vector */ ); /*! r: dequanzited gain */ float usdequant( - const int16_t idx, /* i : quantizer index */ - const float qlow, /* i : lowest codebook entry (index 0) */ - const float delta /* i : quantization step */ + const Word16 idx, /* i : quantizer index */ + const float qlow, /* i : lowest codebook entry (index 0) */ + const float delta /* i : quantization step */ ); void sort( - uint16_t *x, /* i/o: Vector to be sorted */ - uint16_t len /* i/o: vector length */ + UWord16 *x, /* i/o: Vector to be sorted */ + UWord16 len /* i/o: vector length */ ); void sort_l( @@ -11081,9 +10984,9 @@ void sort_l( ivas_error push_indice( BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ - int16_t id, /* i : ID of the indice */ - uint16_t value, /* i : value of the quantized indice */ - int16_t nb_bits /* i : number of bits used to quantize the indice */ + Word16 id, /* i : ID of the indice */ + UWord16 value, /* i : value of the quantized indice */ + Word16 nb_bits /* i : number of bits used to quantize the indice */ ); ivas_error push_next_indice( @@ -11105,8 +11008,8 @@ Word16 get_ivas_max_num_indices_fx( ); /*! r: maximum number of indices */ -int16_t get_BWE_max_num_indices( - const int32_t extl_brate /* i : extensiona layer bitrate */ +Word16 get_BWE_max_num_indices( + const Word32 extl_brate /* i : extensiona layer bitrate */ ); /*! r: maximum number of indices */ @@ -11115,9 +11018,9 @@ Word16 get_ivas_max_num_indices_metadata_fx( const Word32 ivas_total_brate /* i : IVAS total bitrate */ ); ivas_error ind_list_realloc( - INDICE_HANDLE old_ind_list, /* i : pointer to the beginning of the old buffer of indices */ - const int16_t max_num_indices, /* i : new maximum number of allowed indices in the list */ - Encoder_Struct *st_ivas /* i : IVAS encoder structure */ + INDICE_HANDLE old_ind_list, /* i : pointer to the beginning of the old buffer of indices */ + const Word16 max_num_indices, /* i : new maximum number of allowed indices in the list */ + Encoder_Struct *st_ivas /* i : IVAS encoder structure */ ); ivas_error check_ind_list_limits( @@ -11127,44 +11030,44 @@ ivas_error check_ind_list_limits( void move_indices( INDICE_HANDLE old_ind_list, /* i/o: old location of indices */ INDICE_HANDLE new_ind_list, /* i/o: new location of indices */ - const int16_t nb_indices /* i : number of moved indices */ + const Word16 nb_indices /* i : number of moved indices */ ); /*! r: index of the indice in the list, -1 if not found */ -int16_t find_indice( +Word16 find_indice( BSTR_ENC_HANDLE hBstr, /* i : encoder bitstream handle */ - const int16_t id, /* i : ID of the indice */ - uint16_t *value, /* o : value of the quantized indice */ - int16_t *nb_bits /* o : number of bits used to quantize the indice */ + const Word16 id, /* i : ID of the indice */ + UWord16 *value, /* o : value of the quantized indice */ + Word16 *nb_bits /* o : number of bits used to quantize the indice */ ); /*! r: number of deleted indices */ -uint16_t delete_indice( +UWord16 delete_indice( BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ - const int16_t id /* i : ID of the indice */ + const Word16 id /* i : ID of the indice */ ); /*! r: value of the indice */ -uint16_t get_next_indice( +UWord16 get_next_indice( Decoder_State *st, /* i/o: decoder state structure */ - int16_t nb_bits /* i : number of bits that were used to quantize the indice */ + Word16 nb_bits /* i : number of bits that were used to quantize the indice */ ); /*! r: value of the indice */ -uint16_t get_next_indice_1( +UWord16 get_next_indice_1( Decoder_State *st /* i/o: decoder state structure */ ); void get_next_indice_tmp( Decoder_State *st, /* o : decoder state structure */ - int16_t nb_bits /* i : number of bits that were used to quantize the indice */ + Word16 nb_bits /* i : number of bits that were used to quantize the indice */ ); /*! r: value of the indice */ -uint16_t get_indice( +UWord16 get_indice( Decoder_State *st, /* i/o: decoder state structure */ - int16_t pos, /* i : absolute position in the bitstream */ - int16_t nb_bits /* i : number of bits that were used to quantize the indice */ + Word16 pos, /* i : absolute position in the bitstream */ + Word16 nb_bits /* i : number of bits that were used to quantize the indice */ ); void reset_indices_dec( @@ -11173,7 +11076,7 @@ void reset_indices_dec( Word16 rate2EVSmode_float( const Word32 brate, /* i : bitrate */ - int16_t *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */ + Word16 *is_amr_wb /* o : (flag) does the bitrate belong to AMR-WB? Can be NULL */ ); @@ -11200,13 +11103,13 @@ void mdct_switching_dec_fx( Decoder_State *st /* i/o: decoder state structure */ ); -int16_t print_disclaimer( +Word16 print_disclaimer( FILE *fPtr ); void fft_rel( - float x[], /* i/o: input/output vector */ - const int16_t n, /* i : vector length */ - const int16_t m /* i : log2 of vector length */ + float x[], /* i/o: input/output vector */ + const Word16 n, /* i : vector length */ + const Word16 m /* i : log2 of vector length */ ); void preemph_ivas_fx( @@ -11219,8 +11122,8 @@ void preemph_ivas_fx( void create_offset( UWord32 *offset_scale1, UWord32 *offset_scale2, - const int16_t mode, - const int16_t prediction_flag ); + const Word16 mode, + const Word16 prediction_flag ); void BASOP_cfft_ivas( Word32 *re, /* i/o: real part */ @@ -11465,31 +11368,31 @@ void writeTCXWindowing_fx( ); void writeLPCparam( - Encoder_State *st, /* i/o: encoder state structure */ - BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ - const int16_t param_lpc[], /* i : LPC parameters to write */ - const int16_t bits_param_lpc[], /* i : bits per LPC parameter */ - const int16_t no_param_lpc, /* i : number of LPC parameters */ - int16_t *nbits_lpc /* o : LPC bits written */ + Encoder_State *st, /* i/o: encoder state structure */ + BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ + const Word16 param_lpc[], /* i : LPC parameters to write */ + const Word16 bits_param_lpc[], /* i : bits per LPC parameter */ + const Word16 no_param_lpc, /* i : number of LPC parameters */ + Word16 *nbits_lpc /* o : LPC bits written */ ); -void const *GetTnsOnWhite( void const *p, const int16_t index, int16_t *pValue ); -void *SetTnsOnWhite( void *p, const int16_t index, const int16_t value ); -void const *GetNumOfTnsFilters_flt( void const *p, const int16_t index, int16_t *pValue ); -void *SetNumOfTnsFilters_flt( void *p, const int16_t index, const int16_t value ); +void const *GetTnsOnWhite( void const *p, const Word16 index, Word16 *pValue ); +void *SetTnsOnWhite( void *p, const Word16 index, const Word16 value ); +void const *GetNumOfTnsFilters_flt( void const *p, const Word16 index, Word16 *pValue ); +void *SetNumOfTnsFilters_flt( void *p, const Word16 index, const Word16 value ); -int16_t DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue ); -int16_t DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue ); +Word16 DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue ); +Word16 DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue ); -int16_t DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue ); +Word16 DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue ); -int16_t DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const int16_t index, int16_t *pValue ); -int16_t DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const int16_t index, int16_t *pValue ); +Word16 DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const Word16 index, Word16 *pValue ); +Word16 DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const Word16 index, Word16 *pValue ); -int16_t EncodeTnsFilterOrderSWBTCX10_flt( const int16_t value, const int16_t index ); +Word16 EncodeTnsFilterOrderSWBTCX10_flt( const Word16 value, const Word16 index ); -int16_t GetTnsFilterOrderBitsSWBTCX10_flt( const int16_t value, const int16_t index ); -int16_t DecodeTnsFilterOrder_flt( Decoder_State *st, const int16_t index, int16_t *pValue ); +Word16 GetTnsFilterOrderBitsSWBTCX10_flt( const Word16 value, const Word16 index ); +Word16 DecodeTnsFilterOrder_flt( Decoder_State *st, const Word16 index, Word16 *pValue ); void ResetTnsData_flt( STnsData *pTnsData ); @@ -11542,7 +11445,7 @@ void analysisCldfbEncoder_ivas_fx( ivas_error openCldfb_ivas( HANDLE_CLDFB_FILTER_BANK *h_cldfb, /* i/o: filter bank handle */ CLDFB_TYPE type, /* i : analysis or synthesis */ - const int32_t sampling_rate, /* i : sampling rate */ + const Word32 sampling_rate, /* i : sampling rate */ CLDFB_PROTOTYPE prototype /* i : CLDFB version (1.25ms/5ms delay) */ ); diff --git a/lib_com/tns_base.c b/lib_com/tns_base.c index 82de45023..5e18430be 100644 --- a/lib_com/tns_base.c +++ b/lib_com/tns_base.c @@ -809,43 +809,19 @@ static Word16 DecodeUsingTable( Decoder_State *st, Word16 *pValue /*Q0*/, const /* TNS filter coefficients */ -int16_t DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue ) +Word16 DecodeSWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue ) { assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) ); return DecodeUsingTable( st, pValue, codesTnsCoeffSWBTCX20[index], nTnsCoeffCodes ); } -// int16_t GetSWBTCX10TnsFilterCoeffBits_flt( const int16_t value, const int16_t index ) -//{ -// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) ); -// return GetBitsFromTable( value, codesTnsCoeffSWBTCX10[index], nTnsCoeffCodes ); -// } - -// int16_t EncodeSWBTCX10TnsFilterCoeff_flt( const int16_t value, const int16_t index ) -//{ -// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) ); -// return EncodeUsingTable( value, codesTnsCoeffSWBTCX10[index], nTnsCoeffCodes ); -// } - -int16_t DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue ) +Word16 DecodeSWBTCX10TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue ) { assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) ); return DecodeUsingTable( st, pValue, codesTnsCoeffSWBTCX10[index], nTnsCoeffCodes ); } -// int16_t GetWBTCX20TnsFilterCoeffBits_flt( const int16_t value, const int16_t index ) -//{ -// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) ); -// return GetBitsFromTable( value, codesTnsCoeffWBTCX20[index], nTnsCoeffCodes ); -// } - -// int16_t EncodeWBTCX20TnsFilterCoeff_flt( const int16_t value, const int16_t index ) -//{ -// assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) ); -// return EncodeUsingTable( value, codesTnsCoeffWBTCX20[index], nTnsCoeffCodes ); -// } - -int16_t DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, int16_t *pValue ) +Word16 DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const Word16 index, Word16 *pValue ) { assert( ( index >= 0 ) && ( index < nTnsCoeffTables ) ); return DecodeUsingTable( st, pValue, codesTnsCoeffWBTCX20[index], nTnsCoeffCodes ); @@ -854,49 +830,25 @@ int16_t DecodeWBTCX20TnsFilterCoeff_flt( Decoder_State *st, const int16_t index, /* TNS filter order */ -// void const *GetTnsFilterOrder_flt( void const *p, const int16_t index, int16_t *pValue ) -//{ -// *pValue = ( (STnsFilter const *) p )[index].order; -// return ( (STnsFilter const *) p )[index].coefIndex; -// } - -// void *SetTnsFilterOrder_flt( void *p, const int16_t index, const int16_t value ) -//{ -// ( (STnsFilter *) p )[index].order = value; -// return ( (STnsFilter *) p )[index].coefIndex; -// } - -// int16_t GetTnsFilterOrderBitsSWBTCX20_flt( const int16_t value, const int16_t index ) -//{ -// (void) index; -// return GetBitsFromTable( value - 1, codesTnsOrderTCX20, nTnsOrderCodes ); -// } - -// int16_t EncodeTnsFilterOrderSWBTCX20_flt( const int16_t value, const int16_t index ) -//{ -// (void) index; -// return EncodeUsingTable( value - 1, codesTnsOrderTCX20, nTnsOrderCodes ); -// } - -int16_t DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const int16_t index, int16_t *pValue ) +Word16 DecodeTnsFilterOrderSWBTCX20_flt( Decoder_State *st, const Word16 index, Word16 *pValue ) { (void) index; return DecodeUsingTable( st, pValue, codesTnsOrderTCX20, nTnsOrderCodes ); } -int16_t GetTnsFilterOrderBitsSWBTCX10_flt( const int16_t value, const int16_t index ) +Word16 GetTnsFilterOrderBitsSWBTCX10_flt( const Word16 value, const Word16 index ) { (void) index; return GetBitsFromTable( value - 1, codesTnsOrderTCX10, nTnsOrderCodes ); } -int16_t EncodeTnsFilterOrderSWBTCX10_flt( const int16_t value, const int16_t index ) +Word16 EncodeTnsFilterOrderSWBTCX10_flt( const Word16 value, const Word16 index ) { (void) index; return EncodeUsingTable( value - 1, codesTnsOrderTCX10, nTnsOrderCodes ); } -int16_t DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const int16_t index, int16_t *pValue ) +Word16 DecodeTnsFilterOrderSWBTCX10_flt( Decoder_State *st, const Word16 index, Word16 *pValue ) { (void) index; return DecodeUsingTable( st, pValue, codesTnsOrderTCX10, nTnsOrderCodes ); @@ -1105,42 +1057,36 @@ void *SetTnsEnabled( void *p, const Word16 index, const Word16 value ) /* Number of TNS filters */ -void const *GetNumOfTnsFilters_flt( void const *p, const int16_t index, int16_t *pValue ) +void const *GetNumOfTnsFilters_flt( void const *p, const Word16 index, Word16 *pValue ) { - *pValue = (int16_t) abs( ( (STnsData const *) p )[index].nFilters ); + *pValue = (Word16) abs( ( (STnsData const *) p )[index].nFilters ); return ( (STnsData const *) p )[index].filter; } -void *SetNumOfTnsFilters_flt( void *p, const int16_t index, const int16_t value ) +void *SetNumOfTnsFilters_flt( void *p, const Word16 index, const Word16 value ) { - ( (STnsData *) p )[index].nFilters = (int16_t) abs( value ); + ( (STnsData *) p )[index].nFilters = (Word16) abs( value ); return ( (STnsData *) p )[index].filter; } -int16_t DecodeTnsFilterOrder_flt( Decoder_State *st, const int16_t index, int16_t *pValue ) +Word16 DecodeTnsFilterOrder_flt( Decoder_State *st, const Word16 index, Word16 *pValue ) { (void) index; return DecodeUsingTable( st, pValue, codesTnsOrder, nTnsOrderCodes ); } /* TNS on whitened spectra flag */ -void const *GetTnsOnWhite( void const *p, const int16_t index, int16_t *pValue ) +void const *GetTnsOnWhite( void const *p, const Word16 index, Word16 *pValue ) { *pValue = ( (STnsData const *) p )[index].tnsOnWhitenedSpectra > 0 ? 1 : 0; return NULL; } -void *SetTnsOnWhite( void *p, const int16_t index, const int16_t value ) +void *SetTnsOnWhite( void *p, const Word16 index, const Word16 value ) { ( (STnsData *) p )[index].tnsOnWhitenedSpectra = value; return NULL; } -// void const *GetTnsEnabledSingleFilter( void const *p, const int16_t index, int16_t *pValue ) -//{ -// *pValue = ( (STnsData const *) p )[index].nFilters != 0 ? 1 : 0; -// return ( (STnsData const *) p )[index].filter; -// } - void const *GetTnsEnabledSingleFilter( void const *p, const Word16 index, Word16 *pValue ) { move16(); diff --git a/lib_com/tools.c b/lib_com/tools.c index f7303c6f3..9166d16eb 100644 --- a/lib_com/tools.c +++ b/lib_com/tools.c @@ -47,51 +47,23 @@ *------------------------------------------------------------------*/ /*! r: output random value */ -int16_t own_random( - int16_t *seed /* i/o: random seed */ +Word16 own_random( + Word16 *seed /* i/o: random seed */ ) { - *seed = (int16_t) ( *seed * 31821L + 13849L ); + *seed = (Word16) ( *seed * 31821L + 13849L ); return ( *seed ); } /*--------------------------------------------------------------------- - * sign() + * norm_ul_float() * *---------------------------------------------------------------------*/ -/*! r: sign of x (+1/-1) */ -float sign( - const float x /* i : input value of x */ -) +Word16 norm_ul_float( UWord32 UL_var1 ) { - if ( x < 0.0f ) - { - return -1.0f; - } - else - { - return 1.0f; - } -} - -/*--------------------------------------------------------------------- - * log2_f() - * - *---------------------------------------------------------------------*/ - -/*! r: logarithm2 of x */ -float log2_f( - const float x /* i : input value of x */ -) -{ - return (float) ( log( x ) / log( 2.0f ) ); -} - -int16_t norm_ul_float( uint32_t UL_var1 ) -{ - int16_t var_out; + Word16 var_out; if ( UL_var1 == 0 ) { @@ -99,7 +71,7 @@ int16_t norm_ul_float( uint32_t UL_var1 ) } else { - for ( var_out = 0; UL_var1 < (uint32_t) 0x80000000U; var_out++ ) + for ( var_out = 0; UL_var1 < (UWord32) 0x80000000U; var_out++ ) { UL_var1 <<= 1; } @@ -118,13 +90,13 @@ int16_t norm_ul_float( uint32_t UL_var1 ) *---------------------------------------------------------------------*/ /*! r: sum of all vector elements */ -int16_t sum_s( - const int16_t *vec, /* i : input vector */ - const int16_t lvec /* i : length of input vector */ +Word16 sum_s( + const Word16 *vec, /* i : input vector */ + const Word16 lvec /* i : length of input vector */ ) { - int16_t i; - int16_t tmp; + Word16 i; + Word16 tmp; tmp = 0; for ( i = 0; i < lvec; i++ ) @@ -182,7 +154,7 @@ Word32 sum2_f_16_gb_fx( const Word16 lvec, /* i : length of input vector */ Word16 gb ) { - int16_t i; + Word16 i; Word32 tmp; tmp = 0; @@ -311,7 +283,6 @@ Word32 sum2_32_fx( /*-------------------------------------------------------------------* * set_c() * set_s() - * set_f() * set_l() * set_d() * @@ -319,12 +290,12 @@ Word32 sum2_32_fx( *-------------------------------------------------------------------*/ void set_c( - int8_t y[], /* i/o: Vector to set */ - const int8_t a, /* i : Value to set the vector to */ - const int32_t N /* i : Length of the vector */ + Word8 y[], /* i/o: Vector to set */ + const Word8 a, /* i : Value to set the vector to */ + const Word32 N /* i : Length of the vector */ ) { - int16_t i; + Word16 i; for ( i = 0; i < N; i++ ) { @@ -336,12 +307,12 @@ void set_c( void set_s( - int16_t y[], /* i/o: Vector to set */ - const int16_t a, /* i : Value to set the vector to */ - const int16_t N /* i : Length of the vector */ + Word16 y[], /* i/o: Vector to set */ + const Word16 a, /* i : Value to set the vector to */ + const Word16 N /* i : Length of the vector */ ) { - int16_t i; + Word16 i; for ( i = 0; i < N; i++ ) { @@ -353,28 +324,12 @@ void set_s( void set_l( - int32_t y[], /* i/o: Vector to set */ - const int32_t a, /* i : Value to set the vector to */ - const int16_t N /* i : Length of the vector */ -) -{ - int16_t i; - - for ( i = 0; i < N; i++ ) - { - y[i] = a; - } - - return; -} - -void set_f( - float y[], /* i/o: Vector to set */ - const float a, /* i : Value to set the vector to */ - const int16_t N /* i : Lenght of the vector */ + Word32 y[], /* i/o: Vector to set */ + const Word32 a, /* i : Value to set the vector to */ + const Word16 N /* i : Length of the vector */ ) { - int16_t i; + Word16 i; for ( i = 0; i < N; i++ ) { @@ -391,11 +346,11 @@ void set_f( *---------------------------------------------------------------------*/ void set_zero( - float *vec, /* o : input vector */ - const int16_t lvec /* i : length of the vector */ + float *vec, /* o : input vector */ + const Word16 lvec /* i : length of the vector */ ) { - int16_t i; + Word16 i; for ( i = 0; i < lvec; i++ ) { @@ -409,8 +364,6 @@ void set_zero( /*---------------------------------------------------------------------* * mvr2r() * mvs2s() - * mvr2s() - * mvs2r() * mvr2d() * mvd2r() * @@ -420,10 +373,10 @@ void set_zero( void mvr2r( const float x[], /* i : input vector */ float y[], /* o : output vector */ - const int16_t n /* i : vector size */ + const Word16 n /* i : vector size */ ) { - int16_t i; + Word16 i; if ( n <= 0 ) { @@ -450,12 +403,12 @@ void mvr2r( } void mvs2s( - const int16_t x[], /* i : input vector */ - int16_t y[], /* o : output vector */ - const int16_t n /* i : vector size */ + const Word16 x[], /* i : input vector */ + Word16 y[], /* o : output vector */ + const Word16 n /* i : vector size */ ) { - int16_t i; + Word16 i; if ( n <= 0 ) { @@ -482,12 +435,12 @@ void mvs2s( } void mvl2l( - const int32_t x[], /* i : input vector */ - int32_t y[], /* o : output vector */ - const int16_t n /* i : vector size */ + const Word32 x[], /* i : input vector */ + Word32 y[], /* o : output vector */ + const Word16 n /* i : vector size */ ) { - int16_t i; + Word16 i; if ( n <= 0 ) { @@ -687,32 +640,6 @@ Word16 minimum_l( return ind; } -/*---------------------------------------------------------------------* - * dotp() - * - * Dot product of vector x[] and vector y[] - *---------------------------------------------------------------------*/ - -/*! r: dot product of x[] and y[] */ -float dotp( - const float x[], /* i : vector x[] */ - const float y[], /* i : vector y[] */ - const int16_t n /* i : vector length */ -) -{ - int16_t i; - float suma; - - suma = x[0] * y[0]; - - for ( i = 1; i < n; i++ ) - { - suma += x[i] * y[i]; - } - - return suma; -} - /*---------------------------------------------------------------------* * dotp() * @@ -800,20 +727,6 @@ Word32 dotp_fixed_32( return W_extract_l( suma ); } -/*---------------------------------------------------------------------* - * inv_sqrt() - * - * Find the inverse square root of the input value - *---------------------------------------------------------------------*/ - -/*! r: inverse square root of input value */ -float inv_sqrt( - const float x /* i : input value */ -) -{ - return (float) ( 1.0 / sqrt( x ) ); -} - /*-------------------------------------------------------------------* * v_add_w64() * @@ -839,32 +752,8 @@ void v_add_w64( return; } - -/*-------------------------------------------------------------------* - * v_sub() - * - * Subtraction of two vectors sample by sample - *-------------------------------------------------------------------*/ - -void v_sub( - const float x1[], /* i : Input vector 1 */ - const float x2[], /* i : Input vector 2 */ - float y[], /* o : Output vector that contains vector 1 - vector 2 */ - const int16_t N /* i : Vector length */ -) -{ - int16_t i; - - for ( i = 0; i < N; i++ ) - { - y[i] = x1[i] - x2[i]; - } - - return; -} - /*-------------------------------------------------------------------* - * v_sub() + * v_sub_fixed() * * Subtraction of two vectors sample by sample *-------------------------------------------------------------------*/ @@ -977,9 +866,9 @@ void v_multc_fixed_16_16( *-------------------------------------------------------------------*/ float usdequant( - const int16_t idx, /* i : quantizer index */ - const float qlow, /* i : lowest codebook entry (index 0) */ - const float delta /* i : quantization step */ + const Word16 idx, /* i : quantizer index */ + const float qlow, /* i : lowest codebook entry (index 0) */ + const float delta /* i : quantization step */ ) { float g; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 14a97a034..77e779efd 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -241,9 +241,9 @@ void fix2f_16( Word16 *var_fix, float *var_flt, Word32 expo ) #undef WMC_TOOL_SKIP -int16_t norm_ul( uint32_t UL_var1 ) +Word16 norm_ul( UWord32 UL_var1 ) { - int16_t var_out; + Word16 var_out; if ( UL_var1 == 0 ) { @@ -251,7 +251,7 @@ int16_t norm_ul( uint32_t UL_var1 ) } else { - for ( var_out = 0; UL_var1 < (uint32_t) 0x80000000U; var_out++ ) + for ( var_out = 0; UL_var1 < (UWord32) 0x80000000U; var_out++ ) { UL_var1 <<= 1; } @@ -997,7 +997,7 @@ void scale_sig( } /*---------------------------------------------------------------------* - * mean() + * mean_fx() * *---------------------------------------------------------------------*/ Word16 mean_fx( /* o : mean of vector */ @@ -2171,7 +2171,7 @@ Word16 own_random2_fx( Word16 seed ) } /*--------------------------------------------------------------------- - * sign() + * sign_fx() * *---------------------------------------------------------------------*/ @@ -4207,7 +4207,7 @@ Word16 lin_interp_ivas_fx( } /*--------------------------------------------------------------------- - * sign() + * sign_l() * *---------------------------------------------------------------------*/ @@ -4245,7 +4245,7 @@ void v_mult16_fixed( } /*---------------------------------------------------------------------* - * set_zero() + * set_zero_fx() * * Set a vector vec[] of dimension lvec to zero *---------------------------------------------------------------------*/ diff --git a/lib_dec/dec_acelp_tcx_main_fx.c b/lib_dec/dec_acelp_tcx_main_fx.c index 21bf7cf12..eea558914 100644 --- a/lib_dec/dec_acelp_tcx_main_fx.c +++ b/lib_dec/dec_acelp_tcx_main_fx.c @@ -364,7 +364,7 @@ Word16 dec_acelp_tcx_frame_fx( { /* Copy back parameters from previous frame, because there is a high risk they are corrupt * DO concealment with configuration used in previous frame */ - st->m_frame_type = (uint8_t) m_frame_type; + st->m_frame_type = (UWord8) m_frame_type; move16(); st->bwidth = bwidth; move16(); diff --git a/lib_enc/acelp_core_enc_fx.c b/lib_enc/acelp_core_enc_fx.c index 6ba21136e..f942a19ff 100644 --- a/lib_enc/acelp_core_enc_fx.c +++ b/lib_enc/acelp_core_enc_fx.c @@ -38,7 +38,6 @@ ivas_error acelp_core_enc_fx( Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/ Word16 *unbits_fx, /* o : number of unused bits Q0*/ STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i/o: TD stereo encoder handle */ - const float tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */ const Word16 Q_new, const Word16 shift ) { @@ -107,8 +106,6 @@ ivas_error acelp_core_enc_fx( * Initialization *------------------------------------------------------------------*/ - (void) tdm_lsfQ_PCh; - Es_pred_fx = 0; move16(); diff --git a/lib_enc/evs_enc_fx.c b/lib_enc/evs_enc_fx.c index 624ec20fc..8e9a82378 100644 --- a/lib_enc/evs_enc_fx.c +++ b/lib_enc/evs_enc_fx.c @@ -269,7 +269,7 @@ ivas_error evs_enc_fx( IF( EQ_16( st->core, ACELP_CORE ) ) { acelp_core_enc_fx( st, inp, ener, A, Aw, epsP_h, epsP_l, lsp_new, lsp_mid, vad_hover_flag, - attack_flag, bwe_exc_extended, voice_factors, old_syn_12k8_16k, pitch_buf, &unbits, NULL, NULL, Q_new, shift ); + attack_flag, bwe_exc_extended, voice_factors, old_syn_12k8_16k, pitch_buf, &unbits, NULL, Q_new, shift ); } /*---------------------------------------------------------------------* * HQ core encoding diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 72137bdce..d3528370f 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -61,7 +61,6 @@ ivas_error acelp_core_enc_fx( Word16 pitch_buf_fx[NB_SUBFR16k], /* o : floating pitch for each subframe Q6*/ Word16 *unbits_fx, /* o : number of unused bits Q0*/ STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i/o: TD stereo encoder handle */ - const float tdm_lsfQ_PCh[M], /* i : Q LSFs for primary channel */ const Word16 Q_new, const Word16 shift diff --git a/lib_enc/rom_enc.h b/lib_enc/rom_enc.h index 35fd3027d..7da1da92a 100644 --- a/lib_enc/rom_enc.h +++ b/lib_enc/rom_enc.h @@ -52,7 +52,6 @@ extern const Word16 W_HIST_S_FX[DTX_HIST_SIZE]; /* CNG & DTX - table for calcula extern const Word16 bwd_start_bin[]; // Q0 extern const Word16 bwd_end_bin[]; // Q0 -extern const float h_fir[]; /* 2nd order fir filter for wsp, decimation by 2 */ extern const Word16 h_fir_fx[]; /* 2nd order fir filter for wsp, decimation by 2 Q15*/ extern const Word16 preemphCompensation_fx[]; // Q11 diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index f62440749..7f9cfb57a 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -121,10 +121,6 @@ extern const Word32 ivas_reverb_default_fc_fx[]; /*Q-16*/ extern const Word32 ivas_reverb_default_RT60_fx[]; /*Q-26*/ extern const Word32 ivas_reverb_default_DSR_fx[]; /*Q-30*/ -extern const float ivas_reverb_default_fc[]; -extern const float ivas_reverb_default_RT60[]; -extern const float ivas_reverb_default_DSR[]; - extern const Word32 release_cnst_table[4][201]; // Q31 /*----------------------------------------------------------------------------------* diff --git a/lib_rend/ivas_rom_rend_fx.c b/lib_rend/ivas_rom_rend_fx.c index 4f101582c..d14be4afe 100644 --- a/lib_rend/ivas_rom_rend_fx.c +++ b/lib_rend/ivas_rom_rend_fx.c @@ -561,42 +561,6 @@ const Word32 ivas_reverb_default_DSR_fx[IVAS_REVERB_DEFAULT_N_BANDS] /*Q30*/ = 66, 30, 28 }; -const float ivas_reverb_default_fc[IVAS_REVERB_DEFAULT_N_BANDS] = -{ - 20.0f, 25.0f, 31.5f, 40.0f, - 50.0f, 63.0f, 80.0f, 100.0f, - 125.0f, 160.0f, 200.0f, 250.0f, - 315.0f, 400.0f, 500.0f, 630.0f, - 800.0f, 1000.0f, 1250.0f, 1600.0f, - 2000.0f, 2500.0f, 3150.0f, 4000.0f, - 5000.0f, 6300.0f, 8000.0f, 10000.0f, - 12500.0f, 16000.0f, 20000.0f -}; - -const float ivas_reverb_default_RT60[IVAS_REVERB_DEFAULT_N_BANDS] = -{ - 1.3622f, 1.4486f, 1.3168f, 1.5787f, - 1.4766f, 1.3954f, 1.2889f, 1.3462f, - 1.0759f, 1.0401f, 1.097f, 1.085f, - 1.091f, 1.0404f, 1.0499f, 1.0699f, - 1.1028f, 1.1714f, 1.1027f, 1.0666f, - 1.055f, 1.0553f, 1.0521f, 1.0569f, - 1.0421f, 0.97822f, 0.80487f, 0.75944f, - 0.71945f, 0.61682f, 0.60031f -}; - -const float ivas_reverb_default_DSR[IVAS_REVERB_DEFAULT_N_BANDS] = -{ - 1.8811e-08f, 2.1428e-08f, 1.3972e-08f, 1.51e-08f, - 1.287e-08f, 1.8747e-08f, 2.413e-08f, 3.9927e-08f, - 8.9719e-08f, 1.902e-07f, 3.702e-07f, 6.1341e-07f, - 7.1432e-07f, 6.5331e-07f, 4.6094e-07f, 5.4683e-07f, - 7.0134e-07f, 6.856e-07f, 7.114e-07f, 6.9604e-07f, - 5.2939e-07f, 5.699e-07f, 6.1773e-07f, 5.7488e-07f, - 4.7748e-07f, 2.7213e-07f, 1.3681e-07f, 1.0941e-07f, - 6.2001e-08f, 2.8483e-08f, 2.6267e-08f -}; - const Word32 release_cnst_table[4][201] = // Q31 { { -- GitLab From da2b43248ebe6f50e354ed8846d6f4d8d4421e7e Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 19 May 2025 12:01:23 +0530 Subject: [PATCH 554/698] Fix for 3GPP issue 1534: BASOP Encoder Distortion for ISM 1 FER at 32kbps, EXT output, high MLD Link #1534 --- lib_enc/mslvq_enc_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_enc/mslvq_enc_fx.c b/lib_enc/mslvq_enc_fx.c index 8f8dd4537..4955dede8 100644 --- a/lib_enc/mslvq_enc_fx.c +++ b/lib_enc/mslvq_enc_fx.c @@ -1221,10 +1221,10 @@ Word32 mslvq_ivas_16( } ELSE { - p_sigma = sigma_p_fx[mode]; + p_sigma = sigma_p_ivas_fx[mode]; /* inverse sigma is precomputed to save complexity */ - p_inv_sigma = inv_sigma_p_fx[mode]; + p_inv_sigma = inv_sigma_p_ivas_fx[mode]; p_scales = scales_p_ivas_fx[mode_glb]; -- GitLab From 045831118042045062a1ae656ea51451aed2a72a Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:04 +0200 Subject: [PATCH 555/698] [cleanup] accept FIX_955_FASTCONV_REND_IN_ISM --- lib_com/options.h | 1 - lib_dec/ivas_jbm_dec_fx.c | 6 ------ 2 files changed, 7 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index e764bc83b..1e87603ff 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -96,7 +96,6 @@ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ #define NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER /* Qualcomm: issue 953: fix order or ER channels in LC mode*/ -#define FIX_955_FASTCONV_REND_IN_ISM /* VA: put FastConv rendering call under DEBUGGING */ #define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */ #define FIX_959_MASA_LINEAR_REND /* VA: issue 959: remove unused calling of ivas_sba_linear_renderer() in MASA rendering */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index fa0a1e630..2d22849f2 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1984,7 +1984,6 @@ ivas_error ivas_jbm_dec_render_fx( { ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); } -#ifdef FIX_955_FASTCONV_REND_IN_ISM #ifdef DEBUGGING ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) #else @@ -1992,11 +1991,6 @@ ivas_error ivas_jbm_dec_render_fx( #endif { /* Convert to Ambisonics */ -#else - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) - { -/* Convert to Ambisonics; used also for ISM->HOA3->binaural rendering */ -#endif FOR( i = 0; i < st_ivas->nchan_transport; i++ ) { FOR( j = 0; j < HOA3_CHANNELS; j++ ) -- GitLab From 15a67f9dad66484503a905f0d271af2e0d2e274c Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:07 +0200 Subject: [PATCH 556/698] [cleanup] accept FIX_969_USAN_IGF_ARITH --- lib_com/options.h | 1 - lib_dec/igf_scf_dec_fx.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 1e87603ff..d92201a15 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -101,7 +101,6 @@ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define NONBE_FIX_935_SBA_REVERB /* FhG: issue 935: fix MSAN error for SBA related to BINAURAL_ROOM_REVERB */ -#define FIX_969_USAN_IGF_ARITH /* FhG: issue 969: fix USAN error in igf_sce_dec; same issue as #962 */ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ #define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ diff --git a/lib_dec/igf_scf_dec_fx.c b/lib_dec/igf_scf_dec_fx.c index 3db6581da..6478b3f92 100644 --- a/lib_dec/igf_scf_dec_fx.c +++ b/lib_dec/igf_scf_dec_fx.c @@ -189,9 +189,7 @@ static void decode_sfe_vector_fx( { /* (t == 0) && (f == 0) */ /* decode one of the IGF_SYMBOLS_IN_TABLE == 27 alphabet symbols using the new raw AC function */ -#ifdef FIX_969_USAN_IGF_ARITH /* NOTE: the float equivalent uses a tmp variable + explicit cast here to avoid undefined behaviour here. This BASOP version does not need it as it already uses signed Word16 return value here. */ -#endif res = ari_decode_14bits_s27_ext_fx( st, &hPrivateData->acState, (const UWord16 *) hPrivateData->cf_se00 ); pred = arith_decode_bits_fx( hPrivateData, st, 2 ); /* LSBs as 2 bit raw */ -- GitLab From a5680fbef0997f729ab9387387ffbac80c9fe52d Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:10 +0200 Subject: [PATCH 557/698] [cleanup] accept FIX_959_MASA_LINEAR_REND --- lib_com/options.h | 1 - lib_dec/ivas_jbm_dec_fx.c | 17 ----------------- lib_dec/ivas_output_config_fx.c | 4 ---- 3 files changed, 22 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index d92201a15..4c0d6034f 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -97,7 +97,6 @@ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ #define NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER /* Qualcomm: issue 953: fix order or ER channels in LC mode*/ #define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */ -#define FIX_959_MASA_LINEAR_REND /* VA: issue 959: remove unused calling of ivas_sba_linear_renderer() in MASA rendering */ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define NONBE_FIX_935_SBA_REVERB /* FhG: issue 935: fix MSAN error for SBA related to BINAURAL_ROOM_REVERB */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 2d22849f2..8ae516d7c 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2102,24 +2102,7 @@ ivas_error ivas_jbm_dec_render_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { -#ifndef FIX_959_MASA_LINEAR_REND - IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) ) - { - *nSamplesRendered = s_min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); - move16(); - FOR( n = 0; n < nchan_remapped; n++ ) - { - Copy32( st_ivas->hTcBuffer->tc_fx[n] + st_ivas->hTcBuffer->n_samples_rendered, p_output_fx[n], *nSamplesRendered ); - } - IF( NE_32( ( error = ivas_sba_linear_renderer_fx( p_output_fx, *nSamplesRendered, nchan_remapped, 0, output_config, st_ivas->hOutSetup ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) ) -#else IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) ) -#endif { ivas_dirac_dec_render_fx( st_ivas, nchan_remapped, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output_fx ); } diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c index 94a1869f4..8afd003be 100644 --- a/lib_dec/ivas_output_config_fx.c +++ b/lib_dec/ivas_output_config_fx.c @@ -453,11 +453,7 @@ void ivas_renderer_select( *internal_config = IVAS_AUDIO_CONFIG_HOA3; move16(); } -#ifdef FIX_959_MASA_LINEAR_REND *renderer_type = RENDERER_SBA_LINEAR_DEC; -#else - st_ivas->renderer_type = RENDERER_SBA_LINEAR_DEC; -#endif move16(); } ELSE IF( ( EQ_32( ivas_format, MASA_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) && EQ_16( st_ivas->nchan_transport, 1 ) ) || -- GitLab From 35850efa8640a21d6ac814ee61f8d456a813b3e0 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:13 +0200 Subject: [PATCH 558/698] [cleanup] accept NONBE_FIX_BINARY_BINAURAL_READING --- apps/decoder.c | 70 ---------- apps/renderer.c | 25 ---- lib_com/ivas_cnst.h | 3 - lib_com/ivas_error.h | 4 - lib_com/options.h | 1 - lib_dec/ivas_init_dec.c | 4 - lib_dec/lib_dec.h | 16 --- lib_dec/lib_dec_fx.c | 32 ----- lib_rend/ivas_crend_fx.c | 18 --- lib_rend/ivas_hrtf_fx.c | 4 - lib_rend/ivas_objectRenderer_fx.c | 4 - lib_rend/ivas_objectRenderer_mix_fx.c | 11 -- lib_rend/ivas_stat_rend.h | 14 -- lib_rend/lib_rend.c | 185 -------------------------- lib_rend/lib_rend.h | 4 - lib_util/hrtf_file_reader.c | 184 +------------------------ lib_util/hrtf_file_reader.h | 14 -- 17 files changed, 6 insertions(+), 587 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 64f131206..a59bc5fac 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -174,10 +174,8 @@ int main( RenderConfigReader *renderConfigReader = NULL; int16_t *pcmBuf = NULL; IVAS_RENDER_FRAMESIZE asked_frame_size; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; -#endif #ifdef WMOPS reset_wmops(); @@ -603,16 +601,12 @@ int main( if ( arg.hrtfReaderEnabled ) { -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL; -#endif if ( ( error = IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) @@ -649,16 +643,8 @@ int main( destroy_td_hrtf( hHrtfTD ); } } -#else - if ( ( error = load_HRTF_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); - goto cleanup; - } -#endif #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( ( *hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) @@ -667,16 +653,6 @@ int main( goto cleanup; } } -#else - if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); - goto cleanup; - } -#endif -#endif -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; #endif if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK ) { @@ -684,7 +660,6 @@ int main( goto cleanup; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) { #ifdef FIX_OLD_BINARY_FORMAT @@ -721,26 +696,14 @@ int main( } #endif } -#else - if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfFileName ); - goto cleanup; - } -#endif -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL; -#else - IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL; -#endif if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfFastConvHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK ) { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) @@ -753,26 +716,14 @@ int main( destroy_fastconv_hrtf( hHrtfFastConv ); } } -#else - if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfFileName ); - goto cleanup; - } -#endif -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL; -#else - IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL; -#endif if ( ( error = IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( ( error = load_parambin_HRTF_from_binary( *hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK ) { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) @@ -785,13 +736,6 @@ int main( destroy_parambin_hrtf( hHrtfParambin ); } } -#else - if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfFileName ); - goto cleanup; - } -#endif } /*------------------------------------------------------------------------------------------* @@ -854,30 +798,16 @@ cleanup: if ( arg.hrtfReaderEnabled ) { -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL; -#endif IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( hHrtfTD != NULL ) { destroy_td_hrtf( hHrtfTD ); } -#else - dealloc_HRTF_binary( hHrtfTD ); -#endif -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; -#endif IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( hSetOfHRTF != NULL ) { destroy_SetOfHRTF( hSetOfHRTF ); } -#else - destroy_SetOfHRTF( hSetOfHRTF ); -#endif } IVAS_DEC_Close( &hIvasDec ); diff --git a/apps/renderer.c b/apps/renderer.c index 1ef7473c5..64ef2e5d6 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -762,12 +762,10 @@ int main( #endif Vector3PairFileReader *referenceVectorReader = NULL; hrtfFileReader *hrtfFileReader = NULL; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL; IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL; IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; -#endif IsmPositionProvider *positionProvider; LfeRoutingConfig *lfeRoutingConfigs[RENDERER_MAX_MC_INPUTS]; RenderConfigReader *renderConfigReader = NULL; @@ -912,16 +910,6 @@ int main( } } -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - if ( !isEmptyString( args.customHrtfFilePath ) ) - { - if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK ) - { - fprintf( stderr, "Error opening file: %s\n", args.customHrtfFilePath ); - exit( -1 ); - } - } -#endif if ( !isEmptyString( args.renderConfigFilePath ) ) { @@ -1009,17 +997,12 @@ int main( Word32 nonDiegeticPanGain_fx = ( args.nonDiegeticPanGain == 1.0f ) ? ONE_IN_Q31 : ( args.nonDiegeticPanGain == -1.0f ) ? L_negate( ONE_IN_Q31 ) : (Word32) ( args.nonDiegeticPanGain * ( 1LL << Q31 ) ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, !isEmptyString( args.customHrtfFilePath ), args.nonDiegeticPan, nonDiegeticPanGain_fx, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) -#else - IF( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, nonDiegeticPanGain_fx, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "Error opening renderer handle: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( !isEmptyString( args.customHrtfFilePath ) ) { if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK ) @@ -1165,7 +1148,6 @@ int main( hrtfFileReader_close( &hrtfFileReader ); } -#endif fprintf( stdout, "Input audio file: %s\n", args.inputFilePath ); fprintf( stdout, "Output audio file: %s\n\n", args.outputFilePath ); @@ -2234,9 +2216,7 @@ int main( free( outFloatBuffer ); free( outInt32Buffer ); free( inInt32Buffer ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING cleanup: -#endif #ifdef SPLIT_REND_WITH_HEAD_ROT if ( bitsBufferData != NULL ) @@ -2270,10 +2250,6 @@ cleanup: RotationFileReader_close( &externalOrientationFileReader ); RotationFileReader_close( &referenceRotReader ); Vector3PairFileReader_close( &referenceVectorReader ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - hrtfFileReader_close( &hrtfFileReader ); -#endif -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( hSetOfHRTF != NULL && *hSetOfHRTF != NULL ) { destroy_SetOfHRTF( hSetOfHRTF ); @@ -2282,7 +2258,6 @@ cleanup: { destroy_td_hrtf( hHrtfTD ); } -#endif IVAS_REND_Close( &hIvasRend ); IsmPositionProvider_close( positionProvider ); RenderConfigReader_close( &renderConfigReader ); diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index ee34014df..97602e73d 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1683,9 +1683,6 @@ typedef enum #define MAX_ANGULAR_STEP_INV ( 1.0f / MAX_ANGULAR_STEP ) #define MAX_INTERPOLATION_STEPS 12 -#ifndef NONBE_FIX_BINARY_BINAURAL_READING -#define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC ) -#endif #define DEG_360_IN_Q22 ( 360 << Q22 ) // Q22 #define DEG_180_IN_Q22 ( 180 << Q22 ) // Q22 diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h index 4955c7e2c..14c37a593 100644 --- a/lib_com/ivas_error.h +++ b/lib_com/ivas_error.h @@ -78,9 +78,7 @@ typedef enum IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED, IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED, IVAS_ERR_INVALID_HRTF, -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA, -#endif IVAS_ERR_INVALID_INPUT_FORMAT, IVAS_ERR_INVALID_INDEX, IVAS_ERR_NOT_SUPPORTED_OPTION, @@ -260,10 +258,8 @@ static inline const char *ivas_error_to_string( ivas_error error_code ) return "Acoustic environment not supported"; case IVAS_ERR_INVALID_HRTF: return "Unsupported HRTF filter set"; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING case IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA: return "Renderer data missing in HRTF binary file"; -#endif case IVAS_ERR_INVALID_INPUT_FORMAT: return "Invalid input format"; case IVAS_ERR_INVALID_INDEX: diff --git a/lib_com/options.h b/lib_com/options.h index 4c0d6034f..f19e13466 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -102,7 +102,6 @@ #define NONBE_FIX_935_SBA_REVERB /* FhG: issue 935: fix MSAN error for SBA related to BINAURAL_ROOM_REVERB */ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ -#define NONBE_FIX_BINARY_BINAURAL_READING /* Orange: Add support for reading binaural binary file */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 69e246164..b4af0ed06 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -3078,11 +3078,7 @@ void ivas_destroy_dec_fx( { ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( st_ivas->hHrtfTD != NULL ) -#else - ELSE IF( st_ivas->hHrtfTD != NULL ) -#endif { BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval ); ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD ); diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index f2281b779..b6ce35d90 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -360,39 +360,23 @@ ivas_error IVAS_DEC_FeedCustomLsData( /*! r: error code */ ivas_error IVAS_DEC_GetHrtfHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ -#else - IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o : HRTF handle */ -#endif ); /*! r: error code */ ivas_error IVAS_DEC_GetHrtfCRendHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - #ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ -#else - IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */ -#endif ); ivas_error IVAS_DEC_GetHrtfFastConvHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ -#else - IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ -#endif ); ivas_error IVAS_DEC_GetHrtfParamBinHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ -#else - IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */ -#endif ); diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index e2bd37600..7ead34cca 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -2512,11 +2512,7 @@ ivas_error IVAS_DEC_FeedCustomLsData( ivas_error IVAS_DEC_GetHrtfHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ -#else - IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o : HRTF handle */ -#endif ) { test(); @@ -2526,11 +2522,7 @@ ivas_error IVAS_DEC_GetHrtfHandle( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING *hHrtfTD = &hIvasDec->st_ivas->hHrtfTD; -#else - *hHrtfTD = hIvasDec->st_ivas->hHrtfTD; -#endif return IVAS_ERR_OK; } @@ -2544,11 +2536,7 @@ ivas_error IVAS_DEC_GetHrtfHandle( ivas_error IVAS_DEC_GetHrtfCRendHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ -#else - IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */ -#endif ) { test(); @@ -2558,11 +2546,7 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( return IVAS_ERR_WRONG_PARAMS; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING *hSetOfHRTF = &hIvasDec->st_ivas->hSetOfHRTF; -#else - *hSetOfHRTF = hIvasDec->st_ivas->hSetOfHRTF; -#endif return IVAS_ERR_OK; } @@ -2576,11 +2560,7 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( ivas_error IVAS_DEC_GetHrtfFastConvHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ -#else - IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ -#endif ) { test(); @@ -2590,11 +2570,7 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle( return IVAS_ERR_WRONG_PARAMS; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING *hHrtfFastConv = &hIvasDec->st_ivas->hHrtfFastConv; -#else - *hHrtfFastConv = hIvasDec->st_ivas->hHrtfFastConv; -#endif return IVAS_ERR_OK; } @@ -2608,11 +2584,7 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle( ivas_error IVAS_DEC_GetHrtfParamBinHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ -#else - IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */ -#endif ) { test(); @@ -2622,11 +2594,7 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle( return IVAS_ERR_WRONG_PARAMS; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING *hHrtfParambin = &hIvasDec->st_ivas->hHrtfParambin; -#else - *hHrtfParambin = hIvasDec->st_ivas->hHrtfParambin; -#endif return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index 134d02996..36965fc61 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -235,7 +235,6 @@ static ivas_error ivas_rend_initCrend_fx( return IVAS_ERR_INTERNAL_FATAL; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING test(); test(); test(); @@ -258,14 +257,9 @@ static ivas_error ivas_rend_initCrend_fx( ( ( hSetOfHRTF->hHRTF_hrir_foa == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_FOA ) ) || ( ( hSetOfHRTF->hHRTF_hrir_hoa2 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA2 ) ) || ( ( hSetOfHRTF->hHRTF_hrir_hoa3 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA3 ) ) ) -#else - IF( hSetOfHRTF == NULL ) -#endif { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING hHrtf->init_from_rom = 1; move16(); -#endif IF( EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) { hHrtf->max_num_ir = sub( hHrtf->max_num_ir, 1 ); /* subtract LFE */ @@ -1014,9 +1008,7 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING hHrtf->init_from_rom = 0; -#endif IF( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) { hHrtf->max_num_ir = sub( hHrtf->max_num_ir, 1 ); /* subtract LFE */ @@ -1026,24 +1018,20 @@ static ivas_error ivas_rend_initCrend_fx( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( hSetOfHRTF->hHRTF_brir_combined == NULL ) { return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Invalid command wrong output format" ); } -#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_brir_combined->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_brir_combined->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_brir_combined->index_frequency_max_diffuse; } ELSE { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( hSetOfHRTF->hHRTF_hrir_combined == NULL ) { return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Invalid command wrong output format" ); } -#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_combined->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_combined->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_combined->index_frequency_max_diffuse; @@ -1152,12 +1140,10 @@ static ivas_error ivas_rend_initCrend_fx( { IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA3 ) ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( hSetOfHRTF->hHRTF_hrir_hoa3 == NULL ) { return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); } -#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_hoa3->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa3->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa3->index_frequency_max_diffuse; @@ -1203,12 +1189,10 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA2 ) ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( hSetOfHRTF->hHRTF_hrir_hoa2 == NULL ) { return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); } -#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_hoa2->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa2->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa2->index_frequency_max_diffuse; @@ -1254,12 +1238,10 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_FOA ) ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( hSetOfHRTF->hHRTF_hrir_foa == NULL ) { return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); } -#endif hHrtf->latency_s_fx = hSetOfHRTF->hHRTF_hrir_foa->latency_s_fx; // Q31 hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_foa->max_num_iterations; hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_foa->index_frequency_max_diffuse; diff --git a/lib_rend/ivas_hrtf_fx.c b/lib_rend/ivas_hrtf_fx.c index a9167f95b..0cb8ae505 100644 --- a/lib_rend/ivas_hrtf_fx.c +++ b/lib_rend/ivas_hrtf_fx.c @@ -54,9 +54,7 @@ ivas_error ivas_HRTF_binary_open_fx( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary!" ); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING set_c( (int8_t *) ( *hHrtfTD ), 0, (int32_t) sizeof( TDREND_HRFILT_FiltSet_t ) ); -#endif return IVAS_ERR_OK; } @@ -188,9 +186,7 @@ ivas_error ivas_HRTF_parambin_binary_open_fx( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for parametric binauralizer HRTF tables!" ); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING set_c( (int8_t *) ( *hHrtfParambin ), 0, (int32_t) sizeof( HRTFS_PARAMBIN ) ); -#endif return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_objectRenderer_fx.c b/lib_rend/ivas_objectRenderer_fx.c index 8b11d1f7a..da2c3cce9 100644 --- a/lib_rend/ivas_objectRenderer_fx.c +++ b/lib_rend/ivas_objectRenderer_fx.c @@ -802,11 +802,7 @@ ivas_error ivas_td_binaural_open_ext_fx( { directivity_fx = hRendCfg->directivity_fx; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING return ivas_td_binaural_open_unwrap_fx( pTDRend->hHrtfTD, outFs, nchan_transport, ivas_format, transport_config, directivity_fx, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns, SrcInd ); -#else - return ivas_td_binaural_open_unwrap_fx( &pTDRend->hHrtfTD, outFs, *num_src, ivas_format, transport_config, directivity_fx, hTransSetup, &pTDRend->hBinRendererTd, &pTDRend->binaural_latency_ns, SrcInd ); -#endif } /*---------------------------------------------------------------------* * ivas_td_binaural_renderer_ext() diff --git a/lib_rend/ivas_objectRenderer_mix_fx.c b/lib_rend/ivas_objectRenderer_mix_fx.c index 589baf509..72042975b 100644 --- a/lib_rend/ivas_objectRenderer_mix_fx.c +++ b/lib_rend/ivas_objectRenderer_mix_fx.c @@ -156,12 +156,8 @@ void TDREND_MIX_Dealloc_fx( hBinRendererTd->Listener_p = NULL; } /* Dealloc HR filter set */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING test(); IF( ( *hBinRendererTd->pHrFiltSet_p != NULL ) && ( hBinRendererTd->HrFiltSet_p != NULL ) ) -#else - IF( hBinRendererTd->HrFiltSet_p != NULL ) -#endif { IF( EQ_16( hBinRendererTd->HrFiltSet_p->FilterMethod, TDREND_HRFILT_Method_BSplineModel ) ) { @@ -191,17 +187,12 @@ void TDREND_MIX_Dealloc_fx( } } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( EQ_16( hBinRendererTd->HrFiltSet_p->ModelParams.modelROM, 1 ) ) { free( hBinRendererTd->HrFiltSet_p ); hBinRendererTd->HrFiltSet_p = NULL; *hBinRendererTd->pHrFiltSet_p = NULL; } -#else - free( hBinRendererTd->HrFiltSet_p ); - hBinRendererTd->HrFiltSet_p = NULL; -#endif } return; @@ -266,9 +257,7 @@ ivas_error TDREND_MIX_Init_fx( hBinRendererTd->HrFiltSet_p = *hHrtfTD; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING hBinRendererTd->pHrFiltSet_p = hHrtfTD; -#endif IF( NE_32( hBinRendererTd->HrFiltSet_p->SampleRate, output_Fs ) ) { diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index 8cdb3d007..69351bae8 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -1296,9 +1296,7 @@ typedef struct ivas_binaural_td_rendering_struct TDREND_MIX_Listener_t *Listener_p; /* The virtual listener */ TDREND_HRFILT_FiltSet_t *HrFiltSet_p; /* HR filter set */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING TDREND_HRFILT_FiltSet_t **pHrFiltSet_p; /* pointer to HR filter set */ -#endif Word16 UseCommonDistAttenModel; /* Use common dist atten model (TRUE/FALSE) */ Word16 DistAttenEnabled; /* (TRUE/FALSE) */ @@ -1310,11 +1308,7 @@ typedef struct { Word32 binaural_latency_ns; BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING TDREND_HRFILT_FiltSet_t **hHrtfTD; -#else - TDREND_HRFILT_FiltSet_t *hHrtfTD; -#endif } TDREND_WRAPPER, *TDREND_WRAPPER_HANDLE; @@ -1341,9 +1335,7 @@ typedef struct ivas_hrtfs_structure Word16 inv_diffuse_weight_fx[MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] Q15 */ #endif Word32 latency_s_fx; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING Word16 init_from_rom; -#endif Word16 gain_lfe_fx; // Q14 } HRTFS_DATA, *HRTFS_HANDLE; /* Main Crend structure */ @@ -1478,9 +1470,7 @@ typedef struct ivas_hrtfs_parambin_struct Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /* Q28 */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING Word16 allocatedFromFile; -#endif } HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; @@ -1603,11 +1593,7 @@ typedef struct ivas_masa_external_rendering_struct #endif REVERB_STRUCT_HANDLE hReverb; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING HRTFS_PARAMBIN_HANDLE *hHrtfParambin; -#else - HRTFS_PARAMBIN_HANDLE hHrtfParambin; -#endif VBAP_HANDLE hVBAPdata; Word32 *hoa_dec_mtx; diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index c3be6c73b..7c64d0e26 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -57,11 +57,7 @@ /* Maximum buffer length (total) in samples. */ #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) -#ifdef NONBE_FIX_BINARY_BINAURAL_READING #define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ -#else -#define MAX_BIN_DELAY_SAMPLES 50 /* Maximum supported rendering latency for binaural IRs */ -#endif /*-------------------------------------------------------------------* * Local types @@ -210,7 +206,6 @@ typedef struct MASA_PREREND_HANDLE hMasaPrerend; } input_masa; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING typedef struct hrtf_handles { IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF; @@ -218,7 +213,6 @@ typedef struct hrtf_handles IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin; IVAS_DEC_HRTF_HANDLE hHrtfTD; } hrtf_handles; -#endif struct IVAS_REND { @@ -251,25 +245,14 @@ struct IVAS_REND RENDER_CONFIG_DATA *hRendererConfig; /* Renderer config pointer */ Word16 num_subframes; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING hrtf_handles hHrtfs; -#else - IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF; - IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv; - IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin; - IVAS_DEC_HRTF_HANDLE hHrtfTD; -#endif }; /*-------------------------------------------------------------------* * Local function prototypes *-------------------------------------------------------------------*/ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig, hrtf_handles *hHrtfs ); -#else -static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig ); -#endif static void freeMasaExtRenderer( MASA_EXT_REND_HANDLE *hMasaExtRendOut ); static void intermidiate_ext_dirac_render( @@ -1442,9 +1425,6 @@ static ivas_error initIsmMasaRendering( IF( inputIsm->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - inputIsm->tdRendWrapper.hHrtfTD = NULL; -#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -1468,10 +1448,8 @@ static ivas_error setRendInputActiveIsm( const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg -#ifdef NONBE_FIX_BINARY_BINAURAL_READING , hrtf_handles *hrtfs -#endif ) { ivas_error error; @@ -1525,11 +1503,7 @@ static ivas_error setRendInputActiveIsm( #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING inputIsm->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; -#else - inputIsm->splitTdRendWrappers[i] = defaultTdRendWrapper(); -#endif } #endif @@ -1538,9 +1512,7 @@ static ivas_error setRendInputActiveIsm( error = IVAS_ERR_OK; move32(); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING inputIsm->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; -#endif test(); #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -1552,11 +1524,7 @@ static ivas_error setRendInputActiveIsm( #endif { #ifndef SPLIT_REND_WITH_HEAD_ROT -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -1706,11 +1674,7 @@ static ivas_error setRendInputActiveIsm( } ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -1747,18 +1711,12 @@ static void clearInputIsm( IF( inputIsm->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - inputIsm->tdRendWrapper.hHrtfTD = NULL; -#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { ivas_td_binaural_close_fx( &inputIsm->splitTdRendWrappers[i].hBinRendererTd ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - inputIsm->splitTdRendWrappers[i].hHrtfTD = NULL; -#endif } #endif @@ -2537,9 +2495,7 @@ static ivas_error initMcBinauralRendering( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IVAS_DEC_HRTF_CREND_HANDLE hMixconv, -#endif uint8_t reconfigureFlag ) { ivas_error error; @@ -2577,9 +2533,6 @@ static ivas_error initMcBinauralRendering( IF( !reconfigureFlag || ( !useTDRend && inputMc->tdRendWrapper.hBinRendererTd != NULL ) ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - inputMc->tdRendWrapper.hHrtfTD = NULL; -#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -2590,9 +2543,6 @@ static ivas_error initMcBinauralRendering( IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; -#endif } } } @@ -2715,30 +2665,15 @@ static ivas_error initMcBinauralRendering( { /* open CREND */ #ifdef SPLIT_REND_WITH_HEAD_ROT -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, - NULL, - outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), - IVAS_ERR_OK ) ) -#endif -#else -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, outSampleRate ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, - NULL, - outSampleRate ) ), - IVAS_ERR_OK ) ) - -#endif #endif { return error; @@ -2795,9 +2730,6 @@ static ivas_error initMcMasaRendering( IF( inputMc->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - inputMc->tdRendWrapper.hHrtfTD = NULL; -#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -2889,10 +2821,8 @@ static ivas_error setRendInputActiveMc( const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg -#ifdef NONBE_FIX_BINARY_BINAURAL_READING , hrtf_handles *hrtfs -#endif ) { #ifdef SPLIT_REND_WITH_HEAD_ROT @@ -2928,15 +2858,11 @@ static ivas_error setRendInputActiveMc( setZeroPanMatrix_fx( inputMc->panGains_fx ); inputMc->customLsInput = defaultCustomLs(); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( hrtfs->hHrtfTD ) { inputMc->tdRendWrapper.binaural_latency_ns = Mult_32_32( hrtfs->hHrtfTD->latency_s_fx, 1000000000 ); } inputMc->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; -#else - inputMc->tdRendWrapper = defaultTdRendWrapper(); -#endif inputMc->crendWrapper = NULL; inputMc->hReverb = NULL; inputMc->hMcMasa = NULL; @@ -2959,15 +2885,11 @@ static ivas_error setRendInputActiveMc( #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( hrtfs->hHrtfTD ) { inputMc->splitTdRendWrappers[i].binaural_latency_ns = Mult_32_32( hrtfs->hHrtfTD->latency_s_fx, 1000000000 ); } inputMc->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; -#else - inputMc->splitTdRendWrappers[i] = defaultTdRendWrapper(); -#endif } IF( EQ_32( getAudioConfigType( outConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) @@ -2975,15 +2897,10 @@ static ivas_error setRendInputActiveMc( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, hrtfs->hSetOfHRTF, FALSE ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, FALSE ) ), - IVAS_ERR_OK ) ) -#endif { return error; } @@ -3035,26 +2952,16 @@ static void clearInputMc( IF( inputMc->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - inputMc->tdRendWrapper.hHrtfTD = NULL; -#endif } #ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; } -#else - IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) - { - ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); - } -#endif } #endif @@ -3152,18 +3059,11 @@ static ivas_error initSbaPanGainsForSbaOut( return error; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING static ivas_error updateSbaPanGains( input_sba *inputSba, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, IVAS_DEC_HRTF_CREND_HANDLE hMixconv ) -#else -static ivas_error updateSbaPanGains( - input_sba *inputSba, - const AUDIO_CONFIG outConfig, - RENDER_CONFIG_DATA *hRendCfg ) -#endif { ivas_error error; AUDIO_CONFIG inConfig; @@ -3225,21 +3125,12 @@ static ivas_error updateSbaPanGains( else #endif { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif -#else -#ifdef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif - #endif { return error; @@ -3253,18 +3144,10 @@ static ivas_error updateSbaPanGains( { return error; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING #ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif -#else -#ifdef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif #endif { return error; @@ -3316,10 +3199,8 @@ static ivas_error setRendInputActiveSba( const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg -#ifdef NONBE_FIX_BINARY_BINAURAL_READING , hrtf_handles *hrtfs -#endif ) { @@ -3368,9 +3249,7 @@ static ivas_error setRendInputActiveSba( { initRotGains_fx( inputSba->rot_gains_prev_fx[pos_idx] ); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING inputSba->cldfbRendWrapper.hHrtfFastConv = hrtfs->hHrtfFastConv; -#endif #else initRotGains_fx( inputSba->rot_gains_prev_fx ); #endif @@ -3383,11 +3262,7 @@ static ivas_error setRendInputActiveSba( return error; } } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg, hrtfs->hSetOfHRTF ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -3427,10 +3302,8 @@ static ivas_error setRendInputActiveMasa( const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg -#ifdef NONBE_FIX_BINARY_BINAURAL_READING , hrtf_handles *hrtfs -#endif ) /* Todo: This is not used at all within MASA. Support might be better to do after refactoring. */ { @@ -3483,11 +3356,7 @@ static ivas_error setRendInputActiveMasa( } ELSE { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig, hrtfs ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -3527,9 +3396,7 @@ ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, const Word32 outputSampleRate, const AUDIO_CONFIG outConfig, -#ifdef NONBE_FIX_BINARY_BINAURAL_READING const bool asHrtfBinary, -#endif const Word16 nonDiegeticPan, const Word32 nonDiegeticPanGain, /* Q31 */ const Word16 num_subframes ) @@ -3681,7 +3548,6 @@ ivas_error IVAS_REND_Open( move16(); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING hIvasRend->hHrtfs.hHrtfFastConv = NULL; hIvasRend->hHrtfs.hHrtfParambin = NULL; hIvasRend->hHrtfs.hHrtfTD = NULL; @@ -3705,7 +3571,6 @@ ivas_error IVAS_REND_Open( return error; } } -#endif return IVAS_ERR_OK; } @@ -3852,11 +3717,7 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( /* Input inactive, skip. */ CONTINUE; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig, NULL ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -4237,11 +4098,7 @@ ivas_error IVAS_REND_AddInput_fx( Word32 maxNumInputsOfType; void *inputsArray; Word32 inputStructSize; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA *, hrtf_handles *hrtfs ); -#else - ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA * ); -#endif Word32 inputIndex; /* Validate function arguments */ @@ -4311,11 +4168,7 @@ ivas_error IVAS_REND_AddInput_fx( *inputId = makeInputId( inConfig, inputIndex ); move16(); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, hIvasRend->hRendererConfig, &hIvasRend->hHrtfs ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = activateInput( (UWord8 *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, hIvasRend->hRendererConfig ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -4381,15 +4234,10 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( IF( EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, FALSE ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, FALSE ) ), - IVAS_ERR_OK ) ) -#endif { return error; } @@ -5220,15 +5068,10 @@ ivas_error IVAS_REND_SetHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, TRUE ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), - IVAS_ERR_OK ) ) -#endif { return error; } @@ -5332,16 +5175,10 @@ ivas_error IVAS_REND_DisableHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, TRUE ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), - IVAS_ERR_OK ) ) - -#endif { return error; @@ -9498,7 +9335,6 @@ void IVAS_REND_Close( ivas_external_orientation_close_fx( &hIvasRend->hExternalOrientationData ); ivas_combined_orientation_close_fx( &hIvasRend->hCombinedOrientationData ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING /* Fastconv HRTF memories */ ivas_binaural_hrtf_close( &hIvasRend->hHrtfs.hHrtfFastConv ); @@ -9507,7 +9343,6 @@ void IVAS_REND_Close( ivas_HRTF_CRend_binary_close_fx( &( hIvasRend->hHrtfs.hSetOfHRTF ) ); ivas_HRTF_fastconv_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfFastConv ) ); ivas_HRTF_parambin_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfParambin ) ); -#endif free( hIvasRend ); *phIvasRend = NULL; @@ -9653,7 +9488,6 @@ void IVAS_REND_cldfbSynthesis_wrapper( #endif -#ifdef NONBE_FIX_BINARY_BINAURAL_READING /*---------------------------------------------------------------------* * IVAS_REND_GetHrtfHandle( ) * @@ -9740,7 +9574,6 @@ ivas_error IVAS_REND_GetHrtfParamBinHandle( return IVAS_ERR_OK; } -#endif static ivas_error ivas_masa_ext_rend_dirac_rend_init( input_masa *inputMasa ) @@ -10195,11 +10028,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( error = IVAS_ERR_OK; move32(); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING hHrtfParambin = *( inputMasa->hMasaExtRend->hHrtfParambin ); -#else - hHrtfParambin = inputMasa->hMasaExtRend->hHrtfParambin; -#endif /* Set common variables and defaults */ output_Fs = *( inputMasa->base.ctx.pOutSampleRate ); move32(); @@ -10374,10 +10203,8 @@ static ivas_error ivas_masa_ext_rend_parambin_init( static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig -#ifdef NONBE_FIX_BINARY_BINAURAL_READING , hrtf_handles *hrtfs -#endif ) { Word16 i; @@ -10408,11 +10235,7 @@ static ivas_error initMasaExtRenderer( hMasaExtRend->hDiracDecBin = NULL; #endif hMasaExtRend->hReverb = NULL; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING hMasaExtRend->hHrtfParambin = &hrtfs->hHrtfParambin; -#else - hMasaExtRend->hHrtfParambin = NULL; -#endif hMasaExtRend->hVBAPdata = NULL; hMasaExtRend->hoa_dec_mtx = NULL; @@ -10511,11 +10334,7 @@ static ivas_error initMasaExtRenderer( { IF( NE_16( hMasaExtRend->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( inputMasa->hMasaExtRend->hHrtfParambin ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &inputMasa->hMasaExtRend->hHrtfParambin ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -10609,11 +10428,7 @@ static void freeMasaExtRenderer( IF( hMasaExtRend->hHrtfParambin != NULL ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING ivas_HRTF_parambin_binary_close_fx( hMasaExtRend->hHrtfParambin ); -#else - ivas_HRTF_parambin_binary_close_fx( &hMasaExtRend->hHrtfParambin ); -#endif } IF( hMasaExtRend->hVBAPdata != NULL ) diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index eea8a9548..50663f936 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -116,9 +116,7 @@ ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, /* i/o: Pointer to renderer handle */ const Word32 outputSampleRate, /* i : output sampling rate */ const IVAS_AUDIO_CONFIG outConfig, /* i : output audio config */ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING const bool asHrtfBinary, /* i : load hrtf binary file */ -#endif const Word16 nonDiegeticPan, /* i : non-diegetic object flag */ const Word32 nonDiegeticPanGain, /* i : non-diegetic panning gain Q31 */ const Word16 num_subframes /* i : number of subframes */ @@ -193,7 +191,6 @@ ivas_error IVAS_REND_GetDelay( int32_t *timeScale /* o : Time scale of the delay, equal to renderer output sampling rate */ ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING /*! r: error code */ ivas_error IVAS_REND_GetHrtfHandle( IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ @@ -215,7 +212,6 @@ ivas_error IVAS_REND_GetHrtfParamBinHandle( IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ ); -#endif /* Functions to be called during rendering */ diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 34f644c90..c99e19183 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -824,11 +824,7 @@ static ivas_error load_reverb_from_binary( return header_check_result; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; -#else - return IVAS_ERR_FAILED_FILE_READ; -#endif } return IVAS_ERR_OK; @@ -863,9 +859,6 @@ static ivas_error TDREND_MIX_LoadHRTF( ) { int16_t tmp; -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - ivas_error error; -#endif bool is_tdrend; ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; @@ -874,15 +867,10 @@ static ivas_error TDREND_MIX_LoadHRTF( int32_t hrtf_data_size_max; char *hrtf_data; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING header_check_result = IVAS_ERR_OK; -#else - error = IVAS_ERR_OK; -#endif if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING /* try if it is old format for BE tests*/ fseek( f_hrtf, 0, SEEK_SET ); @@ -903,7 +891,6 @@ static ivas_error TDREND_MIX_LoadHRTF( } return header_check_result; -#endif } is_tdrend = FALSE; @@ -961,35 +948,19 @@ static ivas_error TDREND_MIX_LoadHRTF( if ( HrFiltSet_p->FilterMethod != TDREND_HRFILT_Method_BSplineModel ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING header_check_result = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); -#else - error = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); -#endif } else { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING header_check_result = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); -#else - error = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); -#endif } } else { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; -#else - return IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "HR filter not found in binary file." ); -#endif } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING return header_check_result; -#else - return error; -#endif } @@ -1080,7 +1051,6 @@ static void HRTF_energy_sections_precalc( return; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING /*---------------------------------------------------------------------* * dealloc_HRTF_binary() * @@ -1161,87 +1131,6 @@ void destroy_td_hrtf( return; } -#else -/*---------------------------------------------------------------------* - * dealloc_HRTF_binary() - * - * Deallocated memory allocated by load_HRTF_binary - *---------------------------------------------------------------------*/ - -ivas_error dealloc_HRTF_binary( - IVAS_DEC_HRTF_HANDLE hHrtf /* i/o: HRTF handle */ -) -{ - int16_t i; - ivas_error error; - error = IVAS_ERR_OK; - - if ( hHrtf == NULL ) - { - return error; - } - - if ( !hHrtf->ModelParams.modelROM ) - { - if ( hHrtf->ModelParams.UseItdModel ) - { - free( hHrtf->ModelParamsITD.elevKSeq_dyn_fx ); - free( hHrtf->ModelParamsITD.azimKSeq_dyn_fx ); - free( hHrtf->ModelParamsITD.W_dyn_fx ); - free( hHrtf->ModelParamsITD.azimBsShape_dyn_fx ); - free( hHrtf->ModelParamsITD.elevBsShape_dyn_fx ); - } - free( hHrtf->ModelParams.elevKSeq_dyn_fx ); - free( hHrtf->ModelParams.azim_start_idx_dyn ); - free( hHrtf->ModelParams.azimDim2_dyn ); - free( hHrtf->ModelParams.azimDim3_dyn ); - free( hHrtf->ModelParams.AlphaL_dyn_fx ); - free( hHrtf->ModelParams.AlphaR_dyn_fx ); - free( hHrtf->ModelParams.azimSegSamples_dyn ); - - free( hHrtf->ModelParams.azimShapeIdx_dyn ); - free( hHrtf->ModelParams.azimShapeSampFactor_dyn ); - free( hHrtf->ModelParams.elevBsShape_dyn_fx ); - - for ( i = 0; i < hHrtf->ModelParams.num_unique_azim_splines; i++ ) - { - free( hHrtf->ModelParams.azimBsShape_dyn_fx[i] ); - free( &hHrtf->ModelParams.azimBsShape_dyn_fx[i] ); - } - - free( (void *) hHrtf->ModelParams.azimBsShape_fx ); /* void* cast needed to please both gcc and Visual studio compilers. Deallocating const float** should be fine and gcc agrees, but Visual studio complains. */ - FOR( i = 0; i < hHrtf->ModelParams.elevDim3; i++ ) - { - free( hHrtf->ModelParams.azimKSeq_fx[i] ); - } - free( hHrtf->ModelParams.azimKSeq_fx ); - - free( hHrtf->ModelParams.EL_dyn_fx ); - free( hHrtf->ModelParams.ER_dyn_fx ); - free( hHrtf->ModelEval.hrfModL_fx ); - free( hHrtf->ModelEval.hrfModR_fx ); - - for ( i = 0; i < 3; i++ ) - { - free( hHrtf->lr_energy_and_iac_dyn_fx[i] ); - } - } -#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB - else - { - for ( i = 0; i < 3; i++ ) - { - if ( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ) - { - free( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ); - } - } - } -#endif - - return error; -} -#endif /*---------------------------------------------------------------------* * create_HRTF_from_rawdata() @@ -1266,11 +1155,7 @@ static ivas_error create_HRTF_from_rawdata( { if ( ( ( *hHRTF ) = (HRTFS_HANDLE) malloc( sizeof( HRTFS_DATA ) ) ) == NULL ) { -#ifdef NONBE_FIX_BINARY_BINAURAL_READING return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary data\n" ); -#else - return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Can not allocate memory for HRTF binary data\n" ); -#endif } if ( ( error = ivas_hrtf_init( *hHRTF ) ) != IVAS_ERR_OK ) @@ -1283,9 +1168,7 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERR_INTERNAL; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING ( *hHRTF )->init_from_rom = 0; -#endif hrtf_data_rptr = hrtf_data; /* latency_s */ @@ -1573,7 +1456,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr = hrtf_data; -#if !defined NONBE_FIX_BINARY_BINAURAL_READING || !defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if !defined USE_NEW_HRTF_BINARY_FILE_FORMAT /* BINAURAL_CONVBANDS */ if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { @@ -1592,7 +1475,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( f_tmp = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); ( *hHRTF )->FASTCONV_HRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); -#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1660,7 +1543,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_HOA3_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); -#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1727,7 +1610,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_HOA2_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); -#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1795,7 +1678,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_FOA_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); -#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1863,7 +1746,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_BRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); -#if defined NONBE_FIX_BINARY_BINAURAL_READING && defined USE_NEW_HRTF_BINARY_FILE_FORMAT +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); @@ -1969,9 +1852,7 @@ ivas_error load_fastconv_HRTF_from_binary( ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING int16_t asFastconv = 0; -#endif f_hrtf = hrtfReader->file; @@ -2021,9 +1902,7 @@ ivas_error load_fastconv_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING asFastconv = 1; -#endif } else { @@ -2032,7 +1911,6 @@ ivas_error load_fastconv_HRTF_from_binary( } free( hrtf_data ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( asFastconv ) { return IVAS_ERR_OK; @@ -2041,9 +1919,6 @@ ivas_error load_fastconv_HRTF_from_binary( { return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; } -#else - return IVAS_ERR_OK; -#endif } @@ -2147,9 +2022,7 @@ ivas_error load_parambin_HRTF_from_binary( ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING int16_t asParam = 0; -#endif f_hrtf = hrtfReader->file; @@ -2203,9 +2076,7 @@ ivas_error load_parambin_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING asParam = 1; -#endif } else { @@ -2213,7 +2084,6 @@ ivas_error load_parambin_HRTF_from_binary( } } free( hrtf_data ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( asParam ) { return IVAS_ERR_OK; @@ -2222,9 +2092,6 @@ ivas_error load_parambin_HRTF_from_binary( { return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; } -#else - return IVAS_ERR_OK; -#endif } @@ -2338,15 +2205,6 @@ ivas_error create_SetOfHRTF_from_binary( } free( hrtf_data ); -#ifndef NONBE_FIX_BINARY_BINAURAL_READING - if ( ( ( *hSetOfHRTF ).hHRTF_hrir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_brir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_foa == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_hoa2 == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_hoa3 == NULL ) ) - { - if ( destroy_SetOfHRTF( hSetOfHRTF ) != IVAS_ERR_OK ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create all the HRTF from binary file" ); - } - } -#endif return IVAS_ERR_OK; } @@ -2356,24 +2214,16 @@ ivas_error create_SetOfHRTF_from_binary( * Destroy the HRTF CRend handle *---------------------------------------------------------------------*/ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING static void destroy_HRTF -#else -static ivas_error destroy_HRTF -#endif ( HRTFS_HANDLE *hHRTF /* i/o: HRTF CRend handle */ ) { uint16_t i, j; -#ifdef NONBE_FIX_BINARY_BINAURAL_READING test(); test(); IF( *hHRTF != NULL && hHRTF != NULL && ( *hHRTF )->init_from_rom == 0 ) -#else - IF( *hHRTF != NULL && hHRTF != NULL ) -#endif { FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) { @@ -2413,11 +2263,7 @@ static ivas_error destroy_HRTF *hHRTF = NULL; } -#ifdef NONBE_FIX_BINARY_BINAURAL_READING return; -#else - return IVAS_ERR_OK; -#endif } #ifdef FIX_OLD_BINARY_FORMAT @@ -2449,7 +2295,6 @@ void cleanup_SetOfHRTF( * * Destroy the HRTF data set. *---------------------------------------------------------------------*/ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING void destroy_SetOfHRTF( HRTFS_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ ) @@ -2504,20 +2349,3 @@ void destroy_parambin_hrtf( return; } -#else -ivas_error destroy_SetOfHRTF( - HRTFS_CREND_HANDLE hSetOfHRTF /* i/o: Set of HRTF CRend handle */ -) -{ - if ( hSetOfHRTF != NULL ) - { - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_combined ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_hoa3 ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_hoa2 ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_foa ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_brir_combined ) ); - } - - return IVAS_ERR_OK; -} -#endif diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index d1abd9b75..9a06a4e3b 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -138,15 +138,9 @@ void cleanup_SetOfHRTF( *---------------------------------------------------------------------*/ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING void destroy_SetOfHRTF( IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ ); -#else -ivas_error destroy_SetOfHRTF( - IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF /* i/o: Set of HRTF CRend handle */ -); -#endif /*---------------------------------------------------------------------* * load_fastconv_HRTF_from_binary() @@ -159,7 +153,6 @@ ivas_error load_fastconv_HRTF_from_binary( const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ); -#ifdef NONBE_FIX_BINARY_BINAURAL_READING /*---------------------------------------------------------------------* * destroy_fastconv_hrtf() * @@ -169,7 +162,6 @@ ivas_error load_fastconv_HRTF_from_binary( void destroy_fastconv_hrtf( IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* i/o: FastConv HRTF handle */ ); -#endif /*---------------------------------------------------------------------* * load_parambin_HRTF_from_binary() @@ -188,7 +180,6 @@ ivas_error load_parambin_HRTF_from_binary( * * Deallocated memory allocated by load_HRTF_binary *---------------------------------------------------------------------*/ -#ifdef NONBE_FIX_BINARY_BINAURAL_READING /*---------------------------------------------------------------------* * destroy_parambin_hrtf() * @@ -209,9 +200,4 @@ void destroy_td_hrtf( IVAS_DEC_HRTF_HANDLE *hHRTF /* i/o: HRTF handle */ ); -#else -ivas_error dealloc_HRTF_binary( - IVAS_DEC_HRTF_HANDLE hHrtf /* i/o: HRTF handle */ -); -#endif #endif /* IVAS_HRTF_FILE_READER_H */ -- GitLab From 66e7be5f895ff35a1aa115a4cea7428f1b921754 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:16 +0200 Subject: [PATCH 559/698] [cleanup] accept NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER --- lib_com/options.h | 1 - lib_rend/ivas_reflections_fx.c | 8 -------- 2 files changed, 9 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index f19e13466..ee3052ee1 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -95,7 +95,6 @@ #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ #define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ -#define NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER /* Qualcomm: issue 953: fix order or ER channels in LC mode*/ #define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ diff --git a/lib_rend/ivas_reflections_fx.c b/lib_rend/ivas_reflections_fx.c index 9344a5872..fb3e86585 100644 --- a/lib_rend/ivas_reflections_fx.c +++ b/lib_rend/ivas_reflections_fx.c @@ -56,17 +56,9 @@ static UWord16 LC_mixing_7_1[7] = { 0, 1, 2, 3, 4, 3, 4 }; static UWord16 LC_mixing_5_1_2[7] = { 0, 1, 2, 3, 4, 0, 1 }; -#ifdef NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER static UWord16 LC_mixing_5_1_4[9] = { 0, 1, 2, 3, 4, 0, 1, 3, 4 }; -#else -static UWord16 LC_mixing_5_1_4[9] = { 0, 1, 2, 3, 4, 0, 1, 2, 3 }; -#endif -#ifdef NONBE_FIX_935_EARLY_REFLECTIONS_WRONG_ORDER static UWord16 LC_mixing_7_1_4[11] = { 0, 1, 2, 3, 4, 3, 4, 0, 1, 3, 4 }; -#else -static UWord16 LC_mixing_7_1_4[11] = { 0, 1, 2, 3, 4, 3, 4, 0, 1, 2, 3 }; -#endif /*-----------------------------------------------------------------------------------------* -- GitLab From 6bc30f24638970b35f9b57898c4d8d1259e063aa Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:19 +0200 Subject: [PATCH 560/698] [cleanup] accept NONBE_FIX_935_SBA_REVERB --- lib_com/options.h | 1 - lib_dec/ivas_output_config_fx.c | 8 -------- lib_dec/ivas_sba_dec_fx.c | 8 -------- lib_dec/ivas_spar_decoder_fx.c | 6 ------ 4 files changed, 23 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index ee3052ee1..133713018 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -98,7 +98,6 @@ #define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ -#define NONBE_FIX_935_SBA_REVERB /* FhG: issue 935: fix MSAN error for SBA related to BINAURAL_ROOM_REVERB */ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c index 8afd003be..bd30680da 100644 --- a/lib_dec/ivas_output_config_fx.c +++ b/lib_dec/ivas_output_config_fx.c @@ -158,19 +158,11 @@ void ivas_renderer_select( move16(); test(); -#ifdef NONBE_FIX_935_SBA_REVERB #ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) #else IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) #endif -#else -#ifdef SPLIT_REND_WITH_HEAD_ROT - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif -#endif /* NONBE_FIX_935_SBA_REVERB */ { *renderer_type = RENDERER_BINAURAL_FASTCONV; move16(); diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index cc78652e6..24abcb667 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -216,19 +216,11 @@ ivas_error ivas_sba_dec_reconfigure_fx( ELSE { test(); -#ifdef NONBE_FIX_935_SBA_REVERB #ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) #else IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) #endif -#else -#ifdef SPLIT_REND_WITH_HEAD_ROT - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif -#endif /* NONBE_FIX_935_SBA_REVERB */ { renderer_type_new = RENDERER_BINAURAL_FASTCONV; move16(); diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c index b95a93678..2c425ad72 100644 --- a/lib_dec/ivas_spar_decoder_fx.c +++ b/lib_dec/ivas_spar_decoder_fx.c @@ -294,14 +294,8 @@ ivas_error ivas_spar_dec_open_fx( test(); test(); -#ifdef NONBE_FIX_935_SBA_REVERB IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) -#else - test(); - - IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && ( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) -#endif { /* get correct granularity in case of binaural rendering of the discrete objects with the td obj renderer */ Word32 quo, rem; -- GitLab From 0a4741371d4a5b204ed2d5bbcea673ee306cc028 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:22 +0200 Subject: [PATCH 561/698] [cleanup] accept NONBE_FIX_952_MC_PARAMUPMIX_5MS --- lib_com/options.h | 1 - lib_dec/ivas_mc_paramupmix_dec_fx.c | 20 -------------------- 2 files changed, 21 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 133713018..3ec7754da 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -94,7 +94,6 @@ #endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ -#define NONBE_FIX_952_MC_PARAMUPMIX_5MS /* Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ #define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ diff --git a/lib_dec/ivas_mc_paramupmix_dec_fx.c b/lib_dec/ivas_mc_paramupmix_dec_fx.c index 0cb6a5796..d05912e6e 100644 --- a/lib_dec/ivas_mc_paramupmix_dec_fx.c +++ b/lib_dec/ivas_mc_paramupmix_dec_fx.c @@ -119,13 +119,11 @@ void ivas_mc_paramupmix_dec_read_BS( } } -#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { Copy32( hMCParamUpmix->alpha_prev_fx[i], hMCParamUpmix->alpha_sf_fx[i], IVAS_MAX_NUM_BANDS ); Copy32( hMCParamUpmix->beta_prev_fx[i], hMCParamUpmix->beta_sf_fx[i], IVAS_MAX_NUM_BANDS ); } -#endif hMCParamUpmix->first_frame = 1; move16(); @@ -155,7 +153,6 @@ void ivas_mc_paramupmix_dec_read_BS( move32(); -#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS IF( EQ_16( hMCParamUpmix->first_frame, 0 ) ) { FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) @@ -164,7 +161,6 @@ void ivas_mc_paramupmix_dec_read_BS( Copy32( hMCParamUpmix->betas_fx[i], hMCParamUpmix->beta_prev_fx[i], IVAS_MAX_NUM_BANDS ); } } -#endif FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { @@ -189,13 +185,11 @@ void ivas_mc_paramupmix_dec_read_BS( move16(); } -#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { Copy32( hMCParamUpmix->alpha_prev_fx[i], hMCParamUpmix->alpha_sf_fx[i], IVAS_MAX_NUM_BANDS ); Copy32( hMCParamUpmix->beta_prev_fx[i], hMCParamUpmix->beta_sf_fx[i], IVAS_MAX_NUM_BANDS ); } -#endif } pop_wmops(); @@ -286,13 +280,6 @@ void ivas_mc_paramupmix_dec_render( } { -#ifndef NONBE_FIX_952_MC_PARAMUPMIX_5MS - FOR( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) - { - Copy32( hMCParamUpmix->alpha_prev_fx[ch], hMCParamUpmix->alpha_sf_fx[ch], IVAS_MAX_NUM_BANDS ); - Copy32( hMCParamUpmix->beta_prev_fx[ch], hMCParamUpmix->beta_sf_fx[ch], IVAS_MAX_NUM_BANDS ); - } -#endif FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { @@ -310,13 +297,6 @@ void ivas_mc_paramupmix_dec_render( ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_sf ); } -#ifndef NONBE_FIX_952_MC_PARAMUPMIX_5MS - FOR( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) - { - Copy32( hMCParamUpmix->alphas_fx[ch], hMCParamUpmix->alpha_prev_fx[ch], IVAS_MAX_NUM_BANDS ); - Copy32( hMCParamUpmix->betas_fx[ch], hMCParamUpmix->beta_prev_fx[ch], IVAS_MAX_NUM_BANDS ); - } -#endif } *nSamplesAvailable = imult1616( sub( st_ivas->hTcBuffer->num_slots, st_ivas->hTcBuffer->slots_rendered ), (Word16) slot_size ); -- GitLab From a3fa5fa44bbf894fb2d731cb8d25968accabcb4f Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:25 +0200 Subject: [PATCH 562/698] [cleanup] accept NONBE_FIX_967_ISM_MONO_DMX --- lib_com/ivas_prot_fx.h | 4 ---- lib_com/options.h | 1 - lib_dec/ivas_jbm_dec_fx.c | 12 ------------ lib_dec/ivas_mono_dmx_renderer_fx.c | 18 ------------------ 4 files changed, 35 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 1d593881a..4edcf0480 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1160,11 +1160,7 @@ void ivas_apply_non_diegetic_panning_fx( const Word16 output_frame /* i : output frame length per channel */ ); -#ifdef NONBE_FIX_967_ISM_MONO_DMX void ivas_ism_mono_dmx_fx( -#else -void ivas_mono_downmix_render_passive_fx( -#endif Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Word32 *output_f_fx[], /* i/o: synthesized core-coder transport channels/mono output */ const Word16 output_frame /* i : output frame length */ diff --git a/lib_com/options.h b/lib_com/options.h index 3ec7754da..92da4f161 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -94,7 +94,6 @@ #endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ -#define NONBE_FIX_967_ISM_MONO_DMX /* FhG: issue 967: accumulating energies in ISM mono DMX */ #define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 8ae516d7c..9038dfb4b 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -265,11 +265,7 @@ ivas_error ivas_jbm_dec_tc_fx( test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) ) { -#ifdef NONBE_FIX_967_ISM_MONO_DMX ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame ); -#else - ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame ); -#endif Scale_sig32( p_output_fx[0], L_FRAME48k, 3 ); } @@ -798,11 +794,7 @@ ivas_error ivas_jbm_dec_tc_fx( move16(); IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) ) { -#ifdef NONBE_FIX_967_ISM_MONO_DMX ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame ); -#else - ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame ); -#endif output_q = 8; move16(); @@ -1090,11 +1082,7 @@ ivas_error ivas_jbm_dec_tc_fx( } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) { -#ifdef NONBE_FIX_967_ISM_MONO_DMX ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame ); -#else - ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame ); -#endif Scale_sig32( p_output_fx[0], L_FRAME48k, Q11 - Q8 ); // Q11 diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c index 1d24e0153..52940fc98 100644 --- a/lib_dec/ivas_mono_dmx_renderer_fx.c +++ b/lib_dec/ivas_mono_dmx_renderer_fx.c @@ -46,12 +46,7 @@ * Local constants *------------------------------------------------------------------------*/ #define DOWNMIX_ALPHA_FX 31130 /* Smoothing coefficient alpha */ -#ifdef NONBE_FIX_967_ISM_MONO_DMX #define DOWNMIX_ONE_MINUS_ALPHA_FX 1638 /* Smoothing coefficient (1 - alpha) */ -#endif -#ifndef NONBE_FIX_967_ISM_MONO_DMX -#define MONO_DOWNMIX_RENDERER_MAX_INPUT_CHANS 4 -#endif /*------------------------------------------------------------------------- * ivas_mono_dmx_renderer_open() @@ -111,11 +106,7 @@ void ivas_mono_dmx_renderer_close( * * Downmix process *------------------------------------------------------------------------*/ -#ifdef NONBE_FIX_967_ISM_MONO_DMX void ivas_ism_mono_dmx_fx( -#else -void ivas_mono_downmix_render_passive_fx( -#endif Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ Word32 *output_f_fx[], /* i/o: synthesized core-coder transport channels/mono output Qin = 11/ Qout = 8*/ const Word16 output_frame /* i : output frame length */ @@ -170,13 +161,6 @@ void ivas_mono_downmix_render_passive_fx( v_add_32( output_shr, proto_signal_fx, proto_signal_fx, output_frame ); } -#ifndef NONBE_FIX_967_ISM_MONO_DMX - /* compute the input energy, proto energy after smoothing */ - hDownmix->inputEnergy_fx = Mpy_32_16_1( hDownmix->inputEnergy_fx, DOWNMIX_ALPHA_FX ); - move32(); - hDownmix->protoEnergy_fx = Mpy_32_16_1( hDownmix->protoEnergy_fx, DOWNMIX_ALPHA_FX ); - move32(); -#endif proto_norm = L_norm_arr( proto_signal_fx, output_frame ); @@ -197,7 +181,6 @@ void ivas_mono_downmix_render_passive_fx( } } -#ifdef NONBE_FIX_967_ISM_MONO_DMX hDownmix->inputEnergy_fx = Mpy_32_16_1( hDownmix->inputEnergy_fx, DOWNMIX_ALPHA_FX ); move32(); hDownmix->protoEnergy_fx = Mpy_32_16_1( hDownmix->protoEnergy_fx, DOWNMIX_ALPHA_FX ); @@ -205,7 +188,6 @@ void ivas_mono_downmix_render_passive_fx( protoEner_pre = Mpy_32_16_1( protoEner_pre, DOWNMIX_ONE_MINUS_ALPHA_FX ); inputEner_pre = Mpy_32_16_1( inputEner_pre, DOWNMIX_ONE_MINUS_ALPHA_FX ); -#endif /* compute the eq factor */ -- GitLab From 99cb359a6df468e553a012f76fe736a2b030dcb7 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:32:28 +0200 Subject: [PATCH 563/698] [cleanup] accept NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX --- lib_com/options.h | 1 - lib_dec/ivas_ism_renderer_fx.c | 30 ------------------------------ 2 files changed, 31 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 92da4f161..53cac6f84 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -95,7 +95,6 @@ #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ -#define NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* FhG : issue #968: differences between 5ms and 20ms rendering for discrete ISM with BRIR and head rotation*/ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 7f4f32731..7fcb10635 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -171,7 +171,6 @@ void ivas_ism_render_sf_fx( Word32 gain_fx, prev_gain_fx; Word32 tc_local_fx[MAX_NUM_OBJECTS][L_FRAME48k]; Word32 *p_tc_fx[MAX_NUM_OBJECTS]; -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX Word16 ism_md_subframe_update_jbm, slots_to_render, first_sf, last_sf, subframe_idx; Word16 n_samples_rendered_loop; @@ -189,7 +188,6 @@ void ivas_ism_render_sf_fx( slots_to_render = sub( slots_to_render, st_ivas->hTcBuffer->subframe_nbslots[last_sf] ); last_sf = add( last_sf, 1 ); } -#endif num_objects = st_ivas->nchan_transport; move16(); @@ -207,7 +205,6 @@ void ivas_ism_render_sf_fx( interp_offset = st_ivas->hTcBuffer->n_samples_rendered; move16(); -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX /* Number of subframes to delay metadata to sync with audio */ IF( st_ivas->hDecoderConfig->Opt_delay_comp ) { @@ -217,7 +214,6 @@ void ivas_ism_render_sf_fx( { ism_md_subframe_update_jbm = sub( st_ivas->hTcBuffer->nb_subframes, 2 ); } -#endif IF( st_ivas->hDecoderConfig->Opt_tsm ) { @@ -241,21 +237,15 @@ void ivas_ism_render_sf_fx( } -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { int16_t n_samples_in_subframe; n_samples_in_subframe = st_ivas->hTcBuffer->n_samples_granularity * st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; -#endif test(); IF( st_ivas->hCombinedOrientationData && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) ) { -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX ivas_jbm_dec_get_adapted_linear_interpolator_fx( n_samples_in_subframe, n_samples_in_subframe, st_ivas->hIsmRendererData->interpolator_fx ); -#else - ivas_jbm_dec_get_adapted_linear_interpolator_fx( n_samples_to_render, n_samples_to_render, st_ivas->hIsmRendererData->interpolator_fx ); -#endif interp_offset = 0; move16(); } @@ -266,7 +256,6 @@ void ivas_ism_render_sf_fx( test(); IF( st_ivas->hCombinedOrientationData != NULL && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) ) { -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX if ( GE_16( subframe_idx, ism_md_subframe_update_jbm ) ) { rotateAziEle_fx( extract_l( L_shr( st_ivas->hIsmMetaData[i]->azimuth_fx, 22 ) ), extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, 22 ) ), &azimuth, &elevation, st_ivas->hCombinedOrientationData->Rmat_fx[st_ivas->hCombinedOrientationData->subframe_idx], st_ivas->hIntSetup.is_planar_setup ); @@ -275,9 +264,6 @@ void ivas_ism_render_sf_fx( { rotateAziEle_fx( extract_l( L_shr( st_ivas->hIsmMetaData[i]->last_azimuth_fx, 22 ) ), extract_l( L_shr( st_ivas->hIsmMetaData[i]->last_elevation_fx, 22 ) ), &azimuth, &elevation, st_ivas->hCombinedOrientationData->Rmat_fx[st_ivas->hCombinedOrientationData->subframe_idx], st_ivas->hIntSetup.is_planar_setup ); } -#else - rotateAziEle_fx( extract_l( L_shr( st_ivas->hIsmMetaData[i]->azimuth_fx, 22 ) ), extract_l( L_shr( st_ivas->hIsmMetaData[i]->elevation_fx, 22 ) ), &azimuth, &elevation, st_ivas->hCombinedOrientationData->Rmat_fx[0], st_ivas->hIntSetup.is_planar_setup ); -#endif IF( st_ivas->hEFAPdata != NULL ) { @@ -313,18 +299,10 @@ void ivas_ism_render_sf_fx( { g1_fx = &st_ivas->hIsmRendererData->interpolator_fx[interp_offset]; tc_fx = p_tc_fx[i]; -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX FOR( k = 0; k < n_samples_in_subframe; k++ ) -#else - FOR( k = 0; k < n_samples_to_render; k++ ) -#endif { g2_fx = sub( 32767, *g1_fx ); // 32767 = (1.0f in Q15) - 1 -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX output_fx[j2][k + n_samples_rendered_loop] = L_add( output_fx[j2][k + n_samples_rendered_loop], L_shl( Mpy_32_32( L_add( Mpy_32_16_1( gain_fx, *( g1_fx++ ) ), Mpy_32_16_1( prev_gain_fx, g2_fx ) ), *( tc_fx++ ) ), 1 ) ); // Q11( (30+15+1-16) + 11 -31 +1) -#else - output_fx[j2][k] = L_add( output_fx[j2][k], L_shl( Mpy_32_32( L_add( Mpy_32_16_1( gain_fx, *( g1_fx++ ) ), Mpy_32_16_1( prev_gain_fx, g2_fx ) ), *( tc_fx++ ) ), 1 ) ); // Q11( (30+15+1-16) + 11 -31 +1) -#endif move16(); } } @@ -337,19 +315,12 @@ void ivas_ism_render_sf_fx( move32(); } } -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX p_tc_fx[i] += n_samples_in_subframe; -#endif } /* update combined orientation access index */ -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_in_subframe ); -#else - ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_to_render ); -#endif -#ifdef NONBE_FIX_968_ISM_BRIR_WITH_HEADROTATION_5MS_FIX n_samples_rendered_loop = add( n_samples_rendered_loop, n_samples_in_subframe ); IF( EQ_16( st_ivas->renderer_type, RENDERER_TD_PANNING ) ) { @@ -359,7 +330,6 @@ void ivas_ism_render_sf_fx( tc_offset = add( tc_offset, n_samples_in_subframe ); interp_offset = add( interp_offset, n_samples_in_subframe ); } -#endif return; } -- GitLab From 8eff3c5b4fe85d4340212e7ee19ccc8d98f6dd18 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 13:34:54 +0200 Subject: [PATCH 564/698] formatting --- lib_dec/ivas_ism_renderer_fx.c | 2 +- lib_dec/ivas_mc_paramupmix_dec_fx.c | 1 - lib_dec/ivas_mono_dmx_renderer_fx.c | 4 ++-- lib_dec/lib_dec_fx.c | 8 ++++---- lib_rend/ivas_stat_rend.h | 6 +++--- lib_rend/lib_rend.c | 26 +++++++++----------------- lib_util/hrtf_file_reader.c | 7 +++---- 7 files changed, 22 insertions(+), 32 deletions(-) diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 7fcb10635..1a3fc4164 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -301,7 +301,7 @@ void ivas_ism_render_sf_fx( tc_fx = p_tc_fx[i]; FOR( k = 0; k < n_samples_in_subframe; k++ ) { - g2_fx = sub( 32767, *g1_fx ); // 32767 = (1.0f in Q15) - 1 + g2_fx = sub( 32767, *g1_fx ); // 32767 = (1.0f in Q15) - 1 output_fx[j2][k + n_samples_rendered_loop] = L_add( output_fx[j2][k + n_samples_rendered_loop], L_shl( Mpy_32_32( L_add( Mpy_32_16_1( gain_fx, *( g1_fx++ ) ), Mpy_32_16_1( prev_gain_fx, g2_fx ) ), *( tc_fx++ ) ), 1 ) ); // Q11( (30+15+1-16) + 11 -31 +1) move16(); } diff --git a/lib_dec/ivas_mc_paramupmix_dec_fx.c b/lib_dec/ivas_mc_paramupmix_dec_fx.c index d05912e6e..eab782f8b 100644 --- a/lib_dec/ivas_mc_paramupmix_dec_fx.c +++ b/lib_dec/ivas_mc_paramupmix_dec_fx.c @@ -296,7 +296,6 @@ void ivas_mc_paramupmix_dec_render( /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_sf ); } - } *nSamplesAvailable = imult1616( sub( st_ivas->hTcBuffer->num_slots, st_ivas->hTcBuffer->slots_rendered ), (Word16) slot_size ); diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c index 52940fc98..66b14cc56 100644 --- a/lib_dec/ivas_mono_dmx_renderer_fx.c +++ b/lib_dec/ivas_mono_dmx_renderer_fx.c @@ -45,8 +45,8 @@ /*------------------------------------------------------------------------- * Local constants *------------------------------------------------------------------------*/ -#define DOWNMIX_ALPHA_FX 31130 /* Smoothing coefficient alpha */ -#define DOWNMIX_ONE_MINUS_ALPHA_FX 1638 /* Smoothing coefficient (1 - alpha) */ +#define DOWNMIX_ALPHA_FX 31130 /* Smoothing coefficient alpha */ +#define DOWNMIX_ONE_MINUS_ALPHA_FX 1638 /* Smoothing coefficient (1 - alpha) */ /*------------------------------------------------------------------------- * ivas_mono_dmx_renderer_open() diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 7ead34cca..63f0ab53f 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -2511,7 +2511,7 @@ ivas_error IVAS_DEC_FeedCustomLsData( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ ) { @@ -2535,7 +2535,7 @@ ivas_error IVAS_DEC_GetHrtfHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfCRendHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ ) { @@ -2559,7 +2559,7 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfFastConvHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ ) { @@ -2583,7 +2583,7 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfParamBinHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ ) { diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index 69351bae8..cc1565943 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -847,7 +847,7 @@ typedef struct ivas_combined_orientation_struct #ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Rmat_prev_fx[MAX_HEAD_ROT_POSES][3][3]; #else - Word32 Rmat_prev_fx[3][3]; /* Q30 */ + Word32 Rmat_prev_fx[3][3]; /* Q30 */ #endif Word32 chEneIIR_fx[2][MASA_FREQUENCY_BANDS]; /* independent of the format. MASA bands are suitable for the task and readily available in ROM. */ /* Q(q_chEneIIR) */ Word16 q_chEneIIR; @@ -1294,8 +1294,8 @@ typedef struct ivas_binaural_td_rendering_struct TDREND_SRC_t *Sources[MAX_NUM_TDREND_CHANNELS]; Word16 Gain_fx; /* Q14 */ - TDREND_MIX_Listener_t *Listener_p; /* The virtual listener */ - TDREND_HRFILT_FiltSet_t *HrFiltSet_p; /* HR filter set */ + TDREND_MIX_Listener_t *Listener_p; /* The virtual listener */ + TDREND_HRFILT_FiltSet_t *HrFiltSet_p; /* HR filter set */ TDREND_HRFILT_FiltSet_t **pHrFiltSet_p; /* pointer to HR filter set */ Word16 UseCommonDistAttenModel; /* Use common dist atten model (TRUE/FALSE) */ diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 7c64d0e26..12fb2c524 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -56,7 +56,7 @@ *-------------------------------------------------------------------*/ /* Maximum buffer length (total) in samples. */ -#define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +#define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ /*-------------------------------------------------------------------* @@ -1447,10 +1447,8 @@ static ivas_error setRendInputActiveIsm( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg - , - hrtf_handles *hrtfs -) + RENDER_CONFIG_DATA *hRendCfg, + hrtf_handles *hrtfs ) { ivas_error error; rendering_context rendCtx; @@ -2820,10 +2818,8 @@ static ivas_error setRendInputActiveMc( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg - , - hrtf_handles *hrtfs -) + RENDER_CONFIG_DATA *hRendCfg, + hrtf_handles *hrtfs ) { #ifdef SPLIT_REND_WITH_HEAD_ROT Word16 i; @@ -3198,8 +3194,7 @@ static ivas_error setRendInputActiveSba( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg - , + RENDER_CONFIG_DATA *hRendCfg, hrtf_handles *hrtfs ) @@ -3301,8 +3296,7 @@ static ivas_error setRendInputActiveMasa( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg - , + RENDER_CONFIG_DATA *hRendCfg, hrtf_handles *hrtfs ) /* Todo: This is not used at all within MASA. Support might be better to do after refactoring. */ @@ -10202,10 +10196,8 @@ static ivas_error ivas_masa_ext_rend_parambin_init( static ivas_error initMasaExtRenderer( input_masa *inputMasa, - const AUDIO_CONFIG outConfig - , - hrtf_handles *hrtfs -) + const AUDIO_CONFIG outConfig, + hrtf_handles *hrtfs ) { Word16 i; ivas_error error; diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index c99e19183..ee103db2d 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -2214,10 +2214,9 @@ ivas_error create_SetOfHRTF_from_binary( * Destroy the HRTF CRend handle *---------------------------------------------------------------------*/ -static void destroy_HRTF - ( - HRTFS_HANDLE *hHRTF /* i/o: HRTF CRend handle */ - ) +static void destroy_HRTF( + HRTFS_HANDLE *hHRTF /* i/o: HRTF CRend handle */ +) { uint16_t i, j; -- GitLab From d775b94ff2ef10a04f44a69eef83ced512a0edb0 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 19 May 2025 16:13:17 +0200 Subject: [PATCH 565/698] port MR 1372 from float fix for USAN error in OMASA JBM decoding --- lib_com/options.h | 1 + lib_dec/lib_dec_fx.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 53cac6f84..b2fba1dd3 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -115,6 +115,7 @@ #define NONBE_FIX_951_MCMASA_5MS_RENDERING /* Nokia: issue #951: Differences for 5ms and 20ms rendering for McMASA at 13.2 kbps to BINAURAL */ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ #define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ +#define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 63f0ab53f..9cf06bdfb 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -2998,8 +2998,21 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( return IVAS_ERR_INVALID_BITSTREAM; } - /* check if frame contains a partial copy and get its offset */ - evs_dec_previewFrame( au, auSize, &partialCopyFrameType, &partialCopyOffset ); + +#ifdef NONBE_FIX_975_JBM_USAN + partialCopyFrameType = 0; + move16(); + partialCopyOffset = 0; + move16(); + + IF( EQ_16( hIvasDec->mode, (Word16) IVAS_DEC_MODE_EVS ) ) + { +#endif + /* check if frame contains a partial copy and get its offset */ + evs_dec_previewFrame( au, auSize, &partialCopyFrameType, &partialCopyOffset ); +#ifdef NONBE_FIX_975_JBM_USAN + } +#endif /* create data unit for primary copy in the frame */ dataUnit = JB4_AllocDataUnit( hIvasDec->hVoIP->hJBM ); -- GitLab From ab531da55116475faee463f1bfb15bd477c18e16 Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Mon, 19 May 2025 16:15:35 +0200 Subject: [PATCH 566/698] Pointing optimized. --- lib_enc/ivas_stereo_dmx_evs_fx.c | 179 ++++++++++++++++--------------- 1 file changed, 92 insertions(+), 87 deletions(-) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index e81ec3413..4e9bc3da5 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -118,6 +118,7 @@ #define STEREO_DMX_EVS_SGC_GMIN 23170 // 0.7071f #define STEREO_DMX_EVS_IPD_ILD_THRES_Q29 1696512082 // 3.16f (5dB) #define STEREO_DMX_EVS_IPD_SF_THRES_Q31 107374182 // 0.05f + const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, 2027355520, @@ -144,7 +145,9 @@ const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128 }; + #else + const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, @@ -1442,7 +1445,6 @@ static void calc_poc_fx( } } - rfft_buf[0] = L_shr_r( specPOr[0], 10 ); // Q31->Q21 move32(); rfft_buf[1] = L_shr_r( specPOr[n0], 10 ); // Q31->Q21 @@ -2446,6 +2448,8 @@ void stereo_dmx_evs_enc_fx( Word16 n_fad_r, n_fad_g, m_fad_g, n_fad_cnt; STEREO_DMX_EVS_PRC prev_prc; + STEREO_DMX_EVS_PHA_HANDLE hPHA; + Word16 input_subframe, is_transient, dmx_gain_sgc; Word32 *p_sub_frame, subframe_energy[STEREO_DMX_EVS_NB_SBFRM]; Word16 subframe_energy_e[STEREO_DMX_EVS_NB_SBFRM]; @@ -2484,6 +2488,7 @@ void stereo_dmx_evs_enc_fx( BREAK; } move16(); + hPHA = hStereoDmxEVS->hPHA; FOR( n = 0; n < input_frame; n++ ) { @@ -2541,29 +2546,29 @@ void stereo_dmx_evs_enc_fx( W_tmp_q = W_norm( W_tmp ); W_tmp = W_shl( W_tmp, W_tmp_q ); L_tmp1 = W_extract_h( W_tmp ); // Q(31-(30-W_tmp_q)) - L_tmp1_e = sub( 15 * 2, W_tmp_q ); + L_tmp1_e = sub( 15 << 1, W_tmp_q ); subframe_energy[m] = BASOP_Util_Add_Mant32Exp( subframe_energy[m], subframe_energy_e[m], L_tmp1, L_tmp1_e, &subframe_energy_e[m] ); move32(); } - L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + L_tmp1 = BASOP_Util_Add_Mant32Exp( hPHA->trns_aux_energy_fx[k], hPHA->trns_aux_energy_fx_e[k], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); - // if ( subframe_energy[m] / ( hStereoDmxEVS->hPHA->trns_aux_energy[k] + EPSILON ) > hStereoDmxEVS->hPHA->crst_fctr ) - if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, hStereoDmxEVS->hPHA->crst_fctr_fx, 31 ) > 0 ) + // if ( subframe_energy[m] / ( hPHA->trns_aux_energy[k] + EPSILON ) > hPHA->crst_fctr ) + if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, hPHA->crst_fctr_fx, 31 ) > 0 ) { is_transient = 1; move16(); } - // hStereoDmxEVS->hPHA->trns_aux_energy[k] = STEREO_DMX_EVS_TRNS_EGY_FORGETTING * hStereoDmxEVS->hPHA->trns_aux_energy[k] + ( 1.0f - STEREO_DMX_EVS_TRNS_EGY_FORGETTING ) * subframe_energy[m]; - hStereoDmxEVS->hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ), hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], Mpy_32_16_1( subframe_energy[m], sub( MAX_16, STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ) ), subframe_energy_e[m], &hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k] ); + // hPHA->trns_aux_energy[k] = STEREO_DMX_EVS_TRNS_EGY_FORGETTING * hPHA->trns_aux_energy[k] + ( 1.0f - STEREO_DMX_EVS_TRNS_EGY_FORGETTING ) * subframe_energy[m]; + hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( hPHA->trns_aux_energy_fx[k], STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ), hPHA->trns_aux_energy_fx_e[k], Mpy_32_16_1( subframe_energy[m], sub( MAX_16, STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ) ), subframe_energy_e[m], &hPHA->trns_aux_energy_fx_e[k] ); move32(); } FOR( m = 1; m < STEREO_DMX_EVS_NB_SBFRM; m++ ) { - L_tmp1 = BASOP_Util_Add_Mant32Exp( subframe_energy[m - 1], subframe_energy_e[m - 1], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + L_tmp1 = BASOP_Util_Add_Mant32Exp( subframe_energy[sub( m, 1 )], subframe_energy_e[sub( m, 1 )], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); // if ( subframe_energy[m] / ( subframe_energy[m - 1] + EPSILON ) > STEREO_DMX_EVS_TRNS_DTC_INST ) @@ -2575,14 +2580,14 @@ void stereo_dmx_evs_enc_fx( } } - estimate_itd_fx( &corr, hStereoDmxEVS->hPOC, hStereoDmxEVS->hPHA, data_fx[0], data_fx[1], &hStereoDmxEVS->itd_fx, input_frame ); + estimate_itd_fx( &corr, hStereoDmxEVS->hPOC, hPHA, data_fx[0], data_fx[1], &hStereoDmxEVS->itd_fx, input_frame ); /* poc */ IF( hStereoDmxEVS->itd_fx ) { // dmx_weight = ( ( hStereoDmxEVS->itd > 0 ) ? ( -1 ) : 1 ) * 0.5f * corr + 0.5f; - IF( hStereoDmxEVS->itd_fx > 0 ) + IF( GT_16( hStereoDmxEVS->itd_fx, 0 ) ) { dmx_weight = add( negate( shr( corr, 1 ) ), ONE_IN_Q14 ); } @@ -2607,11 +2612,11 @@ void stereo_dmx_evs_enc_fx( /* pha */ - pha_len = hStereoDmxEVS->hPHA->pha_len; + pha_len = hPHA->pha_len; move16(); - fad_len = hStereoDmxEVS->hPHA->fad_len; + fad_len = hPHA->fad_len; move16(); - fad_g = hStereoDmxEVS->hPHA->fad_g_fx; + fad_g = hPHA->fad_g_fx; set_zero_fx( dmx_pha_data, n_samples ); set_zero_fx( mem_prev, fad_len ); @@ -2619,12 +2624,12 @@ void stereo_dmx_evs_enc_fx( FOR( k = 0; k < CPE_CHANNELS; k++ ) { p_data = data_fx[k]; - Copy32( hStereoDmxEVS->hPHA->data_mem_fx[k], data_mem, pha_len ); - Copy32( &( p_data[n_samples - pha_len] ), hStereoDmxEVS->hPHA->data_mem_fx[k], pha_len ); + Copy32( hPHA->data_mem_fx[k], data_mem, pha_len ); + Copy32( &( p_data[sub( n_samples, pha_len )] ), hPHA->data_mem_fx[k], pha_len ); p_data_mem = &( data_mem[pha_len] ); Copy32( p_data, p_data_mem, n_samples ); - p_prev_taps = hStereoDmxEVS->hPHA->p_prev_taps_fx[k]; + p_prev_taps = hPHA->p_prev_taps_fx[k]; IF( p_prev_taps ) { FOR( n = 0; n < fad_len; n++ ) @@ -2632,7 +2637,7 @@ void stereo_dmx_evs_enc_fx( FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) { // ftmp += p_data_mem[n - m] * p_prev_taps[m]; - fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_prev_taps[m] ) ); // Q25 + fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_prev_taps[m] ) ); // Q25 } fx_tmp = L_shl( fx_tmp, 1 ); // Q26 mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); @@ -2649,7 +2654,7 @@ void stereo_dmx_evs_enc_fx( } } - p_curr_taps = hStereoDmxEVS->hPHA->p_curr_taps_fx[k]; + p_curr_taps = hPHA->p_curr_taps_fx[k]; IF( p_curr_taps ) { FOR( n = 0; n < n_samples; n++ ) @@ -2657,7 +2662,7 @@ void stereo_dmx_evs_enc_fx( FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) { // ftmp += p_data_mem[n - m] * p_curr_taps[m]; - fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_curr_taps[m] ) ); // Q25 + fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[sub( n, m )], p_curr_taps[m] ) ); // Q25 } fx_tmp = L_shl( fx_tmp, 1 ); // Q26 // dmx_pha_data[n] += ftmp * INV_SQRT_2; @@ -2686,59 +2691,59 @@ void stereo_dmx_evs_enc_fx( /* prc switch */ - prev_prc = hStereoDmxEVS->hPHA->curr_prc; + prev_prc = hPHA->curr_prc; move32(); - // if ( abs( (int16_t) hStereoDmxEVS->itd ) > hStereoDmxEVS->hPHA->prc_thres ) - IF( GT_16( abs_s( hStereoDmxEVS->itd_fx ), hStereoDmxEVS->hPHA->prc_thres ) ) + // if ( abs( (int16_t) hStereoDmxEVS->itd ) > hPHA->prc_thres ) + IF( GT_16( abs_s( hStereoDmxEVS->itd_fx ), hPHA->prc_thres ) ) { - IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) + IF( NE_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) { - IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_POC ) ) + IF( EQ_32( hPHA->prev_prc, STEREO_DMX_EVS_PRC_POC ) ) { - hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 ); + hPHA->prc_hys_cnt = add( hPHA->prc_hys_cnt, 1 ); move16(); } ELSE { - hStereoDmxEVS->hPHA->prc_hys_cnt = 0; + hPHA->prc_hys_cnt = 0; move16(); } - if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) + if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) { - hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; + hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; move32(); } } - hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC; + hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC; move32(); } ELSE { - IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_PHA ) ) + IF( NE_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_PHA ) ) { - IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_PHA ) ) + IF( EQ_32( hPHA->prev_prc, STEREO_DMX_EVS_PRC_PHA ) ) { - hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 ); + hPHA->prc_hys_cnt = add( hPHA->prc_hys_cnt, 1 ); move16(); } ELSE { - hStereoDmxEVS->hPHA->prc_hys_cnt = 0; + hPHA->prc_hys_cnt = 0; move16(); } - if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) + if ( GE_16( hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) { - hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA; + hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA; move32(); } } - hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_PHA; + hPHA->prev_prc = STEREO_DMX_EVS_PRC_PHA; move32(); } - // if ( ( is_transient == 1 ) || ( hStereoDmxEVS->aux_dmx_energy[0] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[1] ) || ( hStereoDmxEVS->aux_dmx_energy[1] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[0] ) || ( ( hStereoDmxEVS->hPHA->p_curr_taps[0] == NULL ) && ( hStereoDmxEVS->hPHA->p_curr_taps[1] == NULL ) ) ) + // if ( ( is_transient == 1 ) || ( hStereoDmxEVS->aux_dmx_energy[0] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[1] ) || ( hStereoDmxEVS->aux_dmx_energy[1] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[0] ) || ( ( hPHA->p_curr_taps[0] == NULL ) && ( hPHA->p_curr_taps[1] == NULL ) ) ) test(); test(); test(); @@ -2746,60 +2751,60 @@ void stereo_dmx_evs_enc_fx( IF( EQ_16( is_transient, 1 ) || BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[0], hStereoDmxEVS->aux_dmx_energy_fx_e[0], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[1] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[1], 14 ) ) > 0 || BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[1], hStereoDmxEVS->aux_dmx_energy_fx_e[1], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[0] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[0], 14 ) ) > 0 || - EQ_16( hStereoDmxEVS->hPHA->force_poc, TRUE ) ) + EQ_16( hPHA->force_poc, TRUE ) ) { - hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; + hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; move32(); - hStereoDmxEVS->hPHA->prc_hys_cnt = 0; + hPHA->prc_hys_cnt = 0; move16(); } - calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); - calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_fx ), &( hPHA->dmx_poc_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_fx ), &( hPHA->dmx_pha_ener_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); - IF( NE_32( prev_prc, hStereoDmxEVS->hPHA->curr_prc ) && EQ_16( is_transient, 0 ) && !( ( BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->hPHA->dmx_pha_ener_fx, hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e, hStereoDmxEVS->hPHA->low_egy_thres_sgc, hStereoDmxEVS->hPHA->low_egy_thres_sgc_e ) < 0 ) && ( BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->hPHA->dmx_poc_ener_fx, hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e, hStereoDmxEVS->hPHA->low_egy_thres_sgc, hStereoDmxEVS->hPHA->low_egy_thres_sgc_e ) < 0 ) ) ) + IF( NE_32( prev_prc, hPHA->curr_prc ) && EQ_16( is_transient, 0 ) && !( ( BASOP_Util_Cmp_Mant32Exp( hPHA->dmx_pha_ener_fx, hPHA->dmx_pha_ener_fx_e, hPHA->low_egy_thres_sgc, hPHA->low_egy_thres_sgc_e ) < 0 ) && ( BASOP_Util_Cmp_Mant32Exp( hPHA->dmx_poc_ener_fx, hPHA->dmx_poc_ener_fx_e, hPHA->low_egy_thres_sgc, hPHA->low_egy_thres_sgc_e ) < 0 ) ) ) { - IF( EQ_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) + IF( EQ_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) { - apply_gain_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx ), n_samples ); - calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + apply_gain_sgc( dmx_pha_data, &( hPHA->dmx_pha_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_sgc_fx ), &( hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); - L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->dmx_poc_ener_fx, hStereoDmxEVS->hPHA->dmx_poc_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); - BASOP_Util_Divide_MantExp( extract_h( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e ); + L_tmp1 = BASOP_Util_Add_Mant32Exp( hPHA->dmx_poc_ener_fx, hPHA->dmx_poc_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + BASOP_Util_Divide_MantExp( extract_h( hPHA->dmx_pha_ener_sgc_fx ), hPHA->dmx_pha_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e ); dmx_gain_sgc = Sqrt16( dmx_gain_sgc, &L_tmp2_e ); - hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15 - hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = L_min( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX ); - hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx = L_max( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN ); + hPHA->dmx_poc_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15 + hPHA->dmx_poc_gain_sgc_fx = L_min( hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX ); + hPHA->dmx_poc_gain_sgc_fx = L_max( hPHA->dmx_poc_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN ); - apply_gain_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx ), n_samples ); - calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + apply_gain_sgc( dmx_poc_data, &( hPHA->dmx_poc_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_sgc_fx ), &( hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); } ELSE { - apply_gain_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx ), n_samples ); - calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + apply_gain_sgc( dmx_poc_data, &( hPHA->dmx_poc_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_sgc_fx ), &( hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); - L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->dmx_pha_ener_fx, hStereoDmxEVS->hPHA->dmx_pha_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); - BASOP_Util_Divide_MantExp( extract_h( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e ); + L_tmp1 = BASOP_Util_Add_Mant32Exp( hPHA->dmx_pha_ener_fx, hPHA->dmx_pha_ener_fx_e, EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); + BASOP_Util_Divide_MantExp( extract_h( hPHA->dmx_poc_ener_sgc_fx ), hPHA->dmx_poc_ener_sgc_fx_e, extract_h( L_tmp1 ), L_tmp1_e, &dmx_gain_sgc, &L_tmp2_e ); dmx_gain_sgc = Sqrt16( dmx_gain_sgc, &L_tmp2_e ); - hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15 - hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = L_min( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX ); - hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx = L_max( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN ); + hPHA->dmx_pha_gain_sgc_fx = L_shl( L_deposit_l( dmx_gain_sgc ), L_tmp2_e ); // Q15 + hPHA->dmx_pha_gain_sgc_fx = L_min( hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMAX ); + hPHA->dmx_pha_gain_sgc_fx = L_max( hPHA->dmx_pha_gain_sgc_fx, STEREO_DMX_EVS_SGC_GMIN ); - apply_gain_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx ), n_samples ); - calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + apply_gain_sgc( dmx_pha_data, &( hPHA->dmx_pha_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_sgc_fx ), &( hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); } } ELSE { - apply_gain_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_gain_sgc_fx ), n_samples ); - calc_energy_sgc( dmx_poc_data, &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + apply_gain_sgc( dmx_poc_data, &( hPHA->dmx_poc_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_poc_data, &( hPHA->dmx_poc_ener_sgc_fx ), &( hPHA->dmx_poc_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); - apply_gain_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_gain_sgc_fx ), n_samples ); - calc_energy_sgc( dmx_pha_data, &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx ), &( hStereoDmxEVS->hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); + apply_gain_sgc( dmx_pha_data, &( hPHA->dmx_pha_gain_sgc_fx ), n_samples ); + calc_energy_sgc( dmx_pha_data, &( hPHA->dmx_pha_ener_sgc_fx ), &( hPHA->dmx_pha_ener_sgc_fx_e ), n_samples, STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 ); } - IF( EQ_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) + IF( EQ_32( hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) { p_dmx_data = dmx_poc_data; p_dmx_data_fo = dmx_pha_data; @@ -2821,47 +2826,48 @@ void stereo_dmx_evs_enc_fx( move16(); } - IF( NE_32( prev_prc, hStereoDmxEVS->hPHA->curr_prc ) ) + IF( NE_32( prev_prc, hPHA->curr_prc ) ) { - IF( EQ_16( hStereoDmxEVS->hPHA->n_fad_g, input_frame ) ) + IF( EQ_16( hPHA->n_fad_g, input_frame ) ) { - hStereoDmxEVS->hPHA->n_fad_g = 0; - hStereoDmxEVS->hPHA->n_fad_cnt = 0; + hPHA->n_fad_g = 0; + hPHA->n_fad_cnt = 0; move16(); move16(); } ELSE { - hStereoDmxEVS->hPHA->n_fad_g = sub( input_frame, add( hStereoDmxEVS->hPHA->n_fad_g, 1 ) ); + hPHA->n_fad_g = sub( input_frame, add( hPHA->n_fad_g, 1 ) ); #ifdef NONBE_FIX_947_STEREO_DMX_FADOPT - hStereoDmxEVS->hPHA->n_fad_cnt = 0; + hPHA->n_fad_cnt = 0; + move16(); #else IF( EQ_16( is_transient, 1 ) ) { - hStereoDmxEVS->hPHA->n_fad_cnt = 0; + hPHA->n_fad_cnt = 0; move16(); } ELSE { - hStereoDmxEVS->hPHA->n_fad_cnt = sub( n_fad_r, hStereoDmxEVS->hPHA->n_fad_cnt ); + hPHA->n_fad_cnt = sub( n_fad_r, hPHA->n_fad_cnt ); } #endif } } ELSE IF( is_transient ) { - hStereoDmxEVS->hPHA->n_fad_cnt = 0; + hPHA->n_fad_cnt = 0; move16(); } - fad_len = s_min( n_samples, sub( mult0( input_frame, n_fad_r ), add( mult0( hStereoDmxEVS->hPHA->n_fad_g, n_fad_r ), hStereoDmxEVS->hPHA->n_fad_cnt ) ) ); + fad_len = s_min( n_samples, sub( mult0( input_frame, n_fad_r ), add( mult0( hPHA->n_fad_g, n_fad_r ), hPHA->n_fad_cnt ) ) ); IF( NE_16( fad_len, 0 ) ) { - fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; + fad_g = hPHA->fad_g_prc_fx; move32(); - n_fad_g = hStereoDmxEVS->hPHA->n_fad_g; - n_fad_cnt = hStereoDmxEVS->hPHA->n_fad_cnt; + n_fad_g = hPHA->n_fad_g; + n_fad_cnt = hPHA->n_fad_cnt; move16(); move16(); m_fad_g = sub( input_frame, add( n_fad_g, 1 ) ); @@ -2949,8 +2955,8 @@ void stereo_dmx_evs_enc_fx( } #endif - hStereoDmxEVS->hPHA->n_fad_g = n_fad_g; - hStereoDmxEVS->hPHA->n_fad_cnt = n_fad_cnt; + hPHA->n_fad_g = n_fad_g; + hPHA->n_fad_cnt = n_fad_cnt; move16(); move16(); } @@ -3350,7 +3356,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( Word16 n, input_frame; Word16 m, len, pha_len, fad_len, fad_len2, rfft_ipd_coef_step, n0, input_frame_pha; - Word32 *fad_g, fad_r, *ipd_ff; + Word32 *fad_g, fad_r; Word16 *win; const Word16 *p_ipd_w; Word16 tmp_e; @@ -3608,7 +3614,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); IF( EQ_32( input_Fs, 16000 ) ) { - hStereoDmxEVS->hPHA->win_fx[pha_len - 1] = 7373; /*0.45f in Q14*/ + hStereoDmxEVS->hPHA->win_fx[sub( pha_len, 1 )] = 7373; /*0.45f in Q14*/ move16(); } ELSE IF( EQ_32( input_Fs, 32000 ) || EQ_32( input_Fs, 48000 ) ) @@ -3641,8 +3647,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( /* Compute the forgetting factor */ // replaced below logic with table as it is same for all frame lengths - ipd_ff = hStereoDmxEVS->hPHA->ipd_ff_fx; - Copy32( ipd_ff_Q31, ipd_ff, STEREO_DMX_EVS_NB_SUBBAND_MAX ); + Copy32( ipd_ff_Q31, hStereoDmxEVS->hPHA->ipd_ff_fx, STEREO_DMX_EVS_NB_SUBBAND_MAX ); #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA hStereoDmxEVS->hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD; @@ -3701,7 +3706,7 @@ ivas_error stereo_dmx_evs_init_encoder_fx( { win[n] = p_ipd_w[n * len]; move16(); - win[input_frame_pha - n] = p_ipd_w[n * len]; + win[sub( input_frame_pha, n )] = p_ipd_w[n * len]; move16(); } win[n0] = p_ipd_w[n0 * len]; -- GitLab From 61a827020ef9170c49311882b6f10b95421c0afd Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 19 May 2025 16:54:54 +0200 Subject: [PATCH 567/698] port MR 1373 from float fixes for MC encoder crashes with br and bw switching --- lib_com/options.h | 2 ++ lib_enc/bw_detect_fx.c | 23 +++++++++++++++++++++++ lib_enc/ivas_cpe_enc_fx.c | 12 ++++++++++++ lib_enc/ivas_mct_enc_fx.c | 21 +++++++++++++++++++++ 4 files changed, 58 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 53cac6f84..dd3d2ff21 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -115,6 +115,8 @@ #define NONBE_FIX_951_MCMASA_5MS_RENDERING /* Nokia: issue #951: Differences for 5ms and 20ms rendering for McMASA at 13.2 kbps to BINAURAL */ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ #define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ +#define FIX_ACCESS_WITHIN_NULL_STRUCT_MC_BW_SWITCHING /* FhG: fix usan error in MCT with bw swicthing */ +#define NONBE_FIX_986_MC_BW_SWITCHING /* FhG: fix crash in bw and br switching with MC */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_enc/bw_detect_fx.c b/lib_enc/bw_detect_fx.c index 8a150d514..eefd5057c 100644 --- a/lib_enc/bw_detect_fx.c +++ b/lib_enc/bw_detect_fx.c @@ -1140,6 +1140,28 @@ Word16 set_bw_mct_fx( bw_changed = 0; move16(); +#ifdef NONBE_FIX_986_MC_BW_SWITCHING + IF( NE_16( mct_bwidth, last_mct_bwidth ) ) + { + bw_changed = 1; + move16(); + } + + /* + * always set bw for all CPEs even if it is the same value as before, + * in case of bw + br switching when changing to MCT, this overwrites + * potentially incorrect initial values + */ + FOR( cpe_id = 0; cpe_id < nCPE; cpe_id++ ) + { + FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) + { + st = hCPE[cpe_id]->hCoreCoder[ch]; + st->bwidth = mct_bwidth; + move16(); + } + } +#else IF( NE_16( mct_bwidth, last_mct_bwidth ) ) { bw_changed = 1; @@ -1155,5 +1177,6 @@ Word16 set_bw_mct_fx( } } } +#endif return bw_changed; } diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index 826c23fdd..f6885dd81 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -1019,7 +1019,19 @@ ivas_error ivas_cpe_enc_fx( IF( ( NE_32( hCPE->last_element_brate, hCPE->element_brate ) || NE_16( hCPE->element_mode, hCPE->last_element_mode ) || ( EQ_16( hCPE->element_mode, IVAS_CPE_TD ) && NE_16( sts[0]->bits_frame_nominal, last_bits_frame_nominal ) ) || NE_16( sts[n]->last_bwidth, sts[n]->bwidth ) ) && ( n == 0 || EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) ) ) { Word16 igf; +#ifdef NONBE_FIX_986_MC_BW_SWITCHING + Word16 bw; + + /* float uses ternary operator for this: bw = ( hCPE->element_mode == IVAS_CPE_MDCT ) ? sts[n]->bwidth : sts[n]->max_bwidth; */ + bw = sts[n]->max_bwidth; + IF( EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) ) + { + bw = sts[n]->bwidth; + } + igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), bw, sts[n]->rf_mode ); /* Q0 */ +#else igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->rf_mode ); /* Q0 */ +#endif IF( ( error = IGF_Reconfig_fx( &sts[n]->hIGFEnc, igf, 0, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->element_mode, sts[n]->rf_mode ) ) != IVAS_ERR_OK ) { return error; diff --git a/lib_enc/ivas_mct_enc_fx.c b/lib_enc/ivas_mct_enc_fx.c index 56f5e44db..565b318f5 100644 --- a/lib_enc/ivas_mct_enc_fx.c +++ b/lib_enc/ivas_mct_enc_fx.c @@ -183,7 +183,9 @@ ivas_error ivas_mct_enc_fx( Word32 orig_spectrum_long_fx[MCT_MAX_BLOCKS][CPE_CHANNELS][L_FRAME48k]; Word16 switch_bw; IVAS_FORMAT ivas_format; +#ifndef NONBE_FIX_986_MC_BW_SWITCHING Word16 max_bwidth; +#endif Word32 ivas_total_brate; ivas_error error; Word32 *pdata_fx[MAX_INPUT_CHANNELS]; @@ -198,7 +200,9 @@ ivas_error ivas_mct_enc_fx( hMCT->hBstr = st_ivas->hCPE[0]->hCoreCoder[0]->hBstr; /* pointer to write MCT side bits */ ivas_format = st_ivas->hEncoderConfig->ivas_format; +#ifndef NONBE_FIX_986_MC_BW_SWITCHING max_bwidth = st_ivas->hEncoderConfig->max_bwidth; +#endif ivas_total_brate = st_ivas->hEncoderConfig->ivas_total_brate; move32(); move16(); @@ -248,6 +252,22 @@ ivas_error ivas_mct_enc_fx( cp_bitrate = L_shl( L_deposit_l( div_l( ivas_total_brate, st_ivas->nchan_transport ) ), 2 ); // a/b => div_l(a, b/2) or (2 * div_l(a, b)) } +#ifdef NONBE_FIX_986_MC_BW_SWITCHING + IF( st_ivas->hCPE[0]->hCoreCoder[0]->igf ) + { + FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ ) + { + initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, st_ivas->hCPE[0]->hCoreCoder[0]->bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, st_ivas->hCPE[0]->hCoreCoder[0]->hIGFEnc->igfData.igfInfo.grid, 0 ); + } + } + ELSE + { + FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ ) + { + initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, st_ivas->hCPE[0]->hCoreCoder[0]->bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, NULL, 0 ); + } + } +#else IF( st_ivas->hCPE[0]->hCoreCoder[0]->igf ) { FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ ) @@ -262,6 +282,7 @@ ivas_error ivas_mct_enc_fx( initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, max_bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, NULL, 0 ); } } +#endif } /* set coded audio band-width */ -- GitLab From 499840dcbc6cbed623dc7fafa8ba17759034059a Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 19 May 2025 18:40:03 +0200 Subject: [PATCH 568/698] port NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN --- lib_com/options.h | 2 ++ lib_dec/ivas_sba_dec_fx.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 53cac6f84..2a87c540b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -115,6 +115,8 @@ #define NONBE_FIX_951_MCMASA_5MS_RENDERING /* Nokia: issue #951: Differences for 5ms and 20ms rendering for McMASA at 13.2 kbps to BINAURAL */ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ #define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ +#define NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN /* FhG : issue #974: usan in mono and stereo output in OSBA JBM RS */ + /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index 24abcb667..86cd641c0 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -282,7 +282,11 @@ ivas_error ivas_sba_dec_reconfigure_fx( } /* save old */ +#ifdef NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN + IF( NE_16( ism_mode_old, ISM_SBA_MODE_DISC ) && NE_16( st_ivas->hTcBuffer->tc_buffer_mode, TC_BUFFER_MODE_BUFFER ) ) +#else IF( NE_16( ism_mode_old, ISM_SBA_MODE_DISC ) ) +#endif { test(); IF( st_ivas->hDirAC == NULL && st_ivas->hSpar != NULL ) -- GitLab From 48f94db17c0b7d5932cd21b09799e0fd5b79f88a Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 20 May 2025 07:30:10 +0530 Subject: [PATCH 569/698] Renaming and cleanup of files --- Workspace_msvc/lib_com.vcxproj | 51 +- Workspace_msvc/lib_com.vcxproj.filters | 153 +- Workspace_msvc/lib_dec.vcxproj | 24 +- Workspace_msvc/lib_dec.vcxproj.filters | 96 +- Workspace_msvc/lib_enc.vcxproj | 7 +- Workspace_msvc/lib_enc.vcxproj.filters | 17 +- Workspace_msvc/lib_rend.vcxproj | 5 +- Workspace_msvc/lib_rend.vcxproj.filters | 11 +- lib_com/{cldfb_evs.c => cldfb_evs_fx.c} | 0 lib_com/{cldfb.c => cldfb_fx.c} | 0 ...dec_tcx_common.c => codec_tcx_common_fx.c} | 0 ...core_com_config.c => core_com_config_fx.c} | 0 lib_com/{deemph.c => deemph_fx.c} | 0 lib_com/{delay_comp.c => delay_comp_fx.c} | 0 lib_com/{enr_1_az.c => enr_1_az_fx.c} | 0 lib_com/{env_adj.c => env_adj_fx.c} | 0 lib_com/{env_stab.c => env_stab_fx.c} | 0 .../{env_stab_trans.c => env_stab_trans_fx.c} | 0 lib_com/fft.c | 366 -- lib_com/fft_fx.c | 316 +- lib_com/fft_rel.c | 878 ----- lib_com/fft_rel_fx.c | 842 +++++ .../{fill_spectrum.c => fill_spectrum_fx.c} | 0 lib_com/{findpulse.c => findpulse_fx.c} | 0 lib_com/gs_gains.c | 425 --- lib_com/gs_gains_fx.c | 528 ++- lib_com/hq2_core_com.c | 177 - lib_com/hq_conf.c | 303 -- lib_com/hq_conf_fx.c | 261 ++ lib_com/{ifft_rel.c => ifft_rel_fx.c} | 0 lib_com/{int_lsp.c => int_lsp_fx.c} | 0 ...ve_spectrum.c => interleave_spectrum_fx.c} | 0 lib_com/{interpol.c => interpol_fx.c} | 0 ...s_mcmasa_com-fx.c => ivas_mcmasa_com_fx.c} | 0 lib_com/ivas_prot_fx.h | 9 +- lib_com/{lag_wind.c => lag_wind_fx.c} | 0 lib_com/{lerp.c => lerp_fx.c} | 0 lib_com/modif_fs.c | 469 --- lib_com/modif_fs_fx.c | 432 ++- lib_com/mslvq_com.c | 208 -- lib_com/mslvq_com_fx.c | 122 + lib_com/preemph.c | 72 - lib_com/preemph_fx.c | 36 + lib_com/prot_fx.h | 44 +- ...tcx_mdct_window.c => tcx_mdct_window_fx.c} | 0 lib_com/{tec_com.c => tec_com_fx.c} | 0 lib_com/wtda.c | 219 -- lib_com/wtda_fx.c | 146 +- lib_dec/{ari_hm_dec.c => ari_hm_dec_fx.c} | 0 lib_dec/ivas_cpe_dec_fx.c | 2 +- lib_dec/ivas_init_dec.c | 3255 ----------------- lib_dec/ivas_init_dec_fx.c | 3255 +++++++++++++++++ lib_dec/{ivas_rom_dec.c => ivas_rom_dec_fx.c} | 0 ...reo_cng_dec.c => ivas_stereo_cng_dec_fx.c} | 0 lib_dec/ivas_stereo_dft_dec.c | 494 --- lib_dec/ivas_stereo_dft_dec_fx.c | 398 +- lib_dec/ivas_stereo_switching_dec_fx.c | 4 +- ...arbuffer.c => jbm_jb4_circularbuffer_fx.c} | 0 ...inputbuffer.c => jbm_jb4_inputbuffer_fx.c} | 0 lib_dec/{jbm_jb4_jmf.c => jbm_jb4_jmf_fx.c} | 0 lib_dec/{jbm_jb4sb.c => jbm_jb4sb_fx.c} | 0 .../{jbm_pcmdsp_apa.c => jbm_pcmdsp_apa_fx.c} | 0 ...c => jbm_pcmdsp_similarityestimation_fx.c} | 0 ...pcmdsp_window.c => jbm_pcmdsp_window_fx.c} | 0 lib_dec/{rom_dec.c => rom_dec_fx.c} | 0 lib_enc/{cod4t64_fast.c => cod4t64_fast_fx.c} | 0 lib_enc/{lib_enc.c => lib_enc_fx.c} | 0 lib_enc/lsf_msvq_ma_enc.c | 794 ---- lib_enc/lsf_msvq_ma_enc_fx.c | 921 ++++- lib_enc/{rom_enc.c => rom_enc_fx.c} | 0 lib_rend/ivas_output_init.c | 489 --- lib_rend/ivas_output_init_fx.c | 492 ++- lib_rend/{lib_rend.c => lib_rend_fx.c} | 0 73 files changed, 7647 insertions(+), 8674 deletions(-) rename lib_com/{cldfb_evs.c => cldfb_evs_fx.c} (100%) rename lib_com/{cldfb.c => cldfb_fx.c} (100%) rename lib_com/{codec_tcx_common.c => codec_tcx_common_fx.c} (100%) rename lib_com/{core_com_config.c => core_com_config_fx.c} (100%) rename lib_com/{deemph.c => deemph_fx.c} (100%) rename lib_com/{delay_comp.c => delay_comp_fx.c} (100%) rename lib_com/{enr_1_az.c => enr_1_az_fx.c} (100%) rename lib_com/{env_adj.c => env_adj_fx.c} (100%) rename lib_com/{env_stab.c => env_stab_fx.c} (100%) rename lib_com/{env_stab_trans.c => env_stab_trans_fx.c} (100%) delete mode 100644 lib_com/fft.c delete mode 100644 lib_com/fft_rel.c rename lib_com/{fill_spectrum.c => fill_spectrum_fx.c} (100%) rename lib_com/{findpulse.c => findpulse_fx.c} (100%) delete mode 100644 lib_com/gs_gains.c delete mode 100644 lib_com/hq2_core_com.c delete mode 100644 lib_com/hq_conf.c rename lib_com/{ifft_rel.c => ifft_rel_fx.c} (100%) rename lib_com/{int_lsp.c => int_lsp_fx.c} (100%) rename lib_com/{interleave_spectrum.c => interleave_spectrum_fx.c} (100%) rename lib_com/{interpol.c => interpol_fx.c} (100%) rename lib_com/{ivas_mcmasa_com-fx.c => ivas_mcmasa_com_fx.c} (100%) rename lib_com/{lag_wind.c => lag_wind_fx.c} (100%) rename lib_com/{lerp.c => lerp_fx.c} (100%) delete mode 100644 lib_com/modif_fs.c delete mode 100644 lib_com/mslvq_com.c delete mode 100644 lib_com/preemph.c rename lib_com/{tcx_mdct_window.c => tcx_mdct_window_fx.c} (100%) rename lib_com/{tec_com.c => tec_com_fx.c} (100%) delete mode 100644 lib_com/wtda.c rename lib_dec/{ari_hm_dec.c => ari_hm_dec_fx.c} (100%) delete mode 100644 lib_dec/ivas_init_dec.c rename lib_dec/{ivas_rom_dec.c => ivas_rom_dec_fx.c} (100%) rename lib_dec/{ivas_stereo_cng_dec.c => ivas_stereo_cng_dec_fx.c} (100%) delete mode 100644 lib_dec/ivas_stereo_dft_dec.c rename lib_dec/{jbm_jb4_circularbuffer.c => jbm_jb4_circularbuffer_fx.c} (100%) rename lib_dec/{jbm_jb4_inputbuffer.c => jbm_jb4_inputbuffer_fx.c} (100%) rename lib_dec/{jbm_jb4_jmf.c => jbm_jb4_jmf_fx.c} (100%) rename lib_dec/{jbm_jb4sb.c => jbm_jb4sb_fx.c} (100%) rename lib_dec/{jbm_pcmdsp_apa.c => jbm_pcmdsp_apa_fx.c} (100%) rename lib_dec/{jbm_pcmdsp_similarityestimation.c => jbm_pcmdsp_similarityestimation_fx.c} (100%) rename lib_dec/{jbm_pcmdsp_window.c => jbm_pcmdsp_window_fx.c} (100%) rename lib_dec/{rom_dec.c => rom_dec_fx.c} (100%) rename lib_enc/{cod4t64_fast.c => cod4t64_fast_fx.c} (100%) rename lib_enc/{lib_enc.c => lib_enc_fx.c} (100%) delete mode 100644 lib_enc/lsf_msvq_ma_enc.c rename lib_enc/{rom_enc.c => rom_enc_fx.c} (100%) delete mode 100644 lib_rend/ivas_output_init.c rename lib_rend/{lib_rend.c => lib_rend_fx.c} (100%) diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 7a2aa8a7f..91401ee2e 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -136,14 +136,14 @@ - - + + - + - - - + + + @@ -153,21 +153,19 @@ - - - - + + + + - - - - + + @@ -175,7 +173,6 @@ - @@ -183,20 +180,18 @@ - - - + - - - + + + @@ -207,7 +202,7 @@ - + @@ -235,8 +230,8 @@ - - + + @@ -248,9 +243,7 @@ - - @@ -258,7 +251,6 @@ - @@ -283,9 +275,9 @@ - + - + @@ -297,7 +289,6 @@ - diff --git a/Workspace_msvc/lib_com.vcxproj.filters b/Workspace_msvc/lib_com.vcxproj.filters index 89b47a3fc..3b781aa40 100644 --- a/Workspace_msvc/lib_com.vcxproj.filters +++ b/Workspace_msvc/lib_com.vcxproj.filters @@ -115,9 +115,6 @@ common_all_c - - common_all_c - common_all_c @@ -133,9 +130,6 @@ common_all_c - - common_all_c - common_all_c @@ -301,21 +295,9 @@ common_all_c - - common_all_c - common_all_c - - common_all_c - - - common_all_c - - - common_all_c - common_all_c @@ -325,30 +307,6 @@ common_all_c - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - common_all_c @@ -361,33 +319,12 @@ common_all_c - - common_all_c - common_all_c common_all_c - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - - - common_all_c - common_ivas_c @@ -403,45 +340,21 @@ common_ivas_c - - common_all_c - - - common_all_c - common_all_c - - common_all_c - - - common_all_c - common_all_c - - common_all_c - common_all_c common_all_c - - common_all_c - - - common_all_c - common_all_c - - common_all_c - common_all_c @@ -481,9 +394,6 @@ common_ivas_c - - common_ivas_c - common_ivas_c @@ -535,6 +445,69 @@ common_ivas_c + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_ivas_c + + + common_all_c + + + common_all_c + + + common_all_c + + + common_all_c + diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 12f77b346..1ae8c4d93 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -144,7 +144,7 @@ - + @@ -215,7 +215,6 @@ - @@ -245,7 +244,7 @@ - + @@ -254,8 +253,7 @@ - - + @@ -270,13 +268,13 @@ - - - - - - - + + + + + + + @@ -293,7 +291,7 @@ - + diff --git a/Workspace_msvc/lib_dec.vcxproj.filters b/Workspace_msvc/lib_dec.vcxproj.filters index 25079058c..170eada9a 100644 --- a/Workspace_msvc/lib_dec.vcxproj.filters +++ b/Workspace_msvc/lib_dec.vcxproj.filters @@ -74,12 +74,6 @@ decoder_ivas_c - - decoder_ivas_c - - - decoder_ivas_c - decoder_ivas_c @@ -89,9 +83,6 @@ decoder_ivas_c - - decoder_ivas_c - decoder_ivas_c @@ -101,12 +92,6 @@ decoder_ivas_c - - decoder_ivas_c - - - decoder_ivas_c - decoder_ivas_c @@ -122,9 +107,6 @@ decoder_all_c - - decoder_all_c - decoder_all_c @@ -263,27 +245,6 @@ decoder_all_c - - decoder_all_c - - - decoder_all_c - - - decoder_all_c - - - decoder_all_c - - - decoder_all_c - - - decoder_all_c - - - decoder_all_c - decoder_all_c @@ -323,9 +284,6 @@ decoder_all_c - - decoder_all_c - decoder_all_c @@ -515,18 +473,45 @@ decoder_all_c + + decoder_all_c + + + decoder_ivas_c + + + decoder_all_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_all_c + + + decoder_all_c + + + decoder_all_c + + + decoder_all_c + + + decoder_all_c + + + decoder_all_c + + + decoder_all_c + - - decoder_h - - - decoder_h - - - decoder_h - decoder_h @@ -554,6 +539,15 @@ decoder_h + + decoder_h + + + decoder_h + + + decoder_h + diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 86dcef905..af16efedf 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -239,7 +239,7 @@ - + @@ -274,11 +274,10 @@ - + - @@ -318,7 +317,7 @@ - + diff --git a/Workspace_msvc/lib_enc.vcxproj.filters b/Workspace_msvc/lib_enc.vcxproj.filters index 899097163..e8f429f49 100644 --- a/Workspace_msvc/lib_enc.vcxproj.filters +++ b/Workspace_msvc/lib_enc.vcxproj.filters @@ -1,7 +1,6 @@  - encoder_evs_c @@ -152,9 +151,6 @@ encoder_all_c - - encoder_all_c - encoder_all_c @@ -287,9 +283,6 @@ encoder_all_c - - encoder_all_c - encoder_all_c @@ -347,9 +340,6 @@ encoder_all_c - - encoder_all_c - encoder_all_c @@ -602,6 +592,13 @@ encoder_ivas_c + + encoder_all_c + + + + encoder_all_c + diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index e47858ae3..0a00f9331 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -142,7 +142,6 @@ - @@ -159,7 +158,7 @@ - + @@ -176,7 +175,7 @@ - + diff --git a/Workspace_msvc/lib_rend.vcxproj.filters b/Workspace_msvc/lib_rend.vcxproj.filters index 5c4a49011..820a5c044 100644 --- a/Workspace_msvc/lib_rend.vcxproj.filters +++ b/Workspace_msvc/lib_rend.vcxproj.filters @@ -1,13 +1,6 @@ - - - rend_c - - - rend_c - rend_c @@ -122,6 +115,10 @@ rend_c + + rend_c + + diff --git a/lib_com/cldfb_evs.c b/lib_com/cldfb_evs_fx.c similarity index 100% rename from lib_com/cldfb_evs.c rename to lib_com/cldfb_evs_fx.c diff --git a/lib_com/cldfb.c b/lib_com/cldfb_fx.c similarity index 100% rename from lib_com/cldfb.c rename to lib_com/cldfb_fx.c diff --git a/lib_com/codec_tcx_common.c b/lib_com/codec_tcx_common_fx.c similarity index 100% rename from lib_com/codec_tcx_common.c rename to lib_com/codec_tcx_common_fx.c diff --git a/lib_com/core_com_config.c b/lib_com/core_com_config_fx.c similarity index 100% rename from lib_com/core_com_config.c rename to lib_com/core_com_config_fx.c diff --git a/lib_com/deemph.c b/lib_com/deemph_fx.c similarity index 100% rename from lib_com/deemph.c rename to lib_com/deemph_fx.c diff --git a/lib_com/delay_comp.c b/lib_com/delay_comp_fx.c similarity index 100% rename from lib_com/delay_comp.c rename to lib_com/delay_comp_fx.c diff --git a/lib_com/enr_1_az.c b/lib_com/enr_1_az_fx.c similarity index 100% rename from lib_com/enr_1_az.c rename to lib_com/enr_1_az_fx.c diff --git a/lib_com/env_adj.c b/lib_com/env_adj_fx.c similarity index 100% rename from lib_com/env_adj.c rename to lib_com/env_adj_fx.c diff --git a/lib_com/env_stab.c b/lib_com/env_stab_fx.c similarity index 100% rename from lib_com/env_stab.c rename to lib_com/env_stab_fx.c diff --git a/lib_com/env_stab_trans.c b/lib_com/env_stab_trans_fx.c similarity index 100% rename from lib_com/env_stab_trans.c rename to lib_com/env_stab_trans_fx.c diff --git a/lib_com/fft.c b/lib_com/fft.c deleted file mode 100644 index e262f3909..000000000 --- a/lib_com/fft.c +++ /dev/null @@ -1,366 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include -#include "options.h" -#include -#include "cnst.h" -#include "prot_fx.h" -#include "rom_com.h" -#include "wmc_auto.h" - -#ifdef _MSC_VER -#pragma warning( disable : 4310 ) -#endif - -/*-----------------------------------------------------------------* - * Low-complexity implementation of FFT - *-----------------------------------------------------------------*/ - -#define WMC_TOOL_SKIP - -#define SHC( x ) ( (Word16) x ) -#define FFTC( x ) WORD322WORD16( (Word32) x ) - -#define C81_FX ( FFTC( 0x5a82799a ) ) /* FL2WORD32( 7.071067811865475e-1) */ -#define C82_FX ( FFTC( 0xa57d8666 ) ) /* FL2WORD32(-7.071067811865475e-1) */ - -#define cplxMpy4_8_0( re, im, a, b, c, d ) \ - re = L_shr( L_sub( Mpy_32_16_1( a, c ), Mpy_32_16_1( b, d ) ), 1 ); \ - im = L_shr( L_add( Mpy_32_16_1( a, d ), Mpy_32_16_1( b, c ) ), 1 ); - -#define cplxMpy4_8_1( re, im, a, b ) \ - re = L_shr( a, 1 ); \ - im = L_shr( b, 1 ); - - -/** - * \brief Twiddle factors are unscaled - */ -/*-----------------------------------------------------------------* - * BASOP_fft8() - * - * Function performs a complex 8-point FFT - * The FFT is performed inplace. The result of the FFT - * is scaled by SCALEFACTOR8 bits. - * - * WOPS with 32x16 bit multiplications: 108 cycles - *-----------------------------------------------------------------*/ - -static void BASOP_fft8( - Word32 *re, - Word32 *im, - Word16 s ) -{ - Word32 x00, x01, x02, x03, x04, x05, x06, x07; - Word32 x08, x09, x10, x11, x12, x13, x14, x15; - Word32 t00, t01, t02, t03, t04, t05, t06, t07; - Word32 t08, t09, t10, t11, t12, t13, t14, t15; - Word32 s00, s01, s02, s03, s04, s05, s06, s07; - Word32 s08, s09, s10, s11, s12, s13, s14, s15; - - - /* Pre-additions */ - - x00 = L_shr( re[s * 0], SCALEFACTOR8 ); - x01 = L_shr( im[s * 0], SCALEFACTOR8 ); - x02 = L_shr( re[s * 1], SCALEFACTOR8 ); - x03 = L_shr( im[s * 1], SCALEFACTOR8 ); - x04 = L_shr( re[s * 2], SCALEFACTOR8 ); - x05 = L_shr( im[s * 2], SCALEFACTOR8 ); - x06 = L_shr( re[s * 3], SCALEFACTOR8 ); - x07 = L_shr( im[s * 3], SCALEFACTOR8 ); - x08 = L_shr( re[s * 4], SCALEFACTOR8 ); - x09 = L_shr( im[s * 4], SCALEFACTOR8 ); - x10 = L_shr( re[s * 5], SCALEFACTOR8 ); - x11 = L_shr( im[s * 5], SCALEFACTOR8 ); - x12 = L_shr( re[s * 6], SCALEFACTOR8 ); - x13 = L_shr( im[s * 6], SCALEFACTOR8 ); - x14 = L_shr( re[s * 7], SCALEFACTOR8 ); - x15 = L_shr( im[s * 7], SCALEFACTOR8 ); - - t00 = L_add( x00, x08 ); - t02 = L_sub( x00, x08 ); - t01 = L_add( x01, x09 ); - t03 = L_sub( x01, x09 ); - t04 = L_add( x02, x10 ); - t06 = L_sub( x02, x10 ); - t05 = L_add( x03, x11 ); - t07 = L_sub( x03, x11 ); - t08 = L_add( x04, x12 ); - t10 = L_sub( x04, x12 ); - t09 = L_add( x05, x13 ); - t11 = L_sub( x05, x13 ); - t12 = L_add( x06, x14 ); - t14 = L_sub( x06, x14 ); - t13 = L_add( x07, x15 ); - t15 = L_sub( x07, x15 ); - - /* Pre-additions and core multiplications */ - - s00 = L_add( t00, t08 ); - s04 = L_sub( t00, t08 ); - s01 = L_add( t01, t09 ); - s05 = L_sub( t01, t09 ); - s08 = L_sub( t02, t11 ); - s10 = L_add( t02, t11 ); - s09 = L_add( t03, t10 ); - s11 = L_sub( t03, t10 ); - s02 = L_add( t04, t12 ); - s07 = L_sub( t04, t12 ); - s03 = L_add( t05, t13 ); - s06 = L_sub( t13, t05 ); - - t01 = L_add( t06, t14 ); - t02 = L_sub( t06, t14 ); - t00 = L_add( t07, t15 ); - t03 = L_sub( t07, t15 ); - - s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX ); - s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX ); - s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX ); - s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX ); - - /* Post-additions */ - - re[s * 0] = L_add( s00, s02 ); - move32(); - re[s * 4] = L_sub( s00, s02 ); - move32(); - im[s * 0] = L_add( s01, s03 ); - move32(); - im[s * 4] = L_sub( s01, s03 ); - move32(); - re[s * 2] = L_sub( s04, s06 ); - move32(); - re[s * 6] = L_add( s04, s06 ); - move32(); - im[s * 2] = L_sub( s05, s07 ); - move32(); - im[s * 6] = L_add( s05, s07 ); - move32(); - re[i_mult( s, 3 )] = L_add( s08, s14 ); - move32(); - re[i_mult( s, 7 )] = L_sub( s08, s14 ); - move32(); - im[i_mult( s, 3 )] = L_add( s09, s15 ); - move32(); - im[i_mult( s, 7 )] = L_sub( s09, s15 ); - move32(); - re[s * 1] = L_add( s10, s12 ); - move32(); - re[i_mult( s, 5 )] = L_sub( s10, s12 ); - move32(); - im[s * 1] = L_add( s11, s13 ); - move32(); - im[i_mult( s, 5 )] = L_sub( s11, s13 ); - move32(); - - return; -} - - -/*-----------------------------------------------------------------* - * fftN2() - * - * Combined FFT - *-----------------------------------------------------------------*/ - -static void BASOP_fftN2( - Word32 *re, /* i/o: real part */ - Word32 *im, /* i/o: imag part */ - const Word16 *W, /* i : rotation factor */ - Word16 dim1, /* i : length of fft1 */ - Word16 dim2, /* i : length of fft2 */ - Word16 sx, /* i : stride real and imag part */ - Word16 sc, /* i : stride phase rotation coefficients */ - Word32 *x, /* tmp: 32-bit workbuffer */ - Word16 Woff /* i : offset for addressing the rotation vector table */ -) -{ - Word16 i, j; - Word32 x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11, x12, x13, x14, x15; - Word32 t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15; - Word32 s00, s01, s02, s03, s04, s05, s06, s07, s08, s09, s10, s11, s12, s13, s14, s15; - - FOR( i = 0; i < dim2; i++ ) - { - FOR( j = 0; j < dim1; j++ ) - { - x[2 * i * dim1 + 2 * j] = re[sx * i + sx * j * dim2]; - move32(); - x[2 * i * dim1 + 2 * j + 1] = im[sx * i + sx * j * dim2]; - move32(); - } - } - - /* dim1 == 8 */ - FOR( i = 0; i < dim2; i++ ) - { - BASOP_fft8( &x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2 ); - } - - /* dim2 == 8 */ - FOR( i = 0; i < dim1; i++ ) - { - cplxMpy4_8_1( x00, x01, x[2 * i + 2 * 0 * dim1], x[2 * i + 2 * 0 * dim1 + 1] ); - - IF( i == 0 ) - { - cplxMpy4_8_1( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )] ); - cplxMpy4_8_1( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )] ); - cplxMpy4_8_1( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )] ); - cplxMpy4_8_1( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )] ); - cplxMpy4_8_1( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )] ); - cplxMpy4_8_1( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )] ); - cplxMpy4_8_1( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )] ); - } - ELSE - { - cplxMpy4_8_0( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), 1 ), Woff )] ); - cplxMpy4_8_0( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), 1 ), Woff )] ); - cplxMpy4_8_0( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), 1 ), Woff )] ); - cplxMpy4_8_0( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), 1 ), Woff )] ); - cplxMpy4_8_0( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), 1 ), Woff )] ); - cplxMpy4_8_0( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), 1 ), Woff )] ); - cplxMpy4_8_0( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), 1 ), Woff )] ); - } - t00 = L_shr( L_add( x00, x08 ), SCALEFACTORN2 - 1 ); - t02 = L_shr( L_sub( x00, x08 ), SCALEFACTORN2 - 1 ); - t01 = L_shr( L_add( x01, x09 ), SCALEFACTORN2 - 1 ); - t03 = L_shr( L_sub( x01, x09 ), SCALEFACTORN2 - 1 ); - t04 = L_shr( L_add( x02, x10 ), SCALEFACTORN2 - 1 ); - t06 = L_sub( x02, x10 ); - t05 = L_shr( L_add( x03, x11 ), SCALEFACTORN2 - 1 ); - t07 = L_sub( x03, x11 ); - t08 = L_shr( L_add( x04, x12 ), SCALEFACTORN2 - 1 ); - t10 = L_shr( L_sub( x04, x12 ), SCALEFACTORN2 - 1 ); - t09 = L_shr( L_add( x05, x13 ), SCALEFACTORN2 - 1 ); - t11 = L_shr( L_sub( x05, x13 ), SCALEFACTORN2 - 1 ); - t12 = L_shr( L_add( x06, x14 ), SCALEFACTORN2 - 1 ); - t14 = L_sub( x06, x14 ); - t13 = L_shr( L_add( x07, x15 ), SCALEFACTORN2 - 1 ); - t15 = L_sub( x07, x15 ); - - s00 = L_add( t00, t08 ); - s04 = L_sub( t00, t08 ); - s01 = L_add( t01, t09 ); - s05 = L_sub( t01, t09 ); - s08 = L_sub( t02, t11 ); - s10 = L_add( t02, t11 ); - s09 = L_add( t03, t10 ); - s11 = L_sub( t03, t10 ); - s02 = L_add( t04, t12 ); - s07 = L_sub( t04, t12 ); - s03 = L_add( t05, t13 ); - s06 = L_sub( t13, t05 ); - - t01 = L_shr( L_add( t06, t14 ), SCALEFACTORN2 - 1 ); - t02 = L_shr( L_sub( t06, t14 ), SCALEFACTORN2 - 1 ); - t00 = L_shr( L_add( t07, t15 ), SCALEFACTORN2 - 1 ); - t03 = L_shr( L_sub( t07, t15 ), SCALEFACTORN2 - 1 ); - - s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX ); - s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX ); - s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX ); - s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX ); - - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s00, s02 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s01, s03 ); - move32(); - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s10, s12 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s11, s13 ); - move32(); - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s04, s06 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s05, s07 ); - move32(); - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s08, s14 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s09, s15 ); - move32(); - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s00, s02 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s01, s03 ); - move32(); - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s10, s12 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s11, s13 ); - move32(); - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s04, s06 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s05, s07 ); - move32(); - re[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s08, s14 ); - move32(); - im[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s09, s15 ); - move32(); - } - - return; -} - - -/*-----------------------------------------------------------------* - * BASOP_cfft_ivas() - * - * Complex valued FFT - *-----------------------------------------------------------------*/ - -void BASOP_cfft_ivas( - Word32 *re, /* i/o: real part */ - Word32 *im, /* i/o: imag part */ - Word16 s, /* i : stride real and imag part */ - Word16 *scale /* i : scalefactor */ -) -{ - Word32 x[2 * 64]; - - /* FFT for len = FDNS_NPTS */ - BASOP_fftN2( re, im, RotVector_256, 8, 8, s, 8, x, 64 ); - s = add( *scale, SCALEFACTOR64 ); - - *scale = s; - move16(); - - return; -} - - -#undef WMC_TOOL_SKIP diff --git a/lib_com/fft_fx.c b/lib_com/fft_fx.c index 5ee509879..40c978014 100644 --- a/lib_com/fft_fx.c +++ b/lib_com/fft_fx.c @@ -44,9 +44,7 @@ #include "options.h" #include #include "cnst.h" -// #include "prot_fx.h" #include "prot_fx.h" -//#include "cnst_fx.h" #include "rom_com.h" #include "rom_com_fx.h" #include "wmc_auto.h" @@ -7555,3 +7553,317 @@ void rfft_fx( return; } + + +#define WMC_TOOL_SKIP + +#define SHC( x ) ( (Word16) x ) +#define FFTC( x ) WORD322WORD16( (Word32) x ) + +#define C81_FX ( FFTC( 0x5a82799a ) ) /* FL2WORD32( 7.071067811865475e-1) */ +#define C82_FX ( FFTC( 0xa57d8666 ) ) /* FL2WORD32(-7.071067811865475e-1) */ + +#define cplxMpy4_8_0( re, im, a, b, c, d ) \ + re = L_shr( L_sub( Mpy_32_16_1( a, c ), Mpy_32_16_1( b, d ) ), 1 ); \ + im = L_shr( L_add( Mpy_32_16_1( a, d ), Mpy_32_16_1( b, c ) ), 1 ); + +#define cplxMpy4_8_1( re, im, a, b ) \ + re = L_shr( a, 1 ); \ + im = L_shr( b, 1 ); + + +/** + * \brief Twiddle factors are unscaled + */ +/*-----------------------------------------------------------------* + * BASOP_fft8() + * + * Function performs a complex 8-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR8 bits. + * + * WOPS with 32x16 bit multiplications: 108 cycles + *-----------------------------------------------------------------*/ + +static void BASOP_fft8( + Word32 *re, + Word32 *im, + Word16 s ) +{ + Word32 x00, x01, x02, x03, x04, x05, x06, x07; + Word32 x08, x09, x10, x11, x12, x13, x14, x15; + Word32 t00, t01, t02, t03, t04, t05, t06, t07; + Word32 t08, t09, t10, t11, t12, t13, t14, t15; + Word32 s00, s01, s02, s03, s04, s05, s06, s07; + Word32 s08, s09, s10, s11, s12, s13, s14, s15; + + + /* Pre-additions */ + + x00 = L_shr( re[s * 0], SCALEFACTOR8 ); + x01 = L_shr( im[s * 0], SCALEFACTOR8 ); + x02 = L_shr( re[s * 1], SCALEFACTOR8 ); + x03 = L_shr( im[s * 1], SCALEFACTOR8 ); + x04 = L_shr( re[s * 2], SCALEFACTOR8 ); + x05 = L_shr( im[s * 2], SCALEFACTOR8 ); + x06 = L_shr( re[s * 3], SCALEFACTOR8 ); + x07 = L_shr( im[s * 3], SCALEFACTOR8 ); + x08 = L_shr( re[s * 4], SCALEFACTOR8 ); + x09 = L_shr( im[s * 4], SCALEFACTOR8 ); + x10 = L_shr( re[s * 5], SCALEFACTOR8 ); + x11 = L_shr( im[s * 5], SCALEFACTOR8 ); + x12 = L_shr( re[s * 6], SCALEFACTOR8 ); + x13 = L_shr( im[s * 6], SCALEFACTOR8 ); + x14 = L_shr( re[s * 7], SCALEFACTOR8 ); + x15 = L_shr( im[s * 7], SCALEFACTOR8 ); + + t00 = L_add( x00, x08 ); + t02 = L_sub( x00, x08 ); + t01 = L_add( x01, x09 ); + t03 = L_sub( x01, x09 ); + t04 = L_add( x02, x10 ); + t06 = L_sub( x02, x10 ); + t05 = L_add( x03, x11 ); + t07 = L_sub( x03, x11 ); + t08 = L_add( x04, x12 ); + t10 = L_sub( x04, x12 ); + t09 = L_add( x05, x13 ); + t11 = L_sub( x05, x13 ); + t12 = L_add( x06, x14 ); + t14 = L_sub( x06, x14 ); + t13 = L_add( x07, x15 ); + t15 = L_sub( x07, x15 ); + + /* Pre-additions and core multiplications */ + + s00 = L_add( t00, t08 ); + s04 = L_sub( t00, t08 ); + s01 = L_add( t01, t09 ); + s05 = L_sub( t01, t09 ); + s08 = L_sub( t02, t11 ); + s10 = L_add( t02, t11 ); + s09 = L_add( t03, t10 ); + s11 = L_sub( t03, t10 ); + s02 = L_add( t04, t12 ); + s07 = L_sub( t04, t12 ); + s03 = L_add( t05, t13 ); + s06 = L_sub( t13, t05 ); + + t01 = L_add( t06, t14 ); + t02 = L_sub( t06, t14 ); + t00 = L_add( t07, t15 ); + t03 = L_sub( t07, t15 ); + + s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX ); + s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX ); + s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX ); + s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX ); + + /* Post-additions */ + + re[s * 0] = L_add( s00, s02 ); + move32(); + re[s * 4] = L_sub( s00, s02 ); + move32(); + im[s * 0] = L_add( s01, s03 ); + move32(); + im[s * 4] = L_sub( s01, s03 ); + move32(); + re[s * 2] = L_sub( s04, s06 ); + move32(); + re[s * 6] = L_add( s04, s06 ); + move32(); + im[s * 2] = L_sub( s05, s07 ); + move32(); + im[s * 6] = L_add( s05, s07 ); + move32(); + re[i_mult( s, 3 )] = L_add( s08, s14 ); + move32(); + re[i_mult( s, 7 )] = L_sub( s08, s14 ); + move32(); + im[i_mult( s, 3 )] = L_add( s09, s15 ); + move32(); + im[i_mult( s, 7 )] = L_sub( s09, s15 ); + move32(); + re[s * 1] = L_add( s10, s12 ); + move32(); + re[i_mult( s, 5 )] = L_sub( s10, s12 ); + move32(); + im[s * 1] = L_add( s11, s13 ); + move32(); + im[i_mult( s, 5 )] = L_sub( s11, s13 ); + move32(); + + return; +} + + +/*-----------------------------------------------------------------* + * fftN2() + * + * Combined FFT + *-----------------------------------------------------------------*/ + +static void BASOP_fftN2( + Word32 *re, /* i/o: real part */ + Word32 *im, /* i/o: imag part */ + const Word16 *W, /* i : rotation factor */ + Word16 dim1, /* i : length of fft1 */ + Word16 dim2, /* i : length of fft2 */ + Word16 sx, /* i : stride real and imag part */ + Word16 sc, /* i : stride phase rotation coefficients */ + Word32 *x, /* tmp: 32-bit workbuffer */ + Word16 Woff /* i : offset for addressing the rotation vector table */ +) +{ + Word16 i, j; + Word32 x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11, x12, x13, x14, x15; + Word32 t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15; + Word32 s00, s01, s02, s03, s04, s05, s06, s07, s08, s09, s10, s11, s12, s13, s14, s15; + + FOR( i = 0; i < dim2; i++ ) + { + FOR( j = 0; j < dim1; j++ ) + { + x[2 * i * dim1 + 2 * j] = re[sx * i + sx * j * dim2]; + move32(); + x[2 * i * dim1 + 2 * j + 1] = im[sx * i + sx * j * dim2]; + move32(); + } + } + + /* dim1 == 8 */ + FOR( i = 0; i < dim2; i++ ) + { + BASOP_fft8( &x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2 ); + } + + /* dim2 == 8 */ + FOR( i = 0; i < dim1; i++ ) + { + cplxMpy4_8_1( x00, x01, x[2 * i + 2 * 0 * dim1], x[2 * i + 2 * 0 * dim1 + 1] ); + + IF( i == 0 ) + { + cplxMpy4_8_1( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )] ); + cplxMpy4_8_1( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )] ); + cplxMpy4_8_1( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )] ); + cplxMpy4_8_1( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )] ); + cplxMpy4_8_1( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )] ); + cplxMpy4_8_1( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )] ); + cplxMpy4_8_1( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )] ); + } + ELSE + { + cplxMpy4_8_0( x02, x03, x[add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 1, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 1, dim1 ) ) ), 1 ), Woff )] ); + cplxMpy4_8_0( x04, x05, x[add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 2, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 2, dim1 ) ) ), 1 ), Woff )] ); + cplxMpy4_8_0( x06, x07, x[add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 3, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 3, dim1 ) ) ), 1 ), Woff )] ); + cplxMpy4_8_0( x08, x09, x[add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 4, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 4, dim1 ) ) ), 1 ), Woff )] ); + cplxMpy4_8_0( x10, x11, x[add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 5, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 5, dim1 ) ) ), 1 ), Woff )] ); + cplxMpy4_8_0( x12, x13, x[add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 6, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 6, dim1 ) ) ), 1 ), Woff )] ); + cplxMpy4_8_0( x14, x15, x[add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) )], x[add( add( shl( i, 1 ), i_mult( 2 * 7, dim1 ) ), 1 )], W[sub( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), Woff )], W[sub( add( add( i_mult( sc, i ), i_mult( sc, i_mult( 7, dim1 ) ) ), 1 ), Woff )] ); + } + t00 = L_shr( L_add( x00, x08 ), SCALEFACTORN2 - 1 ); + t02 = L_shr( L_sub( x00, x08 ), SCALEFACTORN2 - 1 ); + t01 = L_shr( L_add( x01, x09 ), SCALEFACTORN2 - 1 ); + t03 = L_shr( L_sub( x01, x09 ), SCALEFACTORN2 - 1 ); + t04 = L_shr( L_add( x02, x10 ), SCALEFACTORN2 - 1 ); + t06 = L_sub( x02, x10 ); + t05 = L_shr( L_add( x03, x11 ), SCALEFACTORN2 - 1 ); + t07 = L_sub( x03, x11 ); + t08 = L_shr( L_add( x04, x12 ), SCALEFACTORN2 - 1 ); + t10 = L_shr( L_sub( x04, x12 ), SCALEFACTORN2 - 1 ); + t09 = L_shr( L_add( x05, x13 ), SCALEFACTORN2 - 1 ); + t11 = L_shr( L_sub( x05, x13 ), SCALEFACTORN2 - 1 ); + t12 = L_shr( L_add( x06, x14 ), SCALEFACTORN2 - 1 ); + t14 = L_sub( x06, x14 ); + t13 = L_shr( L_add( x07, x15 ), SCALEFACTORN2 - 1 ); + t15 = L_sub( x07, x15 ); + + s00 = L_add( t00, t08 ); + s04 = L_sub( t00, t08 ); + s01 = L_add( t01, t09 ); + s05 = L_sub( t01, t09 ); + s08 = L_sub( t02, t11 ); + s10 = L_add( t02, t11 ); + s09 = L_add( t03, t10 ); + s11 = L_sub( t03, t10 ); + s02 = L_add( t04, t12 ); + s07 = L_sub( t04, t12 ); + s03 = L_add( t05, t13 ); + s06 = L_sub( t13, t05 ); + + t01 = L_shr( L_add( t06, t14 ), SCALEFACTORN2 - 1 ); + t02 = L_shr( L_sub( t06, t14 ), SCALEFACTORN2 - 1 ); + t00 = L_shr( L_add( t07, t15 ), SCALEFACTORN2 - 1 ); + t03 = L_shr( L_sub( t07, t15 ), SCALEFACTORN2 - 1 ); + + s12 = Mpy_32_16_1( L_add( t00, t02 ), C81_FX ); + s14 = Mpy_32_16_1( L_sub( t00, t02 ), C81_FX ); + s13 = Mpy_32_16_1( L_sub( t03, t01 ), C81_FX ); + s15 = Mpy_32_16_1( L_add( t01, t03 ), C82_FX ); + + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s00, s02 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 0, dim1 ) ) )] = L_add( s01, s03 ); + move32(); + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s10, s12 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 1, dim1 ) ) )] = L_add( s11, s13 ); + move32(); + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s04, s06 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 2, dim1 ) ) )] = L_sub( s05, s07 ); + move32(); + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s08, s14 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 3, dim1 ) ) )] = L_add( s09, s15 ); + move32(); + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s00, s02 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 4, dim1 ) ) )] = L_sub( s01, s03 ); + move32(); + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s10, s12 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 5, dim1 ) ) )] = L_sub( s11, s13 ); + move32(); + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s04, s06 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 6, dim1 ) ) )] = L_add( s05, s07 ); + move32(); + re[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s08, s14 ); + move32(); + im[add( i_mult( sx, i ), i_mult( sx, i_mult( 7, dim1 ) ) )] = L_sub( s09, s15 ); + move32(); + } + + return; +} + + +/*-----------------------------------------------------------------* + * BASOP_cfft_ivas() + * + * Complex valued FFT + *-----------------------------------------------------------------*/ + +void BASOP_cfft_ivas( + Word32 *re, /* i/o: real part */ + Word32 *im, /* i/o: imag part */ + Word16 s, /* i : stride real and imag part */ + Word16 *scale /* i : scalefactor */ +) +{ + Word32 x[2 * 64]; + + /* FFT for len = FDNS_NPTS */ + BASOP_fftN2( re, im, RotVector_256, 8, 8, s, 8, x, 64 ); + s = add( *scale, SCALEFACTOR64 ); + + *scale = s; + move16(); + + return; +} + +#undef WMC_TOOL_SKIP diff --git a/lib_com/fft_rel.c b/lib_com/fft_rel.c deleted file mode 100644 index 1d020cabd..000000000 --- a/lib_com/fft_rel.c +++ /dev/null @@ -1,878 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include "prot_fx.h" -#include "rom_com.h" -#include "wmc_auto.h" - -/*---------------------------------------------------------------------* - * Local constants - *---------------------------------------------------------------------*/ - -#define N_MAX_FFT 1024 -#define N_MAX_DIV2 ( N_MAX_FFT >> 1 ) -#define N_MAX_DIV4 ( N_MAX_DIV2 >> 1 ) -#define INV_SQR2_FX 23170 -#define N_MAX_SAS 256 -/*---------------------------------------------------------------------* - * fft_rel() - * - * Computes the split-radix FFT in place for the real-valued - * signal x of length n. The algorithm has been ported from - * the Fortran code of [1]. - * - * The function needs sine and cosine tables t_sin and t_cos, - * and the constant N_MAX_FFT. The table entries are defined as - * sin(2*pi*i) and cos(2*pi*i) for i = 0, 1, ..., N_MAX_FFT-1. The - * implementation assumes that any entry will not be needed - * outside the tables. Therefore, N_MAX_FFT and n must be properly - * set. The function has been tested with the values n = 16, - * 32, 64, 128, 256, and N_MAX_FFT = 1280. - * - * References - * [1] H.V. Sorensen, D.L. Jones, M.T. Heideman, C.S. Burrus, - * "Real-valued fast Fourier transform algorithm," IEEE - * Trans. on Signal Processing, Vol.35, No.6, pp 849-863, - * 1987. - * - * OUTPUT - * x[0:n-1] Transform coeffients in the order re[0], re[1], - * ..., re[n/2], im[n/2-1], ..., im[1]. - *---------------------------------------------------------------------*/ - -void fft_rel( - float x[], /* i/o: input/output vector */ - const int16_t n, /* i : vector length */ - const int16_t m /* i : log2 of vector length */ -) -{ - int16_t i, j, k, n1, n2, n4; - int16_t step; - float xt, t1, t2; - float *x0, *x1, *x2; - float *xi2, *xi3, *xi4, *xi1; - const float *s, *c; - const int16_t *idx; - - /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */ - - float *x2even, *x2odd; - float temp[512]; - - if ( n == 128 || n == 256 || n == 512 ) - { - idx = fft256_read_indexes; - - /* Combined Digit reverse counter & Length two butterflies */ - if ( n == 128 ) - { - x2 = temp; - for ( i = 0; i < 64; i++ ) - { - j = *idx++; - k = *idx++; - - *x2++ = x[j >> 1] + x[k >> 1]; - *x2++ = x[j >> 1] - x[k >> 1]; - } - } - else if ( n == 256 ) - { - x2 = temp; - for ( i = 0; i < 128; i++ ) - { - j = *idx++; - k = *idx++; - - *x2++ = x[j] + x[k]; - *x2++ = x[j] - x[k]; - } - } - else if ( n == 512 ) - { - x2even = temp; - x2odd = temp + 256; - - for ( i = 0; i < 128; i++ ) - { - j = 2 * *idx++; - k = 2 * *idx++; - - *x2even++ = x[j] + x[k]; - *x2even++ = x[j] - x[k]; - *x2odd++ = x[++j] + x[++k]; - *x2odd++ = x[j] - x[k]; - } - } - - /*-----------------------------------------------------------------* - * 1st Stage Loop has been Unrolled because n4 is '1' and that - * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop - * and the associated pointers initialization. - * Also, it allows to Put the Data from 'temp' back into 'x' due - * to the previous Combined Digit Reverse and Length two butterflies - *-----------------------------------------------------------------*/ - - /*for_ (k = 2; k < 3; k++)*/ - { - x0 = temp; - x1 = x0 + 2; - x2 = x; - - for ( i = 0; i < n; i += 4 ) - { - *x2++ = *x0++ + *x1; /* x[i] = xt + x[i+n2]; */ - *x2++ = *x0; - *x2++ = *--x0 - *x1++; /* x[i+n2] = xt - x[i+n2]; */ - *x2++ = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */ - - x0 += 4; - x1 += 3; /* x1 has already advanced */ - } - } - } - else - { - /*-----------------------------------------------------------------* - * Digit reverse counter - *-----------------------------------------------------------------*/ - - j = 0; - x0 = &x[0]; - for ( i = 0; i < n - 1; i++ ) - { - if ( i < j ) - { - xt = x[j]; - x[j] = *x0; - *x0 = xt; - } - x0++; - k = n / 2; - while ( k <= j ) - { - j -= k; - k = k >> 1; - } - j += k; - } - - /*-----------------------------------------------------------------* - * Length two butterflies - *-----------------------------------------------------------------*/ - - x0 = &x[0]; - x1 = &x[1]; - for ( i = 0; i < n / 2; i++ ) - { - *x1 = *x0 - *x1; - *x0 = *x0 * 2 - *x1; - - x0++; - x0++; - x1++; - x1++; - } - - /*-----------------------------------------------------------------* - * 1st Stage Loop has been Unrolled because n4 is '1' and that - * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop - * and the associated pointers initialization. - *-----------------------------------------------------------------*/ - - /* for_ (k = 2; k < 3; k++) */ - { - x0 = x; - x1 = x0 + 2; - - for ( i = 0; i < n; i += 4 ) - { - *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */ - *x0 = *x0 * 2 - *x1++; /* x[i] = xt + x[i+n2]; */ - *x1 = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */ - - x0 += 4; - x1 += 3; /* x1 has already advanced */ - } - } - } - - /*-----------------------------------------------------------------* - * Other butterflies - * - * The implementation described in [1] has been changed by using - * table lookup for evaluating sine and cosine functions. The - * variable ind and its increment step are needed to access table - * entries. Note that this implementation assumes n4 to be so - * small that ind will never exceed the table. Thus the input - * argument n and the constant N_MAX_FFT must be set properly. - *-----------------------------------------------------------------*/ - - n4 = 1; - n2 = 2; - n1 = 4; - - step = N_MAX_DIV4; - - for ( k = 3; k <= m; k++ ) - { - step >>= 1; - n4 <<= 1; - n2 <<= 1; - n1 <<= 1; - - x0 = x; - x1 = x0 + n2; - x2 = x1 + n4; - - for ( i = 0; i < n; i += n1 ) - { - *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */ - *x0 = *x0 * 2 - *x1; /* x[i] = xt + x[i+n2]; */ - *x2 = -*x2; /* x[i+n2+n4] = -x[i+n2+n4]; */ - - s = sincos_t_ext; - c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 */ - xi1 = x0; - xi3 = xi1 + n2; - xi2 = xi3; - x0 += n1; - xi4 = x0; - - for ( j = 1; j < n4; j++ ) - { - xi3++; - xi1++; - xi4--; - xi2--; - c += step; - s += step; /* autoincrement by ar0 */ - - t1 = *xi3 * *c + *xi4 * *s; /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); */ - t2 = *xi3 * *s - *xi4 * *c; /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); */ - - *xi4 = *xi2 - t2; - *xi2 = *xi1 - t1; - *xi1 = *xi1 * 2 - *xi2; - *xi3 = -2 * t2 - *xi4; - } - - x1 += n1; - x2 += n1; - } - } - - return; -} - -void fft_rel_16_32fx( - Word16 x[], /* i/o: input/output vector Qx */ - Word16 *q_x, /* extra scaling added on speech buffer*/ - Word16 i_subfr, - const Word16 n, /* i : vector length */ - const Word16 m /* i : log2 of vector length */ -) -{ - Word16 i, j, k, n1, n2, n4; - Word16 step; - Word32 xt, t1, t2; - Word32 *x0, *x1, *x2; - const Word16 *s, *c; - Word32 *xi2, *xi3, *xi4, *xi1; - - Word32 fft_bff32[L_FFT]; - Copy_Scale_sig_16_32_no_sat( x, fft_bff32, L_FFT, 0 ); // copying x to fft_bff32 without scaling - - /*-----------------------------------------------------------------* - * Digit reverse counter - *-----------------------------------------------------------------*/ - - j = 0; - move16(); - x0 = &fft_bff32[0]; // Qx - FOR( i = 0; i < n - 1; i++ ) - { - IF( LT_16( i, j ) ) - { - xt = fft_bff32[j]; // Qx - move32(); - fft_bff32[j] = *x0; // Qx - move32(); - *x0 = xt; // Qx - move32(); - } - x0++; - k = shr( n, 1 ); - WHILE( ( k <= j ) ) - { - j = sub( j, k ); - k = shr( k, 1 ); - } - j = add( j, k ); - } - - /*-----------------------------------------------------------------* - * Length two butterflies - *-----------------------------------------------------------------*/ - - x0 = &fft_bff32[0]; - x1 = &fft_bff32[1]; - FOR( i = 0; i < ( n >> 1 ); i++ ) - { - xt = *x0; - move32(); - *x0 = L_add( xt, *x1 ); - move32(); - *x1 = L_sub( xt, *x1 ); - move32(); - x0++; - x0++; - x1++; - x1++; - } - - /*-----------------------------------------------------------------* - * Other butterflies - * - * The implementation described in [1] has been changed by using - * table lookup for evaluating sine and cosine functions. The - * variable ind and its increment step are needed to access table - * entries. Note that this implementation assumes n4 to be so - * small that ind will never exceed the table. Thus the input - * argument n and the constant N_MAX_SAS must be set properly. - *-----------------------------------------------------------------*/ - - n2 = 1; - move16(); - /* step = N_MAX_SAS/4; */ - FOR( k = 2; k <= m; k++ ) - { - n4 = n2; - move16(); - n2 = shl( n4, 1 ); - n1 = shl( n2, 1 ); - - step = idiv1616( N_MAX_SAS, n1 ); - - x0 = fft_bff32; - x1 = fft_bff32 + n2; - x2 = fft_bff32 + add( n2, n4 ); - FOR( i = 0; i < n; i += n1 ) - { - xt = *x0; - move32(); /* xt = x[i]; */ - *x0 = L_add( xt, *x1 ); - move32(); /* x[i] = xt + x[i+n2]; */ - *x1 = L_sub( xt, *x1 ); - move32(); /* x[i+n2] = xt - x[i+n2]; */ - *x2 = L_negate( *x2 ); - move32(); /* x[i+n2+n4] = -x[i+n2+n4]; */ - - - s = sincos_t_fx + step; // Q15 - c = s + 64; // Q15 - xi1 = fft_bff32 + add( i, 1 ); - xi3 = xi1 + n2; - xi2 = xi3 - 2; - xi4 = xi1 + sub( n1, 2 ); - - FOR( j = 1; j < n4; j++ ) - { - t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */ - t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */ - *xi4 = L_sub( *xi2, t2 ); - move32(); - *xi3 = L_negate( L_add( *xi2, t2 ) ); - move32(); - *xi2 = L_sub( *xi1, t1 ); - move32(); - *xi1 = L_add( *xi1, t1 ); - move32(); - - xi4--; - xi2--; - xi3++; - xi1++; - c += step; - s += step; /* autoincrement by ar0 */ - } - - x0 += n1; - x1 += n1; - x2 += n1; - } - /* step = shr(step, 1); */ - } - Word16 norm = L_norm_arr( fft_bff32, L_FFT ); - IF( i_subfr == 0 ) - { - Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm ); - *q_x = sub( norm, 16 ); - move16(); - } - ELSE - { - IF( LT_16( sub( norm, 16 ), *q_x ) ) - { - scale_sig( x - L_FFT, L_FFT, sub( sub( norm, 16 ), *q_x ) ); - Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm ); - *q_x = sub( norm, 16 ); - move16(); - } - ELSE - { - Copy_Scale_sig32_16( fft_bff32, x, L_FFT, add( 16, *q_x ) ); - } - } - - return; -} - -void fft_rel_fx( - Word16 x[], /* i/o: input/output vector Qx */ - const Word16 n, /* i : vector length */ - const Word16 m /* i : log2 of vector length */ -) -{ - Word16 i, j, k, n1, n2, n4; - Word16 step; - Word16 xt, t1, t2; - Word16 *x0, *x1, *x2; - const Word16 *s, *c; - Word16 *xi2, *xi3, *xi4, *xi1; -#ifdef BASOP_NOGLOB_DECLARE_LOCAL - Flag Overflow = 0; - move32(); -#endif - - - /*-----------------------------------------------------------------* - * Digit reverse counter - *-----------------------------------------------------------------*/ - - j = 0; - move16(); - x0 = &x[0]; // Qx - move16(); - FOR( i = 0; i < n - 1; i++ ) - { - IF( LT_16( i, j ) ) - { - xt = x[j]; // Qx - move16(); - x[j] = *x0; // Qx - move16(); - *x0 = xt; // Qx - move16(); - } - x0++; - k = shr( n, 1 ); - WHILE( ( k <= j ) ) - { - j = sub( j, k ); - k = shr( k, 1 ); - } - j = add( j, k ); - } - - /*-----------------------------------------------------------------* - * Length two butterflies - *-----------------------------------------------------------------*/ - - x0 = &x[0]; - move16(); - x1 = &x[1]; - move16(); - FOR( i = 0; i < ( n >> 1 ); i++ ) - { - xt = *x0; - move16(); - *x0 = add_o( xt, *x1, &Overflow ); - move16(); - *x1 = sub_o( xt, *x1, &Overflow ); - move16(); - x0++; - x0++; - x1++; - x1++; - } - - /*-----------------------------------------------------------------* - * Other butterflies - * - * The implementation described in [1] has been changed by using - * table lookup for evaluating sine and cosine functions. The - * variable ind and its increment step are needed to access table - * entries. Note that this implementation assumes n4 to be so - * small that ind will never exceed the table. Thus the input - * argument n and the constant N_MAX_SAS must be set properly. - *-----------------------------------------------------------------*/ - - n2 = 1; - move16(); - /* step = N_MAX_SAS/4; */ - FOR( k = 2; k <= m; k++ ) - { - n4 = n2; - move16(); - n2 = shl( n4, 1 ); - n1 = shl( n2, 1 ); - - step = idiv1616( N_MAX_SAS, n1 ); - - x0 = x; - x1 = x + n2; - x2 = x + add( n2, n4 ); - FOR( i = 0; i < n; i += n1 ) - { - xt = *x0; - move16(); /* xt = x[i]; */ - *x0 = add_o( xt, *x1, &Overflow ); - move16(); /* x[i] = xt + x[i+n2]; */ - *x1 = sub_o( xt, *x1, &Overflow ); - move16(); /* x[i+n2] = xt - x[i+n2]; */ - *x2 = negate( *x2 ); - move16(); /* x[i+n2+n4] = -x[i+n2+n4]; */ - - - s = sincos_t_fx + step; // Q15 - c = s + 64; // Q15 - xi1 = x + add( i, 1 ); - xi3 = xi1 + n2; - xi2 = xi3 - 2; - xi4 = xi1 + sub( n1, 2 ); - - FOR( j = 1; j < n4; j++ ) - { - t1 = add_o( mult_r( *xi3, *c ), mult_r( *xi4, *s ), &Overflow ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */ - t2 = sub_o( mult_r( *xi3, *s ), mult_r( *xi4, *c ), &Overflow ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */ - *xi4 = sub_o( *xi2, t2, &Overflow ); - move16(); - *xi3 = negate( add_o( *xi2, t2, &Overflow ) ); - move16(); - *xi2 = sub_o( *xi1, t1, &Overflow ); - move16(); - *xi1 = add_o( *xi1, t1, &Overflow ); - move16(); - - xi4--; - xi2--; - xi3++; - xi1++; - c += step; - s += step; /* autoincrement by ar0 */ - } - - x0 += n1; - x1 += n1; - x2 += n1; - } - /* step = shr(step, 1); */ - } - - return; -} - -void fft_rel_fx32( - Word32 x[], /* i/o: input/output vector Qx */ - const Word16 n, /* i : vector length */ - const Word16 m /* i : log2 of vector length */ -) -{ - Word16 i, j, k, n1, n2, n4; - Word16 step; - Word32 xt, t1, t2; - Word32 *x0, *x1, *x2; - Word32 *xi2, *xi3, *xi4, *xi1; - const Word16 *s, *c; - const Word16 *idx; - - /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */ - - Word32 *x2even, *x2odd; - Word32 temp[512]; - - test(); - test(); - IF( EQ_16( n, 128 ) || EQ_16( n, 256 ) || EQ_16( n, 512 ) ) - { - idx = fft256_read_indexes; - - /* Combined Digit reverse counter & Length two butterflies */ - IF( EQ_16( n, 128 ) ) - { - x2 = temp; - FOR( i = 0; i < 64; i++ ) - { - j = *idx++; - move16(); - k = *idx++; - move16(); - - *x2++ = L_add( x[( j >> 1 )], x[( k >> 1 )] ); // Qx - move16(); - *x2++ = L_sub( x[( j >> 1 )], x[( k >> 1 )] ); // Qx - move16(); - } - } - ELSE IF( EQ_16( n, 256 ) ) - { - x2 = temp; - FOR( i = 0; i < 128; i++ ) - { - j = *idx++; - move16(); - k = *idx++; - move16(); - - *x2++ = L_add( x[j], x[k] ); // Qx - move16(); - *x2++ = L_sub( x[j], x[k] ); // Qx - move16(); - } - } - ELSE IF( EQ_16( n, 512 ) ) - { - x2even = temp; - x2odd = temp + 256; - - FOR( i = 0; i < 128; i++ ) - { - j = shl( *idx, 1 ); - idx++; - k = shl( *idx, 1 ); - idx++; - - *x2even++ = L_add( x[j], x[k] ); // Qx - move16(); - *x2even++ = L_sub( x[j], x[k] ); // Qx - move16(); - j = add( j, 1 ); - k = add( k, 1 ); - *x2odd++ = L_add( x[j], x[k] ); // Qx - move16(); - *x2odd++ = L_sub( x[j], x[k] ); // Qx - move16(); - } - } - - /*-----------------------------------------------------------------* - * 1st Stage Loop has been Unrolled because n4 is '1' and that - * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop - * and the associated pointers initialization. - * Also, it allows to Put the Data from 'temp' back into 'x' due - * to the previous Combined Digit Reverse and Length two butterflies - *-----------------------------------------------------------------*/ - - /*for_ (k = 2; k < 3; k++)*/ - { - x0 = temp; - x1 = x0 + 2; - x2 = x; // Qx - - FOR( i = 0; i < n; i += 4 ) - { - *x2++ = L_add( *x0++, *x1 ); /* x[i] = xt + x[i+n2]; */ - move16(); - *x2++ = *x0; - move16(); - x0--; - *x2++ = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */ - move16(); - x1++; - *x2++ = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; */ - move16(); - - x0 += 4; - x1 += 3; /* x1 has already advanced */ - } - } - } - ELSE - { - /*-----------------------------------------------------------------* - * Digit reverse counter - *-----------------------------------------------------------------*/ - - j = 0; - move16(); - x0 = &x[0]; // Qx - FOR( i = 0; i < ( n - 1 ); i++ ) - { - IF( LT_16( i, j ) ) - { - xt = x[j]; // Qx - move32(); - x[j] = *x0; - move32(); - *x0 = xt; - move32(); - } - x0++; - k = shr( n, 1 ); - WHILE( ( k <= j ) ) - { - j = sub( j, k ); - k = shr( k, 1 ); - } - j = add( j, k ); - } - - /*-----------------------------------------------------------------* - * Length two butterflies - *-----------------------------------------------------------------*/ - - x0 = &x[0]; // Qx - x1 = &x[1]; // Qx - FOR( i = 0; i < ( n >> 1 ); i++ ) - { - *x1 = L_sub( *x0, *x1 ); // Qx - move32(); - *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); //*x0 * 2 - *x1 (Qx) - move32(); - - x0++; - x0++; - x1++; - x1++; - } - - /*-----------------------------------------------------------------* - * 1st Stage Loop has been Unrolled because n4 is '1' and that - * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop - * and the associated pointers initialization. - *-----------------------------------------------------------------*/ - - /* for_ (k = 2; k < 3; k++) */ - { - x0 = x; // Qx - x1 = x0 + 2; - - FOR( i = 0; i < n; i += 4 ) - { - *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; Qx*/ - move32(); - *x0 = L_sub( L_shl( *x0, 1 ), *x1++ ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/ - move32(); - *x1 = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx*/ - move32(); - - x0 += 4; - x1 += 3; /* x1 has already advanced */ - } - } - } - - /*-----------------------------------------------------------------* - * Other butterflies - * - * The implementation described in [1] has been changed by using - * table lookup for evaluating sine and cosine functions. The - * variable ind and its increment step are needed to access table - * entries. Note that this implementation assumes n4 to be so - * small that ind will never exceed the table. Thus the input - * argument n and the constant N_MAX_FFT must be set properly. - *-----------------------------------------------------------------*/ - - n4 = 1; - move16(); - n2 = 2; - move16(); - n1 = 4; - move16(); - - step = N_MAX_DIV4; - move16(); - - FOR( k = 3; k <= m; k++ ) - { - step = shr( step, 1 ); - n4 = shl( n4, 1 ); - n2 = shl( n2, 1 ); - n1 = shl( n1, 1 ); - - x0 = x; - x1 = x0 + n2; - x2 = x1 + n4; - - FOR( i = 0; i < n; i += n1 ) - { - *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */ - move32(); - *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/ - move32(); - *x2 = L_negate( *x2 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx */ - move32(); - - s = sincos_t_ext_fx; // Q15 - c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 Q15*/ - xi1 = x0; - xi3 = xi1 + n2; - xi2 = xi3; - x0 += n1; - xi4 = x0; - - FOR( j = 1; j < n4; j++ ) - { - xi3++; - xi1++; - xi4--; - xi2--; - c += step; - s += step; /* autoincrement by ar0 */ - - t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx*/ - t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx*/ - - *xi4 = L_sub( *xi2, t2 ); - move32(); - *xi2 = L_sub( *xi1, t1 ); - move32(); - *xi1 = L_sub( L_shl( *xi1, 1 ), *xi2 ); // Qx - move32(); - *xi3 = L_negate( L_add( L_shl( t2, 1 ), *xi4 ) ); // Qx - move32(); - } - - x1 += n1; - x2 += n1; - } - } - - return; -} diff --git a/lib_com/fft_rel_fx.c b/lib_com/fft_rel_fx.c index 5461ce55b..a0905cc16 100644 --- a/lib_com/fft_rel_fx.c +++ b/lib_com/fft_rel_fx.c @@ -2,11 +2,24 @@ EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 ====================================================================================*/ +#include #include "options.h" /* Compilation switches */ #include "prot_fx.h" /* Function prototypes */ #include "rom_com.h" /* Static table prototypes */ #include "stl.h" #include "stdint.h" +#include "wmc_auto.h" + +/*---------------------------------------------------------------------* + * Local constants + *---------------------------------------------------------------------*/ + +#define N_MAX_FFT 1024 +#define N_MAX_DIV2 ( N_MAX_FFT >> 1 ) +#define N_MAX_DIV4 ( N_MAX_DIV2 >> 1 ) +#define INV_SQR2_FX 23170 +#define N_MAX_SAS 256 + /*------------------------------------------------------------------ * * This is an implementation of decimation-in-time FFT algorithm for @@ -427,3 +440,832 @@ void r_fft_fx_lc( c_fft_fx( phs_tbl, SIZE, NUM_STAGE, temp, out_ptr, isign ); } } + + +/*---------------------------------------------------------------------* + * fft_rel() + * + * Computes the split-radix FFT in place for the real-valued + * signal x of length n. The algorithm has been ported from + * the Fortran code of [1]. + * + * The function needs sine and cosine tables t_sin and t_cos, + * and the constant N_MAX_FFT. The table entries are defined as + * sin(2*pi*i) and cos(2*pi*i) for i = 0, 1, ..., N_MAX_FFT-1. The + * implementation assumes that any entry will not be needed + * outside the tables. Therefore, N_MAX_FFT and n must be properly + * set. The function has been tested with the values n = 16, + * 32, 64, 128, 256, and N_MAX_FFT = 1280. + * + * References + * [1] H.V. Sorensen, D.L. Jones, M.T. Heideman, C.S. Burrus, + * "Real-valued fast Fourier transform algorithm," IEEE + * Trans. on Signal Processing, Vol.35, No.6, pp 849-863, + * 1987. + * + * OUTPUT + * x[0:n-1] Transform coeffients in the order re[0], re[1], + * ..., re[n/2], im[n/2-1], ..., im[1]. + *---------------------------------------------------------------------*/ + +void fft_rel( + float x[], /* i/o: input/output vector */ + const int16_t n, /* i : vector length */ + const int16_t m /* i : log2 of vector length */ +) +{ + int16_t i, j, k, n1, n2, n4; + int16_t step; + float xt, t1, t2; + float *x0, *x1, *x2; + float *xi2, *xi3, *xi4, *xi1; + const float *s, *c; + const int16_t *idx; + + /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */ + + float *x2even, *x2odd; + float temp[512]; + + if ( n == 128 || n == 256 || n == 512 ) + { + idx = fft256_read_indexes; + + /* Combined Digit reverse counter & Length two butterflies */ + if ( n == 128 ) + { + x2 = temp; + for ( i = 0; i < 64; i++ ) + { + j = *idx++; + k = *idx++; + + *x2++ = x[j >> 1] + x[k >> 1]; + *x2++ = x[j >> 1] - x[k >> 1]; + } + } + else if ( n == 256 ) + { + x2 = temp; + for ( i = 0; i < 128; i++ ) + { + j = *idx++; + k = *idx++; + + *x2++ = x[j] + x[k]; + *x2++ = x[j] - x[k]; + } + } + else if ( n == 512 ) + { + x2even = temp; + x2odd = temp + 256; + + for ( i = 0; i < 128; i++ ) + { + j = 2 * *idx++; + k = 2 * *idx++; + + *x2even++ = x[j] + x[k]; + *x2even++ = x[j] - x[k]; + *x2odd++ = x[++j] + x[++k]; + *x2odd++ = x[j] - x[k]; + } + } + + /*-----------------------------------------------------------------* + * 1st Stage Loop has been Unrolled because n4 is '1' and that + * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop + * and the associated pointers initialization. + * Also, it allows to Put the Data from 'temp' back into 'x' due + * to the previous Combined Digit Reverse and Length two butterflies + *-----------------------------------------------------------------*/ + + /*for_ (k = 2; k < 3; k++)*/ + { + x0 = temp; + x1 = x0 + 2; + x2 = x; + + for ( i = 0; i < n; i += 4 ) + { + *x2++ = *x0++ + *x1; /* x[i] = xt + x[i+n2]; */ + *x2++ = *x0; + *x2++ = *--x0 - *x1++; /* x[i+n2] = xt - x[i+n2]; */ + *x2++ = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */ + + x0 += 4; + x1 += 3; /* x1 has already advanced */ + } + } + } + else + { + /*-----------------------------------------------------------------* + * Digit reverse counter + *-----------------------------------------------------------------*/ + + j = 0; + x0 = &x[0]; + for ( i = 0; i < n - 1; i++ ) + { + if ( i < j ) + { + xt = x[j]; + x[j] = *x0; + *x0 = xt; + } + x0++; + k = n / 2; + while ( k <= j ) + { + j -= k; + k = k >> 1; + } + j += k; + } + + /*-----------------------------------------------------------------* + * Length two butterflies + *-----------------------------------------------------------------*/ + + x0 = &x[0]; + x1 = &x[1]; + for ( i = 0; i < n / 2; i++ ) + { + *x1 = *x0 - *x1; + *x0 = *x0 * 2 - *x1; + + x0++; + x0++; + x1++; + x1++; + } + + /*-----------------------------------------------------------------* + * 1st Stage Loop has been Unrolled because n4 is '1' and that + * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop + * and the associated pointers initialization. + *-----------------------------------------------------------------*/ + + /* for_ (k = 2; k < 3; k++) */ + { + x0 = x; + x1 = x0 + 2; + + for ( i = 0; i < n; i += 4 ) + { + *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */ + *x0 = *x0 * 2 - *x1++; /* x[i] = xt + x[i+n2]; */ + *x1 = -*x1; /* x[i+n2+n4] = -x[i+n2+n4]; */ + + x0 += 4; + x1 += 3; /* x1 has already advanced */ + } + } + } + + /*-----------------------------------------------------------------* + * Other butterflies + * + * The implementation described in [1] has been changed by using + * table lookup for evaluating sine and cosine functions. The + * variable ind and its increment step are needed to access table + * entries. Note that this implementation assumes n4 to be so + * small that ind will never exceed the table. Thus the input + * argument n and the constant N_MAX_FFT must be set properly. + *-----------------------------------------------------------------*/ + + n4 = 1; + n2 = 2; + n1 = 4; + + step = N_MAX_DIV4; + + for ( k = 3; k <= m; k++ ) + { + step >>= 1; + n4 <<= 1; + n2 <<= 1; + n1 <<= 1; + + x0 = x; + x1 = x0 + n2; + x2 = x1 + n4; + + for ( i = 0; i < n; i += n1 ) + { + *x1 = *x0 - *x1; /* x[i+n2] = xt - x[i+n2]; */ + *x0 = *x0 * 2 - *x1; /* x[i] = xt + x[i+n2]; */ + *x2 = -*x2; /* x[i+n2+n4] = -x[i+n2+n4]; */ + + s = sincos_t_ext; + c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 */ + xi1 = x0; + xi3 = xi1 + n2; + xi2 = xi3; + x0 += n1; + xi4 = x0; + + for ( j = 1; j < n4; j++ ) + { + xi3++; + xi1++; + xi4--; + xi2--; + c += step; + s += step; /* autoincrement by ar0 */ + + t1 = *xi3 * *c + *xi4 * *s; /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); */ + t2 = *xi3 * *s - *xi4 * *c; /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); */ + + *xi4 = *xi2 - t2; + *xi2 = *xi1 - t1; + *xi1 = *xi1 * 2 - *xi2; + *xi3 = -2 * t2 - *xi4; + } + + x1 += n1; + x2 += n1; + } + } + + return; +} + +void fft_rel_16_32fx( + Word16 x[], /* i/o: input/output vector Qx */ + Word16 *q_x, /* extra scaling added on speech buffer*/ + Word16 i_subfr, + const Word16 n, /* i : vector length */ + const Word16 m /* i : log2 of vector length */ +) +{ + Word16 i, j, k, n1, n2, n4; + Word16 step; + Word32 xt, t1, t2; + Word32 *x0, *x1, *x2; + const Word16 *s, *c; + Word32 *xi2, *xi3, *xi4, *xi1; + + Word32 fft_bff32[L_FFT]; + Copy_Scale_sig_16_32_no_sat( x, fft_bff32, L_FFT, 0 ); // copying x to fft_bff32 without scaling + + /*-----------------------------------------------------------------* + * Digit reverse counter + *-----------------------------------------------------------------*/ + + j = 0; + move16(); + x0 = &fft_bff32[0]; // Qx + FOR( i = 0; i < n - 1; i++ ) + { + IF( LT_16( i, j ) ) + { + xt = fft_bff32[j]; // Qx + move32(); + fft_bff32[j] = *x0; // Qx + move32(); + *x0 = xt; // Qx + move32(); + } + x0++; + k = shr( n, 1 ); + WHILE( ( k <= j ) ) + { + j = sub( j, k ); + k = shr( k, 1 ); + } + j = add( j, k ); + } + + /*-----------------------------------------------------------------* + * Length two butterflies + *-----------------------------------------------------------------*/ + + x0 = &fft_bff32[0]; + x1 = &fft_bff32[1]; + FOR( i = 0; i < ( n >> 1 ); i++ ) + { + xt = *x0; + move32(); + *x0 = L_add( xt, *x1 ); + move32(); + *x1 = L_sub( xt, *x1 ); + move32(); + x0++; + x0++; + x1++; + x1++; + } + + /*-----------------------------------------------------------------* + * Other butterflies + * + * The implementation described in [1] has been changed by using + * table lookup for evaluating sine and cosine functions. The + * variable ind and its increment step are needed to access table + * entries. Note that this implementation assumes n4 to be so + * small that ind will never exceed the table. Thus the input + * argument n and the constant N_MAX_SAS must be set properly. + *-----------------------------------------------------------------*/ + + n2 = 1; + move16(); + /* step = N_MAX_SAS/4; */ + FOR( k = 2; k <= m; k++ ) + { + n4 = n2; + move16(); + n2 = shl( n4, 1 ); + n1 = shl( n2, 1 ); + + step = idiv1616( N_MAX_SAS, n1 ); + + x0 = fft_bff32; + x1 = fft_bff32 + n2; + x2 = fft_bff32 + add( n2, n4 ); + FOR( i = 0; i < n; i += n1 ) + { + xt = *x0; + move32(); /* xt = x[i]; */ + *x0 = L_add( xt, *x1 ); + move32(); /* x[i] = xt + x[i+n2]; */ + *x1 = L_sub( xt, *x1 ); + move32(); /* x[i+n2] = xt - x[i+n2]; */ + *x2 = L_negate( *x2 ); + move32(); /* x[i+n2+n4] = -x[i+n2+n4]; */ + + + s = sincos_t_fx + step; // Q15 + c = s + 64; // Q15 + xi1 = fft_bff32 + add( i, 1 ); + xi3 = xi1 + n2; + xi2 = xi3 - 2; + xi4 = xi1 + sub( n1, 2 ); + + FOR( j = 1; j < n4; j++ ) + { + t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */ + t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */ + *xi4 = L_sub( *xi2, t2 ); + move32(); + *xi3 = L_negate( L_add( *xi2, t2 ) ); + move32(); + *xi2 = L_sub( *xi1, t1 ); + move32(); + *xi1 = L_add( *xi1, t1 ); + move32(); + + xi4--; + xi2--; + xi3++; + xi1++; + c += step; + s += step; /* autoincrement by ar0 */ + } + + x0 += n1; + x1 += n1; + x2 += n1; + } + /* step = shr(step, 1); */ + } + Word16 norm = L_norm_arr( fft_bff32, L_FFT ); + IF( i_subfr == 0 ) + { + Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm ); + *q_x = sub( norm, 16 ); + move16(); + } + ELSE + { + IF( LT_16( sub( norm, 16 ), *q_x ) ) + { + scale_sig( x - L_FFT, L_FFT, sub( sub( norm, 16 ), *q_x ) ); + Copy_Scale_sig32_16( fft_bff32, x, L_FFT, norm ); + *q_x = sub( norm, 16 ); + move16(); + } + ELSE + { + Copy_Scale_sig32_16( fft_bff32, x, L_FFT, add( 16, *q_x ) ); + } + } + + return; +} + +void fft_rel_fx( + Word16 x[], /* i/o: input/output vector Qx */ + const Word16 n, /* i : vector length */ + const Word16 m /* i : log2 of vector length */ +) +{ + Word16 i, j, k, n1, n2, n4; + Word16 step; + Word16 xt, t1, t2; + Word16 *x0, *x1, *x2; + const Word16 *s, *c; + Word16 *xi2, *xi3, *xi4, *xi1; +#ifdef BASOP_NOGLOB_DECLARE_LOCAL + Flag Overflow = 0; + move32(); +#endif + + + /*-----------------------------------------------------------------* + * Digit reverse counter + *-----------------------------------------------------------------*/ + + j = 0; + move16(); + x0 = &x[0]; // Qx + move16(); + FOR( i = 0; i < n - 1; i++ ) + { + IF( LT_16( i, j ) ) + { + xt = x[j]; // Qx + move16(); + x[j] = *x0; // Qx + move16(); + *x0 = xt; // Qx + move16(); + } + x0++; + k = shr( n, 1 ); + WHILE( ( k <= j ) ) + { + j = sub( j, k ); + k = shr( k, 1 ); + } + j = add( j, k ); + } + + /*-----------------------------------------------------------------* + * Length two butterflies + *-----------------------------------------------------------------*/ + + x0 = &x[0]; + move16(); + x1 = &x[1]; + move16(); + FOR( i = 0; i < ( n >> 1 ); i++ ) + { + xt = *x0; + move16(); + *x0 = add_o( xt, *x1, &Overflow ); + move16(); + *x1 = sub_o( xt, *x1, &Overflow ); + move16(); + x0++; + x0++; + x1++; + x1++; + } + + /*-----------------------------------------------------------------* + * Other butterflies + * + * The implementation described in [1] has been changed by using + * table lookup for evaluating sine and cosine functions. The + * variable ind and its increment step are needed to access table + * entries. Note that this implementation assumes n4 to be so + * small that ind will never exceed the table. Thus the input + * argument n and the constant N_MAX_SAS must be set properly. + *-----------------------------------------------------------------*/ + + n2 = 1; + move16(); + /* step = N_MAX_SAS/4; */ + FOR( k = 2; k <= m; k++ ) + { + n4 = n2; + move16(); + n2 = shl( n4, 1 ); + n1 = shl( n2, 1 ); + + step = idiv1616( N_MAX_SAS, n1 ); + + x0 = x; + x1 = x + n2; + x2 = x + add( n2, n4 ); + FOR( i = 0; i < n; i += n1 ) + { + xt = *x0; + move16(); /* xt = x[i]; */ + *x0 = add_o( xt, *x1, &Overflow ); + move16(); /* x[i] = xt + x[i+n2]; */ + *x1 = sub_o( xt, *x1, &Overflow ); + move16(); /* x[i+n2] = xt - x[i+n2]; */ + *x2 = negate( *x2 ); + move16(); /* x[i+n2+n4] = -x[i+n2+n4]; */ + + + s = sincos_t_fx + step; // Q15 + c = s + 64; // Q15 + xi1 = x + add( i, 1 ); + xi3 = xi1 + n2; + xi2 = xi3 - 2; + xi4 = xi1 + sub( n1, 2 ); + + FOR( j = 1; j < n4; j++ ) + { + t1 = add_o( mult_r( *xi3, *c ), mult_r( *xi4, *s ), &Overflow ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx */ + t2 = sub_o( mult_r( *xi3, *s ), mult_r( *xi4, *c ), &Overflow ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx */ + *xi4 = sub_o( *xi2, t2, &Overflow ); + move16(); + *xi3 = negate( add_o( *xi2, t2, &Overflow ) ); + move16(); + *xi2 = sub_o( *xi1, t1, &Overflow ); + move16(); + *xi1 = add_o( *xi1, t1, &Overflow ); + move16(); + + xi4--; + xi2--; + xi3++; + xi1++; + c += step; + s += step; /* autoincrement by ar0 */ + } + + x0 += n1; + x1 += n1; + x2 += n1; + } + /* step = shr(step, 1); */ + } + + return; +} + +void fft_rel_fx32( + Word32 x[], /* i/o: input/output vector Qx */ + const Word16 n, /* i : vector length */ + const Word16 m /* i : log2 of vector length */ +) +{ + Word16 i, j, k, n1, n2, n4; + Word16 step; + Word32 xt, t1, t2; + Word32 *x0, *x1, *x2; + Word32 *xi2, *xi3, *xi4, *xi1; + const Word16 *s, *c; + const Word16 *idx; + + /* !!!! NMAX = 256 is hardcoded here (similar optimizations should be done for NMAX > 256) !!! */ + + Word32 *x2even, *x2odd; + Word32 temp[512]; + + test(); + test(); + IF( EQ_16( n, 128 ) || EQ_16( n, 256 ) || EQ_16( n, 512 ) ) + { + idx = fft256_read_indexes; + + /* Combined Digit reverse counter & Length two butterflies */ + IF( EQ_16( n, 128 ) ) + { + x2 = temp; + FOR( i = 0; i < 64; i++ ) + { + j = *idx++; + move16(); + k = *idx++; + move16(); + + *x2++ = L_add( x[( j >> 1 )], x[( k >> 1 )] ); // Qx + move16(); + *x2++ = L_sub( x[( j >> 1 )], x[( k >> 1 )] ); // Qx + move16(); + } + } + ELSE IF( EQ_16( n, 256 ) ) + { + x2 = temp; + FOR( i = 0; i < 128; i++ ) + { + j = *idx++; + move16(); + k = *idx++; + move16(); + + *x2++ = L_add( x[j], x[k] ); // Qx + move16(); + *x2++ = L_sub( x[j], x[k] ); // Qx + move16(); + } + } + ELSE IF( EQ_16( n, 512 ) ) + { + x2even = temp; + x2odd = temp + 256; + + FOR( i = 0; i < 128; i++ ) + { + j = shl( *idx, 1 ); + idx++; + k = shl( *idx, 1 ); + idx++; + + *x2even++ = L_add( x[j], x[k] ); // Qx + move16(); + *x2even++ = L_sub( x[j], x[k] ); // Qx + move16(); + j = add( j, 1 ); + k = add( k, 1 ); + *x2odd++ = L_add( x[j], x[k] ); // Qx + move16(); + *x2odd++ = L_sub( x[j], x[k] ); // Qx + move16(); + } + } + + /*-----------------------------------------------------------------* + * 1st Stage Loop has been Unrolled because n4 is '1' and that + * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop + * and the associated pointers initialization. + * Also, it allows to Put the Data from 'temp' back into 'x' due + * to the previous Combined Digit Reverse and Length two butterflies + *-----------------------------------------------------------------*/ + + /*for_ (k = 2; k < 3; k++)*/ + { + x0 = temp; + x1 = x0 + 2; + x2 = x; // Qx + + FOR( i = 0; i < n; i += 4 ) + { + *x2++ = L_add( *x0++, *x1 ); /* x[i] = xt + x[i+n2]; */ + move16(); + *x2++ = *x0; + move16(); + x0--; + *x2++ = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */ + move16(); + x1++; + *x2++ = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; */ + move16(); + + x0 += 4; + x1 += 3; /* x1 has already advanced */ + } + } + } + ELSE + { + /*-----------------------------------------------------------------* + * Digit reverse counter + *-----------------------------------------------------------------*/ + + j = 0; + move16(); + x0 = &x[0]; // Qx + FOR( i = 0; i < ( n - 1 ); i++ ) + { + IF( LT_16( i, j ) ) + { + xt = x[j]; // Qx + move32(); + x[j] = *x0; + move32(); + *x0 = xt; + move32(); + } + x0++; + k = shr( n, 1 ); + WHILE( ( k <= j ) ) + { + j = sub( j, k ); + k = shr( k, 1 ); + } + j = add( j, k ); + } + + /*-----------------------------------------------------------------* + * Length two butterflies + *-----------------------------------------------------------------*/ + + x0 = &x[0]; // Qx + x1 = &x[1]; // Qx + FOR( i = 0; i < ( n >> 1 ); i++ ) + { + *x1 = L_sub( *x0, *x1 ); // Qx + move32(); + *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); //*x0 * 2 - *x1 (Qx) + move32(); + + x0++; + x0++; + x1++; + x1++; + } + + /*-----------------------------------------------------------------* + * 1st Stage Loop has been Unrolled because n4 is '1' and that + * allows the elimination of the 'for_ (j = 1; j < n4; j++)' loop + * and the associated pointers initialization. + *-----------------------------------------------------------------*/ + + /* for_ (k = 2; k < 3; k++) */ + { + x0 = x; // Qx + x1 = x0 + 2; + + FOR( i = 0; i < n; i += 4 ) + { + *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; Qx*/ + move32(); + *x0 = L_sub( L_shl( *x0, 1 ), *x1++ ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/ + move32(); + *x1 = L_negate( *x1 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx*/ + move32(); + + x0 += 4; + x1 += 3; /* x1 has already advanced */ + } + } + } + + /*-----------------------------------------------------------------* + * Other butterflies + * + * The implementation described in [1] has been changed by using + * table lookup for evaluating sine and cosine functions. The + * variable ind and its increment step are needed to access table + * entries. Note that this implementation assumes n4 to be so + * small that ind will never exceed the table. Thus the input + * argument n and the constant N_MAX_FFT must be set properly. + *-----------------------------------------------------------------*/ + + n4 = 1; + move16(); + n2 = 2; + move16(); + n1 = 4; + move16(); + + step = N_MAX_DIV4; + move16(); + + FOR( k = 3; k <= m; k++ ) + { + step = shr( step, 1 ); + n4 = shl( n4, 1 ); + n2 = shl( n2, 1 ); + n1 = shl( n1, 1 ); + + x0 = x; + x1 = x0 + n2; + x2 = x1 + n4; + + FOR( i = 0; i < n; i += n1 ) + { + *x1 = L_sub( *x0, *x1 ); /* x[i+n2] = xt - x[i+n2]; */ + move32(); + *x0 = L_sub( L_shl( *x0, 1 ), *x1 ); /* x[i] = xt + x[i+n2]; */ /**x0 * 2 - *x1 (Qx)*/ + move32(); + *x2 = L_negate( *x2 ); /* x[i+n2+n4] = -x[i+n2+n4]; Qx */ + move32(); + + s = sincos_t_ext_fx; // Q15 + c = s + N_MAX_FFT / 4; /* 1024/4 = 256, 256/4=64 Q15*/ + xi1 = x0; + xi3 = xi1 + n2; + xi2 = xi3; + x0 += n1; + xi4 = x0; + + FOR( j = 1; j < n4; j++ ) + { + xi3++; + xi1++; + xi4--; + xi2--; + c += step; + s += step; /* autoincrement by ar0 */ + + t1 = L_add( Mpy_32_16_1( *xi3, *c ), Mpy_32_16_1( *xi4, *s ) ); /* t1 = *xi3**(pt_c+ind) + *xi4**(pt_s+ind); Qx*/ + t2 = L_sub( Mpy_32_16_1( *xi3, *s ), Mpy_32_16_1( *xi4, *c ) ); /* t2 = *xi3**(pt_s+ind) - *xi4**(pt_c+ind); Qx*/ + + *xi4 = L_sub( *xi2, t2 ); + move32(); + *xi2 = L_sub( *xi1, t1 ); + move32(); + *xi1 = L_sub( L_shl( *xi1, 1 ), *xi2 ); // Qx + move32(); + *xi3 = L_negate( L_add( L_shl( t2, 1 ), *xi4 ) ); // Qx + move32(); + } + + x1 += n1; + x2 += n1; + } + } + + return; +} diff --git a/lib_com/fill_spectrum.c b/lib_com/fill_spectrum_fx.c similarity index 100% rename from lib_com/fill_spectrum.c rename to lib_com/fill_spectrum_fx.c diff --git a/lib_com/findpulse.c b/lib_com/findpulse_fx.c similarity index 100% rename from lib_com/findpulse.c rename to lib_com/findpulse_fx.c diff --git a/lib_com/gs_gains.c b/lib_com/gs_gains.c deleted file mode 100644 index 8fa769475..000000000 --- a/lib_com/gs_gains.c +++ /dev/null @@ -1,425 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include -#include "cnst.h" -#include "rom_com.h" -#include "prot_fx.h" -#include "wmc_auto.h" - -static void GSC_gain_DQ_fx( - const Word16 element_mode, /* i : element mode */ - const Word16 enc_dec, /* i : encoder/decoder flag */ - const Word16 coder_type, /* i : Coder type */ - const Word16 Mbands_gn, /* i : Number of band */ - const Word32 core_brate, /* i : Core bitrate */ - const Word16 mean_g, /* i : Average gain Q12 */ - const Word16 *Gain_in, /* i : Unquantized gain vector Q12 */ - Word16 *Gain_out /* o : Level adjusted unquantized gain vector Q12 */ -) -{ - Word16 Gain_off; - Word16 i; - - /* Gain adjustment to fit ACELP generic inactive coding gain at low rate */ - Gain_off = 0; - move16(); - - test(); - IF( coder_type == INACTIVE || EQ_16( coder_type, UNVOICED ) ) - { - test(); - IF( LE_32( core_brate, ACELP_5k00 ) && EQ_16( coder_type, UNVOICED ) ) - { - Gain_off = 1843; // 9/20 in Q12 - move16(); - } - ELSE IF( LE_32( core_brate, ACELP_7k20 ) ) - { - Gain_off = 1638; // 8/20 in Q12; /* 0 dB */ - move16(); - } - ELSE IF( LE_32( core_brate, ACELP_8k00 ) ) - { - Gain_off = 1351; // 6.6f/20 in Q12 /* ~-3.3 dB */ - move16(); - } - ELSE IF( LE_32( core_brate, ACELP_9k60 ) ) - { - Gain_off = 983; // 4.8f/20 in Q12 /* ~-2.4 dB */ - move16(); - } - ELSE IF( LE_32( core_brate, ACELP_11k60 ) ) - { - Gain_off = 717; // 3.5f/20 in Q12 /* ~-2.4 dB */ - move16(); - } - ELSE IF( LE_32( core_brate, ACELP_13k20 ) ) - { - Gain_off = 614; // 3.0f/20 in Q12 /* ~-2.4 dB */ - move16(); - } - } - - test(); - IF( coder_type != INACTIVE && NE_16( coder_type, UNVOICED ) ) - { - FOR( i = 0; i < Mbands_gn; i++ ) - { - Gain_out[i] = add( Gain_in[i], mean_g ); // Q12 - move16(); - } - } - ELSE - { - /*mimic ACELP decay of energy for low rates*/ - test(); - IF( element_mode == EVS_MONO && EQ_16( enc_dec, DEC ) ) - { - /* This is to keep EVS mono bit-exact with the standard (there might be a small desynchronization between encoder and decoder but there is no real quality or interop. issue) */ - FOR( i = 0; i < Mbands_gn; i++ ) - { - Gain_out[i] = add( Gain_out[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12 - move16(); - // Gain_out[i] += mean_g - i * ( Gain_off / 20.f ) / ( (float) Mbands_gn ); - } - } - ELSE - { - FOR( i = 0; i < Mbands_gn; i++ ) - { - Gain_out[i] = add( Gain_in[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12 - move16(); - // Gain_out[i] = Gain_in[i] + mean_g - ( i * ( Gain_off / 20.f ) / ( (float) Mbands_gn ) ); - } - } - } - - return; -} - -Word16 gsc_gainQ_ivas_fx( - BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ - const Word16 element_mode, /* i : element mode */ - const Word16 idchan, /* i : channel ID */ - const Word16 y_gain4[], - /* i : Energy per band */ // Q12 - Word16 y_gainQ[], - /* o : quantized energy per band */ // Q12 - const Word32 core_brate, /* i : Core rate */ - const Word16 coder_type, /* i : coding type */ - const Word16 bwidth, /* i : input signal bandwidth */ - const Word16 L_frame, /* i : frame length */ - const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */ - const Word32 core_brate_inp /* i : true core bitrate */ -) -{ - Word16 y_gain_tmp[MBANDS_GN16k]; - Word16 y_gain_tmp2[MBANDS_GN16k]; - Word16 i, idx_g = 0; - move16(); - Word16 mean_4g_fx[1], ftmp1_fx; - Word16 Mbands_gn = MBANDS_GN; - move16(); - Word16 y_gain_tmp3[MBANDS_GN]; - Word32 L_tmp; - - if ( EQ_16( L_frame, L_FRAME16k ) ) - { - Mbands_gn = MBANDS_GN16k; - move16(); - } - - mean_4g_fx[0] = 0; - move32(); - - test(); - test(); - IF( ( EQ_16( coder_type, AUDIO ) || coder_type == INACTIVE ) && bwidth == NB ) - { - L_tmp = 0; - move32(); - FOR( i = 0; i < 10; i++ ) - { - L_tmp = L_add( L_tmp, y_gain4[i] ); - } - L_tmp = L_sub( Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ), 2457 /* 0.6f in Q12 */ ); // Q12 - ftmp1_fx = extract_l( L_tmp ); - FOR( i = 0; i < Mbands_gn; i++ ) - { - IF( LT_16( y_gain4[i], ftmp1_fx ) ) - { - y_gain_tmp2[i] = ftmp1_fx; /*Q12*/ - } - ELSE - { - y_gain_tmp2[i] = y_gain4[i]; /*Q12*/ - } - move16(); - } - - /* Quantized mean gain without clipping */ - L_tmp = 0; - move32(); - FOR( i = 0; i < 10; i++ ) - { - L_tmp = L_add( L_tmp, y_gain4[i] ); - } - L_tmp = Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ); // Q12 - mean_4g_fx[0] = extract_l( L_tmp ); // Q12 - move16(); - idx_g = vquant_fx( mean_4g_fx, Gain_meanNB_fx, mean_4g_fx, Gain_mean_dicNB_fx, 1, 64 ); - push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); - - FOR( i = 0; i < Mbands_gn; i++ ) - { - y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12 - move16(); - } - - if ( LT_16( y_gain_tmp[9], -1229 /* -0.3f in Q12 */ ) ) - { - y_gain_tmp[9] = -1229; /* -0.3f in Q12 */ - move16(); - } - - set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 ); - idx_g = vquant_fx( y_gain_tmp, Mean_dic_NB_fx, y_gain_tmp, Gain_dic1_NB_fx, 3, 64 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); - - IF( LT_32( core_brate, ACELP_9k60 ) ) - { - idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NB_fx, 3, 32 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); - - idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NB_fx, 4, 16 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); - } - ELSE - { - idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NBHR_fx, 3, 64 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); - - idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NBHR_fx, 4, 128 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 ); - } - - test(); - IF( LE_32( core_brate, ACELP_9k60 ) && coder_type == INACTIVE ) - { - /* Some energy is needed in high band for stat_noise_uv_enc() to be functional in inactive speech */ - y_gain_tmp[10] = mean_fx( y_gain_tmp + 6, 3 ); /*Q12*/ - move16(); - y_gain_tmp[11] = mean_fx( y_gain_tmp + 7, 3 ); /*Q12*/ - move16(); - y_gain_tmp[12] = mean_fx( y_gain_tmp + 8, 3 ); /*Q12*/ - move16(); - y_gain_tmp[13] = mean_fx( y_gain_tmp + 9, 3 ); /*Q12*/ - move16(); - y_gain_tmp[14] = mean_fx( y_gain_tmp + 10, 3 ); /*Q12*/ - move16(); - y_gain_tmp[15] = mean_fx( y_gain_tmp + 11, 3 ); /*Q12*/ - move16(); - } - ELSE - { - set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 ); - } - } - ELSE - { - L_tmp = 0; - move32(); - FOR( i = 0; i < 16; i++ ) - { - L_tmp = L_add( L_tmp, y_gain4[i] ); - } - L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12 - ftmp1_fx = extract_l( L_tmp ); - FOR( i = 0; i < Mbands_gn; i++ ) - { - IF( LT_16( y_gain4[i], sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) ) - { - y_gain_tmp2[i] = sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ ); - } - ELSE IF( GT_16( y_gain4[i], add( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) ) - { - y_gain_tmp2[i] = add( ftmp1_fx, 2457 /* 0.6 in Q12*/ ); - } - ELSE - { - y_gain_tmp2[i] = y_gain4[i]; - } - move16(); - } - - L_tmp = 0; - move32(); - FOR( i = 0; i < 16; i++ ) - { - L_tmp = L_add( L_tmp, y_gain_tmp2[i] ); - } - L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12 - mean_4g_fx[0] = extract_l( L_tmp ); // Q12 - move16(); - idx_g = vquant_fx( mean_4g_fx, mean_m_fx, mean_4g_fx, mean_gain_dic_fx, 1, 64 ); - push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); - - /* Subtraction of the average gain */ - FOR( i = 0; i < Mbands_gn; i++ ) - { - y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12 - move16(); - } - - IF( LT_32( core_brate, ACELP_9k60 ) ) - { - /* prediction and quantization of the average gain */ - - /*--------------------------------------------------------------------------------------* - * Quantization of the first 8 bands - * Keep only 4 bands out of the last 8 bands - *--------------------------------------------------------------------------------------*/ - - Copy( y_gain_tmp, y_gain_tmp2, 8 ); - - y_gain_tmp2[8] = y_gain_tmp[8]; - move16(); - y_gain_tmp2[9] = y_gain_tmp[10]; - move16(); - y_gain_tmp2[10] = y_gain_tmp[12]; - move16(); - y_gain_tmp2[11] = y_gain_tmp[14]; - move16(); - - idx_g = 0; - move16(); - idx_g = vquant_fx( y_gain_tmp2, YGain_mean_LR_fx, y_gain_tmp2, YGain_dic1_LR_fx, 3, 32 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); - - test(); - test(); - test(); - IF( !( coder_type == INACTIVE && tdm_LRTD_flag == 0 && EQ_16( idchan, 1 ) ) || GT_32( core_brate_inp, GSC_LRES_GAINQ_LIMIT ) ) - { - idx_g = vquant_fx( y_gain_tmp2 + 3, YGain_mean_LR_fx + 3, y_gain_tmp2 + 3, YGain_dic2_LR_fx, 4, 32 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); - - /*----------------------------------------------------------------------* - * Vector quantization of the first 8 bands + quantization of the 4 bands out of the last 8 - * Interpolation of the last 4 bands Q to create bands 8-16 - *----------------------------------------------------------------------*/ - - idx_g = vquant_fx( y_gain_tmp2 + 7, YGain_mean_LR_fx + 7, y_gain_tmp2 + 7, YGain_dic3_LR_fx, 5, 32 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); - - set16_fx( y_gain_tmp2 + 12, 0, MBANDS_GN - 12 ); - - /* Update to quantized vector */ - Copy( y_gain_tmp2, y_gain_tmp, 8 ); - - Copy( y_gain_tmp2 + 8, y_gain_tmp3, 4 ); - set16_fx( y_gain_tmp + 8, 0, 8 ); - fft_rel_fx( y_gain_tmp2 + 8, 4, 2 ); - - Copy( y_gain_tmp2 + 8, y_gain_tmp + 8, 3 ); - y_gain_tmp[15] = y_gain_tmp2[11]; - move16(); - ifft_rel_fx( y_gain_tmp + 8, 8, 3 ); - - FOR( i = 8; i < 16; i++ ) - { - y_gain_tmp[i] = shl( mult( y_gain_tmp[i], 23101 /* 1.41 in Q14 */ ), 1 ); /*Q12*/ - move16(); - } - - y_gain_tmp[8] = y_gain_tmp3[0]; - move16(); - y_gain_tmp[10] = y_gain_tmp3[1]; - move16(); - y_gain_tmp[12] = y_gain_tmp3[2]; - move16(); - y_gain_tmp[14] = y_gain_tmp3[3]; - move16(); - } - ELSE - { - Copy( y_gain_tmp2, y_gain_tmp, 3 ); - set16_fx( y_gain_tmp + 3, 0, MBANDS_GN16k - 3 ); - } - } - ELSE - { - IF( EQ_16( L_frame, L_FRAME ) ) - { - idx_g = vquant_fx( y_gain_tmp, YG_mean16_fx, y_gain_tmp, YG_dicMR_1_fx, 4, 64 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); - - idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16_fx + 4, y_gain_tmp + 4, YG_dicMR_2_fx, 4, 32 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); - - idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16_fx + 8, y_gain_tmp + 8, YG_dicMR_3_fx, 4, 32 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); - - idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16_fx + 12, y_gain_tmp + 12, YG_dicMR_4_fx, 4, 16 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); - } - ELSE - { - idx_g = vquant_fx( y_gain_tmp, YG_mean16HR_fx, y_gain_tmp, YG_dicHR_1_fx, 4, 128 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 ); - - idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16HR_fx + 4, y_gain_tmp + 4, YG_dicHR_2_fx, 4, 64 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); - - idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16HR_fx + 8, y_gain_tmp + 8, YG_dicHR_3_fx, 4, 64 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); - - idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16HR_16kHz_fx, y_gain_tmp + 12, YG_dicHR_4_16kHz_fx, 4, 64 ); - push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); - - idx_g = vquant_fx( y_gain_tmp + 16, YG_meanL2G_16kHz_fx, y_gain_tmp + 16, YG_dicL2G_16kHz_fx, 2, 8 ); - push_indice( hBstr, IND_Y_GAIN_HF, idx_g, 3 ); - } - } - } - - GSC_gain_DQ_fx( element_mode, ENC, coder_type, Mbands_gn, core_brate, mean_4g_fx[0], y_gain_tmp, y_gainQ ); - - return mean_4g_fx[0]; -} diff --git a/lib_com/gs_gains_fx.c b/lib_com/gs_gains_fx.c index ecfe9aae0..f28af742f 100644 --- a/lib_com/gs_gains_fx.c +++ b/lib_com/gs_gains_fx.c @@ -34,11 +34,14 @@ EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 ====================================================================================*/ +#include +#include #include "options.h" /* Compilation switches */ #include "cnst.h" /* Common constants */ #include "rom_com.h" /* Static table prototypes */ #include "prot_fx.h" #include "stl.h" +#include "wmc_auto.h" /*-------------------------------------------------------------------* * Local constants @@ -66,6 +69,7 @@ static Word16 VDQ_vec_fx( Word16 *Qvec_out_fx, const Word16 *mean_dic_fx, const /* RETURN ARGUMENTS : */ /* _ None */ /*========================================================================*/ + void Comp_and_apply_gain_fx( Word16 exc_diffQ[], /* i/o: Quantized excitation */ Word16 Ener_per_bd_iQ[], /* i : Target ener per band Q13 */ @@ -264,6 +268,7 @@ void Comp_and_apply_gain_ivas_fx( /* RETURN ARGUMENTS : */ /* _ None */ /*========================================================================*/ + static Word16 Comp_band_log_ener( /* o : Band gain Q12 */ const Word16 *pt_fx, /* i : Dct input Q_sc */ const Word16 Len, /* i : Lenght en energy accumulation */ @@ -363,127 +368,14 @@ void Ener_per_band_comp_ivas_fx( return; } -void Ener_per_band_comp_ivas_fx_2( - const Word16 exc_diff[], /* i : target signal Q_exc */ - Word16 y_gain4[], /* o : Energy per band to quantize Q12 */ - const Word16 Q_exc, - const Word16 Mband, /* i : Max band */ - const Word16 Eflag, /* i : flag of highest band */ - const Word16 L_frame /* i : frame length */ -) -{ - Word32 etmp, L_tmp; - Word16 etmp_e; - const Word16 *pt; - Word16 i, j, tmp; - tmp = add( shl( sub( Q15, Q_exc ), 1 ), 1 ); - pt = exc_diff; - FOR( j = 0; j < 2; j++ ) - { - y_gain4[j] = 0; - move16(); - etmp = 42949673; /* 0.02 in Q31 */ - move32(); - etmp_e = 0; - move16(); - - pt = exc_diff + shl( j, 3 ); - FOR( i = 0; i < 8; i++ ) - { - etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e ); - pt++; - } - - /* normalized to 16 bins to easy the quantization */ - etmp_e = add( etmp_e, 1 ); - etmp = Sqrt32( etmp, &etmp_e ); - etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25 - y_gain4[j] = extract_h( L_shl( etmp, 3 ) ); // Q12 - move16(); - } - - FOR( j = 1; j < Mband - 2; j++ ) - { - etmp = 21474836; /* 0.01 in Q31 */ - move32(); - etmp_e = 0; - move16(); - - pt = exc_diff + shl( j, 4 ); - FOR( i = 0; i < 16; i++ ) - { - etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e ); - pt++; - } - - etmp = Sqrt32( etmp, &etmp_e ); - etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25 - y_gain4[j + 1] = extract_h( L_shl( etmp, 3 ) ); // Q12 - move16(); - } - - IF( EQ_16( Eflag, 1 ) ) - { - etmp = 21474836; /* 0.01 in Q31 */ - move32(); - etmp_e = 0; - move16(); - - pt = exc_diff + shl( j, 4 ); - FOR( i = 0; i < 32; i++ ) - { - etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e ); - pt++; - } - - etmp_e = sub( etmp_e, 1 ); - etmp = Sqrt32( etmp, &etmp_e ); - etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25 - y_gain4[j + 1] = extract_h( L_shl( etmp, 3 ) ); // Q12 - move16(); - } - - IF( EQ_16( L_frame, L_FRAME16k ) ) - { - etmp = 21474836; /* 0.01 in Q31 */ - move32(); - etmp_e = 0; - move16(); - - FOR( i = 0; i < 32; i++ ) - { - etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e ); - pt++; - } - - Word16 tmp2 = sub( etmp_e, 1 ); - L_tmp = Sqrt32( etmp, &tmp2 ); - L_tmp = BASOP_Util_Log10( L_tmp, tmp2 ); // Q25 - y_gain4[j + 2] = extract_h( L_shl( L_tmp, 3 ) ); // Q12 - move16(); - - FOR( i = 0; i < 32; i++ ) - { - etmp = BASOP_Util_Add_Mant32Exp( etmp, etmp_e, L_mult0( *pt, *pt ), tmp, &etmp_e ); - pt++; - } - - etmp_e = sub( etmp_e, 1 ); - etmp = Sqrt32( etmp, &etmp_e ); - etmp = BASOP_Util_Log10( etmp, etmp_e ); // Q25 - y_gain4[j + 3] = extract_h( L_shl( etmp, 3 ) ); // Q12 - move16(); - } - - return; -} /*-------------------------------------------------------------------* * gsc_gainQ() * * Quantization of the energy per band *-------------------------------------------------------------------*/ + static void GSC_gain_adj( const Word16 coder_type, /* i : Coder type */ const Word32 core_brate, /* i : Bit rate */ @@ -550,11 +442,13 @@ static void GSC_gain_adj( return; } + /*-------------------------------------------------------------------* * GSC_gain_adj_ivas_fx() * * Quantization of the energy per band *-------------------------------------------------------------------*/ + static void GSC_gain_adj_ivas_fx( const Word16 coder_type, /* i : Coder type */ const Word16 Mbands_gn, /* i : Number of band */ @@ -629,6 +523,404 @@ static void GSC_gain_adj_ivas_fx( return; } + +/*-------------------------------------------------------------------* + * GSC_gain_DQ() + * + * Form the final vector after gain quantization/Dequantization + * Common to both encoder and decoder + *-------------------------------------------------------------------*/ + +static void GSC_gain_DQ_fx( + const Word16 element_mode, /* i : element mode */ + const Word16 enc_dec, /* i : encoder/decoder flag */ + const Word16 coder_type, /* i : Coder type */ + const Word16 Mbands_gn, /* i : Number of band */ + const Word32 core_brate, /* i : Core bitrate */ + const Word16 mean_g, /* i : Average gain Q12 */ + const Word16 *Gain_in, /* i : Unquantized gain vector Q12 */ + Word16 *Gain_out /* o : Level adjusted unquantized gain vector Q12 */ +) +{ + Word16 Gain_off; + Word16 i; + + /* Gain adjustment to fit ACELP generic inactive coding gain at low rate */ + Gain_off = 0; + move16(); + + test(); + IF( coder_type == INACTIVE || EQ_16( coder_type, UNVOICED ) ) + { + test(); + IF( LE_32( core_brate, ACELP_5k00 ) && EQ_16( coder_type, UNVOICED ) ) + { + Gain_off = 1843; // 9/20 in Q12 + move16(); + } + ELSE IF( LE_32( core_brate, ACELP_7k20 ) ) + { + Gain_off = 1638; // 8/20 in Q12; /* 0 dB */ + move16(); + } + ELSE IF( LE_32( core_brate, ACELP_8k00 ) ) + { + Gain_off = 1351; // 6.6f/20 in Q12 /* ~-3.3 dB */ + move16(); + } + ELSE IF( LE_32( core_brate, ACELP_9k60 ) ) + { + Gain_off = 983; // 4.8f/20 in Q12 /* ~-2.4 dB */ + move16(); + } + ELSE IF( LE_32( core_brate, ACELP_11k60 ) ) + { + Gain_off = 717; // 3.5f/20 in Q12 /* ~-2.4 dB */ + move16(); + } + ELSE IF( LE_32( core_brate, ACELP_13k20 ) ) + { + Gain_off = 614; // 3.0f/20 in Q12 /* ~-2.4 dB */ + move16(); + } + } + + test(); + IF( coder_type != INACTIVE && NE_16( coder_type, UNVOICED ) ) + { + FOR( i = 0; i < Mbands_gn; i++ ) + { + Gain_out[i] = add( Gain_in[i], mean_g ); // Q12 + move16(); + } + } + ELSE + { + /*mimic ACELP decay of energy for low rates*/ + test(); + IF( element_mode == EVS_MONO && EQ_16( enc_dec, DEC ) ) + { + /* This is to keep EVS mono bit-exact with the standard (there might be a small desynchronization between encoder and decoder but there is no real quality or interop. issue) */ + FOR( i = 0; i < Mbands_gn; i++ ) + { + Gain_out[i] = add( Gain_out[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12 + move16(); + // Gain_out[i] += mean_g - i * ( Gain_off / 20.f ) / ( (float) Mbands_gn ); + } + } + ELSE + { + FOR( i = 0; i < Mbands_gn; i++ ) + { + Gain_out[i] = add( Gain_in[i], sub( mean_g, mult( Gain_off, div_s( i, Mbands_gn ) ) ) ); // Q12 + move16(); + // Gain_out[i] = Gain_in[i] + mean_g - ( i * ( Gain_off / 20.f ) / ( (float) Mbands_gn ) ); + } + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * gsc_gainQ() + * + * Quantization of the energy per band + *-------------------------------------------------------------------*/ + +Word16 gsc_gainQ_ivas_fx( + BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ + const Word16 element_mode, /* i : element mode */ + const Word16 idchan, /* i : channel ID */ + const Word16 y_gain4[], + /* i : Energy per band */ // Q12 + Word16 y_gainQ[], + /* o : quantized energy per band */ // Q12 + const Word32 core_brate, /* i : Core rate */ + const Word16 coder_type, /* i : coding type */ + const Word16 bwidth, /* i : input signal bandwidth */ + const Word16 L_frame, /* i : frame length */ + const Word16 tdm_LRTD_flag, /* i : LRTD stereo mode flag */ + const Word32 core_brate_inp /* i : true core bitrate */ +) +{ + Word16 y_gain_tmp[MBANDS_GN16k]; + Word16 y_gain_tmp2[MBANDS_GN16k]; + Word16 i, idx_g = 0; + move16(); + Word16 mean_4g_fx[1], ftmp1_fx; + Word16 Mbands_gn = MBANDS_GN; + move16(); + Word16 y_gain_tmp3[MBANDS_GN]; + Word32 L_tmp; + + if ( EQ_16( L_frame, L_FRAME16k ) ) + { + Mbands_gn = MBANDS_GN16k; + move16(); + } + + mean_4g_fx[0] = 0; + move32(); + + test(); + test(); + IF( ( EQ_16( coder_type, AUDIO ) || coder_type == INACTIVE ) && bwidth == NB ) + { + L_tmp = 0; + move32(); + FOR( i = 0; i < 10; i++ ) + { + L_tmp = L_add( L_tmp, y_gain4[i] ); + } + L_tmp = L_sub( Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ), 2457 /* 0.6f in Q12 */ ); // Q12 + ftmp1_fx = extract_l( L_tmp ); + FOR( i = 0; i < Mbands_gn; i++ ) + { + IF( LT_16( y_gain4[i], ftmp1_fx ) ) + { + y_gain_tmp2[i] = ftmp1_fx; /*Q12*/ + } + ELSE + { + y_gain_tmp2[i] = y_gain4[i]; /*Q12*/ + } + move16(); + } + + /* Quantized mean gain without clipping */ + L_tmp = 0; + move32(); + FOR( i = 0; i < 10; i++ ) + { + L_tmp = L_add( L_tmp, y_gain4[i] ); + } + L_tmp = Mpy_32_16_1( L_tmp, 3277 /* (1/10.0f) in Q15 */ ); // Q12 + mean_4g_fx[0] = extract_l( L_tmp ); // Q12 + move16(); + idx_g = vquant_fx( mean_4g_fx, Gain_meanNB_fx, mean_4g_fx, Gain_mean_dicNB_fx, 1, 64 ); + push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); + + FOR( i = 0; i < Mbands_gn; i++ ) + { + y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12 + move16(); + } + + if ( LT_16( y_gain_tmp[9], -1229 /* -0.3f in Q12 */ ) ) + { + y_gain_tmp[9] = -1229; /* -0.3f in Q12 */ + move16(); + } + + set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 ); + idx_g = vquant_fx( y_gain_tmp, Mean_dic_NB_fx, y_gain_tmp, Gain_dic1_NB_fx, 3, 64 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + + IF( LT_32( core_brate, ACELP_9k60 ) ) + { + idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NB_fx, 3, 32 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + + idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NB_fx, 4, 16 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); + } + ELSE + { + idx_g = vquant_fx( y_gain_tmp + 3, Mean_dic_NB_fx + 3, y_gain_tmp + 3, Gain_dic2_NBHR_fx, 3, 64 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + + idx_g = vquant_fx( y_gain_tmp + 6, Mean_dic_NB_fx + 6, y_gain_tmp + 6, Gain_dic3_NBHR_fx, 4, 128 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 ); + } + + test(); + IF( LE_32( core_brate, ACELP_9k60 ) && coder_type == INACTIVE ) + { + /* Some energy is needed in high band for stat_noise_uv_enc() to be functional in inactive speech */ + y_gain_tmp[10] = mean_fx( y_gain_tmp + 6, 3 ); /*Q12*/ + move16(); + y_gain_tmp[11] = mean_fx( y_gain_tmp + 7, 3 ); /*Q12*/ + move16(); + y_gain_tmp[12] = mean_fx( y_gain_tmp + 8, 3 ); /*Q12*/ + move16(); + y_gain_tmp[13] = mean_fx( y_gain_tmp + 9, 3 ); /*Q12*/ + move16(); + y_gain_tmp[14] = mean_fx( y_gain_tmp + 10, 3 ); /*Q12*/ + move16(); + y_gain_tmp[15] = mean_fx( y_gain_tmp + 11, 3 ); /*Q12*/ + move16(); + } + ELSE + { + set16_fx( y_gain_tmp + 10, 0, MBANDS_GN - 10 ); + } + } + ELSE + { + L_tmp = 0; + move32(); + FOR( i = 0; i < 16; i++ ) + { + L_tmp = L_add( L_tmp, y_gain4[i] ); + } + L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12 + ftmp1_fx = extract_l( L_tmp ); + FOR( i = 0; i < Mbands_gn; i++ ) + { + IF( LT_16( y_gain4[i], sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) ) + { + y_gain_tmp2[i] = sub( ftmp1_fx, 2457 /* 0.6 in Q12*/ ); + } + ELSE IF( GT_16( y_gain4[i], add( ftmp1_fx, 2457 /* 0.6 in Q12*/ ) ) ) + { + y_gain_tmp2[i] = add( ftmp1_fx, 2457 /* 0.6 in Q12*/ ); + } + ELSE + { + y_gain_tmp2[i] = y_gain4[i]; + } + move16(); + } + + L_tmp = 0; + move32(); + FOR( i = 0; i < 16; i++ ) + { + L_tmp = L_add( L_tmp, y_gain_tmp2[i] ); + } + L_tmp = Mpy_32_16_1( L_tmp, 2048 /* (1/16.f) in Q15 */ ); // Q12 + mean_4g_fx[0] = extract_l( L_tmp ); // Q12 + move16(); + idx_g = vquant_fx( mean_4g_fx, mean_m_fx, mean_4g_fx, mean_gain_dic_fx, 1, 64 ); + push_indice( hBstr, IND_MEAN_GAIN2, idx_g, 6 ); + + /* Subtraction of the average gain */ + FOR( i = 0; i < Mbands_gn; i++ ) + { + y_gain_tmp[i] = sub( y_gain_tmp2[i], mean_4g_fx[0] ); // Q12 + move16(); + } + + IF( LT_32( core_brate, ACELP_9k60 ) ) + { + /* prediction and quantization of the average gain */ + + /*--------------------------------------------------------------------------------------* + * Quantization of the first 8 bands + * Keep only 4 bands out of the last 8 bands + *--------------------------------------------------------------------------------------*/ + + Copy( y_gain_tmp, y_gain_tmp2, 8 ); + + y_gain_tmp2[8] = y_gain_tmp[8]; + move16(); + y_gain_tmp2[9] = y_gain_tmp[10]; + move16(); + y_gain_tmp2[10] = y_gain_tmp[12]; + move16(); + y_gain_tmp2[11] = y_gain_tmp[14]; + move16(); + + idx_g = 0; + move16(); + idx_g = vquant_fx( y_gain_tmp2, YGain_mean_LR_fx, y_gain_tmp2, YGain_dic1_LR_fx, 3, 32 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + + test(); + test(); + test(); + IF( !( coder_type == INACTIVE && tdm_LRTD_flag == 0 && EQ_16( idchan, 1 ) ) || GT_32( core_brate_inp, GSC_LRES_GAINQ_LIMIT ) ) + { + idx_g = vquant_fx( y_gain_tmp2 + 3, YGain_mean_LR_fx + 3, y_gain_tmp2 + 3, YGain_dic2_LR_fx, 4, 32 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + + /*----------------------------------------------------------------------* + * Vector quantization of the first 8 bands + quantization of the 4 bands out of the last 8 + * Interpolation of the last 4 bands Q to create bands 8-16 + *----------------------------------------------------------------------*/ + + idx_g = vquant_fx( y_gain_tmp2 + 7, YGain_mean_LR_fx + 7, y_gain_tmp2 + 7, YGain_dic3_LR_fx, 5, 32 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + + set16_fx( y_gain_tmp2 + 12, 0, MBANDS_GN - 12 ); + + /* Update to quantized vector */ + Copy( y_gain_tmp2, y_gain_tmp, 8 ); + + Copy( y_gain_tmp2 + 8, y_gain_tmp3, 4 ); + set16_fx( y_gain_tmp + 8, 0, 8 ); + fft_rel_fx( y_gain_tmp2 + 8, 4, 2 ); + + Copy( y_gain_tmp2 + 8, y_gain_tmp + 8, 3 ); + y_gain_tmp[15] = y_gain_tmp2[11]; + move16(); + ifft_rel_fx( y_gain_tmp + 8, 8, 3 ); + + FOR( i = 8; i < 16; i++ ) + { + y_gain_tmp[i] = shl( mult( y_gain_tmp[i], 23101 /* 1.41 in Q14 */ ), 1 ); /*Q12*/ + move16(); + } + + y_gain_tmp[8] = y_gain_tmp3[0]; + move16(); + y_gain_tmp[10] = y_gain_tmp3[1]; + move16(); + y_gain_tmp[12] = y_gain_tmp3[2]; + move16(); + y_gain_tmp[14] = y_gain_tmp3[3]; + move16(); + } + ELSE + { + Copy( y_gain_tmp2, y_gain_tmp, 3 ); + set16_fx( y_gain_tmp + 3, 0, MBANDS_GN16k - 3 ); + } + } + ELSE + { + IF( EQ_16( L_frame, L_FRAME ) ) + { + idx_g = vquant_fx( y_gain_tmp, YG_mean16_fx, y_gain_tmp, YG_dicMR_1_fx, 4, 64 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + + idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16_fx + 4, y_gain_tmp + 4, YG_dicMR_2_fx, 4, 32 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + + idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16_fx + 8, y_gain_tmp + 8, YG_dicMR_3_fx, 4, 32 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 5 ); + + idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16_fx + 12, y_gain_tmp + 12, YG_dicMR_4_fx, 4, 16 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 4 ); + } + ELSE + { + idx_g = vquant_fx( y_gain_tmp, YG_mean16HR_fx, y_gain_tmp, YG_dicHR_1_fx, 4, 128 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 7 ); + + idx_g = vquant_fx( y_gain_tmp + 4, YG_mean16HR_fx + 4, y_gain_tmp + 4, YG_dicHR_2_fx, 4, 64 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + + idx_g = vquant_fx( y_gain_tmp + 8, YG_mean16HR_fx + 8, y_gain_tmp + 8, YG_dicHR_3_fx, 4, 64 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + + idx_g = vquant_fx( y_gain_tmp + 12, YG_mean16HR_16kHz_fx, y_gain_tmp + 12, YG_dicHR_4_16kHz_fx, 4, 64 ); + push_indice( hBstr, IND_Y_GAIN_TMP, idx_g, 6 ); + + idx_g = vquant_fx( y_gain_tmp + 16, YG_meanL2G_16kHz_fx, y_gain_tmp + 16, YG_dicL2G_16kHz_fx, 2, 8 ); + push_indice( hBstr, IND_Y_GAIN_HF, idx_g, 3 ); + } + } + } + + GSC_gain_DQ_fx( element_mode, ENC, coder_type, Mbands_gn, core_brate, mean_4g_fx[0], y_gain_tmp, y_gainQ ); + + return mean_4g_fx[0]; +} + + /*==========================================================================*/ /* FUNCTION : Word16 gsc_gaindec_fx () */ /*--------------------------------------------------------------------------*/ @@ -649,6 +941,7 @@ static void GSC_gain_adj_ivas_fx( /* RETURN ARGUMENTS : */ /* _ (Word16) : average frequency gain */ /*==========================================================================*/ + Word16 gsc_gaindec_fx( /* o : average frequency gain */ Decoder_State *st_fx, /* i/o: decoder state structure */ Word16 y_gainQ_fx[], /* o : quantized gain per band */ @@ -786,6 +1079,7 @@ Word16 gsc_gaindec_fx( /* o : average frequency gai return mean_4g_fx; } + /*==========================================================================*/ /* FUNCTION : Word16 gsc_gaindec_ivas_fx () */ /*--------------------------------------------------------------------------*/ @@ -806,6 +1100,7 @@ Word16 gsc_gaindec_fx( /* o : average frequency gai /* RETURN ARGUMENTS : */ /* _ (Word16) : average frequency gain */ /*==========================================================================*/ + Word16 gsc_gaindec_ivas_fx( /* o : average frequency gain */ Decoder_State *st_fx, /* i/o: decoder state structure */ Word16 y_gainQ_fx[], /* o : quantized gain per band Q12 */ @@ -970,11 +1265,13 @@ Word16 gsc_gaindec_ivas_fx( /* o : average frequenc return mean_4g_fx; } + /*-------------------------------------------------------------------* * gsc_gainQ() * * Quantization of the energy per band *-------------------------------------------------------------------*/ + Word16 gsc_gainQ_fx( /*Q12*/ BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ const Word16 y_gain4[], /* i : Energy per band Q12 */ @@ -1200,11 +1497,14 @@ Word16 gsc_gainQ_fx( /*Q12*/ return mean_4g[0]; /*Q12*/ } + + /*-------------------------------------------------------------------* * VDQ_vec() * * Return the dequantized vector of index *-------------------------------------------------------------------*/ + static Word16 VDQ_vec_fx( Word16 *Qvec_out_fx, /* o: Quanitzed vector */ const Word16 *mean_dic_fx, /* i: average codebook */ diff --git a/lib_com/hq2_core_com.c b/lib_com/hq2_core_com.c deleted file mode 100644 index 121dae06a..000000000 --- a/lib_com/hq2_core_com.c +++ /dev/null @@ -1,177 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include -#include "cnst.h" -#include "rom_com.h" -#include "prot_fx.h" -#include "basop_util.h" -#include "basop_proto_func.h" -#include "wmc_auto.h" - - -#define WMC_TOOL_SKIP -void bit_allocation_second_fx2( - Word32 *Rk, /* Q16 */ - Word32 *Rk_sort, /* Q16 */ - Word16 BANDS, /* Q0 */ - const Word16 *band_width, /* Q0 */ - Word16 *k_sort, /* Q0 */ - Word16 *k_num, /* Q0 */ - const Word16 *p2a_flags, /* Q0 */ - const Word16 p2a_bands, /* Q0 */ - const Word16 *last_bitalloc, /* Q0 */ - const Word16 input_frame /* Q0 */ -) -{ - Word16 k, k2 = 0; - Word16 ever_bits[BANDS_MAX], ever_sort[BANDS_MAX]; /*Q12 */ - Word16 class_flag = 0; - Word16 rk_temp = 32767, ever_temp = 32767; /*Q12 */ - Word16 exp; - Word16 tmp; - Word32 L_tmp; - move16(); - move16(); - move16(); - move16(); - - - FOR( k = 0; k < BANDS; k++ ) - { - test(); - test(); - IF( ( ( sub( k_sort[k], sub( BANDS, p2a_bands ) ) >= 0 ) && ( sub( p2a_flags[k_sort[k]], 1 ) == 0 ) ) || - ( ( sub( k_sort[k], ( BANDS - 2 ) ) >= 0 ) && ( sub( last_bitalloc[k_sort[k] - ( BANDS - 2 )], 1 ) == 0 ) ) ) - { - exp = norm_s( band_width[k_sort[k]] ); - tmp = shl( band_width[k_sort[k]], exp ); /*Q(exp) */ - tmp = div_s( 16384, tmp ); /*Q(15+14-exp = 29-exp) */ - L_tmp = Mult_32_16( Rk_sort[k], tmp ); /* Q(16+29-exp-15 = 30-exp) */ - tmp = sub( 18, exp ); - ever_bits[k] = extract_l( L_shr( L_tmp, tmp ) ); /*Q12 */ - if ( sub( ever_bits[k], rk_temp ) < 0 ) - { - rk_temp = ever_bits[k]; /* Q12 */ - k2 = k; - move16(); - move16(); - } - class_flag = 1; - move16(); - } - } - IF( class_flag == 0 || sub( input_frame, L_FRAME8k ) == 0 ) - { - FOR( k = 0; k < BANDS; k++ ) - { - test(); - IF( sub( k_sort[k], sub( BANDS, p2a_bands ) ) < 0 && Rk_sort[k] > 0 ) - { - exp = norm_s( band_width[k_sort[k]] ); - tmp = shl( band_width[k_sort[k]], exp ); /*Q(exp) */ - tmp = div_s( 16384, tmp ); /*Q(15+14-exp = 29-exp) */ - L_tmp = Mult_32_16( Rk_sort[k], tmp ); /* Q(16+29-exp-15 = 30-exp) */ - tmp = sub( 18, exp ); - ever_sort[k] = extract_l( L_shr( L_tmp, tmp ) ); /*Q12 */ - move16(); - IF( sub( ever_sort[k], ever_temp ) < 0 ) - { - ever_temp = ever_sort[k]; /* Q12 */ - move16(); - k2 = k; - move16(); - } - } - } - } - - k_num[0] = k2; - move16(); - IF( sub( k_sort[k2], sub( BANDS, 1 ) ) == 0 ) - { - FOR( k = 0; k < BANDS; k++ ) - { - IF( sub( k_sort[k], sub( k_sort[k2], 1 ) ) == 0 ) - { - k_num[1] = k; /* Q0 */ - move16(); - } - } - } - ELSE IF( k_sort[k2] == 0 ) - { - FOR( k = 0; k < BANDS; k++ ) - { - IF( sub( k_sort[k], add( k_sort[k2], 1 ) ) == 0 ) - { - k_num[1] = k; /* Q0 */ - move16(); - } - } - } - ELSE - { - IF( L_sub( Rk[sub( k_sort[k2], 1 )], Rk[add( k_sort[k2], 1 )] ) < 0 ) - { - FOR( k = 0; k < BANDS; k++ ) - { - IF( sub( k_sort[k], sub( k_sort[k2], 1 ) ) == 0 ) - { - k_num[1] = k; /* Q0 */ - move16(); - } - } - } - ELSE - { - FOR( k = 0; k < BANDS; k++ ) - { - IF( sub( k_sort[k], add( k_sort[k2], 1 ) ) == 0 ) - { - k_num[1] = k; /* Q0 */ - move16(); - } - } - } - } - - return; -} - -#undef WMC_TOOL_SKIP diff --git a/lib_com/hq_conf.c b/lib_com/hq_conf.c deleted file mode 100644 index 90a256cea..000000000 --- a/lib_com/hq_conf.c +++ /dev/null @@ -1,303 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include "cnst.h" -#include "rom_com.h" -#include "prot_fx.h" -#include "wmc_auto.h" - - -void hq_configure_fx( - const Word16 length, /* i : Frame length Q0 */ - const Word16 hqswb_clas, /* i : HQ SWB class Q0 */ - const Word32 core_brate, /* i : Codec bitrate Q0 */ - Word16 *num_sfm, /* o : Total number of subbands Q0 */ - Word16 *nb_sfm, /* o : Total number of coded bands Q0 */ - Word16 *start_norm, /* o : First norm to be SDE encoded Q0 */ - Word16 *num_env_bands, /* o : Number coded envelope bands Q0 */ - Word16 *numnrmibits, /* o : Number of bits in fall-back norm encoding Q0 */ - Word16 *hq_generic_offset, /* o : Freq offset for HQ GENERIC Q0 */ - Word16 *sfmsize, /* o : Subband bandwidths Q0 */ - Word16 *sfm_start, /* o : Subband start coefficients Q0 */ - Word16 *sfm_end /* o : Subband end coefficients Q0 */ -) -{ - const Word16 *p_sfmsize; - const Word16 *p_sfm_start; - const Word16 *p_sfm_end; - Word16 i, bw_ext; - - bw_ext = 0; - move16(); - - *start_norm = 0; - move16(); - - IF( EQ_16( length, L_SPEC48k ) ) - { - IF( EQ_16( hqswb_clas, HQ_GEN_FB ) ) - { - *num_sfm = NB_SFM; - move16(); - p_sfmsize = band_len_HQ; /* Q0 */ - p_sfm_start = band_start_HQ; /* Q0 */ - p_sfm_end = band_end_HQ; /* Q0 */ - - IF( GE_32( core_brate, HQ_32k ) ) - { - *hq_generic_offset = HQ_GENERIC_FOFFSET_32K; - move16(); - *num_env_bands = SFM_N_STA_10k; - move16(); - } - ELSE /*IF(EQ_32(core_brate, HQ_16k40) || EQ_32(core_brate, HQ_24k40))*/ - { - *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4; - *num_env_bands = SFM_N_STA_8k; - move16(); - move16(); - } - *nb_sfm = *num_sfm; - move16(); - } - ELSE - { - IF( EQ_16( hqswb_clas, HQ_HARMONIC ) ) - { - *num_sfm = SFM_N_HARM_FB; - move16(); - *nb_sfm = SFM_N_HARM_FB; - move16(); - *num_env_bands = SFM_N_HARM_FB; - move16(); - - p_sfmsize = band_len_harm; /* Q0 */ - p_sfm_start = band_start_harm; /* Q0 */ - p_sfm_end = band_end_harm; /* Q0 */ - } - ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) ) - { - IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) ) - { - *num_sfm = SFM_N_HARM_FB; - move16(); - *nb_sfm = HVQ_THRES_SFM_24k; - move16(); - *num_env_bands = sub( *num_sfm, *nb_sfm ); - move16(); - *start_norm = HVQ_THRES_SFM_24k; - move16(); - } - ELSE - { - *num_sfm = SFM_N_HARM_FB; - move16(); - *nb_sfm = HVQ_THRES_SFM_32k; - move16(); - *num_env_bands = sub( *num_sfm, *nb_sfm ); - move16(); - *start_norm = HVQ_THRES_SFM_32k; - move16(); - } - p_sfmsize = band_len_harm; /* Q0 */ - p_sfm_start = band_start_harm; /* Q0 */ - p_sfm_end = band_end_harm; /* Q0 */ - } - ELSE - { - *num_sfm = NB_SFM; - move16(); - *nb_sfm = *num_sfm; /* Q0 */ - move16(); - *num_env_bands = NB_SFM; - move16(); - - p_sfmsize = band_len_HQ; /* Q0 */ - p_sfm_start = band_start_HQ; /* Q0 */ - p_sfm_end = band_end_HQ; /* Q0 */ - } - } - } - ELSE IF( EQ_16( length, L_SPEC32k ) ) - { - IF( EQ_16( hqswb_clas, HQ_HARMONIC ) ) - { - *num_sfm = SFM_N_HARM; - move16(); - *nb_sfm = SFM_N_HARM; - move16(); - *num_env_bands = SFM_N_HARM; - move16(); - - p_sfmsize = band_len_harm; /* Q0 */ - p_sfm_start = band_start_harm; /* Q0 */ - p_sfm_end = band_end_harm; /* Q0 */ - } - ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) ) - { - IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) ) - { - *num_sfm = SFM_N_HARM; - move16(); - *nb_sfm = HVQ_THRES_SFM_24k; - move16(); - *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */ - move16(); - - *start_norm = HVQ_THRES_SFM_24k; - move16(); - } - ELSE - { - *num_sfm = SFM_N_HARM; - move16(); - *nb_sfm = HVQ_THRES_SFM_32k; - move16(); - *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */ - move16(); - - *start_norm = HVQ_THRES_SFM_32k; - move16(); - } - p_sfmsize = band_len_harm; - p_sfm_start = band_start_harm; - p_sfm_end = band_end_harm; - } - ELSE IF( EQ_16( hqswb_clas, HQ_GEN_SWB ) ) - { - *num_sfm = SFM_N_SWB; - move16(); - p_sfmsize = band_len_HQ; /* Q0 */ - p_sfm_start = band_start_HQ; /* Q0 */ - p_sfm_end = band_end_HQ; /* Q0 */ - - IF( GE_32( core_brate, HQ_32k ) ) - { - *hq_generic_offset = HQ_GENERIC_FOFFSET_32K; - move16(); - *num_env_bands = SFM_N_STA_10k; - move16(); - } - ELSE /*if( EQ_32(core_brate, HQ_24k40))*/ - { - *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4; - move16(); - *num_env_bands = SFM_N_STA_8k; - move16(); - } - - *nb_sfm = *num_sfm; - move16(); - } - ELSE - { - /* HQ_NORMAL and HQ_TRANSIENT */ - *num_sfm = SFM_N_SWB; - move16(); - *nb_sfm = *num_sfm; - move16(); - *num_env_bands = SFM_N_SWB; - move16(); - - p_sfmsize = band_len_HQ; /* Q0 */ - p_sfm_start = band_start_HQ; /* Q0 */ - p_sfm_end = band_end_HQ; /* Q0 */ - } - } - ELSE IF( EQ_16( length, L_SPEC48k_EXT ) ) - { - bw_ext = 1; - p_sfmsize = band_len_HQ; /* Q0 */ - p_sfm_start = band_start_HQ; /* Q0 */ - p_sfm_end = band_end_HQ; /* Q0 */ - *num_sfm = NB_SFM; - } - ELSE IF( EQ_16( length, L_SPEC16k_EXT ) ) - { - bw_ext = 1; - move16(); - p_sfmsize = band_len_wb; /* Q0 */ - p_sfm_start = band_start_wb; /* Q0 */ - p_sfm_end = band_end_wb; /* Q0 */ - *num_sfm = SFM_N_WB; - move16(); - } - ELSE - { - *num_sfm = SFM_N_WB; - move16(); - *nb_sfm = *num_sfm; /* Q0 */ - move16(); - *num_env_bands = SFM_N_WB; - move16(); - - p_sfmsize = band_len_wb; /* Q0 */ - p_sfm_start = band_start_wb; /* Q0 */ - p_sfm_end = band_end_wb; /* Q0 */ - } - IF( bw_ext ) - { - FOR( i = 0; i < *num_sfm; i++ ) - { - /*sfmsize[i] = (int16_t)(1.25f * p_sfmsize[i]);*/ - sfmsize[i] = mult_r( shl( p_sfmsize[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */ - move16(); - /*sfm_start[i] = (int16_t)(1.25f * p_sfm_start[i]);*/ - sfm_start[i] = mult_r( shl( p_sfm_start[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */ - move16(); - /*sfm_end[i] = (int16_t)(1.25f * p_sfm_end[i]);*/ - sfm_end[i] = mult_r( shl( p_sfm_end[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */ - move16(); - } - *nb_sfm = *num_sfm; /* Q0 */ - *num_env_bands = *num_sfm; /* Q0 */ - move16(); - move16(); - } - ELSE - { - Copy( p_sfmsize, sfmsize, *num_sfm ); - Copy( p_sfm_start, sfm_start, *num_sfm ); - Copy( p_sfm_end, sfm_end, *num_sfm ); - } - - *numnrmibits = extract_l( L_mult0( sub( *num_env_bands, 1 ), NORMI_BITS ) ); - move16(); - - return; -} diff --git a/lib_com/hq_conf_fx.c b/lib_com/hq_conf_fx.c index f6a01adfc..b40062448 100644 --- a/lib_com/hq_conf_fx.c +++ b/lib_com/hq_conf_fx.c @@ -8,6 +8,7 @@ #include "rom_com.h" /* Static table prototypes */ #include "prot_fx.h" /* Function prototypes */ #include "ivas_prot_fx.h" +#include "wmc_auto.h" /*--------------------------------------------------------------------------* * hq_configure() @@ -538,3 +539,263 @@ void hq_configure_evs_fx( return; } + +void hq_configure_fx( + const Word16 length, /* i : Frame length Q0 */ + const Word16 hqswb_clas, /* i : HQ SWB class Q0 */ + const Word32 core_brate, /* i : Codec bitrate Q0 */ + Word16 *num_sfm, /* o : Total number of subbands Q0 */ + Word16 *nb_sfm, /* o : Total number of coded bands Q0 */ + Word16 *start_norm, /* o : First norm to be SDE encoded Q0 */ + Word16 *num_env_bands, /* o : Number coded envelope bands Q0 */ + Word16 *numnrmibits, /* o : Number of bits in fall-back norm encoding Q0 */ + Word16 *hq_generic_offset, /* o : Freq offset for HQ GENERIC Q0 */ + Word16 *sfmsize, /* o : Subband bandwidths Q0 */ + Word16 *sfm_start, /* o : Subband start coefficients Q0 */ + Word16 *sfm_end /* o : Subband end coefficients Q0 */ +) +{ + const Word16 *p_sfmsize; + const Word16 *p_sfm_start; + const Word16 *p_sfm_end; + Word16 i, bw_ext; + + bw_ext = 0; + move16(); + + *start_norm = 0; + move16(); + + IF( EQ_16( length, L_SPEC48k ) ) + { + IF( EQ_16( hqswb_clas, HQ_GEN_FB ) ) + { + *num_sfm = NB_SFM; + move16(); + p_sfmsize = band_len_HQ; /* Q0 */ + p_sfm_start = band_start_HQ; /* Q0 */ + p_sfm_end = band_end_HQ; /* Q0 */ + + IF( GE_32( core_brate, HQ_32k ) ) + { + *hq_generic_offset = HQ_GENERIC_FOFFSET_32K; + move16(); + *num_env_bands = SFM_N_STA_10k; + move16(); + } + ELSE /*IF(EQ_32(core_brate, HQ_16k40) || EQ_32(core_brate, HQ_24k40))*/ + { + *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4; + *num_env_bands = SFM_N_STA_8k; + move16(); + move16(); + } + *nb_sfm = *num_sfm; + move16(); + } + ELSE + { + IF( EQ_16( hqswb_clas, HQ_HARMONIC ) ) + { + *num_sfm = SFM_N_HARM_FB; + move16(); + *nb_sfm = SFM_N_HARM_FB; + move16(); + *num_env_bands = SFM_N_HARM_FB; + move16(); + + p_sfmsize = band_len_harm; /* Q0 */ + p_sfm_start = band_start_harm; /* Q0 */ + p_sfm_end = band_end_harm; /* Q0 */ + } + ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) ) + { + IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) ) + { + *num_sfm = SFM_N_HARM_FB; + move16(); + *nb_sfm = HVQ_THRES_SFM_24k; + move16(); + *num_env_bands = sub( *num_sfm, *nb_sfm ); + move16(); + *start_norm = HVQ_THRES_SFM_24k; + move16(); + } + ELSE + { + *num_sfm = SFM_N_HARM_FB; + move16(); + *nb_sfm = HVQ_THRES_SFM_32k; + move16(); + *num_env_bands = sub( *num_sfm, *nb_sfm ); + move16(); + *start_norm = HVQ_THRES_SFM_32k; + move16(); + } + p_sfmsize = band_len_harm; /* Q0 */ + p_sfm_start = band_start_harm; /* Q0 */ + p_sfm_end = band_end_harm; /* Q0 */ + } + ELSE + { + *num_sfm = NB_SFM; + move16(); + *nb_sfm = *num_sfm; /* Q0 */ + move16(); + *num_env_bands = NB_SFM; + move16(); + + p_sfmsize = band_len_HQ; /* Q0 */ + p_sfm_start = band_start_HQ; /* Q0 */ + p_sfm_end = band_end_HQ; /* Q0 */ + } + } + } + ELSE IF( EQ_16( length, L_SPEC32k ) ) + { + IF( EQ_16( hqswb_clas, HQ_HARMONIC ) ) + { + *num_sfm = SFM_N_HARM; + move16(); + *nb_sfm = SFM_N_HARM; + move16(); + *num_env_bands = SFM_N_HARM; + move16(); + + p_sfmsize = band_len_harm; /* Q0 */ + p_sfm_start = band_start_harm; /* Q0 */ + p_sfm_end = band_end_harm; /* Q0 */ + } + ELSE IF( EQ_16( hqswb_clas, HQ_HVQ ) ) + { + IF( LT_32( core_brate, HQ_BWE_CROSSOVER_BRATE ) ) + { + *num_sfm = SFM_N_HARM; + move16(); + *nb_sfm = HVQ_THRES_SFM_24k; + move16(); + *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */ + move16(); + + *start_norm = HVQ_THRES_SFM_24k; + move16(); + } + ELSE + { + *num_sfm = SFM_N_HARM; + move16(); + *nb_sfm = HVQ_THRES_SFM_32k; + move16(); + *num_env_bands = sub( *num_sfm, *nb_sfm ); /* Q0 */ + move16(); + + *start_norm = HVQ_THRES_SFM_32k; + move16(); + } + p_sfmsize = band_len_harm; + p_sfm_start = band_start_harm; + p_sfm_end = band_end_harm; + } + ELSE IF( EQ_16( hqswb_clas, HQ_GEN_SWB ) ) + { + *num_sfm = SFM_N_SWB; + move16(); + p_sfmsize = band_len_HQ; /* Q0 */ + p_sfm_start = band_start_HQ; /* Q0 */ + p_sfm_end = band_end_HQ; /* Q0 */ + + IF( GE_32( core_brate, HQ_32k ) ) + { + *hq_generic_offset = HQ_GENERIC_FOFFSET_32K; + move16(); + *num_env_bands = SFM_N_STA_10k; + move16(); + } + ELSE /*if( EQ_32(core_brate, HQ_24k40))*/ + { + *hq_generic_offset = HQ_GENERIC_FOFFSET_24K4; + move16(); + *num_env_bands = SFM_N_STA_8k; + move16(); + } + + *nb_sfm = *num_sfm; + move16(); + } + ELSE + { + /* HQ_NORMAL and HQ_TRANSIENT */ + *num_sfm = SFM_N_SWB; + move16(); + *nb_sfm = *num_sfm; + move16(); + *num_env_bands = SFM_N_SWB; + move16(); + + p_sfmsize = band_len_HQ; /* Q0 */ + p_sfm_start = band_start_HQ; /* Q0 */ + p_sfm_end = band_end_HQ; /* Q0 */ + } + } + ELSE IF( EQ_16( length, L_SPEC48k_EXT ) ) + { + bw_ext = 1; + p_sfmsize = band_len_HQ; /* Q0 */ + p_sfm_start = band_start_HQ; /* Q0 */ + p_sfm_end = band_end_HQ; /* Q0 */ + *num_sfm = NB_SFM; + } + ELSE IF( EQ_16( length, L_SPEC16k_EXT ) ) + { + bw_ext = 1; + move16(); + p_sfmsize = band_len_wb; /* Q0 */ + p_sfm_start = band_start_wb; /* Q0 */ + p_sfm_end = band_end_wb; /* Q0 */ + *num_sfm = SFM_N_WB; + move16(); + } + ELSE + { + *num_sfm = SFM_N_WB; + move16(); + *nb_sfm = *num_sfm; /* Q0 */ + move16(); + *num_env_bands = SFM_N_WB; + move16(); + + p_sfmsize = band_len_wb; /* Q0 */ + p_sfm_start = band_start_wb; /* Q0 */ + p_sfm_end = band_end_wb; /* Q0 */ + } + IF( bw_ext ) + { + FOR( i = 0; i < *num_sfm; i++ ) + { + /*sfmsize[i] = (int16_t)(1.25f * p_sfmsize[i]);*/ + sfmsize[i] = mult_r( shl( p_sfmsize[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */ + move16(); + /*sfm_start[i] = (int16_t)(1.25f * p_sfm_start[i]);*/ + sfm_start[i] = mult_r( shl( p_sfm_start[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */ + move16(); + /*sfm_end[i] = (int16_t)(1.25f * p_sfm_end[i]);*/ + sfm_end[i] = mult_r( shl( p_sfm_end[i], 1 ), 20480 /* 1.25 in Q14 */ ); /* Q0 */ + move16(); + } + *nb_sfm = *num_sfm; /* Q0 */ + *num_env_bands = *num_sfm; /* Q0 */ + move16(); + move16(); + } + ELSE + { + Copy( p_sfmsize, sfmsize, *num_sfm ); + Copy( p_sfm_start, sfm_start, *num_sfm ); + Copy( p_sfm_end, sfm_end, *num_sfm ); + } + + *numnrmibits = extract_l( L_mult0( sub( *num_env_bands, 1 ), NORMI_BITS ) ); + move16(); + + return; +} diff --git a/lib_com/ifft_rel.c b/lib_com/ifft_rel_fx.c similarity index 100% rename from lib_com/ifft_rel.c rename to lib_com/ifft_rel_fx.c diff --git a/lib_com/int_lsp.c b/lib_com/int_lsp_fx.c similarity index 100% rename from lib_com/int_lsp.c rename to lib_com/int_lsp_fx.c diff --git a/lib_com/interleave_spectrum.c b/lib_com/interleave_spectrum_fx.c similarity index 100% rename from lib_com/interleave_spectrum.c rename to lib_com/interleave_spectrum_fx.c diff --git a/lib_com/interpol.c b/lib_com/interpol_fx.c similarity index 100% rename from lib_com/interpol.c rename to lib_com/interpol_fx.c diff --git a/lib_com/ivas_mcmasa_com-fx.c b/lib_com/ivas_mcmasa_com_fx.c similarity index 100% rename from lib_com/ivas_mcmasa_com-fx.c rename to lib_com/ivas_mcmasa_com_fx.c diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 8b6cdcac9..928736427 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -2127,13 +2127,6 @@ void small_reduction_direction_fx( const Word16 raw_flag[MASA_MAXIMUM_CODING_SUBBANDS], Word16 *diff ); - -void sort_desc_ind_16_fx( - Word16 *s, /* i/o: vector to be sorted Qx*/ - const Word16 len, /* i : vector length */ - Word16 *ind /* o : array of indices */ -); - void sort_desc_ind_32_fx( Word32 *s, /* i/o: vector to be sorted Qx*/ const Word16 len, /* i : vector length */ @@ -6205,7 +6198,7 @@ void ivas_param_ism_compute_noisy_speech_flag_fx( * DFT Stereo prototypes *----------------------------------------------------------------------------------*/ -void stereo_dft_dec_destroy( +void stereo_dft_dec_destroy_fx( STEREO_DFT_DEC_DATA_HANDLE *hStereoDft /* i/o: decoder DFT stereo handle */ ); diff --git a/lib_com/lag_wind.c b/lib_com/lag_wind_fx.c similarity index 100% rename from lib_com/lag_wind.c rename to lib_com/lag_wind_fx.c diff --git a/lib_com/lerp.c b/lib_com/lerp_fx.c similarity index 100% rename from lib_com/lerp.c rename to lib_com/lerp_fx.c diff --git a/lib_com/modif_fs.c b/lib_com/modif_fs.c deleted file mode 100644 index 10e64a57d..000000000 --- a/lib_com/modif_fs.c +++ /dev/null @@ -1,469 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include -#include "cnst.h" -#include "prot_fx.h" -#include "rom_com.h" -#include "wmc_auto.h" - - -/* IVAS 32-bit variant */ -void Interpolate_allpass_steep_fx32( - const Word32 *in_fx, /* i : input array of size N Qx */ - Word32 *mem_fx, /* i/o: memory Qx */ - const Word16 N, /* i : number of input samples */ - Word32 *out_fx /* o : output array of size 2*N Qx */ -) -{ - Word16 n, k; - Word32 temp_fx[ALLPASSSECTIONS_STEEP - 1]; - - /* upper allpass filter chain */ - FOR( k = 0; k < N; k++ ) - { - temp_fx[0] = Madd_32_16( mem_fx[0], in_fx[k], AP2_STEEP_FX[0] ); // Qx - move32(); - mem_fx[0] = Msub_32_16( in_fx[k], temp_fx[0], AP2_STEEP_FX[0] ); // Qx - move32(); - - /* for better performance, unroll this loop */ - FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) - { - temp_fx[n] = Madd_32_16( mem_fx[n], temp_fx[n - 1], AP2_STEEP_FX[n] ); // Qx - move32(); - mem_fx[n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP2_STEEP_FX[n] ); // Qx - move32(); - } - - out_fx[2 * k + 1] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); - mem_fx[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k + 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); - } - - /* lower allpass filter chain */ - FOR( k = 0; k < N; k++ ) - { - temp_fx[0] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP], in_fx[k], AP1_STEEP_FX[0] ); // Qx - move32(); - mem_fx[ALLPASSSECTIONS_STEEP] = Msub_32_16( in_fx[k], temp_fx[0], AP1_STEEP_FX[0] ); // Qx - move32(); - - /* for better performance, unroll this loop */ - FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) - { - temp_fx[n] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP + n], temp_fx[n - 1], AP1_STEEP_FX[n] ); // Qx - move32(); - mem_fx[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP1_STEEP_FX[n] ); // Qx - move32(); - } - - out_fx[2 * k] = Madd_32_16( mem_fx[2 * ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); - mem_fx[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); - } - - return; -} - -/* IVAS 32-bit variant */ -void Decimate_allpass_steep_fx32( - const Word32 *in, /* i : input array of size N Qx */ - Word32 *mem, /* i/o: memory Qx */ - const Word16 N, /* i : number of input samples */ - Word32 *out /* o : output array of size N/2 Qx */ -) -{ - Word16 n, k; - Word32 temp[ALLPASSSECTIONS_STEEP]; - - /* upper allpass filter chain */ - FOR( k = 0; k < N / 2; k++ ) - { -#ifdef OPT_STEREO_32KBPS_V1 - temp[0] = Madd_32_16( mem[0], in[2 * k], AP1_STEEP_FX[0] ); // Qx - move32(); - mem[0] = Msub_32_16( in[2 * k], temp[0], AP1_STEEP_FX[0] ); // Qx - move32(); - - temp[1] = Madd_32_16( mem[1], temp[0], AP1_STEEP_FX[1] ); // Qx - move32(); - mem[1] = Msub_32_16( temp[0], temp[1], AP1_STEEP_FX[1] ); // Qx - move32(); - - out[k] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - temp[0] = L_add( mem[0], Mpy_32_16_1( in[2 * k], AP1_STEEP_FX[0] ) ); // Qx - move32(); - mem[0] = L_sub( in[2 * k], Mpy_32_16_1( temp[0], AP1_STEEP_FX[0] ) ); // Qx - move32(); - - temp[1] = L_add( mem[1], Mpy_32_16_1( temp[0], AP1_STEEP_FX[1] ) ); // Qx - move32(); - mem[1] = L_sub( temp[0], Mpy_32_16_1( temp[1], AP1_STEEP_FX[1] ) ); // Qx - move32(); - - out[k] = L_add( mem[ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - } - - /* lower allpass filter chain */ -#ifdef OPT_STEREO_32KBPS_V1 - temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( mem[2 * ALLPASSSECTIONS_STEEP], temp[0], AP2_STEEP_FX[0] ); // Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ) ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP] = L_sub( mem[2 * ALLPASSSECTIONS_STEEP], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - - /* for better performance, unroll this loop */ - FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) - { -#ifdef OPT_STEREO_32KBPS_V1 - temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP + 1] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx - move32(); - /*if ( fabs( temp[n] ) < 1e-12 ) - { - temp[n] = sign( temp[n] ) * 1e-12f; - }*/ - mem[ALLPASSSECTIONS_STEEP + 1] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - } - -#ifdef OPT_STEREO_32KBPS_V1 - temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); - - mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx - move32(); - - mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - out[0] = W_round48_L( W_mac_32_16( W_mult_32_16( out[0], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx - move32(); - - FOR( k = 1; k < N / 2; k++ ) - { -#ifdef OPT_STEREO_32KBPS_V1 - temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], in[2 * k - 1], AP2_STEEP_FX[0] ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( in[2 * k - 1], temp[0], AP2_STEEP_FX[0] ); // Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( in[sub( shl( k, 1 ), 1 )], AP2_STEEP_FX[0] ) ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP] = L_sub( in[sub( shl( k, 1 ), 1 )], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - - /* for better performance, unroll this loop */ - FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) - { -#ifdef OPT_STEREO_32KBPS_V1 - temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx - move32(); - mem[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx - move32(); - /*if ( fabs( temp[n] ) < 1e-12 ) - { - temp[n] = sign( temp[n] ) * 1e-12f; - }*/ - mem[ALLPASSSECTIONS_STEEP + n] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - } - -#ifdef OPT_STEREO_32KBPS_V1 - temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); - mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx - move32(); - mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - out[k] = W_round48_L( W_mac_32_16( W_mult_32_16( out[k], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx - move32(); - } - - /* z^(-1) */ - mem[2 * ALLPASSSECTIONS_STEEP] = in[N - 1]; - move32(); - - return; -} - -/* IVAS 32-bit variant */ -void interpolate_3_over_2_allpass_fx32( - const Word32 *input, /* i : input signal Qx*/ - const Word16 len, /* i : number of input samples */ - Word32 *out, /* o : output signal Qx*/ - Word32 *mem /* i/o: memory Qx*/ -) -{ - Word16 i, loop_len; - Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */ - Word32 out1_buff[L_FRAME32k * 3]; - Word32 *out1; - Word32 mem_temp; - const Word16 *filt_coeff = allpass_poles_3_ov_2; // Q15 - - out1 = out1_buff; - - FOR( i = 0; i < len; i++ ) - { - /* Upper branch */ -#ifdef OPT_STEREO_32KBPS_V1 - Vu[0] = Madd_32_16( mem[0], L_sub( input[i], mem[1] ), filt_coeff[0] ); // Qx + Q15 - Q15 -> Qx - move32(); - Vu[1] = Madd_32_16( mem[1], L_sub( Vu[0], mem[2] ), filt_coeff[1] ); // Qx + Q15 - Q15 -> Qx - move32(); - mem[3] = Madd_32_16( mem[2], L_sub( Vu[1], mem[3] ), filt_coeff[2] ); // Qx + Q15 - Q15 -> Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - Vu[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx + Q15 - Q15 -> Qx - move32(); - Vu[1] = L_add( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx + Q15 - Q15 -> Qx - move32(); - mem[3] = L_add( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx + Q15 - Q15 -> Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - - mem[1] = Vu[0]; // Qx - move32(); - mem[2] = Vu[1]; // Qx - move32(); - *out1++ = mem[3]; // Qx - move32(); - - /* Middle branch */ -#ifdef OPT_STEREO_32KBPS_V1 - Vm[0] = Madd_32_16( mem[0], L_sub( input[i], mem[4] ), filt_coeff[3] ); // Qx + Q15 - Q15 -> Qx - move32(); - Vm[1] = Madd_32_16( mem[4], L_sub( Vm[0], mem[5] ), filt_coeff[4] ); // Qx + Q15 - Q15 -> Qx - move32(); - mem[6] = Madd_32_16( mem[5], L_sub( Vm[1], mem[6] ), filt_coeff[5] ); // Qx + Q15 - Q15 -> Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - Vm[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx + Q15 - Q15 -> Qx - move32(); - Vm[1] = L_add( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx + Q15 - Q15 -> Qx - move32(); - mem[6] = L_add( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx + Q15 - Q15 -> Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - - mem[4] = Vm[0]; // Qx - move32(); - mem[5] = Vm[1]; // Qx - move32(); - *out1++ = mem[6]; // Qx - move32(); - - /* Lower branch */ -#ifdef OPT_STEREO_32KBPS_V1 - Vl[0] = Madd_32_16( mem[0], L_sub( input[i], mem[7] ), filt_coeff[6] ); // Qx + Q15 - Q15 -> Qx - move32(); - Vl[1] = Madd_32_16( mem[7], L_sub( Vl[0], mem[8] ), filt_coeff[7] ); // Qx + Q15 - Q15 -> Qx - move32(); - mem[9] = Madd_32_16( mem[8], L_sub( Vl[1], mem[9] ), filt_coeff[8] ); // Qx + Q15 - Q15 -> Qx - move32(); -#else /* OPT_STEREO_32KBPS_V1 */ - Vl[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx + Q15 - Q15 -> Qx - move32(); - Vl[1] = L_add( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx + Q15 - Q15 -> Qx - move32(); - mem[9] = L_add( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx + Q15 - Q15 -> Qx - move32(); -#endif /* OPT_STEREO_32KBPS_V1 */ - - mem[0] = input[i]; // Qx - move32(); - mem[7] = Vl[0]; // Qx - move32(); - mem[8] = Vl[1]; // Qx - move32(); - *out1++ = mem[9]; // Qx - move32(); - } - - loop_len = shr( i_mult( len, 3 ), 1 ); - - /*decimate by 2 and LPF*/ - FOR( i = 0; i < loop_len; i++ ) - { - mem_temp = out1_buff[2 * i]; - move32(); -#ifdef OPT_STEREO_32KBPS_V1 - out[i] = Madd_32_16( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), L_add( mem[11], mem[14] ), -4965 ); // Qx + Q15 - Q15 -> Qx - // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965 - out[i] = Madd_32_16( out[i], L_add( mem[12], mem[13] ), 20125 ); - // 0.614152f in Q15 -> 20125 -#else /* OPT_STEREO_32KBPS_V1 */ - out[i] = L_add( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), Mpy_32_16_1( L_add( mem[11], mem[14] ), -4965 ) ); // Qx + Q15 - Q15 -> Qx - // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965 - out[i] = L_add( out[i], Mpy_32_16_1( L_add( mem[12], mem[13] ), 20125 ) ); - // 0.614152f in Q15 -> 20125 -#endif /* OPT_STEREO_32KBPS_V1 */ - mem[10] = mem[11]; // Qx - move32(); - mem[11] = mem[12]; // Qx - move32(); - mem[12] = mem[13]; // Qx - move32(); - mem[13] = mem[14]; // Qx - move32(); - mem[14] = mem_temp; // Qx - move32(); - } - - return; -} - -/* IVAS 32-bit variant */ -void interpolate_3_over_1_allpass_fx32( - const Word32 *input, /* i : input signal Qx */ - const Word16 len, /* i : number of input samples */ - Word32 *out, /* o : output signal */ - Word32 *mem /* i/o: memory */ -) -{ - Word16 i, tmp16; - Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */ - Word32 *out1; - Word32 mem_temp; - const Word16 *filt_coeff = allpass_poles_3_ov_2; // Qx - - out1 = &out[0]; - - FOR( i = 0; i < len; i++ ) - { - /* Upper branch */ - Vu[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx - move32(); - Vu[1] = L_add_sat( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx - move32(); - mem[3] = L_add_sat( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx - move32(); - - mem[1] = Vu[0]; // Qx - move32(); - mem[2] = Vu[1]; // Qx - move32(); - *out1++ = mem[3]; // Qx - move32(); - - /* Middle branch */ - Vm[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx - move32(); - Vm[1] = L_add_sat( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx - move32(); - mem[6] = L_add_sat( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx - move32(); - - mem[4] = Vm[0]; // Qx - move32(); - mem[5] = Vm[1]; // Qx - move32(); - *out1++ = mem[6]; // Qx - move32(); - - /* Lower branch */ - Vl[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx - move32(); - Vl[1] = L_add_sat( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx - move32(); - mem[9] = L_add_sat( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx - move32(); - - mem[0] = input[i]; // Qx - move32(); - mem[7] = Vl[0]; // Qx - move32(); - mem[8] = Vl[1]; // Qx - move32(); - *out1++ = mem[9]; // Qx - move32(); - } - - /*LPF*/ - tmp16 = imult1616( len, 3 ); - FOR( i = 0; i < tmp16; i++ ) - { - mem_temp = out[i]; // Qx - move32(); - out[i] = L_sub_sat( Mpy_32_16_1( L_add_sat( mem[12], mem[11] ), 18768 ), Mpy_32_16_1( L_add_sat( mem_temp, mem[10] ), 2424 ) ); // Qx - // 0.572769 in Q15 -> 18768, 0.074005 in Q15 -> 2424 - move32(); - mem[10] = mem[11]; // Qx - move32(); - mem[11] = mem[12]; // Qx - move32(); - mem[12] = mem_temp; // Qx - move32(); - } - - return; -} diff --git a/lib_com/modif_fs_fx.c b/lib_com/modif_fs_fx.c index bcbff13d5..2e39af523 100644 --- a/lib_com/modif_fs_fx.c +++ b/lib_com/modif_fs_fx.c @@ -3,6 +3,7 @@ ====================================================================================*/ #include +#include #include "options.h" /* Compilation switches */ #include "cnst.h" /* Common constants */ #include "prot_fx.h" @@ -11,6 +12,8 @@ #include "rom_enc.h" /* prototypes */ #include "basop_util.h" #include "ivas_prot_fx.h" +#include "wmc_auto.h" + /*-----------------------------------------------------------------* * Local functions @@ -39,6 +42,7 @@ /*------------------------------------------------------------------------------*/ /* CALLED FROM : TX/RX */ /*==============================================================================*/ + Word16 modify_Fs_ivas_fx( /* o : length of output Q0 */ const Word16 sigIn_fx[], /* i : signal to decimate Q0 */ Word16 lg, /* i : length of input Q0 */ @@ -323,6 +327,7 @@ Word16 modify_Fs_ivas_fx( /* o : length of output Q return lg_out; } + Word16 modify_Fs_fx( /* o : length of output Q0 */ const Word16 sigIn_fx[], /* i : signal to decimate Q0 */ Word16 lg, /* i : length of input Q0 */ @@ -599,6 +604,7 @@ Word16 modify_Fs_fx( /* o : length of output Q0 */ return lg_out; } + /*-------------------------------------------------------------------* * modify_Fs_intcub3m_sup() * @@ -911,7 +917,6 @@ Word16 modify_Fs_intcub3m_sup_fx( /* o : length of output /* RETURN ARGUMENTS : _ None. */ /*===================================================================*/ - void Decimate_allpass_steep_fx( const Word16 *in_fx, Word16 mem[], /* array of size: 2*ALLPASSSECTIONS_STEEP+1 */ @@ -1040,6 +1045,158 @@ void Decimate_allpass_steep_fx( move16(); /* Qx */ } +/* IVAS 32-bit variant */ +void Decimate_allpass_steep_fx32( + const Word32 *in, /* i : input array of size N Qx */ + Word32 *mem, /* i/o: memory Qx */ + const Word16 N, /* i : number of input samples */ + Word32 *out /* o : output array of size N/2 Qx */ +) +{ + Word16 n, k; + Word32 temp[ALLPASSSECTIONS_STEEP]; + + /* upper allpass filter chain */ + FOR( k = 0; k < N / 2; k++ ) + { +#ifdef OPT_STEREO_32KBPS_V1 + temp[0] = Madd_32_16( mem[0], in[2 * k], AP1_STEEP_FX[0] ); // Qx + move32(); + mem[0] = Msub_32_16( in[2 * k], temp[0], AP1_STEEP_FX[0] ); // Qx + move32(); + + temp[1] = Madd_32_16( mem[1], temp[0], AP1_STEEP_FX[1] ); // Qx + move32(); + mem[1] = Msub_32_16( temp[0], temp[1], AP1_STEEP_FX[1] ); // Qx + move32(); + + out[k] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + temp[0] = L_add( mem[0], Mpy_32_16_1( in[2 * k], AP1_STEEP_FX[0] ) ); // Qx + move32(); + mem[0] = L_sub( in[2 * k], Mpy_32_16_1( temp[0], AP1_STEEP_FX[0] ) ); // Qx + move32(); + + temp[1] = L_add( mem[1], Mpy_32_16_1( temp[0], AP1_STEEP_FX[1] ) ); // Qx + move32(); + mem[1] = L_sub( temp[0], Mpy_32_16_1( temp[1], AP1_STEEP_FX[1] ) ); // Qx + move32(); + + out[k] = L_add( mem[ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( out[k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + } + + /* lower allpass filter chain */ +#ifdef OPT_STEREO_32KBPS_V1 + temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( mem[2 * ALLPASSSECTIONS_STEEP], temp[0], AP2_STEEP_FX[0] ); // Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( mem[2 * ALLPASSSECTIONS_STEEP], AP2_STEEP_FX[0] ) ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP] = L_sub( mem[2 * ALLPASSSECTIONS_STEEP], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + + /* for better performance, unroll this loop */ + FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) + { +#ifdef OPT_STEREO_32KBPS_V1 + temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP + 1] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx + move32(); + /*if ( fabs( temp[n] ) < 1e-12 ) + { + temp[n] = sign( temp[n] ) * 1e-12f; + }*/ + mem[ALLPASSSECTIONS_STEEP + 1] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + } + +#ifdef OPT_STEREO_32KBPS_V1 + temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); + + mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx + move32(); + + mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + out[0] = W_round48_L( W_mac_32_16( W_mult_32_16( out[0], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx + move32(); + + FOR( k = 1; k < N / 2; k++ ) + { +#ifdef OPT_STEREO_32KBPS_V1 + temp[0] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP], in[2 * k - 1], AP2_STEEP_FX[0] ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP] = Msub_32_16( in[2 * k - 1], temp[0], AP2_STEEP_FX[0] ); // Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + temp[0] = L_add( mem[ALLPASSSECTIONS_STEEP], Mpy_32_16_1( in[sub( shl( k, 1 ), 1 )], AP2_STEEP_FX[0] ) ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP] = L_sub( in[sub( shl( k, 1 ), 1 )], Mpy_32_16_1( temp[0], AP2_STEEP_FX[0] ) ); // Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + + /* for better performance, unroll this loop */ + FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) + { +#ifdef OPT_STEREO_32KBPS_V1 + temp[n] = Madd_32_16( mem[ALLPASSSECTIONS_STEEP + n], temp[n - 1], AP2_STEEP_FX[n] ); // Qx + move32(); + mem[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp[n - 1], temp[n], AP2_STEEP_FX[n] ); // Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + temp[n] = L_add( mem[ALLPASSSECTIONS_STEEP + n], Mpy_32_16_1( temp[n - 1], AP2_STEEP_FX[n] ) ); // Qx + move32(); + /*if ( fabs( temp[n] ) < 1e-12 ) + { + temp[n] = sign( temp[n] ) * 1e-12f; + }*/ + mem[ALLPASSSECTIONS_STEEP + n] = L_sub( temp[n - 1], Mpy_32_16_1( temp[n], AP2_STEEP_FX[n] ) ); // Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + } + +#ifdef OPT_STEREO_32KBPS_V1 + temp[ALLPASSSECTIONS_STEEP - 1] = Madd_32_16( mem[2 * ALLPASSSECTIONS_STEEP - 1], temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); + mem[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp[ALLPASSSECTIONS_STEEP - 2], temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + temp[ALLPASSSECTIONS_STEEP - 1] = L_add( mem[2 * ALLPASSSECTIONS_STEEP - 1], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx + move32(); + mem[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( temp[ALLPASSSECTIONS_STEEP - 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) ); // Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + out[k] = W_round48_L( W_mac_32_16( W_mult_32_16( out[k], 16384 /*0.5 in Q15*/ ), temp[ALLPASSSECTIONS_STEEP - 1], 16384 /*0.5 in Q15*/ ) ); // Qx + move32(); + } + + /* z^(-1) */ + mem[2 * ALLPASSSECTIONS_STEEP] = in[N - 1]; + move32(); + + return; +} + /*-------------------------------------------------------------------* * Interpolate_allpass_steep() @@ -1122,6 +1279,66 @@ void Interpolate_allpass_steep_fx( return; } +/* IVAS 32-bit variant */ +void Interpolate_allpass_steep_fx32( + const Word32 *in_fx, /* i : input array of size N Qx */ + Word32 *mem_fx, /* i/o: memory Qx */ + const Word16 N, /* i : number of input samples */ + Word32 *out_fx /* o : output array of size 2*N Qx */ +) +{ + Word16 n, k; + Word32 temp_fx[ALLPASSSECTIONS_STEEP - 1]; + + /* upper allpass filter chain */ + FOR( k = 0; k < N; k++ ) + { + temp_fx[0] = Madd_32_16( mem_fx[0], in_fx[k], AP2_STEEP_FX[0] ); // Qx + move32(); + mem_fx[0] = Msub_32_16( in_fx[k], temp_fx[0], AP2_STEEP_FX[0] ); // Qx + move32(); + + /* for better performance, unroll this loop */ + FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) + { + temp_fx[n] = Madd_32_16( mem_fx[n], temp_fx[n - 1], AP2_STEEP_FX[n] ); // Qx + move32(); + mem_fx[n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP2_STEEP_FX[n] ); // Qx + move32(); + } + + out_fx[2 * k + 1] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); + mem_fx[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k + 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); + } + + /* lower allpass filter chain */ + FOR( k = 0; k < N; k++ ) + { + temp_fx[0] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP], in_fx[k], AP1_STEEP_FX[0] ); // Qx + move32(); + mem_fx[ALLPASSSECTIONS_STEEP] = Msub_32_16( in_fx[k], temp_fx[0], AP1_STEEP_FX[0] ); // Qx + move32(); + + /* for better performance, unroll this loop */ + FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ ) + { + temp_fx[n] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP + n], temp_fx[n - 1], AP1_STEEP_FX[n] ); // Qx + move32(); + mem_fx[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP1_STEEP_FX[n] ); // Qx + move32(); + } + + out_fx[2 * k] = Madd_32_16( mem_fx[2 * ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); + mem_fx[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ); // Qx + move32(); + } + + return; +} + /*-------------------------------------------------------------------* * interpolate_3_over_2_allpass_fx() @@ -1250,6 +1467,133 @@ void interpolate_3_over_2_allpass_fx( return; } +/* IVAS 32-bit variant */ +void interpolate_3_over_2_allpass_fx32( + const Word32 *input, /* i : input signal Qx*/ + const Word16 len, /* i : number of input samples */ + Word32 *out, /* o : output signal Qx*/ + Word32 *mem /* i/o: memory Qx*/ +) +{ + Word16 i, loop_len; + Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */ + Word32 out1_buff[L_FRAME32k * 3]; + Word32 *out1; + Word32 mem_temp; + const Word16 *filt_coeff = allpass_poles_3_ov_2; // Q15 + + out1 = out1_buff; + + FOR( i = 0; i < len; i++ ) + { + /* Upper branch */ +#ifdef OPT_STEREO_32KBPS_V1 + Vu[0] = Madd_32_16( mem[0], L_sub( input[i], mem[1] ), filt_coeff[0] ); // Qx + Q15 - Q15 -> Qx + move32(); + Vu[1] = Madd_32_16( mem[1], L_sub( Vu[0], mem[2] ), filt_coeff[1] ); // Qx + Q15 - Q15 -> Qx + move32(); + mem[3] = Madd_32_16( mem[2], L_sub( Vu[1], mem[3] ), filt_coeff[2] ); // Qx + Q15 - Q15 -> Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + Vu[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx + Q15 - Q15 -> Qx + move32(); + Vu[1] = L_add( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx + Q15 - Q15 -> Qx + move32(); + mem[3] = L_add( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx + Q15 - Q15 -> Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + + mem[1] = Vu[0]; // Qx + move32(); + mem[2] = Vu[1]; // Qx + move32(); + *out1++ = mem[3]; // Qx + move32(); + + /* Middle branch */ +#ifdef OPT_STEREO_32KBPS_V1 + Vm[0] = Madd_32_16( mem[0], L_sub( input[i], mem[4] ), filt_coeff[3] ); // Qx + Q15 - Q15 -> Qx + move32(); + Vm[1] = Madd_32_16( mem[4], L_sub( Vm[0], mem[5] ), filt_coeff[4] ); // Qx + Q15 - Q15 -> Qx + move32(); + mem[6] = Madd_32_16( mem[5], L_sub( Vm[1], mem[6] ), filt_coeff[5] ); // Qx + Q15 - Q15 -> Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + Vm[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx + Q15 - Q15 -> Qx + move32(); + Vm[1] = L_add( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx + Q15 - Q15 -> Qx + move32(); + mem[6] = L_add( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx + Q15 - Q15 -> Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + + mem[4] = Vm[0]; // Qx + move32(); + mem[5] = Vm[1]; // Qx + move32(); + *out1++ = mem[6]; // Qx + move32(); + + /* Lower branch */ +#ifdef OPT_STEREO_32KBPS_V1 + Vl[0] = Madd_32_16( mem[0], L_sub( input[i], mem[7] ), filt_coeff[6] ); // Qx + Q15 - Q15 -> Qx + move32(); + Vl[1] = Madd_32_16( mem[7], L_sub( Vl[0], mem[8] ), filt_coeff[7] ); // Qx + Q15 - Q15 -> Qx + move32(); + mem[9] = Madd_32_16( mem[8], L_sub( Vl[1], mem[9] ), filt_coeff[8] ); // Qx + Q15 - Q15 -> Qx + move32(); +#else /* OPT_STEREO_32KBPS_V1 */ + Vl[0] = L_add( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx + Q15 - Q15 -> Qx + move32(); + Vl[1] = L_add( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx + Q15 - Q15 -> Qx + move32(); + mem[9] = L_add( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx + Q15 - Q15 -> Qx + move32(); +#endif /* OPT_STEREO_32KBPS_V1 */ + + mem[0] = input[i]; // Qx + move32(); + mem[7] = Vl[0]; // Qx + move32(); + mem[8] = Vl[1]; // Qx + move32(); + *out1++ = mem[9]; // Qx + move32(); + } + + loop_len = shr( i_mult( len, 3 ), 1 ); + + /*decimate by 2 and LPF*/ + FOR( i = 0; i < loop_len; i++ ) + { + mem_temp = out1_buff[2 * i]; + move32(); +#ifdef OPT_STEREO_32KBPS_V1 + out[i] = Madd_32_16( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), L_add( mem[11], mem[14] ), -4965 ); // Qx + Q15 - Q15 -> Qx + // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965 + out[i] = Madd_32_16( out[i], L_add( mem[12], mem[13] ), 20125 ); + // 0.614152f in Q15 -> 20125 +#else /* OPT_STEREO_32KBPS_V1 */ + out[i] = L_add( Mpy_32_16_1( L_add( mem_temp, mem[10] ), 1550 ), Mpy_32_16_1( L_add( mem[11], mem[14] ), -4965 ) ); // Qx + Q15 - Q15 -> Qx + // 0.0473147f in Q15 -> 1550, -0.151521f in Q15 -> -4965 + out[i] = L_add( out[i], Mpy_32_16_1( L_add( mem[12], mem[13] ), 20125 ) ); + // 0.614152f in Q15 -> 20125 +#endif /* OPT_STEREO_32KBPS_V1 */ + mem[10] = mem[11]; // Qx + move32(); + mem[11] = mem[12]; // Qx + move32(); + mem[12] = mem[13]; // Qx + move32(); + mem[13] = mem[14]; // Qx + move32(); + mem[14] = mem_temp; // Qx + move32(); + } + + return; +} + /*-------------------------------------------------------------------* * interpolate_3_over_1_allpass_fx() @@ -1445,6 +1789,92 @@ void interpolate_3_over_1_allpass_fx( return; } +/* IVAS 32-bit variant */ +void interpolate_3_over_1_allpass_fx32( + const Word32 *input, /* i : input signal Qx */ + const Word16 len, /* i : number of input samples */ + Word32 *out, /* o : output signal */ + Word32 *mem /* i/o: memory */ +) +{ + Word16 i, tmp16; + Word32 Vu[2], Vm[2], Vl[2]; /* Outputs of three cascaded allpass stages (upper, middle, and lower) */ + Word32 *out1; + Word32 mem_temp; + const Word16 *filt_coeff = allpass_poles_3_ov_2; // Qx + + out1 = &out[0]; + + FOR( i = 0; i < len; i++ ) + { + /* Upper branch */ + Vu[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[1] ), filt_coeff[0] ) ); // Qx + move32(); + Vu[1] = L_add_sat( mem[1], Mpy_32_16_1( L_sub( Vu[0], mem[2] ), filt_coeff[1] ) ); // Qx + move32(); + mem[3] = L_add_sat( mem[2], Mpy_32_16_1( L_sub( Vu[1], mem[3] ), filt_coeff[2] ) ); // Qx + move32(); + + mem[1] = Vu[0]; // Qx + move32(); + mem[2] = Vu[1]; // Qx + move32(); + *out1++ = mem[3]; // Qx + move32(); + + /* Middle branch */ + Vm[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[4] ), filt_coeff[3] ) ); // Qx + move32(); + Vm[1] = L_add_sat( mem[4], Mpy_32_16_1( L_sub( Vm[0], mem[5] ), filt_coeff[4] ) ); // Qx + move32(); + mem[6] = L_add_sat( mem[5], Mpy_32_16_1( L_sub( Vm[1], mem[6] ), filt_coeff[5] ) ); // Qx + move32(); + + mem[4] = Vm[0]; // Qx + move32(); + mem[5] = Vm[1]; // Qx + move32(); + *out1++ = mem[6]; // Qx + move32(); + + /* Lower branch */ + Vl[0] = L_add_sat( mem[0], Mpy_32_16_1( L_sub( input[i], mem[7] ), filt_coeff[6] ) ); // Qx + move32(); + Vl[1] = L_add_sat( mem[7], Mpy_32_16_1( L_sub( Vl[0], mem[8] ), filt_coeff[7] ) ); // Qx + move32(); + mem[9] = L_add_sat( mem[8], Mpy_32_16_1( L_sub( Vl[1], mem[9] ), filt_coeff[8] ) ); // Qx + move32(); + + mem[0] = input[i]; // Qx + move32(); + mem[7] = Vl[0]; // Qx + move32(); + mem[8] = Vl[1]; // Qx + move32(); + *out1++ = mem[9]; // Qx + move32(); + } + + /*LPF*/ + tmp16 = imult1616( len, 3 ); + FOR( i = 0; i < tmp16; i++ ) + { + mem_temp = out[i]; // Qx + move32(); + out[i] = L_sub_sat( Mpy_32_16_1( L_add_sat( mem[12], mem[11] ), 18768 ), Mpy_32_16_1( L_add_sat( mem_temp, mem[10] ), 2424 ) ); // Qx + // 0.572769 in Q15 -> 18768, 0.074005 in Q15 -> 2424 + move32(); + mem[10] = mem[11]; // Qx + move32(); + mem[11] = mem[12]; // Qx + move32(); + mem[12] = mem_temp; // Qx + move32(); + } + + return; +} + /*-------------------------------------------------------------------* * decimate_3_over_2_allpass_fx() diff --git a/lib_com/mslvq_com.c b/lib_com/mslvq_com.c deleted file mode 100644 index 12234a4c0..000000000 --- a/lib_com/mslvq_com.c +++ /dev/null @@ -1,208 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include "cnst.h" -#include "rom_com.h" -#include "prot_fx.h" -#include "wmc_auto.h" -#include "ivas_prot_fx.h" - -/*-----------------------------------------------------------------* - * Local function prototypes - *-----------------------------------------------------------------*/ - -static void make_offset_scale( - const UWord32 tab_no_cv[], - const Word8 *no_ld, - const Word16 no_scl, - UWord32 *offset_scale ) -{ - Word16 i; - - offset_scale[0] = 1; - move32(); - FOR( i = 1; i <= no_scl; i++ ) - { - offset_scale[i] = UL_addNsD( offset_scale[i - 1], tab_no_cv[(Word16) no_ld[i - 1]] ); - move32(); - } - - return; -} - -/*-----------------------------------------------------------------* - * create_offset() - * - * - *-----------------------------------------------------------------*/ - -void create_offset( - UWord32 *offset_scale1, - UWord32 *offset_scale2, - const Word16 mode, - const Word16 prediction_flag ) -{ - Word16 tmp, tmp1; - - if ( prediction_flag == 0 ) - { - /* safety_net */ - tmp = no_lead_idx[mode][0]; - if ( ( tmp <= LIMIT_LEADER ) && ( tmp < no_lead_idx[mode][1] - 2 ) ) - { - tmp += DELTA_LEADER; - } - make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 ); - make_offset_scale( table_no_cv, leaders_short[no_lead_idx[mode][1]], MAX_NO_SCALES, offset_scale2 ); - } - else - { - tmp = no_lead_p_idx[mode][0]; - tmp1 = no_lead_p_idx[mode][1]; - if ( ( tmp <= LIMIT_LEADER ) && ( tmp < tmp1 - 2 ) ) - { - tmp += DELTA_LEADER; - } - - if ( ( tmp == LIMIT_LEADER ) && ( tmp1 == 0 ) ) - { - tmp += DELTA_LEADER; - tmp1 = DELTA_LEADER; - } - - make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 ); - make_offset_scale( table_no_cv, leaders_short[tmp1], MAX_NO_SCALES, offset_scale2 ); - } - - return; -} - -/*-----------------------------------------------------------------* - * sort_desc_ind() - * - * sorts in descending order and computes indices in the sorted vector - *-----------------------------------------------------------------*/ -void sort_desc_ind_16_fx( - Word16 *s, /* i/o: vector to be sorted Qx*/ - const Word16 len, /* i : vector length */ - Word16 *ind /* o : array of indices */ -) -{ - Word16 i, k, sorted, a; - Word16 t; - - FOR( i = 0; i < len; i++ ) - { - ind[i] = i; - move16(); - } - sorted = 0; - move16(); - FOR( k = len - 1; k && !sorted; k-- ) - { - sorted = 1; - move16(); - FOR( i = 0; i < k; i++ ) - { - IF( LT_16( s[i], s[i + 1] ) ) - { - sorted = 0; - move16(); - t = s[i]; - move16(); - s[i] = s[i + 1]; - move16(); - s[i + 1] = t; - move16(); - a = ind[i]; - move16(); - ind[i] = ind[i + 1]; - move16(); - ind[i + 1] = a; - move16(); - } - } - } - - return; -} - -void sort_desc_ind_32_fx( - Word32 *s, /* i/o: vector to be sorted Qx*/ - const Word16 len, /* i : vector length */ - Word16 *ind /* o : array of indices */ -) -{ - Word16 i, k, sorted, a; - Word32 t; - - FOR( i = 0; i < len; i++ ) - { - ind[i] = i; - move16(); - } - sorted = 0; - move16(); - FOR( k = len - 1; k && !sorted; k-- ) - { - sorted = 1; - move16(); - FOR( i = 0; i < k; i++ ) - { - IF( LT_32( s[i], s[i + 1] ) ) - { - sorted = 0; - move16(); - t = s[i]; - move16(); - s[i] = s[i + 1]; - move16(); - s[i + 1] = t; - move16(); - a = ind[i]; - move16(); - ind[i] = ind[i + 1]; - move16(); - ind[i + 1] = a; - move16(); - } - } - } - - return; -} diff --git a/lib_com/mslvq_com_fx.c b/lib_com/mslvq_com_fx.c index 7fcf36bfc..8d5e8adf2 100644 --- a/lib_com/mslvq_com_fx.c +++ b/lib_com/mslvq_com_fx.c @@ -30,11 +30,16 @@ *******************************************************************************************************/ +#include #include "options.h" +#include "cnst.h" #include "prot_fx.h" #include "ivas_cnst.h" #include "stl.h" #include "rom_com.h" +#include "ivas_prot_fx.h" +#include "wmc_auto.h" + /*-----------------------------------------------------------------* * Local functions @@ -260,6 +265,25 @@ static void make_offset_scale_fx( return; } +static void make_offset_scale( + const UWord32 tab_no_cv[], + const Word8 *no_ld, + const Word16 no_scl, + UWord32 *offset_scale ) +{ + Word16 i; + + offset_scale[0] = 1; + move32(); + FOR( i = 1; i <= no_scl; i++ ) + { + offset_scale[i] = UL_addNsD( offset_scale[i - 1], tab_no_cv[(Word16) no_ld[i - 1]] ); + move32(); + } + + return; +} + void init_offset_fx( Word32 offset_scale1[][MAX_NO_SCALES + 1], /* o: lattice truncation index offset for the first LSF subvector - safety net structures*/ Word32 offset_scale2[][MAX_NO_SCALES + 1], /* o: lattice truncation index offset for the second LSF subvector - safety net structures*/ @@ -1310,6 +1334,104 @@ static void put_value_fx( return; } +/*-----------------------------------------------------------------* + * create_offset() + * + * + *-----------------------------------------------------------------*/ + +void create_offset( + UWord32 *offset_scale1, + UWord32 *offset_scale2, + const Word16 mode, + const Word16 prediction_flag ) +{ + Word16 tmp, tmp1; + + if ( prediction_flag == 0 ) + { + /* safety_net */ + tmp = no_lead_idx[mode][0]; + if ( ( tmp <= LIMIT_LEADER ) && ( tmp < no_lead_idx[mode][1] - 2 ) ) + { + tmp += DELTA_LEADER; + } + make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 ); + make_offset_scale( table_no_cv, leaders_short[no_lead_idx[mode][1]], MAX_NO_SCALES, offset_scale2 ); + } + else + { + tmp = no_lead_p_idx[mode][0]; + tmp1 = no_lead_p_idx[mode][1]; + if ( ( tmp <= LIMIT_LEADER ) && ( tmp < tmp1 - 2 ) ) + { + tmp += DELTA_LEADER; + } + + if ( ( tmp == LIMIT_LEADER ) && ( tmp1 == 0 ) ) + { + tmp += DELTA_LEADER; + tmp1 = DELTA_LEADER; + } + + make_offset_scale( table_no_cv, leaders_short[tmp], MAX_NO_SCALES, offset_scale1 ); + make_offset_scale( table_no_cv, leaders_short[tmp1], MAX_NO_SCALES, offset_scale2 ); + } + + return; +} + +/*-----------------------------------------------------------------* + * sort_desc_ind() + * + * sorts in descending order and computes indices in the sorted vector + *-----------------------------------------------------------------*/ + +void sort_desc_ind_32_fx( + Word32 *s, /* i/o: vector to be sorted Qx*/ + const Word16 len, /* i : vector length */ + Word16 *ind /* o : array of indices */ +) +{ + Word16 i, k, sorted, a; + Word32 t; + + FOR( i = 0; i < len; i++ ) + { + ind[i] = i; + move16(); + } + sorted = 0; + move16(); + FOR( k = len - 1; k && !sorted; k-- ) + { + sorted = 1; + move16(); + FOR( i = 0; i < k; i++ ) + { + IF( LT_32( s[i], s[i + 1] ) ) + { + sorted = 0; + move16(); + t = s[i]; + move16(); + s[i] = s[i + 1]; + move16(); + s[i + 1] = t; + move16(); + a = ind[i]; + move16(); + ind[i] = ind[i + 1]; + move16(); + ind[i + 1] = a; + move16(); + } + } + } + + return; +} + void deindex_lvq_SHB_fx( UWord32 index, Word16 *out, diff --git a/lib_com/preemph.c b/lib_com/preemph.c deleted file mode 100644 index 9ebc0f72a..000000000 --- a/lib_com/preemph.c +++ /dev/null @@ -1,72 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include "prot_fx.h" -#include "wmc_auto.h" - -/*-------------------------------------------------------------* - * preemph_ivas_fx() - * - * Preemphasis: filtering through 1 - mu z^-1 - *-------------------------------------------------------------*/ - -void preemph_ivas_fx( - Word32 *signal, /* i/o: signal Qx*/ - const Word16 mu, /* i : preemphasis factor Q15*/ - const Word16 L, /* i : vector size Q0*/ - Word32 *mem /* i/o: memory (x[-1]) Qx*/ -) -{ - Word16 i; - Word32 temp; - - temp = signal[L - 1]; /* Qx */ - move32(); - FOR( i = L - 1; i > 0; i-- ) - { - signal[i] = L_sub( signal[i], Mpy_32_16_1( signal[i - 1], mu ) ); /* Qx */ - move32(); - } - - signal[0] = L_sub( signal[0], Mpy_32_16_1( *mem, mu ) ); /* Qx */ - move32(); - *mem = temp; /* Qx */ - move32(); - - return; -} diff --git a/lib_com/preemph_fx.c b/lib_com/preemph_fx.c index 0790f6c3f..b7886cb65 100644 --- a/lib_com/preemph_fx.c +++ b/lib_com/preemph_fx.c @@ -1,14 +1,18 @@ /*==================================================================================== EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 ====================================================================================*/ + #include #include "options.h" /* Compilation switches */ #include "prot_fx.h" +#include "wmc_auto.h" + /*-------------------------------------------------------------* * preemph_copy_fx() * * Preemphasis: filtering through 1 - mu z^-1 *-------------------------------------------------------------*/ + void preemph_copy_fx( const Word16 x[], /* i : input signal Qx */ Word16 y[], /* o : output signal Qx */ @@ -63,6 +67,38 @@ void preemph_copy_32fx( move16(); } +/*-------------------------------------------------------------* + * preemph_ivas_fx() + * + * Preemphasis: filtering through 1 - mu z^-1 + *-------------------------------------------------------------*/ + +void preemph_ivas_fx( + Word32 *signal, /* i/o: signal Qx*/ + const Word16 mu, /* i : preemphasis factor Q15*/ + const Word16 L, /* i : vector size Q0*/ + Word32 *mem /* i/o: memory (x[-1]) Qx*/ +) +{ + Word16 i; + Word32 temp; + + temp = signal[L - 1]; /* Qx */ + move32(); + FOR( i = L - 1; i > 0; i-- ) + { + signal[i] = L_sub( signal[i], Mpy_32_16_1( signal[i - 1], mu ) ); /* Qx */ + move32(); + } + + signal[0] = L_sub( signal[0], Mpy_32_16_1( *mem, mu ) ); /* Qx */ + move32(); + *mem = temp; /* Qx */ + move32(); + + return; +} + /* * E_UTIL_f_preemph2 * diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 498be3137..935139e42 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -1778,13 +1778,7 @@ void Ener_per_band_comp_ivas_fx( const Word16 Eflag, /* i : flag of highest band */ const Word16 L_frame /* i : frame length */ ); -void Ener_per_band_comp_ivas_fx_2( - const Word16 exc_diff_fx[], /* i : target signal Q_exc_diff */ - Word16 y_gain4_fx[], /* o : Energy per band to quantize Q12 */ - const Word16 Q_exc, /* i : frame length */ - const Word16 Mband, /* i : Max band */ - const Word16 Eflag, /* i : flag of highest band */ - const Word16 L_frame ); + void Comp_and_apply_gain_fx( Word16 exc_diffQ[], /* i/o: Quantized excitation */ Word16 Ener_per_bd_iQ[], /* i : Target ener per band Q13 */ @@ -1844,17 +1838,6 @@ void wtda_fx( const Word16 L /* i : length */ ); -void wtda_ivas_fx( - Word16 *new_audio, /* i : input audio Q0 */ - Word16 *Q, /* i/o : Q of input/Output Audio */ - Word16 *wtda_audio, /* o : windowed audio Qout */ - Word16 *old_wtda, /* i/o: windowed audio from previous frame Qout */ - Word16 *Qold_wtda, - const Word16 left_mode, /* i : window overlap of previous frame (0: full, 2: none, or 3: half) */ - const Word16 right_mode, /* i : window overlap of current frame (0: full, 2: none, or 3: half) */ - const Word16 L /* i : length */ -); - void wtda_ext_fx( const Word16 *new_audio, /* i : input audio (Q_in) */ Word16 *wtda_audio, /* o : windowed audio (Q_in) */ @@ -11144,31 +11127,6 @@ Word32 Mult_32_32( Word32 a, Word32 b ); - -void bit_allocation_second_fx2( - Word32 *Rk, - Word32 *Rk_sort, - Word16 BANDS, - const Word16 *band_width, - Word16 *k_sort, - Word16 *k_num, - const Word16 *p2a_flags, - const Word16 p2a_bands, - const Word16 *last_bitalloc, - const Word16 input_frame ); - -void bit_allocation_second_fx2( - Word32 *Rk, - Word32 *Rk_sort, - Word16 BANDS, - const Word16 *band_width, - Word16 *k_sort, - Word16 *k_num, - const Word16 *p2a_flags, - const Word16 p2a_bands, - const Word16 *last_bitalloc, - const Word16 input_frame ); - #ifdef DEBUGGING void read_next_force( int16_t *force, /* i/o: force value (0/1, 0 = speech, 1 = music)*/ diff --git a/lib_com/tcx_mdct_window.c b/lib_com/tcx_mdct_window_fx.c similarity index 100% rename from lib_com/tcx_mdct_window.c rename to lib_com/tcx_mdct_window_fx.c diff --git a/lib_com/tec_com.c b/lib_com/tec_com_fx.c similarity index 100% rename from lib_com/tec_com.c rename to lib_com/tec_com_fx.c diff --git a/lib_com/wtda.c b/lib_com/wtda.c deleted file mode 100644 index 3fb408138..000000000 --- a/lib_com/wtda.c +++ /dev/null @@ -1,219 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include "cnst.h" -#include "prot_fx.h" -#include "rom_com.h" -#include -#include "wmc_auto.h" - - -void wtda_fx32( - const Word32 *new_audio, /* i : input audio Q11 */ - Word32 *wtda_audio, /* o : windowed audio Q11 */ - Word32 *old_wtda, /* i/o: windowed audio from previous frame */ - const Word16 left_mode, /* i : window overlap of previous frame (0: full, 2: none, or 3: half) */ - const Word16 right_mode, /* i : window overlap of current frame (0: full, 2: none, or 3: half) */ - const Word16 L /* i : length */ -) -{ - Word16 i, decimate, decay; - Word16 idx1, idx2, idx3, idx4; - Word16 n, windecay48, windecay16; - const Word32 *allsig_l, *allsig_r; - Word16 win_right[R2_48]; - Word16 win_int_left[R1_16]; - Word16 win_left[R1_48]; - Word16 win_int_right[R2_16]; - - tcx_get_windows_mode1( left_mode, right_mode, win_left, win_right, win_int_left, win_int_right, L ); - - decimate = 1; /* L_FRAME 48k */ - move16(); - decay = 0; - move16(); - windecay48 = extract_l( WINDECAY48 ); // (int16_t)(2 * ((float)L_FRAME48k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_48 - - test(); - IF( EQ_16( L, L_FRAME32k ) || EQ_16( L, L_FRAME16k ) ) - { - decimate = 3; - move16(); - decay = 1; - move16(); - } - ELSE IF( EQ_16( L, L_FRAME8k ) ) - { - decimate = 6; - move16(); - decay = 2; - move16(); - } - - SWITCH( L ) // (int16_t)((float)L * N_ZERO_MDCT_NS / FRAME_SIZE_NS) - { - case L_FRAME16k: - n = 90; - move16(); - BREAK; - case L_FRAME32k: - n = 180; - move16(); - BREAK; - case L_FRAME48k: - n = 270; - move16(); - BREAK; - default: - n = (Word16) ( ( L * N_ZERO_MDCT_NS ) / FRAME_SIZE_NS ); - move16(); - BREAK; - } - - windecay16 = extract_l( WINDECAY16 ); // (int16_t)(2 * ((float)L_FRAME16k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_16; - - /* algorithmic delay reduction */ - i = 0; - move16(); - - IF( old_wtda == NULL ) - { - allsig_r = new_audio + n; - allsig_l = new_audio + n - L; - } - ELSE - { - allsig_r = new_audio + n; - allsig_l = old_wtda + n; - } - - IF( EQ_16( L, L_FRAME32k ) ) - { - FOR( i = 0; i < ( L / 2 - n ); i += 2 ) - { - idx1 = sub( sub( shr( L, 1 ), i ), 1 ); - idx2 = sub( sub( 3 * L_FRAME16k / 2 - 1, shr( i, 1 ) ), windecay16 ); - idx3 = add( shr( L, 1 ), i ); - idx4 = sub( add( 3 * L_FRAME16k / 2, shr( i, 1 ) ), windecay16 ); - wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_int_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_int_right[idx4] ) ); - move32(); - - idx1 = sub( sub( shr( L, 1 ), add( i, 1 ) ), 1 ); - idx2 = sub( add( i_mult( ( sub( sub( 3 * L_FRAME16k / 2, shr( i, 1 ) ), 1 ) ), decimate ), decay ), windecay48 ); - idx3 = add( add( shr( L, 1 ), i ), 1 ); - idx4 = sub( sub( sub( i_mult( ( add( 3 * L_FRAME16k / 2 + 1, shr( i, 1 ) ) ), decimate ), decay ), 1 ), windecay48 ); - wtda_audio[i + 1] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) ); - move32(); - } - - FOR( i = L / 2 - n; i < L / 2; i += 2 ) - { - wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] ); - move32(); - wtda_audio[i + 1] = L_negate( allsig_r[( ( ( L >> 1 ) - ( i + 1 ) ) - 1 )] ); - move32(); - } - FOR( i = 0; i < n; i += 2 ) - { - wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( ( i >> 1 ) * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] ); - move32(); - wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[i + 1], win_int_left[i / 2] ), new_audio[( ( n - ( i + 1 ) ) - 1 )] ); - move32(); - } - - FOR( i = n; i < L / 2; i += 2 ) - { - idx1 = i; - move16(); - idx2 = add( i_mult( shr( i, 1 ), decimate ), decay ); - idx3 = sub( sub( L, i ), 1 ); - idx4 = sub( sub( i_mult( sub( shr( L, 1 ), shr( i, 1 ) ), decimate ), 1 ), decay ); - wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) ); - move32(); - - idx1 = add( i, 1 ); - idx2 = shr( i, 1 ); - idx3 = sub( sub( L, add( i, 1 ) ), 1 ); - idx4 = sub( sub( shr( L, 1 ), shr( i, 1 ) ), 1 ); - wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_int_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_int_left[idx4] ) ); - move32(); - } - } - ELSE - { - FOR( i = 0; i < L / 2 - n; i++ ) - { - idx1 = sub( sub( shr( L, 1 ), i ), 1 ); - idx2 = sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 ); - idx3 = add( shr( L, 1 ), i ); - idx4 = sub( sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), 1 ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 ); - wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) ); - move32(); - } - - FOR( i = L / 2 - n; i < L / 2; i++ ) - { - wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] ); - move32(); - } - - FOR( i = 0; i < n; i++ ) - { - wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( i * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] ); - move32(); - } - - FOR( i = n; i < L / 2; i++ ) - { - idx1 = i; - move16(); - idx2 = add( i_mult( i, decimate ), decay ); - idx3 = sub( sub( L, i ), 1 ); - idx4 = sub( sub( sub( i_mult( L, decimate ), i_mult( i, decimate ) ), 1 ), decay ); - wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) ); - move32(); - } - } - - IF( old_wtda != NULL ) - { - Copy32( new_audio, old_wtda, L ); - } - - return; -} diff --git a/lib_com/wtda_fx.c b/lib_com/wtda_fx.c index e060984df..7943a87c5 100644 --- a/lib_com/wtda_fx.c +++ b/lib_com/wtda_fx.c @@ -2,11 +2,14 @@ EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 ====================================================================================*/ #include +#include #include "options.h" /* Compilation switches */ #include "cnst.h" /* Common constants */ #include "rom_com.h" /* Static table prototypes */ #include "prot_fx.h" /* required by wmc_tool */ #include "stat_com.h" +#include "wmc_auto.h" + /*--------------------------------------------------------------------------* * mvr2r_inv() * @@ -412,21 +415,19 @@ void wtda_fx( return; } - -void wtda_ivas_fx( - Word16 *new_audio, /* i : input audio Q0 */ - Word16 *Q, /* i/o : Q of input/Output Audio */ - Word16 *wtda_audio, /* o : windowed audio Qout */ - Word16 *old_wtda, /* i/o: windowed audio from previous frame Qout */ - Word16 *Qold_wtda, +void wtda_fx32( + const Word32 *new_audio, /* i : input audio Q11 */ + Word32 *wtda_audio, /* o : windowed audio Q11 */ + Word32 *old_wtda, /* i/o: windowed audio from previous frame */ const Word16 left_mode, /* i : window overlap of previous frame (0: full, 2: none, or 3: half) */ const Word16 right_mode, /* i : window overlap of current frame (0: full, 2: none, or 3: half) */ const Word16 L /* i : length */ ) { Word16 i, decimate, decay; + Word16 idx1, idx2, idx3, idx4; Word16 n, windecay48, windecay16; - const Word16 *allsig_l, *allsig_r; + const Word32 *allsig_l, *allsig_r; Word16 win_right[R2_48]; Word16 win_int_left[R1_16]; Word16 win_left[R1_48]; @@ -434,12 +435,11 @@ void wtda_ivas_fx( tcx_get_windows_mode1( left_mode, right_mode, win_left, win_right, win_int_left, win_int_right, L ); - decimate = 1; /* L_FRAME48k */ + decimate = 1; /* L_FRAME 48k */ move16(); decay = 0; move16(); - windecay48 = ( 2 * ( (Word64) L_FRAME48k * N_ZERO_MDCT_NS / FRAME_SIZE_NS ) ) + R1_48; - move16(); + windecay48 = extract_l( WINDECAY48 ); // (int16_t)(2 * ((float)L_FRAME48k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_48 test(); IF( EQ_16( L, L_FRAME32k ) || EQ_16( L, L_FRAME16k ) ) @@ -457,10 +457,27 @@ void wtda_ivas_fx( move16(); } - n = extract_l( Mpy_32_32( L, 603979776 /* N_ZERO_MDCT_NS / FRAME_SIZE_NS in Q31 */ ) ); + SWITCH( L ) // (int16_t)((float)L * N_ZERO_MDCT_NS / FRAME_SIZE_NS) + { + case L_FRAME16k: + n = 90; + move16(); + BREAK; + case L_FRAME32k: + n = 180; + move16(); + BREAK; + case L_FRAME48k: + n = 270; + move16(); + BREAK; + default: + n = (Word16) ( ( L * N_ZERO_MDCT_NS ) / FRAME_SIZE_NS ); + move16(); + BREAK; + } - windecay16 = ( 2 * ( L_FRAME16k * N_ZERO_MDCT_NS / FRAME_SIZE_NS ) ) + R1_16; - move16(); + windecay16 = extract_l( WINDECAY16 ); // (int16_t)(2 * ((float)L_FRAME16k * N_ZERO_MDCT_NS / FRAME_SIZE_NS)) + R1_16; /* algorithmic delay reduction */ i = 0; @@ -473,103 +490,106 @@ void wtda_ivas_fx( } ELSE { - /* Rescale signals if Q are not identical */ - IF( GT_16( *Qold_wtda, *Q ) ) - { - Copy_Scale_sig( old_wtda, old_wtda, L, sub( *Q, *Qold_wtda ) ); - *Qold_wtda = *Q; - move16(); - } - ELSE IF( LT_16( *Qold_wtda, *Q ) ) - { - Copy_Scale_sig( new_audio, new_audio, L, sub( *Qold_wtda, *Q ) ); - *Q = *Qold_wtda; - move16(); - } - allsig_r = new_audio + n; allsig_l = old_wtda + n; } IF( EQ_16( L, L_FRAME32k ) ) { - FOR( i = 0; i < L / 2 - n; i += 2 ) + FOR( i = 0; i < ( L / 2 - n ); i += 2 ) { - wtda_audio[i] = round_fx( L_msu0( L_mult0( negate( allsig_r[L / 2 - i - 1] ), win_int_right[3 * L_FRAME16k / 2 - i / 2 - 1 - windecay16] ), - allsig_r[L / 2 + i], win_int_right[3 * L_FRAME16k / 2 + i / 2 - windecay16] ) ); - move16(); - wtda_audio[i + 1] = round_fx( L_msu0( L_mult0( negate( allsig_r[L / 2 - ( i + 1 ) - 1] ), win_right[( 3 * L_FRAME16k / 2 - i / 2 - 1 ) * decimate + decay - windecay48] ), - allsig_r[L / 2 + i + 1], win_right[( 3 * L_FRAME16k / 2 + 1 + i / 2 ) * decimate - decay - 1 - windecay48] ) ); - move16(); + idx1 = sub( sub( shr( L, 1 ), i ), 1 ); + idx2 = sub( sub( 3 * L_FRAME16k / 2 - 1, shr( i, 1 ) ), windecay16 ); + idx3 = add( shr( L, 1 ), i ); + idx4 = sub( add( 3 * L_FRAME16k / 2, shr( i, 1 ) ), windecay16 ); + wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_int_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_int_right[idx4] ) ); + move32(); + + idx1 = sub( sub( shr( L, 1 ), add( i, 1 ) ), 1 ); + idx2 = sub( add( i_mult( ( sub( sub( 3 * L_FRAME16k / 2, shr( i, 1 ) ), 1 ) ), decimate ), decay ), windecay48 ); + idx3 = add( add( shr( L, 1 ), i ), 1 ); + idx4 = sub( sub( sub( i_mult( ( add( 3 * L_FRAME16k / 2 + 1, shr( i, 1 ) ) ), decimate ), decay ), 1 ), windecay48 ); + wtda_audio[i + 1] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) ); + move32(); } FOR( i = L / 2 - n; i < L / 2; i += 2 ) { - wtda_audio[i] = shr( negate( allsig_r[L / 2 - i - 1] ), 1 ); - move16(); - wtda_audio[i + 1] = shr( negate( allsig_r[L / 2 - ( i + 1 ) - 1] ), 1 ); - move16(); + wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] ); + move32(); + wtda_audio[i + 1] = L_negate( allsig_r[( ( ( L >> 1 ) - ( i + 1 ) ) - 1 )] ); + move32(); } - FOR( i = 0; i < n; i += 2 ) { - wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[( i / 2 ) * decimate + decay] ), - new_audio[n - i - 1], MAX16B ) ); - move16(); - wtda_audio[i + L / 2 + 1] = round_fx( L_msu0( L_mult0( allsig_l[i + 1], win_int_left[i / 2] ), - new_audio[n - ( i + 1 ) - 1], MAX16B ) ); - move16(); + wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( ( i >> 1 ) * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] ); + move32(); + wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[i + 1], win_int_left[i / 2] ), new_audio[( ( n - ( i + 1 ) ) - 1 )] ); + move32(); } FOR( i = n; i < L / 2; i += 2 ) { - wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[( i / 2 ) * decimate + decay] ), - allsig_l[L - i - 1], win_left[( L / 2 - i / 2 ) * decimate - 1 - decay] ) ); - move16(); - wtda_audio[i + L / 2 + 1] = round_fx( L_msu0( L_mult0( allsig_l[i + 1], win_int_left[i / 2] ), - allsig_l[L - ( i + 1 ) - 1], win_int_left[L / 2 - i / 2 - 1] ) ); + idx1 = i; move16(); + idx2 = add( i_mult( shr( i, 1 ), decimate ), decay ); + idx3 = sub( sub( L, i ), 1 ); + idx4 = sub( sub( i_mult( sub( shr( L, 1 ), shr( i, 1 ) ), decimate ), 1 ), decay ); + wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) ); + move32(); + + idx1 = add( i, 1 ); + idx2 = shr( i, 1 ); + idx3 = sub( sub( L, add( i, 1 ) ), 1 ); + idx4 = sub( sub( shr( L, 1 ), shr( i, 1 ) ), 1 ); + wtda_audio[( ( i + ( L >> 1 ) ) + 1 )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_int_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_int_left[idx4] ) ); + move32(); } } ELSE { FOR( i = 0; i < L / 2 - n; i++ ) { - wtda_audio[i] = round_fx( L_msu0( L_mult0( negate( allsig_r[L / 2 - i - 1] ), win_right[3 * L / 2 * decimate - ( i + 1 ) * decimate + decay - windecay48] ), - allsig_r[L / 2 + i], win_right[3 * L / 2 * decimate - 1 + ( i + 1 ) * decimate - decay - windecay48] ) ); - move16(); + idx1 = sub( sub( shr( L, 1 ), i ), 1 ); + idx2 = sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 ); + idx3 = add( shr( L, 1 ), i ); + idx4 = sub( sub( add( sub( i_mult( i_mult( 3, shr( L, 1 ) ), decimate ), 1 ), i_mult( add( i, 1 ), decimate ) ), decay ), windecay48 ); + wtda_audio[i] = L_sub_sat( Mpy_32_16_1( -allsig_r[idx1], win_right[idx2] ), Mpy_32_16_1( allsig_r[idx3], win_right[idx4] ) ); + move32(); } FOR( i = L / 2 - n; i < L / 2; i++ ) { - wtda_audio[i] = shr( negate( allsig_r[L / 2 - i - 1] ), 1 ); - move16(); + wtda_audio[i] = L_negate( allsig_r[( ( ( L >> 1 ) - i ) - 1 )] ); + move32(); } FOR( i = 0; i < n; i++ ) { - wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[i * decimate + decay] ), - new_audio[n - i - 1], MAX16B ) ); - move16(); + wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[i], win_left[( ( i * decimate ) + decay )] ), new_audio[( ( n - i ) - 1 )] ); + move32(); } FOR( i = n; i < L / 2; i++ ) { - wtda_audio[i + L / 2] = round_fx( L_msu0( L_mult0( allsig_l[i], win_left[i * decimate + decay] ), - allsig_l[L - i - 1], win_left[L * decimate - i * decimate - 1 - decay] ) ); + idx1 = i; move16(); + idx2 = add( i_mult( i, decimate ), decay ); + idx3 = sub( sub( L, i ), 1 ); + idx4 = sub( sub( sub( i_mult( L, decimate ), i_mult( i, decimate ) ), 1 ), decay ); + wtda_audio[( i + ( L >> 1 ) )] = L_sub_sat( Mpy_32_16_1( allsig_l[idx1], win_left[idx2] ), Mpy_32_16_1( allsig_l[idx3], win_left[idx4] ) ); + move32(); } } IF( old_wtda != NULL ) { - Copy( new_audio, old_wtda, L ); + Copy32( new_audio, old_wtda, L ); } return; } - void wtda_ext_fx( const Word16 *new_audio, /* i : input audio (Q_in) */ Word16 *wtda_audio, /* o : windowed audio (Q_in - 1) */ diff --git a/lib_dec/ari_hm_dec.c b/lib_dec/ari_hm_dec_fx.c similarity index 100% rename from lib_dec/ari_hm_dec.c rename to lib_dec/ari_hm_dec_fx.c diff --git a/lib_dec/ivas_cpe_dec_fx.c b/lib_dec/ivas_cpe_dec_fx.c index c10c6beda..e26a56c1b 100644 --- a/lib_dec/ivas_cpe_dec_fx.c +++ b/lib_dec/ivas_cpe_dec_fx.c @@ -1264,7 +1264,7 @@ void destroy_cpe_dec( IF( hCPE->hStereoDft != NULL ) { - stereo_dft_dec_destroy( &( hCPE->hStereoDft ) ); + stereo_dft_dec_destroy_fx( &( hCPE->hStereoDft ) ); hCPE->hStereoDft = NULL; } diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c deleted file mode 100644 index 4770d2193..000000000 --- a/lib_dec/ivas_init_dec.c +++ /dev/null @@ -1,3255 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -#include -#include -#include -#include "options.h" -#include "ivas_cnst.h" -#include "ivas_prot_rend_fx.h" -#include "rom_com.h" -#include "ivas_rom_com.h" -#include "ivas_stat_enc.h" -#include "prot_fx.h" -#include "wmc_auto.h" -#include "ivas_prot_fx.h" - - -/*-------------------------------------------------------------------* - * Local function prototypes - *-------------------------------------------------------------------*/ - -static ivas_error ivas_read_format( Decoder_Struct *st_ivas, Word16 *num_bits_read ); - -static ivas_error doSanityChecks_IVAS( Decoder_Struct *st_ivas ); - - -/*-------------------------------------------------------------------* - * ivas_dec_setup() - * - * IVAS decoder setup - *-------------------------------------------------------------------*/ - -ivas_error ivas_dec_setup( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - UWord16 *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ - Word16 *data /* o : output synthesis signal */ -) -{ - Word16 k, idx, num_bits_read; - Word16 nchan_ism, element_mode_flag; - Decoder_State *st; - Word32 ivas_total_brate; - ivas_error error; - - error = IVAS_ERR_OK; - move32(); - num_bits_read = 0; - move16(); - element_mode_flag = 0; - move16(); - - ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; - move32(); - - /*-------------------------------------------------------------------* - * Read IVAS format - *-------------------------------------------------------------------*/ - - ivas_read_format( st_ivas, &num_bits_read ); - - Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; - Word16 num_src = 0; - move16(); - - /*-------------------------------------------------------------------* - * Read other signling (ISM/MC mode, number of channels, etc.) - *-------------------------------------------------------------------*/ - - IF( is_DTXrate( ivas_total_brate ) == 0 ) - { - /*-------------------------------------------------------------------* - * Read IVAS format related signaling: - * - in ISM : read number of objects - * - in SBA : read SBA planar flag and SBA order - * - in MASA : read number of TC - * - in MC : read LS setup - *-------------------------------------------------------------------*/ - - IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) - { - element_mode_flag = 1; - move16(); - } - ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) - { - /* read the number of objects */ - st_ivas->nchan_transport = 1; - move16(); - nchan_ism = 1; - move16(); - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); - k = extract_l( L_sub( res_dec, 1 ) ); - - WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) ) - { - nchan_ism = add( nchan_ism, 1 ); - k = sub( k, 1 ); - } - - st_ivas->nchan_ism = nchan_ism; - move16(); - - IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, st_ivas->ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) - { - /* read Ambisonic (SBA) planar flag */ - st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read]; - move16(); - num_bits_read = add( num_bits_read, SBA_PLANAR_BITS ); - - /* read Ambisonic (SBA) order */ - st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1]; - move16(); - st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) ); - move16(); - num_bits_read = add( num_bits_read, SBA_ORDER_BITS ); - test(); - test(); - IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) && GT_32( ivas_total_brate, IVAS_SID_5k2 ) ) - { - IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE - { - /* set Ambisonic (SBA) order used for analysis and coding */ - st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order ); - move16(); - ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) - { - /* read number of MASA transport channels */ - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); - IF( st_ivas->bit_stream[res_dec - 1] ) - { - st_ivas->nchan_transport = 2; - move16(); - element_mode_flag = 1; - move16(); - } - ELSE - { - st_ivas->nchan_transport = 1; - move16(); - } - - IF( st_ivas->ini_frame > 0 ) - { - /* reconfigure in case a change of operation mode is detected */ - test(); - test(); - IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) ) - { - IF( EQ_32( st_ivas->last_ivas_format, MASA_FORMAT ) ) - { - test(); - test(); - test(); - IF( ( st_ivas->ini_active_frame == 0 ) && NE_32( ivas_total_brate, FRAME_NO_DATA ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) && EQ_16( st_ivas->nCPE, 1 ) ) - { - st_ivas->hCPE[0]->nchan_out = 1; - move16(); - } - ELSE - { - IF( NE_32( ( error = ivas_masa_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - ELSE - { - IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) - { - st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */ - move16(); - /* for the DISC mode the number of objects are written at the end of the bitstream, in the MASA metadata */ - - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); - st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 ); - move16(); - st_ivas->ism_mode = ivas_omasa_ism_mode_select_fx( ivas_total_brate, st_ivas->nchan_ism ); - move16(); - IF( st_ivas->ini_frame > 0 ) - { - /* reconfigure in case a change of operation mode is detected */ - test(); - test(); - IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) ) - { - IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) - { - /* the number of objects is written at the end of the bitstream, in the SBA metadata */ - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); - st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 ); - move16(); - - test(); - IF( LT_32( ivas_total_brate, IVAS_24k4 ) || GE_32( ivas_total_brate, IVAS_256k ) ) - { - /* read Ambisonic (SBA) planar flag */ - st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read]; - move16(); - num_bits_read = add( num_bits_read, SBA_PLANAR_BITS ); - } - - st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1]; - move16(); - st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) ); - move16(); - num_bits_read = add( num_bits_read, SBA_ORDER_BITS ); - - /* read Ambisonic (SBA) order */ - if ( LT_32( ivas_total_brate, IVAS_256k ) ) - { - st_ivas->sba_order = 3; - move16(); - } - - test(); - IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) ) - { - IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE - { - /* set Ambisonic (SBA) order used for analysis and coding */ - st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order ); - move16(); - - ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init ); - - /*correct number of CPEs for discrete ISM coding*/ - test(); - IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) - { - st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) ); - move16(); - } - } - - IF( GE_32( ivas_total_brate, IVAS_256k ) ) - { - st_ivas->ism_mode = ISM_SBA_MODE_DISC; - move32(); - } - ELSE - { - st_ivas->ism_mode = ISM_MODE_NONE; - move32(); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) - { - /* read MC configuration */ - idx = 0; - move16(); - FOR( k = 0; k < MC_LS_SETUP_BITS; k++ ) - { - IF( st_ivas->bit_stream[num_bits_read + k] ) - { - idx = add( idx, shl( 1, sub( ( MC_LS_SETUP_BITS - 1 ), k ) ) ); - } - } - num_bits_read = add( num_bits_read, MC_LS_SETUP_BITS ); - - /* select MC format mode; reconfigure the MC format decoder */ - IF( NE_32( ( error = ivas_mc_dec_config_fx( st_ivas, idx, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - /*-------------------------------------------------------------------* - * Read element mode - *-------------------------------------------------------------------*/ - - IF( st_ivas->ini_frame == 0 && element_mode_flag ) - { - /* read stereo technology info */ - IF( LT_32( ivas_total_brate, MIN_BRATE_MDCT_STEREO ) ) - { - /* 1 bit */ - IF( st_ivas->bit_stream[num_bits_read] ) - { - st_ivas->element_mode_init = add( 1, IVAS_CPE_DFT ); - move16(); - } - ELSE - { - st_ivas->element_mode_init = add( 0, IVAS_CPE_DFT ); - move16(); - } - } - ELSE - { - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - } - } - } - ELSE IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) ) - { - SWITCH( st_ivas->sid_format ) - { - case SID_DFT_STEREO: - st_ivas->element_mode_init = IVAS_CPE_DFT; - move16(); - BREAK; - case SID_MDCT_STEREO: - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - BREAK; - case SID_ISM: - st_ivas->element_mode_init = IVAS_SCE; - move16(); - BREAK; - case SID_MASA_1TC: - st_ivas->element_mode_init = IVAS_SCE; - move16(); - st_ivas->nchan_transport = 1; - move16(); - BREAK; - case SID_MASA_2TC:; // empyt statement for declaration - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); - IF( EQ_16( st_ivas->bit_stream[( res_dec - 1 ) - SID_FORMAT_NBITS], 1 ) ) - { - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - } - ELSE - { - st_ivas->element_mode_init = IVAS_CPE_DFT; - move16(); - } - st_ivas->nchan_transport = 2; - move16(); - BREAK; - case SID_SBA_1TC: - st_ivas->element_mode_init = IVAS_SCE; - move16(); - BREAK; - case SID_SBA_2TC: - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - BREAK; - } - - test(); - IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) - { - Word16 nchan_transport_old, nchan_transport; - nchan_transport_old = st_ivas->nchan_transport; - move16(); - IF( ( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) ) ) - { - nchan_transport = 2; - } - ELSE - { - nchan_transport = 1; - } - move16(); - - IF( NE_16( nchan_transport_old, nchan_transport ) ) - { - /*Setting the default bitrate for the reconfig function*/ - IF( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) ) - { - st_ivas->hDecoderConfig->ivas_total_brate = IVAS_48k; - move16(); - } - ELSE - { - st_ivas->hDecoderConfig->ivas_total_brate = IVAS_24k4; - move16(); - } - - IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->last_active_ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; - move32(); - st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate; - move32(); - } - } - - IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) - { - ISM_MODE last_ism_mode = st_ivas->ism_mode; - move32(); - /* read the number of objects */ - st_ivas->nchan_transport = 1; - move16(); - nchan_ism = 1; - move16(); - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); - k = extract_l( L_sub( L_sub( res_dec, 1 ), SID_FORMAT_NBITS ) ); - move16(); - - WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) ) - { - nchan_ism = add( nchan_ism, 1 ); - k = sub( k, 1 ); - } - k = sub( k, 1 ); - - test(); - IF( st_ivas->ini_frame > 0 && NE_16( nchan_ism, st_ivas->nchan_ism ) ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "wrong number of objects signalled!" ); - } - - st_ivas->nchan_ism = nchan_ism; - move16(); - /* read ism_mode */ - st_ivas->ism_mode = ISM_MODE_DISC; - move32(); - IF( GT_16( nchan_ism, 2 ) ) - { - k = sub( k, nchan_ism ); /* SID metadata flags */ - idx = st_ivas->bit_stream[k]; - move16(); - st_ivas->ism_mode = (ISM_MODE) add( idx, 1 ); - move32(); - } - - if ( st_ivas->ini_frame == 0 ) - { - last_ism_mode = st_ivas->ism_mode; - move32(); - } - - IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - - /*-------------------------------------------------------------------* - * Initialize decoder in the first good frame based on IVAS format - * and number of transport channels - *-------------------------------------------------------------------*/ - test(); - IF( st_ivas->ini_frame == 0 && NE_32( st_ivas->ivas_format, UNDEFINED_FORMAT ) ) - { - IF( NE_32( ( error = doSanityChecks_IVAS( st_ivas ) ), IVAS_ERR_OK ) ) - { - return IVAS_ERROR( error, "Sanity checks failed" ); - } - - IF( NE_32( ( error = ivas_init_decoder_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - - /*----------------------------------------------------------------* - * Reset bitstream pointers - *----------------------------------------------------------------*/ - - ivas_set_bitstream_pointers( st_ivas ); - - reset_elements( st_ivas ); - - /* update bitstream buffer pointer -> take into account already read bits */ - test(); - IF( ( st_ivas->nSCE > 0 ) || ( st_ivas->nCPE > 0 ) ) - { - IF( st_ivas->nSCE > 0 ) - { - st = st_ivas->hSCE[0]->hCoreCoder[0]; - } - ELSE - { - st = st_ivas->hCPE[0]->hCoreCoder[0]; - } - st->next_bit_pos = num_bits_read; - move16(); - st->total_brate = ACELP_8k00; /* only temporary initialization - this is needed for get_next_indice() in the frame following NO_DATA frame */ - move32(); - } - - return error; -} - - -/*-------------------------------------------------------------------* - * ivas_read_format() - * - * Read IVAS format signaling - *-------------------------------------------------------------------*/ - -static ivas_error ivas_read_format( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word16 *num_bits_read /* o : number of IVAS signaling bits read from the bitstream */ -) -{ - Word16 k, idx; - Word32 ivas_total_brate; - ivas_error error; - - error = IVAS_ERR_OK; - move32(); - - ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; - move32(); - - *num_bits_read = 0; - move16(); - test(); - test(); - IF( !st_ivas->bfi && is_DTXrate( ivas_total_brate ) == 0 ) - { - /* read IVAS format */ - k = 0; - move16(); - if ( st_ivas->bit_stream[*num_bits_read] ) - { - k = 1; - move16(); - } - k = shl( k, 1 ); - ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); - move16(); - if ( st_ivas->bit_stream[*num_bits_read] ) - { - k = add( k, 1 ); - } - ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); - move16(); - SWITCH( k ) - { - case 0: - st_ivas->ivas_format = STEREO_FORMAT; - move32(); - BREAK; - case 1: - st_ivas->ivas_format = MC_FORMAT; - move32(); - BREAK; - case 2: - st_ivas->ivas_format = ISM_FORMAT; - move32(); - - IF( GE_32( ivas_total_brate, IVAS_24k4 ) ) - { - IF( st_ivas->bit_stream[*num_bits_read] ) - { - ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); - move16(); - IF( st_ivas->bit_stream[*num_bits_read] ) - { - st_ivas->ivas_format = SBA_ISM_FORMAT; - move32(); - } - ELSE - { - st_ivas->ivas_format = MASA_ISM_FORMAT; - move32(); - } - } - - ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); - move16(); - } - BREAK; - case 3: - IF( st_ivas->bit_stream[*num_bits_read] ) - { - st_ivas->ivas_format = MASA_FORMAT; - move32(); - } - ELSE - { - st_ivas->ivas_format = SBA_FORMAT; - move32(); - /* read Ambisonic (SBA) planar flag */ - st_ivas->sba_planar = st_ivas->bit_stream[( *num_bits_read ) + 1]; - move16(); - - /* read Ambisonic (SBA) order */ - st_ivas->sba_order = st_ivas->bit_stream[( *num_bits_read ) + 2 + SBA_PLANAR_BITS]; - move16(); - st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[( *num_bits_read ) + 1 + SBA_PLANAR_BITS], 1 ) ); - move16(); - if ( st_ivas->sba_order == 0 ) - { - st_ivas->ivas_format = SBA_ISM_FORMAT; - move32(); - } - } - ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); - move16(); - - BREAK; - } - } - ELSE IF( ( st_ivas->bfi == 0 ) && EQ_32( ivas_total_brate, IVAS_SID_5k2 ) ) - { - /* read IVAS format in SID frame */ - idx = 0; - move16(); - FOR( k = 0; k < SID_FORMAT_NBITS; k++ ) - { - idx += st_ivas->bit_stream[k] << ( SID_FORMAT_NBITS - 1 - k ); - } - - ( *num_bits_read ) = add( *num_bits_read, SID_FORMAT_NBITS ); - move16(); - st_ivas->sid_format = idx; - move16(); - - SWITCH( idx ) - { - case SID_DFT_STEREO: - case SID_MDCT_STEREO: - st_ivas->ivas_format = STEREO_FORMAT; - move32(); - BREAK; - case SID_ISM: - st_ivas->ivas_format = ISM_FORMAT; - move32(); - BREAK; - case SID_MULTICHANNEL: - st_ivas->ivas_format = MC_FORMAT; - move32(); - BREAK; - case SID_SBA_1TC: - st_ivas->ivas_format = SBA_FORMAT; - move32(); - st_ivas->element_mode_init = IVAS_SCE; - move16(); - BREAK; - case SID_SBA_2TC: - st_ivas->ivas_format = SBA_FORMAT; - move32(); - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - BREAK; - case SID_MASA_1TC: - st_ivas->ivas_format = MASA_FORMAT; - move32(); - st_ivas->element_mode_init = IVAS_SCE; - move16(); - BREAK; - case SID_MASA_2TC: - st_ivas->ivas_format = MASA_FORMAT; - move32(); - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); - IF( EQ_32( st_ivas->bit_stream[res_dec - 1], 1 ) ) - { - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - } - ELSE - { - st_ivas->element_mode_init = IVAS_CPE_DFT; - move16(); - } - BREAK; - default: - /* This should actually be impossible, since only 3 bits are read, so if this happens something is broken */ - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Invalid value %c found in SID format field.", st_ivas->sid_format ); - } - - IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) - { - if ( st_ivas->sba_analysis_order == 0 ) - { - st_ivas->sba_analysis_order = SBA_FOA_ORDER; - move16(); - } - } - - /* reset bitstream handle to avoid BER detection after reading the 2400 kbps for ch0 */ - st_ivas->bit_stream = st_ivas->bit_stream + ( *num_bits_read ); - ( *num_bits_read ) = 0; - move16(); - } - ELSE - { - /* In SID/NO_DATA frames, use the previous frame IVAS format */ - } - - return error; -} - - -/*-------------------------------------------------------------------* - * getNumChanSynthesis() - * - * get number of output channels used for synthesis/decoding - * (often different from number of output channels!) - *-------------------------------------------------------------------*/ - -/*! r: number of channels to be synthesised */ - -Word16 getNumChanSynthesis( - Decoder_Struct *st_ivas /* i : IVAS decoder structure */ -) -{ - Word16 n; - - n = add( st_ivas->nSCE, imult1616( CPE_CHANNELS, st_ivas->nCPE ) ); - test(); - test(); - IF( st_ivas->sba_dirac_stereo_flag ) - { - n = CPE_CHANNELS; - move16(); - } - ELSE IF( ( st_ivas->hMCT != NULL || EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) && NE_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) - { - n = st_ivas->nchan_transport; - move16(); - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) - { - IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) - { - n = add( st_ivas->nchan_transport, st_ivas->nchan_ism ); - } - ELSE - { - n = st_ivas->nchan_transport; - move16(); - } - } - - return n; -} - -/*-------------------------------------------------------------------* - * copy_decoder_config() - * - * Copy IVAS configuration structure to the CoreCoder state structure - *-------------------------------------------------------------------*/ - -void copy_decoder_config( - Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ - Decoder_State *st /* o : decoder state structure */ -) -{ - st->output_Fs = st_ivas->hDecoderConfig->output_Fs; - move32(); - st->Opt_AMR_WB = st_ivas->hDecoderConfig->Opt_AMR_WB; - move16(); - st->codec_mode = st_ivas->codec_mode; - move16(); - st->ini_frame = st_ivas->ini_frame; - move16(); - - st->bfi = st_ivas->bfi; - move16(); - - st->writeFECoffset = st_ivas->writeFECoffset; - move16(); - - st->element_mode = st_ivas->element_mode_init; - move16(); - - return; -} - -/*-------------------------------------------------------------------* - * ivas_init_decoder_front() - * - * Set decoder parameters to initial values - *-------------------------------------------------------------------*/ -ivas_error ivas_init_decoder_front( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -) -{ - ivas_error error; - - error = IVAS_ERR_OK; - move32(); - /*-----------------------------------------------------------------* - * Resets - *-----------------------------------------------------------------*/ - - st_ivas->nSCE = 0; - move16(); - st_ivas->nCPE = 0; - move16(); - st_ivas->nCPE_old = 0; - move16(); - st_ivas->nchan_transport = -1; - move16(); - st_ivas->ism_mode = ISM_MODE_NONE; - move32(); - st_ivas->mc_mode = MC_MODE_NONE; - move32(); - st_ivas->sba_dirac_stereo_flag = 0; - move16(); - - /* HRTF binauralization latency in ns */ - st_ivas->binaural_latency_ns = 0; - move32(); - - /*-------------------------------------------------------------------* - * Allocate and initialize Custom loudspeaker layout handle - *--------------------------------------------------------------------*/ - - IF( st_ivas->hDecoderConfig->Opt_LsCustom ) - { - IF( EQ_32( ( error = ivas_ls_custom_open_fx( &( st_ivas->hLsSetupCustom ) ) ), IVAS_ERR_OK ) ) - { - set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_azimuth_fx, MAX_OUTPUT_CHANNELS ); - set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_elevation_fx, MAX_OUTPUT_CHANNELS ); - } - ELSE - { - return error; - } - } - - /*-------------------------------------------------------------------* - * Allocate and initialize Head-Tracking handle - *--------------------------------------------------------------------*/ - - IF( st_ivas->hDecoderConfig->Opt_Headrotation ) - { - IF( NE_32( ( error = ivas_headTrack_open_fx( &( st_ivas->hHeadTrackData ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - error = ivas_orient_trk_SetTrackingType_fx( st_ivas->hHeadTrackData->OrientationTracker, st_ivas->hDecoderConfig->orientation_tracking ); - IF( NE_32( ( error ), IVAS_ERR_OK ) ) - { - return error; - } - } - /*-------------------------------------------------------------------* - * Allocate and initialize external orientation handle - *--------------------------------------------------------------------*/ - - IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation ) - { - IF( NE_32( ( error = ivas_external_orientation_open( &( st_ivas->hExtOrientationData ), st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - /*-------------------------------------------------------------------* - * Allocate and initialize combined orientation handle - *--------------------------------------------------------------------*/ - test(); - IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) - { - IF( NE_32( ( error = ivas_combined_orientation_open( &( st_ivas->hCombinedOrientationData ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - /*-------------------------------------------------------------------* - * Allocate HRTF binary handle - *--------------------------------------------------------------------*/ - - IF( st_ivas->hDecoderConfig->Opt_HRTF_binary ) - { - IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( st_ivas->hHrtfTD ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( st_ivas->hSetOfHRTF ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - /*-------------------------------------------------------------------* - * Allocate and initialize Binaural Renderer configuration handle - *--------------------------------------------------------------------*/ - test(); - test(); - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { - IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_render_config_init_from_rom_fx( &st_ivas->hRenderConfig ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - return error; -} - - -/*-------------------------------------------------------------------* - * ivas_init_decoder() - * - * Initialize IVAS decoder state structure - *-------------------------------------------------------------------*/ -ivas_error ivas_init_decoder_fx( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -) -{ - Word16 i, n, k; - Word16 sce_id, cpe_id; - Word16 numCldfbAnalyses, numCldfbSyntheses; - Word16 granularity, n_channels_transport_jbm; - Word32 output_Fs, ivas_total_brate; - Word32 binauralization_delay_ns; - AUDIO_CONFIG output_config; - DECODER_CONFIG_HANDLE hDecoderConfig; - ivas_error error; - Word32 ism_total_brate; - - error = IVAS_ERR_OK; - move32(); - output_Fs = st_ivas->hDecoderConfig->output_Fs; - move32(); - hDecoderConfig = st_ivas->hDecoderConfig; - output_config = hDecoderConfig->output_config; - ivas_total_brate = hDecoderConfig->ivas_total_brate; - move32(); - hDecoderConfig->last_ivas_total_brate = ivas_total_brate; - move32(); - st_ivas->last_active_ivas_total_brate = ivas_total_brate; - move32(); - /*-----------------------------------------------------------------* - * Set number of output channels for EXTERNAL output config. - *-----------------------------------------------------------------*/ - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) - { - hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 ); - move16(); - hDecoderConfig->nchan_out = add( hDecoderConfig->nchan_out, st_ivas->nchan_ism ); - move16(); - } - ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) - { - hDecoderConfig->nchan_out = add( st_ivas->nchan_transport, st_ivas->nchan_ism ); - move16(); - } - ELSE IF( !EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) - { - hDecoderConfig->nchan_out = st_ivas->nchan_transport; - move16(); - } - - st_ivas->hOutSetup.nchan_out_woLFE = hDecoderConfig->nchan_out; - move16(); - } - - /*-----------------------------------------------------------------* - * Set output and intern setup & renderer selection - *-----------------------------------------------------------------*/ - - st_ivas->intern_config = output_config; - move32(); - ivas_output_init( &( st_ivas->hOutSetup ), output_config ); - test(); - IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) - { - st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER; - move16(); - st_ivas->intern_config = IVAS_AUDIO_CONFIG_7_1_4; - move32(); - st_ivas->hOutSetup.output_config = st_ivas->intern_config; - move32(); - st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( st_ivas->intern_config ); - move16(); - } - test(); - IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER; - move32(); - st_ivas->intern_config = IVAS_AUDIO_CONFIG_HOA3; - move32(); - st_ivas->hOutSetup.output_config = IVAS_AUDIO_CONFIG_HOA3; - move32(); - st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 ); - move16(); - } - - /* Only initialize transport setup if it is used */ - IF( NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_INVALID ) ) - { - ivas_output_init( &( st_ivas->hTransSetup ), st_ivas->transport_config ); - } - - test(); - IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) - { - ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate ); - - ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hOutSetup.separateChannelEnabled ), &( st_ivas->hOutSetup.separateChannelIndex ), ivas_total_brate ); - } - - ivas_renderer_select( st_ivas ); - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - IF( EQ_16( ( error = ivas_ls_custom_output_init_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - st_ivas->hOutSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx; - move32(); - st_ivas->hOutSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx; - move32(); - st_ivas->hIntSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx; - move32(); - st_ivas->hIntSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx; - move32(); - } - ELSE - { - return error; - } - } - - ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->intern_config ); - - test(); - IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) - { - ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hIntSetup.separateChannelEnabled ), &( st_ivas->hIntSetup.separateChannelIndex ), ivas_total_brate ); - - test(); - IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled ) - { - st_ivas->hLsSetupCustom->separate_ch_found = 0; - move16(); - IF( GE_16( st_ivas->hOutSetup.nchan_out_woLFE, MCMASA_MIN_SPEAKERS_SEPARATE_CENTER ) ) - { - /* check for a speaker at (0, 0) if minimum speaker count is available */ - FOR( i = 0; i < st_ivas->hOutSetup.nchan_out_woLFE; i++ ) - { - test(); - IF( ( L_shr( st_ivas->hOutSetup.ls_azimuth_fx[i], Q22 ) == 0 ) && ( L_shr( st_ivas->hOutSetup.ls_elevation_fx[i], Q22 ) == 0 ) ) - { - st_ivas->hIntSetup.separateChannelIndex = i; - move16(); - st_ivas->hLsSetupCustom->separate_ch_found = 1; - move16(); - BREAK; - } - } - } - } - } - - - /*-----------------------------------------------------------------* - * Allocate and initialize SCE/CPE and other handles - *-----------------------------------------------------------------*/ - - IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) ) - { - st_ivas->nSCE = 1; /* in mono, there is always only one SCE */ - move16(); - st_ivas->nCPE = 0; - move16(); - st_ivas->nCPE_old = 0; - move16(); - st_ivas->nchan_transport = 1; - move16(); - sce_id = 0; - move16(); - - IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); - } - ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) - { - st_ivas->nchan_transport = CPE_CHANNELS; - move16(); - st_ivas->intern_config = IVAS_AUDIO_CONFIG_STEREO; - move32(); - - st_ivas->nSCE = 0; - move16(); - st_ivas->nCPE = 1; /* in stereo, there is always only one CPE */ - move16(); - st_ivas->nCPE_old = 0; - move16(); - cpe_id = 0; - move16(); - - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < st_ivas->nchan_transport; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - - /* init EFAP for custom LS output and set hTransSetup */ - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hOutSetup.ls_azimuth_fx, st_ivas->hOutSetup.ls_elevation_fx, st_ivas->hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) - { - return error; - } - - ivas_output_init( &( st_ivas->hTransSetup ), IVAS_AUDIO_CONFIG_STEREO ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) - { - Word32 element_brate_tmp[MAX_NUM_OBJECTS]; - - st_ivas->nSCE = st_ivas->nchan_transport; /* "st_ivas->nchan_transport" is known from ivas_dec_setup */ - move16(); - st_ivas->nCPE = 0; - move16(); - st_ivas->nCPE_old = 0; - move16(); - st_ivas->ism_extmeta_active = -1; - move16(); - st_ivas->ism_extmeta_cnt = 0; - move16(); - IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) - { - st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE; - move16(); - st_ivas->nSCE = MAX_PARAM_ISM_WAVE; - move16(); - - IF( NE_32( ( error = ivas_param_ism_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nSCE, element_brate_tmp ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) - { - IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, element_brate_tmp[sce_id] ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); - - st_ivas->hSCE[sce_id]->hCoreCoder[0]->is_ism_format = 1; - move16(); - } - - st_ivas->hISMDTX.sce_id_dtx = 0; - move16(); - - IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) - { - st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed3; - move16(); - } - ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) ) - { - FOR( sce_id = 0; sce_id < st_ivas->nSCE; ++sce_id ) - { - st_ivas->hSCE[sce_id]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = add( 2, sce_id ); - move16(); - } - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) - { - IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) ) - { - return error; - } - set16_fx( st_ivas->hSpar->hFbMixer->cldfb_cross_fade_fx, 0, CLDFB_NO_COL_MAX ); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup ) - { - IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ); - IF( hodirac_flag ) - { - IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE - { - IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - - test(); - test(); - IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) ) - { - IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; - move16(); - } - ELSE - { - Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1]; - - st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); - move16(); - IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ) - { - st_ivas->hSpar->enc_param_start_band = 0; - move16(); - set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands ); - st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands; - move16(); - } - - ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ), - st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); - } - st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); - move16(); - FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); - } - - FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, (res_dec) *CPE_CHANNELS ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - } - - /* create CPE element for DFT Stereo like upmix */ - test(); - IF( st_ivas->sba_dirac_stereo_flag && ( st_ivas->nCPE == 0 ) ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); - - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */ - st_ivas->hCPE[0]->hCoreCoder[1] = NULL; - } - - IF( GT_16( st_ivas->nCPE, 1 ) ) - { - IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - /* set CNA/CNG flags */ - ivas_sba_set_cna_cng_flag( st_ivas ); - } - ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) - { - /* if we start in ISM_MODE_NONE in MASA_ISM, that appears as normal MASA, but we may change to a mode with ISMs */ - st_ivas->ism_extmeta_active = -1; - move16(); - st_ivas->ism_extmeta_cnt = 0; - move16(); - IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - - test(); - test(); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) - { - IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); - } - - FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - } - - /* set CNA/CNG flags */ - ivas_sba_set_cna_cng_flag( st_ivas ); - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) - { - Word32 temp_brate[MAX_SCE]; - st_ivas->ism_extmeta_active = -1; - move16(); - st_ivas->ism_extmeta_cnt = 0; - move16(); - - st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); - move16(); - IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) ) - { - return error; - } - - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup ) - { - IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ); - IF( hodirac_flag ) - { - IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE - { - IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - - test(); - test(); - IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) ) - { - IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; - move16(); - } - ELSE - { - Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1]; - - st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); - move16(); - IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ) - { - st_ivas->hSpar->enc_param_start_band = 0; - move16(); - set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands ); - st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands; - move16(); - } - - ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ), - st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); - } - - FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); - } - - IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) - { - st_ivas->nCPE_old = st_ivas->nCPE; - move16(); - st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) ); - move16(); - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - } - - FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - } - - /* create CPE element for DFT Stereo like upmix */ - test(); - IF( st_ivas->sba_dirac_stereo_flag && st_ivas->nCPE == 0 ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */ - st_ivas->hCPE[0]->hCoreCoder[1] = NULL; - } - - IF( GT_16( st_ivas->nCPE, 1 ) ) - { - IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) - { - IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_osba_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - /* set CNA/CNG flags */ - ivas_sba_set_cna_cng_flag( st_ivas ); - } - ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) - { - st_ivas->ism_extmeta_active = -1; - move16(); - st_ivas->ism_extmeta_cnt = 0; - move16(); - - IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - k = 0; - move16(); - ism_total_brate = 0; - move32(); - - WHILE( ( k < SIZE_IVAS_BRATE_TBL ) && ( ivas_total_brate != ivas_brate_tbl[k] ) ) - { - k = add( k, 1 ); - } - test(); - IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) - { - /* one separated object */ - st_ivas->nSCE = 1; - move16(); - ism_total_brate = sep_object_brate[k - 2][0]; - move32(); - IF( NE_32( ( error = create_sce_dec( st_ivas, 0, ism_total_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[0]->hCoreCoder[0] ); - - IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, 1, NULL ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) - { - Word32 temp_brate[MAX_SCE]; - st_ivas->nSCE = st_ivas->nchan_ism; /* number of objects */ - move16(); - FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) - { - temp_brate[sce_id] = sep_object_brate[k - 2][st_ivas->nSCE - 1]; - move32(); - ism_total_brate = L_add( ism_total_brate, temp_brate[sce_id] ); - - IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, temp_brate[sce_id] ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); - } - - IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_omasa_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - - test(); - test(); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) - { - IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( NE_32( ( error = create_cpe_dec( st_ivas, 0, ivas_total_brate - ism_total_brate ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[0]->hCoreCoder[n] ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) - { - IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) ) - { - /* init EFAP for custom LS setup */ - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - st_ivas->nchan_transport = ivas_mc_ls_setup_get_num_channels_fx( ivas_mc_map_output_config_to_mc_ls_setup_fx( st_ivas->transport_config ) ); - move16(); - st_ivas->nSCE = 0; - move16(); - st_ivas->nCPE = shr( st_ivas->nchan_transport, 1 ); - move16(); - st_ivas->nCPE_old = 0; - move16(); - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - } - - IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) - { - /* init EFAP for custom LS setup */ - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - st_ivas->nSCE = 0; - move16(); - st_ivas->nCPE = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS >> 1; - move16(); - st_ivas->nCPE_old = 0; - move16(); - st_ivas->nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; - move16(); - - IF( NE_32( ( error = ivas_mc_paramupmix_dec_open( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->element_mode_init = IVAS_CPE_MDCT; - move16(); - FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - } - - IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) ) - { - /* init EFAP for custom LS setup */ - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - IF( NE_32( ( error = ivas_param_mc_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->hParamMC->proto_matrix_int_e = 0; - move16(); - FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); - - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - } - - IF( GT_16( st_ivas->nCPE, 1 ) ) - { - IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) - { - Word32 brate_sce, brate_cpe; - - ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate ); - - IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - - { - return error; - } - - st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); - move16(); - test(); - IF( NE_32( st_ivas->renderer_type, RENDERER_DISABLE ) && NE_32( st_ivas->renderer_type, RENDERER_MCMASA_MONO_STEREO ) ) - { - IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - test(); - test(); - IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled && !st_ivas->hLsSetupCustom->separate_ch_found ) - { - /* If no speaker matching the separated channel, compute panning gains for the separated channel. */ - IF( st_ivas->hVBAPdata == NULL ) - { - /* Distribute signal to all channels if VBAP is not properly initialized. */ - Word16 inv_sqr, sqr, exp = 15, exp_sqr; - move16(); - IF( EQ_16( st_ivas->hLsSetupCustom->num_spk, 1 ) ) - { - inv_sqr = 32767; // (1.0f in Q15)-1 - move16(); - } - ELSE - { - sqr = Sqrt16( st_ivas->hLsSetupCustom->num_spk, &exp ); - inv_sqr = BASOP_Util_Divide1616_Scale( 32767, sqr, &exp_sqr ); - exp_sqr = sub( exp_sqr, exp ); - IF( ( exp < 0 ) ) - { - inv_sqr = shr( inv_sqr, exp ); // exp_sqr - } - ELSE - { - inv_sqr = shl( inv_sqr, exp ); // exp_sqr - } - } - set16_fx( st_ivas->hLsSetupCustom->separate_ch_gains_fx, inv_sqr, st_ivas->hLsSetupCustom->num_spk ); - } - } - - - ivas_mcmasa_split_brate_fx( st_ivas->hOutSetup.separateChannelEnabled, ivas_total_brate, st_ivas->nSCE, st_ivas->nCPE, &brate_sce, &brate_cpe ); - - FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) - { - IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, brate_sce ) ), IVAS_ERR_OK ) ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); - } - - FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) - { - st_ivas->element_mode_init = IVAS_CPE_MDCT; /* element_mode_init was IVAS_SCE for SCE initialization */ - move16(); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, brate_cpe ) ), IVAS_ERR_OK ) ) - { - return error; - } - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } - } - - /* create CPE element for DFT Stereo like upmix */ - IF( st_ivas->sba_dirac_stereo_flag ) - { - Word32 res_dec, res_frac; - iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); - IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */ - st_ivas->hCPE[0]->hCoreCoder[1] = NULL; - } - - /* set CNA/CNG flags */ - test(); - test(); - IF( EQ_16( st_ivas->nchan_transport, 1 ) && ( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) ) - { - st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag = 1; - move16(); - st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag = 1; - move16(); - } - } - } - - - /*-----------------------------------------------------------------* - * Allocate and initialize HP20 filter memories - *-----------------------------------------------------------------*/ - - /* set number of output channels used for synthesis/decoding */ - n = getNumChanSynthesis( st_ivas ); - - IF( n > 0 ) - { - IF( ( st_ivas->mem_hp20_out_fx = (Word32 **) malloc( n * sizeof( Word32 * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) ); - } - } - ELSE - { - st_ivas->mem_hp20_out_fx = NULL; - } - - FOR( i = 0; i < n; i++ ) - { - IF( ( st_ivas->mem_hp20_out_fx[i] = (Word32 *) malloc( ( L_HP20_MEM + 2 ) * sizeof( Word32 ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) ); - } - set32_fx( st_ivas->mem_hp20_out_fx[i], 0, L_HP20_MEM + 2 ); - } - - /*-------------------------------------------------------------------* - * Allocate and initialize rendering handles - *--------------------------------------------------------------------*/ - test(); - test(); - test(); - test(); - test(); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) - { - IF( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - /* ParamISM is handled separately from other common config */ - ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) && ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) ) - { - IF( NE_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) - { - IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) - { - Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; - Word16 num_src; - IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) - { - return error; - } - Word16 nchan_rend = num_src; - move16(); - test(); - IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]]; - if ( Src_p->SrcSpatial_p != NULL ) - { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - - IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { - IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); - - n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); - - - IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) ) - { - IF( NE_32( ( error = ivas_ls_setup_conversion_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) ) - { - IF( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) - { - test(); - test(); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && EQ_32( st_ivas->ivas_format, MC_FORMAT ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) ) - { - IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hIntSetup.ls_azimuth_fx, st_ivas->hIntSetup.ls_elevation_fx, st_ivas->hIntSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), - IVAS_ERR_OK ) ) - { - return error; - } - - st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns; - move32(); - - test(); - IF( ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) && ( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) ) - { - granularity = NS2SA_FX2( output_Fs, CLDFB_SLOT_NS ); - - n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); - - - IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, MC_PARAMUPMIX_MAX_INPUT_CHANS, MC_PARAMUPMIX_MAX_INPUT_CHANS, granularity ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE - { - granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); - - n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); - - IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - - IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) - { - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) - { - /* Allocate TD renderer for the objects in DISC mode */ - Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; - Word16 num_src; - IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) - { - return error; - } - Word16 nchan_rend = num_src; - move16(); - test(); - if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]]; - if ( Src_p->SrcSpatial_p != NULL ) - { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - - /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ - IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - test(); - test(); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) - { - /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ - IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( ( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) && - ( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) || EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) && - ( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) || - EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) || - EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || - EQ_32( st_ivas->renderer_type, RENDERER_OSBA_STEREO ) || - EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || - EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) || - EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || - EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || - EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) ) - { - IF( NE_32( ( error = ivas_ism_renderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) - { - test(); - test(); - IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) - { - /* Allocate TD renderer for the objects in DISC mode */ - Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; - Word16 num_src; - IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) - { - return error; - } - Word16 nchan_rend = num_src; - move16(); - - test(); - if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]]; - if ( Src_p->SrcSpatial_p != NULL ) - { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - } - } - - /*-----------------------------------------------------------------* - * LFE handles for rendering after rendering to adjust LFE delay to binaural filter delay - *-----------------------------------------------------------------*/ - test(); - IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) - { - binauralization_delay_ns = st_ivas->binaural_latency_ns; - move32(); - IF( st_ivas->hBinRenderer != NULL ) - { - IF( st_ivas->hBinRenderer->render_lfe ) - { - { - /* Account for filterbank delay */ - binauralization_delay_ns = L_add( binauralization_delay_ns, IVAS_FB_DEC_DELAY_NS ); - } - } - ELSE - { - binauralization_delay_ns = 0; - move32(); - } - } - - IF( NE_32( ( error = ivas_create_lfe_dec_fx( &st_ivas->hLFE, output_Fs, binauralization_delay_ns ) ), IVAS_ERR_OK ) ) - { - return error; - } - - set32_fx( st_ivas->hLFE->prevsynth_buf_fx, 0, LFE_PLC_BUFLEN ); - set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k ); - } - - /*-----------------------------------------------------------------* - * CLDFB handles for rendering - *-----------------------------------------------------------------*/ - - ivas_init_dec_get_num_cldfb_instances_ivas_fx( st_ivas, &numCldfbAnalyses, &numCldfbSyntheses ); - - FOR( i = 0; i < numCldfbAnalyses; i++ ) - { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - FOR( ; i < MAX_INTERN_CHANNELS; i++ ) - { - st_ivas->cldfbAnaDec[i] = NULL; - } - - FOR( i = 0; i < numCldfbSyntheses; i++ ) - { - IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - FOR( ; i < MAX_OUTPUT_CHANNELS; i++ ) - { - st_ivas->cldfbSynDec[i] = NULL; - } - - /* CLDFB Interpolation weights */ - test(); - test(); - test(); - IF( ( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) && !st_ivas->sba_dirac_stereo_flag && NE_16( st_ivas->hDecoderConfig->nchan_out, 1 ) ) - { - Word16 Q_cldfbSynDec = Q11; - move16(); - ivas_spar_get_cldfb_gains_fx( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig ); - - FOR( i = 0; i < st_ivas->cldfbAnaDec[0]->cldfb_state_length; i++ ) - { - st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i], 16 ); // Scaling down from 27 to 11 - move32(); - } - st_ivas->cldfbAnaDec[0]->Q_cldfb_state = Q11; - move16(); - FOR( i = 0; i < st_ivas->cldfbSynDec[0]->cldfb_state_length; i++ ) - { - st_ivas->cldfbSynDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbSynDec[0]->cldfb_state_fx[i], sub( 21, Q_cldfbSynDec ) ); // Scaling down from 21 to Q_cldfbSynDec - move32(); - } - st_ivas->cldfbSynDec[0]->Q_cldfb_state = Q11; - move16(); - } - - /*-----------------------------------------------------------------* - * Allocate and initialize limiter struct - *-----------------------------------------------------------------*/ - - IF( NE_32( ( error = ivas_limiter_open_fx( &st_ivas->hLimiter, hDecoderConfig->nchan_out, output_Fs ) ), IVAS_ERR_OK ) ) - { - return error; - } - - /*-----------------------------------------------------------------* - * Allocate and initialize JBM struct + buffer - *-----------------------------------------------------------------*/ - - IF( st_ivas->hTcBuffer == NULL ) - - { - /* no module has yet open the TC buffer, open a default one */ - n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); - - IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, ivas_jbm_dec_get_tc_buffer_mode( st_ivas ), n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( st_ivas->hTcBuffer == NULL ) - { - /* we need the handle anyway, but without the buffer*/ - IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_NONE, 0, 0, 0, 1 ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - IF( st_ivas->hJbmMetadata == NULL ) - { - IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - IF( NE_32( ( error = ivas_jbm_dec_metadata_open( st_ivas ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - - /*-----------------------------------------------------------------* - * Allocate floating-point output audio buffers - *-----------------------------------------------------------------*/ - st_ivas->p_out_len = ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); - move16(); - FOR( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ ) - { - /* note: these are intra-frame heap memories */ - IF( ( st_ivas->p_output_fx[n] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) ); - } - set32_fx( st_ivas->p_output_fx[n], 0, 48000 / FRAMES_PER_SEC ); - } - - FOR( ; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) - { - st_ivas->p_output_fx[n] = NULL; - } - return error; -} - -/*------------------------------------------------------------------------- - * destroy_core_dec() - * - * Close core decoder handles - *-------------------------------------------------------------------------*/ - -void destroy_core_dec_fx( - DEC_CORE_HANDLE hCoreCoder /* i/o: core decoder structure */ -) -{ - IF( EQ_16( hCoreCoder->element_mode, EVS_MONO ) ) - { - destroy_cldfb_decoder_fx( hCoreCoder ); - } - ELSE - { - destroy_cldfb_decoder_ivas_fx( hCoreCoder ); - } - - IF( hCoreCoder->hGSCDec != NULL ) - { - free( hCoreCoder->hGSCDec ); - hCoreCoder->hGSCDec = NULL; - } - - IF( hCoreCoder->hPFstat != NULL ) - { - free( hCoreCoder->hPFstat ); - hCoreCoder->hPFstat = NULL; - } - - IF( hCoreCoder->hMusicPF != NULL ) - { - free( hCoreCoder->hMusicPF ); - hCoreCoder->hMusicPF = NULL; - } - - IF( hCoreCoder->hBPF != NULL ) - { - free( hCoreCoder->hBPF ); - hCoreCoder->hBPF = NULL; - } - - IF( hCoreCoder->hBWE_zero != NULL ) - { - free( hCoreCoder->hBWE_zero ); - hCoreCoder->hBWE_zero = NULL; - } - - IF( hCoreCoder->hTdCngDec != NULL ) - { - free( hCoreCoder->hTdCngDec ); - hCoreCoder->hTdCngDec = NULL; - } - - IF( hCoreCoder->hSC_VBR != NULL ) - { - free( hCoreCoder->hSC_VBR ); - hCoreCoder->hSC_VBR = NULL; - } - - IF( hCoreCoder->hAmrwb_IO != NULL ) - { - free( hCoreCoder->hAmrwb_IO ); - hCoreCoder->hAmrwb_IO = NULL; - } - - IF( hCoreCoder->hBWE_TD != NULL ) - { - free( hCoreCoder->hBWE_TD ); - hCoreCoder->hBWE_TD = NULL; - } - - IF( hCoreCoder->hBWE_FD != NULL ) - { - free( hCoreCoder->hBWE_FD ); - hCoreCoder->hBWE_FD = NULL; - } - - IF( hCoreCoder->hBWE_FD_HR != NULL ) - { - free( hCoreCoder->hBWE_FD_HR ); - hCoreCoder->hBWE_FD_HR = NULL; - } - - IF( hCoreCoder->hWIDec != NULL ) - { - free( hCoreCoder->hWIDec ); - hCoreCoder->hWIDec = NULL; - } - - IF( hCoreCoder->hTECDec != NULL ) - { - free( hCoreCoder->hTECDec ); - hCoreCoder->hTECDec = NULL; - } - - IF( hCoreCoder->hTcxLtpDec != NULL ) - { - free( hCoreCoder->hTcxLtpDec ); - hCoreCoder->hTcxLtpDec = NULL; - } - - IF( hCoreCoder->hTcxDec != NULL ) - { - free( hCoreCoder->hTcxDec ); - hCoreCoder->hTcxDec = NULL; - } - - IF( hCoreCoder->hTcxCfg != NULL ) - { - free( hCoreCoder->hTcxCfg ); - hCoreCoder->hTcxCfg = NULL; - } - - IF( hCoreCoder->hTonalMDCTConc != NULL ) - { - free( hCoreCoder->hTonalMDCTConc ); - hCoreCoder->hTonalMDCTConc = NULL; - } - - IF( hCoreCoder->hIGFDec != NULL ) - { - free( hCoreCoder->hIGFDec ); - hCoreCoder->hIGFDec = NULL; - } - - IF( hCoreCoder->hPlcInfo != NULL ) - { - free( hCoreCoder->hPlcInfo ); - hCoreCoder->hPlcInfo = NULL; - } - - IF( hCoreCoder->hHQ_core != NULL ) - { - free( hCoreCoder->hHQ_core ); - hCoreCoder->hHQ_core = NULL; - } - - IF( hCoreCoder->hHQ_nbfec != NULL ) - { - free( hCoreCoder->hHQ_nbfec ); - hCoreCoder->hHQ_nbfec = NULL; - } - - return; -} - -/*------------------------------------------------------------------------- - * ivas_initialize_handles_dec() - * - * NULL initialization of handles - *-------------------------------------------------------------------------*/ - -void ivas_initialize_handles_dec( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -) -{ - Word16 i; - - FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) - { - st_ivas->cldfbAnaDec[i] = NULL; - } - - FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) - { - st_ivas->cldfbSynDec[i] = NULL; - } - - /* SCE handles */ - FOR( i = 0; i < MAX_SCE; i++ ) - { - st_ivas->hSCE[i] = NULL; - } - - /* CPE handles */ - FOR( i = 0; i < MAX_CPE; i++ ) - { - st_ivas->hCPE[i] = NULL; - } - - st_ivas->bit_stream = NULL; - st_ivas->mem_hp20_out_fx = NULL; - st_ivas->hLimiter = NULL; - - /* ISM metadata handles */ - FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) - { - st_ivas->hIsmMetaData[i] = NULL; - } - - /* spatial coding handles */ - st_ivas->hDirAC = NULL; - st_ivas->hParamIsmDec = NULL; - st_ivas->hSpar = NULL; - st_ivas->hMasa = NULL; - st_ivas->hQMetaData = NULL; - st_ivas->hMCT = NULL; - st_ivas->hMCParamUpmix = NULL; - st_ivas->hParamMC = NULL; - st_ivas->hLFE = NULL; - - /* rendering handles */ - st_ivas->hBinRenderer = NULL; - st_ivas->hDiracDecBin = NULL; - st_ivas->hDirACRend = NULL; - st_ivas->hSpatParamRendCom = NULL; - st_ivas->hLsSetUpConversion = NULL; - st_ivas->hEFAPdata = NULL; - st_ivas->hVBAPdata = NULL; - st_ivas->hIsmRendererData = NULL; - st_ivas->hBinRendererTd = NULL; - st_ivas->hMonoDmxRenderer = NULL; - st_ivas->hCrendWrapper = NULL; - st_ivas->hReverb = NULL; - st_ivas->hSetOfHRTF = NULL; - st_ivas->hHrtfFastConv = NULL; - st_ivas->hHrtfParambin = NULL; - st_ivas->hoa_dec_mtx = NULL; - st_ivas->hMasaIsmData = NULL; - st_ivas->hSbaIsmData = NULL; - - st_ivas->hHeadTrackData = NULL; - st_ivas->hHrtfTD = NULL; - st_ivas->hLsSetupCustom = NULL; - st_ivas->hRenderConfig = NULL; - st_ivas->hExtOrientationData = NULL; - st_ivas->hCombinedOrientationData = NULL; - - - /* JBM handles */ - st_ivas->hTcBuffer = NULL; - st_ivas->hJbmMetadata = NULL; - - /* floating-point output audio buffers */ - FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ ) - { - st_ivas->p_output_fx[i] = NULL; - } - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_destroy_dec() - * - * Close IVAS decoder handles - *-------------------------------------------------------------------------*/ - -void ivas_destroy_dec_fx( - Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ -) -{ - Word16 i; - - /* CLDFB handles */ - FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) - { - IF( st_ivas->cldfbAnaDec[i] != NULL ) - { - deleteCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ) ); - } - } - - FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) - { - IF( st_ivas->cldfbSynDec[i] != NULL ) - { - deleteCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ) ); - } - } - - /* SCE handles */ - FOR( i = 0; i < MAX_SCE; i++ ) - { - IF( st_ivas->hSCE[i] != NULL ) - { - destroy_sce_dec( st_ivas->hSCE[i] ); - st_ivas->hSCE[i] = NULL; - } - } - - /* CPE handles */ - FOR( i = 0; i < MAX_CPE; i++ ) - { - IF( st_ivas->hCPE[i] != NULL ) - { - /* set pointer to NULL as core coder already deallocated in destroy_sce_dec() */ - test(); - IF( st_ivas->sba_dirac_stereo_flag && EQ_16( st_ivas->nchan_transport, 1 ) ) - { - st_ivas->hCPE[i]->hCoreCoder[0] = NULL; - st_ivas->hCPE[i]->hCoreCoder[1] = NULL; - } - destroy_cpe_dec( st_ivas->hCPE[i] ); - st_ivas->hCPE[i] = NULL; - } - } - - /* HP20 filter handles */ - IF( st_ivas->mem_hp20_out_fx != NULL ) - { - FOR( i = 0; i < getNumChanSynthesis( st_ivas ); i++ ) - { - free( st_ivas->mem_hp20_out_fx[i] ); - st_ivas->mem_hp20_out_fx[i] = NULL; - } - free( st_ivas->mem_hp20_out_fx ); - st_ivas->mem_hp20_out_fx = NULL; - } - - /* ISM metadata handles */ - ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 ); - - /* ISM renderer handle */ - ivas_ism_renderer_close( &( st_ivas->hIsmRendererData ) ); - - /* DirAC handle */ - IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) - { - ivas_param_ism_dec_close_fx( &( st_ivas->hParamIsmDec ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config ); - } - ELSE - { - ivas_dirac_rend_close_fx( &( st_ivas->hDirACRend ) ); - ivas_spat_hSpatParamRendCom_close_fx( &( st_ivas->hSpatParamRendCom ) ); - ivas_dirac_dec_close_fx( &( st_ivas->hDirAC ) ); - } - - /* SPAR handle */ - ivas_spar_dec_close_fx( &( st_ivas->hSpar ), st_ivas->hDecoderConfig->output_Fs, 0 ); - - /* HOA decoder matrix */ - IF( st_ivas->hoa_dec_mtx != NULL ) - { - free( st_ivas->hoa_dec_mtx ); - st_ivas->hoa_dec_mtx = NULL; - } - - /* MASA decoder structure */ - - ivas_masa_dec_close_fx( &( st_ivas->hMasa ) ); - /* Qmetadata handle */ - ivas_qmetadata_close_fx( &st_ivas->hQMetaData ); - - /* MCT handle */ - ivas_mct_dec_close( &st_ivas->hMCT ); - - /* LFE handle */ - ivas_lfe_dec_close_fx( &( st_ivas->hLFE ) ); - - /* Param-Upmix MC handle */ - ivas_mc_paramupmix_dec_close( &( st_ivas->hMCParamUpmix ) ); - - /* Parametric MC handle */ - ivas_param_mc_dec_close_fx( &st_ivas->hParamMC ); - - /* EFAP handle */ - efap_free_data_fx( &st_ivas->hEFAPdata ); - - /* VBAP handle */ - vbap_free_data_fx( &( st_ivas->hVBAPdata ) ); - /* Fastconv binaural renderer handle */ - ivas_binRenderer_close_fx( &st_ivas->hBinRenderer ); - - /* Parametric binaural renderer handle */ - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); - - /* Crend handle */ - - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); - - /* Reverb handle */ - ivas_reverb_close( &st_ivas->hReverb ); - - /* LS config converter handle */ - - ivas_ls_setup_conversion_close_fx( &st_ivas->hLsSetUpConversion ); - /* Custom LS configuration handle */ - IF( st_ivas->hLsSetupCustom != NULL ) - { - free( st_ivas->hLsSetupCustom ); - st_ivas->hLsSetupCustom = NULL; - } - - /* Mono downmix structure */ - ivas_mono_dmx_renderer_close( &st_ivas->hMonoDmxRenderer ); - - /* OSBA structure */ - - ivas_osba_data_close_fx( &st_ivas->hSbaIsmData ); - - /* OMASA structure */ - ivas_omasa_data_close_fx( &st_ivas->hMasaIsmData ); - /* Head track data handle */ - ivas_headTrack_close_fx( &st_ivas->hHeadTrackData ); - - /* External orientation data handle */ - ivas_external_orientation_close_fx( &st_ivas->hExtOrientationData ); - - /* Combined orientation data handle */ - ivas_combined_orientation_close_fx( &st_ivas->hCombinedOrientationData ); - - /* Time Domain binaural renderer handle */ - IF( st_ivas->hBinRendererTd != NULL ) - { - ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); - } - ELSE IF( st_ivas->hHrtfTD != NULL ) - { - BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval ); - ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD ); - } - - /* CRend binaural renderer handle */ - ivas_HRTF_CRend_binary_close_fx( &st_ivas->hSetOfHRTF ); - - /* Fastconv HRTF memories */ - ivas_binaural_hrtf_close( &st_ivas->hHrtfFastConv ); - - /* Fastconv HRTF filters */ - ivas_HRTF_fastconv_binary_close_fx( &st_ivas->hHrtfFastConv ); - - /* Parametric binauralizer HRTF filters */ - ivas_HRTF_parambin_binary_close_fx( &st_ivas->hHrtfParambin ); - - /* Config. Renderer */ - ivas_render_config_close( &( st_ivas->hRenderConfig ) ); - - /* Limiter struct */ - ivas_limiter_close_fx( &( st_ivas->hLimiter ) ); - - IF( st_ivas->hDecoderConfig != NULL ) - { - free( st_ivas->hDecoderConfig ); - st_ivas->hDecoderConfig = NULL; - } - - ivas_jbm_dec_tc_buffer_close( &st_ivas->hTcBuffer ); - - IF( st_ivas->hJbmMetadata != NULL ) - { - free( st_ivas->hJbmMetadata ); - st_ivas->hJbmMetadata = NULL; - } - - /* floating-point output audio buffers */ - FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ ) - { - - IF( st_ivas->p_output_fx[i] != NULL ) - { - free( st_ivas->p_output_fx[i] ); - st_ivas->p_output_fx[i] = NULL; - } - } - - /* main IVAS handle */ - free( st_ivas ); - - return; -} - - -/*-------------------------------------------------------------------* - * ivas_init_dec_get_num_cldfb_instances() - * - * Return number of CLDFB analysis & synthesis instances - *-------------------------------------------------------------------*/ - -/*! r: number of cldfb instances */ -void ivas_init_dec_get_num_cldfb_instances( - Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ - Word16 *numCldfbAnalyses, /* o : number of needed CLDFB analysis instances */ - Word16 *numCldfbSyntheses /* o : number of needed CLDFB synthesis instances */ -) -{ - IVAS_FORMAT ivas_format; - *numCldfbAnalyses = st_ivas->nchan_transport; - move16(); - *numCldfbSyntheses = st_ivas->hDecoderConfig->nchan_out; - move16(); - - test(); - IF( ( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) - { - ivas_format = SBA_FORMAT; - move32(); - } - ELSE - { - ivas_format = st_ivas->ivas_format; - move32(); - } - - SWITCH( st_ivas->renderer_type ) - { - case RENDERER_BINAURAL_PARAMETRIC: - case RENDERER_BINAURAL_PARAMETRIC_ROOM: - case RENDERER_STEREO_PARAMETRIC: - IF( EQ_16( st_ivas->nchan_transport, 1 ) ) - { - *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); - move16(); - } - - test(); - IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) && st_ivas->hOutSetup.separateChannelEnabled ) - { - *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); - move16(); - } - - IF( EQ_32( ivas_format, SBA_ISM_FORMAT ) ) - { - IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) - { - *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism ); - move16(); - } - } - - IF( EQ_32( ivas_format, MASA_ISM_FORMAT ) ) - { - test(); - IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) - { - *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism ); - move16(); - } - ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) - { - *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); - move16(); - } - } - IF( st_ivas->hDiracDecBin->useTdDecorr ) - { - *numCldfbAnalyses = add( *numCldfbAnalyses, 2 ); - move16(); - } - BREAK; - case RENDERER_NON_DIEGETIC_DOWNMIX: - case RENDERER_MONO_DOWNMIX: - test(); - test(); - IF( EQ_32( ivas_format, ISM_FORMAT ) || EQ_32( ivas_format, MASA_ISM_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) - { - /* CLDFB not used in rendering */ - *numCldfbAnalyses = 0; - move16(); - *numCldfbSyntheses = 0; - move16(); - } - BREAK; - case RENDERER_DIRAC: - IF( EQ_32( ivas_format, SBA_FORMAT ) ) - { - *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans; - move16(); - - test(); - IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) ) - { - *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE; - move16(); - } - ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) ) - { - *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans; - move16(); - } - ELSE - { - *numCldfbSyntheses = MAX_OUTPUT_CHANNELS; - move16(); - } - } - IF( NE_32( ivas_format, SBA_FORMAT ) ) - { - test(); - test(); - IF( GT_16( st_ivas->nchan_transport, 2 ) && ( st_ivas->sba_planar != 0 ) ) - { - *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); - move16(); - } - ELSE IF( EQ_16( st_ivas->nchan_transport, 1 ) && EQ_32( st_ivas->hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) ) - { - *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); - move16(); - } - } - BREAK; - case RENDERER_MC_PARAMMC: - IF( LE_16( st_ivas->hDecoderConfig->nchan_out, 2 ) ) - { - /* CLDFB not used in rendering */ - *numCldfbAnalyses = 0; - move16(); - *numCldfbSyntheses = 0; - move16(); - } - ELSE - { - *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas ); - move16(); - } - BREAK; - case RENDERER_PARAM_ISM: - /* Already correct with no exception */ - BREAK; - case RENDERER_DISABLE: - /* CLDFB not used */ - *numCldfbAnalyses = 0; - move16(); - *numCldfbSyntheses = 0; - move16(); - BREAK; - case RENDERER_MC: - case RENDERER_SBA_LINEAR_DEC: - case RENDERER_TD_PANNING: - case RENDERER_BINAURAL_OBJECTS_TD: - case RENDERER_MCMASA_MONO_STEREO: - case RENDERER_BINAURAL_MIXER_CONV: - case RENDERER_BINAURAL_MIXER_CONV_ROOM: - case RENDERER_BINAURAL_FASTCONV: - case RENDERER_BINAURAL_FASTCONV_ROOM: - case RENDERER_OSBA_STEREO: - case RENDERER_OSBA_AMBI: - case RENDERER_OSBA_LS: - test(); - IF( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) - { - IF( st_ivas->sba_dirac_stereo_flag != 0 ) - { - *numCldfbAnalyses = 0; - move16(); - *numCldfbSyntheses = 0; - move16(); - } - ELSE - { - *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans; - move16(); - - test(); - IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) ) - { - *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE; - move16(); - } - ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) ) - { - *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans; - move16(); - } - ELSE - { - *numCldfbSyntheses = MAX_OUTPUT_CHANNELS; - move16(); - } - test(); - IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) - { - *numCldfbAnalyses = add( st_ivas->nchan_ism, st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans ); - move16(); - } - } - } - ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) ) - { - /* do nothing for ParamMC */ - } - ELSE - { - /* CLDFB not used in rendering */ - *numCldfbAnalyses = 0; - move16(); - *numCldfbSyntheses = 0; - move16(); - } - BREAK; - case RENDERER_SBA_LINEAR_ENC: - IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) ) - { - *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas ); - move16(); - } - ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) - { - *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe ); - move16(); - } - ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) - { - *numCldfbAnalyses = st_ivas->nchan_transport; - move16(); - *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe ); - move16(); - } - ELSE - { - /* CLDFB not used in rendering */ - *numCldfbAnalyses = 0; - move16(); - *numCldfbSyntheses = 0; - move16(); - } - BREAK; - default: - assert( 0 && "Renderer not handled for CLDFB reservation." ); - } - test(); - test(); - IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) ) - { - test(); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) - { - *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MAX_INPUT_CHANS, *numCldfbAnalyses ); - move16(); - } - ELSE - { - *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbAnalyses ); - move16(); - } - *numCldfbSyntheses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbSyntheses ); - move16(); - } - - return; -} - - -/*---------------------------------------------------------------------* - * doSanityChecks_IVAS() - * - * Sanity checks - verify if the decoder set-up parameters are - * not in conflict with the IVAS format - *---------------------------------------------------------------------*/ - -static ivas_error doSanityChecks_IVAS( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -) -{ - Word32 output_Fs; - AUDIO_CONFIG output_config; - - output_Fs = st_ivas->hDecoderConfig->output_Fs; - move32(); - output_config = st_ivas->hDecoderConfig->output_config; - move32(); - /*-----------------------------------------------------------------* - * Sanity checks - *-----------------------------------------------------------------*/ - - IF( EQ_32( output_Fs, 8000 ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "8kHz output sampling rate is not supported in IVAS." ); - } - - assert( st_ivas->ivas_format != UNDEFINED_FORMAT && "\n IVAS format undefined" ); - assert( st_ivas->ivas_format != MONO_FORMAT && "\n Wrong IVAS format: MONO" ); - - /* Verify output configuration compatible with non-diegetic panning */ - test(); - test(); - IF( st_ivas->hDecoderConfig->Opt_non_diegetic_pan && NE_32( st_ivas->ivas_format, MONO_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_ISM1 ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Error: Non-diegetic panning not supported in this IVAS format" ); - } - - /* Verify stereo output configuration */ - IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) - { - test(); - test(); - test(); - test(); - test(); - test(); - test(); - IF( NE_32( output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_2 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Wrong output configuration specified for Stereo!" ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) - { - /* Verify ISM output configuration */ - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for ISM" ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) - { - /* Verify SBA output coniguration */ - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for SBA" ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) - { - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for MASA!" ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) - { - /* Verify MC output configuration */ - test(); - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for Multi-channel" ); - } - } - - - IF( st_ivas->hDecoderConfig->Opt_Headrotation ) - { - test(); - test(); - IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) - { - return IVAS_ERROR( IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED, "Wrong set-up: Head-rotation not supported in this configuration" ); - } - } - - IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation ) - { - test(); - test(); - IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) - { - return IVAS_ERROR( IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED, "Wrong set-up: External orientation not supported in this configuration" ); - } - } - - IF( st_ivas->hDecoderConfig->Opt_dpid_on ) - { - test(); - IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) - { - return IVAS_ERROR( IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED, "Wrong set-up: Directivity is not supported in this output configuration." ); - } - } - - IF( st_ivas->hDecoderConfig->Opt_aeid_on ) - { - IF( NE_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { - return IVAS_ERROR( IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED, "Wrong set-up: Acoustic environment is not supported in this output configuration." ); - } - } - - IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) - { - test(); - IF( NE_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - - return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" ); - } - } - - - return IVAS_ERR_OK; -} diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index ecd38aabe..463bc22fc 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -1,4 +1,3120 @@ +/****************************************************************************************************** + + (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, + Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., + Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, + Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other + contributors to this repository. All Rights Reserved. + + This software is protected by copyright law and by international treaties. + The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, + Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., + Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, + Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other + contributors to this repository retain full ownership rights in their respective contributions in + the software. This notice grants no license of any kind, including but not limited to patent + license, nor is any license granted by implication, estoppel or otherwise. + + Contributors are required to enter into the IVAS codec Public Collaboration agreement before making + contributions. + + This software is provided "AS IS", without any express or implied warranties. The software is in the + development stage. It is intended exclusively for experts who have experience with such software and + solely for the purpose of inspection. All implied warranties of non-infringement, merchantability + and fitness for a particular purpose are hereby disclaimed and excluded. + + Any dispute, controversy or claim arising under or in relation to providing this software shall be + submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in + accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and + the United Nations Convention on Contracts on the International Sales of Goods. + +*******************************************************************************************************/ + +#include +#include +#include +#include "options.h" +#include "ivas_cnst.h" +#include "ivas_prot_rend_fx.h" +#include "rom_com.h" +#include "ivas_rom_com.h" +#include "ivas_stat_enc.h" +#include "prot_fx.h" +#include "wmc_auto.h" #include "ivas_prot_fx.h" + + +/*-------------------------------------------------------------------* + * Local function prototypes + *-------------------------------------------------------------------*/ + +static ivas_error ivas_read_format( Decoder_Struct *st_ivas, Word16 *num_bits_read ); + +static ivas_error doSanityChecks_IVAS( Decoder_Struct *st_ivas ); + + +/*-------------------------------------------------------------------* + * ivas_dec_setup() + * + * IVAS decoder setup + *-------------------------------------------------------------------*/ + +ivas_error ivas_dec_setup( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + UWord16 *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ + Word16 *data /* o : output synthesis signal */ +) +{ + Word16 k, idx, num_bits_read; + Word16 nchan_ism, element_mode_flag; + Decoder_State *st; + Word32 ivas_total_brate; + ivas_error error; + + error = IVAS_ERR_OK; + move32(); + num_bits_read = 0; + move16(); + element_mode_flag = 0; + move16(); + + ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + move32(); + + /*-------------------------------------------------------------------* + * Read IVAS format + *-------------------------------------------------------------------*/ + + ivas_read_format( st_ivas, &num_bits_read ); + + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + Word16 num_src = 0; + move16(); + + /*-------------------------------------------------------------------* + * Read other signling (ISM/MC mode, number of channels, etc.) + *-------------------------------------------------------------------*/ + + IF( is_DTXrate( ivas_total_brate ) == 0 ) + { + /*-------------------------------------------------------------------* + * Read IVAS format related signaling: + * - in ISM : read number of objects + * - in SBA : read SBA planar flag and SBA order + * - in MASA : read number of TC + * - in MC : read LS setup + *-------------------------------------------------------------------*/ + + IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) + { + element_mode_flag = 1; + move16(); + } + ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) + { + /* read the number of objects */ + st_ivas->nchan_transport = 1; + move16(); + nchan_ism = 1; + move16(); + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); + k = extract_l( L_sub( res_dec, 1 ) ); + + WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) ) + { + nchan_ism = add( nchan_ism, 1 ); + k = sub( k, 1 ); + } + + st_ivas->nchan_ism = nchan_ism; + move16(); + + IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, st_ivas->ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) + { + /* read Ambisonic (SBA) planar flag */ + st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read]; + move16(); + num_bits_read = add( num_bits_read, SBA_PLANAR_BITS ); + + /* read Ambisonic (SBA) order */ + st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1]; + move16(); + st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) ); + move16(); + num_bits_read = add( num_bits_read, SBA_ORDER_BITS ); + test(); + test(); + IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) && GT_32( ivas_total_brate, IVAS_SID_5k2 ) ) + { + IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE + { + /* set Ambisonic (SBA) order used for analysis and coding */ + st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order ); + move16(); + ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) + { + /* read number of MASA transport channels */ + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); + IF( st_ivas->bit_stream[res_dec - 1] ) + { + st_ivas->nchan_transport = 2; + move16(); + element_mode_flag = 1; + move16(); + } + ELSE + { + st_ivas->nchan_transport = 1; + move16(); + } + + IF( st_ivas->ini_frame > 0 ) + { + /* reconfigure in case a change of operation mode is detected */ + test(); + test(); + IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) ) + { + IF( EQ_32( st_ivas->last_ivas_format, MASA_FORMAT ) ) + { + test(); + test(); + test(); + IF( ( st_ivas->ini_active_frame == 0 ) && NE_32( ivas_total_brate, FRAME_NO_DATA ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) && EQ_16( st_ivas->nCPE, 1 ) ) + { + st_ivas->hCPE[0]->nchan_out = 1; + move16(); + } + ELSE + { + IF( NE_32( ( error = ivas_masa_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + ELSE + { + IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) + { + st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */ + move16(); + /* for the DISC mode the number of objects are written at the end of the bitstream, in the MASA metadata */ + + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); + st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 ); + move16(); + st_ivas->ism_mode = ivas_omasa_ism_mode_select_fx( ivas_total_brate, st_ivas->nchan_ism ); + move16(); + IF( st_ivas->ini_frame > 0 ) + { + /* reconfigure in case a change of operation mode is detected */ + test(); + test(); + IF( ( GT_32( ivas_total_brate, IVAS_SID_5k2 ) && NE_32( ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) || ( st_ivas->ini_active_frame == 0 ) ) + { + IF( NE_32( ( error = ivas_omasa_dec_config_fx( st_ivas, nSamplesRendered, &num_src, SrcInd, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + { + /* the number of objects is written at the end of the bitstream, in the SBA metadata */ + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); + st_ivas->nchan_ism = add( add( shl( st_ivas->bit_stream[res_dec - 1], 1 ), st_ivas->bit_stream[res_dec - 2] ), 1 ); + move16(); + + test(); + IF( LT_32( ivas_total_brate, IVAS_24k4 ) || GE_32( ivas_total_brate, IVAS_256k ) ) + { + /* read Ambisonic (SBA) planar flag */ + st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read]; + move16(); + num_bits_read = add( num_bits_read, SBA_PLANAR_BITS ); + } + + st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1]; + move16(); + st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[num_bits_read], 1 ) ); + move16(); + num_bits_read = add( num_bits_read, SBA_ORDER_BITS ); + + /* read Ambisonic (SBA) order */ + if ( LT_32( ivas_total_brate, IVAS_256k ) ) + { + st_ivas->sba_order = 3; + move16(); + } + + test(); + IF( st_ivas->ini_frame > 0 && NE_32( ivas_total_brate, st_ivas->last_active_ivas_total_brate ) ) + { + IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE + { + /* set Ambisonic (SBA) order used for analysis and coding */ + st_ivas->sba_analysis_order = ivas_sba_get_analysis_order_fx( ivas_total_brate, st_ivas->sba_order ); + move16(); + + ivas_sba_config_fx( ivas_total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init ); + + /*correct number of CPEs for discrete ISM coding*/ + test(); + IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) + { + st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) ); + move16(); + } + } + + IF( GE_32( ivas_total_brate, IVAS_256k ) ) + { + st_ivas->ism_mode = ISM_SBA_MODE_DISC; + move32(); + } + ELSE + { + st_ivas->ism_mode = ISM_MODE_NONE; + move32(); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) + { + /* read MC configuration */ + idx = 0; + move16(); + FOR( k = 0; k < MC_LS_SETUP_BITS; k++ ) + { + IF( st_ivas->bit_stream[num_bits_read + k] ) + { + idx = add( idx, shl( 1, sub( ( MC_LS_SETUP_BITS - 1 ), k ) ) ); + } + } + num_bits_read = add( num_bits_read, MC_LS_SETUP_BITS ); + + /* select MC format mode; reconfigure the MC format decoder */ + IF( NE_32( ( error = ivas_mc_dec_config_fx( st_ivas, idx, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + /*-------------------------------------------------------------------* + * Read element mode + *-------------------------------------------------------------------*/ + + IF( st_ivas->ini_frame == 0 && element_mode_flag ) + { + /* read stereo technology info */ + IF( LT_32( ivas_total_brate, MIN_BRATE_MDCT_STEREO ) ) + { + /* 1 bit */ + IF( st_ivas->bit_stream[num_bits_read] ) + { + st_ivas->element_mode_init = add( 1, IVAS_CPE_DFT ); + move16(); + } + ELSE + { + st_ivas->element_mode_init = add( 0, IVAS_CPE_DFT ); + move16(); + } + } + ELSE + { + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + } + } + } + ELSE IF( EQ_32( ivas_total_brate, IVAS_SID_5k2 ) ) + { + SWITCH( st_ivas->sid_format ) + { + case SID_DFT_STEREO: + st_ivas->element_mode_init = IVAS_CPE_DFT; + move16(); + BREAK; + case SID_MDCT_STEREO: + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + BREAK; + case SID_ISM: + st_ivas->element_mode_init = IVAS_SCE; + move16(); + BREAK; + case SID_MASA_1TC: + st_ivas->element_mode_init = IVAS_SCE; + move16(); + st_ivas->nchan_transport = 1; + move16(); + BREAK; + case SID_MASA_2TC:; // empyt statement for declaration + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); + IF( EQ_16( st_ivas->bit_stream[( res_dec - 1 ) - SID_FORMAT_NBITS], 1 ) ) + { + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + } + ELSE + { + st_ivas->element_mode_init = IVAS_CPE_DFT; + move16(); + } + st_ivas->nchan_transport = 2; + move16(); + BREAK; + case SID_SBA_1TC: + st_ivas->element_mode_init = IVAS_SCE; + move16(); + BREAK; + case SID_SBA_2TC: + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + BREAK; + } + + test(); + IF( st_ivas->ini_frame > 0 && EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) + { + Word16 nchan_transport_old, nchan_transport; + nchan_transport_old = st_ivas->nchan_transport; + move16(); + IF( ( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) ) ) + { + nchan_transport = 2; + } + ELSE + { + nchan_transport = 1; + } + move16(); + + IF( NE_16( nchan_transport_old, nchan_transport ) ) + { + /*Setting the default bitrate for the reconfig function*/ + IF( EQ_16( st_ivas->sid_format, SID_SBA_2TC ) ) + { + st_ivas->hDecoderConfig->ivas_total_brate = IVAS_48k; + move16(); + } + ELSE + { + st_ivas->hDecoderConfig->ivas_total_brate = IVAS_24k4; + move16(); + } + + IF( NE_32( ( error = ivas_sba_dec_reconfigure_fx( st_ivas, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->last_active_ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + move32(); + st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate; + move32(); + } + } + + IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) + { + ISM_MODE last_ism_mode = st_ivas->ism_mode; + move32(); + /* read the number of objects */ + st_ivas->nchan_transport = 1; + move16(); + nchan_ism = 1; + move16(); + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); + k = extract_l( L_sub( L_sub( res_dec, 1 ), SID_FORMAT_NBITS ) ); + move16(); + + WHILE( st_ivas->bit_stream[k] && ( nchan_ism < MAX_NUM_OBJECTS ) ) + { + nchan_ism = add( nchan_ism, 1 ); + k = sub( k, 1 ); + } + k = sub( k, 1 ); + + test(); + IF( st_ivas->ini_frame > 0 && NE_16( nchan_ism, st_ivas->nchan_ism ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "wrong number of objects signalled!" ); + } + + st_ivas->nchan_ism = nchan_ism; + move16(); + /* read ism_mode */ + st_ivas->ism_mode = ISM_MODE_DISC; + move32(); + IF( GT_16( nchan_ism, 2 ) ) + { + k = sub( k, nchan_ism ); /* SID metadata flags */ + idx = st_ivas->bit_stream[k]; + move16(); + st_ivas->ism_mode = (ISM_MODE) add( idx, 1 ); + move32(); + } + + if ( st_ivas->ini_frame == 0 ) + { + last_ism_mode = st_ivas->ism_mode; + move32(); + } + + IF( NE_32( ( error = ivas_ism_dec_config_fx( st_ivas, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + + /*-------------------------------------------------------------------* + * Initialize decoder in the first good frame based on IVAS format + * and number of transport channels + *-------------------------------------------------------------------*/ + test(); + IF( st_ivas->ini_frame == 0 && NE_32( st_ivas->ivas_format, UNDEFINED_FORMAT ) ) + { + IF( NE_32( ( error = doSanityChecks_IVAS( st_ivas ) ), IVAS_ERR_OK ) ) + { + return IVAS_ERROR( error, "Sanity checks failed" ); + } + + IF( NE_32( ( error = ivas_init_decoder_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + + /*----------------------------------------------------------------* + * Reset bitstream pointers + *----------------------------------------------------------------*/ + + ivas_set_bitstream_pointers( st_ivas ); + + reset_elements( st_ivas ); + + /* update bitstream buffer pointer -> take into account already read bits */ + test(); + IF( ( st_ivas->nSCE > 0 ) || ( st_ivas->nCPE > 0 ) ) + { + IF( st_ivas->nSCE > 0 ) + { + st = st_ivas->hSCE[0]->hCoreCoder[0]; + } + ELSE + { + st = st_ivas->hCPE[0]->hCoreCoder[0]; + } + st->next_bit_pos = num_bits_read; + move16(); + st->total_brate = ACELP_8k00; /* only temporary initialization - this is needed for get_next_indice() in the frame following NO_DATA frame */ + move32(); + } + + return error; +} + + +/*-------------------------------------------------------------------* + * ivas_read_format() + * + * Read IVAS format signaling + *-------------------------------------------------------------------*/ + +static ivas_error ivas_read_format( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Word16 *num_bits_read /* o : number of IVAS signaling bits read from the bitstream */ +) +{ + Word16 k, idx; + Word32 ivas_total_brate; + ivas_error error; + + error = IVAS_ERR_OK; + move32(); + + ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + move32(); + + *num_bits_read = 0; + move16(); + test(); + test(); + IF( !st_ivas->bfi && is_DTXrate( ivas_total_brate ) == 0 ) + { + /* read IVAS format */ + k = 0; + move16(); + if ( st_ivas->bit_stream[*num_bits_read] ) + { + k = 1; + move16(); + } + k = shl( k, 1 ); + ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); + move16(); + if ( st_ivas->bit_stream[*num_bits_read] ) + { + k = add( k, 1 ); + } + ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); + move16(); + SWITCH( k ) + { + case 0: + st_ivas->ivas_format = STEREO_FORMAT; + move32(); + BREAK; + case 1: + st_ivas->ivas_format = MC_FORMAT; + move32(); + BREAK; + case 2: + st_ivas->ivas_format = ISM_FORMAT; + move32(); + + IF( GE_32( ivas_total_brate, IVAS_24k4 ) ) + { + IF( st_ivas->bit_stream[*num_bits_read] ) + { + ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); + move16(); + IF( st_ivas->bit_stream[*num_bits_read] ) + { + st_ivas->ivas_format = SBA_ISM_FORMAT; + move32(); + } + ELSE + { + st_ivas->ivas_format = MASA_ISM_FORMAT; + move32(); + } + } + + ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); + move16(); + } + BREAK; + case 3: + IF( st_ivas->bit_stream[*num_bits_read] ) + { + st_ivas->ivas_format = MASA_FORMAT; + move32(); + } + ELSE + { + st_ivas->ivas_format = SBA_FORMAT; + move32(); + /* read Ambisonic (SBA) planar flag */ + st_ivas->sba_planar = st_ivas->bit_stream[( *num_bits_read ) + 1]; + move16(); + + /* read Ambisonic (SBA) order */ + st_ivas->sba_order = st_ivas->bit_stream[( *num_bits_read ) + 2 + SBA_PLANAR_BITS]; + move16(); + st_ivas->sba_order = add( st_ivas->sba_order, shl( st_ivas->bit_stream[( *num_bits_read ) + 1 + SBA_PLANAR_BITS], 1 ) ); + move16(); + if ( st_ivas->sba_order == 0 ) + { + st_ivas->ivas_format = SBA_ISM_FORMAT; + move32(); + } + } + ( *num_bits_read ) = add( ( *num_bits_read ), 1 ); + move16(); + + BREAK; + } + } + ELSE IF( ( st_ivas->bfi == 0 ) && EQ_32( ivas_total_brate, IVAS_SID_5k2 ) ) + { + /* read IVAS format in SID frame */ + idx = 0; + move16(); + FOR( k = 0; k < SID_FORMAT_NBITS; k++ ) + { + idx += st_ivas->bit_stream[k] << ( SID_FORMAT_NBITS - 1 - k ); + } + + ( *num_bits_read ) = add( *num_bits_read, SID_FORMAT_NBITS ); + move16(); + st_ivas->sid_format = idx; + move16(); + + SWITCH( idx ) + { + case SID_DFT_STEREO: + case SID_MDCT_STEREO: + st_ivas->ivas_format = STEREO_FORMAT; + move32(); + BREAK; + case SID_ISM: + st_ivas->ivas_format = ISM_FORMAT; + move32(); + BREAK; + case SID_MULTICHANNEL: + st_ivas->ivas_format = MC_FORMAT; + move32(); + BREAK; + case SID_SBA_1TC: + st_ivas->ivas_format = SBA_FORMAT; + move32(); + st_ivas->element_mode_init = IVAS_SCE; + move16(); + BREAK; + case SID_SBA_2TC: + st_ivas->ivas_format = SBA_FORMAT; + move32(); + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + BREAK; + case SID_MASA_1TC: + st_ivas->ivas_format = MASA_FORMAT; + move32(); + st_ivas->element_mode_init = IVAS_SCE; + move16(); + BREAK; + case SID_MASA_2TC: + st_ivas->ivas_format = MASA_FORMAT; + move32(); + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, FRAMES_PER_SEC, &res_dec, &res_frac, 0 ); + IF( EQ_32( st_ivas->bit_stream[res_dec - 1], 1 ) ) + { + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + } + ELSE + { + st_ivas->element_mode_init = IVAS_CPE_DFT; + move16(); + } + BREAK; + default: + /* This should actually be impossible, since only 3 bits are read, so if this happens something is broken */ + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Invalid value %c found in SID format field.", st_ivas->sid_format ); + } + + IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) + { + if ( st_ivas->sba_analysis_order == 0 ) + { + st_ivas->sba_analysis_order = SBA_FOA_ORDER; + move16(); + } + } + + /* reset bitstream handle to avoid BER detection after reading the 2400 kbps for ch0 */ + st_ivas->bit_stream = st_ivas->bit_stream + ( *num_bits_read ); + ( *num_bits_read ) = 0; + move16(); + } + ELSE + { + /* In SID/NO_DATA frames, use the previous frame IVAS format */ + } + + return error; +} + + +/*-------------------------------------------------------------------* + * getNumChanSynthesis() + * + * get number of output channels used for synthesis/decoding + * (often different from number of output channels!) + *-------------------------------------------------------------------*/ + +/*! r: number of channels to be synthesised */ + +Word16 getNumChanSynthesis( + Decoder_Struct *st_ivas /* i : IVAS decoder structure */ +) +{ + Word16 n; + + n = add( st_ivas->nSCE, imult1616( CPE_CHANNELS, st_ivas->nCPE ) ); + test(); + test(); + IF( st_ivas->sba_dirac_stereo_flag ) + { + n = CPE_CHANNELS; + move16(); + } + ELSE IF( ( st_ivas->hMCT != NULL || EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) && NE_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + { + n = st_ivas->nchan_transport; + move16(); + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + { + IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) + { + n = add( st_ivas->nchan_transport, st_ivas->nchan_ism ); + } + ELSE + { + n = st_ivas->nchan_transport; + move16(); + } + } + + return n; +} + +/*-------------------------------------------------------------------* + * copy_decoder_config() + * + * Copy IVAS configuration structure to the CoreCoder state structure + *-------------------------------------------------------------------*/ + +void copy_decoder_config( + Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ + Decoder_State *st /* o : decoder state structure */ +) +{ + st->output_Fs = st_ivas->hDecoderConfig->output_Fs; + move32(); + st->Opt_AMR_WB = st_ivas->hDecoderConfig->Opt_AMR_WB; + move16(); + st->codec_mode = st_ivas->codec_mode; + move16(); + st->ini_frame = st_ivas->ini_frame; + move16(); + + st->bfi = st_ivas->bfi; + move16(); + + st->writeFECoffset = st_ivas->writeFECoffset; + move16(); + + st->element_mode = st_ivas->element_mode_init; + move16(); + + return; +} + +/*-------------------------------------------------------------------* + * ivas_init_decoder_front() + * + * Set decoder parameters to initial values + *-------------------------------------------------------------------*/ +ivas_error ivas_init_decoder_front( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + ivas_error error; + + error = IVAS_ERR_OK; + move32(); + /*-----------------------------------------------------------------* + * Resets + *-----------------------------------------------------------------*/ + + st_ivas->nSCE = 0; + move16(); + st_ivas->nCPE = 0; + move16(); + st_ivas->nCPE_old = 0; + move16(); + st_ivas->nchan_transport = -1; + move16(); + st_ivas->ism_mode = ISM_MODE_NONE; + move32(); + st_ivas->mc_mode = MC_MODE_NONE; + move32(); + st_ivas->sba_dirac_stereo_flag = 0; + move16(); + + /* HRTF binauralization latency in ns */ + st_ivas->binaural_latency_ns = 0; + move32(); + + /*-------------------------------------------------------------------* + * Allocate and initialize Custom loudspeaker layout handle + *--------------------------------------------------------------------*/ + + IF( st_ivas->hDecoderConfig->Opt_LsCustom ) + { + IF( EQ_32( ( error = ivas_ls_custom_open_fx( &( st_ivas->hLsSetupCustom ) ) ), IVAS_ERR_OK ) ) + { + set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_azimuth_fx, MAX_OUTPUT_CHANNELS ); + set_zero_fx( ( st_ivas->hLsSetupCustom )->ls_elevation_fx, MAX_OUTPUT_CHANNELS ); + } + ELSE + { + return error; + } + } + + /*-------------------------------------------------------------------* + * Allocate and initialize Head-Tracking handle + *--------------------------------------------------------------------*/ + + IF( st_ivas->hDecoderConfig->Opt_Headrotation ) + { + IF( NE_32( ( error = ivas_headTrack_open_fx( &( st_ivas->hHeadTrackData ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + error = ivas_orient_trk_SetTrackingType_fx( st_ivas->hHeadTrackData->OrientationTracker, st_ivas->hDecoderConfig->orientation_tracking ); + IF( NE_32( ( error ), IVAS_ERR_OK ) ) + { + return error; + } + } + /*-------------------------------------------------------------------* + * Allocate and initialize external orientation handle + *--------------------------------------------------------------------*/ + + IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation ) + { + IF( NE_32( ( error = ivas_external_orientation_open( &( st_ivas->hExtOrientationData ), st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + /*-------------------------------------------------------------------* + * Allocate and initialize combined orientation handle + *--------------------------------------------------------------------*/ + test(); + IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) + { + IF( NE_32( ( error = ivas_combined_orientation_open( &( st_ivas->hCombinedOrientationData ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hDecoderConfig->render_framesize ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + /*-------------------------------------------------------------------* + * Allocate HRTF binary handle + *--------------------------------------------------------------------*/ + + IF( st_ivas->hDecoderConfig->Opt_HRTF_binary ) + { + IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( st_ivas->hHrtfTD ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( st_ivas->hSetOfHRTF ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + /*-------------------------------------------------------------------* + * Allocate and initialize Binaural Renderer configuration handle + *--------------------------------------------------------------------*/ + test(); + test(); + IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_render_config_init_from_rom_fx( &st_ivas->hRenderConfig ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + return error; +} + + +/*-------------------------------------------------------------------* + * ivas_init_decoder() + * + * Initialize IVAS decoder state structure + *-------------------------------------------------------------------*/ +ivas_error ivas_init_decoder_fx( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + Word16 i, n, k; + Word16 sce_id, cpe_id; + Word16 numCldfbAnalyses, numCldfbSyntheses; + Word16 granularity, n_channels_transport_jbm; + Word32 output_Fs, ivas_total_brate; + Word32 binauralization_delay_ns; + AUDIO_CONFIG output_config; + DECODER_CONFIG_HANDLE hDecoderConfig; + ivas_error error; + Word32 ism_total_brate; + + error = IVAS_ERR_OK; + move32(); + output_Fs = st_ivas->hDecoderConfig->output_Fs; + move32(); + hDecoderConfig = st_ivas->hDecoderConfig; + output_config = hDecoderConfig->output_config; + ivas_total_brate = hDecoderConfig->ivas_total_brate; + move32(); + hDecoderConfig->last_ivas_total_brate = ivas_total_brate; + move32(); + st_ivas->last_active_ivas_total_brate = ivas_total_brate; + move32(); + /*-----------------------------------------------------------------* + * Set number of output channels for EXTERNAL output config. + *-----------------------------------------------------------------*/ + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + { + hDecoderConfig->nchan_out = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 ); + move16(); + hDecoderConfig->nchan_out = add( hDecoderConfig->nchan_out, st_ivas->nchan_ism ); + move16(); + } + ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) + { + hDecoderConfig->nchan_out = add( st_ivas->nchan_transport, st_ivas->nchan_ism ); + move16(); + } + ELSE IF( !EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) + { + hDecoderConfig->nchan_out = st_ivas->nchan_transport; + move16(); + } + + st_ivas->hOutSetup.nchan_out_woLFE = hDecoderConfig->nchan_out; + move16(); + } + + /*-----------------------------------------------------------------* + * Set output and intern setup & renderer selection + *-----------------------------------------------------------------*/ + + st_ivas->intern_config = output_config; + move32(); + ivas_output_init( &( st_ivas->hOutSetup ), output_config ); + test(); + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) + { + st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER; + move16(); + st_ivas->intern_config = IVAS_AUDIO_CONFIG_7_1_4; + move32(); + st_ivas->hOutSetup.output_config = st_ivas->intern_config; + move32(); + st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( st_ivas->intern_config ); + move16(); + } + test(); + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER; + move32(); + st_ivas->intern_config = IVAS_AUDIO_CONFIG_HOA3; + move32(); + st_ivas->hOutSetup.output_config = IVAS_AUDIO_CONFIG_HOA3; + move32(); + st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( IVAS_AUDIO_CONFIG_HOA3 ); + move16(); + } + + /* Only initialize transport setup if it is used */ + IF( NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_INVALID ) ) + { + ivas_output_init( &( st_ivas->hTransSetup ), st_ivas->transport_config ); + } + + test(); + IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) + { + ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate ); + + ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hOutSetup.separateChannelEnabled ), &( st_ivas->hOutSetup.separateChannelIndex ), ivas_total_brate ); + } + + ivas_renderer_select( st_ivas ); + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + IF( EQ_16( ( error = ivas_ls_custom_output_init_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + st_ivas->hOutSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx; + move32(); + st_ivas->hOutSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx; + move32(); + st_ivas->hIntSetup.ls_azimuth_fx = st_ivas->hLsSetupCustom->ls_azimuth_fx; + move32(); + st_ivas->hIntSetup.ls_elevation_fx = st_ivas->hLsSetupCustom->ls_elevation_fx; + move32(); + } + ELSE + { + return error; + } + } + + ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->intern_config ); + + test(); + IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) + { + ivas_mcmasa_set_separate_channel_mode_fx( &( st_ivas->hIntSetup.separateChannelEnabled ), &( st_ivas->hIntSetup.separateChannelIndex ), ivas_total_brate ); + + test(); + IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled ) + { + st_ivas->hLsSetupCustom->separate_ch_found = 0; + move16(); + IF( GE_16( st_ivas->hOutSetup.nchan_out_woLFE, MCMASA_MIN_SPEAKERS_SEPARATE_CENTER ) ) + { + /* check for a speaker at (0, 0) if minimum speaker count is available */ + FOR( i = 0; i < st_ivas->hOutSetup.nchan_out_woLFE; i++ ) + { + test(); + IF( ( L_shr( st_ivas->hOutSetup.ls_azimuth_fx[i], Q22 ) == 0 ) && ( L_shr( st_ivas->hOutSetup.ls_elevation_fx[i], Q22 ) == 0 ) ) + { + st_ivas->hIntSetup.separateChannelIndex = i; + move16(); + st_ivas->hLsSetupCustom->separate_ch_found = 1; + move16(); + BREAK; + } + } + } + } + } + + + /*-----------------------------------------------------------------* + * Allocate and initialize SCE/CPE and other handles + *-----------------------------------------------------------------*/ + + IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) ) + { + st_ivas->nSCE = 1; /* in mono, there is always only one SCE */ + move16(); + st_ivas->nCPE = 0; + move16(); + st_ivas->nCPE_old = 0; + move16(); + st_ivas->nchan_transport = 1; + move16(); + sce_id = 0; + move16(); + + IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + } + ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) + { + st_ivas->nchan_transport = CPE_CHANNELS; + move16(); + st_ivas->intern_config = IVAS_AUDIO_CONFIG_STEREO; + move32(); + + st_ivas->nSCE = 0; + move16(); + st_ivas->nCPE = 1; /* in stereo, there is always only one CPE */ + move16(); + st_ivas->nCPE_old = 0; + move16(); + cpe_id = 0; + move16(); + + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, ivas_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < st_ivas->nchan_transport; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + + /* init EFAP for custom LS output and set hTransSetup */ + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hOutSetup.ls_azimuth_fx, st_ivas->hOutSetup.ls_elevation_fx, st_ivas->hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) + { + return error; + } + + ivas_output_init( &( st_ivas->hTransSetup ), IVAS_AUDIO_CONFIG_STEREO ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) + { + Word32 element_brate_tmp[MAX_NUM_OBJECTS]; + + st_ivas->nSCE = st_ivas->nchan_transport; /* "st_ivas->nchan_transport" is known from ivas_dec_setup */ + move16(); + st_ivas->nCPE = 0; + move16(); + st_ivas->nCPE_old = 0; + move16(); + st_ivas->ism_extmeta_active = -1; + move16(); + st_ivas->ism_extmeta_cnt = 0; + move16(); + IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) + { + st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE; + move16(); + st_ivas->nSCE = MAX_PARAM_ISM_WAVE; + move16(); + + IF( NE_32( ( error = ivas_param_ism_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nSCE, element_brate_tmp ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, element_brate_tmp[sce_id] ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + + st_ivas->hSCE[sce_id]->hCoreCoder[0]->is_ism_format = 1; + move16(); + } + + st_ivas->hISMDTX.sce_id_dtx = 0; + move16(); + + IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) + { + st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed3; + move16(); + } + ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) ) + { + FOR( sce_id = 0; sce_id < st_ivas->nSCE; ++sce_id ) + { + st_ivas->hSCE[sce_id]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2 = add( 2, sce_id ); + move16(); + } + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) + { + IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) ) + { + return error; + } + set16_fx( st_ivas->hSpar->hFbMixer->cldfb_cross_fade_fx, 0, CLDFB_NO_COL_MAX ); + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup ) + { + IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ); + IF( hodirac_flag ) + { + IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE + { + IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + + test(); + test(); + IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) ) + { + IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; + move16(); + } + ELSE + { + Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1]; + + st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); + move16(); + IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ) + { + st_ivas->hSpar->enc_param_start_band = 0; + move16(); + set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands ); + st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands; + move16(); + } + + ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ), + st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); + } + st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); + move16(); + FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + } + + FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, (res_dec) *CPE_CHANNELS ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + } + + /* create CPE element for DFT Stereo like upmix */ + test(); + IF( st_ivas->sba_dirac_stereo_flag && ( st_ivas->nCPE == 0 ) ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); + + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */ + st_ivas->hCPE[0]->hCoreCoder[1] = NULL; + } + + IF( GT_16( st_ivas->nCPE, 1 ) ) + { + IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + /* set CNA/CNG flags */ + ivas_sba_set_cna_cng_flag( st_ivas ); + } + ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) + { + /* if we start in ISM_MODE_NONE in MASA_ISM, that appears as normal MASA, but we may change to a mode with ISMs */ + st_ivas->ism_extmeta_active = -1; + move16(); + st_ivas->ism_extmeta_cnt = 0; + move16(); + IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + + test(); + test(); + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + { + IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + } + + FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + } + + /* set CNA/CNG flags */ + ivas_sba_set_cna_cng_flag( st_ivas ); + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + { + Word32 temp_brate[MAX_SCE]; + st_ivas->ism_extmeta_active = -1; + move16(); + st_ivas->ism_extmeta_cnt = 0; + move16(); + + st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); + move16(); + IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_spar_dec_open_fx( st_ivas, 0 ) ), IVAS_ERR_OK ) ) + { + return error; + } + + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_DEC ) && st_ivas->hOutSetup.is_loudspeaker_setup ) + { + IF( NE_32( ( error = ivas_sba_get_hoa_dec_matrix_fx( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + Word16 hodirac_flag = ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ); + IF( hodirac_flag ) + { + IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, IVAS_MAX_NUM_BANDS, st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE + { + IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + + test(); + test(); + IF( NE_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) ) + { + IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; + move16(); + } + ELSE + { + Word16 band_grouping[IVAS_MAX_NUM_BANDS + 1]; + + st_ivas->hSpar->enc_param_start_band = s_min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); + move16(); + IF( ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ) + { + st_ivas->hSpar->enc_param_start_band = 0; + move16(); + set8_fx( (Word8 *) st_ivas->hQMetaData->twoDirBands, (Word8) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands ); + st_ivas->hQMetaData->numTwoDirBands = (UWord8) st_ivas->hQMetaData->q_direction[0].cfg.nbands; + move16(); + } + + ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ), + st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); + } + + FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, res_dec ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + } + + IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) + { + st_ivas->nCPE_old = st_ivas->nCPE; + move16(); + st_ivas->nCPE = add( st_ivas->nCPE, shr( add( st_ivas->nchan_ism, 1 ), 1 ) ); + move16(); + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + } + + FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, st_ivas->nchan_transport, &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + } + + /* create CPE element for DFT Stereo like upmix */ + test(); + IF( st_ivas->sba_dirac_stereo_flag && st_ivas->nCPE == 0 ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */ + st_ivas->hCPE[0]->hCoreCoder[1] = NULL; + } + + IF( GT_16( st_ivas->nCPE, 1 ) ) + { + IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) + { + IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_osba_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + /* set CNA/CNG flags */ + ivas_sba_set_cna_cng_flag( st_ivas ); + } + ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) + { + st_ivas->ism_extmeta_active = -1; + move16(); + st_ivas->ism_extmeta_cnt = 0; + move16(); + + IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + k = 0; + move16(); + ism_total_brate = 0; + move32(); + + WHILE( ( k < SIZE_IVAS_BRATE_TBL ) && ( ivas_total_brate != ivas_brate_tbl[k] ) ) + { + k = add( k, 1 ); + } + test(); + IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) + { + /* one separated object */ + st_ivas->nSCE = 1; + move16(); + ism_total_brate = sep_object_brate[k - 2][0]; + move32(); + IF( NE_32( ( error = create_sce_dec( st_ivas, 0, ism_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[0]->hCoreCoder[0] ); + + IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, 1, NULL ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) + { + Word32 temp_brate[MAX_SCE]; + st_ivas->nSCE = st_ivas->nchan_ism; /* number of objects */ + move16(); + FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + temp_brate[sce_id] = sep_object_brate[k - 2][st_ivas->nSCE - 1]; + move32(); + ism_total_brate = L_add( ism_total_brate, temp_brate[sce_id] ); + + IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, temp_brate[sce_id] ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + } + + IF( NE_32( ( error = ivas_ism_metadata_dec_create_fx( st_ivas, st_ivas->nchan_ism, temp_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_omasa_data_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + + test(); + test(); + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + { + IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( NE_32( ( error = create_cpe_dec( st_ivas, 0, ivas_total_brate - ism_total_brate ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[0]->hCoreCoder[n] ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) + { + IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) ) + { + /* init EFAP for custom LS setup */ + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + st_ivas->nchan_transport = ivas_mc_ls_setup_get_num_channels_fx( ivas_mc_map_output_config_to_mc_ls_setup_fx( st_ivas->transport_config ) ); + move16(); + st_ivas->nSCE = 0; + move16(); + st_ivas->nCPE = shr( st_ivas->nchan_transport, 1 ); + move16(); + st_ivas->nCPE_old = 0; + move16(); + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + } + + IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) + { + /* init EFAP for custom LS setup */ + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + st_ivas->nSCE = 0; + move16(); + st_ivas->nCPE = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS >> 1; + move16(); + st_ivas->nCPE_old = 0; + move16(); + st_ivas->nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; + move16(); + + IF( NE_32( ( error = ivas_mc_paramupmix_dec_open( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->element_mode_init = IVAS_CPE_MDCT; + move16(); + FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, sub( st_ivas->nchan_transport, 1 ), &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, L_shl( res_dec, 1 ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + } + + IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) ) + { + /* init EFAP for custom LS setup */ + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hLsSetupCustom->ls_azimuth_fx, st_ivas->hLsSetupCustom->ls_elevation_fx, st_ivas->hLsSetupCustom->num_spk, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + IF( NE_32( ( error = ivas_param_mc_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->hParamMC->proto_matrix_int_e = 0; + move16(); + FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); + + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + } + + IF( GT_16( st_ivas->nCPE, 1 ) ) + { + IF( NE_32( ( error = create_mct_dec_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) + { + Word32 brate_sce, brate_cpe; + + ivas_mcmasa_setNumTransportChannels_fx( &( st_ivas->nchan_transport ), &( st_ivas->element_mode_init ), ivas_total_brate ); + + IF( NE_32( ( error = ivas_qmetadata_open_fx( &( st_ivas->hQMetaData ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( NE_32( ( error = ivas_masa_dec_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + + { + return error; + } + + st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); + move16(); + test(); + IF( NE_32( st_ivas->renderer_type, RENDERER_DISABLE ) && NE_32( st_ivas->renderer_type, RENDERER_MCMASA_MONO_STEREO ) ) + { + IF( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + test(); + test(); + IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && st_ivas->hOutSetup.separateChannelEnabled && !st_ivas->hLsSetupCustom->separate_ch_found ) + { + /* If no speaker matching the separated channel, compute panning gains for the separated channel. */ + IF( st_ivas->hVBAPdata == NULL ) + { + /* Distribute signal to all channels if VBAP is not properly initialized. */ + Word16 inv_sqr, sqr, exp = 15, exp_sqr; + move16(); + IF( EQ_16( st_ivas->hLsSetupCustom->num_spk, 1 ) ) + { + inv_sqr = 32767; // (1.0f in Q15)-1 + move16(); + } + ELSE + { + sqr = Sqrt16( st_ivas->hLsSetupCustom->num_spk, &exp ); + inv_sqr = BASOP_Util_Divide1616_Scale( 32767, sqr, &exp_sqr ); + exp_sqr = sub( exp_sqr, exp ); + IF( ( exp < 0 ) ) + { + inv_sqr = shr( inv_sqr, exp ); // exp_sqr + } + ELSE + { + inv_sqr = shl( inv_sqr, exp ); // exp_sqr + } + } + set16_fx( st_ivas->hLsSetupCustom->separate_ch_gains_fx, inv_sqr, st_ivas->hLsSetupCustom->num_spk ); + } + } + + + ivas_mcmasa_split_brate_fx( st_ivas->hOutSetup.separateChannelEnabled, ivas_total_brate, st_ivas->nSCE, st_ivas->nCPE, &brate_sce, &brate_cpe ); + + FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + IF( NE_32( ( error = create_sce_dec( st_ivas, sce_id, brate_sce ) ), IVAS_ERR_OK ) ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + } + + FOR( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + st_ivas->element_mode_init = IVAS_CPE_MDCT; /* element_mode_init was IVAS_SCE for SCE initialization */ + move16(); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, brate_cpe ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } + } + + /* create CPE element for DFT Stereo like upmix */ + IF( st_ivas->sba_dirac_stereo_flag ) + { + Word32 res_dec, res_frac; + iDiv_and_mod_32( ivas_total_brate, add( st_ivas->nSCE, st_ivas->nCPE ), &res_dec, &res_frac, 0 ); + IF( NE_32( ( error = create_cpe_dec( st_ivas, cpe_id, res_dec ) ), IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->hCPE[0]->hCoreCoder[0] = st_ivas->hSCE[0]->hCoreCoder[0]; /* don't allocate unnecessary core coder, simply point to core coder of SCE element */ + st_ivas->hCPE[0]->hCoreCoder[1] = NULL; + } + + /* set CNA/CNG flags */ + test(); + test(); + IF( EQ_16( st_ivas->nchan_transport, 1 ) && ( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) ) + { + st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag = 1; + move16(); + st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag = 1; + move16(); + } + } + } + + + /*-----------------------------------------------------------------* + * Allocate and initialize HP20 filter memories + *-----------------------------------------------------------------*/ + + /* set number of output channels used for synthesis/decoding */ + n = getNumChanSynthesis( st_ivas ); + + IF( n > 0 ) + { + IF( ( st_ivas->mem_hp20_out_fx = (Word32 **) malloc( n * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) ); + } + } + ELSE + { + st_ivas->mem_hp20_out_fx = NULL; + } + + FOR( i = 0; i < n; i++ ) + { + IF( ( st_ivas->mem_hp20_out_fx[i] = (Word32 *) malloc( ( L_HP20_MEM + 2 ) * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) ); + } + set32_fx( st_ivas->mem_hp20_out_fx[i], 0, L_HP20_MEM + 2 ); + } + + /*-------------------------------------------------------------------* + * Allocate and initialize rendering handles + *--------------------------------------------------------------------*/ + test(); + test(); + test(); + test(); + test(); + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) + { + IF( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + /* ParamISM is handled separately from other common config */ + ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) && ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) ) + { + IF( NE_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) + { + IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) + { + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + Word16 num_src; + IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + Word16 nchan_rend = num_src; + move16(); + test(); + IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]]; + if ( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + + IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); + + n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); + + + IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) ) + { + IF( NE_32( ( error = ivas_ls_setup_conversion_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) ) + { + IF( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) + { + test(); + test(); + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && EQ_32( st_ivas->ivas_format, MC_FORMAT ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) ) + { + IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), st_ivas->hIntSetup.ls_azimuth_fx, st_ivas->hIntSetup.ls_elevation_fx, st_ivas->hIntSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), + IVAS_ERR_OK ) ) + { + return error; + } + + st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns; + move32(); + + test(); + IF( ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) && ( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) ) + { + granularity = NS2SA_FX2( output_Fs, CLDFB_SLOT_NS ); + + n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); + + + IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, MC_PARAMUPMIX_MAX_INPUT_CHANS, MC_PARAMUPMIX_MAX_INPUT_CHANS, granularity ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE + { + granularity = NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); + + n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); + + IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + + IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) + { + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) + { + /* Allocate TD renderer for the objects in DISC mode */ + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + Word16 num_src; + IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + Word16 nchan_rend = num_src; + move16(); + test(); + if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]]; + if ( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + test(); + test(); + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && ( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) + { + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + IF( NE_32( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + test(); + IF( ( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) && + ( EQ_32( st_ivas->ism_mode, ISM_MODE_DISC ) || EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) && + ( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) || + EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) || + EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || + EQ_32( st_ivas->renderer_type, RENDERER_OSBA_STEREO ) || + EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || + EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) || + EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || + EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || + EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) ) + { + IF( NE_32( ( error = ivas_ism_renderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + { + test(); + test(); + IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) + { + /* Allocate TD renderer for the objects in DISC mode */ + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + Word16 num_src; + IF( NE_32( ( error = ivas_td_binaural_open_fx( st_ivas, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + Word16 nchan_rend = num_src; + move16(); + + test(); + if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = st_ivas->hBinRendererTd->Sources[SrcInd[nS]]; + if ( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = st_ivas->hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } + } + + /*-----------------------------------------------------------------* + * LFE handles for rendering after rendering to adjust LFE delay to binaural filter delay + *-----------------------------------------------------------------*/ + test(); + IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) + { + binauralization_delay_ns = st_ivas->binaural_latency_ns; + move32(); + IF( st_ivas->hBinRenderer != NULL ) + { + IF( st_ivas->hBinRenderer->render_lfe ) + { + { + /* Account for filterbank delay */ + binauralization_delay_ns = L_add( binauralization_delay_ns, IVAS_FB_DEC_DELAY_NS ); + } + } + ELSE + { + binauralization_delay_ns = 0; + move32(); + } + } + + IF( NE_32( ( error = ivas_create_lfe_dec_fx( &st_ivas->hLFE, output_Fs, binauralization_delay_ns ) ), IVAS_ERR_OK ) ) + { + return error; + } + + set32_fx( st_ivas->hLFE->prevsynth_buf_fx, 0, LFE_PLC_BUFLEN ); + set32_fx( st_ivas->hLFE->prior_out_buffer_fx, 0, L_FRAME48k ); + } + + /*-----------------------------------------------------------------* + * CLDFB handles for rendering + *-----------------------------------------------------------------*/ + + ivas_init_dec_get_num_cldfb_instances_ivas_fx( st_ivas, &numCldfbAnalyses, &numCldfbSyntheses ); + + FOR( i = 0; i < numCldfbAnalyses; i++ ) + { + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + FOR( ; i < MAX_INTERN_CHANNELS; i++ ) + { + st_ivas->cldfbAnaDec[i] = NULL; + } + + FOR( i = 0; i < numCldfbSyntheses; i++ ) + { + IF( NE_32( ( error = openCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + FOR( ; i < MAX_OUTPUT_CHANNELS; i++ ) + { + st_ivas->cldfbSynDec[i] = NULL; + } + + /* CLDFB Interpolation weights */ + test(); + test(); + test(); + IF( ( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) && !st_ivas->sba_dirac_stereo_flag && NE_16( st_ivas->hDecoderConfig->nchan_out, 1 ) ) + { + Word16 Q_cldfbSynDec = Q11; + move16(); + ivas_spar_get_cldfb_gains_fx( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig ); + + FOR( i = 0; i < st_ivas->cldfbAnaDec[0]->cldfb_state_length; i++ ) + { + st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbAnaDec[0]->cldfb_state_fx[i], 16 ); // Scaling down from 27 to 11 + move32(); + } + st_ivas->cldfbAnaDec[0]->Q_cldfb_state = Q11; + move16(); + FOR( i = 0; i < st_ivas->cldfbSynDec[0]->cldfb_state_length; i++ ) + { + st_ivas->cldfbSynDec[0]->cldfb_state_fx[i] = L_shr( st_ivas->cldfbSynDec[0]->cldfb_state_fx[i], sub( 21, Q_cldfbSynDec ) ); // Scaling down from 21 to Q_cldfbSynDec + move32(); + } + st_ivas->cldfbSynDec[0]->Q_cldfb_state = Q11; + move16(); + } + + /*-----------------------------------------------------------------* + * Allocate and initialize limiter struct + *-----------------------------------------------------------------*/ + + IF( NE_32( ( error = ivas_limiter_open_fx( &st_ivas->hLimiter, hDecoderConfig->nchan_out, output_Fs ) ), IVAS_ERR_OK ) ) + { + return error; + } + + /*-----------------------------------------------------------------* + * Allocate and initialize JBM struct + buffer + *-----------------------------------------------------------------*/ + + IF( st_ivas->hTcBuffer == NULL ) + + { + /* no module has yet open the TC buffer, open a default one */ + n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels_fx( st_ivas ); + + IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, ivas_jbm_dec_get_tc_buffer_mode( st_ivas ), n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, NS2SA_FX2( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( st_ivas->hTcBuffer == NULL ) + { + /* we need the handle anyway, but without the buffer*/ + IF( NE_32( ( error = ivas_jbm_dec_tc_buffer_open_fx( st_ivas, TC_BUFFER_MODE_NONE, 0, 0, 0, 1 ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + + IF( st_ivas->hJbmMetadata == NULL ) + { + IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + IF( NE_32( ( error = ivas_jbm_dec_metadata_open( st_ivas ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + } + + /*-----------------------------------------------------------------* + * Allocate floating-point output audio buffers + *-----------------------------------------------------------------*/ + st_ivas->p_out_len = ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); + move16(); + FOR( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ ) + { + /* note: these are intra-frame heap memories */ + IF( ( st_ivas->p_output_fx[n] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) ); + } + set32_fx( st_ivas->p_output_fx[n], 0, 48000 / FRAMES_PER_SEC ); + } + + FOR( ; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) + { + st_ivas->p_output_fx[n] = NULL; + } + return error; +} + +/*------------------------------------------------------------------------- + * destroy_core_dec() + * + * Close core decoder handles + *-------------------------------------------------------------------------*/ + +void destroy_core_dec_fx( + DEC_CORE_HANDLE hCoreCoder /* i/o: core decoder structure */ +) +{ + IF( EQ_16( hCoreCoder->element_mode, EVS_MONO ) ) + { + destroy_cldfb_decoder_fx( hCoreCoder ); + } + ELSE + { + destroy_cldfb_decoder_ivas_fx( hCoreCoder ); + } + + IF( hCoreCoder->hGSCDec != NULL ) + { + free( hCoreCoder->hGSCDec ); + hCoreCoder->hGSCDec = NULL; + } + + IF( hCoreCoder->hPFstat != NULL ) + { + free( hCoreCoder->hPFstat ); + hCoreCoder->hPFstat = NULL; + } + + IF( hCoreCoder->hMusicPF != NULL ) + { + free( hCoreCoder->hMusicPF ); + hCoreCoder->hMusicPF = NULL; + } + + IF( hCoreCoder->hBPF != NULL ) + { + free( hCoreCoder->hBPF ); + hCoreCoder->hBPF = NULL; + } + + IF( hCoreCoder->hBWE_zero != NULL ) + { + free( hCoreCoder->hBWE_zero ); + hCoreCoder->hBWE_zero = NULL; + } + + IF( hCoreCoder->hTdCngDec != NULL ) + { + free( hCoreCoder->hTdCngDec ); + hCoreCoder->hTdCngDec = NULL; + } + + IF( hCoreCoder->hSC_VBR != NULL ) + { + free( hCoreCoder->hSC_VBR ); + hCoreCoder->hSC_VBR = NULL; + } + + IF( hCoreCoder->hAmrwb_IO != NULL ) + { + free( hCoreCoder->hAmrwb_IO ); + hCoreCoder->hAmrwb_IO = NULL; + } + + IF( hCoreCoder->hBWE_TD != NULL ) + { + free( hCoreCoder->hBWE_TD ); + hCoreCoder->hBWE_TD = NULL; + } + + IF( hCoreCoder->hBWE_FD != NULL ) + { + free( hCoreCoder->hBWE_FD ); + hCoreCoder->hBWE_FD = NULL; + } + + IF( hCoreCoder->hBWE_FD_HR != NULL ) + { + free( hCoreCoder->hBWE_FD_HR ); + hCoreCoder->hBWE_FD_HR = NULL; + } + + IF( hCoreCoder->hWIDec != NULL ) + { + free( hCoreCoder->hWIDec ); + hCoreCoder->hWIDec = NULL; + } + + IF( hCoreCoder->hTECDec != NULL ) + { + free( hCoreCoder->hTECDec ); + hCoreCoder->hTECDec = NULL; + } + + IF( hCoreCoder->hTcxLtpDec != NULL ) + { + free( hCoreCoder->hTcxLtpDec ); + hCoreCoder->hTcxLtpDec = NULL; + } + + IF( hCoreCoder->hTcxDec != NULL ) + { + free( hCoreCoder->hTcxDec ); + hCoreCoder->hTcxDec = NULL; + } + + IF( hCoreCoder->hTcxCfg != NULL ) + { + free( hCoreCoder->hTcxCfg ); + hCoreCoder->hTcxCfg = NULL; + } + + IF( hCoreCoder->hTonalMDCTConc != NULL ) + { + free( hCoreCoder->hTonalMDCTConc ); + hCoreCoder->hTonalMDCTConc = NULL; + } + + IF( hCoreCoder->hIGFDec != NULL ) + { + free( hCoreCoder->hIGFDec ); + hCoreCoder->hIGFDec = NULL; + } + + IF( hCoreCoder->hPlcInfo != NULL ) + { + free( hCoreCoder->hPlcInfo ); + hCoreCoder->hPlcInfo = NULL; + } + + IF( hCoreCoder->hHQ_core != NULL ) + { + free( hCoreCoder->hHQ_core ); + hCoreCoder->hHQ_core = NULL; + } + + IF( hCoreCoder->hHQ_nbfec != NULL ) + { + free( hCoreCoder->hHQ_nbfec ); + hCoreCoder->hHQ_nbfec = NULL; + } + + return; +} + +/*------------------------------------------------------------------------- + * ivas_initialize_handles_dec() + * + * NULL initialization of handles + *-------------------------------------------------------------------------*/ + +void ivas_initialize_handles_dec( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + Word16 i; + + FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) + { + st_ivas->cldfbAnaDec[i] = NULL; + } + + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + { + st_ivas->cldfbSynDec[i] = NULL; + } + + /* SCE handles */ + FOR( i = 0; i < MAX_SCE; i++ ) + { + st_ivas->hSCE[i] = NULL; + } + + /* CPE handles */ + FOR( i = 0; i < MAX_CPE; i++ ) + { + st_ivas->hCPE[i] = NULL; + } + + st_ivas->bit_stream = NULL; + st_ivas->mem_hp20_out_fx = NULL; + st_ivas->hLimiter = NULL; + + /* ISM metadata handles */ + FOR( i = 0; i < MAX_NUM_OBJECTS; i++ ) + { + st_ivas->hIsmMetaData[i] = NULL; + } + + /* spatial coding handles */ + st_ivas->hDirAC = NULL; + st_ivas->hParamIsmDec = NULL; + st_ivas->hSpar = NULL; + st_ivas->hMasa = NULL; + st_ivas->hQMetaData = NULL; + st_ivas->hMCT = NULL; + st_ivas->hMCParamUpmix = NULL; + st_ivas->hParamMC = NULL; + st_ivas->hLFE = NULL; + + /* rendering handles */ + st_ivas->hBinRenderer = NULL; + st_ivas->hDiracDecBin = NULL; + st_ivas->hDirACRend = NULL; + st_ivas->hSpatParamRendCom = NULL; + st_ivas->hLsSetUpConversion = NULL; + st_ivas->hEFAPdata = NULL; + st_ivas->hVBAPdata = NULL; + st_ivas->hIsmRendererData = NULL; + st_ivas->hBinRendererTd = NULL; + st_ivas->hMonoDmxRenderer = NULL; + st_ivas->hCrendWrapper = NULL; + st_ivas->hReverb = NULL; + st_ivas->hSetOfHRTF = NULL; + st_ivas->hHrtfFastConv = NULL; + st_ivas->hHrtfParambin = NULL; + st_ivas->hoa_dec_mtx = NULL; + st_ivas->hMasaIsmData = NULL; + st_ivas->hSbaIsmData = NULL; + + st_ivas->hHeadTrackData = NULL; + st_ivas->hHrtfTD = NULL; + st_ivas->hLsSetupCustom = NULL; + st_ivas->hRenderConfig = NULL; + st_ivas->hExtOrientationData = NULL; + st_ivas->hCombinedOrientationData = NULL; + + + /* JBM handles */ + st_ivas->hTcBuffer = NULL; + st_ivas->hJbmMetadata = NULL; + + /* floating-point output audio buffers */ + FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ ) + { + st_ivas->p_output_fx[i] = NULL; + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_destroy_dec() + * + * Close IVAS decoder handles + *-------------------------------------------------------------------------*/ + +void ivas_destroy_dec_fx( + Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ +) +{ + Word16 i; + + /* CLDFB handles */ + FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) + { + IF( st_ivas->cldfbAnaDec[i] != NULL ) + { + deleteCldfb_ivas_fx( &( st_ivas->cldfbAnaDec[i] ) ); + } + } + + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + { + IF( st_ivas->cldfbSynDec[i] != NULL ) + { + deleteCldfb_ivas_fx( &( st_ivas->cldfbSynDec[i] ) ); + } + } + + /* SCE handles */ + FOR( i = 0; i < MAX_SCE; i++ ) + { + IF( st_ivas->hSCE[i] != NULL ) + { + destroy_sce_dec( st_ivas->hSCE[i] ); + st_ivas->hSCE[i] = NULL; + } + } + + /* CPE handles */ + FOR( i = 0; i < MAX_CPE; i++ ) + { + IF( st_ivas->hCPE[i] != NULL ) + { + /* set pointer to NULL as core coder already deallocated in destroy_sce_dec() */ + test(); + IF( st_ivas->sba_dirac_stereo_flag && EQ_16( st_ivas->nchan_transport, 1 ) ) + { + st_ivas->hCPE[i]->hCoreCoder[0] = NULL; + st_ivas->hCPE[i]->hCoreCoder[1] = NULL; + } + destroy_cpe_dec( st_ivas->hCPE[i] ); + st_ivas->hCPE[i] = NULL; + } + } + + /* HP20 filter handles */ + IF( st_ivas->mem_hp20_out_fx != NULL ) + { + FOR( i = 0; i < getNumChanSynthesis( st_ivas ); i++ ) + { + free( st_ivas->mem_hp20_out_fx[i] ); + st_ivas->mem_hp20_out_fx[i] = NULL; + } + free( st_ivas->mem_hp20_out_fx ); + st_ivas->mem_hp20_out_fx = NULL; + } + + /* ISM metadata handles */ + ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 ); + + /* ISM renderer handle */ + ivas_ism_renderer_close( &( st_ivas->hIsmRendererData ) ); + + /* DirAC handle */ + IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) + { + ivas_param_ism_dec_close_fx( &( st_ivas->hParamIsmDec ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config ); + } + ELSE + { + ivas_dirac_rend_close_fx( &( st_ivas->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close_fx( &( st_ivas->hSpatParamRendCom ) ); + ivas_dirac_dec_close_fx( &( st_ivas->hDirAC ) ); + } + + /* SPAR handle */ + ivas_spar_dec_close_fx( &( st_ivas->hSpar ), st_ivas->hDecoderConfig->output_Fs, 0 ); + + /* HOA decoder matrix */ + IF( st_ivas->hoa_dec_mtx != NULL ) + { + free( st_ivas->hoa_dec_mtx ); + st_ivas->hoa_dec_mtx = NULL; + } + + /* MASA decoder structure */ + + ivas_masa_dec_close_fx( &( st_ivas->hMasa ) ); + /* Qmetadata handle */ + ivas_qmetadata_close_fx( &st_ivas->hQMetaData ); + + /* MCT handle */ + ivas_mct_dec_close( &st_ivas->hMCT ); + + /* LFE handle */ + ivas_lfe_dec_close_fx( &( st_ivas->hLFE ) ); + + /* Param-Upmix MC handle */ + ivas_mc_paramupmix_dec_close( &( st_ivas->hMCParamUpmix ) ); + + /* Parametric MC handle */ + ivas_param_mc_dec_close_fx( &st_ivas->hParamMC ); + + /* EFAP handle */ + efap_free_data_fx( &st_ivas->hEFAPdata ); + + /* VBAP handle */ + vbap_free_data_fx( &( st_ivas->hVBAPdata ) ); + /* Fastconv binaural renderer handle */ + ivas_binRenderer_close_fx( &st_ivas->hBinRenderer ); + + /* Parametric binaural renderer handle */ + ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); + + /* Crend handle */ + + ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); + + /* Reverb handle */ + ivas_reverb_close( &st_ivas->hReverb ); + + /* LS config converter handle */ + + ivas_ls_setup_conversion_close_fx( &st_ivas->hLsSetUpConversion ); + /* Custom LS configuration handle */ + IF( st_ivas->hLsSetupCustom != NULL ) + { + free( st_ivas->hLsSetupCustom ); + st_ivas->hLsSetupCustom = NULL; + } + + /* Mono downmix structure */ + ivas_mono_dmx_renderer_close( &st_ivas->hMonoDmxRenderer ); + + /* OSBA structure */ + + ivas_osba_data_close_fx( &st_ivas->hSbaIsmData ); + + /* OMASA structure */ + ivas_omasa_data_close_fx( &st_ivas->hMasaIsmData ); + /* Head track data handle */ + ivas_headTrack_close_fx( &st_ivas->hHeadTrackData ); + + /* External orientation data handle */ + ivas_external_orientation_close_fx( &st_ivas->hExtOrientationData ); + + /* Combined orientation data handle */ + ivas_combined_orientation_close_fx( &st_ivas->hCombinedOrientationData ); + + /* Time Domain binaural renderer handle */ + IF( st_ivas->hBinRendererTd != NULL ) + { + ivas_td_binaural_close_fx( &st_ivas->hBinRendererTd ); + } + ELSE IF( st_ivas->hHrtfTD != NULL ) + { + BSplineModelEvalDealloc_fx( &st_ivas->hHrtfTD->ModelParams, &st_ivas->hHrtfTD->ModelEval ); + ivas_HRTF_binary_close_fx( &st_ivas->hHrtfTD ); + } + + /* CRend binaural renderer handle */ + ivas_HRTF_CRend_binary_close_fx( &st_ivas->hSetOfHRTF ); + + /* Fastconv HRTF memories */ + ivas_binaural_hrtf_close( &st_ivas->hHrtfFastConv ); + + /* Fastconv HRTF filters */ + ivas_HRTF_fastconv_binary_close_fx( &st_ivas->hHrtfFastConv ); + + /* Parametric binauralizer HRTF filters */ + ivas_HRTF_parambin_binary_close_fx( &st_ivas->hHrtfParambin ); + + /* Config. Renderer */ + ivas_render_config_close( &( st_ivas->hRenderConfig ) ); + + /* Limiter struct */ + ivas_limiter_close_fx( &( st_ivas->hLimiter ) ); + + IF( st_ivas->hDecoderConfig != NULL ) + { + free( st_ivas->hDecoderConfig ); + st_ivas->hDecoderConfig = NULL; + } + + ivas_jbm_dec_tc_buffer_close( &st_ivas->hTcBuffer ); + + IF( st_ivas->hJbmMetadata != NULL ) + { + free( st_ivas->hJbmMetadata ); + st_ivas->hJbmMetadata = NULL; + } + + /* floating-point output audio buffers */ + FOR( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ ) + { + + IF( st_ivas->p_output_fx[i] != NULL ) + { + free( st_ivas->p_output_fx[i] ); + st_ivas->p_output_fx[i] = NULL; + } + } + + /* main IVAS handle */ + free( st_ivas ); + + return; +} + + +/*-------------------------------------------------------------------* + * ivas_init_dec_get_num_cldfb_instances() + * + * Return number of CLDFB analysis & synthesis instances + *-------------------------------------------------------------------*/ + +/*! r: number of cldfb instances */ +void ivas_init_dec_get_num_cldfb_instances( + Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ + Word16 *numCldfbAnalyses, /* o : number of needed CLDFB analysis instances */ + Word16 *numCldfbSyntheses /* o : number of needed CLDFB synthesis instances */ +) +{ + IVAS_FORMAT ivas_format; + *numCldfbAnalyses = st_ivas->nchan_transport; + move16(); + *numCldfbSyntheses = st_ivas->hDecoderConfig->nchan_out; + move16(); + + test(); + IF( ( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) + { + ivas_format = SBA_FORMAT; + move32(); + } + ELSE + { + ivas_format = st_ivas->ivas_format; + move32(); + } + + SWITCH( st_ivas->renderer_type ) + { + case RENDERER_BINAURAL_PARAMETRIC: + case RENDERER_BINAURAL_PARAMETRIC_ROOM: + case RENDERER_STEREO_PARAMETRIC: + IF( EQ_16( st_ivas->nchan_transport, 1 ) ) + { + *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); + move16(); + } + + test(); + IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) && st_ivas->hOutSetup.separateChannelEnabled ) + { + *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); + move16(); + } + + IF( EQ_32( ivas_format, SBA_ISM_FORMAT ) ) + { + IF( EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) + { + *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism ); + move16(); + } + } + + IF( EQ_32( ivas_format, MASA_ISM_FORMAT ) ) + { + test(); + IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) + { + *numCldfbAnalyses = add( *numCldfbAnalyses, st_ivas->nchan_ism ); + move16(); + } + ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) + { + *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); + move16(); + } + } + IF( st_ivas->hDiracDecBin->useTdDecorr ) + { + *numCldfbAnalyses = add( *numCldfbAnalyses, 2 ); + move16(); + } + BREAK; + case RENDERER_NON_DIEGETIC_DOWNMIX: + case RENDERER_MONO_DOWNMIX: + test(); + test(); + IF( EQ_32( ivas_format, ISM_FORMAT ) || EQ_32( ivas_format, MASA_ISM_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) + { + /* CLDFB not used in rendering */ + *numCldfbAnalyses = 0; + move16(); + *numCldfbSyntheses = 0; + move16(); + } + BREAK; + case RENDERER_DIRAC: + IF( EQ_32( ivas_format, SBA_FORMAT ) ) + { + *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans; + move16(); + + test(); + IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) ) + { + *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE; + move16(); + } + ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) ) + { + *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans; + move16(); + } + ELSE + { + *numCldfbSyntheses = MAX_OUTPUT_CHANNELS; + move16(); + } + } + IF( NE_32( ivas_format, SBA_FORMAT ) ) + { + test(); + test(); + IF( GT_16( st_ivas->nchan_transport, 2 ) && ( st_ivas->sba_planar != 0 ) ) + { + *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); + move16(); + } + ELSE IF( EQ_16( st_ivas->nchan_transport, 1 ) && EQ_32( st_ivas->hDirACRend->synthesisConf, DIRAC_SYNTHESIS_GAIN_SHD ) ) + { + *numCldfbAnalyses = add( st_ivas->nchan_transport, 1 ); + move16(); + } + } + BREAK; + case RENDERER_MC_PARAMMC: + IF( LE_16( st_ivas->hDecoderConfig->nchan_out, 2 ) ) + { + /* CLDFB not used in rendering */ + *numCldfbAnalyses = 0; + move16(); + *numCldfbSyntheses = 0; + move16(); + } + ELSE + { + *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas ); + move16(); + } + BREAK; + case RENDERER_PARAM_ISM: + /* Already correct with no exception */ + BREAK; + case RENDERER_DISABLE: + /* CLDFB not used */ + *numCldfbAnalyses = 0; + move16(); + *numCldfbSyntheses = 0; + move16(); + BREAK; + case RENDERER_MC: + case RENDERER_SBA_LINEAR_DEC: + case RENDERER_TD_PANNING: + case RENDERER_BINAURAL_OBJECTS_TD: + case RENDERER_MCMASA_MONO_STEREO: + case RENDERER_BINAURAL_MIXER_CONV: + case RENDERER_BINAURAL_MIXER_CONV_ROOM: + case RENDERER_BINAURAL_FASTCONV: + case RENDERER_BINAURAL_FASTCONV_ROOM: + case RENDERER_OSBA_STEREO: + case RENDERER_OSBA_AMBI: + case RENDERER_OSBA_LS: + test(); + IF( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) + { + IF( st_ivas->sba_dirac_stereo_flag != 0 ) + { + *numCldfbAnalyses = 0; + move16(); + *numCldfbSyntheses = 0; + move16(); + } + ELSE + { + *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans; + move16(); + + test(); + IF( st_ivas->hOutSetup.is_loudspeaker_setup && EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) ) + { + *numCldfbSyntheses = st_ivas->hOutSetup.nchan_out_woLFE; + move16(); + } + ELSE IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) ) + { + *numCldfbSyntheses = st_ivas->hSpar->hFbMixer->fb_cfg->num_out_chans; + move16(); + } + ELSE + { + *numCldfbSyntheses = MAX_OUTPUT_CHANNELS; + move16(); + } + test(); + IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) + { + *numCldfbAnalyses = add( st_ivas->nchan_ism, st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans ); + move16(); + } + } + } + ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) ) + { + /* do nothing for ParamMC */ + } + ELSE + { + /* CLDFB not used in rendering */ + *numCldfbAnalyses = 0; + move16(); + *numCldfbSyntheses = 0; + move16(); + } + BREAK; + case RENDERER_SBA_LINEAR_ENC: + IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) ) + { + *numCldfbSyntheses = param_mc_get_num_cldfb_syntheses_fx( st_ivas ); + move16(); + } + ELSE IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) + { + *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe ); + move16(); + } + ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCMASA ) ) + { + *numCldfbAnalyses = st_ivas->nchan_transport; + move16(); + *numCldfbSyntheses = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe ); + move16(); + } + ELSE + { + /* CLDFB not used in rendering */ + *numCldfbAnalyses = 0; + move16(); + *numCldfbSyntheses = 0; + move16(); + } + BREAK; + default: + assert( 0 && "Renderer not handled for CLDFB reservation." ); + } + test(); + test(); + IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) ) + { + test(); + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) + { + *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MAX_INPUT_CHANS, *numCldfbAnalyses ); + move16(); + } + ELSE + { + *numCldfbAnalyses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbAnalyses ); + move16(); + } + *numCldfbSyntheses = s_max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbSyntheses ); + move16(); + } + + return; +} + void ivas_init_dec_get_num_cldfb_instances_ivas_fx( Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ Word16 *numCldfbAnalyses, /* o : number of needed CLDFB analysis instances */ @@ -260,3 +3376,142 @@ void ivas_init_dec_get_num_cldfb_instances_ivas_fx( return; } + + +/*---------------------------------------------------------------------* + * doSanityChecks_IVAS() + * + * Sanity checks - verify if the decoder set-up parameters are + * not in conflict with the IVAS format + *---------------------------------------------------------------------*/ + +static ivas_error doSanityChecks_IVAS( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + Word32 output_Fs; + AUDIO_CONFIG output_config; + + output_Fs = st_ivas->hDecoderConfig->output_Fs; + move32(); + output_config = st_ivas->hDecoderConfig->output_config; + move32(); + /*-----------------------------------------------------------------* + * Sanity checks + *-----------------------------------------------------------------*/ + + IF( EQ_32( output_Fs, 8000 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "8kHz output sampling rate is not supported in IVAS." ); + } + + assert( st_ivas->ivas_format != UNDEFINED_FORMAT && "\n IVAS format undefined" ); + assert( st_ivas->ivas_format != MONO_FORMAT && "\n Wrong IVAS format: MONO" ); + + /* Verify output configuration compatible with non-diegetic panning */ + test(); + test(); + IF( st_ivas->hDecoderConfig->Opt_non_diegetic_pan && NE_32( st_ivas->ivas_format, MONO_FORMAT ) && NE_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_ISM1 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Error: Non-diegetic panning not supported in this IVAS format" ); + } + + /* Verify stereo output configuration */ + IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) + { + test(); + test(); + test(); + test(); + test(); + test(); + test(); + IF( NE_32( output_config, IVAS_AUDIO_CONFIG_MONO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_2 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_5_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_7_1_4 ) && NE_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Wrong output configuration specified for Stereo!" ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) + { + /* Verify ISM output configuration */ + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for ISM" ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) + { + /* Verify SBA output coniguration */ + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for SBA" ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) + { + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for MASA!" ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) + { + /* Verify MC output configuration */ + test(); + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_INVALID ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for Multi-channel" ); + } + } + + + IF( st_ivas->hDecoderConfig->Opt_Headrotation ) + { + test(); + test(); + IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) + { + return IVAS_ERROR( IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED, "Wrong set-up: Head-rotation not supported in this configuration" ); + } + } + + IF( st_ivas->hDecoderConfig->Opt_ExternalOrientation ) + { + test(); + test(); + IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) + { + return IVAS_ERROR( IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED, "Wrong set-up: External orientation not supported in this configuration" ); + } + } + + IF( st_ivas->hDecoderConfig->Opt_dpid_on ) + { + test(); + IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) + { + return IVAS_ERROR( IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED, "Wrong set-up: Directivity is not supported in this output configuration." ); + } + } + + IF( st_ivas->hDecoderConfig->Opt_aeid_on ) + { + IF( NE_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + return IVAS_ERROR( IVAS_ERR_ACOUSTIC_ENVIRONMENT_NOT_SUPPORTED, "Wrong set-up: Acoustic environment is not supported in this output configuration." ); + } + } + + IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) + { + test(); + IF( NE_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) && EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" ); + } + } + + + return IVAS_ERR_OK; +} diff --git a/lib_dec/ivas_rom_dec.c b/lib_dec/ivas_rom_dec_fx.c similarity index 100% rename from lib_dec/ivas_rom_dec.c rename to lib_dec/ivas_rom_dec_fx.c diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec_fx.c similarity index 100% rename from lib_dec/ivas_stereo_cng_dec.c rename to lib_dec/ivas_stereo_cng_dec_fx.c diff --git a/lib_dec/ivas_stereo_dft_dec.c b/lib_dec/ivas_stereo_dft_dec.c deleted file mode 100644 index 92ae9159c..000000000 --- a/lib_dec/ivas_stereo_dft_dec.c +++ /dev/null @@ -1,494 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -#include -#include -#include "options.h" -#include -#include "cnst.h" -#include "rom_com.h" -#include "rom_dec.h" -#include "prot_fx.h" -#include "ivas_cnst.h" -#include "ivas_rom_com.h" -#include "ivas_rom_com_fx.h" -#include "ivas_rom_dec.h" -#include "wmc_auto.h" -#include "ivas_prot_fx.h" - -/*-------------------------------------------------------------------* - * Local constants - *-------------------------------------------------------------------*/ - -#define STEFI_DELAY_IND( d, buf_ind ) ( ( buf_ind ) + STEREO_DFT_PAST_MAX - ( d ) + 1 ) % STEREO_DFT_PAST_MAX - -#define STEREO_DFT_RES_RATIO_LIMIT_FX ( Word32 )( 0x170A3D71 ) -#define STEREO_DFT_STEFFI_DELAY_SHORT 2 -#define STEREO_DFT_STEFFI_DELAY_LONG 4 -#define STEREO_DFT_STEFFI_DELAY_OFFSET 2 - - -#define STEREO_DFT_BPF_SIZE 40 /* BPF: Number of weights for BPF in DFT: 40*40Hz=1.6kHz*/ - - -/*------------------------------------------------------------------------- - * Local function prototypes - *-------------------------------------------------------------------------*/ - - -/*------------------------------------------------------------------------- - * stereo_dft_dec_create() - * - * Create DFT stereo handle - *------------------------------------------------------------------------*/ - - -/*------------------------------------------------------------------------- - * stereo_dft_dec_open() - * - * Open DFT decoder stereo handle - *-------------------------------------------------------------------------*/ - - -/*------------------------------------------------------------------------- - * stereo_dft_dec_reset() - * - * Reset DFT stereo memories - *------------------------------------------------------------------------*/ - -/*------------------------------------------------------------------------- - * stereo_dft_dec_update() - * - * Update DFT memories for new frame - *-------------------------------------------------------------------------*/ - -/*------------------------------------------------------------------------- - * stereo_dft_dec_destroy() - * - * destroy DFT stereo handle - *-------------------------------------------------------------------------*/ - -void stereo_dft_dec_destroy( - STEREO_DFT_DEC_DATA_HANDLE *hStereoDft_glob /* i/o: decoder DFT stereo handle */ -) -{ - STEREO_DFT_DEC_DATA_HANDLE hStereoDft; - - hStereoDft = *hStereoDft_glob; - - IF( hStereoDft->hConfig != NULL ) - { - free( hStereoDft->hConfig ); - hStereoDft->hConfig = NULL; - } - - IF( hStereoDft->hBpf != NULL ) - { - free( hStereoDft->hBpf ); - hStereoDft->hBpf = NULL; - } - - IF( hStereoDft->hTcxLtpDec != NULL ) - { - free( hStereoDft->hTcxLtpDec ); - hStereoDft->hTcxLtpDec = NULL; - } - - free( hStereoDft ); - hStereoDft = NULL; - - return; -} - - -/*------------------------------------------------------------------------- - * stereo_dft_dec_analyze() - * - * DFT analysis on a 20ms frame - *-------------------------------------------------------------------------*/ - -void stereo_dft_dec_analyze_fx( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - const Word32 *input_fx, /* i : input signal q*/ - Word32 out_DFT_fx[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers q_out_DFT*/ - const Word16 chan, /* i : channel number Q0*/ - const Word16 input_frame, /* i : input frame size Q0*/ - const Word16 output_frame, /* i : output frame size Q0*/ - const DFT_STEREO_DEC_ANA_TYPE ana_type, /* i : type of signal to analyse */ - const Word16 k_offset, /* i : offset of DFT Q0*/ - const Word16 delay, /* i : delay in samples FOR input signal Q0*/ - Word16 *q, - Word16 *q_out_DFT ) -{ - - Word16 i, k; - STEREO_DFT_DEC_DATA_HANDLE hStereoDft; - Word32 *pInput_fx, *pInput_buff_fx; - Word32 *mem_fx, input_buff_fx[STEREO_DFT32MS_OVL_MAX + L_FRAME48k]; - Word32 DFT_fx[STEREO_DFT32MS_N_MAX], *pDFT_out_fx; - Word16 NFFT, NFFT_core, ovl, zp; - Word16 offset; - Word32 fac_fx; - const Word16 *trigo_fx, *win_left_fx, *win_right_fx, *win2_fx; - Word16 trigo_dec_fx[STEREO_DFT32MS_N_MAX / 2 + 1]; - Word16 trigo_step; - Word32 inputFs; - Word16 delay_dec; - Word16 mem_size; - Word16 ovl2; - - push_wmops( "DFT_analysis" ); - - hStereoDft = hCPE->hStereoDft; - - assert( output_frame == STEREO_DFT_NBDIV * hStereoDft->N ); - - /*-----------------------------------------------------------------* - * Initialization - *-----------------------------------------------------------------*/ - - IF( EQ_16( input_frame, output_frame ) ) - { - trigo_fx = hStereoDft->dft_trigo_fx; - trigo_step = i_mult( hStereoDft->dft_trigo_step, STEREO_DFT_TRIGO_DEC_STEP ); /* Q0 */ - win_right_fx = hStereoDft->win32ms_fx; /* Q15 */ - win_left_fx = hStereoDft->win32ms_fx; /* Q15 */ - win2_fx = hStereoDft->win232ms_fx; /* Q15 */ - - test(); - IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) - { - assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" ); - mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */ - } - ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) ) - { - mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */ - } - ELSE - { - mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ - } - } - ELSE IF( EQ_16( input_frame, L_FRAME ) ) - { - trigo_fx = hStereoDft->dft_trigo_12k8_fx; /* Q15 */ - trigo_step = STEREO_DFT_TRIGO_SRATE_12k8_STEP * STEREO_DFT_TRIGO_DEC_STEP; - move16(); - win_right_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */ - win_left_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */ - win2_fx = hStereoDft->win232ms_12k8_fx; /* Q15 */ - - test(); - IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) - { - assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" ); - mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */ - } - ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) ) - { - mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */ - } - ELSE - { - assert( ( chan == 1 ) && "12.8kHz sampling rate only FOR second channel, i.e. residual coding or allpass signal" ); - mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ - } - } - ELSE IF( EQ_16( input_frame, L_FRAME16k ) ) - { - trigo_fx = hStereoDft->dft_trigo_16k_fx; /* Q15 */ - trigo_step = STEREO_DFT_TRIGO_SRATE_16k_STEP * STEREO_DFT_TRIGO_DEC_STEP; - move16(); - win_right_fx = hStereoDft->win32ms_16k_fx; /* Q15 */ - win_left_fx = hStereoDft->win32ms_16k_fx; /* Q15 */ - win2_fx = hStereoDft->win232ms_16k_fx; /* Q15 */ - - test(); - IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) - { - assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" ); - mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */ - } - ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) ) - { - mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */ - } - ELSE - { - assert( ( chan == 1 ) && ( hCPE->hStereoDft->hConfig->res_pred_mode == STEREO_DFT_RESPRED_ESF ) && "16kHz sampling rate only FOR second channel with allpass signal" ); - mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ - } - } - ELSE IF( EQ_16( input_frame, L_FRAME8k ) ) - { - assert( ( chan == 1 ) && "DFT stereo: 8kHz analysis only FOR residual coding" ); - trigo_fx = hStereoDft->dft_trigo_8k_fx; /* Q15 */ - trigo_step = STEREO_DFT_TRIGO_SRATE_8k_STEP * STEREO_DFT_TRIGO_DEC_STEP; - move16(); - win_right_fx = hStereoDft->win32ms_8k_fx; /* Q15 */ - win_left_fx = hStereoDft->win32ms_8k_fx; /* Q15 */ - win2_fx = hStereoDft->win232ms_8k_fx; /* Q15 */ - mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ - } - ELSE - { - IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error in DFT stereo: sampling rate not supported" ); - mem_fx = NULL; /* to avoid compilation warning */ - trigo_fx = NULL; /* to avoid compilation warning */ - trigo_step = -1; /* to avoid compilation warning */ - move16(); - win_right_fx = NULL; /* to avoid compilation warning */ - win_left_fx = NULL; /* to avoid compilation warning */ - win2_fx = NULL; /* to avoid compilation warning */ - } - - inputFs = L_mult0( input_frame, FRAMES_PER_SEC ); /* Q0 */ - delay_dec = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS ); - move16(); - zp = NS2SA_FX2( inputFs, STEREO_DFT32MS_ZP_NS ); - move16(); - ovl = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS ); - move16(); - NFFT = NS2SA_FX2( inputFs, STEREO_DFT32MS_N_NS ); - Word16 qfac_fx; - fac_fx = BASOP_Util_Divide3232_Scale_newton( hStereoDft->NFFT, NFFT, &qfac_fx ); /* qfac_fx */ - qfac_fx = sub( 31, qfac_fx ); - ovl2 = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL2_NS ); - move16(); - - /* Offset FOR the time buffers */ - assert( ( delay >= -NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_DELAY_DEC_BWE_NS + STEREO_DFT_OVL_NS / 2 ) ) && ( delay <= NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_OVL_NS ) ) ); - mem_size = add( delay_dec, delay ); - - /* Update buffers */ - Copy32( mem_fx, input_buff_fx, mem_size ); /* Q11 */ - Copy32( input_fx, input_buff_fx + mem_size, input_frame ); /* q */ - Copy32( input_buff_fx + input_frame, mem_fx, mem_size ); /* q */ - pInput_buff_fx = input_buff_fx; /* q */ - - test(); - IF( EQ_16( hCPE->nchan_out, 1 ) && ( hCPE->hStereoDft->hConfig->res_cod_mode == STEREO_DFT_RES_COD_OFF ) ) - { - pop_wmops(); - return; - } - - - /*-----------------------------------------------------------------* - * DFT Analysis: loop over frame - *-----------------------------------------------------------------*/ - - assert( ( k_offset <= STEREO_DFT_NBDIV ) ); - - FOR( i = 0; i < NFFT / 4; i++ ) - { - trigo_dec_fx[i] = trigo_fx[i * trigo_step]; - move16(); - trigo_dec_fx[NFFT / 2 - i] = trigo_fx[i * trigo_step]; - move16(); - } - trigo_dec_fx[NFFT / 4] = trigo_fx[NFFT / 4 * trigo_step]; - move16(); - - FOR( k = 0; k < STEREO_DFT_NBDIV - k_offset; k++ ) - { - set32_fx( DFT_fx, 0, STEREO_DFT32MS_N_MAX ); - IF( k == 0 ) - { - offset = 0; - move16(); - } - ELSE - { - /* If OVL2 = OVL offset = 10ms */ - offset = NS2SA_FX2( inputFs, STEREO_DFT32MS_WIN_CENTER_NS - STEREO_DFT32MS_OVL2_NS / 2 ); - move16(); - } - - pInput_fx = pInput_buff_fx + offset; /* q */ - pDFT_out_fx = out_DFT_fx[chan] + i_mult( k, STEREO_DFT32MS_N_MAX ); /* q_out_DFT */ - - /*Forwards FFT: L and R*/ - /* Zero Padding & Flat Portion */ - Copy32( pInput_fx, DFT_fx + zp, sub( NFFT, i_mult( 2, zp ) ) ); /* q */ - - /* Overlapping portions */ - IF( k == 0 ) - { - FOR( i = 0; i < ovl; i++ ) - { - DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win_left_fx[STEREO_DFT32MS_STEP * i] ); /* q */ - move32(); - } - FOR( i = 0; i < ovl2; i++ ) - { - DFT_fx[NFFT - zp - 1 - i] = Mpy_32_16_1( DFT_fx[NFFT - zp - 1 - i], win2_fx[i] ); /* q */ - move32(); - } - } - ELSE - { - FOR( i = 0; i < ovl2; i++ ) - { - DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win2_fx[i] ); /* q */ - move32(); - } - FOR( i = 0; i < ovl; i++ ) - { - DFT_fx[NFFT - zp - i - 1] = Mpy_32_16_1( DFT_fx[NFFT - zp - i - 1], win_right_fx[STEREO_DFT32MS_STEP * i] ); /* q */ - move32(); - } - } - Word16 q_DFT, q_shift, guarded_bits; - q_DFT = *q; - move16(); - guarded_bits = find_guarded_bits_fx( NFFT ); - q_shift = sub( L_norm_arr( DFT_fx, NFFT ), guarded_bits ); - - FOR( Word16 j = 0; j < NFFT; j++ ) - { - DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift*/ - move32(); - } - - q_DFT = add( q_DFT, q_shift ); - - rfft_fx( DFT_fx, trigo_dec_fx, NFFT, -1 ); - - q_shift = sub( L_norm_arr( DFT_fx, NFFT ), sub( 31, qfac_fx ) ); - FOR( Word16 j = 0; j < NFFT; j++ ) - { - DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift */ - move32(); - } - q_DFT = add( q_DFT, q_shift ); - IF( sub( q_out_DFT[chan], q_DFT ) > 0 ) - { - FOR( Word32 j = 0; j < NFFT; j++ ) - { - out_DFT_fx[chan][j] = L_shr( out_DFT_fx[chan][j], sub( q_out_DFT[chan], q_DFT ) ); /* q_DFT */ - move32(); - } - q_out_DFT[chan] = q_DFT; - move16(); - } - ELSE - { - FOR( Word32 j = 0; j < NFFT; j++ ) - { - DFT_fx[j] = L_shr( DFT_fx[j], sub( q_DFT, q_out_DFT[chan] ) ); /* q_DFT */ - move32(); - } - q_DFT = q_out_DFT[chan]; - move16(); - } - - /*Resampling: filtering+scaling*/ - test(); - test(); - IF( ( ana_type == DFT_STEREO_DEC_ANA_FB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_NOCORE ) ) - { - pDFT_out_fx[0] = L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ); /*DC*/ /* qDFT */ - move32(); - IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/ - { - pDFT_out_fx[1] = L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */ - move32(); - } - ELSE - { - pDFT_out_fx[1] = 0; - move32(); - } - FOR( i = 2; i < NFFT; i++ ) - { - pDFT_out_fx[i] = L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */ - move32(); - } - FOR( i = NFFT; i < hStereoDft->NFFT; i++ ) - { - pDFT_out_fx[i] = 0; /* qDFT */ - move32(); - } - } - ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) - { - pDFT_out_fx[0] = L_sub( pDFT_out_fx[0], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[0], fac_fx ), dft_bpf_weights_fx[0] ), sub( 32, qfac_fx ) ) ); /* qDFT */ - move32(); - - FOR( i = 1; i < STEREO_DFT_BPF_SIZE; i++ ) - { - pDFT_out_fx[2 * i] = L_sub( pDFT_out_fx[2 * i], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */ - move32(); - pDFT_out_fx[2 * i + 1] = L_sub( pDFT_out_fx[2 * i + 1], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i + 1], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */ - move32(); - } - } - ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_HB_ADD ) ) - { - NFFT_core = NS2SA_FX2( L_mult0( hCPE->hCoreCoder[0]->L_frame, FRAMES_PER_SEC ), STEREO_DFT32MS_N_NS ); /* Q0 */ - move16(); - - FOR( i = NFFT_core; i < NFFT; i++ ) - { - pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */ - move32(); - } - } - ELSE - { - pDFT_out_fx[0] = L_add( pDFT_out_fx[0], L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ) ); /*DC*/ /* qDFT */ - move32(); - IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/ - { - pDFT_out_fx[1] = L_add( L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[1] ); /* qDFT */ - move32(); - } - FOR( i = 2; i < NFFT; i++ ) - { - pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */ - move32(); - } - } - } - - pop_wmops(); - return; -} - - -/*--------------------------------------------------------------- - * stereo_dft_dec_smooth_parameters() - * - * - * ---------------------------------------------------------------*/ diff --git a/lib_dec/ivas_stereo_dft_dec_fx.c b/lib_dec/ivas_stereo_dft_dec_fx.c index f1ccc1d7f..914c7fad1 100644 --- a/lib_dec/ivas_stereo_dft_dec_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_fx.c @@ -268,7 +268,7 @@ void stereo_dft_dec_reset_fx( } /*------------------------------------------------------------------------- - * stereo_dft_dec_open() + * stereo_dft_dec_open_fx() * * Open DFT decoder stereo handle *-------------------------------------------------------------------------*/ @@ -684,6 +684,402 @@ void stereo_dft_dec_update_fx( return; } +/*------------------------------------------------------------------------- + * stereo_dft_dec_destroy_fx() + * + * destroy DFT stereo handle + *-------------------------------------------------------------------------*/ + +void stereo_dft_dec_destroy_fx( + STEREO_DFT_DEC_DATA_HANDLE *hStereoDft_glob /* i/o: decoder DFT stereo handle */ +) +{ + STEREO_DFT_DEC_DATA_HANDLE hStereoDft; + + hStereoDft = *hStereoDft_glob; + + IF( hStereoDft->hConfig != NULL ) + { + free( hStereoDft->hConfig ); + hStereoDft->hConfig = NULL; + } + + IF( hStereoDft->hBpf != NULL ) + { + free( hStereoDft->hBpf ); + hStereoDft->hBpf = NULL; + } + + IF( hStereoDft->hTcxLtpDec != NULL ) + { + free( hStereoDft->hTcxLtpDec ); + hStereoDft->hTcxLtpDec = NULL; + } + + free( hStereoDft ); + hStereoDft = NULL; + + return; +} + + +/*------------------------------------------------------------------------- + * stereo_dft_dec_analyze_fx() + * + * DFT analysis on a 20ms frame + *-------------------------------------------------------------------------*/ + +void stereo_dft_dec_analyze_fx( + CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ + const Word32 *input_fx, /* i : input signal q*/ + Word32 out_DFT_fx[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers q_out_DFT*/ + const Word16 chan, /* i : channel number Q0*/ + const Word16 input_frame, /* i : input frame size Q0*/ + const Word16 output_frame, /* i : output frame size Q0*/ + const DFT_STEREO_DEC_ANA_TYPE ana_type, /* i : type of signal to analyse */ + const Word16 k_offset, /* i : offset of DFT Q0*/ + const Word16 delay, /* i : delay in samples FOR input signal Q0*/ + Word16 *q, + Word16 *q_out_DFT ) +{ + + Word16 i, k; + STEREO_DFT_DEC_DATA_HANDLE hStereoDft; + Word32 *pInput_fx, *pInput_buff_fx; + Word32 *mem_fx, input_buff_fx[STEREO_DFT32MS_OVL_MAX + L_FRAME48k]; + Word32 DFT_fx[STEREO_DFT32MS_N_MAX], *pDFT_out_fx; + Word16 NFFT, NFFT_core, ovl, zp; + Word16 offset; + Word32 fac_fx; + const Word16 *trigo_fx, *win_left_fx, *win_right_fx, *win2_fx; + Word16 trigo_dec_fx[STEREO_DFT32MS_N_MAX / 2 + 1]; + Word16 trigo_step; + Word32 inputFs; + Word16 delay_dec; + Word16 mem_size; + Word16 ovl2; + + push_wmops( "DFT_analysis" ); + + hStereoDft = hCPE->hStereoDft; + + assert( output_frame == STEREO_DFT_NBDIV * hStereoDft->N ); + + /*-----------------------------------------------------------------* + * Initialization + *-----------------------------------------------------------------*/ + + IF( EQ_16( input_frame, output_frame ) ) + { + trigo_fx = hStereoDft->dft_trigo_fx; + trigo_step = i_mult( hStereoDft->dft_trigo_step, STEREO_DFT_TRIGO_DEC_STEP ); /* Q0 */ + win_right_fx = hStereoDft->win32ms_fx; /* Q15 */ + win_left_fx = hStereoDft->win32ms_fx; /* Q15 */ + win2_fx = hStereoDft->win232ms_fx; /* Q15 */ + + test(); + IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) + { + assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" ); + mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */ + } + ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) ) + { + mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */ + } + ELSE + { + mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ + } + } + ELSE IF( EQ_16( input_frame, L_FRAME ) ) + { + trigo_fx = hStereoDft->dft_trigo_12k8_fx; /* Q15 */ + trigo_step = STEREO_DFT_TRIGO_SRATE_12k8_STEP * STEREO_DFT_TRIGO_DEC_STEP; + move16(); + win_right_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */ + win_left_fx = hStereoDft->win32ms_12k8_fx; /* Q15 */ + win2_fx = hStereoDft->win232ms_12k8_fx; /* Q15 */ + + test(); + IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) + { + assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" ); + mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */ + } + ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) ) + { + mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */ + } + ELSE + { + assert( ( chan == 1 ) && "12.8kHz sampling rate only FOR second channel, i.e. residual coding or allpass signal" ); + mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ + } + } + ELSE IF( EQ_16( input_frame, L_FRAME16k ) ) + { + trigo_fx = hStereoDft->dft_trigo_16k_fx; /* Q15 */ + trigo_step = STEREO_DFT_TRIGO_SRATE_16k_STEP * STEREO_DFT_TRIGO_DEC_STEP; + move16(); + win_right_fx = hStereoDft->win32ms_16k_fx; /* Q15 */ + win_left_fx = hStereoDft->win32ms_16k_fx; /* Q15 */ + win2_fx = hStereoDft->win232ms_16k_fx; /* Q15 */ + + test(); + IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) + { + assert( ( chan == 0 ) && "DFT stereo: BPF memory only FOR M channel" ); + mem_fx = hCPE->input_mem_BPF_fx[chan]; /* Q11 */ + } + ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB_ADD ) ) + { + mem_fx = hCPE->input_mem_LB_fx[chan]; /* Q11 */ + } + ELSE + { + assert( ( chan == 1 ) && ( hCPE->hStereoDft->hConfig->res_pred_mode == STEREO_DFT_RESPRED_ESF ) && "16kHz sampling rate only FOR second channel with allpass signal" ); + mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ + } + } + ELSE IF( EQ_16( input_frame, L_FRAME8k ) ) + { + assert( ( chan == 1 ) && "DFT stereo: 8kHz analysis only FOR residual coding" ); + trigo_fx = hStereoDft->dft_trigo_8k_fx; /* Q15 */ + trigo_step = STEREO_DFT_TRIGO_SRATE_8k_STEP * STEREO_DFT_TRIGO_DEC_STEP; + move16(); + win_right_fx = hStereoDft->win32ms_8k_fx; /* Q15 */ + win_left_fx = hStereoDft->win32ms_8k_fx; /* Q15 */ + win2_fx = hStereoDft->win232ms_8k_fx; /* Q15 */ + mem_fx = hCPE->input_mem_fx[chan]; /* Q11 */ + } + ELSE + { + IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error in DFT stereo: sampling rate not supported" ); + mem_fx = NULL; /* to avoid compilation warning */ + trigo_fx = NULL; /* to avoid compilation warning */ + trigo_step = -1; /* to avoid compilation warning */ + move16(); + win_right_fx = NULL; /* to avoid compilation warning */ + win_left_fx = NULL; /* to avoid compilation warning */ + win2_fx = NULL; /* to avoid compilation warning */ + } + + inputFs = L_mult0( input_frame, FRAMES_PER_SEC ); /* Q0 */ + delay_dec = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS ); + move16(); + zp = NS2SA_FX2( inputFs, STEREO_DFT32MS_ZP_NS ); + move16(); + ovl = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL_NS ); + move16(); + NFFT = NS2SA_FX2( inputFs, STEREO_DFT32MS_N_NS ); + Word16 qfac_fx; + fac_fx = BASOP_Util_Divide3232_Scale_newton( hStereoDft->NFFT, NFFT, &qfac_fx ); /* qfac_fx */ + qfac_fx = sub( 31, qfac_fx ); + ovl2 = NS2SA_FX2( inputFs, STEREO_DFT32MS_OVL2_NS ); + move16(); + + /* Offset FOR the time buffers */ + assert( ( delay >= -NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_DELAY_DEC_BWE_NS + STEREO_DFT_OVL_NS / 2 ) ) && ( delay <= NS2SA( input_frame * FRAMES_PER_SEC, STEREO_DFT_OVL_NS ) ) ); + mem_size = add( delay_dec, delay ); + + /* Update buffers */ + Copy32( mem_fx, input_buff_fx, mem_size ); /* Q11 */ + Copy32( input_fx, input_buff_fx + mem_size, input_frame ); /* q */ + Copy32( input_buff_fx + input_frame, mem_fx, mem_size ); /* q */ + pInput_buff_fx = input_buff_fx; /* q */ + + test(); + IF( EQ_16( hCPE->nchan_out, 1 ) && ( hCPE->hStereoDft->hConfig->res_cod_mode == STEREO_DFT_RES_COD_OFF ) ) + { + pop_wmops(); + return; + } + + + /*-----------------------------------------------------------------* + * DFT Analysis: loop over frame + *-----------------------------------------------------------------*/ + + assert( ( k_offset <= STEREO_DFT_NBDIV ) ); + + FOR( i = 0; i < NFFT / 4; i++ ) + { + trigo_dec_fx[i] = trigo_fx[i * trigo_step]; + move16(); + trigo_dec_fx[NFFT / 2 - i] = trigo_fx[i * trigo_step]; + move16(); + } + trigo_dec_fx[NFFT / 4] = trigo_fx[NFFT / 4 * trigo_step]; + move16(); + + FOR( k = 0; k < STEREO_DFT_NBDIV - k_offset; k++ ) + { + set32_fx( DFT_fx, 0, STEREO_DFT32MS_N_MAX ); + IF( k == 0 ) + { + offset = 0; + move16(); + } + ELSE + { + /* If OVL2 = OVL offset = 10ms */ + offset = NS2SA_FX2( inputFs, STEREO_DFT32MS_WIN_CENTER_NS - STEREO_DFT32MS_OVL2_NS / 2 ); + move16(); + } + + pInput_fx = pInput_buff_fx + offset; /* q */ + pDFT_out_fx = out_DFT_fx[chan] + i_mult( k, STEREO_DFT32MS_N_MAX ); /* q_out_DFT */ + + /*Forwards FFT: L and R*/ + /* Zero Padding & Flat Portion */ + Copy32( pInput_fx, DFT_fx + zp, sub( NFFT, i_mult( 2, zp ) ) ); /* q */ + + /* Overlapping portions */ + IF( k == 0 ) + { + FOR( i = 0; i < ovl; i++ ) + { + DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win_left_fx[STEREO_DFT32MS_STEP * i] ); /* q */ + move32(); + } + FOR( i = 0; i < ovl2; i++ ) + { + DFT_fx[NFFT - zp - 1 - i] = Mpy_32_16_1( DFT_fx[NFFT - zp - 1 - i], win2_fx[i] ); /* q */ + move32(); + } + } + ELSE + { + FOR( i = 0; i < ovl2; i++ ) + { + DFT_fx[i + zp] = Mpy_32_16_1( DFT_fx[i + zp], win2_fx[i] ); /* q */ + move32(); + } + FOR( i = 0; i < ovl; i++ ) + { + DFT_fx[NFFT - zp - i - 1] = Mpy_32_16_1( DFT_fx[NFFT - zp - i - 1], win_right_fx[STEREO_DFT32MS_STEP * i] ); /* q */ + move32(); + } + } + Word16 q_DFT, q_shift, guarded_bits; + q_DFT = *q; + move16(); + guarded_bits = find_guarded_bits_fx( NFFT ); + q_shift = sub( L_norm_arr( DFT_fx, NFFT ), guarded_bits ); + + FOR( Word16 j = 0; j < NFFT; j++ ) + { + DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift*/ + move32(); + } + + q_DFT = add( q_DFT, q_shift ); + + rfft_fx( DFT_fx, trigo_dec_fx, NFFT, -1 ); + + q_shift = sub( L_norm_arr( DFT_fx, NFFT ), sub( 31, qfac_fx ) ); + FOR( Word16 j = 0; j < NFFT; j++ ) + { + DFT_fx[j] = L_shl( DFT_fx[j], q_shift ); /* q + q_shift */ + move32(); + } + q_DFT = add( q_DFT, q_shift ); + IF( sub( q_out_DFT[chan], q_DFT ) > 0 ) + { + FOR( Word32 j = 0; j < NFFT; j++ ) + { + out_DFT_fx[chan][j] = L_shr( out_DFT_fx[chan][j], sub( q_out_DFT[chan], q_DFT ) ); /* q_DFT */ + move32(); + } + q_out_DFT[chan] = q_DFT; + move16(); + } + ELSE + { + FOR( Word32 j = 0; j < NFFT; j++ ) + { + DFT_fx[j] = L_shr( DFT_fx[j], sub( q_DFT, q_out_DFT[chan] ) ); /* q_DFT */ + move32(); + } + q_DFT = q_out_DFT[chan]; + move16(); + } + + /*Resampling: filtering+scaling*/ + test(); + test(); + IF( ( ana_type == DFT_STEREO_DEC_ANA_FB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_LB ) || EQ_32( ana_type, DFT_STEREO_DEC_ANA_NOCORE ) ) + { + pDFT_out_fx[0] = L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ); /*DC*/ /* qDFT */ + move32(); + IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/ + { + pDFT_out_fx[1] = L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */ + move32(); + } + ELSE + { + pDFT_out_fx[1] = 0; + move32(); + } + FOR( i = 2; i < NFFT; i++ ) + { + pDFT_out_fx[i] = L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ); /* qDFT */ + move32(); + } + FOR( i = NFFT; i < hStereoDft->NFFT; i++ ) + { + pDFT_out_fx[i] = 0; /* qDFT */ + move32(); + } + } + ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_BPF ) ) + { + pDFT_out_fx[0] = L_sub( pDFT_out_fx[0], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[0], fac_fx ), dft_bpf_weights_fx[0] ), sub( 32, qfac_fx ) ) ); /* qDFT */ + move32(); + + FOR( i = 1; i < STEREO_DFT_BPF_SIZE; i++ ) + { + pDFT_out_fx[2 * i] = L_sub( pDFT_out_fx[2 * i], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */ + move32(); + pDFT_out_fx[2 * i + 1] = L_sub( pDFT_out_fx[2 * i + 1], L_shl( Mpy_32_32( Mpy_32_32( DFT_fx[2 * i + 1], fac_fx ), dft_bpf_weights_fx[i] ), sub( 32, qfac_fx ) ) ); /* qDFT */ + move32(); + } + } + ELSE IF( EQ_32( ana_type, DFT_STEREO_DEC_ANA_HB_ADD ) ) + { + NFFT_core = NS2SA_FX2( L_mult0( hCPE->hCoreCoder[0]->L_frame, FRAMES_PER_SEC ), STEREO_DFT32MS_N_NS ); /* Q0 */ + move16(); + + FOR( i = NFFT_core; i < NFFT; i++ ) + { + pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */ + move32(); + } + } + ELSE + { + pDFT_out_fx[0] = L_add( pDFT_out_fx[0], L_shl( Mpy_32_32( DFT_fx[0], fac_fx ), sub( 31, qfac_fx ) ) ); /*DC*/ /* qDFT */ + move32(); + IF( EQ_16( NFFT, hStereoDft->NFFT ) ) /*Nyquist*/ + { + pDFT_out_fx[1] = L_add( L_shl( Mpy_32_32( DFT_fx[1], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[1] ); /* qDFT */ + move32(); + } + FOR( i = 2; i < NFFT; i++ ) + { + pDFT_out_fx[i] = L_add( L_shl( Mpy_32_32( DFT_fx[i], fac_fx ), sub( 31, qfac_fx ) ), pDFT_out_fx[i] ); /* qDFT */ + move32(); + } + } + } + + pop_wmops(); + return; +} + + /*------------------------------------------------------------------------- * stereo_dft_dec_synthesize_fx() * diff --git a/lib_dec/ivas_stereo_switching_dec_fx.c b/lib_dec/ivas_stereo_switching_dec_fx.c index 677c91ef0..522e741e8 100644 --- a/lib_dec/ivas_stereo_switching_dec_fx.c +++ b/lib_dec/ivas_stereo_switching_dec_fx.c @@ -512,7 +512,7 @@ ivas_error stereo_memory_dec_fx( /* deallocate data structure of the previous CPE mode */ IF( hCPE->hStereoDft != NULL ) { - stereo_dft_dec_destroy( &( hCPE->hStereoDft ) ); + stereo_dft_dec_destroy_fx( &( hCPE->hStereoDft ) ); hCPE->hStereoDft = NULL; } @@ -684,7 +684,7 @@ ivas_error stereo_memory_dec_fx( /* deallocate data structure of the previous CPE mode */ IF( hCPE->hStereoDft != NULL ) { - stereo_dft_dec_destroy( &( hCPE->hStereoDft ) ); + stereo_dft_dec_destroy_fx( &( hCPE->hStereoDft ) ); hCPE->hStereoDft = NULL; } diff --git a/lib_dec/jbm_jb4_circularbuffer.c b/lib_dec/jbm_jb4_circularbuffer_fx.c similarity index 100% rename from lib_dec/jbm_jb4_circularbuffer.c rename to lib_dec/jbm_jb4_circularbuffer_fx.c diff --git a/lib_dec/jbm_jb4_inputbuffer.c b/lib_dec/jbm_jb4_inputbuffer_fx.c similarity index 100% rename from lib_dec/jbm_jb4_inputbuffer.c rename to lib_dec/jbm_jb4_inputbuffer_fx.c diff --git a/lib_dec/jbm_jb4_jmf.c b/lib_dec/jbm_jb4_jmf_fx.c similarity index 100% rename from lib_dec/jbm_jb4_jmf.c rename to lib_dec/jbm_jb4_jmf_fx.c diff --git a/lib_dec/jbm_jb4sb.c b/lib_dec/jbm_jb4sb_fx.c similarity index 100% rename from lib_dec/jbm_jb4sb.c rename to lib_dec/jbm_jb4sb_fx.c diff --git a/lib_dec/jbm_pcmdsp_apa.c b/lib_dec/jbm_pcmdsp_apa_fx.c similarity index 100% rename from lib_dec/jbm_pcmdsp_apa.c rename to lib_dec/jbm_pcmdsp_apa_fx.c diff --git a/lib_dec/jbm_pcmdsp_similarityestimation.c b/lib_dec/jbm_pcmdsp_similarityestimation_fx.c similarity index 100% rename from lib_dec/jbm_pcmdsp_similarityestimation.c rename to lib_dec/jbm_pcmdsp_similarityestimation_fx.c diff --git a/lib_dec/jbm_pcmdsp_window.c b/lib_dec/jbm_pcmdsp_window_fx.c similarity index 100% rename from lib_dec/jbm_pcmdsp_window.c rename to lib_dec/jbm_pcmdsp_window_fx.c diff --git a/lib_dec/rom_dec.c b/lib_dec/rom_dec_fx.c similarity index 100% rename from lib_dec/rom_dec.c rename to lib_dec/rom_dec_fx.c diff --git a/lib_enc/cod4t64_fast.c b/lib_enc/cod4t64_fast_fx.c similarity index 100% rename from lib_enc/cod4t64_fast.c rename to lib_enc/cod4t64_fast_fx.c diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc_fx.c similarity index 100% rename from lib_enc/lib_enc.c rename to lib_enc/lib_enc_fx.c diff --git a/lib_enc/lsf_msvq_ma_enc.c b/lib_enc/lsf_msvq_ma_enc.c deleted file mode 100644 index 60375ddcc..000000000 --- a/lib_enc/lsf_msvq_ma_enc.c +++ /dev/null @@ -1,794 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -/*==================================================================================== - EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0 - ====================================================================================*/ - -#include -#include "options.h" -#include "cnst.h" -#include "prot_fx.h" -#include "rom_com.h" -#include "rom_enc.h" -#include "basop_proto_func.h" -#include "wmc_auto.h" - -#ifndef swap -#define swap( x, y, type ) \ - { \ - type u__p; \ - u__p = x; \ - x = y; \ - y = u__p; \ - } -#endif - -/*--------------------------------------------------------------------------* - * Local constants - *--------------------------------------------------------------------------*/ - -#define kMaxC 8 - -/*--------------------------------------------------------------------------* - * msvq_encmsvq_stage1_dct_search() - * - * stage1 search in a segmentwise truncated dct N domain without weights - *--------------------------------------------------------------------------*/ - -/*! r: (p_max , best candidate sofar ) */ -Word16 msvq_stage1_dct_search_fx( - const Word32 *u_fx, /* i : target exp : u_e */ - const Word16 u_e, /* i : exp for target Q0 */ - const Word16 N, /* i : target length and IDCT synthesis length */ - const Word16 maxC_st1, /* i : number of final stage 1 candidates to provide */ - const DCTTYPE dcttype, /* e.g. DCT_T2_16_XX, DCT_T2_24_XX; */ - const Word16 max_dct_trunc, /* i : maximum of truncation lenghts */ - Word32 *invTrfMatrix_fx, /* i : IDCT synthesis matrix for dim N Q31 */ - const Word16 *midQ_truncQ_fx, /* i : midQ vector */ - const Word32 *dct_scaleF_fx, /* i : global scale factors Q10 */ - const Word16 n_segm, /* i : number of segments */ - const Word16 *cols_per_segment, /* i : remaining length per segment */ - const Word16 *trunc_dct_cols_per_segment, /* i : trunc length per segment */ - const Word16 *entries_per_segment, /* i : number of rows per segment */ - const Word16 *cum_entries_per_segment, /* i : number of cumulative entries */ - const Word8 *const W8Qx_dct_sections[], /* i : Word8(byte) segment table ptrs */ - const Word16 *col_syn_shift[], /* i : columnwise syn shift tables */ - const Word8 *segm_neighbour_fwd, /* i : circular neighbour list fwd */ - const Word8 *segm_neighbour_rev, /* i : circular neighbour list reverse */ - const Word16 npost_check, /* i : number of neigbours to check , should be even */ - Word32 *st1_mse_ptr_fx, /* i : dynRAM buffer for MSEs exp : u_e */ - Word16 *indices_st1_local, /* o : selected cand indices */ - Word32 *st1_syn_vec_ptr_fx, /* i/o: buffer for IDCT24 synthesis i :exp : u_e */ - Word32 *dist1_ptr_fx, /* o : resulting stage 1 MSEs in DCT-N domain */ - Word16 *dist1_ptr_e ) -{ - Word32 dct_target_fx[FDCNG_VQ_DCT_MAXTRUNC]; // Q20 - Word32 u_mr_fx[FDCNG_VQ_MAX_LEN]; - Word16 dist1_ptr_e_buf[2 * LSFMBEST_MAX]; - Word64 mse_trunc_segm_fx[FDCNG_VQ_DCT_NSEGM]; - Word32 tmp_fx, check_mse; - Word16 tmp_e, check_mse_e; - Word64 mse_fx; /* Word64 in BASOP */ - - Word16 p_max, c, c2, segm, j_full, j, i; - Word16 n_ana, p_mins[2], idx_min[2]; - - Word16 st1_mse_ptr_e[128]; - - const Word8 *cbpW8; - const Word16 *dct_col_shift_tab; - - Word32 *st1_mse_pair_fx; - Word16 *st1_mse_pair_e; - Word16 *st1_idx_pair; - - Word32 tmp2_fx; - Word16 check_ind[FDCNG_VQ_DCT_NPOST]; - assert( ( npost_check % 2 == 0 ) && ( npost_check <= FDCNG_VQ_DCT_NPOST ) ); - - assert( n_segm <= FDCNG_VQ_DCT_NSEGM ); - - n_ana = N; /* VQ stage#1 core is currently always using stored DCT N coeffs */ - move16(); - assert( n_ana >= max_dct_trunc ); /* check for FDCNGVQ WB , SWB, FB operation */ - - /* remove mid stage#1 vector, in original input domain */ - tmp_e = s_max( 12, u_e ); - FOR( i = 0; i < n_ana; i++ ) - { - u_mr_fx[i] = L_sub( L_shl( u_fx[i], sub( u_e, tmp_e ) ), L_shl( midQ_truncQ_fx[i], sub( Q31 - Q10, tmp_e ) ) ); // tmp_e - move32(); - } - - dctT2_N_apply_matrix_fx( (const Word32 *) u_mr_fx, dct_target_fx, s_min( max_dct_trunc, n_ana ), n_ana, invTrfMatrix_fx, max_dct_trunc, dcttype ); // exp : tmp_e - - /* init search state ptr's at the top */ - set32_fx( dist1_ptr_fx, MAX_32, maxC_st1 ); - set16_fx( dist1_ptr_e_buf, 32, maxC_st1 ); - st1_mse_pair_fx = &( dist1_ptr_fx[0] ); /* req. ptr post upd +=2 */ // st1_mse_pair_e - st1_mse_pair_e = &( dist1_ptr_e_buf[0] ); /* req. ptr post upd +=2 */ - st1_idx_pair = &( indices_st1_local[0] ); /* req. ptr post upd +=2 */ - set64_fx( mse_trunc_segm_fx, 0, n_segm ); - - // set16_fx( mse_trunc_segm_e, u_e, FDCNG_VQ_DCT_NSEGM ); - - FOR( segm = 0; segm < n_segm; segm++ ) - { /* point to a new paired location for each segment */ - p_max = 0; /* req. to point to one of 1 or 0, this init can potentially be omitted here,as p_max is always 1 or 0 */ - move16(); - - /* compute segment common trunction error in dctN domain */ - - FOR( i = 0; i < trunc_dct_cols_per_segment[segm]; i++ ) - { - mse_trunc_segm_fx[segm] = W_mac_32_32( mse_trunc_segm_fx[segm], dct_target_fx[cols_per_segment[segm] + i], dct_target_fx[cols_per_segment[segm] + i] ); // Q41 - move64(); - } - - cbpW8 = W8Qx_dct_sections[segm]; /* Word8 column variable Qx storage , table ptr init */ - - FOR( j = 0; j < entries_per_segment[segm]; j++ ) - { - /* unweighted segmented search DCT domain loop */ - j_full = add( j, cum_entries_per_segment[segm] ); /* or simply use j_full++ */ - - mse_fx = mse_trunc_segm_fx[segm]; /* init mse with with common mse truncation part, in BASOP a move32() */ // Q41 - move64(); - - dct_col_shift_tab = col_syn_shift[segm]; /* ptr init */ - - FOR( c2 = 0; c2 < cols_per_segment[segm]; c2++ ) - { -#define WMC_TOOL_SKIP - tmp_fx = L_sub( dct_target_fx[c2], Mpy_32_32( L_shl( cbpW8[c2], add( sub( Q31, tmp_e ), dct_col_shift_tab[c2] ) ), dct_scaleF_fx[1] ) ); /* note: BASOP shift left defined for signed integers */ - LOGIC( 1 ); - SHIFT( 1 ); - ADD( 1 ); /* in BASOP: s_and(for W8->W16), shl(), sub()*/ -#undef WMC_TOOL_SKIP - mse_fx = W_mac_32_32( mse_fx, tmp_fx, tmp_fx ); /* L_mac or L_mac0() square Word16 -> Word32*/ // Q41 - } - Word16 L_tmp = W_norm( mse_fx ); - st1_mse_ptr_fx[j_full] = W_extract_h( W_lshl( mse_fx, L_tmp ) ); /* save MSE in shared dynamic RAM, move32() in BASOP */ // st1_mse_ptr_e - move32(); - st1_mse_ptr_e[j_full] = sub( shl( tmp_e, 1 ), L_tmp ); - move16(); - -#define WMC_TOOL_SKIP - cbpW8 += cols_per_segment[segm]; /* fixed pointer increment for each segment */ -#undef WMC_TOOL_SKIP - - /* overwrite with a new worst index at p_max */ - - /* Note: The three inner loop if's below are not 100% properly instrumented by WMC tool */ - // if ( st1_mse_ptr_fx[j_full] < st1_mse_pair_fx[p_max] ) /* L_sub */ - IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_ptr_fx[j_full], st1_mse_ptr_e[j_full], st1_mse_pair_fx[p_max], st1_mse_pair_e[p_max] ), -1 ) ) /* L_sub */ - { - st1_idx_pair[p_max] = j_full; /* move16, single BASOP */ - move16(); - } /* BASOP 2 ops */ - - IF( EQ_16( st1_idx_pair[p_max], j_full ) ) - { /* idx updated --> also update mse */ - st1_mse_pair_fx[p_max] = st1_mse_ptr_fx[j_full]; /* move32(), single BASOP */ - move32(); - st1_mse_pair_e[p_max] = st1_mse_ptr_e[j_full]; /* move32(), single BASOP */ - move16(); - } /* BASOP 3 ops */ - - /* avoid WC costly candidate list management by always updating p_max, - as we have only a pair in each segment to maintain */ - p_max = 0; - move16(); - if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_pair_fx[0], st1_mse_pair_e[0], st1_mse_pair_fx[1], st1_mse_pair_e[1] ), -1 ) ) /* L_sub()*/ - { - p_max = 1; /* move16() */ - move16(); - } /* BASOP 3 ops ,Note 2 ops possible in BASOP with L_sub and L_lshr */ - - /* Note: logical shift right not available in ANSI-C */ - /* p_max = (st1_mse_pair[0] - st1_mse_pair[1]) ">>>" 31; */ - /* in java logical shift right is available as >>> , in BASOP it is available as L_lshr */ - - /* Cost: weighted sum with cond moves ('if') => 8 in float , 7 in BASOP with L_lshr */ - } /* j in section */ - - st1_mse_pair_fx += 2; /* req. ptr init */ - st1_mse_pair_e += 2; /* req. ptr init */ - st1_idx_pair += 2; /* req. ptr init */ - - } /* next segment */ - - tmp_e = 0; - move16(); - FOR( j = 0; j < maxC_st1; j++ ) - { - /* compute_full mse using stored DCT24 domain MSE's */ - /* calculate MSE from stage1 inner using existing inner DCT domain variables */ - tmp_e = s_max( dist1_ptr_e_buf[j], tmp_e ); - } - - FOR( j = 0; j < maxC_st1; j++ ) - { - /* compute_full mse using stored DCT24 domain MSE's */ - /* calculate MSE from stage1 inner using existing inner DCT domain variables */ - dist1_ptr_fx[j] = L_shr( dist1_ptr_fx[j], sub( tmp_e, dist1_ptr_e_buf[j] ) ); - move32(); - *dist1_ptr_e = tmp_e; - move16(); - } - - - assert( ( maxC_st1 >= 3 ) ); - assert( ( maxC_st1 <= 8 ) ); - - p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish current worst candidate for MSVQ stage#2 among all maxC_st1 candidates so far */ - - p_mins[0] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find best entry among all maxC_pre */ - move16(); - tmp_fx = dist1_ptr_fx[p_mins[0]]; - move32(); - dist1_ptr_fx[p_mins[0]] = MAX_32; /* exclude 1st */ - move32(); - - p_mins[1] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find 2nd best entry */ - move16(); - tmp2_fx = dist1_ptr_fx[p_mins[1]]; - move32(); - dist1_ptr_fx[p_mins[1]] = MAX_32; /* exclude 2nd */ - move32(); - - dist1_ptr_fx[p_mins[0]] = tmp_fx; /* restore 1st */ - move32(); - dist1_ptr_fx[p_mins[1]] = tmp2_fx; /* restore 2nd */ - move32(); - - idx_min[0] = indices_st1_local[p_mins[0]]; - move16(); - idx_min[1] = indices_st1_local[p_mins[1]]; - move16(); - - - /* use global exclusion list to never reselect the two (best) global MSE values sofar */ - st1_mse_ptr_fx[idx_min[0]] = MAX_32; /* move32() */ - move32(); - st1_mse_ptr_e[idx_min[0]] = MAX_16; - move16(); - st1_mse_ptr_fx[idx_min[1]] = MAX_32; /* move32() */ - move32(); - st1_mse_ptr_e[idx_min[1]] = MAX_16; - move16(); - - /* circular MSE-neigbour list in use to potentially replace some segment search candidates */ - /* using both 1st and 2nd best neighbours in fwd and rev directions */ - check_ind[0] = segm_neighbour_fwd[idx_min[0]]; - move16(); - check_ind[1] = segm_neighbour_rev[idx_min[0]]; - move16(); - - check_ind[2] = segm_neighbour_fwd[idx_min[1]]; - move16(); - check_ind[3] = segm_neighbour_rev[idx_min[1]]; - move16(); - - check_ind[4] = segm_neighbour_fwd[check_ind[0]]; - move16(); - check_ind[5] = segm_neighbour_rev[check_ind[1]]; - move16(); - - check_ind[6] = segm_neighbour_fwd[check_ind[2]]; - move16(); - check_ind[FDCNG_VQ_DCT_NPOST - 1] = segm_neighbour_rev[check_ind[3]]; - move16(); - - FOR( i = 0; i < npost_check; i++ ) - { - /* move MSE from DCT-inner loop search to input synthesis domain */ - /* multiplication by fdcng_dct_scaleF[2] to get the float outer loop scale correct in IDCT synthesis domain */ - check_mse = st1_mse_ptr_fx[check_ind[i]]; - move32(); - check_mse_e = st1_mse_ptr_e[check_ind[i]]; - move16(); - - IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( check_mse, check_mse_e, dist1_ptr_fx[p_max], *dist1_ptr_e ), -1 ) ) - { /* new winner , replace worst */ - dist1_ptr_fx[p_max] = L_shl( check_mse, sub( check_mse_e, *dist1_ptr_e ) ); - move32(); - indices_st1_local[p_max] = check_ind[i]; - move16(); - st1_mse_ptr_fx[check_ind[i]] = MAX_32; /* exclude, BASOP: move32() */ - move32(); - st1_mse_ptr_e[check_ind[i]] = MAX_16; - move16(); - p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish a new current worst candidate among all maxC */ - } - } - - /* extract the selected stage one vectors in DCT_N domain , apply IDCT_N and scale up */ - /* always extract full length signal(e.g. 24) to be able to update WB(e.g. N_in==21) candidate MSE values */ - /* in the case that only a part of the IDCT N vector is in final use */ - - /* note: synthesis not yet fully parameterized/generalized for other IDCT lengths */ - assert( N == 24 ); - { - FOR( c = 0; c < maxC_st1; c++ ) - { - dec_FDCNG_MSVQ_stage1_fx( indices_st1_local[c], N, invTrfMatrix_fx, dcttype + 1, &( st1_syn_vec_ptr_fx[c * N] ), NULL ); // Q11 : output - scale_sig32( &( st1_syn_vec_ptr_fx[c * N] ), N, sub( 11, s_max( u_e, 12 ) ) ); - } - } - - return p_max; /*ptr to worst performing candidate */ -} - - -/*--------------------------------------------------------------------------* - * msvq_stage1_dct_recalc_candidates_fdcng_wb() - * - * recalc MSE for fdcng WB(0..20) coeffs , - essentially subtract res21^2 ,res22^2, res23^2 that was included in stage1 MSE in the DCT24 domain truncated search, - excludes the waveform contributions at pos 21,22,23 to the MSE, important to keep the WB MSEs update for the subsequent stages - *--------------------------------------------------------------------------*/ - -/*! r: (updated p_max) */ -Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx( - const Word32 *st1_syn_vec_ptr_fx, /* i : IDCT24 synthesis vectors st1_syn_vec_e*/ - const Word16 st1_syn_vec_e, /* i : exp for IDCT24 synthesis vectors */ - const Word32 *u_fx, /* i : target signal u_e*/ - const Word16 u_e, /* i : exp for target signal */ - const Word16 maxC_st1, /* i : number of candidates in stage1 */ - Word32 *dist_ptr_fx, /* i/o: updated MSE vector for stage1 */ - Word16 *dist_ptr_e /* i/o: exp for updated MSE vector for stage1 */ -) -{ - Word16 i; - Word16 p_max_local, c; - const Word32 *p2_fx; - Word16 tmp_e; - Word32 res24_fx, high_diff_fx[FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB]; - Word64 acc; - Word16 res24_e[FD_CNG_maxC_37bits]; - Word16 dist_e; - - dist_e = *dist_ptr_e; - move16(); - FOR( c = 0; c < maxC_st1; c++ ) - { /* point to extended synthesis part */ - p2_fx = (const Word32 *) &( st1_syn_vec_ptr_fx[c * FDCNG_VQ_MAX_LEN + FDCNG_VQ_MAX_LEN_WB] ); /* ptr init to synthesis candidate c */ - tmp_e = s_max( st1_syn_vec_e, u_e ); - tmp_e = add( tmp_e, 1 ); - /* for stage#1 use "u" instead of the shortened resid[0], to access the extended/extrapolated input target */ - FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ ) - { - high_diff_fx[i] = L_sub( L_shr( p2_fx[i], sub( tmp_e, st1_syn_vec_e ) ), L_shr( u_fx[FDCNG_VQ_MAX_LEN_WB + i], sub( tmp_e, u_e ) ) ); // tmp_e - move32(); - } - acc = 0; - move64(); - FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ ) - { - acc = W_mac_32_32( acc, high_diff_fx[i], high_diff_fx[i] ); - } - res24_e[c] = tmp_e; - move16(); - tmp_e = W_norm( acc ); - res24_fx = W_extract_h( W_shl( acc, tmp_e ) ); - - res24_e[c] = sub( shl( res24_e[c], 1 ), tmp_e ); - move16(); - - dist_ptr_fx[c] = BASOP_Util_Add_Mant32Exp( dist_ptr_fx[c], *dist_ptr_e, L_negate( res24_fx ), res24_e[c], &res24_e[c] ); /* remove DCT24 high band error contribution */ - move32(); - dist_e = s_max( dist_e, res24_e[c] ); - move16(); - } - - - FOR( c = 0; c < maxC_st1; c++ ) - { - dist_ptr_fx[c] = L_shl( dist_ptr_fx[c], sub( res24_e[c], dist_e ) ); - move32(); - } - *dist_ptr_e = dist_e; - move16(); - /* finally update p_max, as it may potentially change, - due to the core DCT24 search originally optimizing over the longer basis vectors than DCT21 */ - p_max_local = maximum_32_fx( dist_ptr_fx, maxC_st1, NULL ); - - return p_max_local; -} - - -/*--------------------------------------------------------------------------* - * msvq_enc() - * - * MSVQ encoder - *--------------------------------------------------------------------------*/ - - -void msvq_enc_ivas_fx( - const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) Q_cb */ - const Word16 Q_cb, /* i : Codebook Q */ - const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */ - const Word16 offs[], /* i : Starting dimension of each codebook stage (NULL: 0) */ - const Word32 u_fx[], /* i : Vector to be encoded (prediction and mean removed) (exp : u_e) */ - const Word16 u_e, /* i : Exponent for Vector to be encoded */ - const Word16 *levels, /* i : Number of levels in each stage */ - const Word16 maxC, /* i : Tree search size (number of candidates kept from from one stage to the next == M-best) */ - const Word16 stages, /* i : Number of stages */ - const Word16 w[], /* i : Weights Q8 */ - const Word16 N, /* i : Vector dimension */ - const Word16 maxN, /* i : Codebook dimension */ - const Word16 applyDCT_flag, /* i : applyDCT flag */ - Word32 *invTrfMatrix_fx, /* i/o: synthesis matrix Q31 */ - Word16 Idx[] /* o : Indices */ -) -{ - Word16 j; - const Word16 *cbp, *cb_stage; - Word32 resid_buf_fx[2 * LSFMBEST_MAX * M_MAX], *resid_fx[2]; - Word32 *pTmp, *p1, *p2; // pTmp_e - Word16 pTmp_e; - Word16 *indices[2], m, s, c, c2, p_max, i; - Word16 idx_buf[2 * LSFMBEST_MAX * MAX_VQ_STAGES_USED], parents[LSFMBEST_MAX]; - Word32 dist_buf_fx[2 * LSFMBEST_MAX], *dist_fx[2], tmp, en, ss2, Tmp[M_MAX]; - Word16 dist_buf_e[2 * LSFMBEST_MAX], *dist_e[2]; - Word16 tmp_e, tmp_n, en_e; - Word16 resid_e; - Word16 n, maxn, start; - Word64 W_acc; /*64 bit accumulator*/ - - Word32 *st1_syn_vec_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - FDCNG_VQ_MAX_LEN * maxC; - Word32 *st1_mse_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - ( levels[0] ); - Word16 indices_st1_local[FDCNG_VQ_DCT_NSEGM * 2]; - - /*----------------------------------------------------------------* - * Allocate memory for previous (parent) and current nodes. - * Parent node is indexed [0], current node is indexed [1]. - *----------------------------------------------------------------*/ - indices[0] = idx_buf; - indices[1] = idx_buf + maxC * stages; /*move16();*/ - /*vr_iset(0, idx_buf, 2*stages*maxC);*/ - set16_fx( idx_buf, 0, (Word16) ( 2 * stages * maxC ) ); - - resid_fx[0] = resid_buf_fx; - resid_fx[1] = resid_buf_fx + maxC * N; /*move16();*/ - - dist_fx[0] = dist_buf_fx; - dist_e[0] = dist_buf_e; - dist_fx[1] = dist_buf_fx + maxC; - dist_e[1] = dist_buf_e + maxC; - - /*vr_iset(0, parents, maxC);*/ - set16_fx( parents, 0, maxC ); - - /*----------------------------------------------------------------* - * LSF weights are normalized, so it is always better to multiply it first - * Set up inital distance vector - *----------------------------------------------------------------*/ - W_acc = W_mult_32_32( Mpy_32_16_1( u_fx[0], shl( w[0], 2 ) ), u_fx[0] ); // 2*Qu - 6 + 1 - FOR( j = 1; j < N; j++ ) - { - W_acc = W_mac_32_32( W_acc, Mpy_32_16_1( u_fx[j], shl( w[j], 2 ) ), u_fx[j] ); // 2*Qu - 6 + 1 - } - - tmp_n = W_norm( W_acc ); - ss2 = W_extract_h( W_shl( W_acc, tmp_n ) ); - tmp_e = sub( add( shl( u_e, 1 ), 5 ), tmp_n ); - - /* Set up inital error (residual) vectors */ - pTmp = resid_fx[1]; /*move16();*/ - resid_e = u_e; - move16(); - IF( applyDCT_flag != 0 ) - { - resid_e = s_max( u_e, 12 ); - } - FOR( c = 0; c < maxC; c++ ) - { - Copy32( u_fx, pTmp + c * N, N ); - test(); - IF( applyDCT_flag != 0 && LT_16( u_e, 12 ) ) - { - scale_sig32( pTmp + c * N, N, sub( u_e, resid_e ) ); - } - dist_fx[1][c] = ss2; - move32(); - dist_e[1][c] = tmp_e; - move16(); - } - - /* Loop over all stages */ - m = 1; - move16(); - FOR( s = 0; s < stages; s++ ) - { - /* codebook pointer is set to point to first stage */ - cbp = cb[s]; /*Q_cb*/ - cb_stage = cbp; - - /* Set up pointers to parent and current nodes */ - swap( indices[0], indices[1], Word16 * ); - move16(); - move16(); - move16(); - swap( resid_fx[0], resid_fx[1], Word32 * ); - move32(); - move32(); - move32(); - swap( dist_fx[0], dist_fx[1], Word32 * ); - swap( dist_e[0], dist_e[1], Word16 * ); - move32(); - move32(); - move32(); - move16(); - move16(); - move16(); - - /* p_max points to maximum distortion node (worst of best) */ - p_max = 0; - move16(); - - n = N; - move16(); - maxn = maxN; - move16(); - if ( dims ) - { - n = dims[s]; - move16(); - } - if ( dims ) - { - maxn = n; - move16(); - } - - assert( ( maxn % 4 ) == 0 ); - - start = 0; - move16(); - if ( offs ) - { - start = offs[s]; - move16(); - } - - set32_fx( Tmp, 0, start ); - set32_fx( Tmp + start + n, 0, sub( N, add( start, n ) ) ); - - /* Set distortions to a large value */ - FOR( j = 0; j < maxC; j++ ) - { - dist_fx[1][j] = MAX_32; - move32(); - dist_e[1][j] = MAX_16 / 2; - move16(); - } - - test(); - IF( !s && applyDCT_flag != 0 ) /* means: m==1 */ - { - /* stage 1 candidates search in truncated dct24 domain without any weights */ - assert( N == FDCNG_VQ_MAX_LEN || N == FDCNG_VQ_MAX_LEN_WB ); /* 21 and 24 allowed */ - assert( maxC == 2 * FDCNG_VQ_DCT_NSEGM ); - p_max = msvq_stage1_dct_search_fx( u_fx, u_e, FDCNG_VQ_MAX_LEN, maxC, DCT_T2_24_XX, FDCNG_VQ_DCT_MAXTRUNC, (Word32 *) invTrfMatrix_fx, cdk1r_tr_midQ_truncQ_fx, fdcng_dct_scaleF_fx, FDCNG_VQ_DCT_NSEGM, - cdk1_ivas_cols_per_segment, cdk1_ivas_trunc_dct_cols_per_segment, cdk1_ivas_entries_per_segment, cdk1_ivas_cum_entries_per_segment, cdk_37bits_ivas_stage1_W8Qx_dct_sections, - stage1_dct_col_syn_shift, cdk1_ivas_segm_neighbour_fwd, cdk1_ivas_segm_neighbour_rev, FDCNG_VQ_DCT_NPOST, st1_mse_ptr_fx, indices_st1_local, st1_syn_vec_ptr_fx, dist_fx[1], &dist_e[1][0] ); - - /* move established stage#1 indices to the global MSVQ list structure */ - set16_fx( dist_e[1], dist_e[1][0], maxC ); - FOR( c = 0; c < maxC; c++ ) - { - indices[1][c * stages] = indices_st1_local[c]; - move16(); - } - } - ELSE - { - FOR( j = 0; j < levels[s]; j++ ) - { - /* Compute weighted codebook element and its energy */ - en = 0; - move32(); - en_e = 0; - move16(); - W_acc = 0; - move64(); - FOR( c2 = 0; c2 < n; c2++ ) - { - Tmp[start + c2] = L_mult0( shl( w[start + c2], 2 ), cbp[c2] ); - move32(); - W_acc = W_mac_32_16( W_acc, Tmp[start + c2], cbp[c2] ); - } - - tmp_n = W_norm( W_acc ); - - en = W_extract_h( W_shl( W_acc, tmp_n ) ); - en_e = sub( sub( 52, shl( Q_cb, 1 ) ), tmp_n ); - - cbp += maxn; /* pointer is incremented */ - - /* Iterate over all parent nodes */ - FOR( c = 0; c < m; c++ ) - { - pTmp = &resid_fx[0][c * N]; - pTmp_e = resid_e; - move16(); - /*tmp = (*pTmp++) * Tmp[0];*/ - W_acc = W_mult_32_32( pTmp[0], Tmp[0] ); - - FOR( i = 1; i < N; i++ ) - { - W_acc = W_mac_32_32( W_acc, pTmp[i], Tmp[i] ); - } - tmp_n = W_norm( W_acc ); - tmp = W_extract_h( W_shl( W_acc, tmp_n ) ); - tmp_e = sub( add( pTmp_e, sub( Q31 - Q10, Q_cb ) ), tmp_n ); - - - tmp_n = s_max( tmp_e, en_e ); - tmp_n = s_max( dist_e[0][c], tmp_n ); - - IF( NE_16( dist_e[0][c], MAX_16 / 2 ) ) - { - tmp_n = add( tmp_n, 2 ); - tmp = L_sub( L_shl( en, sub( en_e, tmp_n ) ), L_shl( tmp, add( sub( tmp_e, tmp_n ), 1 ) ) ); - tmp = L_add( tmp, L_shl( dist_fx[0][c], sub( dist_e[0][c], tmp_n ) ) ); - } - ELSE - { - tmp = MAX_32 - 1; - move32(); - tmp_n = MAX_16 / 2; - move32(); - } - - IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( tmp, tmp_n, dist_fx[1][p_max], dist_e[1][p_max] ), -1 ) ) - { - /* Replace worst */ - dist_fx[1][p_max] = tmp; - move32(); - dist_e[1][p_max] = tmp_n; - move16(); - indices[1][p_max * stages + s] = j; - move16(); - parents[p_max] = c; - move16(); - - p_max = 0; - move16(); - tmp_e = p_max; - move16(); - - tmp_n = dist_e[1][0]; - move16(); - FOR( c2 = 1; c2 < maxC; c2++ ) - { - if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( dist_fx[1][c2], dist_e[1][c2], dist_fx[1][p_max], dist_e[1][p_max] ), 1 ) ) - { - p_max = c2; - move16(); - } - test(); - if ( GT_16( dist_e[1][c2], tmp_n ) && NE_16( dist_e[1][c2], MAX_16 / 2 ) ) - { - tmp_n = dist_e[1][c2]; - move16(); - } - } - FOR( c2 = 0; c2 < maxC; c2++ ) - { - IF( NE_16( dist_e[1][c2], MAX_16 / 2 ) ) - { - dist_fx[1][c2] = L_shl( dist_fx[1][c2], sub( dist_e[1][c2], tmp_n ) ); - move32(); - dist_e[1][c2] = tmp_n; - move16(); - } - } - } /*IF (L_sub(tmp,dist[1][p_max]) < 0) */ - } /* FOR (c=0; c= max_dct_trunc ); /* check for FDCNGVQ WB , SWB, FB operation */ + + /* remove mid stage#1 vector, in original input domain */ + tmp_e = s_max( 12, u_e ); + FOR( i = 0; i < n_ana; i++ ) + { + u_mr_fx[i] = L_sub( L_shl( u_fx[i], sub( u_e, tmp_e ) ), L_shl( midQ_truncQ_fx[i], sub( Q31 - Q10, tmp_e ) ) ); // tmp_e + move32(); + } + + dctT2_N_apply_matrix_fx( (const Word32 *) u_mr_fx, dct_target_fx, s_min( max_dct_trunc, n_ana ), n_ana, invTrfMatrix_fx, max_dct_trunc, dcttype ); // exp : tmp_e + + /* init search state ptr's at the top */ + set32_fx( dist1_ptr_fx, MAX_32, maxC_st1 ); + set16_fx( dist1_ptr_e_buf, 32, maxC_st1 ); + st1_mse_pair_fx = &( dist1_ptr_fx[0] ); /* req. ptr post upd +=2 */ // st1_mse_pair_e + st1_mse_pair_e = &( dist1_ptr_e_buf[0] ); /* req. ptr post upd +=2 */ + st1_idx_pair = &( indices_st1_local[0] ); /* req. ptr post upd +=2 */ + set64_fx( mse_trunc_segm_fx, 0, n_segm ); + + // set16_fx( mse_trunc_segm_e, u_e, FDCNG_VQ_DCT_NSEGM ); + + FOR( segm = 0; segm < n_segm; segm++ ) + { /* point to a new paired location for each segment */ + p_max = 0; /* req. to point to one of 1 or 0, this init can potentially be omitted here,as p_max is always 1 or 0 */ + move16(); + + /* compute segment common trunction error in dctN domain */ + + FOR( i = 0; i < trunc_dct_cols_per_segment[segm]; i++ ) + { + mse_trunc_segm_fx[segm] = W_mac_32_32( mse_trunc_segm_fx[segm], dct_target_fx[cols_per_segment[segm] + i], dct_target_fx[cols_per_segment[segm] + i] ); // Q41 + move64(); + } + + cbpW8 = W8Qx_dct_sections[segm]; /* Word8 column variable Qx storage , table ptr init */ + + FOR( j = 0; j < entries_per_segment[segm]; j++ ) + { + /* unweighted segmented search DCT domain loop */ + j_full = add( j, cum_entries_per_segment[segm] ); /* or simply use j_full++ */ + + mse_fx = mse_trunc_segm_fx[segm]; /* init mse with with common mse truncation part, in BASOP a move32() */ // Q41 + move64(); + + dct_col_shift_tab = col_syn_shift[segm]; /* ptr init */ + + FOR( c2 = 0; c2 < cols_per_segment[segm]; c2++ ) + { +#define WMC_TOOL_SKIP + tmp_fx = L_sub( dct_target_fx[c2], Mpy_32_32( L_shl( cbpW8[c2], add( sub( Q31, tmp_e ), dct_col_shift_tab[c2] ) ), dct_scaleF_fx[1] ) ); /* note: BASOP shift left defined for signed integers */ + LOGIC( 1 ); + SHIFT( 1 ); + ADD( 1 ); /* in BASOP: s_and(for W8->W16), shl(), sub()*/ +#undef WMC_TOOL_SKIP + mse_fx = W_mac_32_32( mse_fx, tmp_fx, tmp_fx ); /* L_mac or L_mac0() square Word16 -> Word32*/ // Q41 + } + Word16 L_tmp = W_norm( mse_fx ); + st1_mse_ptr_fx[j_full] = W_extract_h( W_lshl( mse_fx, L_tmp ) ); /* save MSE in shared dynamic RAM, move32() in BASOP */ // st1_mse_ptr_e + move32(); + st1_mse_ptr_e[j_full] = sub( shl( tmp_e, 1 ), L_tmp ); + move16(); + +#define WMC_TOOL_SKIP + cbpW8 += cols_per_segment[segm]; /* fixed pointer increment for each segment */ +#undef WMC_TOOL_SKIP + + /* overwrite with a new worst index at p_max */ + + /* Note: The three inner loop if's below are not 100% properly instrumented by WMC tool */ + // if ( st1_mse_ptr_fx[j_full] < st1_mse_pair_fx[p_max] ) /* L_sub */ + IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_ptr_fx[j_full], st1_mse_ptr_e[j_full], st1_mse_pair_fx[p_max], st1_mse_pair_e[p_max] ), -1 ) ) /* L_sub */ + { + st1_idx_pair[p_max] = j_full; /* move16, single BASOP */ + move16(); + } /* BASOP 2 ops */ + + IF( EQ_16( st1_idx_pair[p_max], j_full ) ) + { /* idx updated --> also update mse */ + st1_mse_pair_fx[p_max] = st1_mse_ptr_fx[j_full]; /* move32(), single BASOP */ + move32(); + st1_mse_pair_e[p_max] = st1_mse_ptr_e[j_full]; /* move32(), single BASOP */ + move16(); + } /* BASOP 3 ops */ + + /* avoid WC costly candidate list management by always updating p_max, + as we have only a pair in each segment to maintain */ + p_max = 0; + move16(); + if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( st1_mse_pair_fx[0], st1_mse_pair_e[0], st1_mse_pair_fx[1], st1_mse_pair_e[1] ), -1 ) ) /* L_sub()*/ + { + p_max = 1; /* move16() */ + move16(); + } /* BASOP 3 ops ,Note 2 ops possible in BASOP with L_sub and L_lshr */ + + /* Note: logical shift right not available in ANSI-C */ + /* p_max = (st1_mse_pair[0] - st1_mse_pair[1]) ">>>" 31; */ + /* in java logical shift right is available as >>> , in BASOP it is available as L_lshr */ + + /* Cost: weighted sum with cond moves ('if') => 8 in float , 7 in BASOP with L_lshr */ + } /* j in section */ + + st1_mse_pair_fx += 2; /* req. ptr init */ + st1_mse_pair_e += 2; /* req. ptr init */ + st1_idx_pair += 2; /* req. ptr init */ + + } /* next segment */ + + tmp_e = 0; + move16(); + FOR( j = 0; j < maxC_st1; j++ ) + { + /* compute_full mse using stored DCT24 domain MSE's */ + /* calculate MSE from stage1 inner using existing inner DCT domain variables */ + tmp_e = s_max( dist1_ptr_e_buf[j], tmp_e ); + } + + FOR( j = 0; j < maxC_st1; j++ ) + { + /* compute_full mse using stored DCT24 domain MSE's */ + /* calculate MSE from stage1 inner using existing inner DCT domain variables */ + dist1_ptr_fx[j] = L_shr( dist1_ptr_fx[j], sub( tmp_e, dist1_ptr_e_buf[j] ) ); + move32(); + *dist1_ptr_e = tmp_e; + move16(); + } + + + assert( ( maxC_st1 >= 3 ) ); + assert( ( maxC_st1 <= 8 ) ); + + p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish current worst candidate for MSVQ stage#2 among all maxC_st1 candidates so far */ + + p_mins[0] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find best entry among all maxC_pre */ + move16(); + tmp_fx = dist1_ptr_fx[p_mins[0]]; + move32(); + dist1_ptr_fx[p_mins[0]] = MAX_32; /* exclude 1st */ + move32(); + + p_mins[1] = minimum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* find 2nd best entry */ + move16(); + tmp2_fx = dist1_ptr_fx[p_mins[1]]; + move32(); + dist1_ptr_fx[p_mins[1]] = MAX_32; /* exclude 2nd */ + move32(); + + dist1_ptr_fx[p_mins[0]] = tmp_fx; /* restore 1st */ + move32(); + dist1_ptr_fx[p_mins[1]] = tmp2_fx; /* restore 2nd */ + move32(); + + idx_min[0] = indices_st1_local[p_mins[0]]; + move16(); + idx_min[1] = indices_st1_local[p_mins[1]]; + move16(); + + + /* use global exclusion list to never reselect the two (best) global MSE values sofar */ + st1_mse_ptr_fx[idx_min[0]] = MAX_32; /* move32() */ + move32(); + st1_mse_ptr_e[idx_min[0]] = MAX_16; + move16(); + st1_mse_ptr_fx[idx_min[1]] = MAX_32; /* move32() */ + move32(); + st1_mse_ptr_e[idx_min[1]] = MAX_16; + move16(); + + /* circular MSE-neigbour list in use to potentially replace some segment search candidates */ + /* using both 1st and 2nd best neighbours in fwd and rev directions */ + check_ind[0] = segm_neighbour_fwd[idx_min[0]]; + move16(); + check_ind[1] = segm_neighbour_rev[idx_min[0]]; + move16(); + + check_ind[2] = segm_neighbour_fwd[idx_min[1]]; + move16(); + check_ind[3] = segm_neighbour_rev[idx_min[1]]; + move16(); + + check_ind[4] = segm_neighbour_fwd[check_ind[0]]; + move16(); + check_ind[5] = segm_neighbour_rev[check_ind[1]]; + move16(); + + check_ind[6] = segm_neighbour_fwd[check_ind[2]]; + move16(); + check_ind[FDCNG_VQ_DCT_NPOST - 1] = segm_neighbour_rev[check_ind[3]]; + move16(); + + FOR( i = 0; i < npost_check; i++ ) + { + /* move MSE from DCT-inner loop search to input synthesis domain */ + /* multiplication by fdcng_dct_scaleF[2] to get the float outer loop scale correct in IDCT synthesis domain */ + check_mse = st1_mse_ptr_fx[check_ind[i]]; + move32(); + check_mse_e = st1_mse_ptr_e[check_ind[i]]; + move16(); + + IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( check_mse, check_mse_e, dist1_ptr_fx[p_max], *dist1_ptr_e ), -1 ) ) + { /* new winner , replace worst */ + dist1_ptr_fx[p_max] = L_shl( check_mse, sub( check_mse_e, *dist1_ptr_e ) ); + move32(); + indices_st1_local[p_max] = check_ind[i]; + move16(); + st1_mse_ptr_fx[check_ind[i]] = MAX_32; /* exclude, BASOP: move32() */ + move32(); + st1_mse_ptr_e[check_ind[i]] = MAX_16; + move16(); + p_max = maximum_32_fx( dist1_ptr_fx, maxC_st1, NULL ); /* establish a new current worst candidate among all maxC */ + } + } + + /* extract the selected stage one vectors in DCT_N domain , apply IDCT_N and scale up */ + /* always extract full length signal(e.g. 24) to be able to update WB(e.g. N_in==21) candidate MSE values */ + /* in the case that only a part of the IDCT N vector is in final use */ + + /* note: synthesis not yet fully parameterized/generalized for other IDCT lengths */ + assert( N == 24 ); + { + FOR( c = 0; c < maxC_st1; c++ ) + { + dec_FDCNG_MSVQ_stage1_fx( indices_st1_local[c], N, invTrfMatrix_fx, dcttype + 1, &( st1_syn_vec_ptr_fx[c * N] ), NULL ); // Q11 : output + scale_sig32( &( st1_syn_vec_ptr_fx[c * N] ), N, sub( 11, s_max( u_e, 12 ) ) ); + } + } + + return p_max; /*ptr to worst performing candidate */ +} + + +/*--------------------------------------------------------------------------* + * msvq_stage1_dct_recalc_candidates_fdcng_wb() + * + * recalc MSE for fdcng WB(0..20) coeffs , + essentially subtract res21^2 ,res22^2, res23^2 that was included in stage1 MSE in the DCT24 domain truncated search, + excludes the waveform contributions at pos 21,22,23 to the MSE, important to keep the WB MSEs update for the subsequent stages + *--------------------------------------------------------------------------*/ + +/*! r: (updated p_max) */ +Word16 msvq_stage1_dct_recalc_candidates_fdcng_wb_fx( + const Word32 *st1_syn_vec_ptr_fx, /* i : IDCT24 synthesis vectors st1_syn_vec_e*/ + const Word16 st1_syn_vec_e, /* i : exp for IDCT24 synthesis vectors */ + const Word32 *u_fx, /* i : target signal u_e*/ + const Word16 u_e, /* i : exp for target signal */ + const Word16 maxC_st1, /* i : number of candidates in stage1 */ + Word32 *dist_ptr_fx, /* i/o: updated MSE vector for stage1 */ + Word16 *dist_ptr_e /* i/o: exp for updated MSE vector for stage1 */ +) +{ + Word16 i; + Word16 p_max_local, c; + const Word32 *p2_fx; + Word16 tmp_e; + Word32 res24_fx, high_diff_fx[FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB]; + Word64 acc; + Word16 res24_e[FD_CNG_maxC_37bits]; + Word16 dist_e; + + dist_e = *dist_ptr_e; + move16(); + FOR( c = 0; c < maxC_st1; c++ ) + { /* point to extended synthesis part */ + p2_fx = (const Word32 *) &( st1_syn_vec_ptr_fx[c * FDCNG_VQ_MAX_LEN + FDCNG_VQ_MAX_LEN_WB] ); /* ptr init to synthesis candidate c */ + tmp_e = s_max( st1_syn_vec_e, u_e ); + tmp_e = add( tmp_e, 1 ); + /* for stage#1 use "u" instead of the shortened resid[0], to access the extended/extrapolated input target */ + FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ ) + { + high_diff_fx[i] = L_sub( L_shr( p2_fx[i], sub( tmp_e, st1_syn_vec_e ) ), L_shr( u_fx[FDCNG_VQ_MAX_LEN_WB + i], sub( tmp_e, u_e ) ) ); // tmp_e + move32(); + } + acc = 0; + move64(); + FOR( i = 0; i < FDCNG_VQ_MAX_LEN - FDCNG_VQ_MAX_LEN_WB; i++ ) + { + acc = W_mac_32_32( acc, high_diff_fx[i], high_diff_fx[i] ); + } + res24_e[c] = tmp_e; + move16(); + tmp_e = W_norm( acc ); + res24_fx = W_extract_h( W_shl( acc, tmp_e ) ); + + res24_e[c] = sub( shl( res24_e[c], 1 ), tmp_e ); + move16(); + + dist_ptr_fx[c] = BASOP_Util_Add_Mant32Exp( dist_ptr_fx[c], *dist_ptr_e, L_negate( res24_fx ), res24_e[c], &res24_e[c] ); /* remove DCT24 high band error contribution */ + move32(); + dist_e = s_max( dist_e, res24_e[c] ); + move16(); + } + + + FOR( c = 0; c < maxC_st1; c++ ) + { + dist_ptr_fx[c] = L_shl( dist_ptr_fx[c], sub( res24_e[c], dist_e ) ); + move32(); + } + *dist_ptr_e = dist_e; + move16(); + /* finally update p_max, as it may potentially change, + due to the core DCT24 search originally optimizing over the longer basis vectors than DCT21 */ + p_max_local = maximum_32_fx( dist_ptr_fx, maxC_st1, NULL ); + + return p_max_local; +} + + /*--------------------------------------------------------------------------* * depack_mul_values_fx() * *--------------------------------------------------------------------------*/ + static Word32 depack_mul_values_fx( Word16 *Tmp, const Word16 *w, const Word16 *cbp, const Word16 N ) { Word16 i, val0, val1, val2, val3; @@ -65,10 +440,13 @@ static Word32 depack_mul_values_fx( Word16 *Tmp, const Word16 *w, const Word16 * return en; } + + /*--------------------------------------------------------------------------* * depack_sub_values() * *--------------------------------------------------------------------------*/ + static void depack_sub_values_fx( Word16 *pTmp, const Word16 *p1, const Word16 *cbp, const Word16 N ) { Word16 j, val0, val1, val2, val3; @@ -88,11 +466,14 @@ static void depack_sub_values_fx( Word16 *pTmp, const Word16 *p1, const Word16 * move16(); /*3Q12*1.28*/ } } + + /*--------------------------------------------------------------------------* * msvq_enc_find_p_max_8() * * Unroll of inner search loop for maxC == 8 *--------------------------------------------------------------------------*/ + static Word16 msvq_enc_find_p_max_8_fx( Word32 dist[] ) { Word16 p_max; @@ -139,11 +520,14 @@ static Word16 msvq_enc_find_p_max_8_fx( Word32 dist[] ) BASOP_SATURATE_WARNING_ON_EVS return p_max; } + + /*--------------------------------------------------------------------------* * msvq_enc_find_p_max_6() * * Unroll of inner search loop for maxC == 6 *--------------------------------------------------------------------------*/ + static Word16 msvq_enc_find_p_max_6_fx( Word32 dist[] ) { Word16 p_max; @@ -180,11 +564,14 @@ static Word16 msvq_enc_find_p_max_6_fx( Word32 dist[] ) BASOP_SATURATE_WARNING_ON_EVS return p_max; } + + /*--------------------------------------------------------------------------* * msvq_enc_fx() * * MSVQ encoder *--------------------------------------------------------------------------*/ + void msvq_enc_fx( const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) (0Q15) */ const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */ @@ -400,6 +787,449 @@ void msvq_enc_fx( return; } + +/*--------------------------------------------------------------------------* + * msvq_enc_ivas_fx() + * + * MSVQ encoder + *--------------------------------------------------------------------------*/ + +void msvq_enc_ivas_fx( + const Word16 *const *cb, /* i : Codebook (indexed cb[*stages][levels][p]) Q_cb */ + const Word16 Q_cb, /* i : Codebook Q */ + const Word16 dims[], /* i : Dimension of each codebook stage (NULL: full dim.) */ + const Word16 offs[], /* i : Starting dimension of each codebook stage (NULL: 0) */ + const Word32 u_fx[], /* i : Vector to be encoded (prediction and mean removed) (exp : u_e) */ + const Word16 u_e, /* i : Exponent for Vector to be encoded */ + const Word16 *levels, /* i : Number of levels in each stage */ + const Word16 maxC, /* i : Tree search size (number of candidates kept from from one stage to the next == M-best) */ + const Word16 stages, /* i : Number of stages */ + const Word16 w[], /* i : Weights Q8 */ + const Word16 N, /* i : Vector dimension */ + const Word16 maxN, /* i : Codebook dimension */ + const Word16 applyDCT_flag, /* i : applyDCT flag */ + Word32 *invTrfMatrix_fx, /* i/o: synthesis matrix Q31 */ + Word16 Idx[] /* o : Indices */ +) +{ + Word16 j; + const Word16 *cbp, *cb_stage; + Word32 resid_buf_fx[2 * LSFMBEST_MAX * M_MAX], *resid_fx[2]; + Word32 *pTmp, *p1, *p2; // pTmp_e + Word16 pTmp_e; + Word16 *indices[2], m, s, c, c2, p_max, i; + Word16 idx_buf[2 * LSFMBEST_MAX * MAX_VQ_STAGES_USED], parents[LSFMBEST_MAX]; + Word32 dist_buf_fx[2 * LSFMBEST_MAX], *dist_fx[2], tmp, en, ss2, Tmp[M_MAX]; + Word16 dist_buf_e[2 * LSFMBEST_MAX], *dist_e[2]; + Word16 tmp_e, tmp_n, en_e; + Word16 resid_e; + Word16 n, maxn, start; + Word64 W_acc; /*64 bit accumulator*/ + + Word32 *st1_syn_vec_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - FDCNG_VQ_MAX_LEN * maxC; + Word32 *st1_mse_ptr_fx = &( resid_buf_fx[1 * LSFMBEST_MAX * M_MAX] ) - ( levels[0] ); + Word16 indices_st1_local[FDCNG_VQ_DCT_NSEGM * 2]; + + /*----------------------------------------------------------------* + * Allocate memory for previous (parent) and current nodes. + * Parent node is indexed [0], current node is indexed [1]. + *----------------------------------------------------------------*/ + indices[0] = idx_buf; + indices[1] = idx_buf + maxC * stages; /*move16();*/ + /*vr_iset(0, idx_buf, 2*stages*maxC);*/ + set16_fx( idx_buf, 0, (Word16) ( 2 * stages * maxC ) ); + + resid_fx[0] = resid_buf_fx; + resid_fx[1] = resid_buf_fx + maxC * N; /*move16();*/ + + dist_fx[0] = dist_buf_fx; + dist_e[0] = dist_buf_e; + dist_fx[1] = dist_buf_fx + maxC; + dist_e[1] = dist_buf_e + maxC; + + /*vr_iset(0, parents, maxC);*/ + set16_fx( parents, 0, maxC ); + + /*----------------------------------------------------------------* + * LSF weights are normalized, so it is always better to multiply it first + * Set up inital distance vector + *----------------------------------------------------------------*/ + W_acc = W_mult_32_32( Mpy_32_16_1( u_fx[0], shl( w[0], 2 ) ), u_fx[0] ); // 2*Qu - 6 + 1 + FOR( j = 1; j < N; j++ ) + { + W_acc = W_mac_32_32( W_acc, Mpy_32_16_1( u_fx[j], shl( w[j], 2 ) ), u_fx[j] ); // 2*Qu - 6 + 1 + } + + tmp_n = W_norm( W_acc ); + ss2 = W_extract_h( W_shl( W_acc, tmp_n ) ); + tmp_e = sub( add( shl( u_e, 1 ), 5 ), tmp_n ); + + /* Set up inital error (residual) vectors */ + pTmp = resid_fx[1]; /*move16();*/ + resid_e = u_e; + move16(); + IF( applyDCT_flag != 0 ) + { + resid_e = s_max( u_e, 12 ); + } + FOR( c = 0; c < maxC; c++ ) + { + Copy32( u_fx, pTmp + c * N, N ); + test(); + IF( applyDCT_flag != 0 && LT_16( u_e, 12 ) ) + { + scale_sig32( pTmp + c * N, N, sub( u_e, resid_e ) ); + } + dist_fx[1][c] = ss2; + move32(); + dist_e[1][c] = tmp_e; + move16(); + } + + /* Loop over all stages */ + m = 1; + move16(); + FOR( s = 0; s < stages; s++ ) + { + /* codebook pointer is set to point to first stage */ + cbp = cb[s]; /*Q_cb*/ + cb_stage = cbp; + + /* Set up pointers to parent and current nodes */ + swap( indices[0], indices[1], Word16 * ); + move16(); + move16(); + move16(); + swap( resid_fx[0], resid_fx[1], Word32 * ); + move32(); + move32(); + move32(); + swap( dist_fx[0], dist_fx[1], Word32 * ); + swap( dist_e[0], dist_e[1], Word16 * ); + move32(); + move32(); + move32(); + move16(); + move16(); + move16(); + + /* p_max points to maximum distortion node (worst of best) */ + p_max = 0; + move16(); + + n = N; + move16(); + maxn = maxN; + move16(); + if ( dims ) + { + n = dims[s]; + move16(); + } + if ( dims ) + { + maxn = n; + move16(); + } + + assert( ( maxn % 4 ) == 0 ); + + start = 0; + move16(); + if ( offs ) + { + start = offs[s]; + move16(); + } + + set32_fx( Tmp, 0, start ); + set32_fx( Tmp + start + n, 0, sub( N, add( start, n ) ) ); + + /* Set distortions to a large value */ + FOR( j = 0; j < maxC; j++ ) + { + dist_fx[1][j] = MAX_32; + move32(); + dist_e[1][j] = MAX_16 / 2; + move16(); + } + + test(); + IF( !s && applyDCT_flag != 0 ) /* means: m==1 */ + { + /* stage 1 candidates search in truncated dct24 domain without any weights */ + assert( N == FDCNG_VQ_MAX_LEN || N == FDCNG_VQ_MAX_LEN_WB ); /* 21 and 24 allowed */ + assert( maxC == 2 * FDCNG_VQ_DCT_NSEGM ); + p_max = msvq_stage1_dct_search_fx( u_fx, u_e, FDCNG_VQ_MAX_LEN, maxC, DCT_T2_24_XX, FDCNG_VQ_DCT_MAXTRUNC, (Word32 *) invTrfMatrix_fx, cdk1r_tr_midQ_truncQ_fx, fdcng_dct_scaleF_fx, FDCNG_VQ_DCT_NSEGM, + cdk1_ivas_cols_per_segment, cdk1_ivas_trunc_dct_cols_per_segment, cdk1_ivas_entries_per_segment, cdk1_ivas_cum_entries_per_segment, cdk_37bits_ivas_stage1_W8Qx_dct_sections, + stage1_dct_col_syn_shift, cdk1_ivas_segm_neighbour_fwd, cdk1_ivas_segm_neighbour_rev, FDCNG_VQ_DCT_NPOST, st1_mse_ptr_fx, indices_st1_local, st1_syn_vec_ptr_fx, dist_fx[1], &dist_e[1][0] ); + + /* move established stage#1 indices to the global MSVQ list structure */ + set16_fx( dist_e[1], dist_e[1][0], maxC ); + FOR( c = 0; c < maxC; c++ ) + { + indices[1][c * stages] = indices_st1_local[c]; + move16(); + } + } + ELSE + { + FOR( j = 0; j < levels[s]; j++ ) + { + /* Compute weighted codebook element and its energy */ + en = 0; + move32(); + en_e = 0; + move16(); + W_acc = 0; + move64(); + FOR( c2 = 0; c2 < n; c2++ ) + { + Tmp[start + c2] = L_mult0( shl( w[start + c2], 2 ), cbp[c2] ); + move32(); + W_acc = W_mac_32_16( W_acc, Tmp[start + c2], cbp[c2] ); + } + + tmp_n = W_norm( W_acc ); + + en = W_extract_h( W_shl( W_acc, tmp_n ) ); + en_e = sub( sub( 52, shl( Q_cb, 1 ) ), tmp_n ); + + cbp += maxn; /* pointer is incremented */ + + /* Iterate over all parent nodes */ + FOR( c = 0; c < m; c++ ) + { + pTmp = &resid_fx[0][c * N]; + pTmp_e = resid_e; + move16(); + /*tmp = (*pTmp++) * Tmp[0];*/ + W_acc = W_mult_32_32( pTmp[0], Tmp[0] ); + + FOR( i = 1; i < N; i++ ) + { + W_acc = W_mac_32_32( W_acc, pTmp[i], Tmp[i] ); + } + tmp_n = W_norm( W_acc ); + tmp = W_extract_h( W_shl( W_acc, tmp_n ) ); + tmp_e = sub( add( pTmp_e, sub( Q31 - Q10, Q_cb ) ), tmp_n ); + + + tmp_n = s_max( tmp_e, en_e ); + tmp_n = s_max( dist_e[0][c], tmp_n ); + + IF( NE_16( dist_e[0][c], MAX_16 / 2 ) ) + { + tmp_n = add( tmp_n, 2 ); + tmp = L_sub( L_shl( en, sub( en_e, tmp_n ) ), L_shl( tmp, add( sub( tmp_e, tmp_n ), 1 ) ) ); + tmp = L_add( tmp, L_shl( dist_fx[0][c], sub( dist_e[0][c], tmp_n ) ) ); + } + ELSE + { + tmp = MAX_32 - 1; + move32(); + tmp_n = MAX_16 / 2; + move32(); + } + + IF( EQ_16( BASOP_Util_Cmp_Mant32Exp( tmp, tmp_n, dist_fx[1][p_max], dist_e[1][p_max] ), -1 ) ) + { + /* Replace worst */ + dist_fx[1][p_max] = tmp; + move32(); + dist_e[1][p_max] = tmp_n; + move16(); + indices[1][p_max * stages + s] = j; + move16(); + parents[p_max] = c; + move16(); + + p_max = 0; + move16(); + tmp_e = p_max; + move16(); + + tmp_n = dist_e[1][0]; + move16(); + FOR( c2 = 1; c2 < maxC; c2++ ) + { + if ( EQ_16( BASOP_Util_Cmp_Mant32Exp( dist_fx[1][c2], dist_e[1][c2], dist_fx[1][p_max], dist_e[1][p_max] ), 1 ) ) + { + p_max = c2; + move16(); + } + test(); + if ( GT_16( dist_e[1][c2], tmp_n ) && NE_16( dist_e[1][c2], MAX_16 / 2 ) ) + { + tmp_n = dist_e[1][c2]; + move16(); + } + } + FOR( c2 = 0; c2 < maxC; c2++ ) + { + IF( NE_16( dist_e[1][c2], MAX_16 / 2 ) ) + { + dist_fx[1][c2] = L_shl( dist_fx[1][c2], sub( dist_e[1][c2], tmp_n ) ); + move32(); + dist_e[1][c2] = tmp_n; + move16(); + } + } + } /*IF (L_sub(tmp,dist[1][p_max]) < 0) */ + } /* FOR (c=0; c -#include "options.h" -#include "ivas_cnst.h" -#include "prot_fx.h" -#include "ivas_prot_rend_fx.h" -#include "ivas_rom_com.h" -#include "ivas_rom_com_fx.h" -#include "wmc_auto.h" -#include "ivas_prot_fx.h" -/*-------------------------------------------------------------------------* - * audioCfg2channels() - * - * Map Audio configuration to number of channels - *-------------------------------------------------------------------------*/ - -/*! r: number of audio channels */ -Word16 audioCfg2channels( - AUDIO_CONFIG output_config /* i : output audio configuration */ -) -{ - Word16 nchan_out; - - SWITCH( output_config ) - { - case IVAS_AUDIO_CONFIG_MONO: - nchan_out = 1; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_STEREO: - nchan_out = 2; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_5_1: - nchan_out = 6; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_7_1: - nchan_out = 8; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_5_1_2: - nchan_out = 8; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_5_1_4: - nchan_out = 10; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_7_1_4: - nchan_out = 12; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_FOA: - nchan_out = 4; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_HOA2: - nchan_out = 9; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_HOA3: - nchan_out = 16; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_OBA: - nchan_out = 8; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_BINAURAL: - case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - nchan_out = 2; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_ISM1: - nchan_out = 1; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_ISM2: - nchan_out = 2; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_ISM3: - nchan_out = 3; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_ISM4: - nchan_out = 4; - move16(); - BREAK; - default: - IVAS_ERROR( IVAS_ERR_INTERNAL, "Error: illegal output configuration\n" ); - nchan_out = -1; - move16(); - BREAK; - } - - return ( nchan_out ); -} - -/*-------------------------------------------------------------------------* - * ivas_output_init() - * - * Initialize and configure IVAS output parameters - *-------------------------------------------------------------------------*/ -void ivas_output_init( - IVAS_OUTPUT_SETUP *hOutSetup, /* o : IVAS output setup structure */ - const AUDIO_CONFIG output_config /* i : output audio configuration */ -) -{ - Word16 nchan_out; - - /* set general default values */ - hOutSetup->output_config = output_config; - move16(); - hOutSetup->is_loudspeaker_setup = 0; - move16(); - hOutSetup->is_binaural_setup = 0; - move16(); - hOutSetup->ambisonics_order = -1; - move16(); - hOutSetup->separateChannelEnabled = 0; - move16(); - hOutSetup->separateChannelIndex = 0; - move16(); - - IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - hOutSetup->is_loudspeaker_setup = 1; - move16(); - /* set in ivas_init_decoder: */ - /* hOutSetup->ls_azimuth */ - /* hOutSetup->ls_elevation */ - /* hOutSetup->num_lfe */ - /* hOutSetup->index_lfe[0] */ - /* hOutSetup->is_planar_setup */ - } - ELSE - { - /* Set default values for all other than custom LS setup */ - hOutSetup->ls_azimuth_fx = NULL; - hOutSetup->ls_elevation_fx = NULL; - hOutSetup->num_lfe = 0; - move16(); - hOutSetup->index_lfe[0] = -1; - move16(); - hOutSetup->is_planar_setup = 0; - move16(); - - /* set output setup specific values */ - SWITCH( output_config ) - { - case IVAS_AUDIO_CONFIG_MONO: - hOutSetup->is_loudspeaker_setup = 1; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_STEREO: - hOutSetup->is_loudspeaker_setup = 1; - move16(); - hOutSetup->ls_azimuth_fx = ls_azimuth_CICP2_fx; // Q22 - hOutSetup->ls_elevation_fx = ls_elevation_CICP2_fx; // Q22 - BREAK; - case IVAS_AUDIO_CONFIG_FOA: - hOutSetup->ambisonics_order = SBA_FOA_ORDER; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_HOA2: - hOutSetup->ambisonics_order = SBA_HOA2_ORDER; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_HOA3: - hOutSetup->ambisonics_order = SBA_HOA3_ORDER; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_5_1: - hOutSetup->num_lfe = 1; - move16(); - hOutSetup->index_lfe[0] = 3; - move16(); - hOutSetup->is_loudspeaker_setup = 1; - move16(); - hOutSetup->ls_azimuth_fx = ls_azimuth_CICP6_fx; // Q22 - hOutSetup->ls_elevation_fx = ls_elevation_CICP6_fx; // Q22 - hOutSetup->is_planar_setup = 1; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_7_1: - hOutSetup->num_lfe = 1; - move16(); - hOutSetup->index_lfe[0] = 3; - move16(); - hOutSetup->is_loudspeaker_setup = 1; - move16(); - hOutSetup->ls_azimuth_fx = ls_azimuth_CICP12_fx; // Q22 - hOutSetup->ls_elevation_fx = ls_elevation_CICP12_fx; // Q22 - hOutSetup->is_planar_setup = 1; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_5_1_2: - hOutSetup->num_lfe = 1; - move16(); - hOutSetup->index_lfe[0] = 3; - move16(); - hOutSetup->is_loudspeaker_setup = 1; - move16(); - hOutSetup->ls_azimuth_fx = ls_azimuth_CICP14_fx; // Q22 - hOutSetup->ls_elevation_fx = ls_elevation_CICP14_fx; // Q22 - hOutSetup->is_planar_setup = 0; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_5_1_4: - hOutSetup->num_lfe = 1; - move16(); - hOutSetup->index_lfe[0] = 3; - move16(); - hOutSetup->is_loudspeaker_setup = 1; - move16(); - hOutSetup->ls_azimuth_fx = ls_azimuth_CICP16_fx; // Q22 - hOutSetup->ls_elevation_fx = ls_elevation_CICP16_fx; // Q22 - hOutSetup->is_planar_setup = 0; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_7_1_4: - hOutSetup->num_lfe = 1; - move16(); - hOutSetup->index_lfe[0] = 3; - move16(); - hOutSetup->is_loudspeaker_setup = 1; - move16(); - hOutSetup->ls_azimuth_fx = ls_azimuth_CICP19_fx; // Q22 - hOutSetup->ls_elevation_fx = ls_elevation_CICP19_fx; // Q22 - hOutSetup->is_planar_setup = 0; - move16(); - BREAK; - case IVAS_AUDIO_CONFIG_BINAURAL: - case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - case IVAS_AUDIO_CONFIG_ISM1: - case IVAS_AUDIO_CONFIG_ISM2: - case IVAS_AUDIO_CONFIG_ISM3: - case IVAS_AUDIO_CONFIG_ISM4: - hOutSetup->is_binaural_setup = 1; - move16(); - case IVAS_AUDIO_CONFIG_EXTERNAL: - /* Default values are used */ - BREAK; - default: - return; - } - } - - test(); - IF( NE_16( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) && NE_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_out = audioCfg2channels( output_config ); - hOutSetup->nchan_out_woLFE = sub( nchan_out, hOutSetup->num_lfe ); - move16(); - } - - return; -} - - -/*-----------------------------------------------------------------* - * ivas_get_nchan_buffers_dec() - * - * Return number of decoder audio buffers - *-----------------------------------------------------------------*/ - -/*! r: number of decoder buffers */ -Word16 ivas_get_nchan_buffers_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const Word16 sba_analysis_order, /* i : SBA order evaluated in SBA decoder */ - const Word32 ivas_total_brate /* i : total IVAS bitrate */ -) -{ - Word16 nchan_out_buff; - AUDIO_CONFIG output_config; - - output_config = st_ivas->hDecoderConfig->output_config; - move16(); - - nchan_out_buff = MAX_OUTPUT_CHANNELS; - move16(); - - IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) ) - { - nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; - move16(); - } - ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) - { - nchan_out_buff = s_max( st_ivas->hDecoderConfig->nchan_out, CPE_CHANNELS ); - } - ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) - { - nchan_out_buff = st_ivas->nchan_ism; - move16(); - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); - } - ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) - { - Word16 nchan_internal; - nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate ); - nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; - move16(); - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); - } - ELSE - { - nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); - } - nchan_out_buff = s_max( nchan_out_buff, nchan_internal ); - } - ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) - { - nchan_out_buff = CPE_CHANNELS; - move16(); - - test(); - test(); - test(); - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); - } - ELSE IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { - nchan_out_buff = shl( CPE_CHANNELS, 1 ); - } - ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) - { - nchan_out_buff = add( st_ivas->nchan_ism, CPE_CHANNELS ); - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); - } - ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); - } - } - ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) - { - Word16 nchan_internal; - nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate ); - nchan_out_buff = add( st_ivas->nchan_ism, st_ivas->nchan_transport ); - - IF( st_ivas->hMCT != NULL ) - { - nchan_out_buff = shl( shr( add( nchan_out_buff, 1 ), 1 ), 1 ); /* ensure odd number of channels in MCT */ - } - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); - } - ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); - - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) ) - { - nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_sba_upmixer_renderer() */ - } - ELSE - { - nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_spar_dec_upmixer_sf() which is based on 'nchan_out' */ - } - } - ELSE IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) - { - nchan_out_buff = add( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_ism ); /*take into account sba_ch_idx' in ivas_dec() */ - } - - test(); - IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) ) ) - { - nchan_out_buff = s_max( nchan_out_buff, add( nchan_internal, st_ivas->nchan_ism ) ); - } - nchan_out_buff = s_min( nchan_out_buff, MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS ); - } - ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) - { - nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); - } - ELSE - { - nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); - nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); - } - } - - - return nchan_out_buff; -} - -/*-------------------------------------------------------------------* - * ivas_output_buff_dec() - * - * Allocate/reallocate output audio buffers - *-------------------------------------------------------------------*/ -ivas_error ivas_output_buff_dec_fx( - Word32 *p_output_f[], /* i/o: output audio buffers */ - const Word16 nchan_out_buff_old, /* i : previous frame number of output channels */ - const Word16 nchan_out_buff /* i : number of output channels */ -) -{ - Word16 ch; - IF( GT_16( nchan_out_buff, nchan_out_buff_old ) ) - { - FOR( ch = nchan_out_buff_old; ch < nchan_out_buff; ch++ ) - { - /* note: these are intra-frame heap memories */ - IF( ( p_output_f[ch] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL ) /* note: 32000 == max internal sampling rate */ - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) ); - } - } - } - ELSE - { - FOR( ch = nchan_out_buff; ch < nchan_out_buff_old; ch++ ) - { - free( p_output_f[ch] ); - p_output_f[ch] = NULL; - } - } - return IVAS_ERR_OK; -} diff --git a/lib_rend/ivas_output_init_fx.c b/lib_rend/ivas_output_init_fx.c index 3b01f62ca..057161c7c 100644 --- a/lib_rend/ivas_output_init_fx.c +++ b/lib_rend/ivas_output_init_fx.c @@ -1,7 +1,459 @@ +/****************************************************************************************************** -#include "ivas_prot_fx.h" -#include "ivas_prot_rend_fx.h" + (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, + Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., + Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, + Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other + contributors to this repository. All Rights Reserved. + + This software is protected by copyright law and by international treaties. + The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, + Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., + Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, + Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other + contributors to this repository retain full ownership rights in their respective contributions in + the software. This notice grants no license of any kind, including but not limited to patent + license, nor is any license granted by implication, estoppel or otherwise. + + Contributors are required to enter into the IVAS codec Public Collaboration agreement before making + contributions. + + This software is provided "AS IS", without any express or implied warranties. The software is in the + development stage. It is intended exclusively for experts who have experience with such software and + solely for the purpose of inspection. All implied warranties of non-infringement, merchantability + and fitness for a particular purpose are hereby disclaimed and excluded. + + Any dispute, controversy or claim arising under or in relation to providing this software shall be + submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in + accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and + the United Nations Convention on Contracts on the International Sales of Goods. + +*******************************************************************************************************/ + +#include #include +#include "options.h" +#include "ivas_cnst.h" +#include "prot_fx.h" +#include "ivas_prot_rend_fx.h" +#include "ivas_rom_com.h" +#include "ivas_rom_com_fx.h" +#include "wmc_auto.h" +#include "ivas_prot_fx.h" +/*-------------------------------------------------------------------------* + * audioCfg2channels() + * + * Map Audio configuration to number of channels + *-------------------------------------------------------------------------*/ + +/*! r: number of audio channels */ +Word16 audioCfg2channels( + AUDIO_CONFIG output_config /* i : output audio configuration */ +) +{ + Word16 nchan_out; + + SWITCH( output_config ) + { + case IVAS_AUDIO_CONFIG_MONO: + nchan_out = 1; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_STEREO: + nchan_out = 2; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_5_1: + nchan_out = 6; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_7_1: + nchan_out = 8; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_5_1_2: + nchan_out = 8; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_5_1_4: + nchan_out = 10; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_7_1_4: + nchan_out = 12; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_FOA: + nchan_out = 4; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_HOA2: + nchan_out = 9; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_HOA3: + nchan_out = 16; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_OBA: + nchan_out = 8; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_BINAURAL: + case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: + case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + nchan_out = 2; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_ISM1: + nchan_out = 1; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_ISM2: + nchan_out = 2; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_ISM3: + nchan_out = 3; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_ISM4: + nchan_out = 4; + move16(); + BREAK; + default: + IVAS_ERROR( IVAS_ERR_INTERNAL, "Error: illegal output configuration\n" ); + nchan_out = -1; + move16(); + BREAK; + } + + return ( nchan_out ); +} + +/*-------------------------------------------------------------------------* + * ivas_output_init() + * + * Initialize and configure IVAS output parameters + *-------------------------------------------------------------------------*/ +void ivas_output_init( + IVAS_OUTPUT_SETUP *hOutSetup, /* o : IVAS output setup structure */ + const AUDIO_CONFIG output_config /* i : output audio configuration */ +) +{ + Word16 nchan_out; + + /* set general default values */ + hOutSetup->output_config = output_config; + move16(); + hOutSetup->is_loudspeaker_setup = 0; + move16(); + hOutSetup->is_binaural_setup = 0; + move16(); + hOutSetup->ambisonics_order = -1; + move16(); + hOutSetup->separateChannelEnabled = 0; + move16(); + hOutSetup->separateChannelIndex = 0; + move16(); + + IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + hOutSetup->is_loudspeaker_setup = 1; + move16(); + /* set in ivas_init_decoder: */ + /* hOutSetup->ls_azimuth */ + /* hOutSetup->ls_elevation */ + /* hOutSetup->num_lfe */ + /* hOutSetup->index_lfe[0] */ + /* hOutSetup->is_planar_setup */ + } + ELSE + { + /* Set default values for all other than custom LS setup */ + hOutSetup->ls_azimuth_fx = NULL; + hOutSetup->ls_elevation_fx = NULL; + hOutSetup->num_lfe = 0; + move16(); + hOutSetup->index_lfe[0] = -1; + move16(); + hOutSetup->is_planar_setup = 0; + move16(); + + /* set output setup specific values */ + SWITCH( output_config ) + { + case IVAS_AUDIO_CONFIG_MONO: + hOutSetup->is_loudspeaker_setup = 1; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_STEREO: + hOutSetup->is_loudspeaker_setup = 1; + move16(); + hOutSetup->ls_azimuth_fx = ls_azimuth_CICP2_fx; // Q22 + hOutSetup->ls_elevation_fx = ls_elevation_CICP2_fx; // Q22 + BREAK; + case IVAS_AUDIO_CONFIG_FOA: + hOutSetup->ambisonics_order = SBA_FOA_ORDER; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_HOA2: + hOutSetup->ambisonics_order = SBA_HOA2_ORDER; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_HOA3: + hOutSetup->ambisonics_order = SBA_HOA3_ORDER; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_5_1: + hOutSetup->num_lfe = 1; + move16(); + hOutSetup->index_lfe[0] = 3; + move16(); + hOutSetup->is_loudspeaker_setup = 1; + move16(); + hOutSetup->ls_azimuth_fx = ls_azimuth_CICP6_fx; // Q22 + hOutSetup->ls_elevation_fx = ls_elevation_CICP6_fx; // Q22 + hOutSetup->is_planar_setup = 1; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_7_1: + hOutSetup->num_lfe = 1; + move16(); + hOutSetup->index_lfe[0] = 3; + move16(); + hOutSetup->is_loudspeaker_setup = 1; + move16(); + hOutSetup->ls_azimuth_fx = ls_azimuth_CICP12_fx; // Q22 + hOutSetup->ls_elevation_fx = ls_elevation_CICP12_fx; // Q22 + hOutSetup->is_planar_setup = 1; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_5_1_2: + hOutSetup->num_lfe = 1; + move16(); + hOutSetup->index_lfe[0] = 3; + move16(); + hOutSetup->is_loudspeaker_setup = 1; + move16(); + hOutSetup->ls_azimuth_fx = ls_azimuth_CICP14_fx; // Q22 + hOutSetup->ls_elevation_fx = ls_elevation_CICP14_fx; // Q22 + hOutSetup->is_planar_setup = 0; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_5_1_4: + hOutSetup->num_lfe = 1; + move16(); + hOutSetup->index_lfe[0] = 3; + move16(); + hOutSetup->is_loudspeaker_setup = 1; + move16(); + hOutSetup->ls_azimuth_fx = ls_azimuth_CICP16_fx; // Q22 + hOutSetup->ls_elevation_fx = ls_elevation_CICP16_fx; // Q22 + hOutSetup->is_planar_setup = 0; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_7_1_4: + hOutSetup->num_lfe = 1; + move16(); + hOutSetup->index_lfe[0] = 3; + move16(); + hOutSetup->is_loudspeaker_setup = 1; + move16(); + hOutSetup->ls_azimuth_fx = ls_azimuth_CICP19_fx; // Q22 + hOutSetup->ls_elevation_fx = ls_elevation_CICP19_fx; // Q22 + hOutSetup->is_planar_setup = 0; + move16(); + BREAK; + case IVAS_AUDIO_CONFIG_BINAURAL: + case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: + case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + case IVAS_AUDIO_CONFIG_ISM1: + case IVAS_AUDIO_CONFIG_ISM2: + case IVAS_AUDIO_CONFIG_ISM3: + case IVAS_AUDIO_CONFIG_ISM4: + hOutSetup->is_binaural_setup = 1; + move16(); + case IVAS_AUDIO_CONFIG_EXTERNAL: + /* Default values are used */ + BREAK; + default: + return; + } + } + + test(); + IF( NE_16( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) && NE_16( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_out = audioCfg2channels( output_config ); + hOutSetup->nchan_out_woLFE = sub( nchan_out, hOutSetup->num_lfe ); + move16(); + } + + return; +} + + +/*-----------------------------------------------------------------* + * ivas_get_nchan_buffers_dec() + * + * Return number of decoder audio buffers + *-----------------------------------------------------------------*/ + +/*! r: number of decoder buffers */ +Word16 ivas_get_nchan_buffers_dec( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const Word16 sba_analysis_order, /* i : SBA order evaluated in SBA decoder */ + const Word32 ivas_total_brate /* i : total IVAS bitrate */ +) +{ + Word16 nchan_out_buff; + AUDIO_CONFIG output_config; + + output_config = st_ivas->hDecoderConfig->output_config; + move16(); + + nchan_out_buff = MAX_OUTPUT_CHANNELS; + move16(); + + IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) ) + { + nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; + move16(); + } + ELSE IF( EQ_32( st_ivas->ivas_format, STEREO_FORMAT ) ) + { + nchan_out_buff = s_max( st_ivas->hDecoderConfig->nchan_out, CPE_CHANNELS ); + } + ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) + { + nchan_out_buff = st_ivas->nchan_ism; + move16(); + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); + } + ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) + { + Word16 nchan_internal; + nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate ); + nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; + move16(); + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); + } + ELSE + { + nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + nchan_out_buff = s_max( nchan_out_buff, nchan_internal ); + } + ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) + { + nchan_out_buff = CPE_CHANNELS; + move16(); + + test(); + test(); + test(); + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); + } + ELSE IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + nchan_out_buff = shl( CPE_CHANNELS, 1 ); + } + ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) + { + nchan_out_buff = add( st_ivas->nchan_ism, CPE_CHANNELS ); + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); + } + ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + ELSE IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + { + Word16 nchan_internal; + nchan_internal = ivas_sba_get_nchan_metadata_fx( sba_analysis_order, ivas_total_brate ); + nchan_out_buff = add( st_ivas->nchan_ism, st_ivas->nchan_transport ); + + IF( st_ivas->hMCT != NULL ) + { + nchan_out_buff = shl( shr( add( nchan_out_buff, 1 ), 1 ), 1 ); /* ensure odd number of channels in MCT */ + } + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); + } + ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); + + test(); + IF( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) ) + { + nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_sba_upmixer_renderer() */ + } + ELSE + { + nchan_out_buff = s_max( add( nchan_out_buff, st_ivas->nchan_ism ), audioCfg2channels( output_config ) ); /* needed for ivas_spar_dec_upmixer_sf() which is based on 'nchan_out' */ + } + } + ELSE IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) + { + nchan_out_buff = add( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_ism ); /*take into account sba_ch_idx' in ivas_dec() */ + } + + test(); + IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( nchan_internal, st_ivas->nchan_ism ) ); + } + nchan_out_buff = s_min( nchan_out_buff, MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS ); + } + ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) + { + nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); + } + ELSE + { + nchan_out_buff = s_max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + + + return nchan_out_buff; +} Word16 ivas_get_nchan_buffers_dec_ivas_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ @@ -159,6 +611,42 @@ Word16 ivas_get_nchan_buffers_dec_ivas_fx( return nchan_out_buff; } + +/*-------------------------------------------------------------------* + * ivas_output_buff_dec() + * + * Allocate/reallocate output audio buffers + *-------------------------------------------------------------------*/ +ivas_error ivas_output_buff_dec_fx( + Word32 *p_output_f[], /* i/o: output audio buffers */ + const Word16 nchan_out_buff_old, /* i : previous frame number of output channels */ + const Word16 nchan_out_buff /* i : number of output channels */ +) +{ + Word16 ch; + IF( GT_16( nchan_out_buff, nchan_out_buff_old ) ) + { + FOR( ch = nchan_out_buff_old; ch < nchan_out_buff; ch++ ) + { + /* note: these are intra-frame heap memories */ + IF( ( p_output_f[ch] = (Word32 *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( Word32 ) ) ) == NULL ) /* note: 32000 == max internal sampling rate */ + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) ); + } + } + } + ELSE + { + FOR( ch = nchan_out_buff; ch < nchan_out_buff_old; ch++ ) + { + free( p_output_f[ch] ); + p_output_f[ch] = NULL; + } + } + return IVAS_ERR_OK; +} + + /*---------------------------------------------------------------------* * get_channel_config() * diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend_fx.c similarity index 100% rename from lib_rend/lib_rend.c rename to lib_rend/lib_rend_fx.c -- GitLab From 4ff9c1fb44db5179b04df33e5fb1d880318ac8ad Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 19 May 2025 15:30:43 +0200 Subject: [PATCH 570/698] port float MR 1361 --- lib_com/ivas_cnst.h | 3 + lib_com/options.h | 2 + lib_dec/ivas_ism_renderer_fx.c | 2 + lib_dec/ivas_jbm_dec_fx.c | 27 +++++++++ lib_dec/ivas_omasa_dec_fx.c | 55 ++++++++++++++----- .../ivas_dirac_dec_binaural_functions_fx.c | 5 ++ 6 files changed, 81 insertions(+), 13 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 97602e73d..cb52138f6 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1318,6 +1318,9 @@ enum #define MASA_BIT_REDUCT_PARAM 10 #define MASA_MAXIMUM_TWO_DIR_BANDS 24 #define NBITS_HR_COH 4 +#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS +#define OMASA_TDREND_MATCHING_GAIN_FX 26026 +#endif #define MASA_INV_ANGLE_AT_EQUATOR_DEG_Q30 (1453366656l) diff --git a/lib_com/options.h b/lib_com/options.h index 2a87c540b..97065fb0e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -118,6 +118,8 @@ #define NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN /* FhG : issue #974: usan in mono and stereo output in OSBA JBM RS */ +#define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ + /* #################### End BASOP porting switches ############################ */ #endif diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 1a3fc4164..4d1678cb9 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -611,6 +611,7 @@ void ivas_omasa_separate_object_render_jbm_fx( FOR( obj = 0; obj < num_objects; obj++ ) { /* Delay the signal to match CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */ +#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS IF( slots_rendered == 0 ) { Word16 tcBufferSize; @@ -620,6 +621,7 @@ void ivas_omasa_separate_object_render_jbm_fx( } offsetSamples = 0; move16(); +#endif FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 9038dfb4b..15fa2489f 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1728,6 +1728,33 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( { ivas_ism_dec_digest_tc_fx( st_ivas ); } + +#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_DIRAC ) + { + int16_t num_objects; + + /* Delay the signal to match CLDFB delay. Delay the whole buffer. */ + num_objects = 0; + IF ( ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC ) + { + num_objects = 1; + } + ELSE IF ( EQ_16(st_ivas->ism_mode, ISM_MASA_MODE_DISC) ) + { + num_objects = st_ivas->nchan_ism; + } + FOR ( n = 0; n < num_objects; n++ ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) + { + v_multc_fixed_16( st_ivas->hTcBuffer->tc_fx[CPE_CHANNELS + n], OMASA_TDREND_MATCHING_GAIN_FX, st_ivas->hTcBuffer->tc_fx[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available ); + } + delay_signal32_fx( st_ivas->hTcBuffer->tc_fx[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer_fx[n], st_ivas->hMasaIsmData->delayBuffer_size ); + } + } +#endif + } ELSE IF( EQ_16( st_ivas->ivas_format, MC_FORMAT ) ) { diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index 2e7d5e47b..a220cd661 100644 --- a/lib_dec/ivas_omasa_dec_fx.c +++ b/lib_dec/ivas_omasa_dec_fx.c @@ -45,7 +45,9 @@ * Local constants *------------------------------------------------------------------------*/ +#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS #define OMASA_TDREND_MATCHING_GAIN_FX 26026 +#endif /*-------------------------------------------------------------------* * ivas_omasa_data_open() @@ -700,18 +702,39 @@ void ivas_omasa_dirac_rend_jbm_fx( Word16 n; Word32 data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; - test(); - IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) - { - Copy32( output_f[CPE_CHANNELS], data_separated_objects[0], nSamplesAsked ); - } - ELSE - { - FOR( n = 0; n < st_ivas->nchan_ism; n++ ) - { - Copy32( output_f[n + CPE_CHANNELS], data_separated_objects[n], nSamplesAsked ); - } - } +#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS + test(); + if (!st_ivas->hDecoderConfig->Opt_tsm) + { + *nSamplesRendered = min(nSamplesAsked, st_ivas->hTcBuffer->n_samples_available); +#endif + + + test(); + IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) + { +#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS + Copy32(&output_f[CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[0], *nSamplesRendered); +#else + Copy32( output_f[CPE_CHANNELS], data_separated_objects[0], nSamplesAsked ); +#endif + } + ELSE + { + FOR( n = 0; n < st_ivas->nchan_ism; n++ ) + { +#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS + Copy32(&output_f[n + CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[n], *nSamplesRendered); +#else + Copy32( output_f[n + CPE_CHANNELS], data_separated_objects[n], nSamplesAsked ); +#endif + } + } + +#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS + } +#endif + subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; move16(); @@ -751,10 +774,14 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( ) { Word16 n; +#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS Word16 gain_fx = OMASA_TDREND_MATCHING_GAIN_FX; // Q15 +#endif move16(); ivas_error error; +#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS Word32 *tc_local_fx[MAX_TRANSPORT_CHANNELS]; +#endif Word32 *p_sepobj_fx[MAX_NUM_OBJECTS]; // Q11 Word32 data_separated_objects_fx[MAX_NUM_OBJECTS][L_FRAME48k]; move16(); @@ -771,7 +798,8 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( } /* Delay the object signals to match the CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */ - IF( st_ivas->hSpatParamRendCom->slots_rendered == 0 ) +#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS + IF( st_ivas->hSpatParamRendCom->slots_rendered == 0 ) { Word16 tcBufferSize; @@ -785,6 +813,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( delay_signal32_fx( tc_local_fx[n], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer_fx[n], st_ivas->hMasaIsmData->delayBuffer_size ); } } +#endif ivas_dirac_dec_binaural_render_fx( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, nchan_transport, output_fx ); diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 408f1cb1b..4ad3c5288 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -3262,7 +3262,12 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( q_tmp_sq = sub( 31, exp ); IF( EQ_16( ivas_format, MASA_ISM_FORMAT ) ) { +#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS + Word32 ginfactor_fx = L_shl( (Word32) OMASA_TDREND_MATCHING_GAIN_FX, Q16 ); // constant in Q31 as Word32 + gainFactor_fx = Mpy_32_32(ginfactor_fx , tmp1); // 1705746262 = 0.7943f in Q31 +#else gainFactor_fx = Mpy_32_32( 1705746262, tmp1 ); // 1705746262 = 0.7943f in Q31 +#endif } ELSE { -- GitLab From d9488106a5e0471a5e19ff9c65c56f6209c517cc Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 19 May 2025 15:57:56 +0200 Subject: [PATCH 571/698] fix formatting --- lib_dec/ivas_jbm_dec_fx.c | 7 ++-- lib_dec/ivas_omasa_dec_fx.c | 40 +++++++++---------- .../ivas_dirac_dec_binaural_functions_fx.c | 4 +- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 15fa2489f..c85e36d8e 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1736,15 +1736,15 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( /* Delay the signal to match CLDFB delay. Delay the whole buffer. */ num_objects = 0; - IF ( ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC ) + IF( ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC ) { num_objects = 1; } - ELSE IF ( EQ_16(st_ivas->ism_mode, ISM_MASA_MODE_DISC) ) + ELSE IF( EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) { num_objects = st_ivas->nchan_ism; } - FOR ( n = 0; n < num_objects; n++ ) + FOR( n = 0; n < num_objects; n++ ) { if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) { @@ -1754,7 +1754,6 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( } } #endif - } ELSE IF( EQ_16( st_ivas->ivas_format, MC_FORMAT ) ) { diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index a220cd661..4bfc6e13e 100644 --- a/lib_dec/ivas_omasa_dec_fx.c +++ b/lib_dec/ivas_omasa_dec_fx.c @@ -703,36 +703,36 @@ void ivas_omasa_dirac_rend_jbm_fx( Word32 data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; #ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - test(); - if (!st_ivas->hDecoderConfig->Opt_tsm) - { - *nSamplesRendered = min(nSamplesAsked, st_ivas->hTcBuffer->n_samples_available); + test(); + if ( !st_ivas->hDecoderConfig->Opt_tsm ) + { + *nSamplesRendered = min( nSamplesAsked, st_ivas->hTcBuffer->n_samples_available ); #endif - test(); - IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) - { + test(); + IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) + { #ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - Copy32(&output_f[CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[0], *nSamplesRendered); + Copy32( &output_f[CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[0], *nSamplesRendered ); #else - Copy32( output_f[CPE_CHANNELS], data_separated_objects[0], nSamplesAsked ); + Copy32( output_f[CPE_CHANNELS], data_separated_objects[0], nSamplesAsked ); #endif - } - ELSE - { - FOR( n = 0; n < st_ivas->nchan_ism; n++ ) - { + } + ELSE + { + FOR( n = 0; n < st_ivas->nchan_ism; n++ ) + { #ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - Copy32(&output_f[n + CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[n], *nSamplesRendered); + Copy32( &output_f[n + CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[n], *nSamplesRendered ); #else - Copy32( output_f[n + CPE_CHANNELS], data_separated_objects[n], nSamplesAsked ); + Copy32( output_f[n + CPE_CHANNELS], data_separated_objects[n], nSamplesAsked ); #endif - } - } + } + } #ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - } + } #endif @@ -799,7 +799,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( /* Delay the object signals to match the CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */ #ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - IF( st_ivas->hSpatParamRendCom->slots_rendered == 0 ) + IF( st_ivas->hSpatParamRendCom->slots_rendered == 0 ) { Word16 tcBufferSize; diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 4ad3c5288..3f24bfd85 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -3263,8 +3263,8 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( IF( EQ_16( ivas_format, MASA_ISM_FORMAT ) ) { #ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - Word32 ginfactor_fx = L_shl( (Word32) OMASA_TDREND_MATCHING_GAIN_FX, Q16 ); // constant in Q31 as Word32 - gainFactor_fx = Mpy_32_32(ginfactor_fx , tmp1); // 1705746262 = 0.7943f in Q31 + Word32 gainfactor_fx = L_shl( (Word32) OMASA_TDREND_MATCHING_GAIN_FX, Q16 ); // constant in Q31 as Word32 + gainFactor_fx = Mpy_32_32( gainfactor_fx, tmp1 ); // 1705746262 = 0.7943f in Q31 #else gainFactor_fx = Mpy_32_32( 1705746262, tmp1 ); // 1705746262 = 0.7943f in Q31 #endif -- GitLab From 4abbef72c79621c414e1e771aaa0304079bfb43d Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 19 May 2025 16:42:04 +0200 Subject: [PATCH 572/698] fix ifndef in ivas_ism_renderer_fx.c --- lib_dec/ivas_ism_renderer_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index 4d1678cb9..c3904d136 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -619,9 +619,9 @@ void ivas_omasa_separate_object_render_jbm_fx( tcBufferSize = i_mult( hSpatParamRendCom->num_slots, hSpatParamRendCom->slot_size ); delay_signal32_fx( input_fx[obj], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer_fx[obj], st_ivas->hMasaIsmData->delayBuffer_size ); } +#endif offsetSamples = 0; move16(); -#endif FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { -- GitLab From 4614fa4003dc911c5eb596f994bc5df7f29ccb1a Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 14 Apr 2025 15:47:57 +0200 Subject: [PATCH 573/698] tentatively delete IND_SHB_RES_GS5 from the index list --- lib_com/cnst.h | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/cnst.h b/lib_com/cnst.h index ae84dbd2c..7b204a8e2 100644 --- a/lib_com/cnst.h +++ b/lib_com/cnst.h @@ -537,7 +537,6 @@ enum IND_SHB_RES_GS2, IND_SHB_RES_GS3, IND_SHB_RES_GS4, - IND_SHB_RES_GS5, IND_SHB_VF, #else IND_SHB_VF = IND_SHB_RES_GS + 5, -- GitLab From 1606acd85f7093197ad262ecf7c7eff0b12c560b Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 16 Apr 2025 16:19:37 +0200 Subject: [PATCH 574/698] port bitstream debugging functionality from bitstream_debugging_float --- apps/encoder.c | 6 +- lib_com/bitstream.c | 2022 +++++++++++++++++++++- lib_com/options.h | 4 + lib_com/prot_fx.h | 28 +- lib_enc/ivas_corecoder_enc_reconfig_fx.c | 13 + lib_enc/ivas_init_enc_fx.c | 10 + lib_enc/ivas_qmetadata_enc_fx.c | 15 + lib_enc/ivas_spar_md_enc_fx.c | 6 +- lib_enc/lib_enc.c | 18 +- lib_enc/lib_enc.h | 8 + lib_enc/prot_fx_enc.h | 4 + lib_enc/stat_enc.h | 3 + 12 files changed, 2124 insertions(+), 13 deletions(-) diff --git a/apps/encoder.c b/apps/encoder.c index af9554589..1dc6c56ed 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -758,7 +758,11 @@ int main( } /* *** Encode one frame *** */ - if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits +#ifdef BITSTREAM_ANALYSIS + , frame +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nencodeFrame failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); goto cleanup; diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index 385000139..08bf87ee2 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -48,7 +48,9 @@ #include "wmc_auto.h" #include "ivas_prot_fx.h" #include "prot_fx_enc.h" - +#ifdef BITSTREAM_ANALYSIS +#include +#endif #define STEP_MAX_NUM_INDICES 100 /* increase the maximum number of allowed indices in the list by this amount */ @@ -199,6 +201,9 @@ ivas_error ind_list_realloc( { new_ind_list[i].id = old_ind_list[i].id; new_ind_list[i].value = old_ind_list[i].value; +#ifdef BITSTREAM_ANALYSIS + strncpy(new_ind_list[i].function_name, old_ind_list[i].function_name, 100); +#endif move16(); move16(); } @@ -210,6 +215,9 @@ ivas_error ind_list_realloc( FOR( ; i < max_num_indices; i++ ) { new_ind_list[i].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf(new_ind_list[i].function_name, "RESET in ind_list_realloc"); +#endif move16(); } @@ -800,6 +808,9 @@ void move_indices( new_ind_list[i].value = old_ind_list[i].value; new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy(new_ind_list[i].function_name, old_ind_list[i].function_name, 100); +#endif old_ind_list[i].nb_bits = -1; } } @@ -810,8 +821,14 @@ void move_indices( new_ind_list[i].id = old_ind_list[i].id; new_ind_list[i].value = old_ind_list[i].value; new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy(new_ind_list[i].function_name, old_ind_list[i].function_name, 100); +#endif old_ind_list[i].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf(old_ind_list[i].function_name, "RESET in move_indices"); +#endif } } @@ -880,6 +897,1882 @@ ivas_error check_ind_list_limits( return error; } +#ifdef BITSTREAM_ANALYSIS +const char *named_indices_table[] = +{ +"IND_IVAS_FORMAT", +"IND_SMODE_OMASA", +"IND_SMODE", +"IND_SID_TYPE", +"IND_BWIDTH", +"IND_CORE", +"IND_PPP_NELP_MODE", +"IND_ACELP_16KHZ", +"IND_ACELP_SIGNALLING", +"IND_SHARP_FLAG", +"IND_MDCT_CORE", +"IND_TCX_CORE", +"IND_BWE_FLAG", +"IND_HQ_SWITCHING_FLG", +"IND_LAST_L_FRAME", +"IND_VAD_FLAG", +"IND_HQ_BWIDTH", +"IND_TC_SUBFR", +"IND_TC_SUBFR", +"IND_TC_SUBFR", +"IND_TC_SUBFR", +"IND_GSC_IVAS_SP", +"IND_LSF_PREDICTOR_SELECT_BIT", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_LSF", +"IND_MID_FRAME_LSF_INDEX", +"IND_ISF_0_0", +"IND_ISF_0_1", +"IND_ISF_0_2", +"IND_ISF_0_3", +"IND_ISF_0_4", +"IND_ISF_1_0", +"IND_ISF_1_1", +"IND_ISF_1_2", +"IND_ISF_1_3", +"IND_ISF_1_4", +"IND_IC_LSF_PRED", +"IND_GSC_ATTACK", +"IND_GSC_SWB_SPEECH", +"IND_NOISE_LEVEL", +"IND_HF_NOISE", +"IND_PIT_CONTR_IDX", +"IND_FEC_CLAS", +"IND_FEC_ENR", +"IND_FEC_POS", +"IND_ES_PRED", +"IND_HARM_FLAG_ACELP", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"IND_ALG_CDBK_4T64_2_24KBIT", +"TAG_ALG_CDBK_4T64_24KBIT_END", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"IND_HF_GAIN_MODIFICATION", +"TAG_ACELP_SUBFR_LOOP_END", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_MEAN_GAIN2", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_TMP", +"IND_Y_GAIN_HF", +"IND_HQ_VOICING_FLAG", +"IND_HQ_SWB_CLAS", +"IND_NF_IDX", +"IND_LC_MODE", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_YNRM", +"IND_SWB_FENV_HQ", +"IND_SWB_FENV_HQ", +"IND_SWB_FENV_HQ", +"IND_SWB_FENV_HQ", +"IND_SWB_FENV_HQ", +"IND_FB_FENV_HQ", +"IND_FB_FENV_HQ", +"IND_FB_FENV_HQ", +"IND_FB_FENV_HQ", +"IND_FB_FENV_HQ", +"IND_DELTA_ENV_HQ", +"IND_HVQ_BWE_NL", +"IND_HVQ_BWE_NL", +"IND_NUM_PEAKS", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_POS_IDX", +"IND_FLAGN", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_PG_IDX", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_PEAKS", +"IND_HVQ_NF_GAIN", +"IND_HVQ_NF_GAIN", +"IND_HQ2_SWB_CLAS", +"IND_HQ2_DENG_MODE", +"IND_HQ2_DENG_8SMODE", +"IND_HQ2_DENG_8SMODE_N0", +"IND_HQ2_DENG_8SMODE_N1", +"IND_HQ2_DENG_8SPOS", +"IND_HQ2_DENG_8SDEPTH", +"IND_HQ2_DENG_HMODE", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_DIFF_ENERGY", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_P2A_FLAGS", +"IND_HQ2_LAST_BA_MAX_BAND", +"IND_HQ2_LAST_BA_MAX_BAND", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_START", +"IND_RC_END", +"IND_HVQ_PVQ_GAIN", +"IND_HVQ_PVQ_GAIN", +"IND_HVQ_PVQ_GAIN", +"IND_HVQ_PVQ_GAIN", +"IND_HVQ_PVQ_GAIN", +"IND_HVQ_PVQ_GAIN", +"IND_HVQ_PVQ_GAIN", +"IND_HVQ_PVQ_GAIN", +"IND_NOISINESS", +"IND_ENERGY", +"IND_CNG_HO", +"IND_SID_BW", +"IND_CNG_ENV1", +"IND_WB_FENV", +"IND_WB_CLASS", +"IND_IG1", +"IND_IG2A", +"IND_IG2B", +"IND_NELP_FID", +"IND_DELTALAG", +"IND_POWER", +"IND_AMP0", +"IND_AMP1", +"IND_GLOBAL_ALIGNMENT", +"IND_PVQ_FINE_GAIN", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_UV_FLAG", +"IND_SHB_SUBGAIN", +"IND_SHB_FRAMEGAIN", +"IND_STEREO_ICBWE_MSFLAG", +"IND_SHB_ENER_SF", +"IND_SHB_RES_GS", +"IND_SHB_RES_GS", +"IND_SHB_RES_GS", +"IND_SHB_RES_GS", +"IND_SHB_RES_GS", +"IND_SHB_VF", +"IND_SHB_LSF", +"IND_SHB_LSF", +"IND_SHB_LSF", +"IND_SHB_LSF", +"IND_SHB_LSF", +"IND_SHB_MIRROR", +"IND_SHB_GRID", +"IND_SWB_CLASS", +"IND_SWB_TENV", +"IND_SWB_TENV", +"IND_SWB_TENV", +"IND_SWB_TENV", +"IND_SWB_FENV", +"IND_SWB_FENV", +"IND_SWB_FENV", +"IND_SWB_FENV", +"IND_SHB_CNG_GAIN", +"IND_DITHERING", +"IND_FB_SLOPE", +"IND_HQ2_SPT_SHORTEN", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_TCQ", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_SUBBAND_GAIN", +"IND_HQ2_DUMMY", +"IND_LAGINDICES", +"IND_NOISEG", +"IND_AUDIO_GAIN", +"IND_AUDIO_DELAY", +"IND_AUDIO_DELAY", +"IND_AUDIO_DELAY", +"IND_AUDIO_DELAY", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"IND_NQ2", +"TAG_HR_BWE_LOOP_END", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_CELP_SUBFRAME", +"IND_CORE_SWITCHING_AUDIO_DELAY", +"IND_CORE_SWITCHING_AUDIO_GAIN", +"IND_STEREO_ICBWE_REF", +"IND_STEREO_ICBWE_SP", +"IND_STEREO_ICBWE_GS", +"IND_STEREO_REFCHAN", +"IND_STEREO_CORRSTATS", +"IND_STEREO_GD", +"IND_STEREO_LRTD_FLAG", +"IND_STEREO_LPC_REUSE", +"IND_STEREO_TD_ALPHA", +"IND_STEREO_2ND_CODER_T", +"IND_UNUSED" +}; +#endif + /*-------------------------------------------------------------------* * push_indice() @@ -925,6 +2818,9 @@ ivas_error push_indice( hBstr->ind_list[j].id = hBstr->ind_list[j - 1].id; hBstr->ind_list[j].nb_bits = hBstr->ind_list[j - 1].nb_bits; hBstr->ind_list[j].value = hBstr->ind_list[j - 1].value; +#ifdef BITSTREAM_ANALYSIS + strncpy(hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100); +#endif move16(); move16(); move16(); @@ -936,6 +2832,9 @@ ivas_error push_indice( hBstr->ind_list[i].id = id; hBstr->ind_list[i].value = value; hBstr->ind_list[i].nb_bits = nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy(hBstr->ind_list[i].function_name, named_indices_table[id], 100); +#endif move16(); move16(); move16(); @@ -954,7 +2853,10 @@ ivas_error push_indice( * * Push a new indice into the buffer at the next position *-------------------------------------------------------------------*/ -ivas_error push_next_indice( +ivas_error push_next_indice_( +#ifdef BITSTREAM_ANALYSIS + const char *caller, +#endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ UWord16 value, /* i : value of the quantized indice */ Word16 nb_bits /* i : number of bits used to quantize the indice */ @@ -992,6 +2894,10 @@ ivas_error push_next_indice( move16(); move16(); +#ifdef BITSTREAM_ANALYSIS + strncpy(hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100); +#endif + /* updates */ hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 ); hBstr->nb_bits_tot = add( hBstr->nb_bits_tot, nb_bits ); @@ -1005,7 +2911,10 @@ ivas_error push_next_indice( * push_next_bits() * Push a bit buffer into the buffer at the next position *-------------------------------------------------------------------*/ -ivas_error push_next_bits( +ivas_error push_next_bits_( +#ifdef BITSTREAM_ANALYSIS + const char *caller, +#endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */ const Word16 nb_bits /* i : number of bits to pack */ @@ -1049,6 +2958,9 @@ ivas_error push_next_bits( ptr->value = code; ptr->nb_bits = 16; ptr->id = prev_id; +#ifdef BITSTREAM_ANALYSIS + strncpy(ptr->function_name, caller, 100); +#endif hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 ); move16(); move16(); @@ -1070,6 +2982,9 @@ ivas_error push_next_bits( ptr->value = bits[i]; ptr->nb_bits = 1; ptr->id = prev_id; +#ifdef BITSTREAM_ANALYSIS + strncpy(ptr->function_name, caller, 100); +#endif hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 ); move16(); move16(); @@ -1144,6 +3059,9 @@ UWord16 delete_indice( hBstr->ind_list[j].id = hBstr->ind_list[i].id; hBstr->ind_list[j].value = hBstr->ind_list[i].value; hBstr->ind_list[j].nb_bits = hBstr->ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy(hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100); +#endif } j++; @@ -1155,6 +3073,9 @@ UWord16 delete_indice( { /* reset the shifted indices at the end of the list */ hBstr->ind_list[j].nb_bits = -1; +#ifdef BITSTREAM_ANALYSIS + sprintf(hBstr->ind_list[j].function_name, "RESET in delete_indice"); +#endif } return i - j; @@ -1391,6 +3312,10 @@ static ivas_error write_indices_element_fx( UWord16 **pt_stream, /* i : pointer to bitstream buffer */ const Word16 is_SCE, /* i : flag to distingusih SCE and CPE */ const Word16 element_id /* i : id of the SCE or CPE */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ) { Word16 ch; @@ -1497,6 +3422,79 @@ static ivas_error write_indices_element_fx( } } +#ifdef BITSTREAM_ANALYSIS + if (is_SCE) /* EVS and SCE */ + { + static FILE *f1 = 0; + + if (f1 == 0) + f1 = fopen("bitstream_text", "w"); + + for (int16_t i = 0; i < sts[0]->hBstr->nb_ind_tot; i++) + { + Indice *ind_list = sts[0]->hBstr->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf(f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value); + + } + + if (st_ivas->hSCE[element_id]->hMetaData != NULL) + { + for (int16_t i = 0; i < st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot; i++) + { + Indice *ind_list = st_ivas->hSCE[element_id]->hMetaData->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf(f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value); + + } + } + + } + else + { + static FILE *f1 = 0; + + if (f1 == 0) + f1 = fopen("bitstream_text", "w"); + + + for (n = 0; n < n_channels; n++) + { + for (int16_t i = 0; i < sts[n]->hBstr->nb_ind_tot; i++) + { + Indice *ind_list = sts[n]->hBstr->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf(f1, "%d %d %d %d %s %d %d\n", frame, element_id, n, i, function_name, nb_bits, value); + + } + + } + + if (st_ivas->hCPE[element_id]->hMetaData != NULL) + { + for (int16_t i = 0; i < st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot; i++) + { + Indice *ind_list = st_ivas->hCPE[element_id]->hMetaData->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; + + fprintf(f1, "%d %d %d %d %s %d %d\n", frame, element_id, -1, i, function_name, nb_bits, value); + + } + } + } +#endif + /*----------------------------------------------------------------* * Clearing of indices * Reset index pointers @@ -1540,6 +3538,10 @@ ivas_error write_indices_ivas_fx( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ UWord16 *bit_stream, /* i/o: output bitstream */ UWord16 *num_bits /* i : number of indices written to output */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ) { Word16 i, n; @@ -1563,12 +3565,22 @@ ivas_error write_indices_ivas_fx( FOR( n = 0; n < st_ivas->nSCE; n++ ) { - write_indices_element_fx( st_ivas, &pt_stream, 1, n ); + write_indices_element_fx( st_ivas, &pt_stream, 1, n +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ); } FOR( n = 0; n < st_ivas->nCPE; n++ ) { - write_indices_element_fx( st_ivas, &pt_stream, 0, n ); + write_indices_element_fx( st_ivas, &pt_stream, 0, n +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ); } *num_bits = (UWord16) ( pt_stream - bit_stream ); diff --git a/lib_com/options.h b/lib_com/options.h index 75323cf13..d55309bc9 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -98,4 +98,8 @@ #define FIX_1486_IND_SHB_RES /* VA: Fix for issue 1486: align the usage of IND_SHB_RES_GS indices with float code */ #define TEST_HR +#define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions, ACELP low-band decoder */ + +/*#define BITSTREAM_ANALYSIS*/ + #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 498be3137..f1fbf8fc0 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10661,13 +10661,27 @@ ivas_error config_acelp1_fx( const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */ ); -ivas_error push_next_indice( +#ifdef BITSTREAM_ANALYSIS +#define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ ) +#define push_next_bits( ... ) push_next_bits_( __func__, __VA_ARGS__ ); +#else +#define push_next_indice( ... ) push_next_indice_( __VA_ARGS__ ) +#define push_next_bits( ... ) push_next_bits_( __VA_ARGS__ ); +#endif + +ivas_error push_next_indice_( +#ifdef BITSTREAM_ANALYSIS + const char *caller, +#endif BSTR_ENC_HANDLE hBstr, UWord16 value, /* i : value of the quantized indice */ Word16 nb_bits /* i : number of bits used to quantize the indice */ ); -ivas_error push_next_bits( +ivas_error push_next_bits_( +#ifdef BITSTREAM_ANALYSIS + const char *caller, +#endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */ const Word16 nb_bits /* i : number of bits to pack */ @@ -10989,13 +11003,19 @@ ivas_error push_indice( Word16 nb_bits /* i : number of bits used to quantize the indice */ ); -ivas_error push_next_indice( +ivas_error push_next_indice_( +#ifdef BITSTREAM_ANALYSIS + const char *caller, +#endif BSTR_ENC_HANDLE hBstr, UWord16 value, /* i : value of the quantized indice */ Word16 nb_bits /* i : number of bits used to quantize the indice */ ); -ivas_error push_next_bits( +ivas_error push_next_bits_( +#ifdef BITSTREAM_ANALYSIS + const char *caller, +#endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */ const Word16 nb_bits /* i : number of bits to pack */ diff --git a/lib_enc/ivas_corecoder_enc_reconfig_fx.c b/lib_enc/ivas_corecoder_enc_reconfig_fx.c index a8698bacc..7e7db6e0e 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig_fx.c +++ b/lib_enc/ivas_corecoder_enc_reconfig_fx.c @@ -38,6 +38,10 @@ #include "wmc_auto.h" #include "ivas_prot_fx.h" #include "math.h" +#include "wmc_auto.h" +#ifdef BITSTREAM_ANALYSIS +#include +#endif /*-------------------------------------------------------------------* * ivas_corecoder_enc_reconfig() * @@ -192,6 +196,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx( move16(); temp_ind_list[i].nb_bits = hBstr->ind_list[i].nb_bits; /* Q0 */ move16(); +#ifdef BITSTREAM_ANALYSIS + strncpy(temp_ind_list[i].function_name, hBstr->ind_list[i].function_name, 100); +#endif hBstr->ind_list[i].nb_bits = -1; /* Q0 */ move16(); } @@ -545,6 +552,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx( move16(); st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */ move16(); +#ifdef BITSTREAM_ANALYSIS + strncpy(st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100); +#endif } nb_bits = add( nb_bits, temp_ind_list[i].nb_bits ); /* Q0 */ @@ -569,6 +579,9 @@ ivas_error ivas_corecoder_enc_reconfig_fx( move16(); st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */ move16(); +#ifdef BITSTREAM_ANALYSIS + strncpy(st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100); +#endif } nb_bits = add( nb_bits, temp_ind_list[i].nb_bits ); /* Q0 */ diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c index 04b99f039..ce87b0571 100644 --- a/lib_enc/ivas_init_enc_fx.c +++ b/lib_enc/ivas_init_enc_fx.c @@ -41,6 +41,9 @@ #include "wmc_auto.h" #include "ivas_prot_fx.h" #include "prot_fx_enc.h" +#ifdef BITSTREAM_ANALYSIS +#include +#endif /*-------------------------------------------------------------------* @@ -1175,6 +1178,13 @@ ivas_error ivas_init_encoder_fx( move16(); } +#ifdef BITSTERAM_ANALYSIS + for (i = 0; i < st_ivas->ivas_max_num_indices; i++) + { + memset(st_ivas->ind_list[i].function_name, 'A', 100 * sizeof(char)); + } +#endif + /* set the maximum allowed number of metadata indices in the list */ st_ivas->ivas_max_num_indices_metadata = get_ivas_max_num_indices_metadata_fx( st_ivas->hEncoderConfig->ivas_format, st_ivas->hEncoderConfig->ivas_total_brate ); /* Q0 */ move16(); diff --git a/lib_enc/ivas_qmetadata_enc_fx.c b/lib_enc/ivas_qmetadata_enc_fx.c index 744d2c067..15e0db269 100644 --- a/lib_enc/ivas_qmetadata_enc_fx.c +++ b/lib_enc/ivas_qmetadata_enc_fx.c @@ -43,6 +43,9 @@ #include "basop_util.h" #include "ivas_rom_com_fx.h" +#ifdef BITSTREAM_ANALYSIS +#include +#endif /*-----------------------------------------------------------------------* * Local function prototypes @@ -1192,14 +1195,23 @@ void reset_metadata_spatial_fx( { hMetaData->ind_list[i].nb_bits = -1; move16(); +#ifdef BITSTREAM_ANALYSIS + sprintf(hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial"); +#endif } FOR( ( j = 0, i = next_ind_sid ); i < last_ind_sid; ( i++, j++ ) ) { hMetaData->ind_list[j].value = hMetaData->ind_list[i].value; hMetaData->ind_list[j].nb_bits = hMetaData->ind_list[i].nb_bits; +#ifdef BITSTREAM_ANALYSIS + strncpy(hMetaData->ind_list[j].function_name, hMetaData->ind_list[i].function_name, 100); +#endif hMetaData->nb_bits_tot = add( hMetaData->nb_bits_tot, hMetaData->ind_list[j].nb_bits ); hMetaData->ind_list[i].nb_bits = -1; +#ifdef BISTREAM_ANALYSIS + sprintf(hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial"); +#endif move16(); move16(); move16(); @@ -2007,6 +2019,9 @@ void restore_metadata_buffer_fx( { hMetaData->ind_list[i].nb_bits = -1; move16(); +#ifdef BITSTREAM_ANALYSIS + sprintf(hMetaData->ind_list[i].function_name, "RESET in restore_metadata_buffer"); +#endif } hMetaData->nb_bits_tot = bit_pos_start; move16(); diff --git a/lib_enc/ivas_spar_md_enc_fx.c b/lib_enc/ivas_spar_md_enc_fx.c index 9c4fcc937..d179b1263 100644 --- a/lib_enc/ivas_spar_md_enc_fx.c +++ b/lib_enc/ivas_spar_md_enc_fx.c @@ -439,7 +439,11 @@ static void write_metadata_buffer_fx( FOR( i = 0; i < hMetaData_tmp->nb_ind_tot; i++ ) { - push_next_indice( hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); +#ifdef BITSTREAM_ANALYSIS + push_next_indice_(hMetaData_tmp->ind_list[i].function_name, hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits); +#else + push_next_indice(hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits); +#endif } return; diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index f90b2d8ec..dd4097fff 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1660,6 +1660,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() Q0*/ UWord16 *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME Q0*/ UWord16 *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value Q0*/ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ) { Encoder_Struct *st_ivas; @@ -1783,7 +1787,12 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( st_ivas->ind_list[i].nb_bits = -1; move16(); } - +#ifdef BITSTREAM_ANALYSIS + for (i = 0; i < st_ivas->ivas_max_num_indices; i++) + { + memset(st_ivas->ind_list[i].function_name, 'A', 100 * sizeof(char)); + } +#endif /* de-allocate old buffer of metadata indices */ IF( st_ivas->ind_list_metadata != NULL ) { @@ -1923,7 +1932,12 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( ELSE #endif { - write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits ); + write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits +#ifdef BITSTREAM_ANALYSIS + , + frame +#endif + ); } /* Reset switching flag before next call - can be set to "true" by some setters */ hIvasEnc->switchingActive = false; diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index 8cf6be1cd..51a6e5821 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -302,6 +302,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ UWord16 *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME */ UWord16 *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ); /*! r: error code */ @@ -311,6 +315,10 @@ ivas_error IVAS_ENC_EncodeFrameToCompact( const Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ UWord8 *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */ UWord16 *numOutBits /* o : number of bits written to output bitstream */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ); /* Setter functions - apply changes to encoder configuration */ diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index d3528370f..b1b14afc6 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -4808,5 +4808,9 @@ ivas_error write_indices_ivas_fx( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ UWord16 *bit_stream, /* i/o: output bitstream */ UWord16 *num_bits /* i : number of indices written to output */ +#ifdef BITSTREAM_ANALYSIS + , + int32_t frame +#endif ); #endif diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index caca3173e..3a4acc101 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -54,6 +54,9 @@ typedef struct Word16 id; /* id of the indice */ UWord16 value; /* value of the quantized indice */ Word16 nb_bits; /* number of bits used for the quantization of the indice */ +#ifdef BITSTREAM_ANALYSIS + char function_name[100]; +#endif } Indice, *INDICE_HANDLE; typedef struct -- GitLab From a4e7e7f9ea3e1638e71e50f485b3c3b0b9beee0c Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 16 Apr 2025 16:23:30 +0200 Subject: [PATCH 575/698] fix formatting --- apps/encoder.c | 7 +- lib_com/bitstream.c | 3907 +++++++++++----------- lib_com/prot_fx.h | 8 +- lib_enc/ivas_corecoder_enc_reconfig_fx.c | 6 +- lib_enc/ivas_init_enc_fx.c | 8 +- lib_enc/ivas_qmetadata_enc_fx.c | 8 +- lib_enc/ivas_spar_md_enc_fx.c | 4 +- lib_enc/lib_enc.c | 20 +- lib_enc/prot_fx_enc.h | 4 +- lib_enc/stat_enc.h | 2 +- 10 files changed, 1984 insertions(+), 1990 deletions(-) diff --git a/apps/encoder.c b/apps/encoder.c index 1dc6c56ed..a98c9f5f2 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -758,11 +758,12 @@ int main( } /* *** Encode one frame *** */ - if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits + if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits #ifdef BITSTREAM_ANALYSIS - , frame + , + frame #endif - ) ) != IVAS_ERR_OK ) + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nencodeFrame failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); goto cleanup; diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index 08bf87ee2..b4e62566d 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -202,7 +202,7 @@ ivas_error ind_list_realloc( new_ind_list[i].id = old_ind_list[i].id; new_ind_list[i].value = old_ind_list[i].value; #ifdef BITSTREAM_ANALYSIS - strncpy(new_ind_list[i].function_name, old_ind_list[i].function_name, 100); + strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); #endif move16(); move16(); @@ -216,7 +216,7 @@ ivas_error ind_list_realloc( { new_ind_list[i].nb_bits = -1; #ifdef BITSTREAM_ANALYSIS - sprintf(new_ind_list[i].function_name, "RESET in ind_list_realloc"); + sprintf( new_ind_list[i].function_name, "RESET in ind_list_realloc" ); #endif move16(); } @@ -809,7 +809,7 @@ void move_indices( new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; #ifdef BITSTREAM_ANALYSIS - strncpy(new_ind_list[i].function_name, old_ind_list[i].function_name, 100); + strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); #endif old_ind_list[i].nb_bits = -1; } @@ -822,12 +822,12 @@ void move_indices( new_ind_list[i].value = old_ind_list[i].value; new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; #ifdef BITSTREAM_ANALYSIS - strncpy(new_ind_list[i].function_name, old_ind_list[i].function_name, 100); + strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); #endif old_ind_list[i].nb_bits = -1; #ifdef BITSTREAM_ANALYSIS - sprintf(old_ind_list[i].function_name, "RESET in move_indices"); + sprintf( old_ind_list[i].function_name, "RESET in move_indices" ); #endif } } @@ -898,1878 +898,1877 @@ ivas_error check_ind_list_limits( } #ifdef BITSTREAM_ANALYSIS -const char *named_indices_table[] = -{ -"IND_IVAS_FORMAT", -"IND_SMODE_OMASA", -"IND_SMODE", -"IND_SID_TYPE", -"IND_BWIDTH", -"IND_CORE", -"IND_PPP_NELP_MODE", -"IND_ACELP_16KHZ", -"IND_ACELP_SIGNALLING", -"IND_SHARP_FLAG", -"IND_MDCT_CORE", -"IND_TCX_CORE", -"IND_BWE_FLAG", -"IND_HQ_SWITCHING_FLG", -"IND_LAST_L_FRAME", -"IND_VAD_FLAG", -"IND_HQ_BWIDTH", -"IND_TC_SUBFR", -"IND_TC_SUBFR", -"IND_TC_SUBFR", -"IND_TC_SUBFR", -"IND_GSC_IVAS_SP", -"IND_LSF_PREDICTOR_SELECT_BIT", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_LSF", -"IND_MID_FRAME_LSF_INDEX", -"IND_ISF_0_0", -"IND_ISF_0_1", -"IND_ISF_0_2", -"IND_ISF_0_3", -"IND_ISF_0_4", -"IND_ISF_1_0", -"IND_ISF_1_1", -"IND_ISF_1_2", -"IND_ISF_1_3", -"IND_ISF_1_4", -"IND_IC_LSF_PRED", -"IND_GSC_ATTACK", -"IND_GSC_SWB_SPEECH", -"IND_NOISE_LEVEL", -"IND_HF_NOISE", -"IND_PIT_CONTR_IDX", -"IND_FEC_CLAS", -"IND_FEC_ENR", -"IND_FEC_POS", -"IND_ES_PRED", -"IND_HARM_FLAG_ACELP", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"IND_ALG_CDBK_4T64_2_24KBIT", -"TAG_ALG_CDBK_4T64_24KBIT_END", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"IND_HF_GAIN_MODIFICATION", -"TAG_ACELP_SUBFR_LOOP_END", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_MEAN_GAIN2", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_TMP", -"IND_Y_GAIN_HF", -"IND_HQ_VOICING_FLAG", -"IND_HQ_SWB_CLAS", -"IND_NF_IDX", -"IND_LC_MODE", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_YNRM", -"IND_SWB_FENV_HQ", -"IND_SWB_FENV_HQ", -"IND_SWB_FENV_HQ", -"IND_SWB_FENV_HQ", -"IND_SWB_FENV_HQ", -"IND_FB_FENV_HQ", -"IND_FB_FENV_HQ", -"IND_FB_FENV_HQ", -"IND_FB_FENV_HQ", -"IND_FB_FENV_HQ", -"IND_DELTA_ENV_HQ", -"IND_HVQ_BWE_NL", -"IND_HVQ_BWE_NL", -"IND_NUM_PEAKS", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_POS_IDX", -"IND_FLAGN", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_PG_IDX", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_PEAKS", -"IND_HVQ_NF_GAIN", -"IND_HVQ_NF_GAIN", -"IND_HQ2_SWB_CLAS", -"IND_HQ2_DENG_MODE", -"IND_HQ2_DENG_8SMODE", -"IND_HQ2_DENG_8SMODE_N0", -"IND_HQ2_DENG_8SMODE_N1", -"IND_HQ2_DENG_8SPOS", -"IND_HQ2_DENG_8SDEPTH", -"IND_HQ2_DENG_HMODE", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_DIFF_ENERGY", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_P2A_FLAGS", -"IND_HQ2_LAST_BA_MAX_BAND", -"IND_HQ2_LAST_BA_MAX_BAND", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_START", -"IND_RC_END", -"IND_HVQ_PVQ_GAIN", -"IND_HVQ_PVQ_GAIN", -"IND_HVQ_PVQ_GAIN", -"IND_HVQ_PVQ_GAIN", -"IND_HVQ_PVQ_GAIN", -"IND_HVQ_PVQ_GAIN", -"IND_HVQ_PVQ_GAIN", -"IND_HVQ_PVQ_GAIN", -"IND_NOISINESS", -"IND_ENERGY", -"IND_CNG_HO", -"IND_SID_BW", -"IND_CNG_ENV1", -"IND_WB_FENV", -"IND_WB_CLASS", -"IND_IG1", -"IND_IG2A", -"IND_IG2B", -"IND_NELP_FID", -"IND_DELTALAG", -"IND_POWER", -"IND_AMP0", -"IND_AMP1", -"IND_GLOBAL_ALIGNMENT", -"IND_PVQ_FINE_GAIN", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_UV_FLAG", -"IND_SHB_SUBGAIN", -"IND_SHB_FRAMEGAIN", -"IND_STEREO_ICBWE_MSFLAG", -"IND_SHB_ENER_SF", -"IND_SHB_RES_GS", -"IND_SHB_RES_GS", -"IND_SHB_RES_GS", -"IND_SHB_RES_GS", -"IND_SHB_RES_GS", -"IND_SHB_VF", -"IND_SHB_LSF", -"IND_SHB_LSF", -"IND_SHB_LSF", -"IND_SHB_LSF", -"IND_SHB_LSF", -"IND_SHB_MIRROR", -"IND_SHB_GRID", -"IND_SWB_CLASS", -"IND_SWB_TENV", -"IND_SWB_TENV", -"IND_SWB_TENV", -"IND_SWB_TENV", -"IND_SWB_FENV", -"IND_SWB_FENV", -"IND_SWB_FENV", -"IND_SWB_FENV", -"IND_SHB_CNG_GAIN", -"IND_DITHERING", -"IND_FB_SLOPE", -"IND_HQ2_SPT_SHORTEN", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_TCQ", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_SUBBAND_GAIN", -"IND_HQ2_DUMMY", -"IND_LAGINDICES", -"IND_NOISEG", -"IND_AUDIO_GAIN", -"IND_AUDIO_DELAY", -"IND_AUDIO_DELAY", -"IND_AUDIO_DELAY", -"IND_AUDIO_DELAY", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"IND_NQ2", -"TAG_HR_BWE_LOOP_END", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_CELP_SUBFRAME", -"IND_CORE_SWITCHING_AUDIO_DELAY", -"IND_CORE_SWITCHING_AUDIO_GAIN", -"IND_STEREO_ICBWE_REF", -"IND_STEREO_ICBWE_SP", -"IND_STEREO_ICBWE_GS", -"IND_STEREO_REFCHAN", -"IND_STEREO_CORRSTATS", -"IND_STEREO_GD", -"IND_STEREO_LRTD_FLAG", -"IND_STEREO_LPC_REUSE", -"IND_STEREO_TD_ALPHA", -"IND_STEREO_2ND_CODER_T", -"IND_UNUSED" +const char *named_indices_table[] = { + "IND_IVAS_FORMAT", + "IND_SMODE_OMASA", + "IND_SMODE", + "IND_SID_TYPE", + "IND_BWIDTH", + "IND_CORE", + "IND_PPP_NELP_MODE", + "IND_ACELP_16KHZ", + "IND_ACELP_SIGNALLING", + "IND_SHARP_FLAG", + "IND_MDCT_CORE", + "IND_TCX_CORE", + "IND_BWE_FLAG", + "IND_HQ_SWITCHING_FLG", + "IND_LAST_L_FRAME", + "IND_VAD_FLAG", + "IND_HQ_BWIDTH", + "IND_TC_SUBFR", + "IND_TC_SUBFR", + "IND_TC_SUBFR", + "IND_TC_SUBFR", + "IND_GSC_IVAS_SP", + "IND_LSF_PREDICTOR_SELECT_BIT", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_LSF", + "IND_MID_FRAME_LSF_INDEX", + "IND_ISF_0_0", + "IND_ISF_0_1", + "IND_ISF_0_2", + "IND_ISF_0_3", + "IND_ISF_0_4", + "IND_ISF_1_0", + "IND_ISF_1_1", + "IND_ISF_1_2", + "IND_ISF_1_3", + "IND_ISF_1_4", + "IND_IC_LSF_PRED", + "IND_GSC_ATTACK", + "IND_GSC_SWB_SPEECH", + "IND_NOISE_LEVEL", + "IND_HF_NOISE", + "IND_PIT_CONTR_IDX", + "IND_FEC_CLAS", + "IND_FEC_ENR", + "IND_FEC_POS", + "IND_ES_PRED", + "IND_HARM_FLAG_ACELP", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "IND_ALG_CDBK_4T64_2_24KBIT", + "TAG_ALG_CDBK_4T64_24KBIT_END", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "IND_HF_GAIN_MODIFICATION", + "TAG_ACELP_SUBFR_LOOP_END", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_MEAN_GAIN2", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_TMP", + "IND_Y_GAIN_HF", + "IND_HQ_VOICING_FLAG", + "IND_HQ_SWB_CLAS", + "IND_NF_IDX", + "IND_LC_MODE", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_YNRM", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_SWB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_FB_FENV_HQ", + "IND_DELTA_ENV_HQ", + "IND_HVQ_BWE_NL", + "IND_HVQ_BWE_NL", + "IND_NUM_PEAKS", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_POS_IDX", + "IND_FLAGN", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_PG_IDX", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_PEAKS", + "IND_HVQ_NF_GAIN", + "IND_HVQ_NF_GAIN", + "IND_HQ2_SWB_CLAS", + "IND_HQ2_DENG_MODE", + "IND_HQ2_DENG_8SMODE", + "IND_HQ2_DENG_8SMODE_N0", + "IND_HQ2_DENG_8SMODE_N1", + "IND_HQ2_DENG_8SPOS", + "IND_HQ2_DENG_8SDEPTH", + "IND_HQ2_DENG_HMODE", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_DIFF_ENERGY", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_P2A_FLAGS", + "IND_HQ2_LAST_BA_MAX_BAND", + "IND_HQ2_LAST_BA_MAX_BAND", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_START", + "IND_RC_END", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_HVQ_PVQ_GAIN", + "IND_NOISINESS", + "IND_ENERGY", + "IND_CNG_HO", + "IND_SID_BW", + "IND_CNG_ENV1", + "IND_WB_FENV", + "IND_WB_CLASS", + "IND_IG1", + "IND_IG2A", + "IND_IG2B", + "IND_NELP_FID", + "IND_DELTALAG", + "IND_POWER", + "IND_AMP0", + "IND_AMP1", + "IND_GLOBAL_ALIGNMENT", + "IND_PVQ_FINE_GAIN", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_UV_FLAG", + "IND_SHB_SUBGAIN", + "IND_SHB_FRAMEGAIN", + "IND_STEREO_ICBWE_MSFLAG", + "IND_SHB_ENER_SF", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_RES_GS", + "IND_SHB_VF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_LSF", + "IND_SHB_MIRROR", + "IND_SHB_GRID", + "IND_SWB_CLASS", + "IND_SWB_TENV", + "IND_SWB_TENV", + "IND_SWB_TENV", + "IND_SWB_TENV", + "IND_SWB_FENV", + "IND_SWB_FENV", + "IND_SWB_FENV", + "IND_SWB_FENV", + "IND_SHB_CNG_GAIN", + "IND_DITHERING", + "IND_FB_SLOPE", + "IND_HQ2_SPT_SHORTEN", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_TCQ", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_SUBBAND_GAIN", + "IND_HQ2_DUMMY", + "IND_LAGINDICES", + "IND_NOISEG", + "IND_AUDIO_GAIN", + "IND_AUDIO_DELAY", + "IND_AUDIO_DELAY", + "IND_AUDIO_DELAY", + "IND_AUDIO_DELAY", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "IND_NQ2", + "TAG_HR_BWE_LOOP_END", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_CELP_SUBFRAME", + "IND_CORE_SWITCHING_AUDIO_DELAY", + "IND_CORE_SWITCHING_AUDIO_GAIN", + "IND_STEREO_ICBWE_REF", + "IND_STEREO_ICBWE_SP", + "IND_STEREO_ICBWE_GS", + "IND_STEREO_REFCHAN", + "IND_STEREO_CORRSTATS", + "IND_STEREO_GD", + "IND_STEREO_LRTD_FLAG", + "IND_STEREO_LPC_REUSE", + "IND_STEREO_TD_ALPHA", + "IND_STEREO_2ND_CODER_T", + "IND_UNUSED" }; #endif @@ -2819,7 +2818,7 @@ ivas_error push_indice( hBstr->ind_list[j].nb_bits = hBstr->ind_list[j - 1].nb_bits; hBstr->ind_list[j].value = hBstr->ind_list[j - 1].value; #ifdef BITSTREAM_ANALYSIS - strncpy(hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100); + strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100 ); #endif move16(); move16(); @@ -2833,7 +2832,7 @@ ivas_error push_indice( hBstr->ind_list[i].value = value; hBstr->ind_list[i].nb_bits = nb_bits; #ifdef BITSTREAM_ANALYSIS - strncpy(hBstr->ind_list[i].function_name, named_indices_table[id], 100); + strncpy( hBstr->ind_list[i].function_name, named_indices_table[id], 100 ); #endif move16(); move16(); @@ -2855,7 +2854,7 @@ ivas_error push_indice( *-------------------------------------------------------------------*/ ivas_error push_next_indice_( #ifdef BITSTREAM_ANALYSIS - const char *caller, + const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ UWord16 value, /* i : value of the quantized indice */ @@ -2895,7 +2894,7 @@ ivas_error push_next_indice_( move16(); #ifdef BITSTREAM_ANALYSIS - strncpy(hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100); + strncpy( hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100 ); #endif /* updates */ @@ -2913,7 +2912,7 @@ ivas_error push_next_indice_( *-------------------------------------------------------------------*/ ivas_error push_next_bits_( #ifdef BITSTREAM_ANALYSIS - const char *caller, + const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */ @@ -2959,7 +2958,7 @@ ivas_error push_next_bits_( ptr->nb_bits = 16; ptr->id = prev_id; #ifdef BITSTREAM_ANALYSIS - strncpy(ptr->function_name, caller, 100); + strncpy( ptr->function_name, caller, 100 ); #endif hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 ); move16(); @@ -2983,7 +2982,7 @@ ivas_error push_next_bits_( ptr->nb_bits = 1; ptr->id = prev_id; #ifdef BITSTREAM_ANALYSIS - strncpy(ptr->function_name, caller, 100); + strncpy( ptr->function_name, caller, 100 ); #endif hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 ); move16(); @@ -3060,7 +3059,7 @@ UWord16 delete_indice( hBstr->ind_list[j].value = hBstr->ind_list[i].value; hBstr->ind_list[j].nb_bits = hBstr->ind_list[i].nb_bits; #ifdef BITSTREAM_ANALYSIS - strncpy(hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100); + strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100 ); #endif } @@ -3074,7 +3073,7 @@ UWord16 delete_indice( /* reset the shifted indices at the end of the list */ hBstr->ind_list[j].nb_bits = -1; #ifdef BITSTREAM_ANALYSIS - sprintf(hBstr->ind_list[j].function_name, "RESET in delete_indice"); + sprintf( hBstr->ind_list[j].function_name, "RESET in delete_indice" ); #endif } @@ -3313,8 +3312,8 @@ static ivas_error write_indices_element_fx( const Word16 is_SCE, /* i : flag to distingusih SCE and CPE */ const Word16 element_id /* i : id of the SCE or CPE */ #ifdef BITSTREAM_ANALYSIS - , - int32_t frame + , + int32_t frame #endif ) { @@ -3423,76 +3422,70 @@ static ivas_error write_indices_element_fx( } #ifdef BITSTREAM_ANALYSIS - if (is_SCE) /* EVS and SCE */ - { - static FILE *f1 = 0; - - if (f1 == 0) - f1 = fopen("bitstream_text", "w"); - - for (int16_t i = 0; i < sts[0]->hBstr->nb_ind_tot; i++) - { - Indice *ind_list = sts[0]->hBstr->ind_list; - int16_t value = ind_list[i].value; - int16_t nb_bits = ind_list[i].nb_bits; - char *function_name = ind_list[i].function_name; - - fprintf(f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value); - - } - - if (st_ivas->hSCE[element_id]->hMetaData != NULL) - { - for (int16_t i = 0; i < st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot; i++) - { - Indice *ind_list = st_ivas->hSCE[element_id]->hMetaData->ind_list; - int16_t value = ind_list[i].value; - int16_t nb_bits = ind_list[i].nb_bits; - char *function_name = ind_list[i].function_name; - - fprintf(f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value); + if ( is_SCE ) /* EVS and SCE */ + { + static FILE *f1 = 0; - } - } + if ( f1 == 0 ) + f1 = fopen( "bitstream_text", "w" ); - } - else - { - static FILE *f1 = 0; + for ( int16_t i = 0; i < sts[0]->hBstr->nb_ind_tot; i++ ) + { + Indice *ind_list = sts[0]->hBstr->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; - if (f1 == 0) - f1 = fopen("bitstream_text", "w"); + fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value ); + } + if ( st_ivas->hSCE[element_id]->hMetaData != NULL ) + { + for ( int16_t i = 0; i < st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot; i++ ) + { + Indice *ind_list = st_ivas->hSCE[element_id]->hMetaData->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; - for (n = 0; n < n_channels; n++) - { - for (int16_t i = 0; i < sts[n]->hBstr->nb_ind_tot; i++) - { - Indice *ind_list = sts[n]->hBstr->ind_list; - int16_t value = ind_list[i].value; - int16_t nb_bits = ind_list[i].nb_bits; - char *function_name = ind_list[i].function_name; + fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value ); + } + } + } + else + { + static FILE *f1 = 0; - fprintf(f1, "%d %d %d %d %s %d %d\n", frame, element_id, n, i, function_name, nb_bits, value); + if ( f1 == 0 ) + f1 = fopen( "bitstream_text", "w" ); - } - } + for ( n = 0; n < n_channels; n++ ) + { + for ( int16_t i = 0; i < sts[n]->hBstr->nb_ind_tot; i++ ) + { + Indice *ind_list = sts[n]->hBstr->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; - if (st_ivas->hCPE[element_id]->hMetaData != NULL) - { - for (int16_t i = 0; i < st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot; i++) - { - Indice *ind_list = st_ivas->hCPE[element_id]->hMetaData->ind_list; - int16_t value = ind_list[i].value; - int16_t nb_bits = ind_list[i].nb_bits; - char *function_name = ind_list[i].function_name; + fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, n, i, function_name, nb_bits, value ); + } + } - fprintf(f1, "%d %d %d %d %s %d %d\n", frame, element_id, -1, i, function_name, nb_bits, value); + if ( st_ivas->hCPE[element_id]->hMetaData != NULL ) + { + for ( int16_t i = 0; i < st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot; i++ ) + { + Indice *ind_list = st_ivas->hCPE[element_id]->hMetaData->ind_list; + int16_t value = ind_list[i].value; + int16_t nb_bits = ind_list[i].nb_bits; + char *function_name = ind_list[i].function_name; - } - } - } + fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, -1, i, function_name, nb_bits, value ); + } + } + } #endif /*----------------------------------------------------------------* @@ -3539,8 +3532,8 @@ ivas_error write_indices_ivas_fx( UWord16 *bit_stream, /* i/o: output bitstream */ UWord16 *num_bits /* i : number of indices written to output */ #ifdef BITSTREAM_ANALYSIS - , - int32_t frame + , + int32_t frame #endif ) { @@ -3565,22 +3558,22 @@ ivas_error write_indices_ivas_fx( FOR( n = 0; n < st_ivas->nSCE; n++ ) { - write_indices_element_fx( st_ivas, &pt_stream, 1, n + write_indices_element_fx( st_ivas, &pt_stream, 1, n #ifdef BITSTREAM_ANALYSIS - , - frame + , + frame #endif - ); + ); } FOR( n = 0; n < st_ivas->nCPE; n++ ) { - write_indices_element_fx( st_ivas, &pt_stream, 0, n + write_indices_element_fx( st_ivas, &pt_stream, 0, n #ifdef BITSTREAM_ANALYSIS - , - frame + , + frame #endif - ); + ); } *num_bits = (UWord16) ( pt_stream - bit_stream ); diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index f1fbf8fc0..4c1a01b0f 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10671,7 +10671,7 @@ ivas_error config_acelp1_fx( ivas_error push_next_indice_( #ifdef BITSTREAM_ANALYSIS - const char *caller, + const char *caller, #endif BSTR_ENC_HANDLE hBstr, UWord16 value, /* i : value of the quantized indice */ @@ -10680,7 +10680,7 @@ ivas_error push_next_indice_( ivas_error push_next_bits_( #ifdef BITSTREAM_ANALYSIS - const char *caller, + const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */ @@ -11005,7 +11005,7 @@ ivas_error push_indice( ivas_error push_next_indice_( #ifdef BITSTREAM_ANALYSIS - const char *caller, + const char *caller, #endif BSTR_ENC_HANDLE hBstr, UWord16 value, /* i : value of the quantized indice */ @@ -11014,7 +11014,7 @@ ivas_error push_next_indice_( ivas_error push_next_bits_( #ifdef BITSTREAM_ANALYSIS - const char *caller, + const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ const UWord16 bits[], /* i : bit buffer to pack, sequence of single bits */ diff --git a/lib_enc/ivas_corecoder_enc_reconfig_fx.c b/lib_enc/ivas_corecoder_enc_reconfig_fx.c index 7e7db6e0e..b3b471e1d 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig_fx.c +++ b/lib_enc/ivas_corecoder_enc_reconfig_fx.c @@ -197,7 +197,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( temp_ind_list[i].nb_bits = hBstr->ind_list[i].nb_bits; /* Q0 */ move16(); #ifdef BITSTREAM_ANALYSIS - strncpy(temp_ind_list[i].function_name, hBstr->ind_list[i].function_name, 100); + strncpy( temp_ind_list[i].function_name, hBstr->ind_list[i].function_name, 100 ); #endif hBstr->ind_list[i].nb_bits = -1; /* Q0 */ move16(); @@ -553,7 +553,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */ move16(); #ifdef BITSTREAM_ANALYSIS - strncpy(st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100); + strncpy( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); #endif } @@ -580,7 +580,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */ move16(); #ifdef BITSTREAM_ANALYSIS - strncpy(st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100); + strncpy( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); #endif } diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c index ce87b0571..c7ab7eb08 100644 --- a/lib_enc/ivas_init_enc_fx.c +++ b/lib_enc/ivas_init_enc_fx.c @@ -1179,10 +1179,10 @@ ivas_error ivas_init_encoder_fx( } #ifdef BITSTERAM_ANALYSIS - for (i = 0; i < st_ivas->ivas_max_num_indices; i++) - { - memset(st_ivas->ind_list[i].function_name, 'A', 100 * sizeof(char)); - } + for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ ) + { + memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) ); + } #endif /* set the maximum allowed number of metadata indices in the list */ diff --git a/lib_enc/ivas_qmetadata_enc_fx.c b/lib_enc/ivas_qmetadata_enc_fx.c index 15e0db269..b67b9d690 100644 --- a/lib_enc/ivas_qmetadata_enc_fx.c +++ b/lib_enc/ivas_qmetadata_enc_fx.c @@ -1196,7 +1196,7 @@ void reset_metadata_spatial_fx( hMetaData->ind_list[i].nb_bits = -1; move16(); #ifdef BITSTREAM_ANALYSIS - sprintf(hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial"); + sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" ); #endif } @@ -1205,12 +1205,12 @@ void reset_metadata_spatial_fx( hMetaData->ind_list[j].value = hMetaData->ind_list[i].value; hMetaData->ind_list[j].nb_bits = hMetaData->ind_list[i].nb_bits; #ifdef BITSTREAM_ANALYSIS - strncpy(hMetaData->ind_list[j].function_name, hMetaData->ind_list[i].function_name, 100); + strncpy( hMetaData->ind_list[j].function_name, hMetaData->ind_list[i].function_name, 100 ); #endif hMetaData->nb_bits_tot = add( hMetaData->nb_bits_tot, hMetaData->ind_list[j].nb_bits ); hMetaData->ind_list[i].nb_bits = -1; #ifdef BISTREAM_ANALYSIS - sprintf(hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial"); + sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" ); #endif move16(); move16(); @@ -2020,7 +2020,7 @@ void restore_metadata_buffer_fx( hMetaData->ind_list[i].nb_bits = -1; move16(); #ifdef BITSTREAM_ANALYSIS - sprintf(hMetaData->ind_list[i].function_name, "RESET in restore_metadata_buffer"); + sprintf( hMetaData->ind_list[i].function_name, "RESET in restore_metadata_buffer" ); #endif } hMetaData->nb_bits_tot = bit_pos_start; diff --git a/lib_enc/ivas_spar_md_enc_fx.c b/lib_enc/ivas_spar_md_enc_fx.c index d179b1263..140a62c63 100644 --- a/lib_enc/ivas_spar_md_enc_fx.c +++ b/lib_enc/ivas_spar_md_enc_fx.c @@ -440,9 +440,9 @@ static void write_metadata_buffer_fx( FOR( i = 0; i < hMetaData_tmp->nb_ind_tot; i++ ) { #ifdef BITSTREAM_ANALYSIS - push_next_indice_(hMetaData_tmp->ind_list[i].function_name, hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits); + push_next_indice_( hMetaData_tmp->ind_list[i].function_name, hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); #else - push_next_indice(hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits); + push_next_indice( hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); #endif } diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index dd4097fff..f6188fe1a 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1661,8 +1661,8 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( UWord16 *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME Q0*/ UWord16 *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value Q0*/ #ifdef BITSTREAM_ANALYSIS - , - int32_t frame + , + int32_t frame #endif ) { @@ -1788,10 +1788,10 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( move16(); } #ifdef BITSTREAM_ANALYSIS - for (i = 0; i < st_ivas->ivas_max_num_indices; i++) - { - memset(st_ivas->ind_list[i].function_name, 'A', 100 * sizeof(char)); - } + for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ ) + { + memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) ); + } #endif /* de-allocate old buffer of metadata indices */ IF( st_ivas->ind_list_metadata != NULL ) @@ -1932,12 +1932,12 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( ELSE #endif { - write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits + write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits #ifdef BITSTREAM_ANALYSIS - , - frame + , + frame #endif - ); + ); } /* Reset switching flag before next call - can be set to "true" by some setters */ hIvasEnc->switchingActive = false; diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index b1b14afc6..9be9df333 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -4809,8 +4809,8 @@ ivas_error write_indices_ivas_fx( UWord16 *bit_stream, /* i/o: output bitstream */ UWord16 *num_bits /* i : number of indices written to output */ #ifdef BITSTREAM_ANALYSIS - , - int32_t frame + , + int32_t frame #endif ); #endif diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 3a4acc101..f5f819241 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -55,7 +55,7 @@ typedef struct UWord16 value; /* value of the quantized indice */ Word16 nb_bits; /* number of bits used for the quantization of the indice */ #ifdef BITSTREAM_ANALYSIS - char function_name[100]; + char function_name[100]; #endif } Indice, *INDICE_HANDLE; -- GitLab From 3568f0a5871190556cb4fa43f65a199e8f61fdba Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 16 Apr 2025 16:24:53 +0200 Subject: [PATCH 576/698] fix compilation errors with the instrumented code --- lib_com/bitstream.c | 8 ++++++++ lib_com/prot_fx.h | 11 ++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index b4e62566d..3431a2f1d 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -2852,7 +2852,11 @@ ivas_error push_indice( * * Push a new indice into the buffer at the next position *-------------------------------------------------------------------*/ +#ifdef BITSTREAM_ANALYSIS ivas_error push_next_indice_( +#else +ivas_error push_next_indice( +#endif #ifdef BITSTREAM_ANALYSIS const char *caller, #endif @@ -2910,7 +2914,11 @@ ivas_error push_next_indice_( * push_next_bits() * Push a bit buffer into the buffer at the next position *-------------------------------------------------------------------*/ +#ifdef BITSTREAM_ANALYSIS ivas_error push_next_bits_( +#else +ivas_error push_next_bits( +#endif #ifdef BITSTREAM_ANALYSIS const char *caller, #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 4c1a01b0f..99f3972c8 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10664,12 +10664,13 @@ ivas_error config_acelp1_fx( #ifdef BITSTREAM_ANALYSIS #define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ ) #define push_next_bits( ... ) push_next_bits_( __func__, __VA_ARGS__ ); -#else -#define push_next_indice( ... ) push_next_indice_( __VA_ARGS__ ) -#define push_next_bits( ... ) push_next_bits_( __VA_ARGS__ ); #endif +#ifdef BITSTREAM_ANALYSIS ivas_error push_next_indice_( +#else +ivas_error push_next_indice( +#endif #ifdef BITSTREAM_ANALYSIS const char *caller, #endif @@ -10678,7 +10679,11 @@ ivas_error push_next_indice_( Word16 nb_bits /* i : number of bits used to quantize the indice */ ); +#ifdef BITSTREAM_ANALYSIS ivas_error push_next_bits_( +#else +ivas_error push_next_bits( +#endif #ifdef BITSTREAM_ANALYSIS const char *caller, #endif -- GitLab From 3c4a44ec383d919b88eb4821244e2fe00c7a1044 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 14 May 2025 14:47:15 +0200 Subject: [PATCH 577/698] move the new define to the DEBUGGING section --- apps/encoder.c | 2 +- lib_com/bitstream.c | 46 ++++++++++++------------ lib_com/options.h | 3 +- lib_com/prot_fx.h | 14 ++++---- lib_enc/ivas_corecoder_enc_reconfig_fx.c | 8 ++--- lib_enc/ivas_init_enc_fx.c | 2 +- lib_enc/ivas_qmetadata_enc_fx.c | 8 ++--- lib_enc/ivas_spar_md_enc_fx.c | 2 +- lib_enc/lib_enc.c | 6 ++-- lib_enc/lib_enc.h | 4 +-- lib_enc/prot_fx_enc.h | 2 +- lib_enc/stat_enc.h | 2 +- 12 files changed, 49 insertions(+), 50 deletions(-) diff --git a/apps/encoder.c b/apps/encoder.c index a98c9f5f2..0d557ede8 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -759,7 +759,7 @@ int main( /* *** Encode one frame *** */ if ( ( error = IVAS_ENC_EncodeFrameToSerial( hIvasEnc, pcmBuf, pcmBufSize, bitStream, &numBits -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index 3431a2f1d..8ebfd6fa7 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -48,7 +48,7 @@ #include "wmc_auto.h" #include "ivas_prot_fx.h" #include "prot_fx_enc.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif @@ -201,7 +201,7 @@ ivas_error ind_list_realloc( { new_ind_list[i].id = old_ind_list[i].id; new_ind_list[i].value = old_ind_list[i].value; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); #endif move16(); @@ -215,7 +215,7 @@ ivas_error ind_list_realloc( FOR( ; i < max_num_indices; i++ ) { new_ind_list[i].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( new_ind_list[i].function_name, "RESET in ind_list_realloc" ); #endif move16(); @@ -808,7 +808,7 @@ void move_indices( new_ind_list[i].value = old_ind_list[i].value; new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); #endif old_ind_list[i].nb_bits = -1; @@ -821,12 +821,12 @@ void move_indices( new_ind_list[i].id = old_ind_list[i].id; new_ind_list[i].value = old_ind_list[i].value; new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 ); #endif old_ind_list[i].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( old_ind_list[i].function_name, "RESET in move_indices" ); #endif } @@ -897,7 +897,7 @@ ivas_error check_ind_list_limits( return error; } -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *named_indices_table[] = { "IND_IVAS_FORMAT", "IND_SMODE_OMASA", @@ -2817,7 +2817,7 @@ ivas_error push_indice( hBstr->ind_list[j].id = hBstr->ind_list[j - 1].id; hBstr->ind_list[j].nb_bits = hBstr->ind_list[j - 1].nb_bits; hBstr->ind_list[j].value = hBstr->ind_list[j - 1].value; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100 ); #endif move16(); @@ -2831,7 +2831,7 @@ ivas_error push_indice( hBstr->ind_list[i].id = id; hBstr->ind_list[i].value = value; hBstr->ind_list[i].nb_bits = nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[i].function_name, named_indices_table[id], 100 ); #endif move16(); @@ -2852,12 +2852,12 @@ ivas_error push_indice( * * Push a new indice into the buffer at the next position *-------------------------------------------------------------------*/ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS ivas_error push_next_indice_( #else ivas_error push_next_indice( #endif -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ @@ -2897,7 +2897,7 @@ ivas_error push_next_indice( move16(); move16(); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100 ); #endif @@ -2914,12 +2914,12 @@ ivas_error push_next_indice( * push_next_bits() * Push a bit buffer into the buffer at the next position *-------------------------------------------------------------------*/ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS ivas_error push_next_bits_( #else ivas_error push_next_bits( #endif -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ @@ -2965,7 +2965,7 @@ ivas_error push_next_bits( ptr->value = code; ptr->nb_bits = 16; ptr->id = prev_id; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( ptr->function_name, caller, 100 ); #endif hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 ); @@ -2989,7 +2989,7 @@ ivas_error push_next_bits( ptr->value = bits[i]; ptr->nb_bits = 1; ptr->id = prev_id; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( ptr->function_name, caller, 100 ); #endif hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 ); @@ -3066,7 +3066,7 @@ UWord16 delete_indice( hBstr->ind_list[j].id = hBstr->ind_list[i].id; hBstr->ind_list[j].value = hBstr->ind_list[i].value; hBstr->ind_list[j].nb_bits = hBstr->ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100 ); #endif } @@ -3080,7 +3080,7 @@ UWord16 delete_indice( { /* reset the shifted indices at the end of the list */ hBstr->ind_list[j].nb_bits = -1; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( hBstr->ind_list[j].function_name, "RESET in delete_indice" ); #endif } @@ -3319,7 +3319,7 @@ static ivas_error write_indices_element_fx( UWord16 **pt_stream, /* i : pointer to bitstream buffer */ const Word16 is_SCE, /* i : flag to distingusih SCE and CPE */ const Word16 element_id /* i : id of the SCE or CPE */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -3429,7 +3429,7 @@ static ivas_error write_indices_element_fx( } } -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS if ( is_SCE ) /* EVS and SCE */ { static FILE *f1 = 0; @@ -3539,7 +3539,7 @@ ivas_error write_indices_ivas_fx( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ UWord16 *bit_stream, /* i/o: output bitstream */ UWord16 *num_bits /* i : number of indices written to output */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -3567,7 +3567,7 @@ ivas_error write_indices_ivas_fx( FOR( n = 0; n < st_ivas->nSCE; n++ ) { write_indices_element_fx( st_ivas, &pt_stream, 1, n -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif @@ -3577,7 +3577,7 @@ ivas_error write_indices_ivas_fx( FOR( n = 0; n < st_ivas->nCPE; n++ ) { write_indices_element_fx( st_ivas, &pt_stream, 0, n -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif diff --git a/lib_com/options.h b/lib_com/options.h index d55309bc9..20a1dc555 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -43,6 +43,7 @@ /*#define DEBUGGING*/ /* Allows debugging message to be printed out during runtime */ #ifdef DEBUGGING +/*#define DBG_BITSTREAM_ANALYSIS*/ /* Write bitstream with annotations to a text file */ #define DEBUG_MODE_INFO /* Define to output most important parameters to the subdirectory "res/" */ #define DEBUG_MODE_INFO_TWEAK /* Enable command line switch to specify subdirectory for debug info output inside "./res/" */ #define DEBUG_FORCE_MDCT_STEREO_MODE /* Force stereo mode decision for MDCT stereo: -stereo 3 1 forces L/R coding and -stereo 3 2 forces full M/S coding */ @@ -100,6 +101,4 @@ #define TEST_HR #define REMOVE_EVS_DUPLICATES /* remove core-coder duplicated functions, ACELP low-band decoder */ -/*#define BITSTREAM_ANALYSIS*/ - #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 99f3972c8..870e60a8d 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -10661,17 +10661,17 @@ ivas_error config_acelp1_fx( const Word16 GSC_IVAS_mode /* i : GSC IVAS mode */ ); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #define push_next_indice( ... ) push_next_indice_( __func__, __VA_ARGS__ ) #define push_next_bits( ... ) push_next_bits_( __func__, __VA_ARGS__ ); #endif -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS ivas_error push_next_indice_( #else ivas_error push_next_indice( #endif -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, @@ -10679,12 +10679,12 @@ ivas_error push_next_indice( Word16 nb_bits /* i : number of bits used to quantize the indice */ ); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS ivas_error push_next_bits_( #else ivas_error push_next_bits( #endif -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ @@ -11009,7 +11009,7 @@ ivas_error push_indice( ); ivas_error push_next_indice_( -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, @@ -11018,7 +11018,7 @@ ivas_error push_next_indice_( ); ivas_error push_next_bits_( -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS const char *caller, #endif BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ diff --git a/lib_enc/ivas_corecoder_enc_reconfig_fx.c b/lib_enc/ivas_corecoder_enc_reconfig_fx.c index b3b471e1d..6a2748e1c 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig_fx.c +++ b/lib_enc/ivas_corecoder_enc_reconfig_fx.c @@ -39,7 +39,7 @@ #include "ivas_prot_fx.h" #include "math.h" #include "wmc_auto.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif /*-------------------------------------------------------------------* @@ -196,7 +196,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( move16(); temp_ind_list[i].nb_bits = hBstr->ind_list[i].nb_bits; /* Q0 */ move16(); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( temp_ind_list[i].function_name, hBstr->ind_list[i].function_name, 100 ); #endif hBstr->ind_list[i].nb_bits = -1; /* Q0 */ @@ -552,7 +552,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( move16(); st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */ move16(); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); #endif } @@ -579,7 +579,7 @@ ivas_error ivas_corecoder_enc_reconfig_fx( move16(); st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].nb_bits = temp_ind_list[i].nb_bits; /* Q0 */ move16(); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list[i].function_name, temp_ind_list[i].function_name, 100 ); #endif } diff --git a/lib_enc/ivas_init_enc_fx.c b/lib_enc/ivas_init_enc_fx.c index c7ab7eb08..7d88b1264 100644 --- a/lib_enc/ivas_init_enc_fx.c +++ b/lib_enc/ivas_init_enc_fx.c @@ -41,7 +41,7 @@ #include "wmc_auto.h" #include "ivas_prot_fx.h" #include "prot_fx_enc.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif diff --git a/lib_enc/ivas_qmetadata_enc_fx.c b/lib_enc/ivas_qmetadata_enc_fx.c index b67b9d690..9a7c4038b 100644 --- a/lib_enc/ivas_qmetadata_enc_fx.c +++ b/lib_enc/ivas_qmetadata_enc_fx.c @@ -43,7 +43,7 @@ #include "basop_util.h" #include "ivas_rom_com_fx.h" -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS #include #endif @@ -1195,7 +1195,7 @@ void reset_metadata_spatial_fx( { hMetaData->ind_list[i].nb_bits = -1; move16(); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( hMetaData->ind_list[i].function_name, "RESET in reset_metadata_spatial" ); #endif } @@ -1204,7 +1204,7 @@ void reset_metadata_spatial_fx( { hMetaData->ind_list[j].value = hMetaData->ind_list[i].value; hMetaData->ind_list[j].nb_bits = hMetaData->ind_list[i].nb_bits; -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS strncpy( hMetaData->ind_list[j].function_name, hMetaData->ind_list[i].function_name, 100 ); #endif hMetaData->nb_bits_tot = add( hMetaData->nb_bits_tot, hMetaData->ind_list[j].nb_bits ); @@ -2019,7 +2019,7 @@ void restore_metadata_buffer_fx( { hMetaData->ind_list[i].nb_bits = -1; move16(); -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS sprintf( hMetaData->ind_list[i].function_name, "RESET in restore_metadata_buffer" ); #endif } diff --git a/lib_enc/ivas_spar_md_enc_fx.c b/lib_enc/ivas_spar_md_enc_fx.c index 140a62c63..a293b870a 100644 --- a/lib_enc/ivas_spar_md_enc_fx.c +++ b/lib_enc/ivas_spar_md_enc_fx.c @@ -439,7 +439,7 @@ static void write_metadata_buffer_fx( FOR( i = 0; i < hMetaData_tmp->nb_ind_tot; i++ ) { -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS push_next_indice_( hMetaData_tmp->ind_list[i].function_name, hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); #else push_next_indice( hMetaData, hMetaData_tmp->ind_list[i].value, hMetaData_tmp->ind_list[i].nb_bits ); diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index f6188fe1a..1771f875a 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -1660,7 +1660,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() Q0*/ UWord16 *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME Q0*/ UWord16 *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value Q0*/ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -1787,7 +1787,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( st_ivas->ind_list[i].nb_bits = -1; move16(); } -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS for ( i = 0; i < st_ivas->ivas_max_num_indices; i++ ) { memset( st_ivas->ind_list[i].function_name, 'A', 100 * sizeof( char ) ); @@ -1933,7 +1933,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( #endif { write_indices_ivas_fx( st_ivas, outputBitStream, numOutBits -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , frame #endif diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index 51a6e5821..16fc9fe4b 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -302,7 +302,7 @@ ivas_error IVAS_ENC_EncodeFrameToSerial( Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ UWord16 *outputBitStream, /* o : pointer to serial output bitstream. The array must already be allocated and be of size at least IVAS_MAX_BITS_PER_FRAME */ UWord16 *numOutBits /* o : number of bits written to output bitstream. Each bit is stored as a single uint16_t value */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif @@ -315,7 +315,7 @@ ivas_error IVAS_ENC_EncodeFrameToCompact( const Word16 inputBufferSize, /* i : total number of samples in the input buffer. Related function: IVAS_ENC_GetInputBufferSize() */ UWord8 *outputBitStream, /* o : pointer to compact output bitstream. The array must already be allocated. */ UWord16 *numOutBits /* o : number of bits written to output bitstream */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif diff --git a/lib_enc/prot_fx_enc.h b/lib_enc/prot_fx_enc.h index 9be9df333..8e323af82 100644 --- a/lib_enc/prot_fx_enc.h +++ b/lib_enc/prot_fx_enc.h @@ -4808,7 +4808,7 @@ ivas_error write_indices_ivas_fx( Encoder_Struct *st_ivas, /* i/o: encoder state structure */ UWord16 *bit_stream, /* i/o: output bitstream */ UWord16 *num_bits /* i : number of indices written to output */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS , int32_t frame #endif diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index f5f819241..41383f109 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -54,7 +54,7 @@ typedef struct Word16 id; /* id of the indice */ UWord16 value; /* value of the quantized indice */ Word16 nb_bits; /* number of bits used for the quantization of the indice */ -#ifdef BITSTREAM_ANALYSIS +#ifdef DBG_BITSTREAM_ANALYSIS char function_name[100]; #endif } Indice, *INDICE_HANDLE; -- GitLab From ecc6cd719249410b546b166a50e4f072dfaf3236 Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Tue, 20 May 2025 12:32:02 +0200 Subject: [PATCH 578/698] push_wmops/pop_wmops added to stereo_dmx_evs_enc. Fix 1511 added. --- lib_com/options.h | 2 -- lib_enc/ivas_stereo_dmx_evs_fx.c | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index b02cd8561..eb5ea7c73 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -114,8 +114,6 @@ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ #define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ -#define BE_FIX_567_DOUBLE_STEREO_DMX /* NTT: Fix formal issues */ -#define NONBE_FIX_567_DOUBLE_STEREO_DMX /* Orange: Double-precision replaced by single-precision */ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC #define NONBE_FIX_947_STEREO_DMX_ROMOPT /* Orange: ROM optimisation for POC*/ diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 4e9bc3da5..ba5ae0c2a 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -100,6 +100,9 @@ #define STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 24576 +#define STEREO_DMX_EVS_POC_RENORM_TH 33554432 // 65536 << 9 +#define STEREO_DMX_EVS_POC_RENORM_SHIFT 3 + #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define STEREO_DMX_EVS_FAD_R 3 #ifdef NONBE_FIX_947_STEREO_DMX_FADOPT @@ -474,6 +477,17 @@ static void calc_poc_fx( Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); + IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) ) + { + Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + } + specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e move32(); specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e @@ -486,6 +500,17 @@ static void calc_poc_fx( Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); + IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) ) + { + Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + } + specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e move32(); specPOi[j] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e @@ -506,6 +531,18 @@ static void calc_poc_fx( Li = L_add( L_sub( specLi[i], Mpy_32_32_r( specRr[i], eps_sin ) ), Mpy_32_32_r( specRi[i], eps_cos ) ); Rr = L_add( L_add( specRr[i], Mpy_32_32_r( specLr[i], eps_cos ) ), Mpy_32_32_r( specLi[i], eps_sin ) ); Ri = L_add( L_sub( specRi[i], Mpy_32_32_r( specLr[i], eps_sin ) ), Mpy_32_32_r( specLi[i], eps_cos ) ); + + IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) ) + { + Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + } + specPOr[i] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e move32(); specPOi[i] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e @@ -516,6 +553,18 @@ static void calc_poc_fx( Li = L_sub( L_sub( specLi[j], Mpy_32_32_r( specRr[j], eps_sin ) ), Mpy_32_32_r( specRi[j], eps_cos ) ); Rr = L_add( L_sub( specRr[j], Mpy_32_32_r( specLr[j], eps_cos ) ), Mpy_32_32_r( specLi[j], eps_sin ) ); Ri = L_sub( L_sub( specRi[j], Mpy_32_32_r( specLr[j], eps_sin ) ), Mpy_32_32_r( specLi[j], eps_cos ) ); + + IF( ( LT_32( L_abs( Lr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Li ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Rr ), STEREO_DMX_EVS_POC_RENORM_TH ) ) && + ( LT_32( L_abs( Ri ), STEREO_DMX_EVS_POC_RENORM_TH ) ) ) + { + Lr = L_shl( Lr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Li = L_shl( Li, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Rr = L_shl( Rr, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + Ri = L_shl( Ri, STEREO_DMX_EVS_POC_RENORM_SHIFT ); + } + specPOr[j] = L_add( Mpy_32_32_r( Lr, Rr ), Mpy_32_32_r( Li, Ri ) ); // 2*spec_e move32(); specPOi[j] = L_sub( Mpy_32_32_r( Lr, Ri ), Mpy_32_32_r( Li, Rr ) ); // 2*spec_e @@ -2462,6 +2511,8 @@ void stereo_dmx_evs_enc_fx( Word64 W_tmp; Word16 W_tmp_q; + push_wmops( "stereo_dmx_evs_enc" ); + if ( is_binaural ) { /* use of is_binaural flag is to be considered */ @@ -3338,6 +3389,8 @@ void stereo_dmx_evs_enc_fx( Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15 #endif + pop_wmops(); + return; } -- GitLab From fd4b0334910148839c12b249f7a121bd0e82f677 Mon Sep 17 00:00:00 2001 From: Arnaud Lefort Date: Tue, 20 May 2025 16:40:11 +0200 Subject: [PATCH 579/698] push_wmops/pop_wmops corrected for stereo_dmx_evs_enc. --- lib_enc/ivas_stereo_dmx_evs_fx.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index ba5ae0c2a..0c54e0d07 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -3014,7 +3014,10 @@ void stereo_dmx_evs_enc_fx( Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15 + pop_wmops(); + #else + Word16 n; Word16 dmx_weight, corr; // Q15 Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11 @@ -3037,6 +3040,8 @@ void stereo_dmx_evs_enc_fx( Word64 W_tmp; Word16 W_tmp_q; + push_wmops( "stereo_dmx_evs_enc" ); + if ( is_binaural ) { /* use of is_binaural flag is to be considered */ @@ -3387,10 +3392,11 @@ void stereo_dmx_evs_enc_fx( } Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15 -#endif pop_wmops(); +#endif + return; } -- GitLab From 26225ecf79f751bea8dfd8751369e1f6ae6012be Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 20 May 2025 17:07:48 +0200 Subject: [PATCH 580/698] port float MR 1391 - remove deactivated code --- lib_dec/ivas_output_config_fx.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c index bd30680da..4a3362cd2 100644 --- a/lib_dec/ivas_output_config_fx.c +++ b/lib_dec/ivas_output_config_fx.c @@ -265,16 +265,6 @@ void ivas_renderer_select( move16(); } -#if 0 // def DEBUGGING /*temp disabling this as paramMC crashes with CREND*/ - IF ( st_ivas->hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_CREND ) - { - *renderer_type = RENDERER_BINAURAL_MIXER_CONV; - } - ELSE IF ( st_ivas->hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_FASTCONV ) - { - *renderer_type = RENDERER_BINAURAL_FASTCONV; - } -#endif test(); IF( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) { -- GitLab From a0561069fe9c1a961d5aeb010b63a9246c475385 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 20 May 2025 17:23:23 +0200 Subject: [PATCH 581/698] port FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO --- lib_com/options.h | 1 + lib_dec/ivas_jbm_dec_fx.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 48c7534d6..0ddb06df4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -119,6 +119,7 @@ #define NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN /* FhG : issue #974: usan in mono and stereo output in OSBA JBM RS */ #define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ #define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ +#define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index c85e36d8e..8db29e4df 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -175,6 +175,7 @@ ivas_error ivas_jbm_dec_tc_fx( { hp20_fx_32( p_output_fx[n], output_frame, st_ivas->mem_hp20_out_fx[n], output_Fs ); } +#ifndef FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) && EQ_16( st_ivas->hDecoderConfig->nchan_out, 1 ) ) @@ -192,6 +193,7 @@ ivas_error ivas_jbm_dec_tc_fx( Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 } } +#endif } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { -- GitLab From 5c952379c4f4ad97331bff350d24e6f3f5404bd1 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 20 May 2025 17:31:58 +0200 Subject: [PATCH 582/698] port FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN --- lib_com/options.h | 1 + lib_dec/ivas_ism_dec_fx.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 48c7534d6..ed43bcb65 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -119,6 +119,7 @@ #define NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN /* FhG : issue #974: usan in mono and stereo output in OSBA JBM RS */ #define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ #define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ +#define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index 18c6953f2..a4294558e 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -369,6 +369,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( tc_nchan_full_new = tc_nchan_tc_new; move16(); +#ifndef FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN test(); test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) @@ -379,6 +380,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( move16(); } +#endif test(); test(); test(); -- GitLab From ea2c44232376f796ebbba3b68d27a2fa0f265028 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 21 May 2025 13:20:12 +0530 Subject: [PATCH 583/698] Fix for 3GPP issue 1590: Very high MLD for ParamISM (ISM4) 24.4kbps SWB with +10dB input and DTX enabled Link #1590 --- lib_enc/speech_music_classif_fx.c | 42 ++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/lib_enc/speech_music_classif_fx.c b/lib_enc/speech_music_classif_fx.c index 65000a7b3..817e5fb70 100644 --- a/lib_enc/speech_music_classif_fx.c +++ b/lib_enc/speech_music_classif_fx.c @@ -2612,7 +2612,7 @@ static Word16 attack_det_ivas_fx( /* o : attack flag Word16 *last_strong_attack /* i/o: last strong attack flag */ ) { - Word16 i, j, tmp, tmp1, attack, exp1; + Word16 i, j, tmp, tmp1, attack, exp1, etmp_e, etmp2_e, s; Word32 L_tmp, etmp, etmp2, finc[ATT_NSEG], mean_finc; Word16 att_3lsub_pos; Word16 attack1; @@ -2665,29 +2665,42 @@ static Word16 attack_det_ivas_fx( /* o : attack flag exp1 = norm_s( att_3lsub_pos ); tmp = div_s( shl( 1, sub( 14, exp1 ) ), att_3lsub_pos ); /*Q(29-exp1) */ - L_tmp = L_shr_o( finc[0], Qx, &Overflow ); /*Qx */ - - FOR( i = 1; i < att_3lsub_pos; i++ ) + W_tmp = 0; + move64(); + FOR( i = 0; i < att_3lsub_pos; i++ ) { - L_tmp = L_add_o( L_tmp, L_shr_o( finc[i], Qx, &Overflow ), &Overflow ); /*Qx */ + W_tmp = W_add( W_tmp, finc[i] ); /* *q_ finc_prev */ } - L_tmp = Mult_32_16( L_tmp, tmp ); /*Q(14-exp1+Qx) */ - etmp = L_shl( L_tmp, sub( exp1, 14 ) ); /*Qx */ + s = W_norm( W_tmp ); + L_tmp = W_extract_h( W_shl( W_tmp, s ) ); // *q_finc_prev + s - 32 + + L_tmp = Mpy_32_16_1( L_tmp, tmp ); /* *q_finc_prev + s - 32 + Q29 - exp1 - 15 => *q_finc_prev + s - exp1 - 18 */ + etmp = L_tmp; + move32(); + etmp_e = sub( 31, add( *q_finc_prev, sub( s, add( exp1, 18 ) ) ) ); + tmp1 = sub( ATT_NSEG, attack ); exp1 = norm_s( tmp1 ); tmp = div_s( shl( 1, sub( 14, exp1 ) ), tmp1 ); /*Q(29-exp1) */ - L_tmp = L_shr_o( finc[attack], Qx, &Overflow ); /*Qx */ - FOR( i = 1; i < tmp1; i++ ) + W_tmp = 0; + move64(); + FOR( i = 0; i < tmp1; i++ ) { - L_tmp = L_add_o( L_tmp, L_shr_o( finc[i + attack], Qx, &Overflow ), &Overflow ); /*Qx */ + W_tmp = W_add( W_tmp, finc[i + attack] ); /* *q_finc_prev */ } - L_tmp = Mult_32_16( L_tmp, tmp ); /*Q(14-exp1+Qx) */ - etmp2 = L_shl( L_tmp, sub( exp1, 14 ) ); /*Qx */ + s = W_norm( W_tmp ); + L_tmp = W_extract_h( W_shl( W_tmp, s ) ); // *q_finc_prev + s - 32 + + L_tmp = Mpy_32_16_1( L_tmp, tmp ); /* *q_finc_prev + s - 32 + Q29 - exp1 - 15 => *q_finc_prev + s - exp1 - 18 */ + etmp2 = L_tmp; + move32(); + etmp2_e = sub( 31, add( *q_finc_prev, sub( s, add( exp1, 18 ) ) ) ); /* and compare them */ - if ( GT_32( etmp, L_shr( etmp2, 3 ) ) ) + /* if ( etmp * 8 > etmp2 ) */ + if ( BASOP_Util_Cmp_Mant32Exp( etmp, add( etmp_e, 3 ), etmp2, etmp2_e ) > 0 ) { /* stop, if the attack is not sufficiently strong */ attack = 0; @@ -2695,7 +2708,8 @@ static Word16 attack_det_ivas_fx( /* o : attack flag } test(); - if ( EQ_16( last_clas, VOICED_CLAS ) && GT_32( L_add( L_shl( etmp, 4 ), L_shl( etmp, 2 ) ), etmp2 ) ) + /* if ( last_clas == VOICED_CLAS && etmp * 20 > etmp2 ) */ + if ( EQ_16( last_clas, VOICED_CLAS ) && BASOP_Util_Cmp_Mant32Exp( etmp, etmp_e, Mpy_32_16_1( etmp2, 1638 /* 1/20 in Q15 */ ), etmp2_e ) > 0 ) { /* stop, if the signal was voiced and the attack is not sufficiently strong */ attack = 0; -- GitLab From 83f7cc6dd069f1a4e2f8946f7293119f44f1bf04 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 21 May 2025 16:05:35 +0200 Subject: [PATCH 584/698] add define FIX_1001_ARI_HM_OVERFLOW for completeness --- lib_com/options.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib_com/options.h b/lib_com/options.h index 848e56e37..94687d479 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -121,6 +121,7 @@ #define FIX_ACCESS_WITHIN_NULL_STRUCT_MC_BW_SWITCHING /* FhG: fix usan error in MCT with bw swicthing */ #define NONBE_FIX_986_MC_BW_SWITCHING /* FhG: fix crash in bw and br switching with MC */ #define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ +#define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ /* #################### End BASOP porting switches ############################ */ -- GitLab From 362a5935f4a97e0d2913eeb06bb169d574a21618 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 21 May 2025 16:23:49 +0200 Subject: [PATCH 585/698] port NONBE_FIX_999_JBM_MCT_FLUSH --- lib_com/options.h | 1 + lib_dec/ivas_jbm_dec_fx.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 3e4dae0d5..bffb21a18 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,6 +128,7 @@ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ #endif +#define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index c85e36d8e..f8936a44c 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2818,7 +2818,11 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( ivas_binaural_add_LFE_fx( st_ivas, hTcBuffer->n_samples_granularity, st_ivas->hTcBuffer->tc_fx, p_output_fx ); } +#ifdef NONBE_FIX_999_JBM_MCT_FLUSH + ELSE IF( EQ_16( renderer_type_old, RENDERER_BINAURAL_OBJECTS_TD ) ) +#else ELSE IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) +#endif { IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity ) ), IVAS_ERR_OK ) ) { @@ -2826,6 +2830,12 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( } ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, st_ivas->hTcBuffer->tc_fx, p_output_fx ); } +#ifdef NONBE_FIX_999_JBM_MCT_FLUSH + ELSE + { + return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong renderer in MCT VoIP renderer flushing!" ); + } +#endif } ELSE { -- GitLab From c8dcc6d69ad9f19b4e70904ad882461034f3f46a Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Thu, 22 May 2025 10:27:06 +0900 Subject: [PATCH 586/698] Add NONBE_FIX_978_MC_TDREND_REVERB to enable reverb for TD rend with MC --- lib_com/options.h | 1 + lib_dec/ivas_init_dec.c | 4 ++++ lib_dec/ivas_ism_dec_fx.c | 4 ++++ lib_dec/ivas_objectRenderer_internal_fx.c | 8 ++++++++ 4 files changed, 17 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 3e4dae0d5..33574099d 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,6 +128,7 @@ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ #endif +#define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index b4af0ed06..69eed516c 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -2272,7 +2272,11 @@ ivas_error ivas_init_decoder_fx( move16(); } +#ifdef NONBE_FIX_978_MC_TDREND_REVERB + IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#else IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#endif { IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) { diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index 18c6953f2..18b054759 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -218,7 +218,11 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( { return error; } +#ifdef NONBE_FIX_978_MC_TDREND_REVERB + IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#else IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#endif { IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) { diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c index 71b16a6c6..48cbd21c7 100644 --- a/lib_dec/ivas_objectRenderer_internal_fx.c +++ b/lib_dec/ivas_objectRenderer_internal_fx.c @@ -237,7 +237,11 @@ ivas_error ivas_td_binaural_renderer_sf_fx( } test(); +#ifdef NONBE_FIX_978_MC_TDREND_REVERB + IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#else IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#endif { FOR( i = 0; i < nchan_ism_internal; ++i ) { @@ -269,7 +273,11 @@ ivas_error ivas_td_binaural_renderer_sf_fx( } test(); +#ifdef NONBE_FIX_978_MC_TDREND_REVERB + IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#else IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#endif { /* add reverb to rendered signals */ v_add_32( reverb_signal_fx[0], output_fx_local[0], output_fx_local[0], output_frame ); // Q11 -- GitLab From 5b318766d533bb1b76dd930426751c13a0c46187 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Wed, 21 May 2025 15:15:28 +0530 Subject: [PATCH 587/698] Fix for 3GPP issue 1584: Accuracy of spatial metadata in ivas_mcmasa_enc_fx compared to the floating point equivalent Link #1584 --- lib_com/prot_fx.h | 1 + lib_com/tools_fx.c | 12 +++++ lib_enc/ivas_mcmasa_enc_fx.c | 91 ++++++++++++++++++++++++++++-------- 3 files changed, 85 insertions(+), 19 deletions(-) diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 044a06b5b..b00894190 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -4646,6 +4646,7 @@ Word16 get_min_scalefactor( Word32 x, Word32 y ); Flag is_zero_arr( Word32 *arr, Word16 size ); Flag is_zero_arr16( Word16 *arr, Word16 size ); +Flag is_zero_arr64( Word64 *arr, Word16 size ); void edct2_fx_ivas( const Word16 n, diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 77e779efd..e8549ce9f 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -4738,6 +4738,18 @@ Flag is_zero_arr16( Word16 *arr, Word16 size ) return 1; } +Flag is_zero_arr64( Word64 *arr, Word16 size ) +{ + FOR( Word16 i = 0; i < size; i++ ) + { + IF( arr[i] != 0 ) + { + return 0; + } + } + return 1; +} + void Scale_sig64( Word64 x[], /* i/o: signal to scale Qx */ Word16 len, /* i : size of x[] Q0 */ diff --git a/lib_enc/ivas_mcmasa_enc_fx.c b/lib_enc/ivas_mcmasa_enc_fx.c index 7a5718e99..b89424e76 100644 --- a/lib_enc/ivas_mcmasa_enc_fx.c +++ b/lib_enc/ivas_mcmasa_enc_fx.c @@ -81,7 +81,16 @@ static void compute_cov_mtx_fx( CovarianceMatrix *COVls, /* o : Output matrix, contains upper part of cov mtx */ Word16 inp_exp /*Stores exponent for temp*/ ); -static void computeIntensityVector_enc_fx( const Word16 *band_grouping, Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], const Word16 enc_param_start_band, const Word16 num_frequency_bands, Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] ); + +static void computeIntensityVector_enc_fx( + const Word16 *band_grouping, + Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], + Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], + const Word16 enc_param_start_band, /* i : first band to process */ + const Word16 num_frequency_bands, + Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS], + Word16 *exp_intensity_real, + Word16 inp_q ); static void computeVerticalDiffuseness_fx( Word32 **buffer_intensity, /* i : Intensity vectors */ @@ -737,7 +746,7 @@ void ivas_mcmasa_enc_fx( move32(); hQMeta->q_direction[0].band_data[i].elevation_fx[j] = elevation_m_values_fx[j][i]; // Q22 move32(); - hQMeta->q_direction[0].band_data[i].energy_ratio_fx[j] = energyRatio_fx[k][i]; // Q30 + hQMeta->q_direction[0].band_data[i].energy_ratio_fx[j] = energyRatio_fx[k][i]; // Q31 move32(); hQMeta->q_direction[0].band_data[i].distance[j] = fixedDistance; move16(); @@ -938,7 +947,7 @@ void ivas_mcmasa_param_est_enc_fx( Word32 renormalization_factor_coh_fx[MASA_FREQUENCY_BANDS]; // renormalization_factor_coh_e Word16 renormalization_factor_coh_e[MASA_FREQUENCY_BANDS]; Word16 surroundingCoherence_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; - Word16 numAnalysisChannels; + Word16 numAnalysisChannels, shift; FOR( i = 0; i < MCMASA_MAX_ANA_CHANS; i++ ) { @@ -1168,7 +1177,7 @@ void ivas_mcmasa_param_est_enc_fx( Foa_ImagBuffer_fx, 0, num_freq_bands, - intensity_real_fx ); + intensity_real_fx, &c_e, inp_q ); computeDirectionVectors_fixed( intensity_real_fx[0], @@ -1188,7 +1197,8 @@ void ivas_mcmasa_param_est_enc_fx( FoaEven_ImagBuffer_fx, 0, num_freq_bands, - intensity_even_real_fx ); + intensity_even_real_fx, &shift, inp_q ); + Word16 ref_e = 0; move16(); computeReferencePower_enc_fx( hMcMasa->band_grouping, @@ -1211,7 +1221,7 @@ void ivas_mcmasa_param_est_enc_fx( /* only real part needed */ Copy32( intensity_even_real_fx[i], &( hMcMasa->buffer_intensity_real_fx[i][index - 1][0] ), num_freq_bands ); // hMcMasa->buffer_intensity_real_q } - hMcMasa->buffer_intensity_real_q[index - 1] = sub( shl( inp_q, 1 ), 31 ); + hMcMasa->buffer_intensity_real_q[index - 1] = sub( 31, shift ); move16(); Copy32( reference_power_fx[ts], &( hMcMasa->buffer_energy_fx[( index - 1 ) * num_freq_bands] ), num_freq_bands ); // ref_e hMcMasa->buffer_energy_q[index - 1] = sub( Q31, ref_e ); @@ -1227,7 +1237,7 @@ void ivas_mcmasa_param_est_enc_fx( IF( !hMcMasa->isHorizontalSetup ) { Copy32( intensity_real_fx[2], &( hMcMasa->buffer_intensity_real_vert_fx[index - 1][0] ), num_freq_bands ); - hMcMasa->buffer_intensity_real_vert_q[index - 1] = sub( shl( inp_q, 1 ), 31 ); + hMcMasa->buffer_intensity_real_vert_q[index - 1] = sub( 31, c_e ); move16(); computeVerticalDiffuseness_fx( hMcMasa->buffer_intensity_real_vert_fx, hMcMasa->buffer_energy_fx, hMcMasa->no_col_avg_diff, num_freq_bands, vertical_diffuseness_vector_fx, hMcMasa->buffer_intensity_real_vert_q, hMcMasa->buffer_energy_q ); v_min_fx( diffuseness_vector_fx, out_exp, vertical_diffuseness_vector_fx, q_vdv, diffuseness_vector_fx, out_exp, num_freq_bands ); @@ -2071,21 +2081,30 @@ static void compute_cov_mtx_fx( return; } + static void computeIntensityVector_enc_fx( const Word16 *band_grouping, - Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], - Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], - const Word16 enc_param_start_band, /* i : first band to process */ + Word32 Cldfb_RealBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], /*inp_q*/ + Word32 Cldfb_ImagBuffer[FOA_CHANNELS][DIRAC_NO_FB_BANDS_MAX], /*inp_q*/ + const Word16 enc_param_start_band, /* i : first band to process */ const Word16 num_frequency_bands, - Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] ) + Word32 intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS], /*exp: exp_intensity_real*/ + Word16 *exp_intensity_real, + Word16 inp_q ) { - /* Reminder - * X = a + ib; Y = c + id - * X*Y = ac - bd + i(ad +bc) - */ Word16 i, j; Word32 real, img; - Word16 brange[2]; + Word16 brange[2], shift = 63; + move16(); + Flag is_zero = 0; + move16(); + + Word64 intensity_real64[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS]; + + FOR( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + set64_fx( intensity_real64[i], 0, MASA_FREQUENCY_BANDS ); + } FOR( i = enc_param_start_band; i < enc_param_start_band + num_frequency_bands; i++ ) { @@ -2108,17 +2127,51 @@ static void computeIntensityVector_enc_fx( img = Cldfb_ImagBuffer[0][j]; move32(); /* Intensity is XYZ order, audio is WYZX order. */ - intensity_real[0][i] = L_add( intensity_real[0][i], L_add( Mpy_32_32( Cldfb_RealBuffer[3][j], real ), Mpy_32_32( Cldfb_ImagBuffer[3][j], img ) ) ); // output Q= 2* input_q -31 + intensity_real64[0][i] = W_add( intensity_real64[0][i], W_add( W_mult0_32_32( Cldfb_RealBuffer[3][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[3][j], img ) ) ); // output Q= 2* input_q move32(); - intensity_real[1][i] = L_add( intensity_real[1][i], L_add( Mpy_32_32( Cldfb_RealBuffer[1][j], real ), Mpy_32_32( Cldfb_ImagBuffer[1][j], img ) ) ); // output Q= 2* input_q -31 + intensity_real64[1][i] = W_add( intensity_real64[1][i], W_add( W_mult0_32_32( Cldfb_RealBuffer[1][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[1][j], img ) ) ); // output Q= 2* input_q move32(); - intensity_real[2][i] = L_add( intensity_real[2][i], L_add( Mpy_32_32( Cldfb_RealBuffer[2][j], real ), Mpy_32_32( Cldfb_ImagBuffer[2][j], img ) ) ); // output Q= 2* input_q -31 + intensity_real64[2][i] = W_add( intensity_real64[2][i], W_add( W_mult0_32_32( Cldfb_RealBuffer[2][j], real ), W_mult0_32_32( Cldfb_ImagBuffer[2][j], img ) ) ); // output Q= 2* input_q move32(); } } + FOR( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + is_zero = is_zero_arr64( intensity_real64[i], MASA_FREQUENCY_BANDS ); + IF( is_zero == 0 ) + { + BREAK; + } + } + IF( is_zero == 0 ) + { + FOR( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + shift = s_min( shift, W_norm_arr( intensity_real64[i], MASA_FREQUENCY_BANDS ) ); + } + + FOR( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + FOR( j = 0; j < MASA_FREQUENCY_BANDS; j++ ) + { + intensity_real[i][j] = W_extract_h( W_shl( intensity_real64[i][j], shift ) ); + move32(); + } + } + + *exp_intensity_real = sub( 31, sub( add( shift, shl( inp_q, 1 ) ), 32 ) ); + move16(); + } + ELSE + { + *exp_intensity_real = 0; + move16(); + } + return; } + static void computeVerticalDiffuseness_fx( Word32 **buffer_intensity, /* i : Intensity vectors */ const Word32 *buffer_energy, /* i : Energy */ -- GitLab From bb0b3cc44f4b2844a19b09d7cbf3a77e968e34ec Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Thu, 22 May 2025 10:55:58 +0200 Subject: [PATCH 588/698] Added switches and definitions in options.h and common_api_types.h --- lib_com/common_api_types.h | 3 +++ lib_com/options.h | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index 3200cb21d..e1114a4f3 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -182,6 +182,9 @@ typedef struct TDREND_HRFILT_FiltSet_struct *IVAS_DEC_HRTF_HANDLE; typedef struct ivas_hrtfs_crend_structure *IVAS_DEC_HRTF_CREND_HANDLE; typedef struct ivas_hrtfs_fastconv_struct *IVAS_DEC_HRTF_FASTCONV_HANDLE; typedef struct ivas_hrtfs_parambin_struct *IVAS_DEC_HRTF_PARAMBIN_HANDLE; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +typedef struct ivas_hrtfs_statistics_struct *IVAS_DEC_HRTF_STATISTICS_HANDLE; +#endif typedef struct cldfb_filter_bank_struct *IVAS_CLDFB_FILTER_BANK_HANDLE; typedef struct ivas_LS_setup_custom *IVAS_LSSETUP_CUSTOM_HANDLE; diff --git a/lib_com/options.h b/lib_com/options.h index 2a87c540b..a5abfb012 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -99,6 +99,13 @@ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT +#define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format */ +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +#define NONBE_FIX_AVG_IAC_CLDFB_REVERB +#endif +#endif #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES #define NONBE_FIX_AVG_IAC_CLDFB_REVERB -- GitLab From 8483d61d58aa68a3efec8df2147e671cb0cb4da6 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 22 May 2025 11:15:36 +0200 Subject: [PATCH 589/698] port float MR 1406 --- lib_com/options.h | 4 ++- lib_dec/ivas_mct_dec_fx.c | 58 ++++++++++++++++++++++----------------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3e4dae0d5..e0a120754 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -127,7 +127,9 @@ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ -#endif +#endif +#define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ + /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index db9cddc39..c42df1943 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1022,31 +1022,39 @@ static ivas_error ivas_mc_dec_reconfig_fx( ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->intern_config ); /* transfer subframe info from DirAC or ParamMC to central tc buffer */ - test(); - IF( EQ_16( last_mc_mode, MC_MODE_PARAMMC ) ) - { - st_ivas->hTcBuffer->nb_subframes = st_ivas->hParamMC->nb_subframes; - move16(); - st_ivas->hTcBuffer->subframes_rendered = st_ivas->hParamMC->subframes_rendered; - move16(); - st_ivas->hTcBuffer->num_slots = st_ivas->hParamMC->num_slots; - move16(); - st_ivas->hTcBuffer->slots_rendered = st_ivas->hParamMC->slots_rendered; - move16(); - Copy( st_ivas->hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); - } - ELSE IF( EQ_16( last_mc_mode, MC_MODE_MCMASA ) && st_ivas->hSpatParamRendCom != NULL ) - { - st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; - move16(); - st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; - move16(); - st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots; - move16(); - st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; - move16(); - Copy( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); - } + +#ifdef NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE + if (st_ivas->hTcBuffer->tc_buffer_mode != TC_BUFFER_MODE_BUFFER) + { +#endif + test(); + IF( EQ_16( last_mc_mode, MC_MODE_PARAMMC ) ) + { + st_ivas->hTcBuffer->nb_subframes = st_ivas->hParamMC->nb_subframes; + move16(); + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hParamMC->subframes_rendered; + move16(); + st_ivas->hTcBuffer->num_slots = st_ivas->hParamMC->num_slots; + move16(); + st_ivas->hTcBuffer->slots_rendered = st_ivas->hParamMC->slots_rendered; + move16(); + Copy( st_ivas->hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + } + ELSE IF( EQ_16( last_mc_mode, MC_MODE_MCMASA ) && st_ivas->hSpatParamRendCom != NULL ) + { + st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; + move16(); + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; + move16(); + st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots; + move16(); + st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; + move16(); + Copy( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + } +#ifdef NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE + } +#endif /* JBM: when granularity goes down (e.g. MCT with CREND -> ParamMC with binaural fastconv render what still fits in the new granularity */ -- GitLab From 40b4db53fa0abe119a30fc66a42f92da7fee4a94 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 22 May 2025 11:22:27 +0200 Subject: [PATCH 590/698] fix formatting --- lib_dec/ivas_mct_dec_fx.c | 56 +++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index c42df1943..5550c4ea1 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1024,36 +1024,36 @@ static ivas_error ivas_mc_dec_reconfig_fx( /* transfer subframe info from DirAC or ParamMC to central tc buffer */ #ifdef NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE - if (st_ivas->hTcBuffer->tc_buffer_mode != TC_BUFFER_MODE_BUFFER) - { + if ( st_ivas->hTcBuffer->tc_buffer_mode != TC_BUFFER_MODE_BUFFER ) + { #endif - test(); - IF( EQ_16( last_mc_mode, MC_MODE_PARAMMC ) ) - { - st_ivas->hTcBuffer->nb_subframes = st_ivas->hParamMC->nb_subframes; - move16(); - st_ivas->hTcBuffer->subframes_rendered = st_ivas->hParamMC->subframes_rendered; - move16(); - st_ivas->hTcBuffer->num_slots = st_ivas->hParamMC->num_slots; - move16(); - st_ivas->hTcBuffer->slots_rendered = st_ivas->hParamMC->slots_rendered; - move16(); - Copy( st_ivas->hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); - } - ELSE IF( EQ_16( last_mc_mode, MC_MODE_MCMASA ) && st_ivas->hSpatParamRendCom != NULL ) - { - st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; - move16(); - st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; - move16(); - st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots; - move16(); - st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; - move16(); - Copy( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); - } + test(); + IF( EQ_16( last_mc_mode, MC_MODE_PARAMMC ) ) + { + st_ivas->hTcBuffer->nb_subframes = st_ivas->hParamMC->nb_subframes; + move16(); + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hParamMC->subframes_rendered; + move16(); + st_ivas->hTcBuffer->num_slots = st_ivas->hParamMC->num_slots; + move16(); + st_ivas->hTcBuffer->slots_rendered = st_ivas->hParamMC->slots_rendered; + move16(); + Copy( st_ivas->hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + } + ELSE IF( EQ_16( last_mc_mode, MC_MODE_MCMASA ) && st_ivas->hSpatParamRendCom != NULL ) + { + st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; + move16(); + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; + move16(); + st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots; + move16(); + st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; + move16(); + Copy( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + } #ifdef NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE - } + } #endif /* JBM: when granularity goes down (e.g. MCT with CREND -> ParamMC with binaural fastconv -- GitLab From 58369307c2ca3af4bd89c864b40d0c9a3502fd38 Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 22 May 2025 11:26:15 +0200 Subject: [PATCH 591/698] move define --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 795ba138c..91172d59a 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -96,7 +96,6 @@ #define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ -#define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT @@ -120,6 +119,7 @@ #define FIX_ACCESS_WITHIN_NULL_STRUCT_MC_BW_SWITCHING /* FhG: fix usan error in MCT with bw swicthing */ #define NONBE_FIX_986_MC_BW_SWITCHING /* FhG: fix crash in bw and br switching with MC */ #define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ +#define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC -- GitLab From 423d89c59dac6f17a8e1b08e45dc56b260fc220a Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 22 May 2025 12:04:26 +0200 Subject: [PATCH 592/698] increase split rendering job timeout to 60 minutes --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 27535f94c..7e06c92b3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1379,7 +1379,7 @@ split-rendering-pytest-on-merge-request: - .test-job-linux-needs-testv-dir - .rules-merge-request-to-main-pc needs: ["build-codec-linux-make"] - timeout: "45 minutes" + timeout: "60 minutes" stage: compare script: - *print-common-info -- GitLab From 555f98cfaf0d8f72419236b2799bd8e41610bb65 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Thu, 22 May 2025 12:12:20 +0200 Subject: [PATCH 593/698] all changes in lib_util + imp declarations in lib_rend and lib_dec --- lib_com/options.h | 2 +- lib_dec/ivas_stat_dec.h | 3 ++ lib_dec/lib_dec.h | 6 +++ lib_dec/lib_dec_fx.c | 23 ++++++++++++ lib_rend/ivas_stat_rend.h | 15 +++++++- lib_util/hrtf_file_reader.c | 75 +++++++++++++++++++++++++++++++++++-- lib_util/hrtf_file_reader.h | 12 ++++++ 7 files changed, 131 insertions(+), 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index a5abfb012..17eeaec92 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -97,7 +97,7 @@ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ -//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index d86ece7c8..c6f06f142 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -1155,6 +1155,9 @@ typedef struct Decoder_Struct HRTFS_CREND_HANDLE hSetOfHRTF; /* Set of HRTFs handle (CRend) */ HRTFS_FASTCONV_HANDLE hHrtfFastConv; /* FASTCONV HRTF tables for binaural rendering */ HRTFS_PARAMBIN_HANDLE hHrtfParambin; /* HRTF tables for parametric binauralizer */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + HRTFS_STATISTICS_HANDLE hHrtfStatistics; /* HRTF statistics handle */ +#endif LSSETUP_CUSTOM_HANDLE hLsSetupCustom; /* Custom LS configuration handle */ Word32 *hoa_dec_mtx; /* Pointer to decoder matrix for SBA */ HEAD_TRACK_DATA_HANDLE hHeadTrackData; /* Head tracking data structure */ diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index b6ce35d90..eca274491 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -379,6 +379,12 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle( IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +ivas_error IVAS_DEC_GetHrtfStatisticsHandle( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ +); +#endif /*! r: error code*/ ivas_error IVAS_DEC_GetRenderConfig( diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 63f0ab53f..eee250751 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -2599,6 +2599,29 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle( return IVAS_ERR_OK; } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*---------------------------------------------------------------------* + * IVAS_DEC_GetHrtfStatisticsHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_GetHrtfStatisticsHandle( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ +) +{ + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hHrtfStatistics == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfStatistics = &hIvasDec->st_ivas->hHrtfStatistics; + + return IVAS_ERR_OK; +} +#endif + /*---------------------------------------------------------------------* * copyRendererConfigStruct( ) * diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index cc1565943..d8dd14034 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -1200,9 +1200,11 @@ typedef struct TDREND_HRFILT_FiltSet_struct ModelParamsITD_t ModelParamsITD; TDREND_HRFILT_Method_t FilterMethod; /* HR filtering method */ Word32 latency_s_fx; /* Q31 */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#else const Word32 *lr_energy_and_iac_fx[3]; /* left/right energy and interaural coherence for late reverb */ Word32 *lr_energy_and_iac_dyn_fx[3]; - +#endif } TDREND_HRFILT_FiltSet_t; /* Distance attenuation */ @@ -1474,6 +1476,17 @@ typedef struct ivas_hrtfs_parambin_struct } HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +typedef struct ivas_hrtfs_statistics_struct +{ + float *average_energy_l; + float *average_energy_r; + float *inter_aural_coherence; + int16_t fromROM; /* Flag that indicates that the pointers point to tables in ROM (controls init/dealloc).*/ +} HRTFS_STATISTICS, *HRTFS_STATISTICS_HANDLE; +#endif + #ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------------------* diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index ee103db2d..fd53eb631 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -577,6 +577,7 @@ static ivas_error LoadBSplineBinary( } #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-------------------------------------------------------------------* * set_default_reverb_iac_energy() * @@ -689,6 +690,7 @@ static ivas_error set_default_reverb_iac_energy( return IVAS_ERR_OK; } +#endif #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES @@ -699,11 +701,18 @@ static ivas_error set_default_reverb_iac_energy( --------------------------------------------------------------------*/ static ivas_error load_reverb_from_binary( +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics, /* i/o: HRTF statistics handle */ + int32_t sampleRate, /* i : sample rate */ +#else IVAS_DEC_HRTF_HANDLE HrFiltSet_p, /* i/o: HR filter model parameter structure */ - FILE *f_hrtf /* i : HR filter data file handle */ +#endif + FILE *f_hrtf /* i : HR filter data file handle */ ) { +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES int16_t i; +#endif bool is_reverb; ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; @@ -715,13 +724,21 @@ static ivas_error load_reverb_from_binary( int16_t lr_iac_len; float f_tmp_lr_energy_and_iac_dyn[LR_IAC_LENGTH_NR_FC]; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if ( hHrtfStatistics == NULL ) +#else if ( HrFiltSet_p == NULL ) +#endif { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } lr_iac_len = LR_IAC_LENGTH_NR_FC; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if ( sampleRate == 16000 ) +#else if ( HrFiltSet_p->SampleRate == 16000 ) +#endif { lr_iac_len = LR_IAC_LENGTH_NR_FC_16KHZ; } @@ -779,6 +796,21 @@ static ivas_error load_reverb_from_binary( if ( is_reverb ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + hHrtfStatistics->average_energy_l = (float *) malloc( lr_iac_len * sizeof( float ) ); + hHrtfStatistics->average_energy_r = (float *) malloc( lr_iac_len * sizeof( float ) ); + hHrtfStatistics->inter_aural_coherence = (float *) malloc( lr_iac_len * sizeof( float ) ); + + if ( hHrtfStatistics->average_energy_l == NULL || hHrtfStatistics->average_energy_r == NULL || hHrtfStatistics->inter_aural_coherence == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + fread( hHrtfStatistics->average_energy_l, sizeof( const float ), lr_iac_len, f_hrtf ); + fread( hHrtfStatistics->average_energy_r, sizeof( const float ), lr_iac_len, f_hrtf ); + fread( hHrtfStatistics->inter_aural_coherence, sizeof( const float ), lr_iac_len, f_hrtf ); + + hHrtfStatistics->fromROM = FALSE; +#else /* left/right energy and interaural coherence for late reverb */ FOR( i = 0; i < 3; i++ ) { @@ -816,14 +848,17 @@ static ivas_error load_reverb_from_binary( HrFiltSet_p->lr_energy_and_iac_fx[i] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[i]; #endif } +#endif } else { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#else if ( ( header_check_result = set_default_reverb_iac_energy( HrFiltSet_p ) ) != IVAS_ERR_OK ) { return header_check_result; } - +#endif return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; } @@ -838,13 +873,22 @@ static ivas_error load_reverb_from_binary( *---------------------------------------------------------------------*/ ivas_error load_reverb_binary( - IVAS_DEC_HRTF_HANDLE hHrtf, /* i/o: HRTF handle */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics, /* i/o: HRTF statistics handle */ + int32_t sampleRate, /* i : sample rate */ +#else + IVAS_DEC_HRTF_HANDLE hHrtf, /* i/o: HRTF handle */ +#endif const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ) { fseek( hrtfReader->file, 0, SEEK_SET ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + return load_reverb_from_binary( hHrtfStatistics, sampleRate, hrtfReader->file ); +#else return load_reverb_from_binary( hHrtf, hrtfReader->file ); +#endif } #endif /*-------------------------------------------------------------------* @@ -1109,10 +1153,12 @@ void destroy_td_hrtf( free( ( *hHrtf )->ModelEval.hrfModL_fx ); free( ( *hHrtf )->ModelEval.hrfModR_fx ); +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES for ( i = 0; i < 3; i++ ) { free( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ); } +#endif } #ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB else @@ -2314,6 +2360,29 @@ void destroy_SetOfHRTF( } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*---------------------------------------------------------------------* + * destroy_hrtf_statistics() + * + * Destroy the HRTF statistics set. + *---------------------------------------------------------------------*/ + +ivas_error destroy_hrtf_statistics( + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ +) +{ + if ( hHrtfStatistics != NULL && ( *hHrtfStatistics )->fromROM == FALSE ) + { + free( ( *hHrtfStatistics )->average_energy_l ); + free( ( *hHrtfStatistics )->average_energy_r ); + free( ( *hHrtfStatistics )->inter_aural_coherence ); + } + ivas_HRTF_statistics_close( hHrtfStatistics ); + return IVAS_ERR_OK; +} +#endif + + /*---------------------------------------------------------------------* * destroy_fastconv_hrtf() * diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index 9a06a4e3b..51c321352 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -190,6 +190,18 @@ void destroy_parambin_hrtf( IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* i/o: Parambin HRTF handle */ ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*---------------------------------------------------------------------* + * destroy_hrtf_statistics() + * + * free memory allocated for HRTF statistics binary data + *---------------------------------------------------------------------*/ + +ivas_error destroy_hrtf_statistics( + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ +); +#endif + /*---------------------------------------------------------------------* * destroy_td_hrtf() * -- GitLab From e22f1a9fa3653a7224d7a219851b39ef4d3cb651 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Thu, 22 May 2025 17:07:14 +0200 Subject: [PATCH 594/698] lib_rend header and .c with changes --- lib_rend/lib_rend.c | 387 +++++++++++++++++++++++++----------- lib_rend/lib_rend.h | 15 +- lib_util/hrtf_file_reader.c | 1 - 3 files changed, 281 insertions(+), 122 deletions(-) diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 12fb2c524..ecab18225 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -212,6 +212,9 @@ typedef struct hrtf_handles IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv; IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin; IVAS_DEC_HRTF_HANDLE hHrtfTD; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics; +#endif } hrtf_handles; struct IVAS_REND @@ -251,8 +254,11 @@ struct IVAS_REND /*-------------------------------------------------------------------* * Local function prototypes *-------------------------------------------------------------------*/ - +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig, const RENDER_CONFIG_DATA *hRendCfg, hrtf_handles *hHrtfs ); +#else static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig, hrtf_handles *hHrtfs ); +#endif static void freeMasaExtRenderer( MASA_EXT_REND_HANDLE *hMasaExtRendOut ); static void intermidiate_ext_dirac_render( @@ -1522,10 +1528,13 @@ static ivas_error setRendInputActiveIsm( #endif { #ifndef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) - { - return error; - } +#endif { + return error; + } #else IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { @@ -1585,53 +1594,57 @@ static ivas_error setRendInputActiveIsm( } } #endif - } - ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) +} +ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) +{ + IF( NE_32( ( error = initIsmMasaRendering( inputIsm, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) { - IF( NE_32( ( error = initIsmMasaRendering( inputIsm, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) - { - return error; - } + return error; } - ELSE - { +} +ELSE +{ #ifndef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) - { - return error; - } - Word16 nchan_rend = num_src; - move16(); + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + Word16 nchan_rend = num_src; + move16(); - test(); - IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } + test(); + IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) { - TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; - IF( Src_p != NULL ) + IF( Src_p->SrcSpatial_p != NULL ) { - IF( Src_p->SrcSpatial_p != NULL ) - { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; + Src_p->SrcSpatial_p->q_Pos_p = Q31; move16(); } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); } + } - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_reverb_open( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ) IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#endif { - IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) - { - return error; - } + return error; } + } #else IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { @@ -1665,22 +1678,30 @@ static ivas_error setRendInputActiveIsm( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_reverb_open( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) { - return error; - } +#endif + return error; } - ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) - { + } + ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) - { - return error; - } - } #endif + { + return error; + } } +#endif +} - return IVAS_ERR_OK; +return IVAS_ERR_OK; } static void clearInputIsm( @@ -2494,6 +2515,9 @@ static ivas_error initMcBinauralRendering( const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, IVAS_DEC_HRTF_CREND_HANDLE hMixconv, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + HRTFS_STATISTICS_HANDLE hHrtfStatistics, +#endif uint8_t reconfigureFlag ) { ivas_error error; @@ -2653,69 +2677,82 @@ static ivas_error initMcBinauralRendering( test(); IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && inputMc->hReverb == NULL ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_reverb_open( &( inputMc->hReverb ), hHrtfStatistics, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_reverb_open_fx( &( inputMc->hReverb ), outConfig, NULL, inputMc->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) - { - return error; - } +#endif { + return error; } } - ELSE IF( !useTDRend && inputMc->crendWrapper == NULL ) - { - /* open CREND */ +} +ELSE IF( !useTDRend && inputMc->crendWrapper == NULL ) +{ + /* open CREND */ #ifdef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, - hMixconv, - outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), - IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, + outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), + IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, - hMixconv, - outSampleRate ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + hMixconv, + outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), + IVAS_ERR_OK ) ) #endif - { - return error; - } +#else +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, outSampleRate ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + hMixconv, + outSampleRate ) ), + IVAS_ERR_OK ) ) +#endif +#endif + { + return error; } +} - /* Initialise the EFAP handle for rotation on input layout */ - test(); - test(); - IF( NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && inputMc->base.ctx.pHeadRotData->headRotEnabled && inputMc->efapInWrapper.hEfap == NULL ) +/* Initialise the EFAP handle for rotation on input layout */ +test(); +test(); +IF( NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && inputMc->base.ctx.pHeadRotData->headRotEnabled && inputMc->efapInWrapper.hEfap == NULL ) +{ + IF( NE_32( ( error = initEfap( &inputMc->efapInWrapper, inConfig, NULL ) ), IVAS_ERR_OK ) ) { - IF( NE_32( ( error = initEfap( &inputMc->efapInWrapper, inConfig, NULL ) ), IVAS_ERR_OK ) ) - { - return error; - } + return error; } +} - /* determine binaural delay ( used for aligning LFE to output signal ) */ +/* determine binaural delay ( used for aligning LFE to output signal ) */ - IF( ( inputMc->crendWrapper != NULL ) ) - { - binauralDelayNs = inputMc->crendWrapper->binaural_latency_ns; - } - ELSE - { - binauralDelayNs = 0; - } - move32(); +IF( ( inputMc->crendWrapper != NULL ) ) +{ + binauralDelayNs = inputMc->crendWrapper->binaural_latency_ns; +} +ELSE +{ + binauralDelayNs = 0; +} +move32(); - binauralDelayNs = L_max( binauralDelayNs, inputMc->tdRendWrapper.binaural_latency_ns ); - Word16 exp = 0; - move16(); - Word16 var1 = BASOP_Util_Divide3232_Scale( *inputMc->base.ctx.pOutSampleRate, 1000000000, &exp ); - Word32 var2 = L_shr_r( Mpy_32_32( binauralDelayNs, L_deposit_h( var1 ) ), negate( exp ) ); /* Q0 */ - inputMc->binauralDelaySmp = extract_l( var2 ); - move16(); - // inputMc->binauralDelaySmp = (int16_t) roundf( (float) binauralDelayNs * *inputMc->base.ctx.pOutSampleRate / 1000000000.f ); +binauralDelayNs = L_max( binauralDelayNs, inputMc->tdRendWrapper.binaural_latency_ns ); +Word16 exp = 0; +move16(); +Word16 var1 = BASOP_Util_Divide3232_Scale( *inputMc->base.ctx.pOutSampleRate, 1000000000, &exp ); +Word32 var2 = L_shr_r( Mpy_32_32( binauralDelayNs, L_deposit_h( var1 ) ), negate( exp ) ); /* Q0 */ +inputMc->binauralDelaySmp = extract_l( var2 ); +move16(); +// inputMc->binauralDelaySmp = (int16_t) roundf( (float) binauralDelayNs * *inputMc->base.ctx.pOutSampleRate / 1000000000.f ); - IF( GT_16( inputMc->binauralDelaySmp, MAX_BIN_DELAY_SAMPLES ) ) - { - return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid delay for LFE binaural rendering!)" ); - } +IF( GT_16( inputMc->binauralDelaySmp, MAX_BIN_DELAY_SAMPLES ) ) +{ + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid delay for LFE binaural rendering!)" ); +} - return IVAS_ERR_OK; +return IVAS_ERR_OK; } static ivas_error initMcMasaRendering( @@ -2893,10 +2930,15 @@ static ivas_error setRendInputActiveMc( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, FALSE ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, hrtfs->hSetOfHRTF, FALSE ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -3059,7 +3101,13 @@ static ivas_error updateSbaPanGains( input_sba *inputSba, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, - IVAS_DEC_HRTF_CREND_HANDLE hMixconv ) + IVAS_DEC_HRTF_CREND_HANDLE hMixconv +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + , + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics +#endif + +) { ivas_error error; AUDIO_CONFIG inConfig; @@ -3122,11 +3170,17 @@ static ivas_error updateSbaPanGains( #endif { #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) - +#endif +#else +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) - +#endif #endif { return error; @@ -3141,9 +3195,17 @@ static ivas_error updateSbaPanGains( return error; } #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#endif +#else +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) +#endif #endif { return error; @@ -3257,13 +3319,16 @@ static ivas_error setRendInputActiveSba( return error; } } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg, hrtfs->hSetOfHRTF ) ), IVAS_ERR_OK ) ) - { - return error; - } - +#endif { return error; } + +return error; +} static void clearInputSba( input_sba *inputSba ) { @@ -3298,8 +3363,11 @@ static ivas_error setRendInputActiveMasa( const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg, hrtf_handles *hrtfs - +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +) +#else ) /* Todo: This is not used at all within MASA. Support might be better to do after refactoring. */ +#endif { ivas_error error; rendering_context rendCtx; @@ -3311,7 +3379,9 @@ static ivas_error setRendInputActiveMasa( rendCtx = inputMasa->base.ctx; outConfig = *rendCtx.pOutConfig; move32(); +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES (void) hRendCfg; /* Suppress warning */ +#endif IF( !isIoConfigPairSupported( inConfig, outConfig ) ) { @@ -3350,15 +3420,18 @@ static ivas_error setRendInputActiveMasa( } ELSE { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig, hRendCfg, hrtfs ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig, hrtfs ) ), IVAS_ERR_OK ) ) - { - return error; - } - inputMasa->metadataHasBeenFed = false; - move16(); +#endif { + return error; } + inputMasa->metadataHasBeenFed = false; + move16(); +} - return IVAS_ERR_OK; +return IVAS_ERR_OK; } static void clearInputMasa( @@ -3546,6 +3619,9 @@ ivas_error IVAS_REND_Open( hIvasRend->hHrtfs.hHrtfParambin = NULL; hIvasRend->hHrtfs.hHrtfTD = NULL; hIvasRend->hHrtfs.hSetOfHRTF = NULL; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + hIvasRend->hHrtfs.hHrtfStatistics = NULL; +#endif IF( asHrtfBinary ) { IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( hIvasRend->hHrtfs.hHrtfTD ) ) ), IVAS_ERR_OK ) ) @@ -3564,10 +3640,23 @@ ivas_error IVAS_REND_Open( { return error; } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &( hIvasRend->hHrtfs.hHrtfStatistics ) ) ), IVAS_ERR_OK ) ) + { + return error; + } +#endif } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_HRTF_statistics_init( &( hIvasRend->hHrtfs.hHrtfStatistics ), hIvasRend->sampleRateOut ) ), IVAS_ERR_OK ) ) + { + return error; + } +#endif return IVAS_ERR_OK; } + static LSSETUP_CUSTOM_STRUCT makeCustomLsSetup( const IVAS_CUSTOM_LS_DATA rendCustomLsLayout ) { @@ -3711,7 +3800,11 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( /* Input inactive, skip. */ CONTINUE; } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig, NULL, NULL ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig, NULL ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -4228,8 +4321,14 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( IF( EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, + IF( NE_32( ( error = initMcBinauralRendering( inputMc, + inputMc->base.inConfig, + hIvasRend->outputConfig, + hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + hIvasRend->hHrtfs.hHrtfStatistics, +#endif FALSE ) ), IVAS_ERR_OK ) ) { @@ -5062,8 +5161,14 @@ ivas_error IVAS_REND_SetHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], + hIvasRend->inputsMc[i].base.inConfig, + hIvasRend->outputConfig, + hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + hIvasRend->hHrtfs.hHrtfStatistics, +#endif TRUE ) ), IVAS_ERR_OK ) ) { @@ -5169,8 +5274,14 @@ ivas_error IVAS_REND_DisableHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], + hIvasRend->inputsMc[i].base.inConfig, + hIvasRend->outputConfig, + hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + hIvasRend->hHrtfs.hHrtfStatistics, +#endif TRUE ) ), IVAS_ERR_OK ) ) { @@ -9337,6 +9448,9 @@ void IVAS_REND_Close( ivas_HRTF_CRend_binary_close_fx( &( hIvasRend->hHrtfs.hSetOfHRTF ) ); ivas_HRTF_fastconv_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfFastConv ) ); ivas_HRTF_parambin_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfParambin ) ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + ivas_HRTF_statistics_close( &( hIvasRend->hHrtfs.hHrtfStatistics ) ); +#endif free( hIvasRend ); *phIvasRend = NULL; @@ -9569,6 +9683,30 @@ ivas_error IVAS_REND_GetHrtfParamBinHandle( return IVAS_ERR_OK; } + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfStatisticsHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfStatisticsHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfStatistics == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfStatistics = &hIvasRend->hHrtfs.hHrtfStatistics; + + return IVAS_ERR_OK; +} +#endif + static ivas_error ivas_masa_ext_rend_dirac_rend_init( input_masa *inputMasa ) { @@ -9998,7 +10136,13 @@ static ivas_error ivas_masa_ext_rend_dirac_rend_init( static ivas_error ivas_masa_ext_rend_parambin_init( +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + input_masa *inputMasa, /* i/o: MASA external renderer structure */ + const RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration data handle */ + HRTFS_STATISTICS_HANDLE hHrtfStatistics /* i : HRTF statistics */ +#else input_masa *inputMasa /* i/o: MASA external renderer structure */ +#endif ) { DIRAC_DEC_BIN_HANDLE hDiracDecBin; @@ -10137,9 +10281,12 @@ static ivas_error ivas_masa_ext_rend_parambin_init( IF( hDiracDecBin->hReverb == NULL ) #endif { - /* Todo Philips: Room acoustics should be passed here once the underlying part works. In this case, it probably should come from render context or somewhere else suitable. */ - IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ), IVAS_ERR_OK ) ) - { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes, hHrtfParambin->parametricReverberationEneCorrections ) ) , IVAS_ERR_OK ) ) +#else + /* Todo Philips: Room acoustics should be passed here once the underlying part works. In this case, it probably should come from render context or somewhere else suitable. */ + IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ) , IVAS_ERR_OK ) ) +#endif { return error; } } @@ -10197,6 +10344,9 @@ static ivas_error ivas_masa_ext_rend_parambin_init( static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const RENDER_CONFIG_DATA *hRendCfg, +#endif hrtf_handles *hrtfs ) { Word16 i; @@ -10331,9 +10481,12 @@ static ivas_error initMasaExtRenderer( return error; } } - +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if( NE_32( ( error = ivas_masa_ext_rend_parambin_init( inputMasa, hRendCfg, hrtfs->hHrtfStatistics ) ) , IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_masa_ext_rend_parambin_init( inputMasa ) ), IVAS_ERR_OK ) ) - { +#endif + { return error; } } diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index 50663f936..9615a170d 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -193,26 +193,33 @@ ivas_error IVAS_REND_GetDelay( /*! r: error code */ ivas_error IVAS_REND_GetHrtfHandle( - IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS rendder handle */ IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ ); /*! r: error code */ ivas_error IVAS_REND_GetHrtfCRendHandle( - IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS render handle */ IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ ); ivas_error IVAS_REND_GetHrtfFastConvHandle( - IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS render handle */ IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ ); ivas_error IVAS_REND_GetHrtfParamBinHandle( - IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS render handle */ IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +ivas_error IVAS_REND_GetHrtfStatisticsHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ +); +#endif + /* Functions to be called during rendering */ ivas_error IVAS_REND_FeedInputAudio_fx( diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index fd53eb631..7f58cfc94 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -2359,7 +2359,6 @@ void destroy_SetOfHRTF( return; } - #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*---------------------------------------------------------------------* * destroy_hrtf_statistics() -- GitLab From 06917878414b2d8de2b02254c4589458fff3b8bb Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Thu, 22 May 2025 17:29:16 +0200 Subject: [PATCH 595/698] All reverb .c files from lib_rend --- lib_rend/ivas_reverb_filter_design_fx.c | 4 ++ lib_rend/ivas_reverb_fx.c | 88 ++++++++++++++++++++++--- lib_rend/ivas_reverb_utils_fx.c | 51 ++++++++++++-- 3 files changed, 130 insertions(+), 13 deletions(-) diff --git a/lib_rend/ivas_reverb_filter_design_fx.c b/lib_rend/ivas_reverb_filter_design_fx.c index 62c97f88f..ba6a53c7a 100644 --- a/lib_rend/ivas_reverb_filter_design_fx.c +++ b/lib_rend/ivas_reverb_filter_design_fx.c @@ -919,6 +919,9 @@ void ivas_reverb_interpolate_acoustic_data_fx( return; } + + +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-------------------------------------------------------------------* * ivas_reverb_get_hrtf_set_properties() * @@ -1174,3 +1177,4 @@ void ivas_reverb_get_hrtf_set_properties_fx( return; } +#endif diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 9b149940c..09af39bb6 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -1264,21 +1264,32 @@ static void set_fft_and_datablock_sizes_fx( static void set_reverb_acoustic_data_fx( ivas_reverb_params_t *pParams, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#else const AUDIO_CONFIG input_audio_config, const HRTFS_HANDLE hHrtf, +#endif IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pRoomAcoustics, +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const Word16 subframe_len, +#endif const Word16 nr_fc_input, const Word16 nr_fc_fft_filter ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + int16_t bin_idx; +#else Word16 nr_out_ch, hrtf_idx, offset, iter_idx, bin_idx; +#endif + Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; + Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; + Word16 pow_exp; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#else Word32 *pHrtf_set_l_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_l_im_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_im_fx[MAX_INTERN_CHANNELS]; - Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; - Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; - Word16 pow_exp; Word32 *pFc_input_fx = pRoomAcoustics->pFc_input_fx; Word32 *pAcoustic_rt60_fx = pRoomAcoustics->pAcoustic_rt60_fx; @@ -1330,7 +1341,7 @@ static void set_reverb_acoustic_data_fx( pParams->pHrtf_avg_pwr_response_r_const_fx = (const Word32 *) pParams->pHrtf_avg_pwr_response_r_fx; pParams->pHrtf_inter_aural_coherence_const_fx = (const Word32 *) pParams->pHrtf_inter_aural_coherence_fx; } - +#endif /* interpolate input table data for T60 and DSR to the FFT filter grid */ ivas_reverb_interpolate_acoustic_data_fx( nr_fc_input, pFc_input_fx, pAcoustic_rt60_fx, pAcoustic_dsr_fx, nr_fc_fft_filter, pFc_fx, pRt60_fx, pDsr_fx, pRt60_e, pDsr_e ); @@ -1461,13 +1472,16 @@ static ivas_error setup_FDN_branches_fx( *------------------------------------------------------------------------*/ ivas_error ivas_reverb_open_fx( - REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ + REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ +#else const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */ const HRTFS_HANDLE hHrtf, /* i : HRTF handle */ const Word32 *lr_energy_and_iac_fx[], /* i : precomuputed lr energies and iac */ - RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ - const Word32 output_Fs /* i : output sampling rate */ -) +#endif + RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ + const int32_t output_Fs ) { ivas_error error; REVERB_HANDLE pState = NULL; @@ -1541,6 +1555,13 @@ ivas_error ivas_reverb_open_fx( } test(); + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + set_reverb_acoustic_data( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter ); + params.pHrtf_avg_pwr_response_l_const = hHrtfStatistics->average_energy_l; + params.pHrtf_avg_pwr_response_r_const = hHrtfStatistics->average_energy_r; + params.pHrtf_inter_aural_coherence_const = hHrtfStatistics->inter_aural_coherence; +#else IF( hHrtf == NULL && lr_energy_and_iac_fx != NULL ) { params.pHrtf_avg_pwr_response_l_const_fx = lr_energy_and_iac_fx[0]; @@ -1564,6 +1585,7 @@ ivas_error ivas_reverb_open_fx( params.pDsr_fx[i] = L_abs( params.pDsr_fx[i] ); move32(); } +#endif /* set reverb acoustic configuration based on renderer config */ pState->pConfig.roomAcoustics.override = hRenderConfig->roomAcoustics.override; @@ -2416,6 +2438,55 @@ static ivas_error ivas_binaural_reverb_open_fx( return IVAS_ERR_OK; } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*------------------------------------------------------------------------- + * ivas_binaural_reverb_init() + * + * Allocate and initialize binaural room reverberator handle + * for CLDFB renderers + *------------------------------------------------------------------------*/ +ivas_error ivas_binaural_reverb_init( + REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ + const int16_t numBins, /* i : number of CLDFB bins */ + const int16_t numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ + const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ + const int32_t sampling_rate, /* i : sampling rate */ + const float *defaultTimes, /* i : default reverberation times */ + const float *defaultEne /* i : default reverberation energies */ +) +{ + ivas_error error; + const float *revTimes; + const float *revEne; + float t60[CLDFB_NO_CHANNELS_MAX]; + float ene[CLDFB_NO_CHANNELS_MAX]; + int16_t preDelay; + + error = IVAS_ERR_OK; + + if ( ( roomAcoustics != NULL ) && roomAcoustics->override ) + { + revTimes = t60; + revEne = ene; + + if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) + { + return error; + } + preDelay = (int16_t) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX ); + } + else + { + revTimes = defaultTimes; + revEne = defaultEne; + preDelay = 10; + } + + error = ivas_binaural_reverb_open( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); + + return error; +} /*------------------------------------------------------------------------- * ivas_binaural_reverb_open_fastconv() * @@ -2515,6 +2586,7 @@ ivas_error ivas_binaural_reverb_open_parambin( return error; } +#endif /*------------------------------------------------------------------------- * ivas_binaural_reverb_close() diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index b3e1e72fa..53d4cf355 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -64,8 +64,11 @@ typedef struct cldfb_convolver_state float filter_states_im[BINAURAL_CONVBANDS][CLDFB_CONVOLVER_NTAPS_MAX]; } cldfb_convolver_state; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +static void ivas_reverb_set_energies( const float *avg_pwr_l, const float *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out ); +#else static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ); - +#endif /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_prepare_cldfb_params() @@ -74,10 +77,15 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCO *-----------------------------------------------------------------------------------------*/ ivas_error ivas_reverb_prepare_cldfb_params( +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, +#else IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, +#endif const int32_t output_Fs, float *pOutput_t60, float *pOutput_ene ) @@ -89,7 +97,9 @@ ivas_error ivas_reverb_prepare_cldfb_params( float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; +#endif for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { @@ -133,11 +143,14 @@ ivas_error ivas_reverb_prepare_cldfb_params( exp_argument = max( exp_argument, -23.0f ); pOutput_ene[idx] *= expf( exp_argument ); } - +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); +#else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) { return error; } +#endif for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { @@ -147,13 +160,13 @@ ivas_error ivas_reverb_prepare_cldfb_params( return IVAS_ERR_OK; } - +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-----------------------------------------------------------------------------------------* * Function ivas_cldfb_convolver() * * Function for convolving CLDFB-domain data with filter taps *-----------------------------------------------------------------------------------------*/ - +#endif /*-----------------------------------------------------------------------------------------* * Function get_IR_from_filter_taps() @@ -260,7 +273,18 @@ static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties( return IVAS_ERR_OK; } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*-----------------------------------------------------------------------------------------* + * Function ivas_reverb_set_energies() + * + * Function gets the precalculated left/right energies and computes average + * left/right energies to CLDFB bin center frequencies. + *-----------------------------------------------------------------------------------------*/ +static void ivas_reverb_set_energies( + const float *avg_pwr_l, + const float *avg_pwr_r, +#else /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_get_fastconv_hrtf_set_energies() * @@ -273,21 +297,34 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, +#endif const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ) { int16_t freq_idx; +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES float avg_pwr_left_fft[FFT_SPECTRUM_SIZE]; float avg_pwr_right_fft[FFT_SPECTRUM_SIZE]; +#endif float input_fc[FFT_SPECTRUM_SIZE]; +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; +#endif +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const int16_t avg_pwr_len = sampling_rate == 16000 ? LR_IAC_LENGTH_NR_FC_16KHZ : LR_IAC_LENGTH_NR_FC; + + for ( freq_idx = 0; freq_idx < avg_pwr_len; freq_idx++ ) + { + input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( avg_pwr_len - 1 ) ); + } +#else for ( freq_idx = 0; freq_idx < FFT_SPECTRUM_SIZE; freq_idx++ ) { input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( FFT_SPECTRUM_SIZE - 1 ) ); } - +#endif if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK ) { @@ -315,6 +352,9 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( output_fc_fx[i] = (Word32) input_fc[i] * ONE_IN_Q16; } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + ivas_reverb_interpolate_acoustic_data( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); +#else ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_left_fft_fx, avg_pwr_right_fft_fx, CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); for ( int i = 0; i < 257; i++ ) @@ -331,4 +371,5 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( free( avg_pwr_right_fx ); free( avg_pwr_right_e ); return IVAS_ERR_OK; +#endif } -- GitLab From 7db5ca7ab1cc6d938407c459da9da7612302fa72 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Thu, 22 May 2025 18:16:38 +0200 Subject: [PATCH 596/698] All remaining headers and functions from lib_rend --- lib_rend/ivas_crend_fx.c | 13 ++- .../ivas_dirac_dec_binaural_functions_fx.c | 11 ++- lib_rend/ivas_hrtf_fx.c | 98 +++++++++++++++++++ lib_rend/ivas_objectRenderer_mix_fx.c | 3 + lib_rend/ivas_prot_rend_fx.h | 54 +++++++++- 5 files changed, 174 insertions(+), 5 deletions(-) diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index 36965fc61..66dca6cfd 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -1669,7 +1669,11 @@ ivas_error ivas_rend_openMultiBinCrend( ivas_error error; #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, NULL /* hHrtfStatistics */, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK ) +#endif #else if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs ) ) != IVAS_ERR_OK ) #endif @@ -1693,6 +1697,9 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, HRTFS_CREND_HANDLE hSetOfHRTF, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + HRTFS_STATISTICS_HANDLE hHrtfStatistics, +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT const Word32 output_Fs, const Word16 num_poses @@ -1867,8 +1874,12 @@ ivas_error ivas_rend_openCrend( IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if( ( NE_32( error = ivas_reverb_open( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ) , IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) - { +#endif + { return error; } diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 408f1cb1b..bdead9cbd 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -315,9 +315,14 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( IF( hDiracDecBin->hReverb == NULL ) #endif { - /* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */ - IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) - { + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes, st_ivas->hHrtfParambin->parametricReverberationEneCorrections ) ) != IVAS_ERR_OK ) +#else + /* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */ + if ( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) +#endif + { return error; } } diff --git a/lib_rend/ivas_hrtf_fx.c b/lib_rend/ivas_hrtf_fx.c index 0cb8ae505..873b632fa 100644 --- a/lib_rend/ivas_hrtf_fx.c +++ b/lib_rend/ivas_hrtf_fx.c @@ -33,6 +33,9 @@ #include #include "options.h" #include "prot_fx.h" +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#include "ivas_rom_binaural_crend_head.h" +#endif #include "ivas_prot_rend_fx.h" #include "ivas_error.h" #include "wmc_auto.h" @@ -212,3 +215,98 @@ void ivas_HRTF_parambin_binary_close_fx( return; } + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*-----------------------------------------------------------------------* + * ivas_HRTF_statistics_binary_open() + * + * Allocate HRTF binary handle for statistics handler + *-----------------------------------------------------------------------*/ + +ivas_error ivas_HRTF_statistics_binary_open( + HRTFS_STATISTICS **hHrtfStatistics ) +{ + *hHrtfStatistics = (HRTFS_STATISTICS *) malloc( sizeof( HRTFS_STATISTICS ) ); + if ( *hHrtfStatistics == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for statistics HRTF tables!" ); + } + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------* + * ivas_HRTF_statistics_close() + * + * Close HRTF binary handle for statistics handler + *-----------------------------------------------------------------------*/ + +void ivas_HRTF_statistics_close( + HRTFS_STATISTICS **hHrtfStatistics ) +{ + if ( hHrtfStatistics == NULL || *hHrtfStatistics == NULL ) + { + return; + } + + free( *hHrtfStatistics ); + *hHrtfStatistics = NULL; + + return; +} + +/*-----------------------------------------------------------------------* + * ivas_HRTF_statistics_init() + * + * Allocates HRTF statistics handle and initializes from ROM + *-----------------------------------------------------------------------*/ + +ivas_error ivas_HRTF_statistics_init( + HRTFS_STATISTICS_HANDLE *hHrtfStatistics, + int32_t sampleRate ) +{ + HRTFS_STATISTICS *HrtfStatistics; + + if ( hHrtfStatistics != NULL && *hHrtfStatistics != NULL ) + { + /* Tables already loaded from file */ + return IVAS_ERR_OK; + } + + /* Initialise tables from ROM */ + if ( ( HrtfStatistics = (HRTFS_STATISTICS *) malloc( sizeof( HRTFS_STATISTICS ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for statistics HRTF tables!" ); + } + + HrtfStatistics->average_energy_l = NULL; + HrtfStatistics->average_energy_r = NULL; + HrtfStatistics->inter_aural_coherence = NULL; + + switch ( sampleRate ) + { + case 48000: + HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_48kHz; + HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_48kHz; + HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_48kHz; + break; + case 32000: + HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_32kHz; + HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_32kHz; + HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_32kHz; + break; + case 16000: + HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_16kHz; + HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_16kHz; + HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_16kHz; + break; + } + HrtfStatistics->fromROM = TRUE; + + *hHrtfStatistics = HrtfStatistics; + + + return IVAS_ERR_OK; +} +#endif \ No newline at end of file diff --git a/lib_rend/ivas_objectRenderer_mix_fx.c b/lib_rend/ivas_objectRenderer_mix_fx.c index 72042975b..c46ca25db 100644 --- a/lib_rend/ivas_objectRenderer_mix_fx.c +++ b/lib_rend/ivas_objectRenderer_mix_fx.c @@ -409,6 +409,8 @@ static ivas_error DefaultBSplineModel_fx( model = &( HrFiltSet_p->ModelParams ); modelITD = &( HrFiltSet_p->ModelParamsITD ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#else SWITCH( output_Fs ) { case 48000: @@ -444,6 +446,7 @@ static ivas_error DefaultBSplineModel_fx( #endif BREAK; } +#endif /* Set ROM flag for correct deallocation */ model->modelROM = TRUE; diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index 4e23011b4..1513ff29b 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -620,6 +620,21 @@ void ivas_HRTF_CRend_binary_close_fx( HRTFS_CREND **hSetOfHRTF /* i/o: Set of HRTF handle */ ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +ivas_error ivas_HRTF_statistics_init( + HRTFS_STATISTICS_HANDLE *hHrtfStatistics, /* i/o: HRTF statistics structure */ + int32_t sampleRate /* i : Sample rate */ +); + +void ivas_HRTF_statistics_close( + HRTFS_STATISTICS **hHrtfStatistics /* i/o: HRTF statistics structure */ +); + +ivas_error ivas_HRTF_statistics_binary_open( + HRTFS_STATISTICS **hHrtfStatistics /* i/o: HRTF statistics structure */ +); + +#endif /*----------------------------------------------------------------------------------* * TD object renderer @@ -865,6 +880,9 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, HRTFS_CREND_HANDLE hSetOfHRTF, +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + HRTFS_STATISTICS_HANDLE hHrtfStatistics, +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT const Word32 output_Fs, const Word16 num_poses @@ -919,16 +937,35 @@ ivas_error ivas_rend_crendProcessSubframe( * Reverberator *----------------------------------------------------------------------------------*/ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +ivas_error ivas_binaural_reverb_init( +#else ivas_error ivas_binaural_reverb_open_fastconv_fx( +#endif REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ +#else +#endif const Word16 numBins, /* i : number of CLDFB bins */ const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ +#else IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ const AUDIO_CONFIG internal_config, /* i : internal audio config for FastConv */ +#endif const Word32 sampling_rate, /* i : sampling rate */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const float *defaultTimes, /* i : default reverberation times */ + const float *defaultEne /* i : default reverberation energies */ +#else const HRTFS_FASTCONV_HANDLE hHrtfFastConv /* i : FastConv HRTF handle */ +#endif ); + +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error ivas_binaural_reverb_open_parambin( REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ const Word16 numBins, /* i : number of CLDFB bins Q0 */ @@ -937,6 +974,7 @@ ivas_error ivas_binaural_reverb_open_parambin( const Word32 sampling_rate, /* i : sampling rate Q0 */ const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */ ); +#endif void ivas_binaural_reverb_close_fx( REVERB_STRUCT_HANDLE *hReverb /* i/o: binaural reverb handle */ @@ -957,9 +995,13 @@ void ivas_binaural_reverb_processSubframe_fx( ivas_error ivas_reverb_open_fx( REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ +#else const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */ const HRTFS_HANDLE hHrtf, /* i : HRTF handle */ const Word32 *lr_energy_and_iac_fx[], /* i : precomuputed lr energies and iac */ +#endif RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ const Word32 output_Fs /* i : output sampling rate */ ); @@ -1105,6 +1147,14 @@ void ivas_reverb_calc_color_levels_fx( const Word32 *pT60_filter_coeff, //input in Q31 Word32 *pTarget_color_L, //output in Q30 Word32 *pTarget_color_R); //output in Q30 +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +ivas_error ivas_reverb_prepare_cldfb_params( + const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, + const int32_t output_Fs, + float *pOutput_t60, + float *pOutput_ene ); +#else ivas_error ivas_reverb_prepare_cldfb_params( IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_FASTCONV_HANDLE hHrtfFastConv, @@ -1113,6 +1163,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( const int32_t output_Fs, float *pOutput_t60, float *pOutput_ene ); +#endif void ivas_reverb_interpolate_acoustic_data_fx( const Word16 input_table_size, const Word32 *pInput_fc, //input in Q16 @@ -1125,6 +1176,7 @@ void ivas_reverb_interpolate_acoustic_data_fx( Word16 *pOutput_t60_e, //output e Word16 *pOutput_dsr_e //output e ); +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES void ivas_reverb_get_hrtf_set_properties_fx( Word32 **ppHrtf_set_L_re, Word32 **ppHrtf_set_L_im, @@ -1138,7 +1190,7 @@ void ivas_reverb_get_hrtf_set_properties_fx( Word32 *pOut_avg_pwr_R, //output in Q23 Word32 *out_i_a_coherence //output in Q27 ); - +#endif /*---------------------------------------------------------------------------------* * Shoebox Prototypes *-----------------------------------------------------------------------------------*/ -- GitLab From bd92de35e214fa7201ec3818c3f72f3938d97faf Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Thu, 22 May 2025 18:43:36 +0200 Subject: [PATCH 597/698] All functions lib_dec --- lib_dec/ivas_binRenderer_internal_fx.c | 6 +++- lib_dec/ivas_init_dec.c | 45 +++++++++++++++++++++++++- lib_dec/ivas_ism_dec_fx.c | 18 +++++++++-- lib_dec/ivas_mct_dec_fx.c | 8 +++++ 4 files changed, 72 insertions(+), 5 deletions(-) diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index 9b7bd86b6..5431fcece 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -1418,8 +1418,12 @@ ivas_error ivas_binRenderer_open_fx( test(); IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), st_ivas->hHrtfStatistics, hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv->fastconvReverberationTimes, st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections ) ) , IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_binaural_reverb_open_fastconv_fx( &( hBinRenderer->hReverb ), hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hIntSetup.output_config, st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) - { +#endif + { return error; } diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index b4af0ed06..e752080f8 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -1179,6 +1179,13 @@ ivas_error ivas_init_decoder_front( } } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ) , IVAS_ERR_OK ) ) + { + return error; + } +#endif + /*-------------------------------------------------------------------* * Allocate and initialize Binaural Renderer configuration handle *--------------------------------------------------------------------*/ @@ -1364,6 +1371,20 @@ ivas_error ivas_init_decoder_fx( } } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + /*--------------------------------------------------------------------* + * Allocate and initialize HRTF Statistics handle + *--------------------------------------------------------------------*/ + + if ( st_ivas->hOutSetup.output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + if ( ( error = ivas_HRTF_statistics_init( &st_ivas->hHrtfStatistics, output_Fs ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif + #ifdef SPLIT_REND_WITH_HEAD_ROT /*-----------------------------------------------------------------* * Initialize binuaral split rendering @@ -2274,8 +2295,12 @@ ivas_error ivas_init_decoder_fx( IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_reverb_open( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) - { +#endif + { return error; } } @@ -2318,13 +2343,23 @@ ivas_error ivas_init_decoder_fx( } #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ) , IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#endif +#else +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) +#endif #endif { return error; @@ -2862,6 +2897,9 @@ void ivas_initialize_handles_dec( st_ivas->hSetOfHRTF = NULL; st_ivas->hHrtfFastConv = NULL; st_ivas->hHrtfParambin = NULL; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + st_ivas->hHrtfStatistics = NULL; +#endif st_ivas->hoa_dec_mtx = NULL; st_ivas->hMasaIsmData = NULL; st_ivas->hSbaIsmData = NULL; @@ -3096,6 +3134,11 @@ void ivas_destroy_dec_fx( /* Parametric binauralizer HRTF filters */ ivas_HRTF_parambin_binary_close_fx( &st_ivas->hHrtfParambin ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + /* HRTF statistics */ + ivas_HRTF_statistics_close( &st_ivas->hHrtfStatistics ); +#endif + /* Config. Renderer */ ivas_render_config_close( &( st_ivas->hRenderConfig ) ); diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index 18c6953f2..c8863947f 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -220,8 +220,12 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( } IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_reverb_open( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) - { +#endif + { return error; } } @@ -248,13 +252,21 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( /* Open Crend Binaural renderer */ #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ) , IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) - { +#endif +#else +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) + { return error; } #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) - { +#endif + { return error; } #endif diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index db9cddc39..825478479 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1576,9 +1576,17 @@ static ivas_error ivas_mc_dec_reconfig_fx( ELSE IF( st_ivas->hCrendWrapper == NULL && ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) ) { #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#else IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#endif +#else +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) #else IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) +#endif #endif { return error; -- GitLab From e90663ed2e8f6f2017b5c0b373a81a05d22b5688 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Thu, 22 May 2025 18:57:34 +0200 Subject: [PATCH 598/698] All functions decoder.c and renderer.c --- apps/decoder.c | 34 ++++++++++++++++++++++++++++++++++ apps/renderer.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/apps/decoder.c b/apps/decoder.c index a59bc5fac..3f30f4520 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -176,6 +176,9 @@ int main( IVAS_RENDER_FRAMESIZE asked_frame_size; IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics = NULL; +#endif #ifdef WMOPS reset_wmops(); @@ -644,6 +647,7 @@ int main( } } +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( ( *hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) { @@ -653,6 +657,7 @@ int main( goto cleanup; } } +#endif #endif if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK ) { @@ -736,6 +741,35 @@ int main( destroy_parambin_hrtf( hHrtfParambin ); } } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES +#ifdef NONBE_FIX_BINARY_BINAURAL_READING + if ( ( error = IVAS_DEC_GetHrtfStatisticsHandle( hIvasDec, &hHrtfStatistics ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + if ( ( error = load_reverb_binary( *hHrtfStatistics, arg.output_Fs, hrtfReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + else + { + destroy_hrtf_statistics( hHrtfStatistics ); + } + } +#else + if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } +#endif +#endif +#endif } /*------------------------------------------------------------------------------------------* diff --git a/apps/renderer.c b/apps/renderer.c index 64ef2e5d6..fa716c892 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -766,6 +766,9 @@ int main( IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL; IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL; IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics = NULL; +#endif IsmPositionProvider *positionProvider; LfeRoutingConfig *lfeRoutingConfigs[RENDERER_MAX_MC_INPUTS]; RenderConfigReader *renderConfigReader = NULL; @@ -1054,6 +1057,7 @@ int main( } } +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( ( hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfFileReader ) ) != IVAS_ERR_OK ) { @@ -1063,6 +1067,7 @@ int main( goto cleanup; } } +#endif #endif if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hSetOfHRTF ) ) != IVAS_ERR_OK ) @@ -1146,6 +1151,28 @@ int main( } } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES + if ( ( error = IVAS_REND_GetHrtfStatisticsHandle( hIvasRend, &hHrtfStatistics ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_REND_GetHrtfStatisticsHandle failed\n\n" ); + goto cleanup; + } + if ( ( error = load_reverb_binary( *hHrtfStatistics, args.sampleRate, hrtfFileReader ) ) != IVAS_ERR_OK ) + { + if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", args.customHrtfFilePath ); + goto cleanup; + } + else + { + destroy_hrtf_statistics( hHrtfStatistics ); + } + } +#endif +#endif + hrtfFileReader_close( &hrtfFileReader ); } @@ -2258,6 +2285,9 @@ cleanup: { destroy_td_hrtf( hHrtfTD ); } +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + destroy_hrtf_statistics( hHrtfStatistics ); +#endif IVAS_REND_Close( &hIvasRend ); IsmPositionProvider_close( positionProvider ); RenderConfigReader_close( &renderConfigReader ); -- GitLab From 238ff2ba228072d2e755047194103a93da3323b4 Mon Sep 17 00:00:00 2001 From: marc emerit Date: Fri, 23 May 2025 09:38:57 +0200 Subject: [PATCH 599/698] fix some compiling error --- lib_dec/ivas_binRenderer_internal_fx.c | 6 +- lib_dec/ivas_init_dec.c | 12 +- lib_dec/ivas_ism_dec_fx.c | 12 +- lib_dec/ivas_mct_dec_fx.c | 4 +- lib_rend/ivas_crend_fx.c | 6 +- .../ivas_dirac_dec_binaural_functions_fx.c | 7 +- lib_rend/ivas_hrtf_fx.c | 20 +- lib_rend/ivas_reverb_fx.c | 3 +- lib_rend/ivas_stat_rend.h | 12 +- lib_rend/lib_rend.c | 247 +++++++++--------- 10 files changed, 169 insertions(+), 160 deletions(-) diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index 5431fcece..d53d6c76d 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -1419,11 +1419,11 @@ ivas_error ivas_binRenderer_open_fx( IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), st_ivas->hHrtfStatistics, hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv->fastconvReverberationTimes, st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections ) ) , IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_binaural_reverb_init( &( hBinRenderer->hReverb ), st_ivas->hHrtfStatistics, hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv->fastconvReverberationTimes_fx, st_ivas->hHrtfFastConv->fastconvReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_binaural_reverb_open_fastconv_fx( &( hBinRenderer->hReverb ), hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hIntSetup.output_config, st_ivas->hDecoderConfig->output_Fs, st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) -#endif - { +#endif + { return error; } diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index e752080f8..05efe8207 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -1180,7 +1180,7 @@ ivas_error ivas_init_decoder_front( } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ) , IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ), IVAS_ERR_OK ) ) { return error; } @@ -2296,11 +2296,11 @@ ivas_error ivas_init_decoder_fx( IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) #endif - { + { return error; } } @@ -2345,7 +2345,8 @@ ivas_error ivas_init_decoder_fx( #ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ) , IVAS_ERR_OK ) ) + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ), + IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), @@ -2354,7 +2355,8 @@ ivas_error ivas_init_decoder_fx( #else #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ), + IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index c8863947f..4f900a6de 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -221,11 +221,11 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) #endif - { + { return error; } } @@ -253,20 +253,20 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( /* Open Crend Binaural renderer */ #ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ) , IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #endif #else #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) , IVAS_ERR_OK ) ) - { + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) + { return error; } #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) #endif - { + { return error; } #endif diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index 825478479..d3268bda3 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1577,13 +1577,13 @@ static ivas_error ivas_mc_dec_reconfig_fx( { #ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) + IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) #else IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) #endif #else #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) + IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) #else IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) #endif diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index 66dca6cfd..b293e8c00 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -1875,11 +1875,11 @@ ivas_error ivas_rend_openCrend( IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - if( ( NE_32( error = ivas_reverb_open( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ) , IVAS_ERR_OK ) ) + IF( ( NE_32( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) -#endif - { +#endif + { return error; } diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index d0c4397e5..5c4d55488 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -317,13 +317,14 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes, st_ivas->hHrtfParambin->parametricReverberationEneCorrections ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes_fx, st_ivas->hHrtfParambin->parametricReverberationEneCorrections_fx ) ) != IVAS_ERR_OK ) #else /* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */ if ( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) -#endif - { +#endif + { return error; + x } } } diff --git a/lib_rend/ivas_hrtf_fx.c b/lib_rend/ivas_hrtf_fx.c index 873b632fa..0e535170b 100644 --- a/lib_rend/ivas_hrtf_fx.c +++ b/lib_rend/ivas_hrtf_fx.c @@ -287,19 +287,19 @@ ivas_error ivas_HRTF_statistics_init( switch ( sampleRate ) { case 48000: - HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_48kHz; - HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_48kHz; - HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_48kHz; + HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_48kHz_fx; + HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_48kHz_fx; + HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_48kHz_fx; break; case 32000: - HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_32kHz; - HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_32kHz; - HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_32kHz; + HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_32kHz_fx; + HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_32kHz_fx; + HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_32kHz_fx; break; case 16000: - HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_16kHz; - HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_16kHz; - HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_16kHz; + HrtfStatistics->average_energy_l = defaultHRIR_left_avg_power_16kHz_fx; + HrtfStatistics->average_energy_r = defaultHRIR_right_avg_power_16kHz_fx; + HrtfStatistics->inter_aural_coherence = defaultHRIR_coherence_16kHz_fx; break; } HrtfStatistics->fromROM = TRUE; @@ -309,4 +309,4 @@ ivas_error ivas_HRTF_statistics_init( return IVAS_ERR_OK; } -#endif \ No newline at end of file +#endif diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 09af39bb6..f1393148d 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2487,6 +2487,8 @@ ivas_error ivas_binaural_reverb_init( return error; } +#endif + /*------------------------------------------------------------------------- * ivas_binaural_reverb_open_fastconv() * @@ -2586,7 +2588,6 @@ ivas_error ivas_binaural_reverb_open_parambin( return error; } -#endif /*------------------------------------------------------------------------- * ivas_binaural_reverb_close() diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index d8dd14034..77d3bcc35 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -847,7 +847,7 @@ typedef struct ivas_combined_orientation_struct #ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Rmat_prev_fx[MAX_HEAD_ROT_POSES][3][3]; #else - Word32 Rmat_prev_fx[3][3]; /* Q30 */ + Word32 Rmat_prev_fx[3][3]; /* Q30 */ #endif Word32 chEneIIR_fx[2][MASA_FREQUENCY_BANDS]; /* independent of the format. MASA bands are suitable for the task and readily available in ROM. */ /* Q(q_chEneIIR) */ Word16 q_chEneIIR; @@ -1198,8 +1198,8 @@ typedef struct TDREND_HRFILT_FiltSet_struct ModelParams_t ModelParams; ModelEval_t ModelEval; ModelParamsITD_t ModelParamsITD; - TDREND_HRFILT_Method_t FilterMethod; /* HR filtering method */ - Word32 latency_s_fx; /* Q31 */ + TDREND_HRFILT_Method_t FilterMethod; /* HR filtering method */ + Word32 latency_s_fx; /* Q31 */ #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #else const Word32 *lr_energy_and_iac_fx[3]; /* left/right energy and interaural coherence for late reverb */ @@ -1480,9 +1480,9 @@ typedef struct ivas_hrtfs_parambin_struct #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES typedef struct ivas_hrtfs_statistics_struct { - float *average_energy_l; - float *average_energy_r; - float *inter_aural_coherence; + Word32 *average_energy_l; + Word32 *average_energy_r; + Word32 *inter_aural_coherence; int16_t fromROM; /* Flag that indicates that the pointers point to tables in ROM (controls init/dealloc).*/ } HRTFS_STATISTICS, *HRTFS_STATISTICS_HANDLE; #endif diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index ecab18225..7c2e4115d 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -1532,9 +1532,10 @@ static ivas_error setRendInputActiveIsm( IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { - return error; - } +#endif + { + return error; + } #else IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { @@ -1594,57 +1595,57 @@ static ivas_error setRendInputActiveIsm( } } #endif -} -ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) -{ - IF( NE_32( ( error = initIsmMasaRendering( inputIsm, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) - { - return error; } -} -ELSE -{ -#ifndef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) { - return error; + IF( NE_32( ( error = initIsmMasaRendering( inputIsm, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + { + return error; + } } - Word16 nchan_rend = num_src; - move16(); - - test(); - IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + ELSE { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } +#ifndef SPLIT_REND_WITH_HEAD_ROT + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + Word16 nchan_rend = num_src; + move16(); - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; - IF( Src_p != NULL ) + test(); + IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) + { + nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ + } + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) { - IF( Src_p->SrcSpatial_p != NULL ) + TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) { - Src_p->SrcSpatial_p->q_Pos_p = Q31; + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; move16(); } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); } - } - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ) IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ) IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif - { - return error; + { + return error; + } } - } #else IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { @@ -1679,29 +1680,29 @@ ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) - { #endif - return error; + { + return error; + } } - } - ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) - { + ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #endif - { - return error; + { + return error; + } } - } #endif -} + } -return IVAS_ERR_OK; + return IVAS_ERR_OK; } static void clearInputIsm( @@ -2681,78 +2682,79 @@ static ivas_error initMcBinauralRendering( IF( NE_32( ( error = ivas_reverb_open( &( inputMc->hReverb ), hHrtfStatistics, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( inputMc->hReverb ), outConfig, NULL, inputMc->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) -#endif { - return error; +#endif + { + return error; + } } } -} -ELSE IF( !useTDRend && inputMc->crendWrapper == NULL ) -{ - /* open CREND */ + ELSE IF( !useTDRend && inputMc->crendWrapper == NULL ) + { + /* open CREND */ #ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, - outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, + outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), + IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, - hMixconv, - outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + hMixconv, + outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), + IVAS_ERR_OK ) ) #endif #else #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, outSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, outSampleRate ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, - hMixconv, - outSampleRate ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, + hMixconv, + outSampleRate ) ), + IVAS_ERR_OK ) ) #endif #endif - { - return error; + { + return error; + } } -} -/* Initialise the EFAP handle for rotation on input layout */ -test(); -test(); -IF( NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && inputMc->base.ctx.pHeadRotData->headRotEnabled && inputMc->efapInWrapper.hEfap == NULL ) -{ - IF( NE_32( ( error = initEfap( &inputMc->efapInWrapper, inConfig, NULL ) ), IVAS_ERR_OK ) ) + /* Initialise the EFAP handle for rotation on input layout */ + test(); + test(); + IF( NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && inputMc->base.ctx.pHeadRotData->headRotEnabled && inputMc->efapInWrapper.hEfap == NULL ) { - return error; + IF( NE_32( ( error = initEfap( &inputMc->efapInWrapper, inConfig, NULL ) ), IVAS_ERR_OK ) ) + { + return error; + } } -} -/* determine binaural delay ( used for aligning LFE to output signal ) */ + /* determine binaural delay ( used for aligning LFE to output signal ) */ -IF( ( inputMc->crendWrapper != NULL ) ) -{ - binauralDelayNs = inputMc->crendWrapper->binaural_latency_ns; -} -ELSE -{ - binauralDelayNs = 0; -} -move32(); + IF( ( inputMc->crendWrapper != NULL ) ) + { + binauralDelayNs = inputMc->crendWrapper->binaural_latency_ns; + } + ELSE + { + binauralDelayNs = 0; + } + move32(); -binauralDelayNs = L_max( binauralDelayNs, inputMc->tdRendWrapper.binaural_latency_ns ); -Word16 exp = 0; -move16(); -Word16 var1 = BASOP_Util_Divide3232_Scale( *inputMc->base.ctx.pOutSampleRate, 1000000000, &exp ); -Word32 var2 = L_shr_r( Mpy_32_32( binauralDelayNs, L_deposit_h( var1 ) ), negate( exp ) ); /* Q0 */ -inputMc->binauralDelaySmp = extract_l( var2 ); -move16(); -// inputMc->binauralDelaySmp = (int16_t) roundf( (float) binauralDelayNs * *inputMc->base.ctx.pOutSampleRate / 1000000000.f ); + binauralDelayNs = L_max( binauralDelayNs, inputMc->tdRendWrapper.binaural_latency_ns ); + Word16 exp = 0; + move16(); + Word16 var1 = BASOP_Util_Divide3232_Scale( *inputMc->base.ctx.pOutSampleRate, 1000000000, &exp ); + Word32 var2 = L_shr_r( Mpy_32_32( binauralDelayNs, L_deposit_h( var1 ) ), negate( exp ) ); /* Q0 */ + inputMc->binauralDelaySmp = extract_l( var2 ); + move16(); + // inputMc->binauralDelaySmp = (int16_t) roundf( (float) binauralDelayNs * *inputMc->base.ctx.pOutSampleRate / 1000000000.f ); -IF( GT_16( inputMc->binauralDelaySmp, MAX_BIN_DELAY_SAMPLES ) ) -{ - return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid delay for LFE binaural rendering!)" ); -} + IF( GT_16( inputMc->binauralDelaySmp, MAX_BIN_DELAY_SAMPLES ) ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid delay for LFE binaural rendering!)" ); + } -return IVAS_ERR_OK; + return IVAS_ERR_OK; } static ivas_error initMcMasaRendering( @@ -3323,11 +3325,12 @@ static ivas_error setRendInputActiveSba( IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg, hrtfs->hSetOfHRTF ) ), IVAS_ERR_OK ) ) -#endif { - return error; -} +#endif + { + return error; + } -return error; + return error; } static void clearInputSba( input_sba *inputSba ) @@ -3424,14 +3427,15 @@ static ivas_error setRendInputActiveMasa( IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig, hRendCfg, hrtfs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig, hrtfs ) ), IVAS_ERR_OK ) ) -#endif { - return error; +#endif + { + return error; + } + inputMasa->metadataHasBeenFed = false; + move16(); } - inputMasa->metadataHasBeenFed = false; - move16(); -} -return IVAS_ERR_OK; + return IVAS_ERR_OK; } static void clearInputMasa( @@ -10276,17 +10280,18 @@ static ivas_error ivas_masa_ext_rend_parambin_init( move16(); #ifdef SPLIT_REND_WITH_HEAD_ROT - if ( hDiracDecBin->hReverb == NULL && pos_idx == 0 ) /* open reverb only for the main direction */ + IF( hDiracDecBin->hReverb == NULL && pos_idx == 0 ) /* open reverb only for the main direction */ #else IF( hDiracDecBin->hReverb == NULL ) #endif { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes, hHrtfParambin->parametricReverberationEneCorrections ) ) , IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes_fx, hHrtfParambin->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) #else /* Todo Philips: Room acoustics should be passed here once the underlying part works. In this case, it probably should come from render context or somewhere else suitable. */ - IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ) , IVAS_ERR_OK ) ) -#endif { + IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ), IVAS_ERR_OK ) ) +#endif + { return error; } } @@ -10306,7 +10311,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( } #ifdef SPLIT_REND_WITH_HEAD_ROT - if ( pos_idx == 0 ) /* open decorrelator only for the main direction */ + IF( pos_idx == 0 ) /* open decorrelator only for the main direction */ { #endif /* Always open frequency domain decorrelator */ @@ -10482,11 +10487,11 @@ static ivas_error initMasaExtRenderer( } } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - if( NE_32( ( error = ivas_masa_ext_rend_parambin_init( inputMasa, hRendCfg, hrtfs->hHrtfStatistics ) ) , IVAS_ERR_OK ) ) + if ( NE_32( ( error = ivas_masa_ext_rend_parambin_init( inputMasa, hRendCfg, hrtfs->hHrtfStatistics ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_masa_ext_rend_parambin_init( inputMasa ) ), IVAS_ERR_OK ) ) -#endif - { +#endif + { return error; } } -- GitLab From c501f1f5044db13c8128677e85749f508ed6ef31 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 23 May 2025 10:14:30 +0200 Subject: [PATCH 600/698] port NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER --- lib_com/options.h | 3 ++- lib_dec/ivas_jbm_dec_fx.c | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 91172d59a..09c753209 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,7 +128,8 @@ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ -#endif +#endif +#define NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER /* FhG: issues #1012, 1013: JBM flush function uses wrong output buffer */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index c85e36d8e..d402fb1e3 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2668,8 +2668,12 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( Word16 n_slots_still_available; Word16 n_samples_to_render; DECODER_TC_BUFFER_HANDLE hTcBuffer; +#ifdef NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER + Word32 *p_output_fx[MAX_CICP_CHANNELS + MAX_NUM_OBJECTS]; +#else Word32 output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; Word32 *p_output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; +#endif Word16 nchan_in, nchan_out; IF( !st_ivas->hDecoderConfig->Opt_tsm ) { @@ -2729,10 +2733,17 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( move16(); move16(); +#ifdef NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER + FOR( ch_idx = 0; ch_idx < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ ) + { + p_output_fx[ch_idx] = st_ivas->p_output_fx[ch_idx]; + } +#else FOR( ch_idx = 0; ch_idx < MAX_CICP_CHANNELS; ch_idx++ ) { p_output_fx[ch_idx] = output_fx[ch_idx]; } +#endif test(); IF( EQ_16( st_ivas->ivas_format, ISM_FORMAT ) ) -- GitLab From 4ee97743e1866257069d05b4d7c2c1d2c0e7a273 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Fri, 23 May 2025 10:41:01 +0200 Subject: [PATCH 601/698] changed float to word32 in hrtf_file_reader.c --- lib_util/hrtf_file_reader.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 7f58cfc94..364afc813 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -797,17 +797,17 @@ static ivas_error load_reverb_from_binary( if ( is_reverb ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - hHrtfStatistics->average_energy_l = (float *) malloc( lr_iac_len * sizeof( float ) ); - hHrtfStatistics->average_energy_r = (float *) malloc( lr_iac_len * sizeof( float ) ); - hHrtfStatistics->inter_aural_coherence = (float *) malloc( lr_iac_len * sizeof( float ) ); + hHrtfStatistics->average_energy_l = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + hHrtfStatistics->average_energy_r = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + hHrtfStatistics->inter_aural_coherence = (Word32 *) malloc( lr_iac_len * sizeof( Word32) ); if ( hHrtfStatistics->average_energy_l == NULL || hHrtfStatistics->average_energy_r == NULL || hHrtfStatistics->inter_aural_coherence == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); } - fread( hHrtfStatistics->average_energy_l, sizeof( const float ), lr_iac_len, f_hrtf ); - fread( hHrtfStatistics->average_energy_r, sizeof( const float ), lr_iac_len, f_hrtf ); - fread( hHrtfStatistics->inter_aural_coherence, sizeof( const float ), lr_iac_len, f_hrtf ); + fread( hHrtfStatistics->average_energy_l, sizeof( const Word32 ), lr_iac_len, f_hrtf ); + fread( hHrtfStatistics->average_energy_r, sizeof( const Word32 ), lr_iac_len, f_hrtf ); + fread( hHrtfStatistics->inter_aural_coherence, sizeof( const Word32 ), lr_iac_len, f_hrtf ); hHrtfStatistics->fromROM = FALSE; #else -- GitLab From 849959bb0865274dbd793106ab8610959abd59e3 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Fri, 23 May 2025 11:02:35 +0200 Subject: [PATCH 602/698] bug fixes + additions in hrtf_file_reader.h --- lib_rend/ivas_crend_fx.c | 2 +- .../ivas_dirac_dec_binaural_functions_fx.c | 1 - lib_util/hrtf_file_reader.h | 20 +++++++++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index b293e8c00..392d8ea99 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -1875,7 +1875,7 @@ ivas_error ivas_rend_openCrend( IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( ( NE_32( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) #endif diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 5c4d55488..023adcf7d 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -324,7 +324,6 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( #endif { return error; - x } } } diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index 51c321352..4b9806eb8 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -102,8 +102,13 @@ ivas_error load_HRTF_binary( *---------------------------------------------------------------------*/ ivas_error load_reverb_binary( - IVAS_DEC_HRTF_HANDLE hHrtf, /* i/o: HRTF handle */ - const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics, /* i/o: HRTF statistics handle */ + int32_t sampleRate, /* i : sample rate */ +#else + IVAS_DEC_HRTF_HANDLE hHrtf, /* i/o: HRTF handle */ +#endif + const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ); #endif @@ -174,6 +179,17 @@ ivas_error load_parambin_HRTF_from_binary( const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +/*---------------------------------------------------------------------* + * destroy_hrtf_statistics() + * + * free memory allocated for HRTF statistics binary data + *---------------------------------------------------------------------*/ + +ivas_error destroy_hrtf_statistics( + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ +); +#endif /*---------------------------------------------------------------------* * dealloc_HRTF_binary() -- GitLab From 352d293b56d22dd40cb9eb63cac75fe027f71871 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 23 May 2025 14:39:12 +0530 Subject: [PATCH 603/698] Precision improvements and bug fixes to remove tonal lines in ParamISM --- lib_com/fd_cng_com_fx.c | 68 +++++++---- lib_com/prot_fx.h | 18 +++ lib_com/stat_com.h | 3 +- lib_com/tools_fx.c | 52 +++++++++ lib_dec/acelp_core_dec_fx.c | 4 +- lib_dec/fd_cng_dec_fx.c | 19 +++- lib_dec/hf_synth_fx.c | 207 ++++++++++++++++++++++++++++++++++ lib_dec/ivas_ism_dtx_dec_fx.c | 8 +- 8 files changed, 343 insertions(+), 36 deletions(-) diff --git a/lib_com/fd_cng_com_fx.c b/lib_com/fd_cng_com_fx.c index 872c180b5..207925724 100644 --- a/lib_com/fd_cng_com_fx.c +++ b/lib_com/fd_cng_com_fx.c @@ -120,6 +120,8 @@ void ivas_initFdCngCom_fx( HANDLE_FD_CNG_COM hFdCngCom, Word16 scale ) move16(); hFdCngCom->CngBitrate = -1; move16(); + hFdCngCom->olapBufferSynth_exp = 0; + move16(); /* Initialize noise estimation algorithm */ set32_fx( hFdCngCom->periodog, 0, PERIODOGLEN ); @@ -2653,9 +2655,10 @@ void SynthesisSTFT_ivas_fx( const Word16 nchan_out /* i : number of output channels */ ) { - Word16 i, len, scale, tmp; + Word16 i, len, scale, tmp, sft, exp, tmp1; Word16 len2, len3, len4; Word16 buf[M + 1 + L_FRAME16k]; + Word32 L_olapBuffer[FFTLEN]; /* Perform IFFT */ @@ -2666,6 +2669,12 @@ void SynthesisSTFT_ivas_fx( hFdCngCom->fftBuffer_exp = fftBufferExp; move16(); + sft = getScaleFactor32( fftBuffer, hFdCngCom->fftlen ); + scale_sig32( fftBuffer, hFdCngCom->fftlen, sft ); + fftBufferExp = sub( fftBufferExp, sft ); + hFdCngCom->fftBuffer_exp = fftBufferExp; + move16(); + fftBufferExp = add( fftBufferExp, hFdCngCom->fftlenShift ); /* Perform overlap-add */ @@ -2679,48 +2688,58 @@ void SynthesisSTFT_ivas_fx( } ELSE { - Copy( olapBuffer + hFdCngCom->frameSize, olapBuffer, hFdCngCom->frameSize ); + Copy_Scale_sig_16_32_no_sat( olapBuffer + hFdCngCom->frameSize, L_olapBuffer, hFdCngCom->frameSize, add( sub( hFdCngCom->olapBufferSynth_exp, sub( 15, hFdCngCom->fftlenShift ) ), 16 ) ); /* exp: hFdCngCom->olapBufferSynth_exp -> (15 - fftlenShift) */ set16_fx( olapBuffer + hFdCngCom->frameSize, 0, hFdCngCom->frameSize ); } len2 = shr( hFdCngCom->fftlen, 2 ); len4 = shr( hFdCngCom->fftlen, 3 ); len3 = add( len2, len4 ); len = add( hFdCngCom->frameSize, len4 ); + tmp1 = sub( fftBufferExp, 15 ); IF( tcx_transition ) { FOR( i = 0; i < len; i++ ) { - olapBuffer[i] = round_fx_sat( L_shl_sat( fftBuffer[i], fftBufferExp - 15 ) ); // Q(15 - fftBufferExp) - move16(); + L_olapBuffer[i] = L_shl_sat( fftBuffer[i], tmp1 ); /* Q(31 - (15 - fftlenShift) ) */ + move32(); } } ELSE { FOR( i = 0; i < len4; i++ ) { - olapBuffer[i + 1 * len4] = add_sat( olapBuffer[i + 1 * len4], mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 1 * len4], fftBufferExp - 15 ) ), olapWin[i].v.im ) ); - move16(); - olapBuffer[i + 2 * len4] = add_sat( olapBuffer[i + 2 * len4], mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 2 * len4], fftBufferExp - 15 ) ), olapWin[len4 - 1 - i].v.re ) ); - move16(); + L_olapBuffer[i + 1 * len4] = Madd_32_16( L_olapBuffer[i + 1 * len4], L_shl_sat( fftBuffer[i + 1 * len4], tmp1 ), olapWin[i].v.im ); /* Q(31 - (15 - fftlenShift) ) */ + move32(); + L_olapBuffer[i + 2 * len4] = Madd_32_16( L_olapBuffer[i + 2 * len4], L_shl_sat( fftBuffer[i + 2 * len4], tmp1 ), olapWin[len4 - 1 - i].v.re ); /* Q(31 - (15 - fftlenShift) ) */ + move32(); } FOR( i = len3; i < len; i++ ) { - olapBuffer[i] = round_fx_sat( L_shl_sat( fftBuffer[i], fftBufferExp - 15 ) ); + L_olapBuffer[i] = L_shl_sat( fftBuffer[i], tmp1 ); /* Q(31 - (15 - fftlenShift) ) */ + move32(); } } FOR( i = 0; i < len4; i++ ) { - olapBuffer[i + 5 * len4] = mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 5 * len4], fftBufferExp - 15 ) ), olapWin[i].v.re ); - move16(); - olapBuffer[i + 6 * len4] = mult_r( round_fx_sat( L_shl_sat( fftBuffer[i + 6 * len4], fftBufferExp - 15 ) ), olapWin[len4 - 1 - i].v.im ); - move16(); + L_olapBuffer[i + 5 * len4] = Mpy_32_16_1( L_shl_sat( fftBuffer[i + 5 * len4], tmp1 ), olapWin[i].v.re ); /* Q(31 - (15 - fftlenShift) ) */ + move32(); + L_olapBuffer[i + 6 * len4] = Mpy_32_16_1( L_shl_sat( fftBuffer[i + 6 * len4], tmp1 ), olapWin[len4 - 1 - i].v.im ); /* Q(31 - (15 - fftlenShift) ) */ + move32(); } len = add( len, len2 ); FOR( i = len; i < hFdCngCom->fftlen; i++ ) { - olapBuffer[i] = 0; + L_olapBuffer[i] = 0; + move32(); + } + + sft = L_norm_arr( L_olapBuffer, hFdCngCom->fftlen ); + IF( NE_16( sft, 31 ) ) + { + Copy_Scale_sig32_16( L_olapBuffer, olapBuffer, hFdCngCom->fftlen, sft ); + hFdCngCom->olapBufferSynth_exp = sub( sub( 15, hFdCngCom->fftlenShift ), sft ); move16(); } @@ -2737,24 +2756,23 @@ void SynthesisSTFT_ivas_fx( buf[i] = mult_r( olapBuffer[i + len4 - M - 1], hFdCngCom->fftlenFac ); move16(); } + exp = add( hFdCngCom->olapBufferSynth_exp, hFdCngCom->fftlenShift ); tmp = buf[0]; } IF( EQ_16( gen_exc, 1 ) ) { - Word16 s = getScaleFactor16( buf + 1, M + hFdCngCom->frameSize ); - if ( GT_16( *Q_new, s ) ) - { - *Q_new = s; - move16(); - } - - E_UTIL_f_preemph2( *Q_new - 1, buf + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp ); - Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, 1 ); + E_UTIL_f_preemph2( 0, buf + 1, PREEMPH_FAC, add( M, hFdCngCom->frameSize ), &tmp ); + Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, 0 ); + *Q_new = sub( 15, exp ); + move16(); } IF( EQ_16( gen_exc, 2 ) ) { - *Q_new = E_UTIL_f_preemph3( buf + 1, PREEMPH_FAC, M + hFdCngCom->frameSize, &tmp, 1 ); - Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, 1 ); + *Q_new = E_UTIL_f_preemph3( buf + 1, PREEMPH_FAC, add( M, hFdCngCom->frameSize ), &tmp, 0 ); + move16(); + Residu3_fx( hFdCngCom->A_cng, buf + 1 + M, hFdCngCom->exc_cng, hFdCngCom->frameSize, negate( *Q_new ) ); + *Q_new = sub( 15, exp ); + move16(); } } diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 044a06b5b..9a2597db6 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -6512,6 +6512,18 @@ void hf_synth_fx( const Word16 Q_syn2 /* i : synthesis scaling */ ); +void hf_synth_ivas_fx( + ZERO_BWE_DEC_HANDLE hBWE_zero, /* i/o: handle to 0 bit BWE parameters */ + const Word32 core_brate, /* i : core bitrate Q0*/ + const Word16 output_frame, /* i : output frame length Q0*/ + const Word16 *Aq, /* i : quantized Az Q12*/ + const Word16 *exc, /* i : excitation at 12.8 kHz Q_exc*/ + Word16 *synth, /* i : 12.8kHz synthesis signal Q_syn2*/ + Word16 *synth16k, /* o : 16kHz synthesis signal Q_syn2*/ + const Word16 Q_exc, /* i : excitation scaling */ + const Word16 Q_syn2 /* i : synthesis scaling */ +); + void hf_synth_amr_wb_init_fx( AMRWB_IO_DEC_HANDLE hAmrwb_IO /* i/o: AMR-WB IO data handle */ ); @@ -10139,6 +10151,12 @@ void hp400_12k8_fx( Word16 mem[] /* i/o: filter memory [6] */ ); +void hp400_12k8_ivas_fx( + Word16 signal[], /* i/o: input signal / output is divided by 16 */ + const Word16 lg, /* i : lenght of signal */ + Word16 mem[] /* i/o: filter memory [6] */ +); + Word16 dot_prod_satcontr( const Word16 *x, const Word16 *y, Word16 qx, Word16 qy, Word16 *qo, Word16 len ); void E_UTIL_f_convolve( const Word16 x[], const Word16 h[], Word16 y[], const Word16 size ); diff --git a/lib_com/stat_com.h b/lib_com/stat_com.h index f99d49802..80822f59e 100644 --- a/lib_com/stat_com.h +++ b/lib_com/stat_com.h @@ -377,7 +377,8 @@ typedef struct Word16 *olapBufferAna; /* q_olapBufferAna */ /* points to FD_CNG_DEC->olapBufferAna[FFTLEN] in case of decoder */ Word16 olapBufferAna_fx[FFTLEN]; /* q_olapBufferAna_fx */ /* points to FD_CNG_DEC->olapBufferAna[FFTLEN] in case of decoder */ Word16 olapBufferSynth[FFTLEN]; /* q_olapBuffer */ - Word16 *olapBufferSynth2; /*Q_syn*/ /* points to FD_CNG_DEC->olapBufferSynth2[FFTLEN] in case of decoder */ + Word16 olapBufferSynth_exp; + Word16 *olapBufferSynth2; /*Q_syn*/ /* points to FD_CNG_DEC->olapBufferSynth2[FFTLEN] in case of decoder */ const PWord16 *olapWinAna; const PWord16 *olapWinSyn; diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 77e779efd..b3471e50c 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -3864,6 +3864,58 @@ void hp400_12k8_fx( return; } +void hp400_12k8_ivas_fx( + Word16 signal[], /* i/o: input signal / output is divided by 16 */ + const Word16 lg, /* i : lenght of signal */ + Word16 mem[] /* i/o: filter memory [6] */ +) +{ + Word16 i; + Word16 x0, x1, x2; + Word32 L_tmp, yy1, y2; + + yy1 = L_Comp( mem[2], mem[3] ); /* Q_syn + 13 */ + y2 = L_Comp( mem[0], mem[1] ); /* Q_syn + 13 */ + x0 = mem[4]; /* Q_syn */ + move16(); + x1 = mem[5]; /* Q_syn */ + move16(); + + FOR( i = 0; i < lg; i++ ) + { + x2 = x1; /* Q_syn */ + move16(); + x1 = x0; /* Q_syn */ + move16(); + x0 = signal[i]; /* Q_syn */ + move16(); + + L_tmp = Mpy_32_16_1( yy1, a_hp400_ivas_fx[1] ); /*yy1 * a_hp400[1]*/ /* Qx(Q_of_yy1) + 10 ---->( (Q_syn+13) + 12 - 15)*/ + L_tmp = Madd_32_16( L_tmp, y2, a_hp400_ivas_fx[2] ); /*y2 * a_hp400[2]*/ /* Qx + 10 ---->( (Q_syn+13) + 12 - 15)*/ + L_tmp = L_shl( L_tmp, 3 ); /* shifting by 3 to maintain same Q (Q_syn+13) */ + + L_tmp = L_mac( L_tmp, x0, b_hp400_fx[0] ); /* Q_syn + 13 */ + L_tmp = L_mac( L_tmp, x1, b_hp400_fx[1] ); /* Q_syn + 13 */ + L_tmp = L_mac( L_tmp, x2, b_hp400_fx[2] ); /* Q_syn + 13 */ + + y2 = yy1; /* Q_syn + 13 */ + move32(); + yy1 = L_tmp; /* Q_syn + 13 */ + move32(); + + signal[i] = round_fx( L_tmp ); /* Q_syn - 3 */ + move16(); + } + + L_Extract( yy1, &mem[2], &mem[3] ); + L_Extract( y2, &mem[0], &mem[1] ); + mem[4] = x0; /* Q_syn */ + mem[5] = x1; /* Q_syn */ + move16(); + move16(); + return; +} + Word16 dot_prod_satcontr( const Word16 *x, const Word16 *y, Word16 qx, Word16 qy, Word16 *qo, Word16 len ) { Word16 tmp_tab_x[L_FRAME16k]; diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index 2fff712f9..b627b3f47 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -2284,12 +2284,12 @@ ivas_error acelp_core_dec_fx( { IF( EQ_16( st->element_mode, EVS_MONO ) ) { - hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); + hf_synth_ivas_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); } ELSE { Copy_Scale_sig_32_16( synth_fx, synth_fx16, output_frame, 0 ); // Q0 - hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); + hf_synth_ivas_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); Copy_Scale_sig_16_32_DEPREC( synth_fx16, synth_fx, output_frame, 0 ); } } diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index cc83eeca3..99d202870 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -2968,7 +2968,9 @@ void generate_comfort_noise_dec_ivas_fx( Word32 tmp1, tmp2; Word16 scaleCldfb; Word32 *fftBuffer = hFdCngCom->fftBuffer; /*hFdCngCom->fftBuffer_exp*/ - Word16 fftBuffer_exp = hFdCngCom->fftBuffer_exp; + Word16 fftBuffer_exp, fftBuffer_exp2; + fftBuffer_exp = hFdCngCom->fftBuffer_exp; + move16(); Word16 fftBuffer_temp_exp[FFTLEN]; Word16 *timeDomainOutput = hFdCngCom->timeDomainBuffer; Word16 temp; @@ -3001,6 +3003,8 @@ void generate_comfort_noise_dec_ivas_fx( hFdCngCom->fftBuffer_exp = fftBuffer_exp; move16(); set16_fx( fftBuffer_temp_exp, fftBuffer_exp, FFTLEN ); + fftBuffer_exp2 = fftBuffer_exp; + move16(); fftBuffer_exp = 0; move16(); @@ -3158,9 +3162,16 @@ void generate_comfort_noise_dec_ivas_fx( /* Perform STFT synthesis */ SynthesisSTFT_ivas_fx( fftBuffer, fftBuffer_exp, timeDomainOutput, hFdCngCom->olapBufferSynth, hFdCngCom->olapWinSyn, - tcx_transition, hFdCngCom, gen_exc, Q_new, st->element_mode, nchan_out ); - scale_sig32( fftBuffer + hFdCngCom->fftlen, sub( FFTLEN, hFdCngCom->fftlen ), sub( fftBuffer_exp, hFdCngCom->fftBuffer_exp ) ); /*Q31 - fftBuffer_exp*/ - + tcx_transition, hFdCngCom, gen_exc, Q_new, st->element_mode, nchan_out ); /* fftBuffer in hfDCngCom->fftBuffer_exp */ + /* fftBuffer now in different Qs [0 to fftlen - 1] = hfDCngCom->fftBuffer_exp and [fftlen to FFTLEN(640)] = fftBuffer_exp2, bringing it in common exponent */ + Word16 shift1 = L_norm_arr( fftBuffer, hFdCngCom->fftlen ); + Word16 shift2 = L_norm_arr( fftBuffer + hFdCngCom->fftlen, sub( FFTLEN, hFdCngCom->fftlen ) ); + Word16 shift = s_max( sub( hFdCngCom->fftBuffer_exp, shift1 ), sub( fftBuffer_exp2, shift2 ) ); + + scale_sig32( fftBuffer, hFdCngCom->fftlen, sub( hFdCngCom->fftBuffer_exp, shift ) ); + scale_sig32( fftBuffer + hFdCngCom->fftlen, sub( FFTLEN, hFdCngCom->fftlen ), sub( fftBuffer_exp2, shift ) ); + hFdCngCom->fftBuffer_exp = shift; + move16(); { Word32 Lener, att; Word16 exp; diff --git a/lib_dec/hf_synth_fx.c b/lib_dec/hf_synth_fx.c index 65c2e9290..27d768f63 100644 --- a/lib_dec/hf_synth_fx.c +++ b/lib_dec/hf_synth_fx.c @@ -21,6 +21,7 @@ static void filt_6k_7k_scale_fx( Word16 signal[], Word16 lg, Word16 mem[], Word16 fact, Word16 exp ); static void hf_synthesis_fx( ZERO_BWE_DEC_HANDLE hBWE_zero, const Word32 core_brate, const Word16 output_subfr, const Word16 Aq[], const Word16 exc[], const Word16 Q_exc, Word16 synth[], Word16 synth16k[], const Word16 Q_syn ); +static void hf_synthesis_ivas_fx( ZERO_BWE_DEC_HANDLE hBWE_zero, const Word32 core_brate, const Word16 output_subfr, const Word16 Aq[], const Word16 exc[], const Word16 Q_exc, Word16 synth[], Word16 synth16k[], const Word16 Q_syn ); static void hf_synthesis_amr_wb_fx( const Word32 core_brate, const Word16 output_subfr, const Word16 Ap[], Word16 exc16k[], Word16 synth_out[], Word16 *mem_syn_hf, Word16 *delay_syn_hf, Word16 *mem_hp_interp, Word16 p_r, Word16 HF_corr_gain, Word16 til, Word16 voice_factors, const Word16 exc[], const Word16 Q_exc, const Word16 Q_out, Word16 qhf ); static void envelope_fx( AMRWB_IO_DEC_HANDLE hAmrwb_IO, const Word32 core_brate, const Word16 Aq[], Word16 Ap[], Word16 *r, Word16 tilt0, Word16 tilt, Word16 voice_factor ); static void AdaptiveStartBand_fx( Word16 *start_band, const Word32 rate, const Word16 *lsf, const Word16 voicing_fac, const Word16 clas, Word16 *voicing_flag, Word16 *start_band_old, Word32 *OptCrit_old ); @@ -291,7 +292,213 @@ static void hf_synthesis_fx( { Copy( HF_syn, upsampled_HF_syn, L_SUBFR16k ); /* Q_syn */ } + Vr_add( synth16k, upsampled_HF_syn, synth16k, output_subfr ); + + return; +} + +void hf_synth_ivas_fx( + ZERO_BWE_DEC_HANDLE hBWE_zero, /* i/o: handle to 0 bit BWE parameters */ + const Word32 core_brate, /* i : core bitrate Q0*/ + const Word16 output_frame, /* i : output frame length Q0*/ + const Word16 *Aq, /* i : quantized Az Q12*/ + const Word16 *exc, /* i : excitation at 12.8 kHz Q_exc*/ + Word16 *synth, /* i : 12.8kHz synthesis signal Q_syn2*/ + Word16 *synth16k, /* o : 16kHz synthesis signal Q_syn2*/ + const Word16 Q_exc, /* i : excitation scaling */ + const Word16 Q_syn2 /* i : synthesis scaling */ +) +{ + const Word16 *p_Aq; + Word16 i_subfr, output_subfr; + + output_subfr = shr( output_frame, 2 ); + + p_Aq = Aq; /* Q12 */ + FOR( i_subfr = 0; i_subfr < L_FRAME; i_subfr += L_SUBFR ) + { + hf_synthesis_ivas_fx( hBWE_zero, core_brate, output_subfr, p_Aq, &exc[i_subfr], Q_exc, &synth[i_subfr], &synth16k[i_subfr * output_subfr / L_SUBFR], Q_syn2 ); + + p_Aq += ( M + 1 ); /* Q12 */ + } + + return; +} + +static void hf_synthesis_ivas_fx( + ZERO_BWE_DEC_HANDLE hBWE_zero, + const Word32 core_brate, /* i : core bitrate Q0*/ + const Word16 output_subfr, /* i : output sub-frame length Q0*/ + const Word16 Aq[], /* i : quantized Az Q12*/ + const Word16 exc[], /* i : excitation at 12.8 kHz Q_exc*/ + const Word16 Q_exc, /* i : excitation scaling */ + Word16 synth[], /* i : 12.8kHz synthesis signal Q_syn*/ + Word16 synth16k[], /* i/o: 16kHz synthesis signal Q_syn*/ + const Word16 Q_syn /* i : synthesis scaling */ +) +{ + Word16 i, s; + Word16 HF_syn[L_SUBFR16k], upsampled_HF_syn[L_FRAME48k / NB_SUBFR]; + Word16 HF_exc[L_SUBFR16k]; + Word16 exp1, exp2, scale, tmp, ener, Q_tmp, Q_ener, sft; + Word32 L_tmp, ONE, P_ONE; + Word16 Ap[M16k + 1]; + Word64 prod; + + /*-----------------------------------------------------------------* + * generate white noise vector + *-----------------------------------------------------------------*/ + + Random_Fill( &hBWE_zero->seed2, L_SUBFR16k, HF_exc, 3 ); /* 3 = Shift Right by 3 */ + + /* o: HF_exc in Q(-3) */ + + /*-----------------------------------------------------------------* + * calculate energy scaling factor so that white noise would have the + * same energy as exc12k8 + *-----------------------------------------------------------------*/ + + /*ener = sum2_f( exc, L_SUBFR ) + 0.01f*/ + ener = extract_h( Dot_product12( exc, exc, L_SUBFR, &exp2 ) ); + exp2 = sub( exp2, add( Q_exc, Q_exc ) ); // ener exponent + + /*tmp = round_fx(Dot_product12(HF_exc, HF_exc, output_subfr, &exp1)); */ + L_tmp = Dot_product12( HF_exc, HF_exc, L_SUBFR16k, &exp1 ); + tmp = round_fx( L_tmp ); + exp1 = add( exp1, 6 ); /* tmp exponent */ + + ener = shr( ener, 1 ); /* to avoid the assertion in div_s() further*/ + exp2 = add( exp2, 1 ); + + tmp = div_s( ener, tmp ); + exp1 = sub( exp2, exp1 ); + + scale = Sqrt16( tmp, &exp1 ); /* scale exponent = exp1 */ + + /*-----------------------------------------------------------------* + * calculate energy scaling factor to respect tilt of synth12k8 + * (tilt: 1=voiced, -1=unvoiced) + *-----------------------------------------------------------------*/ + + hp400_12k8_ivas_fx( synth, L_SUBFR, hBWE_zero->mem_hp400_fx ); + + /* i: mem_hp400 in Q_syn */ + /* i: synth in Q_syn */ + /* o: synth in Q_syn-3 */ + prod = W_mac0_16_16( 1L, synth[0], synth[0] ); /* 2*(Q_syn-3) */ + FOR( i = 1; i < L_SUBFR; i++ ) + { + prod = W_mac0_16_16( prod, synth[i], synth[i] ); /* 2*(Q_syn-3) */ + } + sft = W_norm( prod ); + ener = extract_h( W_extract_h( W_shl( prod, sft ) ) ); + Q_ener = sub( add( shl( sub( Q_syn, 3 ), 1 ), sft ), 48 ); + + prod = W_mac0_16_16( 1L, synth[1], synth[0] ); /* 2*(Q_syn-3) */ + FOR( i = 2; i < L_SUBFR; i++ ) + { + prod = W_mac0_16_16( prod, synth[i], synth[i - 1] ); /* 2*(Q_syn-3) */ + } + sft = sub( W_norm( prod ), 1 ); + tmp = extract_h( W_extract_h( W_shl( prod, sft ) ) ); + Q_tmp = sub( add( shl( sub( Q_syn, 3 ), 1 ), sft ), 48 ); + tmp = s_max( 0, tmp ); + IF( tmp > 0 ) + { + tmp = div_s( tmp, ener ); + Q_tmp = add( 15, sub( Q_tmp, Q_ener ) ); + } + + /*-----------------------------------------------------------------* + * modify energy of white noise according to synthesis tilt + *-----------------------------------------------------------------*/ + /* tmp = 1.0 - fac */ + ONE = L_shl( 1, Q_tmp ); + P_ONE = L_shl( 3277 /* 0.1 in Q15 */, sub( Q_tmp, 15 ) ); + L_tmp = L_msu0( ONE, tmp, 1 ); + test(); + if ( core_brate == FRAME_NO_DATA || EQ_32( core_brate, SID_2k40 ) ) + { + /* emphasize HF noise in CNG */ + /*fac *= 2.0f;*/ + L_tmp = L_add( L_tmp, L_tmp ); + } + L_tmp = L_max( L_tmp, P_ONE ); + L_tmp = L_min( L_tmp, ONE ); + + sft = norm_l( L_tmp ); + L_tmp = L_shl( L_tmp, sft ); + + tmp = round_fx( L_tmp ); + Q_tmp = sub( add( Q_tmp, sft ), 16 ); + + /*scale *= fac;*/ + tmp = mult_r( scale, tmp ); /* Q = (15 - exp1) + Q_tmp - 15 */ + Q_tmp = sub( Q_tmp, exp1 ); + /*-----------------------------------------------------------------* + * modify HF excitation according to both calculated scaling factors + * high pass filtering (0.94ms of delay) + *-----------------------------------------------------------------*/ + + exp2 = sub( hBWE_zero->memExp1, exp1 ); + hBWE_zero->memExp1 = exp1; + move16(); + + filt_6k_7k_scale_fx( HF_exc, L_SUBFR16k, hBWE_zero->mem_hf_fx, tmp, exp2 ); + /* i: HF_exc in Q(-3) */ + /* o: HF_exc in ((-3) + Q_tmp - 17) */ + /* o: hBWE_zero->mem_hf_fx in Q(HF_exc)-2 */ + + /*-----------------------------------------------------------------* + * synthesis of noise: 4.8kHz..5.6kHz --> 6kHz..7kHz + *-----------------------------------------------------------------*/ + + /*weight_a( Aq, Ap, 0.6f, M );*/ + weight_a_lc_fx( Aq, Ap, Gamma_19661_Tbl_fx, M ); + /* o: Ap in Q14 */ + + Syn_filt_s( 0, Ap, M, HF_exc, HF_syn, L_SUBFR16k, hBWE_zero->mem_syn_hf_fx, 1 ); + /* o: HF_syn in same Q as HF_exc */ + /* o: mem_syn_hf_fx same Q as HF_syn */ + + Scale_sig( HF_syn, L_SUBFR16k, ( add( Q_syn, exp1 ) ) ); /* bring HF_syn to (Q_syn+exp1) */ + + /*-----------------------------------------------------------------* + * add filtered HF noise to speech synthesis + *-----------------------------------------------------------------*/ + + /* delay by 5 samples @16kHz to compensate CLDFB resampling delay (20samples) and HP filtering delay (roughly 15 samples) */ + delay_signal_fx( HF_syn, L_SUBFR16k, hBWE_zero->delay_syn_hf_fx, NS2SA_FX2( 16000, DELAY_CLDFB_NS ) - 15 ); + + /* interpolate the HF synthesis */ + IF( EQ_16( output_subfr, L_SUBFR48k ) ) /* 48kHz sampled output */ + { + s = s_max( s_min( sub( s_min( Find_Max_Norm16( HF_syn, L_SUBFR16k ), Find_Max_Norm16( hBWE_zero->mem_hp_interp_fx, INTERP_3_1_MEM_LEN - 3 ) ), 3 ), + sub( Find_Max_Norm16( hBWE_zero->mem_hp_interp_fx + INTERP_3_1_MEM_LEN - 3, 3 ), 1 ) ), + 0 ); + Scale_sig( HF_syn, L_SUBFR16k, s ); /* Q_syn+exp1+s */ + Scale_sig( hBWE_zero->mem_hp_interp_fx, INTERP_3_1_MEM_LEN, s ); /* Qx + s */ + interpolate_3_over_1_allpass_fx( HF_syn, L_SUBFR16k, upsampled_HF_syn, hBWE_zero->mem_hp_interp_fx ); + Scale_sig( upsampled_HF_syn, 3 * L_SUBFR16k, -s ); /* Q_syn + exp1 + s */ + Scale_sig( hBWE_zero->mem_hp_interp_fx, INTERP_3_1_MEM_LEN, -s ); /* Qx */ + Scale_sig( HF_syn, L_SUBFR16k, -s ); /* Q_syn+exp1 */ + Scale_sig( upsampled_HF_syn, L_SUBFR48k, -1 ); + } + ELSE IF( EQ_16( output_subfr, L_SUBFR32k ) ) /* 32kHz sampled output */ + { + s = s_max( sub( s_min( Find_Max_Norm16( HF_syn, L_SUBFR16k ), Find_Max_Norm16( hBWE_zero->mem_hp_interp_fx, 2 * ALLPASSSECTIONS_STEEP ) ), 2 ), 0 ); + Scale_sig( HF_syn, L_SUBFR16k, s ); /* Q_syn+exp1+s */ + Scale_sig( hBWE_zero->mem_hp_interp_fx, 2 * ALLPASSSECTIONS_STEEP, s ); /* Qx + s */ + Interpolate_allpass_steep_fx( HF_syn, hBWE_zero->mem_hp_interp_fx, L_SUBFR16k, upsampled_HF_syn ); + Scale_sig( upsampled_HF_syn, 2 * L_SUBFR16k, -s ); /* Q_syn + exp1 */ + Scale_sig( hBWE_zero->mem_hp_interp_fx, 2 * ALLPASSSECTIONS_STEEP, -s ); /* Qx */ + Scale_sig( HF_syn, L_SUBFR16k, -s ); /* Q_syn+exp1 */ + } + ELSE /* 16kHz sampled output */ + { + Copy( HF_syn, upsampled_HF_syn, L_SUBFR16k ); /* Q_syn */ + } Vr_add( synth16k, upsampled_HF_syn, synth16k, output_subfr ); return; diff --git a/lib_dec/ivas_ism_dtx_dec_fx.c b/lib_dec/ivas_ism_dtx_dec_fx.c index 73ea5cd1f..d5943a90c 100644 --- a/lib_dec/ivas_ism_dtx_dec_fx.c +++ b/lib_dec/ivas_ism_dtx_dec_fx.c @@ -161,7 +161,7 @@ void ivas_ism_dtx_limit_noise_energy_for_near_silence_fx( ) { Word32 fac_fx, cng_noise_nrg_obj_fx, cng_noise_nrg_dominant_fx; - Word16 ch, cng_noise_level_len, Q_cng_noise_nrg_dominant, Q_fac; + Word16 ch, cng_noise_level_len, Q_cng_noise_nrg_dominant, exp; HANDLE_FD_CNG_COM hFdCngCom; hFdCngCom = hSCE[sce_id_dtx]->hCoreCoder[0]->hFdCngDec->hFdCngCom; cng_noise_level_len = sub( hFdCngCom->stopFFTbin, hFdCngCom->startBand ); @@ -193,10 +193,10 @@ void ivas_ism_dtx_limit_noise_energy_for_near_silence_fx( Q_temp = sub( Q_temp, 1 ); temp = L_shr( temp, 1 ); } - fac_fx = getSqrtWord32( temp ); /*Resultant Q=Q_temp/2*/ - Q_fac = shr( Q_temp, 1 ); + exp = sub( 31, Q_temp ); + fac_fx = Sqrt32( temp, &exp ); v_multc_fixed( hFdCngCom->cngNoiseLevel, fac_fx, hFdCngCom->cngNoiseLevel, cng_noise_level_len ); /*Resultant Q of cngNoiseLevel is Q_cngNoiseLevel for ch*/ - scale_sig32( hFdCngCom->cngNoiseLevel, cng_noise_level_len, negate( sub( 31, Q_fac ) ) ); /*Restoring Q of hFdCngCom->cngNoiseLevel to Q_cngNoiseLevel */ + scale_sig32( hFdCngCom->cngNoiseLevel, cng_noise_level_len, exp ); /*Restoring Q of hFdCngCom->cngNoiseLevel to Q_cngNoiseLevel */ } } } -- GitLab From e2cf5b321499d899bc7bb0d96a9f4eddc614a896 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 23 May 2025 10:58:33 +0200 Subject: [PATCH 604/698] port FIX_998_UNUSED_FUNCTION --- lib_com/options.h | 3 +- lib_dec/ivas_dirac_dec_fx.c | 34 +++++++++++++++++++ lib_rend/ivas_dirac_output_synthesis_dec_fx.c | 22 +++++++++--- lib_rend/ivas_dirac_rend_fx.c | 4 +++ lib_rend/ivas_prot_rend_fx.h | 4 +++ 5 files changed, 62 insertions(+), 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 91172d59a..d6b22d17d 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,7 +128,8 @@ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ -#endif +#endif +#define FIX_998_UNUSED_FUNCTION /* FhG: issue 998: delete unused funtion ivas_dirac_dec_get_response_split_order */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index feca814c8..058897119 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2738,6 +2738,7 @@ void ivas_dirac_dec_render_sf_fx( { masa_band_mapping = st_ivas->hMasa->data.band_mapping; } +#ifndef FIX_998_UNUSED_FUNCTION test(); test(); IF( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && EQ_16( st_ivas->hCombinedOrientationData->shd_rot_max_order, 1 ) ) @@ -2772,6 +2773,20 @@ void ivas_dirac_dec_render_sf_fx( NULL, hodirac_flag ); } +#else + ivas_dirac_dec_compute_directional_responses_fx( hSpatParamRendCom, + hDirACRend, + st_ivas->hVBAPdata, + masa_band_mapping, + st_ivas->hMasaIsmData, + azimuth, + elevation, + md_idx, + surCohRatio_fx, + surCohRatio_q_fx, + hodirac_flag ); + +#endif } test(); @@ -3291,6 +3306,7 @@ void ivas_dirac_dec_render_sf_fx( move16(); } +#ifndef FIX_998_UNUSED_FUNCTION test(); test(); IF( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order > 0 ) @@ -3333,6 +3349,24 @@ void ivas_dirac_dec_render_sf_fx( hodirac_flag, hDirAC->hConfig->dec_param_estim ); } +#else + ivas_dirac_dec_output_synthesis_process_slot_fx( reference_power_fx, + DirAC_mem.reference_power_q, + p_onset_filter_fx, + azimuth, + elevation, + hSpatParamRendCom->diffuseness_vector_fx[md_idx], + hSpatParamRendCom->q_diffuseness_vector, + hSpatParamRendCom, + hDirACRend, + st_ivas->hVBAPdata, + hDirACRend->hOutSetup, + nchan_transport, + md_idx, + hodirac_flag, + hDirAC->hConfig->dec_param_estim ); + +#endif IF( hDirAC->hConfig->dec_param_estim ) { diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index 7b446a80e..70719a185 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -650,8 +650,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( Word16 q_diffuseness, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ +#ifndef FIX_998_UNUSED_FUNCTION const Word16 sh_rot_max_order, - const Word32 *p_Rmat, /* i : rotation matrix Q30*/ + const Word32 *p_Rmat, /* i : rotation matrix Q30*/ +#endif const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */ const Word16 nchan_transport, /* i : number of transport channels*/ @@ -705,8 +707,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( md_idx, NULL, 0, +#ifndef FIX_998_UNUSED_FUNCTION 2, p_Rmat, +#endif hodirac_flag ); { @@ -777,8 +781,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( md_idx, NULL, 0, +#ifndef FIX_998_UNUSED_FUNCTION sh_rot_max_order, p_Rmat, +#endif hodirac_flag ); { @@ -2778,6 +2784,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( return; } +#ifndef FIX_998_UNUSED_FUNCTION /*------------------------------------------------------------------------- * ivas_dirac_dec_get_response_split_order() @@ -3061,6 +3068,7 @@ static void ivas_dirac_dec_get_response_split_order_fx( return; } +#endif /*------------------------------------------------------------------------- * ivas_dirac_dec_compute_directional_responses() @@ -3079,9 +3087,11 @@ void ivas_dirac_dec_compute_directional_responses_fx( const Word16 md_idx, const Word32 *surCohRatio_fx, /*i:Q_surCohRatio*/ Word16 Q_surCohRatio, +#ifndef FIX_998_UNUSED_FUNCTION const Word16 shd_rot_max_order, /* i : split-order rotation method */ const Word32 *p_Rmat, /* i : rotation matrix Q30*/ - const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */ +#endif + const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */ ) { Word16 k, l, i; @@ -3194,6 +3204,7 @@ void ivas_dirac_dec_compute_directional_responses_fx( exp_direct_response_dir2 = 0; move16(); +#ifndef FIX_998_UNUSED_FUNCTION IF( p_Rmat != 0 ) { ivas_dirac_dec_get_response_split_order_fx( azimuth[k], elevation[k], direct_response_hoa_fx, shd_rot_max_order, p_Rmat, &Q_direct_response_hoa ); @@ -3205,10 +3216,11 @@ void ivas_dirac_dec_compute_directional_responses_fx( } ELSE { +#endif #ifdef FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx ivas_dirac_dec_get_response_fx_29( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order ); #else - ivas_dirac_dec_get_response_fx( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_hoa ); + ivas_dirac_dec_get_response_fx( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_hoa ); #endif IF( hodirac_flag ) @@ -3216,10 +3228,12 @@ void ivas_dirac_dec_compute_directional_responses_fx( #ifdef FIX_1310_SPEEDUP_ivas_dirac_dec_get_response_fx ivas_dirac_dec_get_response_fx_29( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order ); #else - ivas_dirac_dec_get_response_fx( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_dir2 ); + ivas_dirac_dec_get_response_fx( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order, Q_direct_response_dir2 ); #endif } +#ifndef FIX_998_UNUSED_FUNCTION } +#endif test(); test(); diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index f67f3761b..708fe8b20 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -4223,8 +4223,10 @@ static void ivas_masa_ext_dirac_render_sf_fx( md_idx, surCohRatio_fx, Q_surCohRatio, +#ifndef FIX_998_UNUSED_FUNCTION 0, NULL, +#endif 0 ); Word16 proto_direct_buffer_f_temp_q[60]; @@ -4599,8 +4601,10 @@ static void ivas_masa_ext_dirac_render_sf_fx( hSpatParamRendCom->q_diffuseness_vector, hSpatParamRendCom, hDirACRend, +#ifndef FIX_998_UNUSED_FUNCTION 0, 0, +#endif hMasaExtRend->hVBAPdata, hDirACRend->hOutSetup, nchan_transport, diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index 4e23011b4..ba7ca8458 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -472,8 +472,10 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( Word16 q_diffuseness, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ +#ifndef FIX_998_UNUSED_FUNCTION const Word16 sh_rot_max_order, const Word32 *p_Rmat, /* i : rotation matrix */ +#endif const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */ const Word16 nchan_transport, /* i : number of transport channels*/ @@ -545,8 +547,10 @@ void ivas_dirac_dec_compute_directional_responses_fx( const Word16 md_idx, const Word32 *surCohRatio_fx, Word16 Q_surCohRatio, +#ifndef FIX_998_UNUSED_FUNCTION const Word16 shd_rot_max_order, /* i : split-order rotation method */ const Word32 *p_Rmat, /* i : rotation matrix */ +#endif const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */ ); -- GitLab From 889b7fd5f512305821befc78e178b03e33466446 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Fri, 23 May 2025 12:38:27 +0200 Subject: [PATCH 605/698] Fixed declarations and refs --- lib_rend/ivas_stat_rend.h | 9 ++++++--- lib_util/hrtf_file_reader.c | 39 ++++++++++++++++++++++++------------- lib_util/hrtf_file_reader.h | 16 ++------------- 3 files changed, 34 insertions(+), 30 deletions(-) diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index 77d3bcc35..0443d1854 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -1480,9 +1480,12 @@ typedef struct ivas_hrtfs_parambin_struct #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES typedef struct ivas_hrtfs_statistics_struct { - Word32 *average_energy_l; - Word32 *average_energy_r; - Word32 *inter_aural_coherence; + const Word32 *average_energy_l; + const Word32 *average_energy_r; + const Word32 *inter_aural_coherence; + Word32 *average_energy_l_dyn; + Word32 *average_energy_r_dyn; + Word32 *inter_aural_coherence_dyn; int16_t fromROM; /* Flag that indicates that the pointers point to tables in ROM (controls init/dealloc).*/ } HRTFS_STATISTICS, *HRTFS_STATISTICS_HANDLE; #endif diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 364afc813..890d488bf 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -797,17 +797,21 @@ static ivas_error load_reverb_from_binary( if ( is_reverb ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - hHrtfStatistics->average_energy_l = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); - hHrtfStatistics->average_energy_r = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); - hHrtfStatistics->inter_aural_coherence = (Word32 *) malloc( lr_iac_len * sizeof( Word32) ); + hHrtfStatistics->average_energy_l_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + hHrtfStatistics->average_energy_r_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + hHrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32) ); - if ( hHrtfStatistics->average_energy_l == NULL || hHrtfStatistics->average_energy_r == NULL || hHrtfStatistics->inter_aural_coherence == NULL ) + if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_r_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); } - fread( hHrtfStatistics->average_energy_l, sizeof( const Word32 ), lr_iac_len, f_hrtf ); - fread( hHrtfStatistics->average_energy_r, sizeof( const Word32 ), lr_iac_len, f_hrtf ); - fread( hHrtfStatistics->inter_aural_coherence, sizeof( const Word32 ), lr_iac_len, f_hrtf ); + hHrtfStatistics->average_energy_l = hHrtfStatistics->average_energy_l_dyn; + hHrtfStatistics->average_energy_r = hHrtfStatistics->average_energy_r_dyn; + hHrtfStatistics->inter_aural_coherence = hHrtfStatistics->inter_aural_coherence_dyn; + fread( hHrtfStatistics->average_energy_l_dyn, sizeof( const Word32 ), lr_iac_len, f_hrtf ); + fread( hHrtfStatistics->average_energy_r_dyn, sizeof( const Word32 ), lr_iac_len, f_hrtf ); + fread( hHrtfStatistics->inter_aural_coherence_dyn, sizeof( const Word32 ), lr_iac_len, f_hrtf ); + hHrtfStatistics->fromROM = FALSE; #else @@ -2366,18 +2370,27 @@ void destroy_SetOfHRTF( * Destroy the HRTF statistics set. *---------------------------------------------------------------------*/ -ivas_error destroy_hrtf_statistics( +void destroy_hrtf_statistics( IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ ) { - if ( hHrtfStatistics != NULL && ( *hHrtfStatistics )->fromROM == FALSE ) + if ( ( hHrtfStatistics != NULL ) && ( *hHrtfStatistics != NULL ) && ( ( *hHrtfStatistics )->fromROM == FALSE ) ) { - free( ( *hHrtfStatistics )->average_energy_l ); - free( ( *hHrtfStatistics )->average_energy_r ); - free( ( *hHrtfStatistics )->inter_aural_coherence ); + if ( ( *hHrtfStatistics )->average_energy_l != NULL ) + { + free( ( *hHrtfStatistics )->average_energy_l_dyn ); + } + if ( ( *hHrtfStatistics )->average_energy_r != NULL ) + { + free( ( *hHrtfStatistics )->average_energy_r_dyn ); + } + if ( ( *hHrtfStatistics )->inter_aural_coherence != NULL ) + { + free( ( *hHrtfStatistics )->inter_aural_coherence_dyn ); + } + } ivas_HRTF_statistics_close( hHrtfStatistics ); - return IVAS_ERR_OK; } #endif diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index 4b9806eb8..302a90dee 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -96,7 +96,7 @@ ivas_error load_HRTF_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES /*---------------------------------------------------------------------* - * load_reverb_from_binary() + * load_reverb_binary() * * Load reverb binary data into the HRTF handle *---------------------------------------------------------------------*/ @@ -186,7 +186,7 @@ ivas_error load_parambin_HRTF_from_binary( * free memory allocated for HRTF statistics binary data *---------------------------------------------------------------------*/ -ivas_error destroy_hrtf_statistics( +void destroy_hrtf_statistics( IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ ); #endif @@ -206,18 +206,6 @@ void destroy_parambin_hrtf( IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* i/o: Parambin HRTF handle */ ); -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -/*---------------------------------------------------------------------* - * destroy_hrtf_statistics() - * - * free memory allocated for HRTF statistics binary data - *---------------------------------------------------------------------*/ - -ivas_error destroy_hrtf_statistics( - IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ -); -#endif - /*---------------------------------------------------------------------* * destroy_td_hrtf() * -- GitLab From 7d27a1f4b85ec132993021f9d441d693ac7687ca Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Fri, 23 May 2025 13:02:06 +0200 Subject: [PATCH 606/698] deactivated switch --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 0542d2be6..c257150a2 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -97,7 +97,7 @@ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ -#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -- GitLab From 447118dcd8dad57143b0607fa6ea81e818eee165 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Fri, 23 May 2025 17:42:32 +0530 Subject: [PATCH 607/698] Fix for EVS BE differences --- lib_dec/acelp_core_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index b627b3f47..fd0c8ce2d 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -2284,7 +2284,7 @@ ivas_error acelp_core_dec_fx( { IF( EQ_16( st->element_mode, EVS_MONO ) ) { - hf_synth_ivas_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); + hf_synth_fx( st->hBWE_zero, st->core_brate, output_frame, Aq_fx, exc2_fx, psyn_fx, synth_fx16, st->Q_exc, st->Q_syn2 ); } ELSE { -- GitLab From 21cfaa4b9c28ce68dbc421edec4ee3363202d47c Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 23 May 2025 14:32:18 +0200 Subject: [PATCH 608/698] port MR 1425 from float fix msan error for OSBA to stereo decoding --- lib_com/options.h | 2 ++ lib_dec/ivas_ism_renderer_fx.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 4fd97b2d4..1d23ec23f 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -132,6 +132,8 @@ #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ #endif +#define NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO /* FhG: issues #1014, #1015, #1016: fix tc buffer info update in the discrete ism renderer */ + /* #################### End BASOP porting switches ############################ */ #endif diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index c3904d136..efb022919 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -183,6 +183,11 @@ void ivas_ism_render_sf_fx( n_samples_rendered_loop = 0; move16(); +#ifdef DEBUGGING + assert( slots_to_render == 0 ); + assert( last_sf <= st_ivas->hTcBuffer->nb_subframes ); +#endif + WHILE( slots_to_render > 0 ) { slots_to_render = sub( slots_to_render, st_ivas->hTcBuffer->subframe_nbslots[last_sf] ); @@ -322,7 +327,13 @@ void ivas_ism_render_sf_fx( ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_in_subframe ); n_samples_rendered_loop = add( n_samples_rendered_loop, n_samples_in_subframe ); +#ifdef NONBE_FIX_1014_1015_1016_OSBA_JBM_STEREO + /* update rendered subframe and slots info for all cases apart from a following crend call, the update will + then happen in the crend call*/ + if ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) +#else IF( EQ_16( st_ivas->renderer_type, RENDERER_TD_PANNING ) ) +#endif { st_ivas->hTcBuffer->subframes_rendered = add( st_ivas->hTcBuffer->subframes_rendered, 1 ); st_ivas->hTcBuffer->slots_rendered = add( st_ivas->hTcBuffer->slots_rendered, st_ivas->hTcBuffer->subframe_nbslots[subframe_idx] ); -- GitLab From 71126a82078ca01bf6c38a9e3cdd20e8502820aa Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 23 May 2025 15:28:28 +0200 Subject: [PATCH 609/698] port MR 1382 from float correct energy for BINAURAL_ROOM_REVERB output with head rotation for parameteric multichannel modes --- lib_com/options.h | 1 + lib_dec/ivas_binRenderer_internal_fx.c | 65 +++++++++++++++++++------- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index a0c7f4f3f..06952c341 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -132,6 +132,7 @@ #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ #endif #define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ +#define NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING /* FhG: issue 987: solution b: downmix HOA3 to stereo a input for the reverberator */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index 9b7bd86b6..33cf0c9e2 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -1095,28 +1095,54 @@ static void ivas_binaural_obtain_DMX_fx( set32_fx( outRealRightPtr_fx, 0, CLDFB_NO_CHANNELS_MAX ); set32_fx( outImagRightPtr_fx, 0, CLDFB_NO_CHANNELS_MAX ); - FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) +#ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING + /*Ambisonics input requires different processing*/ + if ( EQ_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) ) { - Word32 foa_const_fx = L_shl( hBinRenderer->hReverb->foa_enc_fx[chIdx][1], 1 ); // Q30 - Word32 one_add_foa_const, one_sub_foa_const; + Word32 *inRealPtr_W, *inImagPtr_W; + Word32 *inRealPtr_Y, *inImagPtr_Y; - one_add_foa_const = L_add( ONE_IN_Q30, foa_const_fx ); // Q30 - one_sub_foa_const = L_sub_sat( ONE_IN_Q30, foa_const_fx ); // Q30 + inRealPtr_W = (Word32 *) &( RealBuffer[0][k][0] ); + inImagPtr_W = (Word32 *) &( ImagBuffer[0][k][0] ); - inRealPtr_fx = (Word32 *) &( RealBuffer[chIdx][k][0] ); - inImagPtr_fx = (Word32 *) &( ImagBuffer[chIdx][k][0] ); + inRealPtr_Y = (Word32 *) &( RealBuffer[1][k][0] ); + inImagPtr_Y = (Word32 *) &( ImagBuffer[1][k][0] ); FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { - outRealLeftPtr_fx[bandIdx] = L_add( outRealLeftPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1 - move32(); - outImagLeftPtr_fx[bandIdx] = L_add( outImagLeftPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1 - move32(); + outRealLeftPtr_fx[bandIdx] = L_add( inRealPtr_W[bandIdx], inRealPtr_Y[bandIdx] ); + outImagLeftPtr_fx[bandIdx] = L_add( inImagPtr_W[bandIdx], inImagPtr_Y[bandIdx] ); - outRealRightPtr_fx[bandIdx] = L_add( outRealRightPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1 - move32(); - outImagRightPtr_fx[bandIdx] = L_add( outImagRightPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1 - move32(); + outRealRightPtr_fx[bandIdx] = L_sub( inRealPtr_W[bandIdx], inRealPtr_Y[bandIdx] ); + outImagRightPtr_fx[bandIdx] = L_sub( inImagPtr_W[bandIdx], inImagPtr_Y[bandIdx] ); + } + } + else +#endif + { + FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) + { + Word32 foa_const_fx = L_shl( hBinRenderer->hReverb->foa_enc_fx[chIdx][1], 1 ); // Q30 + Word32 one_add_foa_const, one_sub_foa_const; + + one_add_foa_const = L_add( ONE_IN_Q30, foa_const_fx ); // Q30 + one_sub_foa_const = L_sub_sat( ONE_IN_Q30, foa_const_fx ); // Q30 + + inRealPtr_fx = (Word32 *) &( RealBuffer[chIdx][k][0] ); + inImagPtr_fx = (Word32 *) &( ImagBuffer[chIdx][k][0] ); + + FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) + { + outRealLeftPtr_fx[bandIdx] = L_add( outRealLeftPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1 + move32(); + outImagLeftPtr_fx[bandIdx] = L_add( outImagLeftPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_add_foa_const ) ); // Q_in - 1 + move32(); + + outRealRightPtr_fx[bandIdx] = L_add( outRealRightPtr_fx[bandIdx], Mpy_32_32( inRealPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1 + move32(); + outImagRightPtr_fx[bandIdx] = L_add( outImagRightPtr_fx[bandIdx], Mpy_32_32( inImagPtr_fx[bandIdx], one_sub_foa_const ) ); // Q_in - 1 + move32(); + } } } } @@ -1462,8 +1488,15 @@ ivas_error ivas_binRenderer_open_fx( { test(); test(); - /* NOTE to future self by @kiene: this should have been changed by NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM, but the BASOP repo code is not at that point yet, so not change needed here */ +#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM + IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) +#else +#ifdef NONBE_FIX_987_PARAMC_BINAURAL_REVERB_RENDERING + IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && NE_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) ) +#else IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) +#endif +#endif { FOR( k = 0; k < 11; k++ ) { -- GitLab From 61c61ffbcbb1863eae0f7de1eea1f54765a7a863 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Fri, 23 May 2025 16:51:53 +0200 Subject: [PATCH 610/698] fixed syntax in lib_rend.c, solved build errors locally in windows --- lib_rend/lib_rend.c | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 7c2e4115d..09894c319 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -4319,22 +4319,17 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( test(); test(); + #ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) #else IF( EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { - IF( NE_32( ( error = initMcBinauralRendering( inputMc, - inputMc->base.inConfig, - hIvasRend->outputConfig, - hIvasRend->hRendererConfig, - hIvasRend->hHrtfs.hSetOfHRTF, + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, FALSE ) ), IVAS_ERR_OK ) ) #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - hIvasRend->hHrtfs.hHrtfStatistics, -#endif - FALSE ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, FALSE ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -5170,11 +5165,20 @@ ivas_error IVAS_REND_SetHeadRotation( hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, + TRUE ) ), + IVAS_ERR_OK ) ) #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - hIvasRend->hHrtfs.hHrtfStatistics, + + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], + hIvasRend->inputsMc[i].base.inConfig, + hIvasRend->outputConfig, + hIvasRend->hRendererConfig, + hIvasRend->hHrtfs.hSetOfHRTF, + hIvasRend->hHrtfs.hHrtfStatistics, + TRUE ) ), + IVAS_ERR_OK ) ) #endif - TRUE ) ), - IVAS_ERR_OK ) ) + { return error; } @@ -5283,11 +5287,20 @@ ivas_error IVAS_REND_DisableHeadRotation( hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, + TRUE ) ), + IVAS_ERR_OK ) ) #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], + hIvasRend->inputsMc[i].base.inConfig, + hIvasRend->outputConfig, + hIvasRend->hRendererConfig, + hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, -#endif TRUE ) ), - IVAS_ERR_OK ) ) + IVAS_ERR_OK ) ) +#endif + + { return error; -- GitLab From 2091110cbf8217c44fc3c6e24ca8e55456113d8e Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Fri, 23 May 2025 17:05:11 +0200 Subject: [PATCH 611/698] draft: activated compiler switch and added code for converting float binary hrtf data to word32 (needs debugigng) --- lib_com/options.h | 2 +- lib_util/hrtf_file_reader.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index c257150a2..0542d2be6 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -97,7 +97,7 @@ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ -//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 890d488bf..30921e7fe 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -808,9 +808,15 @@ static ivas_error load_reverb_from_binary( hHrtfStatistics->average_energy_l = hHrtfStatistics->average_energy_l_dyn; hHrtfStatistics->average_energy_r = hHrtfStatistics->average_energy_r_dyn; hHrtfStatistics->inter_aural_coherence = hHrtfStatistics->inter_aural_coherence_dyn; - fread( hHrtfStatistics->average_energy_l_dyn, sizeof( const Word32 ), lr_iac_len, f_hrtf ); - fread( hHrtfStatistics->average_energy_r_dyn, sizeof( const Word32 ), lr_iac_len, f_hrtf ); - fread( hHrtfStatistics->inter_aural_coherence_dyn, sizeof( const Word32 ), lr_iac_len, f_hrtf ); + + fread( hHrtfStatistics->average_energy_l_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, lr_iac_len ); + + fread( hHrtfStatistics->average_energy_r_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, lr_iac_len ); + + fread( hHrtfStatistics->inter_aural_coherence_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q23, lr_iac_len ); hHrtfStatistics->fromROM = FALSE; -- GitLab From 7c54695c08f961c2e460cd8db6b8d47bdcf2716e Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Fri, 23 May 2025 17:08:59 +0200 Subject: [PATCH 612/698] Added code for converting float binary hrtf to word32. Build failed, needs debugging --- lib_util/hrtf_file_reader.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 30921e7fe..e10e49870 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -810,13 +810,13 @@ static ivas_error load_reverb_from_binary( hHrtfStatistics->inter_aural_coherence = hHrtfStatistics->inter_aural_coherence_dyn; fread( hHrtfStatistics->average_energy_l_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, lr_iac_len ); + floatToFixed_arr32( hHrtfStatistics->average_energy_l_dyn, hHrtfStatistics->average_energy_l, Q27, lr_iac_len ); fread( hHrtfStatistics->average_energy_r_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, lr_iac_len ); + floatToFixed_arr32( hHrtfStatistics->average_energy_r_dyn, hHrtfStatistics->average_energy_r, Q27, lr_iac_len ); fread( hHrtfStatistics->inter_aural_coherence_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q23, lr_iac_len ); + floatToFixed_arr32( hHrtfStatistics->inter_aural_coherence_dyn, hHrtfStatistics->inter_aural_coherence, Q23, lr_iac_len ); hHrtfStatistics->fromROM = FALSE; -- GitLab From 2f8b36395a72b58254886986570bb82a64dc3953 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Mon, 26 May 2025 12:07:31 +0200 Subject: [PATCH 613/698] Float to fixed point conversion for binary hrtf data + compiler switch bug fixes --- lib_com/options.h | 8 +--- lib_dec/ivas_init_dec.c | 2 +- lib_rend/ivas_reverb_fx.c | 12 +++--- lib_rend/ivas_reverb_utils_fx.c | 9 +++-- lib_util/hrtf_file_reader.c | 72 +++++++++++++++++---------------- 5 files changed, 53 insertions(+), 50 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 0542d2be6..efcf2546b 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -99,13 +99,7 @@ #define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT -#define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -#define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format */ -#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES -#define NONBE_FIX_AVG_IAC_CLDFB_REVERB -#endif -#endif +#define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES #define NONBE_FIX_AVG_IAC_CLDFB_REVERB diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 05efe8207..f30c7c891 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -2345,7 +2345,7 @@ ivas_error ivas_init_decoder_fx( #ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses ) ), + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index f1393148d..9d71653fe 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -1284,8 +1284,6 @@ static void set_reverb_acoustic_data_fx( Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; Word16 pow_exp; -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -#else Word32 *pHrtf_set_l_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_l_im_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_re_fx[MAX_INTERN_CHANNELS]; @@ -1300,6 +1298,8 @@ static void set_reverb_acoustic_data_fx( Word16 *pRt60_e = pParams->pRt60_e; Word32 *pDsr_fx = pParams->pDsr_fx; Word16 *pDsr_e = pParams->pDsr_e; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#else /* use crend hrtf filters */ IF( hHrtf != NULL ) @@ -1558,9 +1558,9 @@ ivas_error ivas_reverb_open_fx( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES set_reverb_acoustic_data( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter ); - params.pHrtf_avg_pwr_response_l_const = hHrtfStatistics->average_energy_l; - params.pHrtf_avg_pwr_response_r_const = hHrtfStatistics->average_energy_r; - params.pHrtf_inter_aural_coherence_const = hHrtfStatistics->inter_aural_coherence; + params.pHrtf_avg_pwr_response_l_const_fx = hHrtfStatistics->average_energy_l; + params.pHrtf_avg_pwr_response_r_const_fx = hHrtfStatistics->average_energy_r; + params.pHrtf_inter_aural_coherence_const_fx = hHrtfStatistics->inter_aural_coherence; #else IF( hHrtf == NULL && lr_energy_and_iac_fx != NULL ) { @@ -1749,8 +1749,10 @@ ivas_error ivas_reverb_open_fx( { return error; } +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES free( pDsr_e ); free( pRt60_e ); +#endif *hReverb = pState; return error; diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 53d4cf355..6c055ab2a 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -308,6 +308,7 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( float avg_pwr_right_fft[FFT_SPECTRUM_SIZE]; #endif float input_fc[FFT_SPECTRUM_SIZE]; + float output_fc[CLDFB_NO_CHANNELS_MAX]; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif @@ -326,10 +327,15 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( } #endif +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + ivas_reverb_interpolate_acoustic_data( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); +#else + if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK ) { return error; } + Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); Word32 *avg_pwr_left_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); Word32 *avg_pwr_right_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); @@ -352,9 +358,6 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( output_fc_fx[i] = (Word32) input_fc[i] * ONE_IN_Q16; } -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - ivas_reverb_interpolate_acoustic_data( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); -#else ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_left_fft_fx, avg_pwr_right_fft_fx, CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); for ( int i = 0; i < 257; i++ ) diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index e10e49870..c34eaf220 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -722,7 +722,9 @@ static ivas_error load_reverb_from_binary( char *hrtf_data; #ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB int16_t lr_iac_len; +#ifndef FIX_638_ENERGIE_IAC_ROM_TABLES float f_tmp_lr_energy_and_iac_dyn[LR_IAC_LENGTH_NR_FC]; +#endif #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES if ( hHrtfStatistics == NULL ) @@ -799,9 +801,10 @@ static ivas_error load_reverb_from_binary( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES hHrtfStatistics->average_energy_l_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); hHrtfStatistics->average_energy_r_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); - hHrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32) ); + hHrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + float *hrtf_prop_local = (float *) malloc( lr_iac_len * sizeof( float ) ); - if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_r_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL ) + if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_r_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL || hrtf_prop_local == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); } @@ -809,17 +812,17 @@ static ivas_error load_reverb_from_binary( hHrtfStatistics->average_energy_r = hHrtfStatistics->average_energy_r_dyn; hHrtfStatistics->inter_aural_coherence = hHrtfStatistics->inter_aural_coherence_dyn; - fread( hHrtfStatistics->average_energy_l_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( hHrtfStatistics->average_energy_l_dyn, hHrtfStatistics->average_energy_l, Q27, lr_iac_len ); - - fread( hHrtfStatistics->average_energy_r_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( hHrtfStatistics->average_energy_r_dyn, hHrtfStatistics->average_energy_r, Q27, lr_iac_len ); + fread( hrtf_prop_local, sizeof( float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->average_energy_l, Q27, lr_iac_len ); - fread( hHrtfStatistics->inter_aural_coherence_dyn, sizeof( const float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( hHrtfStatistics->inter_aural_coherence_dyn, hHrtfStatistics->inter_aural_coherence, Q23, lr_iac_len ); + fread( hrtf_prop_local, sizeof( float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->average_energy_r, Q27, lr_iac_len ); + fread( hrtf_prop_local, sizeof( float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->inter_aural_coherence, Q23, lr_iac_len ); hHrtfStatistics->fromROM = FALSE; + free( hrtf_prop_local ); #else /* left/right energy and interaural coherence for late reverb */ FOR( i = 0; i < 3; i++ ) @@ -1168,7 +1171,6 @@ void destroy_td_hrtf( { free( ( *hHrtf )->lr_energy_and_iac_dyn_fx[i] ); } -#endif } #ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB else @@ -1182,6 +1184,9 @@ void destroy_td_hrtf( } } #endif +#else + } +#endif ivas_HRTF_binary_close_fx( hHrtf ); @@ -1317,12 +1322,12 @@ static ivas_error create_HRTF_from_rawdata( hrtf_data_rptr += sizeof( float ); } #else - for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) - { - //( *hHRTF )->inv_diffuse_weight[i] = *( (float *) ( hrtf_data_rptr ) ); - ( *hHRTF )->inv_diffuse_weight_fx[i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); - hrtf_data_rptr += sizeof( float ); - } + for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) + { + //( *hHRTF )->inv_diffuse_weight[i] = *( (float *) ( hrtf_data_rptr ) ); + ( *hHRTF )->inv_diffuse_weight_fx[i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + hrtf_data_rptr += sizeof( float ); + } #endif /* max_total_num_fsamp_per_iteration */ max_total_num_fsamp_per_iteration = *( (UWord16 *) ( hrtf_data_rptr ) ); @@ -1470,7 +1475,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES HRTF_READER_RENDERER_TYPE rend_type, /* i : Renderer type */ #else - RENDERER_TYPE rend_type, /* i : Renderer type */ + RENDERER_TYPE rend_type, /* i : Renderer type */ #endif BINAURAL_INPUT_AUDIO_CONFIG input_cfg /* i : Input binaural config */ ) @@ -1507,7 +1512,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "renderer type not compliant" ); } #else - ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, rend_type, ( *hHRTF )->allocate_init_flag ); + ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, rend_type, ( *hHRTF )->allocate_init_flag ); #endif hrtf_data_rptr = hrtf_data; @@ -1525,7 +1530,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #else - if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) + if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); @@ -1591,7 +1596,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #endif { /* HRIR_HOA3 */ @@ -1658,7 +1663,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) #endif { /* HRIR_HOA2 */ @@ -1726,7 +1731,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) #endif { /* HRIR_FOA */ @@ -1795,7 +1800,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); @@ -1877,13 +1882,13 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); #else - memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); - hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); - floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); - memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); - hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); - floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); #endif } @@ -1943,7 +1948,7 @@ ivas_error load_fastconv_HRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) ) #else - if ( ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) + if ( ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) #endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) @@ -2117,7 +2122,7 @@ ivas_error load_parambin_HRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ #else - if ( hrtf_header.rend_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ + if ( hrtf_header.rend_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ #endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) @@ -2211,7 +2216,7 @@ ivas_error create_SetOfHRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) #else - if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV ) + if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV ) #endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) @@ -2234,7 +2239,7 @@ ivas_error create_SetOfHRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM ) #else - else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) + else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) #endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) @@ -2394,7 +2399,6 @@ void destroy_hrtf_statistics( { free( ( *hHrtfStatistics )->inter_aural_coherence_dyn ); } - } ivas_HRTF_statistics_close( hHrtfStatistics ); } -- GitLab From e972f4265c8e015240a303ccb29c589f52e69a87 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Mon, 26 May 2025 14:01:48 +0200 Subject: [PATCH 614/698] Corrected function names per fixed point --- apps/decoder.c | 2 - lib_rend/ivas_reverb_filter_design_fx.c | 2 +- lib_rend/ivas_reverb_fx.c | 4 +- lib_rend/ivas_reverb_utils_fx.c | 2 +- lib_rend/lib_rend.c | 58 ++++++------------------- 5 files changed, 18 insertions(+), 50 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 3f30f4520..cdd5e3096 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -743,7 +743,6 @@ int main( } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES -#ifdef NONBE_FIX_BINARY_BINAURAL_READING if ( ( error = IVAS_DEC_GetHrtfStatisticsHandle( hIvasDec, &hHrtfStatistics ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_GetHrtfHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); @@ -768,7 +767,6 @@ int main( goto cleanup; } #endif -#endif #endif } diff --git a/lib_rend/ivas_reverb_filter_design_fx.c b/lib_rend/ivas_reverb_filter_design_fx.c index ba6a53c7a..0e4252655 100644 --- a/lib_rend/ivas_reverb_filter_design_fx.c +++ b/lib_rend/ivas_reverb_filter_design_fx.c @@ -839,7 +839,7 @@ void ivas_reverb_calc_color_levels_fx( } /*-------------------------------------------------------------------* - * ivas_reverb_interpolate_acoustic_data() + * ivas_reverb_interpolate_acoustic_data_fx() * * Interpolates data from the input T60 and DSR tables to the FFT pFilter uniform grid * Note: the fc frequencies both for the input and the output must be in the ascending order diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 9d71653fe..44add03bd 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -1257,7 +1257,7 @@ static void set_fft_and_datablock_sizes_fx( } /*-----------------------------------------------------------------------------------------* - * Function set_reverb_acoustic_data() + * Function set_reverb_acoustic_data_fx() * * Sets reverb acoustic data (room acoustics and HRTF), interpolating it to the filter grid *-----------------------------------------------------------------------------------------*/ @@ -1557,7 +1557,7 @@ ivas_error ivas_reverb_open_fx( test(); #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - set_reverb_acoustic_data( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter ); + set_reverb_acoustic_data_fx( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter ); params.pHrtf_avg_pwr_response_l_const_fx = hHrtfStatistics->average_energy_l; params.pHrtf_avg_pwr_response_r_const_fx = hHrtfStatistics->average_energy_r; params.pHrtf_inter_aural_coherence_const_fx = hHrtfStatistics->inter_aural_coherence; diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 6c055ab2a..15fb2ee25 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -328,7 +328,7 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( #endif #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - ivas_reverb_interpolate_acoustic_data( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); + ivas_reverb_interpolate_acoustic_data_fx( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); #else if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK ) diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 09894c319..63b13e67b 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -1638,7 +1638,7 @@ static ivas_error setRendInputActiveIsm( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ) IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ) IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) #endif @@ -2679,7 +2679,7 @@ static ivas_error initMcBinauralRendering( IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && inputMc->hReverb == NULL ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open( &( inputMc->hReverb ), hHrtfStatistics, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputMc->hReverb ), hHrtfStatistics, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( inputMc->hReverb ), outConfig, NULL, inputMc->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) #endif @@ -2936,10 +2936,7 @@ static ivas_error setRendInputActiveMc( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, FALSE ) ), IVAS_ERR_OK ) ) #else - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, - hrtfs->hSetOfHRTF, - FALSE ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, hrtfs->hSetOfHRTF, FALSE ) ), IVAS_ERR_OK ) ) #endif { return error; @@ -4326,10 +4323,11 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( IF( EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, FALSE ) ), IVAS_ERR_OK ) ) #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, FALSE ) ), IVAS_ERR_OK ) ) -#endif +#else + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, FALSE ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -5160,25 +5158,11 @@ ivas_error IVAS_REND_SetHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], - hIvasRend->inputsMc[i].base.inConfig, - hIvasRend->outputConfig, - hIvasRend->hRendererConfig, - hIvasRend->hHrtfs.hSetOfHRTF, - TRUE ) ), - IVAS_ERR_OK ) ) #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], - hIvasRend->inputsMc[i].base.inConfig, - hIvasRend->outputConfig, - hIvasRend->hRendererConfig, - hIvasRend->hHrtfs.hSetOfHRTF, - hIvasRend->hHrtfs.hHrtfStatistics, - TRUE ) ), - IVAS_ERR_OK ) ) -#endif - + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, TRUE ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, TRUE ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -5282,25 +5266,11 @@ ivas_error IVAS_REND_DisableHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], - hIvasRend->inputsMc[i].base.inConfig, - hIvasRend->outputConfig, - hIvasRend->hRendererConfig, - hIvasRend->hHrtfs.hSetOfHRTF, - TRUE ) ), - IVAS_ERR_OK ) ) #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], - hIvasRend->inputsMc[i].base.inConfig, - hIvasRend->outputConfig, - hIvasRend->hRendererConfig, - hIvasRend->hHrtfs.hSetOfHRTF, - hIvasRend->hHrtfs.hHrtfStatistics, - TRUE ) ), - IVAS_ERR_OK ) ) -#endif - - + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, TRUE ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, TRUE ) ), IVAS_ERR_OK ) ) +#endif { return error; -- GitLab From 9eec50d7c0171bd3c607af72efc172b4e94d1208 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:58:52 +0200 Subject: [PATCH 615/698] [cleanup] accept FIX_963_USAN_ERROR --- lib_com/options.h | 1 - lib_enc/ivas_stereo_dft_enc_itd_fx.c | 21 --------------------- 2 files changed, 22 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 94d22ec45..2a90fa944 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -93,7 +93,6 @@ #define FIX_1372_ISAR_POST_REND #endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ -#define FIX_963_USAN_ERROR /* Eri: Issue 963: USAN error in Stereo CNG, division by zero */ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index fabc35985..4e030ba01 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1662,7 +1662,6 @@ void stereo_dft_enc_compute_itd_fx( move16(); } // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); -#ifdef FIX_963_USAN_ERROR IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) { cng_xcorr_filt = CORR_FILT_Q31; @@ -1675,11 +1674,6 @@ void stereo_dft_enc_compute_itd_fx( cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 } -#else - cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); - cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 - cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 -#endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); FOR( i = 1; i < NFFT / 4; i++ ) @@ -1735,7 +1729,6 @@ void stereo_dft_enc_compute_itd_fx( { /* expectedNumUpdates updated after call to dtx() in SID frames */ // cng_xcorr_filt = max( min( CORR_FILT, 10.0f * CORR_FILT / ( hStereoDft->expectedNumUpdates + hStereoDft->currentNumUpdates ) ), sfm_L ); -#ifdef FIX_963_USAN_ERROR IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) == 0 ) { cng_xcorr_filt = CORR_FILT_Q31; @@ -1748,20 +1741,6 @@ void stereo_dft_enc_compute_itd_fx( cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 } -#else - IF( add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ) != 0 ) - { - cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); - cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 - cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 - } - ELSE - { - cng_xcorr_filt = CORR_FILT_Q31; - move32(); - cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 - } -#endif hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); hStereoDft->sfm_fx = cng_xcorr_filt; -- GitLab From c0f2ff2e49237af9a2d9d99275438b8c2c4453a8 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:58:58 +0200 Subject: [PATCH 616/698] [cleanup] accept FIX_ACCESS_WITHIN_NULL_STRUCT_MC_BW_SWITCHING --- lib_com/options.h | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 2a90fa944..b3e558742 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -116,7 +116,6 @@ #define NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN /* FhG : issue #974: usan in mono and stereo output in OSBA JBM RS */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ -#define FIX_ACCESS_WITHIN_NULL_STRUCT_MC_BW_SWITCHING /* FhG: fix usan error in MCT with bw swicthing */ #define NONBE_FIX_986_MC_BW_SWITCHING /* FhG: fix crash in bw and br switching with MC */ #define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ -- GitLab From d27a73343d69df3efd1f66cb5e05fee2b0c47294 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:59:01 +0200 Subject: [PATCH 617/698] [cleanup] accept FIX_983_DISC_ISM_DIGEST_NUM_OBJS --- lib_com/options.h | 1 - lib_dec/ivas_ism_param_dec_fx.c | 10 ---------- 2 files changed, 11 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index b3e558742..bd1b075e4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -111,7 +111,6 @@ #define NONBE_FIX_951_MCMASA_5MS_RENDERING /* Nokia: issue #951: Differences for 5ms and 20ms rendering for McMASA at 13.2 kbps to BINAURAL */ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ -#define FIX_983_DISC_ISM_DIGEST_NUM_OBJS /* FhG: issue #983: the discrete ISM digest function uses the wrong number of objects */ #define NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN /* FhG : issue #974: usan in mono and stereo output in OSBA JBM RS */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ diff --git a/lib_dec/ivas_ism_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c index 1485c09c1..5552b3dc2 100644 --- a/lib_dec/ivas_ism_param_dec_fx.c +++ b/lib_dec/ivas_ism_param_dec_fx.c @@ -939,11 +939,7 @@ void ivas_ism_dec_digest_tc_fx( EQ_32( st_ivas->renderer_type, RENDERER_OSBA_STEREO ) || ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && st_ivas->hDecoderConfig->Opt_Headrotation == 0 ) ) { -#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS int16_t i; -#else - int16_t i, num_objects; -#endif Word32 azimuth_fx, elevation_fx; /* we have a full frame interpolator, adapt it */ @@ -985,13 +981,7 @@ void ivas_ism_dec_digest_tc_fx( } /* also get the gains here */ -#ifdef FIX_983_DISC_ISM_DIGEST_NUM_OBJS FOR( i = 0; i < st_ivas->nchan_ism; i++ ) -#else - num_objects = st_ivas->nchan_transport; - move16(); - FOR( i = 0; i < num_objects; i++ ) -#endif { Copy32( st_ivas->hIsmRendererData->gains_fx[i], st_ivas->hIsmRendererData->prev_gains_fx[i], MAX_OUTPUT_CHANNELS ); -- GitLab From 2a5711eaff11d6f8618ce466e9d30ec6bfca31e3 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:59:07 +0200 Subject: [PATCH 618/698] [cleanup] accept NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN --- lib_com/options.h | 1 - lib_dec/ivas_sba_dec_fx.c | 4 ---- 2 files changed, 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index bd1b075e4..39eca1ba5 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -112,7 +112,6 @@ #define NONBE_FIX_951_MCMASA_5MS_RENDERING /* Nokia: issue #951: Differences for 5ms and 20ms rendering for McMASA at 13.2 kbps to BINAURAL */ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ -#define NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN /* FhG : issue #974: usan in mono and stereo output in OSBA JBM RS */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ #define NONBE_FIX_986_MC_BW_SWITCHING /* FhG: fix crash in bw and br switching with MC */ diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index 86cd641c0..5fed861dc 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -282,11 +282,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( } /* save old */ -#ifdef NONBE_FIX_974_OSBA_JBM_MONO_RS_USAN IF( NE_16( ism_mode_old, ISM_SBA_MODE_DISC ) && NE_16( st_ivas->hTcBuffer->tc_buffer_mode, TC_BUFFER_MODE_BUFFER ) ) -#else - IF( NE_16( ism_mode_old, ISM_SBA_MODE_DISC ) ) -#endif { test(); IF( st_ivas->hDirAC == NULL && st_ivas->hSpar != NULL ) -- GitLab From 744a16aa78da8edc0148f9fce9516c1c4d417135 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:59:11 +0200 Subject: [PATCH 619/698] [cleanup] accept NONBE_FIX_973_HODIRAC_BAND_GROUPING --- lib_com/ivas_dirac_com_fx.c | 7 ------- lib_com/options.h | 1 - 2 files changed, 8 deletions(-) diff --git a/lib_com/ivas_dirac_com_fx.c b/lib_com/ivas_dirac_com_fx.c index c3ba55b50..a5fd4821b 100644 --- a/lib_com/ivas_dirac_com_fx.c +++ b/lib_com/ivas_dirac_com_fx.c @@ -578,14 +578,7 @@ ivas_error ivas_dirac_sba_config_fx( { hQMetaData->useLowerBandRes = 0; move16(); -#ifndef NONBE_FIX_973_HODIRAC_BAND_GROUPING - IF( hodirac_flag == 0 ) - { - nbands_coded = sub( nbands, 1 ); /* always combine the last two bands */ - } -#else nbands_coded = sub( nbands, 1 ); /* always combine the last two bands */ -#endif } { diff --git a/lib_com/options.h b/lib_com/options.h index 39eca1ba5..597eef4c0 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -94,7 +94,6 @@ #endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ -#define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT -- GitLab From 8aa4644f1ca06aab23da7af6124c13f31e8399d2 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:59:14 +0200 Subject: [PATCH 620/698] [cleanup] accept NONBE_FIX_951_MCMASA_5MS_RENDERING --- lib_com/ivas_prot_fx.h | 2 -- lib_com/options.h | 1 - lib_dec/fd_cng_dec_fx.c | 6 ------ lib_dec/ivas_dirac_dec_fx.c | 8 -------- lib_dec/ivas_sba_dec_fx.c | 4 ---- .../ivas_dirac_dec_binaural_functions_fx.c | 18 ------------------ 6 files changed, 39 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 4edcf0480..4f011abe8 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -4995,9 +4995,7 @@ void generate_masking_noise_lb_dirac_fx( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered */ -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i : common spatial rendering parameters handle */ -#endif const Word16 cna_flag /* i : CNA flag for LB and HB */ ); diff --git a/lib_com/options.h b/lib_com/options.h index 597eef4c0..03070046d 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -108,7 +108,6 @@ #endif -#define NONBE_FIX_951_MCMASA_5MS_RENDERING /* Nokia: issue #951: Differences for 5ms and 20ms rendering for McMASA at 13.2 kbps to BINAURAL */ #define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 6d73aa28c..bf82854fd 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -5447,9 +5447,7 @@ void generate_masking_noise_lb_dirac_fx( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA Q11*/ const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered Q0*/ -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i : common spatial rendering parameters handle */ -#endif const Word16 cna_flag /* i : CNA flag for LB and HB Q0*/ ) { @@ -5501,12 +5499,10 @@ void generate_masking_noise_lb_dirac_fx( test(); IF( cna_flag && tdBuffer != NULL ) { -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING Word16 cur_subframe; Word16 cur_subframe_start_outfs; Word16 cur_subframe_start_cngfs; Word16 slot_size_cng; -#endif WHILE( n_samples_out > 0 ) { @@ -5580,7 +5576,6 @@ void generate_masking_noise_lb_dirac_fx( n_samples_start = add( n_samples_start, hFdCngCom->frameSize ); } -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING /* move generated noise to the 5ms subframe starts in the tc buffer according to the output sampling frequency to avoid overwriting it with the synthesis in case of shared tc and synth channel memory, i.e. non-TSM mode */ slot_size_cng = shr( hFdCngCom->frameSize, 4 /* DEFAULT_JBM_CLDFB_TIMESLOTS */ ); @@ -5602,7 +5597,6 @@ void generate_masking_noise_lb_dirac_fx( /* set everything else to zero */ set_zero_fx( tdBuffer + cur_subframe_start_outfs + move_size, sub( subframe_size_outfs, move_size ) ); } -#endif } pop_wmops(); diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index feca814c8..cda02a24a 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -2871,18 +2871,10 @@ void ivas_dirac_dec_render_sf_fx( test(); generate_masking_noise_dirac_ivas_fx( st->hFdCngDec->hFdCngCom, st_ivas->cldfbAnaDec[1], -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING &st_ivas->hTcBuffer->tc_fx[1][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered], -#else - st_ivas->hTcBuffer->tc_fx[1], -#endif Cldfb_RealBuffer_fx[1][0], Cldfb_ImagBuffer_fx[1][0], -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING slot_idx, -#else - index_slot, -#endif st->cna_dirac_flag && st->flag_cna, ( ( ( st->core_brate == FRAME_NO_DATA ) || EQ_32( st->core_brate, SID_2k40 ) ) ) && EQ_16( st->cng_type, FD_CNG ) && st->cng_sba_flag, Q_input, &q_temp_cldfb ); Scale_sig32( Cldfb_RealBuffer_fx[1][0], CLDFB_NO_CHANNELS_MAX, sub( Q6, q_temp_cldfb ) ); // Q6 diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index 5fed861dc..121b8a795 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -886,11 +886,7 @@ void ivas_sba_dec_digest_tc_fx( Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; Scale_sig( st->hFdCngDec->hFdCngCom->A_cng, M + 1, sub( norm_s( sub( st->hFdCngDec->hFdCngCom->A_cng[0], 1 ) ), 2 ) ); /*Q12 -> Q13*/ -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING generate_masking_noise_lb_dirac_fx( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st_ivas->hSpatParamRendCom, st->cna_dirac_flag && st->flag_cna ); -#else - generate_masking_noise_lb_dirac_fx( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc_fx[1], nCldfbSlots, st->cna_dirac_flag && st->flag_cna ); -#endif } return; diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 3f24bfd85..1545ecd0c 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -830,29 +830,15 @@ static void ivas_dirac_dec_binaural_internal_fx( IF( st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) { Word16 numCoreBands, b; -#ifndef NONBE_FIX_951_MCMASA_5MS_RENDERING - Word16 slotInFrame; -#endif numCoreBands = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->numCoreBands; move16(); -#ifndef NONBE_FIX_951_MCMASA_5MS_RENDERING - slotInFrame = add( hSpatParamRendCom->slots_rendered, slot ); -#endif generate_masking_noise_dirac_ivas_fx( st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom, st_ivas->cldfbAnaDec[1], -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING &st_ivas->hTcBuffer->tc_fx[nchan_transport][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered], -#else - st_ivas->hTcBuffer->tc_fx[nchan_transport], -#endif Cldfb_RealBuffer_in_fx[2][slot], Cldfb_ImagBuffer_in_fx[2][slot], -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING slot, -#else - slotInFrame, -#endif st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->hSCE[0]->hCoreCoder[0]->flag_cna, ( st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == FRAME_NO_DATA || st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == SID_2k40 ) && ( st_ivas->hSCE[0]->hCoreCoder[0]->cng_type == FD_CNG ) && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag, 11, &q_cldfb[2][slot] ); @@ -861,11 +847,7 @@ static void ivas_dirac_dec_binaural_internal_fx( st_ivas->cldfbAnaDec[1], /*nothing will be analyzed, just get cnst*/ NULL, Cldfb_RealBuffer_in_fx[1][slot], Cldfb_ImagBuffer_in_fx[1][slot], -#ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING slot, -#else - slotInFrame, -#endif st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->hSCE[0]->hCoreCoder[0]->flag_cna, ( st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == FRAME_NO_DATA || st_ivas->hSCE[0]->hCoreCoder[0]->core_brate == SID_2k40 ) && ( st_ivas->hSCE[0]->hCoreCoder[0]->cng_type == FD_CNG ) && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag, 0, &q_cldfb[1][slot] ); -- GitLab From db41d47daf4c9ef54bcb8302b8edff6cd5bbf49c Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:59:17 +0200 Subject: [PATCH 621/698] [cleanup] accept NONBE_FIX_979_OSBA_STEREO_5MS --- lib_com/options.h | 1 - lib_dec/ivas_jbm_dec_fx.c | 4 ---- lib_dec/ivas_osba_dec_fx.c | 8 -------- lib_rend/ivas_output_init.c | 2 -- 4 files changed, 15 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 03070046d..6e1a7dffe 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -108,7 +108,6 @@ #endif -#define NONBE_FIX_979_OSBA_STEREO_5MS /* FhG : issue #979 : 5ms and 20ms output different for OSBA and stereo */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 5afbc3acb..e80e24226 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1893,11 +1893,7 @@ ivas_error ivas_jbm_dec_render_fx( { FOR( n = 0; n < st_ivas->hTcBuffer->nchan_buffer_full; n++ ) { -#ifdef NONBE_FIX_979_OSBA_STEREO_5MS p_tc_fx[n] = &p_output_fx[n][st_ivas->hTcBuffer->n_samples_rendered]; -#else - p_tc_fx[n] = p_output_fx[n]; -#endif } FOR( n = 0; n < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; n++ ) diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c index 8445d96a3..87805290b 100644 --- a/lib_dec/ivas_osba_dec_fx.c +++ b/lib_dec/ivas_osba_dec_fx.c @@ -297,23 +297,15 @@ ivas_error ivas_osba_render_sf_fx( p_output_ism[n] = &output_ism[n][0]; } -#ifdef NONBE_FIX_979_OSBA_STEREO_5MS if ( !st_ivas->hDecoderConfig->Opt_tsm ) { int16_t tc_offset; tc_offset = st_ivas->hTcBuffer->n_samples_rendered; -#endif for ( n = 0; n < st_ivas->nchan_ism; n++ ) { -#ifdef NONBE_FIX_979_OSBA_STEREO_5MS v_shr( &p_output[n][tc_offset], Q11 - Q11, &output_ism[n][tc_offset], nSamplesAsked ); // Q11 -#else - v_shr( p_output[n], Q11 - Q11, output_ism[n], nSamplesAsked ); // Q11 -#endif } -#ifdef NONBE_FIX_979_OSBA_STEREO_5MS } -#endif IF( NE_32( ( error = ivas_sba_dec_render_fx( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailableNext, p_output ) ), IVAS_ERR_OK ) ) { diff --git a/lib_rend/ivas_output_init.c b/lib_rend/ivas_output_init.c index ed51fbdd2..816193253 100644 --- a/lib_rend/ivas_output_init.c +++ b/lib_rend/ivas_output_init.c @@ -386,12 +386,10 @@ Word16 ivas_get_nchan_buffers_dec( { nchan_out_buff = shl( CPE_CHANNELS, 1 ); } -#ifdef NONBE_FIX_979_OSBA_STEREO_5MS else if ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) { nchan_out_buff = s_max( nchan_out_buff, add( shl( BINAURAL_CHANNELS, 1 ), 2 ) ); } -#endif ELSE IF( NE_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) { nchan_out_buff = s_max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); -- GitLab From bdb1439758fde7b38355ee020a0039b6a65e180c Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:59:20 +0200 Subject: [PATCH 622/698] [cleanup] accept NONBE_FIX_986_MC_BW_SWITCHING --- lib_com/options.h | 1 - lib_enc/bw_detect_fx.c | 18 ------------------ lib_enc/ivas_cpe_enc_fx.c | 4 ---- lib_enc/ivas_mct_enc_fx.c | 23 ----------------------- 4 files changed, 46 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 6e1a7dffe..5c6c344f0 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -111,7 +111,6 @@ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ -#define NONBE_FIX_986_MC_BW_SWITCHING /* FhG: fix crash in bw and br switching with MC */ #define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ diff --git a/lib_enc/bw_detect_fx.c b/lib_enc/bw_detect_fx.c index eefd5057c..c79931e45 100644 --- a/lib_enc/bw_detect_fx.c +++ b/lib_enc/bw_detect_fx.c @@ -1140,7 +1140,6 @@ Word16 set_bw_mct_fx( bw_changed = 0; move16(); -#ifdef NONBE_FIX_986_MC_BW_SWITCHING IF( NE_16( mct_bwidth, last_mct_bwidth ) ) { bw_changed = 1; @@ -1161,22 +1160,5 @@ Word16 set_bw_mct_fx( move16(); } } -#else - IF( NE_16( mct_bwidth, last_mct_bwidth ) ) - { - bw_changed = 1; - move16(); - - FOR( cpe_id = 0; cpe_id < nCPE; cpe_id++ ) - { - FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) - { - st = hCPE[cpe_id]->hCoreCoder[ch]; - st->bwidth = mct_bwidth; - move16(); - } - } - } -#endif return bw_changed; } diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index f6885dd81..849c7d7d5 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -1019,7 +1019,6 @@ ivas_error ivas_cpe_enc_fx( IF( ( NE_32( hCPE->last_element_brate, hCPE->element_brate ) || NE_16( hCPE->element_mode, hCPE->last_element_mode ) || ( EQ_16( hCPE->element_mode, IVAS_CPE_TD ) && NE_16( sts[0]->bits_frame_nominal, last_bits_frame_nominal ) ) || NE_16( sts[n]->last_bwidth, sts[n]->bwidth ) ) && ( n == 0 || EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) ) ) { Word16 igf; -#ifdef NONBE_FIX_986_MC_BW_SWITCHING Word16 bw; /* float uses ternary operator for this: bw = ( hCPE->element_mode == IVAS_CPE_MDCT ) ? sts[n]->bwidth : sts[n]->max_bwidth; */ @@ -1029,9 +1028,6 @@ ivas_error ivas_cpe_enc_fx( bw = sts[n]->bwidth; } igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), bw, sts[n]->rf_mode ); /* Q0 */ -#else - igf = getIgfPresent_fx( sts[n]->element_mode, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->rf_mode ); /* Q0 */ -#endif IF( ( error = IGF_Reconfig_fx( &sts[n]->hIGFEnc, igf, 0, L_mult0( sts[n]->bits_frame_nominal, FRAMES_PER_SEC ), sts[n]->max_bwidth, sts[n]->element_mode, sts[n]->rf_mode ) ) != IVAS_ERR_OK ) { return error; diff --git a/lib_enc/ivas_mct_enc_fx.c b/lib_enc/ivas_mct_enc_fx.c index 565b318f5..bb98e6163 100644 --- a/lib_enc/ivas_mct_enc_fx.c +++ b/lib_enc/ivas_mct_enc_fx.c @@ -183,9 +183,6 @@ ivas_error ivas_mct_enc_fx( Word32 orig_spectrum_long_fx[MCT_MAX_BLOCKS][CPE_CHANNELS][L_FRAME48k]; Word16 switch_bw; IVAS_FORMAT ivas_format; -#ifndef NONBE_FIX_986_MC_BW_SWITCHING - Word16 max_bwidth; -#endif Word32 ivas_total_brate; ivas_error error; Word32 *pdata_fx[MAX_INPUT_CHANNELS]; @@ -200,9 +197,6 @@ ivas_error ivas_mct_enc_fx( hMCT->hBstr = st_ivas->hCPE[0]->hCoreCoder[0]->hBstr; /* pointer to write MCT side bits */ ivas_format = st_ivas->hEncoderConfig->ivas_format; -#ifndef NONBE_FIX_986_MC_BW_SWITCHING - max_bwidth = st_ivas->hEncoderConfig->max_bwidth; -#endif ivas_total_brate = st_ivas->hEncoderConfig->ivas_total_brate; move32(); move16(); @@ -252,7 +246,6 @@ ivas_error ivas_mct_enc_fx( cp_bitrate = L_shl( L_deposit_l( div_l( ivas_total_brate, st_ivas->nchan_transport ) ), 2 ); // a/b => div_l(a, b/2) or (2 * div_l(a, b)) } -#ifdef NONBE_FIX_986_MC_BW_SWITCHING IF( st_ivas->hCPE[0]->hCoreCoder[0]->igf ) { FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ ) @@ -267,22 +260,6 @@ ivas_error ivas_mct_enc_fx( initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, st_ivas->hCPE[0]->hCoreCoder[0]->bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, NULL, 0 ); } } -#else - IF( st_ivas->hCPE[0]->hCoreCoder[0]->igf ) - { - FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ ) - { - initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, max_bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, st_ivas->hCPE[0]->hCoreCoder[0]->hIGFEnc->igfData.igfInfo.grid, 0 ); - } - } - ELSE - { - FOR( n = 0; n < shr( hMCT->nchan_out_woLFE, 1 ); n++ ) - { - initMdctStereoEncData_fx( hMCT->hBlockData[n]->hStereoMdct, ivas_format, IVAS_CPE_MDCT, cp_bitrate, max_bwidth, st_ivas->hCPE[0]->hCoreCoder[0]->igf, NULL, 0 ); - } - } -#endif } /* set coded audio band-width */ -- GitLab From 236f13738816b416466ba5d0a879961809e3bd3a Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 15:59:23 +0200 Subject: [PATCH 623/698] [cleanup] accept NONBE_FIX_975_JBM_USAN --- lib_com/options.h | 1 - lib_dec/lib_dec_fx.c | 4 ---- 2 files changed, 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 5c6c344f0..34a9e4858 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -111,7 +111,6 @@ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ -#define NONBE_FIX_975_JBM_USAN /* FhG: Fix issue #975, USAN in JBM decoding ad 13.2kbps */ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 9cf06bdfb..628256729 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -2999,7 +2999,6 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( } -#ifdef NONBE_FIX_975_JBM_USAN partialCopyFrameType = 0; move16(); partialCopyOffset = 0; @@ -3007,12 +3006,9 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( IF( EQ_16( hIvasDec->mode, (Word16) IVAS_DEC_MODE_EVS ) ) { -#endif /* check if frame contains a partial copy and get its offset */ evs_dec_previewFrame( au, auSize, &partialCopyFrameType, &partialCopyOffset ); -#ifdef NONBE_FIX_975_JBM_USAN } -#endif /* create data unit for primary copy in the frame */ dataUnit = JB4_AllocDataUnit( hIvasDec->hVoIP->hJBM ); -- GitLab From 8a53dae7d59aa87876225556d9c68497113c9ca0 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 26 May 2025 16:08:13 +0200 Subject: [PATCH 624/698] formatting --- lib_dec/fd_cng_dec_fx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index bf82854fd..e53c81209 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -5444,11 +5444,11 @@ void generate_stereo_masking_noise_fx( return; } void generate_masking_noise_lb_dirac_fx( - HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ - Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA Q11*/ - const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered Q0*/ + HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ + Word32 *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA Q11*/ + const Word16 nCldfbTs, /* i : number of CLDFB slots that will be rendered Q0*/ SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i : common spatial rendering parameters handle */ - const Word16 cna_flag /* i : CNA flag for LB and HB Q0*/ + const Word16 cna_flag /* i : CNA flag for LB and HB Q0*/ ) { Word16 i; -- GitLab From 3d0146a0395fb64d526a477e9979ffa223b757d4 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 27 May 2025 10:29:21 +0200 Subject: [PATCH 625/698] [cleanup] accept NONBE_FIX_947_STEREO_DMX_EVS_POC --- lib_com/options.h | 3 --- lib_enc/ivas_rom_enc.h | 6 ----- lib_enc/ivas_rom_enc_fx.c | 24 ----------------- lib_enc/ivas_stereo_dmx_evs_fx.c | 46 -------------------------------- 4 files changed, 79 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index b4e512c2e..0815b6edd 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -114,10 +114,7 @@ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ -#define NONBE_FIX_947_STEREO_DMX_EVS_POC /* Orange: Fix clicks on POC */ -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC #define NONBE_FIX_947_STEREO_DMX_ROMOPT /* Orange: ROM optimisation for POC*/ -#endif #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ diff --git a/lib_enc/ivas_rom_enc.h b/lib_enc/ivas_rom_enc.h index bc62b251a..465eb29e9 100644 --- a/lib_enc/ivas_rom_enc.h +++ b/lib_enc/ivas_rom_enc.h @@ -111,7 +111,6 @@ extern const UWord16 ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE] /*----------------------------------------------------------------------------------* * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC #ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 2]; extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 2]; @@ -121,11 +120,6 @@ extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1]; extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1]; extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1]; #endif -#else -extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4]; -extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 4]; -extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 4]; -#endif extern const Word32 Stereo_dmx_wnd_coef_32k_fx[L_FRAME32k]; extern const Word32 Stereo_dmx_wnd_coef_48k_fx[L_FRAME48k]; /*----------------------------------------------------------------------------------* diff --git a/lib_enc/ivas_rom_enc_fx.c b/lib_enc/ivas_rom_enc_fx.c index 520dbe928..8533d1538 100644 --- a/lib_enc/ivas_rom_enc_fx.c +++ b/lib_enc/ivas_rom_enc_fx.c @@ -509,7 +509,6 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC #ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT // Q31 @@ -677,29 +676,6 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q }; #endif -#else -// Q31 -const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 4] = { - 3309988, 29667578, 81733728, 158226416, 257262128, 376402368, 512713184, 662838656, 823081792, 989497088, - 1157986560, 1324401920, 1484645120, 1634770560, 1771081600, 1890221568, 1989257344, 2065750016, 2117816064, 2144173568 -}; -// Q31 -const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 4] = { - 827816, 7442688, 20631648, 40313376, 66366540, 98630536, 136906352, 180958112, 230514208, 285269056, - 344885056, 408994752, 477202848, 549088896, 624209472, 702101440, 782284928, 864265344, 947537088, 1031587008, - 1115896832, 1199946752, 1283218432, 1365198592, 1445382400, 1523274368, 1598395136, 1670280960, 1738488832, 1802598528, - 1862214528, 1916969472, 1966525568, 2010577280, 2048853120, 2081117056, 2107170304, 2126851968, 2140040960, 2146655872 -}; -// Q31 -const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 4] = { - 367944, 3309988, 9186011, 17979908, 29667578, 44216976, 61588232, 81733728, 104598264, 130119136, - 158226416, 188843056, 221885136, 257262128, 294876992, 334626720, 376402368, 420089216, 465567840, 512713184, - 561396544, 611484032, 662838656, 715319488, 768782656, 823081792, 878067904, 933590528, 989497088, 1045634688, - 1101849216, 1157986560, 1213893504, 1269415808, 1324401920, 1378700928, 1432164224, 1484645120, 1535999488, 1586087424, - 1634770560, 1681915904, 1727394560, 1771081600, 1812856960, 1852606720, 1890221568, 1925598592, 1958640640, 1989257344, - 2017364480, 2042885504, 2065750016, 2085895424, 2103266688, 2117816064, 2129503616, 2138297728, 2144173568, 2147115776 -}; -#endif // Q31 const Word32 Stereo_dmx_wnd_coef_32k_fx[L_FRAME32k] = { diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 0c54e0d07..70605040d 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -1987,7 +1987,6 @@ static void weighted_ave_fx( const Word32 wnd_fx[] /* i : window coef Q31 */ ) { -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC #ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT Word16 i, j, len, len2; @@ -2035,26 +2034,6 @@ static void weighted_ave_fx( } #endif -#else - - Word16 i, len; - Word32 gain_tmp_fx = 0, gain_sub_fx; - move32(); - len = shr( input_frame, 4 ); - gain_sub_fx = L_sub( gain_fx, old_gain_fx ); - FOR( i = 0; i < len; i++ ) - { - gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 - dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_tmp_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 - move32(); - } - FOR( ; i < input_frame; i++ ) - { - dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 - move32(); - } - -#endif return; } @@ -2246,7 +2225,6 @@ static void adapt_gain_fx( const Word32 wnd_fx[] /* i : window coef Q31 */ ) { -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_POC #ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT Word16 i, j, len, len2; @@ -2298,30 +2276,6 @@ static void adapt_gain_fx( } #endif -#else - - Word16 i, len; - Word32 gain_tmp_fx, gain_sub_fx; - - len = shr( input_frame, 4 ); - - // gain_sub = gain - old_gain; - gain_sub_fx = L_sub( gain_fx, old_gain_fx ); // Q31 - - FOR( i = 0; i < len; i++ ) - { - // gain_tmp = old_gain + gain_sub * wnd[i]; - gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 // dst[i] = src[i] * gain_tmp; - dst_fx[i] = Mpy_32_32( src_fx[i], gain_tmp_fx ); // Q16 - move32(); - } - FOR( ; i < input_frame; i++ ) - { - // dst[i] = src[i] * gain; - dst_fx[i] = Mpy_32_32( src_fx[i], gain_fx ); // Q16 - move32(); - } -#endif return; } -- GitLab From 73a2bb54cd190274733e57759737fef7f22d123a Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 27 May 2025 10:29:24 +0200 Subject: [PATCH 626/698] [cleanup] accept NONBE_FIX_947_STEREO_DMX_ROMOPT --- lib_com/options.h | 1 - lib_enc/ivas_rom_enc.h | 6 -- lib_enc/ivas_rom_enc_fx.c | 108 ------------------------------- lib_enc/ivas_stereo_dmx_evs_fx.c | 43 ------------ 4 files changed, 158 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 0815b6edd..c89c3b750 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -114,7 +114,6 @@ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ -#define NONBE_FIX_947_STEREO_DMX_ROMOPT /* Orange: ROM optimisation for POC*/ #define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ #ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ diff --git a/lib_enc/ivas_rom_enc.h b/lib_enc/ivas_rom_enc.h index 465eb29e9..d1e644a93 100644 --- a/lib_enc/ivas_rom_enc.h +++ b/lib_enc/ivas_rom_enc.h @@ -111,15 +111,9 @@ extern const UWord16 ECSQ_tab_vals[ECSQ_PARAM_COUNT - 1][1 + ECSQ_TAB_VALS_SIZE] /*----------------------------------------------------------------------------------* * Stereo downmix to EVS ROM tables *----------------------------------------------------------------------------------*/ -#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 2]; extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 2]; extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 2]; -#else -extern const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1]; -extern const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1]; -extern const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1]; -#endif extern const Word32 Stereo_dmx_wnd_coef_32k_fx[L_FRAME32k]; extern const Word32 Stereo_dmx_wnd_coef_48k_fx[L_FRAME48k]; /*----------------------------------------------------------------------------------* diff --git a/lib_enc/ivas_rom_enc_fx.c b/lib_enc/ivas_rom_enc_fx.c index 8533d1538..793546c7a 100644 --- a/lib_enc/ivas_rom_enc_fx.c +++ b/lib_enc/ivas_rom_enc_fx.c @@ -510,7 +510,6 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q *----------------------------------------------------------------------------------*/ -#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT // Q31 const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 2] = { 204411, 817566, 1839231, 3269018, 5106382, 7350624, 10000889, 13056168, 16515298, 20376962, @@ -568,113 +567,6 @@ const Word32 ari_bit_estimate_s17_LC_fx[RANGE_N_CONTEXT][RANGE_N_SYMBOLS] = // Q 937357504, 944316544, 951281152, 958250944, 965225728, 972205056, 979188800, 986176512, 993168000, 1000162880, 1007160960, 1014161856, 1021165248, 1028170944, 1035178560, 1042187776, 1049198400, 1056210048, 1063222464, 1070235328 }; -#else -// Q31 - const Word32 Stereo_dmx_s_wnd_coef_16k_fx[L_FRAME16k >> 1] = { - 204411, 817566, 1839231, 3269018, 5106382, 7350624, 10000889, 13056168, 16515298, 20376962, - 24639688, 29301856, 34361688, 39817260, 45666492, 51907160, 58536884, 65553148, 72953272, 80734440, - 88893688, 97427912, 106333872, 115608160, 125247248, 135247472, 145605040, 156315968, 167376224, 178781552, - 190527648, 202610016, 215024064, 227765072, 240828160, 254208400, 267900656, 281899744, 296200320, 310796928, - 325684032, 340855968, 356306944, 372031072, 388022368, 404274752, 420782016, 437537920, 454536032, 471769920, - 489232992, 506918624, 524820096, 542930496, 561243072, 579750720, 598446528, 617323264, 636373760, 655590784, - 674967040, 694495104, 714167552, 733976960, 753915712, 773976192, 794150848, 814431936, 834811776, 855282624, - 875836544, 896465920, 917162752, 937919168, 958727360, 979579264, 1000467072, 1021382784, 1042318400, 1063266048, - 1084217599, 1105165183, 1126100863, 1147016575, 1167904383, 1188756351, 1209564415, 1230320895, 1251017727, 1271647103, - 1292201087, 1312671871, 1333051647, 1353332735, 1373507455, 1393567999, 1413506687, 1433316095, 1452988543, 1472516607, - 1491892863, 1511109887, 1530160383, 1549037183, 1567732863, 1586240511, 1604553087, 1622663551, 1640564991, 1658250623, - 1675713663, 1692947583, 1709945727, 1726701567, 1743208959, 1759461247, 1775452543, 1791176703, 1806627711, 1821799551, - 1836686719, 1851283327, 1865583871, 1879582975, 1893275263, 1906655487, 1919718527, 1932459519, 1944873599, 1956956031, - 1968702079, 1980107391, 1991167615, 2001878655, 2012236159, 2022236415, 2031875455, 2041149823, 2050055679, 2058589951, - 2066749183, 2074530431, 2081930495, 2088946815, 2095576447, 2101817215, 2107666431, 2113121919, 2118181759, 2122843903, - 2127106687, 2130968319, 2134427519, 2137482751, 2140132991, 2142377215, 2144214655, 2145644415, 2146666111, 2147279231 - }; - // Q31 - const Word32 Stereo_dmx_s_wnd_coef_32k_fx[L_FRAME32k >> 1] = { - 51423, 205686, 462776, 822667, 1285325, 1850705, 2518754, 3289407, 4162591, 5138222, - 6216206, 7396441, 8678813, 10063200, 11549468, 13137475, 14827070, 16618091, 18510366, 20503712, - 22597942, 24792852, 27088232, 29483864, 31979518, 34574956, 37269924, 40064172, 42957428, 45949412, - 49039844, 52228420, 55514844, 58898792, 62379948, 65957972, 69632528, 73403256, 77269800, 81231792, - 85288840, 89440576, 93686584, 98026464, 102459800, 106986176, 111605144, 116316264, 121119096, 126013168, - 130998016, 136073168, 141238128, 146492400, 151835488, 157266880, 162786064, 168392496, 174085632, 179864960, - 185729888, 191679888, 197714368, 203832752, 210034448, 216318896, 222685456, 229133536, 235662512, 242271760, - 248960656, 255728544, 262574784, 269498720, 276499680, 283577024, 290730048, 297958048, 305260384, 312636288, - 320085120, 327606144, 335198624, 342861856, 350595072, 358397568, 366268576, 374207360, 382213120, 390285152, - 398422624, 406624768, 414890848, 423220000, 431611456, 440064448, 448578112, 457151680, 465784288, 474475136, - 483223360, 492028160, 500888704, 509804096, 518773504, 527796064, 536870912, 545997184, 555174016, 564400512, - 573675776, 582998976, 592369152, 601785472, 611246976, 620752768, 630301952, 639893568, 649526784, 659200640, - 668914176, 678666496, 688456704, 698283776, 708146816, 718044864, 727976960, 737942208, 747939584, 757968192, - 768027072, 778115200, 788231680, 798375424, 808545600, 818741184, 828961216, 839204672, 849470528, 859757952, - 870065856, 880393216, 890739136, 901102592, 911482560, 921878080, 932288192, 942711808, 953147968, 963595648, - 974053952, 984521728, 994998080, 1005481984, 1015972480, 1026468416, 1036968960, 1047472960, 1057979520, 1068487552, - 1078996095, 1089504127, 1100010751, 1110514687, 1121015167, 1131511167, 1142001663, 1152485503, 1162961919, 1173429759, - 1183887999, 1194335743, 1204771839, 1215195519, 1225605503, 1236001023, 1246381055, 1256744447, 1267090431, 1277417855, - 1287725695, 1298013055, 1308279039, 1318522495, 1328742399, 1338937983, 1349108223, 1359251967, 1369368447, 1379456639, - 1389515391, 1399544063, 1409541503, 1419506687, 1429438847, 1439336831, 1449199871, 1459026943, 1468817151, 1478569471, - 1488283007, 1497956863, 1507590015, 1517181695, 1526730879, 1536236671, 1545698175, 1555114495, 1564484735, 1573807871, - 1583083135, 1592309631, 1601486463, 1610612735, 1619687551, 1628710143, 1637679615, 1646594943, 1655455487, 1664260223, - 1673008511, 1681699327, 1690332031, 1698905471, 1707419135, 1715872127, 1724263679, 1732592767, 1740858879, 1749060991, - 1757198463, 1765270527, 1773276287, 1781215103, 1789086079, 1796888575, 1804621823, 1812285055, 1819877503, 1827398527, - 1834847359, 1842223231, 1849525631, 1856753663, 1863906687, 1870983935, 1877984895, 1884908927, 1891755135, 1898523007, - 1905211903, 1911821183, 1918350079, 1924798207, 1931164799, 1937449215, 1943650943, 1949769343, 1955803775, 1961753727, - 1967618687, 1973398015, 1979091199, 1984697599, 1990216703, 1995648127, 2000991231, 2006245503, 2011410431, 2016485631, - 2021470463, 2026364543, 2031167359, 2035878527, 2040497535, 2045023871, 2049457151, 2053797119, 2058043135, 2062194815, - 2066251903, 2070213887, 2074080383, 2077851135, 2081525631, 2085103743, 2088584831, 2091968767, 2095255167, 2098443775, - 2101534207, 2104526207, 2107419519, 2110213759, 2112908671, 2115504127, 2117999743, 2120395391, 2122690815, 2124885759, - 2126979967, 2128973311, 2130865535, 2132656639, 2134346111, 2135934207, 2137420415, 2138804863, 2140087167, 2141267455, - 2142345471, 2143321087, 2144194303, 2144964863, 2145632895, 2146198271, 2146660991, 2147020927, 2147277951, 2147432191 - }; - // Q31 - const Word32 Stereo_dmx_s_wnd_coef_48k_fx[L_FRAME48k >> 1] = { - 22902, 91608, 206114, 366416, 572507, 824378, 1122018, 1465415, 1854554, 2289418, - 2769989, 3296246, 3868167, 4485728, 5148901, 5857660, 6611973, 7411808, 8257132, 9147909, - 10084099, 11065664, 12092561, 13164746, 14282175, 15444799, 16652568, 17905432, 19203336, 20546226, - 21934042, 23366728, 24844222, 26366462, 27933380, 29544910, 31200986, 32901534, 34646484, 36435760, - 38269288, 40146984, 42068776, 44034576, 46044300, 48097868, 50195188, 52336168, 54520724, 56748756, - 59020172, 61334876, 63692768, 66093744, 68537712, 71024552, 73554176, 76126456, 78741304, 81398592, - 84098208, 86840048, 89623984, 92449904, 95317680, 98227200, 101178336, 104170952, 107204936, 110280144, - 113396456, 116553736, 119751848, 122990656, 126270024, 129589808, 132949864, 136350064, 139790240, 143270256, - 146789968, 150349232, 153947888, 157585760, 161262736, 164978624, 168733280, 172526544, 176358256, 180228256, - 184136368, 188082416, 192066256, 196087712, 200146592, 204242752, 208376000, 212546160, 216753072, 220996528, - 225276352, 229592384, 233944432, 238332288, 242755792, 247214752, 251708960, 256238240, 260802384, 265401216, - 270034528, 274702112, 279403808, 284139392, 288908640, 293711360, 298547360, 303416448, 308318400, 313252960, - 318220000, 323219264, 328250528, 333313632, 338408288, 343534304, 348691488, 353879616, 359098432, 364347744, - 369627296, 374936928, 380276320, 385645312, 391043680, 396471168, 401927520, 407412544, 412925984, 418467616, - 424037216, 429634528, 435259328, 440911328, 446590336, 452296128, 458028416, 463786944, 469571520, 475381856, - 481217728, 487078848, 492965024, 498875968, 504811424, 510771168, 516754912, 522762432, 528793440, 534847712, - 540924928, 547024960, 553147392, 559292032, 565458624, 571646912, 577856640, 584087488, 590339264, 596611584, - 602904320, 609217152, 615549760, 621901888, 628273344, 634663808, 641072960, 647500608, 653946432, 660410176, - 666891520, 673390208, 679906048, 686438592, 692987712, 699553088, 706134400, 712731392, 719343808, 725971328, - 732613696, 739270592, 745941760, 752626880, 759325760, 766038016, 772763456, 779501696, 786252480, 793015488, - 799790528, 806577216, 813375360, 820184576, 827004608, 833835136, 840675968, 847526656, 854387072, 861256832, - 868135616, 875023168, 881919232, 888823488, 895735616, 902655296, 909582336, 916516352, 923457088, 930404224, - 937357504, 944316544, 951281152, 958250944, 965225728, 972205056, 979188800, 986176512, 993168000, 1000162880, - 1007160960, 1014161856, 1021165248, 1028170944, 1035178560, 1042187776, 1049198400, 1056210048, 1063222464, 1070235328, - 1077248383, 1084261119, 1091273599, 1098285183, 1105295871, 1112305151, 1119312767, 1126318335, 1133321855, 1140322687, - 1147320703, 1154315647, 1161307135, 1168294911, 1175278591, 1182257919, 1189232639, 1196202495, 1203167103, 1210126207, - 1217079423, 1224026495, 1230967295, 1237901311, 1244828287, 1251748095, 1258660223, 1265564415, 1272460415, 1279348095, - 1286226815, 1293096575, 1299956991, 1306807679, 1313648511, 1320479103, 1327299071, 1334108287, 1340906367, 1347693183, - 1354468095, 1361231231, 1367981951, 1374720255, 1381445631, 1388157823, 1394856703, 1401541887, 1408213119, 1414870015, - 1421512319, 1428139903, 1434752255, 1441349247, 1447930623, 1454495871, 1461044991, 1467577599, 1474093439, 1480592127, - 1487073535, 1493537151, 1499982975, 1506410623, 1512819839, 1519210239, 1525581695, 1531933951, 1538266495, 1544579327, - 1550872063, 1557144447, 1563396095, 1569627007, 1575836671, 1582024959, 1588191615, 1594336255, 1600458751, 1606558719, - 1612635903, 1618690175, 1624721279, 1630728703, 1636712447, 1642672255, 1648607743, 1654518655, 1660404735, 1666265983, - 1672101759, 1677912191, 1683696639, 1689455231, 1695187583, 1700893311, 1706572287, 1712224383, 1717849087, 1723446399, - 1729016063, 1734557695, 1740071167, 1745556095, 1751012479, 1756439935, 1761838335, 1767207295, 1772546687, 1777856383, - 1783135871, 1788385151, 1793604095, 1798792191, 1803949311, 1809075327, 1814169983, 1819233151, 1824264319, 1829263615, - 1834230655, 1839165311, 1844067199, 1848936319, 1853772287, 1858574975, 1863344255, 1868079871, 1872781567, 1877449087, - 1882082431, 1886681215, 1891245439, 1895774719, 1900268927, 1904727807, 1909151359, 1913539199, 1917891199, 1922207231, - 1926487167, 1930730623, 1934937471, 1939107583, 1943240831, 1947337087, 1951395967, 1955417343, 1959401215, 1963347327, - 1967255423, 1971125375, 1974957055, 1978750335, 1982504959, 1986220927, 1989897855, 1993535743, 1997134463, 2000693631, - 2004213375, 2007693439, 2011133567, 2014533759, 2017893887, 2021213567, 2024493055, 2027731839, 2030929919, 2034087167, - 2037203455, 2040278655, 2043312639, 2046305279, 2049256447, 2052166015, 2055033727, 2057859711, 2060643583, 2063385471, - 2066085119, 2068742399, 2071357183, 2073929471, 2076459135, 2078945919, 2081389951, 2083790847, 2086148735, 2088463487, - 2090734847, 2092962943, 2095147519, 2097288447, 2099385727, 2101439359, 2103449087, 2105414911, 2107336703, 2109214335, - 2111047935, 2112837119, 2114582143, 2116282623, 2117938687, 2119550207, 2121117183, 2122639487, 2124116863, 2125549567, - 2126937471, 2128280319, 2129578239, 2130831103, 2132038911, 2133201535, 2134318847, 2135391103, 2136418047, 2137399551, - 2138335743, 2139226495, 2140071807, 2140871679, 2141625983, 2142334719, 2142997887, 2143615487, 2144187391, 2144713599, - 2145194239, 2145629055, 2146018175, 2146361599, 2146659327, 2146911103, 2147117183, 2147277567, 2147391999, 2147460735 - }; -#endif // Q31 diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 70605040d..3c92a645c 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -1988,7 +1988,6 @@ static void weighted_ave_fx( ) { -#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT Word16 i, j, len, len2; Word32 gain_tmp_fx = 0, gain_sub_fx; move32(); @@ -2015,24 +2014,6 @@ static void weighted_ave_fx( dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 move32(); } -#else - Word16 i, len; - Word32 gain_tmp_fx = 0, gain_sub_fx; - move32(); - len = shr( input_frame, 1 ); - gain_sub_fx = L_sub( gain_fx, old_gain_fx ); - FOR( i = 0; i < len; i++ ) - { - gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 - dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_tmp_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 - move32(); - } - FOR( ; i < input_frame; i++ ) - { - dst_fx[i] = L_add_sat( Mpy_32_32( src1_fx[i], gain_fx ), Mpy_32_32( src2_fx[i], L_sub( MAX_32, gain_tmp_fx ) ) ); // Q16 - move32(); - } -#endif return; @@ -2226,7 +2207,6 @@ static void adapt_gain_fx( ) { -#ifdef NONBE_FIX_947_STEREO_DMX_ROMOPT Word16 i, j, len, len2; Word32 gain_tmp_fx, gain_sub_fx; @@ -2252,29 +2232,6 @@ static void adapt_gain_fx( dst_fx[i] = Mpy_32_32( src_fx[i], gain_fx ); // Q16 move32(); } -#else - Word16 i, len; - Word32 gain_tmp_fx, gain_sub_fx; - - len = shr( input_frame, 1 ); - - // gain_sub = gain - old_gain; - gain_sub_fx = L_sub( gain_fx, old_gain_fx ); // Q31 - - FOR( i = 0; i < len; i++ ) - { - // gain_tmp = old_gain + gain_sub * wnd[i]; - gain_tmp_fx = L_add( old_gain_fx, Mpy_32_32( gain_sub_fx, wnd_fx[i] ) ); // Q31 // dst[i] = src[i] * gain_tmp; - dst_fx[i] = Mpy_32_32( src_fx[i], gain_tmp_fx ); // Q16 - move32(); - } - FOR( ; i < input_frame; i++ ) - { - // dst[i] = src[i] * gain; - dst_fx[i] = Mpy_32_32( src_fx[i], gain_fx ); // Q16 - move32(); - } -#endif return; -- GitLab From 2fab46b15f8841ee15278d927e73dd0932c70f87 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 27 May 2025 10:29:27 +0200 Subject: [PATCH 627/698] [cleanup] accept NONBE_FIX_947_STEREO_DMX_EVS_PHA --- lib_com/options.h | 3 - lib_enc/ivas_stat_enc.h | 7 - lib_enc/ivas_stereo_dmx_evs_fx.c | 677 ------------------------------- 3 files changed, 687 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index c89c3b750..42a9dbd7e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -114,10 +114,7 @@ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ -#define NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Orange: Fix issues on PHA */ -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ -#endif #define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ #define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ #define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 85450a697..126bc61f6 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -1178,9 +1178,6 @@ typedef struct stereo_dmx_evs_phase_only_correlation_structure typedef struct stereo_dmx_evs_correlation_filter_structure { -#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA - Word16 init_frmCntr; -#endif Word32 isd_rate_s_fx; // Q31 Word32 iccr_s_fx; // Q31 @@ -1204,7 +1201,6 @@ typedef struct stereo_dmx_evs_correlation_filter_structure STEREO_DMX_EVS_PHA prev_pha; Word16 pha_hys_cnt; -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA STEREO_DMX_EVS_PHA proc_pha; Word16 force_poc; @@ -1214,7 +1210,6 @@ typedef struct stereo_dmx_evs_correlation_filter_structure Word16 pha_ipd_chan_thresh; Word16 pha_ipd_chanswitch; Word16 pha_ipd_chanswitch_allowed; -#endif Word16 prc_thres; STEREO_DMX_EVS_PRC curr_prc; @@ -1228,7 +1223,6 @@ typedef struct stereo_dmx_evs_correlation_filter_structure Word16 trns_aux_energy_fx_e[CPE_CHANNELS]; Word32 crst_fctr_fx; // Q0 -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA Word16 n_fad_g; Word16 n_fad_cnt; @@ -1247,7 +1241,6 @@ typedef struct stereo_dmx_evs_correlation_filter_structure Word32 low_egy_thres_sgc; Word16 low_egy_thres_sgc_e; -#endif } STEREO_DMX_EVS_PHA_DATA, *STEREO_DMX_EVS_PHA_HANDLE; diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 3c92a645c..d06b98cc7 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -88,9 +88,6 @@ #define STEREO_DMX_EVS_SWTCH_PRC_THRES_48 29 #define STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES 1 -#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA -#define STEREO_DMX_EVS_FADE_LEN_PRC_Q0 20 -#endif #define STEREO_DMX_EVS_NB_SBFRM 5 #define STEREO_DMX_EVS_TRNS_DTC_INST_Q0 75 @@ -103,7 +100,6 @@ #define STEREO_DMX_EVS_POC_RENORM_TH 33554432 // 65536 << 9 #define STEREO_DMX_EVS_POC_RENORM_SHIFT 3 -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA #define STEREO_DMX_EVS_FAD_R 3 #ifdef NONBE_FIX_947_STEREO_DMX_FADOPT #define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */ @@ -149,35 +145,6 @@ const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128, 1841888128 }; -#else - -const Word32 ipd_ff_Q31[STEREO_DMX_EVS_NB_SUBBAND_MAX] = { - 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, - 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, - 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, 2027355264, - 2027355264, 2023718656, 2020082048, 2016445440, 2012808832, 2009172224, 2005535616, 2001899008, 1998262400, 1994625664, - 1990989056, 1987352448, 1983715840, 1980079232, 1976442624, 1972806016, 1969169408, 1965532800, 1961896192, 1958259584, - 1954622976, 1950986368, 1947349760, 1943713152, 1940076544, 1936439936, 1932803328, 1929166592, 1925529984, 1921893376, - 1918256768, 1914620160, 1910983552, 1907346944, 1903710336, 1900073728, 1896437120, 1892800512, 1889163904, 1885527296, - 1881890688, 1878254080, 1874617344, 1870980864, 1867344128, 1863707520, 1860070912, 1856434304, 1852797696, 1849161088, - 1845524480, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, - 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872, 1841887872 -}; -#endif /*-----------------------------------------------------------------------* * Local function prototypes *-----------------------------------------------------------------------*/ @@ -256,13 +223,11 @@ static Word32 find_poc_peak_fx( const Word16 input_frame, /* i : input frame length per channel */ const Word32 ratio_fixed /* i : adapting ratio */ ); -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA static Word32 spectral_flatness_fx( const Word32 *sig_fx, /* i : input signal (mantissa) */ const Word16 *sig_fx_e, /* i : input signal (exponent) - can be NULL */ const Word16 sig_length /* i : input signal length */ ); -#endif /*-------------------------------------------------------------------* * estimate_itd_wnd_fft() * @@ -368,11 +333,7 @@ static void calc_poc_fx( Word16 cos_step, cos_max; Word32 eps_cos, eps_sin, EPS; -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA Word16 isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha, pha_ipd_ild_chan2rephase; -#else - Word16 isd_cnt_h, isd_cnt_l, ild_cnt, n, freq_8k, freq_ipd_max, nsbd, input_frame_pha; -#endif Word32 Nr, Ni, Dr, Di, tPr, tPi, Pn, energy; Word16 Nr_e, Ni_e, tPr_e, tPi_e, Pn_e, energy_e; Word16 isd_rate, isd_rate_e; @@ -678,15 +639,6 @@ static void calc_poc_fx( specPOr[n0] = imult3216( Mpy_32_32_r( wnd[i * step + bias], gamma ), sign_fx( Mpy_32_32_r( specLr[n0], specRr[n0] ) ) ); // Q31 move32(); -#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA - hPHA->init_frmCntr = sub( hPHA->init_frmCntr, 1 ); - move16(); - if ( hPHA->init_frmCntr < 0 ) - { - hPHA->init_frmCntr = 0; - move16(); - } -#endif freq_8k = L_FRAME16k / 2; move16(); // freq_ipd_max = (int16_t) ( freq_8k * 5000.0f / ( 8000.0f * STEREO_DMX_EVS_SUBBAND_SIZE ) ); @@ -911,7 +863,6 @@ static void calc_poc_fx( tPr = L_shl_sat( Mpy_32_32_r( tPr, Pn ), add( tPr_e, Pn_e ) ); // Q31 tPi = L_shl_sat( Mpy_32_32_r( tPi, Pn ), add( tPi_e, Pn_e ) ); // Q31 -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA Pr[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pr[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPr ) ); move32(); Pi[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pi[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPi ) ); @@ -926,37 +877,10 @@ static void calc_poc_fx( move32(); Pi[n] = L_shl_sat( Mpy_32_32_r( Pi[n], Pn ), Pn_e ); // Q31 move32(); -#else - IF( hPHA->init_frmCntr == 0 ) - { - Pr[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pr[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPr ) ); - move32(); - Pi[n] = L_add( Mpy_32_32_r( ipd_ff[n], Pi[n] ), Mpy_32_32_r( L_sub( MAX_32, ipd_ff[n] ), tPi ) ); - move32(); - - // Pn = (float) inv_sqrt( ( Pr[n] * Pr[n] + Pi[n] * Pi[n] ) + EPSILON ); - Pn = L_add( L_shr( Mpy_32_32_r( Pr[n], Pr[n] ), 1 ), L_shr( Mpy_32_32_r( Pi[n], Pi[n] ), 1 ) ); - Pn = BASOP_Util_Add_Mant32Exp( Pn, 1, EPSILON_FX_M, EPSILON_FX_E, &Pn_e ); - Pn = Isqrt_lc( Pn, &Pn_e ); - - Pr[n] = L_shl_sat( Mpy_32_32_r( Pr[n], Pn ), Pn_e ); // Q31 - move32(); - Pi[n] = L_shl_sat( Mpy_32_32_r( Pi[n], Pn ), Pn_e ); // Q31 - move32(); - } - ELSE - { - Pr[n] = tPr; - move32(); - Pi[n] = tPi; - move32(); - } -#endif // Pr[n] = ( Pr[n] > 1.0f ) ? 1.0f : Pr[n]; // Pr[n] = ( Pr[n] < -1.0f ) ? -1.0f : Pr[n]; } -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA /* Computes Spectral flatness on one channel */ tmp1 = spectral_flatness_fx( &tEl[1], &tEl_e[1], nsbd - 1 ); IF( LT_32( tmp1, STEREO_DMX_EVS_IPD_SF_THRES_Q31 ) ) @@ -969,7 +893,6 @@ static void calc_poc_fx( hPHA->pha_ipd_chanswitch_allowed = 1; move16(); } -#endif // ICCr = (float) sqrt( ( Nr * Nr + Ni * Ni ) / ( eneL * eneR + EPSILON ) ); L_tmp1 = BASOP_Util_Add_Mant32Exp( Mpy_32_32_r( Nr, Nr ), shl( Nr_e, 1 ), Mpy_32_32_r( Ni, Ni ), shl( Ni_e, 1 ), &L_tmp1_e ); @@ -984,7 +907,6 @@ static void calc_poc_fx( hPHA->iccr_s_fx = L_add( Mpy_32_32_r( STEREO_DMX_EVS_ICCR_FORGETTING_Q31, hPHA->iccr_s_fx ), Mpy_32_32_r( MAX_32 - STEREO_DMX_EVS_ICCR_FORGETTING_Q31, ICCr ) ); // Q31 move32(); -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA IF( EQ_32( hPHA->curr_pha, STEREO_DMX_EVS_PHA_IPD ) ) { @@ -1293,176 +1215,6 @@ static void calc_poc_fx( move32(); } } -#else - IF( EQ_32( hPHA->curr_pha, STEREO_DMX_EVS_PHA_IPD ) ) - { - hPHA->p_curr_taps_fx[0] = NULL; - hPHA->p_curr_taps_fx[1] = hPHA->curr_taps_fx[1]; - - rfft_pha_buf[0] = ONE_IN_Q22; - move32(); - rfft_pha_buf[1] = ONE_IN_Q22; - move32(); - - ild_cnt = 0; - move16(); - FOR( i = 1; i < nsbd; i++ ) - { - rfft_pha_buf[i * 2] = L_shr_r( Pr[i], 9 ); // Q31->Q22 - move32(); - rfft_pha_buf[i * 2 + 1] = L_shr_r( Pi[i], 9 ); // Q31->Q22 - move32(); - // if ( ( tEr[i] > STEREO_DMX_EVS_LR_EGY * tEl[i] ) || ( tEl[i] > STEREO_DMX_EVS_LR_EGY * tEr[i] ) ) - test(); - IF( BASOP_Util_Cmp_Mant32Exp( tEr[i], tEr_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEl[i] ), add( 4, tEl_e[i] ) ) > 0 || BASOP_Util_Cmp_Mant32Exp( tEl[i], tEl_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEr[i] ), add( 4, tEr_e[i] ) ) > 0 ) - { - ild_cnt = add( ild_cnt, 1 ); - tEr[i] = MAX_32; - move32(); - tEr_e[i] = 0; - move16(); - } - ELSE - { - tEr[i] = MIN_32; - move32(); - tEr_e[i] = 0; - move16(); - } - } - IF( GT_16( ild_cnt, mult_r( nsbd, STEREO_DMX_EVS_ILD_PRC_Q15 ) ) ) - { - FOR( i = 1; i < nsbd; i++ ) - { - IF( tEr[i] > 0 ) - { - rfft_pha_buf[i * 2] = ONE_IN_Q22; - move32(); - rfft_pha_buf[i * 2 + 1] = 0; - move32(); - } - } - } - - rfft_fx( rfft_pha_buf, hPHA->rfft_ipd_coef_fx, input_frame_pha, +1 ); - // mvr2r( rfft_pha_buf, hPHA->p_curr_taps[1], hPHA->pha_len ); - Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31 - } - ELSE - { - test(); - test(); - IF( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_L_Q31 ) || ( LT_32( hPHA->iccr_s_fx, STEREO_DMX_EVS_ICCR_HYST_H_Q31 ) && ( hPHA->p_curr_taps_fx[0] != NULL ) ) ) - { - /* IPDn */ - - set32_fx( &( Pr[freq_ipd_max] ), MAX_32, sub( nsbd, freq_ipd_max ) ); - set32_fx( &( Pi[freq_ipd_max] ), 0, sub( nsbd, freq_ipd_max ) ); - - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - hPHA->p_curr_taps_fx[n] = hPHA->curr_taps_fx[n]; - } - - rfft_pha_buf[0] = ONE_IN_Q22; - move32(); - rfft_pha_buf[1] = ONE_IN_Q22; - move32(); - - ild_cnt = 0; - move16(); - isd_rate = BASOP_Util_Divide1616_Scale( isd_cnt_l, freq_8k, &isd_rate_e ); - // Saturation to handle values close to 1.0f - isd_rate = shl_sat( isd_rate, isd_rate_e ); // Q15 - FOR( i = 1; i < nsbd; i++ ) - { - // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + Pr[i] ) / 2.0f ); - L_tmp = L_add( ONE_IN_Q30, L_shr( Pr[i], 1 ) ); - L_tmp_e = 0; - move16(); - L_tmp = Sqrt32( L_tmp, &L_tmp_e ); - rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22 - move32(); - // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - Pr[i] ) / 2.0f ) * sign( Pi[i] ); - L_tmp = L_sub_sat( ONE_IN_Q30, L_shr( Pr[i], 1 ) ); // saturating as Pr does not exceed 1.0f - L_tmp_e = 0; - move16(); - L_tmp = Sqrt32( L_tmp, &L_tmp_e ); - rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( Pi[i] ) ); // Q22 - move32(); - IF( GT_16( isd_rate, STEREO_DMX_EVS_ISD_DIST_THRES_IPD_Q15 ) ) - { - // rfft_pha_buf[i * 2 + 1] = (float) sqrt( ( 1.0f - rfft_pha_buf[i * 2] ) / 2.0f ) * sign( rfft_pha_buf[i * 2 + 1] ); - L_tmp = L_sub( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) ); - L_tmp_e = 9; - move16(); - L_tmp = Sqrt32( L_tmp, &L_tmp_e ); - rfft_pha_buf[i * 2 + 1] = imult3216( L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ), sign_fx( rfft_pha_buf[i * 2 + 1] ) ); // Q22 - move32(); - // rfft_pha_buf[i * 2] = (float) sqrt( ( 1.0f + rfft_pha_buf[i * 2] ) / 2.0f ); - L_tmp = L_add( ONE_IN_Q21, L_shr( rfft_pha_buf[i * 2], 1 ) ); // Q22 - L_tmp_e = 9; - move16(); - L_tmp = Sqrt32( L_tmp, &L_tmp_e ); - rfft_pha_buf[i * 2] = L_shl_r( L_tmp, sub( L_tmp_e, 9 ) ); // Q22 - move32(); - } - - // if ( ( tEr[i] > STEREO_DMX_EVS_LR_EGY * tEl[i] ) || ( tEl[i] > STEREO_DMX_EVS_LR_EGY * tEr[i] ) ) - test(); - IF( BASOP_Util_Cmp_Mant32Exp( tEr[i], tEr_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEl[i] ), add( 4, tEl_e[i] ) ) > 0 || BASOP_Util_Cmp_Mant32Exp( tEl[i], tEl_e[i], Mpy_32_32_r( STEREO_DMX_EVS_LR_EGY_Q27, tEr[i] ), add( 4, tEr_e[i] ) ) > 0 ) - { - ild_cnt = add( ild_cnt, 1 ); - tEr[i] = MAX_32; - move32(); - tEr_e[i] = 0; - move16(); - } - ELSE - { - tEr[i] = MIN_32; - move32(); - tEr_e[i] = 0; - move16(); - } - } - IF( GT_16( ild_cnt, mult_r( nsbd, STEREO_DMX_EVS_ILD_PRC_Q15 ) ) ) - { - FOR( i = 1; i < nsbd; i++ ) - { - IF( tEr[i] > 0 ) - { - rfft_pha_buf[i * 2] = ONE_IN_Q22; - move32(); - rfft_pha_buf[i * 2 + 1] = 0; - move32(); - } - } - } - - rfft_fx( rfft_pha_buf, hPHA->rfft_ipd_coef_fx, input_frame_pha, +1 ); - // mvr2r( rfft_pha_buf, hPHA->p_curr_taps[1], hPHA->pha_len ); - Copy_Scale_sig32( rfft_pha_buf, hPHA->p_curr_taps_fx[1], hPHA->pha_len, 9 ); // Q22->Q31 - - /* PHA L2R */ - p_curr_taps = hPHA->p_curr_taps_fx[0]; - p_curr_taps[0] = L_shl( rfft_pha_buf[0], 9 ); // Q22->Q31 - move32(); - FOR( i = 1; i < hPHA->pha_len; i++ ) - { - p_curr_taps[i] = L_shl( rfft_pha_buf[input_frame_pha - i], 9 ); // Q22->Q31 - move32(); - } - } - ELSE - { - FOR( n = 0; n < CPE_CHANNELS; n++ ) - { - hPHA->p_curr_taps_fx[n] = NULL; - } - } - } -#endif FOR( n = 0; n < CPE_CHANNELS; n++ ) { @@ -2019,7 +1771,6 @@ static void weighted_ave_fx( return; } -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA /*-------------------------------------------------------------------* * spectral_flatness_fx() * @@ -2071,7 +1822,6 @@ static Word32 spectral_flatness_fx( return L_shl_sat( L_deposit_h( sf ), L_tmp_e ); } -#endif /*-------------------------------------------------------------------* * calc_energy() @@ -2154,7 +1904,6 @@ static void calc_energy_fx( return; } -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA /*-------------------------------------------------------------------* * calc_energy_sgc() * @@ -2190,7 +1939,6 @@ static void calc_energy_sgc( return; } -#endif /*-------------------------------------------------------------------* * adapt_gain() @@ -2330,7 +2078,6 @@ static void create_M_signal_fx( return; } -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA /*-------------------------------------------------------------------* * apply_gain_sgc() * @@ -2374,7 +2121,6 @@ static void apply_gain_sgc( return; } -#endif /*-------------------------------------------------------------------* * stereo_dmx_evs_enc() @@ -2389,7 +2135,6 @@ void stereo_dmx_evs_enc_fx( const bool is_binaural /* i : indication that input is binaural audio */ ) { -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA Word16 n; Word16 dmx_weight, corr; // Q15 @@ -2927,386 +2672,6 @@ void stereo_dmx_evs_enc_fx( pop_wmops(); -#else - - Word16 n; - Word16 dmx_weight, corr; // Q15 - Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11 - - Word16 k, m, pha_len, fad_len; - Word32 mem_prev[STEREO_DMX_EVS_FAD_LEN_MAX], data_mem[STEREO_DMX_EVS_DATA_LEN_MAX]; // Q11 - Word32 *p_data_mem, *p_prev_taps, *p_curr_taps, *fad_g, *p_data; - Word32 dmx_poc_data[L_FRAME48k] /*Q11*/, dmx_pha_data[L_FRAME48k] /*Q11*/, *p_dmx_data, fx_tmp; - Word16 fx_tmp_e; - STEREO_DMX_EVS_PRC curr_prc; - Word16 input_subframe, is_transient; - Word32 *p_sub_frame, subframe_energy[STEREO_DMX_EVS_NB_SBFRM]; - Word16 subframe_energy_e[STEREO_DMX_EVS_NB_SBFRM]; - - Word16 input_frame; - - Word32 L_tmp1, L_tmp2; - Word16 L_tmp1_e, L_tmp2_e; - - Word64 W_tmp; - Word16 W_tmp_q; - - push_wmops( "stereo_dmx_evs_enc" ); - - if ( is_binaural ) - { - /* use of is_binaural flag is to be considered */ - } - - // input_frame = (int16_t) ( input_Fs / FRAMES_PER_SEC ); - SWITCH( input_Fs ) - { - case 8000: - input_frame = 160; - BREAK; - case 16000: - input_frame = 320; - BREAK; - case 32000: - input_frame = 640; - BREAK; - case 48000: - input_frame = 960; - BREAK; - default: - input_frame = 960; - IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid sample rate\n" ); - BREAK; - } - move16(); - - FOR( n = 0; n < input_frame; n++ ) - { - data_fx[0][n] = L_deposit_h( data[2 * n] ); - move32(); - data_fx[1][n] = L_deposit_h( data[2 * n + 1] ); - move32(); - } - IF( LT_16( n_samples, input_frame ) ) - { - set32_fx( data_fx[0] + n_samples, 0, sub( input_frame, n_samples ) ); - set32_fx( data_fx[1] + n_samples, 0, sub( input_frame, n_samples ) ); - } - - - // input_subframe = n_samples / STEREO_DMX_EVS_NB_SBFRM; - IF( EQ_16( n_samples, L_FRAME16k ) ) - { - input_subframe = 64; - move16(); - } - ELSE IF( EQ_16( n_samples, L_FRAME32k ) ) - { - input_subframe = 128; - move16(); - } - ELSE IF( EQ_16( n_samples, L_FRAME48k ) ) - { - input_subframe = 192; - move16(); - } - ELSE - { - input_subframe = 192; - move16(); - IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid frame length\n" ); - } - - is_transient = 0; - move16(); - FOR( k = 0; k < CPE_CHANNELS; k++ ) - { - fx_tmp = 0; - move32(); - fx_tmp_e = 0; - move16(); - FOR( m = 0; m < STEREO_DMX_EVS_NB_SBFRM; m++ ) - { - p_sub_frame = &( data_fx[k][m * input_subframe] ); - subframe_energy[m] = 0; - move32(); - subframe_energy_e[m] = 0; - move16(); - FOR( n = 0; n < input_subframe; n++ ) - { - // subframe_energy[m] += p_sub_frame[n] * p_sub_frame[n]; - W_tmp = W_mult_32_32( p_sub_frame[n], p_sub_frame[n] ); - W_tmp_q = W_norm( W_tmp ); - W_tmp = W_shl( W_tmp, W_tmp_q ); - L_tmp1 = W_extract_h( W_tmp ); // Q(31-(30-W_tmp_q)) - L_tmp1_e = sub( 15 * 2, W_tmp_q ); - subframe_energy[m] = BASOP_Util_Add_Mant32Exp( subframe_energy[m], subframe_energy_e[m], L_tmp1, L_tmp1_e, &subframe_energy_e[m] ); - move32(); - } - - L_tmp1 = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); - L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); - // if ( subframe_energy[m] / ( hStereoDmxEVS->hPHA->trns_aux_energy[k] + EPSILON ) > hStereoDmxEVS->hPHA->crst_fctr ) - if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, hStereoDmxEVS->hPHA->crst_fctr_fx, 31 ) > 0 ) - { - is_transient = 1; - move16(); - } - - IF( hStereoDmxEVS->hPHA->init_frmCntr == 0 ) - { - // hStereoDmxEVS->hPHA->trns_aux_energy[k] = STEREO_DMX_EVS_TRNS_EGY_FORGETTING * hStereoDmxEVS->hPHA->trns_aux_energy[k] + ( 1.0f - STEREO_DMX_EVS_TRNS_EGY_FORGETTING ) * subframe_energy[m]; - hStereoDmxEVS->hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ), hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], Mpy_32_16_1( subframe_energy[m], sub( MAX_16, STEREO_DMX_EVS_TRNS_EGY_FORGETTING_Q15 ) ), subframe_energy_e[m], &hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k] ); - move32(); - } - ELSE - { - // hStereoDmxEVS->hPHA->trns_aux_energy[k] = 0.5f * hStereoDmxEVS->hPHA->trns_aux_energy[k] + 0.5f * subframe_energy[m]; - hStereoDmxEVS->hPHA->trns_aux_energy_fx[k] = BASOP_Util_Add_Mant32Exp( hStereoDmxEVS->hPHA->trns_aux_energy_fx[k], add( hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k], 1 ), subframe_energy[m], add( subframe_energy_e[m], 1 ), &hStereoDmxEVS->hPHA->trns_aux_energy_fx_e[k] ); - move32(); - } - - fx_tmp = BASOP_Util_Add_Mant32Exp( fx_tmp, fx_tmp_e, subframe_energy[m], subframe_energy_e[m], &fx_tmp_e ); - } - - FOR( m = 1; m < STEREO_DMX_EVS_NB_SBFRM; m++ ) - { - L_tmp1 = BASOP_Util_Add_Mant32Exp( subframe_energy[m - 1], subframe_energy_e[m - 1], EPSILON_FX_M, EPSILON_FX_E, &L_tmp1_e ); - L_tmp2 = BASOP_Util_Divide3232_Scale_cadence( subframe_energy[m], L_tmp1, &L_tmp2_e ); - L_tmp2_e = add( L_tmp2_e, sub( subframe_energy_e[m], L_tmp1_e ) ); - // if ( subframe_energy[m] / ( subframe_energy[m - 1] + EPSILON ) > STEREO_DMX_EVS_TRNS_DTC_INST ) - if ( BASOP_Util_Cmp_Mant32Exp( L_tmp2, L_tmp2_e, STEREO_DMX_EVS_TRNS_DTC_INST_Q0, 31 ) > 0 ) - { - is_transient = 1; - move16(); - } - } - } - - estimate_itd_fx( &corr, hStereoDmxEVS->hPOC, hStereoDmxEVS->hPHA, data_fx[0], data_fx[1], &hStereoDmxEVS->itd_fx, input_frame ); - - /* poc */ - - IF( hStereoDmxEVS->itd_fx ) - { - // dmx_weight = ( ( hStereoDmxEVS->itd > 0 ) ? ( -1 ) : 1 ) * 0.5f * corr + 0.5f; - IF( hStereoDmxEVS->itd_fx > 0 ) - { - dmx_weight = add( negate( shr( corr, 1 ) ), ONE_IN_Q14 ); - } - ELSE - { - dmx_weight = add( shr( corr, 1 ), ONE_IN_Q14 ); - } - } - ELSE - { - dmx_weight = ONE_IN_Q14; - move16(); - } - - create_M_signal_fx( data_fx[0], data_fx[1], dmx_poc_data, L_deposit_h( dmx_weight ), input_frame, hStereoDmxEVS->s_wnd_fx, - hStereoDmxEVS->dmx_weight_fx, hStereoDmxEVS->pre_dmx_energy_fx, hStereoDmxEVS->pre_dmx_energy_fx_e, hStereoDmxEVS->aux_dmx_energy_fx, hStereoDmxEVS->aux_dmx_energy_fx_e ); - - // Downscaling signals to avoid accumulation overflows - scale_sig32( data_fx[0], input_frame, -5 ); // Q31->Q26 - scale_sig32( data_fx[1], input_frame, -5 ); // Q31->Q26 - scale_sig32( dmx_poc_data, input_frame, -5 ); // Q31->Q26 - - /* pha */ - - pha_len = hStereoDmxEVS->hPHA->pha_len; - move16(); - fad_len = hStereoDmxEVS->hPHA->fad_len; - move16(); - fad_g = hStereoDmxEVS->hPHA->fad_g_fx; - - set_zero_fx( dmx_pha_data, n_samples ); - set_zero_fx( mem_prev, fad_len ); - - FOR( k = 0; k < CPE_CHANNELS; k++ ) - { - p_data = data_fx[k]; - Copy32( hStereoDmxEVS->hPHA->data_mem_fx[k], data_mem, pha_len ); - Copy32( &( p_data[n_samples - pha_len] ), hStereoDmxEVS->hPHA->data_mem_fx[k], pha_len ); - p_data_mem = &( data_mem[pha_len] ); - Copy32( p_data, p_data_mem, n_samples ); - - p_prev_taps = hStereoDmxEVS->hPHA->p_prev_taps_fx[k]; - IF( p_prev_taps ) - { - FOR( n = 0; n < fad_len; n++ ) - { - FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) - { - // ftmp += p_data_mem[n - m] * p_prev_taps[m]; - fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_prev_taps[m] ) ); // Q25 - } - fx_tmp = L_shl( fx_tmp, 1 ); // Q26 - mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); - move32(); - } - } - ELSE - { - FOR( n = 0; n < fad_len; n++ ) - { - // mem_prev[n] += p_data[n] * INV_SQRT_2; - mem_prev[n] = L_add( mem_prev[n], Mpy_32_32( p_data[n], INV_SQRT_2_Q31 ) ); // Q26 - move32(); - } - } - - p_curr_taps = hStereoDmxEVS->hPHA->p_curr_taps_fx[k]; - IF( p_curr_taps ) - { - FOR( n = 0; n < n_samples; n++ ) - { - FOR( ( fx_tmp = 0, m = 0 ); m < pha_len; m++ ) - { - // ftmp += p_data_mem[n - m] * p_curr_taps[m]; - fx_tmp = L_add( fx_tmp, Mpy_32_32( p_data_mem[n - m], p_curr_taps[m] ) ); // Q25 - } - fx_tmp = L_shl( fx_tmp, 1 ); // Q26 - // dmx_pha_data[n] += ftmp * INV_SQRT_2; - dmx_pha_data[n] = L_add( dmx_pha_data[n], Mpy_32_32( fx_tmp, INV_SQRT_2_Q31 ) ); // Q26 - move32(); - } - } - ELSE - { - FOR( n = 0; n < n_samples; n++ ) - { - // dmx_pha_data[n] += p_data[n] * INV_SQRT_2; - dmx_pha_data[n] = L_add( dmx_pha_data[n], Mpy_32_32( p_data[n], INV_SQRT_2_Q31 ) ); // Q26 - move32(); - } - } - } - - FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len; ( n++, m-- ) ) - { - dmx_pha_data[n] = Mpy_32_32( dmx_pha_data[n], fad_g[n] ); - move32(); - dmx_pha_data[n] = L_add( dmx_pha_data[n], Mpy_32_32( mem_prev[n], fad_g[m] ) ); // Q26 - move32(); - } - - /* prc switch */ - - curr_prc = hStereoDmxEVS->hPHA->curr_prc; - move32(); - // if ( abs( (int16_t) hStereoDmxEVS->itd ) > hStereoDmxEVS->hPHA->prc_thres ) - IF( GT_16( abs_s( hStereoDmxEVS->itd_fx ), hStereoDmxEVS->hPHA->prc_thres ) ) - { - IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) - { - IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_POC ) ) - { - hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 ); - move16(); - } - ELSE - { - hStereoDmxEVS->hPHA->prc_hys_cnt = 0; - move16(); - } - - if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) - { - hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; - move32(); - } - } - hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_POC; - move32(); - } - ELSE - { - IF( NE_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_PHA ) ) - { - IF( EQ_32( hStereoDmxEVS->hPHA->prev_prc, STEREO_DMX_EVS_PRC_PHA ) ) - { - hStereoDmxEVS->hPHA->prc_hys_cnt = add( hStereoDmxEVS->hPHA->prc_hys_cnt, 1 ); - move16(); - } - ELSE - { - hStereoDmxEVS->hPHA->prc_hys_cnt = 0; - move16(); - } - - if ( GE_16( hStereoDmxEVS->hPHA->prc_hys_cnt, STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES ) ) - { - hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_PHA; - move32(); - } - } - hStereoDmxEVS->hPHA->prev_prc = STEREO_DMX_EVS_PRC_PHA; - move32(); - } - - // if ( ( is_transient == 1 ) || ( hStereoDmxEVS->aux_dmx_energy[0] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[1] ) || ( hStereoDmxEVS->aux_dmx_energy[1] > STEREO_DMX_EVS_ILDS_EGY * hStereoDmxEVS->aux_dmx_energy[0] ) || ( ( hStereoDmxEVS->hPHA->p_curr_taps[0] == NULL ) && ( hStereoDmxEVS->hPHA->p_curr_taps[1] == NULL ) ) ) - test(); - test(); - test(); - test(); - IF( EQ_16( is_transient, 1 ) || - BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[0], hStereoDmxEVS->aux_dmx_energy_fx_e[0], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[1] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[1], 14 ) ) > 0 || - BASOP_Util_Cmp_Mant32Exp( hStereoDmxEVS->aux_dmx_energy_fx[1], hStereoDmxEVS->aux_dmx_energy_fx_e[1], Mpy_32_32( STEREO_DMX_EVS_ILDS_EGY_Q17, hStereoDmxEVS->aux_dmx_energy_fx[0] ), add( hStereoDmxEVS->aux_dmx_energy_fx_e[0], 14 ) ) > 0 || - ( ( hStereoDmxEVS->hPHA->p_curr_taps_fx[0] == NULL ) && ( hStereoDmxEVS->hPHA->p_curr_taps_fx[1] == NULL ) ) ) - { - hStereoDmxEVS->hPHA->curr_prc = STEREO_DMX_EVS_PRC_POC; - move32(); - hStereoDmxEVS->hPHA->prc_hys_cnt = 0; - move16(); - } - - IF( EQ_32( hStereoDmxEVS->hPHA->curr_prc, STEREO_DMX_EVS_PRC_POC ) ) - { - p_dmx_data = dmx_poc_data; - - IF( NE_32( curr_prc, hStereoDmxEVS->hPHA->curr_prc ) ) - { - fad_len = hStereoDmxEVS->hPHA->fad_len_prc; - move16(); - fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; - - FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len; ( n++, m-- ) ) - { - p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n] ); // Q26 - move32(); - p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m], dmx_pha_data[n] ) ); // Q26 - move32(); - } - } - } - ELSE - { - p_dmx_data = dmx_pha_data; - - IF( NE_32( curr_prc, hStereoDmxEVS->hPHA->curr_prc ) ) - { - fad_len = hStereoDmxEVS->hPHA->fad_len_prc; - move16(); - fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; - - FOR( ( n = 0, m = ( fad_len - 1 ) ); n < fad_len; ( n++, m-- ) ) - { - p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n] ); // Q26 - move32(); - p_dmx_data[n] = L_add( p_dmx_data[n], Mpy_32_32( fad_g[m], dmx_poc_data[n] ) ); // Q26 - move32(); - } - } - } - - Copy_Scale_sig32_16( p_dmx_data, data, n_samples, 5 ); // Q26->Q15 - - pop_wmops(); - -#endif return; } @@ -3517,12 +2882,10 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_16_Q0; move32(); -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_16; hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E; move32(); move16(); -#endif } ELSE IF( EQ_32( input_Fs, 32000 ) ) { @@ -3534,12 +2897,10 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_32_Q0; move32(); -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_32; hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E; move32(); move16(); -#endif } ELSE IF( EQ_32( input_Fs, 48000 ) ) { @@ -3551,12 +2912,10 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); hStereoDmxEVS->hPHA->crst_fctr_fx = STEREO_DMX_EVS_CRST_FCTR_48_Q0; move32(); -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA hStereoDmxEVS->hPHA->low_egy_thres_sgc = STEREO_DMX_EVS_SGC_LEGY_THRES_48; hStereoDmxEVS->hPHA->low_egy_thres_sgc_e = STEREO_DMX_EVS_SGC_LEGY_THRES_E; move32(); move16(); -#endif } ELSE { @@ -3565,10 +2924,6 @@ ivas_error stereo_dmx_evs_init_encoder_fx( hStereoDmxEVS->hPHA->pha_len = shr( len, 1 ); move16(); -#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA - hStereoDmxEVS->hPHA->init_frmCntr = 10; // (int16_t)(FRAMES_PER_SEC * 0.2f) - move16(); -#endif hStereoDmxEVS->hPHA->isd_rate_s_fx = 0; move32(); hStereoDmxEVS->hPHA->iccr_s_fx = 0; @@ -3619,7 +2974,6 @@ ivas_error stereo_dmx_evs_init_encoder_fx( // replaced below logic with table as it is same for all frame lengths Copy32( ipd_ff_Q31, hStereoDmxEVS->hPHA->ipd_ff_fx, STEREO_DMX_EVS_NB_SUBBAND_MAX ); -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA hStereoDmxEVS->hPHA->proc_pha = STEREO_DMX_EVS_PHA_IPD; hStereoDmxEVS->hPHA->force_poc = FALSE; move16(); @@ -3637,7 +2991,6 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); hStereoDmxEVS->hPHA->pha_ipd_chanswitch_allowed = 0; move16(); -#endif set32_fx( hStereoDmxEVS->hPHA->Pr_fx, MAX_32, STEREO_DMX_EVS_NB_SUBBAND_MAX ); set_zero_fx( hStereoDmxEVS->hPHA->Pi_fx, STEREO_DMX_EVS_NB_SUBBAND_MAX ); @@ -3689,36 +3042,8 @@ ivas_error stereo_dmx_evs_init_encoder_fx( hStereoDmxEVS->hPHA->prc_hys_cnt = 0; move16(); -#ifndef NONBE_FIX_947_STEREO_DMX_EVS_PHA - // hStereoDmxEVS->hPHA->fad_len_prc = (int16_t) ( STEREO_DMX_EVS_FADE_LEN_PRC * (float) input_Fs / 1000.0f ); - SWITCH( input_Fs ) - { - case 8000: - hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 8; - move16(); - BREAK; - case 16000: - hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 16; - move16(); - BREAK; - case 32000: - hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 32; - move16(); - BREAK; - case 48000: - hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 48; - move16(); - BREAK; - default: - IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid sample rate\n" ); - BREAK; - } - fad_len = hStereoDmxEVS->hPHA->fad_len_prc; - move16(); -#else fad_len = input_frame; move16(); -#endif fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; move32(); @@ -3742,7 +3067,6 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); } -#ifdef NONBE_FIX_947_STEREO_DMX_EVS_PHA hStereoDmxEVS->hPHA->dmx_poc_ener_fx = 0; move32(); @@ -3772,7 +3096,6 @@ ivas_error stereo_dmx_evs_init_encoder_fx( move16(); move16(); -#endif *hStereoDmxEVS_out = hStereoDmxEVS; -- GitLab From 4bbe1428b9e20dfa460cadde9808cd8ee21bbb21 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 27 May 2025 10:29:30 +0200 Subject: [PATCH 628/698] [cleanup] accept NONBE_FIX_947_STEREO_DMX_FADOPT --- lib_com/options.h | 1 - lib_enc/ivas_stereo_dmx_evs_fx.c | 35 -------------------------------- 2 files changed, 36 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 42a9dbd7e..b062055e1 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -114,7 +114,6 @@ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ -#define NONBE_FIX_947_STEREO_DMX_FADOPT /* Orange: Fading optimisation */ #define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ #define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ #define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index d06b98cc7..b0c95f8db 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -101,9 +101,7 @@ #define STEREO_DMX_EVS_POC_RENORM_SHIFT 3 #define STEREO_DMX_EVS_FAD_R 3 -#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT #define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */ -#endif #define STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 29491 // 0.9f #define STEREO_DMX_EVS_SGC_GR_S 32919 // 1.00461543f #define STEREO_DMX_EVS_SGC_GIR_S 32617 // 1/1.00461543f @@ -2138,11 +2136,7 @@ void stereo_dmx_evs_enc_fx( Word16 n; Word16 dmx_weight, corr; // Q15 -#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT Word16 k, m, pha_len, fad_len, sbfad_len; -#else - Word16 k, m, pha_len, fad_len; -#endif Word32 data_fx[CPE_CHANNELS][L_FRAME48k]; // Q16/Q11 @@ -2545,20 +2539,8 @@ void stereo_dmx_evs_enc_fx( ELSE { hPHA->n_fad_g = sub( input_frame, add( hPHA->n_fad_g, 1 ) ); -#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT hPHA->n_fad_cnt = 0; move16(); -#else - IF( EQ_16( is_transient, 1 ) ) - { - hPHA->n_fad_cnt = 0; - move16(); - } - ELSE - { - hPHA->n_fad_cnt = sub( n_fad_r, hPHA->n_fad_cnt ); - } -#endif } } ELSE IF( is_transient ) @@ -2579,7 +2561,6 @@ void stereo_dmx_evs_enc_fx( move16(); m_fad_g = sub( input_frame, add( n_fad_g, 1 ) ); -#ifdef NONBE_FIX_947_STEREO_DMX_FADOPT IF( EQ_16( n_fad_r, 1 ) ) { n_fad_cnt = 0; @@ -2645,22 +2626,6 @@ void stereo_dmx_evs_enc_fx( } } } -#else - FOR( n = 0; n < fad_len; n++ ) - { - p_dmx_data[n] = Mpy_32_32( p_dmx_data[n], fad_g[n_fad_g] ); // Q26; - p_dmx_data[n] = L_add_sat( p_dmx_data[n], Mpy_32_32( fad_g[m_fad_g], p_dmx_data_fo[n] ) ); // Q26 - - n_fad_cnt = add( n_fad_cnt, 1 ); - IF( GE_16( n_fad_cnt, n_fad_r ) ) - { - n_fad_cnt = 0; - move16(); - n_fad_g = add( n_fad_g, 1 ); - m_fad_g = sub( m_fad_g, 1 ); - } - } -#endif hPHA->n_fad_g = n_fad_g; hPHA->n_fad_cnt = n_fad_cnt; -- GitLab From f3a303770558fc377782ece12350ec8bfe2a600a Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 27 May 2025 10:29:33 +0200 Subject: [PATCH 629/698] [cleanup] accept NONBE_FIX_982_OMASA_DELAY_COMP_5MS --- lib_com/ivas_cnst.h | 2 - lib_com/options.h | 1 - lib_dec/ivas_ism_renderer_fx.c | 9 ----- lib_dec/ivas_jbm_dec_fx.c | 2 - lib_dec/ivas_omasa_dec_fx.c | 37 ------------------- .../ivas_dirac_dec_binaural_functions_fx.c | 4 -- 6 files changed, 55 deletions(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index cb52138f6..36f0bf571 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1318,9 +1318,7 @@ enum #define MASA_BIT_REDUCT_PARAM 10 #define MASA_MAXIMUM_TWO_DIR_BANDS 24 #define NBITS_HR_COH 4 -#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS #define OMASA_TDREND_MATCHING_GAIN_FX 26026 -#endif #define MASA_INV_ANGLE_AT_EQUATOR_DEG_Q30 (1453366656l) diff --git a/lib_com/options.h b/lib_com/options.h index b062055e1..01070b127 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -110,7 +110,6 @@ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ -#define NONBE_FIX_982_OMASA_DELAY_COMP_5MS /* FhG : issue #982 : 5ms and 20ms output different for OMASA */ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ diff --git a/lib_dec/ivas_ism_renderer_fx.c b/lib_dec/ivas_ism_renderer_fx.c index c3904d136..31fafde5a 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -611,15 +611,6 @@ void ivas_omasa_separate_object_render_jbm_fx( FOR( obj = 0; obj < num_objects; obj++ ) { /* Delay the signal to match CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */ -#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - IF( slots_rendered == 0 ) - { - Word16 tcBufferSize; - - tcBufferSize = i_mult( hSpatParamRendCom->num_slots, hSpatParamRendCom->slot_size ); - delay_signal32_fx( input_fx[obj], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer_fx[obj], st_ivas->hMasaIsmData->delayBuffer_size ); - } -#endif offsetSamples = 0; move16(); diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index e80e24226..c184ef8c2 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1731,7 +1731,6 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( ivas_ism_dec_digest_tc_fx( st_ivas ); } -#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_DIRAC ) { int16_t num_objects; @@ -1755,7 +1754,6 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( delay_signal32_fx( st_ivas->hTcBuffer->tc_fx[CPE_CHANNELS + n], st_ivas->hTcBuffer->n_samples_available, st_ivas->hMasaIsmData->delayBuffer_fx[n], st_ivas->hMasaIsmData->delayBuffer_size ); } } -#endif } ELSE IF( EQ_16( st_ivas->ivas_format, MC_FORMAT ) ) { diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index 4bfc6e13e..031ba4343 100644 --- a/lib_dec/ivas_omasa_dec_fx.c +++ b/lib_dec/ivas_omasa_dec_fx.c @@ -45,9 +45,6 @@ * Local constants *------------------------------------------------------------------------*/ -#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS -#define OMASA_TDREND_MATCHING_GAIN_FX 26026 -#endif /*-------------------------------------------------------------------* * ivas_omasa_data_open() @@ -702,38 +699,26 @@ void ivas_omasa_dirac_rend_jbm_fx( Word16 n; Word32 data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; -#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS test(); if ( !st_ivas->hDecoderConfig->Opt_tsm ) { *nSamplesRendered = min( nSamplesAsked, st_ivas->hTcBuffer->n_samples_available ); -#endif test(); IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_MASA_ONE_OBJ ) || EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_PARAM_ONE_OBJ ) ) { -#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS Copy32( &output_f[CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[0], *nSamplesRendered ); -#else - Copy32( output_f[CPE_CHANNELS], data_separated_objects[0], nSamplesAsked ); -#endif } ELSE { FOR( n = 0; n < st_ivas->nchan_ism; n++ ) { -#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS Copy32( &output_f[n + CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[n], *nSamplesRendered ); -#else - Copy32( output_f[n + CPE_CHANNELS], data_separated_objects[n], nSamplesAsked ); -#endif } } -#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS } -#endif subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; @@ -774,14 +759,8 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( ) { Word16 n; -#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - Word16 gain_fx = OMASA_TDREND_MATCHING_GAIN_FX; // Q15 -#endif move16(); ivas_error error; -#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - Word32 *tc_local_fx[MAX_TRANSPORT_CHANNELS]; -#endif Word32 *p_sepobj_fx[MAX_NUM_OBJECTS]; // Q11 Word32 data_separated_objects_fx[MAX_NUM_OBJECTS][L_FRAME48k]; move16(); @@ -798,22 +777,6 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( } /* Delay the object signals to match the CLDFB delay. Delay the whole buffer with the first rendering call of the stretched buffer. */ -#ifndef NONBE_FIX_982_OMASA_DELAY_COMP_5MS - IF( st_ivas->hSpatParamRendCom->slots_rendered == 0 ) - { - Word16 tcBufferSize; - - tcBufferSize = imult1616( st_ivas->hSpatParamRendCom->num_slots, st_ivas->hSpatParamRendCom->slot_size ); - - FOR( n = 0; n < st_ivas->nchan_ism; n++ ) - { - tc_local_fx[n] = st_ivas->hTcBuffer->tc_fx[n + 2]; // Q11 - v_multc_fixed_16( tc_local_fx[n], gain_fx, tc_local_fx[n], tcBufferSize ); - - delay_signal32_fx( tc_local_fx[n], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer_fx[n], st_ivas->hMasaIsmData->delayBuffer_size ); - } - } -#endif ivas_dirac_dec_binaural_render_fx( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, nchan_transport, output_fx ); diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 1545ecd0c..79f506fd4 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -3244,12 +3244,8 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( q_tmp_sq = sub( 31, exp ); IF( EQ_16( ivas_format, MASA_ISM_FORMAT ) ) { -#ifdef NONBE_FIX_982_OMASA_DELAY_COMP_5MS Word32 gainfactor_fx = L_shl( (Word32) OMASA_TDREND_MATCHING_GAIN_FX, Q16 ); // constant in Q31 as Word32 gainFactor_fx = Mpy_32_32( gainfactor_fx, tmp1 ); // 1705746262 = 0.7943f in Q31 -#else - gainFactor_fx = Mpy_32_32( 1705746262, tmp1 ); // 1705746262 = 0.7943f in Q31 -#endif } ELSE { -- GitLab From efbc15fddd07ea60c11b5e6c6346012a7d6ccb83 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 27 May 2025 10:30:13 +0200 Subject: [PATCH 630/698] formatting --- lib_dec/ivas_omasa_dec_fx.c | 1 - lib_enc/ivas_stereo_dmx_evs_fx.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index 031ba4343..9d8b43515 100644 --- a/lib_dec/ivas_omasa_dec_fx.c +++ b/lib_dec/ivas_omasa_dec_fx.c @@ -717,7 +717,6 @@ void ivas_omasa_dirac_rend_jbm_fx( Copy32( &output_f[n + CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[n], *nSamplesRendered ); } } - } diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index b0c95f8db..08dc2da2f 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -100,8 +100,8 @@ #define STEREO_DMX_EVS_POC_RENORM_TH 33554432 // 65536 << 9 #define STEREO_DMX_EVS_POC_RENORM_SHIFT 3 -#define STEREO_DMX_EVS_FAD_R 3 -#define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */ +#define STEREO_DMX_EVS_FAD_R 3 +#define STEREO_DMX_EVS_FAD_IR 10923 /* 1/3 in Q15 */ #define STEREO_DMX_EVS_SGC_EGY_FORGETTING_Q15 29491 // 0.9f #define STEREO_DMX_EVS_SGC_GR_S 32919 // 1.00461543f #define STEREO_DMX_EVS_SGC_GIR_S 32617 // 1/1.00461543f -- GitLab From 73cf73e918b255999d4c863453905925523d25ad Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 27 May 2025 15:25:44 +0530 Subject: [PATCH 631/698] Fix for wrong q-updation for LEtot in analy_sp, ltv crash fix --- lib_com/swb_tbe_com_fx.c | 4 ++-- lib_enc/analy_sp_fx.c | 2 +- lib_enc/ivas_core_pre_proc_front_fx.c | 2 +- lib_enc/ivas_front_vad_fx.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib_com/swb_tbe_com_fx.c b/lib_com/swb_tbe_com_fx.c index 08bbd6362..96d07e7ef 100644 --- a/lib_com/swb_tbe_com_fx.c +++ b/lib_com/swb_tbe_com_fx.c @@ -5971,7 +5971,7 @@ void non_linearity_ivas_fx( } - IF( GT_16( max_val, shl( 1, Q_inp ) ) ) + IF( GT_16( max_val, shl_sat( 1, Q_inp ) ) ) { exp = norm_s( max_val ); tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ @@ -6045,7 +6045,7 @@ void non_linearity_ivas_fx( max_val = s_max( max_val, tmp ); } - IF( GT_16( max_val, shl( 1, Q_inp ) ) ) + IF( GT_16( max_val, shl_sat( 1, Q_inp ) ) ) { exp = norm_s( max_val ); tmp = div_s( shl( 1, sub( 14, exp ) ), max_val ); /* Q(29-exp-Q_inp) */ diff --git a/lib_enc/analy_sp_fx.c b/lib_enc/analy_sp_fx.c index dc59ec752..7062a3090 100644 --- a/lib_enc/analy_sp_fx.c +++ b/lib_enc/analy_sp_fx.c @@ -860,7 +860,7 @@ static void ivas_find_enr( * Find the total energy over the input bandwidth *-----------------------------------------------------------------*/ - etot = *LEtot; // *q_band + etot = *LEtot; // *q_band+1 move64(); FOR( i = min_band; i <= max_band; i++ ) { diff --git a/lib_enc/ivas_core_pre_proc_front_fx.c b/lib_enc/ivas_core_pre_proc_front_fx.c index f1e6b2193..be208296d 100644 --- a/lib_enc/ivas_core_pre_proc_front_fx.c +++ b/lib_enc/ivas_core_pre_proc_front_fx.c @@ -1453,7 +1453,7 @@ ivas_error pre_proc_front_ivas_fx( test(); IF( lr_vad_enabled && st->idchan == 0 ) { - ivas_long_enr_fx( st, -1, localVAD_HE_SAD, high_lpn_flag, hCPE->hFrontVad, CPE_CHANNELS, localVAD_HE_SAD_LR, Etot_LR_fx ); + ivas_long_enr_fx( st, -256 /*-1 q8*/, localVAD_HE_SAD, high_lpn_flag, hCPE->hFrontVad, CPE_CHANNELS, localVAD_HE_SAD_LR, Etot_LR_fx ); Copy32( fr_bands_LR_fx[0] + NB_BANDS, hCPE->hFrontVad[0]->hNoiseEst->enrO_fx, NB_BANDS ); // fr_bands_LR_fx_q hCPE->hFrontVad[0]->hNoiseEst->q_enrO = fr_bands_LR_fx_q[0]; diff --git a/lib_enc/ivas_front_vad_fx.c b/lib_enc/ivas_front_vad_fx.c index f2b3adece..a4baf6a00 100644 --- a/lib_enc/ivas_front_vad_fx.c +++ b/lib_enc/ivas_front_vad_fx.c @@ -758,7 +758,7 @@ ivas_error front_vad_spar_fx( ivas_smc_gmm_fx( st, NULL, localVAD_HE_SAD[0], Etot_fx_0, lsp_new_fx, cor_map_sum_fx, epsP_fx, PS_fx, non_sta_fx, relE_fx, &high_lpn_flag, flag_spitch, Qfact_PS, Q_esp, hSpMusClas->past_PS_Q ); /* long-term energy update */ - ivas_long_enr_fx( st, -1, localVAD_HE_SAD[0], high_lpn_flag, &hFrontVad, 1, localVAD_HE_SAD, Etot_fx ); + ivas_long_enr_fx( st, -256 /*-1 q8*/, localVAD_HE_SAD[0], high_lpn_flag, &hFrontVad, 1, localVAD_HE_SAD, Etot_fx ); /* increase ini_frame counter */ hFrontVad->ini_frame = s_min( add( hFrontVad->ini_frame, 1 ), MAX_FRAME_COUNTER ); /* Q0 */ -- GitLab From c5e06f1c533114862683b701a40c4687cbe821c8 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 27 May 2025 12:08:32 +0200 Subject: [PATCH 632/698] Fixed point data type changes --- lib_rend/ivas_reverb_utils_fx.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 15fb2ee25..dabbcfd82 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -119,7 +119,16 @@ ivas_error ivas_reverb_prepare_cldfb_params( ivas_reverb_interpolate_acoustic_data_fx( pInput_params->nBands, pInput_params->pFc_input_fx, pInput_params->pAcoustic_rt60_fx, pInput_params->pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX, fc_fx, pOutput_t60_fx, pOutput_ene_fx, pOutput_t60_e, pOutput_ene_e ); - + const Word16 input_table_size, + const Word32 *pInput_fc, // input in Q16 + const Word32 *pInput_t60, // input in Q26 + const Word32 *pInput_dsr, // input in Q30 + const Word16 output_table_size, + const Word32 *pOutput_fc, // Q16 + Word32 *pOutput_t60, // pOutput_t60_e + Word32 *pOutput_dsr, // pOutput_dsr_e + Word16 *pOutput_t60_e, // output e + Word16 *pOutput_dsr_e // output e /* adjust DSR for the delay difference */ delay_diff_fx = L_sub( pInput_params->inputPreDelay_fx, pInput_params->acousticPreDelay_fx ); @@ -282,8 +291,8 @@ static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties( *-----------------------------------------------------------------------------------------*/ static void ivas_reverb_set_energies( - const float *avg_pwr_l, - const float *avg_pwr_r, + const Word32 *avg_pwr_l, + const Word32 *avg_pwr_r, #else /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_get_fastconv_hrtf_set_energies() @@ -299,16 +308,16 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const int16_t use_brir, #endif const int32_t sampling_rate, - float *avg_pwr_left, - float *avg_pwr_right ) + Word32 *avg_pwr_left, + Word32 *avg_pwr_right ) { int16_t freq_idx; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES float avg_pwr_left_fft[FFT_SPECTRUM_SIZE]; float avg_pwr_right_fft[FFT_SPECTRUM_SIZE]; #endif - float input_fc[FFT_SPECTRUM_SIZE]; - float output_fc[CLDFB_NO_CHANNELS_MAX]; + Word32 input_fc[FFT_SPECTRUM_SIZE]; + Word32 output_fc[CLDFB_NO_CHANNELS_MAX]; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif -- GitLab From dfc2e7fbc1871252c5226a0a7bcc6e99a8f90bac Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 27 May 2025 12:45:18 +0200 Subject: [PATCH 633/698] apply clang-format --- lib_com/cldfb.c | 24 ++++++++++++------------ lib_dec/acelp_core_dec_fx.c | 2 +- lib_rend/lib_rend.c | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib_com/cldfb.c b/lib_com/cldfb.c index 211feb305..bf832b640 100644 --- a/lib_com/cldfb.c +++ b/lib_com/cldfb.c @@ -417,8 +417,8 @@ void cldfbAnalysis_ts_fx( rBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( rr12_fx, rot_vctr_re_fx[k] ), ri12_fx, rot_vctr_im_fx[k] ); // q - 3 rBuffer_fx[2 * k + 1] = Madd_32_32( Mpy_32_32( rr12_fx, rot_vctr_im_fx[k] ), ri12_fx, rot_vctr_re_fx[k] ); // q - 3 #else /* OPT_AVOID_STATE_BUF_RESCALE */ - rBuffer_fx[2 * k] = L_sub( Mpy_32_32( rr12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_im_fx[k] ) ); // q - 3 - rBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( rr12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_re_fx[k] ) ); // q - 3 + rBuffer_fx[2 * k] = L_sub( Mpy_32_32( rr12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_im_fx[k] ) ); // q - 3 + rBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( rr12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_re_fx[k] ) ); // q - 3 #endif /* OPT_AVOID_STATE_BUF_RESCALE */ move32(); move32(); @@ -431,8 +431,8 @@ void cldfbAnalysis_ts_fx( iBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( ir12_fx, rot_vctr_re_fx[k] ), ii12_fx, rot_vctr_im_fx[k] ); // q - 3 iBuffer_fx[2 * k + 1] = Madd_32_32( Mpy_32_32( ir12_fx, rot_vctr_im_fx[k] ), ii12_fx, rot_vctr_re_fx[k] ); // q - 3 #else /* OPT_AVOID_STATE_BUF_RESCALE */ - iBuffer_fx[2 * k] = L_sub( Mpy_32_32( ir12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_im_fx[k] ) ); // q - 3 - iBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( ir12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_re_fx[k] ) ); // q - 3 + iBuffer_fx[2 * k] = L_sub( Mpy_32_32( ir12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_im_fx[k] ) ); // q - 3 + iBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( ir12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_re_fx[k] ) ); // q - 3 #endif /* OPT_AVOID_STATE_BUF_RESCALE */ move32(); move32(); @@ -478,8 +478,8 @@ void cldfbAnalysis_ts_fx( rBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( rr12_fx, rot_vctr_re_fx[k] ), ri12_fx, rot_vctr_im_fx[k] ); // q - 3 rBuffer_fx[2 * k + 1] = Madd_32_32( Mpy_32_32( rr12_fx, rot_vctr_im_fx[k] ), ri12_fx, rot_vctr_re_fx[k] ); // q - 3 #else /* OPT_AVOID_STATE_BUF_RESCALE */ - rBuffer_fx[2 * k] = L_sub( Mpy_32_32( rr12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_im_fx[k] ) ); // q - 3 - rBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( rr12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_re_fx[k] ) ); // q - 3 + rBuffer_fx[2 * k] = L_sub( Mpy_32_32( rr12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_im_fx[k] ) ); // q - 3 + rBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( rr12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ri12_fx, rot_vctr_re_fx[k] ) ); // q - 3 #endif /* OPT_AVOID_STATE_BUF_RESCALE */ move32(); move32(); @@ -492,8 +492,8 @@ void cldfbAnalysis_ts_fx( iBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( ir12_fx, rot_vctr_re_fx[k] ), ii12_fx, rot_vctr_im_fx[k] ); // q - 3 iBuffer_fx[2 * k + 1] = Madd_32_32( Mpy_32_32( ir12_fx, rot_vctr_im_fx[k] ), ii12_fx, rot_vctr_re_fx[k] ); // q - 3 #else /* OPT_AVOID_STATE_BUF_RESCALE */ - iBuffer_fx[2 * k] = L_sub( Mpy_32_32( ir12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_im_fx[k] ) ); // q - 3 - iBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( ir12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_re_fx[k] ) ); // q - 3 + iBuffer_fx[2 * k] = L_sub( Mpy_32_32( ir12_fx, rot_vctr_re_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_im_fx[k] ) ); // q - 3 + iBuffer_fx[2 * k + 1] = L_add( Mpy_32_32( ir12_fx, rot_vctr_im_fx[k] ), Mpy_32_32( ii12_fx, rot_vctr_re_fx[k] ) ); // q - 3 #endif /* OPT_AVOID_STATE_BUF_RESCALE */ move32(); move32(); @@ -562,8 +562,8 @@ void cldfbAnalysis_ts_fx( imagBuffer_fx[2 * k] = Msub_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ); // q - 5 imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = Madd_32_32( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ); // q - 5 #else /* OPT_AVOID_STATE_BUF_RESCALE */ - imagBuffer_fx[2 * k] = L_sub( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), Mpy_32_32( iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ) ); // q - 5 - imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = L_add( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), Mpy_32_32( iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ) ); // q - 5 + imagBuffer_fx[2 * k] = L_sub( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_re_fx[k] ), Mpy_32_32( iBuffer_fx[2 * k + 1], rot_vctr_im_fx[k] ) ); // q - 5 + imagBuffer_fx[( M1 - 1 ) - ( k * 2 )] = L_add( Mpy_32_32( iBuffer_fx[2 * k], rot_vctr_im_fx[k] ), Mpy_32_32( iBuffer_fx[2 * k + 1], rot_vctr_re_fx[k] ) ); // q - 5 #endif /* OPT_AVOID_STATE_BUF_RESCALE */ move32(); move32(); @@ -589,8 +589,8 @@ void cldfbAnalysis_ts_fx( cplx_aux_fx = Msub_32_32( Mpy_32_32( realBuffer_fx[k], rot_vctr_delay_re_fx[k] ), imagBuffer_fx[k], rot_vctr_delay_im_fx[k] ); // q - 5 imagBuffer_fx[k] = Madd_32_32( Mpy_32_32( realBuffer_fx[k], rot_vctr_delay_im_fx[k] ), imagBuffer_fx[k], rot_vctr_delay_re_fx[k] ); // q - 5 #else /* OPT_AVOID_STATE_BUF_RESCALE */ - cplx_aux_fx = L_sub( Mpy_32_32( realBuffer_fx[k], rot_vctr_delay_re_fx[k] ), Mpy_32_32( imagBuffer_fx[k], rot_vctr_delay_im_fx[k] ) ); // q - 5 - imagBuffer_fx[k] = L_add( Mpy_32_32( realBuffer_fx[k], rot_vctr_delay_im_fx[k] ), Mpy_32_32( imagBuffer_fx[k], rot_vctr_delay_re_fx[k] ) ); // q - 5 + cplx_aux_fx = L_sub( Mpy_32_32( realBuffer_fx[k], rot_vctr_delay_re_fx[k] ), Mpy_32_32( imagBuffer_fx[k], rot_vctr_delay_im_fx[k] ) ); // q - 5 + imagBuffer_fx[k] = L_add( Mpy_32_32( realBuffer_fx[k], rot_vctr_delay_im_fx[k] ), Mpy_32_32( imagBuffer_fx[k], rot_vctr_delay_re_fx[k] ) ); // q - 5 #endif /* OPT_AVOID_STATE_BUF_RESCALE */ realBuffer_fx[k] = cplx_aux_fx; move32(); diff --git a/lib_dec/acelp_core_dec_fx.c b/lib_dec/acelp_core_dec_fx.c index 80d56b2bc..2fff712f9 100644 --- a/lib_dec/acelp_core_dec_fx.c +++ b/lib_dec/acelp_core_dec_fx.c @@ -2228,7 +2228,7 @@ ivas_error acelp_core_dec_fx( #ifdef OPT_STEREO_32KBPS_V1 scale_sig32( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( Q_real, Q11 ) ); // Q10 - > (Q_real-1) #else /* OPT_STEREO_32KBPS_V1 */ - scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1) + scale_sig32_r( st->cldfbSyn->cldfb_state_fx, st->cldfbSyn->p_filter_length, sub( sub( Q_real, 1 ), Q10 ) ); //(Q_real - 1) #endif /* OPT_STEREO_32KBPS_V1 */ #endif /* OPT_AVOID_STATE_BUF_RESCALE */ diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index d4d38f405..4276b8146 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -6826,9 +6826,9 @@ static ivas_error renderLfeToBinaural_fx( move32(); #ifdef VEC_ARITH_OPT_v1 v_add_fixed_no_hdrm( writePtr, tmpLfeBuffer, writePtr, frame_size ); /* Q(out_q) */ -#else /* VEC_ARITH_OPT_v1 */ +#else /* VEC_ARITH_OPT_v1 */ v_add_fixed( writePtr, tmpLfeBuffer, writePtr, frame_size, 0 ); /* Q(out_q) */ -#endif /* VEC_ARITH_OPT_v1 */ +#endif /* VEC_ARITH_OPT_v1 */ } #endif -- GitLab From 8f822fd08d807e24616497295fb206587325de62 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 27 May 2025 14:59:03 +0200 Subject: [PATCH 634/698] fix compilation --- lib_com/ivas_limiter_fx.c | 2 +- lib_com/ivas_rom_com.c | 821 --------------------------- lib_com/ivas_rom_com.h | 2 - lib_com/ivas_rom_com_fx.c | 818 ++++++++++++++++++++++++++ lib_com/ivas_rom_com_fx.h | 6 + lib_com/tools_fx.c | 20 - lib_dec/ivas_dirac_dec_fx.c | 18 +- lib_dec/ivas_jbm_dec_fx.c | 8 +- lib_enc/ivas_stereo_dft_enc_itd_fx.c | 6 - lib_enc/ivas_stereo_dmx_evs_fx.c | 1 + lib_rend/ivas_rom_rend.h | 2 - lib_rend/ivas_rom_rend_fx.c | 819 -------------------------- 12 files changed, 847 insertions(+), 1676 deletions(-) diff --git a/lib_com/ivas_limiter_fx.c b/lib_com/ivas_limiter_fx.c index 4250d7a7a..60982f3f2 100644 --- a/lib_com/ivas_limiter_fx.c +++ b/lib_com/ivas_limiter_fx.c @@ -36,7 +36,7 @@ #include "prot_fx.h" #include "ivas_prot_rend_fx.h" #include "ivas_rom_rend.h" -#include "ivas_rom_com.h" +#include "ivas_rom_com_fx.h" #include "wmc_auto.h" #include #include "ivas_prot_fx.h" diff --git a/lib_com/ivas_rom_com.c b/lib_com/ivas_rom_com.c index c7977001b..5d4de33b4 100644 --- a/lib_com/ivas_rom_com.c +++ b/lib_com/ivas_rom_com.c @@ -52,827 +52,6 @@ const Word32 ivas_brate_tbl[SIZE_IVAS_BRATE_TBL] = IVAS_192k, IVAS_256k, IVAS_384k, IVAS_512k }; -/*----------------------------------------------------------------------------------* - * IVAS limiter table - *----------------------------------------------------------------------------------*/ -const Word32 release_cnst_table[4][201] = // Q31 -{ - { - 1913946752, - 1919716352, - 1925351680, - 1930855552, - 1936230784, - 1941479808, - 1946605312, - 1951609728, - 1956495744, - 1961265792, - 1965922304, - 1970467584, - 1974904320, - 1979234560, - 1983460736, - 1987585024, - 1991609856, - 1995537280, - 1999369344, - 2003108480, - 2006756480, - 2010315520, - 2013787520, - 2017174528, - 2020478464, - 2023701248, - 2026844672, - 2029910656, - 2032900992, - 2035817344, - 2038661376, - 2041435008, - 2044139648, - 2046777088, - 2049348864, - 2051856384, - 2054301440, - 2056685312, - 2059009536, - 2061275520, - 2063484672, - 2065638272, - 2067737856, - 2069784448, - 2071779584, - 2073724416, - 2075620096, - 2077467904, - 2079268992, - 2081024512, - 2082735488, - 2084403200, - 2086028416, - 2087612544, - 2089156352, - 2090660864, - 2092127104, - 2093555968, - 2094948480, - 2096305408, - 2097627776, - 2098916352, - 2100172032, - 2101395584, - 2102587776, - 2103749504, - 2104881408, - 2105984384, - 2107059072, - 2108106112, - 2109126400, - 2110120448, - 2111088896, - 2112032512, - 2112951808, - 2113847552, - 2114720128, - 2115570304, - 2116398592, - 2117205504, - 2117991552, - 2118757504, - 2119503616, - 2120230400, - 2120938496, - 2121628288, - 2122300288, - 2122954880, - 2123592576, - 2124213760, - 2124818944, - 2125408384, - 2125982592, - 2126541952, - 2127086848, - 2127617664, - 2128134656, - 2128638336, - 2129128832, - 2129606784, - 2130072192, - 2130525568, - 2130967296, - 2131397376, - 2131816448, - 2132224640, - 2132622080, - 2133009408, - 2133386496, - 2133753856, - 2134111744, - 2134460288, - 2134799744, - 2135130368, - 2135452416, - 2135766144, - 2136071680, - 2136369152, - 2136659072, - 2136941312, - 2137216256, - 2137484160, - 2137744896, - 2137998976, - 2138246400, - 2138487424, - 2138722176, - 2138950656, - 2139173376, - 2139390208, - 2139601408, - 2139807104, - 2140007424, - 2140202624, - 2140392576, - 2140577664, - 2140758016, - 2140933504, - 2141104512, - 2141271040, - 2141433216, - 2141591168, - 2141745024, - 2141894912, - 2142040832, - 2142182912, - 2142321408, - 2142456192, - 2142587392, - 2142715264, - 2142839808, - 2142961152, - 2143079296, - 2143194240, - 2143306240, - 2143415424, - 2143521664, - 2143625216, - 2143725952, - 2143824128, - 2143919744, - 2144012800, - 2144103424, - 2144191744, - 2144277760, - 2144361472, - 2144443136, - 2144522496, - 2144599936, - 2144675200, - 2144748544, - 2144820096, - 2144889600, - 2144957440, - 2145023488, - 2145087744, - 2145150336, - 2145211264, - 2145270656, - 2145328512, - 2145384832, - 2145439616, - 2145493120, - 2145545088, - 2145595776, - 2145645056, - 2145693184, - 2145739904, - 2145785472, - 2145829888, - 2145873152, - 2145915136, - 2145956224, - 2145996032, - 2146034944, - 2146072832, - 2146109696, - 2146145664, - 2146180608, - 2146214656, - 2146247808, - }, - { - 2027355264, - 2030408704, - 2033386624, - 2036290944, - 2039123328, - 2041885440, - 2044578944, - 2047205376, - 2049766528, - 2052263680, - 2054698496, - 2057072384, - 2059387008, - 2061643520, - 2063843328, - 2065987968, - 2068078720, - 2070116864, - 2072103552, - 2074040192, - 2075927936, - 2077767936, - 2079561472, - 2081309568, - 2083013376, - 2084673920, - 2086292352, - 2087869696, - 2089406976, - 2090905216, - 2092365184, - 2093788032, - 2095174528, - 2096525824, - 2097842432, - 2099125632, - 2100375808, - 2101594240, - 2102781312, - 2103938048, - 2105065216, - 2106163456, - 2107233536, - 2108276096, - 2109292032, - 2110281728, - 2111246080, - 2112185728, - 2113101056, - 2113992960, - 2114861824, - 2115708288, - 2116532992, - 2117336448, - 2118119168, - 2118881792, - 2119624704, - 2120348416, - 2121053440, - 2121740288, - 2122409344, - 2123061120, - 2123696128, - 2124314624, - 2124917120, - 2125504128, - 2126075776, - 2126632832, - 2127175296, - 2127703808, - 2128218624, - 2128720000, - 2129208448, - 2129684352, - 2130147712, - 2130599168, - 2131038976, - 2131467264, - 2131884416, - 2132290816, - 2132686592, - 2133072256, - 2133447680, - 2133813504, - 2134169856, - 2134516864, - 2134854784, - 2135184000, - 2135504640, - 2135816960, - 2136121216, - 2136417536, - 2136706048, - 2136987136, - 2137260928, - 2137527552, - 2137787264, - 2138040192, - 2138286592, - 2138526464, - 2138760192, - 2138987776, - 2139209472, - 2139425408, - 2139635712, - 2139840512, - 2140039936, - 2140234240, - 2140423424, - 2140607744, - 2140787200, - 2140962048, - 2141132288, - 2141298048, - 2141459584, - 2141616896, - 2141769984, - 2141919232, - 2142064512, - 2142205952, - 2142343808, - 2142478080, - 2142608768, - 2142736128, - 2142860032, - 2142980864, - 2143098368, - 2143212928, - 2143324544, - 2143433088, - 2143538944, - 2143641984, - 2143742336, - 2143840000, - 2143935232, - 2144027904, - 2144118144, - 2144206080, - 2144291712, - 2144375168, - 2144456320, - 2144535424, - 2144612480, - 2144687488, - 2144760448, - 2144831616, - 2144900992, - 2144968448, - 2145034112, - 2145098112, - 2145160448, - 2145221248, - 2145280256, - 2145337856, - 2145393920, - 2145448576, - 2145501696, - 2145553536, - 2145603968, - 2145653120, - 2145700992, - 2145747456, - 2145792896, - 2145837056, - 2145880064, - 2145922048, - 2145962880, - 2146002560, - 2146041344, - 2146078976, - 2146115712, - 2146151424, - 2146186240, - 2146220160, - 2146253184, - 2146285312, - 2146316672, - 2146347136, - 2146376832, - 2146405760, - 2146433920, - 2146461440, - 2146488192, - 2146514176, - 2146539520, - 2146564224, - 2146588160, - 2146611584, - 2146634368, - 2146656640, - 2146678272, - 2146699264, - 2146719744, - 2146739712, - 2146759168, - 2146778112, - 2146796544, - 2146814464, - 2146832000, - 2146849024, - 2146865664, - }, - { - 2086555136, - 2088125824, - 2089656576, - 2091148416, - 2092602240, - 2094018944, - 2095399680, - 2096745088, - 2098056192, - 2099333888, - 2100578816, - 2101792000, - 2102974080, - 2104125824, - 2105248128, - 2106341760, - 2107407232, - 2108445440, - 2109456896, - 2110442496, - 2111402624, - 2112338176, - 2113249664, - 2114137728, - 2115002880, - 2115845760, - 2116666880, - 2117466880, - 2118246272, - 2119005568, - 2119745280, - 2120465920, - 2121167872, - 2121851776, - 2122517888, - 2123166976, - 2123799168, - 2124414976, - 2125014912, - 2125599360, - 2126168704, - 2126723200, - 2127263360, - 2127789568, - 2128302208, - 2128801408, - 2129287808, - 2129761536, - 2130222976, - 2130672512, - 2131110272, - 2131536768, - 2131952128, - 2132356736, - 2132750848, - 2133134720, - 2133508736, - 2133872896, - 2134227584, - 2134573184, - 2134909696, - 2135237504, - 2135556736, - 2135867648, - 2136170624, - 2136465536, - 2136752896, - 2137032832, - 2137305344, - 2137570816, - 2137829376, - 2138081280, - 2138326528, - 2138565504, - 2138798080, - 2139024768, - 2139245440, - 2139460480, - 2139669888, - 2139873792, - 2140072320, - 2140265856, - 2140454144, - 2140637696, - 2140816384, - 2140990464, - 2141159936, - 2141325056, - 2141485824, - 2141642368, - 2141794944, - 2141943424, - 2142088064, - 2142228992, - 2142366208, - 2142499840, - 2142630016, - 2142756736, - 2142880128, - 2143000448, - 2143117440, - 2143231488, - 2143342592, - 2143450752, - 2143556096, - 2143658624, - 2143758592, - 2143855872, - 2143950592, - 2144043008, - 2144132864, - 2144220416, - 2144305664, - 2144388608, - 2144469504, - 2144548224, - 2144624896, - 2144699648, - 2144772352, - 2144843264, - 2144912256, - 2144979328, - 2145044864, - 2145108480, - 2145170560, - 2145231104, - 2145289856, - 2145347200, - 2145403008, - 2145457408, - 2145510400, - 2145561984, - 2145612160, - 2145661056, - 2145708672, - 2145755136, - 2145800192, - 2145844224, - 2145887104, - 2145928832, - 2145969408, - 2146008960, - 2146047616, - 2146085120, - 2146121600, - 2146157184, - 2146191872, - 2146225664, - 2146258560, - 2146290560, - 2146321792, - 2146352128, - 2146381696, - 2146410496, - 2146438528, - 2146465920, - 2146492416, - 2146518400, - 2146543616, - 2146568192, - 2146592128, - 2146615424, - 2146638080, - 2146660224, - 2146681728, - 2146702720, - 2146723072, - 2146743040, - 2146762368, - 2146781184, - 2146799616, - 2146817408, - 2146834816, - 2146851840, - 2146868352, - 2146884352, - 2146900096, - 2146915328, - 2146930176, - 2146944640, - 2146958720, - 2146972416, - 2146985856, - 2146998784, - 2147011456, - 2147023872, - 2147035904, - 2147047552, - 2147058944, - 2147070080, - 2147080832, - 2147091456, - 2147101696, - 2147111680, - 2147121408, - 2147130880, - 2147140096, - 2147149056, - 2147157760, - 2147166336, - 2147174656, - }, - { - 2106670080, - 2107727232, - 2108757120, - 2109760640, - 2110738432, - 2111691008, - 2112619136, - 2113523328, - 2114404352, - 2115262592, - 2116098816, - 2116913408, - 2117707136, - 2118480256, - 2119233536, - 2119967360, - 2120682240, - 2121378688, - 2122057088, - 2122717952, - 2123361792, - 2123988992, - 2124599936, - 2125195136, - 2125774848, - 2126339584, - 2126889728, - 2127425536, - 2127947520, - 2128456064, - 2128951296, - 2129433856, - 2129903744, - 2130361600, - 2130807424, - 2131241728, - 2131664768, - 2132076928, - 2132478208, - 2132869248, - 2133250048, - 2133620992, - 2133982208, - 2134334080, - 2134676864, - 2135010688, - 2135335936, - 2135652608, - 2135961088, - 2136261504, - 2136554112, - 2136839168, - 2137116800, - 2137387136, - 2137650560, - 2137907072, - 2138156928, - 2138400256, - 2138637184, - 2138867968, - 2139092864, - 2139311744, - 2139524992, - 2139732736, - 2139934976, - 2140131968, - 2140323840, - 2140510720, - 2140692736, - 2140870016, - 2141042688, - 2141210752, - 2141374592, - 2141534080, - 2141689344, - 2141840640, - 2141987968, - 2142131456, - 2142271232, - 2142407424, - 2142539904, - 2142669056, - 2142794752, - 2142917248, - 2143036544, - 2143152640, - 2143265792, - 2143375872, - 2143483264, - 2143587712, - 2143689472, - 2143788544, - 2143885056, - 2143979136, - 2144070656, - 2144159872, - 2144246656, - 2144331264, - 2144413568, - 2144493824, - 2144571904, - 2144647936, - 2144722048, - 2144794240, - 2144864512, - 2144932864, - 2144999552, - 2145064448, - 2145127680, - 2145189248, - 2145249152, - 2145307520, - 2145364480, - 2145419776, - 2145473792, - 2145526272, - 2145577472, - 2145627264, - 2145675776, - 2145723008, - 2145768960, - 2145813760, - 2145857408, - 2145899904, - 2145941376, - 2145981696, - 2146020864, - 2146059136, - 2146096384, - 2146132608, - 2146167936, - 2146202368, - 2146235776, - 2146268416, - 2146300160, - 2146331136, - 2146361216, - 2146390528, - 2146419200, - 2146446976, - 2146474112, - 2146500480, - 2146526208, - 2146551168, - 2146575488, - 2146599296, - 2146622464, - 2146644864, - 2146666880, - 2146688128, - 2146708992, - 2146729216, - 2146748928, - 2146768128, - 2146786816, - 2146805120, - 2146822784, - 2146840064, - 2146856960, - 2146873344, - 2146889216, - 2146904832, - 2146919936, - 2146934656, - 2146948992, - 2146962944, - 2146976640, - 2146989824, - 2147002752, - 2147015296, - 2147027584, - 2147039488, - 2147051136, - 2147062400, - 2147073408, - 2147084160, - 2147094528, - 2147104768, - 2147114624, - 2147124352, - 2147133696, - 2147142912, - 2147151744, - 2147160448, - 2147168896, - 2147177088, - 2147185152, - 2147192960, - 2147200512, - 2147207936, - 2147215104, - 2147222144, - 2147229056, - 2147235712, - 2147242112, - 2147248384, - 2147254656, - 2147260544, - 2147266432, - 2147272064, - 2147277568, - }, - - -}; - /*------------------------------------------------------------------------- * DFT Stereo ROM tables *------------------------------------------------------------------------*/ diff --git a/lib_com/ivas_rom_com.h b/lib_com/ivas_rom_com.h index 6cd11215d..865382410 100644 --- a/lib_com/ivas_rom_com.h +++ b/lib_com/ivas_rom_com.h @@ -327,7 +327,5 @@ extern const Word16 sns_1st_means_32k[2][16]; extern const Word16 ivas_param_upmx_mx_qmap[33]; -extern const Word32 release_cnst_table[4][201]; // Q31 - /* IVAS_ROM_COM_H */ #endif diff --git a/lib_com/ivas_rom_com_fx.c b/lib_com/ivas_rom_com_fx.c index e7ee30e8d..3d85f546f 100644 --- a/lib_com/ivas_rom_com_fx.c +++ b/lib_com/ivas_rom_com_fx.c @@ -5125,4 +5125,822 @@ const Word32 ivas_fb_fr_12band_1ms_im_fx[IVAS_FB_12_1MS_LEN] = { }; +const Word32 release_cnst_table[4][201] = // Q31 + { + { + 1913946752, + 1919716352, + 1925351680, + 1930855552, + 1936230784, + 1941479808, + 1946605312, + 1951609728, + 1956495744, + 1961265792, + 1965922304, + 1970467584, + 1974904320, + 1979234560, + 1983460736, + 1987585024, + 1991609856, + 1995537280, + 1999369344, + 2003108480, + 2006756480, + 2010315520, + 2013787520, + 2017174528, + 2020478464, + 2023701248, + 2026844672, + 2029910656, + 2032900992, + 2035817344, + 2038661376, + 2041435008, + 2044139648, + 2046777088, + 2049348864, + 2051856384, + 2054301440, + 2056685312, + 2059009536, + 2061275520, + 2063484672, + 2065638272, + 2067737856, + 2069784448, + 2071779584, + 2073724416, + 2075620096, + 2077467904, + 2079268992, + 2081024512, + 2082735488, + 2084403200, + 2086028416, + 2087612544, + 2089156352, + 2090660864, + 2092127104, + 2093555968, + 2094948480, + 2096305408, + 2097627776, + 2098916352, + 2100172032, + 2101395584, + 2102587776, + 2103749504, + 2104881408, + 2105984384, + 2107059072, + 2108106112, + 2109126400, + 2110120448, + 2111088896, + 2112032512, + 2112951808, + 2113847552, + 2114720128, + 2115570304, + 2116398592, + 2117205504, + 2117991552, + 2118757504, + 2119503616, + 2120230400, + 2120938496, + 2121628288, + 2122300288, + 2122954880, + 2123592576, + 2124213760, + 2124818944, + 2125408384, + 2125982592, + 2126541952, + 2127086848, + 2127617664, + 2128134656, + 2128638336, + 2129128832, + 2129606784, + 2130072192, + 2130525568, + 2130967296, + 2131397376, + 2131816448, + 2132224640, + 2132622080, + 2133009408, + 2133386496, + 2133753856, + 2134111744, + 2134460288, + 2134799744, + 2135130368, + 2135452416, + 2135766144, + 2136071680, + 2136369152, + 2136659072, + 2136941312, + 2137216256, + 2137484160, + 2137744896, + 2137998976, + 2138246400, + 2138487424, + 2138722176, + 2138950656, + 2139173376, + 2139390208, + 2139601408, + 2139807104, + 2140007424, + 2140202624, + 2140392576, + 2140577664, + 2140758016, + 2140933504, + 2141104512, + 2141271040, + 2141433216, + 2141591168, + 2141745024, + 2141894912, + 2142040832, + 2142182912, + 2142321408, + 2142456192, + 2142587392, + 2142715264, + 2142839808, + 2142961152, + 2143079296, + 2143194240, + 2143306240, + 2143415424, + 2143521664, + 2143625216, + 2143725952, + 2143824128, + 2143919744, + 2144012800, + 2144103424, + 2144191744, + 2144277760, + 2144361472, + 2144443136, + 2144522496, + 2144599936, + 2144675200, + 2144748544, + 2144820096, + 2144889600, + 2144957440, + 2145023488, + 2145087744, + 2145150336, + 2145211264, + 2145270656, + 2145328512, + 2145384832, + 2145439616, + 2145493120, + 2145545088, + 2145595776, + 2145645056, + 2145693184, + 2145739904, + 2145785472, + 2145829888, + 2145873152, + 2145915136, + 2145956224, + 2145996032, + 2146034944, + 2146072832, + 2146109696, + 2146145664, + 2146180608, + 2146214656, + 2146247808, + }, + { + 2027355264, + 2030408704, + 2033386624, + 2036290944, + 2039123328, + 2041885440, + 2044578944, + 2047205376, + 2049766528, + 2052263680, + 2054698496, + 2057072384, + 2059387008, + 2061643520, + 2063843328, + 2065987968, + 2068078720, + 2070116864, + 2072103552, + 2074040192, + 2075927936, + 2077767936, + 2079561472, + 2081309568, + 2083013376, + 2084673920, + 2086292352, + 2087869696, + 2089406976, + 2090905216, + 2092365184, + 2093788032, + 2095174528, + 2096525824, + 2097842432, + 2099125632, + 2100375808, + 2101594240, + 2102781312, + 2103938048, + 2105065216, + 2106163456, + 2107233536, + 2108276096, + 2109292032, + 2110281728, + 2111246080, + 2112185728, + 2113101056, + 2113992960, + 2114861824, + 2115708288, + 2116532992, + 2117336448, + 2118119168, + 2118881792, + 2119624704, + 2120348416, + 2121053440, + 2121740288, + 2122409344, + 2123061120, + 2123696128, + 2124314624, + 2124917120, + 2125504128, + 2126075776, + 2126632832, + 2127175296, + 2127703808, + 2128218624, + 2128720000, + 2129208448, + 2129684352, + 2130147712, + 2130599168, + 2131038976, + 2131467264, + 2131884416, + 2132290816, + 2132686592, + 2133072256, + 2133447680, + 2133813504, + 2134169856, + 2134516864, + 2134854784, + 2135184000, + 2135504640, + 2135816960, + 2136121216, + 2136417536, + 2136706048, + 2136987136, + 2137260928, + 2137527552, + 2137787264, + 2138040192, + 2138286592, + 2138526464, + 2138760192, + 2138987776, + 2139209472, + 2139425408, + 2139635712, + 2139840512, + 2140039936, + 2140234240, + 2140423424, + 2140607744, + 2140787200, + 2140962048, + 2141132288, + 2141298048, + 2141459584, + 2141616896, + 2141769984, + 2141919232, + 2142064512, + 2142205952, + 2142343808, + 2142478080, + 2142608768, + 2142736128, + 2142860032, + 2142980864, + 2143098368, + 2143212928, + 2143324544, + 2143433088, + 2143538944, + 2143641984, + 2143742336, + 2143840000, + 2143935232, + 2144027904, + 2144118144, + 2144206080, + 2144291712, + 2144375168, + 2144456320, + 2144535424, + 2144612480, + 2144687488, + 2144760448, + 2144831616, + 2144900992, + 2144968448, + 2145034112, + 2145098112, + 2145160448, + 2145221248, + 2145280256, + 2145337856, + 2145393920, + 2145448576, + 2145501696, + 2145553536, + 2145603968, + 2145653120, + 2145700992, + 2145747456, + 2145792896, + 2145837056, + 2145880064, + 2145922048, + 2145962880, + 2146002560, + 2146041344, + 2146078976, + 2146115712, + 2146151424, + 2146186240, + 2146220160, + 2146253184, + 2146285312, + 2146316672, + 2146347136, + 2146376832, + 2146405760, + 2146433920, + 2146461440, + 2146488192, + 2146514176, + 2146539520, + 2146564224, + 2146588160, + 2146611584, + 2146634368, + 2146656640, + 2146678272, + 2146699264, + 2146719744, + 2146739712, + 2146759168, + 2146778112, + 2146796544, + 2146814464, + 2146832000, + 2146849024, + 2146865664, + }, + { + 2086555136, + 2088125824, + 2089656576, + 2091148416, + 2092602240, + 2094018944, + 2095399680, + 2096745088, + 2098056192, + 2099333888, + 2100578816, + 2101792000, + 2102974080, + 2104125824, + 2105248128, + 2106341760, + 2107407232, + 2108445440, + 2109456896, + 2110442496, + 2111402624, + 2112338176, + 2113249664, + 2114137728, + 2115002880, + 2115845760, + 2116666880, + 2117466880, + 2118246272, + 2119005568, + 2119745280, + 2120465920, + 2121167872, + 2121851776, + 2122517888, + 2123166976, + 2123799168, + 2124414976, + 2125014912, + 2125599360, + 2126168704, + 2126723200, + 2127263360, + 2127789568, + 2128302208, + 2128801408, + 2129287808, + 2129761536, + 2130222976, + 2130672512, + 2131110272, + 2131536768, + 2131952128, + 2132356736, + 2132750848, + 2133134720, + 2133508736, + 2133872896, + 2134227584, + 2134573184, + 2134909696, + 2135237504, + 2135556736, + 2135867648, + 2136170624, + 2136465536, + 2136752896, + 2137032832, + 2137305344, + 2137570816, + 2137829376, + 2138081280, + 2138326528, + 2138565504, + 2138798080, + 2139024768, + 2139245440, + 2139460480, + 2139669888, + 2139873792, + 2140072320, + 2140265856, + 2140454144, + 2140637696, + 2140816384, + 2140990464, + 2141159936, + 2141325056, + 2141485824, + 2141642368, + 2141794944, + 2141943424, + 2142088064, + 2142228992, + 2142366208, + 2142499840, + 2142630016, + 2142756736, + 2142880128, + 2143000448, + 2143117440, + 2143231488, + 2143342592, + 2143450752, + 2143556096, + 2143658624, + 2143758592, + 2143855872, + 2143950592, + 2144043008, + 2144132864, + 2144220416, + 2144305664, + 2144388608, + 2144469504, + 2144548224, + 2144624896, + 2144699648, + 2144772352, + 2144843264, + 2144912256, + 2144979328, + 2145044864, + 2145108480, + 2145170560, + 2145231104, + 2145289856, + 2145347200, + 2145403008, + 2145457408, + 2145510400, + 2145561984, + 2145612160, + 2145661056, + 2145708672, + 2145755136, + 2145800192, + 2145844224, + 2145887104, + 2145928832, + 2145969408, + 2146008960, + 2146047616, + 2146085120, + 2146121600, + 2146157184, + 2146191872, + 2146225664, + 2146258560, + 2146290560, + 2146321792, + 2146352128, + 2146381696, + 2146410496, + 2146438528, + 2146465920, + 2146492416, + 2146518400, + 2146543616, + 2146568192, + 2146592128, + 2146615424, + 2146638080, + 2146660224, + 2146681728, + 2146702720, + 2146723072, + 2146743040, + 2146762368, + 2146781184, + 2146799616, + 2146817408, + 2146834816, + 2146851840, + 2146868352, + 2146884352, + 2146900096, + 2146915328, + 2146930176, + 2146944640, + 2146958720, + 2146972416, + 2146985856, + 2146998784, + 2147011456, + 2147023872, + 2147035904, + 2147047552, + 2147058944, + 2147070080, + 2147080832, + 2147091456, + 2147101696, + 2147111680, + 2147121408, + 2147130880, + 2147140096, + 2147149056, + 2147157760, + 2147166336, + 2147174656, + }, + { + 2106670080, + 2107727232, + 2108757120, + 2109760640, + 2110738432, + 2111691008, + 2112619136, + 2113523328, + 2114404352, + 2115262592, + 2116098816, + 2116913408, + 2117707136, + 2118480256, + 2119233536, + 2119967360, + 2120682240, + 2121378688, + 2122057088, + 2122717952, + 2123361792, + 2123988992, + 2124599936, + 2125195136, + 2125774848, + 2126339584, + 2126889728, + 2127425536, + 2127947520, + 2128456064, + 2128951296, + 2129433856, + 2129903744, + 2130361600, + 2130807424, + 2131241728, + 2131664768, + 2132076928, + 2132478208, + 2132869248, + 2133250048, + 2133620992, + 2133982208, + 2134334080, + 2134676864, + 2135010688, + 2135335936, + 2135652608, + 2135961088, + 2136261504, + 2136554112, + 2136839168, + 2137116800, + 2137387136, + 2137650560, + 2137907072, + 2138156928, + 2138400256, + 2138637184, + 2138867968, + 2139092864, + 2139311744, + 2139524992, + 2139732736, + 2139934976, + 2140131968, + 2140323840, + 2140510720, + 2140692736, + 2140870016, + 2141042688, + 2141210752, + 2141374592, + 2141534080, + 2141689344, + 2141840640, + 2141987968, + 2142131456, + 2142271232, + 2142407424, + 2142539904, + 2142669056, + 2142794752, + 2142917248, + 2143036544, + 2143152640, + 2143265792, + 2143375872, + 2143483264, + 2143587712, + 2143689472, + 2143788544, + 2143885056, + 2143979136, + 2144070656, + 2144159872, + 2144246656, + 2144331264, + 2144413568, + 2144493824, + 2144571904, + 2144647936, + 2144722048, + 2144794240, + 2144864512, + 2144932864, + 2144999552, + 2145064448, + 2145127680, + 2145189248, + 2145249152, + 2145307520, + 2145364480, + 2145419776, + 2145473792, + 2145526272, + 2145577472, + 2145627264, + 2145675776, + 2145723008, + 2145768960, + 2145813760, + 2145857408, + 2145899904, + 2145941376, + 2145981696, + 2146020864, + 2146059136, + 2146096384, + 2146132608, + 2146167936, + 2146202368, + 2146235776, + 2146268416, + 2146300160, + 2146331136, + 2146361216, + 2146390528, + 2146419200, + 2146446976, + 2146474112, + 2146500480, + 2146526208, + 2146551168, + 2146575488, + 2146599296, + 2146622464, + 2146644864, + 2146666880, + 2146688128, + 2146708992, + 2146729216, + 2146748928, + 2146768128, + 2146786816, + 2146805120, + 2146822784, + 2146840064, + 2146856960, + 2146873344, + 2146889216, + 2146904832, + 2146919936, + 2146934656, + 2146948992, + 2146962944, + 2146976640, + 2146989824, + 2147002752, + 2147015296, + 2147027584, + 2147039488, + 2147051136, + 2147062400, + 2147073408, + 2147084160, + 2147094528, + 2147104768, + 2147114624, + 2147124352, + 2147133696, + 2147142912, + 2147151744, + 2147160448, + 2147168896, + 2147177088, + 2147185152, + 2147192960, + 2147200512, + 2147207936, + 2147215104, + 2147222144, + 2147229056, + 2147235712, + 2147242112, + 2147248384, + 2147254656, + 2147260544, + 2147266432, + 2147272064, + 2147277568, + }, + + + }; + /* clang-format on */ diff --git a/lib_com/ivas_rom_com_fx.h b/lib_com/ivas_rom_com_fx.h index 3344a35d2..54a620b15 100644 --- a/lib_com/ivas_rom_com_fx.h +++ b/lib_com/ivas_rom_com_fx.h @@ -292,4 +292,10 @@ extern const Word32 ivas_fb_fr_12band_1ms_re_fx[IVAS_FB_12_1MS_LEN]; extern const Word32 ivas_fb_fr_12band_1ms_im_fx[IVAS_FB_12_1MS_LEN]; +/*----------------------------------------------------------------------* + * Limiter tables + *-----------------------------------------------------------------------*/ + +extern const Word32 release_cnst_table[4][201]; // Q31 + #endif diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 77e779efd..8d205a318 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -241,26 +241,6 @@ void fix2f_16( Word16 *var_fix, float *var_flt, Word32 expo ) #undef WMC_TOOL_SKIP -Word16 norm_ul( UWord32 UL_var1 ) -{ - Word16 var_out; - - if ( UL_var1 == 0 ) - { - var_out = 0; - } - else - { - for ( var_out = 0; UL_var1 < (UWord32) 0x80000000U; var_out++ ) - { - UL_var1 <<= 1; - } - } - BASOP_CHECK(); - - return ( var_out ); -} - /*-------------------------------------------------------------------* * usdequant_fx() * diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 43972fdb4..185317332 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1918,8 +1918,8 @@ void ivas_qmetadata_to_dirac_fx( } /* for ( block =...) */ - } /* for ( band = ...) */ - } /* for ( idx_sec = ...)*/ + } /* for ( band = ...) */ + } /* for ( idx_sec = ...)*/ /* Bands not transmitted -> zeroed*/ FOR( b = band_grouping[band]; b < hSpatParamRendCom->num_freq_bands; b++ ) @@ -2296,6 +2296,19 @@ void ivas_dirac_dec_render_sf_fx( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + FOR( Word16 p = 0; p < MAX_HEAD_ROT_POSES; p++ ) + { + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) + { + set32_fx( Cldfb_RealBuffer_Binaural_fx[p][i][j], 0, CLDFB_NO_CHANNELS_MAX ); + set32_fx( Cldfb_RealBuffer_Binaural_fx[p][i][j], 0, CLDFB_NO_CHANNELS_MAX ); + } + } + } +#else FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) { FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) @@ -2304,6 +2317,7 @@ void ivas_dirac_dec_render_sf_fx( set32_fx( Cldfb_RealBuffer_Binaural_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); } } +#endif /* local copies of azi, ele, diffuseness */ Word16 azimuth[CLDFB_NO_CHANNELS_MAX]; diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index f71801085..beb6535a2 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2670,7 +2670,10 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( DECODER_TC_BUFFER_HANDLE hTcBuffer; Word32 output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; Word32 *p_output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; - Word16 nchan_in, nchan_out, gd_bits, n_chan_inp, i, shift; + Word16 nchan_in, nchan_out; +#ifndef SPLIT_REND_WITH_HEAD_ROT + Word16 gd_bits, shift, n_chan_inp, i; +#endif IF( !st_ivas->hDecoderConfig->Opt_tsm ) { return IVAS_ERR_OK; @@ -2791,7 +2794,6 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( { return error; } -#endif FOR( i = 0; i < n_chan_inp; i++ ) { @@ -2799,7 +2801,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( } *st_ivas->hCrendWrapper->p_io_qfactor = Q11; move16(); ->>>>>>> 2805f2da05bf6a0aa6cf155d214db90e4067f547 +#endif } } ELSE diff --git a/lib_enc/ivas_stereo_dft_enc_itd_fx.c b/lib_enc/ivas_stereo_dft_enc_itd_fx.c index ca5079e25..1beacd19a 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd_fx.c +++ b/lib_enc/ivas_stereo_dft_enc_itd_fx.c @@ -1734,12 +1734,6 @@ void stereo_dft_enc_compute_itd_fx( move32(); cng_xcorr_filt = L_max( cng_xcorr_filt, sfm_L ); // Q31 } - ELSE - { - cng_xcorr_filt = BASOP_Util_Divide3232_Scale_cadence( 8 /*10.0f * CORR_FILT*/, add( hStereoDft->expectedNumUpdates, hStereoDft->currentNumUpdates ), &cng_xcorr_filt_e ); - cng_xcorr_filt = L_shl_sat( cng_xcorr_filt, cng_xcorr_filt_e ); // Q31 - cng_xcorr_filt = L_max( L_min( CORR_FILT_Q31, cng_xcorr_filt ), sfm_L ); // Q31 - } hStereoDft->currentNumUpdates = add( hStereoDft->currentNumUpdates, 1 ); move16(); hStereoDft->sfm_fx = cng_xcorr_filt; diff --git a/lib_enc/ivas_stereo_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index 2b391aee7..8e960d71e 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -88,6 +88,7 @@ #define STEREO_DMX_EVS_SWTCH_PRC_THRES_48 29 #define STEREO_DMX_EVS_SWTCH_PRC_HYS_THRES 1 +#define STEREO_DMX_EVS_FADE_LEN_PRC_Q0 20 #define STEREO_DMX_EVS_NB_SBFRM 5 #define STEREO_DMX_EVS_TRNS_DTC_INST_Q0 75 diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index 852d0ce54..f4aecc837 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -129,8 +129,6 @@ extern const Word32 ivas_reverb_default_fc_fx[]; /*Q-16*/ extern const Word32 ivas_reverb_default_RT60_fx[]; /*Q-26*/ extern const Word32 ivas_reverb_default_DSR_fx[]; /*Q-30*/ -extern const Word32 release_cnst_table[4][201]; // Q31 - /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices *----------------------------------------------------------------------------------*/ diff --git a/lib_rend/ivas_rom_rend_fx.c b/lib_rend/ivas_rom_rend_fx.c index 0dde1aa65..75bd01756 100644 --- a/lib_rend/ivas_rom_rend_fx.c +++ b/lib_rend/ivas_rom_rend_fx.c @@ -563,825 +563,6 @@ const Word32 ivas_reverb_default_DSR_fx[IVAS_REVERB_DEFAULT_N_BANDS] /*Q30*/ = 66, 30, 28 }; -const Word32 release_cnst_table[4][201] = // Q31 - { - { - 1913946752, - 1919716352, - 1925351680, - 1930855552, - 1936230784, - 1941479808, - 1946605312, - 1951609728, - 1956495744, - 1961265792, - 1965922304, - 1970467584, - 1974904320, - 1979234560, - 1983460736, - 1987585024, - 1991609856, - 1995537280, - 1999369344, - 2003108480, - 2006756480, - 2010315520, - 2013787520, - 2017174528, - 2020478464, - 2023701248, - 2026844672, - 2029910656, - 2032900992, - 2035817344, - 2038661376, - 2041435008, - 2044139648, - 2046777088, - 2049348864, - 2051856384, - 2054301440, - 2056685312, - 2059009536, - 2061275520, - 2063484672, - 2065638272, - 2067737856, - 2069784448, - 2071779584, - 2073724416, - 2075620096, - 2077467904, - 2079268992, - 2081024512, - 2082735488, - 2084403200, - 2086028416, - 2087612544, - 2089156352, - 2090660864, - 2092127104, - 2093555968, - 2094948480, - 2096305408, - 2097627776, - 2098916352, - 2100172032, - 2101395584, - 2102587776, - 2103749504, - 2104881408, - 2105984384, - 2107059072, - 2108106112, - 2109126400, - 2110120448, - 2111088896, - 2112032512, - 2112951808, - 2113847552, - 2114720128, - 2115570304, - 2116398592, - 2117205504, - 2117991552, - 2118757504, - 2119503616, - 2120230400, - 2120938496, - 2121628288, - 2122300288, - 2122954880, - 2123592576, - 2124213760, - 2124818944, - 2125408384, - 2125982592, - 2126541952, - 2127086848, - 2127617664, - 2128134656, - 2128638336, - 2129128832, - 2129606784, - 2130072192, - 2130525568, - 2130967296, - 2131397376, - 2131816448, - 2132224640, - 2132622080, - 2133009408, - 2133386496, - 2133753856, - 2134111744, - 2134460288, - 2134799744, - 2135130368, - 2135452416, - 2135766144, - 2136071680, - 2136369152, - 2136659072, - 2136941312, - 2137216256, - 2137484160, - 2137744896, - 2137998976, - 2138246400, - 2138487424, - 2138722176, - 2138950656, - 2139173376, - 2139390208, - 2139601408, - 2139807104, - 2140007424, - 2140202624, - 2140392576, - 2140577664, - 2140758016, - 2140933504, - 2141104512, - 2141271040, - 2141433216, - 2141591168, - 2141745024, - 2141894912, - 2142040832, - 2142182912, - 2142321408, - 2142456192, - 2142587392, - 2142715264, - 2142839808, - 2142961152, - 2143079296, - 2143194240, - 2143306240, - 2143415424, - 2143521664, - 2143625216, - 2143725952, - 2143824128, - 2143919744, - 2144012800, - 2144103424, - 2144191744, - 2144277760, - 2144361472, - 2144443136, - 2144522496, - 2144599936, - 2144675200, - 2144748544, - 2144820096, - 2144889600, - 2144957440, - 2145023488, - 2145087744, - 2145150336, - 2145211264, - 2145270656, - 2145328512, - 2145384832, - 2145439616, - 2145493120, - 2145545088, - 2145595776, - 2145645056, - 2145693184, - 2145739904, - 2145785472, - 2145829888, - 2145873152, - 2145915136, - 2145956224, - 2145996032, - 2146034944, - 2146072832, - 2146109696, - 2146145664, - 2146180608, - 2146214656, - 2146247808, - }, - { - 2027355264, - 2030408704, - 2033386624, - 2036290944, - 2039123328, - 2041885440, - 2044578944, - 2047205376, - 2049766528, - 2052263680, - 2054698496, - 2057072384, - 2059387008, - 2061643520, - 2063843328, - 2065987968, - 2068078720, - 2070116864, - 2072103552, - 2074040192, - 2075927936, - 2077767936, - 2079561472, - 2081309568, - 2083013376, - 2084673920, - 2086292352, - 2087869696, - 2089406976, - 2090905216, - 2092365184, - 2093788032, - 2095174528, - 2096525824, - 2097842432, - 2099125632, - 2100375808, - 2101594240, - 2102781312, - 2103938048, - 2105065216, - 2106163456, - 2107233536, - 2108276096, - 2109292032, - 2110281728, - 2111246080, - 2112185728, - 2113101056, - 2113992960, - 2114861824, - 2115708288, - 2116532992, - 2117336448, - 2118119168, - 2118881792, - 2119624704, - 2120348416, - 2121053440, - 2121740288, - 2122409344, - 2123061120, - 2123696128, - 2124314624, - 2124917120, - 2125504128, - 2126075776, - 2126632832, - 2127175296, - 2127703808, - 2128218624, - 2128720000, - 2129208448, - 2129684352, - 2130147712, - 2130599168, - 2131038976, - 2131467264, - 2131884416, - 2132290816, - 2132686592, - 2133072256, - 2133447680, - 2133813504, - 2134169856, - 2134516864, - 2134854784, - 2135184000, - 2135504640, - 2135816960, - 2136121216, - 2136417536, - 2136706048, - 2136987136, - 2137260928, - 2137527552, - 2137787264, - 2138040192, - 2138286592, - 2138526464, - 2138760192, - 2138987776, - 2139209472, - 2139425408, - 2139635712, - 2139840512, - 2140039936, - 2140234240, - 2140423424, - 2140607744, - 2140787200, - 2140962048, - 2141132288, - 2141298048, - 2141459584, - 2141616896, - 2141769984, - 2141919232, - 2142064512, - 2142205952, - 2142343808, - 2142478080, - 2142608768, - 2142736128, - 2142860032, - 2142980864, - 2143098368, - 2143212928, - 2143324544, - 2143433088, - 2143538944, - 2143641984, - 2143742336, - 2143840000, - 2143935232, - 2144027904, - 2144118144, - 2144206080, - 2144291712, - 2144375168, - 2144456320, - 2144535424, - 2144612480, - 2144687488, - 2144760448, - 2144831616, - 2144900992, - 2144968448, - 2145034112, - 2145098112, - 2145160448, - 2145221248, - 2145280256, - 2145337856, - 2145393920, - 2145448576, - 2145501696, - 2145553536, - 2145603968, - 2145653120, - 2145700992, - 2145747456, - 2145792896, - 2145837056, - 2145880064, - 2145922048, - 2145962880, - 2146002560, - 2146041344, - 2146078976, - 2146115712, - 2146151424, - 2146186240, - 2146220160, - 2146253184, - 2146285312, - 2146316672, - 2146347136, - 2146376832, - 2146405760, - 2146433920, - 2146461440, - 2146488192, - 2146514176, - 2146539520, - 2146564224, - 2146588160, - 2146611584, - 2146634368, - 2146656640, - 2146678272, - 2146699264, - 2146719744, - 2146739712, - 2146759168, - 2146778112, - 2146796544, - 2146814464, - 2146832000, - 2146849024, - 2146865664, - }, - { - 2086555136, - 2088125824, - 2089656576, - 2091148416, - 2092602240, - 2094018944, - 2095399680, - 2096745088, - 2098056192, - 2099333888, - 2100578816, - 2101792000, - 2102974080, - 2104125824, - 2105248128, - 2106341760, - 2107407232, - 2108445440, - 2109456896, - 2110442496, - 2111402624, - 2112338176, - 2113249664, - 2114137728, - 2115002880, - 2115845760, - 2116666880, - 2117466880, - 2118246272, - 2119005568, - 2119745280, - 2120465920, - 2121167872, - 2121851776, - 2122517888, - 2123166976, - 2123799168, - 2124414976, - 2125014912, - 2125599360, - 2126168704, - 2126723200, - 2127263360, - 2127789568, - 2128302208, - 2128801408, - 2129287808, - 2129761536, - 2130222976, - 2130672512, - 2131110272, - 2131536768, - 2131952128, - 2132356736, - 2132750848, - 2133134720, - 2133508736, - 2133872896, - 2134227584, - 2134573184, - 2134909696, - 2135237504, - 2135556736, - 2135867648, - 2136170624, - 2136465536, - 2136752896, - 2137032832, - 2137305344, - 2137570816, - 2137829376, - 2138081280, - 2138326528, - 2138565504, - 2138798080, - 2139024768, - 2139245440, - 2139460480, - 2139669888, - 2139873792, - 2140072320, - 2140265856, - 2140454144, - 2140637696, - 2140816384, - 2140990464, - 2141159936, - 2141325056, - 2141485824, - 2141642368, - 2141794944, - 2141943424, - 2142088064, - 2142228992, - 2142366208, - 2142499840, - 2142630016, - 2142756736, - 2142880128, - 2143000448, - 2143117440, - 2143231488, - 2143342592, - 2143450752, - 2143556096, - 2143658624, - 2143758592, - 2143855872, - 2143950592, - 2144043008, - 2144132864, - 2144220416, - 2144305664, - 2144388608, - 2144469504, - 2144548224, - 2144624896, - 2144699648, - 2144772352, - 2144843264, - 2144912256, - 2144979328, - 2145044864, - 2145108480, - 2145170560, - 2145231104, - 2145289856, - 2145347200, - 2145403008, - 2145457408, - 2145510400, - 2145561984, - 2145612160, - 2145661056, - 2145708672, - 2145755136, - 2145800192, - 2145844224, - 2145887104, - 2145928832, - 2145969408, - 2146008960, - 2146047616, - 2146085120, - 2146121600, - 2146157184, - 2146191872, - 2146225664, - 2146258560, - 2146290560, - 2146321792, - 2146352128, - 2146381696, - 2146410496, - 2146438528, - 2146465920, - 2146492416, - 2146518400, - 2146543616, - 2146568192, - 2146592128, - 2146615424, - 2146638080, - 2146660224, - 2146681728, - 2146702720, - 2146723072, - 2146743040, - 2146762368, - 2146781184, - 2146799616, - 2146817408, - 2146834816, - 2146851840, - 2146868352, - 2146884352, - 2146900096, - 2146915328, - 2146930176, - 2146944640, - 2146958720, - 2146972416, - 2146985856, - 2146998784, - 2147011456, - 2147023872, - 2147035904, - 2147047552, - 2147058944, - 2147070080, - 2147080832, - 2147091456, - 2147101696, - 2147111680, - 2147121408, - 2147130880, - 2147140096, - 2147149056, - 2147157760, - 2147166336, - 2147174656, - }, - { - 2106670080, - 2107727232, - 2108757120, - 2109760640, - 2110738432, - 2111691008, - 2112619136, - 2113523328, - 2114404352, - 2115262592, - 2116098816, - 2116913408, - 2117707136, - 2118480256, - 2119233536, - 2119967360, - 2120682240, - 2121378688, - 2122057088, - 2122717952, - 2123361792, - 2123988992, - 2124599936, - 2125195136, - 2125774848, - 2126339584, - 2126889728, - 2127425536, - 2127947520, - 2128456064, - 2128951296, - 2129433856, - 2129903744, - 2130361600, - 2130807424, - 2131241728, - 2131664768, - 2132076928, - 2132478208, - 2132869248, - 2133250048, - 2133620992, - 2133982208, - 2134334080, - 2134676864, - 2135010688, - 2135335936, - 2135652608, - 2135961088, - 2136261504, - 2136554112, - 2136839168, - 2137116800, - 2137387136, - 2137650560, - 2137907072, - 2138156928, - 2138400256, - 2138637184, - 2138867968, - 2139092864, - 2139311744, - 2139524992, - 2139732736, - 2139934976, - 2140131968, - 2140323840, - 2140510720, - 2140692736, - 2140870016, - 2141042688, - 2141210752, - 2141374592, - 2141534080, - 2141689344, - 2141840640, - 2141987968, - 2142131456, - 2142271232, - 2142407424, - 2142539904, - 2142669056, - 2142794752, - 2142917248, - 2143036544, - 2143152640, - 2143265792, - 2143375872, - 2143483264, - 2143587712, - 2143689472, - 2143788544, - 2143885056, - 2143979136, - 2144070656, - 2144159872, - 2144246656, - 2144331264, - 2144413568, - 2144493824, - 2144571904, - 2144647936, - 2144722048, - 2144794240, - 2144864512, - 2144932864, - 2144999552, - 2145064448, - 2145127680, - 2145189248, - 2145249152, - 2145307520, - 2145364480, - 2145419776, - 2145473792, - 2145526272, - 2145577472, - 2145627264, - 2145675776, - 2145723008, - 2145768960, - 2145813760, - 2145857408, - 2145899904, - 2145941376, - 2145981696, - 2146020864, - 2146059136, - 2146096384, - 2146132608, - 2146167936, - 2146202368, - 2146235776, - 2146268416, - 2146300160, - 2146331136, - 2146361216, - 2146390528, - 2146419200, - 2146446976, - 2146474112, - 2146500480, - 2146526208, - 2146551168, - 2146575488, - 2146599296, - 2146622464, - 2146644864, - 2146666880, - 2146688128, - 2146708992, - 2146729216, - 2146748928, - 2146768128, - 2146786816, - 2146805120, - 2146822784, - 2146840064, - 2146856960, - 2146873344, - 2146889216, - 2146904832, - 2146919936, - 2146934656, - 2146948992, - 2146962944, - 2146976640, - 2146989824, - 2147002752, - 2147015296, - 2147027584, - 2147039488, - 2147051136, - 2147062400, - 2147073408, - 2147084160, - 2147094528, - 2147104768, - 2147114624, - 2147124352, - 2147133696, - 2147142912, - 2147151744, - 2147160448, - 2147168896, - 2147177088, - 2147185152, - 2147192960, - 2147200512, - 2147207936, - 2147215104, - 2147222144, - 2147229056, - 2147235712, - 2147242112, - 2147248384, - 2147254656, - 2147260544, - 2147266432, - 2147272064, - 2147277568, - }, - - - }; - - /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices *----------------------------------------------------------------------------------*/ -- GitLab From 6c708dc8c7a49b947b2568226ef9ad772ed1c2e4 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 27 May 2025 15:00:52 +0200 Subject: [PATCH 635/698] run clang-format --- lib_dec/ivas_dirac_dec_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 185317332..ff02d813d 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1918,8 +1918,8 @@ void ivas_qmetadata_to_dirac_fx( } /* for ( block =...) */ - } /* for ( band = ...) */ - } /* for ( idx_sec = ...)*/ + } /* for ( band = ...) */ + } /* for ( idx_sec = ...)*/ /* Bands not transmitted -> zeroed*/ FOR( b = band_grouping[band]; b < hSpatParamRendCom->num_freq_bands; b++ ) -- GitLab From 0cb138bde49f6c03365bf81495ccb16f59bb3ad0 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 27 May 2025 15:28:20 +0200 Subject: [PATCH 636/698] set FLOAT_REF_BRANCH to float-pc if name check if skipped --- .gitlab-ci.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7e06c92b3..d630d11ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1455,11 +1455,15 @@ split-rendering-pytest-on-merge-request: # --------------------------------------------------------------- .set-reference-for-basop-port-branch: &set-reference-for-basop-port-branch - - if [ $CI_MERGE_REQUEST_TARGET_BRANCH_NAME = "main-pc" ] && [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[skip[[:space:]_-]name[[:space:]_-]check\] ]] && [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[CI\] ]]; then - - *update-scripts-repo + - if [ $CI_MERGE_REQUEST_TARGET_BRANCH_NAME = "main-pc" ]; then + - if [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[skip[[:space:]_-]name[[:space:]_-]check\] ]] && [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[CI\] ]]; then + - *update-scripts-repo # a bit awkward: write to file + standard out first so that the error message is visivle in case of failure. Then fill the variable from the file - - ci/get_float_ref_branch_name.sh $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME | tee tmp_ref_branch.txt - - FLOAT_REF_BRANCH=$(cat tmp_ref_branch.txt) + - ci/get_float_ref_branch_name.sh $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME | tee tmp_ref_branch.txt + - FLOAT_REF_BRANCH=$(cat tmp_ref_branch.txt) + - else + - FLOAT_REF_BRANCH="float-pc" + - fi - fi ### jobs that check for bitexactness of fx encoder and decoder -- GitLab From 61b13180cfb63bb395a79895087e03ec3a2e1c74 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 27 May 2025 16:11:51 +0200 Subject: [PATCH 637/698] Changed float to Word32 in function header --- lib_rend/ivas_reverb_utils_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index dabbcfd82..bb781f282 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -65,7 +65,7 @@ typedef struct cldfb_convolver_state } cldfb_convolver_state; #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -static void ivas_reverb_set_energies( const float *avg_pwr_l, const float *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out ); +static void ivas_reverb_set_energies( const Word32 *avg_pwr_l, const Word32 *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out ); #else static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ); #endif -- GitLab From b4efde697c6415f8e84af5afca752f85dc3a5426 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 27 May 2025 16:43:37 +0200 Subject: [PATCH 638/698] fixed function reverb_set_energies --- lib_rend/ivas_reverb_utils_fx.c | 51 ++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index bb781f282..57e6960dc 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -119,7 +119,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( ivas_reverb_interpolate_acoustic_data_fx( pInput_params->nBands, pInput_params->pFc_input_fx, pInput_params->pAcoustic_rt60_fx, pInput_params->pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX, fc_fx, pOutput_t60_fx, pOutput_ene_fx, pOutput_t60_e, pOutput_ene_e ); - const Word16 input_table_size, + const Word16 input_table_size, const Word32 *pInput_fc, // input in Q16 const Word32 *pInput_t60, // input in Q26 const Word32 *pInput_dsr, // input in Q30 @@ -308,19 +308,20 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const int16_t use_brir, #endif const int32_t sampling_rate, - Word32 *avg_pwr_left, - Word32 *avg_pwr_right ) + float *avg_pwr_left, + float *avg_pwr_right ) { int16_t freq_idx; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES float avg_pwr_left_fft[FFT_SPECTRUM_SIZE]; float avg_pwr_right_fft[FFT_SPECTRUM_SIZE]; #endif - Word32 input_fc[FFT_SPECTRUM_SIZE]; - Word32 output_fc[CLDFB_NO_CHANNELS_MAX]; -#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + float input_fc[FFT_SPECTRUM_SIZE]; + +#ifndef NON_BE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif + #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const int16_t avg_pwr_len = sampling_rate == 16000 ? LR_IAC_LENGTH_NR_FC_16KHZ : LR_IAC_LENGTH_NR_FC; @@ -329,7 +330,6 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( avg_pwr_len - 1 ) ); } #else - for ( freq_idx = 0; freq_idx < FFT_SPECTRUM_SIZE; freq_idx++ ) { input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( FFT_SPECTRUM_SIZE - 1 ) ); @@ -337,14 +337,42 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( #endif #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - ivas_reverb_interpolate_acoustic_data_fx( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); -#else + Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); + Word32 *avg_pwr_left_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); + Word32 *avg_pwr_right_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); + + Word32 *output_fc_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); + Word32 *avg_pwr_left_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); + Word16 *avg_pwr_left_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); + Word32 *avg_pwr_right_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); + Word16 *avg_pwr_right_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); + + for ( int i = 0; i < 60; i++ ) + { + input_fc_fx[i] = (Word32) input_fc[i] * ( 1 << 16 ); + } + + for ( int i = 0; i < 257; i++ ) + { + output_fc_fx[i] = (Word32) input_fc[i] * ONE_IN_Q16; + } + + ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_l, avg_pwr_r, + CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); + + free( input_fc_fx ); + free( output_fc_fx ); + free( avg_pwr_left_fx ); + free( avg_pwr_left_e ); + free( avg_pwr_right_fx ); + free( avg_pwr_right_e ); + +#else if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK ) { return error; } - Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); Word32 *avg_pwr_left_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); Word32 *avg_pwr_right_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); @@ -374,6 +402,7 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( avg_pwr_left[i] = (float) fabs( me2f( avg_pwr_left_fx[i], avg_pwr_left_e[i] ) ); avg_pwr_right[i] = (float) fabs( me2f( avg_pwr_right_fx[i], avg_pwr_right_e[i] ) ); } + free( input_fc_fx ); free( avg_pwr_left_fft_fx ); free( avg_pwr_right_fft_fx ); @@ -384,4 +413,4 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( free( avg_pwr_right_e ); return IVAS_ERR_OK; #endif -} +} \ No newline at end of file -- GitLab From 7ca302ea72d669df9565f0890d8c7cdb9c837926 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 27 May 2025 16:49:54 +0200 Subject: [PATCH 639/698] fixed declarations ivas_reverb_utils --- lib_rend/ivas_reverb_utils_fx.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 57e6960dc..3be26195a 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -119,16 +119,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( ivas_reverb_interpolate_acoustic_data_fx( pInput_params->nBands, pInput_params->pFc_input_fx, pInput_params->pAcoustic_rt60_fx, pInput_params->pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX, fc_fx, pOutput_t60_fx, pOutput_ene_fx, pOutput_t60_e, pOutput_ene_e ); - const Word16 input_table_size, - const Word32 *pInput_fc, // input in Q16 - const Word32 *pInput_t60, // input in Q26 - const Word32 *pInput_dsr, // input in Q30 - const Word16 output_table_size, - const Word32 *pOutput_fc, // Q16 - Word32 *pOutput_t60, // pOutput_t60_e - Word32 *pOutput_dsr, // pOutput_dsr_e - Word16 *pOutput_t60_e, // output e - Word16 *pOutput_dsr_e // output e + /* adjust DSR for the delay difference */ delay_diff_fx = L_sub( pInput_params->inputPreDelay_fx, pInput_params->acousticPreDelay_fx ); -- GitLab From 72b541aa7d46660251538225381a3ea45650368b Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 27 May 2025 16:59:22 +0200 Subject: [PATCH 640/698] changed function name to ivas_reverb_open_fx(). local build successful --- lib_rend/ivas_reverb_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 44add03bd..0c991ad93 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2485,7 +2485,7 @@ ivas_error ivas_binaural_reverb_init( preDelay = 10; } - error = ivas_binaural_reverb_open( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); + error = ivas_binaural_reverb_open_fx( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); return error; } -- GitLab From d269d126b9f279baa324fafe7125f7352a8f6d41 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 27 May 2025 17:03:44 +0200 Subject: [PATCH 641/698] deactivated compiler switch --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index efcf2546b..8abc918af 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -97,7 +97,7 @@ #define NONBE_FIX_973_HODIRAC_BAND_GROUPING /* FhG: issue 973: empty parameter band in DirAC */ -#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ -- GitLab From fc47fee1306b2b89175bbeca194f4001e7b6c6df Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 27 May 2025 17:11:49 +0200 Subject: [PATCH 642/698] merge !1610 --- lib_dec/ivas_init_dec_fx.c | 308 ++++++++++++++++++++++++++++++++- lib_rend/ivas_output_init_fx.c | 21 ++- 2 files changed, 324 insertions(+), 5 deletions(-) diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index 1517c66c3..842bdbcdc 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -42,6 +42,11 @@ #include "prot_fx.h" #include "wmc_auto.h" #include "ivas_prot_fx.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "lib_isar_pre_rend.h" +#include "isar_prot.h" +#include "isar_stat.h" +#endif /*-------------------------------------------------------------------* @@ -52,6 +57,214 @@ static ivas_error ivas_read_format( Decoder_Struct *st_ivas, Word16 *num_bits_re static ivas_error doSanityChecks_IVAS( Decoder_Struct *st_ivas ); +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error ivas_dec_reconfig_split_rend( Decoder_Struct *st_ivas ); + + +/*-------------------------------------------------------------------* + * ivas_dec_reconfig_split_rend() + * + * IVAS decoder split rend reconfig + *-------------------------------------------------------------------*/ + +static ivas_error ivas_dec_reconfig_split_rend( + Decoder_Struct *st_ivas /* i : IVAS decoder structure */ +) +{ + ivas_error error; + Word16 cldfb_in_flag, num_ch, ch, isCldfbNeeded, i, pcm_out_flag; + SPLIT_REND_WRAPPER *hSplitRendWrapper; + + hSplitRendWrapper = &st_ivas->hSplitBinRend->splitrend; + move16(); + pcm_out_flag = ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + move16(); + cldfb_in_flag = 0; + move16(); + + IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || + EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || + EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || + EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + { + cldfb_in_flag = 1; + move16(); + } + + ISAR_PRE_REND_GetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &hSplitRendWrapper->multiBinPoseData, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->sr_pose_pred_axis : DEFAULT_AXIS ); + + isCldfbNeeded = 0; + move16(); + + IF( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) || + ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) + { + cldfb_in_flag = 0; + move16(); + } + + IF( NE_16( st_ivas->renderer_type, RENDERER_DISABLE ) ) + { + IF( EQ_16( cldfb_in_flag, 0 ) ) + { + isCldfbNeeded = 1; + move16(); + } + ELSE IF( EQ_16( st_ivas->hRenderConfig->split_rend_config.codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) && cldfb_in_flag ) + { + isCldfbNeeded = 1; + move16(); + } + ELSE IF( pcm_out_flag && cldfb_in_flag ) + { + isCldfbNeeded = 1; + move16(); + } + } + ELSE IF( st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) + { + isCldfbNeeded = 1; + move16(); + } + + IF( EQ_16( isCldfbNeeded, 1 ) && hSplitRendWrapper->hCldfbHandles == NULL ) + { + IF( ( hSplitRendWrapper->hCldfbHandles = (CLDFB_HANDLES_WRAPPER_HANDLE) malloc( sizeof( CLDFB_HANDLES_WRAPPER ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for CLDFB handles\n" ) ); + } + + num_ch = i_mult( MAX_HEAD_ROT_POSES, BINAURAL_CHANNELS ); + move16(); + FOR( ch = 0; ch < num_ch; ch++ ) + { + hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL; + move16(); + } + + num_ch = i_mult( hSplitRendWrapper->multiBinPoseData.num_poses, BINAURAL_CHANNELS ); + move16(); + + FOR( ch = 0; ch < num_ch; ch++ ) + { + IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), CLDFB_ANALYSIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not open CLDFB handles\n" ) ); + } + } + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + ELSE IF( EQ_16( isCldfbNeeded, 0 ) && hSplitRendWrapper->hCldfbHandles != NULL ) + { + num_ch = i_mult( MAX_HEAD_ROT_POSES, BINAURAL_CHANNELS ); + move16(); + FOR( ch = 0; ch < num_ch; ch++ ) + { + IF( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] != NULL ) + { + deleteCldfb_ivas_fx( &hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ); + hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL; + move32(); + } + } + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + IF( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] != NULL ) + { + deleteCldfb_ivas_fx( &hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ); + hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] = NULL; + move32(); + } + } + + free( hSplitRendWrapper->hCldfbHandles ); + hSplitRendWrapper->hCldfbHandles = NULL; + move32(); + } + + IF( ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) && + ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || NE_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) && + !( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) /* td-rend not needed? */ + { + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + IF( st_ivas->hTdRendHandles[i] != NULL ) + { + st_ivas->hTdRendHandles[i]->HrFiltSet_p = NULL; + move32(); + ivas_td_binaural_close_fx( &st_ivas->hTdRendHandles[i] ); + } + } + } + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * ivas_dec_init_split_rend() + * + * IVAS decoder split rend init + *-------------------------------------------------------------------*/ + +static ivas_error ivas_dec_init_split_rend( + Decoder_Struct *st_ivas /* i : IVAS decoder structure */ +) +{ + ivas_error error; + Word16 cldfb_in_flag, pcm_out_flag; + Word16 mixed_td_cldfb_flag; + + pcm_out_flag = ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + cldfb_in_flag = 0; + move16(); + + IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || + EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || + EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || + EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + { + cldfb_in_flag = 1; + move16(); + } + + ISAR_PRE_REND_GetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->sr_pose_pred_axis : DEFAULT_AXIS ); + + IF( EQ_16( cldfb_in_flag, 1 ) && ( EQ_16( st_ivas->hSplitBinRend->splitrend.multiBinPoseData.poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) ) + { + IF( ( st_ivas->hSplitBinRend->hCldfbDataOut = (ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for cldfb data out buffer\n" ) ); + } + } + + mixed_td_cldfb_flag = 0; + move16(); + IF( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) || + ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && EQ_16( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) ) + { + mixed_td_cldfb_flag = 1; + move16(); + } + +#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS + error = ISAR_PRE_REND_open( &st_ivas->hSplitBinRend->splitrend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hDecoderConfig->output_Fs, cldfb_in_flag, pcm_out_flag, st_ivas->hDecoderConfig->render_framesize, mixed_td_cldfb_flag ); + move16(); +#else + error = ISAR_PRE_REND_open( &st_ivas->hSplitBinRend->splitrend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hDecoderConfig->output_Fs, cldfb_in_flag, pcm_out_flag, (int16_t) st_ivas->hDecoderConfig->render_framesize, mixed_td_cldfb_flag ); + move16(); +#endif + return error; +} +#endif /*-------------------------------------------------------------------* * ivas_dec_setup() @@ -521,6 +734,19 @@ ivas_error ivas_dec_setup( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*-----------------------------------------------------------------* + * reconfig split rendering as renderer might change after bitrate switching + *-----------------------------------------------------------------*/ + + IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + if ( ( error = ivas_dec_reconfig_split_rend( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif /*----------------------------------------------------------------* * Reset bitstream pointers @@ -956,7 +1182,12 @@ ivas_error ivas_init_decoder_front( *--------------------------------------------------------------------*/ test(); test(); +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || + ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) ) +#else IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#endif { IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) ) { @@ -1131,6 +1362,20 @@ ivas_error ivas_init_decoder_fx( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*-----------------------------------------------------------------* + * Initialize binuaral split rendering + *-----------------------------------------------------------------*/ + + IF( st_ivas->hSplitBinRend != NULL && ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || + ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan && EQ_16( st_ivas->hRenderConfig->split_rend_config.dof, 0 ) ) ) ) + { + IF( ( error = ivas_dec_init_split_rend( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif /*-----------------------------------------------------------------* * Allocate and initialize SCE/CPE and other handles @@ -1321,7 +1566,7 @@ ivas_error ivas_init_decoder_fx( } ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ), - st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); + st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0, 1 ); } st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); move16(); @@ -1511,7 +1756,7 @@ ivas_error ivas_init_decoder_fx( } ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, extract_l( Mpy_32_32_r( st_ivas->hDecoderConfig->output_Fs, INV_CLDFB_BANDWIDTH_Q31 ) ), - st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); + st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0, 1 ); } FOR( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) @@ -2067,9 +2312,15 @@ ivas_error ivas_init_decoder_fx( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), + IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -2233,6 +2484,9 @@ ivas_error ivas_init_decoder_fx( { IF( st_ivas->hBinRenderer->render_lfe ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) +#endif { /* Account for filterbank delay */ binauralization_delay_ns = L_add( binauralization_delay_ns, IVAS_FB_DEC_DELAY_NS ); @@ -2582,7 +2836,14 @@ void ivas_initialize_handles_dec( /* rendering handles */ st_ivas->hBinRenderer = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + st_ivas->hDiracDecBin[i] = NULL; + } +#else st_ivas->hDiracDecBin = NULL; +#endif st_ivas->hDirACRend = NULL; st_ivas->hSpatParamRendCom = NULL; st_ivas->hLsSetUpConversion = NULL; @@ -2607,7 +2868,13 @@ void ivas_initialize_handles_dec( st_ivas->hExtOrientationData = NULL; st_ivas->hCombinedOrientationData = NULL; - +#ifdef SPLIT_REND_WITH_HEAD_ROT + st_ivas->hSplitBinRend = NULL; + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + st_ivas->hTdRendHandles[i] = NULL; + } +#endif /* JBM handles */ st_ivas->hTcBuffer = NULL; st_ivas->hJbmMetadata = NULL; @@ -2744,12 +3011,31 @@ void ivas_destroy_dec_fx( /* Fastconv binaural renderer handle */ ivas_binRenderer_close_fx( &st_ivas->hBinRenderer ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + /* TD binaural renderer handles */ + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( st_ivas->hTdRendHandles[i] != NULL ) + { + st_ivas->hTdRendHandles[i]->HrFiltSet_p = NULL; + ivas_td_binaural_close_fx( &st_ivas->hTdRendHandles[i] ); + } + } +#endif + /* Parametric binaural renderer handle */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); +#else ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); +#endif /* Crend handle */ - +#ifdef SPLIT_REND_WITH_HEAD_ROT + ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ); +#else ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); +#endif /* Reverb handle */ ivas_reverb_close( &st_ivas->hReverb ); @@ -2915,7 +3201,11 @@ void ivas_init_dec_get_num_cldfb_instances( move16(); } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( st_ivas->hDiracDecBin[0]->useTdDecorr ) +#else IF( st_ivas->hDiracDecBin->useTdDecorr ) +#endif { *numCldfbAnalyses = add( *numCldfbAnalyses, 2 ); move16(); @@ -3468,12 +3758,22 @@ static ivas_error doSanityChecks_IVAS( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( ( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( output_Fs, 48000 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." ); + } +#endif IF( st_ivas->hDecoderConfig->Opt_Headrotation ) { test(); test(); +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) +#else IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) +#endif { return IVAS_ERROR( IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED, "Wrong set-up: Head-rotation not supported in this configuration" ); } diff --git a/lib_rend/ivas_output_init_fx.c b/lib_rend/ivas_output_init_fx.c index 057161c7c..7bcf6e37d 100644 --- a/lib_rend/ivas_output_init_fx.c +++ b/lib_rend/ivas_output_init_fx.c @@ -100,6 +100,10 @@ Word16 audioCfg2channels( move16(); BREAK; case IVAS_AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: +#endif case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: nchan_out = 2; @@ -266,6 +270,10 @@ void ivas_output_init( move16(); BREAK; case IVAS_AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: +#endif case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: case IVAS_AUDIO_CONFIG_ISM1: @@ -370,7 +378,12 @@ Word16 ivas_get_nchan_buffers_dec( { nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); } - ELSE IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + ELSE if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#endif + ) { nchan_out_buff = shl( CPE_CHANNELS, 1 ); } @@ -451,6 +464,12 @@ Word16 ivas_get_nchan_buffers_dec( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + nchan_out_buff = max( nchan_out_buff, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS ); + } +#endif return nchan_out_buff; } -- GitLab From 6f5f8204c758fecf133dacde4d169cb71788fc83 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 27 May 2025 17:18:18 +0200 Subject: [PATCH 643/698] applied patch to fix clang editing --- lib_rend/ivas_reverb_utils_fx.c | 2 +- lib_util/hrtf_file_reader.c | 46 ++++++++++++++++----------------- lib_util/hrtf_file_reader.h | 4 +-- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 3be26195a..689670477 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -404,4 +404,4 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( free( avg_pwr_right_e ); return IVAS_ERR_OK; #endif -} \ No newline at end of file +} diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index c34eaf220..7a74e8e88 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -1322,12 +1322,12 @@ static ivas_error create_HRTF_from_rawdata( hrtf_data_rptr += sizeof( float ); } #else - for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) - { - //( *hHRTF )->inv_diffuse_weight[i] = *( (float *) ( hrtf_data_rptr ) ); - ( *hHRTF )->inv_diffuse_weight_fx[i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); - hrtf_data_rptr += sizeof( float ); - } + for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) + { + //( *hHRTF )->inv_diffuse_weight[i] = *( (float *) ( hrtf_data_rptr ) ); + ( *hHRTF )->inv_diffuse_weight_fx[i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + hrtf_data_rptr += sizeof( float ); + } #endif /* max_total_num_fsamp_per_iteration */ max_total_num_fsamp_per_iteration = *( (UWord16 *) ( hrtf_data_rptr ) ); @@ -1475,7 +1475,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES HRTF_READER_RENDERER_TYPE rend_type, /* i : Renderer type */ #else - RENDERER_TYPE rend_type, /* i : Renderer type */ + RENDERER_TYPE rend_type, /* i : Renderer type */ #endif BINAURAL_INPUT_AUDIO_CONFIG input_cfg /* i : Input binaural config */ ) @@ -1512,7 +1512,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "renderer type not compliant" ); } #else - ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, rend_type, ( *hHRTF )->allocate_init_flag ); + ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, rend_type, ( *hHRTF )->allocate_init_flag ); #endif hrtf_data_rptr = hrtf_data; @@ -1530,7 +1530,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #else - if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) + if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); @@ -1596,7 +1596,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) #endif { /* HRIR_HOA3 */ @@ -1663,7 +1663,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) #endif { /* HRIR_HOA2 */ @@ -1731,7 +1731,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) #endif { /* HRIR_FOA */ @@ -1800,7 +1800,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #else - else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) + else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); @@ -1882,13 +1882,13 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); #else - memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); - hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); - floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); - memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); - hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); - floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); + hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); #endif } @@ -1948,7 +1948,7 @@ ivas_error load_fastconv_HRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) ) #else - if ( ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) + if ( ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) #endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) @@ -2122,7 +2122,7 @@ ivas_error load_parambin_HRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ #else - if ( hrtf_header.rend_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ + if ( hrtf_header.rend_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ #endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) @@ -2216,7 +2216,7 @@ ivas_error create_SetOfHRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) #else - if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV ) + if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV ) #endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) @@ -2239,7 +2239,7 @@ ivas_error create_SetOfHRTF_from_binary( #ifdef FIX_638_ENERGIE_IAC_ROM_TABLES else if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM ) #else - else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) + else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) #endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index 302a90dee..14ac33e9d 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -107,8 +107,8 @@ ivas_error load_reverb_binary( int32_t sampleRate, /* i : sample rate */ #else IVAS_DEC_HRTF_HANDLE hHrtf, /* i/o: HRTF handle */ -#endif - const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ +#endif + const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ); #endif -- GitLab From 966a2204943bc48070efc527da4c43202d3193a5 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 27 May 2025 18:02:25 +0200 Subject: [PATCH 644/698] fix missing #ifdef --- lib_dec/ivas_init_dec_fx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index 842bdbcdc..fea9c5b97 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -2267,7 +2267,11 @@ ivas_error ivas_init_decoder_fx( move16(); } +#ifdef NONBE_FIX_978_MC_TDREND_REVERB + IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#else IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#endif { IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) { -- GitLab From 30a34f9e30c460771ea363c3a283f80e5f7794c3 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 09:05:34 +0200 Subject: [PATCH 645/698] activated compiler switch --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index b6ae74594..8b312e21b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -110,7 +110,7 @@ #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ -//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ -- GitLab From 87603b32350da5f42cb1296de1e52003a7f0fe23 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 11:29:56 +0200 Subject: [PATCH 646/698] fixed formatting - compiler switch --- lib_dec/ivas_init_dec_fx.c | 82 +++++++++++++++++----- lib_rend/ivas_prot_rend_fx.h | 4 +- lib_rend/ivas_rom_binaural_crend_head_fx.c | 2 +- 3 files changed, 66 insertions(+), 22 deletions(-) diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index fea9c5b97..a697fc407 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -1156,8 +1156,7 @@ ivas_error ivas_init_decoder_front( IF( st_ivas->hDecoderConfig->Opt_HRTF_binary ) { - IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( st_ivas->hHrtfTD ) ) ), IVAS_ERR_OK ) ) - { + IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( st_ivas->hHrtfTD ) ) ), IVAS_ERR_OK ) ){ return error; } @@ -1175,32 +1174,39 @@ ivas_error ivas_init_decoder_front( { return error; } + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ), IVAS_ERR_OK ) ) + { + return error; + } +#endif } - /*-------------------------------------------------------------------* - * Allocate and initialize Binaural Renderer configuration handle - *--------------------------------------------------------------------*/ - test(); - test(); +/*-------------------------------------------------------------------* + * Allocate and initialize Binaural Renderer configuration handle + *--------------------------------------------------------------------*/ +test(); +test(); #ifdef SPLIT_REND_WITH_HEAD_ROT - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || - ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) ) +IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || + ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) ) #else - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif +{ + IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) ) { - IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) ) - { - return error; - } + return error; + } - IF( NE_32( ( error = ivas_render_config_init_from_rom_fx( &st_ivas->hRenderConfig ) ), IVAS_ERR_OK ) ) - { - return error; - } + IF( NE_32( ( error = ivas_render_config_init_from_rom_fx( &st_ivas->hRenderConfig ) ), IVAS_ERR_OK ) ) + { + return error; } +} - return error; +return error; } @@ -1362,6 +1368,21 @@ ivas_error ivas_init_decoder_fx( } } + +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + /*--------------------------------------------------------------------* + * Allocate and initialize HRTF Statistics handle + *--------------------------------------------------------------------*/ + + IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + IF( NE_32( ( error = ivas_HRTF_statistics_init( &st_ivas->hHrtfStatistics, output_Fs ) ), IVAS_ERR_OK ) ) + { + return error; + } + } +#endif + #ifdef SPLIT_REND_WITH_HEAD_ROT /*-----------------------------------------------------------------* * Initialize binuaral split rendering @@ -2273,7 +2294,11 @@ ivas_error ivas_init_decoder_fx( IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) #endif { +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if ( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -2317,13 +2342,24 @@ ivas_error ivas_init_decoder_fx( } #ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), + IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) +#endif +#else +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + if( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) +#endif #endif { return error; @@ -2861,6 +2897,9 @@ void ivas_initialize_handles_dec( st_ivas->hSetOfHRTF = NULL; st_ivas->hHrtfFastConv = NULL; st_ivas->hHrtfParambin = NULL; +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + st_ivas->hHrtfStatistics = NULL; +#endif st_ivas->hoa_dec_mtx = NULL; st_ivas->hMasaIsmData = NULL; st_ivas->hSbaIsmData = NULL; @@ -3095,6 +3134,11 @@ void ivas_destroy_dec_fx( /* Parametric binauralizer HRTF filters */ ivas_HRTF_parambin_binary_close_fx( &st_ivas->hHrtfParambin ); +#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + /* HRTF statistics */ + ivas_HRTF_statistics_close( &st_ivas->hHrtfStatistics ); +#endif + /* Config. Renderer */ ivas_render_config_close( &( st_ivas->hRenderConfig ) ); diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index ca1d3ccdc..a7f52eb32 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -957,8 +957,8 @@ ivas_error ivas_binaural_reverb_open_fastconv_fx( #endif const Word32 sampling_rate, /* i : sampling rate */ #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - const float *defaultTimes, /* i : default reverberation times */ - const float *defaultEne /* i : default reverberation energies */ + const Word32 *defaultTimes, /* i : default reverberation times */ + const Word32 *defaultEne /* i : default reverberation energies */ #else const HRTFS_FASTCONV_HANDLE hHrtfFastConv /* i : FastConv HRTF handle */ #endif diff --git a/lib_rend/ivas_rom_binaural_crend_head_fx.c b/lib_rend/ivas_rom_binaural_crend_head_fx.c index b4ebfe6e5..71a98fb0e 100644 --- a/lib_rend/ivas_rom_binaural_crend_head_fx.c +++ b/lib_rend/ivas_rom_binaural_crend_head_fx.c @@ -59838,7 +59838,7 @@ const Word32 defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ 2790378,2355663,2029237,1865240,1832432 }; -#ifndef NONBE_FIX_AVG_IAC_CLDFB_REVERB +#ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { 130123416,130123416,128225040,123478832,118732624,113118568,104033232,94947768,85862304, -- GitLab From d8e0abccf35f5f41b80678308c013472b07aec19 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 12:11:15 +0200 Subject: [PATCH 647/698] verified Word32 type assignments --- lib_rend/ivas_reverb_utils_fx.c | 2 +- lib_rend/ivas_rom_binaural_crend_head.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 689670477..28eb69141 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -309,7 +309,7 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( #endif float input_fc[FFT_SPECTRUM_SIZE]; -#ifndef NON_BE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h index 1d18ec02a..9e40c49ba 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.h +++ b/lib_rend/ivas_rom_binaural_crend_head.h @@ -358,9 +358,9 @@ extern const Word32 defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; / extern const Word32 defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ #ifdef NONBE_FIX_AVG_IAC_CLDFB_REVERB -extern float defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-27*/ -extern float defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ -extern float defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ +extern Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-27*/ +extern Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ +extern Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ #else extern const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ extern const Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ -- GitLab From 75d6a4cd9faf425020eca5ed44b8b0d16b27bd41 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 12:35:19 +0200 Subject: [PATCH 648/698] fixed definitions of type Word32 --- lib_rend/ivas_prot_rend_fx.h | 4 ++-- lib_rend/ivas_reverb_fx.c | 20 ++++++++++---------- lib_rend/ivas_reverb_utils_fx.c | 2 -- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index a7f52eb32..fa74d0f0e 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -1152,8 +1152,8 @@ ivas_error ivas_reverb_prepare_cldfb_params( const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_STATISTICS_HANDLE hHrtfStatistics, const int32_t output_Fs, - float *pOutput_t60, - float *pOutput_ene ); + Word32 *pOutput_t60, + Word32 *pOutput_ene ); #else ivas_error ivas_reverb_prepare_cldfb_params( IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index a7a3e5039..473a1e701 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2480,20 +2480,20 @@ static ivas_error ivas_binaural_reverb_open_fx( ivas_error ivas_binaural_reverb_init( REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ - const int16_t numBins, /* i : number of CLDFB bins */ - const int16_t numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ + const Word16 numBins, /* i : number of CLDFB bins */ + const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ - const int32_t sampling_rate, /* i : sampling rate */ - const float *defaultTimes, /* i : default reverberation times */ - const float *defaultEne /* i : default reverberation energies */ + const Word32 sampling_rate, /* i : sampling rate */ + const Word32 *defaultTimes, /* i : default reverberation times */ + const Word32 *defaultEne /* i : default reverberation energies */ ) { ivas_error error; - const float *revTimes; - const float *revEne; - float t60[CLDFB_NO_CHANNELS_MAX]; - float ene[CLDFB_NO_CHANNELS_MAX]; - int16_t preDelay; + const Word32 *revTimes; + const Word32 *revEne; + Word32 t60[CLDFB_NO_CHANNELS_MAX]; + Word32 ene[CLDFB_NO_CHANNELS_MAX]; + Word16 preDelay; error = IVAS_ERR_OK; diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 28eb69141..2cead56f1 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -330,8 +330,6 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); - Word32 *avg_pwr_left_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); - Word32 *avg_pwr_right_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); Word32 *output_fc_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); Word32 *avg_pwr_left_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); -- GitLab From 714426d6e864e74ec550fa7ccbc6859082d9b244 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 28 May 2025 13:40:13 +0300 Subject: [PATCH 649/698] Implement MR1400 changes to main-pc. Not including changes in split rendering off path. --- lib_com/options.h | 1 + lib_dec/ivas_dirac_dec_fx.c | 4 + lib_dec/ivas_init_dec_fx.c | 4 + lib_dec/ivas_ism_dec_fx.c | 8 ++ .../ivas_dirac_dec_binaural_functions_fx.c | 92 ++++++++++++++++++- lib_rend/ivas_prot_rend_fx.h | 4 + lib_rend/ivas_stat_rend.h | 20 ++++ lib_rend/lib_rend_fx.c | 24 ++++- 8 files changed, 150 insertions(+), 7 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 73a8f082f..9c2c217ea 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -135,6 +135,7 @@ #define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ #define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ +#define NONBE_FIX_991_PARAMBIN_BINARY_HRTF /* Nokia: issue #991: fix using of binary file HRTF in ParamBin */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index ff02d813d..5f8d1512b 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1150,7 +1150,11 @@ ivas_error ivas_dirac_dec_config_fx( IF( st_ivas->hDiracDecBin == NULL ) #endif { +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#endif { return error; } diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index fea9c5b97..ee4a6b4fe 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -2234,7 +2234,11 @@ ivas_error ivas_init_decoder_fx( } } +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#endif { return error; } diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index f0ad208f5..3cc423910 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -291,7 +291,11 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( return error; } +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -322,7 +326,11 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( return error; } +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) ) +#else IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#endif { return error; } diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index ac387c5cc..11467f008 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -128,9 +128,17 @@ static void adaptTransportSignalsHeadtracked_fx( COMBINED_ORIENTATION_HANDLE hHe static void ivas_dirac_dec_binaural_check_and_switch_transports_headtracked_fx( COMBINED_ORIENTATION_HANDLE hHeadTrackData, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const Word16 nBins, const Word16 nSlots, Word32 Rmat[3][3] /*Q30*/ ); - +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF +static void hrtfShGetHrtf_fx( const Word16 bin, const Word16 aziDeg, const Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 useCachedValue, HRTFS_PARAMBIN_HANDLE hHrtfParambin ); +#else static void hrtfShGetHrtf_fx( const Word16 bin, const Word16 aziDeg, const Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 useCachedValue ); +#endif + +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF +static void getDirectPartGains_fx( const Word16 bin, Word16 aziDeg, Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, const UWord8 renderStereoOutputInsteadOfBinaural, Word32 Rmat[3][3] /*Q30*/, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 isHeadtracked, HRTFS_PARAMBIN_HANDLE hHrtfParambin ); +#else static void getDirectPartGains_fx( const Word16 bin, Word16 aziDeg, Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, const UWord8 renderStereoOutputInsteadOfBinaural, Word32 Rmat[3][3] /*Q30*/, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 isHeadtracked ); +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT static void ivas_masa_ext_rend_parambin_internal_fx( MASA_EXT_REND_HANDLE hMasaExtRend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, Word32 *output_fx[] /*Q11*/, const Word16 subframe, const SPLIT_REND_WRAPPER *hSplitRendWrapper, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] ); @@ -162,7 +170,11 @@ static void matrixTransp2Mul_fx( *------------------------------------------------------------------------*/ ivas_error ivas_dirac_dec_init_binaural_data_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + HRTFS_PARAMBIN_HANDLE *phHrtfParambin /* i : HRTF structure for rendering */ +#else HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : HRTF structure for rendering */ +#endif ) { DIRAC_DEC_BIN_HANDLE hDiracDecBin; @@ -206,6 +218,9 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( hDiracDecBin->hReverb = NULL; hDiracDecBin->h_freq_domain_decorr_ap_params = NULL; hDiracDecBin->h_freq_domain_decorr_ap_state = NULL; +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + hDiracDecBin->phHrtfParambin = NULL; +#endif } output_Fs = st_ivas->hDecoderConfig->output_Fs; @@ -297,7 +312,11 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( } ELSE IF( EQ_32( renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) /* Indication of binaural rendering with room effect */ { +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + Copy32( ( *phHrtfParambin )->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); +#else Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); +#endif hDiracDecBin->q_earlyPartEneCorrection = Q28; move16(); /* reconfiguration needed when Reverb. parameters are changed -> close and open the handle again */ @@ -315,8 +334,11 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( IF( hDiracDecBin->hReverb == NULL ) #endif { - /* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */ - IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ), IVAS_ERR_OK) ) +#else + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes, st_ivas->hHrtfParambin->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -390,6 +412,10 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); /* Q14 */ move16(); +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + hDiracDecBin->phHrtfParambin = phHrtfParambin; +#endif + #ifdef SPLIT_REND_WITH_HEAD_ROT st_ivas->hDiracDecBin[pos_idx] = hDiracDecBin; } @@ -1797,7 +1823,11 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( spreadCoh_fx = s_max( spreadCoh_fx, altSpreadCoh_fx ); } +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked, *hDiracDecBin->phHrtfParambin ); +#else getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked ); +#endif Word16 q_lr = Q28; move16(); @@ -1848,7 +1878,11 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( rImagp_fx = Mpy_32_32( rImagp_fx, centerMul_fx ); // Q25 /* Apply the gain for the left source of the three coherent sources */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked, *hDiracDecBin->phHrtfParambin ); +#else getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked ); +#endif hrtfEneSides_fx = L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25 L_add( Mpy_32_32( lImagpTmp_fx, lImagpTmp_fx ), // Q25 @@ -1862,7 +1896,11 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( /* Apply the gain for the right source of the three coherent sources. * -30 degrees to 330 wrapping due to internal functions. */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked, *hDiracDecBin->phHrtfParambin ); +#else getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked ); +#endif hrtfEneSides_fx = L_add( hrtfEneSides_fx, L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25 @@ -3308,7 +3346,11 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( q_processMtxPrev_SCCR[bin] = q_processMtx_bin; move16(); +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[chB], isHeadtracked, *hDiracDecBin->phHrtfParambin ); +#else getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[chB], isHeadtracked ); +#endif hDiracDecBin->processMtxRe_fx[0][add( chB, 2 )][bin] = extract_h( Mpy_32_32( lRealp_fx, gainFactor_fx ) ); move16(); @@ -5598,7 +5640,13 @@ static void getDirectPartGains_fx( const UWord8 renderStereoOutputInsteadOfBinaural, Word32 Rmat[3][3], /*Q30*/ PARAMBIN_HRTF_GAIN_CACHE *gainCache, - const Word16 isHeadtracked ) +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + const Word16 isHeadtracked, + HRTFS_PARAMBIN_HANDLE hHrtfParambin +#else + const Word16 isHeadtracked +#endif +) { // float aziRad, eleRad; Word32 y, mappedX; @@ -5727,7 +5775,11 @@ static void getDirectPartGains_fx( test(); IF( EQ_16( aziDeg, gainCache->azi ) && EQ_16( eleDeg, gainCache->ele ) ) { +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, TRUE, hHrtfParambin ); +#else hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, TRUE ); +#endif } ELSE { @@ -5742,7 +5794,11 @@ static void getDirectPartGains_fx( // eleDeg = L_shr(eleDeg_32, 22); // aziDeg = L_shr(aziDeg_32, 22); } +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, FALSE, hHrtfParambin ); +#else hrtfShGetHrtf_fx( bin, aziDeg, eleDeg, lRealp, lImagp, rRealp, rImagp, gainCache, FALSE ); +#endif } } @@ -5758,9 +5814,21 @@ static void hrtfShGetHrtf_fx( Word32 *rRealp, Word32 *rImagp, PARAMBIN_HRTF_GAIN_CACHE *gainCache, - const Word16 useCachedValue ) +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + const Word16 useCachedValue, + HRTFS_PARAMBIN_HANDLE hHrtfParambin +#else + const Word16 useCachedValue +#endif +) { Word16 k; +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + Word32( *hrtfShCoeffsReInt_fx )[16][60]; + Word32( *hrtfShCoeffsImInt_fx )[16][60]; + hrtfShCoeffsReInt_fx = hHrtfParambin->hrtfShCoeffsRe_fx; + hrtfShCoeffsImInt_fx = hHrtfParambin->hrtfShCoeffsIm_fx; +#endif *lRealp = 0; *lImagp = 0; @@ -5778,10 +5846,17 @@ static void hrtfShGetHrtf_fx( FOR( k = 0; k < HRTF_SH_CHANNELS; k++ ) { +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + *lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsReInt_fx[0][k][bin] ); // Q28 + *lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsImInt_fx[0][k][bin] ); // Q28 + *rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsReInt_fx[1][k][bin] ); // Q28 + *rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsImInt_fx[1][k][bin] ); // Q28 +#else *lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsRe_fx[0][k][bin] ); // Q28 *lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsIm_fx[0][k][bin] ); // Q28 *rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsRe_fx[1][k][bin] ); // Q28 *rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsIm_fx[1][k][bin] ); // Q28 +#endif move32(); move32(); move32(); @@ -5800,10 +5875,17 @@ static void hrtfShGetHrtf_fx( FOR( k = 0; k < HRTF_SH_CHANNELS; k++ ) { +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + *lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsReInt_fx[0][k][bin] ); // Q28 + *lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsImInt_fx[0][k][bin] ); // Q28 + *rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsReInt_fx[1][k][bin] ); // Q28 + *rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsImInt_fx[1][k][bin] ); // Q28 +#else *lRealp = Madd_32_16( *lRealp, shVec[k], hrtfShCoeffsRe_fx[0][k][bin] ); // Q28 *lImagp = Madd_32_16( *lImagp, shVec[k], hrtfShCoeffsIm_fx[0][k][bin] ); // Q28 *rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsRe_fx[1][k][bin] ); // Q28 *rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsIm_fx[1][k][bin] ); // Q28 +#endif gainCache->shVec_fx[k] = shVec[k]; // Q29 move32(); move32(); diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index 7ab5288cc..17791d33b 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -231,7 +231,11 @@ void ivas_masa_ext_rend_parambin_render_fx( ); ivas_error ivas_dirac_dec_init_binaural_data_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + HRTFS_PARAMBIN_HANDLE *phHrtfParambin /* i : HRTF structure for rendering */ +#else HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : HRTF structure for rendering */ +#endif ); void ivas_dirac_dec_close_binaural_data( diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index b7acbca2c..c2368a028 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -604,6 +604,20 @@ typedef struct ivas_diffuse_distribution_data_structure } DIFFUSE_DISTRIBUTION_DATA, *DIFFUSE_DISTRIBUTION_HANDLE; +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF +typedef struct ivas_hrtfs_parambin_struct +{ + Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ + Word16 hrtfShCoeffsIm_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ + + Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ + Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ + Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /* Q28 */ + + Word16 allocatedFromFile; /* Unused variable that should not be here. Remove in cleanup. */ + +} HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; +#endif /* Parametric binaural data structure */ typedef struct ivas_dirac_dec_binaural_data_structure @@ -668,6 +682,10 @@ typedef struct ivas_dirac_dec_binaural_data_structure ivas_td_decorr_state_t *hTdDecorr; Word16 reqularizationFactor_fx; /* Q14 */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + HRTFS_PARAMBIN_HANDLE *phHrtfParambin; +#endif + DIFFUSE_DISTRIBUTION_HANDLE hDiffuseDist; HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params; @@ -1461,6 +1479,7 @@ typedef struct ivas_hrtfs_fastconv_struct } HRTFS_FASTCONV, *HRTFS_FASTCONV_HANDLE; +#ifndef NONBE_FIX_991_PARAMBIN_BINARY_HRTF typedef struct ivas_hrtfs_parambin_struct { Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ @@ -1473,6 +1492,7 @@ typedef struct ivas_hrtfs_parambin_struct Word16 allocatedFromFile; } HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index 4276b8146..3152955ed 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -10010,7 +10010,11 @@ static ivas_error ivas_masa_ext_rend_parambin_init( ) { DIRAC_DEC_BIN_HANDLE hDiracDecBin; +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + HRTFS_PARAMBIN_HANDLE *phHrtfParambin; +#else HRTFS_PARAMBIN_HANDLE hHrtfParambin; +#endif Word16 nBins; Word32 output_Fs; RENDERER_TYPE renderer_type; @@ -10030,7 +10034,11 @@ static ivas_error ivas_masa_ext_rend_parambin_init( error = IVAS_ERR_OK; move32(); +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + phHrtfParambin = inputMasa->hMasaExtRend->hHrtfParambin; +#else hHrtfParambin = *( inputMasa->hMasaExtRend->hHrtfParambin ); +#endif /* Set common variables and defaults */ output_Fs = *( inputMasa->base.ctx.pOutSampleRate ); move32(); @@ -10135,7 +10143,11 @@ static ivas_error ivas_masa_ext_rend_parambin_init( } ELSE IF( EQ_16( renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) /* Indication of binaural rendering with room effect */ { +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + Copy32( ( *phHrtfParambin )->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); +#else Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); +#endif hDiracDecBin->q_earlyPartEneCorrection = Q28; move16(); @@ -10145,8 +10157,11 @@ static ivas_error ivas_masa_ext_rend_parambin_init( IF( hDiracDecBin->hReverb == NULL ) #endif { - /* Todo Philips: Room acoustics should be passed here once the underlying part works. In this case, it probably should come from render context or somewhere else suitable. */ - IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ), IVAS_ERR_OK ) ) +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) +#else + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes, hHrtfParambin->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) +#endif { return error; } @@ -10192,6 +10207,11 @@ static ivas_error ivas_masa_ext_rend_parambin_init( /* External renderer uses constant regularization factor */ hDiracDecBin->reqularizationFactor_fx = 6554; /* 0.4f in Q14 */ move16(); + +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + hDiracDecBin->phHrtfParambin = phHrtfParambin; +#endif + #ifdef SPLIT_REND_WITH_HEAD_ROT inputMasa->hMasaExtRend->hDiracDecBin[pos_idx] = hDiracDecBin; } -- GitLab From a86062998f069b84c01dcb57f619c90e5fc325c6 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 12:41:41 +0200 Subject: [PATCH 650/698] clang formatting patch --- lib_dec/ivas_init_dec_fx.c | 44 +++++++++++++++++++------------------- lib_rend/ivas_reverb_fx.c | 10 ++++----- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index a697fc407..44e20c645 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -1154,34 +1154,33 @@ ivas_error ivas_init_decoder_front( * Allocate HRTF binary handle *--------------------------------------------------------------------*/ - IF( st_ivas->hDecoderConfig->Opt_HRTF_binary ) - { + IF( st_ivas->hDecoderConfig->Opt_HRTF_binary ){ IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( st_ivas->hHrtfTD ) ) ), IVAS_ERR_OK ) ){ return error; - } +} - IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( st_ivas->hSetOfHRTF ) ) ), IVAS_ERR_OK ) ) - { - return error; - } +IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( st_ivas->hSetOfHRTF ) ) ), IVAS_ERR_OK ) ) +{ + return error; +} - IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) - { - return error; - } +IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) +{ + return error; +} - IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) - { - return error; - } +IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) +{ + return error; +} #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ), IVAS_ERR_OK ) ) - { - return error; - } +IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ), IVAS_ERR_OK ) ) +{ + return error; +} #endif - } +} /*-------------------------------------------------------------------* * Allocate and initialize Binaural Renderer configuration handle @@ -2353,8 +2352,9 @@ ivas_error ivas_init_decoder_fx( #endif #else #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - if( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) + if ( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ), + IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 473a1e701..acfd656c5 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2480,12 +2480,12 @@ static ivas_error ivas_binaural_reverb_open_fx( ivas_error ivas_binaural_reverb_init( REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ - const Word16 numBins, /* i : number of CLDFB bins */ - const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ + const Word16 numBins, /* i : number of CLDFB bins */ + const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ - const Word32 sampling_rate, /* i : sampling rate */ - const Word32 *defaultTimes, /* i : default reverberation times */ - const Word32 *defaultEne /* i : default reverberation energies */ + const Word32 sampling_rate, /* i : sampling rate */ + const Word32 *defaultTimes, /* i : default reverberation times */ + const Word32 *defaultEne /* i : default reverberation energies */ ) { ivas_error error; -- GitLab From a33ee61c7caeca010d3ac040a3c63ec33b7bd06c Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 28 May 2025 14:00:01 +0300 Subject: [PATCH 651/698] Clang format --- lib_rend/ivas_dirac_dec_binaural_functions_fx.c | 10 +++++----- lib_rend/lib_rend_fx.c | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 11467f008..fb403cfb7 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -169,7 +169,7 @@ static void matrixTransp2Mul_fx( * Initialize parametric binaural renderer *------------------------------------------------------------------------*/ ivas_error ivas_dirac_dec_init_binaural_data_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF HRTFS_PARAMBIN_HANDLE *phHrtfParambin /* i : HRTF structure for rendering */ #else @@ -315,7 +315,7 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF Copy32( ( *phHrtfParambin )->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #else - Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); + Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #endif hDiracDecBin->q_earlyPartEneCorrection = Q28; move16(); @@ -335,9 +335,9 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( #endif { #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ), IVAS_ERR_OK) ) + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) #else - if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes, st_ivas->hHrtfParambin->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes, st_ivas->hHrtfParambin->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) #endif { return error; @@ -5886,7 +5886,7 @@ static void hrtfShGetHrtf_fx( *rRealp = Madd_32_16( *rRealp, shVec[k], hrtfShCoeffsRe_fx[1][k][bin] ); // Q28 *rImagp = Madd_32_16( *rImagp, shVec[k], hrtfShCoeffsIm_fx[1][k][bin] ); // Q28 #endif - gainCache->shVec_fx[k] = shVec[k]; // Q29 + gainCache->shVec_fx[k] = shVec[k]; // Q29 move32(); move32(); move32(); diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index 3152955ed..dde950181 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -10146,7 +10146,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF Copy32( ( *phHrtfParambin )->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #else - Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); + Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #endif hDiracDecBin->q_earlyPartEneCorrection = Q28; move16(); @@ -10160,7 +10160,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes, ( *phHrtfParambin )->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) #else - if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes, hHrtfParambin->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes, hHrtfParambin->parametricReverberationEneCorrections ) ), IVAS_ERR_OK ) ) #endif { return error; -- GitLab From 831320b11388d274145054faf7197c593f66624a Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 28 May 2025 13:10:22 +0200 Subject: [PATCH 652/698] remove ivas_prot.h + update MSVC project wrt. added files --- Workspace_msvc/lib_com.vcxproj.filters | 52 +- lib_com/ivas_prot.h | 4068 ------------------------ 2 files changed, 40 insertions(+), 4080 deletions(-) delete mode 100644 lib_com/ivas_prot.h diff --git a/Workspace_msvc/lib_com.vcxproj.filters b/Workspace_msvc/lib_com.vcxproj.filters index f1d860f1a..8860ccd56 100644 --- a/Workspace_msvc/lib_com.vcxproj.filters +++ b/Workspace_msvc/lib_com.vcxproj.filters @@ -508,6 +508,12 @@ common_all_c + + common_ivas_c + + + common_ivas_c + @@ -588,17 +594,39 @@ common_h - - - - - - - - - - - + + common_h + + + common_h + + + common_h + + + common_h + + + common_h + + + common_h + + + common_h + + + common_h + + + common_h + + + common_h + + + common_h + @@ -614,4 +642,4 @@ {b95b7bed-a666-4a00-9332-2b528638503e} - + \ No newline at end of file diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h deleted file mode 100644 index 9ee17fed6..000000000 --- a/lib_com/ivas_prot.h +++ /dev/null @@ -1,4068 +0,0 @@ -/****************************************************************************************************** - - (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository. All Rights Reserved. - - This software is protected by copyright law and by international treaties. - The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB, - Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., - Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, - Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other - contributors to this repository retain full ownership rights in their respective contributions in - the software. This notice grants no license of any kind, including but not limited to patent - license, nor is any license granted by implication, estoppel or otherwise. - - Contributors are required to enter into the IVAS codec Public Collaboration agreement before making - contributions. - - This software is provided "AS IS", without any express or implied warranties. The software is in the - development stage. It is intended exclusively for experts who have experience with such software and - solely for the purpose of inspection. All implied warranties of non-infringement, merchantability - and fitness for a particular purpose are hereby disclaimed and excluded. - - Any dispute, controversy or claim arising under or in relation to providing this software shall be - submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in - accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and - the United Nations Convention on Contracts on the International Sales of Goods. - -*******************************************************************************************************/ - -#ifndef IVAS_PROT_H -#define IVAS_PROT_H - -#include -#include "options.h" -#include -#include "typedef.h" -#include "stat_enc.h" -#include "stat_dec.h" -#include "stat_com.h" -#include "ivas_stat_enc.h" -#include "ivas_stat_dec.h" -#include "ivas_stat_rend.h" -#include "ivas_stat_com.h" -#include "ivas_error_utils.h" - -#define IVAS_FLOAT_FIXED_TO_BE_REMOVED - -/* clang-format off */ - -/*----------------------------------------------------------------------------------* - * General IVAS prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_enc( - Encoder_Struct *st_ivas, /* i : IVAS encoder structure */ - const int16_t *data, /* i : input signal */ - const int16_t n_samples /* i : number of input samples */ -); - -void stereo_dmx_evs_enc( - STEREO_DMX_EVS_ENC_HANDLE hStereoDmxEVS, /* i/o: Stereo downmix for EVS encoder handle */ - const int32_t input_Fs, /* i : input sampling rate */ - int16_t data[CPE_CHANNELS * L_FRAME48k], /* i/o: input signal */ - const int16_t n_samples, /* i : number of input samples */ - const bool is_binaural /* i : indication that input is binaural audio */ -); - -/*! r: number of channels to be analysed */ - -void copy_encoder_config_ivas_fx( - Encoder_Struct *st_ivas, /* i : IVAS encoder structure */ - Encoder_State *st, /* o : encoder state structure */ - const Word16 flag_all /* i : flag 1==update all, 0=partial update Q0*/ -); - - - -ivas_error create_sce_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - const int16_t sce_id, /* i : SCE # identifier */ - const int32_t element_brate /* i : element bitrate */ -); - -ivas_error create_cpe_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - const int16_t cpe_id, /* i : CPE # identifier */ - const int32_t element_brate /* i : element bitrate */ -); - -ivas_error create_mct_enc_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -void destroy_cpe_enc( - CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structure */ -); - -void ivas_mct_enc_close_fx( - MCT_ENC_HANDLE *hMCT /* i/o: MCT encoder structure */ -); - -ivas_error ivas_corecoder_enc_reconfig( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - const int16_t nSCE_old, /* i : number of SCEs in previous frame */ - const int16_t nCPE_old, /* i : number of CPEs in previous frame */ - const int16_t nchan_transport_old, /* i : number of TCs in previous frame */ - const int32_t brate_SCE, /* i : bitrate to be set for the SCEs */ - const int32_t brate_CPE, /* i : bitrate to be set for the CPEs */ - const MC_MODE last_mc_mode /* i : switching between MC modes: last mode */ -); - -ivas_error ivas_sce_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - const int16_t sce_id, /* i : SCE # identifier */ - const float data_f[], /* i : input signal for single channel */ - const int16_t input_frame, /* i : input frame length per channel */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - - -ivas_error ivas_cpe_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - const Word16 cpe_id, /* i : CPE # identifier */ - float data_f_ch0[], /* i : input signal for channel 0 */ - float data_f_ch1[], /* i : input signal for channel 1 */ - const Word16 input_frame, /* i : input frame length per channel */ - const Word16 nb_bits_metadata /* i : number of metadata bits */ -); - -ivas_error ivas_mct_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float *data[MCT_MAX_CHANNELS], /* i : input signal buffers */ - const int16_t input_frame, /* i : input frame length per channel */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - -ivas_error pre_proc_front_ivas( - SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */ - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - const int32_t element_brate, /* i : SCE/CPE element bitrate */ - const int16_t nb_bits_metadata, /* i : number of metadata bits */ - const int16_t input_frame, /* i : frame length */ - const int16_t n, /* i : channel number */ - float old_inp_12k8[], /* o : buffer of old input signal */ - float old_inp_16k[], /* o : buffer of old input signal @16kHz */ - float *ener, /* o : residual energy from Levinson-Durbin */ - float *relE, /* o : frame relative energy */ - float A[NB_SUBFR16k * ( M + 1 )], /* o : A(z) unquantized for the 4 subframes */ - float Aw[NB_SUBFR16k * ( M + 1 )], /* o : weighted A(z) unquantized for subframes */ - float epsP[M + 1], /* o : LP prediction errors */ - float lsp_new[M], /* o : LSPs at the end of the frame */ - float lsp_mid[M], /* o : LSPs in the middle of the frame */ - int16_t *vad_hover_flag, /* o : VAD hangover flag */ - int16_t *attack_flag, /* o : flag signaling attack */ - float realBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer */ - float imagBuffer[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer */ - float old_wsp[], /* o : weighted input signal buffer */ - float pitch_fr[NB_SUBFR], /* o : fractional pitch values */ - float voicing_fr[NB_SUBFR], /* o : fractional pitch gains */ - int16_t *loc_harm, /* o : harmonicity flag */ - float *cor_map_sum, /* o : speech/music clasif. parameter */ - int16_t *vad_flag_dtx, /* o : HE-SAD flag with additional DTX HO */ - float enerBuffer[CLDFB_NO_CHANNELS_MAX], /* o : energy buffer */ - float fft_buff[2 * L_FFT], /* o : FFT buffer */ - const float tdm_A_PCh[M + 1], /* i : unq. LP coeff. of primary channel */ - const float tdm_lsp_new_PCh[M], /* i : unq. LSPs of primary channel */ - const float currFlatness, /* i : flatness parameter */ - const int16_t tdm_ratio_idx, /* i : Current Ratio_L index */ - float fr_bands_LR[][2 * NB_BANDS], /* i : energy in frequency bands */ - const float Etot_LR[], /* i : total energy Left & Right channel */ - float lf_E_LR[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels */ - const int16_t localVAD_HE_SAD_LR[], /* i : HE-SAD flag without hangover, LR channels */ - float band_energies_LR[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN */ - const int16_t flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz */ - const int16_t front_vad_flag, /* i : front-VAD flag to overwrite VAD decision */ - const int16_t force_front_vad, /* i : flag to force VAD decision */ - const int16_t front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision*/ - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */ - const int32_t ivas_total_brate /* i : IVAS total bitrate */ -); - -ivas_error pre_proc_front_ivas_fx( - SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */ - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - const Word32 element_brate, /* i : SCE/CPE element bitrate Q0*/ - const Word16 nb_bits_metadata, /* i : number of metadata bits Q0*/ - const Word16 input_frame, /* i : frame length Q0*/ - const Word16 n, /* i : channel number Q0*/ - Word16 old_inp_12k8_fx[], /* o : buffer of old input signal Q_new-1*/ - Word16 old_inp_16k_fx[], /* o : buffer of old input signal @16kHz Q_new-1*/ - Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/ - Word16 *relE_fx, /* o : frame relative energy Q8*/ - Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* o : A(z) unquantized for the 4 subframes Q12*/ - Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* o : weighted A(z) unquantized for subframes Q12*/ - Word32 epsP_fx[M + 1], /* o : LP prediction errors epsP_fx_q*/ - Word16 *epsP_fx_q, - Word16 lsp_new_fx[M], /* o : LSPs at the end of the frame Q15*/ - Word16 lsp_mid_fx[M], /* o : LSPs in the middle of the frame Q15*/ - Word16 *vad_hover_flag, /* o : VAD hangover flag Q0*/ - Word16 *attack_flag, /* o : flag signaling attack Q0*/ - Word32 realBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer Q(q_re_im_buf)*/ - Word32 imagBuffer_fx[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer Q(q_re_im_buf)*/ - Word16 *q_re_im_buf, /* i/o: Q-factor of real and imag buffer */ - Word16 old_wsp_fx[], /* o : weighted input signal buffer q_old_wsp*/ - Word16 *q_old_wsp, - Word16 pitch_fr_fx[NB_SUBFR], /* o : fractional pitch values Q6*/ - Word16 voicing_fr_fx[NB_SUBFR], /* o : fractional pitch gains Q15*/ - Word16 *loc_harm, /* o : harmonicity flag Q0*/ - Word16 *cor_map_sum_fx, /* o : speech/music clasif. parameter Q8*/ - Word16 *vad_flag_dtx, /* o : HE-SAD flag with additional DTX HO Q0*/ - Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/ - Word16 *enerBuffer_fx_exp, /* o : energy buffer */ - Word16 fft_buff_fx[2 * L_FFT], /* o : FFT buffer fft_buff_fx_q*/ - Word16 *fft_buff_fx_q, /* o : FFT buffer */ - const Word16 tdm_A_PCh_fx[M + 1], /* i : unq. LP coeff. of primary channel Q12*/ - const Word16 tdm_lsp_new_PCh_fx[M], /* i : unq. LSPs of primary channel Q15*/ - const Word16 currFlatness_fx, /* i : flatness parameter Q7*/ - const Word16 tdm_ratio_idx, /* i : Current Ratio_L index Q0*/ - Word32 fr_bands_LR_fx[][2 * NB_BANDS], /* i : energy in frequency bands (fr_bands_LR_fx_q) fr_bands_LR_fx_q*/ - Word16 fr_bands_LR_fx_q[CPE_CHANNELS], - const Word16 Etot_LR_fx[], /* i : total energy Left & Right channel Q8*/ - Word32 lf_E_LR_fx[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels (lf_E_LR_fx_q)*/ - Word16 lf_E_LR_fx_q, - const Word16 localVAD_HE_SAD_LR[], /* i : HE-SAD flag without hangover, LR channels Q0*/ - Word32 band_energies_LR_fx[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN (band_energies_LR_fx_q)*/ - Word16 band_energies_LR_fx_q, - const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/ - const Word16 front_vad_flag, /* i : front-VAD flag to overwrite VAD decision Q0*/ - const Word16 force_front_vad, /* i : flag to force VAD decision Q0*/ - const Word16 front_vad_dtx_flag, /* i : front-VAD DTX flag to overwrite VAD decision Q0*/ - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/ -#ifdef NONBE_1211_DTX_BR_SWITCHING - const Word32 last_ivas_total_brate, /* i : last IVAS total bitrate Q0*/ -#endif - const Word32 ivas_total_brate, /* i : IVAS total bitrate - for setting the DTX Q0*/ - Word16 *Q_new -#ifdef DEBUG_MODE_INFO - , - const Word16 ch_idx -#endif -); -ivas_error pre_proc_ivas_fx( - Encoder_State *st, /* i/o: encoder state structure */ - const Word16 last_element_mode, /* i : last element mode Q0*/ - const Word32 element_brate, /* i : element bitrate Q0*/ - const Word32 last_element_brate, /* i : last element bitrate Q0*/ - const Word16 input_frame, /* i : frame length Q0*/ - Word16 old_inp_12k8_fx[], /* i/o: buffer of old input signal Q_new-1 */ - Word16 old_inp_16k_fx[], /* i/o: buffer of old input signal @ 16kHz Q_new-1 */ - Word16 **inp_fx, /* o : ptr. to inp. signal in the current frame Q_new*/ - Word32 *ener_fx, /* o : residual energy from Levinson-Durbin epsP_fx_q*/ - Word16 A_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: A(z) unquantized for the 4 subframes Q12*/ - Word16 Aw_fx[NB_SUBFR16k * ( M + 1 )], /* i/o: weighted A(z) unquantized for subframes Q14*/ - Word32 epsP_fx[M + 1], /* i : LP prediction errors epsP_fx_q*/ - Word16 *epsP_fx_q, /* i : LP prediction errors */ - Word16 lsp_new_fx[M], /* i/o: LSPs at the end of the frame Q15*/ - Word16 lsp_mid_fx[M], /* i/o: LSPs in the middle of the frame Q15*/ - Word16 *new_inp_resamp16k_fx, /* o : new input signal @16kHz, non pre-emphasised, used by the WB TBE/BWE Q_new-1*/ - Word16 *Voicing_flag, /* o : voicing flag for HQ FEC Q0*/ - Word16 old_wsp_fx[], /* i : weighted input signal buffer e_old_wsp*/ - Word16 e_old_wsp, - const Word16 loc_harm, /* i : harmonicity flag Q0*/ - const Word16 vad_flag_dtx, /* i : HE-SAD flag with additional DTX HO Q0*/ - const Word16 MCT_flag, /* i : hMCT handle allocated (1) or not (0) Q0*/ - const Word16 vad_hover_flag, /* i : VAD hangover flag Q0*/ - const Word16 flag_16k_smc, /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/ - Word32 enerBuffer_fx[CLDFB_NO_CHANNELS_MAX], /* e_enerBuffer */ - Word16 e_enerBuffer, - Word16 fft_buff_fx[2 * L_FFT], /* Qx */ - Word16 cor_map_sum_fx, /* Q8 */ - Word16 *Q_new -); -/*! r: number of clipped samples */ -void ivas_initialize_handles_enc_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -ivas_error ivas_init_encoder( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -void ivas_destroy_enc_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -ivas_error ivas_initialize_MD_bstr_enc_fx( - BSTR_ENC_HANDLE *hBstr, /* o : encoder MD bitstream handle */ - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -void ivas_destroy_MD_bstr_enc_fx( - BSTR_ENC_HANDLE *hMetaData /* i/o: encoder MD bitstream handle */ -); - -ivas_error ivas_init_decoder_front( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_init_decoder( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_output_buff_dec( - float *p_output_f[], /* i/o: output audio buffers */ - const int16_t nchan_out_buff_old, /* i : previous frame number of output channels*/ - const int16_t nchan_out_buff /* i : number of output channels */ -); -#endif - -ivas_error stereo_dmx_evs_init_encoder( - STEREO_DMX_EVS_ENC_HANDLE *hStereoDmxEVS, /* o : Stereo downmix for EVS encoder handle */ - const int32_t input_Fs /* i : input sampling rate */ -); - -void stereo_dmx_evs_close_encoder( - STEREO_DMX_EVS_ENC_HANDLE *hStereoDmxEVS /* i/o: Stereo downmix for EVS encoder handle */ -); - -ivas_error ivas_dec( - Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ - int16_t *data /* o : output synthesis signal */ -); - - -ivas_error mct_dec_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const uint16_t b_nchan_change /* i : flag indicating different channel count */ -); - - -void ivas_mct_dec_close( - MCT_DEC_HANDLE *hMCT /* i/o: MCT decoder structure */ -); - -ivas_error ivas_corecoder_dec_reconfig( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t nSCE_old, /* i : number of SCEs in previous frame */ - int16_t nCPE_old, /* i : number of CPEs in previous frame */ - const int16_t nchan_transport_old, /* i : number of TCs in previous frame */ - const int16_t sba_dirac_stereo_flag_old, /* i : signal stereo rendering using DFT upmix in previous frame */ - const int32_t brate_SCE, /* i : bitrate to be set for the SCEs */ - const int32_t brate_CPE /* i : bitrate to be set for the CPEs */ -); - -ivas_error ivas_hp20_dec_reconfig( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t nchan_hp20_old /* i : number of HP20 filters in previous frame*/ -); - -ivas_error ivas_sce_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t sce_id, /* i : SCE # identifier */ - float *output[1], /* o : output synthesis signal */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - -ivas_error ivas_cpe_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t cpe_id, /* i : CPE # identifier */ - float *output[CPE_CHANNELS], /* o : output synthesis signal */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - -ivas_error ivas_mct_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float *output[], /* o : output synthesis signal */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - -/*! r: number of channels to be synthesised */ - -void copy_decoder_config( - Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ - Decoder_State *st /* o : decoder state structure */ -); - -void destroy_core_dec( - DEC_CORE_HANDLE hCoreCoder /* i/o: core decoder structure */ -); - - -void ivas_initialize_handles_dec( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_core_enc_fx( - SCE_ENC_HANDLE hSCE, /* i/o: SCE encoder structure */ - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ - const Word16 n_CoreChannels, /* i : number of core channels to be coded Q0*/ - Word16 old_inp_12k8_fx[][L_INP_12k8], /* i : buffer of old input signal Q_new-1*/ - Word16 old_inp_16k_fx[][L_INP], /* i : buffer of old input signal Q_new-1*/ - Word16 Q_new[], - Word32 ener_fx[], /* i : residual energy from Levinson-Durbin epsP_fx_q*/ - Word16 A_fx[][NB_SUBFR16k * ( M + 1 )], /* i : A(z) unquantized for the 4 subframes Q12*/ - Word16 Aw_fx[][NB_SUBFR16k * ( M + 1 )], /* i : weighted A(z) unquantized for subframes Q12*/ - Word32 epsP_fx[][M + 1], /* i : LP prediction errors epsP_fx_q*/ - Word16 epsP_fx_q[], /* i : LP prediction errors */ - Word16 lsp_new_fx[][M], /* i : LSPs at the end of the frame Q15*/ - Word16 lsp_mid_fx[][M], /* i : LSPs in the middle of the frame Q15*/ - const Word16 vad_hover_flag[], /* i : VAD hanglover flag Q0*/ - Word16 attack_flag[], /* i : attack flag (GSC or TC) Q0*/ - Word32 realBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: real buffer q_re_im_buf*/ - Word32 imagBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: imag buffer q_re_im_buf*/ - Word16 *q_re_im_buf, - Word16 old_wsp_fx[][L_WSP], /* i : weighted input signal buffer e_old_wsp*/ - Word16 e_old_wsp[], - const Word16 loc_harm[], /* i : harmonicity flag Q0*/ - const Word16 cor_map_sum_fx[], /* i : speech/music clasif. parameter Q8*/ - const Word16 vad_flag_dtx[], /* i : HE-SAD flag with additional DTX HO Q0*/ - Word32 enerBuffer_fx[][CLDFB_NO_CHANNELS_MAX], /* o : energy buffer enerBuffer_fx_exp*/ - Word16 enerBuffer_fx_exp[], /* o : energy buffer */ - Word16 fft_buff_fx[][2 * L_FFT], /* i : FFT buffer Qx*/ - const Word16 tdm_SM_or_LRTD_Pri, /* i : channel combination scheme flag Q0*/ - const Word16 ivas_format, /* i : IVAS format Q0*/ - const Word16 flag_16k_smc /* i : flag to indicate if the OL SMC is run at 16 kHz Q0*/ -); - - - -void decod_gen_2sbfr( - Decoder_State *st, /* i/o: decoder static memory */ - const int16_t sharpFlag, /* i : formant sharpening flag */ - const float *Aq, /* i : LP filter coefficient */ - float *pitch_buf, /* o : floating pitch values for each subframe */ - float *voice_factors, /* o : voicing factors */ - float *exc, /* i/o: adapt. excitation exc */ - float *exc2, /* i/o: adapt. excitation/total exc */ - float *bwe_exc, /* o : excitation for SWB TBE */ - float *gain_buf, /* o : floating pitch gain for each subframe */ - const int16_t tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ - const float tdm_Pri_pitch_buf[] /* i : pitch values for primary channel */ -); - -void synchro_synthesis( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *output[CPE_CHANNELS], /* i/o: output synthesis signal */ - const int16_t output_frame, /* i : Number of samples */ - const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ -); - -void synchro_synthesis_fixed( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *output[CPE_CHANNELS], /* i/o: output synthesis signal */ - const int16_t output_frame, /* i : Number of samples */ - const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ -); - -void stereo_tcx_init_enc( - Encoder_State *st /* i/o: encoder state structure */ -); - - - - -void stereo_tcx_init_dec( - Decoder_State *st, /* i/o: decoder state structure */ - const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */ - const int16_t last_element_mode /* i : element mode of previous frame */ -); - -/*! r: S/M decision (0 = speech or noise, 1 = unclear, 2 = music) */ -int16_t ivas_smc_gmm( - Encoder_State *st, /* i/o: encoder state structure */ - STEREO_CLASSIF_HANDLE hStereoClassif, /* i/o: stereo classifier structure */ - const int16_t localVAD_HE_SAD, /* i : HE-SAD flag without hangover */ - const float Etot, /* i : total frame energy */ - const float lsp_new[M], /* i : LSPs in current frame */ - const float cor_map_sum, /* i : correlation map sum (from multi-harmonic anal.) */ - const float epsP[M + 1], /* i : LP prediciton error */ - const float PS[], /* i : energy spectrum */ - const float non_sta, /* i : unbound non-stationarity */ - const float relE, /* i : relative frame energy */ - int16_t *high_lpn_flag, /* i/o: sp/mus LPN flag */ - const int16_t flag_spitch /* i : flag to indicate very short stable pitch */ -); - -void ivas_smc_mode_selection( - Encoder_State *st, /* i/o: encoder state structure */ - const int32_t element_brate, /* i : element bitrate */ - int16_t smc_dec, /* i : raw decision of the 1st stage classifier */ - const float relE, /* i : relative frame energy */ - const float Etot, /* i : total frame energy */ - int16_t *attack_flag, /* i/o: attack flag (GSC or TC) */ - const float *inp, /* i : input signal */ - const float S_map[], /* i : short-term correlation map */ - const int16_t flag_spitch /* i : flag to indicate very short stable pitch */ -); - -/*! r: S/M decision (0=speech or noise,1=unclear,2=music) */ -int16_t ivas_acelp_tcx20_switching( - Encoder_State *st, /* i/o: encoder state structure */ - const float *inp, /* i : new input signal */ - const float *wsp, /* i : input weighted signal */ - const float non_staX, /* i : unbound non-stationarity for sp/mu clas */ - const float *pitch_fr, /* i : fraction pitch values */ - const float *voicing_fr, /* i : fractional voicing values */ - const float currFlatness, /* i : flatness */ - const float lsp_mid[M], /* i : LSPs at the middle of the frame */ - const float stab_fac, /* i : LP filter stability */ - float *res_cod_SNR_M, - const int16_t flag_16k_smc /* i : flag to indicate if the OL SMC is run at 16 kHz */ -); - - - -void ivas_decision_matrix_dec( - Decoder_State *st, /* i/o: decoder state structure */ - int16_t *sharpFlag, /* o : formant sharpening flag */ - int16_t *core_switching_flag, /* o : ACELP->HQ switching frame flag */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t nchan_out /* i : Number of output channels */ -); - -void set_bw_stereo( - CPE_ENC_HANDLE hCPE /* i/o: CPE encoder structures */ -); - -/*! r: flag indicating whether the coded BW has changed */ -int16_t set_bw_mct( - CPE_ENC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE encoder structures */ - const int16_t nCPE /* i : number of CPEs */ -); -void dec_acelp_fast( - Decoder_State *st, /* i/o: decoder state structure */ - const int16_t cdk_index, /* i : codebook index */ - float code[], /* o : algebraic (fixed) codebook excitation */ - const int16_t L_subfr /* i : subframe length */ -); - -void set_transient_stereo( - CPE_ENC_HANDLE hCPE, /* i : CPE structure */ - float currFlatness[] /* i/o: current flatness */ -); - -/*! r: preliminary flag to force ACELP */ -int16_t transient_analysis( - TRAN_DET_HANDLE hTranDet, /* i : handle transient detection */ - const float cor_map_LT[], /* i : LT correlation map */ - const float multi_harm_limit /* i : multi harminic threshold */ -); - -void ivas_post_proc( - SCE_DEC_HANDLE hSCE, /* i/o: SCE decoder structure */ - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - const int16_t n, /* i : channel number */ - float synth[], /* i/o: output synthesis signal */ - float *output[CPE_CHANNELS], /* i/o: output synthesis signal */ - const int16_t output_frame, /* i : output frame length */ - const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ -); - -void ivas_renderer_select( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_mc_enc_config_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -ivas_error ivas_mc_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t idx, /* i : LS config. index */ - uint16_t *nSamplesRendered, /* o : samples flushed from last frame (JBM) */ - int16_t *data /* o : output synthesis signal */ -); - -/*! r: MC format mode (MCT, McMASA, ParamMC) */ -MC_MODE ivas_mc_mode_select( - const MC_LS_SETUP mc_ls_setup, /* i : MC loudspeaker setup */ - const int32_t total_brate /* i : IVAS total bitrate */ -); - -/*! r: number of loudspeaker channels */ -int16_t ivas_mc_ls_setup_get_num_channels( - const MC_LS_SETUP mc_ls_setup /* i : loudspeaker setup (CICP) */ -); - -/*! r: output configuration*/ -AUDIO_CONFIG ivas_mc_map_ls_setup_to_output_config( - const MC_LS_SETUP mc_ls_setup /* i : multi channel loudspeaker setup */ -); - -/*! r: multi channel loudspeaker setup */ -MC_LS_SETUP ivas_mc_map_output_config_to_mc_ls_setup( - const AUDIO_CONFIG output_config /* i : output audio configuration */ -); - -void smooth_dft2td_transition( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *output[CPE_CHANNELS], /* i/o: synthesis @external Fs */ - const int16_t output_frame /* i : output frame length */ -); - - -/*! r: flag indicating a valid bitrate */ -Word16 is_IVAS_bitrate_fx( - const Word32 ivas_total_brate /* i : IVAS total bitrate */ -); - -int16_t is_DTXrate( - const int32_t ivas_total_brate /* i : IVAS total bitrate */ -); - - -void TonalMdctConceal_create_concealment_noise_ivas( - float concealment_noise[L_FRAME48k], - CPE_DEC_HANDLE hCPE, - const int16_t L_frameTCX, - const int16_t L_frame, - const int16_t idchan, - const int16_t subframe_idx, - const int16_t core, - const float crossfade_gain, - const TONALMDCTCONC_NOISE_GEN_MODE noise_gen_mode -); - -void TonalMdctConceal_whiten_noise_shape_ivas( - Decoder_State *st, - const int16_t L_frame, - const TONALMDCTCONC_NOISE_SHAPE_WHITENING_MODE -); - -void dtx_read_padding_bits( - DEC_CORE_HANDLE st, - const int16_t num_bits -); - - - -/*----------------------------------------------------------------------------------* - * JBM prototypes - *----------------------------------------------------------------------------------*/ - - - -ivas_error ivas_jbm_dec_flush_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t tc_granularity_new, /* i : new renderer granularity */ - const RENDERER_TYPE renderer_type_old, /* i : old renderer type */ - const AUDIO_CONFIG intern_config_old, /* i : old internal config */ - const IVAS_OUTPUT_SETUP_HANDLE hIntSetupOld, /* i : old internal output setup */ - const MC_MODE mc_mode_old, /* i : old MC mode */ - const ISM_MODE ism_mode_old, /* i : old ISM mode */ - uint16_t *nSamplesRendered, /* o : number of samples flushed */ - int16_t *data /* o : output synthesis signal */ -); - -void ivas_jbm_dec_feed_tc_to_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t nSamplesForRendering, /* i : number of TC samples available for rendering */ - int16_t *nSamplesResidual, /* o : number of samples not fitting into the renderer grid and buffer for the next call*/ - float *data /* i/o: transport channels/output synthesis signal */ -); - -ivas_error ivas_jbm_dec_set_discard_samples( - Decoder_Struct *st_ivas /* i/o: main IVAS decoder structre */ -); - -void ivas_jbm_dec_get_adapted_linear_interpolator( - const int16_t default_interp_length, /* i : default length of the (full-frame) interpolator */ - const int16_t interp_length, /* i : length of the interpolator to be created */ - float *interpolator /* o : the interpolator */ -); - - - -int16_t ivas_jbm_dec_get_num_tc_channels( - Decoder_Struct *st_ivas /* i : IVAS decoder handle */ -); - -void ivas_jbm_dec_copy_tc_no_tsm( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float *tc[], /* i : transport channels */ - const int16_t output_frame /* i : output frame size */ -); - - -TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode( - Decoder_Struct *st_ivas /* i : IVAS decoder handle */ -); - -/*! r: render granularity */ -int16_t ivas_jbm_dec_get_render_granularity_flt( - const RENDERER_TYPE rendererType, /* i : renderer type */ - const IVAS_FORMAT ivas_format, /* i : ivas format */ - const MC_MODE mc_mode, /* i : MC mode */ - const int32_t output_Fs /* i : sampling rate */ -); - -ivas_error ivas_jbm_dec_tc_buffer_open( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const TC_BUFFER_MODE tc_buffer_mode, /* i : buffer mode */ - const int16_t nchan_transport_jbm, /* i : number of real transport channels */ - const int16_t nchan_transport_internal, /* i : number of totally buffered channels */ - const int16_t nchan_full, /* i : number of channels to fully store */ - const int16_t n_samples_granularity /* i : granularity of the renderer/buffer */ -); - -ivas_error ivas_jbm_dec_tc_buffer_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const TC_BUFFER_MODE tc_buffer_mode, /* i : new buffer mode */ - const int16_t nchan_transport_jbm, /* i : new number of real transport channels */ - const int16_t nchan_transport_internal, /* i : new number of totally buffered channels */ - const int16_t nchan_full, /* i : new number of channels to fully store */ - const int16_t n_samples_granularity /* i : new granularity of the renderer/buffer */ -); - -void ivas_jbm_dec_tc_buffer_close( - DECODER_TC_BUFFER_HANDLE *phTcBuffer /* i/o: TC buffer handle */ -); - -void ivas_jbm_dec_td_renderers_adapt_subframes( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_jbm_dec_metadata_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -void ivas_jbm_masa_sf_to_sf_map( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - - -/*----------------------------------------------------------------------------------* - * ISM prototypes - *----------------------------------------------------------------------------------*/ - -void bitbudget_to_brate( - const Word16 x[], /* i : bitbudgets Q0 */ - Word32 y[], /* o : bitrates Q0 */ - const Word16 N /* i : number of entries to be converted */ -); - -void ivas_ism_reset_metadata( - ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */ -); - -void ivas_ism_reset_metadata_enc( - ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handle */ -); -void ivas_ism_reset_metadata_API( - ISM_METADATA_HANDLE hIsmMeta /* i/o: ISM metadata handles */ -); - -/*! r: index of the winning codeword */ -Word16 ism_quant_meta_fx( - const Word32 val, /* i : scalar value to quantize Q22 */ - Word32 *valQ, /* o : quantized value Q22 */ - const Word32 borders_fx[], /* i : level borders Q22 */ - const Word32 q_step_fx, /* i : quantization step Q22 */ - const Word32 q_step_border_fx, /* i : quantization step at the border Q22 */ - const Word16 cbsize /* i : codebook size */ -); - -ivas_error ivas_ism_metadata_enc_create_fx( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - const int16_t n_ISms, /* i : number of objects */ - int32_t element_brate_tmp[] /* o : element bitrate per object */ -); - -ivas_error ivas_ism_metadata_dec_create( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t n_ISms, /* i : number of objects */ - int32_t element_brate_tmp[] /* o : element bitrate per object */ -); - -ivas_error ivas_ism_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float *data[], /* i : input signal [channels][samples] */ - const int16_t input_frame, /* i : input frame length per channel */ - int16_t *nb_bits_metadata, /* i : number of metadata bits */ - const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ -); - -ivas_error ivas_ism_metadata_dec( - const int32_t ism_total_brate, /* i : ISM total bitrate */ - const int16_t nchan_ism, /* i : number of ISM channels */ - int16_t *nchan_transport, /* o : number of transport channels */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - SCE_DEC_HANDLE hSCE[], /* i/o: SCE decoder handles */ - const int16_t bfi, /* i : bfi flag */ - int16_t nb_bits_metadata[], /* o : number of metadata bits */ - ISM_MODE ism_mode, /* i : ISM mode */ - ISM_DTX_DATA_DEC hISMDTX, /* i/o: ISM DTX structure */ - const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Config Handle */ - int16_t *ism_extended_metadata_flag, /* i/o: Extended metadata active in renderer */ - int16_t *ism_extmeta_cnt, /* i/o: Number of change frames observed */ - DEC_CORE_HANDLE st0 /* i : core-coder handle */ -); - - -/*----------------------------------------------------------------------------------* - * Parametric ISM prototypes - *----------------------------------------------------------------------------------*/ - -/*! r: ISM format mode */ - -ivas_error ivas_param_ism_enc_open_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -void ivas_param_ism_enc_close_fx( - PARAM_ISM_CONFIG_HANDLE *hParamIsm, /* i/o: ParamISM handle */ - const int32_t input_Fs /* i : input sampling_rate */ -); - -void ivas_ism_metadata_close( - ISM_METADATA_HANDLE hIsmMetaData[], /* i/o : object metadata handles */ - const int16_t first_idx /* i : index of first handle to deallocate */ -); - - -ivas_error ivas_ism_enc_config( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - - - - -void ivas_param_ism_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ -); - -void ivas_ism_dec_digest_tc( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - - - -void ivas_param_ism_dec_render( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */ - uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */ - uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */ - float *output_f[] /* o : rendered time signal */ -); - -void ivas_param_ism_params_to_masa_param_mapping( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - - -/*----------------------------------------------------------------------------------* - * ISM DTX prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_ism_dtx_open( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -/*! r: indication of DTX frame */ -int16_t ivas_ism_dtx_enc( - ISM_DTX_HANDLE hISMDTX, /* i/o: ISM DTX handle */ - SCE_ENC_HANDLE hSCE[MAX_SCE], /* i/o: SCE encoder structure */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t nchan_ism, /* i : number of objects */ - const int16_t nchan_transport, /* i : number of transport channels */ - int16_t vad_flag[MAX_NUM_OBJECTS], /* i : VAD flag */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - int16_t md_diff_flag[], /* o : metadata differential flag */ - int16_t *sid_flag /* o : indication of SID frame */ -); - -void ivas_ism_dtx_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - int16_t *nb_bits_metadata /* o : number of metadata bits */ -); - -void ivas_ism_metadata_sid_enc_fx( - ISM_DTX_HANDLE hISMDTX, /* i/o: ISM DTX handle */ - const int16_t flag_noisy_speech, /* i : noisy speech flag */ - const int16_t nchan_ism, /* i : number of objects */ - const int16_t nchan_transport, /* i : number of transport channels */ - const ISM_MODE ism_mode, /* i : ISM mode */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - const int16_t sid_flag, /* i : indication of SID frame */ - const int16_t md_diff_flag[], /* i : metadata differental flag */ - BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ - int16_t nb_bits_metadata[] /* o : number of metadata bits */ -); - -void ivas_ism_metadata_sid_dec( - SCE_DEC_HANDLE hSCE[MAX_SCE], /* i/o: SCE decoder structure */ - const int32_t ism_total_brate, /* i : ISM total bitrate */ - const int16_t bfi, /* i : bfi flag */ - const int16_t nchan_ism, /* i : number of objects */ - const int16_t nchan_transport, /* i : number of transport channels */ - const ISM_MODE ism_mode, /* i : ISM mode */ - int16_t *flag_noisy_speech, /* o : noisy speech flag */ - int16_t *sce_id_dtx, /* o : SCE DTX ID */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - int16_t nb_bits_metadata[] /* o : number of metadata bits */ -); - - -void ivas_param_ism_compute_noisy_speech_flag_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - - -void update_last_metadata( - const int16_t nchan_ism, /* i : number of objects */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - const int16_t updt_flag[] /* i : last metadata update flag */ -); - -void ivas_ism_dtx_limit_noise_energy_for_near_silence( - SCE_DEC_HANDLE hSCE[], /* i/o: SCE decoder structures */ - const int16_t sce_id_dtx, /* i : SCE DTX ID */ - const int16_t nchan_transport /* i : number of transport channels */ -); - -/*----------------------------------------------------------------------------------* - * DFT Stereo prototypes - *----------------------------------------------------------------------------------*/ - - -void stereo_dft_enc_analyze( - Encoder_State **sts, /* i/o: encoder state structure */ - const int16_t n_channels, /* i : number of input channels */ - const int16_t input_frame, /* i : input frame length */ - STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */ - STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: encoder MDCT stereo handle */ - float DFT[CPE_CHANNELS][STEREO_DFT_N_MAX_ENC], /* o : DFT buffers */ - float *input_mem[CPE_CHANNELS] /* i/o: input buffer memory */ -); - -float stereo_dft_enc_synthesize( - STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */ - float *output, /* o : output synthesis */ - const int16_t chan, /* i : channel number */ - const int32_t input_Fs, /* i : input sampling rate */ - const int32_t output_sampling_rate, /* i : output sampling rate */ - const int16_t L_frame /* i : frame length at internal Fs */ -); - - - - -void stereo_dtf_cng( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers */ - const int16_t output_frame /* i : output frame size */ -); - -void stereo_dft_cng_side_gain( - STEREO_DFT_ENC_DATA_HANDLE hStereoDft, /* i/o: DFT stereo encoder handle */ - STEREO_CNG_ENC_HANDLE hStereoCng, /* i/o: Stereo CNG data structure */ - const int32_t core_brate, /* i : core bitrate */ - const int32_t last_core_brate, /* i : last core bitrate */ - const int16_t bwidth /* i : audio band-width */ -); - - -void stereo_dft_dequantize_itd( - int16_t *ind, - float *out, - const int32_t output_Fs -); - - - -void stereo_dft_dec_sid_coh( - Decoder_State *st, /* i/o: decoder state structure */ - const int16_t nbands, /* i : number of DFT stereo bands */ - float *coh, /* i/o: coherence */ - int16_t *nb_bits /* i/o: number of bits read */ -); - -ivas_error stereo_dft_dec_create( - STEREO_DFT_DEC_DATA_HANDLE *hStereoDft, /* i/o: decoder DFT stereo handle */ - const int32_t element_brate, /* i : element bitrate */ - const int32_t output_Fs, /* i : output sampling rate */ - const int16_t sba_dirac_stereo_flag, /* i : signal stereo output for SBA DirAC */ - const int16_t nchan_transport /* i : number of transport channels */ -); - -void stereo_dft_dec_reset( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i/o: decoder DFT stereo handle */ -); - -void stereo_dft_dec_update( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */ - const int16_t output_frame, /* i : output frame length */ - const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ -); - -void stereo_dft_dec_destroy( - STEREO_DFT_DEC_DATA_HANDLE *hStereoDft /* i/o: decoder DFT stereo handle */ -); - -void stereo_dft_dec_analyze( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - const float *input, /* i : input signal */ - float out_DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */ - const int16_t chan, /* i : channel number */ - const int16_t input_frame, /* i : input frame size */ - const int16_t output_frame, /* i : output frame size */ - const DFT_STEREO_DEC_ANA_TYPE ana_type, /* i : signal type to analyze */ - const int16_t k_offset, /* i : offset of DFT */ - const int16_t delay /* i : delay in samples for input signal */ -); - -void stereo_dft_dec_synthesize( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i : DFT buffers */ - const int16_t chan, /* i : channel number */ - float output[L_FRAME48k], /* o : output synthesis signal */ - const int16_t output_frame /* i : output frame length */ -); - - -void stereo_dft_res_ecu( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */ - float *pDFT_RES, /* i/o: residual signal */ - float *const DFT_PRED_RES, /* i/o: residual prediction signal */ - const int16_t k, /* i : Subframe index */ - const int16_t output_frame, /* i : Output frame length */ - const int16_t prev_bfi, /* i : Previous BFI */ - const float dmx_nrg, /* i : Down-mix energy */ - int16_t *num_plocs, /* i/o: Number of peak locations */ - int16_t *plocs, /* i/o: Peak locations (bin) */ - float *plocsi, /* i/o: Peak locations (fractional) */ - float *input_mem /* o : Residual DFT buffer input mem */ -); - -void stereo_dft_res_subst_spec( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */ - float *pDFT_RES, /* i/o: residual signal */ - const float *const DFT_PRED_RES, /* i : residual prediction signal */ - const int16_t time_offs, /* i : Time offset for phase adjustm. */ - const int16_t L_res, /* i : bandwidth of residual signal */ - const int16_t L_ana, /* i : Length of FFT analysis */ - const int16_t k, /* i : Subframe index */ - int16_t *num_plocs, /* i/o: Number of peak locations */ - int16_t *plocs, /* i/o: Peak locations (bin) */ - float *plocsi, /* i/o: Peak locations (fractional) */ - const int16_t analysis_flag /* i : Flag for running peak analysis */ -); - -void stereo_dft_res_ecu_burst_att( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: Decoder DFT stereo handle */ - float *pDFT_RES, /* i/o: residual signal /att. residual */ - const float dmx_nrg, /* i : dmx energy of current frame */ - const int16_t L_res, /* i : Bandwidth of residual */ - const int16_t L_ana /* i : Length of FFT analysis */ -); - -/*! r: total energy of downmix with maximum swb bandwidth max */ -float stereo_dft_dmx_swb_nrg( - const float *dmx_k0, /* i : first subframe spectrum */ - const float *dmx_k1, /* i : second subframe spectrum */ - const int16_t frame_length /* i : frame lanegth */ -); - -int16_t stereo_dft_sg_recovery( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i/o: Decoder DFT stereo handle */ -); - -void stereo_dft_dec_res( - CPE_DEC_HANDLE hCPE, /* i/o: decoder CPE handle */ - float res_buf[STEREO_DFT_N_8k], /* i : residual buffer */ - float *output /* o : output frame */ -); - -/*! r: Decision to enable or disable BPF on DFT stereo residual */ - -void bpf_pitch_coherence( - Decoder_State *st, /* i/o: decoder state structure */ - const float pitch_buf[] /* i : pitch for each subframe [0,1,2,3] */ -); - -void stereo_dft_dec_read_BS( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int32_t element_brate, /* i : element bitrate */ - int32_t *total_brate, /* o : total bitrate */ - Decoder_State *st, /* i/o: decoder state structure */ - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */ - const int16_t bwidth, /* i : bandwidth */ - const int16_t output_frame, /* i : output frame length */ - float res_buf[STEREO_DFT_N_8k], /* o : residual buffer */ - int16_t *nb_bits, /* o : number of bits read */ - float *coh, /* i/o: Coherence */ - const int16_t ivas_format /* i : ivas format */ -); - -void stereo_dft_dec_smooth_parameters( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */ - const int16_t prev_sid_nodata, /* i : Previous SID/No data indicator */ - const int16_t active_frame_counter, /* i : Active frame counter */ - const int32_t element_brate /* i : Element bitrate */ -); - -void stereo_dft_generate_res_pred( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */ - const float samp_ratio, /* i : sampling ratio */ - float *pDFT_DMX, /* i : downmix signal */ - float *DFT_PRED_RES, /* o : residual prediction signal */ - float *pPredGain, /* i : residual prediction gains */ - const int16_t k, /* i : subframe index */ - float *ap_filt_DMX, /* i : enhanced stereo filling signal */ - int16_t *stop, /* o : last FD stereo filling bin */ - const int16_t bfi /* i : BFI flag */ -); - -void stereo_dft_dec_core_switching( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[], /* i/o: synthesis @internal Fs */ - float synth[], /* i : synthesis @output Fs */ - float hb_synth[], /* i/o: hb synthesis */ - float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */ - const int16_t output_frame, /* i : output frame length */ - const int16_t use_cldfb_for_dft, /* i : flag to use of CLDFB for DFT Stereo */ - const int16_t sba_dirac_stereo_dtx_flag /* i : DTX indicator for SBA DirAC stereo */ -); - -void init_basic_allpass( - basic_allpass_t *ap, /* i/o: basic allpass structure */ - const float *gains, /* i : allpass filter gains */ - const int16_t *delays /* i : allpass filter delays */ -); - -void filter_with_allpass( - const float *sig, /* i : allpass input signal */ - float *out, /* o : filtered output */ - const int16_t len, /* i : length of input */ - basic_allpass_t *ap /* i/o: basic allpass structure */ -); - -/*! r: used GR order */ - -/*! r: used GR order */ - - -/*! r: number of bits written */ - -/*! r: number of bits written */ - - -void stereo_dft_enc_compute_itd( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - float *DFT_L, - float *DFT_R, - const int16_t k_offset, - const int16_t input_frame, - const int16_t vad_flag_dtx[], - const int16_t vad_hover_flag[], - float *bin_nrgL, - float *bin_nrgR -); - -void stereo_dft_config( - STEREO_DFT_CONFIG_DATA_HANDLE hConfig, /* o : DFT stereo configuration */ - const int32_t brate, /* i : IVAS/CPE/nominal total bitrate */ - int16_t *bits_frame_nominal, /* o : primary channel nominal bits per frame */ - int16_t *bits_frame_nominal_2 /* o : secondary channel nominal bits per frame*/ -); - -int16_t stereo_dft_band_config( - int16_t *band_limits, /* o : DFT band limits */ - const int16_t band_res, /* i : DFT band resolution */ - const int16_t NFFT, /* i : analysis/synthesis window length */ - const int16_t enc_dec /* i : flag to indicate enc vs dec */ -); - -void stereo_dft_dmx_out_reset( - STEREO_DFT_DMX_DATA_HANDLE hStereoDftDmx /* i/o: DFT stereo DMX decoder */ -); - -void stereo_dft_unify_dmx( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder stereo handle */ - Decoder_State *st0, /* i/o: decoder state structure */ - float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* i/o: DFT buffers */ - float *input_mem, /* i/o: mem of buffer DFT analysis */ - const int16_t prev_sid_nodata /* i : Previous SID/No data indicator */ -); - -void add_HB_to_mono_dmx( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[L_FRAME48k], /* i/o: output synthesis */ - float outputHB[L_FRAME48k], /* i : HB synthesis */ - const int16_t last_core, /* i : last core, primary channel */ - const int16_t output_frame /* i : frame length */ -); - -/*----------------------------------------------------------------------------------* - * Range Coder prototypes - *----------------------------------------------------------------------------------*/ - -void rc_uni_dec_init( - RangeUniDecState *rc_st_dec, /* i/o: RC state handle */ - uint16_t *bit_buffer, /* i : Bit buffer */ - const int16_t max_available_bits /* i : Total maximum bits available */ -); - -/*! r: Read symbol */ -uint16_t rc_uni_dec_read_symbol_fastS( - RangeUniDecState *rc_st_dec, /* i/o: Decoder State */ - const uint16_t cum_freq_table[], /* i : Cumulative frequency up to symbol */ - const uint16_t sym_freq_table[], /* i : Symbol frequency */ - const uint16_t alphabet_size, /* i : Number of symbols in the alphabet */ - const uint16_t tot_shift /* i : Total frequency as a power of 2 */ -); - -/*! r: Read bit */ -uint16_t rc_uni_dec_read_bit( - RangeUniDecState *rc_st_dec /* i/o: RC state handle */ -); - -/*! r: Read bit */ -uint16_t rc_uni_dec_read_bit_prob_fast( - RangeUniDecState *rc_st_dec, /* i/o: RC state handle */ - const int16_t freq0, /* i : Frequency for symbol 0 */ - const uint16_t tot_shift /* i : Total frequency as a power of 2 */ -); - -/*! r: Read bits */ -uint16_t rc_uni_dec_read_bits( - RangeUniDecState *rc_st_dec, /* i/o: RC state handle */ - const int16_t bits /* i : Number of bits */ -); - -/*! r: Total number of bits consumed */ -int16_t rc_uni_dec_virtual_finish( - RangeUniDecState *rc_st_dec /* i/o: RC state handle */ -); - -/*! r: Total number of bits consumed */ -int16_t rc_uni_dec_finish( - RangeUniDecState *rc_st_dec /* i/o: RC state handle */ -); - - -/*----------------------------------------------------------------------------------* - * ECLVQ Stereo prototypes - *----------------------------------------------------------------------------------*/ - -float ECSQ_dequantize_gain( - const int16_t index -); - - - -void ECSQ_init_instance( - ECSQ_instance *ecsq_inst, - const int16_t config_index, - void *ac_handle -); - - - -void ECSQ_dequantize_vector( - const int16_t *input, - const float global_gain, - const int16_t N, - float *output -); - - -/*----------------------------------------------------------------------------------* - * ICA Stereo prototypes - *----------------------------------------------------------------------------------*/ - -void stereo_tca_init_enc( - STEREO_TCA_ENC_HANDLE hStereoTCA, /* i/o: Stereo TCA encoder handle */ - const int32_t input_Fs /* i : input sampling frequency */ -); - -void stereo_tca_enc( - CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */ - const int16_t input_frame /* i : length of a frame per channel */ -); - -void stereo_tca_init_dec( - STEREO_TCA_DEC_HANDLE hStereoTCA /* i/o: Stereo TCA handle */ -); - -void stereo_tca_dec( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *synth[CPE_CHANNELS], /* i/o: output synth */ - const int16_t output_frame /* i : length of a frame per channel */ -); - -void stereo_tca_scale_R_channel( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *output, /* i/o: output synthesis, R channel */ - const int16_t output_frame /* i : frame length */ -); - -void adjustTargetSignal( - float *target, - const int16_t prevShift, - const int16_t currShift, - const int16_t L_shift_adapt, - const int16_t method -); - -/*----------------------------------------------------------------------------------* - * IC-BWE Stereo prototypes - *----------------------------------------------------------------------------------*/ - - -void stereo_icBWE_preproc( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - const int16_t input_frame, /* i : input frame length */ - float shb_speech_nonref[] /* o : SHB speech non-ref channel */ -); - -void stereo_icBWE_enc( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - const float shb_speech_ref[], /* i : SHB speech ref channel */ - float shb_speech_nonref[], /* i/o: SHB speech non-ref channel */ - const float *voice_factors /* i : voicing factors */ -); - -void stereo_icBWE_init_dec( - STEREO_ICBWE_DEC_HANDLE hStereoICBWE /* i/o: Stereo inter-channel BWE handle */ -); - -void stereo_icBWE_dec( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *synthRef, /* i/o: Reference channel HB synthesis at output Fs */ - float *synth, /* o : Non reference channel HB synthesis at output Fs */ - const float *fb_synth_ref, /* i : ref. high-band synthesis 16-20 kHz */ - const float *voice_factors, /* i : voicing factors */ - const int16_t output_frame /* i : frame length */ -); - -void stereo_icBWE_decproc( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *output[CPE_CHANNELS], /* i/o: output symthesis */ - float outputHB[CPE_CHANNELS][L_FRAME48k], /* i : HB synthesis */ - const int16_t last_core, /* i : last core, primary channel */ - const int16_t last_bwidth, /* i : last bandwidth */ - const int16_t output_frame /* i : frame length */ -); - - -/*----------------------------------------------------------------------------------* - * Stereo classifiers prototypes - *----------------------------------------------------------------------------------*/ - -void stereo_classifier_features( - STEREO_CLASSIF_HANDLE hStereoClassif, /* i/o: stereo classifier structure */ - const int16_t idchan, /* i : channel ID */ - const int16_t element_mode, /* i : element mode */ - const int16_t vad_flag, /* i : VAD flag */ - const float lsf_new[], /* i : LSFs at the end of the frame */ - const float epsP[], /* i : LP analysis residual energies for each iteration*/ - const int16_t pitch[], /* i : open-loop pitch values for quantiz. */ - const float voicing[], /* i : OL maximum normalized correlation */ - const float cor_map_sum, /* i : speech/music clasif. parameter */ - const float non_staX, /* i : unbound non-stationarity for sp/mu clas. */ - const float sp_div, /* i : spectral diversity feature */ - const int16_t clas /* i : signal class */ -); - - -void xtalk_classifier_dft( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - const int16_t itd, /* i : ITD from DFT stereo - used as a feature */ - const float gcc_phat[] /* i : GPHAT cross-channel correlation function */ -); - -/*----------------------------------------------------------------------------------* - * TD Stereo prototypes - *----------------------------------------------------------------------------------*/ - -void stereo_td_init_enc( - STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i/o: TD stereo encoder handle */ - const int16_t last_element_mode /* i : last element mode */ -); - - - -void stereo_tdm_downmix( - STEREO_TD_ENC_DATA_HANDLE hStereoTD, /* i : TD stereo IVAS encoder structure */ - float *Left_in, /* i/o: Left channel -> Primary channel */ - float *Right_in, /* i/o: Right channel -> Secondary channel */ - const int16_t input_frame, /* i : Number of samples */ - const int16_t tdm_ratio_idx, /* i : TDM ratio index */ - const int16_t tdm_SM_flag, /* i : channel combination scheme flag */ - const int16_t tdm_ratio_idx_SM /* i : TDM ratio index for SM mode */ -); - -void stereo_td_init_dec( - STEREO_TD_DEC_DATA_HANDLE hStereoTD, /* i/o: TD stereo decoder handle */ - const int16_t last_element_mode /* i : last element mode */ -); - -void tdm_configure_dec( - const int16_t ivas_format, /* i : IVAS format */ - const int16_t ism_mode, /* i : ISM mode in combined format */ - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - int16_t *tdm_ratio_idx, /* o : ratio index */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - -void tdm_upmix_plain( - float Left[], /* o : left channel */ - float Right[], /* o : right channel */ - const float PCh_2_L[], /* i : primary channel */ - const float SCh_2_R[], /* i : secondary channel */ - const float LR_ratio, /* i : mixing ratio */ - const float inv_den_LR_ratio, /* i : inverse mixing ration */ - const int16_t start_index, /* i : start index */ - const int16_t end_index, /* i : end index */ - const int16_t plus_minus_flag /* i : plus/minus flag */ -); - -void stereo_tdm_combine( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *PCh_2_L, /* i/o: Primary channel -> output as L channel */ - float *SCh_2_R, /* i/o: Seconday channel -> output as R channel */ - const int16_t output_frame, /* i : Number of samples */ - const int16_t flag_HB, /* i : flag to distinguish between core (0) and HB (1) synthesis */ - const int16_t tdm_ratio_idx /* i : TDM ratio index */ -); - -/*! r: replication decision; 1 = Use old LP */ -void tdm_ol_pitch_comparison( - CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */ - float pitch_fr[CPE_CHANNELS][NB_SUBFR], /* i/o: fractional pitch values */ - float voicing_fr[CPE_CHANNELS][NB_SUBFR] /* i/o: fractional pitch gains */ -); - -void tdm_configure_enc( - const int16_t ivas_format, /* i : IVAS format */ - const int16_t ism_mode, /* i : ISM mode in combined format */ - CPE_ENC_HANDLE hCPE, /* i : CPE encoder structure */ - const float Etot_last[CPE_CHANNELS], /* i/o: Energy of last frame */ - const int16_t tdm_SM_or_LRTD_Pri, /* i : channel combination scheme flag in TD stereo OR LRTD primary channel */ - const int16_t tdm_ratio_idx, /* i : ratio index */ - const int16_t tdm_ratio_idx_SM, /* i : ratio index in SM mode */ - const int16_t attack_flag, /* i : Primary channel attack flag */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - - -void tdm_bit_alloc( - const int16_t ivas_format, /* i : IVAS format */ - const int16_t ism_mode, /* i : ISM mode in combined format */ - const int32_t element_brate_wo_meta, /* i : element bitrate without metadata */ - const int16_t tdm_lp_reuse_flag, /* i : LPC reusage flag */ - int32_t *total_brate_pri, /* o : Allocated primary channel bitrate */ - int32_t *total_brate_sec, /* o : Allocated secondary channel bitrate */ - int16_t *tdm_low_rate_mode, /* o : secondary channel low rate mode flag */ - const int16_t coder_type, /* i : secondary channel coder type */ - const int16_t ener_ratio_idx, /* i : correlation ratio indexe */ - const int16_t tdm_Pitch_reuse_flag, /* i : primary channel pitch reuse flag */ - const int16_t bwidth_pri, /* i : bandwidth of the primary channel */ - const int16_t bwidth_sec, /* i : bandwidth of the secondary channel */ - const int16_t flag_ACELP16k_pri, /* i : ACELP@16kHz core flag, primary chan. */ - const int16_t tdm_LRTD_flag, /* i : LRTD stereo mode flag */ - const int16_t coder_type0, /* i : coder type (temporary in the encoder, from bitstream in decoder) */ - const int16_t tdm_inst_ratio_idx /* i : instantaneous correlation ratio index */ -); - - -/*! r: value of the indice */ -uint16_t get_indice_st( - Decoder_State *st, /* i/o: decoder state structure */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t pos, /* i : absolute position in the bitstream */ - const int16_t nb_bits /* i : number of bits to quantize the indice */ -); - -void tdm_low_rate_dec( - Decoder_State *st, /* i/o: decoder static memory */ - float dct_epit[], /* o : GSC excitation in DCT domain */ - float *tmp_noise, /* o : long term temporary noise energy */ - float *pitch_buf, /* o : floating pitch values for each subframe */ - float *voice_factors, /* o : voicing factors */ - float *exc, /* i/o: adapt. excitation exc */ - float *exc2, /* i/o: adapt. excitation/total exc */ - float *bwe_exc, /* o : excitation for SWB TBE */ - const float *lsf_new /* i : ISFs at the end of the frame */ -); - -void tdm_SCh_LSF_intra_pred( - const int32_t element_brate, /* i : element bitrate */ - const float *tdm_lsfQ_PCh, /* i : primary channel LSFs */ - float *pred_lsf_SCh /* o : predicted secondary channel LSFs */ -); - - -void first_VQstages( - const float *const *cb, - const float u[], /* i : vector to be encoded (prediction and mean removed) */ - const int16_t *levels, /* i : number of levels in each stage */ - const int16_t stagesVQ, /* i : number of stages */ - const float w[], /* i : weights */ - const int16_t N, /* i : vector dimension */ - const int16_t max_inner, /* i : maximum number of swaps in inner loop */ - int16_t indices_VQstage[] -); - - -void deindex_lvq_SHB( - UWord32 index, - float *out, - const int16_t nbits, - const int16_t mode -); - -/*----------------------------------------------------------------------------------* - * MDCT Stereo prototypes - *----------------------------------------------------------------------------------*/ - -void stereo_td_itd_mdct_stereo( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder handle */ - const int16_t vad_flag_dtx[], /* i : VAD dtx flags */ - const int16_t vad_hover_flag[], /* i : VAD hangover flags */ - const int16_t input_frame /* i : frame length */ -); - -void QuantizeTCXSpectrum( - Encoder_State *st, /* i : state handle */ - const int16_t frame_cnt, /* i : frame counter in the super_frame */ - const float *x_orig, /* i : shaped MDCT spectrum */ - const float *gainlpc, /* i : FDNS gains */ - const Word16 *Aqind, /* i : frame-independent quantized coefficients (M+1) */ - const int16_t tnsSize, /* i : number of tns parameters put into prm */ - const int16_t nb_bits, /* i : bit budget */ - const int16_t vad_hover_flag, /* i : VAD hangover flag */ - int16_t *pL_frameTCX, /* o : full frame length */ - int16_t *pL_frame, /* o : frame length */ - int16_t *pL_spec, /* o : length of the coded spectrum */ - int16_t *ptcx_offset, /* o : folding point offset relative to the end of the previous frame */ - int16_t *pnoiseFillingBorder, /* o : noise filling border */ - float spectrum[], /* o : quantized MDCT spectrum */ - CONTEXT_HM_CONFIG *hm_cfg, /* o : Context-based harmonic model configuration */ - int16_t *hm_active, /* o : flag indicating if the harmonic model is active */ - float lf_deemph_fact[], /* o : low frequency deemphasis factors */ - int16_t *nf_seed, /* o : noise filling random seed */ - float *ener, /* o : energy of the quantized spectrum */ - float *gain_tcx, /* o : global gain */ - int16_t prm[] /* o : tcx parameters */ -); - -void EstimateStereoTCXNoiseLevel( - Encoder_State **sts, /* i : state handle */ - float *q_spectrum[CPE_CHANNELS][NB_DIV], /* i : quantized MDCT spectrum */ - float gain_tcx[][NB_DIV], /* i : global gain */ - int16_t L_frame[][NB_DIV], /* i : frame length */ - int16_t noiseFillingBorder[][NB_DIV], /* i : noise filling border */ - int16_t hm_active[][NB_DIV], /* i : flag indicating if the harmonic model is active */ - const int16_t ignore_chan[], /* i : flag indicating whether the channel should be ignored */ - float fac_ns[][NB_DIV], /* o : noise filling level */ - int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */ - const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */ -); - -void TNSAnalysisStereo( - Encoder_State **sts, /* i : state handle */ - float *mdst_spectrum[CPE_CHANNELS][NB_DIV], /* o : MDST spectrum */ - const int16_t bWhitenedDomain, /* i : whitened domain flag */ - int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* i : number of tns parameters put into prm */ - int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* i : number of tns bits in the frame */ - int16_t param_core[][NB_DIV * NPRM_DIV], /* o : quantized noise filling level */ - const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ -); - -void InternalTCXDecoder( - Encoder_State *st, /* i/o: state handle */ - const int16_t frame_cnt, /* i : frame counter in the super_frame */ - const int16_t L_frameTCX, /* i : full frame length */ - const int16_t L_frame, /* i : frame length */ - const int16_t L_spec, /* i : length of the coded spectrum */ - const int16_t tcx_offset, /* i : folding point offset relative to the end of the previous frame */ - const int16_t noiseFillingBorder, /* i : noise filling border */ - const float *x_quant, /* i : quantized spectrum */ - const float ener, /* i : energy of the quantized spectrum */ - float lf_deemph_fact[], /* i/o: low frequency deemphasis factors */ - const float fac_ns, /* i : noise filling level */ - const int16_t nf_seed, /* i : noise filling random seed */ - const float *A, /* i : LPC representation of the FDNS gains */ - float *gainlpc, /* i/o: FDNS gains */ - const int16_t hm_active, /* i : flag indicating if the harmonic model is active */ - float gain_tcx, /* i/o: global gain / quantized global gain */ - float spectrum[], /* o : dequantized spectrum */ - float synth[], /* o : time domain signal */ - int16_t *gain_tcx_q /* o : quantized global gain (at low bitrates) */ -); - -void stereo_mdct_core_enc_fx( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples[CPE_CHANNELS][L_INP], /* i : new samples Q0*/ - Word16 old_wsp[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP Qx*/ - Word16 pitch_buf_fx[CPE_CHANNELS][NB_SUBFR16k] /* o : floating pitch for each subframe Q6*/ -); - -void initMdctStereoEncData( - STEREO_MDCT_ENC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */ - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - const int16_t element_mode, /* i : element mode */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t bwidth, /* i : bandwidth */ - const int16_t igf, /* i : flag indicating IGF activity */ - const H_IGF_GRID hIgfGrid, /* i : IGF grid setup */ - const int16_t mem_init /* i : initialize memory after malloc */ -); - -ivas_error initMdctItdHandling( - STEREO_MDCT_ENC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */ - const int32_t input_Fs /* i : input sampling rate */ -); - -void stereo_mdct_enc_destroy( - STEREO_MDCT_ENC_DATA_HANDLE *hStereoMdct /* i/o: encoder MDCT stereo handle */ -); - -void initMdctStereoDecData( - STEREO_MDCT_DEC_DATA *hStereoMdct, /* i/o: mdct stereo parameters structure */ - const int16_t igf, /* i : flag indicating IGF activity */ - const H_IGF_GRID igfGrid, /* i : IGF grid configuration */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t bwidth /* i : audio bandwidth */ -); - -void stereo_mdct_init_bands( - const int16_t L_frame, /* i : frame length */ - const int16_t tmp_tcx_mode, /* i : tcx mode (TCX10, TCX 20), -1 if transition frame */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t igf, /* i : flag indicating if IGF is used */ - const H_IGF_GRID hIgfGrid, /* i : IGF grid setup */ - int16_t *sfbOffset, /* o : sfb offset table */ - int16_t *sfbCnt /* o : number of sfbs */ -); - -void stereo_mdct_init_igf_start_band( - STEREO_MDCT_BAND_PARAMETERS *stbParams, /* i/o: stereo frequency band parameters */ - const float transFac, /* i : transform factor */ - const int16_t bwidth, /* i : audio bandwidth */ - const int32_t element_brate /* i : element bitrate */ -); - -void init_tcx_enc_info( - Encoder_State *st, /* i : coder memory state */ - int16_t *L_frame, - int16_t *L_frameTCX, - int16_t *L_spec -); - -void decoder_tcx_invQ( - Decoder_State *st, /* i/o: coder memory state */ - int16_t prm[], /* i : parameters */ - float A[], /* i : coefficients NxAz[M+1] */ - Word16 Aind[], /* i : frame-independent coefficients Az[M+1] */ - const int16_t L_spec, - const int16_t L_frame, - const int16_t L_frameTCX, - float x[], - float gainlpc2[], - float xn_buf[], - int16_t *fUseTns, /* o : flag that is set if TNS data is present */ - STnsData *tnsData, - float *gain_tcx, - const int16_t **prm_sqQ, - int16_t *nf_seed, - const int16_t bfi, /* i : Bad frame indicator */ - const int16_t frame_cnt /* i : frame counter in the super frame */ -); - -void decoder_tcx_noisefilling( - Decoder_State *st, /* i/o: coder memory state */ - float concealment_noise[L_FRAME48k], - const float A[], /* i : coefficients NxAz[M+1] */ - const int16_t L_frameTCX_glob, - const int16_t L_spec, - const int16_t L_frame, - const int16_t L_frameTCX, - float x[], - float gainlpc2[], - int16_t *temp_concealment_method, - const float gain_tcx, - const int16_t *prm_sqQ, - int16_t nf_seed, - const int16_t bfi, /* i : Bad frame indicator */ - const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */ - const int16_t frame_cnt /* i : frame counter in the super frame */ -); - -void decoder_tcx_noiseshaping_igf( - Decoder_State *st, /* i/o: coder memory state */ - const int16_t L_spec, - const int16_t L_frame, - const int16_t L_frameTCX, - const int16_t left_rect, - float x[], - const float gainlpc2[], - int16_t *temp_concealment_method, - const int16_t bfi /* i : Bad frame indicator */ -); - -void decoder_tcx_tns( - Decoder_State *st, /* i/o: coder memory state */ - const int16_t L_frame_glob, - const int16_t L_spec, - const int16_t L_frame, - const int16_t L_frameTCX, - float x[N_MAX], - const int16_t fUseTns, /* i : flag that is set if TNS data is present */ - STnsData *tnsData, - const int16_t bfi, /* i : Bad frame indicator */ - const int16_t frame_cnt, /* i : frame counter in the super frame */ - const int16_t whitenedDomain -); - -void decoder_tcx_imdct( - Decoder_State *st, /* i/o: coder memory state */ - const int16_t L_frame_glob, /* i : frame length */ - const int16_t L_frameTCX_glob, - const int16_t L_spec, - const int16_t tcx_offset, - const int16_t tcx_offsetFB, - const int16_t L_frame, - const int16_t L_frameTCX, - const int16_t left_rect, - float x[N_MAX], - float xn_buf[], - const uint16_t kernelType, /* i : TCX transform kernel type */ - const int16_t fUseTns, /* i : flag that is set if TNS data is present */ - float synth[], /* i/o: synth[-M..L_frame] */ - float synthFB[], - const int16_t bfi, /* i : Bad frame indicator */ - const int16_t frame_cnt, /* i : frame counter in the super frame */ - const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ -); - -void init_tcx_info( - Decoder_State *st, /* i/o: coder memory state */ - const int16_t L_frame_glob, /* i : global frame length */ - const int16_t L_frameTCX_glob, /* i : FB global frame length */ - const int16_t frame_cnt, /* i : frame counter in the super_frame */ - const int16_t bfi, /* i : bad frame indicator */ - int16_t *tcx_offset, /* o : folding point offset relative to the end of the previous frame */ - int16_t *tcx_offsetFB, /* o : FB folding point offset relative to the end of the previous frame*/ - int16_t *L_frame, /* o : frame length */ - int16_t *L_frameTCX, /* o : TCX frame length */ - int16_t *left_rect, /* o : left part is rectangular */ - int16_t *L_spec /* o : spectrum length */ -); - -void decoder_tcx_IGF_mono( - Decoder_State *st, /* i/o: coder memory state */ - float x[], /* o : de-quatized coefficients */ - const int16_t L_frame, /* i : frame length */ - const int16_t left_rect, /* i : left part is rectangular */ - const int16_t bfi, /* i : bad frame indicator */ - const int16_t frame_cnt /* i : frame counter in the super_frame */ -); - -void decoder_tcx_IGF_stereo( - Decoder_State **sts, /* i/o: coder memory states */ - STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct, /* i/o: MDCT stereo structure */ - int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */ - float *x[CPE_CHANNELS][NB_DIV], /* o : de-quatized coefficients */ - const int16_t L_frame, /* i : frame length */ - const int16_t left_rect, /* i : left part is rectangular */ - const int16_t k, /* i : Subframe index */ - const int16_t bfi, /* i : bad frame indicator */ - const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */ -); - -void ms_processing( - STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */ - Encoder_State **sts, /* i/o: Encoder state structure */ - int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */ - const int16_t iSubframe, /* i : subframe number */ - float x_0[], /* i/o: spectrum 1 */ - float x_1[], /* i/o: spectrum 2 */ - int16_t maxSfb /* i : number of stereo frequency bands */ -); - -void ms_inv_mask_processing( - STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */ - Encoder_State **sts, /* i/o: Encoder state structure */ - int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */ - const int16_t iSubframe, /* i : subframe number */ - const float x_0[], /* i : spectrum 1 */ - const float x_1[], /* i : spectrum 2 */ - float x_inv_0[], /* o : inverse spectrum 1 */ - float x_inv_1[], /* o : inverse spectrum 2 */ - int16_t maxSfb /* i : number of stereo frequency bands */ -); - -void IGFDecApplyStereo_flt( - const IGF_DEC_INSTANCE_HANDLE hIGFDecL, /* i : instance handle of IGF Decoder */ - const IGF_DEC_INSTANCE_HANDLE hIGFDecR, /* i : instance handle of IGF Decoder */ - float *spectrumL, /* i/o: L MDCT spectrum */ - float *spectrumR, /* i/o: R MDCT spectrum */ - const int16_t igfGridIdx, /* i : in case of CELP->TCX switching, use 1.25 framelength */ - const int16_t *coreMsMask, - const int16_t restrict_hopsize, - const int16_t bfi, /* i : frame loss == 1, frame good == 0 */ - const int16_t bfi_apply_damping /* i : decoder element mode */ -); - -void IGFEncStereoEncoder( - STEREO_MDCT_BAND_PARAMETERS *sfbParam, /* i/o: sfb parameters for the right channel */ - const IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i : IGF handle */ - const float *mdctSpectrumL, /* i : left spectrum */ - const float *mdctSpectrumR, /* i : right spectrum */ - int16_t *msMask, /* i/o: MS mask */ - int16_t *igfStereoMode, /* o : IGF stereo mode */ - const int16_t mdct_stereo_mode, /* i : MDCT stereo mode */ - const int16_t isTCX20, /* i : flag for indicating TCX20 */ - const int16_t isTransition /* i : flag for transtition */ -); - -void IGFDecReplicateTCX10State_flt( - IGF_DEC_INSTANCE_HANDLE hIGFDec /* i/o: instance handle of IGF Decoder */ -); - - -void InitPsychLPC( - const int32_t sr_core, /* i : sampling rate of core-coder */ - const int16_t L_frame, /* i : frame length */ - const TCX_CONFIG_HANDLE hTcxCfg /* i : TCX configuration handle */ -); - - -void stereo_coder_tcx( - STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: MDCT encoder structure */ - Encoder_State **sts, /* i/o: encoder state structure */ - int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */ - float *mdst_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: MDST spectrum */ - float *inv_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: inverse spectrum */ - float *inv_mdst_spectrum[CPE_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */ - const int16_t mct_on /* i : flag mct block (1) or stereo (0) */ -); - -void stereo_decoder_tcx( - STEREO_MDCT_DEC_DATA *hStereoMdct, /* i/o: MDCT stereo decoder structure */ - int16_t ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask */ - float *spec_r_0[NB_DIV], /* i/o: spectrum right channel */ - float *spec_l[], /* i/o: spectrum left channel [NB_DIV][N] */ - float *spec_r[], /* i/o: spectrum right channel [NB_DIV][N] */ - const int16_t mdct_stereo_mode[], /* i : stereo mode (FB/band wise MS, dual mono */ - const int16_t core_l, /* i : core for left channel (TCX20/TCX10) */ - const int16_t core_r, /* i : core for right channel (TCX20/TCX10) */ - const int16_t igf, /* i : flag for IGF activity */ - const int16_t L_frameTCX_l, /* i : TCX frame length of left channel */ - const int16_t L_frameTCX_r, /* i : TCX frame length of right channel */ - const int16_t mct_on, /* i : flag mct block (1) or stereo (0) */ - const int16_t last_core_l, /* i : last core for left channel */ - const int16_t last_core_r, /* i : last core for right channel */ - const int16_t tmp_plc_upmix /* i : indicates temp upmix for PLC decision */ -); - -void stereo_mdct_core_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *signal_out[CPE_CHANNELS], /* o : synthesis @internal_FS */ - float signal_outFB[CPE_CHANNELS][L_FRAME48k] /* o : synthesis @output_FS */ -); - -void splitAvailableBits( - const int16_t total_bits, /* i : total available bits for TCX coding */ - const int16_t split_ratio, /* i : split ratio */ - const int16_t isSBAStereoMode, /* i : signal core coding for SBA */ - int16_t *bits_ch0, /* o : bits for channel 0 */ - int16_t *bits_ch1 /* o : bits for channel 1 */ -); - -Word16 write_stereo_to_bitstream_fx -( - STEREO_MDCT_ENC_DATA_HANDLE hStereoMdct, /* i/o: Stereo MDCT encoder structure */ - Encoder_State **sts, /* i/o: Encoder state structure */ - Word16 ms_mask[NB_DIV][MAX_SFB], /* i : bandwise MS mask Q0*/ - const Word16 mct_on, /* i : flag mct block (1) or stereo (0) Q0*/ - BSTR_ENC_HANDLE hBstr /* i/o: bitstream handle */ -); - - - -void ComputeSpectrumNoiseMeasure( - const float *powerSpec, - const int16_t L_frame, - const int16_t startLine, - const int16_t resetMemory, - int8_t *noiseFlags, - const int16_t lowpassLine -); - -void IGFSaveSpectrumForITF( - IGF_ENC_INSTANCE_HANDLE hIGFEnc, /* i/o: instance handle of IGF Encoder */ - const int16_t igfGridIdx, /* i : IGF grid index */ - const float *pITFSpectrum /* i : MDCT spectrum */ -); - -void convert_coeffs_to_higher_res( - const float *in1, /* i : first subframe input */ - const float *in2, /* i : second subframe input */ - float *out, /* o : converted output */ - const int16_t len /* i : length of subframes */ -); - -int16_t quantize_sns( - float sns_in[CPE_CHANNELS][NB_DIV][M], - float snsQ_out[CPE_CHANNELS][NB_DIV][M], - Encoder_State **sts, - int16_t *indices, - int16_t *zero_side_flag, - int16_t *sns_stereo_mode -); - -void dequantize_sns( - int16_t indices[CPE_CHANNELS][NPRM_LPC_NEW], - float snsQ_out[CPE_CHANNELS][NB_DIV][M], - Decoder_State **sts -); - -void sns_avq_dec( - int16_t *index, /* i : Quantization indices */ - float SNS_Q[NB_DIV][M], /* o : Quantized SNS vectors */ - const int16_t L_frame, /* i : frame length */ - const int16_t numlpc /* i : Number of sets of lpc */ -); - -void sns_avq_dec_stereo( - int16_t *indexl, /* i : Quantization indices (left channel) */ - int16_t *indexr, /* i : Quantization indices (right channe) */ - const int16_t L_frame, /* i : frame length */ - float *SNS_Ql, /* o : Quantized SNS vectors (left channel) */ - float *SNS_Qr /* o : Quantized SNS vectors (right channe) */ -); - -void convertToMS( - const int16_t L_frame, /* i : frame length */ - float x0[], /* i/o: mid/left channel coefficients */ - float x1[], /* i/o: side/right channel coefficients */ - const float norm_fac /* i : normalization factor */ -); - -void inverseMS( - const int16_t L_frame, /* i : frame length */ - float x0[], /* i/o: mid/left channel coefficients */ - float x1[], /* i/o: side/right channel coefficients */ - const float norm_fac /* i : normalization factor */ -); - -void stereoFdCngCoherence( - Encoder_State **sts, /* i/o: core encoder structures */ - const int16_t last_element_mode, /* i : last element mode */ - float fft_buff[CPE_CHANNELS][2 * L_FFT] /* i : fft buffers for L and R channels */ -); - -void FdCngEncodeMDCTStereoSID( - CPE_ENC_HANDLE hCPE /* i/o: CPE encoder state structure */ -); - -void FdCngDecodeMDCTStereoSID( - CPE_DEC_HANDLE hCPE /* i/o: CPE decoder state structure */ -); - -ivas_error initMdctStereoDtxData( - CPE_DEC_HANDLE hCPE /* i/o: CPE decoder handle */ -); - -void synchonize_channels_mdct_sid( - Decoder_State *sts[CPE_CHANNELS], /* i/o: decoder state structure */ - const int16_t n /* i : channel number */ -); - -void updateBuffersForDmxMdctStereo( - CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */ - const int16_t output_frame, /* i : output frame length */ - float *output[CPE_CHANNELS], /* i/o: decoder output */ - float synth[CPE_CHANNELS][L_FRAME48k] /* i/o: decoder synthesis */ -); - -void applyDmxMdctStereo( - const CPE_DEC_HANDLE hCPE, /* i : CPE handle */ - float *output[CPE_CHANNELS], /* o : output from core decoder */ - const int16_t output_frame /* i : output frame length */ -); - -/*----------------------------------------------------------------------------------* - * Front-VAD prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error front_vad_create( - FRONT_VAD_ENC_HANDLE *hFrontVad, /* i/o: front-VAD handle */ - const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */ -); - -void front_vad_destroy( - FRONT_VAD_ENC_HANDLE *hFrontVad /* i/o: front-VAD handle */ -); - -ivas_error front_vad( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure, nullable */ - Encoder_State *st, /* i/o: encoder state structure */ - const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ - FRONT_VAD_ENC_HANDLE *hFrontVads, /* i/o: front-VAD handles */ - const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */ - const int16_t input_frame, /* i : frame length */ - int16_t vad_flag_dtx[], /* o : HE-SAD flag with additional DTX HO */ - float fr_bands[][2 * NB_BANDS], /* i : energy in frequency bands */ - float Etot_LR[], /* o : total energy Left & Right channel */ - float lf_E[][2 * VOIC_BINS], /* i : per bin spectrum energy in lf, LR channels */ - int16_t localVAD_HE_SAD[], /* o : HE-SAD flag without hangover, LR channels */ - int16_t vad_hover_flag[], /* o : VAD hangover flag */ - float band_energies_LR[2 * NB_BANDS], /* o : energy in critical bands without minimum noise floor E_MIN */ - float *PS_out, /* o : energy spectrum */ - float *Bin_E_out /* o : log-energy spectrum of the current frame*/ -); - -ivas_error front_vad_spar( - SPAR_ENC_HANDLE hSpar, /* i/o: SPAR encoder structure */ - const float *omni_in, /* i : omnidirectional input signal */ - ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : encoder configuration handle */ - const int16_t input_frame /* i : input frame length */ -); - - -/*----------------------------------------------------------------------------------* - * Stereo CNG prototypes - *----------------------------------------------------------------------------------*/ - -void stereo_enc_cng_init( - STEREO_CNG_ENC_HANDLE hStereoCng /* i/o: stereo CNG encoder structure */ -); - -void stereo_cng_upd_counters( - STEREO_CNG_ENC_HANDLE hStereoCng, /* i/o: Stereo CNG data structure */ - const int32_t element_mode, /* i : element mode */ - const int16_t nbands, /* i : Number of bands in active */ - const float sidSideGain[], /* i : SID side gains */ - const int16_t burst_ho_count, /* i : Hang-over count */ - int16_t *coh_fade_counter /* i : Coherence fade counter */ -); - -void stereo_cng_init_dec( - STEREO_CNG_DEC_HANDLE hStereoCng, /* i/o: stereo CNG decoder structure */ - const int16_t *frameSize /* i : pointer to frameSize of channel 0 to be used for channel 1 */ -); - -void stereo_cng_compute_PScorr( - float *output[CPE_CHANNELS], /* i : Output signal */ - float *c_PS_LT, /* i/o: Correlation */ - const int16_t L_frame_0, /* i : L_frame channel 0 */ - const int16_t L_frame_1 /* i : L_frame channel 1 */ -); - -void stereo_cng_dec_update( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - const int32_t ivas_total_brate /* i : IVAS total bitrate Q0*/ -); - -void stereo_cna_update_params( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *output[CPE_CHANNELS], /* i : Output signal */ - const int16_t output_frame, /* i : Output frame length */ - const int16_t tdm_ratio_idx /* i : TDM ratio index */ -); - -void dtx_enc_init( - Encoder_State *st, /* i : Encoder state handle */ - const int16_t var_SID_rate_flag, /* i : flag for variable SID update rate */ - const int16_t interval_SID /* i : interval for SID update */ -); - - -/*----------------------------------------------------------------------------------* - * Framework general prototypes - *----------------------------------------------------------------------------------*/ - -void mvc2c( - const uint8_t x[], /* i : input vector */ - uint8_t y[], /* o : output vector */ - const int16_t n /* i : vector size */ -); - -/*! r: Adjusted value */ -ivas_error stereo_memory_dec( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - CPE_DEC_HANDLE hCPE, /* i : CPE decoder structure */ - const int16_t nb_bits_metadata, /* i : number of metadata bits */ - const int32_t output_Fs, /* i : output sampling rate */ - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - const MC_MODE mc_mode, /* i : MC mode */ - const int16_t nchan_transport /* i : number of transport channels */ -); - -void stereo_switching_dec( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - const Word32 ivas_total_brate /* i : IVAS total bitrate Q0*/ -); - -void stereo_td2dft_update( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - const int16_t n, /* i : channel number */ - float output[], /* i/o: synthesis @internal Fs */ - float synth[], /* i/o: synthesis @output Fs */ - float hb_synth[], /* i/o: hb synthesis */ - const int16_t output_frame /* i : frame length */ -); - -void stereo_mdct2dft_update( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output0[], /* i/o: synthesis @internal Fs, ch0 */ - float synth0[] /* i/o: synthesis @output Fs, ch0 */ -); - - -/*! r: number of bits written */ - - - -/*----------------------------------------------------------------------------------* - * MCT prototypes - *----------------------------------------------------------------------------------*/ -void ivas_mdct_core_whitening_enc_fx( - CPE_ENC_HANDLE hCPE, /* i/o: CPE encoder structure */ - Word16 new_samples_fx[CPE_CHANNELS][L_INP], /* i : new samples */ - Word16 old_wsp_fx[CPE_CHANNELS][L_WSP], /* i : 12.8kHz weighted speech (for LTP */ - Word16 pitch_buf[CPE_CHANNELS][NB_SUBFR16k], /* o : floating pitch for each subframe */ - Word32 *mdst_spectrum_long[CPE_CHANNELS], /* o : buffer for MDST spectrum */ - int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* o : buffer TNS bits */ - Word32 *orig_spectrum_long[CPE_CHANNELS], /* o : origingal spectrum w/o whitening */ - int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* o : size of TNS */ - int16_t p_param[CPE_CHANNELS][NB_DIV], /* o : pointer to parameter array */ - BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ - const int16_t mct_on, /* i : flag mct block (1) or stereo (0) */ - const int16_t nChannels, /* i : total number of coded channels */ -Word16 mdst_spectrum_e[CPE_CHANNELS][NB_DIV], -Word16 orig_spectrum_e[CPE_CHANNELS][NB_DIV] -); -void ivas_mct_core_enc( - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ - CPE_ENC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE encoder structures */ - const int16_t nChannels, /* i : number of channels to be coded */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t switch_bw, /* i : flag bandwidth switch occurance */ - const int16_t lfe_bits, /* i : bits spent for LFE */ - const int16_t sba_order /* i : Ambisonic (SBA) order */ -); - -void ivas_mdct_quant_coder( - CPE_ENC_HANDLE hCPE, /* i/o: Encoder CPE handle */ - int16_t tnsBits[CPE_CHANNELS][NB_DIV], /* i : bits needed for TNS parameters */ - int16_t tnsSize[CPE_CHANNELS][NB_DIV], /* i : size of TNS */ - int16_t p_param[CPE_CHANNELS][NB_DIV], /* i : pointer to parameter array */ - const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */ -); - -void apply_MCT_enc( - MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ - Encoder_State **sts, /* i/o: encoder state structure */ - float *mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: MDST spectrum */ - float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: inverse spectrum */ - float *inv_mdst_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i/o: inverse MDST spectrum */ - const int16_t nchan /* i : number of channels */ -); - -void write_mct_bitstream( - Encoder_State **sts, /* i/o: encoder state structure */ - MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ - const int16_t nchan /* i : number of channels */ -); - -void splitAvailableBitsMCT_fx( - void **sts, /* i/o: encoder/decoder state structure */ - const Word16 total_bits, /* i : total number of available bits */ - const Word16 split_ratio[MCT_MAX_CHANNELS], /* i : ratio for splitting the bits Q0 */ - const Word16 enc_dec, /* i : encoder or decoder flag */ - const Word16 nchan /* i : number of channels */ -); - -void getChannelEnergies( - Encoder_State **sts, /* i : Encoder state structure */ - float nrg[MCT_MAX_CHANNELS], /* o : energies */ - const int16_t nchan /* i : number of channels */ -); - -void mctStereoIGF_enc( - MCT_ENC_HANDLE hMCT, /* i/o: MCT encoder structure */ - Encoder_State **sts, /* i/o: encoder state structure */ - float *orig_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : MDCT spectrum for ITF */ - float powerSpec[MCT_MAX_CHANNELS][L_FRAME48k], /* i/o: MDCT^2 + MDST^2 spectrum,or estimate */ - float *powerSpecMsInv[MCT_MAX_CHANNELS][NB_DIV], /* i : same as above but for inverse spect. */ - float *inv_spectrum[MCT_MAX_CHANNELS][NB_DIV], /* i : inverse spectrum */ - const int16_t sp_aud_decision0[MCT_MAX_CHANNELS] /* i : speech audio decision */ -); - -void ivas_mdct_dec_side_bits_frame_channel( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - int16_t param_lpc[CPE_CHANNELS][NPRM_LPC_NEW], /* o : lpc_parameters */ - int16_t p_param[CPE_CHANNELS][NB_DIV], /* o : pointer to param buffer */ - Decoder_State *st0, /* i : pointer to bitstream handle */ - int16_t nTnsBitsTCX10[CPE_CHANNELS][NB_DIV], /* o : number of bits for TNS */ - int16_t param[CPE_CHANNELS][DEC_NPRM_DIV * NB_DIV], /* i/o: parameters buffer */ - const int16_t MCT_flag, /* i : hMCT handle allocated (1) or not (0) */ - const int16_t odd_channel_cpe /* i : flag cpe with odd nb of tc channels */ -); - -void ivas_mct_side_bits( - MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ - CPE_DEC_HANDLE hCPE[MCT_MAX_BLOCKS], /* i/o: CPE decoder structure */ - const int16_t nCPE, /* i : number of CPEs */ - Decoder_State *st0, /* i : decoder handle for Bstr */ - const int16_t bfi, /* i : BFI flag */ - uint16_t *bitstream, /* o : bitstream indices */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ -); - -void ivas_mdct_core_invQ( - CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */ - int16_t nTnsBitsTCX10[CPE_CHANNELS][NB_DIV], /* i : number of TNS bits */ - int16_t p_param[CPE_CHANNELS][NB_DIV], /* i : pointer to param buffer */ - int16_t param_lpc[CPE_CHANNELS][NPRM_LPC_NEW], /* i : lpc parameters */ - int16_t param[CPE_CHANNELS][DEC_NPRM_DIV * NB_DIV], /* i : param buffer */ - int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : flag TNS enabled */ - STnsData tnsData[CPE_CHANNELS][NB_DIV], /* i : TNS parameter */ - float *x_0[CPE_CHANNELS][NB_DIV], /* i/o: signal buffer */ - float *x[CPE_CHANNELS][NB_DIV], /* i/o: signal buffer */ - float Aq[CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )], /* i : LP coefficients */ - int16_t ms_mask[NB_DIV][MAX_SFB], /* i : M/S mask */ - const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */ -); - -void ivas_mdct_core_reconstruct( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float *x[][NB_DIV], /* i/o: pointers to synthesis @internal_FS */ - float signal_outFB[CPE_CHANNELS][L_FRAME_PLUS], /* o : synthesis @output_FS */ - int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : flage TNS enabled */ - const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */ -); - -void ivas_mdct_core_tns_ns( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - int16_t fUseTns[CPE_CHANNELS][NB_DIV], /* i : two entries for each channel in TCX10 */ - STnsData tnsData[CPE_CHANNELS][NB_DIV], /* o : TNS parameter */ - float *x[CPE_CHANNELS][NB_DIV], /* o : synthesis @internal_FS */ - float Aq[CPE_CHANNELS][( NB_SUBFR16k + 1 ) * ( M + 1 )], /* o : LP coefficients */ - const int16_t MCT_flag /* i : hMCT handle allocated (1) or not (0) */ -); - - -void ivas_mct_dec_mct( - MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ - Decoder_State **sts, /* i/o: decoder state structure */ - const int16_t nchan /* i : number of channels */ -); - -void apply_MCT_dec( - MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ - Decoder_State **sts, /* i/o: decoder state structure */ - float *x[MCT_MAX_CHANNELS][NB_DIV] /* i/o: decoded and dequan. spect. input to MCT */ -); - -void mctStereoIGF_dec( - MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ - Decoder_State **sts, /* i/o: decoder state structure */ - float *x[MCT_MAX_CHANNELS][NB_DIV], /* i/o: decoded and dequantized spectrum */ - const int16_t bfi /* i : bad frame flag */ -); - -void enc_prm_igf_mdct( - Encoder_State *st, /* i : Encoder state handle */ - BSTR_ENC_HANDLE hBstr /* i/o: Bitstream handle */ -); - -void mdct_read_IGF_bits( - Decoder_State *st, /* i/o: Encoder state handle */ - Decoder_State *st0 /* i : pointer to handle where bstr is read */ -); - - -/*----------------------------------------------------------------------------------* - * Q Metadata prototypes for DirAC and MASA - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_qmetadata_enc_encode( - BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */ - IVAS_QMETADATA *hQMetaData, /* i/o: q_metadata handle */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -ivas_error ivas_qmetadata_enc_encode_hr_384_512( - BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */ - IVAS_QMETADATA *hQMetaData, /* i/o: metadata handle */ - const int16_t bits_sph_idx, - const int16_t bits_sp_coh -); - -void deindex_sph_idx( - const uint16_t sphIndex, /* i : Spherical index */ - const SPHERICAL_GRID_DATA *gridData, /* i : Prepared spherical grid */ - float *theta, /* o : Elevation */ - float *phi /* o : Azimuth */ -); - -/*! r: output index for direction */ -uint16_t index_theta_phi_16( - float * p_theta, /* i/o: input elevation to be indexed */ - float * p_phi, /* i/o: input azimuth to be indexed */ - const SPHERICAL_GRID_DATA *gridData /* i : generated grid data */ -); - -void reset_metadata_spatial( - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */ - const int32_t element_brate, /* i : element bitrate */ - int32_t *total_brate, /* o : total bitrate */ - const int32_t core_brate, /* i : core bitrate */ - const int16_t nb_bits_metadata /* i : number of meatdata bits */ -); - -/*! r: number of bits written */ - -/*! r: number of bits read */ -int16_t ivas_qmetadata_dec_decode( - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ - uint16_t *bitstream, /* i : bitstream */ - int16_t *index, /* i/o: bitstream position */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -/*! r: number of bits read */ -int16_t ivas_qmetadata_dec_decode_hr_384_512( - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: hQMetaData handle */ - uint16_t *bitstream, /* i : bitstream */ - int16_t *index, /* i/o: bitstream position */ - const SPHERICAL_GRID_DATA *sph_grid16, /* i : spherical grid for deindexing */ - const int16_t bits_sph_idx, - const int16_t bits_sp_coh, - const uint8_t ncoding_bands_config -); - -/*! r: number of bits read */ -int16_t ivas_qmetadata_dec_sid_decode( - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ - uint16_t *bitstream, /* i : bitstream */ - int16_t *index, /* i/o: bitstream position */ - const int16_t nchan_transport, /* i : number of transport channels */ - int16_t *element_mode, /* o : element mode */ - const int16_t ivas_format /* i : IVAS format */ -); - - - - -void restore_metadata_buffer( - BSTR_ENC_HANDLE hMetaData, - const int16_t next_ind_start, - const int16_t bit_pos_start -); - -/*! r: codeword index */ -int16_t masa_sq( - const float in, /* i : input value */ - const float *threshold, /* i : partition */ - const int16_t cb_sz /* i : codebook size */ -); - -void ivas_qmetadata_azimuth_elevation_to_direction_vector( - const float az, /* i : azimuth */ - const float el, /* i : elevation */ - float *dv /* o : direction vector */ -); - -ivas_error only_reduce_bits_direction( - int16_t *reduce_bits_out, - IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */ - int16_t reduce_bits, - const int16_t coding_subbands, - const int16_t no_subframes, - int16_t *ind_order -); - -void quantize_direction_frame( - IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */ - float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], - float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], - const int16_t hrmasa_flag /* i : flag indicating high-rate MASA MD coding*/ -); - -/*! r: quantized spherical index */ -uint16_t quantize_direction( - const float theta, /* i : input elevation value */ - float phi, /* i : input azimuth value */ - const int16_t no_bits, /* i : number of bits */ - float *theta_q, /* o : quantized elevation */ - float *phi_q, /* o : quantized azimuth */ - uint16_t *index_theta, /* o : quantized elevation index */ - uint16_t *index_phi, /* o : quantized azimuth index */ - const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */ -); - -int16_t quantize_direction2D( - float phi, /* i : input azimuth value */ - const int16_t no_cw, /* i : number of bits */ - float *phi_q, /* o : quantized azimuth value */ - uint16_t *index_phi, /* o : quantized azimuth index */ - const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */ -); - -void quantize_direction_frame2D( - IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */ - float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input azimuth values */ - float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES] /* i : input elevation values */ -); - -void small_requantize_direction_frame( - IVAS_QDIRECTION *q_direction, /* i/o: quantized direction structure */ - float azimuth_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input azimuth values */ - float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES], /* i : input elevation values */ - const int16_t raw_flag[MASA_MAXIMUM_CODING_SUBBANDS], /* i : raw/EC encoding mode for each subband */ - int16_t bits_dir_bands[MASA_MAXIMUM_CODING_SUBBANDS], /* i/o: number of bits per subband */ - int16_t *diff /* i/o: number of bits to be reduced */ -); - -/*! r: index azimuth */ -int16_t quantize_phi( - float phi, /* i : azimuth value */ - const int16_t flag_delta, /* i : flag indicating if the azimuth codebook is translated or not */ - float *phi_hat, /* o : quantized azimuth */ - const int16_t n /* i : azimuth codebook size */ -); - -/*! r: decoded elevation value */ -float deindex_elevation( - uint16_t *id_th, /* i : input index */ - const int16_t no_bits, /* i : number of bits for the spherical grid */ - const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */ -); - -float deindex_azimuth( - int16_t id_phi, /* i : index */ - const int16_t no_bits, /* i : number of bits for the spherical grid */ - const int16_t id_th, /* i : elevation index */ - const int16_t remap, /* i : remapping flag */ - const MC_LS_SETUP mc_format /* i : channel format if in MC-mode */ -); - -UWord16 ivas_qmetadata_reorder_generic_fx( - const Word16 signed_value -); - -void ivas_sba_config( - const int32_t sba_total_brate, /* i : SBA total bitrate */ - int16_t sba_order, /* i : Ambisonic (SBA) order */ - int16_t nb_channels, /* i : Number of Ambisonic (SBA) channels */ - int16_t *nchan_transport, /* o : number of transport channels */ - const int16_t sba_planar, /* i : SBA planar flag */ - int16_t *nSCE, /* o : number of SCEs */ - int16_t *nCPE, /* o : number of CPEs */ - int16_t *element_mode /* o : element mode of the core coder */ -); - -void ivas_sba_set_cna_cng_flag( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_sba_dec_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - uint16_t *nSamplesFlushed, /* o : number of samples flushed */ - int16_t *data /* o : output synthesis signal */ -); - -ivas_error ivas_sba_digest_tc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int16_t nCldfbSlots, /* i : number of CLDFB slots */ - const int16_t nSamplesForRendering, /* i : number of samples provided */ - float *data[] /* i : transport channel samples */ -); - - - -/*! r: Ambisonic (SBA) order */ -int16_t ivas_sba_get_order( - const int16_t nb_channels, /* i : Number of ambisonic channels */ - const int16_t sba_planar /* i : SBA planar flag */ -); - -/*! r: number of Ambisonic channels */ -int16_t ivas_sba_get_nchan( - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const int16_t sba_planar /* i : SBA planar flag */ -); - -/*! r: number of ambisonics metadata channels */ - -void ivas_sba_getTCs( - float *sba_data[], /* i : SBA signals */ - Encoder_Struct *st_ivas, /* i/o: Encoder struct */ - const int16_t input_frame /* i : frame length */ -); - -int16_t ivas_sba_remapTCs( - float *sba_data[], /* i/o: SBA signals */ - Decoder_Struct *st_ivas, /* i/o: decoder struct */ - const int16_t output_frame /* i : frame length */ -); - -void ivas_sba_dirac_stereo_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output[CPE_CHANNELS], /* o : output synthesis signal */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t mcmasa /* i : McMASA flag */ -); - -void ivas_sba_dirac_stereo_config( - STEREO_DFT_CONFIG_DATA_HANDLE hConfig /* o : DFT stereo configuration */ -); - - -Word16 ivas_get_sba_dirac_stereo_flag( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -void ivas_sba_dirac_stereo_smooth_parameters( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: encoder DFT stereo handle */ - ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD handle for upmixing */ - const int16_t cross_fade_start_offset, /* i : SPAR mixer delay compensation */ - const int32_t output_Fs, /* i : Fs for delay calculation */ - const int16_t num_md_sub_frames /* i : number of subframes in mixing matrix */ -); - - -/*----------------------------------------------------------------------------------* - * DirAC prototypes - *----------------------------------------------------------------------------------*/ - - -ivas_error ivas_dirac_enc_reconfigure( - Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ -); - - - -ivas_error ivas_dirac_config( - void *st_ivas, /* i/o: IVAS encoder/decoder state structure */ - const int16_t enc_dec /* i : encoder or decoder flag */ -); - -void ivas_dirac_config_bands( - int16_t *band_grouping, /* o : band grouping */ - const int16_t nbands, /* i : number of bands */ - const int16_t max_band, /* i : maximal band index +1 */ - int16_t *dirac_to_spar_md_bands, /* o : mapping of DirAC parameter band index to SPAR FB band index */ - const int8_t useLowerBandRes, /* i : flag indicating lower band resolution for DirAC */ - const int16_t enc_param_start_band, /* i : band index of first DirAC parameter band */ - IVAS_FB_MIXER_HANDLE hFbMdft -); - -void ivas_get_dirac_sba_max_md_bits( - const int32_t sba_total_brate, - int16_t *bits_frame_nominal, - int16_t *metadata_max_bits, - int16_t *qmetadata_max_bit_req, - const int16_t nbands - , - IVAS_FORMAT ivas_format -); - -ivas_error ivas_dirac_sba_config( - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ - int16_t *element_mode, /* o : element mode of the core coder */ - int32_t sba_total_brate, /* i : SBA total bitrate */ - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const int16_t nbands /* i : number of frequency bands */ - , - IVAS_FORMAT ivas_format -); - -ivas_error ivas_dirac_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const DIRAC_CONFIG_FLAG flag_configopen /* i/ : Flag determining if we open or reconfigure the DirAC decoder */ -); - -void ivas_dirac_dec_close( - DIRAC_DEC_HANDLE *hDirAC_out -); - -void ivas_dirac_dec_read_BS( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - Decoder_State *st, /* i/o: decoder Core state structure */ - DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ - SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial rendering data handle */ - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q metadata */ - int16_t *nb_bits, /* o : number of bits read */ - const int16_t last_bit_pos, /* i : last read bitstream position */ - const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ - int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ -); - -void generate_masking_noise_lb_dirac( - HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ - float *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ - const int16_t nCldfbTs, /* i : number of CLDFB slots that will be rendered */ - const int16_t cna_flag /* i : CNA flag for LB and HB */ -); - - -void ivas_dirac_dec_render( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const int16_t nchan_transport, /* i : number of transport channels */ - const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */ - uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */ - uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */ - float *output_f[] /* o : rendered time signal */ -); - -void ivas_dirac_dec_render_sf( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */ - const int16_t nchan_transport, /* i : number of transport channels */ - float *pppQMfFrame_ts_re[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX], - float *pppQMfFrame_ts_im[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX] -); - - -void computeDirectionVectors( - float *intensity_real_x, - float *intensity_real_y, - float *intensity_real_z, - const int16_t enc_param_start_band, - const int16_t num_frequency_bands, - float *direction_vector_x, - float *direction_vector_y, - float *direction_vector_z -); - -void computeDiffuseness( - float *buffer_intensity[DIRAC_NUM_DIMS][DIRAC_NO_COL_AVG_DIFF], - const float *buffer_energy, - const int16_t num_freq_bands, - float *diffuseness -); - -void ivas_dirac_dec_get_response( - const int16_t azimuth, - const int16_t elevation, - float *response, - const int16_t ambisonics_order -); - - - -ivas_error ivas_mc_paramupmix_enc_open_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ -); - -void ivas_mc_paramupmix_enc_close_fx( - MC_PARAMUPMIX_ENC_HANDLE *hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */ - const int32_t input_Fs /* i : input sampling rate */ -); - -ivas_error ivas_mc_paramupmix_dec_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -void ivas_mc_paramupmix_dec_close( - MC_PARAMUPMIX_DEC_HANDLE *hMCParamUpmix_out /* i/o: Parametric MC decoder handle */ -); - -void ivas_mc_paramupmix_dec_read_BS( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Decoder_State *st, /* i/o: decoder state structure */ - MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, /* i/o: decoder MC Param-Upmix handle */ - int16_t *nb_bits /* o : number of bits written */ -); - -void ivas_mc_paramupmix_dec_digest_tc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ - const int16_t nSamplesForRendering /* i : number of samples provided */ -); - -void ivas_param_mc_set_coded_bands_fx( - HANDLE_IVAS_PARAM_MC_METADATA hMetadataPMC /* i/o: handle for the Parametric MC parameter coding state */ -); - -/*! r: number of IVAS transport channels */ - -ivas_error ivas_param_mc_enc_open( - Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ -); - -ivas_error ivas_param_mc_enc_reconfig( - Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ -); - -void ivas_param_mc_enc_close( - PARAM_MC_ENC_HANDLE *hParamMC, /* i/o: Parametric MC encoder handle */ - const int32_t input_Fs /* i : input sampling rate */ -); - -void ivas_param_mc_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS Encoder handle */ - BSTR_ENC_HANDLE hMetaData, /* i/o: IVAS Metadata bitstream handle */ - float *data_f[], /* i/o: input/transport MC data */ - const int16_t input_frame /* i : input frame length */ -); - -ivas_error ivas_param_mc_dec_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_param_mc_dec_reconfig( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - - - -void ivas_param_mc_dec_digest_tc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint8_t nCldfbSlots, /* i : number of CLFBS slots in the transport channels */ - float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output*/ -); - -void ivas_param_mc_dec_render( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */ - uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */ - uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */ - float *output_f[] /* o : rendered time signal */ -); - -void ivas_param_mc_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ -); - -/*! r: number of cldfb synthesis instances */ -int16_t param_mc_get_num_cldfb_syntheses( - Decoder_Struct *st_ivas /* i : IVAS decoder structure */ -); - -UWord16 ivas_param_mc_get_configuration_index_fx( - const MC_LS_SETUP mc_ls_setup, /* i : MC ls setup */ - const Word32 ivas_total_brate /* i : IVAS total bitrate */ -); - -ivas_error ivas_dirac_dec_output_synthesis_cov_open( - DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i/o: handle for the covariance synthesis parameters */ - DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: handle for the covariance synthesis state */ - const int16_t max_band_decorr, /* i : uppermost frequency band where decorrelation is applied */ - const int16_t interp_length, /* i : length for interpolating the mixing matrices in time slots */ - const int16_t num_param_bands, /* i : number of parameter bands */ - const int16_t num_param_bands_residual, /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */ - const int16_t nchan_in, /* i : number of input (transport) channels */ - const int16_t nchan_out, /* i : number of output channels */ - const float *proto_matrix /* i : the prototype (upmix) matrix (only used if mode == 1) */ -); - -void ivas_dirac_dec_output_synthesis_get_interpolator( - DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i/o: handle for the covariance synthesis parameters */ - const uint16_t interp_length /* i : interpolator length */ -); - -void ivas_dirac_dec_output_synthesis_cov_init( - DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state, /* i/o: pointer to the state of the covariance synthesis */ - const int16_t nchan_in, /* i : number of input (tranport) channels */ - const int16_t nchan_out, /* i : number of output channels */ - const int16_t n_param_bands, /* i : number of total parameter bands */ - const int16_t n_param_bands_res /* i : number of parameter bands with a residual mixing matrix (i.e. decorrelation */ -); - -void ivas_dirac_dec_output_synthesis_cov_close( - DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params, /* i : handle for the covariance synthesis parameters */ - DIRAC_OUTPUT_SYNTHESIS_COV_STATE *h_dirac_output_synthesis_state /* i/o: handle for the covariance synthesis state */ -); - - -void ivas_dirac_dec_output_synthesis_cov_param_mc_synthesise_slot( - float *Cldfb_RealBuffer_in, /* i : input channel filter bank samples (real part) */ - float *Cldfb_ImagBuffer_in, /* i : input channel filter bank samples (imaginary part) */ - float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : output channel filter bank samples (real part) */ - float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : output channel filter bank samples (imaginary part) */ - float *mixing_matrix[], /* i : parameter band wise mixing matrices (direct part) */ - float *mixing_matrix_res[], /* i : parameter band wise mixing matrices (residual part) */ - const uint16_t slot_idx_sfr, /* i : time slot index for the current slot within the current subframe */ - const uint16_t slot_idx_tot, /* i : time slot index for the current slot within the frame */ - const int16_t nX, /* i : number of input channels */ - const int16_t nY, /* i : number of output channels */ - PARAM_MC_DEC_HANDLE hParamMC /* i : handle to the Parametric MC decoder state */ -); - - -void FdCngEncodeDiracMDCTStereoSID( - CPE_ENC_HANDLE hCPE /* i/o: CPE encoder state structure */ -); - -void FdCngDecodeDiracMDCTStereoSID( - CPE_DEC_HANDLE hCPE /* i/o: CPE decoder state structure */ -); - - -/*----------------------------------------------------------------------------------* - * SPAR prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_spar_enc_open( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder handle */ - const int16_t spar_reconfig_flag /* i : SPAR reconfiguration flag */ -); - -ivas_error ivas_spar_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float *data_f[], /* i/o: input/transport audio channels */ - const int16_t input_frame, /* i : input frame length */ - int16_t *nb_bits_metadata, /* i : number of MD bits written */ - BSTR_ENC_HANDLE hMetaData /* o : MetaData handle */ -); - -ivas_error ivas_spar_dec_open( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const int16_t spar_reconfig_flag /* i : SPAR reconfiguration flag */ -); - - -ivas_error ivas_spar_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */ - int16_t *nb_bits_read /* o : number of MD bits read */ -); - -void ivas_spar_config( - int32_t ivas_total_brate, /* i : codec total bitrate */ - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - int16_t *nchan_transport, /* o : number of transport channels */ - int16_t *nSCE, /* o : number of SCEs */ - int16_t *nCPE, /* o : number of CPEs */ - int32_t *core_nominal_brate, /* o : core-coding nominal bitrate */ - const int16_t sid_format /* i : IVAS format indicator from SID frame */ -); - -ivas_error ivas_sba_linear_renderer( - float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t nchan_in, /* i : number of input ambisonics channels */ - const int16_t nchan_ism, /* i : number of objects */ - const AUDIO_CONFIG output_config, /* i : output audio configuration */ - const IVAS_OUTPUT_SETUP output_setup /* i : output format setup */ -); - -void ivas_sba_mix_matrix_determiner( - SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */ - float *output[], /* i/o: transport/output audio channels */ - const int16_t bfi, /* i : BFI flag */ - const int16_t nchan_remapped, /* i : num channels after remapping of TCs */ - const int16_t output_frame, /* i : output frame length */ - const int16_t num_md_sub_frames /* i : number of subframes in mixing matrix */ -); - -/* AGC */ -/*! r: AGC enable flag */ - -ivas_error ivas_spar_agc_enc_open( - ivas_agc_enc_state_t **hAgcEnc, /* i/o: AGC decoder handle */ - const int32_t input_Fs, /* i : input sampling rate */ - const int16_t nchan_inp /* i : number of input channels */ -); - -void ivas_spar_agc_enc_close( - ivas_agc_enc_state_t **hAgcEnc /* i/o: AGC encoder handle */ -); - -void ivas_agc_enc_process( - ivas_agc_enc_state_t *hAgcEnc, /* i/o: AGC encoder handle */ - BSTR_ENC_HANDLE hMetaData, /* i/o: MetaData handle */ - float **ppPcm_in, /* i : input audio channels */ - float **ppPcm_out, /* o : output audio channels */ - const int16_t n_channels, /* i : number of channels */ - const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */ -); - -ivas_error ivas_spar_agc_dec_open( - ivas_agc_dec_state_t **hAgcDec, /* i/o: AGC decoder handle */ - const int32_t output_Fs /* i : output sampling rate */ -); - -void ivas_spar_agc_dec_close( - ivas_agc_dec_state_t **hAgcDec /* i/o: AGC decoder handle */ -); - - -void ivas_agc_dec_process( - ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */ - float *pcm_in[], /* i : input audio channels */ - float *pcm_out[], /* o : output audio channels */ - const int16_t n_channels, /* i : number of channels */ - const int16_t output_Fs /* i : output sampling rate */ -); - -void ivas_agc_read_bits( - ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */ - Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/ - const int16_t n_channels, /* i : number of channels */ - const int16_t AGC_flag /* i : AGC on/off flag */ -); - -void ivas_agc_initWindowFunc( - float *pWinFunc, - const int16_t length -); - -void ivas_agc_calcGainParams( - uint16_t *absEmin, - uint16_t *betaE, - uint16_t *maxAttExp, - const int16_t numCoeffs -); - -float ivas_get_mdct_scaling_gain( - const int16_t dct_len_by_2 -); - -void ivas_get_twid_factors( - const int16_t length, - const float **pTwid_re, - const float **pTwid_im -); - -int16_t ivas_get_bw_idx_from_sample_rate( - const int32_t sampling_rate /* i : sampling rate */ -); - -/*! r: config. table index */ -int16_t ivas_get_spar_table_idx( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t sba_order, /* i : IVAS SBA order */ - const int16_t bwidth, /* i : audio bandwidth */ - int16_t *bitlen, /* o : number of bits */ - int16_t *ind /* o : indice */ -); - -/*! r: number of transport channels */ -int16_t ivas_get_sba_num_TCs( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t sba_order /* i : IVAS SBA order */ -); - - -void ivas_spar_bitrate_dist( - int32_t core_brates_act[], /* o : bitrates per core-coder */ - const int16_t nAvailBits, /* i : number of available bits */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const int16_t bwidth /* i : audio bandwidth */ -); - -void ivas_mdct( - const float *pIn, - float *pOut, - const int16_t length -); - -void ivas_dct_windowing( - const int16_t fade_len, - const int16_t full_len, - const int16_t dct_len, - const int16_t zero_pad_len, - const float *pWindow_coeffs, - const int16_t frame_len, - float *pOut_buf, - float *pBuffer_prev, - float *pTemp_lfe -); - -void ivas_tda( - const float *pIn, - float *pOut, - const int16_t length -); - -void ivas_imdct( - const float *pIn, - float *pOut, - const int16_t length -); - -void ivas_itda( - const float *re, - float *pOut, - const int16_t length -); - -void ivas_spar_get_cldfb_gains( - SPAR_DEC_HANDLE hSpar, - HANDLE_CLDFB_FILTER_BANK cldfbAnaDec0, - HANDLE_CLDFB_FILTER_BANK cldfbSynDec0, - const DECODER_CONFIG_HANDLE hDecoderConfig -); - -/*! r: 1 if prediction residual channel */ - -void ivas_spar_dec_agc_pca( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float *output[], /* i/o: input/output audio channels */ - const Word16 output_frame /* i : output frame length */ -); - -void ivas_spar_dec_set_render_map( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int16_t nCldfbTs /* i : number of CLDFB time slots */ -); - -void ivas_spar_dec_set_render_params( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const int16_t n_cldfb_slots /* i : number of cldfb slots in this frame */ -); - -void ivas_spar_dec_digest_tc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int16_t nCldfbSlots, /* i : number of CLDFB slots */ - const int16_t nSamplesForRendering /* i : number of samples provided */ -); - -void ivas_sba_dec_digest_tc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const int16_t nCldfbSlots, /* i : number of CLDFB slots */ - const int16_t nSamplesForRendering /* i : number of samples provided */ -); - -ivas_error ivas_sba_dec_render( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */ - uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */ - uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */ - float *output_f[] /* o : rendered time signal */ -); - -void ivas_spar_dec_upmixer_sf( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float *output[], /* o : output audio channels */ - const int16_t nchan_internal /* i : number of internal channels */ -); - -void ivas_spar_dec_upmixer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float *output[], /* i/o: input/output audio channels */ - const int16_t nchan_internal, /* i : number of internal channels */ - const int16_t output_frame /* i : output frame length */ -); - -/* MD module */ - -void ivas_spar_md_enc_close( - ivas_spar_md_enc_state_t **hMdEnc /* i/o: SPAR MD encoder handle */ -); - -void ivas_compute_spar_params( - float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], - float dm_fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], - const int16_t i_ts, - float ***mixer_mat, - const int16_t start_band, - const int16_t end_band, - const int16_t dtx_vad, - const int16_t num_ch, - const int16_t bands_bw, - const int16_t active_w, - const int16_t active_w_vlbr, - ivas_spar_md_com_cfg *hSparCfg, - ivas_spar_md_t *hSparMd, - float *pWscale, - const int16_t from_dirac, - const int16_t dyn_active_w_flag -); - -void ivas_create_fullr_dmx_mat( - float pred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], - float dm_fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], - float ***mixer_mat, - const int16_t in_chans, - const int16_t start_band, - const int16_t end_band, - const int16_t active_w, - ivas_spar_md_com_cfg *hMdCfg -); - -void ivas_calc_c_p_coeffs( - ivas_spar_md_t *pSparMd, - float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], - const int16_t i_ts, - float ***mixer_mat, - const int16_t num_ch, - const int16_t num_dmx, - const int16_t band_idx, - const int16_t dtx_vad, - const int16_t compute_p_flag, - const int16_t dyn_active_w_flag -); - -void ivas_get_spar_md_from_dirac( - float azi_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES], - float ele_dirac[IVAS_MAX_NUM_BANDS][MAX_PARAM_SPATIAL_SUBFRAMES], - float diffuseness[IVAS_MAX_NUM_BANDS], - const int16_t n_ts, - float ***mixer_mat, - ivas_spar_md_t *hSpar_md, - ivas_spar_md_com_cfg *hSpar_md_cfg, - const int16_t start_band, - const int16_t end_band, - const int16_t order, - const int16_t dtx_vad, - float Wscale_d[IVAS_MAX_NUM_BANDS], - const uint8_t useLowerRes, - const int16_t active_w_vlbr, - const int16_t dyn_active_w_flag -); - -/*! r: number of MD subframes */ - -ivas_error ivas_spar_md_dec_matrix_open( - ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ - const int16_t num_channels, /* i : number of internal channels */ - const int16_t num_md_sub_frames -); - -void ivas_spar_md_dec_matrix_close( - ivas_spar_md_dec_state_t *hMdDecoder, /* i/o: SPAR MD decoder handle */ - const int16_t num_channels /* i : number of internal channels */ -); - -ivas_error ivas_spar_md_dec_open( - ivas_spar_md_dec_state_t **hMdDec_out, /* i/o: SPAR MD decoder handle */ - const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ - const int16_t num_channels, /* i : number of internal channels */ - const int16_t sba_order, /* i : SBA order */ - const int16_t sid_format, /* i : SID format */ - const int32_t last_active_ivas_total_brate /* i : IVAS last active bitrate */ -); - -void ivas_spar_md_dec_close( - ivas_spar_md_dec_state_t **hMdDec /* i/o: SPAR MD decoder handle */ -); - -void ivas_spar_get_parameters( - SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */ - const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ - const int16_t ts, /* i : time slot index */ - const int16_t num_ch_out, /* i : number of channels out */ - const int16_t num_ch_in, /* i : number of channels in */ - const int16_t num_spar_bands, /* i : number of SPAR bands */ - float par_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS] /* o : mixing matrix */ -); - -ivas_error ivas_spar_md_dec_init( - ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ - const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : configuration structure */ - const int16_t num_channels, /* i : number of internal channels */ - const int16_t sba_order /* i : SBA order */ -); - -void ivas_spar_md_dec_process( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/ - const int16_t num_bands_out, /* i : number of output bands */ - const int16_t sba_order /* i : SBA order */ -); - -void ivas_spar_to_dirac( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ - const int16_t dtx_vad, /* i : DTX frame flag */ - const int16_t num_bands_out, /* i : number of output bands */ - const int16_t bw, /* i : band joining factor */ - const int16_t dyn_active_w_flag /* i : dynamic active W flag */ -); - -void ivas_spar_update_md_hist( - ivas_spar_md_dec_state_t *hMdDec /* i/o: SPAR MD decoder handle */ -); - -int16_t ivas_spar_chk_zero_coefs( - Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ -); - -void ivas_spar_smooth_md_dtx( - ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ - const int16_t num_bands_out, /* i : number of output bands */ - const int16_t num_md_sub_frames /* i : number of metadata subframes */ -); - -void ivas_spar_setup_md_smoothing( - ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ - const int16_t num_bands_out, /* i : number of output bands */ - const int16_t num_md_sub_frames /* i : number of metadata subframes */ -); - -void ivas_spar_dec_gen_umx_mat( - ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int16_t num_bands_out, /* i : number of output bands */ - const int16_t bfi, /* i : bad frame indicator */ - const int16_t num_md_sub_frames -); - - - - - -/* Transient detector module */ -ivas_error ivas_transient_det_open_fx( - ivas_trans_det_state_t **hTranDet, /* i/o: Transient detector handle */ - const Word32 sampling_rate /* i : sampling rate */ -); - -void ivas_transient_det_close_fx( - ivas_trans_det_state_t **hTranDet /* i/o: Transient detector handle */ -); - -void ivas_transient_det_process( - ivas_trans_det_state_t *hTranDet, /* i/o: SPAR TD handle */ - float *pIn_pcm, /* i : input audio channels */ - const int16_t frame_len, /* i : frame length in samples */ - int16_t transient_det[2] /* o : transient det outputs */ -); - -void ivas_td_decorr_get_ducking_gains( - ivas_trans_det_state_t *hTranDet, /* i/o: Transient detector handle */ - float *pIn_pcm, - float *pIn_duck_gains, - float *pOut_duck_gains, - const int16_t frame_len, - const int16_t tdet_flag -); - -#define IVAS_CMULT_FLOAT( in1_re, in1_im, in2_re, in2_im, out1_re, out1_im ) \ - out1_re = ( in1_re * in2_re ) - ( in1_im * in2_im ); \ - out1_im = ( in1_re * in2_im ) + ( in2_re * in1_im ); - -#define IVAS_CALCULATE_ABS( re, im, out ) \ - out = sqrtf( ( re * re ) + ( im * im ) ); - -#define IVAS_CALCULATE_RABS( re, out ) \ - out = sqrtf( re * re ); - -#define IVAS_CALCULATE_SQ_ABS( re, im, out ) \ - out = (float) ( ( re * re ) + ( im * im ) ); - -#define IVAS_RMULT_DOUBLE( in1_re, in2_re, out1_re ) \ - out1_re = ( in1_re * in2_re ); \ - -#define IVAS_CALCULATE_SQ_ABS_N( re, out ) \ - out = (float) ( re * re ); - -#define IVAS_RMULT_FLOAT( in1_re, in2_re, out1_re ) \ - out1_re = ( in1_re * in2_re ); - - -/* PCA */ -void ivas_pca_enc_init( - PCA_ENC_STATE *hPCA /* i/o: PCA encoder structure */ -); - -void ivas_pca_read_bits( - Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/ - PCA_DEC_STATE *hPCA /* i/o: PCA encoder structure */ -); - -void ivas_pca_dec_init( - PCA_DEC_STATE *hPCA /* i/o: PCA decoder structure */ -); - -void ivas_pca_dec( - PCA_DEC_STATE *hPCA, /* i/o: PCA decoder structure */ - const int16_t n_samples, /* i : output frame length */ - const int16_t n_channels, /* i : number of channels */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int32_t last_ivas_total_brate, /* i : last IVAS total bitrate */ - const int16_t bfi, /* i : bad frame indicator */ - float *pcm_out[] /* o : output audio channels */ -); - -void pca_dec_s3( - const int32_t index, - float *q -); - - -void ivas_huffman_encode_fx( - ivas_huffman_cfg_t *huff_cfg, - Word16 in, - Word16 *hcode, - Word16 *hlen -); - - - -ivas_error ivas_huffman_decode( - ivas_huffman_cfg_t *huff_cfg, - Decoder_State *st0, - int16_t *dec_out -); - -void ivas_arith_decode_cmplx_cell_array( - ivas_arith_t *pArith_re, - ivas_arith_t *pArith_re_diff, - Decoder_State *st0, - ivas_cell_dim_t *pCell_dims, - int16_t *pDo_diff, const int16_t nB, - int16_t *pSymbol_re, - int16_t *pSymbol_re_old -); - - - - -void ivas_ari_done_encoding_14bits( - BSTR_ENC_HANDLE hBstr, Tastat *s -); - - -void ivas_wrap_arround( - int16_t *pArr, - const int16_t min_val, - const int16_t max_val, - const int16_t length -); - -void ivas_get_cum_freq_model( - const int16_t *pFreq_model, - const int16_t length, - int16_t *pCum_freq_model -); - -int16_t ivas_map_num_pred_r_to_idx( - const int16_t num_quant_points_pred_r, - const int16_t active_w_flag -); - -int16_t ivas_map_num_drct_r_to_idx( - const int16_t num_quant_points_drct_r -); - -int16_t ivas_map_num_decd_r_to_idx( - const int16_t num_quant_points_decd_r -); - -/* Quantization utilities */ -void ivas_quantise_real_values( - const float *values, - const int16_t q_levels, - const float min_value, - const float max_value, - int16_t *index, - float *quant, - const int16_t dim -); - - -void ivas_spar_quant_dtx_init( - ivas_spar_md_t *spar_md, - float *min_max -); - -void ivas_map_prior_coeffs_quant( - ivas_spar_md_prev_t *pSpar_md_prior, - ivas_spar_md_com_cfg *pSpar_md_cfg, - const int16_t qsi, - const int16_t nB -); - - -void ivas_clear_band_coeffs( - ivas_band_coeffs_t *pband_coeffs, - const uint16_t num_bands -); - -void ivas_clear_band_coeff_idx( - ivas_band_coeffs_ind_t *pband_coeff_idx, - const uint16_t num_bands -); - - -/*----------------------------------------------------------------------------------* - * MASA prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_masa_decode( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */ - Decoder_State *st, /* i/o: decoder state structure */ - int16_t *nb_bits_read /* o : number of bits read */ -); - -void generate_gridEq( - SPHERICAL_GRID_DATA *data /* o : data structure for grid */ -); - -ivas_error ivas_masa_enc_open_fx( - Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ -); - -void ivas_masa_enc_close_fx( - MASA_ENCODER_HANDLE *hMasa /* i/o: MASA metadata structure */ -); - -void ivas_masa_enc_reconfigure( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); - -ivas_error ivas_masa_dec_reconfigure( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ - int16_t *data /* o : output synthesis signal */ -); - -ivas_error ivas_masa_encode( - MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder structure */ - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ - BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */ - int16_t *nb_bits_metadata, /* o : number of metadata bits written */ - const int16_t nchan_transport, /* i : number of MASA input/transport channels */ - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t Opt_DTX_ON, /* i : DTX on flag */ - const int16_t element_mode, /* i : element mode */ - const ISM_MODE ism_mode, /* i : ISM format mode */ - const int16_t nchan_ism, /* i : number of ISM channels */ - ISM_METADATA_HANDLE hIsmMetaData[MAX_NUM_OBJECTS], /* i : ISM metadata handle */ - const int16_t idx_separated_object, /* i : index of the separated object */ - OMASA_ENC_HANDLE hOMasa, /* i : OMASA encoder handle */ - const int16_t ism_imp, /* i : importance of separated object */ - const int16_t flag_omasa_ener_brate /* i : less bitrate for objects in OMASA flag */ -); - -void ivas_masa_estimate_energy( - MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder structure */ - float *data_f[], /* i : Input audio channels */ - const int16_t input_frame, /* i : frame length */ - const int16_t nchan_transport /* i : number of MASA input/transport channels */ -); - - -void ivas_masa_set_elements( - const int32_t ivas_total_brate, /* i : codec total bitrate */ - const int16_t mc_mode, /* i : MC format mode */ - const int16_t nchan_transport, /* i : number of MASA input/transport channels */ - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ - int16_t *element_mode, /* o : element mode */ - int16_t *nSCE, /* o : number of SCEs */ - int16_t *nCPE, /* o : number of CPEs */ - const int16_t ivas_format, /* i : IVAS format */ - const ISM_MODE ism_mode, /* i : ISM mode */ - const int32_t ism_total_brate /* i : initial ISM total bitrate */ -); - -/*! r: valid or not 1/0 */ -int16_t valid_ratio_index( - int16_t index, /* i : index to be checked */ - const int16_t K, /* i : L1 norm to check against */ - const int16_t len /* i : vector length */ -); - -void reconstruct_ism_ratios( - int16_t *ratio_ism_idx, - const int16_t nchan_ism, - const float step, - float *q_energy_ratio_ism -); - -void distribute_evenly_ism( - int16_t *idx, - const int16_t K, - const int16_t nchan_ism -); - - -int16_t ivas_qmetadata_encode_extended_gr_length_fx( - const uint16_t value, - const uint16_t alphabet_size, - const int16_t gr_param); - -void ivas_qmetadata_encode_extended_gr_fx( - BSTR_ENC_HANDLE hMetaData, /* i/o: q_metadata handle */ - const uint16_t value, /* i : value to be encoded */ - const uint16_t alphabet_size, /* i : alphabet size */ - const int16_t gr_param); /* i : GR order */ - -/*! r: CPE bitrate value */ -int32_t calculate_cpe_brate_MASA_ISM( - const ISM_MODE ism_mode, /* i : ism mode */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t nchan_ism /* i : number of objects */ -); - -void ivas_merge_masa_metadata( - MASA_ENCODER_HANDLE hMasa, /* i/o: MASA enc handle. source for MASA metadata and combined metadata will be here */ - OMASA_SPATIAL_META_HANDLE hOMasaMeta /* i : ISM-object metadata to be merged with the MASA metadata */ -); - - -/*!r : number of bits for ISM ratio index */ -int16_t bits_index_ism_ratio( - const int16_t nchan_ism /* i : number of objects */ -); - -void calculate_nbits_meta( - const int16_t nchan_ism, - float q_energy_ratio_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], - float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], - const int16_t numSf, - const int16_t numCodingBands, - int16_t* bits_ism, - const int16_t idx_sep_obj, - const int16_t ism_imp -); - -/*! r: limitation flag */ -int16_t calculate_brate_limit_flag( - const int16_t ism_imp[], /* i : ISM importance flags */ - const int16_t nchan_ism /* i : number of objects */ -); - -void ivas_masa_set_coding_config( - MASA_CODEC_CONFIG* config, /* i/o: MASA coding config structure */ - int16_t* band_mapping, /* o : Band mapping used */ - const int32_t ivas_total_brate, /* i : codec total bitrate */ - const int16_t nchan_transport, /* i : number of transport channel (mono/stereo) */ - const uint8_t isMcMasa /* i : toggle for selecting McMASA specific config */ -); - -/*! r: Surround coherence significant flag */ -uint8_t ivas_masa_surrcoh_signicant( - float surroundingCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Surround coherence */ - float diffuse_to_total_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : Diffuse to total ratio */ - const int16_t nSubFrames, /* i : Number of sub frames */ - const int16_t nBands /* i : Number of frequency bands */ -); - -void masa_compensate_two_dir_energy_ratio_index( - const int16_t ratio_index_1, /* i : Input ratio for direction 1 */ - const int16_t ratio_index_2, /* i : Input ratio for direction 2 */ - int16_t *ratio_index_mod1, /* o : Output modified ratio for direction 1 */ - int16_t *ratio_index_mod2, /* o : Output modified ratio for direction 2 */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -void ivas_set_qmetadata_maxbit_req_fx( - IVAS_QMETADATA_HANDLE hQMetaData, /* o : qmetadata structure where the requirement value is set */ - const IVAS_FORMAT ivas_format /* i : IVAS format */ -); - -void masa_sample_rate_band_correction( - MASA_CODEC_CONFIG *config, /* i/o: MASA codec config */ - int16_t *band_mapping, /* i/o: Band mapping used and modified */ - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: QMetadata structure for modification */ - const uint8_t maxBand, /* i : max band */ - uint8_t is_encoder, /* i : signals if called at encoder */ - MASA_DECODER_EXT_OUT_META_HANDLE hExtOutMeta /* i/o: MASA decoder metadata ext out buffer */ -); - -void invdct4_transform( - float *v, /* i : input vector */ - uint8_t *invdct_v /* o : transformed vector */ -); - - -void ivas_spar_param_to_masa_param_mapping( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */ - float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, real */ - float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i : Input audio in CLDFB domain, imag */ - const int16_t subframe /* i : Subframe to map */ -); - -/*---------------------------------------------------------------------------------* - * Binaural FastConv Renderer Prototypes -*-----------------------------------------------------------------------------------*/ - - -void ivas_binaural_hrtf_close( - HRTFS_FASTCONV_HANDLE *hHrtfFastConv /* i/o: decoder binaural hrtf handle */ -); - -void ivas_binRenderer( - BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle */ - const int16_t numTimeSlots, /* i : number of time slots to process */ - float Cldfb_RealBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ - float Cldfb_ImagBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ - float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals */ - float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] /* i : LS signals */ -); - -void ivas_binaural_add_LFE( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - int16_t output_frame, /* i : length of input frame */ - float *input_f[], /* i : transport channels */ - float *output_f[] /* o : synthesized core-coder transport channels/DirAC output */ -); - -/*----------------------------------------------------------------------------------* - * renderer prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_ism_renderer_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -void ivas_ism_renderer_close( - ISM_RENDERER_HANDLE *hIsmRendererData /* i/o: ISM renderer handle */ -); - -void ivas_ism_render_sf( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output_f[], /* i/o: core-coder transport channels/object output */ - const int16_t n_samples_to_render /* i : output frame length per channel */ -); - - -void ivas_mc2sba( - IVAS_OUTPUT_SETUP hIntSetup, /* i : Format of decoder output */ - float *in_buffer_td[], /* i : MC signals (on input) and the HOA3 (on output) */ - float *buffer_td[], /* o : MC signals (on input) and the HOA3 (on output) */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t sba_order, /* i : SBA order */ - const float gain_lfe /* i : gain for LFE, 0=ignore LFE */ -); - -void ivas_param_mc_mc2sba_cldfb( - IVAS_OUTPUT_SETUP hTransSetup, /* i : transported MC Format */ - float *hoa_encoder, /* i : HOA3 encoder for the transported MC format */ - const int16_t slot_idx, /* i : current slot in the subframe */ - float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */ - float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o: Contains the MC signals (on input) and the HOA3 (on output) */ - const int16_t nBands, /* i : number of synth CLDFB bands */ - const float gain_lfe /* i : gain applied to LFE */ -); - - -/*----------------------------------------------------------------------------------* - * Amplitude Panning VBAP prototypes - *----------------------------------------------------------------------------------*/ - -void panning_wrap_angles( - const float azi_deg, /* i : azimuth in degrees for panning direction (positive left) */ - const float ele_deg, /* i : elevation in degrees for panning direction (positive up) */ - float *azi_wrapped, /* o : wrapped azimuth component */ - float *ele_wrapped /* o : wrapped elevation component */ -); - -/*----------------------------------------------------------------------------------* - * LS Renderer prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_ls_setup_conversion_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -void ivas_ls_setup_conversion_close( - LSSETUP_CONVERSION_HANDLE *hLsSetUpConversion /* i/o: LS converter handle */ -); - - -void ivas_ls_setup_conversion( - Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ - const int16_t input_chans, /* i : number of input channels to the renderer */ - const int16_t output_frame, /* i : frame length */ - float *input[], /* i : LS input/output synthesis signal */ - float *output[] /* i/o: LS input/output synthesis signal */ -); - -void ivas_ls_setup_conversion_process_mdct( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output[] /* i/o: output synthesis signal */ -); - -void ivas_ls_setup_conversion_process_mdct_param_mc( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *x[][NB_DIV] /* i/o: output synthesis signal */ -); - -void ivas_lssetupconversion_process_param_mc( - Decoder_Struct *st_ivas, /* i/o: LS setup conversion renderer handle */ - const int16_t num_timeslots, /* i : number of time slots to process */ - float Cldfb_RealBuffer_InOut[MAX_CICP_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i/o: LS signals */ - float Cldfb_ImagBuffer_InOut[MAX_CICP_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* i/o: LS signals */ - int16_t channel_active[MAX_CICP_CHANNELS] /* i : bitmap indicating which output channels are active */ -); - - -/*----------------------------------------------------------------------------------* - * Custom loudspeaker setup prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_ls_custom_open( - LSSETUP_CUSTOM_HANDLE *hLsSetupCustom /* o : Custom loudspeaker setup handle */ -); - - - -/*----------------------------------------------------------------------------------* - * McMASA prototypes - *----------------------------------------------------------------------------------*/ - - -ivas_error ivas_mcmasa_dec_reconfig( - Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ -); - -void ivas_mcmasa_setNumTransportChannels( - int16_t* nchan_transport, /* o : Pointer to number of transport channels to be set */ - int16_t* element_mode, /* o : Pointer to element mode to be set */ - const int32_t ivas_total_brate /* i : Total bitrate of IVAS */ -); - -void ivas_mcmasa_set_separate_channel_mode( - uint8_t *separateChannelEnabled, /* o : Pointer to separate channel toggle */ - int16_t *separateChannelIndex, /* o : Pointer to separate channel index */ - const int32_t ivas_total_brate /* i : Total bitrate of IVAS */ -); - -void ivas_mcmasa_split_brate( - const uint8_t separateChannelEnabled, /* i : Transport running in "separate channel" mode */ - const int32_t ivas_total_brate, /* i : Total bitrate available to be split */ - const int16_t nSCE, /* i : Number of SCEs in use (0 or 1) */ - const int16_t nCPE, /* i : Number of CPEs in use (0 or 1) */ - int32_t *brate_sce, /* o : Pointer to SCE element bitrate */ - int32_t *brate_cpe /* o : Pointer to CPE element bitrate */ -); - - -void ivas_mcmasa_dmx_modify_fx( - const Word16 n_samples, /* i : input frame length in samples */ - Word32 dmx_fx[][L_FRAME48k + NS2SA(48000, IVAS_FB_ENC_DELAY_NS)], /* i/o: downmix signal to be transformed into another format Qx*/ - Word16 dmx_Q[], /* i/o : Q of the intput signal which is being transformed*/ - const Word16 n_chnls_dmx_old, /* i : number of downmix channels in the old format Q0 */ - const Word16 n_chnls_dmx_new /* i : number of downmix channels in the target format Q0*/ -); - -ivas_error ivas_mono_dmx_renderer_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - - -void ivas_mono_dmx_renderer_close( - MONO_DOWNMIX_RENDERER_HANDLE *hMonoDmxRenderer /* i/ i/o: Mono downmix structure */ -); - -void ivas_mono_downmix_render_passive( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output_f[], /* i/o: synthesized core-coder transport channels/mono output */ - const int16_t output_frame /* i : output frame length */ -); - - -/*----------------------------------------------------------------------------------* - * LFE encoder low pass filter prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_create_lfe_lpf_enc( - ivas_filters_process_state_t **hLfeLpf, /* o : LFE LPF handle */ - const int32_t input_Fs /* i : input sampling rate */ -); - -void ivas_lfe_lpf_enc_close_fx( - ivas_filters_process_state_t **hLfeLpf /* i/o: LFE LPF handle */ -); - -void ivas_lfe_lpf_enc_apply( - ivas_filters_process_state_t *hLfeLpf, /* i/o: LFE LPF handle */ - float data_lfe_ch[], /* i/o: LFE signal */ - const int16_t input_frame /* i : input frame length per channel */ -); - - -/*----------------------------------------------------------------------------------* - * LFE Coding prototypes - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_create_lfe_enc_fx( - LFE_ENC_HANDLE *hLFE, /* o : IVAS LFE encoder structure */ - const int32_t input_Fs /* i : input sampling rate */ -); - -void ivas_lfe_enc_close_fx( - LFE_ENC_HANDLE *hLFE /* i/o: LFE encoder handle */ -); - -void ivas_lfe_enc( - LFE_ENC_HANDLE hLFE, /* i/o: LFE encoder handle */ - float data_lfe_ch[], /* i : input LFE signal */ - const int16_t input_frame, /* i : input frame length per channel */ - BSTR_ENC_HANDLE hBstr /* i/o: bitstream handle */ -); - -void ivas_lfe_tdplc( - LFE_DEC_HANDLE hLFE, /* i/o: LFE decoder handle */ - float *prevsynth, /* i : previous frame synthesis */ - float *ytda, /* o : output time-domain buffer */ - const int16_t output_frame /* i : output frame length */ -); -void ivas_lfe_window_init( - LFE_WINDOW_HANDLE hLFEWindow, /* i/o: LFE window handle */ - const int32_t sampling_rate, /* i : sampling rate */ - const int16_t frame_len /* i : frame length in samples */ -); - -void ivas_lfe_lpf_select_filt_coeff( - const int32_t sampling_rate, /* i : sampling rate */ - const int16_t order, /* i : filter order */ - const float **ppFilt_coeff /* o : filter coefficients */ -); - -void ivas_filters_init( - ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */ - const float *filt_coeff, /* i : filter coefficients */ - const int16_t order /* i : filter order */ -); - -void ivas_filters_init_fx( - ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */ - const Word32 *filt_coeff_fx, /* i : filter coefficients Q31- *filt_coeff_e */ - const Word16 *filt_coeff_e, /* i : exponents of filter coefficients */ - const Word16 order ) ; - -void ivas_filter_process( - ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */ - float *pIn_Out, /* i : signal subject to filtering */ - const int16_t length /* i : filter order */ -); - -void ivas_filter_process_fx( - ivas_filters_process_state_t *filter_state, /* i/o: filter state handle */ - Word32 *pIn_Out_fx, /* i/o: signal subject to filtering Q(q_factor) */ - const Word16 length, /* i : filter order */ - Word16 q_factor ); - -/*----------------------------------------------------------------------------------* - * OSBA prototypes - *----------------------------------------------------------------------------------*/ -ivas_error ivas_osba_enc_reconfig( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -); -ivas_error ivas_osba_data_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ -); - -ivas_error ivas_osba_dirac_td_binaural_jbm( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const uint16_t nSamplesAsked, /* i : number of CLDFB slots requested */ - uint16_t *nSamplesRendered, /* o : number of CLDFB slots rendered */ - uint16_t *nSamplesAvailable, /* o : number of CLDFB slots still to render */ - float *output_f[] /* o : rendered time signal */ -); - - -void ivas_osba_data_close( - SBA_ISM_DATA_HANDLE *hSbaIsmData /* i/o: OSBA rendering handle */ -); - - -/*----------------------------------------------------------------------------------* -* OMASA prototypes -*---------------------------------------------------------------------------------*/ - -ivas_error ivas_omasa_enc_open( - Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ -); - -void ivas_omasa_enc_close( - OMASA_ENC_HANDLE *hOMasa /* i/o: encoder OMASA handle */ -); - - -ivas_error ivas_omasa_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ - int16_t *data /* o : output synthesis signal */ -); - - - - -void ivas_set_surplus_brate_enc( - Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ -#ifdef DEBUG_MODE_INFO - , - const int16_t *nb_bits_metadata /* i : number of metadata bits */ -#endif -); - -void ivas_set_surplus_brate_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - int32_t *ism_total_brate /* i : ISM total bitrate */ -); - - -void ivas_set_ism_importance_interformat( - const int32_t ism_total_brate, /* i/o: ISms total bitrate */ - const int16_t nchan_transport, /* i : number of transported channels */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - SCE_ENC_HANDLE hSCE[], /* i/o: SCE encoder handles */ - const float lp_noise_CPE, /* i : LP filtered total noise estimation */ - int16_t ism_imp[] /* o : ISM importance flags */ -); - - -/*! r: adjusted bitrate */ -int32_t ivas_interformat_brate( - const ISM_MODE ism_mode, /* i : ISM mode */ - const int16_t nchan_ism, /* i : number of ISM channels */ - const int32_t element_brate, /* i : element bitrate */ - const int16_t ism_imp, /* i : ISM importance flag */ - const int16_t limit_flag /* i : flag to limit the bitrate increase */ -); - -void ivas_combined_format_brate_sanity( - const int32_t element_brate, /* i : element bitrate */ - const int16_t core, /* i : core */ - const int32_t total_brate, /* i : total bitrate */ - int32_t *core_brate, /* i/o: core bitrate */ - int16_t *inactive_coder_type_flag, /* o : inactive coder_type flag */ - int16_t *diff_nBits /* o : number of differential bits */ -); - -ISM_MODE ivas_omasa_ism_mode_select( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const int16_t nchan_ism /* i : number of input ISM's */ -); - -void ivas_set_omasa_TC( - const ISM_MODE ism_mode, /* i : ISM mode */ - const int16_t nchan_ism, /* i : number of input ISMs */ - int16_t *nSCE, /* o : number of SCEs */ - int16_t *nCPE /* o : number of CPEs */ -); - -void ivas_merge_masa_transports( - float data_in_f1[][L_FRAME48k], /* i : Transport audio signals 1 */ - float *data_in_f2[], /* i : Transport audio signals 2 */ - float *data_out_f[], /* o : Merged transport audio signals */ - const int16_t input_frame, /* i : Input frame size */ - const int16_t num_transport_channels /* i : Number of transport audio signals */ -); - - -ivas_error ivas_omasa_ism_metadata_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const int32_t ism_total_brate, /* i : ISM total bitrate */ - int16_t *nchan_ism, /* o : number of ISM separated channels */ - int16_t *nchan_transport_ism, /* o : number of ISM TCs */ - const int16_t dirac_bs_md_write_idx, /* i : DirAC bitstream write index */ - int16_t nb_bits_metadata[] /* o : number of ISM metadata bits */ -); - -void ivas_omasa_preProcessStereoTransportsForMovedObjects( - Decoder_Struct *st_ivas, - float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], - float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], - const int16_t nBins, - const int16_t subframe -); - -ivas_error ivas_omasa_separate_object_renderer_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -void ivas_omasa_separate_object_renderer_close( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -void ivas_omasa_separate_object_render_jbm( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const uint16_t nSamplesRendered, /* i : number of samples rendered */ - float input_f[][L_FRAME48k], /* i : separated object signal */ - float *output_f[], /* o : rendered time signal */ - const int16_t subframes_rendered, /* i : number of subframes rendered */ - const int16_t slots_rendered /* i : number of CLDFB slots rendered */ -); - -void ivas_omasa_encode_masa_to_total( - float masa_to_total_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], - BSTR_ENC_HANDLE hMetaData, - const int16_t low_bitrate_mode, - const int16_t nbands, - const int16_t nblocks -); - -void ivas_omasa_decode_masa_to_total( - uint16_t *bit_stream, - int16_t *index, - float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], - const int16_t nbands, - const int16_t nblocks -); - -void ivas_omasa_modify_masa_energy_ratios( - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ - float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_MAXIMUM_CODING_SUBBANDS] -); - - -/*----------------------------------------------------------------------------------* - * TD Binaural Object renderer - *----------------------------------------------------------------------------------*/ - -#ifndef FIX_910_REMOVE_DUPLICATION_TD_REND -ivas_error ivas_td_binaural_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output[], /* i/o: SCE channels / Binaural synthesis */ - const int16_t output_frame /* i : output frame length */ -); -#endif -ivas_error ivas_td_binaural_renderer_sf( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float *output[], /* i/o: SCE channels / Binaural synthesis */ - const int16_t n_samples_granularity /* i : granularity of the renderer/buffer */ -); - -/*----------------------------------------------------------------------------------* - * Filter-bank (FB) Mixer - *----------------------------------------------------------------------------------*/ - -ivas_error ivas_fb_set_cfg( - IVAS_FB_CFG **pFb_cfg_out, /* o : FB config. handle */ - const int16_t ivas_format, /* i : IVAS format */ - const int16_t num_in_chans, /* i : number of FB input channels */ - const int16_t num_out_chans, /* i : number of FB output channels */ - const int16_t active_w_mixing, /* i : active_w_mixing flag */ - const int32_t sampling_Fs, /* i : sampling rate */ - const int16_t nachan_dirac_ana /* i : number of DirAR analysis channels */ -); - -void ivas_fb_mixer_pcm_ingest( - IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */ - float *pcm_in[], /* i : input audio channels */ - float **ppOut_pcm, /* o : output audio channels */ - const int16_t frame_length, /* i : frame length */ - const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH] -); - -void ivas_fb_mixer_update_prior_input( - IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */ - float *pcm_in[], /* i : input audio channels */ - const int16_t length, /* i : length of time slot */ - const int16_t nchan_fb_in /* i : number of analysis channels */ -); - -void ivas_fb_mixer_get_windowed_fr( - IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */ - float *pcm_in[], /* i : input audio channels */ - float *frame_f_real[], /* o : real freq domain values */ - float *frame_f_imag[], /* o : imag freq domain values */ - const int16_t length, /* i : number of new samples in time slot */ - const int16_t mdft_len, /* i : MDFT frame length */ - const int16_t nchan_fb_in /* i : number of analysis channels */ -); - -/*! r: number of spectral bands */ - -/* clang-format on */ -- GitLab From 192977759c0c595e524a0384b0bbad1613ce34a6 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 28 May 2025 15:16:56 +0300 Subject: [PATCH 653/698] Port MR1418 from float to main-pc --- lib_com/options.h | 1 + lib_dec/ivas_masa_dec_fx.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 73a8f082f..84d277e27 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -135,6 +135,7 @@ #define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ #define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ +#define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c index eb010c146..e87683562 100644 --- a/lib_dec/ivas_masa_dec_fx.c +++ b/lib_dec/ivas_masa_dec_fx.c @@ -166,6 +166,16 @@ ivas_error ivas_masa_decode_fx( } move16(); +#ifdef NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS + test(); + test(); + IF( EQ_32( ivas_format, MASA_FORMAT ) && ( EQ_32( masa_brate, IVAS_SID_5k2 ) || EQ_32( ivas_total_brate, FRAME_NO_DATA ) ) ) + { + hMasa->config.numberOfDirections = 1; + move16(); + } +#endif + test(); test(); test(); -- GitLab From c4a3bacfd658f504ce06a655832e929fde2387e5 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 14:45:33 +0200 Subject: [PATCH 654/698] fixed definitions of type float --- lib_rend/ivas_reverb_fx.c | 8 +++++--- lib_rend/ivas_reverb_utils_fx.c | 26 ++++++++++++++------------ lib_util/hrtf_file_reader.c | 6 +++--- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index acfd656c5..1cbbf367b 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -1284,10 +1284,12 @@ static void set_reverb_acoustic_data_fx( Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; Word16 pow_exp; +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES Word32 *pHrtf_set_l_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_l_im_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_im_fx[MAX_INTERN_CHANNELS]; +#endif Word32 *pFc_input_fx = pRoomAcoustics->pFc_input_fx; Word32 *pAcoustic_rt60_fx = pRoomAcoustics->pAcoustic_rt60_fx; @@ -1298,9 +1300,8 @@ static void set_reverb_acoustic_data_fx( Word16 *pRt60_e = pParams->pRt60_e; Word32 *pDsr_fx = pParams->pDsr_fx; Word16 *pDsr_e = pParams->pDsr_e; -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -#else +#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* use crend hrtf filters */ IF( hHrtf != NULL ) { @@ -2519,7 +2520,7 @@ ivas_error ivas_binaural_reverb_init( return error; } -#endif +#else /*------------------------------------------------------------------------- * ivas_binaural_reverb_open_fastconv() @@ -2621,6 +2622,7 @@ ivas_error ivas_binaural_reverb_open_parambin( return error; } +#endif /*------------------------------------------------------------------------- * ivas_binaural_reverb_close() * diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 2cead56f1..e463b3498 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -65,7 +65,7 @@ typedef struct cldfb_convolver_state } cldfb_convolver_state; #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -static void ivas_reverb_set_energies( const Word32 *avg_pwr_l, const Word32 *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out ); +static void ivas_reverb_set_energies( const Word32 *avg_pwr_l, const Word32 *avg_pwr_r, const int32_t sampling_rate, Word32 *avg_pwr_l_out, Word32 *avg_pwr_r_out ); #else static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ); #endif @@ -76,19 +76,24 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCO * Prepares reverb parameters for CLDFB-based reverberator *-----------------------------------------------------------------------------------------*/ -ivas_error ivas_reverb_prepare_cldfb_params( + #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES +ivas_error ivas_reverb_prepare_cldfb_params( const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_STATISTICS_HANDLE hHrtfStatistics, + const int32_t output_Fs, + float *pOutput_t60, + float *pOutput_ene ) #else +ivas_error ivas_reverb_prepare_cldfb_params( IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, -#endif const int32_t output_Fs, float *pOutput_t60, float *pOutput_ene ) +#endif { int16_t idx; float fc[CLDFB_NO_CHANNELS_MAX]; @@ -96,14 +101,14 @@ ivas_error ivas_reverb_prepare_cldfb_params( float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; - const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; + const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { - fc[idx] = ( (float) idx + 0.5f ) * ( (float) MAX_SAMPLING_RATE / (float) ( 2 * CLDFB_NO_CHANNELS_MAX ) ); + fc[idx] = ( idx + 0.5f ) * ( MAX_SAMPLING_RATE / ( 2 * CLDFB_NO_CHANNELS_MAX ) ); } Word32 *fc_fx = (Word32 *) malloc( pInput_params->nBands * sizeof( Word32 * ) ); Word32 *pOutput_t60_fx = (Word32 *) malloc( pInput_params->nBands * sizeof( Word32 * ) ); @@ -144,6 +149,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( pOutput_ene[idx] *= expf( exp_argument ); } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES + ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) @@ -299,8 +305,8 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const int16_t use_brir, #endif const int32_t sampling_rate, - float *avg_pwr_left, - float *avg_pwr_right ) + Word32 *avg_pwr_left, + Word32 *avg_pwr_right ) { int16_t freq_idx; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES @@ -332,9 +338,7 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); Word32 *output_fc_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); - Word32 *avg_pwr_left_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); Word16 *avg_pwr_left_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); - Word32 *avg_pwr_right_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); Word16 *avg_pwr_right_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); for ( int i = 0; i < 60; i++ ) @@ -348,13 +352,11 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( } ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_l, avg_pwr_r, - CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); + CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left, avg_pwr_right, avg_pwr_left_e, avg_pwr_right_e ); free( input_fc_fx ); free( output_fc_fx ); - free( avg_pwr_left_fx ); free( avg_pwr_left_e ); - free( avg_pwr_right_fx ); free( avg_pwr_right_e ); #else diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 7a74e8e88..5832296c8 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -813,13 +813,13 @@ static ivas_error load_reverb_from_binary( hHrtfStatistics->inter_aural_coherence = hHrtfStatistics->inter_aural_coherence_dyn; fread( hrtf_prop_local, sizeof( float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->average_energy_l, Q27, lr_iac_len ); + floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->average_energy_l_dyn, Q27, lr_iac_len ); fread( hrtf_prop_local, sizeof( float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->average_energy_r, Q27, lr_iac_len ); + floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->average_energy_r_dyn, Q27, lr_iac_len ); fread( hrtf_prop_local, sizeof( float ), lr_iac_len, f_hrtf ); - floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->inter_aural_coherence, Q23, lr_iac_len ); + floatToFixed_arr32( hrtf_prop_local, hHrtfStatistics->inter_aural_coherence_dyn, Q23, lr_iac_len ); hHrtfStatistics->fromROM = FALSE; free( hrtf_prop_local ); -- GitLab From 336ac2ab53ac9f5d0ea4ec0775db11b1586bf088 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 14:48:21 +0200 Subject: [PATCH 655/698] clang formatting patch --- lib_rend/ivas_reverb_utils_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index e463b3498..2c9180927 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -101,7 +101,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; - const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; + const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif -- GitLab From ec728f38f51222f987c7bfc695d48223a903be6e Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 15:02:50 +0200 Subject: [PATCH 656/698] fixed data type definition --- lib_rend/ivas_prot_rend_fx.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index fa74d0f0e..a7f52eb32 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -1152,8 +1152,8 @@ ivas_error ivas_reverb_prepare_cldfb_params( const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_STATISTICS_HANDLE hHrtfStatistics, const int32_t output_Fs, - Word32 *pOutput_t60, - Word32 *pOutput_ene ); + float *pOutput_t60, + float *pOutput_ene ); #else ivas_error ivas_reverb_prepare_cldfb_params( IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, -- GitLab From 089fc29b1ad6da87905bc9594a8e2945d6add67c Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 28 May 2025 15:26:15 +0200 Subject: [PATCH 657/698] type reassignments --- lib_rend/ivas_reverb_utils_fx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 2c9180927..a385ef359 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -172,7 +172,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( * * Function for convolving CLDFB-domain data with filter taps *-----------------------------------------------------------------------------------------*/ -#endif + /*-----------------------------------------------------------------------------------------* * Function get_IR_from_filter_taps() @@ -279,6 +279,8 @@ static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties( return IVAS_ERR_OK; } +#endif + #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_set_energies() -- GitLab From 4dd8fd4a022d0f04240331de6407854c58696974 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Sun, 1 Jun 2025 18:07:20 +0200 Subject: [PATCH 658/698] Added floating-point to fixed-point conversions (and vice-versa) to resolve build warnings --- lib_rend/ivas_crend_fx.c | 1 + lib_rend/ivas_reverb_fx.c | 8 ++++++-- lib_rend/ivas_reverb_utils_fx.c | 9 +++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index 392d8ea99..f827020af 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -1741,6 +1741,7 @@ ivas_error ivas_rend_openCrend( #ifdef SPLIT_REND_WITH_HEAD_ROT for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) #endif { #ifdef SPLIT_REND_WITH_HEAD_ROT diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 1cbbf367b..ebb3af4af 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2502,8 +2502,12 @@ ivas_error ivas_binaural_reverb_init( { revTimes = t60; revEne = ene; - - if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) + float t60_temp[CLDFB_NO_CHANNELS_MAX]; + float ene_temp[CLDFB_NO_CHANNELS_MAX]; + fixedToFloat_arrL(t60, t60_temp, Q15, CLDFB_NO_CHANNELS_MAX ); + fixedToFloat_arrL(ene, ene_temp, Q15, CLDFB_NO_CHANNELS_MAX ); + //if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60_temp, ene_temp ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index a385ef359..e6cddc5e3 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -101,7 +101,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; - const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; + const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; // Represent in fixed point #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif @@ -150,7 +150,12 @@ ivas_error ivas_reverb_prepare_cldfb_params( } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); + Word32 avg_pwr_left_temp[CLDFB_NO_CHANNELS_MAX]; + Word32 avg_pwr_right_temp[CLDFB_NO_CHANNELS_MAX]; + //floatToFixed_arr32(avg_pwr_left, avg_pwr_left_temp, Q15, CLDFB_NO_CHANNELS_MAX); + //floatToFixed_arr32(avg_pwr_right, avg_pwr_right_temp, Q15, CLDFB_NO_CHANNELS_MAX); + + ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left_temp, avg_pwr_right_temp); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) { -- GitLab From 6f1c7d19c215ef7e87a8b3014f1b8f98686eb9be Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Sun, 1 Jun 2025 18:10:18 +0200 Subject: [PATCH 659/698] clang formatting patch --- lib_rend/ivas_crend_fx.c | 244 ++++++++++++++++---------------- lib_rend/ivas_reverb_fx.c | 6 +- lib_rend/ivas_reverb_utils_fx.c | 6 +- 3 files changed, 128 insertions(+), 128 deletions(-) diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index f827020af..c180c59a8 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -1741,64 +1741,64 @@ ivas_error ivas_rend_openCrend( #ifdef SPLIT_REND_WITH_HEAD_ROT for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) - for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) #endif - { + { #ifdef SPLIT_REND_WITH_HEAD_ROT - hCrend = ( *pCrend )->hCrend[pos_idx]; + hCrend = ( *pCrend )->hCrend[pos_idx]; #else hCrend = ( *pCrend )->hCrend; #endif - hHrtf = ( *pCrend )->hHrtfCrend; + hHrtf = ( *pCrend )->hHrtfCrend; - IF( hHrtf != NULL ) - { - max_total_ir_len = L_mult0( hHrtf->max_num_iterations, subframe_length ); - - FOR( i = 0; i < hHrtf->max_num_ir; i++ ) + IF( hHrtf != NULL ) { - IF( ( hCrend->freq_buffer_re_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero2_fx( hCrend->freq_buffer_re_fx[i], max_total_ir_len ); + max_total_ir_len = L_mult0( hHrtf->max_num_iterations, subframe_length ); - IF( ( hCrend->freq_buffer_im_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + IF( ( hCrend->freq_buffer_re_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero2_fx( hCrend->freq_buffer_re_fx[i], max_total_ir_len ); + + IF( ( hCrend->freq_buffer_im_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero2_fx( hCrend->freq_buffer_im_fx[i], max_total_ir_len ); } - set_zero2_fx( hCrend->freq_buffer_im_fx[i], max_total_ir_len ); - } - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - IF( ( hCrend->prev_out_buffer_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * subframe_length ) ) == NULL ) + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + IF( ( hCrend->prev_out_buffer_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * subframe_length ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero_fx( hCrend->prev_out_buffer_fx[i], subframe_length ); } - set_zero_fx( hCrend->prev_out_buffer_fx[i], subframe_length ); - } - max_total_ir_len = L_mult0( (Word16) hHrtf->num_iterations_diffuse[0], subframe_length ); + max_total_ir_len = L_mult0( (Word16) hHrtf->num_iterations_diffuse[0], subframe_length ); - IF( max_total_ir_len > 0 ) - { -#ifdef FIX_INV_DIFFUSE_WEIGHT - IF( ( hCrend->freq_buffer_re_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - IF( hHrtf->same_inv_diffuse_weight == 0 ) + IF( max_total_ir_len > 0 ) { - IF( ( hCrend->freq_buffer_re_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) +#ifdef FIX_INV_DIFFUSE_WEIGHT + IF( ( hCrend->freq_buffer_re_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } - } - ELSE - { - hCrend->freq_buffer_re_diffuse_fx[1] = NULL; - } + IF( hHrtf->same_inv_diffuse_weight == 0 ) + { + IF( ( hCrend->freq_buffer_re_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + } + ELSE + { + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + } #else IF( ( hCrend->freq_buffer_re_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { @@ -1806,30 +1806,30 @@ ivas_error ivas_rend_openCrend( } #endif #ifdef FIX_INV_DIFFUSE_WEIGHT - set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[0], max_total_ir_len ); - IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL ) - { - set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[1], max_total_ir_len ); - } + set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[0], max_total_ir_len ); + IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL ) + { + set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[1], max_total_ir_len ); + } #else set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx, max_total_ir_len ); #endif #ifdef FIX_INV_DIFFUSE_WEIGHT - IF( ( hCrend->freq_buffer_im_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - IF( hHrtf->same_inv_diffuse_weight == 0 ) - { - IF( ( hCrend->freq_buffer_im_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + IF( ( hCrend->freq_buffer_im_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } - } - ELSE - { - hCrend->freq_buffer_im_diffuse_fx[1] = NULL; - } + IF( hHrtf->same_inv_diffuse_weight == 0 ) + { + IF( ( hCrend->freq_buffer_im_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + } + ELSE + { + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; + } #else IF( ( hCrend->freq_buffer_im_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { @@ -1837,109 +1837,109 @@ ivas_error ivas_rend_openCrend( } #endif #ifdef FIX_INV_DIFFUSE_WEIGHT - set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[0], max_total_ir_len ); - IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL ) - { - set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[1], max_total_ir_len ); - } + set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[0], max_total_ir_len ); + IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL ) + { + set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[1], max_total_ir_len ); + } #else set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx, max_total_ir_len ); #endif - } - ELSE - { + } + ELSE + { #ifdef FIX_INV_DIFFUSE_WEIGHT - hCrend->freq_buffer_re_diffuse_fx[0] = NULL; - hCrend->freq_buffer_im_diffuse_fx[0] = NULL; - hCrend->freq_buffer_re_diffuse_fx[1] = NULL; - hCrend->freq_buffer_im_diffuse_fx[1] = NULL; + hCrend->freq_buffer_re_diffuse_fx[0] = NULL; + hCrend->freq_buffer_im_diffuse_fx[0] = NULL; + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; #else hCrend->freq_buffer_re_diffuse_fx = NULL; hCrend->freq_buffer_im_diffuse_fx = NULL; #endif - } + } - max_total_ir_len = add( extract_l( L_shr( L_add( L_shl( Mult_32_32( hHrtf->latency_s_fx, output_Fs ), 1 ), 1 ), 1 ) ), subframe_length ); /*(int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;*/ - IF( max_total_ir_len > 0 ) - { - IF( ( hCrend->lfe_delay_line_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + max_total_ir_len = add( extract_l( L_shr( L_add( L_shl( Mult_32_32( hHrtf->latency_s_fx, output_Fs ), 1 ), 1 ), 1 ) ), subframe_length ); /*(int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;*/ + IF( max_total_ir_len > 0 ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + IF( ( hCrend->lfe_delay_line_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero2_fx( hCrend->lfe_delay_line_fx, max_total_ir_len ); + } + ELSE + { + hCrend->lfe_delay_line_fx = NULL; } - set_zero2_fx( hCrend->lfe_delay_line_fx, max_total_ir_len ); - } - ELSE - { - hCrend->lfe_delay_line_fx = NULL; - } - IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { + IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) #endif - { - return error; - } - - IF( EQ_16( hRendCfg->roomAcoustics.use_er, 1 ) ) - { - - /* Allocate memory for reflections */ - hCrend->reflections = (er_struct_t *) malloc( sizeof( er_struct_t ) ); - IF( !hCrend->reflections ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections" ); - } - IF( NE_32( ( error = ivas_er_init_handle( hCrend->reflections ) ), IVAS_ERR_OK ) ) { return error; } - hCrend->reflections->use_er = hRendCfg->roomAcoustics.use_er; - hCrend->reflections->lowComplexity = hRendCfg->roomAcoustics.lowComplexity; - move16(); - move32(); + IF( EQ_16( hRendCfg->roomAcoustics.use_er, 1 ) ) + { - /* Set sample rate and frame size */ + /* Allocate memory for reflections */ + hCrend->reflections = (er_struct_t *) malloc( sizeof( er_struct_t ) ); + IF( !hCrend->reflections ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections" ); + } + IF( NE_32( ( error = ivas_er_init_handle( hCrend->reflections ) ), IVAS_ERR_OK ) ) + { + return error; + } - hCrend->reflections->output_Fs_fx = output_Fs; // Q0 - move32(); + hCrend->reflections->use_er = hRendCfg->roomAcoustics.use_er; + hCrend->reflections->lowComplexity = hRendCfg->roomAcoustics.lowComplexity; + move16(); + move32(); - hCrend->reflections->max_frame_size = extract_l( Mult_32_16( output_Fs, INV_FRAME_PER_SEC_Q15 ) ); - move32(); + /* Set sample rate and frame size */ + + hCrend->reflections->output_Fs_fx = output_Fs; // Q0 + move32(); + + hCrend->reflections->max_frame_size = extract_l( Mult_32_16( output_Fs, INV_FRAME_PER_SEC_Q15 ) ); + move32(); - /* Init Shoebox */ - ivas_shoebox_config_init( &hCrend->reflections->shoebox_lib.cal, hRendCfg ); + /* Init Shoebox */ + ivas_shoebox_config_init( &hCrend->reflections->shoebox_lib.cal, hRendCfg ); - /* Init and compute Reflections */ - IF( NE_32( ( error = ivas_er_init( hCrend->reflections, inConfig ) ), IVAS_ERR_OK ) ) + /* Init and compute Reflections */ + IF( NE_32( ( error = ivas_er_init( hCrend->reflections, inConfig ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE { - return error; + hCrend->reflections = NULL; } } ELSE { - hCrend->reflections = NULL; + hCrend->hReverb = NULL; } - } - ELSE - { - hCrend->hReverb = NULL; - } - ( *pCrend )->binaural_latency_ns = Mult_32_32( ( *pCrend )->hHrtfCrend->latency_s_fx, (Word32) 1000000000 ); - move32(); - } + ( *pCrend )->binaural_latency_ns = Mult_32_32( ( *pCrend )->hHrtfCrend->latency_s_fx, (Word32) 1000000000 ); + move32(); + } #ifdef SPLIT_REND_WITH_HEAD_ROT - ( *pCrend )->hCrend[pos_idx] = hCrend; + ( *pCrend )->hCrend[pos_idx] = hCrend; #else ( *pCrend )->hCrend = hCrend; #endif - } + } return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index ebb3af4af..71f04a9c1 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2504,9 +2504,9 @@ ivas_error ivas_binaural_reverb_init( revEne = ene; float t60_temp[CLDFB_NO_CHANNELS_MAX]; float ene_temp[CLDFB_NO_CHANNELS_MAX]; - fixedToFloat_arrL(t60, t60_temp, Q15, CLDFB_NO_CHANNELS_MAX ); - fixedToFloat_arrL(ene, ene_temp, Q15, CLDFB_NO_CHANNELS_MAX ); - //if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) + fixedToFloat_arrL( t60, t60_temp, Q15, CLDFB_NO_CHANNELS_MAX ); + fixedToFloat_arrL( ene, ene_temp, Q15, CLDFB_NO_CHANNELS_MAX ); + // if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60_temp, ene_temp ) ) != IVAS_ERR_OK ) { return error; diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index e6cddc5e3..93e565c59 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -152,10 +152,10 @@ ivas_error ivas_reverb_prepare_cldfb_params( Word32 avg_pwr_left_temp[CLDFB_NO_CHANNELS_MAX]; Word32 avg_pwr_right_temp[CLDFB_NO_CHANNELS_MAX]; - //floatToFixed_arr32(avg_pwr_left, avg_pwr_left_temp, Q15, CLDFB_NO_CHANNELS_MAX); - //floatToFixed_arr32(avg_pwr_right, avg_pwr_right_temp, Q15, CLDFB_NO_CHANNELS_MAX); + // floatToFixed_arr32(avg_pwr_left, avg_pwr_left_temp, Q15, CLDFB_NO_CHANNELS_MAX); + // floatToFixed_arr32(avg_pwr_right, avg_pwr_right_temp, Q15, CLDFB_NO_CHANNELS_MAX); - ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left_temp, avg_pwr_right_temp); + ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left_temp, avg_pwr_right_temp ); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) { -- GitLab From a3cd93a0971a687c4a2839c86f67e5bf917c5997 Mon Sep 17 00:00:00 2001 From: Adriana Vasilache Date: Mon, 2 Jun 2025 11:19:03 +0300 Subject: [PATCH 660/698] dummy commit to trigger CI -- GitLab From 32ed4e67d8746710fa23813e04a56b1b790dce62 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Mon, 2 Jun 2025 11:52:33 +0200 Subject: [PATCH 661/698] changes - fixed point data members --- lib_rend/ivas_reverb_fx.c | 4 ++-- lib_rend/ivas_reverb_utils_fx.c | 24 +++++++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 71f04a9c1..228e399e2 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2504,8 +2504,8 @@ ivas_error ivas_binaural_reverb_init( revEne = ene; float t60_temp[CLDFB_NO_CHANNELS_MAX]; float ene_temp[CLDFB_NO_CHANNELS_MAX]; - fixedToFloat_arrL( t60, t60_temp, Q15, CLDFB_NO_CHANNELS_MAX ); - fixedToFloat_arrL( ene, ene_temp, Q15, CLDFB_NO_CHANNELS_MAX ); + // fixedToFloat_arrL( t60, t60_temp, Q15, CLDFB_NO_CHANNELS_MAX ); + // fixedToFloat_arrL( ene, ene_temp, Q15, CLDFB_NO_CHANNELS_MAX ); // if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60_temp, ene_temp ) ) != IVAS_ERR_OK ) { diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 93e565c59..ec2001527 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -65,7 +65,7 @@ typedef struct cldfb_convolver_state } cldfb_convolver_state; #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES -static void ivas_reverb_set_energies( const Word32 *avg_pwr_l, const Word32 *avg_pwr_r, const int32_t sampling_rate, Word32 *avg_pwr_l_out, Word32 *avg_pwr_r_out ); +static void ivas_reverb_set_energies( const Word32 *avg_pwr_l, const Word32 *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out ); #else static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ); #endif @@ -150,12 +150,10 @@ ivas_error ivas_reverb_prepare_cldfb_params( } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - Word32 avg_pwr_left_temp[CLDFB_NO_CHANNELS_MAX]; - Word32 avg_pwr_right_temp[CLDFB_NO_CHANNELS_MAX]; - // floatToFixed_arr32(avg_pwr_left, avg_pwr_left_temp, Q15, CLDFB_NO_CHANNELS_MAX); - // floatToFixed_arr32(avg_pwr_right, avg_pwr_right_temp, Q15, CLDFB_NO_CHANNELS_MAX); + //Word32 avg_pwr_left_temp[CLDFB_NO_CHANNELS_MAX]; + //Word32 avg_pwr_right_temp[CLDFB_NO_CHANNELS_MAX]; - ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left_temp, avg_pwr_right_temp ); + ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) { @@ -312,8 +310,8 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const int16_t use_brir, #endif const int32_t sampling_rate, - Word32 *avg_pwr_left, - Word32 *avg_pwr_right ) + float *avg_pwr_left, + float *avg_pwr_right ) { int16_t freq_idx; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES @@ -347,6 +345,8 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( Word32 *output_fc_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); Word16 *avg_pwr_left_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); Word16 *avg_pwr_right_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); + Word32 *avg_pwr_left_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); + Word32 *avg_pwr_right_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); for ( int i = 0; i < 60; i++ ) { @@ -359,7 +359,13 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( } ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_l, avg_pwr_r, - CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left, avg_pwr_right, avg_pwr_left_e, avg_pwr_right_e ); + CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); + + for ( int i = 0; i < 257; i++ ) + { + avg_pwr_left[i] = (float) fabs( me2f( avg_pwr_left_fx[i], avg_pwr_left_e[i] ) ); + avg_pwr_right[i] = (float) fabs( me2f( avg_pwr_right_fx[i], avg_pwr_right_e[i] ) ); + } free( input_fc_fx ); free( output_fc_fx ); -- GitLab From 3adc971e8bd85d85d2996fb4fe5aa2ad4cb4d2d3 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:01:08 +0200 Subject: [PATCH 662/698] clang patch --- lib_rend/ivas_reverb_utils_fx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index ec2001527..7263545b7 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -150,10 +150,10 @@ ivas_error ivas_reverb_prepare_cldfb_params( } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - //Word32 avg_pwr_left_temp[CLDFB_NO_CHANNELS_MAX]; - //Word32 avg_pwr_right_temp[CLDFB_NO_CHANNELS_MAX]; + // Word32 avg_pwr_left_temp[CLDFB_NO_CHANNELS_MAX]; + // Word32 avg_pwr_right_temp[CLDFB_NO_CHANNELS_MAX]; - ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right); + ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) { @@ -361,7 +361,7 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); - for ( int i = 0; i < 257; i++ ) + for ( int i = 0; i < 257; i++ ) { avg_pwr_left[i] = (float) fabs( me2f( avg_pwr_left_fx[i], avg_pwr_left_e[i] ) ); avg_pwr_right[i] = (float) fabs( me2f( avg_pwr_right_fx[i], avg_pwr_right_e[i] ) ); -- GitLab From fffed9a8a89288deba88b1a5dd49e362b73c6650 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Mon, 2 Jun 2025 14:01:23 +0200 Subject: [PATCH 663/698] bug fixes --- lib_rend/ivas_reverb_fx.c | 7 +++++-- lib_rend/ivas_reverb_utils_fx.c | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 228e399e2..79b599746 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2500,8 +2500,6 @@ ivas_error ivas_binaural_reverb_init( if ( ( roomAcoustics != NULL ) && roomAcoustics->override ) { - revTimes = t60; - revEne = ene; float t60_temp[CLDFB_NO_CHANNELS_MAX]; float ene_temp[CLDFB_NO_CHANNELS_MAX]; // fixedToFloat_arrL( t60, t60_temp, Q15, CLDFB_NO_CHANNELS_MAX ); @@ -2511,6 +2509,11 @@ ivas_error ivas_binaural_reverb_init( { return error; } + floatToFixed_arrL32(t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX); + floatToFixed_arrL32(t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX); + revTimes = t60; + revEne = ene; + preDelay = (int16_t) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX ); } else diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 7263545b7..b1a4a82ab 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -371,6 +371,8 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( free( output_fc_fx ); free( avg_pwr_left_e ); free( avg_pwr_right_e ); + free( avg_pwr_left_fx ); + free( avg_pwr_left_fx ); #else if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK ) -- GitLab From 3678c34b1c15a8a981ae8d35c439ec330c799079 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Mon, 2 Jun 2025 14:04:29 +0200 Subject: [PATCH 664/698] clang patch --- lib_rend/ivas_reverb_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 79b599746..336b9da3f 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2509,8 +2509,8 @@ ivas_error ivas_binaural_reverb_init( { return error; } - floatToFixed_arrL32(t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX); - floatToFixed_arrL32(t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX); + floatToFixed_arrL32( t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX ); + floatToFixed_arrL32( t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX ); revTimes = t60; revEne = ene; -- GitLab From d3cb8fcc06723b39a623cdb91c8776937d2f8483 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:02:43 +0200 Subject: [PATCH 665/698] deactivated compiler switch --- lib_com/options.h | 2 +- lib_rend/ivas_reverb_utils_fx.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3e4902d59..2e075ab32 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -112,7 +112,7 @@ #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ -#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ +//#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ #define FIX_638_ENERGIE_IAC_ROM_TABLES /* Orange: Missing left/right and coherence late reverb tables in binary format*/ diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index b1a4a82ab..6b9ecf3ab 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -101,7 +101,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; - const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; // Represent in fixed point + const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; // Represent in fixed point? #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif -- GitLab From 6ac062f2ead46c7911f87844c13e354f3a53978f Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Tue, 3 Jun 2025 10:38:29 +0200 Subject: [PATCH 666/698] restart pipeline after test case edits -- GitLab From 4b4940d8ab77d42f06026a37c733ed4ff60b385b Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 4 Jun 2025 13:35:30 +0200 Subject: [PATCH 667/698] =?UTF-8?q?=C3=84dded=20compiler=20switch=20+=20lo?= =?UTF-8?q?gic=20for=20rt60=20and=20dsr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib_com/options.h | 2 +- lib_util/render_config_reader.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 3315e495e..50db4e9e5 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -126,7 +126,7 @@ #endif - +#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index a1f806d6b..dae55f18c 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -2255,7 +2255,11 @@ ivas_error RenderConfigReader_read( /* RT60 */ else if ( strcmp( item, "RT60" ) == 0 ) { +#ifdef FIX_777_COMBI_RENDER_CONFIG_FILE + if ( read_txt_vector( pValue, pRenderConfigReader->pAE[acIdx].pFG->nrBands, pRenderConfigReader->pAE[acIdx].pRT60 ) ) +#else if ( read_txt_vector( pValue, pRenderConfigReader->pFG[idx].nrBands, pRenderConfigReader->pAE[acIdx].pRT60 ) ) +#endif { errorHandler( item, ERROR_VALUE_INVALID ); return IVAS_ERR_INVALID_RENDER_CONFIG; @@ -2265,7 +2269,11 @@ ivas_error RenderConfigReader_read( /* DSR */ else if ( strcmp( item, "DSR" ) == 0 ) { +#ifdef FIX_777_COMBI_RENDER_CONFIG_FILE + if ( read_txt_vector( pValue, pRenderConfigReader->pAE[acIdx].pFG->nrBands, pRenderConfigReader->pAE[acIdx].pDSR ) ) +#else if ( read_txt_vector( pValue, pRenderConfigReader->pFG[idx].nrBands, pRenderConfigReader->pAE[acIdx].pDSR ) ) +#endif { errorHandler( item, ERROR_VALUE_INVALID ); return IVAS_ERR_INVALID_RENDER_CONFIG; -- GitLab From d72e34237b2f0894b607017aa676704f641841a2 Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 4 Jun 2025 13:45:47 +0200 Subject: [PATCH 668/698] commit for push --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 50db4e9e5..99013a1c5 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -126,7 +126,7 @@ #endif -#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ +//#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ -- GitLab From d82c0de87438e2a1e95de57a7415935886296a9d Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Wed, 4 Jun 2025 14:14:07 +0200 Subject: [PATCH 669/698] restart CI -- GitLab From 799da60a2c5a1bd2b5b3b6afc937dd4abbdc6fa5 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 22 May 2025 09:41:47 +0200 Subject: [PATCH 670/698] port MR 1411 from float fix different external target extrapolation between framesizes --- lib_com/options.h | 2 ++ lib_rend/ivas_rotation_fx.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 3315e495e..1801f330c 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -138,6 +138,8 @@ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ +#define FIX_1008_EXTORIENT_TARGET_INTERPOLATION /* FhG: issue #1008, external orientation init was wrong for 5ms */ + /* #################### End BASOP porting switches ############################ */ #endif diff --git a/lib_rend/ivas_rotation_fx.c b/lib_rend/ivas_rotation_fx.c index aaae3e199..154dab321 100644 --- a/lib_rend/ivas_rotation_fx.c +++ b/lib_rend/ivas_rotation_fx.c @@ -1379,6 +1379,7 @@ ivas_error ivas_combined_orientation_open( move32(); ( *hCombinedOrientationData )->interpolationIncrement_fx = ONE_IN_Q30; // Q30 move32(); +#ifndef FIX_1008_EXTORIENT_TARGET_INTERPOLATION IF( EQ_16( num_subframes, 1 ) ) { ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 2000; @@ -1386,9 +1387,12 @@ ivas_error ivas_combined_orientation_open( } ELSE { +#endif ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; move16(); +#ifndef FIX_1008_EXTORIENT_TARGET_INTERPOLATION } +#endif ( *hCombinedOrientationData )->lrSwitchedNext = 0; move16(); ( *hCombinedOrientationData )->lrSwitchedCurrent = 0; -- GitLab From 2760d40420779c634b4834cacec998299f2126ad Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Sun, 8 Jun 2025 16:13:22 +0200 Subject: [PATCH 671/698] formatting fixes --- lib_rend/ivas_crend_fx.c | 243 ++++++++++++++++---------------- lib_rend/ivas_reverb_fx.c | 5 +- lib_rend/ivas_reverb_utils_fx.c | 6 +- 3 files changed, 123 insertions(+), 131 deletions(-) diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index c180c59a8..392d8ea99 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -1741,64 +1741,63 @@ ivas_error ivas_rend_openCrend( #ifdef SPLIT_REND_WITH_HEAD_ROT for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) - for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) #endif - { + { #ifdef SPLIT_REND_WITH_HEAD_ROT - hCrend = ( *pCrend )->hCrend[pos_idx]; + hCrend = ( *pCrend )->hCrend[pos_idx]; #else hCrend = ( *pCrend )->hCrend; #endif - hHrtf = ( *pCrend )->hHrtfCrend; + hHrtf = ( *pCrend )->hHrtfCrend; - IF( hHrtf != NULL ) - { - max_total_ir_len = L_mult0( hHrtf->max_num_iterations, subframe_length ); + IF( hHrtf != NULL ) + { + max_total_ir_len = L_mult0( hHrtf->max_num_iterations, subframe_length ); - FOR( i = 0; i < hHrtf->max_num_ir; i++ ) + FOR( i = 0; i < hHrtf->max_num_ir; i++ ) + { + IF( ( hCrend->freq_buffer_re_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { - IF( ( hCrend->freq_buffer_re_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero2_fx( hCrend->freq_buffer_re_fx[i], max_total_ir_len ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero2_fx( hCrend->freq_buffer_re_fx[i], max_total_ir_len ); - IF( ( hCrend->freq_buffer_im_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero2_fx( hCrend->freq_buffer_im_fx[i], max_total_ir_len ); + IF( ( hCrend->freq_buffer_im_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } + set_zero2_fx( hCrend->freq_buffer_im_fx[i], max_total_ir_len ); + } - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + IF( ( hCrend->prev_out_buffer_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * subframe_length ) ) == NULL ) { - IF( ( hCrend->prev_out_buffer_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * subframe_length ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero_fx( hCrend->prev_out_buffer_fx[i], subframe_length ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } + set_zero_fx( hCrend->prev_out_buffer_fx[i], subframe_length ); + } - max_total_ir_len = L_mult0( (Word16) hHrtf->num_iterations_diffuse[0], subframe_length ); + max_total_ir_len = L_mult0( (Word16) hHrtf->num_iterations_diffuse[0], subframe_length ); - IF( max_total_ir_len > 0 ) - { + IF( max_total_ir_len > 0 ) + { #ifdef FIX_INV_DIFFUSE_WEIGHT - IF( ( hCrend->freq_buffer_re_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + IF( ( hCrend->freq_buffer_re_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + IF( hHrtf->same_inv_diffuse_weight == 0 ) + { + IF( ( hCrend->freq_buffer_re_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } - IF( hHrtf->same_inv_diffuse_weight == 0 ) - { - IF( ( hCrend->freq_buffer_re_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - } - ELSE - { - hCrend->freq_buffer_re_diffuse_fx[1] = NULL; - } + } + ELSE + { + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + } #else IF( ( hCrend->freq_buffer_re_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { @@ -1806,30 +1805,30 @@ ivas_error ivas_rend_openCrend( } #endif #ifdef FIX_INV_DIFFUSE_WEIGHT - set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[0], max_total_ir_len ); - IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL ) - { - set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[1], max_total_ir_len ); - } + set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[0], max_total_ir_len ); + IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL ) + { + set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx[1], max_total_ir_len ); + } #else set_zero2_fx( hCrend->freq_buffer_re_diffuse_fx, max_total_ir_len ); #endif #ifdef FIX_INV_DIFFUSE_WEIGHT - IF( ( hCrend->freq_buffer_im_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + IF( ( hCrend->freq_buffer_im_diffuse_fx[0] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + IF( hHrtf->same_inv_diffuse_weight == 0 ) + { + IF( ( hCrend->freq_buffer_im_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } - IF( hHrtf->same_inv_diffuse_weight == 0 ) - { - IF( ( hCrend->freq_buffer_im_diffuse_fx[1] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - } - ELSE - { - hCrend->freq_buffer_im_diffuse_fx[1] = NULL; - } + } + ELSE + { + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; + } #else IF( ( hCrend->freq_buffer_im_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { @@ -1837,109 +1836,109 @@ ivas_error ivas_rend_openCrend( } #endif #ifdef FIX_INV_DIFFUSE_WEIGHT - set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[0], max_total_ir_len ); - IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL ) - { - set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[1], max_total_ir_len ); - } + set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[0], max_total_ir_len ); + IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL ) + { + set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx[1], max_total_ir_len ); + } #else set_zero2_fx( hCrend->freq_buffer_im_diffuse_fx, max_total_ir_len ); #endif - } - ELSE - { + } + ELSE + { #ifdef FIX_INV_DIFFUSE_WEIGHT - hCrend->freq_buffer_re_diffuse_fx[0] = NULL; - hCrend->freq_buffer_im_diffuse_fx[0] = NULL; - hCrend->freq_buffer_re_diffuse_fx[1] = NULL; - hCrend->freq_buffer_im_diffuse_fx[1] = NULL; + hCrend->freq_buffer_re_diffuse_fx[0] = NULL; + hCrend->freq_buffer_im_diffuse_fx[0] = NULL; + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; #else hCrend->freq_buffer_re_diffuse_fx = NULL; hCrend->freq_buffer_im_diffuse_fx = NULL; #endif - } + } - max_total_ir_len = add( extract_l( L_shr( L_add( L_shl( Mult_32_32( hHrtf->latency_s_fx, output_Fs ), 1 ), 1 ), 1 ) ), subframe_length ); /*(int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;*/ - IF( max_total_ir_len > 0 ) - { - IF( ( hCrend->lfe_delay_line_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero2_fx( hCrend->lfe_delay_line_fx, max_total_ir_len ); - } - ELSE + max_total_ir_len = add( extract_l( L_shr( L_add( L_shl( Mult_32_32( hHrtf->latency_s_fx, output_Fs ), 1 ), 1 ), 1 ) ), subframe_length ); /*(int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;*/ + IF( max_total_ir_len > 0 ) + { + IF( ( hCrend->lfe_delay_line_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) { - hCrend->lfe_delay_line_fx = NULL; + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); } + set_zero2_fx( hCrend->lfe_delay_line_fx, max_total_ir_len ); + } + ELSE + { + hCrend->lfe_delay_line_fx = NULL; + } - IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { + IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) #endif + { + return error; + } + + IF( EQ_16( hRendCfg->roomAcoustics.use_er, 1 ) ) + { + + /* Allocate memory for reflections */ + hCrend->reflections = (er_struct_t *) malloc( sizeof( er_struct_t ) ); + IF( !hCrend->reflections ) { - return error; + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections" ); } - - IF( EQ_16( hRendCfg->roomAcoustics.use_er, 1 ) ) + IF( NE_32( ( error = ivas_er_init_handle( hCrend->reflections ) ), IVAS_ERR_OK ) ) { + return error; + } - /* Allocate memory for reflections */ - hCrend->reflections = (er_struct_t *) malloc( sizeof( er_struct_t ) ); - IF( !hCrend->reflections ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections" ); - } - IF( NE_32( ( error = ivas_er_init_handle( hCrend->reflections ) ), IVAS_ERR_OK ) ) - { - return error; - } - - hCrend->reflections->use_er = hRendCfg->roomAcoustics.use_er; - hCrend->reflections->lowComplexity = hRendCfg->roomAcoustics.lowComplexity; - move16(); - move32(); + hCrend->reflections->use_er = hRendCfg->roomAcoustics.use_er; + hCrend->reflections->lowComplexity = hRendCfg->roomAcoustics.lowComplexity; + move16(); + move32(); - /* Set sample rate and frame size */ + /* Set sample rate and frame size */ - hCrend->reflections->output_Fs_fx = output_Fs; // Q0 - move32(); + hCrend->reflections->output_Fs_fx = output_Fs; // Q0 + move32(); - hCrend->reflections->max_frame_size = extract_l( Mult_32_16( output_Fs, INV_FRAME_PER_SEC_Q15 ) ); - move32(); + hCrend->reflections->max_frame_size = extract_l( Mult_32_16( output_Fs, INV_FRAME_PER_SEC_Q15 ) ); + move32(); - /* Init Shoebox */ - ivas_shoebox_config_init( &hCrend->reflections->shoebox_lib.cal, hRendCfg ); + /* Init Shoebox */ + ivas_shoebox_config_init( &hCrend->reflections->shoebox_lib.cal, hRendCfg ); - /* Init and compute Reflections */ - IF( NE_32( ( error = ivas_er_init( hCrend->reflections, inConfig ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - ELSE + /* Init and compute Reflections */ + IF( NE_32( ( error = ivas_er_init( hCrend->reflections, inConfig ) ), IVAS_ERR_OK ) ) { - hCrend->reflections = NULL; + return error; } } ELSE { - hCrend->hReverb = NULL; + hCrend->reflections = NULL; } - - ( *pCrend )->binaural_latency_ns = Mult_32_32( ( *pCrend )->hHrtfCrend->latency_s_fx, (Word32) 1000000000 ); - move32(); } + ELSE + { + hCrend->hReverb = NULL; + } + + ( *pCrend )->binaural_latency_ns = Mult_32_32( ( *pCrend )->hHrtfCrend->latency_s_fx, (Word32) 1000000000 ); + move32(); + } #ifdef SPLIT_REND_WITH_HEAD_ROT - ( *pCrend )->hCrend[pos_idx] = hCrend; + ( *pCrend )->hCrend[pos_idx] = hCrend; #else ( *pCrend )->hCrend = hCrend; #endif - } + } return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 336b9da3f..74c2a0c0a 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2502,15 +2502,12 @@ ivas_error ivas_binaural_reverb_init( { float t60_temp[CLDFB_NO_CHANNELS_MAX]; float ene_temp[CLDFB_NO_CHANNELS_MAX]; - // fixedToFloat_arrL( t60, t60_temp, Q15, CLDFB_NO_CHANNELS_MAX ); - // fixedToFloat_arrL( ene, ene_temp, Q15, CLDFB_NO_CHANNELS_MAX ); - // if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60_temp, ene_temp ) ) != IVAS_ERR_OK ) { return error; } floatToFixed_arrL32( t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX ); - floatToFixed_arrL32( t60_temp, t60, Q15, CLDFB_NO_CHANNELS_MAX ); + floatToFixed_arrL32( ene_temp, ene, Q15, CLDFB_NO_CHANNELS_MAX ); revTimes = t60; revEne = ene; diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index 6b9ecf3ab..75cc4b816 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -101,7 +101,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; - const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; // Represent in fixed point? + const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif @@ -149,10 +149,6 @@ ivas_error ivas_reverb_prepare_cldfb_params( pOutput_ene[idx] *= expf( exp_argument ); } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - - // Word32 avg_pwr_left_temp[CLDFB_NO_CHANNELS_MAX]; - // Word32 avg_pwr_right_temp[CLDFB_NO_CHANNELS_MAX]; - ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) -- GitLab From 7a59cc5c78501ad0865d315e4af4aab706bb6d9b Mon Sep 17 00:00:00 2001 From: Devansh Kandpal <43807487+mrkandpal@users.noreply.github.com> Date: Sun, 8 Jun 2025 16:28:52 +0200 Subject: [PATCH 672/698] marked branch as ready, trigger full pipeline -- GitLab From 4126009526a8add96270b4d392e57f2d7d99c43f Mon Sep 17 00:00:00 2001 From: Adriana Vasilache Date: Wed, 11 Jun 2025 13:38:41 +0300 Subject: [PATCH 673/698] 1716_basop_port --- lib_com/options.h | 2 +- lib_dec/ivas_dirac_dec_fx.c | 2 +- lib_rend/ivas_dirac_dec_binaural_functions_fx.c | 8 ++++---- lib_rend/lib_rend_fx.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 98e076d36..0cd498a89 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -137,7 +137,7 @@ #define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ -#define NONBE_FIX_991_PARAMBIN_BINARY_HRTF /* Nokia: issue #991: fix using of binary file HRTF in ParamBin */ +/* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 5f8d1512b..22a7d4993 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1151,7 +1151,7 @@ ivas_error ivas_dirac_dec_config_fx( #endif { #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) #endif diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index c1c0bf626..d0a5e47d1 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -337,9 +337,9 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - if (NE_32((error = ivas_binaural_reverb_init(&hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &(st_ivas->hRenderConfig->roomAcoustics), output_Fs, (*phHrtfParambin)->parametricReverberationTimes, (*phHrtfParambin)->parametricReverberationEneCorrections)), IVAS_ERR_OK)) + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes_fx, ( *phHrtfParambin )->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) #else - if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes_fx, st_ivas->hHrtfParambin->parametricReverberationEneCorrections_fx ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes_fx, st_ivas->hHrtfParambin->parametricReverberationEneCorrections_fx ) ) != IVAS_ERR_OK ) #endif #else /* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */ @@ -5830,8 +5830,8 @@ static void hrtfShGetHrtf_fx( { Word16 k; #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - Word32( *hrtfShCoeffsReInt_fx )[16][60]; - Word32( *hrtfShCoeffsImInt_fx )[16][60]; + Word16( *hrtfShCoeffsReInt_fx )[16][60]; + Word16( *hrtfShCoeffsImInt_fx )[16][60]; hrtfShCoeffsReInt_fx = hHrtfParambin->hrtfShCoeffsRe_fx; hrtfShCoeffsImInt_fx = hHrtfParambin->hrtfShCoeffsIm_fx; #endif diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index 0857a4465..c7bd7b2d6 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -9257,7 +9257,7 @@ static ivas_error getSamplesInternal( hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms, #endif hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms, - &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, ( const int16_t )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK ) + &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, (const int16_t) ( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK ) { return error; } @@ -10290,7 +10290,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - if (NE_32((error = ivas_binaural_reverb_init(&hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &(hRendCfg->roomAcoustics), output_Fs, (*phHrtfParambin)->parametricReverberationTimes, (*phHrtfParambin)->parametricReverberationEneCorrections)), IVAS_ERR_OK)) + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes_fx, ( *phHrtfParambin )->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes_fx, hHrtfParambin->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) #endif -- GitLab From 2b15315ae96d20deed96d96c6e696f08a6758a73 Mon Sep 17 00:00:00 2001 From: Adriana Vasilache Date: Wed, 11 Jun 2025 13:44:58 +0300 Subject: [PATCH 674/698] fixc clang --- lib_dec/ivas_dirac_dec_fx.c | 2 +- lib_rend/lib_rend_fx.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 22a7d4993..e843a82f9 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -1151,7 +1151,7 @@ ivas_error ivas_dirac_dec_config_fx( #endif { #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) #endif diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index c7bd7b2d6..562b35a6a 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -9257,7 +9257,7 @@ static ivas_error getSamplesInternal( hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms, #endif hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms, - &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, (const int16_t) ( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK ) + &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, ( const int16_t )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK ) { return error; } -- GitLab From 0943b9bd324d47a6e189a655f6921c5a29e83b98 Mon Sep 17 00:00:00 2001 From: Adriana Vasilache Date: Thu, 12 Jun 2025 09:31:39 +0300 Subject: [PATCH 675/698] fix comment --- lib_com/options.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index 0cd498a89..cf71f5da6 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -137,7 +137,7 @@ #define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ -/* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin */ +/* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */ /* #################### End BASOP porting switches ############################ */ -- GitLab From 5aa131a4aa7408549efd2bc90a05962faa9c0e15 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Thu, 12 Jun 2025 08:54:19 +0200 Subject: [PATCH 676/698] Fix for HRTF file loading in CI --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d630d11ba..e35d0e290 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -273,6 +273,7 @@ stages: - sed -i '/fetch/d' .git/config # Remove all fetch lines to clean out dead links - git remote set-branches --add origin $BASOP_CI_BRANCH_PC_REPO # Add currently used branch - git fetch + - git restore --staged . # Needed if HRTF model files were updated. - git restore . # Just as a precaution - git checkout $BASOP_CI_BRANCH_PC_REPO - git pull origin $BASOP_CI_BRANCH_PC_REPO -- GitLab From bd7113d89e33139ee17325e8717ece7d22a101a3 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 12 Jun 2025 14:44:48 +0200 Subject: [PATCH 677/698] port float MR 1413 --- lib_com/ivas_prot_fx.h | 3 +++ lib_com/options.h | 1 + lib_dec/ivas_jbm_dec_fx.c | 4 ++++ lib_dec/ivas_mono_dmx_renderer_fx.c | 8 ++++++++ 4 files changed, 16 insertions(+) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index b1a03bd2e..3ca3c90c8 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1155,6 +1155,9 @@ void ivas_mono_stereo_downmix_mcmasa_fx( ); void ivas_apply_non_diegetic_panning_fx( +#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING + float *input_f, /* i : non-diegetic object */ +#endif Word32 *output_f_fx[], /* i/o: core-coder transport mono channel/stereo output */ const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain */ const Word16 output_frame /* i : output frame length per channel */ diff --git a/lib_com/options.h b/lib_com/options.h index 51319adce..27a2da35a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -140,6 +140,7 @@ /* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */ #define FIX_1008_EXTORIENT_TARGET_INTERPOLATION /* FhG: issue #1008, external orientation init was wrong for 5ms */ +#define FIX_1009_ISM_NONDIEGETIC_PANNING /* FhG: issue #1009: use correct object buffer for ISM1 non-diegetic pan */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index beb6535a2..80749ed4a 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1992,7 +1992,11 @@ ivas_error ivas_jbm_dec_render_fx( } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) { +#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING + ivas_apply_non_diegetic_panning_fx(p_tc_fx[0], st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); +#else ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); +#endif } #ifdef DEBUGGING ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c index 66b14cc56..48cad29f8 100644 --- a/lib_dec/ivas_mono_dmx_renderer_fx.c +++ b/lib_dec/ivas_mono_dmx_renderer_fx.c @@ -318,6 +318,9 @@ void ivas_mono_stereo_downmix_mcmasa_fx( *------------------------------------------------------------------------*/ void ivas_apply_non_diegetic_panning_fx( +#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING + float *input_f, /* i : non-diegetic object */ +#endif Word32 *output_f_fx[], /* i/o: core-coder transport mono channel/stereo output */ const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain Q15*/ const Word16 output_frame /* i : output frame length per channel Q11*/ @@ -328,8 +331,13 @@ void ivas_apply_non_diegetic_panning_fx( pan_left_fx = add( mult( non_diegetic_pan_gain_fx, 16384 ), 16384 ); // 0.5.Q15 = 16384 pan_right_fx = sub( 32767, pan_left_fx ); +#ifdef FIX_1009_ISM_NONDIEGETIC_PANNING + v_multc_fixed( input_f, L_shl( L_deposit_l( pan_right_fx ), 16 ), output_f_fx[1], output_frame ); + v_multc_fixed( input_f, L_shl( L_deposit_l( pan_left_fx ), 16 ), output_f_fx[0], output_frame ); +#else v_multc_fixed( output_f_fx[0], L_shl( L_deposit_l( pan_right_fx ), 16 ), output_f_fx[1], output_frame ); v_multc_fixed( output_f_fx[0], L_shl( L_deposit_l( pan_left_fx ), 16 ), output_f_fx[0], output_frame ); +#endif return; } -- GitLab From 9034d45d6ddeec3b11c4ff7efb5a1abd5e6439ee Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 12 Jun 2025 14:54:32 +0200 Subject: [PATCH 678/698] fix formatting --- lib_dec/ivas_jbm_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 80749ed4a..1e5daaf5d 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1993,7 +1993,7 @@ ivas_error ivas_jbm_dec_render_fx( ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) { #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - ivas_apply_non_diegetic_panning_fx(p_tc_fx[0], st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); + ivas_apply_non_diegetic_panning_fx( p_tc_fx[0], st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); #else ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); #endif -- GitLab From 67a8805b82ba76a3c3ffa2e05deb158f50dfd89d Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 12 Jun 2025 14:59:04 +0200 Subject: [PATCH 679/698] fix compile error --- lib_dec/ivas_jbm_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 1e5daaf5d..64896a1ff 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1993,7 +1993,7 @@ ivas_error ivas_jbm_dec_render_fx( ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) { #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - ivas_apply_non_diegetic_panning_fx( p_tc_fx[0], st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); + ivas_apply_non_diegetic_panning_fx( p_tc_fx[0], p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); #else ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); #endif -- GitLab From 90ebdced188553f03c754d75a7225b98786acc0d Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 12 Jun 2025 15:36:08 +0200 Subject: [PATCH 680/698] fix formatting --- lib_dec/ivas_jbm_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 64896a1ff..57063e7b7 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1993,7 +1993,7 @@ ivas_error ivas_jbm_dec_render_fx( ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) { #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - ivas_apply_non_diegetic_panning_fx( p_tc_fx[0], p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); + ivas_apply_non_diegetic_panning_fx( p_tc_fx[0], p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); #else ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); #endif -- GitLab From 59693e942b661393647b79abcdd9f741e35856c9 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 12 Jun 2025 16:00:24 +0200 Subject: [PATCH 681/698] fix variable types --- lib_com/ivas_prot_fx.h | 2 +- lib_dec/ivas_mono_dmx_renderer_fx.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index 3ca3c90c8..d989a1f68 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -1156,7 +1156,7 @@ void ivas_mono_stereo_downmix_mcmasa_fx( void ivas_apply_non_diegetic_panning_fx( #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - float *input_f, /* i : non-diegetic object */ + Word32 *input_f_fx, /* i : non-diegetic object */ #endif Word32 *output_f_fx[], /* i/o: core-coder transport mono channel/stereo output */ const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain */ diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c index 48cad29f8..7029f8b8d 100644 --- a/lib_dec/ivas_mono_dmx_renderer_fx.c +++ b/lib_dec/ivas_mono_dmx_renderer_fx.c @@ -319,7 +319,7 @@ void ivas_mono_stereo_downmix_mcmasa_fx( void ivas_apply_non_diegetic_panning_fx( #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - float *input_f, /* i : non-diegetic object */ + Word32 *input_f_fx, /* i : non-diegetic object */ #endif Word32 *output_f_fx[], /* i/o: core-coder transport mono channel/stereo output */ const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain Q15*/ @@ -332,8 +332,8 @@ void ivas_apply_non_diegetic_panning_fx( pan_right_fx = sub( 32767, pan_left_fx ); #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - v_multc_fixed( input_f, L_shl( L_deposit_l( pan_right_fx ), 16 ), output_f_fx[1], output_frame ); - v_multc_fixed( input_f, L_shl( L_deposit_l( pan_left_fx ), 16 ), output_f_fx[0], output_frame ); + v_multc_fixed( input_f_fx, L_shl( L_deposit_l( pan_right_fx ), 16 ), output_f_fx[1], output_frame ); + v_multc_fixed( input_f_fx, L_shl( L_deposit_l( pan_left_fx ), 16 ), output_f_fx[0], output_frame ); #else v_multc_fixed( output_f_fx[0], L_shl( L_deposit_l( pan_right_fx ), 16 ), output_f_fx[1], output_frame ); v_multc_fixed( output_f_fx[0], L_shl( L_deposit_l( pan_left_fx ), 16 ), output_f_fx[0], output_frame ); -- GitLab From e281e4add6092352c2203716c80bf1a2900f8bef Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 13 Jun 2025 08:58:06 +0200 Subject: [PATCH 682/698] fix comments in ivas_mono_dmx_renderer_fx.c --- lib_dec/ivas_mono_dmx_renderer_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c index 7029f8b8d..1ee8676e2 100644 --- a/lib_dec/ivas_mono_dmx_renderer_fx.c +++ b/lib_dec/ivas_mono_dmx_renderer_fx.c @@ -319,9 +319,9 @@ void ivas_mono_stereo_downmix_mcmasa_fx( void ivas_apply_non_diegetic_panning_fx( #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - Word32 *input_f_fx, /* i : non-diegetic object */ + Word32 *input_f_fx, /* i : non-diegetic object */ #endif - Word32 *output_f_fx[], /* i/o: core-coder transport mono channel/stereo output */ + Word32 *output_f_fx[], /* o: core-coder transport mono channel/stereo output */ const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain Q15*/ const Word16 output_frame /* i : output frame length per channel Q11*/ ) -- GitLab From 3921fa88ab7dda258e924c1c48263355eb14daed Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Fri, 13 Jun 2025 09:09:52 +0200 Subject: [PATCH 683/698] fix formatting --- lib_dec/ivas_mono_dmx_renderer_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c index 1ee8676e2..4f04c4dd8 100644 --- a/lib_dec/ivas_mono_dmx_renderer_fx.c +++ b/lib_dec/ivas_mono_dmx_renderer_fx.c @@ -319,7 +319,7 @@ void ivas_mono_stereo_downmix_mcmasa_fx( void ivas_apply_non_diegetic_panning_fx( #ifdef FIX_1009_ISM_NONDIEGETIC_PANNING - Word32 *input_f_fx, /* i : non-diegetic object */ + Word32 *input_f_fx, /* i : non-diegetic object */ #endif Word32 *output_f_fx[], /* o: core-coder transport mono channel/stereo output */ const Word16 non_diegetic_pan_gain_fx, /* i : non-diegetic panning gain Q15*/ -- GitLab From e441a50059df28bd8452386c75a1ccd18d3f0911 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 10:18:08 +0200 Subject: [PATCH 684/698] [fix] apply same fix under DISABLE_LIMITER --- lib_dec/ivas_jbm_dec_fx.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index e6f94c889..f2a7f6549 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2991,9 +2991,15 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( #ifndef DISABLE_LIMITER Word16 ch_idx, exp = 11; move16(); +#ifdef NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER + FOR( ch_idx = 0; ch_idx < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ ) + { + p_output_fx[ch_idx] = st_ivas->p_output_fx[ch_idx]; +#else FOR( ch_idx = 0; ch_idx < MAX_CICP_CHANNELS; ch_idx++ ) { p_output_fx[ch_idx] = output_fx[ch_idx]; +#endif } ivas_limiter_dec_fx( st_ivas->hLimiter, p_output_fx, st_ivas->hDecoderConfig->nchan_out, *nSamplesRendered, st_ivas->BER_detect, exp ); #endif -- GitLab From 33291b4380479f59bd519e1bb696060a188aff2c Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:21 +0200 Subject: [PATCH 685/698] [cleanup] accept FIX_699_FILE_READER_JBM_TSM --- apps/encoder.c | 4 ---- lib_com/options.h | 1 - 2 files changed, 5 deletions(-) diff --git a/apps/encoder.c b/apps/encoder.c index a7229dff5..8404747dc 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -681,11 +681,7 @@ int main( { if ( ( error = JbmFileReader_readCAconfig( jbmReader, &caConfig ) ) != IVAS_ERR_OK ) { -#ifdef FIX_699_FILE_READER_JBM_TSM fprintf( stderr, "\nError (%s) while reading Channel-Aware Config. from: %s\n\n", IVAS_ENC_GetErrorMessage( error ), JbmFileReader_getFilePath( jbmReader ) ); -#else - fprintf( stderr, "JbmFileReader_readCAconfig() failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); -#endif goto cleanup; } diff --git a/lib_com/options.h b/lib_com/options.h index a7c2f1b53..433b0692e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,7 +128,6 @@ //#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ -#define FIX_699_FILE_READER_JBM_TSM /* VA: issue 699: complement FileReader_getFilePath() logic for TSM and JBM */ #define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ #define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ -- GitLab From 76a16c4560c001841017d908f26791f941f40531 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:24 +0200 Subject: [PATCH 686/698] [cleanup] accept FIX_997_REMOVE_SPAR_DEC_UPMIXER --- lib_com/options.h | 1 - lib_dec/ivas_spar_decoder_fx.c | 8 -------- 2 files changed, 9 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 433b0692e..4d5b8ca68 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,7 +128,6 @@ //#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ #define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ -#define FIX_997_REMOVE_SPAR_DEC_UPMIXER /* VA: issue 997: remove obsolete function ivas_spar_dec_upmixer() */ #define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ #define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c index b13c6ab7a..530614fe9 100644 --- a/lib_dec/ivas_spar_decoder_fx.c +++ b/lib_dec/ivas_spar_decoder_fx.c @@ -1534,20 +1534,12 @@ void ivas_spar_dec_set_render_map_fx( return; } -#ifdef FIX_997_REMOVE_SPAR_DEC_UPMIXER /*-------------------------------------------------------------------* * ivas_spar_dec_set_render_params() * * IVAS SPAR set rendering parameters *-------------------------------------------------------------------*/ -#else -/*-------------------------------------------------------------------* - * ivas_spar_dec_upmixer() - * - * IVAS SPAR upmixer - *-------------------------------------------------------------------*/ -#endif void ivas_spar_dec_set_render_params_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ -- GitLab From 9e2b26b22bb7a73f72a7b24d35c5777abe679d16 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:27 +0200 Subject: [PATCH 687/698] [cleanup] accept FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO --- lib_com/options.h | 1 - lib_dec/ivas_jbm_dec_fx.c | 19 ------------------- 2 files changed, 20 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 4d5b8ca68..4f77453e2 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -127,7 +127,6 @@ #endif //#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ -#define FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO /* VA: issue 994: remove an obsolete call of function ivas_ls_setup_conversion() in stereo */ #define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ #define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index f2a7f6549..3abf7b2e7 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -175,25 +175,6 @@ ivas_error ivas_jbm_dec_tc_fx( { hp20_fx_32( p_output_fx[n], output_frame, st_ivas->mem_hp20_out_fx[n], output_Fs ); } -#ifndef FIX_944_REMOVE_LS_RENDERER_CALL_IN_STEREO - - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) && EQ_16( st_ivas->hDecoderConfig->nchan_out, 1 ) ) - { - s = Q16 - Q11; - move16(); - s = sub( s, find_guarded_bits_fx( st_ivas->nchan_transport ) ); - FOR( i = 0; i < s_max( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_transport ); ++i ) - { - Scale_sig32( p_output_fx[i], output_frame, s ); // Q(11+s) - } - ivas_ls_setup_conversion_fx( st_ivas, st_ivas->nchan_transport, output_frame, p_output_fx, p_output_fx ); - FOR( i = 0; i < s_max( st_ivas->hDecoderConfig->nchan_out, st_ivas->nchan_transport ); ++i ) - { - Scale_sig32( p_output_fx[i], output_frame, negate( s ) ); // Q11 - } - } -#endif } ELSE IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { -- GitLab From b31d44e0fbc64b60b1dc47d8ec4793d2d01b41f6 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:30 +0200 Subject: [PATCH 688/698] [cleanup] accept FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN --- lib_com/options.h | 1 - lib_dec/ivas_ism_dec_fx.c | 12 ------------ 2 files changed, 13 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 4f77453e2..a8836818c 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -130,7 +130,6 @@ #define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ #define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ -#define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ #define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index ff4f45eca..16fab99ef 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -393,18 +393,6 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( tc_nchan_full_new = tc_nchan_tc_new; move16(); -#ifndef FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN - test(); - test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) || EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) - { - tc_nchan_allocate_new = 2 * BINAURAL_CHANNELS; - move16(); - tc_nchan_full_new = tc_nchan_allocate_new; - move16(); - } - -#endif test(); test(); test(); -- GitLab From 45e2853b2ebc78466c383108142ed611aeae79ff Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:33 +0200 Subject: [PATCH 689/698] [cleanup] accept FIX_1001_ARI_HM_OVERFLOW --- lib_com/options.h | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index a8836818c..d98b08ca2 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -130,7 +130,6 @@ #define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ #define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ -#define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ /* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */ -- GitLab From 9c8d48ff5c12a424bf8b129fa208c59e8eb050e9 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:40 +0200 Subject: [PATCH 690/698] [cleanup] accept FIX_1008_EXTORIENT_TARGET_INTERPOLATION --- lib_com/options.h | 1 - lib_rend/ivas_rotation_fx.c | 12 ------------ 2 files changed, 13 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index d98b08ca2..ea0be205a 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -133,7 +133,6 @@ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ /* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */ -#define FIX_1008_EXTORIENT_TARGET_INTERPOLATION /* FhG: issue #1008, external orientation init was wrong for 5ms */ #define FIX_1009_ISM_NONDIEGETIC_PANNING /* FhG: issue #1009: use correct object buffer for ISM1 non-diegetic pan */ #define NONBE_FIX_1012_1013_JBM_FLUSH_BUFFER /* FhG: issues #1012, 1013: JBM flush function uses wrong output buffer */ diff --git a/lib_rend/ivas_rotation_fx.c b/lib_rend/ivas_rotation_fx.c index 154dab321..36f363f83 100644 --- a/lib_rend/ivas_rotation_fx.c +++ b/lib_rend/ivas_rotation_fx.c @@ -1379,20 +1379,8 @@ ivas_error ivas_combined_orientation_open( move32(); ( *hCombinedOrientationData )->interpolationIncrement_fx = ONE_IN_Q30; // Q30 move32(); -#ifndef FIX_1008_EXTORIENT_TARGET_INTERPOLATION - IF( EQ_16( num_subframes, 1 ) ) - { - ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 2000; - move16(); - } - ELSE - { -#endif ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; move16(); -#ifndef FIX_1008_EXTORIENT_TARGET_INTERPOLATION - } -#endif ( *hCombinedOrientationData )->lrSwitchedNext = 0; move16(); ( *hCombinedOrientationData )->lrSwitchedCurrent = 0; -- GitLab From 8c97d14d112672f76953970dbeba3e164cc6714c Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:43 +0200 Subject: [PATCH 691/698] [cleanup] accept NONBE_FIX_978_MC_TDREND_REVERB --- lib_com/options.h | 1 - lib_dec/ivas_init_dec_fx.c | 4 ---- lib_dec/ivas_ism_dec_fx.c | 4 ---- lib_dec/ivas_objectRenderer_internal_fx.c | 8 -------- 4 files changed, 17 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index ea0be205a..a1fc5e751 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,7 +128,6 @@ //#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ -#define NONBE_FIX_978_MC_TDREND_REVERB /* Eri : activate reverb for TDREND with headtracking */ #define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index 312011c73..6643ed423 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -2291,11 +2291,7 @@ ivas_error ivas_init_decoder_fx( move16(); } -#ifdef NONBE_FIX_978_MC_TDREND_REVERB IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#else - IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES if ( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index 16fab99ef..5f431d63b 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -218,11 +218,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( { return error; } -#ifdef NONBE_FIX_978_MC_TDREND_REVERB IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#else - IF( EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_reverb_open_fx( &st_ivas->hReverb, st_ivas->hHrtfStatistics, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c index 48cbd21c7..1b174493d 100644 --- a/lib_dec/ivas_objectRenderer_internal_fx.c +++ b/lib_dec/ivas_objectRenderer_internal_fx.c @@ -237,11 +237,7 @@ ivas_error ivas_td_binaural_renderer_sf_fx( } test(); -#ifdef NONBE_FIX_978_MC_TDREND_REVERB IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#else - IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { FOR( i = 0; i < nchan_ism_internal; ++i ) { @@ -273,11 +269,7 @@ ivas_error ivas_td_binaural_renderer_sf_fx( } test(); -#ifdef NONBE_FIX_978_MC_TDREND_REVERB IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#else - IF( st_ivas->hRenderConfig != NULL && EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { /* add reverb to rendered signals */ v_add_32( reverb_signal_fx[0], output_fx_local[0], output_fx_local[0], output_frame ); // Q11 -- GitLab From 8b75e5595f09a8fdc58950d7244b3ef2ec1dde57 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:52 +0200 Subject: [PATCH 692/698] [cleanup] accept NONBE_FIX_999_JBM_MCT_FLUSH --- lib_com/options.h | 1 - lib_dec/ivas_jbm_dec_fx.c | 6 ------ 2 files changed, 7 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index a1fc5e751..0255c82a2 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,7 +128,6 @@ //#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ -#define NONBE_FIX_999_JBM_MCT_FLUSH /* FhG: issue #999: fix wrong flushing for MCT at a JBM rate switch */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ /* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */ diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 3abf7b2e7..6a0d49bfe 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2843,11 +2843,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( ivas_binaural_add_LFE_fx( st_ivas, hTcBuffer->n_samples_granularity, st_ivas->hTcBuffer->tc_fx, p_output_fx ); } -#ifdef NONBE_FIX_999_JBM_MCT_FLUSH ELSE IF( EQ_16( renderer_type_old, RENDERER_BINAURAL_OBJECTS_TD ) ) -#else - ELSE IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) -#endif { IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, hTcBuffer->n_samples_granularity ) ), IVAS_ERR_OK ) ) { @@ -2855,12 +2851,10 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( } ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, st_ivas->hTcBuffer->tc_fx, p_output_fx ); } -#ifdef NONBE_FIX_999_JBM_MCT_FLUSH ELSE { return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong renderer in MCT VoIP renderer flushing!" ); } -#endif } ELSE { -- GitLab From cc113f025a6d0a4b9b2e5ead1713ba483c655ac7 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:55 +0200 Subject: [PATCH 693/698] [cleanup] accept NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE --- lib_com/options.h | 1 - lib_dec/ivas_mct_dec_fx.c | 4 ---- 2 files changed, 5 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 0255c82a2..fc33b50d9 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -128,7 +128,6 @@ //#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ -#define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ /* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */ #define FIX_1009_ISM_NONDIEGETIC_PANNING /* FhG: issue #1009: use correct object buffer for ISM1 non-diegetic pan */ diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index 4545ab61d..5c9deed2d 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1023,10 +1023,8 @@ static ivas_error ivas_mc_dec_reconfig_fx( /* transfer subframe info from DirAC or ParamMC to central tc buffer */ -#ifdef NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE if ( st_ivas->hTcBuffer->tc_buffer_mode != TC_BUFFER_MODE_BUFFER ) { -#endif test(); IF( EQ_16( last_mc_mode, MC_MODE_PARAMMC ) ) { @@ -1052,9 +1050,7 @@ static ivas_error ivas_mc_dec_reconfig_fx( move16(); Copy( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } -#ifdef NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE } -#endif /* JBM: when granularity goes down (e.g. MCT with CREND -> ParamMC with binaural fastconv render what still fits in the new granularity */ -- GitLab From 0287dc47fc348f8d56d331dfa7b58846464dc9bf Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:30:58 +0200 Subject: [PATCH 694/698] [cleanup] accept SPLIT_REND_POSE_CORRECTION_UNUSED_BITS --- lib_com/options.h | 1 - lib_isar/isar_cnst.h | 4 - lib_isar/isar_prot.h | 8 - lib_isar/isar_splitRendererPost.c | 163 ------------------ lib_isar/isar_splitRendererPre.c | 246 ---------------------------- lib_isar/isar_splitRenderer_utils.c | 58 ------- lib_isar/isar_stat.h | 2 - 7 files changed, 482 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index fc33b50d9..810fefcd4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -105,7 +105,6 @@ #define SPLIT_REND_WITH_HEAD_ROT /* Dlb,FhG: Split Rendering contributions 21 and 35 */ #ifdef SPLIT_REND_WITH_HEAD_ROT -#define SPLIT_REND_POSE_CORRECTION_UNUSED_BITS #define ISAR_BITSTREAM_UPDATE_LC3PLUS /* FhG: Multiple improvements to the ISAR bitstream when LC3plus is used. See MR 1456 for details. */ #define FIX_1372_ISAR_POST_REND #endif diff --git a/lib_isar/isar_cnst.h b/lib_isar/isar_cnst.h index 046beabdc..7eae62357 100644 --- a/lib_isar/isar_cnst.h +++ b/lib_isar/isar_cnst.h @@ -76,12 +76,8 @@ typedef enum #define MAX_SPLIT_REND_MD_BANDS 20 #define MAX_SPLIT_MD_SUBFRAMES 1 #define COMPLEX_MD_BAND_THRESH MAX_SPLIT_REND_MD_BANDS -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS #define COMPLEX_MD_BAND_THRESH_LOW 4 #define COMPLEX_MD_BAND_THRESH_HIGH 10 -#else -#define COMPLEX_MD_BAND_THRESH_LOW 5 -#endif #define SPLIT_REND_RO_MD_BAND_THRESH 4 #define ISAR_SPLIT_REND_PRED_63QUANT_PNTS_LOG2_CEIL 6 diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h index 618454f66..b97b81bbc 100644 --- a/lib_isar/isar_prot.h +++ b/lib_isar/isar_prot.h @@ -199,14 +199,8 @@ void isar_split_rend_get_quant_params_fx( Word16 bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], Word16 pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], Word16 pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS const Word16 ro_flag, -#endif Word16 *num_quant_strats -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - , - Word16 *num_complex_bands -#endif ); void isar_split_rend_get_quant_params( @@ -293,7 +287,6 @@ void isar_rend_CldfbSplitPreRendProcess( const Word16 low_res_pre_rend_rot, const Word16 ro_md_flag ); -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word16 isar_renderSplitGetRot_axisNumBits( const Word16 dof ); @@ -305,7 +298,6 @@ Word16 isar_renderSplitGetCodeFromRot_axis( const Word16 dof, const ISAR_SPLIT_REND_ROT_AXIS rot_axis, Word16 *num_bits ); -#endif void isar_init_split_post_rend_handles( ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ); diff --git a/lib_isar/isar_splitRendererPost.c b/lib_isar/isar_splitRendererPost.c index 306b47d71..32a230318 100644 --- a/lib_isar/isar_splitRendererPost.c +++ b/lib_isar/isar_splitRendererPost.c @@ -239,22 +239,9 @@ static void ivas_split_rend_unquant_md_fx( quantstep = pred_quant_step; move32(); -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - hMd->pred_mat_re_fx[ch1][ch2] = Mpy_32_16_1( quantstep, extract_l( L_shl( hMd->pred_mat_re_idx[ch1][ch2], Q9 ) ) ); /* Q25 */ - move32(); - hMd->pred_mat_re_fx[ch1][ch2] = L_add( hMd->pred_mat_re_fx[ch1][ch2], L_shr( fix_pos_rot_mat[ch1][ch2], Q6 ) ); /* Q25 */ - move32(); - } - } -#endif IF( real_only ) { -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) { FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) @@ -265,7 +252,6 @@ static void ivas_split_rend_unquant_md_fx( move32(); } } -#endif FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) { @@ -278,7 +264,6 @@ static void ivas_split_rend_unquant_md_fx( } ELSE { -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) { FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) @@ -289,7 +274,6 @@ static void ivas_split_rend_unquant_md_fx( move32(); } } -#endif FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) { @@ -385,34 +369,6 @@ static void isar_splitBinPostRendMdBase2Dec( { IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], ANY_YAW ) ) { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_code_len ) ); - hMd->pred_mat_re_idx[ch1][ch2] = add( code, min_pred_idx ); - move16(); - } - } - } - FOR( b = 0; b < pred_imag_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_code_len ) ); - hMd->pred_mat_im_idx[ch1][ch2] = add( code, min_pred_idx ); - move16(); - } - } - } -#else FOR( b = 0; b < pred_imag_bands_yaw; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; @@ -450,7 +406,6 @@ static void isar_splitBinPostRendMdBase2Dec( hMd->pred_mat_re_idx[1][0] = 0; move16(); } -#endif FOR( b = 0; b < d_bands_yaw; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; @@ -474,34 +429,6 @@ static void isar_splitBinPostRendMdBase2Dec( } ELSE { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_roll; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_roll_code_len ) ); - hMd->pred_mat_re_idx[ch1][ch2] = add( code, min_pred_roll_idx ); - move16(); - } - } - } - FOR( b = 0; b < pred_imag_bands_roll; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_roll_code_len ) ); - hMd->pred_mat_im_idx[ch1][ch2] = add( code, min_pred_roll_idx ); - move16(); - } - } - } -#else FOR( b = 0; b < pred_imag_bands_roll; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; @@ -539,7 +466,6 @@ static void isar_splitBinPostRendMdBase2Dec( hMd->pred_mat_re_idx[1][0] = 0; move16(); } -#endif } } } @@ -599,36 +525,6 @@ static void ivas_splitBinPostRendMdHuffDec( { IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], ANY_YAW ) ) { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred[pred_cb_idx], pBits, pHuff_cfg->pred_idx_trav[pred_cb_idx] ); - move16(); - // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits ); - } - } - isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, 1, min_pred_idx, max_pred_idx ); - } - FOR( b = 0; b < pred_imag_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred[pred_cb_idx], pBits, pHuff_cfg->pred_idx_trav[pred_cb_idx] ); - move16(); - // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits ); - } - } - isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_im_idx, -1, min_pred_idx, max_pred_idx ); - } -#else FOR( b = 0; b < pred_imag_bands_yaw; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; @@ -668,7 +564,6 @@ static void ivas_splitBinPostRendMdHuffDec( move16(); isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, -1, min_pred_idx, max_pred_idx ); } -#endif FOR( b = 0; b < d_bands_yaw; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; @@ -689,37 +584,6 @@ static void ivas_splitBinPostRendMdHuffDec( } ELSE { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_roll; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred_roll, pBits, pHuff_cfg->pred_roll_idx_trav ); - move16(); - // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred_roll, pBits ); - } - } - isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, 1, min_pred_roll_idx, max_pred_roll_idx ); - } - FOR( b = 0; b < pred_imag_bands_roll; b++ ) - { - hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred_roll, pBits, pHuff_cfg->pred_roll_idx_trav ); - move16(); - // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred_roll, pBits ); - } - } - isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_im_idx, -1, min_pred_roll_idx, max_pred_roll_idx ); - } -#else FOR( b = 0; b < pred_imag_bands_roll; b++ ) { hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; @@ -760,7 +624,6 @@ static void ivas_splitBinPostRendMdHuffDec( move16(); isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, -1, min_pred_roll_idx, max_pred_roll_idx ); } -#endif } } } @@ -789,11 +652,7 @@ void isar_splitBinPostRendMdDec_fx( Word16 pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; Word16 pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; Word16 d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word16 num_quant_strats; -#else - Word16 num_complex_bands, num_quant_strats; -#endif Word32 quant_strat_bits, is_huff_coding, quant_strat; Word16 pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; Word32 pred_1byquantstep_yaw_fx[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; // Q26 @@ -804,9 +663,7 @@ void isar_splitBinPostRendMdDec_fx( ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; ISAR_SPLIT_REND_CONFIG_DATA split_rend_config; ISAR_SPLIT_REND_ROT_AXIS rot_axis; -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word16 ro_md_flag, num_bits, axis_code; -#endif hBinHrSplitPostRend->low_Res = 1; move16(); @@ -814,7 +671,6 @@ void isar_splitBinPostRendMdDec_fx( split_rend_config.dof = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_DOF_BITS ) ); split_rend_config.hq_mode = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HQ_MODE_BITS ) ); -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS num_bits = isar_renderSplitGetRot_axisNumBits( split_rend_config.dof ); if ( num_bits > 0 ) { @@ -826,9 +682,6 @@ void isar_splitBinPostRendMdDec_fx( } rot_axis = isar_renderSplitGetRot_axisFromCode( split_rend_config.dof, axis_code ); ro_md_flag = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_RO_FLAG_BITS ); -#else - rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_ROT_AXIS_BITS ); -#endif isar_renderSplitGetMultiBinPoseData_fx( &split_rend_config, pMultiBinPoseData, rot_axis ); set_fix_rotation_mat_fx( hBinHrSplitPostRend->fix_pos_rot_mat_fx, pMultiBinPoseData ); @@ -862,7 +715,6 @@ void isar_splitBinPostRendMdDec_fx( move32(); } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS isar_split_rend_get_quant_params_fx( MAX_SPLIT_REND_MD_BANDS, pred_real_bands_yaw, @@ -876,21 +728,6 @@ void isar_splitBinPostRendMdDec_fx( pred_imag_bands_roll, ro_md_flag, &num_quant_strats ); -#else - isar_split_rend_get_quant_params_fx( - MAX_SPLIT_REND_MD_BANDS, - pred_real_bands_yaw, - pred_imag_bands_yaw, - pred_quant_pnts_yaw, - pred_quantstep_yaw_fx, - pred_1byquantstep_yaw_fx, - d_bands_yaw, - bands_pitch, - pred_real_bands_roll, - pred_imag_bands_roll, - &num_quant_strats, - &num_complex_bands ); -#endif quant_strat_bits = L_deposit_l( ceil_log_2( num_quant_strats ) ); is_huff_coding = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); quant_strat = ISAR_SPLIT_REND_BITStream_read_int32( pBits, quant_strat_bits ); diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c index 8bdc824f8..e5454e852 100644 --- a/lib_isar/isar_splitRendererPre.c +++ b/lib_isar/isar_splitRendererPre.c @@ -912,11 +912,7 @@ static void isar_split_rend_quant_md_fx( { int16_t ch1, ch2; int16_t gd_idx_min; -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word32 quant_val; -#else - Word32 sign, quant_val; -#endif #ifdef DEBUG_QUANT_MD_FX float quant_val_flt; Word16 tmp; @@ -931,7 +927,6 @@ static void isar_split_rend_quant_md_fx( #endif IF( real_only == 1 ) { -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) { hMd->pred_mat_re_fx[ch1][ch1] = hMd->pred_mat_re2[ch1]; @@ -948,25 +943,9 @@ static void isar_split_rend_quant_md_fx( hMd->pred_mat_re_idx[ch1][ch2] = (Word16) L_shr_r( Mpy_32_32( onebyquantstep, quant_val ), sub( Q_frame, 5 ) ); // Q25*Q26 = Q20 -> Q16 -> Q0 } } -#else - for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - sign = GE_32( hMd->pred_mat_re_fx[ch1][ch2], 0 ) ? 1 : -1; - Word16 exp_out; - ivas_calculate_abs_fx( hMd->pred_mat_re_fx[ch1][ch2], Q31 - Q_frame, hMd->pred_mat_im_fx[ch1][ch2], Q31 - Q_frame, &hMd->pred_mat_re_fx[ch1][ch2], &exp_out ); - hMd->pred_mat_re_fx[ch1][ch2] = L_shr_r( hMd->pred_mat_re_fx[ch1][ch2], sub( sub( Q31, Q_frame ), exp_out ) ); // Q_frame - hMd->pred_mat_re_fx[ch1][ch2] = (Word32) W_mult0_32_32( hMd->pred_mat_re_fx[ch1][ch2], sign ); - hMd->pred_mat_im_fx[ch1][ch2] = 0; - } - } -#endif } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS else { -#endif for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) { for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) @@ -986,9 +965,7 @@ static void isar_split_rend_quant_md_fx( #endif } } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS } -#endif if ( real_only == 0 ) { @@ -1067,7 +1044,6 @@ static void isar_split_rend_quant_md_fx( } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS static void get_lr_gains( Word32 cov_ii_re_fx[][BINAURAL_CHANNELS], const Word16 exp_cov_ii_re, Word32 cov_oo_re_fx[][BINAURAL_CHANNELS], @@ -1123,7 +1099,6 @@ static void get_lr_gains( Word32 cov_ii_re_fx[][BINAURAL_CHANNELS], move16(); return; } -#endif static void ComputeCoeffs_fx( Word32 cov_ii_re_fx[][BINAURAL_CHANNELS], @@ -1216,7 +1191,6 @@ static void ComputeCoeffs_fx( { IF( real_only ) { -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word32 gd_tmp_fx[BINAURAL_CHANNELS]; get_lr_gains( cov_ii_re_fx, exp_cov_ii_re, cov_oo_re_fx, exp_cov_oo_re, @@ -1237,77 +1211,12 @@ static void ComputeCoeffs_fx( } -#else - Word32 gd_tmp_fx[BINAURAL_CHANNELS]; - Word16 exp_gd_tmp_buf[BINAURAL_CHANNELS] = { 0 }; - Word16 exp_gd_tmp = 0; - - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - gd_tmp_fx[i] = cov_ii_re_fx[i][i]; - move32(); - exp_gd_tmp_buf[i] = exp_cov_ii_re; - move16(); - - Word16 flag = BASOP_Util_Cmp_Mant32Exp( gd_tmp_fx[i], exp_gd_tmp_buf[i], EPSILON_FX, 0 ); - IF( EQ_16( flag, negate( 1 ) ) ) - { - gd_tmp_fx[i] = ONE_IN_Q25; - move32(); - exp_gd_tmp_buf[i] = 6; - move16(); - } - ELSE - { - Word16 tmp, tmp_sqrt, exp_tmp = 0; - tmp = BASOP_Util_Divide3232_Scale( cov_oo_re_fx[i][i], gd_tmp_fx[i], &exp_tmp ); - exp_tmp = exp_tmp + ( exp_cov_oo_re - exp_gd_tmp_buf[i] ); - tmp_sqrt = Sqrt16( tmp, &exp_tmp ); - gd_tmp_fx[i] = L_deposit_h( tmp_sqrt ); - move32(); - exp_gd_tmp_buf[i] = exp_tmp; - move16(); - } - hMd->pred_mat_re_fx[i][i] = gd_tmp_fx[i]; - move32(); - set32_fx( hMd->pred_mat_im_fx[i], 0, BINAURAL_CHANNELS ); - } - hMd->pred_mat_re_fx[1][0] = 0; - move32(); - hMd->pred_mat_re_fx[0][1] = 0; - move32(); - - Word16 max_gd_exp = MIN16B; - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - max_gd_exp = max( max_gd_exp, exp_gd_tmp_buf[i] ); - } - exp_gd_tmp = max_gd_exp; - - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - hMd->pred_mat_re_fx[i][i] = L_shr( hMd->pred_mat_re_fx[i][i], max_gd_exp - exp_gd_tmp_buf[i] ); - move32(); - } - - exp_pred_re = exp_gd_tmp; - move16(); - exp_pred_im = exp_gd_tmp; - move16(); - - hMd->exp_pred_mat_re = exp_pred_re; - move16(); - hMd->exp_pred_mat_im = exp_pred_im; - move16(); -#endif } ELSE { -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS get_lr_gains( cov_ii_re_fx, exp_cov_ii_re, cov_oo_re_fx, exp_cov_oo_re, hMd->pred_mat_re2, &hMd->exp_pred_mat_re2 ); -#endif Word16 exp_norm_fact = 0; cov_norm_fact_fx = GetNormFact_fx( cov_ii_re_fx, exp_cov_ii_re, cov_ii_im_fx, exp_cov_ii_im, cov_io_re_fx, exp_cov_io_re, cov_io_im_fx, exp_cov_io_im, cov_oo_re_fx, exp_cov_oo_re, &exp_norm_fact ); @@ -1580,19 +1489,12 @@ static void get_base2_bits( pose_type = hBinHrSplitPreRend->pose_type[pose_idx]; IF( EQ_32( pose_type, ANY_YAW ) ) { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_real_bands_yaw[q] ), bin_ch_2_num_sf ) ); - move32(); - base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_imag_bands_yaw[q] ), bin_ch_2_num_sf ) ); - move32(); -#else base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_real_bands_yaw[q] ), bin_ch_num_sf ) ); move32(); base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_imag_bands_yaw[q] ), bin_ch_num_sf ) ); move32(); base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_yaw_bits[q], pred_imag_bands_yaw[q] ), bin_ch_2_num_sf ) ); move32(); -#endif base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( d_gain_bits, d_bands_yaw[q] ), num_subframes ) ); @@ -1607,19 +1509,12 @@ static void get_base2_bits( } ELSE { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_real_bands_roll[q] ), bin_ch_2_num_sf ) ); - move32(); - base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_imag_bands_roll[q] ), bin_ch_2_num_sf ) ); - move32(); -#else base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_real_bands_roll[q] ), bin_ch_num_sf ) ); move32(); base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_imag_bands_roll[q] ), bin_ch_num_sf ) ); move32(); base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pred_roll_bits, pred_imag_bands_roll[q] ), bin_ch_2_num_sf ) ); move32(); -#endif } } } @@ -1683,33 +1578,6 @@ static void isar_SplitRenderer_code_md_base2( { IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], ANY_YAW ) ) { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = L_sub( hMd->pred_mat_re_idx[ch1][ch2], min_pred_idx ); - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len ); - } - } - } - - FOR( b = 0; b < pred_imag_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = L_sub( hMd->pred_mat_im_idx[ch1][ch2], min_pred_idx ); - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len ); - } - } - } -#else FOR( b = 0; b < pred_imag_bands_yaw; b++ ) { hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; @@ -1740,7 +1608,6 @@ static void isar_SplitRenderer_code_md_base2( ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len ); } } -#endif FOR( b = 0; b < d_bands_yaw; b++ ) { hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; @@ -1762,33 +1629,6 @@ static void isar_SplitRenderer_code_md_base2( } ELSE { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_roll; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = L_sub( hMd->pred_mat_re_idx[ch1][ch2], min_pred_roll_idx ); - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len ); - } - } - } - - FOR( b = 0; b < pred_imag_bands_roll; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - code = L_sub( hMd->pred_mat_im_idx[ch1][ch2], min_pred_roll_idx ); - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len ); - } - } - } -#else FOR( b = 0; b < pred_imag_bands_roll; b++ ) { hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; @@ -1819,7 +1659,6 @@ static void isar_SplitRenderer_code_md_base2( ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len ); } } -#endif } } } @@ -1895,35 +1734,6 @@ static void isar_SplitRenderer_code_md_huff( { IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], ANY_YAW ) ) { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - isar_SplitRenderer_getdiagdiff( hMd->pred_mat_re_idx, sym_adj_idx, -1, min_pred_idx, max_pred_idx ); - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - isar_split_rend_huffman_encode( &pHuff_cfg->pred[pred_cb_idx], sym_adj_idx[ch1][ch2], &code, &len ); - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); - } - } - } - FOR( b = 0; b < pred_imag_bands_yaw; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - isar_SplitRenderer_getdiagdiff( hMd->pred_mat_im_idx, sym_adj_idx, 1, min_pred_idx, max_pred_idx ); - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - isar_split_rend_huffman_encode( &pHuff_cfg->pred[pred_cb_idx], sym_adj_idx[ch1][ch2], &code, &len ); - - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); - } - } - } -#else FOR( b = 0; b < pred_imag_bands_yaw; b++ ) { hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; @@ -1958,7 +1768,6 @@ static void isar_SplitRenderer_code_md_huff( ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); } } -#endif FOR( b = 0; b < d_bands_yaw; b++ ) { hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; @@ -1980,34 +1789,6 @@ static void isar_SplitRenderer_code_md_huff( } ELSE { -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - FOR( b = 0; b < pred_real_bands_roll; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - isar_SplitRenderer_getdiagdiff( hMd->pred_mat_re_idx, sym_adj_idx, -1, min_pred_roll_idx, max_pred_roll_idx ); - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - isar_split_rend_huffman_encode( &pHuff_cfg->pred_roll, sym_adj_idx[ch1][ch2], &code, &len ); - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); - } - } - } - FOR( b = 0; b < pred_imag_bands_roll; b++ ) - { - hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; - isar_SplitRenderer_getdiagdiff( hMd->pred_mat_im_idx, sym_adj_idx, 1, min_pred_roll_idx, max_pred_roll_idx ); - FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) - { - FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) - { - isar_split_rend_huffman_encode( &pHuff_cfg->pred_roll, sym_adj_idx[ch1][ch2], &code, &len ); - ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); - } - } - } -#else FOR( b = 0; b < pred_imag_bands_roll; b++ ) { hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; @@ -2041,7 +1822,6 @@ static void isar_SplitRenderer_code_md_huff( ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); } } -#endif } } } @@ -2073,17 +1853,11 @@ static void isar_SplitRenderer_quant_code( MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, ISAR_SPLIT_REND_BITS_HANDLE pBits, const Word16 low_res_pre_rend_rot, -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS const int16_t ro_md_flag, -#endif const Word32 target_md_bits, Word16 Q_frame ) { -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word16 q, num_subframes, sf_idx, pos_idx, b, num_quant_strats; -#else - Word16 num_complex_bands, q, num_subframes, sf_idx, pos_idx, b, num_quant_strats; -#endif Word32 overhead_bits, quant_strat_bits, huff_bits, start_bit; Word16 pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; Word16 pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; @@ -2097,9 +1871,7 @@ static void isar_SplitRenderer_quant_code( float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; #endif ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word16 rot_axis_code, num_bits; -#endif IF( low_res_pre_rend_rot ) { @@ -2114,16 +1886,12 @@ static void isar_SplitRenderer_quant_code( ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->dof, ISAR_SPLIT_REND_DOF_BITS ); ISAR_SPLIT_REND_BITStream_write_int32( pBits, pMultiBinPoseData->hq_mode, ISAR_SPLIT_REND_HQ_MODE_BITS ); -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS rot_axis_code = isar_renderSplitGetCodeFromRot_axis( pMultiBinPoseData->dof, pMultiBinPoseData->rot_axis, &num_bits ); if ( num_bits > 0 ) { ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) rot_axis_code, num_bits ); } ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) ro_md_flag, ISAR_SPLIT_REND_RO_FLAG_BITS ); -#else - ISAR_SPLIT_REND_BITStream_write_int32( pBits, (int32_t) pMultiBinPoseData->rot_axis, ISAR_SPLIT_REND_ROT_AXIS_BITS ); -#endif /* code ref pose*/ FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) @@ -2147,15 +1915,9 @@ static void isar_SplitRenderer_quant_code( ISAR_SPLIT_REND_BITStream_write_int32( pBits, angle, ISAR_SPLIT_REND_HEAD_POSE_BITS ); } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS isar_split_rend_get_quant_params_fx( MAX_SPLIT_REND_MD_BANDS, pred_real_bands_yaw, pred_imag_bands_yaw, pred_quant_pnts_yaw, pred_quantstep_yaw_fx, pred_1byquantstep_yaw_fx, d_bands_yaw, bands_pitch, pred_real_bands_roll, pred_imag_bands_roll, ro_md_flag, &num_quant_strats ); -#else - isar_split_rend_get_quant_params_fx( MAX_SPLIT_REND_MD_BANDS, pred_real_bands_yaw, pred_imag_bands_yaw, - pred_quant_pnts_yaw, pred_quantstep_yaw_fx, pred_1byquantstep_yaw_fx, - d_bands_yaw, bands_pitch, pred_real_bands_roll, pred_imag_bands_roll, &num_quant_strats, &num_complex_bands ); -#endif #ifdef DEBUG_QUANT_MD_FX fixedToFloat_arrL( pred_quantstep_yaw_fx, pred_quantstep_yaw, Q31, ISAR_SPLIT_REND_NUM_QUANT_STRATS ); fixedToFloat_arrL( pred_1byquantstep_yaw_fx, pred_1byquantstep_yaw, Q26, ISAR_SPLIT_REND_NUM_QUANT_STRATS ); @@ -2568,9 +2330,7 @@ void isar_rend_CldfbSplitPreRendProcess( ELSE { exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re ); -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re2 ); -#endif exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_im ); } } @@ -2600,19 +2360,13 @@ void isar_rend_CldfbSplitPreRendProcess( Scale_sig32( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_fx[i], BINAURAL_CHANNELS, sub( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re, exp_frame ) ); Scale_sig32( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_fx[i], BINAURAL_CHANNELS, sub( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_im, exp_frame ) ); } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Scale_sig32( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re2, BINAURAL_CHANNELS, sub( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re2, exp_frame ) ); -#endif } } } } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS isar_SplitRenderer_quant_code( hBinHrSplitPreRend, headPosition, pMultiBinPoseData, pBits, low_res_pre_rend_rot, ro_md_flag, target_md_bits, Q_frame ); -#else - isar_SplitRenderer_quant_code( hBinHrSplitPreRend, headPosition, pMultiBinPoseData, pBits, low_res_pre_rend_rot, target_md_bits, Q_frame ); -#endif #ifdef DEBUG_QUANT_CODE_OUT for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) { diff --git a/lib_isar/isar_splitRenderer_utils.c b/lib_isar/isar_splitRenderer_utils.c index 7f21a40c7..daa4c1806 100644 --- a/lib_isar/isar_splitRenderer_utils.c +++ b/lib_isar/isar_splitRenderer_utils.c @@ -961,40 +961,21 @@ ivas_error isar_split_rend_validate_config( ELSE { IF( EQ_16( pSplitRendConfig->dof, 1 ) ){ -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS IF( LT_32( pSplitRendConfig->splitRendBitRate, 34000 ) ){ return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "1DOF metadata needs atleast 34 kbps" ); } -#else - IF( LT_32( pSplitRendConfig->splitRendBitRate, 50000 ) ){ - return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "1DOF metadata needs atleast 50 kbps" ); - } -#endif } ELSE IF( EQ_16( pSplitRendConfig->dof, 2 ) ){ -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS IF( LT_32( pSplitRendConfig->splitRendBitRate, 50000 ) ){ return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 50 kbps" ); } -#else - IF( LT_32( pSplitRendConfig->splitRendBitRate, 66000 ) ){ - return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 66 kbps" ); -} -#endif } ELSE IF( EQ_16( pSplitRendConfig->dof, 3 ) ) { -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS IF( LT_32( pSplitRendConfig->splitRendBitRate, 82000 ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" ); } -#else - IF( LT_32( pSplitRendConfig->splitRendBitRate, 128000 ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" ); - } -#endif } } @@ -1019,25 +1000,14 @@ void isar_split_rend_get_quant_params_fx( Word16 bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], Word16 pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], Word16 pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS const Word16 ro_flag, -#endif Word16 *num_quant_strats -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - , - Word16 *num_complex_bands -#endif ) { Word16 q; *num_quant_strats = ISAR_SPLIT_REND_NUM_QUANT_STRATS; move16(); -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - *num_complex_bands = COMPLEX_MD_BAND_THRESH_LOW; - move16(); - assert( *num_complex_bands <= num_md_bands ); -#endif pred_quant_pnts_yaw[0] = ISAR_SPLIT_REND_PRED_63QUANT_PNTS; move16(); @@ -1063,24 +1033,6 @@ void isar_split_rend_get_quant_params_fx( move16(); } -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - pred_imag_bands_yaw[0] = num_md_bands; - move16(); - pred_imag_bands_roll[0] = num_md_bands; - move16(); - pred_imag_bands_yaw[1] = num_md_bands; - move16(); - pred_imag_bands_roll[1] = num_md_bands; - move16(); - - FOR( q = 2; q < *num_quant_strats; q++ ) - { - pred_imag_bands_yaw[q] = LT_16( q, sub( *num_quant_strats, 1 ) ) ? num_md_bands : *num_complex_bands; - move16(); - pred_imag_bands_roll[q] = *num_complex_bands; - move16(); - } -#else IF( ro_flag ) { FOR( q = 0; q < *num_quant_strats; q++ ) @@ -1107,7 +1059,6 @@ void isar_split_rend_get_quant_params_fx( pred_imag_bands_roll[q] = SPLIT_REND_RO_MD_BAND_THRESH; move16(); } -#endif FOR( q = 0; q < *num_quant_strats; q++ ) { @@ -1120,7 +1071,6 @@ void isar_split_rend_get_quant_params_fx( return; } -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS /*------------------------------------------------------------------------- * Function isar_renderSplitGetRot_axisNumBits() * @@ -1212,7 +1162,6 @@ Word16 isar_renderSplitGetCodeFromRot_axis( return code; } -#endif /*------------------------------------------------------------------------- * Function isar_renderSplitGetMultiBinPoseData() @@ -1287,10 +1236,6 @@ void isar_renderSplitGetMultiBinPoseData_fx( SWITCH( rot_axis ) { case DEFAULT_AXIS: -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - case YAW: - case PITCH: -#endif case YAW_PITCH: { num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; @@ -1299,9 +1244,6 @@ void isar_renderSplitGetMultiBinPoseData_fx( move16(); BREAK; } -#ifndef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS - case ROLL: -#endif case YAW_ROLL: { num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; diff --git a/lib_isar/isar_stat.h b/lib_isar/isar_stat.h index fec4a5d80..0b1e1bb07 100644 --- a/lib_isar/isar_stat.h +++ b/lib_isar/isar_stat.h @@ -115,10 +115,8 @@ typedef struct isar_binaural_head_rot_split_rendering_md_struct Word16 exp_pred_mat_re; Word32 pred_mat_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; /* Q25 */ Word16 exp_pred_mat_im; -#ifdef SPLIT_REND_POSE_CORRECTION_UNUSED_BITS Word32 pred_mat_re2[BINAURAL_CHANNELS]; Word16 exp_pred_mat_re2; -#endif Word32 gd_fx; /* Q25 */ Word32 gd2_fx; /* Q25 */ Word16 exp_gd; -- GitLab From a3804b2deab1746778f9ffabbf9e51d222ee4fcc Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:31:01 +0200 Subject: [PATCH 695/698] [cleanup] accept ISAR_BITSTREAM_UPDATE_LC3PLUS --- apps/decoder.c | 16 -- apps/isar_post_rend.c | 17 -- apps/renderer.c | 14 -- lib_com/common_api_types.h | 6 - lib_com/ivas_error.h | 2 - lib_com/options.h | 1 - lib_dec/ivas_init_dec_fx.c | 5 - lib_dec/lib_dec.h | 4 - lib_dec/lib_dec_fx.c | 14 -- lib_isar/isar_cnst.h | 2 - lib_isar/isar_lc3plus_common.c | 2 - lib_isar/isar_lc3plus_common.h | 6 - lib_isar/isar_lc3plus_dec.c | 296 ------------------------ lib_isar/isar_lc3plus_dec.h | 25 -- lib_isar/isar_lc3plus_enc.c | 113 --------- lib_isar/isar_lc3plus_enc.h | 14 -- lib_isar/isar_lc3plus_payload.c | 2 - lib_isar/isar_lc3plus_payload.h | 2 - lib_isar/isar_prot.h | 30 --- lib_isar/isar_splitRendererPre.c | 63 ----- lib_isar/isar_splitRenderer_utils.c | 146 ------------ lib_isar/lib_isar_post_rend.c | 104 --------- lib_isar/lib_isar_post_rend.h | 4 - lib_isar/lib_isar_pre_rend.c | 37 --- lib_isar/lib_isar_pre_rend.h | 6 - lib_rend/ivas_render_config_fx.c | 4 - lib_rend/lib_rend.h | 4 - lib_rend/lib_rend_fx.c | 10 - lib_util/render_config_reader.c | 2 - lib_util/split_render_file_read_write.c | 8 - lib_util/split_render_file_read_write.h | 4 - 31 files changed, 963 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index cdd5e3096..939f21aa7 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -558,11 +558,9 @@ int main( renderConfig.roomAcoustics.override = true; } #ifdef SPLIT_REND_WITH_HEAD_ROT -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* ISAR frame size is set from command line, not renderer config file. * This will be ignored if output format is not split rendering. */ renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) arg.renderFramesize /* given in number of 5ms subframes */ * 5; -#endif #endif if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK ) @@ -1670,10 +1668,8 @@ static ivas_error initOnFirstGoodFrame( ISAR_SPLIT_REND_CODEC splitRendCodec; int16_t splitRendCodecFrameSizeMs; ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t splitRendIsarFrameSizeMs; int16_t lc3plusHighRes; -#endif if ( ( error = IVAS_DEC_GetDelay( hIvasDec, delayNumSamples_temp, &delayTimeScale_temp ) ) != IVAS_ERR_OK ) { @@ -1684,14 +1680,10 @@ static ivas_error initOnFirstGoodFrame( if ( ( error = IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec, &splitRendCodec, &poseCorrection, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS &splitRendIsarFrameSizeMs, -#endif &splitRendCodecFrameSizeMs -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , &lc3plusHighRes -#endif ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); @@ -1707,12 +1699,10 @@ static ivas_error initOnFirstGoodFrame( splitRendCodec, poseCorrection, splitRendCodecFrameSizeMs -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , splitRendIsarFrameSizeMs, arg.output_Fs, lc3plusHighRes -#endif ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); @@ -1734,12 +1724,10 @@ static ivas_error initOnFirstGoodFrame( splitRendCodec, poseCorrection, splitRendCodecFrameSizeMs -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , splitRendIsarFrameSizeMs, arg.output_Fs, lc3plusHighRes -#endif ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); @@ -1776,12 +1764,8 @@ static ivas_error initOnFirstGoodFrame( splitRendBitsZero.buf_len = 0; splitRendBitsZero.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; splitRendBitsZero.pose_correction = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS splitRendBitsZero.codec_frame_size_ms = 0; splitRendBitsZero.isar_frame_size_ms = 20; -#else - splitRendBitsZero.codec_frame_size_ms = 20; -#endif if ( split_rend_write_bitstream_to_file( *splitRendWriter, splitRendBitsZero.bits_buf, &splitRendBitsZero.bits_read, &splitRendBitsZero.bits_written ) != IVAS_ERR_OK ) { diff --git a/apps/isar_post_rend.c b/apps/isar_post_rend.c index d9095054b..1e041c175 100644 --- a/apps/isar_post_rend.c +++ b/apps/isar_post_rend.c @@ -734,13 +734,9 @@ int main( bitsBuffer.config.bufLenInBytes = 0; bitsBuffer.config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; bitsBuffer.config.poseCorrection = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS bitsBuffer.config.codec_frame_size_ms = 5; bitsBuffer.config.isar_frame_size_ms = 20; bitsBuffer.config.lc3plusHighRes = 0; -#else - bitsBuffer.config.codec_frame_size_ms = 20; -#endif CmdlnArgs args = parseCmdlnArgs( argc, argv ); @@ -764,9 +760,7 @@ int main( SplitRendBFIFileReader_open( args.splitRendBFIFilePath, &splitRendBFIReader ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int32_t inFileSampleRate = 0; -#endif strncpy( audioFilePath, args.inputFilePath, FILENAME_MAX - 1 ); hSplitRendFileReadWrite = NULL; if ( ( args.inConfig.numBinBuses > 0 ) && ( args.inConfig.binBuses[0].audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) @@ -776,12 +770,10 @@ int main( &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, &bitsBuffer.config.codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , &bitsBuffer.config.isar_frame_size_ms, &inFileSampleRate, &bitsBuffer.config.lc3plusHighRes -#endif ); if ( error != IVAS_ERR_OK ) { @@ -804,12 +796,10 @@ int main( &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, &bitsBuffer.config.codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , &bitsBuffer.config.isar_frame_size_ms, &inFileSampleRate, &bitsBuffer.config.lc3plusHighRes -#endif ); if ( error != IVAS_ERR_OK ) { @@ -819,17 +809,12 @@ int main( audioReader = NULL; } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - int32_t inFileSampleRate = 0; -#endif if ( audioReader != NULL ) { error = AudioFileReader_getSamplingRate( audioReader, &inFileSampleRate ); } else -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( hSplitRendFileReadWrite == NULL ) -#endif { inFileSampleRate = args.sampleRate; } @@ -892,11 +877,9 @@ int main( bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , bitsBuffer.config.isar_frame_size_ms, bitsBuffer.config.lc3plusHighRes -#endif ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error in getting split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); diff --git a/apps/renderer.c b/apps/renderer.c index fa716c892..0d96f9dea 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -831,13 +831,9 @@ int main( bitsBuffer.config.bufLenInBytes = 0; bitsBuffer.config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; bitsBuffer.config.poseCorrection = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS bitsBuffer.config.codec_frame_size_ms = 5; bitsBuffer.config.isar_frame_size_ms = 20; bitsBuffer.config.lc3plus_highres = 0; -#else - bitsBuffer.config.codec_frame_size_ms = 20; -#endif #endif for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { @@ -1281,11 +1277,9 @@ int main( } #ifdef SPLIT_REND_WITH_HEAD_ROT -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* ISAR frame size is set from command line, not renderer config file. * This will be ignored if output format is not split rendering. */ renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) args.render_framesize /* given in number of 5ms subframes */ * 5; -#endif #endif if ( ( error = IVAS_REND_FeedRenderConfig( hIvasRend, renderConfig ) ) != IVAS_ERR_OK ) @@ -1573,10 +1567,8 @@ int main( &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, &bitsBuffer.config.codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , &bitsBuffer.config.isar_frame_size_ms -#endif ); if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK ) @@ -1592,12 +1584,10 @@ int main( bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , bitsBuffer.config.isar_frame_size_ms, args.sampleRate, bitsBuffer.config.lc3plus_highres -#endif ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Could not open split rend metadata file %s\n", args.outputFilePath ); @@ -1614,10 +1604,8 @@ int main( &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, &bitsBuffer.config.codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , &bitsBuffer.config.isar_frame_size_ms -#endif ); if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK ) @@ -1633,12 +1621,10 @@ int main( bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , bitsBuffer.config.isar_frame_size_ms, args.sampleRate, bitsBuffer.config.lc3plus_highres -#endif ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Could not open split rend metadata file %s\n", args.outMetadataFilePath ); diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index e1114a4f3..34facc703 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -276,10 +276,8 @@ typedef struct _ISAR_SPLIT_REND_BITS_DATA int16_t codec_frame_size_ms; ISAR_SPLIT_REND_CODEC codec; ISAR_SPLIT_REND_POSE_CORRECTION_MODE pose_correction; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t isar_frame_size_ms; int16_t lc3plus_highres; -#endif } ISAR_SPLIT_REND_BITS_DATA, *ISAR_SPLIT_REND_BITS_HANDLE; @@ -295,16 +293,12 @@ typedef struct _ISAR_SPLIT_REND_CONFIG 3 - (3dof correction. By default YAW, PITCH and ROLL correction) */ int16_t codec_delay_ms; /*PLACEHOLDER (currently being ignored) : look ahead delay of the codec that is used to code BIN signal output of pre-renderer*/ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t isar_frame_size_ms; /* ISAR bit stream frame size in milliseconds */ -#endif int16_t codec_frame_size_ms; /* Codec frame size in milliseconds, only relevant with LC3plus */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode; ISAR_SPLIT_REND_CODEC codec; ISAR_SPLIT_REND_RENDERER_SELECTION rendererSelection; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t lc3plus_highres; -#endif } ISAR_SPLIT_REND_CONFIG_DATA, *ISAR_SPLIT_REND_CONFIG_HANDLE; #endif diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h index 14c37a593..2f34e6709 100644 --- a/lib_com/ivas_error.h +++ b/lib_com/ivas_error.h @@ -99,10 +99,8 @@ typedef enum *----------------------------------------*/ IVAS_ERR_INVALID_BITSTREAM = 0x2000, #ifdef SPLIT_REND_WITH_HEAD_ROT -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM, IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM_CONFIG, -#endif #endif /*----------------------------------------* diff --git a/lib_com/options.h b/lib_com/options.h index 810fefcd4..e77c5a83b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -105,7 +105,6 @@ #define SPLIT_REND_WITH_HEAD_ROT /* Dlb,FhG: Split Rendering contributions 21 and 35 */ #ifdef SPLIT_REND_WITH_HEAD_ROT -#define ISAR_BITSTREAM_UPDATE_LC3PLUS /* FhG: Multiple improvements to the ISAR bitstream when LC3plus is used. See MR 1456 for details. */ #define FIX_1372_ISAR_POST_REND #endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index 6643ed423..8b0d171d5 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -255,13 +255,8 @@ static ivas_error ivas_dec_init_split_rend( move16(); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS error = ISAR_PRE_REND_open( &st_ivas->hSplitBinRend->splitrend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hDecoderConfig->output_Fs, cldfb_in_flag, pcm_out_flag, st_ivas->hDecoderConfig->render_framesize, mixed_td_cldfb_flag ); move16(); -#else - error = ISAR_PRE_REND_open( &st_ivas->hSplitBinRend->splitrend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hDecoderConfig->output_Fs, cldfb_in_flag, pcm_out_flag, (int16_t) st_ivas->hDecoderConfig->render_framesize, mixed_td_cldfb_flag ); - move16(); -#endif return error; } #endif diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index eca274491..d7a110a37 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -158,14 +158,10 @@ ivas_error IVAS_DEC_GetSplitRendBitstreamHeader( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS Word16 *pIsar_frame_size_ms, /* o: pointer to isar frame size setting */ -#endif Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , Word16 *pLc3plusHighRes /* o: pointer to LC3plus High-Res setting */ -#endif ); /*! r: decoder error code */ diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 9213b11ce..de939c5b0 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -296,10 +296,8 @@ static ivas_error isar_set_split_rend_setup( splitRendBits->codec = ISAR_SPLIT_REND_CODEC_DEFAULT; splitRendBits->pose_correction = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; splitRendBits->codec_frame_size_ms = 0; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS splitRendBits->isar_frame_size_ms = 0; splitRendBits->lc3plus_highres = 0; -#endif if ( ( hSplitBinRend->hMultiBinCldfbData = (ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA ) ) ) == NULL ) { @@ -1520,9 +1518,7 @@ IVAS_DEC_GetSplitBinauralBitstream( Quaternion, st_ivas->hRenderConfig->split_rend_config.splitRendBitRate, st_ivas->hRenderConfig->split_rend_config.codec, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS st_ivas->hRenderConfig->split_rend_config.isar_frame_size_ms, -#endif st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms, splitRendBits, Cldfb_RealBuffer_Binaural, @@ -2653,18 +2649,14 @@ static ivas_error copyRendererConfigStruct( hRCout->split_rend_config.dof = 3; hRCout->split_rend_config.hq_mode = 0; hRCout->split_rend_config.codec_delay_ms = 0; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hRCout->split_rend_config.isar_frame_size_ms = 20; move16(); -#endif hRCout->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ hRCout->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; hRCout->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; hRCout->split_rend_config.rendererSelection = hRCin->split_rend_config.rendererSelection; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hRCout->split_rend_config.lc3plus_highres = hRCin->split_rend_config.lc3plus_highres; move16(); -#endif move32(); move16(); move16(); @@ -4094,14 +4086,10 @@ IVAS_DEC_GetSplitRendBitstreamHeader( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS Word16 *pIsar_frame_size_ms, /* o: pointer to isar frame size setting */ -#endif Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , Word16 *pLc3plusHighRes -#endif ) { if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) @@ -4112,10 +4100,8 @@ IVAS_DEC_GetSplitRendBitstreamHeader( *pCodec = hIvasDec->st_ivas->hRenderConfig->split_rend_config.codec; *pCodec_frame_size_ms = hIvasDec->st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms; *poseCorrection = hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS *pIsar_frame_size_ms = hIvasDec->st_ivas->hRenderConfig->split_rend_config.isar_frame_size_ms; *pLc3plusHighRes = hIvasDec->st_ivas->hRenderConfig->split_rend_config.lc3plus_highres; -#endif return IVAS_ERR_OK; } diff --git a/lib_isar/isar_cnst.h b/lib_isar/isar_cnst.h index 7eae62357..ad6bf483a 100644 --- a/lib_isar/isar_cnst.h +++ b/lib_isar/isar_cnst.h @@ -136,9 +136,7 @@ typedef enum #define ISAR_SPLIT_REND_ROT_AXIS_BITS 3 #define ISAR_SPLIT_REND_RO_FLAG_BITS 1 -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS #define IVAS_LC3PLUS_MAX_NUM_DECODERS 2 -#endif /*----------------------------------------------------------------------------------* * Split rendering bitrate constants *----------------------------------------------------------------------------------*/ diff --git a/lib_isar/isar_lc3plus_common.c b/lib_isar/isar_lc3plus_common.c index 2e5a31cb6..6a4ef18ed 100644 --- a/lib_isar/isar_lc3plus_common.c +++ b/lib_isar/isar_lc3plus_common.c @@ -57,7 +57,6 @@ ivas_error ISAR_LC3PLUS_LC3plusErrToIvasErr( return IVAS_ERR_INTERNAL; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtpError ) { switch ( lc3PlusRtpError ) @@ -86,4 +85,3 @@ ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtp return IVAS_ERR_UNKNOWN; } #endif -#endif diff --git a/lib_isar/isar_lc3plus_common.h b/lib_isar/isar_lc3plus_common.h index 570609442..6042e8859 100644 --- a/lib_isar/isar_lc3plus_common.h +++ b/lib_isar/isar_lc3plus_common.h @@ -39,9 +39,7 @@ #include "ivas_error.h" #ifdef SPLIT_REND_WITH_HEAD_ROT #include "lc3.h" -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS #include "isar_lc3plus_payload.h" -#endif /*! common configuration parameters between encoder and decoder */ typedef struct LC3PLUS_CONFIG @@ -54,19 +52,15 @@ typedef struct LC3PLUS_CONFIG int32_t samplerate; /*! number of channels */ int16_t channels; -#if defined ISAR_BITSTREAM_UPDATE_LC3PLUS || defined ISAR_BITSTREAM_UPDATE_LC3PLUS /*! high resolution mode enabled (1) or disabled (0)*/ int16_t high_res_mode_enabled; -#endif } LC3PLUS_CONFIG; /*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */ ivas_error ISAR_LC3PLUS_LC3plusErrToIvasErr( const LC3PLUS_Error lc3PlusError ); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */ ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtpError ); -#endif #endif /* SPLIT_REND_WITH_HEAD_ROT */ #endif /* ISAR_LC3PLUS_COM_H */ diff --git a/lib_isar/isar_lc3plus_dec.c b/lib_isar/isar_lc3plus_dec.c index fd1adb157..5a82dc13c 100644 --- a/lib_isar/isar_lc3plus_dec.c +++ b/lib_isar/isar_lc3plus_dec.c @@ -42,26 +42,6 @@ #ifdef SPLIT_REND_WITH_HEAD_ROT -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -/*------------------------------------------------------------------------- - * isar_LC3PLUS_AllocateSubframeDecodingMatrix() - * - * - *------------------------------------------------------------------------*/ - -static void isar_LC3PLUS_DEC_FreeSubframeDecodingMatrix( - int16_t **subframeChannelMatrix ) -{ - for ( int16_t i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) - { - free( subframeChannelMatrix[i] ); - } - - free( subframeChannelMatrix ); - - return; -} -#endif /*------------------------------------------------------------------------- @@ -78,37 +58,22 @@ ivas_error ISAR_LC3PLUS_DEC_Open( LC3PLUS_Error err; int32_t decoder_size; Word32 scratch_size; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t i; if ( 0 == config.lc3plus_frame_duration_us ) { return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid lc3plus_frame_duration_us (0)\n" ); } -#else - int16_t lc3plusFrameIdx; - int16_t numLC3plusFramesPerIvasFrame; - int16_t i; -#endif if ( ( *handle = malloc( sizeof( struct ISAR_LC3PLUS_DEC_HANDLE ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( config.channels > IVAS_LC3PLUS_MAX_NUM_DECODERS ) { return IVAS_ERROR( IVAS_ERR_INIT_ERROR, "Maximum number of channels exceeds IVAS_LC3PLUS_MAX_NUM_DECODERS\n" ); } -#else - - if ( 0 == config.lc3plus_frame_duration_us ) - { - return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid lc3plus_frame_duration_us (0)\n" ); - } - numLC3plusFramesPerIvasFrame = (int16_t) ( config.isar_frame_duration_us / config.lc3plus_frame_duration_us ); -#endif ( *handle )->num_decs = 0; @@ -168,11 +133,7 @@ ivas_error ISAR_LC3PLUS_DEC_Open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS err = lc3plus_dec_init( ( *handle )->handles[iCh], config.samplerate, 1, LC3PLUS_PLC_ADVANCED, config.high_res_mode_enabled ); -#else - err = lc3plus_dec_init( ( *handle )->handles[iCh], config.samplerate, 1, LC3PLUS_PLC_ADVANCED, 0 ); -#endif if ( LC3PLUS_OK != err ) { ISAR_LC3PLUS_DEC_Close( handle ); @@ -193,24 +154,10 @@ ivas_error ISAR_LC3PLUS_DEC_Open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - if ( ( ( *handle )->selective_decoding_states[iCh]->frame_actions = malloc( numLC3plusFramesPerIvasFrame * sizeof( SelectiveDecAction ) ) ) == NULL ) - { - ISAR_LC3PLUS_DEC_Close( handle ); - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); - } -#endif ( *handle )->selective_decoding_states[iCh]->has_skipped_a_frame = 0; ( *handle )->selective_decoding_states[iCh]->shall_decode_cached_frame = 0; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ( *handle )->selective_decoding_states[iCh]->frame_action = DEC_ACTION_DECODE_AND_USE; -#else - for ( lc3plusFrameIdx = 0; lc3plusFrameIdx < numLC3plusFramesPerIvasFrame; lc3plusFrameIdx++ ) - { - ( *handle )->selective_decoding_states[iCh]->frame_actions[lc3plusFrameIdx] = DEC_ACTION_DECODE_AND_USE; - } -#endif /* allocate and configure per LC3plus decoder bitstream cache */ if ( ( ( *handle )->bitstream_caches[iCh] = malloc( sizeof( ISAR_LC3PLUS_DEC_BITSTREAM_CACHE ) ) ) == NULL ) @@ -218,11 +165,7 @@ ivas_error ISAR_LC3PLUS_DEC_Open( ISAR_LC3PLUS_DEC_Close( handle ); return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity = 400 /*LC3plus max non-HR octet count*/; -#else - ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity = 400 /*LC3plus max non-HR octet count*/ * numLC3plusFramesPerIvasFrame; -#endif if ( ( ( *handle )->bitstream_caches[iCh]->bitstream_cache = malloc( ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity ) ) == NULL ) { ISAR_LC3PLUS_DEC_Close( handle ); @@ -254,155 +197,6 @@ ivas_error ISAR_LC3PLUS_DEC_Open( return IVAS_ERR_OK; } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -/*------------------------------------------------------------------------- - * ISAR_LC3PLUS_DEC_AllocateSubframeDecodingMatrix() - * - * - *------------------------------------------------------------------------*/ - -ivas_error ISAR_LC3PLUS_DEC_AllocateSubframeDecodingMatrix( - int16_t ***subframeChannelMatrix, - const uint32_t num_decs ) -{ - int16_t i; - - if ( ( *subframeChannelMatrix = malloc( MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( int16_t * ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "subframeChannelMatrix allocation failed\n" ); - } - - for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) - { - ( *subframeChannelMatrix )[i] = NULL; - } - - for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) - { - if ( ( ( *subframeChannelMatrix )[i] = malloc( num_decs * sizeof( int16_t ) ) ) == NULL ) - { - isar_LC3PLUS_DEC_FreeSubframeDecodingMatrix( *subframeChannelMatrix ); - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "subframeChannelMatrix allocation failed\n" ); - } - } - - return IVAS_ERR_OK; -} - - -/*------------------------------------------------------------------------- - * ISAR_LC3PLUS_DEC_SetSelectiveDecodingMatrix() - * - * - *------------------------------------------------------------------------*/ - -ivas_error ISAR_LC3PLUS_DEC_SetSelectiveDecodingMatrix( - ISAR_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder handle */ - int16_t *subframeChannelMatrix[MAX_PARAM_SPATIAL_SUBFRAMES] ) -{ - int16_t numIvasSubFramesPerLC3frame; - uint32_t decIdx; - int16_t ivasSubframeIdx; - int16_t effectiveIsarSubframeDuration; - int16_t actual_num_spatial_subframes; - - if ( NULL == handle ) - { - return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "ISAR_LC3PLUS_DEC_HANDLE is NULL\n" ); - } - - if ( NULL == subframeChannelMatrix ) - { - return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "subframeChannelMatrix is NULL\n" ); - } - - if ( handle->config.lc3plus_frame_duration_us == 0 || handle->config.isar_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 ) - { - return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "invalid isar_frame_duration_us/lc3plus_frame_duration_us values\n" ); - } - - effectiveIsarSubframeDuration = (int16_t) ( handle->config.isar_frame_duration_us == 20000 ? handle->config.isar_frame_duration_us / MAX_PARAM_SPATIAL_SUBFRAMES : handle->config.isar_frame_duration_us ); - numIvasSubFramesPerLC3frame = (int16_t) handle->config.lc3plus_frame_duration_us / effectiveIsarSubframeDuration; - actual_num_spatial_subframes = (int16_t) handle->config.isar_frame_duration_us / effectiveIsarSubframeDuration; - /* 0.5(0) = 10ms lc3plus, 5ms subframe */ - if ( numIvasSubFramesPerLC3frame != 1 ) - { - return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "Selective decoding is only implemented for aligned IVAS-Subframes & LC3plus \n" ); - } - - /* map subframeChannelMatrix to lc3plus skip states */ - /* 1st pass: Flag the required frames */ - for ( decIdx = 0; decIdx < handle->num_decs; decIdx++ ) - { - for ( ivasSubframeIdx = 0; ivasSubframeIdx < actual_num_spatial_subframes; ivasSubframeIdx++ ) - { - if ( 1 == subframeChannelMatrix[ivasSubframeIdx][decIdx] ) - { - /* subframe needed by the user, definitely decode */ - handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] = DEC_ACTION_DECODE_AND_USE; - } - else - { - - /* subframe not needed by the user, but might be required to re-initialize a decoder after inactivity */ - if ( - ( ivasSubframeIdx != actual_num_spatial_subframes - 1 ) && 1 == subframeChannelMatrix[ivasSubframeIdx + 1][decIdx] ) - { - /* ... but if the following subframe is required, it needs to be decoded and dropped */ - handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] = DEC_ACTION_DECODE_AND_DROP; - } - else - { - handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] = DEC_ACTION_SKIP; - } - } - } - } - - /* if a decoder was paused before, it needs to either: - * - Decode the cached frame (if available) and the first required frame OR - * - Decode the previous LC3plus subframe, even if it isn't needed by the user */ - for ( decIdx = 0; decIdx < handle->num_decs; decIdx++ ) - { - if ( handle->selective_decoding_states[decIdx]->has_skipped_a_frame ) - { - /* find the first frame required by the user */ - for ( ivasSubframeIdx = 0; ivasSubframeIdx < actual_num_spatial_subframes; ivasSubframeIdx++ ) - { - if ( DEC_ACTION_DECODE_AND_USE == handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] ) - { - /* The first required frame is the first subframe. To flush the decoder, the cached frame must be decoded and dropped */ - if ( 0 == ivasSubframeIdx ) - { - handle->selective_decoding_states[decIdx]->shall_decode_cached_frame = 1; - break; - } - /* The first required frame is not the first frame, so the cache is useless. Instead we decode & drop the previous frame*/ - else - { - handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx - 1] = DEC_ACTION_DECODE_AND_DROP; - break; - } - } - } - } - } - - /* if a dec gets paused & caching is activated we need to flag the last useful LC3plus frame for caching */ - for ( decIdx = 0; decIdx < handle->num_decs; decIdx++ ) - { - for ( ivasSubframeIdx = 0; ivasSubframeIdx < actual_num_spatial_subframes; ivasSubframeIdx++ ) - { - if ( handle->selective_decoding_states[decIdx]->frame_actions[ivasSubframeIdx] == DEC_ACTION_SKIP && handle->selective_decoding_states[decIdx]->frame_actions[actual_num_spatial_subframes - 1] != DEC_ACTION_DECODE_AND_USE ) - { - handle->selective_decoding_states[decIdx]->frame_actions[actual_num_spatial_subframes - 1] = DEC_ACTION_CACHE; - } - } - } - - return IVAS_ERR_OK; -} -#endif /*------------------------------------------------------------------------- @@ -472,9 +266,6 @@ void ISAR_LC3PLUS_DEC_Close( if ( NULL != ( *handle )->selective_decoding_states && NULL != ( *handle )->selective_decoding_states[iDec] ) { -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - free( ( *handle )->selective_decoding_states[iDec]->frame_actions ); -#endif free( ( *handle )->selective_decoding_states[iDec] ); } @@ -559,17 +350,10 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal( ) { uint32_t iDec; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int32_t config_num_media_times; int32_t iMediaTime; int32_t iFtd; LC3PLUS_RTP_PAYLOAD payload; -#else - int32_t iLc3plusFrame; - int32_t lc3framesPerIvasFrame; - int32_t bitstreamOffsetPerCoder; - uint8_t *bitstream_in_iter = bitstream_in; -#endif int32_t ivasSampleIndex; int16_t numSamplesPerLC3plusChannel; ivas_error err; @@ -600,7 +384,6 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal( return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "isar_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS config_num_media_times = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; if ( !badFrameIndicator ) { @@ -629,25 +412,13 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal( return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "LC3plus config change (number of media times per frame data block) in bitstream is not supported\n" ); } } -#endif -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS numSamplesPerLC3plusChannel = (int16_t) ( handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / config_num_media_times ); for ( iDec = 0; iDec < handle->num_decs; iDec++ ) { for ( iMediaTime = 0; iMediaTime < config_num_media_times; iMediaTime++ ) { iFtd = iDec + iMediaTime * handle->num_decs; -#else - lc3framesPerIvasFrame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; - - numSamplesPerLC3plusChannel = (int16_t) ( handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / lc3framesPerIvasFrame ); - bitstreamOffsetPerCoder = bitstream_in_size / handle->num_decs / lc3framesPerIvasFrame; - for ( iDec = 0; iDec < handle->num_decs; iDec++ ) - { - for ( iLc3plusFrame = 0; iLc3plusFrame < lc3framesPerIvasFrame; iLc3plusFrame++ ) - { -#endif if ( handle->selective_decoding_states[iDec]->shall_decode_cached_frame ) { if ( 0 == handle->bitstream_caches[iDec]->bitstream_cache_size ) @@ -670,27 +441,10 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal( handle->bitstream_caches[iDec]->bitstream_cache_size = 0; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS switch ( handle->selective_decoding_states[iDec]->frame_action ) -#else - switch ( handle->selective_decoding_states[iDec]->frame_actions[iLc3plusFrame] ) -#endif { -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - case DEC_ACTION_DECODE_AND_DROP: - { - err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], bitstream_in_iter, bitstreamOffsetPerCoder, &handle->pcm_conversion_buffer, badFrameIndicator, handle->scratch ); - if ( err != IVAS_ERR_OK ) - { - return IVAS_ERROR( err, "lc3plus decoding failed\n" ); - } - handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; - break; - } -#endif case DEC_ACTION_DECODE_AND_USE: { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( badFrameIndicator ) { err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], bitstream_in, bitstream_in_size, &handle->pcm_conversion_buffer, badFrameIndicator, handle->scratch ); @@ -717,33 +471,9 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal( } handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; break; -#else - err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], bitstream_in_iter, bitstreamOffsetPerCoder, &handle->pcm_conversion_buffer, badFrameIndicator ); - if ( err != IVAS_ERR_OK ) - { - return IVAS_ERROR( err, "lc3plus decoding failed\n" ); - } - - for ( int32_t iSampleInt16 = 0; iSampleInt16 < numSamplesPerLC3plusChannel; iSampleInt16++ ) - { - ivasSampleIndex = iSampleInt16 + iLc3plusFrame * numSamplesPerLC3plusChannel; - pcm_out[iDec][ivasSampleIndex] = handle->pcm_conversion_buffer[iSampleInt16]; - } - handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; - break; -#endif - } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - case DEC_ACTION_SKIP: - { - /* log that this instance has skipped a frame and must decode twice once reactivated */ - handle->selective_decoding_states[iDec]->has_skipped_a_frame = 1; - break; } -#endif case DEC_ACTION_CACHE: { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( handle->bitstream_caches[iDec]->bitstream_cache_capacity < (int32_t) payload.ftds[iFtd].frame_data_length ) { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "bitstream_cache_capacity is too low for LC3plus frame size\n" ); @@ -754,41 +484,15 @@ static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal( /* log that this instance has skipped a frame and must decode twice once reactivated */ handle->selective_decoding_states[iDec]->has_skipped_a_frame = 1; break; -#else - if ( handle->bitstream_caches[iDec]->bitstream_cache_capacity < bitstreamOffsetPerCoder ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "bitstream_cache_capacity is too low for LC3plus frame size\n" ); - } - /* store bit rate of cached frame */ - mvc2c( bitstream_in_iter, handle->bitstream_caches[iDec]->bitstream_cache, (int16_t) bitstreamOffsetPerCoder ); - handle->bitstream_caches[iDec]->bitstream_cache_size = bitstreamOffsetPerCoder; - /* log that this instance has skipped a frame and must decode twice once reactivated */ - handle->selective_decoding_states[iDec]->has_skipped_a_frame = 1; - break; -#endif } case DEC_ACTION_NUM_ENUMS: default: return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid LC3plus decoder state\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS } /* for each media time */ /* reset skipping state, must be set by the user before each decode call*/ handle->selective_decoding_states[iDec]->frame_action = DEC_ACTION_DECODE_AND_USE; } /* for each dec/channel */ -#else - - bitstream_in_iter += bitstreamOffsetPerCoder; - } - - /* reset skipping state, must be set by the user before each decode call*/ - for ( iLc3plusFrame = 0; iLc3plusFrame < lc3framesPerIvasFrame; iLc3plusFrame++ ) - { - handle->selective_decoding_states[iDec]->frame_actions[iLc3plusFrame] = DEC_ACTION_DECODE_AND_USE; - } - } - -#endif return IVAS_ERR_OK; } diff --git a/lib_isar/isar_lc3plus_dec.h b/lib_isar/isar_lc3plus_dec.h index 5e297a407..f946a6402 100644 --- a/lib_isar/isar_lc3plus_dec.h +++ b/lib_isar/isar_lc3plus_dec.h @@ -44,13 +44,7 @@ typedef enum { -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - DEC_ACTION_DECODE_AND_DROP = 0, -#endif DEC_ACTION_DECODE_AND_USE, -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - DEC_ACTION_SKIP, -#endif DEC_ACTION_CACHE, DEC_ACTION_NUM_ENUMS } SelectiveDecAction; @@ -60,13 +54,8 @@ typedef struct ISAR_LC3PLUS_DEC_SELECTIVE_DECODING_STATE { /*! indicates that the decoder has skipped one or more frames. This means it must decode two frames to flush algorithmic delay when re-activated */ int16_t has_skipped_a_frame; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /*! action to execute for the next frame */ SelectiveDecAction frame_action; -#else - /*! if set to 1, decoder will skip decoding for the next frame */ - SelectiveDecAction *frame_actions; -#endif /*! if set to 1, decoder will decode the cache before decoding any of current frames */ int16_t shall_decode_cached_frame; } ISAR_LC3PLUS_DEC_SELECTIVE_DECODING_STATE; @@ -104,13 +93,6 @@ void ISAR_LC3PLUS_DEC_Close( ISAR_LC3PLUS_DEC_HANDLE *handle /* i/o: pointer to decoder handle */ ); -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -/*! Sets a matrix[MAX_PARAM_SPATIAL_SUBFRAMES][numLC3plusDecoders] where all require subframes must be flagged with 1, frames that are not required with 0 */ -ivas_error ISAR_LC3PLUS_DEC_SetSelectiveDecodingMatrix( - ISAR_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ - int16_t *subframeChannelMatrix[MAX_PARAM_SPATIAL_SUBFRAMES] /* i : */ -); -#endif ivas_error ISAR_LC3PLUS_DEC_Decode( ISAR_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ @@ -124,13 +106,6 @@ ivas_error ISAR_LC3PLUS_DEC_Conceal( Word32 **pcm_out /* o : decoded samples */ ); -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -ivas_error ISAR_LC3PLUS_DEC_AllocateSubframeDecodingMatrix( - int16_t ***subframeChannelMatrix, - const uint32_t num_decs ); - -void isar_LC3PLUS_DEC_FreeSubframeDecodingMatrix( int16_t **subframeChannelMatrix ); -#endif #endif /* SPLIT_REND_WITH_HEAD_ROT */ #endif /* ISAR_LC3PLUS_DEC_H */ diff --git a/lib_isar/isar_lc3plus_enc.c b/lib_isar/isar_lc3plus_enc.c index 08ec7c0a8..1de448423 100644 --- a/lib_isar/isar_lc3plus_enc.c +++ b/lib_isar/isar_lc3plus_enc.c @@ -38,11 +38,8 @@ #include "wmc_auto.h" #include "options.h" -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS static const LC3PLUS_RTP_FDL s_fdl_request = LC3PLUS_RTP_FDL_NO_REQ_OR_NO_DATA; -#endif -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS static int32_t limit_per_channel_bitrate( LC3PLUS_CONFIG config, int32_t per_channel_bitrate ) { @@ -79,7 +76,6 @@ static int32_t limit_per_channel_bitrate( LC3PLUS_CONFIG config, assert( false && "unreachable" ); return -1; } -#endif #ifdef SPLIT_REND_WITH_HEAD_ROT /*-------------------------------------------------------------------* @@ -93,19 +89,9 @@ ivas_error ISAR_LC3PLUS_ENC_Open( ISAR_LC3PLUS_ENC_HANDLE *handle /* o : encoder handle */ ) { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int32_t num_lc3plus_media_times_per_ivas_frame; -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - int32_t lc3plus_num_bytes_per_frame; -#endif bool is_last_media_time, is_last_channel; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_error ivas_err; -#endif -#endif -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - int32_t bitsPerSecondPerChannel; -#endif Word32 scratch_size; int32_t encoder_size; LC3PLUS_Error err; @@ -118,10 +104,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open( { return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid number of channels\n" ); } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - bitsPerSecondPerChannel = bitsPerSecond / config.channels; -#endif -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( config.lc3plus_frame_duration_us != 2500 && config.lc3plus_frame_duration_us != 5000 && config.lc3plus_frame_duration_us != 10000 ) { return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid lc3plus_frame_duration_us\n" ); @@ -130,7 +112,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open( { return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid isar_frame_duration_us\n" ); } -#endif encoder_size = lc3plus_enc_get_size( config.samplerate, 1 ); if ( 0 == encoder_size ) { @@ -141,10 +122,8 @@ ivas_error ISAR_LC3PLUS_ENC_Open( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ( *handle )->config = config; ( *handle )->frame_type_descriptors = NULL; -#endif ( *handle )->pcm_conversion_buffer = NULL; ( *handle )->scratch = NULL; @@ -160,7 +139,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open( ( *handle )->handles[i] = NULL; } ( *handle )->num_encs = config.channels; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS num_lc3plus_media_times_per_ivas_frame = config.isar_frame_duration_us / config.lc3plus_frame_duration_us; ( *handle )->fdl_request = s_fdl_request; ( *handle )->num_ftds = config.channels * num_lc3plus_media_times_per_ivas_frame; @@ -170,7 +148,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open( ISAR_LC3PLUS_ENC_Close( handle ); return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus frame_type_descriptors\n" ); } -#endif for ( int32_t iCh = 0; iCh < config.channels; iCh++ ) { @@ -180,11 +157,7 @@ ivas_error ISAR_LC3PLUS_ENC_Open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS err = lc3plus_enc_init( ( *handle )->handles[iCh], config.samplerate, 1, config.high_res_mode_enabled, lfeChans ); -#else - err = lc3plus_enc_init( ( *handle )->handles[iCh], config.samplerate, 1, 0, lfeChans ); -#endif if ( err != LC3PLUS_OK ) { ISAR_LC3PLUS_ENC_Close( handle ); @@ -197,14 +170,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open( ISAR_LC3PLUS_ENC_Close( handle ); return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_frame_dms failed\n" ); } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - err = lc3plus_enc_set_bitrate( ( *handle )->handles[iCh], bitsPerSecondPerChannel ); - if ( err != LC3PLUS_OK ) - { - ISAR_LC3PLUS_ENC_Close( handle ); - return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_bitrate failed\n" ); - } -#endif } if ( config.isar_frame_duration_us < config.lc3plus_frame_duration_us || config.isar_frame_duration_us % config.lc3plus_frame_duration_us != 0 ) @@ -213,9 +178,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open( return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "Current pcm_conversion_buffer sizing requires that lc3plus uses a shorter or equal frame duration than ivas\n" ); } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - ( *handle )->config = config; -#endif ( *handle )->pcm_conversion_buffer = malloc( sizeof( int16_t ) * config.samplerate * config.lc3plus_frame_duration_us / 1000000 ); if ( NULL == ( *handle )->pcm_conversion_buffer ) { @@ -223,24 +185,13 @@ ivas_error ISAR_LC3PLUS_ENC_Open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder wrapper pcm_conversion_buffer\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* update FDI fields */ for ( int32_t iMediaTime = 0; iMediaTime < num_lc3plus_media_times_per_ivas_frame; ++iMediaTime ) { for ( uint32_t iEnc = 0; iEnc < ( *handle )->num_encs; ++iEnc ) { int32_t ftd_index = iEnc + iMediaTime * ( *handle )->num_encs; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ( *handle )->frame_type_descriptors[ftd_index].frame_data_length = 0; /* will be set to the correct value in IVAS_LC3PLUS_ENC_SetBitrate */ -#else - lc3plus_num_bytes_per_frame = lc3plus_enc_get_num_bytes( ( *handle )->handles[iEnc] ); - if ( lc3plus_num_bytes_per_frame <= 0 ) - { - ISAR_LC3PLUS_ENC_Close( handle ); - return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc_get_num_bytes reported invalid result failed\n" ); - } - ( *handle )->frame_type_descriptors[ftd_index].frame_data_length = lc3plus_num_bytes_per_frame; -#endif if ( 0 != LC3PLUS_RTP_ftd_bwr_from_samplerate( &( *handle )->frame_type_descriptors[ftd_index].bwr, config.samplerate, config.high_res_mode_enabled ) ) { ISAR_LC3PLUS_ENC_Close( handle ); @@ -277,15 +228,12 @@ ivas_error ISAR_LC3PLUS_ENC_Open( } } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_err = IVAS_LC3PLUS_ENC_SetBitrate( *handle, bitsPerSecond ); if ( ivas_err != IVAS_ERR_OK ) { ISAR_LC3PLUS_ENC_Close( handle ); return ivas_err; } -#endif -#endif scratch_size = lc3plus_enc_get_scratch_size( ( *handle )->handles[0] ); ( *handle )->scratch = malloc( sizeof( uint8_t ) * scratch_size ); IF( NULL == ( *handle )->scratch ) @@ -297,7 +245,6 @@ ivas_error ISAR_LC3PLUS_ENC_Open( return IVAS_ERR_OK; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /*-------------------------------------------------------------------* * Function IVAS_LC3PLUS_ENC_SetBitrate() * @@ -340,12 +287,10 @@ ivas_error IVAS_LC3PLUS_ENC_SetBitrate( } minPayloadOverhead = fdrLength + ( numSubframes * LC3PLUS_RTP_FTD_MIN_SIZE ); targetLc3PlusBitratePerChannel = ( availableOctetsPerIsarFrame - minPayloadOverhead ) / handle->config.channels * 8 * lc3plusPacketRate / numLc3plusMediaTimesPerIvasFrame; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( targetLc3PlusBitratePerChannel <= 0 ) { return IVAS_ERROR( IVAS_ERR_LC3PLUS_INVALID_BITRATE, "available LC3plus bitrate <= 0\n" ); } -#endif targetLc3PlusBitratePerChannel = limit_per_channel_bitrate( handle->config, targetLc3PlusBitratePerChannel ); targetLc3PlusOctetCount = targetLc3PlusBitratePerChannel / 8 / lc3plusPacketRate; /* check resulting octet count. If it requires larger than 1-byte length fields, decrease the bitrate by enough to make room for the additional length field */ @@ -394,7 +339,6 @@ ivas_error IVAS_LC3PLUS_ENC_SetBitrate( } return IVAS_ERR_OK; } -#endif /*-------------------------------------------------------------------* @@ -451,15 +395,11 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( Word32 *bsSize /* o : size of each bitstream frame in bytes */ ) { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS LC3PLUS_RTP_ERR rtp_err; int32_t num_lc3plus_media_times_per_ivas_frame; int32_t iMediaTime; int32_t ftd_frame_data_length_size, lc3plus_frame_data_length; int32_t ftd_index; -#else - int32_t bitstreamSizeMultiplier; -#endif if ( NULL == handle ) { return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); @@ -469,7 +409,6 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bsSize is NULL\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( 0 == handle->config.lc3plus_frame_duration_us ) { return IVAS_ERROR( IVAS_ERR_INIT_ERROR, "lc3plus_frame_duration_us is 0\n" ); @@ -480,9 +419,7 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( } num_lc3plus_media_times_per_ivas_frame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; -#endif *bsSize = 0; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int32_t fdl_request_length; rtp_err = LC3PLUS_RTP_frame_data_length_get_size( &fdl_request_length, handle->fdl_request ); if ( rtp_err != LC3PLUS_RTP_ERR_NO_ERROR ) @@ -490,14 +427,12 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid LC3plus frame_data_length request\n" ); } *bsSize += fdl_request_length; -#endif for ( uint32_t iEnc = 0; iEnc < handle->num_encs; iEnc++ ) { if ( NULL == handle->handles[iEnc] ) { return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3plus encoder handle is NULL\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS lc3plus_frame_data_length = lc3plus_enc_get_num_bytes( handle->handles[iEnc] ); for ( iMediaTime = 0; iMediaTime < num_lc3plus_media_times_per_ivas_frame; ++iMediaTime ) { @@ -516,18 +451,6 @@ ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( *bsSize += ftd_frame_data_length_size; } } -#else - *bsSize += lc3plus_enc_get_num_bytes( handle->handles[iEnc] ); - } - - if ( handle->config.isar_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 ) - { - return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "isar_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" ); - } - bitstreamSizeMultiplier = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; - - *bsSize *= bitstreamSizeMultiplier; -#endif return IVAS_ERR_OK; } @@ -547,12 +470,10 @@ void ISAR_LC3PLUS_ENC_Close( { return; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( NULL != ( *handle )->frame_type_descriptors ) { free( ( *handle )->frame_type_descriptors ); } -#endif for ( uint32_t iEnc = 0; iEnc < ( *handle )->num_encs; iEnc++ ) { if ( NULL != ( *handle )->handles[iEnc] ) @@ -587,22 +508,13 @@ void ISAR_LC3PLUS_ENC_Close( ivas_error ISAR_LC3PLUS_ENC_Encode( ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ Word32 **pcm_in, /* i : pointer input samples */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS void *bitstream_out, /* o : pointer to bitstream frame */ const Word32 bitstream_out_size, /* i : size of the bitstream_out buffer in bytes. Must be equal to ISAR_LC3PLUS_ENC_GetOutputBitstreamSize. */ -#else - void *bitstream_out /* o : pointer to bitstream frame */ -#endif Word16 q_in[16] ) { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int32_t ftdIndex; LC3PLUS_RTP_ERR rtpErr; uint32_t num_media_times; -#else - uint32_t lc3framesPerIvasFrame; - uint8_t *bitstream_out_iter = bitstream_out; -#endif uint32_t numSamplesPerLC3plusChannel; int32_t ivasSampleIndex; int32_t num_bytes = 0; @@ -627,7 +539,6 @@ ivas_error ISAR_LC3PLUS_ENC_Encode( { return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "isar_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS num_media_times = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; numSamplesPerLC3plusChannel = handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / num_media_times; @@ -637,39 +548,20 @@ ivas_error ISAR_LC3PLUS_ENC_Encode( { return IVAS_ERROR( IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( rtpErr ), "LC3PLUS_RTP_payload_serialize failed\n" ); } -#else - lc3framesPerIvasFrame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; - - numSamplesPerLC3plusChannel = handle->config.samplerate / ( 1000000 / handle->config.isar_frame_duration_us ) / lc3framesPerIvasFrame; -#endif for ( uint32_t iEnc = 0; iEnc < handle->num_encs; iEnc++ ) { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS for ( uint32_t iMediaTime = 0; iMediaTime < num_media_times; iMediaTime++ ) -#else - for ( uint32_t iLc3plusFrame = 0; iLc3plusFrame < lc3framesPerIvasFrame; iLc3plusFrame++ ) -#endif { for ( uint32_t iSampleInt16 = 0; iSampleInt16 < numSamplesPerLC3plusChannel; iSampleInt16++ ) { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivasSampleIndex = iSampleInt16 + iMediaTime * numSamplesPerLC3plusChannel; -#else - ivasSampleIndex = iSampleInt16 + iLc3plusFrame * numSamplesPerLC3plusChannel; -#endif handle->pcm_conversion_buffer[iSampleInt16] = (Word16) max( INT16_MIN, min( L_shr( pcm_in[iEnc][ivasSampleIndex], q_in[iEnc] ), INT16_MAX ) ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ftdIndex = iMediaTime * handle->num_encs + iEnc; -#endif num_bytes = 0; push_wmops( "lc3plus_enc16" ); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS err = lc3plus_enc16( handle->handles[iEnc], &handle->pcm_conversion_buffer, handle->frame_type_descriptors[ftdIndex].frame_data, &num_bytes, handle->scratch ); -#else - err = lc3plus_enc16( handle->handles[iEnc], &handle->pcm_conversion_buffer, bitstream_out_iter, &num_bytes, NULL ); -#endif pop_wmops(); if ( err != LC3PLUS_OK ) { @@ -679,15 +571,10 @@ ivas_error ISAR_LC3PLUS_ENC_Encode( { return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc16 did not produce output\n" ); } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( num_bytes != (int32_t) handle->frame_type_descriptors[ftdIndex].frame_data_length ) { return IVAS_ERROR( IVAS_ERR_INTERNAL, "payload format and lc3plus enc bitrate are not aligned\n" ); } -#else - - bitstream_out_iter += num_bytes; -#endif } } diff --git a/lib_isar/isar_lc3plus_enc.h b/lib_isar/isar_lc3plus_enc.h index 6d0f47030..5487f712c 100644 --- a/lib_isar/isar_lc3plus_enc.h +++ b/lib_isar/isar_lc3plus_enc.h @@ -39,9 +39,7 @@ #include "lc3.h" #include "isar_lc3plus_common.h" #include "typedef.h" -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS #include "isar_lc3plus_payload.h" -#endif /* encoder wrapper */ typedef struct ISAR_LC3PLUS_ENC_HANDLE @@ -50,30 +48,22 @@ typedef struct ISAR_LC3PLUS_ENC_HANDLE LC3PLUS_Enc **handles; uint32_t num_encs; int16_t *pcm_conversion_buffer; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS LC3PLUS_RTP_FTD *frame_type_descriptors; int32_t num_ftds; LC3PLUS_RTP_FDL fdl_request; -#endif uint8_t *scratch; } * ISAR_LC3PLUS_ENC_HANDLE; ivas_error ISAR_LC3PLUS_ENC_Open( const LC3PLUS_CONFIG config, /* i : encoder configuration */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const uint32_t initialBitsPerSecond, /* i : initial target bit rate */ -#else - const uint32_t bitsPerSecond, /* i : bit rate */ -#endif ISAR_LC3PLUS_ENC_HANDLE *handle /* o : LC3plus encoder handle */ ); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_error IVAS_LC3PLUS_ENC_SetBitrate( ISAR_LC3PLUS_ENC_HANDLE handle, /* o : LC3plus encoder handle */ const uint32_t bitsPerSecond /* i : new target bit rate */ ); -#endif ivas_error ISAR_LC3PLUS_ENC_GetDelay( ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ @@ -92,12 +82,8 @@ void ISAR_LC3PLUS_ENC_Close( ivas_error ISAR_LC3PLUS_ENC_Encode( ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ Word32 **pcm_in, /* i : pointer input samples */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS void *bitstream_out, /* o : pointer to bitstream frame */ const Word32 bitstream_out_size, /* i : size of the bitstream_out buffer in bytes. Must be equal to ISAR_LC3PLUS_ENC_GetOutputBitstreamSize. */ -#else - void *bitstream_out /* o : pointer to bitstream frame */ -#endif Word16 q_in[16] ); #endif diff --git a/lib_isar/isar_lc3plus_payload.c b/lib_isar/isar_lc3plus_payload.c index cd053978d..54895c78b 100644 --- a/lib_isar/isar_lc3plus_payload.c +++ b/lib_isar/isar_lc3plus_payload.c @@ -37,7 +37,6 @@ #include "options.h" #ifdef SPLIT_REND_WITH_HEAD_ROT -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS static LC3PLUS_RTP_ERR s_frame_duration_ms_from_fdi( int32_t *frame_duration_us, const LC3PLUS_RTP_FTD_FDI fdi ) { if ( NULL == frame_duration_us ) @@ -819,5 +818,4 @@ LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_fdi_from_frame_duration_us( LC3PLUS_RTP_FTD_FDI return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; } -#endif /* ISAR_BITSTREAM_UPDATE_LC3PLUS */ #endif /* SPLIT_REND_WITH_HEAD_ROT */ diff --git a/lib_isar/isar_lc3plus_payload.h b/lib_isar/isar_lc3plus_payload.h index c225c9159..0eadc96a8 100644 --- a/lib_isar/isar_lc3plus_payload.h +++ b/lib_isar/isar_lc3plus_payload.h @@ -39,7 +39,6 @@ #include "options.h" #ifdef SPLIT_REND_WITH_HEAD_ROT -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* Implementation of the "B.2.6 Table of contents" part of the RTP payload format * for LC3plus as specified in ETSI TS 103 634. */ @@ -211,6 +210,5 @@ LC3PLUS_RTP_ERR LC3PLUS_RTP_payload_deserialize( uint8_t *serialized_buffer, const size_t serialized_buffer_size ); -#endif /* ISAR_BITSTREAM_UPDATE_LC3PLUS */ #endif /* #ifdef SPLIT_REND_WITH_HEAD_ROT */ #endif /* ISAR_LC3PLUS_PAYLOAD_H */ diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h index b97b81bbc..6860dda91 100644 --- a/lib_isar/isar_prot.h +++ b/lib_isar/isar_prot.h @@ -321,12 +321,6 @@ void isar_set_split_rend_ht_setup_fx( Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ); -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -Word32 isar_get_lc3plus_bitrate( - const Word32 SplitRendBitRate, - const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode, - const Word16 split_prerender_frame_size_ms ); -#endif ivas_error isar_split_rend_validate_config( const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, @@ -336,37 +330,25 @@ Word32 isar_get_lcld_bitrate( const Word32 SplitRendBitRate, const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode ); -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -Word8 isar_get_lc3plus_bitrate_id( - const Word32 SplitRendBitRate ); -#endif ivas_error splitRendLc3plusEncodeAndWrite( SPLIT_REND_WRAPPER *hSplitBin, ISAR_SPLIT_REND_BITS_HANDLE pBits, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const int32_t available_bits, -#else - const int32_t SplitRendBitRate, -#endif Word32 *in[], Word16 Q_sig ); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_error isar_framesize_to_ms( const IVAS_RENDER_FRAMESIZE frame_size, /* i : frame size enum */ Word16 *ms /* o : frame size in ms */ ); -#endif Word32 isar_get_split_rend_md_target_brate( const Word32 SplitRendBitRate, const Word16 pcm_out_flag ); ivas_error isar_split_rend_choose_default_codec( ISAR_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS Word16 *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */ -#endif Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */ const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */ const Word16 pcm_out_flag, /* i : flag to indicate PCM output */ @@ -385,12 +367,6 @@ Word16 wrap_a( Word16 val, const Word16 min_val, const Word16 max_val ); -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -Word32 isar_get_lc3plus_size_from_id( - const Word8 SplitRendBitRateId, - const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode, - const Word16 split_prerender_frame_size_ms ); -#endif void isar_renderSplitUpdateNoCorrectionPoseData( const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, @@ -404,11 +380,7 @@ ivas_error split_renderer_open_lc3plus( SPLIT_REND_WRAPPER *hSplitRendWrapper, const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, const Word32 OutSampleRate, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const IVAS_RENDER_FRAMESIZE ivas_frame_size -#else - const int16_t num_subframes -#endif ); ISAR_POST_REND_AudioConfigType isar_getAudioConfigType( @@ -421,9 +393,7 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( SPLIT_REND_WRAPPER *hSplitBin, const IVAS_QUATERNION headPosition, const Word32 SplitRendBitRate, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const Word16 isar_frame_size_ms, -#endif const Word16 codec_frame_size_ms, ISAR_SPLIT_REND_BITS_HANDLE pBits, const Word16 max_bands, diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c index e5454e852..9b4e470cf 100644 --- a/lib_isar/isar_splitRendererPre.c +++ b/lib_isar/isar_splitRendererPre.c @@ -2679,51 +2679,32 @@ ivas_error split_renderer_open_lc3plus( SPLIT_REND_WRAPPER *hSplitRendWrapper, const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, const Word32 OutSampleRate, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const IVAS_RENDER_FRAMESIZE isar_frame_size -#else - const int16_t num_subframes -#endif ) { ivas_error error; Word16 i, delayBufferLength; LC3PLUS_CONFIG config; -#if defined ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t isar_frame_size_ms; if ( ( error = isar_framesize_to_ms( isar_frame_size, &isar_frame_size_ms ) ) != IVAS_ERR_OK ) { return error; } -#endif -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* Check configuration validity */ if ( isar_frame_size_ms < pSplitRendConfig->codec_frame_size_ms ) { return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "SR codec frame doesn't fit in one output frame" ); } -#endif config.lc3plus_frame_duration_us = pSplitRendConfig->codec_frame_size_ms * 1000; -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - config.ivas_frame_duration_us = ( pSplitRendConfig->dof == 0 ) ? config.lc3plus_frame_duration_us * num_subframes : 20000; -#endif config.samplerate = OutSampleRate; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS config.isar_frame_duration_us = isar_frame_size_ms * 1000; -#endif -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS config.high_res_mode_enabled = ( pSplitRendConfig->lc3plus_highres != 0 ); -#endif config.channels = BINAURAL_CHANNELS; if ( ( error = ISAR_LC3PLUS_ENC_Open( config, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode ), -#else - isar_get_lc3plus_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode, (int16_t) ( config.isar_frame_duration_us / 1000 ) ), -#endif &hSplitRendWrapper->hLc3plusEnc ) ) != IVAS_ERR_OK ) { return error; @@ -2781,13 +2762,7 @@ ivas_error split_renderer_open_lc3plus( ivas_error splitRendLc3plusEncodeAndWrite( SPLIT_REND_WRAPPER *hSplitBin, ISAR_SPLIT_REND_BITS_HANDLE pBits, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const int32_t available_bits, -#endif -#else - const int32_t SplitRendBitRate, -#endif Word32 *in[], Word16 Q_sig ) { @@ -2809,29 +2784,20 @@ ivas_error splitRendLc3plusEncodeAndWrite( channel_ptrs[i] = in[i]; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( ( error = IVAS_LC3PLUS_ENC_SetBitrate( hSplitBin->hLc3plusEnc, available_bits * FRAMES_PER_SEC ) ) != IVAS_ERR_OK ) { return error; } -#endif if ( ( error = ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( hSplitBin->hLc3plusEnc, &lc3plusBitstreamSize ) ) != IVAS_ERR_OK ) { return error; } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - ISAR_SPLIT_REND_BITStream_write_int32( pBits, isar_get_lc3plus_bitrate_id( SplitRendBitRate ), 8 ); -#endif /* Write bitstream */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS set16_fx( Q_in, Q_sig, 16 ); move16(); if ( ( error = ISAR_LC3PLUS_ENC_Encode( hSplitBin->hLc3plusEnc, channel_ptrs, &pBits->bits_buf[pBits->bits_written / 8], lc3plusBitstreamSize, Q_in ) ) != IVAS_ERR_OK ) -#else - if ( ( error = ISAR_LC3PLUS_ENC_Encode( hSplitBin->hLc3plusEnc, channel_ptrs, &pBits->bits_buf[pBits->bits_written / 8] ) ) != IVAS_ERR_OK ) -#endif { return error; } @@ -2840,9 +2806,7 @@ ivas_error splitRendLc3plusEncodeAndWrite( pBits->codec = ISAR_SPLIT_REND_CODEC_LC3PLUS; pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; pBits->codec_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.lc3plus_frame_duration_us / 1000 ); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS pBits->isar_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.isar_frame_duration_us / 1000 ); -#endif return IVAS_ERR_OK; } @@ -2856,9 +2820,7 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( SPLIT_REND_WRAPPER *hSplitBin, const IVAS_QUATERNION headPosition, const Word32 SplitRendBitRate, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const int16_t isar_frame_size_ms, -#endif const Word16 codec_frame_size_ms, ISAR_SPLIT_REND_BITS_HANDLE pBits, const Word16 max_bands, @@ -2870,11 +2832,7 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( const Word16 ro_md_flag ) { ivas_error error; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int32_t bit_len, available_bits, target_md_bits, tmp_32; -#else - Word32 bit_len, available_bits, target_md_bits, actual_md_bits, tmp_32; -#endif Word16 num_cldfb_bands, ch, slot_idx, pos_idx, num_poses; Word16 tmp, tmp_e; Word32 Cldfb_In_BinReal_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] = { 0 }; @@ -2920,10 +2878,6 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( } } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - actual_md_bits = pBits->bits_written; - move32(); -#endif test(); test(); @@ -2997,9 +2951,6 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( tmp_32 = BASOP_Util_Divide3232_Scale_cadence( target_md_bits, 48000, &tmp_e ); target_md_bits = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0 -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - actual_md_bits = pBits->bits_written; -#endif /*scaling to max Q*/ Word16 scale_factor = 31; move32(); @@ -3037,34 +2988,20 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( tmp_e = 0; tmp_32 = BASOP_Util_Divide3232_Scale_cadence( available_bits, L_mult0( 16, FRAMES_PER_SEC ), &tmp_e ); available_bits = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0 -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS available_bits = L_sub( available_bits, pBits->bits_written ); -#else - actual_md_bits = L_sub( pBits->bits_written, actual_md_bits ); - available_bits = L_sub( available_bits, actual_md_bits ); -#endif pBits->codec_frame_size_ms = codec_frame_size_ms; move16(); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS pBits->isar_frame_size_ms = isar_frame_size_ms; move16(); -#endif isar_splitBinLCLDEncProcess( hSplitBin->hSplitBinLCLDEnc, Cldfb_In_BinReal_fx, Cldfb_In_BinImag_fx, available_bits, pBits, &q_final ); } ELSE { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written; IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, available_bits, in_fx, Q_in ) ) != IVAS_ERR_OK ) { return error; } -#else - IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, SplitRendBitRate, in_flt ) ) != IVAS_ERR_OK ) - { - return error; - } -#endif } } ELSE diff --git a/lib_isar/isar_splitRenderer_utils.c b/lib_isar/isar_splitRenderer_utils.c index daa4c1806..e8866f421 100644 --- a/lib_isar/isar_splitRenderer_utils.c +++ b/lib_isar/isar_splitRenderer_utils.c @@ -738,135 +738,6 @@ Word32 isar_get_lcld_bitrate( return -1; } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS -/*------------------------------------------------------------------------- - * Function isar_get_lc3plus_bitrate() - * - * - *------------------------------------------------------------------------*/ - -Word32 isar_get_lc3plus_bitrate( - const Word32 SplitRendBitRate, - ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode, - const Word16 split_prerender_frame_size_ms ) -{ - IF( EQ_32( poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) - { - Word32 inBandMdBps = (Word32) ( 8 * 1000 / split_prerender_frame_size_ms ); - return L_sub( isar_get_lcld_bitrate( SplitRendBitRate, poseCorrectionMode ), inBandMdBps ); - } - - IF( EQ_32( poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) - { - return SplitRendBitRate; - } - - /* Should not be reached */ - assert( 0 ); - return -1; -} - - -/*------------------------------------------------------------------------- - * Function isar_get_lc3plus_bitrate_id() - * - * - *------------------------------------------------------------------------*/ - -Word8 isar_get_lc3plus_bitrate_id( - const Word32 SplitRendBitRate ) -{ - SWITCH( SplitRendBitRate ) - { - case SPLIT_REND_768k: - { - return 4; - } - case SPLIT_REND_512k: - { - return 3; - } - case SPLIT_REND_384k: - { - return 2; - } - case SPLIT_REND_320k: - { - return 1; - } - case SPLIT_REND_256k: - { - return 0; - } - default: - { - BREAK; - } - } - - return -1; -} - - -/*------------------------------------------------------------------------- - * Function ivas_mat_mult_2by2_complex() - * - * - *------------------------------------------------------------------------*/ - -Word32 isar_get_lc3plus_size_from_id( - const Word8 SplitRendBitRateId, - const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode, - const Word16 split_prerender_frame_size_ms ) -{ - Word32 bitrate; - - SWITCH( SplitRendBitRateId ) - { - case 4: - { - bitrate = SPLIT_REND_768k; - move32(); - BREAK; - } - case 3: - { - bitrate = SPLIT_REND_512k; - move32(); - BREAK; - } - case 2: - { - bitrate = SPLIT_REND_384k; - move32(); - BREAK; - } - case 1: - { - bitrate = SPLIT_REND_320k; - move32(); - BREAK; - } - case 0: - { - bitrate = SPLIT_REND_256k; - move32(); - BREAK; - } - default: - { - bitrate = -1; - move32(); - BREAK; - } - } - - bitrate = isar_get_lc3plus_bitrate( bitrate, poseCorrectionMode, split_prerender_frame_size_ms ); - - /* Return size in bytes */ - return (Word32) ( bitrate * split_prerender_frame_size_ms / 1000 / 8 ); -} -#endif /*------------------------------------------------------------------------- * Function isar_split_rend_validate_config() @@ -940,20 +811,9 @@ ivas_error isar_split_rend_validate_config( BREAK; case SPLIT_REND_384k: case SPLIT_REND_512k: -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS case SPLIT_REND_768k: -#endif /* Always valid */ BREAK; -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - case SPLIT_REND_768k: - test(); - IF( EQ_16( pSplitRendConfig->dof, 0 ) && EQ_32( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Bitrate is too high for LC3plus with 0 DOF" ); - } - BREAK; -#endif default: return IVAS_ERR_LC3PLUS_INVALID_BITRATE; } @@ -1408,7 +1268,6 @@ void isar_init_multi_bin_pose_data_fx_enc( return; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_error isar_framesize_to_ms( const IVAS_RENDER_FRAMESIZE frame_size, /* i : frame size enum */ int16_t *ms /* o : frame size in ms */ @@ -1431,7 +1290,6 @@ ivas_error isar_framesize_to_ms( return IVAS_ERR_OK; } -#endif /*------------------------------------------------------------------------- * Function isar_split_rend_choose_default_codec() @@ -1441,9 +1299,7 @@ ivas_error isar_framesize_to_ms( ivas_error isar_split_rend_choose_default_codec( ISAR_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */ -#endif Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */ const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */ const Word16 pcm_out_flag, /* i : flag to indicate PCM output */ @@ -1480,12 +1336,10 @@ ivas_error isar_split_rend_choose_default_codec( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Unknown split codec value" ); } } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS IF( *pIsar_frame_size_ms == 0 ) /* isar frame size hasn't been set yet - use default for current configuration */ { *pIsar_frame_size_ms = 20; } -#endif return IVAS_ERR_OK; } diff --git a/lib_isar/lib_isar_post_rend.c b/lib_isar/lib_isar_post_rend.c index 82c01004e..30f24b2b2 100644 --- a/lib_isar/lib_isar_post_rend.c +++ b/lib_isar/lib_isar_post_rend.c @@ -81,18 +81,9 @@ typedef struct { const int32_t *pOutSampleRate; const AUDIO_CONFIG *pOutConfig; -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - const LSSETUP_CUSTOM_STRUCT *pCustomLsOut; - const EFAP_WRAPPER *pEfapOutWrapper; -#endif const ISAR_POST_REND_HeadRotData *pHeadRotData; -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - const RENDER_CONFIG_HANDLE *hhRendererConfig; -#endif const int16_t *pSplitRendBFI; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRenderConfig; -#endif } rendering_context; /* Common base for input structs */ @@ -215,10 +206,8 @@ static void convertBitsBufferToInternalBitsBuff( hBits->codec = outBits.config.codec; hBits->pose_correction = outBits.config.poseCorrection; hBits->codec_frame_size_ms = outBits.config.codec_frame_size_ms; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hBits->isar_frame_size_ms = outBits.config.isar_frame_size_ms; hBits->lc3plus_highres = outBits.config.lc3plusHighRes; -#endif return; } @@ -234,10 +223,8 @@ static void convertInternalBitsBuffToBitsBuffer( hOutBits->config.codec = bits.codec; hOutBits->config.poseCorrection = bits.pose_correction; hOutBits->config.codec_frame_size_ms = bits.codec_frame_size_ms; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hOutBits->config.isar_frame_size_ms = bits.isar_frame_size_ms; hOutBits->config.lc3plusHighRes = bits.lc3plus_highres; -#endif return; } @@ -463,9 +450,7 @@ static rendering_context getRendCtx( ctx.pOutSampleRate = &hIvasRend->sampleRateOut; ctx.pHeadRotData = &hIvasRend->headRotData; ctx.pSplitRendBFI = &hIvasRend->splitRendBFI; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ctx.pSplitRenderConfig = &hIvasRend->splitRenderConfig; -#endif return ctx; } @@ -488,10 +473,6 @@ static ivas_error updateSplitPostRendPanGains( input_split_post_rend *inputSplitPostRend, const AUDIO_CONFIG outConfig, ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - , - int16_t num_subframes -#endif ) { ivas_error error; @@ -504,30 +485,9 @@ static ivas_error updateSplitPostRendPanGains( rendCtx = inputSplitPostRend->base.ctx; isar_renderSplitGetMultiBinPoseData_fx( hRendCfg, &inputSplitPostRend->splitPostRendWrapper.multiBinPoseData, rendCtx.pHeadRotData->sr_pose_pred_axis ); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS config.high_res_mode_enabled = ( hRendCfg->lc3plus_highres != 0 ); -#endif config.lc3plus_frame_duration_us = hRendCfg->codec_frame_size_ms * 1000; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS config.isar_frame_duration_us = hRendCfg->isar_frame_size_ms * 1000; -#else - IF( NE_16( num_subframes, MAX_PARAM_SPATIAL_SUBFRAMES ) ) - { - IF( hRendCfg->codec == ISAR_SPLIT_REND_CODEC_LC3PLUS ) - { - config.ivas_frame_duration_us = ( hRendCfg->poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ? config.lc3plus_frame_duration_us * num_subframes : 20000; - } - ELSE - { - config.ivas_frame_duration_us = ( hRendCfg->poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ? config.lc3plus_frame_duration_us : 20000; - } - iNumLCLDIterationsPerFrame = 1; - } - ELSE - { - config.ivas_frame_duration_us = 20000; - } -#endif IF( GT_16( hRendCfg->codec_frame_size_ms, 0 ) ) { @@ -573,10 +533,6 @@ static ivas_error setRendInputActiveSplitPostRend( const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - , - const int16_t num_subframes -#endif ) { ivas_error error; @@ -598,10 +554,6 @@ static ivas_error setRendInputActiveSplitPostRend( inputSplitPostRend->numCachedSamples = 0; if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - , - num_subframes -#endif ) ) != IVAS_ERR_OK ) { return error; @@ -929,10 +881,6 @@ ivas_error ISAR_POST_REND_AddInput( void *inputsArray; Word32 inputStructSize; ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, ISAR_SPLIT_REND_CONFIG_DATA * -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - , - int16_t -#endif ); Word32 inputIndex; @@ -962,10 +910,6 @@ ivas_error ISAR_POST_REND_AddInput( *inputId = makeInputId( inConfig, inputIndex ); if ( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, &hIvasRend->splitRenderConfig -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - , - hIvasRend->num_subframes -#endif ) ) != IVAS_ERR_OK ) { return error; @@ -1159,9 +1103,7 @@ ivas_error ISAR_POST_REND_InitConfig( hIvasRend->splitRenderConfig.hq_mode = 0; hIvasRend->splitRenderConfig.codec_delay_ms = 0; hIvasRend->splitRenderConfig.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hIvasRend->splitRenderConfig.isar_frame_size_ms = 0; /* 0 means "use default for selected codec" */ -#endif hIvasRend->splitRenderConfig.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; hIvasRend->splitRenderConfig.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; hIvasRend->splitRenderConfig.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT; @@ -1194,9 +1136,7 @@ Word16 ISAR_POST_REND_GetRenderConfig( splitRenderConfig->hq_mode = 0; splitRenderConfig->codec_delay_ms = 0; splitRenderConfig->codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS splitRenderConfig->isar_frame_size_ms = 0; /* 0 means "use default for selected codec" */ -#endif splitRenderConfig->codec = ISAR_SPLIT_REND_CODEC_DEFAULT; splitRenderConfig->poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; splitRenderConfig->rendererSelection = hRCin.rendererSelection; @@ -1310,18 +1250,11 @@ static ivas_error splitBinLc3plusDecode( ISAR_SPLIT_POST_REND_WRAPPER *hSplitBin, ISAR_SPLIT_REND_BITS_HANDLE bits, Word32 outputBuffer[BINAURAL_CHANNELS][L_FRAME48k], -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - ISAR_SPLIT_REND_POSE_CORRECTION_MODE pose_correction, -#endif const int16_t SplitRendBFI ) { ivas_error error; Word32 *channel_ptrs[MAX_HEAD_ROT_POSES * 2]; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS Word32 lc3plusBitstreamSize; -#else - Word32 lc3plusBitrateId, lc3plusBitstreamSize; -#endif push_wmops( "splitBinLc3plusDecode" ); assert( hSplitBin->hLc3plusDec != NULL ); @@ -1338,15 +1271,9 @@ static ivas_error splitBinLc3plusDecode( { ++bits->bits_read; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* Size is in bytes */ assert( ( bits->bits_written - bits->bits_read ) % 8 == 0 ); lc3plusBitstreamSize = ( bits->bits_written - bits->bits_read ) / 8; -#else - /* Read LC3plus bitstream size info */ - lc3plusBitrateId = ISAR_SPLIT_REND_BITStream_read_int32( bits, 8 ); - lc3plusBitstreamSize = isar_get_lc3plus_size_from_id( (Word8) lc3plusBitrateId, pose_correction, (Word16) ( hSplitBin->hLc3plusDec->config.ivas_frame_duration_us / 1000 ) ); -#endif if ( ( error = ISAR_LC3PLUS_DEC_Decode( hSplitBin->hLc3plusDec, &bits->bits_buf[bits->bits_read / 8], lc3plusBitstreamSize, channel_ptrs ) ) != IVAS_ERR_OK ) { @@ -1394,9 +1321,6 @@ static ivas_error renderSplitBinauralWithPostRot( Word16 Q_cldfb_final[MAX_PARAM_SPATIAL_SUBFRAMES] = { 0 }; Word16 Q_out[MAX_PARAM_SPATIAL_SUBFRAMES][BINAURAL_CHANNELS] = { 0 }; -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - uint32_t ivas_frame_duration_us; -#endif Word16 iNumBlocksPerFrame, iNumLCLDIterationsPerFrame; const ISAR_POST_REND_HeadRotData *pHeadRotData; @@ -1404,24 +1328,15 @@ static ivas_error renderSplitBinauralWithPostRot( push_wmops( "renderSplitBinauralWithPostRot" ); error = IVAS_ERR_OK; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS if ( outAudio.config.numSamplesPerChannel / *splitBinInput->base.ctx.pOutSampleRate > splitBinInput->hBits->config.isar_frame_size_ms ) { return IVAS_ERR_INTERNAL_FATAL; } -#endif pHeadRotData = splitBinInput->base.ctx.pHeadRotData; hSplitBin = &splitBinInput->splitPostRendWrapper; convertBitsBufferToInternalBitsBuff( *splitBinInput->hBits, &bits ); -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - ivas_frame_duration_us = 20000; - if ( splitBinInput->splitPostRendWrapper.hLc3plusDec != NULL ) - { - ivas_frame_duration_us = splitBinInput->splitPostRendWrapper.hLc3plusDec->config.isar_frame_duration_us; - } -#endif iNumLCLDIterationsPerFrame = 1; iNumBlocksPerFrame = CLDFB_NO_COL_MAX; @@ -1466,13 +1381,7 @@ static ivas_error renderSplitBinauralWithPostRot( { isPostRendInputCldfb = 1; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS numSamplesPerChannelCacheSize = (int16_t) ( *splitBinInput->base.ctx.pOutSampleRate * bits.isar_frame_size_ms / 1000 ) - outBufNumSamplesPerChannel; -#else - preRendFrameSize_ms = (int16_t) ( ivas_frame_duration_us ) / 1000; - - numSamplesPerChannelCacheSize = (int16_t) ( *splitBinInput->base.ctx.pOutSampleRate * ( preRendFrameSize_ms - bits.codec_frame_size_ms ) / 1000 ); -#endif outBufNumColPerChannel = MAX_PARAM_SPATIAL_SUBFRAMES; numColPerChannelCacheSize = sub( DEPR_i_mult( iNumBlocksPerFrame, iNumLCLDIterationsPerFrame ), outBufNumColPerChannel ); @@ -1519,9 +1428,6 @@ static ivas_error renderSplitBinauralWithPostRot( Q_out[sf_idx][0] = 0; Q_out[sf_idx][1] = 0; if ( ( error = splitBinLc3plusDecode( hSplitBin, &bits, tmpCrendBuffer_fx, -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - bits.pose_correction, -#endif SplitRendBFI ) ) != IVAS_ERR_OK ) // Q0 { return error; @@ -1579,11 +1485,7 @@ static ivas_error renderSplitBinauralWithPostRot( copyBufferTo2dArray_fx( splitBinInput->base.inputBuffer, tmpCrendBuffer_fx ); IF( splitBinInput->numCachedSamples == 0 ) { -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS preRendFrameSize_ms = splitBinInput->base.ctx.pSplitRenderConfig->isar_frame_size_ms; -#else - preRendFrameSize_ms = (int16_t) ( ivas_frame_duration_us ) / 1000; -#endif numSamplesPerChannelCacheSize = (Word16) ( *splitBinInput->base.ctx.pOutSampleRate * preRendFrameSize_ms / 1000 ); numSamplesPerChannelCacheSize -= outAudio.config.numSamplesPerChannel; splitBinInput->numCachedSamples = numSamplesPerChannelCacheSize; @@ -1877,11 +1779,9 @@ ivas_error ISAR_REND_SetSplitRendBitstreamHeader( const ISAR_SPLIT_REND_CODEC codec, /* o: codec setting */ const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, /* o: pose correction mode */ const int16_t codec_frame_size_ms /* i: codec frame size setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , const int16_t isar_frame_size_ms, /* i: isar codec frame size setting */ const int16_t lc3plus_highres /* i: LC3plus Hig-Res setting. Ignored if codec is not LC3plus */ -#endif ) { IF( hIvasRend == NULL ) @@ -1889,14 +1789,10 @@ ivas_error ISAR_REND_SetSplitRendBitstreamHeader( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } hIvasRend->splitRenderConfig.codec = codec; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hIvasRend->splitRenderConfig.isar_frame_size_ms = isar_frame_size_ms; -#endif hIvasRend->splitRenderConfig.codec_frame_size_ms = codec_frame_size_ms; hIvasRend->splitRenderConfig.poseCorrectionMode = poseCorrection; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hIvasRend->splitRenderConfig.lc3plus_highres = lc3plus_highres; -#endif return IVAS_ERR_OK; } diff --git a/lib_isar/lib_isar_post_rend.h b/lib_isar/lib_isar_post_rend.h index ef437eaa3..b919bb1d2 100644 --- a/lib_isar/lib_isar_post_rend.h +++ b/lib_isar/lib_isar_post_rend.h @@ -61,10 +61,8 @@ typedef struct ISAR_SPLIT_REND_CODEC codec; ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection; int16_t codec_frame_size_ms; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int16_t isar_frame_size_ms; int16_t lc3plusHighRes; -#endif } ISAR_POST_REND_BitstreamBufferConfig; typedef struct @@ -200,11 +198,9 @@ ivas_error ISAR_REND_SetSplitRendBitstreamHeader( const ISAR_SPLIT_REND_CODEC codec, /* o: codec setting */ const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, /* o: pose correction mode */ const int16_t codec_frame_size_ms /* i: codec frame size setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , const int16_t isar_frame_size_ms, /* i: isar frame size setting */ const int16_t lc3plus_highres /* i: LC3plus Hig-Res setting. Ignored if codec is not LC3plus */ -#endif ); diff --git a/lib_isar/lib_isar_pre_rend.c b/lib_isar/lib_isar_pre_rend.c index fa3462fdc..55a306a40 100644 --- a/lib_isar/lib_isar_pre_rend.c +++ b/lib_isar/lib_isar_pre_rend.c @@ -83,11 +83,7 @@ ivas_error ISAR_PRE_REND_open( const Word32 OutSampleRate, const Word16 cldfb_in_flag, const Word16 pcm_out_flag, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const IVAS_RENDER_FRAMESIZE ivas_frame_size, /* i: IVAS frame size */ -#else - const int16_t num_subframes, /* i: number of subframes */ -#endif const int16_t mixed_td_cldfb_flag ) { ivas_error error, ch, num_ch; @@ -95,17 +91,11 @@ ivas_error ISAR_PRE_REND_open( Word16 cldfb_in_flag_local = cldfb_in_flag; if ( ( error = isar_split_rend_choose_default_codec( &( pSplitRendConfig->codec ), -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS &pSplitRendConfig->isar_frame_size_ms, -#endif &pSplitRendConfig->codec_frame_size_ms, cldfb_in_flag_local, pcm_out_flag, (int16_t) -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_frame_size -#else - num_subframes -#endif ) ) != IVAS_ERR_OK ) { return error; @@ -192,11 +182,7 @@ ivas_error ISAR_PRE_REND_open( IF( EQ_16( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) ) { if ( ( error = split_renderer_open_lc3plus( hSplitRendWrapper, pSplitRendConfig, OutSampleRate, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ivas_frame_size -#else - num_subframes -#endif ) ) != IVAS_ERR_OK ) { return error; @@ -323,9 +309,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( const IVAS_QUATERNION headPosition, const Word32 SplitRendBitRate, ISAR_SPLIT_REND_CODEC splitCodec, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const Word16 isar_frame_size_ms, /* i: ISAR framesize */ -#endif Word16 codec_frame_size_ms, ISAR_SPLIT_REND_BITS_HANDLE pBits, Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], @@ -340,11 +324,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( Word16 *Q_out ) { ivas_error error; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS int32_t bit_len, target_md_bits, available_bits, tmp_32; -#else - Word32 bit_len, target_md_bits, actual_md_bits, available_bits, tmp_32; -#endif Word16 q1 = 31, q2 = 31, q_final, Q_cldfb, tmp, tmp_e; Word16 i, j; error = IVAS_ERR_OK; @@ -369,9 +349,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( IF( EQ_16( cldfb_in_flag, 0 ) ) { error = isar_renderMultiTDBinToSplitBinaural( hSplitBin, headPosition, SplitRendBitRate, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS isar_frame_size_ms, -#endif codec_frame_size_ms, pBits, max_bands, pOutput_fx, Q_out[0], low_res_pre_rend_rot, pcm_out_flag, ro_md_flag ); Q_out[1] = Q_out[0]; @@ -390,16 +368,10 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( move16(); } -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - actual_md_bits = pBits->bits_written; -#endif IF( hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) { target_md_bits = isar_get_split_rend_md_target_brate( SplitRendBitRate, pcm_out_flag ) * L_FRAME48k / 48000; -#ifndef ISAR_BITSTREAM_UPDATE_LC3PLUS - actual_md_bits = pBits->bits_written; -#endif /*float2fix, to be removed*/ Word16 Q_Cldfb_re = 31, Q_Cldfb_im = 31; move16(); @@ -439,12 +411,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( tmp_e = 0; tmp_32 = BASOP_Util_Divide3232_Scale_cadence( available_bits, L_mult0( 16, FRAMES_PER_SEC ), &tmp_e ); available_bits = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0 -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS available_bits = L_sub( available_bits, pBits->bits_written ); -#else - actual_md_bits = L_sub( pBits->bits_written, actual_md_bits ); - available_bits = L_sub( available_bits, actual_md_bits ); -#endif pBits->codec_frame_size_ms = codec_frame_size_ms; q_final = sub( s_min( Q_buff_re, Q_buff_im ), 2 ); FOR( i = 0; i < hSplitBin->hSplitBinLCLDEnc->iChannels; i++ ) @@ -532,12 +499,8 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( } assert( Q_out[0] == Q_out[1] ); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written; IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, available_bits, pOutput_fx, Q_out[0] ) ) != IVAS_ERR_OK ) -#else - IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, SplitRendBitRate, pOutput_fx ) ) != IVAS_ERR_OK ) -#endif { return error; } diff --git a/lib_isar/lib_isar_pre_rend.h b/lib_isar/lib_isar_pre_rend.h index a4d03e8a5..41843ec84 100644 --- a/lib_isar/lib_isar_pre_rend.h +++ b/lib_isar/lib_isar_pre_rend.h @@ -47,11 +47,7 @@ ivas_error ISAR_PRE_REND_open( const int32_t output_Fs, /* i: output sampling rate */ const int16_t cldfb_in_flag, /* i: Flag to indicate CLDFB or time doamin input */ const int16_t pcm_out_flag, /* i: Flag to indicate PCM output */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const IVAS_RENDER_FRAMESIZE ivas_frame_size, /* i: IVAS frame size */ -#else - const int16_t num_subframes, /* i: number of subframes */ -#endif const int16_t mixed_td_cldfb_flag /* i: Flag to indicate combined TD and CLDFB input */ ); @@ -71,9 +67,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( const IVAS_QUATERNION headPosition, /* i: head rotation QUATERNION */ const Word32 SplitRendBitRate, /* i: Split renderer bitrate */ ISAR_SPLIT_REND_CODEC splitCodec, /* i/o: Split renderer codec */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS const Word16 isar_frame_size_ms, /* i: ISAR framesize */ -#endif Word16 codec_frame_size_ms, /* i/o: Split renderer codec framesize */ ISAR_SPLIT_REND_BITS_HANDLE pBits, /* i/o: Split renderer bitstream handle */ Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: CLDFB real buffer */ diff --git a/lib_rend/ivas_render_config_fx.c b/lib_rend/ivas_render_config_fx.c index 0ce576cb3..7f8e96d5c 100644 --- a/lib_rend/ivas_render_config_fx.c +++ b/lib_rend/ivas_render_config_fx.c @@ -146,10 +146,8 @@ ivas_error ivas_render_config_init_from_rom_fx( move16(); ( *hRenderConfig )->split_rend_config.codec_delay_ms = 0; move16(); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ( *hRenderConfig )->split_rend_config.isar_frame_size_ms = 20; move16(); -#endif ( *hRenderConfig )->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ move16(); ( *hRenderConfig )->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; @@ -158,10 +156,8 @@ ivas_error ivas_render_config_init_from_rom_fx( move32(); ( *hRenderConfig )->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT; move32(); -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS ( *hRenderConfig )->split_rend_config.lc3plus_highres = 0; move16(); -#endif #endif return IVAS_ERR_OK; diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index 9615a170d..b27c59852 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -65,10 +65,8 @@ typedef struct ISAR_SPLIT_REND_CODEC codec; ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection; Word16 codec_frame_size_ms; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS Word16 isar_frame_size_ms; Word16 lc3plus_highres; -#endif } IVAS_REND_BitstreamBufferConfig; typedef struct { @@ -292,10 +290,8 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */ Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , Word16 *pIsar_frame_size_ms /* o: pointer to isar frame size setting */ -#endif ); #endif diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index 562b35a6a..eb155a89f 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -5014,17 +5014,13 @@ Word16 IVAS_REND_GetRenderConfig( hRCout->split_rend_config.dof = 3; hRCout->split_rend_config.hq_mode = 0; hRCout->split_rend_config.codec_delay_ms = 0; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hRCout->split_rend_config.isar_frame_size_ms = 20; -#endif hRCout->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ hRCout->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; hRCout->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; hRCout->split_rend_config.rendererSelection = hRCin->split_rend_config.rendererSelection; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hRCout->split_rend_config.lc3plus_highres = 0; #endif -#endif hRCout->roomAcoustics.use_er = hRCin->roomAcoustics.use_er; @@ -9253,9 +9249,7 @@ static ivas_error getSamplesInternal( } if ( ( error = ISAR_PRE_REND_MultiBinToSplitBinaural( &hIvasRend->splitRendWrapper, hIvasRend->headRotData.headPositions[0], hIvasRend->hRendererConfig->split_rend_config.splitRendBitRate, hIvasRend->hRendererConfig->split_rend_config.codec, -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms, -#endif hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms, &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, ( const int16_t )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK ) { @@ -9355,10 +9349,8 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */ int16_t *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , int16_t *pIsar_frame_size_ms /* o: pointer to isar frame size setting */ -#endif ) { if ( hIvasRend == NULL || hIvasRend->hRendererConfig == NULL ) @@ -9367,9 +9359,7 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( } *pCodec = hIvasRend->hRendererConfig->split_rend_config.codec; *pCodec_frame_size_ms = hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms; -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS *pIsar_frame_size_ms = hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms; -#endif *poseCorrection = hIvasRend->hRendererConfig->split_rend_config.poseCorrectionMode; return IVAS_ERR_OK; } diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index dae55f18c..3c897cc43 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -2486,7 +2486,6 @@ ivas_error RenderConfigReader_read( errorHandler( pValue, ERROR_VALUE_INVALID ); } } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS else if ( strcmp( item, "LC3PLUS_HIGHRES" ) == 0 ) { if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.lc3plus_highres ) ) @@ -2494,7 +2493,6 @@ ivas_error RenderConfigReader_read( errorHandler( item, ERROR_VALUE_INVALID ); } } -#endif #ifdef DEBUGGING else { diff --git a/lib_util/split_render_file_read_write.c b/lib_util/split_render_file_read_write.c index 065300c10..c112863db 100644 --- a/lib_util/split_render_file_read_write.c +++ b/lib_util/split_render_file_read_write.c @@ -67,12 +67,10 @@ ivas_error split_rend_reader_open( ISAR_SPLIT_REND_CODEC *codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, int16_t *codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , int16_t *isar_frame_size_ms, int32_t *sampling_rate, int16_t *lc3plus_highres -#endif ) { SplitFileReadWrite *hSplitRendFileReadWrite; @@ -125,7 +123,6 @@ ivas_error split_rend_reader_open( { return IVAS_ERR_FAILED_FILE_READ; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* read isar bitstream frame size signalling */ if ( fread( isar_frame_size_ms, sizeof( *isar_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) { @@ -141,7 +138,6 @@ ivas_error split_rend_reader_open( { return IVAS_ERR_FAILED_FILE_READ; } -#endif *hhSplitRendFileReadWrite = hSplitRendFileReadWrite; @@ -163,12 +159,10 @@ ivas_error split_rend_writer_open( ISAR_SPLIT_REND_CODEC codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, int16_t codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , const int16_t isar_frame_size_ms, const int32_t sampling_rate, const int16_t lc3plus_highres -#endif ) { SplitFileReadWrite *hSplitRendFileReadWrite; @@ -220,7 +214,6 @@ ivas_error split_rend_writer_open( { return IVAS_ERR_FAILED_FILE_WRITE; } -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS /* Write isar bit stream frame size signalling */ if ( fwrite( &isar_frame_size_ms, sizeof( isar_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) { @@ -236,7 +229,6 @@ ivas_error split_rend_writer_open( { return IVAS_ERR_FAILED_FILE_WRITE; } -#endif *hhSplitRendFileReadWrite = hSplitRendFileReadWrite; diff --git a/lib_util/split_render_file_read_write.h b/lib_util/split_render_file_read_write.h index bdda7e598..125daf94e 100644 --- a/lib_util/split_render_file_read_write.h +++ b/lib_util/split_render_file_read_write.h @@ -45,12 +45,10 @@ ivas_error split_rend_reader_open( ISAR_SPLIT_REND_CODEC *codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, int16_t *codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , int16_t *isar_frame_size_ms, int32_t *sampling_rate, int16_t *lc3plus_highres -#endif ); @@ -63,12 +61,10 @@ ivas_error split_rend_writer_open( ISAR_SPLIT_REND_CODEC codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, int16_t codec_frame_size_ms -#ifdef ISAR_BITSTREAM_UPDATE_LC3PLUS , const int16_t isar_frame_size_ms, const int32_t sampling_rate, const int16_t lc3plus_highres -#endif ); -- GitLab From 363a89039256ac5b5e65d7402f80a5ebc0b3da56 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:31:04 +0200 Subject: [PATCH 696/698] [cleanup] accept SPLIT_REND_WITH_HEAD_ROT --- apps/decoder.c | 128 --- apps/isar_post_rend.c | 12 - apps/renderer.c | 150 --- lib_com/cnst.h | 5 - lib_com/common_api_types.h | 6 - lib_com/delay_comp_fx.c | 6 - lib_com/ivas_error.h | 6 - lib_com/ivas_prot_fx.h | 9 - lib_com/ivas_rotation_com.c | 2 - lib_com/options.h | 3 - lib_com/prot_fx.h | 2 - lib_dec/ivas_binRenderer_internal_fx.c | 172 ---- lib_dec/ivas_dirac_dec_fx.c | 80 -- lib_dec/ivas_init_dec_fx.c | 56 -- lib_dec/ivas_ism_dec_fx.c | 34 - lib_dec/ivas_ism_param_dec_fx.c | 13 - lib_dec/ivas_jbm_dec_fx.c | 103 -- lib_dec/ivas_masa_dec_fx.c | 44 - lib_dec/ivas_mc_param_dec_fx.c | 27 - lib_dec/ivas_mc_paramupmix_dec_fx.c | 29 - lib_dec/ivas_mct_dec_fx.c | 41 - lib_dec/ivas_objectRenderer_internal_fx.c | 2 - lib_dec/ivas_omasa_dec_fx.c | 14 - lib_dec/ivas_osba_dec_fx.c | 6 - lib_dec/ivas_output_config_fx.c | 28 - lib_dec/ivas_sba_dec_fx.c | 34 - lib_dec/ivas_spar_decoder_fx.c | 5 - lib_dec/ivas_stat_dec.h | 35 - lib_dec/lib_dec.h | 8 - lib_dec/lib_dec_fx.c | 48 - lib_enc/lib_enc_fx.c | 5 - lib_isar/isar_MSPred.c | 2 - lib_isar/isar_NoiseGen.c | 2 - lib_isar/isar_PerceptualModel.c | 2 - lib_isar/isar_PredDecoder.c | 2 - lib_isar/isar_PredEncoder.c | 2 - lib_isar/isar_RMSEnvGrouping.c | 2 - lib_isar/isar_cnst.h | 2 - lib_isar/isar_lc3plus_common.c | 2 - lib_isar/isar_lc3plus_common.h | 2 - lib_isar/isar_lc3plus_dec.c | 2 - lib_isar/isar_lc3plus_dec.h | 2 - lib_isar/isar_lc3plus_enc.c | 2 - lib_isar/isar_lc3plus_enc.h | 2 - lib_isar/isar_lc3plus_payload.c | 2 - lib_isar/isar_lc3plus_payload.h | 2 - lib_isar/isar_lcld_decoder.c | 2 - lib_isar/isar_lcld_encoder.c | 2 - lib_isar/isar_lcld_prot.h | 2 - lib_isar/isar_lcld_rom_tables.c | 2 - lib_isar/isar_prot.h | 2 - lib_isar/isar_rom_post_rend.c | 2 - lib_isar/isar_rom_post_rend.h | 2 - lib_isar/isar_splitRend_lcld_dec.c | 2 - lib_isar/isar_splitRend_lcld_enc.c | 2 - lib_isar/isar_splitRendererPLC.c | 2 - lib_isar/isar_splitRendererPost.c | 2 - lib_isar/isar_splitRendererPre.c | 2 - lib_isar/isar_splitRenderer_utils.c | 2 - lib_isar/isar_stat.h | 2 - lib_isar/lib_isar_post_rend.c | 9 - lib_isar/lib_isar_post_rend.h | 6 - lib_isar/lib_isar_pre_rend.c | 10 - lib_isar/lib_isar_pre_rend.h | 6 - lib_rend/ivas_crend_fx.c | 92 -- .../ivas_dirac_dec_binaural_functions_fx.c | 885 +----------------- lib_rend/ivas_orient_trk_fx.c | 8 - lib_rend/ivas_output_init_fx.c | 8 - lib_rend/ivas_prot_rend_fx.h | 20 - lib_rend/ivas_reflections_fx.c | 4 - lib_rend/ivas_render_config_fx.c | 2 - lib_rend/ivas_rotation_fx.c | 67 -- lib_rend/ivas_stat_rend.h | 28 - lib_rend/lib_rend.h | 10 - lib_rend/lib_rend_fx.c | 497 ---------- lib_util/render_config_reader.c | 8 - lib_util/rotation_file_reader.c | 8 - lib_util/split_rend_bfi_file_reader.c | 2 - lib_util/split_rend_bfi_file_reader.h | 2 - lib_util/split_render_file_read_write.c | 2 - lib_util/split_render_file_read_write.h | 2 - 81 files changed, 22 insertions(+), 2825 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index 939f21aa7..b8d4c6596 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -43,9 +43,7 @@ #include "masa_file_writer.h" #include "render_config_reader.h" #include "rotation_file_reader.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "split_render_file_read_write.h" -#endif #include "vector3_pair_file_reader.h" #include "wmc_auto.h" #include "options.h" @@ -117,9 +115,7 @@ typedef struct Word16 non_diegetic_pan_gain_fx; /* Q15 */ bool renderConfigEnabled; char *renderConfigFilename; -#ifdef SPLIT_REND_WITH_HEAD_ROT char *outputMdFilename; -#endif IVAS_DEC_COMPLEXITY_LEVEL complexityLevel; bool tsmEnabled; IVAS_RENDER_FRAMESIZE renderFramesize; @@ -136,11 +132,7 @@ typedef struct static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static void usage_dec( void ); -#ifdef SPLIT_REND_WITH_HEAD_ROT static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); -#else -static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); -#endif static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec ); @@ -157,10 +149,8 @@ int main( bool mainFailed = true; /* Assume main failed until cleanup is reached without errors */ DecArguments arg; ivas_error error = IVAS_ERR_UNKNOWN; -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_BITS_DATA splitRendBits; uint8_t splitRendBitsBuf[ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES]; -#endif /* Any handles that require cleanup must be declared here and initialized to NULL */ IVAS_DEC_HANDLE hIvasDec = NULL; @@ -185,9 +175,7 @@ int main( reset_mem( USE_BYTES ); #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT splitRendBits.bits_buf = splitRendBitsBuf; -#endif /*------------------------------------------------------------------------------------------* * Parse command-line arguments @@ -235,7 +223,6 @@ int main( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) { fprintf( stdout, "Output metadata file: %s\n", arg.outputWavFilename ); @@ -246,7 +233,6 @@ int main( fprintf( stdout, "Output metadata file: %s\n", arg.outputMdFilename ); } else -#endif { fprintf( stdout, "Output synthesis file: %s\n", arg.outputWavFilename ); } @@ -281,9 +267,7 @@ int main( { /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB -#ifdef SPLIT_REND_WITH_HEAD_ROT && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM -#endif ) { fprintf( stderr, "\nError: Head-rotation file file cannot be used in this output configuration.\n\n" ); @@ -385,10 +369,8 @@ int main( { /* sanity check */ if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB -#ifdef SPLIT_REND_WITH_HEAD_ROT && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 -#endif ) { fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); @@ -425,7 +407,6 @@ int main( fprintf( stderr, "\nChanged render framesize, only 20ms are allowed for decoding to EXT!\n" ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*------------------------------------------------------------------------------------------* * Configure Split rendering *------------------------------------------------------------------------------------------*/ @@ -447,7 +428,6 @@ int main( arg.enableHeadRotation = true; } -#endif /*------------------------------------------------------------------------------------------* * Configure VoIP mode @@ -473,7 +453,6 @@ int main( IVAS_RENDER_CONFIG_DATA renderConfig; /* sanity check */ -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && arg.Opt_non_diegetic_pan == 0 ) @@ -481,13 +460,6 @@ int main( fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split rendering mode is enabled. Exiting. \n" ); goto cleanup; } -#else - if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { - fprintf( stderr, "\nExternal Renderer Config is supported only for binaural output configurations. Exiting. \n\n" ); - goto cleanup; - } -#endif if ( ( error = IVAS_DEC_GetRenderConfig( hIvasDec, &renderConfig ) ) != IVAS_ERR_OK ) { @@ -513,7 +485,6 @@ int main( renderConfig.directivity_fx[i * 3 + 2] = (Word16) ( renderConfig.directivity[i * 3 + 2] * ( ( 1u << 15 ) - 1 ) ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { @@ -538,7 +509,6 @@ int main( fprintf( stderr, "\nChanged render framesize, only 20ms are allowed for non-0dof split rendering!\n" ); } } -#endif if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { @@ -557,11 +527,9 @@ int main( } renderConfig.roomAcoustics.override = true; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* ISAR frame size is set from command line, not renderer config file. * This will be ignored if output format is not split rendering. */ renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) arg.renderFramesize /* given in number of 5ms subframes */ * 5; -#endif if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK ) { @@ -791,11 +759,7 @@ int main( } else { -#ifdef SPLIT_REND_WITH_HEAD_ROT error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, &splitRendBits, hIvasDec, pcmBuf ); -#else - error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec, pcmBuf ); -#endif } if ( error == IVAS_ERR_OK || error == IVAS_ERR_END_OF_FILE ) @@ -933,7 +897,6 @@ static IVAS_AUDIO_CONFIG cmdline2config( { output_config = IVAS_AUDIO_CONFIG_BINAURAL; } -#ifdef SPLIT_REND_WITH_HEAD_ROT else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_CODED" ) == 0 ) { output_config = IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED; @@ -942,7 +905,6 @@ static IVAS_AUDIO_CONFIG cmdline2config( { output_config = IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM; } -#endif else if ( strcmp( argv_to_upper, "BINAURAL_ROOM_IR" ) == 0 ) { output_config = IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR; @@ -1010,9 +972,7 @@ static bool parseCmdlIVAS_dec( arg->renderConfigFilename = NULL; arg->Opt_dpid_on = 0; -#ifdef SPLIT_REND_WITH_HEAD_ROT arg->outputMdFilename = NULL; -#endif arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192; arg->Opt_non_diegetic_pan = 0; @@ -1260,7 +1220,6 @@ static bool parseCmdlIVAS_dec( } i += 2; } -#ifdef SPLIT_REND_WITH_HEAD_ROT else if ( strcmp( argv_to_upper, "-OM" ) == 0 ) { arg->outputMdFilename = argv[i + 1]; @@ -1272,7 +1231,6 @@ static bool parseCmdlIVAS_dec( } i += 2; } -#endif else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 ) { i++; @@ -1439,14 +1397,12 @@ static bool parseCmdlIVAS_dec( usage_dec(); return false; } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( arg->outputMdFilename != NULL && arg->outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { fprintf( stderr, "Error: Output split rendering metadata file is supported for BINAURAL_SPLIT_PCM output config. only\n\n" ); usage_dec(); return false; } -#endif } else { @@ -1523,13 +1479,8 @@ static void usage_dec( void ) fprintf( stdout, "Mandatory parameters:\n" ); fprintf( stdout, "---------------------\n" ); -#ifdef SPLIT_REND_WITH_HEAD_ROT fprintf( stdout, "OutputConf : Output configuration: MONO, STEREO, 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4, FOA,\n" ); fprintf( stdout, " HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, BINAURAL_SPLIT_CODED, BINAURAL_SPLIT_PCM, EXT\n" ); -#else - fprintf( stdout, "OutputConf : Output configuration: MONO, STEREO, 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4, FOA,\n" ); - fprintf( stdout, " HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, EXT\n" ); -#endif fprintf( stdout, " By default, channel order and loudspeaker positions are equal to the\n" ); fprintf( stdout, " encoder. For loudspeaker outputs, OutputConf can be a custom loudspeaker\n" ); fprintf( stdout, " layout file. See readme.txt for details.\n" ); @@ -1569,9 +1520,7 @@ static void usage_dec( void ) fprintf( stdout, "-rvf File : Reference vector specified by external trajectory File\n" ); fprintf( stdout, " works only in combination with '-otr ref_vec' and 'ref_vec_lev' modes\n" ); fprintf( stdout, "-render_config File : Renderer configuration File\n" ); -#ifdef SPLIT_REND_WITH_HEAD_ROT fprintf( stdout, "-om File : Metadata output File for BINAURAL_SPLIT_PCM OutputConf (only for Fs = 48 kHz)\n" ); -#endif fprintf( stdout, "-non_diegetic_pan P : panning mono non-diegetic sound to stereo with paning P, -90<= P <=90,\n" ); fprintf( stdout, " left or l or 90->left, right or r or -90->right, center or c or 0->middle\n" ); fprintf( stdout, "-exof File : External orientation File for external orientation trajectory\n" ); @@ -1601,12 +1550,8 @@ static ivas_error initOnFirstGoodFrame( IVAS_DEC_HANDLE hIvasDec, /* i/o: */ const DecArguments arg, /* i : */ const int16_t numInitialBadFrames, /* i : */ -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t *numOutSamples, /* i/o: */ int16_t *vec_pos_len, /* i/o: */ -#else - const uint16_t numOutSamples, /* i : */ -#endif int16_t *pFullDelayNumSamples, /* o : */ int16_t *pRemainingDelayNumSamples, /* o : */ int32_t *delayTimeScale, /* o : */ @@ -1615,12 +1560,8 @@ static ivas_error initOnFirstGoodFrame( MasaFileWriter **ppMasaWriter, /* o : */ IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS], /* o : */ int16_t *pNumOutChannels, /* o : */ -#ifdef SPLIT_REND_WITH_HEAD_ROT uint16_t *pNumObj, /* o : */ SplitFileReadWrite **splitRendWriter -#else - uint16_t *pNumObj /* o : */ -#endif ) { ivas_error error = IVAS_ERR_UNKNOWN; @@ -1632,12 +1573,10 @@ static ivas_error initOnFirstGoodFrame( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) { pFullDelayNumSamples[0] = 0; } -#endif if ( !arg.delayCompensationEnabled ) { @@ -1659,7 +1598,6 @@ static ivas_error initOnFirstGoodFrame( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) { /* Open split rendering metadata writer */ @@ -1738,23 +1676,19 @@ static ivas_error initOnFirstGoodFrame( if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 ) { -#endif /* Open audio writer and write all previously skipped bad frames now that frame size is known */ if ( ( error = AudioFileWriter_open( ppAfWriter, arg.outputWavFilename, arg.output_Fs, *pNumOutChannels ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to open output file %s\n", arg.outputWavFilename ); return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif int16_t *zeroBuf = malloc( pcmFrameSize * sizeof( int16_t ) ); memset( zeroBuf, 0, pcmFrameSize * sizeof( int16_t ) ); for ( int16_t i = 0; i < numInitialBadFrames; ++i ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( *splitRendWriter != NULL ) { ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; @@ -1775,19 +1709,10 @@ static ivas_error initOnFirstGoodFrame( } else { -#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( *pRemainingDelayNumSamples < *numOutSamples ) -#else - if ( *pRemainingDelayNumSamples < numOutSamples ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, *numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK ) -#else - if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nOutput audio file writer error\n" ); return error; @@ -1796,15 +1721,9 @@ static ivas_error initOnFirstGoodFrame( } else { -#ifdef SPLIT_REND_WITH_HEAD_ROT *pRemainingDelayNumSamples -= *numOutSamples; -#else - *pRemainingDelayNumSamples -= numOutSamples; -#endif } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif } free( zeroBuf ); @@ -1890,7 +1809,6 @@ static ivas_error initOnFirstGoodFrame( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( *splitRendWriter != NULL ) { if ( numOutSamples == NULL || vec_pos_len == NULL ) @@ -1910,7 +1828,6 @@ static ivas_error initOnFirstGoodFrame( return error; } } -#endif return IVAS_ERR_OK; } @@ -1929,9 +1846,7 @@ static ivas_error decodeG192( RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_BITS_DATA *splitRendBits, -#endif IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ) @@ -1958,9 +1873,7 @@ static ivas_error decodeG192( IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS]; IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES] = { { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 } }; int16_t vec_pos_update, vec_pos_len; -#ifdef SPLIT_REND_WITH_HEAD_ROT SplitFileReadWrite *splitRendWriter = NULL; -#endif for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) { @@ -2058,7 +1971,6 @@ static ivas_error decodeG192( { IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( headRotReader == NULL ) { for ( i = 0; i < num_subframes; i++ ) @@ -2076,7 +1988,6 @@ static ivas_error decodeG192( } else { -#endif for ( i = 0; i < num_subframes; i++ ) { if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) @@ -2085,17 +1996,11 @@ static ivas_error decodeG192( goto cleanup; } } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif for ( i = 0; i < num_subframes; i++ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i, DEFAULT_AXIS ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -2154,7 +2059,6 @@ static ivas_error decodeG192( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) { if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (Word16 *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) @@ -2168,7 +2072,6 @@ static ivas_error decodeG192( } else { -#endif if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); @@ -2176,9 +2079,7 @@ static ivas_error decodeG192( } nSamplesRendered += nSamplesRendered_loop; nSamplesToRender -= nSamplesRendered_loop; -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif if ( needNewFrame ) { @@ -2209,11 +2110,7 @@ static ivas_error decodeG192( /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, &nOutSamples, &vec_pos_len, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &splitRendWriter ) ) != IVAS_ERR_OK ) -#else - if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, nOutSamples, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj ) ) != IVAS_ERR_OK ) -#endif { goto cleanup; } @@ -2227,7 +2124,6 @@ static ivas_error decodeG192( /* Write current frame */ if ( decodedGoodFrame ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) { if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits->bits_buf, &splitRendBits->bits_read, &splitRendBits->bits_written ) != IVAS_ERR_OK ) @@ -2239,7 +2135,6 @@ static ivas_error decodeG192( if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 ) { -#endif if ( delayNumSamples < nOutSamples ) { if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) @@ -2253,9 +2148,7 @@ static ivas_error decodeG192( { delayNumSamples -= nOutSamples; } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif } /* Write ISm metadata to external file(s) */ @@ -2369,11 +2262,7 @@ static ivas_error decodeG192( goto cleanup; } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos[0], 0, DEFAULT_AXIS ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos[0], 0 ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -2493,18 +2382,14 @@ static ivas_error decodeG192( *------------------------------------------------------------------------------------------*/ memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( afWriter != NULL ) { -#endif if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); goto cleanup; } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif /*------------------------------------------------------------------------------------------* * Close files and deallocate resources @@ -2514,9 +2399,7 @@ static ivas_error decodeG192( cleanup: -#ifdef SPLIT_REND_WITH_HEAD_ROT split_rend_reader_writer_close( &splitRendWriter ); -#endif AudioFileWriter_close( &afWriter ); MasaFileWriter_close( &masaWriter ); for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; i++ ) @@ -2763,7 +2646,6 @@ static ivas_error decodeVoIP( { IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( headRotReader == NULL ) { for ( i = 0; i < num_subframes; i++ ) @@ -2781,7 +2663,6 @@ static ivas_error decodeVoIP( } else { -#endif for ( i = 0; i < num_subframes; i++ ) { if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) @@ -2791,17 +2672,13 @@ static ivas_error decodeVoIP( goto cleanup; } } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif for ( i = 0; i < num_subframes; i++ ) { if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i -#ifdef SPLIT_REND_WITH_HEAD_ROT , DEFAULT_AXIS -#endif ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); @@ -2929,15 +2806,10 @@ static ivas_error decodeVoIP( /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT SplitFileReadWrite *splitRendWriter = NULL; if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, &nOutSamples, NULL, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &splitRendWriter ) ) != IVAS_ERR_OK ) -#else - if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, nOutSamples, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, - &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj ) ) != IVAS_ERR_OK ) -#endif { goto cleanup; } diff --git a/apps/isar_post_rend.c b/apps/isar_post_rend.c index 1e041c175..e7fd6a05a 100644 --- a/apps/isar_post_rend.c +++ b/apps/isar_post_rend.c @@ -33,17 +33,6 @@ #include "lib_isar_post_rend.h" //#undef IVAS_FLOAT_FIXED -#ifndef SPLIT_REND_WITH_HEAD_ROT - -int main( int argc, char **argv ) -{ - (void) argc; - (void) argv; - ISAR_POST_REND_void_func(); - return 0; -} - -#else #include #include @@ -1242,4 +1231,3 @@ int main( #undef WMC_TOOL_SKIP -#endif /* SPLIT_REND_WITH_HEAD_ROT */ diff --git a/apps/renderer.c b/apps/renderer.c index 0d96f9dea..5ef8cca19 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -45,10 +45,8 @@ #include "masa_file_writer.h" #include "render_config_reader.h" #include "rotation_file_reader.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "split_render_file_read_write.h" #include "split_rend_bfi_file_reader.h" -#endif #include "vector3_pair_file_reader.h" #include "wmc_auto.h" @@ -155,13 +153,9 @@ typedef struct OutputConfig outConfig; char inMetadataFilePaths[RENDERER_MAX_ISM_INPUTS][RENDERER_MAX_CLI_ARG_LENGTH]; int16_t numInMetadataFiles; -#ifdef SPLIT_REND_WITH_HEAD_ROT char outMetadataFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; -#endif char headRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; -#ifdef SPLIT_REND_WITH_HEAD_ROT char splitRendBFIFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; -#endif char referenceVectorFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; char referenceRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; char externalOrientationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; @@ -208,10 +202,8 @@ typedef enum CmdLnOptionId_inputMetadata, CmdLnOptionId_listFormats, CmdLnOptionId_inputGain, -#ifdef SPLIT_REND_WITH_HEAD_ROT CmdLnOptionId_outputMetadata, CmdLnOptionId_SplitRendBFIFile, -#endif CmdLnOptionId_referenceVectorFile, CmdLnOptionId_exteriorOrientationFile, CmdLnOptionId_framing, @@ -237,11 +229,7 @@ static const CmdLnParser_Option cliOptions[] = { .id = CmdLnOptionId_inputMetadata, .match = "input_metadata", .matchShort = "im", -#ifdef SPLIT_REND_WITH_HEAD_ROT .description = "Space-separated list of path to metadata files for ISM or MASA inputs or BINAURAL_SPLIT_PCM input mode", -#else - .description = "Space-separated list of path to metadata files for ISM or MASA inputs", -#endif }, { .id = CmdLnOptionId_outputFile, @@ -267,7 +255,6 @@ static const CmdLnParser_Option cliOptions[] = { .matchShort = "T", .description = "Head rotation trajectory file for simulation of head tracking (only for binaural outputs)", }, -#ifdef SPLIT_REND_WITH_HEAD_ROT { .id = CmdLnOptionId_outputMetadata, .match = "output_metadata", @@ -280,7 +267,6 @@ static const CmdLnParser_Option cliOptions[] = { .matchShort = "prbfi", .description = "Split rendering option: bfi file", }, -#endif { .id = CmdLnOptionId_refRotFile, .match = "reference_rotation_file", @@ -438,44 +424,26 @@ static void printSupportedAudioConfigs( void ); static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString ); -#ifdef SPLIT_REND_WITH_HEAD_ROT static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, Word16 out_q -#else - Word16 *intBuffer, - Word16 out_q -#endif ); static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 *Word32Buffer, Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, Word16 *out_q_factor -#else - Word32 *Word32Buffer, - Word16 in_q_factor -#endif ); -#else -static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer ); - -static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, int16_t *intBuffer ); -static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, Word16 *intBuffer, Word16 q_factor ); -static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, Word32 *Int32Buffer, Word16 in_q_factor ); -#endif /*------------------------------------------------------------------------------------------* @@ -702,7 +670,6 @@ static float dBToLin( } -#ifdef SPLIT_REND_WITH_HEAD_ROT static int16_t get_cldfb_in_flag( const IVAS_AUDIO_CONFIG audioConfig, const IVAS_RENDER_CONFIG_DATA *renderConfig ) @@ -737,7 +704,6 @@ static int16_t is_split_pre_rend_mode( return flag; } -#endif /*------------------------------------------------------------------------------------------* @@ -754,12 +720,10 @@ int main( RotFileReader *headRotReader = NULL; RotFileReader *externalOrientationFileReader = NULL; RotFileReader *referenceRotReader = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS]; IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_INPUT_CHANNELS]; int16_t cldfb_in_flag, CLDFBframeSize_smpls; SplitRendBFIFileReader *splitRendBFIReader = NULL; -#endif Vector3PairFileReader *referenceVectorReader = NULL; hrtfFileReader *hrtfFileReader = NULL; IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; @@ -780,9 +744,7 @@ int main( AudioFileWriter *audioWriter; int32_t inBufferSize; int32_t outBufferSize; -#ifdef SPLIT_REND_WITH_HEAD_ROT int32_t bitsBufferSize; -#endif int16_t *inpInt16Buffer; float *inFloatBuffer; int16_t *outInt16Buffer; @@ -790,17 +752,13 @@ int main( Word32 *inInt32Buffer; Word32 gain_fx; float *outFloatBuffer; -#ifdef SPLIT_REND_WITH_HEAD_ROT uint8_t *bitsBufferData = NULL; -#endif IVAS_REND_AudioBuffer inBuffer; IVAS_REND_AudioBuffer outBuffer; -#ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_REND_BitstreamBuffer bitsBuffer; SplitFileReadWrite *hSplitRendFileReadWrite; int16_t delayNumSamples_temp; int32_t delayTimeScale_temp; -#endif int16_t numSamplesRead; int16_t delayNumSamples = -1; int16_t delayNumSamples_orig = 0; @@ -821,7 +779,6 @@ int main( hMasaMetadata[i] = NULL; } -#ifdef SPLIT_REND_WITH_HEAD_ROT hSplitRendFileReadWrite = NULL; CLDFBframeSize_smpls = 0; cldfb_in_flag = 0; @@ -834,7 +791,6 @@ int main( bitsBuffer.config.codec_frame_size_ms = 5; bitsBuffer.config.isar_frame_size_ms = 20; bitsBuffer.config.lc3plus_highres = 0; -#endif for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { lfeRoutingConfigs[i] = NULL; @@ -893,13 +849,11 @@ int main( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( !isEmptyString( args.splitRendBFIFilePath ) ) { convert_backslash( args.splitRendBFIFilePath ); SplitRendBFIFileReader_open( args.splitRendBFIFilePath, &splitRendBFIReader ); } -#endif if ( !isEmptyString( args.externalOrientationFilePath ) ) { if ( RotationFileReader_open( args.externalOrientationFilePath, &externalOrientationFileReader ) != IVAS_ERR_OK ) @@ -1227,28 +1181,16 @@ int main( IVAS_RENDER_CONFIG_DATA renderConfig; /* sanity check */ -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && !is_split_pre_rend_mode( &args ) ) { fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split pre-rendering mode is enabled. Exiting. \n" ); exit( -1 ); } -#else - if ( ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { - fprintf( stderr, "\nExternal Renderer Config is only supported for binaural output configurations. Exiting. \n" ); - exit( -1 ); - } -#endif if ( ( error = IVAS_REND_GetRenderConfig( hIvasRend, &renderConfig ) ) != IVAS_ERR_OK ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT fprintf( stderr, "\nIVAS_DEC_GetRenderConfig failed: %s\n", ivas_error_to_string( error ) ); -#else - fprintf( stderr, "\nIVAS_DEC_GetRenderConfig failed\n" ); -#endif exit( -1 ); } @@ -1276,26 +1218,18 @@ int main( renderConfig.roomAcoustics.override = 1; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* ISAR frame size is set from command line, not renderer config file. * This will be ignored if output format is not split rendering. */ renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) args.render_framesize /* given in number of 5ms subframes */ * 5; -#endif if ( ( error = IVAS_REND_FeedRenderConfig( hIvasRend, renderConfig ) ) != IVAS_ERR_OK ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT fprintf( stderr, "\nIVAS_REND_FeedRenderConfig failed: %s\n", ivas_error_to_string( error ) ); -#else - fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed\n" ); -#endif exit( -1 ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT CLDFBframeSize_smpls = frameSize_smpls * 2; cldfb_in_flag = get_cldfb_in_flag( args.outConfig.audioConfig, &renderConfig ); -#endif } if ( ( error = IVAS_REND_SetOrientationTrackingMode( hIvasRend, args.orientation_tracking ) ) != IVAS_ERR_OK ) @@ -1550,7 +1484,6 @@ int main( exit( -1 ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( cldfb_in_flag ) { if ( ( error = IVAS_REND_openCldfb( cldfbAna, cldfbSyn, totalNumInChannels, numOutChannels, args.sampleRate ) ) != IVAS_ERR_OK ) @@ -1631,22 +1564,18 @@ int main( exit( -1 ); } } -#endif if ( AudioFileWriter_open( &audioWriter, args.outputFilePath, args.sampleRate, numOutChannels ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to open file: %s\n", args.outputFilePath ); exit( -1 ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif inBufferSize = frameSize_smpls * totalNumInChannels; outBufferSize = frameSize_smpls * numOutChannels; inpInt16Buffer = malloc( inBufferSize * sizeof( int16_t ) ); -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( cldfb_in_flag == 0 ) { inFloatBuffer = malloc( inBufferSize * sizeof( float ) ); @@ -1708,21 +1637,6 @@ int main( bitsBuffer.config.bitsRead = 0; bitsBuffer.config.bitsWritten = 0; bitsBuffer.config.bufLenInBytes = bitsBufferSize; -#else - inFloatBuffer = malloc( inBufferSize * sizeof( float ) ); - outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); - outInt32Buffer = malloc( outBufferSize * sizeof( Word32 ) ); - inInt32Buffer = malloc( inBufferSize * sizeof( Word32 ) ); - outFloatBuffer = malloc( outBufferSize * sizeof( float ) ); - - inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; - inBuffer.config.numChannels = (int16_t) totalNumInChannels; - - outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; - outBuffer.config.numChannels = (int16_t) numOutChannels; - outBuffer.data_fx = outInt32Buffer; - inBuffer.data_fx = inInt32Buffer; -#endif #ifdef WMOPS reset_stack(); @@ -1765,15 +1679,10 @@ int main( } /* Convert from int to float and from interleaved to packed */ -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 Q_out; *outBuffer.pq_fact = 16 - ( gd_bits ); convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, *outBuffer.pq_fact, inBuffer.config.is_cldfb, cldfbAna, &Q_out ); *outBuffer.pq_fact = Q_out; -#else - *outBuffer.pq_fact = 16 - ( gd_bits ); - convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, *outBuffer.pq_fact ); -#endif int16_t num_subframes, sf_idx; num_subframes = (int16_t) args.render_framesize; @@ -1831,11 +1740,7 @@ int main( exit( -1 ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, headRot, Pos, DEFAULT_AXIS, sf_idx ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, headRot, Pos, sf_idx ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) ); exit( -1 ); @@ -1988,7 +1893,6 @@ int main( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { if ( ( error = IVAS_REND_GetSplitBinauralBitstream( hIvasRend, outBuffer, &bitsBuffer ) ) != IVAS_ERR_OK ) @@ -1999,30 +1903,19 @@ int main( } else { -#endif if ( ( error = IVAS_REND_GetSamples( hIvasRend, outBuffer ) ) != IVAS_ERR_OK ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT fprintf( stderr, "Error %s\n", ivas_error_to_string( error ) ); -#else - fprintf( stderr, "Error in getting samples\n" ); -#endif exit( -1 ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif int16_t num_out_channels; num_out_channels = outBuffer.config.numChannels; /* Convert from float to int and from packed to interleaved. * Values in outFloatBuffer are guaranteed to be within range INT16_MIN:INT16_MAX */ -#ifdef SPLIT_REND_WITH_HEAD_ROT convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, cldfb_in_flag, cldfbSyn, *outBuffer.pq_fact ); -#else - convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, *outBuffer.pq_fact ); -#endif if ( delayNumSamples == -1 ) { @@ -2044,7 +1937,6 @@ int main( zeroPad = delayNumSamples; } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( is_split_pre_rend_mode( &args ) ) { if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, bitsBuffer.bits, &bitsBuffer.config.bitsRead, @@ -2057,7 +1949,6 @@ int main( if ( audioWriter != NULL ) { -#endif if ( delayNumSamples * num_out_channels < outBufferSize ) { if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK ) @@ -2072,12 +1963,10 @@ int main( delayNumSamples -= (int16_t) ( outBufferSize / num_out_channels ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT } bitsBuffer.config.bitsRead = 0; bitsBuffer.config.bitsWritten = 0; -#endif /* Write MASA metadata for MASA outputs */ @@ -2183,10 +2072,8 @@ int main( } /* add zeros at the end to have equal length of synthesized signals */ -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( audioWriter != NULL ) { -#endif for ( zeroPadToWrite = zeroPad; zeroPadToWrite > frameSize_smpls; zeroPadToWrite -= frameSize_smpls ) { memset( outInt16Buffer, 0, outBufferSize * sizeof( int16_t ) ); @@ -2204,9 +2091,7 @@ int main( exit( -1 ); } zeroPadToWrite = 0; -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif if ( args.inConfig.numAudioObjects != 0 && ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) @@ -2231,18 +2116,15 @@ int main( free( inInt32Buffer ); cleanup: -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( bitsBufferData != NULL ) { free( bitsBufferData ); } -#endif for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) { MasaFileReader_close( &masaReaders[i] ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( cldfb_in_flag ) { IVAS_REND_closeCldfb( cldfbAna, cldfbSyn ); @@ -2250,7 +2132,6 @@ cleanup: split_rend_reader_writer_close( &hSplitRendFileReadWrite ); SplitRendBFIFileReader_close( &splitRendBFIReader ); -#endif for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { @@ -2560,13 +2441,8 @@ static bool parseOrientationTracking( static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString ) { -#ifndef SPLIT_REND_WITH_HEAD_ROT - char charBuf[21]; - charBuf[20] = '\0'; -#else char charBuf[25]; charBuf[24] = '\0'; -#endif strncpy( charBuf, configString, sizeof( charBuf ) - 1 ); charBuf[sizeof( charBuf ) - 1] = '\0'; @@ -2641,7 +2517,6 @@ static IVAS_AUDIO_CONFIG parseAudioConfig( { return IVAS_AUDIO_CONFIG_BINAURAL; } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( strcmp( charBuf, "BINAURAL_SPLIT_PCM" ) == 0 ) { return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM; @@ -2650,7 +2525,6 @@ static IVAS_AUDIO_CONFIG parseAudioConfig( { return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED; } -#endif if ( strcmp( charBuf, "BINAURAL_ROOM_IR" ) == 0 ) { return IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR; @@ -2783,10 +2657,8 @@ static CmdlnArgs defaultArgs( args.numInMetadataFiles = 0; clearString( args.headRotationFilePath ); -#ifdef SPLIT_REND_WITH_HEAD_ROT clearString( args.outMetadataFilePath ); clearString( args.splitRendBFIFilePath ); -#endif clearString( args.referenceVectorFilePath ); clearString( args.referenceRotationFilePath ); clearString( args.customHrtfFilePath ); @@ -2879,7 +2751,6 @@ static void parseOption( assert( numOptionValues == 1 ); strncpy( args->headRotationFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); break; -#ifdef SPLIT_REND_WITH_HEAD_ROT case CmdLnOptionId_outputMetadata: assert( numOptionValues == 1 ); strncpy( args->outMetadataFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); @@ -2888,7 +2759,6 @@ static void parseOption( assert( numOptionValues == 1 ); strncpy( args->splitRendBFIFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); break; -#endif case CmdLnOptionId_referenceVectorFile: assert( numOptionValues == 1 ); strncpy( args->referenceVectorFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); @@ -3907,10 +3777,8 @@ static void printSupportedAudioConfigs( void ) "ISMx (input only)", "MASAx", "BINAURAL (output only)", -#ifdef SPLIT_REND_WITH_HEAD_ROT "BINAURAL_SPLIT_PCM", "BINAURAL_SPLIT_CODED", -#endif "BINAURAL_ROOM_IR (output only)", "BINAURAL_ROOM_REVERB (output only)", }; @@ -4006,23 +3874,17 @@ static void convertInputBuffer_fx( const Word16 numIntSamplesPerChannel, const Word16 numFloatSamplesPerChannel, const Word16 numChannels, -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 *Word32Buffer, Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, Word16 *out_q_factor -#else - Word32 *Word32Buffer, - Word16 in_q_factor -#endif ) { Word16 chnl, smpl, i; i = 0; -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( cldfb_in_flag ) { Word16 slotIdx, numCldfbBands, numFloatPcmSamples; @@ -4063,7 +3925,6 @@ static void convertInputBuffer_fx( } ELSE { -#endif FOR( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) { FOR( chnl = 0; chnl < numChannels; ++chnl ) @@ -4080,10 +3941,8 @@ static void convertInputBuffer_fx( ++i; } } -#ifdef SPLIT_REND_WITH_HEAD_ROT *out_q_factor = in_q_factor; } -#endif return; } @@ -4100,15 +3959,10 @@ static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, Word16 out_q -#else - Word16 *intBuffer, - Word16 out_q -#endif ) { Word16 chnl, smpl, i; @@ -4116,7 +3970,6 @@ static void convertOutputBuffer_fx( Word32 temp_fx1; i = 0; -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( cldfb_in_flag ) { Word16 slotIdx, numCldfbBands, numPcmSamples, b, temp_out_q = 0; @@ -4180,7 +4033,6 @@ static void convertOutputBuffer_fx( } ELSE { -#endif FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) { @@ -4201,9 +4053,7 @@ static void convertOutputBuffer_fx( ++i; } } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif return; } diff --git a/lib_com/cnst.h b/lib_com/cnst.h index 5ffbb56e7..2317dc95e 100644 --- a/lib_com/cnst.h +++ b/lib_com/cnst.h @@ -3077,13 +3077,8 @@ enum #define SYNC_BAD_FRAME (UWord16) 0x6B20 /* synchronization word of a "bad" frame */ #define G192_BIN0 (UWord16) 0x007F /* binary "0" according to ITU-T G.192 */ #define G192_BIN1 (UWord16) 0x0081 /* binary "1" according to ITU-T G.192 */ -#ifdef SPLIT_REND_WITH_HEAD_ROT #define DEGREE_180 (Word32)(180.0 *ONE_IN_Q22) #define DEGREE_360 (Word32)(360.0 *ONE_IN_Q22) -#else -#define DEGREE_180 (Word32)(180.0 *ONE_IN_Q23) -#define DEGREE_360 (Word32)(360.0 *ONE_IN_Q23) -#endif extern const Word16 Idx2Freq_Tbl[]; #define chk_fs(fs) diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index 34facc703..bb6351711 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -219,7 +219,6 @@ typedef struct _IVAS_JBM_TRACE_DATA } IVAS_JBM_TRACE_DATA; -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------------------* * Split rendering API constants, structures, and enums *----------------------------------------------------------------------------------*/ @@ -301,7 +300,6 @@ typedef struct _ISAR_SPLIT_REND_CONFIG int16_t lc3plus_highres; } ISAR_SPLIT_REND_CONFIG_DATA, *ISAR_SPLIT_REND_CONFIG_HANDLE; -#endif /*----------------------------------------------------------------------------------* * Renderer API structures and enums @@ -348,9 +346,7 @@ typedef struct _IVAS_RENDER_CONFIG IVAS_RENDER_TYPE_OVERRIDE renderer_type_override; #endif IVAS_ROOM_ACOUSTICS_CONFIG_DATA roomAcoustics; -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_CONFIG_DATA split_rend_config; -#endif float directivity[IVAS_MAX_NUM_OBJECTS * 3]; Word16 directivity_fx[IVAS_MAX_NUM_OBJECTS * 3]; // has the following q-factor pattern: {6, 6, 15, 6, 6, 15, 6, 6, 15, 6, 6, 15} } IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE; @@ -359,9 +355,7 @@ typedef struct { int16_t numSamplesPerChannel; int16_t numChannels; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t is_cldfb; -#endif } IVAS_REND_AudioBufferConfig; typedef struct diff --git a/lib_com/delay_comp_fx.c b/lib_com/delay_comp_fx.c index 0398eb671..7bc574c3c 100644 --- a/lib_com/delay_comp_fx.c +++ b/lib_com/delay_comp_fx.c @@ -52,10 +52,8 @@ Word32 get_delay_fx( /* o : delay value in ms const Word32 io_fs, /* i : input/output sampling frequency Q0*/ const IVAS_FORMAT ivas_format, /* i : IVAS format */ HANDLE_CLDFB_FILTER_BANK hCldfb /* i : Handle of Cldfb analysis */ -#ifdef SPLIT_REND_WITH_HEAD_ROT , const AUDIO_CONFIG output_config /* i : decoder output config */ -#endif ) { Word32 delay; /*Q0*/ @@ -107,19 +105,15 @@ Word32 get_delay_fx( /* o : delay value in ms delay = IVAS_DEC_DELAY_NS; /*Q0*/ move32(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) { -#endif if ( hCldfb != NULL ) { /* compensate for filterbank delay */ delay = L_add( delay, IVAS_FB_DEC_DELAY_NS ); /*Q0*/ } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif test(); if ( EQ_16( ivas_format, MASA_FORMAT ) || EQ_16( ivas_format, MASA_ISM_FORMAT ) ) { diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h index 2f34e6709..e46f901c6 100644 --- a/lib_com/ivas_error.h +++ b/lib_com/ivas_error.h @@ -98,10 +98,8 @@ typedef enum * input data errors * *----------------------------------------*/ IVAS_ERR_INVALID_BITSTREAM = 0x2000, -#ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM, IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM_CONFIG, -#endif /*----------------------------------------* * hardware errors * @@ -140,10 +138,8 @@ typedef enum IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING, IVAS_ERR_INVALID_ER_PARAM, IVAS_ERR_DIRECTIVITY_PATTERN_ID_MISSING, -#ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_ERR_LC3PLUS_INVALID_BITRATE, IVAS_ERR_INVALID_SPLIT_REND_CONFIG, -#endif /*----------------------------------------* * unknown error * @@ -242,12 +238,10 @@ static inline const char *ivas_error_to_string( ivas_error error_code ) return "Wrong mode"; case IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED: return "Head rotation not supported"; -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_ERR_LC3PLUS_INVALID_BITRATE: return "Specified split rendering bit rate is not supported"; case IVAS_ERR_INVALID_SPLIT_REND_CONFIG: return "Specified split rendering configuration is invalid"; -#endif case IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED: return "External orientation not supported"; case IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED: diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index d989a1f68..15a44f3b6 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -3699,18 +3699,11 @@ ivas_error ivas_allocate_binaural_hrtf_fx( void ivas_binRenderer_fx( BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ -#ifdef SPLIT_REND_WITH_HEAD_ROT const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, -#endif COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/ const Word16 numTimeSlots, /* i : number of time slots to render */ -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Cldfb_RealBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ Word32 Cldfb_ImagBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ -#else - Word32 Cldfb_RealBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ - Word32 Cldfb_ImagBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ -#endif Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals */ Word32 ImagBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals */ Word16 *Q_in /* i : LS signals exp */ @@ -5942,7 +5935,6 @@ float deg2rad( Word32 deg2rad_fx( Word32 degrees ); -#ifdef SPLIT_REND_WITH_HEAD_ROT void Quat2EulerDegree_fx( const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ Word32 *yaw_fx, /* o : yaw */ @@ -5967,7 +5959,6 @@ void modify_Rmat_q_fx( Word16 q_cur, /* i : current q factor for rotation matrix */ Word16 q_new /* i : target q factor for rotation matrix */ ); -#endif /*=============================================================================================*/ /* clang-format off */ diff --git a/lib_com/ivas_rotation_com.c b/lib_com/ivas_rotation_com.c index 6e31f96d5..f25c796d4 100644 --- a/lib_com/ivas_rotation_com.c +++ b/lib_com/ivas_rotation_com.c @@ -78,7 +78,6 @@ void Euler2Quat_fx( } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*------------------------------------------------------------------------- * Copy_Quat_fx() @@ -234,7 +233,6 @@ void Quat2EulerDegree_fx( return; } -#endif /*------------------------------------------------------------------------- * deg2rad() diff --git a/lib_com/options.h b/lib_com/options.h index e77c5a83b..4574f38d4 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -103,10 +103,7 @@ /* #################### Start BASOP porting switches ############################ */ -#define SPLIT_REND_WITH_HEAD_ROT /* Dlb,FhG: Split Rendering contributions 21 and 35 */ -#ifdef SPLIT_REND_WITH_HEAD_ROT #define FIX_1372_ISAR_POST_REND -#endif #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index e899d32f9..ca754b110 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -1626,10 +1626,8 @@ Word32 get_delay_fx( /* o : delay value in ms const Word32 io_fs, /* i : input/output sampling frequency */ const IVAS_FORMAT ivas_format, /* i : IVAS format */ HANDLE_CLDFB_FILTER_BANK hCldfb /* i : Handle of Cldfb analysis */ -#ifdef SPLIT_REND_WITH_HEAD_ROT , const AUDIO_CONFIG output_config /* i : decoder output config */ -#endif ); diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index d53d6c76d..db871d9cb 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -61,12 +61,8 @@ static void ivas_binRenderer_filterModule_fx( Word32 CLDFB_real[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : real part of LS signals Q_curr*/ Word32 CLDFB_imag[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : imag part of LS signals Q_curr*/ const Word16 numTimeSlots, /* i : number of time slots to process */ -#ifdef SPLIT_REND_WITH_HEAD_ROT BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */ const Word16 pos_idx, /* i : pose index */ -#else - BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */ -#endif Word16 Q_curr ) { Word16 bandIdx, k, chIdx, tapIdx; @@ -74,25 +70,15 @@ static void ivas_binRenderer_filterModule_fx( Word16 Q_filterStates; const Word32 *filterTapsLeftRealPtr_fx, *filterTapsLeftImagPtr_fx, *filterTapsRightRealPtr_fx, *filterTapsRightImagPtr_fx; Word16 shift_q; -#ifdef SPLIT_REND_WITH_HEAD_ROT Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx]; move16(); -#else - Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStatesLeft; - move16(); -#endif FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx][0] ); filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx][0] ); -#else - filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx][0] ); - filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx][0] ); -#endif /* SPLIT_REND_WITH_HEAD_ROT */ filterTapsLeftRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx]; // Q29 filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29 @@ -136,11 +122,7 @@ static void ivas_binRenderer_filterModule_fx( outImagLeft_fx = W_shr( outImagLeft_fx, shift_q ); // Q_curr outRealRight_fx = W_shr( outRealRight_fx, shift_q ); // Q_curr outImagRight_fx = W_shr( outImagRight_fx, shift_q ); // Q_curr -#ifdef SPLIT_REND_WITH_HEAD_ROT hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr; -#else - hBinRenderer->hBinRenConvModule->Q_filterStatesLeft = Q_curr; -#endif move16(); } @@ -194,18 +176,12 @@ static ivas_error ivas_binRenderer_convModuleOpen( const Word16 renderer_type, const Word16 isLoudspeaker, const AUDIO_CONFIG input_config, -#ifdef SPLIT_REND_WITH_HEAD_ROT const HRTFS_FASTCONV_HANDLE hHrtf, const Word16 num_poses -#else - const HRTFS_FASTCONV_HANDLE hHrtf -#endif ) { Word16 bandIdx, chIdx; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; -#endif BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule; @@ -331,7 +307,6 @@ static ivas_error ivas_binRenderer_convModuleOpen( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( ( hBinRenConvModule->filterStatesLeftReal_fx = (Word32 ****) malloc( num_poses * sizeof( Word32 *** ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); @@ -388,45 +363,6 @@ static ivas_error ivas_binRenderer_convModuleOpen( } } -#else - IF( ( hBinRenConvModule->filterStatesLeftReal_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); - } - - IF( ( hBinRenConvModule->filterStatesLeftImag_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); - } - - - FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) - { - IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); - } - - IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); - } - - - FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) - { - IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); - } - - IF( ( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); - } - } - } -#endif /* set memories */ FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { @@ -467,12 +403,6 @@ static ivas_error ivas_binRenderer_convModuleOpen( IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { /* set the memories to zero */ -#ifndef SPLIT_REND_WITH_HEAD_ROT - set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] ); - set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] ); - hBinRenConvModule->Q_filterStatesLeft = 31; - move16(); -#endif /* !SPLIT_REND_WITH_HEAD_ROT */ IF( isLoudspeaker ) { hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx] = hHrtf->leftBRIRReal_fx[bandIdx][tmp]; @@ -483,13 +413,6 @@ static ivas_error ivas_binRenderer_convModuleOpen( } ELSE { -#ifndef SPLIT_REND_WITH_HEAD_ROT - /* set the memories to zero */ - set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTaps ); - set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx], 0, hBinRenConvModule->numTaps ); - hBinRenConvModule->Q_filterStatesLeft = 31; - move16(); -#endif /* SPLIT_REND_WITH_HEAD_ROT */ IF( isLoudspeaker ) { hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx] = hHrtf->leftHRIRReal_fx[bandIdx][tmp]; @@ -532,7 +455,6 @@ static ivas_error ivas_binRenderer_convModuleOpen( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) @@ -567,7 +489,6 @@ static ivas_error ivas_binRenderer_convModuleOpen( } } } -#endif hBinRenderer->hBinRenConvModule = hBinRenConvModule; @@ -1126,7 +1047,6 @@ static void ivas_binaural_obtain_DMX_fx( } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*------------------------------------------------------------------------- * ivas_rend_openCldfbRend() * @@ -1229,7 +1149,6 @@ ivas_error ivas_rend_openCldfbRend( return error; } -#endif /*------------------------------------------------------------------------- * ivas_binRenderer_open() @@ -1268,7 +1187,6 @@ ivas_error ivas_binRenderer_open_fx( move16(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { hBinRenderer->numPoses = st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses; @@ -1279,7 +1197,6 @@ ivas_error ivas_binRenderer_open_fx( hBinRenderer->numPoses = 1; move16(); } -#endif /* Declare some common variables needed for renderer */ /* Which format used for binaural rendering (needed for late reverb) ? MC or SBA */ @@ -1336,17 +1253,10 @@ ivas_error ivas_binRenderer_open_fx( IVAS_OUTPUT_SETUP out_setup; /* Allocate memories and buffers needed for convolutional module in CICP19 */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, 1, IVAS_AUDIO_CONFIG_7_1_4, st_ivas->hHrtfFastConv, hBinRenderer->numPoses ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, 1, IVAS_AUDIO_CONFIG_7_1_4, st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) - { - return error; - } -#endif ivas_output_init( &out_setup, IVAS_AUDIO_CONFIG_7_1_4 ); IF( st_ivas->hoa_dec_mtx == NULL ) @@ -1364,17 +1274,10 @@ ivas_error ivas_binRenderer_open_fx( ELSE { /* Allocate memories and buffers needed for convolutional module */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, st_ivas->hIntSetup.is_loudspeaker_setup, st_ivas->hIntSetup.output_config, st_ivas->hHrtfFastConv, hBinRenderer->numPoses ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, st_ivas->hIntSetup.is_loudspeaker_setup, st_ivas->hIntSetup.output_config, st_ivas->hHrtfFastConv ) ), IVAS_ERR_OK ) ) - { - return error; - } -#endif IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) { @@ -1499,18 +1402,12 @@ ivas_error ivas_binRenderer_open_fx( * Close convolution module handle of fastconv binaural renderer *------------------------------------------------------------------------*/ static void ivas_binRenderer_convModuleClose_fx( -#ifdef SPLIT_REND_WITH_HEAD_ROT BINAURAL_RENDERER_HANDLE *hBinRenderer, /* i/o: fastconv binaural renderer handle */ const Word16 num_poses /* i : number of poses */ -#else - BINAURAL_RENDERER_HANDLE *hBinRenderer /* i/o: fastconv binaural renderer handle */ -#endif ) { Word16 bandIdx, chIdx; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 posIdx; -#endif BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule; @@ -1548,7 +1445,6 @@ static void ivas_binRenderer_convModuleClose_fx( free( hBinRenConvModule->filterTapsRightImag_fx ); hBinRenConvModule->filterTapsRightImag_fx = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( posIdx = 0; posIdx < num_poses; posIdx++ ) { FOR( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ ) @@ -1574,25 +1470,6 @@ static void ivas_binRenderer_convModuleClose_fx( free( hBinRenConvModule->filterStatesLeftImag_fx[posIdx] ); hBinRenConvModule->filterStatesLeftImag_fx[posIdx] = NULL; } -#else - FOR( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ ) - { - FOR( chIdx = 0; chIdx < ( *hBinRenderer )->nInChannels; chIdx++ ) - { - free( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] ); - hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = NULL; - - free( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] ); - hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] = NULL; - } - - free( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] ); - hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = NULL; - - free( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] ); - hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] = NULL; - } -#endif free( hBinRenConvModule->filterStatesLeftReal_fx ); hBinRenConvModule->filterStatesLeftReal_fx = NULL; @@ -1623,11 +1500,7 @@ void ivas_binRenderer_close_fx( IF( ( *hBinRenderer )->hBinRenConvModule != NULL ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_binRenderer_convModuleClose_fx( hBinRenderer, ( *hBinRenderer )->numPoses ); -#else - ivas_binRenderer_convModuleClose_fx( hBinRenderer ); -#endif } IF( ( *hBinRenderer )->hReverb != NULL ) @@ -1798,29 +1671,20 @@ void ivas_binaural_add_LFE_fx( void ivas_binRenderer_fx( BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ -#ifdef SPLIT_REND_WITH_HEAD_ROT const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, -#endif COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/ const Word16 numTimeSlots, /* i : number of time slots to render */ -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Cldfb_RealBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ Word32 Cldfb_ImagBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ -#else - Word32 Cldfb_RealBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals Q_in*/ - Word32 Cldfb_ImagBuffer_Binaural_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals Q_in*/ -#endif Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/ Word32 ImagBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/ Word16 *Q_in /* i : LS signals exp */ ) { Word16 chIdx, i, j, k; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx, num_poses; Word32 RealBuffer_local[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; Word32 ImagBuffer_local[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; -#endif // to be checked: feasibility with 32 bit buffers Word64 Cldfb_RealBuffer_Binaural_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; @@ -1828,14 +1692,11 @@ void ivas_binRenderer_fx( push_wmops( "fastconv_binaural_rendering" ); -#ifdef SPLIT_REND_WITH_HEAD_ROT num_poses = hBinRenderer->numPoses; -#endif /* Compute Convolution */ /* memory reset for the binaural output */ -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) @@ -1864,18 +1725,6 @@ void ivas_binRenderer_fx( Copy32( ImagBuffer_fx[chIdx][k], ImagBuffer_local[chIdx][k], CLDFB_NO_CHANNELS_MAX ); } } -#else - FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) - { - FOR( k = 0; k < numTimeSlots; k++ ) - { - set32_fx( Cldfb_RealBuffer_Binaural_fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX ); - set32_fx( Cldfb_ImagBuffer_Binaural_fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX ); - set64_fx( Cldfb_RealBuffer_Binaural_64fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX ); - set64_fx( Cldfb_ImagBuffer_Binaural_64fx[chIdx][k], 0, CLDFB_NO_CHANNELS_MAX ); - } - } -#endif /* Head rotation in HOA3 or CICPx */ test(); @@ -1914,11 +1763,7 @@ void ivas_binRenderer_fx( hBinRenderer->nInChannels, hBinRenderer->conv_band, numTimeSlots, hBinRenderer->hoa_dec_mtx ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_binRenderer_filterModule_fx( Cldfb_RealBuffer_Binaural_64fx, Cldfb_ImagBuffer_Binaural_64fx, RealBuffer_fx, ImagBuffer_fx, numTimeSlots, hBinRenderer, 0, *Q_in ); -#else - ivas_binRenderer_filterModule_fx( Cldfb_RealBuffer_Binaural_64fx, Cldfb_ImagBuffer_Binaural_64fx, RealBuffer_fx, ImagBuffer_fx, numTimeSlots, hBinRenderer, *Q_in ); -#endif FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) { @@ -1926,22 +1771,14 @@ void ivas_binRenderer_fx( { FOR( k = 0; k < CLDFB_NO_CHANNELS_MAX; k++ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT Cldfb_RealBuffer_Binaural_fx[0][i][j][k] = W_extract_l( W_shr( Cldfb_RealBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29 move32(); Cldfb_ImagBuffer_Binaural_fx[0][i][j][k] = W_extract_l( W_shr( Cldfb_ImagBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29 move32(); -#else - Cldfb_RealBuffer_Binaural_fx[i][j][k] = W_extract_l( W_shr( Cldfb_RealBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29 - move32(); - Cldfb_ImagBuffer_Binaural_fx[i][j][k] = W_extract_l( W_shr( Cldfb_ImagBuffer_Binaural_64fx[i][j][k], 29 ) ); //(*Q_in + 29) - 29 - move32(); -#endif } } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( pMultiBinPoseData != NULL ) { IF( GT_16( pMultiBinPoseData->num_poses, 1 ) ) @@ -2032,7 +1869,6 @@ void ivas_binRenderer_fx( } } } -#endif /* Obtain the binaural dmx and compute the reverb */ IF( hBinRenderer->hReverb != NULL ) @@ -2074,18 +1910,12 @@ void ivas_binRenderer_fx( { FOR( k = 0; k < numTimeSlots; k++ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { /* Combine first and second parts to generate binaural output signal with room effect */ v_add_32( Cldfb_RealBuffer_Binaural_fx[pos_idx][chIdx][k], reverbRe_fx[chIdx][k], Cldfb_RealBuffer_Binaural_fx[pos_idx][chIdx][k], hBinRenderer->conv_band ); // Q_in v_add_32( Cldfb_ImagBuffer_Binaural_fx[pos_idx][chIdx][k], reverbIm_fx[chIdx][k], Cldfb_ImagBuffer_Binaural_fx[pos_idx][chIdx][k], hBinRenderer->conv_band ); // Q_in } -#else - /* Combine first and second parts to generate binaural output signal with room effect */ - v_add_32( Cldfb_RealBuffer_Binaural_fx[chIdx][k], reverbRe_fx[chIdx][k], Cldfb_RealBuffer_Binaural_fx[chIdx][k], hBinRenderer->conv_band ); // Q_in - v_add_32( Cldfb_ImagBuffer_Binaural_fx[chIdx][k], reverbIm_fx[chIdx][k], Cldfb_ImagBuffer_Binaural_fx[chIdx][k], hBinRenderer->conv_band ); // Q_in -#endif } } } @@ -2093,7 +1923,6 @@ void ivas_binRenderer_fx( return; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*------------------------------------------------------------------------- * ivas_rend_CldfbMultiBinRendProcess() * @@ -2174,4 +2003,3 @@ void ivas_rend_CldfbMultiBinRendProcess( return; } -#endif diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index e843a82f9..b0bfb9fdc 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -978,9 +978,7 @@ ivas_error ivas_dirac_dec_config_fx( Word16 need_parambin; Word16 dec_param_estim_old; Word16 dec_param_estim_new; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 num_poses, pos_idx; -#endif error = IVAS_ERR_OK; move32(); @@ -1011,7 +1009,6 @@ ivas_error ivas_dirac_dec_config_fx( move16(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT num_poses = 1; move16(); IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) @@ -1019,7 +1016,6 @@ ivas_error ivas_dirac_dec_config_fx( num_poses = st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses; move16(); } -#endif sparfoa_flag = 0; move16(); @@ -1067,11 +1063,7 @@ ivas_error ivas_dirac_dec_config_fx( IF( !need_parambin ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); -#else - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); -#endif } need_dirac_rend = 0; @@ -1144,11 +1136,7 @@ ivas_error ivas_dirac_dec_config_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0] == NULL ) -#else - IF( st_ivas->hDiracDecBin == NULL ) -#endif { #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF IF( NE_32( ( error = ivas_dirac_dec_init_binaural_data_fx( st_ivas, &( st_ivas->hHrtfParambin ) ) ), IVAS_ERR_OK ) ) @@ -1164,75 +1152,41 @@ ivas_error ivas_dirac_dec_config_fx( /* This is required to keep BE in rate switching. This probably means that 1TC and 2TC MASA perform differently. */ test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params != NULL && !( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && st_ivas->nSCE > 0 ) ) -#else - IF( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params != NULL && !( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && st_ivas->nSCE > 0 ) ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_decorr_close_fx( &st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params, &st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_state ); // done -#else - ivas_dirac_dec_decorr_close_fx( &st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params, &st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_state ); // done -#endif } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) -#endif { return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* copy td-decorr flag to split renderer side rendereres */ FOR( pos_idx = 1; pos_idx < num_poses; pos_idx++ ) { st_ivas->hDiracDecBin[pos_idx]->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr; } IF( !st_ivas->hDiracDecBin[0]->useTdDecorr ) -#else - IF( !st_ivas->hDiracDecBin->useTdDecorr ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params == NULL ) -#else - IF( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params == NULL ) -#endif { Word16 frequency_axis_fx[CLDFB_NO_CHANNELS_MAX]; ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSpatParamRendCom->num_freq_bands ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params ), &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_state ), st_ivas->hSpatParamRendCom->num_freq_bands, BINAURAL_CHANNELS, BINAURAL_CHANNELS, DIRAC_SYNTHESIS_PSD_LS, frequency_axis_fx, BINAURAL_CHANNELS, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params ), &( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_state ), st_ivas->hSpatParamRendCom->num_freq_bands, BINAURAL_CHANNELS, BINAURAL_CHANNELS, - DIRAC_SYNTHESIS_PSD_LS, frequency_axis_fx, BINAURAL_CHANNELS, st_ivas->hDecoderConfig->output_Fs ) ), - IVAS_ERR_OK ) ) - { - return error; - } -#endif } } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { st_ivas->hDiracDecBin[pos_idx]->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); move16(); } -#else - st_ivas->hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); - move16(); -#endif } } } @@ -2279,13 +2233,8 @@ void ivas_dirac_dec_render_sf_fx( /*CLDFB: last output channels reserved to LFT for CICPx*/ Word32 Cldfb_RealBuffer_fx[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_fx[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Cldfb_RealBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; -#else - Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; - Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; -#endif Word16 index = 0, num_freq_bands = 0; move16(); move16(); @@ -2300,7 +2249,6 @@ void ivas_dirac_dec_render_sf_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( Word16 p = 0; p < MAX_HEAD_ROT_POSES; p++ ) { FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) @@ -2312,16 +2260,6 @@ void ivas_dirac_dec_render_sf_fx( } } } -#else - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - FOR( Word16 j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) - { - set32_fx( Cldfb_RealBuffer_Binaural_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); - set32_fx( Cldfb_RealBuffer_Binaural_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); - } - } -#endif /* local copies of azi, ele, diffuseness */ Word16 azimuth[CLDFB_NO_CHANNELS_MAX]; @@ -4093,7 +4031,6 @@ void ivas_dirac_dec_render_sf_fx( input_q = Q6; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { IF( st_ivas->hSplitBinRend->hCldfbDataOut != NULL ) @@ -4110,28 +4047,19 @@ void ivas_dirac_dec_render_sf_fx( move16(); } } -#endif ivas_binRenderer_fx( st_ivas->hBinRenderer, -#ifdef SPLIT_REND_WITH_HEAD_ROT ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, -#endif st_ivas->hCombinedOrientationData, hSpatParamRendCom->subframe_nbslots[subframe_idx], Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, Cldfb_RealBuffer_fx, Cldfb_ImagBuffer_fx, &input_q ); -#ifndef SPLIT_REND_WITH_HEAD_ROT - Scale_sig32( Cldfb_RealBuffer_Binaural_fx[0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6 - Scale_sig32( Cldfb_ImagBuffer_Binaural_fx[0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6 -#else Word16 pos_idx; FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) { Scale_sig32( &Cldfb_RealBuffer_Binaural_fx[pos_idx][0][0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6 Scale_sig32( &Cldfb_ImagBuffer_Binaural_fx[pos_idx][0][0][0], i_mult( BINAURAL_CHANNELS, i_mult( MAX_PARAM_SPATIAL_SUBFRAMES, CLDFB_NO_CHANNELS_MAX ) ), sub( Q6, input_q ) ); // Q6 } -#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) @@ -4146,7 +4074,6 @@ void ivas_dirac_dec_render_sf_fx( } } } -#endif /* Inverse CLDFB*/ FOR( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) @@ -4157,17 +4084,10 @@ void ivas_dirac_dec_render_sf_fx( Word32 *ImagBuffer_fx[MAX_PARAM_SPATIAL_SUBFRAMES]; FOR( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[0][ch][i]; move32(); ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[0][ch][i]; move32(); -#else - RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[ch][i]; - move32(); - ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[ch][i]; - move32(); -#endif } scale_sig32( st_ivas->cldfbSynDec[ch]->cldfb_state_fx, st_ivas->cldfbSynDec[ch]->p_filter_length, sub( ( Q6 - 1 ), st_ivas->cldfbSynDec[ch]->Q_cldfb_state ) ); // Q6-1 diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index 8b0d171d5..f00ea4676 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -42,11 +42,9 @@ #include "prot_fx.h" #include "wmc_auto.h" #include "ivas_prot_fx.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "lib_isar_pre_rend.h" #include "isar_prot.h" #include "isar_stat.h" -#endif /*-------------------------------------------------------------------* @@ -57,7 +55,6 @@ static ivas_error ivas_read_format( Decoder_Struct *st_ivas, Word16 *num_bits_re static ivas_error doSanityChecks_IVAS( Decoder_Struct *st_ivas ); -#ifdef SPLIT_REND_WITH_HEAD_ROT static ivas_error ivas_dec_reconfig_split_rend( Decoder_Struct *st_ivas ); @@ -259,7 +256,6 @@ static ivas_error ivas_dec_init_split_rend( move16(); return error; } -#endif /*-------------------------------------------------------------------* * ivas_dec_setup() @@ -729,7 +725,6 @@ ivas_error ivas_dec_setup( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-----------------------------------------------------------------* * reconfig split rendering as renderer might change after bitrate switching *-----------------------------------------------------------------*/ @@ -741,7 +736,6 @@ ivas_error ivas_dec_setup( return error; } } -#endif /*----------------------------------------------------------------* * Reset bitstream pointers @@ -1182,12 +1176,8 @@ IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics *--------------------------------------------------------------------*/ test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_STEREO ) && st_ivas->hDecoderConfig->Opt_non_diegetic_pan ) ) -#else -IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { IF( NE_32( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ), IVAS_ERR_OK ) ) { @@ -1377,7 +1367,6 @@ ivas_error ivas_init_decoder_fx( } #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-----------------------------------------------------------------* * Initialize binuaral split rendering *-----------------------------------------------------------------*/ @@ -1390,7 +1379,6 @@ ivas_error ivas_init_decoder_fx( return error; } } -#endif /*-----------------------------------------------------------------* * Allocate and initialize SCE/CPE and other handles @@ -2335,7 +2323,6 @@ ivas_error ivas_init_decoder_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), @@ -2344,17 +2331,6 @@ ivas_error ivas_init_decoder_fx( IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#endif -#else -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - if ( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ), - IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, - st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), - IVAS_ERR_OK ) ) -#endif #endif { return error; @@ -2519,9 +2495,7 @@ ivas_error ivas_init_decoder_fx( { IF( st_ivas->hBinRenderer->render_lfe ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#endif { /* Account for filterbank delay */ binauralization_delay_ns = L_add( binauralization_delay_ns, IVAS_FB_DEC_DELAY_NS ); @@ -2871,14 +2845,10 @@ void ivas_initialize_handles_dec( /* rendering handles */ st_ivas->hBinRenderer = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) { st_ivas->hDiracDecBin[i] = NULL; } -#else - st_ivas->hDiracDecBin = NULL; -#endif st_ivas->hDirACRend = NULL; st_ivas->hSpatParamRendCom = NULL; st_ivas->hLsSetUpConversion = NULL; @@ -2906,13 +2876,11 @@ void ivas_initialize_handles_dec( st_ivas->hExtOrientationData = NULL; st_ivas->hCombinedOrientationData = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT st_ivas->hSplitBinRend = NULL; for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { st_ivas->hTdRendHandles[i] = NULL; } -#endif /* JBM handles */ st_ivas->hTcBuffer = NULL; st_ivas->hJbmMetadata = NULL; @@ -3049,7 +3017,6 @@ void ivas_destroy_dec_fx( /* Fastconv binaural renderer handle */ ivas_binRenderer_close_fx( &st_ivas->hBinRenderer ); -#ifdef SPLIT_REND_WITH_HEAD_ROT /* TD binaural renderer handles */ for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { @@ -3059,21 +3026,12 @@ void ivas_destroy_dec_fx( ivas_td_binaural_close_fx( &st_ivas->hTdRendHandles[i] ); } } -#endif /* Parametric binaural renderer handle */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); -#else - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); -#endif /* Crend handle */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); -#endif /* Reverb handle */ ivas_reverb_close( &st_ivas->hReverb ); @@ -3244,11 +3202,7 @@ void ivas_init_dec_get_num_cldfb_instances( move16(); } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0]->useTdDecorr ) -#else - IF( st_ivas->hDiracDecBin->useTdDecorr ) -#endif { *numCldfbAnalyses = add( *numCldfbAnalyses, 2 ); move16(); @@ -3509,11 +3463,7 @@ void ivas_init_dec_get_num_cldfb_instances_ivas_fx( move16(); } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0]->useTdDecorr ) -#else - IF( st_ivas->hDiracDecBin->useTdDecorr ) -#endif { *numCldfbAnalyses = add( *numCldfbAnalyses, 2 ); move16(); @@ -3801,22 +3751,16 @@ static ivas_error doSanityChecks_IVAS( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( output_Fs, 48000 ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." ); } -#endif IF( st_ivas->hDecoderConfig->Opt_Headrotation ) { test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) -#else - IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) -#endif { return IVAS_ERROR( IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED, "Wrong set-up: Head-rotation not supported in this configuration" ); } diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index 5f431d63b..13e888af3 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -196,18 +196,10 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( ivas_param_ism_dec_close_fx( &( st_ivas->hParamIsmDec ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config ); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { /* close the parametric binaural renderer */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); -#else - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); -#endif /* Open the TD Binaural renderer */ test(); IF( st_ivas->hHrtfTD == NULL || st_ivas->hBinRendererTd == NULL ) @@ -244,32 +236,14 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { /* close the parametric binaural renderer */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); -#else - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); -#endif /* Open Crend Binaural renderer */ -#ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #endif -#else -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) - { - return error; - } -#else - IF( NE_32( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) -#endif - { - return error; - } -#endif st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns; move32(); @@ -287,11 +261,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( } test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { /* open the parametric binaural renderer */ IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) @@ -344,11 +314,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( } /* close the crend binaural renderer */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); -#endif } } diff --git a/lib_dec/ivas_ism_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c index 5552b3dc2..09e3c0e6c 100644 --- a/lib_dec/ivas_ism_param_dec_fx.c +++ b/lib_dec/ivas_ism_param_dec_fx.c @@ -527,11 +527,7 @@ static ivas_error ivas_param_ism_rendering_init_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) -#else - IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) -#endif { /* computation of proto matrix */ ivas_ism_get_proto_matrix_fx( hOutSetup, nchan_transport, hParamIsmRendering->proto_matrix_fx ); @@ -708,13 +704,8 @@ ivas_error ivas_param_ism_dec_open_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) -#else - IF( !( EQ_32( output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || - EQ_32( output_config, IVAS_AUDIO_CONFIG_MONO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) ) ) -#endif { /* Initialize efap handle */ IF( NE_32( ( error = efap_init_data_fx( &( st_ivas->hEFAPdata ), hOutSetup.ls_azimuth_fx, hOutSetup.ls_elevation_fx, hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ), IVAS_ERR_OK ) ) @@ -737,11 +728,7 @@ ivas_error ivas_param_ism_dec_open_fx( test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { IF( NE_32( ( error = ivas_dirac_allocate_parameters_fx( hSpatParamRendCom, 1 ) ), IVAS_ERR_OK ) ) { diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index 6a0d49bfe..c21f182da 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -1623,7 +1623,6 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( test(); test(); /* delay the objects here for all renderers where it is needed */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || @@ -1632,14 +1631,6 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( EQ_16( st_ivas->renderer_type, RENDERER_OSBA_LS ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) && ( NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) -#else - IF( - EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || - EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) || - EQ_16( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) || - EQ_16( st_ivas->renderer_type, RENDERER_OSBA_LS ) || - EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) -#endif { FOR( n = 0; n < st_ivas->nchan_ism; n++ ) { @@ -1843,9 +1834,7 @@ ivas_error ivas_jbm_dec_render_fx( const Word16 output_q_factor = Q11; move16(); SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 nchan_out_syn_output; -#endif push_wmops( "ivas_dec_render" ); /*----------------------------------------------------------------* @@ -2017,7 +2006,6 @@ ivas_error ivas_jbm_dec_render_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* Binaural rendering */ IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) { @@ -2036,16 +2024,6 @@ ivas_error ivas_jbm_dec_render_fx( } } } -#else - /* Binaural rendering */ - IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) - { - IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) - { - return error; - } - } -#endif ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) { st_ivas->hCrendWrapper->p_io_qfactor = &st_ivas->hCrendWrapper->io_qfactor; @@ -2065,17 +2043,10 @@ ivas_error ivas_jbm_dec_render_fx( scale_sig32( p_output_fx[i], *nSamplesRendered, negate( sub( 11, *st_ivas->hCrendWrapper->p_io_qfactor ) ) ); // Q11 } -#if defined SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, *nSamplesRendered, output_Fs, 0 ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, *nSamplesRendered, output_Fs ) ), IVAS_ERR_OK ) ) - { - return error; - } -#endif FOR( i = 0; i < nchan_out; i++ ) { @@ -2295,7 +2266,6 @@ ivas_error ivas_jbm_dec_render_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { if ( ( error = ivas_rend_crendProcessSubframesSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, @@ -2306,28 +2276,16 @@ ivas_error ivas_jbm_dec_render_fx( } else { -#endif -#if defined SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs, 0 ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, - &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs ) ), - IVAS_ERR_OK ) ) - { - return error; - } -#endif ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_tc_fx, p_output_fx ); -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif FOR( i = 0; i < nchan_in; i++ ) { @@ -2351,7 +2309,6 @@ ivas_error ivas_jbm_dec_render_fx( } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { IF( NE_32( ( error = ivas_td_binaural_renderer_sf_splitBinaural( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) @@ -2361,16 +2318,13 @@ ivas_error ivas_jbm_dec_render_fx( } else { -#endif IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) { return error; } ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_tc_fx, p_output_fx ); -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif } } ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) @@ -2382,10 +2336,8 @@ ivas_error ivas_jbm_dec_render_fx( /* Rendering */ IF( ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) && !st_ivas->hDecoderConfig->Opt_Headrotation ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT /*handled in CLDFB domain already*/ IF( NE_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#endif { ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_output_fx, p_output_fx ); } @@ -2595,7 +2547,6 @@ ivas_error ivas_jbm_dec_render_fx( move16(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { FOR( i = 0; i < st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS; i++ ) @@ -2607,7 +2558,6 @@ ivas_error ivas_jbm_dec_render_fx( move16(); IF( st_ivas->hDecoderConfig->Opt_Limiter ) -#endif { IF( NE_32( st_ivas->ivas_format, MONO_FORMAT ) ) { @@ -2617,11 +2567,7 @@ ivas_error ivas_jbm_dec_render_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_syn_output_fx( p_output_fx, output_q_factor, *nSamplesRendered, nchan_out_syn_output, data ); -#else - ivas_syn_output_fx( p_output_fx, output_q_factor, *nSamplesRendered, nchan_out, data ); -#endif *nSamplesAvailableNext = st_ivas->hTcBuffer->n_samples_available; move16(); @@ -2660,9 +2606,6 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( Word32 *p_output_fx[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; #endif Word16 nchan_in, nchan_out; -#ifndef SPLIT_REND_WITH_HEAD_ROT - Word16 gd_bits, shift, n_chan_inp, i; -#endif IF( !st_ivas->hDecoderConfig->Opt_tsm ) { return IVAS_ERR_OK; @@ -2757,47 +2700,12 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( st_ivas->hCrendWrapper->p_io_qfactor = &st_ivas->hCrendWrapper->io_qfactor; *st_ivas->hCrendWrapper->p_io_qfactor = 11; move16(); -#if defined SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs, 0 ) ), IVAS_ERR_OK ) ) { return error; } -#else - shift = MAX_16; - move16(); - n_chan_inp = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe ); - - FOR( i = 0; i < n_chan_inp; i++ ) - { - shift = s_min( shift, L_norm_arr( p_output_fx[i], hTcBuffer->n_samples_granularity ) ); - } - - gd_bits = sub( find_guarded_bits_fx( imult1616( hTcBuffer->subframe_nbslots[0], hTcBuffer->n_samples_granularity ) ), shift ); - - *st_ivas->hCrendWrapper->p_io_qfactor = sub( *st_ivas->hCrendWrapper->p_io_qfactor, gd_bits ); - move16(); - - FOR( i = 0; i < n_chan_inp; i++ ) - { - scale_sig32( p_output_fx[i], hTcBuffer->n_samples_granularity, sub( *st_ivas->hCrendWrapper->p_io_qfactor, Q11 ) ); // Q(*st_ivas->hCrendWrapper->p_io_qfactor) - } - - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, - NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs ) ), - IVAS_ERR_OK ) ) - { - return error; - } - - FOR( i = 0; i < n_chan_inp; i++ ) - { - scale_sig32( p_output_fx[i], hTcBuffer->n_samples_granularity, sub( Q11, *st_ivas->hCrendWrapper->p_io_qfactor ) ); // Q(11) - } - *st_ivas->hCrendWrapper->p_io_qfactor = Q11; - move16(); -#endif } } ELSE @@ -2825,21 +2733,12 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( *st_ivas->hCrendWrapper->p_io_qfactor = 11; move16(); -#if defined SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, intern_config_old, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, hIntSetupOld, st_ivas->hEFAPdata, st_ivas->hTcBuffer, hTcBuffer->tc_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs, 0 ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, intern_config_old, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, - hIntSetupOld, st_ivas->hEFAPdata, st_ivas->hTcBuffer, hTcBuffer->tc_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs ) ), - IVAS_ERR_OK ) ) - { - return error; - } -#endif ivas_binaural_add_LFE_fx( st_ivas, hTcBuffer->n_samples_granularity, st_ivas->hTcBuffer->tc_fx, p_output_fx ); } @@ -2957,9 +2856,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( *nSamplesRendered = n_samples_to_render; move16(); /* Only write out the valid data*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDecoderConfig->Opt_Limiter ) -#endif { IF( NE_16( st_ivas->ivas_format, MONO_FORMAT ) ) { diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c index e87683562..8bf808ed6 100644 --- a/lib_dec/ivas_masa_dec_fx.c +++ b/lib_dec/ivas_masa_dec_fx.c @@ -1589,9 +1589,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( Word16 numCldfbAnalyses_old, numCldfbSyntheses_old; ivas_error error; Word32 ism_total_brate; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; -#endif error = IVAS_ERR_OK; move16(); @@ -1622,13 +1620,8 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend == NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] == NULL ) ) -#else - IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend == NULL ) || - ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin == NULL ) ) -#endif { /* init a new DirAC dec */ if ( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) @@ -1641,11 +1634,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( IF( st_ivas->hDirAC != NULL ) { /* close all unnecessary parametric decoding and rendering */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); -#else - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); -#endif ivas_dirac_rend_close_fx( &( st_ivas->hDirACRend ) ); ivas_spat_hSpatParamRendCom_close_fx( &( st_ivas->hSpatParamRendCom ) ); ivas_dirac_dec_close_fx( &( st_ivas->hDirAC ) ); @@ -1696,11 +1685,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] != NULL ) -#else - IF( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin != NULL ) -#endif { if ( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ), IVAS_ERR_OK ) ) { @@ -1756,11 +1741,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] != NULL ) ) -#else - IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin != NULL ) ) -#endif { if ( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ), IVAS_ERR_OK ) ) { @@ -1778,11 +1759,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin[0] != NULL ) ) -#else - IF( ( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) && st_ivas->hDirACRend != NULL ) || ( ( EQ_32( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) && st_ivas->hDiracDecBin != NULL ) ) -#endif { if ( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ) != IVAS_ERR_OK ) { @@ -1792,7 +1769,6 @@ ivas_error ivas_masa_dec_reconfigure_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { IF( st_ivas->hDiracDecBin[pos_idx] != NULL ) @@ -1802,14 +1778,6 @@ ivas_error ivas_masa_dec_reconfigure_fx( move16(); } } -#else - IF( st_ivas->hDiracDecBin != NULL ) - { - /* regularization factor is bitrate-dependent */ - st_ivas->hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); - move16(); - } -#endif test(); IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && EQ_32( st_ivas->last_ivas_format, MASA_FORMAT ) ) /* note: switching within OMASA is handled in ivas_omasa_dec_config() */ @@ -1817,17 +1785,9 @@ ivas_error ivas_masa_dec_reconfigure_fx( /*-----------------------------------------------------------------* * TD Decorrelator *-----------------------------------------------------------------*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0] != NULL ) -#else - IF( st_ivas->hDiracDecBin != NULL ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -2064,11 +2024,7 @@ void ivas_spar_param_to_masa_param_mapping_fx( move16(); hSpatParamRendCom->numSimultaneousDirections = 1; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT hDiffuseDist = st_ivas->hDiracDecBin[0]->hDiffuseDist; -#else - hDiffuseDist = st_ivas->hDiracDecBin->hDiffuseDist; -#endif nchan_transport = st_ivas->nchan_transport; move16(); band_grouping = hDirAC->band_grouping; diff --git a/lib_dec/ivas_mc_param_dec_fx.c b/lib_dec/ivas_mc_param_dec_fx.c index c49978058..1ee6d6ced 100644 --- a/lib_dec/ivas_mc_param_dec_fx.c +++ b/lib_dec/ivas_mc_param_dec_fx.c @@ -1849,13 +1849,8 @@ void ivas_param_mc_dec_render_fx( /*CLDFB*/ Word32 Cldfb_RealBuffer_fx[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_fx[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Cldfb_RealBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; -#else - Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; - Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; -#endif Word32 *p_output_f_fx[MAX_OUTPUT_CHANNELS]; FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { @@ -2137,7 +2132,6 @@ void ivas_param_mc_dec_render_fx( Word16 input_q = 6; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { IF( st_ivas->hSplitBinRend->hCldfbDataOut != NULL ) @@ -2154,13 +2148,10 @@ void ivas_param_mc_dec_render_fx( move16(); } } -#endif /* Implement binaural rendering */ ivas_binRenderer_fx( st_ivas->hBinRenderer, -#ifdef SPLIT_REND_WITH_HEAD_ROT ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, -#endif st_ivas->hCombinedOrientationData, hParamMC->subframe_nbslots[subframe_idx], Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, @@ -2179,7 +2170,6 @@ void ivas_param_mc_dec_render_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t pos_idx; FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) { @@ -2192,18 +2182,7 @@ void ivas_param_mc_dec_render_fx( } } } -#else - FOR( Word16 idx1 = 0; idx1 < BINAURAL_CHANNELS; idx1++ ) - { - FOR( Word16 idx2 = 0; idx2 < hParamMC->subframe_nbslots[subframe_idx]; idx2++ ) - { - Scale_sig32( Cldfb_RealBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( Q6, input_q ) ); // Q6 - Scale_sig32( Cldfb_ImagBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( Q6, input_q ) ); // Q6 - } - } -#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) @@ -2218,7 +2197,6 @@ void ivas_param_mc_dec_render_fx( } } } -#endif /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, hParamMC->num_freq_bands * hParamMC->subframe_nbslots[subframe_idx] ); } @@ -2242,13 +2220,8 @@ void ivas_param_mc_dec_render_fx( { IF( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[0][ch][i]; // Q6 ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[0][ch][i]; // Q6 -#else - RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[ch][i]; // Q6 - ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[ch][i]; // Q6 -#endif } ELSE { diff --git a/lib_dec/ivas_mc_paramupmix_dec_fx.c b/lib_dec/ivas_mc_paramupmix_dec_fx.c index eab782f8b..89a86d21a 100644 --- a/lib_dec/ivas_mc_paramupmix_dec_fx.c +++ b/lib_dec/ivas_mc_paramupmix_dec_fx.c @@ -732,22 +732,15 @@ static void ivas_mc_paramupmix_dec_sf( Word32 Cldfb_RealBuffer_subfr_fx[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; Word32 Cldfb_ImagBuffer_subfr_fx[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Cldfb_RealBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_Binaural_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; int16_t slot_index_start; -#else - Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; - Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; -#endif hMCParamUpmix = st_ivas->hMCParamUpmix; assert( hMCParamUpmix ); push_wmops( "ivas_mc_paramupmix_dec_sf" ); -#ifdef SPLIT_REND_WITH_HEAD_ROT slot_index_start = st_ivas->hTcBuffer->slots_rendered; -#endif FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { @@ -864,7 +857,6 @@ static void ivas_mc_paramupmix_dec_sf( Word16 input_q = 6; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT /*LFE handling for split rendering cases*/ IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { @@ -883,20 +875,16 @@ static void ivas_mc_paramupmix_dec_sf( move16(); } } -#endif /* Implement binaural rendering */ ivas_binRenderer_fx( st_ivas->hBinRenderer, -#ifdef SPLIT_REND_WITH_HEAD_ROT ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, -#endif st_ivas->hCombinedOrientationData, st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, Cldfb_RealBuffer_subfr_fx, Cldfb_ImagBuffer_subfr_fx, &input_q ); -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t pos_idx; FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) { @@ -909,18 +897,7 @@ static void ivas_mc_paramupmix_dec_sf( } } } -#else - FOR( Word16 idx1 = 0; idx1 < BINAURAL_CHANNELS; idx1++ ) - { - FOR( Word16 idx2 = 0; idx2 < MAX_PARAM_SPATIAL_SUBFRAMES; idx2++ ) - { - Scale_sig32( Cldfb_RealBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( 6, input_q ) ); // Q6 - Scale_sig32( Cldfb_ImagBuffer_Binaural_fx[idx1][idx2], CLDFB_NO_CHANNELS_MAX, sub( 6, input_q ) ); // Q6 - } - } -#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { FOR( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) @@ -935,7 +912,6 @@ static void ivas_mc_paramupmix_dec_sf( } } } -#endif /* Implement CLDFB synthesis */ FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) @@ -945,13 +921,8 @@ static void ivas_mc_paramupmix_dec_sf( FOR( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[0][ch][slot_idx]; // Q6 ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[0][ch][slot_idx]; // Q6 -#else - RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[ch][slot_idx]; // Q6 - ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[ch][slot_idx]; // Q6 -#endif } #ifndef OPT_AVOID_STATE_BUF_RESCALE scale_sig32( st_ivas->cldfbSynDec[ch]->cldfb_state_fx, st_ivas->cldfbSynDec[ch]->cldfb_size, Q5 - Q11 ); // Q11 -> Q5 diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index 5c9deed2d..ed43b9991 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1470,11 +1470,7 @@ static ivas_error ivas_mc_dec_reconfig_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { /* remove unneeded binaural renderers */ test(); @@ -1489,17 +1485,9 @@ static ivas_error ivas_mc_dec_reconfig_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hCrend[0] != NULL ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) && NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) || NE_16( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) ) -#else - IF( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hCrend != NULL ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) && NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) && ( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) || NE_16( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); -#endif } test(); @@ -1512,21 +1500,13 @@ static ivas_error ivas_mc_dec_reconfig_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0] != NULL ) -#else - IF( st_ivas->hDiracDecBin != NULL ) -#endif { test(); test(); IF( NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC ) && NE_16( st_ivas->renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) && NE_16( st_ivas->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); -#else - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); -#endif } } @@ -1551,46 +1531,25 @@ static ivas_error ivas_mc_dec_reconfig_fx( } IF( EQ_16( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper, 1 ) ) != IVAS_ERR_OK ) -#else - IF( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper ) ) != IVAS_ERR_OK ) -#endif { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend Wrapper\n" ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT st_ivas->hCrendWrapper->hCrend[0] = NULL; st_ivas->hCrendWrapper->hHrtfCrend = NULL; IF( ( st_ivas->hCrendWrapper->hCrend[0] = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend\n" ); } -#else - st_ivas->hCrendWrapper->hCrend = NULL; - st_ivas->hCrendWrapper->hHrtfCrend = NULL; - IF( ( st_ivas->hCrendWrapper->hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend\n" ); - } -#endif } } ELSE IF( st_ivas->hCrendWrapper == NULL && ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) #else IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) -#endif -#else -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) -#else - IF( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) -#endif #endif { return error; diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c index 1b174493d..9c603fa93 100644 --- a/lib_dec/ivas_objectRenderer_internal_fx.c +++ b/lib_dec/ivas_objectRenderer_internal_fx.c @@ -296,7 +296,6 @@ ivas_error ivas_td_binaural_renderer_sf_fx( return IVAS_ERR_OK; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*---------------------------------------------------------------------* * ivas_td_binaural_renderer_sf_splitBinaural() * @@ -450,4 +449,3 @@ ivas_error ivas_td_binaural_renderer_sf_splitBinaural( return IVAS_ERR_OK; } -#endif diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index 9d8b43515..35f4f1c4b 100644 --- a/lib_dec/ivas_omasa_dec_fx.c +++ b/lib_dec/ivas_omasa_dec_fx.c @@ -419,17 +419,9 @@ ivas_error ivas_omasa_dec_config_fx( * TD Decorrelator *-----------------------------------------------------------------*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0] != NULL ) -#else - IF( st_ivas->hDiracDecBin != NULL ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -763,12 +755,10 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( Word32 *p_sepobj_fx[MAX_NUM_OBJECTS]; // Q11 Word32 data_separated_objects_fx[MAX_NUM_OBJECTS][L_FRAME48k]; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 slot_idx_start; slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered; move16(); -#endif FOR( n = 0; n < MAX_NUM_OBJECTS; n++ ) { @@ -782,7 +772,6 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( /* reset combined orientation access index before calling the td renderer */ ivas_combined_orientation_set_to_start_index( st_ivas->hCombinedOrientationData ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { Word16 slot_idx, num_cldfb_bands, nchan_transport_orig, cldfb_slots; @@ -835,7 +824,6 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( } else { -#endif IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) { return error; @@ -845,9 +833,7 @@ ivas_error ivas_omasa_dirac_td_binaural_jbm_fx( { v_add_fx( output_fx[n], p_sepobj_fx[n], output_fx[n], *nSamplesRendered ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif return IVAS_ERR_OK; } diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c index 87805290b..a8754d84f 100644 --- a/lib_dec/ivas_osba_dec_fx.c +++ b/lib_dec/ivas_osba_dec_fx.c @@ -137,12 +137,10 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx( Word32 output_separated_objects_fx[BINAURAL_CHANNELS][L_FRAME48k]; // VE2SB: TBV Word32 *p_sepobj_fx[BINAURAL_CHANNELS]; Word16 channel_offset; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 slot_idx_start; slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered; move16(); -#endif FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) { @@ -162,7 +160,6 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { Word16 slot_idx, num_cldfb_bands, b, nchan_transport_orig; @@ -217,7 +214,6 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx( } else { -#endif IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) { return error; @@ -232,9 +228,7 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx( move32(); } } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif return IVAS_ERR_OK; } diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c index 4a3362cd2..bdf7b67bc 100644 --- a/lib_dec/ivas_output_config_fx.c +++ b/lib_dec/ivas_output_config_fx.c @@ -80,11 +80,7 @@ void ivas_renderer_select( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { test(); test(); @@ -95,11 +91,7 @@ void ivas_renderer_select( { IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) -#endif { *renderer_type = RENDERER_BINAURAL_PARAMETRIC; move16(); @@ -113,11 +105,7 @@ void ivas_renderer_select( ELSE /* ISM_MODE_DISC */ { test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { *renderer_type = RENDERER_BINAURAL_OBJECTS_TD; move16(); @@ -137,11 +125,7 @@ void ivas_renderer_select( { *internal_config = output_config; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) -#endif { *renderer_type = RENDERER_BINAURAL_PARAMETRIC; move16(); @@ -158,11 +142,7 @@ void ivas_renderer_select( move16(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) -#endif { *renderer_type = RENDERER_BINAURAL_FASTCONV; move16(); @@ -217,11 +197,7 @@ void ivas_renderer_select( *internal_config = output_config; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) -#endif { *renderer_type = RENDERER_BINAURAL_PARAMETRIC; move16(); @@ -237,11 +213,7 @@ void ivas_renderer_select( *internal_config = transport_config; move16(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { test(); test(); diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index 121b8a795..8f8a7f486 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -183,11 +183,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) -#else - IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && ( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) -#endif { RENDERER_TYPE renderer_type_new; Word16 sba_order_internal; @@ -198,11 +194,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( /* copy the logic from ivas_renderer_select(), because calling this function has too many side effects that would affect the flushing */ IF( LE_16( ivas_get_sba_num_TCs_fx( ivas_total_brate, sba_order_internal ), 2 ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) -#endif { renderer_type_new = RENDERER_BINAURAL_PARAMETRIC; move16(); @@ -216,11 +208,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( ELSE { test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) -#endif { renderer_type_new = RENDERER_BINAURAL_FASTCONV; move16(); @@ -639,7 +627,6 @@ ivas_error ivas_sba_dec_reconfigure_fx( * TD Decorrelator *-----------------------------------------------------------------*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0] != NULL ) { IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin[0]->hTdDecorr ), &( st_ivas->hDiracDecBin[0]->useTdDecorr ) ) ), IVAS_ERR_OK ) ) @@ -647,15 +634,6 @@ ivas_error ivas_sba_dec_reconfigure_fx( return error; } } -#else - IF( st_ivas->hDiracDecBin != NULL ) - { - IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( st_ivas->hDiracDecBin->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) - { - return error; - } - } -#endif /*-----------------------------------------------------------------* * CLDFB instances @@ -805,11 +783,7 @@ void ivas_sba_dec_digest_tc_fx( ivas_spar_dec_digest_tc_fx( st_ivas, st_ivas->nchan_transport, nCldfbSlots, nSamplesForRendering ); } test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0] != NULL && st_ivas->hDiracDecBin[0]->useTdDecorr ) -#else - IF( st_ivas->hDiracDecBin != NULL && ( st_ivas->hDiracDecBin->useTdDecorr ) ) -#endif { Word16 nSamplesLeftForTD, default_frame; Word32 *decorr_signal[BINAURAL_CHANNELS]; @@ -832,17 +806,9 @@ void ivas_sba_dec_digest_tc_fx( { Word16 nSamplesToDecorr = s_min( nSamplesLeftForTD, default_frame ); /*Q0*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( st_ivas->hDiracDecBin[0]->hTdDecorr ) -#else - IF( st_ivas->hDiracDecBin->hTdDecorr ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_td_decorr_process_fx( st_ivas->hDiracDecBin[0]->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr ); -#else - ivas_td_decorr_process_fx( st_ivas->hDiracDecBin->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr ); -#endif } FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c index 530614fe9..7f12c592e 100644 --- a/lib_dec/ivas_spar_decoder_fx.c +++ b/lib_dec/ivas_spar_decoder_fx.c @@ -2036,13 +2036,8 @@ void ivas_spar_dec_upmixer_sf_fx( test(); test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) || !( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) && !( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) ) -#else - IF( ( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_FOA ) || !( EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( st_ivas->hOutSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) && - !( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) && EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) ) -#endif { FOR( ts = 0; ts < hSpar->subframe_nbslots[hSpar->subframes_rendered]; ts++ ) { diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index c6f06f142..d7736e244 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -860,34 +860,8 @@ typedef struct renderer_struct } ISM_RENDERER_DATA, *ISM_RENDERER_HANDLE; -#ifndef SPLIT_REND_WITH_HEAD_ROT -/* Fastconv binaural data structure */ -typedef struct ivas_binaural_rendering_struct -{ - /* Common variables for all modules */ - IVAS_OUTPUT_SETUP_HANDLE hInputSetup; /* pointer to input spatial format for binaural renderer*/ - EFAP_HANDLE hEFAPdata; /* EFAP structure*/ - Word32 *hoa_dec_mtx; /* pointer to HOA decoder mtx */ /*Q29*/ - Word8 rotInCldfb; /* Flag to enable rotation within bin Renderer in CLDFB*/ - Word16 max_band; /* band upto which rendering is performed */ - Word16 conv_band; /* band upto which convolution in cldfb domain is performed */ - Word16 timeSlots; /* number of time slots of binaural renderer */ - Word16 nInChannels; /* number input channels */ - Word8 render_lfe; /* Flag to render LFE in binaural rendering*/ - IVAS_FORMAT ivas_format; /* format; corresponds to st_ivas->ivas_format, unless the signal gets transormed to a different domain for rendering */ - - /* Convolution module structure */ - BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule; - - /* Variables related to reverberator module */ - Word32 earlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; - REVERB_STRUCT_HANDLE hReverb; - -} BINAURAL_RENDERER, *BINAURAL_RENDERER_HANDLE; -#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------------------* * IVAS decoder specific ISAR wrapper structures *----------------------------------------------------------------------------------*/ @@ -917,7 +891,6 @@ typedef struct Word16 numTdSamplesPerChannelCached; } ISAR_DEC_SPLIT_REND_WRAPPER, *ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE; -#endif /*----------------------------------------------------------------------------------* * MASA decoder structures @@ -1062,9 +1035,7 @@ typedef struct decoder_config_structure Word16 Opt_tsm; /* indicates whether time scaling modification is activated */ IVAS_RENDER_FRAMESIZE render_framesize; Word16 Opt_delay_comp; /* flag indicating delay compensation active */ -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t Opt_Limiter; -#endif } DECODER_CONFIG, *DECODER_CONFIG_HANDLE; @@ -1141,11 +1112,7 @@ typedef struct Decoder_Struct BINAURAL_RENDERER_HANDLE hBinRenderer; /* fastconv binaural renderer handle */ BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd; /* Time domain binaural object renderer handle */ TDREND_HRFILT_FiltSet_t *hHrtfTD; /* pointer to HRTF data for TD renderer */ -#ifdef SPLIT_REND_WITH_HEAD_ROT DIRAC_DEC_BIN_HANDLE hDiracDecBin[MAX_HEAD_ROT_POSES]; /* parametric binaural renderer handle */ -#else - DIRAC_DEC_BIN_HANDLE hDiracDecBin; /* parametric binaural renderer handle */ -#endif LSSETUP_CONVERSION_HANDLE hLsSetUpConversion; /* MC LS configuration convertion handle */ EFAP_HANDLE hEFAPdata; /* EFAP structure */ VBAP_HANDLE hVBAPdata; /* VBAP structure */ @@ -1172,10 +1139,8 @@ typedef struct Decoder_Struct Word16 flag_omasa_brate; -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend; /* ISAR split binaural rendering handle */ BINAURAL_TD_OBJECT_RENDERER_HANDLE hTdRendHandles[MAX_HEAD_ROT_POSES - 1]; -#endif /* JBM module */ DECODER_TC_BUFFER_HANDLE hTcBuffer; /* JBM structure */ diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index d7a110a37..28b8594fe 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -144,7 +144,6 @@ ivas_error IVAS_DEC_GetSamples( bool *needNewFrame /* o : indication that the decoder needs a new frame */ ); -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_error IVAS_DEC_GetSplitBinauralBitstream( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ Word16 *pcmBuf_out, /* o : output synthesis signal for BINAURAL_SPLIT_PCM */ @@ -179,7 +178,6 @@ int16_t IVAS_DEC_is_split_rendering_enabled( int16_t IVAS_DEC_is_split_rendering_coded_out( IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ ); -#endif /*! r: error code */ ivas_error IVAS_DEC_GetObjectMetadata( @@ -201,12 +199,8 @@ ivas_error IVAS_DEC_FeedHeadTrackData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */ IVAS_VECTOR3 Pos, /* i : listener position */ -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word16 subframe_idx, /* i : subframe index */ const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i : external control for rotation axis for split rendering */ -#else - const Word16 subframe_idx /* i : subframe index */ -#endif ); /*! r: error code */ @@ -283,12 +277,10 @@ ivas_error IVAS_DEC_EnableVoIP( const IVAS_DEC_INPUT_FORMAT inputFormat /* i : format of the input bitstream */ ); -#ifdef SPLIT_REND_WITH_HEAD_ROT /*! r: error code */ ivas_error IVAS_DEC_EnableSplitRendering( IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ ); -#endif ivas_error IVAS_DEC_SetRenderFramesize( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index de939c5b0..dd5db0071 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -114,11 +114,9 @@ static ivas_error IVAS_DEC_RendererFeedTcSamples( IVAS_DEC_HANDLE hIvasDec, cons static ivas_error IVAS_DEC_GetRenderedSamples( IVAS_DEC_HANDLE hIvasDec, const UWord16 nSamplesForRendering, UWord16 *nSamplesRendered, UWord16 *nSamplesAvailableNext, Word16 *pcmBuf ); static ivas_error IVAS_DEC_GetBufferedNumberOfSamples( IVAS_DEC_HANDLE hIvasDec, Word16 *nSamplesBuffered ); static Word16 get_render_frame_size_ms( IVAS_RENDER_FRAMESIZE render_framesize ); -#ifdef SPLIT_REND_WITH_HEAD_ROT static ivas_error isar_set_split_rend_setup( ISAR_DEC_SPLIT_REND_WRAPPER *hSplitBinRend, const ISAR_SPLIT_REND_CONFIG_DATA *hSplitBinConfig, const COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, ISAR_SPLIT_REND_BITS_DATA *splitRendBits ); static ivas_error ivas_create_handle_isar( ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE *hSplitBinRend_out ); static void ivas_destroy_handle_isar( ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE *hSplitBinRend_out ); -#endif /*---------------------------------------------------------------------* * IVAS_DEC_Open() @@ -276,7 +274,6 @@ ivas_error IVAS_DEC_Open( return IVAS_ERR_WRONG_PARAMS; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-------------------------------------------------------------------------* * isar_set_split_rend_setup() * @@ -313,7 +310,6 @@ static ivas_error isar_set_split_rend_setup( return IVAS_ERR_OK; } -#endif /*---------------------------------------------------------------------* * init_decoder_config() @@ -336,10 +332,8 @@ static void init_decoder_config( hDecoderConfig->Opt_non_diegetic_pan = 0; hDecoderConfig->non_diegetic_pan_gain_fx = 0; // Q15 hDecoderConfig->Opt_tsm = 0; -#ifdef SPLIT_REND_WITH_HEAD_ROT hDecoderConfig->Opt_Limiter = 1; move16(); -#endif hDecoderConfig->Opt_delay_comp = 0; hDecoderConfig->Opt_ExternalOrientation = 0; hDecoderConfig->Opt_dpid_on = 0; @@ -386,10 +380,8 @@ void IVAS_DEC_Close( ( *phIvasDec )->hVoIP = NULL; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* destroy Split binaural renderer (ISAR) handle */ ivas_destroy_handle_isar( &( *phIvasDec )->st_ivas->hSplitBinRend ); -#endif IF( ( *phIvasDec )->st_ivas ) { @@ -576,13 +568,11 @@ ivas_error IVAS_DEC_Configure( move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { hDecoderConfig->Opt_Headrotation = TRUE; move16(); } -#endif /* Set decoder parameters to initial values */ IF( NE_32( ( error = ivas_init_decoder_front( st_ivas ) ), IVAS_ERR_OK ) ) @@ -590,7 +580,6 @@ ivas_error IVAS_DEC_Configure( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* create ISAR handle */ IF( EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { @@ -599,7 +588,6 @@ ivas_error IVAS_DEC_Configure( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for ISAR handle" ); } } -#endif if ( EQ_16( hIvasDec->mode, IVAS_DEC_MODE_EVS ) ) { @@ -622,7 +610,6 @@ ivas_error IVAS_DEC_Configure( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*---------------------------------------------------------------------* * IVAS_DEC_EnableSplitRendering( ) * @@ -658,7 +645,6 @@ ivas_error IVAS_DEC_EnableSplitRendering( return error; } -#endif /*---------------------------------------------------------------------* * get_render_framesize_ms( ) @@ -1121,7 +1107,6 @@ ivas_error IVAS_DEC_GetSamples( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------* * Binaural split rendering setup *----------------------------------------------------------------*/ @@ -1133,7 +1118,6 @@ ivas_error IVAS_DEC_GetSamples( isar_set_split_rend_ht_setup_fx( &hIvasDec->st_ivas->hSplitBinRend->splitrend, hIvasDec->st_ivas->hCombinedOrientationData->Quaternions, hIvasDec->st_ivas->hCombinedOrientationData->Rmat_fx ); } } -#endif hIvasDec->updateOrientation = false; move16(); @@ -1297,7 +1281,6 @@ return IVAS_ERR_OK; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*---------------------------------------------------------------------* * IVAS_DEC_GetSplitBinauralBitstream( ) * @@ -1555,7 +1538,6 @@ IVAS_DEC_GetSplitBinauralBitstream( return error; } -#endif /*---------------------------------------------------------------------* @@ -2226,12 +2208,8 @@ ivas_error IVAS_DEC_FeedHeadTrackData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */ IVAS_VECTOR3 Pos, /* i : listener position */ -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word16 subframe_idx, /* i : subframe index */ const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i : external control for rotation axis for split rendering */ -#else - const Word16 subframe_idx /* i : subframe index */ -#endif ) { HEAD_TRACK_DATA_HANDLE hHeadTrackData; @@ -2252,19 +2230,12 @@ ivas_error IVAS_DEC_FeedHeadTrackData( /* Move head-tracking data to the decoder handle */ /* check for Euler angle signaling */ -#ifdef SPLIT_REND_WITH_HEAD_ROT /* check for Euler angle signaling */ IF( EQ_32( orientation.w_fx, L_negate( 12582912 ) ) && EQ_16( orientation.q_fact, Q22 ) ) { Euler2Quat_fx( deg2rad_fx( orientation.x_fx ), deg2rad_fx( orientation.y_fx ), deg2rad_fx( orientation.z_fx ), &orientation ); modify_Quat_q_fx( &orientation, &orientation, Q29 ); } -#else - IF( EQ_32( orientation.w_fx, -1610612736 /* -3.0f in Q29 */ ) ) - { - Euler2Quat_fx( deg2rad_fx( orientation.x_fx ), deg2rad_fx( orientation.y_fx ), deg2rad_fx( orientation.z_fx ), &orientation ); - } -#endif Word32 updateRate_fx = 1677721600; // value is 200 in Q23 move32(); @@ -2302,10 +2273,8 @@ ivas_error IVAS_DEC_FeedHeadTrackData( move32(); move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT hHeadTrackData->sr_pose_pred_axis = rot_axis; move32(); -#endif hIvasDec->updateOrientation = true; move16(); @@ -2644,7 +2613,6 @@ static ivas_error copyRendererConfigStruct( Copy32( hRCin->roomAcoustics.pAcoustic_dsr_fx, hRCout->roomAcoustics.pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX ); // Q30 Copy( hRCin->directivity_fx, hRCout->directivity_fx, 3 * MAX_NUM_OBJECTS ); -#ifdef SPLIT_REND_WITH_HEAD_ROT hRCout->split_rend_config.splitRendBitRate = SPLIT_REND_768k; hRCout->split_rend_config.dof = 3; hRCout->split_rend_config.hq_mode = 0; @@ -2665,7 +2633,6 @@ static ivas_error copyRendererConfigStruct( move32(); move32(); move32(); -#endif hRCout->roomAcoustics.use_er = hRCin->roomAcoustics.use_er; hRCout->roomAcoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity; @@ -2731,9 +2698,7 @@ ivas_error IVAS_DEC_FeedRenderConfig( ) { RENDER_CONFIG_HANDLE hRenderConfig; -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_error error; -#endif test(); test(); @@ -2772,7 +2737,6 @@ ivas_error IVAS_DEC_FeedRenderConfig( Copy( renderConfig.directivity_fx, hRenderConfig->directivity_fx, 3 * MAX_NUM_OBJECTS ); -#ifdef SPLIT_REND_WITH_HEAD_ROT hRenderConfig->split_rend_config = renderConfig.split_rend_config; /* Overwrite any pose correction settings if 0 DOF (no pose correction) was selected */ @@ -2785,7 +2749,6 @@ ivas_error IVAS_DEC_FeedRenderConfig( { return error; } -#endif return IVAS_ERR_OK; } @@ -2841,13 +2804,8 @@ ivas_error IVAS_DEC_GetDelay( } move32(); -#ifdef SPLIT_REND_WITH_HEAD_ROT nSamples[1] = NS2SA_FX2( hDecoderConfig->output_Fs, get_delay_fx( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0], hDecoderConfig->output_config ) ); move16(); -#else - nSamples[1] = NS2SA_FX2( hDecoderConfig->output_Fs, get_delay_fx( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0] ) ); - move16(); -#endif nSamples[2] = extract_l( W_round64_L( W_mult0_32_32( L_shl( st_ivas->binaural_latency_ns, 1 ), out_fs_fx ) ) ); move16(); nSamples[0] = add( nSamples[1], nSamples[2] ); @@ -3675,11 +3633,7 @@ static ivas_error printConfigInfo_dec( test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) -#else - IF( ( EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( (Word16) output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) -#endif { fprintf( stdout, "Render framesize: %dms\n", get_render_frame_size_ms( st_ivas->hDecoderConfig->render_framesize ) ); } @@ -4074,7 +4028,6 @@ static ivas_error IVAS_DEC_VoIP_reconfigure( } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*---------------------------------------------------------------------* * IVAS_DEC_GetSplitRendBitstreamHeader() * @@ -4279,4 +4232,3 @@ Word16 IVAS_DEC_is_split_rendering_coded_out( return isSplitCoded; } -#endif diff --git a/lib_enc/lib_enc_fx.c b/lib_enc/lib_enc_fx.c index 8b20cab7d..32c26be28 100644 --- a/lib_enc/lib_enc_fx.c +++ b/lib_enc/lib_enc_fx.c @@ -1572,13 +1572,8 @@ ivas_error IVAS_ENC_GetDelay( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#ifdef SPLIT_REND_WITH_HEAD_ROT *delay = NS2SA_FX2( hEncoderConfig->input_Fs, get_delay_fx( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL, IVAS_AUDIO_CONFIG_INVALID ) ); move16(); -#else - *delay = NS2SA_FX2( hEncoderConfig->input_Fs, get_delay_fx( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL ) ); /*Q0*/ - move16(); -#endif *delay = imult1616( *delay, hEncoderConfig->nchan_inp ); /*Q0*/ move16(); diff --git a/lib_isar/isar_MSPred.c b/lib_isar/isar_MSPred.c index 1df47d695..040fcc3a9 100644 --- a/lib_isar/isar_MSPred.c +++ b/lib_isar/isar_MSPred.c @@ -32,7 +32,6 @@ #include "options.h" #include -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "isar_lcld_rom_tables.h" #include "isar_lcld_prot.h" #include "isar_prot.h" @@ -547,4 +546,3 @@ void writeMSPred( return; } #endif -#endif diff --git a/lib_isar/isar_NoiseGen.c b/lib_isar/isar_NoiseGen.c index 7273b0e81..1a6881681 100644 --- a/lib_isar/isar_NoiseGen.c +++ b/lib_isar/isar_NoiseGen.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "prot_fx.h" #include "isar_lcld_prot.h" @@ -55,4 +54,3 @@ void DeleteNoiseGen( NoiseGen *psNoiseGen ) extern float GetNoise( NoiseGen *psNoiseGen ); extern Word32 GetNoise_fx( NoiseGen *psNoiseGen ); -#endif diff --git a/lib_isar/isar_PerceptualModel.c b/lib_isar/isar_PerceptualModel.c index 16558dd36..b9a5b1b33 100644 --- a/lib_isar/isar_PerceptualModel.c +++ b/lib_isar/isar_PerceptualModel.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "isar_lcld_prot.h" #include "prot_fx.h" #include "isar_lcld_rom_tables.h" @@ -466,4 +465,3 @@ void PerceptualModelStereo_fx( return; } -#endif diff --git a/lib_isar/isar_PredDecoder.c b/lib_isar/isar_PredDecoder.c index b30a6e0a8..a202aaa1c 100644 --- a/lib_isar/isar_PredDecoder.c +++ b/lib_isar/isar_PredDecoder.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "prot_fx.h" #include "isar_prot.h" @@ -492,4 +491,3 @@ void ApplyInversePredictors_fx( return; } -#endif diff --git a/lib_isar/isar_PredEncoder.c b/lib_isar/isar_PredEncoder.c index 0cd32b70c..8eed33ca6 100644 --- a/lib_isar/isar_PredEncoder.c +++ b/lib_isar/isar_PredEncoder.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "isar_lcld_prot.h" #include "isar_lcld_rom_tables.h" @@ -1212,4 +1211,3 @@ Word32 WritePredictors( return iBitsWritten; } -#endif diff --git a/lib_isar/isar_RMSEnvGrouping.c b/lib_isar/isar_RMSEnvGrouping.c index 9b5de2574..9a7b2ba54 100644 --- a/lib_isar/isar_RMSEnvGrouping.c +++ b/lib_isar/isar_RMSEnvGrouping.c @@ -34,7 +34,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "prot_fx.h" #include "isar_lcld_prot.h" @@ -961,4 +960,3 @@ void ComputeEnvelopeGrouping( return; } -#endif diff --git a/lib_isar/isar_cnst.h b/lib_isar/isar_cnst.h index ad6bf483a..4aef03cf2 100644 --- a/lib_isar/isar_cnst.h +++ b/lib_isar/isar_cnst.h @@ -38,7 +38,6 @@ /* clang-format off */ -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------------------* * Split Binaural Rendering Constants @@ -147,7 +146,6 @@ typedef enum #define SPLIT_REND_512k 512000 #define SPLIT_REND_768k 768000 -#endif /*SPLIT_REND_WITH_HEAD_ROT */ #endif /*ISAR_CNST_H */ /* clang-format on */ diff --git a/lib_isar/isar_lc3plus_common.c b/lib_isar/isar_lc3plus_common.c index 6a4ef18ed..5c56c0b43 100644 --- a/lib_isar/isar_lc3plus_common.c +++ b/lib_isar/isar_lc3plus_common.c @@ -35,7 +35,6 @@ #include "ivas_error.h" #include "lc3.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-----------------------------------------------------------------------------------------* * Function ISAR_LC3PLUS_LC3plusErrToIvasErr() * @@ -84,4 +83,3 @@ ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtp return IVAS_ERR_UNKNOWN; } -#endif diff --git a/lib_isar/isar_lc3plus_common.h b/lib_isar/isar_lc3plus_common.h index 6042e8859..2638ea8a9 100644 --- a/lib_isar/isar_lc3plus_common.h +++ b/lib_isar/isar_lc3plus_common.h @@ -37,7 +37,6 @@ #include #include "options.h" #include "ivas_error.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "lc3.h" #include "isar_lc3plus_payload.h" @@ -62,5 +61,4 @@ ivas_error ISAR_LC3PLUS_LC3plusErrToIvasErr( const LC3PLUS_Error lc3PlusError ); /*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */ ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtpError ); -#endif /* SPLIT_REND_WITH_HEAD_ROT */ #endif /* ISAR_LC3PLUS_COM_H */ diff --git a/lib_isar/isar_lc3plus_dec.c b/lib_isar/isar_lc3plus_dec.c index 5a82dc13c..ea19833ba 100644 --- a/lib_isar/isar_lc3plus_dec.c +++ b/lib_isar/isar_lc3plus_dec.c @@ -40,7 +40,6 @@ #include "ivas_error_utils.h" #include "wmc_auto.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT @@ -559,4 +558,3 @@ ivas_error ISAR_LC3PLUS_DEC_Conceal( return isar_LC3PLUS_DEC_Decode_or_Conceal_internal( handle, bitstream_in, 0, badFrameIndicator, pcm_out ); } -#endif /* SPLIT_REND_WITH_HEAD_ROT */ diff --git a/lib_isar/isar_lc3plus_dec.h b/lib_isar/isar_lc3plus_dec.h index f946a6402..f3e969940 100644 --- a/lib_isar/isar_lc3plus_dec.h +++ b/lib_isar/isar_lc3plus_dec.h @@ -35,7 +35,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "lc3.h" #include "ivas_error.h" #include "ivas_cnst.h" @@ -107,5 +106,4 @@ ivas_error ISAR_LC3PLUS_DEC_Conceal( ); -#endif /* SPLIT_REND_WITH_HEAD_ROT */ #endif /* ISAR_LC3PLUS_DEC_H */ diff --git a/lib_isar/isar_lc3plus_enc.c b/lib_isar/isar_lc3plus_enc.c index 1de448423..467db9116 100644 --- a/lib_isar/isar_lc3plus_enc.c +++ b/lib_isar/isar_lc3plus_enc.c @@ -77,7 +77,6 @@ static int32_t limit_per_channel_bitrate( LC3PLUS_CONFIG config, return -1; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-------------------------------------------------------------------* * Function ISAR_LC3PLUS_ENC_Open() * @@ -582,4 +581,3 @@ ivas_error ISAR_LC3PLUS_ENC_Encode( return IVAS_ERR_OK; } -#endif /* SPLIT_REND_WITH_HEAD_ROT */ diff --git a/lib_isar/isar_lc3plus_enc.h b/lib_isar/isar_lc3plus_enc.h index 5487f712c..eeef615fc 100644 --- a/lib_isar/isar_lc3plus_enc.h +++ b/lib_isar/isar_lc3plus_enc.h @@ -35,7 +35,6 @@ #include #include "ivas_error.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "lc3.h" #include "isar_lc3plus_common.h" #include "typedef.h" @@ -85,6 +84,5 @@ ivas_error ISAR_LC3PLUS_ENC_Encode( void *bitstream_out, /* o : pointer to bitstream frame */ const Word32 bitstream_out_size, /* i : size of the bitstream_out buffer in bytes. Must be equal to ISAR_LC3PLUS_ENC_GetOutputBitstreamSize. */ Word16 q_in[16] ); -#endif #endif /* ISAR_LC3PLUS_ENC_H */ diff --git a/lib_isar/isar_lc3plus_payload.c b/lib_isar/isar_lc3plus_payload.c index 54895c78b..291cd9d05 100644 --- a/lib_isar/isar_lc3plus_payload.c +++ b/lib_isar/isar_lc3plus_payload.c @@ -36,7 +36,6 @@ #include "isar_lc3plus_payload.h" #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT static LC3PLUS_RTP_ERR s_frame_duration_ms_from_fdi( int32_t *frame_duration_us, const LC3PLUS_RTP_FTD_FDI fdi ) { if ( NULL == frame_duration_us ) @@ -818,4 +817,3 @@ LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_fdi_from_frame_duration_us( LC3PLUS_RTP_FTD_FDI return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; } -#endif /* SPLIT_REND_WITH_HEAD_ROT */ diff --git a/lib_isar/isar_lc3plus_payload.h b/lib_isar/isar_lc3plus_payload.h index 0eadc96a8..e95128578 100644 --- a/lib_isar/isar_lc3plus_payload.h +++ b/lib_isar/isar_lc3plus_payload.h @@ -38,7 +38,6 @@ #include "lc3.h" #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT /* Implementation of the "B.2.6 Table of contents" part of the RTP payload format * for LC3plus as specified in ETSI TS 103 634. */ @@ -210,5 +209,4 @@ LC3PLUS_RTP_ERR LC3PLUS_RTP_payload_deserialize( uint8_t *serialized_buffer, const size_t serialized_buffer_size ); -#endif /* #ifdef SPLIT_REND_WITH_HEAD_ROT */ #endif /* ISAR_LC3PLUS_PAYLOAD_H */ diff --git a/lib_isar/isar_lcld_decoder.c b/lib_isar/isar_lcld_decoder.c index a64a12aea..83f6261ee 100644 --- a/lib_isar/isar_lcld_decoder.c +++ b/lib_isar/isar_lcld_decoder.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "isar_lcld_prot.h" #include "isar_lcld_rom_tables.h" #include "prot_fx.h" @@ -1992,4 +1991,3 @@ static void ComputeAllocation( return; } -#endif diff --git a/lib_isar/isar_lcld_encoder.c b/lib_isar/isar_lcld_encoder.c index 48445d080..327edb6ad 100644 --- a/lib_isar/isar_lcld_encoder.c +++ b/lib_isar/isar_lcld_encoder.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include #include "isar_lcld_prot.h" @@ -2139,4 +2138,3 @@ static Word32 ComputeAllocation( } return iBitsUsed; } -#endif diff --git a/lib_isar/isar_lcld_prot.h b/lib_isar/isar_lcld_prot.h index 49e03f5ef..3f79a2c12 100644 --- a/lib_isar/isar_lcld_prot.h +++ b/lib_isar/isar_lcld_prot.h @@ -34,7 +34,6 @@ #define ISAR_LCLD_PROT_H #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "typedef.h" #include "common_api_types.h" #include "isar_lcld_rom_tables.h" @@ -450,7 +449,6 @@ void ComputeEnvelopeGrouping( Word16 q_final ); -#endif /* clang-format on */ #endif /* _LCLD_ENCODER_H_ */ diff --git a/lib_isar/isar_lcld_rom_tables.c b/lib_isar/isar_lcld_rom_tables.c index 8ecf74336..42554611f 100644 --- a/lib_isar/isar_lcld_rom_tables.c +++ b/lib_isar/isar_lcld_rom_tables.c @@ -32,7 +32,6 @@ #include "isar_lcld_rom_tables.h" #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "wmc_auto.h" #include "prot_fx.h" #include "isar_lcld_prot.h" @@ -21204,4 +21203,3 @@ const Word32 c_pfWindowLUT[LCLD_PRED_WIN_LEN] = /* Q31 */ { 190779840, 338280192, 610825408, 966922816, 1352359680, 1708457216, 1981002240, 2128502656, 2128502528, 1981002240, 1708456960, 1352359808, 966922624, 610825152, 338280192, 190779776 }; -#endif diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h index 6860dda91..6e8bcaf9f 100644 --- a/lib_isar/isar_prot.h +++ b/lib_isar/isar_prot.h @@ -36,7 +36,6 @@ #include "isar_stat.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "options.h" @@ -409,7 +408,6 @@ void lc3plusTimeAlignCldfbPoseCorr( SPLIT_REND_WRAPPER *hSplitBin, Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word16 *Q_in ); -#endif void ivas_cmult_fix( Word32 in1_re_fx, Word16 exp_re1, Word32 in1_im_fx, Word16 exp_im1, Word32 in2_re_fx, Word16 exp_re2, Word32 in2_im_fx, Word16 exp_im2, Word32 *out1_re_fx, Word32 *out1_im_fx, Word16 *exp_out1_re, Word16 *exp_out1_im ); diff --git a/lib_isar/isar_rom_post_rend.c b/lib_isar/isar_rom_post_rend.c index 99742bc4f..0af50df5c 100644 --- a/lib_isar/isar_rom_post_rend.c +++ b/lib_isar/isar_rom_post_rend.c @@ -43,7 +43,6 @@ /* clang-format off */ -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------* * Binuaral split rendering ROM tables *-----------------------------------------------------------------------*/ @@ -187,7 +186,6 @@ const int32_t ivas_split_rend_huff_roll_pred_consts[ISAR_SPLIT_REND_ROLL_PRED_QU {14,10,1022},{15,10,1023}, }; -#endif /* Tables for split renderer fixed converison */ const Word16 fade_table_fx[4] = diff --git a/lib_isar/isar_rom_post_rend.h b/lib_isar/isar_rom_post_rend.h index b9acd75e1..90bcae60b 100644 --- a/lib_isar/isar_rom_post_rend.h +++ b/lib_isar/isar_rom_post_rend.h @@ -41,7 +41,6 @@ #include "cnst.h" #include "isar_cnst.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------* * Binuaral split rendering ROM tables *-----------------------------------------------------------------------*/ @@ -74,7 +73,6 @@ extern const int32_t ivas_split_rend_huff_roll_pred_consts[ISAR_SPLIT_REND_ROLL_ extern const int32_t ivas_split_rend_huff_p_d_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3]; extern const int32_t ivas_split_rend_huff_p_d_diff_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3]; extern const int32_t split_rend_brate_tbl[]; -#endif /* Tables for fixed point conversion */ extern const Word16 fade_table_fx[4]; diff --git a/lib_isar/isar_splitRend_lcld_dec.c b/lib_isar/isar_splitRend_lcld_dec.c index ddf9515b9..723888709 100644 --- a/lib_isar/isar_splitRend_lcld_dec.c +++ b/lib_isar/isar_splitRend_lcld_dec.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "isar_prot.h" #include "ivas_prot_fx.h" #include "prot_fx.h" @@ -282,4 +281,3 @@ void isar_splitBinLCLDDecProcess( return; } -#endif diff --git a/lib_isar/isar_splitRend_lcld_enc.c b/lib_isar/isar_splitRend_lcld_enc.c index 6804e97a4..e75910e8c 100644 --- a/lib_isar/isar_splitRend_lcld_enc.c +++ b/lib_isar/isar_splitRend_lcld_enc.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "isar_prot.h" #include "ivas_prot_fx.h" #ifdef DEBUGGING @@ -236,4 +235,3 @@ void isar_splitBinLCLDEncProcess( return; } -#endif diff --git a/lib_isar/isar_splitRendererPLC.c b/lib_isar/isar_splitRendererPLC.c index e3a0ce0e8..c81d0e12f 100644 --- a/lib_isar/isar_splitRendererPLC.c +++ b/lib_isar/isar_splitRendererPLC.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "ivas_prot_fx.h" #include "prot_fx.h" @@ -1294,4 +1293,3 @@ void isar_splitBinRendPLC( return; } -#endif diff --git a/lib_isar/isar_splitRendererPost.c b/lib_isar/isar_splitRendererPost.c index 32a230318..085cae9fc 100644 --- a/lib_isar/isar_splitRendererPost.c +++ b/lib_isar/isar_splitRendererPost.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG #include @@ -1959,4 +1958,3 @@ void isar_init_split_post_rend_handles( return; } -#endif diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c index 9b4e470cf..5447aea1e 100644 --- a/lib_isar/isar_splitRendererPre.c +++ b/lib_isar/isar_splitRendererPre.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG #include @@ -3137,4 +3136,3 @@ void lc3plusTimeAlignCldfbPoseCorr( return; } -#endif diff --git a/lib_isar/isar_splitRenderer_utils.c b/lib_isar/isar_splitRenderer_utils.c index e8866f421..bfdb1454f 100644 --- a/lib_isar/isar_splitRenderer_utils.c +++ b/lib_isar/isar_splitRenderer_utils.c @@ -32,7 +32,6 @@ #include #include "options.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "ivas_prot_fx.h" #include "prot_fx.h" @@ -1358,4 +1357,3 @@ Word32 get_bit( } -#endif diff --git a/lib_isar/isar_stat.h b/lib_isar/isar_stat.h index 0b1e1bb07..3fc1580e2 100644 --- a/lib_isar/isar_stat.h +++ b/lib_isar/isar_stat.h @@ -38,7 +38,6 @@ #include "options.h" #include "stat_com.h" #include "ivas_stat_com.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include "isar_lcld_prot.h" #include "isar_lc3plus_enc.h" #include "isar_lc3plus_dec.h" @@ -253,6 +252,5 @@ typedef struct Word32 lc3plusDelaySamples; } SPLIT_REND_WRAPPER; -#endif #endif /* ISAR_STAT_H */ diff --git a/lib_isar/lib_isar_post_rend.c b/lib_isar/lib_isar_post_rend.c index 30f24b2b2..8ad605f40 100644 --- a/lib_isar/lib_isar_post_rend.c +++ b/lib_isar/lib_isar_post_rend.c @@ -38,14 +38,6 @@ #include "prot_fx.h" #include "ivas_prot_fx.h" #include "prot_fx.h" -#ifndef SPLIT_REND_WITH_HEAD_ROT - -int32_t ISAR_POST_REND_void_func( void ) -{ - return 0; -} - -#else #include "ivas_prot_rend_fx.h" #include @@ -1822,4 +1814,3 @@ int32_t ISAR_POST_REND_GetCntFramesLimited( #endif -#endif diff --git a/lib_isar/lib_isar_post_rend.h b/lib_isar/lib_isar_post_rend.h index b919bb1d2..70b46f57c 100644 --- a/lib_isar/lib_isar_post_rend.h +++ b/lib_isar/lib_isar_post_rend.h @@ -36,11 +36,6 @@ #include "common_api_types.h" #include -#ifndef SPLIT_REND_WITH_HEAD_ROT - -int32_t ISAR_POST_REND_void_func( void ); - -#else /*---------------------------------------------------------------------* * Renderer constants @@ -214,7 +209,6 @@ int32_t ISAR_POST_REND_GetCntFramesLimited( ); #endif -#endif /* SPLIT_REND_WITH_HEAD_ROT */ /* clang-format on */ diff --git a/lib_isar/lib_isar_pre_rend.c b/lib_isar/lib_isar_pre_rend.c index 55a306a40..32773ef7a 100644 --- a/lib_isar/lib_isar_pre_rend.c +++ b/lib_isar/lib_isar_pre_rend.c @@ -47,13 +47,6 @@ #include "wmc_auto.h" -#ifndef SPLIT_REND_WITH_HEAD_ROT -int32_t ISAR_PRE_REND_void_func( void ) -{ - return 0; -} - -#else /*-------------------------------------------------------------------* * Local constants @@ -238,7 +231,6 @@ void ISAR_PRE_REND_close( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { IF( hSplitBinRend->hCldfbHandles->cldfbSyn[ch] != NULL ) @@ -247,7 +239,6 @@ void ISAR_PRE_REND_close( hSplitBinRend->hCldfbHandles->cldfbSyn[ch] = NULL; } } -#endif free( hSplitBinRend->hCldfbHandles ); hSplitBinRend->hCldfbHandles = NULL; @@ -602,4 +593,3 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( return error; } -#endif diff --git a/lib_isar/lib_isar_pre_rend.h b/lib_isar/lib_isar_pre_rend.h index 41843ec84..dd0ad5755 100644 --- a/lib_isar/lib_isar_pre_rend.h +++ b/lib_isar/lib_isar_pre_rend.h @@ -36,11 +36,6 @@ #include "isar_stat.h" #include "isar_prot.h" -#ifndef SPLIT_REND_WITH_HEAD_ROT - -int32_t ISAR_PRE_REND_void_func( void ); - -#else ivas_error ISAR_PRE_REND_open( SPLIT_REND_WRAPPER *hSplitBinRend, /* i/o: Split renderer pre-renerer handle */ ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, /* i/o: Split renderer pre-renerer config */ @@ -81,5 +76,4 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( Word16 Q_buff, Word16 *Q_out ); -#endif #endif /* LIB_ISAR_PRE_REND_H */ diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index 392d8ea99..bf27912f7 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -207,9 +207,7 @@ static ivas_error ivas_rend_initCrend_fx( test(); test(); if ( NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) -#ifdef SPLIT_REND_WITH_HEAD_ROT && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) -#endif ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Encountered unsupported output type in Crend" ); @@ -1565,19 +1563,13 @@ static ivas_error ivas_er_init_handle( *------------------------------------------------------------------------*/ ivas_error ivas_rend_initCrendWrapper( -#ifdef SPLIT_REND_WITH_HEAD_ROT CREND_WRAPPER_HANDLE *pCrend, const int16_t num_poses -#else - CREND_WRAPPER_HANDLE *pCrend -#endif ) { Word16 i; CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; -#endif IF( pCrend == NULL ) { @@ -1596,9 +1588,7 @@ ivas_error ivas_rend_initCrendWrapper( move16(); ( *pCrend )->p_io_qfactor = &( *pCrend )->io_qfactor; -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) -#endif { hCrend = NULL; IF( ( hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL ) @@ -1642,17 +1632,12 @@ ivas_error ivas_rend_initCrendWrapper( move32(); move32(); -#ifdef SPLIT_REND_WITH_HEAD_ROT ( *pCrend )->hCrend[pos_idx] = hCrend; -#else - ( *pCrend )->hCrend = hCrend; -#endif } return IVAS_ERR_OK; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*------------------------------------------------------------------------- * ivas_rend_openMultiBinCrend() * @@ -1668,14 +1653,10 @@ ivas_error ivas_rend_openMultiBinCrend( { ivas_error error; -#ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, NULL /* hHrtfStatistics */, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK ) #else if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK ) -#endif -#else - if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs ) ) != IVAS_ERR_OK ) #endif { return error; @@ -1683,7 +1664,6 @@ ivas_error ivas_rend_openMultiBinCrend( return error; } -#endif /*------------------------------------------------------------------------- * ivas_rend_openCrend() @@ -1700,12 +1680,8 @@ ivas_error ivas_rend_openCrend( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES HRTFS_STATISTICS_HANDLE hHrtfStatistics, #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word32 output_Fs, const Word16 num_poses -#else - const Word32 output_Fs -#endif ) { Word16 i, subframe_length; @@ -1713,18 +1689,12 @@ ivas_error ivas_rend_openCrend( HRTFS_HANDLE hHrtf; CREND_HANDLE hCrend; ivas_error error; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; -#endif error = IVAS_ERR_OK; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( error = ivas_rend_initCrendWrapper( pCrend, num_poses ) ) != IVAS_ERR_OK ) -#else - IF( NE_32( ( error = ivas_rend_initCrendWrapper( pCrend ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -1739,15 +1709,9 @@ ivas_error ivas_rend_openCrend( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = ( *pCrend )->hCrend[pos_idx]; -#else - hCrend = ( *pCrend )->hCrend; -#endif hHrtf = ( *pCrend )->hHrtfCrend; IF( hHrtf != NULL ) @@ -1933,11 +1897,7 @@ ivas_error ivas_rend_openCrend( move32(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ( *pCrend )->hCrend[pos_idx] = hCrend; -#else - ( *pCrend )->hCrend = hCrend; -#endif } return IVAS_ERR_OK; } @@ -1949,18 +1909,12 @@ ivas_error ivas_rend_openCrend( *------------------------------------------------------------------------*/ void ivas_rend_closeCrend( -#ifdef SPLIT_REND_WITH_HEAD_ROT CREND_WRAPPER_HANDLE *pCrend, const Word16 num_poses -#else - CREND_WRAPPER_HANDLE *pCrend -#endif ) { Word16 i; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; -#endif CREND_HANDLE hCrend; test(); @@ -1974,15 +1928,9 @@ void ivas_rend_closeCrend( ivas_hrtf_close( &( *pCrend )->hHrtfCrend ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = ( *pCrend )->hCrend[pos_idx]; -#else - hCrend = ( *pCrend )->hCrend; -#endif IF( hCrend != NULL ) { FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) @@ -2074,11 +2022,7 @@ void ivas_rend_closeCrend( } free( hCrend ); hCrend = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT ( *pCrend )->hCrend[pos_idx] = hCrend; -#else - ( *pCrend )->hCrend = hCrend; -#endif } } @@ -2089,7 +2033,6 @@ void ivas_rend_closeCrend( } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*------------------------------------------------------------------------- * ivas_rend_closeCldfbRend() * @@ -2111,7 +2054,6 @@ void ivas_rend_closeCldfbRend( return; } -#endif /*-----------------------------------------------------------------------------------------* * Function ivas_rend_crendConvolver() @@ -2126,12 +2068,8 @@ static ivas_error ivas_rend_crendConvolver( Word32 *pcm_in[], // Qx Word32 *pcm_out[], // Qx const Word32 output_Fs, -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word16 i_ts, const Word16 pos_idx -#else - const Word16 i_ts -#endif ) { Word16 i, j, k, m; @@ -2152,11 +2090,7 @@ static ivas_error ivas_rend_crendConvolver( CREND_HANDLE hCrend; ivas_error error; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = pCrend->hCrend[pos_idx]; -#else - hCrend = pCrend->hCrend; -#endif IF( NE_32( ( error = getAudioConfigNumChannels( inConfig, &nchan_in ) ), IVAS_ERR_OK ) ) { @@ -2397,10 +2331,8 @@ ivas_error ivas_rend_crendProcessSubframe( Word32 *output[], /* i/o: input/output audio channels Qx */ const Word16 n_samples_to_render, /* i : output frame length per channel */ const Word32 output_Fs /* i : output sampling rate */ -#ifdef SPLIT_REND_WITH_HEAD_ROT , const Word16 pos_idx -#endif ) { Word16 subframe_idx, subframe_len; @@ -2412,11 +2344,7 @@ ivas_error ivas_rend_crendProcessSubframe( ivas_error error; Word8 combinedOrientationEnabled; CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = pCrend->hCrend[pos_idx]; -#else - hCrend = pCrend->hCrend; -#endif combinedOrientationEnabled = 0; move16(); @@ -2547,16 +2475,11 @@ ivas_error ivas_rend_crendProcessSubframe( test(); IF( EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) || EQ_32( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, tc_local_fx, p_pcm_tmp_fx, output_Fs, 0, pos_idx ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, tc_local_fx, p_pcm_tmp_fx, output_Fs, 0 ) ), IVAS_ERR_OK ) ) -#endif { return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( pCrend->hCrend[0]->hReverb != NULL ) { IF( NE_32( ( error = ivas_reverb_process_fx( pCrend->hCrend[pos_idx]->hReverb, inConfig, 1, tc_local_fx, p_pcm_tmp_fx, 0 ) ), IVAS_ERR_OK ) ) @@ -2564,15 +2487,6 @@ ivas_error ivas_rend_crendProcessSubframe( return error; } } -#else - IF( pCrend->hCrend->hReverb != NULL ) - { - IF( NE_32( ( error = ivas_reverb_process_fx( pCrend->hCrend->hReverb, inConfig, 1, tc_local_fx, p_pcm_tmp_fx, 0 ) ), IVAS_ERR_OK ) ) - { - return error; - } - } -#endif FOR( ch = 0; ch < nchan_in; ch++ ) { @@ -2598,11 +2512,7 @@ ivas_error ivas_rend_crendProcessSubframe( ivas_combined_orientation_update_index( hCombinedOrientationData, subframe_len ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( pCrend->hCrend[0]->hReverb != NULL ) -#else - IF( pCrend->hCrend->hReverb != NULL ) -#endif { *pCrend->p_io_qfactor = sub( *pCrend->p_io_qfactor, 2 ); move16(); @@ -2633,7 +2543,6 @@ ivas_error ivas_rend_crendProcessSubframe( return IVAS_ERR_OK; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-----------------------------------------------------------------------------------------* * Function ivas_rend_crend_ProcessSplitBin() * @@ -2972,4 +2881,3 @@ ivas_error ivas_rend_crendProcessSubframesSplitBin( return IVAS_ERR_OK; } -#endif diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index d0a5e47d1..1fb026078 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -108,21 +108,13 @@ static void ivas_dirac_dec_binaural_internal_fx( Decoder_Struct *st_ivas, COMBIN static void ivas_dirac_dec_decorrelate_slot_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, const Word16 num_freq_bands, const Word16 slot, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME] /*q_inp*/[CLDFB_NO_CHANNELS_MAX], Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word16 q_inp, Word32 decRe[][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 decIm[] /*q_inp*/[CLDFB_NO_CHANNELS_MAX] ); -#ifdef SPLIT_REND_WITH_HEAD_ROT static void ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const Word16 subframe, Word32 *subFrameTotalEne, Word16 *subFrameTotalEne_e, Word32 *IIReneLimiter, Word16 q ); static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, const SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, const PARAMBIN_REND_CONFIG_HANDLE hConfig, Word32 Rmat[3][3], const Word16 subframe, const Word16 isHeadtracked, const Word32 *subFrameTotalEne, Word16 *subFrameTotalEne_e, const Word32 *IIReneLimiter, const MASA_ISM_DATA_HANDLE hMasaIsmData ); -#else -static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q*/, Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q*/, Word32 Rmat_fx[3][3] /*Q30*/, const Word16 subframe, const Word16 isHeadtracked, const MASA_ISM_DATA_HANDLE hMasaIsmData, Word16 q ); -#endif static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, const Word16 max_band_decorr, Word32 Rmat[3][3] /*Q30*/, const Word16 subframe, const Word16 isHeadtracked, const Word16 nchanSeparateChannels, const MASA_ISM_DATA_HANDLE hMasaIsmData ); -#ifdef SPLIT_REND_WITH_HEAD_ROT static void ivas_dirac_dec_binaural_process_output_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], Word32 *output_fx[] /*q_out*/, Word16 *q_out, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, const Word16 q_inp, const Word16 max_band_decorr, const Word16 numInChannels, const Word16 processReverb, const Word16 subframe, const Word16 q_mat, Word32 outRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 outIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 reverbRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 reverbIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 decorrRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 decorrIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word16 *Q_inp_mix, const Word8 recompute ); -#else -static void ivas_dirac_dec_binaural_process_output_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], Word32 *output_fx[] /*q_out*/, Word16 *q_out, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, const Word16 q_inp, const Word16 max_band_decorr, const Word16 numInChannels, const Word16 processReverb, const Word16 subframe, const Word16 q_mat ); -#endif static void adaptTransportSignalsHeadtracked_fx( COMBINED_ORIENTATION_HANDLE hHeadTrackData, Word32 inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word32 inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX] /*q_inp*/, Word16 q_inp, const Word16 nBins, const Word16 nSlots, Word32 Rmat[3][3] /*Q30*/ ); @@ -140,11 +132,7 @@ static void getDirectPartGains_fx( const Word16 bin, Word16 aziDeg, Word16 eleDe static void getDirectPartGains_fx( const Word16 bin, Word16 aziDeg, Word16 eleDeg, Word32 *lRealp, Word32 *lImagp, Word32 *rRealp, Word32 *rImagp, const UWord8 renderStereoOutputInsteadOfBinaural, Word32 Rmat[3][3] /*Q30*/, PARAMBIN_HRTF_GAIN_CACHE *gainCache, const Word16 isHeadtracked ); #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT static void ivas_masa_ext_rend_parambin_internal_fx( MASA_EXT_REND_HANDLE hMasaExtRend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, Word32 *output_fx[] /*Q11*/, const Word16 subframe, const SPLIT_REND_WRAPPER *hSplitRendWrapper, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] ); -#else -static void ivas_masa_ext_rend_parambin_internal_fx( MASA_EXT_REND_HANDLE hMasaExtRend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, Word32 *output_fx[] /*Q11*/, const Word16 subframe ); -#endif static void formulate2x2MixingMatrix_fx( Word32 Ein1_fx /*q_Ein*/, Word32 Ein2_fx /*q_Ein*/, Word16 q_Ein, Word32 CinRe_fx /*q_Cin*/, Word32 CinIm_fx /*q_Cin*/, Word16 q_Cin, Word32 Eout1_fx /*q_Eout*/, Word32 Eout2_fx /*q_Eout*/, Word16 q_Eout, Word32 CoutRe_fx /*q_Cout*/, Word32 CoutIm_fx /*q_Cout*/, Word16 q_Cout, Word32 Q_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*Q31*/, Word32 Mre_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_M*/, Word32 Mim_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] /*q_M*/, Word16 *q_M, const Word16 regularizationFactor_fx /*Q14*/ ); @@ -189,7 +177,6 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( Word16 tmp2; ivas_error error; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 num_poses, pos_idx; num_poses = 1; @@ -203,9 +190,6 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( { hDiracDecBin = st_ivas->hDiracDecBin[pos_idx]; move32(); -#else - hDiracDecBin = st_ivas->hDiracDecBin; -#endif IF( hDiracDecBin == NULL ) { @@ -328,11 +312,7 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( ivas_binaural_reverb_close_fx( &( hDiracDecBin->hReverb ) ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( hDiracDecBin->hReverb == NULL && EQ_16( pos_idx, 0 ) ) /* open reverb only for the main direction */ -#else - IF( hDiracDecBin->hReverb == NULL ) -#endif { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES @@ -377,10 +357,8 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( ivas_dirac_dec_decorr_close_fx( &hDiracDecBin->h_freq_domain_decorr_ap_params, &hDiracDecBin->h_freq_domain_decorr_ap_state ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( pos_idx == 0 ) /* open decorrelator only for the main direction */ { -#endif IF( NE_32( ( error = ivas_td_decorr_reconfig_dec( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hDecoderConfig->output_Fs, &( hDiracDecBin->hTdDecorr ), &( hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) { return error; @@ -407,13 +385,11 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( return error; } } -#ifdef SPLIT_REND_WITH_HEAD_ROT } else { hDiracDecBin->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr; /* copy the flag, but the implementation re-uses the decorrelated signal */ } -#endif hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); /* Q14 */ move16(); @@ -422,12 +398,8 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( hDiracDecBin->phHrtfParambin = phHrtfParambin; #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT st_ivas->hDiracDecBin[pos_idx] = hDiracDecBin; } -#else - st_ivas->hDiracDecBin = hDiracDecBin; -#endif /* allocate transport channels */ IF( st_ivas->hTcBuffer == NULL ) @@ -468,16 +440,13 @@ void ivas_dirac_dec_close_binaural_data( DIRAC_DEC_BIN_HANDLE *hBinaural /* i/o: decoder DirAC binaural data handle */ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t pos_idx; -#endif test(); IF( hBinaural == NULL || *hBinaural == NULL ) { return; } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { IF( hBinaural[pos_idx] != NULL ) @@ -498,21 +467,6 @@ void ivas_dirac_dec_close_binaural_data( hBinaural[pos_idx] = NULL; } } -#else - IF( ( *hBinaural )->hReverb != NULL ) - { - ivas_binaural_reverb_close_fx( &( ( *hBinaural )->hReverb ) ); - } - - ivas_td_decorr_dec_close( &( ( *hBinaural )->hTdDecorr ) ); - IF( ( *hBinaural )->h_freq_domain_decorr_ap_params != NULL ) - { - ivas_dirac_dec_decorr_close_fx( &( *hBinaural )->h_freq_domain_decorr_ap_params, &( *hBinaural )->h_freq_domain_decorr_ap_state ); - } - - free( *hBinaural ); - *hBinaural = NULL; -#endif return; } @@ -720,7 +674,6 @@ static void ivas_dirac_dec_binaural_internal_fx( Word16 nBins, offsetSamples; Word16 i, j; Word16 q_mat, q_out; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; Word32 tmp_Cldfb_out_re[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; @@ -736,9 +689,6 @@ static void ivas_dirac_dec_binaural_internal_fx( Word16 Q_inp_mix; hDiracDecBin = st_ivas->hDiracDecBin[0]; -#else - hDiracDecBin = st_ivas->hDiracDecBin; -#endif assert( hDiracDecBin ); hSpatParamRendCom = st_ivas->hSpatParamRendCom; nBins = hSpatParamRendCom->num_freq_bands; @@ -1026,18 +976,13 @@ static void ivas_dirac_dec_binaural_internal_fx( IF( EQ_16( nchan_transport, 2 ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT /* in case of split rendering, determine the prototype rotation based on the main direction and use the same prototypes for the offset directions */ -#endif adaptTransportSignalsHeadtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx ); ivas_dirac_dec_binaural_check_and_switch_transports_headtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx ); } } test(); -#ifndef SPLIT_REND_WITH_HEAD_ROT - ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, Rmat_fx, subframe, hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, st_ivas->hMasaIsmData, q_inp ); -#endif IF( EQ_32( config_data.ivas_format, ISM_FORMAT ) ) { @@ -1055,13 +1000,11 @@ static void ivas_dirac_dec_binaural_internal_fx( move16(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, subframe, subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, q_inp ); ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat_fx, subframe, hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, st_ivas->hMasaIsmData ); -#endif nchanSeparateChannels = 0; move16(); @@ -1128,7 +1071,6 @@ static void ivas_dirac_dec_binaural_internal_fx( hDiracDecBin->q_processMtxDecPrev = q_mat; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT pMultiBinPoseData = NULL; IF( st_ivas->hSplitBinRend != NULL ) { @@ -1136,11 +1078,7 @@ static void ivas_dirac_dec_binaural_internal_fx( move32(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 ) -#endif { ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat, tmp_Cldfb_out_re, tmp_Cldfb_out_im, reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 ); @@ -1159,13 +1097,9 @@ static void ivas_dirac_dec_binaural_internal_fx( ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat, NULL, NULL, reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 ); } -#else - ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat ); -#endif hDiracDecBin->hDiffuseDist = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 ) { /* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer(), but using absolute rotation instead of delta rotations */ @@ -1277,7 +1211,6 @@ static void ivas_dirac_dec_binaural_internal_fx( } /* update this counter only after the last rendering of split directions */ -#endif hSpatParamRendCom->slots_rendered = add( hSpatParamRendCom->slots_rendered, hSpatParamRendCom->subframe_nbslots[subframe] ); hSpatParamRendCom->subframes_rendered = add( hSpatParamRendCom->subframes_rendered, 1 ); @@ -1361,7 +1294,6 @@ static void ivas_dirac_dec_decorrelate_slot_fx( } -#ifdef SPLIT_REND_WITH_HEAD_ROT static void ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, @@ -1670,675 +1602,23 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( set32_fx( hDiracDecBin->ChCrossImOut_fx, 0, nBins ); set16_fx( hDiracDecBin->ChCrossReOut_e, 0, nBins ); set16_fx( hDiracDecBin->ChCrossImOut_e, 0, nBins ); - - FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) - { - set32_fx( hDiracDecBin->ChEneOut_fx[ch], 0, nBins ); - set16_fx( hDiracDecBin->ChEneOut_e[ch], 0, nBins ); - } - set32_fx( hDiracDecBin->frameMeanDiffuseness_fx, 0, nBins ); - - set32_fx( frameMeanDiffusenessEneWeight_fx, 0, CLDFB_NO_CHANNELS_MAX ); - - FOR( idx = 0; idx < MAX_GAIN_CACHE_SIZE; idx++ ) - { - gainCache[idx].azi = -1000; /* Use -1000 as value for uninitialized cache. */ - move16(); - } - - dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe]; - - /* Determine target covariance matrix containing target binaural properties */ - FOR( bin = 0; bin < nBins; bin++ ) - { - Word32 diffuseness_fx = ONE_IN_Q30; /* ratio1 and ratio2 are subtracted from diffuseness further below */ - Word32 diffusenessValForDecorrelationReduction_fx = ONE_IN_Q30; - Word32 diffEneValForDecorrelationReduction_fx; - Word16 q_diffEneValForDecorrelationReduction; - Word16 surCoh_fx = 0, spreadCoh_fx = 0; /* Default values if spreadSurroundCoherenceApplied == false */ - Word32 diffEne_fx, dirEne_fx, meanEnePerCh_fx; - Word16 q_meanEnePerCh; - Word16 q_diffEne, q_dirEne; - Word16 dirIndex; - move16(); - move16(); - move32(); - move32(); - - /* When BINAURAL_ROOM is not indicated, hBinaural->earlyPartEneCorrection[bin] values are all 1.0f. - * When BINAURAL_ROOM is indicated, the binaural audio output is based on combined use of the - * HRTF data set and a BRIR-based data set. The HRTF data set is spectrally corrected to match - * the early spectrum of the BRIR data, using the spectral correction data in - * hBinaural->earlyPartEneCorrection[bin], based on the BRIR set. */ - meanEnePerCh_fx = Mpy_32_32( hDiracDecBin->earlyPartEneCorrection_fx[bin], subFrameTotalEne_fx[bin] ); // Q( q_meanEnePerCh ) - q_meanEnePerCh = add( sub( q_earlyPartEneCorrection, subFrameTotalEne_e[bin] ), 1 ); // q_earlyPartEneCorrection + 31 - subFrameTotalEne_e[bin] - 31 + Q1(0.5f) - /* Determine direct part target covariance matrix (for 1 or 2 directions) */ - FOR( dirIndex = 0; dirIndex < hSpatParamRendCom->numSimultaneousDirections; dirIndex++ ) - { - Word16 aziDeg, eleDeg; - Word32 lRealp_fx, lImagp_fx, rRealp_fx, rImagp_fx; - Word32 lRealpTmp_fx, lImagpTmp_fx, rRealpTmp_fx, rImagpTmp_fx; - Word32 hrtfEne_fx[BINAURAL_CHANNELS], hrtfCrossRe_fx, hrtfCrossIm_fx, ratio_fx; - UWord8 isIsmDirection = 0; - move16(); - - test(); - test(); - IF( dirIndex == 0 ) /* For first of the two simultaneous directions */ - { - aziDeg = hSpatParamRendCom->azimuth[dirac_read_idx][bin]; - move16(); - eleDeg = hSpatParamRendCom->elevation[dirac_read_idx][bin]; - move16(); - ratio_fx = hSpatParamRendCom->energy_ratio1_fx[dirac_read_idx][bin]; - move32(); - spreadCoh_fx = hSpatParamRendCom->spreadCoherence_fx[dirac_read_idx][bin]; - move16(); - gainCacheBaseIndex = 0; - move16(); - } - ELSE IF( NE_32( ivas_format, MASA_ISM_FORMAT ) || ( EQ_32( ivas_format, MASA_ISM_FORMAT ) && LT_16( dirIndex, hSpatParamRendCom->numParametricDirections ) ) ) /* For second of the two simultaneous directions */ - { - IF( LT_32( ( ratio_fx = hSpatParamRendCom->energy_ratio2_fx[dirac_read_idx][bin] ), 10737418 /* 0.01 in Q30 */ ) ) - { - /* This touches only MASA path where second direction always has smaller ratio and - * for non-2dir it is zero. As the whole direction contribution is multiplied with - * the ratio, a very small ratio does not contribute any energy to output. Thus, - * it is better to save complexity. */ - CONTINUE; - } - aziDeg = hSpatParamRendCom->azimuth2[dirac_read_idx][bin]; - move16(); - eleDeg = hSpatParamRendCom->elevation2[dirac_read_idx][bin]; - move16(); - spreadCoh_fx = hSpatParamRendCom->spreadCoherence2_fx[dirac_read_idx][bin]; - move16(); - gainCacheBaseIndex = 3; - move16(); - } - ELSE /* For object directions of MASA_ISM_FORMAT */ - { - isIsmDirection = 1; - move16(); - UWord16 ismDirIndex; - ismDirIndex = sub( dirIndex, hSpatParamRendCom->numParametricDirections ); - assert( hMasaIsmData != NULL && "hMasaIsmData should not be NULL if we use it" ); - IF( hMasaIsmData->ism_is_edited[ismDirIndex] ) - { - aziDeg = hMasaIsmData->azimuth_ism_edited[ismDirIndex]; - move16(); - eleDeg = hMasaIsmData->elevation_ism_edited[ismDirIndex]; - move16(); - } - ELSE - { - aziDeg = hMasaIsmData->azimuth_ism[ismDirIndex][dirac_read_idx]; - move16(); - eleDeg = hMasaIsmData->elevation_ism[ismDirIndex][dirac_read_idx]; - move16(); - } - ratio_fx = hMasaIsmData->energy_ratio_ism_fx[ismDirIndex][dirac_read_idx][bin]; - move32(); - spreadCoh_fx = 0; - move16(); - gainCacheBaseIndex = add( 6, ismDirIndex ); - } - - diffuseness_fx = L_sub( diffuseness_fx, ratio_fx ); /* diffuseness = 1 - ratio1 - ratio2 */ - - if ( diffuseness_fx < 0 ) - { - diffuseness_fx = 0; - move32(); - } - IF( isIsmDirection ) - { - /* Objects cause lesser decorrelation reduction, to avoid removing all decorrelation when only objects are present */ - diffusenessValForDecorrelationReduction_fx = L_sub( diffusenessValForDecorrelationReduction_fx, L_shr( ratio_fx, 1 ) ); /*Q30*/ - } - ELSE - { - diffusenessValForDecorrelationReduction_fx = L_sub( diffusenessValForDecorrelationReduction_fx, ratio_fx ); /*Q30*/ - } - - IF( separateCenterChannelRendering ) - { - /* In masa + mono rendering mode, the center directions originate from phantom sources, so the - * spread coherence is increased */ - Word16 azi_scaled, ele_scaled; - Word32 doaVectorX_fx, num, den; - Word16 e = 0, spatialAngleDeg_fx, altSpreadCoh_fx; - move16(); - - azi_scaled = i_mult( aziDeg, 91 ); - ele_scaled = i_mult( eleDeg, 91 ); - doaVectorX_fx = L_mult( getCosWord16R2( azi_scaled ), getCosWord16R2( ele_scaled ) ); /*Q31*/ - num = Sqrt32( L_sub( ONE_IN_Q31, Mpy_32_32( doaVectorX_fx, doaVectorX_fx ) ), &e ); - den = doaVectorX_fx; - move32(); - spatialAngleDeg_fx = BASOP_util_atan2( num, den, e ); // Q13 - Word16 numr, num_e = 0, denr, den_e; - move16(); - num_e = sub( norm_s( spatialAngleDeg_fx ), 1 ); - numr = shl( spatialAngleDeg_fx, num_e ); - denr = 17157; - move16(); - den_e = 4; - move16(); - altSpreadCoh_fx = sub( 32767, shl_sat( div_s( numr, denr ), sub( den_e, num_e ) ) ); // 4289 = pi/6 in Q13 - spreadCoh_fx = s_max( spreadCoh_fx, altSpreadCoh_fx ); - } - -#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked, *hDiracDecBin->phHrtfParambin ); -#else - getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked ); -#endif - - Word16 q_lr = Q28; - move16(); - if ( hDiracDecBin->renderStereoOutputInsteadOfBinaural ) - { - /* Synthesizing spread coherence is not needed for stereo loudspeaker output, - * as directional sound is reproduced with two loudspeakers in any case */ - spreadCoh_fx = 0; - move32(); - } - - IF( spreadCoh_fx > 0 ) - { - Word32 centerMul_fx, sidesMul_fx; - Word32 hrtfEneCenter_fx, hrtfEneSides_fx, hrtfEneRealized_fx; - Word16 eneCorrectionFactor_fx, eneCorrectionFactor_e; - Word16 w1_fx, w2_fx, w3_fx, eq_fx; - - hrtfEneCenter_fx = L_add( Mpy_32_32( lRealp_fx, lRealp_fx ), // Q25 - L_add( Mpy_32_32( lImagp_fx, lImagp_fx ), // Q25 - L_add( Mpy_32_32( rRealp_fx, rRealp_fx ), // Q25 - Mpy_32_32( rImagp_fx, rImagp_fx ) ) ) ); // Q25 - - /* Spread coherence is synthesized as coherent sources at 30 degree horizontal spacing. - * The following formulas determine the gains for these sources. - * spreadCoh = 0: Only panning - * spreadCoh = 0.5: Three sources coherent panning (e.g. 30 0 -30 deg azi) - * spreadCoh = 1.0: Two sources coherent panning with gap (as above, but center is silent) */ - IF( LT_16( spreadCoh_fx, 16384 ) ) - { - /* 0.0f < spreadCoh < 0.5f */ - sidesMul_fx = L_mult0( spreadCoh_fx, 9459 ); /* 2*sqrt(1/3) in Q13 = 9459 */ // Q28 - centerMul_fx = L_add( L_sub( ONE_IN_Q28, L_shl( spreadCoh_fx, 14 ) ), sidesMul_fx ); // Q28 - } - ELSE - { - /* 0.5f <= spreadCoh < 1.0f */ - // centerMul = 2.0f - ( 2.0f * spreadCoh ); - centerMul_fx = L_shl( sub( 32767, spreadCoh_fx ), 14 ); // Q28 - sidesMul_fx = Isqrt( L_add( L_shr( centerMul_fx, 22 ), L_shl( 2, Q6 ) ) ); // Q28 - centerMul_fx = L_shl( Mpy_32_32( centerMul_fx, sidesMul_fx ), 3 ); // Q28 - } - - /* Apply the gain for the center source of the three coherent sources */ - lRealp_fx = Mpy_32_32( lRealp_fx, centerMul_fx ); // Q25 - lImagp_fx = Mpy_32_32( lImagp_fx, centerMul_fx ); // Q25 - rRealp_fx = Mpy_32_32( rRealp_fx, centerMul_fx ); // Q25 - rImagp_fx = Mpy_32_32( rImagp_fx, centerMul_fx ); // Q25 - - /* Apply the gain for the left source of the three coherent sources */ -#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked, *hDiracDecBin->phHrtfParambin ); -#else - getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked ); -#endif - - hrtfEneSides_fx = L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25 - L_add( Mpy_32_32( lImagpTmp_fx, lImagpTmp_fx ), // Q25 - L_add( Mpy_32_32( rRealpTmp_fx, rRealpTmp_fx ), // Q25 - Mpy_32_32( rImagpTmp_fx, rImagpTmp_fx ) ) ) ); // Q25 - lRealp_fx = L_add( lRealp_fx, Mpy_32_32( sidesMul_fx, lRealpTmp_fx ) ); // Q25 - lImagp_fx = L_add( lImagp_fx, Mpy_32_32( sidesMul_fx, lImagpTmp_fx ) ); // Q25 - rRealp_fx = L_add( rRealp_fx, Mpy_32_32( sidesMul_fx, rRealpTmp_fx ) ); // Q25 - rImagp_fx = L_add( rImagp_fx, Mpy_32_32( sidesMul_fx, rImagpTmp_fx ) ); // Q25 - - /* Apply the gain for the right source of the three coherent sources. - * -30 degrees to 330 wrapping due to internal functions. */ - -#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF - getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked, *hDiracDecBin->phHrtfParambin ); -#else - getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked ); -#endif - - hrtfEneSides_fx = L_add( hrtfEneSides_fx, - L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25 - L_add( Mpy_32_32( lImagpTmp_fx, lImagpTmp_fx ), // Q25 - L_add( Mpy_32_32( rRealpTmp_fx, rRealpTmp_fx ), // Q25 - Mpy_32_32( rImagpTmp_fx, rImagpTmp_fx ) ) ) ) ); // Q25 - lRealp_fx = L_add( lRealp_fx, Mpy_32_32( sidesMul_fx, lRealpTmp_fx ) ); // Q25 - lImagp_fx = L_add( lImagp_fx, Mpy_32_32( sidesMul_fx, lImagpTmp_fx ) ); // Q25 - rRealp_fx = L_add( rRealp_fx, Mpy_32_32( sidesMul_fx, rRealpTmp_fx ) ); // Q25 - rImagp_fx = L_add( rImagp_fx, Mpy_32_32( sidesMul_fx, rImagpTmp_fx ) ); // Q25 - - /* Formulate an eneCorrectionFactor that compensates for the coherent summation of the HRTFs */ - hrtfEneRealized_fx = L_add( Mpy_32_32( lRealp_fx, lRealp_fx ), // Q19 - L_add( Mpy_32_32( lImagp_fx, lImagp_fx ), // Q19 - L_add( Mpy_32_32( rRealp_fx, rRealp_fx ), // Q19 - Mpy_32_32( rImagp_fx, rImagp_fx ) ) ) ); // Q19 - - eneCorrectionFactor_fx = BASOP_Util_Divide3232_Scale( L_add( Mpy_32_32( hrtfEneSides_fx, Mpy_32_32( sidesMul_fx, sidesMul_fx ) ), - Mpy_32_32( hrtfEneCenter_fx, Mpy_32_32( centerMul_fx, centerMul_fx ) ) ), - L_max( 1, hrtfEneRealized_fx ), &eneCorrectionFactor_e ); - - /* Weighting factors to determine appropriate target spectrum for spread coherent sound */ - IF( LT_16( spreadCoh_fx, 16384 ) ) - { - w1_fx = sub( 32767, shl( spreadCoh_fx, 1 ) ); /*Q15*/ - w2_fx = shl( spreadCoh_fx, 1 ); /*Q15*/ - w3_fx = 0; - move16(); - } - ELSE - { - w1_fx = 0; - move16(); - w2_fx = shl( sub( 32767, spreadCoh_fx ), 1 ); /*Q15*/ - w3_fx = shl( sub( spreadCoh_fx, 16384 ), 1 ); /*Q15*/ - } - - test(); - IF( ( EQ_32( ivas_format, MC_FORMAT ) && EQ_32( mc_mode, MC_MODE_MCMASA ) ) ) - { - idx = s_min( bin, MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS - 1 ); - - /* Apply the target spectrum to the eneCorrectionFactor */ - IF( separateCenterChannelRendering ) /* spreadCoh mostly originates from phantom sources in separate channel rendering mode */ - { - eneCorrectionFactor_fx = mult_r( eneCorrectionFactor_fx, add( mult_r( w1_fx, 8192 ), shr( mult_r( add( w2_fx, w3_fx ), spreadCohEne1_fx[idx] ), 1 ) ) ); - eneCorrectionFactor_e = add( eneCorrectionFactor_e, 2 ); - } - ELSE - { - eneCorrectionFactor_fx = mult_r( eneCorrectionFactor_fx, add( mult_r( w1_fx, 4096 ), add( shr( mult_r( w2_fx, spreadCohEne05_fx[idx] ), 1 ), shr( mult_r( w3_fx, spreadCohEne1_fx[idx] ), 2 ) ) ) ); - eneCorrectionFactor_e = add( eneCorrectionFactor_e, 3 ); - } - } - - /* Equalize the spread coherent combined HRTFs */ - Word16 tmp, tmp_e; - tmp_e = eneCorrectionFactor_e; - move16(); - tmp = Sqrt16( eneCorrectionFactor_fx, &tmp_e ); - IF( GE_16( shr( tmp, sub( 15, tmp_e ) ), 4 ) ) - { - eq_fx = 32767; // Q13 - move16(); - } - ELSE - { - eq_fx = shl( tmp, sub( tmp_e, 2 ) ); // Q13 - } - - lRealp_fx = Mpy_32_16_1( lRealp_fx, eq_fx ); // Q23 - lImagp_fx = Mpy_32_16_1( lImagp_fx, eq_fx ); // Q23 - rRealp_fx = Mpy_32_16_1( rRealp_fx, eq_fx ); // Q23 - rImagp_fx = Mpy_32_16_1( rImagp_fx, eq_fx ); // Q23 - q_lr = Q23; - move16(); - } - - hrtfEne_fx[0] = L_add( Mpy_32_32( lRealp_fx, lRealp_fx ), Mpy_32_32( lImagp_fx, lImagp_fx ) ); // Q( 2*q_lr - 31 ) - hrtfEne_fx[1] = L_add( Mpy_32_32( rRealp_fx, rRealp_fx ), Mpy_32_32( rImagp_fx, rImagp_fx ) ); // Q( 2*q_lr - 31 ) - move32(); - move32(); - hrtfCrossRe_fx = L_add( Mpy_32_32( lRealp_fx, rRealp_fx ), Mpy_32_32( lImagp_fx, rImagp_fx ) ); // Q( 2*q_lr - 31 ) - hrtfCrossIm_fx = L_add( Mpy_32_32( -lImagp_fx, rRealp_fx ), Mpy_32_32( lRealp_fx, rImagp_fx ) ); // Q( 2*q_lr - 31 ) - - /* Add direct part (1 or 2) covariance matrix */ - dirEne_fx = Mpy_32_32( ratio_fx, meanEnePerCh_fx ); // Q(q_meanEnePerCh - 1) - shift = norm_l( dirEne_fx ); - dirEne_fx = L_shl( dirEne_fx, shift ); - q_dirEne = add( sub( q_meanEnePerCh, 1 ), shift ); - - hDiracDecBin->ChEneOut_fx[0][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[0][bin], hDiracDecBin->ChEneOut_e[0][bin], Mpy_32_32( dirEne_fx, hrtfEne_fx[0] ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChEneOut_e[0][bin] ); /* Dir ene part*/ - hDiracDecBin->ChEneOut_fx[1][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[1][bin], hDiracDecBin->ChEneOut_e[1][bin], Mpy_32_32( dirEne_fx, hrtfEne_fx[1] ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChEneOut_e[1][bin] ); - hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( dirEne_fx, hrtfCrossRe_fx ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChCrossReOut_e[bin] ); /* Dir cross re */ - hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( dirEne_fx, hrtfCrossIm_fx ), sub( 31, sub( add( q_dirEne, shl( q_lr, 1 ) ), 62 ) ), &hDiracDecBin->ChCrossImOut_e[bin] ); /* Dir cross im */ - move32(); - move32(); - move32(); - move32(); - } - - /* Add diffuse / ambient part covariance matrix */ - diffuseness_fx = L_max( 0, diffuseness_fx ); // Q30 - diffEne_fx = Mpy_32_32( diffuseness_fx, meanEnePerCh_fx ); // Q(2q - 32) - shift = norm_l( diffEne_fx ); - diffEne_fx = L_shl( diffEne_fx, shift ); - q_diffEne = add( shift, sub( q_meanEnePerCh, 1 ) ); - - surCoh_fx = hSpatParamRendCom->surroundingCoherence_fx[dirac_read_idx][bin]; // Q15 - move16(); - - diffusenessValForDecorrelationReduction_fx = L_max( 0, diffusenessValForDecorrelationReduction_fx ); // Q30 - diffEneValForDecorrelationReduction_fx = Mpy_32_32( diffusenessValForDecorrelationReduction_fx, meanEnePerCh_fx ); // resulting Q = q_meanEnePerCh - 1 - q_diffEneValForDecorrelationReduction = sub( q_meanEnePerCh, 1 ); - - test(); - IF( ( EQ_32( ivas_format, MC_FORMAT ) && EQ_32( mc_mode, MC_MODE_MCMASA ) ) ) - { - IF( !hDiracDecBin->renderStereoOutputInsteadOfBinaural ) - { - Word32 spectrumModVal; - - idx = s_min( bin, MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS - 1 ); - /* Apply target spectrum that emphasizes low frequencies when the sound is surround coherent */ - spectrumModVal = L_add( L_sub( ONE_IN_Q29, L_shl( surCoh_fx, 14 ) ), L_mult( surCoh_fx, surCohEne_fx[idx] ) ); // Q29 - diffEne_fx = Mpy_32_32( diffEne_fx, spectrumModVal ); // Q-2 - q_diffEne = sub( q_diffEne, 2 ); - /* Modify also the value for decorrelation reduction */ - diffEneValForDecorrelationReduction_fx = Mpy_32_32( diffEneValForDecorrelationReduction_fx, spectrumModVal ); // Q-2 - q_diffEneValForDecorrelationReduction = sub( q_diffEneValForDecorrelationReduction, 2 ); - } - } - hDiracDecBin->ChEneOut_fx[0][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[0][bin], hDiracDecBin->ChEneOut_e[0][bin], diffEne_fx, sub( 31, q_diffEne ), &hDiracDecBin->ChEneOut_e[0][bin] ); /* Diff ene part*/ - hDiracDecBin->ChEneOut_fx[1][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[1][bin], hDiracDecBin->ChEneOut_e[1][bin], diffEne_fx, sub( 31, q_diffEne ), &hDiracDecBin->ChEneOut_e[1][bin] ); - - move32(); - move32(); - IF( hDiracDecBin->renderStereoOutputInsteadOfBinaural ) - { - /* When rendering stereo, ambience (except for surround coherent sound) has zero ICC. */ - hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_16_1( diffEne_fx, surCoh_fx ), sub( 31, q_diffEne ), &hDiracDecBin->ChCrossReOut_e[bin] ); - move32(); - } - ELSE /* When rendering binaural, ambience has frequency dependent ICC. */ - { - test(); - test(); - IF( ( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) && LT_16( bin, BINAURAL_COHERENCE_DIFFERENCE_BINS ) ) - { - Word32 diffuseFieldCoherence_fx; - Word16 tmp_exp; - temp = BASOP_Util_Add_Mant32Exp( Mpy_32_32( hDiracDecBin->hDiffuseDist->diffuseRatioX_fx[bin], hDiracDecBin->diffuseFieldCoherenceX_fx[bin] ), 0, Mpy_32_32( hDiracDecBin->hDiffuseDist->diffuseRatioY_fx[bin], hDiracDecBin->diffuseFieldCoherenceY_fx[bin] ), 0, &tmp_exp ); - diffuseFieldCoherence_fx = BASOP_Util_Add_Mant32Exp( temp, tmp_exp, Mpy_32_32( hDiracDecBin->hDiffuseDist->diffuseRatioZ_fx[bin], hDiracDecBin->diffuseFieldCoherenceZ_fx[bin] ), 0, &tmp_exp ); - temp = BASOP_Util_Add_Mant32Exp( Mpy_32_16_1( diffuseFieldCoherence_fx, sub( 32767, surCoh_fx ) ), tmp_exp, L_shl( surCoh_fx, 16 ), 0, &tmp_exp ); - hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( temp, diffEne_fx ), add( tmp_exp, sub( 31, q_diffEne ) ), &hDiracDecBin->ChCrossReOut_e[bin] ); - } - ELSE - { - hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( L_add( Mpy_32_16_1( hDiracDecBin->diffuseFieldCoherence_fx[bin], sub( 32767, surCoh_fx ) ), L_shl( surCoh_fx, 16 ) ), diffEne_fx ), sub( 31, q_diffEne ), &hDiracDecBin->ChCrossReOut_e[bin] ); - } - move32(); - } - - /* Store parameters for formulating average diffuseness over frame */ - Word32 frameMeanDiffuseness = BASOP_Util_Add_Mant32Exp( hDiracDecBin->frameMeanDiffuseness_fx[bin], 2 /*Q29*/, diffEneValForDecorrelationReduction_fx, sub( 31, q_diffEneValForDecorrelationReduction ), &exp1 ); // exp = exp1 - frameMeanDiffusenessEneWeight_fx[bin] = L_add( frameMeanDiffusenessEneWeight_fx[bin], meanEnePerCh_fx ); - move32(); - - /* Formulate average diffuseness over frame */ - frameMeanDiffuseness = BASOP_Util_Divide3232_Scale_cadence( frameMeanDiffuseness, L_max( EPSILLON_FX, frameMeanDiffusenessEneWeight_fx[bin] ), &exp ); // exp = exp + 31 - q_meanEnePerCh - exp1 - exp = sub( exp, sub( sub( 31, q_meanEnePerCh ), exp1 ) ); - hDiracDecBin->frameMeanDiffuseness_fx[bin] = L_shl( frameMeanDiffuseness, sub( exp, 2 ) ); // Q29 - move32(); - } - - FOR( bin = 0; bin < nBins; bin++ ) - { - hDiracDecBin->ChCrossReOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossReOut_fx[bin], qualityBasedSmFactor_fx ); - hDiracDecBin->ChCrossImOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossImOut_fx[bin], qualityBasedSmFactor_fx ); - - FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) - { - hDiracDecBin->ChEneOut_fx[ch][bin] = Mpy_32_32( hDiracDecBin->ChEneOut_fx[ch][bin], qualityBasedSmFactor_fx ); - move32(); - } - hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossReOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossReOutPrev_e[bin], &hDiracDecBin->ChCrossReOut_e[bin] ); - hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossImOutPrev_e[bin], &hDiracDecBin->ChCrossImOut_e[bin] ); - move32(); - move32(); - - FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) - { - hDiracDecBin->ChEneOut_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[ch][bin], hDiracDecBin->ChEneOut_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEneOutPrev_fx[ch][bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChEneOutPrev_e[ch][bin], &hDiracDecBin->ChEneOut_e[ch][bin] ); - move32(); - } - - - hDiracDecBin->ChCrossReOutPrev_fx[bin] = hDiracDecBin->ChCrossReOut_fx[bin]; - move32(); - hDiracDecBin->ChCrossImOutPrev_fx[bin] = hDiracDecBin->ChCrossImOut_fx[bin]; - move32(); - hDiracDecBin->ChCrossReOutPrev_e[bin] = hDiracDecBin->ChCrossReOut_e[bin]; - move16(); - hDiracDecBin->ChCrossImOutPrev_e[bin] = hDiracDecBin->ChCrossImOut_e[bin]; - move16(); - - FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) - { - hDiracDecBin->ChEnePrev_fx[ch][bin] = hDiracDecBin->ChEne_fx[ch][bin]; - move32(); - hDiracDecBin->ChEnePrev_e[ch][bin] = hDiracDecBin->ChEne_e[ch][bin]; - move16(); - hDiracDecBin->ChEneOutPrev_fx[ch][bin] = hDiracDecBin->ChEneOut_fx[ch][bin]; - move32(); - hDiracDecBin->ChEneOutPrev_e[ch][bin] = hDiracDecBin->ChEneOut_e[ch][bin]; - move16(); - } - } - - return; -} - - -#else -static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( - DIRAC_DEC_BIN_HANDLE hDiracDecBin, - SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, - PARAMBIN_REND_CONFIG_HANDLE hConfig, - Word32 inRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*q*/ - Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*q*/ - Word32 Rmat_fx[3][3], /*Q30*/ - const Word16 subframe, - const Word16 isHeadtracked, - const MASA_ISM_DATA_HANDLE hMasaIsmData, - Word16 q ) -{ - Word16 ch, slot, bin; - Word16 separateCenterChannelRendering; - Word16 nBins, idx, shift; - Word32 frameMeanDiffusenessEneWeight_fx[CLDFB_NO_CHANNELS_MAX]; - Word32 IIReneLimiterFactor_fx; // Q26 - Word32 qualityBasedSmFactor_fx; - Word32 lowBitRateEQ_fx[CLDFB_NO_CHANNELS_MAX]; - UWord8 applyLowBitRateEQ; - Word16 dirac_read_idx; - Word32 subFrameTotalEne_fx[CLDFB_NO_CHANNELS_MAX]; - Word16 subFrameTotalEne_e[CLDFB_NO_CHANNELS_MAX]; - PARAMBIN_HRTF_GAIN_CACHE gainCache[MAX_GAIN_CACHE_SIZE]; - IVAS_FORMAT ivas_format; - MC_MODE mc_mode; - Word32 ivas_total_brate; - Word16 nchan_transport; - Word16 gainCacheBaseIndex; - Word16 q_earlyPartEneCorrection; - Word16 exp, exp1; - Word64 temp64; - Word32 temp; - - separateCenterChannelRendering = hConfig->separateCenterChannelRendering; - move16(); - ivas_format = hConfig->ivas_format; - move32(); - mc_mode = hConfig->mc_mode; - move32(); - ivas_total_brate = hConfig->ivas_total_brate; - move32(); - nchan_transport = hConfig->nchan_transport; - move16(); - qualityBasedSmFactor_fx = hConfig->qualityBasedSmFactor_fx; /*Q31*/ - move32(); - qualityBasedSmFactor_fx = Mpy_32_32( qualityBasedSmFactor_fx, qualityBasedSmFactor_fx ); /*Q31*/ - - nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */ - move16(); - - q_earlyPartEneCorrection = s_min( Q31, add( getScaleFactor32( hDiracDecBin->earlyPartEneCorrection_fx, nBins ), hDiracDecBin->q_earlyPartEneCorrection ) ); - scale_sig32( hDiracDecBin->earlyPartEneCorrection_fx, nBins, sub( q_earlyPartEneCorrection, hDiracDecBin->q_earlyPartEneCorrection ) ); - hDiracDecBin->q_earlyPartEneCorrection = q_earlyPartEneCorrection; - move16(); - - set32_fx( hDiracDecBin->ChCrossRe_fx, 0, nBins ); - set32_fx( hDiracDecBin->ChCrossIm_fx, 0, nBins ); - set32_fx( hDiracDecBin->ChCrossReOut_fx, 0, nBins ); - set32_fx( hDiracDecBin->ChCrossImOut_fx, 0, nBins ); - - set16_fx( hDiracDecBin->ChCrossRe_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossIm_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossReOut_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossImOut_e, 0, nBins ); + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - set32_fx( hDiracDecBin->ChEne_fx[ch], 0, nBins ); set32_fx( hDiracDecBin->ChEneOut_fx[ch], 0, nBins ); - - set16_fx( hDiracDecBin->ChEne_e[ch], 0, nBins ); set16_fx( hDiracDecBin->ChEneOut_e[ch], 0, nBins ); } set32_fx( hDiracDecBin->frameMeanDiffuseness_fx, 0, nBins ); set32_fx( frameMeanDiffusenessEneWeight_fx, 0, CLDFB_NO_CHANNELS_MAX ); - set16_fx( subFrameTotalEne_e, 0, CLDFB_NO_CHANNELS_MAX ); - FOR( idx = 0; idx < MAX_GAIN_CACHE_SIZE; idx++ ) { gainCache[idx].azi = -1000; /* Use -1000 as value for uninitialized cache. */ move16(); } - /* Determine EQ for low bit rates (13.2 and 16.4 kbps) */ - applyLowBitRateEQ = 0; - move16(); - test(); - test(); - IF( ( EQ_32( ivas_format, MASA_FORMAT ) || EQ_32( ivas_format, MC_FORMAT ) ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) ) - { - applyLowBitRateEQ = 1; - move16(); - IF( EQ_32( ivas_total_brate, IVAS_16k4 ) ) - { - FOR( bin = 0; bin < LOW_BIT_RATE_BINAURAL_EQ_BINS; bin++ ) - { - lowBitRateEQ_fx[bin + LOW_BIT_RATE_BINAURAL_EQ_OFFSET] = L_add( L_shr( lowBitRateBinauralEQ_fx[bin], 1 ), ONE_IN_Q30 ); // Q31 - move32(); - } - } - ELSE - { - FOR( bin = 0; bin < LOW_BIT_RATE_BINAURAL_EQ_BINS; bin++ ) - { - lowBitRateEQ_fx[bin + LOW_BIT_RATE_BINAURAL_EQ_OFFSET] = lowBitRateBinauralEQ_fx[bin]; // Q31 - move32(); - } - } - } - - /* Formulate input and target covariance matrices for this subframe */ - set32_fx( subFrameTotalEne_fx, 0, CLDFB_NO_CHANNELS_MAX ); dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe]; - move16(); - - exp = sub( 63, shl( q, 1 ) ); // exp for the energy (inRe_fx * inRe_fx + inIm_fx * inIm_fx) computed below - - /* Calculate input covariance matrix */ - FOR( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ ) - { - FOR( bin = 0; bin < nBins; bin++ ) - { - FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) - { - Word32 instEne_fx; - temp64 = W_mult0_32_32( inRe_fx[ch][slot][bin], inRe_fx[ch][slot][bin] ); // 2q - temp64 = W_add( temp64, W_mult0_32_32( inIm_fx[ch][slot][bin], inIm_fx[ch][slot][bin] ) ); // 2q - exp1 = W_norm( temp64 ); - instEne_fx = W_extract_h( W_shl( temp64, exp1 ) ); // 2q - 32 + exp1 - /* exp of instEne_fx = 31 - (2q -32 + exp1) = 63 - 2q - exp1 = exp - exp1*/ - - hDiracDecBin->ChEne_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEne_fx[ch][bin], hDiracDecBin->ChEne_e[ch][bin], instEne_fx, sub( exp, exp1 ), &hDiracDecBin->ChEne_e[ch][bin] ); - subFrameTotalEne_fx[bin] = BASOP_Util_Add_Mant32Exp( subFrameTotalEne_fx[bin], subFrameTotalEne_e[bin], instEne_fx, sub( exp, exp1 ), &subFrameTotalEne_e[bin] ); - move32(); - move32(); - } - temp64 = W_mult0_32_32( inRe_fx[0][slot][bin], inRe_fx[1][slot][bin] ); // 2q - temp64 = W_add( temp64, W_mult0_32_32( inIm_fx[0][slot][bin], inIm_fx[1][slot][bin] ) ); // 2q - exp1 = W_norm( temp64 ); - temp = W_extract_h( W_shl( temp64, exp1 ) ); // // 2q - 32 + exp1 - hDiracDecBin->ChCrossRe_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossRe_fx[bin], hDiracDecBin->ChCrossRe_e[bin], temp, sub( exp, exp1 ), &hDiracDecBin->ChCrossRe_e[bin] ); - move32(); - - temp64 = W_mult0_32_32( inRe_fx[0][slot][bin], inIm_fx[1][slot][bin] ); // 2q - temp64 = W_sub( temp64, W_mult0_32_32( inIm_fx[0][slot][bin], inRe_fx[1][slot][bin] ) ); // 2q - exp1 = W_norm( temp64 ); - temp = W_extract_h( W_shl( temp64, exp1 ) ); // // 2q - 32 + exp1 - hDiracDecBin->ChCrossIm_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossIm_fx[bin], hDiracDecBin->ChCrossIm_e[bin], temp, sub( exp, exp1 ), &hDiracDecBin->ChCrossIm_e[bin] ); - move32(); - } - } - - /* Apply EQ at low bit rates */ - IF( applyLowBitRateEQ != 0 ) - { - Word16 lastEqBin = LOW_BIT_RATE_BINAURAL_EQ_OFFSET + LOW_BIT_RATE_BINAURAL_EQ_BINS - 1; - - FOR( bin = LOW_BIT_RATE_BINAURAL_EQ_OFFSET; bin < lastEqBin; bin++ ) - { - subFrameTotalEne_fx[bin] = Mpy_32_32( subFrameTotalEne_fx[bin], lowBitRateEQ_fx[bin] ); // exp = subFrameTotalEne_e[bin] - move32(); - } - FOR( ; bin < nBins; bin++ ) - { - subFrameTotalEne_fx[bin] = Mpy_32_32( subFrameTotalEne_fx[bin], lowBitRateEQ_fx[lastEqBin] ); // exp = subFrameTotalEne_e[bin] - move32(); - } - } - - test(); - test(); - IF( ( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) && EQ_16( nchan_transport, 2 ) ) - { - Word32 tempRe, tempIm; - Word32 subFrameSumEne_fx[CLDFB_NO_CHANNELS_MAX]; - Word16 subFrameSumEne_e[CLDFB_NO_CHANNELS_MAX]; - - set32_fx( subFrameSumEne_fx, 0, CLDFB_NO_CHANNELS_MAX ); - set16_fx( subFrameSumEne_e, 0, CLDFB_NO_CHANNELS_MAX ); - FOR( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ ) - { - FOR( bin = 0; bin < nBins; bin++ ) - { - tempRe = L_add( inRe_fx[0][slot][bin], inRe_fx[1][slot][bin] ); // q - tempIm = L_add( inIm_fx[0][slot][bin], inIm_fx[1][slot][bin] ); // q - temp64 = W_add( W_mult0_32_32( tempRe, tempRe ), W_mult0_32_32( tempIm, tempIm ) ); // 2q - exp1 = W_norm( temp64 ); - temp64 = W_shl( temp64, exp1 ); // 2q + exp1 - subFrameSumEne_fx[bin] = BASOP_Util_Add_Mant32Exp( subFrameSumEne_fx[bin], subFrameSumEne_e[bin], W_extract_h( temp64 ), sub( exp /* 63 - 2q */, exp1 ) /*31 - (2q + exp1 - 32)*/, &subFrameSumEne_e[bin] ); - move32(); - } - } - FOR( bin = 0; bin < nBins; bin++ ) - { - subFrameTotalEne_e[bin] = sub( subFrameTotalEne_e[bin], 1 ); - move16(); - temp = L_shl_sat( subFrameTotalEne_fx[bin], sub( subFrameTotalEne_e[bin], subFrameSumEne_e[bin] ) ); // subFrameSumEne_e[bin] - IF( GT_32( subFrameSumEne_fx[bin], temp ) ) - { - subFrameTotalEne_fx[bin] = subFrameSumEne_fx[bin]; - move32(); - subFrameTotalEne_e[bin] = subFrameSumEne_e[bin]; - move16(); - } - } - } /* Determine target covariance matrix containing target binaural properties */ FOR( bin = 0; bin < nBins; bin++ ) @@ -2481,7 +1761,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric spreadCoh_fx = s_max( spreadCoh_fx, altSpreadCoh_fx ); } +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked, *hDiracDecBin->phHrtfParambin ); +#else getDirectPartGains_fx( bin, aziDeg, eleDeg, &lRealp_fx, &lImagp_fx, &rRealp_fx, &rImagp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex], isHeadtracked ); +#endif Word16 q_lr = Q28; move16(); @@ -2532,7 +1816,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric rImagp_fx = Mpy_32_32( rImagp_fx, centerMul_fx ); // Q25 /* Apply the gain for the left source of the three coherent sources */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked, *hDiracDecBin->phHrtfParambin ); +#else getDirectPartGains_fx( bin, add( aziDeg, 30 ), eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 1], isHeadtracked ); +#endif hrtfEneSides_fx = L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25 L_add( Mpy_32_32( lImagpTmp_fx, lImagpTmp_fx ), // Q25 @@ -2546,7 +1834,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric /* Apply the gain for the right source of the three coherent sources. * -30 degrees to 330 wrapping due to internal functions. */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked, *hDiracDecBin->phHrtfParambin ); +#else getDirectPartGains_fx( bin, aziDeg + 330, eleDeg, &lRealpTmp_fx, &lImagpTmp_fx, &rRealpTmp_fx, &rImagpTmp_fx, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat_fx, &gainCache[gainCacheBaseIndex + 2], isHeadtracked ); +#endif hrtfEneSides_fx = L_add( hrtfEneSides_fx, L_add( Mpy_32_32( lRealpTmp_fx, lRealpTmp_fx ), // Q25 @@ -2716,97 +2008,38 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric move32(); /* Formulate average diffuseness over frame */ - frameMeanDiffuseness = BASOP_Util_Divide3232_Scale_newton( frameMeanDiffuseness, L_max( EPSILLON_FX, frameMeanDiffusenessEneWeight_fx[bin] ), &exp ); // exp = exp + 31 - q_meanEnePerCh - exp1 + frameMeanDiffuseness = BASOP_Util_Divide3232_Scale_cadence( frameMeanDiffuseness, L_max( EPSILLON_FX, frameMeanDiffusenessEneWeight_fx[bin] ), &exp ); // exp = exp + 31 - q_meanEnePerCh - exp1 exp = sub( exp, sub( sub( 31, q_meanEnePerCh ), exp1 ) ); hDiracDecBin->frameMeanDiffuseness_fx[bin] = L_shl( frameMeanDiffuseness, sub( exp, 2 ) ); // Q29 move32(); } - test(); - /* Temporal IIR-type smoothing of covariance matrices. Also apply encoding quality based smoothing factor. */ - IF( EQ_32( ivas_format, MASA_FORMAT ) && LT_32( ivas_total_brate, MASA_STEREO_MIN_BITRATE ) ) - { - IIReneLimiterFactor_fx = L_add( L_shl( 16, Q26 ), L_sub( L_shl( 1, Q26 ), L_shr( qualityBasedSmFactor_fx, 5 ) ) ); // Q26 - } - ELSE - { - IIReneLimiterFactor_fx = L_add( L_shl( 8, Q26 ), L_sub( L_shl( 1, Q26 ), L_shr( qualityBasedSmFactor_fx, 5 ) ) ); // Q26 - } - FOR( bin = 0; bin < nBins; bin++ ) { - Word32 IIReneLimiter_fx; - - /* Temporally smooth cov mtx estimates for resulting mixing matrix stability. The design principle is that - * the energy history (IIR) must not be more than double of the current frame energy. This provides more - * robust performance at energy offsets when compared to typical IIR averaging. */ - Word16 num_e, den_e; - Word32 num, den; - num = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEne_fx[0][bin], hDiracDecBin->ChEne_e[0][bin], hDiracDecBin->ChEne_fx[1][bin], hDiracDecBin->ChEne_e[1][bin], &num_e ); - num = Mpy_32_32( num, IIReneLimiterFactor_fx ); /*Q = (31 - num_e + 26 - 31) = (26 - num_e)*/ - den_e = 0; - move16(); - den = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEnePrev_fx[0][bin], hDiracDecBin->ChEnePrev_e[0][bin], hDiracDecBin->ChEnePrev_fx[1][bin], hDiracDecBin->ChEnePrev_e[1][bin], &den_e ); - den = L_max( 1, den ); - IIReneLimiter_fx = BASOP_Util_Divide3232_Scale_newton( num, den, &exp ); - exp = add( sub( num_e, den_e ), add( 5, exp ) ); - IF( L_shr_sat( IIReneLimiter_fx, sub( 31, exp ) ) > 0 ) - { - IIReneLimiter_fx = ONE_IN_Q31; /*Q31*/ - move32(); - } - ELSE - { - IIReneLimiter_fx = L_shl( IIReneLimiter_fx, exp ); /*Q31*/ - } - - hDiracDecBin->ChCrossRe_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossRe_fx[bin], qualityBasedSmFactor_fx ); - hDiracDecBin->ChCrossIm_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossIm_fx[bin], qualityBasedSmFactor_fx ); hDiracDecBin->ChCrossReOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossReOut_fx[bin], qualityBasedSmFactor_fx ); hDiracDecBin->ChCrossImOut_fx[bin] = Mpy_32_32( hDiracDecBin->ChCrossImOut_fx[bin], qualityBasedSmFactor_fx ); - move32(); - move32(); - move32(); - move32(); FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - hDiracDecBin->ChEne_fx[ch][bin] = Mpy_32_32( hDiracDecBin->ChEne_fx[ch][bin], qualityBasedSmFactor_fx ); hDiracDecBin->ChEneOut_fx[ch][bin] = Mpy_32_32( hDiracDecBin->ChEneOut_fx[ch][bin], qualityBasedSmFactor_fx ); move32(); - move32(); } - - hDiracDecBin->ChCrossRe_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossRe_fx[bin], hDiracDecBin->ChCrossRe_e[bin], Mpy_32_32( hDiracDecBin->ChCrossRePrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossRePrev_e[bin], &hDiracDecBin->ChCrossRe_e[bin] ); - hDiracDecBin->ChCrossIm_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossIm_fx[bin], hDiracDecBin->ChCrossIm_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImPrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossImPrev_e[bin], &hDiracDecBin->ChCrossIm_e[bin] ); - hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossReOutPrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossReOutPrev_e[bin], &hDiracDecBin->ChCrossReOut_e[bin] ); - hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImOutPrev_fx[bin], IIReneLimiter_fx ), hDiracDecBin->ChCrossImOutPrev_e[bin], &hDiracDecBin->ChCrossImOut_e[bin] ); - move32(); - move32(); + hDiracDecBin->ChCrossReOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossReOut_fx[bin], hDiracDecBin->ChCrossReOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossReOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossReOutPrev_e[bin], &hDiracDecBin->ChCrossReOut_e[bin] ); + hDiracDecBin->ChCrossImOut_fx[bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChCrossImOut_fx[bin], hDiracDecBin->ChCrossImOut_e[bin], Mpy_32_32( hDiracDecBin->ChCrossImOutPrev_fx[bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChCrossImOutPrev_e[bin], &hDiracDecBin->ChCrossImOut_e[bin] ); move32(); move32(); FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - hDiracDecBin->ChEne_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEne_fx[ch][bin], hDiracDecBin->ChEne_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEnePrev_fx[ch][bin], IIReneLimiter_fx ), hDiracDecBin->ChEnePrev_e[ch][bin], &hDiracDecBin->ChEne_e[ch][bin] ); - hDiracDecBin->ChEneOut_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[ch][bin], hDiracDecBin->ChEneOut_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEneOutPrev_fx[ch][bin], IIReneLimiter_fx ), hDiracDecBin->ChEneOutPrev_e[ch][bin], &hDiracDecBin->ChEneOut_e[ch][bin] ); - move32(); + hDiracDecBin->ChEneOut_fx[ch][bin] = BASOP_Util_Add_Mant32Exp( hDiracDecBin->ChEneOut_fx[ch][bin], hDiracDecBin->ChEneOut_e[ch][bin], Mpy_32_32( hDiracDecBin->ChEneOutPrev_fx[ch][bin], IIReneLimiter_fx[bin] ), hDiracDecBin->ChEneOutPrev_e[ch][bin], &hDiracDecBin->ChEneOut_e[ch][bin] ); move32(); } - /* Store energy values and coefficients for next round */ - hDiracDecBin->ChCrossRePrev_fx[bin] = hDiracDecBin->ChCrossRe_fx[bin]; - move32(); - hDiracDecBin->ChCrossImPrev_fx[bin] = hDiracDecBin->ChCrossIm_fx[bin]; - move32(); + hDiracDecBin->ChCrossReOutPrev_fx[bin] = hDiracDecBin->ChCrossReOut_fx[bin]; move32(); hDiracDecBin->ChCrossImOutPrev_fx[bin] = hDiracDecBin->ChCrossImOut_fx[bin]; move32(); - hDiracDecBin->ChCrossRePrev_e[bin] = hDiracDecBin->ChCrossRe_e[bin]; - move16(); - hDiracDecBin->ChCrossImPrev_e[bin] = hDiracDecBin->ChCrossIm_e[bin]; - move16(); hDiracDecBin->ChCrossReOutPrev_e[bin] = hDiracDecBin->ChCrossReOut_e[bin]; move16(); hDiracDecBin->ChCrossImOutPrev_e[bin] = hDiracDecBin->ChCrossImOut_e[bin]; @@ -2816,10 +2049,10 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric { hDiracDecBin->ChEnePrev_fx[ch][bin] = hDiracDecBin->ChEne_fx[ch][bin]; move32(); - hDiracDecBin->ChEneOutPrev_fx[ch][bin] = hDiracDecBin->ChEneOut_fx[ch][bin]; - move32(); hDiracDecBin->ChEnePrev_e[ch][bin] = hDiracDecBin->ChEne_e[ch][bin]; move16(); + hDiracDecBin->ChEneOutPrev_fx[ch][bin] = hDiracDecBin->ChEneOut_fx[ch][bin]; + move32(); hDiracDecBin->ChEneOutPrev_e[ch][bin] = hDiracDecBin->ChEneOut_e[ch][bin]; move16(); } @@ -2827,7 +2060,8 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric return; } -#endif + + static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, @@ -3460,7 +2694,6 @@ static void ivas_dirac_dec_binaural_process_output_fx( const Word16 processReverb, const Word16 subframe, const Word16 q_mat -#ifdef SPLIT_REND_WITH_HEAD_ROT , Word32 outRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 outIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], @@ -3470,7 +2703,6 @@ static void ivas_dirac_dec_binaural_process_output_fx( Word32 decorrIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word16 *Q_inp_mix, const Word8 recompute -#endif ) { Word16 slot, bin, chA, chB; @@ -3487,10 +2719,6 @@ static void ivas_dirac_dec_binaural_process_output_fx( Word32 decSlotRe_fx[BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX], decSlotIm_fx[BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX]; Word32 outSlotRe_fx[CLDFB_NO_CHANNELS_MAX], outSlotIm_fx[CLDFB_NO_CHANNELS_MAX]; -#ifndef SPLIT_REND_WITH_HEAD_ROT - Word32 reverbRe_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; - Word32 reverbIm_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; -#endif Word16 q_inp[6][CLDFB_SLOTS_PER_SUBFRAME]; Word16 interpVal_fx; Word32 *decSlotRePointer_fx; @@ -3501,21 +2729,15 @@ static void ivas_dirac_dec_binaural_process_output_fx( IF( processReverb ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( recompute == 1 ) { -#endif /* Process second / room effect part of binaural output when needed */ ivas_binaural_reverb_processSubframe_fx( hDiracDecBin->hReverb, numInChannels, nSlots, inRe_fx, inIm_fx, reverbRe_fx, reverbIm_fx ); -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( recompute, 1 ) ) { -#endif // scaling input and reverb to same q// // input scaling is to maintain precision in ivas_dirac_dec_decorrelate_slot fn// Word16 shift = s_min( L_norm_arr( cldfbSynDec[0]->cldfb_state_fx, cldfbSynDec[0]->p_filter_length ), L_norm_arr( cldfbSynDec[1]->cldfb_state_fx, cldfbSynDec[1]->p_filter_length ) ); @@ -3528,11 +2750,7 @@ static void ivas_dirac_dec_binaural_process_output_fx( q_inp[i][j] = s_min( L_norm_arr( inRe_fx[i][j], nBins ), L_norm_arr( inIm_fx[i][j], nBins ) ); move16(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( processReverb && EQ_16( recompute, 1 ) ) && LT_16( i, 2 ) ) -#else - IF( ( processReverb ) && LT_16( i, 2 ) ) -#endif { q_reverb = s_min( L_norm_arr( reverbRe_fx[i][j], CLDFB_NO_CHANNELS_MAX ), L_norm_arr( reverbIm_fx[i][j], CLDFB_NO_CHANNELS_MAX ) ); q_inp[i][j] = s_min( q_reverb, q_inp[i][j] ); @@ -3560,11 +2778,7 @@ static void ivas_dirac_dec_binaural_process_output_fx( scale_sig32( inRe_fx[i][j], nBins, q_inp_mix ); /*q_input + q_inp_mix*/ scale_sig32( inIm_fx[i][j], nBins, q_inp_mix ); /*q_input + q_inp_mix*/ test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( processReverb && EQ_16( recompute, 1 ) ) && LT_16( i, 2 ) ) -#else - IF( ( processReverb ) && LT_16( i, 2 ) ) -#endif { scale_sig32( reverbRe_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( add( q_inp_mix, q_mat ), 15 ) ); /*q_inp_mix+q_mat-15*/ scale_sig32( reverbIm_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( add( q_inp_mix, q_mat ), 15 ) ); /*q_inp_mix+q_mat-15*/ @@ -3579,7 +2793,6 @@ static void ivas_dirac_dec_binaural_process_output_fx( cldfbSynDec[1]->Q_cldfb_state = add( cldfbSynDec[1]->Q_cldfb_state, cldfb_state_shift ); move16(); move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT *Q_inp_mix = q_inp_mix; move16(); } @@ -3587,7 +2800,6 @@ static void ivas_dirac_dec_binaural_process_output_fx( { q_inp_mix = *Q_inp_mix; } -#endif q_inp_mix = add( q_inp_mix, q_input ); @@ -3613,12 +2825,9 @@ static void ivas_dirac_dec_binaural_process_output_fx( test(); IF( !hDiracDecBin->useTdDecorr && ( max_band_decorr > 0 ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( recompute == 1 ) { -#endif ivas_dirac_dec_decorrelate_slot_fx( hDiracDecBin, nBins, slot, inRe_fx, inIm_fx, q_inp_mix, decSlotRe_fx, decSlotIm_fx ); -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) { Copy32( decSlotRe_fx[chA], decorrRe_fx[chA][slot], CLDFB_NO_CHANNELS_MAX ); @@ -3633,7 +2842,6 @@ static void ivas_dirac_dec_binaural_process_output_fx( Copy32( decorrIm_fx[chA][slot], decSlotIm_fx[chA], CLDFB_NO_CHANNELS_MAX ); } } -#endif } FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) @@ -3723,7 +2931,6 @@ static void ivas_dirac_dec_binaural_process_output_fx( outSlotRePr_fx = &( outSlotRe_fx[0] ); outSlotImPr_fx = &( outSlotIm_fx[0] ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( outRe_fx != NULL && outIm_fx != NULL ) { /* provide the data outside in CLDFB domain => mainly for split rendering */ @@ -3743,27 +2950,13 @@ static void ivas_dirac_dec_binaural_process_output_fx( cldfbSynDec[chA]->Q_cldfb_state = sub( q_result, 1 ); move16(); } -#else -#ifdef OPT_AVOID_STATE_BUF_RESCALE - cldfbSynthesis_ivas_fx( &outSlotRePr_fx, &outSlotImPr_fx, &( output_fx[chA][nBins * slot + offsetSamples] ), nBins, 0, 0, cldfbSynDec[chA] ); -#else - cldfbSynthesis_ivas_fx( &outSlotRePr_fx, &outSlotImPr_fx, &( output_fx[chA][nBins * slot + offsetSamples] ), nBins, 0, cldfbSynDec[chA] ); -#endif - cldfbSynDec[chA]->Q_cldfb_state = sub( q_result, 1 ); - move16(); -#endif /* SPLIT_REND_WITH_HEAD_ROT */ } } -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( recompute == 1 ) { *q_out = sub( q_result, 1 ); move16(); } -#else - *q_out = sub( q_result, 1 ); - move16(); -#endif return; } @@ -6330,14 +5523,10 @@ static void ivas_masa_ext_rend_parambin_internal_fx( MASA_EXT_REND_HANDLE hMasaExtRend, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, Word32 *output_fx[], /* Q11*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word16 subframe, const SPLIT_REND_WRAPPER *hSplitRendWrapper, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] -#else - const Word16 subframe -#endif ) { DIRAC_DEC_BIN_HANDLE hDiracDecBin; @@ -6349,7 +5538,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx( Word16 i, j; Word16 nchan_transport; Word16 q_mat; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t pos_idx; const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; Word32 tmp_Cldfb_out_re[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; @@ -6366,9 +5554,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx( Word16 Q_inp_mix; hDiracDecBin = hMasaExtRend->hDiracDecBin[0]; -#else - hDiracDecBin = hMasaExtRend->hDiracDecBin; -#endif hSpatParamRendCom = hMasaExtRend->hSpatParamRendCom; Word32 Cldfb_RealBuffer_in_fx[6][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; @@ -6383,11 +5568,7 @@ static void ivas_masa_ext_rend_parambin_internal_fx( } } Word32 Rmat_fx[3][3]; -#ifdef SPLIT_REND_WITH_HEAD_ROT hDiracDecBin = hMasaExtRend->hDiracDecBin[0]; -#else - hDiracDecBin = hMasaExtRend->hDiracDecBin; -#endif assert( hDiracDecBin ); hSpatParamRendCom = hMasaExtRend->hSpatParamRendCom; nBins = hSpatParamRendCom->num_freq_bands; @@ -6491,29 +5672,21 @@ static void ivas_masa_ext_rend_parambin_internal_fx( IF( EQ_16( nchan_transport, 2 ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT /* in case of split rendering, determine the prototype rotation based on the main direction and use the same prototypes for the offset directions */ -#endif adaptTransportSignalsHeadtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx ); ivas_dirac_dec_binaural_check_and_switch_transports_headtracked_fx( hCombinedOrientationData, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat_fx ); } } test(); -#ifndef SPLIT_REND_WITH_HEAD_ROT - ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, Rmat_fx, subframe, - hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, NULL, q_inp ); -#endif /* Always using CLDFB decorrelation in MASA EXT renderer */ max_band_decorr = hDiracDecBin->h_freq_domain_decorr_ap_params->max_band_decorr; -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_dirac_dec_binaural_formulate_input_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, subframe, subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, q_inp ); ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat_fx, subframe, hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, NULL ); -#endif ivas_dirac_dec_binaural_determine_processing_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, max_band_decorr, Rmat_fx, subframe, hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] > 0, @@ -6564,7 +5737,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx( move16(); move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT pMultiBinPoseData = NULL; if ( hSplitRendWrapper != NULL ) { @@ -6587,13 +5759,9 @@ static void ivas_masa_ext_rend_parambin_internal_fx( ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, hMasaExtRend->cldfbSynRend, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat, NULL, NULL, reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 ); } -#else - ivas_dirac_dec_binaural_process_output_fx( hDiracDecBin, hSpatParamRendCom, hMasaExtRend->cldfbSynRend, output_fx, &q_out, Cldfb_RealBuffer_in_fx, Cldfb_ImagBuffer_in_fx, q_inp, max_band_decorr, numInChannels, config_data.processReverb, subframe, q_mat ); -#endif hDiracDecBin->hDiffuseDist = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 ) { /* quaternion-based rotation from ivas_binRenderer_internal.c:ivas_binRenderer(), but using absolute rotation instead of delta rotations */ @@ -6700,7 +5868,6 @@ static void ivas_masa_ext_rend_parambin_internal_fx( } /* update this counter only after the last rendering of split directions */ -#endif hSpatParamRendCom->slots_rendered = add( hSpatParamRendCom->slots_rendered, hSpatParamRendCom->subframe_nbslots[subframe] ); hSpatParamRendCom->subframes_rendered = add( hSpatParamRendCom->subframes_rendered, 1 ); @@ -6721,14 +5888,10 @@ void ivas_masa_ext_rend_parambin_render_fx( MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA ext rend structure */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ Word32 *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output Q11*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word16 num_subframes, /* i : number of subframes to render */ const SPLIT_REND_WRAPPER *hSplitRendWrapper, /* i : split rendering orientation data */ Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : rendered orientations for split rend. real part of cldfb */ Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] /* o : rendered orientations for split rend. imag part of cldfb */ -#else - const Word16 num_subframes /* i : number of subframes to render */ -#endif ) { Word16 subframe; @@ -6751,11 +5914,7 @@ void ivas_masa_ext_rend_parambin_render_fx( hSpatParamRendCom->slots_rendered = 0; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_masa_ext_rend_parambin_internal_fx( hMasaExtRend, hCombinedOrientationData, p_output, hSpatParamRendCom->dirac_read_idx, hSplitRendWrapper, Cldfb_Out_Real, Cldfb_Out_Imag ); -#else - ivas_masa_ext_rend_parambin_internal_fx( hMasaExtRend, hCombinedOrientationData, p_output, hSpatParamRendCom->dirac_read_idx ); -#endif FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { p_output[ch] += n_samples_sf; diff --git a/lib_rend/ivas_orient_trk_fx.c b/lib_rend/ivas_orient_trk_fx.c index 5ea170a78..ee91e7060 100644 --- a/lib_rend/ivas_orient_trk_fx.c +++ b/lib_rend/ivas_orient_trk_fx.c @@ -696,20 +696,12 @@ ivas_error ivas_orient_trk_SetReferenceRotation_fx( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* check for Euler angle signaling */ IF( EQ_32( refRot.w_fx, L_negate( 12582912 ) ) && EQ_16( refRot.q_fact, Q22 ) ) { Euler2Quat_fx( deg2rad_fx( refRot.x_fx ), deg2rad_fx( refRot.y_fx ), deg2rad_fx( refRot.z_fx ), &pOTR->refRot ); modify_Quat_q_fx( &pOTR->refRot, &pOTR->refRot, Q29 ); } -#else - /* check for Euler angle signaling */ - IF( EQ_32( refRot.w_fx, -1610612736 /* -3.0f in Q29 */ ) ) - { - Euler2Quat_fx( deg2rad_fx( refRot.x_fx ), deg2rad_fx( refRot.y_fx ), deg2rad_fx( refRot.z_fx ), &pOTR->refRot ); - } -#endif pOTR->refRot = refRot; return IVAS_ERR_OK; diff --git a/lib_rend/ivas_output_init_fx.c b/lib_rend/ivas_output_init_fx.c index 7bcf6e37d..f33ace930 100644 --- a/lib_rend/ivas_output_init_fx.c +++ b/lib_rend/ivas_output_init_fx.c @@ -100,10 +100,8 @@ Word16 audioCfg2channels( move16(); BREAK; case IVAS_AUDIO_CONFIG_BINAURAL: -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: -#endif case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: nchan_out = 2; @@ -270,10 +268,8 @@ void ivas_output_init( move16(); BREAK; case IVAS_AUDIO_CONFIG_BINAURAL: -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: -#endif case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: case IVAS_AUDIO_CONFIG_ISM1: @@ -379,10 +375,8 @@ Word16 ivas_get_nchan_buffers_dec( nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); } ELSE if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) -#ifdef SPLIT_REND_WITH_HEAD_ROT || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) -#endif ) { nchan_out_buff = shl( CPE_CHANNELS, 1 ); @@ -464,12 +458,10 @@ Word16 ivas_get_nchan_buffers_dec( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { nchan_out_buff = max( nchan_out_buff, st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS ); } -#endif return nchan_out_buff; } diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index 90771862e..fec808243 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -220,14 +220,10 @@ void ivas_masa_ext_rend_parambin_render_fx( MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA ext rend structure */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ Word32 *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output Q11*/ -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word16 num_subframes, /* i : number of subframes to render */ const SPLIT_REND_WRAPPER *hSplitRendWrapper, /* i : split rendering orientation data */ Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : rendered orientations for split rend. real part of cldfb */ Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] /* o : rendered orientations for split rend. imag part of cldfb */ -#else - const Word16 num_subframes /* i : number of subframes to render */ -#endif ); ivas_error ivas_dirac_dec_init_binaural_data_fx( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ @@ -887,21 +883,13 @@ ivas_error ivas_rend_openCrend( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES HRTFS_STATISTICS_HANDLE hHrtfStatistics, #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT const Word32 output_Fs, const Word16 num_poses -#else - const Word32 output_Fs -#endif ); void ivas_rend_closeCrend( -#ifdef SPLIT_REND_WITH_HEAD_ROT CREND_WRAPPER_HANDLE *pCrend , const Word16 num_poses -#else - CREND_WRAPPER_HANDLE *pCrend -#endif ); ivas_error ivas_hrtf_init( @@ -909,12 +897,8 @@ ivas_error ivas_hrtf_init( ); ivas_error ivas_rend_initCrendWrapper( -#ifdef SPLIT_REND_WITH_HEAD_ROT CREND_WRAPPER_HANDLE *pCrend, const Word16 num_poses -#else - CREND_WRAPPER_HANDLE *pCrend -#endif ); ivas_error ivas_rend_crendProcessSubframe( @@ -930,10 +914,8 @@ ivas_error ivas_rend_crendProcessSubframe( Word32 *output[], /* i/o: input/output audio channels */ const Word16 n_samples_to_render, /* i : output frame length per channel */ const Word32 output_Fs /* i : output sampling rate */ -#ifdef SPLIT_REND_WITH_HEAD_ROT , const Word16 pos_idx -#endif ); @@ -1569,7 +1551,6 @@ void masaPrerendClose_fx( MASA_PREREND_HANDLE *hMasaPrerendPtr /* i/o: prerenderer handle to be closed */ ); -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------------------* * Split rendering *----------------------------------------------------------------------------------*/ @@ -1648,7 +1629,6 @@ void ivas_rend_closeCldfbRend( CLDFB_REND_WRAPPER *pCldfbRend ); -#endif /* clang-format on */ diff --git a/lib_rend/ivas_reflections_fx.c b/lib_rend/ivas_reflections_fx.c index fb3e86585..44eff1329 100644 --- a/lib_rend/ivas_reflections_fx.c +++ b/lib_rend/ivas_reflections_fx.c @@ -338,17 +338,13 @@ ivas_error ivas_er_encoder_init( p_y_fx = reflections->shoebox_data.az_angle.data_fx[i]; // Q23 move32(); move32(); -#ifdef SPLIT_REND_WITH_HEAD_ROT p_x_fx = L_shr( p_x_fx, 1 ); // Q22 p_y_fx = L_shr( p_y_fx, 1 ); // Q22 -#endif rad_el_angle = deg2rad_fx( p_x_fx ); // Q22 rad_az_angle = deg2rad_fx( p_y_fx ); // Q22 -#ifdef SPLIT_REND_WITH_HEAD_ROT rad_el_angle = L_shl( rad_el_angle, 1 ); // Q23 rad_az_angle = L_shl( rad_az_angle, 1 ); // Q23 -#endif rad_el_angle = L_shr( rad_el_angle, 10 ); // Q13 rad_az_angle = L_shr( rad_az_angle, 10 ); // Q13 diff --git a/lib_rend/ivas_render_config_fx.c b/lib_rend/ivas_render_config_fx.c index 7f8e96d5c..fc5c26351 100644 --- a/lib_rend/ivas_render_config_fx.c +++ b/lib_rend/ivas_render_config_fx.c @@ -137,7 +137,6 @@ ivas_error ivas_render_config_init_from_rom_fx( move16(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ( *hRenderConfig )->split_rend_config.splitRendBitRate = SPLIT_REND_768k; move32(); ( *hRenderConfig )->split_rend_config.dof = 3; @@ -158,7 +157,6 @@ ivas_error ivas_render_config_init_from_rom_fx( move32(); ( *hRenderConfig )->split_rend_config.lc3plus_highres = 0; move16(); -#endif return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_rotation_fx.c b/lib_rend/ivas_rotation_fx.c index 36f363f83..dc73967cc 100644 --- a/lib_rend/ivas_rotation_fx.c +++ b/lib_rend/ivas_rotation_fx.c @@ -87,9 +87,7 @@ Word16 square_root30_q12[31] = { static ivas_error combine_external_and_head_orientations( IVAS_QUATERNION *headRotQuaternions, IVAS_VECTOR3 *listenerPos, -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis*/ -#endif EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ); static void external_target_interpolation_fx( @@ -143,10 +141,8 @@ ivas_error ivas_headTrack_open_fx( move32(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ( *hHeadTrackData )->sr_pose_pred_axis = DEFAULT_AXIS; move32(); -#endif set32_fx( ( *hHeadTrackData )->chEneIIR_fx[0], 0, MASA_FREQUENCY_BANDS ); set32_fx( ( *hHeadTrackData )->chEneIIR_fx[1], 0, MASA_FREQUENCY_BANDS ); @@ -196,7 +192,6 @@ void QuatToRotMat_fx( ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( quat.w_fx, L_negate( 12582912 ) ) ) { assert( 0 ); @@ -206,7 +201,6 @@ void QuatToRotMat_fx( } else { -#endif Word32 w = quat.w_fx; // Qx move32(); Word32 x = quat.x_fx; @@ -252,9 +246,7 @@ void QuatToRotMat_fx( move32(); Rmat[2][2] = L_add( L_sub( L_sub( ww, xx ), yy ), zz ); move32(); -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif return; } @@ -731,11 +723,7 @@ void rotateFrame_shd( } /* calculate ambisonics rotation matrices for the previous and current frames */ -#ifdef SPLIT_REND_WITH_HEAD_ROT SHrotmatgen_fx( SHrotmat_prev, hCombinedOrientationData->Rmat_prev_fx[0], shd_rot_max_order ); -#else - SHrotmatgen_fx( SHrotmat_prev, hCombinedOrientationData->Rmat_prev_fx, shd_rot_max_order ); -#endif SHrotmatgen_fx( SHrotmat /*Q14*/, hCombinedOrientationData->Rmat_fx[hCombinedOrientationData->subframe_idx], shd_rot_max_order ); FOR( i = 0; i < subframe_len; i++ ) @@ -796,11 +784,7 @@ void rotateFrame_shd( { Copy32( hCombinedOrientationData->Rmat_fx[subframe_idx][i], -#ifdef SPLIT_REND_WITH_HEAD_ROT hCombinedOrientationData->Rmat_prev_fx[0][i], -#else - hCombinedOrientationData->Rmat_prev_fx[i], -#endif 3 ); // Q14 } @@ -899,11 +883,7 @@ void rotateFrame_sd( } /* gains for previous subframe rotation */ -#ifdef SPLIT_REND_WITH_HEAD_ROT rotateAziEle_fx( extract_l( L_shr( hTransSetup.ls_azimuth_fx[ch_in_woLFE], Q22 ) ), extract_l( L_shr( hTransSetup.ls_elevation_fx[ch_in_woLFE], Q22 ) ), &azimuth, &elevation, hCombinedOrientationData->Rmat_prev_fx[0], hTransSetup.is_planar_setup ); -#else - rotateAziEle_fx( extract_l( L_shr( hTransSetup.ls_azimuth_fx[ch_in_woLFE], Q22 ) ), extract_l( L_shr( hTransSetup.ls_elevation_fx[ch_in_woLFE], Q22 ) ), &azimuth, &elevation, hCombinedOrientationData->Rmat_prev_fx, hTransSetup.is_planar_setup ); -#endif test(); test(); IF( hEFAPdata != NULL && ( NE_16( extract_l( L_shr( hTransSetup.ls_azimuth_fx[ch_in_woLFE], Q22 ) ), azimuth ) || NE_16( extract_l( L_shr( hTransSetup.ls_elevation_fx[ch_in_woLFE], Q22 ) ), elevation ) ) ) @@ -997,11 +977,7 @@ void rotateFrame_sd( { Copy32( hCombinedOrientationData->Rmat_fx[hCombinedOrientationData->subframe_idx][i], // Q30 -#ifdef SPLIT_REND_WITH_HEAD_ROT hCombinedOrientationData->Rmat_prev_fx[0][i], -#else - hCombinedOrientationData->Rmat_prev_fx[i], -#endif 3 ); } /* copy to output */ @@ -1345,9 +1321,7 @@ ivas_error ivas_combined_orientation_open( Word16 j; IVAS_QUATERNION identity; IVAS_VECTOR3 origo; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; -#endif identity.w_fx = ONE_IN_Q31; move32(); identity.x_fx = 0; @@ -1409,7 +1383,6 @@ ivas_error ivas_combined_orientation_open( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { FOR( j = 0; j < 3; j++ ) @@ -1423,14 +1396,6 @@ ivas_error ivas_combined_orientation_open( ( *hCombinedOrientationData )->sr_low_res_flag = 0; move32(); move16(); -#else - FOR( j = 0; j < 3; j++ ) - { - set32_fx( ( *hCombinedOrientationData )->Rmat_prev_fx[j], 0, 3 ); - ( *hCombinedOrientationData )->Rmat_prev_fx[j][j] = ONE_IN_Q30; - move32(); - } -#endif ( *hCombinedOrientationData ) ->Quaternion_prev_extOrientation = identity; @@ -1494,9 +1459,7 @@ ivas_error combine_external_and_head_orientations_dec( COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; -#endif IVAS_QUATERNION *pHeadRotQuaternion = NULL; IVAS_VECTOR3 *listenerPos = NULL; @@ -1504,20 +1467,14 @@ ivas_error combine_external_and_head_orientations_dec( { pHeadRotQuaternion = hHeadTrackData->Quaternions; listenerPos = hHeadTrackData->Pos; -#ifdef SPLIT_REND_WITH_HEAD_ROT sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; -#endif } -#ifdef SPLIT_REND_WITH_HEAD_ROT ELSE { sr_pose_pred_axis = DEFAULT_AXIS; } -#endif return combine_external_and_head_orientations( pHeadRotQuaternion, listenerPos, -#ifdef SPLIT_REND_WITH_HEAD_ROT sr_pose_pred_axis, -#endif hExtOrientationData, hCombinedOrientationData ); } @@ -1534,16 +1491,12 @@ ivas_error combine_external_and_head_orientations_rend( COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; -#endif IVAS_QUATERNION *headRotQuaternions = NULL; IVAS_VECTOR3 *listenerPos = NULL; Word16 i; -#ifdef SPLIT_REND_WITH_HEAD_ROT sr_pose_pred_axis = DEFAULT_AXIS; -#endif IF( hHeadTrackData != NULL ) { @@ -1552,9 +1505,7 @@ ivas_error combine_external_and_head_orientations_rend( headRotQuaternions = hHeadTrackData->headPositions; listenerPos = hHeadTrackData->Pos; } -#ifdef SPLIT_REND_WITH_HEAD_ROT sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; -#endif } ELSE IF( hExtOrientationData != NULL ) { @@ -1570,9 +1521,7 @@ ivas_error combine_external_and_head_orientations_rend( } return combine_external_and_head_orientations( headRotQuaternions, listenerPos, -#ifdef SPLIT_REND_WITH_HEAD_ROT sr_pose_pred_axis, -#endif hExtOrientationData, hCombinedOrientationData ); } @@ -1586,9 +1535,7 @@ ivas_error combine_external_and_head_orientations_rend( ivas_error combine_external_and_head_orientations( IVAS_QUATERNION *headRotQuaternions, /* i : quaternions for head rotation */ IVAS_VECTOR3 *listenerPos, /* i : listener position */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis */ -#endif EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) @@ -1937,9 +1884,7 @@ ivas_error combine_external_and_head_orientations( move16(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT hCombinedOrientationData->sr_pose_pred_axis = sr_pose_pred_axis; -#endif return IVAS_ERR_OK; } @@ -2248,11 +2193,7 @@ static Word32 SHrot_w_fx( IF( m == 0 ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT assert( 0 && "ERROR should not be called\n" ); -#else - printf( "ERROR should not be called\n" ); -#endif return 0; } ELSE @@ -2450,11 +2391,7 @@ void ivas_combined_orientation_update_index( Word16 exp, div_result; IF( hCombinedOrientationData != NULL ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) || hCombinedOrientationData->sr_low_res_flag ) -#else - IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) ) -#endif { /* only one orientation available anyway or split rendering with low resolution*/ hCombinedOrientationData->subframe_idx = 0; @@ -2511,11 +2448,7 @@ void ivas_combined_orientation_update_start_index( { IF( hCombinedOrientationData != NULL ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) || hCombinedOrientationData->sr_low_res_flag ) -#else - IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) ) -#endif { /* only one orientation available anyway or split rendering with low resolution*/ hCombinedOrientationData->subframe_idx = 0; diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index c93f62396..fd1945a3f 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -699,15 +699,9 @@ typedef struct ivas_binaural_rendering_conv_module_struct_fx Word32 ***filterTapsRightReal_fx; Word32 ***filterTapsRightImag_fx; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 ****filterStatesLeftReal_fx; Word32 ****filterStatesLeftImag_fx; Word16 *Q_filterStates; -#else - Word32 ***filterStatesLeftReal_fx; - Word32 ***filterStatesLeftImag_fx; - Word16 Q_filterStatesLeft; -#endif Word16 numTapsArray[BINAURAL_CONVBANDS]; Word16 numTaps; @@ -802,9 +796,7 @@ typedef struct IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES]; IVAS_VECTOR3 Pos[MAX_PARAM_SPATIAL_SUBFRAMES]; Word32 crossfade_fx[L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; /* Q31 */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; -#endif ivas_orient_trk_state_t *hOrientationTracker; } IVAS_REND_HeadRotData; @@ -826,9 +818,7 @@ typedef struct ivas_binaural_head_track_struct Word16 shd_rot_max_order; ivas_orient_trk_state_t *OrientationTracker; -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; -#endif } HEAD_TRACK_DATA, *HEAD_TRACK_DATA_HANDLE; /*----------------------------------------------------------------------------------* @@ -862,21 +852,15 @@ typedef struct ivas_combined_orientation_struct IVAS_QUATERNION Quaternions_ext_interpolation_start; IVAS_QUATERNION Quaternions_ext_interpolation_target; Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3]; /* Q30 */ -#ifdef SPLIT_REND_WITH_HEAD_ROT Word32 Rmat_prev_fx[MAX_HEAD_ROT_POSES][3][3]; -#else - Word32 Rmat_prev_fx[3][3]; /* Q30 */ -#endif Word32 chEneIIR_fx[2][MASA_FREQUENCY_BANDS]; /* independent of the format. MASA bands are suitable for the task and readily available in ROM. */ /* Q(q_chEneIIR) */ Word16 q_chEneIIR; Word32 procChEneIIR_fx[2][MASA_FREQUENCY_BANDS]; /* Q(q_procChEneIIR) */ Word16 q_procChEneIIR; Word16 shd_rot_max_order; IVAS_VECTOR3 listenerPos[MAX_PARAM_SPATIAL_SUBFRAMES]; -#ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; Word16 sr_low_res_flag; -#endif IVAS_QUATERNION Quaternion_frozen_ext; IVAS_QUATERNION Quaternion_frozen_head; Word8 isExtOrientationFrozen; @@ -1387,18 +1371,13 @@ typedef struct ivas_crend_state_t typedef struct ivas_binaural_crend_wrapper_struct { Word32 binaural_latency_ns; -#ifdef SPLIT_REND_WITH_HEAD_ROT CREND_HANDLE hCrend[MAX_HEAD_ROT_POSES]; -#else - CREND_HANDLE hCrend; -#endif HRTFS_HANDLE hHrtfCrend; Word16 *p_io_qfactor; Word16 io_qfactor; } CREND_WRAPPER, *CREND_WRAPPER_HANDLE; -#ifdef SPLIT_REND_WITH_HEAD_ROT /* Fastconv binaural data structure */ typedef struct ivas_binaural_rendering_struct { @@ -1424,7 +1403,6 @@ typedef struct ivas_binaural_rendering_struct Word16 numPoses; } BINAURAL_RENDERER, *BINAURAL_RENDERER_HANDLE; -#endif /*------------------------------------------------------------------------------------------* * HRTF structures - hrtfs from binary files @@ -1510,7 +1488,6 @@ typedef struct ivas_hrtfs_statistics_struct } HRTFS_STATISTICS, *HRTFS_STATISTICS_HANDLE; #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------------------------* * CLDFB renderer wrapper @@ -1524,7 +1501,6 @@ typedef struct } CLDFB_REND_WRAPPER; -#endif /*----------------------------------------------------------------------------------* * Limiter structure @@ -1622,11 +1598,7 @@ typedef struct ivas_masa_external_rendering_struct RENDERER_TYPE renderer_type; DIRAC_REND_HANDLE hDirACRend; SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; -#ifdef SPLIT_REND_WITH_HEAD_ROT DIRAC_DEC_BIN_HANDLE hDiracDecBin[MAX_HEAD_ROT_POSES]; -#else - DIRAC_DEC_BIN_HANDLE hDiracDecBin; -#endif REVERB_STRUCT_HANDLE hReverb; HRTFS_PARAMBIN_HANDLE *hHrtfParambin; diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index b27c59852..1300d6340 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -56,7 +56,6 @@ typedef float IVAS_REND_LfePanMtx[RENDERER_MAX_INPUT_LFE_CHANNELS][IVAS_MAX_OUTPUT_CHANNELS]; typedef Word32 IVAS_REND_LfePanMtx_fx[RENDERER_MAX_INPUT_LFE_CHANNELS][IVAS_MAX_OUTPUT_CHANNELS]; -#ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct { Word32 bufLenInBytes; @@ -73,7 +72,6 @@ typedef struct IVAS_REND_BitstreamBufferConfig config; UWord8 *bits; } IVAS_REND_BitstreamBuffer; -#endif typedef struct { @@ -266,7 +264,6 @@ Word16 IVAS_REND_FeedRenderConfig( const IVAS_RENDER_CONFIG_DATA renderConfig /* i : Render configuration struct */ ); -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_error IVAS_REND_FeedSplitBinauralBitstream( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_REND_InputId inputId, /* i : ID of the input */ @@ -293,15 +290,12 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( , Word16 *pIsar_frame_size_ms /* o: pointer to isar frame size setting */ ); -#endif ivas_error IVAS_REND_SetHeadRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ -#ifdef SPLIT_REND_WITH_HEAD_ROT const ISAR_SPLIT_REND_ROT_AXIS rot_axis, /* i : external control for rotation axis for split rendering*/ -#endif const Word16 sf_idx /* i : subframe index */ ); @@ -336,11 +330,9 @@ ivas_error IVAS_REND_SetReferenceVector( const IVAS_VECTOR3 refPos /* i : Reference position */ ); -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_error IVAS_REND_SetSplitRendBFI( IVAS_REND_HANDLE hIvasRend, const Word16 bfi); -#endif ivas_error IVAS_REND_SetExternalOrientation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ @@ -400,7 +392,6 @@ void IVAS_REND_Close( IVAS_REND_HANDLE* phIvasRend /* i/o: Pointer to renderer handle */ ); -#ifdef SPLIT_REND_WITH_HEAD_ROT /* Split binaural rendering functions */ ivas_error IVAS_REND_openCldfb( @@ -433,7 +424,6 @@ void IVAS_REND_cldfbSynthesis_wrapper( IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb, /* i : filter bank state */ Word16 Q_cldfb, Word16 *Q_out ); -#endif /* Disclaimer and info printing */ diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index eb155a89f..1d019b675 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -95,11 +95,9 @@ typedef struct const LSSETUP_CUSTOM_STRUCT *pCustomLsOut; const EFAP_WRAPPER *pEfapOutWrapper; IVAS_REND_HeadRotData *pHeadRotData; // for now removing the const qualifier TODO: will modify later -#ifdef SPLIT_REND_WITH_HEAD_ROT const RENDER_CONFIG_HANDLE *hhRendererConfig; const Word16 *pSplitRendBFI; const SPLIT_REND_WRAPPER *pSplitRendWrapper; -#endif const COMBINED_ORIENTATION_HANDLE *pCombinedOrientationData; } rendering_context; /* Common base for input structs */ @@ -125,9 +123,7 @@ typedef struct rotation_matrix_fx rot_mat_prev_fx; pan_vector prev_pan_gains; Word8 firstFrameRendered; -#ifdef SPLIT_REND_WITH_HEAD_ROT TDREND_WRAPPER splitTdRendWrappers[MAX_HEAD_ROT_POSES - 1]; /* Additional TD Rend instances used for split rendering */ -#endif Word32 *bufferData_fx; Word16 nonDiegeticPan; Word32 nonDiegeticPanGain_fx; /* Q31 */ @@ -160,15 +156,9 @@ typedef struct EFAP_WRAPPER efapInWrapper; TDREND_WRAPPER tdRendWrapper; CREND_WRAPPER_HANDLE crendWrapper; -#ifdef SPLIT_REND_WITH_HEAD_ROT TDREND_WRAPPER splitTdRendWrappers[MAX_HEAD_ROT_POSES - 1]; /* Additional TD Rend instances used for split rendering */ -#endif REVERB_HANDLE hReverb; -#ifdef SPLIT_REND_WITH_HEAD_ROT rotation_gains_Word32 rot_gains_prev_fx[MAX_HEAD_ROT_POSES]; -#else - rotation_gains_Word32 rot_gains_prev_fx; -#endif Word16 nonDiegeticPan; Word32 nonDiegeticPanGain_fx; lfe_routing lfeRouting; @@ -182,15 +172,9 @@ typedef struct input_base base; // pan_matrix hoaDecMtx; pan_matrix_fx hoaDecMtx_fx; -#ifdef SPLIT_REND_WITH_HEAD_ROT CLDFB_REND_WRAPPER cldfbRendWrapper; -#endif CREND_WRAPPER_HANDLE crendWrapper; -#ifdef SPLIT_REND_WITH_HEAD_ROT rotation_gains_fx rot_gains_prev_fx[MAX_HEAD_ROT_POSES]; -#else - rotation_gains_fx rot_gains_prev_fx; -#endif Word32 *bufferData_fx; DIRAC_ANA_HANDLE hDirAC; } input_sba; @@ -232,14 +216,10 @@ struct IVAS_REND EFAP_WRAPPER efapOutWrapper; IVAS_LSSETUP_CUSTOM_STRUCT customLsOut; -#ifdef SPLIT_REND_WITH_HEAD_ROT SPLIT_REND_WRAPPER splitRendWrapper; IVAS_REND_AudioBuffer splitRendEncBuffer; -#endif IVAS_REND_HeadRotData headRotData; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 splitRendBFI; -#endif EXTERNAL_ORIENTATION_HANDLE hExternalOrientationData; COMBINED_ORIENTATION_HANDLE hCombinedOrientationData; @@ -265,7 +245,6 @@ static void intermidiate_ext_dirac_render( MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA renderer structure */ Word16 to_fix ); -#ifdef SPLIT_REND_WITH_HEAD_ROT static ivas_error renderSbaToMultiBinauralCldfb( input_sba *sbaInput, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], @@ -278,7 +257,6 @@ static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, Word32 out[][L_FRAME48k] ); -#endif /*-------------------------------------------------------------------* * Local functions @@ -359,7 +337,6 @@ static Word32 *getSmplPtr_fx( return buffer.data_fx + chnlIdx * buffer.config.numSamplesPerChannel + smplIdx; } -#ifdef SPLIT_REND_WITH_HEAD_ROT static void convertBitsBufferToInternalBitsBuff( const IVAS_REND_BitstreamBuffer outBits, ISAR_SPLIT_REND_BITS_HANDLE hBits ) @@ -461,7 +438,6 @@ static void accumulateCLDFBArrayToBuffer_fx( return; } -#endif static void copyBufferTo2dArray_fx( const IVAS_REND_AudioBuffer buffer, @@ -471,9 +447,7 @@ static void copyBufferTo2dArray_fx( UWord32 chnlIdx; const Word32 *readPtr; -#ifdef SPLIT_REND_WITH_HEAD_ROT assert( ( buffer.config.is_cldfb == 0 ) && "for CLDFB input call copyBufferToCLDFBarray()" ); -#endif readPtr = buffer.data_fx; @@ -583,10 +557,8 @@ static ivas_error validateOutputAudioConfig( case IVAS_AUDIO_CONFIG_HOA2: case IVAS_AUDIO_CONFIG_HOA3: case IVAS_AUDIO_CONFIG_BINAURAL: -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: -#endif case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: case IVAS_AUDIO_CONFIG_MASA1: @@ -669,14 +641,12 @@ static ivas_error validateOutputSampleRate( /* If no binaural rendering, any sampling rate is supported */ return IVAS_ERR_OK; } -#ifdef SPLIT_REND_WITH_HEAD_ROT ELSE IF( ( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( sampleRate, 48000 ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." ); } ELSE { -#endif /* Otherwise rendering to binaural, support the same set as IVAS decoder */ SWITCH( sampleRate ) @@ -689,9 +659,7 @@ ELSE } return IVAS_ERR_INVALID_SAMPLING_RATE; -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif } /*-------------------------------------------------------------------* * getAudioConfigNumChannels() @@ -713,10 +681,8 @@ ivas_error getAudioConfigNumChannels( BREAK; case IVAS_AUDIO_CONFIG_STEREO: case IVAS_AUDIO_CONFIG_BINAURAL: -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: -#endif case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: case IVAS_AUDIO_CONFIG_MASA2: @@ -1226,10 +1192,8 @@ static ivas_error initHeadRotation_fx( hIvasRend->headRotData.headPositions[i] = quaternionInit_fx(); } -#ifdef SPLIT_REND_WITH_HEAD_ROT hIvasRend->headRotData.sr_pose_pred_axis = DEFAULT_AXIS; move32(); -#endif IF( ( hIvasRend->headRotData.hOrientationTracker = (ivas_orient_trk_state_t *) malloc( sizeof( ivas_orient_trk_state_t ) ) ) == NULL ) { @@ -1381,11 +1345,9 @@ static rendering_context getRendCtx( ctx.pCustomLsOut = &hIvasRend->customLsOut; ctx.pEfapOutWrapper = &hIvasRend->efapOutWrapper; ctx.pHeadRotData = &hIvasRend->headRotData; -#ifdef SPLIT_REND_WITH_HEAD_ROT ctx.hhRendererConfig = &hIvasRend->hRendererConfig; ctx.pSplitRendBFI = &hIvasRend->splitRendBFI; ctx.pSplitRendWrapper = &hIvasRend->splitRendWrapper; -#endif ctx.pCombinedOrientationData = &hIvasRend->hCombinedOrientationData; return ctx; @@ -1433,11 +1395,7 @@ static ivas_error initIsmMasaRendering( ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &inputIsm->crendWrapper, inputIsm->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &inputIsm->crendWrapper ); -#endif ivas_reverb_close( &inputIsm->hReverb ); IF( NE_32( ( error = ivas_omasa_ana_open( &inputIsm->hOMasa, inSampleRate, inputIsm->total_num_objects ) ), IVAS_ERR_OK ) ) @@ -1460,9 +1418,7 @@ static ivas_error setRendInputActiveIsm( rendering_context rendCtx; AUDIO_CONFIG outConfig; input_ism *inputIsm; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 i; -#endif Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; Word16 num_src; Word16 ivas_format; @@ -1504,12 +1460,10 @@ static ivas_error setRendInputActiveIsm( set_zero_fx( inputIsm->prev_pan_gains_fx, MAX_OUTPUT_CHANNELS ); -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { inputIsm->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; } -#endif inputIsm->hOMasa = NULL; @@ -1519,24 +1473,10 @@ static ivas_error setRendInputActiveIsm( inputIsm->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT test(); test(); IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) -#endif { -#ifndef SPLIT_REND_WITH_HEAD_ROT -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif - { - return error; - } -#else IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; @@ -1594,7 +1534,6 @@ static ivas_error setRendInputActiveIsm( } } } -#endif } ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) { @@ -1605,48 +1544,6 @@ static ivas_error setRendInputActiveIsm( } ELSE { -#ifndef SPLIT_REND_WITH_HEAD_ROT - IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) - { - return error; - } - Word16 nchan_rend = num_src; - move16(); - - test(); - IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) - { - nchan_rend = sub( nchan_rend, 1 ); /* Skip LFE channel -- added to the others */ - } - - FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) - { - TDREND_SRC_t *Src_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; - IF( Src_p != NULL ) - { - IF( Src_p->SrcSpatial_p != NULL ) - { - Src_p->SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; - SrcSpatial_p->q_Pos_p = Q31; - move16(); - } - } - - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - { -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ) IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif - { - return error; - } - } -#else IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; @@ -1699,7 +1596,6 @@ static ivas_error setRendInputActiveIsm( return error; } } -#endif } return IVAS_ERR_OK; @@ -1709,9 +1605,7 @@ static void clearInputIsm( input_ism *inputIsm ) { rendering_context rendCtx; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t i; -#endif rendCtx = inputIsm->base.ctx; @@ -1720,11 +1614,7 @@ static void clearInputIsm( initRendInputBase_fx( &inputIsm->base, IVAS_AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); /* Free input's internal handles */ -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &inputIsm->crendWrapper, inputIsm->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &inputIsm->crendWrapper ); -#endif ivas_reverb_close( &inputIsm->hReverb ); @@ -1733,12 +1623,10 @@ static void clearInputIsm( ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { ivas_td_binaural_close_fx( &inputIsm->splitTdRendWrappers[i].hBinRendererTd ); } -#endif ivas_omasa_ana_close( &( inputIsm->hOMasa ) ); @@ -2468,10 +2356,8 @@ static ivas_error updateMcPanGains( SWITCH( outConfig ) { case IVAS_AUDIO_CONFIG_BINAURAL: -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: -#endif BREAK; /* Do nothing */ case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: @@ -2525,9 +2411,7 @@ static ivas_error initMcBinauralRendering( Word32 binauralDelayNs; Word32 outSampleRate; Word8 useTDRend; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t i; -#endif /* Allocate TD binaural renderer for custom loudspeaker layouts (regardless of headrotation) or planar MC layouts with headrotation, CREND for the rest */ @@ -2558,7 +2442,6 @@ static ivas_error initMcBinauralRendering( ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( !reconfigureFlag || !useTDRend ) { FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) @@ -2569,16 +2452,11 @@ static ivas_error initMcBinauralRendering( } } } -#endif /* if we need to use TD renderer and CREND was open, close it */ IF( useTDRend ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &inputMc->crendWrapper, inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &inputMc->crendWrapper ); -#endif } test(); @@ -2638,7 +2516,6 @@ static ivas_error initMcBinauralRendering( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { /* Open TD renderer wrappers */ @@ -2673,7 +2550,6 @@ static ivas_error initMcBinauralRendering( } } -#endif test(); IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && inputMc->hReverb == NULL ) @@ -2691,7 +2567,6 @@ static ivas_error initMcBinauralRendering( ELSE IF( !useTDRend && inputMc->crendWrapper == NULL ) { /* open CREND */ -#ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), @@ -2701,16 +2576,6 @@ static ivas_error initMcBinauralRendering( hMixconv, outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), IVAS_ERR_OK ) ) -#endif -#else -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, outSampleRate ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, - hMixconv, - outSampleRate ) ), - IVAS_ERR_OK ) ) -#endif #endif { return error; @@ -2769,11 +2634,7 @@ static ivas_error initMcMasaRendering( ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &inputMc->crendWrapper, inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &inputMc->crendWrapper ); -#endif ivas_reverb_close( &inputMc->hReverb ); @@ -2860,16 +2721,12 @@ static ivas_error setRendInputActiveMc( RENDER_CONFIG_DATA *hRendCfg, hrtf_handles *hrtfs ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 i; -#endif ivas_error error; rendering_context rendCtx; AUDIO_CONFIG outConfig; input_mc *inputMc; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pos_idx; -#endif inputMc = (input_mc *) input; rendCtx = inputMc->base.ctx; @@ -2902,14 +2759,10 @@ static ivas_error setRendInputActiveMc( inputMc->hReverb = NULL; inputMc->hMcMasa = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { initRotGainsWord32_fx( inputMc->rot_gains_prev_fx[pos_idx] ); } -#else - initRotGainsWord32_fx( inputMc->rot_gains_prev_fx ); -#endif inputMc->lfeRouting = defaultLfeRouting( inConfig, inputMc->customLsInput, outConfig, *inputMc->base.ctx.pCustomLsOut ); set32_fx( inputMc->lfeDelayBuffer_fx, 0, MAX_BIN_DELAY_SAMPLES ); inputMc->binauralDelaySmp = 0; @@ -2917,7 +2770,6 @@ static ivas_error setRendInputActiveMc( test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { if ( hrtfs->hHrtfTD ) @@ -2928,9 +2780,6 @@ static ivas_error setRendInputActiveMc( } IF( EQ_32( getAudioConfigType( outConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) -#else - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES @@ -2963,9 +2812,7 @@ static void clearInputMc( input_mc *inputMc ) { rendering_context rendCtx; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 i; -#endif rendCtx = inputMc->base.ctx; freeMcLfeDelayBuffer_fx( &inputMc->lfeDelayBuffer_fx ); @@ -2978,11 +2825,7 @@ static void clearInputMc( efap_free_data_fx( &inputMc->efapInWrapper.hEfap ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &inputMc->crendWrapper, inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &inputMc->crendWrapper ); -#endif ivas_reverb_close( &inputMc->hReverb ); @@ -2991,7 +2834,6 @@ static void clearInputMc( ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) { IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) @@ -3000,7 +2842,6 @@ static void clearInputMc( inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; } } -#endif ivas_mcmasa_ana_close( &( inputMc->hMcMasa ) ); @@ -3129,7 +2970,6 @@ static ivas_error updateSbaPanGains( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: SWITCH( outConfig ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: { @@ -3153,10 +2993,8 @@ static ivas_error updateSbaPanGains( } break; } -#endif case IVAS_AUDIO_CONFIG_BINAURAL: { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( hRendCfg->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) { if ( ( error = ivas_rend_openCldfbRend( &inputSba->cldfbRendWrapper, inConfig, outConfig, @@ -3166,20 +3004,11 @@ static ivas_error updateSbaPanGains( } } else -#endif { -#ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#endif -#else -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif #endif { return error; @@ -3193,18 +3022,10 @@ static ivas_error updateSbaPanGains( { return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) #else IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) -#endif -#else -#ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif #endif { return error; @@ -3237,11 +3058,7 @@ static ivas_error initSbaMasaRendering( { ivas_error error; -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &inputSba->crendWrapper, inputSba->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); -#else - ivas_rend_closeCrend( &inputSba->crendWrapper ); -#endif IF( NE_32( ( error = ivas_dirac_ana_open_fx( &inputSba->hDirAC, inSampleRate ) ), IVAS_ERR_OK ) ) { @@ -3264,9 +3081,7 @@ static ivas_error setRendInputActiveSba( rendering_context rendCtx; AUDIO_CONFIG outConfig; input_sba *inputSba; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t pos_idx; -#endif inputSba = (input_sba *) input; rendCtx = inputSba->base.ctx; @@ -3278,37 +3093,22 @@ static ivas_error setRendInputActiveSba( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = allocateInputBaseBufferData_fx( &inputSba->bufferData_fx, MAX_CLDFB_BUFFER_LENGTH ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = allocateInputBaseBufferData_fx( &inputSba->bufferData_fx, MAX_BUFFER_LENGTH ) ), IVAS_ERR_OK ) ) - { - return error; - } -#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT initRendInputBase_fx( &inputSba->base, inConfig, id, rendCtx, inputSba->bufferData_fx, MAX_CLDFB_BUFFER_LENGTH ); -#else - initRendInputBase_fx( &inputSba->base, inConfig, id, rendCtx, inputSba->bufferData_fx, MAX_BUFFER_LENGTH ); -#endif setZeroPanMatrix_fx( inputSba->hoaDecMtx_fx ); inputSba->crendWrapper = NULL; inputSba->hDirAC = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { initRotGains_fx( inputSba->rot_gains_prev_fx[pos_idx] ); } inputSba->cldfbRendWrapper.hHrtfFastConv = hrtfs->hHrtfFastConv; -#else - initRotGains_fx( inputSba->rot_gains_prev_fx ); -#endif test(); IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) @@ -3340,17 +3140,12 @@ static void clearInputSba( initRendInputBase_fx( &inputSba->base, IVAS_AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_rend_closeCrend( &inputSba->crendWrapper, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ); IF( inputSba->cldfbRendWrapper.hCldfbRend != NULL ) { ivas_rend_closeCldfbRend( &inputSba->cldfbRendWrapper ); } -#else - /* Free input's internal handles */ - ivas_rend_closeCrend( &inputSba->crendWrapper ); -#endif ivas_dirac_ana_close_fx( &( inputSba->hDirAC ) ); @@ -3470,9 +3265,7 @@ ivas_error IVAS_REND_Open( const Word16 num_subframes ) { Word16 i; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 j; -#endif IVAS_REND_HANDLE hIvasRend; ivas_error error; Word16 numOutChannels; @@ -3542,10 +3335,8 @@ ivas_error IVAS_REND_Open( } /* Initialize inputs */ -#ifdef SPLIT_REND_WITH_HEAD_ROT isar_init_split_rend_handles( &hIvasRend->splitRendWrapper ); hIvasRend->splitRendEncBuffer.data_fx = NULL; -#endif FOR( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { @@ -3553,13 +3344,11 @@ ivas_error IVAS_REND_Open( hIvasRend->inputsIsm[i].crendWrapper = NULL; hIvasRend->inputsIsm[i].hReverb = NULL; hIvasRend->inputsIsm[i].tdRendWrapper.hBinRendererTd = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( j = 0; j < MAX_HEAD_ROT_POSES - 1; ++j ) { hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hBinRendererTd = NULL; hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hHrtfTD = NULL; } -#endif hIvasRend->inputsIsm[i].nonDiegeticPan = nonDiegeticPan; move16(); hIvasRend->inputsIsm[i].nonDiegeticPanGain_fx = nonDiegeticPanGain; @@ -3583,13 +3372,11 @@ ivas_error IVAS_REND_Open( hIvasRend->inputsMc[i].nonDiegeticPanGain_fx = nonDiegeticPanGain; move32(); hIvasRend->inputsMc[i].hMcMasa = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT FOR( j = 0; j < MAX_HEAD_ROT_POSES - 1; ++j ) { hIvasRend->inputsMc[i].splitTdRendWrappers[j].hBinRendererTd = NULL; hIvasRend->inputsMc[i].splitTdRendWrappers[j].hHrtfTD = NULL; } -#endif } FOR( i = 0; i < RENDERER_MAX_SBA_INPUTS; ++i ) @@ -3597,10 +3384,8 @@ ivas_error IVAS_REND_Open( initRendInputBase_fx( &hIvasRend->inputsSba[i].base, IVAS_AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 ); hIvasRend->inputsSba[i].crendWrapper = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT hIvasRend->inputsSba[i].cldfbRendWrapper.hCldfbRend = NULL; hIvasRend->inputsSba[i].cldfbRendWrapper.hHrtfFastConv = NULL; -#endif hIvasRend->inputsSba[i].bufferData_fx = NULL; hIvasRend->inputsSba[i].hDirAC = NULL; } @@ -4039,7 +3824,6 @@ static ivas_error findFreeInputSlot_fx( } -#ifdef SPLIT_REND_WITH_HEAD_ROT static Word16 getCldfbRendFlag( IVAS_REND_HANDLE hIvasRend, /* i : Renderer handle */ const IVAS_REND_AudioConfigType new_configType ) @@ -4168,7 +3952,6 @@ static ivas_error ivas_pre_rend_init( return IVAS_ERR_OK; } -#endif /*-------------------------------------------------------------------* @@ -4196,7 +3979,6 @@ ivas_error IVAS_REND_AddInput_fx( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( ( EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && hIvasRend->splitRendEncBuffer.data_fx == NULL && hIvasRend->hRendererConfig != NULL ) { Word16 cldfb_in_flag; @@ -4207,7 +3989,6 @@ ivas_error IVAS_REND_AddInput_fx( return error; } } -#endif SWITCH( getAudioConfigType( inConfig ) ) @@ -4317,11 +4098,7 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( test(); test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) -#else - IF( EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) -#endif { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, FALSE ) ), IVAS_ERR_OK ) ) @@ -4667,7 +4444,6 @@ ivas_error IVAS_REND_GetDelay_fx( { IF( NE_32( hIvasRend->inputsSba[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( hIvasRend->splitRendWrapper.hBinHrSplitPreRend != NULL ) { if ( hIvasRend->hRendererConfig->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) @@ -4687,7 +4463,6 @@ ivas_error IVAS_REND_GetDelay_fx( max_latency_ns = max( max_latency_ns, latency_ns ); } else -#endif { IF( hIvasRend->inputsSba[i].crendWrapper != NULL ) { @@ -4738,9 +4513,7 @@ ivas_error IVAS_REND_FeedInputAudio_fx( ivas_error error; input_base *inputBase; Word16 numInputChannels; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 cldfb2tdShift; -#endif /* Validate function arguments */ test(); @@ -4750,14 +4523,10 @@ ivas_error IVAS_REND_FeedInputAudio_fx( } test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT cldfb2tdShift = ( inputAudio.config.is_cldfb ) ? 1 : 0; IF( inputAudio.config.numSamplesPerChannel <= 0 || ( MAX_BUFFER_LENGTH_PER_CHANNEL < inputAudio.config.numSamplesPerChannel && inputAudio.config.is_cldfb == 0 ) || ( ( shl( MAX_BUFFER_LENGTH_PER_CHANNEL, cldfb2tdShift ) ) < inputAudio.config.numSamplesPerChannel && inputAudio.config.is_cldfb == 1 ) ) -#else - IF( inputAudio.config.numSamplesPerChannel <= 0 || LT_16( MAX_BUFFER_LENGTH_PER_CHANNEL, inputAudio.config.numSamplesPerChannel ) ) -#endif { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Buffer size outside of supported range" ); } @@ -4770,15 +4539,10 @@ ivas_error IVAS_REND_FeedInputAudio_fx( test(); move32(); // move added for typecasting -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) && NE_32( L_shr( L_mult0( inputAudio.config.numSamplesPerChannel, 1000 ), cldfb2tdShift ), (Word32) W_mult0_32_32( L_mult0( BINAURAL_RENDERING_FRAME_SIZE_MS, hIvasRend->num_subframes ), hIvasRend->sampleRateOut ) ) ) -#else - IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && - NE_32( L_mult0( inputAudio.config.numSamplesPerChannel, 1000 ), (Word32) W_mult0_32_32( L_mult0( BINAURAL_RENDERING_FRAME_SIZE_MS, hIvasRend->num_subframes ), hIvasRend->sampleRateOut ) ) ) -#endif { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); } @@ -4809,11 +4573,7 @@ ivas_error IVAS_REND_FeedInputAudio_fx( MVR2R_WORD32( inputAudio.data_fx, inputBase->inputBuffer.data_fx, inputAudio.config.numSamplesPerChannel * inputAudio.config.numChannels ); -#ifdef SPLIT_REND_WITH_HEAD_ROT inputBase->numNewSamplesPerChannel = shr( inputAudio.config.numSamplesPerChannel, cldfb2tdShift ); -#else - inputBase->numNewSamplesPerChannel = inputAudio.config.numSamplesPerChannel; -#endif move32(); return IVAS_ERR_OK; @@ -5009,7 +4769,6 @@ Word16 IVAS_REND_GetRenderConfig( Copy32( hRCin->roomAcoustics.pAcoustic_rt60_fx, hRCout->roomAcoustics.pAcoustic_rt60_fx, CLDFB_NO_CHANNELS_MAX ); Copy32( hRCin->roomAcoustics.pAcoustic_dsr_fx, hRCout->roomAcoustics.pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX ); -#ifdef SPLIT_REND_WITH_HEAD_ROT hRCout->split_rend_config.splitRendBitRate = SPLIT_REND_768k; hRCout->split_rend_config.dof = 3; hRCout->split_rend_config.hq_mode = 0; @@ -5020,7 +4779,6 @@ Word16 IVAS_REND_GetRenderConfig( hRCout->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; hRCout->split_rend_config.rendererSelection = hRCin->split_rend_config.rendererSelection; hRCout->split_rend_config.lc3plus_highres = 0; -#endif hRCout->roomAcoustics.use_er = hRCin->roomAcoustics.use_er; @@ -5044,9 +4802,7 @@ Word16 IVAS_REND_FeedRenderConfig( ) { RENDER_CONFIG_HANDLE hRenderConfig; -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_error error; -#endif test(); IF( hIvasRend == NULL || hIvasRend->hRendererConfig == NULL ) @@ -5082,7 +4838,6 @@ Word16 IVAS_REND_FeedRenderConfig( Copy32( renderConfig.roomAcoustics.AbsCoeff_fx, hRenderConfig->roomAcoustics.AbsCoeff_fx, IVAS_ROOM_ABS_COEFF ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT hRenderConfig->split_rend_config = renderConfig.split_rend_config; /* Overwrite any pose correction settings if 0 DOF (no pose correction) was selected */ IF( EQ_16( hRenderConfig->split_rend_config.dof, 0 ) ) @@ -5110,7 +4865,6 @@ Word16 IVAS_REND_FeedRenderConfig( return error; } } -#endif return IVAS_ERR_OK; } @@ -5124,9 +4878,7 @@ ivas_error IVAS_REND_SetHeadRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ -#ifdef SPLIT_REND_WITH_HEAD_ROT const ISAR_SPLIT_REND_ROT_AXIS rot_axis, /* i : external control for rotation axis for split rendering */ -#endif const Word16 sf_idx /* i : subframe index */ ) { @@ -5165,20 +4917,12 @@ ivas_error IVAS_REND_SetHeadRotation( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* check for Euler angle signaling */ IF( EQ_32( headRot.w_fx, L_negate( 12582912 ) ) && EQ_16( headRot.q_fact, Q22 ) ) { Euler2Quat_fx( deg2rad_fx( headRot.x_fx ), deg2rad_fx( headRot.y_fx ), deg2rad_fx( headRot.z_fx ), &rotQuat ); modify_Quat_q_fx( &rotQuat, &rotQuat, Q29 ); } -#else - /* check for Euler angle signaling */ - IF( EQ_32( headRot.w_fx, -1610612736 /* -3.0f in Q29 */ ) ) - { - Euler2Quat_fx( deg2rad_fx( headRot.x_fx ), deg2rad_fx( headRot.y_fx ), deg2rad_fx( headRot.z_fx ), &rotQuat ); - } -#endif ELSE { rotQuat = headRot; @@ -5225,9 +4969,7 @@ ivas_error IVAS_REND_SetHeadRotation( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT hIvasRend->headRotData.sr_pose_pred_axis = rot_axis; -#endif hIvasRend->headRotData.Pos[sf_idx] = Pos; @@ -5278,7 +5020,6 @@ ivas_error IVAS_REND_DisableHeadRotation( return IVAS_ERR_OK; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-------------------------------------------------------------------* * IVAS_REND_SetSplitRendBFI() * @@ -5294,7 +5035,6 @@ IVAS_REND_SetSplitRendBFI( return IVAS_ERR_OK; } -#endif /*-------------------------------------------------------------------* @@ -6000,7 +5740,6 @@ static Word16 getNumSubframesInBuffer( const IVAS_REND_AudioBuffer *buffer, const Word32 sampleRate ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 cldfb2tdShift; cldfb2tdShift = buffer->config.is_cldfb ? 1 : 0; @@ -6009,11 +5748,6 @@ static Word16 getNumSubframesInBuffer( temp = BASOP_Util_Divide1616_Scale( buffer->config.numSamplesPerChannel, temp, &scale ); temp = shr( temp, sub( 15, scale ) ); /* Q0 */ temp = shr( temp, cldfb2tdShift ); -#else - Word16 scale, temp = extract_l( Mpy_32_32( sampleRate, 10737418 /* 1 / FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES in Q31 */ ) ); - temp = BASOP_Util_Divide1616_Scale( buffer->config.numSamplesPerChannel, temp, &scale ); - temp = shr( temp, sub( 15, scale ) ); /* Q0 */ -#endif return temp; } @@ -6190,11 +5924,7 @@ static ivas_error renderIsmToBinauralRoom( } // Crend_process porting CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = ismInput->crendWrapper->hCrend[0]; -#else - hCrend = ismInput->crendWrapper->hCrend; -#endif IF( hCrend->reflections != NULL ) { test(); @@ -6210,13 +5940,8 @@ static ivas_error renderIsmToBinauralRoom( move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT /* render 7_1_4 with BRIRs */ IF( NE_32( ( error = ivas_rend_crendProcessSubframe( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, *ismInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) -#else - /* render 7_1_4 with BRIRs */ - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, *ismInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -6504,7 +6229,6 @@ static ivas_error renderIsmToSba( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT static ivas_error renderIsmToSplitBinaural( input_ism *ismInput, const IVAS_REND_AudioBuffer outAudio ) @@ -6627,7 +6351,6 @@ static ivas_error renderIsmToSplitBinaural( /* Encoding to split rendering bitstream done at a higher level */ return IVAS_ERR_OK; } -#endif static void renderIsmToMasa( @@ -6741,12 +6464,10 @@ static ivas_error renderInputIsm( case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: error = renderIsmToBinauralRoom( ismInput, outAudio, &exp ); BREAK; -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: error = renderIsmToSplitBinaural( ismInput, outAudio ); break; -#endif case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: error = renderIsmToBinauralReverb( ismInput, outAudio ); BREAK; @@ -6817,17 +6538,13 @@ static ivas_error renderActiveInputsIsm( static ivas_error renderLfeToBinaural_fx( const input_mc *mcInput, -#ifdef SPLIT_REND_WITH_HEAD_ROT const AUDIO_CONFIG outConfig, -#endif IVAS_REND_AudioBuffer outAudio, Word16 in_q, Word16 out_q ) { Word16 lfe_idx; -#ifdef SPLIT_REND_WITH_HEAD_ROT Word16 pose_idx, num_poses; -#endif Word32 gain_fx; Word16 ear_idx, i, r_shift; Word32 tmpLfeBuffer[MAX_BUFFER_LENGTH_PER_CHANNEL]; @@ -6835,11 +6552,7 @@ static ivas_error renderLfeToBinaural_fx( const Word32 *lfeInput; Word32 *writePtr; -#ifdef SPLIT_REND_WITH_HEAD_ROT assert( ( getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && "Must be binaural output" ); -#else - assert( ( outAudio.config.numChannels == 2 ) && "Must be binaural output" ); -#endif push_wmops( "renderLfeToBinaural" ); gain_fx = GAIN_LFE_WORD32; /* 1.88364911f in Q30 */ @@ -6891,7 +6604,6 @@ static ivas_error renderLfeToBinaural_fx( } } -#ifdef SPLIT_REND_WITH_HEAD_ROT /* Copy LFE to left and right binaural channels for all poses */ IF( mcInput->base.ctx.pSplitRendWrapper != NULL ) { @@ -6912,19 +6624,6 @@ static ivas_error renderLfeToBinaural_fx( v_add_fixed( writePtr, tmpLfeBuffer, writePtr, frame_size, 0 ); /* Q(out_q) */ } } -#else /* SPLIT_REND_WITH_HEAD_ROT */ - /* Copy LFE to left and right ears */ - FOR( ear_idx = 0; ear_idx < BINAURAL_CHANNELS; ++ear_idx ) - { - writePtr = getSmplPtr_fx( outAudio, ear_idx, 0 ); - move32(); -#ifdef VEC_ARITH_OPT_v1 - v_add_fixed_no_hdrm( writePtr, tmpLfeBuffer, writePtr, frame_size ); /* Q(out_q) */ -#else /* VEC_ARITH_OPT_v1 */ - v_add_fixed( writePtr, tmpLfeBuffer, writePtr, frame_size, 0 ); /* Q(out_q) */ -#endif /* VEC_ARITH_OPT_v1 */ - } -#endif pop_wmops(); @@ -7001,11 +6700,7 @@ static ivas_error renderMcToBinaural( tmpRotBuffer.data_fx = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( Word32 ) ); set32_fx( tmpRotBuffer.data_fx, 0, imult1616( tmpRotBuffer.config.numSamplesPerChannel, tmpRotBuffer.config.numChannels ) ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, mcInput->rot_gains_prev_fx[0], mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, mcInput->rot_gains_prev_fx, mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -7022,18 +6717,10 @@ static ivas_error renderMcToBinaural( } // Porting Crend_process function CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = mcInput->crendWrapper->hCrend[0]; -#else - hCrend = mcInput->crendWrapper->hCrend; -#endif /* call CREND */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, p_tmpRendBuffer_fx, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, p_tmpRendBuffer_fx, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -7046,19 +6733,11 @@ static ivas_error renderMcToBinaural( accumulate2dArrayToBuffer_fx( tmpRendBuffer_fx, &outAudio ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outConfig, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) - - { - return error; - } -#endif *outAudio.pq_fact = exp; move16(); pop_wmops(); @@ -7139,17 +6818,10 @@ static ivas_error renderMcToBinauralRoom( tmpRotBuffer.data_fx = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( Word32 ) ); set32_fx( tmpRotBuffer.data_fx, 0, tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, mcInput->rot_gains_prev_fx[0], mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, - mcInput->rot_gains_prev_fx, - mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), - IVAS_ERR_OK ) ) -#endif { return error; } @@ -7165,18 +6837,10 @@ static ivas_error renderMcToBinauralRoom( } // Porting Crend_process function CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = mcInput->crendWrapper->hCrend[0]; -#else - hCrend = mcInput->crendWrapper->hCrend; -#endif /* call CREND */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -7189,11 +6853,7 @@ static ivas_error renderMcToBinauralRoom( accumulate2dArrayToBuffer_fx( tmpRendBuffer, &outAudio ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outConfig, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -7251,17 +6911,10 @@ static ivas_error renderMcCustomLsToBinauralRoom( tmpRotBuffer.data_fx = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( Word32 ) ); set32_fx( tmpRotBuffer.data_fx, 0, tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, mcInput->rot_gains_prev_fx[0], mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, - mcInput->rot_gains_prev_fx, - mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), - IVAS_ERR_OK ) ) -#endif { return error; } @@ -7296,18 +6949,10 @@ static ivas_error renderMcCustomLsToBinauralRoom( copyBufferTo2dArray_fx( tmpMcBuffer, tmpCrendBuffer ); CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = mcInput->crendWrapper->hCrend[0]; -#else - hCrend = mcInput->crendWrapper->hCrend; -#endif /* call CREND */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -7319,11 +6964,7 @@ static ivas_error renderMcCustomLsToBinauralRoom( accumulate2dArrayToBuffer_fx( tmpCrendBuffer, &outAudio ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outConfig, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -7388,7 +7029,6 @@ static void renderMcToMasa( return; } -#ifdef SPLIT_REND_WITH_HEAD_ROT static ivas_error renderMcToSplitBinaural( input_mc *mcInput, const AUDIO_CONFIG outConfig, @@ -7528,11 +7168,7 @@ static ivas_error renderMcToSplitBinaural( } ELSE { -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = mcInput->crendWrapper->hCrend[0]; -#else - hCrend = mcInput->crendWrapper->hCrend; -#endif /* crend processing overview: * 1. rotateFrameMc: inputBuffer to tmpRotBuffer * 2. crend_process: tmpRotBuffer to tmpRendBuffer @@ -7601,7 +7237,6 @@ static ivas_error renderMcToSplitBinaural( pop_wmops(); return IVAS_ERR_OK; } -#endif static ivas_error renderInputMc( @@ -7653,12 +7288,10 @@ static ivas_error renderInputMc( error = renderMcToBinauralRoom( mcInput, outConfig, outAudio ); } BREAK; -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: error = renderMcToSplitBinaural( mcInput, outConfig, outAudio ); break; -#endif default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; } @@ -7736,7 +7369,6 @@ static void renderSbaToSba( } -#ifdef SPLIT_REND_WITH_HEAD_ROT static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, @@ -7921,7 +7553,6 @@ static ivas_error renderSbaToSplitBinaural( pop_wmops(); return error; } -#endif static ivas_error renderSbaToBinaural( input_sba *sbaInput, @@ -7939,7 +7570,6 @@ static ivas_error renderSbaToBinaural( push_wmops( "renderSbaToBinaural" ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection, ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) ) { Word32 Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; @@ -7954,7 +7584,6 @@ static ivas_error renderSbaToBinaural( accumulateCLDFBArrayToBuffer_fx( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, &outAudio ); } ELSE -#endif { FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) @@ -7989,21 +7618,12 @@ static ivas_error renderSbaToBinaural( Copy32( sbaInput->base.inputBuffer.data_fx, tmpRotBuffer.data_fx, i_mult( tmpRotBuffer.config.numChannels, tmpRotBuffer.config.numSamplesPerChannel ) ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_16( ( error = rotateFrameSba_fx( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, sbaInput->base.ctx.pCombinedOrientationData, sbaInput->rot_gains_prev_fx[0], tmpRotBuffer ) ), IVAS_ERR_OK ) ) { return error; } -#else - IF( NE_16( ( error = rotateFrameSba_fx( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, - sbaInput->base.ctx.pCombinedOrientationData, sbaInput->rot_gains_prev_fx, tmpRotBuffer ) ), - IVAS_ERR_OK ) ) - { - return error; - } -#endif copyBufferTo2dArray_fx( tmpRotBuffer, output_buffer_fx ); free( tmpRotBuffer.data_fx ); @@ -8014,18 +7634,10 @@ static ivas_error renderSbaToBinaural( } // Porting Crend_process function CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = sbaInput->crendWrapper->hCrend[0]; -#else - hCrend = sbaInput->crendWrapper->hCrend; -#endif /* call CREND */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, output_fx, output_fx, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, output_fx, output_fx, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -8062,11 +7674,7 @@ static ivas_error renderSbaToBinauralRoom( push_wmops( "renderSbaToBinauralRoom" ); Word16 nchan_out; CREND_HANDLE hCrend; -#ifdef SPLIT_REND_WITH_HEAD_ROT hCrend = sbaInput->crendWrapper->hCrend[0]; -#else - hCrend = sbaInput->crendWrapper->hCrend; -#endif IF( NE_32( ( error = getAudioConfigNumChannels( outConfig, &nchan_out ) ), IVAS_ERR_OK ) ) { @@ -8103,19 +7711,11 @@ static ivas_error renderSbaToBinauralRoom( /* copy input for in-place rotation */ Copy32( sbaInput->base.inputBuffer.data_fx, tmpRotBuffer.data_fx, i_mult( tmpRotBuffer.config.numChannels, tmpRotBuffer.config.numSamplesPerChannel ) ); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = rotateFrameSba_fx( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, sbaInput->base.ctx.pCombinedOrientationData, sbaInput->rot_gains_prev_fx[0], tmpRotBuffer ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = rotateFrameSba_fx( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, - sbaInput->base.ctx.pCombinedOrientationData, - sbaInput->rot_gains_prev_fx, - tmpRotBuffer ) ), - IVAS_ERR_OK ) ) -#endif { return error; } @@ -8150,11 +7750,7 @@ static ivas_error renderSbaToBinauralRoom( // Porting Crend_process function /* call CREND */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) -#else - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate ) ), IVAS_ERR_OK ) ) -#endif { return error; } @@ -8197,20 +7793,14 @@ static ivas_error renderInputSba( { ivas_error error; IVAS_REND_AudioBuffer inAudio; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t cldfb2tdShift; -#endif error = IVAS_ERR_OK; move32(); inAudio = sbaInput->base.inputBuffer; -#ifdef SPLIT_REND_WITH_HEAD_ROT cldfb2tdShift = outAudio.config.is_cldfb ? 1 : 0; IF( NE_32( L_shl( sbaInput->base.numNewSamplesPerChannel, cldfb2tdShift ), outAudio.config.numSamplesPerChannel ) && NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( NE_32( sbaInput->base.numNewSamplesPerChannel, outAudio.config.numSamplesPerChannel ) ) -#endif { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); } @@ -8237,12 +7827,10 @@ static ivas_error renderInputSba( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: SWITCH( outConfig ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: error = renderSbaToSplitBinaural( sbaInput, outConfig, outAudio ); break; -#endif case IVAS_AUDIO_CONFIG_BINAURAL: error = renderSbaToBinaural( sbaInput, outConfig, outAudio ); BREAK; @@ -8576,11 +8164,9 @@ static ivas_error renderInputMasa( Word16 maxBin; Word32 *tmpBuffer_fx[MAX_OUTPUT_CHANNELS]; Word32 tmpBuffer_buff_fx[MAX_OUTPUT_CHANNELS][L_FRAME48k]; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t cldfb2tdShift; Word32 Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; Word32 Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; -#endif IF( !masaInput->metadataHasBeenFed ) { @@ -8589,13 +8175,9 @@ static ivas_error renderInputMasa( inAudio = masaInput->base.inputBuffer; -#ifdef SPLIT_REND_WITH_HEAD_ROT cldfb2tdShift = outAudio.config.is_cldfb ? 1 : 0; IF( ( NE_32( L_shl( masaInput->base.numNewSamplesPerChannel, cldfb2tdShift ), outAudio.config.numSamplesPerChannel ) ) && NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( NE_32( masaInput->base.numNewSamplesPerChannel, outAudio.config.numSamplesPerChannel ) ) -#endif { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); } @@ -8632,7 +8214,6 @@ static ivas_error renderInputMasa( num_subframes = BASOP_Util_Divide3232_Scale( L_mult0( masaInput->base.inputBuffer.config.numSamplesPerChannel, IVAS_NUM_FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES ), *masaInput->base.ctx.pOutSampleRate, &exp ); num_subframes = shr( num_subframes, sub( 15, exp ) ); /* Q0 */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) { /* split rendering. use the combined of the first subframe in all subframes */ @@ -8670,7 +8251,6 @@ static ivas_error renderInputMasa( ELSE { /* non-split path */ -#endif SWITCH( masaInput->hMasaExtRend->renderer_type ) { case RENDERER_DIRAC: @@ -8714,11 +8294,7 @@ static ivas_error renderInputMasa( scale_sig32( outAudio.data_fx, i_mult( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ), sub( Q11, *outAudio.pq_fact ) ); -#ifdef SPLIT_REND_WITH_HEAD_ROT ivas_masa_ext_rend_parambin_render_fx( masaInput->hMasaExtRend, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer_fx, num_subframes, NULL, NULL, NULL ); -#else - ivas_masa_ext_rend_parambin_render_fx( masaInput->hMasaExtRend, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer_fx, num_subframes ); -#endif *outAudio.pq_fact = Q11; move16(); BREAK; @@ -8728,9 +8304,7 @@ static ivas_error renderInputMasa( return ( IVAS_ERROR( IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED, "Wrong output config for MASA input in external renderer\n" ) ); } accumulate2dArrayToBuffer_fx( tmpBuffer_buff_fx, &outAudio ); -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif } return IVAS_ERR_OK; @@ -8961,20 +8535,14 @@ ivas_error IVAS_REND_SetIsmMetadataDelay( static ivas_error getSamplesInternal( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ -#ifdef SPLIT_REND_WITH_HEAD_ROT IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */, IVAS_REND_BitstreamBuffer *hBits /*i/o: buffer for input/output bitstream. Needed in split rendering mode*/ -#else - IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ -#endif ) { ivas_error error; Word16 numOutChannels; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t cldfb2tdSampleShift; IVAS_REND_AudioBuffer outAudioOrig; -#endif /* Validate function arguments */ test(); IF( hIvasRend == NULL || outAudio.data_fx == NULL ) @@ -8983,14 +8551,10 @@ static ivas_error getSamplesInternal( } test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT cldfb2tdSampleShift = ( outAudio.config.is_cldfb ) ? 1 : 0; IF( outAudio.config.numSamplesPerChannel <= 0 || ( MAX_BUFFER_LENGTH_PER_CHANNEL < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 0 ) || ( ( shl( MAX_BUFFER_LENGTH_PER_CHANNEL, cldfb2tdSampleShift ) ) < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 1 ) ) -#else - IF( outAudio.config.numSamplesPerChannel <= 0 || LT_16( MAX_BUFFER_LENGTH_PER_CHANNEL, outAudio.config.numSamplesPerChannel ) ) -#endif { return IVAS_ERR_INVALID_BUFFER_SIZE; } @@ -9002,16 +8566,11 @@ static ivas_error getSamplesInternal( } test(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) && NE_32( L_shr( L_mult0( outAudio.config.numSamplesPerChannel, 1000 ), cldfb2tdSampleShift ), imult3216( hIvasRend->sampleRateOut, i_mult( hIvasRend->num_subframes, BINAURAL_RENDERING_FRAME_SIZE_MS ) ) ) ) -#else - IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && - NE_32( L_mult0( outAudio.config.numSamplesPerChannel, 1000 ), imult3216( hIvasRend->sampleRateOut, i_mult( hIvasRend->num_subframes, BINAURAL_RENDERING_FRAME_SIZE_MS ) ) ) ) -#endif { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); } @@ -9090,11 +8649,7 @@ static ivas_error getSamplesInternal( return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( NE_16( numOutChannels, outAudio.config.numChannels ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) -#else - IF( NE_16( numOutChannels, outAudio.config.numChannels ) ) -#endif { return IVAS_ERR_WRONG_NUM_CHANNELS; } @@ -9102,7 +8657,6 @@ static ivas_error getSamplesInternal( /* Clear original output buffer */ set32_fx( outAudio.data_fx, 0, imult1616( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ) ); -#ifdef SPLIT_REND_WITH_HEAD_ROT outAudioOrig = outAudio; /* Use internal buffer if outputting split rendering bitstream */ IF( EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || @@ -9121,7 +8675,6 @@ static ivas_error getSamplesInternal( /* Clear output buffer for split rendering bitstream */ set32_fx( outAudio.data_fx, 0, outAudio.config.numChannels * outAudio.config.numSamplesPerChannel ); } -#endif IF( NE_32( ( error = renderActiveInputsIsm( hIvasRend, outAudio ) ), IVAS_ERR_OK ) ) { @@ -9143,13 +8696,7 @@ static ivas_error getSamplesInternal( test(); test(); -#ifndef SPLIT_REND_WITH_HEAD_ROT - Word32 limiter_thresold = L_lshl( IVAS_LIMITER_THRESHOLD, *outAudio.pq_fact ); - limitRendererOutput_fx( hIvasRend->hLimiter, outAudio.data_fx, outAudio.config.numSamplesPerChannel, limiter_thresold, *outAudio.pq_fact ); -#endif - -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { ISAR_SPLIT_REND_BITS_DATA bits; @@ -9276,15 +8823,12 @@ static ivas_error getSamplesInternal( accumulate2dArrayToBuffer_fx( tmpBinaural_buff, &outAudio ); } } -#endif -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( outAudio.config.is_cldfb == 0 ) { Word32 limiter_thresold = L_lshl( IVAS_LIMITER_THRESHOLD, *outAudio.pq_fact ); limitRendererOutput_fx( hIvasRend->hLimiter, outAudio.data_fx, outAudio.config.numSamplesPerChannel, limiter_thresold, *outAudio.pq_fact ); } -#endif /* update global cominbed orientation start index */ ivas_combined_orientation_update_start_index( hIvasRend->hCombinedOrientationData, outAudio.config.numSamplesPerChannel ); @@ -9304,14 +8848,9 @@ ivas_error IVAS_REND_GetSamples( ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT return getSamplesInternal( hIvasRend, outAudio, NULL ); -#else - return getSamplesInternal( hIvasRend, outAudio ); -#endif } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-------------------------------------------------------------------* * IVAS_REND_GetSplitBinauralBitstream() * @@ -9364,7 +8903,6 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( return IVAS_ERR_OK; } -#endif /*-------------------------------------------------------------------* * IVAS_REND_Close() @@ -9416,10 +8954,8 @@ void IVAS_REND_Close( ivas_limiter_close_fx( &hIvasRend->hLimiter ); -#ifdef SPLIT_REND_WITH_HEAD_ROT /* Split binaural rendering */ ISAR_PRE_REND_close( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer ); -#endif closeHeadRotation( hIvasRend ); @@ -9443,7 +8979,6 @@ void IVAS_REND_Close( return; } -#ifdef SPLIT_REND_WITH_HEAD_ROT /*-------------------------------------------------------------------* * IVAS_REND_openCldfb() * @@ -9578,7 +9113,6 @@ void IVAS_REND_cldfbSynthesis_wrapper( return; } -#endif /*---------------------------------------------------------------------* @@ -10144,9 +9678,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( Word16 tmpFloat_fx; ivas_error error; Word16 frequency_axis_fx[CLDFB_NO_CHANNELS_MAX]; -#ifdef SPLIT_REND_WITH_HEAD_ROT int16_t pos_idx; -#endif Word16 tmp; Word16 tmp_e; @@ -10168,13 +9700,9 @@ static ivas_error ivas_masa_ext_rend_parambin_init( renderer_type = inputMasa->hMasaExtRend->renderer_type; move32(); -#ifdef SPLIT_REND_WITH_HEAD_ROT for ( pos_idx = 0; pos_idx < inputMasa->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses; pos_idx++ ) { hDiracDecBin = inputMasa->hMasaExtRend->hDiracDecBin[pos_idx]; -#else - hDiracDecBin = inputMasa->hMasaExtRend->hDiracDecBin; -#endif /* Init assumes that no reconfiguration is required in external renderer. Instead, free and rebuild whole rendering. */ IF( ( hDiracDecBin = (DIRAC_DEC_BIN_HANDLE) malloc( sizeof( DIRAC_DEC_BIN_DATA ) ) ) == NULL ) @@ -10272,11 +9800,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( hDiracDecBin->q_earlyPartEneCorrection = Q28; move16(); -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( hDiracDecBin->hReverb == NULL && pos_idx == 0 ) /* open reverb only for the main direction */ -#else - IF( hDiracDecBin->hReverb == NULL ) -#endif { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF @@ -10307,10 +9831,8 @@ static ivas_error ivas_masa_ext_rend_parambin_init( assert( false ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT IF( pos_idx == 0 ) /* open decorrelator only for the main direction */ { -#endif /* Always open frequency domain decorrelator */ ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, output_Fs, nBins ); @@ -10327,9 +9849,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( { return error; } -#ifdef SPLIT_REND_WITH_HEAD_ROT } -#endif /* External renderer uses constant regularization factor */ hDiracDecBin->reqularizationFactor_fx = 6554; /* 0.4f in Q14 */ move16(); @@ -10338,12 +9858,8 @@ static ivas_error ivas_masa_ext_rend_parambin_init( hDiracDecBin->phHrtfParambin = phHrtfParambin; #endif -#ifdef SPLIT_REND_WITH_HEAD_ROT inputMasa->hMasaExtRend->hDiracDecBin[pos_idx] = hDiracDecBin; } -#else - inputMasa->hMasaExtRend->hDiracDecBin = hDiracDecBin; -#endif return error; } @@ -10375,14 +9891,10 @@ static ivas_error initMasaExtRenderer( move32(); hMasaExtRend->hDirACRend = NULL; hMasaExtRend->hSpatParamRendCom = NULL; -#ifdef SPLIT_REND_WITH_HEAD_ROT for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) { hMasaExtRend->hDiracDecBin[i] = NULL; } -#else - hMasaExtRend->hDiracDecBin = NULL; -#endif hMasaExtRend->hReverb = NULL; hMasaExtRend->hHrtfParambin = &hrtfs->hHrtfParambin; hMasaExtRend->hVBAPdata = NULL; @@ -10433,10 +9945,8 @@ static ivas_error initMasaExtRenderer( BREAK; case IVAS_AUDIO_CONFIG_BINAURAL: -#ifdef SPLIT_REND_WITH_HEAD_ROT case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: -#endif hMasaExtRend->renderer_type = RENDERER_BINAURAL_PARAMETRIC; move32(); BREAK; @@ -10557,7 +10067,6 @@ static void freeMasaExtRenderer( ivas_spat_hSpatParamRendCom_close_fx( &hMasaExtRend->hSpatParamRendCom ); } -#ifdef SPLIT_REND_WITH_HEAD_ROT for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) { if ( hMasaExtRend->hDiracDecBin[i] != NULL ) @@ -10566,12 +10075,6 @@ static void freeMasaExtRenderer( } } -#else - IF( hMasaExtRend->hDiracDecBin != NULL ) - { - ivas_dirac_dec_close_binaural_data( &hMasaExtRend->hDiracDecBin ); - } -#endif IF( hMasaExtRend->hReverb != NULL ) { diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 3c897cc43..84de1e7b7 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -1073,11 +1073,7 @@ static void strip_spaces( while ( pStr[read_idx] ) { -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( !isspace( (int32_t) pStr[read_idx] ) && !iscntrl( (int32_t) pStr[read_idx] ) ) -#else - if ( !isspace( pStr[read_idx] ) && !iscntrl( pStr[read_idx] ) ) -#endif { pStr[write_idx++] = pStr[read_idx]; } @@ -1841,10 +1837,8 @@ ivas_error RenderConfigReader_read( uint32_t fgHasMethod, fgHasNBands, fgHasFreqs, fgHasDefaultGrid, fgHasStartFreq, fgHasFreqHop; uint32_t aeHasFgIdx, aeHasPredelay, aeHasRt60, aeHasDsr; uint32_t aeHasERsize, aeHasERabs; -#ifdef SPLIT_REND_WITH_HEAD_ROT bool dofProvided = false; bool poseCorrProvided = false; -#endif uint32_t nDP; uint32_t accDPIdx; @@ -2369,7 +2363,6 @@ ivas_error RenderConfigReader_read( free( pValue ); acIdx++; } -#ifdef SPLIT_REND_WITH_HEAD_ROT else if ( strcmp( chapter, "SPLITREND" ) == 0 && strlen( pParams ) != 0 ) { params_idx = 0; @@ -2502,7 +2495,6 @@ ivas_error RenderConfigReader_read( } free( pValue ); } -#endif else if ( strcmp( chapter, "DIRECTIVITYSETTING" ) == 0 && strlen( pParams ) != 0 ) { params_idx = 0; diff --git a/lib_util/rotation_file_reader.c b/lib_util/rotation_file_reader.c index a3f9544c8..3cd2e798b 100644 --- a/lib_util/rotation_file_reader.c +++ b/lib_util/rotation_file_reader.c @@ -121,7 +121,6 @@ ivas_error HeadRotationFileReading( ( headRotReader->frameCounter )++; -#ifdef SPLIT_REND_WITH_HEAD_ROT if ( w == -3.0f ) { pQuaternion->w_fx = floatToFixed_32( w, Q22 ); @@ -138,13 +137,6 @@ ivas_error HeadRotationFileReading( pQuaternion->z_fx = floatToFixed_32( z, Q31 ); pQuaternion->q_fact = Q31; } -#else - pQuaternion->w_fx = floatToFixed_32( w, Q31 ); - pQuaternion->x_fx = floatToFixed_32( x, Q31 ); - pQuaternion->y_fx = floatToFixed_32( y, Q31 ); - pQuaternion->z_fx = floatToFixed_32( z, Q31 ); - pQuaternion->q_fact = Q31; -#endif if ( pPos != NULL ) { diff --git a/lib_util/split_rend_bfi_file_reader.c b/lib_util/split_rend_bfi_file_reader.c index 4c5770f45..6b7e1acd3 100644 --- a/lib_util/split_rend_bfi_file_reader.c +++ b/lib_util/split_rend_bfi_file_reader.c @@ -33,7 +33,6 @@ #include #include "options.h" #include "split_rend_bfi_file_reader.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "prot_fx.h" @@ -159,4 +158,3 @@ const char *SplitRendBFIFileReader_getFilePath( return SplitRendBFIReader->file_path; } -#endif /* SPLIT_REND_WITH_HEAD_ROT */ diff --git a/lib_util/split_rend_bfi_file_reader.h b/lib_util/split_rend_bfi_file_reader.h index 679c424a1..0956b6b3d 100644 --- a/lib_util/split_rend_bfi_file_reader.h +++ b/lib_util/split_rend_bfi_file_reader.h @@ -34,7 +34,6 @@ #define IVAS_SR_BFI_FILE_READER_H #include "common_api_types.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct SplitRendBFIFileReader SplitRendBFIFileReader; @@ -56,5 +55,4 @@ const char *SplitRendBFIFileReader_getFilePath( ); -#endif /* SPLIT_REND_WITH_HEAD_ROT */ #endif /* IVAS_SR_BFI_FILE_READER_H */ diff --git a/lib_util/split_render_file_read_write.c b/lib_util/split_render_file_read_write.c index c112863db..ff0aa2e1a 100644 --- a/lib_util/split_render_file_read_write.c +++ b/lib_util/split_render_file_read_write.c @@ -33,7 +33,6 @@ #include #include "options.h" #include "split_render_file_read_write.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT #include #include "prot_fx.h" @@ -420,4 +419,3 @@ ivas_error split_rend_read_pre_rend_delay_ns( return IVAS_ERR_OK; } -#endif /* SPLIT_REND_WITH_HEAD_ROT */ diff --git a/lib_util/split_render_file_read_write.h b/lib_util/split_render_file_read_write.h index 125daf94e..b6f32a317 100644 --- a/lib_util/split_render_file_read_write.h +++ b/lib_util/split_render_file_read_write.h @@ -34,7 +34,6 @@ #define SPLIT_RENDER_FILE_READ_WRITE_H #include "common_api_types.h" -#ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct SplitFileReadWrite SplitFileReadWrite; @@ -91,5 +90,4 @@ ivas_error split_rend_read_pre_rend_delay_ns( SplitFileReadWrite *hSplitRendFileReadWrite, uint32_t *delay_ns ); -#endif /* SPLIT_REND_WITH_HEAD_ROT */ #endif /* SPLIT_RENDER_FILE_READ_WRITE_H */ -- GitLab From 3dc61d51fd0c2478ae69a7bd82258be9693c7bf1 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 13 Jun 2025 11:32:06 +0200 Subject: [PATCH 697/698] clang-format --- apps/decoder.c | 49 ++++++---------- apps/isar_post_rend.c | 22 +++---- apps/renderer.c | 37 ++++-------- lib_com/common_api_types.h | 22 +++---- lib_com/ivas_rotation_com.c | 1 - lib_com/options.h | 3 - lib_dec/ivas_binRenderer_internal_fx.c | 17 +++--- lib_dec/ivas_stat_dec.h | 1 - lib_dec/lib_dec_fx.c | 13 ++--- lib_isar/isar_lc3plus_dec.c | 3 - lib_isar/isar_lc3plus_enc.c | 4 +- lib_isar/isar_lc3plus_enc.h | 8 +-- lib_isar/isar_lc3plus_payload.c | 1 - lib_isar/isar_lcld_decoder.c | 1 - lib_isar/isar_prot.h | 17 +++--- lib_isar/isar_splitRendererPost.c | 1 - lib_isar/isar_splitRendererPre.c | 6 +- lib_isar/isar_splitRenderer_utils.c | 53 ++++++++--------- lib_isar/lib_isar_post_rend.c | 17 ++---- lib_isar/lib_isar_pre_rend.c | 11 +--- lib_rend/ivas_crend_fx.c | 19 ++---- .../ivas_dirac_dec_binaural_functions_fx.c | 22 +++---- lib_rend/ivas_output_init_fx.c | 6 +- lib_rend/ivas_reflections_fx.c | 4 +- lib_rend/ivas_rotation_fx.c | 10 ++-- lib_rend/lib_rend_fx.c | 58 +++++++++---------- lib_util/split_render_file_read_write.c | 12 ++-- lib_util/split_render_file_read_write.h | 12 ++-- 28 files changed, 172 insertions(+), 258 deletions(-) diff --git a/apps/decoder.c b/apps/decoder.c index b8d4c6596..76bd23bbf 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -266,9 +266,7 @@ int main( if ( arg.enableHeadRotation ) { /* sanity check */ - if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB - && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM - ) + if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { fprintf( stderr, "\nError: Head-rotation file file cannot be used in this output configuration.\n\n" ); goto cleanup; @@ -368,10 +366,8 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ - if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB - && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && - arg.Opt_non_diegetic_pan == 0 - ) + if ( arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && + arg.Opt_non_diegetic_pan == 0 ) { fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); goto cleanup; @@ -1547,11 +1543,11 @@ static void usage_dec( void ) *---------------------------------------------------------------------*/ static ivas_error initOnFirstGoodFrame( - IVAS_DEC_HANDLE hIvasDec, /* i/o: */ - const DecArguments arg, /* i : */ - const int16_t numInitialBadFrames, /* i : */ - int16_t *numOutSamples, /* i/o: */ - int16_t *vec_pos_len, /* i/o: */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: */ + const DecArguments arg, /* i : */ + const int16_t numInitialBadFrames, /* i : */ + int16_t *numOutSamples, /* i/o: */ + int16_t *vec_pos_len, /* i/o: */ int16_t *pFullDelayNumSamples, /* o : */ int16_t *pRemainingDelayNumSamples, /* o : */ int32_t *delayTimeScale, /* o : */ @@ -1560,9 +1556,8 @@ static ivas_error initOnFirstGoodFrame( MasaFileWriter **ppMasaWriter, /* o : */ IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS], /* o : */ int16_t *pNumOutChannels, /* o : */ - uint16_t *pNumObj, /* o : */ - SplitFileReadWrite **splitRendWriter -) + uint16_t *pNumObj, /* o : */ + SplitFileReadWrite **splitRendWriter ) { ivas_error error = IVAS_ERR_UNKNOWN; @@ -1619,10 +1614,8 @@ static ivas_error initOnFirstGoodFrame( &splitRendCodec, &poseCorrection, &splitRendIsarFrameSizeMs, - &splitRendCodecFrameSizeMs - , - &lc3plusHighRes - ) ) != IVAS_ERR_OK ) + &splitRendCodecFrameSizeMs, + &lc3plusHighRes ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); return error; @@ -1636,12 +1629,10 @@ static ivas_error initOnFirstGoodFrame( delayTimeScale_temp, splitRendCodec, poseCorrection, - splitRendCodecFrameSizeMs - , + splitRendCodecFrameSizeMs, splitRendIsarFrameSizeMs, arg.output_Fs, - lc3plusHighRes - ) ) != IVAS_ERR_OK ) + lc3plusHighRes ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); return error; @@ -1661,12 +1652,10 @@ static ivas_error initOnFirstGoodFrame( delayTimeScale_temp, splitRendCodec, poseCorrection, - splitRendCodecFrameSizeMs - , + splitRendCodecFrameSizeMs, splitRendIsarFrameSizeMs, arg.output_Fs, - lc3plusHighRes - ) ) != IVAS_ERR_OK ) + lc3plusHighRes ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); return error; @@ -2676,10 +2665,8 @@ static ivas_error decodeVoIP( for ( i = 0; i < num_subframes; i++ ) { - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i - , - DEFAULT_AXIS - ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i, + DEFAULT_AXIS ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; diff --git a/apps/isar_post_rend.c b/apps/isar_post_rend.c index e7fd6a05a..4b478f7c2 100644 --- a/apps/isar_post_rend.c +++ b/apps/isar_post_rend.c @@ -758,12 +758,10 @@ int main( args.inMetadataFilePaths[0], &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, - &bitsBuffer.config.codec_frame_size_ms - , + &bitsBuffer.config.codec_frame_size_ms, &bitsBuffer.config.isar_frame_size_ms, &inFileSampleRate, - &bitsBuffer.config.lc3plusHighRes - ); + &bitsBuffer.config.lc3plusHighRes ); if ( error != IVAS_ERR_OK ) { fprintf( stderr, "Could not open split rend metadata file %s\n", args.inMetadataFilePaths[0] ); @@ -784,12 +782,10 @@ int main( args.inputFilePath, &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, - &bitsBuffer.config.codec_frame_size_ms - , + &bitsBuffer.config.codec_frame_size_ms, &bitsBuffer.config.isar_frame_size_ms, &inFileSampleRate, - &bitsBuffer.config.lc3plusHighRes - ); + &bitsBuffer.config.lc3plusHighRes ); if ( error != IVAS_ERR_OK ) { fprintf( stderr, "Could not open split rend metadata file %s\n", args.inputFilePath ); @@ -802,8 +798,7 @@ int main( { error = AudioFileReader_getSamplingRate( audioReader, &inFileSampleRate ); } - else - if ( hSplitRendFileReadWrite == NULL ) + else if ( hSplitRendFileReadWrite == NULL ) { inFileSampleRate = args.sampleRate; } @@ -865,11 +860,9 @@ int main( if ( ( error = ISAR_REND_SetSplitRendBitstreamHeader( hIsarPostRend, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, - bitsBuffer.config.codec_frame_size_ms - , + bitsBuffer.config.codec_frame_size_ms, bitsBuffer.config.isar_frame_size_ms, - bitsBuffer.config.lc3plusHighRes - ) ) != IVAS_ERR_OK ) + bitsBuffer.config.lc3plusHighRes ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error in getting split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); exit( -1 ); @@ -1230,4 +1223,3 @@ int main( #undef WMC_TOOL_SKIP - diff --git a/apps/renderer.c b/apps/renderer.c index 5ef8cca19..8d7cb86c9 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -431,8 +431,7 @@ static void convertOutputBuffer_fx( Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, - Word16 out_q -); + Word16 out_q ); static void convertInputBuffer_fx( const Word16 *intBuffer, const Word16 numIntSamplesPerChannel, @@ -442,8 +441,7 @@ static void convertInputBuffer_fx( Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, - Word16 *out_q_factor -); + Word16 *out_q_factor ); /*------------------------------------------------------------------------------------------* @@ -1499,10 +1497,8 @@ int main( IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, - &bitsBuffer.config.codec_frame_size_ms - , - &bitsBuffer.config.isar_frame_size_ms - ); + &bitsBuffer.config.codec_frame_size_ms, + &bitsBuffer.config.isar_frame_size_ms ); if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK ) { @@ -1516,12 +1512,10 @@ int main( delayTimeScale_temp, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, - bitsBuffer.config.codec_frame_size_ms - , + bitsBuffer.config.codec_frame_size_ms, bitsBuffer.config.isar_frame_size_ms, args.sampleRate, - bitsBuffer.config.lc3plus_highres - ) ) != IVAS_ERR_OK ) + bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Could not open split rend metadata file %s\n", args.outputFilePath ); exit( -1 ); @@ -1536,10 +1530,8 @@ int main( IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, - &bitsBuffer.config.codec_frame_size_ms - , - &bitsBuffer.config.isar_frame_size_ms - ); + &bitsBuffer.config.codec_frame_size_ms, + &bitsBuffer.config.isar_frame_size_ms ); if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK ) { @@ -1553,12 +1545,10 @@ int main( delayTimeScale_temp, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, - bitsBuffer.config.codec_frame_size_ms - , + bitsBuffer.config.codec_frame_size_ms, bitsBuffer.config.isar_frame_size_ms, args.sampleRate, - bitsBuffer.config.lc3plus_highres - ) ) != IVAS_ERR_OK ) + bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Could not open split rend metadata file %s\n", args.outMetadataFilePath ); exit( -1 ); @@ -1962,7 +1952,6 @@ int main( { delayNumSamples -= (int16_t) ( outBufferSize / num_out_channels ); } - } bitsBuffer.config.bitsRead = 0; @@ -3878,8 +3867,7 @@ static void convertInputBuffer_fx( Word16 in_q_factor, const int16_t cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, - Word16 *out_q_factor -) + Word16 *out_q_factor ) { Word16 chnl, smpl, i; @@ -3962,8 +3950,7 @@ static void convertOutputBuffer_fx( Word16 *intBuffer, const Word16 cldfb_in_flag, IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, - Word16 out_q -) + Word16 out_q ) { Word16 chnl, smpl, i; Word32 temp_fx; diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index bb6351711..175b23c3b 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -282,17 +282,17 @@ typedef struct _ISAR_SPLIT_REND_BITS_DATA typedef struct _ISAR_SPLIT_REND_CONFIG { - int32_t splitRendBitRate; /*Bit rate for split rendering mode, if "pcm_out" is set then "splitRendBitRate" is used as a limit for MD bitrate */ - int16_t hq_mode; /*High quality 3DOF mode with additional side information. Requires more pre-renditions. */ - int16_t dof; /*flag to specify if pose correction is needed for 1, 2 or 3 degree of freedoms*/ - /*The axis can be set dynamically per frame based on a file input */ - /*possible values: - 1 - (1dof correction. By default YAW correction) - 2 - (2dof correction. By default YAW and PITCH correction) - 3 - (3dof correction. By default YAW, PITCH and ROLL correction) - */ - int16_t codec_delay_ms; /*PLACEHOLDER (currently being ignored) : look ahead delay of the codec that is used to code BIN signal output of pre-renderer*/ - int16_t isar_frame_size_ms; /* ISAR bit stream frame size in milliseconds */ + int32_t splitRendBitRate; /*Bit rate for split rendering mode, if "pcm_out" is set then "splitRendBitRate" is used as a limit for MD bitrate */ + int16_t hq_mode; /*High quality 3DOF mode with additional side information. Requires more pre-renditions. */ + int16_t dof; /*flag to specify if pose correction is needed for 1, 2 or 3 degree of freedoms*/ + /*The axis can be set dynamically per frame based on a file input */ + /*possible values: + 1 - (1dof correction. By default YAW correction) + 2 - (2dof correction. By default YAW and PITCH correction) + 3 - (3dof correction. By default YAW, PITCH and ROLL correction) + */ + int16_t codec_delay_ms; /*PLACEHOLDER (currently being ignored) : look ahead delay of the codec that is used to code BIN signal output of pre-renderer*/ + int16_t isar_frame_size_ms; /* ISAR bit stream frame size in milliseconds */ int16_t codec_frame_size_ms; /* Codec frame size in milliseconds, only relevant with LC3plus */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode; ISAR_SPLIT_REND_CODEC codec; diff --git a/lib_com/ivas_rotation_com.c b/lib_com/ivas_rotation_com.c index f25c796d4..78a0837ab 100644 --- a/lib_com/ivas_rotation_com.c +++ b/lib_com/ivas_rotation_com.c @@ -78,7 +78,6 @@ void Euler2Quat_fx( } - /*------------------------------------------------------------------------- * Copy_Quat_fx() * diff --git a/lib_com/options.h b/lib_com/options.h index 4574f38d4..3c1820254 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -106,7 +106,6 @@ #define FIX_1372_ISAR_POST_REND #define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ - //#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ #ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT #define NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /* Philips: Use pre-computed HRTF average L/R energies and IAC in all renderers */ @@ -118,11 +117,9 @@ #define FIX_OLD_BINARY_FILE /* Orange: current hrtf binary file in ref branch contains wrong values for fastconv value. This switch can be activated to compre running codec with and without hrtf file*/ #define FIX_WARNING_RENDER_CONFIG /* Orange: fix warning on windows build */ #define FIX_INV_DIFFUSE_WEIGHT /* Orange : Fix error in energy compensation in late binaural */ - #endif //#define FIX_777_COMBI_RENDER_CONFIG_FILE /* Philips: Fix for combined renderer config file support */ - #define NONBE_FIX_1004_USAN_DTX_MASA_NO_DIRS /* Nokia: fix USAN error caused by non-setting of correctly the number of MASA directions in DTX */ /* #define NONBE_FIX_991_PARAMBIN_BINARY_HRTF */ /* Nokia: issue #991: fix using of binary file HRTF in ParamBin (to activate when USE_NEW_HRTF_BINARY_FILE_FORMAT and FIX_777_COMBI_RENDER_CONFIG_FILE are on ) */ #define FIX_1009_ISM_NONDIEGETIC_PANNING /* FhG: issue #1009: use correct object buffer for ISM1 non-diegetic pan */ diff --git a/lib_dec/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index db871d9cb..b37b9bd6d 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -61,8 +61,8 @@ static void ivas_binRenderer_filterModule_fx( Word32 CLDFB_real[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : real part of LS signals Q_curr*/ Word32 CLDFB_imag[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : imag part of LS signals Q_curr*/ const Word16 numTimeSlots, /* i : number of time slots to process */ - BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */ - const Word16 pos_idx, /* i : pose index */ + BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */ + const Word16 pos_idx, /* i : pose index */ Word16 Q_curr ) { Word16 bandIdx, k, chIdx, tapIdx; @@ -177,8 +177,7 @@ static ivas_error ivas_binRenderer_convModuleOpen( const Word16 isLoudspeaker, const AUDIO_CONFIG input_config, const HRTFS_FASTCONV_HANDLE hHrtf, - const Word16 num_poses -) + const Word16 num_poses ) { Word16 bandIdx, chIdx; Word16 pos_idx; @@ -1672,13 +1671,13 @@ void ivas_binaural_add_LFE_fx( void ivas_binRenderer_fx( BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/ - const Word16 numTimeSlots, /* i : number of time slots to render */ + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/ + const Word16 numTimeSlots, /* i : number of time slots to render */ Word32 Cldfb_RealBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ Word32 Cldfb_ImagBuffer_Binaural_fx[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ - Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/ - Word32 ImagBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/ - Word16 *Q_in /* i : LS signals exp */ + Word32 RealBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/ + Word32 ImagBuffer_fx[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : LS signals Q_in*/ + Word16 *Q_in /* i : LS signals exp */ ) { Word16 chIdx, i, j, k; diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index d7736e244..db23485b8 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -861,7 +861,6 @@ typedef struct renderer_struct } ISM_RENDERER_DATA, *ISM_RENDERER_HANDLE; - /*----------------------------------------------------------------------------------* * IVAS decoder specific ISAR wrapper structures *----------------------------------------------------------------------------------*/ diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index dd5db0071..551a20c0f 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -2205,9 +2205,9 @@ ivas_error IVAS_DEC_GetMasaMetadata( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_FeedHeadTrackData( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */ - IVAS_VECTOR3 Pos, /* i : listener position */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */ + IVAS_VECTOR3 Pos, /* i : listener position */ const Word16 subframe_idx, /* i : subframe index */ const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i : external control for rotation axis for split rendering */ ) @@ -4039,11 +4039,10 @@ IVAS_DEC_GetSplitRendBitstreamHeader( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */ - Word16 *pIsar_frame_size_ms, /* o: pointer to isar frame size setting */ - Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ + Word16 *pIsar_frame_size_ms, /* o: pointer to isar frame size setting */ + Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ , - Word16 *pLc3plusHighRes -) + Word16 *pLc3plusHighRes ) { if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) { diff --git a/lib_isar/isar_lc3plus_dec.c b/lib_isar/isar_lc3plus_dec.c index ea19833ba..38371d134 100644 --- a/lib_isar/isar_lc3plus_dec.c +++ b/lib_isar/isar_lc3plus_dec.c @@ -41,8 +41,6 @@ #include "wmc_auto.h" - - /*------------------------------------------------------------------------- * ISAR_LC3PLUS_DEC_Open() * @@ -197,7 +195,6 @@ ivas_error ISAR_LC3PLUS_DEC_Open( } - /*------------------------------------------------------------------------- * ISAR_LC3PLUS_DEC_GetDelay() * diff --git a/lib_isar/isar_lc3plus_enc.c b/lib_isar/isar_lc3plus_enc.c index 467db9116..7b11084af 100644 --- a/lib_isar/isar_lc3plus_enc.c +++ b/lib_isar/isar_lc3plus_enc.c @@ -505,8 +505,8 @@ void ISAR_LC3PLUS_ENC_Close( * *-------------------------------------------------------------------*/ ivas_error ISAR_LC3PLUS_ENC_Encode( - ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ - Word32 **pcm_in, /* i : pointer input samples */ + ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + Word32 **pcm_in, /* i : pointer input samples */ void *bitstream_out, /* o : pointer to bitstream frame */ const Word32 bitstream_out_size, /* i : size of the bitstream_out buffer in bytes. Must be equal to ISAR_LC3PLUS_ENC_GetOutputBitstreamSize. */ Word16 q_in[16] ) diff --git a/lib_isar/isar_lc3plus_enc.h b/lib_isar/isar_lc3plus_enc.h index eeef615fc..f0c37afc8 100644 --- a/lib_isar/isar_lc3plus_enc.h +++ b/lib_isar/isar_lc3plus_enc.h @@ -54,9 +54,9 @@ typedef struct ISAR_LC3PLUS_ENC_HANDLE } * ISAR_LC3PLUS_ENC_HANDLE; ivas_error ISAR_LC3PLUS_ENC_Open( - const LC3PLUS_CONFIG config, /* i : encoder configuration */ + const LC3PLUS_CONFIG config, /* i : encoder configuration */ const uint32_t initialBitsPerSecond, /* i : initial target bit rate */ - ISAR_LC3PLUS_ENC_HANDLE *handle /* o : LC3plus encoder handle */ + ISAR_LC3PLUS_ENC_HANDLE *handle /* o : LC3plus encoder handle */ ); ivas_error IVAS_LC3PLUS_ENC_SetBitrate( @@ -79,8 +79,8 @@ void ISAR_LC3PLUS_ENC_Close( ); ivas_error ISAR_LC3PLUS_ENC_Encode( - ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ - Word32 **pcm_in, /* i : pointer input samples */ + ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + Word32 **pcm_in, /* i : pointer input samples */ void *bitstream_out, /* o : pointer to bitstream frame */ const Word32 bitstream_out_size, /* i : size of the bitstream_out buffer in bytes. Must be equal to ISAR_LC3PLUS_ENC_GetOutputBitstreamSize. */ Word16 q_in[16] ); diff --git a/lib_isar/isar_lc3plus_payload.c b/lib_isar/isar_lc3plus_payload.c index 291cd9d05..2493aa6a3 100644 --- a/lib_isar/isar_lc3plus_payload.c +++ b/lib_isar/isar_lc3plus_payload.c @@ -816,4 +816,3 @@ LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_fdi_from_frame_duration_us( LC3PLUS_RTP_FTD_FDI return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; } - diff --git a/lib_isar/isar_lcld_decoder.c b/lib_isar/isar_lcld_decoder.c index 83f6261ee..ce517a492 100644 --- a/lib_isar/isar_lcld_decoder.c +++ b/lib_isar/isar_lcld_decoder.c @@ -1990,4 +1990,3 @@ static void ComputeAllocation( return; } - diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h index 6e8bcaf9f..112ee1155 100644 --- a/lib_isar/isar_prot.h +++ b/lib_isar/isar_prot.h @@ -199,8 +199,7 @@ void isar_split_rend_get_quant_params_fx( Word16 pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], Word16 pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], const Word16 ro_flag, - Word16 *num_quant_strats -); + Word16 *num_quant_strats ); void isar_split_rend_get_quant_params( const int16_t num_md_bands, @@ -320,7 +319,6 @@ void isar_set_split_rend_ht_setup_fx( Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ); - ivas_error isar_split_rend_validate_config( const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, const Word16 is_pcm_out ); @@ -347,11 +345,11 @@ Word32 isar_get_split_rend_md_target_brate( ivas_error isar_split_rend_choose_default_codec( ISAR_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */ - Word16 *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */ - Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */ - const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */ - const Word16 pcm_out_flag, /* i : flag to indicate PCM output */ - const Word16 num_subframes /* i : number of subframes */ + Word16 *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */ + Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */ + const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */ + const Word16 pcm_out_flag, /* i : flag to indicate PCM output */ + const Word16 num_subframes /* i : number of subframes */ ); void ISAR_SPLIT_REND_BITStream_init( @@ -379,8 +377,7 @@ ivas_error split_renderer_open_lc3plus( SPLIT_REND_WRAPPER *hSplitRendWrapper, const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, const Word32 OutSampleRate, - const IVAS_RENDER_FRAMESIZE ivas_frame_size -); + const IVAS_RENDER_FRAMESIZE ivas_frame_size ); ISAR_POST_REND_AudioConfigType isar_getAudioConfigType( const IVAS_AUDIO_CONFIG config ); diff --git a/lib_isar/isar_splitRendererPost.c b/lib_isar/isar_splitRendererPost.c index 085cae9fc..b1cf6659b 100644 --- a/lib_isar/isar_splitRendererPost.c +++ b/lib_isar/isar_splitRendererPost.c @@ -1957,4 +1957,3 @@ void isar_init_split_post_rend_handles( return; } - diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c index 5447aea1e..b30f25ca7 100644 --- a/lib_isar/isar_splitRendererPre.c +++ b/lib_isar/isar_splitRendererPre.c @@ -1208,8 +1208,6 @@ static void ComputeCoeffs_fx( hMd->pred_mat_re2[i] = gd_tmp_fx[i]; set32_fx( hMd->pred_mat_im_fx[i], 0, BINAURAL_CHANNELS ); } - - } ELSE { @@ -2678,8 +2676,7 @@ ivas_error split_renderer_open_lc3plus( SPLIT_REND_WRAPPER *hSplitRendWrapper, const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, const Word32 OutSampleRate, - const IVAS_RENDER_FRAMESIZE isar_frame_size -) + const IVAS_RENDER_FRAMESIZE isar_frame_size ) { ivas_error error; Word16 i, delayBufferLength; @@ -3135,4 +3132,3 @@ void lc3plusTimeAlignCldfbPoseCorr( return; } - diff --git a/lib_isar/isar_splitRenderer_utils.c b/lib_isar/isar_splitRenderer_utils.c index bfdb1454f..62f3870d3 100644 --- a/lib_isar/isar_splitRenderer_utils.c +++ b/lib_isar/isar_splitRenderer_utils.c @@ -819,26 +819,30 @@ ivas_error isar_split_rend_validate_config( } ELSE { - IF( EQ_16( pSplitRendConfig->dof, 1 ) ){ - IF( LT_32( pSplitRendConfig->splitRendBitRate, 34000 ) ){ + IF( EQ_16( pSplitRendConfig->dof, 1 ) ) + { + IF( LT_32( pSplitRendConfig->splitRendBitRate, 34000 ) ) + { return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "1DOF metadata needs atleast 34 kbps" ); + } + } + ELSE IF( EQ_16( pSplitRendConfig->dof, 2 ) ) + { + IF( LT_32( pSplitRendConfig->splitRendBitRate, 50000 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 50 kbps" ); + } + } + ELSE IF( EQ_16( pSplitRendConfig->dof, 3 ) ) + { + IF( LT_32( pSplitRendConfig->splitRendBitRate, 82000 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" ); + } + } } -} -ELSE IF( EQ_16( pSplitRendConfig->dof, 2 ) ){ - IF( LT_32( pSplitRendConfig->splitRendBitRate, 50000 ) ){ - return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 50 kbps" ); -} -} -ELSE IF( EQ_16( pSplitRendConfig->dof, 3 ) ) -{ - IF( LT_32( pSplitRendConfig->splitRendBitRate, 82000 ) ) - { - return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" ); - } -} -} -return IVAS_ERR_OK; + return IVAS_ERR_OK; } @@ -860,8 +864,7 @@ void isar_split_rend_get_quant_params_fx( Word16 pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], Word16 pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], const Word16 ro_flag, - Word16 *num_quant_strats -) + Word16 *num_quant_strats ) { Word16 q; @@ -1298,11 +1301,11 @@ ivas_error isar_framesize_to_ms( ivas_error isar_split_rend_choose_default_codec( ISAR_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */ - int16_t *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */ - Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */ - const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */ - const Word16 pcm_out_flag, /* i : flag to indicate PCM output */ - const Word16 num_subframes /* i : number of subframes */ + int16_t *pIsar_frame_size_ms, /* i/o: pointer to isar frame size setting */ + Word16 *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */ + const Word16 cldfb_in_flag, /* i : flag indicating rendering in TD */ + const Word16 pcm_out_flag, /* i : flag to indicate PCM output */ + const Word16 num_subframes /* i : number of subframes */ ) { IF( EQ_16( pcm_out_flag, 0 ) ) @@ -1355,5 +1358,3 @@ Word32 get_bit( { return L_and( state, ( L_shl( 1, (Word16) bit_id ) ) ); } - - diff --git a/lib_isar/lib_isar_post_rend.c b/lib_isar/lib_isar_post_rend.c index 8ad605f40..c784ed1a9 100644 --- a/lib_isar/lib_isar_post_rend.c +++ b/lib_isar/lib_isar_post_rend.c @@ -464,8 +464,7 @@ static ivas_error getRendInputNumChannels( static ivas_error updateSplitPostRendPanGains( input_split_post_rend *inputSplitPostRend, const AUDIO_CONFIG outConfig, - ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg -) + ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg ) { ivas_error error; rendering_context rendCtx; @@ -524,8 +523,7 @@ static ivas_error setRendInputActiveSplitPostRend( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg -) + ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg ) { ivas_error error; rendering_context rendCtx; @@ -545,8 +543,7 @@ static ivas_error setRendInputActiveSplitPostRend( inputSplitPostRend->numCachedSamples = 0; - if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg - ) ) != IVAS_ERR_OK ) + if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg ) ) != IVAS_ERR_OK ) { return error; } @@ -872,8 +869,7 @@ ivas_error ISAR_POST_REND_AddInput( Word32 maxNumInputsOfType; void *inputsArray; Word32 inputStructSize; - ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, ISAR_SPLIT_REND_CONFIG_DATA * - ); + ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, ISAR_SPLIT_REND_CONFIG_DATA * ); Word32 inputIndex; /* Validate function arguments */ @@ -901,8 +897,7 @@ ivas_error ISAR_POST_REND_AddInput( } *inputId = makeInputId( inConfig, inputIndex ); - if ( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, &hIvasRend->splitRenderConfig - ) ) != IVAS_ERR_OK ) + if ( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, &hIvasRend->splitRenderConfig ) ) != IVAS_ERR_OK ) { return error; } @@ -1812,5 +1807,3 @@ int32_t ISAR_POST_REND_GetCntFramesLimited( return hIvasRend->hLimiter->cnt_frames_limited; } #endif - - diff --git a/lib_isar/lib_isar_pre_rend.c b/lib_isar/lib_isar_pre_rend.c index 32773ef7a..13ae12ac6 100644 --- a/lib_isar/lib_isar_pre_rend.c +++ b/lib_isar/lib_isar_pre_rend.c @@ -47,7 +47,6 @@ #include "wmc_auto.h" - /*-------------------------------------------------------------------* * Local constants *-------------------------------------------------------------------*/ @@ -87,9 +86,7 @@ ivas_error ISAR_PRE_REND_open( &pSplitRendConfig->isar_frame_size_ms, &pSplitRendConfig->codec_frame_size_ms, cldfb_in_flag_local, - pcm_out_flag, (int16_t) - ivas_frame_size - ) ) != IVAS_ERR_OK ) + pcm_out_flag, (int16_t) ivas_frame_size ) ) != IVAS_ERR_OK ) { return error; } @@ -175,8 +172,7 @@ ivas_error ISAR_PRE_REND_open( IF( EQ_16( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) ) { if ( ( error = split_renderer_open_lc3plus( hSplitRendWrapper, pSplitRendConfig, OutSampleRate, - ivas_frame_size - ) ) != IVAS_ERR_OK ) + ivas_frame_size ) ) != IVAS_ERR_OK ) { return error; } @@ -481,7 +477,7 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( #ifdef OPT_AVOID_STATE_BUF_RESCALE cldfbSynthesis_ivas_fx( Cldfb_In_BinReal_p_fx, Cldfb_In_BinImag_p_fx, pOutput_fx[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * num_slots, 0, 0, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); // Q_cldfb - 1 #else - cldfbSynthesis_ivas_fx( Cldfb_In_BinReal_p_fx, Cldfb_In_BinImag_p_fx, pOutput_fx[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * num_slots, 0, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); // Q_cldfb - 1 + cldfbSynthesis_ivas_fx( Cldfb_In_BinReal_p_fx, Cldfb_In_BinImag_p_fx, pOutput_fx[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * num_slots, 0, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); // Q_cldfb - 1 #endif Q_out[ch] = sub( Q_cldfb, 1 ); move16(); @@ -592,4 +588,3 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( fclose(fp1);*/ return error; } - diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index bf27912f7..369a1d2b4 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -206,9 +206,7 @@ static ivas_error ivas_rend_initCrend_fx( test(); test(); - if ( NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) - ) + if ( NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Encountered unsupported output type in Crend" ); } @@ -1564,8 +1562,7 @@ static ivas_error ivas_er_init_handle( ivas_error ivas_rend_initCrendWrapper( CREND_WRAPPER_HANDLE *pCrend, - const int16_t num_poses -) + const int16_t num_poses ) { Word16 i; CREND_HANDLE hCrend; @@ -1681,8 +1678,7 @@ ivas_error ivas_rend_openCrend( HRTFS_STATISTICS_HANDLE hHrtfStatistics, #endif const Word32 output_Fs, - const Word16 num_poses -) + const Word16 num_poses ) { Word16 i, subframe_length; Word32 max_total_ir_len; @@ -1910,8 +1906,7 @@ ivas_error ivas_rend_openCrend( void ivas_rend_closeCrend( CREND_WRAPPER_HANDLE *pCrend, - const Word16 num_poses -) + const Word16 num_poses ) { Word16 i; Word16 pos_idx; @@ -2069,8 +2064,7 @@ static ivas_error ivas_rend_crendConvolver( Word32 *pcm_out[], // Qx const Word32 output_Fs, const Word16 i_ts, - const Word16 pos_idx -) + const Word16 pos_idx ) { Word16 i, j, k, m; Word16 subframe_length, idx_in; @@ -2332,8 +2326,7 @@ ivas_error ivas_rend_crendProcessSubframe( const Word16 n_samples_to_render, /* i : output frame length per channel */ const Word32 output_Fs /* i : output sampling rate */ , - const Word16 pos_idx -) + const Word16 pos_idx ) { Word16 subframe_idx, subframe_len; Word16 nchan_out, nchan_in, ch, first_sf, last_sf, slot_size, slots_to_render; diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index 1fb026078..a1d3a4908 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -299,7 +299,7 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF Copy32( ( *phHrtfParambin )->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #else - Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); + Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #endif hDiracDecBin->q_earlyPartEneCorrection = Q28; move16(); @@ -322,8 +322,8 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( if ( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, st_ivas->hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( st_ivas->hRenderConfig->roomAcoustics ), output_Fs, st_ivas->hHrtfParambin->parametricReverberationTimes_fx, st_ivas->hHrtfParambin->parametricReverberationEneCorrections_fx ) ) != IVAS_ERR_OK ) #endif #else - /* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */ - if ( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) + /* Todo Philips: Room acoustics should be passed here once the underlying part works. Probably enough to pick it from st_ivas but you know best. */ + if ( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) #endif { return error; @@ -2062,7 +2062,6 @@ static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( } - static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, @@ -2693,8 +2692,7 @@ static void ivas_dirac_dec_binaural_process_output_fx( const Word16 numInChannels, const Word16 processReverb, const Word16 subframe, - const Word16 q_mat - , + const Word16 q_mat, Word32 outRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 outIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 reverbRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], @@ -2702,8 +2700,7 @@ static void ivas_dirac_dec_binaural_process_output_fx( Word32 decorrRe_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word32 decorrIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], Word16 *Q_inp_mix, - const Word8 recompute -) + const Word8 recompute ) { Word16 slot, bin, chA, chB; Word16 nBins; @@ -5526,8 +5523,7 @@ static void ivas_masa_ext_rend_parambin_internal_fx( const Word16 subframe, const SPLIT_REND_WRAPPER *hSplitRendWrapper, Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], - Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] -) + Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] ) { DIRAC_DEC_BIN_HANDLE hDiracDecBin; SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; @@ -5885,9 +5881,9 @@ static void ivas_masa_ext_rend_parambin_internal_fx( } void ivas_masa_ext_rend_parambin_render_fx( - MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA ext rend structure */ - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ - Word32 *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output Q11*/ + MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA ext rend structure */ + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ + Word32 *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output Q11*/ const Word16 num_subframes, /* i : number of subframes to render */ const SPLIT_REND_WRAPPER *hSplitRendWrapper, /* i : split rendering orientation data */ Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : rendered orientations for split rend. real part of cldfb */ diff --git a/lib_rend/ivas_output_init_fx.c b/lib_rend/ivas_output_init_fx.c index f33ace930..5c19acb5f 100644 --- a/lib_rend/ivas_output_init_fx.c +++ b/lib_rend/ivas_output_init_fx.c @@ -374,10 +374,8 @@ Word16 ivas_get_nchan_buffers_dec( { nchan_out_buff = s_max( nchan_out_buff, add( st_ivas->hOutSetup.nchan_out_woLFE, st_ivas->hOutSetup.num_lfe ) ); } - ELSE if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || - EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) - ) + ELSE if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_STEREO ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { nchan_out_buff = shl( CPE_CHANNELS, 1 ); } diff --git a/lib_rend/ivas_reflections_fx.c b/lib_rend/ivas_reflections_fx.c index 44eff1329..6bd0ed87c 100644 --- a/lib_rend/ivas_reflections_fx.c +++ b/lib_rend/ivas_reflections_fx.c @@ -338,8 +338,8 @@ ivas_error ivas_er_encoder_init( p_y_fx = reflections->shoebox_data.az_angle.data_fx[i]; // Q23 move32(); move32(); - p_x_fx = L_shr( p_x_fx, 1 ); // Q22 - p_y_fx = L_shr( p_y_fx, 1 ); // Q22 + p_x_fx = L_shr( p_x_fx, 1 ); // Q22 + p_y_fx = L_shr( p_y_fx, 1 ); // Q22 rad_el_angle = deg2rad_fx( p_x_fx ); // Q22 rad_az_angle = deg2rad_fx( p_y_fx ); // Q22 diff --git a/lib_rend/ivas_rotation_fx.c b/lib_rend/ivas_rotation_fx.c index dc73967cc..2fe95f151 100644 --- a/lib_rend/ivas_rotation_fx.c +++ b/lib_rend/ivas_rotation_fx.c @@ -1353,8 +1353,8 @@ ivas_error ivas_combined_orientation_open( move32(); ( *hCombinedOrientationData )->interpolationIncrement_fx = ONE_IN_Q30; // Q30 move32(); - ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; - move16(); + ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; + move16(); ( *hCombinedOrientationData )->lrSwitchedNext = 0; move16(); ( *hCombinedOrientationData )->lrSwitchedCurrent = 0; @@ -1533,9 +1533,9 @@ ivas_error combine_external_and_head_orientations_rend( * NOTE that the external orientations are inversed. *------------------------------------------------------------------------*/ ivas_error combine_external_and_head_orientations( - IVAS_QUATERNION *headRotQuaternions, /* i : quaternions for head rotation */ - IVAS_VECTOR3 *listenerPos, /* i : listener position */ - ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis */ + IVAS_QUATERNION *headRotQuaternions, /* i : quaternions for head rotation */ + IVAS_VECTOR3 *listenerPos, /* i : listener position */ + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis */ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index 1d019b675..2b0f1bdea 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -635,31 +635,33 @@ IVAS_REND_AudioConfigType getAudioConfigType( static ivas_error validateOutputSampleRate( const Word32 sampleRate, - const AUDIO_CONFIG outConfig ){ + const AUDIO_CONFIG outConfig ) +{ - IF( NE_32( getAudioConfigType( outConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ){ + IF( NE_32( getAudioConfigType( outConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) + { /* If no binaural rendering, any sampling rate is supported */ return IVAS_ERR_OK; -} -ELSE IF( ( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( sampleRate, 48000 ) ) -{ - return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." ); -} -ELSE -{ - - /* Otherwise rendering to binaural, support the same set as IVAS decoder */ - SWITCH( sampleRate ) + } + ELSE IF( ( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( sampleRate, 48000 ) ) { - case 8000: - case 16000: - case 32000: - case 48000: - return IVAS_ERR_OK; + return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." ); } + ELSE + { - return IVAS_ERR_INVALID_SAMPLING_RATE; -} + /* Otherwise rendering to binaural, support the same set as IVAS decoder */ + SWITCH( sampleRate ) + { + case 8000: + case 16000: + case 32000: + case 48000: + return IVAS_ERR_OK; + } + + return IVAS_ERR_INVALID_SAMPLING_RATE; + } } /*-------------------------------------------------------------------* * getAudioConfigNumChannels() @@ -3953,7 +3955,6 @@ static ivas_error ivas_pre_rend_init( } - /*-------------------------------------------------------------------* * IVAS_REND_AddInput() * @@ -4875,11 +4876,11 @@ Word16 IVAS_REND_FeedRenderConfig( * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_SetHeadRotation( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ - const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ + const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ const ISAR_SPLIT_REND_ROT_AXIS rot_axis, /* i : external control for rotation axis for split rendering */ - const Word16 sf_idx /* i : subframe index */ + const Word16 sf_idx /* i : subframe index */ ) { Word16 i; @@ -7369,7 +7370,6 @@ static void renderSbaToSba( } - static ivas_error renderSbaToMultiBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, @@ -9660,7 +9660,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( const RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration data handle */ HRTFS_STATISTICS_HANDLE hHrtfStatistics /* i : HRTF statistics */ #else - input_masa *inputMasa /* i/o: MASA external renderer structure */ + input_masa *inputMasa /* i/o: MASA external renderer structure */ #endif ) { @@ -9795,7 +9795,7 @@ static ivas_error ivas_masa_ext_rend_parambin_init( #ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF Copy32( ( *phHrtfParambin )->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #else - Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); + Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); #endif hDiracDecBin->q_earlyPartEneCorrection = Q28; move16(); @@ -9809,8 +9809,8 @@ static ivas_error ivas_masa_ext_rend_parambin_init( IF( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes_fx, hHrtfParambin->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) #endif #else - /* Todo Philips: Room acoustics should be passed here once the underlying part works. In this case, it probably should come from render context or somewhere else suitable. */ - IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ), IVAS_ERR_OK ) ) + /* Todo Philips: Room acoustics should be passed here once the underlying part works. In this case, it probably should come from render context or somewhere else suitable. */ + IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ), IVAS_ERR_OK ) ) #endif { return error; diff --git a/lib_util/split_render_file_read_write.c b/lib_util/split_render_file_read_write.c index ff0aa2e1a..43c68cba5 100644 --- a/lib_util/split_render_file_read_write.c +++ b/lib_util/split_render_file_read_write.c @@ -65,12 +65,10 @@ ivas_error split_rend_reader_open( char *filename, ISAR_SPLIT_REND_CODEC *codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, - int16_t *codec_frame_size_ms - , + int16_t *codec_frame_size_ms, int16_t *isar_frame_size_ms, int32_t *sampling_rate, - int16_t *lc3plus_highres -) + int16_t *lc3plus_highres ) { SplitFileReadWrite *hSplitRendFileReadWrite; size_t header_len, h; @@ -157,12 +155,10 @@ ivas_error split_rend_writer_open( const int32_t delayTimeScale, ISAR_SPLIT_REND_CODEC codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, - int16_t codec_frame_size_ms - , + int16_t codec_frame_size_ms, const int16_t isar_frame_size_ms, const int32_t sampling_rate, - const int16_t lc3plus_highres -) + const int16_t lc3plus_highres ) { SplitFileReadWrite *hSplitRendFileReadWrite; size_t header_len, h; diff --git a/lib_util/split_render_file_read_write.h b/lib_util/split_render_file_read_write.h index b6f32a317..2895dd426 100644 --- a/lib_util/split_render_file_read_write.h +++ b/lib_util/split_render_file_read_write.h @@ -43,12 +43,10 @@ ivas_error split_rend_reader_open( char *filename, ISAR_SPLIT_REND_CODEC *codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, - int16_t *codec_frame_size_ms - , + int16_t *codec_frame_size_ms, int16_t *isar_frame_size_ms, int32_t *sampling_rate, - int16_t *lc3plus_highres -); + int16_t *lc3plus_highres ); /* Allocates and initializes a a split renderer writer instance */ @@ -59,12 +57,10 @@ ivas_error split_rend_writer_open( const int32_t delayTimeScale, ISAR_SPLIT_REND_CODEC codec, ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, - int16_t codec_frame_size_ms - , + int16_t codec_frame_size_ms, const int16_t isar_frame_size_ms, const int32_t sampling_rate, - const int16_t lc3plus_highres -); + const int16_t lc3plus_highres ); /* Closes the split renderer reader/writer and deallocates memory */ -- GitLab From 4179ea850e4bc1837b2b825af89899f088482758 Mon Sep 17 00:00:00 2001 From: vaclav Date: Fri, 13 Jun 2025 20:51:26 +0200 Subject: [PATCH 698/698] formatting --- lib_com/ivas_dirac_com_fx.c | 4 +--- lib_dec/ivas_dirac_dec_fx.c | 9 ++++++++- lib_dec/ivas_ism_dec_fx.c | 16 +++++----------- lib_dec/ivas_jbm_dec_fx.c | 10 +++++----- lib_dec/ivas_objectRenderer_internal_fx.c | 6 +----- lib_dec/ivas_sba_dec_fx.c | 8 +++----- lib_enc/ivas_enc_fx.c | 6 ++---- lib_enc/ivas_ism_enc_fx.c | 4 ++-- lib_rend/ivas_objectRenderer_fx.c | 2 +- lib_rend/ivas_reverb_fx.c | 18 +++++++++--------- 10 files changed, 37 insertions(+), 46 deletions(-) diff --git a/lib_com/ivas_dirac_com_fx.c b/lib_com/ivas_dirac_com_fx.c index 0c913499b..017181d07 100644 --- a/lib_com/ivas_dirac_com_fx.c +++ b/lib_com/ivas_dirac_com_fx.c @@ -179,9 +179,7 @@ ivas_error ivas_dirac_config_fx( test(); IF( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) /* skip for MASA decoder */ { - IF( NE_32( ( error = ivas_dirac_sba_config_fx( hQMetaData, element_mode, ivas_total_brate, sba_order, sub( hConfig->nbands, spar_dirac_split_band ), - ivas_format ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_dirac_sba_config_fx( hQMetaData, element_mode, ivas_total_brate, sba_order, sub( hConfig->nbands, spar_dirac_split_band ), ivas_format ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 8ac4fadf0..e3b32d3fc 100644 --- a/lib_dec/ivas_dirac_dec_fx.c +++ b/lib_dec/ivas_dirac_dec_fx.c @@ -798,8 +798,10 @@ static ivas_error ivas_dirac_rend_config_fx( nchan_transport_tmp = nchan_transport; move16(); } + /* close and reopen the decorrelator */ ivas_dirac_dec_decorr_close_fx( &hDirACRend->h_freq_domain_decorr_ap_params, &hDirACRend->h_freq_domain_decorr_ap_state ); + IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( hDirACRend->h_freq_domain_decorr_ap_params ), &( hDirACRend->h_freq_domain_decorr_ap_state ), hSpatParamRendCom->num_freq_bands, hDirACRend->num_outputs_diff, hDirACRend->num_protos_diff, hDirACRend->synthesisConf, hDirACRend->frequency_axis_fx, nchan_transport_tmp, output_Fs ) ), IVAS_ERR_OK ) ) @@ -1102,12 +1104,14 @@ ivas_error ivas_dirac_dec_config_fx( common_rend_config_flag = flag_config_inp; move32(); } + IF( NE_32( ( error = ivas_spat_hSpatParamRendCom_config_fx( &st_ivas->hSpatParamRendCom, common_rend_config_flag, dec_param_estim_new, st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, hodirac_flag, 0 ) ), IVAS_ERR_OK ) ) { return error; } + IF( need_dirac_rend ) { IF( st_ivas->hDirACRend == NULL ) @@ -1167,13 +1171,15 @@ ivas_error ivas_dirac_dec_config_fx( { st_ivas->hDiracDecBin[pos_idx]->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr; } - IF( !st_ivas->hDiracDecBin[0]->useTdDecorr ) + IF( !st_ivas->hDiracDecBin[0]->useTdDecorr ) { IF( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params == NULL ) { Word16 frequency_axis_fx[CLDFB_NO_CHANNELS_MAX]; + ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSpatParamRendCom->num_freq_bands ); + IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params ), &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_state ), st_ivas->hSpatParamRendCom->num_freq_bands, BINAURAL_CHANNELS, BINAURAL_CHANNELS, DIRAC_SYNTHESIS_PSD_LS, frequency_axis_fx, BINAURAL_CHANNELS, st_ivas->hDecoderConfig->output_Fs ) ), IVAS_ERR_OK ) ) @@ -1182,6 +1188,7 @@ ivas_error ivas_dirac_dec_config_fx( } } } + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { st_ivas->hDiracDecBin[pos_idx]->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index 13e888af3..727a0a651 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -454,16 +454,12 @@ ivas_error ivas_ism_dec_config_fx( IF( st_ivas->ini_active_frame != 0 ) { /* ISM bit-rate switching */ + test(); + IF( ( NE_16( st_ivas->ism_mode, last_ism_mode ) ) || ( NE_32( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) ) { - test(); - IF( ( NE_16( st_ivas->ism_mode, last_ism_mode ) ) || ( NE_32( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate ) ) ) + IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) { - IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, - data ) ), - IVAS_ERR_OK ) ) - { - return error; - } + return error; } } } @@ -486,9 +482,7 @@ ivas_error ivas_ism_dec_config_fx( /* ISM mode switching */ IF( NE_32( st_ivas->ism_mode, last_ism_mode ) ) { - IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, - data ) ), - IVAS_ERR_OK ) ) + IF( NE_16( ( error = ivas_ism_bitrate_switching_dec_fx( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, data ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_jbm_dec_fx.c b/lib_dec/ivas_jbm_dec_fx.c index c21f182da..c7863bb98 100644 --- a/lib_dec/ivas_jbm_dec_fx.c +++ b/lib_dec/ivas_jbm_dec_fx.c @@ -2266,17 +2266,16 @@ ivas_error ivas_jbm_dec_render_fx( } } - if ( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { - if ( ( error = ivas_rend_crendProcessSubframesSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, - &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs ) ) != IVAS_ERR_OK ) + IF( ( error = ivas_rend_crendProcessSubframesSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, + &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs ) ) != IVAS_ERR_OK ) { return error; } } - else + ELSE { - IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output_fx : p_tc_fx, p_output_fx, *nSamplesRendered, output_Fs, 0 ) ), IVAS_ERR_OK ) ) @@ -2699,6 +2698,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( st_ivas->hCrendWrapper->p_io_qfactor = &st_ivas->hCrendWrapper->io_qfactor; *st_ivas->hCrendWrapper->p_io_qfactor = 11; + move16(); IF( NE_32( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, st_ivas->hDecoderConfig, NULL, NULL, NULL, st_ivas->hTcBuffer, p_output_fx, p_output_fx, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs, 0 ) ), diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c index 9c603fa93..08bf0f437 100644 --- a/lib_dec/ivas_objectRenderer_internal_fx.c +++ b/lib_dec/ivas_objectRenderer_internal_fx.c @@ -227,11 +227,7 @@ ivas_error ivas_td_binaural_renderer_sf_fx( move16(); } - IF( NE_32( ( error = TDREND_Update_listener_orientation_fx( st_ivas->hBinRendererTd, - enableCombinedOrientation, - tmp_Quaternion_fx, - tmp_vector_fx ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = TDREND_Update_listener_orientation_fx( st_ivas->hBinRendererTd, enableCombinedOrientation, tmp_Quaternion_fx, tmp_vector_fx ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index 8f8a7f486..687991c89 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -411,7 +411,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( IF( st_ivas->hBinRenderer == NULL && ( EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) || EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) ) { /* open fastconv binaural renderer */ - if ( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_binRenderer_open_fx( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } @@ -423,7 +423,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( IF( EQ_16( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) && st_ivas->hMonoDmxRenderer == NULL ) { - if ( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } @@ -434,9 +434,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( ivas_mono_dmx_renderer_close( &st_ivas->hMonoDmxRenderer ); } - if ( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), - st_ivas->ivas_format ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_dirac_sba_config_fx( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag_fx( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ), st_ivas->ivas_format ) ), IVAS_ERR_OK ) ) { return error; } diff --git a/lib_enc/ivas_enc_fx.c b/lib_enc/ivas_enc_fx.c index 56299c69d..11368cec8 100644 --- a/lib_enc/ivas_enc_fx.c +++ b/lib_enc/ivas_enc_fx.c @@ -255,8 +255,7 @@ ivas_error ivas_enc_fx( ELSE { IF( ( error = ivas_masa_encode_fx( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, ivas_total_brate, hEncoderConfig->Opt_DTX_ON, -1, - ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != - IVAS_ERR_OK ) + ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != IVAS_ERR_OK ) { return error; } @@ -648,8 +647,7 @@ ivas_error ivas_enc_fx( } IF( ( error = ivas_masa_encode_fx( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, ivas_total_brate, 0, -1, - ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != - IVAS_ERR_OK ) + ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_enc/ivas_ism_enc_fx.c b/lib_enc/ivas_ism_enc_fx.c index 122ea1d75..3e7d8afcd 100644 --- a/lib_enc/ivas_ism_enc_fx.c +++ b/lib_enc/ivas_ism_enc_fx.c @@ -360,9 +360,9 @@ ivas_error ivas_ism_enc_fx( { omasa_stereo_sw_cnt = NULL; } + IF( ( error = ivas_ism_metadata_enc_fx( &ism_total_brate, nchan_ism, nchan_transport_ism, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData, - nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, lp_noise_CPE_fx, flag_omasa_ener_brate, omasa_stereo_sw_cnt, st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame ) ) != - IVAS_ERR_OK ) + nb_bits_metadata, vad_flag, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, lp_noise_CPE_fx, flag_omasa_ener_brate, omasa_stereo_sw_cnt, st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_rend/ivas_objectRenderer_fx.c b/lib_rend/ivas_objectRenderer_fx.c index da2c3cce9..9eea08c71 100644 --- a/lib_rend/ivas_objectRenderer_fx.c +++ b/lib_rend/ivas_objectRenderer_fx.c @@ -931,13 +931,13 @@ ivas_error ivas_td_binaural_renderer_ext_fx( } } - IF( NE_32( ( error = ivas_td_binaural_renderer_unwrap_fx( hReverb, transport_config, pTDRend->hBinRendererTd, num_src, lfe_idx, ivas_format, hIsmMetaData, *hCombinedOrientationData, ism_md_subframe_update_ext, p_output_fx, output_frame, num_subframes ) ), IVAS_ERR_OK ) ) { return error; } + IF( hReverb != NULL ) { *exp = sub( *exp, 2 ); diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index 74c2a0c0a..b5da38708 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -2555,17 +2555,15 @@ ivas_error ivas_binaural_reverb_open_fastconv_fx( /* THIS PART IS YET TO BE CONVERTED AS REVERB_UTILS.C IS NOT INVOKED IN GPROF */ float t60_flt[CLDFB_NO_CHANNELS_MAX]; float ene_flt[CLDFB_NO_CHANNELS_MAX]; + revTimes = t60; revEne = ene; - if ( NE_32( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, - hHrtfFastConv, - internal_config, - false, - sampling_rate, t60_flt, ene_flt ) ), - IVAS_ERR_OK ) ) + + IF( NE_32( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfFastConv, internal_config, false, sampling_rate, t60_flt, ene_flt ) ), IVAS_ERR_OK ) ) { return error; } + preDelay = (Word16) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX ); floatToFixed_arrL( t60_flt, t60, Q31, CLDFB_NO_CHANNELS_MAX ); floatToFixed_arrL( ene_flt, ene, Q31, CLDFB_NO_CHANNELS_MAX ); @@ -2583,17 +2581,19 @@ ivas_error ivas_binaural_reverb_open_fastconv_fx( return error; } + /*------------------------------------------------------------------------- * ivas_binaural_reverb_open_parambin() * * Allocate and initialize binaural room reverberator handle for ParamBin *------------------------------------------------------------------------*/ + ivas_error ivas_binaural_reverb_open_parambin( REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ - const Word16 numBins, /* i : number of CLDFB bins Q0 */ - const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame Q0 */ + const Word16 numBins, /* i : number of CLDFB bins Q0 */ + const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame Q0 */ IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ - const Word32 sampling_rate, /* i : sampling rate Q0 */ + const Word32 sampling_rate, /* i : sampling rate Q0 */ const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */ ) { -- GitLab

_n&{;fz|`1@GU;D;srF34?SE9(La!Qu{r%a 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�Ne1fd(1(o3-+fYkokZPoY{}@#5 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⪼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

2?(XMZ*hq$byJY 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%0DRm4mzn|d$=!AqK9lZt{2T`LA_{Dli^SEL7u=D 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

_n&{;fz|`1@GU;D;srF34?SE9(La!Qu{r%a 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�Ne1fd(1(o3-+fYkokZPoY{}@#5 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⪼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

2?(XMZ*hq$byJY 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%0DRm4mzn|d$=!AqK9lZt{2T`LA_{Dli^SEL7u=D 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